<?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>205094</bug_id>
          
          <creation_ts>2019-12-10 16:58:59 -0800</creation_ts>
          <short_desc>Add infrastructure needed for playing media player in the GPU process</short_desc>
          <delta_ts>2019-12-13 09:50:03 -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>Other</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>205123</blocked>
    
    <blocked>205197</blocked>
    
    <blocked>205208</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Eric Carlson">eric.carlson</reporter>
          <assigned_to name="Eric Carlson">eric.carlson</assigned_to>
          <cc>calvaris</cc>
    
    <cc>cgarcia</cc>
    
    <cc>commit-queue</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>glenn</cc>
    
    <cc>gustavo</cc>
    
    <cc>jer.noble</cc>
    
    <cc>menard</cc>
    
    <cc>mkwst</cc>
    
    <cc>peng.liu6</cc>
    
    <cc>philipj</cc>
    
    <cc>pnormand</cc>
    
    <cc>sam</cc>
    
    <cc>sergio</cc>
    
    <cc>thorton</cc>
    
    <cc>vjaquez</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>youennf</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1597426</commentid>
    <comment_count>0</comment_count>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2019-12-10 16:58:59 -0800</bug_when>
    <thetext>Add infrastructure needed for playing media player in the GPU process</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1597428</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2019-12-10 16:59:21 -0800</bug_when>
    <thetext>&lt;rdar://problem/57815393&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1597458</commentid>
    <comment_count>2</comment_count>
      <attachid>385328</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2019-12-10 17:51:38 -0800</bug_when>
    <thetext>Created attachment 385328
WIP patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1597466</commentid>
    <comment_count>3</comment_count>
      <attachid>385331</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2019-12-10 18:04:10 -0800</bug_when>
    <thetext>Created attachment 385331
WIP patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1597494</commentid>
    <comment_count>4</comment_count>
      <attachid>385331</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2019-12-10 21:30:42 -0800</bug_when>
    <thetext>Comment on attachment 385331
WIP patch

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

&gt; Source/WebCore/platform/ContentType.h:52
&gt; +#if ENABLE(GPU_PROCESS)

Not really any reason to restrict these encoders to only #if ENABLE(GPU_PROCESS). None of the rest have been.

&gt; Source/WebCore/platform/graphics/MediaPlayerEngineIdentifiers.h:32
&gt; +class MediaPlayerEngineIdentifiers {

Is there a reason for strings instead of an enum?

&gt; Source/WebKit/WebProcess/GPU/media/RemoteMediaPlayerManager.cpp:122
&gt; +    bool sendSucceeded = gpuProcessConnection().sendSync(Messages::RemoteMediaPlayerManagerProxy::CreateMediaPlayer(id, remoteEngineIdentifier), Messages::RemoteMediaPlayerManagerProxy::CreateMediaPlayer::Reply(haveRemoteProxy), 0);

Ideally we would not be adding sync messages; see bug 204955 for the stress we&apos;re putting Said through :(

Is it possible to avoid this?

&gt; Source/WebKit/WebProcess/GPU/media/RemoteMediaPlayerManager.cpp:128
&gt; +        remotePlayer-&gt;invalidate();

Did you mean to bail here, or do you really want to add it to m_players?

&gt; Source/WebKit/WebProcess/GPU/media/RemoteMediaPlayerManager.cpp:139
&gt; +    if (!gpuProcessConnection().sendSync(Messages::RemoteMediaPlayerManagerProxy::GetSupportedTypes(remoteEngineIdentifier), Messages::RemoteMediaPlayerManagerProxy::GetSupportedTypes::Reply(types), 0))

Ditto

&gt; Source/WebKit/WebProcess/GPU/media/RemoteMediaPlayerManager.cpp:151
&gt; +    // FIXME: convert WebCore::MediaPlayer::SupportsType to enum class so it can be encoded and sent via IPC

Turns out you don&apos;t actually have to `enum class`, you can just implement the EnumTraits even for normal enums. But obviously ideally do both.

IMO we should *start* there (I intentionally didn&apos;t land any DisplayListItem encoding with casts, doing all of the EnumTraitsing first).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1597634</commentid>
    <comment_count>5</comment_count>
      <attachid>385396</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2019-12-11 08:44:25 -0800</bug_when>
    <thetext>Created attachment 385396
WIP patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1597689</commentid>
    <comment_count>6</comment_count>
      <attachid>385410</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2019-12-11 10:54:14 -0800</bug_when>
    <thetext>Created attachment 385410
WIP patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1597700</commentid>
    <comment_count>7</comment_count>
      <attachid>385414</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2019-12-11 11:17:18 -0800</bug_when>
    <thetext>Created attachment 385414
WIP patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1597738</commentid>
    <comment_count>8</comment_count>
      <attachid>385414</attachid>
    <who name="Peng Liu">peng.liu6</who>
    <bug_when>2019-12-11 12:50:11 -0800</bug_when>
    <thetext>Comment on attachment 385414
WIP patch

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

&gt; Source/WebCore/platform/graphics/MediaPlayer.cpp:520
&gt; +    if (!m_activeEngineIdentifier.isEmpty()) {

duplicated code?

&gt; Source/WebCore/platform/graphics/MediaPlayerEngineIdentifiers.h:2
&gt; + * Copyright (C) 2015 Apple Inc. All rights reserved.

2019?

&gt; Source/WebKit/GPUProcess/media/RemoteMediaPlayerManagerProxy.cpp:2
&gt; + * Copyright (C) 2017 Apple Inc. All rights reserved.

2019?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1597750</commentid>
    <comment_count>9</comment_count>
      <attachid>385414</attachid>
    <who name="Peng Liu">peng.liu6</who>
    <bug_when>2019-12-11 13:24:12 -0800</bug_when>
    <thetext>Comment on attachment 385414
WIP patch

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

&gt; Source/WebKit/WebProcess/GPU/media/MediaPlayerPrivateRemote.cpp:65
&gt; +void MediaPlayerPrivateRemote::MediaPlayerPrivateRemote::load(const String&amp;)

MediaPlayerPrivateRemote::load(const String&amp;)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1597814</commentid>
    <comment_count>10</comment_count>
      <attachid>385447</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2019-12-11 15:22:22 -0800</bug_when>
    <thetext>Created attachment 385447
WIP patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1597871</commentid>
    <comment_count>11</comment_count>
      <attachid>385462</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2019-12-11 16:58:38 -0800</bug_when>
    <thetext>Created attachment 385462
WIP patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1597980</commentid>
    <comment_count>12</comment_count>
      <attachid>385491</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2019-12-12 06:39:23 -0800</bug_when>
    <thetext>Created attachment 385491
WIP patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1598009</commentid>
    <comment_count>13</comment_count>
      <attachid>385498</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2019-12-12 09:02:45 -0800</bug_when>
    <thetext>Created attachment 385498
WIP patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1598018</commentid>
    <comment_count>14</comment_count>
      <attachid>385502</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2019-12-12 09:32:54 -0800</bug_when>
    <thetext>Created attachment 385502
WIP patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1598048</commentid>
    <comment_count>15</comment_count>
      <attachid>385509</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2019-12-12 10:19:15 -0800</bug_when>
    <thetext>Created attachment 385509
WIP patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1598081</commentid>
    <comment_count>16</comment_count>
      <attachid>385509</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2019-12-12 11:33:48 -0800</bug_when>
    <thetext>Comment on attachment 385509
WIP patch

A couple of nits below.
It would be nice to be able to remove the GPU players when their WebProcess counterparts get destroyed.

Given we have UseGPUProcessForMedia, maybe we could have a simple test that would instantiate a media player in GPU process and verify nothing is crashing/hanging?

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

&gt; Source/WebCore/platform/graphics/MediaPlayer.cpp:207
&gt; +static void addMediaEngine(std::unique_ptr&lt;MediaPlayerFactory&gt;);

std::unique_ptr&lt;MediaPlayerFactory&gt;&amp;&amp;

&gt; Source/WebCore/platform/graphics/MediaPlayer.cpp:244
&gt; +        if (registerRemoteEngine)

if (auto&amp; registerRemoteEngine = registerRemotePlayerCallback())

&gt; Source/WebCore/platform/graphics/MediaPlayer.cpp:398
&gt; +

Two lines.

&gt; Source/WebCore/platform/graphics/MediaPlayer.h:88
&gt; +#if ENABLE(GPU_PROCESS)

We could remove this #if

&gt; Source/WebCore/platform/graphics/MediaPlayer.h:683
&gt; +    virtual ~MediaPlayerFactory() { }

Could use = default as well for consistency with constructor.

&gt; Source/WebCore/platform/graphics/MediaPlayer.h:692
&gt; +    virtual void clearMediaCacheForOrigins(const String&amp;, const HashSet&lt;RefPtr&lt;SecurityOrigin&gt;&gt;&amp;) const { }

Seems strange that clear would be const.

&gt; Source/WebCore/platform/graphics/MediaPlayer.h:697
&gt;  typedef void (*MediaEngineRegister)(MediaEngineRegistrar);

We could modernise with &quot;using&quot;.

&gt; Source/WebCore/platform/graphics/MediaPlayer.h:706
&gt; +    using RegisterRemotePlayerCallback = std::function&lt;void(MediaEngineRegistrar, MediaPlayerEnums::MediaEngineIdentifier)&gt;;

Can we use a WTF::Function or CompletionHandler?

&gt; Source/WebCore/platform/graphics/avfoundation/cf/MediaPlayerPrivateAVFoundationCF.cpp:345
&gt; +class MediaPlayerFactoryAVFoundationCF : public MediaPlayerFactory {

Could be made final.

&gt; Source/WebCore/platform/graphics/avfoundation/cf/MediaPlayerPrivateAVFoundationCF.cpp:346
&gt; +public:

Can we make them private?

&gt; Source/WebCore/platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.mm:277
&gt; +public:

Ditto final/private and with below classes.

&gt; Source/WebKit/GPUProcess/GPUConnectionToWebProcess.cpp:57
&gt; +    , m_remoteMediaPlayerManagerProxy(makeUnique&lt;RemoteMediaPlayerManagerProxy&gt;(*this))

makeUniqueRef?

&gt; Source/WebKit/GPUProcess/GPUConnectionToWebProcess.cpp:84
&gt; +        if (m_remoteMediaPlayerManagerProxy)

Might not be needed since we are creating it at constructor time.
Or we could lazily initialise it?

&gt; Source/WebKit/GPUProcess/media/RemoteMediaPlayerManagerProxy.cpp:84
&gt; +protected:

private?

&gt; Source/WebKit/GPUProcess/media/RemoteMediaPlayerManagerProxy.h:67
&gt; +    friend class PlayerProxy;

Do we need PlayerProxy to be a friend given it is inside RemoteMediaPlayerManagerProxy.

&gt; Source/WebKit/GPUProcess/media/RemoteMediaPlayerManagerProxy.messages.in:27
&gt; +    CreateMediaPlayer(WebKit::MediaPlayerPrivateRemoteIdentifier id, enum:uint8_t WebCore::MediaPlayerEnums::MediaEngineIdentifier remoteEngineIdentifier) -&gt; (bool success) Synchronous

Do we need this one to be synchronous?
Is there a case where creation would fail? If so, could we just report the error asynchronously as any other asynchronous error might happen?

&gt; Source/WebKit/WebProcess/GPU/media/MediaPlayerPrivateRemote.cpp:63
&gt; +    m_player = nullptr;

Probably not needed right now to null it.
Do we need to have a way at destruction time to call GPUProcess to state that it is gone?
That way, the GPU process player map could shrink.

&gt; Source/WebKit/WebProcess/GPU/media/MediaPlayerPrivateRemote.h:40
&gt; +    , public MediaPlayerPrivateInterface

Do we need MediaPlayerPrivateRemote to inherit from MediaPlayerPrivateInterface since it is directly called from RemoteMediaPlayerManager?
Probably not a big deal given all virtual methods are final.

&gt; Source/WebKit/WebProcess/GPU/media/RemoteMediaPlayerManager.cpp:154
&gt; +

Two lines

&gt; Source/WebKit/WebProcess/GPU/media/RemoteMediaPlayerManager.cpp:160
&gt; +

Two lines

&gt; Source/WebKit/WebProcess/GPU/media/RemoteMediaPlayerManager.cpp:184
&gt; +        originData.append(origin-&gt;data());

Could use initialize/uncheckedAppend or WTF::map maybe.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1598252</commentid>
    <comment_count>17</comment_count>
      <attachid>385509</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2019-12-12 21:47:11 -0800</bug_when>
    <thetext>Comment on attachment 385509
WIP patch

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

&gt;&gt; Source/WebCore/platform/graphics/MediaPlayer.cpp:207
&gt;&gt; +static void addMediaEngine(std::unique_ptr&lt;MediaPlayerFactory&gt;);
&gt; 
&gt; std::unique_ptr&lt;MediaPlayerFactory&gt;&amp;&amp;

Fixed.

&gt;&gt; Source/WebCore/platform/graphics/MediaPlayer.cpp:244
&gt;&gt; +        if (registerRemoteEngine)
&gt; 
&gt; if (auto&amp; registerRemoteEngine = registerRemotePlayerCallback())

Fixed.

&gt;&gt; Source/WebCore/platform/graphics/MediaPlayer.cpp:398
&gt;&gt; +
&gt; 
&gt; Two lines.

Removed.

&gt;&gt; Source/WebCore/platform/graphics/MediaPlayer.h:88
&gt;&gt; +#if ENABLE(GPU_PROCESS)
&gt; 
&gt; We could remove this #if

Removed.

&gt;&gt; Source/WebCore/platform/graphics/MediaPlayer.h:683
&gt;&gt; +    virtual ~MediaPlayerFactory() { }
&gt; 
&gt; Could use = default as well for consistency with constructor.

Changed.

&gt;&gt; Source/WebCore/platform/graphics/MediaPlayer.h:692
&gt;&gt; +    virtual void clearMediaCacheForOrigins(const String&amp;, const HashSet&lt;RefPtr&lt;SecurityOrigin&gt;&gt;&amp;) const { }
&gt; 
&gt; Seems strange that clear would be const.

The method is on a const MediaPlayerFactory

&gt;&gt; Source/WebCore/platform/graphics/MediaPlayer.h:697
&gt;&gt;  typedef void (*MediaEngineRegister)(MediaEngineRegistrar);
&gt; 
&gt; We could modernise with &quot;using&quot;.

Fixed.

&gt;&gt; Source/WebCore/platform/graphics/MediaPlayer.h:706
&gt;&gt; +    using RegisterRemotePlayerCallback = std::function&lt;void(MediaEngineRegistrar, MediaPlayerEnums::MediaEngineIdentifier)&gt;;
&gt; 
&gt; Can we use a WTF::Function or CompletionHandler?

Changed to CompletionHandler.

&gt;&gt; Source/WebCore/platform/graphics/avfoundation/cf/MediaPlayerPrivateAVFoundationCF.cpp:345
&gt;&gt; +class MediaPlayerFactoryAVFoundationCF : public MediaPlayerFactory {
&gt; 
&gt; Could be made final.

Fixed.

&gt;&gt; Source/WebCore/platform/graphics/avfoundation/cf/MediaPlayerPrivateAVFoundationCF.cpp:346
&gt;&gt; +public:
&gt; 
&gt; Can we make them private?

Fixed.

&gt;&gt; Source/WebCore/platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.mm:277
&gt;&gt; +public:
&gt; 
&gt; Ditto final/private and with below classes.

Fixed.

&gt;&gt; Source/WebKit/GPUProcess/GPUConnectionToWebProcess.cpp:84
&gt;&gt; +        if (m_remoteMediaPlayerManagerProxy)
&gt; 
&gt; Might not be needed since we are creating it at constructor time.
&gt; Or we could lazily initialise it?

Changed to create when needed.

&gt;&gt; Source/WebKit/GPUProcess/media/RemoteMediaPlayerManagerProxy.cpp:84
&gt;&gt; +protected:
&gt; 
&gt; private?

Fixed.

&gt;&gt; Source/WebKit/GPUProcess/media/RemoteMediaPlayerManagerProxy.h:67
&gt;&gt; +    friend class PlayerProxy;
&gt; 
&gt; Do we need PlayerProxy to be a friend given it is inside RemoteMediaPlayerManagerProxy.

Changed.

&gt;&gt; Source/WebKit/GPUProcess/media/RemoteMediaPlayerManagerProxy.messages.in:27
&gt;&gt; +    CreateMediaPlayer(WebKit::MediaPlayerPrivateRemoteIdentifier id, enum:uint8_t WebCore::MediaPlayerEnums::MediaEngineIdentifier remoteEngineIdentifier) -&gt; (bool success) Synchronous
&gt; 
&gt; Do we need this one to be synchronous?
&gt; Is there a case where creation would fail? If so, could we just report the error asynchronously as any other asynchronous error might happen?

It doesn&apos;t need to be synchronous, but we&apos;ll have to do a bit of MediaPlayer refactoring so I&apos;d prefer to do it in a followup since this patch. Filed https://bugs.webkit.org/show_bug.cgi?id=205197 for this work.

&gt;&gt; Source/WebKit/WebProcess/GPU/media/MediaPlayerPrivateRemote.cpp:63
&gt;&gt; +    m_player = nullptr;
&gt; 
&gt; Probably not needed right now to null it.
&gt; Do we need to have a way at destruction time to call GPUProcess to state that it is gone?
&gt; That way, the GPU process player map could shrink.

Yes, fixed.

&gt;&gt; Source/WebKit/WebProcess/GPU/media/MediaPlayerPrivateRemote.h:40
&gt;&gt; +    , public MediaPlayerPrivateInterface
&gt; 
&gt; Do we need MediaPlayerPrivateRemote to inherit from MediaPlayerPrivateInterface since it is directly called from RemoteMediaPlayerManager?
&gt; Probably not a big deal given all virtual methods are final.

It doesn&apos;t have to inherit, I&apos;ll look into changing that in an upcoming patch.

&gt;&gt; Source/WebKit/WebProcess/GPU/media/RemoteMediaPlayerManager.cpp:154
&gt;&gt; +
&gt; 
&gt; Two lines

Removed.

&gt;&gt; Source/WebKit/WebProcess/GPU/media/RemoteMediaPlayerManager.cpp:160
&gt;&gt; +
&gt; 
&gt; Two lines

Removed.

&gt;&gt; Source/WebKit/WebProcess/GPU/media/RemoteMediaPlayerManager.cpp:184
&gt;&gt; +        originData.append(origin-&gt;data());
&gt; 
&gt; Could use initialize/uncheckedAppend or WTF::map maybe.

Fixed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1598257</commentid>
    <comment_count>18</comment_count>
      <attachid>385578</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2019-12-12 21:50:59 -0800</bug_when>
    <thetext>Created attachment 385578
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1598287</commentid>
    <comment_count>19</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2019-12-13 01:28:43 -0800</bug_when>
    <thetext>&gt; &gt; Can we use a WTF::Function or CompletionHandler?

Actually a CompletionHandler is probably not great since it might be called multiple times.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1598352</commentid>
    <comment_count>20</comment_count>
      <attachid>385509</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2019-12-13 08:41:16 -0800</bug_when>
    <thetext>Comment on attachment 385509
WIP patch

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

&gt;&gt;&gt; Source/WebKit/WebProcess/GPU/media/MediaPlayerPrivateRemote.h:40
&gt;&gt;&gt; +    , public MediaPlayerPrivateInterface
&gt;&gt; 
&gt;&gt; Do we need MediaPlayerPrivateRemote to inherit from MediaPlayerPrivateInterface since it is directly called from RemoteMediaPlayerManager?
&gt;&gt; Probably not a big deal given all virtual methods are final.
&gt; 
&gt; It doesn&apos;t have to inherit, I&apos;ll look into changing that in an upcoming patch.

Actually it does need to inherit because it is returned by the remote factory and called by MediaPlayer</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1598356</commentid>
    <comment_count>21</comment_count>
      <attachid>385606</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2019-12-13 08:44:09 -0800</bug_when>
    <thetext>Created attachment 385606
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1598363</commentid>
    <comment_count>22</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2019-12-13 09:01:17 -0800</bug_when>
    <thetext>(In reply to Eric Carlson from comment #20)
&gt; Comment on attachment 385509 [details]
&gt; WIP patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=385509&amp;action=review
&gt; 
&gt; &gt;&gt;&gt; Source/WebKit/WebProcess/GPU/media/MediaPlayerPrivateRemote.h:40
&gt; &gt;&gt;&gt; +    , public MediaPlayerPrivateInterface
&gt; &gt;&gt; 
&gt; &gt;&gt; Do we need MediaPlayerPrivateRemote to inherit from MediaPlayerPrivateInterface since it is directly called from RemoteMediaPlayerManager?
&gt; &gt;&gt; Probably not a big deal given all virtual methods are final.
&gt; &gt; 
&gt; &gt; It doesn&apos;t have to inherit, I&apos;ll look into changing that in an upcoming patch.
&gt; 
&gt; Actually it does need to inherit because it is returned by the remote
&gt; factory and called by MediaPlayer

Right, I mixed up with the proxy class in GPU process that might not need any specific inheritance, RemoteMediaPlayerProxy.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1598380</commentid>
    <comment_count>23</comment_count>
      <attachid>385606</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-12-13 09:50:00 -0800</bug_when>
    <thetext>Comment on attachment 385606
Patch

Clearing flags on attachment: 385606

Committed r253482: &lt;https://trac.webkit.org/changeset/253482&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1598381</commentid>
    <comment_count>24</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-12-13 09:50:03 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>385328</attachid>
            <date>2019-12-10 17:51:38 -0800</date>
            <delta_ts>2019-12-10 18:04:09 -0800</delta_ts>
            <desc>WIP patch</desc>
            <filename>bug-205094-20191210175137.patch</filename>
            <type>text/plain</type>
            <size>150171</size>
            <attacher name="Eric Carlson">eric.carlson</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjUzMzU0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNjE5MDUzNmRmMzEwYTI0
ODBlZTkzZjlkOGUxZGIwMTcwNzRiMGQwMC4uNTQ5YzFiNWRmMGEwZjM4MGRlMWQ5OGJhZjdlZjJl
ZGVkMTUzNjYzNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEwNyBAQAorMjAxOS0xMi0xMCAgRXJp
YyBDYXJsc29uICA8ZXJpYy5jYXJsc29uQGFwcGxlLmNvbT4KKworICAgICAgICBBZGQgaW5mcmFz
dHJ1Y3R1cmUgbmVlZGVkIGZvciBwbGF5aW5nIG1lZGlhIHBsYXllciBpbiB0aGUgR1BVIHByb2Nl
c3MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwNTA5
NAorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNTc4MTUzOTM+CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLCBubyBmdW5jdGlvbmFs
IGNoYW5nZSB5ZXQuCisKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2o6CisgICAgICAgICogcGxhdGZvcm0vQ29udGVudFR5cGUuaDoKKyAgICAgICAgKFdlYkNvcmU6
OkNvbnRlbnRUeXBlOjplbmNvZGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudFR5
cGU6OmRlY29kZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6bnVsbExvZ2dlcik6CisgICAgICAgIChXZWJDb3JlOjpudWxs
Q29udGVudFR5cGVWZWN0b3IpOgorICAgICAgICAoV2ViQ29yZTo6bXV0YWJsZUluc3RhbGxlZE1l
ZGlhRW5naW5lc1ZlY3Rvcik6CisgICAgICAgIChXZWJDb3JlOjpyZWdpc3RlclJlbW90ZVBsYXll
ckNhbGxiYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbW90ZU1lZGlhUGxheWVyU3VwcG9ydDo6
c2V0UmVnaXN0ZXJSZW1vdGVQbGF5ZXJDYWxsYmFjayk6CisgICAgICAgIChXZWJDb3JlOjpidWls
ZE1lZGlhRW5naW5lc1ZlY3Rvcik6CisgICAgICAgIChXZWJDb3JlOjppbnN0YWxsZWRNZWRpYUVu
Z2luZXMpOgorICAgICAgICAoV2ViQ29yZTo6YWRkTWVkaWFFbmdpbmUpOgorICAgICAgICAoV2Vi
Q29yZTo6TWVkaWFQbGF5ZXI6Om1lZGlhRW5naW5lKToKKyAgICAgICAgKFdlYkNvcmU6OmJlc3RN
ZWRpYUVuZ2luZUZvclN1cHBvcnRQYXJhbWV0ZXJzKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlh
UGxheWVyOjpuZXh0TWVkaWFFbmdpbmUpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXI6
OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllcjo6TWVkaWFQbGF5ZXIpOgor
ICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXI6Om5leHRCZXN0TWVkaWFFbmdpbmUpOgorICAg
ICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXI6OmxvYWRXaXRoTmV4dE1lZGlhRW5naW5lKToKKyAg
ICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyOjpnZXRTdXBwb3J0ZWRUeXBlcyk6CisgICAgICAg
IChXZWJDb3JlOjpNZWRpYVBsYXllcjo6b3JpZ2luc0luTWVkaWFDYWNoZSk6CisgICAgICAgIChX
ZWJDb3JlOjpNZWRpYVBsYXllcjo6Y2xlYXJNZWRpYUNhY2hlKToKKyAgICAgICAgKFdlYkNvcmU6
Ok1lZGlhUGxheWVyOjpjbGVhck1lZGlhQ2FjaGVGb3JPcmlnaW5zKToKKyAgICAgICAgKFdlYkNv
cmU6Ok1lZGlhUGxheWVyOjpzdXBwb3J0c0tleVN5c3RlbSk6CisgICAgICAgIChXZWJDb3JlOjpN
ZWRpYVBsYXllcjo6bmV0d29ya1N0YXRlQ2hhbmdlZCk6CisgICAgICAgIChXZWJDb3JlOjpuZXh0
TWVkaWFFbmdpbmUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXI6Om5l
eHRCZXN0TWVkaWFFbmdpbmUgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL01lZGlhUGxheWVyLmg6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYUVuZ2luZVN1cHBv
cnRQYXJhbWV0ZXJzOjplbmNvZGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFFbmdp
bmVTdXBwb3J0UGFyYW1ldGVyczo6ZGVjb2RlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxh
eWVyRmFjdG9yeTo6fk1lZGlhUGxheWVyRmFjdG9yeSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRp
YVBsYXllckZhY3Rvcnk6Om9yaWdpbnNJbk1lZGlhQ2FjaGUgY29uc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6TWVkaWFQbGF5ZXJGYWN0b3J5OjpjbGVhck1lZGlhQ2FjaGUgY29uc3QpOgorICAgICAg
ICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJGYWN0b3J5OjpjbGVhck1lZGlhQ2FjaGVGb3JPcmlnaW5z
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyRmFjdG9yeTo6c3VwcG9ydHNL
ZXlTeXN0ZW0gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXI6OnNldFZpZGVv
RnVsbHNjcmVlbkxheWVyKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVy
OjpzaXplIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyOjpp
bnZhbGlkVGltZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllcjo6cGxh
dGZvcm1Wb2x1bWVDb25maWd1cmF0aW9uUmVxdWlyZWQgY29uc3QpOiBEZWxldGVkLgorICAgICAg
ICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXI6OmNvbnRlbnRNSU1FVHlwZSBjb25zdCk6IERlbGV0ZWQu
CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllcjo6Y29udGVudFR5cGVDb2RlY3MgY29uc3Qp
OiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXI6OmNvbnRlbnRNSU1FVHlw
ZVdhc0luZmVycmVkRnJvbUV4dGVuc2lvbiBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJD
b3JlOjpNZWRpYVBsYXllcjo6bWVkaWFQbGF5ZXJMb2dJZGVudGlmaWVyKTogRGVsZXRlZC4KKyAg
ICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyOjpyZW5kZXJpbmdDYW5CZUFjY2VsZXJhdGVkIGNv
bnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyOjpyZW5kZXJpbmdN
b2RlQ2hhbmdlZCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXll
cjo6YWNjZWxlcmF0ZWRDb21wb3NpdGluZ0VuYWJsZWQpOiBEZWxldGVkLgorICAgICAgICAoV2Vi
Q29yZTo6TWVkaWFQbGF5ZXI6OmFjdGl2ZVNvdXJjZUJ1ZmZlcnNDaGFuZ2VkKTogRGVsZXRlZC4K
KyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyOjpwbGF5ZXJDb250ZW50Qm94UmVjdCBjb25z
dCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllcjo6cGxheWVyQ29udGVu
dHNTY2FsZSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllcjo6
c2hvdWxkVXNlUGVyc2lzdGVudENhY2hlIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNv
cmU6Ok1lZGlhUGxheWVyOjptZWRpYUNhY2hlRGlyZWN0b3J5IGNvbnN0KTogRGVsZXRlZC4KKyAg
ICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyOjppc1ZpZGVvUGxheWVyIGNvbnN0KTogRGVsZXRl
ZC4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyOjptZWRpYUVuZ2luZVVwZGF0ZWQpOiBE
ZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXI6OmlzTG9vcGluZyBjb25zdCk6
IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllcjo6cmVxdWVzdEluc3RhbGxN
aXNzaW5nUGx1Z2lucyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllcjo6
Y2xpZW50IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9NZWRp
YVBsYXllckVuZ2luZUlkZW50aWZpZXJzLmg6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL0NvbnRlbnRUeXBlLmguCisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllckVuZ2lu
ZUlkZW50aWZpZXJzOjphdkZvdW5kYXRpb25FbmdpbmVJZGVudGlmaWVyKToKKyAgICAgICAgKFdl
YkNvcmU6Ok1lZGlhUGxheWVyRW5naW5lSWRlbnRpZmllcnM6OmF2Rm91bmRhdGlvbk1TRUVuZ2lu
ZUlkZW50aWZpZXIpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJFbmdpbmVJZGVudGlm
aWVyczo6YXZGb3VuZGF0aW9uTWVkaWFTdHJlYW1FbmdpbmVJZGVudGlmaWVyKToKKyAgICAgICAg
KFdlYkNvcmU6Ok1lZGlhUGxheWVyRW5naW5lSWRlbnRpZmllcnM6OkdTdHJlYW1lck1lZGlhRW5n
aW5lSWRlbnRpZmllcik6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllckVuZ2luZUlkZW50
aWZpZXJzOjpHU3RyZWFtZXJNU0VNZWRpYUVuZ2luZUlkZW50aWZpZXIpOgorICAgICAgICAoV2Vi
Q29yZTo6TWVkaWFQbGF5ZXJFbmdpbmVJZGVudGlmaWVyczo6aG9sZVB1bmNoTWVkaWFFbmdpbmVJ
ZGVudGlmaWVyKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyRW5naW5lSWRlbnRpZmll
cnM6Ok1lZGlhRm91bmRhdGlvbk1lZGlhRW5naW5lSWRlbnRpZmllcik6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvUGxhdGZvcm1UaW1lUmFuZ2VzLmg6CisgICAgICAgIChXZWJDb3JlOjpQ
bGF0Zm9ybVRpbWVSYW5nZXM6OlBsYXRmb3JtVGltZVJhbmdlcyk6IERlbGV0ZWQuCisgICAgICAg
IChXZWJDb3JlOjpQbGF0Zm9ybVRpbWVSYW5nZXM6Omxlbmd0aCBjb25zdCk6IERlbGV0ZWQuCisg
ICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybVRpbWVSYW5nZXM6OlJhbmdlOjpSYW5nZSk6IERlbGV0
ZWQuCisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybVRpbWVSYW5nZXM6OlJhbmdlOjppc1BvaW50
SW5SYW5nZSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybVRpbWVS
YW5nZXM6OlJhbmdlOjppc092ZXJsYXBwaW5nUmFuZ2UgY29uc3QpOiBEZWxldGVkLgorICAgICAg
ICAoV2ViQ29yZTo6UGxhdGZvcm1UaW1lUmFuZ2VzOjpSYW5nZTo6aXNDb250aWd1b3VzV2l0aFJh
bmdlIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtVGltZVJhbmdl
czo6UmFuZ2U6OnVuaW9uV2l0aE92ZXJsYXBwaW5nT3JDb250aWd1b3VzUmFuZ2UgY29uc3QpOiBE
ZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1UaW1lUmFuZ2VzOjpSYW5nZTo6aXNC
ZWZvcmVSYW5nZSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
YXZmb3VuZGF0aW9uL2NmL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbkNGLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbkNGOjpyZWdpc3Rl
ck1lZGlhRW5naW5lKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24v
b2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLmg6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3Vu
ZGF0aW9uT2JqQy5tbToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUFWRm91
bmRhdGlvbk9iakM6OnJlZ2lzdGVyTWVkaWFFbmdpbmUpOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZG
T2JqQy5tbToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNl
QVZGT2JqQzo6cmVnaXN0ZXJNZWRpYUVuZ2luZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpD
Lm1tOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZP
YmpDOjpyZWdpc3Rlck1lZGlhRW5naW5lKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9n
c3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6cmVnaXN0ZXJNZWRpYUVuZ2luZSk6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL21zZS9NZWRpYVBsYXllclByaXZh
dGVHU3RyZWFtZXJNU0UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRl
R1N0cmVhbWVyTVNFOjpyZWdpc3Rlck1lZGlhRW5naW5lKToKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9ob2xlcHVuY2gvTWVkaWFQbGF5ZXJQcml2YXRlSG9sZVB1bmNoLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUhvbGVQdW5jaDo6cmVnaXN0ZXJNZWRpYUVu
Z2luZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL01lZGlhUGxheWVyUHJpdmF0
ZU1lZGlhRm91bmRhdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZh
dGVNZWRpYUZvdW5kYXRpb246OnJlZ2lzdGVyTWVkaWFFbmdpbmUpOgorICAgICAgICAqIHBsYXRm
b3JtL21vY2svbWVkaWFzb3VyY2UvTW9ja01lZGlhUGxheWVyTWVkaWFTb3VyY2UuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6TW9ja01lZGlhUGxheWVyTWVkaWFTb3VyY2U6OnJlZ2lzdGVyTWVkaWFF
bmdpbmUpOgorCiAyMDE5LTEyLTEwICBQZXIgQXJuZSBWb2xsYW4gIDxwdm9sbGFuQGFwcGxlLmNv
bT4KIAogICAgICAgICBNYWtlIGl0IHBvc3NpYmxlIHRvIGFkZCByZWdyZXNzaW9uIHRlc3RzIGZv
ciBibG9ja2VkIFhQQyBzZXJ2aWNlcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VM
b2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCA3NDM2MWVjYTNiN2Y2OTRlZTIzZDlk
MzY3ODIyYzZkZTViMTg1YjVlLi4xZTM0NzA4MGMwNmE5OGQzNmVhOWI5MzFlZjk4OGQ2NzIxYmUz
NDYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2Vi
S2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDE4NyBAQAorMjAxOS0xMi0xMCAgRXJpYyBDYXJsc29u
ICA8ZXJpYy5jYXJsc29uQGFwcGxlLmNvbT4KKworICAgICAgICBBZGQgaW5mcmFzdHJ1Y3R1cmUg
bmVlZGVkIGZvciBwbGF5aW5nIG1lZGlhIHBsYXllciBpbiB0aGUgR1BVIHByb2Nlc3MKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwNTA5NAorICAgICAg
ICA8cmRhcjovL3Byb2JsZW0vNTc4MTUzOTM+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgKiBEZXJpdmVkU291cmNlcy1pbnB1dC54Y2ZpbGVsaXN0Ogor
ICAgICAgICAqIERlcml2ZWRTb3VyY2VzLW91dHB1dC54Y2ZpbGVsaXN0OgorICAgICAgICAqIERl
cml2ZWRTb3VyY2VzLm1ha2U6CisgICAgICAgICogR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9X
ZWJQcm9jZXNzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6R1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vz
czo6R1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcyk6CisgICAgICAgIChXZWJLaXQ6OkdQVUNvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3M6On5HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzKToKKyAgICAgICAg
KFdlYktpdDo6R1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6ZGlkUmVjZWl2ZU1lc3NhZ2UpOgor
ICAgICAgICAoV2ViS2l0OjpHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpkaWRSZWNlaXZlU3lu
Y01lc3NhZ2UpOgorICAgICAgICAqIEdQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vz
cy5oOgorICAgICAgICAqIEdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2Vy
UHJveHkuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6bnVsbExvZ2dlcik6CisgICAgICAg
IChXZWJLaXQ6OlJlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5OjpQbGF5ZXJQcm94eTo6UGxh
eWVyUHJveHkpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94
eTo6UGxheWVyUHJveHk6On5QbGF5ZXJQcm94eSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZU1l
ZGlhUGxheWVyTWFuYWdlclByb3h5OjpSZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eSk6Cisg
ICAgICAgIChXZWJLaXQ6OlJlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5Ojp+UmVtb3RlTWVk
aWFQbGF5ZXJNYW5hZ2VyUHJveHkpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVNZWRpYVBsYXll
ck1hbmFnZXJQcm94eTo6Y3JlYXRlTWVkaWFQbGF5ZXIpOgorICAgICAgICAoV2ViS2l0OjpSZW1v
dGVNZWRpYVBsYXllck1hbmFnZXJQcm94eTo6Z2V0U3VwcG9ydGVkVHlwZXMpOgorICAgICAgICAo
V2ViS2l0OjpSZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eTo6c3VwcG9ydHNUeXBlKToKKyAg
ICAgICAgKFdlYktpdDo6UmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHk6Om9yaWdpbnNJbk1l
ZGlhQ2FjaGUpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94
eTo6Y2xlYXJNZWRpYUNhY2hlKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTWVkaWFQbGF5ZXJN
YW5hZ2VyUHJveHk6OmNsZWFyTWVkaWFDYWNoZUZvck9yaWdpbnMpOgorICAgICAgICAoV2ViS2l0
OjpSZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eTo6c3VwcG9ydHNLZXlTeXN0ZW0pOgorICAg
ICAgICAqIEdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHkuaDog
QWRkZWQuCisgICAgICAgIChXZWJLaXQ6OlJlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5Ojp3
ZWJQcm9jZXNzQ29ubmVjdGlvbiBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZU1lZGlh
UGxheWVyTWFuYWdlclByb3h5OjpkaWRSZWNlaXZlTWVzc2FnZUZyb21XZWJQcm9jZXNzKToKKyAg
ICAgICAgKFdlYktpdDo6UmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHk6OmRpZFJlY2VpdmVT
eW5jTWVzc2FnZUZyb21XZWJQcm9jZXNzKToKKyAgICAgICAgKiBHUFVQcm9jZXNzL21lZGlhL1Jl
bW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5Lm1lc3NhZ2VzLmluOiBBZGRlZC4KKyAgICAgICAg
KiBTY3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5weToKKyAgICAgICAgKiBTb3VyY2VzLnR4dDoKKyAg
ICAgICAgKiBTb3VyY2VzQ29jb2EudHh0OgorICAgICAgICAqIFdlYktpdC54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL21lZGlhL01lZGlhUGxheWVy
UHJpdmF0ZVJlbW90ZS5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpNZWRpYVBsYXllclBy
aXZhdGVSZW1vdGU6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZSk6CisgICAgICAgIChXZWJLaXQ6
Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6fk1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZSk6Cisg
ICAgICAgIChXZWJLaXQ6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6TWVkaWFQbGF5ZXJQcml2
YXRlUmVtb3RlOjpsb2FkKToKKyAgICAgICAgKFdlYktpdDo6TWVkaWFQbGF5ZXJQcml2YXRlUmVt
b3RlOjpsb2FkKToKKyAgICAgICAgKFdlYktpdDo6TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpj
YW5jZWxMb2FkKToKKyAgICAgICAgKFdlYktpdDo6TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpw
cmVwYXJlVG9QbGF5KToKKyAgICAgICAgKFdlYktpdDo6TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3Rl
OjpwbGF0Zm9ybUxheWVyIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6TWVkaWFQbGF5ZXJQcml2
YXRlUmVtb3RlOjpzZXRWaWRlb0Z1bGxzY3JlZW5MYXllcik6CisgICAgICAgIChXZWJLaXQ6Ok1l
ZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6dXBkYXRlVmlkZW9GdWxsc2NyZWVuSW5saW5lSW1hZ2Up
OgorICAgICAgICAoV2ViS2l0OjpNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OnNldFZpZGVvRnVs
bHNjcmVlbkZyYW1lKToKKyAgICAgICAgKFdlYktpdDo6TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3Rl
OjpzZXRWaWRlb0Z1bGxzY3JlZW5HcmF2aXR5KToKKyAgICAgICAgKFdlYktpdDo6TWVkaWFQbGF5
ZXJQcml2YXRlUmVtb3RlOjpzZXRWaWRlb0Z1bGxzY3JlZW5Nb2RlKToKKyAgICAgICAgKFdlYktp
dDo6TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjp2aWRlb0Z1bGxzY3JlZW5TdGFuZGJ5Q2hhbmdl
ZCk6CisgICAgICAgIChXZWJLaXQ6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6YWNjZXNzTG9n
IGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjplcnJv
ckxvZyBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6
cGxhdGZvcm1FcnJvckNvZGUgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpNZWRpYVBsYXllclBy
aXZhdGVSZW1vdGU6OnBsYXkpOgorICAgICAgICAoV2ViS2l0OjpNZWRpYVBsYXllclByaXZhdGVS
ZW1vdGU6OnBhdXNlKToKKyAgICAgICAgKFdlYktpdDo6TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3Rl
OjpzZXRCdWZmZXJpbmdQb2xpY3kpOgorICAgICAgICAoV2ViS2l0OjpNZWRpYVBsYXllclByaXZh
dGVSZW1vdGU6OnN1cHBvcnRzUGljdHVyZUluUGljdHVyZSBjb25zdCk6CisgICAgICAgIChXZWJL
aXQ6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6c3VwcG9ydHNGdWxsc2NyZWVuIGNvbnN0KToK
KyAgICAgICAgKFdlYktpdDo6TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpzdXBwb3J0c1NjYW5u
aW5nIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpy
ZXF1aXJlc0ltbWVkaWF0ZUNvbXBvc2l0aW5nIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6TWVk
aWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpjYW5TYXZlTWVkaWFEYXRhIGNvbnN0KToKKyAgICAgICAg
KFdlYktpdDo6TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpuYXR1cmFsU2l6ZSBjb25zdCk6Cisg
ICAgICAgIChXZWJLaXQ6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6aGFzVmlkZW8gY29uc3Qp
OgorICAgICAgICAoV2ViS2l0OjpNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6Omhhc0F1ZGlvIGNv
bnN0KToKKyAgICAgICAgKFdlYktpdDo6TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpzZXRWaXNp
YmxlKToKKyAgICAgICAgKFdlYktpdDo6TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpNZWRpYVBs
YXllclByaXZhdGVSZW1vdGU6OmR1cmF0aW9uTWVkaWFUaW1lIGNvbnN0KToKKyAgICAgICAgKFdl
YktpdDo6TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpjdXJyZW50TWVkaWFUaW1lIGNvbnN0KToK
KyAgICAgICAgKFdlYktpdDo6TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpnZXRTdGFydERhdGUg
Y29uc3QpOgorICAgICAgICAoV2ViS2l0OjpNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OnNlZWsp
OgorICAgICAgICAoV2ViS2l0OjpNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OnNlZWtXaXRoVG9s
ZXJhbmNlKToKKyAgICAgICAgKFdlYktpdDo6TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpzZWVr
aW5nIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpz
dGFydFRpbWUgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpNZWRpYVBsYXllclByaXZhdGVSZW1v
dGU6OnNldFJhdGVEb3VibGUpOgorICAgICAgICAoV2ViS2l0OjpNZWRpYVBsYXllclByaXZhdGVS
ZW1vdGU6OnJhdGUgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpNZWRpYVBsYXllclByaXZhdGVS
ZW1vdGU6OnNldFByZXNlcnZlc1BpdGNoKToKKyAgICAgICAgKFdlYktpdDo6TWVkaWFQbGF5ZXJQ
cml2YXRlUmVtb3RlOjpwYXVzZWQgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpNZWRpYVBsYXll
clByaXZhdGVSZW1vdGU6OnNldFZvbHVtZURvdWJsZSk6CisgICAgICAgIChXZWJLaXQ6Ok1lZGlh
UGxheWVyUHJpdmF0ZVJlbW90ZTo6c2V0TXV0ZWQpOgorICAgICAgICAoV2ViS2l0OjpNZWRpYVBs
YXllclByaXZhdGVSZW1vdGU6Omhhc0Nsb3NlZENhcHRpb25zIGNvbnN0KToKKyAgICAgICAgKFdl
YktpdDo6TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpzZXRDbG9zZWRDYXB0aW9uc1Zpc2libGUp
OgorICAgICAgICAoV2ViS2l0OjpNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6Om1heEZhc3RGb3J3
YXJkUmF0ZSBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90
ZTo6bWluRmFzdFJldmVyc2VSYXRlIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6TWVkaWFQbGF5
ZXJQcml2YXRlUmVtb3RlOjpuZXR3b3JrU3RhdGUgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpN
ZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OnJlYWR5U3RhdGUgY29uc3QpOgorICAgICAgICAoV2Vi
S2l0OjpNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OnNlZWthYmxlIGNvbnN0KToKKyAgICAgICAg
KFdlYktpdDo6TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpidWZmZXJlZCBjb25zdCk6CisgICAg
ICAgIChXZWJLaXQ6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6bWF4TWVkaWFUaW1lU2Vla2Fi
bGUgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6Om1p
bk1lZGlhVGltZVNlZWthYmxlIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6TWVkaWFQbGF5ZXJQ
cml2YXRlUmVtb3RlOjpzZWVrYWJsZVRpbWVSYW5nZXNMYXN0TW9kaWZpZWRUaW1lIGNvbnN0KToK
KyAgICAgICAgKFdlYktpdDo6TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpsaXZlVXBkYXRlSW50
ZXJ2YWwgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6
OnRvdGFsQnl0ZXMgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpNZWRpYVBsYXllclByaXZhdGVS
ZW1vdGU6OmRpZExvYWRpbmdQcm9ncmVzcyBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6Ok1lZGlh
UGxheWVyUHJpdmF0ZVJlbW90ZTo6c2V0U2l6ZSk6CisgICAgICAgIChXZWJLaXQ6Ok1lZGlhUGxh
eWVyUHJpdmF0ZVJlbW90ZTo6cGFpbnQpOgorICAgICAgICAoV2ViS2l0OjpNZWRpYVBsYXllclBy
aXZhdGVSZW1vdGU6OnBhaW50Q3VycmVudEZyYW1lSW5Db250ZXh0KToKKyAgICAgICAgKFdlYktp
dDo6TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpjb3B5VmlkZW9UZXh0dXJlVG9QbGF0Zm9ybVRl
eHR1cmUpOgorICAgICAgICAoV2ViS2l0OjpNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6Om5hdGl2
ZUltYWdlRm9yQ3VycmVudFRpbWUpOgorICAgICAgICAoV2ViS2l0OjpNZWRpYVBsYXllclByaXZh
dGVSZW1vdGU6OnNldFByZWxvYWQpOgorICAgICAgICAoV2ViS2l0OjpNZWRpYVBsYXllclByaXZh
dGVSZW1vdGU6Omhhc0F2YWlsYWJsZVZpZGVvRnJhbWUgY29uc3QpOgorICAgICAgICAoV2ViS2l0
OjpNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OmNhbkxvYWRQb3N0ZXIgY29uc3QpOgorICAgICAg
ICAoV2ViS2l0OjpNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OnNldFBvc3Rlcik6CisgICAgICAg
IChXZWJLaXQ6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6ZW50ZXJGdWxsc2NyZWVuKToKKyAg
ICAgICAgKFdlYktpdDo6TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpleGl0RnVsbHNjcmVlbik6
CisgICAgICAgIChXZWJLaXQ6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6d2lyZWxlc3NQbGF5
YmFja1RhcmdldE5hbWUgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpNZWRpYVBsYXllclByaXZh
dGVSZW1vdGU6OndpcmVsZXNzUGxheWJhY2tUYXJnZXRUeXBlIGNvbnN0KToKKyAgICAgICAgKFdl
YktpdDo6TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjp3aXJlbGVzc1ZpZGVvUGxheWJhY2tEaXNh
YmxlZCBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6
c2V0V2lyZWxlc3NWaWRlb1BsYXliYWNrRGlzYWJsZWQpOgorICAgICAgICAoV2ViS2l0OjpNZWRp
YVBsYXllclByaXZhdGVSZW1vdGU6OmNhblBsYXlUb1dpcmVsZXNzUGxheWJhY2tUYXJnZXQgY29u
c3QpOgorICAgICAgICAoV2ViS2l0OjpNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OmlzQ3VycmVu
dFBsYXliYWNrVGFyZ2V0V2lyZWxlc3MgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpNZWRpYVBs
YXllclByaXZhdGVSZW1vdGU6OnNldFdpcmVsZXNzUGxheWJhY2tUYXJnZXQpOgorICAgICAgICAo
V2ViS2l0OjpNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OnNldFNob3VsZFBsYXlUb1BsYXliYWNr
VGFyZ2V0KToKKyAgICAgICAgKFdlYktpdDo6TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpjYW5F
bnRlckZ1bGxzY3JlZW4gY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpNZWRpYVBsYXllclByaXZh
dGVSZW1vdGU6OnN1cHBvcnRzQWNjZWxlcmF0ZWRSZW5kZXJpbmcgY29uc3QpOgorICAgICAgICAo
V2ViS2l0OjpNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OmFjY2VsZXJhdGVkUmVuZGVyaW5nU3Rh
dGVDaGFuZ2VkKToKKyAgICAgICAgKFdlYktpdDo6TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpz
aG91bGRNYWludGFpbkFzcGVjdFJhdGlvIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6TWVkaWFQ
bGF5ZXJQcml2YXRlUmVtb3RlOjpzZXRTaG91bGRNYWludGFpbkFzcGVjdFJhdGlvKToKKyAgICAg
ICAgKFdlYktpdDo6TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpoYXNTaW5nbGVTZWN1cml0eU9y
aWdpbiBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6
ZGlkUGFzc0NPUlNBY2Nlc3NDaGVjayBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6Ok1lZGlhUGxh
eWVyUHJpdmF0ZVJlbW90ZTo6d291bGRUYWludE9yaWdpbiBjb25zdCk6CisgICAgICAgIChXZWJL
aXQ6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6bW92aWVMb2FkVHlwZSBjb25zdCk6CisgICAg
ICAgIChXZWJLaXQ6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6cHJlcGFyZUZvclJlbmRlcmlu
Zyk6CisgICAgICAgIChXZWJLaXQ6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6bWVkaWFUaW1l
Rm9yVGltZVZhbHVlIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6TWVkaWFQbGF5ZXJQcml2YXRl
UmVtb3RlOjptYXhpbXVtRHVyYXRpb25Ub0NhY2hlTWVkaWFUaW1lIGNvbnN0KToKKyAgICAgICAg
KFdlYktpdDo6TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpkZWNvZGVkRnJhbWVDb3VudCBjb25z
dCk6CisgICAgICAgIChXZWJLaXQ6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6ZHJvcHBlZEZy
YW1lQ291bnQgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpNZWRpYVBsYXllclByaXZhdGVSZW1v
dGU6OmF1ZGlvRGVjb2RlZEJ5dGVDb3VudCBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6Ok1lZGlh
UGxheWVyUHJpdmF0ZVJlbW90ZTo6dmlkZW9EZWNvZGVkQnl0ZUNvdW50IGNvbnN0KToKKyAgICAg
ICAgKFdlYktpdDo6TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpzZXRQcml2YXRlQnJvd3NpbmdN
b2RlKToKKyAgICAgICAgKFdlYktpdDo6TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjplbmdpbmVE
ZXNjcmlwdGlvbiBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6Ok1lZGlhUGxheWVyUHJpdmF0ZVJl
bW90ZTo6YXVkaW9Tb3VyY2VQcm92aWRlcik6CisgICAgICAgIChXZWJLaXQ6Ok1lZGlhUGxheWVy
UHJpdmF0ZVJlbW90ZTo6Y3JlYXRlU2Vzc2lvbik6CisgICAgICAgIChXZWJLaXQ6Ok1lZGlhUGxh
eWVyUHJpdmF0ZVJlbW90ZTo6c2V0Q0RNU2Vzc2lvbik6CisgICAgICAgIChXZWJLaXQ6Ok1lZGlh
UGxheWVyUHJpdmF0ZVJlbW90ZTo6a2V5QWRkZWQpOgorICAgICAgICAoV2ViS2l0OjpNZWRpYVBs
YXllclByaXZhdGVSZW1vdGU6OmNkbUluc3RhbmNlQXR0YWNoZWQpOgorICAgICAgICAoV2ViS2l0
OjpNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OmNkbUluc3RhbmNlRGV0YWNoZWQpOgorICAgICAg
ICAoV2ViS2l0OjpNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OmF0dGVtcHRUb0RlY3J5cHRXaXRo
SW5zdGFuY2UpOgorICAgICAgICAoV2ViS2l0OjpNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6Ondh
aXRpbmdGb3JLZXkgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpNZWRpYVBsYXllclByaXZhdGVS
ZW1vdGU6OnJlcXVpcmVzVGV4dFRyYWNrUmVwcmVzZW50YXRpb24gY29uc3QpOgorICAgICAgICAo
V2ViS2l0OjpNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OnNldFRleHRUcmFja1JlcHJlc2VudGF0
aW9uKToKKyAgICAgICAgKFdlYktpdDo6TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpzeW5jVGV4
dFRyYWNrQm91bmRzKToKKyAgICAgICAgKFdlYktpdDo6TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3Rl
Ojp0cmFja3NDaGFuZ2VkKToKKyAgICAgICAgKFdlYktpdDo6TWVkaWFQbGF5ZXJQcml2YXRlUmVt
b3RlOjpzaW11bGF0ZUF1ZGlvSW50ZXJydXB0aW9uKToKKyAgICAgICAgKFdlYktpdDo6TWVkaWFQ
bGF5ZXJQcml2YXRlUmVtb3RlOjpiZWdpblNpbXVsYXRlZEhEQ1BFcnJvcik6CisgICAgICAgIChX
ZWJLaXQ6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6ZW5kU2ltdWxhdGVkSERDUEVycm9yKToK
KyAgICAgICAgKFdlYktpdDo6TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpsYW5ndWFnZU9mUHJp
bWFyeUF1ZGlvVHJhY2sgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpNZWRpYVBsYXllclByaXZh
dGVSZW1vdGU6OmV4dHJhTWVtb3J5Q29zdCBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6Ok1lZGlh
UGxheWVyUHJpdmF0ZVJlbW90ZTo6ZmlsZVNpemUgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpN
ZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OmVuZGVkIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6
TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjp2aWRlb1BsYXliYWNrUXVhbGl0eU1ldHJpY3MpOgor
ICAgICAgICAoV2ViS2l0OjpNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6Om5vdGlmeVRyYWNrTW9k
ZUNoYW5nZWQpOgorICAgICAgICAoV2ViS2l0OjpNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6Om5v
dGlmeUFjdGl2ZVNvdXJjZUJ1ZmZlcnNDaGFuZ2VkKToKKyAgICAgICAgKFdlYktpdDo6TWVkaWFQ
bGF5ZXJQcml2YXRlUmVtb3RlOjpzZXRTaG91bGREaXNhYmxlU2xlZXApOgorICAgICAgICAoV2Vi
S2l0OjpNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OmFwcGxpY2F0aW9uV2lsbFJlc2lnbkFjdGl2
ZSk6CisgICAgICAgIChXZWJLaXQ6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6YXBwbGljYXRp
b25EaWRCZWNvbWVBY3RpdmUpOgorICAgICAgICAoV2ViS2l0OjpNZWRpYVBsYXllclByaXZhdGVS
ZW1vdGU6OnBlcmZvcm1UYXNrQXRNZWRpYVRpbWUpOgorICAgICAgICAoV2ViS2l0OjpNZWRpYVBs
YXllclByaXZhdGVSZW1vdGU6OnNob3VsZElnbm9yZUludHJpbnNpY1NpemUpOgorICAgICAgICAo
V2ViS2l0OjpNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OmxvZ0NoYW5uZWwgY29uc3QpOgorICAg
ICAgICAqIFdlYlByb2Nlc3MvR1BVL21lZGlhL01lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZS5oOiBB
ZGRlZC4KKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9tZWRpYS9NZWRpYVBsYXllclByaXZhdGVS
ZW1vdGVJZGVudGlmaWVyLmg6IEFkZGVkLgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL21lZGlh
L1JlbW90ZU1lZGlhUGxheWVyTWFuYWdlci5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpN
ZWRpYVBsYXllclJlbW90ZUZhY3Rvcnk6Ok1lZGlhUGxheWVyUmVtb3RlRmFjdG9yeSk6CisgICAg
ICAgIChXZWJLaXQ6OlJlbW90ZU1lZGlhUGxheWVyTWFuYWdlcjo6UmVtb3RlTWVkaWFQbGF5ZXJN
YW5hZ2VyKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyOjp+UmVt
b3RlTWVkaWFQbGF5ZXJNYW5hZ2VyKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTWVkaWFQbGF5
ZXJNYW5hZ2VyOjpzdXBwbGVtZW50TmFtZSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZU1lZGlh
UGxheWVyTWFuYWdlcjo6aW5pdGlhbGl6ZSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZU1lZGlh
UGxheWVyTWFuYWdlcjo6Y3JlYXRlUmVtb3RlTWVkaWFQbGF5ZXIpOgorICAgICAgICAoV2ViS2l0
OjpSZW1vdGVNZWRpYVBsYXllck1hbmFnZXI6OmdldFN1cHBvcnRlZFR5cGVzKToKKyAgICAgICAg
KFdlYktpdDo6UmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyOjpzdXBwb3J0c1R5cGVBbmRDb2RlY3Mp
OgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVNZWRpYVBsYXllck1hbmFnZXI6OnN1cHBvcnRzS2V5
U3lzdGVtKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyOjpvcmln
aW5zSW5NZWRpYUNhY2hlKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTWVkaWFQbGF5ZXJNYW5h
Z2VyOjpjbGVhck1lZGlhQ2FjaGUpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVNZWRpYVBsYXll
ck1hbmFnZXI6OmNsZWFyTWVkaWFDYWNoZUZvck9yaWdpbnMpOgorICAgICAgICAoV2ViS2l0OjpS
ZW1vdGVNZWRpYVBsYXllck1hbmFnZXI6Om5ldHdvcmtTdGF0ZUNoYW5nZWQpOgorICAgICAgICAo
V2ViS2l0OjpSZW1vdGVNZWRpYVBsYXllck1hbmFnZXI6OnVwZGF0ZVByZWZlcmVuY2VzKToKKyAg
ICAgICAgKFdlYktpdDo6UmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyOjpncHVQcm9jZXNzQ29ubmVj
dGlvbiBjb25zdCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlTWVkaWFQ
bGF5ZXJNYW5hZ2VyLmg6IEFkZGVkLgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL21lZGlhL1Jl
bW90ZU1lZGlhUGxheWVyTWFuYWdlci5tZXNzYWdlcy5pbjogQWRkZWQuCisgICAgICAgICogV2Vi
UHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjp1
cGRhdGVQcmVmZXJlbmNlcyk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcDoK
KwogMjAxOS0xMi0xMCAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgogCiAgICAgICAg
IFVucmV2aWV3ZWQsIGRyb3AgZGVidWcgYXNzZXJ0aW9uIGluIEluc3BlY3RvclRhcmdldFByb3h5
OjpkaWRDb21taXRQcm92aXNpb25hbFRhcmdldCgpIHRoYXQgaXMgaGl0dGluZyBhZnRlciByMjUz
MzM3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oKaW5kZXggMDNlNmY1NDMzYmY2ZjY3ZWJjNWY0OWZlZDBhOTUwMTJkNGJlNGJmOS4uMGNhZmRj
MWVhMDBiZTdmZGUwZWQyMzA3NjYxYTIxMDhhZTBjZDM0ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJD
b3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTA0LDYgKzEwNCw3IEBA
CiAJCTA3MUU0OTZFMUFENUFBMEQwMDhBNTBCNCAvKiBNZWRpYVBsYXliYWNrVGFyZ2V0TWFjLm1t
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDcxRTQ5NkQx
QUQ1QUEwRDAwOEE1MEI0IC8qIE1lZGlhUGxheWJhY2tUYXJnZXRNYWMubW0gKi87IH07CiAJCTA3
MUU0OTcwMUFENUFCNUUwMDhBNTBCNCAvKiBNZWRpYVBsYXliYWNrVGFyZ2V0TWFjLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwNzFFNDk2RjFBRDVBQjVF
MDA4QTUwQjQgLyogTWVkaWFQbGF5YmFja1RhcmdldE1hYy5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTA3MjBCMEExMTREMzMyMzUwMDY0Mjk1NSAv
KiBHZW5lcmljRXZlbnRRdWV1ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gMDcyMEIwOUYxNEQzMzIzNTAwNjQyOTU1IC8qIEdlbmVyaWNFdmVudFF1ZXVl
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJMDcy
NUVGQTkyMzlBRDc5MzAwQTUzOEE5IC8qIE1lZGlhUGxheWVyUHJpdmF0ZS5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDc5RjVFNEIwRjNCRUJFQTAwNUUw
NzgyIC8qIE1lZGlhUGxheWVyUHJpdmF0ZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CiAJCTA3Mjc3RTREMTdEMDE4Q0MwMDE1NTM0RCAvKiBKU01lZGlh
U3RyZWFtLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAw
NzI3N0U0MTE3RDAxOENDMDAxNTUzNEQgLyogSlNNZWRpYVN0cmVhbS5oICovOyB9OwogCQkwNzI3
N0U0RDE3RDAxOENDMDAxNTUzNEUgLyogSlNDYW52YXNDYXB0dXJlTWVkaWFTdHJlYW1UcmFjay5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDcyNzdFNDEx
N0QwMThDQzAwMTU1MzRFIC8qIEpTQ2FudmFzQ2FwdHVyZU1lZGlhU3RyZWFtVHJhY2suaCAqLzsg
fTsKIAkJMDcyNzdFNEYxN0QwMThDQzAwMTU1MzREIC8qIEpTTWVkaWFTdHJlYW1BdWRpb0Rlc3Rp
bmF0aW9uTm9kZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gMDcyNzdFNDMxN0QwMThDQzAwMTU1MzREIC8qIEpTTWVkaWFTdHJlYW1BdWRpb0Rlc3RpbmF0
aW9uTm9kZS5oICovOyB9OwpAQCAtMjA0LDYgKzIwNSw3IEBACiAJCTA3QjVBMkRDMTQ2NDMyMEEw
MEE4MUVDRSAvKiBKU1RleHRUcmFja0xpc3QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDA3QjVBMkRBMTQ2NDMyMEEwMEE4MUVDRSAvKiBKU1RleHRUcmFj
a0xpc3QuaCAqLzsgfTsKIAkJMDdCNzExNkQxRDg5OUU2MzAwOUYwRkZCIC8qIENhcHR1cmVEZXZp
Y2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3Qjcx
MTZBMUQ4OTlFNjMwMDlGMEZGQiAvKiBDYXB0dXJlRGV2aWNlLmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMDdCNzExNkYxRDg5OUU2MzAwOUYwRkZC
IC8qIENhcHR1cmVEZXZpY2VNYW5hZ2VyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSAwN0I3MTE2QzFEODk5RTYzMDA5RjBGRkIgLyogQ2FwdHVyZURldmlj
ZU1hbmFnZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OworCQkwN0JBRjM0NDIzOUVENTY5MDA0NDI1N0UgLyogTWVkaWFQbGF5ZXJFbmdpbmVJZGVudGlm
aWVycy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDdC
QUYzNDMyMzlFRDFDQzAwNDQyNTdFIC8qIE1lZGlhUGxheWVyRW5naW5lSWRlbnRpZmllcnMuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkwN0MwNDZD
NDFFNDI1MDhCMDA3MjAxRTcgLyogQ0FBdWRpb1N0cmVhbURlc2NyaXB0aW9uLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwNzNCODc1ODFFNDBEQ0ZEMDA3
MUMwRUMgLyogQ0FBdWRpb1N0cmVhbURlc2NyaXB0aW9uLmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMDdDMDQ2Q0IxRTQyNjQxMzAwNzIwMUU3IC8q
IEF1ZGlvU3RyZWFtRGVzY3JpcHRpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDA3M0I4NzU2MUU0MERDRTUwMDcxQzBFQyAvKiBBdWRpb1N0cmVhbURl
c2NyaXB0aW9uLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKIAkJMDdDMUMwRTIxQkZCNjAwMTAwQkQyMjU2IC8qIE1lZGlhVHJhY2tTdXBwb3J0ZWRDb25z
dHJhaW50cy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
MDdDMUMwRTAxQkZCNjAwMTAwQkQyMjU2IC8qIE1lZGlhVHJhY2tTdXBwb3J0ZWRDb25zdHJhaW50
cy5oICovOyB9OwpAQCAtNTUzNSw2ICs1NTM3LDcgQEAKIAkJMDdCNzExNkExRDg5OUU2MzAwOUYw
RkZCIC8qIENhcHR1cmVEZXZpY2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
Q2FwdHVyZURldmljZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwN0I3MTE2QjFE
ODk5RTYzMDA5RjBGRkIgLyogQ2FwdHVyZURldmljZU1hbmFnZXIuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQ2FwdHVyZURldmljZU1hbmFnZXIuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQkwN0I3MTE2QzFEODk5RTYzMDA5RjBGRkIgLyogQ2FwdHVy
ZURldmljZU1hbmFnZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ2FwdHVy
ZURldmljZU1hbmFnZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMDdCQUYzNDMy
MzlFRDFDQzAwNDQyNTdFIC8qIE1lZGlhUGxheWVyRW5naW5lSWRlbnRpZmllcnMuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gTWVkaWFQbGF5ZXJFbmdpbmVJZGVudGlmaWVycy5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQkwN0MwNDZDNjFFNDI1MTJGMDA3MjAxRTcgLyogQXVkaW9UcmFja1ByaXZh
dGVNZWRpYVN0cmVhbUNvY29hLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEF1
ZGlvVHJhY2tQcml2YXRlTWVkaWFTdHJlYW1Db2NvYS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQkwN0MxQzBFMDFCRkI2MDAxMDBCRDIyNTYgLyogTWVkaWFUcmFja1N1cHBvcnRlZENv
bnN0cmFpbnRzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1lZGlhVHJhY2tT
dXBwb3J0ZWRDb25zdHJhaW50cy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwN0Mx
QzBFMTFCRkI2MDAxMDBCRDIyNTYgLyogTWVkaWFUcmFja1N1cHBvcnRlZENvbnN0cmFpbnRzLmlk
bCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBNZWRpYVRyYWNrU3VwcG9ydGVkQ29uc3RyYWludHMu
aWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMjUwNjIsNiArMjUwNjUsNyBAQAog
CQkJCTA3OEU0M0Q4MUFCQjZDN0UwMDFDMkZBNiAvKiBNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2Vy
LmggKi8sCiAJCQkJRTRCNDFFMEMwQ0JGOTBCRDAwQUYyRUNFIC8qIE1lZGlhUGxheWVyLmNwcCAq
LywKIAkJCQlFNEI0MUUwRDBDQkY5MEJEMDBBRjJFQ0UgLyogTWVkaWFQbGF5ZXIuaCAqLywKKwkJ
CQkwN0JBRjM0MzIzOUVEMUNDMDA0NDI1N0UgLyogTWVkaWFQbGF5ZXJFbmdpbmVJZGVudGlmaWVy
cy5oICovLAogCQkJCUNENTIwOUUzMUIwQkQ4MzgwMDc3MTg0RSAvKiBNZWRpYVBsYXllckVudW1z
LmggKi8sCiAJCQkJMDc5RjVFNEIwRjNCRUJFQTAwNUUwNzgyIC8qIE1lZGlhUGxheWVyUHJpdmF0
ZS5oICovLAogCQkJCUNENjQxRUIxMTgxOEY1RUQwMEVFNEM0MSAvKiBNZWRpYVNvdXJjZVByaXZh
dGUuaCAqLywKQEAgLTMxMzc4LDcgKzMxMzgyLDkgQEAKIAkJCQkwNzhFNDNERDFBQkI2RjZGMDAx
QzJGQTYgLyogTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlck1hYy5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJMDc3QjY0MTMxQjk0RjEyRTAwM0U5QUQ1IC8qIE1lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJN
b2NrLmggaW4gSGVhZGVycyAqLywKIAkJCQlFNDQ2MTNFNDBDRDY4MUEyMDBGQURBNzUgLyogTWVk
aWFQbGF5ZXIuaCBpbiBIZWFkZXJzICovLAorCQkJCTA3QkFGMzQ0MjM5RUQ1NjkwMDQ0MjU3RSAv
KiBNZWRpYVBsYXllckVuZ2luZUlkZW50aWZpZXJzLmggaW4gSGVhZGVycyAqLywKIAkJCQlDRDUy
MDlFNDFCMEJEODM4MDA3NzE4NEUgLyogTWVkaWFQbGF5ZXJFbnVtcy5oIGluIEhlYWRlcnMgKi8s
CisJCQkJMDcyNUVGQTkyMzlBRDc5MzAwQTUzOEE5IC8qIE1lZGlhUGxheWVyUHJpdmF0ZS5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJMDc2RjBEMEUxMkI4MTkyNzAwQzI2QUE0IC8qIE1lZGlhUGxheWVy
UHJpdmF0ZUFWRm91bmRhdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJREY5QUZENzIxM0ZDMzFE
ODAwMTVGRUI3IC8qIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMuaCBpbiBIZWFk
ZXJzICovLAogCQkJCUNEQzhCNUEzMTgwNDYzNDcwMDE2RTY4NSAvKiBNZWRpYVBsYXllclByaXZh
dGVNZWRpYVNvdXJjZUFWRk9iakMuaCBpbiBIZWFkZXJzICovLApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vQ29udGVudFR5cGUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L0NvbnRlbnRUeXBlLmgKaW5kZXggYzgyYjViNzE5N2M5ZTE1ZDFlMmY1NDdmZDU2NDFmYzVmNGVj
NWVjZi4uOTBkYzk3MDQ2NzA4Mzk0ZGEwNjBlZmQxYWQzNjc2MTc5YjU3OWZhNiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vQ29udGVudFR5cGUuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9Db250ZW50VHlwZS5oCkBAIC0zMyw4ICszMyw4IEBAIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAogY2xhc3MgQ29udGVudFR5cGUgewogcHVibGljOgotICAgIGV4cGxpY2l0IENv
bnRlbnRUeXBlKFN0cmluZyYmIHR5cGUpOwotICAgIGV4cGxpY2l0IENvbnRlbnRUeXBlKGNvbnN0
IFN0cmluZyYgdHlwZSk7CisgICAgV0VCQ09SRV9FWFBPUlQgZXhwbGljaXQgQ29udGVudFR5cGUo
U3RyaW5nJiYgdHlwZSk7CisgICAgV0VCQ09SRV9FWFBPUlQgZXhwbGljaXQgQ29udGVudFR5cGUo
Y29uc3QgU3RyaW5nJiB0eXBlKTsKICAgICBDb250ZW50VHlwZSgpID0gZGVmYXVsdDsKIAogICAg
IHN0YXRpYyBjb25zdCBTdHJpbmcmIGNvZGVjc1BhcmFtZXRlcigpOwpAQCAtNDksNiArNDksMjUg
QEAgcHVibGljOgogCiAgICAgU3RyaW5nIHRvSlNPTlN0cmluZygpIGNvbnN0OwogCisjaWYgRU5B
QkxFKEdQVV9QUk9DRVNTKQorICAgIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+CisgICAgdm9pZCBl
bmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QKKyAgICB7CisgICAgICAgIGVuY29kZXIgPDwg
bV90eXBlOworICAgIH0KKworICAgIHRlbXBsYXRlIDxjbGFzcyBEZWNvZGVyPgorICAgIHN0YXRp
YyBPcHRpb25hbDxDb250ZW50VHlwZT4gZGVjb2RlKERlY29kZXImIGRlY29kZXIpCisgICAgewor
ICAgICAgICBPcHRpb25hbDxTdHJpbmc+IHR5cGU7CisgICAgICAgIGRlY29kZXIgPj4gdHlwZTsK
KyAgICAgICAgaWYgKCF0eXBlKQorICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKwor
ICAgICAgICByZXR1cm4geyBDb250ZW50VHlwZShXVEZNb3ZlKCp0eXBlKSkgfTsKKyAgICB9Cisj
ZW5kaWYKKwogcHJpdmF0ZToKICAgICBTdHJpbmcgbV90eXBlOwogfTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmNwcAppbmRleCA3ZDViY2NkOTBi
MTc5NGM3MTZlZjNlYjFkMTk5NmQ2M2E3NzU1MDgwLi41MmFkM2E0YjQ3MGY1NDU3NzEwYmMwOTdm
OGUyYjJlMjhkM2Y5NjFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9NZWRpYVBsYXllci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvTWVkaWFQbGF5ZXIuY3BwCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykg
MjAwNy0yMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAo
QykgMjAwNy0yMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzQsNiArMzQsNyBAQAogI2luY2x1ZGUgIkludFJlY3Qu
aCIKICNpbmNsdWRlICJMb2dnaW5nLmgiCiAjaW5jbHVkZSAiTUlNRVR5cGVSZWdpc3RyeS5oIgor
I2luY2x1ZGUgIk1lZGlhUGxheWVyRW5naW5lSWRlbnRpZmllcnMuaCIKICNpbmNsdWRlICJNZWRp
YVBsYXllclByaXZhdGUuaCIKICNpbmNsdWRlICJQbGF0Zm9ybVRpbWVSYW5nZXMuaCIKICNpbmNs
dWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KQEAgLTkwLDE0ICs5MSw2IEBACiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAotI2lmICFSRUxFQVNFX0xPR19ESVNBQkxFRAotc3RhdGljIFJlZlB0cjxM
b2dnZXI+JiBudWxsTG9nZ2VyKCkKLXsKLSAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8UmVmUHRy
PExvZ2dlcj4+IGxvZ2dlcjsKLSAgICByZXR1cm4gbG9nZ2VyOwotfQotI2VuZGlmCi0KIC8vIGEg
bnVsbCBwbGF5ZXIgdG8gbWFrZSBNZWRpYVBsYXllciBsb2dpYyBzaW1wbGVyCiAKIGNsYXNzIE51
bGxNZWRpYVBsYXllclByaXZhdGUgZmluYWwgOiBwdWJsaWMgTWVkaWFQbGF5ZXJQcml2YXRlSW50
ZXJmYWNlIHsKQEAgLTE2Niw4ICsxNTksMjIgQEAgcHVibGljOgogICAgIGJvb2wgaGFzU2luZ2xl
U2VjdXJpdHlPcmlnaW4oKSBjb25zdCBmaW5hbCB7IHJldHVybiB0cnVlOyB9CiB9OwogCisjaWYg
IVJFTEVBU0VfTE9HX0RJU0FCTEVECitzdGF0aWMgUmVmUHRyPExvZ2dlcj4mIG51bGxMb2dnZXIo
KQoreworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxSZWZQdHI8TG9nZ2VyPj4gbG9nZ2VyOwor
ICAgIHJldHVybiBsb2dnZXI7Cit9CisjZW5kaWYKKworc3RhdGljIGNvbnN0IFZlY3RvcjxXZWJD
b3JlOjpDb250ZW50VHlwZT4mIG51bGxDb250ZW50VHlwZVZlY3RvcigpCit7CisgICAgc3RhdGlj
IE5ldmVyRGVzdHJveWVkPFZlY3RvcjxXZWJDb3JlOjpDb250ZW50VHlwZT4+IHZlY3RvcjsKKyAg
ICByZXR1cm4gdmVjdG9yOworfQorCiBjbGFzcyBOdWxsTWVkaWFQbGF5ZXJDbGllbnQgOiBwdWJs
aWMgTWVkaWFQbGF5ZXJDbGllbnQgewotcHVibGljOgorcHJpdmF0ZToKICNpZiAhUkVMRUFTRV9M
T0dfRElTQUJMRUQKICAgICBjb25zdCBMb2dnZXImIG1lZGlhUGxheWVyTG9nZ2VyKCkgZmluYWwK
ICAgICB7CkBAIC0xNzksOCArMTg2LDExIEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuICpudWxs
TG9nZ2VyKCkuZ2V0KCk7CiAgICAgfQogI2VuZGlmCisKKyAgICBjb25zdCBWZWN0b3I8V2ViQ29y
ZTo6Q29udGVudFR5cGU+JiBtZWRpYUNvbnRlbnRUeXBlc1JlcXVpcmluZ0hhcmR3YXJlU3VwcG9y
dCgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG51bGxDb250ZW50VHlwZVZlY3RvcigpOyB9CiB9Owog
CisKIGNvbnN0IFZlY3RvcjxDb250ZW50VHlwZT4mIE1lZGlhUGxheWVyQ2xpZW50OjptZWRpYUNv
bnRlbnRUeXBlc1JlcXVpcmluZ0hhcmR3YXJlU3VwcG9ydCgpIGNvbnN0CiB7CiAgICAgc3RhdGlj
IE5ldmVyRGVzdHJveWVkPFZlY3RvcjxDb250ZW50VHlwZT4+IGNvbnRlbnRUeXBlczsKQEAgLTE5
NSwxNyArMjA1LDcgQEAgc3RhdGljIE1lZGlhUGxheWVyQ2xpZW50JiBudWxsTWVkaWFQbGF5ZXJD
bGllbnQoKQogCiAvLyBlbmdpbmUgc3VwcG9ydAogCi1zdHJ1Y3QgTWVkaWFQbGF5ZXJGYWN0b3J5
IHsKLSAgICBDcmVhdGVNZWRpYUVuZ2luZVBsYXllciBjb25zdHJ1Y3RvcjsKLSAgICBNZWRpYUVu
Z2luZVN1cHBvcnRlZFR5cGVzIGdldFN1cHBvcnRlZFR5cGVzOwotICAgIE1lZGlhRW5naW5lU3Vw
cG9ydHNUeXBlIHN1cHBvcnRzVHlwZUFuZENvZGVjczsKLSAgICBNZWRpYUVuZ2luZU9yaWdpbnNJ
bk1lZGlhQ2FjaGUgb3JpZ2luc0luTWVkaWFDYWNoZTsKLSAgICBNZWRpYUVuZ2luZUNsZWFyTWVk
aWFDYWNoZSBjbGVhck1lZGlhQ2FjaGU7Ci0gICAgTWVkaWFFbmdpbmVDbGVhck1lZGlhQ2FjaGVG
b3JPcmlnaW5zIGNsZWFyTWVkaWFDYWNoZUZvck9yaWdpbnM7Ci0gICAgTWVkaWFFbmdpbmVTdXBw
b3J0c0tleVN5c3RlbSBzdXBwb3J0c0tleVN5c3RlbTsKLX07Ci0KLXN0YXRpYyB2b2lkIGFkZE1l
ZGlhRW5naW5lKENyZWF0ZU1lZGlhRW5naW5lUGxheWVyJiYsIE1lZGlhRW5naW5lU3VwcG9ydGVk
VHlwZXMsIE1lZGlhRW5naW5lU3VwcG9ydHNUeXBlLCBNZWRpYUVuZ2luZU9yaWdpbnNJbk1lZGlh
Q2FjaGUsIE1lZGlhRW5naW5lQ2xlYXJNZWRpYUNhY2hlLCBNZWRpYUVuZ2luZUNsZWFyTWVkaWFD
YWNoZUZvck9yaWdpbnMsIE1lZGlhRW5naW5lU3VwcG9ydHNLZXlTeXN0ZW0pOworc3RhdGljIHZv
aWQgYWRkTWVkaWFFbmdpbmUoc3RkOjp1bmlxdWVfcHRyPE1lZGlhUGxheWVyRmFjdG9yeT4pOwog
CiBzdGF0aWMgTG9jayBtZWRpYUVuZ2luZVZlY3RvckxvY2s7CiAKQEAgLTIxNSwyMSArMjE1LDM3
IEBAIHN0YXRpYyBib29sJiBoYXZlTWVkaWFFbmdpbmVzVmVjdG9yKCkKICAgICByZXR1cm4gaGF2
ZVZlY3RvcjsKIH0KIAotc3RhdGljIFZlY3RvcjxNZWRpYVBsYXllckZhY3Rvcnk+JiBtdXRhYmxl
SW5zdGFsbGVkTWVkaWFFbmdpbmVzVmVjdG9yKCkKK3N0YXRpYyBWZWN0b3I8c3RkOjp1bmlxdWVf
cHRyPE1lZGlhUGxheWVyRmFjdG9yeT4+JiBtdXRhYmxlSW5zdGFsbGVkTWVkaWFFbmdpbmVzVmVj
dG9yKCkKIHsKLSAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8VmVjdG9yPE1lZGlhUGxheWVyRmFj
dG9yeT4+IGluc3RhbGxlZEVuZ2luZXM7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFZlY3Rv
cjxzdGQ6OnVuaXF1ZV9wdHI8TWVkaWFQbGF5ZXJGYWN0b3J5Pj4+IGluc3RhbGxlZEVuZ2luZXM7
CiAgICAgcmV0dXJuIGluc3RhbGxlZEVuZ2luZXM7CiB9CiAKK3N0YXRpYyBSZW1vdGVNZWRpYVBs
YXllclN1cHBvcnQ6OlJlZ2lzdGVyUmVtb3RlUGxheWVyQ2FsbGJhY2smIHJlZ2lzdGVyUmVtb3Rl
UGxheWVyQ2FsbGJhY2soKQoreworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxSZW1vdGVNZWRp
YVBsYXllclN1cHBvcnQ6OlJlZ2lzdGVyUmVtb3RlUGxheWVyQ2FsbGJhY2s+IGNhbGxiYWNrOwor
ICAgIHJldHVybiBjYWxsYmFjazsKK30KKwordm9pZCBSZW1vdGVNZWRpYVBsYXllclN1cHBvcnQ6
OnNldFJlZ2lzdGVyUmVtb3RlUGxheWVyQ2FsbGJhY2soUmVnaXN0ZXJSZW1vdGVQbGF5ZXJDYWxs
YmFjayYmIGNhbGxiYWNrKQoreworICAgIHJlZ2lzdGVyUmVtb3RlUGxheWVyQ2FsbGJhY2soKSA9
IFdURk1vdmUoY2FsbGJhY2spOworfQorCiBzdGF0aWMgdm9pZCBidWlsZE1lZGlhRW5naW5lc1Zl
Y3RvcigpCiB7CiAgICAgQVNTRVJUKG1lZGlhRW5naW5lVmVjdG9yTG9jay5pc0xvY2tlZCgpKTsK
IAogI2lmIFVTRShBVkZPVU5EQVRJT04pCisgICAgYXV0byYgcmVnaXN0ZXJSZW1vdGVFbmdpbmUg
PSByZWdpc3RlclJlbW90ZVBsYXllckNhbGxiYWNrKCk7CisKICAgICBpZiAoRGVwcmVjYXRlZEds
b2JhbFNldHRpbmdzOjppc0FWRm91bmRhdGlvbkVuYWJsZWQoKSkgewogCiAjaWYgUExBVEZPUk0o
Q09DT0EpCi0gICAgICAgIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OnJlZ2lz
dGVyTWVkaWFFbmdpbmUoYWRkTWVkaWFFbmdpbmUpOworICAgICAgICBpZiAocmVnaXN0ZXJSZW1v
dGVFbmdpbmUpCisgICAgICAgICAgICByZWdpc3RlclJlbW90ZUVuZ2luZShhZGRNZWRpYUVuZ2lu
ZSwgTWVkaWFQbGF5ZXJFbmdpbmVJZGVudGlmaWVyczo6YXZGb3VuZGF0aW9uRW5naW5lSWRlbnRp
ZmllcigpKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgTWVkaWFQbGF5ZXJQcml2YXRlQVZG
b3VuZGF0aW9uT2JqQzo6cmVnaXN0ZXJNZWRpYUVuZ2luZShhZGRNZWRpYUVuZ2luZSk7CiAjZW5k
aWYKIAogI2lmIEVOQUJMRShNRURJQV9TT1VSQ0UpCkBAIC0yNjUsNyArMjgxLDcgQEAgc3RhdGlj
IHZvaWQgYnVpbGRNZWRpYUVuZ2luZXNWZWN0b3IoKQogICAgIGhhdmVNZWRpYUVuZ2luZXNWZWN0
b3IoKSA9IHRydWU7CiB9CiAKLXN0YXRpYyBjb25zdCBWZWN0b3I8TWVkaWFQbGF5ZXJGYWN0b3J5
PiYgaW5zdGFsbGVkTWVkaWFFbmdpbmVzKCkKK3N0YXRpYyBjb25zdCBWZWN0b3I8c3RkOjp1bmlx
dWVfcHRyPE1lZGlhUGxheWVyRmFjdG9yeT4+JiBpbnN0YWxsZWRNZWRpYUVuZ2luZXMoKQogewog
ICAgIHsKICAgICAgICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhtZWRpYUVuZ2luZVZlY3Rvckxv
Y2spOwpAQCAtMjc2LDE0ICsyOTIsOSBAQCBzdGF0aWMgY29uc3QgVmVjdG9yPE1lZGlhUGxheWVy
RmFjdG9yeT4mIGluc3RhbGxlZE1lZGlhRW5naW5lcygpCiAgICAgcmV0dXJuIG11dGFibGVJbnN0
YWxsZWRNZWRpYUVuZ2luZXNWZWN0b3IoKTsKIH0KIAotc3RhdGljIHZvaWQgYWRkTWVkaWFFbmdp
bmUoQ3JlYXRlTWVkaWFFbmdpbmVQbGF5ZXImJiBjb25zdHJ1Y3RvciwgTWVkaWFFbmdpbmVTdXBw
b3J0ZWRUeXBlcyBnZXRTdXBwb3J0ZWRUeXBlcywgTWVkaWFFbmdpbmVTdXBwb3J0c1R5cGUgc3Vw
cG9ydHNUeXBlLAotICAgIE1lZGlhRW5naW5lT3JpZ2luc0luTWVkaWFDYWNoZSBvcmlnaW5zSW5N
ZWRpYUNhY2hlLCBNZWRpYUVuZ2luZUNsZWFyTWVkaWFDYWNoZSBjbGVhck1lZGlhQ2FjaGUsIE1l
ZGlhRW5naW5lQ2xlYXJNZWRpYUNhY2hlRm9yT3JpZ2lucyBjbGVhck1lZGlhQ2FjaGVGb3JPcmln
aW5zLCBNZWRpYUVuZ2luZVN1cHBvcnRzS2V5U3lzdGVtIHN1cHBvcnRzS2V5U3lzdGVtKQorc3Rh
dGljIHZvaWQgYWRkTWVkaWFFbmdpbmUoc3RkOjp1bmlxdWVfcHRyPE1lZGlhUGxheWVyRmFjdG9y
eT4gZmFjdG9yeSkKIHsKLSAgICBBU1NFUlQoY29uc3RydWN0b3IpOwotICAgIEFTU0VSVChnZXRT
dXBwb3J0ZWRUeXBlcyk7Ci0gICAgQVNTRVJUKHN1cHBvcnRzVHlwZSk7Ci0KLSAgICBtdXRhYmxl
SW5zdGFsbGVkTWVkaWFFbmdpbmVzVmVjdG9yKCkuYXBwZW5kKE1lZGlhUGxheWVyRmFjdG9yeSB7
IFdURk1vdmUoY29uc3RydWN0b3IpLCBnZXRTdXBwb3J0ZWRUeXBlcywgc3VwcG9ydHNUeXBlLCBv
cmlnaW5zSW5NZWRpYUNhY2hlLCBjbGVhck1lZGlhQ2FjaGUsIGNsZWFyTWVkaWFDYWNoZUZvck9y
aWdpbnMsIHN1cHBvcnRzS2V5U3lzdGVtIH0pOworICAgIG11dGFibGVJbnN0YWxsZWRNZWRpYUVu
Z2luZXNWZWN0b3IoKS5hcHBlbmQoV1RGTW92ZShmYWN0b3J5KSk7CiB9CiAKIHN0YXRpYyBjb25z
dCBBdG9tU3RyaW5nJiBhcHBsaWNhdGlvbk9jdGV0U3RyZWFtKCkKQEAgLTI5OCw2ICszMDksMjEg
QEAgc3RhdGljIGNvbnN0IEF0b21TdHJpbmcmIHRleHRQbGFpbigpCiAgICAgcmV0dXJuIHRleHRQ
bGFpbjsKIH0KIAorY29uc3QgTWVkaWFQbGF5ZXJGYWN0b3J5KiBNZWRpYVBsYXllcjo6bWVkaWFF
bmdpbmUoY29uc3QgU3RyaW5nJiBpZGVudGlmaWVyKQoreworICAgIGF1dG8mIGVuZ2luZXMgPSBp
bnN0YWxsZWRNZWRpYUVuZ2luZXMoKTsKKyAgICBhdXRvIGN1cnJlbnRJbmRleCA9IGVuZ2luZXMu
ZmluZE1hdGNoaW5nKFtpZGVudGlmaWVyXSAoYXV0byYgZW5naW5lKSB7CisgICAgICAgIHJldHVy
biBlbmdpbmUtPmlkZW50aWZpZXIoKSA9PSBpZGVudGlmaWVyOworICAgIH0pOworCisgICAgaWYg
KGN1cnJlbnRJbmRleCA9PSBub3RGb3VuZCkgeworICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQo
KTsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgfQorCisgICAgcmV0dXJuIGVuZ2luZXNb
Y3VycmVudEluZGV4ICsgMV0uZ2V0KCk7Cit9CisKIHN0YXRpYyBjb25zdCBNZWRpYVBsYXllckZh
Y3RvcnkqIGJlc3RNZWRpYUVuZ2luZUZvclN1cHBvcnRQYXJhbWV0ZXJzKGNvbnN0IE1lZGlhRW5n
aW5lU3VwcG9ydFBhcmFtZXRlcnMmIHBhcmFtZXRlcnMsIGNvbnN0IE1lZGlhUGxheWVyRmFjdG9y
eSogY3VycmVudCA9IG51bGxwdHIpCiB7CiAgICAgaWYgKHBhcmFtZXRlcnMudHlwZS5pc0VtcHR5
KCkgJiYgIXBhcmFtZXRlcnMuaXNNZWRpYVNvdXJjZSAmJiAhcGFyYW1ldGVycy5pc01lZGlhU3Ry
ZWFtKQpAQCAtMzE1LDM0ICszNDEsNDYgQEAgc3RhdGljIGNvbnN0IE1lZGlhUGxheWVyRmFjdG9y
eSogYmVzdE1lZGlhRW5naW5lRm9yU3VwcG9ydFBhcmFtZXRlcnMoY29uc3QgTWVkaWEKICAgICBN
ZWRpYVBsYXllcjo6U3VwcG9ydHNUeXBlIHN1cHBvcnRlZCA9IE1lZGlhUGxheWVyOjpJc05vdFN1
cHBvcnRlZDsKICAgICBmb3IgKGF1dG8mIGVuZ2luZSA6IGluc3RhbGxlZE1lZGlhRW5naW5lcygp
KSB7CiAgICAgICAgIGlmIChjdXJyZW50KSB7Ci0gICAgICAgICAgICBpZiAoY3VycmVudCA9PSAm
ZW5naW5lKQorICAgICAgICAgICAgaWYgKGN1cnJlbnQgPT0gZW5naW5lLmdldCgpKQogICAgICAg
ICAgICAgICAgIGN1cnJlbnQgPSBudWxscHRyOwogICAgICAgICAgICAgY29udGludWU7CiAgICAg
ICAgIH0KLSAgICAgICAgTWVkaWFQbGF5ZXI6OlN1cHBvcnRzVHlwZSBlbmdpbmVTdXBwb3J0ID0g
ZW5naW5lLnN1cHBvcnRzVHlwZUFuZENvZGVjcyhwYXJhbWV0ZXJzKTsKKyAgICAgICAgTWVkaWFQ
bGF5ZXI6OlN1cHBvcnRzVHlwZSBlbmdpbmVTdXBwb3J0ID0gZW5naW5lLT5zdXBwb3J0c1R5cGVB
bmRDb2RlY3MocGFyYW1ldGVycyk7CiAgICAgICAgIGlmIChlbmdpbmVTdXBwb3J0ID4gc3VwcG9y
dGVkKSB7CiAgICAgICAgICAgICBzdXBwb3J0ZWQgPSBlbmdpbmVTdXBwb3J0OwotICAgICAgICAg
ICAgZm91bmRFbmdpbmUgPSAmZW5naW5lOworICAgICAgICAgICAgZm91bmRFbmdpbmUgPSBlbmdp
bmUuZ2V0KCk7CiAgICAgICAgIH0KICAgICB9CiAKICAgICByZXR1cm4gZm91bmRFbmdpbmU7CiB9
CiAKLXN0YXRpYyBjb25zdCBNZWRpYVBsYXllckZhY3RvcnkqIG5leHRNZWRpYUVuZ2luZShjb25z
dCBNZWRpYVBsYXllckZhY3RvcnkqIGN1cnJlbnQpCitjb25zdCBNZWRpYVBsYXllckZhY3Rvcnkq
IE1lZGlhUGxheWVyOjpuZXh0TWVkaWFFbmdpbmUoY29uc3QgTWVkaWFQbGF5ZXJGYWN0b3J5KiBj
dXJyZW50KQogeworICAgIGlmICghbV9hY3RpdmVFbmdpbmVJZGVudGlmaWVyLmlzRW1wdHkoKSkg
eworICAgICAgICBhdXRvKiBlbmdpbmUgPSBtZWRpYUVuZ2luZShtX2FjdGl2ZUVuZ2luZUlkZW50
aWZpZXIpOworICAgICAgICByZXR1cm4gY3VycmVudCAhPSBlbmdpbmUgPyBlbmdpbmUgOiBudWxs
cHRyOworICAgIH0KKwogICAgIGF1dG8mIGVuZ2luZXMgPSBpbnN0YWxsZWRNZWRpYUVuZ2luZXMo
KTsKICAgICBpZiAoZW5naW5lcy5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwog
CiAgICAgaWYgKCFjdXJyZW50KSAKLSAgICAgICAgcmV0dXJuICZlbmdpbmVzLmZpcnN0KCk7Cisg
ICAgICAgIHJldHVybiBlbmdpbmVzLmZpcnN0KCkuZ2V0KCk7CisKKyAgICBhdXRvIGN1cnJlbnRJ
bmRleCA9IGVuZ2luZXMuZmluZE1hdGNoaW5nKFtjdXJyZW50XSAoYXV0byYgZW5naW5lKSB7Cisg
ICAgICAgIHJldHVybiBlbmdpbmUuZ2V0KCkgPT0gY3VycmVudDsKKyAgICB9KTsKKyAgICBpZiAo
Y3VycmVudEluZGV4ID09IG5vdEZvdW5kKSB7CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgp
OworICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICB9CiAKLSAgICBzaXplX3QgY3VycmVudElu
ZGV4ID0gY3VycmVudCAtICZlbmdpbmVzLmZpcnN0KCk7CiAgICAgaWYgKGN1cnJlbnRJbmRleCAr
IDEgPj0gZW5naW5lcy5zaXplKCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgcmV0
dXJuICZlbmdpbmVzW2N1cnJlbnRJbmRleCArIDFdOworICAgIHJldHVybiBlbmdpbmVzW2N1cnJl
bnRJbmRleCArIDFdLmdldCgpOwogfQogCiAvLyBtZWRpYSBwbGF5ZXIKQEAgLTM1Miw2ICszOTAs
MTMgQEAgUmVmPE1lZGlhUGxheWVyPiBNZWRpYVBsYXllcjo6Y3JlYXRlKE1lZGlhUGxheWVyQ2xp
ZW50JiBjbGllbnQpCiAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgTWVkaWFQbGF5ZXIoY2xpZW50
KSk7CiB9CiAKK1JlZjxNZWRpYVBsYXllcj4gTWVkaWFQbGF5ZXI6OmNyZWF0ZShNZWRpYVBsYXll
ckNsaWVudCYgY2xpZW50LCBjb25zdCBTdHJpbmcmIG1lZGlhRW5naW5lSWRlbnRpZmllcikKK3sK
KyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBNZWRpYVBsYXllcihjbGllbnQsIG1lZGlhRW5naW5l
SWRlbnRpZmllcikpOworfQorCisKKwogTWVkaWFQbGF5ZXI6Ok1lZGlhUGxheWVyKE1lZGlhUGxh
eWVyQ2xpZW50JiBjbGllbnQpCiAgICAgOiBtX2NsaWVudCgmY2xpZW50KQogICAgICwgbV9yZWxv
YWRUaW1lcigqdGhpcywgJk1lZGlhUGxheWVyOjpyZWxvYWRUaW1lckZpcmVkKQpAQCAtMzU5LDYg
KzQwNCwxNCBAQCBNZWRpYVBsYXllcjo6TWVkaWFQbGF5ZXIoTWVkaWFQbGF5ZXJDbGllbnQmIGNs
aWVudCkKIHsKIH0KIAorTWVkaWFQbGF5ZXI6Ok1lZGlhUGxheWVyKE1lZGlhUGxheWVyQ2xpZW50
JiBjbGllbnQsIGNvbnN0IFN0cmluZyYgYWN0aXZlRW5naW5lSWRlbnRpZmllcikKKyAgICA6IG1f
Y2xpZW50KCZjbGllbnQpCisgICAgLCBtX3JlbG9hZFRpbWVyKCp0aGlzLCAmTWVkaWFQbGF5ZXI6
OnJlbG9hZFRpbWVyRmlyZWQpCisgICAgLCBtX3ByaXZhdGUobWFrZVVuaXF1ZTxOdWxsTWVkaWFQ
bGF5ZXJQcml2YXRlPih0aGlzKSkKKyAgICAsIG1fYWN0aXZlRW5naW5lSWRlbnRpZmllcihhY3Rp
dmVFbmdpbmVJZGVudGlmaWVyKQoreworfQorCiBNZWRpYVBsYXllcjo6fk1lZGlhUGxheWVyKCkK
IHsKICAgICBBU1NFUlQoIW1faW5pdGlhbGl6aW5nTWVkaWFFbmdpbmUpOwpAQCAtNDQxLDcgKzQ5
NCw3IEBAIGJvb2wgTWVkaWFQbGF5ZXI6OmxvYWQoTWVkaWFTdHJlYW1Qcml2YXRlJiBtZWRpYVN0
cmVhbSkKIH0KICNlbmRpZgogCi1jb25zdCBNZWRpYVBsYXllckZhY3RvcnkqIE1lZGlhUGxheWVy
OjpuZXh0QmVzdE1lZGlhRW5naW5lKGNvbnN0IE1lZGlhUGxheWVyRmFjdG9yeSogY3VycmVudCkg
Y29uc3QKK2NvbnN0IE1lZGlhUGxheWVyRmFjdG9yeSogTWVkaWFQbGF5ZXI6Om5leHRCZXN0TWVk
aWFFbmdpbmUoY29uc3QgTWVkaWFQbGF5ZXJGYWN0b3J5KiBjdXJyZW50KQogewogICAgIE1lZGlh
RW5naW5lU3VwcG9ydFBhcmFtZXRlcnMgcGFyYW1ldGVyczsKICAgICBwYXJhbWV0ZXJzLnR5cGUg
PSBtX2NvbnRlbnRUeXBlOwpAQCAtNDUzLDYgKzUwNiwyOCBAQCBjb25zdCBNZWRpYVBsYXllckZh
Y3RvcnkqIE1lZGlhUGxheWVyOjpuZXh0QmVzdE1lZGlhRW5naW5lKGNvbnN0IE1lZGlhUGxheWVy
RmFjdAogICAgIHBhcmFtZXRlcnMuaXNNZWRpYVN0cmVhbSA9ICEhbV9tZWRpYVN0cmVhbTsKICNl
bmRpZgogCisgICAgaWYgKCFtX2FjdGl2ZUVuZ2luZUlkZW50aWZpZXIuaXNFbXB0eSgpKSB7Cisg
ICAgICAgIGlmIChjdXJyZW50KQorICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICAg
ICAgYXV0byogZW5naW5lID0gbWVkaWFFbmdpbmUobV9hY3RpdmVFbmdpbmVJZGVudGlmaWVyKTsK
KyAgICAgICAgaWYgKGVuZ2luZSAmJiBlbmdpbmUtPnN1cHBvcnRzVHlwZUFuZENvZGVjcyhwYXJh
bWV0ZXJzKSAhPSBNZWRpYVBsYXllcjo6SXNOb3RTdXBwb3J0ZWQpCisgICAgICAgICAgICByZXR1
cm4gZW5naW5lOworCisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIH0KKworICAgIGlmICgh
bV9hY3RpdmVFbmdpbmVJZGVudGlmaWVyLmlzRW1wdHkoKSkgeworICAgICAgICBpZiAoY3VycmVu
dCkKKyAgICAgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgICAgIGF1dG8qIGVuZ2luZSA9
IG1lZGlhRW5naW5lKG1fYWN0aXZlRW5naW5lSWRlbnRpZmllcik7CisgICAgICAgIGlmIChlbmdp
bmUgJiYgZW5naW5lLT5zdXBwb3J0c1R5cGVBbmRDb2RlY3MocGFyYW1ldGVycykgIT0gTWVkaWFQ
bGF5ZXI6OklzTm90U3VwcG9ydGVkKQorICAgICAgICAgICAgcmV0dXJuIGVuZ2luZTsKKworICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICB9CisKICAgICByZXR1cm4gYmVzdE1lZGlhRW5naW5l
Rm9yU3VwcG9ydFBhcmFtZXRlcnMocGFyYW1ldGVycywgY3VycmVudCk7CiB9CiAKQEAgLTQ4OSw3
ICs1NjQsNyBAQCB2b2lkIE1lZGlhUGxheWVyOjpsb2FkV2l0aE5leHRNZWRpYUVuZ2luZShjb25z
dCBNZWRpYVBsYXllckZhY3RvcnkqIGN1cnJlbnQpCiAgICAgICAgIG1fcHJpdmF0ZSA9IG51bGxw
dHI7CiAgICAgfSBlbHNlIGlmIChtX2N1cnJlbnRNZWRpYUVuZ2luZSAhPSBlbmdpbmUpIHsKICAg
ICAgICAgbV9jdXJyZW50TWVkaWFFbmdpbmUgPSBlbmdpbmU7Ci0gICAgICAgIG1fcHJpdmF0ZSA9
IGVuZ2luZS0+Y29uc3RydWN0b3IodGhpcyk7CisgICAgICAgIG1fcHJpdmF0ZSA9IGVuZ2luZS0+
Y3JlYXRlTWVkaWFFbmdpbmVQbGF5ZXIodGhpcyk7CiAgICAgICAgIGNsaWVudCgpLm1lZGlhUGxh
eWVyRW5naW5lVXBkYXRlZCgpOwogICAgICAgICBtX3ByaXZhdGUtPnNldFByaXZhdGVCcm93c2lu
Z01vZGUobV9wcml2YXRlQnJvd3NpbmcpOwogICAgICAgICBtX3ByaXZhdGUtPnNldFByZWxvYWQo
bV9wcmVsb2FkKTsKQEAgLTkyOSw3ICsxMDA0LDcgQEAgdm9pZCBNZWRpYVBsYXllcjo6Z2V0U3Vw
cG9ydGVkVHlwZXMoSGFzaFNldDxTdHJpbmcsIEFTQ0lJQ2FzZUluc2Vuc2l0aXZlSGFzaD4mIHQK
IHsKICAgICBmb3IgKGF1dG8mIGVuZ2luZSA6IGluc3RhbGxlZE1lZGlhRW5naW5lcygpKSB7CiAg
ICAgICAgIEhhc2hTZXQ8U3RyaW5nLCBBU0NJSUNhc2VJbnNlbnNpdGl2ZUhhc2g+IGVuZ2luZVR5
cGVzOwotICAgICAgICBlbmdpbmUuZ2V0U3VwcG9ydGVkVHlwZXMoZW5naW5lVHlwZXMpOworICAg
ICAgICBlbmdpbmUtPmdldFN1cHBvcnRlZFR5cGVzKGVuZ2luZVR5cGVzKTsKICAgICAgICAgdHlw
ZXMuYWRkKGVuZ2luZVR5cGVzLmJlZ2luKCksIGVuZ2luZVR5cGVzLmVuZCgpKTsKICAgICB9CiB9
IApAQCAtMTEyNSwzNCArMTIwMCwyOCBAQCBzdGF0aWMgdm9pZCBhZGRUb0hhc2goSGFzaFNldDxU
PiYgdG9IYXNoLCBIYXNoU2V0PFQ+JiYgZnJvbUhhc2gpCiBIYXNoU2V0PFJlZlB0cjxTZWN1cml0
eU9yaWdpbj4+IE1lZGlhUGxheWVyOjpvcmlnaW5zSW5NZWRpYUNhY2hlKGNvbnN0IFN0cmluZyYg
cGF0aCkKIHsKICAgICBIYXNoU2V0PFJlZlB0cjxTZWN1cml0eU9yaWdpbj4+IG9yaWdpbnM7Ci0g
ICAgZm9yIChhdXRvJiBlbmdpbmUgOiBpbnN0YWxsZWRNZWRpYUVuZ2luZXMoKSkgewotICAgICAg
ICBpZiAoIWVuZ2luZS5vcmlnaW5zSW5NZWRpYUNhY2hlKQotICAgICAgICAgICAgY29udGludWU7
Ci0gICAgICAgIGFkZFRvSGFzaChvcmlnaW5zLCBlbmdpbmUub3JpZ2luc0luTWVkaWFDYWNoZShw
YXRoKSk7Ci0gICAgfQorICAgIGZvciAoYXV0byYgZW5naW5lIDogaW5zdGFsbGVkTWVkaWFFbmdp
bmVzKCkpCisgICAgICAgIGFkZFRvSGFzaChvcmlnaW5zLCBlbmdpbmUtPm9yaWdpbnNJbk1lZGlh
Q2FjaGUocGF0aCkpOworCiAgICAgcmV0dXJuIG9yaWdpbnM7CiB9CiAKIHZvaWQgTWVkaWFQbGF5
ZXI6OmNsZWFyTWVkaWFDYWNoZShjb25zdCBTdHJpbmcmIHBhdGgsIFdhbGxUaW1lIG1vZGlmaWVk
U2luY2UpCiB7Ci0gICAgZm9yIChhdXRvJiBlbmdpbmUgOiBpbnN0YWxsZWRNZWRpYUVuZ2luZXMo
KSkgewotICAgICAgICBpZiAoZW5naW5lLmNsZWFyTWVkaWFDYWNoZSkKLSAgICAgICAgICAgIGVu
Z2luZS5jbGVhck1lZGlhQ2FjaGUocGF0aCwgbW9kaWZpZWRTaW5jZSk7Ci0gICAgfQorICAgIGZv
ciAoYXV0byYgZW5naW5lIDogaW5zdGFsbGVkTWVkaWFFbmdpbmVzKCkpCisgICAgICAgIGVuZ2lu
ZS0+Y2xlYXJNZWRpYUNhY2hlKHBhdGgsIG1vZGlmaWVkU2luY2UpOwogfQogCiB2b2lkIE1lZGlh
UGxheWVyOjpjbGVhck1lZGlhQ2FjaGVGb3JPcmlnaW5zKGNvbnN0IFN0cmluZyYgcGF0aCwgY29u
c3QgSGFzaFNldDxSZWZQdHI8U2VjdXJpdHlPcmlnaW4+PiYgb3JpZ2lucykKIHsKLSAgICBmb3Ig
KGF1dG8mIGVuZ2luZSA6IGluc3RhbGxlZE1lZGlhRW5naW5lcygpKSB7Ci0gICAgICAgIGlmIChl
bmdpbmUuY2xlYXJNZWRpYUNhY2hlRm9yT3JpZ2lucykKLSAgICAgICAgICAgIGVuZ2luZS5jbGVh
ck1lZGlhQ2FjaGVGb3JPcmlnaW5zKHBhdGgsIG9yaWdpbnMpOwotICAgIH0KKyAgICBmb3IgKGF1
dG8mIGVuZ2luZSA6IGluc3RhbGxlZE1lZGlhRW5naW5lcygpKQorICAgICAgICBlbmdpbmUtPmNs
ZWFyTWVkaWFDYWNoZUZvck9yaWdpbnMocGF0aCwgb3JpZ2lucyk7CiB9CiAKIGJvb2wgTWVkaWFQ
bGF5ZXI6OnN1cHBvcnRzS2V5U3lzdGVtKGNvbnN0IFN0cmluZyYga2V5U3lzdGVtLCBjb25zdCBT
dHJpbmcmIG1pbWVUeXBlKQogewogICAgIGZvciAoYXV0byYgZW5naW5lIDogaW5zdGFsbGVkTWVk
aWFFbmdpbmVzKCkpIHsKLSAgICAgICAgaWYgKGVuZ2luZS5zdXBwb3J0c0tleVN5c3RlbSAmJiBl
bmdpbmUuc3VwcG9ydHNLZXlTeXN0ZW0oa2V5U3lzdGVtLCBtaW1lVHlwZSkpCisgICAgICAgIGlm
IChlbmdpbmUtPnN1cHBvcnRzS2V5U3lzdGVtKGtleVN5c3RlbSwgbWltZVR5cGUpKQogICAgICAg
ICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogICAgIHJldHVybiBmYWxzZTsKQEAgLTExNzIsNyAr
MTI0MSw3IEBAIHZvaWQgTWVkaWFQbGF5ZXI6Om5ldHdvcmtTdGF0ZUNoYW5nZWQoKQogICAgIC8v
IGxldCB0aGUgbmV4dCBlbmdpbmUgdHJ5LgogICAgIGlmIChtX3ByaXZhdGUtPm5ldHdvcmtTdGF0
ZSgpID49IEZvcm1hdEVycm9yICYmIG1fcHJpdmF0ZS0+cmVhZHlTdGF0ZSgpIDwgSGF2ZU1ldGFk
YXRhKSB7CiAgICAgICAgIGNsaWVudCgpLm1lZGlhUGxheWVyRW5naW5lRmFpbGVkVG9Mb2FkKCk7
Ci0gICAgICAgIGlmIChpbnN0YWxsZWRNZWRpYUVuZ2luZXMoKS5zaXplKCkgPiAxICYmIChtX2Nv
bnRlbnRUeXBlLmlzRW1wdHkoKSB8fCBuZXh0QmVzdE1lZGlhRW5naW5lKG1fY3VycmVudE1lZGlh
RW5naW5lKSkpIHsKKyAgICAgICAgaWYgKG1fYWN0aXZlRW5naW5lSWRlbnRpZmllci5pc0VtcHR5
KCkgJiYgaW5zdGFsbGVkTWVkaWFFbmdpbmVzKCkuc2l6ZSgpID4gMSAmJiAobV9jb250ZW50VHlw
ZS5pc0VtcHR5KCkgfHwgbmV4dEJlc3RNZWRpYUVuZ2luZShtX2N1cnJlbnRNZWRpYUVuZ2luZSkp
KSB7CiAgICAgICAgICAgICBtX3JlbG9hZFRpbWVyLnN0YXJ0T25lU2hvdCgwX3MpOwogICAgICAg
ICAgICAgcmV0dXJuOwogICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvTWVkaWFQbGF5ZXIuaAppbmRleCBmYjllYmEwZTRhYmUzMWM3NTI3MDBjYjdjZTY4OTBk
Yjk4OWMyMjJiLi4wMjVjZTIwYWYwMjk4NjZmZjkyZmRiOGQ4ZTRiMDBiZjg2NWViNGZjIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmgKQEAgLTY3
LDYgKzY3LDcgQEAgY2xhc3MgSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZTsKIGNsYXNzIExlZ2FjeUNE
TVNlc3Npb25DbGllbnQ7CiBjbGFzcyBNZWRpYVBsYXliYWNrVGFyZ2V0OwogY2xhc3MgTWVkaWFQ
bGF5ZXI7CitjbGFzcyBNZWRpYVBsYXllckZhY3Rvcnk7CiBjbGFzcyBNZWRpYVBsYXllclByaXZh
dGVJbnRlcmZhY2U7CiBjbGFzcyBNZWRpYVBsYXllclJlcXVlc3RJbnN0YWxsTWlzc2luZ1BsdWdp
bnNDYWxsYmFjazsKIGNsYXNzIE1lZGlhU291cmNlUHJpdmF0ZUNsaWVudDsKQEAgLTc2LDcgKzc3
LDYgQEAgY2xhc3MgVGV4dFRyYWNrUmVwcmVzZW50YXRpb247CiAKIHN0cnVjdCBDb29raWU7CiBz
dHJ1Y3QgR3JhcGhpY3NEZXZpY2VBZGFwdGVyOwotc3RydWN0IE1lZGlhUGxheWVyRmFjdG9yeTsK
IAogc3RydWN0IE1lZGlhRW5naW5lU3VwcG9ydFBhcmFtZXRlcnMgewogICAgIENvbnRlbnRUeXBl
IHR5cGU7CkBAIC04NCw2ICs4NCw0OCBAQCBzdHJ1Y3QgTWVkaWFFbmdpbmVTdXBwb3J0UGFyYW1l
dGVycyB7CiAgICAgYm9vbCBpc01lZGlhU291cmNlIHsgZmFsc2UgfTsKICAgICBib29sIGlzTWVk
aWFTdHJlYW0geyBmYWxzZSB9OwogICAgIFZlY3RvcjxDb250ZW50VHlwZT4gY29udGVudFR5cGVz
UmVxdWlyaW5nSGFyZHdhcmVTdXBwb3J0OworCisjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKQorICAg
IHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+CisgICAgdm9pZCBlbmNvZGUoRW5jb2RlciYgZW5jb2Rl
cikgY29uc3QKKyAgICB7CisgICAgICAgIGVuY29kZXIgPDwgdHlwZTsKKyAgICAgICAgZW5jb2Rl
ciA8PCB1cmw7CisgICAgICAgIGVuY29kZXIgPDwgaXNNZWRpYVNvdXJjZTsKKyAgICAgICAgZW5j
b2RlciA8PCBjb250ZW50VHlwZXNSZXF1aXJpbmdIYXJkd2FyZVN1cHBvcnQ7CisgICAgfQorCisg
ICAgdGVtcGxhdGUgPGNsYXNzIERlY29kZXI+CisgICAgc3RhdGljIE9wdGlvbmFsPE1lZGlhRW5n
aW5lU3VwcG9ydFBhcmFtZXRlcnM+IGRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQorICAgIHsKKyAg
ICAgICAgT3B0aW9uYWw8Q29udGVudFR5cGU+IHR5cGU7CisgICAgICAgIGRlY29kZXIgPj4gdHlw
ZTsKKyAgICAgICAgaWYgKCF0eXBlKQorICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsK
KworICAgICAgICBPcHRpb25hbDxVUkw+IHVybDsKKyAgICAgICAgZGVjb2RlciA+PiB1cmw7Cisg
ICAgICAgIGlmICghdXJsKQorICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKworICAg
ICAgICBPcHRpb25hbDxib29sPiBpc01lZGlhU291cmNlOworICAgICAgICBkZWNvZGVyID4+IGlz
TWVkaWFTb3VyY2U7CisgICAgICAgIGlmICghaXNNZWRpYVNvdXJjZSkKKyAgICAgICAgICAgIHJl
dHVybiBXVEY6Om51bGxvcHQ7CisKKyAgICAgICAgT3B0aW9uYWw8Ym9vbD4gaXNNZWRpYVN0cmVh
bTsKKyAgICAgICAgZGVjb2RlciA+PiBpc01lZGlhU3RyZWFtOworICAgICAgICBpZiAoIWlzTWVk
aWFTdHJlYW0pCisgICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworCisgICAgICAgIE9w
dGlvbmFsPFZlY3RvcjxDb250ZW50VHlwZT4+IHR5cGVzUmVxdWlyaW5nSGFyZHdhcmU7CisgICAg
ICAgIGRlY29kZXIgPj4gdHlwZXNSZXF1aXJpbmdIYXJkd2FyZTsKKyAgICAgICAgaWYgKCF0eXBl
c1JlcXVpcmluZ0hhcmR3YXJlKQorICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKwor
ICAgICAgICByZXR1cm4ge3sgV1RGTW92ZSgqdHlwZSksIFdURk1vdmUoKnVybCksIFdURk1vdmUo
KmlzTWVkaWFTb3VyY2UpLCBXVEZNb3ZlKCppc01lZGlhU3RyZWFtKSwgV1RGTW92ZSgqdHlwZXNS
ZXF1aXJpbmdIYXJkd2FyZSkgfX07CisgICAgfQorI2VuZGlmCiB9OwogCiBzdHJ1Y3QgVmlkZW9Q
bGF5YmFja1F1YWxpdHlNZXRyaWNzIHsKQEAgLTIzNSw3ICsyNzcsNyBAQCBwdWJsaWM6CiAjZW5k
aWYKIAogICAgIHZpcnR1YWwgYm9vbCBtZWRpYVBsYXllclNob3VsZERpc2FibGVTbGVlcCgpIGNv
bnN0IHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgdmlydHVhbCBjb25zdCBWZWN0b3I8Q29udGVudFR5
cGU+JiBtZWRpYUNvbnRlbnRUeXBlc1JlcXVpcmluZ0hhcmR3YXJlU3VwcG9ydCgpIGNvbnN0Owor
ICAgIHZpcnR1YWwgY29uc3QgVmVjdG9yPENvbnRlbnRUeXBlPiYgbWVkaWFDb250ZW50VHlwZXNS
ZXF1aXJpbmdIYXJkd2FyZVN1cHBvcnQoKSBjb25zdCA9IDA7CiAgICAgdmlydHVhbCBib29sIG1l
ZGlhUGxheWVyU2hvdWxkQ2hlY2tIYXJkd2FyZVN1cHBvcnQoKSBjb25zdCB7IHJldHVybiBmYWxz
ZTsgfQogCiAjaWYgIVJFTEVBU0VfTE9HX0RJU0FCTEVECkBAIC0yNDQsMTYgKzI4NiwxOCBAQCBw
dWJsaWM6CiAjZW5kaWYKIH07CiAKLWNsYXNzIE1lZGlhUGxheWVyIDogcHVibGljIE1lZGlhUGxh
eWVyRW51bXMsIHB1YmxpYyBSZWZDb3VudGVkPE1lZGlhUGxheWVyPiB7CitjbGFzcyBXRUJDT1JF
X0VYUE9SVCBNZWRpYVBsYXllciA6IHB1YmxpYyBNZWRpYVBsYXllckVudW1zLCBwdWJsaWMgUmVm
Q291bnRlZDxNZWRpYVBsYXllcj4gewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKE1lZGlhUGxh
eWVyKTsgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgc3RhdGljIFJlZjxN
ZWRpYVBsYXllcj4gY3JlYXRlKE1lZGlhUGxheWVyQ2xpZW50Jik7CisgICAgc3RhdGljIFJlZjxN
ZWRpYVBsYXllcj4gY3JlYXRlKE1lZGlhUGxheWVyQ2xpZW50JiwgY29uc3QgU3RyaW5nJik7CiAg
ICAgdmlydHVhbCB+TWVkaWFQbGF5ZXIoKTsKIAogICAgIHZvaWQgaW52YWxpZGF0ZSgpOwogCiAg
ICAgLy8gTWVkaWEgZW5naW5lIHN1cHBvcnQuCiAgICAgdXNpbmcgTWVkaWFQbGF5ZXJFbnVtczo6
U3VwcG9ydHNUeXBlOworICAgIHN0YXRpYyBjb25zdCBNZWRpYVBsYXllckZhY3RvcnkqIG1lZGlh
RW5naW5lKGNvbnN0IFN0cmluZyYpOwogICAgIHN0YXRpYyBTdXBwb3J0c1R5cGUgc3VwcG9ydHNU
eXBlKGNvbnN0IE1lZGlhRW5naW5lU3VwcG9ydFBhcmFtZXRlcnMmKTsKICAgICBzdGF0aWMgdm9p
ZCBnZXRTdXBwb3J0ZWRUeXBlcyhIYXNoU2V0PFN0cmluZywgQVNDSUlDYXNlSW5zZW5zaXRpdmVI
YXNoPiYpOwogICAgIHN0YXRpYyBib29sIGlzQXZhaWxhYmxlKCk7CkBAIC01OTYsMTEgKzY0MCwx
MyBAQCBwdWJsaWM6CiAKIHByaXZhdGU6CiAgICAgTWVkaWFQbGF5ZXIoTWVkaWFQbGF5ZXJDbGll
bnQmKTsKKyAgICBNZWRpYVBsYXllcihNZWRpYVBsYXllckNsaWVudCYsIGNvbnN0IFN0cmluZyYp
OwogCiAgICAgTWVkaWFQbGF5ZXJDbGllbnQmIGNsaWVudCgpIGNvbnN0IHsgcmV0dXJuICptX2Ns
aWVudDsgfQogCi0gICAgY29uc3QgTWVkaWFQbGF5ZXJGYWN0b3J5KiBuZXh0QmVzdE1lZGlhRW5n
aW5lKGNvbnN0IE1lZGlhUGxheWVyRmFjdG9yeSopIGNvbnN0OworICAgIGNvbnN0IE1lZGlhUGxh
eWVyRmFjdG9yeSogbmV4dEJlc3RNZWRpYUVuZ2luZShjb25zdCBNZWRpYVBsYXllckZhY3Rvcnkq
KTsKICAgICB2b2lkIGxvYWRXaXRoTmV4dE1lZGlhRW5naW5lKGNvbnN0IE1lZGlhUGxheWVyRmFj
dG9yeSopOworICAgIGNvbnN0IE1lZGlhUGxheWVyRmFjdG9yeSogbmV4dE1lZGlhRW5naW5lKGNv
bnN0IE1lZGlhUGxheWVyRmFjdG9yeSopOwogICAgIHZvaWQgcmVsb2FkVGltZXJGaXJlZCgpOwog
CiAgICAgTWVkaWFQbGF5ZXJDbGllbnQqIG1fY2xpZW50OwpAQCAtNjEwLDYgKzY1Niw3IEBAIHBy
aXZhdGU6CiAgICAgVVJMIG1fdXJsOwogICAgIENvbnRlbnRUeXBlIG1fY29udGVudFR5cGU7CiAg
ICAgU3RyaW5nIG1fa2V5U3lzdGVtOworICAgIFN0cmluZyBtX2FjdGl2ZUVuZ2luZUlkZW50aWZp
ZXI7CiAgICAgSW50U2l6ZSBtX3NpemU7CiAgICAgUHJlbG9hZCBtX3ByZWxvYWQgeyBBdXRvIH07
CiAgICAgZG91YmxlIG1fdm9sdW1lIHsgMSB9OwpAQCAtNjI5LDE2ICs2NzYsMjQgQEAgcHJpdmF0
ZToKICNlbmRpZgogfTsKIAotdXNpbmcgQ3JlYXRlTWVkaWFFbmdpbmVQbGF5ZXIgPSBXVEY6OkZ1
bmN0aW9uPHN0ZDo6dW5pcXVlX3B0cjxNZWRpYVBsYXllclByaXZhdGVJbnRlcmZhY2U+IChNZWRp
YVBsYXllciopPjsKLXR5cGVkZWYgdm9pZCAoKk1lZGlhRW5naW5lU3VwcG9ydGVkVHlwZXMpKEhh
c2hTZXQ8U3RyaW5nLCBBU0NJSUNhc2VJbnNlbnNpdGl2ZUhhc2g+JiB0eXBlcyk7Ci10eXBlZGVm
IE1lZGlhUGxheWVyOjpTdXBwb3J0c1R5cGUgKCpNZWRpYUVuZ2luZVN1cHBvcnRzVHlwZSkoY29u
c3QgTWVkaWFFbmdpbmVTdXBwb3J0UGFyYW1ldGVycyYgcGFyYW1ldGVycyk7Ci10eXBlZGVmIEhh
c2hTZXQ8UmVmUHRyPFNlY3VyaXR5T3JpZ2luPj4gKCpNZWRpYUVuZ2luZU9yaWdpbnNJbk1lZGlh
Q2FjaGUpKGNvbnN0IFN0cmluZyYgcGF0aCk7Ci10eXBlZGVmIHZvaWQgKCpNZWRpYUVuZ2luZUNs
ZWFyTWVkaWFDYWNoZSkoY29uc3QgU3RyaW5nJiBwYXRoLCBXYWxsVGltZSBtb2RpZmllZFNpbmNl
KTsKLXR5cGVkZWYgdm9pZCAoKk1lZGlhRW5naW5lQ2xlYXJNZWRpYUNhY2hlRm9yT3JpZ2lucyko
Y29uc3QgU3RyaW5nJiBwYXRoLCBjb25zdCBIYXNoU2V0PFJlZlB0cjxTZWN1cml0eU9yaWdpbj4+
Jik7Ci10eXBlZGVmIGJvb2wgKCpNZWRpYUVuZ2luZVN1cHBvcnRzS2V5U3lzdGVtKShjb25zdCBT
dHJpbmcmIGtleVN5c3RlbSwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSk7CitjbGFzcyBNZWRpYVBs
YXllckZhY3RvcnkgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOworcHVibGljOgorICAg
IE1lZGlhUGxheWVyRmFjdG9yeSgpID0gZGVmYXVsdDsKKyAgICB2aXJ0dWFsIH5NZWRpYVBsYXll
ckZhY3RvcnkoKSB7IH0KKworICAgIHZpcnR1YWwgc3RkOjp1bmlxdWVfcHRyPE1lZGlhUGxheWVy
UHJpdmF0ZUludGVyZmFjZT4gY3JlYXRlTWVkaWFFbmdpbmVQbGF5ZXIoTWVkaWFQbGF5ZXIqKSBj
b25zdCA9IDA7CisgICAgdmlydHVhbCB2b2lkIGdldFN1cHBvcnRlZFR5cGVzKEhhc2hTZXQ8U3Ry
aW5nLCBBU0NJSUNhc2VJbnNlbnNpdGl2ZUhhc2g+JikgY29uc3QgPSAwOworICAgIHZpcnR1YWwg
TWVkaWFQbGF5ZXI6OlN1cHBvcnRzVHlwZSBzdXBwb3J0c1R5cGVBbmRDb2RlY3MoY29uc3QgTWVk
aWFFbmdpbmVTdXBwb3J0UGFyYW1ldGVycyYpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIFN0cmlu
ZyBpZGVudGlmaWVyKCkgY29uc3QgID0gMDsKKworICAgIHZpcnR1YWwgSGFzaFNldDxSZWZQdHI8
U2VjdXJpdHlPcmlnaW4+PiBvcmlnaW5zSW5NZWRpYUNhY2hlKGNvbnN0IFN0cmluZyYpIGNvbnN0
IHsgcmV0dXJuIHsgfTsgfQorICAgIHZpcnR1YWwgdm9pZCBjbGVhck1lZGlhQ2FjaGUoY29uc3Qg
U3RyaW5nJiwgV2FsbFRpbWUpIGNvbnN0IHsgfQorICAgIHZpcnR1YWwgdm9pZCBjbGVhck1lZGlh
Q2FjaGVGb3JPcmlnaW5zKGNvbnN0IFN0cmluZyYsIGNvbnN0IEhhc2hTZXQ8UmVmUHRyPFNlY3Vy
aXR5T3JpZ2luPj4mKSBjb25zdCB7IH0KKyAgICB2aXJ0dWFsIGJvb2wgc3VwcG9ydHNLZXlTeXN0
ZW0oY29uc3QgU3RyaW5nJiAvKiBrZXlTeXN0ZW0gKi8sIGNvbnN0IFN0cmluZyYgLyogbWltZVR5
cGUgKi8pIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9Cit9OwogCi10eXBlZGVmIHZvaWQgKCpNZWRp
YUVuZ2luZVJlZ2lzdHJhcikoQ3JlYXRlTWVkaWFFbmdpbmVQbGF5ZXImJiwgTWVkaWFFbmdpbmVT
dXBwb3J0ZWRUeXBlcywgTWVkaWFFbmdpbmVTdXBwb3J0c1R5cGUsCi0gICAgTWVkaWFFbmdpbmVP
cmlnaW5zSW5NZWRpYUNhY2hlLCBNZWRpYUVuZ2luZUNsZWFyTWVkaWFDYWNoZSwgTWVkaWFFbmdp
bmVDbGVhck1lZGlhQ2FjaGVGb3JPcmlnaW5zLCBNZWRpYUVuZ2luZVN1cHBvcnRzS2V5U3lzdGVt
KTsKK3R5cGVkZWYgdm9pZCAoKk1lZGlhRW5naW5lUmVnaXN0cmFyKShzdGQ6OnVuaXF1ZV9wdHI8
TWVkaWFQbGF5ZXJGYWN0b3J5Pik7CiB0eXBlZGVmIHZvaWQgKCpNZWRpYUVuZ2luZVJlZ2lzdGVy
KShNZWRpYUVuZ2luZVJlZ2lzdHJhcik7CiAKIGNsYXNzIE1lZGlhUGxheWVyRmFjdG9yeVN1cHBv
cnQgewpAQCAtNjQ2LDYgKzcwMSwxMyBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgc3Rh
dGljIHZvaWQgY2FsbFJlZ2lzdGVyTWVkaWFFbmdpbmUoTWVkaWFFbmdpbmVSZWdpc3Rlcik7CiB9
OwogCitjbGFzcyBSZW1vdGVNZWRpYVBsYXllclN1cHBvcnQgeworcHVibGljOgorICAgIHVzaW5n
IFJlZ2lzdGVyUmVtb3RlUGxheWVyQ2FsbGJhY2sgPSBzdGQ6OmZ1bmN0aW9uPHZvaWQoTWVkaWFF
bmdpbmVSZWdpc3RyYXIsIGNvbnN0IFN0cmluZyYpPjsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0
aWMgdm9pZCBzZXRSZWdpc3RlclJlbW90ZVBsYXllckNhbGxiYWNrKFJlZ2lzdGVyUmVtb3RlUGxh
eWVyQ2FsbGJhY2smJik7Cit9OworCisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlm
IC8vIEVOQUJMRShWSURFTykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL01lZGlhUGxheWVyRW5naW5lSWRlbnRpZmllcnMuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyRW5naW5lSWRlbnRpZmllcnMuaApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li5jMjZlZmM1MDMzN2MyYmZkZjUxYWNlYWFiNDllN2NjYTc2ZWNmNTUzCi0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXJFbmdpbmVJ
ZGVudGlmaWVycy5oCkBAIC0wLDAgKzEsNDMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBB
TlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
ICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgorICogQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAor
ICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjcHJhZ21hIG9uY2UKKwor
I2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisK
K2NsYXNzIE1lZGlhUGxheWVyRW5naW5lSWRlbnRpZmllcnMgeworcHVibGljOgorICAgIHN0YXRp
YyBjb25zdCBjaGFyKiBhdkZvdW5kYXRpb25FbmdpbmVJZGVudGlmaWVyKCkgeyByZXR1cm4gIk1l
ZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMiOyB9CisgICAgc3RhdGljIGNvbnN0IGNo
YXIqIGF2Rm91bmRhdGlvbk1TRUVuZ2luZUlkZW50aWZpZXIoKSB7IHJldHVybiAiTWVkaWFQbGF5
ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDIjsgfQorICAgIHN0YXRpYyBjb25zdCBjaGFyKiBh
dkZvdW5kYXRpb25NZWRpYVN0cmVhbUVuZ2luZUlkZW50aWZpZXIoKSB7IHJldHVybiAiTWVkaWFQ
bGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDIjsgfQorICAgIHN0YXRpYyBjb25zdCBjaGFy
KiBHU3RyZWFtZXJNZWRpYUVuZ2luZUlkZW50aWZpZXIoKSB7IHJldHVybiAiTWVkaWFQbGF5ZXJQ
cml2YXRlR1N0cmVhbWVyIjsgfQorICAgIHN0YXRpYyBjb25zdCBjaGFyKiBHU3RyZWFtZXJNU0VN
ZWRpYUVuZ2luZUlkZW50aWZpZXIoKSB7IHJldHVybiAiTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVh
bWVyTVNFIjsgfQorICAgIHN0YXRpYyBjb25zdCBjaGFyKiBob2xlUHVuY2hNZWRpYUVuZ2luZUlk
ZW50aWZpZXIoKSB7IHJldHVybiAiTWVkaWFQbGF5ZXJQcml2YXRlSG9sZVB1bmNoIjsgfQorICAg
IHN0YXRpYyBjb25zdCBjaGFyKiBNZWRpYUZvdW5kYXRpb25NZWRpYUVuZ2luZUlkZW50aWZpZXIo
KSB7IHJldHVybiAiTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFGb3VuZGF0aW9uIjsgfQorfTsKKwor
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvUGxhdGZvcm1UaW1lUmFuZ2VzLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9QbGF0Zm9ybVRpbWVSYW5nZXMuaAppbmRleCAxODg4Njk1Yzc2ZTkyNmZiM2Vk
NGIzYTUxMGM5YmIwMzNiNDM3MzMwLi41MzZmNmFhMmE1YTc5NjYwNGQ1NzMxOWU2MTZhYmU1Njgz
ZmExY2IxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9QbGF0
Zm9ybVRpbWVSYW5nZXMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Q
bGF0Zm9ybVRpbWVSYW5nZXMuaApAQCAtMzYsNyArMzYsNyBAQCBjbGFzcyBQcmludFN0cmVhbTsK
IAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBQbGF0Zm9ybVRpbWVSYW5nZXMgeworY2xh
c3MgV0VCQ09SRV9FWFBPUlQgUGxhdGZvcm1UaW1lUmFuZ2VzIHsKICAgICBXVEZfTUFLRV9GQVNU
X0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBleHBsaWNpdCBQbGF0Zm9ybVRpbWVSYW5nZXMoKSB7
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRh
dGlvbi9jZi9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25DRi5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vY2YvTWVkaWFQbGF5ZXJQcml2YXRl
QVZGb3VuZGF0aW9uQ0YuY3BwCmluZGV4IDBjZThjZWI0OGJkNzg4Y2ViMTlhYTlkZDg5N2Y5Mjk5
ZGVhYmRkMGQuLmYzNTYxNTMzYjE2OWI3YjdmNmE0NWJkNjc1ZjgwYzcwZDI3MDA4NmYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9jZi9N
ZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25DRi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL2NmL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91
bmRhdGlvbkNGLmNwcApAQCAtMzQyLDExICszNDIsMzcgQEAgc3RhdGljIGRpc3BhdGNoX3F1ZXVl
X3QgZ2xvYmFsTG9hZGVyRGVsZWdhdGVRdWV1ZSgpCiB9CiAjZW5kaWYKIAorY2xhc3MgTWVkaWFQ
bGF5ZXJGYWN0b3J5QVZGb3VuZGF0aW9uQ0YgOiBwdWJsaWMgTWVkaWFQbGF5ZXJGYWN0b3J5IHsK
K3B1YmxpYzoKKyAgICBTdHJpbmcgaWRlbnRpZmllcigpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIE1l
ZGlhUGxheWVyRW5naW5lSWRlbnRpZmllcnM6OmF2Rm91bmRhdGlvbk1lZGlhU3RyZWFtSWRlbnRp
ZmllcigpOyB9OworCisgICAgc3RkOjp1bmlxdWVfcHRyPE1lZGlhUGxheWVyUHJpdmF0ZUludGVy
ZmFjZT4gY3JlYXRlTWVkaWFFbmdpbmVQbGF5ZXIoTWVkaWFQbGF5ZXIqIHBsYXllcikgY29uc3Qg
ZmluYWwKKyAgICB7CisgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPE1lZGlhUGxheWVyUHJpdmF0
ZUFWRm91bmRhdGlvbkNGPihwbGF5ZXIpOworICAgIH0KKworICAgIHZvaWQgZ2V0U3VwcG9ydGVk
VHlwZXMoSGFzaFNldDxTdHJpbmcsIEFTQ0lJQ2FzZUluc2Vuc2l0aXZlSGFzaD4mIHR5cGVzKSBj
b25zdCBmaW5hbAorICAgIHsKKyAgICAgICAgcmV0dXJuIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91
bmRhdGlvbkNGOjpnZXRTdXBwb3J0ZWRUeXBlcyh0eXBlcyk7CisgICAgfQorCisgICAgTWVkaWFQ
bGF5ZXI6OlN1cHBvcnRzVHlwZSBzdXBwb3J0c1R5cGVBbmRDb2RlY3MoY29uc3QgTWVkaWFFbmdp
bmVTdXBwb3J0UGFyYW1ldGVycyYgcGFyYW1ldGVycykgY29uc3QgZmluYWwKKyAgICB7CisgICAg
ICAgIHJldHVybiBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25DRjo6c3VwcG9ydHNUeXBl
KHBhcmFtZXRlcnMpOworICAgIH0KKworICAgIGJvb2wgc3VwcG9ydHNLZXlTeXN0ZW0oY29uc3Qg
U3RyaW5nJiBrZXlTeXN0ZW0sIGNvbnN0IFN0cmluZyYgbWltZVR5cGUpIGNvbnN0IGZpbmFsCisg
ICAgeworICAgICAgICByZXR1cm4gTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uQ0Y6OnN1
cHBvcnRzS2V5U3lzdGVtKGtleVN5c3RlbSwgbWltZVR5cGUpOworICAgIH0KK307CisKIHZvaWQg
TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uQ0Y6OnJlZ2lzdGVyTWVkaWFFbmdpbmUoTWVk
aWFFbmdpbmVSZWdpc3RyYXIgcmVnaXN0cmFyKQogewotICAgIGlmIChpc0F2YWlsYWJsZSgpKQot
ICAgICAgICByZWdpc3RyYXIoW10oTWVkaWFQbGF5ZXIqIHBsYXllcikgeyByZXR1cm4gbWFrZVVu
aXF1ZTxNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25DRj4ocGxheWVyKTsgfSwKLSAgICAg
ICAgICAgIGdldFN1cHBvcnRlZFR5cGVzLCBzdXBwb3J0c1R5cGUsIDAsIDAsIDAsIHN1cHBvcnRz
S2V5U3lzdGVtKTsKKyAgICBpZiAoIWlzQXZhaWxhYmxlKCkpCisgICAgICAgIHJldHVybjsKKwor
ICAgIHJlZ2lzdHJhcihtYWtlVW5pcXVlPE1lZGlhUGxheWVyRmFjdG9yeUFWRm91bmRhdGlvbkNG
PigpKTsKIH0KIAogTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uQ0Y6Ok1lZGlhUGxheWVy
UHJpdmF0ZUFWRm91bmRhdGlvbkNGKE1lZGlhUGxheWVyKiBwbGF5ZXIpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBs
YXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25P
YmpDLmgKaW5kZXggZTk4ZDhlYTkwMDA0NzE4Y2ZjOTA0NGEwOTgzNmFmMGI5MGUwZmUwMS4uZTBi
ZWUyNDNiOTRiZmU2NDQ0Y2JmNWQ2ZDU5ZWY4NjgwNTczODkzYiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQ
cml2YXRlQVZGb3VuZGF0aW9uT2JqQy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9i
akMuaApAQCAtMTYyLDYgKzE2Miw3IEBAIHB1YmxpYzoKIAogcHJpdmF0ZToKICAgICAvLyBlbmdp
bmUgc3VwcG9ydAorICAgIGZyaWVuZCBjbGFzcyBNZWRpYVBsYXllckZhY3RvcnlBVkZvdW5kYXRp
b25PYmpDOwogICAgIHN0YXRpYyB2b2lkIGdldFN1cHBvcnRlZFR5cGVzKEhhc2hTZXQ8U3RyaW5n
LCBBU0NJSUNhc2VJbnNlbnNpdGl2ZUhhc2g+JiB0eXBlcyk7CiAgICAgc3RhdGljIE1lZGlhUGxh
eWVyOjpTdXBwb3J0c1R5cGUgc3VwcG9ydHNUeXBlKGNvbnN0IE1lZGlhRW5naW5lU3VwcG9ydFBh
cmFtZXRlcnMmKTsKICAgICBzdGF0aWMgYm9vbCBzdXBwb3J0c0tleVN5c3RlbShjb25zdCBTdHJp
bmcmIGtleVN5c3RlbSwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXll
clByaXZhdGVBVkZvdW5kYXRpb25PYmpDLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2Jq
Qy5tbQppbmRleCA1NDEwMzkxMzQxOWVlNWQ0OGU5ZWMxYWNiNjg5MmY5OGRkZTlmM2JkLi4zZjU0
YTU0MzdjMmZmY2I5MzI3Mjk5MDg4YmYxOWNmZmU2N2RmNmVmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclBy
aXZhdGVBVkZvdW5kYXRpb25PYmpDLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9i
akMubW0KQEAgLTUwLDYgKzUwLDcgQEAKICNpbXBvcnQgIkxvZ2dpbmcuaCIKICNpbXBvcnQgIk1l
ZGlhUGxheWJhY2tUYXJnZXRNYWMuaCIKICNpbXBvcnQgIk1lZGlhUGxheWJhY2tUYXJnZXRNb2Nr
LmgiCisjaW1wb3J0ICJNZWRpYVBsYXllckVuZ2luZUlkZW50aWZpZXJzLmgiCiAjaW1wb3J0ICJN
ZWRpYVNlbGVjdGlvbkdyb3VwQVZGT2JqQy5oIgogI2ltcG9ydCAiT3V0T2ZCYW5kVGV4dFRyYWNr
UHJpdmF0ZUFWRi5oIgogI2ltcG9ydCAiUGl4ZWxCdWZmZXJDb25mb3JtZXJDVi5oIgpAQCAtMjcz
LDE0ICsyNzQsNTQgQEAgc3RhdGljIGRpc3BhdGNoX3F1ZXVlX3QgZ2xvYmFsUHVsbERlbGVnYXRl
UXVldWUoKQogfQogI2VuZGlmCiAKK2NsYXNzIE1lZGlhUGxheWVyRmFjdG9yeUFWRm91bmRhdGlv
bk9iakMgOiBwdWJsaWMgTWVkaWFQbGF5ZXJGYWN0b3J5IHsKK3B1YmxpYzoKKyAgICBTdHJpbmcg
aWRlbnRpZmllcigpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIE1lZGlhUGxheWVyRW5naW5lSWRlbnRp
ZmllcnM6OmF2Rm91bmRhdGlvbkVuZ2luZUlkZW50aWZpZXIoKTsgfTsKKworICAgIHN0ZDo6dW5p
cXVlX3B0cjxNZWRpYVBsYXllclByaXZhdGVJbnRlcmZhY2U+IGNyZWF0ZU1lZGlhRW5naW5lUGxh
eWVyKE1lZGlhUGxheWVyKiBwbGF5ZXIpIGNvbnN0IGZpbmFsCisgICAgeworICAgICAgICByZXR1
cm4gbWFrZVVuaXF1ZTxNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDPihwbGF5ZXIp
OworICAgIH0KKworICAgIHZvaWQgZ2V0U3VwcG9ydGVkVHlwZXMoSGFzaFNldDxTdHJpbmcsIEFT
Q0lJQ2FzZUluc2Vuc2l0aXZlSGFzaD4mIHR5cGVzKSBjb25zdCBmaW5hbAorICAgIHsKKyAgICAg
ICAgcmV0dXJuIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OmdldFN1cHBvcnRl
ZFR5cGVzKHR5cGVzKTsKKyAgICB9CisKKyAgICBNZWRpYVBsYXllcjo6U3VwcG9ydHNUeXBlIHN1
cHBvcnRzVHlwZUFuZENvZGVjcyhjb25zdCBNZWRpYUVuZ2luZVN1cHBvcnRQYXJhbWV0ZXJzJiBw
YXJhbWV0ZXJzKSBjb25zdCBmaW5hbAorICAgIHsKKyAgICAgICAgcmV0dXJuIE1lZGlhUGxheWVy
UHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OnN1cHBvcnRzVHlwZShwYXJhbWV0ZXJzKTsKKyAgICB9
CisKKyAgICBIYXNoU2V0PFJlZlB0cjxTZWN1cml0eU9yaWdpbj4+IG9yaWdpbnNJbk1lZGlhQ2Fj
aGUoY29uc3QgU3RyaW5nJiBwYXRoKSBjb25zdCBmaW5hbAorICAgIHsKKyAgICAgICAgcmV0dXJu
IE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6Om9yaWdpbnNJbk1lZGlhQ2FjaGUo
cGF0aCk7CisgICAgfQorCisgICAgdm9pZCBjbGVhck1lZGlhQ2FjaGUoY29uc3QgU3RyaW5nJiBw
YXRoLCBXYWxsVGltZSBtb2RpZmllZFNpbmNlKSBjb25zdCBmaW5hbAorICAgIHsKKyAgICAgICAg
cmV0dXJuIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OmNsZWFyTWVkaWFDYWNo
ZShwYXRoLCBtb2RpZmllZFNpbmNlKTsKKyAgICB9CisKKyAgICB2b2lkIGNsZWFyTWVkaWFDYWNo
ZUZvck9yaWdpbnMoY29uc3QgU3RyaW5nJiBwYXRoLCBjb25zdCBIYXNoU2V0PFJlZlB0cjxTZWN1
cml0eU9yaWdpbj4+JiBvcmlnaW5zKSBjb25zdCBmaW5hbAorICAgIHsKKyAgICAgICAgcmV0dXJu
IE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OmNsZWFyTWVkaWFDYWNoZUZvck9y
aWdpbnMocGF0aCwgb3JpZ2lucyk7CisgICAgfQorCisgICAgYm9vbCBzdXBwb3J0c0tleVN5c3Rl
bShjb25zdCBTdHJpbmcmIGtleVN5c3RlbSwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSkgY29uc3Qg
ZmluYWwKKyAgICB7CisgICAgICAgIHJldHVybiBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRp
b25PYmpDOjpzdXBwb3J0c0tleVN5c3RlbShrZXlTeXN0ZW0sIG1pbWVUeXBlKTsKKyAgICB9Cit9
OworCiB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OnJlZ2lzdGVyTWVk
aWFFbmdpbmUoTWVkaWFFbmdpbmVSZWdpc3RyYXIgcmVnaXN0cmFyKQogewogICAgIGlmICghaXNB
dmFpbGFibGUoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgcmVnaXN0cmFyKFtdKE1lZGlhUGxh
eWVyKiBwbGF5ZXIpIHsgcmV0dXJuIG1ha2VVbmlxdWU8TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3Vu
ZGF0aW9uT2JqQz4ocGxheWVyKTsgfSwKLSAgICAgICAgICAgIGdldFN1cHBvcnRlZFR5cGVzLCBz
dXBwb3J0c1R5cGUsIG9yaWdpbnNJbk1lZGlhQ2FjaGUsIGNsZWFyTWVkaWFDYWNoZSwgY2xlYXJN
ZWRpYUNhY2hlRm9yT3JpZ2lucywgc3VwcG9ydHNLZXlTeXN0ZW0pOwogICAgIEFTU0VSVChBVkFz
c2V0TUlNRVR5cGVDYWNoZTo6c2luZ2xldG9uKCkuaXNBdmFpbGFibGUoKSk7CisKKyAgICByZWdp
c3RyYXIobWFrZVVuaXF1ZTxNZWRpYVBsYXllckZhY3RvcnlBVkZvdW5kYXRpb25PYmpDPigpKTsK
IH0KIAogc3RhdGljIEFWQXNzZXRDYWNoZSAqYXNzZXRDYWNoZUZvclBhdGgoY29uc3QgU3RyaW5n
JiBwYXRoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZm
b3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDLm1tIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQ
bGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDLm1tCmluZGV4IDcxNTI4Yzk5YzBjYzYwN2Qz
OGYyZWYzZTA3Mjg4Y2Y2ZDMzNTFmZDYuLjY1NjE3MDEyMjBiMDU0MWM1M2M0Yjg2ZGI3NGY4Mjdm
YjAwZGFmZjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2
Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQy5tbQor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9N
ZWRpYVBsYXllclByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMubW0KQEAgLTM0LDYgKzM0LDcgQEAK
ICNpbXBvcnQgIkNETVNlc3Npb25BVlN0cmVhbVNlc3Npb24uaCIKICNpbXBvcnQgIkdyYXBoaWNz
Q29udGV4dENHLmgiCiAjaW1wb3J0ICJMb2dnaW5nLmgiCisjaW1wb3J0ICJNZWRpYVBsYXllckVu
Z2luZUlkZW50aWZpZXJzLmgiCiAjaW1wb3J0ICJNZWRpYVNvdXJjZVByaXZhdGVBVkZPYmpDLmgi
CiAjaW1wb3J0ICJNZWRpYVNvdXJjZVByaXZhdGVDbGllbnQuaCIKICNpbXBvcnQgIlBpeGVsQnVm
ZmVyQ29uZm9ybWVyQ1YuaCIKQEAgLTE5NiwxNCArMTk3LDM0IEBAIE1lZGlhUGxheWVyUHJpdmF0
ZU1lZGlhU291cmNlQVZGT2JqQzo6fk1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2Jq
QygpCiAjcHJhZ21hIG1hcmsgLQogI3ByYWdtYSBtYXJrIE1lZGlhUGxheWVyIEZhY3RvcnkgTWV0
aG9kcwogCitjbGFzcyBNZWRpYVBsYXllckZhY3RvcnlNZWRpYVNvdXJjZUFWRk9iakMgOiBwdWJs
aWMgTWVkaWFQbGF5ZXJGYWN0b3J5IHsKK3B1YmxpYzoKKyAgICBTdHJpbmcgaWRlbnRpZmllcigp
IGNvbnN0IGZpbmFsIHsgcmV0dXJuIE1lZGlhUGxheWVyRW5naW5lSWRlbnRpZmllcnM6OmF2Rm91
bmRhdGlvbk1TRUVuZ2luZUlkZW50aWZpZXIoKTsgfTsKKworICAgIHN0ZDo6dW5pcXVlX3B0cjxN
ZWRpYVBsYXllclByaXZhdGVJbnRlcmZhY2U+IGNyZWF0ZU1lZGlhRW5naW5lUGxheWVyKE1lZGlh
UGxheWVyKiBwbGF5ZXIpIGNvbnN0IGZpbmFsCisgICAgeworICAgICAgICByZXR1cm4gbWFrZVVu
aXF1ZTxNZWRpYVBsYXllclByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakM+KHBsYXllcik7ICAgICAg
ICAKKyAgICB9CisKKyAgICB2b2lkIGdldFN1cHBvcnRlZFR5cGVzKEhhc2hTZXQ8U3RyaW5nLCBB
U0NJSUNhc2VJbnNlbnNpdGl2ZUhhc2g+JiB0eXBlcykgY29uc3QgZmluYWwKKyAgICB7CisgICAg
ICAgIHJldHVybiBNZWRpYVBsYXllclByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakM6OmdldFN1cHBv
cnRlZFR5cGVzKHR5cGVzKTsKKyAgICB9CisKKyAgICBNZWRpYVBsYXllcjo6U3VwcG9ydHNUeXBl
IHN1cHBvcnRzVHlwZUFuZENvZGVjcyhjb25zdCBNZWRpYUVuZ2luZVN1cHBvcnRQYXJhbWV0ZXJz
JiBwYXJhbWV0ZXJzKSBjb25zdCBmaW5hbAorICAgIHsKKyAgICAgICAgcmV0dXJuIE1lZGlhUGxh
eWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQzo6c3VwcG9ydHNUeXBlKHBhcmFtZXRlcnMpOwor
ICAgIH0KK307CisKIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDOjpy
ZWdpc3Rlck1lZGlhRW5naW5lKE1lZGlhRW5naW5lUmVnaXN0cmFyIHJlZ2lzdHJhcikKIHsKICAg
ICBpZiAoIWlzQXZhaWxhYmxlKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIHJlZ2lzdHJhcihb
XShNZWRpYVBsYXllciogcGxheWVyKSB7IHJldHVybiBtYWtlVW5pcXVlPE1lZGlhUGxheWVyUHJp
dmF0ZU1lZGlhU291cmNlQVZGT2JqQz4ocGxheWVyKTsgfSwKLSAgICAgICAgZ2V0U3VwcG9ydGVk
VHlwZXMsIHN1cHBvcnRzVHlwZSwgMCwgMCwgMCwgMCk7CiAgICAgQVNTRVJUKEFWQXNzZXRNSU1F
VHlwZUNhY2hlOjpzaW5nbGV0b24oKS5pc0F2YWlsYWJsZSgpKTsKKworICAgIHJlZ2lzdHJhciht
YWtlVW5pcXVlPE1lZGlhUGxheWVyRmFjdG9yeU1lZGlhU291cmNlQVZGT2JqQz4oKSk7CiB9CiAK
IGJvb2wgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDOjppc0F2YWlsYWJsZSgp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRp
b24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakMubW0gYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclBy
aXZhdGVNZWRpYVN0cmVhbUFWRk9iakMubW0KaW5kZXggNjMxNDgxNGJjODhmYzljZjdlYmJjZTk0
ZmM4ZTcxOTFkZjNmNDU0Zi4uMTc5YWVjY2UwNmY4MDI5ZjI0ZDNhMzQyYmMwMTAwMjBkMjM0NTM2
OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0
aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDLm1tCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxh
eWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQy5tbQpAQCAtMzEsNiArMzEsNyBAQAogI2ltcG9y
dCAiQXVkaW9UcmFja1ByaXZhdGVNZWRpYVN0cmVhbUNvY29hLmgiCiAjaW1wb3J0ICJHcmFwaGlj
c0NvbnRleHRDRy5oIgogI2ltcG9ydCAiTG9nZ2luZy5oIgorI2ltcG9ydCAiTWVkaWFQbGF5ZXJF
bmdpbmVJZGVudGlmaWVycy5oIgogI2ltcG9ydCAiTWVkaWFTdHJlYW1Qcml2YXRlLmgiCiAjaW1w
b3J0ICJQaXhlbEJ1ZmZlckNvbmZvcm1lckNWLmgiCiAjaW1wb3J0ICJWaWRlb0Z1bGxzY3JlZW5M
YXllck1hbmFnZXJPYmpDLmgiCkBAIC0yMjAsMTEgKzIyMSwzMiBAQCBNZWRpYVBsYXllclByaXZh
dGVNZWRpYVN0cmVhbUFWRk9iakM6On5NZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9i
akMoKQogI3ByYWdtYSBtYXJrIC0KICNwcmFnbWEgbWFyayBNZWRpYVBsYXllciBGYWN0b3J5IE1l
dGhvZHMKIAorY2xhc3MgTWVkaWFQbGF5ZXJGYWN0b3J5TWVkaWFTdHJlYW1BVkZPYmpDIDogcHVi
bGljIE1lZGlhUGxheWVyRmFjdG9yeSB7CitwdWJsaWM6CisgICAgU3RyaW5nIGlkZW50aWZpZXIo
KSBjb25zdCBmaW5hbCB7IHJldHVybiBNZWRpYVBsYXllckVuZ2luZUlkZW50aWZpZXJzOjphdkZv
dW5kYXRpb25NZWRpYVN0cmVhbUVuZ2luZUlkZW50aWZpZXIoKTsgfTsKKworICAgIHN0ZDo6dW5p
cXVlX3B0cjxNZWRpYVBsYXllclByaXZhdGVJbnRlcmZhY2U+IGNyZWF0ZU1lZGlhRW5naW5lUGxh
eWVyKE1lZGlhUGxheWVyKiBwbGF5ZXIpIGNvbnN0IGZpbmFsCisgICAgeworICAgICAgICByZXR1
cm4gbWFrZVVuaXF1ZTxNZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakM+KHBsYXll
cik7CisgICAgfQorCisgICAgdm9pZCBnZXRTdXBwb3J0ZWRUeXBlcyhIYXNoU2V0PFN0cmluZywg
QVNDSUlDYXNlSW5zZW5zaXRpdmVIYXNoPiYgdHlwZXMpIGNvbnN0IGZpbmFsCisgICAgeworICAg
ICAgICByZXR1cm4gTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDOjpnZXRTdXBw
b3J0ZWRUeXBlcyh0eXBlcyk7CisgICAgfQorCisgICAgTWVkaWFQbGF5ZXI6OlN1cHBvcnRzVHlw
ZSBzdXBwb3J0c1R5cGVBbmRDb2RlY3MoY29uc3QgTWVkaWFFbmdpbmVTdXBwb3J0UGFyYW1ldGVy
cyYgcGFyYW1ldGVycykgY29uc3QgZmluYWwKKyAgICB7CisgICAgICAgIHJldHVybiBNZWRpYVBs
YXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakM6OnN1cHBvcnRzVHlwZShwYXJhbWV0ZXJzKTsK
KyAgICB9Cit9OworCiB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQzo6
cmVnaXN0ZXJNZWRpYUVuZ2luZShNZWRpYUVuZ2luZVJlZ2lzdHJhciByZWdpc3RyYXIpCiB7Ci0g
ICAgaWYgKGlzQXZhaWxhYmxlKCkpCi0gICAgICAgIHJlZ2lzdHJhcihbXShNZWRpYVBsYXllciog
cGxheWVyKSB7IHJldHVybiBtYWtlVW5pcXVlPE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFt
QVZGT2JqQz4ocGxheWVyKTsgfSwgZ2V0U3VwcG9ydGVkVHlwZXMsCi0gICAgICAgICAgICBzdXBw
b3J0c1R5cGUsIDAsIDAsIDAsIDApOworICAgIGlmICghaXNBdmFpbGFibGUoKSkKKyAgICAgICAg
cmV0dXJuOworCisgICAgcmVnaXN0cmFyKG1ha2VVbmlxdWU8TWVkaWFQbGF5ZXJGYWN0b3J5TWVk
aWFTdHJlYW1BVkZPYmpDPigpKTsKIH0KIAogYm9vbCBNZWRpYVBsYXllclByaXZhdGVNZWRpYVN0
cmVhbUFWRk9iakM6OmlzQXZhaWxhYmxlKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVy
UHJpdmF0ZUdTdHJlYW1lci5jcHAKaW5kZXggMDEyN2M1N2QxYWI4NTFmM2MyNDc2OGUwYTU1NzFh
OGZmM2ZhZTZlZS4uYTExNzZiYTJhNWM5YmE5N2JhNDBhYThmODdmM2E5ZmRhMjM2YTRiYiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlh
UGxheWVyUHJpdmF0ZUdTdHJlYW1lci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5jcHAKQEAgLTQ2
NCwxNCArNDY0LDM3IEBAIGJvb2wgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjppc0F2YWls
YWJsZSgpCiAgICAgcmV0dXJuIGZhY3Rvcnk7CiB9CiAKK2NsYXNzIE1lZGlhUGxheWVyRmFjdG9y
eUdTdHJlYW1lciA6IHB1YmxpYyBNZWRpYVBsYXllckZhY3RvcnkgeworcHVibGljOgorICAgIFN0
cmluZyBpZGVudGlmaWVyKCkgY29uc3QgZmluYWwgeyByZXR1cm4gTWVkaWFQbGF5ZXJFbmdpbmVJ
ZGVudGlmaWVyczo6R1N0cmVhbWVyTWVkaWFTdHJlYW1JZGVudGlmaWVyKCk7IH07CisKKyAgICBz
dGQ6OnVuaXF1ZV9wdHI8TWVkaWFQbGF5ZXJQcml2YXRlSW50ZXJmYWNlPiBjcmVhdGVNZWRpYUVu
Z2luZVBsYXllcihNZWRpYVBsYXllciogcGxheWVyKSBjb25zdCBmaW5hbAorICAgIHsKKyAgICAg
ICAgcmV0dXJuIG1ha2VVbmlxdWU8TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyPihwbGF5ZXIp
OworICAgIH0KKworICAgIHZvaWQgZ2V0U3VwcG9ydGVkVHlwZXMoSGFzaFNldDxTdHJpbmcsIEFT
Q0lJQ2FzZUluc2Vuc2l0aXZlSGFzaD4mIHR5cGVzKSBjb25zdCBmaW5hbAorICAgIHsKKyAgICAg
ICAgcmV0dXJuIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6Z2V0U3VwcG9ydGVkVHlwZXMo
dHlwZXMpOworICAgIH0KKworICAgIE1lZGlhUGxheWVyOjpTdXBwb3J0c1R5cGUgc3VwcG9ydHNU
eXBlQW5kQ29kZWNzKGNvbnN0IE1lZGlhRW5naW5lU3VwcG9ydFBhcmFtZXRlcnMmIHBhcmFtZXRl
cnMpIGNvbnN0IGZpbmFsCisgICAgeworICAgICAgICByZXR1cm4gTWVkaWFQbGF5ZXJQcml2YXRl
R1N0cmVhbWVyOjpzdXBwb3J0c1R5cGUocGFyYW1ldGVycyk7CisgICAgfQorCisgICAgYm9vbCBz
dXBwb3J0c0tleVN5c3RlbShjb25zdCBTdHJpbmcmIGtleVN5c3RlbSwgY29uc3QgU3RyaW5nJiBt
aW1lVHlwZSkgY29uc3QgZmluYWwKKyAgICB7CisgICAgICAgIHJldHVybiBNZWRpYVBsYXllclBy
aXZhdGVHU3RyZWFtZXI6OnN1cHBvcnRzS2V5U3lzdGVtKGtleVN5c3RlbSwgbWltZVR5cGUpOwor
ICAgIH0KK307CisKIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpyZWdpc3Rlck1l
ZGlhRW5naW5lKE1lZGlhRW5naW5lUmVnaXN0cmFyIHJlZ2lzdHJhcikKIHsKICAgICBpbml0aWFs
aXplRGVidWdDYXRlZ29yeSgpOwogCi0gICAgaWYgKGlzQXZhaWxhYmxlKCkpIHsKLSAgICAgICAg
cmVnaXN0cmFyKFtdKE1lZGlhUGxheWVyKiBwbGF5ZXIpIHsgcmV0dXJuIG1ha2VVbmlxdWU8TWVk
aWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyPihwbGF5ZXIpOyB9LAotICAgICAgICAgICAgZ2V0U3Vw
cG9ydGVkVHlwZXMsIHN1cHBvcnRzVHlwZSwgbnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0ciwgc3Vw
cG9ydHNLZXlTeXN0ZW0pOwotICAgIH0KKyAgICBpZiAoaXNBdmFpbGFibGUoKSkKKyAgICAgICAg
cmVnaXN0cmFyKG1ha2VVbmlxdWU8TWVkaWFQbGF5ZXJGYWN0b3J5R1N0cmVhbWVyPigpKTsKIH0K
IAogdm9pZCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6OmxvYWRGdWxsKGNvbnN0IFN0cmlu
ZyYgdXJsU3RyaW5nLCBjb25zdCBTdHJpbmcmIHBpcGVsaW5lTmFtZSkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9tc2UvTWVkaWFQbGF5ZXJQ
cml2YXRlR1N0cmVhbWVyTVNFLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2dzdHJlYW1lci9tc2UvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyTVNFLmNwcAppbmRleCBk
YzI0NWI0N2RlM2RlNzJmYWMyMzY3MmU1ZjZlZmQ0YjM3NjI5YjRiLi44MzY3OGRlNWM1NGYzNmFm
NDhiNWE1ZGFkZjczYmJmM2UyMzYwZjBhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvbXNlL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lck1T
RS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL21z
ZS9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJNU0UuY3BwCkBAIC03MiwxNCArNzIsMzcgQEAg
R1NUX0RFQlVHX0NBVEVHT1JZKHdlYmtpdF9tc2VfZGVidWcpOwogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKK2NsYXNzIE1lZGlhUGxheWVyRmFjdG9yeUdTdHJlYW1lck1TRSA6IHB1YmxpYyBNZWRp
YVBsYXllckZhY3RvcnkgeworcHVibGljOgorICAgIFN0cmluZyBpZGVudGlmaWVyKCkgY29uc3Qg
ZmluYWwgeyByZXR1cm4gTWVkaWFQbGF5ZXJFbmdpbmVJZGVudGlmaWVyczo6R1N0cmVhbWVyTVNF
TWVkaWFFbmdpbmVJZGVudGlmaWVyKCk7IH07CisKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8TWVkaWFQ
bGF5ZXJQcml2YXRlSW50ZXJmYWNlPiBjcmVhdGVNZWRpYUVuZ2luZVBsYXllcihNZWRpYVBsYXll
ciogcGxheWVyKSBjb25zdCBmaW5hbAorICAgIHsKKyAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8
TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyTVNFPihwbGF5ZXIpOworICAgIH0KKworICAgIHZv
aWQgZ2V0U3VwcG9ydGVkVHlwZXMoSGFzaFNldDxTdHJpbmcsIEFTQ0lJQ2FzZUluc2Vuc2l0aXZl
SGFzaD4mIHR5cGVzKSBjb25zdCBmaW5hbAorICAgIHsKKyAgICAgICAgcmV0dXJuIE1lZGlhUGxh
eWVyUHJpdmF0ZUdTdHJlYW1lck1TRTo6Z2V0U3VwcG9ydGVkVHlwZXModHlwZXMpOworICAgIH0K
KworICAgIE1lZGlhUGxheWVyOjpTdXBwb3J0c1R5cGUgc3VwcG9ydHNUeXBlQW5kQ29kZWNzKGNv
bnN0IE1lZGlhRW5naW5lU3VwcG9ydFBhcmFtZXRlcnMmIHBhcmFtZXRlcnMpIGNvbnN0IGZpbmFs
CisgICAgeworICAgICAgICByZXR1cm4gTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyTVNFOjpz
dXBwb3J0c1R5cGUocGFyYW1ldGVycyk7CisgICAgfQorCisgICAgYm9vbCBzdXBwb3J0c0tleVN5
c3RlbShjb25zdCBTdHJpbmcmIGtleVN5c3RlbSwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSkgY29u
c3QgZmluYWwKKyAgICB7CisgICAgICAgIHJldHVybiBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFt
ZXJNU0U6OnN1cHBvcnRzS2V5U3lzdGVtKGtleVN5c3RlbSwgbWltZVR5cGUpOworICAgIH0KK307
CisKIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyTVNFOjpyZWdpc3Rlck1lZGlhRW5n
aW5lKE1lZGlhRW5naW5lUmVnaXN0cmFyIHJlZ2lzdHJhcikKIHsKICAgICBpbml0aWFsaXplR1N0
cmVhbWVyQW5kUmVnaXN0ZXJXZWJLaXRFbGVtZW50cygpOwogICAgIEdTVF9ERUJVR19DQVRFR09S
WV9JTklUKHdlYmtpdF9tc2VfZGVidWcsICJ3ZWJraXRtc2UiLCAwLCAiV2ViS2l0IE1TRSBtZWRp
YSBwbGF5ZXIiKTsKLSAgICBpZiAoaXNBdmFpbGFibGUoKSkgewotICAgICAgICByZWdpc3RyYXIo
W10oTWVkaWFQbGF5ZXIqIHBsYXllcikgeyByZXR1cm4gbWFrZVVuaXF1ZTxNZWRpYVBsYXllclBy
aXZhdGVHU3RyZWFtZXJNU0U+KHBsYXllcik7IH0sCi0gICAgICAgICAgICBnZXRTdXBwb3J0ZWRU
eXBlcywgc3VwcG9ydHNUeXBlLCBudWxscHRyLCBudWxscHRyLCBudWxscHRyLCBzdXBwb3J0c0tl
eVN5c3RlbSk7Ci0gICAgfQorICAgIGlmIChpc0F2YWlsYWJsZSgpKQorICAgICAgICByZWdpc3Ry
YXIobWFrZVVuaXF1ZTxNZWRpYVBsYXllckZhY3RvcnlHU3RyZWFtZXI+KCkpOwogfQogCiBNZWRp
YVBsYXllclByaXZhdGVHU3RyZWFtZXJNU0U6Ok1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lck1T
RShNZWRpYVBsYXllciogcGxheWVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvaG9sZXB1bmNoL01lZGlhUGxheWVyUHJpdmF0ZUhvbGVQdW5jaC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ob2xlcHVuY2gvTWVkaWFQbGF5ZXJQcml2
YXRlSG9sZVB1bmNoLmNwcAppbmRleCAwZjA4YzE5ZGJkYmU2OWIwNmY3Yjc1NTNmOGFiNDk3ZDQ3
ZTM3N2E5Li4xNmFiYzZkZmQwZmZiODQ4NjI3OThmZmNlOWI2YmM3MDE2MDZkYjM1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ob2xlcHVuY2gvTWVkaWFQbGF5
ZXJQcml2YXRlSG9sZVB1bmNoLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9ob2xlcHVuY2gvTWVkaWFQbGF5ZXJQcml2YXRlSG9sZVB1bmNoLmNwcApAQCAtMTM5LDEw
ICsxMzksMjkgQEAgTWVkaWFQbGF5ZXI6OlN1cHBvcnRzVHlwZSBNZWRpYVBsYXllclByaXZhdGVI
b2xlUHVuY2g6OnN1cHBvcnRzVHlwZShjb25zdCBNZWRpYUUKICAgICByZXR1cm4gTWVkaWFQbGF5
ZXI6OklzTm90U3VwcG9ydGVkOwogfQogCitjbGFzcyBNZWRpYVBsYXllckZhY3RvcnlIb2xlUHVu
Y2ggOiBwdWJsaWMgTWVkaWFQbGF5ZXJGYWN0b3J5IHsKK3B1YmxpYzoKKyAgICBTdHJpbmcgaWRl
bnRpZmllcigpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIE1lZGlhUGxheWVyRW5naW5lSWRlbnRpZmll
cnM6OmhvbGVQdW5jaE1lZGlhRW5naW5lSWRlbnRpZmllcigpOyB9OworCisgICAgc3RkOjp1bmlx
dWVfcHRyPE1lZGlhUGxheWVyUHJpdmF0ZUludGVyZmFjZT4gY3JlYXRlTWVkaWFFbmdpbmVQbGF5
ZXIoTWVkaWFQbGF5ZXIqIHBsYXllcikgY29uc3QgZmluYWwKKyAgICB7CisgICAgICAgIHJldHVy
biBtYWtlVW5pcXVlPE1lZGlhUGxheWVyUHJpdmF0ZUhvbGVQdW5jaD4ocGxheWVyKTsKKyAgICB9
CisKKyAgICB2b2lkIGdldFN1cHBvcnRlZFR5cGVzKEhhc2hTZXQ8U3RyaW5nLCBBU0NJSUNhc2VJ
bnNlbnNpdGl2ZUhhc2g+JiB0eXBlcykgY29uc3QgZmluYWwKKyAgICB7CisgICAgICAgIHJldHVy
biBNZWRpYVBsYXllclByaXZhdGVIb2xlUHVuY2g6OmdldFN1cHBvcnRlZFR5cGVzKHR5cGVzKTsK
KyAgICB9CisKKyAgICBNZWRpYVBsYXllcjo6U3VwcG9ydHNUeXBlIHN1cHBvcnRzVHlwZUFuZENv
ZGVjcyhjb25zdCBNZWRpYUVuZ2luZVN1cHBvcnRQYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzKSBjb25z
dCBmaW5hbAorICAgIHsKKyAgICAgICAgcmV0dXJuIE1lZGlhUGxheWVyUHJpdmF0ZUhvbGVQdW5j
aDo6c3VwcG9ydHNUeXBlKHBhcmFtZXRlcnMpOworICAgIH0KK307CisKIHZvaWQgTWVkaWFQbGF5
ZXJQcml2YXRlSG9sZVB1bmNoOjpyZWdpc3Rlck1lZGlhRW5naW5lKE1lZGlhRW5naW5lUmVnaXN0
cmFyIHJlZ2lzdHJhcikKIHsKLSAgICByZWdpc3RyYXIoW10oTWVkaWFQbGF5ZXIqIHBsYXllcikg
eyByZXR1cm4gbWFrZVVuaXF1ZTxNZWRpYVBsYXllclByaXZhdGVIb2xlUHVuY2g+KHBsYXllcik7
IH0sCi0gICAgICAgIGdldFN1cHBvcnRlZFR5cGVzLCBzdXBwb3J0c1R5cGUsIG51bGxwdHIsIG51
bGxwdHIsIG51bGxwdHIsIG51bGxwdHIpOworICAgIHJlZ2lzdHJhcihtYWtlVW5pcXVlPE1lZGlh
UGxheWVyRmFjdG9yeUhvbGVQdW5jaD4oKSk7CiB9CiAKIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRl
SG9sZVB1bmNoOjpub3RpZnlSZWFkeVN0YXRlKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9NZWRpYVBsYXllclByaXZhdGVNZWRpYUZvdW5kYXRpb24u
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL01lZGlhUGxheWVyUHJp
dmF0ZU1lZGlhRm91bmRhdGlvbi5jcHAKaW5kZXggNmQ2NGFlOWE2ZTNhNDE3ZmIxNGYxMjE2NmY2
OGQzYzlhNTUyNjZkZS4uNTVkNTk3MmMxYjBkN2JmMWY2NWJjNGNlNDAxYWM3Nzc4NzllNjExZCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL01lZGlhUGxh
eWVyUHJpdmF0ZU1lZGlhRm91bmRhdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3Mvd2luL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhRm91bmRhdGlvbi5jcHAKQEAg
LTc5LDEyICs3OSwzMCBAQCBNZWRpYVBsYXllclByaXZhdGVNZWRpYUZvdW5kYXRpb246On5NZWRp
YVBsYXllclByaXZhdGVNZWRpYUZvdW5kYXRpb24oKQogICAgIGVuZFNlc3Npb24oKTsKIH0KIAor
Y2xhc3MgTWVkaWFQbGF5ZXJGYWN0b3J5TWVkaWFGb3VuZGF0aW9uIDogcHVibGljIE1lZGlhUGxh
eWVyRmFjdG9yeSB7CitwdWJsaWM6CisgICAgU3RyaW5nIGlkZW50aWZpZXIoKSBjb25zdCBmaW5h
bCB7IHJldHVybiBNZWRpYVBsYXllckVuZ2luZUlkZW50aWZpZXJzOjpNZWRpYUZvdW5kYXRpb25N
ZWRpYUVuZ2luZUlkZW50aWZpZXIoKTsgfTsKKworICAgIHN0ZDo6dW5pcXVlX3B0cjxNZWRpYVBs
YXllclByaXZhdGVJbnRlcmZhY2U+IGNyZWF0ZU1lZGlhRW5naW5lUGxheWVyKE1lZGlhUGxheWVy
KiBwbGF5ZXIpIGNvbnN0IGZpbmFsCisgICAgeworICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxN
ZWRpYVBsYXllclByaXZhdGVNZWRpYUZvdW5kYXRpb24+KHBsYXllcik7CisgICAgfQorCisgICAg
dm9pZCBnZXRTdXBwb3J0ZWRUeXBlcyhIYXNoU2V0PFN0cmluZywgQVNDSUlDYXNlSW5zZW5zaXRp
dmVIYXNoPiYgdHlwZXMpIGNvbnN0IGZpbmFsCisgICAgeworICAgICAgICByZXR1cm4gTWVkaWFQ
bGF5ZXJQcml2YXRlTWVkaWFGb3VuZGF0aW9uOjpnZXRTdXBwb3J0ZWRUeXBlcyh0eXBlcyk7Cisg
ICAgfQorCisgICAgTWVkaWFQbGF5ZXI6OlN1cHBvcnRzVHlwZSBzdXBwb3J0c1R5cGVBbmRDb2Rl
Y3MoY29uc3QgTWVkaWFFbmdpbmVTdXBwb3J0UGFyYW1ldGVycyYgcGFyYW1ldGVycykgY29uc3Qg
ZmluYWwKKyAgICB7CisgICAgICAgIHJldHVybiBNZWRpYVBsYXllclByaXZhdGVNZWRpYUZvdW5k
YXRpb246OnN1cHBvcnRzVHlwZShwYXJhbWV0ZXJzKTsKKyAgICB9Cit9OworCiB2b2lkIE1lZGlh
UGxheWVyUHJpdmF0ZU1lZGlhRm91bmRhdGlvbjo6cmVnaXN0ZXJNZWRpYUVuZ2luZShNZWRpYUVu
Z2luZVJlZ2lzdHJhciByZWdpc3RyYXIpCiB7Ci0gICAgaWYgKGlzQXZhaWxhYmxlKCkpIHsKLSAg
ICAgICAgcmVnaXN0cmFyKFtdKE1lZGlhUGxheWVyKiBwbGF5ZXIpIHsgcmV0dXJuIG1ha2VVbmlx
dWU8TWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFGb3VuZGF0aW9uPihwbGF5ZXIpOyB9LAotICAgICAg
ICAgICAgZ2V0U3VwcG9ydGVkVHlwZXMsIHN1cHBvcnRzVHlwZSwgMCwgMCwgMCwgMCk7Ci0gICAg
fQorICAgIGlmIChpc0F2YWlsYWJsZSgpKQorICAgICAgICByZWdpc3RyYXIobWFrZVVuaXF1ZTxN
ZWRpYVBsYXllckZhY3RvcnlNZWRpYUZvdW5kYXRpb24+KCkpOwogfQogCiBib29sIE1lZGlhUGxh
eWVyUHJpdmF0ZU1lZGlhRm91bmRhdGlvbjo6aXNBdmFpbGFibGUoKSAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svbWVkaWFzb3VyY2UvTW9ja01lZGlhUGxheWVyTWVk
aWFTb3VyY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9tZWRpYXNvdXJjZS9N
b2NrTWVkaWFQbGF5ZXJNZWRpYVNvdXJjZS5jcHAKaW5kZXggMzg3YTIxZGFmNDU1MjM5NjhhZWU0
Zjc5NDE5ZDNkOGI4ODY5MGQ3Yy4uOWYyZjY3NTM2YTQ5NjQ4Yjg3YTZlNTFlNWM1ZGNlMWJiOTJh
MjZmMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9tZWRpYXNvdXJj
ZS9Nb2NrTWVkaWFQbGF5ZXJNZWRpYVNvdXJjZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbW9jay9tZWRpYXNvdXJjZS9Nb2NrTWVkaWFQbGF5ZXJNZWRpYVNvdXJjZS5jcHAKQEAg
LTM3LDExICszNywyNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK2NsYXNzIE1lZGlhUGxh
eWVyRmFjdG9yeU1lZGlhU291cmNlTW9jayA6IHB1YmxpYyBNZWRpYVBsYXllckZhY3Rvcnkgewor
cHVibGljOgorICAgIFN0cmluZyBpZGVudGlmaWVyKCkgY29uc3QgZmluYWwgeyByZXR1cm4gIk1v
Y2tNZWRpYVBsYXllck1lZGlhU291cmNlIjsgfTsKKworICAgIHN0ZDo6dW5pcXVlX3B0cjxNZWRp
YVBsYXllclByaXZhdGVJbnRlcmZhY2U+IGNyZWF0ZU1lZGlhRW5naW5lUGxheWVyKE1lZGlhUGxh
eWVyKiBwbGF5ZXIpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1ha2VVbmlxdWU8TW9ja01lZGlhUGxh
eWVyTWVkaWFTb3VyY2U+KHBsYXllcik7IH0KKworICAgIHZvaWQgZ2V0U3VwcG9ydGVkVHlwZXMo
SGFzaFNldDxTdHJpbmcsIEFTQ0lJQ2FzZUluc2Vuc2l0aXZlSGFzaD4mIHR5cGVzKSBjb25zdCBm
aW5hbAorICAgIHsKKyAgICAgICAgcmV0dXJuIE1vY2tNZWRpYVBsYXllck1lZGlhU291cmNlOjpn
ZXRTdXBwb3J0ZWRUeXBlcyh0eXBlcyk7CisgICAgfQorCisgICAgTWVkaWFQbGF5ZXI6OlN1cHBv
cnRzVHlwZSBzdXBwb3J0c1R5cGVBbmRDb2RlY3MoY29uc3QgTWVkaWFFbmdpbmVTdXBwb3J0UGFy
YW1ldGVycyYgcGFyYW1ldGVycykgY29uc3QgZmluYWwKKyAgICB7CisgICAgICAgIHJldHVybiBN
b2NrTWVkaWFQbGF5ZXJNZWRpYVNvdXJjZTo6c3VwcG9ydHNUeXBlKHBhcmFtZXRlcnMpOworICAg
IH0KK307CisKIC8vIE1lZGlhUGxheWVyIEVuaWduZSBTdXBwb3J0CiB2b2lkIE1vY2tNZWRpYVBs
YXllck1lZGlhU291cmNlOjpyZWdpc3Rlck1lZGlhRW5naW5lKE1lZGlhRW5naW5lUmVnaXN0cmFy
IHJlZ2lzdHJhcikKIHsKLSAgICByZWdpc3RyYXIoW10gKE1lZGlhUGxheWVyKiBwbGF5ZXIpIHsg
cmV0dXJuIG1ha2VVbmlxdWU8TW9ja01lZGlhUGxheWVyTWVkaWFTb3VyY2U+KHBsYXllcik7IH0s
IGdldFN1cHBvcnRlZFR5cGVzLAotICAgICAgICBzdXBwb3J0c1R5cGUsIDAsIDAsIDAsIDApOwor
ICAgIHJlZ2lzdHJhcihtYWtlVW5pcXVlPE1lZGlhUGxheWVyRmFjdG9yeU1lZGlhU291cmNlTW9j
az4oKSk7CiB9CiAKIC8vIEZJWE1FOiBXaGF0IGRvZXMgdGhlIHdvcmQgImNhY2hlIiBtZWFuIGhl
cmU/CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2VzLWlucHV0LnhjZmls
ZWxpc3QgYi9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2VzLWlucHV0LnhjZmlsZWxpc3QKaW5k
ZXggN2YwOGYyYjJmMTg1ODJlZDUwNDAzMmRjYWNiNTQ3ODZhMTY5YWQ1Zi4uM2VmMWNhODhmZmFl
YWEyOWRjZDgzYjc1NWMyYjNiZjI4OGYwZjJhYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9E
ZXJpdmVkU291cmNlcy1pbnB1dC54Y2ZpbGVsaXN0CisrKyBiL1NvdXJjZS9XZWJLaXQvRGVyaXZl
ZFNvdXJjZXMtaW5wdXQueGNmaWxlbGlzdApAQCAtMTYsNiArMTYsNyBAQCAkKEpBVkFTQ1JJUFRD
T1JFX1BSSVZBVEVfSEVBREVSU19ESVIpL3h4ZC5wbAogJChQUk9KRUNUX0RJUikvR1BVUHJvY2Vz
cy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluCiAkKFBST0pFQ1RfRElSKS9H
UFVQcm9jZXNzL0dQVVByb2Nlc3MubWVzc2FnZXMuaW4KICQoUFJPSkVDVF9ESVIpL0dQVVByb2Nl
c3MvbWFjL2NvbS5hcHBsZS5XZWJLaXQuR1BVUHJvY2Vzcy5zYi5pbgorJChQUk9KRUNUX0RJUikv
R1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eS5tZXNzYWdlcy5p
bgogJChQUk9KRUNUX0RJUikvTmV0d29ya1Byb2Nlc3MvQ29va2llcy9XZWJDb29raWVNYW5hZ2Vy
Lm1lc3NhZ2VzLmluCiAkKFBST0pFQ1RfRElSKS9OZXR3b3JrUHJvY2Vzcy9DdXN0b21Qcm90b2Nv
bHMvTGVnYWN5Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyLm1lc3NhZ2VzLmluCiAkKFBST0pFQ1RfRElS
KS9OZXR3b3JrUHJvY2Vzcy9JbmRleGVkREIvV2ViSURCQ29ubmVjdGlvblRvQ2xpZW50Lm1lc3Nh
Z2VzLmluCkBAIC05Nyw2ICs5OCw3IEBAICQoUFJPSkVDVF9ESVIpL1dlYlByb2Nlc3MvQ2FjaGUv
V2ViQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbi5tZXNzYWdlcy5pbgogJChQUk9KRUNUX0RJUikvV2Vi
UHJvY2Vzcy9EYXRhYmFzZXMvSW5kZXhlZERCL1dlYklEQkNvbm5lY3Rpb25Ub1NlcnZlci5tZXNz
YWdlcy5pbgogJChQUk9KRUNUX0RJUikvV2ViUHJvY2Vzcy9GdWxsU2NyZWVuL1dlYkZ1bGxTY3Jl
ZW5NYW5hZ2VyLm1lc3NhZ2VzLmluCiAkKFBST0pFQ1RfRElSKS9XZWJQcm9jZXNzL0dQVS9HUFVQ
cm9jZXNzQ29ubmVjdGlvbi5tZXNzYWdlcy5pbgorJChQUk9KRUNUX0RJUikvV2ViUHJvY2Vzcy9H
UFUvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyLm1lc3NhZ2VzLmluCiAkKFBST0pFQ1Rf
RElSKS9XZWJQcm9jZXNzL0dlb2xvY2F0aW9uL1dlYkdlb2xvY2F0aW9uTWFuYWdlci5tZXNzYWdl
cy5pbgogJChQUk9KRUNUX0RJUikvV2ViUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzQ29u
bmVjdGlvbi5tZXNzYWdlcy5pbgogJChQUk9KRUNUX0RJUikvV2ViUHJvY2Vzcy9OZXR3b3JrL1dl
YlJlc291cmNlTG9hZGVyLm1lc3NhZ2VzLmluCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0Rl
cml2ZWRTb3VyY2VzLW91dHB1dC54Y2ZpbGVsaXN0IGIvU291cmNlL1dlYktpdC9EZXJpdmVkU291
cmNlcy1vdXRwdXQueGNmaWxlbGlzdAppbmRleCAzYjFlOTQxMTcwMzhiZjBkMDRhMDc1N2Y1ZTZk
ODVlMzM0YmQ3NWFlLi5jOGEzYjQ5NWMwY2U1NTQxMjk5MjM2ODExMzIwMGRhMmI5NDA3OTI5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2VzLW91dHB1dC54Y2ZpbGVsaXN0
CisrKyBiL1NvdXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMtb3V0cHV0LnhjZmlsZWxpc3QKQEAg
LTExNCw2ICsxMTQsMTIgQEAgJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dl
YktpdDIvUGx1Z2luUHJveHlNZXNzYWdlc1JlcGxpZXMuaAogJChCVUlMVF9QUk9EVUNUU19ESVIp
L0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIvUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWFQcm94eU1l
c3NhZ2VSZWNlaXZlci5jcHAKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9X
ZWJLaXQyL1JlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhUHJveHlNZXNzYWdlcy5oCiAkKEJVSUxU
X1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9SZW1vdGVMYXllclRyZWVEcmF3
aW5nQXJlYVByb3h5TWVzc2FnZXNSZXBsaWVzLmgKKyQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJp
dmVkU291cmNlcy9XZWJLaXQyL1JlbW90ZU1lZGlhUGxheWVyTWFuYWdlck1lc3NhZ2VSZWNlaXZl
ci5jcHAKKyQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQyL1JlbW90
ZU1lZGlhUGxheWVyTWFuYWdlck1lc3NhZ2VzLmgKKyQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJp
dmVkU291cmNlcy9XZWJLaXQyL1JlbW90ZU1lZGlhUGxheWVyTWFuYWdlck1lc3NhZ2VzUmVwbGll
cy5oCiskKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9SZW1vdGVN
ZWRpYVBsYXllck1hbmFnZXJQcm94eU1lc3NhZ2VSZWNlaXZlci5jcHAKKyQoQlVJTFRfUFJPRFVD
VFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQyL1JlbW90ZU1lZGlhUGxheWVyTWFuYWdlclBy
b3h5TWVzc2FnZXMuaAorJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktp
dDIvUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHlNZXNzYWdlc1JlcGxpZXMuaAogJChCVUlM
VF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIvUmVtb3RlT2JqZWN0UmVnaXN0
cnlNZXNzYWdlUmVjZWl2ZXIuY3BwCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJj
ZXMvV2ViS2l0Mi9SZW1vdGVPYmplY3RSZWdpc3RyeU1lc3NhZ2VzLmgKICQoQlVJTFRfUFJPRFVD
VFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQyL1JlbW90ZU9iamVjdFJlZ2lzdHJ5TWVzc2Fn
ZXNSZXBsaWVzLmgKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMubWFr
ZSBiL1NvdXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMubWFrZQppbmRleCBiZTUyNWUxM2M1OWJi
ZDE0NTZlOGYwZDQyM2JhNjQ0MWNlOGIwOGRhLi45NmYzYTJlY2VmMzExOGNlMjNmMzg3NTFkNzJl
MmFiMDgzY2Y0YWM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2VzLm1h
a2UKKysrIGIvU291cmNlL1dlYktpdC9EZXJpdmVkU291cmNlcy5tYWtlCkBAIC0yNCw2ICsyNCw3
IEBAIFZQQVRIID0gXAogICAgICQoV2ViS2l0MikgXAogICAgICQoV2ViS2l0MikvR1BVUHJvY2Vz
cyBcCiAgICAgJChXZWJLaXQyKS9HUFVQcm9jZXNzL21hYyBcCisgICAgJChXZWJLaXQyKS9HUFVQ
cm9jZXNzL21lZGlhIFwKICAgICAkKFdlYktpdDIpL05ldHdvcmtQcm9jZXNzIFwKICAgICAkKFdl
YktpdDIpL05ldHdvcmtQcm9jZXNzL0Nvb2tpZXMgXAogICAgICQoV2ViS2l0MikvTmV0d29ya1By
b2Nlc3MvY2FjaGUgXApAQCAtNDksNiArNTAsNyBAQCBWUEFUSCA9IFwKICAgICAkKFdlYktpdDIp
L1dlYlByb2Nlc3MvRnVsbFNjcmVlbiBcCiAgICAgJChXZWJLaXQyKS9XZWJQcm9jZXNzL0dlb2xv
Y2F0aW9uIFwKICAgICAkKFdlYktpdDIpL1dlYlByb2Nlc3MvR1BVIFwKKyAgICAkKFdlYktpdDIp
L1dlYlByb2Nlc3MvR1BVL21lZGlhIFwKICAgICAkKFdlYktpdDIpL1dlYlByb2Nlc3MvSWNvbkRh
dGFiYXNlIFwKICAgICAkKFdlYktpdDIpL1dlYlByb2Nlc3MvTWVkaWFDYWNoZSBcCiAgICAgJChX
ZWJLaXQyKS9XZWJQcm9jZXNzL01lZGlhU3RyZWFtIFwKQEAgLTEzNSw2ICsxMzcsOCBAQCBNRVNT
QUdFX1JFQ0VJVkVSUyA9IFwKICAgICBQbHVnaW5Qcm9jZXNzUHJveHkgXAogICAgIFBsdWdpblBy
b3h5IFwKICAgICBSZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYVByb3h5IFwKKyAgICBSZW1vdGVN
ZWRpYVBsYXllck1hbmFnZXIgXAorICAgIFJlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5IFwK
ICAgICBSZW1vdGVPYmplY3RSZWdpc3RyeSBcCiAgICAgUmVtb3RlU2Nyb2xsaW5nQ29vcmRpbmF0
b3IgXAogICAgIFJlbW90ZVdlYkluc3BlY3RvclByb3h5IFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcCBiL1NvdXJjZS9X
ZWJLaXQvR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcAppbmRleCBiZDEz
OWZlNTMzMWJjY2UzNmMzMzQzYjE1MjE3ZDAxMWYyNTI0YzM4Li40N2E5YWMzY2MxZmQ3ZWFmZWZk
ZTZiOTQwM2IwY2FkY2EyYjY5YzJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nl
c3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9HUFVQ
cm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwCkBAIC0zNSw2ICszNSw4IEBACiAj
aW5jbHVkZSAiR1BVUHJvY2Vzc1Byb3h5TWVzc2FnZXMuaCIKICNpbmNsdWRlICJMb2dnaW5nLmgi
CiAjaW5jbHVkZSAiUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWFQcm94eU1lc3NhZ2VzLmgiCisj
aW5jbHVkZSAiUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHkuaCIKKyNpbmNsdWRlICJSZW1v
dGVNZWRpYVBsYXllck1hbmFnZXJQcm94eU1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiUmVtb3RlU2Ny
b2xsaW5nQ29vcmRpbmF0b3JUcmFuc2FjdGlvbi5oIgogI2luY2x1ZGUgIldlYkNvcmVBcmd1bWVu
dENvZGVycy5oIgogI2luY2x1ZGUgIldlYkVycm9ycy5oIgpAQCAtNTIsNiArNTQsNyBAQCBHUFVD
b25uZWN0aW9uVG9XZWJQcm9jZXNzOjpHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzKEdQVVByb2Nl
c3MmIGdwdVByb2Nlc3MsIFdlYgogICAgIDogbV9jb25uZWN0aW9uKElQQzo6Q29ubmVjdGlvbjo6
Y3JlYXRlU2VydmVyQ29ubmVjdGlvbihjb25uZWN0aW9uSWRlbnRpZmllciwgKnRoaXMpKQogICAg
ICwgbV9ncHVQcm9jZXNzKGdwdVByb2Nlc3MpCiAgICAgLCBtX3dlYlByb2Nlc3NJZGVudGlmaWVy
KHdlYlByb2Nlc3NJZGVudGlmaWVyKQorICAgICwgbV9yZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQ
cm94eShtYWtlVW5pcXVlPFJlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5PigqdGhpcykpCiB7
CiAgICAgUkVMRUFTRV9BU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOwogICAgIG1fY29ubmVjdGlv
bi0+b3BlbigpOwpAQCAtNjEsNiArNjQsNyBAQCBHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjp+
R1BVQ29ubmVjdGlvblRvV2ViUHJvY2VzcygpCiB7CiAgICAgUkVMRUFTRV9BU1NFUlQoUnVuTG9v
cDo6aXNNYWluKCkpOwogCisgICAgbV9yZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eSA9IG51
bGxwdHI7CiAgICAgbV9jb25uZWN0aW9uLT5pbnZhbGlkYXRlKCk7CiB9CiAKQEAgLTc0LDYgKzc4
LDI2IEBAIHZvaWQgR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6ZGlkUmVjZWl2ZUludmFsaWRN
ZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjCiAgICAgQ1JBU0goKTsKIH0KIAordm9pZCBH
UFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpkaWRSZWNlaXZlTWVzc2FnZShJUEM6OkNvbm5lY3Rp
b24mIGNvbm5lY3Rpb24sIElQQzo6RGVjb2RlciYgZGVjb2RlcikKK3sKKyAgICBpZiAoZGVjb2Rl
ci5tZXNzYWdlUmVjZWl2ZXJOYW1lKCkgPT0gTWVzc2FnZXM6OlJlbW90ZU1lZGlhUGxheWVyTWFu
YWdlclByb3h5OjptZXNzYWdlUmVjZWl2ZXJOYW1lKCkpIHsKKyAgICAgICAgaWYgKG1fcmVtb3Rl
TWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHkpCisgICAgICAgICAgICBtX3JlbW90ZU1lZGlhUGxheWVy
TWFuYWdlclByb3h5LT5kaWRSZWNlaXZlTWVzc2FnZUZyb21XZWJQcm9jZXNzKGNvbm5lY3Rpb24s
IGRlY29kZXIpOworICAgICAgICByZXR1cm47CisgICAgfQorfQorCit2b2lkIEdQVUNvbm5lY3Rp
b25Ub1dlYlByb2Nlc3M6OmRpZFJlY2VpdmVTeW5jTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mIGNv
bm5lY3Rpb24sIElQQzo6RGVjb2RlciYgZGVjb2Rlciwgc3RkOjp1bmlxdWVfcHRyPElQQzo6RW5j
b2Rlcj4mIHJlcGx5RW5jb2RlcikKK3sKKyAgICBpZiAoZGVjb2Rlci5tZXNzYWdlUmVjZWl2ZXJO
YW1lKCkgPT0gTWVzc2FnZXM6OlJlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5OjptZXNzYWdl
UmVjZWl2ZXJOYW1lKCkpIHsKKyAgICAgICAgaWYgKG1fcmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2Vy
UHJveHkpCisgICAgICAgICAgICBtX3JlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5LT5kaWRS
ZWNlaXZlU3luY01lc3NhZ2VGcm9tV2ViUHJvY2Vzcyhjb25uZWN0aW9uLCBkZWNvZGVyLCByZXBs
eUVuY29kZXIpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgQVNTRVJUX05PVF9SRUFD
SEVEKCk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAogCiAjZW5kaWYgLy8gRU5BQkxFKEdQ
VV9QUk9DRVNTKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQVUNvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3MuaCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVDb25uZWN0
aW9uVG9XZWJQcm9jZXNzLmgKaW5kZXggYzY0YTQzZTY0YWY1MTBjMDc0ZDcwODZmN2I2NDZmYTZj
NmE0ZjQ2Ny4uODYyNWIzY2I2OTJiMDczNThjYTlmODYxMTM2N2I3NTk2NTUyMjVmNyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3Mu
aAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vz
cy5oCkBAIC0zNSw2ICszNSw3IEBACiBuYW1lc3BhY2UgV2ViS2l0IHsKIAogY2xhc3MgR1BVUHJv
Y2VzczsKK2NsYXNzIFJlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5OwogCiBjbGFzcyBHUFVD
b25uZWN0aW9uVG9XZWJQcm9jZXNzCiAgICAgOiBwdWJsaWMgUmVmQ291bnRlZDxHUFVDb25uZWN0
aW9uVG9XZWJQcm9jZXNzPgpAQCAtNTcsMTAgKzU4LDEzIEBAIHByaXZhdGU6CiAgICAgLy8gSVBD
OjpDb25uZWN0aW9uOjpDbGllbnQKICAgICB2b2lkIGRpZENsb3NlKElQQzo6Q29ubmVjdGlvbiYp
IG92ZXJyaWRlOwogICAgIHZvaWQgZGlkUmVjZWl2ZUludmFsaWRNZXNzYWdlKElQQzo6Q29ubmVj
dGlvbiYsIElQQzo6U3RyaW5nUmVmZXJlbmNlIG1lc3NhZ2VSZWNlaXZlck5hbWUsIElQQzo6U3Ry
aW5nUmVmZXJlbmNlIG1lc3NhZ2VOYW1lKSBvdmVycmlkZTsKKyAgICB2b2lkIGRpZFJlY2VpdmVN
ZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYpIG92ZXJyaWRlOworICAgIHZv
aWQgZGlkUmVjZWl2ZVN5bmNNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYs
IHN0ZDo6dW5pcXVlX3B0cjxJUEM6OkVuY29kZXI+Jikgb3ZlcnJpZGU7CiAKICAgICBSZWY8SVBD
OjpDb25uZWN0aW9uPiBtX2Nvbm5lY3Rpb247CiAgICAgUmVmPEdQVVByb2Nlc3M+IG1fZ3B1UHJv
Y2VzczsKICAgICBjb25zdCBXZWJDb3JlOjpQcm9jZXNzSWRlbnRpZmllciBtX3dlYlByb2Nlc3NJ
ZGVudGlmaWVyOworICAgIHN0ZDo6dW5pcXVlX3B0cjxSZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQ
cm94eT4gbV9yZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eTsKIH07CiAKIH0gLy8gbmFtZXNw
YWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1Jl
bW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vz
cy9tZWRpYS9SZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eS5jcHAKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmEy
Mjk3MjQyYzkyZmVlN2Q1NzY2YTUxMDgyMzRjMmQ5Yzc0ZTE4MgotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQ
cm94eS5jcHAKQEAgLTAsMCArMSwxNDQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElT
JycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JT
CisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisg
KiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQg
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAq
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmln
LmgiCisjaW5jbHVkZSAiUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHkuaCIKKworI2lmIEVO
QUJMRShHUFVfUFJPQ0VTUykKKworI2luY2x1ZGUgIkdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3Mu
aCIKKyNpbmNsdWRlICJSZW1vdGVNZWRpYVBsYXllck1hbmFnZXJNZXNzYWdlcy5oIgorI2luY2x1
ZGUgIlJlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5TWVzc2FnZXMuaCIKKyNpbmNsdWRlICJX
ZWJDb3JlQXJndW1lbnRDb2RlcnMuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL01lZGlhUGxheWVyLmg+
CisjaW5jbHVkZSA8V2ViQ29yZS9NZWRpYVBsYXllclByaXZhdGUuaD4KKyNpbmNsdWRlIDx3dGYv
VW5pcXVlUmVmLmg+CisKKyNkZWZpbmUgTUVTU0FHRV9DSEVDS19DT05URVhUSUQoaWRlbnRpZmll
cikgTUVTU0FHRV9DSEVDS19CQVNFKG1fcHJveGllcy5pc1ZhbGlkS2V5KGlkZW50aWZpZXIpLCAm
bV93ZWJQcm9jZXNzQ29ubmVjdGlvbi5jb25uZWN0aW9uKCkpCisKK25hbWVzcGFjZSBXZWJLaXQg
ewordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CisKKyNpZiAhUkVMRUFTRV9MT0dfRElTQUJMRUQK
K3N0YXRpYyBSZWZQdHI8TG9nZ2VyPiYgbnVsbExvZ2dlcigpCit7CisgICAgc3RhdGljIE5ldmVy
RGVzdHJveWVkPFJlZlB0cjxMb2dnZXI+PiBsb2dnZXI7CisgICAgcmV0dXJuIGxvZ2dlcjsKK30K
KyNlbmRpZgorCitjbGFzcyBSZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eTo6UGxheWVyUHJv
eHkKKyAgICA6IHB1YmxpYyBNZWRpYVBsYXllckNsaWVudCB7CisgICAgV1RGX01BS0VfRkFTVF9B
TExPQ0FURUQ7CitwdWJsaWM6CisgICAgUGxheWVyUHJveHkoY29uc3QgTWVkaWFQbGF5ZXJQcml2
YXRlUmVtb3RlSWRlbnRpZmllciYgaWQsIFJlZjxJUEM6OkNvbm5lY3Rpb24+JiYgY29ubmVjdGlv
biwgY29uc3QgU3RyaW5nJiByZW1vdGVFbmdpbmVJZGVudGlmaWVyKQorICAgICAgICA6IG1faWQo
aWQpCisgICAgICAgICwgbV9jb25uZWN0aW9uKFdURk1vdmUoY29ubmVjdGlvbikpCisgICAgICAg
ICwgbV9yZW1vdGVFbmdpbmVJZGVudGlmaWVyKHJlbW90ZUVuZ2luZUlkZW50aWZpZXIpCisgICAg
eworICAgIH0KKworICAgIHZpcnR1YWwgflBsYXllclByb3h5KCkKKyAgICB7CisgICAgfQorCitw
cml2YXRlOgorCisgICAgLy8gTWVkaWFQbGF5ZXJDbGllbnQKKyAgICBjb25zdCBWZWN0b3I8V2Vi
Q29yZTo6Q29udGVudFR5cGU+JiBtZWRpYUNvbnRlbnRUeXBlc1JlcXVpcmluZ0hhcmR3YXJlU3Vw
cG9ydCgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fdHlwZXNSZXF1aXJpbmdIYXJkd2FyZVN1cHBv
cnQ7IH0KKworI2lmICFSRUxFQVNFX0xPR19ESVNBQkxFRAorICAgIGNvbnN0IExvZ2dlciYgbWVk
aWFQbGF5ZXJMb2dnZXIoKSBmaW5hbAorICAgIHsKKyAgICAgICAgaWYgKCFudWxsTG9nZ2VyKCku
Z2V0KCkpIHsKKyAgICAgICAgICAgIG51bGxMb2dnZXIoKSA9IExvZ2dlcjo6Y3JlYXRlKHRoaXMp
OworICAgICAgICAgICAgbnVsbExvZ2dlcigpLT5zZXRFbmFibGVkKHRoaXMsIGZhbHNlKTsKKyAg
ICAgICAgfQorCisgICAgICAgIHJldHVybiAqbnVsbExvZ2dlcigpLmdldCgpOworICAgIH0KKyNl
bmRpZgorCitwcm90ZWN0ZWQ6CisgICAgTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlSWRlbnRpZmll
ciBtX2lkOworICAgIFJlZjxJUEM6OkNvbm5lY3Rpb24+IG1fY29ubmVjdGlvbjsKKyAgICBzdGQ6
OnVuaXF1ZV9wdHI8TWVkaWFQbGF5ZXJQcml2YXRlSW50ZXJmYWNlPiBtX3BsYXllcjsKKyAgICBT
dHJpbmcgbV9yZW1vdGVFbmdpbmVJZGVudGlmaWVyOworICAgIFZlY3RvcjxXZWJDb3JlOjpDb250
ZW50VHlwZT4gbV90eXBlc1JlcXVpcmluZ0hhcmR3YXJlU3VwcG9ydDsKK307CisKK1JlbW90ZU1l
ZGlhUGxheWVyTWFuYWdlclByb3h5OjpSZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eShHUFVD
b25uZWN0aW9uVG9XZWJQcm9jZXNzJiBjb25uZWN0aW9uKQorICAgIDogbV93ZWJQcm9jZXNzQ29u
bmVjdGlvbihjb25uZWN0aW9uKQoreworfQorCitSZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94
eTo6flJlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5KCkKK3sKK30KKwordm9pZCBSZW1vdGVN
ZWRpYVBsYXllck1hbmFnZXJQcm94eTo6Y3JlYXRlTWVkaWFQbGF5ZXIoY29uc3QgTWVkaWFQbGF5
ZXJQcml2YXRlUmVtb3RlSWRlbnRpZmllciYgaWQsIGNvbnN0IFN0cmluZyYmIHJlbW90ZUVuZ2lu
ZUlkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCBzdWNjZWVkZWQpPiYmIGNv
bXBsZXRpb25IYW5kbGVyKQoreworICAgIE1FU1NBR0VfQ0hFQ0tfQ09OVEVYVElEKGlkKTsKKwor
ICAgIEFTU0VSVCghbV9wcm94aWVzLmNvbnRhaW5zKGlkKSk7CisgICAgbV9wcm94aWVzLmFkZChp
ZCwgbWFrZVVuaXF1ZTxQbGF5ZXJQcm94eT4oaWQsIG1fd2ViUHJvY2Vzc0Nvbm5lY3Rpb24uY29u
bmVjdGlvbigpLCByZW1vdGVFbmdpbmVJZGVudGlmaWVyKSk7CisKKyAgICBjb21wbGV0aW9uSGFu
ZGxlcih0cnVlKTsKK30KKwordm9pZCBSZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eTo6Z2V0
U3VwcG9ydGVkVHlwZXMoY29uc3QgU3RyaW5nJiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoVmVj
dG9yPFN0cmluZz4mJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCit7CisgICAgLy8gRklYTUU6IHF1
ZXJ5IHRoZSBhcHByb3ByaWF0ZSBtZWRpYSBlbmdpbmUKKyAgICBjb21wbGV0aW9uSGFuZGxlcih7
ICJ2aWRlby9tcDQiLCAiYXVkaW8vbXA0IiB9KTsKK30KKwordm9pZCBSZW1vdGVNZWRpYVBsYXll
ck1hbmFnZXJQcm94eTo6c3VwcG9ydHNUeXBlKGNvbnN0IFN0cmluZyYmLCBjb25zdCBXZWJDb3Jl
OjpNZWRpYUVuZ2luZVN1cHBvcnRQYXJhbWV0ZXJzJiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
aW50KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyAgICBjb21wbGV0aW9uSGFuZGxlcigxKTsK
K30KKwordm9pZCBSZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eTo6b3JpZ2luc0luTWVkaWFD
YWNoZShjb25zdCBTdHJpbmcmJiwgY29uc3QgU3RyaW5nJiYsIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoVmVjdG9yPFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YT4mJik+JiYgY29tcGxldGlvbkhh
bmRsZXIpCit7CisgICAgY29tcGxldGlvbkhhbmRsZXIoeyB9KTsKK30KKwordm9pZCBSZW1vdGVN
ZWRpYVBsYXllck1hbmFnZXJQcm94eTo6Y2xlYXJNZWRpYUNhY2hlKGNvbnN0IFN0cmluZyYmLCBj
b25zdCBTdHJpbmcmJiwgV2FsbFRpbWUpCit7Cit9CisKK3ZvaWQgUmVtb3RlTWVkaWFQbGF5ZXJN
YW5hZ2VyUHJveHk6OmNsZWFyTWVkaWFDYWNoZUZvck9yaWdpbnMoY29uc3QgU3RyaW5nJiYsIGNv
bnN0IFN0cmluZyYmLCBWZWN0b3I8V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhPiYmKQorewor
fQorCit2b2lkIFJlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5OjpzdXBwb3J0c0tleVN5c3Rl
bShjb25zdCBTdHJpbmcmJiwgY29uc3QgU3RyaW5nJiYsIGNvbnN0IFN0cmluZyYmLCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQoreworICAgIGNvbXBs
ZXRpb25IYW5kbGVyKHsgfSk7Cit9CisKK30KKworI3VuZGVmIE1FU1NBR0VfQ0hFQ0tfQ09OVEVY
VElECisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlh
L1JlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nl
c3MvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHkuaApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kMTll
ZDM1ZGRiMDlhODVmMTdkNGY5ZTcyODA3Mjc4OGRhMTMzZTQ0Ci0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyTWFuYWdlclBy
b3h5LmgKQEAgLTAsMCArMSw3NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwor
ICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAq
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYg
RU5BQkxFKEdQVV9QUk9DRVNTKQorCisjaW5jbHVkZSAiQ29ubmVjdGlvbi5oIgorI2luY2x1ZGUg
Ik1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZUlkZW50aWZpZXIuaCIKKyNpbmNsdWRlICJNZXNzYWdl
UmVjZWl2ZXIuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL01lZGlhUGxheWVyLmg+CisKK25hbWVzcGFj
ZSBXZWJLaXQgeworCitjbGFzcyBHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzOworCitjbGFzcyBS
ZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eSA6IHByaXZhdGUgSVBDOjpNZXNzYWdlUmVjZWl2
ZXIgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOworcHVibGljOgorICAgIGV4cGxpY2l0
IFJlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5KEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3Mm
KTsKKyAgICB+UmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHkoKTsKKworICAgIEdQVUNvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3MmIHdlYlByb2Nlc3NDb25uZWN0aW9uKCkgY29uc3QgeyByZXR1cm4g
bV93ZWJQcm9jZXNzQ29ubmVjdGlvbjsgfQorICAgIHZvaWQgY2xlYXIoKTsKKworICAgIHZvaWQg
ZGlkUmVjZWl2ZU1lc3NhZ2VGcm9tV2ViUHJvY2VzcyhJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rp
b24sIElQQzo6RGVjb2RlciYgZGVjb2RlcikgeyBkaWRSZWNlaXZlTWVzc2FnZShjb25uZWN0aW9u
LCBkZWNvZGVyKTsgfQorICAgIHZvaWQgZGlkUmVjZWl2ZVN5bmNNZXNzYWdlRnJvbVdlYlByb2Nl
c3MoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBJUEM6OkRlY29kZXImIGRlY29kZXIsIHN0
ZDo6dW5pcXVlX3B0cjxJUEM6OkVuY29kZXI+JiBlbmNvZGVyKSB7IGRpZFJlY2VpdmVTeW5jTWVz
c2FnZShjb25uZWN0aW9uLCBkZWNvZGVyLCBlbmNvZGVyKTsgfQorcHJpdmF0ZToKKyAgICAvLyBJ
UEM6Ok1lc3NhZ2VSZWNlaXZlcgorICAgIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25u
ZWN0aW9uJiwgSVBDOjpEZWNvZGVyJikgZmluYWw7CisgICAgdm9pZCBkaWRSZWNlaXZlU3luY01l
c3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJiwgc3RkOjp1bmlxdWVfcHRyPElQ
Qzo6RW5jb2Rlcj4mKSBmaW5hbDsKKworICAgIHZvaWQgY3JlYXRlTWVkaWFQbGF5ZXIoY29uc3Qg
TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlSWRlbnRpZmllciYsIGNvbnN0IFN0cmluZyYmLCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKTsKKworICAgIHZvaWQgZ2V0U3VwcG9ydGVkVHlw
ZXMoY29uc3QgU3RyaW5nJiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoVmVjdG9yPFN0cmluZz4m
Jik+JiYpOworICAgIHZvaWQgc3VwcG9ydHNUeXBlKGNvbnN0IFN0cmluZyYmLCBjb25zdCBXZWJD
b3JlOjpNZWRpYUVuZ2luZVN1cHBvcnRQYXJhbWV0ZXJzJiYsIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoaW50KT4mJik7CisKKyAgICB2b2lkIG9yaWdpbnNJbk1lZGlhQ2FjaGUoY29uc3QgU3RyaW5n
JiYsIGNvbnN0IFN0cmluZyYmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFZlY3RvcjxXZWJDb3Jl
OjpTZWN1cml0eU9yaWdpbkRhdGE+JiYpPiYmKTsKKyAgICB2b2lkIGNsZWFyTWVkaWFDYWNoZShj
b25zdCBTdHJpbmcmJiwgY29uc3QgU3RyaW5nJiYsIFdhbGxUaW1lKTsKKyAgICB2b2lkIGNsZWFy
TWVkaWFDYWNoZUZvck9yaWdpbnMoY29uc3QgU3RyaW5nJiYsIGNvbnN0IFN0cmluZyYmLCBWZWN0
b3I8V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhPiYmKTsKKyAgICB2b2lkIHN1cHBvcnRzS2V5
U3lzdGVtKGNvbnN0IFN0cmluZyYmLCBjb25zdCBTdHJpbmcmJiwgY29uc3QgU3RyaW5nJiYsIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpOworCisKKyAgICBjbGFzcyBQbGF5ZXJQcm94
eTsKKyAgICBmcmllbmQgY2xhc3MgUGxheWVyUHJveHk7CisgICAgSGFzaE1hcDxNZWRpYVBsYXll
clByaXZhdGVSZW1vdGVJZGVudGlmaWVyLCBzdGQ6OnVuaXF1ZV9wdHI8UGxheWVyUHJveHk+PiBt
X3Byb3hpZXM7CisgICAgR1BVQ29ubmVjdGlvblRvV2ViUHJvY2VzcyYgbV93ZWJQcm9jZXNzQ29u
bmVjdGlvbjsKK307CisKK30KKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQ
VVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHkubWVzc2FnZXMuaW4g
Yi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2Vy
UHJveHkubWVzc2FnZXMuaW4KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOWIzNmUyNTEyZjlhNDk5YTRjYjE1MTE4YjQw
OGRmMTEzZTI0OGZlYgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vz
cy9tZWRpYS9SZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eS5tZXNzYWdlcy5pbgpAQCAtMCww
ICsxLDM3IEBACisjIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyMgYXJlIG1ldDoKKyMgMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorIyAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisjICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQg
SVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyMgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisjIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyMgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTCisjIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyMgQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyMg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTCisjIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisjIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisjIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YKKyMgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCisjaWYgRU5B
QkxFKFZJREVPKQorCittZXNzYWdlcyAtPiBSZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eSBO
b3RSZWZDb3VudGVkIHsKKyAgICBDcmVhdGVNZWRpYVBsYXllcihXZWJLaXQ6Ok1lZGlhUGxheWVy
UHJpdmF0ZVJlbW90ZUlkZW50aWZpZXIgaWQsIFN0cmluZyByZW1vdGVFbmdpbmVJZGVudGlmaWVy
KSAtPiAoYm9vbCBzdWNjZXNzKSBTeW5jaHJvbm91cworCisgICAgR2V0U3VwcG9ydGVkVHlwZXMo
U3RyaW5nIHJlbW90ZUVuZ2luZUlkZW50aWZpZXIpIC0+IChWZWN0b3I8U3RyaW5nPiB0eXBlcykg
U3luY2hyb25vdXMKKyAgICBTdXBwb3J0c1R5cGUoU3RyaW5nIHJlbW90ZUVuZ2luZUlkZW50aWZp
ZXIsIHN0cnVjdCBXZWJDb3JlOjpNZWRpYUVuZ2luZVN1cHBvcnRQYXJhbWV0ZXJzIHR5cGUpIC0+
IChpbnQgc3VwcG9ydCkgU3luY2hyb25vdXMKKyAgICBPcmlnaW5zSW5NZWRpYUNhY2hlKFN0cmlu
ZyByZW1vdGVFbmdpbmVJZGVudGlmaWVyLCBTdHJpbmcgcGF0aCkgLT4gKFZlY3RvcjxXZWJDb3Jl
OjpTZWN1cml0eU9yaWdpbkRhdGE+IG9yaWdpbnMpIFN5bmNocm9ub3VzCisgICAgQ2xlYXJNZWRp
YUNhY2hlKFN0cmluZyByZW1vdGVFbmdpbmVJZGVudGlmaWVyLCBTdHJpbmcgcGF0aCwgV2FsbFRp
bWUgbW9kaWZpZWRTaW5jZSkKKyAgICBDbGVhck1lZGlhQ2FjaGVGb3JPcmlnaW5zKFN0cmluZyBy
ZW1vdGVFbmdpbmVJZGVudGlmaWVyLCBTdHJpbmcgcGF0aCwgVmVjdG9yPFdlYkNvcmU6OlNlY3Vy
aXR5T3JpZ2luRGF0YT4gb3JpZ2lucykKKyAgICBTdXBwb3J0c0tleVN5c3RlbShTdHJpbmcgcmVt
b3RlRW5naW5lSWRlbnRpZmllciwgU3RyaW5nIGtleVN5c3RlbSwgU3RyaW5nIG1pbWVUeXBlKSAt
PiAoYm9vbCBzdXBwb3J0cykgU3luY2hyb25vdXMKK30KKworI2VuZGlmCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5IGIvU291cmNlL1dlYktpdC9T
Y3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5weQppbmRleCBlZDExYWMyNzI1MjI2ZTQ3YTJiNTZiY2M5
ZWNmMjIyZGFjMDAwOWFlLi5mMmU5ZWQ3YWI1NDAyZWY1MTE4OGY3ZThkYmUzOTZiYThhY2UwZmFk
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5Cisr
KyBiL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvbWVzc2FnZXMucHkKQEAgLTEsNCArMSw0
IEBACi0jIENvcHlyaWdodCAoQykgMjAxMC0yMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyMgQ29weXJpZ2h0IChDKSAyMDEwLTIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgogIwogIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yMTksMTAgKzIxOSwxMSBA
QCBkZWYgdHlwZXNfdGhhdF9jYW5ub3RfYmVfZm9yd2FyZF9kZWNsYXJlZCgpOgogICAgICAgICAn
V2ViQ29yZTo6U1dTZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllcicsCiAgICAgICAgICdXZWJLaXQ6
OkFjdGl2aXR5U3RhdGVDaGFuZ2VJRCcsCiAgICAgICAgICdXZWJLaXQ6OkxheWVySG9zdGluZ0Nv
bnRleHRJRCcsCi0gICAgICAgICdXZWJLaXQ6OlRyYW5zYWN0aW9uSUQnLAorICAgICAgICAnV2Vi
S2l0OjpNZWRpYVBsYXllclByaXZhdGVSZW1vdGVJZGVudGlmaWVyJywKICAgICAgICAgJ1dlYktp
dDo6U3RvcmFnZUFyZWFJZGVudGlmaWVyJywKICAgICAgICAgJ1dlYktpdDo6U3RvcmFnZUFyZWFJ
bXBsSWRlbnRpZmllcicsCiAgICAgICAgICdXZWJLaXQ6OlN0b3JhZ2VOYW1lc3BhY2VJZGVudGlm
aWVyJywKKyAgICAgICAgJ1dlYktpdDo6VHJhbnNhY3Rpb25JRCcsCiAgICAgICAgICdXZWJLaXQ6
OlVzZXJDb250ZW50Q29udHJvbGxlcklkZW50aWZpZXInLAogICAgICAgICAnV2ViS2l0OjpXZWJQ
YWdlUHJveHlJZGVudGlmaWVyJywKICAgICBdKQpAQCAtNjAzLDYgKzYwNCw3IEBAIGRlZiBoZWFk
ZXJzX2Zvcl90eXBlKHR5cGUpOgogICAgICAgICAnV2ViS2l0OjpXZWJNb3VzZUV2ZW50JzogWyci
V2ViRXZlbnQuaCInXSwKICAgICAgICAgJ1dlYktpdDo6V2ViVG91Y2hFdmVudCc6IFsnIldlYkV2
ZW50LmgiJ10sCiAgICAgICAgICdXZWJLaXQ6OldlYldoZWVsRXZlbnQnOiBbJyJXZWJFdmVudC5o
IiddLAorICAgICAgICAnV2ViQ29yZTo6TWVkaWFFbmdpbmVTdXBwb3J0UGFyYW1ldGVycyc6IFsn
PFdlYkNvcmUvTWVkaWFQbGF5ZXIuaD4nXSwKICAgICAgICAgJ3N0cnVjdCBXZWJDb3JlOjpFbGVt
ZW50Q29udGV4dCc6IFsnPFdlYkNvcmUvRWxlbWVudENvbnRleHQuaD4nXSwKICAgICAgICAgJ3N0
cnVjdCBXZWJLaXQ6OldlYlVzZXJTY3JpcHREYXRhJzogWyciV2ViVXNlckNvbnRlbnRDb250cm9s
bGVyRGF0YVR5cGVzLmgiJ10sCiAgICAgICAgICdzdHJ1Y3QgV2ViS2l0OjpXZWJVc2VyU3R5bGVT
aGVldERhdGEnOiBbJyJXZWJVc2VyQ29udGVudENvbnRyb2xsZXJEYXRhVHlwZXMuaCInXSwKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU291cmNlcy50eHQgYi9Tb3VyY2UvV2ViS2l0L1NvdXJj
ZXMudHh0CmluZGV4IDczZmY0ZDI3YmVlM2Q4MmExMTQ2NzE3NDkyYmNiNjY0NTIzNWI2NDIuLmIy
Mzg0ODQ4NTMzODc4YTBkN2Y3NjZlODE3MzZlMTg2NDE5ZmVlMGEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvU291cmNlcy50eHQKKysrIGIvU291cmNlL1dlYktpdC9Tb3VyY2VzLnR4dApAQCAt
NDk5LDYgKzQ5OSw4IEBAIFdlYlByb2Nlc3MvTWVkaWFTdHJlYW0vTWVkaWFEZXZpY2VTYW5kYm94
RXh0ZW5zaW9ucy5jcHAKIFdlYlByb2Nlc3MvTWVkaWFTdHJlYW0vVXNlck1lZGlhUGVybWlzc2lv
blJlcXVlc3RNYW5hZ2VyLmNwcAogCiBXZWJQcm9jZXNzL0dQVS9HUFVQcm9jZXNzQ29ubmVjdGlv
bi5jcHAKK1dlYlByb2Nlc3MvR1BVL21lZGlhL01lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZS5jcHAK
K1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyTWFuYWdlci5jcHAKIAogV2Vi
UHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5jcHAKIFdlYlByb2Nlc3Mv
TmV0d29yay9XZWJMb2FkZXJTdHJhdGVneS5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
U291cmNlc0NvY29hLnR4dCBiL1NvdXJjZS9XZWJLaXQvU291cmNlc0NvY29hLnR4dAppbmRleCA5
ZDI0MmUyYTA2NGRmZjcyZjQ5YzQyZjU0ZDk3ODEzY2FkOTRkOTJjLi5kOTQ4M2QwYTEzOWEwMGFk
YWQ3N2ZhODM3ZWNjNzNlYzE3OGI5YzNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NvdXJj
ZXNDb2NvYS50eHQKKysrIGIvU291cmNlL1dlYktpdC9Tb3VyY2VzQ29jb2EudHh0CkBAIC01OSw2
ICs1OSw3IEBAIE5ldHdvcmtQcm9jZXNzL3dlYnJ0Yy9OZXR3b3JrUlRDU29ja2V0LmNwcAogCiBH
UFVQcm9jZXNzL2lvcy9HUFVQcm9jZXNzSU9TLm1tCiBHUFVQcm9jZXNzL21hYy9HUFVQcm9jZXNz
TWFjLm1tCitHUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5LmNw
cAogR1BVUHJvY2Vzcy9FbnRyeVBvaW50L0NvY29hL1hQQ1NlcnZpY2UvR1BVU2VydmljZUVudHJ5
UG9pbnQubW0KIAogUGxhdGZvcm0vY2YvTW9kdWxlQ0YuY3BwCkBAIC02MjQsNSArNjI1LDcgQEAg
RWRpdGFibGVJbWFnZUNvbnRyb2xsZXJNZXNzYWdlUmVjZWl2ZXIuY3BwCiBHUFVDb25uZWN0aW9u
VG9XZWJQcm9jZXNzTWVzc2FnZVJlY2VpdmVyLmNwcAogR1BVUHJvY2Vzc1Byb3h5TWVzc2FnZVJl
Y2VpdmVyLmNwcAogR1BVUHJvY2Vzc01lc3NhZ2VSZWNlaXZlci5jcHAKKy8vUmVtb3RlTWVkaWFQ
bGF5ZXJNYW5hZ2VyTWVzc2FnZVJlY2VpdmVyLmNwcAorLy9SZW1vdGVNZWRpYVBsYXllck1hbmFn
ZXJQcm94eU1lc3NhZ2VSZWNlaXZlci5jcHAKIFNlcnZpY2VXb3JrZXJGZXRjaFRhc2tNZXNzYWdl
UmVjZWl2ZXIuY3BwCiBUZXh0Q2hlY2tpbmdDb250cm9sbGVyUHJveHlNZXNzYWdlUmVjZWl2ZXIu
Y3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qIGIvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpp
bmRleCBmNzlkZGMxMjA0MGYyYmY3OTI0MGNjYTU1ZWY5ODkzMGI1MDA3NTM0Li5lY2U5MGQ1NzUy
ZDQ3ZDcxYWIwNTU1ZmNhOTZkNjYxN2VlNzRlMTEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJLaXQvV2Vi
S2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTkxLDYgKzkxLDEzIEBACiAJCTA3NEU3
NUZFMURGMjIxMTkwMEQzMThFQyAvKiBVc2VyTWVkaWFQcm9jZXNzTWFuYWdlci5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDc0RTc1RkIxREYxRkQxMzAw
RDMxOEVDIC8qIFVzZXJNZWRpYVByb2Nlc3NNYW5hZ2VyLmggKi87IH07CiAJCTA3NkU4ODRFMUEx
M0NBREYwMDVFOTBGQyAvKiBBUElDb250ZXh0TWVudUNsaWVudC5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDc2RTg4NEQxQTEzQ0FERjAwNUU5MEZDIC8q
IEFQSUNvbnRleHRNZW51Q2xpZW50LmggKi87IH07CiAJCTA3NzI4MTFEMjEyMzRGRjYwMEM4RUYy
RSAvKiBVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXIuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDRBNDEwRjQzMTlBRjdCMjcwMDJFQkFCNSAv
KiBVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXIuaCAqLzsgfTsKKwkJMDc5MjMxNDgy
MzlDQkNCODAwOTU5OEUyIC8qIFJlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5TWVzc2FnZXNS
ZXBsaWVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAw
NzkyMzE0MjIzOUNCQ0I1MDA5NTk4RTIgLyogUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHlN
ZXNzYWdlc1JlcGxpZXMuaCAqLzsgfTsKKwkJMDc5MjMxNDkyMzlDQkNCODAwOTU5OEUyIC8qIFJl
bW90ZU1lZGlhUGxheWVyTWFuYWdlck1lc3NhZ2VSZWNlaXZlci5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwNzkyMzE0MzIzOUNCQ0I2MDA5NTk4RTIg
LyogUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyTWVzc2FnZVJlY2VpdmVyLmNwcCAqLzsgfTsKKwkJ
MDc5MjMxNEEyMzlDQkNCODAwOTU5OEUyIC8qIFJlbW90ZU1lZGlhUGxheWVyTWFuYWdlck1lc3Nh
Z2VzUmVwbGllcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gMDc5MjMxNDQyMzlDQkNCNjAwOTU5OEUyIC8qIFJlbW90ZU1lZGlhUGxheWVyTWFuYWdlck1l
c3NhZ2VzUmVwbGllcy5oICovOyB9OworCQkwNzkyMzE0QjIzOUNCQ0I4MDA5NTk4RTIgLyogUmVt
b3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDc5MjMxNDUyMzlDQkNCNzAwOTU5
OEUyIC8qIFJlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5TWVzc2FnZVJlY2VpdmVyLmNwcCAq
LzsgfTsKKwkJMDc5MjMxNEMyMzlDQkNCODAwOTU5OEUyIC8qIFJlbW90ZU1lZGlhUGxheWVyTWFu
YWdlclByb3h5TWVzc2FnZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDA3OTIzMTQ2MjM5Q0JDQjcwMDk1OThFMiAvKiBSZW1vdGVNZWRpYVBsYXllck1h
bmFnZXJQcm94eU1lc3NhZ2VzLmggKi87IH07CisJCTA3OTIzMTREMjM5Q0JDQjgwMDk1OThFMiAv
KiBSZW1vdGVNZWRpYVBsYXllck1hbmFnZXJNZXNzYWdlcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDc5MjMxNDcyMzlDQkNCNzAwOTU5OEUyIC8qIFJl
bW90ZU1lZGlhUGxheWVyTWFuYWdlck1lc3NhZ2VzLmggKi87IH07CisJCTA3OTIzMTRGMjM5RDYy
M0UwMDk1OThFMiAvKiBNZWRpYVBsYXllclByaXZhdGVSZW1vdGVJZGVudGlmaWVyLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwNzkyMzE0RTIzOUQ1RjUz
MDA5NTk4RTIgLyogTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlSWRlbnRpZmllci5oICovOyB9Owog
CQkwN0E1RUJCQzFDN0JBNDNFMDBCOUNBNjkgLyogV0tGcmFtZUhhbmRsZVJlZi5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDdBNUVCQkExQzdCQTQzRTAw
QjlDQTY5IC8qIFdLRnJhbWVIYW5kbGVSZWYuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OwogCQkwRTk3RDc0RDIwMEU5MDA0MDBCRjY2NDMgLyogU2FmZUJy
b3dzaW5nU1BJLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSAwRTk3RDc0QzIwMEU4RkYzMDBCRjY2NDMgLyogU2FmZUJyb3dzaW5nU1BJLmggKi87IH07CiAJ
CTBFREU4NTAzMjAwNEU3NUQwMDAzMDU2MCAvKiBXZWJzaXRlUG9wVXBQb2xpY3kuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBFREU4NTAyMjAwNEU3NDkw
MDAzMDU2MCAvKiBXZWJzaXRlUG9wVXBQb2xpY3kuaCAqLzsgfTsKQEAgLTE5OTYsNiArMjAwMyw5
IEBACiAJCTAwQjk2NjE1MThFMjRDQkEwMENFMUY4OCAvKiBBUElGaW5kQ2xpZW50LmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEFQSUZpbmRDbGllbnQuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJMDBCOTY2MTcxOEUyNUFFMTAwQ0UxRjg4IC8qIEZpbmRDbGllbnQu
bW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBGaW5kQ2xpZW50Lm1t
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwMEI5NjYxODE4RTI1QUUxMDBDRTFGODgg
LyogRmluZENsaWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBGaW5kQ2xp
ZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTA3MjVFRkFCMjM5QUUzODQwMEE1
MzhBOSAvKiBSZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eS5tZXNzYWdlcy5pbiAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBS
ZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eS5tZXNzYWdlcy5pbjsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJMDcyNUVGQUMyMzlBRTM4NTAwQTUzOEE5IC8qIFJlbW90ZU1lZGlhUGxh
eWVyTWFuYWdlclByb3h5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlbW90ZU1lZGlhUGxheWVyTWFuYWdl
clByb3h5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTA3MjVFRkFEMjM5QjAyNDUw
MEE1MzhBOSAvKiBSZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eS5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBSZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eS5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTA3Mjk3RjlDMUMxNzExRUEwMDNGMDczNSAvKiBEZXZpY2VJZEhhc2hT
YWx0U3RvcmFnZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBEZXZp
Y2VJZEhhc2hTYWx0U3RvcmFnZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTA3
Mjk3RjlDMUMxN0JCRUEwMDNGMDczNSAvKiBVc2VyTWVkaWFQZXJtaXNzaW9uQ2hlY2tQcm94eS5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBVc2VyTWVkaWFQZXJtaXNz
aW9uQ2hlY2tQcm94eS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTA3Mjk3RjlE
MUMxN0JCRUEwMDNGMDczNSAvKiBVc2VyTWVkaWFQZXJtaXNzaW9uQ2hlY2tQcm94eS5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBVc2VyTWVkaWFQZXJtaXNzaW9uQ2hlY2tQcm94
eS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMjAxMCw2ICsyMDIwLDE4IEBACiAJ
CTA3NEU3NjAxMURGNzA3NUQwMEQzMThFQyAvKiBNZWRpYURldmljZVNhbmRib3hFeHRlbnNpb25z
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1lZGlhRGV2aWNlU2FuZGJveEV4
dGVuc2lvbnMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMDc2RTg4NEQxQTEzQ0FE
RjAwNUU5MEZDIC8qIEFQSUNvbnRleHRNZW51Q2xpZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IEFQSUNvbnRleHRNZW51Q2xpZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTA3NkU4ODRGMUExM0NCQzYwMDVFOTBGQyAvKiBBUElJbmplY3RlZEJ1bmRsZVBh
Z2VDb250ZXh0TWVudUNsaWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBB
UElJbmplY3RlZEJ1bmRsZVBhZ2VDb250ZXh0TWVudUNsaWVudC5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQkwNzkyMzEzMDIzOUIzQjBDMDA5NTk4RTIgLyogUmVtb3RlTWVkaWFQbGF5
ZXJNYW5hZ2VyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJlbW90ZU1lZGlhUGxheWVyTWFuYWdl
ci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTA3OTIzMTMxMjM5QjNCMEMwMDk1
OThFMiAvKiBNZWRpYVBsYXllclByaXZhdGVSZW1vdGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJMDc5MjMxMzIyMzlCM0IwQzAwOTU5OEUyIC8qIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZS5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBNZWRpYVBsYXllclByaXZhdGVSZW1vdGUuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJMDc5MjMxMzMyMzlCM0IwQzAwOTU5OEUyIC8qIFJlbW90ZU1lZGlh
UGxheWVyTWFuYWdlci5tZXNzYWdlcy5pbiAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBSZW1vdGVNZWRpYVBsYXllck1hbmFnZXIu
bWVzc2FnZXMuaW47IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTA3OTIzMTM0MjM5QjNC
MEMwMDk1OThFMiAvKiBSZW1vdGVNZWRpYVBsYXllck1hbmFnZXIuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
UmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CTA3OTIzMTQyMjM5Q0JDQjUwMDk1OThFMiAvKiBSZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94
eU1lc3NhZ2VzUmVwbGllcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZW1v
dGVNZWRpYVBsYXllck1hbmFnZXJQcm94eU1lc3NhZ2VzUmVwbGllcy5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQkwNzkyMzE0MzIzOUNCQ0I2MDA5NTk4RTIgLyogUmVtb3RlTWVkaWFQ
bGF5ZXJNYW5hZ2VyTWVzc2FnZVJlY2VpdmVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IFJlbW90ZU1lZGlhUGxheWVyTWFuYWdlck1lc3NhZ2VSZWNlaXZlci5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTA3OTIzMTQ0MjM5Q0JDQjYwMDk1OThFMiAv
KiBSZW1vdGVNZWRpYVBsYXllck1hbmFnZXJNZXNzYWdlc1JlcGxpZXMuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyTWVzc2FnZXNSZXBs
aWVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTA3OTIzMTQ1MjM5Q0JDQjcwMDk1
OThFMiAvKiBSZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eU1lc3NhZ2VSZWNlaXZlci5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSZW1vdGVNZWRpYVBsYXllck1h
bmFnZXJQcm94eU1lc3NhZ2VSZWNlaXZlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCTA3OTIzMTQ2MjM5Q0JDQjcwMDk1OThFMiAvKiBSZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQ
cm94eU1lc3NhZ2VzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlbW90ZU1l
ZGlhUGxheWVyTWFuYWdlclByb3h5TWVzc2FnZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJMDc5MjMxNDcyMzlDQkNCNzAwOTU5OEUyIC8qIFJlbW90ZU1lZGlhUGxheWVyTWFuYWdl
ck1lc3NhZ2VzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlbW90ZU1lZGlh
UGxheWVyTWFuYWdlck1lc3NhZ2VzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTA3
OTIzMTRFMjM5RDVGNTMwMDk1OThFMiAvKiBNZWRpYVBsYXllclByaXZhdGVSZW1vdGVJZGVudGlm
aWVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZUlkZW50aWZpZXIu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMDdBNUVCQjkxQzdCQTQzRTAwQjlDQTY5
IC8qIFdLRnJhbWVIYW5kbGVSZWYuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gV0tGcmFtZUhhbmRsZVJlZi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTA3QTVFQkJBMUM3QkE0M0UwMEI5Q0E2OSAvKiBXS0ZyYW1lSGFuZGxlUmVmLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdLRnJhbWVIYW5kbGVSZWYuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJMDg2N0Q2QTVGRTg0MDMwN0MwMkFBQzA3IC8qIEFwcEtpdC5mcmFt
ZXdvcmsgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB3
cmFwcGVyLmZyYW1ld29yazsgbmFtZSA9IEFwcEtpdC5mcmFtZXdvcms7IHBhdGggPSAvU3lzdGVt
L0xpYnJhcnkvRnJhbWV3b3Jrcy9BcHBLaXQuZnJhbWV3b3JrOyBzb3VyY2VUcmVlID0gIjxhYnNv
bHV0ZT4iOyB9OwpAQCAtNTAxMCw2ICs1MDMyLDI5IEBACiAJCQl0YWJXaWR0aCA9IDg7CiAJCQl1
c2VzVGFicyA9IDA7CiAJCX07CisJCTA3OTIzMTJGMjM5QjNCMEMwMDk1OThFMiAvKiBtZWRpYSAq
LyA9IHsKKwkJCWlzYSA9IFBCWEdyb3VwOworCQkJY2hpbGRyZW4gPSAoCisJCQkJMDc5MjMxMzEy
MzlCM0IwQzAwOTU5OEUyIC8qIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZS5jcHAgKi8sCisJCQkJ
MDc5MjMxMzIyMzlCM0IwQzAwOTU5OEUyIC8qIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZS5oICov
LAorCQkJCTA3OTIzMTRFMjM5RDVGNTMwMDk1OThFMiAvKiBNZWRpYVBsYXllclByaXZhdGVSZW1v
dGVJZGVudGlmaWVyLmggKi8sCisJCQkJMDc5MjMxMzAyMzlCM0IwQzAwOTU5OEUyIC8qIFJlbW90
ZU1lZGlhUGxheWVyTWFuYWdlci5jcHAgKi8sCisJCQkJMDc5MjMxMzQyMzlCM0IwQzAwOTU5OEUy
IC8qIFJlbW90ZU1lZGlhUGxheWVyTWFuYWdlci5oICovLAorCQkJCTA3OTIzMTMzMjM5QjNCMEMw
MDk1OThFMiAvKiBSZW1vdGVNZWRpYVBsYXllck1hbmFnZXIubWVzc2FnZXMuaW4gKi8sCisJCQkp
OworCQkJcGF0aCA9IG1lZGlhOworCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKKwkJfTsKKwkJ
MDdDNzVDMTcyMzk5QTNEQjAwODhFNjVCIC8qIG1lZGlhICovID0geworCQkJaXNhID0gUEJYR3Jv
dXA7CisJCQljaGlsZHJlbiA9ICgKKwkJCQkwNzI1RUZBRDIzOUIwMjQ1MDBBNTM4QTkgLyogUmVt
b3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHkuY3BwICovLAorCQkJCTA3MjVFRkFDMjM5QUUzODUw
MEE1MzhBOSAvKiBSZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eS5oICovLAorCQkJCTA3MjVF
RkFCMjM5QUUzODQwMEE1MzhBOSAvKiBSZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eS5tZXNz
YWdlcy5pbiAqLywKKwkJCSk7CisJCQlwYXRoID0gbWVkaWE7CisJCQlzb3VyY2VUcmVlID0gIjxn
cm91cD4iOworCQl9OwogCQkwODY3RDY5MUZFODQwMjhGQzAyQUFDMDcgLyogV2ViS2l0MiAqLyA9
IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCkBAIC02MTkyLDYgKzYyMzcs
NyBAQAogCQkyRDdFNDNCRjIzNzUyQ0Q5MDBFQTVDQTAgLyogR1BVICovID0gewogCQkJaXNhID0g
UEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKKwkJCQkwNzkyMzEyRjIzOUIzQjBDMDA5NTk4RTIg
LyogbWVkaWEgKi8sCiAJCQkJMkQ3RTQzQzAyMzc1MkNEOTAwRUE1Q0EwIC8qIEdQVVByb2Nlc3ND
b25uZWN0aW9uLmNwcCAqLywKIAkJCQkyRDdFNDNDMzIzNzUyQ0Q5MDBFQTVDQTAgLyogR1BVUHJv
Y2Vzc0Nvbm5lY3Rpb24uaCAqLywKIAkJCQkyRDdFNDNDMjIzNzUyQ0Q5MDBFQTVDQTAgLyogR1BV
UHJvY2Vzc0Nvbm5lY3Rpb24ubWVzc2FnZXMuaW4gKi8sCkBAIC02MjA2LDYgKzYyNTIsNyBAQAog
CQkJCTJEOUZCMjBEMjM3NTIwOUQwMDQ5RjkzNiAvKiBFbnRyeVBvaW50ICovLAogCQkJCTJEOUZC
MjA0MjM3NTIwOUQwMDQ5RjkzNiAvKiBpb3MgKi8sCiAJCQkJMkQ5RkIyMDYyMzc1MjA5RDAwNDlG
OTM2IC8qIG1hYyAqLywKKwkJCQkwN0M3NUMxNzIzOTlBM0RCMDA4OEU2NUIgLyogbWVkaWEgKi8s
CiAJCQkJMkQ5RkIyMEMyMzc1MjA5RDAwNDlGOTM2IC8qIEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nl
c3MuY3BwICovLAogCQkJCTJEOUZCMjAwMjM3NTIwOUQwMDQ5RjkzNiAvKiBHUFVDb25uZWN0aW9u
VG9XZWJQcm9jZXNzLmggKi8sCiAJCQkJMkQ5RkIyMDkyMzc1MjA5RDAwNDlGOTM2IC8qIEdQVUNv
bm5lY3Rpb25Ub1dlYlByb2Nlc3MubWVzc2FnZXMuaW4gKi8sCkBAIC05MTE4LDYgKzkxNjUsMTIg
QEAKIAkJCQkxQThFRkE2RjEyNTJCODQxMDBGNzA2N0YgLyogUGx1Z2luUHJveHlNZXNzYWdlcy5o
ICovLAogCQkJCTBGRjI0QTJCMTg3OUU0QkMwMDNBQkYwQyAvKiBSZW1vdGVMYXllclRyZWVEcmF3
aW5nQXJlYVByb3h5TWVzc2FnZVJlY2VpdmVyLmNwcCAqLywKIAkJCQkwRkYyNEEyQzE4NzlFNEJD
MDAzQUJGMEMgLyogUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWFQcm94eU1lc3NhZ2VzLmggKi8s
CisJCQkJMDc5MjMxNDMyMzlDQkNCNjAwOTU5OEUyIC8qIFJlbW90ZU1lZGlhUGxheWVyTWFuYWdl
ck1lc3NhZ2VSZWNlaXZlci5jcHAgKi8sCisJCQkJMDc5MjMxNDcyMzlDQkNCNzAwOTU5OEUyIC8q
IFJlbW90ZU1lZGlhUGxheWVyTWFuYWdlck1lc3NhZ2VzLmggKi8sCisJCQkJMDc5MjMxNDQyMzlD
QkNCNjAwOTU5OEUyIC8qIFJlbW90ZU1lZGlhUGxheWVyTWFuYWdlck1lc3NhZ2VzUmVwbGllcy5o
ICovLAorCQkJCTA3OTIzMTQ1MjM5Q0JDQjcwMDk1OThFMiAvKiBSZW1vdGVNZWRpYVBsYXllck1h
bmFnZXJQcm94eU1lc3NhZ2VSZWNlaXZlci5jcHAgKi8sCisJCQkJMDc5MjMxNDYyMzlDQkNCNzAw
OTU5OEUyIC8qIFJlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5TWVzc2FnZXMuaCAqLywKKwkJ
CQkwNzkyMzE0MjIzOUNCQ0I1MDA5NTk4RTIgLyogUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJv
eHlNZXNzYWdlc1JlcGxpZXMuaCAqLywKIAkJCQkxQUMxMzM4MzE4NTkwQzQ2MDBGM0VDMDUgLyog
UmVtb3RlT2JqZWN0UmVnaXN0cnlNZXNzYWdlUmVjZWl2ZXIuY3BwICovLAogCQkJCTFBQzEzMzg0
MTg1OTBDNDYwMEYzRUMwNSAvKiBSZW1vdGVPYmplY3RSZWdpc3RyeU1lc3NhZ2VzLmggKi8sCiAJ
CQkJMEY1OTQ3QTUxODdCNTE3NjAwNDM3ODU3IC8qIFJlbW90ZVNjcm9sbGluZ0Nvb3JkaW5hdG9y
TWVzc2FnZVJlY2VpdmVyLmNwcCAqLywKQEAgLTk4MzUsNiArOTg4OCw3IEBACiAJCQkJQkNDNTZG
NzkxMTU5OTU3RDAwMUNDQUY5IC8qIE1hY2hQb3J0LmggaW4gSGVhZGVycyAqLywKIAkJCQkxQTI0
QjVGMzExRjUzMUU4MDBDMzgyNjkgLyogTWFjaFV0aWxpdGllcy5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJQ0UxQTBCRDUxQTQ4RTZDNjAwNTRFRjc0IC8qIE1hbmFnZWRDb25maWd1cmF0aW9uU1BJLmgg
aW4gSGVhZGVycyAqLywKKwkJCQkwNzkyMzE0RjIzOUQ2MjNFMDA5NTk4RTIgLyogTWVkaWFQbGF5
ZXJQcml2YXRlUmVtb3RlSWRlbnRpZmllci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTE5MzNERUYx
OTY1RUIzMTAwOEFDM0VBIC8qIE1lbnVVdGlsaXRpZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTFB
QzRDODI5MTZCODc2QTkwMDY5RENDRCAvKiBNZXNzYWdlRmxhZ3MuaCBpbiBIZWFkZXJzICovLAog
CQkJCTFBM0VFRDEyMTYxQTUzRDYwMEFFQjRGNSAvKiBNZXNzYWdlUmVjZWl2ZXIuaCBpbiBIZWFk
ZXJzICovLApAQCAtOTk5NSw2ICsxMDA0OSwxMCBAQAogCQkJCTBGRjI2NEEwMUExRkY5Q0MwMDFG
RTc1OSAvKiBSZW1vdGVMYXllclRyZWVTY3JvbGxpbmdQZXJmb3JtYW5jZURhdGEuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTFBRjFBQzZDMTY1MTc1OUUwMEMxN0Q3RiAvKiBSZW1vdGVMYXllclRyZWVU
cmFuc2FjdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMkRDMThGQjMyMThBNkU5RTAwMjVBODhE
IC8qIFJlbW90ZUxheWVyVHJlZVZpZXdzLmggaW4gSGVhZGVycyAqLywKKwkJCQkwNzkyMzE0RDIz
OUNCQ0I4MDA5NTk4RTIgLyogUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyTWVzc2FnZXMuaCBpbiBI
ZWFkZXJzICovLAorCQkJCTA3OTIzMTRBMjM5Q0JDQjgwMDk1OThFMiAvKiBSZW1vdGVNZWRpYVBs
YXllck1hbmFnZXJNZXNzYWdlc1JlcGxpZXMuaCBpbiBIZWFkZXJzICovLAorCQkJCTA3OTIzMTRD
MjM5Q0JDQjgwMDk1OThFMiAvKiBSZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eU1lc3NhZ2Vz
LmggaW4gSGVhZGVycyAqLywKKwkJCQkwNzkyMzE0ODIzOUNCQ0I4MDA5NTk4RTIgLyogUmVtb3Rl
TWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHlNZXNzYWdlc1JlcGxpZXMuaCBpbiBIZWFkZXJzICovLAog
CQkJCUUxQjc4NDcxMTYzRjI0NjkwMDA3QjY5MiAvKiBSZW1vdGVOZXR3b3JraW5nQ29udGV4dC5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJMUE1NzA0RkMxQkUxNzUxMTAwODc0QUYxIC8qIFJlbW90ZU9i
amVjdEludm9jYXRpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCTFBQzEzMzgwMTg1OTBBRTQwMEYz
RUMwNSAvKiBSZW1vdGVPYmplY3RSZWdpc3RyeS5oIGluIEhlYWRlcnMgKi8sCkBAIC0xMTY1Miw2
ICsxMTcxMCw4IEBACiAJCQkJMkQ3MkExRkEyMTJCRjQ2RTAwNTE3QTIwIC8qIFJlbW90ZUxheWVy
VHJlZURyYXdpbmdBcmVhLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJMEZGMjRBMkQxODc5RTRCQzAw
M0FCRjBDIC8qIFJlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhUHJveHlNZXNzYWdlUmVjZWl2ZXIu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMkRDMThGQjQyMThBNkU5RTAwMjVBODhEIC8qIFJlbW90
ZUxheWVyVHJlZVZpZXdzLm1tIGluIFNvdXJjZXMgKi8sCisJCQkJMDc5MjMxNDkyMzlDQkNCODAw
OTU5OEUyIC8qIFJlbW90ZU1lZGlhUGxheWVyTWFuYWdlck1lc3NhZ2VSZWNlaXZlci5jcHAgaW4g
U291cmNlcyAqLywKKwkJCQkwNzkyMzE0QjIzOUNCQ0I4MDA5NTk4RTIgLyogUmVtb3RlTWVkaWFQ
bGF5ZXJNYW5hZ2VyUHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
MUFDMTMzODUxODU5MEM0NjAwRjNFQzA1IC8qIFJlbW90ZU9iamVjdFJlZ2lzdHJ5TWVzc2FnZVJl
Y2VpdmVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGNTk0N0E3MTg3QjUxNzYwMDQzNzg1NyAv
KiBSZW1vdGVTY3JvbGxpbmdDb29yZGluYXRvck1lc3NhZ2VSZWNlaXZlci5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQlBNTVCQTgyNjFCQTI1Q0ZEMDA3Q0QzM0QgLyogUmVtb3RlV2ViSW5zcGVjdG9y
UHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8sCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL01lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZS5j
cHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL01lZGlhUGxheWVyUHJpdmF0
ZVJlbW90ZS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMjdjZTFjMTc3MzkyMjhlMDlmOTQ1OWQyNzEzMWIzYjkx
YWFhOTI5MwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUv
bWVkaWEvTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlLmNwcApAQCAtMCwwICsxLDc2MSBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBg
QVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaW5jbHVkZSAiY29u
ZmlnLmgiCisKKyNpZiBFTkFCTEUoR1BVX1BST0NFU1MpCisjaW5jbHVkZSAiTWVkaWFQbGF5ZXJQ
cml2YXRlUmVtb3RlLmgiCisKKyNpbmNsdWRlICJMb2dnaW5nLmgiCisjaW5jbHVkZSAiUmVtb3Rl
TWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHlNZXNzYWdlcy5oIgorI2luY2x1ZGUgPFdlYkNvcmUvTm90
SW1wbGVtZW50ZWQuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1BsYXRmb3JtTGF5ZXIuaD4KKyNpbmNs
dWRlIDxXZWJDb3JlL1BsYXRmb3JtVGltZVJhbmdlcy5oPgorI2luY2x1ZGUgPHd0Zi9IYXNoTWFw
Lmg+CisjaW5jbHVkZSA8d3RmL01haW5UaHJlYWQuaD4KKyNpbmNsdWRlIDx3dGYvU3RyaW5nUHJp
bnRTdHJlYW0uaD4KKyNpbmNsdWRlIDx3dGYvVVJMLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvQ1N0
cmluZy5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsKK3VzaW5nIG5hbWVzcGFjZSBQQUw7Cit1c2lu
ZyBuYW1lc3BhY2UgV2ViQ29yZTsKKworTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpNZWRpYVBs
YXllclByaXZhdGVSZW1vdGUoTWVkaWFQbGF5ZXIqIHBsYXllciwgY29uc3QgU3RyaW5nJiByZW1v
dGVFbmdpbmVJZGVudGlmaWVyLCBNZWRpYVBsYXllclByaXZhdGVSZW1vdGVJZGVudGlmaWVyIGlk
ZW50aWZpZXIsIFJlbW90ZU1lZGlhUGxheWVyTWFuYWdlciYgbWFuYWdlcikKKyAgICA6IG1fcGxh
eWVyKHBsYXllcikKKyAgICAsIG1fbWFuYWdlcihtYW5hZ2VyKQorICAgICwgbV9yZW1vdGVFbmdp
bmVJZGVudGlmaWVyKHJlbW90ZUVuZ2luZUlkZW50aWZpZXIpCisgICAgLCBtX2lkZW50aWZpZXIo
aWRlbnRpZmllcikKKyNpZiAhUkVMRUFTRV9MT0dfRElTQUJMRUQKKyAgICAsIG1fbG9nZ2VyKHBs
YXllci0+bWVkaWFQbGF5ZXJMb2dnZXIoKSkKKyAgICAsIG1fbG9nSWRlbnRpZmllcihwbGF5ZXIt
Pm1lZGlhUGxheWVyTG9nSWRlbnRpZmllcigpKQorI2VuZGlmCit7CisgICAgSU5GT19MT0coTE9H
SURFTlRJRklFUik7Cit9CisKK01lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6fk1lZGlhUGxheWVy
UHJpdmF0ZVJlbW90ZSgpCit7CisgICAgSU5GT19MT0coTE9HSURFTlRJRklFUik7CisgICAgbV9w
bGF5ZXIgPSBudWxscHRyOworfQorCit2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6TWVk
aWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpsb2FkKGNvbnN0IFN0cmluZyYpCit7CisgICAgbm90SW1w
bGVtZW50ZWQoKTsKK30KKworI2lmIEVOQUJMRShNRURJQV9TT1VSQ0UpCit2b2lkIE1lZGlhUGxh
eWVyUHJpdmF0ZVJlbW90ZTo6bG9hZChjb25zdCBTdHJpbmcmLCBNZWRpYVNvdXJjZVByaXZhdGVD
bGllbnQqKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisjZW5kaWYKKworI2lmIEVOQUJM
RShNRURJQV9TVFJFQU0pCit2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6bG9hZChNZWRp
YVN0cmVhbVByaXZhdGUmKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisjZW5kaWYKK3Zv
aWQgTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpjYW5jZWxMb2FkKCkKK3sKKyAgICBub3RJbXBs
ZW1lbnRlZCgpOworfQorCisKK3ZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpwcmVwYXJl
VG9QbGF5KCkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCitQbGF0Zm9ybUxheWVyKiBN
ZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OnBsYXRmb3JtTGF5ZXIoKSBjb25zdAoreworICAgIHJl
dHVybiBudWxscHRyOworfQorCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkgfHwgKFBMQVRGT1JN
KE1BQykgJiYgRU5BQkxFKFZJREVPX1BSRVNFTlRBVElPTl9NT0RFKSkKK3ZvaWQgTWVkaWFQbGF5
ZXJQcml2YXRlUmVtb3RlOjpzZXRWaWRlb0Z1bGxzY3JlZW5MYXllcihQbGF0Zm9ybUxheWVyKiwg
V1RGOjpGdW5jdGlvbjx2b2lkKCk+JiYpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwor
dm9pZCBNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OnVwZGF0ZVZpZGVvRnVsbHNjcmVlbklubGlu
ZUltYWdlKCkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCit2b2lkIE1lZGlhUGxheWVy
UHJpdmF0ZVJlbW90ZTo6c2V0VmlkZW9GdWxsc2NyZWVuRnJhbWUoRmxvYXRSZWN0KQoreworICAg
IG5vdEltcGxlbWVudGVkKCk7Cit9CisKK3ZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpz
ZXRWaWRlb0Z1bGxzY3JlZW5HcmF2aXR5KE1lZGlhUGxheWVyOjpWaWRlb0dyYXZpdHkpCit7Cisg
ICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwordm9pZCBNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6
OnNldFZpZGVvRnVsbHNjcmVlbk1vZGUoTWVkaWFQbGF5ZXI6OlZpZGVvRnVsbHNjcmVlbk1vZGUp
Cit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwordm9pZCBNZWRpYVBsYXllclByaXZhdGVS
ZW1vdGU6OnZpZGVvRnVsbHNjcmVlblN0YW5kYnlDaGFuZ2VkKCkKK3sKKyAgICBub3RJbXBsZW1l
bnRlZCgpOworfQorI2VuZGlmCisKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQorU3RyaW5nIE1l
ZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6YWNjZXNzTG9nKCkgY29uc3QKK3sKKyAgICBub3RJbXBs
ZW1lbnRlZCgpOworICAgIHJldHVybiBlbXB0eVN0cmluZygpOworfQorCitTdHJpbmcgTWVkaWFQ
bGF5ZXJQcml2YXRlUmVtb3RlOjplcnJvckxvZygpIGNvbnN0Cit7CisgICAgbm90SW1wbGVtZW50
ZWQoKTsKKyAgICByZXR1cm4gZW1wdHlTdHJpbmcoKTsKK30KKyNlbmRpZgorCitsb25nIE1lZGlh
UGxheWVyUHJpdmF0ZVJlbW90ZTo6cGxhdGZvcm1FcnJvckNvZGUoKSBjb25zdAoreworICAgIG5v
dEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIDA7Cit9CisKK3ZvaWQgTWVkaWFQbGF5ZXJQcml2
YXRlUmVtb3RlOjpwbGF5KCkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCit2b2lkIE1l
ZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6cGF1c2UoKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7
Cit9CisKK3ZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpzZXRCdWZmZXJpbmdQb2xpY3ko
TWVkaWFQbGF5ZXI6OkJ1ZmZlcmluZ1BvbGljeSkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOwor
fQorCitib29sIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6c3VwcG9ydHNQaWN0dXJlSW5QaWN0
dXJlKCkgY29uc3QKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiBmYWxzZTsK
K30KKworYm9vbCBNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OnN1cHBvcnRzRnVsbHNjcmVlbigp
IGNvbnN0Cit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gZmFsc2U7Cit9CisK
K2Jvb2wgTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpzdXBwb3J0c1NjYW5uaW5nKCkgY29uc3QK
K3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiBmYWxzZTsKK30KKworYm9vbCBN
ZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OnJlcXVpcmVzSW1tZWRpYXRlQ29tcG9zaXRpbmcoKSBj
b25zdAoreworICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIGZhbHNlOworfQorCiti
b29sIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6Y2FuU2F2ZU1lZGlhRGF0YSgpIGNvbnN0Cit7
CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK0Zsb2F0U2l6
ZSBNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6Om5hdHVyYWxTaXplKCkgY29uc3QKK3sKKyAgICBu
b3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiB7IH07Cit9CisKK2Jvb2wgTWVkaWFQbGF5ZXJQ
cml2YXRlUmVtb3RlOjpoYXNWaWRlbygpIGNvbnN0Cit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsK
KyAgICByZXR1cm4gZmFsc2U7Cit9CisKK2Jvb2wgTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpo
YXNBdWRpbygpIGNvbnN0Cit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gZmFs
c2U7Cit9CisKK3ZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpzZXRWaXNpYmxlKGJvb2wp
Cit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKworTWVkaWFUaW1lIE1lZGlhUGxheWVyUHJp
dmF0ZVJlbW90ZTo6TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpkdXJhdGlvbk1lZGlhVGltZSgp
IGNvbnN0Cit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gTWVkaWFUaW1lOjp6
ZXJvVGltZSgpOworfQorCitNZWRpYVRpbWUgTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpjdXJy
ZW50TWVkaWFUaW1lKCkgY29uc3QKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVy
biBNZWRpYVRpbWU6Onplcm9UaW1lKCk7Cit9CisKK01lZGlhVGltZSBNZWRpYVBsYXllclByaXZh
dGVSZW1vdGU6OmdldFN0YXJ0RGF0ZSgpIGNvbnN0Cit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsK
KyAgICByZXR1cm4gTWVkaWFUaW1lOjp6ZXJvVGltZSgpOworfQorCit2b2lkIE1lZGlhUGxheWVy
UHJpdmF0ZVJlbW90ZTo6c2Vlayhjb25zdCBNZWRpYVRpbWUmKQoreworICAgIG5vdEltcGxlbWVu
dGVkKCk7Cit9CisKK3ZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpzZWVrV2l0aFRvbGVy
YW5jZShjb25zdCBNZWRpYVRpbWUmLCBjb25zdCBNZWRpYVRpbWUmLCBjb25zdCBNZWRpYVRpbWUm
KQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKK2Jvb2wgTWVkaWFQbGF5ZXJQcml2YXRl
UmVtb3RlOjpzZWVraW5nKCkgY29uc3QKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJl
dHVybiBmYWxzZTsKK30KKworTWVkaWFUaW1lIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6c3Rh
cnRUaW1lKCkgY29uc3QKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiBNZWRp
YVRpbWU6Onplcm9UaW1lKCk7Cit9CisKK3ZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpz
ZXRSYXRlRG91YmxlKGRvdWJsZSkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCitkb3Vi
bGUgTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpyYXRlKCkgY29uc3QKK3sKKyAgICBub3RJbXBs
ZW1lbnRlZCgpOworICAgIHJldHVybiAwOworfQorCit2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZVJl
bW90ZTo6c2V0UHJlc2VydmVzUGl0Y2goYm9vbCkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOwor
fQorCitib29sIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6cGF1c2VkKCkgY29uc3QKK3sKKyAg
ICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiBmYWxzZTsKK30KKwordm9pZCBNZWRpYVBs
YXllclByaXZhdGVSZW1vdGU6OnNldFZvbHVtZURvdWJsZShkb3VibGUpCit7CisgICAgbm90SW1w
bGVtZW50ZWQoKTsKK30KKwordm9pZCBNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OnNldE11dGVk
KGJvb2wpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKworYm9vbCBNZWRpYVBsYXllclBy
aXZhdGVSZW1vdGU6Omhhc0Nsb3NlZENhcHRpb25zKCkgY29uc3QKK3sKKyAgICBub3RJbXBsZW1l
bnRlZCgpOworICAgIHJldHVybiBmYWxzZTsKK30KKwordm9pZCBNZWRpYVBsYXllclByaXZhdGVS
ZW1vdGU6OnNldENsb3NlZENhcHRpb25zVmlzaWJsZShib29sKQoreworICAgIG5vdEltcGxlbWVu
dGVkKCk7Cit9CisKK2RvdWJsZSBNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6Om1heEZhc3RGb3J3
YXJkUmF0ZSgpIGNvbnN0Cit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gMDsK
K30KKworZG91YmxlIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6bWluRmFzdFJldmVyc2VSYXRl
KCkgY29uc3QKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiAwOworfQorCitN
ZWRpYVBsYXllcjo6TmV0d29ya1N0YXRlIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6bmV0d29y
a1N0YXRlKCkgY29uc3QKK3sKKyAgICBpZiAobV9pbnZhbGlkKQorICAgICAgICByZXR1cm4gTWVk
aWFQbGF5ZXI6OkZvcm1hdEVycm9yOworCisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1
cm4gTWVkaWFQbGF5ZXI6OkVtcHR5OworfQorCitNZWRpYVBsYXllcjo6UmVhZHlTdGF0ZSBNZWRp
YVBsYXllclByaXZhdGVSZW1vdGU6OnJlYWR5U3RhdGUoKSBjb25zdAoreworICAgIGlmIChtX2lu
dmFsaWQpCisgICAgICAgIHJldHVybiBNZWRpYVBsYXllcjo6SGF2ZU5vdGhpbmc7CisKKyAgICBu
b3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiBNZWRpYVBsYXllcjo6SGF2ZU5vdGhpbmc7Cit9
CisKK3N0ZDo6dW5pcXVlX3B0cjxQbGF0Zm9ybVRpbWVSYW5nZXM+IE1lZGlhUGxheWVyUHJpdmF0
ZVJlbW90ZTo6c2Vla2FibGUoKSBjb25zdAoreworICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAg
cmV0dXJuIG1ha2VVbmlxdWU8UGxhdGZvcm1UaW1lUmFuZ2VzPigpOworfQorCitzdGQ6OnVuaXF1
ZV9wdHI8UGxhdGZvcm1UaW1lUmFuZ2VzPiBNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OmJ1ZmZl
cmVkKCkgY29uc3QKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiBtYWtlVW5p
cXVlPFBsYXRmb3JtVGltZVJhbmdlcz4oKTsKK30KKworTWVkaWFUaW1lIE1lZGlhUGxheWVyUHJp
dmF0ZVJlbW90ZTo6bWF4TWVkaWFUaW1lU2Vla2FibGUoKSBjb25zdAoreworICAgIG5vdEltcGxl
bWVudGVkKCk7CisgICAgcmV0dXJuIE1lZGlhVGltZTo6emVyb1RpbWUoKTsKK30KKworTWVkaWFU
aW1lIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6bWluTWVkaWFUaW1lU2Vla2FibGUoKSBjb25z
dAoreworICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIE1lZGlhVGltZTo6emVyb1Rp
bWUoKTsKK30KKworZG91YmxlIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6c2Vla2FibGVUaW1l
UmFuZ2VzTGFzdE1vZGlmaWVkVGltZSgpIGNvbnN0Cit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsK
KyAgICByZXR1cm4gMDsKK30KKworZG91YmxlIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6bGl2
ZVVwZGF0ZUludGVydmFsKCkgY29uc3QKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJl
dHVybiAwOworfQorCit1bnNpZ25lZCBsb25nIGxvbmcgTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3Rl
Ojp0b3RhbEJ5dGVzKCkgY29uc3QKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVy
biAwOworfQorCitib29sIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6ZGlkTG9hZGluZ1Byb2dy
ZXNzKCkgY29uc3QKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiBmYWxzZTsK
K30KKwordm9pZCBNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OnNldFNpemUoY29uc3QgSW50U2l6
ZSYpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwordm9pZCBNZWRpYVBsYXllclByaXZh
dGVSZW1vdGU6OnBhaW50KEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYpCit7Cisg
ICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwordm9pZCBNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6
OnBhaW50Q3VycmVudEZyYW1lSW5Db250ZXh0KEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0
UmVjdCYpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKworYm9vbCBNZWRpYVBsYXllclBy
aXZhdGVSZW1vdGU6OmNvcHlWaWRlb1RleHR1cmVUb1BsYXRmb3JtVGV4dHVyZShHcmFwaGljc0Nv
bnRleHQzRCosIFBsYXRmb3JtM0RPYmplY3QsIEdDM0RlbnVtLCBHQzNEaW50LCBHQzNEZW51bSwg
R0MzRGVudW0sIEdDM0RlbnVtLCBib29sLCBib29sKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7
CisgICAgcmV0dXJuIGZhbHNlOworfQorCitOYXRpdmVJbWFnZVB0ciBNZWRpYVBsYXllclByaXZh
dGVSZW1vdGU6Om5hdGl2ZUltYWdlRm9yQ3VycmVudFRpbWUoKQoreworICAgIG5vdEltcGxlbWVu
dGVkKCk7CisgICAgcmV0dXJuIG51bGxwdHI7Cit9CisKK3ZvaWQgTWVkaWFQbGF5ZXJQcml2YXRl
UmVtb3RlOjpzZXRQcmVsb2FkKE1lZGlhUGxheWVyOjpQcmVsb2FkKQoreworICAgIG5vdEltcGxl
bWVudGVkKCk7Cit9CisKK2Jvb2wgTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpoYXNBdmFpbGFi
bGVWaWRlb0ZyYW1lKCkgY29uc3QKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVy
biBmYWxzZTsKK30KKworYm9vbCBNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OmNhbkxvYWRQb3N0
ZXIoKSBjb25zdAoreworICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIGZhbHNlOwor
fQorCit2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6c2V0UG9zdGVyKGNvbnN0IFN0cmlu
ZyYpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKworI2lmIFVTRShOQVRJVkVfRlVMTFND
UkVFTl9WSURFTykKK3ZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjplbnRlckZ1bGxzY3Jl
ZW4oKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKK3ZvaWQgTWVkaWFQbGF5ZXJQcml2
YXRlUmVtb3RlOjpleGl0RnVsbHNjcmVlbigpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30K
KyNlbmRpZgorCisjaWYgRU5BQkxFKFdJUkVMRVNTX1BMQVlCQUNLX1RBUkdFVCkKK1N0cmluZyBN
ZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OndpcmVsZXNzUGxheWJhY2tUYXJnZXROYW1lKCkgY29u
c3QKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiBlbXB0eVN0cmluZygpOwor
fQorCitNZWRpYVBsYXllcjo6V2lyZWxlc3NQbGF5YmFja1RhcmdldFR5cGUgTWVkaWFQbGF5ZXJQ
cml2YXRlUmVtb3RlOjp3aXJlbGVzc1BsYXliYWNrVGFyZ2V0VHlwZSgpIGNvbnN0Cit7CisgICAg
bm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gTWVkaWFQbGF5ZXI6OlRhcmdldFR5cGVOb25l
OworfQorCitib29sIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6d2lyZWxlc3NWaWRlb1BsYXli
YWNrRGlzYWJsZWQoKSBjb25zdAoreworICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJu
IHRydWU7Cit9CisKK3ZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpzZXRXaXJlbGVzc1Zp
ZGVvUGxheWJhY2tEaXNhYmxlZChib29sKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisK
K2Jvb2wgTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpjYW5QbGF5VG9XaXJlbGVzc1BsYXliYWNr
VGFyZ2V0KCkgY29uc3QKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiBmYWxz
ZTsKK30KKworYm9vbCBNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OmlzQ3VycmVudFBsYXliYWNr
VGFyZ2V0V2lyZWxlc3MoKSBjb25zdAoreworICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0
dXJuIGZhbHNlOworfQorCit2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6c2V0V2lyZWxl
c3NQbGF5YmFja1RhcmdldChSZWY8TWVkaWFQbGF5YmFja1RhcmdldD4mJikKK3sKKyAgICBub3RJ
bXBsZW1lbnRlZCgpOworfQorCit2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6c2V0U2hv
dWxkUGxheVRvUGxheWJhY2tUYXJnZXQoYm9vbCkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOwor
fQorI2VuZGlmCisKKyNpZiBVU0UoTkFUSVZFX0ZVTExTQ1JFRU5fVklERU8pCitib29sIE1lZGlh
UGxheWVyUHJpdmF0ZVJlbW90ZTo6Y2FuRW50ZXJGdWxsc2NyZWVuKCkgY29uc3QKK3sKKyAgICBu
b3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiBmYWxzZTsKK30KKyNlbmRpZgorCitib29sIE1l
ZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6c3VwcG9ydHNBY2NlbGVyYXRlZFJlbmRlcmluZygpIGNv
bnN0Cit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK3Zv
aWQgTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjphY2NlbGVyYXRlZFJlbmRlcmluZ1N0YXRlQ2hh
bmdlZCgpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKworYm9vbCBNZWRpYVBsYXllclBy
aXZhdGVSZW1vdGU6OnNob3VsZE1haW50YWluQXNwZWN0UmF0aW8oKSBjb25zdAoreworICAgIG5v
dEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK3ZvaWQgTWVkaWFQbGF5ZXJQ
cml2YXRlUmVtb3RlOjpzZXRTaG91bGRNYWludGFpbkFzcGVjdFJhdGlvKGJvb2wpCit7CisgICAg
bm90SW1wbGVtZW50ZWQoKTsKK30KKworYm9vbCBNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6Omhh
c1NpbmdsZVNlY3VyaXR5T3JpZ2luKCkgY29uc3QKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOwor
ICAgIHJldHVybiBmYWxzZTsKK30KKworYm9vbCBNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OmRp
ZFBhc3NDT1JTQWNjZXNzQ2hlY2soKSBjb25zdAoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cisg
ICAgcmV0dXJuIGZhbHNlOworfQorCitPcHRpb25hbDxib29sPiBNZWRpYVBsYXllclByaXZhdGVS
ZW1vdGU6OndvdWxkVGFpbnRPcmlnaW4oY29uc3QgU2VjdXJpdHlPcmlnaW4mKSBjb25zdAorewor
ICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKK30KKworTWVk
aWFQbGF5ZXI6Ok1vdmllTG9hZFR5cGUgTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjptb3ZpZUxv
YWRUeXBlKCkgY29uc3QKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiBNZWRp
YVBsYXllcjo6VW5rbm93bjsKK30KKwordm9pZCBNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OnBy
ZXBhcmVGb3JSZW5kZXJpbmcoKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKK01lZGlh
VGltZSBNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6Om1lZGlhVGltZUZvclRpbWVWYWx1ZShjb25z
dCBNZWRpYVRpbWUmIHRpbWVWYWx1ZSkgY29uc3QKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOwor
ICAgIHJldHVybiB0aW1lVmFsdWU7Cit9CisKK2RvdWJsZSBNZWRpYVBsYXllclByaXZhdGVSZW1v
dGU6Om1heGltdW1EdXJhdGlvblRvQ2FjaGVNZWRpYVRpbWUoKSBjb25zdAoreworICAgIG5vdElt
cGxlbWVudGVkKCk7CisgICAgcmV0dXJuIDA7Cit9CisKK3Vuc2lnbmVkIE1lZGlhUGxheWVyUHJp
dmF0ZVJlbW90ZTo6ZGVjb2RlZEZyYW1lQ291bnQoKSBjb25zdAoreworICAgIG5vdEltcGxlbWVu
dGVkKCk7CisgICAgcmV0dXJuIDA7Cit9CisKK3Vuc2lnbmVkIE1lZGlhUGxheWVyUHJpdmF0ZVJl
bW90ZTo6ZHJvcHBlZEZyYW1lQ291bnQoKSBjb25zdAoreworICAgIG5vdEltcGxlbWVudGVkKCk7
CisgICAgcmV0dXJuIDA7Cit9CisKK3Vuc2lnbmVkIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6
YXVkaW9EZWNvZGVkQnl0ZUNvdW50KCkgY29uc3QKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOwor
ICAgIHJldHVybiAwOworfQorCit1bnNpZ25lZCBNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OnZp
ZGVvRGVjb2RlZEJ5dGVDb3VudCgpIGNvbnN0Cit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAg
ICByZXR1cm4gMDsKK30KKwordm9pZCBNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OnNldFByaXZh
dGVCcm93c2luZ01vZGUoYm9vbCkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCitTdHJp
bmcgTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjplbmdpbmVEZXNjcmlwdGlvbigpIGNvbnN0Cit7
CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gZW1wdHlTdHJpbmcoKTsKK30KKwor
I2lmIEVOQUJMRShXRUJfQVVESU8pCitBdWRpb1NvdXJjZVByb3ZpZGVyKiBNZWRpYVBsYXllclBy
aXZhdGVSZW1vdGU6OmF1ZGlvU291cmNlUHJvdmlkZXIoKQoreworICAgIG5vdEltcGxlbWVudGVk
KCk7CisgICAgcmV0dXJuIG51bGxwdHI7Cit9CisjZW5kaWYKKworI2lmIEVOQUJMRShMRUdBQ1lf
RU5DUllQVEVEX01FRElBKQorc3RkOjp1bmlxdWVfcHRyPExlZ2FjeUNETVNlc3Npb24+IE1lZGlh
UGxheWVyUHJpdmF0ZVJlbW90ZTo6Y3JlYXRlU2Vzc2lvbihjb25zdCBTdHJpbmcmLCBMZWdhY3lD
RE1TZXNzaW9uQ2xpZW50KikKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiBu
dWxscHRyOworfQorCit2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6c2V0Q0RNU2Vzc2lv
bihMZWdhY3lDRE1TZXNzaW9uKikKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCit2b2lk
IE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6a2V5QWRkZWQoKQoreworICAgIG5vdEltcGxlbWVu
dGVkKCk7Cit9CisjZW5kaWYKKworI2lmIEVOQUJMRShFTkNSWVBURURfTUVESUEpCit2b2lkIE1l
ZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6Y2RtSW5zdGFuY2VBdHRhY2hlZChDRE1JbnN0YW5jZSYp
Cit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwordm9pZCBNZWRpYVBsYXllclByaXZhdGVS
ZW1vdGU6OmNkbUluc3RhbmNlRGV0YWNoZWQoQ0RNSW5zdGFuY2UmKQoreworICAgIG5vdEltcGxl
bWVudGVkKCk7Cit9CisKK3ZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjphdHRlbXB0VG9E
ZWNyeXB0V2l0aEluc3RhbmNlKENETUluc3RhbmNlJikKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgp
OworfQorCitib29sIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6d2FpdGluZ0ZvcktleSgpIGNv
bnN0Cit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gZmFsc2U7Cit9CisjZW5k
aWYKKworI2lmIEVOQUJMRShWSURFT19UUkFDSykKK2Jvb2wgTWVkaWFQbGF5ZXJQcml2YXRlUmVt
b3RlOjpyZXF1aXJlc1RleHRUcmFja1JlcHJlc2VudGF0aW9uKCkgY29uc3QKK3sKKyAgICBub3RJ
bXBsZW1lbnRlZCgpOworICAgIHJldHVybiBmYWxzZTsKK30KKwordm9pZCBNZWRpYVBsYXllclBy
aXZhdGVSZW1vdGU6OnNldFRleHRUcmFja1JlcHJlc2VudGF0aW9uKFRleHRUcmFja1JlcHJlc2Vu
dGF0aW9uKikKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCit2b2lkIE1lZGlhUGxheWVy
UHJpdmF0ZVJlbW90ZTo6c3luY1RleHRUcmFja0JvdW5kcygpCit7CisgICAgbm90SW1wbGVtZW50
ZWQoKTsKK30KKwordm9pZCBNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OnRyYWNrc0NoYW5nZWQo
KQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisjZW5kaWYKKworI2lmIFVTRShHU1RSRUFN
RVIpCit2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6c2ltdWxhdGVBdWRpb0ludGVycnVw
dGlvbigpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKyNlbmRpZgorCit2b2lkIE1lZGlh
UGxheWVyUHJpdmF0ZVJlbW90ZTo6YmVnaW5TaW11bGF0ZWRIRENQRXJyb3IoKQoreworICAgIG5v
dEltcGxlbWVudGVkKCk7Cit9CisKK3ZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjplbmRT
aW11bGF0ZWRIRENQRXJyb3IoKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKK1N0cmlu
ZyBNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6Omxhbmd1YWdlT2ZQcmltYXJ5QXVkaW9UcmFjaygp
IGNvbnN0Cit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gZW1wdHlTdHJpbmco
KTsKK30KKworc2l6ZV90IE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6ZXh0cmFNZW1vcnlDb3N0
KCkgY29uc3QKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiAwOworfQorCit1
bnNpZ25lZCBsb25nIGxvbmcgTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpmaWxlU2l6ZSgpIGNv
bnN0Cit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gMDsKK30KKworYm9vbCBN
ZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OmVuZGVkKCkgY29uc3QKK3sKKyAgICBub3RJbXBsZW1l
bnRlZCgpOworICAgIHJldHVybiBmYWxzZTsKK30KKworT3B0aW9uYWw8VmlkZW9QbGF5YmFja1F1
YWxpdHlNZXRyaWNzPiBNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OnZpZGVvUGxheWJhY2tRdWFs
aXR5TWV0cmljcygpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gV1RGOjpu
dWxsb3B0OworfQorCisjaWYgRU5BQkxFKEFWRl9DQVBUSU9OUykKK3ZvaWQgTWVkaWFQbGF5ZXJQ
cml2YXRlUmVtb3RlOjpub3RpZnlUcmFja01vZGVDaGFuZ2VkKCkKK3sKKyAgICBub3RJbXBsZW1l
bnRlZCgpOworfQorI2VuZGlmCisKK3ZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpub3Rp
ZnlBY3RpdmVTb3VyY2VCdWZmZXJzQ2hhbmdlZCgpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsK
K30KKwordm9pZCBNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OnNldFNob3VsZERpc2FibGVTbGVl
cChib29sKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKK3ZvaWQgTWVkaWFQbGF5ZXJQ
cml2YXRlUmVtb3RlOjphcHBsaWNhdGlvbldpbGxSZXNpZ25BY3RpdmUoKQoreworICAgIG5vdElt
cGxlbWVudGVkKCk7Cit9CisKK3ZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjphcHBsaWNh
dGlvbkRpZEJlY29tZUFjdGl2ZSgpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKworYm9v
bCBNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OnBlcmZvcm1UYXNrQXRNZWRpYVRpbWUoV1RGOjpG
dW5jdGlvbjx2b2lkKCk+JiYsIE1lZGlhVGltZSkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOwor
ICAgIHJldHVybiBmYWxzZTsKK30KKworYm9vbCBNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OnNo
b3VsZElnbm9yZUludHJpbnNpY1NpemUoKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAg
cmV0dXJuIGZhbHNlOworfQorCisjaWYgIVJFTEVBU0VfTE9HX0RJU0FCTEVECitXVEZMb2dDaGFu
bmVsJiBNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OmxvZ0NoYW5uZWwoKSBjb25zdAoreworICAg
IHJldHVybiBXZWJLaXQyTG9nV2ViUlRDOworfQorI2VuZGlmCisKK30gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BV
L21lZGlhL01lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL0dQVS9tZWRpYS9NZWRpYVBsYXllclByaXZhdGVSZW1vdGUuaApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yNGM3
NzFmNDNjMzQ5NjU0YzIwNjJiMmYxYTYwMTVkYmQxZTg3MjRiCi0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9NZWRpYVBsYXllclByaXZhdGVSZW1v
dGUuaApAQCAtMCwwICsxLDI5NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQor
ICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLiAKKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykKKwor
I2luY2x1ZGUgIlJlbW90ZU1lZGlhUGxheWVyTWFuYWdlci5oIgorI2luY2x1ZGUgPFdlYkNvcmUv
TWVkaWFQbGF5ZXJQcml2YXRlLmg+CisjaW5jbHVkZSA8d3RmL0xvZ2dlckhlbHBlci5oPgorI2lu
Y2x1ZGUgPHd0Zi9NZWRpYVRpbWUuaD4KKyNpbmNsdWRlIDx3dGYvV2Vha1B0ci5oPgorCituYW1l
c3BhY2UgV2ViS2l0IHsKKworY2xhc3MgTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlIGZpbmFsCisg
ICAgOiBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlPgorICAg
ICwgcHVibGljIE1lZGlhUGxheWVyUHJpdmF0ZUludGVyZmFjZQorI2lmICFSRUxFQVNFX0xPR19E
SVNBQkxFRAorICAgICwgcHJpdmF0ZSBMb2dnZXJIZWxwZXIKKyNlbmRpZgoreworcHVibGljOgor
ICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlPiBjcmVh
dGUoTWVkaWFQbGF5ZXIqIHBsYXllciwgY29uc3QgU3RyaW5nJiByZW1vdGVFbmdpbmVJZGVudGlm
aWVyLCBNZWRpYVBsYXllclByaXZhdGVSZW1vdGVJZGVudGlmaWVyIGlkZW50aWZpZXIsIFJlbW90
ZU1lZGlhUGxheWVyTWFuYWdlciYgbWFuYWdlcikKKyAgICB7CisgICAgICAgIHJldHVybiBtYWtl
VW5pcXVlPE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZT4ocGxheWVyLCByZW1vdGVFbmdpbmVJZGVu
dGlmaWVyLCBpZGVudGlmaWVyLCBtYW5hZ2VyKTsKKyAgICB9CisKKyAgICBleHBsaWNpdCBNZWRp
YVBsYXllclByaXZhdGVSZW1vdGUoTWVkaWFQbGF5ZXIqLCBjb25zdCBTdHJpbmcmLCBNZWRpYVBs
YXllclByaXZhdGVSZW1vdGVJZGVudGlmaWVyLCBSZW1vdGVNZWRpYVBsYXllck1hbmFnZXImKTsK
KyAgICB2aXJ0dWFsIH5NZWRpYVBsYXllclByaXZhdGVSZW1vdGUoKTsKKworICAgIHZvaWQgaW52
YWxpZGF0ZSgpIHsgbV9pbnZhbGlkID0gdHJ1ZTsgfQorCisjaWYgIVJFTEVBU0VfTE9HX0RJU0FC
TEVECisgICAgY29uc3QgTG9nZ2VyJiBsb2dnZXIoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX2xv
Z2dlci5nZXQoKTsgfQorICAgIGNvbnN0IGNoYXIqIGxvZ0NsYXNzTmFtZSgpIGNvbnN0IG92ZXJy
aWRlIHsgcmV0dXJuICJNZWRpYVBsYXllclByaXZhdGVSZW1vdGUiOyB9CisgICAgY29uc3Qgdm9p
ZCogbG9nSWRlbnRpZmllcigpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8
Y29uc3Qgdm9pZCo+KG1fbG9nSWRlbnRpZmllcik7IH0KKyAgICBXVEZMb2dDaGFubmVsJiBsb2dD
aGFubmVsKCkgY29uc3QgZmluYWw7CisjZW5kaWYKKworcHJpdmF0ZToKKworICAgIHZvaWQgbG9h
ZChjb25zdCBTdHJpbmcmKSBmaW5hbDsKKyNpZiBFTkFCTEUoTUVESUFfU09VUkNFKQorICAgIHZv
aWQgbG9hZChjb25zdCBTdHJpbmcmLCBNZWRpYVNvdXJjZVByaXZhdGVDbGllbnQqKSBmaW5hbDsK
KyNlbmRpZgorI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCisgICAgdm9pZCBsb2FkKE1lZGlhU3Ry
ZWFtUHJpdmF0ZSYpIGZpbmFsOworI2VuZGlmCisgICAgdm9pZCBjYW5jZWxMb2FkKCkgZmluYWw7
CisgICAgCisgICAgdm9pZCBwcmVwYXJlVG9QbGF5KCkgZmluYWw7CisgICAgUGxhdGZvcm1MYXll
ciogcGxhdGZvcm1MYXllcigpIGNvbnN0IGZpbmFsOworCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlM
WSkgfHwgKFBMQVRGT1JNKE1BQykgJiYgRU5BQkxFKFZJREVPX1BSRVNFTlRBVElPTl9NT0RFKSkK
KyAgICB2b2lkIHNldFZpZGVvRnVsbHNjcmVlbkxheWVyKFBsYXRmb3JtTGF5ZXIqLCBXVEY6OkZ1
bmN0aW9uPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikgZmluYWw7CisgICAgdm9pZCB1cGRh
dGVWaWRlb0Z1bGxzY3JlZW5JbmxpbmVJbWFnZSgpIGZpbmFsOworICAgIHZvaWQgc2V0VmlkZW9G
dWxsc2NyZWVuRnJhbWUoRmxvYXRSZWN0KSBmaW5hbDsKKyAgICB2b2lkIHNldFZpZGVvRnVsbHNj
cmVlbkdyYXZpdHkoTWVkaWFQbGF5ZXI6OlZpZGVvR3Jhdml0eSkgZmluYWw7CisgICAgdm9pZCBz
ZXRWaWRlb0Z1bGxzY3JlZW5Nb2RlKE1lZGlhUGxheWVyOjpWaWRlb0Z1bGxzY3JlZW5Nb2RlKSBm
aW5hbDsKKyAgICB2b2lkIHZpZGVvRnVsbHNjcmVlblN0YW5kYnlDaGFuZ2VkKCkgZmluYWw7Cisj
ZW5kaWYKKworI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCisgICAgTlNBcnJheSAqdGltZWRNZXRh
ZGF0YSgpIGNvbnN0IGZpbmFsOworICAgIFN0cmluZyBhY2Nlc3NMb2coKSBjb25zdCBmaW5hbDsK
KyAgICBTdHJpbmcgZXJyb3JMb2coKSBjb25zdCBmaW5hbDsKKyNlbmRpZgorICAgIGxvbmcgcGxh
dGZvcm1FcnJvckNvZGUoKSBjb25zdCBmaW5hbDsKKworICAgIHZvaWQgcGxheSgpIGZpbmFsOwor
ICAgIHZvaWQgcGF1c2UoKSBmaW5hbDsKKyAgICB2b2lkIHNldEJ1ZmZlcmluZ1BvbGljeShNZWRp
YVBsYXllcjo6QnVmZmVyaW5nUG9saWN5KSBmaW5hbDsKKworICAgIGJvb2wgc3VwcG9ydHNQaWN0
dXJlSW5QaWN0dXJlKCkgY29uc3QgZmluYWw7CisgICAgYm9vbCBzdXBwb3J0c0Z1bGxzY3JlZW4o
KSBjb25zdCBmaW5hbDsKKyAgICBib29sIHN1cHBvcnRzU2Nhbm5pbmcoKSBjb25zdCBmaW5hbDsK
KyAgICBib29sIHJlcXVpcmVzSW1tZWRpYXRlQ29tcG9zaXRpbmcoKSBjb25zdCBmaW5hbDsKKwor
ICAgIGJvb2wgY2FuU2F2ZU1lZGlhRGF0YSgpIGNvbnN0IGZpbmFsOworCisgICAgRmxvYXRTaXpl
IG5hdHVyYWxTaXplKCkgY29uc3QgZmluYWw7CisKKyAgICBib29sIGhhc1ZpZGVvKCkgY29uc3Qg
ZmluYWw7CisgICAgYm9vbCBoYXNBdWRpbygpIGNvbnN0IGZpbmFsOworCisgICAgdm9pZCBzZXRW
aXNpYmxlKGJvb2wpIGZpbmFsOworCisgICAgTWVkaWFUaW1lIGR1cmF0aW9uTWVkaWFUaW1lKCkg
Y29uc3QgZmluYWw7CisgICAgTWVkaWFUaW1lIGN1cnJlbnRNZWRpYVRpbWUoKSBjb25zdCBmaW5h
bDsKKworICAgIE1lZGlhVGltZSBnZXRTdGFydERhdGUoKSBjb25zdCBmaW5hbDsKKworICAgIHZv
aWQgc2Vlayhjb25zdCBNZWRpYVRpbWUmKSBmaW5hbDsKKyAgICB2b2lkIHNlZWtXaXRoVG9sZXJh
bmNlKGNvbnN0IE1lZGlhVGltZSYsIGNvbnN0IE1lZGlhVGltZSYsIGNvbnN0IE1lZGlhVGltZSYp
IGZpbmFsOworCisgICAgYm9vbCBzZWVraW5nKCkgY29uc3QgZmluYWw7CisKKyAgICBNZWRpYVRp
bWUgc3RhcnRUaW1lKCkgY29uc3QgZmluYWw7CisKKyAgICB2b2lkIHNldFJhdGVEb3VibGUoZG91
YmxlKSBmaW5hbDsKKyAgICBkb3VibGUgcmF0ZSgpIGNvbnN0IGZpbmFsOworCisgICAgdm9pZCBz
ZXRQcmVzZXJ2ZXNQaXRjaChib29sKSBmaW5hbDsKKworICAgIGJvb2wgcGF1c2VkKCkgY29uc3Qg
ZmluYWw7CisKKyAgICB2b2lkIHNldFZvbHVtZURvdWJsZShkb3VibGUpIGZpbmFsOworCisjaWYg
UExBVEZPUk0oSU9TX0ZBTUlMWSkgfHwgVVNFKEdTVFJFQU1FUikKKyAgICBmbG9hdCB2b2x1bWUo
KSBjb25zdCB7IHJldHVybiAxOyB9CisjZW5kaWYKKworICAgIHZvaWQgc2V0TXV0ZWQoYm9vbCkg
ZmluYWw7CisKKyAgICBib29sIGhhc0Nsb3NlZENhcHRpb25zKCkgY29uc3QgZmluYWw7CisgICAg
dm9pZCBzZXRDbG9zZWRDYXB0aW9uc1Zpc2libGUoYm9vbCkgZmluYWw7CisKKyAgICBkb3VibGUg
bWF4RmFzdEZvcndhcmRSYXRlKCkgY29uc3QgZmluYWw7CisgICAgZG91YmxlIG1pbkZhc3RSZXZl
cnNlUmF0ZSgpIGNvbnN0IGZpbmFsOworCisgICAgTWVkaWFQbGF5ZXI6Ok5ldHdvcmtTdGF0ZSBu
ZXR3b3JrU3RhdGUoKSBjb25zdCBmaW5hbDsKKyAgICBNZWRpYVBsYXllcjo6UmVhZHlTdGF0ZSBy
ZWFkeVN0YXRlKCkgY29uc3QgZmluYWw7CisKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8UGxhdGZvcm1U
aW1lUmFuZ2VzPiBzZWVrYWJsZSgpIGNvbnN0IGZpbmFsOworCisgICAgTWVkaWFUaW1lIG1heE1l
ZGlhVGltZVNlZWthYmxlKCkgY29uc3QgZmluYWw7CisgICAgTWVkaWFUaW1lIG1pbk1lZGlhVGlt
ZVNlZWthYmxlKCkgY29uc3QgZmluYWw7CisgICAgc3RkOjp1bmlxdWVfcHRyPFBsYXRmb3JtVGlt
ZVJhbmdlcz4gYnVmZmVyZWQoKSBjb25zdCBmaW5hbDsKKyAgICBkb3VibGUgc2Vla2FibGVUaW1l
UmFuZ2VzTGFzdE1vZGlmaWVkVGltZSgpIGNvbnN0IGZpbmFsOworICAgIGRvdWJsZSBsaXZlVXBk
YXRlSW50ZXJ2YWwoKSBjb25zdCBmaW5hbDsKKworICAgIHVuc2lnbmVkIGxvbmcgbG9uZyB0b3Rh
bEJ5dGVzKCkgY29uc3QgZmluYWw7CisgICAgYm9vbCBkaWRMb2FkaW5nUHJvZ3Jlc3MoKSBjb25z
dCBmaW5hbDsKKworICAgIHZvaWQgc2V0U2l6ZShjb25zdCBJbnRTaXplJikgZmluYWw7CisKKyAg
ICB2b2lkIHBhaW50KEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYpIGZpbmFsOwor
CisgICAgdm9pZCBwYWludEN1cnJlbnRGcmFtZUluQ29udGV4dChHcmFwaGljc0NvbnRleHQmLCBj
b25zdCBGbG9hdFJlY3QmKSBmaW5hbDsKKyAgICBib29sIGNvcHlWaWRlb1RleHR1cmVUb1BsYXRm
b3JtVGV4dHVyZShHcmFwaGljc0NvbnRleHQzRCosIFBsYXRmb3JtM0RPYmplY3QsIEdDM0RlbnVt
LCBHQzNEaW50LCBHQzNEZW51bSwgR0MzRGVudW0sIEdDM0RlbnVtLCBib29sLCBib29sKSBmaW5h
bDsKKyAgICBOYXRpdmVJbWFnZVB0ciBuYXRpdmVJbWFnZUZvckN1cnJlbnRUaW1lKCkgZmluYWw7
CisKKyAgICB2b2lkIHNldFByZWxvYWQoTWVkaWFQbGF5ZXI6OlByZWxvYWQpIGZpbmFsOworCisg
ICAgYm9vbCBoYXNBdmFpbGFibGVWaWRlb0ZyYW1lKCkgY29uc3QgZmluYWw7CisKKyAgICBib29s
IGNhbkxvYWRQb3N0ZXIoKSBjb25zdCBmaW5hbDsKKyAgICB2b2lkIHNldFBvc3Rlcihjb25zdCBT
dHJpbmcmKSBmaW5hbDsKKworI2lmIFVTRShOQVRJVkVfRlVMTFNDUkVFTl9WSURFTykKKyAgICB2
b2lkIGVudGVyRnVsbHNjcmVlbigpIGZpbmFsOworICAgIHZvaWQgZXhpdEZ1bGxzY3JlZW4oKSBm
aW5hbDsKKyNlbmRpZgorCisjaWYgRU5BQkxFKFdJUkVMRVNTX1BMQVlCQUNLX1RBUkdFVCkKKyAg
ICBTdHJpbmcgd2lyZWxlc3NQbGF5YmFja1RhcmdldE5hbWUoKSBjb25zdCBmaW5hbDsKKyAgICBN
ZWRpYVBsYXllcjo6V2lyZWxlc3NQbGF5YmFja1RhcmdldFR5cGUgd2lyZWxlc3NQbGF5YmFja1Rh
cmdldFR5cGUoKSBjb25zdCBmaW5hbDsKKworICAgIGJvb2wgd2lyZWxlc3NWaWRlb1BsYXliYWNr
RGlzYWJsZWQoKSBjb25zdCBmaW5hbDsKKyAgICB2b2lkIHNldFdpcmVsZXNzVmlkZW9QbGF5YmFj
a0Rpc2FibGVkKGJvb2wpIGZpbmFsOworCisgICAgYm9vbCBjYW5QbGF5VG9XaXJlbGVzc1BsYXli
YWNrVGFyZ2V0KCkgY29uc3QgZmluYWw7CisgICAgYm9vbCBpc0N1cnJlbnRQbGF5YmFja1Rhcmdl
dFdpcmVsZXNzKCkgY29uc3QgZmluYWw7CisgICAgdm9pZCBzZXRXaXJlbGVzc1BsYXliYWNrVGFy
Z2V0KFJlZjxNZWRpYVBsYXliYWNrVGFyZ2V0PiYmKSBmaW5hbDsKKworICAgIHZvaWQgc2V0U2hv
dWxkUGxheVRvUGxheWJhY2tUYXJnZXQoYm9vbCkgZmluYWw7CisjZW5kaWYKKworI2lmIFVTRShO
QVRJVkVfRlVMTFNDUkVFTl9WSURFTykKKyAgICBib29sIGNhbkVudGVyRnVsbHNjcmVlbigpIGNv
bnN0IGZpbmFsOworI2VuZGlmCisKKyAgICBib29sIHN1cHBvcnRzQWNjZWxlcmF0ZWRSZW5kZXJp
bmcoKSBjb25zdCBmaW5hbDsKKyAgICB2b2lkIGFjY2VsZXJhdGVkUmVuZGVyaW5nU3RhdGVDaGFu
Z2VkKCkgZmluYWw7CisKKyAgICBib29sIHNob3VsZE1haW50YWluQXNwZWN0UmF0aW8oKSBjb25z
dCBmaW5hbDsKKyAgICB2b2lkIHNldFNob3VsZE1haW50YWluQXNwZWN0UmF0aW8oYm9vbCkgZmlu
YWw7CisKKyAgICBib29sIGhhc1NpbmdsZVNlY3VyaXR5T3JpZ2luKCkgY29uc3QgZmluYWw7Cisg
ICAgYm9vbCBkaWRQYXNzQ09SU0FjY2Vzc0NoZWNrKCkgY29uc3QgZmluYWw7CisgICAgT3B0aW9u
YWw8Ym9vbD4gd291bGRUYWludE9yaWdpbihjb25zdCBTZWN1cml0eU9yaWdpbiYpIGNvbnN0IGZp
bmFsOworCisgICAgTWVkaWFQbGF5ZXI6Ok1vdmllTG9hZFR5cGUgbW92aWVMb2FkVHlwZSgpIGNv
bnN0IGZpbmFsOworCisgICAgdm9pZCBwcmVwYXJlRm9yUmVuZGVyaW5nKCkgZmluYWw7CisKKyAg
ICBNZWRpYVRpbWUgbWVkaWFUaW1lRm9yVGltZVZhbHVlKGNvbnN0IE1lZGlhVGltZSYgdGltZVZh
bHVlKSBjb25zdCBmaW5hbDsKKworICAgIGRvdWJsZSBtYXhpbXVtRHVyYXRpb25Ub0NhY2hlTWVk
aWFUaW1lKCkgY29uc3QgZmluYWw7CisKKyAgICB1bnNpZ25lZCBkZWNvZGVkRnJhbWVDb3VudCgp
IGNvbnN0IGZpbmFsOworICAgIHVuc2lnbmVkIGRyb3BwZWRGcmFtZUNvdW50KCkgY29uc3QgZmlu
YWw7CisgICAgdW5zaWduZWQgYXVkaW9EZWNvZGVkQnl0ZUNvdW50KCkgY29uc3QgZmluYWw7Cisg
ICAgdW5zaWduZWQgdmlkZW9EZWNvZGVkQnl0ZUNvdW50KCkgY29uc3QgZmluYWw7CisKKyAgICB2
b2lkIHNldFByaXZhdGVCcm93c2luZ01vZGUoYm9vbCkgZmluYWw7CisgICAgU3RyaW5nIGVuZ2lu
ZURlc2NyaXB0aW9uKCkgY29uc3QgZmluYWw7CisKKyNpZiBFTkFCTEUoV0VCX0FVRElPKQorICAg
IEF1ZGlvU291cmNlUHJvdmlkZXIqIGF1ZGlvU291cmNlUHJvdmlkZXIoKSBmaW5hbDsKKyNlbmRp
ZgorCisjaWYgRU5BQkxFKExFR0FDWV9FTkNSWVBURURfTUVESUEpCisgICAgc3RkOjp1bmlxdWVf
cHRyPExlZ2FjeUNETVNlc3Npb24+IGNyZWF0ZVNlc3Npb24oY29uc3QgU3RyaW5nJiwgTGVnYWN5
Q0RNU2Vzc2lvbkNsaWVudCopIGZpbmFsOworICAgIHZvaWQgc2V0Q0RNU2Vzc2lvbihMZWdhY3lD
RE1TZXNzaW9uKikgZmluYWw7CisgICAgdm9pZCBrZXlBZGRlZCgpIGZpbmFsOworI2VuZGlmCisK
KyNpZiBFTkFCTEUoRU5DUllQVEVEX01FRElBKQorICAgIHZvaWQgY2RtSW5zdGFuY2VBdHRhY2hl
ZChDRE1JbnN0YW5jZSYpIGZpbmFsOworICAgIHZvaWQgY2RtSW5zdGFuY2VEZXRhY2hlZChDRE1J
bnN0YW5jZSYpIGZpbmFsOworICAgIHZvaWQgYXR0ZW1wdFRvRGVjcnlwdFdpdGhJbnN0YW5jZShD
RE1JbnN0YW5jZSYpIGZpbmFsOworICAgIGJvb2wgd2FpdGluZ0ZvcktleSgpIGNvbnN0IGZpbmFs
OworI2VuZGlmCisKKyNpZiBFTkFCTEUoVklERU9fVFJBQ0spCisgICAgYm9vbCByZXF1aXJlc1Rl
eHRUcmFja1JlcHJlc2VudGF0aW9uKCkgY29uc3QgZmluYWw7CisgICAgdm9pZCBzZXRUZXh0VHJh
Y2tSZXByZXNlbnRhdGlvbihUZXh0VHJhY2tSZXByZXNlbnRhdGlvbiopIGZpbmFsOworICAgIHZv
aWQgc3luY1RleHRUcmFja0JvdW5kcygpIGZpbmFsOworICAgIHZvaWQgdHJhY2tzQ2hhbmdlZCgp
IGZpbmFsOworI2VuZGlmCisKKyNpZiBVU0UoR1NUUkVBTUVSKQorICAgIHZvaWQgc2ltdWxhdGVB
dWRpb0ludGVycnVwdGlvbigpIGZpbmFsOworI2VuZGlmCisKKyAgICB2b2lkIGJlZ2luU2ltdWxh
dGVkSERDUEVycm9yKCkgZmluYWw7CisgICAgdm9pZCBlbmRTaW11bGF0ZWRIRENQRXJyb3IoKSBm
aW5hbDsKKworICAgIFN0cmluZyBsYW5ndWFnZU9mUHJpbWFyeUF1ZGlvVHJhY2soKSBjb25zdCBm
aW5hbDsKKworICAgIHNpemVfdCBleHRyYU1lbW9yeUNvc3QoKSBjb25zdCBmaW5hbDsKKworICAg
IHVuc2lnbmVkIGxvbmcgbG9uZyBmaWxlU2l6ZSgpIGNvbnN0IGZpbmFsOworCisgICAgYm9vbCBl
bmRlZCgpIGNvbnN0IGZpbmFsOworCisgICAgT3B0aW9uYWw8VmlkZW9QbGF5YmFja1F1YWxpdHlN
ZXRyaWNzPiB2aWRlb1BsYXliYWNrUXVhbGl0eU1ldHJpY3MoKSBmaW5hbDsKKworI2lmIEVOQUJM
RShBVkZfQ0FQVElPTlMpCisgICAgdm9pZCBub3RpZnlUcmFja01vZGVDaGFuZ2VkKCkgZmluYWw7
CisjZW5kaWYKKworICAgIHZvaWQgbm90aWZ5QWN0aXZlU291cmNlQnVmZmVyc0NoYW5nZWQoKSBm
aW5hbDsKKworICAgIHZvaWQgc2V0U2hvdWxkRGlzYWJsZVNsZWVwKGJvb2wpIGZpbmFsOworCisg
ICAgdm9pZCBhcHBsaWNhdGlvbldpbGxSZXNpZ25BY3RpdmUoKSBmaW5hbDsKKyAgICB2b2lkIGFw
cGxpY2F0aW9uRGlkQmVjb21lQWN0aXZlKCkgZmluYWw7CisKKyNpZiBVU0UoQVZGT1VOREFUSU9O
KQorICAgIEFWUGxheWVyICpvYmpDQVZGb3VuZGF0aW9uQVZQbGF5ZXIoKSBjb25zdCBmaW5hbCB7
IHJldHVybiBudWxscHRyOyB9CisjZW5kaWYKKworICAgIGJvb2wgcGVyZm9ybVRhc2tBdE1lZGlh
VGltZShXVEY6OkZ1bmN0aW9uPHZvaWQoKT4mJiwgTWVkaWFUaW1lKSBmaW5hbDsKKworICAgIGJv
b2wgc2hvdWxkSWdub3JlSW50cmluc2ljU2l6ZSgpIGZpbmFsOworCisgICAgTWVkaWFQbGF5ZXIq
IG1fcGxheWVyIHsgbnVsbHB0ciB9OworICAgIFJlbW90ZU1lZGlhUGxheWVyTWFuYWdlciBtX21h
bmFnZXI7CisgICAgU3RyaW5nIG1fcmVtb3RlRW5naW5lSWRlbnRpZmllcjsKKyAgICBNZWRpYVBs
YXllclByaXZhdGVSZW1vdGVJZGVudGlmaWVyIG1faWRlbnRpZmllcjsKKworI2lmICFSRUxFQVNF
X0xPR19ESVNBQkxFRAorICAgIFJlZjxjb25zdCBMb2dnZXI+IG1fbG9nZ2VyOworICAgIGNvbnN0
IHZvaWQqIG1fbG9nSWRlbnRpZmllcjsKKyNlbmRpZgorCisgICAgYm9vbCBtX2ludmFsaWQgeyBm
YWxzZSB9OworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9NZWRpYVBsYXllclByaXZhdGVS
ZW1vdGVJZGVudGlmaWVyLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL01l
ZGlhUGxheWVyUHJpdmF0ZVJlbW90ZUlkZW50aWZpZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44N2U3YjhiYmFl
YzM1MzRlN2RlZmQ3ODIzODYxMDE0MzIxNzUzOGM3Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9NZWRpYVBsYXllclByaXZhdGVSZW1vdGVJZGVu
dGlmaWVyLmgKQEAgLTAsMCArMSwzNSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlICwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElT
JycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JT
CisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisg
KiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQg
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAq
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKwor
I2luY2x1ZGUgPHd0Zi9PYmplY3RJZGVudGlmaWVyLmg+CisKK25hbWVzcGFjZSBXZWJLaXQgewor
CitlbnVtIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZUlkZW50aWZpZXJUeXBlIHsgfTsKK3VzaW5n
IE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZUlkZW50aWZpZXIgPSBPYmplY3RJZGVudGlmaWVyPE1l
ZGlhUGxheWVyUHJpdmF0ZVJlbW90ZUlkZW50aWZpZXJUeXBlPjsKKworfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9S
ZW1vdGVNZWRpYVBsYXllck1hbmFnZXIuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQ
VS9tZWRpYS9SZW1vdGVNZWRpYVBsYXllck1hbmFnZXIuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmRkNDljZGUz
ZTc1YjEyMjI0MzBiYWRmMTUyMzkxNjI1MThmMmE2ZmIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyTWFuYWdlci5j
cHAKQEAgLTAsMCArMSwyMTMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAq
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisj
aW5jbHVkZSAiUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyLmgiCisKKyNpZiBFTkFCTEUoR1BVX1BS
T0NFU1MpCisKKyNpbmNsdWRlICJSZW1vdGVNZWRpYVBsYXllck1hbmFnZXJNZXNzYWdlcy5oIgor
I2luY2x1ZGUgIlJlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5TWVzc2FnZXMuaCIKKyNpbmNs
dWRlICJXZWJDb3JlQXJndW1lbnRDb2RlcnMuaCIKKyNpbmNsdWRlICJXZWJQcm9jZXNzLmgiCisj
aW5jbHVkZSAiV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5oIgorI2luY2x1ZGUgPFdlYkNv
cmUvTWVkaWFQbGF5ZXIuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL01lZGlhUGxheWVyRW5naW5lSWRl
bnRpZmllcnMuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL05vdEltcGxlbWVudGVkLmg+CisjaW5jbHVk
ZSA8V2ViQ29yZS9TZXR0aW5ncy5oPgorI2luY2x1ZGUgPHd0Zi9Bc3NlcnRpb25zLmg+CisKK25h
bWVzcGFjZSBXZWJLaXQgewordXNpbmcgbmFtZXNwYWNlIFBBTDsKK3VzaW5nIG5hbWVzcGFjZSBX
ZWJDb3JlOworCitjbGFzcyBNZWRpYVBsYXllclJlbW90ZUZhY3RvcnkgOiBwdWJsaWMgTWVkaWFQ
bGF5ZXJGYWN0b3J5IHsKK3B1YmxpYzoKKyAgICBNZWRpYVBsYXllclJlbW90ZUZhY3RvcnkoU3Ry
aW5nIHJlbW90ZUVuZ2luZUlkZW50aWZpZXIsIFJlbW90ZU1lZGlhUGxheWVyTWFuYWdlciYgbWFu
YWdlcikKKyAgICAgICAgOiBtX3JlbW90ZUVuZ2luZUlkZW50aWZpZXIocmVtb3RlRW5naW5lSWRl
bnRpZmllcikKKyAgICAgICAgLCBtX21hbmFnZXIobWFuYWdlcikKKyAgICB7CisgICAgfQorCisg
ICAgU3RyaW5nIGlkZW50aWZpZXIoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX3JlbW90ZUVuZ2lu
ZUlkZW50aWZpZXI7IH07CisKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8TWVkaWFQbGF5ZXJQcml2YXRl
SW50ZXJmYWNlPiBjcmVhdGVNZWRpYUVuZ2luZVBsYXllcihNZWRpYVBsYXllciogcGxheWVyKSBj
b25zdCBmaW5hbAorICAgIHsKKyAgICAgICAgcmV0dXJuIG1fbWFuYWdlci5jcmVhdGVSZW1vdGVN
ZWRpYVBsYXllcihwbGF5ZXIsIG1fcmVtb3RlRW5naW5lSWRlbnRpZmllcik7CisgICAgfQorCisg
ICAgdm9pZCBnZXRTdXBwb3J0ZWRUeXBlcyhIYXNoU2V0PFN0cmluZywgQVNDSUlDYXNlSW5zZW5z
aXRpdmVIYXNoPiYgdHlwZXMpIGNvbnN0IGZpbmFsCisgICAgeworICAgICAgICByZXR1cm4gbV9t
YW5hZ2VyLmdldFN1cHBvcnRlZFR5cGVzKG1fcmVtb3RlRW5naW5lSWRlbnRpZmllciwgdHlwZXMp
OworICAgIH0KKworICAgIE1lZGlhUGxheWVyOjpTdXBwb3J0c1R5cGUgc3VwcG9ydHNUeXBlQW5k
Q29kZWNzKGNvbnN0IE1lZGlhRW5naW5lU3VwcG9ydFBhcmFtZXRlcnMmIHBhcmFtZXRlcnMpIGNv
bnN0IGZpbmFsCisgICAgeworICAgICAgICByZXR1cm4gbV9tYW5hZ2VyLnN1cHBvcnRzVHlwZUFu
ZENvZGVjcyhtX3JlbW90ZUVuZ2luZUlkZW50aWZpZXIsIHBhcmFtZXRlcnMpOworICAgIH0KKwor
ICAgIEhhc2hTZXQ8UmVmUHRyPFNlY3VyaXR5T3JpZ2luPj4gb3JpZ2luc0luTWVkaWFDYWNoZShj
b25zdCBTdHJpbmcmIHBhdGgpIGNvbnN0IGZpbmFsCisgICAgeworICAgICAgICByZXR1cm4gbV9t
YW5hZ2VyLm9yaWdpbnNJbk1lZGlhQ2FjaGUobV9yZW1vdGVFbmdpbmVJZGVudGlmaWVyLCBwYXRo
KTsKKyAgICB9CisKKyAgICB2b2lkIGNsZWFyTWVkaWFDYWNoZShjb25zdCBTdHJpbmcmIHBhdGgs
IFdhbGxUaW1lIG1vZGlmaWVkU2luY2UpIGNvbnN0IGZpbmFsCisgICAgeworICAgICAgICByZXR1
cm4gbV9tYW5hZ2VyLmNsZWFyTWVkaWFDYWNoZShtX3JlbW90ZUVuZ2luZUlkZW50aWZpZXIsIHBh
dGgsIG1vZGlmaWVkU2luY2UpOworICAgIH0KKworICAgIHZvaWQgY2xlYXJNZWRpYUNhY2hlRm9y
T3JpZ2lucyhjb25zdCBTdHJpbmcmIHBhdGgsIGNvbnN0IEhhc2hTZXQ8UmVmUHRyPFNlY3VyaXR5
T3JpZ2luPj4mIG9yaWdpbnMpIGNvbnN0IGZpbmFsCisgICAgeworICAgICAgICByZXR1cm4gbV9t
YW5hZ2VyLmNsZWFyTWVkaWFDYWNoZUZvck9yaWdpbnMobV9yZW1vdGVFbmdpbmVJZGVudGlmaWVy
LCBwYXRoLCBvcmlnaW5zKTsKKyAgICB9CisKKyAgICBib29sIHN1cHBvcnRzS2V5U3lzdGVtKGNv
bnN0IFN0cmluZyYga2V5U3lzdGVtLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlKSBjb25zdCBmaW5h
bAorICAgIHsKKyAgICAgICAgcmV0dXJuIG1fbWFuYWdlci5zdXBwb3J0c0tleVN5c3RlbShtX3Jl
bW90ZUVuZ2luZUlkZW50aWZpZXIsIGtleVN5c3RlbSwgbWltZVR5cGUpOworICAgIH0KKworcHJp
dmF0ZToKKyAgICBTdHJpbmcgbV9yZW1vdGVFbmdpbmVJZGVudGlmaWVyOworICAgIFJlbW90ZU1l
ZGlhUGxheWVyTWFuYWdlciYgbV9tYW5hZ2VyOworfTsKKworUmVtb3RlTWVkaWFQbGF5ZXJNYW5h
Z2VyOjpSZW1vdGVNZWRpYVBsYXllck1hbmFnZXIoV2ViUHJvY2VzcyYgcHJvY2VzcykKKyAgICA6
IG1fcHJvY2Vzcyhwcm9jZXNzKQoreworICAgIG1fcHJvY2Vzcy5hZGRNZXNzYWdlUmVjZWl2ZXIo
TWVzc2FnZXM6OlJlbW90ZU1lZGlhUGxheWVyTWFuYWdlcjo6bWVzc2FnZVJlY2VpdmVyTmFtZSgp
LCAqdGhpcyk7Cit9CisKK1JlbW90ZU1lZGlhUGxheWVyTWFuYWdlcjo6flJlbW90ZU1lZGlhUGxh
eWVyTWFuYWdlcigpCit7CisgICAgbV9wcm9jZXNzLnJlbW92ZU1lc3NhZ2VSZWNlaXZlcihNZXNz
YWdlczo6UmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyOjptZXNzYWdlUmVjZWl2ZXJOYW1lKCkpOwor
fQorCitjb25zdCBjaGFyKiBSZW1vdGVNZWRpYVBsYXllck1hbmFnZXI6OnN1cHBsZW1lbnROYW1l
KCkKK3sKKyAgICByZXR1cm4gIlJlbW90ZU1lZGlhUGxheWVyTWFuYWdlciI7Cit9CisKK3ZvaWQg
UmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyOjppbml0aWFsaXplKGNvbnN0IFdlYlByb2Nlc3NDcmVh
dGlvblBhcmFtZXRlcnMmKQoreworLy8gRklYTUU6IFVzZSBwYXJhbWV0ZXJzLm1lZGlhTUlNRVR5
cGVzLgorfQorCitzdGQ6OnVuaXF1ZV9wdHI8TWVkaWFQbGF5ZXJQcml2YXRlSW50ZXJmYWNlPiBS
ZW1vdGVNZWRpYVBsYXllck1hbmFnZXI6OmNyZWF0ZVJlbW90ZU1lZGlhUGxheWVyKE1lZGlhUGxh
eWVyKiBwbGF5ZXIsIGNvbnN0IFN0cmluZyYgcmVtb3RlRW5naW5lSWRlbnRpZmllcikKK3sKKyAg
ICBhdXRvIGlkID0gTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlSWRlbnRpZmllcjo6Z2VuZXJhdGUo
KTsKKworICAgIGJvb2wgaGF2ZVJlbW90ZVByb3h5OworICAgIGJvb2wgc2VuZFN1Y2NlZWRlZCA9
IGdwdVByb2Nlc3NDb25uZWN0aW9uKCkuc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZU1lZGlhUGxh
eWVyTWFuYWdlclByb3h5OjpDcmVhdGVNZWRpYVBsYXllcihpZCwgcmVtb3RlRW5naW5lSWRlbnRp
ZmllciksIE1lc3NhZ2VzOjpSZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eTo6Q3JlYXRlTWVk
aWFQbGF5ZXI6OlJlcGx5KGhhdmVSZW1vdGVQcm94eSksIDApOworCisgICAgYXV0byByZW1vdGVQ
bGF5ZXIgPSBNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OmNyZWF0ZShwbGF5ZXIsIHJlbW90ZUVu
Z2luZUlkZW50aWZpZXIsIGlkLCAqdGhpcyk7CisKKyAgICBpZiAoIWhhdmVSZW1vdGVQcm94eSB8
fCAhc2VuZFN1Y2NlZWRlZCkgeworICAgICAgICBXVEZMb2dBbHdheXMoIkZhaWxlZCB0byBjcmVh
dGUgcmVtb3RlIG1lZGlhIHBsYXllci4iKTsKKyAgICAgICAgcmVtb3RlUGxheWVyLT5pbnZhbGlk
YXRlKCk7CisgICAgfQorCisgICAgbV9wbGF5ZXJzLmFkZChpZCwgbWFrZVdlYWtQdHIoKnJlbW90
ZVBsYXllcikpOworICAgIHJldHVybiByZW1vdGVQbGF5ZXI7Cit9CisKK3ZvaWQgUmVtb3RlTWVk
aWFQbGF5ZXJNYW5hZ2VyOjpnZXRTdXBwb3J0ZWRUeXBlcyhjb25zdCBTdHJpbmcmIHJlbW90ZUVu
Z2luZUlkZW50aWZpZXIsIEhhc2hTZXQ8U3RyaW5nLCBBU0NJSUNhc2VJbnNlbnNpdGl2ZUhhc2g+
JiByZXN1bHQpCit7CisgICAgLy8gRklYTUU6IHN1cHBvcnRlZCB0eXBlcyBkb24ndCBjaGFuZ2Us
IGNhY2hlIHRoZW0uCisgICAgVmVjdG9yPFN0cmluZz4gdHlwZXM7CisgICAgaWYgKCFncHVQcm9j
ZXNzQ29ubmVjdGlvbigpLnNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVNZWRpYVBsYXllck1hbmFn
ZXJQcm94eTo6R2V0U3VwcG9ydGVkVHlwZXMocmVtb3RlRW5naW5lSWRlbnRpZmllciksIE1lc3Nh
Z2VzOjpSZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eTo6R2V0U3VwcG9ydGVkVHlwZXM6OlJl
cGx5KHR5cGVzKSwgMCkpCisgICAgICAgIHJldHVybjsKKworICAgIHJlc3VsdCA9IEhhc2hTZXQ8
U3RyaW5nLCBBU0NJSUNhc2VJbnNlbnNpdGl2ZUhhc2g+KCk7CisgICAgZm9yIChhdXRvJiB0eXBl
IDogdHlwZXMpCisgICAgICAgIHJlc3VsdC5hZGQodHlwZSk7Cit9CisKK1dlYkNvcmU6Ok1lZGlh
UGxheWVyOjpTdXBwb3J0c1R5cGUgUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyOjpzdXBwb3J0c1R5
cGVBbmRDb2RlY3MoY29uc3QgU3RyaW5nJiByZW1vdGVFbmdpbmVJZGVudGlmaWVyLCBjb25zdCBX
ZWJDb3JlOjpNZWRpYUVuZ2luZVN1cHBvcnRQYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzKQoreworICAg
IC8vIEZJWE1FOiBzdXBwb3J0ZWQgdHlwZXMgZG9uJ3QgY2hhbmdlLCBjYWNoZSB0aGVtLgorCisg
ICAgLy8gRklYTUU6IGNvbnZlcnQgV2ViQ29yZTo6TWVkaWFQbGF5ZXI6OlN1cHBvcnRzVHlwZSB0
byBlbnVtIGNsYXNzIHNvIGl0IGNhbiBiZSBlbmNvZGVkIGFuZCBzZW50IHZpYSBJUEMKKyAgICBp
bnQgcmVzdWx0OworICAgIGlmICghZ3B1UHJvY2Vzc0Nvbm5lY3Rpb24oKS5zZW5kU3luYyhNZXNz
YWdlczo6UmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHk6OlN1cHBvcnRzVHlwZShyZW1vdGVF
bmdpbmVJZGVudGlmaWVyLCBwYXJhbWV0ZXJzKSwgTWVzc2FnZXM6OlJlbW90ZU1lZGlhUGxheWVy
TWFuYWdlclByb3h5OjpTdXBwb3J0c1R5cGU6OlJlcGx5KHJlc3VsdCksIDApKQorICAgICAgICBy
ZXR1cm4gTWVkaWFQbGF5ZXI6OklzTm90U3VwcG9ydGVkOworCisgICAgcmV0dXJuIHN0YXRpY19j
YXN0PFdlYkNvcmU6Ok1lZGlhUGxheWVyOjpTdXBwb3J0c1R5cGU+KHJlc3VsdCk7Cit9CisKKwor
Ym9vbCBSZW1vdGVNZWRpYVBsYXllck1hbmFnZXI6OnN1cHBvcnRzS2V5U3lzdGVtKGNvbnN0IFN0
cmluZyYsIGNvbnN0IFN0cmluZyYga2V5U3lzdGVtLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlKQor
eworICAgIHJldHVybiBmYWxzZTsKK30KKworCitIYXNoU2V0PFJlZlB0cjxXZWJDb3JlOjpTZWN1
cml0eU9yaWdpbj4+IFJlbW90ZU1lZGlhUGxheWVyTWFuYWdlcjo6b3JpZ2luc0luTWVkaWFDYWNo
ZShjb25zdCBTdHJpbmcmIHJlbW90ZUVuZ2luZUlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgcGF0
aCkKK3sKKyAgICBWZWN0b3I8V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhPiBvcmlnaW5EYXRh
czsKKyAgICBpZiAoIWdwdVByb2Nlc3NDb25uZWN0aW9uKCkuc2VuZFN5bmMoTWVzc2FnZXM6OlJl
bW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5OjpPcmlnaW5zSW5NZWRpYUNhY2hlKHJlbW90ZUVu
Z2luZUlkZW50aWZpZXIsIHBhdGgpLCBNZXNzYWdlczo6UmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2Vy
UHJveHk6Ok9yaWdpbnNJbk1lZGlhQ2FjaGU6OlJlcGx5KG9yaWdpbkRhdGFzKSwgMCkpCisgICAg
ICAgIHJldHVybiB7IH07CisKKyAgICBIYXNoU2V0PFJlZlB0cjxTZWN1cml0eU9yaWdpbj4+IG9y
aWdpbnM7CisgICAgZm9yIChhdXRvJiBvcmlnaW5EYXRhIDogb3JpZ2luRGF0YXMpCisgICAgICAg
IG9yaWdpbnMuYWRkKG9yaWdpbkRhdGEuc2VjdXJpdHlPcmlnaW4oKSk7CisKKyAgICByZXR1cm4g
b3JpZ2luczsKK30KKwordm9pZCBSZW1vdGVNZWRpYVBsYXllck1hbmFnZXI6OmNsZWFyTWVkaWFD
YWNoZShjb25zdCBTdHJpbmcmIHJlbW90ZUVuZ2luZUlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYg
cGF0aCwgV2FsbFRpbWUgbW9kaWZpZWRTaW5jZSkKK3sKKyAgICBncHVQcm9jZXNzQ29ubmVjdGlv
bigpLnNlbmQoTWVzc2FnZXM6OlJlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5OjpDbGVhck1l
ZGlhQ2FjaGUocmVtb3RlRW5naW5lSWRlbnRpZmllciwgcGF0aCwgbW9kaWZpZWRTaW5jZSksIDAp
OworfQorCit2b2lkIFJlbW90ZU1lZGlhUGxheWVyTWFuYWdlcjo6Y2xlYXJNZWRpYUNhY2hlRm9y
T3JpZ2lucyhjb25zdCBTdHJpbmcmIHJlbW90ZUVuZ2luZUlkZW50aWZpZXIsIGNvbnN0IFN0cmlu
ZyYgcGF0aCwgY29uc3QgSGFzaFNldDxSZWZQdHI8V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4+PiYg
b3JpZ2lucykKK3sKKyAgICBWZWN0b3I8V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhPiBvcmln
aW5EYXRhOworICAgIGZvciAoYXV0byYgb3JpZ2luIDogb3JpZ2lucykKKyAgICAgICAgb3JpZ2lu
RGF0YS5hcHBlbmQob3JpZ2luLT5kYXRhKCkpOworCisgICAgZ3B1UHJvY2Vzc0Nvbm5lY3Rpb24o
KS5zZW5kKE1lc3NhZ2VzOjpSZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eTo6Q2xlYXJNZWRp
YUNhY2hlRm9yT3JpZ2lucyhyZW1vdGVFbmdpbmVJZGVudGlmaWVyLCBwYXRoLCBvcmlnaW5EYXRh
KSwgMCk7Cit9CisKK3ZvaWQgUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyOjpuZXR3b3JrU3RhdGVD
aGFuZ2VkKE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZUlkZW50aWZpZXIpCit7Cit9CisKK3ZvaWQg
UmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyOjp1cGRhdGVQcmVmZXJlbmNlcyhjb25zdCBTZXR0aW5n
cyYgc2V0dGluZ3MpCit7CisgICAgYXV0byByZWdpc3RlckVuZ2luZSA9IFt0aGlzXShNZWRpYUVu
Z2luZVJlZ2lzdHJhciByZWdpc3RyYXIsIGNvbnN0IFN0cmluZyYgcmVtb3RlRW5naW5lSWRlbnRp
ZmllcikgeworICAgICAgICByZWdpc3RyYXIobWFrZVVuaXF1ZTxNZWRpYVBsYXllclJlbW90ZUZh
Y3Rvcnk+KHJlbW90ZUVuZ2luZUlkZW50aWZpZXIsICp0aGlzKSk7CisgICAgfTsKKworICAgIFJl
bW90ZU1lZGlhUGxheWVyU3VwcG9ydDo6c2V0UmVnaXN0ZXJSZW1vdGVQbGF5ZXJDYWxsYmFjayhz
ZXR0aW5ncy51c2VHUFVQcm9jZXNzRm9yTWVkaWEoKSA/IHJlZ2lzdGVyRW5naW5lIDogc3RkOjpm
dW5jdGlvbjx2b2lkKE1lZGlhRW5naW5lUmVnaXN0cmFyLCBjb25zdCBTdHJpbmcmKT4geyB9KTsK
K30KKworSVBDOjpDb25uZWN0aW9uJiBSZW1vdGVNZWRpYVBsYXllck1hbmFnZXI6OmdwdVByb2Nl
c3NDb25uZWN0aW9uKCkgY29uc3QKK3sKKyAgICByZXR1cm4gV2ViUHJvY2Vzczo6c2luZ2xldG9u
KCkuZW5zdXJlR1BVUHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9uKCk7Cit9CisKK30KKwor
I2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1Jl
bW90ZU1lZGlhUGxheWVyTWFuYWdlci5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9t
ZWRpYS9SZW1vdGVNZWRpYVBsYXllck1hbmFnZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zNGI4YjNkMzk3Y2Yw
MDBjZjRhMjk3ODc0MTdkNmVmZTc1OTI2ZTkyCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVNZWRpYVBsYXllck1hbmFnZXIuaApAQCAt
MCwwICsxLDg2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoR1BV
X1BST0NFU1MpCisKKyNpbmNsdWRlICJNZWRpYVBsYXllclByaXZhdGVSZW1vdGVJZGVudGlmaWVy
LmgiCisjaW5jbHVkZSAiTWVzc2FnZVJlY2VpdmVyLmgiCisjaW5jbHVkZSAiU2hhcmVkTWVtb3J5
LmgiCisjaW5jbHVkZSAiV2ViUHJvY2Vzc1N1cHBsZW1lbnQuaCIKKyNpbmNsdWRlIDxXZWJDb3Jl
L01lZGlhUGxheWVyLmg+CisjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KKworbmFtZXNwYWNlIFdl
YkNvcmUgeworY2xhc3MgTWVkaWFQbGF5ZXI7CitjbGFzcyBNZWRpYVBsYXllclByaXZhdGVJbnRl
cmZhY2U7CitjbGFzcyBTZXR0aW5nczsKK30KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNz
IE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTsKK2NsYXNzIFdlYlByb2Nlc3M7CisKK2NsYXNzIFJl
bW90ZU1lZGlhUGxheWVyTWFuYWdlciA6IHB1YmxpYyBXZWJQcm9jZXNzU3VwcGxlbWVudCwgcHVi
bGljIElQQzo6TWVzc2FnZVJlY2VpdmVyIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsK
K3B1YmxpYzoKKyAgICBleHBsaWNpdCBSZW1vdGVNZWRpYVBsYXllck1hbmFnZXIoV2ViUHJvY2Vz
cyYpOworICAgIH5SZW1vdGVNZWRpYVBsYXllck1hbmFnZXIoKTsKKworICAgIHN0YXRpYyBjb25z
dCBjaGFyKiBzdXBwbGVtZW50TmFtZSgpOworCisgICAgdm9pZCB1cGRhdGVQcmVmZXJlbmNlcyhj
b25zdCBXZWJDb3JlOjpTZXR0aW5ncyYpOworCisgICAgSVBDOjpDb25uZWN0aW9uJiBncHVQcm9j
ZXNzQ29ubmVjdGlvbigpIGNvbnN0OworCitwcml2YXRlOgorICAgIHN0ZDo6dW5pcXVlX3B0cjxX
ZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVJbnRlcmZhY2U+IGNyZWF0ZVJlbW90ZU1lZGlhUGxh
eWVyKFdlYkNvcmU6Ok1lZGlhUGxheWVyKiwgY29uc3QgU3RyaW5nJik7CisKKyAgICAvLyBXZWJQ
cm9jZXNzU3VwcGxlbWVudAorICAgIHZvaWQgaW5pdGlhbGl6ZShjb25zdCBXZWJQcm9jZXNzQ3Jl
YXRpb25QYXJhbWV0ZXJzJikgZmluYWw7CisKKyAgICAvLyBJUEM6Ok1lc3NhZ2VSZWNlaXZlcgor
ICAgIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVy
JikgZmluYWw7CisKKyAgICAvLyBNZXNzYWdlczo6UmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyCisg
ICAgdm9pZCBuZXR3b3JrU3RhdGVDaGFuZ2VkKE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZUlkZW50
aWZpZXIpOworCisgICAgZnJpZW5kIGNsYXNzIE1lZGlhUGxheWVyUmVtb3RlRmFjdG9yeTsKKyAg
ICB2b2lkIGdldFN1cHBvcnRlZFR5cGVzKGNvbnN0IFN0cmluZyYsIEhhc2hTZXQ8U3RyaW5nLCBB
U0NJSUNhc2VJbnNlbnNpdGl2ZUhhc2g+Jik7CisgICAgV2ViQ29yZTo6TWVkaWFQbGF5ZXI6OlN1
cHBvcnRzVHlwZSBzdXBwb3J0c1R5cGVBbmRDb2RlY3MoY29uc3QgU3RyaW5nJiwgY29uc3QgV2Vi
Q29yZTo6TWVkaWFFbmdpbmVTdXBwb3J0UGFyYW1ldGVycyYpOworICAgIGJvb2wgc3VwcG9ydHNL
ZXlTeXN0ZW0oY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiBrZXlTeXN0ZW0sIGNvbnN0IFN0
cmluZyYgbWltZVR5cGUpOworICAgIEhhc2hTZXQ8UmVmUHRyPFdlYkNvcmU6OlNlY3VyaXR5T3Jp
Z2luPj4gb3JpZ2luc0luTWVkaWFDYWNoZShjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmKTsK
KyAgICB2b2lkIGNsZWFyTWVkaWFDYWNoZShjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmLCBX
YWxsVGltZSBtb2RpZmllZFNpbmNlKTsKKyAgICB2b2lkIGNsZWFyTWVkaWFDYWNoZUZvck9yaWdp
bnMoY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiwgY29uc3QgSGFzaFNldDxSZWZQdHI8V2Vi
Q29yZTo6U2VjdXJpdHlPcmlnaW4+PiYpOworCisgICAgSGFzaE1hcDxNZWRpYVBsYXllclByaXZh
dGVSZW1vdGVJZGVudGlmaWVyLCBXZWFrUHRyPE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZT4+IG1f
cGxheWVyczsKKyAgICBXZWJQcm9jZXNzJiBtX3Byb2Nlc3M7Cit9OworCit9IC8vIG5hbWVzcGFj
ZSBXZWJLaXQKKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
R1BVL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyTWFuYWdlci5tZXNzYWdlcy5pbiBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyLm1lc3Nh
Z2VzLmluCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLmE5MzM1N2MyYmE4NWZmMWRkZWNjYTA3YzMwMzkxZjhlMjAyOTIx
MmYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlh
L1JlbW90ZU1lZGlhUGxheWVyTWFuYWdlci5tZXNzYWdlcy5pbgpAQCAtMCwwICsxLDMyIEBACisj
IENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisj
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyMgYXJlIG1ldDoKKyMgMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorIyAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorIyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisjICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisjCisj
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJV
VE9SUyBgYEFTIElTJycKKyMgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisjIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyMgUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTCisjIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyMgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyMgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTCisjIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOCisjIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisjIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YK
KyMgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCisjaWYgRU5BQkxFKFZJREVPKQor
CittZXNzYWdlcyAtPiBSZW1vdGVNZWRpYVBsYXllck1hbmFnZXIgTm90UmVmQ291bnRlZCB7CisK
KyAgICBOZXR3b3JrU3RhdGVDaGFuZ2VkKFdlYktpdDo6TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3Rl
SWRlbnRpZmllciBpZCkKKworfQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYlBhZ2UvV2ViUGFnZS5jcHAKaW5kZXggM2MyZmQxMmM1ODhhM2I3ZmJiNDAzZDc5NTM0NzBl
NWI3YzJhNmMwYy4uOTIzMzk5OTk5Yzc4OTMzYjk4NDczZDA3YjRhMmI0ZTAwZmRhNmI0ZiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKQEAgLTMxMiw2
ICszMTIsMTAgQEAKICNpbmNsdWRlICJXZWJEZXZpY2VPcmllbnRhdGlvblVwZGF0ZVByb3ZpZGVy
LmgiCiAjZW5kaWYKIAorI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykKKyNpbmNsdWRlICJSZW1vdGVN
ZWRpYVBsYXllck1hbmFnZXIuaCIKKyNlbmRpZgorCiBuYW1lc3BhY2UgV2ViS2l0IHsKIHVzaW5n
IG5hbWVzcGFjZSBKU0M7CiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKQEAgLTM2MDYsNiArMzYx
MCwxMCBAQCB2b2lkIFdlYlBhZ2U6OnVwZGF0ZVByZWZlcmVuY2VzKGNvbnN0IFdlYlByZWZlcmVu
Y2VzU3RvcmUmIHN0b3JlKQogCiAgICAgaWYgKG1fZHJhd2luZ0FyZWEpCiAgICAgICAgIG1fZHJh
d2luZ0FyZWEtPnVwZGF0ZVByZWZlcmVuY2VzKHN0b3JlKTsKKworI2lmIEVOQUJMRShHUFVfUFJP
Q0VTUykKKyAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5zdXBwbGVtZW50PFJlbW90ZU1lZGlh
UGxheWVyTWFuYWdlcj4oKS0+dXBkYXRlUHJlZmVyZW5jZXMoc2V0dGluZ3MpOworI2VuZGlmCiB9
CiAKICNpZiBFTkFCTEUoREFUQV9ERVRFQ1RJT04pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
UHJvY2Vzcy5jcHAKaW5kZXggMDZiMDhkNzhiZjU4NzM1ZTgxNzgwZmEwNDFjMGE4NzQxZWYwMGVm
OS4uMTUxMzI3MWFjM2Y5NzUxNTZmOTk0MmRhZmRmMGNjMGE4Y2Q3ZTNkMyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcApAQCAtMTY0LDYgKzE2NCwxMCBAQAogI2luY2x1
ZGUgPEphdmFTY3JpcHRDb3JlL1JlbW90ZUluc3BlY3Rvci5oPgogI2VuZGlmCiAKKyNpZiBFTkFC
TEUoR1BVX1BST0NFU1MpCisjaW5jbHVkZSAiUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyLmgiCisj
ZW5kaWYKKwogLy8gVGhpcyBzaG91bGQgYmUgbGVzcyB0aGFuIHBsdWdJbkF1dG9TdGFydEV4cGly
YXRpb25UaW1lVGhyZXNob2xkIGluIFBsdWdJbkF1dG9TdGFydFByb3ZpZGVyLgogc3RhdGljIGNv
bnN0IFNlY29uZHMgcGx1Z0luQXV0b1N0YXJ0RXhwaXJhdGlvblRpbWVVcGRhdGVUaHJlc2hvbGQg
eyAyOSAqIDI0ICogNjAgKiA2MCB9OwogCkBAIC0yMjEsNyArMjI1LDExIEBAIFdlYlByb2Nlc3M6
OldlYlByb2Nlc3MoKQogI2lmIFBMQVRGT1JNKENPQ09BKSAmJiBFTkFCTEUoTUVESUFfU1RSRUFN
KQogICAgIGFkZFN1cHBsZW1lbnQ8VXNlck1lZGlhQ2FwdHVyZU1hbmFnZXI+KCk7CiAjZW5kaWYK
LSAgICAKKworI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykKKyAgICBhZGRTdXBwbGVtZW50PFJlbW90
ZU1lZGlhUGxheWVyTWFuYWdlcj4oKTsKKyNlbmRpZgorCiAgICAgR2lnYWNhZ2U6OmZvcmJpZERp
c2FibGluZ1ByaW1pdGl2ZUdpZ2FjYWdlKCk7CiB9CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>385331</attachid>
            <date>2019-12-10 18:04:10 -0800</date>
            <delta_ts>2019-12-11 08:44:23 -0800</delta_ts>
            <desc>WIP patch</desc>
            <filename>bug-205094-20191210180409.patch</filename>
            <type>text/plain</type>
            <size>151101</size>
            <attacher name="Eric Carlson">eric.carlson</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjUzMzU0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNjE5MDUzNmRmMzEwYTI0
ODBlZTkzZjlkOGUxZGIwMTcwNzRiMGQwMC4uNTQ5YzFiNWRmMGEwZjM4MGRlMWQ5OGJhZjdlZjJl
ZGVkMTUzNjYzNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEwNyBAQAorMjAxOS0xMi0xMCAgRXJp
YyBDYXJsc29uICA8ZXJpYy5jYXJsc29uQGFwcGxlLmNvbT4KKworICAgICAgICBBZGQgaW5mcmFz
dHJ1Y3R1cmUgbmVlZGVkIGZvciBwbGF5aW5nIG1lZGlhIHBsYXllciBpbiB0aGUgR1BVIHByb2Nl
c3MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwNTA5
NAorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNTc4MTUzOTM+CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLCBubyBmdW5jdGlvbmFs
IGNoYW5nZSB5ZXQuCisKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2o6CisgICAgICAgICogcGxhdGZvcm0vQ29udGVudFR5cGUuaDoKKyAgICAgICAgKFdlYkNvcmU6
OkNvbnRlbnRUeXBlOjplbmNvZGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudFR5
cGU6OmRlY29kZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6bnVsbExvZ2dlcik6CisgICAgICAgIChXZWJDb3JlOjpudWxs
Q29udGVudFR5cGVWZWN0b3IpOgorICAgICAgICAoV2ViQ29yZTo6bXV0YWJsZUluc3RhbGxlZE1l
ZGlhRW5naW5lc1ZlY3Rvcik6CisgICAgICAgIChXZWJDb3JlOjpyZWdpc3RlclJlbW90ZVBsYXll
ckNhbGxiYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbW90ZU1lZGlhUGxheWVyU3VwcG9ydDo6
c2V0UmVnaXN0ZXJSZW1vdGVQbGF5ZXJDYWxsYmFjayk6CisgICAgICAgIChXZWJDb3JlOjpidWls
ZE1lZGlhRW5naW5lc1ZlY3Rvcik6CisgICAgICAgIChXZWJDb3JlOjppbnN0YWxsZWRNZWRpYUVu
Z2luZXMpOgorICAgICAgICAoV2ViQ29yZTo6YWRkTWVkaWFFbmdpbmUpOgorICAgICAgICAoV2Vi
Q29yZTo6TWVkaWFQbGF5ZXI6Om1lZGlhRW5naW5lKToKKyAgICAgICAgKFdlYkNvcmU6OmJlc3RN
ZWRpYUVuZ2luZUZvclN1cHBvcnRQYXJhbWV0ZXJzKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlh
UGxheWVyOjpuZXh0TWVkaWFFbmdpbmUpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXI6
OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllcjo6TWVkaWFQbGF5ZXIpOgor
ICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXI6Om5leHRCZXN0TWVkaWFFbmdpbmUpOgorICAg
ICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXI6OmxvYWRXaXRoTmV4dE1lZGlhRW5naW5lKToKKyAg
ICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyOjpnZXRTdXBwb3J0ZWRUeXBlcyk6CisgICAgICAg
IChXZWJDb3JlOjpNZWRpYVBsYXllcjo6b3JpZ2luc0luTWVkaWFDYWNoZSk6CisgICAgICAgIChX
ZWJDb3JlOjpNZWRpYVBsYXllcjo6Y2xlYXJNZWRpYUNhY2hlKToKKyAgICAgICAgKFdlYkNvcmU6
Ok1lZGlhUGxheWVyOjpjbGVhck1lZGlhQ2FjaGVGb3JPcmlnaW5zKToKKyAgICAgICAgKFdlYkNv
cmU6Ok1lZGlhUGxheWVyOjpzdXBwb3J0c0tleVN5c3RlbSk6CisgICAgICAgIChXZWJDb3JlOjpN
ZWRpYVBsYXllcjo6bmV0d29ya1N0YXRlQ2hhbmdlZCk6CisgICAgICAgIChXZWJDb3JlOjpuZXh0
TWVkaWFFbmdpbmUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXI6Om5l
eHRCZXN0TWVkaWFFbmdpbmUgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL01lZGlhUGxheWVyLmg6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYUVuZ2luZVN1cHBv
cnRQYXJhbWV0ZXJzOjplbmNvZGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFFbmdp
bmVTdXBwb3J0UGFyYW1ldGVyczo6ZGVjb2RlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxh
eWVyRmFjdG9yeTo6fk1lZGlhUGxheWVyRmFjdG9yeSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRp
YVBsYXllckZhY3Rvcnk6Om9yaWdpbnNJbk1lZGlhQ2FjaGUgY29uc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6TWVkaWFQbGF5ZXJGYWN0b3J5OjpjbGVhck1lZGlhQ2FjaGUgY29uc3QpOgorICAgICAg
ICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJGYWN0b3J5OjpjbGVhck1lZGlhQ2FjaGVGb3JPcmlnaW5z
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyRmFjdG9yeTo6c3VwcG9ydHNL
ZXlTeXN0ZW0gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXI6OnNldFZpZGVv
RnVsbHNjcmVlbkxheWVyKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVy
OjpzaXplIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyOjpp
bnZhbGlkVGltZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllcjo6cGxh
dGZvcm1Wb2x1bWVDb25maWd1cmF0aW9uUmVxdWlyZWQgY29uc3QpOiBEZWxldGVkLgorICAgICAg
ICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXI6OmNvbnRlbnRNSU1FVHlwZSBjb25zdCk6IERlbGV0ZWQu
CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllcjo6Y29udGVudFR5cGVDb2RlY3MgY29uc3Qp
OiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXI6OmNvbnRlbnRNSU1FVHlw
ZVdhc0luZmVycmVkRnJvbUV4dGVuc2lvbiBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJD
b3JlOjpNZWRpYVBsYXllcjo6bWVkaWFQbGF5ZXJMb2dJZGVudGlmaWVyKTogRGVsZXRlZC4KKyAg
ICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyOjpyZW5kZXJpbmdDYW5CZUFjY2VsZXJhdGVkIGNv
bnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyOjpyZW5kZXJpbmdN
b2RlQ2hhbmdlZCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXll
cjo6YWNjZWxlcmF0ZWRDb21wb3NpdGluZ0VuYWJsZWQpOiBEZWxldGVkLgorICAgICAgICAoV2Vi
Q29yZTo6TWVkaWFQbGF5ZXI6OmFjdGl2ZVNvdXJjZUJ1ZmZlcnNDaGFuZ2VkKTogRGVsZXRlZC4K
KyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyOjpwbGF5ZXJDb250ZW50Qm94UmVjdCBjb25z
dCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllcjo6cGxheWVyQ29udGVu
dHNTY2FsZSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllcjo6
c2hvdWxkVXNlUGVyc2lzdGVudENhY2hlIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNv
cmU6Ok1lZGlhUGxheWVyOjptZWRpYUNhY2hlRGlyZWN0b3J5IGNvbnN0KTogRGVsZXRlZC4KKyAg
ICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyOjppc1ZpZGVvUGxheWVyIGNvbnN0KTogRGVsZXRl
ZC4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyOjptZWRpYUVuZ2luZVVwZGF0ZWQpOiBE
ZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXI6OmlzTG9vcGluZyBjb25zdCk6
IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllcjo6cmVxdWVzdEluc3RhbGxN
aXNzaW5nUGx1Z2lucyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllcjo6
Y2xpZW50IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9NZWRp
YVBsYXllckVuZ2luZUlkZW50aWZpZXJzLmg6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL0NvbnRlbnRUeXBlLmguCisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllckVuZ2lu
ZUlkZW50aWZpZXJzOjphdkZvdW5kYXRpb25FbmdpbmVJZGVudGlmaWVyKToKKyAgICAgICAgKFdl
YkNvcmU6Ok1lZGlhUGxheWVyRW5naW5lSWRlbnRpZmllcnM6OmF2Rm91bmRhdGlvbk1TRUVuZ2lu
ZUlkZW50aWZpZXIpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJFbmdpbmVJZGVudGlm
aWVyczo6YXZGb3VuZGF0aW9uTWVkaWFTdHJlYW1FbmdpbmVJZGVudGlmaWVyKToKKyAgICAgICAg
KFdlYkNvcmU6Ok1lZGlhUGxheWVyRW5naW5lSWRlbnRpZmllcnM6OkdTdHJlYW1lck1lZGlhRW5n
aW5lSWRlbnRpZmllcik6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllckVuZ2luZUlkZW50
aWZpZXJzOjpHU3RyZWFtZXJNU0VNZWRpYUVuZ2luZUlkZW50aWZpZXIpOgorICAgICAgICAoV2Vi
Q29yZTo6TWVkaWFQbGF5ZXJFbmdpbmVJZGVudGlmaWVyczo6aG9sZVB1bmNoTWVkaWFFbmdpbmVJ
ZGVudGlmaWVyKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyRW5naW5lSWRlbnRpZmll
cnM6Ok1lZGlhRm91bmRhdGlvbk1lZGlhRW5naW5lSWRlbnRpZmllcik6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvUGxhdGZvcm1UaW1lUmFuZ2VzLmg6CisgICAgICAgIChXZWJDb3JlOjpQ
bGF0Zm9ybVRpbWVSYW5nZXM6OlBsYXRmb3JtVGltZVJhbmdlcyk6IERlbGV0ZWQuCisgICAgICAg
IChXZWJDb3JlOjpQbGF0Zm9ybVRpbWVSYW5nZXM6Omxlbmd0aCBjb25zdCk6IERlbGV0ZWQuCisg
ICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybVRpbWVSYW5nZXM6OlJhbmdlOjpSYW5nZSk6IERlbGV0
ZWQuCisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybVRpbWVSYW5nZXM6OlJhbmdlOjppc1BvaW50
SW5SYW5nZSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybVRpbWVS
YW5nZXM6OlJhbmdlOjppc092ZXJsYXBwaW5nUmFuZ2UgY29uc3QpOiBEZWxldGVkLgorICAgICAg
ICAoV2ViQ29yZTo6UGxhdGZvcm1UaW1lUmFuZ2VzOjpSYW5nZTo6aXNDb250aWd1b3VzV2l0aFJh
bmdlIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtVGltZVJhbmdl
czo6UmFuZ2U6OnVuaW9uV2l0aE92ZXJsYXBwaW5nT3JDb250aWd1b3VzUmFuZ2UgY29uc3QpOiBE
ZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1UaW1lUmFuZ2VzOjpSYW5nZTo6aXNC
ZWZvcmVSYW5nZSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
YXZmb3VuZGF0aW9uL2NmL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbkNGLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbkNGOjpyZWdpc3Rl
ck1lZGlhRW5naW5lKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24v
b2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLmg6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3Vu
ZGF0aW9uT2JqQy5tbToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUFWRm91
bmRhdGlvbk9iakM6OnJlZ2lzdGVyTWVkaWFFbmdpbmUpOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZG
T2JqQy5tbToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNl
QVZGT2JqQzo6cmVnaXN0ZXJNZWRpYUVuZ2luZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpD
Lm1tOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZP
YmpDOjpyZWdpc3Rlck1lZGlhRW5naW5lKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9n
c3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6cmVnaXN0ZXJNZWRpYUVuZ2luZSk6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL21zZS9NZWRpYVBsYXllclByaXZh
dGVHU3RyZWFtZXJNU0UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRl
R1N0cmVhbWVyTVNFOjpyZWdpc3Rlck1lZGlhRW5naW5lKToKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9ob2xlcHVuY2gvTWVkaWFQbGF5ZXJQcml2YXRlSG9sZVB1bmNoLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUhvbGVQdW5jaDo6cmVnaXN0ZXJNZWRpYUVu
Z2luZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL01lZGlhUGxheWVyUHJpdmF0
ZU1lZGlhRm91bmRhdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZh
dGVNZWRpYUZvdW5kYXRpb246OnJlZ2lzdGVyTWVkaWFFbmdpbmUpOgorICAgICAgICAqIHBsYXRm
b3JtL21vY2svbWVkaWFzb3VyY2UvTW9ja01lZGlhUGxheWVyTWVkaWFTb3VyY2UuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6TW9ja01lZGlhUGxheWVyTWVkaWFTb3VyY2U6OnJlZ2lzdGVyTWVkaWFF
bmdpbmUpOgorCiAyMDE5LTEyLTEwICBQZXIgQXJuZSBWb2xsYW4gIDxwdm9sbGFuQGFwcGxlLmNv
bT4KIAogICAgICAgICBNYWtlIGl0IHBvc3NpYmxlIHRvIGFkZCByZWdyZXNzaW9uIHRlc3RzIGZv
ciBibG9ja2VkIFhQQyBzZXJ2aWNlcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VM
b2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCA3NDM2MWVjYTNiN2Y2OTRlZTIzZDlk
MzY3ODIyYzZkZTViMTg1YjVlLi4xZTM0NzA4MGMwNmE5OGQzNmVhOWI5MzFlZjk4OGQ2NzIxYmUz
NDYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2Vi
S2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDE4NyBAQAorMjAxOS0xMi0xMCAgRXJpYyBDYXJsc29u
ICA8ZXJpYy5jYXJsc29uQGFwcGxlLmNvbT4KKworICAgICAgICBBZGQgaW5mcmFzdHJ1Y3R1cmUg
bmVlZGVkIGZvciBwbGF5aW5nIG1lZGlhIHBsYXllciBpbiB0aGUgR1BVIHByb2Nlc3MKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwNTA5NAorICAgICAg
ICA8cmRhcjovL3Byb2JsZW0vNTc4MTUzOTM+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgKiBEZXJpdmVkU291cmNlcy1pbnB1dC54Y2ZpbGVsaXN0Ogor
ICAgICAgICAqIERlcml2ZWRTb3VyY2VzLW91dHB1dC54Y2ZpbGVsaXN0OgorICAgICAgICAqIERl
cml2ZWRTb3VyY2VzLm1ha2U6CisgICAgICAgICogR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9X
ZWJQcm9jZXNzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6R1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vz
czo6R1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcyk6CisgICAgICAgIChXZWJLaXQ6OkdQVUNvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3M6On5HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzKToKKyAgICAgICAg
KFdlYktpdDo6R1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6ZGlkUmVjZWl2ZU1lc3NhZ2UpOgor
ICAgICAgICAoV2ViS2l0OjpHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpkaWRSZWNlaXZlU3lu
Y01lc3NhZ2UpOgorICAgICAgICAqIEdQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vz
cy5oOgorICAgICAgICAqIEdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2Vy
UHJveHkuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6bnVsbExvZ2dlcik6CisgICAgICAg
IChXZWJLaXQ6OlJlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5OjpQbGF5ZXJQcm94eTo6UGxh
eWVyUHJveHkpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94
eTo6UGxheWVyUHJveHk6On5QbGF5ZXJQcm94eSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZU1l
ZGlhUGxheWVyTWFuYWdlclByb3h5OjpSZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eSk6Cisg
ICAgICAgIChXZWJLaXQ6OlJlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5Ojp+UmVtb3RlTWVk
aWFQbGF5ZXJNYW5hZ2VyUHJveHkpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVNZWRpYVBsYXll
ck1hbmFnZXJQcm94eTo6Y3JlYXRlTWVkaWFQbGF5ZXIpOgorICAgICAgICAoV2ViS2l0OjpSZW1v
dGVNZWRpYVBsYXllck1hbmFnZXJQcm94eTo6Z2V0U3VwcG9ydGVkVHlwZXMpOgorICAgICAgICAo
V2ViS2l0OjpSZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eTo6c3VwcG9ydHNUeXBlKToKKyAg
ICAgICAgKFdlYktpdDo6UmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHk6Om9yaWdpbnNJbk1l
ZGlhQ2FjaGUpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94
eTo6Y2xlYXJNZWRpYUNhY2hlKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTWVkaWFQbGF5ZXJN
YW5hZ2VyUHJveHk6OmNsZWFyTWVkaWFDYWNoZUZvck9yaWdpbnMpOgorICAgICAgICAoV2ViS2l0
OjpSZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eTo6c3VwcG9ydHNLZXlTeXN0ZW0pOgorICAg
ICAgICAqIEdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHkuaDog
QWRkZWQuCisgICAgICAgIChXZWJLaXQ6OlJlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5Ojp3
ZWJQcm9jZXNzQ29ubmVjdGlvbiBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZU1lZGlh
UGxheWVyTWFuYWdlclByb3h5OjpkaWRSZWNlaXZlTWVzc2FnZUZyb21XZWJQcm9jZXNzKToKKyAg
ICAgICAgKFdlYktpdDo6UmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHk6OmRpZFJlY2VpdmVT
eW5jTWVzc2FnZUZyb21XZWJQcm9jZXNzKToKKyAgICAgICAgKiBHUFVQcm9jZXNzL21lZGlhL1Jl
bW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5Lm1lc3NhZ2VzLmluOiBBZGRlZC4KKyAgICAgICAg
KiBTY3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5weToKKyAgICAgICAgKiBTb3VyY2VzLnR4dDoKKyAg
ICAgICAgKiBTb3VyY2VzQ29jb2EudHh0OgorICAgICAgICAqIFdlYktpdC54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL21lZGlhL01lZGlhUGxheWVy
UHJpdmF0ZVJlbW90ZS5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpNZWRpYVBsYXllclBy
aXZhdGVSZW1vdGU6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZSk6CisgICAgICAgIChXZWJLaXQ6
Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6fk1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZSk6Cisg
ICAgICAgIChXZWJLaXQ6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6TWVkaWFQbGF5ZXJQcml2
YXRlUmVtb3RlOjpsb2FkKToKKyAgICAgICAgKFdlYktpdDo6TWVkaWFQbGF5ZXJQcml2YXRlUmVt
b3RlOjpsb2FkKToKKyAgICAgICAgKFdlYktpdDo6TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpj
YW5jZWxMb2FkKToKKyAgICAgICAgKFdlYktpdDo6TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpw
cmVwYXJlVG9QbGF5KToKKyAgICAgICAgKFdlYktpdDo6TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3Rl
OjpwbGF0Zm9ybUxheWVyIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6TWVkaWFQbGF5ZXJQcml2
YXRlUmVtb3RlOjpzZXRWaWRlb0Z1bGxzY3JlZW5MYXllcik6CisgICAgICAgIChXZWJLaXQ6Ok1l
ZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6dXBkYXRlVmlkZW9GdWxsc2NyZWVuSW5saW5lSW1hZ2Up
OgorICAgICAgICAoV2ViS2l0OjpNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OnNldFZpZGVvRnVs
bHNjcmVlbkZyYW1lKToKKyAgICAgICAgKFdlYktpdDo6TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3Rl
OjpzZXRWaWRlb0Z1bGxzY3JlZW5HcmF2aXR5KToKKyAgICAgICAgKFdlYktpdDo6TWVkaWFQbGF5
ZXJQcml2YXRlUmVtb3RlOjpzZXRWaWRlb0Z1bGxzY3JlZW5Nb2RlKToKKyAgICAgICAgKFdlYktp
dDo6TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjp2aWRlb0Z1bGxzY3JlZW5TdGFuZGJ5Q2hhbmdl
ZCk6CisgICAgICAgIChXZWJLaXQ6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6YWNjZXNzTG9n
IGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjplcnJv
ckxvZyBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6
cGxhdGZvcm1FcnJvckNvZGUgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpNZWRpYVBsYXllclBy
aXZhdGVSZW1vdGU6OnBsYXkpOgorICAgICAgICAoV2ViS2l0OjpNZWRpYVBsYXllclByaXZhdGVS
ZW1vdGU6OnBhdXNlKToKKyAgICAgICAgKFdlYktpdDo6TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3Rl
OjpzZXRCdWZmZXJpbmdQb2xpY3kpOgorICAgICAgICAoV2ViS2l0OjpNZWRpYVBsYXllclByaXZh
dGVSZW1vdGU6OnN1cHBvcnRzUGljdHVyZUluUGljdHVyZSBjb25zdCk6CisgICAgICAgIChXZWJL
aXQ6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6c3VwcG9ydHNGdWxsc2NyZWVuIGNvbnN0KToK
KyAgICAgICAgKFdlYktpdDo6TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpzdXBwb3J0c1NjYW5u
aW5nIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpy
ZXF1aXJlc0ltbWVkaWF0ZUNvbXBvc2l0aW5nIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6TWVk
aWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpjYW5TYXZlTWVkaWFEYXRhIGNvbnN0KToKKyAgICAgICAg
KFdlYktpdDo6TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpuYXR1cmFsU2l6ZSBjb25zdCk6Cisg
ICAgICAgIChXZWJLaXQ6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6aGFzVmlkZW8gY29uc3Qp
OgorICAgICAgICAoV2ViS2l0OjpNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6Omhhc0F1ZGlvIGNv
bnN0KToKKyAgICAgICAgKFdlYktpdDo6TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpzZXRWaXNp
YmxlKToKKyAgICAgICAgKFdlYktpdDo6TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpNZWRpYVBs
YXllclByaXZhdGVSZW1vdGU6OmR1cmF0aW9uTWVkaWFUaW1lIGNvbnN0KToKKyAgICAgICAgKFdl
YktpdDo6TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpjdXJyZW50TWVkaWFUaW1lIGNvbnN0KToK
KyAgICAgICAgKFdlYktpdDo6TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpnZXRTdGFydERhdGUg
Y29uc3QpOgorICAgICAgICAoV2ViS2l0OjpNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OnNlZWsp
OgorICAgICAgICAoV2ViS2l0OjpNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OnNlZWtXaXRoVG9s
ZXJhbmNlKToKKyAgICAgICAgKFdlYktpdDo6TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpzZWVr
aW5nIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpz
dGFydFRpbWUgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpNZWRpYVBsYXllclByaXZhdGVSZW1v
dGU6OnNldFJhdGVEb3VibGUpOgorICAgICAgICAoV2ViS2l0OjpNZWRpYVBsYXllclByaXZhdGVS
ZW1vdGU6OnJhdGUgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpNZWRpYVBsYXllclByaXZhdGVS
ZW1vdGU6OnNldFByZXNlcnZlc1BpdGNoKToKKyAgICAgICAgKFdlYktpdDo6TWVkaWFQbGF5ZXJQ
cml2YXRlUmVtb3RlOjpwYXVzZWQgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpNZWRpYVBsYXll
clByaXZhdGVSZW1vdGU6OnNldFZvbHVtZURvdWJsZSk6CisgICAgICAgIChXZWJLaXQ6Ok1lZGlh
UGxheWVyUHJpdmF0ZVJlbW90ZTo6c2V0TXV0ZWQpOgorICAgICAgICAoV2ViS2l0OjpNZWRpYVBs
YXllclByaXZhdGVSZW1vdGU6Omhhc0Nsb3NlZENhcHRpb25zIGNvbnN0KToKKyAgICAgICAgKFdl
YktpdDo6TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpzZXRDbG9zZWRDYXB0aW9uc1Zpc2libGUp
OgorICAgICAgICAoV2ViS2l0OjpNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6Om1heEZhc3RGb3J3
YXJkUmF0ZSBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90
ZTo6bWluRmFzdFJldmVyc2VSYXRlIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6TWVkaWFQbGF5
ZXJQcml2YXRlUmVtb3RlOjpuZXR3b3JrU3RhdGUgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpN
ZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OnJlYWR5U3RhdGUgY29uc3QpOgorICAgICAgICAoV2Vi
S2l0OjpNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OnNlZWthYmxlIGNvbnN0KToKKyAgICAgICAg
KFdlYktpdDo6TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpidWZmZXJlZCBjb25zdCk6CisgICAg
ICAgIChXZWJLaXQ6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6bWF4TWVkaWFUaW1lU2Vla2Fi
bGUgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6Om1p
bk1lZGlhVGltZVNlZWthYmxlIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6TWVkaWFQbGF5ZXJQ
cml2YXRlUmVtb3RlOjpzZWVrYWJsZVRpbWVSYW5nZXNMYXN0TW9kaWZpZWRUaW1lIGNvbnN0KToK
KyAgICAgICAgKFdlYktpdDo6TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpsaXZlVXBkYXRlSW50
ZXJ2YWwgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6
OnRvdGFsQnl0ZXMgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpNZWRpYVBsYXllclByaXZhdGVS
ZW1vdGU6OmRpZExvYWRpbmdQcm9ncmVzcyBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6Ok1lZGlh
UGxheWVyUHJpdmF0ZVJlbW90ZTo6c2V0U2l6ZSk6CisgICAgICAgIChXZWJLaXQ6Ok1lZGlhUGxh
eWVyUHJpdmF0ZVJlbW90ZTo6cGFpbnQpOgorICAgICAgICAoV2ViS2l0OjpNZWRpYVBsYXllclBy
aXZhdGVSZW1vdGU6OnBhaW50Q3VycmVudEZyYW1lSW5Db250ZXh0KToKKyAgICAgICAgKFdlYktp
dDo6TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpjb3B5VmlkZW9UZXh0dXJlVG9QbGF0Zm9ybVRl
eHR1cmUpOgorICAgICAgICAoV2ViS2l0OjpNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6Om5hdGl2
ZUltYWdlRm9yQ3VycmVudFRpbWUpOgorICAgICAgICAoV2ViS2l0OjpNZWRpYVBsYXllclByaXZh
dGVSZW1vdGU6OnNldFByZWxvYWQpOgorICAgICAgICAoV2ViS2l0OjpNZWRpYVBsYXllclByaXZh
dGVSZW1vdGU6Omhhc0F2YWlsYWJsZVZpZGVvRnJhbWUgY29uc3QpOgorICAgICAgICAoV2ViS2l0
OjpNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OmNhbkxvYWRQb3N0ZXIgY29uc3QpOgorICAgICAg
ICAoV2ViS2l0OjpNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OnNldFBvc3Rlcik6CisgICAgICAg
IChXZWJLaXQ6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6ZW50ZXJGdWxsc2NyZWVuKToKKyAg
ICAgICAgKFdlYktpdDo6TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpleGl0RnVsbHNjcmVlbik6
CisgICAgICAgIChXZWJLaXQ6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6d2lyZWxlc3NQbGF5
YmFja1RhcmdldE5hbWUgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpNZWRpYVBsYXllclByaXZh
dGVSZW1vdGU6OndpcmVsZXNzUGxheWJhY2tUYXJnZXRUeXBlIGNvbnN0KToKKyAgICAgICAgKFdl
YktpdDo6TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjp3aXJlbGVzc1ZpZGVvUGxheWJhY2tEaXNh
YmxlZCBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6
c2V0V2lyZWxlc3NWaWRlb1BsYXliYWNrRGlzYWJsZWQpOgorICAgICAgICAoV2ViS2l0OjpNZWRp
YVBsYXllclByaXZhdGVSZW1vdGU6OmNhblBsYXlUb1dpcmVsZXNzUGxheWJhY2tUYXJnZXQgY29u
c3QpOgorICAgICAgICAoV2ViS2l0OjpNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OmlzQ3VycmVu
dFBsYXliYWNrVGFyZ2V0V2lyZWxlc3MgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpNZWRpYVBs
YXllclByaXZhdGVSZW1vdGU6OnNldFdpcmVsZXNzUGxheWJhY2tUYXJnZXQpOgorICAgICAgICAo
V2ViS2l0OjpNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OnNldFNob3VsZFBsYXlUb1BsYXliYWNr
VGFyZ2V0KToKKyAgICAgICAgKFdlYktpdDo6TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpjYW5F
bnRlckZ1bGxzY3JlZW4gY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpNZWRpYVBsYXllclByaXZh
dGVSZW1vdGU6OnN1cHBvcnRzQWNjZWxlcmF0ZWRSZW5kZXJpbmcgY29uc3QpOgorICAgICAgICAo
V2ViS2l0OjpNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OmFjY2VsZXJhdGVkUmVuZGVyaW5nU3Rh
dGVDaGFuZ2VkKToKKyAgICAgICAgKFdlYktpdDo6TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpz
aG91bGRNYWludGFpbkFzcGVjdFJhdGlvIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6TWVkaWFQ
bGF5ZXJQcml2YXRlUmVtb3RlOjpzZXRTaG91bGRNYWludGFpbkFzcGVjdFJhdGlvKToKKyAgICAg
ICAgKFdlYktpdDo6TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpoYXNTaW5nbGVTZWN1cml0eU9y
aWdpbiBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6
ZGlkUGFzc0NPUlNBY2Nlc3NDaGVjayBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6Ok1lZGlhUGxh
eWVyUHJpdmF0ZVJlbW90ZTo6d291bGRUYWludE9yaWdpbiBjb25zdCk6CisgICAgICAgIChXZWJL
aXQ6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6bW92aWVMb2FkVHlwZSBjb25zdCk6CisgICAg
ICAgIChXZWJLaXQ6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6cHJlcGFyZUZvclJlbmRlcmlu
Zyk6CisgICAgICAgIChXZWJLaXQ6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6bWVkaWFUaW1l
Rm9yVGltZVZhbHVlIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6TWVkaWFQbGF5ZXJQcml2YXRl
UmVtb3RlOjptYXhpbXVtRHVyYXRpb25Ub0NhY2hlTWVkaWFUaW1lIGNvbnN0KToKKyAgICAgICAg
KFdlYktpdDo6TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpkZWNvZGVkRnJhbWVDb3VudCBjb25z
dCk6CisgICAgICAgIChXZWJLaXQ6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6ZHJvcHBlZEZy
YW1lQ291bnQgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpNZWRpYVBsYXllclByaXZhdGVSZW1v
dGU6OmF1ZGlvRGVjb2RlZEJ5dGVDb3VudCBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6Ok1lZGlh
UGxheWVyUHJpdmF0ZVJlbW90ZTo6dmlkZW9EZWNvZGVkQnl0ZUNvdW50IGNvbnN0KToKKyAgICAg
ICAgKFdlYktpdDo6TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpzZXRQcml2YXRlQnJvd3NpbmdN
b2RlKToKKyAgICAgICAgKFdlYktpdDo6TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjplbmdpbmVE
ZXNjcmlwdGlvbiBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6Ok1lZGlhUGxheWVyUHJpdmF0ZVJl
bW90ZTo6YXVkaW9Tb3VyY2VQcm92aWRlcik6CisgICAgICAgIChXZWJLaXQ6Ok1lZGlhUGxheWVy
UHJpdmF0ZVJlbW90ZTo6Y3JlYXRlU2Vzc2lvbik6CisgICAgICAgIChXZWJLaXQ6Ok1lZGlhUGxh
eWVyUHJpdmF0ZVJlbW90ZTo6c2V0Q0RNU2Vzc2lvbik6CisgICAgICAgIChXZWJLaXQ6Ok1lZGlh
UGxheWVyUHJpdmF0ZVJlbW90ZTo6a2V5QWRkZWQpOgorICAgICAgICAoV2ViS2l0OjpNZWRpYVBs
YXllclByaXZhdGVSZW1vdGU6OmNkbUluc3RhbmNlQXR0YWNoZWQpOgorICAgICAgICAoV2ViS2l0
OjpNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OmNkbUluc3RhbmNlRGV0YWNoZWQpOgorICAgICAg
ICAoV2ViS2l0OjpNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OmF0dGVtcHRUb0RlY3J5cHRXaXRo
SW5zdGFuY2UpOgorICAgICAgICAoV2ViS2l0OjpNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6Ondh
aXRpbmdGb3JLZXkgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpNZWRpYVBsYXllclByaXZhdGVS
ZW1vdGU6OnJlcXVpcmVzVGV4dFRyYWNrUmVwcmVzZW50YXRpb24gY29uc3QpOgorICAgICAgICAo
V2ViS2l0OjpNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OnNldFRleHRUcmFja1JlcHJlc2VudGF0
aW9uKToKKyAgICAgICAgKFdlYktpdDo6TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpzeW5jVGV4
dFRyYWNrQm91bmRzKToKKyAgICAgICAgKFdlYktpdDo6TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3Rl
Ojp0cmFja3NDaGFuZ2VkKToKKyAgICAgICAgKFdlYktpdDo6TWVkaWFQbGF5ZXJQcml2YXRlUmVt
b3RlOjpzaW11bGF0ZUF1ZGlvSW50ZXJydXB0aW9uKToKKyAgICAgICAgKFdlYktpdDo6TWVkaWFQ
bGF5ZXJQcml2YXRlUmVtb3RlOjpiZWdpblNpbXVsYXRlZEhEQ1BFcnJvcik6CisgICAgICAgIChX
ZWJLaXQ6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6ZW5kU2ltdWxhdGVkSERDUEVycm9yKToK
KyAgICAgICAgKFdlYktpdDo6TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpsYW5ndWFnZU9mUHJp
bWFyeUF1ZGlvVHJhY2sgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpNZWRpYVBsYXllclByaXZh
dGVSZW1vdGU6OmV4dHJhTWVtb3J5Q29zdCBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6Ok1lZGlh
UGxheWVyUHJpdmF0ZVJlbW90ZTo6ZmlsZVNpemUgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpN
ZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OmVuZGVkIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6
TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjp2aWRlb1BsYXliYWNrUXVhbGl0eU1ldHJpY3MpOgor
ICAgICAgICAoV2ViS2l0OjpNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6Om5vdGlmeVRyYWNrTW9k
ZUNoYW5nZWQpOgorICAgICAgICAoV2ViS2l0OjpNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6Om5v
dGlmeUFjdGl2ZVNvdXJjZUJ1ZmZlcnNDaGFuZ2VkKToKKyAgICAgICAgKFdlYktpdDo6TWVkaWFQ
bGF5ZXJQcml2YXRlUmVtb3RlOjpzZXRTaG91bGREaXNhYmxlU2xlZXApOgorICAgICAgICAoV2Vi
S2l0OjpNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OmFwcGxpY2F0aW9uV2lsbFJlc2lnbkFjdGl2
ZSk6CisgICAgICAgIChXZWJLaXQ6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6YXBwbGljYXRp
b25EaWRCZWNvbWVBY3RpdmUpOgorICAgICAgICAoV2ViS2l0OjpNZWRpYVBsYXllclByaXZhdGVS
ZW1vdGU6OnBlcmZvcm1UYXNrQXRNZWRpYVRpbWUpOgorICAgICAgICAoV2ViS2l0OjpNZWRpYVBs
YXllclByaXZhdGVSZW1vdGU6OnNob3VsZElnbm9yZUludHJpbnNpY1NpemUpOgorICAgICAgICAo
V2ViS2l0OjpNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OmxvZ0NoYW5uZWwgY29uc3QpOgorICAg
ICAgICAqIFdlYlByb2Nlc3MvR1BVL21lZGlhL01lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZS5oOiBB
ZGRlZC4KKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9tZWRpYS9NZWRpYVBsYXllclByaXZhdGVS
ZW1vdGVJZGVudGlmaWVyLmg6IEFkZGVkLgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL21lZGlh
L1JlbW90ZU1lZGlhUGxheWVyTWFuYWdlci5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpN
ZWRpYVBsYXllclJlbW90ZUZhY3Rvcnk6Ok1lZGlhUGxheWVyUmVtb3RlRmFjdG9yeSk6CisgICAg
ICAgIChXZWJLaXQ6OlJlbW90ZU1lZGlhUGxheWVyTWFuYWdlcjo6UmVtb3RlTWVkaWFQbGF5ZXJN
YW5hZ2VyKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyOjp+UmVt
b3RlTWVkaWFQbGF5ZXJNYW5hZ2VyKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTWVkaWFQbGF5
ZXJNYW5hZ2VyOjpzdXBwbGVtZW50TmFtZSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZU1lZGlh
UGxheWVyTWFuYWdlcjo6aW5pdGlhbGl6ZSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZU1lZGlh
UGxheWVyTWFuYWdlcjo6Y3JlYXRlUmVtb3RlTWVkaWFQbGF5ZXIpOgorICAgICAgICAoV2ViS2l0
OjpSZW1vdGVNZWRpYVBsYXllck1hbmFnZXI6OmdldFN1cHBvcnRlZFR5cGVzKToKKyAgICAgICAg
KFdlYktpdDo6UmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyOjpzdXBwb3J0c1R5cGVBbmRDb2RlY3Mp
OgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVNZWRpYVBsYXllck1hbmFnZXI6OnN1cHBvcnRzS2V5
U3lzdGVtKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyOjpvcmln
aW5zSW5NZWRpYUNhY2hlKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTWVkaWFQbGF5ZXJNYW5h
Z2VyOjpjbGVhck1lZGlhQ2FjaGUpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVNZWRpYVBsYXll
ck1hbmFnZXI6OmNsZWFyTWVkaWFDYWNoZUZvck9yaWdpbnMpOgorICAgICAgICAoV2ViS2l0OjpS
ZW1vdGVNZWRpYVBsYXllck1hbmFnZXI6Om5ldHdvcmtTdGF0ZUNoYW5nZWQpOgorICAgICAgICAo
V2ViS2l0OjpSZW1vdGVNZWRpYVBsYXllck1hbmFnZXI6OnVwZGF0ZVByZWZlcmVuY2VzKToKKyAg
ICAgICAgKFdlYktpdDo6UmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyOjpncHVQcm9jZXNzQ29ubmVj
dGlvbiBjb25zdCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlTWVkaWFQ
bGF5ZXJNYW5hZ2VyLmg6IEFkZGVkLgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL21lZGlhL1Jl
bW90ZU1lZGlhUGxheWVyTWFuYWdlci5tZXNzYWdlcy5pbjogQWRkZWQuCisgICAgICAgICogV2Vi
UHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjp1
cGRhdGVQcmVmZXJlbmNlcyk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcDoK
KwogMjAxOS0xMi0xMCAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgogCiAgICAgICAg
IFVucmV2aWV3ZWQsIGRyb3AgZGVidWcgYXNzZXJ0aW9uIGluIEluc3BlY3RvclRhcmdldFByb3h5
OjpkaWRDb21taXRQcm92aXNpb25hbFRhcmdldCgpIHRoYXQgaXMgaGl0dGluZyBhZnRlciByMjUz
MzM3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oKaW5kZXggMDNlNmY1NDMzYmY2ZjY3ZWJjNWY0OWZlZDBhOTUwMTJkNGJlNGJmOS4uMGNhZmRj
MWVhMDBiZTdmZGUwZWQyMzA3NjYxYTIxMDhhZTBjZDM0ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJD
b3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTA0LDYgKzEwNCw3IEBA
CiAJCTA3MUU0OTZFMUFENUFBMEQwMDhBNTBCNCAvKiBNZWRpYVBsYXliYWNrVGFyZ2V0TWFjLm1t
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDcxRTQ5NkQx
QUQ1QUEwRDAwOEE1MEI0IC8qIE1lZGlhUGxheWJhY2tUYXJnZXRNYWMubW0gKi87IH07CiAJCTA3
MUU0OTcwMUFENUFCNUUwMDhBNTBCNCAvKiBNZWRpYVBsYXliYWNrVGFyZ2V0TWFjLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwNzFFNDk2RjFBRDVBQjVF
MDA4QTUwQjQgLyogTWVkaWFQbGF5YmFja1RhcmdldE1hYy5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTA3MjBCMEExMTREMzMyMzUwMDY0Mjk1NSAv
KiBHZW5lcmljRXZlbnRRdWV1ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gMDcyMEIwOUYxNEQzMzIzNTAwNjQyOTU1IC8qIEdlbmVyaWNFdmVudFF1ZXVl
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJMDcy
NUVGQTkyMzlBRDc5MzAwQTUzOEE5IC8qIE1lZGlhUGxheWVyUHJpdmF0ZS5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDc5RjVFNEIwRjNCRUJFQTAwNUUw
NzgyIC8qIE1lZGlhUGxheWVyUHJpdmF0ZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CiAJCTA3Mjc3RTREMTdEMDE4Q0MwMDE1NTM0RCAvKiBKU01lZGlh
U3RyZWFtLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAw
NzI3N0U0MTE3RDAxOENDMDAxNTUzNEQgLyogSlNNZWRpYVN0cmVhbS5oICovOyB9OwogCQkwNzI3
N0U0RDE3RDAxOENDMDAxNTUzNEUgLyogSlNDYW52YXNDYXB0dXJlTWVkaWFTdHJlYW1UcmFjay5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDcyNzdFNDEx
N0QwMThDQzAwMTU1MzRFIC8qIEpTQ2FudmFzQ2FwdHVyZU1lZGlhU3RyZWFtVHJhY2suaCAqLzsg
fTsKIAkJMDcyNzdFNEYxN0QwMThDQzAwMTU1MzREIC8qIEpTTWVkaWFTdHJlYW1BdWRpb0Rlc3Rp
bmF0aW9uTm9kZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gMDcyNzdFNDMxN0QwMThDQzAwMTU1MzREIC8qIEpTTWVkaWFTdHJlYW1BdWRpb0Rlc3RpbmF0
aW9uTm9kZS5oICovOyB9OwpAQCAtMjA0LDYgKzIwNSw3IEBACiAJCTA3QjVBMkRDMTQ2NDMyMEEw
MEE4MUVDRSAvKiBKU1RleHRUcmFja0xpc3QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDA3QjVBMkRBMTQ2NDMyMEEwMEE4MUVDRSAvKiBKU1RleHRUcmFj
a0xpc3QuaCAqLzsgfTsKIAkJMDdCNzExNkQxRDg5OUU2MzAwOUYwRkZCIC8qIENhcHR1cmVEZXZp
Y2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3Qjcx
MTZBMUQ4OTlFNjMwMDlGMEZGQiAvKiBDYXB0dXJlRGV2aWNlLmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMDdCNzExNkYxRDg5OUU2MzAwOUYwRkZC
IC8qIENhcHR1cmVEZXZpY2VNYW5hZ2VyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSAwN0I3MTE2QzFEODk5RTYzMDA5RjBGRkIgLyogQ2FwdHVyZURldmlj
ZU1hbmFnZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OworCQkwN0JBRjM0NDIzOUVENTY5MDA0NDI1N0UgLyogTWVkaWFQbGF5ZXJFbmdpbmVJZGVudGlm
aWVycy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDdC
QUYzNDMyMzlFRDFDQzAwNDQyNTdFIC8qIE1lZGlhUGxheWVyRW5naW5lSWRlbnRpZmllcnMuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkwN0MwNDZD
NDFFNDI1MDhCMDA3MjAxRTcgLyogQ0FBdWRpb1N0cmVhbURlc2NyaXB0aW9uLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwNzNCODc1ODFFNDBEQ0ZEMDA3
MUMwRUMgLyogQ0FBdWRpb1N0cmVhbURlc2NyaXB0aW9uLmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMDdDMDQ2Q0IxRTQyNjQxMzAwNzIwMUU3IC8q
IEF1ZGlvU3RyZWFtRGVzY3JpcHRpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDA3M0I4NzU2MUU0MERDRTUwMDcxQzBFQyAvKiBBdWRpb1N0cmVhbURl
c2NyaXB0aW9uLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKIAkJMDdDMUMwRTIxQkZCNjAwMTAwQkQyMjU2IC8qIE1lZGlhVHJhY2tTdXBwb3J0ZWRDb25z
dHJhaW50cy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
MDdDMUMwRTAxQkZCNjAwMTAwQkQyMjU2IC8qIE1lZGlhVHJhY2tTdXBwb3J0ZWRDb25zdHJhaW50
cy5oICovOyB9OwpAQCAtNTUzNSw2ICs1NTM3LDcgQEAKIAkJMDdCNzExNkExRDg5OUU2MzAwOUYw
RkZCIC8qIENhcHR1cmVEZXZpY2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
Q2FwdHVyZURldmljZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwN0I3MTE2QjFE
ODk5RTYzMDA5RjBGRkIgLyogQ2FwdHVyZURldmljZU1hbmFnZXIuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQ2FwdHVyZURldmljZU1hbmFnZXIuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQkwN0I3MTE2QzFEODk5RTYzMDA5RjBGRkIgLyogQ2FwdHVy
ZURldmljZU1hbmFnZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ2FwdHVy
ZURldmljZU1hbmFnZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMDdCQUYzNDMy
MzlFRDFDQzAwNDQyNTdFIC8qIE1lZGlhUGxheWVyRW5naW5lSWRlbnRpZmllcnMuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gTWVkaWFQbGF5ZXJFbmdpbmVJZGVudGlmaWVycy5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQkwN0MwNDZDNjFFNDI1MTJGMDA3MjAxRTcgLyogQXVkaW9UcmFja1ByaXZh
dGVNZWRpYVN0cmVhbUNvY29hLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEF1
ZGlvVHJhY2tQcml2YXRlTWVkaWFTdHJlYW1Db2NvYS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQkwN0MxQzBFMDFCRkI2MDAxMDBCRDIyNTYgLyogTWVkaWFUcmFja1N1cHBvcnRlZENv
bnN0cmFpbnRzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1lZGlhVHJhY2tT
dXBwb3J0ZWRDb25zdHJhaW50cy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwN0Mx
QzBFMTFCRkI2MDAxMDBCRDIyNTYgLyogTWVkaWFUcmFja1N1cHBvcnRlZENvbnN0cmFpbnRzLmlk
bCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBNZWRpYVRyYWNrU3VwcG9ydGVkQ29uc3RyYWludHMu
aWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMjUwNjIsNiArMjUwNjUsNyBAQAog
CQkJCTA3OEU0M0Q4MUFCQjZDN0UwMDFDMkZBNiAvKiBNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2Vy
LmggKi8sCiAJCQkJRTRCNDFFMEMwQ0JGOTBCRDAwQUYyRUNFIC8qIE1lZGlhUGxheWVyLmNwcCAq
LywKIAkJCQlFNEI0MUUwRDBDQkY5MEJEMDBBRjJFQ0UgLyogTWVkaWFQbGF5ZXIuaCAqLywKKwkJ
CQkwN0JBRjM0MzIzOUVEMUNDMDA0NDI1N0UgLyogTWVkaWFQbGF5ZXJFbmdpbmVJZGVudGlmaWVy
cy5oICovLAogCQkJCUNENTIwOUUzMUIwQkQ4MzgwMDc3MTg0RSAvKiBNZWRpYVBsYXllckVudW1z
LmggKi8sCiAJCQkJMDc5RjVFNEIwRjNCRUJFQTAwNUUwNzgyIC8qIE1lZGlhUGxheWVyUHJpdmF0
ZS5oICovLAogCQkJCUNENjQxRUIxMTgxOEY1RUQwMEVFNEM0MSAvKiBNZWRpYVNvdXJjZVByaXZh
dGUuaCAqLywKQEAgLTMxMzc4LDcgKzMxMzgyLDkgQEAKIAkJCQkwNzhFNDNERDFBQkI2RjZGMDAx
QzJGQTYgLyogTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlck1hYy5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJMDc3QjY0MTMxQjk0RjEyRTAwM0U5QUQ1IC8qIE1lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJN
b2NrLmggaW4gSGVhZGVycyAqLywKIAkJCQlFNDQ2MTNFNDBDRDY4MUEyMDBGQURBNzUgLyogTWVk
aWFQbGF5ZXIuaCBpbiBIZWFkZXJzICovLAorCQkJCTA3QkFGMzQ0MjM5RUQ1NjkwMDQ0MjU3RSAv
KiBNZWRpYVBsYXllckVuZ2luZUlkZW50aWZpZXJzLmggaW4gSGVhZGVycyAqLywKIAkJCQlDRDUy
MDlFNDFCMEJEODM4MDA3NzE4NEUgLyogTWVkaWFQbGF5ZXJFbnVtcy5oIGluIEhlYWRlcnMgKi8s
CisJCQkJMDcyNUVGQTkyMzlBRDc5MzAwQTUzOEE5IC8qIE1lZGlhUGxheWVyUHJpdmF0ZS5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJMDc2RjBEMEUxMkI4MTkyNzAwQzI2QUE0IC8qIE1lZGlhUGxheWVy
UHJpdmF0ZUFWRm91bmRhdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJREY5QUZENzIxM0ZDMzFE
ODAwMTVGRUI3IC8qIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMuaCBpbiBIZWFk
ZXJzICovLAogCQkJCUNEQzhCNUEzMTgwNDYzNDcwMDE2RTY4NSAvKiBNZWRpYVBsYXllclByaXZh
dGVNZWRpYVNvdXJjZUFWRk9iakMuaCBpbiBIZWFkZXJzICovLApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vQ29udGVudFR5cGUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L0NvbnRlbnRUeXBlLmgKaW5kZXggYzgyYjViNzE5N2M5ZTE1ZDFlMmY1NDdmZDU2NDFmYzVmNGVj
NWVjZi4uOTBkYzk3MDQ2NzA4Mzk0ZGEwNjBlZmQxYWQzNjc2MTc5YjU3OWZhNiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vQ29udGVudFR5cGUuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9Db250ZW50VHlwZS5oCkBAIC0zMyw4ICszMyw4IEBAIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAogY2xhc3MgQ29udGVudFR5cGUgewogcHVibGljOgotICAgIGV4cGxpY2l0IENv
bnRlbnRUeXBlKFN0cmluZyYmIHR5cGUpOwotICAgIGV4cGxpY2l0IENvbnRlbnRUeXBlKGNvbnN0
IFN0cmluZyYgdHlwZSk7CisgICAgV0VCQ09SRV9FWFBPUlQgZXhwbGljaXQgQ29udGVudFR5cGUo
U3RyaW5nJiYgdHlwZSk7CisgICAgV0VCQ09SRV9FWFBPUlQgZXhwbGljaXQgQ29udGVudFR5cGUo
Y29uc3QgU3RyaW5nJiB0eXBlKTsKICAgICBDb250ZW50VHlwZSgpID0gZGVmYXVsdDsKIAogICAg
IHN0YXRpYyBjb25zdCBTdHJpbmcmIGNvZGVjc1BhcmFtZXRlcigpOwpAQCAtNDksNiArNDksMjUg
QEAgcHVibGljOgogCiAgICAgU3RyaW5nIHRvSlNPTlN0cmluZygpIGNvbnN0OwogCisjaWYgRU5B
QkxFKEdQVV9QUk9DRVNTKQorICAgIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+CisgICAgdm9pZCBl
bmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QKKyAgICB7CisgICAgICAgIGVuY29kZXIgPDwg
bV90eXBlOworICAgIH0KKworICAgIHRlbXBsYXRlIDxjbGFzcyBEZWNvZGVyPgorICAgIHN0YXRp
YyBPcHRpb25hbDxDb250ZW50VHlwZT4gZGVjb2RlKERlY29kZXImIGRlY29kZXIpCisgICAgewor
ICAgICAgICBPcHRpb25hbDxTdHJpbmc+IHR5cGU7CisgICAgICAgIGRlY29kZXIgPj4gdHlwZTsK
KyAgICAgICAgaWYgKCF0eXBlKQorICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKwor
ICAgICAgICByZXR1cm4geyBDb250ZW50VHlwZShXVEZNb3ZlKCp0eXBlKSkgfTsKKyAgICB9Cisj
ZW5kaWYKKwogcHJpdmF0ZToKICAgICBTdHJpbmcgbV90eXBlOwogfTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmNwcAppbmRleCA3ZDViY2NkOTBi
MTc5NGM3MTZlZjNlYjFkMTk5NmQ2M2E3NzU1MDgwLi41MmFkM2E0YjQ3MGY1NDU3NzEwYmMwOTdm
OGUyYjJlMjhkM2Y5NjFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9NZWRpYVBsYXllci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvTWVkaWFQbGF5ZXIuY3BwCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykg
MjAwNy0yMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAo
QykgMjAwNy0yMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzQsNiArMzQsNyBAQAogI2luY2x1ZGUgIkludFJlY3Qu
aCIKICNpbmNsdWRlICJMb2dnaW5nLmgiCiAjaW5jbHVkZSAiTUlNRVR5cGVSZWdpc3RyeS5oIgor
I2luY2x1ZGUgIk1lZGlhUGxheWVyRW5naW5lSWRlbnRpZmllcnMuaCIKICNpbmNsdWRlICJNZWRp
YVBsYXllclByaXZhdGUuaCIKICNpbmNsdWRlICJQbGF0Zm9ybVRpbWVSYW5nZXMuaCIKICNpbmNs
dWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KQEAgLTkwLDE0ICs5MSw2IEBACiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAotI2lmICFSRUxFQVNFX0xPR19ESVNBQkxFRAotc3RhdGljIFJlZlB0cjxM
b2dnZXI+JiBudWxsTG9nZ2VyKCkKLXsKLSAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8UmVmUHRy
PExvZ2dlcj4+IGxvZ2dlcjsKLSAgICByZXR1cm4gbG9nZ2VyOwotfQotI2VuZGlmCi0KIC8vIGEg
bnVsbCBwbGF5ZXIgdG8gbWFrZSBNZWRpYVBsYXllciBsb2dpYyBzaW1wbGVyCiAKIGNsYXNzIE51
bGxNZWRpYVBsYXllclByaXZhdGUgZmluYWwgOiBwdWJsaWMgTWVkaWFQbGF5ZXJQcml2YXRlSW50
ZXJmYWNlIHsKQEAgLTE2Niw4ICsxNTksMjIgQEAgcHVibGljOgogICAgIGJvb2wgaGFzU2luZ2xl
U2VjdXJpdHlPcmlnaW4oKSBjb25zdCBmaW5hbCB7IHJldHVybiB0cnVlOyB9CiB9OwogCisjaWYg
IVJFTEVBU0VfTE9HX0RJU0FCTEVECitzdGF0aWMgUmVmUHRyPExvZ2dlcj4mIG51bGxMb2dnZXIo
KQoreworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxSZWZQdHI8TG9nZ2VyPj4gbG9nZ2VyOwor
ICAgIHJldHVybiBsb2dnZXI7Cit9CisjZW5kaWYKKworc3RhdGljIGNvbnN0IFZlY3RvcjxXZWJD
b3JlOjpDb250ZW50VHlwZT4mIG51bGxDb250ZW50VHlwZVZlY3RvcigpCit7CisgICAgc3RhdGlj
IE5ldmVyRGVzdHJveWVkPFZlY3RvcjxXZWJDb3JlOjpDb250ZW50VHlwZT4+IHZlY3RvcjsKKyAg
ICByZXR1cm4gdmVjdG9yOworfQorCiBjbGFzcyBOdWxsTWVkaWFQbGF5ZXJDbGllbnQgOiBwdWJs
aWMgTWVkaWFQbGF5ZXJDbGllbnQgewotcHVibGljOgorcHJpdmF0ZToKICNpZiAhUkVMRUFTRV9M
T0dfRElTQUJMRUQKICAgICBjb25zdCBMb2dnZXImIG1lZGlhUGxheWVyTG9nZ2VyKCkgZmluYWwK
ICAgICB7CkBAIC0xNzksOCArMTg2LDExIEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuICpudWxs
TG9nZ2VyKCkuZ2V0KCk7CiAgICAgfQogI2VuZGlmCisKKyAgICBjb25zdCBWZWN0b3I8V2ViQ29y
ZTo6Q29udGVudFR5cGU+JiBtZWRpYUNvbnRlbnRUeXBlc1JlcXVpcmluZ0hhcmR3YXJlU3VwcG9y
dCgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG51bGxDb250ZW50VHlwZVZlY3RvcigpOyB9CiB9Owog
CisKIGNvbnN0IFZlY3RvcjxDb250ZW50VHlwZT4mIE1lZGlhUGxheWVyQ2xpZW50OjptZWRpYUNv
bnRlbnRUeXBlc1JlcXVpcmluZ0hhcmR3YXJlU3VwcG9ydCgpIGNvbnN0CiB7CiAgICAgc3RhdGlj
IE5ldmVyRGVzdHJveWVkPFZlY3RvcjxDb250ZW50VHlwZT4+IGNvbnRlbnRUeXBlczsKQEAgLTE5
NSwxNyArMjA1LDcgQEAgc3RhdGljIE1lZGlhUGxheWVyQ2xpZW50JiBudWxsTWVkaWFQbGF5ZXJD
bGllbnQoKQogCiAvLyBlbmdpbmUgc3VwcG9ydAogCi1zdHJ1Y3QgTWVkaWFQbGF5ZXJGYWN0b3J5
IHsKLSAgICBDcmVhdGVNZWRpYUVuZ2luZVBsYXllciBjb25zdHJ1Y3RvcjsKLSAgICBNZWRpYUVu
Z2luZVN1cHBvcnRlZFR5cGVzIGdldFN1cHBvcnRlZFR5cGVzOwotICAgIE1lZGlhRW5naW5lU3Vw
cG9ydHNUeXBlIHN1cHBvcnRzVHlwZUFuZENvZGVjczsKLSAgICBNZWRpYUVuZ2luZU9yaWdpbnNJ
bk1lZGlhQ2FjaGUgb3JpZ2luc0luTWVkaWFDYWNoZTsKLSAgICBNZWRpYUVuZ2luZUNsZWFyTWVk
aWFDYWNoZSBjbGVhck1lZGlhQ2FjaGU7Ci0gICAgTWVkaWFFbmdpbmVDbGVhck1lZGlhQ2FjaGVG
b3JPcmlnaW5zIGNsZWFyTWVkaWFDYWNoZUZvck9yaWdpbnM7Ci0gICAgTWVkaWFFbmdpbmVTdXBw
b3J0c0tleVN5c3RlbSBzdXBwb3J0c0tleVN5c3RlbTsKLX07Ci0KLXN0YXRpYyB2b2lkIGFkZE1l
ZGlhRW5naW5lKENyZWF0ZU1lZGlhRW5naW5lUGxheWVyJiYsIE1lZGlhRW5naW5lU3VwcG9ydGVk
VHlwZXMsIE1lZGlhRW5naW5lU3VwcG9ydHNUeXBlLCBNZWRpYUVuZ2luZU9yaWdpbnNJbk1lZGlh
Q2FjaGUsIE1lZGlhRW5naW5lQ2xlYXJNZWRpYUNhY2hlLCBNZWRpYUVuZ2luZUNsZWFyTWVkaWFD
YWNoZUZvck9yaWdpbnMsIE1lZGlhRW5naW5lU3VwcG9ydHNLZXlTeXN0ZW0pOworc3RhdGljIHZv
aWQgYWRkTWVkaWFFbmdpbmUoc3RkOjp1bmlxdWVfcHRyPE1lZGlhUGxheWVyRmFjdG9yeT4pOwog
CiBzdGF0aWMgTG9jayBtZWRpYUVuZ2luZVZlY3RvckxvY2s7CiAKQEAgLTIxNSwyMSArMjE1LDM3
IEBAIHN0YXRpYyBib29sJiBoYXZlTWVkaWFFbmdpbmVzVmVjdG9yKCkKICAgICByZXR1cm4gaGF2
ZVZlY3RvcjsKIH0KIAotc3RhdGljIFZlY3RvcjxNZWRpYVBsYXllckZhY3Rvcnk+JiBtdXRhYmxl
SW5zdGFsbGVkTWVkaWFFbmdpbmVzVmVjdG9yKCkKK3N0YXRpYyBWZWN0b3I8c3RkOjp1bmlxdWVf
cHRyPE1lZGlhUGxheWVyRmFjdG9yeT4+JiBtdXRhYmxlSW5zdGFsbGVkTWVkaWFFbmdpbmVzVmVj
dG9yKCkKIHsKLSAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8VmVjdG9yPE1lZGlhUGxheWVyRmFj
dG9yeT4+IGluc3RhbGxlZEVuZ2luZXM7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFZlY3Rv
cjxzdGQ6OnVuaXF1ZV9wdHI8TWVkaWFQbGF5ZXJGYWN0b3J5Pj4+IGluc3RhbGxlZEVuZ2luZXM7
CiAgICAgcmV0dXJuIGluc3RhbGxlZEVuZ2luZXM7CiB9CiAKK3N0YXRpYyBSZW1vdGVNZWRpYVBs
YXllclN1cHBvcnQ6OlJlZ2lzdGVyUmVtb3RlUGxheWVyQ2FsbGJhY2smIHJlZ2lzdGVyUmVtb3Rl
UGxheWVyQ2FsbGJhY2soKQoreworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxSZW1vdGVNZWRp
YVBsYXllclN1cHBvcnQ6OlJlZ2lzdGVyUmVtb3RlUGxheWVyQ2FsbGJhY2s+IGNhbGxiYWNrOwor
ICAgIHJldHVybiBjYWxsYmFjazsKK30KKwordm9pZCBSZW1vdGVNZWRpYVBsYXllclN1cHBvcnQ6
OnNldFJlZ2lzdGVyUmVtb3RlUGxheWVyQ2FsbGJhY2soUmVnaXN0ZXJSZW1vdGVQbGF5ZXJDYWxs
YmFjayYmIGNhbGxiYWNrKQoreworICAgIHJlZ2lzdGVyUmVtb3RlUGxheWVyQ2FsbGJhY2soKSA9
IFdURk1vdmUoY2FsbGJhY2spOworfQorCiBzdGF0aWMgdm9pZCBidWlsZE1lZGlhRW5naW5lc1Zl
Y3RvcigpCiB7CiAgICAgQVNTRVJUKG1lZGlhRW5naW5lVmVjdG9yTG9jay5pc0xvY2tlZCgpKTsK
IAogI2lmIFVTRShBVkZPVU5EQVRJT04pCisgICAgYXV0byYgcmVnaXN0ZXJSZW1vdGVFbmdpbmUg
PSByZWdpc3RlclJlbW90ZVBsYXllckNhbGxiYWNrKCk7CisKICAgICBpZiAoRGVwcmVjYXRlZEds
b2JhbFNldHRpbmdzOjppc0FWRm91bmRhdGlvbkVuYWJsZWQoKSkgewogCiAjaWYgUExBVEZPUk0o
Q09DT0EpCi0gICAgICAgIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OnJlZ2lz
dGVyTWVkaWFFbmdpbmUoYWRkTWVkaWFFbmdpbmUpOworICAgICAgICBpZiAocmVnaXN0ZXJSZW1v
dGVFbmdpbmUpCisgICAgICAgICAgICByZWdpc3RlclJlbW90ZUVuZ2luZShhZGRNZWRpYUVuZ2lu
ZSwgTWVkaWFQbGF5ZXJFbmdpbmVJZGVudGlmaWVyczo6YXZGb3VuZGF0aW9uRW5naW5lSWRlbnRp
ZmllcigpKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgTWVkaWFQbGF5ZXJQcml2YXRlQVZG
b3VuZGF0aW9uT2JqQzo6cmVnaXN0ZXJNZWRpYUVuZ2luZShhZGRNZWRpYUVuZ2luZSk7CiAjZW5k
aWYKIAogI2lmIEVOQUJMRShNRURJQV9TT1VSQ0UpCkBAIC0yNjUsNyArMjgxLDcgQEAgc3RhdGlj
IHZvaWQgYnVpbGRNZWRpYUVuZ2luZXNWZWN0b3IoKQogICAgIGhhdmVNZWRpYUVuZ2luZXNWZWN0
b3IoKSA9IHRydWU7CiB9CiAKLXN0YXRpYyBjb25zdCBWZWN0b3I8TWVkaWFQbGF5ZXJGYWN0b3J5
PiYgaW5zdGFsbGVkTWVkaWFFbmdpbmVzKCkKK3N0YXRpYyBjb25zdCBWZWN0b3I8c3RkOjp1bmlx
dWVfcHRyPE1lZGlhUGxheWVyRmFjdG9yeT4+JiBpbnN0YWxsZWRNZWRpYUVuZ2luZXMoKQogewog
ICAgIHsKICAgICAgICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhtZWRpYUVuZ2luZVZlY3Rvckxv
Y2spOwpAQCAtMjc2LDE0ICsyOTIsOSBAQCBzdGF0aWMgY29uc3QgVmVjdG9yPE1lZGlhUGxheWVy
RmFjdG9yeT4mIGluc3RhbGxlZE1lZGlhRW5naW5lcygpCiAgICAgcmV0dXJuIG11dGFibGVJbnN0
YWxsZWRNZWRpYUVuZ2luZXNWZWN0b3IoKTsKIH0KIAotc3RhdGljIHZvaWQgYWRkTWVkaWFFbmdp
bmUoQ3JlYXRlTWVkaWFFbmdpbmVQbGF5ZXImJiBjb25zdHJ1Y3RvciwgTWVkaWFFbmdpbmVTdXBw
b3J0ZWRUeXBlcyBnZXRTdXBwb3J0ZWRUeXBlcywgTWVkaWFFbmdpbmVTdXBwb3J0c1R5cGUgc3Vw
cG9ydHNUeXBlLAotICAgIE1lZGlhRW5naW5lT3JpZ2luc0luTWVkaWFDYWNoZSBvcmlnaW5zSW5N
ZWRpYUNhY2hlLCBNZWRpYUVuZ2luZUNsZWFyTWVkaWFDYWNoZSBjbGVhck1lZGlhQ2FjaGUsIE1l
ZGlhRW5naW5lQ2xlYXJNZWRpYUNhY2hlRm9yT3JpZ2lucyBjbGVhck1lZGlhQ2FjaGVGb3JPcmln
aW5zLCBNZWRpYUVuZ2luZVN1cHBvcnRzS2V5U3lzdGVtIHN1cHBvcnRzS2V5U3lzdGVtKQorc3Rh
dGljIHZvaWQgYWRkTWVkaWFFbmdpbmUoc3RkOjp1bmlxdWVfcHRyPE1lZGlhUGxheWVyRmFjdG9y
eT4gZmFjdG9yeSkKIHsKLSAgICBBU1NFUlQoY29uc3RydWN0b3IpOwotICAgIEFTU0VSVChnZXRT
dXBwb3J0ZWRUeXBlcyk7Ci0gICAgQVNTRVJUKHN1cHBvcnRzVHlwZSk7Ci0KLSAgICBtdXRhYmxl
SW5zdGFsbGVkTWVkaWFFbmdpbmVzVmVjdG9yKCkuYXBwZW5kKE1lZGlhUGxheWVyRmFjdG9yeSB7
IFdURk1vdmUoY29uc3RydWN0b3IpLCBnZXRTdXBwb3J0ZWRUeXBlcywgc3VwcG9ydHNUeXBlLCBv
cmlnaW5zSW5NZWRpYUNhY2hlLCBjbGVhck1lZGlhQ2FjaGUsIGNsZWFyTWVkaWFDYWNoZUZvck9y
aWdpbnMsIHN1cHBvcnRzS2V5U3lzdGVtIH0pOworICAgIG11dGFibGVJbnN0YWxsZWRNZWRpYUVu
Z2luZXNWZWN0b3IoKS5hcHBlbmQoV1RGTW92ZShmYWN0b3J5KSk7CiB9CiAKIHN0YXRpYyBjb25z
dCBBdG9tU3RyaW5nJiBhcHBsaWNhdGlvbk9jdGV0U3RyZWFtKCkKQEAgLTI5OCw2ICszMDksMjEg
QEAgc3RhdGljIGNvbnN0IEF0b21TdHJpbmcmIHRleHRQbGFpbigpCiAgICAgcmV0dXJuIHRleHRQ
bGFpbjsKIH0KIAorY29uc3QgTWVkaWFQbGF5ZXJGYWN0b3J5KiBNZWRpYVBsYXllcjo6bWVkaWFF
bmdpbmUoY29uc3QgU3RyaW5nJiBpZGVudGlmaWVyKQoreworICAgIGF1dG8mIGVuZ2luZXMgPSBp
bnN0YWxsZWRNZWRpYUVuZ2luZXMoKTsKKyAgICBhdXRvIGN1cnJlbnRJbmRleCA9IGVuZ2luZXMu
ZmluZE1hdGNoaW5nKFtpZGVudGlmaWVyXSAoYXV0byYgZW5naW5lKSB7CisgICAgICAgIHJldHVy
biBlbmdpbmUtPmlkZW50aWZpZXIoKSA9PSBpZGVudGlmaWVyOworICAgIH0pOworCisgICAgaWYg
KGN1cnJlbnRJbmRleCA9PSBub3RGb3VuZCkgeworICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQo
KTsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgfQorCisgICAgcmV0dXJuIGVuZ2luZXNb
Y3VycmVudEluZGV4ICsgMV0uZ2V0KCk7Cit9CisKIHN0YXRpYyBjb25zdCBNZWRpYVBsYXllckZh
Y3RvcnkqIGJlc3RNZWRpYUVuZ2luZUZvclN1cHBvcnRQYXJhbWV0ZXJzKGNvbnN0IE1lZGlhRW5n
aW5lU3VwcG9ydFBhcmFtZXRlcnMmIHBhcmFtZXRlcnMsIGNvbnN0IE1lZGlhUGxheWVyRmFjdG9y
eSogY3VycmVudCA9IG51bGxwdHIpCiB7CiAgICAgaWYgKHBhcmFtZXRlcnMudHlwZS5pc0VtcHR5
KCkgJiYgIXBhcmFtZXRlcnMuaXNNZWRpYVNvdXJjZSAmJiAhcGFyYW1ldGVycy5pc01lZGlhU3Ry
ZWFtKQpAQCAtMzE1LDM0ICszNDEsNDYgQEAgc3RhdGljIGNvbnN0IE1lZGlhUGxheWVyRmFjdG9y
eSogYmVzdE1lZGlhRW5naW5lRm9yU3VwcG9ydFBhcmFtZXRlcnMoY29uc3QgTWVkaWEKICAgICBN
ZWRpYVBsYXllcjo6U3VwcG9ydHNUeXBlIHN1cHBvcnRlZCA9IE1lZGlhUGxheWVyOjpJc05vdFN1
cHBvcnRlZDsKICAgICBmb3IgKGF1dG8mIGVuZ2luZSA6IGluc3RhbGxlZE1lZGlhRW5naW5lcygp
KSB7CiAgICAgICAgIGlmIChjdXJyZW50KSB7Ci0gICAgICAgICAgICBpZiAoY3VycmVudCA9PSAm
ZW5naW5lKQorICAgICAgICAgICAgaWYgKGN1cnJlbnQgPT0gZW5naW5lLmdldCgpKQogICAgICAg
ICAgICAgICAgIGN1cnJlbnQgPSBudWxscHRyOwogICAgICAgICAgICAgY29udGludWU7CiAgICAg
ICAgIH0KLSAgICAgICAgTWVkaWFQbGF5ZXI6OlN1cHBvcnRzVHlwZSBlbmdpbmVTdXBwb3J0ID0g
ZW5naW5lLnN1cHBvcnRzVHlwZUFuZENvZGVjcyhwYXJhbWV0ZXJzKTsKKyAgICAgICAgTWVkaWFQ
bGF5ZXI6OlN1cHBvcnRzVHlwZSBlbmdpbmVTdXBwb3J0ID0gZW5naW5lLT5zdXBwb3J0c1R5cGVB
bmRDb2RlY3MocGFyYW1ldGVycyk7CiAgICAgICAgIGlmIChlbmdpbmVTdXBwb3J0ID4gc3VwcG9y
dGVkKSB7CiAgICAgICAgICAgICBzdXBwb3J0ZWQgPSBlbmdpbmVTdXBwb3J0OwotICAgICAgICAg
ICAgZm91bmRFbmdpbmUgPSAmZW5naW5lOworICAgICAgICAgICAgZm91bmRFbmdpbmUgPSBlbmdp
bmUuZ2V0KCk7CiAgICAgICAgIH0KICAgICB9CiAKICAgICByZXR1cm4gZm91bmRFbmdpbmU7CiB9
CiAKLXN0YXRpYyBjb25zdCBNZWRpYVBsYXllckZhY3RvcnkqIG5leHRNZWRpYUVuZ2luZShjb25z
dCBNZWRpYVBsYXllckZhY3RvcnkqIGN1cnJlbnQpCitjb25zdCBNZWRpYVBsYXllckZhY3Rvcnkq
IE1lZGlhUGxheWVyOjpuZXh0TWVkaWFFbmdpbmUoY29uc3QgTWVkaWFQbGF5ZXJGYWN0b3J5KiBj
dXJyZW50KQogeworICAgIGlmICghbV9hY3RpdmVFbmdpbmVJZGVudGlmaWVyLmlzRW1wdHkoKSkg
eworICAgICAgICBhdXRvKiBlbmdpbmUgPSBtZWRpYUVuZ2luZShtX2FjdGl2ZUVuZ2luZUlkZW50
aWZpZXIpOworICAgICAgICByZXR1cm4gY3VycmVudCAhPSBlbmdpbmUgPyBlbmdpbmUgOiBudWxs
cHRyOworICAgIH0KKwogICAgIGF1dG8mIGVuZ2luZXMgPSBpbnN0YWxsZWRNZWRpYUVuZ2luZXMo
KTsKICAgICBpZiAoZW5naW5lcy5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwog
CiAgICAgaWYgKCFjdXJyZW50KSAKLSAgICAgICAgcmV0dXJuICZlbmdpbmVzLmZpcnN0KCk7Cisg
ICAgICAgIHJldHVybiBlbmdpbmVzLmZpcnN0KCkuZ2V0KCk7CisKKyAgICBhdXRvIGN1cnJlbnRJ
bmRleCA9IGVuZ2luZXMuZmluZE1hdGNoaW5nKFtjdXJyZW50XSAoYXV0byYgZW5naW5lKSB7Cisg
ICAgICAgIHJldHVybiBlbmdpbmUuZ2V0KCkgPT0gY3VycmVudDsKKyAgICB9KTsKKyAgICBpZiAo
Y3VycmVudEluZGV4ID09IG5vdEZvdW5kKSB7CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgp
OworICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICB9CiAKLSAgICBzaXplX3QgY3VycmVudElu
ZGV4ID0gY3VycmVudCAtICZlbmdpbmVzLmZpcnN0KCk7CiAgICAgaWYgKGN1cnJlbnRJbmRleCAr
IDEgPj0gZW5naW5lcy5zaXplKCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgcmV0
dXJuICZlbmdpbmVzW2N1cnJlbnRJbmRleCArIDFdOworICAgIHJldHVybiBlbmdpbmVzW2N1cnJl
bnRJbmRleCArIDFdLmdldCgpOwogfQogCiAvLyBtZWRpYSBwbGF5ZXIKQEAgLTM1Miw2ICszOTAs
MTMgQEAgUmVmPE1lZGlhUGxheWVyPiBNZWRpYVBsYXllcjo6Y3JlYXRlKE1lZGlhUGxheWVyQ2xp
ZW50JiBjbGllbnQpCiAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgTWVkaWFQbGF5ZXIoY2xpZW50
KSk7CiB9CiAKK1JlZjxNZWRpYVBsYXllcj4gTWVkaWFQbGF5ZXI6OmNyZWF0ZShNZWRpYVBsYXll
ckNsaWVudCYgY2xpZW50LCBjb25zdCBTdHJpbmcmIG1lZGlhRW5naW5lSWRlbnRpZmllcikKK3sK
KyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBNZWRpYVBsYXllcihjbGllbnQsIG1lZGlhRW5naW5l
SWRlbnRpZmllcikpOworfQorCisKKwogTWVkaWFQbGF5ZXI6Ok1lZGlhUGxheWVyKE1lZGlhUGxh
eWVyQ2xpZW50JiBjbGllbnQpCiAgICAgOiBtX2NsaWVudCgmY2xpZW50KQogICAgICwgbV9yZWxv
YWRUaW1lcigqdGhpcywgJk1lZGlhUGxheWVyOjpyZWxvYWRUaW1lckZpcmVkKQpAQCAtMzU5LDYg
KzQwNCwxNCBAQCBNZWRpYVBsYXllcjo6TWVkaWFQbGF5ZXIoTWVkaWFQbGF5ZXJDbGllbnQmIGNs
aWVudCkKIHsKIH0KIAorTWVkaWFQbGF5ZXI6Ok1lZGlhUGxheWVyKE1lZGlhUGxheWVyQ2xpZW50
JiBjbGllbnQsIGNvbnN0IFN0cmluZyYgYWN0aXZlRW5naW5lSWRlbnRpZmllcikKKyAgICA6IG1f
Y2xpZW50KCZjbGllbnQpCisgICAgLCBtX3JlbG9hZFRpbWVyKCp0aGlzLCAmTWVkaWFQbGF5ZXI6
OnJlbG9hZFRpbWVyRmlyZWQpCisgICAgLCBtX3ByaXZhdGUobWFrZVVuaXF1ZTxOdWxsTWVkaWFQ
bGF5ZXJQcml2YXRlPih0aGlzKSkKKyAgICAsIG1fYWN0aXZlRW5naW5lSWRlbnRpZmllcihhY3Rp
dmVFbmdpbmVJZGVudGlmaWVyKQoreworfQorCiBNZWRpYVBsYXllcjo6fk1lZGlhUGxheWVyKCkK
IHsKICAgICBBU1NFUlQoIW1faW5pdGlhbGl6aW5nTWVkaWFFbmdpbmUpOwpAQCAtNDQxLDcgKzQ5
NCw3IEBAIGJvb2wgTWVkaWFQbGF5ZXI6OmxvYWQoTWVkaWFTdHJlYW1Qcml2YXRlJiBtZWRpYVN0
cmVhbSkKIH0KICNlbmRpZgogCi1jb25zdCBNZWRpYVBsYXllckZhY3RvcnkqIE1lZGlhUGxheWVy
OjpuZXh0QmVzdE1lZGlhRW5naW5lKGNvbnN0IE1lZGlhUGxheWVyRmFjdG9yeSogY3VycmVudCkg
Y29uc3QKK2NvbnN0IE1lZGlhUGxheWVyRmFjdG9yeSogTWVkaWFQbGF5ZXI6Om5leHRCZXN0TWVk
aWFFbmdpbmUoY29uc3QgTWVkaWFQbGF5ZXJGYWN0b3J5KiBjdXJyZW50KQogewogICAgIE1lZGlh
RW5naW5lU3VwcG9ydFBhcmFtZXRlcnMgcGFyYW1ldGVyczsKICAgICBwYXJhbWV0ZXJzLnR5cGUg
PSBtX2NvbnRlbnRUeXBlOwpAQCAtNDUzLDYgKzUwNiwyOCBAQCBjb25zdCBNZWRpYVBsYXllckZh
Y3RvcnkqIE1lZGlhUGxheWVyOjpuZXh0QmVzdE1lZGlhRW5naW5lKGNvbnN0IE1lZGlhUGxheWVy
RmFjdAogICAgIHBhcmFtZXRlcnMuaXNNZWRpYVN0cmVhbSA9ICEhbV9tZWRpYVN0cmVhbTsKICNl
bmRpZgogCisgICAgaWYgKCFtX2FjdGl2ZUVuZ2luZUlkZW50aWZpZXIuaXNFbXB0eSgpKSB7Cisg
ICAgICAgIGlmIChjdXJyZW50KQorICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICAg
ICAgYXV0byogZW5naW5lID0gbWVkaWFFbmdpbmUobV9hY3RpdmVFbmdpbmVJZGVudGlmaWVyKTsK
KyAgICAgICAgaWYgKGVuZ2luZSAmJiBlbmdpbmUtPnN1cHBvcnRzVHlwZUFuZENvZGVjcyhwYXJh
bWV0ZXJzKSAhPSBNZWRpYVBsYXllcjo6SXNOb3RTdXBwb3J0ZWQpCisgICAgICAgICAgICByZXR1
cm4gZW5naW5lOworCisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIH0KKworICAgIGlmICgh
bV9hY3RpdmVFbmdpbmVJZGVudGlmaWVyLmlzRW1wdHkoKSkgeworICAgICAgICBpZiAoY3VycmVu
dCkKKyAgICAgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgICAgIGF1dG8qIGVuZ2luZSA9
IG1lZGlhRW5naW5lKG1fYWN0aXZlRW5naW5lSWRlbnRpZmllcik7CisgICAgICAgIGlmIChlbmdp
bmUgJiYgZW5naW5lLT5zdXBwb3J0c1R5cGVBbmRDb2RlY3MocGFyYW1ldGVycykgIT0gTWVkaWFQ
bGF5ZXI6OklzTm90U3VwcG9ydGVkKQorICAgICAgICAgICAgcmV0dXJuIGVuZ2luZTsKKworICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICB9CisKICAgICByZXR1cm4gYmVzdE1lZGlhRW5naW5l
Rm9yU3VwcG9ydFBhcmFtZXRlcnMocGFyYW1ldGVycywgY3VycmVudCk7CiB9CiAKQEAgLTQ4OSw3
ICs1NjQsNyBAQCB2b2lkIE1lZGlhUGxheWVyOjpsb2FkV2l0aE5leHRNZWRpYUVuZ2luZShjb25z
dCBNZWRpYVBsYXllckZhY3RvcnkqIGN1cnJlbnQpCiAgICAgICAgIG1fcHJpdmF0ZSA9IG51bGxw
dHI7CiAgICAgfSBlbHNlIGlmIChtX2N1cnJlbnRNZWRpYUVuZ2luZSAhPSBlbmdpbmUpIHsKICAg
ICAgICAgbV9jdXJyZW50TWVkaWFFbmdpbmUgPSBlbmdpbmU7Ci0gICAgICAgIG1fcHJpdmF0ZSA9
IGVuZ2luZS0+Y29uc3RydWN0b3IodGhpcyk7CisgICAgICAgIG1fcHJpdmF0ZSA9IGVuZ2luZS0+
Y3JlYXRlTWVkaWFFbmdpbmVQbGF5ZXIodGhpcyk7CiAgICAgICAgIGNsaWVudCgpLm1lZGlhUGxh
eWVyRW5naW5lVXBkYXRlZCgpOwogICAgICAgICBtX3ByaXZhdGUtPnNldFByaXZhdGVCcm93c2lu
Z01vZGUobV9wcml2YXRlQnJvd3NpbmcpOwogICAgICAgICBtX3ByaXZhdGUtPnNldFByZWxvYWQo
bV9wcmVsb2FkKTsKQEAgLTkyOSw3ICsxMDA0LDcgQEAgdm9pZCBNZWRpYVBsYXllcjo6Z2V0U3Vw
cG9ydGVkVHlwZXMoSGFzaFNldDxTdHJpbmcsIEFTQ0lJQ2FzZUluc2Vuc2l0aXZlSGFzaD4mIHQK
IHsKICAgICBmb3IgKGF1dG8mIGVuZ2luZSA6IGluc3RhbGxlZE1lZGlhRW5naW5lcygpKSB7CiAg
ICAgICAgIEhhc2hTZXQ8U3RyaW5nLCBBU0NJSUNhc2VJbnNlbnNpdGl2ZUhhc2g+IGVuZ2luZVR5
cGVzOwotICAgICAgICBlbmdpbmUuZ2V0U3VwcG9ydGVkVHlwZXMoZW5naW5lVHlwZXMpOworICAg
ICAgICBlbmdpbmUtPmdldFN1cHBvcnRlZFR5cGVzKGVuZ2luZVR5cGVzKTsKICAgICAgICAgdHlw
ZXMuYWRkKGVuZ2luZVR5cGVzLmJlZ2luKCksIGVuZ2luZVR5cGVzLmVuZCgpKTsKICAgICB9CiB9
IApAQCAtMTEyNSwzNCArMTIwMCwyOCBAQCBzdGF0aWMgdm9pZCBhZGRUb0hhc2goSGFzaFNldDxU
PiYgdG9IYXNoLCBIYXNoU2V0PFQ+JiYgZnJvbUhhc2gpCiBIYXNoU2V0PFJlZlB0cjxTZWN1cml0
eU9yaWdpbj4+IE1lZGlhUGxheWVyOjpvcmlnaW5zSW5NZWRpYUNhY2hlKGNvbnN0IFN0cmluZyYg
cGF0aCkKIHsKICAgICBIYXNoU2V0PFJlZlB0cjxTZWN1cml0eU9yaWdpbj4+IG9yaWdpbnM7Ci0g
ICAgZm9yIChhdXRvJiBlbmdpbmUgOiBpbnN0YWxsZWRNZWRpYUVuZ2luZXMoKSkgewotICAgICAg
ICBpZiAoIWVuZ2luZS5vcmlnaW5zSW5NZWRpYUNhY2hlKQotICAgICAgICAgICAgY29udGludWU7
Ci0gICAgICAgIGFkZFRvSGFzaChvcmlnaW5zLCBlbmdpbmUub3JpZ2luc0luTWVkaWFDYWNoZShw
YXRoKSk7Ci0gICAgfQorICAgIGZvciAoYXV0byYgZW5naW5lIDogaW5zdGFsbGVkTWVkaWFFbmdp
bmVzKCkpCisgICAgICAgIGFkZFRvSGFzaChvcmlnaW5zLCBlbmdpbmUtPm9yaWdpbnNJbk1lZGlh
Q2FjaGUocGF0aCkpOworCiAgICAgcmV0dXJuIG9yaWdpbnM7CiB9CiAKIHZvaWQgTWVkaWFQbGF5
ZXI6OmNsZWFyTWVkaWFDYWNoZShjb25zdCBTdHJpbmcmIHBhdGgsIFdhbGxUaW1lIG1vZGlmaWVk
U2luY2UpCiB7Ci0gICAgZm9yIChhdXRvJiBlbmdpbmUgOiBpbnN0YWxsZWRNZWRpYUVuZ2luZXMo
KSkgewotICAgICAgICBpZiAoZW5naW5lLmNsZWFyTWVkaWFDYWNoZSkKLSAgICAgICAgICAgIGVu
Z2luZS5jbGVhck1lZGlhQ2FjaGUocGF0aCwgbW9kaWZpZWRTaW5jZSk7Ci0gICAgfQorICAgIGZv
ciAoYXV0byYgZW5naW5lIDogaW5zdGFsbGVkTWVkaWFFbmdpbmVzKCkpCisgICAgICAgIGVuZ2lu
ZS0+Y2xlYXJNZWRpYUNhY2hlKHBhdGgsIG1vZGlmaWVkU2luY2UpOwogfQogCiB2b2lkIE1lZGlh
UGxheWVyOjpjbGVhck1lZGlhQ2FjaGVGb3JPcmlnaW5zKGNvbnN0IFN0cmluZyYgcGF0aCwgY29u
c3QgSGFzaFNldDxSZWZQdHI8U2VjdXJpdHlPcmlnaW4+PiYgb3JpZ2lucykKIHsKLSAgICBmb3Ig
KGF1dG8mIGVuZ2luZSA6IGluc3RhbGxlZE1lZGlhRW5naW5lcygpKSB7Ci0gICAgICAgIGlmIChl
bmdpbmUuY2xlYXJNZWRpYUNhY2hlRm9yT3JpZ2lucykKLSAgICAgICAgICAgIGVuZ2luZS5jbGVh
ck1lZGlhQ2FjaGVGb3JPcmlnaW5zKHBhdGgsIG9yaWdpbnMpOwotICAgIH0KKyAgICBmb3IgKGF1
dG8mIGVuZ2luZSA6IGluc3RhbGxlZE1lZGlhRW5naW5lcygpKQorICAgICAgICBlbmdpbmUtPmNs
ZWFyTWVkaWFDYWNoZUZvck9yaWdpbnMocGF0aCwgb3JpZ2lucyk7CiB9CiAKIGJvb2wgTWVkaWFQ
bGF5ZXI6OnN1cHBvcnRzS2V5U3lzdGVtKGNvbnN0IFN0cmluZyYga2V5U3lzdGVtLCBjb25zdCBT
dHJpbmcmIG1pbWVUeXBlKQogewogICAgIGZvciAoYXV0byYgZW5naW5lIDogaW5zdGFsbGVkTWVk
aWFFbmdpbmVzKCkpIHsKLSAgICAgICAgaWYgKGVuZ2luZS5zdXBwb3J0c0tleVN5c3RlbSAmJiBl
bmdpbmUuc3VwcG9ydHNLZXlTeXN0ZW0oa2V5U3lzdGVtLCBtaW1lVHlwZSkpCisgICAgICAgIGlm
IChlbmdpbmUtPnN1cHBvcnRzS2V5U3lzdGVtKGtleVN5c3RlbSwgbWltZVR5cGUpKQogICAgICAg
ICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogICAgIHJldHVybiBmYWxzZTsKQEAgLTExNzIsNyAr
MTI0MSw3IEBAIHZvaWQgTWVkaWFQbGF5ZXI6Om5ldHdvcmtTdGF0ZUNoYW5nZWQoKQogICAgIC8v
IGxldCB0aGUgbmV4dCBlbmdpbmUgdHJ5LgogICAgIGlmIChtX3ByaXZhdGUtPm5ldHdvcmtTdGF0
ZSgpID49IEZvcm1hdEVycm9yICYmIG1fcHJpdmF0ZS0+cmVhZHlTdGF0ZSgpIDwgSGF2ZU1ldGFk
YXRhKSB7CiAgICAgICAgIGNsaWVudCgpLm1lZGlhUGxheWVyRW5naW5lRmFpbGVkVG9Mb2FkKCk7
Ci0gICAgICAgIGlmIChpbnN0YWxsZWRNZWRpYUVuZ2luZXMoKS5zaXplKCkgPiAxICYmIChtX2Nv
bnRlbnRUeXBlLmlzRW1wdHkoKSB8fCBuZXh0QmVzdE1lZGlhRW5naW5lKG1fY3VycmVudE1lZGlh
RW5naW5lKSkpIHsKKyAgICAgICAgaWYgKG1fYWN0aXZlRW5naW5lSWRlbnRpZmllci5pc0VtcHR5
KCkgJiYgaW5zdGFsbGVkTWVkaWFFbmdpbmVzKCkuc2l6ZSgpID4gMSAmJiAobV9jb250ZW50VHlw
ZS5pc0VtcHR5KCkgfHwgbmV4dEJlc3RNZWRpYUVuZ2luZShtX2N1cnJlbnRNZWRpYUVuZ2luZSkp
KSB7CiAgICAgICAgICAgICBtX3JlbG9hZFRpbWVyLnN0YXJ0T25lU2hvdCgwX3MpOwogICAgICAg
ICAgICAgcmV0dXJuOwogICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvTWVkaWFQbGF5ZXIuaAppbmRleCBmYjllYmEwZTRhYmUzMWM3NTI3MDBjYjdjZTY4OTBk
Yjk4OWMyMjJiLi4wMjVjZTIwYWYwMjk4NjZmZjkyZmRiOGQ4ZTRiMDBiZjg2NWViNGZjIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmgKQEAgLTY3
LDYgKzY3LDcgQEAgY2xhc3MgSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZTsKIGNsYXNzIExlZ2FjeUNE
TVNlc3Npb25DbGllbnQ7CiBjbGFzcyBNZWRpYVBsYXliYWNrVGFyZ2V0OwogY2xhc3MgTWVkaWFQ
bGF5ZXI7CitjbGFzcyBNZWRpYVBsYXllckZhY3Rvcnk7CiBjbGFzcyBNZWRpYVBsYXllclByaXZh
dGVJbnRlcmZhY2U7CiBjbGFzcyBNZWRpYVBsYXllclJlcXVlc3RJbnN0YWxsTWlzc2luZ1BsdWdp
bnNDYWxsYmFjazsKIGNsYXNzIE1lZGlhU291cmNlUHJpdmF0ZUNsaWVudDsKQEAgLTc2LDcgKzc3
LDYgQEAgY2xhc3MgVGV4dFRyYWNrUmVwcmVzZW50YXRpb247CiAKIHN0cnVjdCBDb29raWU7CiBz
dHJ1Y3QgR3JhcGhpY3NEZXZpY2VBZGFwdGVyOwotc3RydWN0IE1lZGlhUGxheWVyRmFjdG9yeTsK
IAogc3RydWN0IE1lZGlhRW5naW5lU3VwcG9ydFBhcmFtZXRlcnMgewogICAgIENvbnRlbnRUeXBl
IHR5cGU7CkBAIC04NCw2ICs4NCw0OCBAQCBzdHJ1Y3QgTWVkaWFFbmdpbmVTdXBwb3J0UGFyYW1l
dGVycyB7CiAgICAgYm9vbCBpc01lZGlhU291cmNlIHsgZmFsc2UgfTsKICAgICBib29sIGlzTWVk
aWFTdHJlYW0geyBmYWxzZSB9OwogICAgIFZlY3RvcjxDb250ZW50VHlwZT4gY29udGVudFR5cGVz
UmVxdWlyaW5nSGFyZHdhcmVTdXBwb3J0OworCisjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKQorICAg
IHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+CisgICAgdm9pZCBlbmNvZGUoRW5jb2RlciYgZW5jb2Rl
cikgY29uc3QKKyAgICB7CisgICAgICAgIGVuY29kZXIgPDwgdHlwZTsKKyAgICAgICAgZW5jb2Rl
ciA8PCB1cmw7CisgICAgICAgIGVuY29kZXIgPDwgaXNNZWRpYVNvdXJjZTsKKyAgICAgICAgZW5j
b2RlciA8PCBjb250ZW50VHlwZXNSZXF1aXJpbmdIYXJkd2FyZVN1cHBvcnQ7CisgICAgfQorCisg
ICAgdGVtcGxhdGUgPGNsYXNzIERlY29kZXI+CisgICAgc3RhdGljIE9wdGlvbmFsPE1lZGlhRW5n
aW5lU3VwcG9ydFBhcmFtZXRlcnM+IGRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQorICAgIHsKKyAg
ICAgICAgT3B0aW9uYWw8Q29udGVudFR5cGU+IHR5cGU7CisgICAgICAgIGRlY29kZXIgPj4gdHlw
ZTsKKyAgICAgICAgaWYgKCF0eXBlKQorICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsK
KworICAgICAgICBPcHRpb25hbDxVUkw+IHVybDsKKyAgICAgICAgZGVjb2RlciA+PiB1cmw7Cisg
ICAgICAgIGlmICghdXJsKQorICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKworICAg
ICAgICBPcHRpb25hbDxib29sPiBpc01lZGlhU291cmNlOworICAgICAgICBkZWNvZGVyID4+IGlz
TWVkaWFTb3VyY2U7CisgICAgICAgIGlmICghaXNNZWRpYVNvdXJjZSkKKyAgICAgICAgICAgIHJl
dHVybiBXVEY6Om51bGxvcHQ7CisKKyAgICAgICAgT3B0aW9uYWw8Ym9vbD4gaXNNZWRpYVN0cmVh
bTsKKyAgICAgICAgZGVjb2RlciA+PiBpc01lZGlhU3RyZWFtOworICAgICAgICBpZiAoIWlzTWVk
aWFTdHJlYW0pCisgICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworCisgICAgICAgIE9w
dGlvbmFsPFZlY3RvcjxDb250ZW50VHlwZT4+IHR5cGVzUmVxdWlyaW5nSGFyZHdhcmU7CisgICAg
ICAgIGRlY29kZXIgPj4gdHlwZXNSZXF1aXJpbmdIYXJkd2FyZTsKKyAgICAgICAgaWYgKCF0eXBl
c1JlcXVpcmluZ0hhcmR3YXJlKQorICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKwor
ICAgICAgICByZXR1cm4ge3sgV1RGTW92ZSgqdHlwZSksIFdURk1vdmUoKnVybCksIFdURk1vdmUo
KmlzTWVkaWFTb3VyY2UpLCBXVEZNb3ZlKCppc01lZGlhU3RyZWFtKSwgV1RGTW92ZSgqdHlwZXNS
ZXF1aXJpbmdIYXJkd2FyZSkgfX07CisgICAgfQorI2VuZGlmCiB9OwogCiBzdHJ1Y3QgVmlkZW9Q
bGF5YmFja1F1YWxpdHlNZXRyaWNzIHsKQEAgLTIzNSw3ICsyNzcsNyBAQCBwdWJsaWM6CiAjZW5k
aWYKIAogICAgIHZpcnR1YWwgYm9vbCBtZWRpYVBsYXllclNob3VsZERpc2FibGVTbGVlcCgpIGNv
bnN0IHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgdmlydHVhbCBjb25zdCBWZWN0b3I8Q29udGVudFR5
cGU+JiBtZWRpYUNvbnRlbnRUeXBlc1JlcXVpcmluZ0hhcmR3YXJlU3VwcG9ydCgpIGNvbnN0Owor
ICAgIHZpcnR1YWwgY29uc3QgVmVjdG9yPENvbnRlbnRUeXBlPiYgbWVkaWFDb250ZW50VHlwZXNS
ZXF1aXJpbmdIYXJkd2FyZVN1cHBvcnQoKSBjb25zdCA9IDA7CiAgICAgdmlydHVhbCBib29sIG1l
ZGlhUGxheWVyU2hvdWxkQ2hlY2tIYXJkd2FyZVN1cHBvcnQoKSBjb25zdCB7IHJldHVybiBmYWxz
ZTsgfQogCiAjaWYgIVJFTEVBU0VfTE9HX0RJU0FCTEVECkBAIC0yNDQsMTYgKzI4NiwxOCBAQCBw
dWJsaWM6CiAjZW5kaWYKIH07CiAKLWNsYXNzIE1lZGlhUGxheWVyIDogcHVibGljIE1lZGlhUGxh
eWVyRW51bXMsIHB1YmxpYyBSZWZDb3VudGVkPE1lZGlhUGxheWVyPiB7CitjbGFzcyBXRUJDT1JF
X0VYUE9SVCBNZWRpYVBsYXllciA6IHB1YmxpYyBNZWRpYVBsYXllckVudW1zLCBwdWJsaWMgUmVm
Q291bnRlZDxNZWRpYVBsYXllcj4gewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKE1lZGlhUGxh
eWVyKTsgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgc3RhdGljIFJlZjxN
ZWRpYVBsYXllcj4gY3JlYXRlKE1lZGlhUGxheWVyQ2xpZW50Jik7CisgICAgc3RhdGljIFJlZjxN
ZWRpYVBsYXllcj4gY3JlYXRlKE1lZGlhUGxheWVyQ2xpZW50JiwgY29uc3QgU3RyaW5nJik7CiAg
ICAgdmlydHVhbCB+TWVkaWFQbGF5ZXIoKTsKIAogICAgIHZvaWQgaW52YWxpZGF0ZSgpOwogCiAg
ICAgLy8gTWVkaWEgZW5naW5lIHN1cHBvcnQuCiAgICAgdXNpbmcgTWVkaWFQbGF5ZXJFbnVtczo6
U3VwcG9ydHNUeXBlOworICAgIHN0YXRpYyBjb25zdCBNZWRpYVBsYXllckZhY3RvcnkqIG1lZGlh
RW5naW5lKGNvbnN0IFN0cmluZyYpOwogICAgIHN0YXRpYyBTdXBwb3J0c1R5cGUgc3VwcG9ydHNU
eXBlKGNvbnN0IE1lZGlhRW5naW5lU3VwcG9ydFBhcmFtZXRlcnMmKTsKICAgICBzdGF0aWMgdm9p
ZCBnZXRTdXBwb3J0ZWRUeXBlcyhIYXNoU2V0PFN0cmluZywgQVNDSUlDYXNlSW5zZW5zaXRpdmVI
YXNoPiYpOwogICAgIHN0YXRpYyBib29sIGlzQXZhaWxhYmxlKCk7CkBAIC01OTYsMTEgKzY0MCwx
MyBAQCBwdWJsaWM6CiAKIHByaXZhdGU6CiAgICAgTWVkaWFQbGF5ZXIoTWVkaWFQbGF5ZXJDbGll
bnQmKTsKKyAgICBNZWRpYVBsYXllcihNZWRpYVBsYXllckNsaWVudCYsIGNvbnN0IFN0cmluZyYp
OwogCiAgICAgTWVkaWFQbGF5ZXJDbGllbnQmIGNsaWVudCgpIGNvbnN0IHsgcmV0dXJuICptX2Ns
aWVudDsgfQogCi0gICAgY29uc3QgTWVkaWFQbGF5ZXJGYWN0b3J5KiBuZXh0QmVzdE1lZGlhRW5n
aW5lKGNvbnN0IE1lZGlhUGxheWVyRmFjdG9yeSopIGNvbnN0OworICAgIGNvbnN0IE1lZGlhUGxh
eWVyRmFjdG9yeSogbmV4dEJlc3RNZWRpYUVuZ2luZShjb25zdCBNZWRpYVBsYXllckZhY3Rvcnkq
KTsKICAgICB2b2lkIGxvYWRXaXRoTmV4dE1lZGlhRW5naW5lKGNvbnN0IE1lZGlhUGxheWVyRmFj
dG9yeSopOworICAgIGNvbnN0IE1lZGlhUGxheWVyRmFjdG9yeSogbmV4dE1lZGlhRW5naW5lKGNv
bnN0IE1lZGlhUGxheWVyRmFjdG9yeSopOwogICAgIHZvaWQgcmVsb2FkVGltZXJGaXJlZCgpOwog
CiAgICAgTWVkaWFQbGF5ZXJDbGllbnQqIG1fY2xpZW50OwpAQCAtNjEwLDYgKzY1Niw3IEBAIHBy
aXZhdGU6CiAgICAgVVJMIG1fdXJsOwogICAgIENvbnRlbnRUeXBlIG1fY29udGVudFR5cGU7CiAg
ICAgU3RyaW5nIG1fa2V5U3lzdGVtOworICAgIFN0cmluZyBtX2FjdGl2ZUVuZ2luZUlkZW50aWZp
ZXI7CiAgICAgSW50U2l6ZSBtX3NpemU7CiAgICAgUHJlbG9hZCBtX3ByZWxvYWQgeyBBdXRvIH07
CiAgICAgZG91YmxlIG1fdm9sdW1lIHsgMSB9OwpAQCAtNjI5LDE2ICs2NzYsMjQgQEAgcHJpdmF0
ZToKICNlbmRpZgogfTsKIAotdXNpbmcgQ3JlYXRlTWVkaWFFbmdpbmVQbGF5ZXIgPSBXVEY6OkZ1
bmN0aW9uPHN0ZDo6dW5pcXVlX3B0cjxNZWRpYVBsYXllclByaXZhdGVJbnRlcmZhY2U+IChNZWRp
YVBsYXllciopPjsKLXR5cGVkZWYgdm9pZCAoKk1lZGlhRW5naW5lU3VwcG9ydGVkVHlwZXMpKEhh
c2hTZXQ8U3RyaW5nLCBBU0NJSUNhc2VJbnNlbnNpdGl2ZUhhc2g+JiB0eXBlcyk7Ci10eXBlZGVm
IE1lZGlhUGxheWVyOjpTdXBwb3J0c1R5cGUgKCpNZWRpYUVuZ2luZVN1cHBvcnRzVHlwZSkoY29u
c3QgTWVkaWFFbmdpbmVTdXBwb3J0UGFyYW1ldGVycyYgcGFyYW1ldGVycyk7Ci10eXBlZGVmIEhh
c2hTZXQ8UmVmUHRyPFNlY3VyaXR5T3JpZ2luPj4gKCpNZWRpYUVuZ2luZU9yaWdpbnNJbk1lZGlh
Q2FjaGUpKGNvbnN0IFN0cmluZyYgcGF0aCk7Ci10eXBlZGVmIHZvaWQgKCpNZWRpYUVuZ2luZUNs
ZWFyTWVkaWFDYWNoZSkoY29uc3QgU3RyaW5nJiBwYXRoLCBXYWxsVGltZSBtb2RpZmllZFNpbmNl
KTsKLXR5cGVkZWYgdm9pZCAoKk1lZGlhRW5naW5lQ2xlYXJNZWRpYUNhY2hlRm9yT3JpZ2lucyko
Y29uc3QgU3RyaW5nJiBwYXRoLCBjb25zdCBIYXNoU2V0PFJlZlB0cjxTZWN1cml0eU9yaWdpbj4+
Jik7Ci10eXBlZGVmIGJvb2wgKCpNZWRpYUVuZ2luZVN1cHBvcnRzS2V5U3lzdGVtKShjb25zdCBT
dHJpbmcmIGtleVN5c3RlbSwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSk7CitjbGFzcyBNZWRpYVBs
YXllckZhY3RvcnkgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOworcHVibGljOgorICAg
IE1lZGlhUGxheWVyRmFjdG9yeSgpID0gZGVmYXVsdDsKKyAgICB2aXJ0dWFsIH5NZWRpYVBsYXll
ckZhY3RvcnkoKSB7IH0KKworICAgIHZpcnR1YWwgc3RkOjp1bmlxdWVfcHRyPE1lZGlhUGxheWVy
UHJpdmF0ZUludGVyZmFjZT4gY3JlYXRlTWVkaWFFbmdpbmVQbGF5ZXIoTWVkaWFQbGF5ZXIqKSBj
b25zdCA9IDA7CisgICAgdmlydHVhbCB2b2lkIGdldFN1cHBvcnRlZFR5cGVzKEhhc2hTZXQ8U3Ry
aW5nLCBBU0NJSUNhc2VJbnNlbnNpdGl2ZUhhc2g+JikgY29uc3QgPSAwOworICAgIHZpcnR1YWwg
TWVkaWFQbGF5ZXI6OlN1cHBvcnRzVHlwZSBzdXBwb3J0c1R5cGVBbmRDb2RlY3MoY29uc3QgTWVk
aWFFbmdpbmVTdXBwb3J0UGFyYW1ldGVycyYpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIFN0cmlu
ZyBpZGVudGlmaWVyKCkgY29uc3QgID0gMDsKKworICAgIHZpcnR1YWwgSGFzaFNldDxSZWZQdHI8
U2VjdXJpdHlPcmlnaW4+PiBvcmlnaW5zSW5NZWRpYUNhY2hlKGNvbnN0IFN0cmluZyYpIGNvbnN0
IHsgcmV0dXJuIHsgfTsgfQorICAgIHZpcnR1YWwgdm9pZCBjbGVhck1lZGlhQ2FjaGUoY29uc3Qg
U3RyaW5nJiwgV2FsbFRpbWUpIGNvbnN0IHsgfQorICAgIHZpcnR1YWwgdm9pZCBjbGVhck1lZGlh
Q2FjaGVGb3JPcmlnaW5zKGNvbnN0IFN0cmluZyYsIGNvbnN0IEhhc2hTZXQ8UmVmUHRyPFNlY3Vy
aXR5T3JpZ2luPj4mKSBjb25zdCB7IH0KKyAgICB2aXJ0dWFsIGJvb2wgc3VwcG9ydHNLZXlTeXN0
ZW0oY29uc3QgU3RyaW5nJiAvKiBrZXlTeXN0ZW0gKi8sIGNvbnN0IFN0cmluZyYgLyogbWltZVR5
cGUgKi8pIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9Cit9OwogCi10eXBlZGVmIHZvaWQgKCpNZWRp
YUVuZ2luZVJlZ2lzdHJhcikoQ3JlYXRlTWVkaWFFbmdpbmVQbGF5ZXImJiwgTWVkaWFFbmdpbmVT
dXBwb3J0ZWRUeXBlcywgTWVkaWFFbmdpbmVTdXBwb3J0c1R5cGUsCi0gICAgTWVkaWFFbmdpbmVP
cmlnaW5zSW5NZWRpYUNhY2hlLCBNZWRpYUVuZ2luZUNsZWFyTWVkaWFDYWNoZSwgTWVkaWFFbmdp
bmVDbGVhck1lZGlhQ2FjaGVGb3JPcmlnaW5zLCBNZWRpYUVuZ2luZVN1cHBvcnRzS2V5U3lzdGVt
KTsKK3R5cGVkZWYgdm9pZCAoKk1lZGlhRW5naW5lUmVnaXN0cmFyKShzdGQ6OnVuaXF1ZV9wdHI8
TWVkaWFQbGF5ZXJGYWN0b3J5Pik7CiB0eXBlZGVmIHZvaWQgKCpNZWRpYUVuZ2luZVJlZ2lzdGVy
KShNZWRpYUVuZ2luZVJlZ2lzdHJhcik7CiAKIGNsYXNzIE1lZGlhUGxheWVyRmFjdG9yeVN1cHBv
cnQgewpAQCAtNjQ2LDYgKzcwMSwxMyBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgc3Rh
dGljIHZvaWQgY2FsbFJlZ2lzdGVyTWVkaWFFbmdpbmUoTWVkaWFFbmdpbmVSZWdpc3Rlcik7CiB9
OwogCitjbGFzcyBSZW1vdGVNZWRpYVBsYXllclN1cHBvcnQgeworcHVibGljOgorICAgIHVzaW5n
IFJlZ2lzdGVyUmVtb3RlUGxheWVyQ2FsbGJhY2sgPSBzdGQ6OmZ1bmN0aW9uPHZvaWQoTWVkaWFF
bmdpbmVSZWdpc3RyYXIsIGNvbnN0IFN0cmluZyYpPjsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0
aWMgdm9pZCBzZXRSZWdpc3RlclJlbW90ZVBsYXllckNhbGxiYWNrKFJlZ2lzdGVyUmVtb3RlUGxh
eWVyQ2FsbGJhY2smJik7Cit9OworCisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlm
IC8vIEVOQUJMRShWSURFTykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL01lZGlhUGxheWVyRW5naW5lSWRlbnRpZmllcnMuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyRW5naW5lSWRlbnRpZmllcnMuaApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li5jMjZlZmM1MDMzN2MyYmZkZjUxYWNlYWFiNDllN2NjYTc2ZWNmNTUzCi0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXJFbmdpbmVJ
ZGVudGlmaWVycy5oCkBAIC0wLDAgKzEsNDMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBB
TlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
ICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgorICogQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAor
ICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjcHJhZ21hIG9uY2UKKwor
I2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisK
K2NsYXNzIE1lZGlhUGxheWVyRW5naW5lSWRlbnRpZmllcnMgeworcHVibGljOgorICAgIHN0YXRp
YyBjb25zdCBjaGFyKiBhdkZvdW5kYXRpb25FbmdpbmVJZGVudGlmaWVyKCkgeyByZXR1cm4gIk1l
ZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMiOyB9CisgICAgc3RhdGljIGNvbnN0IGNo
YXIqIGF2Rm91bmRhdGlvbk1TRUVuZ2luZUlkZW50aWZpZXIoKSB7IHJldHVybiAiTWVkaWFQbGF5
ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDIjsgfQorICAgIHN0YXRpYyBjb25zdCBjaGFyKiBh
dkZvdW5kYXRpb25NZWRpYVN0cmVhbUVuZ2luZUlkZW50aWZpZXIoKSB7IHJldHVybiAiTWVkaWFQ
bGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDIjsgfQorICAgIHN0YXRpYyBjb25zdCBjaGFy
KiBHU3RyZWFtZXJNZWRpYUVuZ2luZUlkZW50aWZpZXIoKSB7IHJldHVybiAiTWVkaWFQbGF5ZXJQ
cml2YXRlR1N0cmVhbWVyIjsgfQorICAgIHN0YXRpYyBjb25zdCBjaGFyKiBHU3RyZWFtZXJNU0VN
ZWRpYUVuZ2luZUlkZW50aWZpZXIoKSB7IHJldHVybiAiTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVh
bWVyTVNFIjsgfQorICAgIHN0YXRpYyBjb25zdCBjaGFyKiBob2xlUHVuY2hNZWRpYUVuZ2luZUlk
ZW50aWZpZXIoKSB7IHJldHVybiAiTWVkaWFQbGF5ZXJQcml2YXRlSG9sZVB1bmNoIjsgfQorICAg
IHN0YXRpYyBjb25zdCBjaGFyKiBNZWRpYUZvdW5kYXRpb25NZWRpYUVuZ2luZUlkZW50aWZpZXIo
KSB7IHJldHVybiAiTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFGb3VuZGF0aW9uIjsgfQorfTsKKwor
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvUGxhdGZvcm1UaW1lUmFuZ2VzLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9QbGF0Zm9ybVRpbWVSYW5nZXMuaAppbmRleCAxODg4Njk1Yzc2ZTkyNmZiM2Vk
NGIzYTUxMGM5YmIwMzNiNDM3MzMwLi41MzZmNmFhMmE1YTc5NjYwNGQ1NzMxOWU2MTZhYmU1Njgz
ZmExY2IxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9QbGF0
Zm9ybVRpbWVSYW5nZXMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Q
bGF0Zm9ybVRpbWVSYW5nZXMuaApAQCAtMzYsNyArMzYsNyBAQCBjbGFzcyBQcmludFN0cmVhbTsK
IAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBQbGF0Zm9ybVRpbWVSYW5nZXMgeworY2xh
c3MgV0VCQ09SRV9FWFBPUlQgUGxhdGZvcm1UaW1lUmFuZ2VzIHsKICAgICBXVEZfTUFLRV9GQVNU
X0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBleHBsaWNpdCBQbGF0Zm9ybVRpbWVSYW5nZXMoKSB7
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRh
dGlvbi9jZi9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25DRi5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vY2YvTWVkaWFQbGF5ZXJQcml2YXRl
QVZGb3VuZGF0aW9uQ0YuY3BwCmluZGV4IDBjZThjZWI0OGJkNzg4Y2ViMTlhYTlkZDg5N2Y5Mjk5
ZGVhYmRkMGQuLmYzNTYxNTMzYjE2OWI3YjdmNmE0NWJkNjc1ZjgwYzcwZDI3MDA4NmYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9jZi9N
ZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25DRi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL2NmL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91
bmRhdGlvbkNGLmNwcApAQCAtMzQyLDExICszNDIsMzcgQEAgc3RhdGljIGRpc3BhdGNoX3F1ZXVl
X3QgZ2xvYmFsTG9hZGVyRGVsZWdhdGVRdWV1ZSgpCiB9CiAjZW5kaWYKIAorY2xhc3MgTWVkaWFQ
bGF5ZXJGYWN0b3J5QVZGb3VuZGF0aW9uQ0YgOiBwdWJsaWMgTWVkaWFQbGF5ZXJGYWN0b3J5IHsK
K3B1YmxpYzoKKyAgICBTdHJpbmcgaWRlbnRpZmllcigpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIE1l
ZGlhUGxheWVyRW5naW5lSWRlbnRpZmllcnM6OmF2Rm91bmRhdGlvbk1lZGlhU3RyZWFtSWRlbnRp
ZmllcigpOyB9OworCisgICAgc3RkOjp1bmlxdWVfcHRyPE1lZGlhUGxheWVyUHJpdmF0ZUludGVy
ZmFjZT4gY3JlYXRlTWVkaWFFbmdpbmVQbGF5ZXIoTWVkaWFQbGF5ZXIqIHBsYXllcikgY29uc3Qg
ZmluYWwKKyAgICB7CisgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPE1lZGlhUGxheWVyUHJpdmF0
ZUFWRm91bmRhdGlvbkNGPihwbGF5ZXIpOworICAgIH0KKworICAgIHZvaWQgZ2V0U3VwcG9ydGVk
VHlwZXMoSGFzaFNldDxTdHJpbmcsIEFTQ0lJQ2FzZUluc2Vuc2l0aXZlSGFzaD4mIHR5cGVzKSBj
b25zdCBmaW5hbAorICAgIHsKKyAgICAgICAgcmV0dXJuIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91
bmRhdGlvbkNGOjpnZXRTdXBwb3J0ZWRUeXBlcyh0eXBlcyk7CisgICAgfQorCisgICAgTWVkaWFQ
bGF5ZXI6OlN1cHBvcnRzVHlwZSBzdXBwb3J0c1R5cGVBbmRDb2RlY3MoY29uc3QgTWVkaWFFbmdp
bmVTdXBwb3J0UGFyYW1ldGVycyYgcGFyYW1ldGVycykgY29uc3QgZmluYWwKKyAgICB7CisgICAg
ICAgIHJldHVybiBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25DRjo6c3VwcG9ydHNUeXBl
KHBhcmFtZXRlcnMpOworICAgIH0KKworICAgIGJvb2wgc3VwcG9ydHNLZXlTeXN0ZW0oY29uc3Qg
U3RyaW5nJiBrZXlTeXN0ZW0sIGNvbnN0IFN0cmluZyYgbWltZVR5cGUpIGNvbnN0IGZpbmFsCisg
ICAgeworICAgICAgICByZXR1cm4gTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uQ0Y6OnN1
cHBvcnRzS2V5U3lzdGVtKGtleVN5c3RlbSwgbWltZVR5cGUpOworICAgIH0KK307CisKIHZvaWQg
TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uQ0Y6OnJlZ2lzdGVyTWVkaWFFbmdpbmUoTWVk
aWFFbmdpbmVSZWdpc3RyYXIgcmVnaXN0cmFyKQogewotICAgIGlmIChpc0F2YWlsYWJsZSgpKQot
ICAgICAgICByZWdpc3RyYXIoW10oTWVkaWFQbGF5ZXIqIHBsYXllcikgeyByZXR1cm4gbWFrZVVu
aXF1ZTxNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25DRj4ocGxheWVyKTsgfSwKLSAgICAg
ICAgICAgIGdldFN1cHBvcnRlZFR5cGVzLCBzdXBwb3J0c1R5cGUsIDAsIDAsIDAsIHN1cHBvcnRz
S2V5U3lzdGVtKTsKKyAgICBpZiAoIWlzQXZhaWxhYmxlKCkpCisgICAgICAgIHJldHVybjsKKwor
ICAgIHJlZ2lzdHJhcihtYWtlVW5pcXVlPE1lZGlhUGxheWVyRmFjdG9yeUFWRm91bmRhdGlvbkNG
PigpKTsKIH0KIAogTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uQ0Y6Ok1lZGlhUGxheWVy
UHJpdmF0ZUFWRm91bmRhdGlvbkNGKE1lZGlhUGxheWVyKiBwbGF5ZXIpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBs
YXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25P
YmpDLmgKaW5kZXggZTk4ZDhlYTkwMDA0NzE4Y2ZjOTA0NGEwOTgzNmFmMGI5MGUwZmUwMS4uZTBi
ZWUyNDNiOTRiZmU2NDQ0Y2JmNWQ2ZDU5ZWY4NjgwNTczODkzYiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQ
cml2YXRlQVZGb3VuZGF0aW9uT2JqQy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9i
akMuaApAQCAtMTYyLDYgKzE2Miw3IEBAIHB1YmxpYzoKIAogcHJpdmF0ZToKICAgICAvLyBlbmdp
bmUgc3VwcG9ydAorICAgIGZyaWVuZCBjbGFzcyBNZWRpYVBsYXllckZhY3RvcnlBVkZvdW5kYXRp
b25PYmpDOwogICAgIHN0YXRpYyB2b2lkIGdldFN1cHBvcnRlZFR5cGVzKEhhc2hTZXQ8U3RyaW5n
LCBBU0NJSUNhc2VJbnNlbnNpdGl2ZUhhc2g+JiB0eXBlcyk7CiAgICAgc3RhdGljIE1lZGlhUGxh
eWVyOjpTdXBwb3J0c1R5cGUgc3VwcG9ydHNUeXBlKGNvbnN0IE1lZGlhRW5naW5lU3VwcG9ydFBh
cmFtZXRlcnMmKTsKICAgICBzdGF0aWMgYm9vbCBzdXBwb3J0c0tleVN5c3RlbShjb25zdCBTdHJp
bmcmIGtleVN5c3RlbSwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXll
clByaXZhdGVBVkZvdW5kYXRpb25PYmpDLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2Jq
Qy5tbQppbmRleCA1NDEwMzkxMzQxOWVlNWQ0OGU5ZWMxYWNiNjg5MmY5OGRkZTlmM2JkLi4zZjU0
YTU0MzdjMmZmY2I5MzI3Mjk5MDg4YmYxOWNmZmU2N2RmNmVmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclBy
aXZhdGVBVkZvdW5kYXRpb25PYmpDLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9i
akMubW0KQEAgLTUwLDYgKzUwLDcgQEAKICNpbXBvcnQgIkxvZ2dpbmcuaCIKICNpbXBvcnQgIk1l
ZGlhUGxheWJhY2tUYXJnZXRNYWMuaCIKICNpbXBvcnQgIk1lZGlhUGxheWJhY2tUYXJnZXRNb2Nr
LmgiCisjaW1wb3J0ICJNZWRpYVBsYXllckVuZ2luZUlkZW50aWZpZXJzLmgiCiAjaW1wb3J0ICJN
ZWRpYVNlbGVjdGlvbkdyb3VwQVZGT2JqQy5oIgogI2ltcG9ydCAiT3V0T2ZCYW5kVGV4dFRyYWNr
UHJpdmF0ZUFWRi5oIgogI2ltcG9ydCAiUGl4ZWxCdWZmZXJDb25mb3JtZXJDVi5oIgpAQCAtMjcz
LDE0ICsyNzQsNTQgQEAgc3RhdGljIGRpc3BhdGNoX3F1ZXVlX3QgZ2xvYmFsUHVsbERlbGVnYXRl
UXVldWUoKQogfQogI2VuZGlmCiAKK2NsYXNzIE1lZGlhUGxheWVyRmFjdG9yeUFWRm91bmRhdGlv
bk9iakMgOiBwdWJsaWMgTWVkaWFQbGF5ZXJGYWN0b3J5IHsKK3B1YmxpYzoKKyAgICBTdHJpbmcg
aWRlbnRpZmllcigpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIE1lZGlhUGxheWVyRW5naW5lSWRlbnRp
ZmllcnM6OmF2Rm91bmRhdGlvbkVuZ2luZUlkZW50aWZpZXIoKTsgfTsKKworICAgIHN0ZDo6dW5p
cXVlX3B0cjxNZWRpYVBsYXllclByaXZhdGVJbnRlcmZhY2U+IGNyZWF0ZU1lZGlhRW5naW5lUGxh
eWVyKE1lZGlhUGxheWVyKiBwbGF5ZXIpIGNvbnN0IGZpbmFsCisgICAgeworICAgICAgICByZXR1
cm4gbWFrZVVuaXF1ZTxNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDPihwbGF5ZXIp
OworICAgIH0KKworICAgIHZvaWQgZ2V0U3VwcG9ydGVkVHlwZXMoSGFzaFNldDxTdHJpbmcsIEFT
Q0lJQ2FzZUluc2Vuc2l0aXZlSGFzaD4mIHR5cGVzKSBjb25zdCBmaW5hbAorICAgIHsKKyAgICAg
ICAgcmV0dXJuIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OmdldFN1cHBvcnRl
ZFR5cGVzKHR5cGVzKTsKKyAgICB9CisKKyAgICBNZWRpYVBsYXllcjo6U3VwcG9ydHNUeXBlIHN1
cHBvcnRzVHlwZUFuZENvZGVjcyhjb25zdCBNZWRpYUVuZ2luZVN1cHBvcnRQYXJhbWV0ZXJzJiBw
YXJhbWV0ZXJzKSBjb25zdCBmaW5hbAorICAgIHsKKyAgICAgICAgcmV0dXJuIE1lZGlhUGxheWVy
UHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OnN1cHBvcnRzVHlwZShwYXJhbWV0ZXJzKTsKKyAgICB9
CisKKyAgICBIYXNoU2V0PFJlZlB0cjxTZWN1cml0eU9yaWdpbj4+IG9yaWdpbnNJbk1lZGlhQ2Fj
aGUoY29uc3QgU3RyaW5nJiBwYXRoKSBjb25zdCBmaW5hbAorICAgIHsKKyAgICAgICAgcmV0dXJu
IE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6Om9yaWdpbnNJbk1lZGlhQ2FjaGUo
cGF0aCk7CisgICAgfQorCisgICAgdm9pZCBjbGVhck1lZGlhQ2FjaGUoY29uc3QgU3RyaW5nJiBw
YXRoLCBXYWxsVGltZSBtb2RpZmllZFNpbmNlKSBjb25zdCBmaW5hbAorICAgIHsKKyAgICAgICAg
cmV0dXJuIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OmNsZWFyTWVkaWFDYWNo
ZShwYXRoLCBtb2RpZmllZFNpbmNlKTsKKyAgICB9CisKKyAgICB2b2lkIGNsZWFyTWVkaWFDYWNo
ZUZvck9yaWdpbnMoY29uc3QgU3RyaW5nJiBwYXRoLCBjb25zdCBIYXNoU2V0PFJlZlB0cjxTZWN1
cml0eU9yaWdpbj4+JiBvcmlnaW5zKSBjb25zdCBmaW5hbAorICAgIHsKKyAgICAgICAgcmV0dXJu
IE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OmNsZWFyTWVkaWFDYWNoZUZvck9y
aWdpbnMocGF0aCwgb3JpZ2lucyk7CisgICAgfQorCisgICAgYm9vbCBzdXBwb3J0c0tleVN5c3Rl
bShjb25zdCBTdHJpbmcmIGtleVN5c3RlbSwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSkgY29uc3Qg
ZmluYWwKKyAgICB7CisgICAgICAgIHJldHVybiBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRp
b25PYmpDOjpzdXBwb3J0c0tleVN5c3RlbShrZXlTeXN0ZW0sIG1pbWVUeXBlKTsKKyAgICB9Cit9
OworCiB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OnJlZ2lzdGVyTWVk
aWFFbmdpbmUoTWVkaWFFbmdpbmVSZWdpc3RyYXIgcmVnaXN0cmFyKQogewogICAgIGlmICghaXNB
dmFpbGFibGUoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgcmVnaXN0cmFyKFtdKE1lZGlhUGxh
eWVyKiBwbGF5ZXIpIHsgcmV0dXJuIG1ha2VVbmlxdWU8TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3Vu
ZGF0aW9uT2JqQz4ocGxheWVyKTsgfSwKLSAgICAgICAgICAgIGdldFN1cHBvcnRlZFR5cGVzLCBz
dXBwb3J0c1R5cGUsIG9yaWdpbnNJbk1lZGlhQ2FjaGUsIGNsZWFyTWVkaWFDYWNoZSwgY2xlYXJN
ZWRpYUNhY2hlRm9yT3JpZ2lucywgc3VwcG9ydHNLZXlTeXN0ZW0pOwogICAgIEFTU0VSVChBVkFz
c2V0TUlNRVR5cGVDYWNoZTo6c2luZ2xldG9uKCkuaXNBdmFpbGFibGUoKSk7CisKKyAgICByZWdp
c3RyYXIobWFrZVVuaXF1ZTxNZWRpYVBsYXllckZhY3RvcnlBVkZvdW5kYXRpb25PYmpDPigpKTsK
IH0KIAogc3RhdGljIEFWQXNzZXRDYWNoZSAqYXNzZXRDYWNoZUZvclBhdGgoY29uc3QgU3RyaW5n
JiBwYXRoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZm
b3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDLm1tIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQ
bGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDLm1tCmluZGV4IDcxNTI4Yzk5YzBjYzYwN2Qz
OGYyZWYzZTA3Mjg4Y2Y2ZDMzNTFmZDYuLjY1NjE3MDEyMjBiMDU0MWM1M2M0Yjg2ZGI3NGY4Mjdm
YjAwZGFmZjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2
Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQy5tbQor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9N
ZWRpYVBsYXllclByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMubW0KQEAgLTM0LDYgKzM0LDcgQEAK
ICNpbXBvcnQgIkNETVNlc3Npb25BVlN0cmVhbVNlc3Npb24uaCIKICNpbXBvcnQgIkdyYXBoaWNz
Q29udGV4dENHLmgiCiAjaW1wb3J0ICJMb2dnaW5nLmgiCisjaW1wb3J0ICJNZWRpYVBsYXllckVu
Z2luZUlkZW50aWZpZXJzLmgiCiAjaW1wb3J0ICJNZWRpYVNvdXJjZVByaXZhdGVBVkZPYmpDLmgi
CiAjaW1wb3J0ICJNZWRpYVNvdXJjZVByaXZhdGVDbGllbnQuaCIKICNpbXBvcnQgIlBpeGVsQnVm
ZmVyQ29uZm9ybWVyQ1YuaCIKQEAgLTE5NiwxNCArMTk3LDM0IEBAIE1lZGlhUGxheWVyUHJpdmF0
ZU1lZGlhU291cmNlQVZGT2JqQzo6fk1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2Jq
QygpCiAjcHJhZ21hIG1hcmsgLQogI3ByYWdtYSBtYXJrIE1lZGlhUGxheWVyIEZhY3RvcnkgTWV0
aG9kcwogCitjbGFzcyBNZWRpYVBsYXllckZhY3RvcnlNZWRpYVNvdXJjZUFWRk9iakMgOiBwdWJs
aWMgTWVkaWFQbGF5ZXJGYWN0b3J5IHsKK3B1YmxpYzoKKyAgICBTdHJpbmcgaWRlbnRpZmllcigp
IGNvbnN0IGZpbmFsIHsgcmV0dXJuIE1lZGlhUGxheWVyRW5naW5lSWRlbnRpZmllcnM6OmF2Rm91
bmRhdGlvbk1TRUVuZ2luZUlkZW50aWZpZXIoKTsgfTsKKworICAgIHN0ZDo6dW5pcXVlX3B0cjxN
ZWRpYVBsYXllclByaXZhdGVJbnRlcmZhY2U+IGNyZWF0ZU1lZGlhRW5naW5lUGxheWVyKE1lZGlh
UGxheWVyKiBwbGF5ZXIpIGNvbnN0IGZpbmFsCisgICAgeworICAgICAgICByZXR1cm4gbWFrZVVu
aXF1ZTxNZWRpYVBsYXllclByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakM+KHBsYXllcik7ICAgICAg
ICAKKyAgICB9CisKKyAgICB2b2lkIGdldFN1cHBvcnRlZFR5cGVzKEhhc2hTZXQ8U3RyaW5nLCBB
U0NJSUNhc2VJbnNlbnNpdGl2ZUhhc2g+JiB0eXBlcykgY29uc3QgZmluYWwKKyAgICB7CisgICAg
ICAgIHJldHVybiBNZWRpYVBsYXllclByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakM6OmdldFN1cHBv
cnRlZFR5cGVzKHR5cGVzKTsKKyAgICB9CisKKyAgICBNZWRpYVBsYXllcjo6U3VwcG9ydHNUeXBl
IHN1cHBvcnRzVHlwZUFuZENvZGVjcyhjb25zdCBNZWRpYUVuZ2luZVN1cHBvcnRQYXJhbWV0ZXJz
JiBwYXJhbWV0ZXJzKSBjb25zdCBmaW5hbAorICAgIHsKKyAgICAgICAgcmV0dXJuIE1lZGlhUGxh
eWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQzo6c3VwcG9ydHNUeXBlKHBhcmFtZXRlcnMpOwor
ICAgIH0KK307CisKIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDOjpy
ZWdpc3Rlck1lZGlhRW5naW5lKE1lZGlhRW5naW5lUmVnaXN0cmFyIHJlZ2lzdHJhcikKIHsKICAg
ICBpZiAoIWlzQXZhaWxhYmxlKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIHJlZ2lzdHJhcihb
XShNZWRpYVBsYXllciogcGxheWVyKSB7IHJldHVybiBtYWtlVW5pcXVlPE1lZGlhUGxheWVyUHJp
dmF0ZU1lZGlhU291cmNlQVZGT2JqQz4ocGxheWVyKTsgfSwKLSAgICAgICAgZ2V0U3VwcG9ydGVk
VHlwZXMsIHN1cHBvcnRzVHlwZSwgMCwgMCwgMCwgMCk7CiAgICAgQVNTRVJUKEFWQXNzZXRNSU1F
VHlwZUNhY2hlOjpzaW5nbGV0b24oKS5pc0F2YWlsYWJsZSgpKTsKKworICAgIHJlZ2lzdHJhciht
YWtlVW5pcXVlPE1lZGlhUGxheWVyRmFjdG9yeU1lZGlhU291cmNlQVZGT2JqQz4oKSk7CiB9CiAK
IGJvb2wgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDOjppc0F2YWlsYWJsZSgp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRp
b24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakMubW0gYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclBy
aXZhdGVNZWRpYVN0cmVhbUFWRk9iakMubW0KaW5kZXggNjMxNDgxNGJjODhmYzljZjdlYmJjZTk0
ZmM4ZTcxOTFkZjNmNDU0Zi4uMTc5YWVjY2UwNmY4MDI5ZjI0ZDNhMzQyYmMwMTAwMjBkMjM0NTM2
OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0
aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDLm1tCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxh
eWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQy5tbQpAQCAtMzEsNiArMzEsNyBAQAogI2ltcG9y
dCAiQXVkaW9UcmFja1ByaXZhdGVNZWRpYVN0cmVhbUNvY29hLmgiCiAjaW1wb3J0ICJHcmFwaGlj
c0NvbnRleHRDRy5oIgogI2ltcG9ydCAiTG9nZ2luZy5oIgorI2ltcG9ydCAiTWVkaWFQbGF5ZXJF
bmdpbmVJZGVudGlmaWVycy5oIgogI2ltcG9ydCAiTWVkaWFTdHJlYW1Qcml2YXRlLmgiCiAjaW1w
b3J0ICJQaXhlbEJ1ZmZlckNvbmZvcm1lckNWLmgiCiAjaW1wb3J0ICJWaWRlb0Z1bGxzY3JlZW5M
YXllck1hbmFnZXJPYmpDLmgiCkBAIC0yMjAsMTEgKzIyMSwzMiBAQCBNZWRpYVBsYXllclByaXZh
dGVNZWRpYVN0cmVhbUFWRk9iakM6On5NZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9i
akMoKQogI3ByYWdtYSBtYXJrIC0KICNwcmFnbWEgbWFyayBNZWRpYVBsYXllciBGYWN0b3J5IE1l
dGhvZHMKIAorY2xhc3MgTWVkaWFQbGF5ZXJGYWN0b3J5TWVkaWFTdHJlYW1BVkZPYmpDIDogcHVi
bGljIE1lZGlhUGxheWVyRmFjdG9yeSB7CitwdWJsaWM6CisgICAgU3RyaW5nIGlkZW50aWZpZXIo
KSBjb25zdCBmaW5hbCB7IHJldHVybiBNZWRpYVBsYXllckVuZ2luZUlkZW50aWZpZXJzOjphdkZv
dW5kYXRpb25NZWRpYVN0cmVhbUVuZ2luZUlkZW50aWZpZXIoKTsgfTsKKworICAgIHN0ZDo6dW5p
cXVlX3B0cjxNZWRpYVBsYXllclByaXZhdGVJbnRlcmZhY2U+IGNyZWF0ZU1lZGlhRW5naW5lUGxh
eWVyKE1lZGlhUGxheWVyKiBwbGF5ZXIpIGNvbnN0IGZpbmFsCisgICAgeworICAgICAgICByZXR1
cm4gbWFrZVVuaXF1ZTxNZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakM+KHBsYXll
cik7CisgICAgfQorCisgICAgdm9pZCBnZXRTdXBwb3J0ZWRUeXBlcyhIYXNoU2V0PFN0cmluZywg
QVNDSUlDYXNlSW5zZW5zaXRpdmVIYXNoPiYgdHlwZXMpIGNvbnN0IGZpbmFsCisgICAgeworICAg
ICAgICByZXR1cm4gTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDOjpnZXRTdXBw
b3J0ZWRUeXBlcyh0eXBlcyk7CisgICAgfQorCisgICAgTWVkaWFQbGF5ZXI6OlN1cHBvcnRzVHlw
ZSBzdXBwb3J0c1R5cGVBbmRDb2RlY3MoY29uc3QgTWVkaWFFbmdpbmVTdXBwb3J0UGFyYW1ldGVy
cyYgcGFyYW1ldGVycykgY29uc3QgZmluYWwKKyAgICB7CisgICAgICAgIHJldHVybiBNZWRpYVBs
YXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakM6OnN1cHBvcnRzVHlwZShwYXJhbWV0ZXJzKTsK
KyAgICB9Cit9OworCiB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQzo6
cmVnaXN0ZXJNZWRpYUVuZ2luZShNZWRpYUVuZ2luZVJlZ2lzdHJhciByZWdpc3RyYXIpCiB7Ci0g
ICAgaWYgKGlzQXZhaWxhYmxlKCkpCi0gICAgICAgIHJlZ2lzdHJhcihbXShNZWRpYVBsYXllciog
cGxheWVyKSB7IHJldHVybiBtYWtlVW5pcXVlPE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFt
QVZGT2JqQz4ocGxheWVyKTsgfSwgZ2V0U3VwcG9ydGVkVHlwZXMsCi0gICAgICAgICAgICBzdXBw
b3J0c1R5cGUsIDAsIDAsIDAsIDApOworICAgIGlmICghaXNBdmFpbGFibGUoKSkKKyAgICAgICAg
cmV0dXJuOworCisgICAgcmVnaXN0cmFyKG1ha2VVbmlxdWU8TWVkaWFQbGF5ZXJGYWN0b3J5TWVk
aWFTdHJlYW1BVkZPYmpDPigpKTsKIH0KIAogYm9vbCBNZWRpYVBsYXllclByaXZhdGVNZWRpYVN0
cmVhbUFWRk9iakM6OmlzQXZhaWxhYmxlKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVy
UHJpdmF0ZUdTdHJlYW1lci5jcHAKaW5kZXggMDEyN2M1N2QxYWI4NTFmM2MyNDc2OGUwYTU1NzFh
OGZmM2ZhZTZlZS4uYjBhN2Q4MTJlZmY1MWM0MmZkYzBlY2FmMzdiMGU0OWQwMWUxN2E1MSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlh
UGxheWVyUHJpdmF0ZUdTdHJlYW1lci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5jcHAKQEAgLTM3
LDYgKzM3LDcgQEAKICNpbmNsdWRlICJJbnRSZWN0LmgiCiAjaW5jbHVkZSAiTG9nZ2luZy5oIgog
I2luY2x1ZGUgIk1lZGlhUGxheWVyLmgiCisjaW5jbHVkZSAiTWVkaWFQbGF5ZXJFbmdpbmVJZGVu
dGlmaWVycy5oIgogI2luY2x1ZGUgIk1lZGlhUGxheWVyUmVxdWVzdEluc3RhbGxNaXNzaW5nUGx1
Z2luc0NhbGxiYWNrLmgiCiAjaW5jbHVkZSAiTUlNRVR5cGVSZWdpc3RyeS5oIgogI2luY2x1ZGUg
Ik5vdEltcGxlbWVudGVkLmgiCkBAIC00NjQsMTQgKzQ2NSwzNyBAQCBib29sIE1lZGlhUGxheWVy
UHJpdmF0ZUdTdHJlYW1lcjo6aXNBdmFpbGFibGUoKQogICAgIHJldHVybiBmYWN0b3J5OwogfQog
CitjbGFzcyBNZWRpYVBsYXllckZhY3RvcnlHU3RyZWFtZXIgOiBwdWJsaWMgTWVkaWFQbGF5ZXJG
YWN0b3J5IHsKK3B1YmxpYzoKKyAgICBTdHJpbmcgaWRlbnRpZmllcigpIGNvbnN0IGZpbmFsIHsg
cmV0dXJuIE1lZGlhUGxheWVyRW5naW5lSWRlbnRpZmllcnM6OkdTdHJlYW1lck1lZGlhU3RyZWFt
SWRlbnRpZmllcigpOyB9OworCisgICAgc3RkOjp1bmlxdWVfcHRyPE1lZGlhUGxheWVyUHJpdmF0
ZUludGVyZmFjZT4gY3JlYXRlTWVkaWFFbmdpbmVQbGF5ZXIoTWVkaWFQbGF5ZXIqIHBsYXllcikg
Y29uc3QgZmluYWwKKyAgICB7CisgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPE1lZGlhUGxheWVy
UHJpdmF0ZUdTdHJlYW1lcj4ocGxheWVyKTsKKyAgICB9CisKKyAgICB2b2lkIGdldFN1cHBvcnRl
ZFR5cGVzKEhhc2hTZXQ8U3RyaW5nLCBBU0NJSUNhc2VJbnNlbnNpdGl2ZUhhc2g+JiB0eXBlcykg
Y29uc3QgZmluYWwKKyAgICB7CisgICAgICAgIHJldHVybiBNZWRpYVBsYXllclByaXZhdGVHU3Ry
ZWFtZXI6OmdldFN1cHBvcnRlZFR5cGVzKHR5cGVzKTsKKyAgICB9CisKKyAgICBNZWRpYVBsYXll
cjo6U3VwcG9ydHNUeXBlIHN1cHBvcnRzVHlwZUFuZENvZGVjcyhjb25zdCBNZWRpYUVuZ2luZVN1
cHBvcnRQYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzKSBjb25zdCBmaW5hbAorICAgIHsKKyAgICAgICAg
cmV0dXJuIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6c3VwcG9ydHNUeXBlKHBhcmFtZXRl
cnMpOworICAgIH0KKworICAgIGJvb2wgc3VwcG9ydHNLZXlTeXN0ZW0oY29uc3QgU3RyaW5nJiBr
ZXlTeXN0ZW0sIGNvbnN0IFN0cmluZyYgbWltZVR5cGUpIGNvbnN0IGZpbmFsCisgICAgeworICAg
ICAgICByZXR1cm4gTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpzdXBwb3J0c0tleVN5c3Rl
bShrZXlTeXN0ZW0sIG1pbWVUeXBlKTsKKyAgICB9Cit9OworCiB2b2lkIE1lZGlhUGxheWVyUHJp
dmF0ZUdTdHJlYW1lcjo6cmVnaXN0ZXJNZWRpYUVuZ2luZShNZWRpYUVuZ2luZVJlZ2lzdHJhciBy
ZWdpc3RyYXIpCiB7CiAgICAgaW5pdGlhbGl6ZURlYnVnQ2F0ZWdvcnkoKTsKIAotICAgIGlmIChp
c0F2YWlsYWJsZSgpKSB7Ci0gICAgICAgIHJlZ2lzdHJhcihbXShNZWRpYVBsYXllciogcGxheWVy
KSB7IHJldHVybiBtYWtlVW5pcXVlPE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcj4ocGxheWVy
KTsgfSwKLSAgICAgICAgICAgIGdldFN1cHBvcnRlZFR5cGVzLCBzdXBwb3J0c1R5cGUsIG51bGxw
dHIsIG51bGxwdHIsIG51bGxwdHIsIHN1cHBvcnRzS2V5U3lzdGVtKTsKLSAgICB9CisgICAgaWYg
KGlzQXZhaWxhYmxlKCkpCisgICAgICAgIHJlZ2lzdHJhcihtYWtlVW5pcXVlPE1lZGlhUGxheWVy
RmFjdG9yeUdTdHJlYW1lcj4oKSk7CiB9CiAKIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVh
bWVyOjpsb2FkRnVsbChjb25zdCBTdHJpbmcmIHVybFN0cmluZywgY29uc3QgU3RyaW5nJiBwaXBl
bGluZU5hbWUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9n
c3RyZWFtZXIvbXNlL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lck1TRS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvbXNlL01lZGlhUGxheWVyUHJpdmF0
ZUdTdHJlYW1lck1TRS5jcHAKaW5kZXggZGMyNDViNDdkZTNkZTcyZmFjMjM2NzJlNWY2ZWZkNGIz
NzYyOWI0Yi4uZGQ3MjEyZDg3MTQ0NmZhZDRmYWE2NDQwZjFlMTUzOGZiODFlMGE4MCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL21zZS9NZWRp
YVBsYXllclByaXZhdGVHU3RyZWFtZXJNU0UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2dzdHJlYW1lci9tc2UvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyTVNF
LmNwcApAQCAtMzYsNiArMzYsNyBAQAogI2luY2x1ZGUgIk1JTUVUeXBlUmVnaXN0cnkuaCIKICNp
bmNsdWRlICJNZWRpYURlc2NyaXB0aW9uLmgiCiAjaW5jbHVkZSAiTWVkaWFQbGF5ZXIuaCIKKyNp
bmNsdWRlICJNZWRpYVBsYXllckVuZ2luZUlkZW50aWZpZXJzLmgiCiAjaW5jbHVkZSAiTm90SW1w
bGVtZW50ZWQuaCIKICNpbmNsdWRlICJQbGF5YmFja1BpcGVsaW5lLmgiCiAjaW5jbHVkZSAiU291
cmNlQnVmZmVyUHJpdmF0ZUdTdHJlYW1lci5oIgpAQCAtNzIsMTQgKzczLDM3IEBAIEdTVF9ERUJV
R19DQVRFR09SWSh3ZWJraXRfbXNlX2RlYnVnKTsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitj
bGFzcyBNZWRpYVBsYXllckZhY3RvcnlHU3RyZWFtZXJNU0UgOiBwdWJsaWMgTWVkaWFQbGF5ZXJG
YWN0b3J5IHsKK3B1YmxpYzoKKyAgICBTdHJpbmcgaWRlbnRpZmllcigpIGNvbnN0IGZpbmFsIHsg
cmV0dXJuIE1lZGlhUGxheWVyRW5naW5lSWRlbnRpZmllcnM6OkdTdHJlYW1lck1TRU1lZGlhRW5n
aW5lSWRlbnRpZmllcigpOyB9OworCisgICAgc3RkOjp1bmlxdWVfcHRyPE1lZGlhUGxheWVyUHJp
dmF0ZUludGVyZmFjZT4gY3JlYXRlTWVkaWFFbmdpbmVQbGF5ZXIoTWVkaWFQbGF5ZXIqIHBsYXll
cikgY29uc3QgZmluYWwKKyAgICB7CisgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPE1lZGlhUGxh
eWVyUHJpdmF0ZUdTdHJlYW1lck1TRT4ocGxheWVyKTsKKyAgICB9CisKKyAgICB2b2lkIGdldFN1
cHBvcnRlZFR5cGVzKEhhc2hTZXQ8U3RyaW5nLCBBU0NJSUNhc2VJbnNlbnNpdGl2ZUhhc2g+JiB0
eXBlcykgY29uc3QgZmluYWwKKyAgICB7CisgICAgICAgIHJldHVybiBNZWRpYVBsYXllclByaXZh
dGVHU3RyZWFtZXJNU0U6OmdldFN1cHBvcnRlZFR5cGVzKHR5cGVzKTsKKyAgICB9CisKKyAgICBN
ZWRpYVBsYXllcjo6U3VwcG9ydHNUeXBlIHN1cHBvcnRzVHlwZUFuZENvZGVjcyhjb25zdCBNZWRp
YUVuZ2luZVN1cHBvcnRQYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzKSBjb25zdCBmaW5hbAorICAgIHsK
KyAgICAgICAgcmV0dXJuIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lck1TRTo6c3VwcG9ydHNU
eXBlKHBhcmFtZXRlcnMpOworICAgIH0KKworICAgIGJvb2wgc3VwcG9ydHNLZXlTeXN0ZW0oY29u
c3QgU3RyaW5nJiBrZXlTeXN0ZW0sIGNvbnN0IFN0cmluZyYgbWltZVR5cGUpIGNvbnN0IGZpbmFs
CisgICAgeworICAgICAgICByZXR1cm4gTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyTVNFOjpz
dXBwb3J0c0tleVN5c3RlbShrZXlTeXN0ZW0sIG1pbWVUeXBlKTsKKyAgICB9Cit9OworCiB2b2lk
IE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lck1TRTo6cmVnaXN0ZXJNZWRpYUVuZ2luZShNZWRp
YUVuZ2luZVJlZ2lzdHJhciByZWdpc3RyYXIpCiB7CiAgICAgaW5pdGlhbGl6ZUdTdHJlYW1lckFu
ZFJlZ2lzdGVyV2ViS2l0RWxlbWVudHMoKTsKICAgICBHU1RfREVCVUdfQ0FURUdPUllfSU5JVCh3
ZWJraXRfbXNlX2RlYnVnLCAid2Via2l0bXNlIiwgMCwgIldlYktpdCBNU0UgbWVkaWEgcGxheWVy
Iik7Ci0gICAgaWYgKGlzQXZhaWxhYmxlKCkpIHsKLSAgICAgICAgcmVnaXN0cmFyKFtdKE1lZGlh
UGxheWVyKiBwbGF5ZXIpIHsgcmV0dXJuIG1ha2VVbmlxdWU8TWVkaWFQbGF5ZXJQcml2YXRlR1N0
cmVhbWVyTVNFPihwbGF5ZXIpOyB9LAotICAgICAgICAgICAgZ2V0U3VwcG9ydGVkVHlwZXMsIHN1
cHBvcnRzVHlwZSwgbnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0ciwgc3VwcG9ydHNLZXlTeXN0ZW0p
OwotICAgIH0KKyAgICBpZiAoaXNBdmFpbGFibGUoKSkKKyAgICAgICAgcmVnaXN0cmFyKG1ha2VV
bmlxdWU8TWVkaWFQbGF5ZXJGYWN0b3J5R1N0cmVhbWVyPigpKTsKIH0KIAogTWVkaWFQbGF5ZXJQ
cml2YXRlR1N0cmVhbWVyTVNFOjpNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJNU0UoTWVkaWFQ
bGF5ZXIqIHBsYXllcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2hvbGVwdW5jaC9NZWRpYVBsYXllclByaXZhdGVIb2xlUHVuY2guY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvaG9sZXB1bmNoL01lZGlhUGxheWVyUHJpdmF0ZUhvbGVQ
dW5jaC5jcHAKaW5kZXggMGYwOGMxOWRiZGJlNjliMDZmN2I3NTUzZjhhYjQ5N2Q0N2UzNzdhOS4u
MzBiMTNlOGEzZDllY2ViNDNhYzNiYzg3NTZkYjQ1MzAxOTk3MjljZiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvaG9sZXB1bmNoL01lZGlhUGxheWVyUHJpdmF0
ZUhvbGVQdW5jaC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvaG9s
ZXB1bmNoL01lZGlhUGxheWVyUHJpdmF0ZUhvbGVQdW5jaC5jcHAKQEAgLTIzLDYgKzIzLDcgQEAK
IAogI2lmIFVTRShFWFRFUk5BTF9IT0xFUFVOQ0gpCiAjaW5jbHVkZSAiTWVkaWFQbGF5ZXIuaCIK
KyNpbmNsdWRlICJNZWRpYVBsYXllckVuZ2luZUlkZW50aWZpZXJzLmgiCiAjaW5jbHVkZSAiVGV4
dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJCdWZmZXIuaCIKICNpbmNsdWRlICJUZXh0dXJlTWFwcGVy
UGxhdGZvcm1MYXllclByb3h5LmgiCiAKQEAgLTEzOSwxMCArMTQwLDI5IEBAIE1lZGlhUGxheWVy
OjpTdXBwb3J0c1R5cGUgTWVkaWFQbGF5ZXJQcml2YXRlSG9sZVB1bmNoOjpzdXBwb3J0c1R5cGUo
Y29uc3QgTWVkaWFFCiAgICAgcmV0dXJuIE1lZGlhUGxheWVyOjpJc05vdFN1cHBvcnRlZDsKIH0K
IAorY2xhc3MgTWVkaWFQbGF5ZXJGYWN0b3J5SG9sZVB1bmNoIDogcHVibGljIE1lZGlhUGxheWVy
RmFjdG9yeSB7CitwdWJsaWM6CisgICAgU3RyaW5nIGlkZW50aWZpZXIoKSBjb25zdCBmaW5hbCB7
IHJldHVybiBNZWRpYVBsYXllckVuZ2luZUlkZW50aWZpZXJzOjpob2xlUHVuY2hNZWRpYUVuZ2lu
ZUlkZW50aWZpZXIoKTsgfTsKKworICAgIHN0ZDo6dW5pcXVlX3B0cjxNZWRpYVBsYXllclByaXZh
dGVJbnRlcmZhY2U+IGNyZWF0ZU1lZGlhRW5naW5lUGxheWVyKE1lZGlhUGxheWVyKiBwbGF5ZXIp
IGNvbnN0IGZpbmFsCisgICAgeworICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxNZWRpYVBsYXll
clByaXZhdGVIb2xlUHVuY2g+KHBsYXllcik7CisgICAgfQorCisgICAgdm9pZCBnZXRTdXBwb3J0
ZWRUeXBlcyhIYXNoU2V0PFN0cmluZywgQVNDSUlDYXNlSW5zZW5zaXRpdmVIYXNoPiYgdHlwZXMp
IGNvbnN0IGZpbmFsCisgICAgeworICAgICAgICByZXR1cm4gTWVkaWFQbGF5ZXJQcml2YXRlSG9s
ZVB1bmNoOjpnZXRTdXBwb3J0ZWRUeXBlcyh0eXBlcyk7CisgICAgfQorCisgICAgTWVkaWFQbGF5
ZXI6OlN1cHBvcnRzVHlwZSBzdXBwb3J0c1R5cGVBbmRDb2RlY3MoY29uc3QgTWVkaWFFbmdpbmVT
dXBwb3J0UGFyYW1ldGVycyYgcGFyYW1ldGVycykgY29uc3QgZmluYWwKKyAgICB7CisgICAgICAg
IHJldHVybiBNZWRpYVBsYXllclByaXZhdGVIb2xlUHVuY2g6OnN1cHBvcnRzVHlwZShwYXJhbWV0
ZXJzKTsKKyAgICB9Cit9OworCiB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUhvbGVQdW5jaDo6cmVn
aXN0ZXJNZWRpYUVuZ2luZShNZWRpYUVuZ2luZVJlZ2lzdHJhciByZWdpc3RyYXIpCiB7Ci0gICAg
cmVnaXN0cmFyKFtdKE1lZGlhUGxheWVyKiBwbGF5ZXIpIHsgcmV0dXJuIG1ha2VVbmlxdWU8TWVk
aWFQbGF5ZXJQcml2YXRlSG9sZVB1bmNoPihwbGF5ZXIpOyB9LAotICAgICAgICBnZXRTdXBwb3J0
ZWRUeXBlcywgc3VwcG9ydHNUeXBlLCBudWxscHRyLCBudWxscHRyLCBudWxscHRyLCBudWxscHRy
KTsKKyAgICByZWdpc3RyYXIobWFrZVVuaXF1ZTxNZWRpYVBsYXllckZhY3RvcnlIb2xlUHVuY2g+
KCkpOwogfQogCiB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUhvbGVQdW5jaDo6bm90aWZ5UmVhZHlT
dGF0ZSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4v
TWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFGb3VuZGF0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL3dpbi9NZWRpYVBsYXllclByaXZhdGVNZWRpYUZvdW5kYXRpb24uY3Bw
CmluZGV4IDZkNjRhZTlhNmUzYTQxN2ZiMTRmMTIxNjZmNjhkM2M5YTU1MjY2ZGUuLjM5NTNmNjYw
YjRhM2Q5MTcyMWY3MDA0YzAyYmNhODNhNWRjMGE5YjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9NZWRpYVBsYXllclByaXZhdGVNZWRpYUZvdW5kYXRp
b24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9NZWRpYVBs
YXllclByaXZhdGVNZWRpYUZvdW5kYXRpb24uY3BwCkBAIC0zMiw2ICszMiw3IEBACiAjaW5jbHVk
ZSAiR3JhcGhpY3NDb250ZXh0LmgiCiAjaW5jbHVkZSAiSFduZERDLmgiCiAjaW5jbHVkZSAiSG9z
dFdpbmRvdy5oIgorI2luY2x1ZGUgIk1lZGlhUGxheWVyRW5naW5lSWRlbnRpZmllcnMuaCIKICNp
bmNsdWRlICJOb3RJbXBsZW1lbnRlZC5oIgogI2lmIFVTRShDQUlSTykKICNpbmNsdWRlICJDYWly
b09wZXJhdGlvbnMuaCIKQEAgLTc5LDEyICs4MCwzMCBAQCBNZWRpYVBsYXllclByaXZhdGVNZWRp
YUZvdW5kYXRpb246On5NZWRpYVBsYXllclByaXZhdGVNZWRpYUZvdW5kYXRpb24oKQogICAgIGVu
ZFNlc3Npb24oKTsKIH0KIAorY2xhc3MgTWVkaWFQbGF5ZXJGYWN0b3J5TWVkaWFGb3VuZGF0aW9u
IDogcHVibGljIE1lZGlhUGxheWVyRmFjdG9yeSB7CitwdWJsaWM6CisgICAgU3RyaW5nIGlkZW50
aWZpZXIoKSBjb25zdCBmaW5hbCB7IHJldHVybiBNZWRpYVBsYXllckVuZ2luZUlkZW50aWZpZXJz
OjpNZWRpYUZvdW5kYXRpb25NZWRpYUVuZ2luZUlkZW50aWZpZXIoKTsgfTsKKworICAgIHN0ZDo6
dW5pcXVlX3B0cjxNZWRpYVBsYXllclByaXZhdGVJbnRlcmZhY2U+IGNyZWF0ZU1lZGlhRW5naW5l
UGxheWVyKE1lZGlhUGxheWVyKiBwbGF5ZXIpIGNvbnN0IGZpbmFsCisgICAgeworICAgICAgICBy
ZXR1cm4gbWFrZVVuaXF1ZTxNZWRpYVBsYXllclByaXZhdGVNZWRpYUZvdW5kYXRpb24+KHBsYXll
cik7CisgICAgfQorCisgICAgdm9pZCBnZXRTdXBwb3J0ZWRUeXBlcyhIYXNoU2V0PFN0cmluZywg
QVNDSUlDYXNlSW5zZW5zaXRpdmVIYXNoPiYgdHlwZXMpIGNvbnN0IGZpbmFsCisgICAgeworICAg
ICAgICByZXR1cm4gTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFGb3VuZGF0aW9uOjpnZXRTdXBwb3J0
ZWRUeXBlcyh0eXBlcyk7CisgICAgfQorCisgICAgTWVkaWFQbGF5ZXI6OlN1cHBvcnRzVHlwZSBz
dXBwb3J0c1R5cGVBbmRDb2RlY3MoY29uc3QgTWVkaWFFbmdpbmVTdXBwb3J0UGFyYW1ldGVycyYg
cGFyYW1ldGVycykgY29uc3QgZmluYWwKKyAgICB7CisgICAgICAgIHJldHVybiBNZWRpYVBsYXll
clByaXZhdGVNZWRpYUZvdW5kYXRpb246OnN1cHBvcnRzVHlwZShwYXJhbWV0ZXJzKTsKKyAgICB9
Cit9OworCiB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhRm91bmRhdGlvbjo6cmVnaXN0ZXJN
ZWRpYUVuZ2luZShNZWRpYUVuZ2luZVJlZ2lzdHJhciByZWdpc3RyYXIpCiB7Ci0gICAgaWYgKGlz
QXZhaWxhYmxlKCkpIHsKLSAgICAgICAgcmVnaXN0cmFyKFtdKE1lZGlhUGxheWVyKiBwbGF5ZXIp
IHsgcmV0dXJuIG1ha2VVbmlxdWU8TWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFGb3VuZGF0aW9uPihw
bGF5ZXIpOyB9LAotICAgICAgICAgICAgZ2V0U3VwcG9ydGVkVHlwZXMsIHN1cHBvcnRzVHlwZSwg
MCwgMCwgMCwgMCk7Ci0gICAgfQorICAgIGlmIChpc0F2YWlsYWJsZSgpKQorICAgICAgICByZWdp
c3RyYXIobWFrZVVuaXF1ZTxNZWRpYVBsYXllckZhY3RvcnlNZWRpYUZvdW5kYXRpb24+KCkpOwog
fQogCiBib29sIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhRm91bmRhdGlvbjo6aXNBdmFpbGFibGUo
KSAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svbWVkaWFzb3VyY2Uv
TW9ja01lZGlhUGxheWVyTWVkaWFTb3VyY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bW9jay9tZWRpYXNvdXJjZS9Nb2NrTWVkaWFQbGF5ZXJNZWRpYVNvdXJjZS5jcHAKaW5kZXggMzg3
YTIxZGFmNDU1MjM5NjhhZWU0Zjc5NDE5ZDNkOGI4ODY5MGQ3Yy4uOWYyZjY3NTM2YTQ5NjQ4Yjg3
YTZlNTFlNWM1ZGNlMWJiOTJhMjZmMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbW9jay9tZWRpYXNvdXJjZS9Nb2NrTWVkaWFQbGF5ZXJNZWRpYVNvdXJjZS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9tZWRpYXNvdXJjZS9Nb2NrTWVkaWFQbGF5ZXJN
ZWRpYVNvdXJjZS5jcHAKQEAgLTM3LDExICszNywyNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKK2NsYXNzIE1lZGlhUGxheWVyRmFjdG9yeU1lZGlhU291cmNlTW9jayA6IHB1YmxpYyBNZWRp
YVBsYXllckZhY3RvcnkgeworcHVibGljOgorICAgIFN0cmluZyBpZGVudGlmaWVyKCkgY29uc3Qg
ZmluYWwgeyByZXR1cm4gIk1vY2tNZWRpYVBsYXllck1lZGlhU291cmNlIjsgfTsKKworICAgIHN0
ZDo6dW5pcXVlX3B0cjxNZWRpYVBsYXllclByaXZhdGVJbnRlcmZhY2U+IGNyZWF0ZU1lZGlhRW5n
aW5lUGxheWVyKE1lZGlhUGxheWVyKiBwbGF5ZXIpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1ha2VV
bmlxdWU8TW9ja01lZGlhUGxheWVyTWVkaWFTb3VyY2U+KHBsYXllcik7IH0KKworICAgIHZvaWQg
Z2V0U3VwcG9ydGVkVHlwZXMoSGFzaFNldDxTdHJpbmcsIEFTQ0lJQ2FzZUluc2Vuc2l0aXZlSGFz
aD4mIHR5cGVzKSBjb25zdCBmaW5hbAorICAgIHsKKyAgICAgICAgcmV0dXJuIE1vY2tNZWRpYVBs
YXllck1lZGlhU291cmNlOjpnZXRTdXBwb3J0ZWRUeXBlcyh0eXBlcyk7CisgICAgfQorCisgICAg
TWVkaWFQbGF5ZXI6OlN1cHBvcnRzVHlwZSBzdXBwb3J0c1R5cGVBbmRDb2RlY3MoY29uc3QgTWVk
aWFFbmdpbmVTdXBwb3J0UGFyYW1ldGVycyYgcGFyYW1ldGVycykgY29uc3QgZmluYWwKKyAgICB7
CisgICAgICAgIHJldHVybiBNb2NrTWVkaWFQbGF5ZXJNZWRpYVNvdXJjZTo6c3VwcG9ydHNUeXBl
KHBhcmFtZXRlcnMpOworICAgIH0KK307CisKIC8vIE1lZGlhUGxheWVyIEVuaWduZSBTdXBwb3J0
CiB2b2lkIE1vY2tNZWRpYVBsYXllck1lZGlhU291cmNlOjpyZWdpc3Rlck1lZGlhRW5naW5lKE1l
ZGlhRW5naW5lUmVnaXN0cmFyIHJlZ2lzdHJhcikKIHsKLSAgICByZWdpc3RyYXIoW10gKE1lZGlh
UGxheWVyKiBwbGF5ZXIpIHsgcmV0dXJuIG1ha2VVbmlxdWU8TW9ja01lZGlhUGxheWVyTWVkaWFT
b3VyY2U+KHBsYXllcik7IH0sIGdldFN1cHBvcnRlZFR5cGVzLAotICAgICAgICBzdXBwb3J0c1R5
cGUsIDAsIDAsIDAsIDApOworICAgIHJlZ2lzdHJhcihtYWtlVW5pcXVlPE1lZGlhUGxheWVyRmFj
dG9yeU1lZGlhU291cmNlTW9jaz4oKSk7CiB9CiAKIC8vIEZJWE1FOiBXaGF0IGRvZXMgdGhlIHdv
cmQgImNhY2hlIiBtZWFuIGhlcmU/CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRT
b3VyY2VzLWlucHV0LnhjZmlsZWxpc3QgYi9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2VzLWlu
cHV0LnhjZmlsZWxpc3QKaW5kZXggN2YwOGYyYjJmMTg1ODJlZDUwNDAzMmRjYWNiNTQ3ODZhMTY5
YWQ1Zi4uM2VmMWNhODhmZmFlYWEyOWRjZDgzYjc1NWMyYjNiZjI4OGYwZjJhYSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9EZXJpdmVkU291cmNlcy1pbnB1dC54Y2ZpbGVsaXN0CisrKyBiL1Nv
dXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMtaW5wdXQueGNmaWxlbGlzdApAQCAtMTYsNiArMTYs
NyBAQCAkKEpBVkFTQ1JJUFRDT1JFX1BSSVZBVEVfSEVBREVSU19ESVIpL3h4ZC5wbAogJChQUk9K
RUNUX0RJUikvR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLm1lc3NhZ2VzLmlu
CiAkKFBST0pFQ1RfRElSKS9HUFVQcm9jZXNzL0dQVVByb2Nlc3MubWVzc2FnZXMuaW4KICQoUFJP
SkVDVF9ESVIpL0dQVVByb2Nlc3MvbWFjL2NvbS5hcHBsZS5XZWJLaXQuR1BVUHJvY2Vzcy5zYi5p
bgorJChQUk9KRUNUX0RJUikvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVBsYXllck1hbmFn
ZXJQcm94eS5tZXNzYWdlcy5pbgogJChQUk9KRUNUX0RJUikvTmV0d29ya1Byb2Nlc3MvQ29va2ll
cy9XZWJDb29raWVNYW5hZ2VyLm1lc3NhZ2VzLmluCiAkKFBST0pFQ1RfRElSKS9OZXR3b3JrUHJv
Y2Vzcy9DdXN0b21Qcm90b2NvbHMvTGVnYWN5Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyLm1lc3NhZ2Vz
LmluCiAkKFBST0pFQ1RfRElSKS9OZXR3b3JrUHJvY2Vzcy9JbmRleGVkREIvV2ViSURCQ29ubmVj
dGlvblRvQ2xpZW50Lm1lc3NhZ2VzLmluCkBAIC05Nyw2ICs5OCw3IEBAICQoUFJPSkVDVF9ESVIp
L1dlYlByb2Nlc3MvQ2FjaGUvV2ViQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbi5tZXNzYWdlcy5pbgog
JChQUk9KRUNUX0RJUikvV2ViUHJvY2Vzcy9EYXRhYmFzZXMvSW5kZXhlZERCL1dlYklEQkNvbm5l
Y3Rpb25Ub1NlcnZlci5tZXNzYWdlcy5pbgogJChQUk9KRUNUX0RJUikvV2ViUHJvY2Vzcy9GdWxs
U2NyZWVuL1dlYkZ1bGxTY3JlZW5NYW5hZ2VyLm1lc3NhZ2VzLmluCiAkKFBST0pFQ1RfRElSKS9X
ZWJQcm9jZXNzL0dQVS9HUFVQcm9jZXNzQ29ubmVjdGlvbi5tZXNzYWdlcy5pbgorJChQUk9KRUNU
X0RJUikvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyLm1lc3Nh
Z2VzLmluCiAkKFBST0pFQ1RfRElSKS9XZWJQcm9jZXNzL0dlb2xvY2F0aW9uL1dlYkdlb2xvY2F0
aW9uTWFuYWdlci5tZXNzYWdlcy5pbgogJChQUk9KRUNUX0RJUikvV2ViUHJvY2Vzcy9OZXR3b3Jr
L05ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5tZXNzYWdlcy5pbgogJChQUk9KRUNUX0RJUikvV2Vi
UHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZGVyLm1lc3NhZ2VzLmluCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2VzLW91dHB1dC54Y2ZpbGVsaXN0IGIvU291cmNl
L1dlYktpdC9EZXJpdmVkU291cmNlcy1vdXRwdXQueGNmaWxlbGlzdAppbmRleCAzYjFlOTQxMTcw
MzhiZjBkMDRhMDc1N2Y1ZTZkODVlMzM0YmQ3NWFlLi5jOGEzYjQ5NWMwY2U1NTQxMjk5MjM2ODEx
MzIwMGRhMmI5NDA3OTI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2Vz
LW91dHB1dC54Y2ZpbGVsaXN0CisrKyBiL1NvdXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMtb3V0
cHV0LnhjZmlsZWxpc3QKQEAgLTExNCw2ICsxMTQsMTIgQEAgJChCVUlMVF9QUk9EVUNUU19ESVIp
L0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIvUGx1Z2luUHJveHlNZXNzYWdlc1JlcGxpZXMuaAogJChC
VUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIvUmVtb3RlTGF5ZXJUcmVl
RHJhd2luZ0FyZWFQcm94eU1lc3NhZ2VSZWNlaXZlci5jcHAKICQoQlVJTFRfUFJPRFVDVFNfRElS
KS9EZXJpdmVkU291cmNlcy9XZWJLaXQyL1JlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhUHJveHlN
ZXNzYWdlcy5oCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9S
ZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYVByb3h5TWVzc2FnZXNSZXBsaWVzLmgKKyQoQlVJTFRf
UFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQyL1JlbW90ZU1lZGlhUGxheWVyTWFu
YWdlck1lc3NhZ2VSZWNlaXZlci5jcHAKKyQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291
cmNlcy9XZWJLaXQyL1JlbW90ZU1lZGlhUGxheWVyTWFuYWdlck1lc3NhZ2VzLmgKKyQoQlVJTFRf
UFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQyL1JlbW90ZU1lZGlhUGxheWVyTWFu
YWdlck1lc3NhZ2VzUmVwbGllcy5oCiskKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJj
ZXMvV2ViS2l0Mi9SZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eU1lc3NhZ2VSZWNlaXZlci5j
cHAKKyQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQyL1JlbW90ZU1l
ZGlhUGxheWVyTWFuYWdlclByb3h5TWVzc2FnZXMuaAorJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rl
cml2ZWRTb3VyY2VzL1dlYktpdDIvUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHlNZXNzYWdl
c1JlcGxpZXMuaAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIv
UmVtb3RlT2JqZWN0UmVnaXN0cnlNZXNzYWdlUmVjZWl2ZXIuY3BwCiAkKEJVSUxUX1BST0RVQ1RT
X0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9SZW1vdGVPYmplY3RSZWdpc3RyeU1lc3NhZ2Vz
LmgKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQyL1JlbW90ZU9i
amVjdFJlZ2lzdHJ5TWVzc2FnZXNSZXBsaWVzLmgKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
RGVyaXZlZFNvdXJjZXMubWFrZSBiL1NvdXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMubWFrZQpp
bmRleCBiZTUyNWUxM2M1OWJiZDE0NTZlOGYwZDQyM2JhNjQ0MWNlOGIwOGRhLi45NmYzYTJlY2Vm
MzExOGNlMjNmMzg3NTFkNzJlMmFiMDgzY2Y0YWM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L0Rlcml2ZWRTb3VyY2VzLm1ha2UKKysrIGIvU291cmNlL1dlYktpdC9EZXJpdmVkU291cmNlcy5t
YWtlCkBAIC0yNCw2ICsyNCw3IEBAIFZQQVRIID0gXAogICAgICQoV2ViS2l0MikgXAogICAgICQo
V2ViS2l0MikvR1BVUHJvY2VzcyBcCiAgICAgJChXZWJLaXQyKS9HUFVQcm9jZXNzL21hYyBcCisg
ICAgJChXZWJLaXQyKS9HUFVQcm9jZXNzL21lZGlhIFwKICAgICAkKFdlYktpdDIpL05ldHdvcmtQ
cm9jZXNzIFwKICAgICAkKFdlYktpdDIpL05ldHdvcmtQcm9jZXNzL0Nvb2tpZXMgXAogICAgICQo
V2ViS2l0MikvTmV0d29ya1Byb2Nlc3MvY2FjaGUgXApAQCAtNDksNiArNTAsNyBAQCBWUEFUSCA9
IFwKICAgICAkKFdlYktpdDIpL1dlYlByb2Nlc3MvRnVsbFNjcmVlbiBcCiAgICAgJChXZWJLaXQy
KS9XZWJQcm9jZXNzL0dlb2xvY2F0aW9uIFwKICAgICAkKFdlYktpdDIpL1dlYlByb2Nlc3MvR1BV
IFwKKyAgICAkKFdlYktpdDIpL1dlYlByb2Nlc3MvR1BVL21lZGlhIFwKICAgICAkKFdlYktpdDIp
L1dlYlByb2Nlc3MvSWNvbkRhdGFiYXNlIFwKICAgICAkKFdlYktpdDIpL1dlYlByb2Nlc3MvTWVk
aWFDYWNoZSBcCiAgICAgJChXZWJLaXQyKS9XZWJQcm9jZXNzL01lZGlhU3RyZWFtIFwKQEAgLTEz
NSw2ICsxMzcsOCBAQCBNRVNTQUdFX1JFQ0VJVkVSUyA9IFwKICAgICBQbHVnaW5Qcm9jZXNzUHJv
eHkgXAogICAgIFBsdWdpblByb3h5IFwKICAgICBSZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYVBy
b3h5IFwKKyAgICBSZW1vdGVNZWRpYVBsYXllck1hbmFnZXIgXAorICAgIFJlbW90ZU1lZGlhUGxh
eWVyTWFuYWdlclByb3h5IFwKICAgICBSZW1vdGVPYmplY3RSZWdpc3RyeSBcCiAgICAgUmVtb3Rl
U2Nyb2xsaW5nQ29vcmRpbmF0b3IgXAogICAgIFJlbW90ZVdlYkluc3BlY3RvclByb3h5IFwKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzLmNwcCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzLmNwcAppbmRleCBiZDEzOWZlNTMzMWJjY2UzNmMzMzQzYjE1MjE3ZDAxMWYyNTI0YzM4Li40
N2E5YWMzY2MxZmQ3ZWFmZWZkZTZiOTQwM2IwY2FkY2EyYjY5YzJkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwCkBA
IC0zNSw2ICszNSw4IEBACiAjaW5jbHVkZSAiR1BVUHJvY2Vzc1Byb3h5TWVzc2FnZXMuaCIKICNp
bmNsdWRlICJMb2dnaW5nLmgiCiAjaW5jbHVkZSAiUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWFQ
cm94eU1lc3NhZ2VzLmgiCisjaW5jbHVkZSAiUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHku
aCIKKyNpbmNsdWRlICJSZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eU1lc3NhZ2VzLmgiCiAj
aW5jbHVkZSAiUmVtb3RlU2Nyb2xsaW5nQ29vcmRpbmF0b3JUcmFuc2FjdGlvbi5oIgogI2luY2x1
ZGUgIldlYkNvcmVBcmd1bWVudENvZGVycy5oIgogI2luY2x1ZGUgIldlYkVycm9ycy5oIgpAQCAt
NTIsNiArNTQsNyBAQCBHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpHUFVDb25uZWN0aW9uVG9X
ZWJQcm9jZXNzKEdQVVByb2Nlc3MmIGdwdVByb2Nlc3MsIFdlYgogICAgIDogbV9jb25uZWN0aW9u
KElQQzo6Q29ubmVjdGlvbjo6Y3JlYXRlU2VydmVyQ29ubmVjdGlvbihjb25uZWN0aW9uSWRlbnRp
ZmllciwgKnRoaXMpKQogICAgICwgbV9ncHVQcm9jZXNzKGdwdVByb2Nlc3MpCiAgICAgLCBtX3dl
YlByb2Nlc3NJZGVudGlmaWVyKHdlYlByb2Nlc3NJZGVudGlmaWVyKQorICAgICwgbV9yZW1vdGVN
ZWRpYVBsYXllck1hbmFnZXJQcm94eShtYWtlVW5pcXVlPFJlbW90ZU1lZGlhUGxheWVyTWFuYWdl
clByb3h5PigqdGhpcykpCiB7CiAgICAgUkVMRUFTRV9BU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkp
OwogICAgIG1fY29ubmVjdGlvbi0+b3BlbigpOwpAQCAtNjEsNiArNjQsNyBAQCBHUFVDb25uZWN0
aW9uVG9XZWJQcm9jZXNzOjp+R1BVQ29ubmVjdGlvblRvV2ViUHJvY2VzcygpCiB7CiAgICAgUkVM
RUFTRV9BU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOwogCisgICAgbV9yZW1vdGVNZWRpYVBsYXll
ck1hbmFnZXJQcm94eSA9IG51bGxwdHI7CiAgICAgbV9jb25uZWN0aW9uLT5pbnZhbGlkYXRlKCk7
CiB9CiAKQEAgLTc0LDYgKzc4LDI2IEBAIHZvaWQgR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6
ZGlkUmVjZWl2ZUludmFsaWRNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjCiAgICAgQ1JB
U0goKTsKIH0KIAordm9pZCBHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpkaWRSZWNlaXZlTWVz
c2FnZShJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIElQQzo6RGVjb2RlciYgZGVjb2RlcikK
K3sKKyAgICBpZiAoZGVjb2Rlci5tZXNzYWdlUmVjZWl2ZXJOYW1lKCkgPT0gTWVzc2FnZXM6OlJl
bW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5OjptZXNzYWdlUmVjZWl2ZXJOYW1lKCkpIHsKKyAg
ICAgICAgaWYgKG1fcmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHkpCisgICAgICAgICAgICBt
X3JlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5LT5kaWRSZWNlaXZlTWVzc2FnZUZyb21XZWJQ
cm9jZXNzKGNvbm5lY3Rpb24sIGRlY29kZXIpOworICAgICAgICByZXR1cm47CisgICAgfQorfQor
Cit2b2lkIEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmRpZFJlY2VpdmVTeW5jTWVzc2FnZShJ
UEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIElQQzo6RGVjb2RlciYgZGVjb2Rlciwgc3RkOjp1
bmlxdWVfcHRyPElQQzo6RW5jb2Rlcj4mIHJlcGx5RW5jb2RlcikKK3sKKyAgICBpZiAoZGVjb2Rl
ci5tZXNzYWdlUmVjZWl2ZXJOYW1lKCkgPT0gTWVzc2FnZXM6OlJlbW90ZU1lZGlhUGxheWVyTWFu
YWdlclByb3h5OjptZXNzYWdlUmVjZWl2ZXJOYW1lKCkpIHsKKyAgICAgICAgaWYgKG1fcmVtb3Rl
TWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHkpCisgICAgICAgICAgICBtX3JlbW90ZU1lZGlhUGxheWVy
TWFuYWdlclByb3h5LT5kaWRSZWNlaXZlU3luY01lc3NhZ2VGcm9tV2ViUHJvY2Vzcyhjb25uZWN0
aW9uLCBkZWNvZGVyLCByZXBseUVuY29kZXIpOworICAgICAgICByZXR1cm47CisgICAgfQorCisg
ICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAogCiAj
ZW5kaWYgLy8gRU5BQkxFKEdQVV9QUk9DRVNTKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9H
UFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaCBiL1NvdXJjZS9XZWJLaXQvR1BV
UHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgKaW5kZXggYzY0YTQzZTY0YWY1MTBj
MDc0ZDcwODZmN2I2NDZmYTZjNmE0ZjQ2Ny4uODYyNWIzY2I2OTJiMDczNThjYTlmODYxMTM2N2I3
NTk2NTUyMjVmNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQVUNvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3MuaAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BVQ29u
bmVjdGlvblRvV2ViUHJvY2Vzcy5oCkBAIC0zNSw2ICszNSw3IEBACiBuYW1lc3BhY2UgV2ViS2l0
IHsKIAogY2xhc3MgR1BVUHJvY2VzczsKK2NsYXNzIFJlbW90ZU1lZGlhUGxheWVyTWFuYWdlclBy
b3h5OwogCiBjbGFzcyBHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzCiAgICAgOiBwdWJsaWMgUmVm
Q291bnRlZDxHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzPgpAQCAtNTcsMTAgKzU4LDEzIEBAIHBy
aXZhdGU6CiAgICAgLy8gSVBDOjpDb25uZWN0aW9uOjpDbGllbnQKICAgICB2b2lkIGRpZENsb3Nl
KElQQzo6Q29ubmVjdGlvbiYpIG92ZXJyaWRlOwogICAgIHZvaWQgZGlkUmVjZWl2ZUludmFsaWRN
ZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6U3RyaW5nUmVmZXJlbmNlIG1lc3NhZ2VSZWNl
aXZlck5hbWUsIElQQzo6U3RyaW5nUmVmZXJlbmNlIG1lc3NhZ2VOYW1lKSBvdmVycmlkZTsKKyAg
ICB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYp
IG92ZXJyaWRlOworICAgIHZvaWQgZGlkUmVjZWl2ZVN5bmNNZXNzYWdlKElQQzo6Q29ubmVjdGlv
biYsIElQQzo6RGVjb2RlciYsIHN0ZDo6dW5pcXVlX3B0cjxJUEM6OkVuY29kZXI+Jikgb3ZlcnJp
ZGU7CiAKICAgICBSZWY8SVBDOjpDb25uZWN0aW9uPiBtX2Nvbm5lY3Rpb247CiAgICAgUmVmPEdQ
VVByb2Nlc3M+IG1fZ3B1UHJvY2VzczsKICAgICBjb25zdCBXZWJDb3JlOjpQcm9jZXNzSWRlbnRp
ZmllciBtX3dlYlByb2Nlc3NJZGVudGlmaWVyOworICAgIHN0ZDo6dW5pcXVlX3B0cjxSZW1vdGVN
ZWRpYVBsYXllck1hbmFnZXJQcm94eT4gbV9yZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eTsK
IH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9H
UFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5LmNwcCBiL1NvdXJj
ZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eS5j
cHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNmEyMjk3MjQyYzkyZmVlN2Q1NzY2YTUxMDgyMzRjMmQ5Yzc0ZTE4Mgot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVN
ZWRpYVBsYXllck1hbmFnZXJQcm94eS5jcHAKQEAgLTAsMCArMSwxNDQgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENP
TlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICog
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAq
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2Vy
UHJveHkuaCIKKworI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykKKworI2luY2x1ZGUgIkdQVUNvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3MuaCIKKyNpbmNsdWRlICJSZW1vdGVNZWRpYVBsYXllck1hbmFnZXJN
ZXNzYWdlcy5oIgorI2luY2x1ZGUgIlJlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5TWVzc2Fn
ZXMuaCIKKyNpbmNsdWRlICJXZWJDb3JlQXJndW1lbnRDb2RlcnMuaCIKKyNpbmNsdWRlIDxXZWJD
b3JlL01lZGlhUGxheWVyLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9NZWRpYVBsYXllclByaXZhdGUu
aD4KKyNpbmNsdWRlIDx3dGYvVW5pcXVlUmVmLmg+CisKKyNkZWZpbmUgTUVTU0FHRV9DSEVDS19D
T05URVhUSUQoaWRlbnRpZmllcikgTUVTU0FHRV9DSEVDS19CQVNFKG1fcHJveGllcy5pc1ZhbGlk
S2V5KGlkZW50aWZpZXIpLCAmbV93ZWJQcm9jZXNzQ29ubmVjdGlvbi5jb25uZWN0aW9uKCkpCisK
K25hbWVzcGFjZSBXZWJLaXQgewordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CisKKyNpZiAhUkVM
RUFTRV9MT0dfRElTQUJMRUQKK3N0YXRpYyBSZWZQdHI8TG9nZ2VyPiYgbnVsbExvZ2dlcigpCit7
CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFJlZlB0cjxMb2dnZXI+PiBsb2dnZXI7CisgICAg
cmV0dXJuIGxvZ2dlcjsKK30KKyNlbmRpZgorCitjbGFzcyBSZW1vdGVNZWRpYVBsYXllck1hbmFn
ZXJQcm94eTo6UGxheWVyUHJveHkKKyAgICA6IHB1YmxpYyBNZWRpYVBsYXllckNsaWVudCB7Cisg
ICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CitwdWJsaWM6CisgICAgUGxheWVyUHJveHkoY29u
c3QgTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlSWRlbnRpZmllciYgaWQsIFJlZjxJUEM6OkNvbm5l
Y3Rpb24+JiYgY29ubmVjdGlvbiwgY29uc3QgU3RyaW5nJiByZW1vdGVFbmdpbmVJZGVudGlmaWVy
KQorICAgICAgICA6IG1faWQoaWQpCisgICAgICAgICwgbV9jb25uZWN0aW9uKFdURk1vdmUoY29u
bmVjdGlvbikpCisgICAgICAgICwgbV9yZW1vdGVFbmdpbmVJZGVudGlmaWVyKHJlbW90ZUVuZ2lu
ZUlkZW50aWZpZXIpCisgICAgeworICAgIH0KKworICAgIHZpcnR1YWwgflBsYXllclByb3h5KCkK
KyAgICB7CisgICAgfQorCitwcml2YXRlOgorCisgICAgLy8gTWVkaWFQbGF5ZXJDbGllbnQKKyAg
ICBjb25zdCBWZWN0b3I8V2ViQ29yZTo6Q29udGVudFR5cGU+JiBtZWRpYUNvbnRlbnRUeXBlc1Jl
cXVpcmluZ0hhcmR3YXJlU3VwcG9ydCgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fdHlwZXNSZXF1
aXJpbmdIYXJkd2FyZVN1cHBvcnQ7IH0KKworI2lmICFSRUxFQVNFX0xPR19ESVNBQkxFRAorICAg
IGNvbnN0IExvZ2dlciYgbWVkaWFQbGF5ZXJMb2dnZXIoKSBmaW5hbAorICAgIHsKKyAgICAgICAg
aWYgKCFudWxsTG9nZ2VyKCkuZ2V0KCkpIHsKKyAgICAgICAgICAgIG51bGxMb2dnZXIoKSA9IExv
Z2dlcjo6Y3JlYXRlKHRoaXMpOworICAgICAgICAgICAgbnVsbExvZ2dlcigpLT5zZXRFbmFibGVk
KHRoaXMsIGZhbHNlKTsKKyAgICAgICAgfQorCisgICAgICAgIHJldHVybiAqbnVsbExvZ2dlcigp
LmdldCgpOworICAgIH0KKyNlbmRpZgorCitwcm90ZWN0ZWQ6CisgICAgTWVkaWFQbGF5ZXJQcml2
YXRlUmVtb3RlSWRlbnRpZmllciBtX2lkOworICAgIFJlZjxJUEM6OkNvbm5lY3Rpb24+IG1fY29u
bmVjdGlvbjsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8TWVkaWFQbGF5ZXJQcml2YXRlSW50ZXJmYWNl
PiBtX3BsYXllcjsKKyAgICBTdHJpbmcgbV9yZW1vdGVFbmdpbmVJZGVudGlmaWVyOworICAgIFZl
Y3RvcjxXZWJDb3JlOjpDb250ZW50VHlwZT4gbV90eXBlc1JlcXVpcmluZ0hhcmR3YXJlU3VwcG9y
dDsKK307CisKK1JlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5OjpSZW1vdGVNZWRpYVBsYXll
ck1hbmFnZXJQcm94eShHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzJiBjb25uZWN0aW9uKQorICAg
IDogbV93ZWJQcm9jZXNzQ29ubmVjdGlvbihjb25uZWN0aW9uKQoreworfQorCitSZW1vdGVNZWRp
YVBsYXllck1hbmFnZXJQcm94eTo6flJlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5KCkKK3sK
K30KKwordm9pZCBSZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eTo6Y3JlYXRlTWVkaWFQbGF5
ZXIoY29uc3QgTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlSWRlbnRpZmllciYgaWQsIGNvbnN0IFN0
cmluZyYmIHJlbW90ZUVuZ2luZUlkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9v
bCBzdWNjZWVkZWQpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQoreworICAgIE1FU1NBR0VfQ0hFQ0tf
Q09OVEVYVElEKGlkKTsKKworICAgIEFTU0VSVCghbV9wcm94aWVzLmNvbnRhaW5zKGlkKSk7Cisg
ICAgbV9wcm94aWVzLmFkZChpZCwgbWFrZVVuaXF1ZTxQbGF5ZXJQcm94eT4oaWQsIG1fd2ViUHJv
Y2Vzc0Nvbm5lY3Rpb24uY29ubmVjdGlvbigpLCByZW1vdGVFbmdpbmVJZGVudGlmaWVyKSk7CisK
KyAgICBjb21wbGV0aW9uSGFuZGxlcih0cnVlKTsKK30KKwordm9pZCBSZW1vdGVNZWRpYVBsYXll
ck1hbmFnZXJQcm94eTo6Z2V0U3VwcG9ydGVkVHlwZXMoY29uc3QgU3RyaW5nJiYsIENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoVmVjdG9yPFN0cmluZz4mJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCit7
CisgICAgLy8gRklYTUU6IHF1ZXJ5IHRoZSBhcHByb3ByaWF0ZSBtZWRpYSBlbmdpbmUKKyAgICBj
b21wbGV0aW9uSGFuZGxlcih7ICJ2aWRlby9tcDQiLCAiYXVkaW8vbXA0IiB9KTsKK30KKwordm9p
ZCBSZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eTo6c3VwcG9ydHNUeXBlKGNvbnN0IFN0cmlu
ZyYmLCBjb25zdCBXZWJDb3JlOjpNZWRpYUVuZ2luZVN1cHBvcnRQYXJhbWV0ZXJzJiYsIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoaW50KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyAgICBjb21w
bGV0aW9uSGFuZGxlcigxKTsKK30KKwordm9pZCBSZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94
eTo6b3JpZ2luc0luTWVkaWFDYWNoZShjb25zdCBTdHJpbmcmJiwgY29uc3QgU3RyaW5nJiYsIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoVmVjdG9yPFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YT4m
Jik+JiYgY29tcGxldGlvbkhhbmRsZXIpCit7CisgICAgY29tcGxldGlvbkhhbmRsZXIoeyB9KTsK
K30KKwordm9pZCBSZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eTo6Y2xlYXJNZWRpYUNhY2hl
KGNvbnN0IFN0cmluZyYmLCBjb25zdCBTdHJpbmcmJiwgV2FsbFRpbWUpCit7Cit9CisKK3ZvaWQg
UmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHk6OmNsZWFyTWVkaWFDYWNoZUZvck9yaWdpbnMo
Y29uc3QgU3RyaW5nJiYsIGNvbnN0IFN0cmluZyYmLCBWZWN0b3I8V2ViQ29yZTo6U2VjdXJpdHlP
cmlnaW5EYXRhPiYmKQoreworfQorCit2b2lkIFJlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5
OjpzdXBwb3J0c0tleVN5c3RlbShjb25zdCBTdHJpbmcmJiwgY29uc3QgU3RyaW5nJiYsIGNvbnN0
IFN0cmluZyYmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmIGNvbXBsZXRpb25IYW5k
bGVyKQoreworICAgIGNvbXBsZXRpb25IYW5kbGVyKHsgfSk7Cit9CisKK30KKworI3VuZGVmIE1F
U1NBR0VfQ0hFQ0tfQ09OVEVYVElECisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5LmggYi9Tb3Vy
Y2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHku
aApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi5kMTllZDM1ZGRiMDlhODVmMTdkNGY5ZTcyODA3Mjc4OGRhMTMzZTQ0Ci0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1l
ZGlhUGxheWVyTWFuYWdlclByb3h5LmgKQEAgLTAsMCArMSw3NCBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJ
QlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElU
UyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNw
cmFnbWEgb25jZQorCisjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKQorCisjaW5jbHVkZSAiQ29ubmVj
dGlvbi5oIgorI2luY2x1ZGUgIk1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZUlkZW50aWZpZXIuaCIK
KyNpbmNsdWRlICJNZXNzYWdlUmVjZWl2ZXIuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL01lZGlhUGxh
eWVyLmg+CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBHUFVDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzOworCitjbGFzcyBSZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eSA6IHByaXZhdGUg
SVBDOjpNZXNzYWdlUmVjZWl2ZXIgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOworcHVi
bGljOgorICAgIGV4cGxpY2l0IFJlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5KEdQVUNvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3MmKTsKKyAgICB+UmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHko
KTsKKworICAgIEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MmIHdlYlByb2Nlc3NDb25uZWN0aW9u
KCkgY29uc3QgeyByZXR1cm4gbV93ZWJQcm9jZXNzQ29ubmVjdGlvbjsgfQorICAgIHZvaWQgY2xl
YXIoKTsKKworICAgIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2VGcm9tV2ViUHJvY2VzcyhJUEM6OkNv
bm5lY3Rpb24mIGNvbm5lY3Rpb24sIElQQzo6RGVjb2RlciYgZGVjb2RlcikgeyBkaWRSZWNlaXZl
TWVzc2FnZShjb25uZWN0aW9uLCBkZWNvZGVyKTsgfQorICAgIHZvaWQgZGlkUmVjZWl2ZVN5bmNN
ZXNzYWdlRnJvbVdlYlByb2Nlc3MoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBJUEM6OkRl
Y29kZXImIGRlY29kZXIsIHN0ZDo6dW5pcXVlX3B0cjxJUEM6OkVuY29kZXI+JiBlbmNvZGVyKSB7
IGRpZFJlY2VpdmVTeW5jTWVzc2FnZShjb25uZWN0aW9uLCBkZWNvZGVyLCBlbmNvZGVyKTsgfQor
cHJpdmF0ZToKKyAgICAvLyBJUEM6Ok1lc3NhZ2VSZWNlaXZlcgorICAgIHZvaWQgZGlkUmVjZWl2
ZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJikgZmluYWw7CisgICAgdm9p
ZCBkaWRSZWNlaXZlU3luY01lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJiwg
c3RkOjp1bmlxdWVfcHRyPElQQzo6RW5jb2Rlcj4mKSBmaW5hbDsKKworICAgIHZvaWQgY3JlYXRl
TWVkaWFQbGF5ZXIoY29uc3QgTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlSWRlbnRpZmllciYsIGNv
bnN0IFN0cmluZyYmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKTsKKworICAgIHZv
aWQgZ2V0U3VwcG9ydGVkVHlwZXMoY29uc3QgU3RyaW5nJiYsIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoVmVjdG9yPFN0cmluZz4mJik+JiYpOworICAgIHZvaWQgc3VwcG9ydHNUeXBlKGNvbnN0IFN0
cmluZyYmLCBjb25zdCBXZWJDb3JlOjpNZWRpYUVuZ2luZVN1cHBvcnRQYXJhbWV0ZXJzJiYsIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoaW50KT4mJik7CisKKyAgICB2b2lkIG9yaWdpbnNJbk1lZGlh
Q2FjaGUoY29uc3QgU3RyaW5nJiYsIGNvbnN0IFN0cmluZyYmLCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKFZlY3RvcjxXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGE+JiYpPiYmKTsKKyAgICB2b2lk
IGNsZWFyTWVkaWFDYWNoZShjb25zdCBTdHJpbmcmJiwgY29uc3QgU3RyaW5nJiYsIFdhbGxUaW1l
KTsKKyAgICB2b2lkIGNsZWFyTWVkaWFDYWNoZUZvck9yaWdpbnMoY29uc3QgU3RyaW5nJiYsIGNv
bnN0IFN0cmluZyYmLCBWZWN0b3I8V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhPiYmKTsKKyAg
ICB2b2lkIHN1cHBvcnRzS2V5U3lzdGVtKGNvbnN0IFN0cmluZyYmLCBjb25zdCBTdHJpbmcmJiwg
Y29uc3QgU3RyaW5nJiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpOworCisKKyAg
ICBjbGFzcyBQbGF5ZXJQcm94eTsKKyAgICBmcmllbmQgY2xhc3MgUGxheWVyUHJveHk7CisgICAg
SGFzaE1hcDxNZWRpYVBsYXllclByaXZhdGVSZW1vdGVJZGVudGlmaWVyLCBzdGQ6OnVuaXF1ZV9w
dHI8UGxheWVyUHJveHk+PiBtX3Byb3hpZXM7CisgICAgR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vz
cyYgbV93ZWJQcm9jZXNzQ29ubmVjdGlvbjsKK307CisKK30KKworI2VuZGlmCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2Vy
UHJveHkubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3Rl
TWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHkubWVzc2FnZXMuaW4KbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOWIzNmUyNTEy
ZjlhNDk5YTRjYjE1MTE4YjQwOGRmMTEzZTI0OGZlYgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eS5t
ZXNzYWdlcy5pbgpAQCAtMCwwICsxLDM3IEBACisjIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyMg
YXJlIG1ldDoKKyMgMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisjICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyMgQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisjIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyMgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisjIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IK
KyMgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YKKyMgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisjIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisjIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpCisjIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyMgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorCisjaWYgRU5BQkxFKFZJREVPKQorCittZXNzYWdlcyAtPiBSZW1vdGVNZWRpYVBs
YXllck1hbmFnZXJQcm94eSBOb3RSZWZDb3VudGVkIHsKKyAgICBDcmVhdGVNZWRpYVBsYXllcihX
ZWJLaXQ6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZUlkZW50aWZpZXIgaWQsIFN0cmluZyByZW1v
dGVFbmdpbmVJZGVudGlmaWVyKSAtPiAoYm9vbCBzdWNjZXNzKSBTeW5jaHJvbm91cworCisgICAg
R2V0U3VwcG9ydGVkVHlwZXMoU3RyaW5nIHJlbW90ZUVuZ2luZUlkZW50aWZpZXIpIC0+IChWZWN0
b3I8U3RyaW5nPiB0eXBlcykgU3luY2hyb25vdXMKKyAgICBTdXBwb3J0c1R5cGUoU3RyaW5nIHJl
bW90ZUVuZ2luZUlkZW50aWZpZXIsIHN0cnVjdCBXZWJDb3JlOjpNZWRpYUVuZ2luZVN1cHBvcnRQ
YXJhbWV0ZXJzIHR5cGUpIC0+IChpbnQgc3VwcG9ydCkgU3luY2hyb25vdXMKKyAgICBPcmlnaW5z
SW5NZWRpYUNhY2hlKFN0cmluZyByZW1vdGVFbmdpbmVJZGVudGlmaWVyLCBTdHJpbmcgcGF0aCkg
LT4gKFZlY3RvcjxXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGE+IG9yaWdpbnMpIFN5bmNocm9u
b3VzCisgICAgQ2xlYXJNZWRpYUNhY2hlKFN0cmluZyByZW1vdGVFbmdpbmVJZGVudGlmaWVyLCBT
dHJpbmcgcGF0aCwgV2FsbFRpbWUgbW9kaWZpZWRTaW5jZSkKKyAgICBDbGVhck1lZGlhQ2FjaGVG
b3JPcmlnaW5zKFN0cmluZyByZW1vdGVFbmdpbmVJZGVudGlmaWVyLCBTdHJpbmcgcGF0aCwgVmVj
dG9yPFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YT4gb3JpZ2lucykKKyAgICBTdXBwb3J0c0tl
eVN5c3RlbShTdHJpbmcgcmVtb3RlRW5naW5lSWRlbnRpZmllciwgU3RyaW5nIGtleVN5c3RlbSwg
U3RyaW5nIG1pbWVUeXBlKSAtPiAoYm9vbCBzdXBwb3J0cykgU3luY2hyb25vdXMKK30KKworI2Vu
ZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5
IGIvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5weQppbmRleCBlZDExYWMy
NzI1MjI2ZTQ3YTJiNTZiY2M5ZWNmMjIyZGFjMDAwOWFlLi5mMmU5ZWQ3YWI1NDAyZWY1MTE4OGY3
ZThkYmUzOTZiYThhY2UwZmFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Vi
a2l0L21lc3NhZ2VzLnB5CisrKyBiL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvbWVzc2Fn
ZXMucHkKQEAgLTEsNCArMSw0IEBACi0jIENvcHlyaWdodCAoQykgMjAxMC0yMDE4IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMgQ29weXJpZ2h0IChDKSAyMDEwLTIwMTkgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogIwogIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICMgbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBA
IC0yMTksMTAgKzIxOSwxMSBAQCBkZWYgdHlwZXNfdGhhdF9jYW5ub3RfYmVfZm9yd2FyZF9kZWNs
YXJlZCgpOgogICAgICAgICAnV2ViQ29yZTo6U1dTZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllcics
CiAgICAgICAgICdXZWJLaXQ6OkFjdGl2aXR5U3RhdGVDaGFuZ2VJRCcsCiAgICAgICAgICdXZWJL
aXQ6OkxheWVySG9zdGluZ0NvbnRleHRJRCcsCi0gICAgICAgICdXZWJLaXQ6OlRyYW5zYWN0aW9u
SUQnLAorICAgICAgICAnV2ViS2l0OjpNZWRpYVBsYXllclByaXZhdGVSZW1vdGVJZGVudGlmaWVy
JywKICAgICAgICAgJ1dlYktpdDo6U3RvcmFnZUFyZWFJZGVudGlmaWVyJywKICAgICAgICAgJ1dl
YktpdDo6U3RvcmFnZUFyZWFJbXBsSWRlbnRpZmllcicsCiAgICAgICAgICdXZWJLaXQ6OlN0b3Jh
Z2VOYW1lc3BhY2VJZGVudGlmaWVyJywKKyAgICAgICAgJ1dlYktpdDo6VHJhbnNhY3Rpb25JRCcs
CiAgICAgICAgICdXZWJLaXQ6OlVzZXJDb250ZW50Q29udHJvbGxlcklkZW50aWZpZXInLAogICAg
ICAgICAnV2ViS2l0OjpXZWJQYWdlUHJveHlJZGVudGlmaWVyJywKICAgICBdKQpAQCAtNjAzLDYg
KzYwNCw3IEBAIGRlZiBoZWFkZXJzX2Zvcl90eXBlKHR5cGUpOgogICAgICAgICAnV2ViS2l0OjpX
ZWJNb3VzZUV2ZW50JzogWyciV2ViRXZlbnQuaCInXSwKICAgICAgICAgJ1dlYktpdDo6V2ViVG91
Y2hFdmVudCc6IFsnIldlYkV2ZW50LmgiJ10sCiAgICAgICAgICdXZWJLaXQ6OldlYldoZWVsRXZl
bnQnOiBbJyJXZWJFdmVudC5oIiddLAorICAgICAgICAnV2ViQ29yZTo6TWVkaWFFbmdpbmVTdXBw
b3J0UGFyYW1ldGVycyc6IFsnPFdlYkNvcmUvTWVkaWFQbGF5ZXIuaD4nXSwKICAgICAgICAgJ3N0
cnVjdCBXZWJDb3JlOjpFbGVtZW50Q29udGV4dCc6IFsnPFdlYkNvcmUvRWxlbWVudENvbnRleHQu
aD4nXSwKICAgICAgICAgJ3N0cnVjdCBXZWJLaXQ6OldlYlVzZXJTY3JpcHREYXRhJzogWyciV2Vi
VXNlckNvbnRlbnRDb250cm9sbGVyRGF0YVR5cGVzLmgiJ10sCiAgICAgICAgICdzdHJ1Y3QgV2Vi
S2l0OjpXZWJVc2VyU3R5bGVTaGVldERhdGEnOiBbJyJXZWJVc2VyQ29udGVudENvbnRyb2xsZXJE
YXRhVHlwZXMuaCInXSwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU291cmNlcy50eHQgYi9T
b3VyY2UvV2ViS2l0L1NvdXJjZXMudHh0CmluZGV4IDczZmY0ZDI3YmVlM2Q4MmExMTQ2NzE3NDky
YmNiNjY0NTIzNWI2NDIuLmIyMzg0ODQ4NTMzODc4YTBkN2Y3NjZlODE3MzZlMTg2NDE5ZmVlMGEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU291cmNlcy50eHQKKysrIGIvU291cmNlL1dlYktp
dC9Tb3VyY2VzLnR4dApAQCAtNDk5LDYgKzQ5OSw4IEBAIFdlYlByb2Nlc3MvTWVkaWFTdHJlYW0v
TWVkaWFEZXZpY2VTYW5kYm94RXh0ZW5zaW9ucy5jcHAKIFdlYlByb2Nlc3MvTWVkaWFTdHJlYW0v
VXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyLmNwcAogCiBXZWJQcm9jZXNzL0dQVS9H
UFVQcm9jZXNzQ29ubmVjdGlvbi5jcHAKK1dlYlByb2Nlc3MvR1BVL21lZGlhL01lZGlhUGxheWVy
UHJpdmF0ZVJlbW90ZS5jcHAKK1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZU1lZGlhUGxheWVy
TWFuYWdlci5jcHAKIAogV2ViUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzQ29ubmVjdGlv
bi5jcHAKIFdlYlByb2Nlc3MvTmV0d29yay9XZWJMb2FkZXJTdHJhdGVneS5jcHAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvU291cmNlc0NvY29hLnR4dCBiL1NvdXJjZS9XZWJLaXQvU291cmNl
c0NvY29hLnR4dAppbmRleCA5ZDI0MmUyYTA2NGRmZjcyZjQ5YzQyZjU0ZDk3ODEzY2FkOTRkOTJj
Li5kOTQ4M2QwYTEzOWEwMGFkYWQ3N2ZhODM3ZWNjNzNlYzE3OGI5YzNmIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1NvdXJjZXNDb2NvYS50eHQKKysrIGIvU291cmNlL1dlYktpdC9Tb3VyY2Vz
Q29jb2EudHh0CkBAIC01OSw2ICs1OSw3IEBAIE5ldHdvcmtQcm9jZXNzL3dlYnJ0Yy9OZXR3b3Jr
UlRDU29ja2V0LmNwcAogCiBHUFVQcm9jZXNzL2lvcy9HUFVQcm9jZXNzSU9TLm1tCiBHUFVQcm9j
ZXNzL21hYy9HUFVQcm9jZXNzTWFjLm1tCitHUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUGxh
eWVyTWFuYWdlclByb3h5LmNwcAogR1BVUHJvY2Vzcy9FbnRyeVBvaW50L0NvY29hL1hQQ1NlcnZp
Y2UvR1BVU2VydmljZUVudHJ5UG9pbnQubW0KIAogUGxhdGZvcm0vY2YvTW9kdWxlQ0YuY3BwCkBA
IC02MjQsNSArNjI1LDcgQEAgRWRpdGFibGVJbWFnZUNvbnRyb2xsZXJNZXNzYWdlUmVjZWl2ZXIu
Y3BwCiBHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzTWVzc2FnZVJlY2VpdmVyLmNwcAogR1BVUHJv
Y2Vzc1Byb3h5TWVzc2FnZVJlY2VpdmVyLmNwcAogR1BVUHJvY2Vzc01lc3NhZ2VSZWNlaXZlci5j
cHAKKy8vUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyTWVzc2FnZVJlY2VpdmVyLmNwcAorLy9SZW1v
dGVNZWRpYVBsYXllck1hbmFnZXJQcm94eU1lc3NhZ2VSZWNlaXZlci5jcHAKIFNlcnZpY2VXb3Jr
ZXJGZXRjaFRhc2tNZXNzYWdlUmVjZWl2ZXIuY3BwCiBUZXh0Q2hlY2tpbmdDb250cm9sbGVyUHJv
eHlNZXNzYWdlUmVjZWl2ZXIuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYktpdC54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvagppbmRleCBmNzlkZGMxMjA0MGYyYmY3OTI0MGNjYTU1ZWY5ODkzMGI1
MDA3NTM0Li5lY2U5MGQ1NzUyZDQ3ZDcxYWIwNTU1ZmNhOTZkNjYxN2VlNzRlMTEwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBi
L1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTkxLDYg
KzkxLDEzIEBACiAJCTA3NEU3NUZFMURGMjIxMTkwMEQzMThFQyAvKiBVc2VyTWVkaWFQcm9jZXNz
TWFuYWdlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
MDc0RTc1RkIxREYxRkQxMzAwRDMxOEVDIC8qIFVzZXJNZWRpYVByb2Nlc3NNYW5hZ2VyLmggKi87
IH07CiAJCTA3NkU4ODRFMUExM0NBREYwMDVFOTBGQyAvKiBBUElDb250ZXh0TWVudUNsaWVudC5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDc2RTg4NEQx
QTEzQ0FERjAwNUU5MEZDIC8qIEFQSUNvbnRleHRNZW51Q2xpZW50LmggKi87IH07CiAJCTA3NzI4
MTFEMjEyMzRGRjYwMEM4RUYyRSAvKiBVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXIu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDRBNDEwRjQz
MTlBRjdCMjcwMDJFQkFCNSAvKiBVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXIuaCAq
LzsgfTsKKwkJMDc5MjMxNDgyMzlDQkNCODAwOTU5OEUyIC8qIFJlbW90ZU1lZGlhUGxheWVyTWFu
YWdlclByb3h5TWVzc2FnZXNSZXBsaWVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSAwNzkyMzE0MjIzOUNCQ0I1MDA5NTk4RTIgLyogUmVtb3RlTWVkaWFQ
bGF5ZXJNYW5hZ2VyUHJveHlNZXNzYWdlc1JlcGxpZXMuaCAqLzsgfTsKKwkJMDc5MjMxNDkyMzlD
QkNCODAwOTU5OEUyIC8qIFJlbW90ZU1lZGlhUGxheWVyTWFuYWdlck1lc3NhZ2VSZWNlaXZlci5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwNzkyMzE0
MzIzOUNCQ0I2MDA5NTk4RTIgLyogUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyTWVzc2FnZVJlY2Vp
dmVyLmNwcCAqLzsgfTsKKwkJMDc5MjMxNEEyMzlDQkNCODAwOTU5OEUyIC8qIFJlbW90ZU1lZGlh
UGxheWVyTWFuYWdlck1lc3NhZ2VzUmVwbGllcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gMDc5MjMxNDQyMzlDQkNCNjAwOTU5OEUyIC8qIFJlbW90ZU1l
ZGlhUGxheWVyTWFuYWdlck1lc3NhZ2VzUmVwbGllcy5oICovOyB9OworCQkwNzkyMzE0QjIzOUNC
Q0I4MDA5NTk4RTIgLyogUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHlNZXNzYWdlUmVjZWl2
ZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDc5
MjMxNDUyMzlDQkNCNzAwOTU5OEUyIC8qIFJlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5TWVz
c2FnZVJlY2VpdmVyLmNwcCAqLzsgfTsKKwkJMDc5MjMxNEMyMzlDQkNCODAwOTU5OEUyIC8qIFJl
bW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5TWVzc2FnZXMuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3OTIzMTQ2MjM5Q0JDQjcwMDk1OThFMiAvKiBS
ZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eU1lc3NhZ2VzLmggKi87IH07CisJCTA3OTIzMTRE
MjM5Q0JDQjgwMDk1OThFMiAvKiBSZW1vdGVNZWRpYVBsYXllck1hbmFnZXJNZXNzYWdlcy5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDc5MjMxNDcyMzlD
QkNCNzAwOTU5OEUyIC8qIFJlbW90ZU1lZGlhUGxheWVyTWFuYWdlck1lc3NhZ2VzLmggKi87IH07
CisJCTA3OTIzMTRGMjM5RDYyM0UwMDk1OThFMiAvKiBNZWRpYVBsYXllclByaXZhdGVSZW1vdGVJ
ZGVudGlmaWVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSAwNzkyMzE0RTIzOUQ1RjUzMDA5NTk4RTIgLyogTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlSWRl
bnRpZmllci5oICovOyB9OwogCQkwN0E1RUJCQzFDN0JBNDNFMDBCOUNBNjkgLyogV0tGcmFtZUhh
bmRsZVJlZi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
MDdBNUVCQkExQzdCQTQzRTAwQjlDQTY5IC8qIFdLRnJhbWVIYW5kbGVSZWYuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkwRTk3RDc0RDIwMEU5MDA0
MDBCRjY2NDMgLyogU2FmZUJyb3dzaW5nU1BJLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSAwRTk3RDc0QzIwMEU4RkYzMDBCRjY2NDMgLyogU2FmZUJyb3dz
aW5nU1BJLmggKi87IH07CiAJCTBFREU4NTAzMjAwNEU3NUQwMDAzMDU2MCAvKiBXZWJzaXRlUG9w
VXBQb2xpY3kuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDBFREU4NTAyMjAwNEU3NDkwMDAzMDU2MCAvKiBXZWJzaXRlUG9wVXBQb2xpY3kuaCAqLzsgfTsK
QEAgLTE5OTYsNiArMjAwMyw5IEBACiAJCTAwQjk2NjE1MThFMjRDQkEwMENFMUY4OCAvKiBBUElG
aW5kQ2xpZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEFQSUZpbmRDbGll
bnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMDBCOTY2MTcxOEUyNUFFMTAwQ0Ux
Rjg4IC8qIEZpbmRDbGllbnQubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBh
dGggPSBGaW5kQ2xpZW50Lm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwMEI5NjYx
ODE4RTI1QUUxMDBDRTFGODggLyogRmluZENsaWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBGaW5kQ2xpZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTA3
MjVFRkFCMjM5QUUzODQwMEE1MzhBOSAvKiBSZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eS5t
ZXNzYWdlcy5pbiAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHRleHQ7IHBhdGggPSBSZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eS5tZXNzYWdlcy5p
bjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMDcyNUVGQUMyMzlBRTM4NTAwQTUzOEE5
IC8qIFJlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlbW90
ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CTA3MjVFRkFEMjM5QjAyNDUwMEE1MzhBOSAvKiBSZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94
eS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eS5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTA3Mjk3RjlDMUMxNzExRUEwMDNGMDcz
NSAvKiBEZXZpY2VJZEhhc2hTYWx0U3RvcmFnZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBEZXZpY2VJZEhhc2hTYWx0U3RvcmFnZS5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTA3Mjk3RjlDMUMxN0JCRUEwMDNGMDczNSAvKiBVc2VyTWVkaWFQZXJt
aXNzaW9uQ2hlY2tQcm94eS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBVc2VyTWVkaWFQZXJtaXNzaW9uQ2hlY2tQcm94eS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTA3Mjk3RjlEMUMxN0JCRUEwMDNGMDczNSAvKiBVc2VyTWVkaWFQZXJtaXNzaW9u
Q2hlY2tQcm94eS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBVc2VyTWVkaWFQ
ZXJtaXNzaW9uQ2hlY2tQcm94eS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMjAx
MCw2ICsyMDIwLDE4IEBACiAJCTA3NEU3NjAxMURGNzA3NUQwMEQzMThFQyAvKiBNZWRpYURldmlj
ZVNhbmRib3hFeHRlbnNpb25zLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1l
ZGlhRGV2aWNlU2FuZGJveEV4dGVuc2lvbnMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJMDc2RTg4NEQxQTEzQ0FERjAwNUU5MEZDIC8qIEFQSUNvbnRleHRNZW51Q2xpZW50LmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEFQSUNvbnRleHRNZW51Q2xpZW50Lmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTA3NkU4ODRGMUExM0NCQzYwMDVFOTBGQyAvKiBB
UElJbmplY3RlZEJ1bmRsZVBhZ2VDb250ZXh0TWVudUNsaWVudC5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBBUElJbmplY3RlZEJ1bmRsZVBhZ2VDb250ZXh0TWVudUNsaWVudC5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwNzkyMzEzMDIzOUIzQjBDMDA5NTk4RTIg
LyogUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJlbW90
ZU1lZGlhUGxheWVyTWFuYWdlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTA3
OTIzMTMxMjM5QjNCMEMwMDk1OThFMiAvKiBNZWRpYVBsYXllclByaXZhdGVSZW1vdGUuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMDc5MjMxMzIyMzlCM0IwQzAwOTU5OEUyIC8qIE1lZGlhUGxh
eWVyUHJpdmF0ZVJlbW90ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBNZWRpYVBsYXllclByaXZhdGVSZW1v
dGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMDc5MjMxMzMyMzlCM0IwQzAwOTU5
OEUyIC8qIFJlbW90ZU1lZGlhUGxheWVyTWFuYWdlci5tZXNzYWdlcy5pbiAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBSZW1vdGVN
ZWRpYVBsYXllck1hbmFnZXIubWVzc2FnZXMuaW47IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCTA3OTIzMTM0MjM5QjNCMEMwMDk1OThFMiAvKiBSZW1vdGVNZWRpYVBsYXllck1hbmFnZXIu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCTA3OTIzMTQyMjM5Q0JDQjUwMDk1OThFMiAvKiBSZW1vdGVNZWRp
YVBsYXllck1hbmFnZXJQcm94eU1lc3NhZ2VzUmVwbGllcy5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBSZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eU1lc3NhZ2VzUmVwbGll
cy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwNzkyMzE0MzIzOUNCQ0I2MDA5NTk4
RTIgLyogUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyTWVzc2FnZVJlY2VpdmVyLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJlbW90ZU1lZGlhUGxheWVyTWFuYWdlck1l
c3NhZ2VSZWNlaXZlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTA3OTIzMTQ0
MjM5Q0JDQjYwMDk1OThFMiAvKiBSZW1vdGVNZWRpYVBsYXllck1hbmFnZXJNZXNzYWdlc1JlcGxp
ZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVtb3RlTWVkaWFQbGF5ZXJN
YW5hZ2VyTWVzc2FnZXNSZXBsaWVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTA3
OTIzMTQ1MjM5Q0JDQjcwMDk1OThFMiAvKiBSZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eU1l
c3NhZ2VSZWNlaXZlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBS
ZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eU1lc3NhZ2VSZWNlaXZlci5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCTA3OTIzMTQ2MjM5Q0JDQjcwMDk1OThFMiAvKiBSZW1vdGVN
ZWRpYVBsYXllck1hbmFnZXJQcm94eU1lc3NhZ2VzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IFJlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5TWVzc2FnZXMuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMDc5MjMxNDcyMzlDQkNCNzAwOTU5OEUyIC8qIFJlbW90
ZU1lZGlhUGxheWVyTWFuYWdlck1lc3NhZ2VzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IFJlbW90ZU1lZGlhUGxheWVyTWFuYWdlck1lc3NhZ2VzLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCTA3OTIzMTRFMjM5RDVGNTMwMDk1OThFMiAvKiBNZWRpYVBsYXllclBy
aXZhdGVSZW1vdGVJZGVudGlmaWVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1lZGlhUGxheWVyUHJpdmF0
ZVJlbW90ZUlkZW50aWZpZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMDdBNUVC
QjkxQzdCQTQzRTAwQjlDQTY5IC8qIFdLRnJhbWVIYW5kbGVSZWYuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV0tGcmFtZUhhbmRsZVJlZi5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTA3QTVFQkJBMUM3QkE0M0UwMEI5Q0E2OSAvKiBXS0ZyYW1lSGFu
ZGxlUmVmLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdLRnJhbWVIYW5kbGVS
ZWYuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMDg2N0Q2QTVGRTg0MDMwN0MwMkFB
QzA3IC8qIEFwcEtpdC5mcmFtZXdvcmsgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFz
dEtub3duRmlsZVR5cGUgPSB3cmFwcGVyLmZyYW1ld29yazsgbmFtZSA9IEFwcEtpdC5mcmFtZXdv
cms7IHBhdGggPSAvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9BcHBLaXQuZnJhbWV3b3JrOyBz
b3VyY2VUcmVlID0gIjxhYnNvbHV0ZT4iOyB9OwpAQCAtNTAxMCw2ICs1MDMyLDI5IEBACiAJCQl0
YWJXaWR0aCA9IDg7CiAJCQl1c2VzVGFicyA9IDA7CiAJCX07CisJCTA3OTIzMTJGMjM5QjNCMEMw
MDk1OThFMiAvKiBtZWRpYSAqLyA9IHsKKwkJCWlzYSA9IFBCWEdyb3VwOworCQkJY2hpbGRyZW4g
PSAoCisJCQkJMDc5MjMxMzEyMzlCM0IwQzAwOTU5OEUyIC8qIE1lZGlhUGxheWVyUHJpdmF0ZVJl
bW90ZS5jcHAgKi8sCisJCQkJMDc5MjMxMzIyMzlCM0IwQzAwOTU5OEUyIC8qIE1lZGlhUGxheWVy
UHJpdmF0ZVJlbW90ZS5oICovLAorCQkJCTA3OTIzMTRFMjM5RDVGNTMwMDk1OThFMiAvKiBNZWRp
YVBsYXllclByaXZhdGVSZW1vdGVJZGVudGlmaWVyLmggKi8sCisJCQkJMDc5MjMxMzAyMzlCM0Iw
QzAwOTU5OEUyIC8qIFJlbW90ZU1lZGlhUGxheWVyTWFuYWdlci5jcHAgKi8sCisJCQkJMDc5MjMx
MzQyMzlCM0IwQzAwOTU5OEUyIC8qIFJlbW90ZU1lZGlhUGxheWVyTWFuYWdlci5oICovLAorCQkJ
CTA3OTIzMTMzMjM5QjNCMEMwMDk1OThFMiAvKiBSZW1vdGVNZWRpYVBsYXllck1hbmFnZXIubWVz
c2FnZXMuaW4gKi8sCisJCQkpOworCQkJcGF0aCA9IG1lZGlhOworCQkJc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsKKwkJfTsKKwkJMDdDNzVDMTcyMzk5QTNEQjAwODhFNjVCIC8qIG1lZGlhICovID0g
eworCQkJaXNhID0gUEJYR3JvdXA7CisJCQljaGlsZHJlbiA9ICgKKwkJCQkwNzI1RUZBRDIzOUIw
MjQ1MDBBNTM4QTkgLyogUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHkuY3BwICovLAorCQkJ
CTA3MjVFRkFDMjM5QUUzODUwMEE1MzhBOSAvKiBSZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94
eS5oICovLAorCQkJCTA3MjVFRkFCMjM5QUUzODQwMEE1MzhBOSAvKiBSZW1vdGVNZWRpYVBsYXll
ck1hbmFnZXJQcm94eS5tZXNzYWdlcy5pbiAqLywKKwkJCSk7CisJCQlwYXRoID0gbWVkaWE7CisJ
CQlzb3VyY2VUcmVlID0gIjxncm91cD4iOworCQl9OwogCQkwODY3RDY5MUZFODQwMjhGQzAyQUFD
MDcgLyogV2ViS2l0MiAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAo
CkBAIC02MTkyLDYgKzYyMzcsNyBAQAogCQkyRDdFNDNCRjIzNzUyQ0Q5MDBFQTVDQTAgLyogR1BV
ICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKKwkJCQkwNzkyMzEy
RjIzOUIzQjBDMDA5NTk4RTIgLyogbWVkaWEgKi8sCiAJCQkJMkQ3RTQzQzAyMzc1MkNEOTAwRUE1
Q0EwIC8qIEdQVVByb2Nlc3NDb25uZWN0aW9uLmNwcCAqLywKIAkJCQkyRDdFNDNDMzIzNzUyQ0Q5
MDBFQTVDQTAgLyogR1BVUHJvY2Vzc0Nvbm5lY3Rpb24uaCAqLywKIAkJCQkyRDdFNDNDMjIzNzUy
Q0Q5MDBFQTVDQTAgLyogR1BVUHJvY2Vzc0Nvbm5lY3Rpb24ubWVzc2FnZXMuaW4gKi8sCkBAIC02
MjA2LDYgKzYyNTIsNyBAQAogCQkJCTJEOUZCMjBEMjM3NTIwOUQwMDQ5RjkzNiAvKiBFbnRyeVBv
aW50ICovLAogCQkJCTJEOUZCMjA0MjM3NTIwOUQwMDQ5RjkzNiAvKiBpb3MgKi8sCiAJCQkJMkQ5
RkIyMDYyMzc1MjA5RDAwNDlGOTM2IC8qIG1hYyAqLywKKwkJCQkwN0M3NUMxNzIzOTlBM0RCMDA4
OEU2NUIgLyogbWVkaWEgKi8sCiAJCQkJMkQ5RkIyMEMyMzc1MjA5RDAwNDlGOTM2IC8qIEdQVUNv
bm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwICovLAogCQkJCTJEOUZCMjAwMjM3NTIwOUQwMDQ5Rjkz
NiAvKiBHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmggKi8sCiAJCQkJMkQ5RkIyMDkyMzc1MjA5
RDAwNDlGOTM2IC8qIEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MubWVzc2FnZXMuaW4gKi8sCkBA
IC05MTE4LDYgKzkxNjUsMTIgQEAKIAkJCQkxQThFRkE2RjEyNTJCODQxMDBGNzA2N0YgLyogUGx1
Z2luUHJveHlNZXNzYWdlcy5oICovLAogCQkJCTBGRjI0QTJCMTg3OUU0QkMwMDNBQkYwQyAvKiBS
ZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYVByb3h5TWVzc2FnZVJlY2VpdmVyLmNwcCAqLywKIAkJ
CQkwRkYyNEEyQzE4NzlFNEJDMDAzQUJGMEMgLyogUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWFQ
cm94eU1lc3NhZ2VzLmggKi8sCisJCQkJMDc5MjMxNDMyMzlDQkNCNjAwOTU5OEUyIC8qIFJlbW90
ZU1lZGlhUGxheWVyTWFuYWdlck1lc3NhZ2VSZWNlaXZlci5jcHAgKi8sCisJCQkJMDc5MjMxNDcy
MzlDQkNCNzAwOTU5OEUyIC8qIFJlbW90ZU1lZGlhUGxheWVyTWFuYWdlck1lc3NhZ2VzLmggKi8s
CisJCQkJMDc5MjMxNDQyMzlDQkNCNjAwOTU5OEUyIC8qIFJlbW90ZU1lZGlhUGxheWVyTWFuYWdl
ck1lc3NhZ2VzUmVwbGllcy5oICovLAorCQkJCTA3OTIzMTQ1MjM5Q0JDQjcwMDk1OThFMiAvKiBS
ZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eU1lc3NhZ2VSZWNlaXZlci5jcHAgKi8sCisJCQkJ
MDc5MjMxNDYyMzlDQkNCNzAwOTU5OEUyIC8qIFJlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5
TWVzc2FnZXMuaCAqLywKKwkJCQkwNzkyMzE0MjIzOUNCQ0I1MDA5NTk4RTIgLyogUmVtb3RlTWVk
aWFQbGF5ZXJNYW5hZ2VyUHJveHlNZXNzYWdlc1JlcGxpZXMuaCAqLywKIAkJCQkxQUMxMzM4MzE4
NTkwQzQ2MDBGM0VDMDUgLyogUmVtb3RlT2JqZWN0UmVnaXN0cnlNZXNzYWdlUmVjZWl2ZXIuY3Bw
ICovLAogCQkJCTFBQzEzMzg0MTg1OTBDNDYwMEYzRUMwNSAvKiBSZW1vdGVPYmplY3RSZWdpc3Ry
eU1lc3NhZ2VzLmggKi8sCiAJCQkJMEY1OTQ3QTUxODdCNTE3NjAwNDM3ODU3IC8qIFJlbW90ZVNj
cm9sbGluZ0Nvb3JkaW5hdG9yTWVzc2FnZVJlY2VpdmVyLmNwcCAqLywKQEAgLTk4MzUsNiArOTg4
OCw3IEBACiAJCQkJQkNDNTZGNzkxMTU5OTU3RDAwMUNDQUY5IC8qIE1hY2hQb3J0LmggaW4gSGVh
ZGVycyAqLywKIAkJCQkxQTI0QjVGMzExRjUzMUU4MDBDMzgyNjkgLyogTWFjaFV0aWxpdGllcy5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJQ0UxQTBCRDUxQTQ4RTZDNjAwNTRFRjc0IC8qIE1hbmFnZWRD
b25maWd1cmF0aW9uU1BJLmggaW4gSGVhZGVycyAqLywKKwkJCQkwNzkyMzE0RjIzOUQ2MjNFMDA5
NTk4RTIgLyogTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlSWRlbnRpZmllci5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJNTE5MzNERUYxOTY1RUIzMTAwOEFDM0VBIC8qIE1lbnVVdGlsaXRpZXMuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTFBQzRDODI5MTZCODc2QTkwMDY5RENDRCAvKiBNZXNzYWdlRmxhZ3Mu
aCBpbiBIZWFkZXJzICovLAogCQkJCTFBM0VFRDEyMTYxQTUzRDYwMEFFQjRGNSAvKiBNZXNzYWdl
UmVjZWl2ZXIuaCBpbiBIZWFkZXJzICovLApAQCAtOTk5NSw2ICsxMDA0OSwxMCBAQAogCQkJCTBG
RjI2NEEwMUExRkY5Q0MwMDFGRTc1OSAvKiBSZW1vdGVMYXllclRyZWVTY3JvbGxpbmdQZXJmb3Jt
YW5jZURhdGEuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBRjFBQzZDMTY1MTc1OUUwMEMxN0Q3RiAv
KiBSZW1vdGVMYXllclRyZWVUcmFuc2FjdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMkRDMThG
QjMyMThBNkU5RTAwMjVBODhEIC8qIFJlbW90ZUxheWVyVHJlZVZpZXdzLmggaW4gSGVhZGVycyAq
LywKKwkJCQkwNzkyMzE0RDIzOUNCQ0I4MDA5NTk4RTIgLyogUmVtb3RlTWVkaWFQbGF5ZXJNYW5h
Z2VyTWVzc2FnZXMuaCBpbiBIZWFkZXJzICovLAorCQkJCTA3OTIzMTRBMjM5Q0JDQjgwMDk1OThF
MiAvKiBSZW1vdGVNZWRpYVBsYXllck1hbmFnZXJNZXNzYWdlc1JlcGxpZXMuaCBpbiBIZWFkZXJz
ICovLAorCQkJCTA3OTIzMTRDMjM5Q0JDQjgwMDk1OThFMiAvKiBSZW1vdGVNZWRpYVBsYXllck1h
bmFnZXJQcm94eU1lc3NhZ2VzLmggaW4gSGVhZGVycyAqLywKKwkJCQkwNzkyMzE0ODIzOUNCQ0I4
MDA5NTk4RTIgLyogUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHlNZXNzYWdlc1JlcGxpZXMu
aCBpbiBIZWFkZXJzICovLAogCQkJCUUxQjc4NDcxMTYzRjI0NjkwMDA3QjY5MiAvKiBSZW1vdGVO
ZXR3b3JraW5nQ29udGV4dC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUE1NzA0RkMxQkUxNzUxMTAw
ODc0QUYxIC8qIFJlbW90ZU9iamVjdEludm9jYXRpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCTFB
QzEzMzgwMTg1OTBBRTQwMEYzRUMwNSAvKiBSZW1vdGVPYmplY3RSZWdpc3RyeS5oIGluIEhlYWRl
cnMgKi8sCkBAIC0xMTY1Miw2ICsxMTcxMCw4IEBACiAJCQkJMkQ3MkExRkEyMTJCRjQ2RTAwNTE3
QTIwIC8qIFJlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJ
MEZGMjRBMkQxODc5RTRCQzAwM0FCRjBDIC8qIFJlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhUHJv
eHlNZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMkRDMThGQjQyMThBNkU5
RTAwMjVBODhEIC8qIFJlbW90ZUxheWVyVHJlZVZpZXdzLm1tIGluIFNvdXJjZXMgKi8sCisJCQkJ
MDc5MjMxNDkyMzlDQkNCODAwOTU5OEUyIC8qIFJlbW90ZU1lZGlhUGxheWVyTWFuYWdlck1lc3Nh
Z2VSZWNlaXZlci5jcHAgaW4gU291cmNlcyAqLywKKwkJCQkwNzkyMzE0QjIzOUNCQ0I4MDA5NTk4
RTIgLyogUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJMUFDMTMzODUxODU5MEM0NjAwRjNFQzA1IC8qIFJlbW90ZU9iamVj
dFJlZ2lzdHJ5TWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGNTk0N0E3
MTg3QjUxNzYwMDQzNzg1NyAvKiBSZW1vdGVTY3JvbGxpbmdDb29yZGluYXRvck1lc3NhZ2VSZWNl
aXZlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBNTVCQTgyNjFCQTI1Q0ZEMDA3Q0QzM0QgLyog
UmVtb3RlV2ViSW5zcGVjdG9yUHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8s
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL01lZGlhUGxh
eWVyUHJpdmF0ZVJlbW90ZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlh
L01lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMjdjZTFjMTc3MzkyMjhl
MDlmOTQ1OWQyNzEzMWIzYjkxYWFhOTI5MwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlLmNwcApAQCAt
MCwwICsxLDc2MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAq
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAq
LworCisjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNpZiBFTkFCTEUoR1BVX1BST0NFU1MpCisjaW5j
bHVkZSAiTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlLmgiCisKKyNpbmNsdWRlICJMb2dnaW5nLmgi
CisjaW5jbHVkZSAiUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHlNZXNzYWdlcy5oIgorI2lu
Y2x1ZGUgPFdlYkNvcmUvTm90SW1wbGVtZW50ZWQuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1BsYXRm
b3JtTGF5ZXIuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1BsYXRmb3JtVGltZVJhbmdlcy5oPgorI2lu
Y2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CisjaW5jbHVkZSA8d3RmL01haW5UaHJlYWQuaD4KKyNpbmNs
dWRlIDx3dGYvU3RyaW5nUHJpbnRTdHJlYW0uaD4KKyNpbmNsdWRlIDx3dGYvVVJMLmg+CisjaW5j
bHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsKK3VzaW5nIG5h
bWVzcGFjZSBQQUw7Cit1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKKworTWVkaWFQbGF5ZXJQcml2
YXRlUmVtb3RlOjpNZWRpYVBsYXllclByaXZhdGVSZW1vdGUoTWVkaWFQbGF5ZXIqIHBsYXllciwg
Y29uc3QgU3RyaW5nJiByZW1vdGVFbmdpbmVJZGVudGlmaWVyLCBNZWRpYVBsYXllclByaXZhdGVS
ZW1vdGVJZGVudGlmaWVyIGlkZW50aWZpZXIsIFJlbW90ZU1lZGlhUGxheWVyTWFuYWdlciYgbWFu
YWdlcikKKyAgICA6IG1fcGxheWVyKHBsYXllcikKKyAgICAsIG1fbWFuYWdlcihtYW5hZ2VyKQor
ICAgICwgbV9yZW1vdGVFbmdpbmVJZGVudGlmaWVyKHJlbW90ZUVuZ2luZUlkZW50aWZpZXIpCisg
ICAgLCBtX2lkZW50aWZpZXIoaWRlbnRpZmllcikKKyNpZiAhUkVMRUFTRV9MT0dfRElTQUJMRUQK
KyAgICAsIG1fbG9nZ2VyKHBsYXllci0+bWVkaWFQbGF5ZXJMb2dnZXIoKSkKKyAgICAsIG1fbG9n
SWRlbnRpZmllcihwbGF5ZXItPm1lZGlhUGxheWVyTG9nSWRlbnRpZmllcigpKQorI2VuZGlmCit7
CisgICAgSU5GT19MT0coTE9HSURFTlRJRklFUik7Cit9CisKK01lZGlhUGxheWVyUHJpdmF0ZVJl
bW90ZTo6fk1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZSgpCit7CisgICAgSU5GT19MT0coTE9HSURF
TlRJRklFUik7CisgICAgbV9wbGF5ZXIgPSBudWxscHRyOworfQorCit2b2lkIE1lZGlhUGxheWVy
UHJpdmF0ZVJlbW90ZTo6TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpsb2FkKGNvbnN0IFN0cmlu
ZyYpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKworI2lmIEVOQUJMRShNRURJQV9TT1VS
Q0UpCit2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6bG9hZChjb25zdCBTdHJpbmcmLCBN
ZWRpYVNvdXJjZVByaXZhdGVDbGllbnQqKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9Cisj
ZW5kaWYKKworI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCit2b2lkIE1lZGlhUGxheWVyUHJpdmF0
ZVJlbW90ZTo6bG9hZChNZWRpYVN0cmVhbVByaXZhdGUmKQoreworICAgIG5vdEltcGxlbWVudGVk
KCk7Cit9CisjZW5kaWYKK3ZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpjYW5jZWxMb2Fk
KCkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCisKK3ZvaWQgTWVkaWFQbGF5ZXJQcml2
YXRlUmVtb3RlOjpwcmVwYXJlVG9QbGF5KCkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQor
CitQbGF0Zm9ybUxheWVyKiBNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OnBsYXRmb3JtTGF5ZXIo
KSBjb25zdAoreworICAgIHJldHVybiBudWxscHRyOworfQorCisjaWYgUExBVEZPUk0oSU9TX0ZB
TUlMWSkgfHwgKFBMQVRGT1JNKE1BQykgJiYgRU5BQkxFKFZJREVPX1BSRVNFTlRBVElPTl9NT0RF
KSkKK3ZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpzZXRWaWRlb0Z1bGxzY3JlZW5MYXll
cihQbGF0Zm9ybUxheWVyKiwgV1RGOjpGdW5jdGlvbjx2b2lkKCk+JiYpCit7CisgICAgbm90SW1w
bGVtZW50ZWQoKTsKK30KKwordm9pZCBNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OnVwZGF0ZVZp
ZGVvRnVsbHNjcmVlbklubGluZUltYWdlKCkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQor
Cit2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6c2V0VmlkZW9GdWxsc2NyZWVuRnJhbWUo
RmxvYXRSZWN0KQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKK3ZvaWQgTWVkaWFQbGF5
ZXJQcml2YXRlUmVtb3RlOjpzZXRWaWRlb0Z1bGxzY3JlZW5HcmF2aXR5KE1lZGlhUGxheWVyOjpW
aWRlb0dyYXZpdHkpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwordm9pZCBNZWRpYVBs
YXllclByaXZhdGVSZW1vdGU6OnNldFZpZGVvRnVsbHNjcmVlbk1vZGUoTWVkaWFQbGF5ZXI6OlZp
ZGVvRnVsbHNjcmVlbk1vZGUpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwordm9pZCBN
ZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OnZpZGVvRnVsbHNjcmVlblN0YW5kYnlDaGFuZ2VkKCkK
K3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorI2VuZGlmCisKKyNpZiBQTEFURk9STShJT1Nf
RkFNSUxZKQorU3RyaW5nIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6YWNjZXNzTG9nKCkgY29u
c3QKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiBlbXB0eVN0cmluZygpOwor
fQorCitTdHJpbmcgTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjplcnJvckxvZygpIGNvbnN0Cit7
CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gZW1wdHlTdHJpbmcoKTsKK30KKyNl
bmRpZgorCitsb25nIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6cGxhdGZvcm1FcnJvckNvZGUo
KSBjb25zdAoreworICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIDA7Cit9CisKK3Zv
aWQgTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpwbGF5KCkKK3sKKyAgICBub3RJbXBsZW1lbnRl
ZCgpOworfQorCit2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6cGF1c2UoKQoreworICAg
IG5vdEltcGxlbWVudGVkKCk7Cit9CisKK3ZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpz
ZXRCdWZmZXJpbmdQb2xpY3koTWVkaWFQbGF5ZXI6OkJ1ZmZlcmluZ1BvbGljeSkKK3sKKyAgICBu
b3RJbXBsZW1lbnRlZCgpOworfQorCitib29sIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6c3Vw
cG9ydHNQaWN0dXJlSW5QaWN0dXJlKCkgY29uc3QKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOwor
ICAgIHJldHVybiBmYWxzZTsKK30KKworYm9vbCBNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OnN1
cHBvcnRzRnVsbHNjcmVlbigpIGNvbnN0Cit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICBy
ZXR1cm4gZmFsc2U7Cit9CisKK2Jvb2wgTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpzdXBwb3J0
c1NjYW5uaW5nKCkgY29uc3QKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiBm
YWxzZTsKK30KKworYm9vbCBNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OnJlcXVpcmVzSW1tZWRp
YXRlQ29tcG9zaXRpbmcoKSBjb25zdAoreworICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0
dXJuIGZhbHNlOworfQorCitib29sIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6Y2FuU2F2ZU1l
ZGlhRGF0YSgpIGNvbnN0Cit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gZmFs
c2U7Cit9CisKK0Zsb2F0U2l6ZSBNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6Om5hdHVyYWxTaXpl
KCkgY29uc3QKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiB7IH07Cit9CisK
K2Jvb2wgTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpoYXNWaWRlbygpIGNvbnN0Cit7CisgICAg
bm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK2Jvb2wgTWVkaWFQbGF5
ZXJQcml2YXRlUmVtb3RlOjpoYXNBdWRpbygpIGNvbnN0Cit7CisgICAgbm90SW1wbGVtZW50ZWQo
KTsKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK3ZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3Rl
OjpzZXRWaXNpYmxlKGJvb2wpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKworTWVkaWFU
aW1lIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpk
dXJhdGlvbk1lZGlhVGltZSgpIGNvbnN0Cit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICBy
ZXR1cm4gTWVkaWFUaW1lOjp6ZXJvVGltZSgpOworfQorCitNZWRpYVRpbWUgTWVkaWFQbGF5ZXJQ
cml2YXRlUmVtb3RlOjpjdXJyZW50TWVkaWFUaW1lKCkgY29uc3QKK3sKKyAgICBub3RJbXBsZW1l
bnRlZCgpOworICAgIHJldHVybiBNZWRpYVRpbWU6Onplcm9UaW1lKCk7Cit9CisKK01lZGlhVGlt
ZSBNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OmdldFN0YXJ0RGF0ZSgpIGNvbnN0Cit7CisgICAg
bm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gTWVkaWFUaW1lOjp6ZXJvVGltZSgpOworfQor
Cit2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6c2Vlayhjb25zdCBNZWRpYVRpbWUmKQor
eworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKK3ZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlUmVt
b3RlOjpzZWVrV2l0aFRvbGVyYW5jZShjb25zdCBNZWRpYVRpbWUmLCBjb25zdCBNZWRpYVRpbWUm
LCBjb25zdCBNZWRpYVRpbWUmKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKK2Jvb2wg
TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpzZWVraW5nKCkgY29uc3QKK3sKKyAgICBub3RJbXBs
ZW1lbnRlZCgpOworICAgIHJldHVybiBmYWxzZTsKK30KKworTWVkaWFUaW1lIE1lZGlhUGxheWVy
UHJpdmF0ZVJlbW90ZTo6c3RhcnRUaW1lKCkgY29uc3QKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgp
OworICAgIHJldHVybiBNZWRpYVRpbWU6Onplcm9UaW1lKCk7Cit9CisKK3ZvaWQgTWVkaWFQbGF5
ZXJQcml2YXRlUmVtb3RlOjpzZXRSYXRlRG91YmxlKGRvdWJsZSkKK3sKKyAgICBub3RJbXBsZW1l
bnRlZCgpOworfQorCitkb3VibGUgTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpyYXRlKCkgY29u
c3QKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiAwOworfQorCit2b2lkIE1l
ZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6c2V0UHJlc2VydmVzUGl0Y2goYm9vbCkKK3sKKyAgICBu
b3RJbXBsZW1lbnRlZCgpOworfQorCitib29sIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6cGF1
c2VkKCkgY29uc3QKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiBmYWxzZTsK
K30KKwordm9pZCBNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OnNldFZvbHVtZURvdWJsZShkb3Vi
bGUpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwordm9pZCBNZWRpYVBsYXllclByaXZh
dGVSZW1vdGU6OnNldE11dGVkKGJvb2wpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwor
Ym9vbCBNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6Omhhc0Nsb3NlZENhcHRpb25zKCkgY29uc3QK
K3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiBmYWxzZTsKK30KKwordm9pZCBN
ZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OnNldENsb3NlZENhcHRpb25zVmlzaWJsZShib29sKQor
eworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKK2RvdWJsZSBNZWRpYVBsYXllclByaXZhdGVS
ZW1vdGU6Om1heEZhc3RGb3J3YXJkUmF0ZSgpIGNvbnN0Cit7CisgICAgbm90SW1wbGVtZW50ZWQo
KTsKKyAgICByZXR1cm4gMDsKK30KKworZG91YmxlIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6
bWluRmFzdFJldmVyc2VSYXRlKCkgY29uc3QKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAg
IHJldHVybiAwOworfQorCitNZWRpYVBsYXllcjo6TmV0d29ya1N0YXRlIE1lZGlhUGxheWVyUHJp
dmF0ZVJlbW90ZTo6bmV0d29ya1N0YXRlKCkgY29uc3QKK3sKKyAgICBpZiAobV9pbnZhbGlkKQor
ICAgICAgICByZXR1cm4gTWVkaWFQbGF5ZXI6OkZvcm1hdEVycm9yOworCisgICAgbm90SW1wbGVt
ZW50ZWQoKTsKKyAgICByZXR1cm4gTWVkaWFQbGF5ZXI6OkVtcHR5OworfQorCitNZWRpYVBsYXll
cjo6UmVhZHlTdGF0ZSBNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OnJlYWR5U3RhdGUoKSBjb25z
dAoreworICAgIGlmIChtX2ludmFsaWQpCisgICAgICAgIHJldHVybiBNZWRpYVBsYXllcjo6SGF2
ZU5vdGhpbmc7CisKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiBNZWRpYVBsYXll
cjo6SGF2ZU5vdGhpbmc7Cit9CisKK3N0ZDo6dW5pcXVlX3B0cjxQbGF0Zm9ybVRpbWVSYW5nZXM+
IE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6c2Vla2FibGUoKSBjb25zdAoreworICAgIG5vdElt
cGxlbWVudGVkKCk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8UGxhdGZvcm1UaW1lUmFuZ2VzPigp
OworfQorCitzdGQ6OnVuaXF1ZV9wdHI8UGxhdGZvcm1UaW1lUmFuZ2VzPiBNZWRpYVBsYXllclBy
aXZhdGVSZW1vdGU6OmJ1ZmZlcmVkKCkgY29uc3QKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOwor
ICAgIHJldHVybiBtYWtlVW5pcXVlPFBsYXRmb3JtVGltZVJhbmdlcz4oKTsKK30KKworTWVkaWFU
aW1lIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6bWF4TWVkaWFUaW1lU2Vla2FibGUoKSBjb25z
dAoreworICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIE1lZGlhVGltZTo6emVyb1Rp
bWUoKTsKK30KKworTWVkaWFUaW1lIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6bWluTWVkaWFU
aW1lU2Vla2FibGUoKSBjb25zdAoreworICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJu
IE1lZGlhVGltZTo6emVyb1RpbWUoKTsKK30KKworZG91YmxlIE1lZGlhUGxheWVyUHJpdmF0ZVJl
bW90ZTo6c2Vla2FibGVUaW1lUmFuZ2VzTGFzdE1vZGlmaWVkVGltZSgpIGNvbnN0Cit7CisgICAg
bm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gMDsKK30KKworZG91YmxlIE1lZGlhUGxheWVy
UHJpdmF0ZVJlbW90ZTo6bGl2ZVVwZGF0ZUludGVydmFsKCkgY29uc3QKK3sKKyAgICBub3RJbXBs
ZW1lbnRlZCgpOworICAgIHJldHVybiAwOworfQorCit1bnNpZ25lZCBsb25nIGxvbmcgTWVkaWFQ
bGF5ZXJQcml2YXRlUmVtb3RlOjp0b3RhbEJ5dGVzKCkgY29uc3QKK3sKKyAgICBub3RJbXBsZW1l
bnRlZCgpOworICAgIHJldHVybiAwOworfQorCitib29sIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90
ZTo6ZGlkTG9hZGluZ1Byb2dyZXNzKCkgY29uc3QKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOwor
ICAgIHJldHVybiBmYWxzZTsKK30KKwordm9pZCBNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OnNl
dFNpemUoY29uc3QgSW50U2l6ZSYpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwordm9p
ZCBNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OnBhaW50KEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0
IEZsb2F0UmVjdCYpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwordm9pZCBNZWRpYVBs
YXllclByaXZhdGVSZW1vdGU6OnBhaW50Q3VycmVudEZyYW1lSW5Db250ZXh0KEdyYXBoaWNzQ29u
dGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwor
Ym9vbCBNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OmNvcHlWaWRlb1RleHR1cmVUb1BsYXRmb3Jt
VGV4dHVyZShHcmFwaGljc0NvbnRleHQzRCosIFBsYXRmb3JtM0RPYmplY3QsIEdDM0RlbnVtLCBH
QzNEaW50LCBHQzNEZW51bSwgR0MzRGVudW0sIEdDM0RlbnVtLCBib29sLCBib29sKQoreworICAg
IG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIGZhbHNlOworfQorCitOYXRpdmVJbWFnZVB0
ciBNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6Om5hdGl2ZUltYWdlRm9yQ3VycmVudFRpbWUoKQor
eworICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIG51bGxwdHI7Cit9CisKK3ZvaWQg
TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpzZXRQcmVsb2FkKE1lZGlhUGxheWVyOjpQcmVsb2Fk
KQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKK2Jvb2wgTWVkaWFQbGF5ZXJQcml2YXRl
UmVtb3RlOjpoYXNBdmFpbGFibGVWaWRlb0ZyYW1lKCkgY29uc3QKK3sKKyAgICBub3RJbXBsZW1l
bnRlZCgpOworICAgIHJldHVybiBmYWxzZTsKK30KKworYm9vbCBNZWRpYVBsYXllclByaXZhdGVS
ZW1vdGU6OmNhbkxvYWRQb3N0ZXIoKSBjb25zdAoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cisg
ICAgcmV0dXJuIGZhbHNlOworfQorCit2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6c2V0
UG9zdGVyKGNvbnN0IFN0cmluZyYpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKworI2lm
IFVTRShOQVRJVkVfRlVMTFNDUkVFTl9WSURFTykKK3ZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlUmVt
b3RlOjplbnRlckZ1bGxzY3JlZW4oKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKK3Zv
aWQgTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpleGl0RnVsbHNjcmVlbigpCit7CisgICAgbm90
SW1wbGVtZW50ZWQoKTsKK30KKyNlbmRpZgorCisjaWYgRU5BQkxFKFdJUkVMRVNTX1BMQVlCQUNL
X1RBUkdFVCkKK1N0cmluZyBNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OndpcmVsZXNzUGxheWJh
Y2tUYXJnZXROYW1lKCkgY29uc3QKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVy
biBlbXB0eVN0cmluZygpOworfQorCitNZWRpYVBsYXllcjo6V2lyZWxlc3NQbGF5YmFja1Rhcmdl
dFR5cGUgTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjp3aXJlbGVzc1BsYXliYWNrVGFyZ2V0VHlw
ZSgpIGNvbnN0Cit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gTWVkaWFQbGF5
ZXI6OlRhcmdldFR5cGVOb25lOworfQorCitib29sIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6
d2lyZWxlc3NWaWRlb1BsYXliYWNrRGlzYWJsZWQoKSBjb25zdAoreworICAgIG5vdEltcGxlbWVu
dGVkKCk7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK3ZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlUmVt
b3RlOjpzZXRXaXJlbGVzc1ZpZGVvUGxheWJhY2tEaXNhYmxlZChib29sKQoreworICAgIG5vdElt
cGxlbWVudGVkKCk7Cit9CisKK2Jvb2wgTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpjYW5QbGF5
VG9XaXJlbGVzc1BsYXliYWNrVGFyZ2V0KCkgY29uc3QKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgp
OworICAgIHJldHVybiBmYWxzZTsKK30KKworYm9vbCBNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6
OmlzQ3VycmVudFBsYXliYWNrVGFyZ2V0V2lyZWxlc3MoKSBjb25zdAoreworICAgIG5vdEltcGxl
bWVudGVkKCk7CisgICAgcmV0dXJuIGZhbHNlOworfQorCit2b2lkIE1lZGlhUGxheWVyUHJpdmF0
ZVJlbW90ZTo6c2V0V2lyZWxlc3NQbGF5YmFja1RhcmdldChSZWY8TWVkaWFQbGF5YmFja1Rhcmdl
dD4mJikKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCit2b2lkIE1lZGlhUGxheWVyUHJp
dmF0ZVJlbW90ZTo6c2V0U2hvdWxkUGxheVRvUGxheWJhY2tUYXJnZXQoYm9vbCkKK3sKKyAgICBu
b3RJbXBsZW1lbnRlZCgpOworfQorI2VuZGlmCisKKyNpZiBVU0UoTkFUSVZFX0ZVTExTQ1JFRU5f
VklERU8pCitib29sIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6Y2FuRW50ZXJGdWxsc2NyZWVu
KCkgY29uc3QKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiBmYWxzZTsKK30K
KyNlbmRpZgorCitib29sIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6c3VwcG9ydHNBY2NlbGVy
YXRlZFJlbmRlcmluZygpIGNvbnN0Cit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1
cm4gZmFsc2U7Cit9CisKK3ZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjphY2NlbGVyYXRl
ZFJlbmRlcmluZ1N0YXRlQ2hhbmdlZCgpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwor
Ym9vbCBNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OnNob3VsZE1haW50YWluQXNwZWN0UmF0aW8o
KSBjb25zdAoreworICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIHRydWU7Cit9CisK
K3ZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpzZXRTaG91bGRNYWludGFpbkFzcGVjdFJh
dGlvKGJvb2wpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKworYm9vbCBNZWRpYVBsYXll
clByaXZhdGVSZW1vdGU6Omhhc1NpbmdsZVNlY3VyaXR5T3JpZ2luKCkgY29uc3QKK3sKKyAgICBu
b3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiBmYWxzZTsKK30KKworYm9vbCBNZWRpYVBsYXll
clByaXZhdGVSZW1vdGU6OmRpZFBhc3NDT1JTQWNjZXNzQ2hlY2soKSBjb25zdAoreworICAgIG5v
dEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIGZhbHNlOworfQorCitPcHRpb25hbDxib29sPiBN
ZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OndvdWxkVGFpbnRPcmlnaW4oY29uc3QgU2VjdXJpdHlP
cmlnaW4mKSBjb25zdAoreworICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIFdURjo6
bnVsbG9wdDsKK30KKworTWVkaWFQbGF5ZXI6Ok1vdmllTG9hZFR5cGUgTWVkaWFQbGF5ZXJQcml2
YXRlUmVtb3RlOjptb3ZpZUxvYWRUeXBlKCkgY29uc3QKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgp
OworICAgIHJldHVybiBNZWRpYVBsYXllcjo6VW5rbm93bjsKK30KKwordm9pZCBNZWRpYVBsYXll
clByaXZhdGVSZW1vdGU6OnByZXBhcmVGb3JSZW5kZXJpbmcoKQoreworICAgIG5vdEltcGxlbWVu
dGVkKCk7Cit9CisKK01lZGlhVGltZSBNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6Om1lZGlhVGlt
ZUZvclRpbWVWYWx1ZShjb25zdCBNZWRpYVRpbWUmIHRpbWVWYWx1ZSkgY29uc3QKK3sKKyAgICBu
b3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiB0aW1lVmFsdWU7Cit9CisKK2RvdWJsZSBNZWRp
YVBsYXllclByaXZhdGVSZW1vdGU6Om1heGltdW1EdXJhdGlvblRvQ2FjaGVNZWRpYVRpbWUoKSBj
b25zdAoreworICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIDA7Cit9CisKK3Vuc2ln
bmVkIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6ZGVjb2RlZEZyYW1lQ291bnQoKSBjb25zdAor
eworICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIDA7Cit9CisKK3Vuc2lnbmVkIE1l
ZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6ZHJvcHBlZEZyYW1lQ291bnQoKSBjb25zdAoreworICAg
IG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIDA7Cit9CisKK3Vuc2lnbmVkIE1lZGlhUGxh
eWVyUHJpdmF0ZVJlbW90ZTo6YXVkaW9EZWNvZGVkQnl0ZUNvdW50KCkgY29uc3QKK3sKKyAgICBu
b3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiAwOworfQorCit1bnNpZ25lZCBNZWRpYVBsYXll
clByaXZhdGVSZW1vdGU6OnZpZGVvRGVjb2RlZEJ5dGVDb3VudCgpIGNvbnN0Cit7CisgICAgbm90
SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gMDsKK30KKwordm9pZCBNZWRpYVBsYXllclByaXZh
dGVSZW1vdGU6OnNldFByaXZhdGVCcm93c2luZ01vZGUoYm9vbCkKK3sKKyAgICBub3RJbXBsZW1l
bnRlZCgpOworfQorCitTdHJpbmcgTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjplbmdpbmVEZXNj
cmlwdGlvbigpIGNvbnN0Cit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gZW1w
dHlTdHJpbmcoKTsKK30KKworI2lmIEVOQUJMRShXRUJfQVVESU8pCitBdWRpb1NvdXJjZVByb3Zp
ZGVyKiBNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OmF1ZGlvU291cmNlUHJvdmlkZXIoKQorewor
ICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIG51bGxwdHI7Cit9CisjZW5kaWYKKwor
I2lmIEVOQUJMRShMRUdBQ1lfRU5DUllQVEVEX01FRElBKQorc3RkOjp1bmlxdWVfcHRyPExlZ2Fj
eUNETVNlc3Npb24+IE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6Y3JlYXRlU2Vzc2lvbihjb25z
dCBTdHJpbmcmLCBMZWdhY3lDRE1TZXNzaW9uQ2xpZW50KikKK3sKKyAgICBub3RJbXBsZW1lbnRl
ZCgpOworICAgIHJldHVybiBudWxscHRyOworfQorCit2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZVJl
bW90ZTo6c2V0Q0RNU2Vzc2lvbihMZWdhY3lDRE1TZXNzaW9uKikKK3sKKyAgICBub3RJbXBsZW1l
bnRlZCgpOworfQorCit2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6a2V5QWRkZWQoKQor
eworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisjZW5kaWYKKworI2lmIEVOQUJMRShFTkNSWVBU
RURfTUVESUEpCit2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6Y2RtSW5zdGFuY2VBdHRh
Y2hlZChDRE1JbnN0YW5jZSYpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwordm9pZCBN
ZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OmNkbUluc3RhbmNlRGV0YWNoZWQoQ0RNSW5zdGFuY2Um
KQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKK3ZvaWQgTWVkaWFQbGF5ZXJQcml2YXRl
UmVtb3RlOjphdHRlbXB0VG9EZWNyeXB0V2l0aEluc3RhbmNlKENETUluc3RhbmNlJikKK3sKKyAg
ICBub3RJbXBsZW1lbnRlZCgpOworfQorCitib29sIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6
d2FpdGluZ0ZvcktleSgpIGNvbnN0Cit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1
cm4gZmFsc2U7Cit9CisjZW5kaWYKKworI2lmIEVOQUJMRShWSURFT19UUkFDSykKK2Jvb2wgTWVk
aWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpyZXF1aXJlc1RleHRUcmFja1JlcHJlc2VudGF0aW9uKCkg
Y29uc3QKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiBmYWxzZTsKK30KKwor
dm9pZCBNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OnNldFRleHRUcmFja1JlcHJlc2VudGF0aW9u
KFRleHRUcmFja1JlcHJlc2VudGF0aW9uKikKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQor
Cit2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6c3luY1RleHRUcmFja0JvdW5kcygpCit7
CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwordm9pZCBNZWRpYVBsYXllclByaXZhdGVSZW1v
dGU6OnRyYWNrc0NoYW5nZWQoKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisjZW5kaWYK
KworI2lmIFVTRShHU1RSRUFNRVIpCit2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6c2lt
dWxhdGVBdWRpb0ludGVycnVwdGlvbigpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKyNl
bmRpZgorCit2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6YmVnaW5TaW11bGF0ZWRIRENQ
RXJyb3IoKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKK3ZvaWQgTWVkaWFQbGF5ZXJQ
cml2YXRlUmVtb3RlOjplbmRTaW11bGF0ZWRIRENQRXJyb3IoKQoreworICAgIG5vdEltcGxlbWVu
dGVkKCk7Cit9CisKK1N0cmluZyBNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6Omxhbmd1YWdlT2ZQ
cmltYXJ5QXVkaW9UcmFjaygpIGNvbnN0Cit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICBy
ZXR1cm4gZW1wdHlTdHJpbmcoKTsKK30KKworc2l6ZV90IE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90
ZTo6ZXh0cmFNZW1vcnlDb3N0KCkgY29uc3QKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAg
IHJldHVybiAwOworfQorCit1bnNpZ25lZCBsb25nIGxvbmcgTWVkaWFQbGF5ZXJQcml2YXRlUmVt
b3RlOjpmaWxlU2l6ZSgpIGNvbnN0Cit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1
cm4gMDsKK30KKworYm9vbCBNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OmVuZGVkKCkgY29uc3QK
K3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiBmYWxzZTsKK30KKworT3B0aW9u
YWw8VmlkZW9QbGF5YmFja1F1YWxpdHlNZXRyaWNzPiBNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6
OnZpZGVvUGxheWJhY2tRdWFsaXR5TWV0cmljcygpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsK
KyAgICByZXR1cm4gV1RGOjpudWxsb3B0OworfQorCisjaWYgRU5BQkxFKEFWRl9DQVBUSU9OUykK
K3ZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpub3RpZnlUcmFja01vZGVDaGFuZ2VkKCkK
K3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorI2VuZGlmCisKK3ZvaWQgTWVkaWFQbGF5ZXJQ
cml2YXRlUmVtb3RlOjpub3RpZnlBY3RpdmVTb3VyY2VCdWZmZXJzQ2hhbmdlZCgpCit7CisgICAg
bm90SW1wbGVtZW50ZWQoKTsKK30KKwordm9pZCBNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OnNl
dFNob3VsZERpc2FibGVTbGVlcChib29sKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisK
K3ZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjphcHBsaWNhdGlvbldpbGxSZXNpZ25BY3Rp
dmUoKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKK3ZvaWQgTWVkaWFQbGF5ZXJQcml2
YXRlUmVtb3RlOjphcHBsaWNhdGlvbkRpZEJlY29tZUFjdGl2ZSgpCit7CisgICAgbm90SW1wbGVt
ZW50ZWQoKTsKK30KKworYm9vbCBNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OnBlcmZvcm1UYXNr
QXRNZWRpYVRpbWUoV1RGOjpGdW5jdGlvbjx2b2lkKCk+JiYsIE1lZGlhVGltZSkKK3sKKyAgICBu
b3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiBmYWxzZTsKK30KKworYm9vbCBNZWRpYVBsYXll
clByaXZhdGVSZW1vdGU6OnNob3VsZElnbm9yZUludHJpbnNpY1NpemUoKQoreworICAgIG5vdElt
cGxlbWVudGVkKCk7CisgICAgcmV0dXJuIGZhbHNlOworfQorCisjaWYgIVJFTEVBU0VfTE9HX0RJ
U0FCTEVECitXVEZMb2dDaGFubmVsJiBNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OmxvZ0NoYW5u
ZWwoKSBjb25zdAoreworICAgIHJldHVybiBXZWJLaXQyTG9nV2ViUlRDOworfQorI2VuZGlmCisK
K30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL01lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZS5oIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9NZWRpYVBsYXllclByaXZhdGVSZW1vdGUu
aApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi4yNGM3NzFmNDNjMzQ5NjU0YzIwNjJiMmYxYTYwMTVkYmQxZTg3MjRiCi0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9NZWRp
YVBsYXllclByaXZhdGVSZW1vdGUuaApAQCAtMCwwICsxLDI5NyBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQg
QU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJM
RShHUFVfUFJPQ0VTUykKKworI2luY2x1ZGUgIlJlbW90ZU1lZGlhUGxheWVyTWFuYWdlci5oIgor
I2luY2x1ZGUgPFdlYkNvcmUvTWVkaWFQbGF5ZXJQcml2YXRlLmg+CisjaW5jbHVkZSA8d3RmL0xv
Z2dlckhlbHBlci5oPgorI2luY2x1ZGUgPHd0Zi9NZWRpYVRpbWUuaD4KKyNpbmNsdWRlIDx3dGYv
V2Vha1B0ci5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3MgTWVkaWFQbGF5ZXJQcml2
YXRlUmVtb3RlIGZpbmFsCisgICAgOiBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8TWVkaWFQbGF5ZXJQ
cml2YXRlUmVtb3RlPgorICAgICwgcHVibGljIE1lZGlhUGxheWVyUHJpdmF0ZUludGVyZmFjZQor
I2lmICFSRUxFQVNFX0xPR19ESVNBQkxFRAorICAgICwgcHJpdmF0ZSBMb2dnZXJIZWxwZXIKKyNl
bmRpZgoreworcHVibGljOgorICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8TWVkaWFQbGF5ZXJQ
cml2YXRlUmVtb3RlPiBjcmVhdGUoTWVkaWFQbGF5ZXIqIHBsYXllciwgY29uc3QgU3RyaW5nJiBy
ZW1vdGVFbmdpbmVJZGVudGlmaWVyLCBNZWRpYVBsYXllclByaXZhdGVSZW1vdGVJZGVudGlmaWVy
IGlkZW50aWZpZXIsIFJlbW90ZU1lZGlhUGxheWVyTWFuYWdlciYgbWFuYWdlcikKKyAgICB7Cisg
ICAgICAgIHJldHVybiBtYWtlVW5pcXVlPE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZT4ocGxheWVy
LCByZW1vdGVFbmdpbmVJZGVudGlmaWVyLCBpZGVudGlmaWVyLCBtYW5hZ2VyKTsKKyAgICB9CisK
KyAgICBleHBsaWNpdCBNZWRpYVBsYXllclByaXZhdGVSZW1vdGUoTWVkaWFQbGF5ZXIqLCBjb25z
dCBTdHJpbmcmLCBNZWRpYVBsYXllclByaXZhdGVSZW1vdGVJZGVudGlmaWVyLCBSZW1vdGVNZWRp
YVBsYXllck1hbmFnZXImKTsKKyAgICB2aXJ0dWFsIH5NZWRpYVBsYXllclByaXZhdGVSZW1vdGUo
KTsKKworICAgIHZvaWQgaW52YWxpZGF0ZSgpIHsgbV9pbnZhbGlkID0gdHJ1ZTsgfQorCisjaWYg
IVJFTEVBU0VfTE9HX0RJU0FCTEVECisgICAgY29uc3QgTG9nZ2VyJiBsb2dnZXIoKSBjb25zdCBm
aW5hbCB7IHJldHVybiBtX2xvZ2dlci5nZXQoKTsgfQorICAgIGNvbnN0IGNoYXIqIGxvZ0NsYXNz
TmFtZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuICJNZWRpYVBsYXllclByaXZhdGVSZW1vdGUi
OyB9CisgICAgY29uc3Qgdm9pZCogbG9nSWRlbnRpZmllcigpIGNvbnN0IGZpbmFsIHsgcmV0dXJu
IHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3Qgdm9pZCo+KG1fbG9nSWRlbnRpZmllcik7IH0KKyAgICBX
VEZMb2dDaGFubmVsJiBsb2dDaGFubmVsKCkgY29uc3QgZmluYWw7CisjZW5kaWYKKworcHJpdmF0
ZToKKworICAgIHZvaWQgbG9hZChjb25zdCBTdHJpbmcmKSBmaW5hbDsKKyNpZiBFTkFCTEUoTUVE
SUFfU09VUkNFKQorICAgIHZvaWQgbG9hZChjb25zdCBTdHJpbmcmLCBNZWRpYVNvdXJjZVByaXZh
dGVDbGllbnQqKSBmaW5hbDsKKyNlbmRpZgorI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCisgICAg
dm9pZCBsb2FkKE1lZGlhU3RyZWFtUHJpdmF0ZSYpIGZpbmFsOworI2VuZGlmCisgICAgdm9pZCBj
YW5jZWxMb2FkKCkgZmluYWw7CisgICAgCisgICAgdm9pZCBwcmVwYXJlVG9QbGF5KCkgZmluYWw7
CisgICAgUGxhdGZvcm1MYXllciogcGxhdGZvcm1MYXllcigpIGNvbnN0IGZpbmFsOworCisjaWYg
UExBVEZPUk0oSU9TX0ZBTUlMWSkgfHwgKFBMQVRGT1JNKE1BQykgJiYgRU5BQkxFKFZJREVPX1BS
RVNFTlRBVElPTl9NT0RFKSkKKyAgICB2b2lkIHNldFZpZGVvRnVsbHNjcmVlbkxheWVyKFBsYXRm
b3JtTGF5ZXIqLCBXVEY6OkZ1bmN0aW9uPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikgZmlu
YWw7CisgICAgdm9pZCB1cGRhdGVWaWRlb0Z1bGxzY3JlZW5JbmxpbmVJbWFnZSgpIGZpbmFsOwor
ICAgIHZvaWQgc2V0VmlkZW9GdWxsc2NyZWVuRnJhbWUoRmxvYXRSZWN0KSBmaW5hbDsKKyAgICB2
b2lkIHNldFZpZGVvRnVsbHNjcmVlbkdyYXZpdHkoTWVkaWFQbGF5ZXI6OlZpZGVvR3Jhdml0eSkg
ZmluYWw7CisgICAgdm9pZCBzZXRWaWRlb0Z1bGxzY3JlZW5Nb2RlKE1lZGlhUGxheWVyOjpWaWRl
b0Z1bGxzY3JlZW5Nb2RlKSBmaW5hbDsKKyAgICB2b2lkIHZpZGVvRnVsbHNjcmVlblN0YW5kYnlD
aGFuZ2VkKCkgZmluYWw7CisjZW5kaWYKKworI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCisgICAg
TlNBcnJheSAqdGltZWRNZXRhZGF0YSgpIGNvbnN0IGZpbmFsOworICAgIFN0cmluZyBhY2Nlc3NM
b2coKSBjb25zdCBmaW5hbDsKKyAgICBTdHJpbmcgZXJyb3JMb2coKSBjb25zdCBmaW5hbDsKKyNl
bmRpZgorICAgIGxvbmcgcGxhdGZvcm1FcnJvckNvZGUoKSBjb25zdCBmaW5hbDsKKworICAgIHZv
aWQgcGxheSgpIGZpbmFsOworICAgIHZvaWQgcGF1c2UoKSBmaW5hbDsKKyAgICB2b2lkIHNldEJ1
ZmZlcmluZ1BvbGljeShNZWRpYVBsYXllcjo6QnVmZmVyaW5nUG9saWN5KSBmaW5hbDsKKworICAg
IGJvb2wgc3VwcG9ydHNQaWN0dXJlSW5QaWN0dXJlKCkgY29uc3QgZmluYWw7CisgICAgYm9vbCBz
dXBwb3J0c0Z1bGxzY3JlZW4oKSBjb25zdCBmaW5hbDsKKyAgICBib29sIHN1cHBvcnRzU2Nhbm5p
bmcoKSBjb25zdCBmaW5hbDsKKyAgICBib29sIHJlcXVpcmVzSW1tZWRpYXRlQ29tcG9zaXRpbmco
KSBjb25zdCBmaW5hbDsKKworICAgIGJvb2wgY2FuU2F2ZU1lZGlhRGF0YSgpIGNvbnN0IGZpbmFs
OworCisgICAgRmxvYXRTaXplIG5hdHVyYWxTaXplKCkgY29uc3QgZmluYWw7CisKKyAgICBib29s
IGhhc1ZpZGVvKCkgY29uc3QgZmluYWw7CisgICAgYm9vbCBoYXNBdWRpbygpIGNvbnN0IGZpbmFs
OworCisgICAgdm9pZCBzZXRWaXNpYmxlKGJvb2wpIGZpbmFsOworCisgICAgTWVkaWFUaW1lIGR1
cmF0aW9uTWVkaWFUaW1lKCkgY29uc3QgZmluYWw7CisgICAgTWVkaWFUaW1lIGN1cnJlbnRNZWRp
YVRpbWUoKSBjb25zdCBmaW5hbDsKKworICAgIE1lZGlhVGltZSBnZXRTdGFydERhdGUoKSBjb25z
dCBmaW5hbDsKKworICAgIHZvaWQgc2Vlayhjb25zdCBNZWRpYVRpbWUmKSBmaW5hbDsKKyAgICB2
b2lkIHNlZWtXaXRoVG9sZXJhbmNlKGNvbnN0IE1lZGlhVGltZSYsIGNvbnN0IE1lZGlhVGltZSYs
IGNvbnN0IE1lZGlhVGltZSYpIGZpbmFsOworCisgICAgYm9vbCBzZWVraW5nKCkgY29uc3QgZmlu
YWw7CisKKyAgICBNZWRpYVRpbWUgc3RhcnRUaW1lKCkgY29uc3QgZmluYWw7CisKKyAgICB2b2lk
IHNldFJhdGVEb3VibGUoZG91YmxlKSBmaW5hbDsKKyAgICBkb3VibGUgcmF0ZSgpIGNvbnN0IGZp
bmFsOworCisgICAgdm9pZCBzZXRQcmVzZXJ2ZXNQaXRjaChib29sKSBmaW5hbDsKKworICAgIGJv
b2wgcGF1c2VkKCkgY29uc3QgZmluYWw7CisKKyAgICB2b2lkIHNldFZvbHVtZURvdWJsZShkb3Vi
bGUpIGZpbmFsOworCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkgfHwgVVNFKEdTVFJFQU1FUikK
KyAgICBmbG9hdCB2b2x1bWUoKSBjb25zdCB7IHJldHVybiAxOyB9CisjZW5kaWYKKworICAgIHZv
aWQgc2V0TXV0ZWQoYm9vbCkgZmluYWw7CisKKyAgICBib29sIGhhc0Nsb3NlZENhcHRpb25zKCkg
Y29uc3QgZmluYWw7CisgICAgdm9pZCBzZXRDbG9zZWRDYXB0aW9uc1Zpc2libGUoYm9vbCkgZmlu
YWw7CisKKyAgICBkb3VibGUgbWF4RmFzdEZvcndhcmRSYXRlKCkgY29uc3QgZmluYWw7CisgICAg
ZG91YmxlIG1pbkZhc3RSZXZlcnNlUmF0ZSgpIGNvbnN0IGZpbmFsOworCisgICAgTWVkaWFQbGF5
ZXI6Ok5ldHdvcmtTdGF0ZSBuZXR3b3JrU3RhdGUoKSBjb25zdCBmaW5hbDsKKyAgICBNZWRpYVBs
YXllcjo6UmVhZHlTdGF0ZSByZWFkeVN0YXRlKCkgY29uc3QgZmluYWw7CisKKyAgICBzdGQ6OnVu
aXF1ZV9wdHI8UGxhdGZvcm1UaW1lUmFuZ2VzPiBzZWVrYWJsZSgpIGNvbnN0IGZpbmFsOworCisg
ICAgTWVkaWFUaW1lIG1heE1lZGlhVGltZVNlZWthYmxlKCkgY29uc3QgZmluYWw7CisgICAgTWVk
aWFUaW1lIG1pbk1lZGlhVGltZVNlZWthYmxlKCkgY29uc3QgZmluYWw7CisgICAgc3RkOjp1bmlx
dWVfcHRyPFBsYXRmb3JtVGltZVJhbmdlcz4gYnVmZmVyZWQoKSBjb25zdCBmaW5hbDsKKyAgICBk
b3VibGUgc2Vla2FibGVUaW1lUmFuZ2VzTGFzdE1vZGlmaWVkVGltZSgpIGNvbnN0IGZpbmFsOwor
ICAgIGRvdWJsZSBsaXZlVXBkYXRlSW50ZXJ2YWwoKSBjb25zdCBmaW5hbDsKKworICAgIHVuc2ln
bmVkIGxvbmcgbG9uZyB0b3RhbEJ5dGVzKCkgY29uc3QgZmluYWw7CisgICAgYm9vbCBkaWRMb2Fk
aW5nUHJvZ3Jlc3MoKSBjb25zdCBmaW5hbDsKKworICAgIHZvaWQgc2V0U2l6ZShjb25zdCBJbnRT
aXplJikgZmluYWw7CisKKyAgICB2b2lkIHBhaW50KEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZs
b2F0UmVjdCYpIGZpbmFsOworCisgICAgdm9pZCBwYWludEN1cnJlbnRGcmFtZUluQ29udGV4dChH
cmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJlY3QmKSBmaW5hbDsKKyAgICBib29sIGNvcHlW
aWRlb1RleHR1cmVUb1BsYXRmb3JtVGV4dHVyZShHcmFwaGljc0NvbnRleHQzRCosIFBsYXRmb3Jt
M0RPYmplY3QsIEdDM0RlbnVtLCBHQzNEaW50LCBHQzNEZW51bSwgR0MzRGVudW0sIEdDM0RlbnVt
LCBib29sLCBib29sKSBmaW5hbDsKKyAgICBOYXRpdmVJbWFnZVB0ciBuYXRpdmVJbWFnZUZvckN1
cnJlbnRUaW1lKCkgZmluYWw7CisKKyAgICB2b2lkIHNldFByZWxvYWQoTWVkaWFQbGF5ZXI6OlBy
ZWxvYWQpIGZpbmFsOworCisgICAgYm9vbCBoYXNBdmFpbGFibGVWaWRlb0ZyYW1lKCkgY29uc3Qg
ZmluYWw7CisKKyAgICBib29sIGNhbkxvYWRQb3N0ZXIoKSBjb25zdCBmaW5hbDsKKyAgICB2b2lk
IHNldFBvc3Rlcihjb25zdCBTdHJpbmcmKSBmaW5hbDsKKworI2lmIFVTRShOQVRJVkVfRlVMTFND
UkVFTl9WSURFTykKKyAgICB2b2lkIGVudGVyRnVsbHNjcmVlbigpIGZpbmFsOworICAgIHZvaWQg
ZXhpdEZ1bGxzY3JlZW4oKSBmaW5hbDsKKyNlbmRpZgorCisjaWYgRU5BQkxFKFdJUkVMRVNTX1BM
QVlCQUNLX1RBUkdFVCkKKyAgICBTdHJpbmcgd2lyZWxlc3NQbGF5YmFja1RhcmdldE5hbWUoKSBj
b25zdCBmaW5hbDsKKyAgICBNZWRpYVBsYXllcjo6V2lyZWxlc3NQbGF5YmFja1RhcmdldFR5cGUg
d2lyZWxlc3NQbGF5YmFja1RhcmdldFR5cGUoKSBjb25zdCBmaW5hbDsKKworICAgIGJvb2wgd2ly
ZWxlc3NWaWRlb1BsYXliYWNrRGlzYWJsZWQoKSBjb25zdCBmaW5hbDsKKyAgICB2b2lkIHNldFdp
cmVsZXNzVmlkZW9QbGF5YmFja0Rpc2FibGVkKGJvb2wpIGZpbmFsOworCisgICAgYm9vbCBjYW5Q
bGF5VG9XaXJlbGVzc1BsYXliYWNrVGFyZ2V0KCkgY29uc3QgZmluYWw7CisgICAgYm9vbCBpc0N1
cnJlbnRQbGF5YmFja1RhcmdldFdpcmVsZXNzKCkgY29uc3QgZmluYWw7CisgICAgdm9pZCBzZXRX
aXJlbGVzc1BsYXliYWNrVGFyZ2V0KFJlZjxNZWRpYVBsYXliYWNrVGFyZ2V0PiYmKSBmaW5hbDsK
KworICAgIHZvaWQgc2V0U2hvdWxkUGxheVRvUGxheWJhY2tUYXJnZXQoYm9vbCkgZmluYWw7Cisj
ZW5kaWYKKworI2lmIFVTRShOQVRJVkVfRlVMTFNDUkVFTl9WSURFTykKKyAgICBib29sIGNhbkVu
dGVyRnVsbHNjcmVlbigpIGNvbnN0IGZpbmFsOworI2VuZGlmCisKKyAgICBib29sIHN1cHBvcnRz
QWNjZWxlcmF0ZWRSZW5kZXJpbmcoKSBjb25zdCBmaW5hbDsKKyAgICB2b2lkIGFjY2VsZXJhdGVk
UmVuZGVyaW5nU3RhdGVDaGFuZ2VkKCkgZmluYWw7CisKKyAgICBib29sIHNob3VsZE1haW50YWlu
QXNwZWN0UmF0aW8oKSBjb25zdCBmaW5hbDsKKyAgICB2b2lkIHNldFNob3VsZE1haW50YWluQXNw
ZWN0UmF0aW8oYm9vbCkgZmluYWw7CisKKyAgICBib29sIGhhc1NpbmdsZVNlY3VyaXR5T3JpZ2lu
KCkgY29uc3QgZmluYWw7CisgICAgYm9vbCBkaWRQYXNzQ09SU0FjY2Vzc0NoZWNrKCkgY29uc3Qg
ZmluYWw7CisgICAgT3B0aW9uYWw8Ym9vbD4gd291bGRUYWludE9yaWdpbihjb25zdCBTZWN1cml0
eU9yaWdpbiYpIGNvbnN0IGZpbmFsOworCisgICAgTWVkaWFQbGF5ZXI6Ok1vdmllTG9hZFR5cGUg
bW92aWVMb2FkVHlwZSgpIGNvbnN0IGZpbmFsOworCisgICAgdm9pZCBwcmVwYXJlRm9yUmVuZGVy
aW5nKCkgZmluYWw7CisKKyAgICBNZWRpYVRpbWUgbWVkaWFUaW1lRm9yVGltZVZhbHVlKGNvbnN0
IE1lZGlhVGltZSYgdGltZVZhbHVlKSBjb25zdCBmaW5hbDsKKworICAgIGRvdWJsZSBtYXhpbXVt
RHVyYXRpb25Ub0NhY2hlTWVkaWFUaW1lKCkgY29uc3QgZmluYWw7CisKKyAgICB1bnNpZ25lZCBk
ZWNvZGVkRnJhbWVDb3VudCgpIGNvbnN0IGZpbmFsOworICAgIHVuc2lnbmVkIGRyb3BwZWRGcmFt
ZUNvdW50KCkgY29uc3QgZmluYWw7CisgICAgdW5zaWduZWQgYXVkaW9EZWNvZGVkQnl0ZUNvdW50
KCkgY29uc3QgZmluYWw7CisgICAgdW5zaWduZWQgdmlkZW9EZWNvZGVkQnl0ZUNvdW50KCkgY29u
c3QgZmluYWw7CisKKyAgICB2b2lkIHNldFByaXZhdGVCcm93c2luZ01vZGUoYm9vbCkgZmluYWw7
CisgICAgU3RyaW5nIGVuZ2luZURlc2NyaXB0aW9uKCkgY29uc3QgZmluYWw7CisKKyNpZiBFTkFC
TEUoV0VCX0FVRElPKQorICAgIEF1ZGlvU291cmNlUHJvdmlkZXIqIGF1ZGlvU291cmNlUHJvdmlk
ZXIoKSBmaW5hbDsKKyNlbmRpZgorCisjaWYgRU5BQkxFKExFR0FDWV9FTkNSWVBURURfTUVESUEp
CisgICAgc3RkOjp1bmlxdWVfcHRyPExlZ2FjeUNETVNlc3Npb24+IGNyZWF0ZVNlc3Npb24oY29u
c3QgU3RyaW5nJiwgTGVnYWN5Q0RNU2Vzc2lvbkNsaWVudCopIGZpbmFsOworICAgIHZvaWQgc2V0
Q0RNU2Vzc2lvbihMZWdhY3lDRE1TZXNzaW9uKikgZmluYWw7CisgICAgdm9pZCBrZXlBZGRlZCgp
IGZpbmFsOworI2VuZGlmCisKKyNpZiBFTkFCTEUoRU5DUllQVEVEX01FRElBKQorICAgIHZvaWQg
Y2RtSW5zdGFuY2VBdHRhY2hlZChDRE1JbnN0YW5jZSYpIGZpbmFsOworICAgIHZvaWQgY2RtSW5z
dGFuY2VEZXRhY2hlZChDRE1JbnN0YW5jZSYpIGZpbmFsOworICAgIHZvaWQgYXR0ZW1wdFRvRGVj
cnlwdFdpdGhJbnN0YW5jZShDRE1JbnN0YW5jZSYpIGZpbmFsOworICAgIGJvb2wgd2FpdGluZ0Zv
cktleSgpIGNvbnN0IGZpbmFsOworI2VuZGlmCisKKyNpZiBFTkFCTEUoVklERU9fVFJBQ0spCisg
ICAgYm9vbCByZXF1aXJlc1RleHRUcmFja1JlcHJlc2VudGF0aW9uKCkgY29uc3QgZmluYWw7Cisg
ICAgdm9pZCBzZXRUZXh0VHJhY2tSZXByZXNlbnRhdGlvbihUZXh0VHJhY2tSZXByZXNlbnRhdGlv
biopIGZpbmFsOworICAgIHZvaWQgc3luY1RleHRUcmFja0JvdW5kcygpIGZpbmFsOworICAgIHZv
aWQgdHJhY2tzQ2hhbmdlZCgpIGZpbmFsOworI2VuZGlmCisKKyNpZiBVU0UoR1NUUkVBTUVSKQor
ICAgIHZvaWQgc2ltdWxhdGVBdWRpb0ludGVycnVwdGlvbigpIGZpbmFsOworI2VuZGlmCisKKyAg
ICB2b2lkIGJlZ2luU2ltdWxhdGVkSERDUEVycm9yKCkgZmluYWw7CisgICAgdm9pZCBlbmRTaW11
bGF0ZWRIRENQRXJyb3IoKSBmaW5hbDsKKworICAgIFN0cmluZyBsYW5ndWFnZU9mUHJpbWFyeUF1
ZGlvVHJhY2soKSBjb25zdCBmaW5hbDsKKworICAgIHNpemVfdCBleHRyYU1lbW9yeUNvc3QoKSBj
b25zdCBmaW5hbDsKKworICAgIHVuc2lnbmVkIGxvbmcgbG9uZyBmaWxlU2l6ZSgpIGNvbnN0IGZp
bmFsOworCisgICAgYm9vbCBlbmRlZCgpIGNvbnN0IGZpbmFsOworCisgICAgT3B0aW9uYWw8Vmlk
ZW9QbGF5YmFja1F1YWxpdHlNZXRyaWNzPiB2aWRlb1BsYXliYWNrUXVhbGl0eU1ldHJpY3MoKSBm
aW5hbDsKKworI2lmIEVOQUJMRShBVkZfQ0FQVElPTlMpCisgICAgdm9pZCBub3RpZnlUcmFja01v
ZGVDaGFuZ2VkKCkgZmluYWw7CisjZW5kaWYKKworICAgIHZvaWQgbm90aWZ5QWN0aXZlU291cmNl
QnVmZmVyc0NoYW5nZWQoKSBmaW5hbDsKKworICAgIHZvaWQgc2V0U2hvdWxkRGlzYWJsZVNsZWVw
KGJvb2wpIGZpbmFsOworCisgICAgdm9pZCBhcHBsaWNhdGlvbldpbGxSZXNpZ25BY3RpdmUoKSBm
aW5hbDsKKyAgICB2b2lkIGFwcGxpY2F0aW9uRGlkQmVjb21lQWN0aXZlKCkgZmluYWw7CisKKyNp
ZiBVU0UoQVZGT1VOREFUSU9OKQorICAgIEFWUGxheWVyICpvYmpDQVZGb3VuZGF0aW9uQVZQbGF5
ZXIoKSBjb25zdCBmaW5hbCB7IHJldHVybiBudWxscHRyOyB9CisjZW5kaWYKKworICAgIGJvb2wg
cGVyZm9ybVRhc2tBdE1lZGlhVGltZShXVEY6OkZ1bmN0aW9uPHZvaWQoKT4mJiwgTWVkaWFUaW1l
KSBmaW5hbDsKKworICAgIGJvb2wgc2hvdWxkSWdub3JlSW50cmluc2ljU2l6ZSgpIGZpbmFsOwor
CisgICAgTWVkaWFQbGF5ZXIqIG1fcGxheWVyIHsgbnVsbHB0ciB9OworICAgIFJlbW90ZU1lZGlh
UGxheWVyTWFuYWdlciBtX21hbmFnZXI7CisgICAgU3RyaW5nIG1fcmVtb3RlRW5naW5lSWRlbnRp
ZmllcjsKKyAgICBNZWRpYVBsYXllclByaXZhdGVSZW1vdGVJZGVudGlmaWVyIG1faWRlbnRpZmll
cjsKKworI2lmICFSRUxFQVNFX0xPR19ESVNBQkxFRAorICAgIFJlZjxjb25zdCBMb2dnZXI+IG1f
bG9nZ2VyOworICAgIGNvbnN0IHZvaWQqIG1fbG9nSWRlbnRpZmllcjsKKyNlbmRpZgorCisgICAg
Ym9vbCBtX2ludmFsaWQgeyBmYWxzZSB9OworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisK
KyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9N
ZWRpYVBsYXllclByaXZhdGVSZW1vdGVJZGVudGlmaWVyLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvR1BVL21lZGlhL01lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZUlkZW50aWZpZXIuaApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi44N2U3YjhiYmFlYzM1MzRlN2RlZmQ3ODIzODYxMDE0MzIxNzUzOGM3Ci0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9NZWRpYVBsYXll
clByaXZhdGVSZW1vdGVJZGVudGlmaWVyLmgKQEAgLTAsMCArMSwzNSBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlICwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENP
TlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICog
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAq
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgPHd0Zi9PYmplY3RJZGVudGlmaWVyLmg+CisKK25h
bWVzcGFjZSBXZWJLaXQgeworCitlbnVtIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZUlkZW50aWZp
ZXJUeXBlIHsgfTsKK3VzaW5nIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZUlkZW50aWZpZXIgPSBP
YmplY3RJZGVudGlmaWVyPE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZUlkZW50aWZpZXJUeXBlPjsK
KworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVNZWRpYVBsYXllck1hbmFnZXIuY3BwIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVNZWRpYVBsYXllck1hbmFnZXIuY3BwCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLmRkNDljZGUzZTc1YjEyMjI0MzBiYWRmMTUyMzkxNjI1MThmMmE2ZmIKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZU1l
ZGlhUGxheWVyTWFuYWdlci5jcHAKQEAgLTAsMCArMSwyMTMgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJV
VE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMg
Q09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5j
bHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyLmgiCisK
KyNpZiBFTkFCTEUoR1BVX1BST0NFU1MpCisKKyNpbmNsdWRlICJSZW1vdGVNZWRpYVBsYXllck1h
bmFnZXJNZXNzYWdlcy5oIgorI2luY2x1ZGUgIlJlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5
TWVzc2FnZXMuaCIKKyNpbmNsdWRlICJXZWJDb3JlQXJndW1lbnRDb2RlcnMuaCIKKyNpbmNsdWRl
ICJXZWJQcm9jZXNzLmgiCisjaW5jbHVkZSAiV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5o
IgorI2luY2x1ZGUgPFdlYkNvcmUvTWVkaWFQbGF5ZXIuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL01l
ZGlhUGxheWVyRW5naW5lSWRlbnRpZmllcnMuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL05vdEltcGxl
bWVudGVkLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9TZXR0aW5ncy5oPgorI2luY2x1ZGUgPHd0Zi9B
c3NlcnRpb25zLmg+CisKK25hbWVzcGFjZSBXZWJLaXQgewordXNpbmcgbmFtZXNwYWNlIFBBTDsK
K3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOworCitjbGFzcyBNZWRpYVBsYXllclJlbW90ZUZhY3Rv
cnkgOiBwdWJsaWMgTWVkaWFQbGF5ZXJGYWN0b3J5IHsKK3B1YmxpYzoKKyAgICBNZWRpYVBsYXll
clJlbW90ZUZhY3RvcnkoU3RyaW5nIHJlbW90ZUVuZ2luZUlkZW50aWZpZXIsIFJlbW90ZU1lZGlh
UGxheWVyTWFuYWdlciYgbWFuYWdlcikKKyAgICAgICAgOiBtX3JlbW90ZUVuZ2luZUlkZW50aWZp
ZXIocmVtb3RlRW5naW5lSWRlbnRpZmllcikKKyAgICAgICAgLCBtX21hbmFnZXIobWFuYWdlcikK
KyAgICB7CisgICAgfQorCisgICAgU3RyaW5nIGlkZW50aWZpZXIoKSBjb25zdCBmaW5hbCB7IHJl
dHVybiBtX3JlbW90ZUVuZ2luZUlkZW50aWZpZXI7IH07CisKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8
TWVkaWFQbGF5ZXJQcml2YXRlSW50ZXJmYWNlPiBjcmVhdGVNZWRpYUVuZ2luZVBsYXllcihNZWRp
YVBsYXllciogcGxheWVyKSBjb25zdCBmaW5hbAorICAgIHsKKyAgICAgICAgcmV0dXJuIG1fbWFu
YWdlci5jcmVhdGVSZW1vdGVNZWRpYVBsYXllcihwbGF5ZXIsIG1fcmVtb3RlRW5naW5lSWRlbnRp
Zmllcik7CisgICAgfQorCisgICAgdm9pZCBnZXRTdXBwb3J0ZWRUeXBlcyhIYXNoU2V0PFN0cmlu
ZywgQVNDSUlDYXNlSW5zZW5zaXRpdmVIYXNoPiYgdHlwZXMpIGNvbnN0IGZpbmFsCisgICAgewor
ICAgICAgICByZXR1cm4gbV9tYW5hZ2VyLmdldFN1cHBvcnRlZFR5cGVzKG1fcmVtb3RlRW5naW5l
SWRlbnRpZmllciwgdHlwZXMpOworICAgIH0KKworICAgIE1lZGlhUGxheWVyOjpTdXBwb3J0c1R5
cGUgc3VwcG9ydHNUeXBlQW5kQ29kZWNzKGNvbnN0IE1lZGlhRW5naW5lU3VwcG9ydFBhcmFtZXRl
cnMmIHBhcmFtZXRlcnMpIGNvbnN0IGZpbmFsCisgICAgeworICAgICAgICByZXR1cm4gbV9tYW5h
Z2VyLnN1cHBvcnRzVHlwZUFuZENvZGVjcyhtX3JlbW90ZUVuZ2luZUlkZW50aWZpZXIsIHBhcmFt
ZXRlcnMpOworICAgIH0KKworICAgIEhhc2hTZXQ8UmVmUHRyPFNlY3VyaXR5T3JpZ2luPj4gb3Jp
Z2luc0luTWVkaWFDYWNoZShjb25zdCBTdHJpbmcmIHBhdGgpIGNvbnN0IGZpbmFsCisgICAgewor
ICAgICAgICByZXR1cm4gbV9tYW5hZ2VyLm9yaWdpbnNJbk1lZGlhQ2FjaGUobV9yZW1vdGVFbmdp
bmVJZGVudGlmaWVyLCBwYXRoKTsKKyAgICB9CisKKyAgICB2b2lkIGNsZWFyTWVkaWFDYWNoZShj
b25zdCBTdHJpbmcmIHBhdGgsIFdhbGxUaW1lIG1vZGlmaWVkU2luY2UpIGNvbnN0IGZpbmFsCisg
ICAgeworICAgICAgICByZXR1cm4gbV9tYW5hZ2VyLmNsZWFyTWVkaWFDYWNoZShtX3JlbW90ZUVu
Z2luZUlkZW50aWZpZXIsIHBhdGgsIG1vZGlmaWVkU2luY2UpOworICAgIH0KKworICAgIHZvaWQg
Y2xlYXJNZWRpYUNhY2hlRm9yT3JpZ2lucyhjb25zdCBTdHJpbmcmIHBhdGgsIGNvbnN0IEhhc2hT
ZXQ8UmVmUHRyPFNlY3VyaXR5T3JpZ2luPj4mIG9yaWdpbnMpIGNvbnN0IGZpbmFsCisgICAgewor
ICAgICAgICByZXR1cm4gbV9tYW5hZ2VyLmNsZWFyTWVkaWFDYWNoZUZvck9yaWdpbnMobV9yZW1v
dGVFbmdpbmVJZGVudGlmaWVyLCBwYXRoLCBvcmlnaW5zKTsKKyAgICB9CisKKyAgICBib29sIHN1
cHBvcnRzS2V5U3lzdGVtKGNvbnN0IFN0cmluZyYga2V5U3lzdGVtLCBjb25zdCBTdHJpbmcmIG1p
bWVUeXBlKSBjb25zdCBmaW5hbAorICAgIHsKKyAgICAgICAgcmV0dXJuIG1fbWFuYWdlci5zdXBw
b3J0c0tleVN5c3RlbShtX3JlbW90ZUVuZ2luZUlkZW50aWZpZXIsIGtleVN5c3RlbSwgbWltZVR5
cGUpOworICAgIH0KKworcHJpdmF0ZToKKyAgICBTdHJpbmcgbV9yZW1vdGVFbmdpbmVJZGVudGlm
aWVyOworICAgIFJlbW90ZU1lZGlhUGxheWVyTWFuYWdlciYgbV9tYW5hZ2VyOworfTsKKworUmVt
b3RlTWVkaWFQbGF5ZXJNYW5hZ2VyOjpSZW1vdGVNZWRpYVBsYXllck1hbmFnZXIoV2ViUHJvY2Vz
cyYgcHJvY2VzcykKKyAgICA6IG1fcHJvY2Vzcyhwcm9jZXNzKQoreworICAgIG1fcHJvY2Vzcy5h
ZGRNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OlJlbW90ZU1lZGlhUGxheWVyTWFuYWdlcjo6bWVz
c2FnZVJlY2VpdmVyTmFtZSgpLCAqdGhpcyk7Cit9CisKK1JlbW90ZU1lZGlhUGxheWVyTWFuYWdl
cjo6flJlbW90ZU1lZGlhUGxheWVyTWFuYWdlcigpCit7CisgICAgbV9wcm9jZXNzLnJlbW92ZU1l
c3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6UmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyOjptZXNzYWdl
UmVjZWl2ZXJOYW1lKCkpOworfQorCitjb25zdCBjaGFyKiBSZW1vdGVNZWRpYVBsYXllck1hbmFn
ZXI6OnN1cHBsZW1lbnROYW1lKCkKK3sKKyAgICByZXR1cm4gIlJlbW90ZU1lZGlhUGxheWVyTWFu
YWdlciI7Cit9CisKK3ZvaWQgUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyOjppbml0aWFsaXplKGNv
bnN0IFdlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMmKQoreworLy8gRklYTUU6IFVzZSBwYXJh
bWV0ZXJzLm1lZGlhTUlNRVR5cGVzLgorfQorCitzdGQ6OnVuaXF1ZV9wdHI8TWVkaWFQbGF5ZXJQ
cml2YXRlSW50ZXJmYWNlPiBSZW1vdGVNZWRpYVBsYXllck1hbmFnZXI6OmNyZWF0ZVJlbW90ZU1l
ZGlhUGxheWVyKE1lZGlhUGxheWVyKiBwbGF5ZXIsIGNvbnN0IFN0cmluZyYgcmVtb3RlRW5naW5l
SWRlbnRpZmllcikKK3sKKyAgICBhdXRvIGlkID0gTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlSWRl
bnRpZmllcjo6Z2VuZXJhdGUoKTsKKworICAgIGJvb2wgaGF2ZVJlbW90ZVByb3h5OworICAgIGJv
b2wgc2VuZFN1Y2NlZWRlZCA9IGdwdVByb2Nlc3NDb25uZWN0aW9uKCkuc2VuZFN5bmMoTWVzc2Fn
ZXM6OlJlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5OjpDcmVhdGVNZWRpYVBsYXllcihpZCwg
cmVtb3RlRW5naW5lSWRlbnRpZmllciksIE1lc3NhZ2VzOjpSZW1vdGVNZWRpYVBsYXllck1hbmFn
ZXJQcm94eTo6Q3JlYXRlTWVkaWFQbGF5ZXI6OlJlcGx5KGhhdmVSZW1vdGVQcm94eSksIDApOwor
CisgICAgYXV0byByZW1vdGVQbGF5ZXIgPSBNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OmNyZWF0
ZShwbGF5ZXIsIHJlbW90ZUVuZ2luZUlkZW50aWZpZXIsIGlkLCAqdGhpcyk7CisKKyAgICBpZiAo
IWhhdmVSZW1vdGVQcm94eSB8fCAhc2VuZFN1Y2NlZWRlZCkgeworICAgICAgICBXVEZMb2dBbHdh
eXMoIkZhaWxlZCB0byBjcmVhdGUgcmVtb3RlIG1lZGlhIHBsYXllci4iKTsKKyAgICAgICAgcmVt
b3RlUGxheWVyLT5pbnZhbGlkYXRlKCk7CisgICAgfQorCisgICAgbV9wbGF5ZXJzLmFkZChpZCwg
bWFrZVdlYWtQdHIoKnJlbW90ZVBsYXllcikpOworICAgIHJldHVybiByZW1vdGVQbGF5ZXI7Cit9
CisKK3ZvaWQgUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyOjpnZXRTdXBwb3J0ZWRUeXBlcyhjb25z
dCBTdHJpbmcmIHJlbW90ZUVuZ2luZUlkZW50aWZpZXIsIEhhc2hTZXQ8U3RyaW5nLCBBU0NJSUNh
c2VJbnNlbnNpdGl2ZUhhc2g+JiByZXN1bHQpCit7CisgICAgLy8gRklYTUU6IHN1cHBvcnRlZCB0
eXBlcyBkb24ndCBjaGFuZ2UsIGNhY2hlIHRoZW0uCisgICAgVmVjdG9yPFN0cmluZz4gdHlwZXM7
CisgICAgaWYgKCFncHVQcm9jZXNzQ29ubmVjdGlvbigpLnNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1v
dGVNZWRpYVBsYXllck1hbmFnZXJQcm94eTo6R2V0U3VwcG9ydGVkVHlwZXMocmVtb3RlRW5naW5l
SWRlbnRpZmllciksIE1lc3NhZ2VzOjpSZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eTo6R2V0
U3VwcG9ydGVkVHlwZXM6OlJlcGx5KHR5cGVzKSwgMCkpCisgICAgICAgIHJldHVybjsKKworICAg
IHJlc3VsdCA9IEhhc2hTZXQ8U3RyaW5nLCBBU0NJSUNhc2VJbnNlbnNpdGl2ZUhhc2g+KCk7Cisg
ICAgZm9yIChhdXRvJiB0eXBlIDogdHlwZXMpCisgICAgICAgIHJlc3VsdC5hZGQodHlwZSk7Cit9
CisKK1dlYkNvcmU6Ok1lZGlhUGxheWVyOjpTdXBwb3J0c1R5cGUgUmVtb3RlTWVkaWFQbGF5ZXJN
YW5hZ2VyOjpzdXBwb3J0c1R5cGVBbmRDb2RlY3MoY29uc3QgU3RyaW5nJiByZW1vdGVFbmdpbmVJ
ZGVudGlmaWVyLCBjb25zdCBXZWJDb3JlOjpNZWRpYUVuZ2luZVN1cHBvcnRQYXJhbWV0ZXJzJiBw
YXJhbWV0ZXJzKQoreworICAgIC8vIEZJWE1FOiBzdXBwb3J0ZWQgdHlwZXMgZG9uJ3QgY2hhbmdl
LCBjYWNoZSB0aGVtLgorCisgICAgLy8gRklYTUU6IGNvbnZlcnQgV2ViQ29yZTo6TWVkaWFQbGF5
ZXI6OlN1cHBvcnRzVHlwZSB0byBlbnVtIGNsYXNzIHNvIGl0IGNhbiBiZSBlbmNvZGVkIGFuZCBz
ZW50IHZpYSBJUEMKKyAgICBpbnQgcmVzdWx0OworICAgIGlmICghZ3B1UHJvY2Vzc0Nvbm5lY3Rp
b24oKS5zZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHk6OlN1
cHBvcnRzVHlwZShyZW1vdGVFbmdpbmVJZGVudGlmaWVyLCBwYXJhbWV0ZXJzKSwgTWVzc2FnZXM6
OlJlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5OjpTdXBwb3J0c1R5cGU6OlJlcGx5KHJlc3Vs
dCksIDApKQorICAgICAgICByZXR1cm4gTWVkaWFQbGF5ZXI6OklzTm90U3VwcG9ydGVkOworCisg
ICAgcmV0dXJuIHN0YXRpY19jYXN0PFdlYkNvcmU6Ok1lZGlhUGxheWVyOjpTdXBwb3J0c1R5cGU+
KHJlc3VsdCk7Cit9CisKKworYm9vbCBSZW1vdGVNZWRpYVBsYXllck1hbmFnZXI6OnN1cHBvcnRz
S2V5U3lzdGVtKGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYga2V5U3lzdGVtLCBjb25zdCBT
dHJpbmcmIG1pbWVUeXBlKQoreworICAgIHJldHVybiBmYWxzZTsKK30KKworCitIYXNoU2V0PFJl
ZlB0cjxXZWJDb3JlOjpTZWN1cml0eU9yaWdpbj4+IFJlbW90ZU1lZGlhUGxheWVyTWFuYWdlcjo6
b3JpZ2luc0luTWVkaWFDYWNoZShjb25zdCBTdHJpbmcmIHJlbW90ZUVuZ2luZUlkZW50aWZpZXIs
IGNvbnN0IFN0cmluZyYgcGF0aCkKK3sKKyAgICBWZWN0b3I8V2ViQ29yZTo6U2VjdXJpdHlPcmln
aW5EYXRhPiBvcmlnaW5EYXRhczsKKyAgICBpZiAoIWdwdVByb2Nlc3NDb25uZWN0aW9uKCkuc2Vu
ZFN5bmMoTWVzc2FnZXM6OlJlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5OjpPcmlnaW5zSW5N
ZWRpYUNhY2hlKHJlbW90ZUVuZ2luZUlkZW50aWZpZXIsIHBhdGgpLCBNZXNzYWdlczo6UmVtb3Rl
TWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHk6Ok9yaWdpbnNJbk1lZGlhQ2FjaGU6OlJlcGx5KG9yaWdp
bkRhdGFzKSwgMCkpCisgICAgICAgIHJldHVybiB7IH07CisKKyAgICBIYXNoU2V0PFJlZlB0cjxT
ZWN1cml0eU9yaWdpbj4+IG9yaWdpbnM7CisgICAgZm9yIChhdXRvJiBvcmlnaW5EYXRhIDogb3Jp
Z2luRGF0YXMpCisgICAgICAgIG9yaWdpbnMuYWRkKG9yaWdpbkRhdGEuc2VjdXJpdHlPcmlnaW4o
KSk7CisKKyAgICByZXR1cm4gb3JpZ2luczsKK30KKwordm9pZCBSZW1vdGVNZWRpYVBsYXllck1h
bmFnZXI6OmNsZWFyTWVkaWFDYWNoZShjb25zdCBTdHJpbmcmIHJlbW90ZUVuZ2luZUlkZW50aWZp
ZXIsIGNvbnN0IFN0cmluZyYgcGF0aCwgV2FsbFRpbWUgbW9kaWZpZWRTaW5jZSkKK3sKKyAgICBn
cHVQcm9jZXNzQ29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6OlJlbW90ZU1lZGlhUGxheWVyTWFu
YWdlclByb3h5OjpDbGVhck1lZGlhQ2FjaGUocmVtb3RlRW5naW5lSWRlbnRpZmllciwgcGF0aCwg
bW9kaWZpZWRTaW5jZSksIDApOworfQorCit2b2lkIFJlbW90ZU1lZGlhUGxheWVyTWFuYWdlcjo6
Y2xlYXJNZWRpYUNhY2hlRm9yT3JpZ2lucyhjb25zdCBTdHJpbmcmIHJlbW90ZUVuZ2luZUlkZW50
aWZpZXIsIGNvbnN0IFN0cmluZyYgcGF0aCwgY29uc3QgSGFzaFNldDxSZWZQdHI8V2ViQ29yZTo6
U2VjdXJpdHlPcmlnaW4+PiYgb3JpZ2lucykKK3sKKyAgICBWZWN0b3I8V2ViQ29yZTo6U2VjdXJp
dHlPcmlnaW5EYXRhPiBvcmlnaW5EYXRhOworICAgIGZvciAoYXV0byYgb3JpZ2luIDogb3JpZ2lu
cykKKyAgICAgICAgb3JpZ2luRGF0YS5hcHBlbmQob3JpZ2luLT5kYXRhKCkpOworCisgICAgZ3B1
UHJvY2Vzc0Nvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpSZW1vdGVNZWRpYVBsYXllck1hbmFn
ZXJQcm94eTo6Q2xlYXJNZWRpYUNhY2hlRm9yT3JpZ2lucyhyZW1vdGVFbmdpbmVJZGVudGlmaWVy
LCBwYXRoLCBvcmlnaW5EYXRhKSwgMCk7Cit9CisKK3ZvaWQgUmVtb3RlTWVkaWFQbGF5ZXJNYW5h
Z2VyOjpuZXR3b3JrU3RhdGVDaGFuZ2VkKE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZUlkZW50aWZp
ZXIpCit7Cit9CisKK3ZvaWQgUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyOjp1cGRhdGVQcmVmZXJl
bmNlcyhjb25zdCBTZXR0aW5ncyYgc2V0dGluZ3MpCit7CisgICAgYXV0byByZWdpc3RlckVuZ2lu
ZSA9IFt0aGlzXShNZWRpYUVuZ2luZVJlZ2lzdHJhciByZWdpc3RyYXIsIGNvbnN0IFN0cmluZyYg
cmVtb3RlRW5naW5lSWRlbnRpZmllcikgeworICAgICAgICByZWdpc3RyYXIobWFrZVVuaXF1ZTxN
ZWRpYVBsYXllclJlbW90ZUZhY3Rvcnk+KHJlbW90ZUVuZ2luZUlkZW50aWZpZXIsICp0aGlzKSk7
CisgICAgfTsKKworICAgIFJlbW90ZU1lZGlhUGxheWVyU3VwcG9ydDo6c2V0UmVnaXN0ZXJSZW1v
dGVQbGF5ZXJDYWxsYmFjayhzZXR0aW5ncy51c2VHUFVQcm9jZXNzRm9yTWVkaWEoKSA/IHJlZ2lz
dGVyRW5naW5lIDogc3RkOjpmdW5jdGlvbjx2b2lkKE1lZGlhRW5naW5lUmVnaXN0cmFyLCBjb25z
dCBTdHJpbmcmKT4geyB9KTsKK30KKworSVBDOjpDb25uZWN0aW9uJiBSZW1vdGVNZWRpYVBsYXll
ck1hbmFnZXI6OmdwdVByb2Nlc3NDb25uZWN0aW9uKCkgY29uc3QKK3sKKyAgICByZXR1cm4gV2Vi
UHJvY2Vzczo6c2luZ2xldG9uKCkuZW5zdXJlR1BVUHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25uZWN0
aW9uKCk7Cit9CisKK30KKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvR1BVL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyTWFuYWdlci5oIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVNZWRpYVBsYXllck1hbmFnZXIuaApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi4zNGI4YjNkMzk3Y2YwMDBjZjRhMjk3ODc0MTdkNmVmZTc1OTI2ZTkyCi0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVNZWRpYVBs
YXllck1hbmFnZXIuaApAQCAtMCwwICsxLDg2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE5
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBB
UyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJV
VE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
CisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNl
CisKKyNpZiBFTkFCTEUoR1BVX1BST0NFU1MpCisKKyNpbmNsdWRlICJNZWRpYVBsYXllclByaXZh
dGVSZW1vdGVJZGVudGlmaWVyLmgiCisjaW5jbHVkZSAiTWVzc2FnZVJlY2VpdmVyLmgiCisjaW5j
bHVkZSAiU2hhcmVkTWVtb3J5LmgiCisjaW5jbHVkZSAiV2ViUHJvY2Vzc1N1cHBsZW1lbnQuaCIK
KyNpbmNsdWRlIDxXZWJDb3JlL01lZGlhUGxheWVyLmg+CisjaW5jbHVkZSA8d3RmL0hhc2hNYXAu
aD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworY2xhc3MgTWVkaWFQbGF5ZXI7CitjbGFzcyBNZWRp
YVBsYXllclByaXZhdGVJbnRlcmZhY2U7CitjbGFzcyBTZXR0aW5nczsKK30KKworbmFtZXNwYWNl
IFdlYktpdCB7CisKK2NsYXNzIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTsKK2NsYXNzIFdlYlBy
b2Nlc3M7CisKK2NsYXNzIFJlbW90ZU1lZGlhUGxheWVyTWFuYWdlciA6IHB1YmxpYyBXZWJQcm9j
ZXNzU3VwcGxlbWVudCwgcHVibGljIElQQzo6TWVzc2FnZVJlY2VpdmVyIHsKKyAgICBXVEZfTUFL
RV9GQVNUX0FMTE9DQVRFRDsKK3B1YmxpYzoKKyAgICBleHBsaWNpdCBSZW1vdGVNZWRpYVBsYXll
ck1hbmFnZXIoV2ViUHJvY2VzcyYpOworICAgIH5SZW1vdGVNZWRpYVBsYXllck1hbmFnZXIoKTsK
KworICAgIHN0YXRpYyBjb25zdCBjaGFyKiBzdXBwbGVtZW50TmFtZSgpOworCisgICAgdm9pZCB1
cGRhdGVQcmVmZXJlbmNlcyhjb25zdCBXZWJDb3JlOjpTZXR0aW5ncyYpOworCisgICAgSVBDOjpD
b25uZWN0aW9uJiBncHVQcm9jZXNzQ29ubmVjdGlvbigpIGNvbnN0OworCitwcml2YXRlOgorICAg
IHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVJbnRlcmZhY2U+IGNy
ZWF0ZVJlbW90ZU1lZGlhUGxheWVyKFdlYkNvcmU6Ok1lZGlhUGxheWVyKiwgY29uc3QgU3RyaW5n
Jik7CisKKyAgICAvLyBXZWJQcm9jZXNzU3VwcGxlbWVudAorICAgIHZvaWQgaW5pdGlhbGl6ZShj
b25zdCBXZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzJikgZmluYWw7CisKKyAgICAvLyBJUEM6
Ok1lc3NhZ2VSZWNlaXZlcgorICAgIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25uZWN0
aW9uJiwgSVBDOjpEZWNvZGVyJikgZmluYWw7CisKKyAgICAvLyBNZXNzYWdlczo6UmVtb3RlTWVk
aWFQbGF5ZXJNYW5hZ2VyCisgICAgdm9pZCBuZXR3b3JrU3RhdGVDaGFuZ2VkKE1lZGlhUGxheWVy
UHJpdmF0ZVJlbW90ZUlkZW50aWZpZXIpOworCisgICAgZnJpZW5kIGNsYXNzIE1lZGlhUGxheWVy
UmVtb3RlRmFjdG9yeTsKKyAgICB2b2lkIGdldFN1cHBvcnRlZFR5cGVzKGNvbnN0IFN0cmluZyYs
IEhhc2hTZXQ8U3RyaW5nLCBBU0NJSUNhc2VJbnNlbnNpdGl2ZUhhc2g+Jik7CisgICAgV2ViQ29y
ZTo6TWVkaWFQbGF5ZXI6OlN1cHBvcnRzVHlwZSBzdXBwb3J0c1R5cGVBbmRDb2RlY3MoY29uc3Qg
U3RyaW5nJiwgY29uc3QgV2ViQ29yZTo6TWVkaWFFbmdpbmVTdXBwb3J0UGFyYW1ldGVycyYpOwor
ICAgIGJvb2wgc3VwcG9ydHNLZXlTeXN0ZW0oY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiBr
ZXlTeXN0ZW0sIGNvbnN0IFN0cmluZyYgbWltZVR5cGUpOworICAgIEhhc2hTZXQ8UmVmUHRyPFdl
YkNvcmU6OlNlY3VyaXR5T3JpZ2luPj4gb3JpZ2luc0luTWVkaWFDYWNoZShjb25zdCBTdHJpbmcm
LCBjb25zdCBTdHJpbmcmKTsKKyAgICB2b2lkIGNsZWFyTWVkaWFDYWNoZShjb25zdCBTdHJpbmcm
LCBjb25zdCBTdHJpbmcmLCBXYWxsVGltZSBtb2RpZmllZFNpbmNlKTsKKyAgICB2b2lkIGNsZWFy
TWVkaWFDYWNoZUZvck9yaWdpbnMoY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiwgY29uc3Qg
SGFzaFNldDxSZWZQdHI8V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4+PiYpOworCisgICAgSGFzaE1h
cDxNZWRpYVBsYXllclByaXZhdGVSZW1vdGVJZGVudGlmaWVyLCBXZWFrUHRyPE1lZGlhUGxheWVy
UHJpdmF0ZVJlbW90ZT4+IG1fcGxheWVyczsKKyAgICBXZWJQcm9jZXNzJiBtX3Byb2Nlc3M7Cit9
OworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyTWFuYWdlci5tZXNz
YWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlTWVkaWFQ
bGF5ZXJNYW5hZ2VyLm1lc3NhZ2VzLmluCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmE5MzM1N2MyYmE4NWZmMWRkZWNj
YTA3YzMwMzkxZjhlMjAyOTIxMmYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyTWFuYWdlci5tZXNzYWdlcy5pbgpA
QCAtMCwwICsxLDMyIEBACisjIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyMgYXJlIG1ldDoKKyMg
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorIyAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisjICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyMgQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisjIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKKyMgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisjIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyMgQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YKKyMgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTCisjIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisjIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
CisjIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YKKyMgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCisj
aWYgRU5BQkxFKFZJREVPKQorCittZXNzYWdlcyAtPiBSZW1vdGVNZWRpYVBsYXllck1hbmFnZXIg
Tm90UmVmQ291bnRlZCB7CisKKyAgICBOZXR3b3JrU3RhdGVDaGFuZ2VkKFdlYktpdDo6TWVkaWFQ
bGF5ZXJQcml2YXRlUmVtb3RlSWRlbnRpZmllciBpZCkKKworfQorCisjZW5kaWYKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKaW5kZXggM2MyZmQxMmM1ODhh
M2I3ZmJiNDAzZDc5NTM0NzBlNWI3YzJhNmMwYy4uOTIzMzk5OTk5Yzc4OTMzYjk4NDczZDA3YjRh
MmI0ZTAwZmRhNmI0ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBh
Z2UvV2ViUGFnZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2Vi
UGFnZS5jcHAKQEAgLTMxMiw2ICszMTIsMTAgQEAKICNpbmNsdWRlICJXZWJEZXZpY2VPcmllbnRh
dGlvblVwZGF0ZVByb3ZpZGVyLmgiCiAjZW5kaWYKIAorI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykK
KyNpbmNsdWRlICJSZW1vdGVNZWRpYVBsYXllck1hbmFnZXIuaCIKKyNlbmRpZgorCiBuYW1lc3Bh
Y2UgV2ViS2l0IHsKIHVzaW5nIG5hbWVzcGFjZSBKU0M7CiB1c2luZyBuYW1lc3BhY2UgV2ViQ29y
ZTsKQEAgLTM2MDYsNiArMzYxMCwxMCBAQCB2b2lkIFdlYlBhZ2U6OnVwZGF0ZVByZWZlcmVuY2Vz
KGNvbnN0IFdlYlByZWZlcmVuY2VzU3RvcmUmIHN0b3JlKQogCiAgICAgaWYgKG1fZHJhd2luZ0Fy
ZWEpCiAgICAgICAgIG1fZHJhd2luZ0FyZWEtPnVwZGF0ZVByZWZlcmVuY2VzKHN0b3JlKTsKKwor
I2lmIEVOQUJMRShHUFVfUFJPQ0VTUykKKyAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5zdXBw
bGVtZW50PFJlbW90ZU1lZGlhUGxheWVyTWFuYWdlcj4oKS0+dXBkYXRlUHJlZmVyZW5jZXMoc2V0
dGluZ3MpOworI2VuZGlmCiB9CiAKICNpZiBFTkFCTEUoREFUQV9ERVRFQ1RJT04pCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAKaW5kZXggMDZiMDhkNzhiZjU4NzM1ZTgxNzgw
ZmEwNDFjMGE4NzQxZWYwMGVmOS4uMTUxMzI3MWFjM2Y5NzUxNTZmOTk0MmRhZmRmMGNjMGE4Y2Q3
ZTNkMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcApAQCAtMTY0LDYg
KzE2NCwxMCBAQAogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL1JlbW90ZUluc3BlY3Rvci5oPgog
I2VuZGlmCiAKKyNpZiBFTkFCTEUoR1BVX1BST0NFU1MpCisjaW5jbHVkZSAiUmVtb3RlTWVkaWFQ
bGF5ZXJNYW5hZ2VyLmgiCisjZW5kaWYKKwogLy8gVGhpcyBzaG91bGQgYmUgbGVzcyB0aGFuIHBs
dWdJbkF1dG9TdGFydEV4cGlyYXRpb25UaW1lVGhyZXNob2xkIGluIFBsdWdJbkF1dG9TdGFydFBy
b3ZpZGVyLgogc3RhdGljIGNvbnN0IFNlY29uZHMgcGx1Z0luQXV0b1N0YXJ0RXhwaXJhdGlvblRp
bWVVcGRhdGVUaHJlc2hvbGQgeyAyOSAqIDI0ICogNjAgKiA2MCB9OwogCkBAIC0yMjEsNyArMjI1
LDExIEBAIFdlYlByb2Nlc3M6OldlYlByb2Nlc3MoKQogI2lmIFBMQVRGT1JNKENPQ09BKSAmJiBF
TkFCTEUoTUVESUFfU1RSRUFNKQogICAgIGFkZFN1cHBsZW1lbnQ8VXNlck1lZGlhQ2FwdHVyZU1h
bmFnZXI+KCk7CiAjZW5kaWYKLSAgICAKKworI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykKKyAgICBh
ZGRTdXBwbGVtZW50PFJlbW90ZU1lZGlhUGxheWVyTWFuYWdlcj4oKTsKKyNlbmRpZgorCiAgICAg
R2lnYWNhZ2U6OmZvcmJpZERpc2FibGluZ1ByaW1pdGl2ZUdpZ2FjYWdlKCk7CiB9CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>385396</attachid>
            <date>2019-12-11 08:44:25 -0800</date>
            <delta_ts>2019-12-11 10:54:13 -0800</delta_ts>
            <desc>WIP patch</desc>
            <filename>bug-205094-20191211084424.patch</filename>
            <type>text/plain</type>
            <size>153808</size>
            <attacher name="Eric Carlson">eric.carlson</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjUzMzU0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNjE5MDUzNmRmMzEwYTI0
ODBlZTkzZjlkOGUxZGIwMTcwNzRiMGQwMC4uNTQ5YzFiNWRmMGEwZjM4MGRlMWQ5OGJhZjdlZjJl
ZGVkMTUzNjYzNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEwNyBAQAorMjAxOS0xMi0xMCAgRXJp
YyBDYXJsc29uICA8ZXJpYy5jYXJsc29uQGFwcGxlLmNvbT4KKworICAgICAgICBBZGQgaW5mcmFz
dHJ1Y3R1cmUgbmVlZGVkIGZvciBwbGF5aW5nIG1lZGlhIHBsYXllciBpbiB0aGUgR1BVIHByb2Nl
c3MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwNTA5
NAorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNTc4MTUzOTM+CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLCBubyBmdW5jdGlvbmFs
IGNoYW5nZSB5ZXQuCisKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2o6CisgICAgICAgICogcGxhdGZvcm0vQ29udGVudFR5cGUuaDoKKyAgICAgICAgKFdlYkNvcmU6
OkNvbnRlbnRUeXBlOjplbmNvZGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudFR5
cGU6OmRlY29kZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6bnVsbExvZ2dlcik6CisgICAgICAgIChXZWJDb3JlOjpudWxs
Q29udGVudFR5cGVWZWN0b3IpOgorICAgICAgICAoV2ViQ29yZTo6bXV0YWJsZUluc3RhbGxlZE1l
ZGlhRW5naW5lc1ZlY3Rvcik6CisgICAgICAgIChXZWJDb3JlOjpyZWdpc3RlclJlbW90ZVBsYXll
ckNhbGxiYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbW90ZU1lZGlhUGxheWVyU3VwcG9ydDo6
c2V0UmVnaXN0ZXJSZW1vdGVQbGF5ZXJDYWxsYmFjayk6CisgICAgICAgIChXZWJDb3JlOjpidWls
ZE1lZGlhRW5naW5lc1ZlY3Rvcik6CisgICAgICAgIChXZWJDb3JlOjppbnN0YWxsZWRNZWRpYUVu
Z2luZXMpOgorICAgICAgICAoV2ViQ29yZTo6YWRkTWVkaWFFbmdpbmUpOgorICAgICAgICAoV2Vi
Q29yZTo6TWVkaWFQbGF5ZXI6Om1lZGlhRW5naW5lKToKKyAgICAgICAgKFdlYkNvcmU6OmJlc3RN
ZWRpYUVuZ2luZUZvclN1cHBvcnRQYXJhbWV0ZXJzKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlh
UGxheWVyOjpuZXh0TWVkaWFFbmdpbmUpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXI6
OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllcjo6TWVkaWFQbGF5ZXIpOgor
ICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXI6Om5leHRCZXN0TWVkaWFFbmdpbmUpOgorICAg
ICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXI6OmxvYWRXaXRoTmV4dE1lZGlhRW5naW5lKToKKyAg
ICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyOjpnZXRTdXBwb3J0ZWRUeXBlcyk6CisgICAgICAg
IChXZWJDb3JlOjpNZWRpYVBsYXllcjo6b3JpZ2luc0luTWVkaWFDYWNoZSk6CisgICAgICAgIChX
ZWJDb3JlOjpNZWRpYVBsYXllcjo6Y2xlYXJNZWRpYUNhY2hlKToKKyAgICAgICAgKFdlYkNvcmU6
Ok1lZGlhUGxheWVyOjpjbGVhck1lZGlhQ2FjaGVGb3JPcmlnaW5zKToKKyAgICAgICAgKFdlYkNv
cmU6Ok1lZGlhUGxheWVyOjpzdXBwb3J0c0tleVN5c3RlbSk6CisgICAgICAgIChXZWJDb3JlOjpN
ZWRpYVBsYXllcjo6bmV0d29ya1N0YXRlQ2hhbmdlZCk6CisgICAgICAgIChXZWJDb3JlOjpuZXh0
TWVkaWFFbmdpbmUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXI6Om5l
eHRCZXN0TWVkaWFFbmdpbmUgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL01lZGlhUGxheWVyLmg6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYUVuZ2luZVN1cHBv
cnRQYXJhbWV0ZXJzOjplbmNvZGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFFbmdp
bmVTdXBwb3J0UGFyYW1ldGVyczo6ZGVjb2RlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxh
eWVyRmFjdG9yeTo6fk1lZGlhUGxheWVyRmFjdG9yeSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRp
YVBsYXllckZhY3Rvcnk6Om9yaWdpbnNJbk1lZGlhQ2FjaGUgY29uc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6TWVkaWFQbGF5ZXJGYWN0b3J5OjpjbGVhck1lZGlhQ2FjaGUgY29uc3QpOgorICAgICAg
ICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJGYWN0b3J5OjpjbGVhck1lZGlhQ2FjaGVGb3JPcmlnaW5z
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyRmFjdG9yeTo6c3VwcG9ydHNL
ZXlTeXN0ZW0gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXI6OnNldFZpZGVv
RnVsbHNjcmVlbkxheWVyKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVy
OjpzaXplIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyOjpp
bnZhbGlkVGltZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllcjo6cGxh
dGZvcm1Wb2x1bWVDb25maWd1cmF0aW9uUmVxdWlyZWQgY29uc3QpOiBEZWxldGVkLgorICAgICAg
ICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXI6OmNvbnRlbnRNSU1FVHlwZSBjb25zdCk6IERlbGV0ZWQu
CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllcjo6Y29udGVudFR5cGVDb2RlY3MgY29uc3Qp
OiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXI6OmNvbnRlbnRNSU1FVHlw
ZVdhc0luZmVycmVkRnJvbUV4dGVuc2lvbiBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJD
b3JlOjpNZWRpYVBsYXllcjo6bWVkaWFQbGF5ZXJMb2dJZGVudGlmaWVyKTogRGVsZXRlZC4KKyAg
ICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyOjpyZW5kZXJpbmdDYW5CZUFjY2VsZXJhdGVkIGNv
bnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyOjpyZW5kZXJpbmdN
b2RlQ2hhbmdlZCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXll
cjo6YWNjZWxlcmF0ZWRDb21wb3NpdGluZ0VuYWJsZWQpOiBEZWxldGVkLgorICAgICAgICAoV2Vi
Q29yZTo6TWVkaWFQbGF5ZXI6OmFjdGl2ZVNvdXJjZUJ1ZmZlcnNDaGFuZ2VkKTogRGVsZXRlZC4K
KyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyOjpwbGF5ZXJDb250ZW50Qm94UmVjdCBjb25z
dCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllcjo6cGxheWVyQ29udGVu
dHNTY2FsZSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllcjo6
c2hvdWxkVXNlUGVyc2lzdGVudENhY2hlIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNv
cmU6Ok1lZGlhUGxheWVyOjptZWRpYUNhY2hlRGlyZWN0b3J5IGNvbnN0KTogRGVsZXRlZC4KKyAg
ICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyOjppc1ZpZGVvUGxheWVyIGNvbnN0KTogRGVsZXRl
ZC4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyOjptZWRpYUVuZ2luZVVwZGF0ZWQpOiBE
ZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXI6OmlzTG9vcGluZyBjb25zdCk6
IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllcjo6cmVxdWVzdEluc3RhbGxN
aXNzaW5nUGx1Z2lucyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllcjo6
Y2xpZW50IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9NZWRp
YVBsYXllckVuZ2luZUlkZW50aWZpZXJzLmg6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL0NvbnRlbnRUeXBlLmguCisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllckVuZ2lu
ZUlkZW50aWZpZXJzOjphdkZvdW5kYXRpb25FbmdpbmVJZGVudGlmaWVyKToKKyAgICAgICAgKFdl
YkNvcmU6Ok1lZGlhUGxheWVyRW5naW5lSWRlbnRpZmllcnM6OmF2Rm91bmRhdGlvbk1TRUVuZ2lu
ZUlkZW50aWZpZXIpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJFbmdpbmVJZGVudGlm
aWVyczo6YXZGb3VuZGF0aW9uTWVkaWFTdHJlYW1FbmdpbmVJZGVudGlmaWVyKToKKyAgICAgICAg
KFdlYkNvcmU6Ok1lZGlhUGxheWVyRW5naW5lSWRlbnRpZmllcnM6OkdTdHJlYW1lck1lZGlhRW5n
aW5lSWRlbnRpZmllcik6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllckVuZ2luZUlkZW50
aWZpZXJzOjpHU3RyZWFtZXJNU0VNZWRpYUVuZ2luZUlkZW50aWZpZXIpOgorICAgICAgICAoV2Vi
Q29yZTo6TWVkaWFQbGF5ZXJFbmdpbmVJZGVudGlmaWVyczo6aG9sZVB1bmNoTWVkaWFFbmdpbmVJ
ZGVudGlmaWVyKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyRW5naW5lSWRlbnRpZmll
cnM6Ok1lZGlhRm91bmRhdGlvbk1lZGlhRW5naW5lSWRlbnRpZmllcik6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvUGxhdGZvcm1UaW1lUmFuZ2VzLmg6CisgICAgICAgIChXZWJDb3JlOjpQ
bGF0Zm9ybVRpbWVSYW5nZXM6OlBsYXRmb3JtVGltZVJhbmdlcyk6IERlbGV0ZWQuCisgICAgICAg
IChXZWJDb3JlOjpQbGF0Zm9ybVRpbWVSYW5nZXM6Omxlbmd0aCBjb25zdCk6IERlbGV0ZWQuCisg
ICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybVRpbWVSYW5nZXM6OlJhbmdlOjpSYW5nZSk6IERlbGV0
ZWQuCisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybVRpbWVSYW5nZXM6OlJhbmdlOjppc1BvaW50
SW5SYW5nZSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybVRpbWVS
YW5nZXM6OlJhbmdlOjppc092ZXJsYXBwaW5nUmFuZ2UgY29uc3QpOiBEZWxldGVkLgorICAgICAg
ICAoV2ViQ29yZTo6UGxhdGZvcm1UaW1lUmFuZ2VzOjpSYW5nZTo6aXNDb250aWd1b3VzV2l0aFJh
bmdlIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtVGltZVJhbmdl
czo6UmFuZ2U6OnVuaW9uV2l0aE92ZXJsYXBwaW5nT3JDb250aWd1b3VzUmFuZ2UgY29uc3QpOiBE
ZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1UaW1lUmFuZ2VzOjpSYW5nZTo6aXNC
ZWZvcmVSYW5nZSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
YXZmb3VuZGF0aW9uL2NmL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbkNGLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbkNGOjpyZWdpc3Rl
ck1lZGlhRW5naW5lKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24v
b2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLmg6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3Vu
ZGF0aW9uT2JqQy5tbToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUFWRm91
bmRhdGlvbk9iakM6OnJlZ2lzdGVyTWVkaWFFbmdpbmUpOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZG
T2JqQy5tbToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNl
QVZGT2JqQzo6cmVnaXN0ZXJNZWRpYUVuZ2luZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpD
Lm1tOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZP
YmpDOjpyZWdpc3Rlck1lZGlhRW5naW5lKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9n
c3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6cmVnaXN0ZXJNZWRpYUVuZ2luZSk6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL21zZS9NZWRpYVBsYXllclByaXZh
dGVHU3RyZWFtZXJNU0UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRl
R1N0cmVhbWVyTVNFOjpyZWdpc3Rlck1lZGlhRW5naW5lKToKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9ob2xlcHVuY2gvTWVkaWFQbGF5ZXJQcml2YXRlSG9sZVB1bmNoLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUhvbGVQdW5jaDo6cmVnaXN0ZXJNZWRpYUVu
Z2luZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL01lZGlhUGxheWVyUHJpdmF0
ZU1lZGlhRm91bmRhdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZh
dGVNZWRpYUZvdW5kYXRpb246OnJlZ2lzdGVyTWVkaWFFbmdpbmUpOgorICAgICAgICAqIHBsYXRm
b3JtL21vY2svbWVkaWFzb3VyY2UvTW9ja01lZGlhUGxheWVyTWVkaWFTb3VyY2UuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6TW9ja01lZGlhUGxheWVyTWVkaWFTb3VyY2U6OnJlZ2lzdGVyTWVkaWFF
bmdpbmUpOgorCiAyMDE5LTEyLTEwICBQZXIgQXJuZSBWb2xsYW4gIDxwdm9sbGFuQGFwcGxlLmNv
bT4KIAogICAgICAgICBNYWtlIGl0IHBvc3NpYmxlIHRvIGFkZCByZWdyZXNzaW9uIHRlc3RzIGZv
ciBibG9ja2VkIFhQQyBzZXJ2aWNlcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VM
b2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCA3NDM2MWVjYTNiN2Y2OTRlZTIzZDlk
MzY3ODIyYzZkZTViMTg1YjVlLi4xZTM0NzA4MGMwNmE5OGQzNmVhOWI5MzFlZjk4OGQ2NzIxYmUz
NDYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2Vi
S2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDE4NyBAQAorMjAxOS0xMi0xMCAgRXJpYyBDYXJsc29u
ICA8ZXJpYy5jYXJsc29uQGFwcGxlLmNvbT4KKworICAgICAgICBBZGQgaW5mcmFzdHJ1Y3R1cmUg
bmVlZGVkIGZvciBwbGF5aW5nIG1lZGlhIHBsYXllciBpbiB0aGUgR1BVIHByb2Nlc3MKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwNTA5NAorICAgICAg
ICA8cmRhcjovL3Byb2JsZW0vNTc4MTUzOTM+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgKiBEZXJpdmVkU291cmNlcy1pbnB1dC54Y2ZpbGVsaXN0Ogor
ICAgICAgICAqIERlcml2ZWRTb3VyY2VzLW91dHB1dC54Y2ZpbGVsaXN0OgorICAgICAgICAqIERl
cml2ZWRTb3VyY2VzLm1ha2U6CisgICAgICAgICogR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9X
ZWJQcm9jZXNzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6R1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vz
czo6R1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcyk6CisgICAgICAgIChXZWJLaXQ6OkdQVUNvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3M6On5HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzKToKKyAgICAgICAg
KFdlYktpdDo6R1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6ZGlkUmVjZWl2ZU1lc3NhZ2UpOgor
ICAgICAgICAoV2ViS2l0OjpHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpkaWRSZWNlaXZlU3lu
Y01lc3NhZ2UpOgorICAgICAgICAqIEdQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vz
cy5oOgorICAgICAgICAqIEdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2Vy
UHJveHkuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6bnVsbExvZ2dlcik6CisgICAgICAg
IChXZWJLaXQ6OlJlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5OjpQbGF5ZXJQcm94eTo6UGxh
eWVyUHJveHkpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94
eTo6UGxheWVyUHJveHk6On5QbGF5ZXJQcm94eSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZU1l
ZGlhUGxheWVyTWFuYWdlclByb3h5OjpSZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eSk6Cisg
ICAgICAgIChXZWJLaXQ6OlJlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5Ojp+UmVtb3RlTWVk
aWFQbGF5ZXJNYW5hZ2VyUHJveHkpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVNZWRpYVBsYXll
ck1hbmFnZXJQcm94eTo6Y3JlYXRlTWVkaWFQbGF5ZXIpOgorICAgICAgICAoV2ViS2l0OjpSZW1v
dGVNZWRpYVBsYXllck1hbmFnZXJQcm94eTo6Z2V0U3VwcG9ydGVkVHlwZXMpOgorICAgICAgICAo
V2ViS2l0OjpSZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eTo6c3VwcG9ydHNUeXBlKToKKyAg
ICAgICAgKFdlYktpdDo6UmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHk6Om9yaWdpbnNJbk1l
ZGlhQ2FjaGUpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94
eTo6Y2xlYXJNZWRpYUNhY2hlKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTWVkaWFQbGF5ZXJN
YW5hZ2VyUHJveHk6OmNsZWFyTWVkaWFDYWNoZUZvck9yaWdpbnMpOgorICAgICAgICAoV2ViS2l0
OjpSZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eTo6c3VwcG9ydHNLZXlTeXN0ZW0pOgorICAg
ICAgICAqIEdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHkuaDog
QWRkZWQuCisgICAgICAgIChXZWJLaXQ6OlJlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5Ojp3
ZWJQcm9jZXNzQ29ubmVjdGlvbiBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZU1lZGlh
UGxheWVyTWFuYWdlclByb3h5OjpkaWRSZWNlaXZlTWVzc2FnZUZyb21XZWJQcm9jZXNzKToKKyAg
ICAgICAgKFdlYktpdDo6UmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHk6OmRpZFJlY2VpdmVT
eW5jTWVzc2FnZUZyb21XZWJQcm9jZXNzKToKKyAgICAgICAgKiBHUFVQcm9jZXNzL21lZGlhL1Jl
bW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5Lm1lc3NhZ2VzLmluOiBBZGRlZC4KKyAgICAgICAg
KiBTY3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5weToKKyAgICAgICAgKiBTb3VyY2VzLnR4dDoKKyAg
ICAgICAgKiBTb3VyY2VzQ29jb2EudHh0OgorICAgICAgICAqIFdlYktpdC54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL21lZGlhL01lZGlhUGxheWVy
UHJpdmF0ZVJlbW90ZS5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpNZWRpYVBsYXllclBy
aXZhdGVSZW1vdGU6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZSk6CisgICAgICAgIChXZWJLaXQ6
Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6fk1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZSk6Cisg
ICAgICAgIChXZWJLaXQ6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6TWVkaWFQbGF5ZXJQcml2
YXRlUmVtb3RlOjpsb2FkKToKKyAgICAgICAgKFdlYktpdDo6TWVkaWFQbGF5ZXJQcml2YXRlUmVt
b3RlOjpsb2FkKToKKyAgICAgICAgKFdlYktpdDo6TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpj
YW5jZWxMb2FkKToKKyAgICAgICAgKFdlYktpdDo6TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpw
cmVwYXJlVG9QbGF5KToKKyAgICAgICAgKFdlYktpdDo6TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3Rl
OjpwbGF0Zm9ybUxheWVyIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6TWVkaWFQbGF5ZXJQcml2
YXRlUmVtb3RlOjpzZXRWaWRlb0Z1bGxzY3JlZW5MYXllcik6CisgICAgICAgIChXZWJLaXQ6Ok1l
ZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6dXBkYXRlVmlkZW9GdWxsc2NyZWVuSW5saW5lSW1hZ2Up
OgorICAgICAgICAoV2ViS2l0OjpNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OnNldFZpZGVvRnVs
bHNjcmVlbkZyYW1lKToKKyAgICAgICAgKFdlYktpdDo6TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3Rl
OjpzZXRWaWRlb0Z1bGxzY3JlZW5HcmF2aXR5KToKKyAgICAgICAgKFdlYktpdDo6TWVkaWFQbGF5
ZXJQcml2YXRlUmVtb3RlOjpzZXRWaWRlb0Z1bGxzY3JlZW5Nb2RlKToKKyAgICAgICAgKFdlYktp
dDo6TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjp2aWRlb0Z1bGxzY3JlZW5TdGFuZGJ5Q2hhbmdl
ZCk6CisgICAgICAgIChXZWJLaXQ6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6YWNjZXNzTG9n
IGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjplcnJv
ckxvZyBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6
cGxhdGZvcm1FcnJvckNvZGUgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpNZWRpYVBsYXllclBy
aXZhdGVSZW1vdGU6OnBsYXkpOgorICAgICAgICAoV2ViS2l0OjpNZWRpYVBsYXllclByaXZhdGVS
ZW1vdGU6OnBhdXNlKToKKyAgICAgICAgKFdlYktpdDo6TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3Rl
OjpzZXRCdWZmZXJpbmdQb2xpY3kpOgorICAgICAgICAoV2ViS2l0OjpNZWRpYVBsYXllclByaXZh
dGVSZW1vdGU6OnN1cHBvcnRzUGljdHVyZUluUGljdHVyZSBjb25zdCk6CisgICAgICAgIChXZWJL
aXQ6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6c3VwcG9ydHNGdWxsc2NyZWVuIGNvbnN0KToK
KyAgICAgICAgKFdlYktpdDo6TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpzdXBwb3J0c1NjYW5u
aW5nIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpy
ZXF1aXJlc0ltbWVkaWF0ZUNvbXBvc2l0aW5nIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6TWVk
aWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpjYW5TYXZlTWVkaWFEYXRhIGNvbnN0KToKKyAgICAgICAg
KFdlYktpdDo6TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpuYXR1cmFsU2l6ZSBjb25zdCk6Cisg
ICAgICAgIChXZWJLaXQ6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6aGFzVmlkZW8gY29uc3Qp
OgorICAgICAgICAoV2ViS2l0OjpNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6Omhhc0F1ZGlvIGNv
bnN0KToKKyAgICAgICAgKFdlYktpdDo6TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpzZXRWaXNp
YmxlKToKKyAgICAgICAgKFdlYktpdDo6TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpNZWRpYVBs
YXllclByaXZhdGVSZW1vdGU6OmR1cmF0aW9uTWVkaWFUaW1lIGNvbnN0KToKKyAgICAgICAgKFdl
YktpdDo6TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpjdXJyZW50TWVkaWFUaW1lIGNvbnN0KToK
KyAgICAgICAgKFdlYktpdDo6TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpnZXRTdGFydERhdGUg
Y29uc3QpOgorICAgICAgICAoV2ViS2l0OjpNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OnNlZWsp
OgorICAgICAgICAoV2ViS2l0OjpNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OnNlZWtXaXRoVG9s
ZXJhbmNlKToKKyAgICAgICAgKFdlYktpdDo6TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpzZWVr
aW5nIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpz
dGFydFRpbWUgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpNZWRpYVBsYXllclByaXZhdGVSZW1v
dGU6OnNldFJhdGVEb3VibGUpOgorICAgICAgICAoV2ViS2l0OjpNZWRpYVBsYXllclByaXZhdGVS
ZW1vdGU6OnJhdGUgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpNZWRpYVBsYXllclByaXZhdGVS
ZW1vdGU6OnNldFByZXNlcnZlc1BpdGNoKToKKyAgICAgICAgKFdlYktpdDo6TWVkaWFQbGF5ZXJQ
cml2YXRlUmVtb3RlOjpwYXVzZWQgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpNZWRpYVBsYXll
clByaXZhdGVSZW1vdGU6OnNldFZvbHVtZURvdWJsZSk6CisgICAgICAgIChXZWJLaXQ6Ok1lZGlh
UGxheWVyUHJpdmF0ZVJlbW90ZTo6c2V0TXV0ZWQpOgorICAgICAgICAoV2ViS2l0OjpNZWRpYVBs
YXllclByaXZhdGVSZW1vdGU6Omhhc0Nsb3NlZENhcHRpb25zIGNvbnN0KToKKyAgICAgICAgKFdl
YktpdDo6TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpzZXRDbG9zZWRDYXB0aW9uc1Zpc2libGUp
OgorICAgICAgICAoV2ViS2l0OjpNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6Om1heEZhc3RGb3J3
YXJkUmF0ZSBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90
ZTo6bWluRmFzdFJldmVyc2VSYXRlIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6TWVkaWFQbGF5
ZXJQcml2YXRlUmVtb3RlOjpuZXR3b3JrU3RhdGUgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpN
ZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OnJlYWR5U3RhdGUgY29uc3QpOgorICAgICAgICAoV2Vi
S2l0OjpNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OnNlZWthYmxlIGNvbnN0KToKKyAgICAgICAg
KFdlYktpdDo6TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpidWZmZXJlZCBjb25zdCk6CisgICAg
ICAgIChXZWJLaXQ6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6bWF4TWVkaWFUaW1lU2Vla2Fi
bGUgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6Om1p
bk1lZGlhVGltZVNlZWthYmxlIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6TWVkaWFQbGF5ZXJQ
cml2YXRlUmVtb3RlOjpzZWVrYWJsZVRpbWVSYW5nZXNMYXN0TW9kaWZpZWRUaW1lIGNvbnN0KToK
KyAgICAgICAgKFdlYktpdDo6TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpsaXZlVXBkYXRlSW50
ZXJ2YWwgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6
OnRvdGFsQnl0ZXMgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpNZWRpYVBsYXllclByaXZhdGVS
ZW1vdGU6OmRpZExvYWRpbmdQcm9ncmVzcyBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6Ok1lZGlh
UGxheWVyUHJpdmF0ZVJlbW90ZTo6c2V0U2l6ZSk6CisgICAgICAgIChXZWJLaXQ6Ok1lZGlhUGxh
eWVyUHJpdmF0ZVJlbW90ZTo6cGFpbnQpOgorICAgICAgICAoV2ViS2l0OjpNZWRpYVBsYXllclBy
aXZhdGVSZW1vdGU6OnBhaW50Q3VycmVudEZyYW1lSW5Db250ZXh0KToKKyAgICAgICAgKFdlYktp
dDo6TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpjb3B5VmlkZW9UZXh0dXJlVG9QbGF0Zm9ybVRl
eHR1cmUpOgorICAgICAgICAoV2ViS2l0OjpNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6Om5hdGl2
ZUltYWdlRm9yQ3VycmVudFRpbWUpOgorICAgICAgICAoV2ViS2l0OjpNZWRpYVBsYXllclByaXZh
dGVSZW1vdGU6OnNldFByZWxvYWQpOgorICAgICAgICAoV2ViS2l0OjpNZWRpYVBsYXllclByaXZh
dGVSZW1vdGU6Omhhc0F2YWlsYWJsZVZpZGVvRnJhbWUgY29uc3QpOgorICAgICAgICAoV2ViS2l0
OjpNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OmNhbkxvYWRQb3N0ZXIgY29uc3QpOgorICAgICAg
ICAoV2ViS2l0OjpNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OnNldFBvc3Rlcik6CisgICAgICAg
IChXZWJLaXQ6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6ZW50ZXJGdWxsc2NyZWVuKToKKyAg
ICAgICAgKFdlYktpdDo6TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpleGl0RnVsbHNjcmVlbik6
CisgICAgICAgIChXZWJLaXQ6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6d2lyZWxlc3NQbGF5
YmFja1RhcmdldE5hbWUgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpNZWRpYVBsYXllclByaXZh
dGVSZW1vdGU6OndpcmVsZXNzUGxheWJhY2tUYXJnZXRUeXBlIGNvbnN0KToKKyAgICAgICAgKFdl
YktpdDo6TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjp3aXJlbGVzc1ZpZGVvUGxheWJhY2tEaXNh
YmxlZCBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6
c2V0V2lyZWxlc3NWaWRlb1BsYXliYWNrRGlzYWJsZWQpOgorICAgICAgICAoV2ViS2l0OjpNZWRp
YVBsYXllclByaXZhdGVSZW1vdGU6OmNhblBsYXlUb1dpcmVsZXNzUGxheWJhY2tUYXJnZXQgY29u
c3QpOgorICAgICAgICAoV2ViS2l0OjpNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OmlzQ3VycmVu
dFBsYXliYWNrVGFyZ2V0V2lyZWxlc3MgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpNZWRpYVBs
YXllclByaXZhdGVSZW1vdGU6OnNldFdpcmVsZXNzUGxheWJhY2tUYXJnZXQpOgorICAgICAgICAo
V2ViS2l0OjpNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OnNldFNob3VsZFBsYXlUb1BsYXliYWNr
VGFyZ2V0KToKKyAgICAgICAgKFdlYktpdDo6TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpjYW5F
bnRlckZ1bGxzY3JlZW4gY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpNZWRpYVBsYXllclByaXZh
dGVSZW1vdGU6OnN1cHBvcnRzQWNjZWxlcmF0ZWRSZW5kZXJpbmcgY29uc3QpOgorICAgICAgICAo
V2ViS2l0OjpNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OmFjY2VsZXJhdGVkUmVuZGVyaW5nU3Rh
dGVDaGFuZ2VkKToKKyAgICAgICAgKFdlYktpdDo6TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpz
aG91bGRNYWludGFpbkFzcGVjdFJhdGlvIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6TWVkaWFQ
bGF5ZXJQcml2YXRlUmVtb3RlOjpzZXRTaG91bGRNYWludGFpbkFzcGVjdFJhdGlvKToKKyAgICAg
ICAgKFdlYktpdDo6TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpoYXNTaW5nbGVTZWN1cml0eU9y
aWdpbiBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6
ZGlkUGFzc0NPUlNBY2Nlc3NDaGVjayBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6Ok1lZGlhUGxh
eWVyUHJpdmF0ZVJlbW90ZTo6d291bGRUYWludE9yaWdpbiBjb25zdCk6CisgICAgICAgIChXZWJL
aXQ6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6bW92aWVMb2FkVHlwZSBjb25zdCk6CisgICAg
ICAgIChXZWJLaXQ6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6cHJlcGFyZUZvclJlbmRlcmlu
Zyk6CisgICAgICAgIChXZWJLaXQ6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6bWVkaWFUaW1l
Rm9yVGltZVZhbHVlIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6TWVkaWFQbGF5ZXJQcml2YXRl
UmVtb3RlOjptYXhpbXVtRHVyYXRpb25Ub0NhY2hlTWVkaWFUaW1lIGNvbnN0KToKKyAgICAgICAg
KFdlYktpdDo6TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpkZWNvZGVkRnJhbWVDb3VudCBjb25z
dCk6CisgICAgICAgIChXZWJLaXQ6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6ZHJvcHBlZEZy
YW1lQ291bnQgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpNZWRpYVBsYXllclByaXZhdGVSZW1v
dGU6OmF1ZGlvRGVjb2RlZEJ5dGVDb3VudCBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6Ok1lZGlh
UGxheWVyUHJpdmF0ZVJlbW90ZTo6dmlkZW9EZWNvZGVkQnl0ZUNvdW50IGNvbnN0KToKKyAgICAg
ICAgKFdlYktpdDo6TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpzZXRQcml2YXRlQnJvd3NpbmdN
b2RlKToKKyAgICAgICAgKFdlYktpdDo6TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjplbmdpbmVE
ZXNjcmlwdGlvbiBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6Ok1lZGlhUGxheWVyUHJpdmF0ZVJl
bW90ZTo6YXVkaW9Tb3VyY2VQcm92aWRlcik6CisgICAgICAgIChXZWJLaXQ6Ok1lZGlhUGxheWVy
UHJpdmF0ZVJlbW90ZTo6Y3JlYXRlU2Vzc2lvbik6CisgICAgICAgIChXZWJLaXQ6Ok1lZGlhUGxh
eWVyUHJpdmF0ZVJlbW90ZTo6c2V0Q0RNU2Vzc2lvbik6CisgICAgICAgIChXZWJLaXQ6Ok1lZGlh
UGxheWVyUHJpdmF0ZVJlbW90ZTo6a2V5QWRkZWQpOgorICAgICAgICAoV2ViS2l0OjpNZWRpYVBs
YXllclByaXZhdGVSZW1vdGU6OmNkbUluc3RhbmNlQXR0YWNoZWQpOgorICAgICAgICAoV2ViS2l0
OjpNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OmNkbUluc3RhbmNlRGV0YWNoZWQpOgorICAgICAg
ICAoV2ViS2l0OjpNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OmF0dGVtcHRUb0RlY3J5cHRXaXRo
SW5zdGFuY2UpOgorICAgICAgICAoV2ViS2l0OjpNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6Ondh
aXRpbmdGb3JLZXkgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpNZWRpYVBsYXllclByaXZhdGVS
ZW1vdGU6OnJlcXVpcmVzVGV4dFRyYWNrUmVwcmVzZW50YXRpb24gY29uc3QpOgorICAgICAgICAo
V2ViS2l0OjpNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OnNldFRleHRUcmFja1JlcHJlc2VudGF0
aW9uKToKKyAgICAgICAgKFdlYktpdDo6TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpzeW5jVGV4
dFRyYWNrQm91bmRzKToKKyAgICAgICAgKFdlYktpdDo6TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3Rl
Ojp0cmFja3NDaGFuZ2VkKToKKyAgICAgICAgKFdlYktpdDo6TWVkaWFQbGF5ZXJQcml2YXRlUmVt
b3RlOjpzaW11bGF0ZUF1ZGlvSW50ZXJydXB0aW9uKToKKyAgICAgICAgKFdlYktpdDo6TWVkaWFQ
bGF5ZXJQcml2YXRlUmVtb3RlOjpiZWdpblNpbXVsYXRlZEhEQ1BFcnJvcik6CisgICAgICAgIChX
ZWJLaXQ6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6ZW5kU2ltdWxhdGVkSERDUEVycm9yKToK
KyAgICAgICAgKFdlYktpdDo6TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpsYW5ndWFnZU9mUHJp
bWFyeUF1ZGlvVHJhY2sgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpNZWRpYVBsYXllclByaXZh
dGVSZW1vdGU6OmV4dHJhTWVtb3J5Q29zdCBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6Ok1lZGlh
UGxheWVyUHJpdmF0ZVJlbW90ZTo6ZmlsZVNpemUgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpN
ZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OmVuZGVkIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6
TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjp2aWRlb1BsYXliYWNrUXVhbGl0eU1ldHJpY3MpOgor
ICAgICAgICAoV2ViS2l0OjpNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6Om5vdGlmeVRyYWNrTW9k
ZUNoYW5nZWQpOgorICAgICAgICAoV2ViS2l0OjpNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6Om5v
dGlmeUFjdGl2ZVNvdXJjZUJ1ZmZlcnNDaGFuZ2VkKToKKyAgICAgICAgKFdlYktpdDo6TWVkaWFQ
bGF5ZXJQcml2YXRlUmVtb3RlOjpzZXRTaG91bGREaXNhYmxlU2xlZXApOgorICAgICAgICAoV2Vi
S2l0OjpNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OmFwcGxpY2F0aW9uV2lsbFJlc2lnbkFjdGl2
ZSk6CisgICAgICAgIChXZWJLaXQ6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6YXBwbGljYXRp
b25EaWRCZWNvbWVBY3RpdmUpOgorICAgICAgICAoV2ViS2l0OjpNZWRpYVBsYXllclByaXZhdGVS
ZW1vdGU6OnBlcmZvcm1UYXNrQXRNZWRpYVRpbWUpOgorICAgICAgICAoV2ViS2l0OjpNZWRpYVBs
YXllclByaXZhdGVSZW1vdGU6OnNob3VsZElnbm9yZUludHJpbnNpY1NpemUpOgorICAgICAgICAo
V2ViS2l0OjpNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OmxvZ0NoYW5uZWwgY29uc3QpOgorICAg
ICAgICAqIFdlYlByb2Nlc3MvR1BVL21lZGlhL01lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZS5oOiBB
ZGRlZC4KKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9tZWRpYS9NZWRpYVBsYXllclByaXZhdGVS
ZW1vdGVJZGVudGlmaWVyLmg6IEFkZGVkLgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL21lZGlh
L1JlbW90ZU1lZGlhUGxheWVyTWFuYWdlci5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpN
ZWRpYVBsYXllclJlbW90ZUZhY3Rvcnk6Ok1lZGlhUGxheWVyUmVtb3RlRmFjdG9yeSk6CisgICAg
ICAgIChXZWJLaXQ6OlJlbW90ZU1lZGlhUGxheWVyTWFuYWdlcjo6UmVtb3RlTWVkaWFQbGF5ZXJN
YW5hZ2VyKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyOjp+UmVt
b3RlTWVkaWFQbGF5ZXJNYW5hZ2VyKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTWVkaWFQbGF5
ZXJNYW5hZ2VyOjpzdXBwbGVtZW50TmFtZSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZU1lZGlh
UGxheWVyTWFuYWdlcjo6aW5pdGlhbGl6ZSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZU1lZGlh
UGxheWVyTWFuYWdlcjo6Y3JlYXRlUmVtb3RlTWVkaWFQbGF5ZXIpOgorICAgICAgICAoV2ViS2l0
OjpSZW1vdGVNZWRpYVBsYXllck1hbmFnZXI6OmdldFN1cHBvcnRlZFR5cGVzKToKKyAgICAgICAg
KFdlYktpdDo6UmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyOjpzdXBwb3J0c1R5cGVBbmRDb2RlY3Mp
OgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVNZWRpYVBsYXllck1hbmFnZXI6OnN1cHBvcnRzS2V5
U3lzdGVtKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyOjpvcmln
aW5zSW5NZWRpYUNhY2hlKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTWVkaWFQbGF5ZXJNYW5h
Z2VyOjpjbGVhck1lZGlhQ2FjaGUpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVNZWRpYVBsYXll
ck1hbmFnZXI6OmNsZWFyTWVkaWFDYWNoZUZvck9yaWdpbnMpOgorICAgICAgICAoV2ViS2l0OjpS
ZW1vdGVNZWRpYVBsYXllck1hbmFnZXI6Om5ldHdvcmtTdGF0ZUNoYW5nZWQpOgorICAgICAgICAo
V2ViS2l0OjpSZW1vdGVNZWRpYVBsYXllck1hbmFnZXI6OnVwZGF0ZVByZWZlcmVuY2VzKToKKyAg
ICAgICAgKFdlYktpdDo6UmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyOjpncHVQcm9jZXNzQ29ubmVj
dGlvbiBjb25zdCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlTWVkaWFQ
bGF5ZXJNYW5hZ2VyLmg6IEFkZGVkLgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL21lZGlhL1Jl
bW90ZU1lZGlhUGxheWVyTWFuYWdlci5tZXNzYWdlcy5pbjogQWRkZWQuCisgICAgICAgICogV2Vi
UHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjp1
cGRhdGVQcmVmZXJlbmNlcyk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcDoK
KwogMjAxOS0xMi0xMCAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgogCiAgICAgICAg
IFVucmV2aWV3ZWQsIGRyb3AgZGVidWcgYXNzZXJ0aW9uIGluIEluc3BlY3RvclRhcmdldFByb3h5
OjpkaWRDb21taXRQcm92aXNpb25hbFRhcmdldCgpIHRoYXQgaXMgaGl0dGluZyBhZnRlciByMjUz
MzM3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oKaW5kZXggMDNlNmY1NDMzYmY2ZjY3ZWJjNWY0OWZlZDBhOTUwMTJkNGJlNGJmOS4uMGNhZmRj
MWVhMDBiZTdmZGUwZWQyMzA3NjYxYTIxMDhhZTBjZDM0ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJD
b3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTA0LDYgKzEwNCw3IEBA
CiAJCTA3MUU0OTZFMUFENUFBMEQwMDhBNTBCNCAvKiBNZWRpYVBsYXliYWNrVGFyZ2V0TWFjLm1t
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDcxRTQ5NkQx
QUQ1QUEwRDAwOEE1MEI0IC8qIE1lZGlhUGxheWJhY2tUYXJnZXRNYWMubW0gKi87IH07CiAJCTA3
MUU0OTcwMUFENUFCNUUwMDhBNTBCNCAvKiBNZWRpYVBsYXliYWNrVGFyZ2V0TWFjLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwNzFFNDk2RjFBRDVBQjVF
MDA4QTUwQjQgLyogTWVkaWFQbGF5YmFja1RhcmdldE1hYy5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTA3MjBCMEExMTREMzMyMzUwMDY0Mjk1NSAv
KiBHZW5lcmljRXZlbnRRdWV1ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gMDcyMEIwOUYxNEQzMzIzNTAwNjQyOTU1IC8qIEdlbmVyaWNFdmVudFF1ZXVl
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJMDcy
NUVGQTkyMzlBRDc5MzAwQTUzOEE5IC8qIE1lZGlhUGxheWVyUHJpdmF0ZS5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDc5RjVFNEIwRjNCRUJFQTAwNUUw
NzgyIC8qIE1lZGlhUGxheWVyUHJpdmF0ZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CiAJCTA3Mjc3RTREMTdEMDE4Q0MwMDE1NTM0RCAvKiBKU01lZGlh
U3RyZWFtLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAw
NzI3N0U0MTE3RDAxOENDMDAxNTUzNEQgLyogSlNNZWRpYVN0cmVhbS5oICovOyB9OwogCQkwNzI3
N0U0RDE3RDAxOENDMDAxNTUzNEUgLyogSlNDYW52YXNDYXB0dXJlTWVkaWFTdHJlYW1UcmFjay5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDcyNzdFNDEx
N0QwMThDQzAwMTU1MzRFIC8qIEpTQ2FudmFzQ2FwdHVyZU1lZGlhU3RyZWFtVHJhY2suaCAqLzsg
fTsKIAkJMDcyNzdFNEYxN0QwMThDQzAwMTU1MzREIC8qIEpTTWVkaWFTdHJlYW1BdWRpb0Rlc3Rp
bmF0aW9uTm9kZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gMDcyNzdFNDMxN0QwMThDQzAwMTU1MzREIC8qIEpTTWVkaWFTdHJlYW1BdWRpb0Rlc3RpbmF0
aW9uTm9kZS5oICovOyB9OwpAQCAtMjA0LDYgKzIwNSw3IEBACiAJCTA3QjVBMkRDMTQ2NDMyMEEw
MEE4MUVDRSAvKiBKU1RleHRUcmFja0xpc3QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDA3QjVBMkRBMTQ2NDMyMEEwMEE4MUVDRSAvKiBKU1RleHRUcmFj
a0xpc3QuaCAqLzsgfTsKIAkJMDdCNzExNkQxRDg5OUU2MzAwOUYwRkZCIC8qIENhcHR1cmVEZXZp
Y2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3Qjcx
MTZBMUQ4OTlFNjMwMDlGMEZGQiAvKiBDYXB0dXJlRGV2aWNlLmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMDdCNzExNkYxRDg5OUU2MzAwOUYwRkZC
IC8qIENhcHR1cmVEZXZpY2VNYW5hZ2VyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSAwN0I3MTE2QzFEODk5RTYzMDA5RjBGRkIgLyogQ2FwdHVyZURldmlj
ZU1hbmFnZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OworCQkwN0JBRjM0NDIzOUVENTY5MDA0NDI1N0UgLyogTWVkaWFQbGF5ZXJFbmdpbmVJZGVudGlm
aWVycy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDdC
QUYzNDMyMzlFRDFDQzAwNDQyNTdFIC8qIE1lZGlhUGxheWVyRW5naW5lSWRlbnRpZmllcnMuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkwN0MwNDZD
NDFFNDI1MDhCMDA3MjAxRTcgLyogQ0FBdWRpb1N0cmVhbURlc2NyaXB0aW9uLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwNzNCODc1ODFFNDBEQ0ZEMDA3
MUMwRUMgLyogQ0FBdWRpb1N0cmVhbURlc2NyaXB0aW9uLmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMDdDMDQ2Q0IxRTQyNjQxMzAwNzIwMUU3IC8q
IEF1ZGlvU3RyZWFtRGVzY3JpcHRpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDA3M0I4NzU2MUU0MERDRTUwMDcxQzBFQyAvKiBBdWRpb1N0cmVhbURl
c2NyaXB0aW9uLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKIAkJMDdDMUMwRTIxQkZCNjAwMTAwQkQyMjU2IC8qIE1lZGlhVHJhY2tTdXBwb3J0ZWRDb25z
dHJhaW50cy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
MDdDMUMwRTAxQkZCNjAwMTAwQkQyMjU2IC8qIE1lZGlhVHJhY2tTdXBwb3J0ZWRDb25zdHJhaW50
cy5oICovOyB9OwpAQCAtNTUzNSw2ICs1NTM3LDcgQEAKIAkJMDdCNzExNkExRDg5OUU2MzAwOUYw
RkZCIC8qIENhcHR1cmVEZXZpY2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
Q2FwdHVyZURldmljZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwN0I3MTE2QjFE
ODk5RTYzMDA5RjBGRkIgLyogQ2FwdHVyZURldmljZU1hbmFnZXIuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQ2FwdHVyZURldmljZU1hbmFnZXIuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQkwN0I3MTE2QzFEODk5RTYzMDA5RjBGRkIgLyogQ2FwdHVy
ZURldmljZU1hbmFnZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ2FwdHVy
ZURldmljZU1hbmFnZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMDdCQUYzNDMy
MzlFRDFDQzAwNDQyNTdFIC8qIE1lZGlhUGxheWVyRW5naW5lSWRlbnRpZmllcnMuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gTWVkaWFQbGF5ZXJFbmdpbmVJZGVudGlmaWVycy5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQkwN0MwNDZDNjFFNDI1MTJGMDA3MjAxRTcgLyogQXVkaW9UcmFja1ByaXZh
dGVNZWRpYVN0cmVhbUNvY29hLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEF1
ZGlvVHJhY2tQcml2YXRlTWVkaWFTdHJlYW1Db2NvYS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQkwN0MxQzBFMDFCRkI2MDAxMDBCRDIyNTYgLyogTWVkaWFUcmFja1N1cHBvcnRlZENv
bnN0cmFpbnRzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1lZGlhVHJhY2tT
dXBwb3J0ZWRDb25zdHJhaW50cy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwN0Mx
QzBFMTFCRkI2MDAxMDBCRDIyNTYgLyogTWVkaWFUcmFja1N1cHBvcnRlZENvbnN0cmFpbnRzLmlk
bCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBNZWRpYVRyYWNrU3VwcG9ydGVkQ29uc3RyYWludHMu
aWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMjUwNjIsNiArMjUwNjUsNyBAQAog
CQkJCTA3OEU0M0Q4MUFCQjZDN0UwMDFDMkZBNiAvKiBNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2Vy
LmggKi8sCiAJCQkJRTRCNDFFMEMwQ0JGOTBCRDAwQUYyRUNFIC8qIE1lZGlhUGxheWVyLmNwcCAq
LywKIAkJCQlFNEI0MUUwRDBDQkY5MEJEMDBBRjJFQ0UgLyogTWVkaWFQbGF5ZXIuaCAqLywKKwkJ
CQkwN0JBRjM0MzIzOUVEMUNDMDA0NDI1N0UgLyogTWVkaWFQbGF5ZXJFbmdpbmVJZGVudGlmaWVy
cy5oICovLAogCQkJCUNENTIwOUUzMUIwQkQ4MzgwMDc3MTg0RSAvKiBNZWRpYVBsYXllckVudW1z
LmggKi8sCiAJCQkJMDc5RjVFNEIwRjNCRUJFQTAwNUUwNzgyIC8qIE1lZGlhUGxheWVyUHJpdmF0
ZS5oICovLAogCQkJCUNENjQxRUIxMTgxOEY1RUQwMEVFNEM0MSAvKiBNZWRpYVNvdXJjZVByaXZh
dGUuaCAqLywKQEAgLTMxMzc4LDcgKzMxMzgyLDkgQEAKIAkJCQkwNzhFNDNERDFBQkI2RjZGMDAx
QzJGQTYgLyogTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlck1hYy5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJMDc3QjY0MTMxQjk0RjEyRTAwM0U5QUQ1IC8qIE1lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJN
b2NrLmggaW4gSGVhZGVycyAqLywKIAkJCQlFNDQ2MTNFNDBDRDY4MUEyMDBGQURBNzUgLyogTWVk
aWFQbGF5ZXIuaCBpbiBIZWFkZXJzICovLAorCQkJCTA3QkFGMzQ0MjM5RUQ1NjkwMDQ0MjU3RSAv
KiBNZWRpYVBsYXllckVuZ2luZUlkZW50aWZpZXJzLmggaW4gSGVhZGVycyAqLywKIAkJCQlDRDUy
MDlFNDFCMEJEODM4MDA3NzE4NEUgLyogTWVkaWFQbGF5ZXJFbnVtcy5oIGluIEhlYWRlcnMgKi8s
CisJCQkJMDcyNUVGQTkyMzlBRDc5MzAwQTUzOEE5IC8qIE1lZGlhUGxheWVyUHJpdmF0ZS5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJMDc2RjBEMEUxMkI4MTkyNzAwQzI2QUE0IC8qIE1lZGlhUGxheWVy
UHJpdmF0ZUFWRm91bmRhdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJREY5QUZENzIxM0ZDMzFE
ODAwMTVGRUI3IC8qIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMuaCBpbiBIZWFk
ZXJzICovLAogCQkJCUNEQzhCNUEzMTgwNDYzNDcwMDE2RTY4NSAvKiBNZWRpYVBsYXllclByaXZh
dGVNZWRpYVNvdXJjZUFWRk9iakMuaCBpbiBIZWFkZXJzICovLApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vQ29udGVudFR5cGUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L0NvbnRlbnRUeXBlLmgKaW5kZXggYzgyYjViNzE5N2M5ZTE1ZDFlMmY1NDdmZDU2NDFmYzVmNGVj
NWVjZi4uOTBkYzk3MDQ2NzA4Mzk0ZGEwNjBlZmQxYWQzNjc2MTc5YjU3OWZhNiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vQ29udGVudFR5cGUuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9Db250ZW50VHlwZS5oCkBAIC0zMyw4ICszMyw4IEBAIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAogY2xhc3MgQ29udGVudFR5cGUgewogcHVibGljOgotICAgIGV4cGxpY2l0IENv
bnRlbnRUeXBlKFN0cmluZyYmIHR5cGUpOwotICAgIGV4cGxpY2l0IENvbnRlbnRUeXBlKGNvbnN0
IFN0cmluZyYgdHlwZSk7CisgICAgV0VCQ09SRV9FWFBPUlQgZXhwbGljaXQgQ29udGVudFR5cGUo
U3RyaW5nJiYgdHlwZSk7CisgICAgV0VCQ09SRV9FWFBPUlQgZXhwbGljaXQgQ29udGVudFR5cGUo
Y29uc3QgU3RyaW5nJiB0eXBlKTsKICAgICBDb250ZW50VHlwZSgpID0gZGVmYXVsdDsKIAogICAg
IHN0YXRpYyBjb25zdCBTdHJpbmcmIGNvZGVjc1BhcmFtZXRlcigpOwpAQCAtNDksNiArNDksMjUg
QEAgcHVibGljOgogCiAgICAgU3RyaW5nIHRvSlNPTlN0cmluZygpIGNvbnN0OwogCisjaWYgRU5B
QkxFKEdQVV9QUk9DRVNTKQorICAgIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+CisgICAgdm9pZCBl
bmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QKKyAgICB7CisgICAgICAgIGVuY29kZXIgPDwg
bV90eXBlOworICAgIH0KKworICAgIHRlbXBsYXRlIDxjbGFzcyBEZWNvZGVyPgorICAgIHN0YXRp
YyBPcHRpb25hbDxDb250ZW50VHlwZT4gZGVjb2RlKERlY29kZXImIGRlY29kZXIpCisgICAgewor
ICAgICAgICBPcHRpb25hbDxTdHJpbmc+IHR5cGU7CisgICAgICAgIGRlY29kZXIgPj4gdHlwZTsK
KyAgICAgICAgaWYgKCF0eXBlKQorICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKwor
ICAgICAgICByZXR1cm4geyBDb250ZW50VHlwZShXVEZNb3ZlKCp0eXBlKSkgfTsKKyAgICB9Cisj
ZW5kaWYKKwogcHJpdmF0ZToKICAgICBTdHJpbmcgbV90eXBlOwogfTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmNwcAppbmRleCA3ZDViY2NkOTBi
MTc5NGM3MTZlZjNlYjFkMTk5NmQ2M2E3NzU1MDgwLi41MmFkM2E0YjQ3MGY1NDU3NzEwYmMwOTdm
OGUyYjJlMjhkM2Y5NjFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9NZWRpYVBsYXllci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvTWVkaWFQbGF5ZXIuY3BwCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykg
MjAwNy0yMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAo
QykgMjAwNy0yMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzQsNiArMzQsNyBAQAogI2luY2x1ZGUgIkludFJlY3Qu
aCIKICNpbmNsdWRlICJMb2dnaW5nLmgiCiAjaW5jbHVkZSAiTUlNRVR5cGVSZWdpc3RyeS5oIgor
I2luY2x1ZGUgIk1lZGlhUGxheWVyRW5naW5lSWRlbnRpZmllcnMuaCIKICNpbmNsdWRlICJNZWRp
YVBsYXllclByaXZhdGUuaCIKICNpbmNsdWRlICJQbGF0Zm9ybVRpbWVSYW5nZXMuaCIKICNpbmNs
dWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KQEAgLTkwLDE0ICs5MSw2IEBACiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAotI2lmICFSRUxFQVNFX0xPR19ESVNBQkxFRAotc3RhdGljIFJlZlB0cjxM
b2dnZXI+JiBudWxsTG9nZ2VyKCkKLXsKLSAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8UmVmUHRy
PExvZ2dlcj4+IGxvZ2dlcjsKLSAgICByZXR1cm4gbG9nZ2VyOwotfQotI2VuZGlmCi0KIC8vIGEg
bnVsbCBwbGF5ZXIgdG8gbWFrZSBNZWRpYVBsYXllciBsb2dpYyBzaW1wbGVyCiAKIGNsYXNzIE51
bGxNZWRpYVBsYXllclByaXZhdGUgZmluYWwgOiBwdWJsaWMgTWVkaWFQbGF5ZXJQcml2YXRlSW50
ZXJmYWNlIHsKQEAgLTE2Niw4ICsxNTksMjIgQEAgcHVibGljOgogICAgIGJvb2wgaGFzU2luZ2xl
U2VjdXJpdHlPcmlnaW4oKSBjb25zdCBmaW5hbCB7IHJldHVybiB0cnVlOyB9CiB9OwogCisjaWYg
IVJFTEVBU0VfTE9HX0RJU0FCTEVECitzdGF0aWMgUmVmUHRyPExvZ2dlcj4mIG51bGxMb2dnZXIo
KQoreworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxSZWZQdHI8TG9nZ2VyPj4gbG9nZ2VyOwor
ICAgIHJldHVybiBsb2dnZXI7Cit9CisjZW5kaWYKKworc3RhdGljIGNvbnN0IFZlY3RvcjxXZWJD
b3JlOjpDb250ZW50VHlwZT4mIG51bGxDb250ZW50VHlwZVZlY3RvcigpCit7CisgICAgc3RhdGlj
IE5ldmVyRGVzdHJveWVkPFZlY3RvcjxXZWJDb3JlOjpDb250ZW50VHlwZT4+IHZlY3RvcjsKKyAg
ICByZXR1cm4gdmVjdG9yOworfQorCiBjbGFzcyBOdWxsTWVkaWFQbGF5ZXJDbGllbnQgOiBwdWJs
aWMgTWVkaWFQbGF5ZXJDbGllbnQgewotcHVibGljOgorcHJpdmF0ZToKICNpZiAhUkVMRUFTRV9M
T0dfRElTQUJMRUQKICAgICBjb25zdCBMb2dnZXImIG1lZGlhUGxheWVyTG9nZ2VyKCkgZmluYWwK
ICAgICB7CkBAIC0xNzksOCArMTg2LDExIEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuICpudWxs
TG9nZ2VyKCkuZ2V0KCk7CiAgICAgfQogI2VuZGlmCisKKyAgICBjb25zdCBWZWN0b3I8V2ViQ29y
ZTo6Q29udGVudFR5cGU+JiBtZWRpYUNvbnRlbnRUeXBlc1JlcXVpcmluZ0hhcmR3YXJlU3VwcG9y
dCgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG51bGxDb250ZW50VHlwZVZlY3RvcigpOyB9CiB9Owog
CisKIGNvbnN0IFZlY3RvcjxDb250ZW50VHlwZT4mIE1lZGlhUGxheWVyQ2xpZW50OjptZWRpYUNv
bnRlbnRUeXBlc1JlcXVpcmluZ0hhcmR3YXJlU3VwcG9ydCgpIGNvbnN0CiB7CiAgICAgc3RhdGlj
IE5ldmVyRGVzdHJveWVkPFZlY3RvcjxDb250ZW50VHlwZT4+IGNvbnRlbnRUeXBlczsKQEAgLTE5
NSwxNyArMjA1LDcgQEAgc3RhdGljIE1lZGlhUGxheWVyQ2xpZW50JiBudWxsTWVkaWFQbGF5ZXJD
bGllbnQoKQogCiAvLyBlbmdpbmUgc3VwcG9ydAogCi1zdHJ1Y3QgTWVkaWFQbGF5ZXJGYWN0b3J5
IHsKLSAgICBDcmVhdGVNZWRpYUVuZ2luZVBsYXllciBjb25zdHJ1Y3RvcjsKLSAgICBNZWRpYUVu
Z2luZVN1cHBvcnRlZFR5cGVzIGdldFN1cHBvcnRlZFR5cGVzOwotICAgIE1lZGlhRW5naW5lU3Vw
cG9ydHNUeXBlIHN1cHBvcnRzVHlwZUFuZENvZGVjczsKLSAgICBNZWRpYUVuZ2luZU9yaWdpbnNJ
bk1lZGlhQ2FjaGUgb3JpZ2luc0luTWVkaWFDYWNoZTsKLSAgICBNZWRpYUVuZ2luZUNsZWFyTWVk
aWFDYWNoZSBjbGVhck1lZGlhQ2FjaGU7Ci0gICAgTWVkaWFFbmdpbmVDbGVhck1lZGlhQ2FjaGVG
b3JPcmlnaW5zIGNsZWFyTWVkaWFDYWNoZUZvck9yaWdpbnM7Ci0gICAgTWVkaWFFbmdpbmVTdXBw
b3J0c0tleVN5c3RlbSBzdXBwb3J0c0tleVN5c3RlbTsKLX07Ci0KLXN0YXRpYyB2b2lkIGFkZE1l
ZGlhRW5naW5lKENyZWF0ZU1lZGlhRW5naW5lUGxheWVyJiYsIE1lZGlhRW5naW5lU3VwcG9ydGVk
VHlwZXMsIE1lZGlhRW5naW5lU3VwcG9ydHNUeXBlLCBNZWRpYUVuZ2luZU9yaWdpbnNJbk1lZGlh
Q2FjaGUsIE1lZGlhRW5naW5lQ2xlYXJNZWRpYUNhY2hlLCBNZWRpYUVuZ2luZUNsZWFyTWVkaWFD
YWNoZUZvck9yaWdpbnMsIE1lZGlhRW5naW5lU3VwcG9ydHNLZXlTeXN0ZW0pOworc3RhdGljIHZv
aWQgYWRkTWVkaWFFbmdpbmUoc3RkOjp1bmlxdWVfcHRyPE1lZGlhUGxheWVyRmFjdG9yeT4pOwog
CiBzdGF0aWMgTG9jayBtZWRpYUVuZ2luZVZlY3RvckxvY2s7CiAKQEAgLTIxNSwyMSArMjE1LDM3
IEBAIHN0YXRpYyBib29sJiBoYXZlTWVkaWFFbmdpbmVzVmVjdG9yKCkKICAgICByZXR1cm4gaGF2
ZVZlY3RvcjsKIH0KIAotc3RhdGljIFZlY3RvcjxNZWRpYVBsYXllckZhY3Rvcnk+JiBtdXRhYmxl
SW5zdGFsbGVkTWVkaWFFbmdpbmVzVmVjdG9yKCkKK3N0YXRpYyBWZWN0b3I8c3RkOjp1bmlxdWVf
cHRyPE1lZGlhUGxheWVyRmFjdG9yeT4+JiBtdXRhYmxlSW5zdGFsbGVkTWVkaWFFbmdpbmVzVmVj
dG9yKCkKIHsKLSAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8VmVjdG9yPE1lZGlhUGxheWVyRmFj
dG9yeT4+IGluc3RhbGxlZEVuZ2luZXM7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFZlY3Rv
cjxzdGQ6OnVuaXF1ZV9wdHI8TWVkaWFQbGF5ZXJGYWN0b3J5Pj4+IGluc3RhbGxlZEVuZ2luZXM7
CiAgICAgcmV0dXJuIGluc3RhbGxlZEVuZ2luZXM7CiB9CiAKK3N0YXRpYyBSZW1vdGVNZWRpYVBs
YXllclN1cHBvcnQ6OlJlZ2lzdGVyUmVtb3RlUGxheWVyQ2FsbGJhY2smIHJlZ2lzdGVyUmVtb3Rl
UGxheWVyQ2FsbGJhY2soKQoreworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxSZW1vdGVNZWRp
YVBsYXllclN1cHBvcnQ6OlJlZ2lzdGVyUmVtb3RlUGxheWVyQ2FsbGJhY2s+IGNhbGxiYWNrOwor
ICAgIHJldHVybiBjYWxsYmFjazsKK30KKwordm9pZCBSZW1vdGVNZWRpYVBsYXllclN1cHBvcnQ6
OnNldFJlZ2lzdGVyUmVtb3RlUGxheWVyQ2FsbGJhY2soUmVnaXN0ZXJSZW1vdGVQbGF5ZXJDYWxs
YmFjayYmIGNhbGxiYWNrKQoreworICAgIHJlZ2lzdGVyUmVtb3RlUGxheWVyQ2FsbGJhY2soKSA9
IFdURk1vdmUoY2FsbGJhY2spOworfQorCiBzdGF0aWMgdm9pZCBidWlsZE1lZGlhRW5naW5lc1Zl
Y3RvcigpCiB7CiAgICAgQVNTRVJUKG1lZGlhRW5naW5lVmVjdG9yTG9jay5pc0xvY2tlZCgpKTsK
IAogI2lmIFVTRShBVkZPVU5EQVRJT04pCisgICAgYXV0byYgcmVnaXN0ZXJSZW1vdGVFbmdpbmUg
PSByZWdpc3RlclJlbW90ZVBsYXllckNhbGxiYWNrKCk7CisKICAgICBpZiAoRGVwcmVjYXRlZEds
b2JhbFNldHRpbmdzOjppc0FWRm91bmRhdGlvbkVuYWJsZWQoKSkgewogCiAjaWYgUExBVEZPUk0o
Q09DT0EpCi0gICAgICAgIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OnJlZ2lz
dGVyTWVkaWFFbmdpbmUoYWRkTWVkaWFFbmdpbmUpOworICAgICAgICBpZiAocmVnaXN0ZXJSZW1v
dGVFbmdpbmUpCisgICAgICAgICAgICByZWdpc3RlclJlbW90ZUVuZ2luZShhZGRNZWRpYUVuZ2lu
ZSwgTWVkaWFQbGF5ZXJFbmdpbmVJZGVudGlmaWVyczo6YXZGb3VuZGF0aW9uRW5naW5lSWRlbnRp
ZmllcigpKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgTWVkaWFQbGF5ZXJQcml2YXRlQVZG
b3VuZGF0aW9uT2JqQzo6cmVnaXN0ZXJNZWRpYUVuZ2luZShhZGRNZWRpYUVuZ2luZSk7CiAjZW5k
aWYKIAogI2lmIEVOQUJMRShNRURJQV9TT1VSQ0UpCkBAIC0yNjUsNyArMjgxLDcgQEAgc3RhdGlj
IHZvaWQgYnVpbGRNZWRpYUVuZ2luZXNWZWN0b3IoKQogICAgIGhhdmVNZWRpYUVuZ2luZXNWZWN0
b3IoKSA9IHRydWU7CiB9CiAKLXN0YXRpYyBjb25zdCBWZWN0b3I8TWVkaWFQbGF5ZXJGYWN0b3J5
PiYgaW5zdGFsbGVkTWVkaWFFbmdpbmVzKCkKK3N0YXRpYyBjb25zdCBWZWN0b3I8c3RkOjp1bmlx
dWVfcHRyPE1lZGlhUGxheWVyRmFjdG9yeT4+JiBpbnN0YWxsZWRNZWRpYUVuZ2luZXMoKQogewog
ICAgIHsKICAgICAgICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhtZWRpYUVuZ2luZVZlY3Rvckxv
Y2spOwpAQCAtMjc2LDE0ICsyOTIsOSBAQCBzdGF0aWMgY29uc3QgVmVjdG9yPE1lZGlhUGxheWVy
RmFjdG9yeT4mIGluc3RhbGxlZE1lZGlhRW5naW5lcygpCiAgICAgcmV0dXJuIG11dGFibGVJbnN0
YWxsZWRNZWRpYUVuZ2luZXNWZWN0b3IoKTsKIH0KIAotc3RhdGljIHZvaWQgYWRkTWVkaWFFbmdp
bmUoQ3JlYXRlTWVkaWFFbmdpbmVQbGF5ZXImJiBjb25zdHJ1Y3RvciwgTWVkaWFFbmdpbmVTdXBw
b3J0ZWRUeXBlcyBnZXRTdXBwb3J0ZWRUeXBlcywgTWVkaWFFbmdpbmVTdXBwb3J0c1R5cGUgc3Vw
cG9ydHNUeXBlLAotICAgIE1lZGlhRW5naW5lT3JpZ2luc0luTWVkaWFDYWNoZSBvcmlnaW5zSW5N
ZWRpYUNhY2hlLCBNZWRpYUVuZ2luZUNsZWFyTWVkaWFDYWNoZSBjbGVhck1lZGlhQ2FjaGUsIE1l
ZGlhRW5naW5lQ2xlYXJNZWRpYUNhY2hlRm9yT3JpZ2lucyBjbGVhck1lZGlhQ2FjaGVGb3JPcmln
aW5zLCBNZWRpYUVuZ2luZVN1cHBvcnRzS2V5U3lzdGVtIHN1cHBvcnRzS2V5U3lzdGVtKQorc3Rh
dGljIHZvaWQgYWRkTWVkaWFFbmdpbmUoc3RkOjp1bmlxdWVfcHRyPE1lZGlhUGxheWVyRmFjdG9y
eT4gZmFjdG9yeSkKIHsKLSAgICBBU1NFUlQoY29uc3RydWN0b3IpOwotICAgIEFTU0VSVChnZXRT
dXBwb3J0ZWRUeXBlcyk7Ci0gICAgQVNTRVJUKHN1cHBvcnRzVHlwZSk7Ci0KLSAgICBtdXRhYmxl
SW5zdGFsbGVkTWVkaWFFbmdpbmVzVmVjdG9yKCkuYXBwZW5kKE1lZGlhUGxheWVyRmFjdG9yeSB7
IFdURk1vdmUoY29uc3RydWN0b3IpLCBnZXRTdXBwb3J0ZWRUeXBlcywgc3VwcG9ydHNUeXBlLCBv
cmlnaW5zSW5NZWRpYUNhY2hlLCBjbGVhck1lZGlhQ2FjaGUsIGNsZWFyTWVkaWFDYWNoZUZvck9y
aWdpbnMsIHN1cHBvcnRzS2V5U3lzdGVtIH0pOworICAgIG11dGFibGVJbnN0YWxsZWRNZWRpYUVu
Z2luZXNWZWN0b3IoKS5hcHBlbmQoV1RGTW92ZShmYWN0b3J5KSk7CiB9CiAKIHN0YXRpYyBjb25z
dCBBdG9tU3RyaW5nJiBhcHBsaWNhdGlvbk9jdGV0U3RyZWFtKCkKQEAgLTI5OCw2ICszMDksMjEg
QEAgc3RhdGljIGNvbnN0IEF0b21TdHJpbmcmIHRleHRQbGFpbigpCiAgICAgcmV0dXJuIHRleHRQ
bGFpbjsKIH0KIAorY29uc3QgTWVkaWFQbGF5ZXJGYWN0b3J5KiBNZWRpYVBsYXllcjo6bWVkaWFF
bmdpbmUoY29uc3QgU3RyaW5nJiBpZGVudGlmaWVyKQoreworICAgIGF1dG8mIGVuZ2luZXMgPSBp
bnN0YWxsZWRNZWRpYUVuZ2luZXMoKTsKKyAgICBhdXRvIGN1cnJlbnRJbmRleCA9IGVuZ2luZXMu
ZmluZE1hdGNoaW5nKFtpZGVudGlmaWVyXSAoYXV0byYgZW5naW5lKSB7CisgICAgICAgIHJldHVy
biBlbmdpbmUtPmlkZW50aWZpZXIoKSA9PSBpZGVudGlmaWVyOworICAgIH0pOworCisgICAgaWYg
KGN1cnJlbnRJbmRleCA9PSBub3RGb3VuZCkgeworICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQo
KTsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgfQorCisgICAgcmV0dXJuIGVuZ2luZXNb
Y3VycmVudEluZGV4ICsgMV0uZ2V0KCk7Cit9CisKIHN0YXRpYyBjb25zdCBNZWRpYVBsYXllckZh
Y3RvcnkqIGJlc3RNZWRpYUVuZ2luZUZvclN1cHBvcnRQYXJhbWV0ZXJzKGNvbnN0IE1lZGlhRW5n
aW5lU3VwcG9ydFBhcmFtZXRlcnMmIHBhcmFtZXRlcnMsIGNvbnN0IE1lZGlhUGxheWVyRmFjdG9y
eSogY3VycmVudCA9IG51bGxwdHIpCiB7CiAgICAgaWYgKHBhcmFtZXRlcnMudHlwZS5pc0VtcHR5
KCkgJiYgIXBhcmFtZXRlcnMuaXNNZWRpYVNvdXJjZSAmJiAhcGFyYW1ldGVycy5pc01lZGlhU3Ry
ZWFtKQpAQCAtMzE1LDM0ICszNDEsNDYgQEAgc3RhdGljIGNvbnN0IE1lZGlhUGxheWVyRmFjdG9y
eSogYmVzdE1lZGlhRW5naW5lRm9yU3VwcG9ydFBhcmFtZXRlcnMoY29uc3QgTWVkaWEKICAgICBN
ZWRpYVBsYXllcjo6U3VwcG9ydHNUeXBlIHN1cHBvcnRlZCA9IE1lZGlhUGxheWVyOjpJc05vdFN1
cHBvcnRlZDsKICAgICBmb3IgKGF1dG8mIGVuZ2luZSA6IGluc3RhbGxlZE1lZGlhRW5naW5lcygp
KSB7CiAgICAgICAgIGlmIChjdXJyZW50KSB7Ci0gICAgICAgICAgICBpZiAoY3VycmVudCA9PSAm
ZW5naW5lKQorICAgICAgICAgICAgaWYgKGN1cnJlbnQgPT0gZW5naW5lLmdldCgpKQogICAgICAg
ICAgICAgICAgIGN1cnJlbnQgPSBudWxscHRyOwogICAgICAgICAgICAgY29udGludWU7CiAgICAg
ICAgIH0KLSAgICAgICAgTWVkaWFQbGF5ZXI6OlN1cHBvcnRzVHlwZSBlbmdpbmVTdXBwb3J0ID0g
ZW5naW5lLnN1cHBvcnRzVHlwZUFuZENvZGVjcyhwYXJhbWV0ZXJzKTsKKyAgICAgICAgTWVkaWFQ
bGF5ZXI6OlN1cHBvcnRzVHlwZSBlbmdpbmVTdXBwb3J0ID0gZW5naW5lLT5zdXBwb3J0c1R5cGVB
bmRDb2RlY3MocGFyYW1ldGVycyk7CiAgICAgICAgIGlmIChlbmdpbmVTdXBwb3J0ID4gc3VwcG9y
dGVkKSB7CiAgICAgICAgICAgICBzdXBwb3J0ZWQgPSBlbmdpbmVTdXBwb3J0OwotICAgICAgICAg
ICAgZm91bmRFbmdpbmUgPSAmZW5naW5lOworICAgICAgICAgICAgZm91bmRFbmdpbmUgPSBlbmdp
bmUuZ2V0KCk7CiAgICAgICAgIH0KICAgICB9CiAKICAgICByZXR1cm4gZm91bmRFbmdpbmU7CiB9
CiAKLXN0YXRpYyBjb25zdCBNZWRpYVBsYXllckZhY3RvcnkqIG5leHRNZWRpYUVuZ2luZShjb25z
dCBNZWRpYVBsYXllckZhY3RvcnkqIGN1cnJlbnQpCitjb25zdCBNZWRpYVBsYXllckZhY3Rvcnkq
IE1lZGlhUGxheWVyOjpuZXh0TWVkaWFFbmdpbmUoY29uc3QgTWVkaWFQbGF5ZXJGYWN0b3J5KiBj
dXJyZW50KQogeworICAgIGlmICghbV9hY3RpdmVFbmdpbmVJZGVudGlmaWVyLmlzRW1wdHkoKSkg
eworICAgICAgICBhdXRvKiBlbmdpbmUgPSBtZWRpYUVuZ2luZShtX2FjdGl2ZUVuZ2luZUlkZW50
aWZpZXIpOworICAgICAgICByZXR1cm4gY3VycmVudCAhPSBlbmdpbmUgPyBlbmdpbmUgOiBudWxs
cHRyOworICAgIH0KKwogICAgIGF1dG8mIGVuZ2luZXMgPSBpbnN0YWxsZWRNZWRpYUVuZ2luZXMo
KTsKICAgICBpZiAoZW5naW5lcy5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwog
CiAgICAgaWYgKCFjdXJyZW50KSAKLSAgICAgICAgcmV0dXJuICZlbmdpbmVzLmZpcnN0KCk7Cisg
ICAgICAgIHJldHVybiBlbmdpbmVzLmZpcnN0KCkuZ2V0KCk7CisKKyAgICBhdXRvIGN1cnJlbnRJ
bmRleCA9IGVuZ2luZXMuZmluZE1hdGNoaW5nKFtjdXJyZW50XSAoYXV0byYgZW5naW5lKSB7Cisg
ICAgICAgIHJldHVybiBlbmdpbmUuZ2V0KCkgPT0gY3VycmVudDsKKyAgICB9KTsKKyAgICBpZiAo
Y3VycmVudEluZGV4ID09IG5vdEZvdW5kKSB7CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgp
OworICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICB9CiAKLSAgICBzaXplX3QgY3VycmVudElu
ZGV4ID0gY3VycmVudCAtICZlbmdpbmVzLmZpcnN0KCk7CiAgICAgaWYgKGN1cnJlbnRJbmRleCAr
IDEgPj0gZW5naW5lcy5zaXplKCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgcmV0
dXJuICZlbmdpbmVzW2N1cnJlbnRJbmRleCArIDFdOworICAgIHJldHVybiBlbmdpbmVzW2N1cnJl
bnRJbmRleCArIDFdLmdldCgpOwogfQogCiAvLyBtZWRpYSBwbGF5ZXIKQEAgLTM1Miw2ICszOTAs
MTMgQEAgUmVmPE1lZGlhUGxheWVyPiBNZWRpYVBsYXllcjo6Y3JlYXRlKE1lZGlhUGxheWVyQ2xp
ZW50JiBjbGllbnQpCiAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgTWVkaWFQbGF5ZXIoY2xpZW50
KSk7CiB9CiAKK1JlZjxNZWRpYVBsYXllcj4gTWVkaWFQbGF5ZXI6OmNyZWF0ZShNZWRpYVBsYXll
ckNsaWVudCYgY2xpZW50LCBjb25zdCBTdHJpbmcmIG1lZGlhRW5naW5lSWRlbnRpZmllcikKK3sK
KyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBNZWRpYVBsYXllcihjbGllbnQsIG1lZGlhRW5naW5l
SWRlbnRpZmllcikpOworfQorCisKKwogTWVkaWFQbGF5ZXI6Ok1lZGlhUGxheWVyKE1lZGlhUGxh
eWVyQ2xpZW50JiBjbGllbnQpCiAgICAgOiBtX2NsaWVudCgmY2xpZW50KQogICAgICwgbV9yZWxv
YWRUaW1lcigqdGhpcywgJk1lZGlhUGxheWVyOjpyZWxvYWRUaW1lckZpcmVkKQpAQCAtMzU5LDYg
KzQwNCwxNCBAQCBNZWRpYVBsYXllcjo6TWVkaWFQbGF5ZXIoTWVkaWFQbGF5ZXJDbGllbnQmIGNs
aWVudCkKIHsKIH0KIAorTWVkaWFQbGF5ZXI6Ok1lZGlhUGxheWVyKE1lZGlhUGxheWVyQ2xpZW50
JiBjbGllbnQsIGNvbnN0IFN0cmluZyYgYWN0aXZlRW5naW5lSWRlbnRpZmllcikKKyAgICA6IG1f
Y2xpZW50KCZjbGllbnQpCisgICAgLCBtX3JlbG9hZFRpbWVyKCp0aGlzLCAmTWVkaWFQbGF5ZXI6
OnJlbG9hZFRpbWVyRmlyZWQpCisgICAgLCBtX3ByaXZhdGUobWFrZVVuaXF1ZTxOdWxsTWVkaWFQ
bGF5ZXJQcml2YXRlPih0aGlzKSkKKyAgICAsIG1fYWN0aXZlRW5naW5lSWRlbnRpZmllcihhY3Rp
dmVFbmdpbmVJZGVudGlmaWVyKQoreworfQorCiBNZWRpYVBsYXllcjo6fk1lZGlhUGxheWVyKCkK
IHsKICAgICBBU1NFUlQoIW1faW5pdGlhbGl6aW5nTWVkaWFFbmdpbmUpOwpAQCAtNDQxLDcgKzQ5
NCw3IEBAIGJvb2wgTWVkaWFQbGF5ZXI6OmxvYWQoTWVkaWFTdHJlYW1Qcml2YXRlJiBtZWRpYVN0
cmVhbSkKIH0KICNlbmRpZgogCi1jb25zdCBNZWRpYVBsYXllckZhY3RvcnkqIE1lZGlhUGxheWVy
OjpuZXh0QmVzdE1lZGlhRW5naW5lKGNvbnN0IE1lZGlhUGxheWVyRmFjdG9yeSogY3VycmVudCkg
Y29uc3QKK2NvbnN0IE1lZGlhUGxheWVyRmFjdG9yeSogTWVkaWFQbGF5ZXI6Om5leHRCZXN0TWVk
aWFFbmdpbmUoY29uc3QgTWVkaWFQbGF5ZXJGYWN0b3J5KiBjdXJyZW50KQogewogICAgIE1lZGlh
RW5naW5lU3VwcG9ydFBhcmFtZXRlcnMgcGFyYW1ldGVyczsKICAgICBwYXJhbWV0ZXJzLnR5cGUg
PSBtX2NvbnRlbnRUeXBlOwpAQCAtNDUzLDYgKzUwNiwyOCBAQCBjb25zdCBNZWRpYVBsYXllckZh
Y3RvcnkqIE1lZGlhUGxheWVyOjpuZXh0QmVzdE1lZGlhRW5naW5lKGNvbnN0IE1lZGlhUGxheWVy
RmFjdAogICAgIHBhcmFtZXRlcnMuaXNNZWRpYVN0cmVhbSA9ICEhbV9tZWRpYVN0cmVhbTsKICNl
bmRpZgogCisgICAgaWYgKCFtX2FjdGl2ZUVuZ2luZUlkZW50aWZpZXIuaXNFbXB0eSgpKSB7Cisg
ICAgICAgIGlmIChjdXJyZW50KQorICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICAg
ICAgYXV0byogZW5naW5lID0gbWVkaWFFbmdpbmUobV9hY3RpdmVFbmdpbmVJZGVudGlmaWVyKTsK
KyAgICAgICAgaWYgKGVuZ2luZSAmJiBlbmdpbmUtPnN1cHBvcnRzVHlwZUFuZENvZGVjcyhwYXJh
bWV0ZXJzKSAhPSBNZWRpYVBsYXllcjo6SXNOb3RTdXBwb3J0ZWQpCisgICAgICAgICAgICByZXR1
cm4gZW5naW5lOworCisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIH0KKworICAgIGlmICgh
bV9hY3RpdmVFbmdpbmVJZGVudGlmaWVyLmlzRW1wdHkoKSkgeworICAgICAgICBpZiAoY3VycmVu
dCkKKyAgICAgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgICAgIGF1dG8qIGVuZ2luZSA9
IG1lZGlhRW5naW5lKG1fYWN0aXZlRW5naW5lSWRlbnRpZmllcik7CisgICAgICAgIGlmIChlbmdp
bmUgJiYgZW5naW5lLT5zdXBwb3J0c1R5cGVBbmRDb2RlY3MocGFyYW1ldGVycykgIT0gTWVkaWFQ
bGF5ZXI6OklzTm90U3VwcG9ydGVkKQorICAgICAgICAgICAgcmV0dXJuIGVuZ2luZTsKKworICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICB9CisKICAgICByZXR1cm4gYmVzdE1lZGlhRW5naW5l
Rm9yU3VwcG9ydFBhcmFtZXRlcnMocGFyYW1ldGVycywgY3VycmVudCk7CiB9CiAKQEAgLTQ4OSw3
ICs1NjQsNyBAQCB2b2lkIE1lZGlhUGxheWVyOjpsb2FkV2l0aE5leHRNZWRpYUVuZ2luZShjb25z
dCBNZWRpYVBsYXllckZhY3RvcnkqIGN1cnJlbnQpCiAgICAgICAgIG1fcHJpdmF0ZSA9IG51bGxw
dHI7CiAgICAgfSBlbHNlIGlmIChtX2N1cnJlbnRNZWRpYUVuZ2luZSAhPSBlbmdpbmUpIHsKICAg
ICAgICAgbV9jdXJyZW50TWVkaWFFbmdpbmUgPSBlbmdpbmU7Ci0gICAgICAgIG1fcHJpdmF0ZSA9
IGVuZ2luZS0+Y29uc3RydWN0b3IodGhpcyk7CisgICAgICAgIG1fcHJpdmF0ZSA9IGVuZ2luZS0+
Y3JlYXRlTWVkaWFFbmdpbmVQbGF5ZXIodGhpcyk7CiAgICAgICAgIGNsaWVudCgpLm1lZGlhUGxh
eWVyRW5naW5lVXBkYXRlZCgpOwogICAgICAgICBtX3ByaXZhdGUtPnNldFByaXZhdGVCcm93c2lu
Z01vZGUobV9wcml2YXRlQnJvd3NpbmcpOwogICAgICAgICBtX3ByaXZhdGUtPnNldFByZWxvYWQo
bV9wcmVsb2FkKTsKQEAgLTkyOSw3ICsxMDA0LDcgQEAgdm9pZCBNZWRpYVBsYXllcjo6Z2V0U3Vw
cG9ydGVkVHlwZXMoSGFzaFNldDxTdHJpbmcsIEFTQ0lJQ2FzZUluc2Vuc2l0aXZlSGFzaD4mIHQK
IHsKICAgICBmb3IgKGF1dG8mIGVuZ2luZSA6IGluc3RhbGxlZE1lZGlhRW5naW5lcygpKSB7CiAg
ICAgICAgIEhhc2hTZXQ8U3RyaW5nLCBBU0NJSUNhc2VJbnNlbnNpdGl2ZUhhc2g+IGVuZ2luZVR5
cGVzOwotICAgICAgICBlbmdpbmUuZ2V0U3VwcG9ydGVkVHlwZXMoZW5naW5lVHlwZXMpOworICAg
ICAgICBlbmdpbmUtPmdldFN1cHBvcnRlZFR5cGVzKGVuZ2luZVR5cGVzKTsKICAgICAgICAgdHlw
ZXMuYWRkKGVuZ2luZVR5cGVzLmJlZ2luKCksIGVuZ2luZVR5cGVzLmVuZCgpKTsKICAgICB9CiB9
IApAQCAtMTEyNSwzNCArMTIwMCwyOCBAQCBzdGF0aWMgdm9pZCBhZGRUb0hhc2goSGFzaFNldDxU
PiYgdG9IYXNoLCBIYXNoU2V0PFQ+JiYgZnJvbUhhc2gpCiBIYXNoU2V0PFJlZlB0cjxTZWN1cml0
eU9yaWdpbj4+IE1lZGlhUGxheWVyOjpvcmlnaW5zSW5NZWRpYUNhY2hlKGNvbnN0IFN0cmluZyYg
cGF0aCkKIHsKICAgICBIYXNoU2V0PFJlZlB0cjxTZWN1cml0eU9yaWdpbj4+IG9yaWdpbnM7Ci0g
ICAgZm9yIChhdXRvJiBlbmdpbmUgOiBpbnN0YWxsZWRNZWRpYUVuZ2luZXMoKSkgewotICAgICAg
ICBpZiAoIWVuZ2luZS5vcmlnaW5zSW5NZWRpYUNhY2hlKQotICAgICAgICAgICAgY29udGludWU7
Ci0gICAgICAgIGFkZFRvSGFzaChvcmlnaW5zLCBlbmdpbmUub3JpZ2luc0luTWVkaWFDYWNoZShw
YXRoKSk7Ci0gICAgfQorICAgIGZvciAoYXV0byYgZW5naW5lIDogaW5zdGFsbGVkTWVkaWFFbmdp
bmVzKCkpCisgICAgICAgIGFkZFRvSGFzaChvcmlnaW5zLCBlbmdpbmUtPm9yaWdpbnNJbk1lZGlh
Q2FjaGUocGF0aCkpOworCiAgICAgcmV0dXJuIG9yaWdpbnM7CiB9CiAKIHZvaWQgTWVkaWFQbGF5
ZXI6OmNsZWFyTWVkaWFDYWNoZShjb25zdCBTdHJpbmcmIHBhdGgsIFdhbGxUaW1lIG1vZGlmaWVk
U2luY2UpCiB7Ci0gICAgZm9yIChhdXRvJiBlbmdpbmUgOiBpbnN0YWxsZWRNZWRpYUVuZ2luZXMo
KSkgewotICAgICAgICBpZiAoZW5naW5lLmNsZWFyTWVkaWFDYWNoZSkKLSAgICAgICAgICAgIGVu
Z2luZS5jbGVhck1lZGlhQ2FjaGUocGF0aCwgbW9kaWZpZWRTaW5jZSk7Ci0gICAgfQorICAgIGZv
ciAoYXV0byYgZW5naW5lIDogaW5zdGFsbGVkTWVkaWFFbmdpbmVzKCkpCisgICAgICAgIGVuZ2lu
ZS0+Y2xlYXJNZWRpYUNhY2hlKHBhdGgsIG1vZGlmaWVkU2luY2UpOwogfQogCiB2b2lkIE1lZGlh
UGxheWVyOjpjbGVhck1lZGlhQ2FjaGVGb3JPcmlnaW5zKGNvbnN0IFN0cmluZyYgcGF0aCwgY29u
c3QgSGFzaFNldDxSZWZQdHI8U2VjdXJpdHlPcmlnaW4+PiYgb3JpZ2lucykKIHsKLSAgICBmb3Ig
KGF1dG8mIGVuZ2luZSA6IGluc3RhbGxlZE1lZGlhRW5naW5lcygpKSB7Ci0gICAgICAgIGlmIChl
bmdpbmUuY2xlYXJNZWRpYUNhY2hlRm9yT3JpZ2lucykKLSAgICAgICAgICAgIGVuZ2luZS5jbGVh
ck1lZGlhQ2FjaGVGb3JPcmlnaW5zKHBhdGgsIG9yaWdpbnMpOwotICAgIH0KKyAgICBmb3IgKGF1
dG8mIGVuZ2luZSA6IGluc3RhbGxlZE1lZGlhRW5naW5lcygpKQorICAgICAgICBlbmdpbmUtPmNs
ZWFyTWVkaWFDYWNoZUZvck9yaWdpbnMocGF0aCwgb3JpZ2lucyk7CiB9CiAKIGJvb2wgTWVkaWFQ
bGF5ZXI6OnN1cHBvcnRzS2V5U3lzdGVtKGNvbnN0IFN0cmluZyYga2V5U3lzdGVtLCBjb25zdCBT
dHJpbmcmIG1pbWVUeXBlKQogewogICAgIGZvciAoYXV0byYgZW5naW5lIDogaW5zdGFsbGVkTWVk
aWFFbmdpbmVzKCkpIHsKLSAgICAgICAgaWYgKGVuZ2luZS5zdXBwb3J0c0tleVN5c3RlbSAmJiBl
bmdpbmUuc3VwcG9ydHNLZXlTeXN0ZW0oa2V5U3lzdGVtLCBtaW1lVHlwZSkpCisgICAgICAgIGlm
IChlbmdpbmUtPnN1cHBvcnRzS2V5U3lzdGVtKGtleVN5c3RlbSwgbWltZVR5cGUpKQogICAgICAg
ICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogICAgIHJldHVybiBmYWxzZTsKQEAgLTExNzIsNyAr
MTI0MSw3IEBAIHZvaWQgTWVkaWFQbGF5ZXI6Om5ldHdvcmtTdGF0ZUNoYW5nZWQoKQogICAgIC8v
IGxldCB0aGUgbmV4dCBlbmdpbmUgdHJ5LgogICAgIGlmIChtX3ByaXZhdGUtPm5ldHdvcmtTdGF0
ZSgpID49IEZvcm1hdEVycm9yICYmIG1fcHJpdmF0ZS0+cmVhZHlTdGF0ZSgpIDwgSGF2ZU1ldGFk
YXRhKSB7CiAgICAgICAgIGNsaWVudCgpLm1lZGlhUGxheWVyRW5naW5lRmFpbGVkVG9Mb2FkKCk7
Ci0gICAgICAgIGlmIChpbnN0YWxsZWRNZWRpYUVuZ2luZXMoKS5zaXplKCkgPiAxICYmIChtX2Nv
bnRlbnRUeXBlLmlzRW1wdHkoKSB8fCBuZXh0QmVzdE1lZGlhRW5naW5lKG1fY3VycmVudE1lZGlh
RW5naW5lKSkpIHsKKyAgICAgICAgaWYgKG1fYWN0aXZlRW5naW5lSWRlbnRpZmllci5pc0VtcHR5
KCkgJiYgaW5zdGFsbGVkTWVkaWFFbmdpbmVzKCkuc2l6ZSgpID4gMSAmJiAobV9jb250ZW50VHlw
ZS5pc0VtcHR5KCkgfHwgbmV4dEJlc3RNZWRpYUVuZ2luZShtX2N1cnJlbnRNZWRpYUVuZ2luZSkp
KSB7CiAgICAgICAgICAgICBtX3JlbG9hZFRpbWVyLnN0YXJ0T25lU2hvdCgwX3MpOwogICAgICAg
ICAgICAgcmV0dXJuOwogICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvTWVkaWFQbGF5ZXIuaAppbmRleCBmYjllYmEwZTRhYmUzMWM3NTI3MDBjYjdjZTY4OTBk
Yjk4OWMyMjJiLi4wMjVjZTIwYWYwMjk4NjZmZjkyZmRiOGQ4ZTRiMDBiZjg2NWViNGZjIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmgKQEAgLTY3
LDYgKzY3LDcgQEAgY2xhc3MgSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZTsKIGNsYXNzIExlZ2FjeUNE
TVNlc3Npb25DbGllbnQ7CiBjbGFzcyBNZWRpYVBsYXliYWNrVGFyZ2V0OwogY2xhc3MgTWVkaWFQ
bGF5ZXI7CitjbGFzcyBNZWRpYVBsYXllckZhY3Rvcnk7CiBjbGFzcyBNZWRpYVBsYXllclByaXZh
dGVJbnRlcmZhY2U7CiBjbGFzcyBNZWRpYVBsYXllclJlcXVlc3RJbnN0YWxsTWlzc2luZ1BsdWdp
bnNDYWxsYmFjazsKIGNsYXNzIE1lZGlhU291cmNlUHJpdmF0ZUNsaWVudDsKQEAgLTc2LDcgKzc3
LDYgQEAgY2xhc3MgVGV4dFRyYWNrUmVwcmVzZW50YXRpb247CiAKIHN0cnVjdCBDb29raWU7CiBz
dHJ1Y3QgR3JhcGhpY3NEZXZpY2VBZGFwdGVyOwotc3RydWN0IE1lZGlhUGxheWVyRmFjdG9yeTsK
IAogc3RydWN0IE1lZGlhRW5naW5lU3VwcG9ydFBhcmFtZXRlcnMgewogICAgIENvbnRlbnRUeXBl
IHR5cGU7CkBAIC04NCw2ICs4NCw0OCBAQCBzdHJ1Y3QgTWVkaWFFbmdpbmVTdXBwb3J0UGFyYW1l
dGVycyB7CiAgICAgYm9vbCBpc01lZGlhU291cmNlIHsgZmFsc2UgfTsKICAgICBib29sIGlzTWVk
aWFTdHJlYW0geyBmYWxzZSB9OwogICAgIFZlY3RvcjxDb250ZW50VHlwZT4gY29udGVudFR5cGVz
UmVxdWlyaW5nSGFyZHdhcmVTdXBwb3J0OworCisjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKQorICAg
IHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+CisgICAgdm9pZCBlbmNvZGUoRW5jb2RlciYgZW5jb2Rl
cikgY29uc3QKKyAgICB7CisgICAgICAgIGVuY29kZXIgPDwgdHlwZTsKKyAgICAgICAgZW5jb2Rl
ciA8PCB1cmw7CisgICAgICAgIGVuY29kZXIgPDwgaXNNZWRpYVNvdXJjZTsKKyAgICAgICAgZW5j
b2RlciA8PCBjb250ZW50VHlwZXNSZXF1aXJpbmdIYXJkd2FyZVN1cHBvcnQ7CisgICAgfQorCisg
ICAgdGVtcGxhdGUgPGNsYXNzIERlY29kZXI+CisgICAgc3RhdGljIE9wdGlvbmFsPE1lZGlhRW5n
aW5lU3VwcG9ydFBhcmFtZXRlcnM+IGRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQorICAgIHsKKyAg
ICAgICAgT3B0aW9uYWw8Q29udGVudFR5cGU+IHR5cGU7CisgICAgICAgIGRlY29kZXIgPj4gdHlw
ZTsKKyAgICAgICAgaWYgKCF0eXBlKQorICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsK
KworICAgICAgICBPcHRpb25hbDxVUkw+IHVybDsKKyAgICAgICAgZGVjb2RlciA+PiB1cmw7Cisg
ICAgICAgIGlmICghdXJsKQorICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKworICAg
ICAgICBPcHRpb25hbDxib29sPiBpc01lZGlhU291cmNlOworICAgICAgICBkZWNvZGVyID4+IGlz
TWVkaWFTb3VyY2U7CisgICAgICAgIGlmICghaXNNZWRpYVNvdXJjZSkKKyAgICAgICAgICAgIHJl
dHVybiBXVEY6Om51bGxvcHQ7CisKKyAgICAgICAgT3B0aW9uYWw8Ym9vbD4gaXNNZWRpYVN0cmVh
bTsKKyAgICAgICAgZGVjb2RlciA+PiBpc01lZGlhU3RyZWFtOworICAgICAgICBpZiAoIWlzTWVk
aWFTdHJlYW0pCisgICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworCisgICAgICAgIE9w
dGlvbmFsPFZlY3RvcjxDb250ZW50VHlwZT4+IHR5cGVzUmVxdWlyaW5nSGFyZHdhcmU7CisgICAg
ICAgIGRlY29kZXIgPj4gdHlwZXNSZXF1aXJpbmdIYXJkd2FyZTsKKyAgICAgICAgaWYgKCF0eXBl
c1JlcXVpcmluZ0hhcmR3YXJlKQorICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKwor
ICAgICAgICByZXR1cm4ge3sgV1RGTW92ZSgqdHlwZSksIFdURk1vdmUoKnVybCksIFdURk1vdmUo
KmlzTWVkaWFTb3VyY2UpLCBXVEZNb3ZlKCppc01lZGlhU3RyZWFtKSwgV1RGTW92ZSgqdHlwZXNS
ZXF1aXJpbmdIYXJkd2FyZSkgfX07CisgICAgfQorI2VuZGlmCiB9OwogCiBzdHJ1Y3QgVmlkZW9Q
bGF5YmFja1F1YWxpdHlNZXRyaWNzIHsKQEAgLTIzNSw3ICsyNzcsNyBAQCBwdWJsaWM6CiAjZW5k
aWYKIAogICAgIHZpcnR1YWwgYm9vbCBtZWRpYVBsYXllclNob3VsZERpc2FibGVTbGVlcCgpIGNv
bnN0IHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgdmlydHVhbCBjb25zdCBWZWN0b3I8Q29udGVudFR5
cGU+JiBtZWRpYUNvbnRlbnRUeXBlc1JlcXVpcmluZ0hhcmR3YXJlU3VwcG9ydCgpIGNvbnN0Owor
ICAgIHZpcnR1YWwgY29uc3QgVmVjdG9yPENvbnRlbnRUeXBlPiYgbWVkaWFDb250ZW50VHlwZXNS
ZXF1aXJpbmdIYXJkd2FyZVN1cHBvcnQoKSBjb25zdCA9IDA7CiAgICAgdmlydHVhbCBib29sIG1l
ZGlhUGxheWVyU2hvdWxkQ2hlY2tIYXJkd2FyZVN1cHBvcnQoKSBjb25zdCB7IHJldHVybiBmYWxz
ZTsgfQogCiAjaWYgIVJFTEVBU0VfTE9HX0RJU0FCTEVECkBAIC0yNDQsMTYgKzI4NiwxOCBAQCBw
dWJsaWM6CiAjZW5kaWYKIH07CiAKLWNsYXNzIE1lZGlhUGxheWVyIDogcHVibGljIE1lZGlhUGxh
eWVyRW51bXMsIHB1YmxpYyBSZWZDb3VudGVkPE1lZGlhUGxheWVyPiB7CitjbGFzcyBXRUJDT1JF
X0VYUE9SVCBNZWRpYVBsYXllciA6IHB1YmxpYyBNZWRpYVBsYXllckVudW1zLCBwdWJsaWMgUmVm
Q291bnRlZDxNZWRpYVBsYXllcj4gewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKE1lZGlhUGxh
eWVyKTsgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgc3RhdGljIFJlZjxN
ZWRpYVBsYXllcj4gY3JlYXRlKE1lZGlhUGxheWVyQ2xpZW50Jik7CisgICAgc3RhdGljIFJlZjxN
ZWRpYVBsYXllcj4gY3JlYXRlKE1lZGlhUGxheWVyQ2xpZW50JiwgY29uc3QgU3RyaW5nJik7CiAg
ICAgdmlydHVhbCB+TWVkaWFQbGF5ZXIoKTsKIAogICAgIHZvaWQgaW52YWxpZGF0ZSgpOwogCiAg
ICAgLy8gTWVkaWEgZW5naW5lIHN1cHBvcnQuCiAgICAgdXNpbmcgTWVkaWFQbGF5ZXJFbnVtczo6
U3VwcG9ydHNUeXBlOworICAgIHN0YXRpYyBjb25zdCBNZWRpYVBsYXllckZhY3RvcnkqIG1lZGlh
RW5naW5lKGNvbnN0IFN0cmluZyYpOwogICAgIHN0YXRpYyBTdXBwb3J0c1R5cGUgc3VwcG9ydHNU
eXBlKGNvbnN0IE1lZGlhRW5naW5lU3VwcG9ydFBhcmFtZXRlcnMmKTsKICAgICBzdGF0aWMgdm9p
ZCBnZXRTdXBwb3J0ZWRUeXBlcyhIYXNoU2V0PFN0cmluZywgQVNDSUlDYXNlSW5zZW5zaXRpdmVI
YXNoPiYpOwogICAgIHN0YXRpYyBib29sIGlzQXZhaWxhYmxlKCk7CkBAIC01OTYsMTEgKzY0MCwx
MyBAQCBwdWJsaWM6CiAKIHByaXZhdGU6CiAgICAgTWVkaWFQbGF5ZXIoTWVkaWFQbGF5ZXJDbGll
bnQmKTsKKyAgICBNZWRpYVBsYXllcihNZWRpYVBsYXllckNsaWVudCYsIGNvbnN0IFN0cmluZyYp
OwogCiAgICAgTWVkaWFQbGF5ZXJDbGllbnQmIGNsaWVudCgpIGNvbnN0IHsgcmV0dXJuICptX2Ns
aWVudDsgfQogCi0gICAgY29uc3QgTWVkaWFQbGF5ZXJGYWN0b3J5KiBuZXh0QmVzdE1lZGlhRW5n
aW5lKGNvbnN0IE1lZGlhUGxheWVyRmFjdG9yeSopIGNvbnN0OworICAgIGNvbnN0IE1lZGlhUGxh
eWVyRmFjdG9yeSogbmV4dEJlc3RNZWRpYUVuZ2luZShjb25zdCBNZWRpYVBsYXllckZhY3Rvcnkq
KTsKICAgICB2b2lkIGxvYWRXaXRoTmV4dE1lZGlhRW5naW5lKGNvbnN0IE1lZGlhUGxheWVyRmFj
dG9yeSopOworICAgIGNvbnN0IE1lZGlhUGxheWVyRmFjdG9yeSogbmV4dE1lZGlhRW5naW5lKGNv
bnN0IE1lZGlhUGxheWVyRmFjdG9yeSopOwogICAgIHZvaWQgcmVsb2FkVGltZXJGaXJlZCgpOwog
CiAgICAgTWVkaWFQbGF5ZXJDbGllbnQqIG1fY2xpZW50OwpAQCAtNjEwLDYgKzY1Niw3IEBAIHBy
aXZhdGU6CiAgICAgVVJMIG1fdXJsOwogICAgIENvbnRlbnRUeXBlIG1fY29udGVudFR5cGU7CiAg
ICAgU3RyaW5nIG1fa2V5U3lzdGVtOworICAgIFN0cmluZyBtX2FjdGl2ZUVuZ2luZUlkZW50aWZp
ZXI7CiAgICAgSW50U2l6ZSBtX3NpemU7CiAgICAgUHJlbG9hZCBtX3ByZWxvYWQgeyBBdXRvIH07
CiAgICAgZG91YmxlIG1fdm9sdW1lIHsgMSB9OwpAQCAtNjI5LDE2ICs2NzYsMjQgQEAgcHJpdmF0
ZToKICNlbmRpZgogfTsKIAotdXNpbmcgQ3JlYXRlTWVkaWFFbmdpbmVQbGF5ZXIgPSBXVEY6OkZ1
bmN0aW9uPHN0ZDo6dW5pcXVlX3B0cjxNZWRpYVBsYXllclByaXZhdGVJbnRlcmZhY2U+IChNZWRp
YVBsYXllciopPjsKLXR5cGVkZWYgdm9pZCAoKk1lZGlhRW5naW5lU3VwcG9ydGVkVHlwZXMpKEhh
c2hTZXQ8U3RyaW5nLCBBU0NJSUNhc2VJbnNlbnNpdGl2ZUhhc2g+JiB0eXBlcyk7Ci10eXBlZGVm
IE1lZGlhUGxheWVyOjpTdXBwb3J0c1R5cGUgKCpNZWRpYUVuZ2luZVN1cHBvcnRzVHlwZSkoY29u
c3QgTWVkaWFFbmdpbmVTdXBwb3J0UGFyYW1ldGVycyYgcGFyYW1ldGVycyk7Ci10eXBlZGVmIEhh
c2hTZXQ8UmVmUHRyPFNlY3VyaXR5T3JpZ2luPj4gKCpNZWRpYUVuZ2luZU9yaWdpbnNJbk1lZGlh
Q2FjaGUpKGNvbnN0IFN0cmluZyYgcGF0aCk7Ci10eXBlZGVmIHZvaWQgKCpNZWRpYUVuZ2luZUNs
ZWFyTWVkaWFDYWNoZSkoY29uc3QgU3RyaW5nJiBwYXRoLCBXYWxsVGltZSBtb2RpZmllZFNpbmNl
KTsKLXR5cGVkZWYgdm9pZCAoKk1lZGlhRW5naW5lQ2xlYXJNZWRpYUNhY2hlRm9yT3JpZ2lucyko
Y29uc3QgU3RyaW5nJiBwYXRoLCBjb25zdCBIYXNoU2V0PFJlZlB0cjxTZWN1cml0eU9yaWdpbj4+
Jik7Ci10eXBlZGVmIGJvb2wgKCpNZWRpYUVuZ2luZVN1cHBvcnRzS2V5U3lzdGVtKShjb25zdCBT
dHJpbmcmIGtleVN5c3RlbSwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSk7CitjbGFzcyBNZWRpYVBs
YXllckZhY3RvcnkgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOworcHVibGljOgorICAg
IE1lZGlhUGxheWVyRmFjdG9yeSgpID0gZGVmYXVsdDsKKyAgICB2aXJ0dWFsIH5NZWRpYVBsYXll
ckZhY3RvcnkoKSB7IH0KKworICAgIHZpcnR1YWwgc3RkOjp1bmlxdWVfcHRyPE1lZGlhUGxheWVy
UHJpdmF0ZUludGVyZmFjZT4gY3JlYXRlTWVkaWFFbmdpbmVQbGF5ZXIoTWVkaWFQbGF5ZXIqKSBj
b25zdCA9IDA7CisgICAgdmlydHVhbCB2b2lkIGdldFN1cHBvcnRlZFR5cGVzKEhhc2hTZXQ8U3Ry
aW5nLCBBU0NJSUNhc2VJbnNlbnNpdGl2ZUhhc2g+JikgY29uc3QgPSAwOworICAgIHZpcnR1YWwg
TWVkaWFQbGF5ZXI6OlN1cHBvcnRzVHlwZSBzdXBwb3J0c1R5cGVBbmRDb2RlY3MoY29uc3QgTWVk
aWFFbmdpbmVTdXBwb3J0UGFyYW1ldGVycyYpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIFN0cmlu
ZyBpZGVudGlmaWVyKCkgY29uc3QgID0gMDsKKworICAgIHZpcnR1YWwgSGFzaFNldDxSZWZQdHI8
U2VjdXJpdHlPcmlnaW4+PiBvcmlnaW5zSW5NZWRpYUNhY2hlKGNvbnN0IFN0cmluZyYpIGNvbnN0
IHsgcmV0dXJuIHsgfTsgfQorICAgIHZpcnR1YWwgdm9pZCBjbGVhck1lZGlhQ2FjaGUoY29uc3Qg
U3RyaW5nJiwgV2FsbFRpbWUpIGNvbnN0IHsgfQorICAgIHZpcnR1YWwgdm9pZCBjbGVhck1lZGlh
Q2FjaGVGb3JPcmlnaW5zKGNvbnN0IFN0cmluZyYsIGNvbnN0IEhhc2hTZXQ8UmVmUHRyPFNlY3Vy
aXR5T3JpZ2luPj4mKSBjb25zdCB7IH0KKyAgICB2aXJ0dWFsIGJvb2wgc3VwcG9ydHNLZXlTeXN0
ZW0oY29uc3QgU3RyaW5nJiAvKiBrZXlTeXN0ZW0gKi8sIGNvbnN0IFN0cmluZyYgLyogbWltZVR5
cGUgKi8pIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9Cit9OwogCi10eXBlZGVmIHZvaWQgKCpNZWRp
YUVuZ2luZVJlZ2lzdHJhcikoQ3JlYXRlTWVkaWFFbmdpbmVQbGF5ZXImJiwgTWVkaWFFbmdpbmVT
dXBwb3J0ZWRUeXBlcywgTWVkaWFFbmdpbmVTdXBwb3J0c1R5cGUsCi0gICAgTWVkaWFFbmdpbmVP
cmlnaW5zSW5NZWRpYUNhY2hlLCBNZWRpYUVuZ2luZUNsZWFyTWVkaWFDYWNoZSwgTWVkaWFFbmdp
bmVDbGVhck1lZGlhQ2FjaGVGb3JPcmlnaW5zLCBNZWRpYUVuZ2luZVN1cHBvcnRzS2V5U3lzdGVt
KTsKK3R5cGVkZWYgdm9pZCAoKk1lZGlhRW5naW5lUmVnaXN0cmFyKShzdGQ6OnVuaXF1ZV9wdHI8
TWVkaWFQbGF5ZXJGYWN0b3J5Pik7CiB0eXBlZGVmIHZvaWQgKCpNZWRpYUVuZ2luZVJlZ2lzdGVy
KShNZWRpYUVuZ2luZVJlZ2lzdHJhcik7CiAKIGNsYXNzIE1lZGlhUGxheWVyRmFjdG9yeVN1cHBv
cnQgewpAQCAtNjQ2LDYgKzcwMSwxMyBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgc3Rh
dGljIHZvaWQgY2FsbFJlZ2lzdGVyTWVkaWFFbmdpbmUoTWVkaWFFbmdpbmVSZWdpc3Rlcik7CiB9
OwogCitjbGFzcyBSZW1vdGVNZWRpYVBsYXllclN1cHBvcnQgeworcHVibGljOgorICAgIHVzaW5n
IFJlZ2lzdGVyUmVtb3RlUGxheWVyQ2FsbGJhY2sgPSBzdGQ6OmZ1bmN0aW9uPHZvaWQoTWVkaWFF
bmdpbmVSZWdpc3RyYXIsIGNvbnN0IFN0cmluZyYpPjsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0
aWMgdm9pZCBzZXRSZWdpc3RlclJlbW90ZVBsYXllckNhbGxiYWNrKFJlZ2lzdGVyUmVtb3RlUGxh
eWVyQ2FsbGJhY2smJik7Cit9OworCisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlm
IC8vIEVOQUJMRShWSURFTykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL01lZGlhUGxheWVyRW5naW5lSWRlbnRpZmllcnMuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyRW5naW5lSWRlbnRpZmllcnMuaApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li5jMjZlZmM1MDMzN2MyYmZkZjUxYWNlYWFiNDllN2NjYTc2ZWNmNTUzCi0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXJFbmdpbmVJ
ZGVudGlmaWVycy5oCkBAIC0wLDAgKzEsNDMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBB
TlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
ICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgorICogQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAor
ICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjcHJhZ21hIG9uY2UKKwor
I2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisK
K2NsYXNzIE1lZGlhUGxheWVyRW5naW5lSWRlbnRpZmllcnMgeworcHVibGljOgorICAgIHN0YXRp
YyBjb25zdCBjaGFyKiBhdkZvdW5kYXRpb25FbmdpbmVJZGVudGlmaWVyKCkgeyByZXR1cm4gIk1l
ZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMiOyB9CisgICAgc3RhdGljIGNvbnN0IGNo
YXIqIGF2Rm91bmRhdGlvbk1TRUVuZ2luZUlkZW50aWZpZXIoKSB7IHJldHVybiAiTWVkaWFQbGF5
ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDIjsgfQorICAgIHN0YXRpYyBjb25zdCBjaGFyKiBh
dkZvdW5kYXRpb25NZWRpYVN0cmVhbUVuZ2luZUlkZW50aWZpZXIoKSB7IHJldHVybiAiTWVkaWFQ
bGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDIjsgfQorICAgIHN0YXRpYyBjb25zdCBjaGFy
KiBHU3RyZWFtZXJNZWRpYUVuZ2luZUlkZW50aWZpZXIoKSB7IHJldHVybiAiTWVkaWFQbGF5ZXJQ
cml2YXRlR1N0cmVhbWVyIjsgfQorICAgIHN0YXRpYyBjb25zdCBjaGFyKiBHU3RyZWFtZXJNU0VN
ZWRpYUVuZ2luZUlkZW50aWZpZXIoKSB7IHJldHVybiAiTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVh
bWVyTVNFIjsgfQorICAgIHN0YXRpYyBjb25zdCBjaGFyKiBob2xlUHVuY2hNZWRpYUVuZ2luZUlk
ZW50aWZpZXIoKSB7IHJldHVybiAiTWVkaWFQbGF5ZXJQcml2YXRlSG9sZVB1bmNoIjsgfQorICAg
IHN0YXRpYyBjb25zdCBjaGFyKiBNZWRpYUZvdW5kYXRpb25NZWRpYUVuZ2luZUlkZW50aWZpZXIo
KSB7IHJldHVybiAiTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFGb3VuZGF0aW9uIjsgfQorfTsKKwor
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvUGxhdGZvcm1UaW1lUmFuZ2VzLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9QbGF0Zm9ybVRpbWVSYW5nZXMuaAppbmRleCAxODg4Njk1Yzc2ZTkyNmZiM2Vk
NGIzYTUxMGM5YmIwMzNiNDM3MzMwLi41MzZmNmFhMmE1YTc5NjYwNGQ1NzMxOWU2MTZhYmU1Njgz
ZmExY2IxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9QbGF0
Zm9ybVRpbWVSYW5nZXMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Q
bGF0Zm9ybVRpbWVSYW5nZXMuaApAQCAtMzYsNyArMzYsNyBAQCBjbGFzcyBQcmludFN0cmVhbTsK
IAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBQbGF0Zm9ybVRpbWVSYW5nZXMgeworY2xh
c3MgV0VCQ09SRV9FWFBPUlQgUGxhdGZvcm1UaW1lUmFuZ2VzIHsKICAgICBXVEZfTUFLRV9GQVNU
X0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBleHBsaWNpdCBQbGF0Zm9ybVRpbWVSYW5nZXMoKSB7
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRh
dGlvbi9jZi9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25DRi5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vY2YvTWVkaWFQbGF5ZXJQcml2YXRl
QVZGb3VuZGF0aW9uQ0YuY3BwCmluZGV4IDBjZThjZWI0OGJkNzg4Y2ViMTlhYTlkZDg5N2Y5Mjk5
ZGVhYmRkMGQuLmYzNTYxNTMzYjE2OWI3YjdmNmE0NWJkNjc1ZjgwYzcwZDI3MDA4NmYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9jZi9N
ZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25DRi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL2NmL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91
bmRhdGlvbkNGLmNwcApAQCAtMzQyLDExICszNDIsMzcgQEAgc3RhdGljIGRpc3BhdGNoX3F1ZXVl
X3QgZ2xvYmFsTG9hZGVyRGVsZWdhdGVRdWV1ZSgpCiB9CiAjZW5kaWYKIAorY2xhc3MgTWVkaWFQ
bGF5ZXJGYWN0b3J5QVZGb3VuZGF0aW9uQ0YgOiBwdWJsaWMgTWVkaWFQbGF5ZXJGYWN0b3J5IHsK
K3B1YmxpYzoKKyAgICBTdHJpbmcgaWRlbnRpZmllcigpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIE1l
ZGlhUGxheWVyRW5naW5lSWRlbnRpZmllcnM6OmF2Rm91bmRhdGlvbk1lZGlhU3RyZWFtSWRlbnRp
ZmllcigpOyB9OworCisgICAgc3RkOjp1bmlxdWVfcHRyPE1lZGlhUGxheWVyUHJpdmF0ZUludGVy
ZmFjZT4gY3JlYXRlTWVkaWFFbmdpbmVQbGF5ZXIoTWVkaWFQbGF5ZXIqIHBsYXllcikgY29uc3Qg
ZmluYWwKKyAgICB7CisgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPE1lZGlhUGxheWVyUHJpdmF0
ZUFWRm91bmRhdGlvbkNGPihwbGF5ZXIpOworICAgIH0KKworICAgIHZvaWQgZ2V0U3VwcG9ydGVk
VHlwZXMoSGFzaFNldDxTdHJpbmcsIEFTQ0lJQ2FzZUluc2Vuc2l0aXZlSGFzaD4mIHR5cGVzKSBj
b25zdCBmaW5hbAorICAgIHsKKyAgICAgICAgcmV0dXJuIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91
bmRhdGlvbkNGOjpnZXRTdXBwb3J0ZWRUeXBlcyh0eXBlcyk7CisgICAgfQorCisgICAgTWVkaWFQ
bGF5ZXI6OlN1cHBvcnRzVHlwZSBzdXBwb3J0c1R5cGVBbmRDb2RlY3MoY29uc3QgTWVkaWFFbmdp
bmVTdXBwb3J0UGFyYW1ldGVycyYgcGFyYW1ldGVycykgY29uc3QgZmluYWwKKyAgICB7CisgICAg
ICAgIHJldHVybiBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25DRjo6c3VwcG9ydHNUeXBl
KHBhcmFtZXRlcnMpOworICAgIH0KKworICAgIGJvb2wgc3VwcG9ydHNLZXlTeXN0ZW0oY29uc3Qg
U3RyaW5nJiBrZXlTeXN0ZW0sIGNvbnN0IFN0cmluZyYgbWltZVR5cGUpIGNvbnN0IGZpbmFsCisg
ICAgeworICAgICAgICByZXR1cm4gTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uQ0Y6OnN1
cHBvcnRzS2V5U3lzdGVtKGtleVN5c3RlbSwgbWltZVR5cGUpOworICAgIH0KK307CisKIHZvaWQg
TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uQ0Y6OnJlZ2lzdGVyTWVkaWFFbmdpbmUoTWVk
aWFFbmdpbmVSZWdpc3RyYXIgcmVnaXN0cmFyKQogewotICAgIGlmIChpc0F2YWlsYWJsZSgpKQot
ICAgICAgICByZWdpc3RyYXIoW10oTWVkaWFQbGF5ZXIqIHBsYXllcikgeyByZXR1cm4gbWFrZVVu
aXF1ZTxNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25DRj4ocGxheWVyKTsgfSwKLSAgICAg
ICAgICAgIGdldFN1cHBvcnRlZFR5cGVzLCBzdXBwb3J0c1R5cGUsIDAsIDAsIDAsIHN1cHBvcnRz
S2V5U3lzdGVtKTsKKyAgICBpZiAoIWlzQXZhaWxhYmxlKCkpCisgICAgICAgIHJldHVybjsKKwor
ICAgIHJlZ2lzdHJhcihtYWtlVW5pcXVlPE1lZGlhUGxheWVyRmFjdG9yeUFWRm91bmRhdGlvbkNG
PigpKTsKIH0KIAogTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uQ0Y6Ok1lZGlhUGxheWVy
UHJpdmF0ZUFWRm91bmRhdGlvbkNGKE1lZGlhUGxheWVyKiBwbGF5ZXIpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBs
YXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25P
YmpDLmgKaW5kZXggZTk4ZDhlYTkwMDA0NzE4Y2ZjOTA0NGEwOTgzNmFmMGI5MGUwZmUwMS4uZTBi
ZWUyNDNiOTRiZmU2NDQ0Y2JmNWQ2ZDU5ZWY4NjgwNTczODkzYiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQ
cml2YXRlQVZGb3VuZGF0aW9uT2JqQy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9i
akMuaApAQCAtMTYyLDYgKzE2Miw3IEBAIHB1YmxpYzoKIAogcHJpdmF0ZToKICAgICAvLyBlbmdp
bmUgc3VwcG9ydAorICAgIGZyaWVuZCBjbGFzcyBNZWRpYVBsYXllckZhY3RvcnlBVkZvdW5kYXRp
b25PYmpDOwogICAgIHN0YXRpYyB2b2lkIGdldFN1cHBvcnRlZFR5cGVzKEhhc2hTZXQ8U3RyaW5n
LCBBU0NJSUNhc2VJbnNlbnNpdGl2ZUhhc2g+JiB0eXBlcyk7CiAgICAgc3RhdGljIE1lZGlhUGxh
eWVyOjpTdXBwb3J0c1R5cGUgc3VwcG9ydHNUeXBlKGNvbnN0IE1lZGlhRW5naW5lU3VwcG9ydFBh
cmFtZXRlcnMmKTsKICAgICBzdGF0aWMgYm9vbCBzdXBwb3J0c0tleVN5c3RlbShjb25zdCBTdHJp
bmcmIGtleVN5c3RlbSwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXll
clByaXZhdGVBVkZvdW5kYXRpb25PYmpDLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2Jq
Qy5tbQppbmRleCA1NDEwMzkxMzQxOWVlNWQ0OGU5ZWMxYWNiNjg5MmY5OGRkZTlmM2JkLi4zZjU0
YTU0MzdjMmZmY2I5MzI3Mjk5MDg4YmYxOWNmZmU2N2RmNmVmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclBy
aXZhdGVBVkZvdW5kYXRpb25PYmpDLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9i
akMubW0KQEAgLTUwLDYgKzUwLDcgQEAKICNpbXBvcnQgIkxvZ2dpbmcuaCIKICNpbXBvcnQgIk1l
ZGlhUGxheWJhY2tUYXJnZXRNYWMuaCIKICNpbXBvcnQgIk1lZGlhUGxheWJhY2tUYXJnZXRNb2Nr
LmgiCisjaW1wb3J0ICJNZWRpYVBsYXllckVuZ2luZUlkZW50aWZpZXJzLmgiCiAjaW1wb3J0ICJN
ZWRpYVNlbGVjdGlvbkdyb3VwQVZGT2JqQy5oIgogI2ltcG9ydCAiT3V0T2ZCYW5kVGV4dFRyYWNr
UHJpdmF0ZUFWRi5oIgogI2ltcG9ydCAiUGl4ZWxCdWZmZXJDb25mb3JtZXJDVi5oIgpAQCAtMjcz
LDE0ICsyNzQsNTQgQEAgc3RhdGljIGRpc3BhdGNoX3F1ZXVlX3QgZ2xvYmFsUHVsbERlbGVnYXRl
UXVldWUoKQogfQogI2VuZGlmCiAKK2NsYXNzIE1lZGlhUGxheWVyRmFjdG9yeUFWRm91bmRhdGlv
bk9iakMgOiBwdWJsaWMgTWVkaWFQbGF5ZXJGYWN0b3J5IHsKK3B1YmxpYzoKKyAgICBTdHJpbmcg
aWRlbnRpZmllcigpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIE1lZGlhUGxheWVyRW5naW5lSWRlbnRp
ZmllcnM6OmF2Rm91bmRhdGlvbkVuZ2luZUlkZW50aWZpZXIoKTsgfTsKKworICAgIHN0ZDo6dW5p
cXVlX3B0cjxNZWRpYVBsYXllclByaXZhdGVJbnRlcmZhY2U+IGNyZWF0ZU1lZGlhRW5naW5lUGxh
eWVyKE1lZGlhUGxheWVyKiBwbGF5ZXIpIGNvbnN0IGZpbmFsCisgICAgeworICAgICAgICByZXR1
cm4gbWFrZVVuaXF1ZTxNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDPihwbGF5ZXIp
OworICAgIH0KKworICAgIHZvaWQgZ2V0U3VwcG9ydGVkVHlwZXMoSGFzaFNldDxTdHJpbmcsIEFT
Q0lJQ2FzZUluc2Vuc2l0aXZlSGFzaD4mIHR5cGVzKSBjb25zdCBmaW5hbAorICAgIHsKKyAgICAg
ICAgcmV0dXJuIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OmdldFN1cHBvcnRl
ZFR5cGVzKHR5cGVzKTsKKyAgICB9CisKKyAgICBNZWRpYVBsYXllcjo6U3VwcG9ydHNUeXBlIHN1
cHBvcnRzVHlwZUFuZENvZGVjcyhjb25zdCBNZWRpYUVuZ2luZVN1cHBvcnRQYXJhbWV0ZXJzJiBw
YXJhbWV0ZXJzKSBjb25zdCBmaW5hbAorICAgIHsKKyAgICAgICAgcmV0dXJuIE1lZGlhUGxheWVy
UHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OnN1cHBvcnRzVHlwZShwYXJhbWV0ZXJzKTsKKyAgICB9
CisKKyAgICBIYXNoU2V0PFJlZlB0cjxTZWN1cml0eU9yaWdpbj4+IG9yaWdpbnNJbk1lZGlhQ2Fj
aGUoY29uc3QgU3RyaW5nJiBwYXRoKSBjb25zdCBmaW5hbAorICAgIHsKKyAgICAgICAgcmV0dXJu
IE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6Om9yaWdpbnNJbk1lZGlhQ2FjaGUo
cGF0aCk7CisgICAgfQorCisgICAgdm9pZCBjbGVhck1lZGlhQ2FjaGUoY29uc3QgU3RyaW5nJiBw
YXRoLCBXYWxsVGltZSBtb2RpZmllZFNpbmNlKSBjb25zdCBmaW5hbAorICAgIHsKKyAgICAgICAg
cmV0dXJuIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OmNsZWFyTWVkaWFDYWNo
ZShwYXRoLCBtb2RpZmllZFNpbmNlKTsKKyAgICB9CisKKyAgICB2b2lkIGNsZWFyTWVkaWFDYWNo
ZUZvck9yaWdpbnMoY29uc3QgU3RyaW5nJiBwYXRoLCBjb25zdCBIYXNoU2V0PFJlZlB0cjxTZWN1
cml0eU9yaWdpbj4+JiBvcmlnaW5zKSBjb25zdCBmaW5hbAorICAgIHsKKyAgICAgICAgcmV0dXJu
IE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OmNsZWFyTWVkaWFDYWNoZUZvck9y
aWdpbnMocGF0aCwgb3JpZ2lucyk7CisgICAgfQorCisgICAgYm9vbCBzdXBwb3J0c0tleVN5c3Rl
bShjb25zdCBTdHJpbmcmIGtleVN5c3RlbSwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSkgY29uc3Qg
ZmluYWwKKyAgICB7CisgICAgICAgIHJldHVybiBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRp
b25PYmpDOjpzdXBwb3J0c0tleVN5c3RlbShrZXlTeXN0ZW0sIG1pbWVUeXBlKTsKKyAgICB9Cit9
OworCiB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OnJlZ2lzdGVyTWVk
aWFFbmdpbmUoTWVkaWFFbmdpbmVSZWdpc3RyYXIgcmVnaXN0cmFyKQogewogICAgIGlmICghaXNB
dmFpbGFibGUoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgcmVnaXN0cmFyKFtdKE1lZGlhUGxh
eWVyKiBwbGF5ZXIpIHsgcmV0dXJuIG1ha2VVbmlxdWU8TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3Vu
ZGF0aW9uT2JqQz4ocGxheWVyKTsgfSwKLSAgICAgICAgICAgIGdldFN1cHBvcnRlZFR5cGVzLCBz
dXBwb3J0c1R5cGUsIG9yaWdpbnNJbk1lZGlhQ2FjaGUsIGNsZWFyTWVkaWFDYWNoZSwgY2xlYXJN
ZWRpYUNhY2hlRm9yT3JpZ2lucywgc3VwcG9ydHNLZXlTeXN0ZW0pOwogICAgIEFTU0VSVChBVkFz
c2V0TUlNRVR5cGVDYWNoZTo6c2luZ2xldG9uKCkuaXNBdmFpbGFibGUoKSk7CisKKyAgICByZWdp
c3RyYXIobWFrZVVuaXF1ZTxNZWRpYVBsYXllckZhY3RvcnlBVkZvdW5kYXRpb25PYmpDPigpKTsK
IH0KIAogc3RhdGljIEFWQXNzZXRDYWNoZSAqYXNzZXRDYWNoZUZvclBhdGgoY29uc3QgU3RyaW5n
JiBwYXRoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZm
b3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDLm1tIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQ
bGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDLm1tCmluZGV4IDcxNTI4Yzk5YzBjYzYwN2Qz
OGYyZWYzZTA3Mjg4Y2Y2ZDMzNTFmZDYuLjY1NjE3MDEyMjBiMDU0MWM1M2M0Yjg2ZGI3NGY4Mjdm
YjAwZGFmZjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2
Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQy5tbQor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9N
ZWRpYVBsYXllclByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMubW0KQEAgLTM0LDYgKzM0LDcgQEAK
ICNpbXBvcnQgIkNETVNlc3Npb25BVlN0cmVhbVNlc3Npb24uaCIKICNpbXBvcnQgIkdyYXBoaWNz
Q29udGV4dENHLmgiCiAjaW1wb3J0ICJMb2dnaW5nLmgiCisjaW1wb3J0ICJNZWRpYVBsYXllckVu
Z2luZUlkZW50aWZpZXJzLmgiCiAjaW1wb3J0ICJNZWRpYVNvdXJjZVByaXZhdGVBVkZPYmpDLmgi
CiAjaW1wb3J0ICJNZWRpYVNvdXJjZVByaXZhdGVDbGllbnQuaCIKICNpbXBvcnQgIlBpeGVsQnVm
ZmVyQ29uZm9ybWVyQ1YuaCIKQEAgLTE5NiwxNCArMTk3LDM0IEBAIE1lZGlhUGxheWVyUHJpdmF0
ZU1lZGlhU291cmNlQVZGT2JqQzo6fk1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2Jq
QygpCiAjcHJhZ21hIG1hcmsgLQogI3ByYWdtYSBtYXJrIE1lZGlhUGxheWVyIEZhY3RvcnkgTWV0
aG9kcwogCitjbGFzcyBNZWRpYVBsYXllckZhY3RvcnlNZWRpYVNvdXJjZUFWRk9iakMgOiBwdWJs
aWMgTWVkaWFQbGF5ZXJGYWN0b3J5IHsKK3B1YmxpYzoKKyAgICBTdHJpbmcgaWRlbnRpZmllcigp
IGNvbnN0IGZpbmFsIHsgcmV0dXJuIE1lZGlhUGxheWVyRW5naW5lSWRlbnRpZmllcnM6OmF2Rm91
bmRhdGlvbk1TRUVuZ2luZUlkZW50aWZpZXIoKTsgfTsKKworICAgIHN0ZDo6dW5pcXVlX3B0cjxN
ZWRpYVBsYXllclByaXZhdGVJbnRlcmZhY2U+IGNyZWF0ZU1lZGlhRW5naW5lUGxheWVyKE1lZGlh
UGxheWVyKiBwbGF5ZXIpIGNvbnN0IGZpbmFsCisgICAgeworICAgICAgICByZXR1cm4gbWFrZVVu
aXF1ZTxNZWRpYVBsYXllclByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakM+KHBsYXllcik7ICAgICAg
ICAKKyAgICB9CisKKyAgICB2b2lkIGdldFN1cHBvcnRlZFR5cGVzKEhhc2hTZXQ8U3RyaW5nLCBB
U0NJSUNhc2VJbnNlbnNpdGl2ZUhhc2g+JiB0eXBlcykgY29uc3QgZmluYWwKKyAgICB7CisgICAg
ICAgIHJldHVybiBNZWRpYVBsYXllclByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakM6OmdldFN1cHBv
cnRlZFR5cGVzKHR5cGVzKTsKKyAgICB9CisKKyAgICBNZWRpYVBsYXllcjo6U3VwcG9ydHNUeXBl
IHN1cHBvcnRzVHlwZUFuZENvZGVjcyhjb25zdCBNZWRpYUVuZ2luZVN1cHBvcnRQYXJhbWV0ZXJz
JiBwYXJhbWV0ZXJzKSBjb25zdCBmaW5hbAorICAgIHsKKyAgICAgICAgcmV0dXJuIE1lZGlhUGxh
eWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQzo6c3VwcG9ydHNUeXBlKHBhcmFtZXRlcnMpOwor
ICAgIH0KK307CisKIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDOjpy
ZWdpc3Rlck1lZGlhRW5naW5lKE1lZGlhRW5naW5lUmVnaXN0cmFyIHJlZ2lzdHJhcikKIHsKICAg
ICBpZiAoIWlzQXZhaWxhYmxlKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIHJlZ2lzdHJhcihb
XShNZWRpYVBsYXllciogcGxheWVyKSB7IHJldHVybiBtYWtlVW5pcXVlPE1lZGlhUGxheWVyUHJp
dmF0ZU1lZGlhU291cmNlQVZGT2JqQz4ocGxheWVyKTsgfSwKLSAgICAgICAgZ2V0U3VwcG9ydGVk
VHlwZXMsIHN1cHBvcnRzVHlwZSwgMCwgMCwgMCwgMCk7CiAgICAgQVNTRVJUKEFWQXNzZXRNSU1F
VHlwZUNhY2hlOjpzaW5nbGV0b24oKS5pc0F2YWlsYWJsZSgpKTsKKworICAgIHJlZ2lzdHJhciht
YWtlVW5pcXVlPE1lZGlhUGxheWVyRmFjdG9yeU1lZGlhU291cmNlQVZGT2JqQz4oKSk7CiB9CiAK
IGJvb2wgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDOjppc0F2YWlsYWJsZSgp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRp
b24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakMubW0gYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclBy
aXZhdGVNZWRpYVN0cmVhbUFWRk9iakMubW0KaW5kZXggNjMxNDgxNGJjODhmYzljZjdlYmJjZTk0
ZmM4ZTcxOTFkZjNmNDU0Zi4uMTc5YWVjY2UwNmY4MDI5ZjI0ZDNhMzQyYmMwMTAwMjBkMjM0NTM2
OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0
aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDLm1tCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxh
eWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQy5tbQpAQCAtMzEsNiArMzEsNyBAQAogI2ltcG9y
dCAiQXVkaW9UcmFja1ByaXZhdGVNZWRpYVN0cmVhbUNvY29hLmgiCiAjaW1wb3J0ICJHcmFwaGlj
c0NvbnRleHRDRy5oIgogI2ltcG9ydCAiTG9nZ2luZy5oIgorI2ltcG9ydCAiTWVkaWFQbGF5ZXJF
bmdpbmVJZGVudGlmaWVycy5oIgogI2ltcG9ydCAiTWVkaWFTdHJlYW1Qcml2YXRlLmgiCiAjaW1w
b3J0ICJQaXhlbEJ1ZmZlckNvbmZvcm1lckNWLmgiCiAjaW1wb3J0ICJWaWRlb0Z1bGxzY3JlZW5M
YXllck1hbmFnZXJPYmpDLmgiCkBAIC0yMjAsMTEgKzIyMSwzMiBAQCBNZWRpYVBsYXllclByaXZh
dGVNZWRpYVN0cmVhbUFWRk9iakM6On5NZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9i
akMoKQogI3ByYWdtYSBtYXJrIC0KICNwcmFnbWEgbWFyayBNZWRpYVBsYXllciBGYWN0b3J5IE1l
dGhvZHMKIAorY2xhc3MgTWVkaWFQbGF5ZXJGYWN0b3J5TWVkaWFTdHJlYW1BVkZPYmpDIDogcHVi
bGljIE1lZGlhUGxheWVyRmFjdG9yeSB7CitwdWJsaWM6CisgICAgU3RyaW5nIGlkZW50aWZpZXIo
KSBjb25zdCBmaW5hbCB7IHJldHVybiBNZWRpYVBsYXllckVuZ2luZUlkZW50aWZpZXJzOjphdkZv
dW5kYXRpb25NZWRpYVN0cmVhbUVuZ2luZUlkZW50aWZpZXIoKTsgfTsKKworICAgIHN0ZDo6dW5p
cXVlX3B0cjxNZWRpYVBsYXllclByaXZhdGVJbnRlcmZhY2U+IGNyZWF0ZU1lZGlhRW5naW5lUGxh
eWVyKE1lZGlhUGxheWVyKiBwbGF5ZXIpIGNvbnN0IGZpbmFsCisgICAgeworICAgICAgICByZXR1
cm4gbWFrZVVuaXF1ZTxNZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakM+KHBsYXll
cik7CisgICAgfQorCisgICAgdm9pZCBnZXRTdXBwb3J0ZWRUeXBlcyhIYXNoU2V0PFN0cmluZywg
QVNDSUlDYXNlSW5zZW5zaXRpdmVIYXNoPiYgdHlwZXMpIGNvbnN0IGZpbmFsCisgICAgeworICAg
ICAgICByZXR1cm4gTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDOjpnZXRTdXBw
b3J0ZWRUeXBlcyh0eXBlcyk7CisgICAgfQorCisgICAgTWVkaWFQbGF5ZXI6OlN1cHBvcnRzVHlw
ZSBzdXBwb3J0c1R5cGVBbmRDb2RlY3MoY29uc3QgTWVkaWFFbmdpbmVTdXBwb3J0UGFyYW1ldGVy
cyYgcGFyYW1ldGVycykgY29uc3QgZmluYWwKKyAgICB7CisgICAgICAgIHJldHVybiBNZWRpYVBs
YXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakM6OnN1cHBvcnRzVHlwZShwYXJhbWV0ZXJzKTsK
KyAgICB9Cit9OworCiB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQzo6
cmVnaXN0ZXJNZWRpYUVuZ2luZShNZWRpYUVuZ2luZVJlZ2lzdHJhciByZWdpc3RyYXIpCiB7Ci0g
ICAgaWYgKGlzQXZhaWxhYmxlKCkpCi0gICAgICAgIHJlZ2lzdHJhcihbXShNZWRpYVBsYXllciog
cGxheWVyKSB7IHJldHVybiBtYWtlVW5pcXVlPE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFt
QVZGT2JqQz4ocGxheWVyKTsgfSwgZ2V0U3VwcG9ydGVkVHlwZXMsCi0gICAgICAgICAgICBzdXBw
b3J0c1R5cGUsIDAsIDAsIDAsIDApOworICAgIGlmICghaXNBdmFpbGFibGUoKSkKKyAgICAgICAg
cmV0dXJuOworCisgICAgcmVnaXN0cmFyKG1ha2VVbmlxdWU8TWVkaWFQbGF5ZXJGYWN0b3J5TWVk
aWFTdHJlYW1BVkZPYmpDPigpKTsKIH0KIAogYm9vbCBNZWRpYVBsYXllclByaXZhdGVNZWRpYVN0
cmVhbUFWRk9iakM6OmlzQXZhaWxhYmxlKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVy
UHJpdmF0ZUdTdHJlYW1lci5jcHAKaW5kZXggMDEyN2M1N2QxYWI4NTFmM2MyNDc2OGUwYTU1NzFh
OGZmM2ZhZTZlZS4uYzc3MjEyMDgxMjE0NjVlYzg4Mzc5NTdhYTA0M2U5OGZlOTA2YjI5MCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlh
UGxheWVyUHJpdmF0ZUdTdHJlYW1lci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5jcHAKQEAgLTM3
LDYgKzM3LDcgQEAKICNpbmNsdWRlICJJbnRSZWN0LmgiCiAjaW5jbHVkZSAiTG9nZ2luZy5oIgog
I2luY2x1ZGUgIk1lZGlhUGxheWVyLmgiCisjaW5jbHVkZSAiTWVkaWFQbGF5ZXJFbmdpbmVJZGVu
dGlmaWVycy5oIgogI2luY2x1ZGUgIk1lZGlhUGxheWVyUmVxdWVzdEluc3RhbGxNaXNzaW5nUGx1
Z2luc0NhbGxiYWNrLmgiCiAjaW5jbHVkZSAiTUlNRVR5cGVSZWdpc3RyeS5oIgogI2luY2x1ZGUg
Ik5vdEltcGxlbWVudGVkLmgiCkBAIC00NjQsMTQgKzQ2NSwzNyBAQCBib29sIE1lZGlhUGxheWVy
UHJpdmF0ZUdTdHJlYW1lcjo6aXNBdmFpbGFibGUoKQogICAgIHJldHVybiBmYWN0b3J5OwogfQog
CitjbGFzcyBNZWRpYVBsYXllckZhY3RvcnlHU3RyZWFtZXIgOiBwdWJsaWMgTWVkaWFQbGF5ZXJG
YWN0b3J5IHsKK3B1YmxpYzoKKyAgICBTdHJpbmcgaWRlbnRpZmllcigpIGNvbnN0IGZpbmFsIHsg
cmV0dXJuIE1lZGlhUGxheWVyRW5naW5lSWRlbnRpZmllcnM6OkdTdHJlYW1lck1lZGlhRW5naW5l
SWRlbnRpZmllcigpOyB9OworCisgICAgc3RkOjp1bmlxdWVfcHRyPE1lZGlhUGxheWVyUHJpdmF0
ZUludGVyZmFjZT4gY3JlYXRlTWVkaWFFbmdpbmVQbGF5ZXIoTWVkaWFQbGF5ZXIqIHBsYXllcikg
Y29uc3QgZmluYWwKKyAgICB7CisgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPE1lZGlhUGxheWVy
UHJpdmF0ZUdTdHJlYW1lcj4ocGxheWVyKTsKKyAgICB9CisKKyAgICB2b2lkIGdldFN1cHBvcnRl
ZFR5cGVzKEhhc2hTZXQ8U3RyaW5nLCBBU0NJSUNhc2VJbnNlbnNpdGl2ZUhhc2g+JiB0eXBlcykg
Y29uc3QgZmluYWwKKyAgICB7CisgICAgICAgIHJldHVybiBNZWRpYVBsYXllclByaXZhdGVHU3Ry
ZWFtZXI6OmdldFN1cHBvcnRlZFR5cGVzKHR5cGVzKTsKKyAgICB9CisKKyAgICBNZWRpYVBsYXll
cjo6U3VwcG9ydHNUeXBlIHN1cHBvcnRzVHlwZUFuZENvZGVjcyhjb25zdCBNZWRpYUVuZ2luZVN1
cHBvcnRQYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzKSBjb25zdCBmaW5hbAorICAgIHsKKyAgICAgICAg
cmV0dXJuIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6c3VwcG9ydHNUeXBlKHBhcmFtZXRl
cnMpOworICAgIH0KKworICAgIGJvb2wgc3VwcG9ydHNLZXlTeXN0ZW0oY29uc3QgU3RyaW5nJiBr
ZXlTeXN0ZW0sIGNvbnN0IFN0cmluZyYgbWltZVR5cGUpIGNvbnN0IGZpbmFsCisgICAgeworICAg
ICAgICByZXR1cm4gTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpzdXBwb3J0c0tleVN5c3Rl
bShrZXlTeXN0ZW0sIG1pbWVUeXBlKTsKKyAgICB9Cit9OworCiB2b2lkIE1lZGlhUGxheWVyUHJp
dmF0ZUdTdHJlYW1lcjo6cmVnaXN0ZXJNZWRpYUVuZ2luZShNZWRpYUVuZ2luZVJlZ2lzdHJhciBy
ZWdpc3RyYXIpCiB7CiAgICAgaW5pdGlhbGl6ZURlYnVnQ2F0ZWdvcnkoKTsKIAotICAgIGlmIChp
c0F2YWlsYWJsZSgpKSB7Ci0gICAgICAgIHJlZ2lzdHJhcihbXShNZWRpYVBsYXllciogcGxheWVy
KSB7IHJldHVybiBtYWtlVW5pcXVlPE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcj4ocGxheWVy
KTsgfSwKLSAgICAgICAgICAgIGdldFN1cHBvcnRlZFR5cGVzLCBzdXBwb3J0c1R5cGUsIG51bGxw
dHIsIG51bGxwdHIsIG51bGxwdHIsIHN1cHBvcnRzS2V5U3lzdGVtKTsKLSAgICB9CisgICAgaWYg
KGlzQXZhaWxhYmxlKCkpCisgICAgICAgIHJlZ2lzdHJhcihtYWtlVW5pcXVlPE1lZGlhUGxheWVy
RmFjdG9yeUdTdHJlYW1lcj4oKSk7CiB9CiAKIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVh
bWVyOjpsb2FkRnVsbChjb25zdCBTdHJpbmcmIHVybFN0cmluZywgY29uc3QgU3RyaW5nJiBwaXBl
bGluZU5hbWUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9n
c3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmgK
aW5kZXggMTUyYzA5MzVkYjcyOGI2MWNhYmYwM2FmMWJkODkxNTY2MDQxYjExMy4uNDJmZTJlYTk3
MDE3Y2QwMjNmNTZhZTJjM2Y4ODAwODMwNjY0NzJjZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1l
ci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRp
YVBsYXllclByaXZhdGVHU3RyZWFtZXIuaApAQCAtMzk0LDYgKzM5NCw3IEBAIHByaXZhdGU6CiAg
ICAgR3N0RWxlbWVudCogY3JlYXRlQXVkaW9TaW5rKCk7CiAgICAgR3N0RWxlbWVudCogYXVkaW9T
aW5rKCkgY29uc3Q7CiAKKyAgICBmcmllbmQgY2xhc3MgTWVkaWFQbGF5ZXJGYWN0b3J5R1N0cmVh
bWVyOwogICAgIHN0YXRpYyB2b2lkIGdldFN1cHBvcnRlZFR5cGVzKEhhc2hTZXQ8U3RyaW5nLCBB
U0NJSUNhc2VJbnNlbnNpdGl2ZUhhc2g+Jik7CiAgICAgc3RhdGljIE1lZGlhUGxheWVyOjpTdXBw
b3J0c1R5cGUgc3VwcG9ydHNUeXBlKGNvbnN0IE1lZGlhRW5naW5lU3VwcG9ydFBhcmFtZXRlcnMm
KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVh
bWVyL21zZS9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJNU0UuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL21zZS9NZWRpYVBsYXllclByaXZhdGVHU3Ry
ZWFtZXJNU0UuY3BwCmluZGV4IGRjMjQ1YjQ3ZGUzZGU3MmZhYzIzNjcyZTVmNmVmZDRiMzc2Mjli
NGIuLmRkNzIxMmQ4NzE0NDZmYWQ0ZmFhNjQ0MGYxZTE1MzhmYjgxZTBhODAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9tc2UvTWVkaWFQbGF5
ZXJQcml2YXRlR1N0cmVhbWVyTVNFLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9nc3RyZWFtZXIvbXNlL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lck1TRS5jcHAK
QEAgLTM2LDYgKzM2LDcgQEAKICNpbmNsdWRlICJNSU1FVHlwZVJlZ2lzdHJ5LmgiCiAjaW5jbHVk
ZSAiTWVkaWFEZXNjcmlwdGlvbi5oIgogI2luY2x1ZGUgIk1lZGlhUGxheWVyLmgiCisjaW5jbHVk
ZSAiTWVkaWFQbGF5ZXJFbmdpbmVJZGVudGlmaWVycy5oIgogI2luY2x1ZGUgIk5vdEltcGxlbWVu
dGVkLmgiCiAjaW5jbHVkZSAiUGxheWJhY2tQaXBlbGluZS5oIgogI2luY2x1ZGUgIlNvdXJjZUJ1
ZmZlclByaXZhdGVHU3RyZWFtZXIuaCIKQEAgLTcyLDE0ICs3MywzNyBAQCBHU1RfREVCVUdfQ0FU
RUdPUlkod2Via2l0X21zZV9kZWJ1Zyk7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorY2xhc3Mg
TWVkaWFQbGF5ZXJGYWN0b3J5R1N0cmVhbWVyTVNFIDogcHVibGljIE1lZGlhUGxheWVyRmFjdG9y
eSB7CitwdWJsaWM6CisgICAgU3RyaW5nIGlkZW50aWZpZXIoKSBjb25zdCBmaW5hbCB7IHJldHVy
biBNZWRpYVBsYXllckVuZ2luZUlkZW50aWZpZXJzOjpHU3RyZWFtZXJNU0VNZWRpYUVuZ2luZUlk
ZW50aWZpZXIoKTsgfTsKKworICAgIHN0ZDo6dW5pcXVlX3B0cjxNZWRpYVBsYXllclByaXZhdGVJ
bnRlcmZhY2U+IGNyZWF0ZU1lZGlhRW5naW5lUGxheWVyKE1lZGlhUGxheWVyKiBwbGF5ZXIpIGNv
bnN0IGZpbmFsCisgICAgeworICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxNZWRpYVBsYXllclBy
aXZhdGVHU3RyZWFtZXJNU0U+KHBsYXllcik7CisgICAgfQorCisgICAgdm9pZCBnZXRTdXBwb3J0
ZWRUeXBlcyhIYXNoU2V0PFN0cmluZywgQVNDSUlDYXNlSW5zZW5zaXRpdmVIYXNoPiYgdHlwZXMp
IGNvbnN0IGZpbmFsCisgICAgeworICAgICAgICByZXR1cm4gTWVkaWFQbGF5ZXJQcml2YXRlR1N0
cmVhbWVyTVNFOjpnZXRTdXBwb3J0ZWRUeXBlcyh0eXBlcyk7CisgICAgfQorCisgICAgTWVkaWFQ
bGF5ZXI6OlN1cHBvcnRzVHlwZSBzdXBwb3J0c1R5cGVBbmRDb2RlY3MoY29uc3QgTWVkaWFFbmdp
bmVTdXBwb3J0UGFyYW1ldGVycyYgcGFyYW1ldGVycykgY29uc3QgZmluYWwKKyAgICB7CisgICAg
ICAgIHJldHVybiBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJNU0U6OnN1cHBvcnRzVHlwZShw
YXJhbWV0ZXJzKTsKKyAgICB9CisKKyAgICBib29sIHN1cHBvcnRzS2V5U3lzdGVtKGNvbnN0IFN0
cmluZyYga2V5U3lzdGVtLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlKSBjb25zdCBmaW5hbAorICAg
IHsKKyAgICAgICAgcmV0dXJuIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lck1TRTo6c3VwcG9y
dHNLZXlTeXN0ZW0oa2V5U3lzdGVtLCBtaW1lVHlwZSk7CisgICAgfQorfTsKKwogdm9pZCBNZWRp
YVBsYXllclByaXZhdGVHU3RyZWFtZXJNU0U6OnJlZ2lzdGVyTWVkaWFFbmdpbmUoTWVkaWFFbmdp
bmVSZWdpc3RyYXIgcmVnaXN0cmFyKQogewogICAgIGluaXRpYWxpemVHU3RyZWFtZXJBbmRSZWdp
c3RlcldlYktpdEVsZW1lbnRzKCk7CiAgICAgR1NUX0RFQlVHX0NBVEVHT1JZX0lOSVQod2Via2l0
X21zZV9kZWJ1ZywgIndlYmtpdG1zZSIsIDAsICJXZWJLaXQgTVNFIG1lZGlhIHBsYXllciIpOwot
ICAgIGlmIChpc0F2YWlsYWJsZSgpKSB7Ci0gICAgICAgIHJlZ2lzdHJhcihbXShNZWRpYVBsYXll
ciogcGxheWVyKSB7IHJldHVybiBtYWtlVW5pcXVlPE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1l
ck1TRT4ocGxheWVyKTsgfSwKLSAgICAgICAgICAgIGdldFN1cHBvcnRlZFR5cGVzLCBzdXBwb3J0
c1R5cGUsIG51bGxwdHIsIG51bGxwdHIsIG51bGxwdHIsIHN1cHBvcnRzS2V5U3lzdGVtKTsKLSAg
ICB9CisgICAgaWYgKGlzQXZhaWxhYmxlKCkpCisgICAgICAgIHJlZ2lzdHJhcihtYWtlVW5pcXVl
PE1lZGlhUGxheWVyRmFjdG9yeUdTdHJlYW1lcj4oKSk7CiB9CiAKIE1lZGlhUGxheWVyUHJpdmF0
ZUdTdHJlYW1lck1TRTo6TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyTVNFKE1lZGlhUGxheWVy
KiBwbGF5ZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9n
c3RyZWFtZXIvbXNlL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lck1TRS5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL21zZS9NZWRpYVBsYXllclByaXZhdGVH
U3RyZWFtZXJNU0UuaAppbmRleCA5YjMzMzA1ZjdmMTE2ZGFjOTFjNjQxYzQ4NDU5M2JlN2E4MzA3
MzVmLi42MmMxNjk5MjA2YWUxOWQ4NjU2ZTNhMjljY2ZkMWNlZTg1NjBjNjE3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvbXNlL01lZGlhUGxh
eWVyUHJpdmF0ZUdTdHJlYW1lck1TRS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2dzdHJlYW1lci9tc2UvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyTVNFLmgKQEAg
LTg1LDYgKzg1LDcgQEAgcHVibGljOgogICAgIHZvaWQgdW5ibG9ja0R1cmF0aW9uQ2hhbmdlcygp
OwogCiBwcml2YXRlOgorICAgIGZyaWVuZCBjbGFzcyBjbGFzcyBNZWRpYVBsYXllckZhY3RvcnlH
U3RyZWFtZXJNU0U7CiAgICAgc3RhdGljIHZvaWQgZ2V0U3VwcG9ydGVkVHlwZXMoSGFzaFNldDxT
dHJpbmcsIEFTQ0lJQ2FzZUluc2Vuc2l0aXZlSGFzaD4mKTsKICAgICBzdGF0aWMgTWVkaWFQbGF5
ZXI6OlN1cHBvcnRzVHlwZSBzdXBwb3J0c1R5cGUoY29uc3QgTWVkaWFFbmdpbmVTdXBwb3J0UGFy
YW1ldGVycyYpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9ob2xlcHVuY2gvTWVkaWFQbGF5ZXJQcml2YXRlSG9sZVB1bmNoLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2hvbGVwdW5jaC9NZWRpYVBsYXllclByaXZhdGVIb2xlUHVu
Y2guY3BwCmluZGV4IDBmMDhjMTlkYmRiZTY5YjA2ZjdiNzU1M2Y4YWI0OTdkNDdlMzc3YTkuLjMw
YjEzZThhM2Q5ZWNlYjQzYWMzYmM4NzU2ZGI0NTMwMTk5NzI5Y2YgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2hvbGVwdW5jaC9NZWRpYVBsYXllclByaXZhdGVI
b2xlUHVuY2guY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2hvbGVw
dW5jaC9NZWRpYVBsYXllclByaXZhdGVIb2xlUHVuY2guY3BwCkBAIC0yMyw2ICsyMyw3IEBACiAK
ICNpZiBVU0UoRVhURVJOQUxfSE9MRVBVTkNIKQogI2luY2x1ZGUgIk1lZGlhUGxheWVyLmgiCisj
aW5jbHVkZSAiTWVkaWFQbGF5ZXJFbmdpbmVJZGVudGlmaWVycy5oIgogI2luY2x1ZGUgIlRleHR1
cmVNYXBwZXJQbGF0Zm9ybUxheWVyQnVmZmVyLmgiCiAjaW5jbHVkZSAiVGV4dHVyZU1hcHBlclBs
YXRmb3JtTGF5ZXJQcm94eS5oIgogCkBAIC0xMzksMTAgKzE0MCwyOSBAQCBNZWRpYVBsYXllcjo6
U3VwcG9ydHNUeXBlIE1lZGlhUGxheWVyUHJpdmF0ZUhvbGVQdW5jaDo6c3VwcG9ydHNUeXBlKGNv
bnN0IE1lZGlhRQogICAgIHJldHVybiBNZWRpYVBsYXllcjo6SXNOb3RTdXBwb3J0ZWQ7CiB9CiAK
K2NsYXNzIE1lZGlhUGxheWVyRmFjdG9yeUhvbGVQdW5jaCA6IHB1YmxpYyBNZWRpYVBsYXllckZh
Y3RvcnkgeworcHVibGljOgorICAgIFN0cmluZyBpZGVudGlmaWVyKCkgY29uc3QgZmluYWwgeyBy
ZXR1cm4gTWVkaWFQbGF5ZXJFbmdpbmVJZGVudGlmaWVyczo6aG9sZVB1bmNoTWVkaWFFbmdpbmVJ
ZGVudGlmaWVyKCk7IH07CisKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8TWVkaWFQbGF5ZXJQcml2YXRl
SW50ZXJmYWNlPiBjcmVhdGVNZWRpYUVuZ2luZVBsYXllcihNZWRpYVBsYXllciogcGxheWVyKSBj
b25zdCBmaW5hbAorICAgIHsKKyAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8TWVkaWFQbGF5ZXJQ
cml2YXRlSG9sZVB1bmNoPihwbGF5ZXIpOworICAgIH0KKworICAgIHZvaWQgZ2V0U3VwcG9ydGVk
VHlwZXMoSGFzaFNldDxTdHJpbmcsIEFTQ0lJQ2FzZUluc2Vuc2l0aXZlSGFzaD4mIHR5cGVzKSBj
b25zdCBmaW5hbAorICAgIHsKKyAgICAgICAgcmV0dXJuIE1lZGlhUGxheWVyUHJpdmF0ZUhvbGVQ
dW5jaDo6Z2V0U3VwcG9ydGVkVHlwZXModHlwZXMpOworICAgIH0KKworICAgIE1lZGlhUGxheWVy
OjpTdXBwb3J0c1R5cGUgc3VwcG9ydHNUeXBlQW5kQ29kZWNzKGNvbnN0IE1lZGlhRW5naW5lU3Vw
cG9ydFBhcmFtZXRlcnMmIHBhcmFtZXRlcnMpIGNvbnN0IGZpbmFsCisgICAgeworICAgICAgICBy
ZXR1cm4gTWVkaWFQbGF5ZXJQcml2YXRlSG9sZVB1bmNoOjpzdXBwb3J0c1R5cGUocGFyYW1ldGVy
cyk7CisgICAgfQorfTsKKwogdm9pZCBNZWRpYVBsYXllclByaXZhdGVIb2xlUHVuY2g6OnJlZ2lz
dGVyTWVkaWFFbmdpbmUoTWVkaWFFbmdpbmVSZWdpc3RyYXIgcmVnaXN0cmFyKQogewotICAgIHJl
Z2lzdHJhcihbXShNZWRpYVBsYXllciogcGxheWVyKSB7IHJldHVybiBtYWtlVW5pcXVlPE1lZGlh
UGxheWVyUHJpdmF0ZUhvbGVQdW5jaD4ocGxheWVyKTsgfSwKLSAgICAgICAgZ2V0U3VwcG9ydGVk
VHlwZXMsIHN1cHBvcnRzVHlwZSwgbnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0cik7
CisgICAgcmVnaXN0cmFyKG1ha2VVbmlxdWU8TWVkaWFQbGF5ZXJGYWN0b3J5SG9sZVB1bmNoPigp
KTsKIH0KIAogdm9pZCBNZWRpYVBsYXllclByaXZhdGVIb2xlUHVuY2g6Om5vdGlmeVJlYWR5U3Rh
dGUoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvaG9sZXB1
bmNoL01lZGlhUGxheWVyUHJpdmF0ZUhvbGVQdW5jaC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvaG9sZXB1bmNoL01lZGlhUGxheWVyUHJpdmF0ZUhvbGVQdW5jaC5oCmluZGV4
IDhiZjcyMTMxODgxOWM0MDI2N2I3MjFmYTliODJhYzFjZDkyNmY5ZDIuLmNkMzc0ZWVlZmEyMjUy
NmM2MzliZDUxNmRjYjFkMzg4YzA3YzQ5NjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2hvbGVwdW5jaC9NZWRpYVBsYXllclByaXZhdGVIb2xlUHVuY2guaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ob2xlcHVuY2gvTWVkaWFQbGF5
ZXJQcml2YXRlSG9sZVB1bmNoLmgKQEAgLTk4LDYgKzk4LDcgQEAgcHVibGljOgogI2VuZGlmCiAK
IHByaXZhdGU6CisgICAgZnJpZW5kIGNsYXNzIE1lZGlhUGxheWVyRmFjdG9yeUhvbGVQdW5jaDsK
ICAgICBzdGF0aWMgdm9pZCBnZXRTdXBwb3J0ZWRUeXBlcyhIYXNoU2V0PFN0cmluZywgQVNDSUlD
YXNlSW5zZW5zaXRpdmVIYXNoPiYpOwogICAgIHN0YXRpYyBNZWRpYVBsYXllcjo6U3VwcG9ydHNU
eXBlIHN1cHBvcnRzVHlwZShjb25zdCBNZWRpYUVuZ2luZVN1cHBvcnRQYXJhbWV0ZXJzJik7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9NZWRpYVBs
YXllclByaXZhdGVNZWRpYUZvdW5kYXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3Mvd2luL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhRm91bmRhdGlvbi5jcHAKaW5kZXgg
NmQ2NGFlOWE2ZTNhNDE3ZmIxNGYxMjE2NmY2OGQzYzlhNTUyNjZkZS4uMzk1M2Y2NjBiNGEzZDkx
NzIxZjcwMDRjMDJiY2E4M2E1ZGMwYTliMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3Mvd2luL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhRm91bmRhdGlvbi5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL01lZGlhUGxheWVyUHJp
dmF0ZU1lZGlhRm91bmRhdGlvbi5jcHAKQEAgLTMyLDYgKzMyLDcgQEAKICNpbmNsdWRlICJHcmFw
aGljc0NvbnRleHQuaCIKICNpbmNsdWRlICJIV25kREMuaCIKICNpbmNsdWRlICJIb3N0V2luZG93
LmgiCisjaW5jbHVkZSAiTWVkaWFQbGF5ZXJFbmdpbmVJZGVudGlmaWVycy5oIgogI2luY2x1ZGUg
Ik5vdEltcGxlbWVudGVkLmgiCiAjaWYgVVNFKENBSVJPKQogI2luY2x1ZGUgIkNhaXJvT3BlcmF0
aW9ucy5oIgpAQCAtNzksMTIgKzgwLDMwIEBAIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhRm91bmRh
dGlvbjo6fk1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhRm91bmRhdGlvbigpCiAgICAgZW5kU2Vzc2lv
bigpOwogfQogCitjbGFzcyBNZWRpYVBsYXllckZhY3RvcnlNZWRpYUZvdW5kYXRpb24gOiBwdWJs
aWMgTWVkaWFQbGF5ZXJGYWN0b3J5IHsKK3B1YmxpYzoKKyAgICBTdHJpbmcgaWRlbnRpZmllcigp
IGNvbnN0IGZpbmFsIHsgcmV0dXJuIE1lZGlhUGxheWVyRW5naW5lSWRlbnRpZmllcnM6Ok1lZGlh
Rm91bmRhdGlvbk1lZGlhRW5naW5lSWRlbnRpZmllcigpOyB9OworCisgICAgc3RkOjp1bmlxdWVf
cHRyPE1lZGlhUGxheWVyUHJpdmF0ZUludGVyZmFjZT4gY3JlYXRlTWVkaWFFbmdpbmVQbGF5ZXIo
TWVkaWFQbGF5ZXIqIHBsYXllcikgY29uc3QgZmluYWwKKyAgICB7CisgICAgICAgIHJldHVybiBt
YWtlVW5pcXVlPE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhRm91bmRhdGlvbj4ocGxheWVyKTsKKyAg
ICB9CisKKyAgICB2b2lkIGdldFN1cHBvcnRlZFR5cGVzKEhhc2hTZXQ8U3RyaW5nLCBBU0NJSUNh
c2VJbnNlbnNpdGl2ZUhhc2g+JiB0eXBlcykgY29uc3QgZmluYWwKKyAgICB7CisgICAgICAgIHJl
dHVybiBNZWRpYVBsYXllclByaXZhdGVNZWRpYUZvdW5kYXRpb246OmdldFN1cHBvcnRlZFR5cGVz
KHR5cGVzKTsKKyAgICB9CisKKyAgICBNZWRpYVBsYXllcjo6U3VwcG9ydHNUeXBlIHN1cHBvcnRz
VHlwZUFuZENvZGVjcyhjb25zdCBNZWRpYUVuZ2luZVN1cHBvcnRQYXJhbWV0ZXJzJiBwYXJhbWV0
ZXJzKSBjb25zdCBmaW5hbAorICAgIHsKKyAgICAgICAgcmV0dXJuIE1lZGlhUGxheWVyUHJpdmF0
ZU1lZGlhRm91bmRhdGlvbjo6c3VwcG9ydHNUeXBlKHBhcmFtZXRlcnMpOworICAgIH0KK307CisK
IHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFGb3VuZGF0aW9uOjpyZWdpc3Rlck1lZGlhRW5n
aW5lKE1lZGlhRW5naW5lUmVnaXN0cmFyIHJlZ2lzdHJhcikKIHsKLSAgICBpZiAoaXNBdmFpbGFi
bGUoKSkgewotICAgICAgICByZWdpc3RyYXIoW10oTWVkaWFQbGF5ZXIqIHBsYXllcikgeyByZXR1
cm4gbWFrZVVuaXF1ZTxNZWRpYVBsYXllclByaXZhdGVNZWRpYUZvdW5kYXRpb24+KHBsYXllcik7
IH0sCi0gICAgICAgICAgICBnZXRTdXBwb3J0ZWRUeXBlcywgc3VwcG9ydHNUeXBlLCAwLCAwLCAw
LCAwKTsKLSAgICB9CisgICAgaWYgKGlzQXZhaWxhYmxlKCkpCisgICAgICAgIHJlZ2lzdHJhciht
YWtlVW5pcXVlPE1lZGlhUGxheWVyRmFjdG9yeU1lZGlhRm91bmRhdGlvbj4oKSk7CiB9CiAKIGJv
b2wgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFGb3VuZGF0aW9uOjppc0F2YWlsYWJsZSgpIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9tZWRpYXNvdXJjZS9Nb2NrTWVk
aWFQbGF5ZXJNZWRpYVNvdXJjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL21l
ZGlhc291cmNlL01vY2tNZWRpYVBsYXllck1lZGlhU291cmNlLmNwcAppbmRleCAzODdhMjFkYWY0
NTUyMzk2OGFlZTRmNzk0MTlkM2Q4Yjg4NjkwZDdjLi45ZjJmNjc1MzZhNDk2NDhiODdhNmU1MWU1
YzVkY2UxYmI5MmEyNmYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2Nr
L21lZGlhc291cmNlL01vY2tNZWRpYVBsYXllck1lZGlhU291cmNlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tb2NrL21lZGlhc291cmNlL01vY2tNZWRpYVBsYXllck1lZGlhU291
cmNlLmNwcApAQCAtMzcsMTEgKzM3LDI3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorY2xh
c3MgTWVkaWFQbGF5ZXJGYWN0b3J5TWVkaWFTb3VyY2VNb2NrIDogcHVibGljIE1lZGlhUGxheWVy
RmFjdG9yeSB7CitwdWJsaWM6CisgICAgU3RyaW5nIGlkZW50aWZpZXIoKSBjb25zdCBmaW5hbCB7
IHJldHVybiAiTW9ja01lZGlhUGxheWVyTWVkaWFTb3VyY2UiOyB9OworCisgICAgc3RkOjp1bmlx
dWVfcHRyPE1lZGlhUGxheWVyUHJpdmF0ZUludGVyZmFjZT4gY3JlYXRlTWVkaWFFbmdpbmVQbGF5
ZXIoTWVkaWFQbGF5ZXIqIHBsYXllcikgY29uc3QgZmluYWwgeyByZXR1cm4gbWFrZVVuaXF1ZTxN
b2NrTWVkaWFQbGF5ZXJNZWRpYVNvdXJjZT4ocGxheWVyKTsgfQorCisgICAgdm9pZCBnZXRTdXBw
b3J0ZWRUeXBlcyhIYXNoU2V0PFN0cmluZywgQVNDSUlDYXNlSW5zZW5zaXRpdmVIYXNoPiYgdHlw
ZXMpIGNvbnN0IGZpbmFsCisgICAgeworICAgICAgICByZXR1cm4gTW9ja01lZGlhUGxheWVyTWVk
aWFTb3VyY2U6OmdldFN1cHBvcnRlZFR5cGVzKHR5cGVzKTsKKyAgICB9CisKKyAgICBNZWRpYVBs
YXllcjo6U3VwcG9ydHNUeXBlIHN1cHBvcnRzVHlwZUFuZENvZGVjcyhjb25zdCBNZWRpYUVuZ2lu
ZVN1cHBvcnRQYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzKSBjb25zdCBmaW5hbAorICAgIHsKKyAgICAg
ICAgcmV0dXJuIE1vY2tNZWRpYVBsYXllck1lZGlhU291cmNlOjpzdXBwb3J0c1R5cGUocGFyYW1l
dGVycyk7CisgICAgfQorfTsKKwogLy8gTWVkaWFQbGF5ZXIgRW5pZ25lIFN1cHBvcnQKIHZvaWQg
TW9ja01lZGlhUGxheWVyTWVkaWFTb3VyY2U6OnJlZ2lzdGVyTWVkaWFFbmdpbmUoTWVkaWFFbmdp
bmVSZWdpc3RyYXIgcmVnaXN0cmFyKQogewotICAgIHJlZ2lzdHJhcihbXSAoTWVkaWFQbGF5ZXIq
IHBsYXllcikgeyByZXR1cm4gbWFrZVVuaXF1ZTxNb2NrTWVkaWFQbGF5ZXJNZWRpYVNvdXJjZT4o
cGxheWVyKTsgfSwgZ2V0U3VwcG9ydGVkVHlwZXMsCi0gICAgICAgIHN1cHBvcnRzVHlwZSwgMCwg
MCwgMCwgMCk7CisgICAgcmVnaXN0cmFyKG1ha2VVbmlxdWU8TWVkaWFQbGF5ZXJGYWN0b3J5TWVk
aWFTb3VyY2VNb2NrPigpKTsKIH0KIAogLy8gRklYTUU6IFdoYXQgZG9lcyB0aGUgd29yZCAiY2Fj
aGUiIG1lYW4gaGVyZT8KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMt
aW5wdXQueGNmaWxlbGlzdCBiL1NvdXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMtaW5wdXQueGNm
aWxlbGlzdAppbmRleCA3ZjA4ZjJiMmYxODU4MmVkNTA0MDMyZGNhY2I1NDc4NmExNjlhZDVmLi4z
ZWYxY2E4OGZmYWVhYTI5ZGNkODNiNzU1YzJiM2JmMjg4ZjBmMmFhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2VzLWlucHV0LnhjZmlsZWxpc3QKKysrIGIvU291cmNlL1dl
YktpdC9EZXJpdmVkU291cmNlcy1pbnB1dC54Y2ZpbGVsaXN0CkBAIC0xNiw2ICsxNiw3IEBAICQo
SkFWQVNDUklQVENPUkVfUFJJVkFURV9IRUFERVJTX0RJUikveHhkLnBsCiAkKFBST0pFQ1RfRElS
KS9HUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MubWVzc2FnZXMuaW4KICQoUFJP
SkVDVF9ESVIpL0dQVVByb2Nlc3MvR1BVUHJvY2Vzcy5tZXNzYWdlcy5pbgogJChQUk9KRUNUX0RJ
UikvR1BVUHJvY2Vzcy9tYWMvY29tLmFwcGxlLldlYktpdC5HUFVQcm9jZXNzLnNiLmluCiskKFBS
T0pFQ1RfRElSKS9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5
Lm1lc3NhZ2VzLmluCiAkKFBST0pFQ1RfRElSKS9OZXR3b3JrUHJvY2Vzcy9Db29raWVzL1dlYkNv
b2tpZU1hbmFnZXIubWVzc2FnZXMuaW4KICQoUFJPSkVDVF9ESVIpL05ldHdvcmtQcm9jZXNzL0N1
c3RvbVByb3RvY29scy9MZWdhY3lDdXN0b21Qcm90b2NvbE1hbmFnZXIubWVzc2FnZXMuaW4KICQo
UFJPSkVDVF9ESVIpL05ldHdvcmtQcm9jZXNzL0luZGV4ZWREQi9XZWJJREJDb25uZWN0aW9uVG9D
bGllbnQubWVzc2FnZXMuaW4KQEAgLTk3LDYgKzk4LDcgQEAgJChQUk9KRUNUX0RJUikvV2ViUHJv
Y2Vzcy9DYWNoZS9XZWJDYWNoZVN0b3JhZ2VDb25uZWN0aW9uLm1lc3NhZ2VzLmluCiAkKFBST0pF
Q1RfRElSKS9XZWJQcm9jZXNzL0RhdGFiYXNlcy9JbmRleGVkREIvV2ViSURCQ29ubmVjdGlvblRv
U2VydmVyLm1lc3NhZ2VzLmluCiAkKFBST0pFQ1RfRElSKS9XZWJQcm9jZXNzL0Z1bGxTY3JlZW4v
V2ViRnVsbFNjcmVlbk1hbmFnZXIubWVzc2FnZXMuaW4KICQoUFJPSkVDVF9ESVIpL1dlYlByb2Nl
c3MvR1BVL0dQVVByb2Nlc3NDb25uZWN0aW9uLm1lc3NhZ2VzLmluCiskKFBST0pFQ1RfRElSKS9X
ZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVNZWRpYVBsYXllck1hbmFnZXIubWVzc2FnZXMuaW4K
ICQoUFJPSkVDVF9ESVIpL1dlYlByb2Nlc3MvR2VvbG9jYXRpb24vV2ViR2VvbG9jYXRpb25NYW5h
Z2VyLm1lc3NhZ2VzLmluCiAkKFBST0pFQ1RfRElSKS9XZWJQcm9jZXNzL05ldHdvcmsvTmV0d29y
a1Byb2Nlc3NDb25uZWN0aW9uLm1lc3NhZ2VzLmluCiAkKFBST0pFQ1RfRElSKS9XZWJQcm9jZXNz
L05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIubWVzc2FnZXMuaW4KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMtb3V0cHV0LnhjZmlsZWxpc3QgYi9Tb3VyY2UvV2ViS2l0
L0Rlcml2ZWRTb3VyY2VzLW91dHB1dC54Y2ZpbGVsaXN0CmluZGV4IDNiMWU5NDExNzAzOGJmMGQw
NGEwNzU3ZjVlNmQ4NWUzMzRiZDc1YWUuLmM4YTNiNDk1YzBjZTU1NDEyOTkyMzY4MTEzMjAwZGEy
Yjk0MDc5MjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMtb3V0cHV0
LnhjZmlsZWxpc3QKKysrIGIvU291cmNlL1dlYktpdC9EZXJpdmVkU291cmNlcy1vdXRwdXQueGNm
aWxlbGlzdApAQCAtMTE0LDYgKzExNCwxMiBAQCAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZl
ZFNvdXJjZXMvV2ViS2l0Mi9QbHVnaW5Qcm94eU1lc3NhZ2VzUmVwbGllcy5oCiAkKEJVSUxUX1BS
T0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9SZW1vdGVMYXllclRyZWVEcmF3aW5n
QXJlYVByb3h5TWVzc2FnZVJlY2VpdmVyLmNwcAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2
ZWRTb3VyY2VzL1dlYktpdDIvUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWFQcm94eU1lc3NhZ2Vz
LmgKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQyL1JlbW90ZUxh
eWVyVHJlZURyYXdpbmdBcmVhUHJveHlNZXNzYWdlc1JlcGxpZXMuaAorJChCVUlMVF9QUk9EVUNU
U19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIvUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyTWVz
c2FnZVJlY2VpdmVyLmNwcAorJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dl
YktpdDIvUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyTWVzc2FnZXMuaAorJChCVUlMVF9QUk9EVUNU
U19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIvUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyTWVz
c2FnZXNSZXBsaWVzLmgKKyQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJL
aXQyL1JlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5TWVzc2FnZVJlY2VpdmVyLmNwcAorJChC
VUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIvUmVtb3RlTWVkaWFQbGF5
ZXJNYW5hZ2VyUHJveHlNZXNzYWdlcy5oCiskKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNv
dXJjZXMvV2ViS2l0Mi9SZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eU1lc3NhZ2VzUmVwbGll
cy5oCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9SZW1vdGVP
YmplY3RSZWdpc3RyeU1lc3NhZ2VSZWNlaXZlci5jcHAKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9E
ZXJpdmVkU291cmNlcy9XZWJLaXQyL1JlbW90ZU9iamVjdFJlZ2lzdHJ5TWVzc2FnZXMuaAogJChC
VUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIvUmVtb3RlT2JqZWN0UmVn
aXN0cnlNZXNzYWdlc1JlcGxpZXMuaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9EZXJpdmVk
U291cmNlcy5tYWtlIGIvU291cmNlL1dlYktpdC9EZXJpdmVkU291cmNlcy5tYWtlCmluZGV4IGJl
NTI1ZTEzYzU5YmJkMTQ1NmU4ZjBkNDIzYmE2NDQxY2U4YjA4ZGEuLjk2ZjNhMmVjZWYzMTE4Y2Uy
M2YzODc1MWQ3MmUyYWIwODNjZjRhYzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvRGVyaXZl
ZFNvdXJjZXMubWFrZQorKysgYi9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2VzLm1ha2UKQEAg
LTI0LDYgKzI0LDcgQEAgVlBBVEggPSBcCiAgICAgJChXZWJLaXQyKSBcCiAgICAgJChXZWJLaXQy
KS9HUFVQcm9jZXNzIFwKICAgICAkKFdlYktpdDIpL0dQVVByb2Nlc3MvbWFjIFwKKyAgICAkKFdl
YktpdDIpL0dQVVByb2Nlc3MvbWVkaWEgXAogICAgICQoV2ViS2l0MikvTmV0d29ya1Byb2Nlc3Mg
XAogICAgICQoV2ViS2l0MikvTmV0d29ya1Byb2Nlc3MvQ29va2llcyBcCiAgICAgJChXZWJLaXQy
KS9OZXR3b3JrUHJvY2Vzcy9jYWNoZSBcCkBAIC00OSw2ICs1MCw3IEBAIFZQQVRIID0gXAogICAg
ICQoV2ViS2l0MikvV2ViUHJvY2Vzcy9GdWxsU2NyZWVuIFwKICAgICAkKFdlYktpdDIpL1dlYlBy
b2Nlc3MvR2VvbG9jYXRpb24gXAogICAgICQoV2ViS2l0MikvV2ViUHJvY2Vzcy9HUFUgXAorICAg
ICQoV2ViS2l0MikvV2ViUHJvY2Vzcy9HUFUvbWVkaWEgXAogICAgICQoV2ViS2l0MikvV2ViUHJv
Y2Vzcy9JY29uRGF0YWJhc2UgXAogICAgICQoV2ViS2l0MikvV2ViUHJvY2Vzcy9NZWRpYUNhY2hl
IFwKICAgICAkKFdlYktpdDIpL1dlYlByb2Nlc3MvTWVkaWFTdHJlYW0gXApAQCAtMTM1LDYgKzEz
Nyw4IEBAIE1FU1NBR0VfUkVDRUlWRVJTID0gXAogICAgIFBsdWdpblByb2Nlc3NQcm94eSBcCiAg
ICAgUGx1Z2luUHJveHkgXAogICAgIFJlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhUHJveHkgXAor
ICAgIFJlbW90ZU1lZGlhUGxheWVyTWFuYWdlciBcCisgICAgUmVtb3RlTWVkaWFQbGF5ZXJNYW5h
Z2VyUHJveHkgXAogICAgIFJlbW90ZU9iamVjdFJlZ2lzdHJ5IFwKICAgICBSZW1vdGVTY3JvbGxp
bmdDb29yZGluYXRvciBcCiAgICAgUmVtb3RlV2ViSW5zcGVjdG9yUHJveHkgXApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3Bw
IGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3Bw
CmluZGV4IGJkMTM5ZmU1MzMxYmNjZTM2YzMzNDNiMTUyMTdkMDExZjI1MjRjMzguLjQ3YTlhYzNj
YzFmZDdlYWZlZmRlNmI5NDAzYjBjYWRjYTJiNjljMmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L0dQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAKQEAgLTM1LDYg
KzM1LDggQEAKICNpbmNsdWRlICJHUFVQcm9jZXNzUHJveHlNZXNzYWdlcy5oIgogI2luY2x1ZGUg
IkxvZ2dpbmcuaCIKICNpbmNsdWRlICJSZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYVByb3h5TWVz
c2FnZXMuaCIKKyNpbmNsdWRlICJSZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eS5oIgorI2lu
Y2x1ZGUgIlJlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5TWVzc2FnZXMuaCIKICNpbmNsdWRl
ICJSZW1vdGVTY3JvbGxpbmdDb29yZGluYXRvclRyYW5zYWN0aW9uLmgiCiAjaW5jbHVkZSAiV2Vi
Q29yZUFyZ3VtZW50Q29kZXJzLmgiCiAjaW5jbHVkZSAiV2ViRXJyb3JzLmgiCkBAIC01Miw2ICs1
NCw3IEBAIEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OkdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nl
c3MoR1BVUHJvY2VzcyYgZ3B1UHJvY2VzcywgV2ViCiAgICAgOiBtX2Nvbm5lY3Rpb24oSVBDOjpD
b25uZWN0aW9uOjpjcmVhdGVTZXJ2ZXJDb25uZWN0aW9uKGNvbm5lY3Rpb25JZGVudGlmaWVyLCAq
dGhpcykpCiAgICAgLCBtX2dwdVByb2Nlc3MoZ3B1UHJvY2VzcykKICAgICAsIG1fd2ViUHJvY2Vz
c0lkZW50aWZpZXIod2ViUHJvY2Vzc0lkZW50aWZpZXIpCisgICAgLCBtX3JlbW90ZU1lZGlhUGxh
eWVyTWFuYWdlclByb3h5KG1ha2VVbmlxdWU8UmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHk+
KCp0aGlzKSkKIHsKICAgICBSRUxFQVNFX0FTU0VSVChSdW5Mb29wOjppc01haW4oKSk7CiAgICAg
bV9jb25uZWN0aW9uLT5vcGVuKCk7CkBAIC02MSw2ICs2NCw3IEBAIEdQVUNvbm5lY3Rpb25Ub1dl
YlByb2Nlc3M6On5HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzKCkKIHsKICAgICBSRUxFQVNFX0FT
U0VSVChSdW5Mb29wOjppc01haW4oKSk7CiAKKyAgICBtX3JlbW90ZU1lZGlhUGxheWVyTWFuYWdl
clByb3h5ID0gbnVsbHB0cjsKICAgICBtX2Nvbm5lY3Rpb24tPmludmFsaWRhdGUoKTsKIH0KIApA
QCAtNzQsNiArNzgsMjYgQEAgdm9pZCBHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpkaWRSZWNl
aXZlSW52YWxpZE1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiBjb25uZWMKICAgICBDUkFTSCgpOwog
fQogCit2b2lkIEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmRpZFJlY2VpdmVNZXNzYWdlKElQ
Qzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgSVBDOjpEZWNvZGVyJiBkZWNvZGVyKQoreworICAg
IGlmIChkZWNvZGVyLm1lc3NhZ2VSZWNlaXZlck5hbWUoKSA9PSBNZXNzYWdlczo6UmVtb3RlTWVk
aWFQbGF5ZXJNYW5hZ2VyUHJveHk6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSkgeworICAgICAgICBp
ZiAobV9yZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eSkKKyAgICAgICAgICAgIG1fcmVtb3Rl
TWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHktPmRpZFJlY2VpdmVNZXNzYWdlRnJvbVdlYlByb2Nlc3Mo
Y29ubmVjdGlvbiwgZGVjb2Rlcik7CisgICAgICAgIHJldHVybjsKKyAgICB9Cit9CisKK3ZvaWQg
R1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6ZGlkUmVjZWl2ZVN5bmNNZXNzYWdlKElQQzo6Q29u
bmVjdGlvbiYgY29ubmVjdGlvbiwgSVBDOjpEZWNvZGVyJiBkZWNvZGVyLCBzdGQ6OnVuaXF1ZV9w
dHI8SVBDOjpFbmNvZGVyPiYgcmVwbHlFbmNvZGVyKQoreworICAgIGlmIChkZWNvZGVyLm1lc3Nh
Z2VSZWNlaXZlck5hbWUoKSA9PSBNZXNzYWdlczo6UmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJv
eHk6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSkgeworICAgICAgICBpZiAobV9yZW1vdGVNZWRpYVBs
YXllck1hbmFnZXJQcm94eSkKKyAgICAgICAgICAgIG1fcmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2Vy
UHJveHktPmRpZFJlY2VpdmVTeW5jTWVzc2FnZUZyb21XZWJQcm9jZXNzKGNvbm5lY3Rpb24sIGRl
Y29kZXIsIHJlcGx5RW5jb2Rlcik7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBBU1NF
UlRfTk9UX1JFQUNIRUQoKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CiAKICNlbmRpZiAv
LyBFTkFCTEUoR1BVX1BST0NFU1MpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nl
c3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNz
L0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaAppbmRleCBjNjRhNDNlNjRhZjUxMGMwNzRkNzA4
NmY3YjY0NmZhNmM2YTRmNDY3Li44NjI1YjNjYjY5MmIwNzM1OGNhOWY4NjExMzY3Yjc1OTY1NTIy
NWY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRv
V2ViUHJvY2Vzcy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9u
VG9XZWJQcm9jZXNzLmgKQEAgLTM1LDYgKzM1LDcgQEAKIG5hbWVzcGFjZSBXZWJLaXQgewogCiBj
bGFzcyBHUFVQcm9jZXNzOworY2xhc3MgUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHk7CiAK
IGNsYXNzIEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MKICAgICA6IHB1YmxpYyBSZWZDb3VudGVk
PEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M+CkBAIC01NywxMCArNTgsMTMgQEAgcHJpdmF0ZToK
ICAgICAvLyBJUEM6OkNvbm5lY3Rpb246OkNsaWVudAogICAgIHZvaWQgZGlkQ2xvc2UoSVBDOjpD
b25uZWN0aW9uJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRSZWNlaXZlSW52YWxpZE1lc3NhZ2Uo
SVBDOjpDb25uZWN0aW9uJiwgSVBDOjpTdHJpbmdSZWZlcmVuY2UgbWVzc2FnZVJlY2VpdmVyTmFt
ZSwgSVBDOjpTdHJpbmdSZWZlcmVuY2UgbWVzc2FnZU5hbWUpIG92ZXJyaWRlOworICAgIHZvaWQg
ZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJikgb3ZlcnJp
ZGU7CisgICAgdm9pZCBkaWRSZWNlaXZlU3luY01lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBD
OjpEZWNvZGVyJiwgc3RkOjp1bmlxdWVfcHRyPElQQzo6RW5jb2Rlcj4mKSBvdmVycmlkZTsKIAog
ICAgIFJlZjxJUEM6OkNvbm5lY3Rpb24+IG1fY29ubmVjdGlvbjsKICAgICBSZWY8R1BVUHJvY2Vz
cz4gbV9ncHVQcm9jZXNzOwogICAgIGNvbnN0IFdlYkNvcmU6OlByb2Nlc3NJZGVudGlmaWVyIG1f
d2ViUHJvY2Vzc0lkZW50aWZpZXI7CisgICAgc3RkOjp1bmlxdWVfcHRyPFJlbW90ZU1lZGlhUGxh
eWVyTWFuYWdlclByb3h5PiBtX3JlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5OwogfTsKIAog
fSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nl
c3MvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHkuY3BwIGIvU291cmNlL1dlYktp
dC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5LmNwcApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi42YTIyOTcyNDJjOTJmZWU3ZDU3NjZhNTEwODIzNGMyZDljNzRlMTgyCi0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUGxh
eWVyTWFuYWdlclByb3h5LmNwcApAQCAtMCwwICsxLDE0NCBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVU
T1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBD
T05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNs
dWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJSZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eS5o
IgorCisjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKQorCisjaW5jbHVkZSAiR1BVQ29ubmVjdGlvblRv
V2ViUHJvY2Vzcy5oIgorI2luY2x1ZGUgIlJlbW90ZU1lZGlhUGxheWVyTWFuYWdlck1lc3NhZ2Vz
LmgiCisjaW5jbHVkZSAiUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHlNZXNzYWdlcy5oIgor
I2luY2x1ZGUgIldlYkNvcmVBcmd1bWVudENvZGVycy5oIgorI2luY2x1ZGUgPFdlYkNvcmUvTWVk
aWFQbGF5ZXIuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL01lZGlhUGxheWVyUHJpdmF0ZS5oPgorI2lu
Y2x1ZGUgPHd0Zi9VbmlxdWVSZWYuaD4KKworI2RlZmluZSBNRVNTQUdFX0NIRUNLX0NPTlRFWFRJ
RChpZGVudGlmaWVyKSBNRVNTQUdFX0NIRUNLX0JBU0UobV9wcm94aWVzLmlzVmFsaWRLZXkoaWRl
bnRpZmllciksICZtX3dlYlByb2Nlc3NDb25uZWN0aW9uLmNvbm5lY3Rpb24oKSkKKworbmFtZXNw
YWNlIFdlYktpdCB7Cit1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKKworI2lmICFSRUxFQVNFX0xP
R19ESVNBQkxFRAorc3RhdGljIFJlZlB0cjxMb2dnZXI+JiBudWxsTG9nZ2VyKCkKK3sKKyAgICBz
dGF0aWMgTmV2ZXJEZXN0cm95ZWQ8UmVmUHRyPExvZ2dlcj4+IGxvZ2dlcjsKKyAgICByZXR1cm4g
bG9nZ2VyOworfQorI2VuZGlmCisKK2NsYXNzIFJlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5
OjpQbGF5ZXJQcm94eQorICAgIDogcHVibGljIE1lZGlhUGxheWVyQ2xpZW50IHsKKyAgICBXVEZf
TUFLRV9GQVNUX0FMTE9DQVRFRDsKK3B1YmxpYzoKKyAgICBQbGF5ZXJQcm94eShjb25zdCBNZWRp
YVBsYXllclByaXZhdGVSZW1vdGVJZGVudGlmaWVyJiBpZCwgUmVmPElQQzo6Q29ubmVjdGlvbj4m
JiBjb25uZWN0aW9uLCBjb25zdCBTdHJpbmcmIHJlbW90ZUVuZ2luZUlkZW50aWZpZXIpCisgICAg
ICAgIDogbV9pZChpZCkKKyAgICAgICAgLCBtX2Nvbm5lY3Rpb24oV1RGTW92ZShjb25uZWN0aW9u
KSkKKyAgICAgICAgLCBtX3JlbW90ZUVuZ2luZUlkZW50aWZpZXIocmVtb3RlRW5naW5lSWRlbnRp
ZmllcikKKyAgICB7CisgICAgfQorCisgICAgdmlydHVhbCB+UGxheWVyUHJveHkoKQorICAgIHsK
KyAgICB9CisKK3ByaXZhdGU6CisKKyAgICAvLyBNZWRpYVBsYXllckNsaWVudAorICAgIGNvbnN0
IFZlY3RvcjxXZWJDb3JlOjpDb250ZW50VHlwZT4mIG1lZGlhQ29udGVudFR5cGVzUmVxdWlyaW5n
SGFyZHdhcmVTdXBwb3J0KCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV90eXBlc1JlcXVpcmluZ0hh
cmR3YXJlU3VwcG9ydDsgfQorCisjaWYgIVJFTEVBU0VfTE9HX0RJU0FCTEVECisgICAgY29uc3Qg
TG9nZ2VyJiBtZWRpYVBsYXllckxvZ2dlcigpIGZpbmFsCisgICAgeworICAgICAgICBpZiAoIW51
bGxMb2dnZXIoKS5nZXQoKSkgeworICAgICAgICAgICAgbnVsbExvZ2dlcigpID0gTG9nZ2VyOjpj
cmVhdGUodGhpcyk7CisgICAgICAgICAgICBudWxsTG9nZ2VyKCktPnNldEVuYWJsZWQodGhpcywg
ZmFsc2UpOworICAgICAgICB9CisKKyAgICAgICAgcmV0dXJuICpudWxsTG9nZ2VyKCkuZ2V0KCk7
CisgICAgfQorI2VuZGlmCisKK3Byb3RlY3RlZDoKKyAgICBNZWRpYVBsYXllclByaXZhdGVSZW1v
dGVJZGVudGlmaWVyIG1faWQ7CisgICAgUmVmPElQQzo6Q29ubmVjdGlvbj4gbV9jb25uZWN0aW9u
OworICAgIHN0ZDo6dW5pcXVlX3B0cjxNZWRpYVBsYXllclByaXZhdGVJbnRlcmZhY2U+IG1fcGxh
eWVyOworICAgIFN0cmluZyBtX3JlbW90ZUVuZ2luZUlkZW50aWZpZXI7CisgICAgVmVjdG9yPFdl
YkNvcmU6OkNvbnRlbnRUeXBlPiBtX3R5cGVzUmVxdWlyaW5nSGFyZHdhcmVTdXBwb3J0OworfTsK
KworUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHk6OlJlbW90ZU1lZGlhUGxheWVyTWFuYWdl
clByb3h5KEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MmIGNvbm5lY3Rpb24pCisgICAgOiBtX3dl
YlByb2Nlc3NDb25uZWN0aW9uKGNvbm5lY3Rpb24pCit7Cit9CisKK1JlbW90ZU1lZGlhUGxheWVy
TWFuYWdlclByb3h5Ojp+UmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHkoKQoreworfQorCit2
b2lkIFJlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5OjpjcmVhdGVNZWRpYVBsYXllcihjb25z
dCBNZWRpYVBsYXllclByaXZhdGVSZW1vdGVJZGVudGlmaWVyJiBpZCwgY29uc3QgU3RyaW5nJiYg
cmVtb3RlRW5naW5lSWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sIHN1Y2Nl
ZWRlZCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit7CisgICAgTUVTU0FHRV9DSEVDS19DT05URVhU
SUQoaWQpOworCisgICAgQVNTRVJUKCFtX3Byb3hpZXMuY29udGFpbnMoaWQpKTsKKyAgICBtX3By
b3hpZXMuYWRkKGlkLCBtYWtlVW5pcXVlPFBsYXllclByb3h5PihpZCwgbV93ZWJQcm9jZXNzQ29u
bmVjdGlvbi5jb25uZWN0aW9uKCksIHJlbW90ZUVuZ2luZUlkZW50aWZpZXIpKTsKKworICAgIGNv
bXBsZXRpb25IYW5kbGVyKHRydWUpOworfQorCit2b2lkIFJlbW90ZU1lZGlhUGxheWVyTWFuYWdl
clByb3h5OjpnZXRTdXBwb3J0ZWRUeXBlcyhjb25zdCBTdHJpbmcmJiwgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZChWZWN0b3I8U3RyaW5nPiYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyAgICAv
LyBGSVhNRTogcXVlcnkgdGhlIGFwcHJvcHJpYXRlIG1lZGlhIGVuZ2luZQorICAgIGNvbXBsZXRp
b25IYW5kbGVyKHsgInZpZGVvL21wNCIsICJhdWRpby9tcDQiIH0pOworfQorCit2b2lkIFJlbW90
ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5OjpzdXBwb3J0c1R5cGUoY29uc3QgU3RyaW5nJiYsIGNv
bnN0IFdlYkNvcmU6Ok1lZGlhRW5naW5lU3VwcG9ydFBhcmFtZXRlcnMmJiwgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChpbnQpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQoreworICAgIGNvbXBsZXRpb25I
YW5kbGVyKDEpOworfQorCit2b2lkIFJlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5Ojpvcmln
aW5zSW5NZWRpYUNhY2hlKGNvbnN0IFN0cmluZyYmLCBjb25zdCBTdHJpbmcmJiwgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZChWZWN0b3I8V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhPiYmKT4mJiBj
b21wbGV0aW9uSGFuZGxlcikKK3sKKyAgICBjb21wbGV0aW9uSGFuZGxlcih7IH0pOworfQorCit2
b2lkIFJlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5OjpjbGVhck1lZGlhQ2FjaGUoY29uc3Qg
U3RyaW5nJiYsIGNvbnN0IFN0cmluZyYmLCBXYWxsVGltZSkKK3sKK30KKwordm9pZCBSZW1vdGVN
ZWRpYVBsYXllck1hbmFnZXJQcm94eTo6Y2xlYXJNZWRpYUNhY2hlRm9yT3JpZ2lucyhjb25zdCBT
dHJpbmcmJiwgY29uc3QgU3RyaW5nJiYsIFZlY3RvcjxXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRh
dGE+JiYpCit7Cit9CisKK3ZvaWQgUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHk6OnN1cHBv
cnRzS2V5U3lzdGVtKGNvbnN0IFN0cmluZyYmLCBjb25zdCBTdHJpbmcmJiwgY29uc3QgU3RyaW5n
JiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit7
CisgICAgY29tcGxldGlvbkhhbmRsZXIoeyB9KTsKK30KKworfQorCisjdW5kZWYgTUVTU0FHRV9D
SEVDS19DT05URVhUSUQKKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVBy
b2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHkuaCBiL1NvdXJjZS9XZWJL
aXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eS5oCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLmQxOWVkMzVkZGIwOWE4NWYxN2Q0ZjllNzI4MDcyNzg4ZGExMzNlNDQKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFQbGF5
ZXJNYW5hZ2VyUHJveHkuaApAQCAtMCwwICsxLDc0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMg
YGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBv
bmNlCisKKyNpZiBFTkFCTEUoR1BVX1BST0NFU1MpCisKKyNpbmNsdWRlICJDb25uZWN0aW9uLmgi
CisjaW5jbHVkZSAiTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlSWRlbnRpZmllci5oIgorI2luY2x1
ZGUgIk1lc3NhZ2VSZWNlaXZlci5oIgorI2luY2x1ZGUgPFdlYkNvcmUvTWVkaWFQbGF5ZXIuaD4K
KworbmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M7
CisKK2NsYXNzIFJlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5IDogcHJpdmF0ZSBJUEM6Ok1l
c3NhZ2VSZWNlaXZlciB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CitwdWJsaWM6Cisg
ICAgZXhwbGljaXQgUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHkoR1BVQ29ubmVjdGlvblRv
V2ViUHJvY2VzcyYpOworICAgIH5SZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eSgpOworCisg
ICAgR1BVQ29ubmVjdGlvblRvV2ViUHJvY2VzcyYgd2ViUHJvY2Vzc0Nvbm5lY3Rpb24oKSBjb25z
dCB7IHJldHVybiBtX3dlYlByb2Nlc3NDb25uZWN0aW9uOyB9CisgICAgdm9pZCBjbGVhcigpOwor
CisgICAgdm9pZCBkaWRSZWNlaXZlTWVzc2FnZUZyb21XZWJQcm9jZXNzKElQQzo6Q29ubmVjdGlv
biYgY29ubmVjdGlvbiwgSVBDOjpEZWNvZGVyJiBkZWNvZGVyKSB7IGRpZFJlY2VpdmVNZXNzYWdl
KGNvbm5lY3Rpb24sIGRlY29kZXIpOyB9CisgICAgdm9pZCBkaWRSZWNlaXZlU3luY01lc3NhZ2VG
cm9tV2ViUHJvY2VzcyhJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIElQQzo6RGVjb2RlciYg
ZGVjb2Rlciwgc3RkOjp1bmlxdWVfcHRyPElQQzo6RW5jb2Rlcj4mIGVuY29kZXIpIHsgZGlkUmVj
ZWl2ZVN5bmNNZXNzYWdlKGNvbm5lY3Rpb24sIGRlY29kZXIsIGVuY29kZXIpOyB9Citwcml2YXRl
OgorICAgIC8vIElQQzo6TWVzc2FnZVJlY2VpdmVyCisgICAgdm9pZCBkaWRSZWNlaXZlTWVzc2Fn
ZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImKSBmaW5hbDsKKyAgICB2b2lkIGRpZFJl
Y2VpdmVTeW5jTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImLCBzdGQ6OnVu
aXF1ZV9wdHI8SVBDOjpFbmNvZGVyPiYpIGZpbmFsOworCisgICAgdm9pZCBjcmVhdGVNZWRpYVBs
YXllcihjb25zdCBNZWRpYVBsYXllclByaXZhdGVSZW1vdGVJZGVudGlmaWVyJiwgY29uc3QgU3Ry
aW5nJiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpOworCisgICAgdm9pZCBnZXRT
dXBwb3J0ZWRUeXBlcyhjb25zdCBTdHJpbmcmJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChWZWN0
b3I8U3RyaW5nPiYmKT4mJik7CisgICAgdm9pZCBzdXBwb3J0c1R5cGUoY29uc3QgU3RyaW5nJiYs
IGNvbnN0IFdlYkNvcmU6Ok1lZGlhRW5naW5lU3VwcG9ydFBhcmFtZXRlcnMmJiwgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZChpbnQpPiYmKTsKKworICAgIHZvaWQgb3JpZ2luc0luTWVkaWFDYWNoZShj
b25zdCBTdHJpbmcmJiwgY29uc3QgU3RyaW5nJiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoVmVj
dG9yPFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YT4mJik+JiYpOworICAgIHZvaWQgY2xlYXJN
ZWRpYUNhY2hlKGNvbnN0IFN0cmluZyYmLCBjb25zdCBTdHJpbmcmJiwgV2FsbFRpbWUpOworICAg
IHZvaWQgY2xlYXJNZWRpYUNhY2hlRm9yT3JpZ2lucyhjb25zdCBTdHJpbmcmJiwgY29uc3QgU3Ry
aW5nJiYsIFZlY3RvcjxXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGE+JiYpOworICAgIHZvaWQg
c3VwcG9ydHNLZXlTeXN0ZW0oY29uc3QgU3RyaW5nJiYsIGNvbnN0IFN0cmluZyYmLCBjb25zdCBT
dHJpbmcmJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJik7CisKKworICAgIGNsYXNz
IFBsYXllclByb3h5OworICAgIGZyaWVuZCBjbGFzcyBQbGF5ZXJQcm94eTsKKyAgICBIYXNoTWFw
PE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZUlkZW50aWZpZXIsIHN0ZDo6dW5pcXVlX3B0cjxQbGF5
ZXJQcm94eT4+IG1fcHJveGllczsKKyAgICBHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzJiBtX3dl
YlByb2Nlc3NDb25uZWN0aW9uOworfTsKKworfQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eS5t
ZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVBs
YXllck1hbmFnZXJQcm94eS5tZXNzYWdlcy5pbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45YjM2ZTI1MTJmOWE0OTlh
NGNiMTUxMThiNDA4ZGYxMTNlMjQ4ZmViCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktp
dC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5Lm1lc3NhZ2Vz
LmluCkBAIC0wLDAgKzEsMzcgQEAKKyMgQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworIyBhcmUgbWV0
OgorIyAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorIyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisjIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyMgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworIyBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyMg
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorIyBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyMgQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorIyBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRgorIyBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyMgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyMgQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkKKyMgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRgorIyBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisKKyNpZiBFTkFCTEUoVklERU8pCisKK21lc3NhZ2VzIC0+IFJlbW90ZU1lZGlhUGxheWVyTWFu
YWdlclByb3h5IE5vdFJlZkNvdW50ZWQgeworICAgIENyZWF0ZU1lZGlhUGxheWVyKFdlYktpdDo6
TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlSWRlbnRpZmllciBpZCwgU3RyaW5nIHJlbW90ZUVuZ2lu
ZUlkZW50aWZpZXIpIC0+IChib29sIHN1Y2Nlc3MpIFN5bmNocm9ub3VzCisKKyAgICBHZXRTdXBw
b3J0ZWRUeXBlcyhTdHJpbmcgcmVtb3RlRW5naW5lSWRlbnRpZmllcikgLT4gKFZlY3RvcjxTdHJp
bmc+IHR5cGVzKSBTeW5jaHJvbm91cworICAgIFN1cHBvcnRzVHlwZShTdHJpbmcgcmVtb3RlRW5n
aW5lSWRlbnRpZmllciwgc3RydWN0IFdlYkNvcmU6Ok1lZGlhRW5naW5lU3VwcG9ydFBhcmFtZXRl
cnMgdHlwZSkgLT4gKGludCBzdXBwb3J0KSBTeW5jaHJvbm91cworICAgIE9yaWdpbnNJbk1lZGlh
Q2FjaGUoU3RyaW5nIHJlbW90ZUVuZ2luZUlkZW50aWZpZXIsIFN0cmluZyBwYXRoKSAtPiAoVmVj
dG9yPFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YT4gb3JpZ2lucykgU3luY2hyb25vdXMKKyAg
ICBDbGVhck1lZGlhQ2FjaGUoU3RyaW5nIHJlbW90ZUVuZ2luZUlkZW50aWZpZXIsIFN0cmluZyBw
YXRoLCBXYWxsVGltZSBtb2RpZmllZFNpbmNlKQorICAgIENsZWFyTWVkaWFDYWNoZUZvck9yaWdp
bnMoU3RyaW5nIHJlbW90ZUVuZ2luZUlkZW50aWZpZXIsIFN0cmluZyBwYXRoLCBWZWN0b3I8V2Vi
Q29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhPiBvcmlnaW5zKQorICAgIFN1cHBvcnRzS2V5U3lzdGVt
KFN0cmluZyByZW1vdGVFbmdpbmVJZGVudGlmaWVyLCBTdHJpbmcga2V5U3lzdGVtLCBTdHJpbmcg
bWltZVR5cGUpIC0+IChib29sIHN1cHBvcnRzKSBTeW5jaHJvbm91cworfQorCisjZW5kaWYKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvbWVzc2FnZXMucHkgYi9Tb3Vy
Y2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5CmluZGV4IGVkMTFhYzI3MjUyMjZl
NDdhMmI1NmJjYzllY2YyMjJkYWMwMDA5YWUuLmYyZTllZDdhYjU0MDJlZjUxMTg4ZjdlOGRiZTM5
NmJhOGFjZTBmYWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvbWVz
c2FnZXMucHkKKysrIGIvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5weQpA
QCAtMSw0ICsxLDQgQEAKLSMgQ29weXJpZ2h0IChDKSAyMDEwLTIwMTggQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorIyBDb3B5cmlnaHQgKEMpIDIwMTAtMjAxOSBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCiAjCiAjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogIyBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTIxOSwx
MCArMjE5LDExIEBAIGRlZiB0eXBlc190aGF0X2Nhbm5vdF9iZV9mb3J3YXJkX2RlY2xhcmVkKCk6
CiAgICAgICAgICdXZWJDb3JlOjpTV1NlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyJywKICAgICAg
ICAgJ1dlYktpdDo6QWN0aXZpdHlTdGF0ZUNoYW5nZUlEJywKICAgICAgICAgJ1dlYktpdDo6TGF5
ZXJIb3N0aW5nQ29udGV4dElEJywKLSAgICAgICAgJ1dlYktpdDo6VHJhbnNhY3Rpb25JRCcsCisg
ICAgICAgICdXZWJLaXQ6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZUlkZW50aWZpZXInLAogICAg
ICAgICAnV2ViS2l0OjpTdG9yYWdlQXJlYUlkZW50aWZpZXInLAogICAgICAgICAnV2ViS2l0OjpT
dG9yYWdlQXJlYUltcGxJZGVudGlmaWVyJywKICAgICAgICAgJ1dlYktpdDo6U3RvcmFnZU5hbWVz
cGFjZUlkZW50aWZpZXInLAorICAgICAgICAnV2ViS2l0OjpUcmFuc2FjdGlvbklEJywKICAgICAg
ICAgJ1dlYktpdDo6VXNlckNvbnRlbnRDb250cm9sbGVySWRlbnRpZmllcicsCiAgICAgICAgICdX
ZWJLaXQ6OldlYlBhZ2VQcm94eUlkZW50aWZpZXInLAogICAgIF0pCkBAIC02MDMsNiArNjA0LDcg
QEAgZGVmIGhlYWRlcnNfZm9yX3R5cGUodHlwZSk6CiAgICAgICAgICdXZWJLaXQ6OldlYk1vdXNl
RXZlbnQnOiBbJyJXZWJFdmVudC5oIiddLAogICAgICAgICAnV2ViS2l0OjpXZWJUb3VjaEV2ZW50
JzogWyciV2ViRXZlbnQuaCInXSwKICAgICAgICAgJ1dlYktpdDo6V2ViV2hlZWxFdmVudCc6IFsn
IldlYkV2ZW50LmgiJ10sCisgICAgICAgICdXZWJDb3JlOjpNZWRpYUVuZ2luZVN1cHBvcnRQYXJh
bWV0ZXJzJzogWyc8V2ViQ29yZS9NZWRpYVBsYXllci5oPiddLAogICAgICAgICAnc3RydWN0IFdl
YkNvcmU6OkVsZW1lbnRDb250ZXh0JzogWyc8V2ViQ29yZS9FbGVtZW50Q29udGV4dC5oPiddLAog
ICAgICAgICAnc3RydWN0IFdlYktpdDo6V2ViVXNlclNjcmlwdERhdGEnOiBbJyJXZWJVc2VyQ29u
dGVudENvbnRyb2xsZXJEYXRhVHlwZXMuaCInXSwKICAgICAgICAgJ3N0cnVjdCBXZWJLaXQ6Oldl
YlVzZXJTdHlsZVNoZWV0RGF0YSc6IFsnIldlYlVzZXJDb250ZW50Q29udHJvbGxlckRhdGFUeXBl
cy5oIiddLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9Tb3VyY2VzLnR4dCBiL1NvdXJjZS9X
ZWJLaXQvU291cmNlcy50eHQKaW5kZXggNzNmZjRkMjdiZWUzZDgyYTExNDY3MTc0OTJiY2I2NjQ1
MjM1YjY0Mi4uYjIzODQ4NDg1MzM4NzhhMGQ3Zjc2NmU4MTczNmUxODY0MTlmZWUwYSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9Tb3VyY2VzLnR4dAorKysgYi9Tb3VyY2UvV2ViS2l0L1NvdXJj
ZXMudHh0CkBAIC00OTksNiArNDk5LDggQEAgV2ViUHJvY2Vzcy9NZWRpYVN0cmVhbS9NZWRpYURl
dmljZVNhbmRib3hFeHRlbnNpb25zLmNwcAogV2ViUHJvY2Vzcy9NZWRpYVN0cmVhbS9Vc2VyTWVk
aWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXIuY3BwCiAKIFdlYlByb2Nlc3MvR1BVL0dQVVByb2Nl
c3NDb25uZWN0aW9uLmNwcAorV2ViUHJvY2Vzcy9HUFUvbWVkaWEvTWVkaWFQbGF5ZXJQcml2YXRl
UmVtb3RlLmNwcAorV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2Vy
LmNwcAogCiBXZWJQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLmNwcAog
V2ViUHJvY2Vzcy9OZXR3b3JrL1dlYkxvYWRlclN0cmF0ZWd5LmNwcApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9Tb3VyY2VzQ29jb2EudHh0IGIvU291cmNlL1dlYktpdC9Tb3VyY2VzQ29jb2Eu
dHh0CmluZGV4IDlkMjQyZTJhMDY0ZGZmNzJmNDljNDJmNTRkOTc4MTNjYWQ5NGQ5MmMuLmQ5NDgz
ZDBhMTM5YTAwYWRhZDc3ZmE4MzdlY2M3M2VjMTc4YjljM2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvU291cmNlc0NvY29hLnR4dAorKysgYi9Tb3VyY2UvV2ViS2l0L1NvdXJjZXNDb2NvYS50
eHQKQEAgLTU5LDYgKzU5LDcgQEAgTmV0d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdvcmtSVENTb2Nr
ZXQuY3BwCiAKIEdQVVByb2Nlc3MvaW9zL0dQVVByb2Nlc3NJT1MubW0KIEdQVVByb2Nlc3MvbWFj
L0dQVVByb2Nlc3NNYWMubW0KK0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJNYW5h
Z2VyUHJveHkuY3BwCiBHUFVQcm9jZXNzL0VudHJ5UG9pbnQvQ29jb2EvWFBDU2VydmljZS9HUFVT
ZXJ2aWNlRW50cnlQb2ludC5tbQogCiBQbGF0Zm9ybS9jZi9Nb2R1bGVDRi5jcHAKQEAgLTYyNCw1
ICs2MjUsNyBAQCBFZGl0YWJsZUltYWdlQ29udHJvbGxlck1lc3NhZ2VSZWNlaXZlci5jcHAKIEdQ
VUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3NNZXNzYWdlUmVjZWl2ZXIuY3BwCiBHUFVQcm9jZXNzUHJv
eHlNZXNzYWdlUmVjZWl2ZXIuY3BwCiBHUFVQcm9jZXNzTWVzc2FnZVJlY2VpdmVyLmNwcAorLy9S
ZW1vdGVNZWRpYVBsYXllck1hbmFnZXJNZXNzYWdlUmVjZWl2ZXIuY3BwCisvL1JlbW90ZU1lZGlh
UGxheWVyTWFuYWdlclByb3h5TWVzc2FnZVJlY2VpdmVyLmNwcAogU2VydmljZVdvcmtlckZldGNo
VGFza01lc3NhZ2VSZWNlaXZlci5jcHAKIFRleHRDaGVja2luZ0NvbnRyb2xsZXJQcm94eU1lc3Nh
Z2VSZWNlaXZlci5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qCmluZGV4IGY3OWRkYzEyMDQwZjJiZjc5MjQwY2NhNTVlZjk4OTMwYjUwMDc1MzQu
LmVjZTkwZDU3NTJkNDdkNzFhYjA1NTVmY2E5NmQ2NjE3ZWU3NGUxMTAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNl
L1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtOTEsNiArOTEsMTMg
QEAKIAkJMDc0RTc1RkUxREYyMjExOTAwRDMxOEVDIC8qIFVzZXJNZWRpYVByb2Nlc3NNYW5hZ2Vy
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwNzRFNzVG
QjFERjFGRDEzMDBEMzE4RUMgLyogVXNlck1lZGlhUHJvY2Vzc01hbmFnZXIuaCAqLzsgfTsKIAkJ
MDc2RTg4NEUxQTEzQ0FERjAwNUU5MEZDIC8qIEFQSUNvbnRleHRNZW51Q2xpZW50LmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwNzZFODg0RDFBMTNDQURG
MDA1RTkwRkMgLyogQVBJQ29udGV4dE1lbnVDbGllbnQuaCAqLzsgfTsKIAkJMDc3MjgxMUQyMTIz
NEZGNjAwQzhFRjJFIC8qIFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlci5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNEE0MTBGNDMxOUFGN0Iy
NzAwMkVCQUI1IC8qIFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlci5oICovOyB9Owor
CQkwNzkyMzE0ODIzOUNCQ0I4MDA5NTk4RTIgLyogUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJv
eHlNZXNzYWdlc1JlcGxpZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDA3OTIzMTQyMjM5Q0JDQjUwMDk1OThFMiAvKiBSZW1vdGVNZWRpYVBsYXllck1h
bmFnZXJQcm94eU1lc3NhZ2VzUmVwbGllcy5oICovOyB9OworCQkwNzkyMzE0OTIzOUNCQ0I4MDA5
NTk4RTIgLyogUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyTWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3OTIzMTQzMjM5Q0JD
QjYwMDk1OThFMiAvKiBSZW1vdGVNZWRpYVBsYXllck1hbmFnZXJNZXNzYWdlUmVjZWl2ZXIuY3Bw
ICovOyB9OworCQkwNzkyMzE0QTIzOUNCQ0I4MDA5NTk4RTIgLyogUmVtb3RlTWVkaWFQbGF5ZXJN
YW5hZ2VyTWVzc2FnZXNSZXBsaWVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSAwNzkyMzE0NDIzOUNCQ0I2MDA5NTk4RTIgLyogUmVtb3RlTWVkaWFQbGF5
ZXJNYW5hZ2VyTWVzc2FnZXNSZXBsaWVzLmggKi87IH07CisJCTA3OTIzMTRCMjM5Q0JDQjgwMDk1
OThFMiAvKiBSZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eU1lc3NhZ2VSZWNlaXZlci5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwNzkyMzE0NTIz
OUNCQ0I3MDA5NTk4RTIgLyogUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHlNZXNzYWdlUmVj
ZWl2ZXIuY3BwICovOyB9OworCQkwNzkyMzE0QzIzOUNCQ0I4MDA5NTk4RTIgLyogUmVtb3RlTWVk
aWFQbGF5ZXJNYW5hZ2VyUHJveHlNZXNzYWdlcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gMDc5MjMxNDYyMzlDQkNCNzAwOTU5OEUyIC8qIFJlbW90ZU1l
ZGlhUGxheWVyTWFuYWdlclByb3h5TWVzc2FnZXMuaCAqLzsgfTsKKwkJMDc5MjMxNEQyMzlDQkNC
ODAwOTU5OEUyIC8qIFJlbW90ZU1lZGlhUGxheWVyTWFuYWdlck1lc3NhZ2VzLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwNzkyMzE0NzIzOUNCQ0I3MDA5
NTk4RTIgLyogUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyTWVzc2FnZXMuaCAqLzsgfTsKKwkJMDc5
MjMxNEYyMzlENjIzRTAwOTU5OEUyIC8qIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZUlkZW50aWZp
ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3OTIz
MTRFMjM5RDVGNTMwMDk1OThFMiAvKiBNZWRpYVBsYXllclByaXZhdGVSZW1vdGVJZGVudGlmaWVy
LmggKi87IH07CiAJCTA3QTVFQkJDMUM3QkE0M0UwMEI5Q0E2OSAvKiBXS0ZyYW1lSGFuZGxlUmVm
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwN0E1RUJC
QTFDN0JBNDNFMDBCOUNBNjkgLyogV0tGcmFtZUhhbmRsZVJlZi5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTBFOTdENzREMjAwRTkwMDQwMEJGNjY0
MyAvKiBTYWZlQnJvd3NpbmdTUEkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDBFOTdENzRDMjAwRThGRjMwMEJGNjY0MyAvKiBTYWZlQnJvd3NpbmdTUEku
aCAqLzsgfTsKIAkJMEVERTg1MDMyMDA0RTc1RDAwMDMwNTYwIC8qIFdlYnNpdGVQb3BVcFBvbGlj
eS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEVERTg1
MDIyMDA0RTc0OTAwMDMwNTYwIC8qIFdlYnNpdGVQb3BVcFBvbGljeS5oICovOyB9OwpAQCAtMTk5
Niw2ICsyMDAzLDkgQEAKIAkJMDBCOTY2MTUxOEUyNENCQTAwQ0UxRjg4IC8qIEFQSUZpbmRDbGll
bnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQVBJRmluZENsaWVudC5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwMEI5NjYxNzE4RTI1QUUxMDBDRTFGODggLyog
RmluZENsaWVudC5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IEZp
bmRDbGllbnQubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTAwQjk2NjE4MThFMjVB
RTEwMENFMUY4OCAvKiBGaW5kQ2xpZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IEZpbmRDbGllbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMDcyNUVGQUIy
MzlBRTM4NDAwQTUzOEE5IC8qIFJlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5Lm1lc3NhZ2Vz
LmluICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4
dDsgcGF0aCA9IFJlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5Lm1lc3NhZ2VzLmluOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwNzI1RUZBQzIzOUFFMzg1MDBBNTM4QTkgLyogUmVt
b3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVtb3RlTWVkaWFQ
bGF5ZXJNYW5hZ2VyUHJveHkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMDcyNUVG
QUQyMzlCMDI0NTAwQTUzOEE5IC8qIFJlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5LmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IFJlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5LmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMDcyOTdGOUMxQzE3MTFFQTAwM0YwNzM1IC8qIERl
dmljZUlkSGFzaFNhbHRTdG9yYWdlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IERldmljZUlkSGFzaFNhbHRTdG9yYWdlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJMDcyOTdGOUMxQzE3QkJFQTAwM0YwNzM1IC8qIFVzZXJNZWRpYVBlcm1pc3Npb25D
aGVja1Byb3h5LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFVzZXJN
ZWRpYVBlcm1pc3Npb25DaGVja1Byb3h5LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJMDcyOTdGOUQxQzE3QkJFQTAwM0YwNzM1IC8qIFVzZXJNZWRpYVBlcm1pc3Npb25DaGVja1By
b3h5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFVzZXJNZWRpYVBlcm1pc3Np
b25DaGVja1Byb3h5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0yMDEwLDYgKzIw
MjAsMTggQEAKIAkJMDc0RTc2MDExREY3MDc1RDAwRDMxOEVDIC8qIE1lZGlhRGV2aWNlU2FuZGJv
eEV4dGVuc2lvbnMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTWVkaWFEZXZp
Y2VTYW5kYm94RXh0ZW5zaW9ucy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwNzZF
ODg0RDFBMTNDQURGMDA1RTkwRkMgLyogQVBJQ29udGV4dE1lbnVDbGllbnQuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQVBJQ29udGV4dE1lbnVDbGllbnQuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMDc2RTg4NEYxQTEzQ0JDNjAwNUU5MEZDIC8qIEFQSUluamVj
dGVkQnVuZGxlUGFnZUNvbnRleHRNZW51Q2xpZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IEFQSUluamVjdGVkQnVuZGxlUGFnZUNvbnRleHRNZW51Q2xpZW50Lmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTA3OTIzMTMwMjM5QjNCMEMwMDk1OThFMiAvKiBSZW1v
dGVNZWRpYVBsYXllck1hbmFnZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUmVtb3RlTWVkaWFQ
bGF5ZXJNYW5hZ2VyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMDc5MjMxMzEy
MzlCM0IwQzAwOTU5OEUyIC8qIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZS5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBNZWRpYVBsYXllclByaXZhdGVSZW1vdGUuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQkwNzkyMzEzMjIzOUIzQjBDMDA5NTk4RTIgLyogTWVkaWFQbGF5ZXJQcml2
YXRlUmVtb3RlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZS5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwNzkyMzEzMzIzOUIzQjBDMDA5NTk4RTIgLyog
UmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyLm1lc3NhZ2VzLmluICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IFJlbW90ZU1lZGlhUGxh
eWVyTWFuYWdlci5tZXNzYWdlcy5pbjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMDc5
MjMxMzQyMzlCM0IwQzAwOTU5OEUyIC8qIFJlbW90ZU1lZGlhUGxheWVyTWFuYWdlci5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBSZW1vdGVNZWRpYVBsYXllck1hbmFnZXIuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJMDc5MjMxNDIyMzlDQkNCNTAwOTU5OEUyIC8qIFJlbW90ZU1lZGlhUGxheWVy
TWFuYWdlclByb3h5TWVzc2FnZXNSZXBsaWVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IFJlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5TWVzc2FnZXNSZXBsaWVzLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTA3OTIzMTQzMjM5Q0JDQjYwMDk1OThFMiAvKiBS
ZW1vdGVNZWRpYVBsYXllck1hbmFnZXJNZXNzYWdlUmVjZWl2ZXIuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyTWVzc2FnZVJl
Y2VpdmVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMDc5MjMxNDQyMzlDQkNC
NjAwOTU5OEUyIC8qIFJlbW90ZU1lZGlhUGxheWVyTWFuYWdlck1lc3NhZ2VzUmVwbGllcy5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZW1vdGVNZWRpYVBsYXllck1hbmFnZXJN
ZXNzYWdlc1JlcGxpZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMDc5MjMxNDUy
MzlDQkNCNzAwOTU5OEUyIC8qIFJlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5TWVzc2FnZVJl
Y2VpdmVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJlbW90ZU1l
ZGlhUGxheWVyTWFuYWdlclByb3h5TWVzc2FnZVJlY2VpdmVyLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJMDc5MjMxNDYyMzlDQkNCNzAwOTU5OEUyIC8qIFJlbW90ZU1lZGlhUGxh
eWVyTWFuYWdlclByb3h5TWVzc2FnZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHlNZXNzYWdlcy5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQkwNzkyMzE0NzIzOUNCQ0I3MDA5NTk4RTIgLyogUmVtb3RlTWVkaWFQ
bGF5ZXJNYW5hZ2VyTWVzc2FnZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
UmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyTWVzc2FnZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJMDc5MjMxNEUyMzlENUY1MzAwOTU5OEUyIC8qIE1lZGlhUGxheWVyUHJpdmF0ZVJl
bW90ZUlkZW50aWZpZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3Rl
SWRlbnRpZmllci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwN0E1RUJCOTFDN0JB
NDNFMDBCOUNBNjkgLyogV0tGcmFtZUhhbmRsZVJlZi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBXS0ZyYW1lSGFuZGxlUmVmLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJMDdBNUVCQkExQzdCQTQzRTAwQjlDQTY5IC8qIFdLRnJhbWVIYW5kbGVSZWYu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0tGcmFtZUhhbmRsZVJlZi5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwODY3RDZBNUZFODQwMzA3QzAyQUFDMDcgLyog
QXBwS2l0LmZyYW1ld29yayAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25G
aWxlVHlwZSA9IHdyYXBwZXIuZnJhbWV3b3JrOyBuYW1lID0gQXBwS2l0LmZyYW1ld29yazsgcGF0
aCA9IC9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0FwcEtpdC5mcmFtZXdvcms7IHNvdXJjZVRy
ZWUgPSAiPGFic29sdXRlPiI7IH07CkBAIC01MDEwLDYgKzUwMzIsMjkgQEAKIAkJCXRhYldpZHRo
ID0gODsKIAkJCXVzZXNUYWJzID0gMDsKIAkJfTsKKwkJMDc5MjMxMkYyMzlCM0IwQzAwOTU5OEUy
IC8qIG1lZGlhICovID0geworCQkJaXNhID0gUEJYR3JvdXA7CisJCQljaGlsZHJlbiA9ICgKKwkJ
CQkwNzkyMzEzMTIzOUIzQjBDMDA5NTk4RTIgLyogTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlLmNw
cCAqLywKKwkJCQkwNzkyMzEzMjIzOUIzQjBDMDA5NTk4RTIgLyogTWVkaWFQbGF5ZXJQcml2YXRl
UmVtb3RlLmggKi8sCisJCQkJMDc5MjMxNEUyMzlENUY1MzAwOTU5OEUyIC8qIE1lZGlhUGxheWVy
UHJpdmF0ZVJlbW90ZUlkZW50aWZpZXIuaCAqLywKKwkJCQkwNzkyMzEzMDIzOUIzQjBDMDA5NTk4
RTIgLyogUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyLmNwcCAqLywKKwkJCQkwNzkyMzEzNDIzOUIz
QjBDMDA5NTk4RTIgLyogUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyLmggKi8sCisJCQkJMDc5MjMx
MzMyMzlCM0IwQzAwOTU5OEUyIC8qIFJlbW90ZU1lZGlhUGxheWVyTWFuYWdlci5tZXNzYWdlcy5p
biAqLywKKwkJCSk7CisJCQlwYXRoID0gbWVkaWE7CisJCQlzb3VyY2VUcmVlID0gIjxncm91cD4i
OworCQl9OworCQkwN0M3NUMxNzIzOTlBM0RCMDA4OEU2NUIgLyogbWVkaWEgKi8gPSB7CisJCQlp
c2EgPSBQQlhHcm91cDsKKwkJCWNoaWxkcmVuID0gKAorCQkJCTA3MjVFRkFEMjM5QjAyNDUwMEE1
MzhBOSAvKiBSZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eS5jcHAgKi8sCisJCQkJMDcyNUVG
QUMyMzlBRTM4NTAwQTUzOEE5IC8qIFJlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5LmggKi8s
CisJCQkJMDcyNUVGQUIyMzlBRTM4NDAwQTUzOEE5IC8qIFJlbW90ZU1lZGlhUGxheWVyTWFuYWdl
clByb3h5Lm1lc3NhZ2VzLmluICovLAorCQkJKTsKKwkJCXBhdGggPSBtZWRpYTsKKwkJCXNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7CisJCX07CiAJCTA4NjdENjkxRkU4NDAyOEZDMDJBQUMwNyAvKiBX
ZWJLaXQyICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKQEAgLTYx
OTIsNiArNjIzNyw3IEBACiAJCTJEN0U0M0JGMjM3NTJDRDkwMEVBNUNBMCAvKiBHUFUgKi8gPSB7
CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAorCQkJCTA3OTIzMTJGMjM5QjNC
MEMwMDk1OThFMiAvKiBtZWRpYSAqLywKIAkJCQkyRDdFNDNDMDIzNzUyQ0Q5MDBFQTVDQTAgLyog
R1BVUHJvY2Vzc0Nvbm5lY3Rpb24uY3BwICovLAogCQkJCTJEN0U0M0MzMjM3NTJDRDkwMEVBNUNB
MCAvKiBHUFVQcm9jZXNzQ29ubmVjdGlvbi5oICovLAogCQkJCTJEN0U0M0MyMjM3NTJDRDkwMEVB
NUNBMCAvKiBHUFVQcm9jZXNzQ29ubmVjdGlvbi5tZXNzYWdlcy5pbiAqLywKQEAgLTYyMDYsNiAr
NjI1Miw3IEBACiAJCQkJMkQ5RkIyMEQyMzc1MjA5RDAwNDlGOTM2IC8qIEVudHJ5UG9pbnQgKi8s
CiAJCQkJMkQ5RkIyMDQyMzc1MjA5RDAwNDlGOTM2IC8qIGlvcyAqLywKIAkJCQkyRDlGQjIwNjIz
NzUyMDlEMDA0OUY5MzYgLyogbWFjICovLAorCQkJCTA3Qzc1QzE3MjM5OUEzREIwMDg4RTY1QiAv
KiBtZWRpYSAqLywKIAkJCQkyRDlGQjIwQzIzNzUyMDlEMDA0OUY5MzYgLyogR1BVQ29ubmVjdGlv
blRvV2ViUHJvY2Vzcy5jcHAgKi8sCiAJCQkJMkQ5RkIyMDAyMzc1MjA5RDAwNDlGOTM2IC8qIEdQ
VUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaCAqLywKIAkJCQkyRDlGQjIwOTIzNzUyMDlEMDA0OUY5
MzYgLyogR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbiAqLywKQEAgLTkxMTgs
NiArOTE2NSwxMiBAQAogCQkJCTFBOEVGQTZGMTI1MkI4NDEwMEY3MDY3RiAvKiBQbHVnaW5Qcm94
eU1lc3NhZ2VzLmggKi8sCiAJCQkJMEZGMjRBMkIxODc5RTRCQzAwM0FCRjBDIC8qIFJlbW90ZUxh
eWVyVHJlZURyYXdpbmdBcmVhUHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwICovLAogCQkJCTBGRjI0
QTJDMTg3OUU0QkMwMDNBQkYwQyAvKiBSZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYVByb3h5TWVz
c2FnZXMuaCAqLywKKwkJCQkwNzkyMzE0MzIzOUNCQ0I2MDA5NTk4RTIgLyogUmVtb3RlTWVkaWFQ
bGF5ZXJNYW5hZ2VyTWVzc2FnZVJlY2VpdmVyLmNwcCAqLywKKwkJCQkwNzkyMzE0NzIzOUNCQ0I3
MDA5NTk4RTIgLyogUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyTWVzc2FnZXMuaCAqLywKKwkJCQkw
NzkyMzE0NDIzOUNCQ0I2MDA5NTk4RTIgLyogUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyTWVzc2Fn
ZXNSZXBsaWVzLmggKi8sCisJCQkJMDc5MjMxNDUyMzlDQkNCNzAwOTU5OEUyIC8qIFJlbW90ZU1l
ZGlhUGxheWVyTWFuYWdlclByb3h5TWVzc2FnZVJlY2VpdmVyLmNwcCAqLywKKwkJCQkwNzkyMzE0
NjIzOUNCQ0I3MDA5NTk4RTIgLyogUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHlNZXNzYWdl
cy5oICovLAorCQkJCTA3OTIzMTQyMjM5Q0JDQjUwMDk1OThFMiAvKiBSZW1vdGVNZWRpYVBsYXll
ck1hbmFnZXJQcm94eU1lc3NhZ2VzUmVwbGllcy5oICovLAogCQkJCTFBQzEzMzgzMTg1OTBDNDYw
MEYzRUMwNSAvKiBSZW1vdGVPYmplY3RSZWdpc3RyeU1lc3NhZ2VSZWNlaXZlci5jcHAgKi8sCiAJ
CQkJMUFDMTMzODQxODU5MEM0NjAwRjNFQzA1IC8qIFJlbW90ZU9iamVjdFJlZ2lzdHJ5TWVzc2Fn
ZXMuaCAqLywKIAkJCQkwRjU5NDdBNTE4N0I1MTc2MDA0Mzc4NTcgLyogUmVtb3RlU2Nyb2xsaW5n
Q29vcmRpbmF0b3JNZXNzYWdlUmVjZWl2ZXIuY3BwICovLApAQCAtOTgzNSw2ICs5ODg4LDcgQEAK
IAkJCQlCQ0M1NkY3OTExNTk5NTdEMDAxQ0NBRjkgLyogTWFjaFBvcnQuaCBpbiBIZWFkZXJzICov
LAogCQkJCTFBMjRCNUYzMTFGNTMxRTgwMEMzODI2OSAvKiBNYWNoVXRpbGl0aWVzLmggaW4gSGVh
ZGVycyAqLywKIAkJCQlDRTFBMEJENTFBNDhFNkM2MDA1NEVGNzQgLyogTWFuYWdlZENvbmZpZ3Vy
YXRpb25TUEkuaCBpbiBIZWFkZXJzICovLAorCQkJCTA3OTIzMTRGMjM5RDYyM0UwMDk1OThFMiAv
KiBNZWRpYVBsYXllclByaXZhdGVSZW1vdGVJZGVudGlmaWVyLmggaW4gSGVhZGVycyAqLywKIAkJ
CQk1MTkzM0RFRjE5NjVFQjMxMDA4QUMzRUEgLyogTWVudVV0aWxpdGllcy5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJMUFDNEM4MjkxNkI4NzZBOTAwNjlEQ0NEIC8qIE1lc3NhZ2VGbGFncy5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJMUEzRUVEMTIxNjFBNTNENjAwQUVCNEY1IC8qIE1lc3NhZ2VSZWNlaXZl
ci5oIGluIEhlYWRlcnMgKi8sCkBAIC05OTk1LDYgKzEwMDQ5LDEwIEBACiAJCQkJMEZGMjY0QTAx
QTFGRjlDQzAwMUZFNzU5IC8qIFJlbW90ZUxheWVyVHJlZVNjcm9sbGluZ1BlcmZvcm1hbmNlRGF0
YS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUFGMUFDNkMxNjUxNzU5RTAwQzE3RDdGIC8qIFJlbW90
ZUxheWVyVHJlZVRyYW5zYWN0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQkyREMxOEZCMzIxOEE2
RTlFMDAyNUE4OEQgLyogUmVtb3RlTGF5ZXJUcmVlVmlld3MuaCBpbiBIZWFkZXJzICovLAorCQkJ
CTA3OTIzMTREMjM5Q0JDQjgwMDk1OThFMiAvKiBSZW1vdGVNZWRpYVBsYXllck1hbmFnZXJNZXNz
YWdlcy5oIGluIEhlYWRlcnMgKi8sCisJCQkJMDc5MjMxNEEyMzlDQkNCODAwOTU5OEUyIC8qIFJl
bW90ZU1lZGlhUGxheWVyTWFuYWdlck1lc3NhZ2VzUmVwbGllcy5oIGluIEhlYWRlcnMgKi8sCisJ
CQkJMDc5MjMxNEMyMzlDQkNCODAwOTU5OEUyIC8qIFJlbW90ZU1lZGlhUGxheWVyTWFuYWdlclBy
b3h5TWVzc2FnZXMuaCBpbiBIZWFkZXJzICovLAorCQkJCTA3OTIzMTQ4MjM5Q0JDQjgwMDk1OThF
MiAvKiBSZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eU1lc3NhZ2VzUmVwbGllcy5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJRTFCNzg0NzExNjNGMjQ2OTAwMDdCNjkyIC8qIFJlbW90ZU5ldHdvcmtp
bmdDb250ZXh0LmggaW4gSGVhZGVycyAqLywKIAkJCQkxQTU3MDRGQzFCRTE3NTExMDA4NzRBRjEg
LyogUmVtb3RlT2JqZWN0SW52b2NhdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUFDMTMzODAx
ODU5MEFFNDAwRjNFQzA1IC8qIFJlbW90ZU9iamVjdFJlZ2lzdHJ5LmggaW4gSGVhZGVycyAqLywK
QEAgLTExNjUyLDYgKzExNzEwLDggQEAKIAkJCQkyRDcyQTFGQTIxMkJGNDZFMDA1MTdBMjAgLyog
UmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWEubW0gaW4gU291cmNlcyAqLywKIAkJCQkwRkYyNEEy
RDE4NzlFNEJDMDAzQUJGMEMgLyogUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWFQcm94eU1lc3Nh
Z2VSZWNlaXZlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkyREMxOEZCNDIxOEE2RTlFMDAyNUE4
OEQgLyogUmVtb3RlTGF5ZXJUcmVlVmlld3MubW0gaW4gU291cmNlcyAqLywKKwkJCQkwNzkyMzE0
OTIzOUNCQ0I4MDA5NTk4RTIgLyogUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyTWVzc2FnZVJlY2Vp
dmVyLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTA3OTIzMTRCMjM5Q0JDQjgwMDk1OThFMiAvKiBS
ZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eU1lc3NhZ2VSZWNlaXZlci5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQkxQUMxMzM4NTE4NTkwQzQ2MDBGM0VDMDUgLyogUmVtb3RlT2JqZWN0UmVnaXN0
cnlNZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEY1OTQ3QTcxODdCNTE3
NjAwNDM3ODU3IC8qIFJlbW90ZVNjcm9sbGluZ0Nvb3JkaW5hdG9yTWVzc2FnZVJlY2VpdmVyLmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCUE1NUJBODI2MUJBMjVDRkQwMDdDRDMzRCAvKiBSZW1vdGVX
ZWJJbnNwZWN0b3JQcm94eU1lc3NhZ2VSZWNlaXZlci5jcHAgaW4gU291cmNlcyAqLywKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvTWVkaWFQbGF5ZXJQcml2
YXRlUmVtb3RlLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvTWVkaWFQ
bGF5ZXJQcml2YXRlUmVtb3RlLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yN2NlMWMxNzczOTIyOGUwOWY5NDU5
ZDI3MTMxYjNiOTFhYWE5MjkzCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL0dQVS9tZWRpYS9NZWRpYVBsYXllclByaXZhdGVSZW1vdGUuY3BwCkBAIC0wLDAgKzEs
NzYxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
CisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNp
bmNsdWRlICJjb25maWcuaCIKKworI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykKKyNpbmNsdWRlICJN
ZWRpYVBsYXllclByaXZhdGVSZW1vdGUuaCIKKworI2luY2x1ZGUgIkxvZ2dpbmcuaCIKKyNpbmNs
dWRlICJSZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eU1lc3NhZ2VzLmgiCisjaW5jbHVkZSA8
V2ViQ29yZS9Ob3RJbXBsZW1lbnRlZC5oPgorI2luY2x1ZGUgPFdlYkNvcmUvUGxhdGZvcm1MYXll
ci5oPgorI2luY2x1ZGUgPFdlYkNvcmUvUGxhdGZvcm1UaW1lUmFuZ2VzLmg+CisjaW5jbHVkZSA8
d3RmL0hhc2hNYXAuaD4KKyNpbmNsdWRlIDx3dGYvTWFpblRocmVhZC5oPgorI2luY2x1ZGUgPHd0
Zi9TdHJpbmdQcmludFN0cmVhbS5oPgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KKyNpbmNsdWRlIDx3
dGYvdGV4dC9DU3RyaW5nLmg+CisKK25hbWVzcGFjZSBXZWJLaXQgewordXNpbmcgbmFtZXNwYWNl
IFBBTDsKK3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOworCitNZWRpYVBsYXllclByaXZhdGVSZW1v
dGU6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZShNZWRpYVBsYXllciogcGxheWVyLCBjb25zdCBT
dHJpbmcmIHJlbW90ZUVuZ2luZUlkZW50aWZpZXIsIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZUlk
ZW50aWZpZXIgaWRlbnRpZmllciwgUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyJiBtYW5hZ2VyKQor
ICAgIDogbV9wbGF5ZXIocGxheWVyKQorICAgICwgbV9tYW5hZ2VyKG1hbmFnZXIpCisgICAgLCBt
X3JlbW90ZUVuZ2luZUlkZW50aWZpZXIocmVtb3RlRW5naW5lSWRlbnRpZmllcikKKyAgICAsIG1f
aWRlbnRpZmllcihpZGVudGlmaWVyKQorI2lmICFSRUxFQVNFX0xPR19ESVNBQkxFRAorICAgICwg
bV9sb2dnZXIocGxheWVyLT5tZWRpYVBsYXllckxvZ2dlcigpKQorICAgICwgbV9sb2dJZGVudGlm
aWVyKHBsYXllci0+bWVkaWFQbGF5ZXJMb2dJZGVudGlmaWVyKCkpCisjZW5kaWYKK3sKKyAgICBJ
TkZPX0xPRyhMT0dJREVOVElGSUVSKTsKK30KKworTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjp+
TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlKCkKK3sKKyAgICBJTkZPX0xPRyhMT0dJREVOVElGSUVS
KTsKKyAgICBtX3BsYXllciA9IG51bGxwdHI7Cit9CisKK3ZvaWQgTWVkaWFQbGF5ZXJQcml2YXRl
UmVtb3RlOjpNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OmxvYWQoY29uc3QgU3RyaW5nJikKK3sK
KyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCisjaWYgRU5BQkxFKE1FRElBX1NPVVJDRSkKK3Zv
aWQgTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpsb2FkKGNvbnN0IFN0cmluZyYsIE1lZGlhU291
cmNlUHJpdmF0ZUNsaWVudCopCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKyNlbmRpZgor
CisjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKK3ZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3Rl
Ojpsb2FkKE1lZGlhU3RyZWFtUHJpdmF0ZSYpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30K
KyNlbmRpZgordm9pZCBNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OmNhbmNlbExvYWQoKQorewor
ICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKKwordm9pZCBNZWRpYVBsYXllclByaXZhdGVSZW1v
dGU6OnByZXBhcmVUb1BsYXkoKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKK1BsYXRm
b3JtTGF5ZXIqIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6cGxhdGZvcm1MYXllcigpIGNvbnN0
Cit7CisgICAgcmV0dXJuIG51bGxwdHI7Cit9CisKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKSB8
fCAoUExBVEZPUk0oTUFDKSAmJiBFTkFCTEUoVklERU9fUFJFU0VOVEFUSU9OX01PREUpKQordm9p
ZCBNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OnNldFZpZGVvRnVsbHNjcmVlbkxheWVyKFBsYXRm
b3JtTGF5ZXIqLCBXVEY6OkZ1bmN0aW9uPHZvaWQoKT4mJikKK3sKKyAgICBub3RJbXBsZW1lbnRl
ZCgpOworfQorCit2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6dXBkYXRlVmlkZW9GdWxs
c2NyZWVuSW5saW5lSW1hZ2UoKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKK3ZvaWQg
TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpzZXRWaWRlb0Z1bGxzY3JlZW5GcmFtZShGbG9hdFJl
Y3QpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwordm9pZCBNZWRpYVBsYXllclByaXZh
dGVSZW1vdGU6OnNldFZpZGVvRnVsbHNjcmVlbkdyYXZpdHkoTWVkaWFQbGF5ZXI6OlZpZGVvR3Jh
dml0eSkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCit2b2lkIE1lZGlhUGxheWVyUHJp
dmF0ZVJlbW90ZTo6c2V0VmlkZW9GdWxsc2NyZWVuTW9kZShNZWRpYVBsYXllcjo6VmlkZW9GdWxs
c2NyZWVuTW9kZSkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCit2b2lkIE1lZGlhUGxh
eWVyUHJpdmF0ZVJlbW90ZTo6dmlkZW9GdWxsc2NyZWVuU3RhbmRieUNoYW5nZWQoKQoreworICAg
IG5vdEltcGxlbWVudGVkKCk7Cit9CisjZW5kaWYKKworI2lmIFBMQVRGT1JNKElPU19GQU1JTFkp
CitTdHJpbmcgTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjphY2Nlc3NMb2coKSBjb25zdAorewor
ICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIGVtcHR5U3RyaW5nKCk7Cit9CisKK1N0
cmluZyBNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OmVycm9yTG9nKCkgY29uc3QKK3sKKyAgICBu
b3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiBlbXB0eVN0cmluZygpOworfQorI2VuZGlmCisK
K2xvbmcgTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpwbGF0Zm9ybUVycm9yQ29kZSgpIGNvbnN0
Cit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gMDsKK30KKwordm9pZCBNZWRp
YVBsYXllclByaXZhdGVSZW1vdGU6OnBsYXkoKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9
CisKK3ZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpwYXVzZSgpCit7CisgICAgbm90SW1w
bGVtZW50ZWQoKTsKK30KKwordm9pZCBNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OnNldEJ1ZmZl
cmluZ1BvbGljeShNZWRpYVBsYXllcjo6QnVmZmVyaW5nUG9saWN5KQoreworICAgIG5vdEltcGxl
bWVudGVkKCk7Cit9CisKK2Jvb2wgTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpzdXBwb3J0c1Bp
Y3R1cmVJblBpY3R1cmUoKSBjb25zdAoreworICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0
dXJuIGZhbHNlOworfQorCitib29sIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6c3VwcG9ydHNG
dWxsc2NyZWVuKCkgY29uc3QKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiBm
YWxzZTsKK30KKworYm9vbCBNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OnN1cHBvcnRzU2Nhbm5p
bmcoKSBjb25zdAoreworICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIGZhbHNlOwor
fQorCitib29sIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6cmVxdWlyZXNJbW1lZGlhdGVDb21w
b3NpdGluZygpIGNvbnN0Cit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gZmFs
c2U7Cit9CisKK2Jvb2wgTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpjYW5TYXZlTWVkaWFEYXRh
KCkgY29uc3QKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiBmYWxzZTsKK30K
KworRmxvYXRTaXplIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6bmF0dXJhbFNpemUoKSBjb25z
dAoreworICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIHsgfTsKK30KKworYm9vbCBN
ZWRpYVBsYXllclByaXZhdGVSZW1vdGU6Omhhc1ZpZGVvKCkgY29uc3QKK3sKKyAgICBub3RJbXBs
ZW1lbnRlZCgpOworICAgIHJldHVybiBmYWxzZTsKK30KKworYm9vbCBNZWRpYVBsYXllclByaXZh
dGVSZW1vdGU6Omhhc0F1ZGlvKCkgY29uc3QKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAg
IHJldHVybiBmYWxzZTsKK30KKwordm9pZCBNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OnNldFZp
c2libGUoYm9vbCkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCitNZWRpYVRpbWUgTWVk
aWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OmR1cmF0aW9u
TWVkaWFUaW1lKCkgY29uc3QKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiBN
ZWRpYVRpbWU6Onplcm9UaW1lKCk7Cit9CisKK01lZGlhVGltZSBNZWRpYVBsYXllclByaXZhdGVS
ZW1vdGU6OmN1cnJlbnRNZWRpYVRpbWUoKSBjb25zdAoreworICAgIG5vdEltcGxlbWVudGVkKCk7
CisgICAgcmV0dXJuIE1lZGlhVGltZTo6emVyb1RpbWUoKTsKK30KKworTWVkaWFUaW1lIE1lZGlh
UGxheWVyUHJpdmF0ZVJlbW90ZTo6Z2V0U3RhcnREYXRlKCkgY29uc3QKK3sKKyAgICBub3RJbXBs
ZW1lbnRlZCgpOworICAgIHJldHVybiBNZWRpYVRpbWU6Onplcm9UaW1lKCk7Cit9CisKK3ZvaWQg
TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpzZWVrKGNvbnN0IE1lZGlhVGltZSYpCit7CisgICAg
bm90SW1wbGVtZW50ZWQoKTsKK30KKwordm9pZCBNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OnNl
ZWtXaXRoVG9sZXJhbmNlKGNvbnN0IE1lZGlhVGltZSYsIGNvbnN0IE1lZGlhVGltZSYsIGNvbnN0
IE1lZGlhVGltZSYpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKworYm9vbCBNZWRpYVBs
YXllclByaXZhdGVSZW1vdGU6OnNlZWtpbmcoKSBjb25zdAoreworICAgIG5vdEltcGxlbWVudGVk
KCk7CisgICAgcmV0dXJuIGZhbHNlOworfQorCitNZWRpYVRpbWUgTWVkaWFQbGF5ZXJQcml2YXRl
UmVtb3RlOjpzdGFydFRpbWUoKSBjb25zdAoreworICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAg
cmV0dXJuIE1lZGlhVGltZTo6emVyb1RpbWUoKTsKK30KKwordm9pZCBNZWRpYVBsYXllclByaXZh
dGVSZW1vdGU6OnNldFJhdGVEb3VibGUoZG91YmxlKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7
Cit9CisKK2RvdWJsZSBNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OnJhdGUoKSBjb25zdAorewor
ICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIDA7Cit9CisKK3ZvaWQgTWVkaWFQbGF5
ZXJQcml2YXRlUmVtb3RlOjpzZXRQcmVzZXJ2ZXNQaXRjaChib29sKQoreworICAgIG5vdEltcGxl
bWVudGVkKCk7Cit9CisKK2Jvb2wgTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpwYXVzZWQoKSBj
b25zdAoreworICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIGZhbHNlOworfQorCit2
b2lkIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6c2V0Vm9sdW1lRG91YmxlKGRvdWJsZSkKK3sK
KyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCit2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90
ZTo6c2V0TXV0ZWQoYm9vbCkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCitib29sIE1l
ZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6aGFzQ2xvc2VkQ2FwdGlvbnMoKSBjb25zdAoreworICAg
IG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIGZhbHNlOworfQorCit2b2lkIE1lZGlhUGxh
eWVyUHJpdmF0ZVJlbW90ZTo6c2V0Q2xvc2VkQ2FwdGlvbnNWaXNpYmxlKGJvb2wpCit7CisgICAg
bm90SW1wbGVtZW50ZWQoKTsKK30KKworZG91YmxlIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6
bWF4RmFzdEZvcndhcmRSYXRlKCkgY29uc3QKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAg
IHJldHVybiAwOworfQorCitkb3VibGUgTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjptaW5GYXN0
UmV2ZXJzZVJhdGUoKSBjb25zdAoreworICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJu
IDA7Cit9CisKK01lZGlhUGxheWVyOjpOZXR3b3JrU3RhdGUgTWVkaWFQbGF5ZXJQcml2YXRlUmVt
b3RlOjpuZXR3b3JrU3RhdGUoKSBjb25zdAoreworICAgIGlmIChtX2ludmFsaWQpCisgICAgICAg
IHJldHVybiBNZWRpYVBsYXllcjo6Rm9ybWF0RXJyb3I7CisKKyAgICBub3RJbXBsZW1lbnRlZCgp
OworICAgIHJldHVybiBNZWRpYVBsYXllcjo6RW1wdHk7Cit9CisKK01lZGlhUGxheWVyOjpSZWFk
eVN0YXRlIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6cmVhZHlTdGF0ZSgpIGNvbnN0Cit7Cisg
ICAgaWYgKG1faW52YWxpZCkKKyAgICAgICAgcmV0dXJuIE1lZGlhUGxheWVyOjpIYXZlTm90aGlu
ZzsKKworICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIE1lZGlhUGxheWVyOjpIYXZl
Tm90aGluZzsKK30KKworc3RkOjp1bmlxdWVfcHRyPFBsYXRmb3JtVGltZVJhbmdlcz4gTWVkaWFQ
bGF5ZXJQcml2YXRlUmVtb3RlOjpzZWVrYWJsZSgpIGNvbnN0Cit7CisgICAgbm90SW1wbGVtZW50
ZWQoKTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxQbGF0Zm9ybVRpbWVSYW5nZXM+KCk7Cit9CisK
K3N0ZDo6dW5pcXVlX3B0cjxQbGF0Zm9ybVRpbWVSYW5nZXM+IE1lZGlhUGxheWVyUHJpdmF0ZVJl
bW90ZTo6YnVmZmVyZWQoKSBjb25zdAoreworICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0
dXJuIG1ha2VVbmlxdWU8UGxhdGZvcm1UaW1lUmFuZ2VzPigpOworfQorCitNZWRpYVRpbWUgTWVk
aWFQbGF5ZXJQcml2YXRlUmVtb3RlOjptYXhNZWRpYVRpbWVTZWVrYWJsZSgpIGNvbnN0Cit7Cisg
ICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gTWVkaWFUaW1lOjp6ZXJvVGltZSgpOwor
fQorCitNZWRpYVRpbWUgTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjptaW5NZWRpYVRpbWVTZWVr
YWJsZSgpIGNvbnN0Cit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gTWVkaWFU
aW1lOjp6ZXJvVGltZSgpOworfQorCitkb3VibGUgTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpz
ZWVrYWJsZVRpbWVSYW5nZXNMYXN0TW9kaWZpZWRUaW1lKCkgY29uc3QKK3sKKyAgICBub3RJbXBs
ZW1lbnRlZCgpOworICAgIHJldHVybiAwOworfQorCitkb3VibGUgTWVkaWFQbGF5ZXJQcml2YXRl
UmVtb3RlOjpsaXZlVXBkYXRlSW50ZXJ2YWwoKSBjb25zdAoreworICAgIG5vdEltcGxlbWVudGVk
KCk7CisgICAgcmV0dXJuIDA7Cit9CisKK3Vuc2lnbmVkIGxvbmcgbG9uZyBNZWRpYVBsYXllclBy
aXZhdGVSZW1vdGU6OnRvdGFsQnl0ZXMoKSBjb25zdAoreworICAgIG5vdEltcGxlbWVudGVkKCk7
CisgICAgcmV0dXJuIDA7Cit9CisKK2Jvb2wgTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpkaWRM
b2FkaW5nUHJvZ3Jlc3MoKSBjb25zdAoreworICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0
dXJuIGZhbHNlOworfQorCit2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6c2V0U2l6ZShj
b25zdCBJbnRTaXplJikKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCit2b2lkIE1lZGlh
UGxheWVyUHJpdmF0ZVJlbW90ZTo6cGFpbnQoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRS
ZWN0JikKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCit2b2lkIE1lZGlhUGxheWVyUHJp
dmF0ZVJlbW90ZTo6cGFpbnRDdXJyZW50RnJhbWVJbkNvbnRleHQoR3JhcGhpY3NDb250ZXh0Jiwg
Y29uc3QgRmxvYXRSZWN0JikKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCitib29sIE1l
ZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6Y29weVZpZGVvVGV4dHVyZVRvUGxhdGZvcm1UZXh0dXJl
KEdyYXBoaWNzQ29udGV4dDNEKiwgUGxhdGZvcm0zRE9iamVjdCwgR0MzRGVudW0sIEdDM0RpbnQs
IEdDM0RlbnVtLCBHQzNEZW51bSwgR0MzRGVudW0sIGJvb2wsIGJvb2wpCit7CisgICAgbm90SW1w
bGVtZW50ZWQoKTsKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK05hdGl2ZUltYWdlUHRyIE1lZGlh
UGxheWVyUHJpdmF0ZVJlbW90ZTo6bmF0aXZlSW1hZ2VGb3JDdXJyZW50VGltZSgpCit7CisgICAg
bm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gbnVsbHB0cjsKK30KKwordm9pZCBNZWRpYVBs
YXllclByaXZhdGVSZW1vdGU6OnNldFByZWxvYWQoTWVkaWFQbGF5ZXI6OlByZWxvYWQpCit7Cisg
ICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKworYm9vbCBNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6
Omhhc0F2YWlsYWJsZVZpZGVvRnJhbWUoKSBjb25zdAoreworICAgIG5vdEltcGxlbWVudGVkKCk7
CisgICAgcmV0dXJuIGZhbHNlOworfQorCitib29sIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6
Y2FuTG9hZFBvc3RlcigpIGNvbnN0Cit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1
cm4gZmFsc2U7Cit9CisKK3ZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpzZXRQb3N0ZXIo
Y29uc3QgU3RyaW5nJikKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCisjaWYgVVNFKE5B
VElWRV9GVUxMU0NSRUVOX1ZJREVPKQordm9pZCBNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OmVu
dGVyRnVsbHNjcmVlbigpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwordm9pZCBNZWRp
YVBsYXllclByaXZhdGVSZW1vdGU6OmV4aXRGdWxsc2NyZWVuKCkKK3sKKyAgICBub3RJbXBsZW1l
bnRlZCgpOworfQorI2VuZGlmCisKKyNpZiBFTkFCTEUoV0lSRUxFU1NfUExBWUJBQ0tfVEFSR0VU
KQorU3RyaW5nIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6d2lyZWxlc3NQbGF5YmFja1Rhcmdl
dE5hbWUoKSBjb25zdAoreworICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIGVtcHR5
U3RyaW5nKCk7Cit9CisKK01lZGlhUGxheWVyOjpXaXJlbGVzc1BsYXliYWNrVGFyZ2V0VHlwZSBN
ZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OndpcmVsZXNzUGxheWJhY2tUYXJnZXRUeXBlKCkgY29u
c3QKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiBNZWRpYVBsYXllcjo6VGFy
Z2V0VHlwZU5vbmU7Cit9CisKK2Jvb2wgTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjp3aXJlbGVz
c1ZpZGVvUGxheWJhY2tEaXNhYmxlZCgpIGNvbnN0Cit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsK
KyAgICByZXR1cm4gdHJ1ZTsKK30KKwordm9pZCBNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OnNl
dFdpcmVsZXNzVmlkZW9QbGF5YmFja0Rpc2FibGVkKGJvb2wpCit7CisgICAgbm90SW1wbGVtZW50
ZWQoKTsKK30KKworYm9vbCBNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OmNhblBsYXlUb1dpcmVs
ZXNzUGxheWJhY2tUYXJnZXQoKSBjb25zdAoreworICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAg
cmV0dXJuIGZhbHNlOworfQorCitib29sIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6aXNDdXJy
ZW50UGxheWJhY2tUYXJnZXRXaXJlbGVzcygpIGNvbnN0Cit7CisgICAgbm90SW1wbGVtZW50ZWQo
KTsKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK3ZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3Rl
OjpzZXRXaXJlbGVzc1BsYXliYWNrVGFyZ2V0KFJlZjxNZWRpYVBsYXliYWNrVGFyZ2V0PiYmKQor
eworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKK3ZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlUmVt
b3RlOjpzZXRTaG91bGRQbGF5VG9QbGF5YmFja1RhcmdldChib29sKQoreworICAgIG5vdEltcGxl
bWVudGVkKCk7Cit9CisjZW5kaWYKKworI2lmIFVTRShOQVRJVkVfRlVMTFNDUkVFTl9WSURFTykK
K2Jvb2wgTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpjYW5FbnRlckZ1bGxzY3JlZW4oKSBjb25z
dAoreworICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIGZhbHNlOworfQorI2VuZGlm
CisKK2Jvb2wgTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpzdXBwb3J0c0FjY2VsZXJhdGVkUmVu
ZGVyaW5nKCkgY29uc3QKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiBmYWxz
ZTsKK30KKwordm9pZCBNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OmFjY2VsZXJhdGVkUmVuZGVy
aW5nU3RhdGVDaGFuZ2VkKCkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCitib29sIE1l
ZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6c2hvdWxkTWFpbnRhaW5Bc3BlY3RSYXRpbygpIGNvbnN0
Cit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwordm9pZCBN
ZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OnNldFNob3VsZE1haW50YWluQXNwZWN0UmF0aW8oYm9v
bCkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCitib29sIE1lZGlhUGxheWVyUHJpdmF0
ZVJlbW90ZTo6aGFzU2luZ2xlU2VjdXJpdHlPcmlnaW4oKSBjb25zdAoreworICAgIG5vdEltcGxl
bWVudGVkKCk7CisgICAgcmV0dXJuIGZhbHNlOworfQorCitib29sIE1lZGlhUGxheWVyUHJpdmF0
ZVJlbW90ZTo6ZGlkUGFzc0NPUlNBY2Nlc3NDaGVjaygpIGNvbnN0Cit7CisgICAgbm90SW1wbGVt
ZW50ZWQoKTsKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK09wdGlvbmFsPGJvb2w+IE1lZGlhUGxh
eWVyUHJpdmF0ZVJlbW90ZTo6d291bGRUYWludE9yaWdpbihjb25zdCBTZWN1cml0eU9yaWdpbiYp
IGNvbnN0Cit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gV1RGOjpudWxsb3B0
OworfQorCitNZWRpYVBsYXllcjo6TW92aWVMb2FkVHlwZSBNZWRpYVBsYXllclByaXZhdGVSZW1v
dGU6Om1vdmllTG9hZFR5cGUoKSBjb25zdAoreworICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAg
cmV0dXJuIE1lZGlhUGxheWVyOjpVbmtub3duOworfQorCit2b2lkIE1lZGlhUGxheWVyUHJpdmF0
ZVJlbW90ZTo6cHJlcGFyZUZvclJlbmRlcmluZygpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsK
K30KKworTWVkaWFUaW1lIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6bWVkaWFUaW1lRm9yVGlt
ZVZhbHVlKGNvbnN0IE1lZGlhVGltZSYgdGltZVZhbHVlKSBjb25zdAoreworICAgIG5vdEltcGxl
bWVudGVkKCk7CisgICAgcmV0dXJuIHRpbWVWYWx1ZTsKK30KKworZG91YmxlIE1lZGlhUGxheWVy
UHJpdmF0ZVJlbW90ZTo6bWF4aW11bUR1cmF0aW9uVG9DYWNoZU1lZGlhVGltZSgpIGNvbnN0Cit7
CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gMDsKK30KKwordW5zaWduZWQgTWVk
aWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpkZWNvZGVkRnJhbWVDb3VudCgpIGNvbnN0Cit7CisgICAg
bm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gMDsKK30KKwordW5zaWduZWQgTWVkaWFQbGF5
ZXJQcml2YXRlUmVtb3RlOjpkcm9wcGVkRnJhbWVDb3VudCgpIGNvbnN0Cit7CisgICAgbm90SW1w
bGVtZW50ZWQoKTsKKyAgICByZXR1cm4gMDsKK30KKwordW5zaWduZWQgTWVkaWFQbGF5ZXJQcml2
YXRlUmVtb3RlOjphdWRpb0RlY29kZWRCeXRlQ291bnQoKSBjb25zdAoreworICAgIG5vdEltcGxl
bWVudGVkKCk7CisgICAgcmV0dXJuIDA7Cit9CisKK3Vuc2lnbmVkIE1lZGlhUGxheWVyUHJpdmF0
ZVJlbW90ZTo6dmlkZW9EZWNvZGVkQnl0ZUNvdW50KCkgY29uc3QKK3sKKyAgICBub3RJbXBsZW1l
bnRlZCgpOworICAgIHJldHVybiAwOworfQorCit2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90
ZTo6c2V0UHJpdmF0ZUJyb3dzaW5nTW9kZShib29sKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7
Cit9CisKK1N0cmluZyBNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OmVuZ2luZURlc2NyaXB0aW9u
KCkgY29uc3QKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiBlbXB0eVN0cmlu
ZygpOworfQorCisjaWYgRU5BQkxFKFdFQl9BVURJTykKK0F1ZGlvU291cmNlUHJvdmlkZXIqIE1l
ZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6YXVkaW9Tb3VyY2VQcm92aWRlcigpCit7CisgICAgbm90
SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gbnVsbHB0cjsKK30KKyNlbmRpZgorCisjaWYgRU5B
QkxFKExFR0FDWV9FTkNSWVBURURfTUVESUEpCitzdGQ6OnVuaXF1ZV9wdHI8TGVnYWN5Q0RNU2Vz
c2lvbj4gTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpjcmVhdGVTZXNzaW9uKGNvbnN0IFN0cmlu
ZyYsIExlZ2FjeUNETVNlc3Npb25DbGllbnQqKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cisg
ICAgcmV0dXJuIG51bGxwdHI7Cit9CisKK3ZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpz
ZXRDRE1TZXNzaW9uKExlZ2FjeUNETVNlc3Npb24qKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7
Cit9CisKK3ZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjprZXlBZGRlZCgpCit7CisgICAg
bm90SW1wbGVtZW50ZWQoKTsKK30KKyNlbmRpZgorCisjaWYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJ
QSkKK3ZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpjZG1JbnN0YW5jZUF0dGFjaGVkKENE
TUluc3RhbmNlJikKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCit2b2lkIE1lZGlhUGxh
eWVyUHJpdmF0ZVJlbW90ZTo6Y2RtSW5zdGFuY2VEZXRhY2hlZChDRE1JbnN0YW5jZSYpCit7Cisg
ICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwordm9pZCBNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6
OmF0dGVtcHRUb0RlY3J5cHRXaXRoSW5zdGFuY2UoQ0RNSW5zdGFuY2UmKQoreworICAgIG5vdElt
cGxlbWVudGVkKCk7Cit9CisKK2Jvb2wgTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjp3YWl0aW5n
Rm9yS2V5KCkgY29uc3QKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiBmYWxz
ZTsKK30KKyNlbmRpZgorCisjaWYgRU5BQkxFKFZJREVPX1RSQUNLKQorYm9vbCBNZWRpYVBsYXll
clByaXZhdGVSZW1vdGU6OnJlcXVpcmVzVGV4dFRyYWNrUmVwcmVzZW50YXRpb24oKSBjb25zdAor
eworICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIGZhbHNlOworfQorCit2b2lkIE1l
ZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6c2V0VGV4dFRyYWNrUmVwcmVzZW50YXRpb24oVGV4dFRy
YWNrUmVwcmVzZW50YXRpb24qKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKK3ZvaWQg
TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpzeW5jVGV4dFRyYWNrQm91bmRzKCkKK3sKKyAgICBu
b3RJbXBsZW1lbnRlZCgpOworfQorCit2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6dHJh
Y2tzQ2hhbmdlZCgpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKyNlbmRpZgorCisjaWYg
VVNFKEdTVFJFQU1FUikKK3ZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpzaW11bGF0ZUF1
ZGlvSW50ZXJydXB0aW9uKCkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorI2VuZGlmCisK
K3ZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpiZWdpblNpbXVsYXRlZEhEQ1BFcnJvcigp
Cit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwordm9pZCBNZWRpYVBsYXllclByaXZhdGVS
ZW1vdGU6OmVuZFNpbXVsYXRlZEhEQ1BFcnJvcigpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsK
K30KKworU3RyaW5nIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6bGFuZ3VhZ2VPZlByaW1hcnlB
dWRpb1RyYWNrKCkgY29uc3QKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiBl
bXB0eVN0cmluZygpOworfQorCitzaXplX3QgTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpleHRy
YU1lbW9yeUNvc3QoKSBjb25zdAoreworICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJu
IDA7Cit9CisKK3Vuc2lnbmVkIGxvbmcgbG9uZyBNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OmZp
bGVTaXplKCkgY29uc3QKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiAwOwor
fQorCitib29sIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6ZW5kZWQoKSBjb25zdAoreworICAg
IG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIGZhbHNlOworfQorCitPcHRpb25hbDxWaWRl
b1BsYXliYWNrUXVhbGl0eU1ldHJpY3M+IE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6dmlkZW9Q
bGF5YmFja1F1YWxpdHlNZXRyaWNzKCkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJl
dHVybiBXVEY6Om51bGxvcHQ7Cit9CisKKyNpZiBFTkFCTEUoQVZGX0NBUFRJT05TKQordm9pZCBN
ZWRpYVBsYXllclByaXZhdGVSZW1vdGU6Om5vdGlmeVRyYWNrTW9kZUNoYW5nZWQoKQoreworICAg
IG5vdEltcGxlbWVudGVkKCk7Cit9CisjZW5kaWYKKwordm9pZCBNZWRpYVBsYXllclByaXZhdGVS
ZW1vdGU6Om5vdGlmeUFjdGl2ZVNvdXJjZUJ1ZmZlcnNDaGFuZ2VkKCkKK3sKKyAgICBub3RJbXBs
ZW1lbnRlZCgpOworfQorCit2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6c2V0U2hvdWxk
RGlzYWJsZVNsZWVwKGJvb2wpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwordm9pZCBN
ZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OmFwcGxpY2F0aW9uV2lsbFJlc2lnbkFjdGl2ZSgpCit7
CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwordm9pZCBNZWRpYVBsYXllclByaXZhdGVSZW1v
dGU6OmFwcGxpY2F0aW9uRGlkQmVjb21lQWN0aXZlKCkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgp
OworfQorCitib29sIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6cGVyZm9ybVRhc2tBdE1lZGlh
VGltZShXVEY6OkZ1bmN0aW9uPHZvaWQoKT4mJiwgTWVkaWFUaW1lKQoreworICAgIG5vdEltcGxl
bWVudGVkKCk7CisgICAgcmV0dXJuIGZhbHNlOworfQorCitib29sIE1lZGlhUGxheWVyUHJpdmF0
ZVJlbW90ZTo6c2hvdWxkSWdub3JlSW50cmluc2ljU2l6ZSgpCit7CisgICAgbm90SW1wbGVtZW50
ZWQoKTsKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKKyNpZiAhUkVMRUFTRV9MT0dfRElTQUJMRUQK
K1dURkxvZ0NoYW5uZWwmIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6bG9nQ2hhbm5lbCgpIGNv
bnN0Cit7CisgICAgcmV0dXJuIFdlYktpdDJMb2dXZWJSVEM7Cit9CisjZW5kaWYKKworfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9HUFUvbWVkaWEvTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlLmggYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL01lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZS5oCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjI0Yzc3MWY0M2MzNDk2NTRjMjA2MmIyZjFhNjAxNWRiZDFlODcyNGIKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL01lZGlhUGxheWVy
UHJpdmF0ZVJlbW90ZS5oCkBAIC0wLDAgKzEsMjk3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAq
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UK
KyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxFKEdQVV9Q
Uk9DRVNTKQorCisjaW5jbHVkZSAiUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyLmgiCisjaW5jbHVk
ZSA8V2ViQ29yZS9NZWRpYVBsYXllclByaXZhdGUuaD4KKyNpbmNsdWRlIDx3dGYvTG9nZ2VySGVs
cGVyLmg+CisjaW5jbHVkZSA8d3RmL01lZGlhVGltZS5oPgorI2luY2x1ZGUgPHd0Zi9XZWFrUHRy
Lmg+CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBNZWRpYVBsYXllclByaXZhdGVSZW1v
dGUgZmluYWwKKyAgICA6IHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxNZWRpYVBsYXllclByaXZhdGVS
ZW1vdGU+CisgICAgLCBwdWJsaWMgTWVkaWFQbGF5ZXJQcml2YXRlSW50ZXJmYWNlCisjaWYgIVJF
TEVBU0VfTE9HX0RJU0FCTEVECisgICAgLCBwcml2YXRlIExvZ2dlckhlbHBlcgorI2VuZGlmCit7
CitwdWJsaWM6CisgICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxNZWRpYVBsYXllclByaXZhdGVS
ZW1vdGU+IGNyZWF0ZShNZWRpYVBsYXllciogcGxheWVyLCBjb25zdCBTdHJpbmcmIHJlbW90ZUVu
Z2luZUlkZW50aWZpZXIsIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZUlkZW50aWZpZXIgaWRlbnRp
ZmllciwgUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyJiBtYW5hZ2VyKQorICAgIHsKKyAgICAgICAg
cmV0dXJuIG1ha2VVbmlxdWU8TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlPihwbGF5ZXIsIHJlbW90
ZUVuZ2luZUlkZW50aWZpZXIsIGlkZW50aWZpZXIsIG1hbmFnZXIpOworICAgIH0KKworICAgIGV4
cGxpY2l0IE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZShNZWRpYVBsYXllciosIGNvbnN0IFN0cmlu
ZyYsIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZUlkZW50aWZpZXIsIFJlbW90ZU1lZGlhUGxheWVy
TWFuYWdlciYpOworICAgIHZpcnR1YWwgfk1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZSgpOworCisg
ICAgdm9pZCBpbnZhbGlkYXRlKCkgeyBtX2ludmFsaWQgPSB0cnVlOyB9CisKKyNpZiAhUkVMRUFT
RV9MT0dfRElTQUJMRUQKKyAgICBjb25zdCBMb2dnZXImIGxvZ2dlcigpIGNvbnN0IGZpbmFsIHsg
cmV0dXJuIG1fbG9nZ2VyLmdldCgpOyB9CisgICAgY29uc3QgY2hhciogbG9nQ2xhc3NOYW1lKCkg
Y29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gIk1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZSI7IH0KKyAg
ICBjb25zdCB2b2lkKiBsb2dJZGVudGlmaWVyKCkgY29uc3QgZmluYWwgeyByZXR1cm4gcmVpbnRl
cnByZXRfY2FzdDxjb25zdCB2b2lkKj4obV9sb2dJZGVudGlmaWVyKTsgfQorICAgIFdURkxvZ0No
YW5uZWwmIGxvZ0NoYW5uZWwoKSBjb25zdCBmaW5hbDsKKyNlbmRpZgorCitwcml2YXRlOgorCisg
ICAgdm9pZCBsb2FkKGNvbnN0IFN0cmluZyYpIGZpbmFsOworI2lmIEVOQUJMRShNRURJQV9TT1VS
Q0UpCisgICAgdm9pZCBsb2FkKGNvbnN0IFN0cmluZyYsIE1lZGlhU291cmNlUHJpdmF0ZUNsaWVu
dCopIGZpbmFsOworI2VuZGlmCisjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKKyAgICB2b2lkIGxv
YWQoTWVkaWFTdHJlYW1Qcml2YXRlJikgZmluYWw7CisjZW5kaWYKKyAgICB2b2lkIGNhbmNlbExv
YWQoKSBmaW5hbDsKKyAgICAKKyAgICB2b2lkIHByZXBhcmVUb1BsYXkoKSBmaW5hbDsKKyAgICBQ
bGF0Zm9ybUxheWVyKiBwbGF0Zm9ybUxheWVyKCkgY29uc3QgZmluYWw7CisKKyNpZiBQTEFURk9S
TShJT1NfRkFNSUxZKSB8fCAoUExBVEZPUk0oTUFDKSAmJiBFTkFCTEUoVklERU9fUFJFU0VOVEFU
SU9OX01PREUpKQorICAgIHZvaWQgc2V0VmlkZW9GdWxsc2NyZWVuTGF5ZXIoUGxhdGZvcm1MYXll
ciosIFdURjo6RnVuY3Rpb248dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKSBmaW5hbDsKKyAg
ICB2b2lkIHVwZGF0ZVZpZGVvRnVsbHNjcmVlbklubGluZUltYWdlKCkgZmluYWw7CisgICAgdm9p
ZCBzZXRWaWRlb0Z1bGxzY3JlZW5GcmFtZShGbG9hdFJlY3QpIGZpbmFsOworICAgIHZvaWQgc2V0
VmlkZW9GdWxsc2NyZWVuR3Jhdml0eShNZWRpYVBsYXllcjo6VmlkZW9HcmF2aXR5KSBmaW5hbDsK
KyAgICB2b2lkIHNldFZpZGVvRnVsbHNjcmVlbk1vZGUoTWVkaWFQbGF5ZXI6OlZpZGVvRnVsbHNj
cmVlbk1vZGUpIGZpbmFsOworICAgIHZvaWQgdmlkZW9GdWxsc2NyZWVuU3RhbmRieUNoYW5nZWQo
KSBmaW5hbDsKKyNlbmRpZgorCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKKyAgICBOU0FycmF5
ICp0aW1lZE1ldGFkYXRhKCkgY29uc3QgZmluYWw7CisgICAgU3RyaW5nIGFjY2Vzc0xvZygpIGNv
bnN0IGZpbmFsOworICAgIFN0cmluZyBlcnJvckxvZygpIGNvbnN0IGZpbmFsOworI2VuZGlmCisg
ICAgbG9uZyBwbGF0Zm9ybUVycm9yQ29kZSgpIGNvbnN0IGZpbmFsOworCisgICAgdm9pZCBwbGF5
KCkgZmluYWw7CisgICAgdm9pZCBwYXVzZSgpIGZpbmFsOworICAgIHZvaWQgc2V0QnVmZmVyaW5n
UG9saWN5KE1lZGlhUGxheWVyOjpCdWZmZXJpbmdQb2xpY3kpIGZpbmFsOworCisgICAgYm9vbCBz
dXBwb3J0c1BpY3R1cmVJblBpY3R1cmUoKSBjb25zdCBmaW5hbDsKKyAgICBib29sIHN1cHBvcnRz
RnVsbHNjcmVlbigpIGNvbnN0IGZpbmFsOworICAgIGJvb2wgc3VwcG9ydHNTY2FubmluZygpIGNv
bnN0IGZpbmFsOworICAgIGJvb2wgcmVxdWlyZXNJbW1lZGlhdGVDb21wb3NpdGluZygpIGNvbnN0
IGZpbmFsOworCisgICAgYm9vbCBjYW5TYXZlTWVkaWFEYXRhKCkgY29uc3QgZmluYWw7CisKKyAg
ICBGbG9hdFNpemUgbmF0dXJhbFNpemUoKSBjb25zdCBmaW5hbDsKKworICAgIGJvb2wgaGFzVmlk
ZW8oKSBjb25zdCBmaW5hbDsKKyAgICBib29sIGhhc0F1ZGlvKCkgY29uc3QgZmluYWw7CisKKyAg
ICB2b2lkIHNldFZpc2libGUoYm9vbCkgZmluYWw7CisKKyAgICBNZWRpYVRpbWUgZHVyYXRpb25N
ZWRpYVRpbWUoKSBjb25zdCBmaW5hbDsKKyAgICBNZWRpYVRpbWUgY3VycmVudE1lZGlhVGltZSgp
IGNvbnN0IGZpbmFsOworCisgICAgTWVkaWFUaW1lIGdldFN0YXJ0RGF0ZSgpIGNvbnN0IGZpbmFs
OworCisgICAgdm9pZCBzZWVrKGNvbnN0IE1lZGlhVGltZSYpIGZpbmFsOworICAgIHZvaWQgc2Vl
a1dpdGhUb2xlcmFuY2UoY29uc3QgTWVkaWFUaW1lJiwgY29uc3QgTWVkaWFUaW1lJiwgY29uc3Qg
TWVkaWFUaW1lJikgZmluYWw7CisKKyAgICBib29sIHNlZWtpbmcoKSBjb25zdCBmaW5hbDsKKwor
ICAgIE1lZGlhVGltZSBzdGFydFRpbWUoKSBjb25zdCBmaW5hbDsKKworICAgIHZvaWQgc2V0UmF0
ZURvdWJsZShkb3VibGUpIGZpbmFsOworICAgIGRvdWJsZSByYXRlKCkgY29uc3QgZmluYWw7CisK
KyAgICB2b2lkIHNldFByZXNlcnZlc1BpdGNoKGJvb2wpIGZpbmFsOworCisgICAgYm9vbCBwYXVz
ZWQoKSBjb25zdCBmaW5hbDsKKworICAgIHZvaWQgc2V0Vm9sdW1lRG91YmxlKGRvdWJsZSkgZmlu
YWw7CisKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKSB8fCBVU0UoR1NUUkVBTUVSKQorICAgIGZs
b2F0IHZvbHVtZSgpIGNvbnN0IHsgcmV0dXJuIDE7IH0KKyNlbmRpZgorCisgICAgdm9pZCBzZXRN
dXRlZChib29sKSBmaW5hbDsKKworICAgIGJvb2wgaGFzQ2xvc2VkQ2FwdGlvbnMoKSBjb25zdCBm
aW5hbDsKKyAgICB2b2lkIHNldENsb3NlZENhcHRpb25zVmlzaWJsZShib29sKSBmaW5hbDsKKwor
ICAgIGRvdWJsZSBtYXhGYXN0Rm9yd2FyZFJhdGUoKSBjb25zdCBmaW5hbDsKKyAgICBkb3VibGUg
bWluRmFzdFJldmVyc2VSYXRlKCkgY29uc3QgZmluYWw7CisKKyAgICBNZWRpYVBsYXllcjo6TmV0
d29ya1N0YXRlIG5ldHdvcmtTdGF0ZSgpIGNvbnN0IGZpbmFsOworICAgIE1lZGlhUGxheWVyOjpS
ZWFkeVN0YXRlIHJlYWR5U3RhdGUoKSBjb25zdCBmaW5hbDsKKworICAgIHN0ZDo6dW5pcXVlX3B0
cjxQbGF0Zm9ybVRpbWVSYW5nZXM+IHNlZWthYmxlKCkgY29uc3QgZmluYWw7CisKKyAgICBNZWRp
YVRpbWUgbWF4TWVkaWFUaW1lU2Vla2FibGUoKSBjb25zdCBmaW5hbDsKKyAgICBNZWRpYVRpbWUg
bWluTWVkaWFUaW1lU2Vla2FibGUoKSBjb25zdCBmaW5hbDsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8
UGxhdGZvcm1UaW1lUmFuZ2VzPiBidWZmZXJlZCgpIGNvbnN0IGZpbmFsOworICAgIGRvdWJsZSBz
ZWVrYWJsZVRpbWVSYW5nZXNMYXN0TW9kaWZpZWRUaW1lKCkgY29uc3QgZmluYWw7CisgICAgZG91
YmxlIGxpdmVVcGRhdGVJbnRlcnZhbCgpIGNvbnN0IGZpbmFsOworCisgICAgdW5zaWduZWQgbG9u
ZyBsb25nIHRvdGFsQnl0ZXMoKSBjb25zdCBmaW5hbDsKKyAgICBib29sIGRpZExvYWRpbmdQcm9n
cmVzcygpIGNvbnN0IGZpbmFsOworCisgICAgdm9pZCBzZXRTaXplKGNvbnN0IEludFNpemUmKSBm
aW5hbDsKKworICAgIHZvaWQgcGFpbnQoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRSZWN0
JikgZmluYWw7CisKKyAgICB2b2lkIHBhaW50Q3VycmVudEZyYW1lSW5Db250ZXh0KEdyYXBoaWNz
Q29udGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYpIGZpbmFsOworICAgIGJvb2wgY29weVZpZGVvVGV4
dHVyZVRvUGxhdGZvcm1UZXh0dXJlKEdyYXBoaWNzQ29udGV4dDNEKiwgUGxhdGZvcm0zRE9iamVj
dCwgR0MzRGVudW0sIEdDM0RpbnQsIEdDM0RlbnVtLCBHQzNEZW51bSwgR0MzRGVudW0sIGJvb2ws
IGJvb2wpIGZpbmFsOworICAgIE5hdGl2ZUltYWdlUHRyIG5hdGl2ZUltYWdlRm9yQ3VycmVudFRp
bWUoKSBmaW5hbDsKKworICAgIHZvaWQgc2V0UHJlbG9hZChNZWRpYVBsYXllcjo6UHJlbG9hZCkg
ZmluYWw7CisKKyAgICBib29sIGhhc0F2YWlsYWJsZVZpZGVvRnJhbWUoKSBjb25zdCBmaW5hbDsK
KworICAgIGJvb2wgY2FuTG9hZFBvc3RlcigpIGNvbnN0IGZpbmFsOworICAgIHZvaWQgc2V0UG9z
dGVyKGNvbnN0IFN0cmluZyYpIGZpbmFsOworCisjaWYgVVNFKE5BVElWRV9GVUxMU0NSRUVOX1ZJ
REVPKQorICAgIHZvaWQgZW50ZXJGdWxsc2NyZWVuKCkgZmluYWw7CisgICAgdm9pZCBleGl0RnVs
bHNjcmVlbigpIGZpbmFsOworI2VuZGlmCisKKyNpZiBFTkFCTEUoV0lSRUxFU1NfUExBWUJBQ0tf
VEFSR0VUKQorICAgIFN0cmluZyB3aXJlbGVzc1BsYXliYWNrVGFyZ2V0TmFtZSgpIGNvbnN0IGZp
bmFsOworICAgIE1lZGlhUGxheWVyOjpXaXJlbGVzc1BsYXliYWNrVGFyZ2V0VHlwZSB3aXJlbGVz
c1BsYXliYWNrVGFyZ2V0VHlwZSgpIGNvbnN0IGZpbmFsOworCisgICAgYm9vbCB3aXJlbGVzc1Zp
ZGVvUGxheWJhY2tEaXNhYmxlZCgpIGNvbnN0IGZpbmFsOworICAgIHZvaWQgc2V0V2lyZWxlc3NW
aWRlb1BsYXliYWNrRGlzYWJsZWQoYm9vbCkgZmluYWw7CisKKyAgICBib29sIGNhblBsYXlUb1dp
cmVsZXNzUGxheWJhY2tUYXJnZXQoKSBjb25zdCBmaW5hbDsKKyAgICBib29sIGlzQ3VycmVudFBs
YXliYWNrVGFyZ2V0V2lyZWxlc3MoKSBjb25zdCBmaW5hbDsKKyAgICB2b2lkIHNldFdpcmVsZXNz
UGxheWJhY2tUYXJnZXQoUmVmPE1lZGlhUGxheWJhY2tUYXJnZXQ+JiYpIGZpbmFsOworCisgICAg
dm9pZCBzZXRTaG91bGRQbGF5VG9QbGF5YmFja1RhcmdldChib29sKSBmaW5hbDsKKyNlbmRpZgor
CisjaWYgVVNFKE5BVElWRV9GVUxMU0NSRUVOX1ZJREVPKQorICAgIGJvb2wgY2FuRW50ZXJGdWxs
c2NyZWVuKCkgY29uc3QgZmluYWw7CisjZW5kaWYKKworICAgIGJvb2wgc3VwcG9ydHNBY2NlbGVy
YXRlZFJlbmRlcmluZygpIGNvbnN0IGZpbmFsOworICAgIHZvaWQgYWNjZWxlcmF0ZWRSZW5kZXJp
bmdTdGF0ZUNoYW5nZWQoKSBmaW5hbDsKKworICAgIGJvb2wgc2hvdWxkTWFpbnRhaW5Bc3BlY3RS
YXRpbygpIGNvbnN0IGZpbmFsOworICAgIHZvaWQgc2V0U2hvdWxkTWFpbnRhaW5Bc3BlY3RSYXRp
byhib29sKSBmaW5hbDsKKworICAgIGJvb2wgaGFzU2luZ2xlU2VjdXJpdHlPcmlnaW4oKSBjb25z
dCBmaW5hbDsKKyAgICBib29sIGRpZFBhc3NDT1JTQWNjZXNzQ2hlY2soKSBjb25zdCBmaW5hbDsK
KyAgICBPcHRpb25hbDxib29sPiB3b3VsZFRhaW50T3JpZ2luKGNvbnN0IFNlY3VyaXR5T3JpZ2lu
JikgY29uc3QgZmluYWw7CisKKyAgICBNZWRpYVBsYXllcjo6TW92aWVMb2FkVHlwZSBtb3ZpZUxv
YWRUeXBlKCkgY29uc3QgZmluYWw7CisKKyAgICB2b2lkIHByZXBhcmVGb3JSZW5kZXJpbmcoKSBm
aW5hbDsKKworICAgIE1lZGlhVGltZSBtZWRpYVRpbWVGb3JUaW1lVmFsdWUoY29uc3QgTWVkaWFU
aW1lJiB0aW1lVmFsdWUpIGNvbnN0IGZpbmFsOworCisgICAgZG91YmxlIG1heGltdW1EdXJhdGlv
blRvQ2FjaGVNZWRpYVRpbWUoKSBjb25zdCBmaW5hbDsKKworICAgIHVuc2lnbmVkIGRlY29kZWRG
cmFtZUNvdW50KCkgY29uc3QgZmluYWw7CisgICAgdW5zaWduZWQgZHJvcHBlZEZyYW1lQ291bnQo
KSBjb25zdCBmaW5hbDsKKyAgICB1bnNpZ25lZCBhdWRpb0RlY29kZWRCeXRlQ291bnQoKSBjb25z
dCBmaW5hbDsKKyAgICB1bnNpZ25lZCB2aWRlb0RlY29kZWRCeXRlQ291bnQoKSBjb25zdCBmaW5h
bDsKKworICAgIHZvaWQgc2V0UHJpdmF0ZUJyb3dzaW5nTW9kZShib29sKSBmaW5hbDsKKyAgICBT
dHJpbmcgZW5naW5lRGVzY3JpcHRpb24oKSBjb25zdCBmaW5hbDsKKworI2lmIEVOQUJMRShXRUJf
QVVESU8pCisgICAgQXVkaW9Tb3VyY2VQcm92aWRlciogYXVkaW9Tb3VyY2VQcm92aWRlcigpIGZp
bmFsOworI2VuZGlmCisKKyNpZiBFTkFCTEUoTEVHQUNZX0VOQ1JZUFRFRF9NRURJQSkKKyAgICBz
dGQ6OnVuaXF1ZV9wdHI8TGVnYWN5Q0RNU2Vzc2lvbj4gY3JlYXRlU2Vzc2lvbihjb25zdCBTdHJp
bmcmLCBMZWdhY3lDRE1TZXNzaW9uQ2xpZW50KikgZmluYWw7CisgICAgdm9pZCBzZXRDRE1TZXNz
aW9uKExlZ2FjeUNETVNlc3Npb24qKSBmaW5hbDsKKyAgICB2b2lkIGtleUFkZGVkKCkgZmluYWw7
CisjZW5kaWYKKworI2lmIEVOQUJMRShFTkNSWVBURURfTUVESUEpCisgICAgdm9pZCBjZG1JbnN0
YW5jZUF0dGFjaGVkKENETUluc3RhbmNlJikgZmluYWw7CisgICAgdm9pZCBjZG1JbnN0YW5jZURl
dGFjaGVkKENETUluc3RhbmNlJikgZmluYWw7CisgICAgdm9pZCBhdHRlbXB0VG9EZWNyeXB0V2l0
aEluc3RhbmNlKENETUluc3RhbmNlJikgZmluYWw7CisgICAgYm9vbCB3YWl0aW5nRm9yS2V5KCkg
Y29uc3QgZmluYWw7CisjZW5kaWYKKworI2lmIEVOQUJMRShWSURFT19UUkFDSykKKyAgICBib29s
IHJlcXVpcmVzVGV4dFRyYWNrUmVwcmVzZW50YXRpb24oKSBjb25zdCBmaW5hbDsKKyAgICB2b2lk
IHNldFRleHRUcmFja1JlcHJlc2VudGF0aW9uKFRleHRUcmFja1JlcHJlc2VudGF0aW9uKikgZmlu
YWw7CisgICAgdm9pZCBzeW5jVGV4dFRyYWNrQm91bmRzKCkgZmluYWw7CisgICAgdm9pZCB0cmFj
a3NDaGFuZ2VkKCkgZmluYWw7CisjZW5kaWYKKworI2lmIFVTRShHU1RSRUFNRVIpCisgICAgdm9p
ZCBzaW11bGF0ZUF1ZGlvSW50ZXJydXB0aW9uKCkgZmluYWw7CisjZW5kaWYKKworICAgIHZvaWQg
YmVnaW5TaW11bGF0ZWRIRENQRXJyb3IoKSBmaW5hbDsKKyAgICB2b2lkIGVuZFNpbXVsYXRlZEhE
Q1BFcnJvcigpIGZpbmFsOworCisgICAgU3RyaW5nIGxhbmd1YWdlT2ZQcmltYXJ5QXVkaW9UcmFj
aygpIGNvbnN0IGZpbmFsOworCisgICAgc2l6ZV90IGV4dHJhTWVtb3J5Q29zdCgpIGNvbnN0IGZp
bmFsOworCisgICAgdW5zaWduZWQgbG9uZyBsb25nIGZpbGVTaXplKCkgY29uc3QgZmluYWw7CisK
KyAgICBib29sIGVuZGVkKCkgY29uc3QgZmluYWw7CisKKyAgICBPcHRpb25hbDxWaWRlb1BsYXli
YWNrUXVhbGl0eU1ldHJpY3M+IHZpZGVvUGxheWJhY2tRdWFsaXR5TWV0cmljcygpIGZpbmFsOwor
CisjaWYgRU5BQkxFKEFWRl9DQVBUSU9OUykKKyAgICB2b2lkIG5vdGlmeVRyYWNrTW9kZUNoYW5n
ZWQoKSBmaW5hbDsKKyNlbmRpZgorCisgICAgdm9pZCBub3RpZnlBY3RpdmVTb3VyY2VCdWZmZXJz
Q2hhbmdlZCgpIGZpbmFsOworCisgICAgdm9pZCBzZXRTaG91bGREaXNhYmxlU2xlZXAoYm9vbCkg
ZmluYWw7CisKKyAgICB2b2lkIGFwcGxpY2F0aW9uV2lsbFJlc2lnbkFjdGl2ZSgpIGZpbmFsOwor
ICAgIHZvaWQgYXBwbGljYXRpb25EaWRCZWNvbWVBY3RpdmUoKSBmaW5hbDsKKworI2lmIFVTRShB
VkZPVU5EQVRJT04pCisgICAgQVZQbGF5ZXIgKm9iakNBVkZvdW5kYXRpb25BVlBsYXllcigpIGNv
bnN0IGZpbmFsIHsgcmV0dXJuIG51bGxwdHI7IH0KKyNlbmRpZgorCisgICAgYm9vbCBwZXJmb3Jt
VGFza0F0TWVkaWFUaW1lKFdURjo6RnVuY3Rpb248dm9pZCgpPiYmLCBNZWRpYVRpbWUpIGZpbmFs
OworCisgICAgYm9vbCBzaG91bGRJZ25vcmVJbnRyaW5zaWNTaXplKCkgZmluYWw7CisKKyAgICBN
ZWRpYVBsYXllciogbV9wbGF5ZXIgeyBudWxscHRyIH07CisgICAgUmVtb3RlTWVkaWFQbGF5ZXJN
YW5hZ2VyIG1fbWFuYWdlcjsKKyAgICBTdHJpbmcgbV9yZW1vdGVFbmdpbmVJZGVudGlmaWVyOwor
ICAgIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZUlkZW50aWZpZXIgbV9pZGVudGlmaWVyOworCisj
aWYgIVJFTEVBU0VfTE9HX0RJU0FCTEVECisgICAgUmVmPGNvbnN0IExvZ2dlcj4gbV9sb2dnZXI7
CisgICAgY29uc3Qgdm9pZCogbV9sb2dJZGVudGlmaWVyOworI2VuZGlmCisKKyAgICBib29sIG1f
aW52YWxpZCB7IGZhbHNlIH07Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlm
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL01lZGlhUGxh
eWVyUHJpdmF0ZVJlbW90ZUlkZW50aWZpZXIuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9H
UFUvbWVkaWEvTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlSWRlbnRpZmllci5oCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
Ljg3ZTdiOGJiYWVjMzUzNGU3ZGVmZDc4MjM4NjEwMTQzMjE3NTM4YzcKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL01lZGlhUGxheWVyUHJpdmF0
ZVJlbW90ZUlkZW50aWZpZXIuaApAQCAtMCwwICsxLDM1IEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UgLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVU
T1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBD
T05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFn
bWEgb25jZQorCisjaW5jbHVkZSA8d3RmL09iamVjdElkZW50aWZpZXIuaD4KKworbmFtZXNwYWNl
IFdlYktpdCB7CisKK2VudW0gTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlSWRlbnRpZmllclR5cGUg
eyB9OwordXNpbmcgTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlSWRlbnRpZmllciA9IE9iamVjdElk
ZW50aWZpZXI8TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlSWRlbnRpZmllclR5cGU+OworCit9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
R1BVL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyTWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyTWFuYWdlci5jcHAKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uZGQ0OWNkZTNlNzViMTIyMjQzMGJhZGYxNTIzOTE2MjUxOGYyYTZmYgotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlTWVkaWFQbGF5
ZXJNYW5hZ2VyLmNwcApAQCAtMCwwICsxLDIxMyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAx
OSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBg
QVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklC
VVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJj
b25maWcuaCIKKyNpbmNsdWRlICJSZW1vdGVNZWRpYVBsYXllck1hbmFnZXIuaCIKKworI2lmIEVO
QUJMRShHUFVfUFJPQ0VTUykKKworI2luY2x1ZGUgIlJlbW90ZU1lZGlhUGxheWVyTWFuYWdlck1l
c3NhZ2VzLmgiCisjaW5jbHVkZSAiUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHlNZXNzYWdl
cy5oIgorI2luY2x1ZGUgIldlYkNvcmVBcmd1bWVudENvZGVycy5oIgorI2luY2x1ZGUgIldlYlBy
b2Nlc3MuaCIKKyNpbmNsdWRlICJXZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmgiCisjaW5j
bHVkZSA8V2ViQ29yZS9NZWRpYVBsYXllci5oPgorI2luY2x1ZGUgPFdlYkNvcmUvTWVkaWFQbGF5
ZXJFbmdpbmVJZGVudGlmaWVycy5oPgorI2luY2x1ZGUgPFdlYkNvcmUvTm90SW1wbGVtZW50ZWQu
aD4KKyNpbmNsdWRlIDxXZWJDb3JlL1NldHRpbmdzLmg+CisjaW5jbHVkZSA8d3RmL0Fzc2VydGlv
bnMuaD4KKworbmFtZXNwYWNlIFdlYktpdCB7Cit1c2luZyBuYW1lc3BhY2UgUEFMOwordXNpbmcg
bmFtZXNwYWNlIFdlYkNvcmU7CisKK2NsYXNzIE1lZGlhUGxheWVyUmVtb3RlRmFjdG9yeSA6IHB1
YmxpYyBNZWRpYVBsYXllckZhY3RvcnkgeworcHVibGljOgorICAgIE1lZGlhUGxheWVyUmVtb3Rl
RmFjdG9yeShTdHJpbmcgcmVtb3RlRW5naW5lSWRlbnRpZmllciwgUmVtb3RlTWVkaWFQbGF5ZXJN
YW5hZ2VyJiBtYW5hZ2VyKQorICAgICAgICA6IG1fcmVtb3RlRW5naW5lSWRlbnRpZmllcihyZW1v
dGVFbmdpbmVJZGVudGlmaWVyKQorICAgICAgICAsIG1fbWFuYWdlcihtYW5hZ2VyKQorICAgIHsK
KyAgICB9CisKKyAgICBTdHJpbmcgaWRlbnRpZmllcigpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1f
cmVtb3RlRW5naW5lSWRlbnRpZmllcjsgfTsKKworICAgIHN0ZDo6dW5pcXVlX3B0cjxNZWRpYVBs
YXllclByaXZhdGVJbnRlcmZhY2U+IGNyZWF0ZU1lZGlhRW5naW5lUGxheWVyKE1lZGlhUGxheWVy
KiBwbGF5ZXIpIGNvbnN0IGZpbmFsCisgICAgeworICAgICAgICByZXR1cm4gbV9tYW5hZ2VyLmNy
ZWF0ZVJlbW90ZU1lZGlhUGxheWVyKHBsYXllciwgbV9yZW1vdGVFbmdpbmVJZGVudGlmaWVyKTsK
KyAgICB9CisKKyAgICB2b2lkIGdldFN1cHBvcnRlZFR5cGVzKEhhc2hTZXQ8U3RyaW5nLCBBU0NJ
SUNhc2VJbnNlbnNpdGl2ZUhhc2g+JiB0eXBlcykgY29uc3QgZmluYWwKKyAgICB7CisgICAgICAg
IHJldHVybiBtX21hbmFnZXIuZ2V0U3VwcG9ydGVkVHlwZXMobV9yZW1vdGVFbmdpbmVJZGVudGlm
aWVyLCB0eXBlcyk7CisgICAgfQorCisgICAgTWVkaWFQbGF5ZXI6OlN1cHBvcnRzVHlwZSBzdXBw
b3J0c1R5cGVBbmRDb2RlY3MoY29uc3QgTWVkaWFFbmdpbmVTdXBwb3J0UGFyYW1ldGVycyYgcGFy
YW1ldGVycykgY29uc3QgZmluYWwKKyAgICB7CisgICAgICAgIHJldHVybiBtX21hbmFnZXIuc3Vw
cG9ydHNUeXBlQW5kQ29kZWNzKG1fcmVtb3RlRW5naW5lSWRlbnRpZmllciwgcGFyYW1ldGVycyk7
CisgICAgfQorCisgICAgSGFzaFNldDxSZWZQdHI8U2VjdXJpdHlPcmlnaW4+PiBvcmlnaW5zSW5N
ZWRpYUNhY2hlKGNvbnN0IFN0cmluZyYgcGF0aCkgY29uc3QgZmluYWwKKyAgICB7CisgICAgICAg
IHJldHVybiBtX21hbmFnZXIub3JpZ2luc0luTWVkaWFDYWNoZShtX3JlbW90ZUVuZ2luZUlkZW50
aWZpZXIsIHBhdGgpOworICAgIH0KKworICAgIHZvaWQgY2xlYXJNZWRpYUNhY2hlKGNvbnN0IFN0
cmluZyYgcGF0aCwgV2FsbFRpbWUgbW9kaWZpZWRTaW5jZSkgY29uc3QgZmluYWwKKyAgICB7Cisg
ICAgICAgIHJldHVybiBtX21hbmFnZXIuY2xlYXJNZWRpYUNhY2hlKG1fcmVtb3RlRW5naW5lSWRl
bnRpZmllciwgcGF0aCwgbW9kaWZpZWRTaW5jZSk7CisgICAgfQorCisgICAgdm9pZCBjbGVhck1l
ZGlhQ2FjaGVGb3JPcmlnaW5zKGNvbnN0IFN0cmluZyYgcGF0aCwgY29uc3QgSGFzaFNldDxSZWZQ
dHI8U2VjdXJpdHlPcmlnaW4+PiYgb3JpZ2lucykgY29uc3QgZmluYWwKKyAgICB7CisgICAgICAg
IHJldHVybiBtX21hbmFnZXIuY2xlYXJNZWRpYUNhY2hlRm9yT3JpZ2lucyhtX3JlbW90ZUVuZ2lu
ZUlkZW50aWZpZXIsIHBhdGgsIG9yaWdpbnMpOworICAgIH0KKworICAgIGJvb2wgc3VwcG9ydHNL
ZXlTeXN0ZW0oY29uc3QgU3RyaW5nJiBrZXlTeXN0ZW0sIGNvbnN0IFN0cmluZyYgbWltZVR5cGUp
IGNvbnN0IGZpbmFsCisgICAgeworICAgICAgICByZXR1cm4gbV9tYW5hZ2VyLnN1cHBvcnRzS2V5
U3lzdGVtKG1fcmVtb3RlRW5naW5lSWRlbnRpZmllciwga2V5U3lzdGVtLCBtaW1lVHlwZSk7Cisg
ICAgfQorCitwcml2YXRlOgorICAgIFN0cmluZyBtX3JlbW90ZUVuZ2luZUlkZW50aWZpZXI7Cisg
ICAgUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyJiBtX21hbmFnZXI7Cit9OworCitSZW1vdGVNZWRp
YVBsYXllck1hbmFnZXI6OlJlbW90ZU1lZGlhUGxheWVyTWFuYWdlcihXZWJQcm9jZXNzJiBwcm9j
ZXNzKQorICAgIDogbV9wcm9jZXNzKHByb2Nlc3MpCit7CisgICAgbV9wcm9jZXNzLmFkZE1lc3Nh
Z2VSZWNlaXZlcihNZXNzYWdlczo6UmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyOjptZXNzYWdlUmVj
ZWl2ZXJOYW1lKCksICp0aGlzKTsKK30KKworUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyOjp+UmVt
b3RlTWVkaWFQbGF5ZXJNYW5hZ2VyKCkKK3sKKyAgICBtX3Byb2Nlc3MucmVtb3ZlTWVzc2FnZVJl
Y2VpdmVyKE1lc3NhZ2VzOjpSZW1vdGVNZWRpYVBsYXllck1hbmFnZXI6Om1lc3NhZ2VSZWNlaXZl
ck5hbWUoKSk7Cit9CisKK2NvbnN0IGNoYXIqIFJlbW90ZU1lZGlhUGxheWVyTWFuYWdlcjo6c3Vw
cGxlbWVudE5hbWUoKQoreworICAgIHJldHVybiAiUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyIjsK
K30KKwordm9pZCBSZW1vdGVNZWRpYVBsYXllck1hbmFnZXI6OmluaXRpYWxpemUoY29uc3QgV2Vi
UHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycyYpCit7CisvLyBGSVhNRTogVXNlIHBhcmFtZXRlcnMu
bWVkaWFNSU1FVHlwZXMuCit9CisKK3N0ZDo6dW5pcXVlX3B0cjxNZWRpYVBsYXllclByaXZhdGVJ
bnRlcmZhY2U+IFJlbW90ZU1lZGlhUGxheWVyTWFuYWdlcjo6Y3JlYXRlUmVtb3RlTWVkaWFQbGF5
ZXIoTWVkaWFQbGF5ZXIqIHBsYXllciwgY29uc3QgU3RyaW5nJiByZW1vdGVFbmdpbmVJZGVudGlm
aWVyKQoreworICAgIGF1dG8gaWQgPSBNZWRpYVBsYXllclByaXZhdGVSZW1vdGVJZGVudGlmaWVy
OjpnZW5lcmF0ZSgpOworCisgICAgYm9vbCBoYXZlUmVtb3RlUHJveHk7CisgICAgYm9vbCBzZW5k
U3VjY2VlZGVkID0gZ3B1UHJvY2Vzc0Nvbm5lY3Rpb24oKS5zZW5kU3luYyhNZXNzYWdlczo6UmVt
b3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHk6OkNyZWF0ZU1lZGlhUGxheWVyKGlkLCByZW1vdGVF
bmdpbmVJZGVudGlmaWVyKSwgTWVzc2FnZXM6OlJlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5
OjpDcmVhdGVNZWRpYVBsYXllcjo6UmVwbHkoaGF2ZVJlbW90ZVByb3h5KSwgMCk7CisKKyAgICBh
dXRvIHJlbW90ZVBsYXllciA9IE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6Y3JlYXRlKHBsYXll
ciwgcmVtb3RlRW5naW5lSWRlbnRpZmllciwgaWQsICp0aGlzKTsKKworICAgIGlmICghaGF2ZVJl
bW90ZVByb3h5IHx8ICFzZW5kU3VjY2VlZGVkKSB7CisgICAgICAgIFdURkxvZ0Fsd2F5cygiRmFp
bGVkIHRvIGNyZWF0ZSByZW1vdGUgbWVkaWEgcGxheWVyLiIpOworICAgICAgICByZW1vdGVQbGF5
ZXItPmludmFsaWRhdGUoKTsKKyAgICB9CisKKyAgICBtX3BsYXllcnMuYWRkKGlkLCBtYWtlV2Vh
a1B0cigqcmVtb3RlUGxheWVyKSk7CisgICAgcmV0dXJuIHJlbW90ZVBsYXllcjsKK30KKwordm9p
ZCBSZW1vdGVNZWRpYVBsYXllck1hbmFnZXI6OmdldFN1cHBvcnRlZFR5cGVzKGNvbnN0IFN0cmlu
ZyYgcmVtb3RlRW5naW5lSWRlbnRpZmllciwgSGFzaFNldDxTdHJpbmcsIEFTQ0lJQ2FzZUluc2Vu
c2l0aXZlSGFzaD4mIHJlc3VsdCkKK3sKKyAgICAvLyBGSVhNRTogc3VwcG9ydGVkIHR5cGVzIGRv
bid0IGNoYW5nZSwgY2FjaGUgdGhlbS4KKyAgICBWZWN0b3I8U3RyaW5nPiB0eXBlczsKKyAgICBp
ZiAoIWdwdVByb2Nlc3NDb25uZWN0aW9uKCkuc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZU1lZGlh
UGxheWVyTWFuYWdlclByb3h5OjpHZXRTdXBwb3J0ZWRUeXBlcyhyZW1vdGVFbmdpbmVJZGVudGlm
aWVyKSwgTWVzc2FnZXM6OlJlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5OjpHZXRTdXBwb3J0
ZWRUeXBlczo6UmVwbHkodHlwZXMpLCAwKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgcmVzdWx0
ID0gSGFzaFNldDxTdHJpbmcsIEFTQ0lJQ2FzZUluc2Vuc2l0aXZlSGFzaD4oKTsKKyAgICBmb3Ig
KGF1dG8mIHR5cGUgOiB0eXBlcykKKyAgICAgICAgcmVzdWx0LmFkZCh0eXBlKTsKK30KKworV2Vi
Q29yZTo6TWVkaWFQbGF5ZXI6OlN1cHBvcnRzVHlwZSBSZW1vdGVNZWRpYVBsYXllck1hbmFnZXI6
OnN1cHBvcnRzVHlwZUFuZENvZGVjcyhjb25zdCBTdHJpbmcmIHJlbW90ZUVuZ2luZUlkZW50aWZp
ZXIsIGNvbnN0IFdlYkNvcmU6Ok1lZGlhRW5naW5lU3VwcG9ydFBhcmFtZXRlcnMmIHBhcmFtZXRl
cnMpCit7CisgICAgLy8gRklYTUU6IHN1cHBvcnRlZCB0eXBlcyBkb24ndCBjaGFuZ2UsIGNhY2hl
IHRoZW0uCisKKyAgICAvLyBGSVhNRTogY29udmVydCBXZWJDb3JlOjpNZWRpYVBsYXllcjo6U3Vw
cG9ydHNUeXBlIHRvIGVudW0gY2xhc3Mgc28gaXQgY2FuIGJlIGVuY29kZWQgYW5kIHNlbnQgdmlh
IElQQworICAgIGludCByZXN1bHQ7CisgICAgaWYgKCFncHVQcm9jZXNzQ29ubmVjdGlvbigpLnNl
bmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eTo6U3VwcG9ydHNU
eXBlKHJlbW90ZUVuZ2luZUlkZW50aWZpZXIsIHBhcmFtZXRlcnMpLCBNZXNzYWdlczo6UmVtb3Rl
TWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHk6OlN1cHBvcnRzVHlwZTo6UmVwbHkocmVzdWx0KSwgMCkp
CisgICAgICAgIHJldHVybiBNZWRpYVBsYXllcjo6SXNOb3RTdXBwb3J0ZWQ7CisKKyAgICByZXR1
cm4gc3RhdGljX2Nhc3Q8V2ViQ29yZTo6TWVkaWFQbGF5ZXI6OlN1cHBvcnRzVHlwZT4ocmVzdWx0
KTsKK30KKworCitib29sIFJlbW90ZU1lZGlhUGxheWVyTWFuYWdlcjo6c3VwcG9ydHNLZXlTeXN0
ZW0oY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiBrZXlTeXN0ZW0sIGNvbnN0IFN0cmluZyYg
bWltZVR5cGUpCit7CisgICAgcmV0dXJuIGZhbHNlOworfQorCisKK0hhc2hTZXQ8UmVmUHRyPFdl
YkNvcmU6OlNlY3VyaXR5T3JpZ2luPj4gUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyOjpvcmlnaW5z
SW5NZWRpYUNhY2hlKGNvbnN0IFN0cmluZyYgcmVtb3RlRW5naW5lSWRlbnRpZmllciwgY29uc3Qg
U3RyaW5nJiBwYXRoKQoreworICAgIFZlY3RvcjxXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGE+
IG9yaWdpbkRhdGFzOworICAgIGlmICghZ3B1UHJvY2Vzc0Nvbm5lY3Rpb24oKS5zZW5kU3luYyhN
ZXNzYWdlczo6UmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHk6Ok9yaWdpbnNJbk1lZGlhQ2Fj
aGUocmVtb3RlRW5naW5lSWRlbnRpZmllciwgcGF0aCksIE1lc3NhZ2VzOjpSZW1vdGVNZWRpYVBs
YXllck1hbmFnZXJQcm94eTo6T3JpZ2luc0luTWVkaWFDYWNoZTo6UmVwbHkob3JpZ2luRGF0YXMp
LCAwKSkKKyAgICAgICAgcmV0dXJuIHsgfTsKKworICAgIEhhc2hTZXQ8UmVmUHRyPFNlY3VyaXR5
T3JpZ2luPj4gb3JpZ2luczsKKyAgICBmb3IgKGF1dG8mIG9yaWdpbkRhdGEgOiBvcmlnaW5EYXRh
cykKKyAgICAgICAgb3JpZ2lucy5hZGQob3JpZ2luRGF0YS5zZWN1cml0eU9yaWdpbigpKTsKKwor
ICAgIHJldHVybiBvcmlnaW5zOworfQorCit2b2lkIFJlbW90ZU1lZGlhUGxheWVyTWFuYWdlcjo6
Y2xlYXJNZWRpYUNhY2hlKGNvbnN0IFN0cmluZyYgcmVtb3RlRW5naW5lSWRlbnRpZmllciwgY29u
c3QgU3RyaW5nJiBwYXRoLCBXYWxsVGltZSBtb2RpZmllZFNpbmNlKQoreworICAgIGdwdVByb2Nl
c3NDb25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6UmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJv
eHk6OkNsZWFyTWVkaWFDYWNoZShyZW1vdGVFbmdpbmVJZGVudGlmaWVyLCBwYXRoLCBtb2RpZmll
ZFNpbmNlKSwgMCk7Cit9CisKK3ZvaWQgUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyOjpjbGVhck1l
ZGlhQ2FjaGVGb3JPcmlnaW5zKGNvbnN0IFN0cmluZyYgcmVtb3RlRW5naW5lSWRlbnRpZmllciwg
Y29uc3QgU3RyaW5nJiBwYXRoLCBjb25zdCBIYXNoU2V0PFJlZlB0cjxXZWJDb3JlOjpTZWN1cml0
eU9yaWdpbj4+JiBvcmlnaW5zKQoreworICAgIFZlY3RvcjxXZWJDb3JlOjpTZWN1cml0eU9yaWdp
bkRhdGE+IG9yaWdpbkRhdGE7CisgICAgZm9yIChhdXRvJiBvcmlnaW4gOiBvcmlnaW5zKQorICAg
ICAgICBvcmlnaW5EYXRhLmFwcGVuZChvcmlnaW4tPmRhdGEoKSk7CisKKyAgICBncHVQcm9jZXNz
Q29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6OlJlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5
OjpDbGVhck1lZGlhQ2FjaGVGb3JPcmlnaW5zKHJlbW90ZUVuZ2luZUlkZW50aWZpZXIsIHBhdGgs
IG9yaWdpbkRhdGEpLCAwKTsKK30KKwordm9pZCBSZW1vdGVNZWRpYVBsYXllck1hbmFnZXI6Om5l
dHdvcmtTdGF0ZUNoYW5nZWQoTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlSWRlbnRpZmllcikKK3sK
K30KKwordm9pZCBSZW1vdGVNZWRpYVBsYXllck1hbmFnZXI6OnVwZGF0ZVByZWZlcmVuY2VzKGNv
bnN0IFNldHRpbmdzJiBzZXR0aW5ncykKK3sKKyAgICBhdXRvIHJlZ2lzdGVyRW5naW5lID0gW3Ro
aXNdKE1lZGlhRW5naW5lUmVnaXN0cmFyIHJlZ2lzdHJhciwgY29uc3QgU3RyaW5nJiByZW1vdGVF
bmdpbmVJZGVudGlmaWVyKSB7CisgICAgICAgIHJlZ2lzdHJhcihtYWtlVW5pcXVlPE1lZGlhUGxh
eWVyUmVtb3RlRmFjdG9yeT4ocmVtb3RlRW5naW5lSWRlbnRpZmllciwgKnRoaXMpKTsKKyAgICB9
OworCisgICAgUmVtb3RlTWVkaWFQbGF5ZXJTdXBwb3J0OjpzZXRSZWdpc3RlclJlbW90ZVBsYXll
ckNhbGxiYWNrKHNldHRpbmdzLnVzZUdQVVByb2Nlc3NGb3JNZWRpYSgpID8gcmVnaXN0ZXJFbmdp
bmUgOiBzdGQ6OmZ1bmN0aW9uPHZvaWQoTWVkaWFFbmdpbmVSZWdpc3RyYXIsIGNvbnN0IFN0cmlu
ZyYpPiB7IH0pOworfQorCitJUEM6OkNvbm5lY3Rpb24mIFJlbW90ZU1lZGlhUGxheWVyTWFuYWdl
cjo6Z3B1UHJvY2Vzc0Nvbm5lY3Rpb24oKSBjb25zdAoreworICAgIHJldHVybiBXZWJQcm9jZXNz
OjpzaW5nbGV0b24oKS5lbnN1cmVHUFVQcm9jZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rpb24oKTsK
K30KKworfQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9H
UFUvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvR1BVL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyTWFuYWdlci5oCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjM0
YjhiM2QzOTdjZjAwMGNmNGEyOTc4NzQxN2Q2ZWZlNzU5MjZlOTIKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyTWFu
YWdlci5oCkBAIC0wLDAgKzEsODYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycK
KyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisg
KiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lm
IEVOQUJMRShHUFVfUFJPQ0VTUykKKworI2luY2x1ZGUgIk1lZGlhUGxheWVyUHJpdmF0ZVJlbW90
ZUlkZW50aWZpZXIuaCIKKyNpbmNsdWRlICJNZXNzYWdlUmVjZWl2ZXIuaCIKKyNpbmNsdWRlICJT
aGFyZWRNZW1vcnkuaCIKKyNpbmNsdWRlICJXZWJQcm9jZXNzU3VwcGxlbWVudC5oIgorI2luY2x1
ZGUgPFdlYkNvcmUvTWVkaWFQbGF5ZXIuaD4KKyNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgorCitu
YW1lc3BhY2UgV2ViQ29yZSB7CitjbGFzcyBNZWRpYVBsYXllcjsKK2NsYXNzIE1lZGlhUGxheWVy
UHJpdmF0ZUludGVyZmFjZTsKK2NsYXNzIFNldHRpbmdzOworfQorCituYW1lc3BhY2UgV2ViS2l0
IHsKKworY2xhc3MgTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOworY2xhc3MgV2ViUHJvY2VzczsK
KworY2xhc3MgUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyIDogcHVibGljIFdlYlByb2Nlc3NTdXBw
bGVtZW50LCBwdWJsaWMgSVBDOjpNZXNzYWdlUmVjZWl2ZXIgeworICAgIFdURl9NQUtFX0ZBU1Rf
QUxMT0NBVEVEOworcHVibGljOgorICAgIGV4cGxpY2l0IFJlbW90ZU1lZGlhUGxheWVyTWFuYWdl
cihXZWJQcm9jZXNzJik7CisgICAgflJlbW90ZU1lZGlhUGxheWVyTWFuYWdlcigpOworCisgICAg
c3RhdGljIGNvbnN0IGNoYXIqIHN1cHBsZW1lbnROYW1lKCk7CisKKyAgICB2b2lkIHVwZGF0ZVBy
ZWZlcmVuY2VzKGNvbnN0IFdlYkNvcmU6OlNldHRpbmdzJik7CisKKyAgICBJUEM6OkNvbm5lY3Rp
b24mIGdwdVByb2Nlc3NDb25uZWN0aW9uKCkgY29uc3Q7CisKK3ByaXZhdGU6CisgICAgc3RkOjp1
bmlxdWVfcHRyPFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUludGVyZmFjZT4gY3JlYXRlUmVt
b3RlTWVkaWFQbGF5ZXIoV2ViQ29yZTo6TWVkaWFQbGF5ZXIqLCBjb25zdCBTdHJpbmcmKTsKKwor
ICAgIC8vIFdlYlByb2Nlc3NTdXBwbGVtZW50CisgICAgdm9pZCBpbml0aWFsaXplKGNvbnN0IFdl
YlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMmKSBmaW5hbDsKKworICAgIC8vIElQQzo6TWVzc2Fn
ZVJlY2VpdmVyCisgICAgdm9pZCBkaWRSZWNlaXZlTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJ
UEM6OkRlY29kZXImKSBmaW5hbDsKKworICAgIC8vIE1lc3NhZ2VzOjpSZW1vdGVNZWRpYVBsYXll
ck1hbmFnZXIKKyAgICB2b2lkIG5ldHdvcmtTdGF0ZUNoYW5nZWQoTWVkaWFQbGF5ZXJQcml2YXRl
UmVtb3RlSWRlbnRpZmllcik7CisKKyAgICBmcmllbmQgY2xhc3MgTWVkaWFQbGF5ZXJSZW1vdGVG
YWN0b3J5OworICAgIHZvaWQgZ2V0U3VwcG9ydGVkVHlwZXMoY29uc3QgU3RyaW5nJiwgSGFzaFNl
dDxTdHJpbmcsIEFTQ0lJQ2FzZUluc2Vuc2l0aXZlSGFzaD4mKTsKKyAgICBXZWJDb3JlOjpNZWRp
YVBsYXllcjo6U3VwcG9ydHNUeXBlIHN1cHBvcnRzVHlwZUFuZENvZGVjcyhjb25zdCBTdHJpbmcm
LCBjb25zdCBXZWJDb3JlOjpNZWRpYUVuZ2luZVN1cHBvcnRQYXJhbWV0ZXJzJik7CisgICAgYm9v
bCBzdXBwb3J0c0tleVN5c3RlbShjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmIGtleVN5c3Rl
bSwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSk7CisgICAgSGFzaFNldDxSZWZQdHI8V2ViQ29yZTo6
U2VjdXJpdHlPcmlnaW4+PiBvcmlnaW5zSW5NZWRpYUNhY2hlKGNvbnN0IFN0cmluZyYsIGNvbnN0
IFN0cmluZyYpOworICAgIHZvaWQgY2xlYXJNZWRpYUNhY2hlKGNvbnN0IFN0cmluZyYsIGNvbnN0
IFN0cmluZyYsIFdhbGxUaW1lIG1vZGlmaWVkU2luY2UpOworICAgIHZvaWQgY2xlYXJNZWRpYUNh
Y2hlRm9yT3JpZ2lucyhjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmLCBjb25zdCBIYXNoU2V0
PFJlZlB0cjxXZWJDb3JlOjpTZWN1cml0eU9yaWdpbj4+Jik7CisKKyAgICBIYXNoTWFwPE1lZGlh
UGxheWVyUHJpdmF0ZVJlbW90ZUlkZW50aWZpZXIsIFdlYWtQdHI8TWVkaWFQbGF5ZXJQcml2YXRl
UmVtb3RlPj4gbV9wbGF5ZXJzOworICAgIFdlYlByb2Nlc3MmIG1fcHJvY2VzczsKK307CisKK30g
Ly8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyLm1lc3NhZ2VzLmlu
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVNZWRpYVBsYXllck1h
bmFnZXIubWVzc2FnZXMuaW4KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYTkzMzU3YzJiYTg1ZmYxZGRlY2NhMDdjMzAz
OTFmOGUyMDI5MjEyZgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9HUFUvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyLm1lc3NhZ2VzLmluCkBAIC0wLDAg
KzEsMzIgQEAKKyMgQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworIyBhcmUgbWV0OgorIyAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorIyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisjIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyMgICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJ
VFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworIyBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyMgVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorIyBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SIElUUyBDT05UUklCVVRPUlMKKyMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorIyBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorIyBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MKKyMgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyMgQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyMgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRgorIyBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKKyNpZiBFTkFC
TEUoVklERU8pCisKK21lc3NhZ2VzIC0+IFJlbW90ZU1lZGlhUGxheWVyTWFuYWdlciBOb3RSZWZD
b3VudGVkIHsKKworICAgIE5ldHdvcmtTdGF0ZUNoYW5nZWQoV2ViS2l0OjpNZWRpYVBsYXllclBy
aXZhdGVSZW1vdGVJZGVudGlmaWVyIGlkKQorCit9CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvVmlld1VwZGF0ZURpc3BhdGNoZXIuY3BwIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvVmlld1VwZGF0ZURpc3BhdGNoZXIuY3Bw
CmluZGV4IDVjZjQ0NDA3ZTNmYjNmNjdhMDM0NzAwM2QwNDc4ZDc0MTk5MzI0M2YuLjdkMTRkY2Jl
Y2QzMjIzMWRkNDcyNzJjMmM4NzY5ZDUxNTg0YWM0NzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1ZpZXdVcGRhdGVEaXNwYXRjaGVyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9WaWV3VXBkYXRlRGlzcGF0Y2hlci5jcHAKQEAg
LTMxLDYgKzMxLDcgQEAKICNpbmNsdWRlICJWaWV3VXBkYXRlRGlzcGF0Y2hlck1lc3NhZ2VzLmgi
CiAjaW5jbHVkZSAiV2ViUGFnZS5oIgogI2luY2x1ZGUgIldlYlByb2Nlc3MuaCIKKyNpbmNsdWRl
IDxXZWJDb3JlL1BhZ2VJZGVudGlmaWVyLmg+CiAjaW5jbHVkZSA8d3RmL1J1bkxvb3AuaD4KIAog
bmFtZXNwYWNlIFdlYktpdCB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViUGFnZS9XZWJQYWdlLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dl
YlBhZ2UuY3BwCmluZGV4IDNjMmZkMTJjNTg4YTNiN2ZiYjQwM2Q3OTUzNDcwZTViN2MyYTZjMGMu
LjkyMzM5OTk5OWM3ODkzM2I5ODQ3M2QwN2I0YTJiNGUwMGZkYTZiNGYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCkBAIC0zMTIsNiArMzEyLDEwIEBA
CiAjaW5jbHVkZSAiV2ViRGV2aWNlT3JpZW50YXRpb25VcGRhdGVQcm92aWRlci5oIgogI2VuZGlm
CiAKKyNpZiBFTkFCTEUoR1BVX1BST0NFU1MpCisjaW5jbHVkZSAiUmVtb3RlTWVkaWFQbGF5ZXJN
YW5hZ2VyLmgiCisjZW5kaWYKKwogbmFtZXNwYWNlIFdlYktpdCB7CiB1c2luZyBuYW1lc3BhY2Ug
SlNDOwogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CkBAIC0zNjA2LDYgKzM2MTAsMTAgQEAgdm9p
ZCBXZWJQYWdlOjp1cGRhdGVQcmVmZXJlbmNlcyhjb25zdCBXZWJQcmVmZXJlbmNlc1N0b3JlJiBz
dG9yZSkKIAogICAgIGlmIChtX2RyYXdpbmdBcmVhKQogICAgICAgICBtX2RyYXdpbmdBcmVhLT51
cGRhdGVQcmVmZXJlbmNlcyhzdG9yZSk7CisKKyNpZiBFTkFCTEUoR1BVX1BST0NFU1MpCisgICAg
V2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuc3VwcGxlbWVudDxSZW1vdGVNZWRpYVBsYXllck1hbmFn
ZXI+KCktPnVwZGF0ZVByZWZlcmVuY2VzKHNldHRpbmdzKTsKKyNlbmRpZgogfQogCiAjaWYgRU5B
QkxFKERBVEFfREVURUNUSU9OKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYlByb2Nlc3MuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3Bw
CmluZGV4IDA2YjA4ZDc4YmY1ODczNWU4MTc4MGZhMDQxYzBhODc0MWVmMDBlZjkuLjE1MTMyNzFh
YzNmOTc1MTU2Zjk5NDJkYWZkZjBjYzBhOGNkN2UzZDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViUHJvY2Vzcy5jcHAKQEAgLTE2NCw2ICsxNjQsMTAgQEAKICNpbmNsdWRlIDxKYXZhU2Ny
aXB0Q29yZS9SZW1vdGVJbnNwZWN0b3IuaD4KICNlbmRpZgogCisjaWYgRU5BQkxFKEdQVV9QUk9D
RVNTKQorI2luY2x1ZGUgIlJlbW90ZU1lZGlhUGxheWVyTWFuYWdlci5oIgorI2VuZGlmCisKIC8v
IFRoaXMgc2hvdWxkIGJlIGxlc3MgdGhhbiBwbHVnSW5BdXRvU3RhcnRFeHBpcmF0aW9uVGltZVRo
cmVzaG9sZCBpbiBQbHVnSW5BdXRvU3RhcnRQcm92aWRlci4KIHN0YXRpYyBjb25zdCBTZWNvbmRz
IHBsdWdJbkF1dG9TdGFydEV4cGlyYXRpb25UaW1lVXBkYXRlVGhyZXNob2xkIHsgMjkgKiAyNCAq
IDYwICogNjAgfTsKIApAQCAtMjIxLDcgKzIyNSwxMSBAQCBXZWJQcm9jZXNzOjpXZWJQcm9jZXNz
KCkKICNpZiBQTEFURk9STShDT0NPQSkgJiYgRU5BQkxFKE1FRElBX1NUUkVBTSkKICAgICBhZGRT
dXBwbGVtZW50PFVzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyPigpOwogI2VuZGlmCi0gICAgCisKKyNp
ZiBFTkFCTEUoR1BVX1BST0NFU1MpCisgICAgYWRkU3VwcGxlbWVudDxSZW1vdGVNZWRpYVBsYXll
ck1hbmFnZXI+KCk7CisjZW5kaWYKKwogICAgIEdpZ2FjYWdlOjpmb3JiaWREaXNhYmxpbmdQcmlt
aXRpdmVHaWdhY2FnZSgpOwogfQogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>385410</attachid>
            <date>2019-12-11 10:54:14 -0800</date>
            <delta_ts>2019-12-11 11:17:16 -0800</delta_ts>
            <desc>WIP patch</desc>
            <filename>bug-205094-20191211105414.patch</filename>
            <type>text/plain</type>
            <size>154284</size>
            <attacher name="Eric Carlson">eric.carlson</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjUzMzU0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNjE5MDUzNmRmMzEwYTI0
ODBlZTkzZjlkOGUxZGIwMTcwNzRiMGQwMC4uNTQ5YzFiNWRmMGEwZjM4MGRlMWQ5OGJhZjdlZjJl
ZGVkMTUzNjYzNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEwNyBAQAorMjAxOS0xMi0xMCAgRXJp
YyBDYXJsc29uICA8ZXJpYy5jYXJsc29uQGFwcGxlLmNvbT4KKworICAgICAgICBBZGQgaW5mcmFz
dHJ1Y3R1cmUgbmVlZGVkIGZvciBwbGF5aW5nIG1lZGlhIHBsYXllciBpbiB0aGUgR1BVIHByb2Nl
c3MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwNTA5
NAorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNTc4MTUzOTM+CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLCBubyBmdW5jdGlvbmFs
IGNoYW5nZSB5ZXQuCisKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2o6CisgICAgICAgICogcGxhdGZvcm0vQ29udGVudFR5cGUuaDoKKyAgICAgICAgKFdlYkNvcmU6
OkNvbnRlbnRUeXBlOjplbmNvZGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudFR5
cGU6OmRlY29kZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6bnVsbExvZ2dlcik6CisgICAgICAgIChXZWJDb3JlOjpudWxs
Q29udGVudFR5cGVWZWN0b3IpOgorICAgICAgICAoV2ViQ29yZTo6bXV0YWJsZUluc3RhbGxlZE1l
ZGlhRW5naW5lc1ZlY3Rvcik6CisgICAgICAgIChXZWJDb3JlOjpyZWdpc3RlclJlbW90ZVBsYXll
ckNhbGxiYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbW90ZU1lZGlhUGxheWVyU3VwcG9ydDo6
c2V0UmVnaXN0ZXJSZW1vdGVQbGF5ZXJDYWxsYmFjayk6CisgICAgICAgIChXZWJDb3JlOjpidWls
ZE1lZGlhRW5naW5lc1ZlY3Rvcik6CisgICAgICAgIChXZWJDb3JlOjppbnN0YWxsZWRNZWRpYUVu
Z2luZXMpOgorICAgICAgICAoV2ViQ29yZTo6YWRkTWVkaWFFbmdpbmUpOgorICAgICAgICAoV2Vi
Q29yZTo6TWVkaWFQbGF5ZXI6Om1lZGlhRW5naW5lKToKKyAgICAgICAgKFdlYkNvcmU6OmJlc3RN
ZWRpYUVuZ2luZUZvclN1cHBvcnRQYXJhbWV0ZXJzKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlh
UGxheWVyOjpuZXh0TWVkaWFFbmdpbmUpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXI6
OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllcjo6TWVkaWFQbGF5ZXIpOgor
ICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXI6Om5leHRCZXN0TWVkaWFFbmdpbmUpOgorICAg
ICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXI6OmxvYWRXaXRoTmV4dE1lZGlhRW5naW5lKToKKyAg
ICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyOjpnZXRTdXBwb3J0ZWRUeXBlcyk6CisgICAgICAg
IChXZWJDb3JlOjpNZWRpYVBsYXllcjo6b3JpZ2luc0luTWVkaWFDYWNoZSk6CisgICAgICAgIChX
ZWJDb3JlOjpNZWRpYVBsYXllcjo6Y2xlYXJNZWRpYUNhY2hlKToKKyAgICAgICAgKFdlYkNvcmU6
Ok1lZGlhUGxheWVyOjpjbGVhck1lZGlhQ2FjaGVGb3JPcmlnaW5zKToKKyAgICAgICAgKFdlYkNv
cmU6Ok1lZGlhUGxheWVyOjpzdXBwb3J0c0tleVN5c3RlbSk6CisgICAgICAgIChXZWJDb3JlOjpN
ZWRpYVBsYXllcjo6bmV0d29ya1N0YXRlQ2hhbmdlZCk6CisgICAgICAgIChXZWJDb3JlOjpuZXh0
TWVkaWFFbmdpbmUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXI6Om5l
eHRCZXN0TWVkaWFFbmdpbmUgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL01lZGlhUGxheWVyLmg6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYUVuZ2luZVN1cHBv
cnRQYXJhbWV0ZXJzOjplbmNvZGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFFbmdp
bmVTdXBwb3J0UGFyYW1ldGVyczo6ZGVjb2RlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxh
eWVyRmFjdG9yeTo6fk1lZGlhUGxheWVyRmFjdG9yeSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRp
YVBsYXllckZhY3Rvcnk6Om9yaWdpbnNJbk1lZGlhQ2FjaGUgY29uc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6TWVkaWFQbGF5ZXJGYWN0b3J5OjpjbGVhck1lZGlhQ2FjaGUgY29uc3QpOgorICAgICAg
ICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJGYWN0b3J5OjpjbGVhck1lZGlhQ2FjaGVGb3JPcmlnaW5z
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyRmFjdG9yeTo6c3VwcG9ydHNL
ZXlTeXN0ZW0gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXI6OnNldFZpZGVv
RnVsbHNjcmVlbkxheWVyKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVy
OjpzaXplIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyOjpp
bnZhbGlkVGltZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllcjo6cGxh
dGZvcm1Wb2x1bWVDb25maWd1cmF0aW9uUmVxdWlyZWQgY29uc3QpOiBEZWxldGVkLgorICAgICAg
ICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXI6OmNvbnRlbnRNSU1FVHlwZSBjb25zdCk6IERlbGV0ZWQu
CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllcjo6Y29udGVudFR5cGVDb2RlY3MgY29uc3Qp
OiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXI6OmNvbnRlbnRNSU1FVHlw
ZVdhc0luZmVycmVkRnJvbUV4dGVuc2lvbiBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJD
b3JlOjpNZWRpYVBsYXllcjo6bWVkaWFQbGF5ZXJMb2dJZGVudGlmaWVyKTogRGVsZXRlZC4KKyAg
ICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyOjpyZW5kZXJpbmdDYW5CZUFjY2VsZXJhdGVkIGNv
bnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyOjpyZW5kZXJpbmdN
b2RlQ2hhbmdlZCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXll
cjo6YWNjZWxlcmF0ZWRDb21wb3NpdGluZ0VuYWJsZWQpOiBEZWxldGVkLgorICAgICAgICAoV2Vi
Q29yZTo6TWVkaWFQbGF5ZXI6OmFjdGl2ZVNvdXJjZUJ1ZmZlcnNDaGFuZ2VkKTogRGVsZXRlZC4K
KyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyOjpwbGF5ZXJDb250ZW50Qm94UmVjdCBjb25z
dCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllcjo6cGxheWVyQ29udGVu
dHNTY2FsZSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllcjo6
c2hvdWxkVXNlUGVyc2lzdGVudENhY2hlIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNv
cmU6Ok1lZGlhUGxheWVyOjptZWRpYUNhY2hlRGlyZWN0b3J5IGNvbnN0KTogRGVsZXRlZC4KKyAg
ICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyOjppc1ZpZGVvUGxheWVyIGNvbnN0KTogRGVsZXRl
ZC4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyOjptZWRpYUVuZ2luZVVwZGF0ZWQpOiBE
ZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXI6OmlzTG9vcGluZyBjb25zdCk6
IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllcjo6cmVxdWVzdEluc3RhbGxN
aXNzaW5nUGx1Z2lucyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllcjo6
Y2xpZW50IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9NZWRp
YVBsYXllckVuZ2luZUlkZW50aWZpZXJzLmg6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL0NvbnRlbnRUeXBlLmguCisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllckVuZ2lu
ZUlkZW50aWZpZXJzOjphdkZvdW5kYXRpb25FbmdpbmVJZGVudGlmaWVyKToKKyAgICAgICAgKFdl
YkNvcmU6Ok1lZGlhUGxheWVyRW5naW5lSWRlbnRpZmllcnM6OmF2Rm91bmRhdGlvbk1TRUVuZ2lu
ZUlkZW50aWZpZXIpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJFbmdpbmVJZGVudGlm
aWVyczo6YXZGb3VuZGF0aW9uTWVkaWFTdHJlYW1FbmdpbmVJZGVudGlmaWVyKToKKyAgICAgICAg
KFdlYkNvcmU6Ok1lZGlhUGxheWVyRW5naW5lSWRlbnRpZmllcnM6OkdTdHJlYW1lck1lZGlhRW5n
aW5lSWRlbnRpZmllcik6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllckVuZ2luZUlkZW50
aWZpZXJzOjpHU3RyZWFtZXJNU0VNZWRpYUVuZ2luZUlkZW50aWZpZXIpOgorICAgICAgICAoV2Vi
Q29yZTo6TWVkaWFQbGF5ZXJFbmdpbmVJZGVudGlmaWVyczo6aG9sZVB1bmNoTWVkaWFFbmdpbmVJ
ZGVudGlmaWVyKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyRW5naW5lSWRlbnRpZmll
cnM6Ok1lZGlhRm91bmRhdGlvbk1lZGlhRW5naW5lSWRlbnRpZmllcik6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvUGxhdGZvcm1UaW1lUmFuZ2VzLmg6CisgICAgICAgIChXZWJDb3JlOjpQ
bGF0Zm9ybVRpbWVSYW5nZXM6OlBsYXRmb3JtVGltZVJhbmdlcyk6IERlbGV0ZWQuCisgICAgICAg
IChXZWJDb3JlOjpQbGF0Zm9ybVRpbWVSYW5nZXM6Omxlbmd0aCBjb25zdCk6IERlbGV0ZWQuCisg
ICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybVRpbWVSYW5nZXM6OlJhbmdlOjpSYW5nZSk6IERlbGV0
ZWQuCisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybVRpbWVSYW5nZXM6OlJhbmdlOjppc1BvaW50
SW5SYW5nZSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybVRpbWVS
YW5nZXM6OlJhbmdlOjppc092ZXJsYXBwaW5nUmFuZ2UgY29uc3QpOiBEZWxldGVkLgorICAgICAg
ICAoV2ViQ29yZTo6UGxhdGZvcm1UaW1lUmFuZ2VzOjpSYW5nZTo6aXNDb250aWd1b3VzV2l0aFJh
bmdlIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtVGltZVJhbmdl
czo6UmFuZ2U6OnVuaW9uV2l0aE92ZXJsYXBwaW5nT3JDb250aWd1b3VzUmFuZ2UgY29uc3QpOiBE
ZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1UaW1lUmFuZ2VzOjpSYW5nZTo6aXNC
ZWZvcmVSYW5nZSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
YXZmb3VuZGF0aW9uL2NmL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbkNGLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbkNGOjpyZWdpc3Rl
ck1lZGlhRW5naW5lKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24v
b2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLmg6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3Vu
ZGF0aW9uT2JqQy5tbToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUFWRm91
bmRhdGlvbk9iakM6OnJlZ2lzdGVyTWVkaWFFbmdpbmUpOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZG
T2JqQy5tbToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNl
QVZGT2JqQzo6cmVnaXN0ZXJNZWRpYUVuZ2luZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpD
Lm1tOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZP
YmpDOjpyZWdpc3Rlck1lZGlhRW5naW5lKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9n
c3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6cmVnaXN0ZXJNZWRpYUVuZ2luZSk6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL21zZS9NZWRpYVBsYXllclByaXZh
dGVHU3RyZWFtZXJNU0UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRl
R1N0cmVhbWVyTVNFOjpyZWdpc3Rlck1lZGlhRW5naW5lKToKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9ob2xlcHVuY2gvTWVkaWFQbGF5ZXJQcml2YXRlSG9sZVB1bmNoLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUhvbGVQdW5jaDo6cmVnaXN0ZXJNZWRpYUVu
Z2luZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL01lZGlhUGxheWVyUHJpdmF0
ZU1lZGlhRm91bmRhdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZh
dGVNZWRpYUZvdW5kYXRpb246OnJlZ2lzdGVyTWVkaWFFbmdpbmUpOgorICAgICAgICAqIHBsYXRm
b3JtL21vY2svbWVkaWFzb3VyY2UvTW9ja01lZGlhUGxheWVyTWVkaWFTb3VyY2UuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6TW9ja01lZGlhUGxheWVyTWVkaWFTb3VyY2U6OnJlZ2lzdGVyTWVkaWFF
bmdpbmUpOgorCiAyMDE5LTEyLTEwICBQZXIgQXJuZSBWb2xsYW4gIDxwdm9sbGFuQGFwcGxlLmNv
bT4KIAogICAgICAgICBNYWtlIGl0IHBvc3NpYmxlIHRvIGFkZCByZWdyZXNzaW9uIHRlc3RzIGZv
ciBibG9ja2VkIFhQQyBzZXJ2aWNlcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VM
b2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCA3NDM2MWVjYTNiN2Y2OTRlZTIzZDlk
MzY3ODIyYzZkZTViMTg1YjVlLi4xZTM0NzA4MGMwNmE5OGQzNmVhOWI5MzFlZjk4OGQ2NzIxYmUz
NDYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2Vi
S2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDE4NyBAQAorMjAxOS0xMi0xMCAgRXJpYyBDYXJsc29u
ICA8ZXJpYy5jYXJsc29uQGFwcGxlLmNvbT4KKworICAgICAgICBBZGQgaW5mcmFzdHJ1Y3R1cmUg
bmVlZGVkIGZvciBwbGF5aW5nIG1lZGlhIHBsYXllciBpbiB0aGUgR1BVIHByb2Nlc3MKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwNTA5NAorICAgICAg
ICA8cmRhcjovL3Byb2JsZW0vNTc4MTUzOTM+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgKiBEZXJpdmVkU291cmNlcy1pbnB1dC54Y2ZpbGVsaXN0Ogor
ICAgICAgICAqIERlcml2ZWRTb3VyY2VzLW91dHB1dC54Y2ZpbGVsaXN0OgorICAgICAgICAqIERl
cml2ZWRTb3VyY2VzLm1ha2U6CisgICAgICAgICogR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9X
ZWJQcm9jZXNzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6R1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vz
czo6R1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcyk6CisgICAgICAgIChXZWJLaXQ6OkdQVUNvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3M6On5HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzKToKKyAgICAgICAg
KFdlYktpdDo6R1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6ZGlkUmVjZWl2ZU1lc3NhZ2UpOgor
ICAgICAgICAoV2ViS2l0OjpHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpkaWRSZWNlaXZlU3lu
Y01lc3NhZ2UpOgorICAgICAgICAqIEdQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vz
cy5oOgorICAgICAgICAqIEdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2Vy
UHJveHkuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6bnVsbExvZ2dlcik6CisgICAgICAg
IChXZWJLaXQ6OlJlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5OjpQbGF5ZXJQcm94eTo6UGxh
eWVyUHJveHkpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94
eTo6UGxheWVyUHJveHk6On5QbGF5ZXJQcm94eSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZU1l
ZGlhUGxheWVyTWFuYWdlclByb3h5OjpSZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eSk6Cisg
ICAgICAgIChXZWJLaXQ6OlJlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5Ojp+UmVtb3RlTWVk
aWFQbGF5ZXJNYW5hZ2VyUHJveHkpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVNZWRpYVBsYXll
ck1hbmFnZXJQcm94eTo6Y3JlYXRlTWVkaWFQbGF5ZXIpOgorICAgICAgICAoV2ViS2l0OjpSZW1v
dGVNZWRpYVBsYXllck1hbmFnZXJQcm94eTo6Z2V0U3VwcG9ydGVkVHlwZXMpOgorICAgICAgICAo
V2ViS2l0OjpSZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eTo6c3VwcG9ydHNUeXBlKToKKyAg
ICAgICAgKFdlYktpdDo6UmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHk6Om9yaWdpbnNJbk1l
ZGlhQ2FjaGUpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94
eTo6Y2xlYXJNZWRpYUNhY2hlKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTWVkaWFQbGF5ZXJN
YW5hZ2VyUHJveHk6OmNsZWFyTWVkaWFDYWNoZUZvck9yaWdpbnMpOgorICAgICAgICAoV2ViS2l0
OjpSZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eTo6c3VwcG9ydHNLZXlTeXN0ZW0pOgorICAg
ICAgICAqIEdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHkuaDog
QWRkZWQuCisgICAgICAgIChXZWJLaXQ6OlJlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5Ojp3
ZWJQcm9jZXNzQ29ubmVjdGlvbiBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZU1lZGlh
UGxheWVyTWFuYWdlclByb3h5OjpkaWRSZWNlaXZlTWVzc2FnZUZyb21XZWJQcm9jZXNzKToKKyAg
ICAgICAgKFdlYktpdDo6UmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHk6OmRpZFJlY2VpdmVT
eW5jTWVzc2FnZUZyb21XZWJQcm9jZXNzKToKKyAgICAgICAgKiBHUFVQcm9jZXNzL21lZGlhL1Jl
bW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5Lm1lc3NhZ2VzLmluOiBBZGRlZC4KKyAgICAgICAg
KiBTY3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5weToKKyAgICAgICAgKiBTb3VyY2VzLnR4dDoKKyAg
ICAgICAgKiBTb3VyY2VzQ29jb2EudHh0OgorICAgICAgICAqIFdlYktpdC54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL21lZGlhL01lZGlhUGxheWVy
UHJpdmF0ZVJlbW90ZS5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpNZWRpYVBsYXllclBy
aXZhdGVSZW1vdGU6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZSk6CisgICAgICAgIChXZWJLaXQ6
Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6fk1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZSk6Cisg
ICAgICAgIChXZWJLaXQ6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6TWVkaWFQbGF5ZXJQcml2
YXRlUmVtb3RlOjpsb2FkKToKKyAgICAgICAgKFdlYktpdDo6TWVkaWFQbGF5ZXJQcml2YXRlUmVt
b3RlOjpsb2FkKToKKyAgICAgICAgKFdlYktpdDo6TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpj
YW5jZWxMb2FkKToKKyAgICAgICAgKFdlYktpdDo6TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpw
cmVwYXJlVG9QbGF5KToKKyAgICAgICAgKFdlYktpdDo6TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3Rl
OjpwbGF0Zm9ybUxheWVyIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6TWVkaWFQbGF5ZXJQcml2
YXRlUmVtb3RlOjpzZXRWaWRlb0Z1bGxzY3JlZW5MYXllcik6CisgICAgICAgIChXZWJLaXQ6Ok1l
ZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6dXBkYXRlVmlkZW9GdWxsc2NyZWVuSW5saW5lSW1hZ2Up
OgorICAgICAgICAoV2ViS2l0OjpNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OnNldFZpZGVvRnVs
bHNjcmVlbkZyYW1lKToKKyAgICAgICAgKFdlYktpdDo6TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3Rl
OjpzZXRWaWRlb0Z1bGxzY3JlZW5HcmF2aXR5KToKKyAgICAgICAgKFdlYktpdDo6TWVkaWFQbGF5
ZXJQcml2YXRlUmVtb3RlOjpzZXRWaWRlb0Z1bGxzY3JlZW5Nb2RlKToKKyAgICAgICAgKFdlYktp
dDo6TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjp2aWRlb0Z1bGxzY3JlZW5TdGFuZGJ5Q2hhbmdl
ZCk6CisgICAgICAgIChXZWJLaXQ6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6YWNjZXNzTG9n
IGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjplcnJv
ckxvZyBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6
cGxhdGZvcm1FcnJvckNvZGUgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpNZWRpYVBsYXllclBy
aXZhdGVSZW1vdGU6OnBsYXkpOgorICAgICAgICAoV2ViS2l0OjpNZWRpYVBsYXllclByaXZhdGVS
ZW1vdGU6OnBhdXNlKToKKyAgICAgICAgKFdlYktpdDo6TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3Rl
OjpzZXRCdWZmZXJpbmdQb2xpY3kpOgorICAgICAgICAoV2ViS2l0OjpNZWRpYVBsYXllclByaXZh
dGVSZW1vdGU6OnN1cHBvcnRzUGljdHVyZUluUGljdHVyZSBjb25zdCk6CisgICAgICAgIChXZWJL
aXQ6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6c3VwcG9ydHNGdWxsc2NyZWVuIGNvbnN0KToK
KyAgICAgICAgKFdlYktpdDo6TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpzdXBwb3J0c1NjYW5u
aW5nIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpy
ZXF1aXJlc0ltbWVkaWF0ZUNvbXBvc2l0aW5nIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6TWVk
aWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpjYW5TYXZlTWVkaWFEYXRhIGNvbnN0KToKKyAgICAgICAg
KFdlYktpdDo6TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpuYXR1cmFsU2l6ZSBjb25zdCk6Cisg
ICAgICAgIChXZWJLaXQ6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6aGFzVmlkZW8gY29uc3Qp
OgorICAgICAgICAoV2ViS2l0OjpNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6Omhhc0F1ZGlvIGNv
bnN0KToKKyAgICAgICAgKFdlYktpdDo6TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpzZXRWaXNp
YmxlKToKKyAgICAgICAgKFdlYktpdDo6TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpNZWRpYVBs
YXllclByaXZhdGVSZW1vdGU6OmR1cmF0aW9uTWVkaWFUaW1lIGNvbnN0KToKKyAgICAgICAgKFdl
YktpdDo6TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpjdXJyZW50TWVkaWFUaW1lIGNvbnN0KToK
KyAgICAgICAgKFdlYktpdDo6TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpnZXRTdGFydERhdGUg
Y29uc3QpOgorICAgICAgICAoV2ViS2l0OjpNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OnNlZWsp
OgorICAgICAgICAoV2ViS2l0OjpNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OnNlZWtXaXRoVG9s
ZXJhbmNlKToKKyAgICAgICAgKFdlYktpdDo6TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpzZWVr
aW5nIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpz
dGFydFRpbWUgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpNZWRpYVBsYXllclByaXZhdGVSZW1v
dGU6OnNldFJhdGVEb3VibGUpOgorICAgICAgICAoV2ViS2l0OjpNZWRpYVBsYXllclByaXZhdGVS
ZW1vdGU6OnJhdGUgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpNZWRpYVBsYXllclByaXZhdGVS
ZW1vdGU6OnNldFByZXNlcnZlc1BpdGNoKToKKyAgICAgICAgKFdlYktpdDo6TWVkaWFQbGF5ZXJQ
cml2YXRlUmVtb3RlOjpwYXVzZWQgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpNZWRpYVBsYXll
clByaXZhdGVSZW1vdGU6OnNldFZvbHVtZURvdWJsZSk6CisgICAgICAgIChXZWJLaXQ6Ok1lZGlh
UGxheWVyUHJpdmF0ZVJlbW90ZTo6c2V0TXV0ZWQpOgorICAgICAgICAoV2ViS2l0OjpNZWRpYVBs
YXllclByaXZhdGVSZW1vdGU6Omhhc0Nsb3NlZENhcHRpb25zIGNvbnN0KToKKyAgICAgICAgKFdl
YktpdDo6TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpzZXRDbG9zZWRDYXB0aW9uc1Zpc2libGUp
OgorICAgICAgICAoV2ViS2l0OjpNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6Om1heEZhc3RGb3J3
YXJkUmF0ZSBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90
ZTo6bWluRmFzdFJldmVyc2VSYXRlIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6TWVkaWFQbGF5
ZXJQcml2YXRlUmVtb3RlOjpuZXR3b3JrU3RhdGUgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpN
ZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OnJlYWR5U3RhdGUgY29uc3QpOgorICAgICAgICAoV2Vi
S2l0OjpNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OnNlZWthYmxlIGNvbnN0KToKKyAgICAgICAg
KFdlYktpdDo6TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpidWZmZXJlZCBjb25zdCk6CisgICAg
ICAgIChXZWJLaXQ6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6bWF4TWVkaWFUaW1lU2Vla2Fi
bGUgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6Om1p
bk1lZGlhVGltZVNlZWthYmxlIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6TWVkaWFQbGF5ZXJQ
cml2YXRlUmVtb3RlOjpzZWVrYWJsZVRpbWVSYW5nZXNMYXN0TW9kaWZpZWRUaW1lIGNvbnN0KToK
KyAgICAgICAgKFdlYktpdDo6TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpsaXZlVXBkYXRlSW50
ZXJ2YWwgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6
OnRvdGFsQnl0ZXMgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpNZWRpYVBsYXllclByaXZhdGVS
ZW1vdGU6OmRpZExvYWRpbmdQcm9ncmVzcyBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6Ok1lZGlh
UGxheWVyUHJpdmF0ZVJlbW90ZTo6c2V0U2l6ZSk6CisgICAgICAgIChXZWJLaXQ6Ok1lZGlhUGxh
eWVyUHJpdmF0ZVJlbW90ZTo6cGFpbnQpOgorICAgICAgICAoV2ViS2l0OjpNZWRpYVBsYXllclBy
aXZhdGVSZW1vdGU6OnBhaW50Q3VycmVudEZyYW1lSW5Db250ZXh0KToKKyAgICAgICAgKFdlYktp
dDo6TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpjb3B5VmlkZW9UZXh0dXJlVG9QbGF0Zm9ybVRl
eHR1cmUpOgorICAgICAgICAoV2ViS2l0OjpNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6Om5hdGl2
ZUltYWdlRm9yQ3VycmVudFRpbWUpOgorICAgICAgICAoV2ViS2l0OjpNZWRpYVBsYXllclByaXZh
dGVSZW1vdGU6OnNldFByZWxvYWQpOgorICAgICAgICAoV2ViS2l0OjpNZWRpYVBsYXllclByaXZh
dGVSZW1vdGU6Omhhc0F2YWlsYWJsZVZpZGVvRnJhbWUgY29uc3QpOgorICAgICAgICAoV2ViS2l0
OjpNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OmNhbkxvYWRQb3N0ZXIgY29uc3QpOgorICAgICAg
ICAoV2ViS2l0OjpNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OnNldFBvc3Rlcik6CisgICAgICAg
IChXZWJLaXQ6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6ZW50ZXJGdWxsc2NyZWVuKToKKyAg
ICAgICAgKFdlYktpdDo6TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpleGl0RnVsbHNjcmVlbik6
CisgICAgICAgIChXZWJLaXQ6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6d2lyZWxlc3NQbGF5
YmFja1RhcmdldE5hbWUgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpNZWRpYVBsYXllclByaXZh
dGVSZW1vdGU6OndpcmVsZXNzUGxheWJhY2tUYXJnZXRUeXBlIGNvbnN0KToKKyAgICAgICAgKFdl
YktpdDo6TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjp3aXJlbGVzc1ZpZGVvUGxheWJhY2tEaXNh
YmxlZCBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6
c2V0V2lyZWxlc3NWaWRlb1BsYXliYWNrRGlzYWJsZWQpOgorICAgICAgICAoV2ViS2l0OjpNZWRp
YVBsYXllclByaXZhdGVSZW1vdGU6OmNhblBsYXlUb1dpcmVsZXNzUGxheWJhY2tUYXJnZXQgY29u
c3QpOgorICAgICAgICAoV2ViS2l0OjpNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OmlzQ3VycmVu
dFBsYXliYWNrVGFyZ2V0V2lyZWxlc3MgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpNZWRpYVBs
YXllclByaXZhdGVSZW1vdGU6OnNldFdpcmVsZXNzUGxheWJhY2tUYXJnZXQpOgorICAgICAgICAo
V2ViS2l0OjpNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OnNldFNob3VsZFBsYXlUb1BsYXliYWNr
VGFyZ2V0KToKKyAgICAgICAgKFdlYktpdDo6TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpjYW5F
bnRlckZ1bGxzY3JlZW4gY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpNZWRpYVBsYXllclByaXZh
dGVSZW1vdGU6OnN1cHBvcnRzQWNjZWxlcmF0ZWRSZW5kZXJpbmcgY29uc3QpOgorICAgICAgICAo
V2ViS2l0OjpNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OmFjY2VsZXJhdGVkUmVuZGVyaW5nU3Rh
dGVDaGFuZ2VkKToKKyAgICAgICAgKFdlYktpdDo6TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpz
aG91bGRNYWludGFpbkFzcGVjdFJhdGlvIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6TWVkaWFQ
bGF5ZXJQcml2YXRlUmVtb3RlOjpzZXRTaG91bGRNYWludGFpbkFzcGVjdFJhdGlvKToKKyAgICAg
ICAgKFdlYktpdDo6TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpoYXNTaW5nbGVTZWN1cml0eU9y
aWdpbiBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6
ZGlkUGFzc0NPUlNBY2Nlc3NDaGVjayBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6Ok1lZGlhUGxh
eWVyUHJpdmF0ZVJlbW90ZTo6d291bGRUYWludE9yaWdpbiBjb25zdCk6CisgICAgICAgIChXZWJL
aXQ6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6bW92aWVMb2FkVHlwZSBjb25zdCk6CisgICAg
ICAgIChXZWJLaXQ6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6cHJlcGFyZUZvclJlbmRlcmlu
Zyk6CisgICAgICAgIChXZWJLaXQ6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6bWVkaWFUaW1l
Rm9yVGltZVZhbHVlIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6TWVkaWFQbGF5ZXJQcml2YXRl
UmVtb3RlOjptYXhpbXVtRHVyYXRpb25Ub0NhY2hlTWVkaWFUaW1lIGNvbnN0KToKKyAgICAgICAg
KFdlYktpdDo6TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpkZWNvZGVkRnJhbWVDb3VudCBjb25z
dCk6CisgICAgICAgIChXZWJLaXQ6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6ZHJvcHBlZEZy
YW1lQ291bnQgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpNZWRpYVBsYXllclByaXZhdGVSZW1v
dGU6OmF1ZGlvRGVjb2RlZEJ5dGVDb3VudCBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6Ok1lZGlh
UGxheWVyUHJpdmF0ZVJlbW90ZTo6dmlkZW9EZWNvZGVkQnl0ZUNvdW50IGNvbnN0KToKKyAgICAg
ICAgKFdlYktpdDo6TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpzZXRQcml2YXRlQnJvd3NpbmdN
b2RlKToKKyAgICAgICAgKFdlYktpdDo6TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjplbmdpbmVE
ZXNjcmlwdGlvbiBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6Ok1lZGlhUGxheWVyUHJpdmF0ZVJl
bW90ZTo6YXVkaW9Tb3VyY2VQcm92aWRlcik6CisgICAgICAgIChXZWJLaXQ6Ok1lZGlhUGxheWVy
UHJpdmF0ZVJlbW90ZTo6Y3JlYXRlU2Vzc2lvbik6CisgICAgICAgIChXZWJLaXQ6Ok1lZGlhUGxh
eWVyUHJpdmF0ZVJlbW90ZTo6c2V0Q0RNU2Vzc2lvbik6CisgICAgICAgIChXZWJLaXQ6Ok1lZGlh
UGxheWVyUHJpdmF0ZVJlbW90ZTo6a2V5QWRkZWQpOgorICAgICAgICAoV2ViS2l0OjpNZWRpYVBs
YXllclByaXZhdGVSZW1vdGU6OmNkbUluc3RhbmNlQXR0YWNoZWQpOgorICAgICAgICAoV2ViS2l0
OjpNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OmNkbUluc3RhbmNlRGV0YWNoZWQpOgorICAgICAg
ICAoV2ViS2l0OjpNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OmF0dGVtcHRUb0RlY3J5cHRXaXRo
SW5zdGFuY2UpOgorICAgICAgICAoV2ViS2l0OjpNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6Ondh
aXRpbmdGb3JLZXkgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpNZWRpYVBsYXllclByaXZhdGVS
ZW1vdGU6OnJlcXVpcmVzVGV4dFRyYWNrUmVwcmVzZW50YXRpb24gY29uc3QpOgorICAgICAgICAo
V2ViS2l0OjpNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OnNldFRleHRUcmFja1JlcHJlc2VudGF0
aW9uKToKKyAgICAgICAgKFdlYktpdDo6TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpzeW5jVGV4
dFRyYWNrQm91bmRzKToKKyAgICAgICAgKFdlYktpdDo6TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3Rl
Ojp0cmFja3NDaGFuZ2VkKToKKyAgICAgICAgKFdlYktpdDo6TWVkaWFQbGF5ZXJQcml2YXRlUmVt
b3RlOjpzaW11bGF0ZUF1ZGlvSW50ZXJydXB0aW9uKToKKyAgICAgICAgKFdlYktpdDo6TWVkaWFQ
bGF5ZXJQcml2YXRlUmVtb3RlOjpiZWdpblNpbXVsYXRlZEhEQ1BFcnJvcik6CisgICAgICAgIChX
ZWJLaXQ6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6ZW5kU2ltdWxhdGVkSERDUEVycm9yKToK
KyAgICAgICAgKFdlYktpdDo6TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpsYW5ndWFnZU9mUHJp
bWFyeUF1ZGlvVHJhY2sgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpNZWRpYVBsYXllclByaXZh
dGVSZW1vdGU6OmV4dHJhTWVtb3J5Q29zdCBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6Ok1lZGlh
UGxheWVyUHJpdmF0ZVJlbW90ZTo6ZmlsZVNpemUgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpN
ZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OmVuZGVkIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6
TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjp2aWRlb1BsYXliYWNrUXVhbGl0eU1ldHJpY3MpOgor
ICAgICAgICAoV2ViS2l0OjpNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6Om5vdGlmeVRyYWNrTW9k
ZUNoYW5nZWQpOgorICAgICAgICAoV2ViS2l0OjpNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6Om5v
dGlmeUFjdGl2ZVNvdXJjZUJ1ZmZlcnNDaGFuZ2VkKToKKyAgICAgICAgKFdlYktpdDo6TWVkaWFQ
bGF5ZXJQcml2YXRlUmVtb3RlOjpzZXRTaG91bGREaXNhYmxlU2xlZXApOgorICAgICAgICAoV2Vi
S2l0OjpNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OmFwcGxpY2F0aW9uV2lsbFJlc2lnbkFjdGl2
ZSk6CisgICAgICAgIChXZWJLaXQ6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6YXBwbGljYXRp
b25EaWRCZWNvbWVBY3RpdmUpOgorICAgICAgICAoV2ViS2l0OjpNZWRpYVBsYXllclByaXZhdGVS
ZW1vdGU6OnBlcmZvcm1UYXNrQXRNZWRpYVRpbWUpOgorICAgICAgICAoV2ViS2l0OjpNZWRpYVBs
YXllclByaXZhdGVSZW1vdGU6OnNob3VsZElnbm9yZUludHJpbnNpY1NpemUpOgorICAgICAgICAo
V2ViS2l0OjpNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OmxvZ0NoYW5uZWwgY29uc3QpOgorICAg
ICAgICAqIFdlYlByb2Nlc3MvR1BVL21lZGlhL01lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZS5oOiBB
ZGRlZC4KKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9tZWRpYS9NZWRpYVBsYXllclByaXZhdGVS
ZW1vdGVJZGVudGlmaWVyLmg6IEFkZGVkLgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL21lZGlh
L1JlbW90ZU1lZGlhUGxheWVyTWFuYWdlci5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpN
ZWRpYVBsYXllclJlbW90ZUZhY3Rvcnk6Ok1lZGlhUGxheWVyUmVtb3RlRmFjdG9yeSk6CisgICAg
ICAgIChXZWJLaXQ6OlJlbW90ZU1lZGlhUGxheWVyTWFuYWdlcjo6UmVtb3RlTWVkaWFQbGF5ZXJN
YW5hZ2VyKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyOjp+UmVt
b3RlTWVkaWFQbGF5ZXJNYW5hZ2VyKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTWVkaWFQbGF5
ZXJNYW5hZ2VyOjpzdXBwbGVtZW50TmFtZSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZU1lZGlh
UGxheWVyTWFuYWdlcjo6aW5pdGlhbGl6ZSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZU1lZGlh
UGxheWVyTWFuYWdlcjo6Y3JlYXRlUmVtb3RlTWVkaWFQbGF5ZXIpOgorICAgICAgICAoV2ViS2l0
OjpSZW1vdGVNZWRpYVBsYXllck1hbmFnZXI6OmdldFN1cHBvcnRlZFR5cGVzKToKKyAgICAgICAg
KFdlYktpdDo6UmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyOjpzdXBwb3J0c1R5cGVBbmRDb2RlY3Mp
OgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVNZWRpYVBsYXllck1hbmFnZXI6OnN1cHBvcnRzS2V5
U3lzdGVtKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyOjpvcmln
aW5zSW5NZWRpYUNhY2hlKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTWVkaWFQbGF5ZXJNYW5h
Z2VyOjpjbGVhck1lZGlhQ2FjaGUpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVNZWRpYVBsYXll
ck1hbmFnZXI6OmNsZWFyTWVkaWFDYWNoZUZvck9yaWdpbnMpOgorICAgICAgICAoV2ViS2l0OjpS
ZW1vdGVNZWRpYVBsYXllck1hbmFnZXI6Om5ldHdvcmtTdGF0ZUNoYW5nZWQpOgorICAgICAgICAo
V2ViS2l0OjpSZW1vdGVNZWRpYVBsYXllck1hbmFnZXI6OnVwZGF0ZVByZWZlcmVuY2VzKToKKyAg
ICAgICAgKFdlYktpdDo6UmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyOjpncHVQcm9jZXNzQ29ubmVj
dGlvbiBjb25zdCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlTWVkaWFQ
bGF5ZXJNYW5hZ2VyLmg6IEFkZGVkLgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL21lZGlhL1Jl
bW90ZU1lZGlhUGxheWVyTWFuYWdlci5tZXNzYWdlcy5pbjogQWRkZWQuCisgICAgICAgICogV2Vi
UHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjp1
cGRhdGVQcmVmZXJlbmNlcyk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcDoK
KwogMjAxOS0xMi0xMCAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgogCiAgICAgICAg
IFVucmV2aWV3ZWQsIGRyb3AgZGVidWcgYXNzZXJ0aW9uIGluIEluc3BlY3RvclRhcmdldFByb3h5
OjpkaWRDb21taXRQcm92aXNpb25hbFRhcmdldCgpIHRoYXQgaXMgaGl0dGluZyBhZnRlciByMjUz
MzM3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oKaW5kZXggMDNlNmY1NDMzYmY2ZjY3ZWJjNWY0OWZlZDBhOTUwMTJkNGJlNGJmOS4uMGNhZmRj
MWVhMDBiZTdmZGUwZWQyMzA3NjYxYTIxMDhhZTBjZDM0ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJD
b3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTA0LDYgKzEwNCw3IEBA
CiAJCTA3MUU0OTZFMUFENUFBMEQwMDhBNTBCNCAvKiBNZWRpYVBsYXliYWNrVGFyZ2V0TWFjLm1t
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDcxRTQ5NkQx
QUQ1QUEwRDAwOEE1MEI0IC8qIE1lZGlhUGxheWJhY2tUYXJnZXRNYWMubW0gKi87IH07CiAJCTA3
MUU0OTcwMUFENUFCNUUwMDhBNTBCNCAvKiBNZWRpYVBsYXliYWNrVGFyZ2V0TWFjLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwNzFFNDk2RjFBRDVBQjVF
MDA4QTUwQjQgLyogTWVkaWFQbGF5YmFja1RhcmdldE1hYy5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTA3MjBCMEExMTREMzMyMzUwMDY0Mjk1NSAv
KiBHZW5lcmljRXZlbnRRdWV1ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gMDcyMEIwOUYxNEQzMzIzNTAwNjQyOTU1IC8qIEdlbmVyaWNFdmVudFF1ZXVl
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJMDcy
NUVGQTkyMzlBRDc5MzAwQTUzOEE5IC8qIE1lZGlhUGxheWVyUHJpdmF0ZS5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDc5RjVFNEIwRjNCRUJFQTAwNUUw
NzgyIC8qIE1lZGlhUGxheWVyUHJpdmF0ZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CiAJCTA3Mjc3RTREMTdEMDE4Q0MwMDE1NTM0RCAvKiBKU01lZGlh
U3RyZWFtLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAw
NzI3N0U0MTE3RDAxOENDMDAxNTUzNEQgLyogSlNNZWRpYVN0cmVhbS5oICovOyB9OwogCQkwNzI3
N0U0RDE3RDAxOENDMDAxNTUzNEUgLyogSlNDYW52YXNDYXB0dXJlTWVkaWFTdHJlYW1UcmFjay5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDcyNzdFNDEx
N0QwMThDQzAwMTU1MzRFIC8qIEpTQ2FudmFzQ2FwdHVyZU1lZGlhU3RyZWFtVHJhY2suaCAqLzsg
fTsKIAkJMDcyNzdFNEYxN0QwMThDQzAwMTU1MzREIC8qIEpTTWVkaWFTdHJlYW1BdWRpb0Rlc3Rp
bmF0aW9uTm9kZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gMDcyNzdFNDMxN0QwMThDQzAwMTU1MzREIC8qIEpTTWVkaWFTdHJlYW1BdWRpb0Rlc3RpbmF0
aW9uTm9kZS5oICovOyB9OwpAQCAtMjA0LDYgKzIwNSw3IEBACiAJCTA3QjVBMkRDMTQ2NDMyMEEw
MEE4MUVDRSAvKiBKU1RleHRUcmFja0xpc3QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDA3QjVBMkRBMTQ2NDMyMEEwMEE4MUVDRSAvKiBKU1RleHRUcmFj
a0xpc3QuaCAqLzsgfTsKIAkJMDdCNzExNkQxRDg5OUU2MzAwOUYwRkZCIC8qIENhcHR1cmVEZXZp
Y2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3Qjcx
MTZBMUQ4OTlFNjMwMDlGMEZGQiAvKiBDYXB0dXJlRGV2aWNlLmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMDdCNzExNkYxRDg5OUU2MzAwOUYwRkZC
IC8qIENhcHR1cmVEZXZpY2VNYW5hZ2VyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSAwN0I3MTE2QzFEODk5RTYzMDA5RjBGRkIgLyogQ2FwdHVyZURldmlj
ZU1hbmFnZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OworCQkwN0JBRjM0NDIzOUVENTY5MDA0NDI1N0UgLyogTWVkaWFQbGF5ZXJFbmdpbmVJZGVudGlm
aWVycy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDdC
QUYzNDMyMzlFRDFDQzAwNDQyNTdFIC8qIE1lZGlhUGxheWVyRW5naW5lSWRlbnRpZmllcnMuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkwN0MwNDZD
NDFFNDI1MDhCMDA3MjAxRTcgLyogQ0FBdWRpb1N0cmVhbURlc2NyaXB0aW9uLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwNzNCODc1ODFFNDBEQ0ZEMDA3
MUMwRUMgLyogQ0FBdWRpb1N0cmVhbURlc2NyaXB0aW9uLmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMDdDMDQ2Q0IxRTQyNjQxMzAwNzIwMUU3IC8q
IEF1ZGlvU3RyZWFtRGVzY3JpcHRpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDA3M0I4NzU2MUU0MERDRTUwMDcxQzBFQyAvKiBBdWRpb1N0cmVhbURl
c2NyaXB0aW9uLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKIAkJMDdDMUMwRTIxQkZCNjAwMTAwQkQyMjU2IC8qIE1lZGlhVHJhY2tTdXBwb3J0ZWRDb25z
dHJhaW50cy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
MDdDMUMwRTAxQkZCNjAwMTAwQkQyMjU2IC8qIE1lZGlhVHJhY2tTdXBwb3J0ZWRDb25zdHJhaW50
cy5oICovOyB9OwpAQCAtNTUzNSw2ICs1NTM3LDcgQEAKIAkJMDdCNzExNkExRDg5OUU2MzAwOUYw
RkZCIC8qIENhcHR1cmVEZXZpY2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
Q2FwdHVyZURldmljZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwN0I3MTE2QjFE
ODk5RTYzMDA5RjBGRkIgLyogQ2FwdHVyZURldmljZU1hbmFnZXIuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQ2FwdHVyZURldmljZU1hbmFnZXIuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQkwN0I3MTE2QzFEODk5RTYzMDA5RjBGRkIgLyogQ2FwdHVy
ZURldmljZU1hbmFnZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ2FwdHVy
ZURldmljZU1hbmFnZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMDdCQUYzNDMy
MzlFRDFDQzAwNDQyNTdFIC8qIE1lZGlhUGxheWVyRW5naW5lSWRlbnRpZmllcnMuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gTWVkaWFQbGF5ZXJFbmdpbmVJZGVudGlmaWVycy5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQkwN0MwNDZDNjFFNDI1MTJGMDA3MjAxRTcgLyogQXVkaW9UcmFja1ByaXZh
dGVNZWRpYVN0cmVhbUNvY29hLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEF1
ZGlvVHJhY2tQcml2YXRlTWVkaWFTdHJlYW1Db2NvYS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQkwN0MxQzBFMDFCRkI2MDAxMDBCRDIyNTYgLyogTWVkaWFUcmFja1N1cHBvcnRlZENv
bnN0cmFpbnRzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1lZGlhVHJhY2tT
dXBwb3J0ZWRDb25zdHJhaW50cy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwN0Mx
QzBFMTFCRkI2MDAxMDBCRDIyNTYgLyogTWVkaWFUcmFja1N1cHBvcnRlZENvbnN0cmFpbnRzLmlk
bCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBNZWRpYVRyYWNrU3VwcG9ydGVkQ29uc3RyYWludHMu
aWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMjUwNjIsNiArMjUwNjUsNyBAQAog
CQkJCTA3OEU0M0Q4MUFCQjZDN0UwMDFDMkZBNiAvKiBNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2Vy
LmggKi8sCiAJCQkJRTRCNDFFMEMwQ0JGOTBCRDAwQUYyRUNFIC8qIE1lZGlhUGxheWVyLmNwcCAq
LywKIAkJCQlFNEI0MUUwRDBDQkY5MEJEMDBBRjJFQ0UgLyogTWVkaWFQbGF5ZXIuaCAqLywKKwkJ
CQkwN0JBRjM0MzIzOUVEMUNDMDA0NDI1N0UgLyogTWVkaWFQbGF5ZXJFbmdpbmVJZGVudGlmaWVy
cy5oICovLAogCQkJCUNENTIwOUUzMUIwQkQ4MzgwMDc3MTg0RSAvKiBNZWRpYVBsYXllckVudW1z
LmggKi8sCiAJCQkJMDc5RjVFNEIwRjNCRUJFQTAwNUUwNzgyIC8qIE1lZGlhUGxheWVyUHJpdmF0
ZS5oICovLAogCQkJCUNENjQxRUIxMTgxOEY1RUQwMEVFNEM0MSAvKiBNZWRpYVNvdXJjZVByaXZh
dGUuaCAqLywKQEAgLTMxMzc4LDcgKzMxMzgyLDkgQEAKIAkJCQkwNzhFNDNERDFBQkI2RjZGMDAx
QzJGQTYgLyogTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlck1hYy5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJMDc3QjY0MTMxQjk0RjEyRTAwM0U5QUQ1IC8qIE1lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJN
b2NrLmggaW4gSGVhZGVycyAqLywKIAkJCQlFNDQ2MTNFNDBDRDY4MUEyMDBGQURBNzUgLyogTWVk
aWFQbGF5ZXIuaCBpbiBIZWFkZXJzICovLAorCQkJCTA3QkFGMzQ0MjM5RUQ1NjkwMDQ0MjU3RSAv
KiBNZWRpYVBsYXllckVuZ2luZUlkZW50aWZpZXJzLmggaW4gSGVhZGVycyAqLywKIAkJCQlDRDUy
MDlFNDFCMEJEODM4MDA3NzE4NEUgLyogTWVkaWFQbGF5ZXJFbnVtcy5oIGluIEhlYWRlcnMgKi8s
CisJCQkJMDcyNUVGQTkyMzlBRDc5MzAwQTUzOEE5IC8qIE1lZGlhUGxheWVyUHJpdmF0ZS5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJMDc2RjBEMEUxMkI4MTkyNzAwQzI2QUE0IC8qIE1lZGlhUGxheWVy
UHJpdmF0ZUFWRm91bmRhdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJREY5QUZENzIxM0ZDMzFE
ODAwMTVGRUI3IC8qIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMuaCBpbiBIZWFk
ZXJzICovLAogCQkJCUNEQzhCNUEzMTgwNDYzNDcwMDE2RTY4NSAvKiBNZWRpYVBsYXllclByaXZh
dGVNZWRpYVNvdXJjZUFWRk9iakMuaCBpbiBIZWFkZXJzICovLApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vQ29udGVudFR5cGUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L0NvbnRlbnRUeXBlLmgKaW5kZXggYzgyYjViNzE5N2M5ZTE1ZDFlMmY1NDdmZDU2NDFmYzVmNGVj
NWVjZi4uOTBkYzk3MDQ2NzA4Mzk0ZGEwNjBlZmQxYWQzNjc2MTc5YjU3OWZhNiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vQ29udGVudFR5cGUuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9Db250ZW50VHlwZS5oCkBAIC0zMyw4ICszMyw4IEBAIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAogY2xhc3MgQ29udGVudFR5cGUgewogcHVibGljOgotICAgIGV4cGxpY2l0IENv
bnRlbnRUeXBlKFN0cmluZyYmIHR5cGUpOwotICAgIGV4cGxpY2l0IENvbnRlbnRUeXBlKGNvbnN0
IFN0cmluZyYgdHlwZSk7CisgICAgV0VCQ09SRV9FWFBPUlQgZXhwbGljaXQgQ29udGVudFR5cGUo
U3RyaW5nJiYgdHlwZSk7CisgICAgV0VCQ09SRV9FWFBPUlQgZXhwbGljaXQgQ29udGVudFR5cGUo
Y29uc3QgU3RyaW5nJiB0eXBlKTsKICAgICBDb250ZW50VHlwZSgpID0gZGVmYXVsdDsKIAogICAg
IHN0YXRpYyBjb25zdCBTdHJpbmcmIGNvZGVjc1BhcmFtZXRlcigpOwpAQCAtNDksNiArNDksMjUg
QEAgcHVibGljOgogCiAgICAgU3RyaW5nIHRvSlNPTlN0cmluZygpIGNvbnN0OwogCisjaWYgRU5B
QkxFKEdQVV9QUk9DRVNTKQorICAgIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+CisgICAgdm9pZCBl
bmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QKKyAgICB7CisgICAgICAgIGVuY29kZXIgPDwg
bV90eXBlOworICAgIH0KKworICAgIHRlbXBsYXRlIDxjbGFzcyBEZWNvZGVyPgorICAgIHN0YXRp
YyBPcHRpb25hbDxDb250ZW50VHlwZT4gZGVjb2RlKERlY29kZXImIGRlY29kZXIpCisgICAgewor
ICAgICAgICBPcHRpb25hbDxTdHJpbmc+IHR5cGU7CisgICAgICAgIGRlY29kZXIgPj4gdHlwZTsK
KyAgICAgICAgaWYgKCF0eXBlKQorICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKwor
ICAgICAgICByZXR1cm4geyBDb250ZW50VHlwZShXVEZNb3ZlKCp0eXBlKSkgfTsKKyAgICB9Cisj
ZW5kaWYKKwogcHJpdmF0ZToKICAgICBTdHJpbmcgbV90eXBlOwogfTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmNwcAppbmRleCA3ZDViY2NkOTBi
MTc5NGM3MTZlZjNlYjFkMTk5NmQ2M2E3NzU1MDgwLi41MmFkM2E0YjQ3MGY1NDU3NzEwYmMwOTdm
OGUyYjJlMjhkM2Y5NjFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9NZWRpYVBsYXllci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvTWVkaWFQbGF5ZXIuY3BwCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykg
MjAwNy0yMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAo
QykgMjAwNy0yMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzQsNiArMzQsNyBAQAogI2luY2x1ZGUgIkludFJlY3Qu
aCIKICNpbmNsdWRlICJMb2dnaW5nLmgiCiAjaW5jbHVkZSAiTUlNRVR5cGVSZWdpc3RyeS5oIgor
I2luY2x1ZGUgIk1lZGlhUGxheWVyRW5naW5lSWRlbnRpZmllcnMuaCIKICNpbmNsdWRlICJNZWRp
YVBsYXllclByaXZhdGUuaCIKICNpbmNsdWRlICJQbGF0Zm9ybVRpbWVSYW5nZXMuaCIKICNpbmNs
dWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KQEAgLTkwLDE0ICs5MSw2IEBACiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAotI2lmICFSRUxFQVNFX0xPR19ESVNBQkxFRAotc3RhdGljIFJlZlB0cjxM
b2dnZXI+JiBudWxsTG9nZ2VyKCkKLXsKLSAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8UmVmUHRy
PExvZ2dlcj4+IGxvZ2dlcjsKLSAgICByZXR1cm4gbG9nZ2VyOwotfQotI2VuZGlmCi0KIC8vIGEg
bnVsbCBwbGF5ZXIgdG8gbWFrZSBNZWRpYVBsYXllciBsb2dpYyBzaW1wbGVyCiAKIGNsYXNzIE51
bGxNZWRpYVBsYXllclByaXZhdGUgZmluYWwgOiBwdWJsaWMgTWVkaWFQbGF5ZXJQcml2YXRlSW50
ZXJmYWNlIHsKQEAgLTE2Niw4ICsxNTksMjIgQEAgcHVibGljOgogICAgIGJvb2wgaGFzU2luZ2xl
U2VjdXJpdHlPcmlnaW4oKSBjb25zdCBmaW5hbCB7IHJldHVybiB0cnVlOyB9CiB9OwogCisjaWYg
IVJFTEVBU0VfTE9HX0RJU0FCTEVECitzdGF0aWMgUmVmUHRyPExvZ2dlcj4mIG51bGxMb2dnZXIo
KQoreworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxSZWZQdHI8TG9nZ2VyPj4gbG9nZ2VyOwor
ICAgIHJldHVybiBsb2dnZXI7Cit9CisjZW5kaWYKKworc3RhdGljIGNvbnN0IFZlY3RvcjxXZWJD
b3JlOjpDb250ZW50VHlwZT4mIG51bGxDb250ZW50VHlwZVZlY3RvcigpCit7CisgICAgc3RhdGlj
IE5ldmVyRGVzdHJveWVkPFZlY3RvcjxXZWJDb3JlOjpDb250ZW50VHlwZT4+IHZlY3RvcjsKKyAg
ICByZXR1cm4gdmVjdG9yOworfQorCiBjbGFzcyBOdWxsTWVkaWFQbGF5ZXJDbGllbnQgOiBwdWJs
aWMgTWVkaWFQbGF5ZXJDbGllbnQgewotcHVibGljOgorcHJpdmF0ZToKICNpZiAhUkVMRUFTRV9M
T0dfRElTQUJMRUQKICAgICBjb25zdCBMb2dnZXImIG1lZGlhUGxheWVyTG9nZ2VyKCkgZmluYWwK
ICAgICB7CkBAIC0xNzksOCArMTg2LDExIEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuICpudWxs
TG9nZ2VyKCkuZ2V0KCk7CiAgICAgfQogI2VuZGlmCisKKyAgICBjb25zdCBWZWN0b3I8V2ViQ29y
ZTo6Q29udGVudFR5cGU+JiBtZWRpYUNvbnRlbnRUeXBlc1JlcXVpcmluZ0hhcmR3YXJlU3VwcG9y
dCgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG51bGxDb250ZW50VHlwZVZlY3RvcigpOyB9CiB9Owog
CisKIGNvbnN0IFZlY3RvcjxDb250ZW50VHlwZT4mIE1lZGlhUGxheWVyQ2xpZW50OjptZWRpYUNv
bnRlbnRUeXBlc1JlcXVpcmluZ0hhcmR3YXJlU3VwcG9ydCgpIGNvbnN0CiB7CiAgICAgc3RhdGlj
IE5ldmVyRGVzdHJveWVkPFZlY3RvcjxDb250ZW50VHlwZT4+IGNvbnRlbnRUeXBlczsKQEAgLTE5
NSwxNyArMjA1LDcgQEAgc3RhdGljIE1lZGlhUGxheWVyQ2xpZW50JiBudWxsTWVkaWFQbGF5ZXJD
bGllbnQoKQogCiAvLyBlbmdpbmUgc3VwcG9ydAogCi1zdHJ1Y3QgTWVkaWFQbGF5ZXJGYWN0b3J5
IHsKLSAgICBDcmVhdGVNZWRpYUVuZ2luZVBsYXllciBjb25zdHJ1Y3RvcjsKLSAgICBNZWRpYUVu
Z2luZVN1cHBvcnRlZFR5cGVzIGdldFN1cHBvcnRlZFR5cGVzOwotICAgIE1lZGlhRW5naW5lU3Vw
cG9ydHNUeXBlIHN1cHBvcnRzVHlwZUFuZENvZGVjczsKLSAgICBNZWRpYUVuZ2luZU9yaWdpbnNJ
bk1lZGlhQ2FjaGUgb3JpZ2luc0luTWVkaWFDYWNoZTsKLSAgICBNZWRpYUVuZ2luZUNsZWFyTWVk
aWFDYWNoZSBjbGVhck1lZGlhQ2FjaGU7Ci0gICAgTWVkaWFFbmdpbmVDbGVhck1lZGlhQ2FjaGVG
b3JPcmlnaW5zIGNsZWFyTWVkaWFDYWNoZUZvck9yaWdpbnM7Ci0gICAgTWVkaWFFbmdpbmVTdXBw
b3J0c0tleVN5c3RlbSBzdXBwb3J0c0tleVN5c3RlbTsKLX07Ci0KLXN0YXRpYyB2b2lkIGFkZE1l
ZGlhRW5naW5lKENyZWF0ZU1lZGlhRW5naW5lUGxheWVyJiYsIE1lZGlhRW5naW5lU3VwcG9ydGVk
VHlwZXMsIE1lZGlhRW5naW5lU3VwcG9ydHNUeXBlLCBNZWRpYUVuZ2luZU9yaWdpbnNJbk1lZGlh
Q2FjaGUsIE1lZGlhRW5naW5lQ2xlYXJNZWRpYUNhY2hlLCBNZWRpYUVuZ2luZUNsZWFyTWVkaWFD
YWNoZUZvck9yaWdpbnMsIE1lZGlhRW5naW5lU3VwcG9ydHNLZXlTeXN0ZW0pOworc3RhdGljIHZv
aWQgYWRkTWVkaWFFbmdpbmUoc3RkOjp1bmlxdWVfcHRyPE1lZGlhUGxheWVyRmFjdG9yeT4pOwog
CiBzdGF0aWMgTG9jayBtZWRpYUVuZ2luZVZlY3RvckxvY2s7CiAKQEAgLTIxNSwyMSArMjE1LDM3
IEBAIHN0YXRpYyBib29sJiBoYXZlTWVkaWFFbmdpbmVzVmVjdG9yKCkKICAgICByZXR1cm4gaGF2
ZVZlY3RvcjsKIH0KIAotc3RhdGljIFZlY3RvcjxNZWRpYVBsYXllckZhY3Rvcnk+JiBtdXRhYmxl
SW5zdGFsbGVkTWVkaWFFbmdpbmVzVmVjdG9yKCkKK3N0YXRpYyBWZWN0b3I8c3RkOjp1bmlxdWVf
cHRyPE1lZGlhUGxheWVyRmFjdG9yeT4+JiBtdXRhYmxlSW5zdGFsbGVkTWVkaWFFbmdpbmVzVmVj
dG9yKCkKIHsKLSAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8VmVjdG9yPE1lZGlhUGxheWVyRmFj
dG9yeT4+IGluc3RhbGxlZEVuZ2luZXM7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFZlY3Rv
cjxzdGQ6OnVuaXF1ZV9wdHI8TWVkaWFQbGF5ZXJGYWN0b3J5Pj4+IGluc3RhbGxlZEVuZ2luZXM7
CiAgICAgcmV0dXJuIGluc3RhbGxlZEVuZ2luZXM7CiB9CiAKK3N0YXRpYyBSZW1vdGVNZWRpYVBs
YXllclN1cHBvcnQ6OlJlZ2lzdGVyUmVtb3RlUGxheWVyQ2FsbGJhY2smIHJlZ2lzdGVyUmVtb3Rl
UGxheWVyQ2FsbGJhY2soKQoreworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxSZW1vdGVNZWRp
YVBsYXllclN1cHBvcnQ6OlJlZ2lzdGVyUmVtb3RlUGxheWVyQ2FsbGJhY2s+IGNhbGxiYWNrOwor
ICAgIHJldHVybiBjYWxsYmFjazsKK30KKwordm9pZCBSZW1vdGVNZWRpYVBsYXllclN1cHBvcnQ6
OnNldFJlZ2lzdGVyUmVtb3RlUGxheWVyQ2FsbGJhY2soUmVnaXN0ZXJSZW1vdGVQbGF5ZXJDYWxs
YmFjayYmIGNhbGxiYWNrKQoreworICAgIHJlZ2lzdGVyUmVtb3RlUGxheWVyQ2FsbGJhY2soKSA9
IFdURk1vdmUoY2FsbGJhY2spOworfQorCiBzdGF0aWMgdm9pZCBidWlsZE1lZGlhRW5naW5lc1Zl
Y3RvcigpCiB7CiAgICAgQVNTRVJUKG1lZGlhRW5naW5lVmVjdG9yTG9jay5pc0xvY2tlZCgpKTsK
IAogI2lmIFVTRShBVkZPVU5EQVRJT04pCisgICAgYXV0byYgcmVnaXN0ZXJSZW1vdGVFbmdpbmUg
PSByZWdpc3RlclJlbW90ZVBsYXllckNhbGxiYWNrKCk7CisKICAgICBpZiAoRGVwcmVjYXRlZEds
b2JhbFNldHRpbmdzOjppc0FWRm91bmRhdGlvbkVuYWJsZWQoKSkgewogCiAjaWYgUExBVEZPUk0o
Q09DT0EpCi0gICAgICAgIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OnJlZ2lz
dGVyTWVkaWFFbmdpbmUoYWRkTWVkaWFFbmdpbmUpOworICAgICAgICBpZiAocmVnaXN0ZXJSZW1v
dGVFbmdpbmUpCisgICAgICAgICAgICByZWdpc3RlclJlbW90ZUVuZ2luZShhZGRNZWRpYUVuZ2lu
ZSwgTWVkaWFQbGF5ZXJFbmdpbmVJZGVudGlmaWVyczo6YXZGb3VuZGF0aW9uRW5naW5lSWRlbnRp
ZmllcigpKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgTWVkaWFQbGF5ZXJQcml2YXRlQVZG
b3VuZGF0aW9uT2JqQzo6cmVnaXN0ZXJNZWRpYUVuZ2luZShhZGRNZWRpYUVuZ2luZSk7CiAjZW5k
aWYKIAogI2lmIEVOQUJMRShNRURJQV9TT1VSQ0UpCkBAIC0yNjUsNyArMjgxLDcgQEAgc3RhdGlj
IHZvaWQgYnVpbGRNZWRpYUVuZ2luZXNWZWN0b3IoKQogICAgIGhhdmVNZWRpYUVuZ2luZXNWZWN0
b3IoKSA9IHRydWU7CiB9CiAKLXN0YXRpYyBjb25zdCBWZWN0b3I8TWVkaWFQbGF5ZXJGYWN0b3J5
PiYgaW5zdGFsbGVkTWVkaWFFbmdpbmVzKCkKK3N0YXRpYyBjb25zdCBWZWN0b3I8c3RkOjp1bmlx
dWVfcHRyPE1lZGlhUGxheWVyRmFjdG9yeT4+JiBpbnN0YWxsZWRNZWRpYUVuZ2luZXMoKQogewog
ICAgIHsKICAgICAgICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhtZWRpYUVuZ2luZVZlY3Rvckxv
Y2spOwpAQCAtMjc2LDE0ICsyOTIsOSBAQCBzdGF0aWMgY29uc3QgVmVjdG9yPE1lZGlhUGxheWVy
RmFjdG9yeT4mIGluc3RhbGxlZE1lZGlhRW5naW5lcygpCiAgICAgcmV0dXJuIG11dGFibGVJbnN0
YWxsZWRNZWRpYUVuZ2luZXNWZWN0b3IoKTsKIH0KIAotc3RhdGljIHZvaWQgYWRkTWVkaWFFbmdp
bmUoQ3JlYXRlTWVkaWFFbmdpbmVQbGF5ZXImJiBjb25zdHJ1Y3RvciwgTWVkaWFFbmdpbmVTdXBw
b3J0ZWRUeXBlcyBnZXRTdXBwb3J0ZWRUeXBlcywgTWVkaWFFbmdpbmVTdXBwb3J0c1R5cGUgc3Vw
cG9ydHNUeXBlLAotICAgIE1lZGlhRW5naW5lT3JpZ2luc0luTWVkaWFDYWNoZSBvcmlnaW5zSW5N
ZWRpYUNhY2hlLCBNZWRpYUVuZ2luZUNsZWFyTWVkaWFDYWNoZSBjbGVhck1lZGlhQ2FjaGUsIE1l
ZGlhRW5naW5lQ2xlYXJNZWRpYUNhY2hlRm9yT3JpZ2lucyBjbGVhck1lZGlhQ2FjaGVGb3JPcmln
aW5zLCBNZWRpYUVuZ2luZVN1cHBvcnRzS2V5U3lzdGVtIHN1cHBvcnRzS2V5U3lzdGVtKQorc3Rh
dGljIHZvaWQgYWRkTWVkaWFFbmdpbmUoc3RkOjp1bmlxdWVfcHRyPE1lZGlhUGxheWVyRmFjdG9y
eT4gZmFjdG9yeSkKIHsKLSAgICBBU1NFUlQoY29uc3RydWN0b3IpOwotICAgIEFTU0VSVChnZXRT
dXBwb3J0ZWRUeXBlcyk7Ci0gICAgQVNTRVJUKHN1cHBvcnRzVHlwZSk7Ci0KLSAgICBtdXRhYmxl
SW5zdGFsbGVkTWVkaWFFbmdpbmVzVmVjdG9yKCkuYXBwZW5kKE1lZGlhUGxheWVyRmFjdG9yeSB7
IFdURk1vdmUoY29uc3RydWN0b3IpLCBnZXRTdXBwb3J0ZWRUeXBlcywgc3VwcG9ydHNUeXBlLCBv
cmlnaW5zSW5NZWRpYUNhY2hlLCBjbGVhck1lZGlhQ2FjaGUsIGNsZWFyTWVkaWFDYWNoZUZvck9y
aWdpbnMsIHN1cHBvcnRzS2V5U3lzdGVtIH0pOworICAgIG11dGFibGVJbnN0YWxsZWRNZWRpYUVu
Z2luZXNWZWN0b3IoKS5hcHBlbmQoV1RGTW92ZShmYWN0b3J5KSk7CiB9CiAKIHN0YXRpYyBjb25z
dCBBdG9tU3RyaW5nJiBhcHBsaWNhdGlvbk9jdGV0U3RyZWFtKCkKQEAgLTI5OCw2ICszMDksMjEg
QEAgc3RhdGljIGNvbnN0IEF0b21TdHJpbmcmIHRleHRQbGFpbigpCiAgICAgcmV0dXJuIHRleHRQ
bGFpbjsKIH0KIAorY29uc3QgTWVkaWFQbGF5ZXJGYWN0b3J5KiBNZWRpYVBsYXllcjo6bWVkaWFF
bmdpbmUoY29uc3QgU3RyaW5nJiBpZGVudGlmaWVyKQoreworICAgIGF1dG8mIGVuZ2luZXMgPSBp
bnN0YWxsZWRNZWRpYUVuZ2luZXMoKTsKKyAgICBhdXRvIGN1cnJlbnRJbmRleCA9IGVuZ2luZXMu
ZmluZE1hdGNoaW5nKFtpZGVudGlmaWVyXSAoYXV0byYgZW5naW5lKSB7CisgICAgICAgIHJldHVy
biBlbmdpbmUtPmlkZW50aWZpZXIoKSA9PSBpZGVudGlmaWVyOworICAgIH0pOworCisgICAgaWYg
KGN1cnJlbnRJbmRleCA9PSBub3RGb3VuZCkgeworICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQo
KTsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgfQorCisgICAgcmV0dXJuIGVuZ2luZXNb
Y3VycmVudEluZGV4ICsgMV0uZ2V0KCk7Cit9CisKIHN0YXRpYyBjb25zdCBNZWRpYVBsYXllckZh
Y3RvcnkqIGJlc3RNZWRpYUVuZ2luZUZvclN1cHBvcnRQYXJhbWV0ZXJzKGNvbnN0IE1lZGlhRW5n
aW5lU3VwcG9ydFBhcmFtZXRlcnMmIHBhcmFtZXRlcnMsIGNvbnN0IE1lZGlhUGxheWVyRmFjdG9y
eSogY3VycmVudCA9IG51bGxwdHIpCiB7CiAgICAgaWYgKHBhcmFtZXRlcnMudHlwZS5pc0VtcHR5
KCkgJiYgIXBhcmFtZXRlcnMuaXNNZWRpYVNvdXJjZSAmJiAhcGFyYW1ldGVycy5pc01lZGlhU3Ry
ZWFtKQpAQCAtMzE1LDM0ICszNDEsNDYgQEAgc3RhdGljIGNvbnN0IE1lZGlhUGxheWVyRmFjdG9y
eSogYmVzdE1lZGlhRW5naW5lRm9yU3VwcG9ydFBhcmFtZXRlcnMoY29uc3QgTWVkaWEKICAgICBN
ZWRpYVBsYXllcjo6U3VwcG9ydHNUeXBlIHN1cHBvcnRlZCA9IE1lZGlhUGxheWVyOjpJc05vdFN1
cHBvcnRlZDsKICAgICBmb3IgKGF1dG8mIGVuZ2luZSA6IGluc3RhbGxlZE1lZGlhRW5naW5lcygp
KSB7CiAgICAgICAgIGlmIChjdXJyZW50KSB7Ci0gICAgICAgICAgICBpZiAoY3VycmVudCA9PSAm
ZW5naW5lKQorICAgICAgICAgICAgaWYgKGN1cnJlbnQgPT0gZW5naW5lLmdldCgpKQogICAgICAg
ICAgICAgICAgIGN1cnJlbnQgPSBudWxscHRyOwogICAgICAgICAgICAgY29udGludWU7CiAgICAg
ICAgIH0KLSAgICAgICAgTWVkaWFQbGF5ZXI6OlN1cHBvcnRzVHlwZSBlbmdpbmVTdXBwb3J0ID0g
ZW5naW5lLnN1cHBvcnRzVHlwZUFuZENvZGVjcyhwYXJhbWV0ZXJzKTsKKyAgICAgICAgTWVkaWFQ
bGF5ZXI6OlN1cHBvcnRzVHlwZSBlbmdpbmVTdXBwb3J0ID0gZW5naW5lLT5zdXBwb3J0c1R5cGVB
bmRDb2RlY3MocGFyYW1ldGVycyk7CiAgICAgICAgIGlmIChlbmdpbmVTdXBwb3J0ID4gc3VwcG9y
dGVkKSB7CiAgICAgICAgICAgICBzdXBwb3J0ZWQgPSBlbmdpbmVTdXBwb3J0OwotICAgICAgICAg
ICAgZm91bmRFbmdpbmUgPSAmZW5naW5lOworICAgICAgICAgICAgZm91bmRFbmdpbmUgPSBlbmdp
bmUuZ2V0KCk7CiAgICAgICAgIH0KICAgICB9CiAKICAgICByZXR1cm4gZm91bmRFbmdpbmU7CiB9
CiAKLXN0YXRpYyBjb25zdCBNZWRpYVBsYXllckZhY3RvcnkqIG5leHRNZWRpYUVuZ2luZShjb25z
dCBNZWRpYVBsYXllckZhY3RvcnkqIGN1cnJlbnQpCitjb25zdCBNZWRpYVBsYXllckZhY3Rvcnkq
IE1lZGlhUGxheWVyOjpuZXh0TWVkaWFFbmdpbmUoY29uc3QgTWVkaWFQbGF5ZXJGYWN0b3J5KiBj
dXJyZW50KQogeworICAgIGlmICghbV9hY3RpdmVFbmdpbmVJZGVudGlmaWVyLmlzRW1wdHkoKSkg
eworICAgICAgICBhdXRvKiBlbmdpbmUgPSBtZWRpYUVuZ2luZShtX2FjdGl2ZUVuZ2luZUlkZW50
aWZpZXIpOworICAgICAgICByZXR1cm4gY3VycmVudCAhPSBlbmdpbmUgPyBlbmdpbmUgOiBudWxs
cHRyOworICAgIH0KKwogICAgIGF1dG8mIGVuZ2luZXMgPSBpbnN0YWxsZWRNZWRpYUVuZ2luZXMo
KTsKICAgICBpZiAoZW5naW5lcy5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwog
CiAgICAgaWYgKCFjdXJyZW50KSAKLSAgICAgICAgcmV0dXJuICZlbmdpbmVzLmZpcnN0KCk7Cisg
ICAgICAgIHJldHVybiBlbmdpbmVzLmZpcnN0KCkuZ2V0KCk7CisKKyAgICBhdXRvIGN1cnJlbnRJ
bmRleCA9IGVuZ2luZXMuZmluZE1hdGNoaW5nKFtjdXJyZW50XSAoYXV0byYgZW5naW5lKSB7Cisg
ICAgICAgIHJldHVybiBlbmdpbmUuZ2V0KCkgPT0gY3VycmVudDsKKyAgICB9KTsKKyAgICBpZiAo
Y3VycmVudEluZGV4ID09IG5vdEZvdW5kKSB7CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgp
OworICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICB9CiAKLSAgICBzaXplX3QgY3VycmVudElu
ZGV4ID0gY3VycmVudCAtICZlbmdpbmVzLmZpcnN0KCk7CiAgICAgaWYgKGN1cnJlbnRJbmRleCAr
IDEgPj0gZW5naW5lcy5zaXplKCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgcmV0
dXJuICZlbmdpbmVzW2N1cnJlbnRJbmRleCArIDFdOworICAgIHJldHVybiBlbmdpbmVzW2N1cnJl
bnRJbmRleCArIDFdLmdldCgpOwogfQogCiAvLyBtZWRpYSBwbGF5ZXIKQEAgLTM1Miw2ICszOTAs
MTMgQEAgUmVmPE1lZGlhUGxheWVyPiBNZWRpYVBsYXllcjo6Y3JlYXRlKE1lZGlhUGxheWVyQ2xp
ZW50JiBjbGllbnQpCiAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgTWVkaWFQbGF5ZXIoY2xpZW50
KSk7CiB9CiAKK1JlZjxNZWRpYVBsYXllcj4gTWVkaWFQbGF5ZXI6OmNyZWF0ZShNZWRpYVBsYXll
ckNsaWVudCYgY2xpZW50LCBjb25zdCBTdHJpbmcmIG1lZGlhRW5naW5lSWRlbnRpZmllcikKK3sK
KyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBNZWRpYVBsYXllcihjbGllbnQsIG1lZGlhRW5naW5l
SWRlbnRpZmllcikpOworfQorCisKKwogTWVkaWFQbGF5ZXI6Ok1lZGlhUGxheWVyKE1lZGlhUGxh
eWVyQ2xpZW50JiBjbGllbnQpCiAgICAgOiBtX2NsaWVudCgmY2xpZW50KQogICAgICwgbV9yZWxv
YWRUaW1lcigqdGhpcywgJk1lZGlhUGxheWVyOjpyZWxvYWRUaW1lckZpcmVkKQpAQCAtMzU5LDYg
KzQwNCwxNCBAQCBNZWRpYVBsYXllcjo6TWVkaWFQbGF5ZXIoTWVkaWFQbGF5ZXJDbGllbnQmIGNs
aWVudCkKIHsKIH0KIAorTWVkaWFQbGF5ZXI6Ok1lZGlhUGxheWVyKE1lZGlhUGxheWVyQ2xpZW50
JiBjbGllbnQsIGNvbnN0IFN0cmluZyYgYWN0aXZlRW5naW5lSWRlbnRpZmllcikKKyAgICA6IG1f
Y2xpZW50KCZjbGllbnQpCisgICAgLCBtX3JlbG9hZFRpbWVyKCp0aGlzLCAmTWVkaWFQbGF5ZXI6
OnJlbG9hZFRpbWVyRmlyZWQpCisgICAgLCBtX3ByaXZhdGUobWFrZVVuaXF1ZTxOdWxsTWVkaWFQ
bGF5ZXJQcml2YXRlPih0aGlzKSkKKyAgICAsIG1fYWN0aXZlRW5naW5lSWRlbnRpZmllcihhY3Rp
dmVFbmdpbmVJZGVudGlmaWVyKQoreworfQorCiBNZWRpYVBsYXllcjo6fk1lZGlhUGxheWVyKCkK
IHsKICAgICBBU1NFUlQoIW1faW5pdGlhbGl6aW5nTWVkaWFFbmdpbmUpOwpAQCAtNDQxLDcgKzQ5
NCw3IEBAIGJvb2wgTWVkaWFQbGF5ZXI6OmxvYWQoTWVkaWFTdHJlYW1Qcml2YXRlJiBtZWRpYVN0
cmVhbSkKIH0KICNlbmRpZgogCi1jb25zdCBNZWRpYVBsYXllckZhY3RvcnkqIE1lZGlhUGxheWVy
OjpuZXh0QmVzdE1lZGlhRW5naW5lKGNvbnN0IE1lZGlhUGxheWVyRmFjdG9yeSogY3VycmVudCkg
Y29uc3QKK2NvbnN0IE1lZGlhUGxheWVyRmFjdG9yeSogTWVkaWFQbGF5ZXI6Om5leHRCZXN0TWVk
aWFFbmdpbmUoY29uc3QgTWVkaWFQbGF5ZXJGYWN0b3J5KiBjdXJyZW50KQogewogICAgIE1lZGlh
RW5naW5lU3VwcG9ydFBhcmFtZXRlcnMgcGFyYW1ldGVyczsKICAgICBwYXJhbWV0ZXJzLnR5cGUg
PSBtX2NvbnRlbnRUeXBlOwpAQCAtNDUzLDYgKzUwNiwyOCBAQCBjb25zdCBNZWRpYVBsYXllckZh
Y3RvcnkqIE1lZGlhUGxheWVyOjpuZXh0QmVzdE1lZGlhRW5naW5lKGNvbnN0IE1lZGlhUGxheWVy
RmFjdAogICAgIHBhcmFtZXRlcnMuaXNNZWRpYVN0cmVhbSA9ICEhbV9tZWRpYVN0cmVhbTsKICNl
bmRpZgogCisgICAgaWYgKCFtX2FjdGl2ZUVuZ2luZUlkZW50aWZpZXIuaXNFbXB0eSgpKSB7Cisg
ICAgICAgIGlmIChjdXJyZW50KQorICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICAg
ICAgYXV0byogZW5naW5lID0gbWVkaWFFbmdpbmUobV9hY3RpdmVFbmdpbmVJZGVudGlmaWVyKTsK
KyAgICAgICAgaWYgKGVuZ2luZSAmJiBlbmdpbmUtPnN1cHBvcnRzVHlwZUFuZENvZGVjcyhwYXJh
bWV0ZXJzKSAhPSBNZWRpYVBsYXllcjo6SXNOb3RTdXBwb3J0ZWQpCisgICAgICAgICAgICByZXR1
cm4gZW5naW5lOworCisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIH0KKworICAgIGlmICgh
bV9hY3RpdmVFbmdpbmVJZGVudGlmaWVyLmlzRW1wdHkoKSkgeworICAgICAgICBpZiAoY3VycmVu
dCkKKyAgICAgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgICAgIGF1dG8qIGVuZ2luZSA9
IG1lZGlhRW5naW5lKG1fYWN0aXZlRW5naW5lSWRlbnRpZmllcik7CisgICAgICAgIGlmIChlbmdp
bmUgJiYgZW5naW5lLT5zdXBwb3J0c1R5cGVBbmRDb2RlY3MocGFyYW1ldGVycykgIT0gTWVkaWFQ
bGF5ZXI6OklzTm90U3VwcG9ydGVkKQorICAgICAgICAgICAgcmV0dXJuIGVuZ2luZTsKKworICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICB9CisKICAgICByZXR1cm4gYmVzdE1lZGlhRW5naW5l
Rm9yU3VwcG9ydFBhcmFtZXRlcnMocGFyYW1ldGVycywgY3VycmVudCk7CiB9CiAKQEAgLTQ4OSw3
ICs1NjQsNyBAQCB2b2lkIE1lZGlhUGxheWVyOjpsb2FkV2l0aE5leHRNZWRpYUVuZ2luZShjb25z
dCBNZWRpYVBsYXllckZhY3RvcnkqIGN1cnJlbnQpCiAgICAgICAgIG1fcHJpdmF0ZSA9IG51bGxw
dHI7CiAgICAgfSBlbHNlIGlmIChtX2N1cnJlbnRNZWRpYUVuZ2luZSAhPSBlbmdpbmUpIHsKICAg
ICAgICAgbV9jdXJyZW50TWVkaWFFbmdpbmUgPSBlbmdpbmU7Ci0gICAgICAgIG1fcHJpdmF0ZSA9
IGVuZ2luZS0+Y29uc3RydWN0b3IodGhpcyk7CisgICAgICAgIG1fcHJpdmF0ZSA9IGVuZ2luZS0+
Y3JlYXRlTWVkaWFFbmdpbmVQbGF5ZXIodGhpcyk7CiAgICAgICAgIGNsaWVudCgpLm1lZGlhUGxh
eWVyRW5naW5lVXBkYXRlZCgpOwogICAgICAgICBtX3ByaXZhdGUtPnNldFByaXZhdGVCcm93c2lu
Z01vZGUobV9wcml2YXRlQnJvd3NpbmcpOwogICAgICAgICBtX3ByaXZhdGUtPnNldFByZWxvYWQo
bV9wcmVsb2FkKTsKQEAgLTkyOSw3ICsxMDA0LDcgQEAgdm9pZCBNZWRpYVBsYXllcjo6Z2V0U3Vw
cG9ydGVkVHlwZXMoSGFzaFNldDxTdHJpbmcsIEFTQ0lJQ2FzZUluc2Vuc2l0aXZlSGFzaD4mIHQK
IHsKICAgICBmb3IgKGF1dG8mIGVuZ2luZSA6IGluc3RhbGxlZE1lZGlhRW5naW5lcygpKSB7CiAg
ICAgICAgIEhhc2hTZXQ8U3RyaW5nLCBBU0NJSUNhc2VJbnNlbnNpdGl2ZUhhc2g+IGVuZ2luZVR5
cGVzOwotICAgICAgICBlbmdpbmUuZ2V0U3VwcG9ydGVkVHlwZXMoZW5naW5lVHlwZXMpOworICAg
ICAgICBlbmdpbmUtPmdldFN1cHBvcnRlZFR5cGVzKGVuZ2luZVR5cGVzKTsKICAgICAgICAgdHlw
ZXMuYWRkKGVuZ2luZVR5cGVzLmJlZ2luKCksIGVuZ2luZVR5cGVzLmVuZCgpKTsKICAgICB9CiB9
IApAQCAtMTEyNSwzNCArMTIwMCwyOCBAQCBzdGF0aWMgdm9pZCBhZGRUb0hhc2goSGFzaFNldDxU
PiYgdG9IYXNoLCBIYXNoU2V0PFQ+JiYgZnJvbUhhc2gpCiBIYXNoU2V0PFJlZlB0cjxTZWN1cml0
eU9yaWdpbj4+IE1lZGlhUGxheWVyOjpvcmlnaW5zSW5NZWRpYUNhY2hlKGNvbnN0IFN0cmluZyYg
cGF0aCkKIHsKICAgICBIYXNoU2V0PFJlZlB0cjxTZWN1cml0eU9yaWdpbj4+IG9yaWdpbnM7Ci0g
ICAgZm9yIChhdXRvJiBlbmdpbmUgOiBpbnN0YWxsZWRNZWRpYUVuZ2luZXMoKSkgewotICAgICAg
ICBpZiAoIWVuZ2luZS5vcmlnaW5zSW5NZWRpYUNhY2hlKQotICAgICAgICAgICAgY29udGludWU7
Ci0gICAgICAgIGFkZFRvSGFzaChvcmlnaW5zLCBlbmdpbmUub3JpZ2luc0luTWVkaWFDYWNoZShw
YXRoKSk7Ci0gICAgfQorICAgIGZvciAoYXV0byYgZW5naW5lIDogaW5zdGFsbGVkTWVkaWFFbmdp
bmVzKCkpCisgICAgICAgIGFkZFRvSGFzaChvcmlnaW5zLCBlbmdpbmUtPm9yaWdpbnNJbk1lZGlh
Q2FjaGUocGF0aCkpOworCiAgICAgcmV0dXJuIG9yaWdpbnM7CiB9CiAKIHZvaWQgTWVkaWFQbGF5
ZXI6OmNsZWFyTWVkaWFDYWNoZShjb25zdCBTdHJpbmcmIHBhdGgsIFdhbGxUaW1lIG1vZGlmaWVk
U2luY2UpCiB7Ci0gICAgZm9yIChhdXRvJiBlbmdpbmUgOiBpbnN0YWxsZWRNZWRpYUVuZ2luZXMo
KSkgewotICAgICAgICBpZiAoZW5naW5lLmNsZWFyTWVkaWFDYWNoZSkKLSAgICAgICAgICAgIGVu
Z2luZS5jbGVhck1lZGlhQ2FjaGUocGF0aCwgbW9kaWZpZWRTaW5jZSk7Ci0gICAgfQorICAgIGZv
ciAoYXV0byYgZW5naW5lIDogaW5zdGFsbGVkTWVkaWFFbmdpbmVzKCkpCisgICAgICAgIGVuZ2lu
ZS0+Y2xlYXJNZWRpYUNhY2hlKHBhdGgsIG1vZGlmaWVkU2luY2UpOwogfQogCiB2b2lkIE1lZGlh
UGxheWVyOjpjbGVhck1lZGlhQ2FjaGVGb3JPcmlnaW5zKGNvbnN0IFN0cmluZyYgcGF0aCwgY29u
c3QgSGFzaFNldDxSZWZQdHI8U2VjdXJpdHlPcmlnaW4+PiYgb3JpZ2lucykKIHsKLSAgICBmb3Ig
KGF1dG8mIGVuZ2luZSA6IGluc3RhbGxlZE1lZGlhRW5naW5lcygpKSB7Ci0gICAgICAgIGlmIChl
bmdpbmUuY2xlYXJNZWRpYUNhY2hlRm9yT3JpZ2lucykKLSAgICAgICAgICAgIGVuZ2luZS5jbGVh
ck1lZGlhQ2FjaGVGb3JPcmlnaW5zKHBhdGgsIG9yaWdpbnMpOwotICAgIH0KKyAgICBmb3IgKGF1
dG8mIGVuZ2luZSA6IGluc3RhbGxlZE1lZGlhRW5naW5lcygpKQorICAgICAgICBlbmdpbmUtPmNs
ZWFyTWVkaWFDYWNoZUZvck9yaWdpbnMocGF0aCwgb3JpZ2lucyk7CiB9CiAKIGJvb2wgTWVkaWFQ
bGF5ZXI6OnN1cHBvcnRzS2V5U3lzdGVtKGNvbnN0IFN0cmluZyYga2V5U3lzdGVtLCBjb25zdCBT
dHJpbmcmIG1pbWVUeXBlKQogewogICAgIGZvciAoYXV0byYgZW5naW5lIDogaW5zdGFsbGVkTWVk
aWFFbmdpbmVzKCkpIHsKLSAgICAgICAgaWYgKGVuZ2luZS5zdXBwb3J0c0tleVN5c3RlbSAmJiBl
bmdpbmUuc3VwcG9ydHNLZXlTeXN0ZW0oa2V5U3lzdGVtLCBtaW1lVHlwZSkpCisgICAgICAgIGlm
IChlbmdpbmUtPnN1cHBvcnRzS2V5U3lzdGVtKGtleVN5c3RlbSwgbWltZVR5cGUpKQogICAgICAg
ICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogICAgIHJldHVybiBmYWxzZTsKQEAgLTExNzIsNyAr
MTI0MSw3IEBAIHZvaWQgTWVkaWFQbGF5ZXI6Om5ldHdvcmtTdGF0ZUNoYW5nZWQoKQogICAgIC8v
IGxldCB0aGUgbmV4dCBlbmdpbmUgdHJ5LgogICAgIGlmIChtX3ByaXZhdGUtPm5ldHdvcmtTdGF0
ZSgpID49IEZvcm1hdEVycm9yICYmIG1fcHJpdmF0ZS0+cmVhZHlTdGF0ZSgpIDwgSGF2ZU1ldGFk
YXRhKSB7CiAgICAgICAgIGNsaWVudCgpLm1lZGlhUGxheWVyRW5naW5lRmFpbGVkVG9Mb2FkKCk7
Ci0gICAgICAgIGlmIChpbnN0YWxsZWRNZWRpYUVuZ2luZXMoKS5zaXplKCkgPiAxICYmIChtX2Nv
bnRlbnRUeXBlLmlzRW1wdHkoKSB8fCBuZXh0QmVzdE1lZGlhRW5naW5lKG1fY3VycmVudE1lZGlh
RW5naW5lKSkpIHsKKyAgICAgICAgaWYgKG1fYWN0aXZlRW5naW5lSWRlbnRpZmllci5pc0VtcHR5
KCkgJiYgaW5zdGFsbGVkTWVkaWFFbmdpbmVzKCkuc2l6ZSgpID4gMSAmJiAobV9jb250ZW50VHlw
ZS5pc0VtcHR5KCkgfHwgbmV4dEJlc3RNZWRpYUVuZ2luZShtX2N1cnJlbnRNZWRpYUVuZ2luZSkp
KSB7CiAgICAgICAgICAgICBtX3JlbG9hZFRpbWVyLnN0YXJ0T25lU2hvdCgwX3MpOwogICAgICAg
ICAgICAgcmV0dXJuOwogICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvTWVkaWFQbGF5ZXIuaAppbmRleCBmYjllYmEwZTRhYmUzMWM3NTI3MDBjYjdjZTY4OTBk
Yjk4OWMyMjJiLi4wMjVjZTIwYWYwMjk4NjZmZjkyZmRiOGQ4ZTRiMDBiZjg2NWViNGZjIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmgKQEAgLTY3
LDYgKzY3LDcgQEAgY2xhc3MgSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZTsKIGNsYXNzIExlZ2FjeUNE
TVNlc3Npb25DbGllbnQ7CiBjbGFzcyBNZWRpYVBsYXliYWNrVGFyZ2V0OwogY2xhc3MgTWVkaWFQ
bGF5ZXI7CitjbGFzcyBNZWRpYVBsYXllckZhY3Rvcnk7CiBjbGFzcyBNZWRpYVBsYXllclByaXZh
dGVJbnRlcmZhY2U7CiBjbGFzcyBNZWRpYVBsYXllclJlcXVlc3RJbnN0YWxsTWlzc2luZ1BsdWdp
bnNDYWxsYmFjazsKIGNsYXNzIE1lZGlhU291cmNlUHJpdmF0ZUNsaWVudDsKQEAgLTc2LDcgKzc3
LDYgQEAgY2xhc3MgVGV4dFRyYWNrUmVwcmVzZW50YXRpb247CiAKIHN0cnVjdCBDb29raWU7CiBz
dHJ1Y3QgR3JhcGhpY3NEZXZpY2VBZGFwdGVyOwotc3RydWN0IE1lZGlhUGxheWVyRmFjdG9yeTsK
IAogc3RydWN0IE1lZGlhRW5naW5lU3VwcG9ydFBhcmFtZXRlcnMgewogICAgIENvbnRlbnRUeXBl
IHR5cGU7CkBAIC04NCw2ICs4NCw0OCBAQCBzdHJ1Y3QgTWVkaWFFbmdpbmVTdXBwb3J0UGFyYW1l
dGVycyB7CiAgICAgYm9vbCBpc01lZGlhU291cmNlIHsgZmFsc2UgfTsKICAgICBib29sIGlzTWVk
aWFTdHJlYW0geyBmYWxzZSB9OwogICAgIFZlY3RvcjxDb250ZW50VHlwZT4gY29udGVudFR5cGVz
UmVxdWlyaW5nSGFyZHdhcmVTdXBwb3J0OworCisjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKQorICAg
IHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+CisgICAgdm9pZCBlbmNvZGUoRW5jb2RlciYgZW5jb2Rl
cikgY29uc3QKKyAgICB7CisgICAgICAgIGVuY29kZXIgPDwgdHlwZTsKKyAgICAgICAgZW5jb2Rl
ciA8PCB1cmw7CisgICAgICAgIGVuY29kZXIgPDwgaXNNZWRpYVNvdXJjZTsKKyAgICAgICAgZW5j
b2RlciA8PCBjb250ZW50VHlwZXNSZXF1aXJpbmdIYXJkd2FyZVN1cHBvcnQ7CisgICAgfQorCisg
ICAgdGVtcGxhdGUgPGNsYXNzIERlY29kZXI+CisgICAgc3RhdGljIE9wdGlvbmFsPE1lZGlhRW5n
aW5lU3VwcG9ydFBhcmFtZXRlcnM+IGRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQorICAgIHsKKyAg
ICAgICAgT3B0aW9uYWw8Q29udGVudFR5cGU+IHR5cGU7CisgICAgICAgIGRlY29kZXIgPj4gdHlw
ZTsKKyAgICAgICAgaWYgKCF0eXBlKQorICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsK
KworICAgICAgICBPcHRpb25hbDxVUkw+IHVybDsKKyAgICAgICAgZGVjb2RlciA+PiB1cmw7Cisg
ICAgICAgIGlmICghdXJsKQorICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKworICAg
ICAgICBPcHRpb25hbDxib29sPiBpc01lZGlhU291cmNlOworICAgICAgICBkZWNvZGVyID4+IGlz
TWVkaWFTb3VyY2U7CisgICAgICAgIGlmICghaXNNZWRpYVNvdXJjZSkKKyAgICAgICAgICAgIHJl
dHVybiBXVEY6Om51bGxvcHQ7CisKKyAgICAgICAgT3B0aW9uYWw8Ym9vbD4gaXNNZWRpYVN0cmVh
bTsKKyAgICAgICAgZGVjb2RlciA+PiBpc01lZGlhU3RyZWFtOworICAgICAgICBpZiAoIWlzTWVk
aWFTdHJlYW0pCisgICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworCisgICAgICAgIE9w
dGlvbmFsPFZlY3RvcjxDb250ZW50VHlwZT4+IHR5cGVzUmVxdWlyaW5nSGFyZHdhcmU7CisgICAg
ICAgIGRlY29kZXIgPj4gdHlwZXNSZXF1aXJpbmdIYXJkd2FyZTsKKyAgICAgICAgaWYgKCF0eXBl
c1JlcXVpcmluZ0hhcmR3YXJlKQorICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKwor
ICAgICAgICByZXR1cm4ge3sgV1RGTW92ZSgqdHlwZSksIFdURk1vdmUoKnVybCksIFdURk1vdmUo
KmlzTWVkaWFTb3VyY2UpLCBXVEZNb3ZlKCppc01lZGlhU3RyZWFtKSwgV1RGTW92ZSgqdHlwZXNS
ZXF1aXJpbmdIYXJkd2FyZSkgfX07CisgICAgfQorI2VuZGlmCiB9OwogCiBzdHJ1Y3QgVmlkZW9Q
bGF5YmFja1F1YWxpdHlNZXRyaWNzIHsKQEAgLTIzNSw3ICsyNzcsNyBAQCBwdWJsaWM6CiAjZW5k
aWYKIAogICAgIHZpcnR1YWwgYm9vbCBtZWRpYVBsYXllclNob3VsZERpc2FibGVTbGVlcCgpIGNv
bnN0IHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgdmlydHVhbCBjb25zdCBWZWN0b3I8Q29udGVudFR5
cGU+JiBtZWRpYUNvbnRlbnRUeXBlc1JlcXVpcmluZ0hhcmR3YXJlU3VwcG9ydCgpIGNvbnN0Owor
ICAgIHZpcnR1YWwgY29uc3QgVmVjdG9yPENvbnRlbnRUeXBlPiYgbWVkaWFDb250ZW50VHlwZXNS
ZXF1aXJpbmdIYXJkd2FyZVN1cHBvcnQoKSBjb25zdCA9IDA7CiAgICAgdmlydHVhbCBib29sIG1l
ZGlhUGxheWVyU2hvdWxkQ2hlY2tIYXJkd2FyZVN1cHBvcnQoKSBjb25zdCB7IHJldHVybiBmYWxz
ZTsgfQogCiAjaWYgIVJFTEVBU0VfTE9HX0RJU0FCTEVECkBAIC0yNDQsMTYgKzI4NiwxOCBAQCBw
dWJsaWM6CiAjZW5kaWYKIH07CiAKLWNsYXNzIE1lZGlhUGxheWVyIDogcHVibGljIE1lZGlhUGxh
eWVyRW51bXMsIHB1YmxpYyBSZWZDb3VudGVkPE1lZGlhUGxheWVyPiB7CitjbGFzcyBXRUJDT1JF
X0VYUE9SVCBNZWRpYVBsYXllciA6IHB1YmxpYyBNZWRpYVBsYXllckVudW1zLCBwdWJsaWMgUmVm
Q291bnRlZDxNZWRpYVBsYXllcj4gewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKE1lZGlhUGxh
eWVyKTsgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgc3RhdGljIFJlZjxN
ZWRpYVBsYXllcj4gY3JlYXRlKE1lZGlhUGxheWVyQ2xpZW50Jik7CisgICAgc3RhdGljIFJlZjxN
ZWRpYVBsYXllcj4gY3JlYXRlKE1lZGlhUGxheWVyQ2xpZW50JiwgY29uc3QgU3RyaW5nJik7CiAg
ICAgdmlydHVhbCB+TWVkaWFQbGF5ZXIoKTsKIAogICAgIHZvaWQgaW52YWxpZGF0ZSgpOwogCiAg
ICAgLy8gTWVkaWEgZW5naW5lIHN1cHBvcnQuCiAgICAgdXNpbmcgTWVkaWFQbGF5ZXJFbnVtczo6
U3VwcG9ydHNUeXBlOworICAgIHN0YXRpYyBjb25zdCBNZWRpYVBsYXllckZhY3RvcnkqIG1lZGlh
RW5naW5lKGNvbnN0IFN0cmluZyYpOwogICAgIHN0YXRpYyBTdXBwb3J0c1R5cGUgc3VwcG9ydHNU
eXBlKGNvbnN0IE1lZGlhRW5naW5lU3VwcG9ydFBhcmFtZXRlcnMmKTsKICAgICBzdGF0aWMgdm9p
ZCBnZXRTdXBwb3J0ZWRUeXBlcyhIYXNoU2V0PFN0cmluZywgQVNDSUlDYXNlSW5zZW5zaXRpdmVI
YXNoPiYpOwogICAgIHN0YXRpYyBib29sIGlzQXZhaWxhYmxlKCk7CkBAIC01OTYsMTEgKzY0MCwx
MyBAQCBwdWJsaWM6CiAKIHByaXZhdGU6CiAgICAgTWVkaWFQbGF5ZXIoTWVkaWFQbGF5ZXJDbGll
bnQmKTsKKyAgICBNZWRpYVBsYXllcihNZWRpYVBsYXllckNsaWVudCYsIGNvbnN0IFN0cmluZyYp
OwogCiAgICAgTWVkaWFQbGF5ZXJDbGllbnQmIGNsaWVudCgpIGNvbnN0IHsgcmV0dXJuICptX2Ns
aWVudDsgfQogCi0gICAgY29uc3QgTWVkaWFQbGF5ZXJGYWN0b3J5KiBuZXh0QmVzdE1lZGlhRW5n
aW5lKGNvbnN0IE1lZGlhUGxheWVyRmFjdG9yeSopIGNvbnN0OworICAgIGNvbnN0IE1lZGlhUGxh
eWVyRmFjdG9yeSogbmV4dEJlc3RNZWRpYUVuZ2luZShjb25zdCBNZWRpYVBsYXllckZhY3Rvcnkq
KTsKICAgICB2b2lkIGxvYWRXaXRoTmV4dE1lZGlhRW5naW5lKGNvbnN0IE1lZGlhUGxheWVyRmFj
dG9yeSopOworICAgIGNvbnN0IE1lZGlhUGxheWVyRmFjdG9yeSogbmV4dE1lZGlhRW5naW5lKGNv
bnN0IE1lZGlhUGxheWVyRmFjdG9yeSopOwogICAgIHZvaWQgcmVsb2FkVGltZXJGaXJlZCgpOwog
CiAgICAgTWVkaWFQbGF5ZXJDbGllbnQqIG1fY2xpZW50OwpAQCAtNjEwLDYgKzY1Niw3IEBAIHBy
aXZhdGU6CiAgICAgVVJMIG1fdXJsOwogICAgIENvbnRlbnRUeXBlIG1fY29udGVudFR5cGU7CiAg
ICAgU3RyaW5nIG1fa2V5U3lzdGVtOworICAgIFN0cmluZyBtX2FjdGl2ZUVuZ2luZUlkZW50aWZp
ZXI7CiAgICAgSW50U2l6ZSBtX3NpemU7CiAgICAgUHJlbG9hZCBtX3ByZWxvYWQgeyBBdXRvIH07
CiAgICAgZG91YmxlIG1fdm9sdW1lIHsgMSB9OwpAQCAtNjI5LDE2ICs2NzYsMjQgQEAgcHJpdmF0
ZToKICNlbmRpZgogfTsKIAotdXNpbmcgQ3JlYXRlTWVkaWFFbmdpbmVQbGF5ZXIgPSBXVEY6OkZ1
bmN0aW9uPHN0ZDo6dW5pcXVlX3B0cjxNZWRpYVBsYXllclByaXZhdGVJbnRlcmZhY2U+IChNZWRp
YVBsYXllciopPjsKLXR5cGVkZWYgdm9pZCAoKk1lZGlhRW5naW5lU3VwcG9ydGVkVHlwZXMpKEhh
c2hTZXQ8U3RyaW5nLCBBU0NJSUNhc2VJbnNlbnNpdGl2ZUhhc2g+JiB0eXBlcyk7Ci10eXBlZGVm
IE1lZGlhUGxheWVyOjpTdXBwb3J0c1R5cGUgKCpNZWRpYUVuZ2luZVN1cHBvcnRzVHlwZSkoY29u
c3QgTWVkaWFFbmdpbmVTdXBwb3J0UGFyYW1ldGVycyYgcGFyYW1ldGVycyk7Ci10eXBlZGVmIEhh
c2hTZXQ8UmVmUHRyPFNlY3VyaXR5T3JpZ2luPj4gKCpNZWRpYUVuZ2luZU9yaWdpbnNJbk1lZGlh
Q2FjaGUpKGNvbnN0IFN0cmluZyYgcGF0aCk7Ci10eXBlZGVmIHZvaWQgKCpNZWRpYUVuZ2luZUNs
ZWFyTWVkaWFDYWNoZSkoY29uc3QgU3RyaW5nJiBwYXRoLCBXYWxsVGltZSBtb2RpZmllZFNpbmNl
KTsKLXR5cGVkZWYgdm9pZCAoKk1lZGlhRW5naW5lQ2xlYXJNZWRpYUNhY2hlRm9yT3JpZ2lucyko
Y29uc3QgU3RyaW5nJiBwYXRoLCBjb25zdCBIYXNoU2V0PFJlZlB0cjxTZWN1cml0eU9yaWdpbj4+
Jik7Ci10eXBlZGVmIGJvb2wgKCpNZWRpYUVuZ2luZVN1cHBvcnRzS2V5U3lzdGVtKShjb25zdCBT
dHJpbmcmIGtleVN5c3RlbSwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSk7CitjbGFzcyBNZWRpYVBs
YXllckZhY3RvcnkgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOworcHVibGljOgorICAg
IE1lZGlhUGxheWVyRmFjdG9yeSgpID0gZGVmYXVsdDsKKyAgICB2aXJ0dWFsIH5NZWRpYVBsYXll
ckZhY3RvcnkoKSB7IH0KKworICAgIHZpcnR1YWwgc3RkOjp1bmlxdWVfcHRyPE1lZGlhUGxheWVy
UHJpdmF0ZUludGVyZmFjZT4gY3JlYXRlTWVkaWFFbmdpbmVQbGF5ZXIoTWVkaWFQbGF5ZXIqKSBj
b25zdCA9IDA7CisgICAgdmlydHVhbCB2b2lkIGdldFN1cHBvcnRlZFR5cGVzKEhhc2hTZXQ8U3Ry
aW5nLCBBU0NJSUNhc2VJbnNlbnNpdGl2ZUhhc2g+JikgY29uc3QgPSAwOworICAgIHZpcnR1YWwg
TWVkaWFQbGF5ZXI6OlN1cHBvcnRzVHlwZSBzdXBwb3J0c1R5cGVBbmRDb2RlY3MoY29uc3QgTWVk
aWFFbmdpbmVTdXBwb3J0UGFyYW1ldGVycyYpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIFN0cmlu
ZyBpZGVudGlmaWVyKCkgY29uc3QgID0gMDsKKworICAgIHZpcnR1YWwgSGFzaFNldDxSZWZQdHI8
U2VjdXJpdHlPcmlnaW4+PiBvcmlnaW5zSW5NZWRpYUNhY2hlKGNvbnN0IFN0cmluZyYpIGNvbnN0
IHsgcmV0dXJuIHsgfTsgfQorICAgIHZpcnR1YWwgdm9pZCBjbGVhck1lZGlhQ2FjaGUoY29uc3Qg
U3RyaW5nJiwgV2FsbFRpbWUpIGNvbnN0IHsgfQorICAgIHZpcnR1YWwgdm9pZCBjbGVhck1lZGlh
Q2FjaGVGb3JPcmlnaW5zKGNvbnN0IFN0cmluZyYsIGNvbnN0IEhhc2hTZXQ8UmVmUHRyPFNlY3Vy
aXR5T3JpZ2luPj4mKSBjb25zdCB7IH0KKyAgICB2aXJ0dWFsIGJvb2wgc3VwcG9ydHNLZXlTeXN0
ZW0oY29uc3QgU3RyaW5nJiAvKiBrZXlTeXN0ZW0gKi8sIGNvbnN0IFN0cmluZyYgLyogbWltZVR5
cGUgKi8pIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9Cit9OwogCi10eXBlZGVmIHZvaWQgKCpNZWRp
YUVuZ2luZVJlZ2lzdHJhcikoQ3JlYXRlTWVkaWFFbmdpbmVQbGF5ZXImJiwgTWVkaWFFbmdpbmVT
dXBwb3J0ZWRUeXBlcywgTWVkaWFFbmdpbmVTdXBwb3J0c1R5cGUsCi0gICAgTWVkaWFFbmdpbmVP
cmlnaW5zSW5NZWRpYUNhY2hlLCBNZWRpYUVuZ2luZUNsZWFyTWVkaWFDYWNoZSwgTWVkaWFFbmdp
bmVDbGVhck1lZGlhQ2FjaGVGb3JPcmlnaW5zLCBNZWRpYUVuZ2luZVN1cHBvcnRzS2V5U3lzdGVt
KTsKK3R5cGVkZWYgdm9pZCAoKk1lZGlhRW5naW5lUmVnaXN0cmFyKShzdGQ6OnVuaXF1ZV9wdHI8
TWVkaWFQbGF5ZXJGYWN0b3J5Pik7CiB0eXBlZGVmIHZvaWQgKCpNZWRpYUVuZ2luZVJlZ2lzdGVy
KShNZWRpYUVuZ2luZVJlZ2lzdHJhcik7CiAKIGNsYXNzIE1lZGlhUGxheWVyRmFjdG9yeVN1cHBv
cnQgewpAQCAtNjQ2LDYgKzcwMSwxMyBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgc3Rh
dGljIHZvaWQgY2FsbFJlZ2lzdGVyTWVkaWFFbmdpbmUoTWVkaWFFbmdpbmVSZWdpc3Rlcik7CiB9
OwogCitjbGFzcyBSZW1vdGVNZWRpYVBsYXllclN1cHBvcnQgeworcHVibGljOgorICAgIHVzaW5n
IFJlZ2lzdGVyUmVtb3RlUGxheWVyQ2FsbGJhY2sgPSBzdGQ6OmZ1bmN0aW9uPHZvaWQoTWVkaWFF
bmdpbmVSZWdpc3RyYXIsIGNvbnN0IFN0cmluZyYpPjsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0
aWMgdm9pZCBzZXRSZWdpc3RlclJlbW90ZVBsYXllckNhbGxiYWNrKFJlZ2lzdGVyUmVtb3RlUGxh
eWVyQ2FsbGJhY2smJik7Cit9OworCisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlm
IC8vIEVOQUJMRShWSURFTykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL01lZGlhUGxheWVyRW5naW5lSWRlbnRpZmllcnMuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyRW5naW5lSWRlbnRpZmllcnMuaApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li5jMjZlZmM1MDMzN2MyYmZkZjUxYWNlYWFiNDllN2NjYTc2ZWNmNTUzCi0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXJFbmdpbmVJ
ZGVudGlmaWVycy5oCkBAIC0wLDAgKzEsNDMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBB
TlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
ICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgorICogQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAor
ICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjcHJhZ21hIG9uY2UKKwor
I2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisK
K2NsYXNzIE1lZGlhUGxheWVyRW5naW5lSWRlbnRpZmllcnMgeworcHVibGljOgorICAgIHN0YXRp
YyBjb25zdCBjaGFyKiBhdkZvdW5kYXRpb25FbmdpbmVJZGVudGlmaWVyKCkgeyByZXR1cm4gIk1l
ZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMiOyB9CisgICAgc3RhdGljIGNvbnN0IGNo
YXIqIGF2Rm91bmRhdGlvbk1TRUVuZ2luZUlkZW50aWZpZXIoKSB7IHJldHVybiAiTWVkaWFQbGF5
ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDIjsgfQorICAgIHN0YXRpYyBjb25zdCBjaGFyKiBh
dkZvdW5kYXRpb25NZWRpYVN0cmVhbUVuZ2luZUlkZW50aWZpZXIoKSB7IHJldHVybiAiTWVkaWFQ
bGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDIjsgfQorICAgIHN0YXRpYyBjb25zdCBjaGFy
KiBHU3RyZWFtZXJNZWRpYUVuZ2luZUlkZW50aWZpZXIoKSB7IHJldHVybiAiTWVkaWFQbGF5ZXJQ
cml2YXRlR1N0cmVhbWVyIjsgfQorICAgIHN0YXRpYyBjb25zdCBjaGFyKiBHU3RyZWFtZXJNU0VN
ZWRpYUVuZ2luZUlkZW50aWZpZXIoKSB7IHJldHVybiAiTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVh
bWVyTVNFIjsgfQorICAgIHN0YXRpYyBjb25zdCBjaGFyKiBob2xlUHVuY2hNZWRpYUVuZ2luZUlk
ZW50aWZpZXIoKSB7IHJldHVybiAiTWVkaWFQbGF5ZXJQcml2YXRlSG9sZVB1bmNoIjsgfQorICAg
IHN0YXRpYyBjb25zdCBjaGFyKiBNZWRpYUZvdW5kYXRpb25NZWRpYUVuZ2luZUlkZW50aWZpZXIo
KSB7IHJldHVybiAiTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFGb3VuZGF0aW9uIjsgfQorfTsKKwor
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvUGxhdGZvcm1UaW1lUmFuZ2VzLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9QbGF0Zm9ybVRpbWVSYW5nZXMuaAppbmRleCAxODg4Njk1Yzc2ZTkyNmZiM2Vk
NGIzYTUxMGM5YmIwMzNiNDM3MzMwLi41MzZmNmFhMmE1YTc5NjYwNGQ1NzMxOWU2MTZhYmU1Njgz
ZmExY2IxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9QbGF0
Zm9ybVRpbWVSYW5nZXMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Q
bGF0Zm9ybVRpbWVSYW5nZXMuaApAQCAtMzYsNyArMzYsNyBAQCBjbGFzcyBQcmludFN0cmVhbTsK
IAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBQbGF0Zm9ybVRpbWVSYW5nZXMgeworY2xh
c3MgV0VCQ09SRV9FWFBPUlQgUGxhdGZvcm1UaW1lUmFuZ2VzIHsKICAgICBXVEZfTUFLRV9GQVNU
X0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBleHBsaWNpdCBQbGF0Zm9ybVRpbWVSYW5nZXMoKSB7
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRh
dGlvbi9jZi9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25DRi5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vY2YvTWVkaWFQbGF5ZXJQcml2YXRl
QVZGb3VuZGF0aW9uQ0YuY3BwCmluZGV4IDBjZThjZWI0OGJkNzg4Y2ViMTlhYTlkZDg5N2Y5Mjk5
ZGVhYmRkMGQuLmYzNTYxNTMzYjE2OWI3YjdmNmE0NWJkNjc1ZjgwYzcwZDI3MDA4NmYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9jZi9N
ZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25DRi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL2NmL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91
bmRhdGlvbkNGLmNwcApAQCAtMzQyLDExICszNDIsMzcgQEAgc3RhdGljIGRpc3BhdGNoX3F1ZXVl
X3QgZ2xvYmFsTG9hZGVyRGVsZWdhdGVRdWV1ZSgpCiB9CiAjZW5kaWYKIAorY2xhc3MgTWVkaWFQ
bGF5ZXJGYWN0b3J5QVZGb3VuZGF0aW9uQ0YgOiBwdWJsaWMgTWVkaWFQbGF5ZXJGYWN0b3J5IHsK
K3B1YmxpYzoKKyAgICBTdHJpbmcgaWRlbnRpZmllcigpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIE1l
ZGlhUGxheWVyRW5naW5lSWRlbnRpZmllcnM6OmF2Rm91bmRhdGlvbk1lZGlhU3RyZWFtSWRlbnRp
ZmllcigpOyB9OworCisgICAgc3RkOjp1bmlxdWVfcHRyPE1lZGlhUGxheWVyUHJpdmF0ZUludGVy
ZmFjZT4gY3JlYXRlTWVkaWFFbmdpbmVQbGF5ZXIoTWVkaWFQbGF5ZXIqIHBsYXllcikgY29uc3Qg
ZmluYWwKKyAgICB7CisgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPE1lZGlhUGxheWVyUHJpdmF0
ZUFWRm91bmRhdGlvbkNGPihwbGF5ZXIpOworICAgIH0KKworICAgIHZvaWQgZ2V0U3VwcG9ydGVk
VHlwZXMoSGFzaFNldDxTdHJpbmcsIEFTQ0lJQ2FzZUluc2Vuc2l0aXZlSGFzaD4mIHR5cGVzKSBj
b25zdCBmaW5hbAorICAgIHsKKyAgICAgICAgcmV0dXJuIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91
bmRhdGlvbkNGOjpnZXRTdXBwb3J0ZWRUeXBlcyh0eXBlcyk7CisgICAgfQorCisgICAgTWVkaWFQ
bGF5ZXI6OlN1cHBvcnRzVHlwZSBzdXBwb3J0c1R5cGVBbmRDb2RlY3MoY29uc3QgTWVkaWFFbmdp
bmVTdXBwb3J0UGFyYW1ldGVycyYgcGFyYW1ldGVycykgY29uc3QgZmluYWwKKyAgICB7CisgICAg
ICAgIHJldHVybiBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25DRjo6c3VwcG9ydHNUeXBl
KHBhcmFtZXRlcnMpOworICAgIH0KKworICAgIGJvb2wgc3VwcG9ydHNLZXlTeXN0ZW0oY29uc3Qg
U3RyaW5nJiBrZXlTeXN0ZW0sIGNvbnN0IFN0cmluZyYgbWltZVR5cGUpIGNvbnN0IGZpbmFsCisg
ICAgeworICAgICAgICByZXR1cm4gTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uQ0Y6OnN1
cHBvcnRzS2V5U3lzdGVtKGtleVN5c3RlbSwgbWltZVR5cGUpOworICAgIH0KK307CisKIHZvaWQg
TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uQ0Y6OnJlZ2lzdGVyTWVkaWFFbmdpbmUoTWVk
aWFFbmdpbmVSZWdpc3RyYXIgcmVnaXN0cmFyKQogewotICAgIGlmIChpc0F2YWlsYWJsZSgpKQot
ICAgICAgICByZWdpc3RyYXIoW10oTWVkaWFQbGF5ZXIqIHBsYXllcikgeyByZXR1cm4gbWFrZVVu
aXF1ZTxNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25DRj4ocGxheWVyKTsgfSwKLSAgICAg
ICAgICAgIGdldFN1cHBvcnRlZFR5cGVzLCBzdXBwb3J0c1R5cGUsIDAsIDAsIDAsIHN1cHBvcnRz
S2V5U3lzdGVtKTsKKyAgICBpZiAoIWlzQXZhaWxhYmxlKCkpCisgICAgICAgIHJldHVybjsKKwor
ICAgIHJlZ2lzdHJhcihtYWtlVW5pcXVlPE1lZGlhUGxheWVyRmFjdG9yeUFWRm91bmRhdGlvbkNG
PigpKTsKIH0KIAogTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uQ0Y6Ok1lZGlhUGxheWVy
UHJpdmF0ZUFWRm91bmRhdGlvbkNGKE1lZGlhUGxheWVyKiBwbGF5ZXIpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBs
YXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25P
YmpDLmgKaW5kZXggZTk4ZDhlYTkwMDA0NzE4Y2ZjOTA0NGEwOTgzNmFmMGI5MGUwZmUwMS4uZTBi
ZWUyNDNiOTRiZmU2NDQ0Y2JmNWQ2ZDU5ZWY4NjgwNTczODkzYiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQ
cml2YXRlQVZGb3VuZGF0aW9uT2JqQy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9i
akMuaApAQCAtMTYyLDYgKzE2Miw3IEBAIHB1YmxpYzoKIAogcHJpdmF0ZToKICAgICAvLyBlbmdp
bmUgc3VwcG9ydAorICAgIGZyaWVuZCBjbGFzcyBNZWRpYVBsYXllckZhY3RvcnlBVkZvdW5kYXRp
b25PYmpDOwogICAgIHN0YXRpYyB2b2lkIGdldFN1cHBvcnRlZFR5cGVzKEhhc2hTZXQ8U3RyaW5n
LCBBU0NJSUNhc2VJbnNlbnNpdGl2ZUhhc2g+JiB0eXBlcyk7CiAgICAgc3RhdGljIE1lZGlhUGxh
eWVyOjpTdXBwb3J0c1R5cGUgc3VwcG9ydHNUeXBlKGNvbnN0IE1lZGlhRW5naW5lU3VwcG9ydFBh
cmFtZXRlcnMmKTsKICAgICBzdGF0aWMgYm9vbCBzdXBwb3J0c0tleVN5c3RlbShjb25zdCBTdHJp
bmcmIGtleVN5c3RlbSwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXll
clByaXZhdGVBVkZvdW5kYXRpb25PYmpDLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2Jq
Qy5tbQppbmRleCA1NDEwMzkxMzQxOWVlNWQ0OGU5ZWMxYWNiNjg5MmY5OGRkZTlmM2JkLi4zZjU0
YTU0MzdjMmZmY2I5MzI3Mjk5MDg4YmYxOWNmZmU2N2RmNmVmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclBy
aXZhdGVBVkZvdW5kYXRpb25PYmpDLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9i
akMubW0KQEAgLTUwLDYgKzUwLDcgQEAKICNpbXBvcnQgIkxvZ2dpbmcuaCIKICNpbXBvcnQgIk1l
ZGlhUGxheWJhY2tUYXJnZXRNYWMuaCIKICNpbXBvcnQgIk1lZGlhUGxheWJhY2tUYXJnZXRNb2Nr
LmgiCisjaW1wb3J0ICJNZWRpYVBsYXllckVuZ2luZUlkZW50aWZpZXJzLmgiCiAjaW1wb3J0ICJN
ZWRpYVNlbGVjdGlvbkdyb3VwQVZGT2JqQy5oIgogI2ltcG9ydCAiT3V0T2ZCYW5kVGV4dFRyYWNr
UHJpdmF0ZUFWRi5oIgogI2ltcG9ydCAiUGl4ZWxCdWZmZXJDb25mb3JtZXJDVi5oIgpAQCAtMjcz
LDE0ICsyNzQsNTQgQEAgc3RhdGljIGRpc3BhdGNoX3F1ZXVlX3QgZ2xvYmFsUHVsbERlbGVnYXRl
UXVldWUoKQogfQogI2VuZGlmCiAKK2NsYXNzIE1lZGlhUGxheWVyRmFjdG9yeUFWRm91bmRhdGlv
bk9iakMgOiBwdWJsaWMgTWVkaWFQbGF5ZXJGYWN0b3J5IHsKK3B1YmxpYzoKKyAgICBTdHJpbmcg
aWRlbnRpZmllcigpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIE1lZGlhUGxheWVyRW5naW5lSWRlbnRp
ZmllcnM6OmF2Rm91bmRhdGlvbkVuZ2luZUlkZW50aWZpZXIoKTsgfTsKKworICAgIHN0ZDo6dW5p
cXVlX3B0cjxNZWRpYVBsYXllclByaXZhdGVJbnRlcmZhY2U+IGNyZWF0ZU1lZGlhRW5naW5lUGxh
eWVyKE1lZGlhUGxheWVyKiBwbGF5ZXIpIGNvbnN0IGZpbmFsCisgICAgeworICAgICAgICByZXR1
cm4gbWFrZVVuaXF1ZTxNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDPihwbGF5ZXIp
OworICAgIH0KKworICAgIHZvaWQgZ2V0U3VwcG9ydGVkVHlwZXMoSGFzaFNldDxTdHJpbmcsIEFT
Q0lJQ2FzZUluc2Vuc2l0aXZlSGFzaD4mIHR5cGVzKSBjb25zdCBmaW5hbAorICAgIHsKKyAgICAg
ICAgcmV0dXJuIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OmdldFN1cHBvcnRl
ZFR5cGVzKHR5cGVzKTsKKyAgICB9CisKKyAgICBNZWRpYVBsYXllcjo6U3VwcG9ydHNUeXBlIHN1
cHBvcnRzVHlwZUFuZENvZGVjcyhjb25zdCBNZWRpYUVuZ2luZVN1cHBvcnRQYXJhbWV0ZXJzJiBw
YXJhbWV0ZXJzKSBjb25zdCBmaW5hbAorICAgIHsKKyAgICAgICAgcmV0dXJuIE1lZGlhUGxheWVy
UHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OnN1cHBvcnRzVHlwZShwYXJhbWV0ZXJzKTsKKyAgICB9
CisKKyAgICBIYXNoU2V0PFJlZlB0cjxTZWN1cml0eU9yaWdpbj4+IG9yaWdpbnNJbk1lZGlhQ2Fj
aGUoY29uc3QgU3RyaW5nJiBwYXRoKSBjb25zdCBmaW5hbAorICAgIHsKKyAgICAgICAgcmV0dXJu
IE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6Om9yaWdpbnNJbk1lZGlhQ2FjaGUo
cGF0aCk7CisgICAgfQorCisgICAgdm9pZCBjbGVhck1lZGlhQ2FjaGUoY29uc3QgU3RyaW5nJiBw
YXRoLCBXYWxsVGltZSBtb2RpZmllZFNpbmNlKSBjb25zdCBmaW5hbAorICAgIHsKKyAgICAgICAg
cmV0dXJuIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OmNsZWFyTWVkaWFDYWNo
ZShwYXRoLCBtb2RpZmllZFNpbmNlKTsKKyAgICB9CisKKyAgICB2b2lkIGNsZWFyTWVkaWFDYWNo
ZUZvck9yaWdpbnMoY29uc3QgU3RyaW5nJiBwYXRoLCBjb25zdCBIYXNoU2V0PFJlZlB0cjxTZWN1
cml0eU9yaWdpbj4+JiBvcmlnaW5zKSBjb25zdCBmaW5hbAorICAgIHsKKyAgICAgICAgcmV0dXJu
IE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OmNsZWFyTWVkaWFDYWNoZUZvck9y
aWdpbnMocGF0aCwgb3JpZ2lucyk7CisgICAgfQorCisgICAgYm9vbCBzdXBwb3J0c0tleVN5c3Rl
bShjb25zdCBTdHJpbmcmIGtleVN5c3RlbSwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSkgY29uc3Qg
ZmluYWwKKyAgICB7CisgICAgICAgIHJldHVybiBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRp
b25PYmpDOjpzdXBwb3J0c0tleVN5c3RlbShrZXlTeXN0ZW0sIG1pbWVUeXBlKTsKKyAgICB9Cit9
OworCiB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OnJlZ2lzdGVyTWVk
aWFFbmdpbmUoTWVkaWFFbmdpbmVSZWdpc3RyYXIgcmVnaXN0cmFyKQogewogICAgIGlmICghaXNB
dmFpbGFibGUoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgcmVnaXN0cmFyKFtdKE1lZGlhUGxh
eWVyKiBwbGF5ZXIpIHsgcmV0dXJuIG1ha2VVbmlxdWU8TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3Vu
ZGF0aW9uT2JqQz4ocGxheWVyKTsgfSwKLSAgICAgICAgICAgIGdldFN1cHBvcnRlZFR5cGVzLCBz
dXBwb3J0c1R5cGUsIG9yaWdpbnNJbk1lZGlhQ2FjaGUsIGNsZWFyTWVkaWFDYWNoZSwgY2xlYXJN
ZWRpYUNhY2hlRm9yT3JpZ2lucywgc3VwcG9ydHNLZXlTeXN0ZW0pOwogICAgIEFTU0VSVChBVkFz
c2V0TUlNRVR5cGVDYWNoZTo6c2luZ2xldG9uKCkuaXNBdmFpbGFibGUoKSk7CisKKyAgICByZWdp
c3RyYXIobWFrZVVuaXF1ZTxNZWRpYVBsYXllckZhY3RvcnlBVkZvdW5kYXRpb25PYmpDPigpKTsK
IH0KIAogc3RhdGljIEFWQXNzZXRDYWNoZSAqYXNzZXRDYWNoZUZvclBhdGgoY29uc3QgU3RyaW5n
JiBwYXRoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZm
b3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDLm1tIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQ
bGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDLm1tCmluZGV4IDcxNTI4Yzk5YzBjYzYwN2Qz
OGYyZWYzZTA3Mjg4Y2Y2ZDMzNTFmZDYuLjY1NjE3MDEyMjBiMDU0MWM1M2M0Yjg2ZGI3NGY4Mjdm
YjAwZGFmZjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2
Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQy5tbQor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9N
ZWRpYVBsYXllclByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMubW0KQEAgLTM0LDYgKzM0LDcgQEAK
ICNpbXBvcnQgIkNETVNlc3Npb25BVlN0cmVhbVNlc3Npb24uaCIKICNpbXBvcnQgIkdyYXBoaWNz
Q29udGV4dENHLmgiCiAjaW1wb3J0ICJMb2dnaW5nLmgiCisjaW1wb3J0ICJNZWRpYVBsYXllckVu
Z2luZUlkZW50aWZpZXJzLmgiCiAjaW1wb3J0ICJNZWRpYVNvdXJjZVByaXZhdGVBVkZPYmpDLmgi
CiAjaW1wb3J0ICJNZWRpYVNvdXJjZVByaXZhdGVDbGllbnQuaCIKICNpbXBvcnQgIlBpeGVsQnVm
ZmVyQ29uZm9ybWVyQ1YuaCIKQEAgLTE5NiwxNCArMTk3LDM0IEBAIE1lZGlhUGxheWVyUHJpdmF0
ZU1lZGlhU291cmNlQVZGT2JqQzo6fk1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2Jq
QygpCiAjcHJhZ21hIG1hcmsgLQogI3ByYWdtYSBtYXJrIE1lZGlhUGxheWVyIEZhY3RvcnkgTWV0
aG9kcwogCitjbGFzcyBNZWRpYVBsYXllckZhY3RvcnlNZWRpYVNvdXJjZUFWRk9iakMgOiBwdWJs
aWMgTWVkaWFQbGF5ZXJGYWN0b3J5IHsKK3B1YmxpYzoKKyAgICBTdHJpbmcgaWRlbnRpZmllcigp
IGNvbnN0IGZpbmFsIHsgcmV0dXJuIE1lZGlhUGxheWVyRW5naW5lSWRlbnRpZmllcnM6OmF2Rm91
bmRhdGlvbk1TRUVuZ2luZUlkZW50aWZpZXIoKTsgfTsKKworICAgIHN0ZDo6dW5pcXVlX3B0cjxN
ZWRpYVBsYXllclByaXZhdGVJbnRlcmZhY2U+IGNyZWF0ZU1lZGlhRW5naW5lUGxheWVyKE1lZGlh
UGxheWVyKiBwbGF5ZXIpIGNvbnN0IGZpbmFsCisgICAgeworICAgICAgICByZXR1cm4gbWFrZVVu
aXF1ZTxNZWRpYVBsYXllclByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakM+KHBsYXllcik7ICAgICAg
ICAKKyAgICB9CisKKyAgICB2b2lkIGdldFN1cHBvcnRlZFR5cGVzKEhhc2hTZXQ8U3RyaW5nLCBB
U0NJSUNhc2VJbnNlbnNpdGl2ZUhhc2g+JiB0eXBlcykgY29uc3QgZmluYWwKKyAgICB7CisgICAg
ICAgIHJldHVybiBNZWRpYVBsYXllclByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakM6OmdldFN1cHBv
cnRlZFR5cGVzKHR5cGVzKTsKKyAgICB9CisKKyAgICBNZWRpYVBsYXllcjo6U3VwcG9ydHNUeXBl
IHN1cHBvcnRzVHlwZUFuZENvZGVjcyhjb25zdCBNZWRpYUVuZ2luZVN1cHBvcnRQYXJhbWV0ZXJz
JiBwYXJhbWV0ZXJzKSBjb25zdCBmaW5hbAorICAgIHsKKyAgICAgICAgcmV0dXJuIE1lZGlhUGxh
eWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQzo6c3VwcG9ydHNUeXBlKHBhcmFtZXRlcnMpOwor
ICAgIH0KK307CisKIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDOjpy
ZWdpc3Rlck1lZGlhRW5naW5lKE1lZGlhRW5naW5lUmVnaXN0cmFyIHJlZ2lzdHJhcikKIHsKICAg
ICBpZiAoIWlzQXZhaWxhYmxlKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIHJlZ2lzdHJhcihb
XShNZWRpYVBsYXllciogcGxheWVyKSB7IHJldHVybiBtYWtlVW5pcXVlPE1lZGlhUGxheWVyUHJp
dmF0ZU1lZGlhU291cmNlQVZGT2JqQz4ocGxheWVyKTsgfSwKLSAgICAgICAgZ2V0U3VwcG9ydGVk
VHlwZXMsIHN1cHBvcnRzVHlwZSwgMCwgMCwgMCwgMCk7CiAgICAgQVNTRVJUKEFWQXNzZXRNSU1F
VHlwZUNhY2hlOjpzaW5nbGV0b24oKS5pc0F2YWlsYWJsZSgpKTsKKworICAgIHJlZ2lzdHJhciht
YWtlVW5pcXVlPE1lZGlhUGxheWVyRmFjdG9yeU1lZGlhU291cmNlQVZGT2JqQz4oKSk7CiB9CiAK
IGJvb2wgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDOjppc0F2YWlsYWJsZSgp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRp
b24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakMubW0gYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclBy
aXZhdGVNZWRpYVN0cmVhbUFWRk9iakMubW0KaW5kZXggNjMxNDgxNGJjODhmYzljZjdlYmJjZTk0
ZmM4ZTcxOTFkZjNmNDU0Zi4uMTc5YWVjY2UwNmY4MDI5ZjI0ZDNhMzQyYmMwMTAwMjBkMjM0NTM2
OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0
aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDLm1tCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxh
eWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQy5tbQpAQCAtMzEsNiArMzEsNyBAQAogI2ltcG9y
dCAiQXVkaW9UcmFja1ByaXZhdGVNZWRpYVN0cmVhbUNvY29hLmgiCiAjaW1wb3J0ICJHcmFwaGlj
c0NvbnRleHRDRy5oIgogI2ltcG9ydCAiTG9nZ2luZy5oIgorI2ltcG9ydCAiTWVkaWFQbGF5ZXJF
bmdpbmVJZGVudGlmaWVycy5oIgogI2ltcG9ydCAiTWVkaWFTdHJlYW1Qcml2YXRlLmgiCiAjaW1w
b3J0ICJQaXhlbEJ1ZmZlckNvbmZvcm1lckNWLmgiCiAjaW1wb3J0ICJWaWRlb0Z1bGxzY3JlZW5M
YXllck1hbmFnZXJPYmpDLmgiCkBAIC0yMjAsMTEgKzIyMSwzMiBAQCBNZWRpYVBsYXllclByaXZh
dGVNZWRpYVN0cmVhbUFWRk9iakM6On5NZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9i
akMoKQogI3ByYWdtYSBtYXJrIC0KICNwcmFnbWEgbWFyayBNZWRpYVBsYXllciBGYWN0b3J5IE1l
dGhvZHMKIAorY2xhc3MgTWVkaWFQbGF5ZXJGYWN0b3J5TWVkaWFTdHJlYW1BVkZPYmpDIDogcHVi
bGljIE1lZGlhUGxheWVyRmFjdG9yeSB7CitwdWJsaWM6CisgICAgU3RyaW5nIGlkZW50aWZpZXIo
KSBjb25zdCBmaW5hbCB7IHJldHVybiBNZWRpYVBsYXllckVuZ2luZUlkZW50aWZpZXJzOjphdkZv
dW5kYXRpb25NZWRpYVN0cmVhbUVuZ2luZUlkZW50aWZpZXIoKTsgfTsKKworICAgIHN0ZDo6dW5p
cXVlX3B0cjxNZWRpYVBsYXllclByaXZhdGVJbnRlcmZhY2U+IGNyZWF0ZU1lZGlhRW5naW5lUGxh
eWVyKE1lZGlhUGxheWVyKiBwbGF5ZXIpIGNvbnN0IGZpbmFsCisgICAgeworICAgICAgICByZXR1
cm4gbWFrZVVuaXF1ZTxNZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakM+KHBsYXll
cik7CisgICAgfQorCisgICAgdm9pZCBnZXRTdXBwb3J0ZWRUeXBlcyhIYXNoU2V0PFN0cmluZywg
QVNDSUlDYXNlSW5zZW5zaXRpdmVIYXNoPiYgdHlwZXMpIGNvbnN0IGZpbmFsCisgICAgeworICAg
ICAgICByZXR1cm4gTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDOjpnZXRTdXBw
b3J0ZWRUeXBlcyh0eXBlcyk7CisgICAgfQorCisgICAgTWVkaWFQbGF5ZXI6OlN1cHBvcnRzVHlw
ZSBzdXBwb3J0c1R5cGVBbmRDb2RlY3MoY29uc3QgTWVkaWFFbmdpbmVTdXBwb3J0UGFyYW1ldGVy
cyYgcGFyYW1ldGVycykgY29uc3QgZmluYWwKKyAgICB7CisgICAgICAgIHJldHVybiBNZWRpYVBs
YXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakM6OnN1cHBvcnRzVHlwZShwYXJhbWV0ZXJzKTsK
KyAgICB9Cit9OworCiB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQzo6
cmVnaXN0ZXJNZWRpYUVuZ2luZShNZWRpYUVuZ2luZVJlZ2lzdHJhciByZWdpc3RyYXIpCiB7Ci0g
ICAgaWYgKGlzQXZhaWxhYmxlKCkpCi0gICAgICAgIHJlZ2lzdHJhcihbXShNZWRpYVBsYXllciog
cGxheWVyKSB7IHJldHVybiBtYWtlVW5pcXVlPE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFt
QVZGT2JqQz4ocGxheWVyKTsgfSwgZ2V0U3VwcG9ydGVkVHlwZXMsCi0gICAgICAgICAgICBzdXBw
b3J0c1R5cGUsIDAsIDAsIDAsIDApOworICAgIGlmICghaXNBdmFpbGFibGUoKSkKKyAgICAgICAg
cmV0dXJuOworCisgICAgcmVnaXN0cmFyKG1ha2VVbmlxdWU8TWVkaWFQbGF5ZXJGYWN0b3J5TWVk
aWFTdHJlYW1BVkZPYmpDPigpKTsKIH0KIAogYm9vbCBNZWRpYVBsYXllclByaXZhdGVNZWRpYVN0
cmVhbUFWRk9iakM6OmlzQXZhaWxhYmxlKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVy
UHJpdmF0ZUdTdHJlYW1lci5jcHAKaW5kZXggMDEyN2M1N2QxYWI4NTFmM2MyNDc2OGUwYTU1NzFh
OGZmM2ZhZTZlZS4uYzc3MjEyMDgxMjE0NjVlYzg4Mzc5NTdhYTA0M2U5OGZlOTA2YjI5MCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlh
UGxheWVyUHJpdmF0ZUdTdHJlYW1lci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5jcHAKQEAgLTM3
LDYgKzM3LDcgQEAKICNpbmNsdWRlICJJbnRSZWN0LmgiCiAjaW5jbHVkZSAiTG9nZ2luZy5oIgog
I2luY2x1ZGUgIk1lZGlhUGxheWVyLmgiCisjaW5jbHVkZSAiTWVkaWFQbGF5ZXJFbmdpbmVJZGVu
dGlmaWVycy5oIgogI2luY2x1ZGUgIk1lZGlhUGxheWVyUmVxdWVzdEluc3RhbGxNaXNzaW5nUGx1
Z2luc0NhbGxiYWNrLmgiCiAjaW5jbHVkZSAiTUlNRVR5cGVSZWdpc3RyeS5oIgogI2luY2x1ZGUg
Ik5vdEltcGxlbWVudGVkLmgiCkBAIC00NjQsMTQgKzQ2NSwzNyBAQCBib29sIE1lZGlhUGxheWVy
UHJpdmF0ZUdTdHJlYW1lcjo6aXNBdmFpbGFibGUoKQogICAgIHJldHVybiBmYWN0b3J5OwogfQog
CitjbGFzcyBNZWRpYVBsYXllckZhY3RvcnlHU3RyZWFtZXIgOiBwdWJsaWMgTWVkaWFQbGF5ZXJG
YWN0b3J5IHsKK3B1YmxpYzoKKyAgICBTdHJpbmcgaWRlbnRpZmllcigpIGNvbnN0IGZpbmFsIHsg
cmV0dXJuIE1lZGlhUGxheWVyRW5naW5lSWRlbnRpZmllcnM6OkdTdHJlYW1lck1lZGlhRW5naW5l
SWRlbnRpZmllcigpOyB9OworCisgICAgc3RkOjp1bmlxdWVfcHRyPE1lZGlhUGxheWVyUHJpdmF0
ZUludGVyZmFjZT4gY3JlYXRlTWVkaWFFbmdpbmVQbGF5ZXIoTWVkaWFQbGF5ZXIqIHBsYXllcikg
Y29uc3QgZmluYWwKKyAgICB7CisgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPE1lZGlhUGxheWVy
UHJpdmF0ZUdTdHJlYW1lcj4ocGxheWVyKTsKKyAgICB9CisKKyAgICB2b2lkIGdldFN1cHBvcnRl
ZFR5cGVzKEhhc2hTZXQ8U3RyaW5nLCBBU0NJSUNhc2VJbnNlbnNpdGl2ZUhhc2g+JiB0eXBlcykg
Y29uc3QgZmluYWwKKyAgICB7CisgICAgICAgIHJldHVybiBNZWRpYVBsYXllclByaXZhdGVHU3Ry
ZWFtZXI6OmdldFN1cHBvcnRlZFR5cGVzKHR5cGVzKTsKKyAgICB9CisKKyAgICBNZWRpYVBsYXll
cjo6U3VwcG9ydHNUeXBlIHN1cHBvcnRzVHlwZUFuZENvZGVjcyhjb25zdCBNZWRpYUVuZ2luZVN1
cHBvcnRQYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzKSBjb25zdCBmaW5hbAorICAgIHsKKyAgICAgICAg
cmV0dXJuIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6c3VwcG9ydHNUeXBlKHBhcmFtZXRl
cnMpOworICAgIH0KKworICAgIGJvb2wgc3VwcG9ydHNLZXlTeXN0ZW0oY29uc3QgU3RyaW5nJiBr
ZXlTeXN0ZW0sIGNvbnN0IFN0cmluZyYgbWltZVR5cGUpIGNvbnN0IGZpbmFsCisgICAgeworICAg
ICAgICByZXR1cm4gTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpzdXBwb3J0c0tleVN5c3Rl
bShrZXlTeXN0ZW0sIG1pbWVUeXBlKTsKKyAgICB9Cit9OworCiB2b2lkIE1lZGlhUGxheWVyUHJp
dmF0ZUdTdHJlYW1lcjo6cmVnaXN0ZXJNZWRpYUVuZ2luZShNZWRpYUVuZ2luZVJlZ2lzdHJhciBy
ZWdpc3RyYXIpCiB7CiAgICAgaW5pdGlhbGl6ZURlYnVnQ2F0ZWdvcnkoKTsKIAotICAgIGlmIChp
c0F2YWlsYWJsZSgpKSB7Ci0gICAgICAgIHJlZ2lzdHJhcihbXShNZWRpYVBsYXllciogcGxheWVy
KSB7IHJldHVybiBtYWtlVW5pcXVlPE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcj4ocGxheWVy
KTsgfSwKLSAgICAgICAgICAgIGdldFN1cHBvcnRlZFR5cGVzLCBzdXBwb3J0c1R5cGUsIG51bGxw
dHIsIG51bGxwdHIsIG51bGxwdHIsIHN1cHBvcnRzS2V5U3lzdGVtKTsKLSAgICB9CisgICAgaWYg
KGlzQXZhaWxhYmxlKCkpCisgICAgICAgIHJlZ2lzdHJhcihtYWtlVW5pcXVlPE1lZGlhUGxheWVy
RmFjdG9yeUdTdHJlYW1lcj4oKSk7CiB9CiAKIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVh
bWVyOjpsb2FkRnVsbChjb25zdCBTdHJpbmcmIHVybFN0cmluZywgY29uc3QgU3RyaW5nJiBwaXBl
bGluZU5hbWUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9n
c3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmgK
aW5kZXggMTUyYzA5MzVkYjcyOGI2MWNhYmYwM2FmMWJkODkxNTY2MDQxYjExMy4uNDJmZTJlYTk3
MDE3Y2QwMjNmNTZhZTJjM2Y4ODAwODMwNjY0NzJjZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1l
ci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRp
YVBsYXllclByaXZhdGVHU3RyZWFtZXIuaApAQCAtMzk0LDYgKzM5NCw3IEBAIHByaXZhdGU6CiAg
ICAgR3N0RWxlbWVudCogY3JlYXRlQXVkaW9TaW5rKCk7CiAgICAgR3N0RWxlbWVudCogYXVkaW9T
aW5rKCkgY29uc3Q7CiAKKyAgICBmcmllbmQgY2xhc3MgTWVkaWFQbGF5ZXJGYWN0b3J5R1N0cmVh
bWVyOwogICAgIHN0YXRpYyB2b2lkIGdldFN1cHBvcnRlZFR5cGVzKEhhc2hTZXQ8U3RyaW5nLCBB
U0NJSUNhc2VJbnNlbnNpdGl2ZUhhc2g+Jik7CiAgICAgc3RhdGljIE1lZGlhUGxheWVyOjpTdXBw
b3J0c1R5cGUgc3VwcG9ydHNUeXBlKGNvbnN0IE1lZGlhRW5naW5lU3VwcG9ydFBhcmFtZXRlcnMm
KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVh
bWVyL21zZS9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJNU0UuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL21zZS9NZWRpYVBsYXllclByaXZhdGVHU3Ry
ZWFtZXJNU0UuY3BwCmluZGV4IGRjMjQ1YjQ3ZGUzZGU3MmZhYzIzNjcyZTVmNmVmZDRiMzc2Mjli
NGIuLmRkNzIxMmQ4NzE0NDZmYWQ0ZmFhNjQ0MGYxZTE1MzhmYjgxZTBhODAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9tc2UvTWVkaWFQbGF5
ZXJQcml2YXRlR1N0cmVhbWVyTVNFLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9nc3RyZWFtZXIvbXNlL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lck1TRS5jcHAK
QEAgLTM2LDYgKzM2LDcgQEAKICNpbmNsdWRlICJNSU1FVHlwZVJlZ2lzdHJ5LmgiCiAjaW5jbHVk
ZSAiTWVkaWFEZXNjcmlwdGlvbi5oIgogI2luY2x1ZGUgIk1lZGlhUGxheWVyLmgiCisjaW5jbHVk
ZSAiTWVkaWFQbGF5ZXJFbmdpbmVJZGVudGlmaWVycy5oIgogI2luY2x1ZGUgIk5vdEltcGxlbWVu
dGVkLmgiCiAjaW5jbHVkZSAiUGxheWJhY2tQaXBlbGluZS5oIgogI2luY2x1ZGUgIlNvdXJjZUJ1
ZmZlclByaXZhdGVHU3RyZWFtZXIuaCIKQEAgLTcyLDE0ICs3MywzNyBAQCBHU1RfREVCVUdfQ0FU
RUdPUlkod2Via2l0X21zZV9kZWJ1Zyk7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorY2xhc3Mg
TWVkaWFQbGF5ZXJGYWN0b3J5R1N0cmVhbWVyTVNFIDogcHVibGljIE1lZGlhUGxheWVyRmFjdG9y
eSB7CitwdWJsaWM6CisgICAgU3RyaW5nIGlkZW50aWZpZXIoKSBjb25zdCBmaW5hbCB7IHJldHVy
biBNZWRpYVBsYXllckVuZ2luZUlkZW50aWZpZXJzOjpHU3RyZWFtZXJNU0VNZWRpYUVuZ2luZUlk
ZW50aWZpZXIoKTsgfTsKKworICAgIHN0ZDo6dW5pcXVlX3B0cjxNZWRpYVBsYXllclByaXZhdGVJ
bnRlcmZhY2U+IGNyZWF0ZU1lZGlhRW5naW5lUGxheWVyKE1lZGlhUGxheWVyKiBwbGF5ZXIpIGNv
bnN0IGZpbmFsCisgICAgeworICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxNZWRpYVBsYXllclBy
aXZhdGVHU3RyZWFtZXJNU0U+KHBsYXllcik7CisgICAgfQorCisgICAgdm9pZCBnZXRTdXBwb3J0
ZWRUeXBlcyhIYXNoU2V0PFN0cmluZywgQVNDSUlDYXNlSW5zZW5zaXRpdmVIYXNoPiYgdHlwZXMp
IGNvbnN0IGZpbmFsCisgICAgeworICAgICAgICByZXR1cm4gTWVkaWFQbGF5ZXJQcml2YXRlR1N0
cmVhbWVyTVNFOjpnZXRTdXBwb3J0ZWRUeXBlcyh0eXBlcyk7CisgICAgfQorCisgICAgTWVkaWFQ
bGF5ZXI6OlN1cHBvcnRzVHlwZSBzdXBwb3J0c1R5cGVBbmRDb2RlY3MoY29uc3QgTWVkaWFFbmdp
bmVTdXBwb3J0UGFyYW1ldGVycyYgcGFyYW1ldGVycykgY29uc3QgZmluYWwKKyAgICB7CisgICAg
ICAgIHJldHVybiBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJNU0U6OnN1cHBvcnRzVHlwZShw
YXJhbWV0ZXJzKTsKKyAgICB9CisKKyAgICBib29sIHN1cHBvcnRzS2V5U3lzdGVtKGNvbnN0IFN0
cmluZyYga2V5U3lzdGVtLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlKSBjb25zdCBmaW5hbAorICAg
IHsKKyAgICAgICAgcmV0dXJuIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lck1TRTo6c3VwcG9y
dHNLZXlTeXN0ZW0oa2V5U3lzdGVtLCBtaW1lVHlwZSk7CisgICAgfQorfTsKKwogdm9pZCBNZWRp
YVBsYXllclByaXZhdGVHU3RyZWFtZXJNU0U6OnJlZ2lzdGVyTWVkaWFFbmdpbmUoTWVkaWFFbmdp
bmVSZWdpc3RyYXIgcmVnaXN0cmFyKQogewogICAgIGluaXRpYWxpemVHU3RyZWFtZXJBbmRSZWdp
c3RlcldlYktpdEVsZW1lbnRzKCk7CiAgICAgR1NUX0RFQlVHX0NBVEVHT1JZX0lOSVQod2Via2l0
X21zZV9kZWJ1ZywgIndlYmtpdG1zZSIsIDAsICJXZWJLaXQgTVNFIG1lZGlhIHBsYXllciIpOwot
ICAgIGlmIChpc0F2YWlsYWJsZSgpKSB7Ci0gICAgICAgIHJlZ2lzdHJhcihbXShNZWRpYVBsYXll
ciogcGxheWVyKSB7IHJldHVybiBtYWtlVW5pcXVlPE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1l
ck1TRT4ocGxheWVyKTsgfSwKLSAgICAgICAgICAgIGdldFN1cHBvcnRlZFR5cGVzLCBzdXBwb3J0
c1R5cGUsIG51bGxwdHIsIG51bGxwdHIsIG51bGxwdHIsIHN1cHBvcnRzS2V5U3lzdGVtKTsKLSAg
ICB9CisgICAgaWYgKGlzQXZhaWxhYmxlKCkpCisgICAgICAgIHJlZ2lzdHJhcihtYWtlVW5pcXVl
PE1lZGlhUGxheWVyRmFjdG9yeUdTdHJlYW1lcj4oKSk7CiB9CiAKIE1lZGlhUGxheWVyUHJpdmF0
ZUdTdHJlYW1lck1TRTo6TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyTVNFKE1lZGlhUGxheWVy
KiBwbGF5ZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9n
c3RyZWFtZXIvbXNlL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lck1TRS5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL21zZS9NZWRpYVBsYXllclByaXZhdGVH
U3RyZWFtZXJNU0UuaAppbmRleCA5YjMzMzA1ZjdmMTE2ZGFjOTFjNjQxYzQ4NDU5M2JlN2E4MzA3
MzVmLi41ZDEwMTNmY2JlZjA1NzkzNDgwYmIzOGVkZWZlNGI2NGYwYWNmNDJjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvbXNlL01lZGlhUGxh
eWVyUHJpdmF0ZUdTdHJlYW1lck1TRS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2dzdHJlYW1lci9tc2UvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyTVNFLmgKQEAg
LTg1LDYgKzg1LDcgQEAgcHVibGljOgogICAgIHZvaWQgdW5ibG9ja0R1cmF0aW9uQ2hhbmdlcygp
OwogCiBwcml2YXRlOgorICAgIGZyaWVuZCBjbGFzcyBNZWRpYVBsYXllckZhY3RvcnlHU3RyZWFt
ZXJNU0U7CiAgICAgc3RhdGljIHZvaWQgZ2V0U3VwcG9ydGVkVHlwZXMoSGFzaFNldDxTdHJpbmcs
IEFTQ0lJQ2FzZUluc2Vuc2l0aXZlSGFzaD4mKTsKICAgICBzdGF0aWMgTWVkaWFQbGF5ZXI6OlN1
cHBvcnRzVHlwZSBzdXBwb3J0c1R5cGUoY29uc3QgTWVkaWFFbmdpbmVTdXBwb3J0UGFyYW1ldGVy
cyYpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ob2xl
cHVuY2gvTWVkaWFQbGF5ZXJQcml2YXRlSG9sZVB1bmNoLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2hvbGVwdW5jaC9NZWRpYVBsYXllclByaXZhdGVIb2xlUHVuY2guY3Bw
CmluZGV4IDBmMDhjMTlkYmRiZTY5YjA2ZjdiNzU1M2Y4YWI0OTdkNDdlMzc3YTkuLjMwYjEzZThh
M2Q5ZWNlYjQzYWMzYmM4NzU2ZGI0NTMwMTk5NzI5Y2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2hvbGVwdW5jaC9NZWRpYVBsYXllclByaXZhdGVIb2xlUHVu
Y2guY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2hvbGVwdW5jaC9N
ZWRpYVBsYXllclByaXZhdGVIb2xlUHVuY2guY3BwCkBAIC0yMyw2ICsyMyw3IEBACiAKICNpZiBV
U0UoRVhURVJOQUxfSE9MRVBVTkNIKQogI2luY2x1ZGUgIk1lZGlhUGxheWVyLmgiCisjaW5jbHVk
ZSAiTWVkaWFQbGF5ZXJFbmdpbmVJZGVudGlmaWVycy5oIgogI2luY2x1ZGUgIlRleHR1cmVNYXBw
ZXJQbGF0Zm9ybUxheWVyQnVmZmVyLmgiCiAjaW5jbHVkZSAiVGV4dHVyZU1hcHBlclBsYXRmb3Jt
TGF5ZXJQcm94eS5oIgogCkBAIC0xMzksMTAgKzE0MCwyOSBAQCBNZWRpYVBsYXllcjo6U3VwcG9y
dHNUeXBlIE1lZGlhUGxheWVyUHJpdmF0ZUhvbGVQdW5jaDo6c3VwcG9ydHNUeXBlKGNvbnN0IE1l
ZGlhRQogICAgIHJldHVybiBNZWRpYVBsYXllcjo6SXNOb3RTdXBwb3J0ZWQ7CiB9CiAKK2NsYXNz
IE1lZGlhUGxheWVyRmFjdG9yeUhvbGVQdW5jaCA6IHB1YmxpYyBNZWRpYVBsYXllckZhY3Rvcnkg
eworcHVibGljOgorICAgIFN0cmluZyBpZGVudGlmaWVyKCkgY29uc3QgZmluYWwgeyByZXR1cm4g
TWVkaWFQbGF5ZXJFbmdpbmVJZGVudGlmaWVyczo6aG9sZVB1bmNoTWVkaWFFbmdpbmVJZGVudGlm
aWVyKCk7IH07CisKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8TWVkaWFQbGF5ZXJQcml2YXRlSW50ZXJm
YWNlPiBjcmVhdGVNZWRpYUVuZ2luZVBsYXllcihNZWRpYVBsYXllciogcGxheWVyKSBjb25zdCBm
aW5hbAorICAgIHsKKyAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8TWVkaWFQbGF5ZXJQcml2YXRl
SG9sZVB1bmNoPihwbGF5ZXIpOworICAgIH0KKworICAgIHZvaWQgZ2V0U3VwcG9ydGVkVHlwZXMo
SGFzaFNldDxTdHJpbmcsIEFTQ0lJQ2FzZUluc2Vuc2l0aXZlSGFzaD4mIHR5cGVzKSBjb25zdCBm
aW5hbAorICAgIHsKKyAgICAgICAgcmV0dXJuIE1lZGlhUGxheWVyUHJpdmF0ZUhvbGVQdW5jaDo6
Z2V0U3VwcG9ydGVkVHlwZXModHlwZXMpOworICAgIH0KKworICAgIE1lZGlhUGxheWVyOjpTdXBw
b3J0c1R5cGUgc3VwcG9ydHNUeXBlQW5kQ29kZWNzKGNvbnN0IE1lZGlhRW5naW5lU3VwcG9ydFBh
cmFtZXRlcnMmIHBhcmFtZXRlcnMpIGNvbnN0IGZpbmFsCisgICAgeworICAgICAgICByZXR1cm4g
TWVkaWFQbGF5ZXJQcml2YXRlSG9sZVB1bmNoOjpzdXBwb3J0c1R5cGUocGFyYW1ldGVycyk7Cisg
ICAgfQorfTsKKwogdm9pZCBNZWRpYVBsYXllclByaXZhdGVIb2xlUHVuY2g6OnJlZ2lzdGVyTWVk
aWFFbmdpbmUoTWVkaWFFbmdpbmVSZWdpc3RyYXIgcmVnaXN0cmFyKQogewotICAgIHJlZ2lzdHJh
cihbXShNZWRpYVBsYXllciogcGxheWVyKSB7IHJldHVybiBtYWtlVW5pcXVlPE1lZGlhUGxheWVy
UHJpdmF0ZUhvbGVQdW5jaD4ocGxheWVyKTsgfSwKLSAgICAgICAgZ2V0U3VwcG9ydGVkVHlwZXMs
IHN1cHBvcnRzVHlwZSwgbnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0cik7CisgICAg
cmVnaXN0cmFyKG1ha2VVbmlxdWU8TWVkaWFQbGF5ZXJGYWN0b3J5SG9sZVB1bmNoPigpKTsKIH0K
IAogdm9pZCBNZWRpYVBsYXllclByaXZhdGVIb2xlUHVuY2g6Om5vdGlmeVJlYWR5U3RhdGUoKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvaG9sZXB1bmNoL01l
ZGlhUGxheWVyUHJpdmF0ZUhvbGVQdW5jaC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvaG9sZXB1bmNoL01lZGlhUGxheWVyUHJpdmF0ZUhvbGVQdW5jaC5oCmluZGV4IDhiZjcy
MTMxODgxOWM0MDI2N2I3MjFmYTliODJhYzFjZDkyNmY5ZDIuLmNkMzc0ZWVlZmEyMjUyNmM2Mzli
ZDUxNmRjYjFkMzg4YzA3YzQ5NjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2hvbGVwdW5jaC9NZWRpYVBsYXllclByaXZhdGVIb2xlUHVuY2guaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ob2xlcHVuY2gvTWVkaWFQbGF5ZXJQcml2
YXRlSG9sZVB1bmNoLmgKQEAgLTk4LDYgKzk4LDcgQEAgcHVibGljOgogI2VuZGlmCiAKIHByaXZh
dGU6CisgICAgZnJpZW5kIGNsYXNzIE1lZGlhUGxheWVyRmFjdG9yeUhvbGVQdW5jaDsKICAgICBz
dGF0aWMgdm9pZCBnZXRTdXBwb3J0ZWRUeXBlcyhIYXNoU2V0PFN0cmluZywgQVNDSUlDYXNlSW5z
ZW5zaXRpdmVIYXNoPiYpOwogICAgIHN0YXRpYyBNZWRpYVBsYXllcjo6U3VwcG9ydHNUeXBlIHN1
cHBvcnRzVHlwZShjb25zdCBNZWRpYUVuZ2luZVN1cHBvcnRQYXJhbWV0ZXJzJik7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9NZWRpYVBsYXllclBy
aXZhdGVNZWRpYUZvdW5kYXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3Mvd2luL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhRm91bmRhdGlvbi5jcHAKaW5kZXggNmQ2NGFl
OWE2ZTNhNDE3ZmIxNGYxMjE2NmY2OGQzYzlhNTUyNjZkZS4uMzk1M2Y2NjBiNGEzZDkxNzIxZjcw
MDRjMDJiY2E4M2E1ZGMwYTliMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3Mvd2luL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhRm91bmRhdGlvbi5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL01lZGlhUGxheWVyUHJpdmF0ZU1l
ZGlhRm91bmRhdGlvbi5jcHAKQEAgLTMyLDYgKzMyLDcgQEAKICNpbmNsdWRlICJHcmFwaGljc0Nv
bnRleHQuaCIKICNpbmNsdWRlICJIV25kREMuaCIKICNpbmNsdWRlICJIb3N0V2luZG93LmgiCisj
aW5jbHVkZSAiTWVkaWFQbGF5ZXJFbmdpbmVJZGVudGlmaWVycy5oIgogI2luY2x1ZGUgIk5vdElt
cGxlbWVudGVkLmgiCiAjaWYgVVNFKENBSVJPKQogI2luY2x1ZGUgIkNhaXJvT3BlcmF0aW9ucy5o
IgpAQCAtNzksMTIgKzgwLDMwIEBAIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhRm91bmRhdGlvbjo6
fk1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhRm91bmRhdGlvbigpCiAgICAgZW5kU2Vzc2lvbigpOwog
fQogCitjbGFzcyBNZWRpYVBsYXllckZhY3RvcnlNZWRpYUZvdW5kYXRpb24gOiBwdWJsaWMgTWVk
aWFQbGF5ZXJGYWN0b3J5IHsKK3B1YmxpYzoKKyAgICBTdHJpbmcgaWRlbnRpZmllcigpIGNvbnN0
IGZpbmFsIHsgcmV0dXJuIE1lZGlhUGxheWVyRW5naW5lSWRlbnRpZmllcnM6Ok1lZGlhRm91bmRh
dGlvbk1lZGlhRW5naW5lSWRlbnRpZmllcigpOyB9OworCisgICAgc3RkOjp1bmlxdWVfcHRyPE1l
ZGlhUGxheWVyUHJpdmF0ZUludGVyZmFjZT4gY3JlYXRlTWVkaWFFbmdpbmVQbGF5ZXIoTWVkaWFQ
bGF5ZXIqIHBsYXllcikgY29uc3QgZmluYWwKKyAgICB7CisgICAgICAgIHJldHVybiBtYWtlVW5p
cXVlPE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhRm91bmRhdGlvbj4ocGxheWVyKTsKKyAgICB9CisK
KyAgICB2b2lkIGdldFN1cHBvcnRlZFR5cGVzKEhhc2hTZXQ8U3RyaW5nLCBBU0NJSUNhc2VJbnNl
bnNpdGl2ZUhhc2g+JiB0eXBlcykgY29uc3QgZmluYWwKKyAgICB7CisgICAgICAgIHJldHVybiBN
ZWRpYVBsYXllclByaXZhdGVNZWRpYUZvdW5kYXRpb246OmdldFN1cHBvcnRlZFR5cGVzKHR5cGVz
KTsKKyAgICB9CisKKyAgICBNZWRpYVBsYXllcjo6U3VwcG9ydHNUeXBlIHN1cHBvcnRzVHlwZUFu
ZENvZGVjcyhjb25zdCBNZWRpYUVuZ2luZVN1cHBvcnRQYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzKSBj
b25zdCBmaW5hbAorICAgIHsKKyAgICAgICAgcmV0dXJuIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlh
Rm91bmRhdGlvbjo6c3VwcG9ydHNUeXBlKHBhcmFtZXRlcnMpOworICAgIH0KK307CisKIHZvaWQg
TWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFGb3VuZGF0aW9uOjpyZWdpc3Rlck1lZGlhRW5naW5lKE1l
ZGlhRW5naW5lUmVnaXN0cmFyIHJlZ2lzdHJhcikKIHsKLSAgICBpZiAoaXNBdmFpbGFibGUoKSkg
ewotICAgICAgICByZWdpc3RyYXIoW10oTWVkaWFQbGF5ZXIqIHBsYXllcikgeyByZXR1cm4gbWFr
ZVVuaXF1ZTxNZWRpYVBsYXllclByaXZhdGVNZWRpYUZvdW5kYXRpb24+KHBsYXllcik7IH0sCi0g
ICAgICAgICAgICBnZXRTdXBwb3J0ZWRUeXBlcywgc3VwcG9ydHNUeXBlLCAwLCAwLCAwLCAwKTsK
LSAgICB9CisgICAgaWYgKGlzQXZhaWxhYmxlKCkpCisgICAgICAgIHJlZ2lzdHJhcihtYWtlVW5p
cXVlPE1lZGlhUGxheWVyRmFjdG9yeU1lZGlhRm91bmRhdGlvbj4oKSk7CiB9CiAKIGJvb2wgTWVk
aWFQbGF5ZXJQcml2YXRlTWVkaWFGb3VuZGF0aW9uOjppc0F2YWlsYWJsZSgpIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9tZWRpYXNvdXJjZS9Nb2NrTWVkaWFQbGF5
ZXJNZWRpYVNvdXJjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL21lZGlhc291
cmNlL01vY2tNZWRpYVBsYXllck1lZGlhU291cmNlLmNwcAppbmRleCAzODdhMjFkYWY0NTUyMzk2
OGFlZTRmNzk0MTlkM2Q4Yjg4NjkwZDdjLi45ZjJmNjc1MzZhNDk2NDhiODdhNmU1MWU1YzVkY2Ux
YmI5MmEyNmYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL21lZGlh
c291cmNlL01vY2tNZWRpYVBsYXllck1lZGlhU291cmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9tb2NrL21lZGlhc291cmNlL01vY2tNZWRpYVBsYXllck1lZGlhU291cmNlLmNw
cApAQCAtMzcsMTEgKzM3LDI3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorY2xhc3MgTWVk
aWFQbGF5ZXJGYWN0b3J5TWVkaWFTb3VyY2VNb2NrIDogcHVibGljIE1lZGlhUGxheWVyRmFjdG9y
eSB7CitwdWJsaWM6CisgICAgU3RyaW5nIGlkZW50aWZpZXIoKSBjb25zdCBmaW5hbCB7IHJldHVy
biAiTW9ja01lZGlhUGxheWVyTWVkaWFTb3VyY2UiOyB9OworCisgICAgc3RkOjp1bmlxdWVfcHRy
PE1lZGlhUGxheWVyUHJpdmF0ZUludGVyZmFjZT4gY3JlYXRlTWVkaWFFbmdpbmVQbGF5ZXIoTWVk
aWFQbGF5ZXIqIHBsYXllcikgY29uc3QgZmluYWwgeyByZXR1cm4gbWFrZVVuaXF1ZTxNb2NrTWVk
aWFQbGF5ZXJNZWRpYVNvdXJjZT4ocGxheWVyKTsgfQorCisgICAgdm9pZCBnZXRTdXBwb3J0ZWRU
eXBlcyhIYXNoU2V0PFN0cmluZywgQVNDSUlDYXNlSW5zZW5zaXRpdmVIYXNoPiYgdHlwZXMpIGNv
bnN0IGZpbmFsCisgICAgeworICAgICAgICByZXR1cm4gTW9ja01lZGlhUGxheWVyTWVkaWFTb3Vy
Y2U6OmdldFN1cHBvcnRlZFR5cGVzKHR5cGVzKTsKKyAgICB9CisKKyAgICBNZWRpYVBsYXllcjo6
U3VwcG9ydHNUeXBlIHN1cHBvcnRzVHlwZUFuZENvZGVjcyhjb25zdCBNZWRpYUVuZ2luZVN1cHBv
cnRQYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzKSBjb25zdCBmaW5hbAorICAgIHsKKyAgICAgICAgcmV0
dXJuIE1vY2tNZWRpYVBsYXllck1lZGlhU291cmNlOjpzdXBwb3J0c1R5cGUocGFyYW1ldGVycyk7
CisgICAgfQorfTsKKwogLy8gTWVkaWFQbGF5ZXIgRW5pZ25lIFN1cHBvcnQKIHZvaWQgTW9ja01l
ZGlhUGxheWVyTWVkaWFTb3VyY2U6OnJlZ2lzdGVyTWVkaWFFbmdpbmUoTWVkaWFFbmdpbmVSZWdp
c3RyYXIgcmVnaXN0cmFyKQogewotICAgIHJlZ2lzdHJhcihbXSAoTWVkaWFQbGF5ZXIqIHBsYXll
cikgeyByZXR1cm4gbWFrZVVuaXF1ZTxNb2NrTWVkaWFQbGF5ZXJNZWRpYVNvdXJjZT4ocGxheWVy
KTsgfSwgZ2V0U3VwcG9ydGVkVHlwZXMsCi0gICAgICAgIHN1cHBvcnRzVHlwZSwgMCwgMCwgMCwg
MCk7CisgICAgcmVnaXN0cmFyKG1ha2VVbmlxdWU8TWVkaWFQbGF5ZXJGYWN0b3J5TWVkaWFTb3Vy
Y2VNb2NrPigpKTsKIH0KIAogLy8gRklYTUU6IFdoYXQgZG9lcyB0aGUgd29yZCAiY2FjaGUiIG1l
YW4gaGVyZT8KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMtaW5wdXQu
eGNmaWxlbGlzdCBiL1NvdXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMtaW5wdXQueGNmaWxlbGlz
dAppbmRleCA3ZjA4ZjJiMmYxODU4MmVkNTA0MDMyZGNhY2I1NDc4NmExNjlhZDVmLi4zZWYxY2E4
OGZmYWVhYTI5ZGNkODNiNzU1YzJiM2JmMjg4ZjBmMmFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L0Rlcml2ZWRTb3VyY2VzLWlucHV0LnhjZmlsZWxpc3QKKysrIGIvU291cmNlL1dlYktpdC9E
ZXJpdmVkU291cmNlcy1pbnB1dC54Y2ZpbGVsaXN0CkBAIC0xNiw2ICsxNiw3IEBAICQoSkFWQVND
UklQVENPUkVfUFJJVkFURV9IRUFERVJTX0RJUikveHhkLnBsCiAkKFBST0pFQ1RfRElSKS9HUFVQ
cm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MubWVzc2FnZXMuaW4KICQoUFJPSkVDVF9E
SVIpL0dQVVByb2Nlc3MvR1BVUHJvY2Vzcy5tZXNzYWdlcy5pbgogJChQUk9KRUNUX0RJUikvR1BV
UHJvY2Vzcy9tYWMvY29tLmFwcGxlLldlYktpdC5HUFVQcm9jZXNzLnNiLmluCiskKFBST0pFQ1Rf
RElSKS9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5Lm1lc3Nh
Z2VzLmluCiAkKFBST0pFQ1RfRElSKS9OZXR3b3JrUHJvY2Vzcy9Db29raWVzL1dlYkNvb2tpZU1h
bmFnZXIubWVzc2FnZXMuaW4KICQoUFJPSkVDVF9ESVIpL05ldHdvcmtQcm9jZXNzL0N1c3RvbVBy
b3RvY29scy9MZWdhY3lDdXN0b21Qcm90b2NvbE1hbmFnZXIubWVzc2FnZXMuaW4KICQoUFJPSkVD
VF9ESVIpL05ldHdvcmtQcm9jZXNzL0luZGV4ZWREQi9XZWJJREJDb25uZWN0aW9uVG9DbGllbnQu
bWVzc2FnZXMuaW4KQEAgLTk3LDYgKzk4LDcgQEAgJChQUk9KRUNUX0RJUikvV2ViUHJvY2Vzcy9D
YWNoZS9XZWJDYWNoZVN0b3JhZ2VDb25uZWN0aW9uLm1lc3NhZ2VzLmluCiAkKFBST0pFQ1RfRElS
KS9XZWJQcm9jZXNzL0RhdGFiYXNlcy9JbmRleGVkREIvV2ViSURCQ29ubmVjdGlvblRvU2VydmVy
Lm1lc3NhZ2VzLmluCiAkKFBST0pFQ1RfRElSKS9XZWJQcm9jZXNzL0Z1bGxTY3JlZW4vV2ViRnVs
bFNjcmVlbk1hbmFnZXIubWVzc2FnZXMuaW4KICQoUFJPSkVDVF9ESVIpL1dlYlByb2Nlc3MvR1BV
L0dQVVByb2Nlc3NDb25uZWN0aW9uLm1lc3NhZ2VzLmluCiskKFBST0pFQ1RfRElSKS9XZWJQcm9j
ZXNzL0dQVS9tZWRpYS9SZW1vdGVNZWRpYVBsYXllck1hbmFnZXIubWVzc2FnZXMuaW4KICQoUFJP
SkVDVF9ESVIpL1dlYlByb2Nlc3MvR2VvbG9jYXRpb24vV2ViR2VvbG9jYXRpb25NYW5hZ2VyLm1l
c3NhZ2VzLmluCiAkKFBST0pFQ1RfRElSKS9XZWJQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nl
c3NDb25uZWN0aW9uLm1lc3NhZ2VzLmluCiAkKFBST0pFQ1RfRElSKS9XZWJQcm9jZXNzL05ldHdv
cmsvV2ViUmVzb3VyY2VMb2FkZXIubWVzc2FnZXMuaW4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvRGVyaXZlZFNvdXJjZXMtb3V0cHV0LnhjZmlsZWxpc3QgYi9Tb3VyY2UvV2ViS2l0L0Rlcml2
ZWRTb3VyY2VzLW91dHB1dC54Y2ZpbGVsaXN0CmluZGV4IDNiMWU5NDExNzAzOGJmMGQwNGEwNzU3
ZjVlNmQ4NWUzMzRiZDc1YWUuLmM4YTNiNDk1YzBjZTU1NDEyOTkyMzY4MTEzMjAwZGEyYjk0MDc5
MjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMtb3V0cHV0LnhjZmls
ZWxpc3QKKysrIGIvU291cmNlL1dlYktpdC9EZXJpdmVkU291cmNlcy1vdXRwdXQueGNmaWxlbGlz
dApAQCAtMTE0LDYgKzExNCwxMiBAQCAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJj
ZXMvV2ViS2l0Mi9QbHVnaW5Qcm94eU1lc3NhZ2VzUmVwbGllcy5oCiAkKEJVSUxUX1BST0RVQ1RT
X0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9SZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYVBy
b3h5TWVzc2FnZVJlY2VpdmVyLmNwcAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3Vy
Y2VzL1dlYktpdDIvUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWFQcm94eU1lc3NhZ2VzLmgKICQo
QlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQyL1JlbW90ZUxheWVyVHJl
ZURyYXdpbmdBcmVhUHJveHlNZXNzYWdlc1JlcGxpZXMuaAorJChCVUlMVF9QUk9EVUNUU19ESVIp
L0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIvUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyTWVzc2FnZVJl
Y2VpdmVyLmNwcAorJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIv
UmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyTWVzc2FnZXMuaAorJChCVUlMVF9QUk9EVUNUU19ESVIp
L0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIvUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyTWVzc2FnZXNS
ZXBsaWVzLmgKKyQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQyL1Jl
bW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5TWVzc2FnZVJlY2VpdmVyLmNwcAorJChCVUlMVF9Q
Uk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIvUmVtb3RlTWVkaWFQbGF5ZXJNYW5h
Z2VyUHJveHlNZXNzYWdlcy5oCiskKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMv
V2ViS2l0Mi9SZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eU1lc3NhZ2VzUmVwbGllcy5oCiAk
KEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9SZW1vdGVPYmplY3RS
ZWdpc3RyeU1lc3NhZ2VSZWNlaXZlci5jcHAKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVk
U291cmNlcy9XZWJLaXQyL1JlbW90ZU9iamVjdFJlZ2lzdHJ5TWVzc2FnZXMuaAogJChCVUlMVF9Q
Uk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIvUmVtb3RlT2JqZWN0UmVnaXN0cnlN
ZXNzYWdlc1JlcGxpZXMuaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9EZXJpdmVkU291cmNl
cy5tYWtlIGIvU291cmNlL1dlYktpdC9EZXJpdmVkU291cmNlcy5tYWtlCmluZGV4IGJlNTI1ZTEz
YzU5YmJkMTQ1NmU4ZjBkNDIzYmE2NDQxY2U4YjA4ZGEuLjk2ZjNhMmVjZWYzMTE4Y2UyM2YzODc1
MWQ3MmUyYWIwODNjZjRhYzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJj
ZXMubWFrZQorKysgYi9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2VzLm1ha2UKQEAgLTI0LDYg
KzI0LDcgQEAgVlBBVEggPSBcCiAgICAgJChXZWJLaXQyKSBcCiAgICAgJChXZWJLaXQyKS9HUFVQ
cm9jZXNzIFwKICAgICAkKFdlYktpdDIpL0dQVVByb2Nlc3MvbWFjIFwKKyAgICAkKFdlYktpdDIp
L0dQVVByb2Nlc3MvbWVkaWEgXAogICAgICQoV2ViS2l0MikvTmV0d29ya1Byb2Nlc3MgXAogICAg
ICQoV2ViS2l0MikvTmV0d29ya1Byb2Nlc3MvQ29va2llcyBcCiAgICAgJChXZWJLaXQyKS9OZXR3
b3JrUHJvY2Vzcy9jYWNoZSBcCkBAIC00OSw2ICs1MCw3IEBAIFZQQVRIID0gXAogICAgICQoV2Vi
S2l0MikvV2ViUHJvY2Vzcy9GdWxsU2NyZWVuIFwKICAgICAkKFdlYktpdDIpL1dlYlByb2Nlc3Mv
R2VvbG9jYXRpb24gXAogICAgICQoV2ViS2l0MikvV2ViUHJvY2Vzcy9HUFUgXAorICAgICQoV2Vi
S2l0MikvV2ViUHJvY2Vzcy9HUFUvbWVkaWEgXAogICAgICQoV2ViS2l0MikvV2ViUHJvY2Vzcy9J
Y29uRGF0YWJhc2UgXAogICAgICQoV2ViS2l0MikvV2ViUHJvY2Vzcy9NZWRpYUNhY2hlIFwKICAg
ICAkKFdlYktpdDIpL1dlYlByb2Nlc3MvTWVkaWFTdHJlYW0gXApAQCAtMTM1LDYgKzEzNyw4IEBA
IE1FU1NBR0VfUkVDRUlWRVJTID0gXAogICAgIFBsdWdpblByb2Nlc3NQcm94eSBcCiAgICAgUGx1
Z2luUHJveHkgXAogICAgIFJlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhUHJveHkgXAorICAgIFJl
bW90ZU1lZGlhUGxheWVyTWFuYWdlciBcCisgICAgUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJv
eHkgXAogICAgIFJlbW90ZU9iamVjdFJlZ2lzdHJ5IFwKICAgICBSZW1vdGVTY3JvbGxpbmdDb29y
ZGluYXRvciBcCiAgICAgUmVtb3RlV2ViSW5zcGVjdG9yUHJveHkgXApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwIGIvU291
cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwCmluZGV4
IGJkMTM5ZmU1MzMxYmNjZTM2YzMzNDNiMTUyMTdkMDExZjI1MjRjMzguLjQ3YTlhYzNjYzFmZDdl
YWZlZmRlNmI5NDAzYjBjYWRjYTJiNjljMmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BV
UHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L0dQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAKQEAgLTM1LDYgKzM1LDgg
QEAKICNpbmNsdWRlICJHUFVQcm9jZXNzUHJveHlNZXNzYWdlcy5oIgogI2luY2x1ZGUgIkxvZ2dp
bmcuaCIKICNpbmNsdWRlICJSZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYVByb3h5TWVzc2FnZXMu
aCIKKyNpbmNsdWRlICJSZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eS5oIgorI2luY2x1ZGUg
IlJlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5TWVzc2FnZXMuaCIKICNpbmNsdWRlICJSZW1v
dGVTY3JvbGxpbmdDb29yZGluYXRvclRyYW5zYWN0aW9uLmgiCiAjaW5jbHVkZSAiV2ViQ29yZUFy
Z3VtZW50Q29kZXJzLmgiCiAjaW5jbHVkZSAiV2ViRXJyb3JzLmgiCkBAIC01Miw2ICs1NCw3IEBA
IEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OkdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MoR1BV
UHJvY2VzcyYgZ3B1UHJvY2VzcywgV2ViCiAgICAgOiBtX2Nvbm5lY3Rpb24oSVBDOjpDb25uZWN0
aW9uOjpjcmVhdGVTZXJ2ZXJDb25uZWN0aW9uKGNvbm5lY3Rpb25JZGVudGlmaWVyLCAqdGhpcykp
CiAgICAgLCBtX2dwdVByb2Nlc3MoZ3B1UHJvY2VzcykKICAgICAsIG1fd2ViUHJvY2Vzc0lkZW50
aWZpZXIod2ViUHJvY2Vzc0lkZW50aWZpZXIpCisgICAgLCBtX3JlbW90ZU1lZGlhUGxheWVyTWFu
YWdlclByb3h5KG1ha2VVbmlxdWU8UmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHk+KCp0aGlz
KSkKIHsKICAgICBSRUxFQVNFX0FTU0VSVChSdW5Mb29wOjppc01haW4oKSk7CiAgICAgbV9jb25u
ZWN0aW9uLT5vcGVuKCk7CkBAIC02MSw2ICs2NCw3IEBAIEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nl
c3M6On5HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzKCkKIHsKICAgICBSRUxFQVNFX0FTU0VSVChS
dW5Mb29wOjppc01haW4oKSk7CiAKKyAgICBtX3JlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5
ID0gbnVsbHB0cjsKICAgICBtX2Nvbm5lY3Rpb24tPmludmFsaWRhdGUoKTsKIH0KIApAQCAtNzQs
NiArNzgsMjYgQEAgdm9pZCBHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpkaWRSZWNlaXZlSW52
YWxpZE1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiBjb25uZWMKICAgICBDUkFTSCgpOwogfQogCit2
b2lkIEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmRpZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29u
bmVjdGlvbiYgY29ubmVjdGlvbiwgSVBDOjpEZWNvZGVyJiBkZWNvZGVyKQoreworICAgIGlmIChk
ZWNvZGVyLm1lc3NhZ2VSZWNlaXZlck5hbWUoKSA9PSBNZXNzYWdlczo6UmVtb3RlTWVkaWFQbGF5
ZXJNYW5hZ2VyUHJveHk6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSkgeworICAgICAgICBpZiAobV9y
ZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eSkKKyAgICAgICAgICAgIG1fcmVtb3RlTWVkaWFQ
bGF5ZXJNYW5hZ2VyUHJveHktPmRpZFJlY2VpdmVNZXNzYWdlRnJvbVdlYlByb2Nlc3MoY29ubmVj
dGlvbiwgZGVjb2Rlcik7CisgICAgICAgIHJldHVybjsKKyAgICB9Cit9CisKK3ZvaWQgR1BVQ29u
bmVjdGlvblRvV2ViUHJvY2Vzczo6ZGlkUmVjZWl2ZVN5bmNNZXNzYWdlKElQQzo6Q29ubmVjdGlv
biYgY29ubmVjdGlvbiwgSVBDOjpEZWNvZGVyJiBkZWNvZGVyLCBzdGQ6OnVuaXF1ZV9wdHI8SVBD
OjpFbmNvZGVyPiYgcmVwbHlFbmNvZGVyKQoreworICAgIGlmIChkZWNvZGVyLm1lc3NhZ2VSZWNl
aXZlck5hbWUoKSA9PSBNZXNzYWdlczo6UmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHk6Om1l
c3NhZ2VSZWNlaXZlck5hbWUoKSkgeworICAgICAgICBpZiAobV9yZW1vdGVNZWRpYVBsYXllck1h
bmFnZXJQcm94eSkKKyAgICAgICAgICAgIG1fcmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHkt
PmRpZFJlY2VpdmVTeW5jTWVzc2FnZUZyb21XZWJQcm9jZXNzKGNvbm5lY3Rpb24sIGRlY29kZXIs
IHJlcGx5RW5jb2Rlcik7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBBU1NFUlRfTk9U
X1JFQUNIRUQoKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CiAKICNlbmRpZiAvLyBFTkFC
TEUoR1BVX1BST0NFU1MpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BV
Q29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQVUNv
bm5lY3Rpb25Ub1dlYlByb2Nlc3MuaAppbmRleCBjNjRhNDNlNjRhZjUxMGMwNzRkNzA4NmY3YjY0
NmZhNmM2YTRmNDY3Li44NjI1YjNjYjY5MmIwNzM1OGNhOWY4NjExMzY3Yjc1OTY1NTIyNWY3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJv
Y2Vzcy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzLmgKQEAgLTM1LDYgKzM1LDcgQEAKIG5hbWVzcGFjZSBXZWJLaXQgewogCiBjbGFzcyBH
UFVQcm9jZXNzOworY2xhc3MgUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHk7CiAKIGNsYXNz
IEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MKICAgICA6IHB1YmxpYyBSZWZDb3VudGVkPEdQVUNv
bm5lY3Rpb25Ub1dlYlByb2Nlc3M+CkBAIC01NywxMCArNTgsMTMgQEAgcHJpdmF0ZToKICAgICAv
LyBJUEM6OkNvbm5lY3Rpb246OkNsaWVudAogICAgIHZvaWQgZGlkQ2xvc2UoSVBDOjpDb25uZWN0
aW9uJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRSZWNlaXZlSW52YWxpZE1lc3NhZ2UoSVBDOjpD
b25uZWN0aW9uJiwgSVBDOjpTdHJpbmdSZWZlcmVuY2UgbWVzc2FnZVJlY2VpdmVyTmFtZSwgSVBD
OjpTdHJpbmdSZWZlcmVuY2UgbWVzc2FnZU5hbWUpIG92ZXJyaWRlOworICAgIHZvaWQgZGlkUmVj
ZWl2ZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJikgb3ZlcnJpZGU7Cisg
ICAgdm9pZCBkaWRSZWNlaXZlU3luY01lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNv
ZGVyJiwgc3RkOjp1bmlxdWVfcHRyPElQQzo6RW5jb2Rlcj4mKSBvdmVycmlkZTsKIAogICAgIFJl
ZjxJUEM6OkNvbm5lY3Rpb24+IG1fY29ubmVjdGlvbjsKICAgICBSZWY8R1BVUHJvY2Vzcz4gbV9n
cHVQcm9jZXNzOwogICAgIGNvbnN0IFdlYkNvcmU6OlByb2Nlc3NJZGVudGlmaWVyIG1fd2ViUHJv
Y2Vzc0lkZW50aWZpZXI7CisgICAgc3RkOjp1bmlxdWVfcHRyPFJlbW90ZU1lZGlhUGxheWVyTWFu
YWdlclByb3h5PiBtX3JlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5OwogfTsKIAogfSAvLyBu
YW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVk
aWEvUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9HUFVQ
cm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5LmNwcApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li42YTIyOTcyNDJjOTJmZWU3ZDU3NjZhNTEwODIzNGMyZDljNzRlMTgyCi0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyTWFu
YWdlclByb3h5LmNwcApAQCAtMCwwICsxLDE0NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAx
NyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBg
QVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklC
VVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJj
b25maWcuaCIKKyNpbmNsdWRlICJSZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eS5oIgorCisj
aWYgRU5BQkxFKEdQVV9QUk9DRVNTKQorCisjaW5jbHVkZSAiR1BVQ29ubmVjdGlvblRvV2ViUHJv
Y2Vzcy5oIgorI2luY2x1ZGUgIlJlbW90ZU1lZGlhUGxheWVyTWFuYWdlck1lc3NhZ2VzLmgiCisj
aW5jbHVkZSAiUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHlNZXNzYWdlcy5oIgorI2luY2x1
ZGUgIldlYkNvcmVBcmd1bWVudENvZGVycy5oIgorI2luY2x1ZGUgPFdlYkNvcmUvTWVkaWFQbGF5
ZXIuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL01lZGlhUGxheWVyUHJpdmF0ZS5oPgorI2luY2x1ZGUg
PHd0Zi9VbmlxdWVSZWYuaD4KKworI2RlZmluZSBNRVNTQUdFX0NIRUNLX0NPTlRFWFRJRChpZGVu
dGlmaWVyKSBNRVNTQUdFX0NIRUNLX0JBU0UobV9wcm94aWVzLmlzVmFsaWRLZXkoaWRlbnRpZmll
ciksICZtX3dlYlByb2Nlc3NDb25uZWN0aW9uLmNvbm5lY3Rpb24oKSkKKworbmFtZXNwYWNlIFdl
YktpdCB7Cit1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKKworI2lmICFSRUxFQVNFX0xPR19ESVNB
QkxFRAorc3RhdGljIFJlZlB0cjxMb2dnZXI+JiBudWxsTG9nZ2VyKCkKK3sKKyAgICBzdGF0aWMg
TmV2ZXJEZXN0cm95ZWQ8UmVmUHRyPExvZ2dlcj4+IGxvZ2dlcjsKKyAgICByZXR1cm4gbG9nZ2Vy
OworfQorI2VuZGlmCisKK2NsYXNzIFJlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5OjpQbGF5
ZXJQcm94eQorICAgIDogcHVibGljIE1lZGlhUGxheWVyQ2xpZW50IHsKKyAgICBXVEZfTUFLRV9G
QVNUX0FMTE9DQVRFRDsKK3B1YmxpYzoKKyAgICBQbGF5ZXJQcm94eShjb25zdCBNZWRpYVBsYXll
clByaXZhdGVSZW1vdGVJZGVudGlmaWVyJiBpZCwgUmVmPElQQzo6Q29ubmVjdGlvbj4mJiBjb25u
ZWN0aW9uLCBjb25zdCBTdHJpbmcmIHJlbW90ZUVuZ2luZUlkZW50aWZpZXIpCisgICAgICAgIDog
bV9pZChpZCkKKyAgICAgICAgLCBtX2Nvbm5lY3Rpb24oV1RGTW92ZShjb25uZWN0aW9uKSkKKyAg
ICAgICAgLCBtX3JlbW90ZUVuZ2luZUlkZW50aWZpZXIocmVtb3RlRW5naW5lSWRlbnRpZmllcikK
KyAgICB7CisgICAgfQorCisgICAgdmlydHVhbCB+UGxheWVyUHJveHkoKQorICAgIHsKKyAgICB9
CisKK3ByaXZhdGU6CisKKyAgICAvLyBNZWRpYVBsYXllckNsaWVudAorICAgIGNvbnN0IFZlY3Rv
cjxXZWJDb3JlOjpDb250ZW50VHlwZT4mIG1lZGlhQ29udGVudFR5cGVzUmVxdWlyaW5nSGFyZHdh
cmVTdXBwb3J0KCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV90eXBlc1JlcXVpcmluZ0hhcmR3YXJl
U3VwcG9ydDsgfQorCisjaWYgIVJFTEVBU0VfTE9HX0RJU0FCTEVECisgICAgY29uc3QgTG9nZ2Vy
JiBtZWRpYVBsYXllckxvZ2dlcigpIGZpbmFsCisgICAgeworICAgICAgICBpZiAoIW51bGxMb2dn
ZXIoKS5nZXQoKSkgeworICAgICAgICAgICAgbnVsbExvZ2dlcigpID0gTG9nZ2VyOjpjcmVhdGUo
dGhpcyk7CisgICAgICAgICAgICBudWxsTG9nZ2VyKCktPnNldEVuYWJsZWQodGhpcywgZmFsc2Up
OworICAgICAgICB9CisKKyAgICAgICAgcmV0dXJuICpudWxsTG9nZ2VyKCkuZ2V0KCk7CisgICAg
fQorI2VuZGlmCisKK3Byb3RlY3RlZDoKKyAgICBNZWRpYVBsYXllclByaXZhdGVSZW1vdGVJZGVu
dGlmaWVyIG1faWQ7CisgICAgUmVmPElQQzo6Q29ubmVjdGlvbj4gbV9jb25uZWN0aW9uOworICAg
IHN0ZDo6dW5pcXVlX3B0cjxNZWRpYVBsYXllclByaXZhdGVJbnRlcmZhY2U+IG1fcGxheWVyOwor
ICAgIFN0cmluZyBtX3JlbW90ZUVuZ2luZUlkZW50aWZpZXI7CisgICAgVmVjdG9yPFdlYkNvcmU6
OkNvbnRlbnRUeXBlPiBtX3R5cGVzUmVxdWlyaW5nSGFyZHdhcmVTdXBwb3J0OworfTsKKworUmVt
b3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHk6OlJlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5
KEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MmIGNvbm5lY3Rpb24pCisgICAgOiBtX3dlYlByb2Nl
c3NDb25uZWN0aW9uKGNvbm5lY3Rpb24pCit7Cit9CisKK1JlbW90ZU1lZGlhUGxheWVyTWFuYWdl
clByb3h5Ojp+UmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHkoKQoreworfQorCit2b2lkIFJl
bW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5OjpjcmVhdGVNZWRpYVBsYXllcihjb25zdCBNZWRp
YVBsYXllclByaXZhdGVSZW1vdGVJZGVudGlmaWVyJiBpZCwgY29uc3QgU3RyaW5nJiYgcmVtb3Rl
RW5naW5lSWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sIHN1Y2NlZWRlZCk+
JiYgY29tcGxldGlvbkhhbmRsZXIpCit7CisgICAgTUVTU0FHRV9DSEVDS19DT05URVhUSUQoaWQp
OworCisgICAgQVNTRVJUKCFtX3Byb3hpZXMuY29udGFpbnMoaWQpKTsKKyAgICBtX3Byb3hpZXMu
YWRkKGlkLCBtYWtlVW5pcXVlPFBsYXllclByb3h5PihpZCwgbV93ZWJQcm9jZXNzQ29ubmVjdGlv
bi5jb25uZWN0aW9uKCksIHJlbW90ZUVuZ2luZUlkZW50aWZpZXIpKTsKKworICAgIGNvbXBsZXRp
b25IYW5kbGVyKHRydWUpOworfQorCit2b2lkIFJlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5
OjpnZXRTdXBwb3J0ZWRUeXBlcyhjb25zdCBTdHJpbmcmJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZChWZWN0b3I8U3RyaW5nPiYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyAgICAvLyBGSVhN
RTogcXVlcnkgdGhlIGFwcHJvcHJpYXRlIG1lZGlhIGVuZ2luZQorICAgIGNvbXBsZXRpb25IYW5k
bGVyKHsgInZpZGVvL21wNCIsICJhdWRpby9tcDQiIH0pOworfQorCit2b2lkIFJlbW90ZU1lZGlh
UGxheWVyTWFuYWdlclByb3h5OjpzdXBwb3J0c1R5cGUoY29uc3QgU3RyaW5nJiYsIGNvbnN0IFdl
YkNvcmU6Ok1lZGlhRW5naW5lU3VwcG9ydFBhcmFtZXRlcnMmJiwgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZChpbnQpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQoreworICAgIGNvbXBsZXRpb25IYW5kbGVy
KDEpOworfQorCit2b2lkIFJlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5OjpvcmlnaW5zSW5N
ZWRpYUNhY2hlKGNvbnN0IFN0cmluZyYmLCBjb25zdCBTdHJpbmcmJiwgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZChWZWN0b3I8V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhPiYmKT4mJiBjb21wbGV0
aW9uSGFuZGxlcikKK3sKKyAgICBjb21wbGV0aW9uSGFuZGxlcih7IH0pOworfQorCit2b2lkIFJl
bW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5OjpjbGVhck1lZGlhQ2FjaGUoY29uc3QgU3RyaW5n
JiYsIGNvbnN0IFN0cmluZyYmLCBXYWxsVGltZSkKK3sKK30KKwordm9pZCBSZW1vdGVNZWRpYVBs
YXllck1hbmFnZXJQcm94eTo6Y2xlYXJNZWRpYUNhY2hlRm9yT3JpZ2lucyhjb25zdCBTdHJpbmcm
JiwgY29uc3QgU3RyaW5nJiYsIFZlY3RvcjxXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGE+JiYp
Cit7Cit9CisKK3ZvaWQgUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHk6OnN1cHBvcnRzS2V5
U3lzdGVtKGNvbnN0IFN0cmluZyYmLCBjb25zdCBTdHJpbmcmJiwgY29uc3QgU3RyaW5nJiYsIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit7CisgICAg
Y29tcGxldGlvbkhhbmRsZXIoeyB9KTsKK30KKworfQorCisjdW5kZWYgTUVTU0FHRV9DSEVDS19D
T05URVhUSUQKKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mv
bWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvR1BV
UHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eS5oCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LmQxOWVkMzVkZGIwOWE4NWYxN2Q0ZjllNzI4MDcyNzg4ZGExMzNlNDQKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJNYW5h
Z2VyUHJveHkuaApAQCAtMCwwICsxLDc0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE5IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJ
UycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9S
UworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwor
ICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisg
KiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisK
KyNpZiBFTkFCTEUoR1BVX1BST0NFU1MpCisKKyNpbmNsdWRlICJDb25uZWN0aW9uLmgiCisjaW5j
bHVkZSAiTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlSWRlbnRpZmllci5oIgorI2luY2x1ZGUgIk1l
c3NhZ2VSZWNlaXZlci5oIgorI2luY2x1ZGUgPFdlYkNvcmUvTWVkaWFQbGF5ZXIuaD4KKworbmFt
ZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M7CisKK2Ns
YXNzIFJlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5IDogcHJpdmF0ZSBJUEM6Ok1lc3NhZ2VS
ZWNlaXZlciB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CitwdWJsaWM6CisgICAgZXhw
bGljaXQgUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHkoR1BVQ29ubmVjdGlvblRvV2ViUHJv
Y2VzcyYpOworICAgIH5SZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eSgpOworCisgICAgR1BV
Q29ubmVjdGlvblRvV2ViUHJvY2VzcyYgd2ViUHJvY2Vzc0Nvbm5lY3Rpb24oKSBjb25zdCB7IHJl
dHVybiBtX3dlYlByb2Nlc3NDb25uZWN0aW9uOyB9CisgICAgdm9pZCBjbGVhcigpOworCisgICAg
dm9pZCBkaWRSZWNlaXZlTWVzc2FnZUZyb21XZWJQcm9jZXNzKElQQzo6Q29ubmVjdGlvbiYgY29u
bmVjdGlvbiwgSVBDOjpEZWNvZGVyJiBkZWNvZGVyKSB7IGRpZFJlY2VpdmVNZXNzYWdlKGNvbm5l
Y3Rpb24sIGRlY29kZXIpOyB9CisgICAgdm9pZCBkaWRSZWNlaXZlU3luY01lc3NhZ2VGcm9tV2Vi
UHJvY2VzcyhJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIElQQzo6RGVjb2RlciYgZGVjb2Rl
ciwgc3RkOjp1bmlxdWVfcHRyPElQQzo6RW5jb2Rlcj4mIGVuY29kZXIpIHsgZGlkUmVjZWl2ZVN5
bmNNZXNzYWdlKGNvbm5lY3Rpb24sIGRlY29kZXIsIGVuY29kZXIpOyB9Citwcml2YXRlOgorICAg
IC8vIElQQzo6TWVzc2FnZVJlY2VpdmVyCisgICAgdm9pZCBkaWRSZWNlaXZlTWVzc2FnZShJUEM6
OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImKSBmaW5hbDsKKyAgICB2b2lkIGRpZFJlY2VpdmVT
eW5jTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImLCBzdGQ6OnVuaXF1ZV9w
dHI8SVBDOjpFbmNvZGVyPiYpIGZpbmFsOworCisgICAgdm9pZCBjcmVhdGVNZWRpYVBsYXllcihj
b25zdCBNZWRpYVBsYXllclByaXZhdGVSZW1vdGVJZGVudGlmaWVyJiwgY29uc3QgU3RyaW5nJiYs
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpOworCisgICAgdm9pZCBnZXRTdXBwb3J0
ZWRUeXBlcyhjb25zdCBTdHJpbmcmJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChWZWN0b3I8U3Ry
aW5nPiYmKT4mJik7CisgICAgdm9pZCBzdXBwb3J0c1R5cGUoY29uc3QgU3RyaW5nJiYsIGNvbnN0
IFdlYkNvcmU6Ok1lZGlhRW5naW5lU3VwcG9ydFBhcmFtZXRlcnMmJiwgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZChpbnQpPiYmKTsKKworICAgIHZvaWQgb3JpZ2luc0luTWVkaWFDYWNoZShjb25zdCBT
dHJpbmcmJiwgY29uc3QgU3RyaW5nJiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoVmVjdG9yPFdl
YkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YT4mJik+JiYpOworICAgIHZvaWQgY2xlYXJNZWRpYUNh
Y2hlKGNvbnN0IFN0cmluZyYmLCBjb25zdCBTdHJpbmcmJiwgV2FsbFRpbWUpOworICAgIHZvaWQg
Y2xlYXJNZWRpYUNhY2hlRm9yT3JpZ2lucyhjb25zdCBTdHJpbmcmJiwgY29uc3QgU3RyaW5nJiYs
IFZlY3RvcjxXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGE+JiYpOworICAgIHZvaWQgc3VwcG9y
dHNLZXlTeXN0ZW0oY29uc3QgU3RyaW5nJiYsIGNvbnN0IFN0cmluZyYmLCBjb25zdCBTdHJpbmcm
JiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJik7CisKKworICAgIGNsYXNzIFBsYXll
clByb3h5OworICAgIGZyaWVuZCBjbGFzcyBQbGF5ZXJQcm94eTsKKyAgICBIYXNoTWFwPE1lZGlh
UGxheWVyUHJpdmF0ZVJlbW90ZUlkZW50aWZpZXIsIHN0ZDo6dW5pcXVlX3B0cjxQbGF5ZXJQcm94
eT4+IG1fcHJveGllczsKKyAgICBHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzJiBtX3dlYlByb2Nl
c3NDb25uZWN0aW9uOworfTsKKworfQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eS5tZXNzYWdl
cy5pbiBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVBsYXllck1h
bmFnZXJQcm94eS5tZXNzYWdlcy5pbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45YjM2ZTI1MTJmOWE0OTlhNGNiMTUx
MThiNDA4ZGYxMTNlMjQ4ZmViCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9HUFVQ
cm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5Lm1lc3NhZ2VzLmluCkBA
IC0wLDAgKzEsMzcgQEAKKyMgQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworIyBhcmUgbWV0OgorIyAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorIyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisjIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyMgICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworIyBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyMgVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorIyBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorIyBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RgorIyBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MKKyMgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyMgQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkK
KyMgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRgorIyBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKKyNp
ZiBFTkFCTEUoVklERU8pCisKK21lc3NhZ2VzIC0+IFJlbW90ZU1lZGlhUGxheWVyTWFuYWdlclBy
b3h5IE5vdFJlZkNvdW50ZWQgeworICAgIENyZWF0ZU1lZGlhUGxheWVyKFdlYktpdDo6TWVkaWFQ
bGF5ZXJQcml2YXRlUmVtb3RlSWRlbnRpZmllciBpZCwgU3RyaW5nIHJlbW90ZUVuZ2luZUlkZW50
aWZpZXIpIC0+IChib29sIHN1Y2Nlc3MpIFN5bmNocm9ub3VzCisKKyAgICBHZXRTdXBwb3J0ZWRU
eXBlcyhTdHJpbmcgcmVtb3RlRW5naW5lSWRlbnRpZmllcikgLT4gKFZlY3RvcjxTdHJpbmc+IHR5
cGVzKSBTeW5jaHJvbm91cworICAgIFN1cHBvcnRzVHlwZShTdHJpbmcgcmVtb3RlRW5naW5lSWRl
bnRpZmllciwgc3RydWN0IFdlYkNvcmU6Ok1lZGlhRW5naW5lU3VwcG9ydFBhcmFtZXRlcnMgdHlw
ZSkgLT4gKGludCBzdXBwb3J0KSBTeW5jaHJvbm91cworICAgIE9yaWdpbnNJbk1lZGlhQ2FjaGUo
U3RyaW5nIHJlbW90ZUVuZ2luZUlkZW50aWZpZXIsIFN0cmluZyBwYXRoKSAtPiAoVmVjdG9yPFdl
YkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YT4gb3JpZ2lucykgU3luY2hyb25vdXMKKyAgICBDbGVh
ck1lZGlhQ2FjaGUoU3RyaW5nIHJlbW90ZUVuZ2luZUlkZW50aWZpZXIsIFN0cmluZyBwYXRoLCBX
YWxsVGltZSBtb2RpZmllZFNpbmNlKQorICAgIENsZWFyTWVkaWFDYWNoZUZvck9yaWdpbnMoU3Ry
aW5nIHJlbW90ZUVuZ2luZUlkZW50aWZpZXIsIFN0cmluZyBwYXRoLCBWZWN0b3I8V2ViQ29yZTo6
U2VjdXJpdHlPcmlnaW5EYXRhPiBvcmlnaW5zKQorICAgIFN1cHBvcnRzS2V5U3lzdGVtKFN0cmlu
ZyByZW1vdGVFbmdpbmVJZGVudGlmaWVyLCBTdHJpbmcga2V5U3lzdGVtLCBTdHJpbmcgbWltZVR5
cGUpIC0+IChib29sIHN1cHBvcnRzKSBTeW5jaHJvbm91cworfQorCisjZW5kaWYKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvbWVzc2FnZXMucHkgYi9Tb3VyY2UvV2Vi
S2l0L1NjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5CmluZGV4IGVkMTFhYzI3MjUyMjZlNDdhMmI1
NmJjYzllY2YyMjJkYWMwMDA5YWUuLmYyZTllZDdhYjU0MDJlZjUxMTg4ZjdlOGRiZTM5NmJhOGFj
ZTBmYWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvbWVzc2FnZXMu
cHkKKysrIGIvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5weQpAQCAtMSw0
ICsxLDQgQEAKLSMgQ29weXJpZ2h0IChDKSAyMDEwLTIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorIyBDb3B5cmlnaHQgKEMpIDIwMTAtMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCiAjCiAjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTIxOSwxMCArMjE5
LDExIEBAIGRlZiB0eXBlc190aGF0X2Nhbm5vdF9iZV9mb3J3YXJkX2RlY2xhcmVkKCk6CiAgICAg
ICAgICdXZWJDb3JlOjpTV1NlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyJywKICAgICAgICAgJ1dl
YktpdDo6QWN0aXZpdHlTdGF0ZUNoYW5nZUlEJywKICAgICAgICAgJ1dlYktpdDo6TGF5ZXJIb3N0
aW5nQ29udGV4dElEJywKLSAgICAgICAgJ1dlYktpdDo6VHJhbnNhY3Rpb25JRCcsCisgICAgICAg
ICdXZWJLaXQ6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZUlkZW50aWZpZXInLAogICAgICAgICAn
V2ViS2l0OjpTdG9yYWdlQXJlYUlkZW50aWZpZXInLAogICAgICAgICAnV2ViS2l0OjpTdG9yYWdl
QXJlYUltcGxJZGVudGlmaWVyJywKICAgICAgICAgJ1dlYktpdDo6U3RvcmFnZU5hbWVzcGFjZUlk
ZW50aWZpZXInLAorICAgICAgICAnV2ViS2l0OjpUcmFuc2FjdGlvbklEJywKICAgICAgICAgJ1dl
YktpdDo6VXNlckNvbnRlbnRDb250cm9sbGVySWRlbnRpZmllcicsCiAgICAgICAgICdXZWJLaXQ6
OldlYlBhZ2VQcm94eUlkZW50aWZpZXInLAogICAgIF0pCkBAIC02MDMsNiArNjA0LDcgQEAgZGVm
IGhlYWRlcnNfZm9yX3R5cGUodHlwZSk6CiAgICAgICAgICdXZWJLaXQ6OldlYk1vdXNlRXZlbnQn
OiBbJyJXZWJFdmVudC5oIiddLAogICAgICAgICAnV2ViS2l0OjpXZWJUb3VjaEV2ZW50JzogWyci
V2ViRXZlbnQuaCInXSwKICAgICAgICAgJ1dlYktpdDo6V2ViV2hlZWxFdmVudCc6IFsnIldlYkV2
ZW50LmgiJ10sCisgICAgICAgICdXZWJDb3JlOjpNZWRpYUVuZ2luZVN1cHBvcnRQYXJhbWV0ZXJz
JzogWyc8V2ViQ29yZS9NZWRpYVBsYXllci5oPiddLAogICAgICAgICAnc3RydWN0IFdlYkNvcmU6
OkVsZW1lbnRDb250ZXh0JzogWyc8V2ViQ29yZS9FbGVtZW50Q29udGV4dC5oPiddLAogICAgICAg
ICAnc3RydWN0IFdlYktpdDo6V2ViVXNlclNjcmlwdERhdGEnOiBbJyJXZWJVc2VyQ29udGVudENv
bnRyb2xsZXJEYXRhVHlwZXMuaCInXSwKICAgICAgICAgJ3N0cnVjdCBXZWJLaXQ6OldlYlVzZXJT
dHlsZVNoZWV0RGF0YSc6IFsnIldlYlVzZXJDb250ZW50Q29udHJvbGxlckRhdGFUeXBlcy5oIidd
LApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9Tb3VyY2VzLnR4dCBiL1NvdXJjZS9XZWJLaXQv
U291cmNlcy50eHQKaW5kZXggNzNmZjRkMjdiZWUzZDgyYTExNDY3MTc0OTJiY2I2NjQ1MjM1YjY0
Mi4uYjIzODQ4NDg1MzM4NzhhMGQ3Zjc2NmU4MTczNmUxODY0MTlmZWUwYSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9Tb3VyY2VzLnR4dAorKysgYi9Tb3VyY2UvV2ViS2l0L1NvdXJjZXMudHh0
CkBAIC00OTksNiArNDk5LDggQEAgV2ViUHJvY2Vzcy9NZWRpYVN0cmVhbS9NZWRpYURldmljZVNh
bmRib3hFeHRlbnNpb25zLmNwcAogV2ViUHJvY2Vzcy9NZWRpYVN0cmVhbS9Vc2VyTWVkaWFQZXJt
aXNzaW9uUmVxdWVzdE1hbmFnZXIuY3BwCiAKIFdlYlByb2Nlc3MvR1BVL0dQVVByb2Nlc3NDb25u
ZWN0aW9uLmNwcAorV2ViUHJvY2Vzcy9HUFUvbWVkaWEvTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3Rl
LmNwcAorV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyLmNwcAog
CiBXZWJQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLmNwcAogV2ViUHJv
Y2Vzcy9OZXR3b3JrL1dlYkxvYWRlclN0cmF0ZWd5LmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9Tb3VyY2VzQ29jb2EudHh0IGIvU291cmNlL1dlYktpdC9Tb3VyY2VzQ29jb2EudHh0Cmlu
ZGV4IDlkMjQyZTJhMDY0ZGZmNzJmNDljNDJmNTRkOTc4MTNjYWQ5NGQ5MmMuLmQ5NDgzZDBhMTM5
YTAwYWRhZDc3ZmE4MzdlY2M3M2VjMTc4YjljM2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
U291cmNlc0NvY29hLnR4dAorKysgYi9Tb3VyY2UvV2ViS2l0L1NvdXJjZXNDb2NvYS50eHQKQEAg
LTU5LDYgKzU5LDcgQEAgTmV0d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdvcmtSVENTb2NrZXQuY3Bw
CiAKIEdQVVByb2Nlc3MvaW9zL0dQVVByb2Nlc3NJT1MubW0KIEdQVVByb2Nlc3MvbWFjL0dQVVBy
b2Nlc3NNYWMubW0KK0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJv
eHkuY3BwCiBHUFVQcm9jZXNzL0VudHJ5UG9pbnQvQ29jb2EvWFBDU2VydmljZS9HUFVTZXJ2aWNl
RW50cnlQb2ludC5tbQogCiBQbGF0Zm9ybS9jZi9Nb2R1bGVDRi5jcHAKQEAgLTYyNCw1ICs2MjUs
NyBAQCBFZGl0YWJsZUltYWdlQ29udHJvbGxlck1lc3NhZ2VSZWNlaXZlci5jcHAKIEdQVUNvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3NNZXNzYWdlUmVjZWl2ZXIuY3BwCiBHUFVQcm9jZXNzUHJveHlNZXNz
YWdlUmVjZWl2ZXIuY3BwCiBHUFVQcm9jZXNzTWVzc2FnZVJlY2VpdmVyLmNwcAorLy9SZW1vdGVN
ZWRpYVBsYXllck1hbmFnZXJNZXNzYWdlUmVjZWl2ZXIuY3BwCisvL1JlbW90ZU1lZGlhUGxheWVy
TWFuYWdlclByb3h5TWVzc2FnZVJlY2VpdmVyLmNwcAogU2VydmljZVdvcmtlckZldGNoVGFza01l
c3NhZ2VSZWNlaXZlci5jcHAKIFRleHRDaGVja2luZ0NvbnRyb2xsZXJQcm94eU1lc3NhZ2VSZWNl
aXZlci5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCmluZGV4IGY3OWRkYzEyMDQwZjJiZjc5MjQwY2NhNTVlZjk4OTMwYjUwMDc1MzQuLmVjZTkw
ZDU3NTJkNDdkNzFhYjA1NTVmY2E5NmQ2NjE3ZWU3NGUxMTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYktp
dC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtOTEsNiArOTEsMTMgQEAKIAkJ
MDc0RTc1RkUxREYyMjExOTAwRDMxOEVDIC8qIFVzZXJNZWRpYVByb2Nlc3NNYW5hZ2VyLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwNzRFNzVGQjFERjFG
RDEzMDBEMzE4RUMgLyogVXNlck1lZGlhUHJvY2Vzc01hbmFnZXIuaCAqLzsgfTsKIAkJMDc2RTg4
NEUxQTEzQ0FERjAwNUU5MEZDIC8qIEFQSUNvbnRleHRNZW51Q2xpZW50LmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwNzZFODg0RDFBMTNDQURGMDA1RTkw
RkMgLyogQVBJQ29udGV4dE1lbnVDbGllbnQuaCAqLzsgfTsKIAkJMDc3MjgxMUQyMTIzNEZGNjAw
QzhFRjJFIC8qIFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlci5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNEE0MTBGNDMxOUFGN0IyNzAwMkVC
QUI1IC8qIFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlci5oICovOyB9OworCQkwNzky
MzE0ODIzOUNCQ0I4MDA5NTk4RTIgLyogUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHlNZXNz
YWdlc1JlcGxpZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDA3OTIzMTQyMjM5Q0JDQjUwMDk1OThFMiAvKiBSZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQ
cm94eU1lc3NhZ2VzUmVwbGllcy5oICovOyB9OworCQkwNzkyMzE0OTIzOUNCQ0I4MDA5NTk4RTIg
LyogUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyTWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3OTIzMTQzMjM5Q0JDQjYwMDk1
OThFMiAvKiBSZW1vdGVNZWRpYVBsYXllck1hbmFnZXJNZXNzYWdlUmVjZWl2ZXIuY3BwICovOyB9
OworCQkwNzkyMzE0QTIzOUNCQ0I4MDA5NTk4RTIgLyogUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2Vy
TWVzc2FnZXNSZXBsaWVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSAwNzkyMzE0NDIzOUNCQ0I2MDA5NTk4RTIgLyogUmVtb3RlTWVkaWFQbGF5ZXJNYW5h
Z2VyTWVzc2FnZXNSZXBsaWVzLmggKi87IH07CisJCTA3OTIzMTRCMjM5Q0JDQjgwMDk1OThFMiAv
KiBSZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eU1lc3NhZ2VSZWNlaXZlci5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwNzkyMzE0NTIzOUNCQ0I3
MDA5NTk4RTIgLyogUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHlNZXNzYWdlUmVjZWl2ZXIu
Y3BwICovOyB9OworCQkwNzkyMzE0QzIzOUNCQ0I4MDA5NTk4RTIgLyogUmVtb3RlTWVkaWFQbGF5
ZXJNYW5hZ2VyUHJveHlNZXNzYWdlcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gMDc5MjMxNDYyMzlDQkNCNzAwOTU5OEUyIC8qIFJlbW90ZU1lZGlhUGxh
eWVyTWFuYWdlclByb3h5TWVzc2FnZXMuaCAqLzsgfTsKKwkJMDc5MjMxNEQyMzlDQkNCODAwOTU5
OEUyIC8qIFJlbW90ZU1lZGlhUGxheWVyTWFuYWdlck1lc3NhZ2VzLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwNzkyMzE0NzIzOUNCQ0I3MDA5NTk4RTIg
LyogUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyTWVzc2FnZXMuaCAqLzsgfTsKKwkJMDc5MjMxNEYy
MzlENjIzRTAwOTU5OEUyIC8qIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZUlkZW50aWZpZXIuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3OTIzMTRFMjM5
RDVGNTMwMDk1OThFMiAvKiBNZWRpYVBsYXllclByaXZhdGVSZW1vdGVJZGVudGlmaWVyLmggKi87
IH07CiAJCTA3QTVFQkJDMUM3QkE0M0UwMEI5Q0E2OSAvKiBXS0ZyYW1lSGFuZGxlUmVmLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwN0E1RUJCQTFDN0JB
NDNFMDBCOUNBNjkgLyogV0tGcmFtZUhhbmRsZVJlZi5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTBFOTdENzREMjAwRTkwMDQwMEJGNjY0MyAvKiBT
YWZlQnJvd3NpbmdTUEkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDBFOTdENzRDMjAwRThGRjMwMEJGNjY0MyAvKiBTYWZlQnJvd3NpbmdTUEkuaCAqLzsg
fTsKIAkJMEVERTg1MDMyMDA0RTc1RDAwMDMwNTYwIC8qIFdlYnNpdGVQb3BVcFBvbGljeS5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEVERTg1MDIyMDA0
RTc0OTAwMDMwNTYwIC8qIFdlYnNpdGVQb3BVcFBvbGljeS5oICovOyB9OwpAQCAtMTk5Niw2ICsy
MDAzLDkgQEAKIAkJMDBCOTY2MTUxOEUyNENCQTAwQ0UxRjg4IC8qIEFQSUZpbmRDbGllbnQuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQVBJRmluZENsaWVudC5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQkwMEI5NjYxNzE4RTI1QUUxMDBDRTFGODggLyogRmluZENs
aWVudC5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IEZpbmRDbGll
bnQubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTAwQjk2NjE4MThFMjVBRTEwMENF
MUY4OCAvKiBGaW5kQ2xpZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEZp
bmRDbGllbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMDcyNUVGQUIyMzlBRTM4
NDAwQTUzOEE5IC8qIFJlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5Lm1lc3NhZ2VzLmluICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0
aCA9IFJlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5Lm1lc3NhZ2VzLmluOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQkwNzI1RUZBQzIzOUFFMzg1MDBBNTM4QTkgLyogUmVtb3RlTWVk
aWFQbGF5ZXJNYW5hZ2VyUHJveHkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVtb3RlTWVkaWFQbGF5ZXJN
YW5hZ2VyUHJveHkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMDcyNUVGQUQyMzlC
MDI0NTAwQTUzOEE5IC8qIFJlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5LmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IFJlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5LmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMDcyOTdGOUMxQzE3MTFFQTAwM0YwNzM1IC8qIERldmljZUlk
SGFzaFNhbHRTdG9yYWdlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IERldmljZUlkSGFzaFNhbHRTdG9yYWdlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJMDcyOTdGOUMxQzE3QkJFQTAwM0YwNzM1IC8qIFVzZXJNZWRpYVBlcm1pc3Npb25DaGVja1By
b3h5LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFVzZXJNZWRpYVBl
cm1pc3Npb25DaGVja1Byb3h5LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMDcy
OTdGOUQxQzE3QkJFQTAwM0YwNzM1IC8qIFVzZXJNZWRpYVBlcm1pc3Npb25DaGVja1Byb3h5Lmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFVzZXJNZWRpYVBlcm1pc3Npb25DaGVj
a1Byb3h5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0yMDEwLDYgKzIwMjAsMTgg
QEAKIAkJMDc0RTc2MDExREY3MDc1RDAwRDMxOEVDIC8qIE1lZGlhRGV2aWNlU2FuZGJveEV4dGVu
c2lvbnMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTWVkaWFEZXZpY2VTYW5k
Ym94RXh0ZW5zaW9ucy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwNzZFODg0RDFB
MTNDQURGMDA1RTkwRkMgLyogQVBJQ29udGV4dE1lbnVDbGllbnQuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gQVBJQ29udGV4dE1lbnVDbGllbnQuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJMDc2RTg4NEYxQTEzQ0JDNjAwNUU5MEZDIC8qIEFQSUluamVjdGVkQnVu
ZGxlUGFnZUNvbnRleHRNZW51Q2xpZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IEFQSUluamVjdGVkQnVuZGxlUGFnZUNvbnRleHRNZW51Q2xpZW50Lmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCTA3OTIzMTMwMjM5QjNCMEMwMDk1OThFMiAvKiBSZW1vdGVNZWRp
YVBsYXllck1hbmFnZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUmVtb3RlTWVkaWFQbGF5ZXJN
YW5hZ2VyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMDc5MjMxMzEyMzlCM0Iw
QzAwOTU5OEUyIC8qIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZS5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBNZWRpYVBsYXllclByaXZhdGVSZW1vdGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQkwNzkyMzEzMjIzOUIzQjBDMDA5NTk4RTIgLyogTWVkaWFQbGF5ZXJQcml2YXRlUmVt
b3RlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZS5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQkwNzkyMzEzMzIzOUIzQjBDMDA5NTk4RTIgLyogUmVtb3Rl
TWVkaWFQbGF5ZXJNYW5hZ2VyLm1lc3NhZ2VzLmluICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IFJlbW90ZU1lZGlhUGxheWVyTWFu
YWdlci5tZXNzYWdlcy5pbjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMDc5MjMxMzQy
MzlCM0IwQzAwOTU5OEUyIC8qIFJlbW90ZU1lZGlhUGxheWVyTWFuYWdlci5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBSZW1vdGVNZWRpYVBsYXllck1hbmFnZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJMDc5MjMxNDIyMzlDQkNCNTAwOTU5OEUyIC8qIFJlbW90ZU1lZGlhUGxheWVyTWFuYWdl
clByb3h5TWVzc2FnZXNSZXBsaWVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IFJlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5TWVzc2FnZXNSZXBsaWVzLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCTA3OTIzMTQzMjM5Q0JDQjYwMDk1OThFMiAvKiBSZW1vdGVN
ZWRpYVBsYXllck1hbmFnZXJNZXNzYWdlUmVjZWl2ZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyTWVzc2FnZVJlY2VpdmVy
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMDc5MjMxNDQyMzlDQkNCNjAwOTU5
OEUyIC8qIFJlbW90ZU1lZGlhUGxheWVyTWFuYWdlck1lc3NhZ2VzUmVwbGllcy5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZW1vdGVNZWRpYVBsYXllck1hbmFnZXJNZXNzYWdl
c1JlcGxpZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMDc5MjMxNDUyMzlDQkNC
NzAwOTU5OEUyIC8qIFJlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5TWVzc2FnZVJlY2VpdmVy
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJlbW90ZU1lZGlhUGxh
eWVyTWFuYWdlclByb3h5TWVzc2FnZVJlY2VpdmVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJMDc5MjMxNDYyMzlDQkNCNzAwOTU5OEUyIC8qIFJlbW90ZU1lZGlhUGxheWVyTWFu
YWdlclByb3h5TWVzc2FnZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVt
b3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHlNZXNzYWdlcy5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQkwNzkyMzE0NzIzOUNCQ0I3MDA5NTk4RTIgLyogUmVtb3RlTWVkaWFQbGF5ZXJN
YW5hZ2VyTWVzc2FnZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVtb3Rl
TWVkaWFQbGF5ZXJNYW5hZ2VyTWVzc2FnZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJMDc5MjMxNEUyMzlENUY1MzAwOTU5OEUyIC8qIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZUlk
ZW50aWZpZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlSWRlbnRp
Zmllci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwN0E1RUJCOTFDN0JBNDNFMDBC
OUNBNjkgLyogV0tGcmFtZUhhbmRsZVJlZi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBXS0ZyYW1lSGFuZGxlUmVmLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJMDdBNUVCQkExQzdCQTQzRTAwQjlDQTY5IC8qIFdLRnJhbWVIYW5kbGVSZWYuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0tGcmFtZUhhbmRsZVJlZi5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQkwODY3RDZBNUZFODQwMzA3QzAyQUFDMDcgLyogQXBwS2l0
LmZyYW1ld29yayAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHdyYXBwZXIuZnJhbWV3b3JrOyBuYW1lID0gQXBwS2l0LmZyYW1ld29yazsgcGF0aCA9IC9T
eXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0FwcEtpdC5mcmFtZXdvcms7IHNvdXJjZVRyZWUgPSAi
PGFic29sdXRlPiI7IH07CkBAIC01MDEwLDYgKzUwMzIsMjkgQEAKIAkJCXRhYldpZHRoID0gODsK
IAkJCXVzZXNUYWJzID0gMDsKIAkJfTsKKwkJMDc5MjMxMkYyMzlCM0IwQzAwOTU5OEUyIC8qIG1l
ZGlhICovID0geworCQkJaXNhID0gUEJYR3JvdXA7CisJCQljaGlsZHJlbiA9ICgKKwkJCQkwNzky
MzEzMTIzOUIzQjBDMDA5NTk4RTIgLyogTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlLmNwcCAqLywK
KwkJCQkwNzkyMzEzMjIzOUIzQjBDMDA5NTk4RTIgLyogTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3Rl
LmggKi8sCisJCQkJMDc5MjMxNEUyMzlENUY1MzAwOTU5OEUyIC8qIE1lZGlhUGxheWVyUHJpdmF0
ZVJlbW90ZUlkZW50aWZpZXIuaCAqLywKKwkJCQkwNzkyMzEzMDIzOUIzQjBDMDA5NTk4RTIgLyog
UmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyLmNwcCAqLywKKwkJCQkwNzkyMzEzNDIzOUIzQjBDMDA5
NTk4RTIgLyogUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyLmggKi8sCisJCQkJMDc5MjMxMzMyMzlC
M0IwQzAwOTU5OEUyIC8qIFJlbW90ZU1lZGlhUGxheWVyTWFuYWdlci5tZXNzYWdlcy5pbiAqLywK
KwkJCSk7CisJCQlwYXRoID0gbWVkaWE7CisJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOworCQl9
OworCQkwN0M3NUMxNzIzOTlBM0RCMDA4OEU2NUIgLyogbWVkaWEgKi8gPSB7CisJCQlpc2EgPSBQ
QlhHcm91cDsKKwkJCWNoaWxkcmVuID0gKAorCQkJCTA3MjVFRkFEMjM5QjAyNDUwMEE1MzhBOSAv
KiBSZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eS5jcHAgKi8sCisJCQkJMDcyNUVGQUMyMzlB
RTM4NTAwQTUzOEE5IC8qIFJlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5LmggKi8sCisJCQkJ
MDcyNUVGQUIyMzlBRTM4NDAwQTUzOEE5IC8qIFJlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5
Lm1lc3NhZ2VzLmluICovLAorCQkJKTsKKwkJCXBhdGggPSBtZWRpYTsKKwkJCXNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7CisJCX07CiAJCTA4NjdENjkxRkU4NDAyOEZDMDJBQUMwNyAvKiBXZWJLaXQy
ICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKQEAgLTYxOTIsNiAr
NjIzNyw3IEBACiAJCTJEN0U0M0JGMjM3NTJDRDkwMEVBNUNBMCAvKiBHUFUgKi8gPSB7CiAJCQlp
c2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAorCQkJCTA3OTIzMTJGMjM5QjNCMEMwMDk1
OThFMiAvKiBtZWRpYSAqLywKIAkJCQkyRDdFNDNDMDIzNzUyQ0Q5MDBFQTVDQTAgLyogR1BVUHJv
Y2Vzc0Nvbm5lY3Rpb24uY3BwICovLAogCQkJCTJEN0U0M0MzMjM3NTJDRDkwMEVBNUNBMCAvKiBH
UFVQcm9jZXNzQ29ubmVjdGlvbi5oICovLAogCQkJCTJEN0U0M0MyMjM3NTJDRDkwMEVBNUNBMCAv
KiBHUFVQcm9jZXNzQ29ubmVjdGlvbi5tZXNzYWdlcy5pbiAqLywKQEAgLTYyMDYsNiArNjI1Miw3
IEBACiAJCQkJMkQ5RkIyMEQyMzc1MjA5RDAwNDlGOTM2IC8qIEVudHJ5UG9pbnQgKi8sCiAJCQkJ
MkQ5RkIyMDQyMzc1MjA5RDAwNDlGOTM2IC8qIGlvcyAqLywKIAkJCQkyRDlGQjIwNjIzNzUyMDlE
MDA0OUY5MzYgLyogbWFjICovLAorCQkJCTA3Qzc1QzE3MjM5OUEzREIwMDg4RTY1QiAvKiBtZWRp
YSAqLywKIAkJCQkyRDlGQjIwQzIzNzUyMDlEMDA0OUY5MzYgLyogR1BVQ29ubmVjdGlvblRvV2Vi
UHJvY2Vzcy5jcHAgKi8sCiAJCQkJMkQ5RkIyMDAyMzc1MjA5RDAwNDlGOTM2IC8qIEdQVUNvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3MuaCAqLywKIAkJCQkyRDlGQjIwOTIzNzUyMDlEMDA0OUY5MzYgLyog
R1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbiAqLywKQEAgLTkxMTgsNiArOTE2
NSwxMiBAQAogCQkJCTFBOEVGQTZGMTI1MkI4NDEwMEY3MDY3RiAvKiBQbHVnaW5Qcm94eU1lc3Nh
Z2VzLmggKi8sCiAJCQkJMEZGMjRBMkIxODc5RTRCQzAwM0FCRjBDIC8qIFJlbW90ZUxheWVyVHJl
ZURyYXdpbmdBcmVhUHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwICovLAogCQkJCTBGRjI0QTJDMTg3
OUU0QkMwMDNBQkYwQyAvKiBSZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYVByb3h5TWVzc2FnZXMu
aCAqLywKKwkJCQkwNzkyMzE0MzIzOUNCQ0I2MDA5NTk4RTIgLyogUmVtb3RlTWVkaWFQbGF5ZXJN
YW5hZ2VyTWVzc2FnZVJlY2VpdmVyLmNwcCAqLywKKwkJCQkwNzkyMzE0NzIzOUNCQ0I3MDA5NTk4
RTIgLyogUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyTWVzc2FnZXMuaCAqLywKKwkJCQkwNzkyMzE0
NDIzOUNCQ0I2MDA5NTk4RTIgLyogUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyTWVzc2FnZXNSZXBs
aWVzLmggKi8sCisJCQkJMDc5MjMxNDUyMzlDQkNCNzAwOTU5OEUyIC8qIFJlbW90ZU1lZGlhUGxh
eWVyTWFuYWdlclByb3h5TWVzc2FnZVJlY2VpdmVyLmNwcCAqLywKKwkJCQkwNzkyMzE0NjIzOUNC
Q0I3MDA5NTk4RTIgLyogUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHlNZXNzYWdlcy5oICov
LAorCQkJCTA3OTIzMTQyMjM5Q0JDQjUwMDk1OThFMiAvKiBSZW1vdGVNZWRpYVBsYXllck1hbmFn
ZXJQcm94eU1lc3NhZ2VzUmVwbGllcy5oICovLAogCQkJCTFBQzEzMzgzMTg1OTBDNDYwMEYzRUMw
NSAvKiBSZW1vdGVPYmplY3RSZWdpc3RyeU1lc3NhZ2VSZWNlaXZlci5jcHAgKi8sCiAJCQkJMUFD
MTMzODQxODU5MEM0NjAwRjNFQzA1IC8qIFJlbW90ZU9iamVjdFJlZ2lzdHJ5TWVzc2FnZXMuaCAq
LywKIAkJCQkwRjU5NDdBNTE4N0I1MTc2MDA0Mzc4NTcgLyogUmVtb3RlU2Nyb2xsaW5nQ29vcmRp
bmF0b3JNZXNzYWdlUmVjZWl2ZXIuY3BwICovLApAQCAtOTgzNSw2ICs5ODg4LDcgQEAKIAkJCQlC
Q0M1NkY3OTExNTk5NTdEMDAxQ0NBRjkgLyogTWFjaFBvcnQuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTFBMjRCNUYzMTFGNTMxRTgwMEMzODI2OSAvKiBNYWNoVXRpbGl0aWVzLmggaW4gSGVhZGVycyAq
LywKIAkJCQlDRTFBMEJENTFBNDhFNkM2MDA1NEVGNzQgLyogTWFuYWdlZENvbmZpZ3VyYXRpb25T
UEkuaCBpbiBIZWFkZXJzICovLAorCQkJCTA3OTIzMTRGMjM5RDYyM0UwMDk1OThFMiAvKiBNZWRp
YVBsYXllclByaXZhdGVSZW1vdGVJZGVudGlmaWVyLmggaW4gSGVhZGVycyAqLywKIAkJCQk1MTkz
M0RFRjE5NjVFQjMxMDA4QUMzRUEgLyogTWVudVV0aWxpdGllcy5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJMUFDNEM4MjkxNkI4NzZBOTAwNjlEQ0NEIC8qIE1lc3NhZ2VGbGFncy5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJMUEzRUVEMTIxNjFBNTNENjAwQUVCNEY1IC8qIE1lc3NhZ2VSZWNlaXZlci5oIGlu
IEhlYWRlcnMgKi8sCkBAIC05OTk1LDYgKzEwMDQ5LDEwIEBACiAJCQkJMEZGMjY0QTAxQTFGRjlD
QzAwMUZFNzU5IC8qIFJlbW90ZUxheWVyVHJlZVNjcm9sbGluZ1BlcmZvcm1hbmNlRGF0YS5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJMUFGMUFDNkMxNjUxNzU5RTAwQzE3RDdGIC8qIFJlbW90ZUxheWVy
VHJlZVRyYW5zYWN0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQkyREMxOEZCMzIxOEE2RTlFMDAy
NUE4OEQgLyogUmVtb3RlTGF5ZXJUcmVlVmlld3MuaCBpbiBIZWFkZXJzICovLAorCQkJCTA3OTIz
MTREMjM5Q0JDQjgwMDk1OThFMiAvKiBSZW1vdGVNZWRpYVBsYXllck1hbmFnZXJNZXNzYWdlcy5o
IGluIEhlYWRlcnMgKi8sCisJCQkJMDc5MjMxNEEyMzlDQkNCODAwOTU5OEUyIC8qIFJlbW90ZU1l
ZGlhUGxheWVyTWFuYWdlck1lc3NhZ2VzUmVwbGllcy5oIGluIEhlYWRlcnMgKi8sCisJCQkJMDc5
MjMxNEMyMzlDQkNCODAwOTU5OEUyIC8qIFJlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5TWVz
c2FnZXMuaCBpbiBIZWFkZXJzICovLAorCQkJCTA3OTIzMTQ4MjM5Q0JDQjgwMDk1OThFMiAvKiBS
ZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eU1lc3NhZ2VzUmVwbGllcy5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJRTFCNzg0NzExNjNGMjQ2OTAwMDdCNjkyIC8qIFJlbW90ZU5ldHdvcmtpbmdDb250
ZXh0LmggaW4gSGVhZGVycyAqLywKIAkJCQkxQTU3MDRGQzFCRTE3NTExMDA4NzRBRjEgLyogUmVt
b3RlT2JqZWN0SW52b2NhdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUFDMTMzODAxODU5MEFF
NDAwRjNFQzA1IC8qIFJlbW90ZU9iamVjdFJlZ2lzdHJ5LmggaW4gSGVhZGVycyAqLywKQEAgLTEx
NjUyLDYgKzExNzEwLDggQEAKIAkJCQkyRDcyQTFGQTIxMkJGNDZFMDA1MTdBMjAgLyogUmVtb3Rl
TGF5ZXJUcmVlRHJhd2luZ0FyZWEubW0gaW4gU291cmNlcyAqLywKIAkJCQkwRkYyNEEyRDE4NzlF
NEJDMDAzQUJGMEMgLyogUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWFQcm94eU1lc3NhZ2VSZWNl
aXZlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkyREMxOEZCNDIxOEE2RTlFMDAyNUE4OEQgLyog
UmVtb3RlTGF5ZXJUcmVlVmlld3MubW0gaW4gU291cmNlcyAqLywKKwkJCQkwNzkyMzE0OTIzOUNC
Q0I4MDA5NTk4RTIgLyogUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyTWVzc2FnZVJlY2VpdmVyLmNw
cCBpbiBTb3VyY2VzICovLAorCQkJCTA3OTIzMTRCMjM5Q0JDQjgwMDk1OThFMiAvKiBSZW1vdGVN
ZWRpYVBsYXllck1hbmFnZXJQcm94eU1lc3NhZ2VSZWNlaXZlci5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQkxQUMxMzM4NTE4NTkwQzQ2MDBGM0VDMDUgLyogUmVtb3RlT2JqZWN0UmVnaXN0cnlNZXNz
YWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEY1OTQ3QTcxODdCNTE3NjAwNDM3
ODU3IC8qIFJlbW90ZVNjcm9sbGluZ0Nvb3JkaW5hdG9yTWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCUE1NUJBODI2MUJBMjVDRkQwMDdDRDMzRCAvKiBSZW1vdGVXZWJJbnNw
ZWN0b3JQcm94eU1lc3NhZ2VSZWNlaXZlci5jcHAgaW4gU291cmNlcyAqLywKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvTWVkaWFQbGF5ZXJQcml2YXRlUmVt
b3RlLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvTWVkaWFQbGF5ZXJQ
cml2YXRlUmVtb3RlLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41NmQ0MGZiNmY4MDUxNTQ5OGY0NTAyNTg0ODRi
ZmQ3OGQxNGQ2MGE3Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L0dQVS9tZWRpYS9NZWRpYVBsYXllclByaXZhdGVSZW1vdGUuY3BwCkBAIC0wLDAgKzEsNzY3IEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQor
ICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpbmNsdWRl
ICJjb25maWcuaCIKKworI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykKKyNpbmNsdWRlICJNZWRpYVBs
YXllclByaXZhdGVSZW1vdGUuaCIKKworI2luY2x1ZGUgIkxvZ2dpbmcuaCIKKyNpbmNsdWRlICJS
ZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eU1lc3NhZ2VzLmgiCisjaW5jbHVkZSA8V2ViQ29y
ZS9Ob3RJbXBsZW1lbnRlZC5oPgorI2luY2x1ZGUgPFdlYkNvcmUvUGxhdGZvcm1MYXllci5oPgor
I2luY2x1ZGUgPFdlYkNvcmUvUGxhdGZvcm1UaW1lUmFuZ2VzLmg+CisjaW5jbHVkZSA8d3RmL0hh
c2hNYXAuaD4KKyNpbmNsdWRlIDx3dGYvTWFpblRocmVhZC5oPgorI2luY2x1ZGUgPHd0Zi9TdHJp
bmdQcmludFN0cmVhbS5oPgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KKyNpbmNsdWRlIDx3dGYvdGV4
dC9DU3RyaW5nLmg+CisKK25hbWVzcGFjZSBXZWJLaXQgewordXNpbmcgbmFtZXNwYWNlIFBBTDsK
K3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOworCitNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6Ok1l
ZGlhUGxheWVyUHJpdmF0ZVJlbW90ZShNZWRpYVBsYXllciogcGxheWVyLCBjb25zdCBTdHJpbmcm
IHJlbW90ZUVuZ2luZUlkZW50aWZpZXIsIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZUlkZW50aWZp
ZXIgaWRlbnRpZmllciwgUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyJiBtYW5hZ2VyKQorICAgIDog
bV9wbGF5ZXIocGxheWVyKQorICAgICwgbV9tYW5hZ2VyKG1hbmFnZXIpCisgICAgLCBtX3JlbW90
ZUVuZ2luZUlkZW50aWZpZXIocmVtb3RlRW5naW5lSWRlbnRpZmllcikKKyAgICAsIG1faWRlbnRp
ZmllcihpZGVudGlmaWVyKQorI2lmICFSRUxFQVNFX0xPR19ESVNBQkxFRAorICAgICwgbV9sb2dn
ZXIocGxheWVyLT5tZWRpYVBsYXllckxvZ2dlcigpKQorICAgICwgbV9sb2dJZGVudGlmaWVyKHBs
YXllci0+bWVkaWFQbGF5ZXJMb2dJZGVudGlmaWVyKCkpCisjZW5kaWYKK3sKKyAgICBJTkZPX0xP
RyhMT0dJREVOVElGSUVSKTsKK30KKworTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjp+TWVkaWFQ
bGF5ZXJQcml2YXRlUmVtb3RlKCkKK3sKKyAgICBJTkZPX0xPRyhMT0dJREVOVElGSUVSKTsKKyAg
ICBtX3BsYXllciA9IG51bGxwdHI7Cit9CisKK3ZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3Rl
OjpNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OmxvYWQoY29uc3QgU3RyaW5nJikKK3sKKyAgICBu
b3RJbXBsZW1lbnRlZCgpOworfQorCisjaWYgRU5BQkxFKE1FRElBX1NPVVJDRSkKK3ZvaWQgTWVk
aWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpsb2FkKGNvbnN0IFN0cmluZyYsIE1lZGlhU291cmNlUHJp
dmF0ZUNsaWVudCopCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKyNlbmRpZgorCisjaWYg
RU5BQkxFKE1FRElBX1NUUkVBTSkKK3ZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpsb2Fk
KE1lZGlhU3RyZWFtUHJpdmF0ZSYpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKyNlbmRp
Zgordm9pZCBNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OmNhbmNlbExvYWQoKQoreworICAgIG5v
dEltcGxlbWVudGVkKCk7Cit9CisKKwordm9pZCBNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OnBy
ZXBhcmVUb1BsYXkoKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKK1BsYXRmb3JtTGF5
ZXIqIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6cGxhdGZvcm1MYXllcigpIGNvbnN0Cit7Cisg
ICAgcmV0dXJuIG51bGxwdHI7Cit9CisKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKSB8fCAoUExB
VEZPUk0oTUFDKSAmJiBFTkFCTEUoVklERU9fUFJFU0VOVEFUSU9OX01PREUpKQordm9pZCBNZWRp
YVBsYXllclByaXZhdGVSZW1vdGU6OnNldFZpZGVvRnVsbHNjcmVlbkxheWVyKFBsYXRmb3JtTGF5
ZXIqLCBXVEY6OkZ1bmN0aW9uPHZvaWQoKT4mJikKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOwor
fQorCit2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6dXBkYXRlVmlkZW9GdWxsc2NyZWVu
SW5saW5lSW1hZ2UoKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKK3ZvaWQgTWVkaWFQ
bGF5ZXJQcml2YXRlUmVtb3RlOjpzZXRWaWRlb0Z1bGxzY3JlZW5GcmFtZShGbG9hdFJlY3QpCit7
CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwordm9pZCBNZWRpYVBsYXllclByaXZhdGVSZW1v
dGU6OnNldFZpZGVvRnVsbHNjcmVlbkdyYXZpdHkoTWVkaWFQbGF5ZXI6OlZpZGVvR3Jhdml0eSkK
K3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCit2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZVJl
bW90ZTo6c2V0VmlkZW9GdWxsc2NyZWVuTW9kZShNZWRpYVBsYXllcjo6VmlkZW9GdWxsc2NyZWVu
TW9kZSkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCit2b2lkIE1lZGlhUGxheWVyUHJp
dmF0ZVJlbW90ZTo6dmlkZW9GdWxsc2NyZWVuU3RhbmRieUNoYW5nZWQoKQoreworICAgIG5vdElt
cGxlbWVudGVkKCk7Cit9CisjZW5kaWYKKworI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCitOU0Fy
cmF5KiBNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OnRpbWVkTWV0YWRhdGEoKSBjb25zdAorewor
ICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIG51bGxwdHI7Cit9CisKK1N0cmluZyBN
ZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OmFjY2Vzc0xvZygpIGNvbnN0Cit7CisgICAgbm90SW1w
bGVtZW50ZWQoKTsKKyAgICByZXR1cm4gZW1wdHlTdHJpbmcoKTsKK30KKworU3RyaW5nIE1lZGlh
UGxheWVyUHJpdmF0ZVJlbW90ZTo6ZXJyb3JMb2coKSBjb25zdAoreworICAgIG5vdEltcGxlbWVu
dGVkKCk7CisgICAgcmV0dXJuIGVtcHR5U3RyaW5nKCk7Cit9CisjZW5kaWYKKworbG9uZyBNZWRp
YVBsYXllclByaXZhdGVSZW1vdGU6OnBsYXRmb3JtRXJyb3JDb2RlKCkgY29uc3QKK3sKKyAgICBu
b3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiAwOworfQorCit2b2lkIE1lZGlhUGxheWVyUHJp
dmF0ZVJlbW90ZTo6cGxheSgpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwordm9pZCBN
ZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OnBhdXNlKCkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgp
OworfQorCit2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6c2V0QnVmZmVyaW5nUG9saWN5
KE1lZGlhUGxheWVyOjpCdWZmZXJpbmdQb2xpY3kpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsK
K30KKworYm9vbCBNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OnN1cHBvcnRzUGljdHVyZUluUGlj
dHVyZSgpIGNvbnN0Cit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gZmFsc2U7
Cit9CisKK2Jvb2wgTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpzdXBwb3J0c0Z1bGxzY3JlZW4o
KSBjb25zdAoreworICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIGZhbHNlOworfQor
Citib29sIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6c3VwcG9ydHNTY2FubmluZygpIGNvbnN0
Cit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK2Jvb2wg
TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpyZXF1aXJlc0ltbWVkaWF0ZUNvbXBvc2l0aW5nKCkg
Y29uc3QKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiBmYWxzZTsKK30KKwor
Ym9vbCBNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OmNhblNhdmVNZWRpYURhdGEoKSBjb25zdAor
eworICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIGZhbHNlOworfQorCitGbG9hdFNp
emUgTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpuYXR1cmFsU2l6ZSgpIGNvbnN0Cit7CisgICAg
bm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4geyB9OworfQorCitib29sIE1lZGlhUGxheWVy
UHJpdmF0ZVJlbW90ZTo6aGFzVmlkZW8oKSBjb25zdAoreworICAgIG5vdEltcGxlbWVudGVkKCk7
CisgICAgcmV0dXJuIGZhbHNlOworfQorCitib29sIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6
aGFzQXVkaW8oKSBjb25zdAoreworICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIGZh
bHNlOworfQorCit2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6c2V0VmlzaWJsZShib29s
KQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKK01lZGlhVGltZSBNZWRpYVBsYXllclBy
aXZhdGVSZW1vdGU6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6ZHVyYXRpb25NZWRpYVRpbWUo
KSBjb25zdAoreworICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIE1lZGlhVGltZTo6
emVyb1RpbWUoKTsKK30KKworTWVkaWFUaW1lIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6Y3Vy
cmVudE1lZGlhVGltZSgpIGNvbnN0Cit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1
cm4gTWVkaWFUaW1lOjp6ZXJvVGltZSgpOworfQorCitNZWRpYVRpbWUgTWVkaWFQbGF5ZXJQcml2
YXRlUmVtb3RlOjpnZXRTdGFydERhdGUoKSBjb25zdAoreworICAgIG5vdEltcGxlbWVudGVkKCk7
CisgICAgcmV0dXJuIE1lZGlhVGltZTo6emVyb1RpbWUoKTsKK30KKwordm9pZCBNZWRpYVBsYXll
clByaXZhdGVSZW1vdGU6OnNlZWsoY29uc3QgTWVkaWFUaW1lJikKK3sKKyAgICBub3RJbXBsZW1l
bnRlZCgpOworfQorCit2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6c2Vla1dpdGhUb2xl
cmFuY2UoY29uc3QgTWVkaWFUaW1lJiwgY29uc3QgTWVkaWFUaW1lJiwgY29uc3QgTWVkaWFUaW1l
JikKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCitib29sIE1lZGlhUGxheWVyUHJpdmF0
ZVJlbW90ZTo6c2Vla2luZygpIGNvbnN0Cit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICBy
ZXR1cm4gZmFsc2U7Cit9CisKK01lZGlhVGltZSBNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OnN0
YXJ0VGltZSgpIGNvbnN0Cit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gTWVk
aWFUaW1lOjp6ZXJvVGltZSgpOworfQorCit2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6
c2V0UmF0ZURvdWJsZShkb3VibGUpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKworZG91
YmxlIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6cmF0ZSgpIGNvbnN0Cit7CisgICAgbm90SW1w
bGVtZW50ZWQoKTsKKyAgICByZXR1cm4gMDsKK30KKwordm9pZCBNZWRpYVBsYXllclByaXZhdGVS
ZW1vdGU6OnNldFByZXNlcnZlc1BpdGNoKGJvb2wpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsK
K30KKworYm9vbCBNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OnBhdXNlZCgpIGNvbnN0Cit7Cisg
ICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK3ZvaWQgTWVkaWFQ
bGF5ZXJQcml2YXRlUmVtb3RlOjpzZXRWb2x1bWVEb3VibGUoZG91YmxlKQoreworICAgIG5vdElt
cGxlbWVudGVkKCk7Cit9CisKK3ZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpzZXRNdXRl
ZChib29sKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKK2Jvb2wgTWVkaWFQbGF5ZXJQ
cml2YXRlUmVtb3RlOjpoYXNDbG9zZWRDYXB0aW9ucygpIGNvbnN0Cit7CisgICAgbm90SW1wbGVt
ZW50ZWQoKTsKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK3ZvaWQgTWVkaWFQbGF5ZXJQcml2YXRl
UmVtb3RlOjpzZXRDbG9zZWRDYXB0aW9uc1Zpc2libGUoYm9vbCkKK3sKKyAgICBub3RJbXBsZW1l
bnRlZCgpOworfQorCitkb3VibGUgTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjptYXhGYXN0Rm9y
d2FyZFJhdGUoKSBjb25zdAoreworICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIDA7
Cit9CisKK2RvdWJsZSBNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6Om1pbkZhc3RSZXZlcnNlUmF0
ZSgpIGNvbnN0Cit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gMDsKK30KKwor
TWVkaWFQbGF5ZXI6Ok5ldHdvcmtTdGF0ZSBNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6Om5ldHdv
cmtTdGF0ZSgpIGNvbnN0Cit7CisgICAgaWYgKG1faW52YWxpZCkKKyAgICAgICAgcmV0dXJuIE1l
ZGlhUGxheWVyOjpGb3JtYXRFcnJvcjsKKworICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0
dXJuIE1lZGlhUGxheWVyOjpFbXB0eTsKK30KKworTWVkaWFQbGF5ZXI6OlJlYWR5U3RhdGUgTWVk
aWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpyZWFkeVN0YXRlKCkgY29uc3QKK3sKKyAgICBpZiAobV9p
bnZhbGlkKQorICAgICAgICByZXR1cm4gTWVkaWFQbGF5ZXI6OkhhdmVOb3RoaW5nOworCisgICAg
bm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gTWVkaWFQbGF5ZXI6OkhhdmVOb3RoaW5nOwor
fQorCitzdGQ6OnVuaXF1ZV9wdHI8UGxhdGZvcm1UaW1lUmFuZ2VzPiBNZWRpYVBsYXllclByaXZh
dGVSZW1vdGU6OnNlZWthYmxlKCkgY29uc3QKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAg
IHJldHVybiBtYWtlVW5pcXVlPFBsYXRmb3JtVGltZVJhbmdlcz4oKTsKK30KKworc3RkOjp1bmlx
dWVfcHRyPFBsYXRmb3JtVGltZVJhbmdlcz4gTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpidWZm
ZXJlZCgpIGNvbnN0Cit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gbWFrZVVu
aXF1ZTxQbGF0Zm9ybVRpbWVSYW5nZXM+KCk7Cit9CisKK01lZGlhVGltZSBNZWRpYVBsYXllclBy
aXZhdGVSZW1vdGU6Om1heE1lZGlhVGltZVNlZWthYmxlKCkgY29uc3QKK3sKKyAgICBub3RJbXBs
ZW1lbnRlZCgpOworICAgIHJldHVybiBNZWRpYVRpbWU6Onplcm9UaW1lKCk7Cit9CisKK01lZGlh
VGltZSBNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6Om1pbk1lZGlhVGltZVNlZWthYmxlKCkgY29u
c3QKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiBNZWRpYVRpbWU6Onplcm9U
aW1lKCk7Cit9CisKK2RvdWJsZSBNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OnNlZWthYmxlVGlt
ZVJhbmdlc0xhc3RNb2RpZmllZFRpbWUoKSBjb25zdAoreworICAgIG5vdEltcGxlbWVudGVkKCk7
CisgICAgcmV0dXJuIDA7Cit9CisKK2RvdWJsZSBNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6Omxp
dmVVcGRhdGVJbnRlcnZhbCgpIGNvbnN0Cit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICBy
ZXR1cm4gMDsKK30KKwordW5zaWduZWQgbG9uZyBsb25nIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90
ZTo6dG90YWxCeXRlcygpIGNvbnN0Cit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1
cm4gMDsKK30KKworYm9vbCBNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OmRpZExvYWRpbmdQcm9n
cmVzcygpIGNvbnN0Cit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gZmFsc2U7
Cit9CisKK3ZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpzZXRTaXplKGNvbnN0IEludFNp
emUmKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKK3ZvaWQgTWVkaWFQbGF5ZXJQcml2
YXRlUmVtb3RlOjpwYWludChHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJlY3QmKQorewor
ICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKK3ZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3Rl
OjpwYWludEN1cnJlbnRGcmFtZUluQ29udGV4dChHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9h
dFJlY3QmKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKK2Jvb2wgTWVkaWFQbGF5ZXJQ
cml2YXRlUmVtb3RlOjpjb3B5VmlkZW9UZXh0dXJlVG9QbGF0Zm9ybVRleHR1cmUoR3JhcGhpY3ND
b250ZXh0M0QqLCBQbGF0Zm9ybTNET2JqZWN0LCBHQzNEZW51bSwgR0MzRGludCwgR0MzRGVudW0s
IEdDM0RlbnVtLCBHQzNEZW51bSwgYm9vbCwgYm9vbCkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgp
OworICAgIHJldHVybiBmYWxzZTsKK30KKworTmF0aXZlSW1hZ2VQdHIgTWVkaWFQbGF5ZXJQcml2
YXRlUmVtb3RlOjpuYXRpdmVJbWFnZUZvckN1cnJlbnRUaW1lKCkKK3sKKyAgICBub3RJbXBsZW1l
bnRlZCgpOworICAgIHJldHVybiBudWxscHRyOworfQorCit2b2lkIE1lZGlhUGxheWVyUHJpdmF0
ZVJlbW90ZTo6c2V0UHJlbG9hZChNZWRpYVBsYXllcjo6UHJlbG9hZCkKK3sKKyAgICBub3RJbXBs
ZW1lbnRlZCgpOworfQorCitib29sIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6aGFzQXZhaWxh
YmxlVmlkZW9GcmFtZSgpIGNvbnN0Cit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1
cm4gZmFsc2U7Cit9CisKK2Jvb2wgTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpjYW5Mb2FkUG9z
dGVyKCkgY29uc3QKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiBmYWxzZTsK
K30KKwordm9pZCBNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OnNldFBvc3Rlcihjb25zdCBTdHJp
bmcmKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKKyNpZiBVU0UoTkFUSVZFX0ZVTExT
Q1JFRU5fVklERU8pCit2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6ZW50ZXJGdWxsc2Ny
ZWVuKCkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCit2b2lkIE1lZGlhUGxheWVyUHJp
dmF0ZVJlbW90ZTo6ZXhpdEZ1bGxzY3JlZW4oKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9
CisjZW5kaWYKKworI2lmIEVOQUJMRShXSVJFTEVTU19QTEFZQkFDS19UQVJHRVQpCitTdHJpbmcg
TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjp3aXJlbGVzc1BsYXliYWNrVGFyZ2V0TmFtZSgpIGNv
bnN0Cit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gZW1wdHlTdHJpbmcoKTsK
K30KKworTWVkaWFQbGF5ZXI6OldpcmVsZXNzUGxheWJhY2tUYXJnZXRUeXBlIE1lZGlhUGxheWVy
UHJpdmF0ZVJlbW90ZTo6d2lyZWxlc3NQbGF5YmFja1RhcmdldFR5cGUoKSBjb25zdAoreworICAg
IG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIE1lZGlhUGxheWVyOjpUYXJnZXRUeXBlTm9u
ZTsKK30KKworYm9vbCBNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OndpcmVsZXNzVmlkZW9QbGF5
YmFja0Rpc2FibGVkKCkgY29uc3QKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVy
biB0cnVlOworfQorCit2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6c2V0V2lyZWxlc3NW
aWRlb1BsYXliYWNrRGlzYWJsZWQoYm9vbCkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQor
Citib29sIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6Y2FuUGxheVRvV2lyZWxlc3NQbGF5YmFj
a1RhcmdldCgpIGNvbnN0Cit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gZmFs
c2U7Cit9CisKK2Jvb2wgTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjppc0N1cnJlbnRQbGF5YmFj
a1RhcmdldFdpcmVsZXNzKCkgY29uc3QKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJl
dHVybiBmYWxzZTsKK30KKwordm9pZCBNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OnNldFdpcmVs
ZXNzUGxheWJhY2tUYXJnZXQoUmVmPE1lZGlhUGxheWJhY2tUYXJnZXQ+JiYpCit7CisgICAgbm90
SW1wbGVtZW50ZWQoKTsKK30KKwordm9pZCBNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OnNldFNo
b3VsZFBsYXlUb1BsYXliYWNrVGFyZ2V0KGJvb2wpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsK
K30KKyNlbmRpZgorCisjaWYgVVNFKE5BVElWRV9GVUxMU0NSRUVOX1ZJREVPKQorYm9vbCBNZWRp
YVBsYXllclByaXZhdGVSZW1vdGU6OmNhbkVudGVyRnVsbHNjcmVlbigpIGNvbnN0Cit7CisgICAg
bm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gZmFsc2U7Cit9CisjZW5kaWYKKworYm9vbCBN
ZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OnN1cHBvcnRzQWNjZWxlcmF0ZWRSZW5kZXJpbmcoKSBj
b25zdAoreworICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIGZhbHNlOworfQorCit2
b2lkIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6YWNjZWxlcmF0ZWRSZW5kZXJpbmdTdGF0ZUNo
YW5nZWQoKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKK2Jvb2wgTWVkaWFQbGF5ZXJQ
cml2YXRlUmVtb3RlOjpzaG91bGRNYWludGFpbkFzcGVjdFJhdGlvKCkgY29uc3QKK3sKKyAgICBu
b3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiB0cnVlOworfQorCit2b2lkIE1lZGlhUGxheWVy
UHJpdmF0ZVJlbW90ZTo6c2V0U2hvdWxkTWFpbnRhaW5Bc3BlY3RSYXRpbyhib29sKQoreworICAg
IG5vdEltcGxlbWVudGVkKCk7Cit9CisKK2Jvb2wgTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpo
YXNTaW5nbGVTZWN1cml0eU9yaWdpbigpIGNvbnN0Cit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsK
KyAgICByZXR1cm4gZmFsc2U7Cit9CisKK2Jvb2wgTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpk
aWRQYXNzQ09SU0FjY2Vzc0NoZWNrKCkgY29uc3QKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOwor
ICAgIHJldHVybiBmYWxzZTsKK30KKworT3B0aW9uYWw8Ym9vbD4gTWVkaWFQbGF5ZXJQcml2YXRl
UmVtb3RlOjp3b3VsZFRhaW50T3JpZ2luKGNvbnN0IFNlY3VyaXR5T3JpZ2luJikgY29uc3QKK3sK
KyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Cit9CisKK01l
ZGlhUGxheWVyOjpNb3ZpZUxvYWRUeXBlIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6bW92aWVM
b2FkVHlwZSgpIGNvbnN0Cit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gTWVk
aWFQbGF5ZXI6OlVua25vd247Cit9CisKK3ZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpw
cmVwYXJlRm9yUmVuZGVyaW5nKCkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCitNZWRp
YVRpbWUgTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjptZWRpYVRpbWVGb3JUaW1lVmFsdWUoY29u
c3QgTWVkaWFUaW1lJiB0aW1lVmFsdWUpIGNvbnN0Cit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsK
KyAgICByZXR1cm4gdGltZVZhbHVlOworfQorCitkb3VibGUgTWVkaWFQbGF5ZXJQcml2YXRlUmVt
b3RlOjptYXhpbXVtRHVyYXRpb25Ub0NhY2hlTWVkaWFUaW1lKCkgY29uc3QKK3sKKyAgICBub3RJ
bXBsZW1lbnRlZCgpOworICAgIHJldHVybiAwOworfQorCit1bnNpZ25lZCBNZWRpYVBsYXllclBy
aXZhdGVSZW1vdGU6OmRlY29kZWRGcmFtZUNvdW50KCkgY29uc3QKK3sKKyAgICBub3RJbXBsZW1l
bnRlZCgpOworICAgIHJldHVybiAwOworfQorCit1bnNpZ25lZCBNZWRpYVBsYXllclByaXZhdGVS
ZW1vdGU6OmRyb3BwZWRGcmFtZUNvdW50KCkgY29uc3QKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgp
OworICAgIHJldHVybiAwOworfQorCit1bnNpZ25lZCBNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6
OmF1ZGlvRGVjb2RlZEJ5dGVDb3VudCgpIGNvbnN0Cit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsK
KyAgICByZXR1cm4gMDsKK30KKwordW5zaWduZWQgTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjp2
aWRlb0RlY29kZWRCeXRlQ291bnQoKSBjb25zdAoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cisg
ICAgcmV0dXJuIDA7Cit9CisKK3ZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpzZXRQcml2
YXRlQnJvd3NpbmdNb2RlKGJvb2wpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKworU3Ry
aW5nIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6ZW5naW5lRGVzY3JpcHRpb24oKSBjb25zdAor
eworICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIGVtcHR5U3RyaW5nKCk7Cit9CisK
KyNpZiBFTkFCTEUoV0VCX0FVRElPKQorQXVkaW9Tb3VyY2VQcm92aWRlciogTWVkaWFQbGF5ZXJQ
cml2YXRlUmVtb3RlOjphdWRpb1NvdXJjZVByb3ZpZGVyKCkKK3sKKyAgICBub3RJbXBsZW1lbnRl
ZCgpOworICAgIHJldHVybiBudWxscHRyOworfQorI2VuZGlmCisKKyNpZiBFTkFCTEUoTEVHQUNZ
X0VOQ1JZUFRFRF9NRURJQSkKK3N0ZDo6dW5pcXVlX3B0cjxMZWdhY3lDRE1TZXNzaW9uPiBNZWRp
YVBsYXllclByaXZhdGVSZW1vdGU6OmNyZWF0ZVNlc3Npb24oY29uc3QgU3RyaW5nJiwgTGVnYWN5
Q0RNU2Vzc2lvbkNsaWVudCopCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4g
bnVsbHB0cjsKK30KKwordm9pZCBNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OnNldENETVNlc3Np
b24oTGVnYWN5Q0RNU2Vzc2lvbiopCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwordm9p
ZCBNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OmtleUFkZGVkKCkKK3sKKyAgICBub3RJbXBsZW1l
bnRlZCgpOworfQorI2VuZGlmCisKKyNpZiBFTkFCTEUoRU5DUllQVEVEX01FRElBKQordm9pZCBN
ZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OmNkbUluc3RhbmNlQXR0YWNoZWQoQ0RNSW5zdGFuY2Um
KQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKK3ZvaWQgTWVkaWFQbGF5ZXJQcml2YXRl
UmVtb3RlOjpjZG1JbnN0YW5jZURldGFjaGVkKENETUluc3RhbmNlJikKK3sKKyAgICBub3RJbXBs
ZW1lbnRlZCgpOworfQorCit2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6YXR0ZW1wdFRv
RGVjcnlwdFdpdGhJbnN0YW5jZShDRE1JbnN0YW5jZSYpCit7CisgICAgbm90SW1wbGVtZW50ZWQo
KTsKK30KKworYm9vbCBNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OndhaXRpbmdGb3JLZXkoKSBj
b25zdAoreworICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIGZhbHNlOworfQorI2Vu
ZGlmCisKKyNpZiBFTkFCTEUoVklERU9fVFJBQ0spCitib29sIE1lZGlhUGxheWVyUHJpdmF0ZVJl
bW90ZTo6cmVxdWlyZXNUZXh0VHJhY2tSZXByZXNlbnRhdGlvbigpIGNvbnN0Cit7CisgICAgbm90
SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK3ZvaWQgTWVkaWFQbGF5ZXJQ
cml2YXRlUmVtb3RlOjpzZXRUZXh0VHJhY2tSZXByZXNlbnRhdGlvbihUZXh0VHJhY2tSZXByZXNl
bnRhdGlvbiopCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwordm9pZCBNZWRpYVBsYXll
clByaXZhdGVSZW1vdGU6OnN5bmNUZXh0VHJhY2tCb3VuZHMoKQoreworICAgIG5vdEltcGxlbWVu
dGVkKCk7Cit9CisKK3ZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjp0cmFja3NDaGFuZ2Vk
KCkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorI2VuZGlmCisKKyNpZiBVU0UoR1NUUkVB
TUVSKQordm9pZCBNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OnNpbXVsYXRlQXVkaW9JbnRlcnJ1
cHRpb24oKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisjZW5kaWYKKwordm9pZCBNZWRp
YVBsYXllclByaXZhdGVSZW1vdGU6OmJlZ2luU2ltdWxhdGVkSERDUEVycm9yKCkKK3sKKyAgICBu
b3RJbXBsZW1lbnRlZCgpOworfQorCit2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6ZW5k
U2ltdWxhdGVkSERDUEVycm9yKCkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCitTdHJp
bmcgTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpsYW5ndWFnZU9mUHJpbWFyeUF1ZGlvVHJhY2so
KSBjb25zdAoreworICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIGVtcHR5U3RyaW5n
KCk7Cit9CisKK3NpemVfdCBNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OmV4dHJhTWVtb3J5Q29z
dCgpIGNvbnN0Cit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gMDsKK30KKwor
dW5zaWduZWQgbG9uZyBsb25nIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6ZmlsZVNpemUoKSBj
b25zdAoreworICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIDA7Cit9CisKK2Jvb2wg
TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjplbmRlZCgpIGNvbnN0Cit7CisgICAgbm90SW1wbGVt
ZW50ZWQoKTsKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK09wdGlvbmFsPFZpZGVvUGxheWJhY2tR
dWFsaXR5TWV0cmljcz4gTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjp2aWRlb1BsYXliYWNrUXVh
bGl0eU1ldHJpY3MoKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIFdURjo6
bnVsbG9wdDsKK30KKworI2lmIEVOQUJMRShBVkZfQ0FQVElPTlMpCit2b2lkIE1lZGlhUGxheWVy
UHJpdmF0ZVJlbW90ZTo6bm90aWZ5VHJhY2tNb2RlQ2hhbmdlZCgpCit7CisgICAgbm90SW1wbGVt
ZW50ZWQoKTsKK30KKyNlbmRpZgorCit2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6bm90
aWZ5QWN0aXZlU291cmNlQnVmZmVyc0NoYW5nZWQoKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7
Cit9CisKK3ZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpzZXRTaG91bGREaXNhYmxlU2xl
ZXAoYm9vbCkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCit2b2lkIE1lZGlhUGxheWVy
UHJpdmF0ZVJlbW90ZTo6YXBwbGljYXRpb25XaWxsUmVzaWduQWN0aXZlKCkKK3sKKyAgICBub3RJ
bXBsZW1lbnRlZCgpOworfQorCit2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6YXBwbGlj
YXRpb25EaWRCZWNvbWVBY3RpdmUoKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKK2Jv
b2wgTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpwZXJmb3JtVGFza0F0TWVkaWFUaW1lKFdURjo6
RnVuY3Rpb248dm9pZCgpPiYmLCBNZWRpYVRpbWUpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsK
KyAgICByZXR1cm4gZmFsc2U7Cit9CisKK2Jvb2wgTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpz
aG91bGRJZ25vcmVJbnRyaW5zaWNTaXplKCkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAg
IHJldHVybiBmYWxzZTsKK30KKworI2lmICFSRUxFQVNFX0xPR19ESVNBQkxFRAorV1RGTG9nQ2hh
bm5lbCYgTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpsb2dDaGFubmVsKCkgY29uc3QKK3sKKyAg
ICByZXR1cm4gV2ViS2l0MkxvZ1dlYlJUQzsKK30KKyNlbmRpZgorCit9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQ
VS9tZWRpYS9NZWRpYVBsYXllclByaXZhdGVSZW1vdGUuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9HUFUvbWVkaWEvTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlLmgKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMmJl
NDJiNDYyOWU5ZTFlMzBhNWIwNjc3MjI1NTlmN2JhNWQ1MmM1MwotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvTWVkaWFQbGF5ZXJQcml2YXRlUmVt
b3RlLmgKQEAgLTAsMCArMSwyOTcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUK
KyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4gCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoR1BVX1BST0NFU1MpCisK
KyNpbmNsdWRlICJSZW1vdGVNZWRpYVBsYXllck1hbmFnZXIuaCIKKyNpbmNsdWRlIDxXZWJDb3Jl
L01lZGlhUGxheWVyUHJpdmF0ZS5oPgorI2luY2x1ZGUgPHd0Zi9Mb2dnZXJIZWxwZXIuaD4KKyNp
bmNsdWRlIDx3dGYvTWVkaWFUaW1lLmg+CisjaW5jbHVkZSA8d3RmL1dlYWtQdHIuaD4KKworbmFt
ZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZSBmaW5hbAor
ICAgIDogcHVibGljIENhbk1ha2VXZWFrUHRyPE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZT4KKyAg
ICAsIHB1YmxpYyBNZWRpYVBsYXllclByaXZhdGVJbnRlcmZhY2UKKyNpZiAhUkVMRUFTRV9MT0df
RElTQUJMRUQKKyAgICAsIHByaXZhdGUgTG9nZ2VySGVscGVyCisjZW5kaWYKK3sKK3B1YmxpYzoK
KyAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZT4gY3Jl
YXRlKE1lZGlhUGxheWVyKiBwbGF5ZXIsIGNvbnN0IFN0cmluZyYgcmVtb3RlRW5naW5lSWRlbnRp
ZmllciwgTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlSWRlbnRpZmllciBpZGVudGlmaWVyLCBSZW1v
dGVNZWRpYVBsYXllck1hbmFnZXImIG1hbmFnZXIpCisgICAgeworICAgICAgICByZXR1cm4gbWFr
ZVVuaXF1ZTxNZWRpYVBsYXllclByaXZhdGVSZW1vdGU+KHBsYXllciwgcmVtb3RlRW5naW5lSWRl
bnRpZmllciwgaWRlbnRpZmllciwgbWFuYWdlcik7CisgICAgfQorCisgICAgZXhwbGljaXQgTWVk
aWFQbGF5ZXJQcml2YXRlUmVtb3RlKE1lZGlhUGxheWVyKiwgY29uc3QgU3RyaW5nJiwgTWVkaWFQ
bGF5ZXJQcml2YXRlUmVtb3RlSWRlbnRpZmllciwgUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyJik7
CisgICAgdmlydHVhbCB+TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlKCk7CisKKyAgICB2b2lkIGlu
dmFsaWRhdGUoKSB7IG1faW52YWxpZCA9IHRydWU7IH0KKworI2lmICFSRUxFQVNFX0xPR19ESVNB
QkxFRAorICAgIGNvbnN0IExvZ2dlciYgbG9nZ2VyKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9s
b2dnZXIuZ2V0KCk7IH0KKyAgICBjb25zdCBjaGFyKiBsb2dDbGFzc05hbWUoKSBjb25zdCBvdmVy
cmlkZSB7IHJldHVybiAiTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlIjsgfQorICAgIGNvbnN0IHZv
aWQqIGxvZ0lkZW50aWZpZXIoKSBjb25zdCBmaW5hbCB7IHJldHVybiByZWludGVycHJldF9jYXN0
PGNvbnN0IHZvaWQqPihtX2xvZ0lkZW50aWZpZXIpOyB9CisgICAgV1RGTG9nQ2hhbm5lbCYgbG9n
Q2hhbm5lbCgpIGNvbnN0IGZpbmFsOworI2VuZGlmCisKK3ByaXZhdGU6CisKKyAgICB2b2lkIGxv
YWQoY29uc3QgU3RyaW5nJikgZmluYWw7CisjaWYgRU5BQkxFKE1FRElBX1NPVVJDRSkKKyAgICB2
b2lkIGxvYWQoY29uc3QgU3RyaW5nJiwgTWVkaWFTb3VyY2VQcml2YXRlQ2xpZW50KikgZmluYWw7
CisjZW5kaWYKKyNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQorICAgIHZvaWQgbG9hZChNZWRpYVN0
cmVhbVByaXZhdGUmKSBmaW5hbDsKKyNlbmRpZgorICAgIHZvaWQgY2FuY2VsTG9hZCgpIGZpbmFs
OworICAgIAorICAgIHZvaWQgcHJlcGFyZVRvUGxheSgpIGZpbmFsOworICAgIFBsYXRmb3JtTGF5
ZXIqIHBsYXRmb3JtTGF5ZXIoKSBjb25zdCBmaW5hbDsKKworI2lmIFBMQVRGT1JNKElPU19GQU1J
TFkpIHx8IChQTEFURk9STShNQUMpICYmIEVOQUJMRShWSURFT19QUkVTRU5UQVRJT05fTU9ERSkp
CisgICAgdm9pZCBzZXRWaWRlb0Z1bGxzY3JlZW5MYXllcihQbGF0Zm9ybUxheWVyKiwgV1RGOjpG
dW5jdGlvbjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpIGZpbmFsOworICAgIHZvaWQgdXBk
YXRlVmlkZW9GdWxsc2NyZWVuSW5saW5lSW1hZ2UoKSBmaW5hbDsKKyAgICB2b2lkIHNldFZpZGVv
RnVsbHNjcmVlbkZyYW1lKEZsb2F0UmVjdCkgZmluYWw7CisgICAgdm9pZCBzZXRWaWRlb0Z1bGxz
Y3JlZW5HcmF2aXR5KE1lZGlhUGxheWVyOjpWaWRlb0dyYXZpdHkpIGZpbmFsOworICAgIHZvaWQg
c2V0VmlkZW9GdWxsc2NyZWVuTW9kZShNZWRpYVBsYXllcjo6VmlkZW9GdWxsc2NyZWVuTW9kZSkg
ZmluYWw7CisgICAgdm9pZCB2aWRlb0Z1bGxzY3JlZW5TdGFuZGJ5Q2hhbmdlZCgpIGZpbmFsOwor
I2VuZGlmCisKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQorICAgIE5TQXJyYXkgKnRpbWVkTWV0
YWRhdGEoKSBjb25zdCBmaW5hbDsKKyAgICBTdHJpbmcgYWNjZXNzTG9nKCkgY29uc3QgZmluYWw7
CisgICAgU3RyaW5nIGVycm9yTG9nKCkgY29uc3QgZmluYWw7CisjZW5kaWYKKyAgICBsb25nIHBs
YXRmb3JtRXJyb3JDb2RlKCkgY29uc3QgZmluYWw7CisKKyAgICB2b2lkIHBsYXkoKSBmaW5hbDsK
KyAgICB2b2lkIHBhdXNlKCkgZmluYWw7CisgICAgdm9pZCBzZXRCdWZmZXJpbmdQb2xpY3koTWVk
aWFQbGF5ZXI6OkJ1ZmZlcmluZ1BvbGljeSkgZmluYWw7CisKKyAgICBib29sIHN1cHBvcnRzUGlj
dHVyZUluUGljdHVyZSgpIGNvbnN0IGZpbmFsOworICAgIGJvb2wgc3VwcG9ydHNGdWxsc2NyZWVu
KCkgY29uc3QgZmluYWw7CisgICAgYm9vbCBzdXBwb3J0c1NjYW5uaW5nKCkgY29uc3QgZmluYWw7
CisgICAgYm9vbCByZXF1aXJlc0ltbWVkaWF0ZUNvbXBvc2l0aW5nKCkgY29uc3QgZmluYWw7CisK
KyAgICBib29sIGNhblNhdmVNZWRpYURhdGEoKSBjb25zdCBmaW5hbDsKKworICAgIEZsb2F0U2l6
ZSBuYXR1cmFsU2l6ZSgpIGNvbnN0IGZpbmFsOworCisgICAgYm9vbCBoYXNWaWRlbygpIGNvbnN0
IGZpbmFsOworICAgIGJvb2wgaGFzQXVkaW8oKSBjb25zdCBmaW5hbDsKKworICAgIHZvaWQgc2V0
VmlzaWJsZShib29sKSBmaW5hbDsKKworICAgIE1lZGlhVGltZSBkdXJhdGlvbk1lZGlhVGltZSgp
IGNvbnN0IGZpbmFsOworICAgIE1lZGlhVGltZSBjdXJyZW50TWVkaWFUaW1lKCkgY29uc3QgZmlu
YWw7CisKKyAgICBNZWRpYVRpbWUgZ2V0U3RhcnREYXRlKCkgY29uc3QgZmluYWw7CisKKyAgICB2
b2lkIHNlZWsoY29uc3QgTWVkaWFUaW1lJikgZmluYWw7CisgICAgdm9pZCBzZWVrV2l0aFRvbGVy
YW5jZShjb25zdCBNZWRpYVRpbWUmLCBjb25zdCBNZWRpYVRpbWUmLCBjb25zdCBNZWRpYVRpbWUm
KSBmaW5hbDsKKworICAgIGJvb2wgc2Vla2luZygpIGNvbnN0IGZpbmFsOworCisgICAgTWVkaWFU
aW1lIHN0YXJ0VGltZSgpIGNvbnN0IGZpbmFsOworCisgICAgdm9pZCBzZXRSYXRlRG91YmxlKGRv
dWJsZSkgZmluYWw7CisgICAgZG91YmxlIHJhdGUoKSBjb25zdCBmaW5hbDsKKworICAgIHZvaWQg
c2V0UHJlc2VydmVzUGl0Y2goYm9vbCkgZmluYWw7CisKKyAgICBib29sIHBhdXNlZCgpIGNvbnN0
IGZpbmFsOworCisgICAgdm9pZCBzZXRWb2x1bWVEb3VibGUoZG91YmxlKSBmaW5hbDsKKworI2lm
IFBMQVRGT1JNKElPU19GQU1JTFkpIHx8IFVTRShHU1RSRUFNRVIpCisgICAgZmxvYXQgdm9sdW1l
KCkgY29uc3QgZmluYWwgeyByZXR1cm4gMTsgfQorI2VuZGlmCisKKyAgICB2b2lkIHNldE11dGVk
KGJvb2wpIGZpbmFsOworCisgICAgYm9vbCBoYXNDbG9zZWRDYXB0aW9ucygpIGNvbnN0IGZpbmFs
OworICAgIHZvaWQgc2V0Q2xvc2VkQ2FwdGlvbnNWaXNpYmxlKGJvb2wpIGZpbmFsOworCisgICAg
ZG91YmxlIG1heEZhc3RGb3J3YXJkUmF0ZSgpIGNvbnN0IGZpbmFsOworICAgIGRvdWJsZSBtaW5G
YXN0UmV2ZXJzZVJhdGUoKSBjb25zdCBmaW5hbDsKKworICAgIE1lZGlhUGxheWVyOjpOZXR3b3Jr
U3RhdGUgbmV0d29ya1N0YXRlKCkgY29uc3QgZmluYWw7CisgICAgTWVkaWFQbGF5ZXI6OlJlYWR5
U3RhdGUgcmVhZHlTdGF0ZSgpIGNvbnN0IGZpbmFsOworCisgICAgc3RkOjp1bmlxdWVfcHRyPFBs
YXRmb3JtVGltZVJhbmdlcz4gc2Vla2FibGUoKSBjb25zdCBmaW5hbDsKKworICAgIE1lZGlhVGlt
ZSBtYXhNZWRpYVRpbWVTZWVrYWJsZSgpIGNvbnN0IGZpbmFsOworICAgIE1lZGlhVGltZSBtaW5N
ZWRpYVRpbWVTZWVrYWJsZSgpIGNvbnN0IGZpbmFsOworICAgIHN0ZDo6dW5pcXVlX3B0cjxQbGF0
Zm9ybVRpbWVSYW5nZXM+IGJ1ZmZlcmVkKCkgY29uc3QgZmluYWw7CisgICAgZG91YmxlIHNlZWth
YmxlVGltZVJhbmdlc0xhc3RNb2RpZmllZFRpbWUoKSBjb25zdCBmaW5hbDsKKyAgICBkb3VibGUg
bGl2ZVVwZGF0ZUludGVydmFsKCkgY29uc3QgZmluYWw7CisKKyAgICB1bnNpZ25lZCBsb25nIGxv
bmcgdG90YWxCeXRlcygpIGNvbnN0IGZpbmFsOworICAgIGJvb2wgZGlkTG9hZGluZ1Byb2dyZXNz
KCkgY29uc3QgZmluYWw7CisKKyAgICB2b2lkIHNldFNpemUoY29uc3QgSW50U2l6ZSYpIGZpbmFs
OworCisgICAgdm9pZCBwYWludChHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJlY3QmKSBm
aW5hbDsKKworICAgIHZvaWQgcGFpbnRDdXJyZW50RnJhbWVJbkNvbnRleHQoR3JhcGhpY3NDb250
ZXh0JiwgY29uc3QgRmxvYXRSZWN0JikgZmluYWw7CisgICAgYm9vbCBjb3B5VmlkZW9UZXh0dXJl
VG9QbGF0Zm9ybVRleHR1cmUoR3JhcGhpY3NDb250ZXh0M0QqLCBQbGF0Zm9ybTNET2JqZWN0LCBH
QzNEZW51bSwgR0MzRGludCwgR0MzRGVudW0sIEdDM0RlbnVtLCBHQzNEZW51bSwgYm9vbCwgYm9v
bCkgZmluYWw7CisgICAgTmF0aXZlSW1hZ2VQdHIgbmF0aXZlSW1hZ2VGb3JDdXJyZW50VGltZSgp
IGZpbmFsOworCisgICAgdm9pZCBzZXRQcmVsb2FkKE1lZGlhUGxheWVyOjpQcmVsb2FkKSBmaW5h
bDsKKworICAgIGJvb2wgaGFzQXZhaWxhYmxlVmlkZW9GcmFtZSgpIGNvbnN0IGZpbmFsOworCisg
ICAgYm9vbCBjYW5Mb2FkUG9zdGVyKCkgY29uc3QgZmluYWw7CisgICAgdm9pZCBzZXRQb3N0ZXIo
Y29uc3QgU3RyaW5nJikgZmluYWw7CisKKyNpZiBVU0UoTkFUSVZFX0ZVTExTQ1JFRU5fVklERU8p
CisgICAgdm9pZCBlbnRlckZ1bGxzY3JlZW4oKSBmaW5hbDsKKyAgICB2b2lkIGV4aXRGdWxsc2Ny
ZWVuKCkgZmluYWw7CisjZW5kaWYKKworI2lmIEVOQUJMRShXSVJFTEVTU19QTEFZQkFDS19UQVJH
RVQpCisgICAgU3RyaW5nIHdpcmVsZXNzUGxheWJhY2tUYXJnZXROYW1lKCkgY29uc3QgZmluYWw7
CisgICAgTWVkaWFQbGF5ZXI6OldpcmVsZXNzUGxheWJhY2tUYXJnZXRUeXBlIHdpcmVsZXNzUGxh
eWJhY2tUYXJnZXRUeXBlKCkgY29uc3QgZmluYWw7CisKKyAgICBib29sIHdpcmVsZXNzVmlkZW9Q
bGF5YmFja0Rpc2FibGVkKCkgY29uc3QgZmluYWw7CisgICAgdm9pZCBzZXRXaXJlbGVzc1ZpZGVv
UGxheWJhY2tEaXNhYmxlZChib29sKSBmaW5hbDsKKworICAgIGJvb2wgY2FuUGxheVRvV2lyZWxl
c3NQbGF5YmFja1RhcmdldCgpIGNvbnN0IGZpbmFsOworICAgIGJvb2wgaXNDdXJyZW50UGxheWJh
Y2tUYXJnZXRXaXJlbGVzcygpIGNvbnN0IGZpbmFsOworICAgIHZvaWQgc2V0V2lyZWxlc3NQbGF5
YmFja1RhcmdldChSZWY8TWVkaWFQbGF5YmFja1RhcmdldD4mJikgZmluYWw7CisKKyAgICB2b2lk
IHNldFNob3VsZFBsYXlUb1BsYXliYWNrVGFyZ2V0KGJvb2wpIGZpbmFsOworI2VuZGlmCisKKyNp
ZiBVU0UoTkFUSVZFX0ZVTExTQ1JFRU5fVklERU8pCisgICAgYm9vbCBjYW5FbnRlckZ1bGxzY3Jl
ZW4oKSBjb25zdCBmaW5hbDsKKyNlbmRpZgorCisgICAgYm9vbCBzdXBwb3J0c0FjY2VsZXJhdGVk
UmVuZGVyaW5nKCkgY29uc3QgZmluYWw7CisgICAgdm9pZCBhY2NlbGVyYXRlZFJlbmRlcmluZ1N0
YXRlQ2hhbmdlZCgpIGZpbmFsOworCisgICAgYm9vbCBzaG91bGRNYWludGFpbkFzcGVjdFJhdGlv
KCkgY29uc3QgZmluYWw7CisgICAgdm9pZCBzZXRTaG91bGRNYWludGFpbkFzcGVjdFJhdGlvKGJv
b2wpIGZpbmFsOworCisgICAgYm9vbCBoYXNTaW5nbGVTZWN1cml0eU9yaWdpbigpIGNvbnN0IGZp
bmFsOworICAgIGJvb2wgZGlkUGFzc0NPUlNBY2Nlc3NDaGVjaygpIGNvbnN0IGZpbmFsOworICAg
IE9wdGlvbmFsPGJvb2w+IHdvdWxkVGFpbnRPcmlnaW4oY29uc3QgU2VjdXJpdHlPcmlnaW4mKSBj
b25zdCBmaW5hbDsKKworICAgIE1lZGlhUGxheWVyOjpNb3ZpZUxvYWRUeXBlIG1vdmllTG9hZFR5
cGUoKSBjb25zdCBmaW5hbDsKKworICAgIHZvaWQgcHJlcGFyZUZvclJlbmRlcmluZygpIGZpbmFs
OworCisgICAgTWVkaWFUaW1lIG1lZGlhVGltZUZvclRpbWVWYWx1ZShjb25zdCBNZWRpYVRpbWUm
IHRpbWVWYWx1ZSkgY29uc3QgZmluYWw7CisKKyAgICBkb3VibGUgbWF4aW11bUR1cmF0aW9uVG9D
YWNoZU1lZGlhVGltZSgpIGNvbnN0IGZpbmFsOworCisgICAgdW5zaWduZWQgZGVjb2RlZEZyYW1l
Q291bnQoKSBjb25zdCBmaW5hbDsKKyAgICB1bnNpZ25lZCBkcm9wcGVkRnJhbWVDb3VudCgpIGNv
bnN0IGZpbmFsOworICAgIHVuc2lnbmVkIGF1ZGlvRGVjb2RlZEJ5dGVDb3VudCgpIGNvbnN0IGZp
bmFsOworICAgIHVuc2lnbmVkIHZpZGVvRGVjb2RlZEJ5dGVDb3VudCgpIGNvbnN0IGZpbmFsOwor
CisgICAgdm9pZCBzZXRQcml2YXRlQnJvd3NpbmdNb2RlKGJvb2wpIGZpbmFsOworICAgIFN0cmlu
ZyBlbmdpbmVEZXNjcmlwdGlvbigpIGNvbnN0IGZpbmFsOworCisjaWYgRU5BQkxFKFdFQl9BVURJ
TykKKyAgICBBdWRpb1NvdXJjZVByb3ZpZGVyKiBhdWRpb1NvdXJjZVByb3ZpZGVyKCkgZmluYWw7
CisjZW5kaWYKKworI2lmIEVOQUJMRShMRUdBQ1lfRU5DUllQVEVEX01FRElBKQorICAgIHN0ZDo6
dW5pcXVlX3B0cjxMZWdhY3lDRE1TZXNzaW9uPiBjcmVhdGVTZXNzaW9uKGNvbnN0IFN0cmluZyYs
IExlZ2FjeUNETVNlc3Npb25DbGllbnQqKSBmaW5hbDsKKyAgICB2b2lkIHNldENETVNlc3Npb24o
TGVnYWN5Q0RNU2Vzc2lvbiopIGZpbmFsOworICAgIHZvaWQga2V5QWRkZWQoKSBmaW5hbDsKKyNl
bmRpZgorCisjaWYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkKKyAgICB2b2lkIGNkbUluc3RhbmNl
QXR0YWNoZWQoQ0RNSW5zdGFuY2UmKSBmaW5hbDsKKyAgICB2b2lkIGNkbUluc3RhbmNlRGV0YWNo
ZWQoQ0RNSW5zdGFuY2UmKSBmaW5hbDsKKyAgICB2b2lkIGF0dGVtcHRUb0RlY3J5cHRXaXRoSW5z
dGFuY2UoQ0RNSW5zdGFuY2UmKSBmaW5hbDsKKyAgICBib29sIHdhaXRpbmdGb3JLZXkoKSBjb25z
dCBmaW5hbDsKKyNlbmRpZgorCisjaWYgRU5BQkxFKFZJREVPX1RSQUNLKQorICAgIGJvb2wgcmVx
dWlyZXNUZXh0VHJhY2tSZXByZXNlbnRhdGlvbigpIGNvbnN0IGZpbmFsOworICAgIHZvaWQgc2V0
VGV4dFRyYWNrUmVwcmVzZW50YXRpb24oVGV4dFRyYWNrUmVwcmVzZW50YXRpb24qKSBmaW5hbDsK
KyAgICB2b2lkIHN5bmNUZXh0VHJhY2tCb3VuZHMoKSBmaW5hbDsKKyAgICB2b2lkIHRyYWNrc0No
YW5nZWQoKSBmaW5hbDsKKyNlbmRpZgorCisjaWYgVVNFKEdTVFJFQU1FUikKKyAgICB2b2lkIHNp
bXVsYXRlQXVkaW9JbnRlcnJ1cHRpb24oKSBmaW5hbDsKKyNlbmRpZgorCisgICAgdm9pZCBiZWdp
blNpbXVsYXRlZEhEQ1BFcnJvcigpIGZpbmFsOworICAgIHZvaWQgZW5kU2ltdWxhdGVkSERDUEVy
cm9yKCkgZmluYWw7CisKKyAgICBTdHJpbmcgbGFuZ3VhZ2VPZlByaW1hcnlBdWRpb1RyYWNrKCkg
Y29uc3QgZmluYWw7CisKKyAgICBzaXplX3QgZXh0cmFNZW1vcnlDb3N0KCkgY29uc3QgZmluYWw7
CisKKyAgICB1bnNpZ25lZCBsb25nIGxvbmcgZmlsZVNpemUoKSBjb25zdCBmaW5hbDsKKworICAg
IGJvb2wgZW5kZWQoKSBjb25zdCBmaW5hbDsKKworICAgIE9wdGlvbmFsPFZpZGVvUGxheWJhY2tR
dWFsaXR5TWV0cmljcz4gdmlkZW9QbGF5YmFja1F1YWxpdHlNZXRyaWNzKCkgZmluYWw7CisKKyNp
ZiBFTkFCTEUoQVZGX0NBUFRJT05TKQorICAgIHZvaWQgbm90aWZ5VHJhY2tNb2RlQ2hhbmdlZCgp
IGZpbmFsOworI2VuZGlmCisKKyAgICB2b2lkIG5vdGlmeUFjdGl2ZVNvdXJjZUJ1ZmZlcnNDaGFu
Z2VkKCkgZmluYWw7CisKKyAgICB2b2lkIHNldFNob3VsZERpc2FibGVTbGVlcChib29sKSBmaW5h
bDsKKworICAgIHZvaWQgYXBwbGljYXRpb25XaWxsUmVzaWduQWN0aXZlKCkgZmluYWw7CisgICAg
dm9pZCBhcHBsaWNhdGlvbkRpZEJlY29tZUFjdGl2ZSgpIGZpbmFsOworCisjaWYgVVNFKEFWRk9V
TkRBVElPTikKKyAgICBBVlBsYXllciAqb2JqQ0FWRm91bmRhdGlvbkFWUGxheWVyKCkgY29uc3Qg
ZmluYWwgeyByZXR1cm4gbnVsbHB0cjsgfQorI2VuZGlmCisKKyAgICBib29sIHBlcmZvcm1UYXNr
QXRNZWRpYVRpbWUoV1RGOjpGdW5jdGlvbjx2b2lkKCk+JiYsIE1lZGlhVGltZSkgZmluYWw7CisK
KyAgICBib29sIHNob3VsZElnbm9yZUludHJpbnNpY1NpemUoKSBmaW5hbDsKKworICAgIE1lZGlh
UGxheWVyKiBtX3BsYXllciB7IG51bGxwdHIgfTsKKyAgICBSZW1vdGVNZWRpYVBsYXllck1hbmFn
ZXIgbV9tYW5hZ2VyOworICAgIFN0cmluZyBtX3JlbW90ZUVuZ2luZUlkZW50aWZpZXI7CisgICAg
TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlSWRlbnRpZmllciBtX2lkZW50aWZpZXI7CisKKyNpZiAh
UkVMRUFTRV9MT0dfRElTQUJMRUQKKyAgICBSZWY8Y29uc3QgTG9nZ2VyPiBtX2xvZ2dlcjsKKyAg
ICBjb25zdCB2b2lkKiBtX2xvZ0lkZW50aWZpZXI7CisjZW5kaWYKKworICAgIGJvb2wgbV9pbnZh
bGlkIHsgZmFsc2UgfTsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvTWVkaWFQbGF5ZXJQ
cml2YXRlUmVtb3RlSWRlbnRpZmllci5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9t
ZWRpYS9NZWRpYVBsYXllclByaXZhdGVSZW1vdGVJZGVudGlmaWVyLmgKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uODdl
N2I4YmJhZWMzNTM0ZTdkZWZkNzgyMzg2MTAxNDMyMTc1MzhjNwotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvTWVkaWFQbGF5ZXJQcml2YXRlUmVt
b3RlSWRlbnRpZmllci5oCkBAIC0wLDAgKzEsMzUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSAsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMg
YGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBv
bmNlCisKKyNpbmNsdWRlIDx3dGYvT2JqZWN0SWRlbnRpZmllci5oPgorCituYW1lc3BhY2UgV2Vi
S2l0IHsKKworZW51bSBNZWRpYVBsYXllclByaXZhdGVSZW1vdGVJZGVudGlmaWVyVHlwZSB7IH07
Cit1c2luZyBNZWRpYVBsYXllclByaXZhdGVSZW1vdGVJZGVudGlmaWVyID0gT2JqZWN0SWRlbnRp
ZmllcjxNZWRpYVBsYXllclByaXZhdGVSZW1vdGVJZGVudGlmaWVyVHlwZT47CisKK30gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUv
bWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9HUFUvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyLmNwcApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5k
ZDQ5Y2RlM2U3NWIxMjIyNDMwYmFkZjE1MjM5MTYyNTE4ZjJhNmZiCi0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVNZWRpYVBsYXllck1h
bmFnZXIuY3BwCkBAIC0wLDAgKzEsMjEzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE5IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJ
UycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9S
UworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwor
ICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisg
KiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZp
Zy5oIgorI2luY2x1ZGUgIlJlbW90ZU1lZGlhUGxheWVyTWFuYWdlci5oIgorCisjaWYgRU5BQkxF
KEdQVV9QUk9DRVNTKQorCisjaW5jbHVkZSAiUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyTWVzc2Fn
ZXMuaCIKKyNpbmNsdWRlICJSZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eU1lc3NhZ2VzLmgi
CisjaW5jbHVkZSAiV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgiCisjaW5jbHVkZSAiV2ViUHJvY2Vz
cy5oIgorI2luY2x1ZGUgIldlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuaCIKKyNpbmNsdWRl
IDxXZWJDb3JlL01lZGlhUGxheWVyLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9NZWRpYVBsYXllckVu
Z2luZUlkZW50aWZpZXJzLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9Ob3RJbXBsZW1lbnRlZC5oPgor
I2luY2x1ZGUgPFdlYkNvcmUvU2V0dGluZ3MuaD4KKyNpbmNsdWRlIDx3dGYvQXNzZXJ0aW9ucy5o
PgorCituYW1lc3BhY2UgV2ViS2l0IHsKK3VzaW5nIG5hbWVzcGFjZSBQQUw7Cit1c2luZyBuYW1l
c3BhY2UgV2ViQ29yZTsKKworY2xhc3MgTWVkaWFQbGF5ZXJSZW1vdGVGYWN0b3J5IDogcHVibGlj
IE1lZGlhUGxheWVyRmFjdG9yeSB7CitwdWJsaWM6CisgICAgTWVkaWFQbGF5ZXJSZW1vdGVGYWN0
b3J5KFN0cmluZyByZW1vdGVFbmdpbmVJZGVudGlmaWVyLCBSZW1vdGVNZWRpYVBsYXllck1hbmFn
ZXImIG1hbmFnZXIpCisgICAgICAgIDogbV9yZW1vdGVFbmdpbmVJZGVudGlmaWVyKHJlbW90ZUVu
Z2luZUlkZW50aWZpZXIpCisgICAgICAgICwgbV9tYW5hZ2VyKG1hbmFnZXIpCisgICAgeworICAg
IH0KKworICAgIFN0cmluZyBpZGVudGlmaWVyKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9yZW1v
dGVFbmdpbmVJZGVudGlmaWVyOyB9OworCisgICAgc3RkOjp1bmlxdWVfcHRyPE1lZGlhUGxheWVy
UHJpdmF0ZUludGVyZmFjZT4gY3JlYXRlTWVkaWFFbmdpbmVQbGF5ZXIoTWVkaWFQbGF5ZXIqIHBs
YXllcikgY29uc3QgZmluYWwKKyAgICB7CisgICAgICAgIHJldHVybiBtX21hbmFnZXIuY3JlYXRl
UmVtb3RlTWVkaWFQbGF5ZXIocGxheWVyLCBtX3JlbW90ZUVuZ2luZUlkZW50aWZpZXIpOworICAg
IH0KKworICAgIHZvaWQgZ2V0U3VwcG9ydGVkVHlwZXMoSGFzaFNldDxTdHJpbmcsIEFTQ0lJQ2Fz
ZUluc2Vuc2l0aXZlSGFzaD4mIHR5cGVzKSBjb25zdCBmaW5hbAorICAgIHsKKyAgICAgICAgcmV0
dXJuIG1fbWFuYWdlci5nZXRTdXBwb3J0ZWRUeXBlcyhtX3JlbW90ZUVuZ2luZUlkZW50aWZpZXIs
IHR5cGVzKTsKKyAgICB9CisKKyAgICBNZWRpYVBsYXllcjo6U3VwcG9ydHNUeXBlIHN1cHBvcnRz
VHlwZUFuZENvZGVjcyhjb25zdCBNZWRpYUVuZ2luZVN1cHBvcnRQYXJhbWV0ZXJzJiBwYXJhbWV0
ZXJzKSBjb25zdCBmaW5hbAorICAgIHsKKyAgICAgICAgcmV0dXJuIG1fbWFuYWdlci5zdXBwb3J0
c1R5cGVBbmRDb2RlY3MobV9yZW1vdGVFbmdpbmVJZGVudGlmaWVyLCBwYXJhbWV0ZXJzKTsKKyAg
ICB9CisKKyAgICBIYXNoU2V0PFJlZlB0cjxTZWN1cml0eU9yaWdpbj4+IG9yaWdpbnNJbk1lZGlh
Q2FjaGUoY29uc3QgU3RyaW5nJiBwYXRoKSBjb25zdCBmaW5hbAorICAgIHsKKyAgICAgICAgcmV0
dXJuIG1fbWFuYWdlci5vcmlnaW5zSW5NZWRpYUNhY2hlKG1fcmVtb3RlRW5naW5lSWRlbnRpZmll
ciwgcGF0aCk7CisgICAgfQorCisgICAgdm9pZCBjbGVhck1lZGlhQ2FjaGUoY29uc3QgU3RyaW5n
JiBwYXRoLCBXYWxsVGltZSBtb2RpZmllZFNpbmNlKSBjb25zdCBmaW5hbAorICAgIHsKKyAgICAg
ICAgcmV0dXJuIG1fbWFuYWdlci5jbGVhck1lZGlhQ2FjaGUobV9yZW1vdGVFbmdpbmVJZGVudGlm
aWVyLCBwYXRoLCBtb2RpZmllZFNpbmNlKTsKKyAgICB9CisKKyAgICB2b2lkIGNsZWFyTWVkaWFD
YWNoZUZvck9yaWdpbnMoY29uc3QgU3RyaW5nJiBwYXRoLCBjb25zdCBIYXNoU2V0PFJlZlB0cjxT
ZWN1cml0eU9yaWdpbj4+JiBvcmlnaW5zKSBjb25zdCBmaW5hbAorICAgIHsKKyAgICAgICAgcmV0
dXJuIG1fbWFuYWdlci5jbGVhck1lZGlhQ2FjaGVGb3JPcmlnaW5zKG1fcmVtb3RlRW5naW5lSWRl
bnRpZmllciwgcGF0aCwgb3JpZ2lucyk7CisgICAgfQorCisgICAgYm9vbCBzdXBwb3J0c0tleVN5
c3RlbShjb25zdCBTdHJpbmcmIGtleVN5c3RlbSwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSkgY29u
c3QgZmluYWwKKyAgICB7CisgICAgICAgIHJldHVybiBtX21hbmFnZXIuc3VwcG9ydHNLZXlTeXN0
ZW0obV9yZW1vdGVFbmdpbmVJZGVudGlmaWVyLCBrZXlTeXN0ZW0sIG1pbWVUeXBlKTsKKyAgICB9
CisKK3ByaXZhdGU6CisgICAgU3RyaW5nIG1fcmVtb3RlRW5naW5lSWRlbnRpZmllcjsKKyAgICBS
ZW1vdGVNZWRpYVBsYXllck1hbmFnZXImIG1fbWFuYWdlcjsKK307CisKK1JlbW90ZU1lZGlhUGxh
eWVyTWFuYWdlcjo6UmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyKFdlYlByb2Nlc3MmIHByb2Nlc3Mp
CisgICAgOiBtX3Byb2Nlc3MocHJvY2VzcykKK3sKKyAgICBtX3Byb2Nlc3MuYWRkTWVzc2FnZVJl
Y2VpdmVyKE1lc3NhZ2VzOjpSZW1vdGVNZWRpYVBsYXllck1hbmFnZXI6Om1lc3NhZ2VSZWNlaXZl
ck5hbWUoKSwgKnRoaXMpOworfQorCitSZW1vdGVNZWRpYVBsYXllck1hbmFnZXI6On5SZW1vdGVN
ZWRpYVBsYXllck1hbmFnZXIoKQoreworICAgIG1fcHJvY2Vzcy5yZW1vdmVNZXNzYWdlUmVjZWl2
ZXIoTWVzc2FnZXM6OlJlbW90ZU1lZGlhUGxheWVyTWFuYWdlcjo6bWVzc2FnZVJlY2VpdmVyTmFt
ZSgpKTsKK30KKworY29uc3QgY2hhciogUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyOjpzdXBwbGVt
ZW50TmFtZSgpCit7CisgICAgcmV0dXJuICJSZW1vdGVNZWRpYVBsYXllck1hbmFnZXIiOworfQor
Cit2b2lkIFJlbW90ZU1lZGlhUGxheWVyTWFuYWdlcjo6aW5pdGlhbGl6ZShjb25zdCBXZWJQcm9j
ZXNzQ3JlYXRpb25QYXJhbWV0ZXJzJikKK3sKKy8vIEZJWE1FOiBVc2UgcGFyYW1ldGVycy5tZWRp
YU1JTUVUeXBlcy4KK30KKworc3RkOjp1bmlxdWVfcHRyPE1lZGlhUGxheWVyUHJpdmF0ZUludGVy
ZmFjZT4gUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyOjpjcmVhdGVSZW1vdGVNZWRpYVBsYXllcihN
ZWRpYVBsYXllciogcGxheWVyLCBjb25zdCBTdHJpbmcmIHJlbW90ZUVuZ2luZUlkZW50aWZpZXIp
Cit7CisgICAgYXV0byBpZCA9IE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZUlkZW50aWZpZXI6Omdl
bmVyYXRlKCk7CisKKyAgICBib29sIGhhdmVSZW1vdGVQcm94eTsKKyAgICBib29sIHNlbmRTdWNj
ZWVkZWQgPSBncHVQcm9jZXNzQ29ubmVjdGlvbigpLnNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVN
ZWRpYVBsYXllck1hbmFnZXJQcm94eTo6Q3JlYXRlTWVkaWFQbGF5ZXIoaWQsIHJlbW90ZUVuZ2lu
ZUlkZW50aWZpZXIpLCBNZXNzYWdlczo6UmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHk6OkNy
ZWF0ZU1lZGlhUGxheWVyOjpSZXBseShoYXZlUmVtb3RlUHJveHkpLCAwKTsKKworICAgIGF1dG8g
cmVtb3RlUGxheWVyID0gTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpjcmVhdGUocGxheWVyLCBy
ZW1vdGVFbmdpbmVJZGVudGlmaWVyLCBpZCwgKnRoaXMpOworCisgICAgaWYgKCFoYXZlUmVtb3Rl
UHJveHkgfHwgIXNlbmRTdWNjZWVkZWQpIHsKKyAgICAgICAgV1RGTG9nQWx3YXlzKCJGYWlsZWQg
dG8gY3JlYXRlIHJlbW90ZSBtZWRpYSBwbGF5ZXIuIik7CisgICAgICAgIHJlbW90ZVBsYXllci0+
aW52YWxpZGF0ZSgpOworICAgIH0KKworICAgIG1fcGxheWVycy5hZGQoaWQsIG1ha2VXZWFrUHRy
KCpyZW1vdGVQbGF5ZXIpKTsKKyAgICByZXR1cm4gcmVtb3RlUGxheWVyOworfQorCit2b2lkIFJl
bW90ZU1lZGlhUGxheWVyTWFuYWdlcjo6Z2V0U3VwcG9ydGVkVHlwZXMoY29uc3QgU3RyaW5nJiBy
ZW1vdGVFbmdpbmVJZGVudGlmaWVyLCBIYXNoU2V0PFN0cmluZywgQVNDSUlDYXNlSW5zZW5zaXRp
dmVIYXNoPiYgcmVzdWx0KQoreworICAgIC8vIEZJWE1FOiBzdXBwb3J0ZWQgdHlwZXMgZG9uJ3Qg
Y2hhbmdlLCBjYWNoZSB0aGVtLgorICAgIFZlY3RvcjxTdHJpbmc+IHR5cGVzOworICAgIGlmICgh
Z3B1UHJvY2Vzc0Nvbm5lY3Rpb24oKS5zZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlTWVkaWFQbGF5
ZXJNYW5hZ2VyUHJveHk6OkdldFN1cHBvcnRlZFR5cGVzKHJlbW90ZUVuZ2luZUlkZW50aWZpZXIp
LCBNZXNzYWdlczo6UmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHk6OkdldFN1cHBvcnRlZFR5
cGVzOjpSZXBseSh0eXBlcyksIDApKQorICAgICAgICByZXR1cm47CisKKyAgICByZXN1bHQgPSBI
YXNoU2V0PFN0cmluZywgQVNDSUlDYXNlSW5zZW5zaXRpdmVIYXNoPigpOworICAgIGZvciAoYXV0
byYgdHlwZSA6IHR5cGVzKQorICAgICAgICByZXN1bHQuYWRkKHR5cGUpOworfQorCitXZWJDb3Jl
OjpNZWRpYVBsYXllcjo6U3VwcG9ydHNUeXBlIFJlbW90ZU1lZGlhUGxheWVyTWFuYWdlcjo6c3Vw
cG9ydHNUeXBlQW5kQ29kZWNzKGNvbnN0IFN0cmluZyYgcmVtb3RlRW5naW5lSWRlbnRpZmllciwg
Y29uc3QgV2ViQ29yZTo6TWVkaWFFbmdpbmVTdXBwb3J0UGFyYW1ldGVycyYgcGFyYW1ldGVycykK
K3sKKyAgICAvLyBGSVhNRTogc3VwcG9ydGVkIHR5cGVzIGRvbid0IGNoYW5nZSwgY2FjaGUgdGhl
bS4KKworICAgIC8vIEZJWE1FOiBjb252ZXJ0IFdlYkNvcmU6Ok1lZGlhUGxheWVyOjpTdXBwb3J0
c1R5cGUgdG8gZW51bSBjbGFzcyBzbyBpdCBjYW4gYmUgZW5jb2RlZCBhbmQgc2VudCB2aWEgSVBD
CisgICAgaW50IHJlc3VsdDsKKyAgICBpZiAoIWdwdVByb2Nlc3NDb25uZWN0aW9uKCkuc2VuZFN5
bmMoTWVzc2FnZXM6OlJlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5OjpTdXBwb3J0c1R5cGUo
cmVtb3RlRW5naW5lSWRlbnRpZmllciwgcGFyYW1ldGVycyksIE1lc3NhZ2VzOjpSZW1vdGVNZWRp
YVBsYXllck1hbmFnZXJQcm94eTo6U3VwcG9ydHNUeXBlOjpSZXBseShyZXN1bHQpLCAwKSkKKyAg
ICAgICAgcmV0dXJuIE1lZGlhUGxheWVyOjpJc05vdFN1cHBvcnRlZDsKKworICAgIHJldHVybiBz
dGF0aWNfY2FzdDxXZWJDb3JlOjpNZWRpYVBsYXllcjo6U3VwcG9ydHNUeXBlPihyZXN1bHQpOwor
fQorCisKK2Jvb2wgUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyOjpzdXBwb3J0c0tleVN5c3RlbShj
b25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmIGtleVN5c3RlbSwgY29uc3QgU3RyaW5nJiBtaW1l
VHlwZSkKK3sKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKKworSGFzaFNldDxSZWZQdHI8V2ViQ29y
ZTo6U2VjdXJpdHlPcmlnaW4+PiBSZW1vdGVNZWRpYVBsYXllck1hbmFnZXI6Om9yaWdpbnNJbk1l
ZGlhQ2FjaGUoY29uc3QgU3RyaW5nJiByZW1vdGVFbmdpbmVJZGVudGlmaWVyLCBjb25zdCBTdHJp
bmcmIHBhdGgpCit7CisgICAgVmVjdG9yPFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YT4gb3Jp
Z2luRGF0YXM7CisgICAgaWYgKCFncHVQcm9jZXNzQ29ubmVjdGlvbigpLnNlbmRTeW5jKE1lc3Nh
Z2VzOjpSZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eTo6T3JpZ2luc0luTWVkaWFDYWNoZShy
ZW1vdGVFbmdpbmVJZGVudGlmaWVyLCBwYXRoKSwgTWVzc2FnZXM6OlJlbW90ZU1lZGlhUGxheWVy
TWFuYWdlclByb3h5OjpPcmlnaW5zSW5NZWRpYUNhY2hlOjpSZXBseShvcmlnaW5EYXRhcyksIDAp
KQorICAgICAgICByZXR1cm4geyB9OworCisgICAgSGFzaFNldDxSZWZQdHI8U2VjdXJpdHlPcmln
aW4+PiBvcmlnaW5zOworICAgIGZvciAoYXV0byYgb3JpZ2luRGF0YSA6IG9yaWdpbkRhdGFzKQor
ICAgICAgICBvcmlnaW5zLmFkZChvcmlnaW5EYXRhLnNlY3VyaXR5T3JpZ2luKCkpOworCisgICAg
cmV0dXJuIG9yaWdpbnM7Cit9CisKK3ZvaWQgUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyOjpjbGVh
ck1lZGlhQ2FjaGUoY29uc3QgU3RyaW5nJiByZW1vdGVFbmdpbmVJZGVudGlmaWVyLCBjb25zdCBT
dHJpbmcmIHBhdGgsIFdhbGxUaW1lIG1vZGlmaWVkU2luY2UpCit7CisgICAgZ3B1UHJvY2Vzc0Nv
bm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpSZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eTo6
Q2xlYXJNZWRpYUNhY2hlKHJlbW90ZUVuZ2luZUlkZW50aWZpZXIsIHBhdGgsIG1vZGlmaWVkU2lu
Y2UpLCAwKTsKK30KKwordm9pZCBSZW1vdGVNZWRpYVBsYXllck1hbmFnZXI6OmNsZWFyTWVkaWFD
YWNoZUZvck9yaWdpbnMoY29uc3QgU3RyaW5nJiByZW1vdGVFbmdpbmVJZGVudGlmaWVyLCBjb25z
dCBTdHJpbmcmIHBhdGgsIGNvbnN0IEhhc2hTZXQ8UmVmUHRyPFdlYkNvcmU6OlNlY3VyaXR5T3Jp
Z2luPj4mIG9yaWdpbnMpCit7CisgICAgVmVjdG9yPFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0
YT4gb3JpZ2luRGF0YTsKKyAgICBmb3IgKGF1dG8mIG9yaWdpbiA6IG9yaWdpbnMpCisgICAgICAg
IG9yaWdpbkRhdGEuYXBwZW5kKG9yaWdpbi0+ZGF0YSgpKTsKKworICAgIGdwdVByb2Nlc3NDb25u
ZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6UmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHk6OkNs
ZWFyTWVkaWFDYWNoZUZvck9yaWdpbnMocmVtb3RlRW5naW5lSWRlbnRpZmllciwgcGF0aCwgb3Jp
Z2luRGF0YSksIDApOworfQorCit2b2lkIFJlbW90ZU1lZGlhUGxheWVyTWFuYWdlcjo6bmV0d29y
a1N0YXRlQ2hhbmdlZChNZWRpYVBsYXllclByaXZhdGVSZW1vdGVJZGVudGlmaWVyKQoreworfQor
Cit2b2lkIFJlbW90ZU1lZGlhUGxheWVyTWFuYWdlcjo6dXBkYXRlUHJlZmVyZW5jZXMoY29uc3Qg
U2V0dGluZ3MmIHNldHRpbmdzKQoreworICAgIGF1dG8gcmVnaXN0ZXJFbmdpbmUgPSBbdGhpc10o
TWVkaWFFbmdpbmVSZWdpc3RyYXIgcmVnaXN0cmFyLCBjb25zdCBTdHJpbmcmIHJlbW90ZUVuZ2lu
ZUlkZW50aWZpZXIpIHsKKyAgICAgICAgcmVnaXN0cmFyKG1ha2VVbmlxdWU8TWVkaWFQbGF5ZXJS
ZW1vdGVGYWN0b3J5PihyZW1vdGVFbmdpbmVJZGVudGlmaWVyLCAqdGhpcykpOworICAgIH07CisK
KyAgICBSZW1vdGVNZWRpYVBsYXllclN1cHBvcnQ6OnNldFJlZ2lzdGVyUmVtb3RlUGxheWVyQ2Fs
bGJhY2soc2V0dGluZ3MudXNlR1BVUHJvY2Vzc0Zvck1lZGlhKCkgPyByZWdpc3RlckVuZ2luZSA6
IHN0ZDo6ZnVuY3Rpb248dm9pZChNZWRpYUVuZ2luZVJlZ2lzdHJhciwgY29uc3QgU3RyaW5nJik+
IHsgfSk7Cit9CisKK0lQQzo6Q29ubmVjdGlvbiYgUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyOjpn
cHVQcm9jZXNzQ29ubmVjdGlvbigpIGNvbnN0Cit7CisgICAgcmV0dXJuIFdlYlByb2Nlc3M6OnNp
bmdsZXRvbigpLmVuc3VyZUdQVVByb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigpOworfQor
Cit9CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9t
ZWRpYS9SZW1vdGVNZWRpYVBsYXllck1hbmFnZXIuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9HUFUvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyLmgKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMzRiOGIz
ZDM5N2NmMDAwY2Y0YTI5Nzg3NDE3ZDZlZmU3NTkyNmU5MgotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2Vy
LmgKQEAgLTAsMCArMSw4NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICog
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5B
QkxFKEdQVV9QUk9DRVNTKQorCisjaW5jbHVkZSAiTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlSWRl
bnRpZmllci5oIgorI2luY2x1ZGUgIk1lc3NhZ2VSZWNlaXZlci5oIgorI2luY2x1ZGUgIlNoYXJl
ZE1lbW9yeS5oIgorI2luY2x1ZGUgIldlYlByb2Nlc3NTdXBwbGVtZW50LmgiCisjaW5jbHVkZSA8
V2ViQ29yZS9NZWRpYVBsYXllci5oPgorI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CisKK25hbWVz
cGFjZSBXZWJDb3JlIHsKK2NsYXNzIE1lZGlhUGxheWVyOworY2xhc3MgTWVkaWFQbGF5ZXJQcml2
YXRlSW50ZXJmYWNlOworY2xhc3MgU2V0dGluZ3M7Cit9CisKK25hbWVzcGFjZSBXZWJLaXQgewor
CitjbGFzcyBNZWRpYVBsYXllclByaXZhdGVSZW1vdGU7CitjbGFzcyBXZWJQcm9jZXNzOworCitj
bGFzcyBSZW1vdGVNZWRpYVBsYXllck1hbmFnZXIgOiBwdWJsaWMgV2ViUHJvY2Vzc1N1cHBsZW1l
bnQsIHB1YmxpYyBJUEM6Ok1lc3NhZ2VSZWNlaXZlciB7CisgICAgV1RGX01BS0VfRkFTVF9BTExP
Q0FURUQ7CitwdWJsaWM6CisgICAgZXhwbGljaXQgUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyKFdl
YlByb2Nlc3MmKTsKKyAgICB+UmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyKCk7CisKKyAgICBzdGF0
aWMgY29uc3QgY2hhciogc3VwcGxlbWVudE5hbWUoKTsKKworICAgIHZvaWQgdXBkYXRlUHJlZmVy
ZW5jZXMoY29uc3QgV2ViQ29yZTo6U2V0dGluZ3MmKTsKKworICAgIElQQzo6Q29ubmVjdGlvbiYg
Z3B1UHJvY2Vzc0Nvbm5lY3Rpb24oKSBjb25zdDsKKworcHJpdmF0ZToKKyAgICBzdGQ6OnVuaXF1
ZV9wdHI8V2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlSW50ZXJmYWNlPiBjcmVhdGVSZW1vdGVN
ZWRpYVBsYXllcihXZWJDb3JlOjpNZWRpYVBsYXllciosIGNvbnN0IFN0cmluZyYpOworCisgICAg
Ly8gV2ViUHJvY2Vzc1N1cHBsZW1lbnQKKyAgICB2b2lkIGluaXRpYWxpemUoY29uc3QgV2ViUHJv
Y2Vzc0NyZWF0aW9uUGFyYW1ldGVycyYpIGZpbmFsOworCisgICAgLy8gSVBDOjpNZXNzYWdlUmVj
ZWl2ZXIKKyAgICB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6
RGVjb2RlciYpIGZpbmFsOworCisgICAgLy8gTWVzc2FnZXM6OlJlbW90ZU1lZGlhUGxheWVyTWFu
YWdlcgorICAgIHZvaWQgbmV0d29ya1N0YXRlQ2hhbmdlZChNZWRpYVBsYXllclByaXZhdGVSZW1v
dGVJZGVudGlmaWVyKTsKKworICAgIGZyaWVuZCBjbGFzcyBNZWRpYVBsYXllclJlbW90ZUZhY3Rv
cnk7CisgICAgdm9pZCBnZXRTdXBwb3J0ZWRUeXBlcyhjb25zdCBTdHJpbmcmLCBIYXNoU2V0PFN0
cmluZywgQVNDSUlDYXNlSW5zZW5zaXRpdmVIYXNoPiYpOworICAgIFdlYkNvcmU6Ok1lZGlhUGxh
eWVyOjpTdXBwb3J0c1R5cGUgc3VwcG9ydHNUeXBlQW5kQ29kZWNzKGNvbnN0IFN0cmluZyYsIGNv
bnN0IFdlYkNvcmU6Ok1lZGlhRW5naW5lU3VwcG9ydFBhcmFtZXRlcnMmKTsKKyAgICBib29sIHN1
cHBvcnRzS2V5U3lzdGVtKGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYga2V5U3lzdGVtLCBj
b25zdCBTdHJpbmcmIG1pbWVUeXBlKTsKKyAgICBIYXNoU2V0PFJlZlB0cjxXZWJDb3JlOjpTZWN1
cml0eU9yaWdpbj4+IG9yaWdpbnNJbk1lZGlhQ2FjaGUoY29uc3QgU3RyaW5nJiwgY29uc3QgU3Ry
aW5nJik7CisgICAgdm9pZCBjbGVhck1lZGlhQ2FjaGUoY29uc3QgU3RyaW5nJiwgY29uc3QgU3Ry
aW5nJiwgV2FsbFRpbWUgbW9kaWZpZWRTaW5jZSk7CisgICAgdm9pZCBjbGVhck1lZGlhQ2FjaGVG
b3JPcmlnaW5zKGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYsIGNvbnN0IEhhc2hTZXQ8UmVm
UHRyPFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luPj4mKTsKKworICAgIEhhc2hNYXA8TWVkaWFQbGF5
ZXJQcml2YXRlUmVtb3RlSWRlbnRpZmllciwgV2Vha1B0cjxNZWRpYVBsYXllclByaXZhdGVSZW1v
dGU+PiBtX3BsYXllcnM7CisgICAgV2ViUHJvY2VzcyYgbV9wcm9jZXNzOworfTsKKworfSAvLyBu
YW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVNZWRpYVBsYXllck1hbmFnZXIubWVzc2FnZXMuaW4gYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyTWFuYWdl
ci5tZXNzYWdlcy5pbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hOTMzNTdjMmJhODVmZjFkZGVjY2EwN2MzMDM5MWY4
ZTIwMjkyMTJmCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQ
VS9tZWRpYS9SZW1vdGVNZWRpYVBsYXllck1hbmFnZXIubWVzc2FnZXMuaW4KQEAgLTAsMCArMSwz
MiBAQAorIyBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisjIGFyZSBtZXQ6CisjIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisj
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyMgMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorIyAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorIworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBD
T05UUklCVVRPUlMgYGBBUyBJUycnCisjIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorIyBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisj
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1Ig
SVRTIENPTlRSSUJVVE9SUworIyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisjIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisjIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUworIyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorIyBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorIyBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GCisjIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKworI2lmIEVOQUJMRShW
SURFTykKKworbWVzc2FnZXMgLT4gUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyIE5vdFJlZkNvdW50
ZWQgeworCisgICAgTmV0d29ya1N0YXRlQ2hhbmdlZChXZWJLaXQ6Ok1lZGlhUGxheWVyUHJpdmF0
ZVJlbW90ZUlkZW50aWZpZXIgaWQpCisKK30KKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9WaWV3VXBkYXRlRGlzcGF0Y2hlci5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9WaWV3VXBkYXRlRGlzcGF0Y2hlci5jcHAKaW5k
ZXggNWNmNDQ0MDdlM2ZiM2Y2N2EwMzQ3MDAzZDA0NzhkNzQxOTkzMjQzZi4uMWZiY2M3OTZmZmI2
NTk1YTRmMzViNTI5MGE5YzNiOWE0ZGYxODY2ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlBhZ2UvVmlld1VwZGF0ZURpc3BhdGNoZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1ZpZXdVcGRhdGVEaXNwYXRjaGVyLmNwcApAQCAtMzEs
NiArMzEsNyBAQAogI2luY2x1ZGUgIlZpZXdVcGRhdGVEaXNwYXRjaGVyTWVzc2FnZXMuaCIKICNp
bmNsdWRlICJXZWJQYWdlLmgiCiAjaW5jbHVkZSAiV2ViUHJvY2Vzcy5oIgorI2luY2x1ZGUgPFdl
YkNvcmUvUGFnZUlkZW50aWZpZXIuaD4KICNpbmNsdWRlIDx3dGYvUnVuTG9vcC5oPgogCiBuYW1l
c3BhY2UgV2ViS2l0IHsKQEAgLTc1LDcgKzc2LDcgQEAgdm9pZCBWaWV3VXBkYXRlRGlzcGF0Y2hl
cjo6dmlzaWJsZUNvbnRlbnRSZWN0VXBkYXRlKFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIHBhZ2UK
IAogdm9pZCBWaWV3VXBkYXRlRGlzcGF0Y2hlcjo6ZGlzcGF0Y2hWaXNpYmxlQ29udGVudFJlY3RV
cGRhdGUoKQogewotICAgIEhhc2hNYXA8UGFnZUlkZW50aWZpZXIsIFVwZGF0ZURhdGE+IHVwZGF0
ZTsKKyAgICBIYXNoTWFwPFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBVcGRhdGVEYXRhPiB1cGRh
dGU7CiAgICAgewogICAgICAgICBMb2NrSG9sZGVyIGxvY2tlcigmbV9kYXRhTXV0ZXgpOwogICAg
ICAgICB1cGRhdGUgPSBXVEZNb3ZlKG1fbGF0ZXN0VXBkYXRlKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKaW5kZXggM2MyZmQxMmM1ODhhM2I3ZmJiNDAz
ZDc5NTM0NzBlNWI3YzJhNmMwYy4uOTIzMzk5OTk5Yzc4OTMzYjk4NDczZDA3YjRhMmI0ZTAwZmRh
NmI0ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFn
ZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAK
QEAgLTMxMiw2ICszMTIsMTAgQEAKICNpbmNsdWRlICJXZWJEZXZpY2VPcmllbnRhdGlvblVwZGF0
ZVByb3ZpZGVyLmgiCiAjZW5kaWYKIAorI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykKKyNpbmNsdWRl
ICJSZW1vdGVNZWRpYVBsYXllck1hbmFnZXIuaCIKKyNlbmRpZgorCiBuYW1lc3BhY2UgV2ViS2l0
IHsKIHVzaW5nIG5hbWVzcGFjZSBKU0M7CiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKQEAgLTM2
MDYsNiArMzYxMCwxMCBAQCB2b2lkIFdlYlBhZ2U6OnVwZGF0ZVByZWZlcmVuY2VzKGNvbnN0IFdl
YlByZWZlcmVuY2VzU3RvcmUmIHN0b3JlKQogCiAgICAgaWYgKG1fZHJhd2luZ0FyZWEpCiAgICAg
ICAgIG1fZHJhd2luZ0FyZWEtPnVwZGF0ZVByZWZlcmVuY2VzKHN0b3JlKTsKKworI2lmIEVOQUJM
RShHUFVfUFJPQ0VTUykKKyAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5zdXBwbGVtZW50PFJl
bW90ZU1lZGlhUGxheWVyTWFuYWdlcj4oKS0+dXBkYXRlUHJlZmVyZW5jZXMoc2V0dGluZ3MpOwor
I2VuZGlmCiB9CiAKICNpZiBFTkFCTEUoREFUQV9ERVRFQ1RJT04pCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViUHJvY2Vzcy5jcHAKaW5kZXggMDZiMDhkNzhiZjU4NzM1ZTgxNzgwZmEwNDFjMGE4
NzQxZWYwMGVmOS4uMTUxMzI3MWFjM2Y5NzUxNTZmOTk0MmRhZmRmMGNjMGE4Y2Q3ZTNkMyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcApAQCAtMTY0LDYgKzE2NCwxMCBA
QAogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL1JlbW90ZUluc3BlY3Rvci5oPgogI2VuZGlmCiAK
KyNpZiBFTkFCTEUoR1BVX1BST0NFU1MpCisjaW5jbHVkZSAiUmVtb3RlTWVkaWFQbGF5ZXJNYW5h
Z2VyLmgiCisjZW5kaWYKKwogLy8gVGhpcyBzaG91bGQgYmUgbGVzcyB0aGFuIHBsdWdJbkF1dG9T
dGFydEV4cGlyYXRpb25UaW1lVGhyZXNob2xkIGluIFBsdWdJbkF1dG9TdGFydFByb3ZpZGVyLgog
c3RhdGljIGNvbnN0IFNlY29uZHMgcGx1Z0luQXV0b1N0YXJ0RXhwaXJhdGlvblRpbWVVcGRhdGVU
aHJlc2hvbGQgeyAyOSAqIDI0ICogNjAgKiA2MCB9OwogCkBAIC0yMjEsNyArMjI1LDExIEBAIFdl
YlByb2Nlc3M6OldlYlByb2Nlc3MoKQogI2lmIFBMQVRGT1JNKENPQ09BKSAmJiBFTkFCTEUoTUVE
SUFfU1RSRUFNKQogICAgIGFkZFN1cHBsZW1lbnQ8VXNlck1lZGlhQ2FwdHVyZU1hbmFnZXI+KCk7
CiAjZW5kaWYKLSAgICAKKworI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykKKyAgICBhZGRTdXBwbGVt
ZW50PFJlbW90ZU1lZGlhUGxheWVyTWFuYWdlcj4oKTsKKyNlbmRpZgorCiAgICAgR2lnYWNhZ2U6
OmZvcmJpZERpc2FibGluZ1ByaW1pdGl2ZUdpZ2FjYWdlKCk7CiB9CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>385414</attachid>
            <date>2019-12-11 11:17:18 -0800</date>
            <delta_ts>2019-12-11 15:22:20 -0800</delta_ts>
            <desc>WIP patch</desc>
            <filename>bug-205094-20191211111717.patch</filename>
            <type>text/plain</type>
            <size>154287</size>
            <attacher name="Eric Carlson">eric.carlson</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjUzMzU0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNjE5MDUzNmRmMzEwYTI0
ODBlZTkzZjlkOGUxZGIwMTcwNzRiMGQwMC4uNTQ5YzFiNWRmMGEwZjM4MGRlMWQ5OGJhZjdlZjJl
ZGVkMTUzNjYzNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEwNyBAQAorMjAxOS0xMi0xMCAgRXJp
YyBDYXJsc29uICA8ZXJpYy5jYXJsc29uQGFwcGxlLmNvbT4KKworICAgICAgICBBZGQgaW5mcmFz
dHJ1Y3R1cmUgbmVlZGVkIGZvciBwbGF5aW5nIG1lZGlhIHBsYXllciBpbiB0aGUgR1BVIHByb2Nl
c3MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwNTA5
NAorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNTc4MTUzOTM+CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLCBubyBmdW5jdGlvbmFs
IGNoYW5nZSB5ZXQuCisKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2o6CisgICAgICAgICogcGxhdGZvcm0vQ29udGVudFR5cGUuaDoKKyAgICAgICAgKFdlYkNvcmU6
OkNvbnRlbnRUeXBlOjplbmNvZGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudFR5
cGU6OmRlY29kZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6bnVsbExvZ2dlcik6CisgICAgICAgIChXZWJDb3JlOjpudWxs
Q29udGVudFR5cGVWZWN0b3IpOgorICAgICAgICAoV2ViQ29yZTo6bXV0YWJsZUluc3RhbGxlZE1l
ZGlhRW5naW5lc1ZlY3Rvcik6CisgICAgICAgIChXZWJDb3JlOjpyZWdpc3RlclJlbW90ZVBsYXll
ckNhbGxiYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbW90ZU1lZGlhUGxheWVyU3VwcG9ydDo6
c2V0UmVnaXN0ZXJSZW1vdGVQbGF5ZXJDYWxsYmFjayk6CisgICAgICAgIChXZWJDb3JlOjpidWls
ZE1lZGlhRW5naW5lc1ZlY3Rvcik6CisgICAgICAgIChXZWJDb3JlOjppbnN0YWxsZWRNZWRpYUVu
Z2luZXMpOgorICAgICAgICAoV2ViQ29yZTo6YWRkTWVkaWFFbmdpbmUpOgorICAgICAgICAoV2Vi
Q29yZTo6TWVkaWFQbGF5ZXI6Om1lZGlhRW5naW5lKToKKyAgICAgICAgKFdlYkNvcmU6OmJlc3RN
ZWRpYUVuZ2luZUZvclN1cHBvcnRQYXJhbWV0ZXJzKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlh
UGxheWVyOjpuZXh0TWVkaWFFbmdpbmUpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXI6
OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllcjo6TWVkaWFQbGF5ZXIpOgor
ICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXI6Om5leHRCZXN0TWVkaWFFbmdpbmUpOgorICAg
ICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXI6OmxvYWRXaXRoTmV4dE1lZGlhRW5naW5lKToKKyAg
ICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyOjpnZXRTdXBwb3J0ZWRUeXBlcyk6CisgICAgICAg
IChXZWJDb3JlOjpNZWRpYVBsYXllcjo6b3JpZ2luc0luTWVkaWFDYWNoZSk6CisgICAgICAgIChX
ZWJDb3JlOjpNZWRpYVBsYXllcjo6Y2xlYXJNZWRpYUNhY2hlKToKKyAgICAgICAgKFdlYkNvcmU6
Ok1lZGlhUGxheWVyOjpjbGVhck1lZGlhQ2FjaGVGb3JPcmlnaW5zKToKKyAgICAgICAgKFdlYkNv
cmU6Ok1lZGlhUGxheWVyOjpzdXBwb3J0c0tleVN5c3RlbSk6CisgICAgICAgIChXZWJDb3JlOjpN
ZWRpYVBsYXllcjo6bmV0d29ya1N0YXRlQ2hhbmdlZCk6CisgICAgICAgIChXZWJDb3JlOjpuZXh0
TWVkaWFFbmdpbmUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXI6Om5l
eHRCZXN0TWVkaWFFbmdpbmUgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL01lZGlhUGxheWVyLmg6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYUVuZ2luZVN1cHBv
cnRQYXJhbWV0ZXJzOjplbmNvZGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFFbmdp
bmVTdXBwb3J0UGFyYW1ldGVyczo6ZGVjb2RlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxh
eWVyRmFjdG9yeTo6fk1lZGlhUGxheWVyRmFjdG9yeSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRp
YVBsYXllckZhY3Rvcnk6Om9yaWdpbnNJbk1lZGlhQ2FjaGUgY29uc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6TWVkaWFQbGF5ZXJGYWN0b3J5OjpjbGVhck1lZGlhQ2FjaGUgY29uc3QpOgorICAgICAg
ICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJGYWN0b3J5OjpjbGVhck1lZGlhQ2FjaGVGb3JPcmlnaW5z
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyRmFjdG9yeTo6c3VwcG9ydHNL
ZXlTeXN0ZW0gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXI6OnNldFZpZGVv
RnVsbHNjcmVlbkxheWVyKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVy
OjpzaXplIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyOjpp
bnZhbGlkVGltZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllcjo6cGxh
dGZvcm1Wb2x1bWVDb25maWd1cmF0aW9uUmVxdWlyZWQgY29uc3QpOiBEZWxldGVkLgorICAgICAg
ICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXI6OmNvbnRlbnRNSU1FVHlwZSBjb25zdCk6IERlbGV0ZWQu
CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllcjo6Y29udGVudFR5cGVDb2RlY3MgY29uc3Qp
OiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXI6OmNvbnRlbnRNSU1FVHlw
ZVdhc0luZmVycmVkRnJvbUV4dGVuc2lvbiBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJD
b3JlOjpNZWRpYVBsYXllcjo6bWVkaWFQbGF5ZXJMb2dJZGVudGlmaWVyKTogRGVsZXRlZC4KKyAg
ICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyOjpyZW5kZXJpbmdDYW5CZUFjY2VsZXJhdGVkIGNv
bnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyOjpyZW5kZXJpbmdN
b2RlQ2hhbmdlZCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXll
cjo6YWNjZWxlcmF0ZWRDb21wb3NpdGluZ0VuYWJsZWQpOiBEZWxldGVkLgorICAgICAgICAoV2Vi
Q29yZTo6TWVkaWFQbGF5ZXI6OmFjdGl2ZVNvdXJjZUJ1ZmZlcnNDaGFuZ2VkKTogRGVsZXRlZC4K
KyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyOjpwbGF5ZXJDb250ZW50Qm94UmVjdCBjb25z
dCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllcjo6cGxheWVyQ29udGVu
dHNTY2FsZSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllcjo6
c2hvdWxkVXNlUGVyc2lzdGVudENhY2hlIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNv
cmU6Ok1lZGlhUGxheWVyOjptZWRpYUNhY2hlRGlyZWN0b3J5IGNvbnN0KTogRGVsZXRlZC4KKyAg
ICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyOjppc1ZpZGVvUGxheWVyIGNvbnN0KTogRGVsZXRl
ZC4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyOjptZWRpYUVuZ2luZVVwZGF0ZWQpOiBE
ZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXI6OmlzTG9vcGluZyBjb25zdCk6
IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllcjo6cmVxdWVzdEluc3RhbGxN
aXNzaW5nUGx1Z2lucyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllcjo6
Y2xpZW50IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9NZWRp
YVBsYXllckVuZ2luZUlkZW50aWZpZXJzLmg6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL0NvbnRlbnRUeXBlLmguCisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllckVuZ2lu
ZUlkZW50aWZpZXJzOjphdkZvdW5kYXRpb25FbmdpbmVJZGVudGlmaWVyKToKKyAgICAgICAgKFdl
YkNvcmU6Ok1lZGlhUGxheWVyRW5naW5lSWRlbnRpZmllcnM6OmF2Rm91bmRhdGlvbk1TRUVuZ2lu
ZUlkZW50aWZpZXIpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJFbmdpbmVJZGVudGlm
aWVyczo6YXZGb3VuZGF0aW9uTWVkaWFTdHJlYW1FbmdpbmVJZGVudGlmaWVyKToKKyAgICAgICAg
KFdlYkNvcmU6Ok1lZGlhUGxheWVyRW5naW5lSWRlbnRpZmllcnM6OkdTdHJlYW1lck1lZGlhRW5n
aW5lSWRlbnRpZmllcik6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllckVuZ2luZUlkZW50
aWZpZXJzOjpHU3RyZWFtZXJNU0VNZWRpYUVuZ2luZUlkZW50aWZpZXIpOgorICAgICAgICAoV2Vi
Q29yZTo6TWVkaWFQbGF5ZXJFbmdpbmVJZGVudGlmaWVyczo6aG9sZVB1bmNoTWVkaWFFbmdpbmVJ
ZGVudGlmaWVyKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyRW5naW5lSWRlbnRpZmll
cnM6Ok1lZGlhRm91bmRhdGlvbk1lZGlhRW5naW5lSWRlbnRpZmllcik6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvUGxhdGZvcm1UaW1lUmFuZ2VzLmg6CisgICAgICAgIChXZWJDb3JlOjpQ
bGF0Zm9ybVRpbWVSYW5nZXM6OlBsYXRmb3JtVGltZVJhbmdlcyk6IERlbGV0ZWQuCisgICAgICAg
IChXZWJDb3JlOjpQbGF0Zm9ybVRpbWVSYW5nZXM6Omxlbmd0aCBjb25zdCk6IERlbGV0ZWQuCisg
ICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybVRpbWVSYW5nZXM6OlJhbmdlOjpSYW5nZSk6IERlbGV0
ZWQuCisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybVRpbWVSYW5nZXM6OlJhbmdlOjppc1BvaW50
SW5SYW5nZSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybVRpbWVS
YW5nZXM6OlJhbmdlOjppc092ZXJsYXBwaW5nUmFuZ2UgY29uc3QpOiBEZWxldGVkLgorICAgICAg
ICAoV2ViQ29yZTo6UGxhdGZvcm1UaW1lUmFuZ2VzOjpSYW5nZTo6aXNDb250aWd1b3VzV2l0aFJh
bmdlIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtVGltZVJhbmdl
czo6UmFuZ2U6OnVuaW9uV2l0aE92ZXJsYXBwaW5nT3JDb250aWd1b3VzUmFuZ2UgY29uc3QpOiBE
ZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1UaW1lUmFuZ2VzOjpSYW5nZTo6aXNC
ZWZvcmVSYW5nZSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
YXZmb3VuZGF0aW9uL2NmL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbkNGLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbkNGOjpyZWdpc3Rl
ck1lZGlhRW5naW5lKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24v
b2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLmg6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3Vu
ZGF0aW9uT2JqQy5tbToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUFWRm91
bmRhdGlvbk9iakM6OnJlZ2lzdGVyTWVkaWFFbmdpbmUpOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZG
T2JqQy5tbToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNl
QVZGT2JqQzo6cmVnaXN0ZXJNZWRpYUVuZ2luZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpD
Lm1tOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZP
YmpDOjpyZWdpc3Rlck1lZGlhRW5naW5lKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9n
c3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6cmVnaXN0ZXJNZWRpYUVuZ2luZSk6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL21zZS9NZWRpYVBsYXllclByaXZh
dGVHU3RyZWFtZXJNU0UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRl
R1N0cmVhbWVyTVNFOjpyZWdpc3Rlck1lZGlhRW5naW5lKToKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9ob2xlcHVuY2gvTWVkaWFQbGF5ZXJQcml2YXRlSG9sZVB1bmNoLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUhvbGVQdW5jaDo6cmVnaXN0ZXJNZWRpYUVu
Z2luZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL01lZGlhUGxheWVyUHJpdmF0
ZU1lZGlhRm91bmRhdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZh
dGVNZWRpYUZvdW5kYXRpb246OnJlZ2lzdGVyTWVkaWFFbmdpbmUpOgorICAgICAgICAqIHBsYXRm
b3JtL21vY2svbWVkaWFzb3VyY2UvTW9ja01lZGlhUGxheWVyTWVkaWFTb3VyY2UuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6TW9ja01lZGlhUGxheWVyTWVkaWFTb3VyY2U6OnJlZ2lzdGVyTWVkaWFF
bmdpbmUpOgorCiAyMDE5LTEyLTEwICBQZXIgQXJuZSBWb2xsYW4gIDxwdm9sbGFuQGFwcGxlLmNv
bT4KIAogICAgICAgICBNYWtlIGl0IHBvc3NpYmxlIHRvIGFkZCByZWdyZXNzaW9uIHRlc3RzIGZv
ciBibG9ja2VkIFhQQyBzZXJ2aWNlcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VM
b2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCA3NDM2MWVjYTNiN2Y2OTRlZTIzZDlk
MzY3ODIyYzZkZTViMTg1YjVlLi4xZTM0NzA4MGMwNmE5OGQzNmVhOWI5MzFlZjk4OGQ2NzIxYmUz
NDYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2Vi
S2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDE4NyBAQAorMjAxOS0xMi0xMCAgRXJpYyBDYXJsc29u
ICA8ZXJpYy5jYXJsc29uQGFwcGxlLmNvbT4KKworICAgICAgICBBZGQgaW5mcmFzdHJ1Y3R1cmUg
bmVlZGVkIGZvciBwbGF5aW5nIG1lZGlhIHBsYXllciBpbiB0aGUgR1BVIHByb2Nlc3MKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwNTA5NAorICAgICAg
ICA8cmRhcjovL3Byb2JsZW0vNTc4MTUzOTM+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgKiBEZXJpdmVkU291cmNlcy1pbnB1dC54Y2ZpbGVsaXN0Ogor
ICAgICAgICAqIERlcml2ZWRTb3VyY2VzLW91dHB1dC54Y2ZpbGVsaXN0OgorICAgICAgICAqIERl
cml2ZWRTb3VyY2VzLm1ha2U6CisgICAgICAgICogR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9X
ZWJQcm9jZXNzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6R1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vz
czo6R1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcyk6CisgICAgICAgIChXZWJLaXQ6OkdQVUNvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3M6On5HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzKToKKyAgICAgICAg
KFdlYktpdDo6R1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6ZGlkUmVjZWl2ZU1lc3NhZ2UpOgor
ICAgICAgICAoV2ViS2l0OjpHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpkaWRSZWNlaXZlU3lu
Y01lc3NhZ2UpOgorICAgICAgICAqIEdQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vz
cy5oOgorICAgICAgICAqIEdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2Vy
UHJveHkuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6bnVsbExvZ2dlcik6CisgICAgICAg
IChXZWJLaXQ6OlJlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5OjpQbGF5ZXJQcm94eTo6UGxh
eWVyUHJveHkpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94
eTo6UGxheWVyUHJveHk6On5QbGF5ZXJQcm94eSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZU1l
ZGlhUGxheWVyTWFuYWdlclByb3h5OjpSZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eSk6Cisg
ICAgICAgIChXZWJLaXQ6OlJlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5Ojp+UmVtb3RlTWVk
aWFQbGF5ZXJNYW5hZ2VyUHJveHkpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVNZWRpYVBsYXll
ck1hbmFnZXJQcm94eTo6Y3JlYXRlTWVkaWFQbGF5ZXIpOgorICAgICAgICAoV2ViS2l0OjpSZW1v
dGVNZWRpYVBsYXllck1hbmFnZXJQcm94eTo6Z2V0U3VwcG9ydGVkVHlwZXMpOgorICAgICAgICAo
V2ViS2l0OjpSZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eTo6c3VwcG9ydHNUeXBlKToKKyAg
ICAgICAgKFdlYktpdDo6UmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHk6Om9yaWdpbnNJbk1l
ZGlhQ2FjaGUpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94
eTo6Y2xlYXJNZWRpYUNhY2hlKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTWVkaWFQbGF5ZXJN
YW5hZ2VyUHJveHk6OmNsZWFyTWVkaWFDYWNoZUZvck9yaWdpbnMpOgorICAgICAgICAoV2ViS2l0
OjpSZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eTo6c3VwcG9ydHNLZXlTeXN0ZW0pOgorICAg
ICAgICAqIEdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHkuaDog
QWRkZWQuCisgICAgICAgIChXZWJLaXQ6OlJlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5Ojp3
ZWJQcm9jZXNzQ29ubmVjdGlvbiBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZU1lZGlh
UGxheWVyTWFuYWdlclByb3h5OjpkaWRSZWNlaXZlTWVzc2FnZUZyb21XZWJQcm9jZXNzKToKKyAg
ICAgICAgKFdlYktpdDo6UmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHk6OmRpZFJlY2VpdmVT
eW5jTWVzc2FnZUZyb21XZWJQcm9jZXNzKToKKyAgICAgICAgKiBHUFVQcm9jZXNzL21lZGlhL1Jl
bW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5Lm1lc3NhZ2VzLmluOiBBZGRlZC4KKyAgICAgICAg
KiBTY3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5weToKKyAgICAgICAgKiBTb3VyY2VzLnR4dDoKKyAg
ICAgICAgKiBTb3VyY2VzQ29jb2EudHh0OgorICAgICAgICAqIFdlYktpdC54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL21lZGlhL01lZGlhUGxheWVy
UHJpdmF0ZVJlbW90ZS5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpNZWRpYVBsYXllclBy
aXZhdGVSZW1vdGU6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZSk6CisgICAgICAgIChXZWJLaXQ6
Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6fk1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZSk6Cisg
ICAgICAgIChXZWJLaXQ6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6TWVkaWFQbGF5ZXJQcml2
YXRlUmVtb3RlOjpsb2FkKToKKyAgICAgICAgKFdlYktpdDo6TWVkaWFQbGF5ZXJQcml2YXRlUmVt
b3RlOjpsb2FkKToKKyAgICAgICAgKFdlYktpdDo6TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpj
YW5jZWxMb2FkKToKKyAgICAgICAgKFdlYktpdDo6TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpw
cmVwYXJlVG9QbGF5KToKKyAgICAgICAgKFdlYktpdDo6TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3Rl
OjpwbGF0Zm9ybUxheWVyIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6TWVkaWFQbGF5ZXJQcml2
YXRlUmVtb3RlOjpzZXRWaWRlb0Z1bGxzY3JlZW5MYXllcik6CisgICAgICAgIChXZWJLaXQ6Ok1l
ZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6dXBkYXRlVmlkZW9GdWxsc2NyZWVuSW5saW5lSW1hZ2Up
OgorICAgICAgICAoV2ViS2l0OjpNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OnNldFZpZGVvRnVs
bHNjcmVlbkZyYW1lKToKKyAgICAgICAgKFdlYktpdDo6TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3Rl
OjpzZXRWaWRlb0Z1bGxzY3JlZW5HcmF2aXR5KToKKyAgICAgICAgKFdlYktpdDo6TWVkaWFQbGF5
ZXJQcml2YXRlUmVtb3RlOjpzZXRWaWRlb0Z1bGxzY3JlZW5Nb2RlKToKKyAgICAgICAgKFdlYktp
dDo6TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjp2aWRlb0Z1bGxzY3JlZW5TdGFuZGJ5Q2hhbmdl
ZCk6CisgICAgICAgIChXZWJLaXQ6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6YWNjZXNzTG9n
IGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjplcnJv
ckxvZyBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6
cGxhdGZvcm1FcnJvckNvZGUgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpNZWRpYVBsYXllclBy
aXZhdGVSZW1vdGU6OnBsYXkpOgorICAgICAgICAoV2ViS2l0OjpNZWRpYVBsYXllclByaXZhdGVS
ZW1vdGU6OnBhdXNlKToKKyAgICAgICAgKFdlYktpdDo6TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3Rl
OjpzZXRCdWZmZXJpbmdQb2xpY3kpOgorICAgICAgICAoV2ViS2l0OjpNZWRpYVBsYXllclByaXZh
dGVSZW1vdGU6OnN1cHBvcnRzUGljdHVyZUluUGljdHVyZSBjb25zdCk6CisgICAgICAgIChXZWJL
aXQ6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6c3VwcG9ydHNGdWxsc2NyZWVuIGNvbnN0KToK
KyAgICAgICAgKFdlYktpdDo6TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpzdXBwb3J0c1NjYW5u
aW5nIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpy
ZXF1aXJlc0ltbWVkaWF0ZUNvbXBvc2l0aW5nIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6TWVk
aWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpjYW5TYXZlTWVkaWFEYXRhIGNvbnN0KToKKyAgICAgICAg
KFdlYktpdDo6TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpuYXR1cmFsU2l6ZSBjb25zdCk6Cisg
ICAgICAgIChXZWJLaXQ6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6aGFzVmlkZW8gY29uc3Qp
OgorICAgICAgICAoV2ViS2l0OjpNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6Omhhc0F1ZGlvIGNv
bnN0KToKKyAgICAgICAgKFdlYktpdDo6TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpzZXRWaXNp
YmxlKToKKyAgICAgICAgKFdlYktpdDo6TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpNZWRpYVBs
YXllclByaXZhdGVSZW1vdGU6OmR1cmF0aW9uTWVkaWFUaW1lIGNvbnN0KToKKyAgICAgICAgKFdl
YktpdDo6TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpjdXJyZW50TWVkaWFUaW1lIGNvbnN0KToK
KyAgICAgICAgKFdlYktpdDo6TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpnZXRTdGFydERhdGUg
Y29uc3QpOgorICAgICAgICAoV2ViS2l0OjpNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OnNlZWsp
OgorICAgICAgICAoV2ViS2l0OjpNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OnNlZWtXaXRoVG9s
ZXJhbmNlKToKKyAgICAgICAgKFdlYktpdDo6TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpzZWVr
aW5nIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpz
dGFydFRpbWUgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpNZWRpYVBsYXllclByaXZhdGVSZW1v
dGU6OnNldFJhdGVEb3VibGUpOgorICAgICAgICAoV2ViS2l0OjpNZWRpYVBsYXllclByaXZhdGVS
ZW1vdGU6OnJhdGUgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpNZWRpYVBsYXllclByaXZhdGVS
ZW1vdGU6OnNldFByZXNlcnZlc1BpdGNoKToKKyAgICAgICAgKFdlYktpdDo6TWVkaWFQbGF5ZXJQ
cml2YXRlUmVtb3RlOjpwYXVzZWQgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpNZWRpYVBsYXll
clByaXZhdGVSZW1vdGU6OnNldFZvbHVtZURvdWJsZSk6CisgICAgICAgIChXZWJLaXQ6Ok1lZGlh
UGxheWVyUHJpdmF0ZVJlbW90ZTo6c2V0TXV0ZWQpOgorICAgICAgICAoV2ViS2l0OjpNZWRpYVBs
YXllclByaXZhdGVSZW1vdGU6Omhhc0Nsb3NlZENhcHRpb25zIGNvbnN0KToKKyAgICAgICAgKFdl
YktpdDo6TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpzZXRDbG9zZWRDYXB0aW9uc1Zpc2libGUp
OgorICAgICAgICAoV2ViS2l0OjpNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6Om1heEZhc3RGb3J3
YXJkUmF0ZSBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90
ZTo6bWluRmFzdFJldmVyc2VSYXRlIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6TWVkaWFQbGF5
ZXJQcml2YXRlUmVtb3RlOjpuZXR3b3JrU3RhdGUgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpN
ZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OnJlYWR5U3RhdGUgY29uc3QpOgorICAgICAgICAoV2Vi
S2l0OjpNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OnNlZWthYmxlIGNvbnN0KToKKyAgICAgICAg
KFdlYktpdDo6TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpidWZmZXJlZCBjb25zdCk6CisgICAg
ICAgIChXZWJLaXQ6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6bWF4TWVkaWFUaW1lU2Vla2Fi
bGUgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6Om1p
bk1lZGlhVGltZVNlZWthYmxlIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6TWVkaWFQbGF5ZXJQ
cml2YXRlUmVtb3RlOjpzZWVrYWJsZVRpbWVSYW5nZXNMYXN0TW9kaWZpZWRUaW1lIGNvbnN0KToK
KyAgICAgICAgKFdlYktpdDo6TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpsaXZlVXBkYXRlSW50
ZXJ2YWwgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6
OnRvdGFsQnl0ZXMgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpNZWRpYVBsYXllclByaXZhdGVS
ZW1vdGU6OmRpZExvYWRpbmdQcm9ncmVzcyBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6Ok1lZGlh
UGxheWVyUHJpdmF0ZVJlbW90ZTo6c2V0U2l6ZSk6CisgICAgICAgIChXZWJLaXQ6Ok1lZGlhUGxh
eWVyUHJpdmF0ZVJlbW90ZTo6cGFpbnQpOgorICAgICAgICAoV2ViS2l0OjpNZWRpYVBsYXllclBy
aXZhdGVSZW1vdGU6OnBhaW50Q3VycmVudEZyYW1lSW5Db250ZXh0KToKKyAgICAgICAgKFdlYktp
dDo6TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpjb3B5VmlkZW9UZXh0dXJlVG9QbGF0Zm9ybVRl
eHR1cmUpOgorICAgICAgICAoV2ViS2l0OjpNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6Om5hdGl2
ZUltYWdlRm9yQ3VycmVudFRpbWUpOgorICAgICAgICAoV2ViS2l0OjpNZWRpYVBsYXllclByaXZh
dGVSZW1vdGU6OnNldFByZWxvYWQpOgorICAgICAgICAoV2ViS2l0OjpNZWRpYVBsYXllclByaXZh
dGVSZW1vdGU6Omhhc0F2YWlsYWJsZVZpZGVvRnJhbWUgY29uc3QpOgorICAgICAgICAoV2ViS2l0
OjpNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OmNhbkxvYWRQb3N0ZXIgY29uc3QpOgorICAgICAg
ICAoV2ViS2l0OjpNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OnNldFBvc3Rlcik6CisgICAgICAg
IChXZWJLaXQ6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6ZW50ZXJGdWxsc2NyZWVuKToKKyAg
ICAgICAgKFdlYktpdDo6TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpleGl0RnVsbHNjcmVlbik6
CisgICAgICAgIChXZWJLaXQ6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6d2lyZWxlc3NQbGF5
YmFja1RhcmdldE5hbWUgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpNZWRpYVBsYXllclByaXZh
dGVSZW1vdGU6OndpcmVsZXNzUGxheWJhY2tUYXJnZXRUeXBlIGNvbnN0KToKKyAgICAgICAgKFdl
YktpdDo6TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjp3aXJlbGVzc1ZpZGVvUGxheWJhY2tEaXNh
YmxlZCBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6
c2V0V2lyZWxlc3NWaWRlb1BsYXliYWNrRGlzYWJsZWQpOgorICAgICAgICAoV2ViS2l0OjpNZWRp
YVBsYXllclByaXZhdGVSZW1vdGU6OmNhblBsYXlUb1dpcmVsZXNzUGxheWJhY2tUYXJnZXQgY29u
c3QpOgorICAgICAgICAoV2ViS2l0OjpNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OmlzQ3VycmVu
dFBsYXliYWNrVGFyZ2V0V2lyZWxlc3MgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpNZWRpYVBs
YXllclByaXZhdGVSZW1vdGU6OnNldFdpcmVsZXNzUGxheWJhY2tUYXJnZXQpOgorICAgICAgICAo
V2ViS2l0OjpNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OnNldFNob3VsZFBsYXlUb1BsYXliYWNr
VGFyZ2V0KToKKyAgICAgICAgKFdlYktpdDo6TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpjYW5F
bnRlckZ1bGxzY3JlZW4gY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpNZWRpYVBsYXllclByaXZh
dGVSZW1vdGU6OnN1cHBvcnRzQWNjZWxlcmF0ZWRSZW5kZXJpbmcgY29uc3QpOgorICAgICAgICAo
V2ViS2l0OjpNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OmFjY2VsZXJhdGVkUmVuZGVyaW5nU3Rh
dGVDaGFuZ2VkKToKKyAgICAgICAgKFdlYktpdDo6TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpz
aG91bGRNYWludGFpbkFzcGVjdFJhdGlvIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6TWVkaWFQ
bGF5ZXJQcml2YXRlUmVtb3RlOjpzZXRTaG91bGRNYWludGFpbkFzcGVjdFJhdGlvKToKKyAgICAg
ICAgKFdlYktpdDo6TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpoYXNTaW5nbGVTZWN1cml0eU9y
aWdpbiBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6
ZGlkUGFzc0NPUlNBY2Nlc3NDaGVjayBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6Ok1lZGlhUGxh
eWVyUHJpdmF0ZVJlbW90ZTo6d291bGRUYWludE9yaWdpbiBjb25zdCk6CisgICAgICAgIChXZWJL
aXQ6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6bW92aWVMb2FkVHlwZSBjb25zdCk6CisgICAg
ICAgIChXZWJLaXQ6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6cHJlcGFyZUZvclJlbmRlcmlu
Zyk6CisgICAgICAgIChXZWJLaXQ6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6bWVkaWFUaW1l
Rm9yVGltZVZhbHVlIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6TWVkaWFQbGF5ZXJQcml2YXRl
UmVtb3RlOjptYXhpbXVtRHVyYXRpb25Ub0NhY2hlTWVkaWFUaW1lIGNvbnN0KToKKyAgICAgICAg
KFdlYktpdDo6TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpkZWNvZGVkRnJhbWVDb3VudCBjb25z
dCk6CisgICAgICAgIChXZWJLaXQ6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6ZHJvcHBlZEZy
YW1lQ291bnQgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpNZWRpYVBsYXllclByaXZhdGVSZW1v
dGU6OmF1ZGlvRGVjb2RlZEJ5dGVDb3VudCBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6Ok1lZGlh
UGxheWVyUHJpdmF0ZVJlbW90ZTo6dmlkZW9EZWNvZGVkQnl0ZUNvdW50IGNvbnN0KToKKyAgICAg
ICAgKFdlYktpdDo6TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpzZXRQcml2YXRlQnJvd3NpbmdN
b2RlKToKKyAgICAgICAgKFdlYktpdDo6TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjplbmdpbmVE
ZXNjcmlwdGlvbiBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6Ok1lZGlhUGxheWVyUHJpdmF0ZVJl
bW90ZTo6YXVkaW9Tb3VyY2VQcm92aWRlcik6CisgICAgICAgIChXZWJLaXQ6Ok1lZGlhUGxheWVy
UHJpdmF0ZVJlbW90ZTo6Y3JlYXRlU2Vzc2lvbik6CisgICAgICAgIChXZWJLaXQ6Ok1lZGlhUGxh
eWVyUHJpdmF0ZVJlbW90ZTo6c2V0Q0RNU2Vzc2lvbik6CisgICAgICAgIChXZWJLaXQ6Ok1lZGlh
UGxheWVyUHJpdmF0ZVJlbW90ZTo6a2V5QWRkZWQpOgorICAgICAgICAoV2ViS2l0OjpNZWRpYVBs
YXllclByaXZhdGVSZW1vdGU6OmNkbUluc3RhbmNlQXR0YWNoZWQpOgorICAgICAgICAoV2ViS2l0
OjpNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OmNkbUluc3RhbmNlRGV0YWNoZWQpOgorICAgICAg
ICAoV2ViS2l0OjpNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OmF0dGVtcHRUb0RlY3J5cHRXaXRo
SW5zdGFuY2UpOgorICAgICAgICAoV2ViS2l0OjpNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6Ondh
aXRpbmdGb3JLZXkgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpNZWRpYVBsYXllclByaXZhdGVS
ZW1vdGU6OnJlcXVpcmVzVGV4dFRyYWNrUmVwcmVzZW50YXRpb24gY29uc3QpOgorICAgICAgICAo
V2ViS2l0OjpNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OnNldFRleHRUcmFja1JlcHJlc2VudGF0
aW9uKToKKyAgICAgICAgKFdlYktpdDo6TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpzeW5jVGV4
dFRyYWNrQm91bmRzKToKKyAgICAgICAgKFdlYktpdDo6TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3Rl
Ojp0cmFja3NDaGFuZ2VkKToKKyAgICAgICAgKFdlYktpdDo6TWVkaWFQbGF5ZXJQcml2YXRlUmVt
b3RlOjpzaW11bGF0ZUF1ZGlvSW50ZXJydXB0aW9uKToKKyAgICAgICAgKFdlYktpdDo6TWVkaWFQ
bGF5ZXJQcml2YXRlUmVtb3RlOjpiZWdpblNpbXVsYXRlZEhEQ1BFcnJvcik6CisgICAgICAgIChX
ZWJLaXQ6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6ZW5kU2ltdWxhdGVkSERDUEVycm9yKToK
KyAgICAgICAgKFdlYktpdDo6TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpsYW5ndWFnZU9mUHJp
bWFyeUF1ZGlvVHJhY2sgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpNZWRpYVBsYXllclByaXZh
dGVSZW1vdGU6OmV4dHJhTWVtb3J5Q29zdCBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6Ok1lZGlh
UGxheWVyUHJpdmF0ZVJlbW90ZTo6ZmlsZVNpemUgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpN
ZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OmVuZGVkIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6
TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjp2aWRlb1BsYXliYWNrUXVhbGl0eU1ldHJpY3MpOgor
ICAgICAgICAoV2ViS2l0OjpNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6Om5vdGlmeVRyYWNrTW9k
ZUNoYW5nZWQpOgorICAgICAgICAoV2ViS2l0OjpNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6Om5v
dGlmeUFjdGl2ZVNvdXJjZUJ1ZmZlcnNDaGFuZ2VkKToKKyAgICAgICAgKFdlYktpdDo6TWVkaWFQ
bGF5ZXJQcml2YXRlUmVtb3RlOjpzZXRTaG91bGREaXNhYmxlU2xlZXApOgorICAgICAgICAoV2Vi
S2l0OjpNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OmFwcGxpY2F0aW9uV2lsbFJlc2lnbkFjdGl2
ZSk6CisgICAgICAgIChXZWJLaXQ6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6YXBwbGljYXRp
b25EaWRCZWNvbWVBY3RpdmUpOgorICAgICAgICAoV2ViS2l0OjpNZWRpYVBsYXllclByaXZhdGVS
ZW1vdGU6OnBlcmZvcm1UYXNrQXRNZWRpYVRpbWUpOgorICAgICAgICAoV2ViS2l0OjpNZWRpYVBs
YXllclByaXZhdGVSZW1vdGU6OnNob3VsZElnbm9yZUludHJpbnNpY1NpemUpOgorICAgICAgICAo
V2ViS2l0OjpNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OmxvZ0NoYW5uZWwgY29uc3QpOgorICAg
ICAgICAqIFdlYlByb2Nlc3MvR1BVL21lZGlhL01lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZS5oOiBB
ZGRlZC4KKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9tZWRpYS9NZWRpYVBsYXllclByaXZhdGVS
ZW1vdGVJZGVudGlmaWVyLmg6IEFkZGVkLgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL21lZGlh
L1JlbW90ZU1lZGlhUGxheWVyTWFuYWdlci5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpN
ZWRpYVBsYXllclJlbW90ZUZhY3Rvcnk6Ok1lZGlhUGxheWVyUmVtb3RlRmFjdG9yeSk6CisgICAg
ICAgIChXZWJLaXQ6OlJlbW90ZU1lZGlhUGxheWVyTWFuYWdlcjo6UmVtb3RlTWVkaWFQbGF5ZXJN
YW5hZ2VyKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyOjp+UmVt
b3RlTWVkaWFQbGF5ZXJNYW5hZ2VyKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTWVkaWFQbGF5
ZXJNYW5hZ2VyOjpzdXBwbGVtZW50TmFtZSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZU1lZGlh
UGxheWVyTWFuYWdlcjo6aW5pdGlhbGl6ZSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZU1lZGlh
UGxheWVyTWFuYWdlcjo6Y3JlYXRlUmVtb3RlTWVkaWFQbGF5ZXIpOgorICAgICAgICAoV2ViS2l0
OjpSZW1vdGVNZWRpYVBsYXllck1hbmFnZXI6OmdldFN1cHBvcnRlZFR5cGVzKToKKyAgICAgICAg
KFdlYktpdDo6UmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyOjpzdXBwb3J0c1R5cGVBbmRDb2RlY3Mp
OgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVNZWRpYVBsYXllck1hbmFnZXI6OnN1cHBvcnRzS2V5
U3lzdGVtKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyOjpvcmln
aW5zSW5NZWRpYUNhY2hlKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTWVkaWFQbGF5ZXJNYW5h
Z2VyOjpjbGVhck1lZGlhQ2FjaGUpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVNZWRpYVBsYXll
ck1hbmFnZXI6OmNsZWFyTWVkaWFDYWNoZUZvck9yaWdpbnMpOgorICAgICAgICAoV2ViS2l0OjpS
ZW1vdGVNZWRpYVBsYXllck1hbmFnZXI6Om5ldHdvcmtTdGF0ZUNoYW5nZWQpOgorICAgICAgICAo
V2ViS2l0OjpSZW1vdGVNZWRpYVBsYXllck1hbmFnZXI6OnVwZGF0ZVByZWZlcmVuY2VzKToKKyAg
ICAgICAgKFdlYktpdDo6UmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyOjpncHVQcm9jZXNzQ29ubmVj
dGlvbiBjb25zdCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlTWVkaWFQ
bGF5ZXJNYW5hZ2VyLmg6IEFkZGVkLgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL21lZGlhL1Jl
bW90ZU1lZGlhUGxheWVyTWFuYWdlci5tZXNzYWdlcy5pbjogQWRkZWQuCisgICAgICAgICogV2Vi
UHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjp1
cGRhdGVQcmVmZXJlbmNlcyk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcDoK
KwogMjAxOS0xMi0xMCAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgogCiAgICAgICAg
IFVucmV2aWV3ZWQsIGRyb3AgZGVidWcgYXNzZXJ0aW9uIGluIEluc3BlY3RvclRhcmdldFByb3h5
OjpkaWRDb21taXRQcm92aXNpb25hbFRhcmdldCgpIHRoYXQgaXMgaGl0dGluZyBhZnRlciByMjUz
MzM3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oKaW5kZXggMDNlNmY1NDMzYmY2ZjY3ZWJjNWY0OWZlZDBhOTUwMTJkNGJlNGJmOS4uMGNhZmRj
MWVhMDBiZTdmZGUwZWQyMzA3NjYxYTIxMDhhZTBjZDM0ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJD
b3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTA0LDYgKzEwNCw3IEBA
CiAJCTA3MUU0OTZFMUFENUFBMEQwMDhBNTBCNCAvKiBNZWRpYVBsYXliYWNrVGFyZ2V0TWFjLm1t
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDcxRTQ5NkQx
QUQ1QUEwRDAwOEE1MEI0IC8qIE1lZGlhUGxheWJhY2tUYXJnZXRNYWMubW0gKi87IH07CiAJCTA3
MUU0OTcwMUFENUFCNUUwMDhBNTBCNCAvKiBNZWRpYVBsYXliYWNrVGFyZ2V0TWFjLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwNzFFNDk2RjFBRDVBQjVF
MDA4QTUwQjQgLyogTWVkaWFQbGF5YmFja1RhcmdldE1hYy5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTA3MjBCMEExMTREMzMyMzUwMDY0Mjk1NSAv
KiBHZW5lcmljRXZlbnRRdWV1ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gMDcyMEIwOUYxNEQzMzIzNTAwNjQyOTU1IC8qIEdlbmVyaWNFdmVudFF1ZXVl
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJMDcy
NUVGQTkyMzlBRDc5MzAwQTUzOEE5IC8qIE1lZGlhUGxheWVyUHJpdmF0ZS5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDc5RjVFNEIwRjNCRUJFQTAwNUUw
NzgyIC8qIE1lZGlhUGxheWVyUHJpdmF0ZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CiAJCTA3Mjc3RTREMTdEMDE4Q0MwMDE1NTM0RCAvKiBKU01lZGlh
U3RyZWFtLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAw
NzI3N0U0MTE3RDAxOENDMDAxNTUzNEQgLyogSlNNZWRpYVN0cmVhbS5oICovOyB9OwogCQkwNzI3
N0U0RDE3RDAxOENDMDAxNTUzNEUgLyogSlNDYW52YXNDYXB0dXJlTWVkaWFTdHJlYW1UcmFjay5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDcyNzdFNDEx
N0QwMThDQzAwMTU1MzRFIC8qIEpTQ2FudmFzQ2FwdHVyZU1lZGlhU3RyZWFtVHJhY2suaCAqLzsg
fTsKIAkJMDcyNzdFNEYxN0QwMThDQzAwMTU1MzREIC8qIEpTTWVkaWFTdHJlYW1BdWRpb0Rlc3Rp
bmF0aW9uTm9kZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gMDcyNzdFNDMxN0QwMThDQzAwMTU1MzREIC8qIEpTTWVkaWFTdHJlYW1BdWRpb0Rlc3RpbmF0
aW9uTm9kZS5oICovOyB9OwpAQCAtMjA0LDYgKzIwNSw3IEBACiAJCTA3QjVBMkRDMTQ2NDMyMEEw
MEE4MUVDRSAvKiBKU1RleHRUcmFja0xpc3QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDA3QjVBMkRBMTQ2NDMyMEEwMEE4MUVDRSAvKiBKU1RleHRUcmFj
a0xpc3QuaCAqLzsgfTsKIAkJMDdCNzExNkQxRDg5OUU2MzAwOUYwRkZCIC8qIENhcHR1cmVEZXZp
Y2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3Qjcx
MTZBMUQ4OTlFNjMwMDlGMEZGQiAvKiBDYXB0dXJlRGV2aWNlLmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMDdCNzExNkYxRDg5OUU2MzAwOUYwRkZC
IC8qIENhcHR1cmVEZXZpY2VNYW5hZ2VyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSAwN0I3MTE2QzFEODk5RTYzMDA5RjBGRkIgLyogQ2FwdHVyZURldmlj
ZU1hbmFnZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OworCQkwN0JBRjM0NDIzOUVENTY5MDA0NDI1N0UgLyogTWVkaWFQbGF5ZXJFbmdpbmVJZGVudGlm
aWVycy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDdC
QUYzNDMyMzlFRDFDQzAwNDQyNTdFIC8qIE1lZGlhUGxheWVyRW5naW5lSWRlbnRpZmllcnMuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkwN0MwNDZD
NDFFNDI1MDhCMDA3MjAxRTcgLyogQ0FBdWRpb1N0cmVhbURlc2NyaXB0aW9uLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwNzNCODc1ODFFNDBEQ0ZEMDA3
MUMwRUMgLyogQ0FBdWRpb1N0cmVhbURlc2NyaXB0aW9uLmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMDdDMDQ2Q0IxRTQyNjQxMzAwNzIwMUU3IC8q
IEF1ZGlvU3RyZWFtRGVzY3JpcHRpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDA3M0I4NzU2MUU0MERDRTUwMDcxQzBFQyAvKiBBdWRpb1N0cmVhbURl
c2NyaXB0aW9uLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKIAkJMDdDMUMwRTIxQkZCNjAwMTAwQkQyMjU2IC8qIE1lZGlhVHJhY2tTdXBwb3J0ZWRDb25z
dHJhaW50cy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
MDdDMUMwRTAxQkZCNjAwMTAwQkQyMjU2IC8qIE1lZGlhVHJhY2tTdXBwb3J0ZWRDb25zdHJhaW50
cy5oICovOyB9OwpAQCAtNTUzNSw2ICs1NTM3LDcgQEAKIAkJMDdCNzExNkExRDg5OUU2MzAwOUYw
RkZCIC8qIENhcHR1cmVEZXZpY2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
Q2FwdHVyZURldmljZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwN0I3MTE2QjFE
ODk5RTYzMDA5RjBGRkIgLyogQ2FwdHVyZURldmljZU1hbmFnZXIuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQ2FwdHVyZURldmljZU1hbmFnZXIuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQkwN0I3MTE2QzFEODk5RTYzMDA5RjBGRkIgLyogQ2FwdHVy
ZURldmljZU1hbmFnZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ2FwdHVy
ZURldmljZU1hbmFnZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMDdCQUYzNDMy
MzlFRDFDQzAwNDQyNTdFIC8qIE1lZGlhUGxheWVyRW5naW5lSWRlbnRpZmllcnMuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gTWVkaWFQbGF5ZXJFbmdpbmVJZGVudGlmaWVycy5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQkwN0MwNDZDNjFFNDI1MTJGMDA3MjAxRTcgLyogQXVkaW9UcmFja1ByaXZh
dGVNZWRpYVN0cmVhbUNvY29hLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEF1
ZGlvVHJhY2tQcml2YXRlTWVkaWFTdHJlYW1Db2NvYS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQkwN0MxQzBFMDFCRkI2MDAxMDBCRDIyNTYgLyogTWVkaWFUcmFja1N1cHBvcnRlZENv
bnN0cmFpbnRzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1lZGlhVHJhY2tT
dXBwb3J0ZWRDb25zdHJhaW50cy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwN0Mx
QzBFMTFCRkI2MDAxMDBCRDIyNTYgLyogTWVkaWFUcmFja1N1cHBvcnRlZENvbnN0cmFpbnRzLmlk
bCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBNZWRpYVRyYWNrU3VwcG9ydGVkQ29uc3RyYWludHMu
aWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMjUwNjIsNiArMjUwNjUsNyBAQAog
CQkJCTA3OEU0M0Q4MUFCQjZDN0UwMDFDMkZBNiAvKiBNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2Vy
LmggKi8sCiAJCQkJRTRCNDFFMEMwQ0JGOTBCRDAwQUYyRUNFIC8qIE1lZGlhUGxheWVyLmNwcCAq
LywKIAkJCQlFNEI0MUUwRDBDQkY5MEJEMDBBRjJFQ0UgLyogTWVkaWFQbGF5ZXIuaCAqLywKKwkJ
CQkwN0JBRjM0MzIzOUVEMUNDMDA0NDI1N0UgLyogTWVkaWFQbGF5ZXJFbmdpbmVJZGVudGlmaWVy
cy5oICovLAogCQkJCUNENTIwOUUzMUIwQkQ4MzgwMDc3MTg0RSAvKiBNZWRpYVBsYXllckVudW1z
LmggKi8sCiAJCQkJMDc5RjVFNEIwRjNCRUJFQTAwNUUwNzgyIC8qIE1lZGlhUGxheWVyUHJpdmF0
ZS5oICovLAogCQkJCUNENjQxRUIxMTgxOEY1RUQwMEVFNEM0MSAvKiBNZWRpYVNvdXJjZVByaXZh
dGUuaCAqLywKQEAgLTMxMzc4LDcgKzMxMzgyLDkgQEAKIAkJCQkwNzhFNDNERDFBQkI2RjZGMDAx
QzJGQTYgLyogTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlck1hYy5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJMDc3QjY0MTMxQjk0RjEyRTAwM0U5QUQ1IC8qIE1lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJN
b2NrLmggaW4gSGVhZGVycyAqLywKIAkJCQlFNDQ2MTNFNDBDRDY4MUEyMDBGQURBNzUgLyogTWVk
aWFQbGF5ZXIuaCBpbiBIZWFkZXJzICovLAorCQkJCTA3QkFGMzQ0MjM5RUQ1NjkwMDQ0MjU3RSAv
KiBNZWRpYVBsYXllckVuZ2luZUlkZW50aWZpZXJzLmggaW4gSGVhZGVycyAqLywKIAkJCQlDRDUy
MDlFNDFCMEJEODM4MDA3NzE4NEUgLyogTWVkaWFQbGF5ZXJFbnVtcy5oIGluIEhlYWRlcnMgKi8s
CisJCQkJMDcyNUVGQTkyMzlBRDc5MzAwQTUzOEE5IC8qIE1lZGlhUGxheWVyUHJpdmF0ZS5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJMDc2RjBEMEUxMkI4MTkyNzAwQzI2QUE0IC8qIE1lZGlhUGxheWVy
UHJpdmF0ZUFWRm91bmRhdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJREY5QUZENzIxM0ZDMzFE
ODAwMTVGRUI3IC8qIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMuaCBpbiBIZWFk
ZXJzICovLAogCQkJCUNEQzhCNUEzMTgwNDYzNDcwMDE2RTY4NSAvKiBNZWRpYVBsYXllclByaXZh
dGVNZWRpYVNvdXJjZUFWRk9iakMuaCBpbiBIZWFkZXJzICovLApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vQ29udGVudFR5cGUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L0NvbnRlbnRUeXBlLmgKaW5kZXggYzgyYjViNzE5N2M5ZTE1ZDFlMmY1NDdmZDU2NDFmYzVmNGVj
NWVjZi4uOTBkYzk3MDQ2NzA4Mzk0ZGEwNjBlZmQxYWQzNjc2MTc5YjU3OWZhNiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vQ29udGVudFR5cGUuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9Db250ZW50VHlwZS5oCkBAIC0zMyw4ICszMyw4IEBAIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAogY2xhc3MgQ29udGVudFR5cGUgewogcHVibGljOgotICAgIGV4cGxpY2l0IENv
bnRlbnRUeXBlKFN0cmluZyYmIHR5cGUpOwotICAgIGV4cGxpY2l0IENvbnRlbnRUeXBlKGNvbnN0
IFN0cmluZyYgdHlwZSk7CisgICAgV0VCQ09SRV9FWFBPUlQgZXhwbGljaXQgQ29udGVudFR5cGUo
U3RyaW5nJiYgdHlwZSk7CisgICAgV0VCQ09SRV9FWFBPUlQgZXhwbGljaXQgQ29udGVudFR5cGUo
Y29uc3QgU3RyaW5nJiB0eXBlKTsKICAgICBDb250ZW50VHlwZSgpID0gZGVmYXVsdDsKIAogICAg
IHN0YXRpYyBjb25zdCBTdHJpbmcmIGNvZGVjc1BhcmFtZXRlcigpOwpAQCAtNDksNiArNDksMjUg
QEAgcHVibGljOgogCiAgICAgU3RyaW5nIHRvSlNPTlN0cmluZygpIGNvbnN0OwogCisjaWYgRU5B
QkxFKEdQVV9QUk9DRVNTKQorICAgIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+CisgICAgdm9pZCBl
bmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QKKyAgICB7CisgICAgICAgIGVuY29kZXIgPDwg
bV90eXBlOworICAgIH0KKworICAgIHRlbXBsYXRlIDxjbGFzcyBEZWNvZGVyPgorICAgIHN0YXRp
YyBPcHRpb25hbDxDb250ZW50VHlwZT4gZGVjb2RlKERlY29kZXImIGRlY29kZXIpCisgICAgewor
ICAgICAgICBPcHRpb25hbDxTdHJpbmc+IHR5cGU7CisgICAgICAgIGRlY29kZXIgPj4gdHlwZTsK
KyAgICAgICAgaWYgKCF0eXBlKQorICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKwor
ICAgICAgICByZXR1cm4geyBDb250ZW50VHlwZShXVEZNb3ZlKCp0eXBlKSkgfTsKKyAgICB9Cisj
ZW5kaWYKKwogcHJpdmF0ZToKICAgICBTdHJpbmcgbV90eXBlOwogfTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmNwcAppbmRleCA3ZDViY2NkOTBi
MTc5NGM3MTZlZjNlYjFkMTk5NmQ2M2E3NzU1MDgwLi41MmFkM2E0YjQ3MGY1NDU3NzEwYmMwOTdm
OGUyYjJlMjhkM2Y5NjFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9NZWRpYVBsYXllci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvTWVkaWFQbGF5ZXIuY3BwCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykg
MjAwNy0yMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAo
QykgMjAwNy0yMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzQsNiArMzQsNyBAQAogI2luY2x1ZGUgIkludFJlY3Qu
aCIKICNpbmNsdWRlICJMb2dnaW5nLmgiCiAjaW5jbHVkZSAiTUlNRVR5cGVSZWdpc3RyeS5oIgor
I2luY2x1ZGUgIk1lZGlhUGxheWVyRW5naW5lSWRlbnRpZmllcnMuaCIKICNpbmNsdWRlICJNZWRp
YVBsYXllclByaXZhdGUuaCIKICNpbmNsdWRlICJQbGF0Zm9ybVRpbWVSYW5nZXMuaCIKICNpbmNs
dWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KQEAgLTkwLDE0ICs5MSw2IEBACiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAotI2lmICFSRUxFQVNFX0xPR19ESVNBQkxFRAotc3RhdGljIFJlZlB0cjxM
b2dnZXI+JiBudWxsTG9nZ2VyKCkKLXsKLSAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8UmVmUHRy
PExvZ2dlcj4+IGxvZ2dlcjsKLSAgICByZXR1cm4gbG9nZ2VyOwotfQotI2VuZGlmCi0KIC8vIGEg
bnVsbCBwbGF5ZXIgdG8gbWFrZSBNZWRpYVBsYXllciBsb2dpYyBzaW1wbGVyCiAKIGNsYXNzIE51
bGxNZWRpYVBsYXllclByaXZhdGUgZmluYWwgOiBwdWJsaWMgTWVkaWFQbGF5ZXJQcml2YXRlSW50
ZXJmYWNlIHsKQEAgLTE2Niw4ICsxNTksMjIgQEAgcHVibGljOgogICAgIGJvb2wgaGFzU2luZ2xl
U2VjdXJpdHlPcmlnaW4oKSBjb25zdCBmaW5hbCB7IHJldHVybiB0cnVlOyB9CiB9OwogCisjaWYg
IVJFTEVBU0VfTE9HX0RJU0FCTEVECitzdGF0aWMgUmVmUHRyPExvZ2dlcj4mIG51bGxMb2dnZXIo
KQoreworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxSZWZQdHI8TG9nZ2VyPj4gbG9nZ2VyOwor
ICAgIHJldHVybiBsb2dnZXI7Cit9CisjZW5kaWYKKworc3RhdGljIGNvbnN0IFZlY3RvcjxXZWJD
b3JlOjpDb250ZW50VHlwZT4mIG51bGxDb250ZW50VHlwZVZlY3RvcigpCit7CisgICAgc3RhdGlj
IE5ldmVyRGVzdHJveWVkPFZlY3RvcjxXZWJDb3JlOjpDb250ZW50VHlwZT4+IHZlY3RvcjsKKyAg
ICByZXR1cm4gdmVjdG9yOworfQorCiBjbGFzcyBOdWxsTWVkaWFQbGF5ZXJDbGllbnQgOiBwdWJs
aWMgTWVkaWFQbGF5ZXJDbGllbnQgewotcHVibGljOgorcHJpdmF0ZToKICNpZiAhUkVMRUFTRV9M
T0dfRElTQUJMRUQKICAgICBjb25zdCBMb2dnZXImIG1lZGlhUGxheWVyTG9nZ2VyKCkgZmluYWwK
ICAgICB7CkBAIC0xNzksOCArMTg2LDExIEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuICpudWxs
TG9nZ2VyKCkuZ2V0KCk7CiAgICAgfQogI2VuZGlmCisKKyAgICBjb25zdCBWZWN0b3I8V2ViQ29y
ZTo6Q29udGVudFR5cGU+JiBtZWRpYUNvbnRlbnRUeXBlc1JlcXVpcmluZ0hhcmR3YXJlU3VwcG9y
dCgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG51bGxDb250ZW50VHlwZVZlY3RvcigpOyB9CiB9Owog
CisKIGNvbnN0IFZlY3RvcjxDb250ZW50VHlwZT4mIE1lZGlhUGxheWVyQ2xpZW50OjptZWRpYUNv
bnRlbnRUeXBlc1JlcXVpcmluZ0hhcmR3YXJlU3VwcG9ydCgpIGNvbnN0CiB7CiAgICAgc3RhdGlj
IE5ldmVyRGVzdHJveWVkPFZlY3RvcjxDb250ZW50VHlwZT4+IGNvbnRlbnRUeXBlczsKQEAgLTE5
NSwxNyArMjA1LDcgQEAgc3RhdGljIE1lZGlhUGxheWVyQ2xpZW50JiBudWxsTWVkaWFQbGF5ZXJD
bGllbnQoKQogCiAvLyBlbmdpbmUgc3VwcG9ydAogCi1zdHJ1Y3QgTWVkaWFQbGF5ZXJGYWN0b3J5
IHsKLSAgICBDcmVhdGVNZWRpYUVuZ2luZVBsYXllciBjb25zdHJ1Y3RvcjsKLSAgICBNZWRpYUVu
Z2luZVN1cHBvcnRlZFR5cGVzIGdldFN1cHBvcnRlZFR5cGVzOwotICAgIE1lZGlhRW5naW5lU3Vw
cG9ydHNUeXBlIHN1cHBvcnRzVHlwZUFuZENvZGVjczsKLSAgICBNZWRpYUVuZ2luZU9yaWdpbnNJ
bk1lZGlhQ2FjaGUgb3JpZ2luc0luTWVkaWFDYWNoZTsKLSAgICBNZWRpYUVuZ2luZUNsZWFyTWVk
aWFDYWNoZSBjbGVhck1lZGlhQ2FjaGU7Ci0gICAgTWVkaWFFbmdpbmVDbGVhck1lZGlhQ2FjaGVG
b3JPcmlnaW5zIGNsZWFyTWVkaWFDYWNoZUZvck9yaWdpbnM7Ci0gICAgTWVkaWFFbmdpbmVTdXBw
b3J0c0tleVN5c3RlbSBzdXBwb3J0c0tleVN5c3RlbTsKLX07Ci0KLXN0YXRpYyB2b2lkIGFkZE1l
ZGlhRW5naW5lKENyZWF0ZU1lZGlhRW5naW5lUGxheWVyJiYsIE1lZGlhRW5naW5lU3VwcG9ydGVk
VHlwZXMsIE1lZGlhRW5naW5lU3VwcG9ydHNUeXBlLCBNZWRpYUVuZ2luZU9yaWdpbnNJbk1lZGlh
Q2FjaGUsIE1lZGlhRW5naW5lQ2xlYXJNZWRpYUNhY2hlLCBNZWRpYUVuZ2luZUNsZWFyTWVkaWFD
YWNoZUZvck9yaWdpbnMsIE1lZGlhRW5naW5lU3VwcG9ydHNLZXlTeXN0ZW0pOworc3RhdGljIHZv
aWQgYWRkTWVkaWFFbmdpbmUoc3RkOjp1bmlxdWVfcHRyPE1lZGlhUGxheWVyRmFjdG9yeT4pOwog
CiBzdGF0aWMgTG9jayBtZWRpYUVuZ2luZVZlY3RvckxvY2s7CiAKQEAgLTIxNSwyMSArMjE1LDM3
IEBAIHN0YXRpYyBib29sJiBoYXZlTWVkaWFFbmdpbmVzVmVjdG9yKCkKICAgICByZXR1cm4gaGF2
ZVZlY3RvcjsKIH0KIAotc3RhdGljIFZlY3RvcjxNZWRpYVBsYXllckZhY3Rvcnk+JiBtdXRhYmxl
SW5zdGFsbGVkTWVkaWFFbmdpbmVzVmVjdG9yKCkKK3N0YXRpYyBWZWN0b3I8c3RkOjp1bmlxdWVf
cHRyPE1lZGlhUGxheWVyRmFjdG9yeT4+JiBtdXRhYmxlSW5zdGFsbGVkTWVkaWFFbmdpbmVzVmVj
dG9yKCkKIHsKLSAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8VmVjdG9yPE1lZGlhUGxheWVyRmFj
dG9yeT4+IGluc3RhbGxlZEVuZ2luZXM7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFZlY3Rv
cjxzdGQ6OnVuaXF1ZV9wdHI8TWVkaWFQbGF5ZXJGYWN0b3J5Pj4+IGluc3RhbGxlZEVuZ2luZXM7
CiAgICAgcmV0dXJuIGluc3RhbGxlZEVuZ2luZXM7CiB9CiAKK3N0YXRpYyBSZW1vdGVNZWRpYVBs
YXllclN1cHBvcnQ6OlJlZ2lzdGVyUmVtb3RlUGxheWVyQ2FsbGJhY2smIHJlZ2lzdGVyUmVtb3Rl
UGxheWVyQ2FsbGJhY2soKQoreworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxSZW1vdGVNZWRp
YVBsYXllclN1cHBvcnQ6OlJlZ2lzdGVyUmVtb3RlUGxheWVyQ2FsbGJhY2s+IGNhbGxiYWNrOwor
ICAgIHJldHVybiBjYWxsYmFjazsKK30KKwordm9pZCBSZW1vdGVNZWRpYVBsYXllclN1cHBvcnQ6
OnNldFJlZ2lzdGVyUmVtb3RlUGxheWVyQ2FsbGJhY2soUmVnaXN0ZXJSZW1vdGVQbGF5ZXJDYWxs
YmFjayYmIGNhbGxiYWNrKQoreworICAgIHJlZ2lzdGVyUmVtb3RlUGxheWVyQ2FsbGJhY2soKSA9
IFdURk1vdmUoY2FsbGJhY2spOworfQorCiBzdGF0aWMgdm9pZCBidWlsZE1lZGlhRW5naW5lc1Zl
Y3RvcigpCiB7CiAgICAgQVNTRVJUKG1lZGlhRW5naW5lVmVjdG9yTG9jay5pc0xvY2tlZCgpKTsK
IAogI2lmIFVTRShBVkZPVU5EQVRJT04pCisgICAgYXV0byYgcmVnaXN0ZXJSZW1vdGVFbmdpbmUg
PSByZWdpc3RlclJlbW90ZVBsYXllckNhbGxiYWNrKCk7CisKICAgICBpZiAoRGVwcmVjYXRlZEds
b2JhbFNldHRpbmdzOjppc0FWRm91bmRhdGlvbkVuYWJsZWQoKSkgewogCiAjaWYgUExBVEZPUk0o
Q09DT0EpCi0gICAgICAgIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OnJlZ2lz
dGVyTWVkaWFFbmdpbmUoYWRkTWVkaWFFbmdpbmUpOworICAgICAgICBpZiAocmVnaXN0ZXJSZW1v
dGVFbmdpbmUpCisgICAgICAgICAgICByZWdpc3RlclJlbW90ZUVuZ2luZShhZGRNZWRpYUVuZ2lu
ZSwgTWVkaWFQbGF5ZXJFbmdpbmVJZGVudGlmaWVyczo6YXZGb3VuZGF0aW9uRW5naW5lSWRlbnRp
ZmllcigpKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgTWVkaWFQbGF5ZXJQcml2YXRlQVZG
b3VuZGF0aW9uT2JqQzo6cmVnaXN0ZXJNZWRpYUVuZ2luZShhZGRNZWRpYUVuZ2luZSk7CiAjZW5k
aWYKIAogI2lmIEVOQUJMRShNRURJQV9TT1VSQ0UpCkBAIC0yNjUsNyArMjgxLDcgQEAgc3RhdGlj
IHZvaWQgYnVpbGRNZWRpYUVuZ2luZXNWZWN0b3IoKQogICAgIGhhdmVNZWRpYUVuZ2luZXNWZWN0
b3IoKSA9IHRydWU7CiB9CiAKLXN0YXRpYyBjb25zdCBWZWN0b3I8TWVkaWFQbGF5ZXJGYWN0b3J5
PiYgaW5zdGFsbGVkTWVkaWFFbmdpbmVzKCkKK3N0YXRpYyBjb25zdCBWZWN0b3I8c3RkOjp1bmlx
dWVfcHRyPE1lZGlhUGxheWVyRmFjdG9yeT4+JiBpbnN0YWxsZWRNZWRpYUVuZ2luZXMoKQogewog
ICAgIHsKICAgICAgICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhtZWRpYUVuZ2luZVZlY3Rvckxv
Y2spOwpAQCAtMjc2LDE0ICsyOTIsOSBAQCBzdGF0aWMgY29uc3QgVmVjdG9yPE1lZGlhUGxheWVy
RmFjdG9yeT4mIGluc3RhbGxlZE1lZGlhRW5naW5lcygpCiAgICAgcmV0dXJuIG11dGFibGVJbnN0
YWxsZWRNZWRpYUVuZ2luZXNWZWN0b3IoKTsKIH0KIAotc3RhdGljIHZvaWQgYWRkTWVkaWFFbmdp
bmUoQ3JlYXRlTWVkaWFFbmdpbmVQbGF5ZXImJiBjb25zdHJ1Y3RvciwgTWVkaWFFbmdpbmVTdXBw
b3J0ZWRUeXBlcyBnZXRTdXBwb3J0ZWRUeXBlcywgTWVkaWFFbmdpbmVTdXBwb3J0c1R5cGUgc3Vw
cG9ydHNUeXBlLAotICAgIE1lZGlhRW5naW5lT3JpZ2luc0luTWVkaWFDYWNoZSBvcmlnaW5zSW5N
ZWRpYUNhY2hlLCBNZWRpYUVuZ2luZUNsZWFyTWVkaWFDYWNoZSBjbGVhck1lZGlhQ2FjaGUsIE1l
ZGlhRW5naW5lQ2xlYXJNZWRpYUNhY2hlRm9yT3JpZ2lucyBjbGVhck1lZGlhQ2FjaGVGb3JPcmln
aW5zLCBNZWRpYUVuZ2luZVN1cHBvcnRzS2V5U3lzdGVtIHN1cHBvcnRzS2V5U3lzdGVtKQorc3Rh
dGljIHZvaWQgYWRkTWVkaWFFbmdpbmUoc3RkOjp1bmlxdWVfcHRyPE1lZGlhUGxheWVyRmFjdG9y
eT4gZmFjdG9yeSkKIHsKLSAgICBBU1NFUlQoY29uc3RydWN0b3IpOwotICAgIEFTU0VSVChnZXRT
dXBwb3J0ZWRUeXBlcyk7Ci0gICAgQVNTRVJUKHN1cHBvcnRzVHlwZSk7Ci0KLSAgICBtdXRhYmxl
SW5zdGFsbGVkTWVkaWFFbmdpbmVzVmVjdG9yKCkuYXBwZW5kKE1lZGlhUGxheWVyRmFjdG9yeSB7
IFdURk1vdmUoY29uc3RydWN0b3IpLCBnZXRTdXBwb3J0ZWRUeXBlcywgc3VwcG9ydHNUeXBlLCBv
cmlnaW5zSW5NZWRpYUNhY2hlLCBjbGVhck1lZGlhQ2FjaGUsIGNsZWFyTWVkaWFDYWNoZUZvck9y
aWdpbnMsIHN1cHBvcnRzS2V5U3lzdGVtIH0pOworICAgIG11dGFibGVJbnN0YWxsZWRNZWRpYUVu
Z2luZXNWZWN0b3IoKS5hcHBlbmQoV1RGTW92ZShmYWN0b3J5KSk7CiB9CiAKIHN0YXRpYyBjb25z
dCBBdG9tU3RyaW5nJiBhcHBsaWNhdGlvbk9jdGV0U3RyZWFtKCkKQEAgLTI5OCw2ICszMDksMjEg
QEAgc3RhdGljIGNvbnN0IEF0b21TdHJpbmcmIHRleHRQbGFpbigpCiAgICAgcmV0dXJuIHRleHRQ
bGFpbjsKIH0KIAorY29uc3QgTWVkaWFQbGF5ZXJGYWN0b3J5KiBNZWRpYVBsYXllcjo6bWVkaWFF
bmdpbmUoY29uc3QgU3RyaW5nJiBpZGVudGlmaWVyKQoreworICAgIGF1dG8mIGVuZ2luZXMgPSBp
bnN0YWxsZWRNZWRpYUVuZ2luZXMoKTsKKyAgICBhdXRvIGN1cnJlbnRJbmRleCA9IGVuZ2luZXMu
ZmluZE1hdGNoaW5nKFtpZGVudGlmaWVyXSAoYXV0byYgZW5naW5lKSB7CisgICAgICAgIHJldHVy
biBlbmdpbmUtPmlkZW50aWZpZXIoKSA9PSBpZGVudGlmaWVyOworICAgIH0pOworCisgICAgaWYg
KGN1cnJlbnRJbmRleCA9PSBub3RGb3VuZCkgeworICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQo
KTsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgfQorCisgICAgcmV0dXJuIGVuZ2luZXNb
Y3VycmVudEluZGV4ICsgMV0uZ2V0KCk7Cit9CisKIHN0YXRpYyBjb25zdCBNZWRpYVBsYXllckZh
Y3RvcnkqIGJlc3RNZWRpYUVuZ2luZUZvclN1cHBvcnRQYXJhbWV0ZXJzKGNvbnN0IE1lZGlhRW5n
aW5lU3VwcG9ydFBhcmFtZXRlcnMmIHBhcmFtZXRlcnMsIGNvbnN0IE1lZGlhUGxheWVyRmFjdG9y
eSogY3VycmVudCA9IG51bGxwdHIpCiB7CiAgICAgaWYgKHBhcmFtZXRlcnMudHlwZS5pc0VtcHR5
KCkgJiYgIXBhcmFtZXRlcnMuaXNNZWRpYVNvdXJjZSAmJiAhcGFyYW1ldGVycy5pc01lZGlhU3Ry
ZWFtKQpAQCAtMzE1LDM0ICszNDEsNDYgQEAgc3RhdGljIGNvbnN0IE1lZGlhUGxheWVyRmFjdG9y
eSogYmVzdE1lZGlhRW5naW5lRm9yU3VwcG9ydFBhcmFtZXRlcnMoY29uc3QgTWVkaWEKICAgICBN
ZWRpYVBsYXllcjo6U3VwcG9ydHNUeXBlIHN1cHBvcnRlZCA9IE1lZGlhUGxheWVyOjpJc05vdFN1
cHBvcnRlZDsKICAgICBmb3IgKGF1dG8mIGVuZ2luZSA6IGluc3RhbGxlZE1lZGlhRW5naW5lcygp
KSB7CiAgICAgICAgIGlmIChjdXJyZW50KSB7Ci0gICAgICAgICAgICBpZiAoY3VycmVudCA9PSAm
ZW5naW5lKQorICAgICAgICAgICAgaWYgKGN1cnJlbnQgPT0gZW5naW5lLmdldCgpKQogICAgICAg
ICAgICAgICAgIGN1cnJlbnQgPSBudWxscHRyOwogICAgICAgICAgICAgY29udGludWU7CiAgICAg
ICAgIH0KLSAgICAgICAgTWVkaWFQbGF5ZXI6OlN1cHBvcnRzVHlwZSBlbmdpbmVTdXBwb3J0ID0g
ZW5naW5lLnN1cHBvcnRzVHlwZUFuZENvZGVjcyhwYXJhbWV0ZXJzKTsKKyAgICAgICAgTWVkaWFQ
bGF5ZXI6OlN1cHBvcnRzVHlwZSBlbmdpbmVTdXBwb3J0ID0gZW5naW5lLT5zdXBwb3J0c1R5cGVB
bmRDb2RlY3MocGFyYW1ldGVycyk7CiAgICAgICAgIGlmIChlbmdpbmVTdXBwb3J0ID4gc3VwcG9y
dGVkKSB7CiAgICAgICAgICAgICBzdXBwb3J0ZWQgPSBlbmdpbmVTdXBwb3J0OwotICAgICAgICAg
ICAgZm91bmRFbmdpbmUgPSAmZW5naW5lOworICAgICAgICAgICAgZm91bmRFbmdpbmUgPSBlbmdp
bmUuZ2V0KCk7CiAgICAgICAgIH0KICAgICB9CiAKICAgICByZXR1cm4gZm91bmRFbmdpbmU7CiB9
CiAKLXN0YXRpYyBjb25zdCBNZWRpYVBsYXllckZhY3RvcnkqIG5leHRNZWRpYUVuZ2luZShjb25z
dCBNZWRpYVBsYXllckZhY3RvcnkqIGN1cnJlbnQpCitjb25zdCBNZWRpYVBsYXllckZhY3Rvcnkq
IE1lZGlhUGxheWVyOjpuZXh0TWVkaWFFbmdpbmUoY29uc3QgTWVkaWFQbGF5ZXJGYWN0b3J5KiBj
dXJyZW50KQogeworICAgIGlmICghbV9hY3RpdmVFbmdpbmVJZGVudGlmaWVyLmlzRW1wdHkoKSkg
eworICAgICAgICBhdXRvKiBlbmdpbmUgPSBtZWRpYUVuZ2luZShtX2FjdGl2ZUVuZ2luZUlkZW50
aWZpZXIpOworICAgICAgICByZXR1cm4gY3VycmVudCAhPSBlbmdpbmUgPyBlbmdpbmUgOiBudWxs
cHRyOworICAgIH0KKwogICAgIGF1dG8mIGVuZ2luZXMgPSBpbnN0YWxsZWRNZWRpYUVuZ2luZXMo
KTsKICAgICBpZiAoZW5naW5lcy5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwog
CiAgICAgaWYgKCFjdXJyZW50KSAKLSAgICAgICAgcmV0dXJuICZlbmdpbmVzLmZpcnN0KCk7Cisg
ICAgICAgIHJldHVybiBlbmdpbmVzLmZpcnN0KCkuZ2V0KCk7CisKKyAgICBhdXRvIGN1cnJlbnRJ
bmRleCA9IGVuZ2luZXMuZmluZE1hdGNoaW5nKFtjdXJyZW50XSAoYXV0byYgZW5naW5lKSB7Cisg
ICAgICAgIHJldHVybiBlbmdpbmUuZ2V0KCkgPT0gY3VycmVudDsKKyAgICB9KTsKKyAgICBpZiAo
Y3VycmVudEluZGV4ID09IG5vdEZvdW5kKSB7CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgp
OworICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICB9CiAKLSAgICBzaXplX3QgY3VycmVudElu
ZGV4ID0gY3VycmVudCAtICZlbmdpbmVzLmZpcnN0KCk7CiAgICAgaWYgKGN1cnJlbnRJbmRleCAr
IDEgPj0gZW5naW5lcy5zaXplKCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgcmV0
dXJuICZlbmdpbmVzW2N1cnJlbnRJbmRleCArIDFdOworICAgIHJldHVybiBlbmdpbmVzW2N1cnJl
bnRJbmRleCArIDFdLmdldCgpOwogfQogCiAvLyBtZWRpYSBwbGF5ZXIKQEAgLTM1Miw2ICszOTAs
MTMgQEAgUmVmPE1lZGlhUGxheWVyPiBNZWRpYVBsYXllcjo6Y3JlYXRlKE1lZGlhUGxheWVyQ2xp
ZW50JiBjbGllbnQpCiAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgTWVkaWFQbGF5ZXIoY2xpZW50
KSk7CiB9CiAKK1JlZjxNZWRpYVBsYXllcj4gTWVkaWFQbGF5ZXI6OmNyZWF0ZShNZWRpYVBsYXll
ckNsaWVudCYgY2xpZW50LCBjb25zdCBTdHJpbmcmIG1lZGlhRW5naW5lSWRlbnRpZmllcikKK3sK
KyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBNZWRpYVBsYXllcihjbGllbnQsIG1lZGlhRW5naW5l
SWRlbnRpZmllcikpOworfQorCisKKwogTWVkaWFQbGF5ZXI6Ok1lZGlhUGxheWVyKE1lZGlhUGxh
eWVyQ2xpZW50JiBjbGllbnQpCiAgICAgOiBtX2NsaWVudCgmY2xpZW50KQogICAgICwgbV9yZWxv
YWRUaW1lcigqdGhpcywgJk1lZGlhUGxheWVyOjpyZWxvYWRUaW1lckZpcmVkKQpAQCAtMzU5LDYg
KzQwNCwxNCBAQCBNZWRpYVBsYXllcjo6TWVkaWFQbGF5ZXIoTWVkaWFQbGF5ZXJDbGllbnQmIGNs
aWVudCkKIHsKIH0KIAorTWVkaWFQbGF5ZXI6Ok1lZGlhUGxheWVyKE1lZGlhUGxheWVyQ2xpZW50
JiBjbGllbnQsIGNvbnN0IFN0cmluZyYgYWN0aXZlRW5naW5lSWRlbnRpZmllcikKKyAgICA6IG1f
Y2xpZW50KCZjbGllbnQpCisgICAgLCBtX3JlbG9hZFRpbWVyKCp0aGlzLCAmTWVkaWFQbGF5ZXI6
OnJlbG9hZFRpbWVyRmlyZWQpCisgICAgLCBtX3ByaXZhdGUobWFrZVVuaXF1ZTxOdWxsTWVkaWFQ
bGF5ZXJQcml2YXRlPih0aGlzKSkKKyAgICAsIG1fYWN0aXZlRW5naW5lSWRlbnRpZmllcihhY3Rp
dmVFbmdpbmVJZGVudGlmaWVyKQoreworfQorCiBNZWRpYVBsYXllcjo6fk1lZGlhUGxheWVyKCkK
IHsKICAgICBBU1NFUlQoIW1faW5pdGlhbGl6aW5nTWVkaWFFbmdpbmUpOwpAQCAtNDQxLDcgKzQ5
NCw3IEBAIGJvb2wgTWVkaWFQbGF5ZXI6OmxvYWQoTWVkaWFTdHJlYW1Qcml2YXRlJiBtZWRpYVN0
cmVhbSkKIH0KICNlbmRpZgogCi1jb25zdCBNZWRpYVBsYXllckZhY3RvcnkqIE1lZGlhUGxheWVy
OjpuZXh0QmVzdE1lZGlhRW5naW5lKGNvbnN0IE1lZGlhUGxheWVyRmFjdG9yeSogY3VycmVudCkg
Y29uc3QKK2NvbnN0IE1lZGlhUGxheWVyRmFjdG9yeSogTWVkaWFQbGF5ZXI6Om5leHRCZXN0TWVk
aWFFbmdpbmUoY29uc3QgTWVkaWFQbGF5ZXJGYWN0b3J5KiBjdXJyZW50KQogewogICAgIE1lZGlh
RW5naW5lU3VwcG9ydFBhcmFtZXRlcnMgcGFyYW1ldGVyczsKICAgICBwYXJhbWV0ZXJzLnR5cGUg
PSBtX2NvbnRlbnRUeXBlOwpAQCAtNDUzLDYgKzUwNiwyOCBAQCBjb25zdCBNZWRpYVBsYXllckZh
Y3RvcnkqIE1lZGlhUGxheWVyOjpuZXh0QmVzdE1lZGlhRW5naW5lKGNvbnN0IE1lZGlhUGxheWVy
RmFjdAogICAgIHBhcmFtZXRlcnMuaXNNZWRpYVN0cmVhbSA9ICEhbV9tZWRpYVN0cmVhbTsKICNl
bmRpZgogCisgICAgaWYgKCFtX2FjdGl2ZUVuZ2luZUlkZW50aWZpZXIuaXNFbXB0eSgpKSB7Cisg
ICAgICAgIGlmIChjdXJyZW50KQorICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICAg
ICAgYXV0byogZW5naW5lID0gbWVkaWFFbmdpbmUobV9hY3RpdmVFbmdpbmVJZGVudGlmaWVyKTsK
KyAgICAgICAgaWYgKGVuZ2luZSAmJiBlbmdpbmUtPnN1cHBvcnRzVHlwZUFuZENvZGVjcyhwYXJh
bWV0ZXJzKSAhPSBNZWRpYVBsYXllcjo6SXNOb3RTdXBwb3J0ZWQpCisgICAgICAgICAgICByZXR1
cm4gZW5naW5lOworCisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIH0KKworICAgIGlmICgh
bV9hY3RpdmVFbmdpbmVJZGVudGlmaWVyLmlzRW1wdHkoKSkgeworICAgICAgICBpZiAoY3VycmVu
dCkKKyAgICAgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgICAgIGF1dG8qIGVuZ2luZSA9
IG1lZGlhRW5naW5lKG1fYWN0aXZlRW5naW5lSWRlbnRpZmllcik7CisgICAgICAgIGlmIChlbmdp
bmUgJiYgZW5naW5lLT5zdXBwb3J0c1R5cGVBbmRDb2RlY3MocGFyYW1ldGVycykgIT0gTWVkaWFQ
bGF5ZXI6OklzTm90U3VwcG9ydGVkKQorICAgICAgICAgICAgcmV0dXJuIGVuZ2luZTsKKworICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICB9CisKICAgICByZXR1cm4gYmVzdE1lZGlhRW5naW5l
Rm9yU3VwcG9ydFBhcmFtZXRlcnMocGFyYW1ldGVycywgY3VycmVudCk7CiB9CiAKQEAgLTQ4OSw3
ICs1NjQsNyBAQCB2b2lkIE1lZGlhUGxheWVyOjpsb2FkV2l0aE5leHRNZWRpYUVuZ2luZShjb25z
dCBNZWRpYVBsYXllckZhY3RvcnkqIGN1cnJlbnQpCiAgICAgICAgIG1fcHJpdmF0ZSA9IG51bGxw
dHI7CiAgICAgfSBlbHNlIGlmIChtX2N1cnJlbnRNZWRpYUVuZ2luZSAhPSBlbmdpbmUpIHsKICAg
ICAgICAgbV9jdXJyZW50TWVkaWFFbmdpbmUgPSBlbmdpbmU7Ci0gICAgICAgIG1fcHJpdmF0ZSA9
IGVuZ2luZS0+Y29uc3RydWN0b3IodGhpcyk7CisgICAgICAgIG1fcHJpdmF0ZSA9IGVuZ2luZS0+
Y3JlYXRlTWVkaWFFbmdpbmVQbGF5ZXIodGhpcyk7CiAgICAgICAgIGNsaWVudCgpLm1lZGlhUGxh
eWVyRW5naW5lVXBkYXRlZCgpOwogICAgICAgICBtX3ByaXZhdGUtPnNldFByaXZhdGVCcm93c2lu
Z01vZGUobV9wcml2YXRlQnJvd3NpbmcpOwogICAgICAgICBtX3ByaXZhdGUtPnNldFByZWxvYWQo
bV9wcmVsb2FkKTsKQEAgLTkyOSw3ICsxMDA0LDcgQEAgdm9pZCBNZWRpYVBsYXllcjo6Z2V0U3Vw
cG9ydGVkVHlwZXMoSGFzaFNldDxTdHJpbmcsIEFTQ0lJQ2FzZUluc2Vuc2l0aXZlSGFzaD4mIHQK
IHsKICAgICBmb3IgKGF1dG8mIGVuZ2luZSA6IGluc3RhbGxlZE1lZGlhRW5naW5lcygpKSB7CiAg
ICAgICAgIEhhc2hTZXQ8U3RyaW5nLCBBU0NJSUNhc2VJbnNlbnNpdGl2ZUhhc2g+IGVuZ2luZVR5
cGVzOwotICAgICAgICBlbmdpbmUuZ2V0U3VwcG9ydGVkVHlwZXMoZW5naW5lVHlwZXMpOworICAg
ICAgICBlbmdpbmUtPmdldFN1cHBvcnRlZFR5cGVzKGVuZ2luZVR5cGVzKTsKICAgICAgICAgdHlw
ZXMuYWRkKGVuZ2luZVR5cGVzLmJlZ2luKCksIGVuZ2luZVR5cGVzLmVuZCgpKTsKICAgICB9CiB9
IApAQCAtMTEyNSwzNCArMTIwMCwyOCBAQCBzdGF0aWMgdm9pZCBhZGRUb0hhc2goSGFzaFNldDxU
PiYgdG9IYXNoLCBIYXNoU2V0PFQ+JiYgZnJvbUhhc2gpCiBIYXNoU2V0PFJlZlB0cjxTZWN1cml0
eU9yaWdpbj4+IE1lZGlhUGxheWVyOjpvcmlnaW5zSW5NZWRpYUNhY2hlKGNvbnN0IFN0cmluZyYg
cGF0aCkKIHsKICAgICBIYXNoU2V0PFJlZlB0cjxTZWN1cml0eU9yaWdpbj4+IG9yaWdpbnM7Ci0g
ICAgZm9yIChhdXRvJiBlbmdpbmUgOiBpbnN0YWxsZWRNZWRpYUVuZ2luZXMoKSkgewotICAgICAg
ICBpZiAoIWVuZ2luZS5vcmlnaW5zSW5NZWRpYUNhY2hlKQotICAgICAgICAgICAgY29udGludWU7
Ci0gICAgICAgIGFkZFRvSGFzaChvcmlnaW5zLCBlbmdpbmUub3JpZ2luc0luTWVkaWFDYWNoZShw
YXRoKSk7Ci0gICAgfQorICAgIGZvciAoYXV0byYgZW5naW5lIDogaW5zdGFsbGVkTWVkaWFFbmdp
bmVzKCkpCisgICAgICAgIGFkZFRvSGFzaChvcmlnaW5zLCBlbmdpbmUtPm9yaWdpbnNJbk1lZGlh
Q2FjaGUocGF0aCkpOworCiAgICAgcmV0dXJuIG9yaWdpbnM7CiB9CiAKIHZvaWQgTWVkaWFQbGF5
ZXI6OmNsZWFyTWVkaWFDYWNoZShjb25zdCBTdHJpbmcmIHBhdGgsIFdhbGxUaW1lIG1vZGlmaWVk
U2luY2UpCiB7Ci0gICAgZm9yIChhdXRvJiBlbmdpbmUgOiBpbnN0YWxsZWRNZWRpYUVuZ2luZXMo
KSkgewotICAgICAgICBpZiAoZW5naW5lLmNsZWFyTWVkaWFDYWNoZSkKLSAgICAgICAgICAgIGVu
Z2luZS5jbGVhck1lZGlhQ2FjaGUocGF0aCwgbW9kaWZpZWRTaW5jZSk7Ci0gICAgfQorICAgIGZv
ciAoYXV0byYgZW5naW5lIDogaW5zdGFsbGVkTWVkaWFFbmdpbmVzKCkpCisgICAgICAgIGVuZ2lu
ZS0+Y2xlYXJNZWRpYUNhY2hlKHBhdGgsIG1vZGlmaWVkU2luY2UpOwogfQogCiB2b2lkIE1lZGlh
UGxheWVyOjpjbGVhck1lZGlhQ2FjaGVGb3JPcmlnaW5zKGNvbnN0IFN0cmluZyYgcGF0aCwgY29u
c3QgSGFzaFNldDxSZWZQdHI8U2VjdXJpdHlPcmlnaW4+PiYgb3JpZ2lucykKIHsKLSAgICBmb3Ig
KGF1dG8mIGVuZ2luZSA6IGluc3RhbGxlZE1lZGlhRW5naW5lcygpKSB7Ci0gICAgICAgIGlmIChl
bmdpbmUuY2xlYXJNZWRpYUNhY2hlRm9yT3JpZ2lucykKLSAgICAgICAgICAgIGVuZ2luZS5jbGVh
ck1lZGlhQ2FjaGVGb3JPcmlnaW5zKHBhdGgsIG9yaWdpbnMpOwotICAgIH0KKyAgICBmb3IgKGF1
dG8mIGVuZ2luZSA6IGluc3RhbGxlZE1lZGlhRW5naW5lcygpKQorICAgICAgICBlbmdpbmUtPmNs
ZWFyTWVkaWFDYWNoZUZvck9yaWdpbnMocGF0aCwgb3JpZ2lucyk7CiB9CiAKIGJvb2wgTWVkaWFQ
bGF5ZXI6OnN1cHBvcnRzS2V5U3lzdGVtKGNvbnN0IFN0cmluZyYga2V5U3lzdGVtLCBjb25zdCBT
dHJpbmcmIG1pbWVUeXBlKQogewogICAgIGZvciAoYXV0byYgZW5naW5lIDogaW5zdGFsbGVkTWVk
aWFFbmdpbmVzKCkpIHsKLSAgICAgICAgaWYgKGVuZ2luZS5zdXBwb3J0c0tleVN5c3RlbSAmJiBl
bmdpbmUuc3VwcG9ydHNLZXlTeXN0ZW0oa2V5U3lzdGVtLCBtaW1lVHlwZSkpCisgICAgICAgIGlm
IChlbmdpbmUtPnN1cHBvcnRzS2V5U3lzdGVtKGtleVN5c3RlbSwgbWltZVR5cGUpKQogICAgICAg
ICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogICAgIHJldHVybiBmYWxzZTsKQEAgLTExNzIsNyAr
MTI0MSw3IEBAIHZvaWQgTWVkaWFQbGF5ZXI6Om5ldHdvcmtTdGF0ZUNoYW5nZWQoKQogICAgIC8v
IGxldCB0aGUgbmV4dCBlbmdpbmUgdHJ5LgogICAgIGlmIChtX3ByaXZhdGUtPm5ldHdvcmtTdGF0
ZSgpID49IEZvcm1hdEVycm9yICYmIG1fcHJpdmF0ZS0+cmVhZHlTdGF0ZSgpIDwgSGF2ZU1ldGFk
YXRhKSB7CiAgICAgICAgIGNsaWVudCgpLm1lZGlhUGxheWVyRW5naW5lRmFpbGVkVG9Mb2FkKCk7
Ci0gICAgICAgIGlmIChpbnN0YWxsZWRNZWRpYUVuZ2luZXMoKS5zaXplKCkgPiAxICYmIChtX2Nv
bnRlbnRUeXBlLmlzRW1wdHkoKSB8fCBuZXh0QmVzdE1lZGlhRW5naW5lKG1fY3VycmVudE1lZGlh
RW5naW5lKSkpIHsKKyAgICAgICAgaWYgKG1fYWN0aXZlRW5naW5lSWRlbnRpZmllci5pc0VtcHR5
KCkgJiYgaW5zdGFsbGVkTWVkaWFFbmdpbmVzKCkuc2l6ZSgpID4gMSAmJiAobV9jb250ZW50VHlw
ZS5pc0VtcHR5KCkgfHwgbmV4dEJlc3RNZWRpYUVuZ2luZShtX2N1cnJlbnRNZWRpYUVuZ2luZSkp
KSB7CiAgICAgICAgICAgICBtX3JlbG9hZFRpbWVyLnN0YXJ0T25lU2hvdCgwX3MpOwogICAgICAg
ICAgICAgcmV0dXJuOwogICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvTWVkaWFQbGF5ZXIuaAppbmRleCBmYjllYmEwZTRhYmUzMWM3NTI3MDBjYjdjZTY4OTBk
Yjk4OWMyMjJiLi4wMjVjZTIwYWYwMjk4NjZmZjkyZmRiOGQ4ZTRiMDBiZjg2NWViNGZjIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmgKQEAgLTY3
LDYgKzY3LDcgQEAgY2xhc3MgSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZTsKIGNsYXNzIExlZ2FjeUNE
TVNlc3Npb25DbGllbnQ7CiBjbGFzcyBNZWRpYVBsYXliYWNrVGFyZ2V0OwogY2xhc3MgTWVkaWFQ
bGF5ZXI7CitjbGFzcyBNZWRpYVBsYXllckZhY3Rvcnk7CiBjbGFzcyBNZWRpYVBsYXllclByaXZh
dGVJbnRlcmZhY2U7CiBjbGFzcyBNZWRpYVBsYXllclJlcXVlc3RJbnN0YWxsTWlzc2luZ1BsdWdp
bnNDYWxsYmFjazsKIGNsYXNzIE1lZGlhU291cmNlUHJpdmF0ZUNsaWVudDsKQEAgLTc2LDcgKzc3
LDYgQEAgY2xhc3MgVGV4dFRyYWNrUmVwcmVzZW50YXRpb247CiAKIHN0cnVjdCBDb29raWU7CiBz
dHJ1Y3QgR3JhcGhpY3NEZXZpY2VBZGFwdGVyOwotc3RydWN0IE1lZGlhUGxheWVyRmFjdG9yeTsK
IAogc3RydWN0IE1lZGlhRW5naW5lU3VwcG9ydFBhcmFtZXRlcnMgewogICAgIENvbnRlbnRUeXBl
IHR5cGU7CkBAIC04NCw2ICs4NCw0OCBAQCBzdHJ1Y3QgTWVkaWFFbmdpbmVTdXBwb3J0UGFyYW1l
dGVycyB7CiAgICAgYm9vbCBpc01lZGlhU291cmNlIHsgZmFsc2UgfTsKICAgICBib29sIGlzTWVk
aWFTdHJlYW0geyBmYWxzZSB9OwogICAgIFZlY3RvcjxDb250ZW50VHlwZT4gY29udGVudFR5cGVz
UmVxdWlyaW5nSGFyZHdhcmVTdXBwb3J0OworCisjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKQorICAg
IHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+CisgICAgdm9pZCBlbmNvZGUoRW5jb2RlciYgZW5jb2Rl
cikgY29uc3QKKyAgICB7CisgICAgICAgIGVuY29kZXIgPDwgdHlwZTsKKyAgICAgICAgZW5jb2Rl
ciA8PCB1cmw7CisgICAgICAgIGVuY29kZXIgPDwgaXNNZWRpYVNvdXJjZTsKKyAgICAgICAgZW5j
b2RlciA8PCBjb250ZW50VHlwZXNSZXF1aXJpbmdIYXJkd2FyZVN1cHBvcnQ7CisgICAgfQorCisg
ICAgdGVtcGxhdGUgPGNsYXNzIERlY29kZXI+CisgICAgc3RhdGljIE9wdGlvbmFsPE1lZGlhRW5n
aW5lU3VwcG9ydFBhcmFtZXRlcnM+IGRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQorICAgIHsKKyAg
ICAgICAgT3B0aW9uYWw8Q29udGVudFR5cGU+IHR5cGU7CisgICAgICAgIGRlY29kZXIgPj4gdHlw
ZTsKKyAgICAgICAgaWYgKCF0eXBlKQorICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsK
KworICAgICAgICBPcHRpb25hbDxVUkw+IHVybDsKKyAgICAgICAgZGVjb2RlciA+PiB1cmw7Cisg
ICAgICAgIGlmICghdXJsKQorICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKworICAg
ICAgICBPcHRpb25hbDxib29sPiBpc01lZGlhU291cmNlOworICAgICAgICBkZWNvZGVyID4+IGlz
TWVkaWFTb3VyY2U7CisgICAgICAgIGlmICghaXNNZWRpYVNvdXJjZSkKKyAgICAgICAgICAgIHJl
dHVybiBXVEY6Om51bGxvcHQ7CisKKyAgICAgICAgT3B0aW9uYWw8Ym9vbD4gaXNNZWRpYVN0cmVh
bTsKKyAgICAgICAgZGVjb2RlciA+PiBpc01lZGlhU3RyZWFtOworICAgICAgICBpZiAoIWlzTWVk
aWFTdHJlYW0pCisgICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworCisgICAgICAgIE9w
dGlvbmFsPFZlY3RvcjxDb250ZW50VHlwZT4+IHR5cGVzUmVxdWlyaW5nSGFyZHdhcmU7CisgICAg
ICAgIGRlY29kZXIgPj4gdHlwZXNSZXF1aXJpbmdIYXJkd2FyZTsKKyAgICAgICAgaWYgKCF0eXBl
c1JlcXVpcmluZ0hhcmR3YXJlKQorICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKwor
ICAgICAgICByZXR1cm4ge3sgV1RGTW92ZSgqdHlwZSksIFdURk1vdmUoKnVybCksIFdURk1vdmUo
KmlzTWVkaWFTb3VyY2UpLCBXVEZNb3ZlKCppc01lZGlhU3RyZWFtKSwgV1RGTW92ZSgqdHlwZXNS
ZXF1aXJpbmdIYXJkd2FyZSkgfX07CisgICAgfQorI2VuZGlmCiB9OwogCiBzdHJ1Y3QgVmlkZW9Q
bGF5YmFja1F1YWxpdHlNZXRyaWNzIHsKQEAgLTIzNSw3ICsyNzcsNyBAQCBwdWJsaWM6CiAjZW5k
aWYKIAogICAgIHZpcnR1YWwgYm9vbCBtZWRpYVBsYXllclNob3VsZERpc2FibGVTbGVlcCgpIGNv
bnN0IHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgdmlydHVhbCBjb25zdCBWZWN0b3I8Q29udGVudFR5
cGU+JiBtZWRpYUNvbnRlbnRUeXBlc1JlcXVpcmluZ0hhcmR3YXJlU3VwcG9ydCgpIGNvbnN0Owor
ICAgIHZpcnR1YWwgY29uc3QgVmVjdG9yPENvbnRlbnRUeXBlPiYgbWVkaWFDb250ZW50VHlwZXNS
ZXF1aXJpbmdIYXJkd2FyZVN1cHBvcnQoKSBjb25zdCA9IDA7CiAgICAgdmlydHVhbCBib29sIG1l
ZGlhUGxheWVyU2hvdWxkQ2hlY2tIYXJkd2FyZVN1cHBvcnQoKSBjb25zdCB7IHJldHVybiBmYWxz
ZTsgfQogCiAjaWYgIVJFTEVBU0VfTE9HX0RJU0FCTEVECkBAIC0yNDQsMTYgKzI4NiwxOCBAQCBw
dWJsaWM6CiAjZW5kaWYKIH07CiAKLWNsYXNzIE1lZGlhUGxheWVyIDogcHVibGljIE1lZGlhUGxh
eWVyRW51bXMsIHB1YmxpYyBSZWZDb3VudGVkPE1lZGlhUGxheWVyPiB7CitjbGFzcyBXRUJDT1JF
X0VYUE9SVCBNZWRpYVBsYXllciA6IHB1YmxpYyBNZWRpYVBsYXllckVudW1zLCBwdWJsaWMgUmVm
Q291bnRlZDxNZWRpYVBsYXllcj4gewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKE1lZGlhUGxh
eWVyKTsgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgc3RhdGljIFJlZjxN
ZWRpYVBsYXllcj4gY3JlYXRlKE1lZGlhUGxheWVyQ2xpZW50Jik7CisgICAgc3RhdGljIFJlZjxN
ZWRpYVBsYXllcj4gY3JlYXRlKE1lZGlhUGxheWVyQ2xpZW50JiwgY29uc3QgU3RyaW5nJik7CiAg
ICAgdmlydHVhbCB+TWVkaWFQbGF5ZXIoKTsKIAogICAgIHZvaWQgaW52YWxpZGF0ZSgpOwogCiAg
ICAgLy8gTWVkaWEgZW5naW5lIHN1cHBvcnQuCiAgICAgdXNpbmcgTWVkaWFQbGF5ZXJFbnVtczo6
U3VwcG9ydHNUeXBlOworICAgIHN0YXRpYyBjb25zdCBNZWRpYVBsYXllckZhY3RvcnkqIG1lZGlh
RW5naW5lKGNvbnN0IFN0cmluZyYpOwogICAgIHN0YXRpYyBTdXBwb3J0c1R5cGUgc3VwcG9ydHNU
eXBlKGNvbnN0IE1lZGlhRW5naW5lU3VwcG9ydFBhcmFtZXRlcnMmKTsKICAgICBzdGF0aWMgdm9p
ZCBnZXRTdXBwb3J0ZWRUeXBlcyhIYXNoU2V0PFN0cmluZywgQVNDSUlDYXNlSW5zZW5zaXRpdmVI
YXNoPiYpOwogICAgIHN0YXRpYyBib29sIGlzQXZhaWxhYmxlKCk7CkBAIC01OTYsMTEgKzY0MCwx
MyBAQCBwdWJsaWM6CiAKIHByaXZhdGU6CiAgICAgTWVkaWFQbGF5ZXIoTWVkaWFQbGF5ZXJDbGll
bnQmKTsKKyAgICBNZWRpYVBsYXllcihNZWRpYVBsYXllckNsaWVudCYsIGNvbnN0IFN0cmluZyYp
OwogCiAgICAgTWVkaWFQbGF5ZXJDbGllbnQmIGNsaWVudCgpIGNvbnN0IHsgcmV0dXJuICptX2Ns
aWVudDsgfQogCi0gICAgY29uc3QgTWVkaWFQbGF5ZXJGYWN0b3J5KiBuZXh0QmVzdE1lZGlhRW5n
aW5lKGNvbnN0IE1lZGlhUGxheWVyRmFjdG9yeSopIGNvbnN0OworICAgIGNvbnN0IE1lZGlhUGxh
eWVyRmFjdG9yeSogbmV4dEJlc3RNZWRpYUVuZ2luZShjb25zdCBNZWRpYVBsYXllckZhY3Rvcnkq
KTsKICAgICB2b2lkIGxvYWRXaXRoTmV4dE1lZGlhRW5naW5lKGNvbnN0IE1lZGlhUGxheWVyRmFj
dG9yeSopOworICAgIGNvbnN0IE1lZGlhUGxheWVyRmFjdG9yeSogbmV4dE1lZGlhRW5naW5lKGNv
bnN0IE1lZGlhUGxheWVyRmFjdG9yeSopOwogICAgIHZvaWQgcmVsb2FkVGltZXJGaXJlZCgpOwog
CiAgICAgTWVkaWFQbGF5ZXJDbGllbnQqIG1fY2xpZW50OwpAQCAtNjEwLDYgKzY1Niw3IEBAIHBy
aXZhdGU6CiAgICAgVVJMIG1fdXJsOwogICAgIENvbnRlbnRUeXBlIG1fY29udGVudFR5cGU7CiAg
ICAgU3RyaW5nIG1fa2V5U3lzdGVtOworICAgIFN0cmluZyBtX2FjdGl2ZUVuZ2luZUlkZW50aWZp
ZXI7CiAgICAgSW50U2l6ZSBtX3NpemU7CiAgICAgUHJlbG9hZCBtX3ByZWxvYWQgeyBBdXRvIH07
CiAgICAgZG91YmxlIG1fdm9sdW1lIHsgMSB9OwpAQCAtNjI5LDE2ICs2NzYsMjQgQEAgcHJpdmF0
ZToKICNlbmRpZgogfTsKIAotdXNpbmcgQ3JlYXRlTWVkaWFFbmdpbmVQbGF5ZXIgPSBXVEY6OkZ1
bmN0aW9uPHN0ZDo6dW5pcXVlX3B0cjxNZWRpYVBsYXllclByaXZhdGVJbnRlcmZhY2U+IChNZWRp
YVBsYXllciopPjsKLXR5cGVkZWYgdm9pZCAoKk1lZGlhRW5naW5lU3VwcG9ydGVkVHlwZXMpKEhh
c2hTZXQ8U3RyaW5nLCBBU0NJSUNhc2VJbnNlbnNpdGl2ZUhhc2g+JiB0eXBlcyk7Ci10eXBlZGVm
IE1lZGlhUGxheWVyOjpTdXBwb3J0c1R5cGUgKCpNZWRpYUVuZ2luZVN1cHBvcnRzVHlwZSkoY29u
c3QgTWVkaWFFbmdpbmVTdXBwb3J0UGFyYW1ldGVycyYgcGFyYW1ldGVycyk7Ci10eXBlZGVmIEhh
c2hTZXQ8UmVmUHRyPFNlY3VyaXR5T3JpZ2luPj4gKCpNZWRpYUVuZ2luZU9yaWdpbnNJbk1lZGlh
Q2FjaGUpKGNvbnN0IFN0cmluZyYgcGF0aCk7Ci10eXBlZGVmIHZvaWQgKCpNZWRpYUVuZ2luZUNs
ZWFyTWVkaWFDYWNoZSkoY29uc3QgU3RyaW5nJiBwYXRoLCBXYWxsVGltZSBtb2RpZmllZFNpbmNl
KTsKLXR5cGVkZWYgdm9pZCAoKk1lZGlhRW5naW5lQ2xlYXJNZWRpYUNhY2hlRm9yT3JpZ2lucyko
Y29uc3QgU3RyaW5nJiBwYXRoLCBjb25zdCBIYXNoU2V0PFJlZlB0cjxTZWN1cml0eU9yaWdpbj4+
Jik7Ci10eXBlZGVmIGJvb2wgKCpNZWRpYUVuZ2luZVN1cHBvcnRzS2V5U3lzdGVtKShjb25zdCBT
dHJpbmcmIGtleVN5c3RlbSwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSk7CitjbGFzcyBNZWRpYVBs
YXllckZhY3RvcnkgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOworcHVibGljOgorICAg
IE1lZGlhUGxheWVyRmFjdG9yeSgpID0gZGVmYXVsdDsKKyAgICB2aXJ0dWFsIH5NZWRpYVBsYXll
ckZhY3RvcnkoKSB7IH0KKworICAgIHZpcnR1YWwgc3RkOjp1bmlxdWVfcHRyPE1lZGlhUGxheWVy
UHJpdmF0ZUludGVyZmFjZT4gY3JlYXRlTWVkaWFFbmdpbmVQbGF5ZXIoTWVkaWFQbGF5ZXIqKSBj
b25zdCA9IDA7CisgICAgdmlydHVhbCB2b2lkIGdldFN1cHBvcnRlZFR5cGVzKEhhc2hTZXQ8U3Ry
aW5nLCBBU0NJSUNhc2VJbnNlbnNpdGl2ZUhhc2g+JikgY29uc3QgPSAwOworICAgIHZpcnR1YWwg
TWVkaWFQbGF5ZXI6OlN1cHBvcnRzVHlwZSBzdXBwb3J0c1R5cGVBbmRDb2RlY3MoY29uc3QgTWVk
aWFFbmdpbmVTdXBwb3J0UGFyYW1ldGVycyYpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIFN0cmlu
ZyBpZGVudGlmaWVyKCkgY29uc3QgID0gMDsKKworICAgIHZpcnR1YWwgSGFzaFNldDxSZWZQdHI8
U2VjdXJpdHlPcmlnaW4+PiBvcmlnaW5zSW5NZWRpYUNhY2hlKGNvbnN0IFN0cmluZyYpIGNvbnN0
IHsgcmV0dXJuIHsgfTsgfQorICAgIHZpcnR1YWwgdm9pZCBjbGVhck1lZGlhQ2FjaGUoY29uc3Qg
U3RyaW5nJiwgV2FsbFRpbWUpIGNvbnN0IHsgfQorICAgIHZpcnR1YWwgdm9pZCBjbGVhck1lZGlh
Q2FjaGVGb3JPcmlnaW5zKGNvbnN0IFN0cmluZyYsIGNvbnN0IEhhc2hTZXQ8UmVmUHRyPFNlY3Vy
aXR5T3JpZ2luPj4mKSBjb25zdCB7IH0KKyAgICB2aXJ0dWFsIGJvb2wgc3VwcG9ydHNLZXlTeXN0
ZW0oY29uc3QgU3RyaW5nJiAvKiBrZXlTeXN0ZW0gKi8sIGNvbnN0IFN0cmluZyYgLyogbWltZVR5
cGUgKi8pIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9Cit9OwogCi10eXBlZGVmIHZvaWQgKCpNZWRp
YUVuZ2luZVJlZ2lzdHJhcikoQ3JlYXRlTWVkaWFFbmdpbmVQbGF5ZXImJiwgTWVkaWFFbmdpbmVT
dXBwb3J0ZWRUeXBlcywgTWVkaWFFbmdpbmVTdXBwb3J0c1R5cGUsCi0gICAgTWVkaWFFbmdpbmVP
cmlnaW5zSW5NZWRpYUNhY2hlLCBNZWRpYUVuZ2luZUNsZWFyTWVkaWFDYWNoZSwgTWVkaWFFbmdp
bmVDbGVhck1lZGlhQ2FjaGVGb3JPcmlnaW5zLCBNZWRpYUVuZ2luZVN1cHBvcnRzS2V5U3lzdGVt
KTsKK3R5cGVkZWYgdm9pZCAoKk1lZGlhRW5naW5lUmVnaXN0cmFyKShzdGQ6OnVuaXF1ZV9wdHI8
TWVkaWFQbGF5ZXJGYWN0b3J5Pik7CiB0eXBlZGVmIHZvaWQgKCpNZWRpYUVuZ2luZVJlZ2lzdGVy
KShNZWRpYUVuZ2luZVJlZ2lzdHJhcik7CiAKIGNsYXNzIE1lZGlhUGxheWVyRmFjdG9yeVN1cHBv
cnQgewpAQCAtNjQ2LDYgKzcwMSwxMyBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgc3Rh
dGljIHZvaWQgY2FsbFJlZ2lzdGVyTWVkaWFFbmdpbmUoTWVkaWFFbmdpbmVSZWdpc3Rlcik7CiB9
OwogCitjbGFzcyBSZW1vdGVNZWRpYVBsYXllclN1cHBvcnQgeworcHVibGljOgorICAgIHVzaW5n
IFJlZ2lzdGVyUmVtb3RlUGxheWVyQ2FsbGJhY2sgPSBzdGQ6OmZ1bmN0aW9uPHZvaWQoTWVkaWFF
bmdpbmVSZWdpc3RyYXIsIGNvbnN0IFN0cmluZyYpPjsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0
aWMgdm9pZCBzZXRSZWdpc3RlclJlbW90ZVBsYXllckNhbGxiYWNrKFJlZ2lzdGVyUmVtb3RlUGxh
eWVyQ2FsbGJhY2smJik7Cit9OworCisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlm
IC8vIEVOQUJMRShWSURFTykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL01lZGlhUGxheWVyRW5naW5lSWRlbnRpZmllcnMuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyRW5naW5lSWRlbnRpZmllcnMuaApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li5jMjZlZmM1MDMzN2MyYmZkZjUxYWNlYWFiNDllN2NjYTc2ZWNmNTUzCi0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXJFbmdpbmVJ
ZGVudGlmaWVycy5oCkBAIC0wLDAgKzEsNDMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBB
TlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
ICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgorICogQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAor
ICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjcHJhZ21hIG9uY2UKKwor
I2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisK
K2NsYXNzIE1lZGlhUGxheWVyRW5naW5lSWRlbnRpZmllcnMgeworcHVibGljOgorICAgIHN0YXRp
YyBjb25zdCBjaGFyKiBhdkZvdW5kYXRpb25FbmdpbmVJZGVudGlmaWVyKCkgeyByZXR1cm4gIk1l
ZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMiOyB9CisgICAgc3RhdGljIGNvbnN0IGNo
YXIqIGF2Rm91bmRhdGlvbk1TRUVuZ2luZUlkZW50aWZpZXIoKSB7IHJldHVybiAiTWVkaWFQbGF5
ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDIjsgfQorICAgIHN0YXRpYyBjb25zdCBjaGFyKiBh
dkZvdW5kYXRpb25NZWRpYVN0cmVhbUVuZ2luZUlkZW50aWZpZXIoKSB7IHJldHVybiAiTWVkaWFQ
bGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDIjsgfQorICAgIHN0YXRpYyBjb25zdCBjaGFy
KiBHU3RyZWFtZXJNZWRpYUVuZ2luZUlkZW50aWZpZXIoKSB7IHJldHVybiAiTWVkaWFQbGF5ZXJQ
cml2YXRlR1N0cmVhbWVyIjsgfQorICAgIHN0YXRpYyBjb25zdCBjaGFyKiBHU3RyZWFtZXJNU0VN
ZWRpYUVuZ2luZUlkZW50aWZpZXIoKSB7IHJldHVybiAiTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVh
bWVyTVNFIjsgfQorICAgIHN0YXRpYyBjb25zdCBjaGFyKiBob2xlUHVuY2hNZWRpYUVuZ2luZUlk
ZW50aWZpZXIoKSB7IHJldHVybiAiTWVkaWFQbGF5ZXJQcml2YXRlSG9sZVB1bmNoIjsgfQorICAg
IHN0YXRpYyBjb25zdCBjaGFyKiBNZWRpYUZvdW5kYXRpb25NZWRpYUVuZ2luZUlkZW50aWZpZXIo
KSB7IHJldHVybiAiTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFGb3VuZGF0aW9uIjsgfQorfTsKKwor
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvUGxhdGZvcm1UaW1lUmFuZ2VzLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9QbGF0Zm9ybVRpbWVSYW5nZXMuaAppbmRleCAxODg4Njk1Yzc2ZTkyNmZiM2Vk
NGIzYTUxMGM5YmIwMzNiNDM3MzMwLi41MzZmNmFhMmE1YTc5NjYwNGQ1NzMxOWU2MTZhYmU1Njgz
ZmExY2IxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9QbGF0
Zm9ybVRpbWVSYW5nZXMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Q
bGF0Zm9ybVRpbWVSYW5nZXMuaApAQCAtMzYsNyArMzYsNyBAQCBjbGFzcyBQcmludFN0cmVhbTsK
IAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBQbGF0Zm9ybVRpbWVSYW5nZXMgeworY2xh
c3MgV0VCQ09SRV9FWFBPUlQgUGxhdGZvcm1UaW1lUmFuZ2VzIHsKICAgICBXVEZfTUFLRV9GQVNU
X0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBleHBsaWNpdCBQbGF0Zm9ybVRpbWVSYW5nZXMoKSB7
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRh
dGlvbi9jZi9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25DRi5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vY2YvTWVkaWFQbGF5ZXJQcml2YXRl
QVZGb3VuZGF0aW9uQ0YuY3BwCmluZGV4IDBjZThjZWI0OGJkNzg4Y2ViMTlhYTlkZDg5N2Y5Mjk5
ZGVhYmRkMGQuLmYzNTYxNTMzYjE2OWI3YjdmNmE0NWJkNjc1ZjgwYzcwZDI3MDA4NmYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9jZi9N
ZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25DRi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL2NmL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91
bmRhdGlvbkNGLmNwcApAQCAtMzQyLDExICszNDIsMzcgQEAgc3RhdGljIGRpc3BhdGNoX3F1ZXVl
X3QgZ2xvYmFsTG9hZGVyRGVsZWdhdGVRdWV1ZSgpCiB9CiAjZW5kaWYKIAorY2xhc3MgTWVkaWFQ
bGF5ZXJGYWN0b3J5QVZGb3VuZGF0aW9uQ0YgOiBwdWJsaWMgTWVkaWFQbGF5ZXJGYWN0b3J5IHsK
K3B1YmxpYzoKKyAgICBTdHJpbmcgaWRlbnRpZmllcigpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIE1l
ZGlhUGxheWVyRW5naW5lSWRlbnRpZmllcnM6OmF2Rm91bmRhdGlvbk1lZGlhU3RyZWFtSWRlbnRp
ZmllcigpOyB9OworCisgICAgc3RkOjp1bmlxdWVfcHRyPE1lZGlhUGxheWVyUHJpdmF0ZUludGVy
ZmFjZT4gY3JlYXRlTWVkaWFFbmdpbmVQbGF5ZXIoTWVkaWFQbGF5ZXIqIHBsYXllcikgY29uc3Qg
ZmluYWwKKyAgICB7CisgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPE1lZGlhUGxheWVyUHJpdmF0
ZUFWRm91bmRhdGlvbkNGPihwbGF5ZXIpOworICAgIH0KKworICAgIHZvaWQgZ2V0U3VwcG9ydGVk
VHlwZXMoSGFzaFNldDxTdHJpbmcsIEFTQ0lJQ2FzZUluc2Vuc2l0aXZlSGFzaD4mIHR5cGVzKSBj
b25zdCBmaW5hbAorICAgIHsKKyAgICAgICAgcmV0dXJuIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91
bmRhdGlvbkNGOjpnZXRTdXBwb3J0ZWRUeXBlcyh0eXBlcyk7CisgICAgfQorCisgICAgTWVkaWFQ
bGF5ZXI6OlN1cHBvcnRzVHlwZSBzdXBwb3J0c1R5cGVBbmRDb2RlY3MoY29uc3QgTWVkaWFFbmdp
bmVTdXBwb3J0UGFyYW1ldGVycyYgcGFyYW1ldGVycykgY29uc3QgZmluYWwKKyAgICB7CisgICAg
ICAgIHJldHVybiBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25DRjo6c3VwcG9ydHNUeXBl
KHBhcmFtZXRlcnMpOworICAgIH0KKworICAgIGJvb2wgc3VwcG9ydHNLZXlTeXN0ZW0oY29uc3Qg
U3RyaW5nJiBrZXlTeXN0ZW0sIGNvbnN0IFN0cmluZyYgbWltZVR5cGUpIGNvbnN0IGZpbmFsCisg
ICAgeworICAgICAgICByZXR1cm4gTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uQ0Y6OnN1
cHBvcnRzS2V5U3lzdGVtKGtleVN5c3RlbSwgbWltZVR5cGUpOworICAgIH0KK307CisKIHZvaWQg
TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uQ0Y6OnJlZ2lzdGVyTWVkaWFFbmdpbmUoTWVk
aWFFbmdpbmVSZWdpc3RyYXIgcmVnaXN0cmFyKQogewotICAgIGlmIChpc0F2YWlsYWJsZSgpKQot
ICAgICAgICByZWdpc3RyYXIoW10oTWVkaWFQbGF5ZXIqIHBsYXllcikgeyByZXR1cm4gbWFrZVVu
aXF1ZTxNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25DRj4ocGxheWVyKTsgfSwKLSAgICAg
ICAgICAgIGdldFN1cHBvcnRlZFR5cGVzLCBzdXBwb3J0c1R5cGUsIDAsIDAsIDAsIHN1cHBvcnRz
S2V5U3lzdGVtKTsKKyAgICBpZiAoIWlzQXZhaWxhYmxlKCkpCisgICAgICAgIHJldHVybjsKKwor
ICAgIHJlZ2lzdHJhcihtYWtlVW5pcXVlPE1lZGlhUGxheWVyRmFjdG9yeUFWRm91bmRhdGlvbkNG
PigpKTsKIH0KIAogTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uQ0Y6Ok1lZGlhUGxheWVy
UHJpdmF0ZUFWRm91bmRhdGlvbkNGKE1lZGlhUGxheWVyKiBwbGF5ZXIpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBs
YXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25P
YmpDLmgKaW5kZXggZTk4ZDhlYTkwMDA0NzE4Y2ZjOTA0NGEwOTgzNmFmMGI5MGUwZmUwMS4uZTBi
ZWUyNDNiOTRiZmU2NDQ0Y2JmNWQ2ZDU5ZWY4NjgwNTczODkzYiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQ
cml2YXRlQVZGb3VuZGF0aW9uT2JqQy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9i
akMuaApAQCAtMTYyLDYgKzE2Miw3IEBAIHB1YmxpYzoKIAogcHJpdmF0ZToKICAgICAvLyBlbmdp
bmUgc3VwcG9ydAorICAgIGZyaWVuZCBjbGFzcyBNZWRpYVBsYXllckZhY3RvcnlBVkZvdW5kYXRp
b25PYmpDOwogICAgIHN0YXRpYyB2b2lkIGdldFN1cHBvcnRlZFR5cGVzKEhhc2hTZXQ8U3RyaW5n
LCBBU0NJSUNhc2VJbnNlbnNpdGl2ZUhhc2g+JiB0eXBlcyk7CiAgICAgc3RhdGljIE1lZGlhUGxh
eWVyOjpTdXBwb3J0c1R5cGUgc3VwcG9ydHNUeXBlKGNvbnN0IE1lZGlhRW5naW5lU3VwcG9ydFBh
cmFtZXRlcnMmKTsKICAgICBzdGF0aWMgYm9vbCBzdXBwb3J0c0tleVN5c3RlbShjb25zdCBTdHJp
bmcmIGtleVN5c3RlbSwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXll
clByaXZhdGVBVkZvdW5kYXRpb25PYmpDLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2Jq
Qy5tbQppbmRleCA1NDEwMzkxMzQxOWVlNWQ0OGU5ZWMxYWNiNjg5MmY5OGRkZTlmM2JkLi4zZjU0
YTU0MzdjMmZmY2I5MzI3Mjk5MDg4YmYxOWNmZmU2N2RmNmVmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclBy
aXZhdGVBVkZvdW5kYXRpb25PYmpDLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9i
akMubW0KQEAgLTUwLDYgKzUwLDcgQEAKICNpbXBvcnQgIkxvZ2dpbmcuaCIKICNpbXBvcnQgIk1l
ZGlhUGxheWJhY2tUYXJnZXRNYWMuaCIKICNpbXBvcnQgIk1lZGlhUGxheWJhY2tUYXJnZXRNb2Nr
LmgiCisjaW1wb3J0ICJNZWRpYVBsYXllckVuZ2luZUlkZW50aWZpZXJzLmgiCiAjaW1wb3J0ICJN
ZWRpYVNlbGVjdGlvbkdyb3VwQVZGT2JqQy5oIgogI2ltcG9ydCAiT3V0T2ZCYW5kVGV4dFRyYWNr
UHJpdmF0ZUFWRi5oIgogI2ltcG9ydCAiUGl4ZWxCdWZmZXJDb25mb3JtZXJDVi5oIgpAQCAtMjcz
LDE0ICsyNzQsNTQgQEAgc3RhdGljIGRpc3BhdGNoX3F1ZXVlX3QgZ2xvYmFsUHVsbERlbGVnYXRl
UXVldWUoKQogfQogI2VuZGlmCiAKK2NsYXNzIE1lZGlhUGxheWVyRmFjdG9yeUFWRm91bmRhdGlv
bk9iakMgOiBwdWJsaWMgTWVkaWFQbGF5ZXJGYWN0b3J5IHsKK3B1YmxpYzoKKyAgICBTdHJpbmcg
aWRlbnRpZmllcigpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIE1lZGlhUGxheWVyRW5naW5lSWRlbnRp
ZmllcnM6OmF2Rm91bmRhdGlvbkVuZ2luZUlkZW50aWZpZXIoKTsgfTsKKworICAgIHN0ZDo6dW5p
cXVlX3B0cjxNZWRpYVBsYXllclByaXZhdGVJbnRlcmZhY2U+IGNyZWF0ZU1lZGlhRW5naW5lUGxh
eWVyKE1lZGlhUGxheWVyKiBwbGF5ZXIpIGNvbnN0IGZpbmFsCisgICAgeworICAgICAgICByZXR1
cm4gbWFrZVVuaXF1ZTxNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDPihwbGF5ZXIp
OworICAgIH0KKworICAgIHZvaWQgZ2V0U3VwcG9ydGVkVHlwZXMoSGFzaFNldDxTdHJpbmcsIEFT
Q0lJQ2FzZUluc2Vuc2l0aXZlSGFzaD4mIHR5cGVzKSBjb25zdCBmaW5hbAorICAgIHsKKyAgICAg
ICAgcmV0dXJuIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OmdldFN1cHBvcnRl
ZFR5cGVzKHR5cGVzKTsKKyAgICB9CisKKyAgICBNZWRpYVBsYXllcjo6U3VwcG9ydHNUeXBlIHN1
cHBvcnRzVHlwZUFuZENvZGVjcyhjb25zdCBNZWRpYUVuZ2luZVN1cHBvcnRQYXJhbWV0ZXJzJiBw
YXJhbWV0ZXJzKSBjb25zdCBmaW5hbAorICAgIHsKKyAgICAgICAgcmV0dXJuIE1lZGlhUGxheWVy
UHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OnN1cHBvcnRzVHlwZShwYXJhbWV0ZXJzKTsKKyAgICB9
CisKKyAgICBIYXNoU2V0PFJlZlB0cjxTZWN1cml0eU9yaWdpbj4+IG9yaWdpbnNJbk1lZGlhQ2Fj
aGUoY29uc3QgU3RyaW5nJiBwYXRoKSBjb25zdCBmaW5hbAorICAgIHsKKyAgICAgICAgcmV0dXJu
IE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6Om9yaWdpbnNJbk1lZGlhQ2FjaGUo
cGF0aCk7CisgICAgfQorCisgICAgdm9pZCBjbGVhck1lZGlhQ2FjaGUoY29uc3QgU3RyaW5nJiBw
YXRoLCBXYWxsVGltZSBtb2RpZmllZFNpbmNlKSBjb25zdCBmaW5hbAorICAgIHsKKyAgICAgICAg
cmV0dXJuIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OmNsZWFyTWVkaWFDYWNo
ZShwYXRoLCBtb2RpZmllZFNpbmNlKTsKKyAgICB9CisKKyAgICB2b2lkIGNsZWFyTWVkaWFDYWNo
ZUZvck9yaWdpbnMoY29uc3QgU3RyaW5nJiBwYXRoLCBjb25zdCBIYXNoU2V0PFJlZlB0cjxTZWN1
cml0eU9yaWdpbj4+JiBvcmlnaW5zKSBjb25zdCBmaW5hbAorICAgIHsKKyAgICAgICAgcmV0dXJu
IE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OmNsZWFyTWVkaWFDYWNoZUZvck9y
aWdpbnMocGF0aCwgb3JpZ2lucyk7CisgICAgfQorCisgICAgYm9vbCBzdXBwb3J0c0tleVN5c3Rl
bShjb25zdCBTdHJpbmcmIGtleVN5c3RlbSwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSkgY29uc3Qg
ZmluYWwKKyAgICB7CisgICAgICAgIHJldHVybiBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRp
b25PYmpDOjpzdXBwb3J0c0tleVN5c3RlbShrZXlTeXN0ZW0sIG1pbWVUeXBlKTsKKyAgICB9Cit9
OworCiB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OnJlZ2lzdGVyTWVk
aWFFbmdpbmUoTWVkaWFFbmdpbmVSZWdpc3RyYXIgcmVnaXN0cmFyKQogewogICAgIGlmICghaXNB
dmFpbGFibGUoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgcmVnaXN0cmFyKFtdKE1lZGlhUGxh
eWVyKiBwbGF5ZXIpIHsgcmV0dXJuIG1ha2VVbmlxdWU8TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3Vu
ZGF0aW9uT2JqQz4ocGxheWVyKTsgfSwKLSAgICAgICAgICAgIGdldFN1cHBvcnRlZFR5cGVzLCBz
dXBwb3J0c1R5cGUsIG9yaWdpbnNJbk1lZGlhQ2FjaGUsIGNsZWFyTWVkaWFDYWNoZSwgY2xlYXJN
ZWRpYUNhY2hlRm9yT3JpZ2lucywgc3VwcG9ydHNLZXlTeXN0ZW0pOwogICAgIEFTU0VSVChBVkFz
c2V0TUlNRVR5cGVDYWNoZTo6c2luZ2xldG9uKCkuaXNBdmFpbGFibGUoKSk7CisKKyAgICByZWdp
c3RyYXIobWFrZVVuaXF1ZTxNZWRpYVBsYXllckZhY3RvcnlBVkZvdW5kYXRpb25PYmpDPigpKTsK
IH0KIAogc3RhdGljIEFWQXNzZXRDYWNoZSAqYXNzZXRDYWNoZUZvclBhdGgoY29uc3QgU3RyaW5n
JiBwYXRoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZm
b3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDLm1tIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQ
bGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDLm1tCmluZGV4IDcxNTI4Yzk5YzBjYzYwN2Qz
OGYyZWYzZTA3Mjg4Y2Y2ZDMzNTFmZDYuLjY1NjE3MDEyMjBiMDU0MWM1M2M0Yjg2ZGI3NGY4Mjdm
YjAwZGFmZjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2
Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQy5tbQor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9N
ZWRpYVBsYXllclByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMubW0KQEAgLTM0LDYgKzM0LDcgQEAK
ICNpbXBvcnQgIkNETVNlc3Npb25BVlN0cmVhbVNlc3Npb24uaCIKICNpbXBvcnQgIkdyYXBoaWNz
Q29udGV4dENHLmgiCiAjaW1wb3J0ICJMb2dnaW5nLmgiCisjaW1wb3J0ICJNZWRpYVBsYXllckVu
Z2luZUlkZW50aWZpZXJzLmgiCiAjaW1wb3J0ICJNZWRpYVNvdXJjZVByaXZhdGVBVkZPYmpDLmgi
CiAjaW1wb3J0ICJNZWRpYVNvdXJjZVByaXZhdGVDbGllbnQuaCIKICNpbXBvcnQgIlBpeGVsQnVm
ZmVyQ29uZm9ybWVyQ1YuaCIKQEAgLTE5NiwxNCArMTk3LDM0IEBAIE1lZGlhUGxheWVyUHJpdmF0
ZU1lZGlhU291cmNlQVZGT2JqQzo6fk1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2Jq
QygpCiAjcHJhZ21hIG1hcmsgLQogI3ByYWdtYSBtYXJrIE1lZGlhUGxheWVyIEZhY3RvcnkgTWV0
aG9kcwogCitjbGFzcyBNZWRpYVBsYXllckZhY3RvcnlNZWRpYVNvdXJjZUFWRk9iakMgOiBwdWJs
aWMgTWVkaWFQbGF5ZXJGYWN0b3J5IHsKK3B1YmxpYzoKKyAgICBTdHJpbmcgaWRlbnRpZmllcigp
IGNvbnN0IGZpbmFsIHsgcmV0dXJuIE1lZGlhUGxheWVyRW5naW5lSWRlbnRpZmllcnM6OmF2Rm91
bmRhdGlvbk1TRUVuZ2luZUlkZW50aWZpZXIoKTsgfTsKKworICAgIHN0ZDo6dW5pcXVlX3B0cjxN
ZWRpYVBsYXllclByaXZhdGVJbnRlcmZhY2U+IGNyZWF0ZU1lZGlhRW5naW5lUGxheWVyKE1lZGlh
UGxheWVyKiBwbGF5ZXIpIGNvbnN0IGZpbmFsCisgICAgeworICAgICAgICByZXR1cm4gbWFrZVVu
aXF1ZTxNZWRpYVBsYXllclByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakM+KHBsYXllcik7ICAgICAg
ICAKKyAgICB9CisKKyAgICB2b2lkIGdldFN1cHBvcnRlZFR5cGVzKEhhc2hTZXQ8U3RyaW5nLCBB
U0NJSUNhc2VJbnNlbnNpdGl2ZUhhc2g+JiB0eXBlcykgY29uc3QgZmluYWwKKyAgICB7CisgICAg
ICAgIHJldHVybiBNZWRpYVBsYXllclByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakM6OmdldFN1cHBv
cnRlZFR5cGVzKHR5cGVzKTsKKyAgICB9CisKKyAgICBNZWRpYVBsYXllcjo6U3VwcG9ydHNUeXBl
IHN1cHBvcnRzVHlwZUFuZENvZGVjcyhjb25zdCBNZWRpYUVuZ2luZVN1cHBvcnRQYXJhbWV0ZXJz
JiBwYXJhbWV0ZXJzKSBjb25zdCBmaW5hbAorICAgIHsKKyAgICAgICAgcmV0dXJuIE1lZGlhUGxh
eWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQzo6c3VwcG9ydHNUeXBlKHBhcmFtZXRlcnMpOwor
ICAgIH0KK307CisKIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDOjpy
ZWdpc3Rlck1lZGlhRW5naW5lKE1lZGlhRW5naW5lUmVnaXN0cmFyIHJlZ2lzdHJhcikKIHsKICAg
ICBpZiAoIWlzQXZhaWxhYmxlKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIHJlZ2lzdHJhcihb
XShNZWRpYVBsYXllciogcGxheWVyKSB7IHJldHVybiBtYWtlVW5pcXVlPE1lZGlhUGxheWVyUHJp
dmF0ZU1lZGlhU291cmNlQVZGT2JqQz4ocGxheWVyKTsgfSwKLSAgICAgICAgZ2V0U3VwcG9ydGVk
VHlwZXMsIHN1cHBvcnRzVHlwZSwgMCwgMCwgMCwgMCk7CiAgICAgQVNTRVJUKEFWQXNzZXRNSU1F
VHlwZUNhY2hlOjpzaW5nbGV0b24oKS5pc0F2YWlsYWJsZSgpKTsKKworICAgIHJlZ2lzdHJhciht
YWtlVW5pcXVlPE1lZGlhUGxheWVyRmFjdG9yeU1lZGlhU291cmNlQVZGT2JqQz4oKSk7CiB9CiAK
IGJvb2wgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDOjppc0F2YWlsYWJsZSgp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRp
b24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakMubW0gYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclBy
aXZhdGVNZWRpYVN0cmVhbUFWRk9iakMubW0KaW5kZXggNjMxNDgxNGJjODhmYzljZjdlYmJjZTk0
ZmM4ZTcxOTFkZjNmNDU0Zi4uMTc5YWVjY2UwNmY4MDI5ZjI0ZDNhMzQyYmMwMTAwMjBkMjM0NTM2
OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0
aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDLm1tCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxh
eWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQy5tbQpAQCAtMzEsNiArMzEsNyBAQAogI2ltcG9y
dCAiQXVkaW9UcmFja1ByaXZhdGVNZWRpYVN0cmVhbUNvY29hLmgiCiAjaW1wb3J0ICJHcmFwaGlj
c0NvbnRleHRDRy5oIgogI2ltcG9ydCAiTG9nZ2luZy5oIgorI2ltcG9ydCAiTWVkaWFQbGF5ZXJF
bmdpbmVJZGVudGlmaWVycy5oIgogI2ltcG9ydCAiTWVkaWFTdHJlYW1Qcml2YXRlLmgiCiAjaW1w
b3J0ICJQaXhlbEJ1ZmZlckNvbmZvcm1lckNWLmgiCiAjaW1wb3J0ICJWaWRlb0Z1bGxzY3JlZW5M
YXllck1hbmFnZXJPYmpDLmgiCkBAIC0yMjAsMTEgKzIyMSwzMiBAQCBNZWRpYVBsYXllclByaXZh
dGVNZWRpYVN0cmVhbUFWRk9iakM6On5NZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9i
akMoKQogI3ByYWdtYSBtYXJrIC0KICNwcmFnbWEgbWFyayBNZWRpYVBsYXllciBGYWN0b3J5IE1l
dGhvZHMKIAorY2xhc3MgTWVkaWFQbGF5ZXJGYWN0b3J5TWVkaWFTdHJlYW1BVkZPYmpDIDogcHVi
bGljIE1lZGlhUGxheWVyRmFjdG9yeSB7CitwdWJsaWM6CisgICAgU3RyaW5nIGlkZW50aWZpZXIo
KSBjb25zdCBmaW5hbCB7IHJldHVybiBNZWRpYVBsYXllckVuZ2luZUlkZW50aWZpZXJzOjphdkZv
dW5kYXRpb25NZWRpYVN0cmVhbUVuZ2luZUlkZW50aWZpZXIoKTsgfTsKKworICAgIHN0ZDo6dW5p
cXVlX3B0cjxNZWRpYVBsYXllclByaXZhdGVJbnRlcmZhY2U+IGNyZWF0ZU1lZGlhRW5naW5lUGxh
eWVyKE1lZGlhUGxheWVyKiBwbGF5ZXIpIGNvbnN0IGZpbmFsCisgICAgeworICAgICAgICByZXR1
cm4gbWFrZVVuaXF1ZTxNZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakM+KHBsYXll
cik7CisgICAgfQorCisgICAgdm9pZCBnZXRTdXBwb3J0ZWRUeXBlcyhIYXNoU2V0PFN0cmluZywg
QVNDSUlDYXNlSW5zZW5zaXRpdmVIYXNoPiYgdHlwZXMpIGNvbnN0IGZpbmFsCisgICAgeworICAg
ICAgICByZXR1cm4gTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDOjpnZXRTdXBw
b3J0ZWRUeXBlcyh0eXBlcyk7CisgICAgfQorCisgICAgTWVkaWFQbGF5ZXI6OlN1cHBvcnRzVHlw
ZSBzdXBwb3J0c1R5cGVBbmRDb2RlY3MoY29uc3QgTWVkaWFFbmdpbmVTdXBwb3J0UGFyYW1ldGVy
cyYgcGFyYW1ldGVycykgY29uc3QgZmluYWwKKyAgICB7CisgICAgICAgIHJldHVybiBNZWRpYVBs
YXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakM6OnN1cHBvcnRzVHlwZShwYXJhbWV0ZXJzKTsK
KyAgICB9Cit9OworCiB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQzo6
cmVnaXN0ZXJNZWRpYUVuZ2luZShNZWRpYUVuZ2luZVJlZ2lzdHJhciByZWdpc3RyYXIpCiB7Ci0g
ICAgaWYgKGlzQXZhaWxhYmxlKCkpCi0gICAgICAgIHJlZ2lzdHJhcihbXShNZWRpYVBsYXllciog
cGxheWVyKSB7IHJldHVybiBtYWtlVW5pcXVlPE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFt
QVZGT2JqQz4ocGxheWVyKTsgfSwgZ2V0U3VwcG9ydGVkVHlwZXMsCi0gICAgICAgICAgICBzdXBw
b3J0c1R5cGUsIDAsIDAsIDAsIDApOworICAgIGlmICghaXNBdmFpbGFibGUoKSkKKyAgICAgICAg
cmV0dXJuOworCisgICAgcmVnaXN0cmFyKG1ha2VVbmlxdWU8TWVkaWFQbGF5ZXJGYWN0b3J5TWVk
aWFTdHJlYW1BVkZPYmpDPigpKTsKIH0KIAogYm9vbCBNZWRpYVBsYXllclByaXZhdGVNZWRpYVN0
cmVhbUFWRk9iakM6OmlzQXZhaWxhYmxlKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVy
UHJpdmF0ZUdTdHJlYW1lci5jcHAKaW5kZXggMDEyN2M1N2QxYWI4NTFmM2MyNDc2OGUwYTU1NzFh
OGZmM2ZhZTZlZS4uYzc3MjEyMDgxMjE0NjVlYzg4Mzc5NTdhYTA0M2U5OGZlOTA2YjI5MCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlh
UGxheWVyUHJpdmF0ZUdTdHJlYW1lci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5jcHAKQEAgLTM3
LDYgKzM3LDcgQEAKICNpbmNsdWRlICJJbnRSZWN0LmgiCiAjaW5jbHVkZSAiTG9nZ2luZy5oIgog
I2luY2x1ZGUgIk1lZGlhUGxheWVyLmgiCisjaW5jbHVkZSAiTWVkaWFQbGF5ZXJFbmdpbmVJZGVu
dGlmaWVycy5oIgogI2luY2x1ZGUgIk1lZGlhUGxheWVyUmVxdWVzdEluc3RhbGxNaXNzaW5nUGx1
Z2luc0NhbGxiYWNrLmgiCiAjaW5jbHVkZSAiTUlNRVR5cGVSZWdpc3RyeS5oIgogI2luY2x1ZGUg
Ik5vdEltcGxlbWVudGVkLmgiCkBAIC00NjQsMTQgKzQ2NSwzNyBAQCBib29sIE1lZGlhUGxheWVy
UHJpdmF0ZUdTdHJlYW1lcjo6aXNBdmFpbGFibGUoKQogICAgIHJldHVybiBmYWN0b3J5OwogfQog
CitjbGFzcyBNZWRpYVBsYXllckZhY3RvcnlHU3RyZWFtZXIgOiBwdWJsaWMgTWVkaWFQbGF5ZXJG
YWN0b3J5IHsKK3B1YmxpYzoKKyAgICBTdHJpbmcgaWRlbnRpZmllcigpIGNvbnN0IGZpbmFsIHsg
cmV0dXJuIE1lZGlhUGxheWVyRW5naW5lSWRlbnRpZmllcnM6OkdTdHJlYW1lck1lZGlhRW5naW5l
SWRlbnRpZmllcigpOyB9OworCisgICAgc3RkOjp1bmlxdWVfcHRyPE1lZGlhUGxheWVyUHJpdmF0
ZUludGVyZmFjZT4gY3JlYXRlTWVkaWFFbmdpbmVQbGF5ZXIoTWVkaWFQbGF5ZXIqIHBsYXllcikg
Y29uc3QgZmluYWwKKyAgICB7CisgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPE1lZGlhUGxheWVy
UHJpdmF0ZUdTdHJlYW1lcj4ocGxheWVyKTsKKyAgICB9CisKKyAgICB2b2lkIGdldFN1cHBvcnRl
ZFR5cGVzKEhhc2hTZXQ8U3RyaW5nLCBBU0NJSUNhc2VJbnNlbnNpdGl2ZUhhc2g+JiB0eXBlcykg
Y29uc3QgZmluYWwKKyAgICB7CisgICAgICAgIHJldHVybiBNZWRpYVBsYXllclByaXZhdGVHU3Ry
ZWFtZXI6OmdldFN1cHBvcnRlZFR5cGVzKHR5cGVzKTsKKyAgICB9CisKKyAgICBNZWRpYVBsYXll
cjo6U3VwcG9ydHNUeXBlIHN1cHBvcnRzVHlwZUFuZENvZGVjcyhjb25zdCBNZWRpYUVuZ2luZVN1
cHBvcnRQYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzKSBjb25zdCBmaW5hbAorICAgIHsKKyAgICAgICAg
cmV0dXJuIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6c3VwcG9ydHNUeXBlKHBhcmFtZXRl
cnMpOworICAgIH0KKworICAgIGJvb2wgc3VwcG9ydHNLZXlTeXN0ZW0oY29uc3QgU3RyaW5nJiBr
ZXlTeXN0ZW0sIGNvbnN0IFN0cmluZyYgbWltZVR5cGUpIGNvbnN0IGZpbmFsCisgICAgeworICAg
ICAgICByZXR1cm4gTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpzdXBwb3J0c0tleVN5c3Rl
bShrZXlTeXN0ZW0sIG1pbWVUeXBlKTsKKyAgICB9Cit9OworCiB2b2lkIE1lZGlhUGxheWVyUHJp
dmF0ZUdTdHJlYW1lcjo6cmVnaXN0ZXJNZWRpYUVuZ2luZShNZWRpYUVuZ2luZVJlZ2lzdHJhciBy
ZWdpc3RyYXIpCiB7CiAgICAgaW5pdGlhbGl6ZURlYnVnQ2F0ZWdvcnkoKTsKIAotICAgIGlmIChp
c0F2YWlsYWJsZSgpKSB7Ci0gICAgICAgIHJlZ2lzdHJhcihbXShNZWRpYVBsYXllciogcGxheWVy
KSB7IHJldHVybiBtYWtlVW5pcXVlPE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcj4ocGxheWVy
KTsgfSwKLSAgICAgICAgICAgIGdldFN1cHBvcnRlZFR5cGVzLCBzdXBwb3J0c1R5cGUsIG51bGxw
dHIsIG51bGxwdHIsIG51bGxwdHIsIHN1cHBvcnRzS2V5U3lzdGVtKTsKLSAgICB9CisgICAgaWYg
KGlzQXZhaWxhYmxlKCkpCisgICAgICAgIHJlZ2lzdHJhcihtYWtlVW5pcXVlPE1lZGlhUGxheWVy
RmFjdG9yeUdTdHJlYW1lcj4oKSk7CiB9CiAKIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVh
bWVyOjpsb2FkRnVsbChjb25zdCBTdHJpbmcmIHVybFN0cmluZywgY29uc3QgU3RyaW5nJiBwaXBl
bGluZU5hbWUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9n
c3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmgK
aW5kZXggMTUyYzA5MzVkYjcyOGI2MWNhYmYwM2FmMWJkODkxNTY2MDQxYjExMy4uNDJmZTJlYTk3
MDE3Y2QwMjNmNTZhZTJjM2Y4ODAwODMwNjY0NzJjZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1l
ci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRp
YVBsYXllclByaXZhdGVHU3RyZWFtZXIuaApAQCAtMzk0LDYgKzM5NCw3IEBAIHByaXZhdGU6CiAg
ICAgR3N0RWxlbWVudCogY3JlYXRlQXVkaW9TaW5rKCk7CiAgICAgR3N0RWxlbWVudCogYXVkaW9T
aW5rKCkgY29uc3Q7CiAKKyAgICBmcmllbmQgY2xhc3MgTWVkaWFQbGF5ZXJGYWN0b3J5R1N0cmVh
bWVyOwogICAgIHN0YXRpYyB2b2lkIGdldFN1cHBvcnRlZFR5cGVzKEhhc2hTZXQ8U3RyaW5nLCBB
U0NJSUNhc2VJbnNlbnNpdGl2ZUhhc2g+Jik7CiAgICAgc3RhdGljIE1lZGlhUGxheWVyOjpTdXBw
b3J0c1R5cGUgc3VwcG9ydHNUeXBlKGNvbnN0IE1lZGlhRW5naW5lU3VwcG9ydFBhcmFtZXRlcnMm
KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVh
bWVyL21zZS9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJNU0UuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL21zZS9NZWRpYVBsYXllclByaXZhdGVHU3Ry
ZWFtZXJNU0UuY3BwCmluZGV4IGRjMjQ1YjQ3ZGUzZGU3MmZhYzIzNjcyZTVmNmVmZDRiMzc2Mjli
NGIuLjdjMWU1MjJlMDY4MGE3Mjc3Yzc3NTZiMTcyYzBiYWQ1NmExZWQ3NDYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9tc2UvTWVkaWFQbGF5
ZXJQcml2YXRlR1N0cmVhbWVyTVNFLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9nc3RyZWFtZXIvbXNlL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lck1TRS5jcHAK
QEAgLTM2LDYgKzM2LDcgQEAKICNpbmNsdWRlICJNSU1FVHlwZVJlZ2lzdHJ5LmgiCiAjaW5jbHVk
ZSAiTWVkaWFEZXNjcmlwdGlvbi5oIgogI2luY2x1ZGUgIk1lZGlhUGxheWVyLmgiCisjaW5jbHVk
ZSAiTWVkaWFQbGF5ZXJFbmdpbmVJZGVudGlmaWVycy5oIgogI2luY2x1ZGUgIk5vdEltcGxlbWVu
dGVkLmgiCiAjaW5jbHVkZSAiUGxheWJhY2tQaXBlbGluZS5oIgogI2luY2x1ZGUgIlNvdXJjZUJ1
ZmZlclByaXZhdGVHU3RyZWFtZXIuaCIKQEAgLTcyLDE0ICs3MywzNyBAQCBHU1RfREVCVUdfQ0FU
RUdPUlkod2Via2l0X21zZV9kZWJ1Zyk7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorY2xhc3Mg
TWVkaWFQbGF5ZXJGYWN0b3J5R1N0cmVhbWVyTVNFIDogcHVibGljIE1lZGlhUGxheWVyRmFjdG9y
eSB7CitwdWJsaWM6CisgICAgU3RyaW5nIGlkZW50aWZpZXIoKSBjb25zdCBmaW5hbCB7IHJldHVy
biBNZWRpYVBsYXllckVuZ2luZUlkZW50aWZpZXJzOjpHU3RyZWFtZXJNU0VNZWRpYUVuZ2luZUlk
ZW50aWZpZXIoKTsgfTsKKworICAgIHN0ZDo6dW5pcXVlX3B0cjxNZWRpYVBsYXllclByaXZhdGVJ
bnRlcmZhY2U+IGNyZWF0ZU1lZGlhRW5naW5lUGxheWVyKE1lZGlhUGxheWVyKiBwbGF5ZXIpIGNv
bnN0IGZpbmFsCisgICAgeworICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxNZWRpYVBsYXllclBy
aXZhdGVHU3RyZWFtZXJNU0U+KHBsYXllcik7CisgICAgfQorCisgICAgdm9pZCBnZXRTdXBwb3J0
ZWRUeXBlcyhIYXNoU2V0PFN0cmluZywgQVNDSUlDYXNlSW5zZW5zaXRpdmVIYXNoPiYgdHlwZXMp
IGNvbnN0IGZpbmFsCisgICAgeworICAgICAgICByZXR1cm4gTWVkaWFQbGF5ZXJQcml2YXRlR1N0
cmVhbWVyTVNFOjpnZXRTdXBwb3J0ZWRUeXBlcyh0eXBlcyk7CisgICAgfQorCisgICAgTWVkaWFQ
bGF5ZXI6OlN1cHBvcnRzVHlwZSBzdXBwb3J0c1R5cGVBbmRDb2RlY3MoY29uc3QgTWVkaWFFbmdp
bmVTdXBwb3J0UGFyYW1ldGVycyYgcGFyYW1ldGVycykgY29uc3QgZmluYWwKKyAgICB7CisgICAg
ICAgIHJldHVybiBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJNU0U6OnN1cHBvcnRzVHlwZShw
YXJhbWV0ZXJzKTsKKyAgICB9CisKKyAgICBib29sIHN1cHBvcnRzS2V5U3lzdGVtKGNvbnN0IFN0
cmluZyYga2V5U3lzdGVtLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlKSBjb25zdCBmaW5hbAorICAg
IHsKKyAgICAgICAgcmV0dXJuIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lck1TRTo6c3VwcG9y
dHNLZXlTeXN0ZW0oa2V5U3lzdGVtLCBtaW1lVHlwZSk7CisgICAgfQorfTsKKwogdm9pZCBNZWRp
YVBsYXllclByaXZhdGVHU3RyZWFtZXJNU0U6OnJlZ2lzdGVyTWVkaWFFbmdpbmUoTWVkaWFFbmdp
bmVSZWdpc3RyYXIgcmVnaXN0cmFyKQogewogICAgIGluaXRpYWxpemVHU3RyZWFtZXJBbmRSZWdp
c3RlcldlYktpdEVsZW1lbnRzKCk7CiAgICAgR1NUX0RFQlVHX0NBVEVHT1JZX0lOSVQod2Via2l0
X21zZV9kZWJ1ZywgIndlYmtpdG1zZSIsIDAsICJXZWJLaXQgTVNFIG1lZGlhIHBsYXllciIpOwot
ICAgIGlmIChpc0F2YWlsYWJsZSgpKSB7Ci0gICAgICAgIHJlZ2lzdHJhcihbXShNZWRpYVBsYXll
ciogcGxheWVyKSB7IHJldHVybiBtYWtlVW5pcXVlPE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1l
ck1TRT4ocGxheWVyKTsgfSwKLSAgICAgICAgICAgIGdldFN1cHBvcnRlZFR5cGVzLCBzdXBwb3J0
c1R5cGUsIG51bGxwdHIsIG51bGxwdHIsIG51bGxwdHIsIHN1cHBvcnRzS2V5U3lzdGVtKTsKLSAg
ICB9CisgICAgaWYgKGlzQXZhaWxhYmxlKCkpCisgICAgICAgIHJlZ2lzdHJhcihtYWtlVW5pcXVl
PE1lZGlhUGxheWVyRmFjdG9yeUdTdHJlYW1lck1TRT4oKSk7CiB9CiAKIE1lZGlhUGxheWVyUHJp
dmF0ZUdTdHJlYW1lck1TRTo6TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyTVNFKE1lZGlhUGxh
eWVyKiBwbGF5ZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9nc3RyZWFtZXIvbXNlL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lck1TRS5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL21zZS9NZWRpYVBsYXllclByaXZh
dGVHU3RyZWFtZXJNU0UuaAppbmRleCA5YjMzMzA1ZjdmMTE2ZGFjOTFjNjQxYzQ4NDU5M2JlN2E4
MzA3MzVmLi41ZDEwMTNmY2JlZjA1NzkzNDgwYmIzOGVkZWZlNGI2NGYwYWNmNDJjIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvbXNlL01lZGlh
UGxheWVyUHJpdmF0ZUdTdHJlYW1lck1TRS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2dzdHJlYW1lci9tc2UvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyTVNFLmgK
QEAgLTg1LDYgKzg1LDcgQEAgcHVibGljOgogICAgIHZvaWQgdW5ibG9ja0R1cmF0aW9uQ2hhbmdl
cygpOwogCiBwcml2YXRlOgorICAgIGZyaWVuZCBjbGFzcyBNZWRpYVBsYXllckZhY3RvcnlHU3Ry
ZWFtZXJNU0U7CiAgICAgc3RhdGljIHZvaWQgZ2V0U3VwcG9ydGVkVHlwZXMoSGFzaFNldDxTdHJp
bmcsIEFTQ0lJQ2FzZUluc2Vuc2l0aXZlSGFzaD4mKTsKICAgICBzdGF0aWMgTWVkaWFQbGF5ZXI6
OlN1cHBvcnRzVHlwZSBzdXBwb3J0c1R5cGUoY29uc3QgTWVkaWFFbmdpbmVTdXBwb3J0UGFyYW1l
dGVycyYpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9o
b2xlcHVuY2gvTWVkaWFQbGF5ZXJQcml2YXRlSG9sZVB1bmNoLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2hvbGVwdW5jaC9NZWRpYVBsYXllclByaXZhdGVIb2xlUHVuY2gu
Y3BwCmluZGV4IDBmMDhjMTlkYmRiZTY5YjA2ZjdiNzU1M2Y4YWI0OTdkNDdlMzc3YTkuLjMwYjEz
ZThhM2Q5ZWNlYjQzYWMzYmM4NzU2ZGI0NTMwMTk5NzI5Y2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2hvbGVwdW5jaC9NZWRpYVBsYXllclByaXZhdGVIb2xl
UHVuY2guY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2hvbGVwdW5j
aC9NZWRpYVBsYXllclByaXZhdGVIb2xlUHVuY2guY3BwCkBAIC0yMyw2ICsyMyw3IEBACiAKICNp
ZiBVU0UoRVhURVJOQUxfSE9MRVBVTkNIKQogI2luY2x1ZGUgIk1lZGlhUGxheWVyLmgiCisjaW5j
bHVkZSAiTWVkaWFQbGF5ZXJFbmdpbmVJZGVudGlmaWVycy5oIgogI2luY2x1ZGUgIlRleHR1cmVN
YXBwZXJQbGF0Zm9ybUxheWVyQnVmZmVyLmgiCiAjaW5jbHVkZSAiVGV4dHVyZU1hcHBlclBsYXRm
b3JtTGF5ZXJQcm94eS5oIgogCkBAIC0xMzksMTAgKzE0MCwyOSBAQCBNZWRpYVBsYXllcjo6U3Vw
cG9ydHNUeXBlIE1lZGlhUGxheWVyUHJpdmF0ZUhvbGVQdW5jaDo6c3VwcG9ydHNUeXBlKGNvbnN0
IE1lZGlhRQogICAgIHJldHVybiBNZWRpYVBsYXllcjo6SXNOb3RTdXBwb3J0ZWQ7CiB9CiAKK2Ns
YXNzIE1lZGlhUGxheWVyRmFjdG9yeUhvbGVQdW5jaCA6IHB1YmxpYyBNZWRpYVBsYXllckZhY3Rv
cnkgeworcHVibGljOgorICAgIFN0cmluZyBpZGVudGlmaWVyKCkgY29uc3QgZmluYWwgeyByZXR1
cm4gTWVkaWFQbGF5ZXJFbmdpbmVJZGVudGlmaWVyczo6aG9sZVB1bmNoTWVkaWFFbmdpbmVJZGVu
dGlmaWVyKCk7IH07CisKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8TWVkaWFQbGF5ZXJQcml2YXRlSW50
ZXJmYWNlPiBjcmVhdGVNZWRpYUVuZ2luZVBsYXllcihNZWRpYVBsYXllciogcGxheWVyKSBjb25z
dCBmaW5hbAorICAgIHsKKyAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8TWVkaWFQbGF5ZXJQcml2
YXRlSG9sZVB1bmNoPihwbGF5ZXIpOworICAgIH0KKworICAgIHZvaWQgZ2V0U3VwcG9ydGVkVHlw
ZXMoSGFzaFNldDxTdHJpbmcsIEFTQ0lJQ2FzZUluc2Vuc2l0aXZlSGFzaD4mIHR5cGVzKSBjb25z
dCBmaW5hbAorICAgIHsKKyAgICAgICAgcmV0dXJuIE1lZGlhUGxheWVyUHJpdmF0ZUhvbGVQdW5j
aDo6Z2V0U3VwcG9ydGVkVHlwZXModHlwZXMpOworICAgIH0KKworICAgIE1lZGlhUGxheWVyOjpT
dXBwb3J0c1R5cGUgc3VwcG9ydHNUeXBlQW5kQ29kZWNzKGNvbnN0IE1lZGlhRW5naW5lU3VwcG9y
dFBhcmFtZXRlcnMmIHBhcmFtZXRlcnMpIGNvbnN0IGZpbmFsCisgICAgeworICAgICAgICByZXR1
cm4gTWVkaWFQbGF5ZXJQcml2YXRlSG9sZVB1bmNoOjpzdXBwb3J0c1R5cGUocGFyYW1ldGVycyk7
CisgICAgfQorfTsKKwogdm9pZCBNZWRpYVBsYXllclByaXZhdGVIb2xlUHVuY2g6OnJlZ2lzdGVy
TWVkaWFFbmdpbmUoTWVkaWFFbmdpbmVSZWdpc3RyYXIgcmVnaXN0cmFyKQogewotICAgIHJlZ2lz
dHJhcihbXShNZWRpYVBsYXllciogcGxheWVyKSB7IHJldHVybiBtYWtlVW5pcXVlPE1lZGlhUGxh
eWVyUHJpdmF0ZUhvbGVQdW5jaD4ocGxheWVyKTsgfSwKLSAgICAgICAgZ2V0U3VwcG9ydGVkVHlw
ZXMsIHN1cHBvcnRzVHlwZSwgbnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0cik7Cisg
ICAgcmVnaXN0cmFyKG1ha2VVbmlxdWU8TWVkaWFQbGF5ZXJGYWN0b3J5SG9sZVB1bmNoPigpKTsK
IH0KIAogdm9pZCBNZWRpYVBsYXllclByaXZhdGVIb2xlUHVuY2g6Om5vdGlmeVJlYWR5U3RhdGUo
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvaG9sZXB1bmNo
L01lZGlhUGxheWVyUHJpdmF0ZUhvbGVQdW5jaC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvaG9sZXB1bmNoL01lZGlhUGxheWVyUHJpdmF0ZUhvbGVQdW5jaC5oCmluZGV4IDhi
ZjcyMTMxODgxOWM0MDI2N2I3MjFmYTliODJhYzFjZDkyNmY5ZDIuLmNkMzc0ZWVlZmEyMjUyNmM2
MzliZDUxNmRjYjFkMzg4YzA3YzQ5NjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2hvbGVwdW5jaC9NZWRpYVBsYXllclByaXZhdGVIb2xlUHVuY2guaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ob2xlcHVuY2gvTWVkaWFQbGF5ZXJQ
cml2YXRlSG9sZVB1bmNoLmgKQEAgLTk4LDYgKzk4LDcgQEAgcHVibGljOgogI2VuZGlmCiAKIHBy
aXZhdGU6CisgICAgZnJpZW5kIGNsYXNzIE1lZGlhUGxheWVyRmFjdG9yeUhvbGVQdW5jaDsKICAg
ICBzdGF0aWMgdm9pZCBnZXRTdXBwb3J0ZWRUeXBlcyhIYXNoU2V0PFN0cmluZywgQVNDSUlDYXNl
SW5zZW5zaXRpdmVIYXNoPiYpOwogICAgIHN0YXRpYyBNZWRpYVBsYXllcjo6U3VwcG9ydHNUeXBl
IHN1cHBvcnRzVHlwZShjb25zdCBNZWRpYUVuZ2luZVN1cHBvcnRQYXJhbWV0ZXJzJik7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9NZWRpYVBsYXll
clByaXZhdGVNZWRpYUZvdW5kYXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3Mvd2luL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhRm91bmRhdGlvbi5jcHAKaW5kZXggNmQ2
NGFlOWE2ZTNhNDE3ZmIxNGYxMjE2NmY2OGQzYzlhNTUyNjZkZS4uMzk1M2Y2NjBiNGEzZDkxNzIx
ZjcwMDRjMDJiY2E4M2E1ZGMwYTliMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3Mvd2luL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhRm91bmRhdGlvbi5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL01lZGlhUGxheWVyUHJpdmF0
ZU1lZGlhRm91bmRhdGlvbi5jcHAKQEAgLTMyLDYgKzMyLDcgQEAKICNpbmNsdWRlICJHcmFwaGlj
c0NvbnRleHQuaCIKICNpbmNsdWRlICJIV25kREMuaCIKICNpbmNsdWRlICJIb3N0V2luZG93Lmgi
CisjaW5jbHVkZSAiTWVkaWFQbGF5ZXJFbmdpbmVJZGVudGlmaWVycy5oIgogI2luY2x1ZGUgIk5v
dEltcGxlbWVudGVkLmgiCiAjaWYgVVNFKENBSVJPKQogI2luY2x1ZGUgIkNhaXJvT3BlcmF0aW9u
cy5oIgpAQCAtNzksMTIgKzgwLDMwIEBAIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhRm91bmRhdGlv
bjo6fk1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhRm91bmRhdGlvbigpCiAgICAgZW5kU2Vzc2lvbigp
OwogfQogCitjbGFzcyBNZWRpYVBsYXllckZhY3RvcnlNZWRpYUZvdW5kYXRpb24gOiBwdWJsaWMg
TWVkaWFQbGF5ZXJGYWN0b3J5IHsKK3B1YmxpYzoKKyAgICBTdHJpbmcgaWRlbnRpZmllcigpIGNv
bnN0IGZpbmFsIHsgcmV0dXJuIE1lZGlhUGxheWVyRW5naW5lSWRlbnRpZmllcnM6Ok1lZGlhRm91
bmRhdGlvbk1lZGlhRW5naW5lSWRlbnRpZmllcigpOyB9OworCisgICAgc3RkOjp1bmlxdWVfcHRy
PE1lZGlhUGxheWVyUHJpdmF0ZUludGVyZmFjZT4gY3JlYXRlTWVkaWFFbmdpbmVQbGF5ZXIoTWVk
aWFQbGF5ZXIqIHBsYXllcikgY29uc3QgZmluYWwKKyAgICB7CisgICAgICAgIHJldHVybiBtYWtl
VW5pcXVlPE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhRm91bmRhdGlvbj4ocGxheWVyKTsKKyAgICB9
CisKKyAgICB2b2lkIGdldFN1cHBvcnRlZFR5cGVzKEhhc2hTZXQ8U3RyaW5nLCBBU0NJSUNhc2VJ
bnNlbnNpdGl2ZUhhc2g+JiB0eXBlcykgY29uc3QgZmluYWwKKyAgICB7CisgICAgICAgIHJldHVy
biBNZWRpYVBsYXllclByaXZhdGVNZWRpYUZvdW5kYXRpb246OmdldFN1cHBvcnRlZFR5cGVzKHR5
cGVzKTsKKyAgICB9CisKKyAgICBNZWRpYVBsYXllcjo6U3VwcG9ydHNUeXBlIHN1cHBvcnRzVHlw
ZUFuZENvZGVjcyhjb25zdCBNZWRpYUVuZ2luZVN1cHBvcnRQYXJhbWV0ZXJzJiBwYXJhbWV0ZXJz
KSBjb25zdCBmaW5hbAorICAgIHsKKyAgICAgICAgcmV0dXJuIE1lZGlhUGxheWVyUHJpdmF0ZU1l
ZGlhRm91bmRhdGlvbjo6c3VwcG9ydHNUeXBlKHBhcmFtZXRlcnMpOworICAgIH0KK307CisKIHZv
aWQgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFGb3VuZGF0aW9uOjpyZWdpc3Rlck1lZGlhRW5naW5l
KE1lZGlhRW5naW5lUmVnaXN0cmFyIHJlZ2lzdHJhcikKIHsKLSAgICBpZiAoaXNBdmFpbGFibGUo
KSkgewotICAgICAgICByZWdpc3RyYXIoW10oTWVkaWFQbGF5ZXIqIHBsYXllcikgeyByZXR1cm4g
bWFrZVVuaXF1ZTxNZWRpYVBsYXllclByaXZhdGVNZWRpYUZvdW5kYXRpb24+KHBsYXllcik7IH0s
Ci0gICAgICAgICAgICBnZXRTdXBwb3J0ZWRUeXBlcywgc3VwcG9ydHNUeXBlLCAwLCAwLCAwLCAw
KTsKLSAgICB9CisgICAgaWYgKGlzQXZhaWxhYmxlKCkpCisgICAgICAgIHJlZ2lzdHJhcihtYWtl
VW5pcXVlPE1lZGlhUGxheWVyRmFjdG9yeU1lZGlhRm91bmRhdGlvbj4oKSk7CiB9CiAKIGJvb2wg
TWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFGb3VuZGF0aW9uOjppc0F2YWlsYWJsZSgpIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9tZWRpYXNvdXJjZS9Nb2NrTWVkaWFQ
bGF5ZXJNZWRpYVNvdXJjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL21lZGlh
c291cmNlL01vY2tNZWRpYVBsYXllck1lZGlhU291cmNlLmNwcAppbmRleCAzODdhMjFkYWY0NTUy
Mzk2OGFlZTRmNzk0MTlkM2Q4Yjg4NjkwZDdjLi45ZjJmNjc1MzZhNDk2NDhiODdhNmU1MWU1YzVk
Y2UxYmI5MmEyNmYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL21l
ZGlhc291cmNlL01vY2tNZWRpYVBsYXllck1lZGlhU291cmNlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tb2NrL21lZGlhc291cmNlL01vY2tNZWRpYVBsYXllck1lZGlhU291cmNl
LmNwcApAQCAtMzcsMTEgKzM3LDI3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorY2xhc3Mg
TWVkaWFQbGF5ZXJGYWN0b3J5TWVkaWFTb3VyY2VNb2NrIDogcHVibGljIE1lZGlhUGxheWVyRmFj
dG9yeSB7CitwdWJsaWM6CisgICAgU3RyaW5nIGlkZW50aWZpZXIoKSBjb25zdCBmaW5hbCB7IHJl
dHVybiAiTW9ja01lZGlhUGxheWVyTWVkaWFTb3VyY2UiOyB9OworCisgICAgc3RkOjp1bmlxdWVf
cHRyPE1lZGlhUGxheWVyUHJpdmF0ZUludGVyZmFjZT4gY3JlYXRlTWVkaWFFbmdpbmVQbGF5ZXIo
TWVkaWFQbGF5ZXIqIHBsYXllcikgY29uc3QgZmluYWwgeyByZXR1cm4gbWFrZVVuaXF1ZTxNb2Nr
TWVkaWFQbGF5ZXJNZWRpYVNvdXJjZT4ocGxheWVyKTsgfQorCisgICAgdm9pZCBnZXRTdXBwb3J0
ZWRUeXBlcyhIYXNoU2V0PFN0cmluZywgQVNDSUlDYXNlSW5zZW5zaXRpdmVIYXNoPiYgdHlwZXMp
IGNvbnN0IGZpbmFsCisgICAgeworICAgICAgICByZXR1cm4gTW9ja01lZGlhUGxheWVyTWVkaWFT
b3VyY2U6OmdldFN1cHBvcnRlZFR5cGVzKHR5cGVzKTsKKyAgICB9CisKKyAgICBNZWRpYVBsYXll
cjo6U3VwcG9ydHNUeXBlIHN1cHBvcnRzVHlwZUFuZENvZGVjcyhjb25zdCBNZWRpYUVuZ2luZVN1
cHBvcnRQYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzKSBjb25zdCBmaW5hbAorICAgIHsKKyAgICAgICAg
cmV0dXJuIE1vY2tNZWRpYVBsYXllck1lZGlhU291cmNlOjpzdXBwb3J0c1R5cGUocGFyYW1ldGVy
cyk7CisgICAgfQorfTsKKwogLy8gTWVkaWFQbGF5ZXIgRW5pZ25lIFN1cHBvcnQKIHZvaWQgTW9j
a01lZGlhUGxheWVyTWVkaWFTb3VyY2U6OnJlZ2lzdGVyTWVkaWFFbmdpbmUoTWVkaWFFbmdpbmVS
ZWdpc3RyYXIgcmVnaXN0cmFyKQogewotICAgIHJlZ2lzdHJhcihbXSAoTWVkaWFQbGF5ZXIqIHBs
YXllcikgeyByZXR1cm4gbWFrZVVuaXF1ZTxNb2NrTWVkaWFQbGF5ZXJNZWRpYVNvdXJjZT4ocGxh
eWVyKTsgfSwgZ2V0U3VwcG9ydGVkVHlwZXMsCi0gICAgICAgIHN1cHBvcnRzVHlwZSwgMCwgMCwg
MCwgMCk7CisgICAgcmVnaXN0cmFyKG1ha2VVbmlxdWU8TWVkaWFQbGF5ZXJGYWN0b3J5TWVkaWFT
b3VyY2VNb2NrPigpKTsKIH0KIAogLy8gRklYTUU6IFdoYXQgZG9lcyB0aGUgd29yZCAiY2FjaGUi
IG1lYW4gaGVyZT8KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMtaW5w
dXQueGNmaWxlbGlzdCBiL1NvdXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMtaW5wdXQueGNmaWxl
bGlzdAppbmRleCA3ZjA4ZjJiMmYxODU4MmVkNTA0MDMyZGNhY2I1NDc4NmExNjlhZDVmLi4zZWYx
Y2E4OGZmYWVhYTI5ZGNkODNiNzU1YzJiM2JmMjg4ZjBmMmFhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L0Rlcml2ZWRTb3VyY2VzLWlucHV0LnhjZmlsZWxpc3QKKysrIGIvU291cmNlL1dlYktp
dC9EZXJpdmVkU291cmNlcy1pbnB1dC54Y2ZpbGVsaXN0CkBAIC0xNiw2ICsxNiw3IEBAICQoSkFW
QVNDUklQVENPUkVfUFJJVkFURV9IRUFERVJTX0RJUikveHhkLnBsCiAkKFBST0pFQ1RfRElSKS9H
UFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MubWVzc2FnZXMuaW4KICQoUFJPSkVD
VF9ESVIpL0dQVVByb2Nlc3MvR1BVUHJvY2Vzcy5tZXNzYWdlcy5pbgogJChQUk9KRUNUX0RJUikv
R1BVUHJvY2Vzcy9tYWMvY29tLmFwcGxlLldlYktpdC5HUFVQcm9jZXNzLnNiLmluCiskKFBST0pF
Q1RfRElSKS9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5Lm1l
c3NhZ2VzLmluCiAkKFBST0pFQ1RfRElSKS9OZXR3b3JrUHJvY2Vzcy9Db29raWVzL1dlYkNvb2tp
ZU1hbmFnZXIubWVzc2FnZXMuaW4KICQoUFJPSkVDVF9ESVIpL05ldHdvcmtQcm9jZXNzL0N1c3Rv
bVByb3RvY29scy9MZWdhY3lDdXN0b21Qcm90b2NvbE1hbmFnZXIubWVzc2FnZXMuaW4KICQoUFJP
SkVDVF9ESVIpL05ldHdvcmtQcm9jZXNzL0luZGV4ZWREQi9XZWJJREJDb25uZWN0aW9uVG9DbGll
bnQubWVzc2FnZXMuaW4KQEAgLTk3LDYgKzk4LDcgQEAgJChQUk9KRUNUX0RJUikvV2ViUHJvY2Vz
cy9DYWNoZS9XZWJDYWNoZVN0b3JhZ2VDb25uZWN0aW9uLm1lc3NhZ2VzLmluCiAkKFBST0pFQ1Rf
RElSKS9XZWJQcm9jZXNzL0RhdGFiYXNlcy9JbmRleGVkREIvV2ViSURCQ29ubmVjdGlvblRvU2Vy
dmVyLm1lc3NhZ2VzLmluCiAkKFBST0pFQ1RfRElSKS9XZWJQcm9jZXNzL0Z1bGxTY3JlZW4vV2Vi
RnVsbFNjcmVlbk1hbmFnZXIubWVzc2FnZXMuaW4KICQoUFJPSkVDVF9ESVIpL1dlYlByb2Nlc3Mv
R1BVL0dQVVByb2Nlc3NDb25uZWN0aW9uLm1lc3NhZ2VzLmluCiskKFBST0pFQ1RfRElSKS9XZWJQ
cm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVNZWRpYVBsYXllck1hbmFnZXIubWVzc2FnZXMuaW4KICQo
UFJPSkVDVF9ESVIpL1dlYlByb2Nlc3MvR2VvbG9jYXRpb24vV2ViR2VvbG9jYXRpb25NYW5hZ2Vy
Lm1lc3NhZ2VzLmluCiAkKFBST0pFQ1RfRElSKS9XZWJQcm9jZXNzL05ldHdvcmsvTmV0d29ya1By
b2Nlc3NDb25uZWN0aW9uLm1lc3NhZ2VzLmluCiAkKFBST0pFQ1RfRElSKS9XZWJQcm9jZXNzL05l
dHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIubWVzc2FnZXMuaW4KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvRGVyaXZlZFNvdXJjZXMtb3V0cHV0LnhjZmlsZWxpc3QgYi9Tb3VyY2UvV2ViS2l0L0Rl
cml2ZWRTb3VyY2VzLW91dHB1dC54Y2ZpbGVsaXN0CmluZGV4IDNiMWU5NDExNzAzOGJmMGQwNGEw
NzU3ZjVlNmQ4NWUzMzRiZDc1YWUuLmM4YTNiNDk1YzBjZTU1NDEyOTkyMzY4MTEzMjAwZGEyYjk0
MDc5MjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMtb3V0cHV0Lnhj
ZmlsZWxpc3QKKysrIGIvU291cmNlL1dlYktpdC9EZXJpdmVkU291cmNlcy1vdXRwdXQueGNmaWxl
bGlzdApAQCAtMTE0LDYgKzExNCwxMiBAQCAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNv
dXJjZXMvV2ViS2l0Mi9QbHVnaW5Qcm94eU1lc3NhZ2VzUmVwbGllcy5oCiAkKEJVSUxUX1BST0RV
Q1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9SZW1vdGVMYXllclRyZWVEcmF3aW5nQXJl
YVByb3h5TWVzc2FnZVJlY2VpdmVyLmNwcAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRT
b3VyY2VzL1dlYktpdDIvUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWFQcm94eU1lc3NhZ2VzLmgK
ICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQyL1JlbW90ZUxheWVy
VHJlZURyYXdpbmdBcmVhUHJveHlNZXNzYWdlc1JlcGxpZXMuaAorJChCVUlMVF9QUk9EVUNUU19E
SVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIvUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyTWVzc2Fn
ZVJlY2VpdmVyLmNwcAorJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktp
dDIvUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyTWVzc2FnZXMuaAorJChCVUlMVF9QUk9EVUNUU19E
SVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIvUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyTWVzc2Fn
ZXNSZXBsaWVzLmgKKyQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQy
L1JlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5TWVzc2FnZVJlY2VpdmVyLmNwcAorJChCVUlM
VF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIvUmVtb3RlTWVkaWFQbGF5ZXJN
YW5hZ2VyUHJveHlNZXNzYWdlcy5oCiskKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJj
ZXMvV2ViS2l0Mi9SZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eU1lc3NhZ2VzUmVwbGllcy5o
CiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9SZW1vdGVPYmpl
Y3RSZWdpc3RyeU1lc3NhZ2VSZWNlaXZlci5jcHAKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJp
dmVkU291cmNlcy9XZWJLaXQyL1JlbW90ZU9iamVjdFJlZ2lzdHJ5TWVzc2FnZXMuaAogJChCVUlM
VF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIvUmVtb3RlT2JqZWN0UmVnaXN0
cnlNZXNzYWdlc1JlcGxpZXMuaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9EZXJpdmVkU291
cmNlcy5tYWtlIGIvU291cmNlL1dlYktpdC9EZXJpdmVkU291cmNlcy5tYWtlCmluZGV4IGJlNTI1
ZTEzYzU5YmJkMTQ1NmU4ZjBkNDIzYmE2NDQxY2U4YjA4ZGEuLjk2ZjNhMmVjZWYzMTE4Y2UyM2Yz
ODc1MWQ3MmUyYWIwODNjZjRhYzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvRGVyaXZlZFNv
dXJjZXMubWFrZQorKysgYi9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2VzLm1ha2UKQEAgLTI0
LDYgKzI0LDcgQEAgVlBBVEggPSBcCiAgICAgJChXZWJLaXQyKSBcCiAgICAgJChXZWJLaXQyKS9H
UFVQcm9jZXNzIFwKICAgICAkKFdlYktpdDIpL0dQVVByb2Nlc3MvbWFjIFwKKyAgICAkKFdlYktp
dDIpL0dQVVByb2Nlc3MvbWVkaWEgXAogICAgICQoV2ViS2l0MikvTmV0d29ya1Byb2Nlc3MgXAog
ICAgICQoV2ViS2l0MikvTmV0d29ya1Byb2Nlc3MvQ29va2llcyBcCiAgICAgJChXZWJLaXQyKS9O
ZXR3b3JrUHJvY2Vzcy9jYWNoZSBcCkBAIC00OSw2ICs1MCw3IEBAIFZQQVRIID0gXAogICAgICQo
V2ViS2l0MikvV2ViUHJvY2Vzcy9GdWxsU2NyZWVuIFwKICAgICAkKFdlYktpdDIpL1dlYlByb2Nl
c3MvR2VvbG9jYXRpb24gXAogICAgICQoV2ViS2l0MikvV2ViUHJvY2Vzcy9HUFUgXAorICAgICQo
V2ViS2l0MikvV2ViUHJvY2Vzcy9HUFUvbWVkaWEgXAogICAgICQoV2ViS2l0MikvV2ViUHJvY2Vz
cy9JY29uRGF0YWJhc2UgXAogICAgICQoV2ViS2l0MikvV2ViUHJvY2Vzcy9NZWRpYUNhY2hlIFwK
ICAgICAkKFdlYktpdDIpL1dlYlByb2Nlc3MvTWVkaWFTdHJlYW0gXApAQCAtMTM1LDYgKzEzNyw4
IEBAIE1FU1NBR0VfUkVDRUlWRVJTID0gXAogICAgIFBsdWdpblByb2Nlc3NQcm94eSBcCiAgICAg
UGx1Z2luUHJveHkgXAogICAgIFJlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhUHJveHkgXAorICAg
IFJlbW90ZU1lZGlhUGxheWVyTWFuYWdlciBcCisgICAgUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2Vy
UHJveHkgXAogICAgIFJlbW90ZU9iamVjdFJlZ2lzdHJ5IFwKICAgICBSZW1vdGVTY3JvbGxpbmdD
b29yZGluYXRvciBcCiAgICAgUmVtb3RlV2ViSW5zcGVjdG9yUHJveHkgXApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwIGIv
U291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwCmlu
ZGV4IGJkMTM5ZmU1MzMxYmNjZTM2YzMzNDNiMTUyMTdkMDExZjI1MjRjMzguLjQ3YTlhYzNjYzFm
ZDdlYWZlZmRlNmI5NDAzYjBjYWRjYTJiNjljMmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
R1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L0dQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAKQEAgLTM1LDYgKzM1
LDggQEAKICNpbmNsdWRlICJHUFVQcm9jZXNzUHJveHlNZXNzYWdlcy5oIgogI2luY2x1ZGUgIkxv
Z2dpbmcuaCIKICNpbmNsdWRlICJSZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYVByb3h5TWVzc2Fn
ZXMuaCIKKyNpbmNsdWRlICJSZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eS5oIgorI2luY2x1
ZGUgIlJlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5TWVzc2FnZXMuaCIKICNpbmNsdWRlICJS
ZW1vdGVTY3JvbGxpbmdDb29yZGluYXRvclRyYW5zYWN0aW9uLmgiCiAjaW5jbHVkZSAiV2ViQ29y
ZUFyZ3VtZW50Q29kZXJzLmgiCiAjaW5jbHVkZSAiV2ViRXJyb3JzLmgiCkBAIC01Miw2ICs1NCw3
IEBAIEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OkdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3Mo
R1BVUHJvY2VzcyYgZ3B1UHJvY2VzcywgV2ViCiAgICAgOiBtX2Nvbm5lY3Rpb24oSVBDOjpDb25u
ZWN0aW9uOjpjcmVhdGVTZXJ2ZXJDb25uZWN0aW9uKGNvbm5lY3Rpb25JZGVudGlmaWVyLCAqdGhp
cykpCiAgICAgLCBtX2dwdVByb2Nlc3MoZ3B1UHJvY2VzcykKICAgICAsIG1fd2ViUHJvY2Vzc0lk
ZW50aWZpZXIod2ViUHJvY2Vzc0lkZW50aWZpZXIpCisgICAgLCBtX3JlbW90ZU1lZGlhUGxheWVy
TWFuYWdlclByb3h5KG1ha2VVbmlxdWU8UmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHk+KCp0
aGlzKSkKIHsKICAgICBSRUxFQVNFX0FTU0VSVChSdW5Mb29wOjppc01haW4oKSk7CiAgICAgbV9j
b25uZWN0aW9uLT5vcGVuKCk7CkBAIC02MSw2ICs2NCw3IEBAIEdQVUNvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3M6On5HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzKCkKIHsKICAgICBSRUxFQVNFX0FTU0VS
VChSdW5Mb29wOjppc01haW4oKSk7CiAKKyAgICBtX3JlbW90ZU1lZGlhUGxheWVyTWFuYWdlclBy
b3h5ID0gbnVsbHB0cjsKICAgICBtX2Nvbm5lY3Rpb24tPmludmFsaWRhdGUoKTsKIH0KIApAQCAt
NzQsNiArNzgsMjYgQEAgdm9pZCBHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpkaWRSZWNlaXZl
SW52YWxpZE1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiBjb25uZWMKICAgICBDUkFTSCgpOwogfQog
Cit2b2lkIEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmRpZFJlY2VpdmVNZXNzYWdlKElQQzo6
Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgSVBDOjpEZWNvZGVyJiBkZWNvZGVyKQoreworICAgIGlm
IChkZWNvZGVyLm1lc3NhZ2VSZWNlaXZlck5hbWUoKSA9PSBNZXNzYWdlczo6UmVtb3RlTWVkaWFQ
bGF5ZXJNYW5hZ2VyUHJveHk6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSkgeworICAgICAgICBpZiAo
bV9yZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eSkKKyAgICAgICAgICAgIG1fcmVtb3RlTWVk
aWFQbGF5ZXJNYW5hZ2VyUHJveHktPmRpZFJlY2VpdmVNZXNzYWdlRnJvbVdlYlByb2Nlc3MoY29u
bmVjdGlvbiwgZGVjb2Rlcik7CisgICAgICAgIHJldHVybjsKKyAgICB9Cit9CisKK3ZvaWQgR1BV
Q29ubmVjdGlvblRvV2ViUHJvY2Vzczo6ZGlkUmVjZWl2ZVN5bmNNZXNzYWdlKElQQzo6Q29ubmVj
dGlvbiYgY29ubmVjdGlvbiwgSVBDOjpEZWNvZGVyJiBkZWNvZGVyLCBzdGQ6OnVuaXF1ZV9wdHI8
SVBDOjpFbmNvZGVyPiYgcmVwbHlFbmNvZGVyKQoreworICAgIGlmIChkZWNvZGVyLm1lc3NhZ2VS
ZWNlaXZlck5hbWUoKSA9PSBNZXNzYWdlczo6UmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHk6
Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSkgeworICAgICAgICBpZiAobV9yZW1vdGVNZWRpYVBsYXll
ck1hbmFnZXJQcm94eSkKKyAgICAgICAgICAgIG1fcmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJv
eHktPmRpZFJlY2VpdmVTeW5jTWVzc2FnZUZyb21XZWJQcm9jZXNzKGNvbm5lY3Rpb24sIGRlY29k
ZXIsIHJlcGx5RW5jb2Rlcik7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBBU1NFUlRf
Tk9UX1JFQUNIRUQoKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CiAKICNlbmRpZiAvLyBF
TkFCTEUoR1BVX1BST0NFU1MpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mv
R1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQ
VUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaAppbmRleCBjNjRhNDNlNjRhZjUxMGMwNzRkNzA4NmY3
YjY0NmZhNmM2YTRmNDY3Li44NjI1YjNjYjY5MmIwNzM1OGNhOWY4NjExMzY3Yjc1OTY1NTIyNWY3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2Vi
UHJvY2Vzcy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9X
ZWJQcm9jZXNzLmgKQEAgLTM1LDYgKzM1LDcgQEAKIG5hbWVzcGFjZSBXZWJLaXQgewogCiBjbGFz
cyBHUFVQcm9jZXNzOworY2xhc3MgUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHk7CiAKIGNs
YXNzIEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MKICAgICA6IHB1YmxpYyBSZWZDb3VudGVkPEdQ
VUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M+CkBAIC01NywxMCArNTgsMTMgQEAgcHJpdmF0ZToKICAg
ICAvLyBJUEM6OkNvbm5lY3Rpb246OkNsaWVudAogICAgIHZvaWQgZGlkQ2xvc2UoSVBDOjpDb25u
ZWN0aW9uJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRSZWNlaXZlSW52YWxpZE1lc3NhZ2UoSVBD
OjpDb25uZWN0aW9uJiwgSVBDOjpTdHJpbmdSZWZlcmVuY2UgbWVzc2FnZVJlY2VpdmVyTmFtZSwg
SVBDOjpTdHJpbmdSZWZlcmVuY2UgbWVzc2FnZU5hbWUpIG92ZXJyaWRlOworICAgIHZvaWQgZGlk
UmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJikgb3ZlcnJpZGU7
CisgICAgdm9pZCBkaWRSZWNlaXZlU3luY01lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpE
ZWNvZGVyJiwgc3RkOjp1bmlxdWVfcHRyPElQQzo6RW5jb2Rlcj4mKSBvdmVycmlkZTsKIAogICAg
IFJlZjxJUEM6OkNvbm5lY3Rpb24+IG1fY29ubmVjdGlvbjsKICAgICBSZWY8R1BVUHJvY2Vzcz4g
bV9ncHVQcm9jZXNzOwogICAgIGNvbnN0IFdlYkNvcmU6OlByb2Nlc3NJZGVudGlmaWVyIG1fd2Vi
UHJvY2Vzc0lkZW50aWZpZXI7CisgICAgc3RkOjp1bmlxdWVfcHRyPFJlbW90ZU1lZGlhUGxheWVy
TWFuYWdlclByb3h5PiBtX3JlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5OwogfTsKIAogfSAv
LyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mv
bWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9H
UFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5LmNwcApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi42YTIyOTcyNDJjOTJmZWU3ZDU3NjZhNTEwODIzNGMyZDljNzRlMTgyCi0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUGxheWVy
TWFuYWdlclByb3h5LmNwcApAQCAtMCwwICsxLDE0NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JT
IGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05U
UklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRl
ICJjb25maWcuaCIKKyNpbmNsdWRlICJSZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eS5oIgor
CisjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKQorCisjaW5jbHVkZSAiR1BVQ29ubmVjdGlvblRvV2Vi
UHJvY2Vzcy5oIgorI2luY2x1ZGUgIlJlbW90ZU1lZGlhUGxheWVyTWFuYWdlck1lc3NhZ2VzLmgi
CisjaW5jbHVkZSAiUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHlNZXNzYWdlcy5oIgorI2lu
Y2x1ZGUgIldlYkNvcmVBcmd1bWVudENvZGVycy5oIgorI2luY2x1ZGUgPFdlYkNvcmUvTWVkaWFQ
bGF5ZXIuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL01lZGlhUGxheWVyUHJpdmF0ZS5oPgorI2luY2x1
ZGUgPHd0Zi9VbmlxdWVSZWYuaD4KKworI2RlZmluZSBNRVNTQUdFX0NIRUNLX0NPTlRFWFRJRChp
ZGVudGlmaWVyKSBNRVNTQUdFX0NIRUNLX0JBU0UobV9wcm94aWVzLmlzVmFsaWRLZXkoaWRlbnRp
ZmllciksICZtX3dlYlByb2Nlc3NDb25uZWN0aW9uLmNvbm5lY3Rpb24oKSkKKworbmFtZXNwYWNl
IFdlYktpdCB7Cit1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKKworI2lmICFSRUxFQVNFX0xPR19E
SVNBQkxFRAorc3RhdGljIFJlZlB0cjxMb2dnZXI+JiBudWxsTG9nZ2VyKCkKK3sKKyAgICBzdGF0
aWMgTmV2ZXJEZXN0cm95ZWQ8UmVmUHRyPExvZ2dlcj4+IGxvZ2dlcjsKKyAgICByZXR1cm4gbG9n
Z2VyOworfQorI2VuZGlmCisKK2NsYXNzIFJlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5OjpQ
bGF5ZXJQcm94eQorICAgIDogcHVibGljIE1lZGlhUGxheWVyQ2xpZW50IHsKKyAgICBXVEZfTUFL
RV9GQVNUX0FMTE9DQVRFRDsKK3B1YmxpYzoKKyAgICBQbGF5ZXJQcm94eShjb25zdCBNZWRpYVBs
YXllclByaXZhdGVSZW1vdGVJZGVudGlmaWVyJiBpZCwgUmVmPElQQzo6Q29ubmVjdGlvbj4mJiBj
b25uZWN0aW9uLCBjb25zdCBTdHJpbmcmIHJlbW90ZUVuZ2luZUlkZW50aWZpZXIpCisgICAgICAg
IDogbV9pZChpZCkKKyAgICAgICAgLCBtX2Nvbm5lY3Rpb24oV1RGTW92ZShjb25uZWN0aW9uKSkK
KyAgICAgICAgLCBtX3JlbW90ZUVuZ2luZUlkZW50aWZpZXIocmVtb3RlRW5naW5lSWRlbnRpZmll
cikKKyAgICB7CisgICAgfQorCisgICAgdmlydHVhbCB+UGxheWVyUHJveHkoKQorICAgIHsKKyAg
ICB9CisKK3ByaXZhdGU6CisKKyAgICAvLyBNZWRpYVBsYXllckNsaWVudAorICAgIGNvbnN0IFZl
Y3RvcjxXZWJDb3JlOjpDb250ZW50VHlwZT4mIG1lZGlhQ29udGVudFR5cGVzUmVxdWlyaW5nSGFy
ZHdhcmVTdXBwb3J0KCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV90eXBlc1JlcXVpcmluZ0hhcmR3
YXJlU3VwcG9ydDsgfQorCisjaWYgIVJFTEVBU0VfTE9HX0RJU0FCTEVECisgICAgY29uc3QgTG9n
Z2VyJiBtZWRpYVBsYXllckxvZ2dlcigpIGZpbmFsCisgICAgeworICAgICAgICBpZiAoIW51bGxM
b2dnZXIoKS5nZXQoKSkgeworICAgICAgICAgICAgbnVsbExvZ2dlcigpID0gTG9nZ2VyOjpjcmVh
dGUodGhpcyk7CisgICAgICAgICAgICBudWxsTG9nZ2VyKCktPnNldEVuYWJsZWQodGhpcywgZmFs
c2UpOworICAgICAgICB9CisKKyAgICAgICAgcmV0dXJuICpudWxsTG9nZ2VyKCkuZ2V0KCk7Cisg
ICAgfQorI2VuZGlmCisKK3Byb3RlY3RlZDoKKyAgICBNZWRpYVBsYXllclByaXZhdGVSZW1vdGVJ
ZGVudGlmaWVyIG1faWQ7CisgICAgUmVmPElQQzo6Q29ubmVjdGlvbj4gbV9jb25uZWN0aW9uOwor
ICAgIHN0ZDo6dW5pcXVlX3B0cjxNZWRpYVBsYXllclByaXZhdGVJbnRlcmZhY2U+IG1fcGxheWVy
OworICAgIFN0cmluZyBtX3JlbW90ZUVuZ2luZUlkZW50aWZpZXI7CisgICAgVmVjdG9yPFdlYkNv
cmU6OkNvbnRlbnRUeXBlPiBtX3R5cGVzUmVxdWlyaW5nSGFyZHdhcmVTdXBwb3J0OworfTsKKwor
UmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHk6OlJlbW90ZU1lZGlhUGxheWVyTWFuYWdlclBy
b3h5KEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MmIGNvbm5lY3Rpb24pCisgICAgOiBtX3dlYlBy
b2Nlc3NDb25uZWN0aW9uKGNvbm5lY3Rpb24pCit7Cit9CisKK1JlbW90ZU1lZGlhUGxheWVyTWFu
YWdlclByb3h5Ojp+UmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHkoKQoreworfQorCit2b2lk
IFJlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5OjpjcmVhdGVNZWRpYVBsYXllcihjb25zdCBN
ZWRpYVBsYXllclByaXZhdGVSZW1vdGVJZGVudGlmaWVyJiBpZCwgY29uc3QgU3RyaW5nJiYgcmVt
b3RlRW5naW5lSWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sIHN1Y2NlZWRl
ZCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit7CisgICAgTUVTU0FHRV9DSEVDS19DT05URVhUSUQo
aWQpOworCisgICAgQVNTRVJUKCFtX3Byb3hpZXMuY29udGFpbnMoaWQpKTsKKyAgICBtX3Byb3hp
ZXMuYWRkKGlkLCBtYWtlVW5pcXVlPFBsYXllclByb3h5PihpZCwgbV93ZWJQcm9jZXNzQ29ubmVj
dGlvbi5jb25uZWN0aW9uKCksIHJlbW90ZUVuZ2luZUlkZW50aWZpZXIpKTsKKworICAgIGNvbXBs
ZXRpb25IYW5kbGVyKHRydWUpOworfQorCit2b2lkIFJlbW90ZU1lZGlhUGxheWVyTWFuYWdlclBy
b3h5OjpnZXRTdXBwb3J0ZWRUeXBlcyhjb25zdCBTdHJpbmcmJiwgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZChWZWN0b3I8U3RyaW5nPiYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyAgICAvLyBG
SVhNRTogcXVlcnkgdGhlIGFwcHJvcHJpYXRlIG1lZGlhIGVuZ2luZQorICAgIGNvbXBsZXRpb25I
YW5kbGVyKHsgInZpZGVvL21wNCIsICJhdWRpby9tcDQiIH0pOworfQorCit2b2lkIFJlbW90ZU1l
ZGlhUGxheWVyTWFuYWdlclByb3h5OjpzdXBwb3J0c1R5cGUoY29uc3QgU3RyaW5nJiYsIGNvbnN0
IFdlYkNvcmU6Ok1lZGlhRW5naW5lU3VwcG9ydFBhcmFtZXRlcnMmJiwgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZChpbnQpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQoreworICAgIGNvbXBsZXRpb25IYW5k
bGVyKDEpOworfQorCit2b2lkIFJlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5OjpvcmlnaW5z
SW5NZWRpYUNhY2hlKGNvbnN0IFN0cmluZyYmLCBjb25zdCBTdHJpbmcmJiwgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChWZWN0b3I8V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhPiYmKT4mJiBjb21w
bGV0aW9uSGFuZGxlcikKK3sKKyAgICBjb21wbGV0aW9uSGFuZGxlcih7IH0pOworfQorCit2b2lk
IFJlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5OjpjbGVhck1lZGlhQ2FjaGUoY29uc3QgU3Ry
aW5nJiYsIGNvbnN0IFN0cmluZyYmLCBXYWxsVGltZSkKK3sKK30KKwordm9pZCBSZW1vdGVNZWRp
YVBsYXllck1hbmFnZXJQcm94eTo6Y2xlYXJNZWRpYUNhY2hlRm9yT3JpZ2lucyhjb25zdCBTdHJp
bmcmJiwgY29uc3QgU3RyaW5nJiYsIFZlY3RvcjxXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGE+
JiYpCit7Cit9CisKK3ZvaWQgUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHk6OnN1cHBvcnRz
S2V5U3lzdGVtKGNvbnN0IFN0cmluZyYmLCBjb25zdCBTdHJpbmcmJiwgY29uc3QgU3RyaW5nJiYs
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit7Cisg
ICAgY29tcGxldGlvbkhhbmRsZXIoeyB9KTsKK30KKworfQorCisjdW5kZWYgTUVTU0FHRV9DSEVD
S19DT05URVhUSUQKKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nl
c3MvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQv
R1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eS5oCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLmQxOWVkMzVkZGIwOWE4NWYxN2Q0ZjllNzI4MDcyNzg4ZGExMzNlNDQKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJN
YW5hZ2VyUHJveHkuaApAQCAtMCwwICsxLDc0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE5
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBB
UyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJV
VE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
CisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNl
CisKKyNpZiBFTkFCTEUoR1BVX1BST0NFU1MpCisKKyNpbmNsdWRlICJDb25uZWN0aW9uLmgiCisj
aW5jbHVkZSAiTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlSWRlbnRpZmllci5oIgorI2luY2x1ZGUg
Ik1lc3NhZ2VSZWNlaXZlci5oIgorI2luY2x1ZGUgPFdlYkNvcmUvTWVkaWFQbGF5ZXIuaD4KKwor
bmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M7CisK
K2NsYXNzIFJlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5IDogcHJpdmF0ZSBJUEM6Ok1lc3Nh
Z2VSZWNlaXZlciB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CitwdWJsaWM6CisgICAg
ZXhwbGljaXQgUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHkoR1BVQ29ubmVjdGlvblRvV2Vi
UHJvY2VzcyYpOworICAgIH5SZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eSgpOworCisgICAg
R1BVQ29ubmVjdGlvblRvV2ViUHJvY2VzcyYgd2ViUHJvY2Vzc0Nvbm5lY3Rpb24oKSBjb25zdCB7
IHJldHVybiBtX3dlYlByb2Nlc3NDb25uZWN0aW9uOyB9CisgICAgdm9pZCBjbGVhcigpOworCisg
ICAgdm9pZCBkaWRSZWNlaXZlTWVzc2FnZUZyb21XZWJQcm9jZXNzKElQQzo6Q29ubmVjdGlvbiYg
Y29ubmVjdGlvbiwgSVBDOjpEZWNvZGVyJiBkZWNvZGVyKSB7IGRpZFJlY2VpdmVNZXNzYWdlKGNv
bm5lY3Rpb24sIGRlY29kZXIpOyB9CisgICAgdm9pZCBkaWRSZWNlaXZlU3luY01lc3NhZ2VGcm9t
V2ViUHJvY2VzcyhJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIElQQzo6RGVjb2RlciYgZGVj
b2Rlciwgc3RkOjp1bmlxdWVfcHRyPElQQzo6RW5jb2Rlcj4mIGVuY29kZXIpIHsgZGlkUmVjZWl2
ZVN5bmNNZXNzYWdlKGNvbm5lY3Rpb24sIGRlY29kZXIsIGVuY29kZXIpOyB9Citwcml2YXRlOgor
ICAgIC8vIElQQzo6TWVzc2FnZVJlY2VpdmVyCisgICAgdm9pZCBkaWRSZWNlaXZlTWVzc2FnZShJ
UEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImKSBmaW5hbDsKKyAgICB2b2lkIGRpZFJlY2Vp
dmVTeW5jTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImLCBzdGQ6OnVuaXF1
ZV9wdHI8SVBDOjpFbmNvZGVyPiYpIGZpbmFsOworCisgICAgdm9pZCBjcmVhdGVNZWRpYVBsYXll
cihjb25zdCBNZWRpYVBsYXllclByaXZhdGVSZW1vdGVJZGVudGlmaWVyJiwgY29uc3QgU3RyaW5n
JiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpOworCisgICAgdm9pZCBnZXRTdXBw
b3J0ZWRUeXBlcyhjb25zdCBTdHJpbmcmJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChWZWN0b3I8
U3RyaW5nPiYmKT4mJik7CisgICAgdm9pZCBzdXBwb3J0c1R5cGUoY29uc3QgU3RyaW5nJiYsIGNv
bnN0IFdlYkNvcmU6Ok1lZGlhRW5naW5lU3VwcG9ydFBhcmFtZXRlcnMmJiwgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChpbnQpPiYmKTsKKworICAgIHZvaWQgb3JpZ2luc0luTWVkaWFDYWNoZShjb25z
dCBTdHJpbmcmJiwgY29uc3QgU3RyaW5nJiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoVmVjdG9y
PFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YT4mJik+JiYpOworICAgIHZvaWQgY2xlYXJNZWRp
YUNhY2hlKGNvbnN0IFN0cmluZyYmLCBjb25zdCBTdHJpbmcmJiwgV2FsbFRpbWUpOworICAgIHZv
aWQgY2xlYXJNZWRpYUNhY2hlRm9yT3JpZ2lucyhjb25zdCBTdHJpbmcmJiwgY29uc3QgU3RyaW5n
JiYsIFZlY3RvcjxXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGE+JiYpOworICAgIHZvaWQgc3Vw
cG9ydHNLZXlTeXN0ZW0oY29uc3QgU3RyaW5nJiYsIGNvbnN0IFN0cmluZyYmLCBjb25zdCBTdHJp
bmcmJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJik7CisKKworICAgIGNsYXNzIFBs
YXllclByb3h5OworICAgIGZyaWVuZCBjbGFzcyBQbGF5ZXJQcm94eTsKKyAgICBIYXNoTWFwPE1l
ZGlhUGxheWVyUHJpdmF0ZVJlbW90ZUlkZW50aWZpZXIsIHN0ZDo6dW5pcXVlX3B0cjxQbGF5ZXJQ
cm94eT4+IG1fcHJveGllczsKKyAgICBHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzJiBtX3dlYlBy
b2Nlc3NDb25uZWN0aW9uOworfTsKKworfQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eS5tZXNz
YWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVBsYXll
ck1hbmFnZXJQcm94eS5tZXNzYWdlcy5pbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45YjM2ZTI1MTJmOWE0OTlhNGNi
MTUxMThiNDA4ZGYxMTNlMjQ4ZmViCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9H
UFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5Lm1lc3NhZ2VzLmlu
CkBAIC0wLDAgKzEsMzcgQEAKKyMgQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworIyBhcmUgbWV0Ogor
IyAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorIyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisjIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyMg
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworIyBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyMgVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgorIyBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorIyBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRgorIyBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyMgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyMgQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkKKyMgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRgorIyBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisK
KyNpZiBFTkFCTEUoVklERU8pCisKK21lc3NhZ2VzIC0+IFJlbW90ZU1lZGlhUGxheWVyTWFuYWdl
clByb3h5IE5vdFJlZkNvdW50ZWQgeworICAgIENyZWF0ZU1lZGlhUGxheWVyKFdlYktpdDo6TWVk
aWFQbGF5ZXJQcml2YXRlUmVtb3RlSWRlbnRpZmllciBpZCwgU3RyaW5nIHJlbW90ZUVuZ2luZUlk
ZW50aWZpZXIpIC0+IChib29sIHN1Y2Nlc3MpIFN5bmNocm9ub3VzCisKKyAgICBHZXRTdXBwb3J0
ZWRUeXBlcyhTdHJpbmcgcmVtb3RlRW5naW5lSWRlbnRpZmllcikgLT4gKFZlY3RvcjxTdHJpbmc+
IHR5cGVzKSBTeW5jaHJvbm91cworICAgIFN1cHBvcnRzVHlwZShTdHJpbmcgcmVtb3RlRW5naW5l
SWRlbnRpZmllciwgc3RydWN0IFdlYkNvcmU6Ok1lZGlhRW5naW5lU3VwcG9ydFBhcmFtZXRlcnMg
dHlwZSkgLT4gKGludCBzdXBwb3J0KSBTeW5jaHJvbm91cworICAgIE9yaWdpbnNJbk1lZGlhQ2Fj
aGUoU3RyaW5nIHJlbW90ZUVuZ2luZUlkZW50aWZpZXIsIFN0cmluZyBwYXRoKSAtPiAoVmVjdG9y
PFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YT4gb3JpZ2lucykgU3luY2hyb25vdXMKKyAgICBD
bGVhck1lZGlhQ2FjaGUoU3RyaW5nIHJlbW90ZUVuZ2luZUlkZW50aWZpZXIsIFN0cmluZyBwYXRo
LCBXYWxsVGltZSBtb2RpZmllZFNpbmNlKQorICAgIENsZWFyTWVkaWFDYWNoZUZvck9yaWdpbnMo
U3RyaW5nIHJlbW90ZUVuZ2luZUlkZW50aWZpZXIsIFN0cmluZyBwYXRoLCBWZWN0b3I8V2ViQ29y
ZTo6U2VjdXJpdHlPcmlnaW5EYXRhPiBvcmlnaW5zKQorICAgIFN1cHBvcnRzS2V5U3lzdGVtKFN0
cmluZyByZW1vdGVFbmdpbmVJZGVudGlmaWVyLCBTdHJpbmcga2V5U3lzdGVtLCBTdHJpbmcgbWlt
ZVR5cGUpIC0+IChib29sIHN1cHBvcnRzKSBTeW5jaHJvbm91cworfQorCisjZW5kaWYKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvbWVzc2FnZXMucHkgYi9Tb3VyY2Uv
V2ViS2l0L1NjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5CmluZGV4IGVkMTFhYzI3MjUyMjZlNDdh
MmI1NmJjYzllY2YyMjJkYWMwMDA5YWUuLmYyZTllZDdhYjU0MDJlZjUxMTg4ZjdlOGRiZTM5NmJh
OGFjZTBmYWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvbWVzc2Fn
ZXMucHkKKysrIGIvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5weQpAQCAt
MSw0ICsxLDQgQEAKLSMgQ29weXJpZ2h0IChDKSAyMDEwLTIwMTggQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorIyBDb3B5cmlnaHQgKEMpIDIwMTAtMjAxOSBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCiAjCiAjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogIyBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTIxOSwxMCAr
MjE5LDExIEBAIGRlZiB0eXBlc190aGF0X2Nhbm5vdF9iZV9mb3J3YXJkX2RlY2xhcmVkKCk6CiAg
ICAgICAgICdXZWJDb3JlOjpTV1NlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyJywKICAgICAgICAg
J1dlYktpdDo6QWN0aXZpdHlTdGF0ZUNoYW5nZUlEJywKICAgICAgICAgJ1dlYktpdDo6TGF5ZXJI
b3N0aW5nQ29udGV4dElEJywKLSAgICAgICAgJ1dlYktpdDo6VHJhbnNhY3Rpb25JRCcsCisgICAg
ICAgICdXZWJLaXQ6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZUlkZW50aWZpZXInLAogICAgICAg
ICAnV2ViS2l0OjpTdG9yYWdlQXJlYUlkZW50aWZpZXInLAogICAgICAgICAnV2ViS2l0OjpTdG9y
YWdlQXJlYUltcGxJZGVudGlmaWVyJywKICAgICAgICAgJ1dlYktpdDo6U3RvcmFnZU5hbWVzcGFj
ZUlkZW50aWZpZXInLAorICAgICAgICAnV2ViS2l0OjpUcmFuc2FjdGlvbklEJywKICAgICAgICAg
J1dlYktpdDo6VXNlckNvbnRlbnRDb250cm9sbGVySWRlbnRpZmllcicsCiAgICAgICAgICdXZWJL
aXQ6OldlYlBhZ2VQcm94eUlkZW50aWZpZXInLAogICAgIF0pCkBAIC02MDMsNiArNjA0LDcgQEAg
ZGVmIGhlYWRlcnNfZm9yX3R5cGUodHlwZSk6CiAgICAgICAgICdXZWJLaXQ6OldlYk1vdXNlRXZl
bnQnOiBbJyJXZWJFdmVudC5oIiddLAogICAgICAgICAnV2ViS2l0OjpXZWJUb3VjaEV2ZW50Jzog
WyciV2ViRXZlbnQuaCInXSwKICAgICAgICAgJ1dlYktpdDo6V2ViV2hlZWxFdmVudCc6IFsnIldl
YkV2ZW50LmgiJ10sCisgICAgICAgICdXZWJDb3JlOjpNZWRpYUVuZ2luZVN1cHBvcnRQYXJhbWV0
ZXJzJzogWyc8V2ViQ29yZS9NZWRpYVBsYXllci5oPiddLAogICAgICAgICAnc3RydWN0IFdlYkNv
cmU6OkVsZW1lbnRDb250ZXh0JzogWyc8V2ViQ29yZS9FbGVtZW50Q29udGV4dC5oPiddLAogICAg
ICAgICAnc3RydWN0IFdlYktpdDo6V2ViVXNlclNjcmlwdERhdGEnOiBbJyJXZWJVc2VyQ29udGVu
dENvbnRyb2xsZXJEYXRhVHlwZXMuaCInXSwKICAgICAgICAgJ3N0cnVjdCBXZWJLaXQ6OldlYlVz
ZXJTdHlsZVNoZWV0RGF0YSc6IFsnIldlYlVzZXJDb250ZW50Q29udHJvbGxlckRhdGFUeXBlcy5o
IiddLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9Tb3VyY2VzLnR4dCBiL1NvdXJjZS9XZWJL
aXQvU291cmNlcy50eHQKaW5kZXggNzNmZjRkMjdiZWUzZDgyYTExNDY3MTc0OTJiY2I2NjQ1MjM1
YjY0Mi4uYjIzODQ4NDg1MzM4NzhhMGQ3Zjc2NmU4MTczNmUxODY0MTlmZWUwYSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9Tb3VyY2VzLnR4dAorKysgYi9Tb3VyY2UvV2ViS2l0L1NvdXJjZXMu
dHh0CkBAIC00OTksNiArNDk5LDggQEAgV2ViUHJvY2Vzcy9NZWRpYVN0cmVhbS9NZWRpYURldmlj
ZVNhbmRib3hFeHRlbnNpb25zLmNwcAogV2ViUHJvY2Vzcy9NZWRpYVN0cmVhbS9Vc2VyTWVkaWFQ
ZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXIuY3BwCiAKIFdlYlByb2Nlc3MvR1BVL0dQVVByb2Nlc3ND
b25uZWN0aW9uLmNwcAorV2ViUHJvY2Vzcy9HUFUvbWVkaWEvTWVkaWFQbGF5ZXJQcml2YXRlUmVt
b3RlLmNwcAorV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyLmNw
cAogCiBXZWJQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLmNwcAogV2Vi
UHJvY2Vzcy9OZXR3b3JrL1dlYkxvYWRlclN0cmF0ZWd5LmNwcApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9Tb3VyY2VzQ29jb2EudHh0IGIvU291cmNlL1dlYktpdC9Tb3VyY2VzQ29jb2EudHh0
CmluZGV4IDlkMjQyZTJhMDY0ZGZmNzJmNDljNDJmNTRkOTc4MTNjYWQ5NGQ5MmMuLmQ5NDgzZDBh
MTM5YTAwYWRhZDc3ZmE4MzdlY2M3M2VjMTc4YjljM2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvU291cmNlc0NvY29hLnR4dAorKysgYi9Tb3VyY2UvV2ViS2l0L1NvdXJjZXNDb2NvYS50eHQK
QEAgLTU5LDYgKzU5LDcgQEAgTmV0d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdvcmtSVENTb2NrZXQu
Y3BwCiAKIEdQVVByb2Nlc3MvaW9zL0dQVVByb2Nlc3NJT1MubW0KIEdQVVByb2Nlc3MvbWFjL0dQ
VVByb2Nlc3NNYWMubW0KK0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2Vy
UHJveHkuY3BwCiBHUFVQcm9jZXNzL0VudHJ5UG9pbnQvQ29jb2EvWFBDU2VydmljZS9HUFVTZXJ2
aWNlRW50cnlQb2ludC5tbQogCiBQbGF0Zm9ybS9jZi9Nb2R1bGVDRi5jcHAKQEAgLTYyNCw1ICs2
MjUsNyBAQCBFZGl0YWJsZUltYWdlQ29udHJvbGxlck1lc3NhZ2VSZWNlaXZlci5jcHAKIEdQVUNv
bm5lY3Rpb25Ub1dlYlByb2Nlc3NNZXNzYWdlUmVjZWl2ZXIuY3BwCiBHUFVQcm9jZXNzUHJveHlN
ZXNzYWdlUmVjZWl2ZXIuY3BwCiBHUFVQcm9jZXNzTWVzc2FnZVJlY2VpdmVyLmNwcAorLy9SZW1v
dGVNZWRpYVBsYXllck1hbmFnZXJNZXNzYWdlUmVjZWl2ZXIuY3BwCisvL1JlbW90ZU1lZGlhUGxh
eWVyTWFuYWdlclByb3h5TWVzc2FnZVJlY2VpdmVyLmNwcAogU2VydmljZVdvcmtlckZldGNoVGFz
a01lc3NhZ2VSZWNlaXZlci5jcHAKIFRleHRDaGVja2luZ0NvbnRyb2xsZXJQcm94eU1lc3NhZ2VS
ZWNlaXZlci5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCmluZGV4IGY3OWRkYzEyMDQwZjJiZjc5MjQwY2NhNTVlZjk4OTMwYjUwMDc1MzQuLmVj
ZTkwZDU3NTJkNDdkNzFhYjA1NTVmY2E5NmQ2NjE3ZWU3NGUxMTAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dl
YktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtOTEsNiArOTEsMTMgQEAK
IAkJMDc0RTc1RkUxREYyMjExOTAwRDMxOEVDIC8qIFVzZXJNZWRpYVByb2Nlc3NNYW5hZ2VyLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwNzRFNzVGQjFE
RjFGRDEzMDBEMzE4RUMgLyogVXNlck1lZGlhUHJvY2Vzc01hbmFnZXIuaCAqLzsgfTsKIAkJMDc2
RTg4NEUxQTEzQ0FERjAwNUU5MEZDIC8qIEFQSUNvbnRleHRNZW51Q2xpZW50LmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwNzZFODg0RDFBMTNDQURGMDA1
RTkwRkMgLyogQVBJQ29udGV4dE1lbnVDbGllbnQuaCAqLzsgfTsKIAkJMDc3MjgxMUQyMTIzNEZG
NjAwQzhFRjJFIC8qIFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlci5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNEE0MTBGNDMxOUFGN0IyNzAw
MkVCQUI1IC8qIFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlci5oICovOyB9OworCQkw
NzkyMzE0ODIzOUNCQ0I4MDA5NTk4RTIgLyogUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHlN
ZXNzYWdlc1JlcGxpZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDA3OTIzMTQyMjM5Q0JDQjUwMDk1OThFMiAvKiBSZW1vdGVNZWRpYVBsYXllck1hbmFn
ZXJQcm94eU1lc3NhZ2VzUmVwbGllcy5oICovOyB9OworCQkwNzkyMzE0OTIzOUNCQ0I4MDA5NTk4
RTIgLyogUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyTWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3OTIzMTQzMjM5Q0JDQjYw
MDk1OThFMiAvKiBSZW1vdGVNZWRpYVBsYXllck1hbmFnZXJNZXNzYWdlUmVjZWl2ZXIuY3BwICov
OyB9OworCQkwNzkyMzE0QTIzOUNCQ0I4MDA5NTk4RTIgLyogUmVtb3RlTWVkaWFQbGF5ZXJNYW5h
Z2VyTWVzc2FnZXNSZXBsaWVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSAwNzkyMzE0NDIzOUNCQ0I2MDA5NTk4RTIgLyogUmVtb3RlTWVkaWFQbGF5ZXJN
YW5hZ2VyTWVzc2FnZXNSZXBsaWVzLmggKi87IH07CisJCTA3OTIzMTRCMjM5Q0JDQjgwMDk1OThF
MiAvKiBSZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eU1lc3NhZ2VSZWNlaXZlci5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwNzkyMzE0NTIzOUNC
Q0I3MDA5NTk4RTIgLyogUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHlNZXNzYWdlUmVjZWl2
ZXIuY3BwICovOyB9OworCQkwNzkyMzE0QzIzOUNCQ0I4MDA5NTk4RTIgLyogUmVtb3RlTWVkaWFQ
bGF5ZXJNYW5hZ2VyUHJveHlNZXNzYWdlcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gMDc5MjMxNDYyMzlDQkNCNzAwOTU5OEUyIC8qIFJlbW90ZU1lZGlh
UGxheWVyTWFuYWdlclByb3h5TWVzc2FnZXMuaCAqLzsgfTsKKwkJMDc5MjMxNEQyMzlDQkNCODAw
OTU5OEUyIC8qIFJlbW90ZU1lZGlhUGxheWVyTWFuYWdlck1lc3NhZ2VzLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwNzkyMzE0NzIzOUNCQ0I3MDA5NTk4
RTIgLyogUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyTWVzc2FnZXMuaCAqLzsgfTsKKwkJMDc5MjMx
NEYyMzlENjIzRTAwOTU5OEUyIC8qIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZUlkZW50aWZpZXIu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3OTIzMTRF
MjM5RDVGNTMwMDk1OThFMiAvKiBNZWRpYVBsYXllclByaXZhdGVSZW1vdGVJZGVudGlmaWVyLmgg
Ki87IH07CiAJCTA3QTVFQkJDMUM3QkE0M0UwMEI5Q0E2OSAvKiBXS0ZyYW1lSGFuZGxlUmVmLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwN0E1RUJCQTFD
N0JBNDNFMDBCOUNBNjkgLyogV0tGcmFtZUhhbmRsZVJlZi5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTBFOTdENzREMjAwRTkwMDQwMEJGNjY0MyAv
KiBTYWZlQnJvd3NpbmdTUEkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDBFOTdENzRDMjAwRThGRjMwMEJGNjY0MyAvKiBTYWZlQnJvd3NpbmdTUEkuaCAq
LzsgfTsKIAkJMEVERTg1MDMyMDA0RTc1RDAwMDMwNTYwIC8qIFdlYnNpdGVQb3BVcFBvbGljeS5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEVERTg1MDIy
MDA0RTc0OTAwMDMwNTYwIC8qIFdlYnNpdGVQb3BVcFBvbGljeS5oICovOyB9OwpAQCAtMTk5Niw2
ICsyMDAzLDkgQEAKIAkJMDBCOTY2MTUxOEUyNENCQTAwQ0UxRjg4IC8qIEFQSUZpbmRDbGllbnQu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQVBJRmluZENsaWVudC5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwMEI5NjYxNzE4RTI1QUUxMDBDRTFGODggLyogRmlu
ZENsaWVudC5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IEZpbmRD
bGllbnQubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTAwQjk2NjE4MThFMjVBRTEw
MENFMUY4OCAvKiBGaW5kQ2xpZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IEZpbmRDbGllbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMDcyNUVGQUIyMzlB
RTM4NDAwQTUzOEE5IC8qIFJlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5Lm1lc3NhZ2VzLmlu
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsg
cGF0aCA9IFJlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5Lm1lc3NhZ2VzLmluOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQkwNzI1RUZBQzIzOUFFMzg1MDBBNTM4QTkgLyogUmVtb3Rl
TWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVtb3RlTWVkaWFQbGF5
ZXJNYW5hZ2VyUHJveHkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMDcyNUVGQUQy
MzlCMDI0NTAwQTUzOEE5IC8qIFJlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5LmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IFJlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5LmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMDcyOTdGOUMxQzE3MTFFQTAwM0YwNzM1IC8qIERldmlj
ZUlkSGFzaFNhbHRTdG9yYWdlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IERldmljZUlkSGFzaFNhbHRTdG9yYWdlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJMDcyOTdGOUMxQzE3QkJFQTAwM0YwNzM1IC8qIFVzZXJNZWRpYVBlcm1pc3Npb25DaGVj
a1Byb3h5LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFVzZXJNZWRp
YVBlcm1pc3Npb25DaGVja1Byb3h5LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
MDcyOTdGOUQxQzE3QkJFQTAwM0YwNzM1IC8qIFVzZXJNZWRpYVBlcm1pc3Npb25DaGVja1Byb3h5
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFVzZXJNZWRpYVBlcm1pc3Npb25D
aGVja1Byb3h5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0yMDEwLDYgKzIwMjAs
MTggQEAKIAkJMDc0RTc2MDExREY3MDc1RDAwRDMxOEVDIC8qIE1lZGlhRGV2aWNlU2FuZGJveEV4
dGVuc2lvbnMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTWVkaWFEZXZpY2VT
YW5kYm94RXh0ZW5zaW9ucy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwNzZFODg0
RDFBMTNDQURGMDA1RTkwRkMgLyogQVBJQ29udGV4dE1lbnVDbGllbnQuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gQVBJQ29udGV4dE1lbnVDbGllbnQuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJMDc2RTg4NEYxQTEzQ0JDNjAwNUU5MEZDIC8qIEFQSUluamVjdGVk
QnVuZGxlUGFnZUNvbnRleHRNZW51Q2xpZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IEFQSUluamVjdGVkQnVuZGxlUGFnZUNvbnRleHRNZW51Q2xpZW50Lmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCTA3OTIzMTMwMjM5QjNCMEMwMDk1OThFMiAvKiBSZW1vdGVN
ZWRpYVBsYXllck1hbmFnZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUmVtb3RlTWVkaWFQbGF5
ZXJNYW5hZ2VyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMDc5MjMxMzEyMzlC
M0IwQzAwOTU5OEUyIC8qIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZS5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBNZWRpYVBsYXllclByaXZhdGVSZW1vdGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQkwNzkyMzEzMjIzOUIzQjBDMDA5NTk4RTIgLyogTWVkaWFQbGF5ZXJQcml2YXRl
UmVtb3RlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZS5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwNzkyMzEzMzIzOUIzQjBDMDA5NTk4RTIgLyogUmVt
b3RlTWVkaWFQbGF5ZXJNYW5hZ2VyLm1lc3NhZ2VzLmluICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IFJlbW90ZU1lZGlhUGxheWVy
TWFuYWdlci5tZXNzYWdlcy5pbjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMDc5MjMx
MzQyMzlCM0IwQzAwOTU5OEUyIC8qIFJlbW90ZU1lZGlhUGxheWVyTWFuYWdlci5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBSZW1vdGVNZWRpYVBsYXllck1hbmFnZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJMDc5MjMxNDIyMzlDQkNCNTAwOTU5OEUyIC8qIFJlbW90ZU1lZGlhUGxheWVyTWFu
YWdlclByb3h5TWVzc2FnZXNSZXBsaWVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IFJlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5TWVzc2FnZXNSZXBsaWVzLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTA3OTIzMTQzMjM5Q0JDQjYwMDk1OThFMiAvKiBSZW1v
dGVNZWRpYVBsYXllck1hbmFnZXJNZXNzYWdlUmVjZWl2ZXIuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyTWVzc2FnZVJlY2Vp
dmVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMDc5MjMxNDQyMzlDQkNCNjAw
OTU5OEUyIC8qIFJlbW90ZU1lZGlhUGxheWVyTWFuYWdlck1lc3NhZ2VzUmVwbGllcy5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZW1vdGVNZWRpYVBsYXllck1hbmFnZXJNZXNz
YWdlc1JlcGxpZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMDc5MjMxNDUyMzlD
QkNCNzAwOTU5OEUyIC8qIFJlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5TWVzc2FnZVJlY2Vp
dmVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJlbW90ZU1lZGlh
UGxheWVyTWFuYWdlclByb3h5TWVzc2FnZVJlY2VpdmVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJMDc5MjMxNDYyMzlDQkNCNzAwOTU5OEUyIC8qIFJlbW90ZU1lZGlhUGxheWVy
TWFuYWdlclByb3h5TWVzc2FnZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
UmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHlNZXNzYWdlcy5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQkwNzkyMzE0NzIzOUNCQ0I3MDA5NTk4RTIgLyogUmVtb3RlTWVkaWFQbGF5
ZXJNYW5hZ2VyTWVzc2FnZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVt
b3RlTWVkaWFQbGF5ZXJNYW5hZ2VyTWVzc2FnZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJMDc5MjMxNEUyMzlENUY1MzAwOTU5OEUyIC8qIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90
ZUlkZW50aWZpZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlSWRl
bnRpZmllci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwN0E1RUJCOTFDN0JBNDNF
MDBCOUNBNjkgLyogV0tGcmFtZUhhbmRsZVJlZi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBXS0ZyYW1lSGFuZGxlUmVmLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJMDdBNUVCQkExQzdCQTQzRTAwQjlDQTY5IC8qIFdLRnJhbWVIYW5kbGVSZWYuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0tGcmFtZUhhbmRsZVJlZi5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwODY3RDZBNUZFODQwMzA3QzAyQUFDMDcgLyogQXBw
S2l0LmZyYW1ld29yayAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxl
VHlwZSA9IHdyYXBwZXIuZnJhbWV3b3JrOyBuYW1lID0gQXBwS2l0LmZyYW1ld29yazsgcGF0aCA9
IC9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0FwcEtpdC5mcmFtZXdvcms7IHNvdXJjZVRyZWUg
PSAiPGFic29sdXRlPiI7IH07CkBAIC01MDEwLDYgKzUwMzIsMjkgQEAKIAkJCXRhYldpZHRoID0g
ODsKIAkJCXVzZXNUYWJzID0gMDsKIAkJfTsKKwkJMDc5MjMxMkYyMzlCM0IwQzAwOTU5OEUyIC8q
IG1lZGlhICovID0geworCQkJaXNhID0gUEJYR3JvdXA7CisJCQljaGlsZHJlbiA9ICgKKwkJCQkw
NzkyMzEzMTIzOUIzQjBDMDA5NTk4RTIgLyogTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlLmNwcCAq
LywKKwkJCQkwNzkyMzEzMjIzOUIzQjBDMDA5NTk4RTIgLyogTWVkaWFQbGF5ZXJQcml2YXRlUmVt
b3RlLmggKi8sCisJCQkJMDc5MjMxNEUyMzlENUY1MzAwOTU5OEUyIC8qIE1lZGlhUGxheWVyUHJp
dmF0ZVJlbW90ZUlkZW50aWZpZXIuaCAqLywKKwkJCQkwNzkyMzEzMDIzOUIzQjBDMDA5NTk4RTIg
LyogUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyLmNwcCAqLywKKwkJCQkwNzkyMzEzNDIzOUIzQjBD
MDA5NTk4RTIgLyogUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyLmggKi8sCisJCQkJMDc5MjMxMzMy
MzlCM0IwQzAwOTU5OEUyIC8qIFJlbW90ZU1lZGlhUGxheWVyTWFuYWdlci5tZXNzYWdlcy5pbiAq
LywKKwkJCSk7CisJCQlwYXRoID0gbWVkaWE7CisJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwor
CQl9OworCQkwN0M3NUMxNzIzOTlBM0RCMDA4OEU2NUIgLyogbWVkaWEgKi8gPSB7CisJCQlpc2Eg
PSBQQlhHcm91cDsKKwkJCWNoaWxkcmVuID0gKAorCQkJCTA3MjVFRkFEMjM5QjAyNDUwMEE1MzhB
OSAvKiBSZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eS5jcHAgKi8sCisJCQkJMDcyNUVGQUMy
MzlBRTM4NTAwQTUzOEE5IC8qIFJlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5LmggKi8sCisJ
CQkJMDcyNUVGQUIyMzlBRTM4NDAwQTUzOEE5IC8qIFJlbW90ZU1lZGlhUGxheWVyTWFuYWdlclBy
b3h5Lm1lc3NhZ2VzLmluICovLAorCQkJKTsKKwkJCXBhdGggPSBtZWRpYTsKKwkJCXNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7CisJCX07CiAJCTA4NjdENjkxRkU4NDAyOEZDMDJBQUMwNyAvKiBXZWJL
aXQyICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKQEAgLTYxOTIs
NiArNjIzNyw3IEBACiAJCTJEN0U0M0JGMjM3NTJDRDkwMEVBNUNBMCAvKiBHUFUgKi8gPSB7CiAJ
CQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAorCQkJCTA3OTIzMTJGMjM5QjNCMEMw
MDk1OThFMiAvKiBtZWRpYSAqLywKIAkJCQkyRDdFNDNDMDIzNzUyQ0Q5MDBFQTVDQTAgLyogR1BV
UHJvY2Vzc0Nvbm5lY3Rpb24uY3BwICovLAogCQkJCTJEN0U0M0MzMjM3NTJDRDkwMEVBNUNBMCAv
KiBHUFVQcm9jZXNzQ29ubmVjdGlvbi5oICovLAogCQkJCTJEN0U0M0MyMjM3NTJDRDkwMEVBNUNB
MCAvKiBHUFVQcm9jZXNzQ29ubmVjdGlvbi5tZXNzYWdlcy5pbiAqLywKQEAgLTYyMDYsNiArNjI1
Miw3IEBACiAJCQkJMkQ5RkIyMEQyMzc1MjA5RDAwNDlGOTM2IC8qIEVudHJ5UG9pbnQgKi8sCiAJ
CQkJMkQ5RkIyMDQyMzc1MjA5RDAwNDlGOTM2IC8qIGlvcyAqLywKIAkJCQkyRDlGQjIwNjIzNzUy
MDlEMDA0OUY5MzYgLyogbWFjICovLAorCQkJCTA3Qzc1QzE3MjM5OUEzREIwMDg4RTY1QiAvKiBt
ZWRpYSAqLywKIAkJCQkyRDlGQjIwQzIzNzUyMDlEMDA0OUY5MzYgLyogR1BVQ29ubmVjdGlvblRv
V2ViUHJvY2Vzcy5jcHAgKi8sCiAJCQkJMkQ5RkIyMDAyMzc1MjA5RDAwNDlGOTM2IC8qIEdQVUNv
bm5lY3Rpb25Ub1dlYlByb2Nlc3MuaCAqLywKIAkJCQkyRDlGQjIwOTIzNzUyMDlEMDA0OUY5MzYg
LyogR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbiAqLywKQEAgLTkxMTgsNiAr
OTE2NSwxMiBAQAogCQkJCTFBOEVGQTZGMTI1MkI4NDEwMEY3MDY3RiAvKiBQbHVnaW5Qcm94eU1l
c3NhZ2VzLmggKi8sCiAJCQkJMEZGMjRBMkIxODc5RTRCQzAwM0FCRjBDIC8qIFJlbW90ZUxheWVy
VHJlZURyYXdpbmdBcmVhUHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwICovLAogCQkJCTBGRjI0QTJD
MTg3OUU0QkMwMDNBQkYwQyAvKiBSZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYVByb3h5TWVzc2Fn
ZXMuaCAqLywKKwkJCQkwNzkyMzE0MzIzOUNCQ0I2MDA5NTk4RTIgLyogUmVtb3RlTWVkaWFQbGF5
ZXJNYW5hZ2VyTWVzc2FnZVJlY2VpdmVyLmNwcCAqLywKKwkJCQkwNzkyMzE0NzIzOUNCQ0I3MDA5
NTk4RTIgLyogUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyTWVzc2FnZXMuaCAqLywKKwkJCQkwNzky
MzE0NDIzOUNCQ0I2MDA5NTk4RTIgLyogUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyTWVzc2FnZXNS
ZXBsaWVzLmggKi8sCisJCQkJMDc5MjMxNDUyMzlDQkNCNzAwOTU5OEUyIC8qIFJlbW90ZU1lZGlh
UGxheWVyTWFuYWdlclByb3h5TWVzc2FnZVJlY2VpdmVyLmNwcCAqLywKKwkJCQkwNzkyMzE0NjIz
OUNCQ0I3MDA5NTk4RTIgLyogUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHlNZXNzYWdlcy5o
ICovLAorCQkJCTA3OTIzMTQyMjM5Q0JDQjUwMDk1OThFMiAvKiBSZW1vdGVNZWRpYVBsYXllck1h
bmFnZXJQcm94eU1lc3NhZ2VzUmVwbGllcy5oICovLAogCQkJCTFBQzEzMzgzMTg1OTBDNDYwMEYz
RUMwNSAvKiBSZW1vdGVPYmplY3RSZWdpc3RyeU1lc3NhZ2VSZWNlaXZlci5jcHAgKi8sCiAJCQkJ
MUFDMTMzODQxODU5MEM0NjAwRjNFQzA1IC8qIFJlbW90ZU9iamVjdFJlZ2lzdHJ5TWVzc2FnZXMu
aCAqLywKIAkJCQkwRjU5NDdBNTE4N0I1MTc2MDA0Mzc4NTcgLyogUmVtb3RlU2Nyb2xsaW5nQ29v
cmRpbmF0b3JNZXNzYWdlUmVjZWl2ZXIuY3BwICovLApAQCAtOTgzNSw2ICs5ODg4LDcgQEAKIAkJ
CQlCQ0M1NkY3OTExNTk5NTdEMDAxQ0NBRjkgLyogTWFjaFBvcnQuaCBpbiBIZWFkZXJzICovLAog
CQkJCTFBMjRCNUYzMTFGNTMxRTgwMEMzODI2OSAvKiBNYWNoVXRpbGl0aWVzLmggaW4gSGVhZGVy
cyAqLywKIAkJCQlDRTFBMEJENTFBNDhFNkM2MDA1NEVGNzQgLyogTWFuYWdlZENvbmZpZ3VyYXRp
b25TUEkuaCBpbiBIZWFkZXJzICovLAorCQkJCTA3OTIzMTRGMjM5RDYyM0UwMDk1OThFMiAvKiBN
ZWRpYVBsYXllclByaXZhdGVSZW1vdGVJZGVudGlmaWVyLmggaW4gSGVhZGVycyAqLywKIAkJCQk1
MTkzM0RFRjE5NjVFQjMxMDA4QUMzRUEgLyogTWVudVV0aWxpdGllcy5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJMUFDNEM4MjkxNkI4NzZBOTAwNjlEQ0NEIC8qIE1lc3NhZ2VGbGFncy5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJMUEzRUVEMTIxNjFBNTNENjAwQUVCNEY1IC8qIE1lc3NhZ2VSZWNlaXZlci5o
IGluIEhlYWRlcnMgKi8sCkBAIC05OTk1LDYgKzEwMDQ5LDEwIEBACiAJCQkJMEZGMjY0QTAxQTFG
RjlDQzAwMUZFNzU5IC8qIFJlbW90ZUxheWVyVHJlZVNjcm9sbGluZ1BlcmZvcm1hbmNlRGF0YS5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJMUFGMUFDNkMxNjUxNzU5RTAwQzE3RDdGIC8qIFJlbW90ZUxh
eWVyVHJlZVRyYW5zYWN0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQkyREMxOEZCMzIxOEE2RTlF
MDAyNUE4OEQgLyogUmVtb3RlTGF5ZXJUcmVlVmlld3MuaCBpbiBIZWFkZXJzICovLAorCQkJCTA3
OTIzMTREMjM5Q0JDQjgwMDk1OThFMiAvKiBSZW1vdGVNZWRpYVBsYXllck1hbmFnZXJNZXNzYWdl
cy5oIGluIEhlYWRlcnMgKi8sCisJCQkJMDc5MjMxNEEyMzlDQkNCODAwOTU5OEUyIC8qIFJlbW90
ZU1lZGlhUGxheWVyTWFuYWdlck1lc3NhZ2VzUmVwbGllcy5oIGluIEhlYWRlcnMgKi8sCisJCQkJ
MDc5MjMxNEMyMzlDQkNCODAwOTU5OEUyIC8qIFJlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5
TWVzc2FnZXMuaCBpbiBIZWFkZXJzICovLAorCQkJCTA3OTIzMTQ4MjM5Q0JDQjgwMDk1OThFMiAv
KiBSZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eU1lc3NhZ2VzUmVwbGllcy5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJRTFCNzg0NzExNjNGMjQ2OTAwMDdCNjkyIC8qIFJlbW90ZU5ldHdvcmtpbmdD
b250ZXh0LmggaW4gSGVhZGVycyAqLywKIAkJCQkxQTU3MDRGQzFCRTE3NTExMDA4NzRBRjEgLyog
UmVtb3RlT2JqZWN0SW52b2NhdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUFDMTMzODAxODU5
MEFFNDAwRjNFQzA1IC8qIFJlbW90ZU9iamVjdFJlZ2lzdHJ5LmggaW4gSGVhZGVycyAqLywKQEAg
LTExNjUyLDYgKzExNzEwLDggQEAKIAkJCQkyRDcyQTFGQTIxMkJGNDZFMDA1MTdBMjAgLyogUmVt
b3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWEubW0gaW4gU291cmNlcyAqLywKIAkJCQkwRkYyNEEyRDE4
NzlFNEJDMDAzQUJGMEMgLyogUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWFQcm94eU1lc3NhZ2VS
ZWNlaXZlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkyREMxOEZCNDIxOEE2RTlFMDAyNUE4OEQg
LyogUmVtb3RlTGF5ZXJUcmVlVmlld3MubW0gaW4gU291cmNlcyAqLywKKwkJCQkwNzkyMzE0OTIz
OUNCQ0I4MDA5NTk4RTIgLyogUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyTWVzc2FnZVJlY2VpdmVy
LmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTA3OTIzMTRCMjM5Q0JDQjgwMDk1OThFMiAvKiBSZW1v
dGVNZWRpYVBsYXllck1hbmFnZXJQcm94eU1lc3NhZ2VSZWNlaXZlci5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQkxQUMxMzM4NTE4NTkwQzQ2MDBGM0VDMDUgLyogUmVtb3RlT2JqZWN0UmVnaXN0cnlN
ZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEY1OTQ3QTcxODdCNTE3NjAw
NDM3ODU3IC8qIFJlbW90ZVNjcm9sbGluZ0Nvb3JkaW5hdG9yTWVzc2FnZVJlY2VpdmVyLmNwcCBp
biBTb3VyY2VzICovLAogCQkJCUE1NUJBODI2MUJBMjVDRkQwMDdDRDMzRCAvKiBSZW1vdGVXZWJJ
bnNwZWN0b3JQcm94eU1lc3NhZ2VSZWNlaXZlci5jcHAgaW4gU291cmNlcyAqLywKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvTWVkaWFQbGF5ZXJQcml2YXRl
UmVtb3RlLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvTWVkaWFQbGF5
ZXJQcml2YXRlUmVtb3RlLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41NmQ0MGZiNmY4MDUxNTQ5OGY0NTAyNTg0
ODRiZmQ3OGQxNGQ2MGE3Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL0dQVS9tZWRpYS9NZWRpYVBsYXllclByaXZhdGVSZW1vdGUuY3BwCkBAIC0wLDAgKzEsNzY3
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisg
KiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpbmNs
dWRlICJjb25maWcuaCIKKworI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykKKyNpbmNsdWRlICJNZWRp
YVBsYXllclByaXZhdGVSZW1vdGUuaCIKKworI2luY2x1ZGUgIkxvZ2dpbmcuaCIKKyNpbmNsdWRl
ICJSZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eU1lc3NhZ2VzLmgiCisjaW5jbHVkZSA8V2Vi
Q29yZS9Ob3RJbXBsZW1lbnRlZC5oPgorI2luY2x1ZGUgPFdlYkNvcmUvUGxhdGZvcm1MYXllci5o
PgorI2luY2x1ZGUgPFdlYkNvcmUvUGxhdGZvcm1UaW1lUmFuZ2VzLmg+CisjaW5jbHVkZSA8d3Rm
L0hhc2hNYXAuaD4KKyNpbmNsdWRlIDx3dGYvTWFpblRocmVhZC5oPgorI2luY2x1ZGUgPHd0Zi9T
dHJpbmdQcmludFN0cmVhbS5oPgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KKyNpbmNsdWRlIDx3dGYv
dGV4dC9DU3RyaW5nLmg+CisKK25hbWVzcGFjZSBXZWJLaXQgewordXNpbmcgbmFtZXNwYWNlIFBB
TDsKK3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOworCitNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6
Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZShNZWRpYVBsYXllciogcGxheWVyLCBjb25zdCBTdHJp
bmcmIHJlbW90ZUVuZ2luZUlkZW50aWZpZXIsIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZUlkZW50
aWZpZXIgaWRlbnRpZmllciwgUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyJiBtYW5hZ2VyKQorICAg
IDogbV9wbGF5ZXIocGxheWVyKQorICAgICwgbV9tYW5hZ2VyKG1hbmFnZXIpCisgICAgLCBtX3Jl
bW90ZUVuZ2luZUlkZW50aWZpZXIocmVtb3RlRW5naW5lSWRlbnRpZmllcikKKyAgICAsIG1faWRl
bnRpZmllcihpZGVudGlmaWVyKQorI2lmICFSRUxFQVNFX0xPR19ESVNBQkxFRAorICAgICwgbV9s
b2dnZXIocGxheWVyLT5tZWRpYVBsYXllckxvZ2dlcigpKQorICAgICwgbV9sb2dJZGVudGlmaWVy
KHBsYXllci0+bWVkaWFQbGF5ZXJMb2dJZGVudGlmaWVyKCkpCisjZW5kaWYKK3sKKyAgICBJTkZP
X0xPRyhMT0dJREVOVElGSUVSKTsKK30KKworTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjp+TWVk
aWFQbGF5ZXJQcml2YXRlUmVtb3RlKCkKK3sKKyAgICBJTkZPX0xPRyhMT0dJREVOVElGSUVSKTsK
KyAgICBtX3BsYXllciA9IG51bGxwdHI7Cit9CisKK3ZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlUmVt
b3RlOjpNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OmxvYWQoY29uc3QgU3RyaW5nJikKK3sKKyAg
ICBub3RJbXBsZW1lbnRlZCgpOworfQorCisjaWYgRU5BQkxFKE1FRElBX1NPVVJDRSkKK3ZvaWQg
TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpsb2FkKGNvbnN0IFN0cmluZyYsIE1lZGlhU291cmNl
UHJpdmF0ZUNsaWVudCopCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKyNlbmRpZgorCisj
aWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKK3ZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjps
b2FkKE1lZGlhU3RyZWFtUHJpdmF0ZSYpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKyNl
bmRpZgordm9pZCBNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OmNhbmNlbExvYWQoKQoreworICAg
IG5vdEltcGxlbWVudGVkKCk7Cit9CisKKwordm9pZCBNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6
OnByZXBhcmVUb1BsYXkoKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKK1BsYXRmb3Jt
TGF5ZXIqIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6cGxhdGZvcm1MYXllcigpIGNvbnN0Cit7
CisgICAgcmV0dXJuIG51bGxwdHI7Cit9CisKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKSB8fCAo
UExBVEZPUk0oTUFDKSAmJiBFTkFCTEUoVklERU9fUFJFU0VOVEFUSU9OX01PREUpKQordm9pZCBN
ZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OnNldFZpZGVvRnVsbHNjcmVlbkxheWVyKFBsYXRmb3Jt
TGF5ZXIqLCBXVEY6OkZ1bmN0aW9uPHZvaWQoKT4mJikKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgp
OworfQorCit2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6dXBkYXRlVmlkZW9GdWxsc2Ny
ZWVuSW5saW5lSW1hZ2UoKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKK3ZvaWQgTWVk
aWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpzZXRWaWRlb0Z1bGxzY3JlZW5GcmFtZShGbG9hdFJlY3Qp
Cit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwordm9pZCBNZWRpYVBsYXllclByaXZhdGVS
ZW1vdGU6OnNldFZpZGVvRnVsbHNjcmVlbkdyYXZpdHkoTWVkaWFQbGF5ZXI6OlZpZGVvR3Jhdml0
eSkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCit2b2lkIE1lZGlhUGxheWVyUHJpdmF0
ZVJlbW90ZTo6c2V0VmlkZW9GdWxsc2NyZWVuTW9kZShNZWRpYVBsYXllcjo6VmlkZW9GdWxsc2Ny
ZWVuTW9kZSkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCit2b2lkIE1lZGlhUGxheWVy
UHJpdmF0ZVJlbW90ZTo6dmlkZW9GdWxsc2NyZWVuU3RhbmRieUNoYW5nZWQoKQoreworICAgIG5v
dEltcGxlbWVudGVkKCk7Cit9CisjZW5kaWYKKworI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCitO
U0FycmF5KiBNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OnRpbWVkTWV0YWRhdGEoKSBjb25zdAor
eworICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIG51bGxwdHI7Cit9CisKK1N0cmlu
ZyBNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OmFjY2Vzc0xvZygpIGNvbnN0Cit7CisgICAgbm90
SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gZW1wdHlTdHJpbmcoKTsKK30KKworU3RyaW5nIE1l
ZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6ZXJyb3JMb2coKSBjb25zdAoreworICAgIG5vdEltcGxl
bWVudGVkKCk7CisgICAgcmV0dXJuIGVtcHR5U3RyaW5nKCk7Cit9CisjZW5kaWYKKworbG9uZyBN
ZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OnBsYXRmb3JtRXJyb3JDb2RlKCkgY29uc3QKK3sKKyAg
ICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiAwOworfQorCit2b2lkIE1lZGlhUGxheWVy
UHJpdmF0ZVJlbW90ZTo6cGxheSgpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwordm9p
ZCBNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OnBhdXNlKCkKK3sKKyAgICBub3RJbXBsZW1lbnRl
ZCgpOworfQorCit2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6c2V0QnVmZmVyaW5nUG9s
aWN5KE1lZGlhUGxheWVyOjpCdWZmZXJpbmdQb2xpY3kpCit7CisgICAgbm90SW1wbGVtZW50ZWQo
KTsKK30KKworYm9vbCBNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OnN1cHBvcnRzUGljdHVyZUlu
UGljdHVyZSgpIGNvbnN0Cit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gZmFs
c2U7Cit9CisKK2Jvb2wgTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpzdXBwb3J0c0Z1bGxzY3Jl
ZW4oKSBjb25zdAoreworICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIGZhbHNlOwor
fQorCitib29sIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6c3VwcG9ydHNTY2FubmluZygpIGNv
bnN0Cit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK2Jv
b2wgTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpyZXF1aXJlc0ltbWVkaWF0ZUNvbXBvc2l0aW5n
KCkgY29uc3QKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiBmYWxzZTsKK30K
KworYm9vbCBNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OmNhblNhdmVNZWRpYURhdGEoKSBjb25z
dAoreworICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIGZhbHNlOworfQorCitGbG9h
dFNpemUgTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpuYXR1cmFsU2l6ZSgpIGNvbnN0Cit7Cisg
ICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4geyB9OworfQorCitib29sIE1lZGlhUGxh
eWVyUHJpdmF0ZVJlbW90ZTo6aGFzVmlkZW8oKSBjb25zdAoreworICAgIG5vdEltcGxlbWVudGVk
KCk7CisgICAgcmV0dXJuIGZhbHNlOworfQorCitib29sIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90
ZTo6aGFzQXVkaW8oKSBjb25zdAoreworICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJu
IGZhbHNlOworfQorCit2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6c2V0VmlzaWJsZShi
b29sKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKK01lZGlhVGltZSBNZWRpYVBsYXll
clByaXZhdGVSZW1vdGU6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6ZHVyYXRpb25NZWRpYVRp
bWUoKSBjb25zdAoreworICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIE1lZGlhVGlt
ZTo6emVyb1RpbWUoKTsKK30KKworTWVkaWFUaW1lIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6
Y3VycmVudE1lZGlhVGltZSgpIGNvbnN0Cit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICBy
ZXR1cm4gTWVkaWFUaW1lOjp6ZXJvVGltZSgpOworfQorCitNZWRpYVRpbWUgTWVkaWFQbGF5ZXJQ
cml2YXRlUmVtb3RlOjpnZXRTdGFydERhdGUoKSBjb25zdAoreworICAgIG5vdEltcGxlbWVudGVk
KCk7CisgICAgcmV0dXJuIE1lZGlhVGltZTo6emVyb1RpbWUoKTsKK30KKwordm9pZCBNZWRpYVBs
YXllclByaXZhdGVSZW1vdGU6OnNlZWsoY29uc3QgTWVkaWFUaW1lJikKK3sKKyAgICBub3RJbXBs
ZW1lbnRlZCgpOworfQorCit2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6c2Vla1dpdGhU
b2xlcmFuY2UoY29uc3QgTWVkaWFUaW1lJiwgY29uc3QgTWVkaWFUaW1lJiwgY29uc3QgTWVkaWFU
aW1lJikKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCitib29sIE1lZGlhUGxheWVyUHJp
dmF0ZVJlbW90ZTo6c2Vla2luZygpIGNvbnN0Cit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAg
ICByZXR1cm4gZmFsc2U7Cit9CisKK01lZGlhVGltZSBNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6
OnN0YXJ0VGltZSgpIGNvbnN0Cit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4g
TWVkaWFUaW1lOjp6ZXJvVGltZSgpOworfQorCit2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90
ZTo6c2V0UmF0ZURvdWJsZShkb3VibGUpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwor
ZG91YmxlIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6cmF0ZSgpIGNvbnN0Cit7CisgICAgbm90
SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gMDsKK30KKwordm9pZCBNZWRpYVBsYXllclByaXZh
dGVSZW1vdGU6OnNldFByZXNlcnZlc1BpdGNoKGJvb2wpCit7CisgICAgbm90SW1wbGVtZW50ZWQo
KTsKK30KKworYm9vbCBNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OnBhdXNlZCgpIGNvbnN0Cit7
CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK3ZvaWQgTWVk
aWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpzZXRWb2x1bWVEb3VibGUoZG91YmxlKQoreworICAgIG5v
dEltcGxlbWVudGVkKCk7Cit9CisKK3ZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpzZXRN
dXRlZChib29sKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKK2Jvb2wgTWVkaWFQbGF5
ZXJQcml2YXRlUmVtb3RlOjpoYXNDbG9zZWRDYXB0aW9ucygpIGNvbnN0Cit7CisgICAgbm90SW1w
bGVtZW50ZWQoKTsKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK3ZvaWQgTWVkaWFQbGF5ZXJQcml2
YXRlUmVtb3RlOjpzZXRDbG9zZWRDYXB0aW9uc1Zpc2libGUoYm9vbCkKK3sKKyAgICBub3RJbXBs
ZW1lbnRlZCgpOworfQorCitkb3VibGUgTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjptYXhGYXN0
Rm9yd2FyZFJhdGUoKSBjb25zdAoreworICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJu
IDA7Cit9CisKK2RvdWJsZSBNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6Om1pbkZhc3RSZXZlcnNl
UmF0ZSgpIGNvbnN0Cit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gMDsKK30K
KworTWVkaWFQbGF5ZXI6Ok5ldHdvcmtTdGF0ZSBNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6Om5l
dHdvcmtTdGF0ZSgpIGNvbnN0Cit7CisgICAgaWYgKG1faW52YWxpZCkKKyAgICAgICAgcmV0dXJu
IE1lZGlhUGxheWVyOjpGb3JtYXRFcnJvcjsKKworICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAg
cmV0dXJuIE1lZGlhUGxheWVyOjpFbXB0eTsKK30KKworTWVkaWFQbGF5ZXI6OlJlYWR5U3RhdGUg
TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpyZWFkeVN0YXRlKCkgY29uc3QKK3sKKyAgICBpZiAo
bV9pbnZhbGlkKQorICAgICAgICByZXR1cm4gTWVkaWFQbGF5ZXI6OkhhdmVOb3RoaW5nOworCisg
ICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gTWVkaWFQbGF5ZXI6OkhhdmVOb3RoaW5n
OworfQorCitzdGQ6OnVuaXF1ZV9wdHI8UGxhdGZvcm1UaW1lUmFuZ2VzPiBNZWRpYVBsYXllclBy
aXZhdGVSZW1vdGU6OnNlZWthYmxlKCkgY29uc3QKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOwor
ICAgIHJldHVybiBtYWtlVW5pcXVlPFBsYXRmb3JtVGltZVJhbmdlcz4oKTsKK30KKworc3RkOjp1
bmlxdWVfcHRyPFBsYXRmb3JtVGltZVJhbmdlcz4gTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpi
dWZmZXJlZCgpIGNvbnN0Cit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gbWFr
ZVVuaXF1ZTxQbGF0Zm9ybVRpbWVSYW5nZXM+KCk7Cit9CisKK01lZGlhVGltZSBNZWRpYVBsYXll
clByaXZhdGVSZW1vdGU6Om1heE1lZGlhVGltZVNlZWthYmxlKCkgY29uc3QKK3sKKyAgICBub3RJ
bXBsZW1lbnRlZCgpOworICAgIHJldHVybiBNZWRpYVRpbWU6Onplcm9UaW1lKCk7Cit9CisKK01l
ZGlhVGltZSBNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6Om1pbk1lZGlhVGltZVNlZWthYmxlKCkg
Y29uc3QKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiBNZWRpYVRpbWU6Onpl
cm9UaW1lKCk7Cit9CisKK2RvdWJsZSBNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OnNlZWthYmxl
VGltZVJhbmdlc0xhc3RNb2RpZmllZFRpbWUoKSBjb25zdAoreworICAgIG5vdEltcGxlbWVudGVk
KCk7CisgICAgcmV0dXJuIDA7Cit9CisKK2RvdWJsZSBNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6
OmxpdmVVcGRhdGVJbnRlcnZhbCgpIGNvbnN0Cit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAg
ICByZXR1cm4gMDsKK30KKwordW5zaWduZWQgbG9uZyBsb25nIE1lZGlhUGxheWVyUHJpdmF0ZVJl
bW90ZTo6dG90YWxCeXRlcygpIGNvbnN0Cit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICBy
ZXR1cm4gMDsKK30KKworYm9vbCBNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OmRpZExvYWRpbmdQ
cm9ncmVzcygpIGNvbnN0Cit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gZmFs
c2U7Cit9CisKK3ZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpzZXRTaXplKGNvbnN0IElu
dFNpemUmKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKK3ZvaWQgTWVkaWFQbGF5ZXJQ
cml2YXRlUmVtb3RlOjpwYWludChHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJlY3QmKQor
eworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKK3ZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlUmVt
b3RlOjpwYWludEN1cnJlbnRGcmFtZUluQ29udGV4dChHcmFwaGljc0NvbnRleHQmLCBjb25zdCBG
bG9hdFJlY3QmKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKK2Jvb2wgTWVkaWFQbGF5
ZXJQcml2YXRlUmVtb3RlOjpjb3B5VmlkZW9UZXh0dXJlVG9QbGF0Zm9ybVRleHR1cmUoR3JhcGhp
Y3NDb250ZXh0M0QqLCBQbGF0Zm9ybTNET2JqZWN0LCBHQzNEZW51bSwgR0MzRGludCwgR0MzRGVu
dW0sIEdDM0RlbnVtLCBHQzNEZW51bSwgYm9vbCwgYm9vbCkKK3sKKyAgICBub3RJbXBsZW1lbnRl
ZCgpOworICAgIHJldHVybiBmYWxzZTsKK30KKworTmF0aXZlSW1hZ2VQdHIgTWVkaWFQbGF5ZXJQ
cml2YXRlUmVtb3RlOjpuYXRpdmVJbWFnZUZvckN1cnJlbnRUaW1lKCkKK3sKKyAgICBub3RJbXBs
ZW1lbnRlZCgpOworICAgIHJldHVybiBudWxscHRyOworfQorCit2b2lkIE1lZGlhUGxheWVyUHJp
dmF0ZVJlbW90ZTo6c2V0UHJlbG9hZChNZWRpYVBsYXllcjo6UHJlbG9hZCkKK3sKKyAgICBub3RJ
bXBsZW1lbnRlZCgpOworfQorCitib29sIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6aGFzQXZh
aWxhYmxlVmlkZW9GcmFtZSgpIGNvbnN0Cit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICBy
ZXR1cm4gZmFsc2U7Cit9CisKK2Jvb2wgTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpjYW5Mb2Fk
UG9zdGVyKCkgY29uc3QKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiBmYWxz
ZTsKK30KKwordm9pZCBNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OnNldFBvc3Rlcihjb25zdCBT
dHJpbmcmKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKKyNpZiBVU0UoTkFUSVZFX0ZV
TExTQ1JFRU5fVklERU8pCit2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6ZW50ZXJGdWxs
c2NyZWVuKCkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCit2b2lkIE1lZGlhUGxheWVy
UHJpdmF0ZVJlbW90ZTo6ZXhpdEZ1bGxzY3JlZW4oKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7
Cit9CisjZW5kaWYKKworI2lmIEVOQUJMRShXSVJFTEVTU19QTEFZQkFDS19UQVJHRVQpCitTdHJp
bmcgTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjp3aXJlbGVzc1BsYXliYWNrVGFyZ2V0TmFtZSgp
IGNvbnN0Cit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gZW1wdHlTdHJpbmco
KTsKK30KKworTWVkaWFQbGF5ZXI6OldpcmVsZXNzUGxheWJhY2tUYXJnZXRUeXBlIE1lZGlhUGxh
eWVyUHJpdmF0ZVJlbW90ZTo6d2lyZWxlc3NQbGF5YmFja1RhcmdldFR5cGUoKSBjb25zdAorewor
ICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIE1lZGlhUGxheWVyOjpUYXJnZXRUeXBl
Tm9uZTsKK30KKworYm9vbCBNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OndpcmVsZXNzVmlkZW9Q
bGF5YmFja0Rpc2FibGVkKCkgY29uc3QKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJl
dHVybiB0cnVlOworfQorCit2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6c2V0V2lyZWxl
c3NWaWRlb1BsYXliYWNrRGlzYWJsZWQoYm9vbCkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOwor
fQorCitib29sIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6Y2FuUGxheVRvV2lyZWxlc3NQbGF5
YmFja1RhcmdldCgpIGNvbnN0Cit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4g
ZmFsc2U7Cit9CisKK2Jvb2wgTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjppc0N1cnJlbnRQbGF5
YmFja1RhcmdldFdpcmVsZXNzKCkgY29uc3QKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAg
IHJldHVybiBmYWxzZTsKK30KKwordm9pZCBNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OnNldFdp
cmVsZXNzUGxheWJhY2tUYXJnZXQoUmVmPE1lZGlhUGxheWJhY2tUYXJnZXQ+JiYpCit7CisgICAg
bm90SW1wbGVtZW50ZWQoKTsKK30KKwordm9pZCBNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OnNl
dFNob3VsZFBsYXlUb1BsYXliYWNrVGFyZ2V0KGJvb2wpCit7CisgICAgbm90SW1wbGVtZW50ZWQo
KTsKK30KKyNlbmRpZgorCisjaWYgVVNFKE5BVElWRV9GVUxMU0NSRUVOX1ZJREVPKQorYm9vbCBN
ZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OmNhbkVudGVyRnVsbHNjcmVlbigpIGNvbnN0Cit7Cisg
ICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gZmFsc2U7Cit9CisjZW5kaWYKKworYm9v
bCBNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OnN1cHBvcnRzQWNjZWxlcmF0ZWRSZW5kZXJpbmco
KSBjb25zdAoreworICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIGZhbHNlOworfQor
Cit2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6YWNjZWxlcmF0ZWRSZW5kZXJpbmdTdGF0
ZUNoYW5nZWQoKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKK2Jvb2wgTWVkaWFQbGF5
ZXJQcml2YXRlUmVtb3RlOjpzaG91bGRNYWludGFpbkFzcGVjdFJhdGlvKCkgY29uc3QKK3sKKyAg
ICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiB0cnVlOworfQorCit2b2lkIE1lZGlhUGxh
eWVyUHJpdmF0ZVJlbW90ZTo6c2V0U2hvdWxkTWFpbnRhaW5Bc3BlY3RSYXRpbyhib29sKQorewor
ICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKK2Jvb2wgTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3Rl
OjpoYXNTaW5nbGVTZWN1cml0eU9yaWdpbigpIGNvbnN0Cit7CisgICAgbm90SW1wbGVtZW50ZWQo
KTsKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK2Jvb2wgTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3Rl
OjpkaWRQYXNzQ09SU0FjY2Vzc0NoZWNrKCkgY29uc3QKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgp
OworICAgIHJldHVybiBmYWxzZTsKK30KKworT3B0aW9uYWw8Ym9vbD4gTWVkaWFQbGF5ZXJQcml2
YXRlUmVtb3RlOjp3b3VsZFRhaW50T3JpZ2luKGNvbnN0IFNlY3VyaXR5T3JpZ2luJikgY29uc3QK
K3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Cit9CisK
K01lZGlhUGxheWVyOjpNb3ZpZUxvYWRUeXBlIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6bW92
aWVMb2FkVHlwZSgpIGNvbnN0Cit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4g
TWVkaWFQbGF5ZXI6OlVua25vd247Cit9CisKK3ZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3Rl
OjpwcmVwYXJlRm9yUmVuZGVyaW5nKCkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCitN
ZWRpYVRpbWUgTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjptZWRpYVRpbWVGb3JUaW1lVmFsdWUo
Y29uc3QgTWVkaWFUaW1lJiB0aW1lVmFsdWUpIGNvbnN0Cit7CisgICAgbm90SW1wbGVtZW50ZWQo
KTsKKyAgICByZXR1cm4gdGltZVZhbHVlOworfQorCitkb3VibGUgTWVkaWFQbGF5ZXJQcml2YXRl
UmVtb3RlOjptYXhpbXVtRHVyYXRpb25Ub0NhY2hlTWVkaWFUaW1lKCkgY29uc3QKK3sKKyAgICBu
b3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiAwOworfQorCit1bnNpZ25lZCBNZWRpYVBsYXll
clByaXZhdGVSZW1vdGU6OmRlY29kZWRGcmFtZUNvdW50KCkgY29uc3QKK3sKKyAgICBub3RJbXBs
ZW1lbnRlZCgpOworICAgIHJldHVybiAwOworfQorCit1bnNpZ25lZCBNZWRpYVBsYXllclByaXZh
dGVSZW1vdGU6OmRyb3BwZWRGcmFtZUNvdW50KCkgY29uc3QKK3sKKyAgICBub3RJbXBsZW1lbnRl
ZCgpOworICAgIHJldHVybiAwOworfQorCit1bnNpZ25lZCBNZWRpYVBsYXllclByaXZhdGVSZW1v
dGU6OmF1ZGlvRGVjb2RlZEJ5dGVDb3VudCgpIGNvbnN0Cit7CisgICAgbm90SW1wbGVtZW50ZWQo
KTsKKyAgICByZXR1cm4gMDsKK30KKwordW5zaWduZWQgTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3Rl
Ojp2aWRlb0RlY29kZWRCeXRlQ291bnQoKSBjb25zdAoreworICAgIG5vdEltcGxlbWVudGVkKCk7
CisgICAgcmV0dXJuIDA7Cit9CisKK3ZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpzZXRQ
cml2YXRlQnJvd3NpbmdNb2RlKGJvb2wpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwor
U3RyaW5nIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6ZW5naW5lRGVzY3JpcHRpb24oKSBjb25z
dAoreworICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIGVtcHR5U3RyaW5nKCk7Cit9
CisKKyNpZiBFTkFCTEUoV0VCX0FVRElPKQorQXVkaW9Tb3VyY2VQcm92aWRlciogTWVkaWFQbGF5
ZXJQcml2YXRlUmVtb3RlOjphdWRpb1NvdXJjZVByb3ZpZGVyKCkKK3sKKyAgICBub3RJbXBsZW1l
bnRlZCgpOworICAgIHJldHVybiBudWxscHRyOworfQorI2VuZGlmCisKKyNpZiBFTkFCTEUoTEVH
QUNZX0VOQ1JZUFRFRF9NRURJQSkKK3N0ZDo6dW5pcXVlX3B0cjxMZWdhY3lDRE1TZXNzaW9uPiBN
ZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OmNyZWF0ZVNlc3Npb24oY29uc3QgU3RyaW5nJiwgTGVn
YWN5Q0RNU2Vzc2lvbkNsaWVudCopCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1
cm4gbnVsbHB0cjsKK30KKwordm9pZCBNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OnNldENETVNl
c3Npb24oTGVnYWN5Q0RNU2Vzc2lvbiopCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwor
dm9pZCBNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OmtleUFkZGVkKCkKK3sKKyAgICBub3RJbXBs
ZW1lbnRlZCgpOworfQorI2VuZGlmCisKKyNpZiBFTkFCTEUoRU5DUllQVEVEX01FRElBKQordm9p
ZCBNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OmNkbUluc3RhbmNlQXR0YWNoZWQoQ0RNSW5zdGFu
Y2UmKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKK3ZvaWQgTWVkaWFQbGF5ZXJQcml2
YXRlUmVtb3RlOjpjZG1JbnN0YW5jZURldGFjaGVkKENETUluc3RhbmNlJikKK3sKKyAgICBub3RJ
bXBsZW1lbnRlZCgpOworfQorCit2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6YXR0ZW1w
dFRvRGVjcnlwdFdpdGhJbnN0YW5jZShDRE1JbnN0YW5jZSYpCit7CisgICAgbm90SW1wbGVtZW50
ZWQoKTsKK30KKworYm9vbCBNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OndhaXRpbmdGb3JLZXko
KSBjb25zdAoreworICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIGZhbHNlOworfQor
I2VuZGlmCisKKyNpZiBFTkFCTEUoVklERU9fVFJBQ0spCitib29sIE1lZGlhUGxheWVyUHJpdmF0
ZVJlbW90ZTo6cmVxdWlyZXNUZXh0VHJhY2tSZXByZXNlbnRhdGlvbigpIGNvbnN0Cit7CisgICAg
bm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK3ZvaWQgTWVkaWFQbGF5
ZXJQcml2YXRlUmVtb3RlOjpzZXRUZXh0VHJhY2tSZXByZXNlbnRhdGlvbihUZXh0VHJhY2tSZXBy
ZXNlbnRhdGlvbiopCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwordm9pZCBNZWRpYVBs
YXllclByaXZhdGVSZW1vdGU6OnN5bmNUZXh0VHJhY2tCb3VuZHMoKQoreworICAgIG5vdEltcGxl
bWVudGVkKCk7Cit9CisKK3ZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjp0cmFja3NDaGFu
Z2VkKCkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorI2VuZGlmCisKKyNpZiBVU0UoR1NU
UkVBTUVSKQordm9pZCBNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OnNpbXVsYXRlQXVkaW9JbnRl
cnJ1cHRpb24oKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisjZW5kaWYKKwordm9pZCBN
ZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OmJlZ2luU2ltdWxhdGVkSERDUEVycm9yKCkKK3sKKyAg
ICBub3RJbXBsZW1lbnRlZCgpOworfQorCit2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6
ZW5kU2ltdWxhdGVkSERDUEVycm9yKCkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCitT
dHJpbmcgTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpsYW5ndWFnZU9mUHJpbWFyeUF1ZGlvVHJh
Y2soKSBjb25zdAoreworICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIGVtcHR5U3Ry
aW5nKCk7Cit9CisKK3NpemVfdCBNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OmV4dHJhTWVtb3J5
Q29zdCgpIGNvbnN0Cit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gMDsKK30K
KwordW5zaWduZWQgbG9uZyBsb25nIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6ZmlsZVNpemUo
KSBjb25zdAoreworICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIDA7Cit9CisKK2Jv
b2wgTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjplbmRlZCgpIGNvbnN0Cit7CisgICAgbm90SW1w
bGVtZW50ZWQoKTsKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK09wdGlvbmFsPFZpZGVvUGxheWJh
Y2tRdWFsaXR5TWV0cmljcz4gTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjp2aWRlb1BsYXliYWNr
UXVhbGl0eU1ldHJpY3MoKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIFdU
Rjo6bnVsbG9wdDsKK30KKworI2lmIEVOQUJMRShBVkZfQ0FQVElPTlMpCit2b2lkIE1lZGlhUGxh
eWVyUHJpdmF0ZVJlbW90ZTo6bm90aWZ5VHJhY2tNb2RlQ2hhbmdlZCgpCit7CisgICAgbm90SW1w
bGVtZW50ZWQoKTsKK30KKyNlbmRpZgorCit2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6
bm90aWZ5QWN0aXZlU291cmNlQnVmZmVyc0NoYW5nZWQoKQoreworICAgIG5vdEltcGxlbWVudGVk
KCk7Cit9CisKK3ZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpzZXRTaG91bGREaXNhYmxl
U2xlZXAoYm9vbCkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCit2b2lkIE1lZGlhUGxh
eWVyUHJpdmF0ZVJlbW90ZTo6YXBwbGljYXRpb25XaWxsUmVzaWduQWN0aXZlKCkKK3sKKyAgICBu
b3RJbXBsZW1lbnRlZCgpOworfQorCit2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6YXBw
bGljYXRpb25EaWRCZWNvbWVBY3RpdmUoKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisK
K2Jvb2wgTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpwZXJmb3JtVGFza0F0TWVkaWFUaW1lKFdU
Rjo6RnVuY3Rpb248dm9pZCgpPiYmLCBNZWRpYVRpbWUpCit7CisgICAgbm90SW1wbGVtZW50ZWQo
KTsKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK2Jvb2wgTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3Rl
OjpzaG91bGRJZ25vcmVJbnRyaW5zaWNTaXplKCkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOwor
ICAgIHJldHVybiBmYWxzZTsKK30KKworI2lmICFSRUxFQVNFX0xPR19ESVNBQkxFRAorV1RGTG9n
Q2hhbm5lbCYgTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpsb2dDaGFubmVsKCkgY29uc3QKK3sK
KyAgICByZXR1cm4gV2ViS2l0MkxvZ1dlYlJUQzsKK30KKyNlbmRpZgorCit9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L0dQVS9tZWRpYS9NZWRpYVBsYXllclByaXZhdGVSZW1vdGUuaCBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9HUFUvbWVkaWEvTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlLmgKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
MmJlNDJiNDYyOWU5ZTFlMzBhNWIwNjc3MjI1NTlmN2JhNWQ1MmM1MwotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvTWVkaWFQbGF5ZXJQcml2YXRl
UmVtb3RlLmgKQEAgLTAsMCArMSwyOTcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBU
SEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4gCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoR1BVX1BST0NFU1Mp
CisKKyNpbmNsdWRlICJSZW1vdGVNZWRpYVBsYXllck1hbmFnZXIuaCIKKyNpbmNsdWRlIDxXZWJD
b3JlL01lZGlhUGxheWVyUHJpdmF0ZS5oPgorI2luY2x1ZGUgPHd0Zi9Mb2dnZXJIZWxwZXIuaD4K
KyNpbmNsdWRlIDx3dGYvTWVkaWFUaW1lLmg+CisjaW5jbHVkZSA8d3RmL1dlYWtQdHIuaD4KKwor
bmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZSBmaW5h
bAorICAgIDogcHVibGljIENhbk1ha2VXZWFrUHRyPE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZT4K
KyAgICAsIHB1YmxpYyBNZWRpYVBsYXllclByaXZhdGVJbnRlcmZhY2UKKyNpZiAhUkVMRUFTRV9M
T0dfRElTQUJMRUQKKyAgICAsIHByaXZhdGUgTG9nZ2VySGVscGVyCisjZW5kaWYKK3sKK3B1Ymxp
YzoKKyAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZT4g
Y3JlYXRlKE1lZGlhUGxheWVyKiBwbGF5ZXIsIGNvbnN0IFN0cmluZyYgcmVtb3RlRW5naW5lSWRl
bnRpZmllciwgTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlSWRlbnRpZmllciBpZGVudGlmaWVyLCBS
ZW1vdGVNZWRpYVBsYXllck1hbmFnZXImIG1hbmFnZXIpCisgICAgeworICAgICAgICByZXR1cm4g
bWFrZVVuaXF1ZTxNZWRpYVBsYXllclByaXZhdGVSZW1vdGU+KHBsYXllciwgcmVtb3RlRW5naW5l
SWRlbnRpZmllciwgaWRlbnRpZmllciwgbWFuYWdlcik7CisgICAgfQorCisgICAgZXhwbGljaXQg
TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlKE1lZGlhUGxheWVyKiwgY29uc3QgU3RyaW5nJiwgTWVk
aWFQbGF5ZXJQcml2YXRlUmVtb3RlSWRlbnRpZmllciwgUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2Vy
Jik7CisgICAgdmlydHVhbCB+TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlKCk7CisKKyAgICB2b2lk
IGludmFsaWRhdGUoKSB7IG1faW52YWxpZCA9IHRydWU7IH0KKworI2lmICFSRUxFQVNFX0xPR19E
SVNBQkxFRAorICAgIGNvbnN0IExvZ2dlciYgbG9nZ2VyKCkgY29uc3QgZmluYWwgeyByZXR1cm4g
bV9sb2dnZXIuZ2V0KCk7IH0KKyAgICBjb25zdCBjaGFyKiBsb2dDbGFzc05hbWUoKSBjb25zdCBv
dmVycmlkZSB7IHJldHVybiAiTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlIjsgfQorICAgIGNvbnN0
IHZvaWQqIGxvZ0lkZW50aWZpZXIoKSBjb25zdCBmaW5hbCB7IHJldHVybiByZWludGVycHJldF9j
YXN0PGNvbnN0IHZvaWQqPihtX2xvZ0lkZW50aWZpZXIpOyB9CisgICAgV1RGTG9nQ2hhbm5lbCYg
bG9nQ2hhbm5lbCgpIGNvbnN0IGZpbmFsOworI2VuZGlmCisKK3ByaXZhdGU6CisKKyAgICB2b2lk
IGxvYWQoY29uc3QgU3RyaW5nJikgZmluYWw7CisjaWYgRU5BQkxFKE1FRElBX1NPVVJDRSkKKyAg
ICB2b2lkIGxvYWQoY29uc3QgU3RyaW5nJiwgTWVkaWFTb3VyY2VQcml2YXRlQ2xpZW50KikgZmlu
YWw7CisjZW5kaWYKKyNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQorICAgIHZvaWQgbG9hZChNZWRp
YVN0cmVhbVByaXZhdGUmKSBmaW5hbDsKKyNlbmRpZgorICAgIHZvaWQgY2FuY2VsTG9hZCgpIGZp
bmFsOworICAgIAorICAgIHZvaWQgcHJlcGFyZVRvUGxheSgpIGZpbmFsOworICAgIFBsYXRmb3Jt
TGF5ZXIqIHBsYXRmb3JtTGF5ZXIoKSBjb25zdCBmaW5hbDsKKworI2lmIFBMQVRGT1JNKElPU19G
QU1JTFkpIHx8IChQTEFURk9STShNQUMpICYmIEVOQUJMRShWSURFT19QUkVTRU5UQVRJT05fTU9E
RSkpCisgICAgdm9pZCBzZXRWaWRlb0Z1bGxzY3JlZW5MYXllcihQbGF0Zm9ybUxheWVyKiwgV1RG
OjpGdW5jdGlvbjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpIGZpbmFsOworICAgIHZvaWQg
dXBkYXRlVmlkZW9GdWxsc2NyZWVuSW5saW5lSW1hZ2UoKSBmaW5hbDsKKyAgICB2b2lkIHNldFZp
ZGVvRnVsbHNjcmVlbkZyYW1lKEZsb2F0UmVjdCkgZmluYWw7CisgICAgdm9pZCBzZXRWaWRlb0Z1
bGxzY3JlZW5HcmF2aXR5KE1lZGlhUGxheWVyOjpWaWRlb0dyYXZpdHkpIGZpbmFsOworICAgIHZv
aWQgc2V0VmlkZW9GdWxsc2NyZWVuTW9kZShNZWRpYVBsYXllcjo6VmlkZW9GdWxsc2NyZWVuTW9k
ZSkgZmluYWw7CisgICAgdm9pZCB2aWRlb0Z1bGxzY3JlZW5TdGFuZGJ5Q2hhbmdlZCgpIGZpbmFs
OworI2VuZGlmCisKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQorICAgIE5TQXJyYXkgKnRpbWVk
TWV0YWRhdGEoKSBjb25zdCBmaW5hbDsKKyAgICBTdHJpbmcgYWNjZXNzTG9nKCkgY29uc3QgZmlu
YWw7CisgICAgU3RyaW5nIGVycm9yTG9nKCkgY29uc3QgZmluYWw7CisjZW5kaWYKKyAgICBsb25n
IHBsYXRmb3JtRXJyb3JDb2RlKCkgY29uc3QgZmluYWw7CisKKyAgICB2b2lkIHBsYXkoKSBmaW5h
bDsKKyAgICB2b2lkIHBhdXNlKCkgZmluYWw7CisgICAgdm9pZCBzZXRCdWZmZXJpbmdQb2xpY3ko
TWVkaWFQbGF5ZXI6OkJ1ZmZlcmluZ1BvbGljeSkgZmluYWw7CisKKyAgICBib29sIHN1cHBvcnRz
UGljdHVyZUluUGljdHVyZSgpIGNvbnN0IGZpbmFsOworICAgIGJvb2wgc3VwcG9ydHNGdWxsc2Ny
ZWVuKCkgY29uc3QgZmluYWw7CisgICAgYm9vbCBzdXBwb3J0c1NjYW5uaW5nKCkgY29uc3QgZmlu
YWw7CisgICAgYm9vbCByZXF1aXJlc0ltbWVkaWF0ZUNvbXBvc2l0aW5nKCkgY29uc3QgZmluYWw7
CisKKyAgICBib29sIGNhblNhdmVNZWRpYURhdGEoKSBjb25zdCBmaW5hbDsKKworICAgIEZsb2F0
U2l6ZSBuYXR1cmFsU2l6ZSgpIGNvbnN0IGZpbmFsOworCisgICAgYm9vbCBoYXNWaWRlbygpIGNv
bnN0IGZpbmFsOworICAgIGJvb2wgaGFzQXVkaW8oKSBjb25zdCBmaW5hbDsKKworICAgIHZvaWQg
c2V0VmlzaWJsZShib29sKSBmaW5hbDsKKworICAgIE1lZGlhVGltZSBkdXJhdGlvbk1lZGlhVGlt
ZSgpIGNvbnN0IGZpbmFsOworICAgIE1lZGlhVGltZSBjdXJyZW50TWVkaWFUaW1lKCkgY29uc3Qg
ZmluYWw7CisKKyAgICBNZWRpYVRpbWUgZ2V0U3RhcnREYXRlKCkgY29uc3QgZmluYWw7CisKKyAg
ICB2b2lkIHNlZWsoY29uc3QgTWVkaWFUaW1lJikgZmluYWw7CisgICAgdm9pZCBzZWVrV2l0aFRv
bGVyYW5jZShjb25zdCBNZWRpYVRpbWUmLCBjb25zdCBNZWRpYVRpbWUmLCBjb25zdCBNZWRpYVRp
bWUmKSBmaW5hbDsKKworICAgIGJvb2wgc2Vla2luZygpIGNvbnN0IGZpbmFsOworCisgICAgTWVk
aWFUaW1lIHN0YXJ0VGltZSgpIGNvbnN0IGZpbmFsOworCisgICAgdm9pZCBzZXRSYXRlRG91Ymxl
KGRvdWJsZSkgZmluYWw7CisgICAgZG91YmxlIHJhdGUoKSBjb25zdCBmaW5hbDsKKworICAgIHZv
aWQgc2V0UHJlc2VydmVzUGl0Y2goYm9vbCkgZmluYWw7CisKKyAgICBib29sIHBhdXNlZCgpIGNv
bnN0IGZpbmFsOworCisgICAgdm9pZCBzZXRWb2x1bWVEb3VibGUoZG91YmxlKSBmaW5hbDsKKwor
I2lmIFBMQVRGT1JNKElPU19GQU1JTFkpIHx8IFVTRShHU1RSRUFNRVIpCisgICAgZmxvYXQgdm9s
dW1lKCkgY29uc3QgZmluYWwgeyByZXR1cm4gMTsgfQorI2VuZGlmCisKKyAgICB2b2lkIHNldE11
dGVkKGJvb2wpIGZpbmFsOworCisgICAgYm9vbCBoYXNDbG9zZWRDYXB0aW9ucygpIGNvbnN0IGZp
bmFsOworICAgIHZvaWQgc2V0Q2xvc2VkQ2FwdGlvbnNWaXNpYmxlKGJvb2wpIGZpbmFsOworCisg
ICAgZG91YmxlIG1heEZhc3RGb3J3YXJkUmF0ZSgpIGNvbnN0IGZpbmFsOworICAgIGRvdWJsZSBt
aW5GYXN0UmV2ZXJzZVJhdGUoKSBjb25zdCBmaW5hbDsKKworICAgIE1lZGlhUGxheWVyOjpOZXR3
b3JrU3RhdGUgbmV0d29ya1N0YXRlKCkgY29uc3QgZmluYWw7CisgICAgTWVkaWFQbGF5ZXI6OlJl
YWR5U3RhdGUgcmVhZHlTdGF0ZSgpIGNvbnN0IGZpbmFsOworCisgICAgc3RkOjp1bmlxdWVfcHRy
PFBsYXRmb3JtVGltZVJhbmdlcz4gc2Vla2FibGUoKSBjb25zdCBmaW5hbDsKKworICAgIE1lZGlh
VGltZSBtYXhNZWRpYVRpbWVTZWVrYWJsZSgpIGNvbnN0IGZpbmFsOworICAgIE1lZGlhVGltZSBt
aW5NZWRpYVRpbWVTZWVrYWJsZSgpIGNvbnN0IGZpbmFsOworICAgIHN0ZDo6dW5pcXVlX3B0cjxQ
bGF0Zm9ybVRpbWVSYW5nZXM+IGJ1ZmZlcmVkKCkgY29uc3QgZmluYWw7CisgICAgZG91YmxlIHNl
ZWthYmxlVGltZVJhbmdlc0xhc3RNb2RpZmllZFRpbWUoKSBjb25zdCBmaW5hbDsKKyAgICBkb3Vi
bGUgbGl2ZVVwZGF0ZUludGVydmFsKCkgY29uc3QgZmluYWw7CisKKyAgICB1bnNpZ25lZCBsb25n
IGxvbmcgdG90YWxCeXRlcygpIGNvbnN0IGZpbmFsOworICAgIGJvb2wgZGlkTG9hZGluZ1Byb2dy
ZXNzKCkgY29uc3QgZmluYWw7CisKKyAgICB2b2lkIHNldFNpemUoY29uc3QgSW50U2l6ZSYpIGZp
bmFsOworCisgICAgdm9pZCBwYWludChHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJlY3Qm
KSBmaW5hbDsKKworICAgIHZvaWQgcGFpbnRDdXJyZW50RnJhbWVJbkNvbnRleHQoR3JhcGhpY3ND
b250ZXh0JiwgY29uc3QgRmxvYXRSZWN0JikgZmluYWw7CisgICAgYm9vbCBjb3B5VmlkZW9UZXh0
dXJlVG9QbGF0Zm9ybVRleHR1cmUoR3JhcGhpY3NDb250ZXh0M0QqLCBQbGF0Zm9ybTNET2JqZWN0
LCBHQzNEZW51bSwgR0MzRGludCwgR0MzRGVudW0sIEdDM0RlbnVtLCBHQzNEZW51bSwgYm9vbCwg
Ym9vbCkgZmluYWw7CisgICAgTmF0aXZlSW1hZ2VQdHIgbmF0aXZlSW1hZ2VGb3JDdXJyZW50VGlt
ZSgpIGZpbmFsOworCisgICAgdm9pZCBzZXRQcmVsb2FkKE1lZGlhUGxheWVyOjpQcmVsb2FkKSBm
aW5hbDsKKworICAgIGJvb2wgaGFzQXZhaWxhYmxlVmlkZW9GcmFtZSgpIGNvbnN0IGZpbmFsOwor
CisgICAgYm9vbCBjYW5Mb2FkUG9zdGVyKCkgY29uc3QgZmluYWw7CisgICAgdm9pZCBzZXRQb3N0
ZXIoY29uc3QgU3RyaW5nJikgZmluYWw7CisKKyNpZiBVU0UoTkFUSVZFX0ZVTExTQ1JFRU5fVklE
RU8pCisgICAgdm9pZCBlbnRlckZ1bGxzY3JlZW4oKSBmaW5hbDsKKyAgICB2b2lkIGV4aXRGdWxs
c2NyZWVuKCkgZmluYWw7CisjZW5kaWYKKworI2lmIEVOQUJMRShXSVJFTEVTU19QTEFZQkFDS19U
QVJHRVQpCisgICAgU3RyaW5nIHdpcmVsZXNzUGxheWJhY2tUYXJnZXROYW1lKCkgY29uc3QgZmlu
YWw7CisgICAgTWVkaWFQbGF5ZXI6OldpcmVsZXNzUGxheWJhY2tUYXJnZXRUeXBlIHdpcmVsZXNz
UGxheWJhY2tUYXJnZXRUeXBlKCkgY29uc3QgZmluYWw7CisKKyAgICBib29sIHdpcmVsZXNzVmlk
ZW9QbGF5YmFja0Rpc2FibGVkKCkgY29uc3QgZmluYWw7CisgICAgdm9pZCBzZXRXaXJlbGVzc1Zp
ZGVvUGxheWJhY2tEaXNhYmxlZChib29sKSBmaW5hbDsKKworICAgIGJvb2wgY2FuUGxheVRvV2ly
ZWxlc3NQbGF5YmFja1RhcmdldCgpIGNvbnN0IGZpbmFsOworICAgIGJvb2wgaXNDdXJyZW50UGxh
eWJhY2tUYXJnZXRXaXJlbGVzcygpIGNvbnN0IGZpbmFsOworICAgIHZvaWQgc2V0V2lyZWxlc3NQ
bGF5YmFja1RhcmdldChSZWY8TWVkaWFQbGF5YmFja1RhcmdldD4mJikgZmluYWw7CisKKyAgICB2
b2lkIHNldFNob3VsZFBsYXlUb1BsYXliYWNrVGFyZ2V0KGJvb2wpIGZpbmFsOworI2VuZGlmCisK
KyNpZiBVU0UoTkFUSVZFX0ZVTExTQ1JFRU5fVklERU8pCisgICAgYm9vbCBjYW5FbnRlckZ1bGxz
Y3JlZW4oKSBjb25zdCBmaW5hbDsKKyNlbmRpZgorCisgICAgYm9vbCBzdXBwb3J0c0FjY2VsZXJh
dGVkUmVuZGVyaW5nKCkgY29uc3QgZmluYWw7CisgICAgdm9pZCBhY2NlbGVyYXRlZFJlbmRlcmlu
Z1N0YXRlQ2hhbmdlZCgpIGZpbmFsOworCisgICAgYm9vbCBzaG91bGRNYWludGFpbkFzcGVjdFJh
dGlvKCkgY29uc3QgZmluYWw7CisgICAgdm9pZCBzZXRTaG91bGRNYWludGFpbkFzcGVjdFJhdGlv
KGJvb2wpIGZpbmFsOworCisgICAgYm9vbCBoYXNTaW5nbGVTZWN1cml0eU9yaWdpbigpIGNvbnN0
IGZpbmFsOworICAgIGJvb2wgZGlkUGFzc0NPUlNBY2Nlc3NDaGVjaygpIGNvbnN0IGZpbmFsOwor
ICAgIE9wdGlvbmFsPGJvb2w+IHdvdWxkVGFpbnRPcmlnaW4oY29uc3QgU2VjdXJpdHlPcmlnaW4m
KSBjb25zdCBmaW5hbDsKKworICAgIE1lZGlhUGxheWVyOjpNb3ZpZUxvYWRUeXBlIG1vdmllTG9h
ZFR5cGUoKSBjb25zdCBmaW5hbDsKKworICAgIHZvaWQgcHJlcGFyZUZvclJlbmRlcmluZygpIGZp
bmFsOworCisgICAgTWVkaWFUaW1lIG1lZGlhVGltZUZvclRpbWVWYWx1ZShjb25zdCBNZWRpYVRp
bWUmIHRpbWVWYWx1ZSkgY29uc3QgZmluYWw7CisKKyAgICBkb3VibGUgbWF4aW11bUR1cmF0aW9u
VG9DYWNoZU1lZGlhVGltZSgpIGNvbnN0IGZpbmFsOworCisgICAgdW5zaWduZWQgZGVjb2RlZEZy
YW1lQ291bnQoKSBjb25zdCBmaW5hbDsKKyAgICB1bnNpZ25lZCBkcm9wcGVkRnJhbWVDb3VudCgp
IGNvbnN0IGZpbmFsOworICAgIHVuc2lnbmVkIGF1ZGlvRGVjb2RlZEJ5dGVDb3VudCgpIGNvbnN0
IGZpbmFsOworICAgIHVuc2lnbmVkIHZpZGVvRGVjb2RlZEJ5dGVDb3VudCgpIGNvbnN0IGZpbmFs
OworCisgICAgdm9pZCBzZXRQcml2YXRlQnJvd3NpbmdNb2RlKGJvb2wpIGZpbmFsOworICAgIFN0
cmluZyBlbmdpbmVEZXNjcmlwdGlvbigpIGNvbnN0IGZpbmFsOworCisjaWYgRU5BQkxFKFdFQl9B
VURJTykKKyAgICBBdWRpb1NvdXJjZVByb3ZpZGVyKiBhdWRpb1NvdXJjZVByb3ZpZGVyKCkgZmlu
YWw7CisjZW5kaWYKKworI2lmIEVOQUJMRShMRUdBQ1lfRU5DUllQVEVEX01FRElBKQorICAgIHN0
ZDo6dW5pcXVlX3B0cjxMZWdhY3lDRE1TZXNzaW9uPiBjcmVhdGVTZXNzaW9uKGNvbnN0IFN0cmlu
ZyYsIExlZ2FjeUNETVNlc3Npb25DbGllbnQqKSBmaW5hbDsKKyAgICB2b2lkIHNldENETVNlc3Np
b24oTGVnYWN5Q0RNU2Vzc2lvbiopIGZpbmFsOworICAgIHZvaWQga2V5QWRkZWQoKSBmaW5hbDsK
KyNlbmRpZgorCisjaWYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkKKyAgICB2b2lkIGNkbUluc3Rh
bmNlQXR0YWNoZWQoQ0RNSW5zdGFuY2UmKSBmaW5hbDsKKyAgICB2b2lkIGNkbUluc3RhbmNlRGV0
YWNoZWQoQ0RNSW5zdGFuY2UmKSBmaW5hbDsKKyAgICB2b2lkIGF0dGVtcHRUb0RlY3J5cHRXaXRo
SW5zdGFuY2UoQ0RNSW5zdGFuY2UmKSBmaW5hbDsKKyAgICBib29sIHdhaXRpbmdGb3JLZXkoKSBj
b25zdCBmaW5hbDsKKyNlbmRpZgorCisjaWYgRU5BQkxFKFZJREVPX1RSQUNLKQorICAgIGJvb2wg
cmVxdWlyZXNUZXh0VHJhY2tSZXByZXNlbnRhdGlvbigpIGNvbnN0IGZpbmFsOworICAgIHZvaWQg
c2V0VGV4dFRyYWNrUmVwcmVzZW50YXRpb24oVGV4dFRyYWNrUmVwcmVzZW50YXRpb24qKSBmaW5h
bDsKKyAgICB2b2lkIHN5bmNUZXh0VHJhY2tCb3VuZHMoKSBmaW5hbDsKKyAgICB2b2lkIHRyYWNr
c0NoYW5nZWQoKSBmaW5hbDsKKyNlbmRpZgorCisjaWYgVVNFKEdTVFJFQU1FUikKKyAgICB2b2lk
IHNpbXVsYXRlQXVkaW9JbnRlcnJ1cHRpb24oKSBmaW5hbDsKKyNlbmRpZgorCisgICAgdm9pZCBi
ZWdpblNpbXVsYXRlZEhEQ1BFcnJvcigpIGZpbmFsOworICAgIHZvaWQgZW5kU2ltdWxhdGVkSERD
UEVycm9yKCkgZmluYWw7CisKKyAgICBTdHJpbmcgbGFuZ3VhZ2VPZlByaW1hcnlBdWRpb1RyYWNr
KCkgY29uc3QgZmluYWw7CisKKyAgICBzaXplX3QgZXh0cmFNZW1vcnlDb3N0KCkgY29uc3QgZmlu
YWw7CisKKyAgICB1bnNpZ25lZCBsb25nIGxvbmcgZmlsZVNpemUoKSBjb25zdCBmaW5hbDsKKwor
ICAgIGJvb2wgZW5kZWQoKSBjb25zdCBmaW5hbDsKKworICAgIE9wdGlvbmFsPFZpZGVvUGxheWJh
Y2tRdWFsaXR5TWV0cmljcz4gdmlkZW9QbGF5YmFja1F1YWxpdHlNZXRyaWNzKCkgZmluYWw7CisK
KyNpZiBFTkFCTEUoQVZGX0NBUFRJT05TKQorICAgIHZvaWQgbm90aWZ5VHJhY2tNb2RlQ2hhbmdl
ZCgpIGZpbmFsOworI2VuZGlmCisKKyAgICB2b2lkIG5vdGlmeUFjdGl2ZVNvdXJjZUJ1ZmZlcnND
aGFuZ2VkKCkgZmluYWw7CisKKyAgICB2b2lkIHNldFNob3VsZERpc2FibGVTbGVlcChib29sKSBm
aW5hbDsKKworICAgIHZvaWQgYXBwbGljYXRpb25XaWxsUmVzaWduQWN0aXZlKCkgZmluYWw7Cisg
ICAgdm9pZCBhcHBsaWNhdGlvbkRpZEJlY29tZUFjdGl2ZSgpIGZpbmFsOworCisjaWYgVVNFKEFW
Rk9VTkRBVElPTikKKyAgICBBVlBsYXllciAqb2JqQ0FWRm91bmRhdGlvbkFWUGxheWVyKCkgY29u
c3QgZmluYWwgeyByZXR1cm4gbnVsbHB0cjsgfQorI2VuZGlmCisKKyAgICBib29sIHBlcmZvcm1U
YXNrQXRNZWRpYVRpbWUoV1RGOjpGdW5jdGlvbjx2b2lkKCk+JiYsIE1lZGlhVGltZSkgZmluYWw7
CisKKyAgICBib29sIHNob3VsZElnbm9yZUludHJpbnNpY1NpemUoKSBmaW5hbDsKKworICAgIE1l
ZGlhUGxheWVyKiBtX3BsYXllciB7IG51bGxwdHIgfTsKKyAgICBSZW1vdGVNZWRpYVBsYXllck1h
bmFnZXIgbV9tYW5hZ2VyOworICAgIFN0cmluZyBtX3JlbW90ZUVuZ2luZUlkZW50aWZpZXI7Cisg
ICAgTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlSWRlbnRpZmllciBtX2lkZW50aWZpZXI7CisKKyNp
ZiAhUkVMRUFTRV9MT0dfRElTQUJMRUQKKyAgICBSZWY8Y29uc3QgTG9nZ2VyPiBtX2xvZ2dlcjsK
KyAgICBjb25zdCB2b2lkKiBtX2xvZ0lkZW50aWZpZXI7CisjZW5kaWYKKworICAgIGJvb2wgbV9p
bnZhbGlkIHsgZmFsc2UgfTsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvTWVkaWFQbGF5
ZXJQcml2YXRlUmVtb3RlSWRlbnRpZmllci5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQ
VS9tZWRpYS9NZWRpYVBsYXllclByaXZhdGVSZW1vdGVJZGVudGlmaWVyLmgKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
ODdlN2I4YmJhZWMzNTM0ZTdkZWZkNzgyMzg2MTAxNDMyMTc1MzhjNwotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvTWVkaWFQbGF5ZXJQcml2YXRl
UmVtb3RlSWRlbnRpZmllci5oCkBAIC0wLDAgKzEsMzUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSAsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRP
UlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENP
TlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdt
YSBvbmNlCisKKyNpbmNsdWRlIDx3dGYvT2JqZWN0SWRlbnRpZmllci5oPgorCituYW1lc3BhY2Ug
V2ViS2l0IHsKKworZW51bSBNZWRpYVBsYXllclByaXZhdGVSZW1vdGVJZGVudGlmaWVyVHlwZSB7
IH07Cit1c2luZyBNZWRpYVBsYXllclByaXZhdGVSZW1vdGVJZGVudGlmaWVyID0gT2JqZWN0SWRl
bnRpZmllcjxNZWRpYVBsYXllclByaXZhdGVSZW1vdGVJZGVudGlmaWVyVHlwZT47CisKK30gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9H
UFUvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyLmNwcApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li5kZDQ5Y2RlM2U3NWIxMjIyNDMwYmFkZjE1MjM5MTYyNTE4ZjJhNmZiCi0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVNZWRpYVBsYXll
ck1hbmFnZXIuY3BwCkBAIC0wLDAgKzEsMjEzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE5
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBB
UyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJV
VE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
CisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNv
bmZpZy5oIgorI2luY2x1ZGUgIlJlbW90ZU1lZGlhUGxheWVyTWFuYWdlci5oIgorCisjaWYgRU5B
QkxFKEdQVV9QUk9DRVNTKQorCisjaW5jbHVkZSAiUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyTWVz
c2FnZXMuaCIKKyNpbmNsdWRlICJSZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eU1lc3NhZ2Vz
LmgiCisjaW5jbHVkZSAiV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgiCisjaW5jbHVkZSAiV2ViUHJv
Y2Vzcy5oIgorI2luY2x1ZGUgIldlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuaCIKKyNpbmNs
dWRlIDxXZWJDb3JlL01lZGlhUGxheWVyLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9NZWRpYVBsYXll
ckVuZ2luZUlkZW50aWZpZXJzLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9Ob3RJbXBsZW1lbnRlZC5o
PgorI2luY2x1ZGUgPFdlYkNvcmUvU2V0dGluZ3MuaD4KKyNpbmNsdWRlIDx3dGYvQXNzZXJ0aW9u
cy5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsKK3VzaW5nIG5hbWVzcGFjZSBQQUw7Cit1c2luZyBu
YW1lc3BhY2UgV2ViQ29yZTsKKworY2xhc3MgTWVkaWFQbGF5ZXJSZW1vdGVGYWN0b3J5IDogcHVi
bGljIE1lZGlhUGxheWVyRmFjdG9yeSB7CitwdWJsaWM6CisgICAgTWVkaWFQbGF5ZXJSZW1vdGVG
YWN0b3J5KFN0cmluZyByZW1vdGVFbmdpbmVJZGVudGlmaWVyLCBSZW1vdGVNZWRpYVBsYXllck1h
bmFnZXImIG1hbmFnZXIpCisgICAgICAgIDogbV9yZW1vdGVFbmdpbmVJZGVudGlmaWVyKHJlbW90
ZUVuZ2luZUlkZW50aWZpZXIpCisgICAgICAgICwgbV9tYW5hZ2VyKG1hbmFnZXIpCisgICAgewor
ICAgIH0KKworICAgIFN0cmluZyBpZGVudGlmaWVyKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9y
ZW1vdGVFbmdpbmVJZGVudGlmaWVyOyB9OworCisgICAgc3RkOjp1bmlxdWVfcHRyPE1lZGlhUGxh
eWVyUHJpdmF0ZUludGVyZmFjZT4gY3JlYXRlTWVkaWFFbmdpbmVQbGF5ZXIoTWVkaWFQbGF5ZXIq
IHBsYXllcikgY29uc3QgZmluYWwKKyAgICB7CisgICAgICAgIHJldHVybiBtX21hbmFnZXIuY3Jl
YXRlUmVtb3RlTWVkaWFQbGF5ZXIocGxheWVyLCBtX3JlbW90ZUVuZ2luZUlkZW50aWZpZXIpOwor
ICAgIH0KKworICAgIHZvaWQgZ2V0U3VwcG9ydGVkVHlwZXMoSGFzaFNldDxTdHJpbmcsIEFTQ0lJ
Q2FzZUluc2Vuc2l0aXZlSGFzaD4mIHR5cGVzKSBjb25zdCBmaW5hbAorICAgIHsKKyAgICAgICAg
cmV0dXJuIG1fbWFuYWdlci5nZXRTdXBwb3J0ZWRUeXBlcyhtX3JlbW90ZUVuZ2luZUlkZW50aWZp
ZXIsIHR5cGVzKTsKKyAgICB9CisKKyAgICBNZWRpYVBsYXllcjo6U3VwcG9ydHNUeXBlIHN1cHBv
cnRzVHlwZUFuZENvZGVjcyhjb25zdCBNZWRpYUVuZ2luZVN1cHBvcnRQYXJhbWV0ZXJzJiBwYXJh
bWV0ZXJzKSBjb25zdCBmaW5hbAorICAgIHsKKyAgICAgICAgcmV0dXJuIG1fbWFuYWdlci5zdXBw
b3J0c1R5cGVBbmRDb2RlY3MobV9yZW1vdGVFbmdpbmVJZGVudGlmaWVyLCBwYXJhbWV0ZXJzKTsK
KyAgICB9CisKKyAgICBIYXNoU2V0PFJlZlB0cjxTZWN1cml0eU9yaWdpbj4+IG9yaWdpbnNJbk1l
ZGlhQ2FjaGUoY29uc3QgU3RyaW5nJiBwYXRoKSBjb25zdCBmaW5hbAorICAgIHsKKyAgICAgICAg
cmV0dXJuIG1fbWFuYWdlci5vcmlnaW5zSW5NZWRpYUNhY2hlKG1fcmVtb3RlRW5naW5lSWRlbnRp
ZmllciwgcGF0aCk7CisgICAgfQorCisgICAgdm9pZCBjbGVhck1lZGlhQ2FjaGUoY29uc3QgU3Ry
aW5nJiBwYXRoLCBXYWxsVGltZSBtb2RpZmllZFNpbmNlKSBjb25zdCBmaW5hbAorICAgIHsKKyAg
ICAgICAgcmV0dXJuIG1fbWFuYWdlci5jbGVhck1lZGlhQ2FjaGUobV9yZW1vdGVFbmdpbmVJZGVu
dGlmaWVyLCBwYXRoLCBtb2RpZmllZFNpbmNlKTsKKyAgICB9CisKKyAgICB2b2lkIGNsZWFyTWVk
aWFDYWNoZUZvck9yaWdpbnMoY29uc3QgU3RyaW5nJiBwYXRoLCBjb25zdCBIYXNoU2V0PFJlZlB0
cjxTZWN1cml0eU9yaWdpbj4+JiBvcmlnaW5zKSBjb25zdCBmaW5hbAorICAgIHsKKyAgICAgICAg
cmV0dXJuIG1fbWFuYWdlci5jbGVhck1lZGlhQ2FjaGVGb3JPcmlnaW5zKG1fcmVtb3RlRW5naW5l
SWRlbnRpZmllciwgcGF0aCwgb3JpZ2lucyk7CisgICAgfQorCisgICAgYm9vbCBzdXBwb3J0c0tl
eVN5c3RlbShjb25zdCBTdHJpbmcmIGtleVN5c3RlbSwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSkg
Y29uc3QgZmluYWwKKyAgICB7CisgICAgICAgIHJldHVybiBtX21hbmFnZXIuc3VwcG9ydHNLZXlT
eXN0ZW0obV9yZW1vdGVFbmdpbmVJZGVudGlmaWVyLCBrZXlTeXN0ZW0sIG1pbWVUeXBlKTsKKyAg
ICB9CisKK3ByaXZhdGU6CisgICAgU3RyaW5nIG1fcmVtb3RlRW5naW5lSWRlbnRpZmllcjsKKyAg
ICBSZW1vdGVNZWRpYVBsYXllck1hbmFnZXImIG1fbWFuYWdlcjsKK307CisKK1JlbW90ZU1lZGlh
UGxheWVyTWFuYWdlcjo6UmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyKFdlYlByb2Nlc3MmIHByb2Nl
c3MpCisgICAgOiBtX3Byb2Nlc3MocHJvY2VzcykKK3sKKyAgICBtX3Byb2Nlc3MuYWRkTWVzc2Fn
ZVJlY2VpdmVyKE1lc3NhZ2VzOjpSZW1vdGVNZWRpYVBsYXllck1hbmFnZXI6Om1lc3NhZ2VSZWNl
aXZlck5hbWUoKSwgKnRoaXMpOworfQorCitSZW1vdGVNZWRpYVBsYXllck1hbmFnZXI6On5SZW1v
dGVNZWRpYVBsYXllck1hbmFnZXIoKQoreworICAgIG1fcHJvY2Vzcy5yZW1vdmVNZXNzYWdlUmVj
ZWl2ZXIoTWVzc2FnZXM6OlJlbW90ZU1lZGlhUGxheWVyTWFuYWdlcjo6bWVzc2FnZVJlY2VpdmVy
TmFtZSgpKTsKK30KKworY29uc3QgY2hhciogUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyOjpzdXBw
bGVtZW50TmFtZSgpCit7CisgICAgcmV0dXJuICJSZW1vdGVNZWRpYVBsYXllck1hbmFnZXIiOwor
fQorCit2b2lkIFJlbW90ZU1lZGlhUGxheWVyTWFuYWdlcjo6aW5pdGlhbGl6ZShjb25zdCBXZWJQ
cm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzJikKK3sKKy8vIEZJWE1FOiBVc2UgcGFyYW1ldGVycy5t
ZWRpYU1JTUVUeXBlcy4KK30KKworc3RkOjp1bmlxdWVfcHRyPE1lZGlhUGxheWVyUHJpdmF0ZUlu
dGVyZmFjZT4gUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyOjpjcmVhdGVSZW1vdGVNZWRpYVBsYXll
cihNZWRpYVBsYXllciogcGxheWVyLCBjb25zdCBTdHJpbmcmIHJlbW90ZUVuZ2luZUlkZW50aWZp
ZXIpCit7CisgICAgYXV0byBpZCA9IE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZUlkZW50aWZpZXI6
OmdlbmVyYXRlKCk7CisKKyAgICBib29sIGhhdmVSZW1vdGVQcm94eTsKKyAgICBib29sIHNlbmRT
dWNjZWVkZWQgPSBncHVQcm9jZXNzQ29ubmVjdGlvbigpLnNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1v
dGVNZWRpYVBsYXllck1hbmFnZXJQcm94eTo6Q3JlYXRlTWVkaWFQbGF5ZXIoaWQsIHJlbW90ZUVu
Z2luZUlkZW50aWZpZXIpLCBNZXNzYWdlczo6UmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHk6
OkNyZWF0ZU1lZGlhUGxheWVyOjpSZXBseShoYXZlUmVtb3RlUHJveHkpLCAwKTsKKworICAgIGF1
dG8gcmVtb3RlUGxheWVyID0gTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpjcmVhdGUocGxheWVy
LCByZW1vdGVFbmdpbmVJZGVudGlmaWVyLCBpZCwgKnRoaXMpOworCisgICAgaWYgKCFoYXZlUmVt
b3RlUHJveHkgfHwgIXNlbmRTdWNjZWVkZWQpIHsKKyAgICAgICAgV1RGTG9nQWx3YXlzKCJGYWls
ZWQgdG8gY3JlYXRlIHJlbW90ZSBtZWRpYSBwbGF5ZXIuIik7CisgICAgICAgIHJlbW90ZVBsYXll
ci0+aW52YWxpZGF0ZSgpOworICAgIH0KKworICAgIG1fcGxheWVycy5hZGQoaWQsIG1ha2VXZWFr
UHRyKCpyZW1vdGVQbGF5ZXIpKTsKKyAgICByZXR1cm4gcmVtb3RlUGxheWVyOworfQorCit2b2lk
IFJlbW90ZU1lZGlhUGxheWVyTWFuYWdlcjo6Z2V0U3VwcG9ydGVkVHlwZXMoY29uc3QgU3RyaW5n
JiByZW1vdGVFbmdpbmVJZGVudGlmaWVyLCBIYXNoU2V0PFN0cmluZywgQVNDSUlDYXNlSW5zZW5z
aXRpdmVIYXNoPiYgcmVzdWx0KQoreworICAgIC8vIEZJWE1FOiBzdXBwb3J0ZWQgdHlwZXMgZG9u
J3QgY2hhbmdlLCBjYWNoZSB0aGVtLgorICAgIFZlY3RvcjxTdHJpbmc+IHR5cGVzOworICAgIGlm
ICghZ3B1UHJvY2Vzc0Nvbm5lY3Rpb24oKS5zZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlTWVkaWFQ
bGF5ZXJNYW5hZ2VyUHJveHk6OkdldFN1cHBvcnRlZFR5cGVzKHJlbW90ZUVuZ2luZUlkZW50aWZp
ZXIpLCBNZXNzYWdlczo6UmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHk6OkdldFN1cHBvcnRl
ZFR5cGVzOjpSZXBseSh0eXBlcyksIDApKQorICAgICAgICByZXR1cm47CisKKyAgICByZXN1bHQg
PSBIYXNoU2V0PFN0cmluZywgQVNDSUlDYXNlSW5zZW5zaXRpdmVIYXNoPigpOworICAgIGZvciAo
YXV0byYgdHlwZSA6IHR5cGVzKQorICAgICAgICByZXN1bHQuYWRkKHR5cGUpOworfQorCitXZWJD
b3JlOjpNZWRpYVBsYXllcjo6U3VwcG9ydHNUeXBlIFJlbW90ZU1lZGlhUGxheWVyTWFuYWdlcjo6
c3VwcG9ydHNUeXBlQW5kQ29kZWNzKGNvbnN0IFN0cmluZyYgcmVtb3RlRW5naW5lSWRlbnRpZmll
ciwgY29uc3QgV2ViQ29yZTo6TWVkaWFFbmdpbmVTdXBwb3J0UGFyYW1ldGVycyYgcGFyYW1ldGVy
cykKK3sKKyAgICAvLyBGSVhNRTogc3VwcG9ydGVkIHR5cGVzIGRvbid0IGNoYW5nZSwgY2FjaGUg
dGhlbS4KKworICAgIC8vIEZJWE1FOiBjb252ZXJ0IFdlYkNvcmU6Ok1lZGlhUGxheWVyOjpTdXBw
b3J0c1R5cGUgdG8gZW51bSBjbGFzcyBzbyBpdCBjYW4gYmUgZW5jb2RlZCBhbmQgc2VudCB2aWEg
SVBDCisgICAgaW50IHJlc3VsdDsKKyAgICBpZiAoIWdwdVByb2Nlc3NDb25uZWN0aW9uKCkuc2Vu
ZFN5bmMoTWVzc2FnZXM6OlJlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5OjpTdXBwb3J0c1R5
cGUocmVtb3RlRW5naW5lSWRlbnRpZmllciwgcGFyYW1ldGVycyksIE1lc3NhZ2VzOjpSZW1vdGVN
ZWRpYVBsYXllck1hbmFnZXJQcm94eTo6U3VwcG9ydHNUeXBlOjpSZXBseShyZXN1bHQpLCAwKSkK
KyAgICAgICAgcmV0dXJuIE1lZGlhUGxheWVyOjpJc05vdFN1cHBvcnRlZDsKKworICAgIHJldHVy
biBzdGF0aWNfY2FzdDxXZWJDb3JlOjpNZWRpYVBsYXllcjo6U3VwcG9ydHNUeXBlPihyZXN1bHQp
OworfQorCisKK2Jvb2wgUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyOjpzdXBwb3J0c0tleVN5c3Rl
bShjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmIGtleVN5c3RlbSwgY29uc3QgU3RyaW5nJiBt
aW1lVHlwZSkKK3sKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKKworSGFzaFNldDxSZWZQdHI8V2Vi
Q29yZTo6U2VjdXJpdHlPcmlnaW4+PiBSZW1vdGVNZWRpYVBsYXllck1hbmFnZXI6Om9yaWdpbnNJ
bk1lZGlhQ2FjaGUoY29uc3QgU3RyaW5nJiByZW1vdGVFbmdpbmVJZGVudGlmaWVyLCBjb25zdCBT
dHJpbmcmIHBhdGgpCit7CisgICAgVmVjdG9yPFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YT4g
b3JpZ2luRGF0YXM7CisgICAgaWYgKCFncHVQcm9jZXNzQ29ubmVjdGlvbigpLnNlbmRTeW5jKE1l
c3NhZ2VzOjpSZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eTo6T3JpZ2luc0luTWVkaWFDYWNo
ZShyZW1vdGVFbmdpbmVJZGVudGlmaWVyLCBwYXRoKSwgTWVzc2FnZXM6OlJlbW90ZU1lZGlhUGxh
eWVyTWFuYWdlclByb3h5OjpPcmlnaW5zSW5NZWRpYUNhY2hlOjpSZXBseShvcmlnaW5EYXRhcyks
IDApKQorICAgICAgICByZXR1cm4geyB9OworCisgICAgSGFzaFNldDxSZWZQdHI8U2VjdXJpdHlP
cmlnaW4+PiBvcmlnaW5zOworICAgIGZvciAoYXV0byYgb3JpZ2luRGF0YSA6IG9yaWdpbkRhdGFz
KQorICAgICAgICBvcmlnaW5zLmFkZChvcmlnaW5EYXRhLnNlY3VyaXR5T3JpZ2luKCkpOworCisg
ICAgcmV0dXJuIG9yaWdpbnM7Cit9CisKK3ZvaWQgUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyOjpj
bGVhck1lZGlhQ2FjaGUoY29uc3QgU3RyaW5nJiByZW1vdGVFbmdpbmVJZGVudGlmaWVyLCBjb25z
dCBTdHJpbmcmIHBhdGgsIFdhbGxUaW1lIG1vZGlmaWVkU2luY2UpCit7CisgICAgZ3B1UHJvY2Vz
c0Nvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpSZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94
eTo6Q2xlYXJNZWRpYUNhY2hlKHJlbW90ZUVuZ2luZUlkZW50aWZpZXIsIHBhdGgsIG1vZGlmaWVk
U2luY2UpLCAwKTsKK30KKwordm9pZCBSZW1vdGVNZWRpYVBsYXllck1hbmFnZXI6OmNsZWFyTWVk
aWFDYWNoZUZvck9yaWdpbnMoY29uc3QgU3RyaW5nJiByZW1vdGVFbmdpbmVJZGVudGlmaWVyLCBj
b25zdCBTdHJpbmcmIHBhdGgsIGNvbnN0IEhhc2hTZXQ8UmVmUHRyPFdlYkNvcmU6OlNlY3VyaXR5
T3JpZ2luPj4mIG9yaWdpbnMpCit7CisgICAgVmVjdG9yPFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2lu
RGF0YT4gb3JpZ2luRGF0YTsKKyAgICBmb3IgKGF1dG8mIG9yaWdpbiA6IG9yaWdpbnMpCisgICAg
ICAgIG9yaWdpbkRhdGEuYXBwZW5kKG9yaWdpbi0+ZGF0YSgpKTsKKworICAgIGdwdVByb2Nlc3ND
b25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6UmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHk6
OkNsZWFyTWVkaWFDYWNoZUZvck9yaWdpbnMocmVtb3RlRW5naW5lSWRlbnRpZmllciwgcGF0aCwg
b3JpZ2luRGF0YSksIDApOworfQorCit2b2lkIFJlbW90ZU1lZGlhUGxheWVyTWFuYWdlcjo6bmV0
d29ya1N0YXRlQ2hhbmdlZChNZWRpYVBsYXllclByaXZhdGVSZW1vdGVJZGVudGlmaWVyKQorewor
fQorCit2b2lkIFJlbW90ZU1lZGlhUGxheWVyTWFuYWdlcjo6dXBkYXRlUHJlZmVyZW5jZXMoY29u
c3QgU2V0dGluZ3MmIHNldHRpbmdzKQoreworICAgIGF1dG8gcmVnaXN0ZXJFbmdpbmUgPSBbdGhp
c10oTWVkaWFFbmdpbmVSZWdpc3RyYXIgcmVnaXN0cmFyLCBjb25zdCBTdHJpbmcmIHJlbW90ZUVu
Z2luZUlkZW50aWZpZXIpIHsKKyAgICAgICAgcmVnaXN0cmFyKG1ha2VVbmlxdWU8TWVkaWFQbGF5
ZXJSZW1vdGVGYWN0b3J5PihyZW1vdGVFbmdpbmVJZGVudGlmaWVyLCAqdGhpcykpOworICAgIH07
CisKKyAgICBSZW1vdGVNZWRpYVBsYXllclN1cHBvcnQ6OnNldFJlZ2lzdGVyUmVtb3RlUGxheWVy
Q2FsbGJhY2soc2V0dGluZ3MudXNlR1BVUHJvY2Vzc0Zvck1lZGlhKCkgPyByZWdpc3RlckVuZ2lu
ZSA6IHN0ZDo6ZnVuY3Rpb248dm9pZChNZWRpYUVuZ2luZVJlZ2lzdHJhciwgY29uc3QgU3RyaW5n
Jik+IHsgfSk7Cit9CisKK0lQQzo6Q29ubmVjdGlvbiYgUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2Vy
OjpncHVQcm9jZXNzQ29ubmVjdGlvbigpIGNvbnN0Cit7CisgICAgcmV0dXJuIFdlYlByb2Nlc3M6
OnNpbmdsZXRvbigpLmVuc3VyZUdQVVByb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigpOwor
fQorCit9CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQ
VS9tZWRpYS9SZW1vdGVNZWRpYVBsYXllck1hbmFnZXIuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9HUFUvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyLmgKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMzRi
OGIzZDM5N2NmMDAwY2Y0YTI5Nzg3NDE3ZDZlZmU3NTkyNmU5MgotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJNYW5h
Z2VyLmgKQEAgLTAsMCArMSw4NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwor
ICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAq
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYg
RU5BQkxFKEdQVV9QUk9DRVNTKQorCisjaW5jbHVkZSAiTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3Rl
SWRlbnRpZmllci5oIgorI2luY2x1ZGUgIk1lc3NhZ2VSZWNlaXZlci5oIgorI2luY2x1ZGUgIlNo
YXJlZE1lbW9yeS5oIgorI2luY2x1ZGUgIldlYlByb2Nlc3NTdXBwbGVtZW50LmgiCisjaW5jbHVk
ZSA8V2ViQ29yZS9NZWRpYVBsYXllci5oPgorI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CisKK25h
bWVzcGFjZSBXZWJDb3JlIHsKK2NsYXNzIE1lZGlhUGxheWVyOworY2xhc3MgTWVkaWFQbGF5ZXJQ
cml2YXRlSW50ZXJmYWNlOworY2xhc3MgU2V0dGluZ3M7Cit9CisKK25hbWVzcGFjZSBXZWJLaXQg
eworCitjbGFzcyBNZWRpYVBsYXllclByaXZhdGVSZW1vdGU7CitjbGFzcyBXZWJQcm9jZXNzOwor
CitjbGFzcyBSZW1vdGVNZWRpYVBsYXllck1hbmFnZXIgOiBwdWJsaWMgV2ViUHJvY2Vzc1N1cHBs
ZW1lbnQsIHB1YmxpYyBJUEM6Ok1lc3NhZ2VSZWNlaXZlciB7CisgICAgV1RGX01BS0VfRkFTVF9B
TExPQ0FURUQ7CitwdWJsaWM6CisgICAgZXhwbGljaXQgUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2Vy
KFdlYlByb2Nlc3MmKTsKKyAgICB+UmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyKCk7CisKKyAgICBz
dGF0aWMgY29uc3QgY2hhciogc3VwcGxlbWVudE5hbWUoKTsKKworICAgIHZvaWQgdXBkYXRlUHJl
ZmVyZW5jZXMoY29uc3QgV2ViQ29yZTo6U2V0dGluZ3MmKTsKKworICAgIElQQzo6Q29ubmVjdGlv
biYgZ3B1UHJvY2Vzc0Nvbm5lY3Rpb24oKSBjb25zdDsKKworcHJpdmF0ZToKKyAgICBzdGQ6OnVu
aXF1ZV9wdHI8V2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlSW50ZXJmYWNlPiBjcmVhdGVSZW1v
dGVNZWRpYVBsYXllcihXZWJDb3JlOjpNZWRpYVBsYXllciosIGNvbnN0IFN0cmluZyYpOworCisg
ICAgLy8gV2ViUHJvY2Vzc1N1cHBsZW1lbnQKKyAgICB2b2lkIGluaXRpYWxpemUoY29uc3QgV2Vi
UHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycyYpIGZpbmFsOworCisgICAgLy8gSVBDOjpNZXNzYWdl
UmVjZWl2ZXIKKyAgICB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQ
Qzo6RGVjb2RlciYpIGZpbmFsOworCisgICAgLy8gTWVzc2FnZXM6OlJlbW90ZU1lZGlhUGxheWVy
TWFuYWdlcgorICAgIHZvaWQgbmV0d29ya1N0YXRlQ2hhbmdlZChNZWRpYVBsYXllclByaXZhdGVS
ZW1vdGVJZGVudGlmaWVyKTsKKworICAgIGZyaWVuZCBjbGFzcyBNZWRpYVBsYXllclJlbW90ZUZh
Y3Rvcnk7CisgICAgdm9pZCBnZXRTdXBwb3J0ZWRUeXBlcyhjb25zdCBTdHJpbmcmLCBIYXNoU2V0
PFN0cmluZywgQVNDSUlDYXNlSW5zZW5zaXRpdmVIYXNoPiYpOworICAgIFdlYkNvcmU6Ok1lZGlh
UGxheWVyOjpTdXBwb3J0c1R5cGUgc3VwcG9ydHNUeXBlQW5kQ29kZWNzKGNvbnN0IFN0cmluZyYs
IGNvbnN0IFdlYkNvcmU6Ok1lZGlhRW5naW5lU3VwcG9ydFBhcmFtZXRlcnMmKTsKKyAgICBib29s
IHN1cHBvcnRzS2V5U3lzdGVtKGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYga2V5U3lzdGVt
LCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlKTsKKyAgICBIYXNoU2V0PFJlZlB0cjxXZWJDb3JlOjpT
ZWN1cml0eU9yaWdpbj4+IG9yaWdpbnNJbk1lZGlhQ2FjaGUoY29uc3QgU3RyaW5nJiwgY29uc3Qg
U3RyaW5nJik7CisgICAgdm9pZCBjbGVhck1lZGlhQ2FjaGUoY29uc3QgU3RyaW5nJiwgY29uc3Qg
U3RyaW5nJiwgV2FsbFRpbWUgbW9kaWZpZWRTaW5jZSk7CisgICAgdm9pZCBjbGVhck1lZGlhQ2Fj
aGVGb3JPcmlnaW5zKGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYsIGNvbnN0IEhhc2hTZXQ8
UmVmUHRyPFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luPj4mKTsKKworICAgIEhhc2hNYXA8TWVkaWFQ
bGF5ZXJQcml2YXRlUmVtb3RlSWRlbnRpZmllciwgV2Vha1B0cjxNZWRpYVBsYXllclByaXZhdGVS
ZW1vdGU+PiBtX3BsYXllcnM7CisgICAgV2ViUHJvY2VzcyYgbV9wcm9jZXNzOworfTsKKworfSAv
LyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVNZWRpYVBsYXllck1hbmFnZXIubWVzc2FnZXMuaW4g
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyTWFu
YWdlci5tZXNzYWdlcy5pbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hOTMzNTdjMmJhODVmZjFkZGVjY2EwN2MzMDM5
MWY4ZTIwMjkyMTJmCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L0dQVS9tZWRpYS9SZW1vdGVNZWRpYVBsYXllck1hbmFnZXIubWVzc2FnZXMuaW4KQEAgLTAsMCAr
MSwzMiBAQAorIyBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisjIGFyZSBtZXQ6CisjIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisjICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyMgMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorIyAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElU
UyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisjIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorIyBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
CisjIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IgSVRTIENPTlRSSUJVVE9SUworIyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisjIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisjIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUworIyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorIyBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorIyBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GCisjIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKworI2lmIEVOQUJM
RShWSURFTykKKworbWVzc2FnZXMgLT4gUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyIE5vdFJlZkNv
dW50ZWQgeworCisgICAgTmV0d29ya1N0YXRlQ2hhbmdlZChXZWJLaXQ6Ok1lZGlhUGxheWVyUHJp
dmF0ZVJlbW90ZUlkZW50aWZpZXIgaWQpCisKK30KKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9WaWV3VXBkYXRlRGlzcGF0Y2hlci5jcHAgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9WaWV3VXBkYXRlRGlzcGF0Y2hlci5jcHAK
aW5kZXggNWNmNDQ0MDdlM2ZiM2Y2N2EwMzQ3MDAzZDA0NzhkNzQxOTkzMjQzZi4uMWZiY2M3OTZm
ZmI2NTk1YTRmMzViNTI5MGE5YzNiOWE0ZGYxODY2ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlBhZ2UvVmlld1VwZGF0ZURpc3BhdGNoZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1ZpZXdVcGRhdGVEaXNwYXRjaGVyLmNwcApAQCAt
MzEsNiArMzEsNyBAQAogI2luY2x1ZGUgIlZpZXdVcGRhdGVEaXNwYXRjaGVyTWVzc2FnZXMuaCIK
ICNpbmNsdWRlICJXZWJQYWdlLmgiCiAjaW5jbHVkZSAiV2ViUHJvY2Vzcy5oIgorI2luY2x1ZGUg
PFdlYkNvcmUvUGFnZUlkZW50aWZpZXIuaD4KICNpbmNsdWRlIDx3dGYvUnVuTG9vcC5oPgogCiBu
YW1lc3BhY2UgV2ViS2l0IHsKQEAgLTc1LDcgKzc2LDcgQEAgdm9pZCBWaWV3VXBkYXRlRGlzcGF0
Y2hlcjo6dmlzaWJsZUNvbnRlbnRSZWN0VXBkYXRlKFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIHBh
Z2UKIAogdm9pZCBWaWV3VXBkYXRlRGlzcGF0Y2hlcjo6ZGlzcGF0Y2hWaXNpYmxlQ29udGVudFJl
Y3RVcGRhdGUoKQogewotICAgIEhhc2hNYXA8UGFnZUlkZW50aWZpZXIsIFVwZGF0ZURhdGE+IHVw
ZGF0ZTsKKyAgICBIYXNoTWFwPFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBVcGRhdGVEYXRhPiB1
cGRhdGU7CiAgICAgewogICAgICAgICBMb2NrSG9sZGVyIGxvY2tlcigmbV9kYXRhTXV0ZXgpOwog
ICAgICAgICB1cGRhdGUgPSBXVEZNb3ZlKG1fbGF0ZXN0VXBkYXRlKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKaW5kZXggM2MyZmQxMmM1ODhhM2I3ZmJi
NDAzZDc5NTM0NzBlNWI3YzJhNmMwYy4uOTIzMzk5OTk5Yzc4OTMzYjk4NDczZDA3YjRhMmI0ZTAw
ZmRhNmI0ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2Vi
UGFnZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5j
cHAKQEAgLTMxMiw2ICszMTIsMTAgQEAKICNpbmNsdWRlICJXZWJEZXZpY2VPcmllbnRhdGlvblVw
ZGF0ZVByb3ZpZGVyLmgiCiAjZW5kaWYKIAorI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykKKyNpbmNs
dWRlICJSZW1vdGVNZWRpYVBsYXllck1hbmFnZXIuaCIKKyNlbmRpZgorCiBuYW1lc3BhY2UgV2Vi
S2l0IHsKIHVzaW5nIG5hbWVzcGFjZSBKU0M7CiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKQEAg
LTM2MDYsNiArMzYxMCwxMCBAQCB2b2lkIFdlYlBhZ2U6OnVwZGF0ZVByZWZlcmVuY2VzKGNvbnN0
IFdlYlByZWZlcmVuY2VzU3RvcmUmIHN0b3JlKQogCiAgICAgaWYgKG1fZHJhd2luZ0FyZWEpCiAg
ICAgICAgIG1fZHJhd2luZ0FyZWEtPnVwZGF0ZVByZWZlcmVuY2VzKHN0b3JlKTsKKworI2lmIEVO
QUJMRShHUFVfUFJPQ0VTUykKKyAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5zdXBwbGVtZW50
PFJlbW90ZU1lZGlhUGxheWVyTWFuYWdlcj4oKS0+dXBkYXRlUHJlZmVyZW5jZXMoc2V0dGluZ3Mp
OworI2VuZGlmCiB9CiAKICNpZiBFTkFCTEUoREFUQV9ERVRFQ1RJT04pCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAKaW5kZXggMDZiMDhkNzhiZjU4NzM1ZTgxNzgwZmEwNDFj
MGE4NzQxZWYwMGVmOS4uMTUxMzI3MWFjM2Y5NzUxNTZmOTk0MmRhZmRmMGNjMGE4Y2Q3ZTNkMyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcApAQCAtMTY0LDYgKzE2NCwx
MCBAQAogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL1JlbW90ZUluc3BlY3Rvci5oPgogI2VuZGlm
CiAKKyNpZiBFTkFCTEUoR1BVX1BST0NFU1MpCisjaW5jbHVkZSAiUmVtb3RlTWVkaWFQbGF5ZXJN
YW5hZ2VyLmgiCisjZW5kaWYKKwogLy8gVGhpcyBzaG91bGQgYmUgbGVzcyB0aGFuIHBsdWdJbkF1
dG9TdGFydEV4cGlyYXRpb25UaW1lVGhyZXNob2xkIGluIFBsdWdJbkF1dG9TdGFydFByb3ZpZGVy
Lgogc3RhdGljIGNvbnN0IFNlY29uZHMgcGx1Z0luQXV0b1N0YXJ0RXhwaXJhdGlvblRpbWVVcGRh
dGVUaHJlc2hvbGQgeyAyOSAqIDI0ICogNjAgKiA2MCB9OwogCkBAIC0yMjEsNyArMjI1LDExIEBA
IFdlYlByb2Nlc3M6OldlYlByb2Nlc3MoKQogI2lmIFBMQVRGT1JNKENPQ09BKSAmJiBFTkFCTEUo
TUVESUFfU1RSRUFNKQogICAgIGFkZFN1cHBsZW1lbnQ8VXNlck1lZGlhQ2FwdHVyZU1hbmFnZXI+
KCk7CiAjZW5kaWYKLSAgICAKKworI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykKKyAgICBhZGRTdXBw
bGVtZW50PFJlbW90ZU1lZGlhUGxheWVyTWFuYWdlcj4oKTsKKyNlbmRpZgorCiAgICAgR2lnYWNh
Z2U6OmZvcmJpZERpc2FibGluZ1ByaW1pdGl2ZUdpZ2FjYWdlKCk7CiB9CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>385447</attachid>
            <date>2019-12-11 15:22:22 -0800</date>
            <delta_ts>2019-12-11 15:23:00 -0800</delta_ts>
            <desc>WIP patch</desc>
            <filename>bug-205094-20191211152221.patch</filename>
            <type>text/plain</type>
            <size>152106</size>
            <attacher name="Eric Carlson">eric.carlson</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjUzMzU0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNjE5MDUzNmRmMzEwYTI0
ODBlZTkzZjlkOGUxZGIwMTcwNzRiMGQwMC4uNTQ5YzFiNWRmMGEwZjM4MGRlMWQ5OGJhZjdlZjJl
ZGVkMTUzNjYzNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEwNyBAQAorMjAxOS0xMi0xMCAgRXJp
YyBDYXJsc29uICA8ZXJpYy5jYXJsc29uQGFwcGxlLmNvbT4KKworICAgICAgICBBZGQgaW5mcmFz
dHJ1Y3R1cmUgbmVlZGVkIGZvciBwbGF5aW5nIG1lZGlhIHBsYXllciBpbiB0aGUgR1BVIHByb2Nl
c3MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwNTA5
NAorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNTc4MTUzOTM+CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLCBubyBmdW5jdGlvbmFs
IGNoYW5nZSB5ZXQuCisKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2o6CisgICAgICAgICogcGxhdGZvcm0vQ29udGVudFR5cGUuaDoKKyAgICAgICAgKFdlYkNvcmU6
OkNvbnRlbnRUeXBlOjplbmNvZGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudFR5
cGU6OmRlY29kZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6bnVsbExvZ2dlcik6CisgICAgICAgIChXZWJDb3JlOjpudWxs
Q29udGVudFR5cGVWZWN0b3IpOgorICAgICAgICAoV2ViQ29yZTo6bXV0YWJsZUluc3RhbGxlZE1l
ZGlhRW5naW5lc1ZlY3Rvcik6CisgICAgICAgIChXZWJDb3JlOjpyZWdpc3RlclJlbW90ZVBsYXll
ckNhbGxiYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbW90ZU1lZGlhUGxheWVyU3VwcG9ydDo6
c2V0UmVnaXN0ZXJSZW1vdGVQbGF5ZXJDYWxsYmFjayk6CisgICAgICAgIChXZWJDb3JlOjpidWls
ZE1lZGlhRW5naW5lc1ZlY3Rvcik6CisgICAgICAgIChXZWJDb3JlOjppbnN0YWxsZWRNZWRpYUVu
Z2luZXMpOgorICAgICAgICAoV2ViQ29yZTo6YWRkTWVkaWFFbmdpbmUpOgorICAgICAgICAoV2Vi
Q29yZTo6TWVkaWFQbGF5ZXI6Om1lZGlhRW5naW5lKToKKyAgICAgICAgKFdlYkNvcmU6OmJlc3RN
ZWRpYUVuZ2luZUZvclN1cHBvcnRQYXJhbWV0ZXJzKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlh
UGxheWVyOjpuZXh0TWVkaWFFbmdpbmUpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXI6
OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllcjo6TWVkaWFQbGF5ZXIpOgor
ICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXI6Om5leHRCZXN0TWVkaWFFbmdpbmUpOgorICAg
ICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXI6OmxvYWRXaXRoTmV4dE1lZGlhRW5naW5lKToKKyAg
ICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyOjpnZXRTdXBwb3J0ZWRUeXBlcyk6CisgICAgICAg
IChXZWJDb3JlOjpNZWRpYVBsYXllcjo6b3JpZ2luc0luTWVkaWFDYWNoZSk6CisgICAgICAgIChX
ZWJDb3JlOjpNZWRpYVBsYXllcjo6Y2xlYXJNZWRpYUNhY2hlKToKKyAgICAgICAgKFdlYkNvcmU6
Ok1lZGlhUGxheWVyOjpjbGVhck1lZGlhQ2FjaGVGb3JPcmlnaW5zKToKKyAgICAgICAgKFdlYkNv
cmU6Ok1lZGlhUGxheWVyOjpzdXBwb3J0c0tleVN5c3RlbSk6CisgICAgICAgIChXZWJDb3JlOjpN
ZWRpYVBsYXllcjo6bmV0d29ya1N0YXRlQ2hhbmdlZCk6CisgICAgICAgIChXZWJDb3JlOjpuZXh0
TWVkaWFFbmdpbmUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXI6Om5l
eHRCZXN0TWVkaWFFbmdpbmUgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL01lZGlhUGxheWVyLmg6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYUVuZ2luZVN1cHBv
cnRQYXJhbWV0ZXJzOjplbmNvZGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFFbmdp
bmVTdXBwb3J0UGFyYW1ldGVyczo6ZGVjb2RlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxh
eWVyRmFjdG9yeTo6fk1lZGlhUGxheWVyRmFjdG9yeSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRp
YVBsYXllckZhY3Rvcnk6Om9yaWdpbnNJbk1lZGlhQ2FjaGUgY29uc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6TWVkaWFQbGF5ZXJGYWN0b3J5OjpjbGVhck1lZGlhQ2FjaGUgY29uc3QpOgorICAgICAg
ICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJGYWN0b3J5OjpjbGVhck1lZGlhQ2FjaGVGb3JPcmlnaW5z
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyRmFjdG9yeTo6c3VwcG9ydHNL
ZXlTeXN0ZW0gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXI6OnNldFZpZGVv
RnVsbHNjcmVlbkxheWVyKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVy
OjpzaXplIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyOjpp
bnZhbGlkVGltZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllcjo6cGxh
dGZvcm1Wb2x1bWVDb25maWd1cmF0aW9uUmVxdWlyZWQgY29uc3QpOiBEZWxldGVkLgorICAgICAg
ICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXI6OmNvbnRlbnRNSU1FVHlwZSBjb25zdCk6IERlbGV0ZWQu
CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllcjo6Y29udGVudFR5cGVDb2RlY3MgY29uc3Qp
OiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXI6OmNvbnRlbnRNSU1FVHlw
ZVdhc0luZmVycmVkRnJvbUV4dGVuc2lvbiBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJD
b3JlOjpNZWRpYVBsYXllcjo6bWVkaWFQbGF5ZXJMb2dJZGVudGlmaWVyKTogRGVsZXRlZC4KKyAg
ICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyOjpyZW5kZXJpbmdDYW5CZUFjY2VsZXJhdGVkIGNv
bnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyOjpyZW5kZXJpbmdN
b2RlQ2hhbmdlZCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXll
cjo6YWNjZWxlcmF0ZWRDb21wb3NpdGluZ0VuYWJsZWQpOiBEZWxldGVkLgorICAgICAgICAoV2Vi
Q29yZTo6TWVkaWFQbGF5ZXI6OmFjdGl2ZVNvdXJjZUJ1ZmZlcnNDaGFuZ2VkKTogRGVsZXRlZC4K
KyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyOjpwbGF5ZXJDb250ZW50Qm94UmVjdCBjb25z
dCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllcjo6cGxheWVyQ29udGVu
dHNTY2FsZSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllcjo6
c2hvdWxkVXNlUGVyc2lzdGVudENhY2hlIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNv
cmU6Ok1lZGlhUGxheWVyOjptZWRpYUNhY2hlRGlyZWN0b3J5IGNvbnN0KTogRGVsZXRlZC4KKyAg
ICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyOjppc1ZpZGVvUGxheWVyIGNvbnN0KTogRGVsZXRl
ZC4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyOjptZWRpYUVuZ2luZVVwZGF0ZWQpOiBE
ZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXI6OmlzTG9vcGluZyBjb25zdCk6
IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllcjo6cmVxdWVzdEluc3RhbGxN
aXNzaW5nUGx1Z2lucyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllcjo6
Y2xpZW50IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9NZWRp
YVBsYXllckVuZ2luZUlkZW50aWZpZXJzLmg6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL0NvbnRlbnRUeXBlLmguCisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllckVuZ2lu
ZUlkZW50aWZpZXJzOjphdkZvdW5kYXRpb25FbmdpbmVJZGVudGlmaWVyKToKKyAgICAgICAgKFdl
YkNvcmU6Ok1lZGlhUGxheWVyRW5naW5lSWRlbnRpZmllcnM6OmF2Rm91bmRhdGlvbk1TRUVuZ2lu
ZUlkZW50aWZpZXIpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJFbmdpbmVJZGVudGlm
aWVyczo6YXZGb3VuZGF0aW9uTWVkaWFTdHJlYW1FbmdpbmVJZGVudGlmaWVyKToKKyAgICAgICAg
KFdlYkNvcmU6Ok1lZGlhUGxheWVyRW5naW5lSWRlbnRpZmllcnM6OkdTdHJlYW1lck1lZGlhRW5n
aW5lSWRlbnRpZmllcik6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllckVuZ2luZUlkZW50
aWZpZXJzOjpHU3RyZWFtZXJNU0VNZWRpYUVuZ2luZUlkZW50aWZpZXIpOgorICAgICAgICAoV2Vi
Q29yZTo6TWVkaWFQbGF5ZXJFbmdpbmVJZGVudGlmaWVyczo6aG9sZVB1bmNoTWVkaWFFbmdpbmVJ
ZGVudGlmaWVyKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyRW5naW5lSWRlbnRpZmll
cnM6Ok1lZGlhRm91bmRhdGlvbk1lZGlhRW5naW5lSWRlbnRpZmllcik6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvUGxhdGZvcm1UaW1lUmFuZ2VzLmg6CisgICAgICAgIChXZWJDb3JlOjpQ
bGF0Zm9ybVRpbWVSYW5nZXM6OlBsYXRmb3JtVGltZVJhbmdlcyk6IERlbGV0ZWQuCisgICAgICAg
IChXZWJDb3JlOjpQbGF0Zm9ybVRpbWVSYW5nZXM6Omxlbmd0aCBjb25zdCk6IERlbGV0ZWQuCisg
ICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybVRpbWVSYW5nZXM6OlJhbmdlOjpSYW5nZSk6IERlbGV0
ZWQuCisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybVRpbWVSYW5nZXM6OlJhbmdlOjppc1BvaW50
SW5SYW5nZSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybVRpbWVS
YW5nZXM6OlJhbmdlOjppc092ZXJsYXBwaW5nUmFuZ2UgY29uc3QpOiBEZWxldGVkLgorICAgICAg
ICAoV2ViQ29yZTo6UGxhdGZvcm1UaW1lUmFuZ2VzOjpSYW5nZTo6aXNDb250aWd1b3VzV2l0aFJh
bmdlIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtVGltZVJhbmdl
czo6UmFuZ2U6OnVuaW9uV2l0aE92ZXJsYXBwaW5nT3JDb250aWd1b3VzUmFuZ2UgY29uc3QpOiBE
ZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1UaW1lUmFuZ2VzOjpSYW5nZTo6aXNC
ZWZvcmVSYW5nZSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
YXZmb3VuZGF0aW9uL2NmL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbkNGLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbkNGOjpyZWdpc3Rl
ck1lZGlhRW5naW5lKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24v
b2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLmg6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3Vu
ZGF0aW9uT2JqQy5tbToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUFWRm91
bmRhdGlvbk9iakM6OnJlZ2lzdGVyTWVkaWFFbmdpbmUpOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZG
T2JqQy5tbToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNl
QVZGT2JqQzo6cmVnaXN0ZXJNZWRpYUVuZ2luZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpD
Lm1tOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZP
YmpDOjpyZWdpc3Rlck1lZGlhRW5naW5lKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9n
c3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6cmVnaXN0ZXJNZWRpYUVuZ2luZSk6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL21zZS9NZWRpYVBsYXllclByaXZh
dGVHU3RyZWFtZXJNU0UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRl
R1N0cmVhbWVyTVNFOjpyZWdpc3Rlck1lZGlhRW5naW5lKToKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9ob2xlcHVuY2gvTWVkaWFQbGF5ZXJQcml2YXRlSG9sZVB1bmNoLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUhvbGVQdW5jaDo6cmVnaXN0ZXJNZWRpYUVu
Z2luZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL01lZGlhUGxheWVyUHJpdmF0
ZU1lZGlhRm91bmRhdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZh
dGVNZWRpYUZvdW5kYXRpb246OnJlZ2lzdGVyTWVkaWFFbmdpbmUpOgorICAgICAgICAqIHBsYXRm
b3JtL21vY2svbWVkaWFzb3VyY2UvTW9ja01lZGlhUGxheWVyTWVkaWFTb3VyY2UuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6TW9ja01lZGlhUGxheWVyTWVkaWFTb3VyY2U6OnJlZ2lzdGVyTWVkaWFF
bmdpbmUpOgorCiAyMDE5LTEyLTEwICBQZXIgQXJuZSBWb2xsYW4gIDxwdm9sbGFuQGFwcGxlLmNv
bT4KIAogICAgICAgICBNYWtlIGl0IHBvc3NpYmxlIHRvIGFkZCByZWdyZXNzaW9uIHRlc3RzIGZv
ciBibG9ja2VkIFhQQyBzZXJ2aWNlcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VM
b2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCA3NDM2MWVjYTNiN2Y2OTRlZTIzZDlk
MzY3ODIyYzZkZTViMTg1YjVlLi4xZTM0NzA4MGMwNmE5OGQzNmVhOWI5MzFlZjk4OGQ2NzIxYmUz
NDYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2Vi
S2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDE4NyBAQAorMjAxOS0xMi0xMCAgRXJpYyBDYXJsc29u
ICA8ZXJpYy5jYXJsc29uQGFwcGxlLmNvbT4KKworICAgICAgICBBZGQgaW5mcmFzdHJ1Y3R1cmUg
bmVlZGVkIGZvciBwbGF5aW5nIG1lZGlhIHBsYXllciBpbiB0aGUgR1BVIHByb2Nlc3MKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwNTA5NAorICAgICAg
ICA8cmRhcjovL3Byb2JsZW0vNTc4MTUzOTM+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgKiBEZXJpdmVkU291cmNlcy1pbnB1dC54Y2ZpbGVsaXN0Ogor
ICAgICAgICAqIERlcml2ZWRTb3VyY2VzLW91dHB1dC54Y2ZpbGVsaXN0OgorICAgICAgICAqIERl
cml2ZWRTb3VyY2VzLm1ha2U6CisgICAgICAgICogR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9X
ZWJQcm9jZXNzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6R1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vz
czo6R1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcyk6CisgICAgICAgIChXZWJLaXQ6OkdQVUNvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3M6On5HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzKToKKyAgICAgICAg
KFdlYktpdDo6R1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6ZGlkUmVjZWl2ZU1lc3NhZ2UpOgor
ICAgICAgICAoV2ViS2l0OjpHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpkaWRSZWNlaXZlU3lu
Y01lc3NhZ2UpOgorICAgICAgICAqIEdQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vz
cy5oOgorICAgICAgICAqIEdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2Vy
UHJveHkuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6bnVsbExvZ2dlcik6CisgICAgICAg
IChXZWJLaXQ6OlJlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5OjpQbGF5ZXJQcm94eTo6UGxh
eWVyUHJveHkpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94
eTo6UGxheWVyUHJveHk6On5QbGF5ZXJQcm94eSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZU1l
ZGlhUGxheWVyTWFuYWdlclByb3h5OjpSZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eSk6Cisg
ICAgICAgIChXZWJLaXQ6OlJlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5Ojp+UmVtb3RlTWVk
aWFQbGF5ZXJNYW5hZ2VyUHJveHkpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVNZWRpYVBsYXll
ck1hbmFnZXJQcm94eTo6Y3JlYXRlTWVkaWFQbGF5ZXIpOgorICAgICAgICAoV2ViS2l0OjpSZW1v
dGVNZWRpYVBsYXllck1hbmFnZXJQcm94eTo6Z2V0U3VwcG9ydGVkVHlwZXMpOgorICAgICAgICAo
V2ViS2l0OjpSZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eTo6c3VwcG9ydHNUeXBlKToKKyAg
ICAgICAgKFdlYktpdDo6UmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHk6Om9yaWdpbnNJbk1l
ZGlhQ2FjaGUpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94
eTo6Y2xlYXJNZWRpYUNhY2hlKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTWVkaWFQbGF5ZXJN
YW5hZ2VyUHJveHk6OmNsZWFyTWVkaWFDYWNoZUZvck9yaWdpbnMpOgorICAgICAgICAoV2ViS2l0
OjpSZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eTo6c3VwcG9ydHNLZXlTeXN0ZW0pOgorICAg
ICAgICAqIEdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHkuaDog
QWRkZWQuCisgICAgICAgIChXZWJLaXQ6OlJlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5Ojp3
ZWJQcm9jZXNzQ29ubmVjdGlvbiBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZU1lZGlh
UGxheWVyTWFuYWdlclByb3h5OjpkaWRSZWNlaXZlTWVzc2FnZUZyb21XZWJQcm9jZXNzKToKKyAg
ICAgICAgKFdlYktpdDo6UmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHk6OmRpZFJlY2VpdmVT
eW5jTWVzc2FnZUZyb21XZWJQcm9jZXNzKToKKyAgICAgICAgKiBHUFVQcm9jZXNzL21lZGlhL1Jl
bW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5Lm1lc3NhZ2VzLmluOiBBZGRlZC4KKyAgICAgICAg
KiBTY3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5weToKKyAgICAgICAgKiBTb3VyY2VzLnR4dDoKKyAg
ICAgICAgKiBTb3VyY2VzQ29jb2EudHh0OgorICAgICAgICAqIFdlYktpdC54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL21lZGlhL01lZGlhUGxheWVy
UHJpdmF0ZVJlbW90ZS5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpNZWRpYVBsYXllclBy
aXZhdGVSZW1vdGU6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZSk6CisgICAgICAgIChXZWJLaXQ6
Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6fk1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZSk6Cisg
ICAgICAgIChXZWJLaXQ6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6TWVkaWFQbGF5ZXJQcml2
YXRlUmVtb3RlOjpsb2FkKToKKyAgICAgICAgKFdlYktpdDo6TWVkaWFQbGF5ZXJQcml2YXRlUmVt
b3RlOjpsb2FkKToKKyAgICAgICAgKFdlYktpdDo6TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpj
YW5jZWxMb2FkKToKKyAgICAgICAgKFdlYktpdDo6TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpw
cmVwYXJlVG9QbGF5KToKKyAgICAgICAgKFdlYktpdDo6TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3Rl
OjpwbGF0Zm9ybUxheWVyIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6TWVkaWFQbGF5ZXJQcml2
YXRlUmVtb3RlOjpzZXRWaWRlb0Z1bGxzY3JlZW5MYXllcik6CisgICAgICAgIChXZWJLaXQ6Ok1l
ZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6dXBkYXRlVmlkZW9GdWxsc2NyZWVuSW5saW5lSW1hZ2Up
OgorICAgICAgICAoV2ViS2l0OjpNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OnNldFZpZGVvRnVs
bHNjcmVlbkZyYW1lKToKKyAgICAgICAgKFdlYktpdDo6TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3Rl
OjpzZXRWaWRlb0Z1bGxzY3JlZW5HcmF2aXR5KToKKyAgICAgICAgKFdlYktpdDo6TWVkaWFQbGF5
ZXJQcml2YXRlUmVtb3RlOjpzZXRWaWRlb0Z1bGxzY3JlZW5Nb2RlKToKKyAgICAgICAgKFdlYktp
dDo6TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjp2aWRlb0Z1bGxzY3JlZW5TdGFuZGJ5Q2hhbmdl
ZCk6CisgICAgICAgIChXZWJLaXQ6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6YWNjZXNzTG9n
IGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjplcnJv
ckxvZyBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6
cGxhdGZvcm1FcnJvckNvZGUgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpNZWRpYVBsYXllclBy
aXZhdGVSZW1vdGU6OnBsYXkpOgorICAgICAgICAoV2ViS2l0OjpNZWRpYVBsYXllclByaXZhdGVS
ZW1vdGU6OnBhdXNlKToKKyAgICAgICAgKFdlYktpdDo6TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3Rl
OjpzZXRCdWZmZXJpbmdQb2xpY3kpOgorICAgICAgICAoV2ViS2l0OjpNZWRpYVBsYXllclByaXZh
dGVSZW1vdGU6OnN1cHBvcnRzUGljdHVyZUluUGljdHVyZSBjb25zdCk6CisgICAgICAgIChXZWJL
aXQ6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6c3VwcG9ydHNGdWxsc2NyZWVuIGNvbnN0KToK
KyAgICAgICAgKFdlYktpdDo6TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpzdXBwb3J0c1NjYW5u
aW5nIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpy
ZXF1aXJlc0ltbWVkaWF0ZUNvbXBvc2l0aW5nIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6TWVk
aWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpjYW5TYXZlTWVkaWFEYXRhIGNvbnN0KToKKyAgICAgICAg
KFdlYktpdDo6TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpuYXR1cmFsU2l6ZSBjb25zdCk6Cisg
ICAgICAgIChXZWJLaXQ6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6aGFzVmlkZW8gY29uc3Qp
OgorICAgICAgICAoV2ViS2l0OjpNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6Omhhc0F1ZGlvIGNv
bnN0KToKKyAgICAgICAgKFdlYktpdDo6TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpzZXRWaXNp
YmxlKToKKyAgICAgICAgKFdlYktpdDo6TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpNZWRpYVBs
YXllclByaXZhdGVSZW1vdGU6OmR1cmF0aW9uTWVkaWFUaW1lIGNvbnN0KToKKyAgICAgICAgKFdl
YktpdDo6TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpjdXJyZW50TWVkaWFUaW1lIGNvbnN0KToK
KyAgICAgICAgKFdlYktpdDo6TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpnZXRTdGFydERhdGUg
Y29uc3QpOgorICAgICAgICAoV2ViS2l0OjpNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OnNlZWsp
OgorICAgICAgICAoV2ViS2l0OjpNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OnNlZWtXaXRoVG9s
ZXJhbmNlKToKKyAgICAgICAgKFdlYktpdDo6TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpzZWVr
aW5nIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpz
dGFydFRpbWUgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpNZWRpYVBsYXllclByaXZhdGVSZW1v
dGU6OnNldFJhdGVEb3VibGUpOgorICAgICAgICAoV2ViS2l0OjpNZWRpYVBsYXllclByaXZhdGVS
ZW1vdGU6OnJhdGUgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpNZWRpYVBsYXllclByaXZhdGVS
ZW1vdGU6OnNldFByZXNlcnZlc1BpdGNoKToKKyAgICAgICAgKFdlYktpdDo6TWVkaWFQbGF5ZXJQ
cml2YXRlUmVtb3RlOjpwYXVzZWQgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpNZWRpYVBsYXll
clByaXZhdGVSZW1vdGU6OnNldFZvbHVtZURvdWJsZSk6CisgICAgICAgIChXZWJLaXQ6Ok1lZGlh
UGxheWVyUHJpdmF0ZVJlbW90ZTo6c2V0TXV0ZWQpOgorICAgICAgICAoV2ViS2l0OjpNZWRpYVBs
YXllclByaXZhdGVSZW1vdGU6Omhhc0Nsb3NlZENhcHRpb25zIGNvbnN0KToKKyAgICAgICAgKFdl
YktpdDo6TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpzZXRDbG9zZWRDYXB0aW9uc1Zpc2libGUp
OgorICAgICAgICAoV2ViS2l0OjpNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6Om1heEZhc3RGb3J3
YXJkUmF0ZSBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90
ZTo6bWluRmFzdFJldmVyc2VSYXRlIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6TWVkaWFQbGF5
ZXJQcml2YXRlUmVtb3RlOjpuZXR3b3JrU3RhdGUgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpN
ZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OnJlYWR5U3RhdGUgY29uc3QpOgorICAgICAgICAoV2Vi
S2l0OjpNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OnNlZWthYmxlIGNvbnN0KToKKyAgICAgICAg
KFdlYktpdDo6TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpidWZmZXJlZCBjb25zdCk6CisgICAg
ICAgIChXZWJLaXQ6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6bWF4TWVkaWFUaW1lU2Vla2Fi
bGUgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6Om1p
bk1lZGlhVGltZVNlZWthYmxlIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6TWVkaWFQbGF5ZXJQ
cml2YXRlUmVtb3RlOjpzZWVrYWJsZVRpbWVSYW5nZXNMYXN0TW9kaWZpZWRUaW1lIGNvbnN0KToK
KyAgICAgICAgKFdlYktpdDo6TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpsaXZlVXBkYXRlSW50
ZXJ2YWwgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6
OnRvdGFsQnl0ZXMgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpNZWRpYVBsYXllclByaXZhdGVS
ZW1vdGU6OmRpZExvYWRpbmdQcm9ncmVzcyBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6Ok1lZGlh
UGxheWVyUHJpdmF0ZVJlbW90ZTo6c2V0U2l6ZSk6CisgICAgICAgIChXZWJLaXQ6Ok1lZGlhUGxh
eWVyUHJpdmF0ZVJlbW90ZTo6cGFpbnQpOgorICAgICAgICAoV2ViS2l0OjpNZWRpYVBsYXllclBy
aXZhdGVSZW1vdGU6OnBhaW50Q3VycmVudEZyYW1lSW5Db250ZXh0KToKKyAgICAgICAgKFdlYktp
dDo6TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpjb3B5VmlkZW9UZXh0dXJlVG9QbGF0Zm9ybVRl
eHR1cmUpOgorICAgICAgICAoV2ViS2l0OjpNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6Om5hdGl2
ZUltYWdlRm9yQ3VycmVudFRpbWUpOgorICAgICAgICAoV2ViS2l0OjpNZWRpYVBsYXllclByaXZh
dGVSZW1vdGU6OnNldFByZWxvYWQpOgorICAgICAgICAoV2ViS2l0OjpNZWRpYVBsYXllclByaXZh
dGVSZW1vdGU6Omhhc0F2YWlsYWJsZVZpZGVvRnJhbWUgY29uc3QpOgorICAgICAgICAoV2ViS2l0
OjpNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OmNhbkxvYWRQb3N0ZXIgY29uc3QpOgorICAgICAg
ICAoV2ViS2l0OjpNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OnNldFBvc3Rlcik6CisgICAgICAg
IChXZWJLaXQ6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6ZW50ZXJGdWxsc2NyZWVuKToKKyAg
ICAgICAgKFdlYktpdDo6TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpleGl0RnVsbHNjcmVlbik6
CisgICAgICAgIChXZWJLaXQ6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6d2lyZWxlc3NQbGF5
YmFja1RhcmdldE5hbWUgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpNZWRpYVBsYXllclByaXZh
dGVSZW1vdGU6OndpcmVsZXNzUGxheWJhY2tUYXJnZXRUeXBlIGNvbnN0KToKKyAgICAgICAgKFdl
YktpdDo6TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjp3aXJlbGVzc1ZpZGVvUGxheWJhY2tEaXNh
YmxlZCBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6
c2V0V2lyZWxlc3NWaWRlb1BsYXliYWNrRGlzYWJsZWQpOgorICAgICAgICAoV2ViS2l0OjpNZWRp
YVBsYXllclByaXZhdGVSZW1vdGU6OmNhblBsYXlUb1dpcmVsZXNzUGxheWJhY2tUYXJnZXQgY29u
c3QpOgorICAgICAgICAoV2ViS2l0OjpNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OmlzQ3VycmVu
dFBsYXliYWNrVGFyZ2V0V2lyZWxlc3MgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpNZWRpYVBs
YXllclByaXZhdGVSZW1vdGU6OnNldFdpcmVsZXNzUGxheWJhY2tUYXJnZXQpOgorICAgICAgICAo
V2ViS2l0OjpNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OnNldFNob3VsZFBsYXlUb1BsYXliYWNr
VGFyZ2V0KToKKyAgICAgICAgKFdlYktpdDo6TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpjYW5F
bnRlckZ1bGxzY3JlZW4gY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpNZWRpYVBsYXllclByaXZh
dGVSZW1vdGU6OnN1cHBvcnRzQWNjZWxlcmF0ZWRSZW5kZXJpbmcgY29uc3QpOgorICAgICAgICAo
V2ViS2l0OjpNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OmFjY2VsZXJhdGVkUmVuZGVyaW5nU3Rh
dGVDaGFuZ2VkKToKKyAgICAgICAgKFdlYktpdDo6TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpz
aG91bGRNYWludGFpbkFzcGVjdFJhdGlvIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6TWVkaWFQ
bGF5ZXJQcml2YXRlUmVtb3RlOjpzZXRTaG91bGRNYWludGFpbkFzcGVjdFJhdGlvKToKKyAgICAg
ICAgKFdlYktpdDo6TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpoYXNTaW5nbGVTZWN1cml0eU9y
aWdpbiBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6
ZGlkUGFzc0NPUlNBY2Nlc3NDaGVjayBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6Ok1lZGlhUGxh
eWVyUHJpdmF0ZVJlbW90ZTo6d291bGRUYWludE9yaWdpbiBjb25zdCk6CisgICAgICAgIChXZWJL
aXQ6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6bW92aWVMb2FkVHlwZSBjb25zdCk6CisgICAg
ICAgIChXZWJLaXQ6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6cHJlcGFyZUZvclJlbmRlcmlu
Zyk6CisgICAgICAgIChXZWJLaXQ6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6bWVkaWFUaW1l
Rm9yVGltZVZhbHVlIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6TWVkaWFQbGF5ZXJQcml2YXRl
UmVtb3RlOjptYXhpbXVtRHVyYXRpb25Ub0NhY2hlTWVkaWFUaW1lIGNvbnN0KToKKyAgICAgICAg
KFdlYktpdDo6TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpkZWNvZGVkRnJhbWVDb3VudCBjb25z
dCk6CisgICAgICAgIChXZWJLaXQ6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6ZHJvcHBlZEZy
YW1lQ291bnQgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpNZWRpYVBsYXllclByaXZhdGVSZW1v
dGU6OmF1ZGlvRGVjb2RlZEJ5dGVDb3VudCBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6Ok1lZGlh
UGxheWVyUHJpdmF0ZVJlbW90ZTo6dmlkZW9EZWNvZGVkQnl0ZUNvdW50IGNvbnN0KToKKyAgICAg
ICAgKFdlYktpdDo6TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpzZXRQcml2YXRlQnJvd3NpbmdN
b2RlKToKKyAgICAgICAgKFdlYktpdDo6TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjplbmdpbmVE
ZXNjcmlwdGlvbiBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6Ok1lZGlhUGxheWVyUHJpdmF0ZVJl
bW90ZTo6YXVkaW9Tb3VyY2VQcm92aWRlcik6CisgICAgICAgIChXZWJLaXQ6Ok1lZGlhUGxheWVy
UHJpdmF0ZVJlbW90ZTo6Y3JlYXRlU2Vzc2lvbik6CisgICAgICAgIChXZWJLaXQ6Ok1lZGlhUGxh
eWVyUHJpdmF0ZVJlbW90ZTo6c2V0Q0RNU2Vzc2lvbik6CisgICAgICAgIChXZWJLaXQ6Ok1lZGlh
UGxheWVyUHJpdmF0ZVJlbW90ZTo6a2V5QWRkZWQpOgorICAgICAgICAoV2ViS2l0OjpNZWRpYVBs
YXllclByaXZhdGVSZW1vdGU6OmNkbUluc3RhbmNlQXR0YWNoZWQpOgorICAgICAgICAoV2ViS2l0
OjpNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OmNkbUluc3RhbmNlRGV0YWNoZWQpOgorICAgICAg
ICAoV2ViS2l0OjpNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OmF0dGVtcHRUb0RlY3J5cHRXaXRo
SW5zdGFuY2UpOgorICAgICAgICAoV2ViS2l0OjpNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6Ondh
aXRpbmdGb3JLZXkgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpNZWRpYVBsYXllclByaXZhdGVS
ZW1vdGU6OnJlcXVpcmVzVGV4dFRyYWNrUmVwcmVzZW50YXRpb24gY29uc3QpOgorICAgICAgICAo
V2ViS2l0OjpNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OnNldFRleHRUcmFja1JlcHJlc2VudGF0
aW9uKToKKyAgICAgICAgKFdlYktpdDo6TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpzeW5jVGV4
dFRyYWNrQm91bmRzKToKKyAgICAgICAgKFdlYktpdDo6TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3Rl
Ojp0cmFja3NDaGFuZ2VkKToKKyAgICAgICAgKFdlYktpdDo6TWVkaWFQbGF5ZXJQcml2YXRlUmVt
b3RlOjpzaW11bGF0ZUF1ZGlvSW50ZXJydXB0aW9uKToKKyAgICAgICAgKFdlYktpdDo6TWVkaWFQ
bGF5ZXJQcml2YXRlUmVtb3RlOjpiZWdpblNpbXVsYXRlZEhEQ1BFcnJvcik6CisgICAgICAgIChX
ZWJLaXQ6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6ZW5kU2ltdWxhdGVkSERDUEVycm9yKToK
KyAgICAgICAgKFdlYktpdDo6TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpsYW5ndWFnZU9mUHJp
bWFyeUF1ZGlvVHJhY2sgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpNZWRpYVBsYXllclByaXZh
dGVSZW1vdGU6OmV4dHJhTWVtb3J5Q29zdCBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6Ok1lZGlh
UGxheWVyUHJpdmF0ZVJlbW90ZTo6ZmlsZVNpemUgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpN
ZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OmVuZGVkIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6
TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjp2aWRlb1BsYXliYWNrUXVhbGl0eU1ldHJpY3MpOgor
ICAgICAgICAoV2ViS2l0OjpNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6Om5vdGlmeVRyYWNrTW9k
ZUNoYW5nZWQpOgorICAgICAgICAoV2ViS2l0OjpNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6Om5v
dGlmeUFjdGl2ZVNvdXJjZUJ1ZmZlcnNDaGFuZ2VkKToKKyAgICAgICAgKFdlYktpdDo6TWVkaWFQ
bGF5ZXJQcml2YXRlUmVtb3RlOjpzZXRTaG91bGREaXNhYmxlU2xlZXApOgorICAgICAgICAoV2Vi
S2l0OjpNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OmFwcGxpY2F0aW9uV2lsbFJlc2lnbkFjdGl2
ZSk6CisgICAgICAgIChXZWJLaXQ6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6YXBwbGljYXRp
b25EaWRCZWNvbWVBY3RpdmUpOgorICAgICAgICAoV2ViS2l0OjpNZWRpYVBsYXllclByaXZhdGVS
ZW1vdGU6OnBlcmZvcm1UYXNrQXRNZWRpYVRpbWUpOgorICAgICAgICAoV2ViS2l0OjpNZWRpYVBs
YXllclByaXZhdGVSZW1vdGU6OnNob3VsZElnbm9yZUludHJpbnNpY1NpemUpOgorICAgICAgICAo
V2ViS2l0OjpNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OmxvZ0NoYW5uZWwgY29uc3QpOgorICAg
ICAgICAqIFdlYlByb2Nlc3MvR1BVL21lZGlhL01lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZS5oOiBB
ZGRlZC4KKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9tZWRpYS9NZWRpYVBsYXllclByaXZhdGVS
ZW1vdGVJZGVudGlmaWVyLmg6IEFkZGVkLgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL21lZGlh
L1JlbW90ZU1lZGlhUGxheWVyTWFuYWdlci5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpN
ZWRpYVBsYXllclJlbW90ZUZhY3Rvcnk6Ok1lZGlhUGxheWVyUmVtb3RlRmFjdG9yeSk6CisgICAg
ICAgIChXZWJLaXQ6OlJlbW90ZU1lZGlhUGxheWVyTWFuYWdlcjo6UmVtb3RlTWVkaWFQbGF5ZXJN
YW5hZ2VyKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyOjp+UmVt
b3RlTWVkaWFQbGF5ZXJNYW5hZ2VyKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTWVkaWFQbGF5
ZXJNYW5hZ2VyOjpzdXBwbGVtZW50TmFtZSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZU1lZGlh
UGxheWVyTWFuYWdlcjo6aW5pdGlhbGl6ZSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZU1lZGlh
UGxheWVyTWFuYWdlcjo6Y3JlYXRlUmVtb3RlTWVkaWFQbGF5ZXIpOgorICAgICAgICAoV2ViS2l0
OjpSZW1vdGVNZWRpYVBsYXllck1hbmFnZXI6OmdldFN1cHBvcnRlZFR5cGVzKToKKyAgICAgICAg
KFdlYktpdDo6UmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyOjpzdXBwb3J0c1R5cGVBbmRDb2RlY3Mp
OgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVNZWRpYVBsYXllck1hbmFnZXI6OnN1cHBvcnRzS2V5
U3lzdGVtKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyOjpvcmln
aW5zSW5NZWRpYUNhY2hlKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTWVkaWFQbGF5ZXJNYW5h
Z2VyOjpjbGVhck1lZGlhQ2FjaGUpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVNZWRpYVBsYXll
ck1hbmFnZXI6OmNsZWFyTWVkaWFDYWNoZUZvck9yaWdpbnMpOgorICAgICAgICAoV2ViS2l0OjpS
ZW1vdGVNZWRpYVBsYXllck1hbmFnZXI6Om5ldHdvcmtTdGF0ZUNoYW5nZWQpOgorICAgICAgICAo
V2ViS2l0OjpSZW1vdGVNZWRpYVBsYXllck1hbmFnZXI6OnVwZGF0ZVByZWZlcmVuY2VzKToKKyAg
ICAgICAgKFdlYktpdDo6UmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyOjpncHVQcm9jZXNzQ29ubmVj
dGlvbiBjb25zdCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlTWVkaWFQ
bGF5ZXJNYW5hZ2VyLmg6IEFkZGVkLgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL21lZGlhL1Jl
bW90ZU1lZGlhUGxheWVyTWFuYWdlci5tZXNzYWdlcy5pbjogQWRkZWQuCisgICAgICAgICogV2Vi
UHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjp1
cGRhdGVQcmVmZXJlbmNlcyk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcDoK
KwogMjAxOS0xMi0xMCAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgogCiAgICAgICAg
IFVucmV2aWV3ZWQsIGRyb3AgZGVidWcgYXNzZXJ0aW9uIGluIEluc3BlY3RvclRhcmdldFByb3h5
OjpkaWRDb21taXRQcm92aXNpb25hbFRhcmdldCgpIHRoYXQgaXMgaGl0dGluZyBhZnRlciByMjUz
MzM3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oKaW5kZXggMDNlNmY1NDMzYmY2ZjY3ZWJjNWY0OWZlZDBhOTUwMTJkNGJlNGJmOS4uYmYyODFh
ZmU1MTdiOWVhNmM0YzljZTZiZGVjMWUxODQ3MGJmODRjZCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJD
b3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTA0LDYgKzEwNCw3IEBA
CiAJCTA3MUU0OTZFMUFENUFBMEQwMDhBNTBCNCAvKiBNZWRpYVBsYXliYWNrVGFyZ2V0TWFjLm1t
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDcxRTQ5NkQx
QUQ1QUEwRDAwOEE1MEI0IC8qIE1lZGlhUGxheWJhY2tUYXJnZXRNYWMubW0gKi87IH07CiAJCTA3
MUU0OTcwMUFENUFCNUUwMDhBNTBCNCAvKiBNZWRpYVBsYXliYWNrVGFyZ2V0TWFjLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwNzFFNDk2RjFBRDVBQjVF
MDA4QTUwQjQgLyogTWVkaWFQbGF5YmFja1RhcmdldE1hYy5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTA3MjBCMEExMTREMzMyMzUwMDY0Mjk1NSAv
KiBHZW5lcmljRXZlbnRRdWV1ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gMDcyMEIwOUYxNEQzMzIzNTAwNjQyOTU1IC8qIEdlbmVyaWNFdmVudFF1ZXVl
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJMDcy
NUVGQTkyMzlBRDc5MzAwQTUzOEE5IC8qIE1lZGlhUGxheWVyUHJpdmF0ZS5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDc5RjVFNEIwRjNCRUJFQTAwNUUw
NzgyIC8qIE1lZGlhUGxheWVyUHJpdmF0ZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CiAJCTA3Mjc3RTREMTdEMDE4Q0MwMDE1NTM0RCAvKiBKU01lZGlh
U3RyZWFtLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAw
NzI3N0U0MTE3RDAxOENDMDAxNTUzNEQgLyogSlNNZWRpYVN0cmVhbS5oICovOyB9OwogCQkwNzI3
N0U0RDE3RDAxOENDMDAxNTUzNEUgLyogSlNDYW52YXNDYXB0dXJlTWVkaWFTdHJlYW1UcmFjay5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDcyNzdFNDEx
N0QwMThDQzAwMTU1MzRFIC8qIEpTQ2FudmFzQ2FwdHVyZU1lZGlhU3RyZWFtVHJhY2suaCAqLzsg
fTsKIAkJMDcyNzdFNEYxN0QwMThDQzAwMTU1MzREIC8qIEpTTWVkaWFTdHJlYW1BdWRpb0Rlc3Rp
bmF0aW9uTm9kZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gMDcyNzdFNDMxN0QwMThDQzAwMTU1MzREIC8qIEpTTWVkaWFTdHJlYW1BdWRpb0Rlc3RpbmF0
aW9uTm9kZS5oICovOyB9OwpAQCAtMzEzNzksNiArMzEzODAsNyBAQAogCQkJCTA3N0I2NDEzMUI5
NEYxMkUwMDNFOUFENSAvKiBNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyTW9jay5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJRTQ0NjEzRTQwQ0Q2ODFBMjAwRkFEQTc1IC8qIE1lZGlhUGxheWVyLmggaW4g
SGVhZGVycyAqLywKIAkJCQlDRDUyMDlFNDFCMEJEODM4MDA3NzE4NEUgLyogTWVkaWFQbGF5ZXJF
bnVtcy5oIGluIEhlYWRlcnMgKi8sCisJCQkJMDcyNUVGQTkyMzlBRDc5MzAwQTUzOEE5IC8qIE1l
ZGlhUGxheWVyUHJpdmF0ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMDc2RjBEMEUxMkI4MTkyNzAw
QzI2QUE0IC8qIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbi5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJREY5QUZENzIxM0ZDMzFEODAwMTVGRUI3IC8qIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91
bmRhdGlvbk9iakMuaCBpbiBIZWFkZXJzICovLAogCQkJCUNEQzhCNUEzMTgwNDYzNDcwMDE2RTY4
NSAvKiBNZWRpYVBsYXllclByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMuaCBpbiBIZWFkZXJzICov
LApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vQ29udGVudFR5cGUuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL0NvbnRlbnRUeXBlLmgKaW5kZXggYzgyYjViNzE5N2M5ZTE1
ZDFlMmY1NDdmZDU2NDFmYzVmNGVjNWVjZi4uNTg1YTNmZDVhN2VmZDFhYjM0OGQxNGYxZmYyMWU5
MDllNjY2YzI0OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vQ29udGVudFR5
cGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Db250ZW50VHlwZS5oCkBAIC0zMyw4
ICszMyw4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgQ29udGVudFR5cGUgewogcHVi
bGljOgotICAgIGV4cGxpY2l0IENvbnRlbnRUeXBlKFN0cmluZyYmIHR5cGUpOwotICAgIGV4cGxp
Y2l0IENvbnRlbnRUeXBlKGNvbnN0IFN0cmluZyYgdHlwZSk7CisgICAgV0VCQ09SRV9FWFBPUlQg
ZXhwbGljaXQgQ29udGVudFR5cGUoU3RyaW5nJiYgdHlwZSk7CisgICAgV0VCQ09SRV9FWFBPUlQg
ZXhwbGljaXQgQ29udGVudFR5cGUoY29uc3QgU3RyaW5nJiB0eXBlKTsKICAgICBDb250ZW50VHlw
ZSgpID0gZGVmYXVsdDsKIAogICAgIHN0YXRpYyBjb25zdCBTdHJpbmcmIGNvZGVjc1BhcmFtZXRl
cigpOwpAQCAtNDksNiArNDksMjMgQEAgcHVibGljOgogCiAgICAgU3RyaW5nIHRvSlNPTlN0cmlu
ZygpIGNvbnN0OwogCisgICAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4KKyAgICB2b2lkIGVuY29k
ZShFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAorICAgIHsKKyAgICAgICAgZW5jb2RlciA8PCBtX3R5
cGU7CisgICAgfQorCisgICAgdGVtcGxhdGUgPGNsYXNzIERlY29kZXI+CisgICAgc3RhdGljIE9w
dGlvbmFsPENvbnRlbnRUeXBlPiBkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKKyAgICB7CisgICAg
ICAgIE9wdGlvbmFsPFN0cmluZz4gdHlwZTsKKyAgICAgICAgZGVjb2RlciA+PiB0eXBlOworICAg
ICAgICBpZiAoIXR5cGUpCisgICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworCisgICAg
ICAgIHJldHVybiB7IENvbnRlbnRUeXBlKFdURk1vdmUoKnR5cGUpKSB9OworICAgIH0KKwogcHJp
dmF0ZToKICAgICBTdHJpbmcgbV90eXBlOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmNwcAppbmRleCA3ZDViY2NkOTBiMTc5NGM3MTZlZjNl
YjFkMTk5NmQ2M2E3NzU1MDgwLi45ODk5ZmNjNTBiMDIyNmEwYzNhMzY5MDdhNTQxMjZjMmRjYjBm
ZDI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBs
YXllci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5
ZXIuY3BwCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwNy0yMDE4IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwNy0yMDE5
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucwpAQCAtOTAsMTQgKzkwLDYgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi0jaWYg
IVJFTEVBU0VfTE9HX0RJU0FCTEVECi1zdGF0aWMgUmVmUHRyPExvZ2dlcj4mIG51bGxMb2dnZXIo
KQotewotICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxSZWZQdHI8TG9nZ2VyPj4gbG9nZ2VyOwot
ICAgIHJldHVybiBsb2dnZXI7Ci19Ci0jZW5kaWYKLQogLy8gYSBudWxsIHBsYXllciB0byBtYWtl
IE1lZGlhUGxheWVyIGxvZ2ljIHNpbXBsZXIKIAogY2xhc3MgTnVsbE1lZGlhUGxheWVyUHJpdmF0
ZSBmaW5hbCA6IHB1YmxpYyBNZWRpYVBsYXllclByaXZhdGVJbnRlcmZhY2UgewpAQCAtMTY2LDgg
KzE1OCwyMiBAQCBwdWJsaWM6CiAgICAgYm9vbCBoYXNTaW5nbGVTZWN1cml0eU9yaWdpbigpIGNv
bnN0IGZpbmFsIHsgcmV0dXJuIHRydWU7IH0KIH07CiAKKyNpZiAhUkVMRUFTRV9MT0dfRElTQUJM
RUQKK3N0YXRpYyBSZWZQdHI8TG9nZ2VyPiYgbnVsbExvZ2dlcigpCit7CisgICAgc3RhdGljIE5l
dmVyRGVzdHJveWVkPFJlZlB0cjxMb2dnZXI+PiBsb2dnZXI7CisgICAgcmV0dXJuIGxvZ2dlcjsK
K30KKyNlbmRpZgorCitzdGF0aWMgY29uc3QgVmVjdG9yPFdlYkNvcmU6OkNvbnRlbnRUeXBlPiYg
bnVsbENvbnRlbnRUeXBlVmVjdG9yKCkKK3sKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8VmVj
dG9yPFdlYkNvcmU6OkNvbnRlbnRUeXBlPj4gdmVjdG9yOworICAgIHJldHVybiB2ZWN0b3I7Cit9
CisKIGNsYXNzIE51bGxNZWRpYVBsYXllckNsaWVudCA6IHB1YmxpYyBNZWRpYVBsYXllckNsaWVu
dCB7Ci1wdWJsaWM6Citwcml2YXRlOgogI2lmICFSRUxFQVNFX0xPR19ESVNBQkxFRAogICAgIGNv
bnN0IExvZ2dlciYgbWVkaWFQbGF5ZXJMb2dnZXIoKSBmaW5hbAogICAgIHsKQEAgLTE3OSw4ICsx
ODUsMTEgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gKm51bGxMb2dnZXIoKS5nZXQoKTsKICAg
ICB9CiAjZW5kaWYKKworICAgIGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpDb250ZW50VHlwZT4mIG1l
ZGlhQ29udGVudFR5cGVzUmVxdWlyaW5nSGFyZHdhcmVTdXBwb3J0KCkgY29uc3QgZmluYWwgeyBy
ZXR1cm4gbnVsbENvbnRlbnRUeXBlVmVjdG9yKCk7IH0KIH07CiAKKwogY29uc3QgVmVjdG9yPENv
bnRlbnRUeXBlPiYgTWVkaWFQbGF5ZXJDbGllbnQ6Om1lZGlhQ29udGVudFR5cGVzUmVxdWlyaW5n
SGFyZHdhcmVTdXBwb3J0KCkgY29uc3QKIHsKICAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8VmVj
dG9yPENvbnRlbnRUeXBlPj4gY29udGVudFR5cGVzOwpAQCAtMTk1LDE3ICsyMDQsNyBAQCBzdGF0
aWMgTWVkaWFQbGF5ZXJDbGllbnQmIG51bGxNZWRpYVBsYXllckNsaWVudCgpCiAKIC8vIGVuZ2lu
ZSBzdXBwb3J0CiAKLXN0cnVjdCBNZWRpYVBsYXllckZhY3RvcnkgewotICAgIENyZWF0ZU1lZGlh
RW5naW5lUGxheWVyIGNvbnN0cnVjdG9yOwotICAgIE1lZGlhRW5naW5lU3VwcG9ydGVkVHlwZXMg
Z2V0U3VwcG9ydGVkVHlwZXM7Ci0gICAgTWVkaWFFbmdpbmVTdXBwb3J0c1R5cGUgc3VwcG9ydHNU
eXBlQW5kQ29kZWNzOwotICAgIE1lZGlhRW5naW5lT3JpZ2luc0luTWVkaWFDYWNoZSBvcmlnaW5z
SW5NZWRpYUNhY2hlOwotICAgIE1lZGlhRW5naW5lQ2xlYXJNZWRpYUNhY2hlIGNsZWFyTWVkaWFD
YWNoZTsKLSAgICBNZWRpYUVuZ2luZUNsZWFyTWVkaWFDYWNoZUZvck9yaWdpbnMgY2xlYXJNZWRp
YUNhY2hlRm9yT3JpZ2luczsKLSAgICBNZWRpYUVuZ2luZVN1cHBvcnRzS2V5U3lzdGVtIHN1cHBv
cnRzS2V5U3lzdGVtOwotfTsKLQotc3RhdGljIHZvaWQgYWRkTWVkaWFFbmdpbmUoQ3JlYXRlTWVk
aWFFbmdpbmVQbGF5ZXImJiwgTWVkaWFFbmdpbmVTdXBwb3J0ZWRUeXBlcywgTWVkaWFFbmdpbmVT
dXBwb3J0c1R5cGUsIE1lZGlhRW5naW5lT3JpZ2luc0luTWVkaWFDYWNoZSwgTWVkaWFFbmdpbmVD
bGVhck1lZGlhQ2FjaGUsIE1lZGlhRW5naW5lQ2xlYXJNZWRpYUNhY2hlRm9yT3JpZ2lucywgTWVk
aWFFbmdpbmVTdXBwb3J0c0tleVN5c3RlbSk7CitzdGF0aWMgdm9pZCBhZGRNZWRpYUVuZ2luZShz
dGQ6OnVuaXF1ZV9wdHI8TWVkaWFQbGF5ZXJGYWN0b3J5Pik7CiAKIHN0YXRpYyBMb2NrIG1lZGlh
RW5naW5lVmVjdG9yTG9jazsKIApAQCAtMjE1LDIxICsyMTQsMzcgQEAgc3RhdGljIGJvb2wmIGhh
dmVNZWRpYUVuZ2luZXNWZWN0b3IoKQogICAgIHJldHVybiBoYXZlVmVjdG9yOwogfQogCi1zdGF0
aWMgVmVjdG9yPE1lZGlhUGxheWVyRmFjdG9yeT4mIG11dGFibGVJbnN0YWxsZWRNZWRpYUVuZ2lu
ZXNWZWN0b3IoKQorc3RhdGljIFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8TWVkaWFQbGF5ZXJGYWN0
b3J5Pj4mIG11dGFibGVJbnN0YWxsZWRNZWRpYUVuZ2luZXNWZWN0b3IoKQogewotICAgIHN0YXRp
YyBOZXZlckRlc3Ryb3llZDxWZWN0b3I8TWVkaWFQbGF5ZXJGYWN0b3J5Pj4gaW5zdGFsbGVkRW5n
aW5lczsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8VmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxN
ZWRpYVBsYXllckZhY3Rvcnk+Pj4gaW5zdGFsbGVkRW5naW5lczsKICAgICByZXR1cm4gaW5zdGFs
bGVkRW5naW5lczsKIH0KIAorc3RhdGljIFJlbW90ZU1lZGlhUGxheWVyU3VwcG9ydDo6UmVnaXN0
ZXJSZW1vdGVQbGF5ZXJDYWxsYmFjayYgcmVnaXN0ZXJSZW1vdGVQbGF5ZXJDYWxsYmFjaygpCit7
CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFJlbW90ZU1lZGlhUGxheWVyU3VwcG9ydDo6UmVn
aXN0ZXJSZW1vdGVQbGF5ZXJDYWxsYmFjaz4gY2FsbGJhY2s7CisgICAgcmV0dXJuIGNhbGxiYWNr
OworfQorCit2b2lkIFJlbW90ZU1lZGlhUGxheWVyU3VwcG9ydDo6c2V0UmVnaXN0ZXJSZW1vdGVQ
bGF5ZXJDYWxsYmFjayhSZWdpc3RlclJlbW90ZVBsYXllckNhbGxiYWNrJiYgY2FsbGJhY2spCit7
CisgICAgcmVnaXN0ZXJSZW1vdGVQbGF5ZXJDYWxsYmFjaygpID0gV1RGTW92ZShjYWxsYmFjayk7
Cit9CisKIHN0YXRpYyB2b2lkIGJ1aWxkTWVkaWFFbmdpbmVzVmVjdG9yKCkKIHsKICAgICBBU1NF
UlQobWVkaWFFbmdpbmVWZWN0b3JMb2NrLmlzTG9ja2VkKCkpOwogCiAjaWYgVVNFKEFWRk9VTkRB
VElPTikKKyAgICBhdXRvJiByZWdpc3RlclJlbW90ZUVuZ2luZSA9IHJlZ2lzdGVyUmVtb3RlUGxh
eWVyQ2FsbGJhY2soKTsKKwogICAgIGlmIChEZXByZWNhdGVkR2xvYmFsU2V0dGluZ3M6OmlzQVZG
b3VuZGF0aW9uRW5hYmxlZCgpKSB7CiAKICNpZiBQTEFURk9STShDT0NPQSkKLSAgICAgICAgTWVk
aWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6cmVnaXN0ZXJNZWRpYUVuZ2luZShhZGRN
ZWRpYUVuZ2luZSk7CisgICAgICAgIGlmIChyZWdpc3RlclJlbW90ZUVuZ2luZSkKKyAgICAgICAg
ICAgIHJlZ2lzdGVyUmVtb3RlRW5naW5lKGFkZE1lZGlhRW5naW5lLCBNZWRpYVBsYXllckVudW1z
OjpNZWRpYUVuZ2luZUlkZW50aWZpZXI6OkFWRm91bmRhdGlvbik7CisgICAgICAgIGVsc2UKKyAg
ICAgICAgICAgIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OnJlZ2lzdGVyTWVk
aWFFbmdpbmUoYWRkTWVkaWFFbmdpbmUpOwogI2VuZGlmCiAKICNpZiBFTkFCTEUoTUVESUFfU09V
UkNFKQpAQCAtMjY1LDcgKzI4MCw3IEBAIHN0YXRpYyB2b2lkIGJ1aWxkTWVkaWFFbmdpbmVzVmVj
dG9yKCkKICAgICBoYXZlTWVkaWFFbmdpbmVzVmVjdG9yKCkgPSB0cnVlOwogfQogCi1zdGF0aWMg
Y29uc3QgVmVjdG9yPE1lZGlhUGxheWVyRmFjdG9yeT4mIGluc3RhbGxlZE1lZGlhRW5naW5lcygp
CitzdGF0aWMgY29uc3QgVmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxNZWRpYVBsYXllckZhY3Rvcnk+
PiYgaW5zdGFsbGVkTWVkaWFFbmdpbmVzKCkKIHsKICAgICB7CiAgICAgICAgIGF1dG8gbG9ja2Vy
ID0gaG9sZExvY2sobWVkaWFFbmdpbmVWZWN0b3JMb2NrKTsKQEAgLTI3NiwxNCArMjkxLDkgQEAg
c3RhdGljIGNvbnN0IFZlY3RvcjxNZWRpYVBsYXllckZhY3Rvcnk+JiBpbnN0YWxsZWRNZWRpYUVu
Z2luZXMoKQogICAgIHJldHVybiBtdXRhYmxlSW5zdGFsbGVkTWVkaWFFbmdpbmVzVmVjdG9yKCk7
CiB9CiAKLXN0YXRpYyB2b2lkIGFkZE1lZGlhRW5naW5lKENyZWF0ZU1lZGlhRW5naW5lUGxheWVy
JiYgY29uc3RydWN0b3IsIE1lZGlhRW5naW5lU3VwcG9ydGVkVHlwZXMgZ2V0U3VwcG9ydGVkVHlw
ZXMsIE1lZGlhRW5naW5lU3VwcG9ydHNUeXBlIHN1cHBvcnRzVHlwZSwKLSAgICBNZWRpYUVuZ2lu
ZU9yaWdpbnNJbk1lZGlhQ2FjaGUgb3JpZ2luc0luTWVkaWFDYWNoZSwgTWVkaWFFbmdpbmVDbGVh
ck1lZGlhQ2FjaGUgY2xlYXJNZWRpYUNhY2hlLCBNZWRpYUVuZ2luZUNsZWFyTWVkaWFDYWNoZUZv
ck9yaWdpbnMgY2xlYXJNZWRpYUNhY2hlRm9yT3JpZ2lucywgTWVkaWFFbmdpbmVTdXBwb3J0c0tl
eVN5c3RlbSBzdXBwb3J0c0tleVN5c3RlbSkKK3N0YXRpYyB2b2lkIGFkZE1lZGlhRW5naW5lKHN0
ZDo6dW5pcXVlX3B0cjxNZWRpYVBsYXllckZhY3Rvcnk+IGZhY3RvcnkpCiB7Ci0gICAgQVNTRVJU
KGNvbnN0cnVjdG9yKTsKLSAgICBBU1NFUlQoZ2V0U3VwcG9ydGVkVHlwZXMpOwotICAgIEFTU0VS
VChzdXBwb3J0c1R5cGUpOwotCi0gICAgbXV0YWJsZUluc3RhbGxlZE1lZGlhRW5naW5lc1ZlY3Rv
cigpLmFwcGVuZChNZWRpYVBsYXllckZhY3RvcnkgeyBXVEZNb3ZlKGNvbnN0cnVjdG9yKSwgZ2V0
U3VwcG9ydGVkVHlwZXMsIHN1cHBvcnRzVHlwZSwgb3JpZ2luc0luTWVkaWFDYWNoZSwgY2xlYXJN
ZWRpYUNhY2hlLCBjbGVhck1lZGlhQ2FjaGVGb3JPcmlnaW5zLCBzdXBwb3J0c0tleVN5c3RlbSB9
KTsKKyAgICBtdXRhYmxlSW5zdGFsbGVkTWVkaWFFbmdpbmVzVmVjdG9yKCkuYXBwZW5kKFdURk1v
dmUoZmFjdG9yeSkpOwogfQogCiBzdGF0aWMgY29uc3QgQXRvbVN0cmluZyYgYXBwbGljYXRpb25P
Y3RldFN0cmVhbSgpCkBAIC0yOTgsNiArMzA4LDIxIEBAIHN0YXRpYyBjb25zdCBBdG9tU3RyaW5n
JiB0ZXh0UGxhaW4oKQogICAgIHJldHVybiB0ZXh0UGxhaW47CiB9CiAKK2NvbnN0IE1lZGlhUGxh
eWVyRmFjdG9yeSogTWVkaWFQbGF5ZXI6Om1lZGlhRW5naW5lKE1lZGlhUGxheWVyRW51bXM6Ok1l
ZGlhRW5naW5lSWRlbnRpZmllciBpZGVudGlmaWVyKQoreworICAgIGF1dG8mIGVuZ2luZXMgPSBp
bnN0YWxsZWRNZWRpYUVuZ2luZXMoKTsKKyAgICBhdXRvIGN1cnJlbnRJbmRleCA9IGVuZ2luZXMu
ZmluZE1hdGNoaW5nKFtpZGVudGlmaWVyXSAoYXV0byYgZW5naW5lKSB7CisgICAgICAgIHJldHVy
biBlbmdpbmUtPmlkZW50aWZpZXIoKSA9PSBpZGVudGlmaWVyOworICAgIH0pOworCisgICAgaWYg
KGN1cnJlbnRJbmRleCA9PSBub3RGb3VuZCkgeworICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQo
KTsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgfQorCisgICAgcmV0dXJuIGVuZ2luZXNb
Y3VycmVudEluZGV4ICsgMV0uZ2V0KCk7Cit9CisKIHN0YXRpYyBjb25zdCBNZWRpYVBsYXllckZh
Y3RvcnkqIGJlc3RNZWRpYUVuZ2luZUZvclN1cHBvcnRQYXJhbWV0ZXJzKGNvbnN0IE1lZGlhRW5n
aW5lU3VwcG9ydFBhcmFtZXRlcnMmIHBhcmFtZXRlcnMsIGNvbnN0IE1lZGlhUGxheWVyRmFjdG9y
eSogY3VycmVudCA9IG51bGxwdHIpCiB7CiAgICAgaWYgKHBhcmFtZXRlcnMudHlwZS5pc0VtcHR5
KCkgJiYgIXBhcmFtZXRlcnMuaXNNZWRpYVNvdXJjZSAmJiAhcGFyYW1ldGVycy5pc01lZGlhU3Ry
ZWFtKQpAQCAtMzE1LDM0ICszNDAsNDYgQEAgc3RhdGljIGNvbnN0IE1lZGlhUGxheWVyRmFjdG9y
eSogYmVzdE1lZGlhRW5naW5lRm9yU3VwcG9ydFBhcmFtZXRlcnMoY29uc3QgTWVkaWEKICAgICBN
ZWRpYVBsYXllcjo6U3VwcG9ydHNUeXBlIHN1cHBvcnRlZCA9IE1lZGlhUGxheWVyOjpJc05vdFN1
cHBvcnRlZDsKICAgICBmb3IgKGF1dG8mIGVuZ2luZSA6IGluc3RhbGxlZE1lZGlhRW5naW5lcygp
KSB7CiAgICAgICAgIGlmIChjdXJyZW50KSB7Ci0gICAgICAgICAgICBpZiAoY3VycmVudCA9PSAm
ZW5naW5lKQorICAgICAgICAgICAgaWYgKGN1cnJlbnQgPT0gZW5naW5lLmdldCgpKQogICAgICAg
ICAgICAgICAgIGN1cnJlbnQgPSBudWxscHRyOwogICAgICAgICAgICAgY29udGludWU7CiAgICAg
ICAgIH0KLSAgICAgICAgTWVkaWFQbGF5ZXI6OlN1cHBvcnRzVHlwZSBlbmdpbmVTdXBwb3J0ID0g
ZW5naW5lLnN1cHBvcnRzVHlwZUFuZENvZGVjcyhwYXJhbWV0ZXJzKTsKKyAgICAgICAgTWVkaWFQ
bGF5ZXI6OlN1cHBvcnRzVHlwZSBlbmdpbmVTdXBwb3J0ID0gZW5naW5lLT5zdXBwb3J0c1R5cGVB
bmRDb2RlY3MocGFyYW1ldGVycyk7CiAgICAgICAgIGlmIChlbmdpbmVTdXBwb3J0ID4gc3VwcG9y
dGVkKSB7CiAgICAgICAgICAgICBzdXBwb3J0ZWQgPSBlbmdpbmVTdXBwb3J0OwotICAgICAgICAg
ICAgZm91bmRFbmdpbmUgPSAmZW5naW5lOworICAgICAgICAgICAgZm91bmRFbmdpbmUgPSBlbmdp
bmUuZ2V0KCk7CiAgICAgICAgIH0KICAgICB9CiAKICAgICByZXR1cm4gZm91bmRFbmdpbmU7CiB9
CiAKLXN0YXRpYyBjb25zdCBNZWRpYVBsYXllckZhY3RvcnkqIG5leHRNZWRpYUVuZ2luZShjb25z
dCBNZWRpYVBsYXllckZhY3RvcnkqIGN1cnJlbnQpCitjb25zdCBNZWRpYVBsYXllckZhY3Rvcnkq
IE1lZGlhUGxheWVyOjpuZXh0TWVkaWFFbmdpbmUoY29uc3QgTWVkaWFQbGF5ZXJGYWN0b3J5KiBj
dXJyZW50KQogeworICAgIGlmIChtX2FjdGl2ZUVuZ2luZUlkZW50aWZpZXIpIHsKKyAgICAgICAg
YXV0byogZW5naW5lID0gbWVkaWFFbmdpbmUobV9hY3RpdmVFbmdpbmVJZGVudGlmaWVyLnZhbHVl
KCkpOworICAgICAgICByZXR1cm4gY3VycmVudCAhPSBlbmdpbmUgPyBlbmdpbmUgOiBudWxscHRy
OworICAgIH0KKwogICAgIGF1dG8mIGVuZ2luZXMgPSBpbnN0YWxsZWRNZWRpYUVuZ2luZXMoKTsK
ICAgICBpZiAoZW5naW5lcy5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCiAg
ICAgaWYgKCFjdXJyZW50KSAKLSAgICAgICAgcmV0dXJuICZlbmdpbmVzLmZpcnN0KCk7CisgICAg
ICAgIHJldHVybiBlbmdpbmVzLmZpcnN0KCkuZ2V0KCk7CisKKyAgICBhdXRvIGN1cnJlbnRJbmRl
eCA9IGVuZ2luZXMuZmluZE1hdGNoaW5nKFtjdXJyZW50XSAoYXV0byYgZW5naW5lKSB7CisgICAg
ICAgIHJldHVybiBlbmdpbmUuZ2V0KCkgPT0gY3VycmVudDsKKyAgICB9KTsKKyAgICBpZiAoY3Vy
cmVudEluZGV4ID09IG5vdEZvdW5kKSB7CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwor
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICB9CiAKLSAgICBzaXplX3QgY3VycmVudEluZGV4
ID0gY3VycmVudCAtICZlbmdpbmVzLmZpcnN0KCk7CiAgICAgaWYgKGN1cnJlbnRJbmRleCArIDEg
Pj0gZW5naW5lcy5zaXplKCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgcmV0dXJu
ICZlbmdpbmVzW2N1cnJlbnRJbmRleCArIDFdOworICAgIHJldHVybiBlbmdpbmVzW2N1cnJlbnRJ
bmRleCArIDFdLmdldCgpOwogfQogCiAvLyBtZWRpYSBwbGF5ZXIKQEAgLTM1Miw2ICszODksMTMg
QEAgUmVmPE1lZGlhUGxheWVyPiBNZWRpYVBsYXllcjo6Y3JlYXRlKE1lZGlhUGxheWVyQ2xpZW50
JiBjbGllbnQpCiAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgTWVkaWFQbGF5ZXIoY2xpZW50KSk7
CiB9CiAKK1JlZjxNZWRpYVBsYXllcj4gTWVkaWFQbGF5ZXI6OmNyZWF0ZShNZWRpYVBsYXllckNs
aWVudCYgY2xpZW50LCBNZWRpYVBsYXllckVudW1zOjpNZWRpYUVuZ2luZUlkZW50aWZpZXIgbWVk
aWFFbmdpbmVJZGVudGlmaWVyKQoreworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IE1lZGlhUGxh
eWVyKGNsaWVudCwgbWVkaWFFbmdpbmVJZGVudGlmaWVyKSk7Cit9CisKKworCiBNZWRpYVBsYXll
cjo6TWVkaWFQbGF5ZXIoTWVkaWFQbGF5ZXJDbGllbnQmIGNsaWVudCkKICAgICA6IG1fY2xpZW50
KCZjbGllbnQpCiAgICAgLCBtX3JlbG9hZFRpbWVyKCp0aGlzLCAmTWVkaWFQbGF5ZXI6OnJlbG9h
ZFRpbWVyRmlyZWQpCkBAIC0zNTksNiArNDAzLDE0IEBAIE1lZGlhUGxheWVyOjpNZWRpYVBsYXll
cihNZWRpYVBsYXllckNsaWVudCYgY2xpZW50KQogewogfQogCitNZWRpYVBsYXllcjo6TWVkaWFQ
bGF5ZXIoTWVkaWFQbGF5ZXJDbGllbnQmIGNsaWVudCwgTWVkaWFQbGF5ZXJFbnVtczo6TWVkaWFF
bmdpbmVJZGVudGlmaWVyIG1lZGlhRW5naW5lSWRlbnRpZmllcikKKyAgICA6IG1fY2xpZW50KCZj
bGllbnQpCisgICAgLCBtX3JlbG9hZFRpbWVyKCp0aGlzLCAmTWVkaWFQbGF5ZXI6OnJlbG9hZFRp
bWVyRmlyZWQpCisgICAgLCBtX3ByaXZhdGUobWFrZVVuaXF1ZTxOdWxsTWVkaWFQbGF5ZXJQcml2
YXRlPih0aGlzKSkKKyAgICAsIG1fYWN0aXZlRW5naW5lSWRlbnRpZmllcihtZWRpYUVuZ2luZUlk
ZW50aWZpZXIpCit7Cit9CisKIE1lZGlhUGxheWVyOjp+TWVkaWFQbGF5ZXIoKQogewogICAgIEFT
U0VSVCghbV9pbml0aWFsaXppbmdNZWRpYUVuZ2luZSk7CkBAIC00NDEsNyArNDkzLDcgQEAgYm9v
bCBNZWRpYVBsYXllcjo6bG9hZChNZWRpYVN0cmVhbVByaXZhdGUmIG1lZGlhU3RyZWFtKQogfQog
I2VuZGlmCiAKLWNvbnN0IE1lZGlhUGxheWVyRmFjdG9yeSogTWVkaWFQbGF5ZXI6Om5leHRCZXN0
TWVkaWFFbmdpbmUoY29uc3QgTWVkaWFQbGF5ZXJGYWN0b3J5KiBjdXJyZW50KSBjb25zdAorY29u
c3QgTWVkaWFQbGF5ZXJGYWN0b3J5KiBNZWRpYVBsYXllcjo6bmV4dEJlc3RNZWRpYUVuZ2luZShj
b25zdCBNZWRpYVBsYXllckZhY3RvcnkqIGN1cnJlbnQpCiB7CiAgICAgTWVkaWFFbmdpbmVTdXBw
b3J0UGFyYW1ldGVycyBwYXJhbWV0ZXJzOwogICAgIHBhcmFtZXRlcnMudHlwZSA9IG1fY29udGVu
dFR5cGU7CkBAIC00NTMsOSArNTA1LDI3IEBAIGNvbnN0IE1lZGlhUGxheWVyRmFjdG9yeSogTWVk
aWFQbGF5ZXI6Om5leHRCZXN0TWVkaWFFbmdpbmUoY29uc3QgTWVkaWFQbGF5ZXJGYWN0CiAgICAg
cGFyYW1ldGVycy5pc01lZGlhU3RyZWFtID0gISFtX21lZGlhU3RyZWFtOwogI2VuZGlmCiAKKyAg
ICBpZiAobV9hY3RpdmVFbmdpbmVJZGVudGlmaWVyKSB7CisgICAgICAgIGlmIChjdXJyZW50KQor
ICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICAgICAgYXV0byogZW5naW5lID0gbWVk
aWFFbmdpbmUobV9hY3RpdmVFbmdpbmVJZGVudGlmaWVyLnZhbHVlKCkpOworICAgICAgICBpZiAo
ZW5naW5lICYmIGVuZ2luZS0+c3VwcG9ydHNUeXBlQW5kQ29kZWNzKHBhcmFtZXRlcnMpICE9IE1l
ZGlhUGxheWVyOjpJc05vdFN1cHBvcnRlZCkKKyAgICAgICAgICAgIHJldHVybiBlbmdpbmU7CisK
KyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgfQorCiAgICAgcmV0dXJuIGJlc3RNZWRpYUVu
Z2luZUZvclN1cHBvcnRQYXJhbWV0ZXJzKHBhcmFtZXRlcnMsIGN1cnJlbnQpOwogfQogCit2b2lk
IE1lZGlhUGxheWVyOjptZWRpYVBsYXllckZhaWxlZFRvTG9hZCgpCit7CisgICAgY2xpZW50KCku
bWVkaWFQbGF5ZXJFbmdpbmVGYWlsZWRUb0xvYWQoKTsKKyAgICBpZiAoIW1fYWN0aXZlRW5naW5l
SWRlbnRpZmllciAmJiBpbnN0YWxsZWRNZWRpYUVuZ2luZXMoKS5zaXplKCkgPiAxICYmIChtX2Nv
bnRlbnRUeXBlLmlzRW1wdHkoKSB8fCBuZXh0QmVzdE1lZGlhRW5naW5lKG1fY3VycmVudE1lZGlh
RW5naW5lKSkpCisgICAgICAgIG1fcmVsb2FkVGltZXIuc3RhcnRPbmVTaG90KDBfcyk7Cit9CisK
IHZvaWQgTWVkaWFQbGF5ZXI6OmxvYWRXaXRoTmV4dE1lZGlhRW5naW5lKGNvbnN0IE1lZGlhUGxh
eWVyRmFjdG9yeSogY3VycmVudCkKIHsKICNpZiBFTkFCTEUoTUVESUFfU09VUkNFKSAKQEAgLTQ4
OSwxMyArNTU5LDE1IEBAIHZvaWQgTWVkaWFQbGF5ZXI6OmxvYWRXaXRoTmV4dE1lZGlhRW5naW5l
KGNvbnN0IE1lZGlhUGxheWVyRmFjdG9yeSogY3VycmVudCkKICAgICAgICAgbV9wcml2YXRlID0g
bnVsbHB0cjsKICAgICB9IGVsc2UgaWYgKG1fY3VycmVudE1lZGlhRW5naW5lICE9IGVuZ2luZSkg
ewogICAgICAgICBtX2N1cnJlbnRNZWRpYUVuZ2luZSA9IGVuZ2luZTsKLSAgICAgICAgbV9wcml2
YXRlID0gZW5naW5lLT5jb25zdHJ1Y3Rvcih0aGlzKTsKLSAgICAgICAgY2xpZW50KCkubWVkaWFQ
bGF5ZXJFbmdpbmVVcGRhdGVkKCk7Ci0gICAgICAgIG1fcHJpdmF0ZS0+c2V0UHJpdmF0ZUJyb3dz
aW5nTW9kZShtX3ByaXZhdGVCcm93c2luZyk7Ci0gICAgICAgIG1fcHJpdmF0ZS0+c2V0UHJlbG9h
ZChtX3ByZWxvYWQpOwotICAgICAgICBtX3ByaXZhdGUtPnNldFByZXNlcnZlc1BpdGNoKHByZXNl
cnZlc1BpdGNoKCkpOwotICAgICAgICBpZiAobV9zaG91bGRQcmVwYXJlVG9SZW5kZXIpCi0gICAg
ICAgICAgICBtX3ByaXZhdGUtPnByZXBhcmVGb3JSZW5kZXJpbmcoKTsKKyAgICAgICAgbV9wcml2
YXRlID0gZW5naW5lLT5jcmVhdGVNZWRpYUVuZ2luZVBsYXllcih0aGlzKTsKKyAgICAgICAgaWYg
KG1fcHJpdmF0ZSkgeworICAgICAgICAgICAgY2xpZW50KCkubWVkaWFQbGF5ZXJFbmdpbmVVcGRh
dGVkKCk7CisgICAgICAgICAgICBtX3ByaXZhdGUtPnNldFByaXZhdGVCcm93c2luZ01vZGUobV9w
cml2YXRlQnJvd3NpbmcpOworICAgICAgICAgICAgbV9wcml2YXRlLT5zZXRQcmVsb2FkKG1fcHJl
bG9hZCk7CisgICAgICAgICAgICBtX3ByaXZhdGUtPnNldFByZXNlcnZlc1BpdGNoKHByZXNlcnZl
c1BpdGNoKCkpOworICAgICAgICAgICAgaWYgKG1fc2hvdWxkUHJlcGFyZVRvUmVuZGVyKQorICAg
ICAgICAgICAgICAgIG1fcHJpdmF0ZS0+cHJlcGFyZUZvclJlbmRlcmluZygpOworICAgICAgICB9
CiAgICAgfQogCiAgICAgaWYgKG1fcHJpdmF0ZSkgewpAQCAtNTEyLDggKzU4NCwxMiBAQCB2b2lk
IE1lZGlhUGxheWVyOjpsb2FkV2l0aE5leHRNZWRpYUVuZ2luZShjb25zdCBNZWRpYVBsYXllckZh
Y3RvcnkqIGN1cnJlbnQpCiAgICAgICAgIG1fcHJpdmF0ZS0+bG9hZChtX3VybC5zdHJpbmcoKSk7
CiAgICAgfSBlbHNlIHsKICAgICAgICAgbV9wcml2YXRlID0gbWFrZVVuaXF1ZTxOdWxsTWVkaWFQ
bGF5ZXJQcml2YXRlPih0aGlzKTsKLSAgICAgICAgY2xpZW50KCkubWVkaWFQbGF5ZXJFbmdpbmVV
cGRhdGVkKCk7Ci0gICAgICAgIGNsaWVudCgpLm1lZGlhUGxheWVyUmVzb3VyY2VOb3RTdXBwb3J0
ZWQoKTsKKyAgICAgICAgaWYgKCFtX2FjdGl2ZUVuZ2luZUlkZW50aWZpZXIgJiYgaW5zdGFsbGVk
TWVkaWFFbmdpbmVzKCkuc2l6ZSgpID4gMSAmJiAobV9jb250ZW50VHlwZS5pc0VtcHR5KCkgfHwg
bmV4dEJlc3RNZWRpYUVuZ2luZShtX2N1cnJlbnRNZWRpYUVuZ2luZSkpKQorICAgICAgICAgICAg
bV9yZWxvYWRUaW1lci5zdGFydE9uZVNob3QoMF9zKTsKKyAgICAgICAgZWxzZSB7CisgICAgICAg
ICAgICBjbGllbnQoKS5tZWRpYVBsYXllckVuZ2luZVVwZGF0ZWQoKTsKKyAgICAgICAgICAgIGNs
aWVudCgpLm1lZGlhUGxheWVyUmVzb3VyY2VOb3RTdXBwb3J0ZWQoKTsKKyAgICAgICAgfQogICAg
IH0KIAogICAgIG1faW5pdGlhbGl6aW5nTWVkaWFFbmdpbmUgPSBmYWxzZTsKQEAgLTkyOSw3ICsx
MDA1LDcgQEAgdm9pZCBNZWRpYVBsYXllcjo6Z2V0U3VwcG9ydGVkVHlwZXMoSGFzaFNldDxTdHJp
bmcsIEFTQ0lJQ2FzZUluc2Vuc2l0aXZlSGFzaD4mIHQKIHsKICAgICBmb3IgKGF1dG8mIGVuZ2lu
ZSA6IGluc3RhbGxlZE1lZGlhRW5naW5lcygpKSB7CiAgICAgICAgIEhhc2hTZXQ8U3RyaW5nLCBB
U0NJSUNhc2VJbnNlbnNpdGl2ZUhhc2g+IGVuZ2luZVR5cGVzOwotICAgICAgICBlbmdpbmUuZ2V0
U3VwcG9ydGVkVHlwZXMoZW5naW5lVHlwZXMpOworICAgICAgICBlbmdpbmUtPmdldFN1cHBvcnRl
ZFR5cGVzKGVuZ2luZVR5cGVzKTsKICAgICAgICAgdHlwZXMuYWRkKGVuZ2luZVR5cGVzLmJlZ2lu
KCksIGVuZ2luZVR5cGVzLmVuZCgpKTsKICAgICB9CiB9IApAQCAtMTEyNSwzNCArMTIwMSwyOCBA
QCBzdGF0aWMgdm9pZCBhZGRUb0hhc2goSGFzaFNldDxUPiYgdG9IYXNoLCBIYXNoU2V0PFQ+JiYg
ZnJvbUhhc2gpCiBIYXNoU2V0PFJlZlB0cjxTZWN1cml0eU9yaWdpbj4+IE1lZGlhUGxheWVyOjpv
cmlnaW5zSW5NZWRpYUNhY2hlKGNvbnN0IFN0cmluZyYgcGF0aCkKIHsKICAgICBIYXNoU2V0PFJl
ZlB0cjxTZWN1cml0eU9yaWdpbj4+IG9yaWdpbnM7Ci0gICAgZm9yIChhdXRvJiBlbmdpbmUgOiBp
bnN0YWxsZWRNZWRpYUVuZ2luZXMoKSkgewotICAgICAgICBpZiAoIWVuZ2luZS5vcmlnaW5zSW5N
ZWRpYUNhY2hlKQotICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgIGFkZFRvSGFzaChvcmln
aW5zLCBlbmdpbmUub3JpZ2luc0luTWVkaWFDYWNoZShwYXRoKSk7Ci0gICAgfQorICAgIGZvciAo
YXV0byYgZW5naW5lIDogaW5zdGFsbGVkTWVkaWFFbmdpbmVzKCkpCisgICAgICAgIGFkZFRvSGFz
aChvcmlnaW5zLCBlbmdpbmUtPm9yaWdpbnNJbk1lZGlhQ2FjaGUocGF0aCkpOworCiAgICAgcmV0
dXJuIG9yaWdpbnM7CiB9CiAKIHZvaWQgTWVkaWFQbGF5ZXI6OmNsZWFyTWVkaWFDYWNoZShjb25z
dCBTdHJpbmcmIHBhdGgsIFdhbGxUaW1lIG1vZGlmaWVkU2luY2UpCiB7Ci0gICAgZm9yIChhdXRv
JiBlbmdpbmUgOiBpbnN0YWxsZWRNZWRpYUVuZ2luZXMoKSkgewotICAgICAgICBpZiAoZW5naW5l
LmNsZWFyTWVkaWFDYWNoZSkKLSAgICAgICAgICAgIGVuZ2luZS5jbGVhck1lZGlhQ2FjaGUocGF0
aCwgbW9kaWZpZWRTaW5jZSk7Ci0gICAgfQorICAgIGZvciAoYXV0byYgZW5naW5lIDogaW5zdGFs
bGVkTWVkaWFFbmdpbmVzKCkpCisgICAgICAgIGVuZ2luZS0+Y2xlYXJNZWRpYUNhY2hlKHBhdGgs
IG1vZGlmaWVkU2luY2UpOwogfQogCiB2b2lkIE1lZGlhUGxheWVyOjpjbGVhck1lZGlhQ2FjaGVG
b3JPcmlnaW5zKGNvbnN0IFN0cmluZyYgcGF0aCwgY29uc3QgSGFzaFNldDxSZWZQdHI8U2VjdXJp
dHlPcmlnaW4+PiYgb3JpZ2lucykKIHsKLSAgICBmb3IgKGF1dG8mIGVuZ2luZSA6IGluc3RhbGxl
ZE1lZGlhRW5naW5lcygpKSB7Ci0gICAgICAgIGlmIChlbmdpbmUuY2xlYXJNZWRpYUNhY2hlRm9y
T3JpZ2lucykKLSAgICAgICAgICAgIGVuZ2luZS5jbGVhck1lZGlhQ2FjaGVGb3JPcmlnaW5zKHBh
dGgsIG9yaWdpbnMpOwotICAgIH0KKyAgICBmb3IgKGF1dG8mIGVuZ2luZSA6IGluc3RhbGxlZE1l
ZGlhRW5naW5lcygpKQorICAgICAgICBlbmdpbmUtPmNsZWFyTWVkaWFDYWNoZUZvck9yaWdpbnMo
cGF0aCwgb3JpZ2lucyk7CiB9CiAKIGJvb2wgTWVkaWFQbGF5ZXI6OnN1cHBvcnRzS2V5U3lzdGVt
KGNvbnN0IFN0cmluZyYga2V5U3lzdGVtLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlKQogewogICAg
IGZvciAoYXV0byYgZW5naW5lIDogaW5zdGFsbGVkTWVkaWFFbmdpbmVzKCkpIHsKLSAgICAgICAg
aWYgKGVuZ2luZS5zdXBwb3J0c0tleVN5c3RlbSAmJiBlbmdpbmUuc3VwcG9ydHNLZXlTeXN0ZW0o
a2V5U3lzdGVtLCBtaW1lVHlwZSkpCisgICAgICAgIGlmIChlbmdpbmUtPnN1cHBvcnRzS2V5U3lz
dGVtKGtleVN5c3RlbSwgbWltZVR5cGUpKQogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAg
fQogICAgIHJldHVybiBmYWxzZTsKQEAgLTExNzIsNyArMTI0Miw3IEBAIHZvaWQgTWVkaWFQbGF5
ZXI6Om5ldHdvcmtTdGF0ZUNoYW5nZWQoKQogICAgIC8vIGxldCB0aGUgbmV4dCBlbmdpbmUgdHJ5
LgogICAgIGlmIChtX3ByaXZhdGUtPm5ldHdvcmtTdGF0ZSgpID49IEZvcm1hdEVycm9yICYmIG1f
cHJpdmF0ZS0+cmVhZHlTdGF0ZSgpIDwgSGF2ZU1ldGFkYXRhKSB7CiAgICAgICAgIGNsaWVudCgp
Lm1lZGlhUGxheWVyRW5naW5lRmFpbGVkVG9Mb2FkKCk7Ci0gICAgICAgIGlmIChpbnN0YWxsZWRN
ZWRpYUVuZ2luZXMoKS5zaXplKCkgPiAxICYmIChtX2NvbnRlbnRUeXBlLmlzRW1wdHkoKSB8fCBu
ZXh0QmVzdE1lZGlhRW5naW5lKG1fY3VycmVudE1lZGlhRW5naW5lKSkpIHsKKyAgICAgICAgaWYg
KCFtX2FjdGl2ZUVuZ2luZUlkZW50aWZpZXIgJiYgaW5zdGFsbGVkTWVkaWFFbmdpbmVzKCkuc2l6
ZSgpID4gMSAmJiAobV9jb250ZW50VHlwZS5pc0VtcHR5KCkgfHwgbmV4dEJlc3RNZWRpYUVuZ2lu
ZShtX2N1cnJlbnRNZWRpYUVuZ2luZSkpKSB7CiAgICAgICAgICAgICBtX3JlbG9hZFRpbWVyLnN0
YXJ0T25lU2hvdCgwX3MpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuaAppbmRleCBmYjllYmEw
ZTRhYmUzMWM3NTI3MDBjYjdjZTY4OTBkYjk4OWMyMjJiLi5lYTQ5MmI4NGMwMjA2ODQ2MGFmYmY3
NmUxMzM1MWYyZjczOTczYWUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9NZWRpYVBsYXllci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL01lZGlhUGxheWVyLmgKQEAgLTY3LDYgKzY3LDcgQEAgY2xhc3MgSW5iYW5kVGV4dFRyYWNr
UHJpdmF0ZTsKIGNsYXNzIExlZ2FjeUNETVNlc3Npb25DbGllbnQ7CiBjbGFzcyBNZWRpYVBsYXli
YWNrVGFyZ2V0OwogY2xhc3MgTWVkaWFQbGF5ZXI7CitjbGFzcyBNZWRpYVBsYXllckZhY3Rvcnk7
CiBjbGFzcyBNZWRpYVBsYXllclByaXZhdGVJbnRlcmZhY2U7CiBjbGFzcyBNZWRpYVBsYXllclJl
cXVlc3RJbnN0YWxsTWlzc2luZ1BsdWdpbnNDYWxsYmFjazsKIGNsYXNzIE1lZGlhU291cmNlUHJp
dmF0ZUNsaWVudDsKQEAgLTc2LDcgKzc3LDYgQEAgY2xhc3MgVGV4dFRyYWNrUmVwcmVzZW50YXRp
b247CiAKIHN0cnVjdCBDb29raWU7CiBzdHJ1Y3QgR3JhcGhpY3NEZXZpY2VBZGFwdGVyOwotc3Ry
dWN0IE1lZGlhUGxheWVyRmFjdG9yeTsKIAogc3RydWN0IE1lZGlhRW5naW5lU3VwcG9ydFBhcmFt
ZXRlcnMgewogICAgIENvbnRlbnRUeXBlIHR5cGU7CkBAIC04NCw2ICs4NCw0OCBAQCBzdHJ1Y3Qg
TWVkaWFFbmdpbmVTdXBwb3J0UGFyYW1ldGVycyB7CiAgICAgYm9vbCBpc01lZGlhU291cmNlIHsg
ZmFsc2UgfTsKICAgICBib29sIGlzTWVkaWFTdHJlYW0geyBmYWxzZSB9OwogICAgIFZlY3RvcjxD
b250ZW50VHlwZT4gY29udGVudFR5cGVzUmVxdWlyaW5nSGFyZHdhcmVTdXBwb3J0OworCisjaWYg
RU5BQkxFKEdQVV9QUk9DRVNTKQorICAgIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+CisgICAgdm9p
ZCBlbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QKKyAgICB7CisgICAgICAgIGVuY29kZXIg
PDwgdHlwZTsKKyAgICAgICAgZW5jb2RlciA8PCB1cmw7CisgICAgICAgIGVuY29kZXIgPDwgaXNN
ZWRpYVNvdXJjZTsKKyAgICAgICAgZW5jb2RlciA8PCBjb250ZW50VHlwZXNSZXF1aXJpbmdIYXJk
d2FyZVN1cHBvcnQ7CisgICAgfQorCisgICAgdGVtcGxhdGUgPGNsYXNzIERlY29kZXI+CisgICAg
c3RhdGljIE9wdGlvbmFsPE1lZGlhRW5naW5lU3VwcG9ydFBhcmFtZXRlcnM+IGRlY29kZShEZWNv
ZGVyJiBkZWNvZGVyKQorICAgIHsKKyAgICAgICAgT3B0aW9uYWw8Q29udGVudFR5cGU+IHR5cGU7
CisgICAgICAgIGRlY29kZXIgPj4gdHlwZTsKKyAgICAgICAgaWYgKCF0eXBlKQorICAgICAgICAg
ICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKworICAgICAgICBPcHRpb25hbDxVUkw+IHVybDsKKyAg
ICAgICAgZGVjb2RlciA+PiB1cmw7CisgICAgICAgIGlmICghdXJsKQorICAgICAgICAgICAgcmV0
dXJuIFdURjo6bnVsbG9wdDsKKworICAgICAgICBPcHRpb25hbDxib29sPiBpc01lZGlhU291cmNl
OworICAgICAgICBkZWNvZGVyID4+IGlzTWVkaWFTb3VyY2U7CisgICAgICAgIGlmICghaXNNZWRp
YVNvdXJjZSkKKyAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisKKyAgICAgICAgT3B0
aW9uYWw8Ym9vbD4gaXNNZWRpYVN0cmVhbTsKKyAgICAgICAgZGVjb2RlciA+PiBpc01lZGlhU3Ry
ZWFtOworICAgICAgICBpZiAoIWlzTWVkaWFTdHJlYW0pCisgICAgICAgICAgICByZXR1cm4gV1RG
OjpudWxsb3B0OworCisgICAgICAgIE9wdGlvbmFsPFZlY3RvcjxDb250ZW50VHlwZT4+IHR5cGVz
UmVxdWlyaW5nSGFyZHdhcmU7CisgICAgICAgIGRlY29kZXIgPj4gdHlwZXNSZXF1aXJpbmdIYXJk
d2FyZTsKKyAgICAgICAgaWYgKCF0eXBlc1JlcXVpcmluZ0hhcmR3YXJlKQorICAgICAgICAgICAg
cmV0dXJuIFdURjo6bnVsbG9wdDsKKworICAgICAgICByZXR1cm4ge3sgV1RGTW92ZSgqdHlwZSks
IFdURk1vdmUoKnVybCksIFdURk1vdmUoKmlzTWVkaWFTb3VyY2UpLCBXVEZNb3ZlKCppc01lZGlh
U3RyZWFtKSwgV1RGTW92ZSgqdHlwZXNSZXF1aXJpbmdIYXJkd2FyZSkgfX07CisgICAgfQorI2Vu
ZGlmCiB9OwogCiBzdHJ1Y3QgVmlkZW9QbGF5YmFja1F1YWxpdHlNZXRyaWNzIHsKQEAgLTIzNSw3
ICsyNzcsNyBAQCBwdWJsaWM6CiAjZW5kaWYKIAogICAgIHZpcnR1YWwgYm9vbCBtZWRpYVBsYXll
clNob3VsZERpc2FibGVTbGVlcCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgdmlydHVh
bCBjb25zdCBWZWN0b3I8Q29udGVudFR5cGU+JiBtZWRpYUNvbnRlbnRUeXBlc1JlcXVpcmluZ0hh
cmR3YXJlU3VwcG9ydCgpIGNvbnN0OworICAgIHZpcnR1YWwgY29uc3QgVmVjdG9yPENvbnRlbnRU
eXBlPiYgbWVkaWFDb250ZW50VHlwZXNSZXF1aXJpbmdIYXJkd2FyZVN1cHBvcnQoKSBjb25zdCA9
IDA7CiAgICAgdmlydHVhbCBib29sIG1lZGlhUGxheWVyU2hvdWxkQ2hlY2tIYXJkd2FyZVN1cHBv
cnQoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogCiAjaWYgIVJFTEVBU0VfTE9HX0RJU0FCTEVE
CkBAIC0yNDQsMTYgKzI4NiwxOCBAQCBwdWJsaWM6CiAjZW5kaWYKIH07CiAKLWNsYXNzIE1lZGlh
UGxheWVyIDogcHVibGljIE1lZGlhUGxheWVyRW51bXMsIHB1YmxpYyBSZWZDb3VudGVkPE1lZGlh
UGxheWVyPiB7CitjbGFzcyBXRUJDT1JFX0VYUE9SVCBNZWRpYVBsYXllciA6IHB1YmxpYyBNZWRp
YVBsYXllckVudW1zLCBwdWJsaWMgUmVmQ291bnRlZDxNZWRpYVBsYXllcj4gewogICAgIFdURl9N
QUtFX05PTkNPUFlBQkxFKE1lZGlhUGxheWVyKTsgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBw
dWJsaWM6CiAgICAgc3RhdGljIFJlZjxNZWRpYVBsYXllcj4gY3JlYXRlKE1lZGlhUGxheWVyQ2xp
ZW50Jik7CisgICAgc3RhdGljIFJlZjxNZWRpYVBsYXllcj4gY3JlYXRlKE1lZGlhUGxheWVyQ2xp
ZW50JiwgTWVkaWFQbGF5ZXJFbnVtczo6TWVkaWFFbmdpbmVJZGVudGlmaWVyKTsKICAgICB2aXJ0
dWFsIH5NZWRpYVBsYXllcigpOwogCiAgICAgdm9pZCBpbnZhbGlkYXRlKCk7CiAKICAgICAvLyBN
ZWRpYSBlbmdpbmUgc3VwcG9ydC4KICAgICB1c2luZyBNZWRpYVBsYXllckVudW1zOjpTdXBwb3J0
c1R5cGU7CisgICAgc3RhdGljIGNvbnN0IE1lZGlhUGxheWVyRmFjdG9yeSogbWVkaWFFbmdpbmUo
TWVkaWFQbGF5ZXJFbnVtczo6TWVkaWFFbmdpbmVJZGVudGlmaWVyKTsKICAgICBzdGF0aWMgU3Vw
cG9ydHNUeXBlIHN1cHBvcnRzVHlwZShjb25zdCBNZWRpYUVuZ2luZVN1cHBvcnRQYXJhbWV0ZXJz
Jik7CiAgICAgc3RhdGljIHZvaWQgZ2V0U3VwcG9ydGVkVHlwZXMoSGFzaFNldDxTdHJpbmcsIEFT
Q0lJQ2FzZUluc2Vuc2l0aXZlSGFzaD4mKTsKICAgICBzdGF0aWMgYm9vbCBpc0F2YWlsYWJsZSgp
OwpAQCAtNTMyLDExICs1NzYsMTEgQEAgcHVibGljOgogICAgIHN0YXRpYyB2b2lkIHJlc2V0TWVk
aWFFbmdpbmVzKCk7CiAKICNpZiBVU0UoR1NUUkVBTUVSKQotICAgIFdFQkNPUkVfRVhQT1JUIHZv
aWQgc2ltdWxhdGVBdWRpb0ludGVycnVwdGlvbigpOworICAgIHZvaWQgc2ltdWxhdGVBdWRpb0lu
dGVycnVwdGlvbigpOwogI2VuZGlmCiAKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGJlZ2luU2lt
dWxhdGVkSERDUEVycm9yKCk7Ci0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBlbmRTaW11bGF0ZWRI
RENQRXJyb3IoKTsKKyAgICB2b2lkIGJlZ2luU2ltdWxhdGVkSERDUEVycm9yKCk7CisgICAgdm9p
ZCBlbmRTaW11bGF0ZWRIRENQRXJyb3IoKTsKIAogICAgIFN0cmluZyBsYW5ndWFnZU9mUHJpbWFy
eUF1ZGlvVHJhY2soKSBjb25zdDsKIApAQCAtNTcxLDcgKzYxNSw3IEBAIHB1YmxpYzoKICAgICB2
b2lkIGFwcGxpY2F0aW9uRGlkQmVjb21lQWN0aXZlKCk7CiAKICNpZiBVU0UoQVZGT1VOREFUSU9O
KQotICAgIFdFQkNPUkVfRVhQT1JUIEFWUGxheWVyICpvYmpDQVZGb3VuZGF0aW9uQVZQbGF5ZXIo
KSBjb25zdDsKKyAgICBBVlBsYXllciAqb2JqQ0FWRm91bmRhdGlvbkFWUGxheWVyKCkgY29uc3Q7
CiAjZW5kaWYKIAogICAgIGJvb2wgcGVyZm9ybVRhc2tBdE1lZGlhVGltZShXVEY6OkZ1bmN0aW9u
PHZvaWQoKT4mJiwgTWVkaWFUaW1lKTsKQEAgLTU5NiwxMSArNjQwLDE0IEBAIHB1YmxpYzoKIAog
cHJpdmF0ZToKICAgICBNZWRpYVBsYXllcihNZWRpYVBsYXllckNsaWVudCYpOworICAgIE1lZGlh
UGxheWVyKE1lZGlhUGxheWVyQ2xpZW50JiwgTWVkaWFQbGF5ZXJFbnVtczo6TWVkaWFFbmdpbmVJ
ZGVudGlmaWVyKTsKIAogICAgIE1lZGlhUGxheWVyQ2xpZW50JiBjbGllbnQoKSBjb25zdCB7IHJl
dHVybiAqbV9jbGllbnQ7IH0KIAotICAgIGNvbnN0IE1lZGlhUGxheWVyRmFjdG9yeSogbmV4dEJl
c3RNZWRpYUVuZ2luZShjb25zdCBNZWRpYVBsYXllckZhY3RvcnkqKSBjb25zdDsKKyAgICBjb25z
dCBNZWRpYVBsYXllckZhY3RvcnkqIG5leHRCZXN0TWVkaWFFbmdpbmUoY29uc3QgTWVkaWFQbGF5
ZXJGYWN0b3J5Kik7CiAgICAgdm9pZCBsb2FkV2l0aE5leHRNZWRpYUVuZ2luZShjb25zdCBNZWRp
YVBsYXllckZhY3RvcnkqKTsKKyAgICBjb25zdCBNZWRpYVBsYXllckZhY3RvcnkqIG5leHRNZWRp
YUVuZ2luZShjb25zdCBNZWRpYVBsYXllckZhY3RvcnkqKTsKKyAgICB2b2lkIG1lZGlhUGxheWVy
RmFpbGVkVG9Mb2FkKCk7CiAgICAgdm9pZCByZWxvYWRUaW1lckZpcmVkKCk7CiAKICAgICBNZWRp
YVBsYXllckNsaWVudCogbV9jbGllbnQ7CkBAIC02MTAsNiArNjU3LDcgQEAgcHJpdmF0ZToKICAg
ICBVUkwgbV91cmw7CiAgICAgQ29udGVudFR5cGUgbV9jb250ZW50VHlwZTsKICAgICBTdHJpbmcg
bV9rZXlTeXN0ZW07CisgICAgT3B0aW9uYWw8TWVkaWFQbGF5ZXJFbnVtczo6TWVkaWFFbmdpbmVJ
ZGVudGlmaWVyPiBtX2FjdGl2ZUVuZ2luZUlkZW50aWZpZXI7CiAgICAgSW50U2l6ZSBtX3NpemU7
CiAgICAgUHJlbG9hZCBtX3ByZWxvYWQgeyBBdXRvIH07CiAgICAgZG91YmxlIG1fdm9sdW1lIHsg
MSB9OwpAQCAtNjI5LDE2ICs2NzcsMjQgQEAgcHJpdmF0ZToKICNlbmRpZgogfTsKIAotdXNpbmcg
Q3JlYXRlTWVkaWFFbmdpbmVQbGF5ZXIgPSBXVEY6OkZ1bmN0aW9uPHN0ZDo6dW5pcXVlX3B0cjxN
ZWRpYVBsYXllclByaXZhdGVJbnRlcmZhY2U+IChNZWRpYVBsYXllciopPjsKLXR5cGVkZWYgdm9p
ZCAoKk1lZGlhRW5naW5lU3VwcG9ydGVkVHlwZXMpKEhhc2hTZXQ8U3RyaW5nLCBBU0NJSUNhc2VJ
bnNlbnNpdGl2ZUhhc2g+JiB0eXBlcyk7Ci10eXBlZGVmIE1lZGlhUGxheWVyOjpTdXBwb3J0c1R5
cGUgKCpNZWRpYUVuZ2luZVN1cHBvcnRzVHlwZSkoY29uc3QgTWVkaWFFbmdpbmVTdXBwb3J0UGFy
YW1ldGVycyYgcGFyYW1ldGVycyk7Ci10eXBlZGVmIEhhc2hTZXQ8UmVmUHRyPFNlY3VyaXR5T3Jp
Z2luPj4gKCpNZWRpYUVuZ2luZU9yaWdpbnNJbk1lZGlhQ2FjaGUpKGNvbnN0IFN0cmluZyYgcGF0
aCk7Ci10eXBlZGVmIHZvaWQgKCpNZWRpYUVuZ2luZUNsZWFyTWVkaWFDYWNoZSkoY29uc3QgU3Ry
aW5nJiBwYXRoLCBXYWxsVGltZSBtb2RpZmllZFNpbmNlKTsKLXR5cGVkZWYgdm9pZCAoKk1lZGlh
RW5naW5lQ2xlYXJNZWRpYUNhY2hlRm9yT3JpZ2lucykoY29uc3QgU3RyaW5nJiBwYXRoLCBjb25z
dCBIYXNoU2V0PFJlZlB0cjxTZWN1cml0eU9yaWdpbj4+Jik7Ci10eXBlZGVmIGJvb2wgKCpNZWRp
YUVuZ2luZVN1cHBvcnRzS2V5U3lzdGVtKShjb25zdCBTdHJpbmcmIGtleVN5c3RlbSwgY29uc3Qg
U3RyaW5nJiBtaW1lVHlwZSk7CitjbGFzcyBNZWRpYVBsYXllckZhY3RvcnkgeworICAgIFdURl9N
QUtFX0ZBU1RfQUxMT0NBVEVEOworcHVibGljOgorICAgIE1lZGlhUGxheWVyRmFjdG9yeSgpID0g
ZGVmYXVsdDsKKyAgICB2aXJ0dWFsIH5NZWRpYVBsYXllckZhY3RvcnkoKSB7IH0KKworICAgIHZp
cnR1YWwgTWVkaWFQbGF5ZXJFbnVtczo6TWVkaWFFbmdpbmVJZGVudGlmaWVyIGlkZW50aWZpZXIo
KSBjb25zdCAgPSAwOworICAgIHZpcnR1YWwgc3RkOjp1bmlxdWVfcHRyPE1lZGlhUGxheWVyUHJp
dmF0ZUludGVyZmFjZT4gY3JlYXRlTWVkaWFFbmdpbmVQbGF5ZXIoTWVkaWFQbGF5ZXIqKSBjb25z
dCA9IDA7CisgICAgdmlydHVhbCB2b2lkIGdldFN1cHBvcnRlZFR5cGVzKEhhc2hTZXQ8U3RyaW5n
LCBBU0NJSUNhc2VJbnNlbnNpdGl2ZUhhc2g+JikgY29uc3QgPSAwOworICAgIHZpcnR1YWwgTWVk
aWFQbGF5ZXI6OlN1cHBvcnRzVHlwZSBzdXBwb3J0c1R5cGVBbmRDb2RlY3MoY29uc3QgTWVkaWFF
bmdpbmVTdXBwb3J0UGFyYW1ldGVycyYpIGNvbnN0ID0gMDsKKworICAgIHZpcnR1YWwgSGFzaFNl
dDxSZWZQdHI8U2VjdXJpdHlPcmlnaW4+PiBvcmlnaW5zSW5NZWRpYUNhY2hlKGNvbnN0IFN0cmlu
ZyYpIGNvbnN0IHsgcmV0dXJuIHsgfTsgfQorICAgIHZpcnR1YWwgdm9pZCBjbGVhck1lZGlhQ2Fj
aGUoY29uc3QgU3RyaW5nJiwgV2FsbFRpbWUpIGNvbnN0IHsgfQorICAgIHZpcnR1YWwgdm9pZCBj
bGVhck1lZGlhQ2FjaGVGb3JPcmlnaW5zKGNvbnN0IFN0cmluZyYsIGNvbnN0IEhhc2hTZXQ8UmVm
UHRyPFNlY3VyaXR5T3JpZ2luPj4mKSBjb25zdCB7IH0KKyAgICB2aXJ0dWFsIGJvb2wgc3VwcG9y
dHNLZXlTeXN0ZW0oY29uc3QgU3RyaW5nJiAvKiBrZXlTeXN0ZW0gKi8sIGNvbnN0IFN0cmluZyYg
LyogbWltZVR5cGUgKi8pIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9Cit9OwogCi10eXBlZGVmIHZv
aWQgKCpNZWRpYUVuZ2luZVJlZ2lzdHJhcikoQ3JlYXRlTWVkaWFFbmdpbmVQbGF5ZXImJiwgTWVk
aWFFbmdpbmVTdXBwb3J0ZWRUeXBlcywgTWVkaWFFbmdpbmVTdXBwb3J0c1R5cGUsCi0gICAgTWVk
aWFFbmdpbmVPcmlnaW5zSW5NZWRpYUNhY2hlLCBNZWRpYUVuZ2luZUNsZWFyTWVkaWFDYWNoZSwg
TWVkaWFFbmdpbmVDbGVhck1lZGlhQ2FjaGVGb3JPcmlnaW5zLCBNZWRpYUVuZ2luZVN1cHBvcnRz
S2V5U3lzdGVtKTsKK3R5cGVkZWYgdm9pZCAoKk1lZGlhRW5naW5lUmVnaXN0cmFyKShzdGQ6OnVu
aXF1ZV9wdHI8TWVkaWFQbGF5ZXJGYWN0b3J5Pik7CiB0eXBlZGVmIHZvaWQgKCpNZWRpYUVuZ2lu
ZVJlZ2lzdGVyKShNZWRpYUVuZ2luZVJlZ2lzdHJhcik7CiAKIGNsYXNzIE1lZGlhUGxheWVyRmFj
dG9yeVN1cHBvcnQgewpAQCAtNjQ2LDYgKzcwMiwxMyBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9F
WFBPUlQgc3RhdGljIHZvaWQgY2FsbFJlZ2lzdGVyTWVkaWFFbmdpbmUoTWVkaWFFbmdpbmVSZWdp
c3Rlcik7CiB9OwogCitjbGFzcyBSZW1vdGVNZWRpYVBsYXllclN1cHBvcnQgeworcHVibGljOgor
ICAgIHVzaW5nIFJlZ2lzdGVyUmVtb3RlUGxheWVyQ2FsbGJhY2sgPSBzdGQ6OmZ1bmN0aW9uPHZv
aWQoTWVkaWFFbmdpbmVSZWdpc3RyYXIsIE1lZGlhUGxheWVyRW51bXM6Ok1lZGlhRW5naW5lSWRl
bnRpZmllcik+OworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyB2b2lkIHNldFJlZ2lzdGVyUmVt
b3RlUGxheWVyQ2FsbGJhY2soUmVnaXN0ZXJSZW1vdGVQbGF5ZXJDYWxsYmFjayYmKTsKK307CisK
KwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gRU5BQkxFKFZJREVPKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXJFbnVt
cy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXJFbnVtcy5o
CmluZGV4IDAxOTVjNjk3NmQ0ZWM0YTQ5ODNjNDJhNDc2ZTFkNDVkZDdhNjE5OGIuLjkzMGY1MmM2
OTU3Y2JmNDhlMTFlYTdhYWNlNWM5M2JiNzUyMTQ0ODMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyRW51bXMuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllckVudW1zLmgKQEAgLTUwLDYgKzUwLDE3
IEBAIHB1YmxpYzoKICAgICAgICAgTWFrZVJlc291cmNlc1B1cmdlYWJsZSwKICAgICAgICAgUHVy
Z2VSZXNvdXJjZXMsCiAgICAgfTsKKworICAgIGVudW0gY2xhc3MgTWVkaWFFbmdpbmVJZGVudGlm
aWVyIDogdWludDhfdCB7CisgICAgICAgIEFWRm91bmRhdGlvbiwKKyAgICAgICAgQVZGb3VuZGF0
aW9uTVNFLAorICAgICAgICBBVkZvdW5kYXRpb25NZWRpYVN0cmVhbSwKKyAgICAgICAgR1N0cmVh
bWVyLAorICAgICAgICBHU3RyZWFtZXJNU0UsCisgICAgICAgIEhvbGVQdW5jaCwKKyAgICAgICAg
TWVkaWFGb3VuZGF0aW9uLAorICAgICAgICBNb2NrTVNFLAorICAgIH07CiB9OwogCiBXVEY6OlN0
cmluZyBjb252ZXJ0RW51bWVyYXRpb25Ub1N0cmluZyhNZWRpYVBsYXllckVudW1zOjpSZWFkeVN0
YXRlKTsKQEAgLTkwLDQgKzEwMSwxOCBAQCBzdHJ1Y3QgTG9nQXJndW1lbnQ8V2ViQ29yZTo6TWVk
aWFQbGF5ZXJFbnVtczo6QnVmZmVyaW5nUG9saWN5PiB7CiAgICAgfQogfTsKIAordGVtcGxhdGU8
PiBzdHJ1Y3QgRW51bVRyYWl0czxXZWJDb3JlOjpNZWRpYVBsYXllckVudW1zOjpNZWRpYUVuZ2lu
ZUlkZW50aWZpZXI+IHsKKyAgICB1c2luZyB2YWx1ZXMgPSBFbnVtVmFsdWVzPAorICAgICAgICBX
ZWJDb3JlOjpNZWRpYVBsYXllckVudW1zOjpNZWRpYUVuZ2luZUlkZW50aWZpZXIsCisgICAgICAg
IFdlYkNvcmU6Ok1lZGlhUGxheWVyRW51bXM6Ok1lZGlhRW5naW5lSWRlbnRpZmllcjo6QVZGb3Vu
ZGF0aW9uLAorICAgICAgICBXZWJDb3JlOjpNZWRpYVBsYXllckVudW1zOjpNZWRpYUVuZ2luZUlk
ZW50aWZpZXI6OkFWRm91bmRhdGlvbk1TRSwKKyAgICAgICAgV2ViQ29yZTo6TWVkaWFQbGF5ZXJF
bnVtczo6TWVkaWFFbmdpbmVJZGVudGlmaWVyOjpBVkZvdW5kYXRpb25NZWRpYVN0cmVhbSwKKyAg
ICAgICAgV2ViQ29yZTo6TWVkaWFQbGF5ZXJFbnVtczo6TWVkaWFFbmdpbmVJZGVudGlmaWVyOjpH
U3RyZWFtZXIsCisgICAgICAgIFdlYkNvcmU6Ok1lZGlhUGxheWVyRW51bXM6Ok1lZGlhRW5naW5l
SWRlbnRpZmllcjo6R1N0cmVhbWVyTVNFLAorICAgICAgICBXZWJDb3JlOjpNZWRpYVBsYXllckVu
dW1zOjpNZWRpYUVuZ2luZUlkZW50aWZpZXI6OkhvbGVQdW5jaCwKKyAgICAgICAgV2ViQ29yZTo6
TWVkaWFQbGF5ZXJFbnVtczo6TWVkaWFFbmdpbmVJZGVudGlmaWVyOjpNZWRpYUZvdW5kYXRpb24s
CisgICAgICAgIFdlYkNvcmU6Ok1lZGlhUGxheWVyRW51bXM6Ok1lZGlhRW5naW5lSWRlbnRpZmll
cjo6TW9ja01TRQorICAgID47Cit9OworCiB9OyAvLyBuYW1lc3BhY2UgV1RGCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9QbGF0Zm9ybVRpbWVSYW5nZXMuaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1BsYXRmb3JtVGltZVJhbmdlcy5oCmlu
ZGV4IDE4ODg2OTVjNzZlOTI2ZmIzZWQ0YjNhNTEwYzliYjAzM2I0MzczMzAuLjUzNmY2YWEyYTVh
Nzk2NjA0ZDU3MzE5ZTYxNmFiZTU2ODNmYTFjYjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL1BsYXRmb3JtVGltZVJhbmdlcy5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL1BsYXRmb3JtVGltZVJhbmdlcy5oCkBAIC0zNiw3ICszNiw3
IEBAIGNsYXNzIFByaW50U3RyZWFtOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIFBs
YXRmb3JtVGltZVJhbmdlcyB7CitjbGFzcyBXRUJDT1JFX0VYUE9SVCBQbGF0Zm9ybVRpbWVSYW5n
ZXMgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIGV4cGxpY2l0
IFBsYXRmb3JtVGltZVJhbmdlcygpIHsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL2NmL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRh
dGlvbkNGLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlv
bi9jZi9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25DRi5jcHAKaW5kZXggMGNlOGNlYjQ4
YmQ3ODhjZWIxOWFhOWRkODk3ZjkyOTlkZWFiZGQwZC4uOTI1MzQwYzZkOGFiOTIwNDljMzQ0ZmIw
NGU2ZDYxOGQ3YWFmYjcyNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvYXZmb3VuZGF0aW9uL2NmL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbkNGLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vY2Yv
TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uQ0YuY3BwCkBAIC0zNDIsMTEgKzM0MiwzNyBA
QCBzdGF0aWMgZGlzcGF0Y2hfcXVldWVfdCBnbG9iYWxMb2FkZXJEZWxlZ2F0ZVF1ZXVlKCkKIH0K
ICNlbmRpZgogCitjbGFzcyBNZWRpYVBsYXllckZhY3RvcnlBVkZvdW5kYXRpb25DRiA6IHB1Ymxp
YyBNZWRpYVBsYXllckZhY3RvcnkgeworcHVibGljOgorICAgIE1lZGlhUGxheWVyRW51bXM6Ok1l
ZGlhRW5naW5lSWRlbnRpZmllciBpZGVudGlmaWVyKCkgY29uc3QgZmluYWwgeyByZXR1cm4gTWVk
aWFQbGF5ZXJFbmdpbmVJZGVudGlmaWVyczo6YXZGb3VuZGF0aW9uTWVkaWFTdHJlYW1JZGVudGlm
aWVyKCk7IH07CisKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8TWVkaWFQbGF5ZXJQcml2YXRlSW50ZXJm
YWNlPiBjcmVhdGVNZWRpYUVuZ2luZVBsYXllcihNZWRpYVBsYXllciogcGxheWVyKSBjb25zdCBm
aW5hbAorICAgIHsKKyAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8TWVkaWFQbGF5ZXJQcml2YXRl
QVZGb3VuZGF0aW9uQ0Y+KHBsYXllcik7CisgICAgfQorCisgICAgdm9pZCBnZXRTdXBwb3J0ZWRU
eXBlcyhIYXNoU2V0PFN0cmluZywgQVNDSUlDYXNlSW5zZW5zaXRpdmVIYXNoPiYgdHlwZXMpIGNv
bnN0IGZpbmFsCisgICAgeworICAgICAgICByZXR1cm4gTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3Vu
ZGF0aW9uQ0Y6OmdldFN1cHBvcnRlZFR5cGVzKHR5cGVzKTsKKyAgICB9CisKKyAgICBNZWRpYVBs
YXllcjo6U3VwcG9ydHNUeXBlIHN1cHBvcnRzVHlwZUFuZENvZGVjcyhjb25zdCBNZWRpYUVuZ2lu
ZVN1cHBvcnRQYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzKSBjb25zdCBmaW5hbAorICAgIHsKKyAgICAg
ICAgcmV0dXJuIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbkNGOjpzdXBwb3J0c1R5cGUo
cGFyYW1ldGVycyk7CisgICAgfQorCisgICAgYm9vbCBzdXBwb3J0c0tleVN5c3RlbShjb25zdCBT
dHJpbmcmIGtleVN5c3RlbSwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSkgY29uc3QgZmluYWwKKyAg
ICB7CisgICAgICAgIHJldHVybiBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25DRjo6c3Vw
cG9ydHNLZXlTeXN0ZW0oa2V5U3lzdGVtLCBtaW1lVHlwZSk7CisgICAgfQorfTsKKwogdm9pZCBN
ZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25DRjo6cmVnaXN0ZXJNZWRpYUVuZ2luZShNZWRp
YUVuZ2luZVJlZ2lzdHJhciByZWdpc3RyYXIpCiB7Ci0gICAgaWYgKGlzQXZhaWxhYmxlKCkpCi0g
ICAgICAgIHJlZ2lzdHJhcihbXShNZWRpYVBsYXllciogcGxheWVyKSB7IHJldHVybiBtYWtlVW5p
cXVlPE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbkNGPihwbGF5ZXIpOyB9LAotICAgICAg
ICAgICAgZ2V0U3VwcG9ydGVkVHlwZXMsIHN1cHBvcnRzVHlwZSwgMCwgMCwgMCwgc3VwcG9ydHNL
ZXlTeXN0ZW0pOworICAgIGlmICghaXNBdmFpbGFibGUoKSkKKyAgICAgICAgcmV0dXJuOworCisg
ICAgcmVnaXN0cmFyKG1ha2VVbmlxdWU8TWVkaWFQbGF5ZXJGYWN0b3J5QVZGb3VuZGF0aW9uQ0Y+
KCkpOwogfQogCiBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25DRjo6TWVkaWFQbGF5ZXJQ
cml2YXRlQVZGb3VuZGF0aW9uQ0YoTWVkaWFQbGF5ZXIqIHBsYXllcikKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxh
eWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9i
akMuaAppbmRleCBlOThkOGVhOTAwMDQ3MThjZmM5MDQ0YTA5ODM2YWYwYjkwZTBmZTAxLi5lMGJl
ZTI0M2I5NGJmZTY0NDRjYmY1ZDZkNTllZjg2ODA1NzM4OTNiIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclBy
aXZhdGVBVkZvdW5kYXRpb25PYmpDLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2Jq
Qy5oCkBAIC0xNjIsNiArMTYyLDcgQEAgcHVibGljOgogCiBwcml2YXRlOgogICAgIC8vIGVuZ2lu
ZSBzdXBwb3J0CisgICAgZnJpZW5kIGNsYXNzIE1lZGlhUGxheWVyRmFjdG9yeUFWRm91bmRhdGlv
bk9iakM7CiAgICAgc3RhdGljIHZvaWQgZ2V0U3VwcG9ydGVkVHlwZXMoSGFzaFNldDxTdHJpbmcs
IEFTQ0lJQ2FzZUluc2Vuc2l0aXZlSGFzaD4mIHR5cGVzKTsKICAgICBzdGF0aWMgTWVkaWFQbGF5
ZXI6OlN1cHBvcnRzVHlwZSBzdXBwb3J0c1R5cGUoY29uc3QgTWVkaWFFbmdpbmVTdXBwb3J0UGFy
YW1ldGVycyYpOwogICAgIHN0YXRpYyBib29sIHN1cHBvcnRzS2V5U3lzdGVtKGNvbnN0IFN0cmlu
ZyYga2V5U3lzdGVtLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVy
UHJpdmF0ZUFWRm91bmRhdGlvbk9iakMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpD
Lm1tCmluZGV4IDU0MTAzOTEzNDE5ZWU1ZDQ4ZTllYzFhY2I2ODkyZjk4ZGRlOWYzYmQuLjNiYzI5
NDRhNWQ0ZTU2OGFmNDMyOWQ1Y2YwZmI4MjllOWUwYTQ2ZGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJp
dmF0ZUFWRm91bmRhdGlvbk9iakMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2Jq
Qy5tbQpAQCAtMjczLDE0ICsyNzMsNTQgQEAgc3RhdGljIGRpc3BhdGNoX3F1ZXVlX3QgZ2xvYmFs
UHVsbERlbGVnYXRlUXVldWUoKQogfQogI2VuZGlmCiAKK2NsYXNzIE1lZGlhUGxheWVyRmFjdG9y
eUFWRm91bmRhdGlvbk9iakMgOiBwdWJsaWMgTWVkaWFQbGF5ZXJGYWN0b3J5IHsKK3B1YmxpYzoK
KyAgICBNZWRpYVBsYXllckVudW1zOjpNZWRpYUVuZ2luZUlkZW50aWZpZXIgaWRlbnRpZmllcigp
IGNvbnN0IGZpbmFsIHsgcmV0dXJuIE1lZGlhUGxheWVyRW51bXM6Ok1lZGlhRW5naW5lSWRlbnRp
Zmllcjo6QVZGb3VuZGF0aW9uOyB9OworCisgICAgc3RkOjp1bmlxdWVfcHRyPE1lZGlhUGxheWVy
UHJpdmF0ZUludGVyZmFjZT4gY3JlYXRlTWVkaWFFbmdpbmVQbGF5ZXIoTWVkaWFQbGF5ZXIqIHBs
YXllcikgY29uc3QgZmluYWwKKyAgICB7CisgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPE1lZGlh
UGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM+KHBsYXllcik7CisgICAgfQorCisgICAgdm9p
ZCBnZXRTdXBwb3J0ZWRUeXBlcyhIYXNoU2V0PFN0cmluZywgQVNDSUlDYXNlSW5zZW5zaXRpdmVI
YXNoPiYgdHlwZXMpIGNvbnN0IGZpbmFsCisgICAgeworICAgICAgICByZXR1cm4gTWVkaWFQbGF5
ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6Z2V0U3VwcG9ydGVkVHlwZXModHlwZXMpOworICAg
IH0KKworICAgIE1lZGlhUGxheWVyOjpTdXBwb3J0c1R5cGUgc3VwcG9ydHNUeXBlQW5kQ29kZWNz
KGNvbnN0IE1lZGlhRW5naW5lU3VwcG9ydFBhcmFtZXRlcnMmIHBhcmFtZXRlcnMpIGNvbnN0IGZp
bmFsCisgICAgeworICAgICAgICByZXR1cm4gTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9u
T2JqQzo6c3VwcG9ydHNUeXBlKHBhcmFtZXRlcnMpOworICAgIH0KKworICAgIEhhc2hTZXQ8UmVm
UHRyPFNlY3VyaXR5T3JpZ2luPj4gb3JpZ2luc0luTWVkaWFDYWNoZShjb25zdCBTdHJpbmcmIHBh
dGgpIGNvbnN0IGZpbmFsCisgICAgeworICAgICAgICByZXR1cm4gTWVkaWFQbGF5ZXJQcml2YXRl
QVZGb3VuZGF0aW9uT2JqQzo6b3JpZ2luc0luTWVkaWFDYWNoZShwYXRoKTsKKyAgICB9CisKKyAg
ICB2b2lkIGNsZWFyTWVkaWFDYWNoZShjb25zdCBTdHJpbmcmIHBhdGgsIFdhbGxUaW1lIG1vZGlm
aWVkU2luY2UpIGNvbnN0IGZpbmFsCisgICAgeworICAgICAgICByZXR1cm4gTWVkaWFQbGF5ZXJQ
cml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6Y2xlYXJNZWRpYUNhY2hlKHBhdGgsIG1vZGlmaWVkU2lu
Y2UpOworICAgIH0KKworICAgIHZvaWQgY2xlYXJNZWRpYUNhY2hlRm9yT3JpZ2lucyhjb25zdCBT
dHJpbmcmIHBhdGgsIGNvbnN0IEhhc2hTZXQ8UmVmUHRyPFNlY3VyaXR5T3JpZ2luPj4mIG9yaWdp
bnMpIGNvbnN0IGZpbmFsCisgICAgeworICAgICAgICByZXR1cm4gTWVkaWFQbGF5ZXJQcml2YXRl
QVZGb3VuZGF0aW9uT2JqQzo6Y2xlYXJNZWRpYUNhY2hlRm9yT3JpZ2lucyhwYXRoLCBvcmlnaW5z
KTsKKyAgICB9CisKKyAgICBib29sIHN1cHBvcnRzS2V5U3lzdGVtKGNvbnN0IFN0cmluZyYga2V5
U3lzdGVtLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlKSBjb25zdCBmaW5hbAorICAgIHsKKyAgICAg
ICAgcmV0dXJuIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OnN1cHBvcnRzS2V5
U3lzdGVtKGtleVN5c3RlbSwgbWltZVR5cGUpOworICAgIH0KK307CisKIHZvaWQgTWVkaWFQbGF5
ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6cmVnaXN0ZXJNZWRpYUVuZ2luZShNZWRpYUVuZ2lu
ZVJlZ2lzdHJhciByZWdpc3RyYXIpCiB7CiAgICAgaWYgKCFpc0F2YWlsYWJsZSgpKQogICAgICAg
ICByZXR1cm47CiAKLSAgICByZWdpc3RyYXIoW10oTWVkaWFQbGF5ZXIqIHBsYXllcikgeyByZXR1
cm4gbWFrZVVuaXF1ZTxNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDPihwbGF5ZXIp
OyB9LAotICAgICAgICAgICAgZ2V0U3VwcG9ydGVkVHlwZXMsIHN1cHBvcnRzVHlwZSwgb3JpZ2lu
c0luTWVkaWFDYWNoZSwgY2xlYXJNZWRpYUNhY2hlLCBjbGVhck1lZGlhQ2FjaGVGb3JPcmlnaW5z
LCBzdXBwb3J0c0tleVN5c3RlbSk7CiAgICAgQVNTRVJUKEFWQXNzZXRNSU1FVHlwZUNhY2hlOjpz
aW5nbGV0b24oKS5pc0F2YWlsYWJsZSgpKTsKKworICAgIHJlZ2lzdHJhcihtYWtlVW5pcXVlPE1l
ZGlhUGxheWVyRmFjdG9yeUFWRm91bmRhdGlvbk9iakM+KCkpOwogfQogCiBzdGF0aWMgQVZBc3Nl
dENhY2hlICphc3NldENhY2hlRm9yUGF0aChjb25zdCBTdHJpbmcmIHBhdGgpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRp
YVBsYXllclByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVNZWRpYVNv
dXJjZUFWRk9iakMubW0KaW5kZXggNzE1MjhjOTljMGNjNjA3ZDM4ZjJlZjNlMDcyODhjZjZkMzM1
MWZkNi4uMDBlZjk1NWRlOWE4ZTZhNjgyNzljY2U3NzU1YTNjZWQ2M2QwZWE0YyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVk
aWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDLm1tCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZU1l
ZGlhU291cmNlQVZGT2JqQy5tbQpAQCAtMTk2LDE0ICsxOTYsMzQgQEAgTWVkaWFQbGF5ZXJQcml2
YXRlTWVkaWFTb3VyY2VBVkZPYmpDOjp+TWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZP
YmpDKCkKICNwcmFnbWEgbWFyayAtCiAjcHJhZ21hIG1hcmsgTWVkaWFQbGF5ZXIgRmFjdG9yeSBN
ZXRob2RzCiAKK2NsYXNzIE1lZGlhUGxheWVyRmFjdG9yeU1lZGlhU291cmNlQVZGT2JqQyA6IHB1
YmxpYyBNZWRpYVBsYXllckZhY3RvcnkgeworcHVibGljOgorICAgIE1lZGlhUGxheWVyRW51bXM6
Ok1lZGlhRW5naW5lSWRlbnRpZmllciBpZGVudGlmaWVyKCkgY29uc3QgZmluYWwgeyByZXR1cm4g
TWVkaWFQbGF5ZXJFbnVtczo6TWVkaWFFbmdpbmVJZGVudGlmaWVyOjpBVkZvdW5kYXRpb25NU0U7
IH07CisKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8TWVkaWFQbGF5ZXJQcml2YXRlSW50ZXJmYWNlPiBj
cmVhdGVNZWRpYUVuZ2luZVBsYXllcihNZWRpYVBsYXllciogcGxheWVyKSBjb25zdCBmaW5hbAor
ICAgIHsKKyAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8TWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFT
b3VyY2VBVkZPYmpDPihwbGF5ZXIpOyAgICAgICAgCisgICAgfQorCisgICAgdm9pZCBnZXRTdXBw
b3J0ZWRUeXBlcyhIYXNoU2V0PFN0cmluZywgQVNDSUlDYXNlSW5zZW5zaXRpdmVIYXNoPiYgdHlw
ZXMpIGNvbnN0IGZpbmFsCisgICAgeworICAgICAgICByZXR1cm4gTWVkaWFQbGF5ZXJQcml2YXRl
TWVkaWFTb3VyY2VBVkZPYmpDOjpnZXRTdXBwb3J0ZWRUeXBlcyh0eXBlcyk7CisgICAgfQorCisg
ICAgTWVkaWFQbGF5ZXI6OlN1cHBvcnRzVHlwZSBzdXBwb3J0c1R5cGVBbmRDb2RlY3MoY29uc3Qg
TWVkaWFFbmdpbmVTdXBwb3J0UGFyYW1ldGVycyYgcGFyYW1ldGVycykgY29uc3QgZmluYWwKKyAg
ICB7CisgICAgICAgIHJldHVybiBNZWRpYVBsYXllclByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakM6
OnN1cHBvcnRzVHlwZShwYXJhbWV0ZXJzKTsKKyAgICB9Cit9OworCiB2b2lkIE1lZGlhUGxheWVy
UHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQzo6cmVnaXN0ZXJNZWRpYUVuZ2luZShNZWRpYUVuZ2lu
ZVJlZ2lzdHJhciByZWdpc3RyYXIpCiB7CiAgICAgaWYgKCFpc0F2YWlsYWJsZSgpKQogICAgICAg
ICByZXR1cm47CiAKLSAgICByZWdpc3RyYXIoW10oTWVkaWFQbGF5ZXIqIHBsYXllcikgeyByZXR1
cm4gbWFrZVVuaXF1ZTxNZWRpYVBsYXllclByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakM+KHBsYXll
cik7IH0sCi0gICAgICAgIGdldFN1cHBvcnRlZFR5cGVzLCBzdXBwb3J0c1R5cGUsIDAsIDAsIDAs
IDApOwogICAgIEFTU0VSVChBVkFzc2V0TUlNRVR5cGVDYWNoZTo6c2luZ2xldG9uKCkuaXNBdmFp
bGFibGUoKSk7CisKKyAgICByZWdpc3RyYXIobWFrZVVuaXF1ZTxNZWRpYVBsYXllckZhY3RvcnlN
ZWRpYVNvdXJjZUFWRk9iakM+KCkpOwogfQogCiBib29sIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlh
U291cmNlQVZGT2JqQzo6aXNBdmFpbGFibGUoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVk
aWFTdHJlYW1BVkZPYmpDLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZm
b3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDLm1tCmlu
ZGV4IDYzMTQ4MTRiYzg4ZmM5Y2Y3ZWJiY2U5NGZjOGU3MTkxZGYzZjQ1NGYuLjhiNjkyZjEyYjVl
Mjc3MzgyNjk4ZjRhNTNhODliNGY1MTM5ZGY3YTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZU1l
ZGlhU3RyZWFtQVZGT2JqQy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakMu
bW0KQEAgLTIyMCwxMSArMjIwLDMyIEBAIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZG
T2JqQzo6fk1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQygpCiAjcHJhZ21hIG1h
cmsgLQogI3ByYWdtYSBtYXJrIE1lZGlhUGxheWVyIEZhY3RvcnkgTWV0aG9kcwogCitjbGFzcyBN
ZWRpYVBsYXllckZhY3RvcnlNZWRpYVN0cmVhbUFWRk9iakMgOiBwdWJsaWMgTWVkaWFQbGF5ZXJG
YWN0b3J5IHsKK3B1YmxpYzoKKyAgICBNZWRpYVBsYXllckVudW1zOjpNZWRpYUVuZ2luZUlkZW50
aWZpZXIgaWRlbnRpZmllcigpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIE1lZGlhUGxheWVyRW51bXM6
Ok1lZGlhRW5naW5lSWRlbnRpZmllcjo6QVZGb3VuZGF0aW9uTWVkaWFTdHJlYW07IH07CisKKyAg
ICBzdGQ6OnVuaXF1ZV9wdHI8TWVkaWFQbGF5ZXJQcml2YXRlSW50ZXJmYWNlPiBjcmVhdGVNZWRp
YUVuZ2luZVBsYXllcihNZWRpYVBsYXllciogcGxheWVyKSBjb25zdCBmaW5hbAorICAgIHsKKyAg
ICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8TWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZP
YmpDPihwbGF5ZXIpOworICAgIH0KKworICAgIHZvaWQgZ2V0U3VwcG9ydGVkVHlwZXMoSGFzaFNl
dDxTdHJpbmcsIEFTQ0lJQ2FzZUluc2Vuc2l0aXZlSGFzaD4mIHR5cGVzKSBjb25zdCBmaW5hbAor
ICAgIHsKKyAgICAgICAgcmV0dXJuIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2Jq
Qzo6Z2V0U3VwcG9ydGVkVHlwZXModHlwZXMpOworICAgIH0KKworICAgIE1lZGlhUGxheWVyOjpT
dXBwb3J0c1R5cGUgc3VwcG9ydHNUeXBlQW5kQ29kZWNzKGNvbnN0IE1lZGlhRW5naW5lU3VwcG9y
dFBhcmFtZXRlcnMmIHBhcmFtZXRlcnMpIGNvbnN0IGZpbmFsCisgICAgeworICAgICAgICByZXR1
cm4gTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDOjpzdXBwb3J0c1R5cGUocGFy
YW1ldGVycyk7CisgICAgfQorfTsKKwogdm9pZCBNZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVh
bUFWRk9iakM6OnJlZ2lzdGVyTWVkaWFFbmdpbmUoTWVkaWFFbmdpbmVSZWdpc3RyYXIgcmVnaXN0
cmFyKQogewotICAgIGlmIChpc0F2YWlsYWJsZSgpKQotICAgICAgICByZWdpc3RyYXIoW10oTWVk
aWFQbGF5ZXIqIHBsYXllcikgeyByZXR1cm4gbWFrZVVuaXF1ZTxNZWRpYVBsYXllclByaXZhdGVN
ZWRpYVN0cmVhbUFWRk9iakM+KHBsYXllcik7IH0sIGdldFN1cHBvcnRlZFR5cGVzLAotICAgICAg
ICAgICAgc3VwcG9ydHNUeXBlLCAwLCAwLCAwLCAwKTsKKyAgICBpZiAoIWlzQXZhaWxhYmxlKCkp
CisgICAgICAgIHJldHVybjsKKworICAgIHJlZ2lzdHJhcihtYWtlVW5pcXVlPE1lZGlhUGxheWVy
RmFjdG9yeU1lZGlhU3RyZWFtQVZGT2JqQz4oKSk7CiB9CiAKIGJvb2wgTWVkaWFQbGF5ZXJQcml2
YXRlTWVkaWFTdHJlYW1BVkZPYmpDOjppc0F2YWlsYWJsZSgpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0
cmVhbWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9N
ZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIuY3BwCmluZGV4IDAxMjdjNTdkMWFiODUxZjNjMjQ3
NjhlMGE1NTcxYThmZjNmYWU2ZWUuLjYxNTM5ZGZjOWQ5OTAwMDAwY2Q4NjI1MDk1ZmU2ZGQ3MGNh
YmY5YmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJl
YW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIu
Y3BwCkBAIC00NjQsMTQgKzQ2NCwzNyBAQCBib29sIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1l
cjo6aXNBdmFpbGFibGUoKQogICAgIHJldHVybiBmYWN0b3J5OwogfQogCitjbGFzcyBNZWRpYVBs
YXllckZhY3RvcnlHU3RyZWFtZXIgOiBwdWJsaWMgTWVkaWFQbGF5ZXJGYWN0b3J5IHsKK3B1Ymxp
YzoKKyAgICBNZWRpYVBsYXllckVudW1zOjpNZWRpYUVuZ2luZUlkZW50aWZpZXIgaWRlbnRpZmll
cigpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIE1lZGlhUGxheWVyRW51bXM6Ok1lZGlhRW5naW5lSWRl
bnRpZmllcjo6R1N0cmVhbWVyOyB9OworCisgICAgc3RkOjp1bmlxdWVfcHRyPE1lZGlhUGxheWVy
UHJpdmF0ZUludGVyZmFjZT4gY3JlYXRlTWVkaWFFbmdpbmVQbGF5ZXIoTWVkaWFQbGF5ZXIqIHBs
YXllcikgY29uc3QgZmluYWwKKyAgICB7CisgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPE1lZGlh
UGxheWVyUHJpdmF0ZUdTdHJlYW1lcj4ocGxheWVyKTsKKyAgICB9CisKKyAgICB2b2lkIGdldFN1
cHBvcnRlZFR5cGVzKEhhc2hTZXQ8U3RyaW5nLCBBU0NJSUNhc2VJbnNlbnNpdGl2ZUhhc2g+JiB0
eXBlcykgY29uc3QgZmluYWwKKyAgICB7CisgICAgICAgIHJldHVybiBNZWRpYVBsYXllclByaXZh
dGVHU3RyZWFtZXI6OmdldFN1cHBvcnRlZFR5cGVzKHR5cGVzKTsKKyAgICB9CisKKyAgICBNZWRp
YVBsYXllcjo6U3VwcG9ydHNUeXBlIHN1cHBvcnRzVHlwZUFuZENvZGVjcyhjb25zdCBNZWRpYUVu
Z2luZVN1cHBvcnRQYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzKSBjb25zdCBmaW5hbAorICAgIHsKKyAg
ICAgICAgcmV0dXJuIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6c3VwcG9ydHNUeXBlKHBh
cmFtZXRlcnMpOworICAgIH0KKworICAgIGJvb2wgc3VwcG9ydHNLZXlTeXN0ZW0oY29uc3QgU3Ry
aW5nJiBrZXlTeXN0ZW0sIGNvbnN0IFN0cmluZyYgbWltZVR5cGUpIGNvbnN0IGZpbmFsCisgICAg
eworICAgICAgICByZXR1cm4gTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpzdXBwb3J0c0tl
eVN5c3RlbShrZXlTeXN0ZW0sIG1pbWVUeXBlKTsKKyAgICB9Cit9OworCiB2b2lkIE1lZGlhUGxh
eWVyUHJpdmF0ZUdTdHJlYW1lcjo6cmVnaXN0ZXJNZWRpYUVuZ2luZShNZWRpYUVuZ2luZVJlZ2lz
dHJhciByZWdpc3RyYXIpCiB7CiAgICAgaW5pdGlhbGl6ZURlYnVnQ2F0ZWdvcnkoKTsKIAotICAg
IGlmIChpc0F2YWlsYWJsZSgpKSB7Ci0gICAgICAgIHJlZ2lzdHJhcihbXShNZWRpYVBsYXllciog
cGxheWVyKSB7IHJldHVybiBtYWtlVW5pcXVlPE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcj4o
cGxheWVyKTsgfSwKLSAgICAgICAgICAgIGdldFN1cHBvcnRlZFR5cGVzLCBzdXBwb3J0c1R5cGUs
IG51bGxwdHIsIG51bGxwdHIsIG51bGxwdHIsIHN1cHBvcnRzS2V5U3lzdGVtKTsKLSAgICB9Cisg
ICAgaWYgKGlzQXZhaWxhYmxlKCkpCisgICAgICAgIHJlZ2lzdHJhcihtYWtlVW5pcXVlPE1lZGlh
UGxheWVyRmFjdG9yeUdTdHJlYW1lcj4oKSk7CiB9CiAKIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRl
R1N0cmVhbWVyOjpsb2FkRnVsbChjb25zdCBTdHJpbmcmIHVybFN0cmluZywgY29uc3QgU3RyaW5n
JiBwaXBlbGluZU5hbWUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVh
bWVyLmgKaW5kZXggMTUyYzA5MzVkYjcyOGI2MWNhYmYwM2FmMWJkODkxNTY2MDQxYjExMy4uNDJm
ZTJlYTk3MDE3Y2QwMjNmNTZhZTJjM2Y4ODAwODMwNjY0NzJjZSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdT
dHJlYW1lci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1l
ci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIuaApAQCAtMzk0LDYgKzM5NCw3IEBAIHByaXZh
dGU6CiAgICAgR3N0RWxlbWVudCogY3JlYXRlQXVkaW9TaW5rKCk7CiAgICAgR3N0RWxlbWVudCog
YXVkaW9TaW5rKCkgY29uc3Q7CiAKKyAgICBmcmllbmQgY2xhc3MgTWVkaWFQbGF5ZXJGYWN0b3J5
R1N0cmVhbWVyOwogICAgIHN0YXRpYyB2b2lkIGdldFN1cHBvcnRlZFR5cGVzKEhhc2hTZXQ8U3Ry
aW5nLCBBU0NJSUNhc2VJbnNlbnNpdGl2ZUhhc2g+Jik7CiAgICAgc3RhdGljIE1lZGlhUGxheWVy
OjpTdXBwb3J0c1R5cGUgc3VwcG9ydHNUeXBlKGNvbnN0IE1lZGlhRW5naW5lU3VwcG9ydFBhcmFt
ZXRlcnMmKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Z3N0cmVhbWVyL21zZS9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJNU0UuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL21zZS9NZWRpYVBsYXllclByaXZh
dGVHU3RyZWFtZXJNU0UuY3BwCmluZGV4IGRjMjQ1YjQ3ZGUzZGU3MmZhYzIzNjcyZTVmNmVmZDRi
Mzc2MjliNGIuLmQyMDU3YTczMGQ0Y2E1MDE2ZTM4NzJjZjBmZWUyOTgzZmIwMzMwZmIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9tc2UvTWVk
aWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyTVNFLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvbXNlL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lck1T
RS5jcHAKQEAgLTcyLDE0ICs3MiwzNyBAQCBHU1RfREVCVUdfQ0FURUdPUlkod2Via2l0X21zZV9k
ZWJ1Zyk7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorY2xhc3MgTWVkaWFQbGF5ZXJGYWN0b3J5
R1N0cmVhbWVyTVNFIDogcHVibGljIE1lZGlhUGxheWVyRmFjdG9yeSB7CitwdWJsaWM6CisgICAg
TWVkaWFQbGF5ZXJFbnVtczo6TWVkaWFFbmdpbmVJZGVudGlmaWVyIGlkZW50aWZpZXIoKSBjb25z
dCBmaW5hbCB7IHJldHVybiBNZWRpYVBsYXllckVudW1zOjpNZWRpYUVuZ2luZUlkZW50aWZpZXI6
OkdTdHJlYW1lck1TRTsgfTsKKworICAgIHN0ZDo6dW5pcXVlX3B0cjxNZWRpYVBsYXllclByaXZh
dGVJbnRlcmZhY2U+IGNyZWF0ZU1lZGlhRW5naW5lUGxheWVyKE1lZGlhUGxheWVyKiBwbGF5ZXIp
IGNvbnN0IGZpbmFsCisgICAgeworICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxNZWRpYVBsYXll
clByaXZhdGVHU3RyZWFtZXJNU0U+KHBsYXllcik7CisgICAgfQorCisgICAgdm9pZCBnZXRTdXBw
b3J0ZWRUeXBlcyhIYXNoU2V0PFN0cmluZywgQVNDSUlDYXNlSW5zZW5zaXRpdmVIYXNoPiYgdHlw
ZXMpIGNvbnN0IGZpbmFsCisgICAgeworICAgICAgICByZXR1cm4gTWVkaWFQbGF5ZXJQcml2YXRl
R1N0cmVhbWVyTVNFOjpnZXRTdXBwb3J0ZWRUeXBlcyh0eXBlcyk7CisgICAgfQorCisgICAgTWVk
aWFQbGF5ZXI6OlN1cHBvcnRzVHlwZSBzdXBwb3J0c1R5cGVBbmRDb2RlY3MoY29uc3QgTWVkaWFF
bmdpbmVTdXBwb3J0UGFyYW1ldGVycyYgcGFyYW1ldGVycykgY29uc3QgZmluYWwKKyAgICB7Cisg
ICAgICAgIHJldHVybiBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJNU0U6OnN1cHBvcnRzVHlw
ZShwYXJhbWV0ZXJzKTsKKyAgICB9CisKKyAgICBib29sIHN1cHBvcnRzS2V5U3lzdGVtKGNvbnN0
IFN0cmluZyYga2V5U3lzdGVtLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlKSBjb25zdCBmaW5hbAor
ICAgIHsKKyAgICAgICAgcmV0dXJuIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lck1TRTo6c3Vw
cG9ydHNLZXlTeXN0ZW0oa2V5U3lzdGVtLCBtaW1lVHlwZSk7CisgICAgfQorfTsKKwogdm9pZCBN
ZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJNU0U6OnJlZ2lzdGVyTWVkaWFFbmdpbmUoTWVkaWFF
bmdpbmVSZWdpc3RyYXIgcmVnaXN0cmFyKQogewogICAgIGluaXRpYWxpemVHU3RyZWFtZXJBbmRS
ZWdpc3RlcldlYktpdEVsZW1lbnRzKCk7CiAgICAgR1NUX0RFQlVHX0NBVEVHT1JZX0lOSVQod2Vi
a2l0X21zZV9kZWJ1ZywgIndlYmtpdG1zZSIsIDAsICJXZWJLaXQgTVNFIG1lZGlhIHBsYXllciIp
OwotICAgIGlmIChpc0F2YWlsYWJsZSgpKSB7Ci0gICAgICAgIHJlZ2lzdHJhcihbXShNZWRpYVBs
YXllciogcGxheWVyKSB7IHJldHVybiBtYWtlVW5pcXVlPE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJl
YW1lck1TRT4ocGxheWVyKTsgfSwKLSAgICAgICAgICAgIGdldFN1cHBvcnRlZFR5cGVzLCBzdXBw
b3J0c1R5cGUsIG51bGxwdHIsIG51bGxwdHIsIG51bGxwdHIsIHN1cHBvcnRzS2V5U3lzdGVtKTsK
LSAgICB9CisgICAgaWYgKGlzQXZhaWxhYmxlKCkpCisgICAgICAgIHJlZ2lzdHJhcihtYWtlVW5p
cXVlPE1lZGlhUGxheWVyRmFjdG9yeUdTdHJlYW1lck1TRT4oKSk7CiB9CiAKIE1lZGlhUGxheWVy
UHJpdmF0ZUdTdHJlYW1lck1TRTo6TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyTVNFKE1lZGlh
UGxheWVyKiBwbGF5ZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9nc3RyZWFtZXIvbXNlL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lck1TRS5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL21zZS9NZWRpYVBsYXllclBy
aXZhdGVHU3RyZWFtZXJNU0UuaAppbmRleCA5YjMzMzA1ZjdmMTE2ZGFjOTFjNjQxYzQ4NDU5M2Jl
N2E4MzA3MzVmLi41ZDEwMTNmY2JlZjA1NzkzNDgwYmIzOGVkZWZlNGI2NGYwYWNmNDJjIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvbXNlL01l
ZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lck1TRS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2dzdHJlYW1lci9tc2UvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyTVNF
LmgKQEAgLTg1LDYgKzg1LDcgQEAgcHVibGljOgogICAgIHZvaWQgdW5ibG9ja0R1cmF0aW9uQ2hh
bmdlcygpOwogCiBwcml2YXRlOgorICAgIGZyaWVuZCBjbGFzcyBNZWRpYVBsYXllckZhY3RvcnlH
U3RyZWFtZXJNU0U7CiAgICAgc3RhdGljIHZvaWQgZ2V0U3VwcG9ydGVkVHlwZXMoSGFzaFNldDxT
dHJpbmcsIEFTQ0lJQ2FzZUluc2Vuc2l0aXZlSGFzaD4mKTsKICAgICBzdGF0aWMgTWVkaWFQbGF5
ZXI6OlN1cHBvcnRzVHlwZSBzdXBwb3J0c1R5cGUoY29uc3QgTWVkaWFFbmdpbmVTdXBwb3J0UGFy
YW1ldGVycyYpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9ob2xlcHVuY2gvTWVkaWFQbGF5ZXJQcml2YXRlSG9sZVB1bmNoLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2hvbGVwdW5jaC9NZWRpYVBsYXllclByaXZhdGVIb2xlUHVu
Y2guY3BwCmluZGV4IDBmMDhjMTlkYmRiZTY5YjA2ZjdiNzU1M2Y4YWI0OTdkNDdlMzc3YTkuLjk3
MmY1MWM1MDZjYmY4OTEwNjI1ZDZiM2VlYzVjNDllZGU3YWE0MjkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2hvbGVwdW5jaC9NZWRpYVBsYXllclByaXZhdGVI
b2xlUHVuY2guY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2hvbGVw
dW5jaC9NZWRpYVBsYXllclByaXZhdGVIb2xlUHVuY2guY3BwCkBAIC0xMzksMTAgKzEzOSwyOSBA
QCBNZWRpYVBsYXllcjo6U3VwcG9ydHNUeXBlIE1lZGlhUGxheWVyUHJpdmF0ZUhvbGVQdW5jaDo6
c3VwcG9ydHNUeXBlKGNvbnN0IE1lZGlhRQogICAgIHJldHVybiBNZWRpYVBsYXllcjo6SXNOb3RT
dXBwb3J0ZWQ7CiB9CiAKK2NsYXNzIE1lZGlhUGxheWVyRmFjdG9yeUhvbGVQdW5jaCA6IHB1Ymxp
YyBNZWRpYVBsYXllckZhY3RvcnkgeworcHVibGljOgorICAgIE1lZGlhUGxheWVyRW51bXM6Ok1l
ZGlhRW5naW5lSWRlbnRpZmllciBpZGVudGlmaWVyKCkgY29uc3QgZmluYWwgeyByZXR1cm4gTWVk
aWFQbGF5ZXJFbnVtczo6TWVkaWFFbmdpbmVJZGVudGlmaWVyOjpIb2xlUHVuY2g7IH07CisKKyAg
ICBzdGQ6OnVuaXF1ZV9wdHI8TWVkaWFQbGF5ZXJQcml2YXRlSW50ZXJmYWNlPiBjcmVhdGVNZWRp
YUVuZ2luZVBsYXllcihNZWRpYVBsYXllciogcGxheWVyKSBjb25zdCBmaW5hbAorICAgIHsKKyAg
ICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8TWVkaWFQbGF5ZXJQcml2YXRlSG9sZVB1bmNoPihwbGF5
ZXIpOworICAgIH0KKworICAgIHZvaWQgZ2V0U3VwcG9ydGVkVHlwZXMoSGFzaFNldDxTdHJpbmcs
IEFTQ0lJQ2FzZUluc2Vuc2l0aXZlSGFzaD4mIHR5cGVzKSBjb25zdCBmaW5hbAorICAgIHsKKyAg
ICAgICAgcmV0dXJuIE1lZGlhUGxheWVyUHJpdmF0ZUhvbGVQdW5jaDo6Z2V0U3VwcG9ydGVkVHlw
ZXModHlwZXMpOworICAgIH0KKworICAgIE1lZGlhUGxheWVyOjpTdXBwb3J0c1R5cGUgc3VwcG9y
dHNUeXBlQW5kQ29kZWNzKGNvbnN0IE1lZGlhRW5naW5lU3VwcG9ydFBhcmFtZXRlcnMmIHBhcmFt
ZXRlcnMpIGNvbnN0IGZpbmFsCisgICAgeworICAgICAgICByZXR1cm4gTWVkaWFQbGF5ZXJQcml2
YXRlSG9sZVB1bmNoOjpzdXBwb3J0c1R5cGUocGFyYW1ldGVycyk7CisgICAgfQorfTsKKwogdm9p
ZCBNZWRpYVBsYXllclByaXZhdGVIb2xlUHVuY2g6OnJlZ2lzdGVyTWVkaWFFbmdpbmUoTWVkaWFF
bmdpbmVSZWdpc3RyYXIgcmVnaXN0cmFyKQogewotICAgIHJlZ2lzdHJhcihbXShNZWRpYVBsYXll
ciogcGxheWVyKSB7IHJldHVybiBtYWtlVW5pcXVlPE1lZGlhUGxheWVyUHJpdmF0ZUhvbGVQdW5j
aD4ocGxheWVyKTsgfSwKLSAgICAgICAgZ2V0U3VwcG9ydGVkVHlwZXMsIHN1cHBvcnRzVHlwZSwg
bnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0cik7CisgICAgcmVnaXN0cmFyKG1ha2VV
bmlxdWU8TWVkaWFQbGF5ZXJGYWN0b3J5SG9sZVB1bmNoPigpKTsKIH0KIAogdm9pZCBNZWRpYVBs
YXllclByaXZhdGVIb2xlUHVuY2g6Om5vdGlmeVJlYWR5U3RhdGUoKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvaG9sZXB1bmNoL01lZGlhUGxheWVyUHJpdmF0
ZUhvbGVQdW5jaC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvaG9sZXB1bmNo
L01lZGlhUGxheWVyUHJpdmF0ZUhvbGVQdW5jaC5oCmluZGV4IDhiZjcyMTMxODgxOWM0MDI2N2I3
MjFmYTliODJhYzFjZDkyNmY5ZDIuLmNkMzc0ZWVlZmEyMjUyNmM2MzliZDUxNmRjYjFkMzg4YzA3
YzQ5NjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2hvbGVw
dW5jaC9NZWRpYVBsYXllclByaXZhdGVIb2xlUHVuY2guaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9ob2xlcHVuY2gvTWVkaWFQbGF5ZXJQcml2YXRlSG9sZVB1bmNoLmgK
QEAgLTk4LDYgKzk4LDcgQEAgcHVibGljOgogI2VuZGlmCiAKIHByaXZhdGU6CisgICAgZnJpZW5k
IGNsYXNzIE1lZGlhUGxheWVyRmFjdG9yeUhvbGVQdW5jaDsKICAgICBzdGF0aWMgdm9pZCBnZXRT
dXBwb3J0ZWRUeXBlcyhIYXNoU2V0PFN0cmluZywgQVNDSUlDYXNlSW5zZW5zaXRpdmVIYXNoPiYp
OwogICAgIHN0YXRpYyBNZWRpYVBsYXllcjo6U3VwcG9ydHNUeXBlIHN1cHBvcnRzVHlwZShjb25z
dCBNZWRpYUVuZ2luZVN1cHBvcnRQYXJhbWV0ZXJzJik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9NZWRpYVBsYXllclByaXZhdGVNZWRpYUZvdW5k
YXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL01lZGlhUGxh
eWVyUHJpdmF0ZU1lZGlhRm91bmRhdGlvbi5jcHAKaW5kZXggNmQ2NGFlOWE2ZTNhNDE3ZmIxNGYx
MjE2NmY2OGQzYzlhNTUyNjZkZS4uYTM0YjZjMjI5NDZjZjc5MTYyOThmMmFiYzMxYmE0ZjhjMzBi
MTJlZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL01l
ZGlhUGxheWVyUHJpdmF0ZU1lZGlhRm91bmRhdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3Mvd2luL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhRm91bmRhdGlvbi5j
cHAKQEAgLTc5LDEyICs3OSwzMCBAQCBNZWRpYVBsYXllclByaXZhdGVNZWRpYUZvdW5kYXRpb246
On5NZWRpYVBsYXllclByaXZhdGVNZWRpYUZvdW5kYXRpb24oKQogICAgIGVuZFNlc3Npb24oKTsK
IH0KIAorY2xhc3MgTWVkaWFQbGF5ZXJGYWN0b3J5TWVkaWFGb3VuZGF0aW9uIDogcHVibGljIE1l
ZGlhUGxheWVyRmFjdG9yeSB7CitwdWJsaWM6CisgICAgTWVkaWFQbGF5ZXJFbnVtczo6TWVkaWFF
bmdpbmVJZGVudGlmaWVyIGlkZW50aWZpZXIoKSBjb25zdCBmaW5hbCB7IHJldHVybiBNZWRpYVBs
YXllckVudW1zOjpNZWRpYUVuZ2luZUlkZW50aWZpZXI6Ok1lZGlhRm91bmRhdGlvbjsgfTsKKwor
ICAgIHN0ZDo6dW5pcXVlX3B0cjxNZWRpYVBsYXllclByaXZhdGVJbnRlcmZhY2U+IGNyZWF0ZU1l
ZGlhRW5naW5lUGxheWVyKE1lZGlhUGxheWVyKiBwbGF5ZXIpIGNvbnN0IGZpbmFsCisgICAgewor
ICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxNZWRpYVBsYXllclByaXZhdGVNZWRpYUZvdW5kYXRp
b24+KHBsYXllcik7CisgICAgfQorCisgICAgdm9pZCBnZXRTdXBwb3J0ZWRUeXBlcyhIYXNoU2V0
PFN0cmluZywgQVNDSUlDYXNlSW5zZW5zaXRpdmVIYXNoPiYgdHlwZXMpIGNvbnN0IGZpbmFsCisg
ICAgeworICAgICAgICByZXR1cm4gTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFGb3VuZGF0aW9uOjpn
ZXRTdXBwb3J0ZWRUeXBlcyh0eXBlcyk7CisgICAgfQorCisgICAgTWVkaWFQbGF5ZXI6OlN1cHBv
cnRzVHlwZSBzdXBwb3J0c1R5cGVBbmRDb2RlY3MoY29uc3QgTWVkaWFFbmdpbmVTdXBwb3J0UGFy
YW1ldGVycyYgcGFyYW1ldGVycykgY29uc3QgZmluYWwKKyAgICB7CisgICAgICAgIHJldHVybiBN
ZWRpYVBsYXllclByaXZhdGVNZWRpYUZvdW5kYXRpb246OnN1cHBvcnRzVHlwZShwYXJhbWV0ZXJz
KTsKKyAgICB9Cit9OworCiB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhRm91bmRhdGlvbjo6
cmVnaXN0ZXJNZWRpYUVuZ2luZShNZWRpYUVuZ2luZVJlZ2lzdHJhciByZWdpc3RyYXIpCiB7Ci0g
ICAgaWYgKGlzQXZhaWxhYmxlKCkpIHsKLSAgICAgICAgcmVnaXN0cmFyKFtdKE1lZGlhUGxheWVy
KiBwbGF5ZXIpIHsgcmV0dXJuIG1ha2VVbmlxdWU8TWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFGb3Vu
ZGF0aW9uPihwbGF5ZXIpOyB9LAotICAgICAgICAgICAgZ2V0U3VwcG9ydGVkVHlwZXMsIHN1cHBv
cnRzVHlwZSwgMCwgMCwgMCwgMCk7Ci0gICAgfQorICAgIGlmIChpc0F2YWlsYWJsZSgpKQorICAg
ICAgICByZWdpc3RyYXIobWFrZVVuaXF1ZTxNZWRpYVBsYXllckZhY3RvcnlNZWRpYUZvdW5kYXRp
b24+KCkpOwogfQogCiBib29sIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhRm91bmRhdGlvbjo6aXNB
dmFpbGFibGUoKSAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svbWVk
aWFzb3VyY2UvTW9ja01lZGlhUGxheWVyTWVkaWFTb3VyY2UuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbW9jay9tZWRpYXNvdXJjZS9Nb2NrTWVkaWFQbGF5ZXJNZWRpYVNvdXJjZS5jcHAK
aW5kZXggMzg3YTIxZGFmNDU1MjM5NjhhZWU0Zjc5NDE5ZDNkOGI4ODY5MGQ3Yy4uMDRjZWM1NTQ2
YmYwNmRkZDM3ZDllYzZkMGNjNjlmZGJhMTM1OTcwNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbW9jay9tZWRpYXNvdXJjZS9Nb2NrTWVkaWFQbGF5ZXJNZWRpYVNvdXJjZS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9tZWRpYXNvdXJjZS9Nb2NrTWVk
aWFQbGF5ZXJNZWRpYVNvdXJjZS5jcHAKQEAgLTM3LDExICszNywyNyBAQAogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKK2NsYXNzIE1lZGlhUGxheWVyRmFjdG9yeU1lZGlhU291cmNlTW9jayA6IHB1
YmxpYyBNZWRpYVBsYXllckZhY3RvcnkgeworcHVibGljOgorICAgIE1lZGlhUGxheWVyRW51bXM6
Ok1lZGlhRW5naW5lSWRlbnRpZmllciBpZGVudGlmaWVyKCkgY29uc3QgZmluYWwgeyByZXR1cm4g
TWVkaWFQbGF5ZXJFbnVtczo6TWVkaWFFbmdpbmVJZGVudGlmaWVyOjpNb2NrTVNFOyB9OworCisg
ICAgc3RkOjp1bmlxdWVfcHRyPE1lZGlhUGxheWVyUHJpdmF0ZUludGVyZmFjZT4gY3JlYXRlTWVk
aWFFbmdpbmVQbGF5ZXIoTWVkaWFQbGF5ZXIqIHBsYXllcikgY29uc3QgZmluYWwgeyByZXR1cm4g
bWFrZVVuaXF1ZTxNb2NrTWVkaWFQbGF5ZXJNZWRpYVNvdXJjZT4ocGxheWVyKTsgfQorCisgICAg
dm9pZCBnZXRTdXBwb3J0ZWRUeXBlcyhIYXNoU2V0PFN0cmluZywgQVNDSUlDYXNlSW5zZW5zaXRp
dmVIYXNoPiYgdHlwZXMpIGNvbnN0IGZpbmFsCisgICAgeworICAgICAgICByZXR1cm4gTW9ja01l
ZGlhUGxheWVyTWVkaWFTb3VyY2U6OmdldFN1cHBvcnRlZFR5cGVzKHR5cGVzKTsKKyAgICB9CisK
KyAgICBNZWRpYVBsYXllcjo6U3VwcG9ydHNUeXBlIHN1cHBvcnRzVHlwZUFuZENvZGVjcyhjb25z
dCBNZWRpYUVuZ2luZVN1cHBvcnRQYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzKSBjb25zdCBmaW5hbAor
ICAgIHsKKyAgICAgICAgcmV0dXJuIE1vY2tNZWRpYVBsYXllck1lZGlhU291cmNlOjpzdXBwb3J0
c1R5cGUocGFyYW1ldGVycyk7CisgICAgfQorfTsKKwogLy8gTWVkaWFQbGF5ZXIgRW5pZ25lIFN1
cHBvcnQKIHZvaWQgTW9ja01lZGlhUGxheWVyTWVkaWFTb3VyY2U6OnJlZ2lzdGVyTWVkaWFFbmdp
bmUoTWVkaWFFbmdpbmVSZWdpc3RyYXIgcmVnaXN0cmFyKQogewotICAgIHJlZ2lzdHJhcihbXSAo
TWVkaWFQbGF5ZXIqIHBsYXllcikgeyByZXR1cm4gbWFrZVVuaXF1ZTxNb2NrTWVkaWFQbGF5ZXJN
ZWRpYVNvdXJjZT4ocGxheWVyKTsgfSwgZ2V0U3VwcG9ydGVkVHlwZXMsCi0gICAgICAgIHN1cHBv
cnRzVHlwZSwgMCwgMCwgMCwgMCk7CisgICAgcmVnaXN0cmFyKG1ha2VVbmlxdWU8TWVkaWFQbGF5
ZXJGYWN0b3J5TWVkaWFTb3VyY2VNb2NrPigpKTsKIH0KIAogLy8gRklYTUU6IFdoYXQgZG9lcyB0
aGUgd29yZCAiY2FjaGUiIG1lYW4gaGVyZT8KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvRGVy
aXZlZFNvdXJjZXMtaW5wdXQueGNmaWxlbGlzdCBiL1NvdXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJj
ZXMtaW5wdXQueGNmaWxlbGlzdAppbmRleCA3ZjA4ZjJiMmYxODU4MmVkNTA0MDMyZGNhY2I1NDc4
NmExNjlhZDVmLi4zZWYxY2E4OGZmYWVhYTI5ZGNkODNiNzU1YzJiM2JmMjg4ZjBmMmFhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2VzLWlucHV0LnhjZmlsZWxpc3QKKysr
IGIvU291cmNlL1dlYktpdC9EZXJpdmVkU291cmNlcy1pbnB1dC54Y2ZpbGVsaXN0CkBAIC0xNiw2
ICsxNiw3IEBAICQoSkFWQVNDUklQVENPUkVfUFJJVkFURV9IRUFERVJTX0RJUikveHhkLnBsCiAk
KFBST0pFQ1RfRElSKS9HUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MubWVzc2Fn
ZXMuaW4KICQoUFJPSkVDVF9ESVIpL0dQVVByb2Nlc3MvR1BVUHJvY2Vzcy5tZXNzYWdlcy5pbgog
JChQUk9KRUNUX0RJUikvR1BVUHJvY2Vzcy9tYWMvY29tLmFwcGxlLldlYktpdC5HUFVQcm9jZXNz
LnNiLmluCiskKFBST0pFQ1RfRElSKS9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUGxheWVy
TWFuYWdlclByb3h5Lm1lc3NhZ2VzLmluCiAkKFBST0pFQ1RfRElSKS9OZXR3b3JrUHJvY2Vzcy9D
b29raWVzL1dlYkNvb2tpZU1hbmFnZXIubWVzc2FnZXMuaW4KICQoUFJPSkVDVF9ESVIpL05ldHdv
cmtQcm9jZXNzL0N1c3RvbVByb3RvY29scy9MZWdhY3lDdXN0b21Qcm90b2NvbE1hbmFnZXIubWVz
c2FnZXMuaW4KICQoUFJPSkVDVF9ESVIpL05ldHdvcmtQcm9jZXNzL0luZGV4ZWREQi9XZWJJREJD
b25uZWN0aW9uVG9DbGllbnQubWVzc2FnZXMuaW4KQEAgLTk3LDYgKzk4LDcgQEAgJChQUk9KRUNU
X0RJUikvV2ViUHJvY2Vzcy9DYWNoZS9XZWJDYWNoZVN0b3JhZ2VDb25uZWN0aW9uLm1lc3NhZ2Vz
LmluCiAkKFBST0pFQ1RfRElSKS9XZWJQcm9jZXNzL0RhdGFiYXNlcy9JbmRleGVkREIvV2ViSURC
Q29ubmVjdGlvblRvU2VydmVyLm1lc3NhZ2VzLmluCiAkKFBST0pFQ1RfRElSKS9XZWJQcm9jZXNz
L0Z1bGxTY3JlZW4vV2ViRnVsbFNjcmVlbk1hbmFnZXIubWVzc2FnZXMuaW4KICQoUFJPSkVDVF9E
SVIpL1dlYlByb2Nlc3MvR1BVL0dQVVByb2Nlc3NDb25uZWN0aW9uLm1lc3NhZ2VzLmluCiskKFBS
T0pFQ1RfRElSKS9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVNZWRpYVBsYXllck1hbmFnZXIu
bWVzc2FnZXMuaW4KICQoUFJPSkVDVF9ESVIpL1dlYlByb2Nlc3MvR2VvbG9jYXRpb24vV2ViR2Vv
bG9jYXRpb25NYW5hZ2VyLm1lc3NhZ2VzLmluCiAkKFBST0pFQ1RfRElSKS9XZWJQcm9jZXNzL05l
dHdvcmsvTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLm1lc3NhZ2VzLmluCiAkKFBST0pFQ1RfRElS
KS9XZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIubWVzc2FnZXMuaW4KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMtb3V0cHV0LnhjZmlsZWxpc3QgYi9T
b3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2VzLW91dHB1dC54Y2ZpbGVsaXN0CmluZGV4IDNiMWU5
NDExNzAzOGJmMGQwNGEwNzU3ZjVlNmQ4NWUzMzRiZDc1YWUuLmM4YTNiNDk1YzBjZTU1NDEyOTky
MzY4MTEzMjAwZGEyYjk0MDc5MjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvRGVyaXZlZFNv
dXJjZXMtb3V0cHV0LnhjZmlsZWxpc3QKKysrIGIvU291cmNlL1dlYktpdC9EZXJpdmVkU291cmNl
cy1vdXRwdXQueGNmaWxlbGlzdApAQCAtMTE0LDYgKzExNCwxMiBAQCAkKEJVSUxUX1BST0RVQ1RT
X0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9QbHVnaW5Qcm94eU1lc3NhZ2VzUmVwbGllcy5o
CiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9SZW1vdGVMYXll
clRyZWVEcmF3aW5nQXJlYVByb3h5TWVzc2FnZVJlY2VpdmVyLmNwcAogJChCVUlMVF9QUk9EVUNU
U19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIvUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWFQ
cm94eU1lc3NhZ2VzLmgKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJL
aXQyL1JlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhUHJveHlNZXNzYWdlc1JlcGxpZXMuaAorJChC
VUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIvUmVtb3RlTWVkaWFQbGF5
ZXJNYW5hZ2VyTWVzc2FnZVJlY2VpdmVyLmNwcAorJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2
ZWRTb3VyY2VzL1dlYktpdDIvUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyTWVzc2FnZXMuaAorJChC
VUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIvUmVtb3RlTWVkaWFQbGF5
ZXJNYW5hZ2VyTWVzc2FnZXNSZXBsaWVzLmgKKyQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVk
U291cmNlcy9XZWJLaXQyL1JlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5TWVzc2FnZVJlY2Vp
dmVyLmNwcAorJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIvUmVt
b3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHlNZXNzYWdlcy5oCiskKEJVSUxUX1BST0RVQ1RTX0RJ
UikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9SZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eU1l
c3NhZ2VzUmVwbGllcy5oCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2Vi
S2l0Mi9SZW1vdGVPYmplY3RSZWdpc3RyeU1lc3NhZ2VSZWNlaXZlci5jcHAKICQoQlVJTFRfUFJP
RFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQyL1JlbW90ZU9iamVjdFJlZ2lzdHJ5TWVz
c2FnZXMuaAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIvUmVt
b3RlT2JqZWN0UmVnaXN0cnlNZXNzYWdlc1JlcGxpZXMuaApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9EZXJpdmVkU291cmNlcy5tYWtlIGIvU291cmNlL1dlYktpdC9EZXJpdmVkU291cmNlcy5t
YWtlCmluZGV4IGJlNTI1ZTEzYzU5YmJkMTQ1NmU4ZjBkNDIzYmE2NDQxY2U4YjA4ZGEuLjk2ZjNh
MmVjZWYzMTE4Y2UyM2YzODc1MWQ3MmUyYWIwODNjZjRhYzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvRGVyaXZlZFNvdXJjZXMubWFrZQorKysgYi9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3Vy
Y2VzLm1ha2UKQEAgLTI0LDYgKzI0LDcgQEAgVlBBVEggPSBcCiAgICAgJChXZWJLaXQyKSBcCiAg
ICAgJChXZWJLaXQyKS9HUFVQcm9jZXNzIFwKICAgICAkKFdlYktpdDIpL0dQVVByb2Nlc3MvbWFj
IFwKKyAgICAkKFdlYktpdDIpL0dQVVByb2Nlc3MvbWVkaWEgXAogICAgICQoV2ViS2l0MikvTmV0
d29ya1Byb2Nlc3MgXAogICAgICQoV2ViS2l0MikvTmV0d29ya1Byb2Nlc3MvQ29va2llcyBcCiAg
ICAgJChXZWJLaXQyKS9OZXR3b3JrUHJvY2Vzcy9jYWNoZSBcCkBAIC00OSw2ICs1MCw3IEBAIFZQ
QVRIID0gXAogICAgICQoV2ViS2l0MikvV2ViUHJvY2Vzcy9GdWxsU2NyZWVuIFwKICAgICAkKFdl
YktpdDIpL1dlYlByb2Nlc3MvR2VvbG9jYXRpb24gXAogICAgICQoV2ViS2l0MikvV2ViUHJvY2Vz
cy9HUFUgXAorICAgICQoV2ViS2l0MikvV2ViUHJvY2Vzcy9HUFUvbWVkaWEgXAogICAgICQoV2Vi
S2l0MikvV2ViUHJvY2Vzcy9JY29uRGF0YWJhc2UgXAogICAgICQoV2ViS2l0MikvV2ViUHJvY2Vz
cy9NZWRpYUNhY2hlIFwKICAgICAkKFdlYktpdDIpL1dlYlByb2Nlc3MvTWVkaWFTdHJlYW0gXApA
QCAtMTM1LDYgKzEzNyw4IEBAIE1FU1NBR0VfUkVDRUlWRVJTID0gXAogICAgIFBsdWdpblByb2Nl
c3NQcm94eSBcCiAgICAgUGx1Z2luUHJveHkgXAogICAgIFJlbW90ZUxheWVyVHJlZURyYXdpbmdB
cmVhUHJveHkgXAorICAgIFJlbW90ZU1lZGlhUGxheWVyTWFuYWdlciBcCisgICAgUmVtb3RlTWVk
aWFQbGF5ZXJNYW5hZ2VyUHJveHkgXAogICAgIFJlbW90ZU9iamVjdFJlZ2lzdHJ5IFwKICAgICBS
ZW1vdGVTY3JvbGxpbmdDb29yZGluYXRvciBcCiAgICAgUmVtb3RlV2ViSW5zcGVjdG9yUHJveHkg
XApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dl
YlByb2Nlc3MuY3BwIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dl
YlByb2Nlc3MuY3BwCmluZGV4IGJkMTM5ZmU1MzMxYmNjZTM2YzMzNDNiMTUyMTdkMDExZjI1MjRj
MzguLjQ3YTlhYzNjYzFmZDdlYWZlZmRlNmI5NDAzYjBjYWRjYTJiNjljMmQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5j
cHAKQEAgLTM1LDYgKzM1LDggQEAKICNpbmNsdWRlICJHUFVQcm9jZXNzUHJveHlNZXNzYWdlcy5o
IgogI2luY2x1ZGUgIkxvZ2dpbmcuaCIKICNpbmNsdWRlICJSZW1vdGVMYXllclRyZWVEcmF3aW5n
QXJlYVByb3h5TWVzc2FnZXMuaCIKKyNpbmNsdWRlICJSZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQ
cm94eS5oIgorI2luY2x1ZGUgIlJlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5TWVzc2FnZXMu
aCIKICNpbmNsdWRlICJSZW1vdGVTY3JvbGxpbmdDb29yZGluYXRvclRyYW5zYWN0aW9uLmgiCiAj
aW5jbHVkZSAiV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgiCiAjaW5jbHVkZSAiV2ViRXJyb3JzLmgi
CkBAIC01Miw2ICs1NCw3IEBAIEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OkdQVUNvbm5lY3Rp
b25Ub1dlYlByb2Nlc3MoR1BVUHJvY2VzcyYgZ3B1UHJvY2VzcywgV2ViCiAgICAgOiBtX2Nvbm5l
Y3Rpb24oSVBDOjpDb25uZWN0aW9uOjpjcmVhdGVTZXJ2ZXJDb25uZWN0aW9uKGNvbm5lY3Rpb25J
ZGVudGlmaWVyLCAqdGhpcykpCiAgICAgLCBtX2dwdVByb2Nlc3MoZ3B1UHJvY2VzcykKICAgICAs
IG1fd2ViUHJvY2Vzc0lkZW50aWZpZXIod2ViUHJvY2Vzc0lkZW50aWZpZXIpCisgICAgLCBtX3Jl
bW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5KG1ha2VVbmlxdWU8UmVtb3RlTWVkaWFQbGF5ZXJN
YW5hZ2VyUHJveHk+KCp0aGlzKSkKIHsKICAgICBSRUxFQVNFX0FTU0VSVChSdW5Mb29wOjppc01h
aW4oKSk7CiAgICAgbV9jb25uZWN0aW9uLT5vcGVuKCk7CkBAIC02MSw2ICs2NCw3IEBAIEdQVUNv
bm5lY3Rpb25Ub1dlYlByb2Nlc3M6On5HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzKCkKIHsKICAg
ICBSRUxFQVNFX0FTU0VSVChSdW5Mb29wOjppc01haW4oKSk7CiAKKyAgICBtX3JlbW90ZU1lZGlh
UGxheWVyTWFuYWdlclByb3h5ID0gbnVsbHB0cjsKICAgICBtX2Nvbm5lY3Rpb24tPmludmFsaWRh
dGUoKTsKIH0KIApAQCAtNzQsNiArNzgsMjYgQEAgdm9pZCBHUFVDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzOjpkaWRSZWNlaXZlSW52YWxpZE1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiBjb25uZWMKICAg
ICBDUkFTSCgpOwogfQogCit2b2lkIEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmRpZFJlY2Vp
dmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgSVBDOjpEZWNvZGVyJiBkZWNv
ZGVyKQoreworICAgIGlmIChkZWNvZGVyLm1lc3NhZ2VSZWNlaXZlck5hbWUoKSA9PSBNZXNzYWdl
czo6UmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHk6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSkg
eworICAgICAgICBpZiAobV9yZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eSkKKyAgICAgICAg
ICAgIG1fcmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHktPmRpZFJlY2VpdmVNZXNzYWdlRnJv
bVdlYlByb2Nlc3MoY29ubmVjdGlvbiwgZGVjb2Rlcik7CisgICAgICAgIHJldHVybjsKKyAgICB9
Cit9CisKK3ZvaWQgR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6ZGlkUmVjZWl2ZVN5bmNNZXNz
YWdlKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgSVBDOjpEZWNvZGVyJiBkZWNvZGVyLCBz
dGQ6OnVuaXF1ZV9wdHI8SVBDOjpFbmNvZGVyPiYgcmVwbHlFbmNvZGVyKQoreworICAgIGlmIChk
ZWNvZGVyLm1lc3NhZ2VSZWNlaXZlck5hbWUoKSA9PSBNZXNzYWdlczo6UmVtb3RlTWVkaWFQbGF5
ZXJNYW5hZ2VyUHJveHk6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSkgeworICAgICAgICBpZiAobV9y
ZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eSkKKyAgICAgICAgICAgIG1fcmVtb3RlTWVkaWFQ
bGF5ZXJNYW5hZ2VyUHJveHktPmRpZFJlY2VpdmVTeW5jTWVzc2FnZUZyb21XZWJQcm9jZXNzKGNv
bm5lY3Rpb24sIGRlY29kZXIsIHJlcGx5RW5jb2Rlcik7CisgICAgICAgIHJldHVybjsKKyAgICB9
CisKKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0
CiAKICNlbmRpZiAvLyBFTkFCTEUoR1BVX1BST0NFU1MpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L0dQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oIGIvU291cmNlL1dlYktp
dC9HUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaAppbmRleCBjNjRhNDNlNjRh
ZjUxMGMwNzRkNzA4NmY3YjY0NmZhNmM2YTRmNDY3Li44NjI1YjNjYjY5MmIwNzM1OGNhOWY4NjEx
MzY3Yjc1OTY1NTIyNWY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BV
Q29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9H
UFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgKQEAgLTM1LDYgKzM1LDcgQEAKIG5hbWVzcGFjZSBX
ZWJLaXQgewogCiBjbGFzcyBHUFVQcm9jZXNzOworY2xhc3MgUmVtb3RlTWVkaWFQbGF5ZXJNYW5h
Z2VyUHJveHk7CiAKIGNsYXNzIEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MKICAgICA6IHB1Ymxp
YyBSZWZDb3VudGVkPEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M+CkBAIC01NywxMCArNTgsMTMg
QEAgcHJpdmF0ZToKICAgICAvLyBJUEM6OkNvbm5lY3Rpb246OkNsaWVudAogICAgIHZvaWQgZGlk
Q2xvc2UoSVBDOjpDb25uZWN0aW9uJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRSZWNlaXZlSW52
YWxpZE1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpTdHJpbmdSZWZlcmVuY2UgbWVzc2Fn
ZVJlY2VpdmVyTmFtZSwgSVBDOjpTdHJpbmdSZWZlcmVuY2UgbWVzc2FnZU5hbWUpIG92ZXJyaWRl
OworICAgIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNv
ZGVyJikgb3ZlcnJpZGU7CisgICAgdm9pZCBkaWRSZWNlaXZlU3luY01lc3NhZ2UoSVBDOjpDb25u
ZWN0aW9uJiwgSVBDOjpEZWNvZGVyJiwgc3RkOjp1bmlxdWVfcHRyPElQQzo6RW5jb2Rlcj4mKSBv
dmVycmlkZTsKIAogICAgIFJlZjxJUEM6OkNvbm5lY3Rpb24+IG1fY29ubmVjdGlvbjsKICAgICBS
ZWY8R1BVUHJvY2Vzcz4gbV9ncHVQcm9jZXNzOwogICAgIGNvbnN0IFdlYkNvcmU6OlByb2Nlc3NJ
ZGVudGlmaWVyIG1fd2ViUHJvY2Vzc0lkZW50aWZpZXI7CisgICAgc3RkOjp1bmlxdWVfcHRyPFJl
bW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5PiBtX3JlbW90ZU1lZGlhUGxheWVyTWFuYWdlclBy
b3h5OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHkuY3BwIGIv
U291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyTWFuYWdlclBy
b3h5LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi4yOTY3ZjRjOTQ2MDlmZTI0ZGExN2UxODJlODNjYTM4ZjFiMGYy
ZTk1Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1Jl
bW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5LmNwcApAQCAtMCwwICsxLDE0NCBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJ
VFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
CisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJSZW1vdGVNZWRpYVBsYXllck1h
bmFnZXJQcm94eS5oIgorCisjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKQorCisjaW5jbHVkZSAiR1BV
Q29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oIgorI2luY2x1ZGUgIlJlbW90ZU1lZGlhUGxheWVyTWFu
YWdlck1lc3NhZ2VzLmgiCisjaW5jbHVkZSAiUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHlN
ZXNzYWdlcy5oIgorI2luY2x1ZGUgIldlYkNvcmVBcmd1bWVudENvZGVycy5oIgorI2luY2x1ZGUg
PFdlYkNvcmUvTWVkaWFQbGF5ZXIuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL01lZGlhUGxheWVyUHJp
dmF0ZS5oPgorI2luY2x1ZGUgPHd0Zi9VbmlxdWVSZWYuaD4KKworI2RlZmluZSBNRVNTQUdFX0NI
RUNLX0NPTlRFWFRJRChpZGVudGlmaWVyKSBNRVNTQUdFX0NIRUNLX0JBU0UobV9wcm94aWVzLmlz
VmFsaWRLZXkoaWRlbnRpZmllciksICZtX3dlYlByb2Nlc3NDb25uZWN0aW9uLmNvbm5lY3Rpb24o
KSkKKworbmFtZXNwYWNlIFdlYktpdCB7Cit1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKKworI2lm
ICFSRUxFQVNFX0xPR19ESVNBQkxFRAorc3RhdGljIFJlZlB0cjxMb2dnZXI+JiBudWxsTG9nZ2Vy
KCkKK3sKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8UmVmUHRyPExvZ2dlcj4+IGxvZ2dlcjsK
KyAgICByZXR1cm4gbG9nZ2VyOworfQorI2VuZGlmCisKK2NsYXNzIFJlbW90ZU1lZGlhUGxheWVy
TWFuYWdlclByb3h5OjpQbGF5ZXJQcm94eQorICAgIDogcHVibGljIE1lZGlhUGxheWVyQ2xpZW50
IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKK3B1YmxpYzoKKyAgICBQbGF5ZXJQcm94
eShjb25zdCBNZWRpYVBsYXllclByaXZhdGVSZW1vdGVJZGVudGlmaWVyJiBpZCwgUmVmPElQQzo6
Q29ubmVjdGlvbj4mJiBjb25uZWN0aW9uLCBNZWRpYVBsYXllckVudW1zOjpNZWRpYUVuZ2luZUlk
ZW50aWZpZXIgcmVtb3RlRW5naW5lSWRlbnRpZmllcikKKyAgICAgICAgOiBtX2lkKGlkKQorICAg
ICAgICAsIG1fY29ubmVjdGlvbihXVEZNb3ZlKGNvbm5lY3Rpb24pKQorICAgICAgICAsIG1fcmVt
b3RlRW5naW5lSWRlbnRpZmllcihyZW1vdGVFbmdpbmVJZGVudGlmaWVyKQorICAgIHsKKyAgICB9
CisKKyAgICB2aXJ0dWFsIH5QbGF5ZXJQcm94eSgpCisgICAgeworICAgIH0KKworcHJpdmF0ZToK
KworICAgIC8vIE1lZGlhUGxheWVyQ2xpZW50CisgICAgY29uc3QgVmVjdG9yPFdlYkNvcmU6OkNv
bnRlbnRUeXBlPiYgbWVkaWFDb250ZW50VHlwZXNSZXF1aXJpbmdIYXJkd2FyZVN1cHBvcnQoKSBj
b25zdCBmaW5hbCB7IHJldHVybiBtX3R5cGVzUmVxdWlyaW5nSGFyZHdhcmVTdXBwb3J0OyB9CisK
KyNpZiAhUkVMRUFTRV9MT0dfRElTQUJMRUQKKyAgICBjb25zdCBMb2dnZXImIG1lZGlhUGxheWVy
TG9nZ2VyKCkgZmluYWwKKyAgICB7CisgICAgICAgIGlmICghbnVsbExvZ2dlcigpLmdldCgpKSB7
CisgICAgICAgICAgICBudWxsTG9nZ2VyKCkgPSBMb2dnZXI6OmNyZWF0ZSh0aGlzKTsKKyAgICAg
ICAgICAgIG51bGxMb2dnZXIoKS0+c2V0RW5hYmxlZCh0aGlzLCBmYWxzZSk7CisgICAgICAgIH0K
KworICAgICAgICByZXR1cm4gKm51bGxMb2dnZXIoKS5nZXQoKTsKKyAgICB9CisjZW5kaWYKKwor
cHJvdGVjdGVkOgorICAgIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZUlkZW50aWZpZXIgbV9pZDsK
KyAgICBSZWY8SVBDOjpDb25uZWN0aW9uPiBtX2Nvbm5lY3Rpb247CisgICAgc3RkOjp1bmlxdWVf
cHRyPE1lZGlhUGxheWVyUHJpdmF0ZUludGVyZmFjZT4gbV9wbGF5ZXI7CisgICAgTWVkaWFQbGF5
ZXJFbnVtczo6TWVkaWFFbmdpbmVJZGVudGlmaWVyIG1fcmVtb3RlRW5naW5lSWRlbnRpZmllcjsK
KyAgICBWZWN0b3I8V2ViQ29yZTo6Q29udGVudFR5cGU+IG1fdHlwZXNSZXF1aXJpbmdIYXJkd2Fy
ZVN1cHBvcnQ7Cit9OworCitSZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eTo6UmVtb3RlTWVk
aWFQbGF5ZXJNYW5hZ2VyUHJveHkoR1BVQ29ubmVjdGlvblRvV2ViUHJvY2VzcyYgY29ubmVjdGlv
bikKKyAgICA6IG1fd2ViUHJvY2Vzc0Nvbm5lY3Rpb24oY29ubmVjdGlvbikKK3sKK30KKworUmVt
b3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHk6On5SZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94
eSgpCit7Cit9CisKK3ZvaWQgUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHk6OmNyZWF0ZU1l
ZGlhUGxheWVyKGNvbnN0IE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZUlkZW50aWZpZXImIGlkLCBN
ZWRpYVBsYXllckVudW1zOjpNZWRpYUVuZ2luZUlkZW50aWZpZXIgcmVtb3RlRW5naW5lSWRlbnRp
ZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sIHN1Y2NlZWRlZCk+JiYgY29tcGxldGlv
bkhhbmRsZXIpCit7CisgICAgTUVTU0FHRV9DSEVDS19DT05URVhUSUQoaWQpOworCisgICAgQVNT
RVJUKCFtX3Byb3hpZXMuY29udGFpbnMoaWQpKTsKKyAgICBtX3Byb3hpZXMuYWRkKGlkLCBtYWtl
VW5pcXVlPFBsYXllclByb3h5PihpZCwgbV93ZWJQcm9jZXNzQ29ubmVjdGlvbi5jb25uZWN0aW9u
KCksIHJlbW90ZUVuZ2luZUlkZW50aWZpZXIpKTsKKworICAgIGNvbXBsZXRpb25IYW5kbGVyKHRy
dWUpOworfQorCit2b2lkIFJlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5OjpnZXRTdXBwb3J0
ZWRUeXBlcyhNZWRpYVBsYXllckVudW1zOjpNZWRpYUVuZ2luZUlkZW50aWZpZXIsIENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoVmVjdG9yPFN0cmluZz4mJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCit7
CisgICAgLy8gRklYTUU6IHF1ZXJ5IHRoZSBhcHByb3ByaWF0ZSBtZWRpYSBlbmdpbmUKKyAgICBj
b21wbGV0aW9uSGFuZGxlcih7ICJ2aWRlby9tcDQiLCAiYXVkaW8vbXA0IiB9KTsKK30KKwordm9p
ZCBSZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eTo6c3VwcG9ydHNUeXBlKE1lZGlhUGxheWVy
RW51bXM6Ok1lZGlhRW5naW5lSWRlbnRpZmllciwgY29uc3QgV2ViQ29yZTo6TWVkaWFFbmdpbmVT
dXBwb3J0UGFyYW1ldGVycyYmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGludCk+JiYgY29tcGxl
dGlvbkhhbmRsZXIpCit7CisgICAgY29tcGxldGlvbkhhbmRsZXIoMSk7Cit9CisKK3ZvaWQgUmVt
b3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHk6Om9yaWdpbnNJbk1lZGlhQ2FjaGUoTWVkaWFQbGF5
ZXJFbnVtczo6TWVkaWFFbmdpbmVJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmJiwgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZChWZWN0b3I8V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhPiYmKT4mJiBj
b21wbGV0aW9uSGFuZGxlcikKK3sKKyAgICBjb21wbGV0aW9uSGFuZGxlcih7IH0pOworfQorCit2
b2lkIFJlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5OjpjbGVhck1lZGlhQ2FjaGUoTWVkaWFQ
bGF5ZXJFbnVtczo6TWVkaWFFbmdpbmVJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmJiwgV2FsbFRp
bWUpCit7Cit9CisKK3ZvaWQgUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHk6OmNsZWFyTWVk
aWFDYWNoZUZvck9yaWdpbnMoTWVkaWFQbGF5ZXJFbnVtczo6TWVkaWFFbmdpbmVJZGVudGlmaWVy
LCBjb25zdCBTdHJpbmcmJiwgVmVjdG9yPFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YT4mJikK
K3sKK30KKwordm9pZCBSZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eTo6c3VwcG9ydHNLZXlT
eXN0ZW0oTWVkaWFQbGF5ZXJFbnVtczo6TWVkaWFFbmdpbmVJZGVudGlmaWVyLCBjb25zdCBTdHJp
bmcmJiwgY29uc3QgU3RyaW5nJiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYgY29t
cGxldGlvbkhhbmRsZXIpCit7CisgICAgY29tcGxldGlvbkhhbmRsZXIoeyB9KTsKK30KKworfQor
CisjdW5kZWYgTUVTU0FHRV9DSEVDS19DT05URVhUSUQKKworI2VuZGlmCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJv
eHkuaCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVBsYXllck1h
bmFnZXJQcm94eS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmQwMmZjMjdjYWQ4MGVlNWJlZTg3Y2QwOTljZjZmNjIw
NzUzNTgzMjIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVk
aWEvUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHkuaApAQCAtMCwwICsxLDczIEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5E
IElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoR1BVX1BST0NFU1MpCisKKyNpbmNs
dWRlICJDb25uZWN0aW9uLmgiCisjaW5jbHVkZSAiTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlSWRl
bnRpZmllci5oIgorI2luY2x1ZGUgIk1lc3NhZ2VSZWNlaXZlci5oIgorI2luY2x1ZGUgPFdlYkNv
cmUvTWVkaWFQbGF5ZXIuaD4KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIEdQVUNvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3M7CisKK2NsYXNzIFJlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5
IDogcHJpdmF0ZSBJUEM6Ok1lc3NhZ2VSZWNlaXZlciB7CisgICAgV1RGX01BS0VfRkFTVF9BTExP
Q0FURUQ7CitwdWJsaWM6CisgICAgZXhwbGljaXQgUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJv
eHkoR1BVQ29ubmVjdGlvblRvV2ViUHJvY2VzcyYpOworICAgIH5SZW1vdGVNZWRpYVBsYXllck1h
bmFnZXJQcm94eSgpOworCisgICAgR1BVQ29ubmVjdGlvblRvV2ViUHJvY2VzcyYgd2ViUHJvY2Vz
c0Nvbm5lY3Rpb24oKSBjb25zdCB7IHJldHVybiBtX3dlYlByb2Nlc3NDb25uZWN0aW9uOyB9Cisg
ICAgdm9pZCBjbGVhcigpOworCisgICAgdm9pZCBkaWRSZWNlaXZlTWVzc2FnZUZyb21XZWJQcm9j
ZXNzKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgSVBDOjpEZWNvZGVyJiBkZWNvZGVyKSB7
IGRpZFJlY2VpdmVNZXNzYWdlKGNvbm5lY3Rpb24sIGRlY29kZXIpOyB9CisgICAgdm9pZCBkaWRS
ZWNlaXZlU3luY01lc3NhZ2VGcm9tV2ViUHJvY2VzcyhJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rp
b24sIElQQzo6RGVjb2RlciYgZGVjb2Rlciwgc3RkOjp1bmlxdWVfcHRyPElQQzo6RW5jb2Rlcj4m
IGVuY29kZXIpIHsgZGlkUmVjZWl2ZVN5bmNNZXNzYWdlKGNvbm5lY3Rpb24sIGRlY29kZXIsIGVu
Y29kZXIpOyB9Citwcml2YXRlOgorICAgIC8vIElQQzo6TWVzc2FnZVJlY2VpdmVyCisgICAgdm9p
ZCBkaWRSZWNlaXZlTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImKSBmaW5h
bDsKKyAgICB2b2lkIGRpZFJlY2VpdmVTeW5jTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6
OkRlY29kZXImLCBzdGQ6OnVuaXF1ZV9wdHI8SVBDOjpFbmNvZGVyPiYpIGZpbmFsOworCisgICAg
dm9pZCBjcmVhdGVNZWRpYVBsYXllcihjb25zdCBNZWRpYVBsYXllclByaXZhdGVSZW1vdGVJZGVu
dGlmaWVyJiwgV2ViQ29yZTo6TWVkaWFQbGF5ZXJFbnVtczo6TWVkaWFFbmdpbmVJZGVudGlmaWVy
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKTsKKworICAgIHZvaWQgZ2V0U3VwcG9y
dGVkVHlwZXMoV2ViQ29yZTo6TWVkaWFQbGF5ZXJFbnVtczo6TWVkaWFFbmdpbmVJZGVudGlmaWVy
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFZlY3RvcjxTdHJpbmc+JiYpPiYmKTsKKyAgICB2b2lk
IHN1cHBvcnRzVHlwZShXZWJDb3JlOjpNZWRpYVBsYXllckVudW1zOjpNZWRpYUVuZ2luZUlkZW50
aWZpZXIsIGNvbnN0IFdlYkNvcmU6Ok1lZGlhRW5naW5lU3VwcG9ydFBhcmFtZXRlcnMmJiwgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZChpbnQpPiYmKTsKKworICAgIHZvaWQgb3JpZ2luc0luTWVkaWFD
YWNoZShXZWJDb3JlOjpNZWRpYVBsYXllckVudW1zOjpNZWRpYUVuZ2luZUlkZW50aWZpZXIsIGNv
bnN0IFN0cmluZyYmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFZlY3RvcjxXZWJDb3JlOjpTZWN1
cml0eU9yaWdpbkRhdGE+JiYpPiYmKTsKKyAgICB2b2lkIGNsZWFyTWVkaWFDYWNoZShXZWJDb3Jl
OjpNZWRpYVBsYXllckVudW1zOjpNZWRpYUVuZ2luZUlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYm
LCBXYWxsVGltZSk7CisgICAgdm9pZCBjbGVhck1lZGlhQ2FjaGVGb3JPcmlnaW5zKFdlYkNvcmU6
Ok1lZGlhUGxheWVyRW51bXM6Ok1lZGlhRW5naW5lSWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiYs
IFZlY3RvcjxXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGE+JiYpOworICAgIHZvaWQgc3VwcG9y
dHNLZXlTeXN0ZW0oV2ViQ29yZTo6TWVkaWFQbGF5ZXJFbnVtczo6TWVkaWFFbmdpbmVJZGVudGlm
aWVyLCBjb25zdCBTdHJpbmcmJiwgY29uc3QgU3RyaW5nJiYsIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoYm9vbCk+JiYpOworCisgICAgY2xhc3MgUGxheWVyUHJveHk7CisgICAgZnJpZW5kIGNsYXNz
IFBsYXllclByb3h5OworICAgIEhhc2hNYXA8TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlSWRlbnRp
Zmllciwgc3RkOjp1bmlxdWVfcHRyPFBsYXllclByb3h5Pj4gbV9wcm94aWVzOworICAgIEdQVUNv
bm5lY3Rpb25Ub1dlYlByb2Nlc3MmIG1fd2ViUHJvY2Vzc0Nvbm5lY3Rpb247Cit9OworCit9CisK
KyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90
ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5Lm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9HUFVQ
cm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5Lm1lc3NhZ2VzLmluCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjM1OWE1ZDU2YjMyMGZkNzBjNjQwNmUzNTZiZTQ5YjZiZDMzNzE4Y2YKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFQ
bGF5ZXJNYW5hZ2VyUHJveHkubWVzc2FnZXMuaW4KQEAgLTAsMCArMSwzNyBAQAorIyBDb3B5cmln
aHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisjIGFyZSBtZXQ6CisjIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorIyAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorIworIyBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBB
UyBJUycnCisjIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorIyBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisjIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9S
UworIyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SCisjIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisjIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworIyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTgorIyBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorIyBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisjIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKworI2lmIEVOQUJMRShWSURFTykKKworbWVzc2Fn
ZXMgLT4gUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHkgTm90UmVmQ291bnRlZCB7CisgICAg
Q3JlYXRlTWVkaWFQbGF5ZXIoV2ViS2l0OjpNZWRpYVBsYXllclByaXZhdGVSZW1vdGVJZGVudGlm
aWVyIGlkLCBlbnVtOnVpbnQ4X3QgV2ViQ29yZTo6TWVkaWFQbGF5ZXJFbnVtczo6TWVkaWFFbmdp
bmVJZGVudGlmaWVyIHJlbW90ZUVuZ2luZUlkZW50aWZpZXIpIC0+IChib29sIHN1Y2Nlc3MpIFN5
bmNocm9ub3VzCisKKyAgICBHZXRTdXBwb3J0ZWRUeXBlcyhlbnVtOnVpbnQ4X3QgV2ViQ29yZTo6
TWVkaWFQbGF5ZXJFbnVtczo6TWVkaWFFbmdpbmVJZGVudGlmaWVyIHJlbW90ZUVuZ2luZUlkZW50
aWZpZXIpIC0+IChWZWN0b3I8U3RyaW5nPiB0eXBlcykgU3luY2hyb25vdXMKKyAgICBTdXBwb3J0
c1R5cGUoZW51bTp1aW50OF90IFdlYkNvcmU6Ok1lZGlhUGxheWVyRW51bXM6Ok1lZGlhRW5naW5l
SWRlbnRpZmllciByZW1vdGVFbmdpbmVJZGVudGlmaWVyLCBzdHJ1Y3QgV2ViQ29yZTo6TWVkaWFF
bmdpbmVTdXBwb3J0UGFyYW1ldGVycyB0eXBlKSAtPiAoaW50IHN1cHBvcnQpIFN5bmNocm9ub3Vz
CisgICAgT3JpZ2luc0luTWVkaWFDYWNoZShlbnVtOnVpbnQ4X3QgV2ViQ29yZTo6TWVkaWFQbGF5
ZXJFbnVtczo6TWVkaWFFbmdpbmVJZGVudGlmaWVyIHJlbW90ZUVuZ2luZUlkZW50aWZpZXIsIFN0
cmluZyBwYXRoKSAtPiAoVmVjdG9yPFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YT4gb3JpZ2lu
cykgU3luY2hyb25vdXMKKyAgICBDbGVhck1lZGlhQ2FjaGUoZW51bTp1aW50OF90IFdlYkNvcmU6
Ok1lZGlhUGxheWVyRW51bXM6Ok1lZGlhRW5naW5lSWRlbnRpZmllciByZW1vdGVFbmdpbmVJZGVu
dGlmaWVyLCBTdHJpbmcgcGF0aCwgV2FsbFRpbWUgbW9kaWZpZWRTaW5jZSkKKyAgICBDbGVhck1l
ZGlhQ2FjaGVGb3JPcmlnaW5zKGVudW06dWludDhfdCBXZWJDb3JlOjpNZWRpYVBsYXllckVudW1z
OjpNZWRpYUVuZ2luZUlkZW50aWZpZXIgcmVtb3RlRW5naW5lSWRlbnRpZmllciwgU3RyaW5nIHBh
dGgsIFZlY3RvcjxXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGE+IG9yaWdpbnMpCisgICAgU3Vw
cG9ydHNLZXlTeXN0ZW0oZW51bTp1aW50OF90IFdlYkNvcmU6Ok1lZGlhUGxheWVyRW51bXM6Ok1l
ZGlhRW5naW5lSWRlbnRpZmllciByZW1vdGVFbmdpbmVJZGVudGlmaWVyLCBTdHJpbmcga2V5U3lz
dGVtLCBTdHJpbmcgbWltZVR5cGUpIC0+IChib29sIHN1cHBvcnRzKSBTeW5jaHJvbm91cworfQor
CisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvbWVzc2Fn
ZXMucHkgYi9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5CmluZGV4IGVk
MTFhYzI3MjUyMjZlNDdhMmI1NmJjYzllY2YyMjJkYWMwMDA5YWUuLmYyZTllZDdhYjU0MDJlZjUx
MTg4ZjdlOGRiZTM5NmJhOGFjZTBmYWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2NyaXB0
cy93ZWJraXQvbWVzc2FnZXMucHkKKysrIGIvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC9t
ZXNzYWdlcy5weQpAQCAtMSw0ICsxLDQgQEAKLSMgQ29weXJpZ2h0IChDKSAyMDEwLTIwMTggQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIyBDb3B5cmlnaHQgKEMpIDIwMTAtMjAxOSBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAjCiAjIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogIyBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKQEAgLTIxOSwxMCArMjE5LDExIEBAIGRlZiB0eXBlc190aGF0X2Nhbm5vdF9iZV9mb3J3YXJk
X2RlY2xhcmVkKCk6CiAgICAgICAgICdXZWJDb3JlOjpTV1NlcnZlckNvbm5lY3Rpb25JZGVudGlm
aWVyJywKICAgICAgICAgJ1dlYktpdDo6QWN0aXZpdHlTdGF0ZUNoYW5nZUlEJywKICAgICAgICAg
J1dlYktpdDo6TGF5ZXJIb3N0aW5nQ29udGV4dElEJywKLSAgICAgICAgJ1dlYktpdDo6VHJhbnNh
Y3Rpb25JRCcsCisgICAgICAgICdXZWJLaXQ6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZUlkZW50
aWZpZXInLAogICAgICAgICAnV2ViS2l0OjpTdG9yYWdlQXJlYUlkZW50aWZpZXInLAogICAgICAg
ICAnV2ViS2l0OjpTdG9yYWdlQXJlYUltcGxJZGVudGlmaWVyJywKICAgICAgICAgJ1dlYktpdDo6
U3RvcmFnZU5hbWVzcGFjZUlkZW50aWZpZXInLAorICAgICAgICAnV2ViS2l0OjpUcmFuc2FjdGlv
bklEJywKICAgICAgICAgJ1dlYktpdDo6VXNlckNvbnRlbnRDb250cm9sbGVySWRlbnRpZmllcics
CiAgICAgICAgICdXZWJLaXQ6OldlYlBhZ2VQcm94eUlkZW50aWZpZXInLAogICAgIF0pCkBAIC02
MDMsNiArNjA0LDcgQEAgZGVmIGhlYWRlcnNfZm9yX3R5cGUodHlwZSk6CiAgICAgICAgICdXZWJL
aXQ6OldlYk1vdXNlRXZlbnQnOiBbJyJXZWJFdmVudC5oIiddLAogICAgICAgICAnV2ViS2l0OjpX
ZWJUb3VjaEV2ZW50JzogWyciV2ViRXZlbnQuaCInXSwKICAgICAgICAgJ1dlYktpdDo6V2ViV2hl
ZWxFdmVudCc6IFsnIldlYkV2ZW50LmgiJ10sCisgICAgICAgICdXZWJDb3JlOjpNZWRpYUVuZ2lu
ZVN1cHBvcnRQYXJhbWV0ZXJzJzogWyc8V2ViQ29yZS9NZWRpYVBsYXllci5oPiddLAogICAgICAg
ICAnc3RydWN0IFdlYkNvcmU6OkVsZW1lbnRDb250ZXh0JzogWyc8V2ViQ29yZS9FbGVtZW50Q29u
dGV4dC5oPiddLAogICAgICAgICAnc3RydWN0IFdlYktpdDo6V2ViVXNlclNjcmlwdERhdGEnOiBb
JyJXZWJVc2VyQ29udGVudENvbnRyb2xsZXJEYXRhVHlwZXMuaCInXSwKICAgICAgICAgJ3N0cnVj
dCBXZWJLaXQ6OldlYlVzZXJTdHlsZVNoZWV0RGF0YSc6IFsnIldlYlVzZXJDb250ZW50Q29udHJv
bGxlckRhdGFUeXBlcy5oIiddLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9Tb3VyY2VzLnR4
dCBiL1NvdXJjZS9XZWJLaXQvU291cmNlcy50eHQKaW5kZXggNzNmZjRkMjdiZWUzZDgyYTExNDY3
MTc0OTJiY2I2NjQ1MjM1YjY0Mi4uYjIzODQ4NDg1MzM4NzhhMGQ3Zjc2NmU4MTczNmUxODY0MTlm
ZWUwYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9Tb3VyY2VzLnR4dAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1NvdXJjZXMudHh0CkBAIC00OTksNiArNDk5LDggQEAgV2ViUHJvY2Vzcy9NZWRpYVN0
cmVhbS9NZWRpYURldmljZVNhbmRib3hFeHRlbnNpb25zLmNwcAogV2ViUHJvY2Vzcy9NZWRpYVN0
cmVhbS9Vc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXIuY3BwCiAKIFdlYlByb2Nlc3Mv
R1BVL0dQVVByb2Nlc3NDb25uZWN0aW9uLmNwcAorV2ViUHJvY2Vzcy9HUFUvbWVkaWEvTWVkaWFQ
bGF5ZXJQcml2YXRlUmVtb3RlLmNwcAorV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlTWVkaWFQ
bGF5ZXJNYW5hZ2VyLmNwcAogCiBXZWJQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NDb25u
ZWN0aW9uLmNwcAogV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYkxvYWRlclN0cmF0ZWd5LmNwcApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9Tb3VyY2VzQ29jb2EudHh0IGIvU291cmNlL1dlYktpdC9T
b3VyY2VzQ29jb2EudHh0CmluZGV4IDlkMjQyZTJhMDY0ZGZmNzJmNDljNDJmNTRkOTc4MTNjYWQ5
NGQ5MmMuLmQ5NDgzZDBhMTM5YTAwYWRhZDc3ZmE4MzdlY2M3M2VjMTc4YjljM2YgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvU291cmNlc0NvY29hLnR4dAorKysgYi9Tb3VyY2UvV2ViS2l0L1Nv
dXJjZXNDb2NvYS50eHQKQEAgLTU5LDYgKzU5LDcgQEAgTmV0d29ya1Byb2Nlc3Mvd2VicnRjL05l
dHdvcmtSVENTb2NrZXQuY3BwCiAKIEdQVVByb2Nlc3MvaW9zL0dQVVByb2Nlc3NJT1MubW0KIEdQ
VVByb2Nlc3MvbWFjL0dQVVByb2Nlc3NNYWMubW0KK0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVk
aWFQbGF5ZXJNYW5hZ2VyUHJveHkuY3BwCiBHUFVQcm9jZXNzL0VudHJ5UG9pbnQvQ29jb2EvWFBD
U2VydmljZS9HUFVTZXJ2aWNlRW50cnlQb2ludC5tbQogCiBQbGF0Zm9ybS9jZi9Nb2R1bGVDRi5j
cHAKQEAgLTYyNCw1ICs2MjUsNyBAQCBFZGl0YWJsZUltYWdlQ29udHJvbGxlck1lc3NhZ2VSZWNl
aXZlci5jcHAKIEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3NNZXNzYWdlUmVjZWl2ZXIuY3BwCiBH
UFVQcm9jZXNzUHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwCiBHUFVQcm9jZXNzTWVzc2FnZVJlY2Vp
dmVyLmNwcAorLy9SZW1vdGVNZWRpYVBsYXllck1hbmFnZXJNZXNzYWdlUmVjZWl2ZXIuY3BwCisv
L1JlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5TWVzc2FnZVJlY2VpdmVyLmNwcAogU2Vydmlj
ZVdvcmtlckZldGNoVGFza01lc3NhZ2VSZWNlaXZlci5jcHAKIFRleHRDaGVja2luZ0NvbnRyb2xs
ZXJQcm94eU1lc3NhZ2VSZWNlaXZlci5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2Vi
S2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGY3OWRkYzEyMDQwZjJiZjc5MjQwY2NhNTVlZjk4
OTMwYjUwMDc1MzQuLmVjZTkwZDU3NTJkNDdkNzFhYjA1NTVmY2E5NmQ2NjE3ZWU3NGUxMTAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oK
KysrIGIvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAt
OTEsNiArOTEsMTMgQEAKIAkJMDc0RTc1RkUxREYyMjExOTAwRDMxOEVDIC8qIFVzZXJNZWRpYVBy
b2Nlc3NNYW5hZ2VyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSAwNzRFNzVGQjFERjFGRDEzMDBEMzE4RUMgLyogVXNlck1lZGlhUHJvY2Vzc01hbmFnZXIu
aCAqLzsgfTsKIAkJMDc2RTg4NEUxQTEzQ0FERjAwNUU5MEZDIC8qIEFQSUNvbnRleHRNZW51Q2xp
ZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwNzZF
ODg0RDFBMTNDQURGMDA1RTkwRkMgLyogQVBJQ29udGV4dE1lbnVDbGllbnQuaCAqLzsgfTsKIAkJ
MDc3MjgxMUQyMTIzNEZGNjAwQzhFRjJFIC8qIFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFu
YWdlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNEE0
MTBGNDMxOUFGN0IyNzAwMkVCQUI1IC8qIFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdl
ci5oICovOyB9OworCQkwNzkyMzE0ODIzOUNCQ0I4MDA5NTk4RTIgLyogUmVtb3RlTWVkaWFQbGF5
ZXJNYW5hZ2VyUHJveHlNZXNzYWdlc1JlcGxpZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3OTIzMTQyMjM5Q0JDQjUwMDk1OThFMiAvKiBSZW1vdGVN
ZWRpYVBsYXllck1hbmFnZXJQcm94eU1lc3NhZ2VzUmVwbGllcy5oICovOyB9OworCQkwNzkyMzE0
OTIzOUNCQ0I4MDA5NTk4RTIgLyogUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyTWVzc2FnZVJlY2Vp
dmVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3
OTIzMTQzMjM5Q0JDQjYwMDk1OThFMiAvKiBSZW1vdGVNZWRpYVBsYXllck1hbmFnZXJNZXNzYWdl
UmVjZWl2ZXIuY3BwICovOyB9OworCQkwNzkyMzE0QTIzOUNCQ0I4MDA5NTk4RTIgLyogUmVtb3Rl
TWVkaWFQbGF5ZXJNYW5hZ2VyTWVzc2FnZXNSZXBsaWVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwNzkyMzE0NDIzOUNCQ0I2MDA5NTk4RTIgLyogUmVt
b3RlTWVkaWFQbGF5ZXJNYW5hZ2VyTWVzc2FnZXNSZXBsaWVzLmggKi87IH07CisJCTA3OTIzMTRC
MjM5Q0JDQjgwMDk1OThFMiAvKiBSZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eU1lc3NhZ2VS
ZWNlaXZlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSAwNzkyMzE0NTIzOUNCQ0I3MDA5NTk4RTIgLyogUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJv
eHlNZXNzYWdlUmVjZWl2ZXIuY3BwICovOyB9OworCQkwNzkyMzE0QzIzOUNCQ0I4MDA5NTk4RTIg
LyogUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHlNZXNzYWdlcy5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDc5MjMxNDYyMzlDQkNCNzAwOTU5OEUy
IC8qIFJlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5TWVzc2FnZXMuaCAqLzsgfTsKKwkJMDc5
MjMxNEQyMzlDQkNCODAwOTU5OEUyIC8qIFJlbW90ZU1lZGlhUGxheWVyTWFuYWdlck1lc3NhZ2Vz
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwNzkyMzE0
NzIzOUNCQ0I3MDA5NTk4RTIgLyogUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyTWVzc2FnZXMuaCAq
LzsgfTsKKwkJMDc5MjMxNEYyMzlENjIzRTAwOTU5OEUyIC8qIE1lZGlhUGxheWVyUHJpdmF0ZVJl
bW90ZUlkZW50aWZpZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDA3OTIzMTRFMjM5RDVGNTMwMDk1OThFMiAvKiBNZWRpYVBsYXllclByaXZhdGVSZW1v
dGVJZGVudGlmaWVyLmggKi87IH07CiAJCTA3QTVFQkJDMUM3QkE0M0UwMEI5Q0E2OSAvKiBXS0Zy
YW1lSGFuZGxlUmVmLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSAwN0E1RUJCQTFDN0JBNDNFMDBCOUNBNjkgLyogV0tGcmFtZUhhbmRsZVJlZi5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTBFOTdENzREMjAw
RTkwMDQwMEJGNjY0MyAvKiBTYWZlQnJvd3NpbmdTUEkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBFOTdENzRDMjAwRThGRjMwMEJGNjY0MyAvKiBTYWZl
QnJvd3NpbmdTUEkuaCAqLzsgfTsKIAkJMEVERTg1MDMyMDA0RTc1RDAwMDMwNTYwIC8qIFdlYnNp
dGVQb3BVcFBvbGljeS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gMEVERTg1MDIyMDA0RTc0OTAwMDMwNTYwIC8qIFdlYnNpdGVQb3BVcFBvbGljeS5oICov
OyB9OwpAQCAtMTk5Niw2ICsyMDAzLDkgQEAKIAkJMDBCOTY2MTUxOEUyNENCQTAwQ0UxRjg4IC8q
IEFQSUZpbmRDbGllbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQVBJRmlu
ZENsaWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwMEI5NjYxNzE4RTI1QUUx
MDBDRTFGODggLyogRmluZENsaWVudC5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNw
cDsgcGF0aCA9IEZpbmRDbGllbnQubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTAw
Qjk2NjE4MThFMjVBRTEwMENFMUY4OCAvKiBGaW5kQ2xpZW50LmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IEZpbmRDbGllbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJMDcyNUVGQUIyMzlBRTM4NDAwQTUzOEE5IC8qIFJlbW90ZU1lZGlhUGxheWVyTWFuYWdlclBy
b3h5Lm1lc3NhZ2VzLmluICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZp
bGVUeXBlID0gdGV4dDsgcGF0aCA9IFJlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5Lm1lc3Nh
Z2VzLmluOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwNzI1RUZBQzIzOUFFMzg1MDBB
NTM4QTkgLyogUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHkuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
UmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJMDcyNUVGQUQyMzlCMDI0NTAwQTUzOEE5IC8qIFJlbW90ZU1lZGlhUGxheWVyTWFuYWdl
clByb3h5LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJlbW90ZU1lZGlhUGxheWVyTWFuYWdlclBy
b3h5LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMDcyOTdGOUMxQzE3MTFFQTAw
M0YwNzM1IC8qIERldmljZUlkSGFzaFNhbHRTdG9yYWdlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IERldmljZUlkSGFzaFNhbHRTdG9yYWdlLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMDcyOTdGOUMxQzE3QkJFQTAwM0YwNzM1IC8qIFVzZXJNZWRp
YVBlcm1pc3Npb25DaGVja1Byb3h5LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IFVzZXJNZWRpYVBlcm1pc3Npb25DaGVja1Byb3h5LmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJMDcyOTdGOUQxQzE3QkJFQTAwM0YwNzM1IC8qIFVzZXJNZWRpYVBlcm1p
c3Npb25DaGVja1Byb3h5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFVzZXJN
ZWRpYVBlcm1pc3Npb25DaGVja1Byb3h5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBA
IC0yMDEwLDYgKzIwMjAsMTggQEAKIAkJMDc0RTc2MDExREY3MDc1RDAwRDMxOEVDIC8qIE1lZGlh
RGV2aWNlU2FuZGJveEV4dGVuc2lvbnMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gTWVkaWFEZXZpY2VTYW5kYm94RXh0ZW5zaW9ucy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQkwNzZFODg0RDFBMTNDQURGMDA1RTkwRkMgLyogQVBJQ29udGV4dE1lbnVDbGllbnQu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQVBJQ29udGV4dE1lbnVDbGllbnQu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMDc2RTg4NEYxQTEzQ0JDNjAwNUU5MEZD
IC8qIEFQSUluamVjdGVkQnVuZGxlUGFnZUNvbnRleHRNZW51Q2xpZW50LmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEFQSUluamVjdGVkQnVuZGxlUGFnZUNvbnRleHRNZW51Q2xp
ZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTA3OTIzMTMwMjM5QjNCMEMwMDk1
OThFMiAvKiBSZW1vdGVNZWRpYVBsYXllck1hbmFnZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
UmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJMDc5MjMxMzEyMzlCM0IwQzAwOTU5OEUyIC8qIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZS5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBNZWRpYVBsYXllclByaXZhdGVSZW1vdGUuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwNzkyMzEzMjIzOUIzQjBDMDA5NTk4RTIgLyogTWVk
aWFQbGF5ZXJQcml2YXRlUmVtb3RlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1lZGlhUGxheWVyUHJpdmF0
ZVJlbW90ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwNzkyMzEzMzIzOUIzQjBD
MDA5NTk4RTIgLyogUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyLm1lc3NhZ2VzLmluICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IFJl
bW90ZU1lZGlhUGxheWVyTWFuYWdlci5tZXNzYWdlcy5pbjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJMDc5MjMxMzQyMzlCM0IwQzAwOTU5OEUyIC8qIFJlbW90ZU1lZGlhUGxheWVyTWFu
YWdlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBSZW1vdGVNZWRpYVBsYXllck1hbmFnZXIuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMDc5MjMxNDIyMzlDQkNCNTAwOTU5OEUyIC8qIFJlbW90
ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5TWVzc2FnZXNSZXBsaWVzLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IFJlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5TWVzc2FnZXNS
ZXBsaWVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTA3OTIzMTQzMjM5Q0JDQjYw
MDk1OThFMiAvKiBSZW1vdGVNZWRpYVBsYXllck1hbmFnZXJNZXNzYWdlUmVjZWl2ZXIuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUmVtb3RlTWVkaWFQbGF5ZXJNYW5h
Z2VyTWVzc2FnZVJlY2VpdmVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMDc5
MjMxNDQyMzlDQkNCNjAwOTU5OEUyIC8qIFJlbW90ZU1lZGlhUGxheWVyTWFuYWdlck1lc3NhZ2Vz
UmVwbGllcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZW1vdGVNZWRpYVBs
YXllck1hbmFnZXJNZXNzYWdlc1JlcGxpZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJMDc5MjMxNDUyMzlDQkNCNzAwOTU5OEUyIC8qIFJlbW90ZU1lZGlhUGxheWVyTWFuYWdlclBy
b3h5TWVzc2FnZVJlY2VpdmVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IFJlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5TWVzc2FnZVJlY2VpdmVyLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMDc5MjMxNDYyMzlDQkNCNzAwOTU5OEUyIC8qIFJl
bW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5TWVzc2FnZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHlNZXNzYWdlcy5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwNzkyMzE0NzIzOUNCQ0I3MDA5NTk4RTIgLyog
UmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyTWVzc2FnZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyTWVzc2FnZXMuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMDc5MjMxNEUyMzlENUY1MzAwOTU5OEUyIC8qIE1lZGlhUGxh
eWVyUHJpdmF0ZVJlbW90ZUlkZW50aWZpZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTWVkaWFQbGF5ZXJQ
cml2YXRlUmVtb3RlSWRlbnRpZmllci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkw
N0E1RUJCOTFDN0JBNDNFMDBCOUNBNjkgLyogV0tGcmFtZUhhbmRsZVJlZi5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXS0ZyYW1lSGFuZGxlUmVmLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMDdBNUVCQkExQzdCQTQzRTAwQjlDQTY5IC8qIFdLRnJh
bWVIYW5kbGVSZWYuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0tGcmFtZUhh
bmRsZVJlZi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwODY3RDZBNUZFODQwMzA3
QzAyQUFDMDcgLyogQXBwS2l0LmZyYW1ld29yayAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBsYXN0S25vd25GaWxlVHlwZSA9IHdyYXBwZXIuZnJhbWV3b3JrOyBuYW1lID0gQXBwS2l0LmZy
YW1ld29yazsgcGF0aCA9IC9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0FwcEtpdC5mcmFtZXdv
cms7IHNvdXJjZVRyZWUgPSAiPGFic29sdXRlPiI7IH07CkBAIC01MDEwLDYgKzUwMzIsMjkgQEAK
IAkJCXRhYldpZHRoID0gODsKIAkJCXVzZXNUYWJzID0gMDsKIAkJfTsKKwkJMDc5MjMxMkYyMzlC
M0IwQzAwOTU5OEUyIC8qIG1lZGlhICovID0geworCQkJaXNhID0gUEJYR3JvdXA7CisJCQljaGls
ZHJlbiA9ICgKKwkJCQkwNzkyMzEzMTIzOUIzQjBDMDA5NTk4RTIgLyogTWVkaWFQbGF5ZXJQcml2
YXRlUmVtb3RlLmNwcCAqLywKKwkJCQkwNzkyMzEzMjIzOUIzQjBDMDA5NTk4RTIgLyogTWVkaWFQ
bGF5ZXJQcml2YXRlUmVtb3RlLmggKi8sCisJCQkJMDc5MjMxNEUyMzlENUY1MzAwOTU5OEUyIC8q
IE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZUlkZW50aWZpZXIuaCAqLywKKwkJCQkwNzkyMzEzMDIz
OUIzQjBDMDA5NTk4RTIgLyogUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyLmNwcCAqLywKKwkJCQkw
NzkyMzEzNDIzOUIzQjBDMDA5NTk4RTIgLyogUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyLmggKi8s
CisJCQkJMDc5MjMxMzMyMzlCM0IwQzAwOTU5OEUyIC8qIFJlbW90ZU1lZGlhUGxheWVyTWFuYWdl
ci5tZXNzYWdlcy5pbiAqLywKKwkJCSk7CisJCQlwYXRoID0gbWVkaWE7CisJCQlzb3VyY2VUcmVl
ID0gIjxncm91cD4iOworCQl9OworCQkwN0M3NUMxNzIzOTlBM0RCMDA4OEU2NUIgLyogbWVkaWEg
Ki8gPSB7CisJCQlpc2EgPSBQQlhHcm91cDsKKwkJCWNoaWxkcmVuID0gKAorCQkJCTA3MjVFRkFE
MjM5QjAyNDUwMEE1MzhBOSAvKiBSZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eS5jcHAgKi8s
CisJCQkJMDcyNUVGQUMyMzlBRTM4NTAwQTUzOEE5IC8qIFJlbW90ZU1lZGlhUGxheWVyTWFuYWdl
clByb3h5LmggKi8sCisJCQkJMDcyNUVGQUIyMzlBRTM4NDAwQTUzOEE5IC8qIFJlbW90ZU1lZGlh
UGxheWVyTWFuYWdlclByb3h5Lm1lc3NhZ2VzLmluICovLAorCQkJKTsKKwkJCXBhdGggPSBtZWRp
YTsKKwkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CisJCX07CiAJCTA4NjdENjkxRkU4NDAyOEZD
MDJBQUMwNyAvKiBXZWJLaXQyICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJl
biA9ICgKQEAgLTYxOTIsNiArNjIzNyw3IEBACiAJCTJEN0U0M0JGMjM3NTJDRDkwMEVBNUNBMCAv
KiBHUFUgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAorCQkJCTA3
OTIzMTJGMjM5QjNCMEMwMDk1OThFMiAvKiBtZWRpYSAqLywKIAkJCQkyRDdFNDNDMDIzNzUyQ0Q5
MDBFQTVDQTAgLyogR1BVUHJvY2Vzc0Nvbm5lY3Rpb24uY3BwICovLAogCQkJCTJEN0U0M0MzMjM3
NTJDRDkwMEVBNUNBMCAvKiBHUFVQcm9jZXNzQ29ubmVjdGlvbi5oICovLAogCQkJCTJEN0U0M0My
MjM3NTJDRDkwMEVBNUNBMCAvKiBHUFVQcm9jZXNzQ29ubmVjdGlvbi5tZXNzYWdlcy5pbiAqLywK
QEAgLTYyMDYsNiArNjI1Miw3IEBACiAJCQkJMkQ5RkIyMEQyMzc1MjA5RDAwNDlGOTM2IC8qIEVu
dHJ5UG9pbnQgKi8sCiAJCQkJMkQ5RkIyMDQyMzc1MjA5RDAwNDlGOTM2IC8qIGlvcyAqLywKIAkJ
CQkyRDlGQjIwNjIzNzUyMDlEMDA0OUY5MzYgLyogbWFjICovLAorCQkJCTA3Qzc1QzE3MjM5OUEz
REIwMDg4RTY1QiAvKiBtZWRpYSAqLywKIAkJCQkyRDlGQjIwQzIzNzUyMDlEMDA0OUY5MzYgLyog
R1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAgKi8sCiAJCQkJMkQ5RkIyMDAyMzc1MjA5RDAw
NDlGOTM2IC8qIEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaCAqLywKIAkJCQkyRDlGQjIwOTIz
NzUyMDlEMDA0OUY5MzYgLyogR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbiAq
LywKQEAgLTkxMTgsNiArOTE2NSwxMiBAQAogCQkJCTFBOEVGQTZGMTI1MkI4NDEwMEY3MDY3RiAv
KiBQbHVnaW5Qcm94eU1lc3NhZ2VzLmggKi8sCiAJCQkJMEZGMjRBMkIxODc5RTRCQzAwM0FCRjBD
IC8qIFJlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhUHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwICov
LAogCQkJCTBGRjI0QTJDMTg3OUU0QkMwMDNBQkYwQyAvKiBSZW1vdGVMYXllclRyZWVEcmF3aW5n
QXJlYVByb3h5TWVzc2FnZXMuaCAqLywKKwkJCQkwNzkyMzE0MzIzOUNCQ0I2MDA5NTk4RTIgLyog
UmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyTWVzc2FnZVJlY2VpdmVyLmNwcCAqLywKKwkJCQkwNzky
MzE0NzIzOUNCQ0I3MDA5NTk4RTIgLyogUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyTWVzc2FnZXMu
aCAqLywKKwkJCQkwNzkyMzE0NDIzOUNCQ0I2MDA5NTk4RTIgLyogUmVtb3RlTWVkaWFQbGF5ZXJN
YW5hZ2VyTWVzc2FnZXNSZXBsaWVzLmggKi8sCisJCQkJMDc5MjMxNDUyMzlDQkNCNzAwOTU5OEUy
IC8qIFJlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5TWVzc2FnZVJlY2VpdmVyLmNwcCAqLywK
KwkJCQkwNzkyMzE0NjIzOUNCQ0I3MDA5NTk4RTIgLyogUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2Vy
UHJveHlNZXNzYWdlcy5oICovLAorCQkJCTA3OTIzMTQyMjM5Q0JDQjUwMDk1OThFMiAvKiBSZW1v
dGVNZWRpYVBsYXllck1hbmFnZXJQcm94eU1lc3NhZ2VzUmVwbGllcy5oICovLAogCQkJCTFBQzEz
MzgzMTg1OTBDNDYwMEYzRUMwNSAvKiBSZW1vdGVPYmplY3RSZWdpc3RyeU1lc3NhZ2VSZWNlaXZl
ci5jcHAgKi8sCiAJCQkJMUFDMTMzODQxODU5MEM0NjAwRjNFQzA1IC8qIFJlbW90ZU9iamVjdFJl
Z2lzdHJ5TWVzc2FnZXMuaCAqLywKIAkJCQkwRjU5NDdBNTE4N0I1MTc2MDA0Mzc4NTcgLyogUmVt
b3RlU2Nyb2xsaW5nQ29vcmRpbmF0b3JNZXNzYWdlUmVjZWl2ZXIuY3BwICovLApAQCAtOTgzNSw2
ICs5ODg4LDcgQEAKIAkJCQlCQ0M1NkY3OTExNTk5NTdEMDAxQ0NBRjkgLyogTWFjaFBvcnQuaCBp
biBIZWFkZXJzICovLAogCQkJCTFBMjRCNUYzMTFGNTMxRTgwMEMzODI2OSAvKiBNYWNoVXRpbGl0
aWVzLmggaW4gSGVhZGVycyAqLywKIAkJCQlDRTFBMEJENTFBNDhFNkM2MDA1NEVGNzQgLyogTWFu
YWdlZENvbmZpZ3VyYXRpb25TUEkuaCBpbiBIZWFkZXJzICovLAorCQkJCTA3OTIzMTRGMjM5RDYy
M0UwMDk1OThFMiAvKiBNZWRpYVBsYXllclByaXZhdGVSZW1vdGVJZGVudGlmaWVyLmggaW4gSGVh
ZGVycyAqLywKIAkJCQk1MTkzM0RFRjE5NjVFQjMxMDA4QUMzRUEgLyogTWVudVV0aWxpdGllcy5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJMUFDNEM4MjkxNkI4NzZBOTAwNjlEQ0NEIC8qIE1lc3NhZ2VG
bGFncy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUEzRUVEMTIxNjFBNTNENjAwQUVCNEY1IC8qIE1l
c3NhZ2VSZWNlaXZlci5oIGluIEhlYWRlcnMgKi8sCkBAIC05OTk1LDYgKzEwMDQ5LDEwIEBACiAJ
CQkJMEZGMjY0QTAxQTFGRjlDQzAwMUZFNzU5IC8qIFJlbW90ZUxheWVyVHJlZVNjcm9sbGluZ1Bl
cmZvcm1hbmNlRGF0YS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUFGMUFDNkMxNjUxNzU5RTAwQzE3
RDdGIC8qIFJlbW90ZUxheWVyVHJlZVRyYW5zYWN0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQky
REMxOEZCMzIxOEE2RTlFMDAyNUE4OEQgLyogUmVtb3RlTGF5ZXJUcmVlVmlld3MuaCBpbiBIZWFk
ZXJzICovLAorCQkJCTA3OTIzMTREMjM5Q0JDQjgwMDk1OThFMiAvKiBSZW1vdGVNZWRpYVBsYXll
ck1hbmFnZXJNZXNzYWdlcy5oIGluIEhlYWRlcnMgKi8sCisJCQkJMDc5MjMxNEEyMzlDQkNCODAw
OTU5OEUyIC8qIFJlbW90ZU1lZGlhUGxheWVyTWFuYWdlck1lc3NhZ2VzUmVwbGllcy5oIGluIEhl
YWRlcnMgKi8sCisJCQkJMDc5MjMxNEMyMzlDQkNCODAwOTU5OEUyIC8qIFJlbW90ZU1lZGlhUGxh
eWVyTWFuYWdlclByb3h5TWVzc2FnZXMuaCBpbiBIZWFkZXJzICovLAorCQkJCTA3OTIzMTQ4MjM5
Q0JDQjgwMDk1OThFMiAvKiBSZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eU1lc3NhZ2VzUmVw
bGllcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTFCNzg0NzExNjNGMjQ2OTAwMDdCNjkyIC8qIFJl
bW90ZU5ldHdvcmtpbmdDb250ZXh0LmggaW4gSGVhZGVycyAqLywKIAkJCQkxQTU3MDRGQzFCRTE3
NTExMDA4NzRBRjEgLyogUmVtb3RlT2JqZWN0SW52b2NhdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJMUFDMTMzODAxODU5MEFFNDAwRjNFQzA1IC8qIFJlbW90ZU9iamVjdFJlZ2lzdHJ5LmggaW4g
SGVhZGVycyAqLywKQEAgLTExNjUyLDYgKzExNzEwLDggQEAKIAkJCQkyRDcyQTFGQTIxMkJGNDZF
MDA1MTdBMjAgLyogUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWEubW0gaW4gU291cmNlcyAqLywK
IAkJCQkwRkYyNEEyRDE4NzlFNEJDMDAzQUJGMEMgLyogUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0Fy
ZWFQcm94eU1lc3NhZ2VSZWNlaXZlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkyREMxOEZCNDIx
OEE2RTlFMDAyNUE4OEQgLyogUmVtb3RlTGF5ZXJUcmVlVmlld3MubW0gaW4gU291cmNlcyAqLywK
KwkJCQkwNzkyMzE0OTIzOUNCQ0I4MDA5NTk4RTIgLyogUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2Vy
TWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTA3OTIzMTRCMjM5Q0JDQjgw
MDk1OThFMiAvKiBSZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eU1lc3NhZ2VSZWNlaXZlci5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQkxQUMxMzM4NTE4NTkwQzQ2MDBGM0VDMDUgLyogUmVtb3Rl
T2JqZWN0UmVnaXN0cnlNZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEY1
OTQ3QTcxODdCNTE3NjAwNDM3ODU3IC8qIFJlbW90ZVNjcm9sbGluZ0Nvb3JkaW5hdG9yTWVzc2Fn
ZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE1NUJBODI2MUJBMjVDRkQwMDdDRDMz
RCAvKiBSZW1vdGVXZWJJbnNwZWN0b3JQcm94eU1lc3NhZ2VSZWNlaXZlci5jcHAgaW4gU291cmNl
cyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvTWVk
aWFQbGF5ZXJQcml2YXRlUmVtb3RlLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUv
bWVkaWEvTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iODc3ODIzNjY4
Yzk3NDRlZWIzMTYzZDJkZDdhNjNkN2ZlNjQ3MDhhCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9NZWRpYVBsYXllclByaXZhdGVSZW1vdGUuY3Bw
CkBAIC0wLDAgKzEsNzY3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
IAorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKworI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykK
KyNpbmNsdWRlICJNZWRpYVBsYXllclByaXZhdGVSZW1vdGUuaCIKKworI2luY2x1ZGUgIkxvZ2dp
bmcuaCIKKyNpbmNsdWRlICJSZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eU1lc3NhZ2VzLmgi
CisjaW5jbHVkZSA8V2ViQ29yZS9Ob3RJbXBsZW1lbnRlZC5oPgorI2luY2x1ZGUgPFdlYkNvcmUv
UGxhdGZvcm1MYXllci5oPgorI2luY2x1ZGUgPFdlYkNvcmUvUGxhdGZvcm1UaW1lUmFuZ2VzLmg+
CisjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KKyNpbmNsdWRlIDx3dGYvTWFpblRocmVhZC5oPgor
I2luY2x1ZGUgPHd0Zi9TdHJpbmdQcmludFN0cmVhbS5oPgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4K
KyNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CisKK25hbWVzcGFjZSBXZWJLaXQgewordXNp
bmcgbmFtZXNwYWNlIFBBTDsKK3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOworCitNZWRpYVBsYXll
clByaXZhdGVSZW1vdGU6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZShNZWRpYVBsYXllciogcGxh
eWVyLCBNZWRpYVBsYXllckVudW1zOjpNZWRpYUVuZ2luZUlkZW50aWZpZXIgZW5naW5lSWRlbnRp
ZmllciwgTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlSWRlbnRpZmllciBwbGF5ZXJJZGVudGlmaWVy
LCBSZW1vdGVNZWRpYVBsYXllck1hbmFnZXImIG1hbmFnZXIpCisgICAgOiBtX3BsYXllcihwbGF5
ZXIpCisgICAgLCBtX21hbmFnZXIobWFuYWdlcikKKyAgICAsIG1fcmVtb3RlRW5naW5lSWRlbnRp
ZmllcihlbmdpbmVJZGVudGlmaWVyKQorICAgICwgbV9pZGVudGlmaWVyKHBsYXllcklkZW50aWZp
ZXIpCisjaWYgIVJFTEVBU0VfTE9HX0RJU0FCTEVECisgICAgLCBtX2xvZ2dlcihwbGF5ZXItPm1l
ZGlhUGxheWVyTG9nZ2VyKCkpCisgICAgLCBtX2xvZ0lkZW50aWZpZXIocGxheWVyLT5tZWRpYVBs
YXllckxvZ0lkZW50aWZpZXIoKSkKKyNlbmRpZgoreworICAgIElORk9fTE9HKExPR0lERU5USUZJ
RVIpOworfQorCitNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6On5NZWRpYVBsYXllclByaXZhdGVS
ZW1vdGUoKQoreworICAgIElORk9fTE9HKExPR0lERU5USUZJRVIpOworICAgIG1fcGxheWVyID0g
bnVsbHB0cjsKK30KKwordm9pZCBNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6Ok1lZGlhUGxheWVy
UHJpdmF0ZVJlbW90ZTo6bG9hZChjb25zdCBTdHJpbmcmKQoreworICAgIG5vdEltcGxlbWVudGVk
KCk7Cit9CisKKyNpZiBFTkFCTEUoTUVESUFfU09VUkNFKQordm9pZCBNZWRpYVBsYXllclByaXZh
dGVSZW1vdGU6OmxvYWQoY29uc3QgU3RyaW5nJiwgTWVkaWFTb3VyY2VQcml2YXRlQ2xpZW50KikK
K3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorI2VuZGlmCisKKyNpZiBFTkFCTEUoTUVESUFf
U1RSRUFNKQordm9pZCBNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OmxvYWQoTWVkaWFTdHJlYW1Q
cml2YXRlJikKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorI2VuZGlmCit2b2lkIE1lZGlh
UGxheWVyUHJpdmF0ZVJlbW90ZTo6Y2FuY2VsTG9hZCgpCit7CisgICAgbm90SW1wbGVtZW50ZWQo
KTsKK30KKworCit2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6cHJlcGFyZVRvUGxheSgp
Cit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKworUGxhdGZvcm1MYXllciogTWVkaWFQbGF5
ZXJQcml2YXRlUmVtb3RlOjpwbGF0Zm9ybUxheWVyKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbnVs
bHB0cjsKK30KKworI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpIHx8IChQTEFURk9STShNQUMpICYm
IEVOQUJMRShWSURFT19QUkVTRU5UQVRJT05fTU9ERSkpCit2b2lkIE1lZGlhUGxheWVyUHJpdmF0
ZVJlbW90ZTo6c2V0VmlkZW9GdWxsc2NyZWVuTGF5ZXIoUGxhdGZvcm1MYXllciosIFdURjo6RnVu
Y3Rpb248dm9pZCgpPiYmKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKK3ZvaWQgTWVk
aWFQbGF5ZXJQcml2YXRlUmVtb3RlOjp1cGRhdGVWaWRlb0Z1bGxzY3JlZW5JbmxpbmVJbWFnZSgp
Cit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwordm9pZCBNZWRpYVBsYXllclByaXZhdGVS
ZW1vdGU6OnNldFZpZGVvRnVsbHNjcmVlbkZyYW1lKEZsb2F0UmVjdCkKK3sKKyAgICBub3RJbXBs
ZW1lbnRlZCgpOworfQorCit2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6c2V0VmlkZW9G
dWxsc2NyZWVuR3Jhdml0eShNZWRpYVBsYXllcjo6VmlkZW9HcmF2aXR5KQoreworICAgIG5vdElt
cGxlbWVudGVkKCk7Cit9CisKK3ZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpzZXRWaWRl
b0Z1bGxzY3JlZW5Nb2RlKE1lZGlhUGxheWVyOjpWaWRlb0Z1bGxzY3JlZW5Nb2RlKQoreworICAg
IG5vdEltcGxlbWVudGVkKCk7Cit9CisKK3ZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjp2
aWRlb0Z1bGxzY3JlZW5TdGFuZGJ5Q2hhbmdlZCgpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsK
K30KKyNlbmRpZgorCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKK05TQXJyYXkqIE1lZGlhUGxh
eWVyUHJpdmF0ZVJlbW90ZTo6dGltZWRNZXRhZGF0YSgpIGNvbnN0Cit7CisgICAgbm90SW1wbGVt
ZW50ZWQoKTsKKyAgICByZXR1cm4gbnVsbHB0cjsKK30KKworU3RyaW5nIE1lZGlhUGxheWVyUHJp
dmF0ZVJlbW90ZTo6YWNjZXNzTG9nKCkgY29uc3QKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOwor
ICAgIHJldHVybiBlbXB0eVN0cmluZygpOworfQorCitTdHJpbmcgTWVkaWFQbGF5ZXJQcml2YXRl
UmVtb3RlOjplcnJvckxvZygpIGNvbnN0Cit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICBy
ZXR1cm4gZW1wdHlTdHJpbmcoKTsKK30KKyNlbmRpZgorCitsb25nIE1lZGlhUGxheWVyUHJpdmF0
ZVJlbW90ZTo6cGxhdGZvcm1FcnJvckNvZGUoKSBjb25zdAoreworICAgIG5vdEltcGxlbWVudGVk
KCk7CisgICAgcmV0dXJuIDA7Cit9CisKK3ZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpw
bGF5KCkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCit2b2lkIE1lZGlhUGxheWVyUHJp
dmF0ZVJlbW90ZTo6cGF1c2UoKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKK3ZvaWQg
TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpzZXRCdWZmZXJpbmdQb2xpY3koTWVkaWFQbGF5ZXI6
OkJ1ZmZlcmluZ1BvbGljeSkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCitib29sIE1l
ZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6c3VwcG9ydHNQaWN0dXJlSW5QaWN0dXJlKCkgY29uc3QK
K3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiBmYWxzZTsKK30KKworYm9vbCBN
ZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OnN1cHBvcnRzRnVsbHNjcmVlbigpIGNvbnN0Cit7Cisg
ICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK2Jvb2wgTWVkaWFQ
bGF5ZXJQcml2YXRlUmVtb3RlOjpzdXBwb3J0c1NjYW5uaW5nKCkgY29uc3QKK3sKKyAgICBub3RJ
bXBsZW1lbnRlZCgpOworICAgIHJldHVybiBmYWxzZTsKK30KKworYm9vbCBNZWRpYVBsYXllclBy
aXZhdGVSZW1vdGU6OnJlcXVpcmVzSW1tZWRpYXRlQ29tcG9zaXRpbmcoKSBjb25zdAoreworICAg
IG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIGZhbHNlOworfQorCitib29sIE1lZGlhUGxh
eWVyUHJpdmF0ZVJlbW90ZTo6Y2FuU2F2ZU1lZGlhRGF0YSgpIGNvbnN0Cit7CisgICAgbm90SW1w
bGVtZW50ZWQoKTsKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK0Zsb2F0U2l6ZSBNZWRpYVBsYXll
clByaXZhdGVSZW1vdGU6Om5hdHVyYWxTaXplKCkgY29uc3QKK3sKKyAgICBub3RJbXBsZW1lbnRl
ZCgpOworICAgIHJldHVybiB7IH07Cit9CisKK2Jvb2wgTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3Rl
OjpoYXNWaWRlbygpIGNvbnN0Cit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4g
ZmFsc2U7Cit9CisKK2Jvb2wgTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpoYXNBdWRpbygpIGNv
bnN0Cit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK3Zv
aWQgTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpzZXRWaXNpYmxlKGJvb2wpCit7CisgICAgbm90
SW1wbGVtZW50ZWQoKTsKK30KKworTWVkaWFUaW1lIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6
TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpkdXJhdGlvbk1lZGlhVGltZSgpIGNvbnN0Cit7Cisg
ICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gTWVkaWFUaW1lOjp6ZXJvVGltZSgpOwor
fQorCitNZWRpYVRpbWUgTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpjdXJyZW50TWVkaWFUaW1l
KCkgY29uc3QKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiBNZWRpYVRpbWU6
Onplcm9UaW1lKCk7Cit9CisKK01lZGlhVGltZSBNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6Omdl
dFN0YXJ0RGF0ZSgpIGNvbnN0Cit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4g
TWVkaWFUaW1lOjp6ZXJvVGltZSgpOworfQorCit2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90
ZTo6c2Vlayhjb25zdCBNZWRpYVRpbWUmKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisK
K3ZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpzZWVrV2l0aFRvbGVyYW5jZShjb25zdCBN
ZWRpYVRpbWUmLCBjb25zdCBNZWRpYVRpbWUmLCBjb25zdCBNZWRpYVRpbWUmKQoreworICAgIG5v
dEltcGxlbWVudGVkKCk7Cit9CisKK2Jvb2wgTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpzZWVr
aW5nKCkgY29uc3QKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiBmYWxzZTsK
K30KKworTWVkaWFUaW1lIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6c3RhcnRUaW1lKCkgY29u
c3QKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiBNZWRpYVRpbWU6Onplcm9U
aW1lKCk7Cit9CisKK3ZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpzZXRSYXRlRG91Ymxl
KGRvdWJsZSkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCitkb3VibGUgTWVkaWFQbGF5
ZXJQcml2YXRlUmVtb3RlOjpyYXRlKCkgY29uc3QKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOwor
ICAgIHJldHVybiAwOworfQorCit2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6c2V0UHJl
c2VydmVzUGl0Y2goYm9vbCkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCitib29sIE1l
ZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6cGF1c2VkKCkgY29uc3QKK3sKKyAgICBub3RJbXBsZW1l
bnRlZCgpOworICAgIHJldHVybiBmYWxzZTsKK30KKwordm9pZCBNZWRpYVBsYXllclByaXZhdGVS
ZW1vdGU6OnNldFZvbHVtZURvdWJsZShkb3VibGUpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsK
K30KKwordm9pZCBNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OnNldE11dGVkKGJvb2wpCit7Cisg
ICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKworYm9vbCBNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6
Omhhc0Nsb3NlZENhcHRpb25zKCkgY29uc3QKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAg
IHJldHVybiBmYWxzZTsKK30KKwordm9pZCBNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OnNldENs
b3NlZENhcHRpb25zVmlzaWJsZShib29sKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisK
K2RvdWJsZSBNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6Om1heEZhc3RGb3J3YXJkUmF0ZSgpIGNv
bnN0Cit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gMDsKK30KKworZG91Ymxl
IE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6bWluRmFzdFJldmVyc2VSYXRlKCkgY29uc3QKK3sK
KyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiAwOworfQorCitNZWRpYVBsYXllcjo6
TmV0d29ya1N0YXRlIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6bmV0d29ya1N0YXRlKCkgY29u
c3QKK3sKKyAgICBpZiAobV9pbnZhbGlkKQorICAgICAgICByZXR1cm4gTWVkaWFQbGF5ZXI6OkZv
cm1hdEVycm9yOworCisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gTWVkaWFQbGF5
ZXI6OkVtcHR5OworfQorCitNZWRpYVBsYXllcjo6UmVhZHlTdGF0ZSBNZWRpYVBsYXllclByaXZh
dGVSZW1vdGU6OnJlYWR5U3RhdGUoKSBjb25zdAoreworICAgIGlmIChtX2ludmFsaWQpCisgICAg
ICAgIHJldHVybiBNZWRpYVBsYXllcjo6SGF2ZU5vdGhpbmc7CisKKyAgICBub3RJbXBsZW1lbnRl
ZCgpOworICAgIHJldHVybiBNZWRpYVBsYXllcjo6SGF2ZU5vdGhpbmc7Cit9CisKK3N0ZDo6dW5p
cXVlX3B0cjxQbGF0Zm9ybVRpbWVSYW5nZXM+IE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6c2Vl
a2FibGUoKSBjb25zdAoreworICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIG1ha2VV
bmlxdWU8UGxhdGZvcm1UaW1lUmFuZ2VzPigpOworfQorCitzdGQ6OnVuaXF1ZV9wdHI8UGxhdGZv
cm1UaW1lUmFuZ2VzPiBNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OmJ1ZmZlcmVkKCkgY29uc3QK
K3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiBtYWtlVW5pcXVlPFBsYXRmb3Jt
VGltZVJhbmdlcz4oKTsKK30KKworTWVkaWFUaW1lIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6
bWF4TWVkaWFUaW1lU2Vla2FibGUoKSBjb25zdAoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cisg
ICAgcmV0dXJuIE1lZGlhVGltZTo6emVyb1RpbWUoKTsKK30KKworTWVkaWFUaW1lIE1lZGlhUGxh
eWVyUHJpdmF0ZVJlbW90ZTo6bWluTWVkaWFUaW1lU2Vla2FibGUoKSBjb25zdAoreworICAgIG5v
dEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIE1lZGlhVGltZTo6emVyb1RpbWUoKTsKK30KKwor
ZG91YmxlIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6c2Vla2FibGVUaW1lUmFuZ2VzTGFzdE1v
ZGlmaWVkVGltZSgpIGNvbnN0Cit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4g
MDsKK30KKworZG91YmxlIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6bGl2ZVVwZGF0ZUludGVy
dmFsKCkgY29uc3QKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiAwOworfQor
Cit1bnNpZ25lZCBsb25nIGxvbmcgTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjp0b3RhbEJ5dGVz
KCkgY29uc3QKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiAwOworfQorCiti
b29sIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6ZGlkTG9hZGluZ1Byb2dyZXNzKCkgY29uc3QK
K3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiBmYWxzZTsKK30KKwordm9pZCBN
ZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OnNldFNpemUoY29uc3QgSW50U2l6ZSYpCit7CisgICAg
bm90SW1wbGVtZW50ZWQoKTsKK30KKwordm9pZCBNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OnBh
aW50KEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYpCit7CisgICAgbm90SW1wbGVt
ZW50ZWQoKTsKK30KKwordm9pZCBNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OnBhaW50Q3VycmVu
dEZyYW1lSW5Db250ZXh0KEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYpCit7Cisg
ICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKworYm9vbCBNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6
OmNvcHlWaWRlb1RleHR1cmVUb1BsYXRmb3JtVGV4dHVyZShHcmFwaGljc0NvbnRleHQzRCosIFBs
YXRmb3JtM0RPYmplY3QsIEdDM0RlbnVtLCBHQzNEaW50LCBHQzNEZW51bSwgR0MzRGVudW0sIEdD
M0RlbnVtLCBib29sLCBib29sKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJu
IGZhbHNlOworfQorCitOYXRpdmVJbWFnZVB0ciBNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6Om5h
dGl2ZUltYWdlRm9yQ3VycmVudFRpbWUoKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAg
cmV0dXJuIG51bGxwdHI7Cit9CisKK3ZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpzZXRQ
cmVsb2FkKE1lZGlhUGxheWVyOjpQcmVsb2FkKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9
CisKK2Jvb2wgTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpoYXNBdmFpbGFibGVWaWRlb0ZyYW1l
KCkgY29uc3QKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiBmYWxzZTsKK30K
KworYm9vbCBNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OmNhbkxvYWRQb3N0ZXIoKSBjb25zdAor
eworICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIGZhbHNlOworfQorCit2b2lkIE1l
ZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6c2V0UG9zdGVyKGNvbnN0IFN0cmluZyYpCit7CisgICAg
bm90SW1wbGVtZW50ZWQoKTsKK30KKworI2lmIFVTRShOQVRJVkVfRlVMTFNDUkVFTl9WSURFTykK
K3ZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjplbnRlckZ1bGxzY3JlZW4oKQoreworICAg
IG5vdEltcGxlbWVudGVkKCk7Cit9CisKK3ZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpl
eGl0RnVsbHNjcmVlbigpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKyNlbmRpZgorCisj
aWYgRU5BQkxFKFdJUkVMRVNTX1BMQVlCQUNLX1RBUkdFVCkKK1N0cmluZyBNZWRpYVBsYXllclBy
aXZhdGVSZW1vdGU6OndpcmVsZXNzUGxheWJhY2tUYXJnZXROYW1lKCkgY29uc3QKK3sKKyAgICBu
b3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiBlbXB0eVN0cmluZygpOworfQorCitNZWRpYVBs
YXllcjo6V2lyZWxlc3NQbGF5YmFja1RhcmdldFR5cGUgTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3Rl
Ojp3aXJlbGVzc1BsYXliYWNrVGFyZ2V0VHlwZSgpIGNvbnN0Cit7CisgICAgbm90SW1wbGVtZW50
ZWQoKTsKKyAgICByZXR1cm4gTWVkaWFQbGF5ZXI6OlRhcmdldFR5cGVOb25lOworfQorCitib29s
IE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6d2lyZWxlc3NWaWRlb1BsYXliYWNrRGlzYWJsZWQo
KSBjb25zdAoreworICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIHRydWU7Cit9CisK
K3ZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpzZXRXaXJlbGVzc1ZpZGVvUGxheWJhY2tE
aXNhYmxlZChib29sKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKK2Jvb2wgTWVkaWFQ
bGF5ZXJQcml2YXRlUmVtb3RlOjpjYW5QbGF5VG9XaXJlbGVzc1BsYXliYWNrVGFyZ2V0KCkgY29u
c3QKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiBmYWxzZTsKK30KKworYm9v
bCBNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OmlzQ3VycmVudFBsYXliYWNrVGFyZ2V0V2lyZWxl
c3MoKSBjb25zdAoreworICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIGZhbHNlOwor
fQorCit2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6c2V0V2lyZWxlc3NQbGF5YmFja1Rh
cmdldChSZWY8TWVkaWFQbGF5YmFja1RhcmdldD4mJikKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgp
OworfQorCit2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6c2V0U2hvdWxkUGxheVRvUGxh
eWJhY2tUYXJnZXQoYm9vbCkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorI2VuZGlmCisK
KyNpZiBVU0UoTkFUSVZFX0ZVTExTQ1JFRU5fVklERU8pCitib29sIE1lZGlhUGxheWVyUHJpdmF0
ZVJlbW90ZTo6Y2FuRW50ZXJGdWxsc2NyZWVuKCkgY29uc3QKK3sKKyAgICBub3RJbXBsZW1lbnRl
ZCgpOworICAgIHJldHVybiBmYWxzZTsKK30KKyNlbmRpZgorCitib29sIE1lZGlhUGxheWVyUHJp
dmF0ZVJlbW90ZTo6c3VwcG9ydHNBY2NlbGVyYXRlZFJlbmRlcmluZygpIGNvbnN0Cit7CisgICAg
bm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK3ZvaWQgTWVkaWFQbGF5
ZXJQcml2YXRlUmVtb3RlOjphY2NlbGVyYXRlZFJlbmRlcmluZ1N0YXRlQ2hhbmdlZCgpCit7Cisg
ICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKworYm9vbCBNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6
OnNob3VsZE1haW50YWluQXNwZWN0UmF0aW8oKSBjb25zdAoreworICAgIG5vdEltcGxlbWVudGVk
KCk7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK3ZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3Rl
OjpzZXRTaG91bGRNYWludGFpbkFzcGVjdFJhdGlvKGJvb2wpCit7CisgICAgbm90SW1wbGVtZW50
ZWQoKTsKK30KKworYm9vbCBNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6Omhhc1NpbmdsZVNlY3Vy
aXR5T3JpZ2luKCkgY29uc3QKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiBm
YWxzZTsKK30KKworYm9vbCBNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OmRpZFBhc3NDT1JTQWNj
ZXNzQ2hlY2soKSBjb25zdAoreworICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIGZh
bHNlOworfQorCitPcHRpb25hbDxib29sPiBNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OndvdWxk
VGFpbnRPcmlnaW4oY29uc3QgU2VjdXJpdHlPcmlnaW4mKSBjb25zdAoreworICAgIG5vdEltcGxl
bWVudGVkKCk7CisgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKK30KKworTWVkaWFQbGF5ZXI6Ok1v
dmllTG9hZFR5cGUgTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjptb3ZpZUxvYWRUeXBlKCkgY29u
c3QKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiBNZWRpYVBsYXllcjo6VW5r
bm93bjsKK30KKwordm9pZCBNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OnByZXBhcmVGb3JSZW5k
ZXJpbmcoKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKK01lZGlhVGltZSBNZWRpYVBs
YXllclByaXZhdGVSZW1vdGU6Om1lZGlhVGltZUZvclRpbWVWYWx1ZShjb25zdCBNZWRpYVRpbWUm
IHRpbWVWYWx1ZSkgY29uc3QKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiB0
aW1lVmFsdWU7Cit9CisKK2RvdWJsZSBNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6Om1heGltdW1E
dXJhdGlvblRvQ2FjaGVNZWRpYVRpbWUoKSBjb25zdAoreworICAgIG5vdEltcGxlbWVudGVkKCk7
CisgICAgcmV0dXJuIDA7Cit9CisKK3Vuc2lnbmVkIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6
ZGVjb2RlZEZyYW1lQ291bnQoKSBjb25zdAoreworICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAg
cmV0dXJuIDA7Cit9CisKK3Vuc2lnbmVkIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6ZHJvcHBl
ZEZyYW1lQ291bnQoKSBjb25zdAoreworICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJu
IDA7Cit9CisKK3Vuc2lnbmVkIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6YXVkaW9EZWNvZGVk
Qnl0ZUNvdW50KCkgY29uc3QKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiAw
OworfQorCit1bnNpZ25lZCBNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OnZpZGVvRGVjb2RlZEJ5
dGVDb3VudCgpIGNvbnN0Cit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gMDsK
K30KKwordm9pZCBNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OnNldFByaXZhdGVCcm93c2luZ01v
ZGUoYm9vbCkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCitTdHJpbmcgTWVkaWFQbGF5
ZXJQcml2YXRlUmVtb3RlOjplbmdpbmVEZXNjcmlwdGlvbigpIGNvbnN0Cit7CisgICAgbm90SW1w
bGVtZW50ZWQoKTsKKyAgICByZXR1cm4gZW1wdHlTdHJpbmcoKTsKK30KKworI2lmIEVOQUJMRShX
RUJfQVVESU8pCitBdWRpb1NvdXJjZVByb3ZpZGVyKiBNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6
OmF1ZGlvU291cmNlUHJvdmlkZXIoKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0
dXJuIG51bGxwdHI7Cit9CisjZW5kaWYKKworI2lmIEVOQUJMRShMRUdBQ1lfRU5DUllQVEVEX01F
RElBKQorc3RkOjp1bmlxdWVfcHRyPExlZ2FjeUNETVNlc3Npb24+IE1lZGlhUGxheWVyUHJpdmF0
ZVJlbW90ZTo6Y3JlYXRlU2Vzc2lvbihjb25zdCBTdHJpbmcmLCBMZWdhY3lDRE1TZXNzaW9uQ2xp
ZW50KikKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiBudWxscHRyOworfQor
Cit2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6c2V0Q0RNU2Vzc2lvbihMZWdhY3lDRE1T
ZXNzaW9uKikKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCit2b2lkIE1lZGlhUGxheWVy
UHJpdmF0ZVJlbW90ZTo6a2V5QWRkZWQoKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9Cisj
ZW5kaWYKKworI2lmIEVOQUJMRShFTkNSWVBURURfTUVESUEpCit2b2lkIE1lZGlhUGxheWVyUHJp
dmF0ZVJlbW90ZTo6Y2RtSW5zdGFuY2VBdHRhY2hlZChDRE1JbnN0YW5jZSYpCit7CisgICAgbm90
SW1wbGVtZW50ZWQoKTsKK30KKwordm9pZCBNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OmNkbUlu
c3RhbmNlRGV0YWNoZWQoQ0RNSW5zdGFuY2UmKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9
CisKK3ZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjphdHRlbXB0VG9EZWNyeXB0V2l0aElu
c3RhbmNlKENETUluc3RhbmNlJikKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCitib29s
IE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6d2FpdGluZ0ZvcktleSgpIGNvbnN0Cit7CisgICAg
bm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gZmFsc2U7Cit9CisjZW5kaWYKKworI2lmIEVO
QUJMRShWSURFT19UUkFDSykKK2Jvb2wgTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpyZXF1aXJl
c1RleHRUcmFja1JlcHJlc2VudGF0aW9uKCkgY29uc3QKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgp
OworICAgIHJldHVybiBmYWxzZTsKK30KKwordm9pZCBNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6
OnNldFRleHRUcmFja1JlcHJlc2VudGF0aW9uKFRleHRUcmFja1JlcHJlc2VudGF0aW9uKikKK3sK
KyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCit2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90
ZTo6c3luY1RleHRUcmFja0JvdW5kcygpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwor
dm9pZCBNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OnRyYWNrc0NoYW5nZWQoKQoreworICAgIG5v
dEltcGxlbWVudGVkKCk7Cit9CisjZW5kaWYKKworI2lmIFVTRShHU1RSRUFNRVIpCit2b2lkIE1l
ZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6c2ltdWxhdGVBdWRpb0ludGVycnVwdGlvbigpCit7Cisg
ICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKyNlbmRpZgorCit2b2lkIE1lZGlhUGxheWVyUHJpdmF0
ZVJlbW90ZTo6YmVnaW5TaW11bGF0ZWRIRENQRXJyb3IoKQoreworICAgIG5vdEltcGxlbWVudGVk
KCk7Cit9CisKK3ZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjplbmRTaW11bGF0ZWRIRENQ
RXJyb3IoKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKK1N0cmluZyBNZWRpYVBsYXll
clByaXZhdGVSZW1vdGU6Omxhbmd1YWdlT2ZQcmltYXJ5QXVkaW9UcmFjaygpIGNvbnN0Cit7Cisg
ICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gZW1wdHlTdHJpbmcoKTsKK30KKworc2l6
ZV90IE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6ZXh0cmFNZW1vcnlDb3N0KCkgY29uc3QKK3sK
KyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiAwOworfQorCit1bnNpZ25lZCBsb25n
IGxvbmcgTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpmaWxlU2l6ZSgpIGNvbnN0Cit7CisgICAg
bm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gMDsKK30KKworYm9vbCBNZWRpYVBsYXllclBy
aXZhdGVSZW1vdGU6OmVuZGVkKCkgY29uc3QKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAg
IHJldHVybiBmYWxzZTsKK30KKworT3B0aW9uYWw8VmlkZW9QbGF5YmFja1F1YWxpdHlNZXRyaWNz
PiBNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OnZpZGVvUGxheWJhY2tRdWFsaXR5TWV0cmljcygp
Cit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gV1RGOjpudWxsb3B0OworfQor
CisjaWYgRU5BQkxFKEFWRl9DQVBUSU9OUykKK3ZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3Rl
Ojpub3RpZnlUcmFja01vZGVDaGFuZ2VkKCkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQor
I2VuZGlmCisKK3ZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpub3RpZnlBY3RpdmVTb3Vy
Y2VCdWZmZXJzQ2hhbmdlZCgpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwordm9pZCBN
ZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OnNldFNob3VsZERpc2FibGVTbGVlcChib29sKQorewor
ICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKK3ZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3Rl
OjphcHBsaWNhdGlvbldpbGxSZXNpZ25BY3RpdmUoKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7
Cit9CisKK3ZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjphcHBsaWNhdGlvbkRpZEJlY29t
ZUFjdGl2ZSgpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKworYm9vbCBNZWRpYVBsYXll
clByaXZhdGVSZW1vdGU6OnBlcmZvcm1UYXNrQXRNZWRpYVRpbWUoV1RGOjpGdW5jdGlvbjx2b2lk
KCk+JiYsIE1lZGlhVGltZSkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiBm
YWxzZTsKK30KKworYm9vbCBNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OnNob3VsZElnbm9yZUlu
dHJpbnNpY1NpemUoKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIGZhbHNl
OworfQorCisjaWYgIVJFTEVBU0VfTE9HX0RJU0FCTEVECitXVEZMb2dDaGFubmVsJiBNZWRpYVBs
YXllclByaXZhdGVSZW1vdGU6OmxvZ0NoYW5uZWwoKSBjb25zdAoreworICAgIHJldHVybiBXZWJL
aXQyTG9nV2ViUlRDOworfQorI2VuZGlmCisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2Vu
ZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL01lZGlh
UGxheWVyUHJpdmF0ZVJlbW90ZS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRp
YS9NZWRpYVBsYXllclByaXZhdGVSZW1vdGUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mNWUxYTY1NTZlNjZjMTll
ZmVhZjUyM2M4MDBjOGNmNTZhM2VhOTNkCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9NZWRpYVBsYXllclByaXZhdGVSZW1vdGUuaApAQCAtMCww
ICsxLDI5OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
CisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLwor
CisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykKKworI2luY2x1ZGUgIlJl
bW90ZU1lZGlhUGxheWVyTWFuYWdlci5oIgorI2luY2x1ZGUgPFdlYkNvcmUvTWVkaWFQbGF5ZXJQ
cml2YXRlLmg+CisjaW5jbHVkZSA8d3RmL0xvZ2dlckhlbHBlci5oPgorI2luY2x1ZGUgPHd0Zi9N
ZWRpYVRpbWUuaD4KKyNpbmNsdWRlIDx3dGYvV2Vha1B0ci5oPgorCituYW1lc3BhY2UgV2ViS2l0
IHsKKworY2xhc3MgTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlIGZpbmFsCisgICAgOiBwdWJsaWMg
Q2FuTWFrZVdlYWtQdHI8TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlPgorICAgICwgcHVibGljIE1l
ZGlhUGxheWVyUHJpdmF0ZUludGVyZmFjZQorI2lmICFSRUxFQVNFX0xPR19ESVNBQkxFRAorICAg
ICwgcHJpdmF0ZSBMb2dnZXJIZWxwZXIKKyNlbmRpZgoreworcHVibGljOgorICAgIHN0YXRpYyBz
dGQ6OnVuaXF1ZV9wdHI8TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlPiBjcmVhdGUoTWVkaWFQbGF5
ZXIqIHBsYXllciwgTWVkaWFQbGF5ZXJFbnVtczo6TWVkaWFFbmdpbmVJZGVudGlmaWVyIHJlbW90
ZUVuZ2luZUlkZW50aWZpZXIsIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZUlkZW50aWZpZXIgaWRl
bnRpZmllciwgUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyJiBtYW5hZ2VyKQorICAgIHsKKyAgICAg
ICAgcmV0dXJuIG1ha2VVbmlxdWU8TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlPihwbGF5ZXIsIHJl
bW90ZUVuZ2luZUlkZW50aWZpZXIsIGlkZW50aWZpZXIsIG1hbmFnZXIpOworICAgIH0KKworICAg
IGV4cGxpY2l0IE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZShNZWRpYVBsYXllciosIE1lZGlhUGxh
eWVyRW51bXM6Ok1lZGlhRW5naW5lSWRlbnRpZmllciwgTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3Rl
SWRlbnRpZmllciwgUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyJik7CisgICAgdmlydHVhbCB+TWVk
aWFQbGF5ZXJQcml2YXRlUmVtb3RlKCk7CisKKyAgICB2b2lkIGludmFsaWRhdGUoKSB7IG1faW52
YWxpZCA9IHRydWU7IH0KKyAgICBNZWRpYVBsYXllckVudW1zOjpNZWRpYUVuZ2luZUlkZW50aWZp
ZXIgcmVtb3RlRW5naW5lSWRlbnRpZmllcigpIGNvbnN0IHsgcmV0dXJuIG1fcmVtb3RlRW5naW5l
SWRlbnRpZmllcjsgfQorICAgIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZUlkZW50aWZpZXIgcGxh
eWVySXRlbnRpZmllcigpIGNvbnN0IHsgcmV0dXJuIG1faWRlbnRpZmllcjsgfQorCisjaWYgIVJF
TEVBU0VfTE9HX0RJU0FCTEVECisgICAgY29uc3QgTG9nZ2VyJiBsb2dnZXIoKSBjb25zdCBmaW5h
bCB7IHJldHVybiBtX2xvZ2dlci5nZXQoKTsgfQorICAgIGNvbnN0IGNoYXIqIGxvZ0NsYXNzTmFt
ZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuICJNZWRpYVBsYXllclByaXZhdGVSZW1vdGUiOyB9
CisgICAgY29uc3Qgdm9pZCogbG9nSWRlbnRpZmllcigpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIHJl
aW50ZXJwcmV0X2Nhc3Q8Y29uc3Qgdm9pZCo+KG1fbG9nSWRlbnRpZmllcik7IH0KKyAgICBXVEZM
b2dDaGFubmVsJiBsb2dDaGFubmVsKCkgY29uc3QgZmluYWw7CisjZW5kaWYKKworcHJpdmF0ZToK
KworICAgIHZvaWQgbG9hZChjb25zdCBTdHJpbmcmKSBmaW5hbDsKKyNpZiBFTkFCTEUoTUVESUFf
U09VUkNFKQorICAgIHZvaWQgbG9hZChjb25zdCBTdHJpbmcmLCBNZWRpYVNvdXJjZVByaXZhdGVD
bGllbnQqKSBmaW5hbDsKKyNlbmRpZgorI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCisgICAgdm9p
ZCBsb2FkKE1lZGlhU3RyZWFtUHJpdmF0ZSYpIGZpbmFsOworI2VuZGlmCisgICAgdm9pZCBjYW5j
ZWxMb2FkKCkgZmluYWw7CisgICAgCisgICAgdm9pZCBwcmVwYXJlVG9QbGF5KCkgZmluYWw7Cisg
ICAgUGxhdGZvcm1MYXllciogcGxhdGZvcm1MYXllcigpIGNvbnN0IGZpbmFsOworCisjaWYgUExB
VEZPUk0oSU9TX0ZBTUlMWSkgfHwgKFBMQVRGT1JNKE1BQykgJiYgRU5BQkxFKFZJREVPX1BSRVNF
TlRBVElPTl9NT0RFKSkKKyAgICB2b2lkIHNldFZpZGVvRnVsbHNjcmVlbkxheWVyKFBsYXRmb3Jt
TGF5ZXIqLCBXVEY6OkZ1bmN0aW9uPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikgZmluYWw7
CisgICAgdm9pZCB1cGRhdGVWaWRlb0Z1bGxzY3JlZW5JbmxpbmVJbWFnZSgpIGZpbmFsOworICAg
IHZvaWQgc2V0VmlkZW9GdWxsc2NyZWVuRnJhbWUoRmxvYXRSZWN0KSBmaW5hbDsKKyAgICB2b2lk
IHNldFZpZGVvRnVsbHNjcmVlbkdyYXZpdHkoTWVkaWFQbGF5ZXI6OlZpZGVvR3Jhdml0eSkgZmlu
YWw7CisgICAgdm9pZCBzZXRWaWRlb0Z1bGxzY3JlZW5Nb2RlKE1lZGlhUGxheWVyOjpWaWRlb0Z1
bGxzY3JlZW5Nb2RlKSBmaW5hbDsKKyAgICB2b2lkIHZpZGVvRnVsbHNjcmVlblN0YW5kYnlDaGFu
Z2VkKCkgZmluYWw7CisjZW5kaWYKKworI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCisgICAgTlNB
cnJheSAqdGltZWRNZXRhZGF0YSgpIGNvbnN0IGZpbmFsOworICAgIFN0cmluZyBhY2Nlc3NMb2co
KSBjb25zdCBmaW5hbDsKKyAgICBTdHJpbmcgZXJyb3JMb2coKSBjb25zdCBmaW5hbDsKKyNlbmRp
ZgorICAgIGxvbmcgcGxhdGZvcm1FcnJvckNvZGUoKSBjb25zdCBmaW5hbDsKKworICAgIHZvaWQg
cGxheSgpIGZpbmFsOworICAgIHZvaWQgcGF1c2UoKSBmaW5hbDsKKyAgICB2b2lkIHNldEJ1ZmZl
cmluZ1BvbGljeShNZWRpYVBsYXllcjo6QnVmZmVyaW5nUG9saWN5KSBmaW5hbDsKKworICAgIGJv
b2wgc3VwcG9ydHNQaWN0dXJlSW5QaWN0dXJlKCkgY29uc3QgZmluYWw7CisgICAgYm9vbCBzdXBw
b3J0c0Z1bGxzY3JlZW4oKSBjb25zdCBmaW5hbDsKKyAgICBib29sIHN1cHBvcnRzU2Nhbm5pbmco
KSBjb25zdCBmaW5hbDsKKyAgICBib29sIHJlcXVpcmVzSW1tZWRpYXRlQ29tcG9zaXRpbmcoKSBj
b25zdCBmaW5hbDsKKworICAgIGJvb2wgY2FuU2F2ZU1lZGlhRGF0YSgpIGNvbnN0IGZpbmFsOwor
CisgICAgRmxvYXRTaXplIG5hdHVyYWxTaXplKCkgY29uc3QgZmluYWw7CisKKyAgICBib29sIGhh
c1ZpZGVvKCkgY29uc3QgZmluYWw7CisgICAgYm9vbCBoYXNBdWRpbygpIGNvbnN0IGZpbmFsOwor
CisgICAgdm9pZCBzZXRWaXNpYmxlKGJvb2wpIGZpbmFsOworCisgICAgTWVkaWFUaW1lIGR1cmF0
aW9uTWVkaWFUaW1lKCkgY29uc3QgZmluYWw7CisgICAgTWVkaWFUaW1lIGN1cnJlbnRNZWRpYVRp
bWUoKSBjb25zdCBmaW5hbDsKKworICAgIE1lZGlhVGltZSBnZXRTdGFydERhdGUoKSBjb25zdCBm
aW5hbDsKKworICAgIHZvaWQgc2Vlayhjb25zdCBNZWRpYVRpbWUmKSBmaW5hbDsKKyAgICB2b2lk
IHNlZWtXaXRoVG9sZXJhbmNlKGNvbnN0IE1lZGlhVGltZSYsIGNvbnN0IE1lZGlhVGltZSYsIGNv
bnN0IE1lZGlhVGltZSYpIGZpbmFsOworCisgICAgYm9vbCBzZWVraW5nKCkgY29uc3QgZmluYWw7
CisKKyAgICBNZWRpYVRpbWUgc3RhcnRUaW1lKCkgY29uc3QgZmluYWw7CisKKyAgICB2b2lkIHNl
dFJhdGVEb3VibGUoZG91YmxlKSBmaW5hbDsKKyAgICBkb3VibGUgcmF0ZSgpIGNvbnN0IGZpbmFs
OworCisgICAgdm9pZCBzZXRQcmVzZXJ2ZXNQaXRjaChib29sKSBmaW5hbDsKKworICAgIGJvb2wg
cGF1c2VkKCkgY29uc3QgZmluYWw7CisKKyAgICB2b2lkIHNldFZvbHVtZURvdWJsZShkb3VibGUp
IGZpbmFsOworCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkgfHwgVVNFKEdTVFJFQU1FUikKKyAg
ICBmbG9hdCB2b2x1bWUoKSBjb25zdCBmaW5hbCB7IHJldHVybiAxOyB9CisjZW5kaWYKKworICAg
IHZvaWQgc2V0TXV0ZWQoYm9vbCkgZmluYWw7CisKKyAgICBib29sIGhhc0Nsb3NlZENhcHRpb25z
KCkgY29uc3QgZmluYWw7CisgICAgdm9pZCBzZXRDbG9zZWRDYXB0aW9uc1Zpc2libGUoYm9vbCkg
ZmluYWw7CisKKyAgICBkb3VibGUgbWF4RmFzdEZvcndhcmRSYXRlKCkgY29uc3QgZmluYWw7Cisg
ICAgZG91YmxlIG1pbkZhc3RSZXZlcnNlUmF0ZSgpIGNvbnN0IGZpbmFsOworCisgICAgTWVkaWFQ
bGF5ZXI6Ok5ldHdvcmtTdGF0ZSBuZXR3b3JrU3RhdGUoKSBjb25zdCBmaW5hbDsKKyAgICBNZWRp
YVBsYXllcjo6UmVhZHlTdGF0ZSByZWFkeVN0YXRlKCkgY29uc3QgZmluYWw7CisKKyAgICBzdGQ6
OnVuaXF1ZV9wdHI8UGxhdGZvcm1UaW1lUmFuZ2VzPiBzZWVrYWJsZSgpIGNvbnN0IGZpbmFsOwor
CisgICAgTWVkaWFUaW1lIG1heE1lZGlhVGltZVNlZWthYmxlKCkgY29uc3QgZmluYWw7CisgICAg
TWVkaWFUaW1lIG1pbk1lZGlhVGltZVNlZWthYmxlKCkgY29uc3QgZmluYWw7CisgICAgc3RkOjp1
bmlxdWVfcHRyPFBsYXRmb3JtVGltZVJhbmdlcz4gYnVmZmVyZWQoKSBjb25zdCBmaW5hbDsKKyAg
ICBkb3VibGUgc2Vla2FibGVUaW1lUmFuZ2VzTGFzdE1vZGlmaWVkVGltZSgpIGNvbnN0IGZpbmFs
OworICAgIGRvdWJsZSBsaXZlVXBkYXRlSW50ZXJ2YWwoKSBjb25zdCBmaW5hbDsKKworICAgIHVu
c2lnbmVkIGxvbmcgbG9uZyB0b3RhbEJ5dGVzKCkgY29uc3QgZmluYWw7CisgICAgYm9vbCBkaWRM
b2FkaW5nUHJvZ3Jlc3MoKSBjb25zdCBmaW5hbDsKKworICAgIHZvaWQgc2V0U2l6ZShjb25zdCBJ
bnRTaXplJikgZmluYWw7CisKKyAgICB2b2lkIHBhaW50KEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0
IEZsb2F0UmVjdCYpIGZpbmFsOworCisgICAgdm9pZCBwYWludEN1cnJlbnRGcmFtZUluQ29udGV4
dChHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJlY3QmKSBmaW5hbDsKKyAgICBib29sIGNv
cHlWaWRlb1RleHR1cmVUb1BsYXRmb3JtVGV4dHVyZShHcmFwaGljc0NvbnRleHQzRCosIFBsYXRm
b3JtM0RPYmplY3QsIEdDM0RlbnVtLCBHQzNEaW50LCBHQzNEZW51bSwgR0MzRGVudW0sIEdDM0Rl
bnVtLCBib29sLCBib29sKSBmaW5hbDsKKyAgICBOYXRpdmVJbWFnZVB0ciBuYXRpdmVJbWFnZUZv
ckN1cnJlbnRUaW1lKCkgZmluYWw7CisKKyAgICB2b2lkIHNldFByZWxvYWQoTWVkaWFQbGF5ZXI6
OlByZWxvYWQpIGZpbmFsOworCisgICAgYm9vbCBoYXNBdmFpbGFibGVWaWRlb0ZyYW1lKCkgY29u
c3QgZmluYWw7CisKKyAgICBib29sIGNhbkxvYWRQb3N0ZXIoKSBjb25zdCBmaW5hbDsKKyAgICB2
b2lkIHNldFBvc3Rlcihjb25zdCBTdHJpbmcmKSBmaW5hbDsKKworI2lmIFVTRShOQVRJVkVfRlVM
TFNDUkVFTl9WSURFTykKKyAgICB2b2lkIGVudGVyRnVsbHNjcmVlbigpIGZpbmFsOworICAgIHZv
aWQgZXhpdEZ1bGxzY3JlZW4oKSBmaW5hbDsKKyNlbmRpZgorCisjaWYgRU5BQkxFKFdJUkVMRVNT
X1BMQVlCQUNLX1RBUkdFVCkKKyAgICBTdHJpbmcgd2lyZWxlc3NQbGF5YmFja1RhcmdldE5hbWUo
KSBjb25zdCBmaW5hbDsKKyAgICBNZWRpYVBsYXllcjo6V2lyZWxlc3NQbGF5YmFja1RhcmdldFR5
cGUgd2lyZWxlc3NQbGF5YmFja1RhcmdldFR5cGUoKSBjb25zdCBmaW5hbDsKKworICAgIGJvb2wg
d2lyZWxlc3NWaWRlb1BsYXliYWNrRGlzYWJsZWQoKSBjb25zdCBmaW5hbDsKKyAgICB2b2lkIHNl
dFdpcmVsZXNzVmlkZW9QbGF5YmFja0Rpc2FibGVkKGJvb2wpIGZpbmFsOworCisgICAgYm9vbCBj
YW5QbGF5VG9XaXJlbGVzc1BsYXliYWNrVGFyZ2V0KCkgY29uc3QgZmluYWw7CisgICAgYm9vbCBp
c0N1cnJlbnRQbGF5YmFja1RhcmdldFdpcmVsZXNzKCkgY29uc3QgZmluYWw7CisgICAgdm9pZCBz
ZXRXaXJlbGVzc1BsYXliYWNrVGFyZ2V0KFJlZjxNZWRpYVBsYXliYWNrVGFyZ2V0PiYmKSBmaW5h
bDsKKworICAgIHZvaWQgc2V0U2hvdWxkUGxheVRvUGxheWJhY2tUYXJnZXQoYm9vbCkgZmluYWw7
CisjZW5kaWYKKworI2lmIFVTRShOQVRJVkVfRlVMTFNDUkVFTl9WSURFTykKKyAgICBib29sIGNh
bkVudGVyRnVsbHNjcmVlbigpIGNvbnN0IGZpbmFsOworI2VuZGlmCisKKyAgICBib29sIHN1cHBv
cnRzQWNjZWxlcmF0ZWRSZW5kZXJpbmcoKSBjb25zdCBmaW5hbDsKKyAgICB2b2lkIGFjY2VsZXJh
dGVkUmVuZGVyaW5nU3RhdGVDaGFuZ2VkKCkgZmluYWw7CisKKyAgICBib29sIHNob3VsZE1haW50
YWluQXNwZWN0UmF0aW8oKSBjb25zdCBmaW5hbDsKKyAgICB2b2lkIHNldFNob3VsZE1haW50YWlu
QXNwZWN0UmF0aW8oYm9vbCkgZmluYWw7CisKKyAgICBib29sIGhhc1NpbmdsZVNlY3VyaXR5T3Jp
Z2luKCkgY29uc3QgZmluYWw7CisgICAgYm9vbCBkaWRQYXNzQ09SU0FjY2Vzc0NoZWNrKCkgY29u
c3QgZmluYWw7CisgICAgT3B0aW9uYWw8Ym9vbD4gd291bGRUYWludE9yaWdpbihjb25zdCBTZWN1
cml0eU9yaWdpbiYpIGNvbnN0IGZpbmFsOworCisgICAgTWVkaWFQbGF5ZXI6Ok1vdmllTG9hZFR5
cGUgbW92aWVMb2FkVHlwZSgpIGNvbnN0IGZpbmFsOworCisgICAgdm9pZCBwcmVwYXJlRm9yUmVu
ZGVyaW5nKCkgZmluYWw7CisKKyAgICBNZWRpYVRpbWUgbWVkaWFUaW1lRm9yVGltZVZhbHVlKGNv
bnN0IE1lZGlhVGltZSYgdGltZVZhbHVlKSBjb25zdCBmaW5hbDsKKworICAgIGRvdWJsZSBtYXhp
bXVtRHVyYXRpb25Ub0NhY2hlTWVkaWFUaW1lKCkgY29uc3QgZmluYWw7CisKKyAgICB1bnNpZ25l
ZCBkZWNvZGVkRnJhbWVDb3VudCgpIGNvbnN0IGZpbmFsOworICAgIHVuc2lnbmVkIGRyb3BwZWRG
cmFtZUNvdW50KCkgY29uc3QgZmluYWw7CisgICAgdW5zaWduZWQgYXVkaW9EZWNvZGVkQnl0ZUNv
dW50KCkgY29uc3QgZmluYWw7CisgICAgdW5zaWduZWQgdmlkZW9EZWNvZGVkQnl0ZUNvdW50KCkg
Y29uc3QgZmluYWw7CisKKyAgICB2b2lkIHNldFByaXZhdGVCcm93c2luZ01vZGUoYm9vbCkgZmlu
YWw7CisgICAgU3RyaW5nIGVuZ2luZURlc2NyaXB0aW9uKCkgY29uc3QgZmluYWw7CisKKyNpZiBF
TkFCTEUoV0VCX0FVRElPKQorICAgIEF1ZGlvU291cmNlUHJvdmlkZXIqIGF1ZGlvU291cmNlUHJv
dmlkZXIoKSBmaW5hbDsKKyNlbmRpZgorCisjaWYgRU5BQkxFKExFR0FDWV9FTkNSWVBURURfTUVE
SUEpCisgICAgc3RkOjp1bmlxdWVfcHRyPExlZ2FjeUNETVNlc3Npb24+IGNyZWF0ZVNlc3Npb24o
Y29uc3QgU3RyaW5nJiwgTGVnYWN5Q0RNU2Vzc2lvbkNsaWVudCopIGZpbmFsOworICAgIHZvaWQg
c2V0Q0RNU2Vzc2lvbihMZWdhY3lDRE1TZXNzaW9uKikgZmluYWw7CisgICAgdm9pZCBrZXlBZGRl
ZCgpIGZpbmFsOworI2VuZGlmCisKKyNpZiBFTkFCTEUoRU5DUllQVEVEX01FRElBKQorICAgIHZv
aWQgY2RtSW5zdGFuY2VBdHRhY2hlZChDRE1JbnN0YW5jZSYpIGZpbmFsOworICAgIHZvaWQgY2Rt
SW5zdGFuY2VEZXRhY2hlZChDRE1JbnN0YW5jZSYpIGZpbmFsOworICAgIHZvaWQgYXR0ZW1wdFRv
RGVjcnlwdFdpdGhJbnN0YW5jZShDRE1JbnN0YW5jZSYpIGZpbmFsOworICAgIGJvb2wgd2FpdGlu
Z0ZvcktleSgpIGNvbnN0IGZpbmFsOworI2VuZGlmCisKKyNpZiBFTkFCTEUoVklERU9fVFJBQ0sp
CisgICAgYm9vbCByZXF1aXJlc1RleHRUcmFja1JlcHJlc2VudGF0aW9uKCkgY29uc3QgZmluYWw7
CisgICAgdm9pZCBzZXRUZXh0VHJhY2tSZXByZXNlbnRhdGlvbihUZXh0VHJhY2tSZXByZXNlbnRh
dGlvbiopIGZpbmFsOworICAgIHZvaWQgc3luY1RleHRUcmFja0JvdW5kcygpIGZpbmFsOworICAg
IHZvaWQgdHJhY2tzQ2hhbmdlZCgpIGZpbmFsOworI2VuZGlmCisKKyNpZiBVU0UoR1NUUkVBTUVS
KQorICAgIHZvaWQgc2ltdWxhdGVBdWRpb0ludGVycnVwdGlvbigpIGZpbmFsOworI2VuZGlmCisK
KyAgICB2b2lkIGJlZ2luU2ltdWxhdGVkSERDUEVycm9yKCkgZmluYWw7CisgICAgdm9pZCBlbmRT
aW11bGF0ZWRIRENQRXJyb3IoKSBmaW5hbDsKKworICAgIFN0cmluZyBsYW5ndWFnZU9mUHJpbWFy
eUF1ZGlvVHJhY2soKSBjb25zdCBmaW5hbDsKKworICAgIHNpemVfdCBleHRyYU1lbW9yeUNvc3Qo
KSBjb25zdCBmaW5hbDsKKworICAgIHVuc2lnbmVkIGxvbmcgbG9uZyBmaWxlU2l6ZSgpIGNvbnN0
IGZpbmFsOworCisgICAgYm9vbCBlbmRlZCgpIGNvbnN0IGZpbmFsOworCisgICAgT3B0aW9uYWw8
VmlkZW9QbGF5YmFja1F1YWxpdHlNZXRyaWNzPiB2aWRlb1BsYXliYWNrUXVhbGl0eU1ldHJpY3Mo
KSBmaW5hbDsKKworI2lmIEVOQUJMRShBVkZfQ0FQVElPTlMpCisgICAgdm9pZCBub3RpZnlUcmFj
a01vZGVDaGFuZ2VkKCkgZmluYWw7CisjZW5kaWYKKworICAgIHZvaWQgbm90aWZ5QWN0aXZlU291
cmNlQnVmZmVyc0NoYW5nZWQoKSBmaW5hbDsKKworICAgIHZvaWQgc2V0U2hvdWxkRGlzYWJsZVNs
ZWVwKGJvb2wpIGZpbmFsOworCisgICAgdm9pZCBhcHBsaWNhdGlvbldpbGxSZXNpZ25BY3RpdmUo
KSBmaW5hbDsKKyAgICB2b2lkIGFwcGxpY2F0aW9uRGlkQmVjb21lQWN0aXZlKCkgZmluYWw7CisK
KyNpZiBVU0UoQVZGT1VOREFUSU9OKQorICAgIEFWUGxheWVyICpvYmpDQVZGb3VuZGF0aW9uQVZQ
bGF5ZXIoKSBjb25zdCBmaW5hbCB7IHJldHVybiBudWxscHRyOyB9CisjZW5kaWYKKworICAgIGJv
b2wgcGVyZm9ybVRhc2tBdE1lZGlhVGltZShXVEY6OkZ1bmN0aW9uPHZvaWQoKT4mJiwgTWVkaWFU
aW1lKSBmaW5hbDsKKworICAgIGJvb2wgc2hvdWxkSWdub3JlSW50cmluc2ljU2l6ZSgpIGZpbmFs
OworCisgICAgTWVkaWFQbGF5ZXIqIG1fcGxheWVyIHsgbnVsbHB0ciB9OworICAgIFJlbW90ZU1l
ZGlhUGxheWVyTWFuYWdlciBtX21hbmFnZXI7CisgICAgTWVkaWFQbGF5ZXJFbnVtczo6TWVkaWFF
bmdpbmVJZGVudGlmaWVyIG1fcmVtb3RlRW5naW5lSWRlbnRpZmllcjsKKyAgICBNZWRpYVBsYXll
clByaXZhdGVSZW1vdGVJZGVudGlmaWVyIG1faWRlbnRpZmllcjsKKworI2lmICFSRUxFQVNFX0xP
R19ESVNBQkxFRAorICAgIFJlZjxjb25zdCBMb2dnZXI+IG1fbG9nZ2VyOworICAgIGNvbnN0IHZv
aWQqIG1fbG9nSWRlbnRpZmllcjsKKyNlbmRpZgorCisgICAgYm9vbCBtX2ludmFsaWQgeyBmYWxz
ZSB9OworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9NZWRpYVBsYXllclByaXZhdGVSZW1v
dGVJZGVudGlmaWVyLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL01lZGlh
UGxheWVyUHJpdmF0ZVJlbW90ZUlkZW50aWZpZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44N2U3YjhiYmFlYzM1
MzRlN2RlZmQ3ODIzODYxMDE0MzIxNzUzOGM3Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9NZWRpYVBsYXllclByaXZhdGVSZW1vdGVJZGVudGlm
aWVyLmgKQEAgLTAsMCArMSwzNSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlICwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycK
KyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisg
KiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lu
Y2x1ZGUgPHd0Zi9PYmplY3RJZGVudGlmaWVyLmg+CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitl
bnVtIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZUlkZW50aWZpZXJUeXBlIHsgfTsKK3VzaW5nIE1l
ZGlhUGxheWVyUHJpdmF0ZVJlbW90ZUlkZW50aWZpZXIgPSBPYmplY3RJZGVudGlmaWVyPE1lZGlh
UGxheWVyUHJpdmF0ZVJlbW90ZUlkZW50aWZpZXJUeXBlPjsKKworfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1v
dGVNZWRpYVBsYXllck1hbmFnZXIuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9t
ZWRpYS9SZW1vdGVNZWRpYVBsYXllck1hbmFnZXIuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjhjZTBlNjNjNDA1
OTY4MTNkMmJiYzJkY2Y5ZTM5YWNjZDE5MDMwNDgKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyTWFuYWdlci5jcHAK
QEAgLTAsMCArMSwyMTAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5j
bHVkZSAiUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyLmgiCisKKyNpZiBFTkFCTEUoR1BVX1BST0NF
U1MpCisKKyNpbmNsdWRlICJSZW1vdGVNZWRpYVBsYXllck1hbmFnZXJNZXNzYWdlcy5oIgorI2lu
Y2x1ZGUgIlJlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5TWVzc2FnZXMuaCIKKyNpbmNsdWRl
ICJXZWJDb3JlQXJndW1lbnRDb2RlcnMuaCIKKyNpbmNsdWRlICJXZWJQcm9jZXNzLmgiCisjaW5j
bHVkZSAiV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5oIgorI2luY2x1ZGUgPFdlYkNvcmUv
TWVkaWFQbGF5ZXIuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL05vdEltcGxlbWVudGVkLmg+CisjaW5j
bHVkZSA8V2ViQ29yZS9TZXR0aW5ncy5oPgorI2luY2x1ZGUgPHd0Zi9Bc3NlcnRpb25zLmg+CisK
K25hbWVzcGFjZSBXZWJLaXQgewordXNpbmcgbmFtZXNwYWNlIFBBTDsKK3VzaW5nIG5hbWVzcGFj
ZSBXZWJDb3JlOworCitjbGFzcyBNZWRpYVBsYXllclJlbW90ZUZhY3RvcnkgOiBwdWJsaWMgTWVk
aWFQbGF5ZXJGYWN0b3J5IHsKK3B1YmxpYzoKKyAgICBNZWRpYVBsYXllclJlbW90ZUZhY3Rvcnko
TWVkaWFQbGF5ZXJFbnVtczo6TWVkaWFFbmdpbmVJZGVudGlmaWVyIHJlbW90ZUVuZ2luZUlkZW50
aWZpZXIsIFJlbW90ZU1lZGlhUGxheWVyTWFuYWdlciYgbWFuYWdlcikKKyAgICAgICAgOiBtX3Jl
bW90ZUVuZ2luZUlkZW50aWZpZXIocmVtb3RlRW5naW5lSWRlbnRpZmllcikKKyAgICAgICAgLCBt
X21hbmFnZXIobWFuYWdlcikKKyAgICB7CisgICAgfQorCisgICAgTWVkaWFQbGF5ZXJFbnVtczo6
TWVkaWFFbmdpbmVJZGVudGlmaWVyIGlkZW50aWZpZXIoKSBjb25zdCBmaW5hbCB7IHJldHVybiBt
X3JlbW90ZUVuZ2luZUlkZW50aWZpZXI7IH07CisKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8TWVkaWFQ
bGF5ZXJQcml2YXRlSW50ZXJmYWNlPiBjcmVhdGVNZWRpYUVuZ2luZVBsYXllcihNZWRpYVBsYXll
ciogcGxheWVyKSBjb25zdCBmaW5hbAorICAgIHsKKyAgICAgICAgcmV0dXJuIG1fbWFuYWdlci5j
cmVhdGVSZW1vdGVNZWRpYVBsYXllcihwbGF5ZXIsIG1fcmVtb3RlRW5naW5lSWRlbnRpZmllcik7
CisgICAgfQorCisgICAgdm9pZCBnZXRTdXBwb3J0ZWRUeXBlcyhIYXNoU2V0PFN0cmluZywgQVND
SUlDYXNlSW5zZW5zaXRpdmVIYXNoPiYgdHlwZXMpIGNvbnN0IGZpbmFsCisgICAgeworICAgICAg
ICByZXR1cm4gbV9tYW5hZ2VyLmdldFN1cHBvcnRlZFR5cGVzKG1fcmVtb3RlRW5naW5lSWRlbnRp
ZmllciwgdHlwZXMpOworICAgIH0KKworICAgIE1lZGlhUGxheWVyOjpTdXBwb3J0c1R5cGUgc3Vw
cG9ydHNUeXBlQW5kQ29kZWNzKGNvbnN0IE1lZGlhRW5naW5lU3VwcG9ydFBhcmFtZXRlcnMmIHBh
cmFtZXRlcnMpIGNvbnN0IGZpbmFsCisgICAgeworICAgICAgICByZXR1cm4gbV9tYW5hZ2VyLnN1
cHBvcnRzVHlwZUFuZENvZGVjcyhtX3JlbW90ZUVuZ2luZUlkZW50aWZpZXIsIHBhcmFtZXRlcnMp
OworICAgIH0KKworICAgIEhhc2hTZXQ8UmVmUHRyPFNlY3VyaXR5T3JpZ2luPj4gb3JpZ2luc0lu
TWVkaWFDYWNoZShjb25zdCBTdHJpbmcmIHBhdGgpIGNvbnN0IGZpbmFsCisgICAgeworICAgICAg
ICByZXR1cm4gbV9tYW5hZ2VyLm9yaWdpbnNJbk1lZGlhQ2FjaGUobV9yZW1vdGVFbmdpbmVJZGVu
dGlmaWVyLCBwYXRoKTsKKyAgICB9CisKKyAgICB2b2lkIGNsZWFyTWVkaWFDYWNoZShjb25zdCBT
dHJpbmcmIHBhdGgsIFdhbGxUaW1lIG1vZGlmaWVkU2luY2UpIGNvbnN0IGZpbmFsCisgICAgewor
ICAgICAgICByZXR1cm4gbV9tYW5hZ2VyLmNsZWFyTWVkaWFDYWNoZShtX3JlbW90ZUVuZ2luZUlk
ZW50aWZpZXIsIHBhdGgsIG1vZGlmaWVkU2luY2UpOworICAgIH0KKworICAgIHZvaWQgY2xlYXJN
ZWRpYUNhY2hlRm9yT3JpZ2lucyhjb25zdCBTdHJpbmcmIHBhdGgsIGNvbnN0IEhhc2hTZXQ8UmVm
UHRyPFNlY3VyaXR5T3JpZ2luPj4mIG9yaWdpbnMpIGNvbnN0IGZpbmFsCisgICAgeworICAgICAg
ICByZXR1cm4gbV9tYW5hZ2VyLmNsZWFyTWVkaWFDYWNoZUZvck9yaWdpbnMobV9yZW1vdGVFbmdp
bmVJZGVudGlmaWVyLCBwYXRoLCBvcmlnaW5zKTsKKyAgICB9CisKKyAgICBib29sIHN1cHBvcnRz
S2V5U3lzdGVtKGNvbnN0IFN0cmluZyYga2V5U3lzdGVtLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBl
KSBjb25zdCBmaW5hbAorICAgIHsKKyAgICAgICAgcmV0dXJuIG1fbWFuYWdlci5zdXBwb3J0c0tl
eVN5c3RlbShtX3JlbW90ZUVuZ2luZUlkZW50aWZpZXIsIGtleVN5c3RlbSwgbWltZVR5cGUpOwor
ICAgIH0KKworcHJpdmF0ZToKKyAgICBNZWRpYVBsYXllckVudW1zOjpNZWRpYUVuZ2luZUlkZW50
aWZpZXIgbV9yZW1vdGVFbmdpbmVJZGVudGlmaWVyOworICAgIFJlbW90ZU1lZGlhUGxheWVyTWFu
YWdlciYgbV9tYW5hZ2VyOworfTsKKworUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyOjpSZW1vdGVN
ZWRpYVBsYXllck1hbmFnZXIoV2ViUHJvY2VzcyYgcHJvY2VzcykKKyAgICA6IG1fcHJvY2Vzcyhw
cm9jZXNzKQoreworICAgIG1fcHJvY2Vzcy5hZGRNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OlJl
bW90ZU1lZGlhUGxheWVyTWFuYWdlcjo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCAqdGhpcyk7Cit9
CisKK1JlbW90ZU1lZGlhUGxheWVyTWFuYWdlcjo6flJlbW90ZU1lZGlhUGxheWVyTWFuYWdlcigp
Cit7CisgICAgbV9wcm9jZXNzLnJlbW92ZU1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6UmVtb3Rl
TWVkaWFQbGF5ZXJNYW5hZ2VyOjptZXNzYWdlUmVjZWl2ZXJOYW1lKCkpOworfQorCitjb25zdCBj
aGFyKiBSZW1vdGVNZWRpYVBsYXllck1hbmFnZXI6OnN1cHBsZW1lbnROYW1lKCkKK3sKKyAgICBy
ZXR1cm4gIlJlbW90ZU1lZGlhUGxheWVyTWFuYWdlciI7Cit9CisKK3ZvaWQgUmVtb3RlTWVkaWFQ
bGF5ZXJNYW5hZ2VyOjppbml0aWFsaXplKGNvbnN0IFdlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRl
cnMmKQoreworLy8gRklYTUU6IFVzZSBwYXJhbWV0ZXJzLm1lZGlhTUlNRVR5cGVzLgorfQorCitz
dGQ6OnVuaXF1ZV9wdHI8TWVkaWFQbGF5ZXJQcml2YXRlSW50ZXJmYWNlPiBSZW1vdGVNZWRpYVBs
YXllck1hbmFnZXI6OmNyZWF0ZVJlbW90ZU1lZGlhUGxheWVyKE1lZGlhUGxheWVyKiBwbGF5ZXIs
IE1lZGlhUGxheWVyRW51bXM6Ok1lZGlhRW5naW5lSWRlbnRpZmllciByZW1vdGVFbmdpbmVJZGVu
dGlmaWVyKQoreworICAgIGF1dG8gaWQgPSBNZWRpYVBsYXllclByaXZhdGVSZW1vdGVJZGVudGlm
aWVyOjpnZW5lcmF0ZSgpOworCisgICAgYm9vbCBoYXZlUmVtb3RlUHJveHk7CisgICAgYm9vbCBz
ZW5kU3VjY2VlZGVkID0gZ3B1UHJvY2Vzc0Nvbm5lY3Rpb24oKS5zZW5kU3luYyhNZXNzYWdlczo6
UmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHk6OkNyZWF0ZU1lZGlhUGxheWVyKGlkLCByZW1v
dGVFbmdpbmVJZGVudGlmaWVyKSwgTWVzc2FnZXM6OlJlbW90ZU1lZGlhUGxheWVyTWFuYWdlclBy
b3h5OjpDcmVhdGVNZWRpYVBsYXllcjo6UmVwbHkoaGF2ZVJlbW90ZVByb3h5KSwgMCk7CisgICAg
aWYgKCFoYXZlUmVtb3RlUHJveHkgfHwgIXNlbmRTdWNjZWVkZWQpIHsKKyAgICAgICAgV1RGTG9n
QWx3YXlzKCJGYWlsZWQgdG8gY3JlYXRlIHJlbW90ZSBtZWRpYSBwbGF5ZXIuIik7CisgICAgICAg
IHJldHVybiBudWxscHRyOworICAgIH0KKworICAgIGF1dG8gcmVtb3RlUGxheWVyID0gTWVkaWFQ
bGF5ZXJQcml2YXRlUmVtb3RlOjpjcmVhdGUocGxheWVyLCByZW1vdGVFbmdpbmVJZGVudGlmaWVy
LCBpZCwgKnRoaXMpOworICAgIG1fcGxheWVycy5hZGQoaWQsIG1ha2VXZWFrUHRyKCpyZW1vdGVQ
bGF5ZXIpKTsKKyAgICByZXR1cm4gcmVtb3RlUGxheWVyOworfQorCit2b2lkIFJlbW90ZU1lZGlh
UGxheWVyTWFuYWdlcjo6Z2V0U3VwcG9ydGVkVHlwZXMoTWVkaWFQbGF5ZXJFbnVtczo6TWVkaWFF
bmdpbmVJZGVudGlmaWVyIHJlbW90ZUVuZ2luZUlkZW50aWZpZXIsIEhhc2hTZXQ8U3RyaW5nLCBB
U0NJSUNhc2VJbnNlbnNpdGl2ZUhhc2g+JiByZXN1bHQpCit7CisgICAgLy8gRklYTUU6IHN1cHBv
cnRlZCB0eXBlcyBkb24ndCBjaGFuZ2UsIGNhY2hlIHRoZW0uCisgICAgVmVjdG9yPFN0cmluZz4g
dHlwZXM7CisgICAgaWYgKCFncHVQcm9jZXNzQ29ubmVjdGlvbigpLnNlbmRTeW5jKE1lc3NhZ2Vz
OjpSZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eTo6R2V0U3VwcG9ydGVkVHlwZXMocmVtb3Rl
RW5naW5lSWRlbnRpZmllciksIE1lc3NhZ2VzOjpSZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94
eTo6R2V0U3VwcG9ydGVkVHlwZXM6OlJlcGx5KHR5cGVzKSwgMCkpCisgICAgICAgIHJldHVybjsK
KworICAgIHJlc3VsdCA9IEhhc2hTZXQ8U3RyaW5nLCBBU0NJSUNhc2VJbnNlbnNpdGl2ZUhhc2g+
KCk7CisgICAgZm9yIChhdXRvJiB0eXBlIDogdHlwZXMpCisgICAgICAgIHJlc3VsdC5hZGQodHlw
ZSk7Cit9CisKK1dlYkNvcmU6Ok1lZGlhUGxheWVyOjpTdXBwb3J0c1R5cGUgUmVtb3RlTWVkaWFQ
bGF5ZXJNYW5hZ2VyOjpzdXBwb3J0c1R5cGVBbmRDb2RlY3MoTWVkaWFQbGF5ZXJFbnVtczo6TWVk
aWFFbmdpbmVJZGVudGlmaWVyIHJlbW90ZUVuZ2luZUlkZW50aWZpZXIsIGNvbnN0IFdlYkNvcmU6
Ok1lZGlhRW5naW5lU3VwcG9ydFBhcmFtZXRlcnMmIHBhcmFtZXRlcnMpCit7CisgICAgLy8gRklY
TUU6IHN1cHBvcnRlZCB0eXBlcyBkb24ndCBjaGFuZ2UsIGNhY2hlIHRoZW0uCisKKyAgICAvLyBG
SVhNRTogY29udmVydCBXZWJDb3JlOjpNZWRpYVBsYXllcjo6U3VwcG9ydHNUeXBlIHRvIGVudW0g
Y2xhc3Mgc28gaXQgY2FuIGJlIGVuY29kZWQgYW5kIHNlbnQgdmlhIElQQworICAgIGludCByZXN1
bHQ7CisgICAgaWYgKCFncHVQcm9jZXNzQ29ubmVjdGlvbigpLnNlbmRTeW5jKE1lc3NhZ2VzOjpS
ZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eTo6U3VwcG9ydHNUeXBlKHJlbW90ZUVuZ2luZUlk
ZW50aWZpZXIsIHBhcmFtZXRlcnMpLCBNZXNzYWdlczo6UmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2Vy
UHJveHk6OlN1cHBvcnRzVHlwZTo6UmVwbHkocmVzdWx0KSwgMCkpCisgICAgICAgIHJldHVybiBN
ZWRpYVBsYXllcjo6SXNOb3RTdXBwb3J0ZWQ7CisKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8V2Vi
Q29yZTo6TWVkaWFQbGF5ZXI6OlN1cHBvcnRzVHlwZT4ocmVzdWx0KTsKK30KKworCitib29sIFJl
bW90ZU1lZGlhUGxheWVyTWFuYWdlcjo6c3VwcG9ydHNLZXlTeXN0ZW0oTWVkaWFQbGF5ZXJFbnVt
czo6TWVkaWFFbmdpbmVJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIGtleVN5c3RlbSwgY29uc3Qg
U3RyaW5nJiBtaW1lVHlwZSkKK3sKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKKworSGFzaFNldDxS
ZWZQdHI8V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4+PiBSZW1vdGVNZWRpYVBsYXllck1hbmFnZXI6
Om9yaWdpbnNJbk1lZGlhQ2FjaGUoTWVkaWFQbGF5ZXJFbnVtczo6TWVkaWFFbmdpbmVJZGVudGlm
aWVyIHJlbW90ZUVuZ2luZUlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgcGF0aCkKK3sKKyAgICBW
ZWN0b3I8V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhPiBvcmlnaW5EYXRhczsKKyAgICBpZiAo
IWdwdVByb2Nlc3NDb25uZWN0aW9uKCkuc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZU1lZGlhUGxh
eWVyTWFuYWdlclByb3h5OjpPcmlnaW5zSW5NZWRpYUNhY2hlKHJlbW90ZUVuZ2luZUlkZW50aWZp
ZXIsIHBhdGgpLCBNZXNzYWdlczo6UmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHk6Ok9yaWdp
bnNJbk1lZGlhQ2FjaGU6OlJlcGx5KG9yaWdpbkRhdGFzKSwgMCkpCisgICAgICAgIHJldHVybiB7
IH07CisKKyAgICBIYXNoU2V0PFJlZlB0cjxTZWN1cml0eU9yaWdpbj4+IG9yaWdpbnM7CisgICAg
Zm9yIChhdXRvJiBvcmlnaW5EYXRhIDogb3JpZ2luRGF0YXMpCisgICAgICAgIG9yaWdpbnMuYWRk
KG9yaWdpbkRhdGEuc2VjdXJpdHlPcmlnaW4oKSk7CisKKyAgICByZXR1cm4gb3JpZ2luczsKK30K
Kwordm9pZCBSZW1vdGVNZWRpYVBsYXllck1hbmFnZXI6OmNsZWFyTWVkaWFDYWNoZShNZWRpYVBs
YXllckVudW1zOjpNZWRpYUVuZ2luZUlkZW50aWZpZXIgcmVtb3RlRW5naW5lSWRlbnRpZmllciwg
Y29uc3QgU3RyaW5nJiBwYXRoLCBXYWxsVGltZSBtb2RpZmllZFNpbmNlKQoreworICAgIGdwdVBy
b2Nlc3NDb25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6UmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2Vy
UHJveHk6OkNsZWFyTWVkaWFDYWNoZShyZW1vdGVFbmdpbmVJZGVudGlmaWVyLCBwYXRoLCBtb2Rp
ZmllZFNpbmNlKSwgMCk7Cit9CisKK3ZvaWQgUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyOjpjbGVh
ck1lZGlhQ2FjaGVGb3JPcmlnaW5zKE1lZGlhUGxheWVyRW51bXM6Ok1lZGlhRW5naW5lSWRlbnRp
ZmllciByZW1vdGVFbmdpbmVJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIHBhdGgsIGNvbnN0IEhh
c2hTZXQ8UmVmUHRyPFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luPj4mIG9yaWdpbnMpCit7CisgICAg
VmVjdG9yPFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YT4gb3JpZ2luRGF0YTsKKyAgICBmb3Ig
KGF1dG8mIG9yaWdpbiA6IG9yaWdpbnMpCisgICAgICAgIG9yaWdpbkRhdGEuYXBwZW5kKG9yaWdp
bi0+ZGF0YSgpKTsKKworICAgIGdwdVByb2Nlc3NDb25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6
UmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHk6OkNsZWFyTWVkaWFDYWNoZUZvck9yaWdpbnMo
cmVtb3RlRW5naW5lSWRlbnRpZmllciwgcGF0aCwgb3JpZ2luRGF0YSksIDApOworfQorCit2b2lk
IFJlbW90ZU1lZGlhUGxheWVyTWFuYWdlcjo6bmV0d29ya1N0YXRlQ2hhbmdlZChNZWRpYVBsYXll
clByaXZhdGVSZW1vdGVJZGVudGlmaWVyKQoreworfQorCit2b2lkIFJlbW90ZU1lZGlhUGxheWVy
TWFuYWdlcjo6dXBkYXRlUHJlZmVyZW5jZXMoY29uc3QgU2V0dGluZ3MmIHNldHRpbmdzKQorewor
ICAgIGF1dG8gcmVnaXN0ZXJFbmdpbmUgPSBbdGhpc10oTWVkaWFFbmdpbmVSZWdpc3RyYXIgcmVn
aXN0cmFyLCBNZWRpYVBsYXllckVudW1zOjpNZWRpYUVuZ2luZUlkZW50aWZpZXIgcmVtb3RlRW5n
aW5lSWRlbnRpZmllcikgeworICAgICAgICByZWdpc3RyYXIobWFrZVVuaXF1ZTxNZWRpYVBsYXll
clJlbW90ZUZhY3Rvcnk+KHJlbW90ZUVuZ2luZUlkZW50aWZpZXIsICp0aGlzKSk7CisgICAgfTsK
KworICAgIFJlbW90ZU1lZGlhUGxheWVyU3VwcG9ydDo6c2V0UmVnaXN0ZXJSZW1vdGVQbGF5ZXJD
YWxsYmFjayhzZXR0aW5ncy51c2VHUFVQcm9jZXNzRm9yTWVkaWEoKSA/IHJlZ2lzdGVyRW5naW5l
IDogc3RkOjpmdW5jdGlvbjx2b2lkKE1lZGlhRW5naW5lUmVnaXN0cmFyLCBNZWRpYVBsYXllckVu
dW1zOjpNZWRpYUVuZ2luZUlkZW50aWZpZXIpPiB7IH0pOworfQorCitJUEM6OkNvbm5lY3Rpb24m
IFJlbW90ZU1lZGlhUGxheWVyTWFuYWdlcjo6Z3B1UHJvY2Vzc0Nvbm5lY3Rpb24oKSBjb25zdAor
eworICAgIHJldHVybiBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5lbnN1cmVHUFVQcm9jZXNzQ29u
bmVjdGlvbigpLmNvbm5lY3Rpb24oKTsKK30KKworfQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2Vy
LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZU1lZGlhUGxheWVy
TWFuYWdlci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLmJlNWJmZjdhYTkzZTI1ZjM1YjQ4YWE0NmFlMWY4MjgxMjEz
Y2YyYzEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21l
ZGlhL1JlbW90ZU1lZGlhUGxheWVyTWFuYWdlci5oCkBAIC0wLDAgKzEsODYgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgor
ICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkK
KyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykKKworI2luY2x1ZGUg
Ik1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZUlkZW50aWZpZXIuaCIKKyNpbmNsdWRlICJNZXNzYWdl
UmVjZWl2ZXIuaCIKKyNpbmNsdWRlICJTaGFyZWRNZW1vcnkuaCIKKyNpbmNsdWRlICJXZWJQcm9j
ZXNzU3VwcGxlbWVudC5oIgorI2luY2x1ZGUgPFdlYkNvcmUvTWVkaWFQbGF5ZXIuaD4KKyNpbmNs
dWRlIDx3dGYvSGFzaE1hcC5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CitjbGFzcyBNZWRpYVBs
YXllcjsKK2NsYXNzIE1lZGlhUGxheWVyUHJpdmF0ZUludGVyZmFjZTsKK2NsYXNzIFNldHRpbmdz
OworfQorCituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3MgTWVkaWFQbGF5ZXJQcml2YXRlUmVt
b3RlOworY2xhc3MgV2ViUHJvY2VzczsKKworY2xhc3MgUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2Vy
IDogcHVibGljIFdlYlByb2Nlc3NTdXBwbGVtZW50LCBwdWJsaWMgSVBDOjpNZXNzYWdlUmVjZWl2
ZXIgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOworcHVibGljOgorICAgIGV4cGxpY2l0
IFJlbW90ZU1lZGlhUGxheWVyTWFuYWdlcihXZWJQcm9jZXNzJik7CisgICAgflJlbW90ZU1lZGlh
UGxheWVyTWFuYWdlcigpOworCisgICAgc3RhdGljIGNvbnN0IGNoYXIqIHN1cHBsZW1lbnROYW1l
KCk7CisKKyAgICB2b2lkIHVwZGF0ZVByZWZlcmVuY2VzKGNvbnN0IFdlYkNvcmU6OlNldHRpbmdz
Jik7CisKKyAgICBJUEM6OkNvbm5lY3Rpb24mIGdwdVByb2Nlc3NDb25uZWN0aW9uKCkgY29uc3Q7
CisKK3ByaXZhdGU6CisgICAgc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJp
dmF0ZUludGVyZmFjZT4gY3JlYXRlUmVtb3RlTWVkaWFQbGF5ZXIoV2ViQ29yZTo6TWVkaWFQbGF5
ZXIqLCBXZWJDb3JlOjpNZWRpYVBsYXllckVudW1zOjpNZWRpYUVuZ2luZUlkZW50aWZpZXIpOwor
CisgICAgLy8gV2ViUHJvY2Vzc1N1cHBsZW1lbnQKKyAgICB2b2lkIGluaXRpYWxpemUoY29uc3Qg
V2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycyYpIGZpbmFsOworCisgICAgLy8gSVBDOjpNZXNz
YWdlUmVjZWl2ZXIKKyAgICB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYs
IElQQzo6RGVjb2RlciYpIGZpbmFsOworCisgICAgLy8gTWVzc2FnZXM6OlJlbW90ZU1lZGlhUGxh
eWVyTWFuYWdlcgorICAgIHZvaWQgbmV0d29ya1N0YXRlQ2hhbmdlZChNZWRpYVBsYXllclByaXZh
dGVSZW1vdGVJZGVudGlmaWVyKTsKKworICAgIGZyaWVuZCBjbGFzcyBNZWRpYVBsYXllclJlbW90
ZUZhY3Rvcnk7CisgICAgdm9pZCBnZXRTdXBwb3J0ZWRUeXBlcyhXZWJDb3JlOjpNZWRpYVBsYXll
ckVudW1zOjpNZWRpYUVuZ2luZUlkZW50aWZpZXIsIEhhc2hTZXQ8U3RyaW5nLCBBU0NJSUNhc2VJ
bnNlbnNpdGl2ZUhhc2g+Jik7CisgICAgV2ViQ29yZTo6TWVkaWFQbGF5ZXI6OlN1cHBvcnRzVHlw
ZSBzdXBwb3J0c1R5cGVBbmRDb2RlY3MoV2ViQ29yZTo6TWVkaWFQbGF5ZXJFbnVtczo6TWVkaWFF
bmdpbmVJZGVudGlmaWVyLCBjb25zdCBXZWJDb3JlOjpNZWRpYUVuZ2luZVN1cHBvcnRQYXJhbWV0
ZXJzJik7CisgICAgYm9vbCBzdXBwb3J0c0tleVN5c3RlbShXZWJDb3JlOjpNZWRpYVBsYXllckVu
dW1zOjpNZWRpYUVuZ2luZUlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYga2V5U3lzdGVtLCBjb25z
dCBTdHJpbmcmIG1pbWVUeXBlKTsKKyAgICBIYXNoU2V0PFJlZlB0cjxXZWJDb3JlOjpTZWN1cml0
eU9yaWdpbj4+IG9yaWdpbnNJbk1lZGlhQ2FjaGUoV2ViQ29yZTo6TWVkaWFQbGF5ZXJFbnVtczo6
TWVkaWFFbmdpbmVJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmKTsKKyAgICB2b2lkIGNsZWFyTWVk
aWFDYWNoZShXZWJDb3JlOjpNZWRpYVBsYXllckVudW1zOjpNZWRpYUVuZ2luZUlkZW50aWZpZXIs
IGNvbnN0IFN0cmluZyYsIFdhbGxUaW1lIG1vZGlmaWVkU2luY2UpOworICAgIHZvaWQgY2xlYXJN
ZWRpYUNhY2hlRm9yT3JpZ2lucyhXZWJDb3JlOjpNZWRpYVBsYXllckVudW1zOjpNZWRpYUVuZ2lu
ZUlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYsIGNvbnN0IEhhc2hTZXQ8UmVmUHRyPFdlYkNvcmU6
OlNlY3VyaXR5T3JpZ2luPj4mKTsKKworICAgIEhhc2hNYXA8TWVkaWFQbGF5ZXJQcml2YXRlUmVt
b3RlSWRlbnRpZmllciwgV2Vha1B0cjxNZWRpYVBsYXllclByaXZhdGVSZW1vdGU+PiBtX3BsYXll
cnM7CisgICAgV2ViUHJvY2VzcyYgbV9wcm9jZXNzOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2Vi
S2l0CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9t
ZWRpYS9SZW1vdGVNZWRpYVBsYXllck1hbmFnZXIubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyTWFuYWdlci5tZXNzYWdlcy5p
bgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi5hOTMzNTdjMmJhODVmZjFkZGVjY2EwN2MzMDM5MWY4ZTIwMjkyMTJmCi0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1v
dGVNZWRpYVBsYXllck1hbmFnZXIubWVzc2FnZXMuaW4KQEAgLTAsMCArMSwzMiBAQAorIyBDb3B5
cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisjIGFyZSBtZXQ6CisjIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMg
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorIyAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorIworIyBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMg
YGBBUyBJUycnCisjIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorIyBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisjIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJV
VE9SUworIyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SCisjIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisjIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwor
IyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTgorIyBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorIyBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisjIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKworI2lmIEVOQUJMRShWSURFTykKKworbWVz
c2FnZXMgLT4gUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyIE5vdFJlZkNvdW50ZWQgeworCisgICAg
TmV0d29ya1N0YXRlQ2hhbmdlZChXZWJLaXQ6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZUlkZW50
aWZpZXIgaWQpCisKK30KKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViUGFnZS9WaWV3VXBkYXRlRGlzcGF0Y2hlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViUGFnZS9WaWV3VXBkYXRlRGlzcGF0Y2hlci5jcHAKaW5kZXggNWNmNDQ0MDdl
M2ZiM2Y2N2EwMzQ3MDAzZDA0NzhkNzQxOTkzMjQzZi4uMWZiY2M3OTZmZmI2NTk1YTRmMzViNTI5
MGE5YzNiOWE0ZGYxODY2ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YlBhZ2UvVmlld1VwZGF0ZURpc3BhdGNoZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQYWdlL1ZpZXdVcGRhdGVEaXNwYXRjaGVyLmNwcApAQCAtMzEsNiArMzEsNyBAQAog
I2luY2x1ZGUgIlZpZXdVcGRhdGVEaXNwYXRjaGVyTWVzc2FnZXMuaCIKICNpbmNsdWRlICJXZWJQ
YWdlLmgiCiAjaW5jbHVkZSAiV2ViUHJvY2Vzcy5oIgorI2luY2x1ZGUgPFdlYkNvcmUvUGFnZUlk
ZW50aWZpZXIuaD4KICNpbmNsdWRlIDx3dGYvUnVuTG9vcC5oPgogCiBuYW1lc3BhY2UgV2ViS2l0
IHsKQEAgLTc1LDcgKzc2LDcgQEAgdm9pZCBWaWV3VXBkYXRlRGlzcGF0Y2hlcjo6dmlzaWJsZUNv
bnRlbnRSZWN0VXBkYXRlKFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIHBhZ2UKIAogdm9pZCBWaWV3
VXBkYXRlRGlzcGF0Y2hlcjo6ZGlzcGF0Y2hWaXNpYmxlQ29udGVudFJlY3RVcGRhdGUoKQogewot
ICAgIEhhc2hNYXA8UGFnZUlkZW50aWZpZXIsIFVwZGF0ZURhdGE+IHVwZGF0ZTsKKyAgICBIYXNo
TWFwPFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBVcGRhdGVEYXRhPiB1cGRhdGU7CiAgICAgewog
ICAgICAgICBMb2NrSG9sZGVyIGxvY2tlcigmbV9kYXRhTXV0ZXgpOwogICAgICAgICB1cGRhdGUg
PSBXVEZNb3ZlKG1fbGF0ZXN0VXBkYXRlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YlBhZ2UvV2ViUGFnZS5jcHAKaW5kZXggM2MyZmQxMmM1ODhhM2I3ZmJiNDAzZDc5NTM0NzBlNWI3
YzJhNmMwYy4uOTIzMzk5OTk5Yzc4OTMzYjk4NDczZDA3YjRhMmI0ZTAwZmRhNmI0ZiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKQEAgLTMxMiw2ICsz
MTIsMTAgQEAKICNpbmNsdWRlICJXZWJEZXZpY2VPcmllbnRhdGlvblVwZGF0ZVByb3ZpZGVyLmgi
CiAjZW5kaWYKIAorI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykKKyNpbmNsdWRlICJSZW1vdGVNZWRp
YVBsYXllck1hbmFnZXIuaCIKKyNlbmRpZgorCiBuYW1lc3BhY2UgV2ViS2l0IHsKIHVzaW5nIG5h
bWVzcGFjZSBKU0M7CiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKQEAgLTM2MDYsNiArMzYxMCwx
MCBAQCB2b2lkIFdlYlBhZ2U6OnVwZGF0ZVByZWZlcmVuY2VzKGNvbnN0IFdlYlByZWZlcmVuY2Vz
U3RvcmUmIHN0b3JlKQogCiAgICAgaWYgKG1fZHJhd2luZ0FyZWEpCiAgICAgICAgIG1fZHJhd2lu
Z0FyZWEtPnVwZGF0ZVByZWZlcmVuY2VzKHN0b3JlKTsKKworI2lmIEVOQUJMRShHUFVfUFJPQ0VT
UykKKyAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5zdXBwbGVtZW50PFJlbW90ZU1lZGlhUGxh
eWVyTWFuYWdlcj4oKS0+dXBkYXRlUHJlZmVyZW5jZXMoc2V0dGluZ3MpOworI2VuZGlmCiB9CiAK
ICNpZiBFTkFCTEUoREFUQV9ERVRFQ1RJT04pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJv
Y2Vzcy5jcHAKaW5kZXggMDZiMDhkNzhiZjU4NzM1ZTgxNzgwZmEwNDFjMGE4NzQxZWYwMGVmOS4u
MTUxMzI3MWFjM2Y5NzUxNTZmOTk0MmRhZmRmMGNjMGE4Y2Q3ZTNkMyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcApAQCAtMTY0LDYgKzE2NCwxMCBAQAogI2luY2x1ZGUg
PEphdmFTY3JpcHRDb3JlL1JlbW90ZUluc3BlY3Rvci5oPgogI2VuZGlmCiAKKyNpZiBFTkFCTEUo
R1BVX1BST0NFU1MpCisjaW5jbHVkZSAiUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyLmgiCisjZW5k
aWYKKwogLy8gVGhpcyBzaG91bGQgYmUgbGVzcyB0aGFuIHBsdWdJbkF1dG9TdGFydEV4cGlyYXRp
b25UaW1lVGhyZXNob2xkIGluIFBsdWdJbkF1dG9TdGFydFByb3ZpZGVyLgogc3RhdGljIGNvbnN0
IFNlY29uZHMgcGx1Z0luQXV0b1N0YXJ0RXhwaXJhdGlvblRpbWVVcGRhdGVUaHJlc2hvbGQgeyAy
OSAqIDI0ICogNjAgKiA2MCB9OwogCkBAIC0yMjEsNyArMjI1LDExIEBAIFdlYlByb2Nlc3M6Oldl
YlByb2Nlc3MoKQogI2lmIFBMQVRGT1JNKENPQ09BKSAmJiBFTkFCTEUoTUVESUFfU1RSRUFNKQog
ICAgIGFkZFN1cHBsZW1lbnQ8VXNlck1lZGlhQ2FwdHVyZU1hbmFnZXI+KCk7CiAjZW5kaWYKLSAg
ICAKKworI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykKKyAgICBhZGRTdXBwbGVtZW50PFJlbW90ZU1l
ZGlhUGxheWVyTWFuYWdlcj4oKTsKKyNlbmRpZgorCiAgICAgR2lnYWNhZ2U6OmZvcmJpZERpc2Fi
bGluZ1ByaW1pdGl2ZUdpZ2FjYWdlKCk7CiB9CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>385462</attachid>
            <date>2019-12-11 16:58:38 -0800</date>
            <delta_ts>2019-12-12 06:39:22 -0800</delta_ts>
            <desc>WIP patch</desc>
            <filename>bug-205094-20191211165837.patch</filename>
            <type>text/plain</type>
            <size>152861</size>
            <attacher name="Eric Carlson">eric.carlson</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjUzMzk3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZTk0ZmQ0ZWMxNDg4MjAx
YTM0ZjM1Nzk2MWUwOTg5OWZmNzIyYmNmNS4uNGEyNzIyNWMwNjkyM2ZiMWMxZjBiZDkwZmI0ZDkw
OWU1YzdlNWRkMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEwNyBAQAorMjAxOS0xMi0xMCAgRXJp
YyBDYXJsc29uICA8ZXJpYy5jYXJsc29uQGFwcGxlLmNvbT4KKworICAgICAgICBBZGQgaW5mcmFz
dHJ1Y3R1cmUgbmVlZGVkIGZvciBwbGF5aW5nIG1lZGlhIHBsYXllciBpbiB0aGUgR1BVIHByb2Nl
c3MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwNTA5
NAorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNTc4MTUzOTM+CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLCBubyBmdW5jdGlvbmFs
IGNoYW5nZSB5ZXQuCisKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2o6CisgICAgICAgICogcGxhdGZvcm0vQ29udGVudFR5cGUuaDoKKyAgICAgICAgKFdlYkNvcmU6
OkNvbnRlbnRUeXBlOjplbmNvZGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudFR5
cGU6OmRlY29kZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6bnVsbExvZ2dlcik6CisgICAgICAgIChXZWJDb3JlOjpudWxs
Q29udGVudFR5cGVWZWN0b3IpOgorICAgICAgICAoV2ViQ29yZTo6bXV0YWJsZUluc3RhbGxlZE1l
ZGlhRW5naW5lc1ZlY3Rvcik6CisgICAgICAgIChXZWJDb3JlOjpyZWdpc3RlclJlbW90ZVBsYXll
ckNhbGxiYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbW90ZU1lZGlhUGxheWVyU3VwcG9ydDo6
c2V0UmVnaXN0ZXJSZW1vdGVQbGF5ZXJDYWxsYmFjayk6CisgICAgICAgIChXZWJDb3JlOjpidWls
ZE1lZGlhRW5naW5lc1ZlY3Rvcik6CisgICAgICAgIChXZWJDb3JlOjppbnN0YWxsZWRNZWRpYUVu
Z2luZXMpOgorICAgICAgICAoV2ViQ29yZTo6YWRkTWVkaWFFbmdpbmUpOgorICAgICAgICAoV2Vi
Q29yZTo6TWVkaWFQbGF5ZXI6Om1lZGlhRW5naW5lKToKKyAgICAgICAgKFdlYkNvcmU6OmJlc3RN
ZWRpYUVuZ2luZUZvclN1cHBvcnRQYXJhbWV0ZXJzKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlh
UGxheWVyOjpuZXh0TWVkaWFFbmdpbmUpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXI6
OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllcjo6TWVkaWFQbGF5ZXIpOgor
ICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXI6Om5leHRCZXN0TWVkaWFFbmdpbmUpOgorICAg
ICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXI6OmxvYWRXaXRoTmV4dE1lZGlhRW5naW5lKToKKyAg
ICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyOjpnZXRTdXBwb3J0ZWRUeXBlcyk6CisgICAgICAg
IChXZWJDb3JlOjpNZWRpYVBsYXllcjo6b3JpZ2luc0luTWVkaWFDYWNoZSk6CisgICAgICAgIChX
ZWJDb3JlOjpNZWRpYVBsYXllcjo6Y2xlYXJNZWRpYUNhY2hlKToKKyAgICAgICAgKFdlYkNvcmU6
Ok1lZGlhUGxheWVyOjpjbGVhck1lZGlhQ2FjaGVGb3JPcmlnaW5zKToKKyAgICAgICAgKFdlYkNv
cmU6Ok1lZGlhUGxheWVyOjpzdXBwb3J0c0tleVN5c3RlbSk6CisgICAgICAgIChXZWJDb3JlOjpN
ZWRpYVBsYXllcjo6bmV0d29ya1N0YXRlQ2hhbmdlZCk6CisgICAgICAgIChXZWJDb3JlOjpuZXh0
TWVkaWFFbmdpbmUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXI6Om5l
eHRCZXN0TWVkaWFFbmdpbmUgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL01lZGlhUGxheWVyLmg6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYUVuZ2luZVN1cHBv
cnRQYXJhbWV0ZXJzOjplbmNvZGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFFbmdp
bmVTdXBwb3J0UGFyYW1ldGVyczo6ZGVjb2RlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxh
eWVyRmFjdG9yeTo6fk1lZGlhUGxheWVyRmFjdG9yeSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRp
YVBsYXllckZhY3Rvcnk6Om9yaWdpbnNJbk1lZGlhQ2FjaGUgY29uc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6TWVkaWFQbGF5ZXJGYWN0b3J5OjpjbGVhck1lZGlhQ2FjaGUgY29uc3QpOgorICAgICAg
ICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJGYWN0b3J5OjpjbGVhck1lZGlhQ2FjaGVGb3JPcmlnaW5z
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyRmFjdG9yeTo6c3VwcG9ydHNL
ZXlTeXN0ZW0gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXI6OnNldFZpZGVv
RnVsbHNjcmVlbkxheWVyKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVy
OjpzaXplIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyOjpp
bnZhbGlkVGltZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllcjo6cGxh
dGZvcm1Wb2x1bWVDb25maWd1cmF0aW9uUmVxdWlyZWQgY29uc3QpOiBEZWxldGVkLgorICAgICAg
ICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXI6OmNvbnRlbnRNSU1FVHlwZSBjb25zdCk6IERlbGV0ZWQu
CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllcjo6Y29udGVudFR5cGVDb2RlY3MgY29uc3Qp
OiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXI6OmNvbnRlbnRNSU1FVHlw
ZVdhc0luZmVycmVkRnJvbUV4dGVuc2lvbiBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJD
b3JlOjpNZWRpYVBsYXllcjo6bWVkaWFQbGF5ZXJMb2dJZGVudGlmaWVyKTogRGVsZXRlZC4KKyAg
ICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyOjpyZW5kZXJpbmdDYW5CZUFjY2VsZXJhdGVkIGNv
bnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyOjpyZW5kZXJpbmdN
b2RlQ2hhbmdlZCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXll
cjo6YWNjZWxlcmF0ZWRDb21wb3NpdGluZ0VuYWJsZWQpOiBEZWxldGVkLgorICAgICAgICAoV2Vi
Q29yZTo6TWVkaWFQbGF5ZXI6OmFjdGl2ZVNvdXJjZUJ1ZmZlcnNDaGFuZ2VkKTogRGVsZXRlZC4K
KyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyOjpwbGF5ZXJDb250ZW50Qm94UmVjdCBjb25z
dCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllcjo6cGxheWVyQ29udGVu
dHNTY2FsZSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllcjo6
c2hvdWxkVXNlUGVyc2lzdGVudENhY2hlIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNv
cmU6Ok1lZGlhUGxheWVyOjptZWRpYUNhY2hlRGlyZWN0b3J5IGNvbnN0KTogRGVsZXRlZC4KKyAg
ICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyOjppc1ZpZGVvUGxheWVyIGNvbnN0KTogRGVsZXRl
ZC4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyOjptZWRpYUVuZ2luZVVwZGF0ZWQpOiBE
ZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXI6OmlzTG9vcGluZyBjb25zdCk6
IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllcjo6cmVxdWVzdEluc3RhbGxN
aXNzaW5nUGx1Z2lucyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllcjo6
Y2xpZW50IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9NZWRp
YVBsYXllckVuZ2luZUlkZW50aWZpZXJzLmg6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL0NvbnRlbnRUeXBlLmguCisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllckVuZ2lu
ZUlkZW50aWZpZXJzOjphdkZvdW5kYXRpb25FbmdpbmVJZGVudGlmaWVyKToKKyAgICAgICAgKFdl
YkNvcmU6Ok1lZGlhUGxheWVyRW5naW5lSWRlbnRpZmllcnM6OmF2Rm91bmRhdGlvbk1TRUVuZ2lu
ZUlkZW50aWZpZXIpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJFbmdpbmVJZGVudGlm
aWVyczo6YXZGb3VuZGF0aW9uTWVkaWFTdHJlYW1FbmdpbmVJZGVudGlmaWVyKToKKyAgICAgICAg
KFdlYkNvcmU6Ok1lZGlhUGxheWVyRW5naW5lSWRlbnRpZmllcnM6OkdTdHJlYW1lck1lZGlhRW5n
aW5lSWRlbnRpZmllcik6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllckVuZ2luZUlkZW50
aWZpZXJzOjpHU3RyZWFtZXJNU0VNZWRpYUVuZ2luZUlkZW50aWZpZXIpOgorICAgICAgICAoV2Vi
Q29yZTo6TWVkaWFQbGF5ZXJFbmdpbmVJZGVudGlmaWVyczo6aG9sZVB1bmNoTWVkaWFFbmdpbmVJ
ZGVudGlmaWVyKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyRW5naW5lSWRlbnRpZmll
cnM6Ok1lZGlhRm91bmRhdGlvbk1lZGlhRW5naW5lSWRlbnRpZmllcik6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvUGxhdGZvcm1UaW1lUmFuZ2VzLmg6CisgICAgICAgIChXZWJDb3JlOjpQ
bGF0Zm9ybVRpbWVSYW5nZXM6OlBsYXRmb3JtVGltZVJhbmdlcyk6IERlbGV0ZWQuCisgICAgICAg
IChXZWJDb3JlOjpQbGF0Zm9ybVRpbWVSYW5nZXM6Omxlbmd0aCBjb25zdCk6IERlbGV0ZWQuCisg
ICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybVRpbWVSYW5nZXM6OlJhbmdlOjpSYW5nZSk6IERlbGV0
ZWQuCisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybVRpbWVSYW5nZXM6OlJhbmdlOjppc1BvaW50
SW5SYW5nZSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybVRpbWVS
YW5nZXM6OlJhbmdlOjppc092ZXJsYXBwaW5nUmFuZ2UgY29uc3QpOiBEZWxldGVkLgorICAgICAg
ICAoV2ViQ29yZTo6UGxhdGZvcm1UaW1lUmFuZ2VzOjpSYW5nZTo6aXNDb250aWd1b3VzV2l0aFJh
bmdlIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtVGltZVJhbmdl
czo6UmFuZ2U6OnVuaW9uV2l0aE92ZXJsYXBwaW5nT3JDb250aWd1b3VzUmFuZ2UgY29uc3QpOiBE
ZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1UaW1lUmFuZ2VzOjpSYW5nZTo6aXNC
ZWZvcmVSYW5nZSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
YXZmb3VuZGF0aW9uL2NmL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbkNGLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbkNGOjpyZWdpc3Rl
ck1lZGlhRW5naW5lKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24v
b2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLmg6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3Vu
ZGF0aW9uT2JqQy5tbToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUFWRm91
bmRhdGlvbk9iakM6OnJlZ2lzdGVyTWVkaWFFbmdpbmUpOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZG
T2JqQy5tbToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNl
QVZGT2JqQzo6cmVnaXN0ZXJNZWRpYUVuZ2luZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpD
Lm1tOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZP
YmpDOjpyZWdpc3Rlck1lZGlhRW5naW5lKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9n
c3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6cmVnaXN0ZXJNZWRpYUVuZ2luZSk6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL21zZS9NZWRpYVBsYXllclByaXZh
dGVHU3RyZWFtZXJNU0UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRl
R1N0cmVhbWVyTVNFOjpyZWdpc3Rlck1lZGlhRW5naW5lKToKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9ob2xlcHVuY2gvTWVkaWFQbGF5ZXJQcml2YXRlSG9sZVB1bmNoLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUhvbGVQdW5jaDo6cmVnaXN0ZXJNZWRpYUVu
Z2luZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL01lZGlhUGxheWVyUHJpdmF0
ZU1lZGlhRm91bmRhdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZh
dGVNZWRpYUZvdW5kYXRpb246OnJlZ2lzdGVyTWVkaWFFbmdpbmUpOgorICAgICAgICAqIHBsYXRm
b3JtL21vY2svbWVkaWFzb3VyY2UvTW9ja01lZGlhUGxheWVyTWVkaWFTb3VyY2UuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6TW9ja01lZGlhUGxheWVyTWVkaWFTb3VyY2U6OnJlZ2lzdGVyTWVkaWFF
bmdpbmUpOgorCiAyMDE5LTEyLTExICBFcmljIENhcmxzb24gIDxlcmljLmNhcmxzb25AYXBwbGUu
Y29tPgogCiAgICAgICAgIEFkZCBlbmNvZGVycyBmb3IgTWVkaWFQbGF5ZXJFbnVtIGVudW1zCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdl
TG9nCmluZGV4IDc1M2ZkODg3YmFlMDM4MjVmM2ZlYmM0NjAxNTM5Yzg1ODQyNTQ0MjMuLjMyZWI1
NjI1NDUyYmU5NWIzMWI0MTlhMGFlMzk0N2M3NjNlNGYwZmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEs
MTg3IEBACisyMDE5LTEyLTEwICBFcmljIENhcmxzb24gIDxlcmljLmNhcmxzb25AYXBwbGUuY29t
PgorCisgICAgICAgIEFkZCBpbmZyYXN0cnVjdHVyZSBuZWVkZWQgZm9yIHBsYXlpbmcgbWVkaWEg
cGxheWVyIGluIHRoZSBHUFUgcHJvY2VzcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MjA1MDk0CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS81NzgxNTM5
Mz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIERl
cml2ZWRTb3VyY2VzLWlucHV0LnhjZmlsZWxpc3Q6CisgICAgICAgICogRGVyaXZlZFNvdXJjZXMt
b3V0cHV0LnhjZmlsZWxpc3Q6CisgICAgICAgICogRGVyaXZlZFNvdXJjZXMubWFrZToKKyAgICAg
ICAgKiBHUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwOgorICAgICAgICAo
V2ViS2l0OjpHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpHUFVDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzKToKKyAgICAgICAgKFdlYktpdDo6R1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6fkdQVUNv
bm5lY3Rpb25Ub1dlYlByb2Nlc3MpOgorICAgICAgICAoV2ViS2l0OjpHUFVDb25uZWN0aW9uVG9X
ZWJQcm9jZXNzOjpkaWRSZWNlaXZlTWVzc2FnZSk6CisgICAgICAgIChXZWJLaXQ6OkdQVUNvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3M6OmRpZFJlY2VpdmVTeW5jTWVzc2FnZSk6CisgICAgICAgICogR1BV
UHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmg6CisgICAgICAgICogR1BVUHJvY2Vz
cy9tZWRpYS9SZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eS5jcHA6IEFkZGVkLgorICAgICAg
ICAoV2ViS2l0OjpudWxsTG9nZ2VyKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTWVkaWFQbGF5
ZXJNYW5hZ2VyUHJveHk6OlBsYXllclByb3h5OjpQbGF5ZXJQcm94eSk6CisgICAgICAgIChXZWJL
aXQ6OlJlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5OjpQbGF5ZXJQcm94eTo6flBsYXllclBy
b3h5KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHk6OlJl
bW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTWVk
aWFQbGF5ZXJNYW5hZ2VyUHJveHk6On5SZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eSk6Cisg
ICAgICAgIChXZWJLaXQ6OlJlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5OjpjcmVhdGVNZWRp
YVBsYXllcik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5
OjpnZXRTdXBwb3J0ZWRUeXBlcyk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZU1lZGlhUGxheWVy
TWFuYWdlclByb3h5OjpzdXBwb3J0c1R5cGUpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVNZWRp
YVBsYXllck1hbmFnZXJQcm94eTo6b3JpZ2luc0luTWVkaWFDYWNoZSk6CisgICAgICAgIChXZWJL
aXQ6OlJlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5OjpjbGVhck1lZGlhQ2FjaGUpOgorICAg
ICAgICAoV2ViS2l0OjpSZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eTo6Y2xlYXJNZWRpYUNh
Y2hlRm9yT3JpZ2lucyk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZU1lZGlhUGxheWVyTWFuYWdl
clByb3h5OjpzdXBwb3J0c0tleVN5c3RlbSk6CisgICAgICAgICogR1BVUHJvY2Vzcy9tZWRpYS9S
ZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eS5oOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6
UmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHk6OndlYlByb2Nlc3NDb25uZWN0aW9uIGNvbnN0
KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHk6OmRpZFJl
Y2VpdmVNZXNzYWdlRnJvbVdlYlByb2Nlc3MpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVNZWRp
YVBsYXllck1hbmFnZXJQcm94eTo6ZGlkUmVjZWl2ZVN5bmNNZXNzYWdlRnJvbVdlYlByb2Nlc3Mp
OgorICAgICAgICAqIEdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJv
eHkubWVzc2FnZXMuaW46IEFkZGVkLgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0L21lc3NhZ2Vz
LnB5OgorICAgICAgICAqIFNvdXJjZXMudHh0OgorICAgICAgICAqIFNvdXJjZXNDb2NvYS50eHQ6
CisgICAgICAgICogV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICog
V2ViUHJvY2Vzcy9HUFUvbWVkaWEvTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlLmNwcDogQWRkZWQu
CisgICAgICAgIChXZWJLaXQ6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6TWVkaWFQbGF5ZXJQ
cml2YXRlUmVtb3RlKToKKyAgICAgICAgKFdlYktpdDo6TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3Rl
Ojp+TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlKToKKyAgICAgICAgKFdlYktpdDo6TWVkaWFQbGF5
ZXJQcml2YXRlUmVtb3RlOjpNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OmxvYWQpOgorICAgICAg
ICAoV2ViS2l0OjpNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OmxvYWQpOgorICAgICAgICAoV2Vi
S2l0OjpNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OmNhbmNlbExvYWQpOgorICAgICAgICAoV2Vi
S2l0OjpNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OnByZXBhcmVUb1BsYXkpOgorICAgICAgICAo
V2ViS2l0OjpNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OnBsYXRmb3JtTGF5ZXIgY29uc3QpOgor
ICAgICAgICAoV2ViS2l0OjpNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OnNldFZpZGVvRnVsbHNj
cmVlbkxheWVyKToKKyAgICAgICAgKFdlYktpdDo6TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjp1
cGRhdGVWaWRlb0Z1bGxzY3JlZW5JbmxpbmVJbWFnZSk6CisgICAgICAgIChXZWJLaXQ6Ok1lZGlh
UGxheWVyUHJpdmF0ZVJlbW90ZTo6c2V0VmlkZW9GdWxsc2NyZWVuRnJhbWUpOgorICAgICAgICAo
V2ViS2l0OjpNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OnNldFZpZGVvRnVsbHNjcmVlbkdyYXZp
dHkpOgorICAgICAgICAoV2ViS2l0OjpNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OnNldFZpZGVv
RnVsbHNjcmVlbk1vZGUpOgorICAgICAgICAoV2ViS2l0OjpNZWRpYVBsYXllclByaXZhdGVSZW1v
dGU6OnZpZGVvRnVsbHNjcmVlblN0YW5kYnlDaGFuZ2VkKToKKyAgICAgICAgKFdlYktpdDo6TWVk
aWFQbGF5ZXJQcml2YXRlUmVtb3RlOjphY2Nlc3NMb2cgY29uc3QpOgorICAgICAgICAoV2ViS2l0
OjpNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OmVycm9yTG9nIGNvbnN0KToKKyAgICAgICAgKFdl
YktpdDo6TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpwbGF0Zm9ybUVycm9yQ29kZSBjb25zdCk6
CisgICAgICAgIChXZWJLaXQ6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6cGxheSk6CisgICAg
ICAgIChXZWJLaXQ6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6cGF1c2UpOgorICAgICAgICAo
V2ViS2l0OjpNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OnNldEJ1ZmZlcmluZ1BvbGljeSk6Cisg
ICAgICAgIChXZWJLaXQ6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6c3VwcG9ydHNQaWN0dXJl
SW5QaWN0dXJlIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6TWVkaWFQbGF5ZXJQcml2YXRlUmVt
b3RlOjpzdXBwb3J0c0Z1bGxzY3JlZW4gY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpNZWRpYVBs
YXllclByaXZhdGVSZW1vdGU6OnN1cHBvcnRzU2Nhbm5pbmcgY29uc3QpOgorICAgICAgICAoV2Vi
S2l0OjpNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OnJlcXVpcmVzSW1tZWRpYXRlQ29tcG9zaXRp
bmcgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OmNh
blNhdmVNZWRpYURhdGEgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpNZWRpYVBsYXllclByaXZh
dGVSZW1vdGU6Om5hdHVyYWxTaXplIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6TWVkaWFQbGF5
ZXJQcml2YXRlUmVtb3RlOjpoYXNWaWRlbyBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6Ok1lZGlh
UGxheWVyUHJpdmF0ZVJlbW90ZTo6aGFzQXVkaW8gY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpN
ZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OnNldFZpc2libGUpOgorICAgICAgICAoV2ViS2l0OjpN
ZWRpYVBsYXllclByaXZhdGVSZW1vdGU6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6ZHVyYXRp
b25NZWRpYVRpbWUgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpNZWRpYVBsYXllclByaXZhdGVS
ZW1vdGU6OmN1cnJlbnRNZWRpYVRpbWUgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpNZWRpYVBs
YXllclByaXZhdGVSZW1vdGU6OmdldFN0YXJ0RGF0ZSBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6
Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6c2Vlayk6CisgICAgICAgIChXZWJLaXQ6Ok1lZGlh
UGxheWVyUHJpdmF0ZVJlbW90ZTo6c2Vla1dpdGhUb2xlcmFuY2UpOgorICAgICAgICAoV2ViS2l0
OjpNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OnNlZWtpbmcgY29uc3QpOgorICAgICAgICAoV2Vi
S2l0OjpNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OnN0YXJ0VGltZSBjb25zdCk6CisgICAgICAg
IChXZWJLaXQ6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6c2V0UmF0ZURvdWJsZSk6CisgICAg
ICAgIChXZWJLaXQ6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6cmF0ZSBjb25zdCk6CisgICAg
ICAgIChXZWJLaXQ6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6c2V0UHJlc2VydmVzUGl0Y2gp
OgorICAgICAgICAoV2ViS2l0OjpNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OnBhdXNlZCBjb25z
dCk6CisgICAgICAgIChXZWJLaXQ6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6c2V0Vm9sdW1l
RG91YmxlKToKKyAgICAgICAgKFdlYktpdDo6TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpzZXRN
dXRlZCk6CisgICAgICAgIChXZWJLaXQ6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6aGFzQ2xv
c2VkQ2FwdGlvbnMgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpNZWRpYVBsYXllclByaXZhdGVS
ZW1vdGU6OnNldENsb3NlZENhcHRpb25zVmlzaWJsZSk6CisgICAgICAgIChXZWJLaXQ6Ok1lZGlh
UGxheWVyUHJpdmF0ZVJlbW90ZTo6bWF4RmFzdEZvcndhcmRSYXRlIGNvbnN0KToKKyAgICAgICAg
KFdlYktpdDo6TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjptaW5GYXN0UmV2ZXJzZVJhdGUgY29u
c3QpOgorICAgICAgICAoV2ViS2l0OjpNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6Om5ldHdvcmtT
dGF0ZSBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6
cmVhZHlTdGF0ZSBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6Ok1lZGlhUGxheWVyUHJpdmF0ZVJl
bW90ZTo6c2Vla2FibGUgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpNZWRpYVBsYXllclByaXZh
dGVSZW1vdGU6OmJ1ZmZlcmVkIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6TWVkaWFQbGF5ZXJQ
cml2YXRlUmVtb3RlOjptYXhNZWRpYVRpbWVTZWVrYWJsZSBjb25zdCk6CisgICAgICAgIChXZWJL
aXQ6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6bWluTWVkaWFUaW1lU2Vla2FibGUgY29uc3Qp
OgorICAgICAgICAoV2ViS2l0OjpNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OnNlZWthYmxlVGlt
ZVJhbmdlc0xhc3RNb2RpZmllZFRpbWUgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpNZWRpYVBs
YXllclByaXZhdGVSZW1vdGU6OmxpdmVVcGRhdGVJbnRlcnZhbCBjb25zdCk6CisgICAgICAgIChX
ZWJLaXQ6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6dG90YWxCeXRlcyBjb25zdCk6CisgICAg
ICAgIChXZWJLaXQ6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6ZGlkTG9hZGluZ1Byb2dyZXNz
IGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpzZXRT
aXplKToKKyAgICAgICAgKFdlYktpdDo6TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpwYWludCk6
CisgICAgICAgIChXZWJLaXQ6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6cGFpbnRDdXJyZW50
RnJhbWVJbkNvbnRleHQpOgorICAgICAgICAoV2ViS2l0OjpNZWRpYVBsYXllclByaXZhdGVSZW1v
dGU6OmNvcHlWaWRlb1RleHR1cmVUb1BsYXRmb3JtVGV4dHVyZSk6CisgICAgICAgIChXZWJLaXQ6
Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6bmF0aXZlSW1hZ2VGb3JDdXJyZW50VGltZSk6Cisg
ICAgICAgIChXZWJLaXQ6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6c2V0UHJlbG9hZCk6Cisg
ICAgICAgIChXZWJLaXQ6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6aGFzQXZhaWxhYmxlVmlk
ZW9GcmFtZSBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90
ZTo6Y2FuTG9hZFBvc3RlciBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6Ok1lZGlhUGxheWVyUHJp
dmF0ZVJlbW90ZTo6c2V0UG9zdGVyKToKKyAgICAgICAgKFdlYktpdDo6TWVkaWFQbGF5ZXJQcml2
YXRlUmVtb3RlOjplbnRlckZ1bGxzY3JlZW4pOgorICAgICAgICAoV2ViS2l0OjpNZWRpYVBsYXll
clByaXZhdGVSZW1vdGU6OmV4aXRGdWxsc2NyZWVuKToKKyAgICAgICAgKFdlYktpdDo6TWVkaWFQ
bGF5ZXJQcml2YXRlUmVtb3RlOjp3aXJlbGVzc1BsYXliYWNrVGFyZ2V0TmFtZSBjb25zdCk6Cisg
ICAgICAgIChXZWJLaXQ6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6d2lyZWxlc3NQbGF5YmFj
a1RhcmdldFR5cGUgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpNZWRpYVBsYXllclByaXZhdGVS
ZW1vdGU6OndpcmVsZXNzVmlkZW9QbGF5YmFja0Rpc2FibGVkIGNvbnN0KToKKyAgICAgICAgKFdl
YktpdDo6TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpzZXRXaXJlbGVzc1ZpZGVvUGxheWJhY2tE
aXNhYmxlZCk6CisgICAgICAgIChXZWJLaXQ6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6Y2Fu
UGxheVRvV2lyZWxlc3NQbGF5YmFja1RhcmdldCBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6Ok1l
ZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6aXNDdXJyZW50UGxheWJhY2tUYXJnZXRXaXJlbGVzcyBj
b25zdCk6CisgICAgICAgIChXZWJLaXQ6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6c2V0V2ly
ZWxlc3NQbGF5YmFja1RhcmdldCk6CisgICAgICAgIChXZWJLaXQ6Ok1lZGlhUGxheWVyUHJpdmF0
ZVJlbW90ZTo6c2V0U2hvdWxkUGxheVRvUGxheWJhY2tUYXJnZXQpOgorICAgICAgICAoV2ViS2l0
OjpNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OmNhbkVudGVyRnVsbHNjcmVlbiBjb25zdCk6Cisg
ICAgICAgIChXZWJLaXQ6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6c3VwcG9ydHNBY2NlbGVy
YXRlZFJlbmRlcmluZyBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6Ok1lZGlhUGxheWVyUHJpdmF0
ZVJlbW90ZTo6YWNjZWxlcmF0ZWRSZW5kZXJpbmdTdGF0ZUNoYW5nZWQpOgorICAgICAgICAoV2Vi
S2l0OjpNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OnNob3VsZE1haW50YWluQXNwZWN0UmF0aW8g
Y29uc3QpOgorICAgICAgICAoV2ViS2l0OjpNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OnNldFNo
b3VsZE1haW50YWluQXNwZWN0UmF0aW8pOgorICAgICAgICAoV2ViS2l0OjpNZWRpYVBsYXllclBy
aXZhdGVSZW1vdGU6Omhhc1NpbmdsZVNlY3VyaXR5T3JpZ2luIGNvbnN0KToKKyAgICAgICAgKFdl
YktpdDo6TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpkaWRQYXNzQ09SU0FjY2Vzc0NoZWNrIGNv
bnN0KToKKyAgICAgICAgKFdlYktpdDo6TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjp3b3VsZFRh
aW50T3JpZ2luIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6TWVkaWFQbGF5ZXJQcml2YXRlUmVt
b3RlOjptb3ZpZUxvYWRUeXBlIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6TWVkaWFQbGF5ZXJQ
cml2YXRlUmVtb3RlOjpwcmVwYXJlRm9yUmVuZGVyaW5nKToKKyAgICAgICAgKFdlYktpdDo6TWVk
aWFQbGF5ZXJQcml2YXRlUmVtb3RlOjptZWRpYVRpbWVGb3JUaW1lVmFsdWUgY29uc3QpOgorICAg
ICAgICAoV2ViS2l0OjpNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6Om1heGltdW1EdXJhdGlvblRv
Q2FjaGVNZWRpYVRpbWUgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpNZWRpYVBsYXllclByaXZh
dGVSZW1vdGU6OmRlY29kZWRGcmFtZUNvdW50IGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6TWVk
aWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpkcm9wcGVkRnJhbWVDb3VudCBjb25zdCk6CisgICAgICAg
IChXZWJLaXQ6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6YXVkaW9EZWNvZGVkQnl0ZUNvdW50
IGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjp2aWRl
b0RlY29kZWRCeXRlQ291bnQgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpNZWRpYVBsYXllclBy
aXZhdGVSZW1vdGU6OnNldFByaXZhdGVCcm93c2luZ01vZGUpOgorICAgICAgICAoV2ViS2l0OjpN
ZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OmVuZ2luZURlc2NyaXB0aW9uIGNvbnN0KToKKyAgICAg
ICAgKFdlYktpdDo6TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjphdWRpb1NvdXJjZVByb3ZpZGVy
KToKKyAgICAgICAgKFdlYktpdDo6TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpjcmVhdGVTZXNz
aW9uKToKKyAgICAgICAgKFdlYktpdDo6TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpzZXRDRE1T
ZXNzaW9uKToKKyAgICAgICAgKFdlYktpdDo6TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjprZXlB
ZGRlZCk6CisgICAgICAgIChXZWJLaXQ6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6Y2RtSW5z
dGFuY2VBdHRhY2hlZCk6CisgICAgICAgIChXZWJLaXQ6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90
ZTo6Y2RtSW5zdGFuY2VEZXRhY2hlZCk6CisgICAgICAgIChXZWJLaXQ6Ok1lZGlhUGxheWVyUHJp
dmF0ZVJlbW90ZTo6YXR0ZW1wdFRvRGVjcnlwdFdpdGhJbnN0YW5jZSk6CisgICAgICAgIChXZWJL
aXQ6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6d2FpdGluZ0ZvcktleSBjb25zdCk6CisgICAg
ICAgIChXZWJLaXQ6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6cmVxdWlyZXNUZXh0VHJhY2tS
ZXByZXNlbnRhdGlvbiBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6Ok1lZGlhUGxheWVyUHJpdmF0
ZVJlbW90ZTo6c2V0VGV4dFRyYWNrUmVwcmVzZW50YXRpb24pOgorICAgICAgICAoV2ViS2l0OjpN
ZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OnN5bmNUZXh0VHJhY2tCb3VuZHMpOgorICAgICAgICAo
V2ViS2l0OjpNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OnRyYWNrc0NoYW5nZWQpOgorICAgICAg
ICAoV2ViS2l0OjpNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OnNpbXVsYXRlQXVkaW9JbnRlcnJ1
cHRpb24pOgorICAgICAgICAoV2ViS2l0OjpNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OmJlZ2lu
U2ltdWxhdGVkSERDUEVycm9yKToKKyAgICAgICAgKFdlYktpdDo6TWVkaWFQbGF5ZXJQcml2YXRl
UmVtb3RlOjplbmRTaW11bGF0ZWRIRENQRXJyb3IpOgorICAgICAgICAoV2ViS2l0OjpNZWRpYVBs
YXllclByaXZhdGVSZW1vdGU6Omxhbmd1YWdlT2ZQcmltYXJ5QXVkaW9UcmFjayBjb25zdCk6Cisg
ICAgICAgIChXZWJLaXQ6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6ZXh0cmFNZW1vcnlDb3N0
IGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpmaWxl
U2l6ZSBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6
ZW5kZWQgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6
OnZpZGVvUGxheWJhY2tRdWFsaXR5TWV0cmljcyk6CisgICAgICAgIChXZWJLaXQ6Ok1lZGlhUGxh
eWVyUHJpdmF0ZVJlbW90ZTo6bm90aWZ5VHJhY2tNb2RlQ2hhbmdlZCk6CisgICAgICAgIChXZWJL
aXQ6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6bm90aWZ5QWN0aXZlU291cmNlQnVmZmVyc0No
YW5nZWQpOgorICAgICAgICAoV2ViS2l0OjpNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OnNldFNo
b3VsZERpc2FibGVTbGVlcCk6CisgICAgICAgIChXZWJLaXQ6Ok1lZGlhUGxheWVyUHJpdmF0ZVJl
bW90ZTo6YXBwbGljYXRpb25XaWxsUmVzaWduQWN0aXZlKToKKyAgICAgICAgKFdlYktpdDo6TWVk
aWFQbGF5ZXJQcml2YXRlUmVtb3RlOjphcHBsaWNhdGlvbkRpZEJlY29tZUFjdGl2ZSk6CisgICAg
ICAgIChXZWJLaXQ6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6cGVyZm9ybVRhc2tBdE1lZGlh
VGltZSk6CisgICAgICAgIChXZWJLaXQ6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6c2hvdWxk
SWdub3JlSW50cmluc2ljU2l6ZSk6CisgICAgICAgIChXZWJLaXQ6Ok1lZGlhUGxheWVyUHJpdmF0
ZVJlbW90ZTo6bG9nQ2hhbm5lbCBjb25zdCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvbWVk
aWEvTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlLmg6IEFkZGVkLgorICAgICAgICAqIFdlYlByb2Nl
c3MvR1BVL21lZGlhL01lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZUlkZW50aWZpZXIuaDogQWRkZWQu
CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2Vy
LmNwcDogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6Ok1lZGlhUGxheWVyUmVtb3RlRmFjdG9yeTo6
TWVkaWFQbGF5ZXJSZW1vdGVGYWN0b3J5KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTWVkaWFQ
bGF5ZXJNYW5hZ2VyOjpSZW1vdGVNZWRpYVBsYXllck1hbmFnZXIpOgorICAgICAgICAoV2ViS2l0
OjpSZW1vdGVNZWRpYVBsYXllck1hbmFnZXI6On5SZW1vdGVNZWRpYVBsYXllck1hbmFnZXIpOgor
ICAgICAgICAoV2ViS2l0OjpSZW1vdGVNZWRpYVBsYXllck1hbmFnZXI6OnN1cHBsZW1lbnROYW1l
KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyOjppbml0aWFsaXpl
KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyOjpjcmVhdGVSZW1v
dGVNZWRpYVBsYXllcik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZU1lZGlhUGxheWVyTWFuYWdl
cjo6Z2V0U3VwcG9ydGVkVHlwZXMpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVNZWRpYVBsYXll
ck1hbmFnZXI6OnN1cHBvcnRzVHlwZUFuZENvZGVjcyk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90
ZU1lZGlhUGxheWVyTWFuYWdlcjo6c3VwcG9ydHNLZXlTeXN0ZW0pOgorICAgICAgICAoV2ViS2l0
OjpSZW1vdGVNZWRpYVBsYXllck1hbmFnZXI6Om9yaWdpbnNJbk1lZGlhQ2FjaGUpOgorICAgICAg
ICAoV2ViS2l0OjpSZW1vdGVNZWRpYVBsYXllck1hbmFnZXI6OmNsZWFyTWVkaWFDYWNoZSk6Cisg
ICAgICAgIChXZWJLaXQ6OlJlbW90ZU1lZGlhUGxheWVyTWFuYWdlcjo6Y2xlYXJNZWRpYUNhY2hl
Rm9yT3JpZ2lucyk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZU1lZGlhUGxheWVyTWFuYWdlcjo6
bmV0d29ya1N0YXRlQ2hhbmdlZCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZU1lZGlhUGxheWVy
TWFuYWdlcjo6dXBkYXRlUHJlZmVyZW5jZXMpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVNZWRp
YVBsYXllck1hbmFnZXI6OmdwdVByb2Nlc3NDb25uZWN0aW9uIGNvbnN0KToKKyAgICAgICAgKiBX
ZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVNZWRpYVBsYXllck1hbmFnZXIuaDogQWRkZWQuCisg
ICAgICAgICogV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyLm1l
c3NhZ2VzLmluOiBBZGRlZC4KKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5j
cHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnVwZGF0ZVByZWZlcmVuY2VzKToKKyAgICAg
ICAgKiBXZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwOgorCiAyMDE5LTEyLTExICBUcnVpdHQgU2F2
ZWxsICA8dHNhdmVsbEBhcHBsZS5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgcm9sbGluZyBv
dXQgcjI1MzM3Ni4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvagppbmRleCAwM2U2ZjU0MzNiZjZmNjdlYmM1ZjQ5ZmVkMGE5NTAxMmQ0YmU0YmY5
Li5iZjI4MWFmZTUxN2I5ZWE2YzRjOWNlNmJkZWMxZTE4NDcwYmY4NGNkIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291
cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xMDQsNiAr
MTA0LDcgQEAKIAkJMDcxRTQ5NkUxQUQ1QUEwRDAwOEE1MEI0IC8qIE1lZGlhUGxheWJhY2tUYXJn
ZXRNYWMubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAw
NzFFNDk2RDFBRDVBQTBEMDA4QTUwQjQgLyogTWVkaWFQbGF5YmFja1RhcmdldE1hYy5tbSAqLzsg
fTsKIAkJMDcxRTQ5NzAxQUQ1QUI1RTAwOEE1MEI0IC8qIE1lZGlhUGxheWJhY2tUYXJnZXRNYWMu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3MUU0OTZG
MUFENUFCNUUwMDhBNTBCNCAvKiBNZWRpYVBsYXliYWNrVGFyZ2V0TWFjLmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMDcyMEIwQTExNEQzMzIzNTAw
NjQyOTU1IC8qIEdlbmVyaWNFdmVudFF1ZXVlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSAwNzIwQjA5RjE0RDMzMjM1MDA2NDI5NTUgLyogR2VuZXJpY0V2
ZW50UXVldWUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OworCQkwNzI1RUZBOTIzOUFENzkzMDBBNTM4QTkgLyogTWVkaWFQbGF5ZXJQcml2YXRlLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwNzlGNUU0QjBGM0JF
QkVBMDA1RTA3ODIgLyogTWVkaWFQbGF5ZXJQcml2YXRlLmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMDcyNzdFNEQxN0QwMThDQzAwMTU1MzREIC8q
IEpTTWVkaWFTdHJlYW0uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDA3Mjc3RTQxMTdEMDE4Q0MwMDE1NTM0RCAvKiBKU01lZGlhU3RyZWFtLmggKi87IH07
CiAJCTA3Mjc3RTREMTdEMDE4Q0MwMDE1NTM0RSAvKiBKU0NhbnZhc0NhcHR1cmVNZWRpYVN0cmVh
bVRyYWNrLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAw
NzI3N0U0MTE3RDAxOENDMDAxNTUzNEUgLyogSlNDYW52YXNDYXB0dXJlTWVkaWFTdHJlYW1UcmFj
ay5oICovOyB9OwogCQkwNzI3N0U0RjE3RDAxOENDMDAxNTUzNEQgLyogSlNNZWRpYVN0cmVhbUF1
ZGlvRGVzdGluYXRpb25Ob2RlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSAwNzI3N0U0MzE3RDAxOENDMDAxNTUzNEQgLyogSlNNZWRpYVN0cmVhbUF1ZGlv
RGVzdGluYXRpb25Ob2RlLmggKi87IH07CkBAIC0zMTM3OSw2ICszMTM4MCw3IEBACiAJCQkJMDc3
QjY0MTMxQjk0RjEyRTAwM0U5QUQ1IC8qIE1lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJNb2NrLmgg
aW4gSGVhZGVycyAqLywKIAkJCQlFNDQ2MTNFNDBDRDY4MUEyMDBGQURBNzUgLyogTWVkaWFQbGF5
ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUNENTIwOUU0MUIwQkQ4MzgwMDc3MTg0RSAvKiBNZWRp
YVBsYXllckVudW1zLmggaW4gSGVhZGVycyAqLywKKwkJCQkwNzI1RUZBOTIzOUFENzkzMDBBNTM4
QTkgLyogTWVkaWFQbGF5ZXJQcml2YXRlLmggaW4gSGVhZGVycyAqLywKIAkJCQkwNzZGMEQwRTEy
QjgxOTI3MDBDMjZBQTQgLyogTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uLmggaW4gSGVh
ZGVycyAqLywKIAkJCQlERjlBRkQ3MjEzRkMzMUQ4MDAxNUZFQjcgLyogTWVkaWFQbGF5ZXJQcml2
YXRlQVZGb3VuZGF0aW9uT2JqQy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQ0RDOEI1QTMxODA0NjM0
NzAwMTZFNjg1IC8qIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQy5oIGluIEhl
YWRlcnMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Db250ZW50VHlw
ZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vQ29udGVudFR5cGUuaAppbmRleCBjODJiNWI3
MTk3YzllMTVkMWUyZjU0N2ZkNTY0MWZjNWY0ZWM1ZWNmLi41ODVhM2ZkNWE3ZWZkMWFiMzQ4ZDE0
ZjFmZjIxZTkwOWU2NjZjMjQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9D
b250ZW50VHlwZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0NvbnRlbnRUeXBlLmgK
QEAgLTMzLDggKzMzLDggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBDb250ZW50VHlw
ZSB7CiBwdWJsaWM6Ci0gICAgZXhwbGljaXQgQ29udGVudFR5cGUoU3RyaW5nJiYgdHlwZSk7Ci0g
ICAgZXhwbGljaXQgQ29udGVudFR5cGUoY29uc3QgU3RyaW5nJiB0eXBlKTsKKyAgICBXRUJDT1JF
X0VYUE9SVCBleHBsaWNpdCBDb250ZW50VHlwZShTdHJpbmcmJiB0eXBlKTsKKyAgICBXRUJDT1JF
X0VYUE9SVCBleHBsaWNpdCBDb250ZW50VHlwZShjb25zdCBTdHJpbmcmIHR5cGUpOwogICAgIENv
bnRlbnRUeXBlKCkgPSBkZWZhdWx0OwogCiAgICAgc3RhdGljIGNvbnN0IFN0cmluZyYgY29kZWNz
UGFyYW1ldGVyKCk7CkBAIC00OSw2ICs0OSwyMyBAQCBwdWJsaWM6CiAKICAgICBTdHJpbmcgdG9K
U09OU3RyaW5nKCkgY29uc3Q7CiAKKyAgICB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPgorICAgIHZv
aWQgZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0CisgICAgeworICAgICAgICBlbmNvZGVy
IDw8IG1fdHlwZTsKKyAgICB9CisKKyAgICB0ZW1wbGF0ZSA8Y2xhc3MgRGVjb2Rlcj4KKyAgICBz
dGF0aWMgT3B0aW9uYWw8Q29udGVudFR5cGU+IGRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQorICAg
IHsKKyAgICAgICAgT3B0aW9uYWw8U3RyaW5nPiB0eXBlOworICAgICAgICBkZWNvZGVyID4+IHR5
cGU7CisgICAgICAgIGlmICghdHlwZSkKKyAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7
CisKKyAgICAgICAgcmV0dXJuIHsgQ29udGVudFR5cGUoV1RGTW92ZSgqdHlwZSkpIH07CisgICAg
fQorCiBwcml2YXRlOgogICAgIFN0cmluZyBtX3R5cGU7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuY3BwCmluZGV4IGNlMjNhYjc4NGJjNmMy
YTE1ZmI4OTFkODE1Nzk1OWYxYzE2NGI1NGEuLmYxNDA3YTYxMGE0MTFiMmFhZThhMDdhMTU2N2Mz
MTBjMjBhMjQxNGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L01lZGlhUGxheWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9N
ZWRpYVBsYXllci5jcHAKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA3
LTIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAy
MDA3LTIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCkBAIC05MCwxNCArOTAsNiBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKLSNpZiAhUkVMRUFTRV9MT0dfRElTQUJMRUQKLXN0YXRpYyBSZWZQdHI8TG9nZ2VyPiYgbnVs
bExvZ2dlcigpCi17Ci0gICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFJlZlB0cjxMb2dnZXI+PiBs
b2dnZXI7Ci0gICAgcmV0dXJuIGxvZ2dlcjsKLX0KLSNlbmRpZgotCiAvLyBhIG51bGwgcGxheWVy
IHRvIG1ha2UgTWVkaWFQbGF5ZXIgbG9naWMgc2ltcGxlcgogCiBjbGFzcyBOdWxsTWVkaWFQbGF5
ZXJQcml2YXRlIGZpbmFsIDogcHVibGljIE1lZGlhUGxheWVyUHJpdmF0ZUludGVyZmFjZSB7CkBA
IC0xNjYsOCArMTU4LDIyIEBAIHB1YmxpYzoKICAgICBib29sIGhhc1NpbmdsZVNlY3VyaXR5T3Jp
Z2luKCkgY29uc3QgZmluYWwgeyByZXR1cm4gdHJ1ZTsgfQogfTsKIAorI2lmICFSRUxFQVNFX0xP
R19ESVNBQkxFRAorc3RhdGljIFJlZlB0cjxMb2dnZXI+JiBudWxsTG9nZ2VyKCkKK3sKKyAgICBz
dGF0aWMgTmV2ZXJEZXN0cm95ZWQ8UmVmUHRyPExvZ2dlcj4+IGxvZ2dlcjsKKyAgICByZXR1cm4g
bG9nZ2VyOworfQorI2VuZGlmCisKK3N0YXRpYyBjb25zdCBWZWN0b3I8V2ViQ29yZTo6Q29udGVu
dFR5cGU+JiBudWxsQ29udGVudFR5cGVWZWN0b3IoKQoreworICAgIHN0YXRpYyBOZXZlckRlc3Ry
b3llZDxWZWN0b3I8V2ViQ29yZTo6Q29udGVudFR5cGU+PiB2ZWN0b3I7CisgICAgcmV0dXJuIHZl
Y3RvcjsKK30KKwogY2xhc3MgTnVsbE1lZGlhUGxheWVyQ2xpZW50IDogcHVibGljIE1lZGlhUGxh
eWVyQ2xpZW50IHsKLXB1YmxpYzoKK3ByaXZhdGU6CiAjaWYgIVJFTEVBU0VfTE9HX0RJU0FCTEVE
CiAgICAgY29uc3QgTG9nZ2VyJiBtZWRpYVBsYXllckxvZ2dlcigpIGZpbmFsCiAgICAgewpAQCAt
MTc5LDggKzE4NSwxMSBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiAqbnVsbExvZ2dlcigpLmdl
dCgpOwogICAgIH0KICNlbmRpZgorCisgICAgY29uc3QgVmVjdG9yPFdlYkNvcmU6OkNvbnRlbnRU
eXBlPiYgbWVkaWFDb250ZW50VHlwZXNSZXF1aXJpbmdIYXJkd2FyZVN1cHBvcnQoKSBjb25zdCBm
aW5hbCB7IHJldHVybiBudWxsQ29udGVudFR5cGVWZWN0b3IoKTsgfQogfTsKIAorCiBjb25zdCBW
ZWN0b3I8Q29udGVudFR5cGU+JiBNZWRpYVBsYXllckNsaWVudDo6bWVkaWFDb250ZW50VHlwZXNS
ZXF1aXJpbmdIYXJkd2FyZVN1cHBvcnQoKSBjb25zdAogewogICAgIHN0YXRpYyBOZXZlckRlc3Ry
b3llZDxWZWN0b3I8Q29udGVudFR5cGU+PiBjb250ZW50VHlwZXM7CkBAIC0xOTUsMTcgKzIwNCw3
IEBAIHN0YXRpYyBNZWRpYVBsYXllckNsaWVudCYgbnVsbE1lZGlhUGxheWVyQ2xpZW50KCkKIAog
Ly8gZW5naW5lIHN1cHBvcnQKIAotc3RydWN0IE1lZGlhUGxheWVyRmFjdG9yeSB7Ci0gICAgQ3Jl
YXRlTWVkaWFFbmdpbmVQbGF5ZXIgY29uc3RydWN0b3I7Ci0gICAgTWVkaWFFbmdpbmVTdXBwb3J0
ZWRUeXBlcyBnZXRTdXBwb3J0ZWRUeXBlczsKLSAgICBNZWRpYUVuZ2luZVN1cHBvcnRzVHlwZSBz
dXBwb3J0c1R5cGVBbmRDb2RlY3M7Ci0gICAgTWVkaWFFbmdpbmVPcmlnaW5zSW5NZWRpYUNhY2hl
IG9yaWdpbnNJbk1lZGlhQ2FjaGU7Ci0gICAgTWVkaWFFbmdpbmVDbGVhck1lZGlhQ2FjaGUgY2xl
YXJNZWRpYUNhY2hlOwotICAgIE1lZGlhRW5naW5lQ2xlYXJNZWRpYUNhY2hlRm9yT3JpZ2lucyBj
bGVhck1lZGlhQ2FjaGVGb3JPcmlnaW5zOwotICAgIE1lZGlhRW5naW5lU3VwcG9ydHNLZXlTeXN0
ZW0gc3VwcG9ydHNLZXlTeXN0ZW07Ci19OwotCi1zdGF0aWMgdm9pZCBhZGRNZWRpYUVuZ2luZShD
cmVhdGVNZWRpYUVuZ2luZVBsYXllciYmLCBNZWRpYUVuZ2luZVN1cHBvcnRlZFR5cGVzLCBNZWRp
YUVuZ2luZVN1cHBvcnRzVHlwZSwgTWVkaWFFbmdpbmVPcmlnaW5zSW5NZWRpYUNhY2hlLCBNZWRp
YUVuZ2luZUNsZWFyTWVkaWFDYWNoZSwgTWVkaWFFbmdpbmVDbGVhck1lZGlhQ2FjaGVGb3JPcmln
aW5zLCBNZWRpYUVuZ2luZVN1cHBvcnRzS2V5U3lzdGVtKTsKK3N0YXRpYyB2b2lkIGFkZE1lZGlh
RW5naW5lKHN0ZDo6dW5pcXVlX3B0cjxNZWRpYVBsYXllckZhY3Rvcnk+KTsKIAogc3RhdGljIExv
Y2sgbWVkaWFFbmdpbmVWZWN0b3JMb2NrOwogCkBAIC0yMTUsMjEgKzIxNCwzNyBAQCBzdGF0aWMg
Ym9vbCYgaGF2ZU1lZGlhRW5naW5lc1ZlY3RvcigpCiAgICAgcmV0dXJuIGhhdmVWZWN0b3I7CiB9
CiAKLXN0YXRpYyBWZWN0b3I8TWVkaWFQbGF5ZXJGYWN0b3J5PiYgbXV0YWJsZUluc3RhbGxlZE1l
ZGlhRW5naW5lc1ZlY3RvcigpCitzdGF0aWMgVmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxNZWRpYVBs
YXllckZhY3Rvcnk+PiYgbXV0YWJsZUluc3RhbGxlZE1lZGlhRW5naW5lc1ZlY3RvcigpCiB7Ci0g
ICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFZlY3RvcjxNZWRpYVBsYXllckZhY3Rvcnk+PiBpbnN0
YWxsZWRFbmdpbmVzOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxWZWN0b3I8c3RkOjp1bmlx
dWVfcHRyPE1lZGlhUGxheWVyRmFjdG9yeT4+PiBpbnN0YWxsZWRFbmdpbmVzOwogICAgIHJldHVy
biBpbnN0YWxsZWRFbmdpbmVzOwogfQogCitzdGF0aWMgUmVtb3RlTWVkaWFQbGF5ZXJTdXBwb3J0
OjpSZWdpc3RlclJlbW90ZVBsYXllckNhbGxiYWNrJiByZWdpc3RlclJlbW90ZVBsYXllckNhbGxi
YWNrKCkKK3sKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8UmVtb3RlTWVkaWFQbGF5ZXJTdXBw
b3J0OjpSZWdpc3RlclJlbW90ZVBsYXllckNhbGxiYWNrPiBjYWxsYmFjazsKKyAgICByZXR1cm4g
Y2FsbGJhY2s7Cit9CisKK3ZvaWQgUmVtb3RlTWVkaWFQbGF5ZXJTdXBwb3J0OjpzZXRSZWdpc3Rl
clJlbW90ZVBsYXllckNhbGxiYWNrKFJlZ2lzdGVyUmVtb3RlUGxheWVyQ2FsbGJhY2smJiBjYWxs
YmFjaykKK3sKKyAgICByZWdpc3RlclJlbW90ZVBsYXllckNhbGxiYWNrKCkgPSBXVEZNb3ZlKGNh
bGxiYWNrKTsKK30KKwogc3RhdGljIHZvaWQgYnVpbGRNZWRpYUVuZ2luZXNWZWN0b3IoKQogewog
ICAgIEFTU0VSVChtZWRpYUVuZ2luZVZlY3RvckxvY2suaXNMb2NrZWQoKSk7CiAKICNpZiBVU0Uo
QVZGT1VOREFUSU9OKQorICAgIGF1dG8mIHJlZ2lzdGVyUmVtb3RlRW5naW5lID0gcmVnaXN0ZXJS
ZW1vdGVQbGF5ZXJDYWxsYmFjaygpOworCiAgICAgaWYgKERlcHJlY2F0ZWRHbG9iYWxTZXR0aW5n
czo6aXNBVkZvdW5kYXRpb25FbmFibGVkKCkpIHsKIAogI2lmIFBMQVRGT1JNKENPQ09BKQotICAg
ICAgICBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpyZWdpc3Rlck1lZGlhRW5n
aW5lKGFkZE1lZGlhRW5naW5lKTsKKyAgICAgICAgaWYgKHJlZ2lzdGVyUmVtb3RlRW5naW5lKQor
ICAgICAgICAgICAgcmVnaXN0ZXJSZW1vdGVFbmdpbmUoYWRkTWVkaWFFbmdpbmUsIE1lZGlhUGxh
eWVyRW51bXM6Ok1lZGlhRW5naW5lSWRlbnRpZmllcjo6QVZGb3VuZGF0aW9uKTsKKyAgICAgICAg
ZWxzZQorICAgICAgICAgICAgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6cmVn
aXN0ZXJNZWRpYUVuZ2luZShhZGRNZWRpYUVuZ2luZSk7CiAjZW5kaWYKIAogI2lmIEVOQUJMRShN
RURJQV9TT1VSQ0UpCkBAIC0yNjUsNyArMjgwLDcgQEAgc3RhdGljIHZvaWQgYnVpbGRNZWRpYUVu
Z2luZXNWZWN0b3IoKQogICAgIGhhdmVNZWRpYUVuZ2luZXNWZWN0b3IoKSA9IHRydWU7CiB9CiAK
LXN0YXRpYyBjb25zdCBWZWN0b3I8TWVkaWFQbGF5ZXJGYWN0b3J5PiYgaW5zdGFsbGVkTWVkaWFF
bmdpbmVzKCkKK3N0YXRpYyBjb25zdCBWZWN0b3I8c3RkOjp1bmlxdWVfcHRyPE1lZGlhUGxheWVy
RmFjdG9yeT4+JiBpbnN0YWxsZWRNZWRpYUVuZ2luZXMoKQogewogICAgIHsKICAgICAgICAgYXV0
byBsb2NrZXIgPSBob2xkTG9jayhtZWRpYUVuZ2luZVZlY3RvckxvY2spOwpAQCAtMjc2LDE0ICsy
OTEsOSBAQCBzdGF0aWMgY29uc3QgVmVjdG9yPE1lZGlhUGxheWVyRmFjdG9yeT4mIGluc3RhbGxl
ZE1lZGlhRW5naW5lcygpCiAgICAgcmV0dXJuIG11dGFibGVJbnN0YWxsZWRNZWRpYUVuZ2luZXNW
ZWN0b3IoKTsKIH0KIAotc3RhdGljIHZvaWQgYWRkTWVkaWFFbmdpbmUoQ3JlYXRlTWVkaWFFbmdp
bmVQbGF5ZXImJiBjb25zdHJ1Y3RvciwgTWVkaWFFbmdpbmVTdXBwb3J0ZWRUeXBlcyBnZXRTdXBw
b3J0ZWRUeXBlcywgTWVkaWFFbmdpbmVTdXBwb3J0c1R5cGUgc3VwcG9ydHNUeXBlLAotICAgIE1l
ZGlhRW5naW5lT3JpZ2luc0luTWVkaWFDYWNoZSBvcmlnaW5zSW5NZWRpYUNhY2hlLCBNZWRpYUVu
Z2luZUNsZWFyTWVkaWFDYWNoZSBjbGVhck1lZGlhQ2FjaGUsIE1lZGlhRW5naW5lQ2xlYXJNZWRp
YUNhY2hlRm9yT3JpZ2lucyBjbGVhck1lZGlhQ2FjaGVGb3JPcmlnaW5zLCBNZWRpYUVuZ2luZVN1
cHBvcnRzS2V5U3lzdGVtIHN1cHBvcnRzS2V5U3lzdGVtKQorc3RhdGljIHZvaWQgYWRkTWVkaWFF
bmdpbmUoc3RkOjp1bmlxdWVfcHRyPE1lZGlhUGxheWVyRmFjdG9yeT4gZmFjdG9yeSkKIHsKLSAg
ICBBU1NFUlQoY29uc3RydWN0b3IpOwotICAgIEFTU0VSVChnZXRTdXBwb3J0ZWRUeXBlcyk7Ci0g
ICAgQVNTRVJUKHN1cHBvcnRzVHlwZSk7Ci0KLSAgICBtdXRhYmxlSW5zdGFsbGVkTWVkaWFFbmdp
bmVzVmVjdG9yKCkuYXBwZW5kKE1lZGlhUGxheWVyRmFjdG9yeSB7IFdURk1vdmUoY29uc3RydWN0
b3IpLCBnZXRTdXBwb3J0ZWRUeXBlcywgc3VwcG9ydHNUeXBlLCBvcmlnaW5zSW5NZWRpYUNhY2hl
LCBjbGVhck1lZGlhQ2FjaGUsIGNsZWFyTWVkaWFDYWNoZUZvck9yaWdpbnMsIHN1cHBvcnRzS2V5
U3lzdGVtIH0pOworICAgIG11dGFibGVJbnN0YWxsZWRNZWRpYUVuZ2luZXNWZWN0b3IoKS5hcHBl
bmQoV1RGTW92ZShmYWN0b3J5KSk7CiB9CiAKIHN0YXRpYyBjb25zdCBBdG9tU3RyaW5nJiBhcHBs
aWNhdGlvbk9jdGV0U3RyZWFtKCkKQEAgLTI5OCw2ICszMDgsMjEgQEAgc3RhdGljIGNvbnN0IEF0
b21TdHJpbmcmIHRleHRQbGFpbigpCiAgICAgcmV0dXJuIHRleHRQbGFpbjsKIH0KIAorY29uc3Qg
TWVkaWFQbGF5ZXJGYWN0b3J5KiBNZWRpYVBsYXllcjo6bWVkaWFFbmdpbmUoTWVkaWFQbGF5ZXJF
bnVtczo6TWVkaWFFbmdpbmVJZGVudGlmaWVyIGlkZW50aWZpZXIpCit7CisgICAgYXV0byYgZW5n
aW5lcyA9IGluc3RhbGxlZE1lZGlhRW5naW5lcygpOworICAgIGF1dG8gY3VycmVudEluZGV4ID0g
ZW5naW5lcy5maW5kTWF0Y2hpbmcoW2lkZW50aWZpZXJdIChhdXRvJiBlbmdpbmUpIHsKKyAgICAg
ICAgcmV0dXJuIGVuZ2luZS0+aWRlbnRpZmllcigpID09IGlkZW50aWZpZXI7CisgICAgfSk7CisK
KyAgICBpZiAoY3VycmVudEluZGV4ID09IG5vdEZvdW5kKSB7CisgICAgICAgIEFTU0VSVF9OT1Rf
UkVBQ0hFRCgpOworICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICB9CisKKyAgICByZXR1cm4g
ZW5naW5lc1tjdXJyZW50SW5kZXggKyAxXS5nZXQoKTsKK30KKwogc3RhdGljIGNvbnN0IE1lZGlh
UGxheWVyRmFjdG9yeSogYmVzdE1lZGlhRW5naW5lRm9yU3VwcG9ydFBhcmFtZXRlcnMoY29uc3Qg
TWVkaWFFbmdpbmVTdXBwb3J0UGFyYW1ldGVycyYgcGFyYW1ldGVycywgY29uc3QgTWVkaWFQbGF5
ZXJGYWN0b3J5KiBjdXJyZW50ID0gbnVsbHB0cikKIHsKICAgICBpZiAocGFyYW1ldGVycy50eXBl
LmlzRW1wdHkoKSAmJiAhcGFyYW1ldGVycy5pc01lZGlhU291cmNlICYmICFwYXJhbWV0ZXJzLmlz
TWVkaWFTdHJlYW0pCkBAIC0zMTUsMzQgKzM0MCw0NiBAQCBzdGF0aWMgY29uc3QgTWVkaWFQbGF5
ZXJGYWN0b3J5KiBiZXN0TWVkaWFFbmdpbmVGb3JTdXBwb3J0UGFyYW1ldGVycyhjb25zdCBNZWRp
YQogICAgIE1lZGlhUGxheWVyOjpTdXBwb3J0c1R5cGUgc3VwcG9ydGVkID0gTWVkaWFQbGF5ZXI6
OlN1cHBvcnRzVHlwZTo6SXNOb3RTdXBwb3J0ZWQ7CiAgICAgZm9yIChhdXRvJiBlbmdpbmUgOiBp
bnN0YWxsZWRNZWRpYUVuZ2luZXMoKSkgewogICAgICAgICBpZiAoY3VycmVudCkgewotICAgICAg
ICAgICAgaWYgKGN1cnJlbnQgPT0gJmVuZ2luZSkKKyAgICAgICAgICAgIGlmIChjdXJyZW50ID09
IGVuZ2luZS5nZXQoKSkKICAgICAgICAgICAgICAgICBjdXJyZW50ID0gbnVsbHB0cjsKICAgICAg
ICAgICAgIGNvbnRpbnVlOwogICAgICAgICB9Ci0gICAgICAgIE1lZGlhUGxheWVyOjpTdXBwb3J0
c1R5cGUgZW5naW5lU3VwcG9ydCA9IGVuZ2luZS5zdXBwb3J0c1R5cGVBbmRDb2RlY3MocGFyYW1l
dGVycyk7CisgICAgICAgIE1lZGlhUGxheWVyOjpTdXBwb3J0c1R5cGUgZW5naW5lU3VwcG9ydCA9
IGVuZ2luZS0+c3VwcG9ydHNUeXBlQW5kQ29kZWNzKHBhcmFtZXRlcnMpOwogICAgICAgICBpZiAo
ZW5naW5lU3VwcG9ydCA+IHN1cHBvcnRlZCkgewogICAgICAgICAgICAgc3VwcG9ydGVkID0gZW5n
aW5lU3VwcG9ydDsKLSAgICAgICAgICAgIGZvdW5kRW5naW5lID0gJmVuZ2luZTsKKyAgICAgICAg
ICAgIGZvdW5kRW5naW5lID0gZW5naW5lLmdldCgpOwogICAgICAgICB9CiAgICAgfQogCiAgICAg
cmV0dXJuIGZvdW5kRW5naW5lOwogfQogCi1zdGF0aWMgY29uc3QgTWVkaWFQbGF5ZXJGYWN0b3J5
KiBuZXh0TWVkaWFFbmdpbmUoY29uc3QgTWVkaWFQbGF5ZXJGYWN0b3J5KiBjdXJyZW50KQorY29u
c3QgTWVkaWFQbGF5ZXJGYWN0b3J5KiBNZWRpYVBsYXllcjo6bmV4dE1lZGlhRW5naW5lKGNvbnN0
IE1lZGlhUGxheWVyRmFjdG9yeSogY3VycmVudCkKIHsKKyAgICBpZiAobV9hY3RpdmVFbmdpbmVJ
ZGVudGlmaWVyKSB7CisgICAgICAgIGF1dG8qIGVuZ2luZSA9IG1lZGlhRW5naW5lKG1fYWN0aXZl
RW5naW5lSWRlbnRpZmllci52YWx1ZSgpKTsKKyAgICAgICAgcmV0dXJuIGN1cnJlbnQgIT0gZW5n
aW5lID8gZW5naW5lIDogbnVsbHB0cjsKKyAgICB9CisKICAgICBhdXRvJiBlbmdpbmVzID0gaW5z
dGFsbGVkTWVkaWFFbmdpbmVzKCk7CiAgICAgaWYgKGVuZ2luZXMuaXNFbXB0eSgpKQogICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKIAogICAgIGlmICghY3VycmVudCkgCi0gICAgICAgIHJldHVybiAm
ZW5naW5lcy5maXJzdCgpOworICAgICAgICByZXR1cm4gZW5naW5lcy5maXJzdCgpLmdldCgpOwor
CisgICAgYXV0byBjdXJyZW50SW5kZXggPSBlbmdpbmVzLmZpbmRNYXRjaGluZyhbY3VycmVudF0g
KGF1dG8mIGVuZ2luZSkgeworICAgICAgICByZXR1cm4gZW5naW5lLmdldCgpID09IGN1cnJlbnQ7
CisgICAgfSk7CisgICAgaWYgKGN1cnJlbnRJbmRleCA9PSBub3RGb3VuZCkgeworICAgICAgICBB
U1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgfQogCi0g
ICAgc2l6ZV90IGN1cnJlbnRJbmRleCA9IGN1cnJlbnQgLSAmZW5naW5lcy5maXJzdCgpOwogICAg
IGlmIChjdXJyZW50SW5kZXggKyAxID49IGVuZ2luZXMuc2l6ZSgpKQogICAgICAgICByZXR1cm4g
bnVsbHB0cjsKIAotICAgIHJldHVybiAmZW5naW5lc1tjdXJyZW50SW5kZXggKyAxXTsKKyAgICBy
ZXR1cm4gZW5naW5lc1tjdXJyZW50SW5kZXggKyAxXS5nZXQoKTsKIH0KIAogLy8gbWVkaWEgcGxh
eWVyCkBAIC0zNTIsNiArMzg5LDEzIEBAIFJlZjxNZWRpYVBsYXllcj4gTWVkaWFQbGF5ZXI6OmNy
ZWF0ZShNZWRpYVBsYXllckNsaWVudCYgY2xpZW50KQogICAgIHJldHVybiBhZG9wdFJlZigqbmV3
IE1lZGlhUGxheWVyKGNsaWVudCkpOwogfQogCitSZWY8TWVkaWFQbGF5ZXI+IE1lZGlhUGxheWVy
OjpjcmVhdGUoTWVkaWFQbGF5ZXJDbGllbnQmIGNsaWVudCwgTWVkaWFQbGF5ZXJFbnVtczo6TWVk
aWFFbmdpbmVJZGVudGlmaWVyIG1lZGlhRW5naW5lSWRlbnRpZmllcikKK3sKKyAgICByZXR1cm4g
YWRvcHRSZWYoKm5ldyBNZWRpYVBsYXllcihjbGllbnQsIG1lZGlhRW5naW5lSWRlbnRpZmllcikp
OworfQorCisKKwogTWVkaWFQbGF5ZXI6Ok1lZGlhUGxheWVyKE1lZGlhUGxheWVyQ2xpZW50JiBj
bGllbnQpCiAgICAgOiBtX2NsaWVudCgmY2xpZW50KQogICAgICwgbV9yZWxvYWRUaW1lcigqdGhp
cywgJk1lZGlhUGxheWVyOjpyZWxvYWRUaW1lckZpcmVkKQpAQCAtMzU5LDYgKzQwMywxNCBAQCBN
ZWRpYVBsYXllcjo6TWVkaWFQbGF5ZXIoTWVkaWFQbGF5ZXJDbGllbnQmIGNsaWVudCkKIHsKIH0K
IAorTWVkaWFQbGF5ZXI6Ok1lZGlhUGxheWVyKE1lZGlhUGxheWVyQ2xpZW50JiBjbGllbnQsIE1l
ZGlhUGxheWVyRW51bXM6Ok1lZGlhRW5naW5lSWRlbnRpZmllciBtZWRpYUVuZ2luZUlkZW50aWZp
ZXIpCisgICAgOiBtX2NsaWVudCgmY2xpZW50KQorICAgICwgbV9yZWxvYWRUaW1lcigqdGhpcywg
Jk1lZGlhUGxheWVyOjpyZWxvYWRUaW1lckZpcmVkKQorICAgICwgbV9wcml2YXRlKG1ha2VVbmlx
dWU8TnVsbE1lZGlhUGxheWVyUHJpdmF0ZT4odGhpcykpCisgICAgLCBtX2FjdGl2ZUVuZ2luZUlk
ZW50aWZpZXIobWVkaWFFbmdpbmVJZGVudGlmaWVyKQoreworfQorCiBNZWRpYVBsYXllcjo6fk1l
ZGlhUGxheWVyKCkKIHsKICAgICBBU1NFUlQoIW1faW5pdGlhbGl6aW5nTWVkaWFFbmdpbmUpOwpA
QCAtNDQxLDcgKzQ5Myw3IEBAIGJvb2wgTWVkaWFQbGF5ZXI6OmxvYWQoTWVkaWFTdHJlYW1Qcml2
YXRlJiBtZWRpYVN0cmVhbSkKIH0KICNlbmRpZgogCi1jb25zdCBNZWRpYVBsYXllckZhY3Rvcnkq
IE1lZGlhUGxheWVyOjpuZXh0QmVzdE1lZGlhRW5naW5lKGNvbnN0IE1lZGlhUGxheWVyRmFjdG9y
eSogY3VycmVudCkgY29uc3QKK2NvbnN0IE1lZGlhUGxheWVyRmFjdG9yeSogTWVkaWFQbGF5ZXI6
Om5leHRCZXN0TWVkaWFFbmdpbmUoY29uc3QgTWVkaWFQbGF5ZXJGYWN0b3J5KiBjdXJyZW50KQog
ewogICAgIE1lZGlhRW5naW5lU3VwcG9ydFBhcmFtZXRlcnMgcGFyYW1ldGVyczsKICAgICBwYXJh
bWV0ZXJzLnR5cGUgPSBtX2NvbnRlbnRUeXBlOwpAQCAtNDUzLDkgKzUwNSwyNyBAQCBjb25zdCBN
ZWRpYVBsYXllckZhY3RvcnkqIE1lZGlhUGxheWVyOjpuZXh0QmVzdE1lZGlhRW5naW5lKGNvbnN0
IE1lZGlhUGxheWVyRmFjdAogICAgIHBhcmFtZXRlcnMuaXNNZWRpYVN0cmVhbSA9ICEhbV9tZWRp
YVN0cmVhbTsKICNlbmRpZgogCisgICAgaWYgKG1fYWN0aXZlRW5naW5lSWRlbnRpZmllcikgewor
ICAgICAgICBpZiAoY3VycmVudCkKKyAgICAgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAg
ICAgIGF1dG8qIGVuZ2luZSA9IG1lZGlhRW5naW5lKG1fYWN0aXZlRW5naW5lSWRlbnRpZmllci52
YWx1ZSgpKTsKKyAgICAgICAgaWYgKGVuZ2luZSAmJiBlbmdpbmUtPnN1cHBvcnRzVHlwZUFuZENv
ZGVjcyhwYXJhbWV0ZXJzKSAhPSBTdXBwb3J0c1R5cGU6OklzTm90U3VwcG9ydGVkKQorICAgICAg
ICAgICAgcmV0dXJuIGVuZ2luZTsKKworICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICB9CisK
ICAgICByZXR1cm4gYmVzdE1lZGlhRW5naW5lRm9yU3VwcG9ydFBhcmFtZXRlcnMocGFyYW1ldGVy
cywgY3VycmVudCk7CiB9CiAKK3ZvaWQgTWVkaWFQbGF5ZXI6Om1lZGlhUGxheWVyRmFpbGVkVG9M
b2FkKCkKK3sKKyAgICBjbGllbnQoKS5tZWRpYVBsYXllckVuZ2luZUZhaWxlZFRvTG9hZCgpOwor
ICAgIGlmICghbV9hY3RpdmVFbmdpbmVJZGVudGlmaWVyICYmIGluc3RhbGxlZE1lZGlhRW5naW5l
cygpLnNpemUoKSA+IDEgJiYgKG1fY29udGVudFR5cGUuaXNFbXB0eSgpIHx8IG5leHRCZXN0TWVk
aWFFbmdpbmUobV9jdXJyZW50TWVkaWFFbmdpbmUpKSkKKyAgICAgICAgbV9yZWxvYWRUaW1lci5z
dGFydE9uZVNob3QoMF9zKTsKK30KKwogdm9pZCBNZWRpYVBsYXllcjo6bG9hZFdpdGhOZXh0TWVk
aWFFbmdpbmUoY29uc3QgTWVkaWFQbGF5ZXJGYWN0b3J5KiBjdXJyZW50KQogewogI2lmIEVOQUJM
RShNRURJQV9TT1VSQ0UpIApAQCAtNDg5LDEzICs1NTksMTUgQEAgdm9pZCBNZWRpYVBsYXllcjo6
bG9hZFdpdGhOZXh0TWVkaWFFbmdpbmUoY29uc3QgTWVkaWFQbGF5ZXJGYWN0b3J5KiBjdXJyZW50
KQogICAgICAgICBtX3ByaXZhdGUgPSBudWxscHRyOwogICAgIH0gZWxzZSBpZiAobV9jdXJyZW50
TWVkaWFFbmdpbmUgIT0gZW5naW5lKSB7CiAgICAgICAgIG1fY3VycmVudE1lZGlhRW5naW5lID0g
ZW5naW5lOwotICAgICAgICBtX3ByaXZhdGUgPSBlbmdpbmUtPmNvbnN0cnVjdG9yKHRoaXMpOwot
ICAgICAgICBjbGllbnQoKS5tZWRpYVBsYXllckVuZ2luZVVwZGF0ZWQoKTsKLSAgICAgICAgbV9w
cml2YXRlLT5zZXRQcml2YXRlQnJvd3NpbmdNb2RlKG1fcHJpdmF0ZUJyb3dzaW5nKTsKLSAgICAg
ICAgbV9wcml2YXRlLT5zZXRQcmVsb2FkKG1fcHJlbG9hZCk7Ci0gICAgICAgIG1fcHJpdmF0ZS0+
c2V0UHJlc2VydmVzUGl0Y2gocHJlc2VydmVzUGl0Y2goKSk7Ci0gICAgICAgIGlmIChtX3Nob3Vs
ZFByZXBhcmVUb1JlbmRlcikKLSAgICAgICAgICAgIG1fcHJpdmF0ZS0+cHJlcGFyZUZvclJlbmRl
cmluZygpOworICAgICAgICBtX3ByaXZhdGUgPSBlbmdpbmUtPmNyZWF0ZU1lZGlhRW5naW5lUGxh
eWVyKHRoaXMpOworICAgICAgICBpZiAobV9wcml2YXRlKSB7CisgICAgICAgICAgICBjbGllbnQo
KS5tZWRpYVBsYXllckVuZ2luZVVwZGF0ZWQoKTsKKyAgICAgICAgICAgIG1fcHJpdmF0ZS0+c2V0
UHJpdmF0ZUJyb3dzaW5nTW9kZShtX3ByaXZhdGVCcm93c2luZyk7CisgICAgICAgICAgICBtX3By
aXZhdGUtPnNldFByZWxvYWQobV9wcmVsb2FkKTsKKyAgICAgICAgICAgIG1fcHJpdmF0ZS0+c2V0
UHJlc2VydmVzUGl0Y2gocHJlc2VydmVzUGl0Y2goKSk7CisgICAgICAgICAgICBpZiAobV9zaG91
bGRQcmVwYXJlVG9SZW5kZXIpCisgICAgICAgICAgICAgICAgbV9wcml2YXRlLT5wcmVwYXJlRm9y
UmVuZGVyaW5nKCk7CisgICAgICAgIH0KICAgICB9CiAKICAgICBpZiAobV9wcml2YXRlKSB7CkBA
IC01MTIsOCArNTg0LDEyIEBAIHZvaWQgTWVkaWFQbGF5ZXI6OmxvYWRXaXRoTmV4dE1lZGlhRW5n
aW5lKGNvbnN0IE1lZGlhUGxheWVyRmFjdG9yeSogY3VycmVudCkKICAgICAgICAgbV9wcml2YXRl
LT5sb2FkKG1fdXJsLnN0cmluZygpKTsKICAgICB9IGVsc2UgewogICAgICAgICBtX3ByaXZhdGUg
PSBtYWtlVW5pcXVlPE51bGxNZWRpYVBsYXllclByaXZhdGU+KHRoaXMpOwotICAgICAgICBjbGll
bnQoKS5tZWRpYVBsYXllckVuZ2luZVVwZGF0ZWQoKTsKLSAgICAgICAgY2xpZW50KCkubWVkaWFQ
bGF5ZXJSZXNvdXJjZU5vdFN1cHBvcnRlZCgpOworICAgICAgICBpZiAoIW1fYWN0aXZlRW5naW5l
SWRlbnRpZmllciAmJiBpbnN0YWxsZWRNZWRpYUVuZ2luZXMoKS5zaXplKCkgPiAxICYmIChtX2Nv
bnRlbnRUeXBlLmlzRW1wdHkoKSB8fCBuZXh0QmVzdE1lZGlhRW5naW5lKG1fY3VycmVudE1lZGlh
RW5naW5lKSkpCisgICAgICAgICAgICBtX3JlbG9hZFRpbWVyLnN0YXJ0T25lU2hvdCgwX3MpOwor
ICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIGNsaWVudCgpLm1lZGlhUGxheWVyRW5naW5lVXBk
YXRlZCgpOworICAgICAgICAgICAgY2xpZW50KCkubWVkaWFQbGF5ZXJSZXNvdXJjZU5vdFN1cHBv
cnRlZCgpOworICAgICAgICB9CiAgICAgfQogCiAgICAgbV9pbml0aWFsaXppbmdNZWRpYUVuZ2lu
ZSA9IGZhbHNlOwpAQCAtOTI5LDcgKzEwMDUsNyBAQCB2b2lkIE1lZGlhUGxheWVyOjpnZXRTdXBw
b3J0ZWRUeXBlcyhIYXNoU2V0PFN0cmluZywgQVNDSUlDYXNlSW5zZW5zaXRpdmVIYXNoPiYgdAog
ewogICAgIGZvciAoYXV0byYgZW5naW5lIDogaW5zdGFsbGVkTWVkaWFFbmdpbmVzKCkpIHsKICAg
ICAgICAgSGFzaFNldDxTdHJpbmcsIEFTQ0lJQ2FzZUluc2Vuc2l0aXZlSGFzaD4gZW5naW5lVHlw
ZXM7Ci0gICAgICAgIGVuZ2luZS5nZXRTdXBwb3J0ZWRUeXBlcyhlbmdpbmVUeXBlcyk7CisgICAg
ICAgIGVuZ2luZS0+Z2V0U3VwcG9ydGVkVHlwZXMoZW5naW5lVHlwZXMpOwogICAgICAgICB0eXBl
cy5hZGQoZW5naW5lVHlwZXMuYmVnaW4oKSwgZW5naW5lVHlwZXMuZW5kKCkpOwogICAgIH0KIH0g
CkBAIC0xMTI1LDM0ICsxMjAxLDI4IEBAIHN0YXRpYyB2b2lkIGFkZFRvSGFzaChIYXNoU2V0PFQ+
JiB0b0hhc2gsIEhhc2hTZXQ8VD4mJiBmcm9tSGFzaCkKIEhhc2hTZXQ8UmVmUHRyPFNlY3VyaXR5
T3JpZ2luPj4gTWVkaWFQbGF5ZXI6Om9yaWdpbnNJbk1lZGlhQ2FjaGUoY29uc3QgU3RyaW5nJiBw
YXRoKQogewogICAgIEhhc2hTZXQ8UmVmUHRyPFNlY3VyaXR5T3JpZ2luPj4gb3JpZ2luczsKLSAg
ICBmb3IgKGF1dG8mIGVuZ2luZSA6IGluc3RhbGxlZE1lZGlhRW5naW5lcygpKSB7Ci0gICAgICAg
IGlmICghZW5naW5lLm9yaWdpbnNJbk1lZGlhQ2FjaGUpCi0gICAgICAgICAgICBjb250aW51ZTsK
LSAgICAgICAgYWRkVG9IYXNoKG9yaWdpbnMsIGVuZ2luZS5vcmlnaW5zSW5NZWRpYUNhY2hlKHBh
dGgpKTsKLSAgICB9CisgICAgZm9yIChhdXRvJiBlbmdpbmUgOiBpbnN0YWxsZWRNZWRpYUVuZ2lu
ZXMoKSkKKyAgICAgICAgYWRkVG9IYXNoKG9yaWdpbnMsIGVuZ2luZS0+b3JpZ2luc0luTWVkaWFD
YWNoZShwYXRoKSk7CisKICAgICByZXR1cm4gb3JpZ2luczsKIH0KIAogdm9pZCBNZWRpYVBsYXll
cjo6Y2xlYXJNZWRpYUNhY2hlKGNvbnN0IFN0cmluZyYgcGF0aCwgV2FsbFRpbWUgbW9kaWZpZWRT
aW5jZSkKIHsKLSAgICBmb3IgKGF1dG8mIGVuZ2luZSA6IGluc3RhbGxlZE1lZGlhRW5naW5lcygp
KSB7Ci0gICAgICAgIGlmIChlbmdpbmUuY2xlYXJNZWRpYUNhY2hlKQotICAgICAgICAgICAgZW5n
aW5lLmNsZWFyTWVkaWFDYWNoZShwYXRoLCBtb2RpZmllZFNpbmNlKTsKLSAgICB9CisgICAgZm9y
IChhdXRvJiBlbmdpbmUgOiBpbnN0YWxsZWRNZWRpYUVuZ2luZXMoKSkKKyAgICAgICAgZW5naW5l
LT5jbGVhck1lZGlhQ2FjaGUocGF0aCwgbW9kaWZpZWRTaW5jZSk7CiB9CiAKIHZvaWQgTWVkaWFQ
bGF5ZXI6OmNsZWFyTWVkaWFDYWNoZUZvck9yaWdpbnMoY29uc3QgU3RyaW5nJiBwYXRoLCBjb25z
dCBIYXNoU2V0PFJlZlB0cjxTZWN1cml0eU9yaWdpbj4+JiBvcmlnaW5zKQogewotICAgIGZvciAo
YXV0byYgZW5naW5lIDogaW5zdGFsbGVkTWVkaWFFbmdpbmVzKCkpIHsKLSAgICAgICAgaWYgKGVu
Z2luZS5jbGVhck1lZGlhQ2FjaGVGb3JPcmlnaW5zKQotICAgICAgICAgICAgZW5naW5lLmNsZWFy
TWVkaWFDYWNoZUZvck9yaWdpbnMocGF0aCwgb3JpZ2lucyk7Ci0gICAgfQorICAgIGZvciAoYXV0
byYgZW5naW5lIDogaW5zdGFsbGVkTWVkaWFFbmdpbmVzKCkpCisgICAgICAgIGVuZ2luZS0+Y2xl
YXJNZWRpYUNhY2hlRm9yT3JpZ2lucyhwYXRoLCBvcmlnaW5zKTsKIH0KIAogYm9vbCBNZWRpYVBs
YXllcjo6c3VwcG9ydHNLZXlTeXN0ZW0oY29uc3QgU3RyaW5nJiBrZXlTeXN0ZW0sIGNvbnN0IFN0
cmluZyYgbWltZVR5cGUpCiB7CiAgICAgZm9yIChhdXRvJiBlbmdpbmUgOiBpbnN0YWxsZWRNZWRp
YUVuZ2luZXMoKSkgewotICAgICAgICBpZiAoZW5naW5lLnN1cHBvcnRzS2V5U3lzdGVtICYmIGVu
Z2luZS5zdXBwb3J0c0tleVN5c3RlbShrZXlTeXN0ZW0sIG1pbWVUeXBlKSkKKyAgICAgICAgaWYg
KGVuZ2luZS0+c3VwcG9ydHNLZXlTeXN0ZW0oa2V5U3lzdGVtLCBtaW1lVHlwZSkpCiAgICAgICAg
ICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMTE3Miw3ICsx
MjQyLDcgQEAgdm9pZCBNZWRpYVBsYXllcjo6bmV0d29ya1N0YXRlQ2hhbmdlZCgpCiAgICAgLy8g
bGV0IHRoZSBuZXh0IGVuZ2luZSB0cnkuCiAgICAgaWYgKG1fcHJpdmF0ZS0+bmV0d29ya1N0YXRl
KCkgPj0gTWVkaWFQbGF5ZXI6Ok5ldHdvcmtTdGF0ZTo6Rm9ybWF0RXJyb3IgJiYgbV9wcml2YXRl
LT5yZWFkeVN0YXRlKCkgPCBNZWRpYVBsYXllcjo6UmVhZHlTdGF0ZTo6SGF2ZU1ldGFkYXRhKSB7
CiAgICAgICAgIGNsaWVudCgpLm1lZGlhUGxheWVyRW5naW5lRmFpbGVkVG9Mb2FkKCk7Ci0gICAg
ICAgIGlmIChpbnN0YWxsZWRNZWRpYUVuZ2luZXMoKS5zaXplKCkgPiAxICYmIChtX2NvbnRlbnRU
eXBlLmlzRW1wdHkoKSB8fCBuZXh0QmVzdE1lZGlhRW5naW5lKG1fY3VycmVudE1lZGlhRW5naW5l
KSkpIHsKKyAgICAgICAgaWYgKCFtX2FjdGl2ZUVuZ2luZUlkZW50aWZpZXIgJiYgaW5zdGFsbGVk
TWVkaWFFbmdpbmVzKCkuc2l6ZSgpID4gMSAmJiAobV9jb250ZW50VHlwZS5pc0VtcHR5KCkgfHwg
bmV4dEJlc3RNZWRpYUVuZ2luZShtX2N1cnJlbnRNZWRpYUVuZ2luZSkpKSB7CiAgICAgICAgICAg
ICBtX3JlbG9hZFRpbWVyLnN0YXJ0T25lU2hvdCgwX3MpOwogICAgICAgICAgICAgcmV0dXJuOwog
ICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9N
ZWRpYVBsYXllci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5
ZXIuaAppbmRleCA4YTdiMWU5YmZkNzg3ZjUxMzA1MmI1Njg4MzQ1OTQ0MGRmOWQxYjE3Li5kOGE2
YTZhYjg3YzQ5OWJjMjdhMjg3OGVlYzk5ODE2Zjc4NTI2NDAzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmgKQEAgLTY3LDYgKzY3LDcgQEAgY2xh
c3MgSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZTsKIGNsYXNzIExlZ2FjeUNETVNlc3Npb25DbGllbnQ7
CiBjbGFzcyBNZWRpYVBsYXliYWNrVGFyZ2V0OwogY2xhc3MgTWVkaWFQbGF5ZXI7CitjbGFzcyBN
ZWRpYVBsYXllckZhY3Rvcnk7CiBjbGFzcyBNZWRpYVBsYXllclByaXZhdGVJbnRlcmZhY2U7CiBj
bGFzcyBNZWRpYVBsYXllclJlcXVlc3RJbnN0YWxsTWlzc2luZ1BsdWdpbnNDYWxsYmFjazsKIGNs
YXNzIE1lZGlhU291cmNlUHJpdmF0ZUNsaWVudDsKQEAgLTc2LDcgKzc3LDYgQEAgY2xhc3MgVGV4
dFRyYWNrUmVwcmVzZW50YXRpb247CiAKIHN0cnVjdCBDb29raWU7CiBzdHJ1Y3QgR3JhcGhpY3NE
ZXZpY2VBZGFwdGVyOwotc3RydWN0IE1lZGlhUGxheWVyRmFjdG9yeTsKIAogc3RydWN0IE1lZGlh
RW5naW5lU3VwcG9ydFBhcmFtZXRlcnMgewogICAgIENvbnRlbnRUeXBlIHR5cGU7CkBAIC04NCw2
ICs4NCw0OCBAQCBzdHJ1Y3QgTWVkaWFFbmdpbmVTdXBwb3J0UGFyYW1ldGVycyB7CiAgICAgYm9v
bCBpc01lZGlhU291cmNlIHsgZmFsc2UgfTsKICAgICBib29sIGlzTWVkaWFTdHJlYW0geyBmYWxz
ZSB9OwogICAgIFZlY3RvcjxDb250ZW50VHlwZT4gY29udGVudFR5cGVzUmVxdWlyaW5nSGFyZHdh
cmVTdXBwb3J0OworCisjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKQorICAgIHRlbXBsYXRlPGNsYXNz
IEVuY29kZXI+CisgICAgdm9pZCBlbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QKKyAgICB7
CisgICAgICAgIGVuY29kZXIgPDwgdHlwZTsKKyAgICAgICAgZW5jb2RlciA8PCB1cmw7CisgICAg
ICAgIGVuY29kZXIgPDwgaXNNZWRpYVNvdXJjZTsKKyAgICAgICAgZW5jb2RlciA8PCBjb250ZW50
VHlwZXNSZXF1aXJpbmdIYXJkd2FyZVN1cHBvcnQ7CisgICAgfQorCisgICAgdGVtcGxhdGUgPGNs
YXNzIERlY29kZXI+CisgICAgc3RhdGljIE9wdGlvbmFsPE1lZGlhRW5naW5lU3VwcG9ydFBhcmFt
ZXRlcnM+IGRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQorICAgIHsKKyAgICAgICAgT3B0aW9uYWw8
Q29udGVudFR5cGU+IHR5cGU7CisgICAgICAgIGRlY29kZXIgPj4gdHlwZTsKKyAgICAgICAgaWYg
KCF0eXBlKQorICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKworICAgICAgICBPcHRp
b25hbDxVUkw+IHVybDsKKyAgICAgICAgZGVjb2RlciA+PiB1cmw7CisgICAgICAgIGlmICghdXJs
KQorICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKworICAgICAgICBPcHRpb25hbDxi
b29sPiBpc01lZGlhU291cmNlOworICAgICAgICBkZWNvZGVyID4+IGlzTWVkaWFTb3VyY2U7Cisg
ICAgICAgIGlmICghaXNNZWRpYVNvdXJjZSkKKyAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxv
cHQ7CisKKyAgICAgICAgT3B0aW9uYWw8Ym9vbD4gaXNNZWRpYVN0cmVhbTsKKyAgICAgICAgZGVj
b2RlciA+PiBpc01lZGlhU3RyZWFtOworICAgICAgICBpZiAoIWlzTWVkaWFTdHJlYW0pCisgICAg
ICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworCisgICAgICAgIE9wdGlvbmFsPFZlY3RvcjxD
b250ZW50VHlwZT4+IHR5cGVzUmVxdWlyaW5nSGFyZHdhcmU7CisgICAgICAgIGRlY29kZXIgPj4g
dHlwZXNSZXF1aXJpbmdIYXJkd2FyZTsKKyAgICAgICAgaWYgKCF0eXBlc1JlcXVpcmluZ0hhcmR3
YXJlKQorICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKworICAgICAgICByZXR1cm4g
e3sgV1RGTW92ZSgqdHlwZSksIFdURk1vdmUoKnVybCksIFdURk1vdmUoKmlzTWVkaWFTb3VyY2Up
LCBXVEZNb3ZlKCppc01lZGlhU3RyZWFtKSwgV1RGTW92ZSgqdHlwZXNSZXF1aXJpbmdIYXJkd2Fy
ZSkgfX07CisgICAgfQorI2VuZGlmCiB9OwogCiBzdHJ1Y3QgVmlkZW9QbGF5YmFja1F1YWxpdHlN
ZXRyaWNzIHsKQEAgLTIzNSw3ICsyNzcsNyBAQCBwdWJsaWM6CiAjZW5kaWYKIAogICAgIHZpcnR1
YWwgYm9vbCBtZWRpYVBsYXllclNob3VsZERpc2FibGVTbGVlcCgpIGNvbnN0IHsgcmV0dXJuIGZh
bHNlOyB9Ci0gICAgdmlydHVhbCBjb25zdCBWZWN0b3I8Q29udGVudFR5cGU+JiBtZWRpYUNvbnRl
bnRUeXBlc1JlcXVpcmluZ0hhcmR3YXJlU3VwcG9ydCgpIGNvbnN0OworICAgIHZpcnR1YWwgY29u
c3QgVmVjdG9yPENvbnRlbnRUeXBlPiYgbWVkaWFDb250ZW50VHlwZXNSZXF1aXJpbmdIYXJkd2Fy
ZVN1cHBvcnQoKSBjb25zdCA9IDA7CiAgICAgdmlydHVhbCBib29sIG1lZGlhUGxheWVyU2hvdWxk
Q2hlY2tIYXJkd2FyZVN1cHBvcnQoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogCiAjaWYgIVJF
TEVBU0VfTE9HX0RJU0FCTEVECkBAIC0yNDQsMTUgKzI4NiwxOCBAQCBwdWJsaWM6CiAjZW5kaWYK
IH07CiAKLWNsYXNzIE1lZGlhUGxheWVyIDogcHVibGljIE1lZGlhUGxheWVyRW51bXMsIHB1Ymxp
YyBSZWZDb3VudGVkPE1lZGlhUGxheWVyPiB7CitjbGFzcyBXRUJDT1JFX0VYUE9SVCBNZWRpYVBs
YXllciA6IHB1YmxpYyBNZWRpYVBsYXllckVudW1zLCBwdWJsaWMgUmVmQ291bnRlZDxNZWRpYVBs
YXllcj4gewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKE1lZGlhUGxheWVyKTsgV1RGX01BS0Vf
RkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgc3RhdGljIFJlZjxNZWRpYVBsYXllcj4gY3Jl
YXRlKE1lZGlhUGxheWVyQ2xpZW50Jik7CisgICAgc3RhdGljIFJlZjxNZWRpYVBsYXllcj4gY3Jl
YXRlKE1lZGlhUGxheWVyQ2xpZW50JiwgTWVkaWFQbGF5ZXJFbnVtczo6TWVkaWFFbmdpbmVJZGVu
dGlmaWVyKTsKICAgICB2aXJ0dWFsIH5NZWRpYVBsYXllcigpOwogCiAgICAgdm9pZCBpbnZhbGlk
YXRlKCk7CiAKICAgICAvLyBNZWRpYSBlbmdpbmUgc3VwcG9ydC4KKyAgICB1c2luZyBNZWRpYVBs
YXllckVudW1zOjpTdXBwb3J0c1R5cGU7CisgICAgc3RhdGljIGNvbnN0IE1lZGlhUGxheWVyRmFj
dG9yeSogbWVkaWFFbmdpbmUoTWVkaWFQbGF5ZXJFbnVtczo6TWVkaWFFbmdpbmVJZGVudGlmaWVy
KTsKICAgICBzdGF0aWMgU3VwcG9ydHNUeXBlIHN1cHBvcnRzVHlwZShjb25zdCBNZWRpYUVuZ2lu
ZVN1cHBvcnRQYXJhbWV0ZXJzJik7CiAgICAgc3RhdGljIHZvaWQgZ2V0U3VwcG9ydGVkVHlwZXMo
SGFzaFNldDxTdHJpbmcsIEFTQ0lJQ2FzZUluc2Vuc2l0aXZlSGFzaD4mKTsKICAgICBzdGF0aWMg
Ym9vbCBpc0F2YWlsYWJsZSgpOwpAQCAtNTMxLDExICs1NzYsMTEgQEAgcHVibGljOgogICAgIHN0
YXRpYyB2b2lkIHJlc2V0TWVkaWFFbmdpbmVzKCk7CiAKICNpZiBVU0UoR1NUUkVBTUVSKQotICAg
IFdFQkNPUkVfRVhQT1JUIHZvaWQgc2ltdWxhdGVBdWRpb0ludGVycnVwdGlvbigpOworICAgIHZv
aWQgc2ltdWxhdGVBdWRpb0ludGVycnVwdGlvbigpOwogI2VuZGlmCiAKLSAgICBXRUJDT1JFX0VY
UE9SVCB2b2lkIGJlZ2luU2ltdWxhdGVkSERDUEVycm9yKCk7Ci0gICAgV0VCQ09SRV9FWFBPUlQg
dm9pZCBlbmRTaW11bGF0ZWRIRENQRXJyb3IoKTsKKyAgICB2b2lkIGJlZ2luU2ltdWxhdGVkSERD
UEVycm9yKCk7CisgICAgdm9pZCBlbmRTaW11bGF0ZWRIRENQRXJyb3IoKTsKIAogICAgIFN0cmlu
ZyBsYW5ndWFnZU9mUHJpbWFyeUF1ZGlvVHJhY2soKSBjb25zdDsKIApAQCAtNTcwLDcgKzYxNSw3
IEBAIHB1YmxpYzoKICAgICB2b2lkIGFwcGxpY2F0aW9uRGlkQmVjb21lQWN0aXZlKCk7CiAKICNp
ZiBVU0UoQVZGT1VOREFUSU9OKQotICAgIFdFQkNPUkVfRVhQT1JUIEFWUGxheWVyICpvYmpDQVZG
b3VuZGF0aW9uQVZQbGF5ZXIoKSBjb25zdDsKKyAgICBBVlBsYXllciAqb2JqQ0FWRm91bmRhdGlv
bkFWUGxheWVyKCkgY29uc3Q7CiAjZW5kaWYKIAogICAgIGJvb2wgcGVyZm9ybVRhc2tBdE1lZGlh
VGltZShXVEY6OkZ1bmN0aW9uPHZvaWQoKT4mJiwgTWVkaWFUaW1lKTsKQEAgLTU5NSwxMSArNjQw
LDE0IEBAIHB1YmxpYzoKIAogcHJpdmF0ZToKICAgICBNZWRpYVBsYXllcihNZWRpYVBsYXllckNs
aWVudCYpOworICAgIE1lZGlhUGxheWVyKE1lZGlhUGxheWVyQ2xpZW50JiwgTWVkaWFQbGF5ZXJF
bnVtczo6TWVkaWFFbmdpbmVJZGVudGlmaWVyKTsKIAogICAgIE1lZGlhUGxheWVyQ2xpZW50JiBj
bGllbnQoKSBjb25zdCB7IHJldHVybiAqbV9jbGllbnQ7IH0KIAotICAgIGNvbnN0IE1lZGlhUGxh
eWVyRmFjdG9yeSogbmV4dEJlc3RNZWRpYUVuZ2luZShjb25zdCBNZWRpYVBsYXllckZhY3Rvcnkq
KSBjb25zdDsKKyAgICBjb25zdCBNZWRpYVBsYXllckZhY3RvcnkqIG5leHRCZXN0TWVkaWFFbmdp
bmUoY29uc3QgTWVkaWFQbGF5ZXJGYWN0b3J5Kik7CiAgICAgdm9pZCBsb2FkV2l0aE5leHRNZWRp
YUVuZ2luZShjb25zdCBNZWRpYVBsYXllckZhY3RvcnkqKTsKKyAgICBjb25zdCBNZWRpYVBsYXll
ckZhY3RvcnkqIG5leHRNZWRpYUVuZ2luZShjb25zdCBNZWRpYVBsYXllckZhY3RvcnkqKTsKKyAg
ICB2b2lkIG1lZGlhUGxheWVyRmFpbGVkVG9Mb2FkKCk7CiAgICAgdm9pZCByZWxvYWRUaW1lckZp
cmVkKCk7CiAKICAgICBNZWRpYVBsYXllckNsaWVudCogbV9jbGllbnQ7CkBAIC02MDksNiArNjU3
LDcgQEAgcHJpdmF0ZToKICAgICBVUkwgbV91cmw7CiAgICAgQ29udGVudFR5cGUgbV9jb250ZW50
VHlwZTsKICAgICBTdHJpbmcgbV9rZXlTeXN0ZW07CisgICAgT3B0aW9uYWw8TWVkaWFQbGF5ZXJF
bnVtczo6TWVkaWFFbmdpbmVJZGVudGlmaWVyPiBtX2FjdGl2ZUVuZ2luZUlkZW50aWZpZXI7CiAg
ICAgSW50U2l6ZSBtX3NpemU7CiAgICAgUHJlbG9hZCBtX3ByZWxvYWQgeyBQcmVsb2FkOjpBdXRv
IH07CiAgICAgZG91YmxlIG1fdm9sdW1lIHsgMSB9OwpAQCAtNjI4LDE2ICs2NzcsMjQgQEAgcHJp
dmF0ZToKICNlbmRpZgogfTsKIAotdXNpbmcgQ3JlYXRlTWVkaWFFbmdpbmVQbGF5ZXIgPSBXVEY6
OkZ1bmN0aW9uPHN0ZDo6dW5pcXVlX3B0cjxNZWRpYVBsYXllclByaXZhdGVJbnRlcmZhY2U+IChN
ZWRpYVBsYXllciopPjsKLXR5cGVkZWYgdm9pZCAoKk1lZGlhRW5naW5lU3VwcG9ydGVkVHlwZXMp
KEhhc2hTZXQ8U3RyaW5nLCBBU0NJSUNhc2VJbnNlbnNpdGl2ZUhhc2g+JiB0eXBlcyk7Ci10eXBl
ZGVmIE1lZGlhUGxheWVyOjpTdXBwb3J0c1R5cGUgKCpNZWRpYUVuZ2luZVN1cHBvcnRzVHlwZSko
Y29uc3QgTWVkaWFFbmdpbmVTdXBwb3J0UGFyYW1ldGVycyYgcGFyYW1ldGVycyk7Ci10eXBlZGVm
IEhhc2hTZXQ8UmVmUHRyPFNlY3VyaXR5T3JpZ2luPj4gKCpNZWRpYUVuZ2luZU9yaWdpbnNJbk1l
ZGlhQ2FjaGUpKGNvbnN0IFN0cmluZyYgcGF0aCk7Ci10eXBlZGVmIHZvaWQgKCpNZWRpYUVuZ2lu
ZUNsZWFyTWVkaWFDYWNoZSkoY29uc3QgU3RyaW5nJiBwYXRoLCBXYWxsVGltZSBtb2RpZmllZFNp
bmNlKTsKLXR5cGVkZWYgdm9pZCAoKk1lZGlhRW5naW5lQ2xlYXJNZWRpYUNhY2hlRm9yT3JpZ2lu
cykoY29uc3QgU3RyaW5nJiBwYXRoLCBjb25zdCBIYXNoU2V0PFJlZlB0cjxTZWN1cml0eU9yaWdp
bj4+Jik7Ci10eXBlZGVmIGJvb2wgKCpNZWRpYUVuZ2luZVN1cHBvcnRzS2V5U3lzdGVtKShjb25z
dCBTdHJpbmcmIGtleVN5c3RlbSwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSk7CitjbGFzcyBNZWRp
YVBsYXllckZhY3RvcnkgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOworcHVibGljOgor
ICAgIE1lZGlhUGxheWVyRmFjdG9yeSgpID0gZGVmYXVsdDsKKyAgICB2aXJ0dWFsIH5NZWRpYVBs
YXllckZhY3RvcnkoKSB7IH0KKworICAgIHZpcnR1YWwgTWVkaWFQbGF5ZXJFbnVtczo6TWVkaWFF
bmdpbmVJZGVudGlmaWVyIGlkZW50aWZpZXIoKSBjb25zdCAgPSAwOworICAgIHZpcnR1YWwgc3Rk
Ojp1bmlxdWVfcHRyPE1lZGlhUGxheWVyUHJpdmF0ZUludGVyZmFjZT4gY3JlYXRlTWVkaWFFbmdp
bmVQbGF5ZXIoTWVkaWFQbGF5ZXIqKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCB2b2lkIGdldFN1
cHBvcnRlZFR5cGVzKEhhc2hTZXQ8U3RyaW5nLCBBU0NJSUNhc2VJbnNlbnNpdGl2ZUhhc2g+Jikg
Y29uc3QgPSAwOworICAgIHZpcnR1YWwgTWVkaWFQbGF5ZXI6OlN1cHBvcnRzVHlwZSBzdXBwb3J0
c1R5cGVBbmRDb2RlY3MoY29uc3QgTWVkaWFFbmdpbmVTdXBwb3J0UGFyYW1ldGVycyYpIGNvbnN0
ID0gMDsKKworICAgIHZpcnR1YWwgSGFzaFNldDxSZWZQdHI8U2VjdXJpdHlPcmlnaW4+PiBvcmln
aW5zSW5NZWRpYUNhY2hlKGNvbnN0IFN0cmluZyYpIGNvbnN0IHsgcmV0dXJuIHsgfTsgfQorICAg
IHZpcnR1YWwgdm9pZCBjbGVhck1lZGlhQ2FjaGUoY29uc3QgU3RyaW5nJiwgV2FsbFRpbWUpIGNv
bnN0IHsgfQorICAgIHZpcnR1YWwgdm9pZCBjbGVhck1lZGlhQ2FjaGVGb3JPcmlnaW5zKGNvbnN0
IFN0cmluZyYsIGNvbnN0IEhhc2hTZXQ8UmVmUHRyPFNlY3VyaXR5T3JpZ2luPj4mKSBjb25zdCB7
IH0KKyAgICB2aXJ0dWFsIGJvb2wgc3VwcG9ydHNLZXlTeXN0ZW0oY29uc3QgU3RyaW5nJiAvKiBr
ZXlTeXN0ZW0gKi8sIGNvbnN0IFN0cmluZyYgLyogbWltZVR5cGUgKi8pIGNvbnN0IHsgcmV0dXJu
IGZhbHNlOyB9Cit9OwogCi10eXBlZGVmIHZvaWQgKCpNZWRpYUVuZ2luZVJlZ2lzdHJhcikoQ3Jl
YXRlTWVkaWFFbmdpbmVQbGF5ZXImJiwgTWVkaWFFbmdpbmVTdXBwb3J0ZWRUeXBlcywgTWVkaWFF
bmdpbmVTdXBwb3J0c1R5cGUsCi0gICAgTWVkaWFFbmdpbmVPcmlnaW5zSW5NZWRpYUNhY2hlLCBN
ZWRpYUVuZ2luZUNsZWFyTWVkaWFDYWNoZSwgTWVkaWFFbmdpbmVDbGVhck1lZGlhQ2FjaGVGb3JP
cmlnaW5zLCBNZWRpYUVuZ2luZVN1cHBvcnRzS2V5U3lzdGVtKTsKK3R5cGVkZWYgdm9pZCAoKk1l
ZGlhRW5naW5lUmVnaXN0cmFyKShzdGQ6OnVuaXF1ZV9wdHI8TWVkaWFQbGF5ZXJGYWN0b3J5Pik7
CiB0eXBlZGVmIHZvaWQgKCpNZWRpYUVuZ2luZVJlZ2lzdGVyKShNZWRpYUVuZ2luZVJlZ2lzdHJh
cik7CiAKIGNsYXNzIE1lZGlhUGxheWVyRmFjdG9yeVN1cHBvcnQgewpAQCAtNjQ1LDYgKzcwMiwx
MyBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIHZvaWQgY2FsbFJlZ2lzdGVy
TWVkaWFFbmdpbmUoTWVkaWFFbmdpbmVSZWdpc3Rlcik7CiB9OwogCitjbGFzcyBSZW1vdGVNZWRp
YVBsYXllclN1cHBvcnQgeworcHVibGljOgorICAgIHVzaW5nIFJlZ2lzdGVyUmVtb3RlUGxheWVy
Q2FsbGJhY2sgPSBzdGQ6OmZ1bmN0aW9uPHZvaWQoTWVkaWFFbmdpbmVSZWdpc3RyYXIsIE1lZGlh
UGxheWVyRW51bXM6Ok1lZGlhRW5naW5lSWRlbnRpZmllcik+OworICAgIFdFQkNPUkVfRVhQT1JU
IHN0YXRpYyB2b2lkIHNldFJlZ2lzdGVyUmVtb3RlUGxheWVyQ2FsbGJhY2soUmVnaXN0ZXJSZW1v
dGVQbGF5ZXJDYWxsYmFjayYmKTsKK307CisKKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAj
ZW5kaWYgLy8gRU5BQkxFKFZJREVPKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXJFbnVtcy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvTWVkaWFQbGF5ZXJFbnVtcy5oCmluZGV4IDRiMTBmMDQ4MzA4N2UyZTY2ZTNhYWQ4
MWVlNDQyZTZkMjQ4ZGU5ZDQuLjgxZTUxOTM3NTI2MDg5MTQzZDUwYTUxM2NhZjAyNDgwMTgyZTQ1
NzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxh
eWVyRW51bXMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBs
YXllckVudW1zLmgKQEAgLTg3LDYgKzg3LDE3IEBAIHB1YmxpYzoKICAgICAgICAgTWFrZVJlc291
cmNlc1B1cmdlYWJsZSwKICAgICAgICAgUHVyZ2VSZXNvdXJjZXMsCiAgICAgfTsKKworICAgIGVu
dW0gY2xhc3MgTWVkaWFFbmdpbmVJZGVudGlmaWVyIDogdWludDhfdCB7CisgICAgICAgIEFWRm91
bmRhdGlvbiwKKyAgICAgICAgQVZGb3VuZGF0aW9uTVNFLAorICAgICAgICBBVkZvdW5kYXRpb25N
ZWRpYVN0cmVhbSwKKyAgICAgICAgR1N0cmVhbWVyLAorICAgICAgICBHU3RyZWFtZXJNU0UsCisg
ICAgICAgIEhvbGVQdW5jaCwKKyAgICAgICAgTWVkaWFGb3VuZGF0aW9uLAorICAgICAgICBNb2Nr
TVNFLAorICAgIH07CiB9OwogCiBXVEY6OlN0cmluZyBjb252ZXJ0RW51bWVyYXRpb25Ub1N0cmlu
ZyhNZWRpYVBsYXllckVudW1zOjpSZWFkeVN0YXRlKTsKQEAgLTE0MCw3ICsxNTEsNiBAQCB0ZW1w
bGF0ZTw+IHN0cnVjdCBFbnVtVHJhaXRzPFdlYkNvcmU6Ok1lZGlhUGxheWVyRW51bXM6Ok5ldHdv
cmtTdGF0ZT4gewogICAgID47CiB9OwogCi0KIHRlbXBsYXRlPD4gc3RydWN0IEVudW1UcmFpdHM8
V2ViQ29yZTo6TWVkaWFQbGF5ZXJFbnVtczo6UmVhZHlTdGF0ZT4gewogICAgIHVzaW5nIHZhbHVl
cyA9IEVudW1WYWx1ZXM8CiAgICAgICAgIFdlYkNvcmU6Ok1lZGlhUGxheWVyRW51bXM6OlJlYWR5
U3RhdGUsCkBAIC0xOTYsNiArMjA2LDIwIEBAIHRlbXBsYXRlPD4gc3RydWN0IEVudW1UcmFpdHM8
V2ViQ29yZTo6TWVkaWFQbGF5ZXJFbnVtczo6QnVmZmVyaW5nUG9saWN5PiB7CiAgICAgICAgIFdl
YkNvcmU6Ok1lZGlhUGxheWVyRW51bXM6OkJ1ZmZlcmluZ1BvbGljeTo6TGltaXRSZWFkQWhlYWQs
CiAgICAgICAgIFdlYkNvcmU6Ok1lZGlhUGxheWVyRW51bXM6OkJ1ZmZlcmluZ1BvbGljeTo6TWFr
ZVJlc291cmNlc1B1cmdlYWJsZSwKICAgICAgICAgV2ViQ29yZTo6TWVkaWFQbGF5ZXJFbnVtczo6
QnVmZmVyaW5nUG9saWN5OjpQdXJnZVJlc291cmNlcworICAgICAgICA+OworICAgIH07CisKK3Rl
bXBsYXRlPD4gc3RydWN0IEVudW1UcmFpdHM8V2ViQ29yZTo6TWVkaWFQbGF5ZXJFbnVtczo6TWVk
aWFFbmdpbmVJZGVudGlmaWVyPiB7CisgICAgdXNpbmcgdmFsdWVzID0gRW51bVZhbHVlczwKKyAg
ICAgICAgV2ViQ29yZTo6TWVkaWFQbGF5ZXJFbnVtczo6TWVkaWFFbmdpbmVJZGVudGlmaWVyLAor
ICAgICAgICBXZWJDb3JlOjpNZWRpYVBsYXllckVudW1zOjpNZWRpYUVuZ2luZUlkZW50aWZpZXI6
OkFWRm91bmRhdGlvbiwKKyAgICAgICAgV2ViQ29yZTo6TWVkaWFQbGF5ZXJFbnVtczo6TWVkaWFF
bmdpbmVJZGVudGlmaWVyOjpBVkZvdW5kYXRpb25NU0UsCisgICAgICAgIFdlYkNvcmU6Ok1lZGlh
UGxheWVyRW51bXM6Ok1lZGlhRW5naW5lSWRlbnRpZmllcjo6QVZGb3VuZGF0aW9uTWVkaWFTdHJl
YW0sCisgICAgICAgIFdlYkNvcmU6Ok1lZGlhUGxheWVyRW51bXM6Ok1lZGlhRW5naW5lSWRlbnRp
Zmllcjo6R1N0cmVhbWVyLAorICAgICAgICBXZWJDb3JlOjpNZWRpYVBsYXllckVudW1zOjpNZWRp
YUVuZ2luZUlkZW50aWZpZXI6OkdTdHJlYW1lck1TRSwKKyAgICAgICAgV2ViQ29yZTo6TWVkaWFQ
bGF5ZXJFbnVtczo6TWVkaWFFbmdpbmVJZGVudGlmaWVyOjpIb2xlUHVuY2gsCisgICAgICAgIFdl
YkNvcmU6Ok1lZGlhUGxheWVyRW51bXM6Ok1lZGlhRW5naW5lSWRlbnRpZmllcjo6TWVkaWFGb3Vu
ZGF0aW9uLAorICAgICAgICBXZWJDb3JlOjpNZWRpYVBsYXllckVudW1zOjpNZWRpYUVuZ2luZUlk
ZW50aWZpZXI6Ok1vY2tNU0UKICAgICA+OwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGxhdGZvcm1UaW1lUmFuZ2VzLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9QbGF0Zm9ybVRpbWVSYW5nZXMuaAppbmRleCAxODg4Njk1Yzc2
ZTkyNmZiM2VkNGIzYTUxMGM5YmIwMzNiNDM3MzMwLi41MzZmNmFhMmE1YTc5NjYwNGQ1NzMxOWU2
MTZhYmU1NjgzZmExY2IxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9QbGF0Zm9ybVRpbWVSYW5nZXMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9QbGF0Zm9ybVRpbWVSYW5nZXMuaApAQCAtMzYsNyArMzYsNyBAQCBjbGFzcyBQcmlu
dFN0cmVhbTsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBQbGF0Zm9ybVRpbWVSYW5n
ZXMgeworY2xhc3MgV0VCQ09SRV9FWFBPUlQgUGxhdGZvcm1UaW1lUmFuZ2VzIHsKICAgICBXVEZf
TUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBleHBsaWNpdCBQbGF0Zm9ybVRpbWVS
YW5nZXMoKSB7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2F2Zm91bmRhdGlvbi9jZi9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25DRi5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vY2YvTWVkaWFQbGF5
ZXJQcml2YXRlQVZGb3VuZGF0aW9uQ0YuY3BwCmluZGV4IDg1NjJlODQ1ZDFmY2EwYzM5ZTZjY2Zl
MWE3MTNjNWRhYjU4MTU3MjkuLmQ0MjRmMjFjNjRlM2I1ZjE5MjJhZTkwOWM1ZGI2MjJlNzZhMWFm
MTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRh
dGlvbi9jZi9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25DRi5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL2NmL01lZGlhUGxheWVyUHJp
dmF0ZUFWRm91bmRhdGlvbkNGLmNwcApAQCAtMzQyLDExICszNDIsMzcgQEAgc3RhdGljIGRpc3Bh
dGNoX3F1ZXVlX3QgZ2xvYmFsTG9hZGVyRGVsZWdhdGVRdWV1ZSgpCiB9CiAjZW5kaWYKIAorY2xh
c3MgTWVkaWFQbGF5ZXJGYWN0b3J5QVZGb3VuZGF0aW9uQ0YgOiBwdWJsaWMgTWVkaWFQbGF5ZXJG
YWN0b3J5IHsKK3B1YmxpYzoKKyAgICBNZWRpYVBsYXllckVudW1zOjpNZWRpYUVuZ2luZUlkZW50
aWZpZXIgaWRlbnRpZmllcigpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIE1lZGlhUGxheWVyRW5naW5l
SWRlbnRpZmllcnM6OmF2Rm91bmRhdGlvbk1lZGlhU3RyZWFtSWRlbnRpZmllcigpOyB9OworCisg
ICAgc3RkOjp1bmlxdWVfcHRyPE1lZGlhUGxheWVyUHJpdmF0ZUludGVyZmFjZT4gY3JlYXRlTWVk
aWFFbmdpbmVQbGF5ZXIoTWVkaWFQbGF5ZXIqIHBsYXllcikgY29uc3QgZmluYWwKKyAgICB7Cisg
ICAgICAgIHJldHVybiBtYWtlVW5pcXVlPE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbkNG
PihwbGF5ZXIpOworICAgIH0KKworICAgIHZvaWQgZ2V0U3VwcG9ydGVkVHlwZXMoSGFzaFNldDxT
dHJpbmcsIEFTQ0lJQ2FzZUluc2Vuc2l0aXZlSGFzaD4mIHR5cGVzKSBjb25zdCBmaW5hbAorICAg
IHsKKyAgICAgICAgcmV0dXJuIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbkNGOjpnZXRT
dXBwb3J0ZWRUeXBlcyh0eXBlcyk7CisgICAgfQorCisgICAgTWVkaWFQbGF5ZXI6OlN1cHBvcnRz
VHlwZSBzdXBwb3J0c1R5cGVBbmRDb2RlY3MoY29uc3QgTWVkaWFFbmdpbmVTdXBwb3J0UGFyYW1l
dGVycyYgcGFyYW1ldGVycykgY29uc3QgZmluYWwKKyAgICB7CisgICAgICAgIHJldHVybiBNZWRp
YVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25DRjo6c3VwcG9ydHNUeXBlKHBhcmFtZXRlcnMpOwor
ICAgIH0KKworICAgIGJvb2wgc3VwcG9ydHNLZXlTeXN0ZW0oY29uc3QgU3RyaW5nJiBrZXlTeXN0
ZW0sIGNvbnN0IFN0cmluZyYgbWltZVR5cGUpIGNvbnN0IGZpbmFsCisgICAgeworICAgICAgICBy
ZXR1cm4gTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uQ0Y6OnN1cHBvcnRzS2V5U3lzdGVt
KGtleVN5c3RlbSwgbWltZVR5cGUpOworICAgIH0KK307CisKIHZvaWQgTWVkaWFQbGF5ZXJQcml2
YXRlQVZGb3VuZGF0aW9uQ0Y6OnJlZ2lzdGVyTWVkaWFFbmdpbmUoTWVkaWFFbmdpbmVSZWdpc3Ry
YXIgcmVnaXN0cmFyKQogewotICAgIGlmIChpc0F2YWlsYWJsZSgpKQotICAgICAgICByZWdpc3Ry
YXIoW10oTWVkaWFQbGF5ZXIqIHBsYXllcikgeyByZXR1cm4gbWFrZVVuaXF1ZTxNZWRpYVBsYXll
clByaXZhdGVBVkZvdW5kYXRpb25DRj4ocGxheWVyKTsgfSwKLSAgICAgICAgICAgIGdldFN1cHBv
cnRlZFR5cGVzLCBzdXBwb3J0c1R5cGUsIDAsIDAsIDAsIHN1cHBvcnRzS2V5U3lzdGVtKTsKKyAg
ICBpZiAoIWlzQXZhaWxhYmxlKCkpCisgICAgICAgIHJldHVybjsKKworICAgIHJlZ2lzdHJhciht
YWtlVW5pcXVlPE1lZGlhUGxheWVyRmFjdG9yeUFWRm91bmRhdGlvbkNGPigpKTsKIH0KIAogTWVk
aWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uQ0Y6Ok1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRh
dGlvbkNGKE1lZGlhUGxheWVyKiBwbGF5ZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZv
dW5kYXRpb25PYmpDLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5k
YXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLmgKaW5kZXggY2Fk
YTIzMTFiYjZjNjgyMjg5YjBmYTY2YmI2ZDhkNTEyNTkzZjYwNy4uMjhmZDYyZWQ0ZTZlYmRjYjA5
MjFjYjViOTRiOTNiZWMwMDA1YzM0MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0
aW9uT2JqQy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRh
dGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMuaApAQCAtMTYyLDYg
KzE2Miw3IEBAIHB1YmxpYzoKIAogcHJpdmF0ZToKICAgICAvLyBlbmdpbmUgc3VwcG9ydAorICAg
IGZyaWVuZCBjbGFzcyBNZWRpYVBsYXllckZhY3RvcnlBVkZvdW5kYXRpb25PYmpDOwogICAgIHN0
YXRpYyB2b2lkIGdldFN1cHBvcnRlZFR5cGVzKEhhc2hTZXQ8U3RyaW5nLCBBU0NJSUNhc2VJbnNl
bnNpdGl2ZUhhc2g+JiB0eXBlcyk7CiAgICAgc3RhdGljIE1lZGlhUGxheWVyOjpTdXBwb3J0c1R5
cGUgc3VwcG9ydHNUeXBlKGNvbnN0IE1lZGlhRW5naW5lU3VwcG9ydFBhcmFtZXRlcnMmKTsKICAg
ICBzdGF0aWMgYm9vbCBzdXBwb3J0c0tleVN5c3RlbShjb25zdCBTdHJpbmcmIGtleVN5c3RlbSwg
Y29uc3QgU3RyaW5nJiBtaW1lVHlwZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5k
YXRpb25PYmpDLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0
aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5tbQppbmRleCA3MTg5
MjljNjIxMjIzMTFmNjlhM2Q4ZGFlMDI4MjNkMzE2MTUyYjViLi40Y2ZjN2Y1ZTVlNWI3N2UyNTZm
ZGYyN2E5MTRkMmU2MWEzMmZkZGEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRp
b25PYmpDLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRh
dGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMubW0KQEAgLTI3Mywx
NCArMjczLDU0IEBAIHN0YXRpYyBkaXNwYXRjaF9xdWV1ZV90IGdsb2JhbFB1bGxEZWxlZ2F0ZVF1
ZXVlKCkKIH0KICNlbmRpZgogCitjbGFzcyBNZWRpYVBsYXllckZhY3RvcnlBVkZvdW5kYXRpb25P
YmpDIDogcHVibGljIE1lZGlhUGxheWVyRmFjdG9yeSB7CitwdWJsaWM6CisgICAgTWVkaWFQbGF5
ZXJFbnVtczo6TWVkaWFFbmdpbmVJZGVudGlmaWVyIGlkZW50aWZpZXIoKSBjb25zdCBmaW5hbCB7
IHJldHVybiBNZWRpYVBsYXllckVudW1zOjpNZWRpYUVuZ2luZUlkZW50aWZpZXI6OkFWRm91bmRh
dGlvbjsgfTsKKworICAgIHN0ZDo6dW5pcXVlX3B0cjxNZWRpYVBsYXllclByaXZhdGVJbnRlcmZh
Y2U+IGNyZWF0ZU1lZGlhRW5naW5lUGxheWVyKE1lZGlhUGxheWVyKiBwbGF5ZXIpIGNvbnN0IGZp
bmFsCisgICAgeworICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxNZWRpYVBsYXllclByaXZhdGVB
VkZvdW5kYXRpb25PYmpDPihwbGF5ZXIpOworICAgIH0KKworICAgIHZvaWQgZ2V0U3VwcG9ydGVk
VHlwZXMoSGFzaFNldDxTdHJpbmcsIEFTQ0lJQ2FzZUluc2Vuc2l0aXZlSGFzaD4mIHR5cGVzKSBj
b25zdCBmaW5hbAorICAgIHsKKyAgICAgICAgcmV0dXJuIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91
bmRhdGlvbk9iakM6OmdldFN1cHBvcnRlZFR5cGVzKHR5cGVzKTsKKyAgICB9CisKKyAgICBNZWRp
YVBsYXllcjo6U3VwcG9ydHNUeXBlIHN1cHBvcnRzVHlwZUFuZENvZGVjcyhjb25zdCBNZWRpYUVu
Z2luZVN1cHBvcnRQYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzKSBjb25zdCBmaW5hbAorICAgIHsKKyAg
ICAgICAgcmV0dXJuIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OnN1cHBvcnRz
VHlwZShwYXJhbWV0ZXJzKTsKKyAgICB9CisKKyAgICBIYXNoU2V0PFJlZlB0cjxTZWN1cml0eU9y
aWdpbj4+IG9yaWdpbnNJbk1lZGlhQ2FjaGUoY29uc3QgU3RyaW5nJiBwYXRoKSBjb25zdCBmaW5h
bAorICAgIHsKKyAgICAgICAgcmV0dXJuIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9i
akM6Om9yaWdpbnNJbk1lZGlhQ2FjaGUocGF0aCk7CisgICAgfQorCisgICAgdm9pZCBjbGVhck1l
ZGlhQ2FjaGUoY29uc3QgU3RyaW5nJiBwYXRoLCBXYWxsVGltZSBtb2RpZmllZFNpbmNlKSBjb25z
dCBmaW5hbAorICAgIHsKKyAgICAgICAgcmV0dXJuIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRh
dGlvbk9iakM6OmNsZWFyTWVkaWFDYWNoZShwYXRoLCBtb2RpZmllZFNpbmNlKTsKKyAgICB9CisK
KyAgICB2b2lkIGNsZWFyTWVkaWFDYWNoZUZvck9yaWdpbnMoY29uc3QgU3RyaW5nJiBwYXRoLCBj
b25zdCBIYXNoU2V0PFJlZlB0cjxTZWN1cml0eU9yaWdpbj4+JiBvcmlnaW5zKSBjb25zdCBmaW5h
bAorICAgIHsKKyAgICAgICAgcmV0dXJuIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9i
akM6OmNsZWFyTWVkaWFDYWNoZUZvck9yaWdpbnMocGF0aCwgb3JpZ2lucyk7CisgICAgfQorCisg
ICAgYm9vbCBzdXBwb3J0c0tleVN5c3RlbShjb25zdCBTdHJpbmcmIGtleVN5c3RlbSwgY29uc3Qg
U3RyaW5nJiBtaW1lVHlwZSkgY29uc3QgZmluYWwKKyAgICB7CisgICAgICAgIHJldHVybiBNZWRp
YVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpzdXBwb3J0c0tleVN5c3RlbShrZXlTeXN0
ZW0sIG1pbWVUeXBlKTsKKyAgICB9Cit9OworCiB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91
bmRhdGlvbk9iakM6OnJlZ2lzdGVyTWVkaWFFbmdpbmUoTWVkaWFFbmdpbmVSZWdpc3RyYXIgcmVn
aXN0cmFyKQogewogICAgIGlmICghaXNBdmFpbGFibGUoKSkKICAgICAgICAgcmV0dXJuOwogCi0g
ICAgcmVnaXN0cmFyKFtdKE1lZGlhUGxheWVyKiBwbGF5ZXIpIHsgcmV0dXJuIG1ha2VVbmlxdWU8
TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQz4ocGxheWVyKTsgfSwKLSAgICAgICAg
ICAgIGdldFN1cHBvcnRlZFR5cGVzLCBzdXBwb3J0c1R5cGUsIG9yaWdpbnNJbk1lZGlhQ2FjaGUs
IGNsZWFyTWVkaWFDYWNoZSwgY2xlYXJNZWRpYUNhY2hlRm9yT3JpZ2lucywgc3VwcG9ydHNLZXlT
eXN0ZW0pOwogICAgIEFTU0VSVChBVkFzc2V0TUlNRVR5cGVDYWNoZTo6c2luZ2xldG9uKCkuaXNB
dmFpbGFibGUoKSk7CisKKyAgICByZWdpc3RyYXIobWFrZVVuaXF1ZTxNZWRpYVBsYXllckZhY3Rv
cnlBVkZvdW5kYXRpb25PYmpDPigpKTsKIH0KIAogc3RhdGljIEFWQXNzZXRDYWNoZSAqYXNzZXRD
YWNoZUZvclBhdGgoY29uc3QgU3RyaW5nJiBwYXRoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRl
TWVkaWFTb3VyY2VBVkZPYmpDLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
YXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDLm1t
CmluZGV4IGRmZjNlMjQ1MmJmNWFlMjVhYzQ2MzA1YjEwMzlmZTI4NzNjOThiNWYuLmVmNjkyNjhi
YzUzZmIwOTI0ZWM4MTBhYzIxZWU0YmE3YzE0MjZmYTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0
ZU1lZGlhU291cmNlQVZGT2JqQy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVNZWRpYVNvdXJjZUFWRk9i
akMubW0KQEAgLTE5NiwxNCArMTk2LDM0IEBAIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNl
QVZGT2JqQzo6fk1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQygpCiAjcHJhZ21h
IG1hcmsgLQogI3ByYWdtYSBtYXJrIE1lZGlhUGxheWVyIEZhY3RvcnkgTWV0aG9kcwogCitjbGFz
cyBNZWRpYVBsYXllckZhY3RvcnlNZWRpYVNvdXJjZUFWRk9iakMgOiBwdWJsaWMgTWVkaWFQbGF5
ZXJGYWN0b3J5IHsKK3B1YmxpYzoKKyAgICBNZWRpYVBsYXllckVudW1zOjpNZWRpYUVuZ2luZUlk
ZW50aWZpZXIgaWRlbnRpZmllcigpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIE1lZGlhUGxheWVyRW51
bXM6Ok1lZGlhRW5naW5lSWRlbnRpZmllcjo6QVZGb3VuZGF0aW9uTVNFOyB9OworCisgICAgc3Rk
Ojp1bmlxdWVfcHRyPE1lZGlhUGxheWVyUHJpdmF0ZUludGVyZmFjZT4gY3JlYXRlTWVkaWFFbmdp
bmVQbGF5ZXIoTWVkaWFQbGF5ZXIqIHBsYXllcikgY29uc3QgZmluYWwKKyAgICB7CisgICAgICAg
IHJldHVybiBtYWtlVW5pcXVlPE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQz4o
cGxheWVyKTsgICAgICAgIAorICAgIH0KKworICAgIHZvaWQgZ2V0U3VwcG9ydGVkVHlwZXMoSGFz
aFNldDxTdHJpbmcsIEFTQ0lJQ2FzZUluc2Vuc2l0aXZlSGFzaD4mIHR5cGVzKSBjb25zdCBmaW5h
bAorICAgIHsKKyAgICAgICAgcmV0dXJuIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZG
T2JqQzo6Z2V0U3VwcG9ydGVkVHlwZXModHlwZXMpOworICAgIH0KKworICAgIE1lZGlhUGxheWVy
OjpTdXBwb3J0c1R5cGUgc3VwcG9ydHNUeXBlQW5kQ29kZWNzKGNvbnN0IE1lZGlhRW5naW5lU3Vw
cG9ydFBhcmFtZXRlcnMmIHBhcmFtZXRlcnMpIGNvbnN0IGZpbmFsCisgICAgeworICAgICAgICBy
ZXR1cm4gTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDOjpzdXBwb3J0c1R5cGUo
cGFyYW1ldGVycyk7CisgICAgfQorfTsKKwogdm9pZCBNZWRpYVBsYXllclByaXZhdGVNZWRpYVNv
dXJjZUFWRk9iakM6OnJlZ2lzdGVyTWVkaWFFbmdpbmUoTWVkaWFFbmdpbmVSZWdpc3RyYXIgcmVn
aXN0cmFyKQogewogICAgIGlmICghaXNBdmFpbGFibGUoKSkKICAgICAgICAgcmV0dXJuOwogCi0g
ICAgcmVnaXN0cmFyKFtdKE1lZGlhUGxheWVyKiBwbGF5ZXIpIHsgcmV0dXJuIG1ha2VVbmlxdWU8
TWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDPihwbGF5ZXIpOyB9LAotICAgICAg
ICBnZXRTdXBwb3J0ZWRUeXBlcywgc3VwcG9ydHNUeXBlLCAwLCAwLCAwLCAwKTsKICAgICBBU1NF
UlQoQVZBc3NldE1JTUVUeXBlQ2FjaGU6OnNpbmdsZXRvbigpLmlzQXZhaWxhYmxlKCkpOworCisg
ICAgcmVnaXN0cmFyKG1ha2VVbmlxdWU8TWVkaWFQbGF5ZXJGYWN0b3J5TWVkaWFTb3VyY2VBVkZP
YmpDPigpKTsKIH0KIAogYm9vbCBNZWRpYVBsYXllclByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakM6
OmlzQXZhaWxhYmxlKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2Jq
Qy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpj
L01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQy5tbQppbmRleCAyNTE5YzExNGY0
MDg5NjlhM2M0MGJlYjM4NTQzNTkwOGYwYjI1YjE3Li4wN2JiZmFiYjBhYzkyODNkNDU2YjEyZTIy
MzQ4M2NkNzcyZTNkMGE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9i
akMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9u
L29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDLm1tCkBAIC0yMjAsMTEg
KzIyMCwzMiBAQCBNZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakM6On5NZWRpYVBs
YXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakMoKQogI3ByYWdtYSBtYXJrIC0KICNwcmFnbWEg
bWFyayBNZWRpYVBsYXllciBGYWN0b3J5IE1ldGhvZHMKIAorY2xhc3MgTWVkaWFQbGF5ZXJGYWN0
b3J5TWVkaWFTdHJlYW1BVkZPYmpDIDogcHVibGljIE1lZGlhUGxheWVyRmFjdG9yeSB7CitwdWJs
aWM6CisgICAgTWVkaWFQbGF5ZXJFbnVtczo6TWVkaWFFbmdpbmVJZGVudGlmaWVyIGlkZW50aWZp
ZXIoKSBjb25zdCBmaW5hbCB7IHJldHVybiBNZWRpYVBsYXllckVudW1zOjpNZWRpYUVuZ2luZUlk
ZW50aWZpZXI6OkFWRm91bmRhdGlvbk1lZGlhU3RyZWFtOyB9OworCisgICAgc3RkOjp1bmlxdWVf
cHRyPE1lZGlhUGxheWVyUHJpdmF0ZUludGVyZmFjZT4gY3JlYXRlTWVkaWFFbmdpbmVQbGF5ZXIo
TWVkaWFQbGF5ZXIqIHBsYXllcikgY29uc3QgZmluYWwKKyAgICB7CisgICAgICAgIHJldHVybiBt
YWtlVW5pcXVlPE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQz4ocGxheWVyKTsK
KyAgICB9CisKKyAgICB2b2lkIGdldFN1cHBvcnRlZFR5cGVzKEhhc2hTZXQ8U3RyaW5nLCBBU0NJ
SUNhc2VJbnNlbnNpdGl2ZUhhc2g+JiB0eXBlcykgY29uc3QgZmluYWwKKyAgICB7CisgICAgICAg
IHJldHVybiBNZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakM6OmdldFN1cHBvcnRl
ZFR5cGVzKHR5cGVzKTsKKyAgICB9CisKKyAgICBNZWRpYVBsYXllcjo6U3VwcG9ydHNUeXBlIHN1
cHBvcnRzVHlwZUFuZENvZGVjcyhjb25zdCBNZWRpYUVuZ2luZVN1cHBvcnRQYXJhbWV0ZXJzJiBw
YXJhbWV0ZXJzKSBjb25zdCBmaW5hbAorICAgIHsKKyAgICAgICAgcmV0dXJuIE1lZGlhUGxheWVy
UHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQzo6c3VwcG9ydHNUeXBlKHBhcmFtZXRlcnMpOworICAg
IH0KK307CisKIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDOjpyZWdp
c3Rlck1lZGlhRW5naW5lKE1lZGlhRW5naW5lUmVnaXN0cmFyIHJlZ2lzdHJhcikKIHsKLSAgICBp
ZiAoaXNBdmFpbGFibGUoKSkKLSAgICAgICAgcmVnaXN0cmFyKFtdKE1lZGlhUGxheWVyKiBwbGF5
ZXIpIHsgcmV0dXJuIG1ha2VVbmlxdWU8TWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZP
YmpDPihwbGF5ZXIpOyB9LCBnZXRTdXBwb3J0ZWRUeXBlcywKLSAgICAgICAgICAgIHN1cHBvcnRz
VHlwZSwgMCwgMCwgMCwgMCk7CisgICAgaWYgKCFpc0F2YWlsYWJsZSgpKQorICAgICAgICByZXR1
cm47CisKKyAgICByZWdpc3RyYXIobWFrZVVuaXF1ZTxNZWRpYVBsYXllckZhY3RvcnlNZWRpYVN0
cmVhbUFWRk9iakM+KCkpOwogfQogCiBib29sIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFt
QVZGT2JqQzo6aXNBdmFpbGFibGUoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2
YXRlR1N0cmVhbWVyLmNwcAppbmRleCBkNDg4NTQyMjY3YTM3YTJiMzhkNTliM2QzOGJmNDI5MTlh
NGExNzg1Li40YzU3ZTU2OWI4MWQ4MmRlZjY0Y2Y5N2U2ZjI1N2M2ODVmYjkwZmQ5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5
ZXJQcml2YXRlR1N0cmVhbWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmNwcApAQCAtNDY0LDE0
ICs0NjQsMzcgQEAgYm9vbCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6OmlzQXZhaWxhYmxl
KCkKICAgICByZXR1cm4gZmFjdG9yeTsKIH0KIAorY2xhc3MgTWVkaWFQbGF5ZXJGYWN0b3J5R1N0
cmVhbWVyIDogcHVibGljIE1lZGlhUGxheWVyRmFjdG9yeSB7CitwdWJsaWM6CisgICAgTWVkaWFQ
bGF5ZXJFbnVtczo6TWVkaWFFbmdpbmVJZGVudGlmaWVyIGlkZW50aWZpZXIoKSBjb25zdCBmaW5h
bCB7IHJldHVybiBNZWRpYVBsYXllckVudW1zOjpNZWRpYUVuZ2luZUlkZW50aWZpZXI6OkdTdHJl
YW1lcjsgfTsKKworICAgIHN0ZDo6dW5pcXVlX3B0cjxNZWRpYVBsYXllclByaXZhdGVJbnRlcmZh
Y2U+IGNyZWF0ZU1lZGlhRW5naW5lUGxheWVyKE1lZGlhUGxheWVyKiBwbGF5ZXIpIGNvbnN0IGZp
bmFsCisgICAgeworICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxNZWRpYVBsYXllclByaXZhdGVH
U3RyZWFtZXI+KHBsYXllcik7CisgICAgfQorCisgICAgdm9pZCBnZXRTdXBwb3J0ZWRUeXBlcyhI
YXNoU2V0PFN0cmluZywgQVNDSUlDYXNlSW5zZW5zaXRpdmVIYXNoPiYgdHlwZXMpIGNvbnN0IGZp
bmFsCisgICAgeworICAgICAgICByZXR1cm4gTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpn
ZXRTdXBwb3J0ZWRUeXBlcyh0eXBlcyk7CisgICAgfQorCisgICAgTWVkaWFQbGF5ZXI6OlN1cHBv
cnRzVHlwZSBzdXBwb3J0c1R5cGVBbmRDb2RlY3MoY29uc3QgTWVkaWFFbmdpbmVTdXBwb3J0UGFy
YW1ldGVycyYgcGFyYW1ldGVycykgY29uc3QgZmluYWwKKyAgICB7CisgICAgICAgIHJldHVybiBN
ZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6OnN1cHBvcnRzVHlwZShwYXJhbWV0ZXJzKTsKKyAg
ICB9CisKKyAgICBib29sIHN1cHBvcnRzS2V5U3lzdGVtKGNvbnN0IFN0cmluZyYga2V5U3lzdGVt
LCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlKSBjb25zdCBmaW5hbAorICAgIHsKKyAgICAgICAgcmV0
dXJuIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6c3VwcG9ydHNLZXlTeXN0ZW0oa2V5U3lz
dGVtLCBtaW1lVHlwZSk7CisgICAgfQorfTsKKwogdm9pZCBNZWRpYVBsYXllclByaXZhdGVHU3Ry
ZWFtZXI6OnJlZ2lzdGVyTWVkaWFFbmdpbmUoTWVkaWFFbmdpbmVSZWdpc3RyYXIgcmVnaXN0cmFy
KQogewogICAgIGluaXRpYWxpemVEZWJ1Z0NhdGVnb3J5KCk7CiAKLSAgICBpZiAoaXNBdmFpbGFi
bGUoKSkgewotICAgICAgICByZWdpc3RyYXIoW10oTWVkaWFQbGF5ZXIqIHBsYXllcikgeyByZXR1
cm4gbWFrZVVuaXF1ZTxNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI+KHBsYXllcik7IH0sCi0g
ICAgICAgICAgICBnZXRTdXBwb3J0ZWRUeXBlcywgc3VwcG9ydHNUeXBlLCBudWxscHRyLCBudWxs
cHRyLCBudWxscHRyLCBzdXBwb3J0c0tleVN5c3RlbSk7Ci0gICAgfQorICAgIGlmIChpc0F2YWls
YWJsZSgpKQorICAgICAgICByZWdpc3RyYXIobWFrZVVuaXF1ZTxNZWRpYVBsYXllckZhY3RvcnlH
U3RyZWFtZXI+KCkpOwogfQogCiB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6bG9h
ZEZ1bGwoY29uc3QgU3RyaW5nJiB1cmxTdHJpbmcsIGNvbnN0IFN0cmluZyYgcGlwZWxpbmVOYW1l
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVy
L01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5oCmluZGV4IGY5
YzQ3YTFmNjAxMjRiOThiZmNjYmFlMWM3M2E0YTA0NTE4NTM4ZDEuLjg1MTY1ZDFiZjEyOWNlY2Ux
YTEyNmQxYzMwNGQzZmM5NjJlNzI1MzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQ
cml2YXRlR1N0cmVhbWVyLmgKQEAgLTM5NCw2ICszOTQsNyBAQCBwcml2YXRlOgogICAgIEdzdEVs
ZW1lbnQqIGNyZWF0ZUF1ZGlvU2luaygpOwogICAgIEdzdEVsZW1lbnQqIGF1ZGlvU2luaygpIGNv
bnN0OwogCisgICAgZnJpZW5kIGNsYXNzIE1lZGlhUGxheWVyRmFjdG9yeUdTdHJlYW1lcjsKICAg
ICBzdGF0aWMgdm9pZCBnZXRTdXBwb3J0ZWRUeXBlcyhIYXNoU2V0PFN0cmluZywgQVNDSUlDYXNl
SW5zZW5zaXRpdmVIYXNoPiYpOwogICAgIHN0YXRpYyBNZWRpYVBsYXllcjo6U3VwcG9ydHNUeXBl
IHN1cHBvcnRzVHlwZShjb25zdCBNZWRpYUVuZ2luZVN1cHBvcnRQYXJhbWV0ZXJzJik7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9tc2Uv
TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyTVNFLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2dzdHJlYW1lci9tc2UvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyTVNF
LmNwcAppbmRleCA4MjAxNTVlNTRkODg3ZTUxNjdhMzQwYWRkM2M0YjMxZDQ5NmU1NmFiLi5jOTBi
MjEwMWZkZDA0NjZkOTYxMDM3MDBmNWU3ZTA2NmNiYzRmOGIyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvbXNlL01lZGlhUGxheWVyUHJpdmF0
ZUdTdHJlYW1lck1TRS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Z3N0cmVhbWVyL21zZS9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJNU0UuY3BwCkBAIC03Miwx
NCArNzIsMzcgQEAgR1NUX0RFQlVHX0NBVEVHT1JZKHdlYmtpdF9tc2VfZGVidWcpOwogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKK2NsYXNzIE1lZGlhUGxheWVyRmFjdG9yeUdTdHJlYW1lck1TRSA6
IHB1YmxpYyBNZWRpYVBsYXllckZhY3RvcnkgeworcHVibGljOgorICAgIE1lZGlhUGxheWVyRW51
bXM6Ok1lZGlhRW5naW5lSWRlbnRpZmllciBpZGVudGlmaWVyKCkgY29uc3QgZmluYWwgeyByZXR1
cm4gTWVkaWFQbGF5ZXJFbnVtczo6TWVkaWFFbmdpbmVJZGVudGlmaWVyOjpHU3RyZWFtZXJNU0U7
IH07CisKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8TWVkaWFQbGF5ZXJQcml2YXRlSW50ZXJmYWNlPiBj
cmVhdGVNZWRpYUVuZ2luZVBsYXllcihNZWRpYVBsYXllciogcGxheWVyKSBjb25zdCBmaW5hbAor
ICAgIHsKKyAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVh
bWVyTVNFPihwbGF5ZXIpOworICAgIH0KKworICAgIHZvaWQgZ2V0U3VwcG9ydGVkVHlwZXMoSGFz
aFNldDxTdHJpbmcsIEFTQ0lJQ2FzZUluc2Vuc2l0aXZlSGFzaD4mIHR5cGVzKSBjb25zdCBmaW5h
bAorICAgIHsKKyAgICAgICAgcmV0dXJuIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lck1TRTo6
Z2V0U3VwcG9ydGVkVHlwZXModHlwZXMpOworICAgIH0KKworICAgIE1lZGlhUGxheWVyOjpTdXBw
b3J0c1R5cGUgc3VwcG9ydHNUeXBlQW5kQ29kZWNzKGNvbnN0IE1lZGlhRW5naW5lU3VwcG9ydFBh
cmFtZXRlcnMmIHBhcmFtZXRlcnMpIGNvbnN0IGZpbmFsCisgICAgeworICAgICAgICByZXR1cm4g
TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyTVNFOjpzdXBwb3J0c1R5cGUocGFyYW1ldGVycyk7
CisgICAgfQorCisgICAgYm9vbCBzdXBwb3J0c0tleVN5c3RlbShjb25zdCBTdHJpbmcmIGtleVN5
c3RlbSwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSkgY29uc3QgZmluYWwKKyAgICB7CisgICAgICAg
IHJldHVybiBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJNU0U6OnN1cHBvcnRzS2V5U3lzdGVt
KGtleVN5c3RlbSwgbWltZVR5cGUpOworICAgIH0KK307CisKIHZvaWQgTWVkaWFQbGF5ZXJQcml2
YXRlR1N0cmVhbWVyTVNFOjpyZWdpc3Rlck1lZGlhRW5naW5lKE1lZGlhRW5naW5lUmVnaXN0cmFy
IHJlZ2lzdHJhcikKIHsKICAgICBpbml0aWFsaXplR1N0cmVhbWVyQW5kUmVnaXN0ZXJXZWJLaXRF
bGVtZW50cygpOwogICAgIEdTVF9ERUJVR19DQVRFR09SWV9JTklUKHdlYmtpdF9tc2VfZGVidWcs
ICJ3ZWJraXRtc2UiLCAwLCAiV2ViS2l0IE1TRSBtZWRpYSBwbGF5ZXIiKTsKLSAgICBpZiAoaXNB
dmFpbGFibGUoKSkgewotICAgICAgICByZWdpc3RyYXIoW10oTWVkaWFQbGF5ZXIqIHBsYXllcikg
eyByZXR1cm4gbWFrZVVuaXF1ZTxNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJNU0U+KHBsYXll
cik7IH0sCi0gICAgICAgICAgICBnZXRTdXBwb3J0ZWRUeXBlcywgc3VwcG9ydHNUeXBlLCBudWxs
cHRyLCBudWxscHRyLCBudWxscHRyLCBzdXBwb3J0c0tleVN5c3RlbSk7Ci0gICAgfQorICAgIGlm
IChpc0F2YWlsYWJsZSgpKQorICAgICAgICByZWdpc3RyYXIobWFrZVVuaXF1ZTxNZWRpYVBsYXll
ckZhY3RvcnlHU3RyZWFtZXJNU0U+KCkpOwogfQogCiBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFt
ZXJNU0U6Ok1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lck1TRShNZWRpYVBsYXllciogcGxheWVy
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVy
L21zZS9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJNU0UuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9tc2UvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVy
TVNFLmgKaW5kZXggOWIzMzMwNWY3ZjExNmRhYzkxYzY0MWM0ODQ1OTNiZTdhODMwNzM1Zi4uNWQx
MDEzZmNiZWYwNTc5MzQ4MGJiMzhlZGVmZTRiNjRmMGFjZjQyYyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL21zZS9NZWRpYVBsYXllclByaXZh
dGVHU3RyZWFtZXJNU0UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9n
c3RyZWFtZXIvbXNlL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lck1TRS5oCkBAIC04NSw2ICs4
NSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHVuYmxvY2tEdXJhdGlvbkNoYW5nZXMoKTsKIAogcHJp
dmF0ZToKKyAgICBmcmllbmQgY2xhc3MgTWVkaWFQbGF5ZXJGYWN0b3J5R1N0cmVhbWVyTVNFOwog
ICAgIHN0YXRpYyB2b2lkIGdldFN1cHBvcnRlZFR5cGVzKEhhc2hTZXQ8U3RyaW5nLCBBU0NJSUNh
c2VJbnNlbnNpdGl2ZUhhc2g+Jik7CiAgICAgc3RhdGljIE1lZGlhUGxheWVyOjpTdXBwb3J0c1R5
cGUgc3VwcG9ydHNUeXBlKGNvbnN0IE1lZGlhRW5naW5lU3VwcG9ydFBhcmFtZXRlcnMmKTsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvaG9sZXB1bmNoL01l
ZGlhUGxheWVyUHJpdmF0ZUhvbGVQdW5jaC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9ob2xlcHVuY2gvTWVkaWFQbGF5ZXJQcml2YXRlSG9sZVB1bmNoLmNwcAppbmRleCBi
OGM0ZTAxZmFkZjQxM2FkZGM3MTU0ZTFlYWYxZjViYjA1NTM2YTBjLi4wNjJjYWIyYWEyYmU1YjUz
NDFiZWE2OTM0MWVlNWU1YjFiODg3ZTc0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9ob2xlcHVuY2gvTWVkaWFQbGF5ZXJQcml2YXRlSG9sZVB1bmNoLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ob2xlcHVuY2gvTWVkaWFQbGF5
ZXJQcml2YXRlSG9sZVB1bmNoLmNwcApAQCAtMTM5LDEwICsxMzksMjkgQEAgTWVkaWFQbGF5ZXI6
OlN1cHBvcnRzVHlwZSBNZWRpYVBsYXllclByaXZhdGVIb2xlUHVuY2g6OnN1cHBvcnRzVHlwZShj
b25zdCBNZWRpYUUKICAgICByZXR1cm4gTWVkaWFQbGF5ZXI6OlN1cHBvcnRzVHlwZTo6SXNOb3RT
dXBwb3J0ZWQ7CiB9CiAKK2NsYXNzIE1lZGlhUGxheWVyRmFjdG9yeUhvbGVQdW5jaCA6IHB1Ymxp
YyBNZWRpYVBsYXllckZhY3RvcnkgeworcHVibGljOgorICAgIE1lZGlhUGxheWVyRW51bXM6Ok1l
ZGlhRW5naW5lSWRlbnRpZmllciBpZGVudGlmaWVyKCkgY29uc3QgZmluYWwgeyByZXR1cm4gTWVk
aWFQbGF5ZXJFbnVtczo6TWVkaWFFbmdpbmVJZGVudGlmaWVyOjpIb2xlUHVuY2g7IH07CisKKyAg
ICBzdGQ6OnVuaXF1ZV9wdHI8TWVkaWFQbGF5ZXJQcml2YXRlSW50ZXJmYWNlPiBjcmVhdGVNZWRp
YUVuZ2luZVBsYXllcihNZWRpYVBsYXllciogcGxheWVyKSBjb25zdCBmaW5hbAorICAgIHsKKyAg
ICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8TWVkaWFQbGF5ZXJQcml2YXRlSG9sZVB1bmNoPihwbGF5
ZXIpOworICAgIH0KKworICAgIHZvaWQgZ2V0U3VwcG9ydGVkVHlwZXMoSGFzaFNldDxTdHJpbmcs
IEFTQ0lJQ2FzZUluc2Vuc2l0aXZlSGFzaD4mIHR5cGVzKSBjb25zdCBmaW5hbAorICAgIHsKKyAg
ICAgICAgcmV0dXJuIE1lZGlhUGxheWVyUHJpdmF0ZUhvbGVQdW5jaDo6Z2V0U3VwcG9ydGVkVHlw
ZXModHlwZXMpOworICAgIH0KKworICAgIE1lZGlhUGxheWVyOjpTdXBwb3J0c1R5cGUgc3VwcG9y
dHNUeXBlQW5kQ29kZWNzKGNvbnN0IE1lZGlhRW5naW5lU3VwcG9ydFBhcmFtZXRlcnMmIHBhcmFt
ZXRlcnMpIGNvbnN0IGZpbmFsCisgICAgeworICAgICAgICByZXR1cm4gTWVkaWFQbGF5ZXJQcml2
YXRlSG9sZVB1bmNoOjpzdXBwb3J0c1R5cGUocGFyYW1ldGVycyk7CisgICAgfQorfTsKKwogdm9p
ZCBNZWRpYVBsYXllclByaXZhdGVIb2xlUHVuY2g6OnJlZ2lzdGVyTWVkaWFFbmdpbmUoTWVkaWFF
bmdpbmVSZWdpc3RyYXIgcmVnaXN0cmFyKQogewotICAgIHJlZ2lzdHJhcihbXShNZWRpYVBsYXll
ciogcGxheWVyKSB7IHJldHVybiBtYWtlVW5pcXVlPE1lZGlhUGxheWVyUHJpdmF0ZUhvbGVQdW5j
aD4ocGxheWVyKTsgfSwKLSAgICAgICAgZ2V0U3VwcG9ydGVkVHlwZXMsIHN1cHBvcnRzVHlwZSwg
bnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0cik7CisgICAgcmVnaXN0cmFyKG1ha2VV
bmlxdWU8TWVkaWFQbGF5ZXJGYWN0b3J5SG9sZVB1bmNoPigpKTsKIH0KIAogdm9pZCBNZWRpYVBs
YXllclByaXZhdGVIb2xlUHVuY2g6Om5vdGlmeVJlYWR5U3RhdGUoKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvaG9sZXB1bmNoL01lZGlhUGxheWVyUHJpdmF0
ZUhvbGVQdW5jaC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvaG9sZXB1bmNo
L01lZGlhUGxheWVyUHJpdmF0ZUhvbGVQdW5jaC5oCmluZGV4IDlhMTA4N2QzMmIyNWIzYzMwZGNk
ZGJlYjQwMDhjYTA1MDA5NTdmNWEuLjNiMzRiZmE5MmFiYmY0ODFhMWI1NDIyY2I1NWFmNjU1ZTYz
NmJhMGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2hvbGVw
dW5jaC9NZWRpYVBsYXllclByaXZhdGVIb2xlUHVuY2guaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9ob2xlcHVuY2gvTWVkaWFQbGF5ZXJQcml2YXRlSG9sZVB1bmNoLmgK
QEAgLTk4LDYgKzk4LDcgQEAgcHVibGljOgogI2VuZGlmCiAKIHByaXZhdGU6CisgICAgZnJpZW5k
IGNsYXNzIE1lZGlhUGxheWVyRmFjdG9yeUhvbGVQdW5jaDsKICAgICBzdGF0aWMgdm9pZCBnZXRT
dXBwb3J0ZWRUeXBlcyhIYXNoU2V0PFN0cmluZywgQVNDSUlDYXNlSW5zZW5zaXRpdmVIYXNoPiYp
OwogICAgIHN0YXRpYyBNZWRpYVBsYXllcjo6U3VwcG9ydHNUeXBlIHN1cHBvcnRzVHlwZShjb25z
dCBNZWRpYUVuZ2luZVN1cHBvcnRQYXJhbWV0ZXJzJik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9NZWRpYVBsYXllclByaXZhdGVNZWRpYUZvdW5k
YXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL01lZGlhUGxh
eWVyUHJpdmF0ZU1lZGlhRm91bmRhdGlvbi5jcHAKaW5kZXggYmJiYjQzMjJlZDNhNzViZjgxZDBi
ZjQ3NzYyZjA1MDgyYzM5NGJiMC4uNTkwYWJhZGQ3ZDcxNTRjYzlkYjJjMzc3NjI0M2I2NWM1NDhk
NmQ4NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL01l
ZGlhUGxheWVyUHJpdmF0ZU1lZGlhRm91bmRhdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3Mvd2luL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhRm91bmRhdGlvbi5j
cHAKQEAgLTc5LDEyICs3OSwzMCBAQCBNZWRpYVBsYXllclByaXZhdGVNZWRpYUZvdW5kYXRpb246
On5NZWRpYVBsYXllclByaXZhdGVNZWRpYUZvdW5kYXRpb24oKQogICAgIGVuZFNlc3Npb24oKTsK
IH0KIAorY2xhc3MgTWVkaWFQbGF5ZXJGYWN0b3J5TWVkaWFGb3VuZGF0aW9uIDogcHVibGljIE1l
ZGlhUGxheWVyRmFjdG9yeSB7CitwdWJsaWM6CisgICAgTWVkaWFQbGF5ZXJFbnVtczo6TWVkaWFF
bmdpbmVJZGVudGlmaWVyIGlkZW50aWZpZXIoKSBjb25zdCBmaW5hbCB7IHJldHVybiBNZWRpYVBs
YXllckVudW1zOjpNZWRpYUVuZ2luZUlkZW50aWZpZXI6Ok1lZGlhRm91bmRhdGlvbjsgfTsKKwor
ICAgIHN0ZDo6dW5pcXVlX3B0cjxNZWRpYVBsYXllclByaXZhdGVJbnRlcmZhY2U+IGNyZWF0ZU1l
ZGlhRW5naW5lUGxheWVyKE1lZGlhUGxheWVyKiBwbGF5ZXIpIGNvbnN0IGZpbmFsCisgICAgewor
ICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxNZWRpYVBsYXllclByaXZhdGVNZWRpYUZvdW5kYXRp
b24+KHBsYXllcik7CisgICAgfQorCisgICAgdm9pZCBnZXRTdXBwb3J0ZWRUeXBlcyhIYXNoU2V0
PFN0cmluZywgQVNDSUlDYXNlSW5zZW5zaXRpdmVIYXNoPiYgdHlwZXMpIGNvbnN0IGZpbmFsCisg
ICAgeworICAgICAgICByZXR1cm4gTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFGb3VuZGF0aW9uOjpn
ZXRTdXBwb3J0ZWRUeXBlcyh0eXBlcyk7CisgICAgfQorCisgICAgTWVkaWFQbGF5ZXI6OlN1cHBv
cnRzVHlwZSBzdXBwb3J0c1R5cGVBbmRDb2RlY3MoY29uc3QgTWVkaWFFbmdpbmVTdXBwb3J0UGFy
YW1ldGVycyYgcGFyYW1ldGVycykgY29uc3QgZmluYWwKKyAgICB7CisgICAgICAgIHJldHVybiBN
ZWRpYVBsYXllclByaXZhdGVNZWRpYUZvdW5kYXRpb246OnN1cHBvcnRzVHlwZShwYXJhbWV0ZXJz
KTsKKyAgICB9Cit9OworCiB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhRm91bmRhdGlvbjo6
cmVnaXN0ZXJNZWRpYUVuZ2luZShNZWRpYUVuZ2luZVJlZ2lzdHJhciByZWdpc3RyYXIpCiB7Ci0g
ICAgaWYgKGlzQXZhaWxhYmxlKCkpIHsKLSAgICAgICAgcmVnaXN0cmFyKFtdKE1lZGlhUGxheWVy
KiBwbGF5ZXIpIHsgcmV0dXJuIG1ha2VVbmlxdWU8TWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFGb3Vu
ZGF0aW9uPihwbGF5ZXIpOyB9LAotICAgICAgICAgICAgZ2V0U3VwcG9ydGVkVHlwZXMsIHN1cHBv
cnRzVHlwZSwgMCwgMCwgMCwgMCk7Ci0gICAgfQorICAgIGlmIChpc0F2YWlsYWJsZSgpKQorICAg
ICAgICByZWdpc3RyYXIobWFrZVVuaXF1ZTxNZWRpYVBsYXllckZhY3RvcnlNZWRpYUZvdW5kYXRp
b24+KCkpOwogfQogCiBib29sIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhRm91bmRhdGlvbjo6aXNB
dmFpbGFibGUoKSAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svbWVk
aWFzb3VyY2UvTW9ja01lZGlhUGxheWVyTWVkaWFTb3VyY2UuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbW9jay9tZWRpYXNvdXJjZS9Nb2NrTWVkaWFQbGF5ZXJNZWRpYVNvdXJjZS5jcHAK
aW5kZXggMDFhNmEwMDMwZjRmNDYxZDQ2NzI3YmI2OTYwMTY1YWI5YmNmYTFjOC4uNGFjNjQwYjRj
MDJlYmMwODhiYjljNmI3OWY3NjcwOThjYjNmZTllYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbW9jay9tZWRpYXNvdXJjZS9Nb2NrTWVkaWFQbGF5ZXJNZWRpYVNvdXJjZS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9tZWRpYXNvdXJjZS9Nb2NrTWVk
aWFQbGF5ZXJNZWRpYVNvdXJjZS5jcHAKQEAgLTM3LDExICszNywyNyBAQAogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKK2NsYXNzIE1lZGlhUGxheWVyRmFjdG9yeU1lZGlhU291cmNlTW9jayA6IHB1
YmxpYyBNZWRpYVBsYXllckZhY3RvcnkgeworcHVibGljOgorICAgIE1lZGlhUGxheWVyRW51bXM6
Ok1lZGlhRW5naW5lSWRlbnRpZmllciBpZGVudGlmaWVyKCkgY29uc3QgZmluYWwgeyByZXR1cm4g
TWVkaWFQbGF5ZXJFbnVtczo6TWVkaWFFbmdpbmVJZGVudGlmaWVyOjpNb2NrTVNFOyB9OworCisg
ICAgc3RkOjp1bmlxdWVfcHRyPE1lZGlhUGxheWVyUHJpdmF0ZUludGVyZmFjZT4gY3JlYXRlTWVk
aWFFbmdpbmVQbGF5ZXIoTWVkaWFQbGF5ZXIqIHBsYXllcikgY29uc3QgZmluYWwgeyByZXR1cm4g
bWFrZVVuaXF1ZTxNb2NrTWVkaWFQbGF5ZXJNZWRpYVNvdXJjZT4ocGxheWVyKTsgfQorCisgICAg
dm9pZCBnZXRTdXBwb3J0ZWRUeXBlcyhIYXNoU2V0PFN0cmluZywgQVNDSUlDYXNlSW5zZW5zaXRp
dmVIYXNoPiYgdHlwZXMpIGNvbnN0IGZpbmFsCisgICAgeworICAgICAgICByZXR1cm4gTW9ja01l
ZGlhUGxheWVyTWVkaWFTb3VyY2U6OmdldFN1cHBvcnRlZFR5cGVzKHR5cGVzKTsKKyAgICB9CisK
KyAgICBNZWRpYVBsYXllcjo6U3VwcG9ydHNUeXBlIHN1cHBvcnRzVHlwZUFuZENvZGVjcyhjb25z
dCBNZWRpYUVuZ2luZVN1cHBvcnRQYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzKSBjb25zdCBmaW5hbAor
ICAgIHsKKyAgICAgICAgcmV0dXJuIE1vY2tNZWRpYVBsYXllck1lZGlhU291cmNlOjpzdXBwb3J0
c1R5cGUocGFyYW1ldGVycyk7CisgICAgfQorfTsKKwogLy8gTWVkaWFQbGF5ZXIgRW5pZ25lIFN1
cHBvcnQKIHZvaWQgTW9ja01lZGlhUGxheWVyTWVkaWFTb3VyY2U6OnJlZ2lzdGVyTWVkaWFFbmdp
bmUoTWVkaWFFbmdpbmVSZWdpc3RyYXIgcmVnaXN0cmFyKQogewotICAgIHJlZ2lzdHJhcihbXSAo
TWVkaWFQbGF5ZXIqIHBsYXllcikgeyByZXR1cm4gbWFrZVVuaXF1ZTxNb2NrTWVkaWFQbGF5ZXJN
ZWRpYVNvdXJjZT4ocGxheWVyKTsgfSwgZ2V0U3VwcG9ydGVkVHlwZXMsCi0gICAgICAgIHN1cHBv
cnRzVHlwZSwgMCwgMCwgMCwgMCk7CisgICAgcmVnaXN0cmFyKG1ha2VVbmlxdWU8TWVkaWFQbGF5
ZXJGYWN0b3J5TWVkaWFTb3VyY2VNb2NrPigpKTsKIH0KIAogLy8gRklYTUU6IFdoYXQgZG9lcyB0
aGUgd29yZCAiY2FjaGUiIG1lYW4gaGVyZT8KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvRGVy
aXZlZFNvdXJjZXMtaW5wdXQueGNmaWxlbGlzdCBiL1NvdXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJj
ZXMtaW5wdXQueGNmaWxlbGlzdAppbmRleCA3ZjA4ZjJiMmYxODU4MmVkNTA0MDMyZGNhY2I1NDc4
NmExNjlhZDVmLi4zZWYxY2E4OGZmYWVhYTI5ZGNkODNiNzU1YzJiM2JmMjg4ZjBmMmFhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2VzLWlucHV0LnhjZmlsZWxpc3QKKysr
IGIvU291cmNlL1dlYktpdC9EZXJpdmVkU291cmNlcy1pbnB1dC54Y2ZpbGVsaXN0CkBAIC0xNiw2
ICsxNiw3IEBAICQoSkFWQVNDUklQVENPUkVfUFJJVkFURV9IRUFERVJTX0RJUikveHhkLnBsCiAk
KFBST0pFQ1RfRElSKS9HUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MubWVzc2Fn
ZXMuaW4KICQoUFJPSkVDVF9ESVIpL0dQVVByb2Nlc3MvR1BVUHJvY2Vzcy5tZXNzYWdlcy5pbgog
JChQUk9KRUNUX0RJUikvR1BVUHJvY2Vzcy9tYWMvY29tLmFwcGxlLldlYktpdC5HUFVQcm9jZXNz
LnNiLmluCiskKFBST0pFQ1RfRElSKS9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUGxheWVy
TWFuYWdlclByb3h5Lm1lc3NhZ2VzLmluCiAkKFBST0pFQ1RfRElSKS9OZXR3b3JrUHJvY2Vzcy9D
b29raWVzL1dlYkNvb2tpZU1hbmFnZXIubWVzc2FnZXMuaW4KICQoUFJPSkVDVF9ESVIpL05ldHdv
cmtQcm9jZXNzL0N1c3RvbVByb3RvY29scy9MZWdhY3lDdXN0b21Qcm90b2NvbE1hbmFnZXIubWVz
c2FnZXMuaW4KICQoUFJPSkVDVF9ESVIpL05ldHdvcmtQcm9jZXNzL0luZGV4ZWREQi9XZWJJREJD
b25uZWN0aW9uVG9DbGllbnQubWVzc2FnZXMuaW4KQEAgLTk3LDYgKzk4LDcgQEAgJChQUk9KRUNU
X0RJUikvV2ViUHJvY2Vzcy9DYWNoZS9XZWJDYWNoZVN0b3JhZ2VDb25uZWN0aW9uLm1lc3NhZ2Vz
LmluCiAkKFBST0pFQ1RfRElSKS9XZWJQcm9jZXNzL0RhdGFiYXNlcy9JbmRleGVkREIvV2ViSURC
Q29ubmVjdGlvblRvU2VydmVyLm1lc3NhZ2VzLmluCiAkKFBST0pFQ1RfRElSKS9XZWJQcm9jZXNz
L0Z1bGxTY3JlZW4vV2ViRnVsbFNjcmVlbk1hbmFnZXIubWVzc2FnZXMuaW4KICQoUFJPSkVDVF9E
SVIpL1dlYlByb2Nlc3MvR1BVL0dQVVByb2Nlc3NDb25uZWN0aW9uLm1lc3NhZ2VzLmluCiskKFBS
T0pFQ1RfRElSKS9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVNZWRpYVBsYXllck1hbmFnZXIu
bWVzc2FnZXMuaW4KICQoUFJPSkVDVF9ESVIpL1dlYlByb2Nlc3MvR2VvbG9jYXRpb24vV2ViR2Vv
bG9jYXRpb25NYW5hZ2VyLm1lc3NhZ2VzLmluCiAkKFBST0pFQ1RfRElSKS9XZWJQcm9jZXNzL05l
dHdvcmsvTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLm1lc3NhZ2VzLmluCiAkKFBST0pFQ1RfRElS
KS9XZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIubWVzc2FnZXMuaW4KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMtb3V0cHV0LnhjZmlsZWxpc3QgYi9T
b3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2VzLW91dHB1dC54Y2ZpbGVsaXN0CmluZGV4IDNiMWU5
NDExNzAzOGJmMGQwNGEwNzU3ZjVlNmQ4NWUzMzRiZDc1YWUuLmM4YTNiNDk1YzBjZTU1NDEyOTky
MzY4MTEzMjAwZGEyYjk0MDc5MjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvRGVyaXZlZFNv
dXJjZXMtb3V0cHV0LnhjZmlsZWxpc3QKKysrIGIvU291cmNlL1dlYktpdC9EZXJpdmVkU291cmNl
cy1vdXRwdXQueGNmaWxlbGlzdApAQCAtMTE0LDYgKzExNCwxMiBAQCAkKEJVSUxUX1BST0RVQ1RT
X0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9QbHVnaW5Qcm94eU1lc3NhZ2VzUmVwbGllcy5o
CiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9SZW1vdGVMYXll
clRyZWVEcmF3aW5nQXJlYVByb3h5TWVzc2FnZVJlY2VpdmVyLmNwcAogJChCVUlMVF9QUk9EVUNU
U19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIvUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWFQ
cm94eU1lc3NhZ2VzLmgKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJL
aXQyL1JlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhUHJveHlNZXNzYWdlc1JlcGxpZXMuaAorJChC
VUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIvUmVtb3RlTWVkaWFQbGF5
ZXJNYW5hZ2VyTWVzc2FnZVJlY2VpdmVyLmNwcAorJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2
ZWRTb3VyY2VzL1dlYktpdDIvUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyTWVzc2FnZXMuaAorJChC
VUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIvUmVtb3RlTWVkaWFQbGF5
ZXJNYW5hZ2VyTWVzc2FnZXNSZXBsaWVzLmgKKyQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVk
U291cmNlcy9XZWJLaXQyL1JlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5TWVzc2FnZVJlY2Vp
dmVyLmNwcAorJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIvUmVt
b3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHlNZXNzYWdlcy5oCiskKEJVSUxUX1BST0RVQ1RTX0RJ
UikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9SZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eU1l
c3NhZ2VzUmVwbGllcy5oCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2Vi
S2l0Mi9SZW1vdGVPYmplY3RSZWdpc3RyeU1lc3NhZ2VSZWNlaXZlci5jcHAKICQoQlVJTFRfUFJP
RFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQyL1JlbW90ZU9iamVjdFJlZ2lzdHJ5TWVz
c2FnZXMuaAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIvUmVt
b3RlT2JqZWN0UmVnaXN0cnlNZXNzYWdlc1JlcGxpZXMuaApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9EZXJpdmVkU291cmNlcy5tYWtlIGIvU291cmNlL1dlYktpdC9EZXJpdmVkU291cmNlcy5t
YWtlCmluZGV4IGJlNTI1ZTEzYzU5YmJkMTQ1NmU4ZjBkNDIzYmE2NDQxY2U4YjA4ZGEuLjk2ZjNh
MmVjZWYzMTE4Y2UyM2YzODc1MWQ3MmUyYWIwODNjZjRhYzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvRGVyaXZlZFNvdXJjZXMubWFrZQorKysgYi9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3Vy
Y2VzLm1ha2UKQEAgLTI0LDYgKzI0LDcgQEAgVlBBVEggPSBcCiAgICAgJChXZWJLaXQyKSBcCiAg
ICAgJChXZWJLaXQyKS9HUFVQcm9jZXNzIFwKICAgICAkKFdlYktpdDIpL0dQVVByb2Nlc3MvbWFj
IFwKKyAgICAkKFdlYktpdDIpL0dQVVByb2Nlc3MvbWVkaWEgXAogICAgICQoV2ViS2l0MikvTmV0
d29ya1Byb2Nlc3MgXAogICAgICQoV2ViS2l0MikvTmV0d29ya1Byb2Nlc3MvQ29va2llcyBcCiAg
ICAgJChXZWJLaXQyKS9OZXR3b3JrUHJvY2Vzcy9jYWNoZSBcCkBAIC00OSw2ICs1MCw3IEBAIFZQ
QVRIID0gXAogICAgICQoV2ViS2l0MikvV2ViUHJvY2Vzcy9GdWxsU2NyZWVuIFwKICAgICAkKFdl
YktpdDIpL1dlYlByb2Nlc3MvR2VvbG9jYXRpb24gXAogICAgICQoV2ViS2l0MikvV2ViUHJvY2Vz
cy9HUFUgXAorICAgICQoV2ViS2l0MikvV2ViUHJvY2Vzcy9HUFUvbWVkaWEgXAogICAgICQoV2Vi
S2l0MikvV2ViUHJvY2Vzcy9JY29uRGF0YWJhc2UgXAogICAgICQoV2ViS2l0MikvV2ViUHJvY2Vz
cy9NZWRpYUNhY2hlIFwKICAgICAkKFdlYktpdDIpL1dlYlByb2Nlc3MvTWVkaWFTdHJlYW0gXApA
QCAtMTM1LDYgKzEzNyw4IEBAIE1FU1NBR0VfUkVDRUlWRVJTID0gXAogICAgIFBsdWdpblByb2Nl
c3NQcm94eSBcCiAgICAgUGx1Z2luUHJveHkgXAogICAgIFJlbW90ZUxheWVyVHJlZURyYXdpbmdB
cmVhUHJveHkgXAorICAgIFJlbW90ZU1lZGlhUGxheWVyTWFuYWdlciBcCisgICAgUmVtb3RlTWVk
aWFQbGF5ZXJNYW5hZ2VyUHJveHkgXAogICAgIFJlbW90ZU9iamVjdFJlZ2lzdHJ5IFwKICAgICBS
ZW1vdGVTY3JvbGxpbmdDb29yZGluYXRvciBcCiAgICAgUmVtb3RlV2ViSW5zcGVjdG9yUHJveHkg
XApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dl
YlByb2Nlc3MuY3BwIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dl
YlByb2Nlc3MuY3BwCmluZGV4IGJkMTM5ZmU1MzMxYmNjZTM2YzMzNDNiMTUyMTdkMDExZjI1MjRj
MzguLjQ3YTlhYzNjYzFmZDdlYWZlZmRlNmI5NDAzYjBjYWRjYTJiNjljMmQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5j
cHAKQEAgLTM1LDYgKzM1LDggQEAKICNpbmNsdWRlICJHUFVQcm9jZXNzUHJveHlNZXNzYWdlcy5o
IgogI2luY2x1ZGUgIkxvZ2dpbmcuaCIKICNpbmNsdWRlICJSZW1vdGVMYXllclRyZWVEcmF3aW5n
QXJlYVByb3h5TWVzc2FnZXMuaCIKKyNpbmNsdWRlICJSZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQ
cm94eS5oIgorI2luY2x1ZGUgIlJlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5TWVzc2FnZXMu
aCIKICNpbmNsdWRlICJSZW1vdGVTY3JvbGxpbmdDb29yZGluYXRvclRyYW5zYWN0aW9uLmgiCiAj
aW5jbHVkZSAiV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgiCiAjaW5jbHVkZSAiV2ViRXJyb3JzLmgi
CkBAIC01Miw2ICs1NCw3IEBAIEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OkdQVUNvbm5lY3Rp
b25Ub1dlYlByb2Nlc3MoR1BVUHJvY2VzcyYgZ3B1UHJvY2VzcywgV2ViCiAgICAgOiBtX2Nvbm5l
Y3Rpb24oSVBDOjpDb25uZWN0aW9uOjpjcmVhdGVTZXJ2ZXJDb25uZWN0aW9uKGNvbm5lY3Rpb25J
ZGVudGlmaWVyLCAqdGhpcykpCiAgICAgLCBtX2dwdVByb2Nlc3MoZ3B1UHJvY2VzcykKICAgICAs
IG1fd2ViUHJvY2Vzc0lkZW50aWZpZXIod2ViUHJvY2Vzc0lkZW50aWZpZXIpCisgICAgLCBtX3Jl
bW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5KG1ha2VVbmlxdWU8UmVtb3RlTWVkaWFQbGF5ZXJN
YW5hZ2VyUHJveHk+KCp0aGlzKSkKIHsKICAgICBSRUxFQVNFX0FTU0VSVChSdW5Mb29wOjppc01h
aW4oKSk7CiAgICAgbV9jb25uZWN0aW9uLT5vcGVuKCk7CkBAIC02MSw2ICs2NCw3IEBAIEdQVUNv
bm5lY3Rpb25Ub1dlYlByb2Nlc3M6On5HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzKCkKIHsKICAg
ICBSRUxFQVNFX0FTU0VSVChSdW5Mb29wOjppc01haW4oKSk7CiAKKyAgICBtX3JlbW90ZU1lZGlh
UGxheWVyTWFuYWdlclByb3h5ID0gbnVsbHB0cjsKICAgICBtX2Nvbm5lY3Rpb24tPmludmFsaWRh
dGUoKTsKIH0KIApAQCAtNzQsNiArNzgsMjYgQEAgdm9pZCBHUFVDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzOjpkaWRSZWNlaXZlSW52YWxpZE1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiBjb25uZWMKICAg
ICBDUkFTSCgpOwogfQogCit2b2lkIEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmRpZFJlY2Vp
dmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgSVBDOjpEZWNvZGVyJiBkZWNv
ZGVyKQoreworICAgIGlmIChkZWNvZGVyLm1lc3NhZ2VSZWNlaXZlck5hbWUoKSA9PSBNZXNzYWdl
czo6UmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHk6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSkg
eworICAgICAgICBpZiAobV9yZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eSkKKyAgICAgICAg
ICAgIG1fcmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHktPmRpZFJlY2VpdmVNZXNzYWdlRnJv
bVdlYlByb2Nlc3MoY29ubmVjdGlvbiwgZGVjb2Rlcik7CisgICAgICAgIHJldHVybjsKKyAgICB9
Cit9CisKK3ZvaWQgR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6ZGlkUmVjZWl2ZVN5bmNNZXNz
YWdlKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgSVBDOjpEZWNvZGVyJiBkZWNvZGVyLCBz
dGQ6OnVuaXF1ZV9wdHI8SVBDOjpFbmNvZGVyPiYgcmVwbHlFbmNvZGVyKQoreworICAgIGlmIChk
ZWNvZGVyLm1lc3NhZ2VSZWNlaXZlck5hbWUoKSA9PSBNZXNzYWdlczo6UmVtb3RlTWVkaWFQbGF5
ZXJNYW5hZ2VyUHJveHk6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSkgeworICAgICAgICBpZiAobV9y
ZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eSkKKyAgICAgICAgICAgIG1fcmVtb3RlTWVkaWFQ
bGF5ZXJNYW5hZ2VyUHJveHktPmRpZFJlY2VpdmVTeW5jTWVzc2FnZUZyb21XZWJQcm9jZXNzKGNv
bm5lY3Rpb24sIGRlY29kZXIsIHJlcGx5RW5jb2Rlcik7CisgICAgICAgIHJldHVybjsKKyAgICB9
CisKKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0
CiAKICNlbmRpZiAvLyBFTkFCTEUoR1BVX1BST0NFU1MpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L0dQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oIGIvU291cmNlL1dlYktp
dC9HUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaAppbmRleCBmOTBjYjI4ZjI4
N2VjZTFmZmZkMTQ1ZmUxMjQ4ZGI5OTc1Y2ViMDJkLi5iMmY4N2M5MWQ1MTJhOThjOGVmMjg2NDU1
NTg5YzY0MGM0MGM0YjIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BV
Q29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9H
UFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgKQEAgLTM2LDYgKzM2LDcgQEAKIG5hbWVzcGFjZSBX
ZWJLaXQgewogCiBjbGFzcyBHUFVQcm9jZXNzOworY2xhc3MgUmVtb3RlTWVkaWFQbGF5ZXJNYW5h
Z2VyUHJveHk7CiAKIGNsYXNzIEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MKICAgICA6IHB1Ymxp
YyBSZWZDb3VudGVkPEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M+CkBAIC01OCwxMCArNTksMTMg
QEAgcHJpdmF0ZToKICAgICAvLyBJUEM6OkNvbm5lY3Rpb246OkNsaWVudAogICAgIHZvaWQgZGlk
Q2xvc2UoSVBDOjpDb25uZWN0aW9uJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRSZWNlaXZlSW52
YWxpZE1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpTdHJpbmdSZWZlcmVuY2UgbWVzc2Fn
ZVJlY2VpdmVyTmFtZSwgSVBDOjpTdHJpbmdSZWZlcmVuY2UgbWVzc2FnZU5hbWUpIG92ZXJyaWRl
OworICAgIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNv
ZGVyJikgb3ZlcnJpZGU7CisgICAgdm9pZCBkaWRSZWNlaXZlU3luY01lc3NhZ2UoSVBDOjpDb25u
ZWN0aW9uJiwgSVBDOjpEZWNvZGVyJiwgc3RkOjp1bmlxdWVfcHRyPElQQzo6RW5jb2Rlcj4mKSBv
dmVycmlkZTsKIAogICAgIFJlZjxJUEM6OkNvbm5lY3Rpb24+IG1fY29ubmVjdGlvbjsKICAgICBS
ZWY8R1BVUHJvY2Vzcz4gbV9ncHVQcm9jZXNzOwogICAgIGNvbnN0IFdlYkNvcmU6OlByb2Nlc3NJ
ZGVudGlmaWVyIG1fd2ViUHJvY2Vzc0lkZW50aWZpZXI7CisgICAgc3RkOjp1bmlxdWVfcHRyPFJl
bW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5PiBtX3JlbW90ZU1lZGlhUGxheWVyTWFuYWdlclBy
b3h5OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHkuY3BwIGIv
U291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyTWFuYWdlclBy
b3h5LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi5hY2ZjNTNkNWE0Y2Y5ZDEwYTJmZDhlYWVmZGE5ODIyMDNhMmRl
ZDViCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1Jl
bW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5LmNwcApAQCAtMCwwICsxLDE0NSBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJ
VFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
CisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJSZW1vdGVNZWRpYVBsYXllck1h
bmFnZXJQcm94eS5oIgorCisjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKQorCisjaW5jbHVkZSAiR1BV
Q29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oIgorI2luY2x1ZGUgIlJlbW90ZU1lZGlhUGxheWVyTWFu
YWdlck1lc3NhZ2VzLmgiCisjaW5jbHVkZSAiUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHlN
ZXNzYWdlcy5oIgorI2luY2x1ZGUgIldlYkNvcmVBcmd1bWVudENvZGVycy5oIgorI2luY2x1ZGUg
PFdlYkNvcmUvTWVkaWFQbGF5ZXIuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL01lZGlhUGxheWVyUHJp
dmF0ZS5oPgorI2luY2x1ZGUgPHd0Zi9VbmlxdWVSZWYuaD4KKworI2RlZmluZSBNRVNTQUdFX0NI
RUNLX0NPTlRFWFRJRChpZGVudGlmaWVyKSBNRVNTQUdFX0NIRUNLX0JBU0UobV9wcm94aWVzLmlz
VmFsaWRLZXkoaWRlbnRpZmllciksICZtX3dlYlByb2Nlc3NDb25uZWN0aW9uLmNvbm5lY3Rpb24o
KSkKKworbmFtZXNwYWNlIFdlYktpdCB7Cit1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKKworI2lm
ICFSRUxFQVNFX0xPR19ESVNBQkxFRAorc3RhdGljIFJlZlB0cjxMb2dnZXI+JiBudWxsTG9nZ2Vy
KCkKK3sKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8UmVmUHRyPExvZ2dlcj4+IGxvZ2dlcjsK
KyAgICByZXR1cm4gbG9nZ2VyOworfQorI2VuZGlmCisKK2NsYXNzIFJlbW90ZU1lZGlhUGxheWVy
TWFuYWdlclByb3h5OjpQbGF5ZXJQcm94eQorICAgIDogcHVibGljIE1lZGlhUGxheWVyQ2xpZW50
IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKK3B1YmxpYzoKKyAgICBQbGF5ZXJQcm94
eShjb25zdCBNZWRpYVBsYXllclByaXZhdGVSZW1vdGVJZGVudGlmaWVyJiBpZCwgUmVmPElQQzo6
Q29ubmVjdGlvbj4mJiBjb25uZWN0aW9uLCBNZWRpYVBsYXllckVudW1zOjpNZWRpYUVuZ2luZUlk
ZW50aWZpZXIgcmVtb3RlRW5naW5lSWRlbnRpZmllcikKKyAgICAgICAgOiBtX2lkKGlkKQorICAg
ICAgICAsIG1fY29ubmVjdGlvbihXVEZNb3ZlKGNvbm5lY3Rpb24pKQorICAgICAgICAsIG1fcmVt
b3RlRW5naW5lSWRlbnRpZmllcihyZW1vdGVFbmdpbmVJZGVudGlmaWVyKQorICAgIHsKKyAgICB9
CisKKyAgICB2aXJ0dWFsIH5QbGF5ZXJQcm94eSgpCisgICAgeworICAgIH0KKworcHJpdmF0ZToK
KworICAgIC8vIE1lZGlhUGxheWVyQ2xpZW50CisgICAgY29uc3QgVmVjdG9yPFdlYkNvcmU6OkNv
bnRlbnRUeXBlPiYgbWVkaWFDb250ZW50VHlwZXNSZXF1aXJpbmdIYXJkd2FyZVN1cHBvcnQoKSBj
b25zdCBmaW5hbCB7IHJldHVybiBtX3R5cGVzUmVxdWlyaW5nSGFyZHdhcmVTdXBwb3J0OyB9CisK
KyNpZiAhUkVMRUFTRV9MT0dfRElTQUJMRUQKKyAgICBjb25zdCBMb2dnZXImIG1lZGlhUGxheWVy
TG9nZ2VyKCkgZmluYWwKKyAgICB7CisgICAgICAgIGlmICghbnVsbExvZ2dlcigpLmdldCgpKSB7
CisgICAgICAgICAgICBudWxsTG9nZ2VyKCkgPSBMb2dnZXI6OmNyZWF0ZSh0aGlzKTsKKyAgICAg
ICAgICAgIG51bGxMb2dnZXIoKS0+c2V0RW5hYmxlZCh0aGlzLCBmYWxzZSk7CisgICAgICAgIH0K
KworICAgICAgICByZXR1cm4gKm51bGxMb2dnZXIoKS5nZXQoKTsKKyAgICB9CisjZW5kaWYKKwor
cHJvdGVjdGVkOgorICAgIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZUlkZW50aWZpZXIgbV9pZDsK
KyAgICBSZWY8SVBDOjpDb25uZWN0aW9uPiBtX2Nvbm5lY3Rpb247CisgICAgc3RkOjp1bmlxdWVf
cHRyPE1lZGlhUGxheWVyUHJpdmF0ZUludGVyZmFjZT4gbV9wbGF5ZXI7CisgICAgTWVkaWFQbGF5
ZXJFbnVtczo6TWVkaWFFbmdpbmVJZGVudGlmaWVyIG1fcmVtb3RlRW5naW5lSWRlbnRpZmllcjsK
KyAgICBWZWN0b3I8V2ViQ29yZTo6Q29udGVudFR5cGU+IG1fdHlwZXNSZXF1aXJpbmdIYXJkd2Fy
ZVN1cHBvcnQ7Cit9OworCitSZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eTo6UmVtb3RlTWVk
aWFQbGF5ZXJNYW5hZ2VyUHJveHkoR1BVQ29ubmVjdGlvblRvV2ViUHJvY2VzcyYgY29ubmVjdGlv
bikKKyAgICA6IG1fd2ViUHJvY2Vzc0Nvbm5lY3Rpb24oY29ubmVjdGlvbikKK3sKK30KKworUmVt
b3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHk6On5SZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94
eSgpCit7Cit9CisKK3ZvaWQgUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHk6OmNyZWF0ZU1l
ZGlhUGxheWVyKGNvbnN0IE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZUlkZW50aWZpZXImIGlkLCBN
ZWRpYVBsYXllckVudW1zOjpNZWRpYUVuZ2luZUlkZW50aWZpZXIgcmVtb3RlRW5naW5lSWRlbnRp
ZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sIHN1Y2NlZWRlZCk+JiYgY29tcGxldGlv
bkhhbmRsZXIpCit7CisgICAgTUVTU0FHRV9DSEVDS19DT05URVhUSUQoaWQpOworCisgICAgQVNT
RVJUKCFtX3Byb3hpZXMuY29udGFpbnMoaWQpKTsKKyAgICBtX3Byb3hpZXMuYWRkKGlkLCBtYWtl
VW5pcXVlPFBsYXllclByb3h5PihpZCwgbV93ZWJQcm9jZXNzQ29ubmVjdGlvbi5jb25uZWN0aW9u
KCksIHJlbW90ZUVuZ2luZUlkZW50aWZpZXIpKTsKKworICAgIGNvbXBsZXRpb25IYW5kbGVyKHRy
dWUpOworfQorCit2b2lkIFJlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5OjpnZXRTdXBwb3J0
ZWRUeXBlcyhNZWRpYVBsYXllckVudW1zOjpNZWRpYUVuZ2luZUlkZW50aWZpZXIsIENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoVmVjdG9yPFN0cmluZz4mJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCit7
CisgICAgLy8gRklYTUU6IHF1ZXJ5IHRoZSBhcHByb3ByaWF0ZSBtZWRpYSBlbmdpbmUKKyAgICBj
b21wbGV0aW9uSGFuZGxlcih7ICJ2aWRlby9tcDQiLCAiYXVkaW8vbXA0IiB9KTsKK30KKwordm9p
ZCBSZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eTo6c3VwcG9ydHNUeXBlKE1lZGlhUGxheWVy
RW51bXM6Ok1lZGlhRW5naW5lSWRlbnRpZmllciwgY29uc3QgV2ViQ29yZTo6TWVkaWFFbmdpbmVT
dXBwb3J0UGFyYW1ldGVycyYmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKE1lZGlhUGxheWVyOjpT
dXBwb3J0c1R5cGUpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQoreworICAgIC8vIEZJWE1FOiBkb24n
dCB0ZWxsIGxpZXMKKyAgICBjb21wbGV0aW9uSGFuZGxlcihNZWRpYVBsYXllcjo6U3VwcG9ydHNU
eXBlOjpNYXlCZVN1cHBvcnRlZCk7Cit9CisKK3ZvaWQgUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2Vy
UHJveHk6Om9yaWdpbnNJbk1lZGlhQ2FjaGUoTWVkaWFQbGF5ZXJFbnVtczo6TWVkaWFFbmdpbmVJ
ZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChWZWN0b3I8
V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhPiYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3sK
KyAgICBjb21wbGV0aW9uSGFuZGxlcih7IH0pOworfQorCit2b2lkIFJlbW90ZU1lZGlhUGxheWVy
TWFuYWdlclByb3h5OjpjbGVhck1lZGlhQ2FjaGUoTWVkaWFQbGF5ZXJFbnVtczo6TWVkaWFFbmdp
bmVJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmJiwgV2FsbFRpbWUpCit7Cit9CisKK3ZvaWQgUmVt
b3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHk6OmNsZWFyTWVkaWFDYWNoZUZvck9yaWdpbnMoTWVk
aWFQbGF5ZXJFbnVtczo6TWVkaWFFbmdpbmVJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmJiwgVmVj
dG9yPFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YT4mJikKK3sKK30KKwordm9pZCBSZW1vdGVN
ZWRpYVBsYXllck1hbmFnZXJQcm94eTo6c3VwcG9ydHNLZXlTeXN0ZW0oTWVkaWFQbGF5ZXJFbnVt
czo6TWVkaWFFbmdpbmVJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmJiwgY29uc3QgU3RyaW5nJiYs
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit7Cisg
ICAgY29tcGxldGlvbkhhbmRsZXIoeyB9KTsKK30KKworfQorCisjdW5kZWYgTUVTU0FHRV9DSEVD
S19DT05URVhUSUQKKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nl
c3MvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQv
R1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eS5oCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLmI0MmM4YzUzOTM5YWM1MWJkYjdlYzRkNWJmYjFmMDQ4OGU0Mzc1MjcKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJN
YW5hZ2VyUHJveHkuaApAQCAtMCwwICsxLDc0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE5
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBB
UyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJV
VE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
CisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNl
CisKKyNpZiBFTkFCTEUoR1BVX1BST0NFU1MpCisKKyNpbmNsdWRlICJDb25uZWN0aW9uLmgiCisj
aW5jbHVkZSAiTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlSWRlbnRpZmllci5oIgorI2luY2x1ZGUg
Ik1lc3NhZ2VSZWNlaXZlci5oIgorI2luY2x1ZGUgPFdlYkNvcmUvTWVkaWFQbGF5ZXIuaD4KKwor
bmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M7CisK
K2NsYXNzIFJlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5IDogcHJpdmF0ZSBJUEM6Ok1lc3Nh
Z2VSZWNlaXZlciB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CitwdWJsaWM6CisgICAg
ZXhwbGljaXQgUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHkoR1BVQ29ubmVjdGlvblRvV2Vi
UHJvY2VzcyYpOworICAgIH5SZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eSgpOworCisgICAg
R1BVQ29ubmVjdGlvblRvV2ViUHJvY2VzcyYgd2ViUHJvY2Vzc0Nvbm5lY3Rpb24oKSBjb25zdCB7
IHJldHVybiBtX3dlYlByb2Nlc3NDb25uZWN0aW9uOyB9CisgICAgdm9pZCBjbGVhcigpOworCisg
ICAgdm9pZCBkaWRSZWNlaXZlTWVzc2FnZUZyb21XZWJQcm9jZXNzKElQQzo6Q29ubmVjdGlvbiYg
Y29ubmVjdGlvbiwgSVBDOjpEZWNvZGVyJiBkZWNvZGVyKSB7IGRpZFJlY2VpdmVNZXNzYWdlKGNv
bm5lY3Rpb24sIGRlY29kZXIpOyB9CisgICAgdm9pZCBkaWRSZWNlaXZlU3luY01lc3NhZ2VGcm9t
V2ViUHJvY2VzcyhJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIElQQzo6RGVjb2RlciYgZGVj
b2Rlciwgc3RkOjp1bmlxdWVfcHRyPElQQzo6RW5jb2Rlcj4mIGVuY29kZXIpIHsgZGlkUmVjZWl2
ZVN5bmNNZXNzYWdlKGNvbm5lY3Rpb24sIGRlY29kZXIsIGVuY29kZXIpOyB9CisKK3ByaXZhdGU6
CisgICAgLy8gSVBDOjpNZXNzYWdlUmVjZWl2ZXIKKyAgICB2b2lkIGRpZFJlY2VpdmVNZXNzYWdl
KElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYpIGZpbmFsOworICAgIHZvaWQgZGlkUmVj
ZWl2ZVN5bmNNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYsIHN0ZDo6dW5p
cXVlX3B0cjxJUEM6OkVuY29kZXI+JikgZmluYWw7CisKKyAgICB2b2lkIGNyZWF0ZU1lZGlhUGxh
eWVyKGNvbnN0IE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZUlkZW50aWZpZXImLCBXZWJDb3JlOjpN
ZWRpYVBsYXllckVudW1zOjpNZWRpYUVuZ2luZUlkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoYm9vbCk+JiYpOworCisgICAgdm9pZCBnZXRTdXBwb3J0ZWRUeXBlcyhXZWJDb3JlOjpN
ZWRpYVBsYXllckVudW1zOjpNZWRpYUVuZ2luZUlkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoVmVjdG9yPFN0cmluZz4mJik+JiYpOworICAgIHZvaWQgc3VwcG9ydHNUeXBlKFdlYkNv
cmU6Ok1lZGlhUGxheWVyRW51bXM6Ok1lZGlhRW5naW5lSWRlbnRpZmllciwgY29uc3QgV2ViQ29y
ZTo6TWVkaWFFbmdpbmVTdXBwb3J0UGFyYW1ldGVycyYmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KFdlYkNvcmU6Ok1lZGlhUGxheWVyOjpTdXBwb3J0c1R5cGUpPiYmKTsKKworICAgIHZvaWQgb3Jp
Z2luc0luTWVkaWFDYWNoZShXZWJDb3JlOjpNZWRpYVBsYXllckVudW1zOjpNZWRpYUVuZ2luZUlk
ZW50aWZpZXIsIGNvbnN0IFN0cmluZyYmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFZlY3RvcjxX
ZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGE+JiYpPiYmKTsKKyAgICB2b2lkIGNsZWFyTWVkaWFD
YWNoZShXZWJDb3JlOjpNZWRpYVBsYXllckVudW1zOjpNZWRpYUVuZ2luZUlkZW50aWZpZXIsIGNv
bnN0IFN0cmluZyYmLCBXYWxsVGltZSk7CisgICAgdm9pZCBjbGVhck1lZGlhQ2FjaGVGb3JPcmln
aW5zKFdlYkNvcmU6Ok1lZGlhUGxheWVyRW51bXM6Ok1lZGlhRW5naW5lSWRlbnRpZmllciwgY29u
c3QgU3RyaW5nJiYsIFZlY3RvcjxXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGE+JiYpOworICAg
IHZvaWQgc3VwcG9ydHNLZXlTeXN0ZW0oV2ViQ29yZTo6TWVkaWFQbGF5ZXJFbnVtczo6TWVkaWFF
bmdpbmVJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmJiwgY29uc3QgU3RyaW5nJiYsIENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpOworCisgICAgY2xhc3MgUGxheWVyUHJveHk7CisgICAg
ZnJpZW5kIGNsYXNzIFBsYXllclByb3h5OworICAgIEhhc2hNYXA8TWVkaWFQbGF5ZXJQcml2YXRl
UmVtb3RlSWRlbnRpZmllciwgc3RkOjp1bmlxdWVfcHRyPFBsYXllclByb3h5Pj4gbV9wcm94aWVz
OworICAgIEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MmIG1fd2ViUHJvY2Vzc0Nvbm5lY3Rpb247
Cit9OworCit9CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNz
L21lZGlhL1JlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5Lm1lc3NhZ2VzLmluIGIvU291cmNl
L1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5Lm1l
c3NhZ2VzLmluCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjFiZmM0Yzc4MmEzMTZlMGI4NjBhN2Q1YmVhMDkyMDRlYWUw
MmYzNDMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEv
UmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHkubWVzc2FnZXMuaW4KQEAgLTAsMCArMSwzNyBA
QAorIyBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
IworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisjIGFyZSBtZXQ6CisjIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyMgMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorIyAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
IworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05U
UklCVVRPUlMgYGBBUyBJUycnCisjIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorIyBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisjIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRT
IENPTlRSSUJVVE9SUworIyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisjIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisjIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUworIyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorIyBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorIyBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GCisjIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKworI2lmIEVOQUJMRShWSURF
TykKKworbWVzc2FnZXMgLT4gUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHkgTm90UmVmQ291
bnRlZCB7CisgICAgQ3JlYXRlTWVkaWFQbGF5ZXIoV2ViS2l0OjpNZWRpYVBsYXllclByaXZhdGVS
ZW1vdGVJZGVudGlmaWVyIGlkLCBlbnVtOnVpbnQ4X3QgV2ViQ29yZTo6TWVkaWFQbGF5ZXJFbnVt
czo6TWVkaWFFbmdpbmVJZGVudGlmaWVyIHJlbW90ZUVuZ2luZUlkZW50aWZpZXIpIC0+IChib29s
IHN1Y2Nlc3MpIFN5bmNocm9ub3VzCisKKyAgICBHZXRTdXBwb3J0ZWRUeXBlcyhlbnVtOnVpbnQ4
X3QgV2ViQ29yZTo6TWVkaWFQbGF5ZXJFbnVtczo6TWVkaWFFbmdpbmVJZGVudGlmaWVyIHJlbW90
ZUVuZ2luZUlkZW50aWZpZXIpIC0+IChWZWN0b3I8U3RyaW5nPiB0eXBlcykgU3luY2hyb25vdXMK
KyAgICBTdXBwb3J0c1R5cGUoZW51bTp1aW50OF90IFdlYkNvcmU6Ok1lZGlhUGxheWVyRW51bXM6
Ok1lZGlhRW5naW5lSWRlbnRpZmllciByZW1vdGVFbmdpbmVJZGVudGlmaWVyLCBzdHJ1Y3QgV2Vi
Q29yZTo6TWVkaWFFbmdpbmVTdXBwb3J0UGFyYW1ldGVycyB0eXBlKSAtPiAoZW51bTp1aW50OF90
IFdlYkNvcmU6Ok1lZGlhUGxheWVyOjpTdXBwb3J0c1R5cGUgc3VwcG9ydCkgU3luY2hyb25vdXMK
KyAgICBPcmlnaW5zSW5NZWRpYUNhY2hlKGVudW06dWludDhfdCBXZWJDb3JlOjpNZWRpYVBsYXll
ckVudW1zOjpNZWRpYUVuZ2luZUlkZW50aWZpZXIgcmVtb3RlRW5naW5lSWRlbnRpZmllciwgU3Ry
aW5nIHBhdGgpIC0+IChWZWN0b3I8V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhPiBvcmlnaW5z
KSBTeW5jaHJvbm91cworICAgIENsZWFyTWVkaWFDYWNoZShlbnVtOnVpbnQ4X3QgV2ViQ29yZTo6
TWVkaWFQbGF5ZXJFbnVtczo6TWVkaWFFbmdpbmVJZGVudGlmaWVyIHJlbW90ZUVuZ2luZUlkZW50
aWZpZXIsIFN0cmluZyBwYXRoLCBXYWxsVGltZSBtb2RpZmllZFNpbmNlKQorICAgIENsZWFyTWVk
aWFDYWNoZUZvck9yaWdpbnMoZW51bTp1aW50OF90IFdlYkNvcmU6Ok1lZGlhUGxheWVyRW51bXM6
Ok1lZGlhRW5naW5lSWRlbnRpZmllciByZW1vdGVFbmdpbmVJZGVudGlmaWVyLCBTdHJpbmcgcGF0
aCwgVmVjdG9yPFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YT4gb3JpZ2lucykKKyAgICBTdXBw
b3J0c0tleVN5c3RlbShlbnVtOnVpbnQ4X3QgV2ViQ29yZTo6TWVkaWFQbGF5ZXJFbnVtczo6TWVk
aWFFbmdpbmVJZGVudGlmaWVyIHJlbW90ZUVuZ2luZUlkZW50aWZpZXIsIFN0cmluZyBrZXlTeXN0
ZW0sIFN0cmluZyBtaW1lVHlwZSkgLT4gKGJvb2wgc3VwcG9ydHMpIFN5bmNocm9ub3VzCit9CisK
KyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC9tZXNzYWdl
cy5weSBiL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvbWVzc2FnZXMucHkKaW5kZXggZWQx
MWFjMjcyNTIyNmU0N2EyYjU2YmNjOWVjZjIyMmRhYzAwMDlhZS4uZjJlOWVkN2FiNTQwMmVmNTEx
ODhmN2U4ZGJlMzk2YmE4YWNlMGZhZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TY3JpcHRz
L3dlYmtpdC9tZXNzYWdlcy5weQorKysgYi9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L21l
c3NhZ2VzLnB5CkBAIC0xLDQgKzEsNCBAQAotIyBDb3B5cmlnaHQgKEMpIDIwMTAtMjAxOCBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjIENvcHlyaWdodCAoQykgMjAxMC0yMDE5IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICMKICMgUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAjIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cwpAQCAtMjE5LDEwICsyMTksMTEgQEAgZGVmIHR5cGVzX3RoYXRfY2Fubm90X2JlX2ZvcndhcmRf
ZGVjbGFyZWQoKToKICAgICAgICAgJ1dlYkNvcmU6OlNXU2VydmVyQ29ubmVjdGlvbklkZW50aWZp
ZXInLAogICAgICAgICAnV2ViS2l0OjpBY3Rpdml0eVN0YXRlQ2hhbmdlSUQnLAogICAgICAgICAn
V2ViS2l0OjpMYXllckhvc3RpbmdDb250ZXh0SUQnLAotICAgICAgICAnV2ViS2l0OjpUcmFuc2Fj
dGlvbklEJywKKyAgICAgICAgJ1dlYktpdDo6TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlSWRlbnRp
ZmllcicsCiAgICAgICAgICdXZWJLaXQ6OlN0b3JhZ2VBcmVhSWRlbnRpZmllcicsCiAgICAgICAg
ICdXZWJLaXQ6OlN0b3JhZ2VBcmVhSW1wbElkZW50aWZpZXInLAogICAgICAgICAnV2ViS2l0OjpT
dG9yYWdlTmFtZXNwYWNlSWRlbnRpZmllcicsCisgICAgICAgICdXZWJLaXQ6OlRyYW5zYWN0aW9u
SUQnLAogICAgICAgICAnV2ViS2l0OjpVc2VyQ29udGVudENvbnRyb2xsZXJJZGVudGlmaWVyJywK
ICAgICAgICAgJ1dlYktpdDo6V2ViUGFnZVByb3h5SWRlbnRpZmllcicsCiAgICAgXSkKQEAgLTYw
Myw2ICs2MDQsNyBAQCBkZWYgaGVhZGVyc19mb3JfdHlwZSh0eXBlKToKICAgICAgICAgJ1dlYktp
dDo6V2ViTW91c2VFdmVudCc6IFsnIldlYkV2ZW50LmgiJ10sCiAgICAgICAgICdXZWJLaXQ6Oldl
YlRvdWNoRXZlbnQnOiBbJyJXZWJFdmVudC5oIiddLAogICAgICAgICAnV2ViS2l0OjpXZWJXaGVl
bEV2ZW50JzogWyciV2ViRXZlbnQuaCInXSwKKyAgICAgICAgJ1dlYkNvcmU6Ok1lZGlhRW5naW5l
U3VwcG9ydFBhcmFtZXRlcnMnOiBbJzxXZWJDb3JlL01lZGlhUGxheWVyLmg+J10sCiAgICAgICAg
ICdzdHJ1Y3QgV2ViQ29yZTo6RWxlbWVudENvbnRleHQnOiBbJzxXZWJDb3JlL0VsZW1lbnRDb250
ZXh0Lmg+J10sCiAgICAgICAgICdzdHJ1Y3QgV2ViS2l0OjpXZWJVc2VyU2NyaXB0RGF0YSc6IFsn
IldlYlVzZXJDb250ZW50Q29udHJvbGxlckRhdGFUeXBlcy5oIiddLAogICAgICAgICAnc3RydWN0
IFdlYktpdDo6V2ViVXNlclN0eWxlU2hlZXREYXRhJzogWyciV2ViVXNlckNvbnRlbnRDb250cm9s
bGVyRGF0YVR5cGVzLmgiJ10sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NvdXJjZXMudHh0
IGIvU291cmNlL1dlYktpdC9Tb3VyY2VzLnR4dAppbmRleCA1ZjA0ZDhhM2RhMGRkMzNlZjZiOTA2
YWVhOTVlMjk1MGY4ZGVmNmY5Li41NDI0ZTVkZmJiMTUyMDEwYjBiMzJkNmY1ZWE2ZDUzNTg5MTRl
NTZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NvdXJjZXMudHh0CisrKyBiL1NvdXJjZS9X
ZWJLaXQvU291cmNlcy50eHQKQEAgLTUwMCw2ICs1MDAsOCBAQCBXZWJQcm9jZXNzL01lZGlhU3Ry
ZWFtL01lZGlhRGV2aWNlU2FuZGJveEV4dGVuc2lvbnMuY3BwCiBXZWJQcm9jZXNzL01lZGlhU3Ry
ZWFtL1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlci5jcHAKIAogV2ViUHJvY2Vzcy9H
UFUvR1BVUHJvY2Vzc0Nvbm5lY3Rpb24uY3BwCitXZWJQcm9jZXNzL0dQVS9tZWRpYS9NZWRpYVBs
YXllclByaXZhdGVSZW1vdGUuY3BwCitXZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVNZWRpYVBs
YXllck1hbmFnZXIuY3BwCiAKIFdlYlByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc0Nvbm5l
Y3Rpb24uY3BwCiBXZWJQcm9jZXNzL05ldHdvcmsvV2ViTG9hZGVyU3RyYXRlZ3kuY3BwCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NvdXJjZXNDb2NvYS50eHQgYi9Tb3VyY2UvV2ViS2l0L1Nv
dXJjZXNDb2NvYS50eHQKaW5kZXggOWQyNDJlMmEwNjRkZmY3MmY0OWM0MmY1NGQ5NzgxM2NhZDk0
ZDkyYy4uZDk0ODNkMGExMzlhMDBhZGFkNzdmYTgzN2VjYzczZWMxNzhiOWMzZiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9Tb3VyY2VzQ29jb2EudHh0CisrKyBiL1NvdXJjZS9XZWJLaXQvU291
cmNlc0NvY29hLnR4dApAQCAtNTksNiArNTksNyBAQCBOZXR3b3JrUHJvY2Vzcy93ZWJydGMvTmV0
d29ya1JUQ1NvY2tldC5jcHAKIAogR1BVUHJvY2Vzcy9pb3MvR1BVUHJvY2Vzc0lPUy5tbQogR1BV
UHJvY2Vzcy9tYWMvR1BVUHJvY2Vzc01hYy5tbQorR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRp
YVBsYXllck1hbmFnZXJQcm94eS5jcHAKIEdQVVByb2Nlc3MvRW50cnlQb2ludC9Db2NvYS9YUENT
ZXJ2aWNlL0dQVVNlcnZpY2VFbnRyeVBvaW50Lm1tCiAKIFBsYXRmb3JtL2NmL01vZHVsZUNGLmNw
cApAQCAtNjI0LDUgKzYyNSw3IEBAIEVkaXRhYmxlSW1hZ2VDb250cm9sbGVyTWVzc2FnZVJlY2Vp
dmVyLmNwcAogR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzc01lc3NhZ2VSZWNlaXZlci5jcHAKIEdQ
VVByb2Nlc3NQcm94eU1lc3NhZ2VSZWNlaXZlci5jcHAKIEdQVVByb2Nlc3NNZXNzYWdlUmVjZWl2
ZXIuY3BwCisvL1JlbW90ZU1lZGlhUGxheWVyTWFuYWdlck1lc3NhZ2VSZWNlaXZlci5jcHAKKy8v
UmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwCiBTZXJ2aWNl
V29ya2VyRmV0Y2hUYXNrTWVzc2FnZVJlY2VpdmVyLmNwcAogVGV4dENoZWNraW5nQ29udHJvbGxl
clByb3h5TWVzc2FnZVJlY2VpdmVyLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJL
aXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggNDY2Y2RlOTljZWRhNDFhYjNkMTI1YjAyNTJiYTI5
YzZhOTFmMjg2Yy4uMjE1Y2YyYjM1YzQ0OWU4YThhOGY3ZmYzZDJiY2Y1ZjQ3MTljZTNmNiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagor
KysgYi9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC05
MSw2ICs5MSwxMyBAQAogCQkwNzRFNzVGRTFERjIyMTE5MDBEMzE4RUMgLyogVXNlck1lZGlhUHJv
Y2Vzc01hbmFnZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDA3NEU3NUZCMURGMUZEMTMwMEQzMThFQyAvKiBVc2VyTWVkaWFQcm9jZXNzTWFuYWdlci5o
ICovOyB9OwogCQkwNzZFODg0RTFBMTNDQURGMDA1RTkwRkMgLyogQVBJQ29udGV4dE1lbnVDbGll
bnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3NkU4
ODREMUExM0NBREYwMDVFOTBGQyAvKiBBUElDb250ZXh0TWVudUNsaWVudC5oICovOyB9OwogCQkw
NzcyODExRDIxMjM0RkY2MDBDOEVGMkUgLyogVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5h
Z2VyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0QTQx
MEY0MzE5QUY3QjI3MDAyRUJBQjUgLyogVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2Vy
LmggKi87IH07CisJCTA3OTIzMTQ4MjM5Q0JDQjgwMDk1OThFMiAvKiBSZW1vdGVNZWRpYVBsYXll
ck1hbmFnZXJQcm94eU1lc3NhZ2VzUmVwbGllcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gMDc5MjMxNDIyMzlDQkNCNTAwOTU5OEUyIC8qIFJlbW90ZU1l
ZGlhUGxheWVyTWFuYWdlclByb3h5TWVzc2FnZXNSZXBsaWVzLmggKi87IH07CisJCTA3OTIzMTQ5
MjM5Q0JDQjgwMDk1OThFMiAvKiBSZW1vdGVNZWRpYVBsYXllck1hbmFnZXJNZXNzYWdlUmVjZWl2
ZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDc5
MjMxNDMyMzlDQkNCNjAwOTU5OEUyIC8qIFJlbW90ZU1lZGlhUGxheWVyTWFuYWdlck1lc3NhZ2VS
ZWNlaXZlci5jcHAgKi87IH07CisJCTA3OTIzMTRBMjM5Q0JDQjgwMDk1OThFMiAvKiBSZW1vdGVN
ZWRpYVBsYXllck1hbmFnZXJNZXNzYWdlc1JlcGxpZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3OTIzMTQ0MjM5Q0JDQjYwMDk1OThFMiAvKiBSZW1v
dGVNZWRpYVBsYXllck1hbmFnZXJNZXNzYWdlc1JlcGxpZXMuaCAqLzsgfTsKKwkJMDc5MjMxNEIy
MzlDQkNCODAwOTU5OEUyIC8qIFJlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5TWVzc2FnZVJl
Y2VpdmVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDA3OTIzMTQ1MjM5Q0JDQjcwMDk1OThFMiAvKiBSZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94
eU1lc3NhZ2VSZWNlaXZlci5jcHAgKi87IH07CisJCTA3OTIzMTRDMjM5Q0JDQjgwMDk1OThFMiAv
KiBSZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eU1lc3NhZ2VzLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwNzkyMzE0NjIzOUNCQ0I3MDA5NTk4RTIg
LyogUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHlNZXNzYWdlcy5oICovOyB9OworCQkwNzky
MzE0RDIzOUNCQ0I4MDA5NTk4RTIgLyogUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyTWVzc2FnZXMu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3OTIzMTQ3
MjM5Q0JDQjcwMDk1OThFMiAvKiBSZW1vdGVNZWRpYVBsYXllck1hbmFnZXJNZXNzYWdlcy5oICov
OyB9OworCQkwNzkyMzE0RjIzOUQ2MjNFMDA5NTk4RTIgLyogTWVkaWFQbGF5ZXJQcml2YXRlUmVt
b3RlSWRlbnRpZmllci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gMDc5MjMxNEUyMzlENUY1MzAwOTU5OEUyIC8qIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90
ZUlkZW50aWZpZXIuaCAqLzsgfTsKIAkJMDdBNUVCQkMxQzdCQTQzRTAwQjlDQTY5IC8qIFdLRnJh
bWVIYW5kbGVSZWYuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDA3QTVFQkJBMUM3QkE0M0UwMEI5Q0E2OSAvKiBXS0ZyYW1lSGFuZGxlUmVmLmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMEU5N0Q3NEQyMDBF
OTAwNDAwQkY2NjQzIC8qIFNhZmVCcm93c2luZ1NQSS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEU5N0Q3NEMyMDBFOEZGMzAwQkY2NjQzIC8qIFNhZmVC
cm93c2luZ1NQSS5oICovOyB9OwogCQkwRURFODUwMzIwMDRFNzVEMDAwMzA1NjAgLyogV2Vic2l0
ZVBvcFVwUG9saWN5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSAwRURFODUwMjIwMDRFNzQ5MDAwMzA1NjAgLyogV2Vic2l0ZVBvcFVwUG9saWN5LmggKi87
IH07CkBAIC0xOTk3LDYgKzIwMDQsOSBAQAogCQkwMEI5NjYxNTE4RTI0Q0JBMDBDRTFGODggLyog
QVBJRmluZENsaWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBUElGaW5k
Q2xpZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTAwQjk2NjE3MThFMjVBRTEw
MENFMUY4OCAvKiBGaW5kQ2xpZW50Lm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3Bw
OyBwYXRoID0gRmluZENsaWVudC5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMDBC
OTY2MTgxOEUyNUFFMTAwQ0UxRjg4IC8qIEZpbmRDbGllbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gRmluZENsaWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQkwNzI1RUZBQjIzOUFFMzg0MDBBNTM4QTkgLyogUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJv
eHkubWVzc2FnZXMuaW4gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmls
ZVR5cGUgPSB0ZXh0OyBwYXRoID0gUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHkubWVzc2Fn
ZXMuaW47IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTA3MjVFRkFDMjM5QUUzODUwMEE1
MzhBOSAvKiBSZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eS5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBS
ZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQkwNzI1RUZBRDIzOUIwMjQ1MDBBNTM4QTkgLyogUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2Vy
UHJveHkuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJv
eHkuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwNzI5N0Y5QzFDMTcxMUVBMDAz
RjA3MzUgLyogRGV2aWNlSWRIYXNoU2FsdFN0b3JhZ2UuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gRGV2aWNlSWRIYXNoU2FsdFN0b3JhZ2UuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQkwNzI5N0Y5QzFDMTdCQkVBMDAzRjA3MzUgLyogVXNlck1lZGlh
UGVybWlzc2lvbkNoZWNrUHJveHkuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gVXNlck1lZGlhUGVybWlzc2lvbkNoZWNrUHJveHkuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQkwNzI5N0Y5RDFDMTdCQkVBMDAzRjA3MzUgLyogVXNlck1lZGlhUGVybWlz
c2lvbkNoZWNrUHJveHkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVXNlck1l
ZGlhUGVybWlzc2lvbkNoZWNrUHJveHkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAg
LTIwMTEsNiArMjAyMSwxOCBAQAogCQkwNzRFNzYwMTFERjcwNzVEMDBEMzE4RUMgLyogTWVkaWFE
ZXZpY2VTYW5kYm94RXh0ZW5zaW9ucy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBNZWRpYURldmljZVNhbmRib3hFeHRlbnNpb25zLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTA3NkU4ODREMUExM0NBREYwMDVFOTBGQyAvKiBBUElDb250ZXh0TWVudUNsaWVudC5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBUElDb250ZXh0TWVudUNsaWVudC5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwNzZFODg0RjFBMTNDQkM2MDA1RTkwRkMg
LyogQVBJSW5qZWN0ZWRCdW5kbGVQYWdlQ29udGV4dE1lbnVDbGllbnQuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gQVBJSW5qZWN0ZWRCdW5kbGVQYWdlQ29udGV4dE1lbnVDbGll
bnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMDc5MjMxMzAyMzlCM0IwQzAwOTU5
OEUyIC8qIFJlbW90ZU1lZGlhUGxheWVyTWFuYWdlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBS
ZW1vdGVNZWRpYVBsYXllck1hbmFnZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQkwNzkyMzEzMTIzOUIzQjBDMDA5NTk4RTIgLyogTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZS5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTA3OTIzMTMyMjM5QjNCMEMwMDk1OThFMiAvKiBNZWRp
YVBsYXllclByaXZhdGVSZW1vdGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTWVkaWFQbGF5ZXJQcml2YXRl
UmVtb3RlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTA3OTIzMTMzMjM5QjNCMEMw
MDk1OThFMiAvKiBSZW1vdGVNZWRpYVBsYXllck1hbmFnZXIubWVzc2FnZXMuaW4gKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gUmVt
b3RlTWVkaWFQbGF5ZXJNYW5hZ2VyLm1lc3NhZ2VzLmluOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQkwNzkyMzEzNDIzOUIzQjBDMDA5NTk4RTIgLyogUmVtb3RlTWVkaWFQbGF5ZXJNYW5h
Z2VyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlbW90ZU1lZGlhUGxheWVyTWFuYWdlci5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQkwNzkyMzE0MjIzOUNCQ0I1MDA5NTk4RTIgLyogUmVtb3Rl
TWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHlNZXNzYWdlc1JlcGxpZXMuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHlNZXNzYWdlc1Jl
cGxpZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMDc5MjMxNDMyMzlDQkNCNjAw
OTU5OEUyIC8qIFJlbW90ZU1lZGlhUGxheWVyTWFuYWdlck1lc3NhZ2VSZWNlaXZlci5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSZW1vdGVNZWRpYVBsYXllck1hbmFn
ZXJNZXNzYWdlUmVjZWl2ZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwNzky
MzE0NDIzOUNCQ0I2MDA5NTk4RTIgLyogUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyTWVzc2FnZXNS
ZXBsaWVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlbW90ZU1lZGlhUGxh
eWVyTWFuYWdlck1lc3NhZ2VzUmVwbGllcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQkwNzkyMzE0NTIzOUNCQ0I3MDA5NTk4RTIgLyogUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJv
eHlNZXNzYWdlUmVjZWl2ZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwNzkyMzE0NjIzOUNCQ0I3MDA5NTk4RTIgLyogUmVt
b3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHlNZXNzYWdlcy5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBSZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eU1lc3NhZ2VzLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTA3OTIzMTQ3MjM5Q0JDQjcwMDk1OThFMiAvKiBS
ZW1vdGVNZWRpYVBsYXllck1hbmFnZXJNZXNzYWdlcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBSZW1vdGVNZWRpYVBsYXllck1hbmFnZXJNZXNzYWdlcy5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQkwNzkyMzE0RTIzOUQ1RjUzMDA5NTk4RTIgLyogTWVkaWFQbGF5
ZXJQcml2YXRlUmVtb3RlSWRlbnRpZmllci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBNZWRpYVBsYXllclBy
aXZhdGVSZW1vdGVJZGVudGlmaWVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTA3
QTVFQkI5MUM3QkE0M0UwMEI5Q0E2OSAvKiBXS0ZyYW1lSGFuZGxlUmVmLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdLRnJhbWVIYW5kbGVSZWYuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQkwN0E1RUJCQTFDN0JBNDNFMDBCOUNBNjkgLyogV0tGcmFt
ZUhhbmRsZVJlZi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXS0ZyYW1lSGFu
ZGxlUmVmLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTA4NjdENkE1RkU4NDAzMDdD
MDJBQUMwNyAvKiBBcHBLaXQuZnJhbWV3b3JrICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGxhc3RLbm93bkZpbGVUeXBlID0gd3JhcHBlci5mcmFtZXdvcms7IG5hbWUgPSBBcHBLaXQuZnJh
bWV3b3JrOyBwYXRoID0gL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQXBwS2l0LmZyYW1ld29y
azsgc291cmNlVHJlZSA9ICI8YWJzb2x1dGU+IjsgfTsKQEAgLTUwMTMsNiArNTAzNSwyOSBAQAog
CQkJdGFiV2lkdGggPSA4OwogCQkJdXNlc1RhYnMgPSAwOwogCQl9OworCQkwNzkyMzEyRjIzOUIz
QjBDMDA5NTk4RTIgLyogbWVkaWEgKi8gPSB7CisJCQlpc2EgPSBQQlhHcm91cDsKKwkJCWNoaWxk
cmVuID0gKAorCQkJCTA3OTIzMTMxMjM5QjNCMEMwMDk1OThFMiAvKiBNZWRpYVBsYXllclByaXZh
dGVSZW1vdGUuY3BwICovLAorCQkJCTA3OTIzMTMyMjM5QjNCMEMwMDk1OThFMiAvKiBNZWRpYVBs
YXllclByaXZhdGVSZW1vdGUuaCAqLywKKwkJCQkwNzkyMzE0RTIzOUQ1RjUzMDA5NTk4RTIgLyog
TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlSWRlbnRpZmllci5oICovLAorCQkJCTA3OTIzMTMwMjM5
QjNCMEMwMDk1OThFMiAvKiBSZW1vdGVNZWRpYVBsYXllck1hbmFnZXIuY3BwICovLAorCQkJCTA3
OTIzMTM0MjM5QjNCMEMwMDk1OThFMiAvKiBSZW1vdGVNZWRpYVBsYXllck1hbmFnZXIuaCAqLywK
KwkJCQkwNzkyMzEzMzIzOUIzQjBDMDA5NTk4RTIgLyogUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2Vy
Lm1lc3NhZ2VzLmluICovLAorCQkJKTsKKwkJCXBhdGggPSBtZWRpYTsKKwkJCXNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7CisJCX07CisJCTA3Qzc1QzE3MjM5OUEzREIwMDg4RTY1QiAvKiBtZWRpYSAq
LyA9IHsKKwkJCWlzYSA9IFBCWEdyb3VwOworCQkJY2hpbGRyZW4gPSAoCisJCQkJMDcyNUVGQUQy
MzlCMDI0NTAwQTUzOEE5IC8qIFJlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5LmNwcCAqLywK
KwkJCQkwNzI1RUZBQzIzOUFFMzg1MDBBNTM4QTkgLyogUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2Vy
UHJveHkuaCAqLywKKwkJCQkwNzI1RUZBQjIzOUFFMzg0MDBBNTM4QTkgLyogUmVtb3RlTWVkaWFQ
bGF5ZXJNYW5hZ2VyUHJveHkubWVzc2FnZXMuaW4gKi8sCisJCQkpOworCQkJcGF0aCA9IG1lZGlh
OworCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKKwkJfTsKIAkJMDg2N0Q2OTFGRTg0MDI4RkMw
MkFBQzA3IC8qIFdlYktpdDIgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVu
ID0gKApAQCAtNjE5NSw2ICs2MjQwLDcgQEAKIAkJMkQ3RTQzQkYyMzc1MkNEOTAwRUE1Q0EwIC8q
IEdQVSAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCisJCQkJMDc5
MjMxMkYyMzlCM0IwQzAwOTU5OEUyIC8qIG1lZGlhICovLAogCQkJCTJEN0U0M0MwMjM3NTJDRDkw
MEVBNUNBMCAvKiBHUFVQcm9jZXNzQ29ubmVjdGlvbi5jcHAgKi8sCiAJCQkJMkQ3RTQzQzMyMzc1
MkNEOTAwRUE1Q0EwIC8qIEdQVVByb2Nlc3NDb25uZWN0aW9uLmggKi8sCiAJCQkJMkQ3RTQzQzIy
Mzc1MkNEOTAwRUE1Q0EwIC8qIEdQVVByb2Nlc3NDb25uZWN0aW9uLm1lc3NhZ2VzLmluICovLApA
QCAtNjIwOSw2ICs2MjU1LDcgQEAKIAkJCQkyRDlGQjIwRDIzNzUyMDlEMDA0OUY5MzYgLyogRW50
cnlQb2ludCAqLywKIAkJCQkyRDlGQjIwNDIzNzUyMDlEMDA0OUY5MzYgLyogaW9zICovLAogCQkJ
CTJEOUZCMjA2MjM3NTIwOUQwMDQ5RjkzNiAvKiBtYWMgKi8sCisJCQkJMDdDNzVDMTcyMzk5QTNE
QjAwODhFNjVCIC8qIG1lZGlhICovLAogCQkJCTJEOUZCMjBDMjM3NTIwOUQwMDQ5RjkzNiAvKiBH
UFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcCAqLywKIAkJCQkyRDlGQjIwMDIzNzUyMDlEMDA0
OUY5MzYgLyogR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oICovLAogCQkJCTJEOUZCMjA5MjM3
NTIwOUQwMDQ5RjkzNiAvKiBHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluICov
LApAQCAtOTEyMyw2ICs5MTcwLDEyIEBACiAJCQkJMUE4RUZBNkYxMjUyQjg0MTAwRjcwNjdGIC8q
IFBsdWdpblByb3h5TWVzc2FnZXMuaCAqLywKIAkJCQkwRkYyNEEyQjE4NzlFNEJDMDAzQUJGMEMg
LyogUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWFQcm94eU1lc3NhZ2VSZWNlaXZlci5jcHAgKi8s
CiAJCQkJMEZGMjRBMkMxODc5RTRCQzAwM0FCRjBDIC8qIFJlbW90ZUxheWVyVHJlZURyYXdpbmdB
cmVhUHJveHlNZXNzYWdlcy5oICovLAorCQkJCTA3OTIzMTQzMjM5Q0JDQjYwMDk1OThFMiAvKiBS
ZW1vdGVNZWRpYVBsYXllck1hbmFnZXJNZXNzYWdlUmVjZWl2ZXIuY3BwICovLAorCQkJCTA3OTIz
MTQ3MjM5Q0JDQjcwMDk1OThFMiAvKiBSZW1vdGVNZWRpYVBsYXllck1hbmFnZXJNZXNzYWdlcy5o
ICovLAorCQkJCTA3OTIzMTQ0MjM5Q0JDQjYwMDk1OThFMiAvKiBSZW1vdGVNZWRpYVBsYXllck1h
bmFnZXJNZXNzYWdlc1JlcGxpZXMuaCAqLywKKwkJCQkwNzkyMzE0NTIzOUNCQ0I3MDA5NTk4RTIg
LyogUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwICovLAor
CQkJCTA3OTIzMTQ2MjM5Q0JDQjcwMDk1OThFMiAvKiBSZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQ
cm94eU1lc3NhZ2VzLmggKi8sCisJCQkJMDc5MjMxNDIyMzlDQkNCNTAwOTU5OEUyIC8qIFJlbW90
ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5TWVzc2FnZXNSZXBsaWVzLmggKi8sCiAJCQkJMUFDMTMz
ODMxODU5MEM0NjAwRjNFQzA1IC8qIFJlbW90ZU9iamVjdFJlZ2lzdHJ5TWVzc2FnZVJlY2VpdmVy
LmNwcCAqLywKIAkJCQkxQUMxMzM4NDE4NTkwQzQ2MDBGM0VDMDUgLyogUmVtb3RlT2JqZWN0UmVn
aXN0cnlNZXNzYWdlcy5oICovLAogCQkJCTBGNTk0N0E1MTg3QjUxNzYwMDQzNzg1NyAvKiBSZW1v
dGVTY3JvbGxpbmdDb29yZGluYXRvck1lc3NhZ2VSZWNlaXZlci5jcHAgKi8sCkBAIC05ODQwLDYg
Kzk4OTMsNyBAQAogCQkJCUJDQzU2Rjc5MTE1OTk1N0QwMDFDQ0FGOSAvKiBNYWNoUG9ydC5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJMUEyNEI1RjMxMUY1MzFFODAwQzM4MjY5IC8qIE1hY2hVdGlsaXRp
ZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCUNFMUEwQkQ1MUE0OEU2QzYwMDU0RUY3NCAvKiBNYW5h
Z2VkQ29uZmlndXJhdGlvblNQSS5oIGluIEhlYWRlcnMgKi8sCisJCQkJMDc5MjMxNEYyMzlENjIz
RTAwOTU5OEUyIC8qIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZUlkZW50aWZpZXIuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTUxOTMzREVGMTk2NUVCMzEwMDhBQzNFQSAvKiBNZW51VXRpbGl0aWVzLmgg
aW4gSGVhZGVycyAqLywKIAkJCQkxQUM0QzgyOTE2Qjg3NkE5MDA2OURDQ0QgLyogTWVzc2FnZUZs
YWdzLmggaW4gSGVhZGVycyAqLywKIAkJCQkxQTNFRUQxMjE2MUE1M0Q2MDBBRUI0RjUgLyogTWVz
c2FnZVJlY2VpdmVyLmggaW4gSGVhZGVycyAqLywKQEAgLTEwMDAwLDYgKzEwMDU0LDEwIEBACiAJ
CQkJMEZGMjY0QTAxQTFGRjlDQzAwMUZFNzU5IC8qIFJlbW90ZUxheWVyVHJlZVNjcm9sbGluZ1Bl
cmZvcm1hbmNlRGF0YS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUFGMUFDNkMxNjUxNzU5RTAwQzE3
RDdGIC8qIFJlbW90ZUxheWVyVHJlZVRyYW5zYWN0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQky
REMxOEZCMzIxOEE2RTlFMDAyNUE4OEQgLyogUmVtb3RlTGF5ZXJUcmVlVmlld3MuaCBpbiBIZWFk
ZXJzICovLAorCQkJCTA3OTIzMTREMjM5Q0JDQjgwMDk1OThFMiAvKiBSZW1vdGVNZWRpYVBsYXll
ck1hbmFnZXJNZXNzYWdlcy5oIGluIEhlYWRlcnMgKi8sCisJCQkJMDc5MjMxNEEyMzlDQkNCODAw
OTU5OEUyIC8qIFJlbW90ZU1lZGlhUGxheWVyTWFuYWdlck1lc3NhZ2VzUmVwbGllcy5oIGluIEhl
YWRlcnMgKi8sCisJCQkJMDc5MjMxNEMyMzlDQkNCODAwOTU5OEUyIC8qIFJlbW90ZU1lZGlhUGxh
eWVyTWFuYWdlclByb3h5TWVzc2FnZXMuaCBpbiBIZWFkZXJzICovLAorCQkJCTA3OTIzMTQ4MjM5
Q0JDQjgwMDk1OThFMiAvKiBSZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eU1lc3NhZ2VzUmVw
bGllcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTFCNzg0NzExNjNGMjQ2OTAwMDdCNjkyIC8qIFJl
bW90ZU5ldHdvcmtpbmdDb250ZXh0LmggaW4gSGVhZGVycyAqLywKIAkJCQkxQTU3MDRGQzFCRTE3
NTExMDA4NzRBRjEgLyogUmVtb3RlT2JqZWN0SW52b2NhdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJMUFDMTMzODAxODU5MEFFNDAwRjNFQzA1IC8qIFJlbW90ZU9iamVjdFJlZ2lzdHJ5LmggaW4g
SGVhZGVycyAqLywKQEAgLTExNjU4LDYgKzExNzE2LDggQEAKIAkJCQkyRDcyQTFGQTIxMkJGNDZF
MDA1MTdBMjAgLyogUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWEubW0gaW4gU291cmNlcyAqLywK
IAkJCQkwRkYyNEEyRDE4NzlFNEJDMDAzQUJGMEMgLyogUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0Fy
ZWFQcm94eU1lc3NhZ2VSZWNlaXZlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkyREMxOEZCNDIx
OEE2RTlFMDAyNUE4OEQgLyogUmVtb3RlTGF5ZXJUcmVlVmlld3MubW0gaW4gU291cmNlcyAqLywK
KwkJCQkwNzkyMzE0OTIzOUNCQ0I4MDA5NTk4RTIgLyogUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2Vy
TWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTA3OTIzMTRCMjM5Q0JDQjgw
MDk1OThFMiAvKiBSZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eU1lc3NhZ2VSZWNlaXZlci5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQkxQUMxMzM4NTE4NTkwQzQ2MDBGM0VDMDUgLyogUmVtb3Rl
T2JqZWN0UmVnaXN0cnlNZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEY1
OTQ3QTcxODdCNTE3NjAwNDM3ODU3IC8qIFJlbW90ZVNjcm9sbGluZ0Nvb3JkaW5hdG9yTWVzc2Fn
ZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE1NUJBODI2MUJBMjVDRkQwMDdDRDMz
RCAvKiBSZW1vdGVXZWJJbnNwZWN0b3JQcm94eU1lc3NhZ2VSZWNlaXZlci5jcHAgaW4gU291cmNl
cyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvTWVk
aWFQbGF5ZXJQcml2YXRlUmVtb3RlLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUv
bWVkaWEvTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43ZTI0NTcxMDU1
MDcyNGM4YzkwMzQ3ZDcxZjNmZDY5ODI1YzMwYTFlCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9NZWRpYVBsYXllclByaXZhdGVSZW1vdGUuY3Bw
CkBAIC0wLDAgKzEsNzY4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
IAorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKworI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykK
KyNpbmNsdWRlICJNZWRpYVBsYXllclByaXZhdGVSZW1vdGUuaCIKKworI2luY2x1ZGUgIkxvZ2dp
bmcuaCIKKyNpbmNsdWRlICJSZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eU1lc3NhZ2VzLmgi
CisjaW5jbHVkZSA8V2ViQ29yZS9NZWRpYVBsYXllci5oPgorI2luY2x1ZGUgPFdlYkNvcmUvTm90
SW1wbGVtZW50ZWQuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1BsYXRmb3JtTGF5ZXIuaD4KKyNpbmNs
dWRlIDxXZWJDb3JlL1BsYXRmb3JtVGltZVJhbmdlcy5oPgorI2luY2x1ZGUgPHd0Zi9IYXNoTWFw
Lmg+CisjaW5jbHVkZSA8d3RmL01haW5UaHJlYWQuaD4KKyNpbmNsdWRlIDx3dGYvU3RyaW5nUHJp
bnRTdHJlYW0uaD4KKyNpbmNsdWRlIDx3dGYvVVJMLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvQ1N0
cmluZy5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsKK3VzaW5nIG5hbWVzcGFjZSBQQUw7Cit1c2lu
ZyBuYW1lc3BhY2UgV2ViQ29yZTsKKworTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpNZWRpYVBs
YXllclByaXZhdGVSZW1vdGUoTWVkaWFQbGF5ZXIqIHBsYXllciwgTWVkaWFQbGF5ZXJFbnVtczo6
TWVkaWFFbmdpbmVJZGVudGlmaWVyIGVuZ2luZUlkZW50aWZpZXIsIE1lZGlhUGxheWVyUHJpdmF0
ZVJlbW90ZUlkZW50aWZpZXIgcGxheWVySWRlbnRpZmllciwgUmVtb3RlTWVkaWFQbGF5ZXJNYW5h
Z2VyJiBtYW5hZ2VyKQorICAgIDogbV9wbGF5ZXIocGxheWVyKQorICAgICwgbV9tYW5hZ2VyKG1h
bmFnZXIpCisgICAgLCBtX3JlbW90ZUVuZ2luZUlkZW50aWZpZXIoZW5naW5lSWRlbnRpZmllcikK
KyAgICAsIG1faWRlbnRpZmllcihwbGF5ZXJJZGVudGlmaWVyKQorI2lmICFSRUxFQVNFX0xPR19E
SVNBQkxFRAorICAgICwgbV9sb2dnZXIocGxheWVyLT5tZWRpYVBsYXllckxvZ2dlcigpKQorICAg
ICwgbV9sb2dJZGVudGlmaWVyKHBsYXllci0+bWVkaWFQbGF5ZXJMb2dJZGVudGlmaWVyKCkpCisj
ZW5kaWYKK3sKKyAgICBJTkZPX0xPRyhMT0dJREVOVElGSUVSKTsKK30KKworTWVkaWFQbGF5ZXJQ
cml2YXRlUmVtb3RlOjp+TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlKCkKK3sKKyAgICBJTkZPX0xP
RyhMT0dJREVOVElGSUVSKTsKKyAgICBtX3BsYXllciA9IG51bGxwdHI7Cit9CisKK3ZvaWQgTWVk
aWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OmxvYWQoY29u
c3QgU3RyaW5nJikKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCisjaWYgRU5BQkxFKE1F
RElBX1NPVVJDRSkKK3ZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpsb2FkKGNvbnN0IFN0
cmluZyYsIE1lZGlhU291cmNlUHJpdmF0ZUNsaWVudCopCit7CisgICAgbm90SW1wbGVtZW50ZWQo
KTsKK30KKyNlbmRpZgorCisjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKK3ZvaWQgTWVkaWFQbGF5
ZXJQcml2YXRlUmVtb3RlOjpsb2FkKE1lZGlhU3RyZWFtUHJpdmF0ZSYpCit7CisgICAgbm90SW1w
bGVtZW50ZWQoKTsKK30KKyNlbmRpZgordm9pZCBNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OmNh
bmNlbExvYWQoKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKKwordm9pZCBNZWRpYVBs
YXllclByaXZhdGVSZW1vdGU6OnByZXBhcmVUb1BsYXkoKQoreworICAgIG5vdEltcGxlbWVudGVk
KCk7Cit9CisKK1BsYXRmb3JtTGF5ZXIqIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6cGxhdGZv
cm1MYXllcigpIGNvbnN0Cit7CisgICAgcmV0dXJuIG51bGxwdHI7Cit9CisKKyNpZiBQTEFURk9S
TShJT1NfRkFNSUxZKSB8fCAoUExBVEZPUk0oTUFDKSAmJiBFTkFCTEUoVklERU9fUFJFU0VOVEFU
SU9OX01PREUpKQordm9pZCBNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OnNldFZpZGVvRnVsbHNj
cmVlbkxheWVyKFBsYXRmb3JtTGF5ZXIqLCBXVEY6OkZ1bmN0aW9uPHZvaWQoKT4mJikKK3sKKyAg
ICBub3RJbXBsZW1lbnRlZCgpOworfQorCit2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6
dXBkYXRlVmlkZW9GdWxsc2NyZWVuSW5saW5lSW1hZ2UoKQoreworICAgIG5vdEltcGxlbWVudGVk
KCk7Cit9CisKK3ZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpzZXRWaWRlb0Z1bGxzY3Jl
ZW5GcmFtZShGbG9hdFJlY3QpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwordm9pZCBN
ZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OnNldFZpZGVvRnVsbHNjcmVlbkdyYXZpdHkoTWVkaWFQ
bGF5ZXI6OlZpZGVvR3Jhdml0eSkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCit2b2lk
IE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6c2V0VmlkZW9GdWxsc2NyZWVuTW9kZShNZWRpYVBs
YXllcjo6VmlkZW9GdWxsc2NyZWVuTW9kZSkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQor
Cit2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6dmlkZW9GdWxsc2NyZWVuU3RhbmRieUNo
YW5nZWQoKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisjZW5kaWYKKworI2lmIFBMQVRG
T1JNKElPU19GQU1JTFkpCitOU0FycmF5KiBNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OnRpbWVk
TWV0YWRhdGEoKSBjb25zdAoreworICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIG51
bGxwdHI7Cit9CisKK1N0cmluZyBNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OmFjY2Vzc0xvZygp
IGNvbnN0Cit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gZW1wdHlTdHJpbmco
KTsKK30KKworU3RyaW5nIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6ZXJyb3JMb2coKSBjb25z
dAoreworICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIGVtcHR5U3RyaW5nKCk7Cit9
CisjZW5kaWYKKworbG9uZyBNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OnBsYXRmb3JtRXJyb3JD
b2RlKCkgY29uc3QKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiAwOworfQor
Cit2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6cGxheSgpCit7CisgICAgbm90SW1wbGVt
ZW50ZWQoKTsKK30KKwordm9pZCBNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OnBhdXNlKCkKK3sK
KyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCit2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90
ZTo6c2V0QnVmZmVyaW5nUG9saWN5KE1lZGlhUGxheWVyOjpCdWZmZXJpbmdQb2xpY3kpCit7Cisg
ICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKworYm9vbCBNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6
OnN1cHBvcnRzUGljdHVyZUluUGljdHVyZSgpIGNvbnN0Cit7CisgICAgbm90SW1wbGVtZW50ZWQo
KTsKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK2Jvb2wgTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3Rl
OjpzdXBwb3J0c0Z1bGxzY3JlZW4oKSBjb25zdAoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cisg
ICAgcmV0dXJuIGZhbHNlOworfQorCitib29sIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6c3Vw
cG9ydHNTY2FubmluZygpIGNvbnN0Cit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1
cm4gZmFsc2U7Cit9CisKK2Jvb2wgTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpyZXF1aXJlc0lt
bWVkaWF0ZUNvbXBvc2l0aW5nKCkgY29uc3QKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAg
IHJldHVybiBmYWxzZTsKK30KKworYm9vbCBNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OmNhblNh
dmVNZWRpYURhdGEoKSBjb25zdAoreworICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJu
IGZhbHNlOworfQorCitGbG9hdFNpemUgTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpuYXR1cmFs
U2l6ZSgpIGNvbnN0Cit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4geyB9Owor
fQorCitib29sIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6aGFzVmlkZW8oKSBjb25zdAorewor
ICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIGZhbHNlOworfQorCitib29sIE1lZGlh
UGxheWVyUHJpdmF0ZVJlbW90ZTo6aGFzQXVkaW8oKSBjb25zdAoreworICAgIG5vdEltcGxlbWVu
dGVkKCk7CisgICAgcmV0dXJuIGZhbHNlOworfQorCit2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZVJl
bW90ZTo6c2V0VmlzaWJsZShib29sKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKK01l
ZGlhVGltZSBNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90
ZTo6ZHVyYXRpb25NZWRpYVRpbWUoKSBjb25zdAoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cisg
ICAgcmV0dXJuIE1lZGlhVGltZTo6emVyb1RpbWUoKTsKK30KKworTWVkaWFUaW1lIE1lZGlhUGxh
eWVyUHJpdmF0ZVJlbW90ZTo6Y3VycmVudE1lZGlhVGltZSgpIGNvbnN0Cit7CisgICAgbm90SW1w
bGVtZW50ZWQoKTsKKyAgICByZXR1cm4gTWVkaWFUaW1lOjp6ZXJvVGltZSgpOworfQorCitNZWRp
YVRpbWUgTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpnZXRTdGFydERhdGUoKSBjb25zdAorewor
ICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIE1lZGlhVGltZTo6emVyb1RpbWUoKTsK
K30KKwordm9pZCBNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OnNlZWsoY29uc3QgTWVkaWFUaW1l
JikKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCit2b2lkIE1lZGlhUGxheWVyUHJpdmF0
ZVJlbW90ZTo6c2Vla1dpdGhUb2xlcmFuY2UoY29uc3QgTWVkaWFUaW1lJiwgY29uc3QgTWVkaWFU
aW1lJiwgY29uc3QgTWVkaWFUaW1lJikKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCiti
b29sIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6c2Vla2luZygpIGNvbnN0Cit7CisgICAgbm90
SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK01lZGlhVGltZSBNZWRpYVBs
YXllclByaXZhdGVSZW1vdGU6OnN0YXJ0VGltZSgpIGNvbnN0Cit7CisgICAgbm90SW1wbGVtZW50
ZWQoKTsKKyAgICByZXR1cm4gTWVkaWFUaW1lOjp6ZXJvVGltZSgpOworfQorCit2b2lkIE1lZGlh
UGxheWVyUHJpdmF0ZVJlbW90ZTo6c2V0UmF0ZURvdWJsZShkb3VibGUpCit7CisgICAgbm90SW1w
bGVtZW50ZWQoKTsKK30KKworZG91YmxlIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6cmF0ZSgp
IGNvbnN0Cit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gMDsKK30KKwordm9p
ZCBNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OnNldFByZXNlcnZlc1BpdGNoKGJvb2wpCit7Cisg
ICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKworYm9vbCBNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6
OnBhdXNlZCgpIGNvbnN0Cit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gZmFs
c2U7Cit9CisKK3ZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpzZXRWb2x1bWVEb3VibGUo
ZG91YmxlKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKK3ZvaWQgTWVkaWFQbGF5ZXJQ
cml2YXRlUmVtb3RlOjpzZXRNdXRlZChib29sKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9
CisKK2Jvb2wgTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpoYXNDbG9zZWRDYXB0aW9ucygpIGNv
bnN0Cit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK3Zv
aWQgTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpzZXRDbG9zZWRDYXB0aW9uc1Zpc2libGUoYm9v
bCkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCitkb3VibGUgTWVkaWFQbGF5ZXJQcml2
YXRlUmVtb3RlOjptYXhGYXN0Rm9yd2FyZFJhdGUoKSBjb25zdAoreworICAgIG5vdEltcGxlbWVu
dGVkKCk7CisgICAgcmV0dXJuIDA7Cit9CisKK2RvdWJsZSBNZWRpYVBsYXllclByaXZhdGVSZW1v
dGU6Om1pbkZhc3RSZXZlcnNlUmF0ZSgpIGNvbnN0Cit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsK
KyAgICByZXR1cm4gMDsKK30KKworTWVkaWFQbGF5ZXI6Ok5ldHdvcmtTdGF0ZSBNZWRpYVBsYXll
clByaXZhdGVSZW1vdGU6Om5ldHdvcmtTdGF0ZSgpIGNvbnN0Cit7CisgICAgaWYgKG1faW52YWxp
ZCkKKyAgICAgICAgcmV0dXJuIE1lZGlhUGxheWVyOjpOZXR3b3JrU3RhdGU6OkZvcm1hdEVycm9y
OworCisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gTWVkaWFQbGF5ZXI6Ok5ldHdv
cmtTdGF0ZTo6RW1wdHk7Cit9CisKK01lZGlhUGxheWVyOjpSZWFkeVN0YXRlIE1lZGlhUGxheWVy
UHJpdmF0ZVJlbW90ZTo6cmVhZHlTdGF0ZSgpIGNvbnN0Cit7CisgICAgaWYgKG1faW52YWxpZCkK
KyAgICAgICAgcmV0dXJuIE1lZGlhUGxheWVyOjpSZWFkeVN0YXRlOjpIYXZlTm90aGluZzsKKwor
ICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIE1lZGlhUGxheWVyOjpSZWFkeVN0YXRl
OjpIYXZlTm90aGluZzsKK30KKworc3RkOjp1bmlxdWVfcHRyPFBsYXRmb3JtVGltZVJhbmdlcz4g
TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpzZWVrYWJsZSgpIGNvbnN0Cit7CisgICAgbm90SW1w
bGVtZW50ZWQoKTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxQbGF0Zm9ybVRpbWVSYW5nZXM+KCk7
Cit9CisKK3N0ZDo6dW5pcXVlX3B0cjxQbGF0Zm9ybVRpbWVSYW5nZXM+IE1lZGlhUGxheWVyUHJp
dmF0ZVJlbW90ZTo6YnVmZmVyZWQoKSBjb25zdAoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cisg
ICAgcmV0dXJuIG1ha2VVbmlxdWU8UGxhdGZvcm1UaW1lUmFuZ2VzPigpOworfQorCitNZWRpYVRp
bWUgTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjptYXhNZWRpYVRpbWVTZWVrYWJsZSgpIGNvbnN0
Cit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gTWVkaWFUaW1lOjp6ZXJvVGlt
ZSgpOworfQorCitNZWRpYVRpbWUgTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjptaW5NZWRpYVRp
bWVTZWVrYWJsZSgpIGNvbnN0Cit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4g
TWVkaWFUaW1lOjp6ZXJvVGltZSgpOworfQorCitkb3VibGUgTWVkaWFQbGF5ZXJQcml2YXRlUmVt
b3RlOjpzZWVrYWJsZVRpbWVSYW5nZXNMYXN0TW9kaWZpZWRUaW1lKCkgY29uc3QKK3sKKyAgICBu
b3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiAwOworfQorCitkb3VibGUgTWVkaWFQbGF5ZXJQ
cml2YXRlUmVtb3RlOjpsaXZlVXBkYXRlSW50ZXJ2YWwoKSBjb25zdAoreworICAgIG5vdEltcGxl
bWVudGVkKCk7CisgICAgcmV0dXJuIDA7Cit9CisKK3Vuc2lnbmVkIGxvbmcgbG9uZyBNZWRpYVBs
YXllclByaXZhdGVSZW1vdGU6OnRvdGFsQnl0ZXMoKSBjb25zdAoreworICAgIG5vdEltcGxlbWVu
dGVkKCk7CisgICAgcmV0dXJuIDA7Cit9CisKK2Jvb2wgTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3Rl
OjpkaWRMb2FkaW5nUHJvZ3Jlc3MoKSBjb25zdAoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cisg
ICAgcmV0dXJuIGZhbHNlOworfQorCit2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6c2V0
U2l6ZShjb25zdCBJbnRTaXplJikKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCit2b2lk
IE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6cGFpbnQoR3JhcGhpY3NDb250ZXh0JiwgY29uc3Qg
RmxvYXRSZWN0JikKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCit2b2lkIE1lZGlhUGxh
eWVyUHJpdmF0ZVJlbW90ZTo6cGFpbnRDdXJyZW50RnJhbWVJbkNvbnRleHQoR3JhcGhpY3NDb250
ZXh0JiwgY29uc3QgRmxvYXRSZWN0JikKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCiti
b29sIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6Y29weVZpZGVvVGV4dHVyZVRvUGxhdGZvcm1U
ZXh0dXJlKEdyYXBoaWNzQ29udGV4dDNEKiwgUGxhdGZvcm0zRE9iamVjdCwgR0MzRGVudW0sIEdD
M0RpbnQsIEdDM0RlbnVtLCBHQzNEZW51bSwgR0MzRGVudW0sIGJvb2wsIGJvb2wpCit7CisgICAg
bm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK05hdGl2ZUltYWdlUHRy
IE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6bmF0aXZlSW1hZ2VGb3JDdXJyZW50VGltZSgpCit7
CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gbnVsbHB0cjsKK30KKwordm9pZCBN
ZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OnNldFByZWxvYWQoTWVkaWFQbGF5ZXI6OlByZWxvYWQp
Cit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKworYm9vbCBNZWRpYVBsYXllclByaXZhdGVS
ZW1vdGU6Omhhc0F2YWlsYWJsZVZpZGVvRnJhbWUoKSBjb25zdAoreworICAgIG5vdEltcGxlbWVu
dGVkKCk7CisgICAgcmV0dXJuIGZhbHNlOworfQorCitib29sIE1lZGlhUGxheWVyUHJpdmF0ZVJl
bW90ZTo6Y2FuTG9hZFBvc3RlcigpIGNvbnN0Cit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAg
ICByZXR1cm4gZmFsc2U7Cit9CisKK3ZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpzZXRQ
b3N0ZXIoY29uc3QgU3RyaW5nJikKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCisjaWYg
VVNFKE5BVElWRV9GVUxMU0NSRUVOX1ZJREVPKQordm9pZCBNZWRpYVBsYXllclByaXZhdGVSZW1v
dGU6OmVudGVyRnVsbHNjcmVlbigpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwordm9p
ZCBNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OmV4aXRGdWxsc2NyZWVuKCkKK3sKKyAgICBub3RJ
bXBsZW1lbnRlZCgpOworfQorI2VuZGlmCisKKyNpZiBFTkFCTEUoV0lSRUxFU1NfUExBWUJBQ0tf
VEFSR0VUKQorU3RyaW5nIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6d2lyZWxlc3NQbGF5YmFj
a1RhcmdldE5hbWUoKSBjb25zdAoreworICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJu
IGVtcHR5U3RyaW5nKCk7Cit9CisKK01lZGlhUGxheWVyOjpXaXJlbGVzc1BsYXliYWNrVGFyZ2V0
VHlwZSBNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OndpcmVsZXNzUGxheWJhY2tUYXJnZXRUeXBl
KCkgY29uc3QKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiBNZWRpYVBsYXll
cjo6VGFyZ2V0VHlwZU5vbmU7Cit9CisKK2Jvb2wgTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjp3
aXJlbGVzc1ZpZGVvUGxheWJhY2tEaXNhYmxlZCgpIGNvbnN0Cit7CisgICAgbm90SW1wbGVtZW50
ZWQoKTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwordm9pZCBNZWRpYVBsYXllclByaXZhdGVSZW1v
dGU6OnNldFdpcmVsZXNzVmlkZW9QbGF5YmFja0Rpc2FibGVkKGJvb2wpCit7CisgICAgbm90SW1w
bGVtZW50ZWQoKTsKK30KKworYm9vbCBNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OmNhblBsYXlU
b1dpcmVsZXNzUGxheWJhY2tUYXJnZXQoKSBjb25zdAoreworICAgIG5vdEltcGxlbWVudGVkKCk7
CisgICAgcmV0dXJuIGZhbHNlOworfQorCitib29sIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6
aXNDdXJyZW50UGxheWJhY2tUYXJnZXRXaXJlbGVzcygpIGNvbnN0Cit7CisgICAgbm90SW1wbGVt
ZW50ZWQoKTsKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK3ZvaWQgTWVkaWFQbGF5ZXJQcml2YXRl
UmVtb3RlOjpzZXRXaXJlbGVzc1BsYXliYWNrVGFyZ2V0KFJlZjxNZWRpYVBsYXliYWNrVGFyZ2V0
PiYmKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKK3ZvaWQgTWVkaWFQbGF5ZXJQcml2
YXRlUmVtb3RlOjpzZXRTaG91bGRQbGF5VG9QbGF5YmFja1RhcmdldChib29sKQoreworICAgIG5v
dEltcGxlbWVudGVkKCk7Cit9CisjZW5kaWYKKworI2lmIFVTRShOQVRJVkVfRlVMTFNDUkVFTl9W
SURFTykKK2Jvb2wgTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpjYW5FbnRlckZ1bGxzY3JlZW4o
KSBjb25zdAoreworICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIGZhbHNlOworfQor
I2VuZGlmCisKK2Jvb2wgTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpzdXBwb3J0c0FjY2VsZXJh
dGVkUmVuZGVyaW5nKCkgY29uc3QKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVy
biBmYWxzZTsKK30KKwordm9pZCBNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OmFjY2VsZXJhdGVk
UmVuZGVyaW5nU3RhdGVDaGFuZ2VkKCkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCiti
b29sIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6c2hvdWxkTWFpbnRhaW5Bc3BlY3RSYXRpbygp
IGNvbnN0Cit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwor
dm9pZCBNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OnNldFNob3VsZE1haW50YWluQXNwZWN0UmF0
aW8oYm9vbCkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCitib29sIE1lZGlhUGxheWVy
UHJpdmF0ZVJlbW90ZTo6aGFzU2luZ2xlU2VjdXJpdHlPcmlnaW4oKSBjb25zdAoreworICAgIG5v
dEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIGZhbHNlOworfQorCitib29sIE1lZGlhUGxheWVy
UHJpdmF0ZVJlbW90ZTo6ZGlkUGFzc0NPUlNBY2Nlc3NDaGVjaygpIGNvbnN0Cit7CisgICAgbm90
SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK09wdGlvbmFsPGJvb2w+IE1l
ZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6d291bGRUYWludE9yaWdpbihjb25zdCBTZWN1cml0eU9y
aWdpbiYpIGNvbnN0Cit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gV1RGOjpu
dWxsb3B0OworfQorCitNZWRpYVBsYXllcjo6TW92aWVMb2FkVHlwZSBNZWRpYVBsYXllclByaXZh
dGVSZW1vdGU6Om1vdmllTG9hZFR5cGUoKSBjb25zdAoreworICAgIG5vdEltcGxlbWVudGVkKCk7
CisgICAgcmV0dXJuIE1lZGlhUGxheWVyOjpNb3ZpZUxvYWRUeXBlOjpVbmtub3duOworfQorCit2
b2lkIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6cHJlcGFyZUZvclJlbmRlcmluZygpCit7Cisg
ICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKworTWVkaWFUaW1lIE1lZGlhUGxheWVyUHJpdmF0ZVJl
bW90ZTo6bWVkaWFUaW1lRm9yVGltZVZhbHVlKGNvbnN0IE1lZGlhVGltZSYgdGltZVZhbHVlKSBj
b25zdAoreworICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIHRpbWVWYWx1ZTsKK30K
KworZG91YmxlIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6bWF4aW11bUR1cmF0aW9uVG9DYWNo
ZU1lZGlhVGltZSgpIGNvbnN0Cit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4g
MDsKK30KKwordW5zaWduZWQgTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpkZWNvZGVkRnJhbWVD
b3VudCgpIGNvbnN0Cit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gMDsKK30K
KwordW5zaWduZWQgTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpkcm9wcGVkRnJhbWVDb3VudCgp
IGNvbnN0Cit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gMDsKK30KKwordW5z
aWduZWQgTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjphdWRpb0RlY29kZWRCeXRlQ291bnQoKSBj
b25zdAoreworICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIDA7Cit9CisKK3Vuc2ln
bmVkIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6dmlkZW9EZWNvZGVkQnl0ZUNvdW50KCkgY29u
c3QKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiAwOworfQorCit2b2lkIE1l
ZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6c2V0UHJpdmF0ZUJyb3dzaW5nTW9kZShib29sKQorewor
ICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKK1N0cmluZyBNZWRpYVBsYXllclByaXZhdGVSZW1v
dGU6OmVuZ2luZURlc2NyaXB0aW9uKCkgY29uc3QKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOwor
ICAgIHJldHVybiBlbXB0eVN0cmluZygpOworfQorCisjaWYgRU5BQkxFKFdFQl9BVURJTykKK0F1
ZGlvU291cmNlUHJvdmlkZXIqIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6YXVkaW9Tb3VyY2VQ
cm92aWRlcigpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gbnVsbHB0cjsK
K30KKyNlbmRpZgorCisjaWYgRU5BQkxFKExFR0FDWV9FTkNSWVBURURfTUVESUEpCitzdGQ6OnVu
aXF1ZV9wdHI8TGVnYWN5Q0RNU2Vzc2lvbj4gTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpjcmVh
dGVTZXNzaW9uKGNvbnN0IFN0cmluZyYsIExlZ2FjeUNETVNlc3Npb25DbGllbnQqKQoreworICAg
IG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIG51bGxwdHI7Cit9CisKK3ZvaWQgTWVkaWFQ
bGF5ZXJQcml2YXRlUmVtb3RlOjpzZXRDRE1TZXNzaW9uKExlZ2FjeUNETVNlc3Npb24qKQorewor
ICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKK3ZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3Rl
OjprZXlBZGRlZCgpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKyNlbmRpZgorCisjaWYg
RU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkKK3ZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpj
ZG1JbnN0YW5jZUF0dGFjaGVkKENETUluc3RhbmNlJikKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgp
OworfQorCit2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6Y2RtSW5zdGFuY2VEZXRhY2hl
ZChDRE1JbnN0YW5jZSYpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwordm9pZCBNZWRp
YVBsYXllclByaXZhdGVSZW1vdGU6OmF0dGVtcHRUb0RlY3J5cHRXaXRoSW5zdGFuY2UoQ0RNSW5z
dGFuY2UmKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKK2Jvb2wgTWVkaWFQbGF5ZXJQ
cml2YXRlUmVtb3RlOjp3YWl0aW5nRm9yS2V5KCkgY29uc3QKK3sKKyAgICBub3RJbXBsZW1lbnRl
ZCgpOworICAgIHJldHVybiBmYWxzZTsKK30KKyNlbmRpZgorCisjaWYgRU5BQkxFKFZJREVPX1RS
QUNLKQorYm9vbCBNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OnJlcXVpcmVzVGV4dFRyYWNrUmVw
cmVzZW50YXRpb24oKSBjb25zdAoreworICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJu
IGZhbHNlOworfQorCit2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6c2V0VGV4dFRyYWNr
UmVwcmVzZW50YXRpb24oVGV4dFRyYWNrUmVwcmVzZW50YXRpb24qKQoreworICAgIG5vdEltcGxl
bWVudGVkKCk7Cit9CisKK3ZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpzeW5jVGV4dFRy
YWNrQm91bmRzKCkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCit2b2lkIE1lZGlhUGxh
eWVyUHJpdmF0ZVJlbW90ZTo6dHJhY2tzQ2hhbmdlZCgpCit7CisgICAgbm90SW1wbGVtZW50ZWQo
KTsKK30KKyNlbmRpZgorCisjaWYgVVNFKEdTVFJFQU1FUikKK3ZvaWQgTWVkaWFQbGF5ZXJQcml2
YXRlUmVtb3RlOjpzaW11bGF0ZUF1ZGlvSW50ZXJydXB0aW9uKCkKK3sKKyAgICBub3RJbXBsZW1l
bnRlZCgpOworfQorI2VuZGlmCisKK3ZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpiZWdp
blNpbXVsYXRlZEhEQ1BFcnJvcigpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwordm9p
ZCBNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OmVuZFNpbXVsYXRlZEhEQ1BFcnJvcigpCit7Cisg
ICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKworU3RyaW5nIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90
ZTo6bGFuZ3VhZ2VPZlByaW1hcnlBdWRpb1RyYWNrKCkgY29uc3QKK3sKKyAgICBub3RJbXBsZW1l
bnRlZCgpOworICAgIHJldHVybiBlbXB0eVN0cmluZygpOworfQorCitzaXplX3QgTWVkaWFQbGF5
ZXJQcml2YXRlUmVtb3RlOjpleHRyYU1lbW9yeUNvc3QoKSBjb25zdAoreworICAgIG5vdEltcGxl
bWVudGVkKCk7CisgICAgcmV0dXJuIDA7Cit9CisKK3Vuc2lnbmVkIGxvbmcgbG9uZyBNZWRpYVBs
YXllclByaXZhdGVSZW1vdGU6OmZpbGVTaXplKCkgY29uc3QKK3sKKyAgICBub3RJbXBsZW1lbnRl
ZCgpOworICAgIHJldHVybiAwOworfQorCitib29sIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6
ZW5kZWQoKSBjb25zdAoreworICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIGZhbHNl
OworfQorCitPcHRpb25hbDxWaWRlb1BsYXliYWNrUXVhbGl0eU1ldHJpY3M+IE1lZGlhUGxheWVy
UHJpdmF0ZVJlbW90ZTo6dmlkZW9QbGF5YmFja1F1YWxpdHlNZXRyaWNzKCkKK3sKKyAgICBub3RJ
bXBsZW1lbnRlZCgpOworICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Cit9CisKKyNpZiBFTkFCTEUo
QVZGX0NBUFRJT05TKQordm9pZCBNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6Om5vdGlmeVRyYWNr
TW9kZUNoYW5nZWQoKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisjZW5kaWYKKwordm9p
ZCBNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6Om5vdGlmeUFjdGl2ZVNvdXJjZUJ1ZmZlcnNDaGFu
Z2VkKCkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCit2b2lkIE1lZGlhUGxheWVyUHJp
dmF0ZVJlbW90ZTo6c2V0U2hvdWxkRGlzYWJsZVNsZWVwKGJvb2wpCit7CisgICAgbm90SW1wbGVt
ZW50ZWQoKTsKK30KKwordm9pZCBNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OmFwcGxpY2F0aW9u
V2lsbFJlc2lnbkFjdGl2ZSgpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwordm9pZCBN
ZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OmFwcGxpY2F0aW9uRGlkQmVjb21lQWN0aXZlKCkKK3sK
KyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCitib29sIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90
ZTo6cGVyZm9ybVRhc2tBdE1lZGlhVGltZShXVEY6OkZ1bmN0aW9uPHZvaWQoKT4mJiwgTWVkaWFU
aW1lKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIGZhbHNlOworfQorCiti
b29sIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6c2hvdWxkSWdub3JlSW50cmluc2ljU2l6ZSgp
Cit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKKyNpZiAh
UkVMRUFTRV9MT0dfRElTQUJMRUQKK1dURkxvZ0NoYW5uZWwmIE1lZGlhUGxheWVyUHJpdmF0ZVJl
bW90ZTo6bG9nQ2hhbm5lbCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIFdlYktpdDJMb2dXZWJSVEM7
Cit9CisjZW5kaWYKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvTWVkaWFQbGF5ZXJQcml2YXRl
UmVtb3RlLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL01lZGlhUGxheWVy
UHJpdmF0ZVJlbW90ZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmY1ZTFhNjU1NmU2NmMxOWVmZWFmNTIzYzgwMGM4
Y2Y1NmEzZWE5M2QKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
R1BVL21lZGlhL01lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZS5oCkBAIC0wLDAgKzEsMjk5IEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
YGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICog
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNwcmFnbWEgb25j
ZQorCisjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKQorCisjaW5jbHVkZSAiUmVtb3RlTWVkaWFQbGF5
ZXJNYW5hZ2VyLmgiCisjaW5jbHVkZSA8V2ViQ29yZS9NZWRpYVBsYXllclByaXZhdGUuaD4KKyNp
bmNsdWRlIDx3dGYvTG9nZ2VySGVscGVyLmg+CisjaW5jbHVkZSA8d3RmL01lZGlhVGltZS5oPgor
I2luY2x1ZGUgPHd0Zi9XZWFrUHRyLmg+CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBN
ZWRpYVBsYXllclByaXZhdGVSZW1vdGUgZmluYWwKKyAgICA6IHB1YmxpYyBDYW5NYWtlV2Vha1B0
cjxNZWRpYVBsYXllclByaXZhdGVSZW1vdGU+CisgICAgLCBwdWJsaWMgTWVkaWFQbGF5ZXJQcml2
YXRlSW50ZXJmYWNlCisjaWYgIVJFTEVBU0VfTE9HX0RJU0FCTEVECisgICAgLCBwcml2YXRlIExv
Z2dlckhlbHBlcgorI2VuZGlmCit7CitwdWJsaWM6CisgICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0
cjxNZWRpYVBsYXllclByaXZhdGVSZW1vdGU+IGNyZWF0ZShNZWRpYVBsYXllciogcGxheWVyLCBN
ZWRpYVBsYXllckVudW1zOjpNZWRpYUVuZ2luZUlkZW50aWZpZXIgcmVtb3RlRW5naW5lSWRlbnRp
ZmllciwgTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlSWRlbnRpZmllciBpZGVudGlmaWVyLCBSZW1v
dGVNZWRpYVBsYXllck1hbmFnZXImIG1hbmFnZXIpCisgICAgeworICAgICAgICByZXR1cm4gbWFr
ZVVuaXF1ZTxNZWRpYVBsYXllclByaXZhdGVSZW1vdGU+KHBsYXllciwgcmVtb3RlRW5naW5lSWRl
bnRpZmllciwgaWRlbnRpZmllciwgbWFuYWdlcik7CisgICAgfQorCisgICAgZXhwbGljaXQgTWVk
aWFQbGF5ZXJQcml2YXRlUmVtb3RlKE1lZGlhUGxheWVyKiwgTWVkaWFQbGF5ZXJFbnVtczo6TWVk
aWFFbmdpbmVJZGVudGlmaWVyLCBNZWRpYVBsYXllclByaXZhdGVSZW1vdGVJZGVudGlmaWVyLCBS
ZW1vdGVNZWRpYVBsYXllck1hbmFnZXImKTsKKyAgICB2aXJ0dWFsIH5NZWRpYVBsYXllclByaXZh
dGVSZW1vdGUoKTsKKworICAgIHZvaWQgaW52YWxpZGF0ZSgpIHsgbV9pbnZhbGlkID0gdHJ1ZTsg
fQorICAgIE1lZGlhUGxheWVyRW51bXM6Ok1lZGlhRW5naW5lSWRlbnRpZmllciByZW1vdGVFbmdp
bmVJZGVudGlmaWVyKCkgY29uc3QgeyByZXR1cm4gbV9yZW1vdGVFbmdpbmVJZGVudGlmaWVyOyB9
CisgICAgTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlSWRlbnRpZmllciBwbGF5ZXJJdGVudGlmaWVy
KCkgY29uc3QgeyByZXR1cm4gbV9pZGVudGlmaWVyOyB9CisKKyNpZiAhUkVMRUFTRV9MT0dfRElT
QUJMRUQKKyAgICBjb25zdCBMb2dnZXImIGxvZ2dlcigpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1f
bG9nZ2VyLmdldCgpOyB9CisgICAgY29uc3QgY2hhciogbG9nQ2xhc3NOYW1lKCkgY29uc3Qgb3Zl
cnJpZGUgeyByZXR1cm4gIk1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZSI7IH0KKyAgICBjb25zdCB2
b2lkKiBsb2dJZGVudGlmaWVyKCkgY29uc3QgZmluYWwgeyByZXR1cm4gcmVpbnRlcnByZXRfY2Fz
dDxjb25zdCB2b2lkKj4obV9sb2dJZGVudGlmaWVyKTsgfQorICAgIFdURkxvZ0NoYW5uZWwmIGxv
Z0NoYW5uZWwoKSBjb25zdCBmaW5hbDsKKyNlbmRpZgorCitwcml2YXRlOgorCisgICAgdm9pZCBs
b2FkKGNvbnN0IFN0cmluZyYpIGZpbmFsOworI2lmIEVOQUJMRShNRURJQV9TT1VSQ0UpCisgICAg
dm9pZCBsb2FkKGNvbnN0IFN0cmluZyYsIE1lZGlhU291cmNlUHJpdmF0ZUNsaWVudCopIGZpbmFs
OworI2VuZGlmCisjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKKyAgICB2b2lkIGxvYWQoTWVkaWFT
dHJlYW1Qcml2YXRlJikgZmluYWw7CisjZW5kaWYKKyAgICB2b2lkIGNhbmNlbExvYWQoKSBmaW5h
bDsKKyAgICAKKyAgICB2b2lkIHByZXBhcmVUb1BsYXkoKSBmaW5hbDsKKyAgICBQbGF0Zm9ybUxh
eWVyKiBwbGF0Zm9ybUxheWVyKCkgY29uc3QgZmluYWw7CisKKyNpZiBQTEFURk9STShJT1NfRkFN
SUxZKSB8fCAoUExBVEZPUk0oTUFDKSAmJiBFTkFCTEUoVklERU9fUFJFU0VOVEFUSU9OX01PREUp
KQorICAgIHZvaWQgc2V0VmlkZW9GdWxsc2NyZWVuTGF5ZXIoUGxhdGZvcm1MYXllciosIFdURjo6
RnVuY3Rpb248dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKSBmaW5hbDsKKyAgICB2b2lkIHVw
ZGF0ZVZpZGVvRnVsbHNjcmVlbklubGluZUltYWdlKCkgZmluYWw7CisgICAgdm9pZCBzZXRWaWRl
b0Z1bGxzY3JlZW5GcmFtZShGbG9hdFJlY3QpIGZpbmFsOworICAgIHZvaWQgc2V0VmlkZW9GdWxs
c2NyZWVuR3Jhdml0eShNZWRpYVBsYXllcjo6VmlkZW9HcmF2aXR5KSBmaW5hbDsKKyAgICB2b2lk
IHNldFZpZGVvRnVsbHNjcmVlbk1vZGUoTWVkaWFQbGF5ZXI6OlZpZGVvRnVsbHNjcmVlbk1vZGUp
IGZpbmFsOworICAgIHZvaWQgdmlkZW9GdWxsc2NyZWVuU3RhbmRieUNoYW5nZWQoKSBmaW5hbDsK
KyNlbmRpZgorCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKKyAgICBOU0FycmF5ICp0aW1lZE1l
dGFkYXRhKCkgY29uc3QgZmluYWw7CisgICAgU3RyaW5nIGFjY2Vzc0xvZygpIGNvbnN0IGZpbmFs
OworICAgIFN0cmluZyBlcnJvckxvZygpIGNvbnN0IGZpbmFsOworI2VuZGlmCisgICAgbG9uZyBw
bGF0Zm9ybUVycm9yQ29kZSgpIGNvbnN0IGZpbmFsOworCisgICAgdm9pZCBwbGF5KCkgZmluYWw7
CisgICAgdm9pZCBwYXVzZSgpIGZpbmFsOworICAgIHZvaWQgc2V0QnVmZmVyaW5nUG9saWN5KE1l
ZGlhUGxheWVyOjpCdWZmZXJpbmdQb2xpY3kpIGZpbmFsOworCisgICAgYm9vbCBzdXBwb3J0c1Bp
Y3R1cmVJblBpY3R1cmUoKSBjb25zdCBmaW5hbDsKKyAgICBib29sIHN1cHBvcnRzRnVsbHNjcmVl
bigpIGNvbnN0IGZpbmFsOworICAgIGJvb2wgc3VwcG9ydHNTY2FubmluZygpIGNvbnN0IGZpbmFs
OworICAgIGJvb2wgcmVxdWlyZXNJbW1lZGlhdGVDb21wb3NpdGluZygpIGNvbnN0IGZpbmFsOwor
CisgICAgYm9vbCBjYW5TYXZlTWVkaWFEYXRhKCkgY29uc3QgZmluYWw7CisKKyAgICBGbG9hdFNp
emUgbmF0dXJhbFNpemUoKSBjb25zdCBmaW5hbDsKKworICAgIGJvb2wgaGFzVmlkZW8oKSBjb25z
dCBmaW5hbDsKKyAgICBib29sIGhhc0F1ZGlvKCkgY29uc3QgZmluYWw7CisKKyAgICB2b2lkIHNl
dFZpc2libGUoYm9vbCkgZmluYWw7CisKKyAgICBNZWRpYVRpbWUgZHVyYXRpb25NZWRpYVRpbWUo
KSBjb25zdCBmaW5hbDsKKyAgICBNZWRpYVRpbWUgY3VycmVudE1lZGlhVGltZSgpIGNvbnN0IGZp
bmFsOworCisgICAgTWVkaWFUaW1lIGdldFN0YXJ0RGF0ZSgpIGNvbnN0IGZpbmFsOworCisgICAg
dm9pZCBzZWVrKGNvbnN0IE1lZGlhVGltZSYpIGZpbmFsOworICAgIHZvaWQgc2Vla1dpdGhUb2xl
cmFuY2UoY29uc3QgTWVkaWFUaW1lJiwgY29uc3QgTWVkaWFUaW1lJiwgY29uc3QgTWVkaWFUaW1l
JikgZmluYWw7CisKKyAgICBib29sIHNlZWtpbmcoKSBjb25zdCBmaW5hbDsKKworICAgIE1lZGlh
VGltZSBzdGFydFRpbWUoKSBjb25zdCBmaW5hbDsKKworICAgIHZvaWQgc2V0UmF0ZURvdWJsZShk
b3VibGUpIGZpbmFsOworICAgIGRvdWJsZSByYXRlKCkgY29uc3QgZmluYWw7CisKKyAgICB2b2lk
IHNldFByZXNlcnZlc1BpdGNoKGJvb2wpIGZpbmFsOworCisgICAgYm9vbCBwYXVzZWQoKSBjb25z
dCBmaW5hbDsKKworICAgIHZvaWQgc2V0Vm9sdW1lRG91YmxlKGRvdWJsZSkgZmluYWw7CisKKyNp
ZiBQTEFURk9STShJT1NfRkFNSUxZKSB8fCBVU0UoR1NUUkVBTUVSKQorICAgIGZsb2F0IHZvbHVt
ZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIDE7IH0KKyNlbmRpZgorCisgICAgdm9pZCBzZXRNdXRl
ZChib29sKSBmaW5hbDsKKworICAgIGJvb2wgaGFzQ2xvc2VkQ2FwdGlvbnMoKSBjb25zdCBmaW5h
bDsKKyAgICB2b2lkIHNldENsb3NlZENhcHRpb25zVmlzaWJsZShib29sKSBmaW5hbDsKKworICAg
IGRvdWJsZSBtYXhGYXN0Rm9yd2FyZFJhdGUoKSBjb25zdCBmaW5hbDsKKyAgICBkb3VibGUgbWlu
RmFzdFJldmVyc2VSYXRlKCkgY29uc3QgZmluYWw7CisKKyAgICBNZWRpYVBsYXllcjo6TmV0d29y
a1N0YXRlIG5ldHdvcmtTdGF0ZSgpIGNvbnN0IGZpbmFsOworICAgIE1lZGlhUGxheWVyOjpSZWFk
eVN0YXRlIHJlYWR5U3RhdGUoKSBjb25zdCBmaW5hbDsKKworICAgIHN0ZDo6dW5pcXVlX3B0cjxQ
bGF0Zm9ybVRpbWVSYW5nZXM+IHNlZWthYmxlKCkgY29uc3QgZmluYWw7CisKKyAgICBNZWRpYVRp
bWUgbWF4TWVkaWFUaW1lU2Vla2FibGUoKSBjb25zdCBmaW5hbDsKKyAgICBNZWRpYVRpbWUgbWlu
TWVkaWFUaW1lU2Vla2FibGUoKSBjb25zdCBmaW5hbDsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8UGxh
dGZvcm1UaW1lUmFuZ2VzPiBidWZmZXJlZCgpIGNvbnN0IGZpbmFsOworICAgIGRvdWJsZSBzZWVr
YWJsZVRpbWVSYW5nZXNMYXN0TW9kaWZpZWRUaW1lKCkgY29uc3QgZmluYWw7CisgICAgZG91Ymxl
IGxpdmVVcGRhdGVJbnRlcnZhbCgpIGNvbnN0IGZpbmFsOworCisgICAgdW5zaWduZWQgbG9uZyBs
b25nIHRvdGFsQnl0ZXMoKSBjb25zdCBmaW5hbDsKKyAgICBib29sIGRpZExvYWRpbmdQcm9ncmVz
cygpIGNvbnN0IGZpbmFsOworCisgICAgdm9pZCBzZXRTaXplKGNvbnN0IEludFNpemUmKSBmaW5h
bDsKKworICAgIHZvaWQgcGFpbnQoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRSZWN0Jikg
ZmluYWw7CisKKyAgICB2b2lkIHBhaW50Q3VycmVudEZyYW1lSW5Db250ZXh0KEdyYXBoaWNzQ29u
dGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYpIGZpbmFsOworICAgIGJvb2wgY29weVZpZGVvVGV4dHVy
ZVRvUGxhdGZvcm1UZXh0dXJlKEdyYXBoaWNzQ29udGV4dDNEKiwgUGxhdGZvcm0zRE9iamVjdCwg
R0MzRGVudW0sIEdDM0RpbnQsIEdDM0RlbnVtLCBHQzNEZW51bSwgR0MzRGVudW0sIGJvb2wsIGJv
b2wpIGZpbmFsOworICAgIE5hdGl2ZUltYWdlUHRyIG5hdGl2ZUltYWdlRm9yQ3VycmVudFRpbWUo
KSBmaW5hbDsKKworICAgIHZvaWQgc2V0UHJlbG9hZChNZWRpYVBsYXllcjo6UHJlbG9hZCkgZmlu
YWw7CisKKyAgICBib29sIGhhc0F2YWlsYWJsZVZpZGVvRnJhbWUoKSBjb25zdCBmaW5hbDsKKwor
ICAgIGJvb2wgY2FuTG9hZFBvc3RlcigpIGNvbnN0IGZpbmFsOworICAgIHZvaWQgc2V0UG9zdGVy
KGNvbnN0IFN0cmluZyYpIGZpbmFsOworCisjaWYgVVNFKE5BVElWRV9GVUxMU0NSRUVOX1ZJREVP
KQorICAgIHZvaWQgZW50ZXJGdWxsc2NyZWVuKCkgZmluYWw7CisgICAgdm9pZCBleGl0RnVsbHNj
cmVlbigpIGZpbmFsOworI2VuZGlmCisKKyNpZiBFTkFCTEUoV0lSRUxFU1NfUExBWUJBQ0tfVEFS
R0VUKQorICAgIFN0cmluZyB3aXJlbGVzc1BsYXliYWNrVGFyZ2V0TmFtZSgpIGNvbnN0IGZpbmFs
OworICAgIE1lZGlhUGxheWVyOjpXaXJlbGVzc1BsYXliYWNrVGFyZ2V0VHlwZSB3aXJlbGVzc1Bs
YXliYWNrVGFyZ2V0VHlwZSgpIGNvbnN0IGZpbmFsOworCisgICAgYm9vbCB3aXJlbGVzc1ZpZGVv
UGxheWJhY2tEaXNhYmxlZCgpIGNvbnN0IGZpbmFsOworICAgIHZvaWQgc2V0V2lyZWxlc3NWaWRl
b1BsYXliYWNrRGlzYWJsZWQoYm9vbCkgZmluYWw7CisKKyAgICBib29sIGNhblBsYXlUb1dpcmVs
ZXNzUGxheWJhY2tUYXJnZXQoKSBjb25zdCBmaW5hbDsKKyAgICBib29sIGlzQ3VycmVudFBsYXli
YWNrVGFyZ2V0V2lyZWxlc3MoKSBjb25zdCBmaW5hbDsKKyAgICB2b2lkIHNldFdpcmVsZXNzUGxh
eWJhY2tUYXJnZXQoUmVmPE1lZGlhUGxheWJhY2tUYXJnZXQ+JiYpIGZpbmFsOworCisgICAgdm9p
ZCBzZXRTaG91bGRQbGF5VG9QbGF5YmFja1RhcmdldChib29sKSBmaW5hbDsKKyNlbmRpZgorCisj
aWYgVVNFKE5BVElWRV9GVUxMU0NSRUVOX1ZJREVPKQorICAgIGJvb2wgY2FuRW50ZXJGdWxsc2Ny
ZWVuKCkgY29uc3QgZmluYWw7CisjZW5kaWYKKworICAgIGJvb2wgc3VwcG9ydHNBY2NlbGVyYXRl
ZFJlbmRlcmluZygpIGNvbnN0IGZpbmFsOworICAgIHZvaWQgYWNjZWxlcmF0ZWRSZW5kZXJpbmdT
dGF0ZUNoYW5nZWQoKSBmaW5hbDsKKworICAgIGJvb2wgc2hvdWxkTWFpbnRhaW5Bc3BlY3RSYXRp
bygpIGNvbnN0IGZpbmFsOworICAgIHZvaWQgc2V0U2hvdWxkTWFpbnRhaW5Bc3BlY3RSYXRpbyhi
b29sKSBmaW5hbDsKKworICAgIGJvb2wgaGFzU2luZ2xlU2VjdXJpdHlPcmlnaW4oKSBjb25zdCBm
aW5hbDsKKyAgICBib29sIGRpZFBhc3NDT1JTQWNjZXNzQ2hlY2soKSBjb25zdCBmaW5hbDsKKyAg
ICBPcHRpb25hbDxib29sPiB3b3VsZFRhaW50T3JpZ2luKGNvbnN0IFNlY3VyaXR5T3JpZ2luJikg
Y29uc3QgZmluYWw7CisKKyAgICBNZWRpYVBsYXllcjo6TW92aWVMb2FkVHlwZSBtb3ZpZUxvYWRU
eXBlKCkgY29uc3QgZmluYWw7CisKKyAgICB2b2lkIHByZXBhcmVGb3JSZW5kZXJpbmcoKSBmaW5h
bDsKKworICAgIE1lZGlhVGltZSBtZWRpYVRpbWVGb3JUaW1lVmFsdWUoY29uc3QgTWVkaWFUaW1l
JiB0aW1lVmFsdWUpIGNvbnN0IGZpbmFsOworCisgICAgZG91YmxlIG1heGltdW1EdXJhdGlvblRv
Q2FjaGVNZWRpYVRpbWUoKSBjb25zdCBmaW5hbDsKKworICAgIHVuc2lnbmVkIGRlY29kZWRGcmFt
ZUNvdW50KCkgY29uc3QgZmluYWw7CisgICAgdW5zaWduZWQgZHJvcHBlZEZyYW1lQ291bnQoKSBj
b25zdCBmaW5hbDsKKyAgICB1bnNpZ25lZCBhdWRpb0RlY29kZWRCeXRlQ291bnQoKSBjb25zdCBm
aW5hbDsKKyAgICB1bnNpZ25lZCB2aWRlb0RlY29kZWRCeXRlQ291bnQoKSBjb25zdCBmaW5hbDsK
KworICAgIHZvaWQgc2V0UHJpdmF0ZUJyb3dzaW5nTW9kZShib29sKSBmaW5hbDsKKyAgICBTdHJp
bmcgZW5naW5lRGVzY3JpcHRpb24oKSBjb25zdCBmaW5hbDsKKworI2lmIEVOQUJMRShXRUJfQVVE
SU8pCisgICAgQXVkaW9Tb3VyY2VQcm92aWRlciogYXVkaW9Tb3VyY2VQcm92aWRlcigpIGZpbmFs
OworI2VuZGlmCisKKyNpZiBFTkFCTEUoTEVHQUNZX0VOQ1JZUFRFRF9NRURJQSkKKyAgICBzdGQ6
OnVuaXF1ZV9wdHI8TGVnYWN5Q0RNU2Vzc2lvbj4gY3JlYXRlU2Vzc2lvbihjb25zdCBTdHJpbmcm
LCBMZWdhY3lDRE1TZXNzaW9uQ2xpZW50KikgZmluYWw7CisgICAgdm9pZCBzZXRDRE1TZXNzaW9u
KExlZ2FjeUNETVNlc3Npb24qKSBmaW5hbDsKKyAgICB2b2lkIGtleUFkZGVkKCkgZmluYWw7Cisj
ZW5kaWYKKworI2lmIEVOQUJMRShFTkNSWVBURURfTUVESUEpCisgICAgdm9pZCBjZG1JbnN0YW5j
ZUF0dGFjaGVkKENETUluc3RhbmNlJikgZmluYWw7CisgICAgdm9pZCBjZG1JbnN0YW5jZURldGFj
aGVkKENETUluc3RhbmNlJikgZmluYWw7CisgICAgdm9pZCBhdHRlbXB0VG9EZWNyeXB0V2l0aElu
c3RhbmNlKENETUluc3RhbmNlJikgZmluYWw7CisgICAgYm9vbCB3YWl0aW5nRm9yS2V5KCkgY29u
c3QgZmluYWw7CisjZW5kaWYKKworI2lmIEVOQUJMRShWSURFT19UUkFDSykKKyAgICBib29sIHJl
cXVpcmVzVGV4dFRyYWNrUmVwcmVzZW50YXRpb24oKSBjb25zdCBmaW5hbDsKKyAgICB2b2lkIHNl
dFRleHRUcmFja1JlcHJlc2VudGF0aW9uKFRleHRUcmFja1JlcHJlc2VudGF0aW9uKikgZmluYWw7
CisgICAgdm9pZCBzeW5jVGV4dFRyYWNrQm91bmRzKCkgZmluYWw7CisgICAgdm9pZCB0cmFja3ND
aGFuZ2VkKCkgZmluYWw7CisjZW5kaWYKKworI2lmIFVTRShHU1RSRUFNRVIpCisgICAgdm9pZCBz
aW11bGF0ZUF1ZGlvSW50ZXJydXB0aW9uKCkgZmluYWw7CisjZW5kaWYKKworICAgIHZvaWQgYmVn
aW5TaW11bGF0ZWRIRENQRXJyb3IoKSBmaW5hbDsKKyAgICB2b2lkIGVuZFNpbXVsYXRlZEhEQ1BF
cnJvcigpIGZpbmFsOworCisgICAgU3RyaW5nIGxhbmd1YWdlT2ZQcmltYXJ5QXVkaW9UcmFjaygp
IGNvbnN0IGZpbmFsOworCisgICAgc2l6ZV90IGV4dHJhTWVtb3J5Q29zdCgpIGNvbnN0IGZpbmFs
OworCisgICAgdW5zaWduZWQgbG9uZyBsb25nIGZpbGVTaXplKCkgY29uc3QgZmluYWw7CisKKyAg
ICBib29sIGVuZGVkKCkgY29uc3QgZmluYWw7CisKKyAgICBPcHRpb25hbDxWaWRlb1BsYXliYWNr
UXVhbGl0eU1ldHJpY3M+IHZpZGVvUGxheWJhY2tRdWFsaXR5TWV0cmljcygpIGZpbmFsOworCisj
aWYgRU5BQkxFKEFWRl9DQVBUSU9OUykKKyAgICB2b2lkIG5vdGlmeVRyYWNrTW9kZUNoYW5nZWQo
KSBmaW5hbDsKKyNlbmRpZgorCisgICAgdm9pZCBub3RpZnlBY3RpdmVTb3VyY2VCdWZmZXJzQ2hh
bmdlZCgpIGZpbmFsOworCisgICAgdm9pZCBzZXRTaG91bGREaXNhYmxlU2xlZXAoYm9vbCkgZmlu
YWw7CisKKyAgICB2b2lkIGFwcGxpY2F0aW9uV2lsbFJlc2lnbkFjdGl2ZSgpIGZpbmFsOworICAg
IHZvaWQgYXBwbGljYXRpb25EaWRCZWNvbWVBY3RpdmUoKSBmaW5hbDsKKworI2lmIFVTRShBVkZP
VU5EQVRJT04pCisgICAgQVZQbGF5ZXIgKm9iakNBVkZvdW5kYXRpb25BVlBsYXllcigpIGNvbnN0
IGZpbmFsIHsgcmV0dXJuIG51bGxwdHI7IH0KKyNlbmRpZgorCisgICAgYm9vbCBwZXJmb3JtVGFz
a0F0TWVkaWFUaW1lKFdURjo6RnVuY3Rpb248dm9pZCgpPiYmLCBNZWRpYVRpbWUpIGZpbmFsOwor
CisgICAgYm9vbCBzaG91bGRJZ25vcmVJbnRyaW5zaWNTaXplKCkgZmluYWw7CisKKyAgICBNZWRp
YVBsYXllciogbV9wbGF5ZXIgeyBudWxscHRyIH07CisgICAgUmVtb3RlTWVkaWFQbGF5ZXJNYW5h
Z2VyIG1fbWFuYWdlcjsKKyAgICBNZWRpYVBsYXllckVudW1zOjpNZWRpYUVuZ2luZUlkZW50aWZp
ZXIgbV9yZW1vdGVFbmdpbmVJZGVudGlmaWVyOworICAgIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90
ZUlkZW50aWZpZXIgbV9pZGVudGlmaWVyOworCisjaWYgIVJFTEVBU0VfTE9HX0RJU0FCTEVECisg
ICAgUmVmPGNvbnN0IExvZ2dlcj4gbV9sb2dnZXI7CisgICAgY29uc3Qgdm9pZCogbV9sb2dJZGVu
dGlmaWVyOworI2VuZGlmCisKKyAgICBib29sIG1faW52YWxpZCB7IGZhbHNlIH07Cit9OworCit9
IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvR1BVL21lZGlhL01lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZUlkZW50aWZpZXIu
aCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvTWVkaWFQbGF5ZXJQcml2YXRl
UmVtb3RlSWRlbnRpZmllci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjg3ZTdiOGJiYWVjMzUzNGU3ZGVmZDc4MjM4
NjEwMTQzMjE3NTM4YzcKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvR1BVL21lZGlhL01lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZUlkZW50aWZpZXIuaApAQCAtMCww
ICsxLDM1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UgLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
CisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSA8d3RmL09i
amVjdElkZW50aWZpZXIuaD4KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2VudW0gTWVkaWFQbGF5
ZXJQcml2YXRlUmVtb3RlSWRlbnRpZmllclR5cGUgeyB9OwordXNpbmcgTWVkaWFQbGF5ZXJQcml2
YXRlUmVtb3RlSWRlbnRpZmllciA9IE9iamVjdElkZW50aWZpZXI8TWVkaWFQbGF5ZXJQcml2YXRl
UmVtb3RlSWRlbnRpZmllclR5cGU+OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZU1lZGlhUGxheWVy
TWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZU1l
ZGlhUGxheWVyTWFuYWdlci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDg2YjU3OWNjNzdmM2U1OWQzMmMwOTE0
MTYyNDQ4NjQzYTc1NThiOAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9HUFUvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyLmNwcApAQCAtMCwwICsxLDIx
MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisg
KiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAq
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJSZW1vdGVN
ZWRpYVBsYXllck1hbmFnZXIuaCIKKworI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykKKworI2luY2x1
ZGUgIlJlbW90ZU1lZGlhUGxheWVyTWFuYWdlck1lc3NhZ2VzLmgiCisjaW5jbHVkZSAiUmVtb3Rl
TWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHlNZXNzYWdlcy5oIgorI2luY2x1ZGUgIldlYkNvcmVBcmd1
bWVudENvZGVycy5oIgorI2luY2x1ZGUgIldlYlByb2Nlc3MuaCIKKyNpbmNsdWRlICJXZWJQcm9j
ZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmgiCisjaW5jbHVkZSA8V2ViQ29yZS9NZWRpYVBsYXllci5o
PgorI2luY2x1ZGUgPFdlYkNvcmUvTm90SW1wbGVtZW50ZWQuaD4KKyNpbmNsdWRlIDxXZWJDb3Jl
L1NldHRpbmdzLmg+CisjaW5jbHVkZSA8d3RmL0Fzc2VydGlvbnMuaD4KKworbmFtZXNwYWNlIFdl
YktpdCB7Cit1c2luZyBuYW1lc3BhY2UgUEFMOwordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CisK
K2NsYXNzIE1lZGlhUGxheWVyUmVtb3RlRmFjdG9yeSA6IHB1YmxpYyBNZWRpYVBsYXllckZhY3Rv
cnkgeworcHVibGljOgorICAgIE1lZGlhUGxheWVyUmVtb3RlRmFjdG9yeShNZWRpYVBsYXllckVu
dW1zOjpNZWRpYUVuZ2luZUlkZW50aWZpZXIgcmVtb3RlRW5naW5lSWRlbnRpZmllciwgUmVtb3Rl
TWVkaWFQbGF5ZXJNYW5hZ2VyJiBtYW5hZ2VyKQorICAgICAgICA6IG1fcmVtb3RlRW5naW5lSWRl
bnRpZmllcihyZW1vdGVFbmdpbmVJZGVudGlmaWVyKQorICAgICAgICAsIG1fbWFuYWdlcihtYW5h
Z2VyKQorICAgIHsKKyAgICB9CisKKyAgICBNZWRpYVBsYXllckVudW1zOjpNZWRpYUVuZ2luZUlk
ZW50aWZpZXIgaWRlbnRpZmllcigpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fcmVtb3RlRW5naW5l
SWRlbnRpZmllcjsgfTsKKworICAgIHN0ZDo6dW5pcXVlX3B0cjxNZWRpYVBsYXllclByaXZhdGVJ
bnRlcmZhY2U+IGNyZWF0ZU1lZGlhRW5naW5lUGxheWVyKE1lZGlhUGxheWVyKiBwbGF5ZXIpIGNv
bnN0IGZpbmFsCisgICAgeworICAgICAgICByZXR1cm4gbV9tYW5hZ2VyLmNyZWF0ZVJlbW90ZU1l
ZGlhUGxheWVyKHBsYXllciwgbV9yZW1vdGVFbmdpbmVJZGVudGlmaWVyKTsKKyAgICB9CisKKyAg
ICB2b2lkIGdldFN1cHBvcnRlZFR5cGVzKEhhc2hTZXQ8U3RyaW5nLCBBU0NJSUNhc2VJbnNlbnNp
dGl2ZUhhc2g+JiB0eXBlcykgY29uc3QgZmluYWwKKyAgICB7CisgICAgICAgIHJldHVybiBtX21h
bmFnZXIuZ2V0U3VwcG9ydGVkVHlwZXMobV9yZW1vdGVFbmdpbmVJZGVudGlmaWVyLCB0eXBlcyk7
CisgICAgfQorCisgICAgTWVkaWFQbGF5ZXI6OlN1cHBvcnRzVHlwZSBzdXBwb3J0c1R5cGVBbmRD
b2RlY3MoY29uc3QgTWVkaWFFbmdpbmVTdXBwb3J0UGFyYW1ldGVycyYgcGFyYW1ldGVycykgY29u
c3QgZmluYWwKKyAgICB7CisgICAgICAgIHJldHVybiBtX21hbmFnZXIuc3VwcG9ydHNUeXBlQW5k
Q29kZWNzKG1fcmVtb3RlRW5naW5lSWRlbnRpZmllciwgcGFyYW1ldGVycyk7CisgICAgfQorCisg
ICAgSGFzaFNldDxSZWZQdHI8U2VjdXJpdHlPcmlnaW4+PiBvcmlnaW5zSW5NZWRpYUNhY2hlKGNv
bnN0IFN0cmluZyYgcGF0aCkgY29uc3QgZmluYWwKKyAgICB7CisgICAgICAgIHJldHVybiBtX21h
bmFnZXIub3JpZ2luc0luTWVkaWFDYWNoZShtX3JlbW90ZUVuZ2luZUlkZW50aWZpZXIsIHBhdGgp
OworICAgIH0KKworICAgIHZvaWQgY2xlYXJNZWRpYUNhY2hlKGNvbnN0IFN0cmluZyYgcGF0aCwg
V2FsbFRpbWUgbW9kaWZpZWRTaW5jZSkgY29uc3QgZmluYWwKKyAgICB7CisgICAgICAgIHJldHVy
biBtX21hbmFnZXIuY2xlYXJNZWRpYUNhY2hlKG1fcmVtb3RlRW5naW5lSWRlbnRpZmllciwgcGF0
aCwgbW9kaWZpZWRTaW5jZSk7CisgICAgfQorCisgICAgdm9pZCBjbGVhck1lZGlhQ2FjaGVGb3JP
cmlnaW5zKGNvbnN0IFN0cmluZyYgcGF0aCwgY29uc3QgSGFzaFNldDxSZWZQdHI8U2VjdXJpdHlP
cmlnaW4+PiYgb3JpZ2lucykgY29uc3QgZmluYWwKKyAgICB7CisgICAgICAgIHJldHVybiBtX21h
bmFnZXIuY2xlYXJNZWRpYUNhY2hlRm9yT3JpZ2lucyhtX3JlbW90ZUVuZ2luZUlkZW50aWZpZXIs
IHBhdGgsIG9yaWdpbnMpOworICAgIH0KKworICAgIGJvb2wgc3VwcG9ydHNLZXlTeXN0ZW0oY29u
c3QgU3RyaW5nJiBrZXlTeXN0ZW0sIGNvbnN0IFN0cmluZyYgbWltZVR5cGUpIGNvbnN0IGZpbmFs
CisgICAgeworICAgICAgICByZXR1cm4gbV9tYW5hZ2VyLnN1cHBvcnRzS2V5U3lzdGVtKG1fcmVt
b3RlRW5naW5lSWRlbnRpZmllciwga2V5U3lzdGVtLCBtaW1lVHlwZSk7CisgICAgfQorCitwcml2
YXRlOgorICAgIE1lZGlhUGxheWVyRW51bXM6Ok1lZGlhRW5naW5lSWRlbnRpZmllciBtX3JlbW90
ZUVuZ2luZUlkZW50aWZpZXI7CisgICAgUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyJiBtX21hbmFn
ZXI7Cit9OworCitSZW1vdGVNZWRpYVBsYXllck1hbmFnZXI6OlJlbW90ZU1lZGlhUGxheWVyTWFu
YWdlcihXZWJQcm9jZXNzJiBwcm9jZXNzKQorICAgIDogbV9wcm9jZXNzKHByb2Nlc3MpCit7Cisg
ICAgbV9wcm9jZXNzLmFkZE1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6UmVtb3RlTWVkaWFQbGF5
ZXJNYW5hZ2VyOjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksICp0aGlzKTsKK30KKworUmVtb3RlTWVk
aWFQbGF5ZXJNYW5hZ2VyOjp+UmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyKCkKK3sKKyAgICBtX3By
b2Nlc3MucmVtb3ZlTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpSZW1vdGVNZWRpYVBsYXllck1h
bmFnZXI6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSk7Cit9CisKK2NvbnN0IGNoYXIqIFJlbW90ZU1l
ZGlhUGxheWVyTWFuYWdlcjo6c3VwcGxlbWVudE5hbWUoKQoreworICAgIHJldHVybiAiUmVtb3Rl
TWVkaWFQbGF5ZXJNYW5hZ2VyIjsKK30KKwordm9pZCBSZW1vdGVNZWRpYVBsYXllck1hbmFnZXI6
OmluaXRpYWxpemUoY29uc3QgV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycyYpCit7CisvLyBG
SVhNRTogVXNlIHBhcmFtZXRlcnMubWVkaWFNSU1FVHlwZXMuCit9CisKK3N0ZDo6dW5pcXVlX3B0
cjxNZWRpYVBsYXllclByaXZhdGVJbnRlcmZhY2U+IFJlbW90ZU1lZGlhUGxheWVyTWFuYWdlcjo6
Y3JlYXRlUmVtb3RlTWVkaWFQbGF5ZXIoTWVkaWFQbGF5ZXIqIHBsYXllciwgTWVkaWFQbGF5ZXJF
bnVtczo6TWVkaWFFbmdpbmVJZGVudGlmaWVyIHJlbW90ZUVuZ2luZUlkZW50aWZpZXIpCit7Cisg
ICAgYXV0byBpZCA9IE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZUlkZW50aWZpZXI6OmdlbmVyYXRl
KCk7CisKKyAgICBib29sIGhhdmVSZW1vdGVQcm94eTsKKyAgICBib29sIHNlbmRTdWNjZWVkZWQg
PSBncHVQcm9jZXNzQ29ubmVjdGlvbigpLnNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVNZWRpYVBs
YXllck1hbmFnZXJQcm94eTo6Q3JlYXRlTWVkaWFQbGF5ZXIoaWQsIHJlbW90ZUVuZ2luZUlkZW50
aWZpZXIpLCBNZXNzYWdlczo6UmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHk6OkNyZWF0ZU1l
ZGlhUGxheWVyOjpSZXBseShoYXZlUmVtb3RlUHJveHkpLCAwKTsKKyAgICBpZiAoIWhhdmVSZW1v
dGVQcm94eSB8fCAhc2VuZFN1Y2NlZWRlZCkgeworICAgICAgICBXVEZMb2dBbHdheXMoIkZhaWxl
ZCB0byBjcmVhdGUgcmVtb3RlIG1lZGlhIHBsYXllci4iKTsKKyAgICAgICAgcmV0dXJuIG51bGxw
dHI7CisgICAgfQorCisgICAgYXV0byByZW1vdGVQbGF5ZXIgPSBNZWRpYVBsYXllclByaXZhdGVS
ZW1vdGU6OmNyZWF0ZShwbGF5ZXIsIHJlbW90ZUVuZ2luZUlkZW50aWZpZXIsIGlkLCAqdGhpcyk7
CisgICAgbV9wbGF5ZXJzLmFkZChpZCwgbWFrZVdlYWtQdHIoKnJlbW90ZVBsYXllcikpOworICAg
IHJldHVybiByZW1vdGVQbGF5ZXI7Cit9CisKK3ZvaWQgUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2Vy
OjpnZXRTdXBwb3J0ZWRUeXBlcyhNZWRpYVBsYXllckVudW1zOjpNZWRpYUVuZ2luZUlkZW50aWZp
ZXIgcmVtb3RlRW5naW5lSWRlbnRpZmllciwgSGFzaFNldDxTdHJpbmcsIEFTQ0lJQ2FzZUluc2Vu
c2l0aXZlSGFzaD4mIHJlc3VsdCkKK3sKKyAgICAvLyBGSVhNRTogc3VwcG9ydGVkIHR5cGVzIGRv
bid0IGNoYW5nZSwgY2FjaGUgdGhlbS4KKyAgICBWZWN0b3I8U3RyaW5nPiB0eXBlczsKKyAgICBp
ZiAoIWdwdVByb2Nlc3NDb25uZWN0aW9uKCkuc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZU1lZGlh
UGxheWVyTWFuYWdlclByb3h5OjpHZXRTdXBwb3J0ZWRUeXBlcyhyZW1vdGVFbmdpbmVJZGVudGlm
aWVyKSwgTWVzc2FnZXM6OlJlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5OjpHZXRTdXBwb3J0
ZWRUeXBlczo6UmVwbHkodHlwZXMpLCAwKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgcmVzdWx0
ID0gSGFzaFNldDxTdHJpbmcsIEFTQ0lJQ2FzZUluc2Vuc2l0aXZlSGFzaD4oKTsKKyAgICBmb3Ig
KGF1dG8mIHR5cGUgOiB0eXBlcykKKyAgICAgICAgcmVzdWx0LmFkZCh0eXBlKTsKK30KKworTWVk
aWFQbGF5ZXI6OlN1cHBvcnRzVHlwZSBSZW1vdGVNZWRpYVBsYXllck1hbmFnZXI6OnN1cHBvcnRz
VHlwZUFuZENvZGVjcyhNZWRpYVBsYXllckVudW1zOjpNZWRpYUVuZ2luZUlkZW50aWZpZXIgcmVt
b3RlRW5naW5lSWRlbnRpZmllciwgY29uc3QgV2ViQ29yZTo6TWVkaWFFbmdpbmVTdXBwb3J0UGFy
YW1ldGVycyYgcGFyYW1ldGVycykKK3sKKyAgICAvLyBGSVhNRTogc3VwcG9ydGVkIHR5cGVzIGRv
bid0IGNoYW5nZSwgY2FjaGUgdGhlbS4KKworICAgIC8vIEZJWE1FOiBjb252ZXJ0IFdlYkNvcmU6
Ok1lZGlhUGxheWVyOjpTdXBwb3J0c1R5cGUgdG8gZW51bSBjbGFzcyBzbyBpdCBjYW4gYmUgZW5j
b2RlZCBhbmQgc2VudCB2aWEgSVBDCisgICAgTWVkaWFQbGF5ZXI6OlN1cHBvcnRzVHlwZSByZXN1
bHQ7CisgICAgaWYgKCFncHVQcm9jZXNzQ29ubmVjdGlvbigpLnNlbmRTeW5jKE1lc3NhZ2VzOjpS
ZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eTo6U3VwcG9ydHNUeXBlKHJlbW90ZUVuZ2luZUlk
ZW50aWZpZXIsIHBhcmFtZXRlcnMpLCBNZXNzYWdlczo6UmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2Vy
UHJveHk6OlN1cHBvcnRzVHlwZTo6UmVwbHkocmVzdWx0KSwgMCkpCisgICAgICAgIHJldHVybiBN
ZWRpYVBsYXllcjo6U3VwcG9ydHNUeXBlOjpJc05vdFN1cHBvcnRlZDsKKworICAgIHJldHVybiBz
dGF0aWNfY2FzdDxXZWJDb3JlOjpNZWRpYVBsYXllcjo6U3VwcG9ydHNUeXBlPihyZXN1bHQpOwor
fQorCisKK2Jvb2wgUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyOjpzdXBwb3J0c0tleVN5c3RlbShN
ZWRpYVBsYXllckVudW1zOjpNZWRpYUVuZ2luZUlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYga2V5
U3lzdGVtLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlKQoreworICAgIHJldHVybiBmYWxzZTsKK30K
KworCitIYXNoU2V0PFJlZlB0cjxXZWJDb3JlOjpTZWN1cml0eU9yaWdpbj4+IFJlbW90ZU1lZGlh
UGxheWVyTWFuYWdlcjo6b3JpZ2luc0luTWVkaWFDYWNoZShNZWRpYVBsYXllckVudW1zOjpNZWRp
YUVuZ2luZUlkZW50aWZpZXIgcmVtb3RlRW5naW5lSWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBw
YXRoKQoreworICAgIFZlY3RvcjxXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGE+IG9yaWdpbkRh
dGFzOworICAgIGlmICghZ3B1UHJvY2Vzc0Nvbm5lY3Rpb24oKS5zZW5kU3luYyhNZXNzYWdlczo6
UmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHk6Ok9yaWdpbnNJbk1lZGlhQ2FjaGUocmVtb3Rl
RW5naW5lSWRlbnRpZmllciwgcGF0aCksIE1lc3NhZ2VzOjpSZW1vdGVNZWRpYVBsYXllck1hbmFn
ZXJQcm94eTo6T3JpZ2luc0luTWVkaWFDYWNoZTo6UmVwbHkob3JpZ2luRGF0YXMpLCAwKSkKKyAg
ICAgICAgcmV0dXJuIHsgfTsKKworICAgIEhhc2hTZXQ8UmVmUHRyPFNlY3VyaXR5T3JpZ2luPj4g
b3JpZ2luczsKKyAgICBmb3IgKGF1dG8mIG9yaWdpbkRhdGEgOiBvcmlnaW5EYXRhcykKKyAgICAg
ICAgb3JpZ2lucy5hZGQob3JpZ2luRGF0YS5zZWN1cml0eU9yaWdpbigpKTsKKworICAgIHJldHVy
biBvcmlnaW5zOworfQorCit2b2lkIFJlbW90ZU1lZGlhUGxheWVyTWFuYWdlcjo6Y2xlYXJNZWRp
YUNhY2hlKE1lZGlhUGxheWVyRW51bXM6Ok1lZGlhRW5naW5lSWRlbnRpZmllciByZW1vdGVFbmdp
bmVJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIHBhdGgsIFdhbGxUaW1lIG1vZGlmaWVkU2luY2Up
Cit7CisgICAgZ3B1UHJvY2Vzc0Nvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpSZW1vdGVNZWRp
YVBsYXllck1hbmFnZXJQcm94eTo6Q2xlYXJNZWRpYUNhY2hlKHJlbW90ZUVuZ2luZUlkZW50aWZp
ZXIsIHBhdGgsIG1vZGlmaWVkU2luY2UpLCAwKTsKK30KKwordm9pZCBSZW1vdGVNZWRpYVBsYXll
ck1hbmFnZXI6OmNsZWFyTWVkaWFDYWNoZUZvck9yaWdpbnMoTWVkaWFQbGF5ZXJFbnVtczo6TWVk
aWFFbmdpbmVJZGVudGlmaWVyIHJlbW90ZUVuZ2luZUlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYg
cGF0aCwgY29uc3QgSGFzaFNldDxSZWZQdHI8V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4+PiYgb3Jp
Z2lucykKK3sKKyAgICBWZWN0b3I8V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhPiBvcmlnaW5E
YXRhOworICAgIGZvciAoYXV0byYgb3JpZ2luIDogb3JpZ2lucykKKyAgICAgICAgb3JpZ2luRGF0
YS5hcHBlbmQob3JpZ2luLT5kYXRhKCkpOworCisgICAgZ3B1UHJvY2Vzc0Nvbm5lY3Rpb24oKS5z
ZW5kKE1lc3NhZ2VzOjpSZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eTo6Q2xlYXJNZWRpYUNh
Y2hlRm9yT3JpZ2lucyhyZW1vdGVFbmdpbmVJZGVudGlmaWVyLCBwYXRoLCBvcmlnaW5EYXRhKSwg
MCk7Cit9CisKK3ZvaWQgUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyOjpuZXR3b3JrU3RhdGVDaGFu
Z2VkKE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZUlkZW50aWZpZXIpCit7Cit9CisKK3ZvaWQgUmVt
b3RlTWVkaWFQbGF5ZXJNYW5hZ2VyOjp1cGRhdGVQcmVmZXJlbmNlcyhjb25zdCBTZXR0aW5ncyYg
c2V0dGluZ3MpCit7CisgICAgYXV0byByZWdpc3RlckVuZ2luZSA9IFt0aGlzXShNZWRpYUVuZ2lu
ZVJlZ2lzdHJhciByZWdpc3RyYXIsIE1lZGlhUGxheWVyRW51bXM6Ok1lZGlhRW5naW5lSWRlbnRp
ZmllciByZW1vdGVFbmdpbmVJZGVudGlmaWVyKSB7CisgICAgICAgIHJlZ2lzdHJhcihtYWtlVW5p
cXVlPE1lZGlhUGxheWVyUmVtb3RlRmFjdG9yeT4ocmVtb3RlRW5naW5lSWRlbnRpZmllciwgKnRo
aXMpKTsKKyAgICB9OworCisgICAgUmVtb3RlTWVkaWFQbGF5ZXJTdXBwb3J0OjpzZXRSZWdpc3Rl
clJlbW90ZVBsYXllckNhbGxiYWNrKHNldHRpbmdzLnVzZUdQVVByb2Nlc3NGb3JNZWRpYSgpID8g
cmVnaXN0ZXJFbmdpbmUgOiBzdGQ6OmZ1bmN0aW9uPHZvaWQoTWVkaWFFbmdpbmVSZWdpc3RyYXIs
IE1lZGlhUGxheWVyRW51bXM6Ok1lZGlhRW5naW5lSWRlbnRpZmllcik+IHsgfSk7Cit9CisKK0lQ
Qzo6Q29ubmVjdGlvbiYgUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyOjpncHVQcm9jZXNzQ29ubmVj
dGlvbigpIGNvbnN0Cit7CisgICAgcmV0dXJuIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmVuc3Vy
ZUdQVVByb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigpOworfQorCit9CisKKyNlbmRpZgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVNZWRp
YVBsYXllck1hbmFnZXIuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVt
b3RlTWVkaWFQbGF5ZXJNYW5hZ2VyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYmU1YmZmN2FhOTNlMjVmMzViNDhh
YTQ2YWUxZjgyODEyMTNjZjJjMQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyLmgKQEAgLTAsMCArMSw4
NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisg
KiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAq
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxFKEdQVV9QUk9DRVNT
KQorCisjaW5jbHVkZSAiTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlSWRlbnRpZmllci5oIgorI2lu
Y2x1ZGUgIk1lc3NhZ2VSZWNlaXZlci5oIgorI2luY2x1ZGUgIlNoYXJlZE1lbW9yeS5oIgorI2lu
Y2x1ZGUgIldlYlByb2Nlc3NTdXBwbGVtZW50LmgiCisjaW5jbHVkZSA8V2ViQ29yZS9NZWRpYVBs
YXllci5oPgorI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsK
K2NsYXNzIE1lZGlhUGxheWVyOworY2xhc3MgTWVkaWFQbGF5ZXJQcml2YXRlSW50ZXJmYWNlOwor
Y2xhc3MgU2V0dGluZ3M7Cit9CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBNZWRpYVBs
YXllclByaXZhdGVSZW1vdGU7CitjbGFzcyBXZWJQcm9jZXNzOworCitjbGFzcyBSZW1vdGVNZWRp
YVBsYXllck1hbmFnZXIgOiBwdWJsaWMgV2ViUHJvY2Vzc1N1cHBsZW1lbnQsIHB1YmxpYyBJUEM6
Ok1lc3NhZ2VSZWNlaXZlciB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CitwdWJsaWM6
CisgICAgZXhwbGljaXQgUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyKFdlYlByb2Nlc3MmKTsKKyAg
ICB+UmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyKCk7CisKKyAgICBzdGF0aWMgY29uc3QgY2hhciog
c3VwcGxlbWVudE5hbWUoKTsKKworICAgIHZvaWQgdXBkYXRlUHJlZmVyZW5jZXMoY29uc3QgV2Vi
Q29yZTo6U2V0dGluZ3MmKTsKKworICAgIElQQzo6Q29ubmVjdGlvbiYgZ3B1UHJvY2Vzc0Nvbm5l
Y3Rpb24oKSBjb25zdDsKKworcHJpdmF0ZToKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6
TWVkaWFQbGF5ZXJQcml2YXRlSW50ZXJmYWNlPiBjcmVhdGVSZW1vdGVNZWRpYVBsYXllcihXZWJD
b3JlOjpNZWRpYVBsYXllciosIFdlYkNvcmU6Ok1lZGlhUGxheWVyRW51bXM6Ok1lZGlhRW5naW5l
SWRlbnRpZmllcik7CisKKyAgICAvLyBXZWJQcm9jZXNzU3VwcGxlbWVudAorICAgIHZvaWQgaW5p
dGlhbGl6ZShjb25zdCBXZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzJikgZmluYWw7CisKKyAg
ICAvLyBJUEM6Ok1lc3NhZ2VSZWNlaXZlcgorICAgIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2UoSVBD
OjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJikgZmluYWw7CisKKyAgICAvLyBNZXNzYWdlczo6
UmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyCisgICAgdm9pZCBuZXR3b3JrU3RhdGVDaGFuZ2VkKE1l
ZGlhUGxheWVyUHJpdmF0ZVJlbW90ZUlkZW50aWZpZXIpOworCisgICAgZnJpZW5kIGNsYXNzIE1l
ZGlhUGxheWVyUmVtb3RlRmFjdG9yeTsKKyAgICB2b2lkIGdldFN1cHBvcnRlZFR5cGVzKFdlYkNv
cmU6Ok1lZGlhUGxheWVyRW51bXM6Ok1lZGlhRW5naW5lSWRlbnRpZmllciwgSGFzaFNldDxTdHJp
bmcsIEFTQ0lJQ2FzZUluc2Vuc2l0aXZlSGFzaD4mKTsKKyAgICBXZWJDb3JlOjpNZWRpYVBsYXll
cjo6U3VwcG9ydHNUeXBlIHN1cHBvcnRzVHlwZUFuZENvZGVjcyhXZWJDb3JlOjpNZWRpYVBsYXll
ckVudW1zOjpNZWRpYUVuZ2luZUlkZW50aWZpZXIsIGNvbnN0IFdlYkNvcmU6Ok1lZGlhRW5naW5l
U3VwcG9ydFBhcmFtZXRlcnMmKTsKKyAgICBib29sIHN1cHBvcnRzS2V5U3lzdGVtKFdlYkNvcmU6
Ok1lZGlhUGxheWVyRW51bXM6Ok1lZGlhRW5naW5lSWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBr
ZXlTeXN0ZW0sIGNvbnN0IFN0cmluZyYgbWltZVR5cGUpOworICAgIEhhc2hTZXQ8UmVmUHRyPFdl
YkNvcmU6OlNlY3VyaXR5T3JpZ2luPj4gb3JpZ2luc0luTWVkaWFDYWNoZShXZWJDb3JlOjpNZWRp
YVBsYXllckVudW1zOjpNZWRpYUVuZ2luZUlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYpOworICAg
IHZvaWQgY2xlYXJNZWRpYUNhY2hlKFdlYkNvcmU6Ok1lZGlhUGxheWVyRW51bXM6Ok1lZGlhRW5n
aW5lSWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiwgV2FsbFRpbWUgbW9kaWZpZWRTaW5jZSk7Cisg
ICAgdm9pZCBjbGVhck1lZGlhQ2FjaGVGb3JPcmlnaW5zKFdlYkNvcmU6Ok1lZGlhUGxheWVyRW51
bXM6Ok1lZGlhRW5naW5lSWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiwgY29uc3QgSGFzaFNldDxS
ZWZQdHI8V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4+PiYpOworCisgICAgSGFzaE1hcDxNZWRpYVBs
YXllclByaXZhdGVSZW1vdGVJZGVudGlmaWVyLCBXZWFrUHRyPE1lZGlhUGxheWVyUHJpdmF0ZVJl
bW90ZT4+IG1fcGxheWVyczsKKyAgICBXZWJQcm9jZXNzJiBtX3Byb2Nlc3M7Cit9OworCit9IC8v
IG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyTWFuYWdlci5tZXNzYWdlcy5pbiBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJNYW5h
Z2VyLm1lc3NhZ2VzLmluCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmE5MzM1N2MyYmE4NWZmMWRkZWNjYTA3YzMwMzkx
ZjhlMjAyOTIxMmYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
R1BVL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyTWFuYWdlci5tZXNzYWdlcy5pbgpAQCAtMCwwICsx
LDMyIEBACisjIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyMgYXJlIG1ldDoKKyMgMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorIyAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisjICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyMgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisjIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
KyMgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UiBJVFMgQ09OVFJJQlVUT1JTCisjIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyMgQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyMgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTCisjIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisjIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisjIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YKKyMgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCisjaWYgRU5BQkxF
KFZJREVPKQorCittZXNzYWdlcyAtPiBSZW1vdGVNZWRpYVBsYXllck1hbmFnZXIgTm90UmVmQ291
bnRlZCB7CisKKyAgICBOZXR3b3JrU3RhdGVDaGFuZ2VkKFdlYktpdDo6TWVkaWFQbGF5ZXJQcml2
YXRlUmVtb3RlSWRlbnRpZmllciBpZCkKKworfQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1ZpZXdVcGRhdGVEaXNwYXRjaGVyLmNwcCBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1ZpZXdVcGRhdGVEaXNwYXRjaGVyLmNwcApp
bmRleCA1Y2Y0NDQwN2UzZmIzZjY3YTAzNDcwMDNkMDQ3OGQ3NDE5OTMyNDNmLi4xZmJjYzc5NmZm
YjY1OTVhNGYzNWI1MjkwYTljM2I5YTRkZjE4NjZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViUGFnZS9WaWV3VXBkYXRlRGlzcGF0Y2hlci5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvVmlld1VwZGF0ZURpc3BhdGNoZXIuY3BwCkBAIC0z
MSw2ICszMSw3IEBACiAjaW5jbHVkZSAiVmlld1VwZGF0ZURpc3BhdGNoZXJNZXNzYWdlcy5oIgog
I2luY2x1ZGUgIldlYlBhZ2UuaCIKICNpbmNsdWRlICJXZWJQcm9jZXNzLmgiCisjaW5jbHVkZSA8
V2ViQ29yZS9QYWdlSWRlbnRpZmllci5oPgogI2luY2x1ZGUgPHd0Zi9SdW5Mb29wLmg+CiAKIG5h
bWVzcGFjZSBXZWJLaXQgewpAQCAtNzUsNyArNzYsNyBAQCB2b2lkIFZpZXdVcGRhdGVEaXNwYXRj
aGVyOjp2aXNpYmxlQ29udGVudFJlY3RVcGRhdGUoV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgcGFn
ZQogCiB2b2lkIFZpZXdVcGRhdGVEaXNwYXRjaGVyOjpkaXNwYXRjaFZpc2libGVDb250ZW50UmVj
dFVwZGF0ZSgpCiB7Ci0gICAgSGFzaE1hcDxQYWdlSWRlbnRpZmllciwgVXBkYXRlRGF0YT4gdXBk
YXRlOworICAgIEhhc2hNYXA8V2ViQ29yZTo6UGFnZUlkZW50aWZpZXIsIFVwZGF0ZURhdGE+IHVw
ZGF0ZTsKICAgICB7CiAgICAgICAgIExvY2tIb2xkZXIgbG9ja2VyKCZtX2RhdGFNdXRleCk7CiAg
ICAgICAgIHVwZGF0ZSA9IFdURk1vdmUobV9sYXRlc3RVcGRhdGUpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAgYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAppbmRleCA3MzVmZWE0ZWUxM2JlNDI1YzIz
NGJlOTIxMjBmZTllN2JjYTJkNWM3Li5iOTY5ZDliYWU2YjFkYWNlMzdjN2M3OTZiMmEyMDJhZDY3
NTM4Nzg0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQ
YWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNw
cApAQCAtMzEyLDYgKzMxMiwxMCBAQAogI2luY2x1ZGUgIldlYkRldmljZU9yaWVudGF0aW9uVXBk
YXRlUHJvdmlkZXIuaCIKICNlbmRpZgogCisjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKQorI2luY2x1
ZGUgIlJlbW90ZU1lZGlhUGxheWVyTWFuYWdlci5oIgorI2VuZGlmCisKIG5hbWVzcGFjZSBXZWJL
aXQgewogdXNpbmcgbmFtZXNwYWNlIEpTQzsKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwpAQCAt
MzYwNiw2ICszNjEwLDEwIEBAIHZvaWQgV2ViUGFnZTo6dXBkYXRlUHJlZmVyZW5jZXMoY29uc3Qg
V2ViUHJlZmVyZW5jZXNTdG9yZSYgc3RvcmUpCiAKICAgICBpZiAobV9kcmF3aW5nQXJlYSkKICAg
ICAgICAgbV9kcmF3aW5nQXJlYS0+dXBkYXRlUHJlZmVyZW5jZXMoc3RvcmUpOworCisjaWYgRU5B
QkxFKEdQVV9QUk9DRVNTKQorICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnN1cHBsZW1lbnQ8
UmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyPigpLT51cGRhdGVQcmVmZXJlbmNlcyhzZXR0aW5ncyk7
CisjZW5kaWYKIH0KIAogI2lmIEVOQUJMRShEQVRBX0RFVEVDVElPTikKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJQcm9jZXNzLmNwcAppbmRleCAwNmIwOGQ3OGJmNTg3MzVlODE3ODBmYTA0MWMw
YTg3NDFlZjAwZWY5Li4xNTEzMjcxYWMzZjk3NTE1NmY5OTQyZGFmZGYwY2MwYThjZDdlM2QzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCkBAIC0xNjQsNiArMTY0LDEw
IEBACiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvUmVtb3RlSW5zcGVjdG9yLmg+CiAjZW5kaWYK
IAorI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykKKyNpbmNsdWRlICJSZW1vdGVNZWRpYVBsYXllck1h
bmFnZXIuaCIKKyNlbmRpZgorCiAvLyBUaGlzIHNob3VsZCBiZSBsZXNzIHRoYW4gcGx1Z0luQXV0
b1N0YXJ0RXhwaXJhdGlvblRpbWVUaHJlc2hvbGQgaW4gUGx1Z0luQXV0b1N0YXJ0UHJvdmlkZXIu
CiBzdGF0aWMgY29uc3QgU2Vjb25kcyBwbHVnSW5BdXRvU3RhcnRFeHBpcmF0aW9uVGltZVVwZGF0
ZVRocmVzaG9sZCB7IDI5ICogMjQgKiA2MCAqIDYwIH07CiAKQEAgLTIyMSw3ICsyMjUsMTEgQEAg
V2ViUHJvY2Vzczo6V2ViUHJvY2VzcygpCiAjaWYgUExBVEZPUk0oQ09DT0EpICYmIEVOQUJMRShN
RURJQV9TVFJFQU0pCiAgICAgYWRkU3VwcGxlbWVudDxVc2VyTWVkaWFDYXB0dXJlTWFuYWdlcj4o
KTsKICNlbmRpZgotICAgIAorCisjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKQorICAgIGFkZFN1cHBs
ZW1lbnQ8UmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyPigpOworI2VuZGlmCisKICAgICBHaWdhY2Fn
ZTo6Zm9yYmlkRGlzYWJsaW5nUHJpbWl0aXZlR2lnYWNhZ2UoKTsKIH0KIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>385491</attachid>
            <date>2019-12-12 06:39:23 -0800</date>
            <delta_ts>2019-12-12 09:02:43 -0800</delta_ts>
            <desc>WIP patch</desc>
            <filename>bug-205094-20191212063923.patch</filename>
            <type>text/plain</type>
            <size>152876</size>
            <attacher name="Eric Carlson">eric.carlson</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjUzMzk3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZTk0ZmQ0ZWMxNDg4MjAx
YTM0ZjM1Nzk2MWUwOTg5OWZmNzIyYmNmNS4uNGEyNzIyNWMwNjkyM2ZiMWMxZjBiZDkwZmI0ZDkw
OWU1YzdlNWRkMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEwNyBAQAorMjAxOS0xMi0xMCAgRXJp
YyBDYXJsc29uICA8ZXJpYy5jYXJsc29uQGFwcGxlLmNvbT4KKworICAgICAgICBBZGQgaW5mcmFz
dHJ1Y3R1cmUgbmVlZGVkIGZvciBwbGF5aW5nIG1lZGlhIHBsYXllciBpbiB0aGUgR1BVIHByb2Nl
c3MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwNTA5
NAorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNTc4MTUzOTM+CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLCBubyBmdW5jdGlvbmFs
IGNoYW5nZSB5ZXQuCisKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2o6CisgICAgICAgICogcGxhdGZvcm0vQ29udGVudFR5cGUuaDoKKyAgICAgICAgKFdlYkNvcmU6
OkNvbnRlbnRUeXBlOjplbmNvZGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudFR5
cGU6OmRlY29kZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6bnVsbExvZ2dlcik6CisgICAgICAgIChXZWJDb3JlOjpudWxs
Q29udGVudFR5cGVWZWN0b3IpOgorICAgICAgICAoV2ViQ29yZTo6bXV0YWJsZUluc3RhbGxlZE1l
ZGlhRW5naW5lc1ZlY3Rvcik6CisgICAgICAgIChXZWJDb3JlOjpyZWdpc3RlclJlbW90ZVBsYXll
ckNhbGxiYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbW90ZU1lZGlhUGxheWVyU3VwcG9ydDo6
c2V0UmVnaXN0ZXJSZW1vdGVQbGF5ZXJDYWxsYmFjayk6CisgICAgICAgIChXZWJDb3JlOjpidWls
ZE1lZGlhRW5naW5lc1ZlY3Rvcik6CisgICAgICAgIChXZWJDb3JlOjppbnN0YWxsZWRNZWRpYUVu
Z2luZXMpOgorICAgICAgICAoV2ViQ29yZTo6YWRkTWVkaWFFbmdpbmUpOgorICAgICAgICAoV2Vi
Q29yZTo6TWVkaWFQbGF5ZXI6Om1lZGlhRW5naW5lKToKKyAgICAgICAgKFdlYkNvcmU6OmJlc3RN
ZWRpYUVuZ2luZUZvclN1cHBvcnRQYXJhbWV0ZXJzKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlh
UGxheWVyOjpuZXh0TWVkaWFFbmdpbmUpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXI6
OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllcjo6TWVkaWFQbGF5ZXIpOgor
ICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXI6Om5leHRCZXN0TWVkaWFFbmdpbmUpOgorICAg
ICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXI6OmxvYWRXaXRoTmV4dE1lZGlhRW5naW5lKToKKyAg
ICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyOjpnZXRTdXBwb3J0ZWRUeXBlcyk6CisgICAgICAg
IChXZWJDb3JlOjpNZWRpYVBsYXllcjo6b3JpZ2luc0luTWVkaWFDYWNoZSk6CisgICAgICAgIChX
ZWJDb3JlOjpNZWRpYVBsYXllcjo6Y2xlYXJNZWRpYUNhY2hlKToKKyAgICAgICAgKFdlYkNvcmU6
Ok1lZGlhUGxheWVyOjpjbGVhck1lZGlhQ2FjaGVGb3JPcmlnaW5zKToKKyAgICAgICAgKFdlYkNv
cmU6Ok1lZGlhUGxheWVyOjpzdXBwb3J0c0tleVN5c3RlbSk6CisgICAgICAgIChXZWJDb3JlOjpN
ZWRpYVBsYXllcjo6bmV0d29ya1N0YXRlQ2hhbmdlZCk6CisgICAgICAgIChXZWJDb3JlOjpuZXh0
TWVkaWFFbmdpbmUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXI6Om5l
eHRCZXN0TWVkaWFFbmdpbmUgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL01lZGlhUGxheWVyLmg6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYUVuZ2luZVN1cHBv
cnRQYXJhbWV0ZXJzOjplbmNvZGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFFbmdp
bmVTdXBwb3J0UGFyYW1ldGVyczo6ZGVjb2RlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxh
eWVyRmFjdG9yeTo6fk1lZGlhUGxheWVyRmFjdG9yeSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRp
YVBsYXllckZhY3Rvcnk6Om9yaWdpbnNJbk1lZGlhQ2FjaGUgY29uc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6TWVkaWFQbGF5ZXJGYWN0b3J5OjpjbGVhck1lZGlhQ2FjaGUgY29uc3QpOgorICAgICAg
ICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJGYWN0b3J5OjpjbGVhck1lZGlhQ2FjaGVGb3JPcmlnaW5z
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyRmFjdG9yeTo6c3VwcG9ydHNL
ZXlTeXN0ZW0gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXI6OnNldFZpZGVv
RnVsbHNjcmVlbkxheWVyKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVy
OjpzaXplIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyOjpp
bnZhbGlkVGltZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllcjo6cGxh
dGZvcm1Wb2x1bWVDb25maWd1cmF0aW9uUmVxdWlyZWQgY29uc3QpOiBEZWxldGVkLgorICAgICAg
ICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXI6OmNvbnRlbnRNSU1FVHlwZSBjb25zdCk6IERlbGV0ZWQu
CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllcjo6Y29udGVudFR5cGVDb2RlY3MgY29uc3Qp
OiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXI6OmNvbnRlbnRNSU1FVHlw
ZVdhc0luZmVycmVkRnJvbUV4dGVuc2lvbiBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJD
b3JlOjpNZWRpYVBsYXllcjo6bWVkaWFQbGF5ZXJMb2dJZGVudGlmaWVyKTogRGVsZXRlZC4KKyAg
ICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyOjpyZW5kZXJpbmdDYW5CZUFjY2VsZXJhdGVkIGNv
bnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyOjpyZW5kZXJpbmdN
b2RlQ2hhbmdlZCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXll
cjo6YWNjZWxlcmF0ZWRDb21wb3NpdGluZ0VuYWJsZWQpOiBEZWxldGVkLgorICAgICAgICAoV2Vi
Q29yZTo6TWVkaWFQbGF5ZXI6OmFjdGl2ZVNvdXJjZUJ1ZmZlcnNDaGFuZ2VkKTogRGVsZXRlZC4K
KyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyOjpwbGF5ZXJDb250ZW50Qm94UmVjdCBjb25z
dCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllcjo6cGxheWVyQ29udGVu
dHNTY2FsZSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllcjo6
c2hvdWxkVXNlUGVyc2lzdGVudENhY2hlIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNv
cmU6Ok1lZGlhUGxheWVyOjptZWRpYUNhY2hlRGlyZWN0b3J5IGNvbnN0KTogRGVsZXRlZC4KKyAg
ICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyOjppc1ZpZGVvUGxheWVyIGNvbnN0KTogRGVsZXRl
ZC4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyOjptZWRpYUVuZ2luZVVwZGF0ZWQpOiBE
ZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXI6OmlzTG9vcGluZyBjb25zdCk6
IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllcjo6cmVxdWVzdEluc3RhbGxN
aXNzaW5nUGx1Z2lucyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllcjo6
Y2xpZW50IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9NZWRp
YVBsYXllckVuZ2luZUlkZW50aWZpZXJzLmg6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL0NvbnRlbnRUeXBlLmguCisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllckVuZ2lu
ZUlkZW50aWZpZXJzOjphdkZvdW5kYXRpb25FbmdpbmVJZGVudGlmaWVyKToKKyAgICAgICAgKFdl
YkNvcmU6Ok1lZGlhUGxheWVyRW5naW5lSWRlbnRpZmllcnM6OmF2Rm91bmRhdGlvbk1TRUVuZ2lu
ZUlkZW50aWZpZXIpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJFbmdpbmVJZGVudGlm
aWVyczo6YXZGb3VuZGF0aW9uTWVkaWFTdHJlYW1FbmdpbmVJZGVudGlmaWVyKToKKyAgICAgICAg
KFdlYkNvcmU6Ok1lZGlhUGxheWVyRW5naW5lSWRlbnRpZmllcnM6OkdTdHJlYW1lck1lZGlhRW5n
aW5lSWRlbnRpZmllcik6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllckVuZ2luZUlkZW50
aWZpZXJzOjpHU3RyZWFtZXJNU0VNZWRpYUVuZ2luZUlkZW50aWZpZXIpOgorICAgICAgICAoV2Vi
Q29yZTo6TWVkaWFQbGF5ZXJFbmdpbmVJZGVudGlmaWVyczo6aG9sZVB1bmNoTWVkaWFFbmdpbmVJ
ZGVudGlmaWVyKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyRW5naW5lSWRlbnRpZmll
cnM6Ok1lZGlhRm91bmRhdGlvbk1lZGlhRW5naW5lSWRlbnRpZmllcik6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvUGxhdGZvcm1UaW1lUmFuZ2VzLmg6CisgICAgICAgIChXZWJDb3JlOjpQ
bGF0Zm9ybVRpbWVSYW5nZXM6OlBsYXRmb3JtVGltZVJhbmdlcyk6IERlbGV0ZWQuCisgICAgICAg
IChXZWJDb3JlOjpQbGF0Zm9ybVRpbWVSYW5nZXM6Omxlbmd0aCBjb25zdCk6IERlbGV0ZWQuCisg
ICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybVRpbWVSYW5nZXM6OlJhbmdlOjpSYW5nZSk6IERlbGV0
ZWQuCisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybVRpbWVSYW5nZXM6OlJhbmdlOjppc1BvaW50
SW5SYW5nZSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybVRpbWVS
YW5nZXM6OlJhbmdlOjppc092ZXJsYXBwaW5nUmFuZ2UgY29uc3QpOiBEZWxldGVkLgorICAgICAg
ICAoV2ViQ29yZTo6UGxhdGZvcm1UaW1lUmFuZ2VzOjpSYW5nZTo6aXNDb250aWd1b3VzV2l0aFJh
bmdlIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtVGltZVJhbmdl
czo6UmFuZ2U6OnVuaW9uV2l0aE92ZXJsYXBwaW5nT3JDb250aWd1b3VzUmFuZ2UgY29uc3QpOiBE
ZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1UaW1lUmFuZ2VzOjpSYW5nZTo6aXNC
ZWZvcmVSYW5nZSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
YXZmb3VuZGF0aW9uL2NmL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbkNGLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbkNGOjpyZWdpc3Rl
ck1lZGlhRW5naW5lKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24v
b2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLmg6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3Vu
ZGF0aW9uT2JqQy5tbToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUFWRm91
bmRhdGlvbk9iakM6OnJlZ2lzdGVyTWVkaWFFbmdpbmUpOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZG
T2JqQy5tbToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNl
QVZGT2JqQzo6cmVnaXN0ZXJNZWRpYUVuZ2luZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpD
Lm1tOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZP
YmpDOjpyZWdpc3Rlck1lZGlhRW5naW5lKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9n
c3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6cmVnaXN0ZXJNZWRpYUVuZ2luZSk6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL21zZS9NZWRpYVBsYXllclByaXZh
dGVHU3RyZWFtZXJNU0UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRl
R1N0cmVhbWVyTVNFOjpyZWdpc3Rlck1lZGlhRW5naW5lKToKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9ob2xlcHVuY2gvTWVkaWFQbGF5ZXJQcml2YXRlSG9sZVB1bmNoLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUhvbGVQdW5jaDo6cmVnaXN0ZXJNZWRpYUVu
Z2luZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL01lZGlhUGxheWVyUHJpdmF0
ZU1lZGlhRm91bmRhdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZh
dGVNZWRpYUZvdW5kYXRpb246OnJlZ2lzdGVyTWVkaWFFbmdpbmUpOgorICAgICAgICAqIHBsYXRm
b3JtL21vY2svbWVkaWFzb3VyY2UvTW9ja01lZGlhUGxheWVyTWVkaWFTb3VyY2UuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6TW9ja01lZGlhUGxheWVyTWVkaWFTb3VyY2U6OnJlZ2lzdGVyTWVkaWFF
bmdpbmUpOgorCiAyMDE5LTEyLTExICBFcmljIENhcmxzb24gIDxlcmljLmNhcmxzb25AYXBwbGUu
Y29tPgogCiAgICAgICAgIEFkZCBlbmNvZGVycyBmb3IgTWVkaWFQbGF5ZXJFbnVtIGVudW1zCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdl
TG9nCmluZGV4IDc1M2ZkODg3YmFlMDM4MjVmM2ZlYmM0NjAxNTM5Yzg1ODQyNTQ0MjMuLjMyZWI1
NjI1NDUyYmU5NWIzMWI0MTlhMGFlMzk0N2M3NjNlNGYwZmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEs
MTg3IEBACisyMDE5LTEyLTEwICBFcmljIENhcmxzb24gIDxlcmljLmNhcmxzb25AYXBwbGUuY29t
PgorCisgICAgICAgIEFkZCBpbmZyYXN0cnVjdHVyZSBuZWVkZWQgZm9yIHBsYXlpbmcgbWVkaWEg
cGxheWVyIGluIHRoZSBHUFUgcHJvY2VzcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MjA1MDk0CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS81NzgxNTM5
Mz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIERl
cml2ZWRTb3VyY2VzLWlucHV0LnhjZmlsZWxpc3Q6CisgICAgICAgICogRGVyaXZlZFNvdXJjZXMt
b3V0cHV0LnhjZmlsZWxpc3Q6CisgICAgICAgICogRGVyaXZlZFNvdXJjZXMubWFrZToKKyAgICAg
ICAgKiBHUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwOgorICAgICAgICAo
V2ViS2l0OjpHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpHUFVDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzKToKKyAgICAgICAgKFdlYktpdDo6R1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6fkdQVUNv
bm5lY3Rpb25Ub1dlYlByb2Nlc3MpOgorICAgICAgICAoV2ViS2l0OjpHUFVDb25uZWN0aW9uVG9X
ZWJQcm9jZXNzOjpkaWRSZWNlaXZlTWVzc2FnZSk6CisgICAgICAgIChXZWJLaXQ6OkdQVUNvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3M6OmRpZFJlY2VpdmVTeW5jTWVzc2FnZSk6CisgICAgICAgICogR1BV
UHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmg6CisgICAgICAgICogR1BVUHJvY2Vz
cy9tZWRpYS9SZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eS5jcHA6IEFkZGVkLgorICAgICAg
ICAoV2ViS2l0OjpudWxsTG9nZ2VyKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTWVkaWFQbGF5
ZXJNYW5hZ2VyUHJveHk6OlBsYXllclByb3h5OjpQbGF5ZXJQcm94eSk6CisgICAgICAgIChXZWJL
aXQ6OlJlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5OjpQbGF5ZXJQcm94eTo6flBsYXllclBy
b3h5KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHk6OlJl
bW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTWVk
aWFQbGF5ZXJNYW5hZ2VyUHJveHk6On5SZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eSk6Cisg
ICAgICAgIChXZWJLaXQ6OlJlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5OjpjcmVhdGVNZWRp
YVBsYXllcik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5
OjpnZXRTdXBwb3J0ZWRUeXBlcyk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZU1lZGlhUGxheWVy
TWFuYWdlclByb3h5OjpzdXBwb3J0c1R5cGUpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVNZWRp
YVBsYXllck1hbmFnZXJQcm94eTo6b3JpZ2luc0luTWVkaWFDYWNoZSk6CisgICAgICAgIChXZWJL
aXQ6OlJlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5OjpjbGVhck1lZGlhQ2FjaGUpOgorICAg
ICAgICAoV2ViS2l0OjpSZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eTo6Y2xlYXJNZWRpYUNh
Y2hlRm9yT3JpZ2lucyk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZU1lZGlhUGxheWVyTWFuYWdl
clByb3h5OjpzdXBwb3J0c0tleVN5c3RlbSk6CisgICAgICAgICogR1BVUHJvY2Vzcy9tZWRpYS9S
ZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eS5oOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6
UmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHk6OndlYlByb2Nlc3NDb25uZWN0aW9uIGNvbnN0
KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHk6OmRpZFJl
Y2VpdmVNZXNzYWdlRnJvbVdlYlByb2Nlc3MpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVNZWRp
YVBsYXllck1hbmFnZXJQcm94eTo6ZGlkUmVjZWl2ZVN5bmNNZXNzYWdlRnJvbVdlYlByb2Nlc3Mp
OgorICAgICAgICAqIEdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJv
eHkubWVzc2FnZXMuaW46IEFkZGVkLgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0L21lc3NhZ2Vz
LnB5OgorICAgICAgICAqIFNvdXJjZXMudHh0OgorICAgICAgICAqIFNvdXJjZXNDb2NvYS50eHQ6
CisgICAgICAgICogV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICog
V2ViUHJvY2Vzcy9HUFUvbWVkaWEvTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlLmNwcDogQWRkZWQu
CisgICAgICAgIChXZWJLaXQ6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6TWVkaWFQbGF5ZXJQ
cml2YXRlUmVtb3RlKToKKyAgICAgICAgKFdlYktpdDo6TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3Rl
Ojp+TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlKToKKyAgICAgICAgKFdlYktpdDo6TWVkaWFQbGF5
ZXJQcml2YXRlUmVtb3RlOjpNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OmxvYWQpOgorICAgICAg
ICAoV2ViS2l0OjpNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OmxvYWQpOgorICAgICAgICAoV2Vi
S2l0OjpNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OmNhbmNlbExvYWQpOgorICAgICAgICAoV2Vi
S2l0OjpNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OnByZXBhcmVUb1BsYXkpOgorICAgICAgICAo
V2ViS2l0OjpNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OnBsYXRmb3JtTGF5ZXIgY29uc3QpOgor
ICAgICAgICAoV2ViS2l0OjpNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OnNldFZpZGVvRnVsbHNj
cmVlbkxheWVyKToKKyAgICAgICAgKFdlYktpdDo6TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjp1
cGRhdGVWaWRlb0Z1bGxzY3JlZW5JbmxpbmVJbWFnZSk6CisgICAgICAgIChXZWJLaXQ6Ok1lZGlh
UGxheWVyUHJpdmF0ZVJlbW90ZTo6c2V0VmlkZW9GdWxsc2NyZWVuRnJhbWUpOgorICAgICAgICAo
V2ViS2l0OjpNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OnNldFZpZGVvRnVsbHNjcmVlbkdyYXZp
dHkpOgorICAgICAgICAoV2ViS2l0OjpNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OnNldFZpZGVv
RnVsbHNjcmVlbk1vZGUpOgorICAgICAgICAoV2ViS2l0OjpNZWRpYVBsYXllclByaXZhdGVSZW1v
dGU6OnZpZGVvRnVsbHNjcmVlblN0YW5kYnlDaGFuZ2VkKToKKyAgICAgICAgKFdlYktpdDo6TWVk
aWFQbGF5ZXJQcml2YXRlUmVtb3RlOjphY2Nlc3NMb2cgY29uc3QpOgorICAgICAgICAoV2ViS2l0
OjpNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OmVycm9yTG9nIGNvbnN0KToKKyAgICAgICAgKFdl
YktpdDo6TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpwbGF0Zm9ybUVycm9yQ29kZSBjb25zdCk6
CisgICAgICAgIChXZWJLaXQ6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6cGxheSk6CisgICAg
ICAgIChXZWJLaXQ6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6cGF1c2UpOgorICAgICAgICAo
V2ViS2l0OjpNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OnNldEJ1ZmZlcmluZ1BvbGljeSk6Cisg
ICAgICAgIChXZWJLaXQ6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6c3VwcG9ydHNQaWN0dXJl
SW5QaWN0dXJlIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6TWVkaWFQbGF5ZXJQcml2YXRlUmVt
b3RlOjpzdXBwb3J0c0Z1bGxzY3JlZW4gY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpNZWRpYVBs
YXllclByaXZhdGVSZW1vdGU6OnN1cHBvcnRzU2Nhbm5pbmcgY29uc3QpOgorICAgICAgICAoV2Vi
S2l0OjpNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OnJlcXVpcmVzSW1tZWRpYXRlQ29tcG9zaXRp
bmcgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OmNh
blNhdmVNZWRpYURhdGEgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpNZWRpYVBsYXllclByaXZh
dGVSZW1vdGU6Om5hdHVyYWxTaXplIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6TWVkaWFQbGF5
ZXJQcml2YXRlUmVtb3RlOjpoYXNWaWRlbyBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6Ok1lZGlh
UGxheWVyUHJpdmF0ZVJlbW90ZTo6aGFzQXVkaW8gY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpN
ZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OnNldFZpc2libGUpOgorICAgICAgICAoV2ViS2l0OjpN
ZWRpYVBsYXllclByaXZhdGVSZW1vdGU6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6ZHVyYXRp
b25NZWRpYVRpbWUgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpNZWRpYVBsYXllclByaXZhdGVS
ZW1vdGU6OmN1cnJlbnRNZWRpYVRpbWUgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpNZWRpYVBs
YXllclByaXZhdGVSZW1vdGU6OmdldFN0YXJ0RGF0ZSBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6
Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6c2Vlayk6CisgICAgICAgIChXZWJLaXQ6Ok1lZGlh
UGxheWVyUHJpdmF0ZVJlbW90ZTo6c2Vla1dpdGhUb2xlcmFuY2UpOgorICAgICAgICAoV2ViS2l0
OjpNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OnNlZWtpbmcgY29uc3QpOgorICAgICAgICAoV2Vi
S2l0OjpNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OnN0YXJ0VGltZSBjb25zdCk6CisgICAgICAg
IChXZWJLaXQ6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6c2V0UmF0ZURvdWJsZSk6CisgICAg
ICAgIChXZWJLaXQ6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6cmF0ZSBjb25zdCk6CisgICAg
ICAgIChXZWJLaXQ6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6c2V0UHJlc2VydmVzUGl0Y2gp
OgorICAgICAgICAoV2ViS2l0OjpNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OnBhdXNlZCBjb25z
dCk6CisgICAgICAgIChXZWJLaXQ6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6c2V0Vm9sdW1l
RG91YmxlKToKKyAgICAgICAgKFdlYktpdDo6TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpzZXRN
dXRlZCk6CisgICAgICAgIChXZWJLaXQ6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6aGFzQ2xv
c2VkQ2FwdGlvbnMgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpNZWRpYVBsYXllclByaXZhdGVS
ZW1vdGU6OnNldENsb3NlZENhcHRpb25zVmlzaWJsZSk6CisgICAgICAgIChXZWJLaXQ6Ok1lZGlh
UGxheWVyUHJpdmF0ZVJlbW90ZTo6bWF4RmFzdEZvcndhcmRSYXRlIGNvbnN0KToKKyAgICAgICAg
KFdlYktpdDo6TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjptaW5GYXN0UmV2ZXJzZVJhdGUgY29u
c3QpOgorICAgICAgICAoV2ViS2l0OjpNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6Om5ldHdvcmtT
dGF0ZSBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6
cmVhZHlTdGF0ZSBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6Ok1lZGlhUGxheWVyUHJpdmF0ZVJl
bW90ZTo6c2Vla2FibGUgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpNZWRpYVBsYXllclByaXZh
dGVSZW1vdGU6OmJ1ZmZlcmVkIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6TWVkaWFQbGF5ZXJQ
cml2YXRlUmVtb3RlOjptYXhNZWRpYVRpbWVTZWVrYWJsZSBjb25zdCk6CisgICAgICAgIChXZWJL
aXQ6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6bWluTWVkaWFUaW1lU2Vla2FibGUgY29uc3Qp
OgorICAgICAgICAoV2ViS2l0OjpNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OnNlZWthYmxlVGlt
ZVJhbmdlc0xhc3RNb2RpZmllZFRpbWUgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpNZWRpYVBs
YXllclByaXZhdGVSZW1vdGU6OmxpdmVVcGRhdGVJbnRlcnZhbCBjb25zdCk6CisgICAgICAgIChX
ZWJLaXQ6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6dG90YWxCeXRlcyBjb25zdCk6CisgICAg
ICAgIChXZWJLaXQ6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6ZGlkTG9hZGluZ1Byb2dyZXNz
IGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpzZXRT
aXplKToKKyAgICAgICAgKFdlYktpdDo6TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpwYWludCk6
CisgICAgICAgIChXZWJLaXQ6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6cGFpbnRDdXJyZW50
RnJhbWVJbkNvbnRleHQpOgorICAgICAgICAoV2ViS2l0OjpNZWRpYVBsYXllclByaXZhdGVSZW1v
dGU6OmNvcHlWaWRlb1RleHR1cmVUb1BsYXRmb3JtVGV4dHVyZSk6CisgICAgICAgIChXZWJLaXQ6
Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6bmF0aXZlSW1hZ2VGb3JDdXJyZW50VGltZSk6Cisg
ICAgICAgIChXZWJLaXQ6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6c2V0UHJlbG9hZCk6Cisg
ICAgICAgIChXZWJLaXQ6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6aGFzQXZhaWxhYmxlVmlk
ZW9GcmFtZSBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90
ZTo6Y2FuTG9hZFBvc3RlciBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6Ok1lZGlhUGxheWVyUHJp
dmF0ZVJlbW90ZTo6c2V0UG9zdGVyKToKKyAgICAgICAgKFdlYktpdDo6TWVkaWFQbGF5ZXJQcml2
YXRlUmVtb3RlOjplbnRlckZ1bGxzY3JlZW4pOgorICAgICAgICAoV2ViS2l0OjpNZWRpYVBsYXll
clByaXZhdGVSZW1vdGU6OmV4aXRGdWxsc2NyZWVuKToKKyAgICAgICAgKFdlYktpdDo6TWVkaWFQ
bGF5ZXJQcml2YXRlUmVtb3RlOjp3aXJlbGVzc1BsYXliYWNrVGFyZ2V0TmFtZSBjb25zdCk6Cisg
ICAgICAgIChXZWJLaXQ6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6d2lyZWxlc3NQbGF5YmFj
a1RhcmdldFR5cGUgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpNZWRpYVBsYXllclByaXZhdGVS
ZW1vdGU6OndpcmVsZXNzVmlkZW9QbGF5YmFja0Rpc2FibGVkIGNvbnN0KToKKyAgICAgICAgKFdl
YktpdDo6TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpzZXRXaXJlbGVzc1ZpZGVvUGxheWJhY2tE
aXNhYmxlZCk6CisgICAgICAgIChXZWJLaXQ6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6Y2Fu
UGxheVRvV2lyZWxlc3NQbGF5YmFja1RhcmdldCBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6Ok1l
ZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6aXNDdXJyZW50UGxheWJhY2tUYXJnZXRXaXJlbGVzcyBj
b25zdCk6CisgICAgICAgIChXZWJLaXQ6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6c2V0V2ly
ZWxlc3NQbGF5YmFja1RhcmdldCk6CisgICAgICAgIChXZWJLaXQ6Ok1lZGlhUGxheWVyUHJpdmF0
ZVJlbW90ZTo6c2V0U2hvdWxkUGxheVRvUGxheWJhY2tUYXJnZXQpOgorICAgICAgICAoV2ViS2l0
OjpNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OmNhbkVudGVyRnVsbHNjcmVlbiBjb25zdCk6Cisg
ICAgICAgIChXZWJLaXQ6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6c3VwcG9ydHNBY2NlbGVy
YXRlZFJlbmRlcmluZyBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6Ok1lZGlhUGxheWVyUHJpdmF0
ZVJlbW90ZTo6YWNjZWxlcmF0ZWRSZW5kZXJpbmdTdGF0ZUNoYW5nZWQpOgorICAgICAgICAoV2Vi
S2l0OjpNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OnNob3VsZE1haW50YWluQXNwZWN0UmF0aW8g
Y29uc3QpOgorICAgICAgICAoV2ViS2l0OjpNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OnNldFNo
b3VsZE1haW50YWluQXNwZWN0UmF0aW8pOgorICAgICAgICAoV2ViS2l0OjpNZWRpYVBsYXllclBy
aXZhdGVSZW1vdGU6Omhhc1NpbmdsZVNlY3VyaXR5T3JpZ2luIGNvbnN0KToKKyAgICAgICAgKFdl
YktpdDo6TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpkaWRQYXNzQ09SU0FjY2Vzc0NoZWNrIGNv
bnN0KToKKyAgICAgICAgKFdlYktpdDo6TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjp3b3VsZFRh
aW50T3JpZ2luIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6TWVkaWFQbGF5ZXJQcml2YXRlUmVt
b3RlOjptb3ZpZUxvYWRUeXBlIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6TWVkaWFQbGF5ZXJQ
cml2YXRlUmVtb3RlOjpwcmVwYXJlRm9yUmVuZGVyaW5nKToKKyAgICAgICAgKFdlYktpdDo6TWVk
aWFQbGF5ZXJQcml2YXRlUmVtb3RlOjptZWRpYVRpbWVGb3JUaW1lVmFsdWUgY29uc3QpOgorICAg
ICAgICAoV2ViS2l0OjpNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6Om1heGltdW1EdXJhdGlvblRv
Q2FjaGVNZWRpYVRpbWUgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpNZWRpYVBsYXllclByaXZh
dGVSZW1vdGU6OmRlY29kZWRGcmFtZUNvdW50IGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6TWVk
aWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpkcm9wcGVkRnJhbWVDb3VudCBjb25zdCk6CisgICAgICAg
IChXZWJLaXQ6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6YXVkaW9EZWNvZGVkQnl0ZUNvdW50
IGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjp2aWRl
b0RlY29kZWRCeXRlQ291bnQgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpNZWRpYVBsYXllclBy
aXZhdGVSZW1vdGU6OnNldFByaXZhdGVCcm93c2luZ01vZGUpOgorICAgICAgICAoV2ViS2l0OjpN
ZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OmVuZ2luZURlc2NyaXB0aW9uIGNvbnN0KToKKyAgICAg
ICAgKFdlYktpdDo6TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjphdWRpb1NvdXJjZVByb3ZpZGVy
KToKKyAgICAgICAgKFdlYktpdDo6TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpjcmVhdGVTZXNz
aW9uKToKKyAgICAgICAgKFdlYktpdDo6TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpzZXRDRE1T
ZXNzaW9uKToKKyAgICAgICAgKFdlYktpdDo6TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjprZXlB
ZGRlZCk6CisgICAgICAgIChXZWJLaXQ6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6Y2RtSW5z
dGFuY2VBdHRhY2hlZCk6CisgICAgICAgIChXZWJLaXQ6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90
ZTo6Y2RtSW5zdGFuY2VEZXRhY2hlZCk6CisgICAgICAgIChXZWJLaXQ6Ok1lZGlhUGxheWVyUHJp
dmF0ZVJlbW90ZTo6YXR0ZW1wdFRvRGVjcnlwdFdpdGhJbnN0YW5jZSk6CisgICAgICAgIChXZWJL
aXQ6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6d2FpdGluZ0ZvcktleSBjb25zdCk6CisgICAg
ICAgIChXZWJLaXQ6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6cmVxdWlyZXNUZXh0VHJhY2tS
ZXByZXNlbnRhdGlvbiBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6Ok1lZGlhUGxheWVyUHJpdmF0
ZVJlbW90ZTo6c2V0VGV4dFRyYWNrUmVwcmVzZW50YXRpb24pOgorICAgICAgICAoV2ViS2l0OjpN
ZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OnN5bmNUZXh0VHJhY2tCb3VuZHMpOgorICAgICAgICAo
V2ViS2l0OjpNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OnRyYWNrc0NoYW5nZWQpOgorICAgICAg
ICAoV2ViS2l0OjpNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OnNpbXVsYXRlQXVkaW9JbnRlcnJ1
cHRpb24pOgorICAgICAgICAoV2ViS2l0OjpNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OmJlZ2lu
U2ltdWxhdGVkSERDUEVycm9yKToKKyAgICAgICAgKFdlYktpdDo6TWVkaWFQbGF5ZXJQcml2YXRl
UmVtb3RlOjplbmRTaW11bGF0ZWRIRENQRXJyb3IpOgorICAgICAgICAoV2ViS2l0OjpNZWRpYVBs
YXllclByaXZhdGVSZW1vdGU6Omxhbmd1YWdlT2ZQcmltYXJ5QXVkaW9UcmFjayBjb25zdCk6Cisg
ICAgICAgIChXZWJLaXQ6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6ZXh0cmFNZW1vcnlDb3N0
IGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpmaWxl
U2l6ZSBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6
ZW5kZWQgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6
OnZpZGVvUGxheWJhY2tRdWFsaXR5TWV0cmljcyk6CisgICAgICAgIChXZWJLaXQ6Ok1lZGlhUGxh
eWVyUHJpdmF0ZVJlbW90ZTo6bm90aWZ5VHJhY2tNb2RlQ2hhbmdlZCk6CisgICAgICAgIChXZWJL
aXQ6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6bm90aWZ5QWN0aXZlU291cmNlQnVmZmVyc0No
YW5nZWQpOgorICAgICAgICAoV2ViS2l0OjpNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OnNldFNo
b3VsZERpc2FibGVTbGVlcCk6CisgICAgICAgIChXZWJLaXQ6Ok1lZGlhUGxheWVyUHJpdmF0ZVJl
bW90ZTo6YXBwbGljYXRpb25XaWxsUmVzaWduQWN0aXZlKToKKyAgICAgICAgKFdlYktpdDo6TWVk
aWFQbGF5ZXJQcml2YXRlUmVtb3RlOjphcHBsaWNhdGlvbkRpZEJlY29tZUFjdGl2ZSk6CisgICAg
ICAgIChXZWJLaXQ6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6cGVyZm9ybVRhc2tBdE1lZGlh
VGltZSk6CisgICAgICAgIChXZWJLaXQ6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6c2hvdWxk
SWdub3JlSW50cmluc2ljU2l6ZSk6CisgICAgICAgIChXZWJLaXQ6Ok1lZGlhUGxheWVyUHJpdmF0
ZVJlbW90ZTo6bG9nQ2hhbm5lbCBjb25zdCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvbWVk
aWEvTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlLmg6IEFkZGVkLgorICAgICAgICAqIFdlYlByb2Nl
c3MvR1BVL21lZGlhL01lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZUlkZW50aWZpZXIuaDogQWRkZWQu
CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2Vy
LmNwcDogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6Ok1lZGlhUGxheWVyUmVtb3RlRmFjdG9yeTo6
TWVkaWFQbGF5ZXJSZW1vdGVGYWN0b3J5KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTWVkaWFQ
bGF5ZXJNYW5hZ2VyOjpSZW1vdGVNZWRpYVBsYXllck1hbmFnZXIpOgorICAgICAgICAoV2ViS2l0
OjpSZW1vdGVNZWRpYVBsYXllck1hbmFnZXI6On5SZW1vdGVNZWRpYVBsYXllck1hbmFnZXIpOgor
ICAgICAgICAoV2ViS2l0OjpSZW1vdGVNZWRpYVBsYXllck1hbmFnZXI6OnN1cHBsZW1lbnROYW1l
KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyOjppbml0aWFsaXpl
KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyOjpjcmVhdGVSZW1v
dGVNZWRpYVBsYXllcik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZU1lZGlhUGxheWVyTWFuYWdl
cjo6Z2V0U3VwcG9ydGVkVHlwZXMpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVNZWRpYVBsYXll
ck1hbmFnZXI6OnN1cHBvcnRzVHlwZUFuZENvZGVjcyk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90
ZU1lZGlhUGxheWVyTWFuYWdlcjo6c3VwcG9ydHNLZXlTeXN0ZW0pOgorICAgICAgICAoV2ViS2l0
OjpSZW1vdGVNZWRpYVBsYXllck1hbmFnZXI6Om9yaWdpbnNJbk1lZGlhQ2FjaGUpOgorICAgICAg
ICAoV2ViS2l0OjpSZW1vdGVNZWRpYVBsYXllck1hbmFnZXI6OmNsZWFyTWVkaWFDYWNoZSk6Cisg
ICAgICAgIChXZWJLaXQ6OlJlbW90ZU1lZGlhUGxheWVyTWFuYWdlcjo6Y2xlYXJNZWRpYUNhY2hl
Rm9yT3JpZ2lucyk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZU1lZGlhUGxheWVyTWFuYWdlcjo6
bmV0d29ya1N0YXRlQ2hhbmdlZCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZU1lZGlhUGxheWVy
TWFuYWdlcjo6dXBkYXRlUHJlZmVyZW5jZXMpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVNZWRp
YVBsYXllck1hbmFnZXI6OmdwdVByb2Nlc3NDb25uZWN0aW9uIGNvbnN0KToKKyAgICAgICAgKiBX
ZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVNZWRpYVBsYXllck1hbmFnZXIuaDogQWRkZWQuCisg
ICAgICAgICogV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyLm1l
c3NhZ2VzLmluOiBBZGRlZC4KKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5j
cHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnVwZGF0ZVByZWZlcmVuY2VzKToKKyAgICAg
ICAgKiBXZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwOgorCiAyMDE5LTEyLTExICBUcnVpdHQgU2F2
ZWxsICA8dHNhdmVsbEBhcHBsZS5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgcm9sbGluZyBv
dXQgcjI1MzM3Ni4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvagppbmRleCAwM2U2ZjU0MzNiZjZmNjdlYmM1ZjQ5ZmVkMGE5NTAxMmQ0YmU0YmY5
Li5iZjI4MWFmZTUxN2I5ZWE2YzRjOWNlNmJkZWMxZTE4NDcwYmY4NGNkIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291
cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xMDQsNiAr
MTA0LDcgQEAKIAkJMDcxRTQ5NkUxQUQ1QUEwRDAwOEE1MEI0IC8qIE1lZGlhUGxheWJhY2tUYXJn
ZXRNYWMubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAw
NzFFNDk2RDFBRDVBQTBEMDA4QTUwQjQgLyogTWVkaWFQbGF5YmFja1RhcmdldE1hYy5tbSAqLzsg
fTsKIAkJMDcxRTQ5NzAxQUQ1QUI1RTAwOEE1MEI0IC8qIE1lZGlhUGxheWJhY2tUYXJnZXRNYWMu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3MUU0OTZG
MUFENUFCNUUwMDhBNTBCNCAvKiBNZWRpYVBsYXliYWNrVGFyZ2V0TWFjLmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMDcyMEIwQTExNEQzMzIzNTAw
NjQyOTU1IC8qIEdlbmVyaWNFdmVudFF1ZXVlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSAwNzIwQjA5RjE0RDMzMjM1MDA2NDI5NTUgLyogR2VuZXJpY0V2
ZW50UXVldWUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OworCQkwNzI1RUZBOTIzOUFENzkzMDBBNTM4QTkgLyogTWVkaWFQbGF5ZXJQcml2YXRlLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwNzlGNUU0QjBGM0JF
QkVBMDA1RTA3ODIgLyogTWVkaWFQbGF5ZXJQcml2YXRlLmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMDcyNzdFNEQxN0QwMThDQzAwMTU1MzREIC8q
IEpTTWVkaWFTdHJlYW0uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDA3Mjc3RTQxMTdEMDE4Q0MwMDE1NTM0RCAvKiBKU01lZGlhU3RyZWFtLmggKi87IH07
CiAJCTA3Mjc3RTREMTdEMDE4Q0MwMDE1NTM0RSAvKiBKU0NhbnZhc0NhcHR1cmVNZWRpYVN0cmVh
bVRyYWNrLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAw
NzI3N0U0MTE3RDAxOENDMDAxNTUzNEUgLyogSlNDYW52YXNDYXB0dXJlTWVkaWFTdHJlYW1UcmFj
ay5oICovOyB9OwogCQkwNzI3N0U0RjE3RDAxOENDMDAxNTUzNEQgLyogSlNNZWRpYVN0cmVhbUF1
ZGlvRGVzdGluYXRpb25Ob2RlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSAwNzI3N0U0MzE3RDAxOENDMDAxNTUzNEQgLyogSlNNZWRpYVN0cmVhbUF1ZGlv
RGVzdGluYXRpb25Ob2RlLmggKi87IH07CkBAIC0zMTM3OSw2ICszMTM4MCw3IEBACiAJCQkJMDc3
QjY0MTMxQjk0RjEyRTAwM0U5QUQ1IC8qIE1lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJNb2NrLmgg
aW4gSGVhZGVycyAqLywKIAkJCQlFNDQ2MTNFNDBDRDY4MUEyMDBGQURBNzUgLyogTWVkaWFQbGF5
ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUNENTIwOUU0MUIwQkQ4MzgwMDc3MTg0RSAvKiBNZWRp
YVBsYXllckVudW1zLmggaW4gSGVhZGVycyAqLywKKwkJCQkwNzI1RUZBOTIzOUFENzkzMDBBNTM4
QTkgLyogTWVkaWFQbGF5ZXJQcml2YXRlLmggaW4gSGVhZGVycyAqLywKIAkJCQkwNzZGMEQwRTEy
QjgxOTI3MDBDMjZBQTQgLyogTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uLmggaW4gSGVh
ZGVycyAqLywKIAkJCQlERjlBRkQ3MjEzRkMzMUQ4MDAxNUZFQjcgLyogTWVkaWFQbGF5ZXJQcml2
YXRlQVZGb3VuZGF0aW9uT2JqQy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQ0RDOEI1QTMxODA0NjM0
NzAwMTZFNjg1IC8qIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQy5oIGluIEhl
YWRlcnMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Db250ZW50VHlw
ZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vQ29udGVudFR5cGUuaAppbmRleCBjODJiNWI3
MTk3YzllMTVkMWUyZjU0N2ZkNTY0MWZjNWY0ZWM1ZWNmLi41ODVhM2ZkNWE3ZWZkMWFiMzQ4ZDE0
ZjFmZjIxZTkwOWU2NjZjMjQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9D
b250ZW50VHlwZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0NvbnRlbnRUeXBlLmgK
QEAgLTMzLDggKzMzLDggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBDb250ZW50VHlw
ZSB7CiBwdWJsaWM6Ci0gICAgZXhwbGljaXQgQ29udGVudFR5cGUoU3RyaW5nJiYgdHlwZSk7Ci0g
ICAgZXhwbGljaXQgQ29udGVudFR5cGUoY29uc3QgU3RyaW5nJiB0eXBlKTsKKyAgICBXRUJDT1JF
X0VYUE9SVCBleHBsaWNpdCBDb250ZW50VHlwZShTdHJpbmcmJiB0eXBlKTsKKyAgICBXRUJDT1JF
X0VYUE9SVCBleHBsaWNpdCBDb250ZW50VHlwZShjb25zdCBTdHJpbmcmIHR5cGUpOwogICAgIENv
bnRlbnRUeXBlKCkgPSBkZWZhdWx0OwogCiAgICAgc3RhdGljIGNvbnN0IFN0cmluZyYgY29kZWNz
UGFyYW1ldGVyKCk7CkBAIC00OSw2ICs0OSwyMyBAQCBwdWJsaWM6CiAKICAgICBTdHJpbmcgdG9K
U09OU3RyaW5nKCkgY29uc3Q7CiAKKyAgICB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPgorICAgIHZv
aWQgZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0CisgICAgeworICAgICAgICBlbmNvZGVy
IDw8IG1fdHlwZTsKKyAgICB9CisKKyAgICB0ZW1wbGF0ZSA8Y2xhc3MgRGVjb2Rlcj4KKyAgICBz
dGF0aWMgT3B0aW9uYWw8Q29udGVudFR5cGU+IGRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQorICAg
IHsKKyAgICAgICAgT3B0aW9uYWw8U3RyaW5nPiB0eXBlOworICAgICAgICBkZWNvZGVyID4+IHR5
cGU7CisgICAgICAgIGlmICghdHlwZSkKKyAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7
CisKKyAgICAgICAgcmV0dXJuIHsgQ29udGVudFR5cGUoV1RGTW92ZSgqdHlwZSkpIH07CisgICAg
fQorCiBwcml2YXRlOgogICAgIFN0cmluZyBtX3R5cGU7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuY3BwCmluZGV4IGNlMjNhYjc4NGJjNmMy
YTE1ZmI4OTFkODE1Nzk1OWYxYzE2NGI1NGEuLmU4OTIxZDUxZjU3OGI5M2ZjZTBmM2U0Y2RiZDIx
ODJkNjQ0OWUwMDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L01lZGlhUGxheWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9N
ZWRpYVBsYXllci5jcHAKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA3
LTIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAy
MDA3LTIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCkBAIC05MCwxNCArOTAsNiBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKLSNpZiAhUkVMRUFTRV9MT0dfRElTQUJMRUQKLXN0YXRpYyBSZWZQdHI8TG9nZ2VyPiYgbnVs
bExvZ2dlcigpCi17Ci0gICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFJlZlB0cjxMb2dnZXI+PiBs
b2dnZXI7Ci0gICAgcmV0dXJuIGxvZ2dlcjsKLX0KLSNlbmRpZgotCiAvLyBhIG51bGwgcGxheWVy
IHRvIG1ha2UgTWVkaWFQbGF5ZXIgbG9naWMgc2ltcGxlcgogCiBjbGFzcyBOdWxsTWVkaWFQbGF5
ZXJQcml2YXRlIGZpbmFsIDogcHVibGljIE1lZGlhUGxheWVyUHJpdmF0ZUludGVyZmFjZSB7CkBA
IC0xNjYsOCArMTU4LDIyIEBAIHB1YmxpYzoKICAgICBib29sIGhhc1NpbmdsZVNlY3VyaXR5T3Jp
Z2luKCkgY29uc3QgZmluYWwgeyByZXR1cm4gdHJ1ZTsgfQogfTsKIAorI2lmICFSRUxFQVNFX0xP
R19ESVNBQkxFRAorc3RhdGljIFJlZlB0cjxMb2dnZXI+JiBudWxsTG9nZ2VyKCkKK3sKKyAgICBz
dGF0aWMgTmV2ZXJEZXN0cm95ZWQ8UmVmUHRyPExvZ2dlcj4+IGxvZ2dlcjsKKyAgICByZXR1cm4g
bG9nZ2VyOworfQorI2VuZGlmCisKK3N0YXRpYyBjb25zdCBWZWN0b3I8V2ViQ29yZTo6Q29udGVu
dFR5cGU+JiBudWxsQ29udGVudFR5cGVWZWN0b3IoKQoreworICAgIHN0YXRpYyBOZXZlckRlc3Ry
b3llZDxWZWN0b3I8V2ViQ29yZTo6Q29udGVudFR5cGU+PiB2ZWN0b3I7CisgICAgcmV0dXJuIHZl
Y3RvcjsKK30KKwogY2xhc3MgTnVsbE1lZGlhUGxheWVyQ2xpZW50IDogcHVibGljIE1lZGlhUGxh
eWVyQ2xpZW50IHsKLXB1YmxpYzoKK3ByaXZhdGU6CiAjaWYgIVJFTEVBU0VfTE9HX0RJU0FCTEVE
CiAgICAgY29uc3QgTG9nZ2VyJiBtZWRpYVBsYXllckxvZ2dlcigpIGZpbmFsCiAgICAgewpAQCAt
MTc5LDggKzE4NSwxMSBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiAqbnVsbExvZ2dlcigpLmdl
dCgpOwogICAgIH0KICNlbmRpZgorCisgICAgY29uc3QgVmVjdG9yPFdlYkNvcmU6OkNvbnRlbnRU
eXBlPiYgbWVkaWFDb250ZW50VHlwZXNSZXF1aXJpbmdIYXJkd2FyZVN1cHBvcnQoKSBjb25zdCBm
aW5hbCB7IHJldHVybiBudWxsQ29udGVudFR5cGVWZWN0b3IoKTsgfQogfTsKIAorCiBjb25zdCBW
ZWN0b3I8Q29udGVudFR5cGU+JiBNZWRpYVBsYXllckNsaWVudDo6bWVkaWFDb250ZW50VHlwZXNS
ZXF1aXJpbmdIYXJkd2FyZVN1cHBvcnQoKSBjb25zdAogewogICAgIHN0YXRpYyBOZXZlckRlc3Ry
b3llZDxWZWN0b3I8Q29udGVudFR5cGU+PiBjb250ZW50VHlwZXM7CkBAIC0xOTUsMTcgKzIwNCw3
IEBAIHN0YXRpYyBNZWRpYVBsYXllckNsaWVudCYgbnVsbE1lZGlhUGxheWVyQ2xpZW50KCkKIAog
Ly8gZW5naW5lIHN1cHBvcnQKIAotc3RydWN0IE1lZGlhUGxheWVyRmFjdG9yeSB7Ci0gICAgQ3Jl
YXRlTWVkaWFFbmdpbmVQbGF5ZXIgY29uc3RydWN0b3I7Ci0gICAgTWVkaWFFbmdpbmVTdXBwb3J0
ZWRUeXBlcyBnZXRTdXBwb3J0ZWRUeXBlczsKLSAgICBNZWRpYUVuZ2luZVN1cHBvcnRzVHlwZSBz
dXBwb3J0c1R5cGVBbmRDb2RlY3M7Ci0gICAgTWVkaWFFbmdpbmVPcmlnaW5zSW5NZWRpYUNhY2hl
IG9yaWdpbnNJbk1lZGlhQ2FjaGU7Ci0gICAgTWVkaWFFbmdpbmVDbGVhck1lZGlhQ2FjaGUgY2xl
YXJNZWRpYUNhY2hlOwotICAgIE1lZGlhRW5naW5lQ2xlYXJNZWRpYUNhY2hlRm9yT3JpZ2lucyBj
bGVhck1lZGlhQ2FjaGVGb3JPcmlnaW5zOwotICAgIE1lZGlhRW5naW5lU3VwcG9ydHNLZXlTeXN0
ZW0gc3VwcG9ydHNLZXlTeXN0ZW07Ci19OwotCi1zdGF0aWMgdm9pZCBhZGRNZWRpYUVuZ2luZShD
cmVhdGVNZWRpYUVuZ2luZVBsYXllciYmLCBNZWRpYUVuZ2luZVN1cHBvcnRlZFR5cGVzLCBNZWRp
YUVuZ2luZVN1cHBvcnRzVHlwZSwgTWVkaWFFbmdpbmVPcmlnaW5zSW5NZWRpYUNhY2hlLCBNZWRp
YUVuZ2luZUNsZWFyTWVkaWFDYWNoZSwgTWVkaWFFbmdpbmVDbGVhck1lZGlhQ2FjaGVGb3JPcmln
aW5zLCBNZWRpYUVuZ2luZVN1cHBvcnRzS2V5U3lzdGVtKTsKK3N0YXRpYyB2b2lkIGFkZE1lZGlh
RW5naW5lKHN0ZDo6dW5pcXVlX3B0cjxNZWRpYVBsYXllckZhY3Rvcnk+KTsKIAogc3RhdGljIExv
Y2sgbWVkaWFFbmdpbmVWZWN0b3JMb2NrOwogCkBAIC0yMTUsMjEgKzIxNCwzNyBAQCBzdGF0aWMg
Ym9vbCYgaGF2ZU1lZGlhRW5naW5lc1ZlY3RvcigpCiAgICAgcmV0dXJuIGhhdmVWZWN0b3I7CiB9
CiAKLXN0YXRpYyBWZWN0b3I8TWVkaWFQbGF5ZXJGYWN0b3J5PiYgbXV0YWJsZUluc3RhbGxlZE1l
ZGlhRW5naW5lc1ZlY3RvcigpCitzdGF0aWMgVmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxNZWRpYVBs
YXllckZhY3Rvcnk+PiYgbXV0YWJsZUluc3RhbGxlZE1lZGlhRW5naW5lc1ZlY3RvcigpCiB7Ci0g
ICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFZlY3RvcjxNZWRpYVBsYXllckZhY3Rvcnk+PiBpbnN0
YWxsZWRFbmdpbmVzOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxWZWN0b3I8c3RkOjp1bmlx
dWVfcHRyPE1lZGlhUGxheWVyRmFjdG9yeT4+PiBpbnN0YWxsZWRFbmdpbmVzOwogICAgIHJldHVy
biBpbnN0YWxsZWRFbmdpbmVzOwogfQogCitzdGF0aWMgUmVtb3RlTWVkaWFQbGF5ZXJTdXBwb3J0
OjpSZWdpc3RlclJlbW90ZVBsYXllckNhbGxiYWNrJiByZWdpc3RlclJlbW90ZVBsYXllckNhbGxi
YWNrKCkKK3sKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8UmVtb3RlTWVkaWFQbGF5ZXJTdXBw
b3J0OjpSZWdpc3RlclJlbW90ZVBsYXllckNhbGxiYWNrPiBjYWxsYmFjazsKKyAgICByZXR1cm4g
Y2FsbGJhY2s7Cit9CisKK3ZvaWQgUmVtb3RlTWVkaWFQbGF5ZXJTdXBwb3J0OjpzZXRSZWdpc3Rl
clJlbW90ZVBsYXllckNhbGxiYWNrKFJlZ2lzdGVyUmVtb3RlUGxheWVyQ2FsbGJhY2smJiBjYWxs
YmFjaykKK3sKKyAgICByZWdpc3RlclJlbW90ZVBsYXllckNhbGxiYWNrKCkgPSBXVEZNb3ZlKGNh
bGxiYWNrKTsKK30KKwogc3RhdGljIHZvaWQgYnVpbGRNZWRpYUVuZ2luZXNWZWN0b3IoKQogewog
ICAgIEFTU0VSVChtZWRpYUVuZ2luZVZlY3RvckxvY2suaXNMb2NrZWQoKSk7CiAKICNpZiBVU0Uo
QVZGT1VOREFUSU9OKQorICAgIGF1dG8mIHJlZ2lzdGVyUmVtb3RlRW5naW5lID0gcmVnaXN0ZXJS
ZW1vdGVQbGF5ZXJDYWxsYmFjaygpOworCiAgICAgaWYgKERlcHJlY2F0ZWRHbG9iYWxTZXR0aW5n
czo6aXNBVkZvdW5kYXRpb25FbmFibGVkKCkpIHsKIAogI2lmIFBMQVRGT1JNKENPQ09BKQotICAg
ICAgICBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpyZWdpc3Rlck1lZGlhRW5n
aW5lKGFkZE1lZGlhRW5naW5lKTsKKyAgICAgICAgaWYgKHJlZ2lzdGVyUmVtb3RlRW5naW5lKQor
ICAgICAgICAgICAgcmVnaXN0ZXJSZW1vdGVFbmdpbmUoYWRkTWVkaWFFbmdpbmUsIE1lZGlhUGxh
eWVyRW51bXM6Ok1lZGlhRW5naW5lSWRlbnRpZmllcjo6QVZGb3VuZGF0aW9uKTsKKyAgICAgICAg
ZWxzZQorICAgICAgICAgICAgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6cmVn
aXN0ZXJNZWRpYUVuZ2luZShhZGRNZWRpYUVuZ2luZSk7CiAjZW5kaWYKIAogI2lmIEVOQUJMRShN
RURJQV9TT1VSQ0UpCkBAIC0yNjUsNyArMjgwLDcgQEAgc3RhdGljIHZvaWQgYnVpbGRNZWRpYUVu
Z2luZXNWZWN0b3IoKQogICAgIGhhdmVNZWRpYUVuZ2luZXNWZWN0b3IoKSA9IHRydWU7CiB9CiAK
LXN0YXRpYyBjb25zdCBWZWN0b3I8TWVkaWFQbGF5ZXJGYWN0b3J5PiYgaW5zdGFsbGVkTWVkaWFF
bmdpbmVzKCkKK3N0YXRpYyBjb25zdCBWZWN0b3I8c3RkOjp1bmlxdWVfcHRyPE1lZGlhUGxheWVy
RmFjdG9yeT4+JiBpbnN0YWxsZWRNZWRpYUVuZ2luZXMoKQogewogICAgIHsKICAgICAgICAgYXV0
byBsb2NrZXIgPSBob2xkTG9jayhtZWRpYUVuZ2luZVZlY3RvckxvY2spOwpAQCAtMjc2LDE0ICsy
OTEsOSBAQCBzdGF0aWMgY29uc3QgVmVjdG9yPE1lZGlhUGxheWVyRmFjdG9yeT4mIGluc3RhbGxl
ZE1lZGlhRW5naW5lcygpCiAgICAgcmV0dXJuIG11dGFibGVJbnN0YWxsZWRNZWRpYUVuZ2luZXNW
ZWN0b3IoKTsKIH0KIAotc3RhdGljIHZvaWQgYWRkTWVkaWFFbmdpbmUoQ3JlYXRlTWVkaWFFbmdp
bmVQbGF5ZXImJiBjb25zdHJ1Y3RvciwgTWVkaWFFbmdpbmVTdXBwb3J0ZWRUeXBlcyBnZXRTdXBw
b3J0ZWRUeXBlcywgTWVkaWFFbmdpbmVTdXBwb3J0c1R5cGUgc3VwcG9ydHNUeXBlLAotICAgIE1l
ZGlhRW5naW5lT3JpZ2luc0luTWVkaWFDYWNoZSBvcmlnaW5zSW5NZWRpYUNhY2hlLCBNZWRpYUVu
Z2luZUNsZWFyTWVkaWFDYWNoZSBjbGVhck1lZGlhQ2FjaGUsIE1lZGlhRW5naW5lQ2xlYXJNZWRp
YUNhY2hlRm9yT3JpZ2lucyBjbGVhck1lZGlhQ2FjaGVGb3JPcmlnaW5zLCBNZWRpYUVuZ2luZVN1
cHBvcnRzS2V5U3lzdGVtIHN1cHBvcnRzS2V5U3lzdGVtKQorc3RhdGljIHZvaWQgYWRkTWVkaWFF
bmdpbmUoc3RkOjp1bmlxdWVfcHRyPE1lZGlhUGxheWVyRmFjdG9yeT4gZmFjdG9yeSkKIHsKLSAg
ICBBU1NFUlQoY29uc3RydWN0b3IpOwotICAgIEFTU0VSVChnZXRTdXBwb3J0ZWRUeXBlcyk7Ci0g
ICAgQVNTRVJUKHN1cHBvcnRzVHlwZSk7Ci0KLSAgICBtdXRhYmxlSW5zdGFsbGVkTWVkaWFFbmdp
bmVzVmVjdG9yKCkuYXBwZW5kKE1lZGlhUGxheWVyRmFjdG9yeSB7IFdURk1vdmUoY29uc3RydWN0
b3IpLCBnZXRTdXBwb3J0ZWRUeXBlcywgc3VwcG9ydHNUeXBlLCBvcmlnaW5zSW5NZWRpYUNhY2hl
LCBjbGVhck1lZGlhQ2FjaGUsIGNsZWFyTWVkaWFDYWNoZUZvck9yaWdpbnMsIHN1cHBvcnRzS2V5
U3lzdGVtIH0pOworICAgIG11dGFibGVJbnN0YWxsZWRNZWRpYUVuZ2luZXNWZWN0b3IoKS5hcHBl
bmQoV1RGTW92ZShmYWN0b3J5KSk7CiB9CiAKIHN0YXRpYyBjb25zdCBBdG9tU3RyaW5nJiBhcHBs
aWNhdGlvbk9jdGV0U3RyZWFtKCkKQEAgLTI5OCw2ICszMDgsMjEgQEAgc3RhdGljIGNvbnN0IEF0
b21TdHJpbmcmIHRleHRQbGFpbigpCiAgICAgcmV0dXJuIHRleHRQbGFpbjsKIH0KIAorY29uc3Qg
TWVkaWFQbGF5ZXJGYWN0b3J5KiBNZWRpYVBsYXllcjo6bWVkaWFFbmdpbmUoTWVkaWFQbGF5ZXJF
bnVtczo6TWVkaWFFbmdpbmVJZGVudGlmaWVyIGlkZW50aWZpZXIpCit7CisgICAgYXV0byYgZW5n
aW5lcyA9IGluc3RhbGxlZE1lZGlhRW5naW5lcygpOworICAgIGF1dG8gY3VycmVudEluZGV4ID0g
ZW5naW5lcy5maW5kTWF0Y2hpbmcoW2lkZW50aWZpZXJdIChhdXRvJiBlbmdpbmUpIHsKKyAgICAg
ICAgcmV0dXJuIGVuZ2luZS0+aWRlbnRpZmllcigpID09IGlkZW50aWZpZXI7CisgICAgfSk7CisK
KyAgICBpZiAoY3VycmVudEluZGV4ID09IG5vdEZvdW5kKSB7CisgICAgICAgIEFTU0VSVF9OT1Rf
UkVBQ0hFRCgpOworICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICB9CisKKyAgICByZXR1cm4g
ZW5naW5lc1tjdXJyZW50SW5kZXggKyAxXS5nZXQoKTsKK30KKwogc3RhdGljIGNvbnN0IE1lZGlh
UGxheWVyRmFjdG9yeSogYmVzdE1lZGlhRW5naW5lRm9yU3VwcG9ydFBhcmFtZXRlcnMoY29uc3Qg
TWVkaWFFbmdpbmVTdXBwb3J0UGFyYW1ldGVycyYgcGFyYW1ldGVycywgY29uc3QgTWVkaWFQbGF5
ZXJGYWN0b3J5KiBjdXJyZW50ID0gbnVsbHB0cikKIHsKICAgICBpZiAocGFyYW1ldGVycy50eXBl
LmlzRW1wdHkoKSAmJiAhcGFyYW1ldGVycy5pc01lZGlhU291cmNlICYmICFwYXJhbWV0ZXJzLmlz
TWVkaWFTdHJlYW0pCkBAIC0zMTUsMzQgKzM0MCw0NiBAQCBzdGF0aWMgY29uc3QgTWVkaWFQbGF5
ZXJGYWN0b3J5KiBiZXN0TWVkaWFFbmdpbmVGb3JTdXBwb3J0UGFyYW1ldGVycyhjb25zdCBNZWRp
YQogICAgIE1lZGlhUGxheWVyOjpTdXBwb3J0c1R5cGUgc3VwcG9ydGVkID0gTWVkaWFQbGF5ZXI6
OlN1cHBvcnRzVHlwZTo6SXNOb3RTdXBwb3J0ZWQ7CiAgICAgZm9yIChhdXRvJiBlbmdpbmUgOiBp
bnN0YWxsZWRNZWRpYUVuZ2luZXMoKSkgewogICAgICAgICBpZiAoY3VycmVudCkgewotICAgICAg
ICAgICAgaWYgKGN1cnJlbnQgPT0gJmVuZ2luZSkKKyAgICAgICAgICAgIGlmIChjdXJyZW50ID09
IGVuZ2luZS5nZXQoKSkKICAgICAgICAgICAgICAgICBjdXJyZW50ID0gbnVsbHB0cjsKICAgICAg
ICAgICAgIGNvbnRpbnVlOwogICAgICAgICB9Ci0gICAgICAgIE1lZGlhUGxheWVyOjpTdXBwb3J0
c1R5cGUgZW5naW5lU3VwcG9ydCA9IGVuZ2luZS5zdXBwb3J0c1R5cGVBbmRDb2RlY3MocGFyYW1l
dGVycyk7CisgICAgICAgIE1lZGlhUGxheWVyOjpTdXBwb3J0c1R5cGUgZW5naW5lU3VwcG9ydCA9
IGVuZ2luZS0+c3VwcG9ydHNUeXBlQW5kQ29kZWNzKHBhcmFtZXRlcnMpOwogICAgICAgICBpZiAo
ZW5naW5lU3VwcG9ydCA+IHN1cHBvcnRlZCkgewogICAgICAgICAgICAgc3VwcG9ydGVkID0gZW5n
aW5lU3VwcG9ydDsKLSAgICAgICAgICAgIGZvdW5kRW5naW5lID0gJmVuZ2luZTsKKyAgICAgICAg
ICAgIGZvdW5kRW5naW5lID0gZW5naW5lLmdldCgpOwogICAgICAgICB9CiAgICAgfQogCiAgICAg
cmV0dXJuIGZvdW5kRW5naW5lOwogfQogCi1zdGF0aWMgY29uc3QgTWVkaWFQbGF5ZXJGYWN0b3J5
KiBuZXh0TWVkaWFFbmdpbmUoY29uc3QgTWVkaWFQbGF5ZXJGYWN0b3J5KiBjdXJyZW50KQorY29u
c3QgTWVkaWFQbGF5ZXJGYWN0b3J5KiBNZWRpYVBsYXllcjo6bmV4dE1lZGlhRW5naW5lKGNvbnN0
IE1lZGlhUGxheWVyRmFjdG9yeSogY3VycmVudCkKIHsKKyAgICBpZiAobV9hY3RpdmVFbmdpbmVJ
ZGVudGlmaWVyKSB7CisgICAgICAgIGF1dG8qIGVuZ2luZSA9IG1lZGlhRW5naW5lKG1fYWN0aXZl
RW5naW5lSWRlbnRpZmllci52YWx1ZSgpKTsKKyAgICAgICAgcmV0dXJuIGN1cnJlbnQgIT0gZW5n
aW5lID8gZW5naW5lIDogbnVsbHB0cjsKKyAgICB9CisKICAgICBhdXRvJiBlbmdpbmVzID0gaW5z
dGFsbGVkTWVkaWFFbmdpbmVzKCk7CiAgICAgaWYgKGVuZ2luZXMuaXNFbXB0eSgpKQogICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKIAogICAgIGlmICghY3VycmVudCkgCi0gICAgICAgIHJldHVybiAm
ZW5naW5lcy5maXJzdCgpOworICAgICAgICByZXR1cm4gZW5naW5lcy5maXJzdCgpLmdldCgpOwor
CisgICAgYXV0byBjdXJyZW50SW5kZXggPSBlbmdpbmVzLmZpbmRNYXRjaGluZyhbY3VycmVudF0g
KGF1dG8mIGVuZ2luZSkgeworICAgICAgICByZXR1cm4gZW5naW5lLmdldCgpID09IGN1cnJlbnQ7
CisgICAgfSk7CisgICAgaWYgKGN1cnJlbnRJbmRleCA9PSBub3RGb3VuZCkgeworICAgICAgICBB
U1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgfQogCi0g
ICAgc2l6ZV90IGN1cnJlbnRJbmRleCA9IGN1cnJlbnQgLSAmZW5naW5lcy5maXJzdCgpOwogICAg
IGlmIChjdXJyZW50SW5kZXggKyAxID49IGVuZ2luZXMuc2l6ZSgpKQogICAgICAgICByZXR1cm4g
bnVsbHB0cjsKIAotICAgIHJldHVybiAmZW5naW5lc1tjdXJyZW50SW5kZXggKyAxXTsKKyAgICBy
ZXR1cm4gZW5naW5lc1tjdXJyZW50SW5kZXggKyAxXS5nZXQoKTsKIH0KIAogLy8gbWVkaWEgcGxh
eWVyCkBAIC0zNTIsNiArMzg5LDEzIEBAIFJlZjxNZWRpYVBsYXllcj4gTWVkaWFQbGF5ZXI6OmNy
ZWF0ZShNZWRpYVBsYXllckNsaWVudCYgY2xpZW50KQogICAgIHJldHVybiBhZG9wdFJlZigqbmV3
IE1lZGlhUGxheWVyKGNsaWVudCkpOwogfQogCitSZWY8TWVkaWFQbGF5ZXI+IE1lZGlhUGxheWVy
OjpjcmVhdGUoTWVkaWFQbGF5ZXJDbGllbnQmIGNsaWVudCwgTWVkaWFQbGF5ZXJFbnVtczo6TWVk
aWFFbmdpbmVJZGVudGlmaWVyIG1lZGlhRW5naW5lSWRlbnRpZmllcikKK3sKKyAgICByZXR1cm4g
YWRvcHRSZWYoKm5ldyBNZWRpYVBsYXllcihjbGllbnQsIG1lZGlhRW5naW5lSWRlbnRpZmllcikp
OworfQorCisKKwogTWVkaWFQbGF5ZXI6Ok1lZGlhUGxheWVyKE1lZGlhUGxheWVyQ2xpZW50JiBj
bGllbnQpCiAgICAgOiBtX2NsaWVudCgmY2xpZW50KQogICAgICwgbV9yZWxvYWRUaW1lcigqdGhp
cywgJk1lZGlhUGxheWVyOjpyZWxvYWRUaW1lckZpcmVkKQpAQCAtMzU5LDYgKzQwMywxNCBAQCBN
ZWRpYVBsYXllcjo6TWVkaWFQbGF5ZXIoTWVkaWFQbGF5ZXJDbGllbnQmIGNsaWVudCkKIHsKIH0K
IAorTWVkaWFQbGF5ZXI6Ok1lZGlhUGxheWVyKE1lZGlhUGxheWVyQ2xpZW50JiBjbGllbnQsIE1l
ZGlhUGxheWVyRW51bXM6Ok1lZGlhRW5naW5lSWRlbnRpZmllciBtZWRpYUVuZ2luZUlkZW50aWZp
ZXIpCisgICAgOiBtX2NsaWVudCgmY2xpZW50KQorICAgICwgbV9yZWxvYWRUaW1lcigqdGhpcywg
Jk1lZGlhUGxheWVyOjpyZWxvYWRUaW1lckZpcmVkKQorICAgICwgbV9wcml2YXRlKG1ha2VVbmlx
dWU8TnVsbE1lZGlhUGxheWVyUHJpdmF0ZT4odGhpcykpCisgICAgLCBtX2FjdGl2ZUVuZ2luZUlk
ZW50aWZpZXIobWVkaWFFbmdpbmVJZGVudGlmaWVyKQoreworfQorCiBNZWRpYVBsYXllcjo6fk1l
ZGlhUGxheWVyKCkKIHsKICAgICBBU1NFUlQoIW1faW5pdGlhbGl6aW5nTWVkaWFFbmdpbmUpOwpA
QCAtNDQxLDcgKzQ5Myw3IEBAIGJvb2wgTWVkaWFQbGF5ZXI6OmxvYWQoTWVkaWFTdHJlYW1Qcml2
YXRlJiBtZWRpYVN0cmVhbSkKIH0KICNlbmRpZgogCi1jb25zdCBNZWRpYVBsYXllckZhY3Rvcnkq
IE1lZGlhUGxheWVyOjpuZXh0QmVzdE1lZGlhRW5naW5lKGNvbnN0IE1lZGlhUGxheWVyRmFjdG9y
eSogY3VycmVudCkgY29uc3QKK2NvbnN0IE1lZGlhUGxheWVyRmFjdG9yeSogTWVkaWFQbGF5ZXI6
Om5leHRCZXN0TWVkaWFFbmdpbmUoY29uc3QgTWVkaWFQbGF5ZXJGYWN0b3J5KiBjdXJyZW50KQog
ewogICAgIE1lZGlhRW5naW5lU3VwcG9ydFBhcmFtZXRlcnMgcGFyYW1ldGVyczsKICAgICBwYXJh
bWV0ZXJzLnR5cGUgPSBtX2NvbnRlbnRUeXBlOwpAQCAtNDUzLDYgKzUwNSwxNyBAQCBjb25zdCBN
ZWRpYVBsYXllckZhY3RvcnkqIE1lZGlhUGxheWVyOjpuZXh0QmVzdE1lZGlhRW5naW5lKGNvbnN0
IE1lZGlhUGxheWVyRmFjdAogICAgIHBhcmFtZXRlcnMuaXNNZWRpYVN0cmVhbSA9ICEhbV9tZWRp
YVN0cmVhbTsKICNlbmRpZgogCisgICAgaWYgKG1fYWN0aXZlRW5naW5lSWRlbnRpZmllcikgewor
ICAgICAgICBpZiAoY3VycmVudCkKKyAgICAgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAg
ICAgIGF1dG8qIGVuZ2luZSA9IG1lZGlhRW5naW5lKG1fYWN0aXZlRW5naW5lSWRlbnRpZmllci52
YWx1ZSgpKTsKKyAgICAgICAgaWYgKGVuZ2luZSAmJiBlbmdpbmUtPnN1cHBvcnRzVHlwZUFuZENv
ZGVjcyhwYXJhbWV0ZXJzKSAhPSBTdXBwb3J0c1R5cGU6OklzTm90U3VwcG9ydGVkKQorICAgICAg
ICAgICAgcmV0dXJuIGVuZ2luZTsKKworICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICB9CisK
ICAgICByZXR1cm4gYmVzdE1lZGlhRW5naW5lRm9yU3VwcG9ydFBhcmFtZXRlcnMocGFyYW1ldGVy
cywgY3VycmVudCk7CiB9CiAKQEAgLTQ4OSwxMyArNTUyLDE1IEBAIHZvaWQgTWVkaWFQbGF5ZXI6
OmxvYWRXaXRoTmV4dE1lZGlhRW5naW5lKGNvbnN0IE1lZGlhUGxheWVyRmFjdG9yeSogY3VycmVu
dCkKICAgICAgICAgbV9wcml2YXRlID0gbnVsbHB0cjsKICAgICB9IGVsc2UgaWYgKG1fY3VycmVu
dE1lZGlhRW5naW5lICE9IGVuZ2luZSkgewogICAgICAgICBtX2N1cnJlbnRNZWRpYUVuZ2luZSA9
IGVuZ2luZTsKLSAgICAgICAgbV9wcml2YXRlID0gZW5naW5lLT5jb25zdHJ1Y3Rvcih0aGlzKTsK
LSAgICAgICAgY2xpZW50KCkubWVkaWFQbGF5ZXJFbmdpbmVVcGRhdGVkKCk7Ci0gICAgICAgIG1f
cHJpdmF0ZS0+c2V0UHJpdmF0ZUJyb3dzaW5nTW9kZShtX3ByaXZhdGVCcm93c2luZyk7Ci0gICAg
ICAgIG1fcHJpdmF0ZS0+c2V0UHJlbG9hZChtX3ByZWxvYWQpOwotICAgICAgICBtX3ByaXZhdGUt
PnNldFByZXNlcnZlc1BpdGNoKHByZXNlcnZlc1BpdGNoKCkpOwotICAgICAgICBpZiAobV9zaG91
bGRQcmVwYXJlVG9SZW5kZXIpCi0gICAgICAgICAgICBtX3ByaXZhdGUtPnByZXBhcmVGb3JSZW5k
ZXJpbmcoKTsKKyAgICAgICAgbV9wcml2YXRlID0gZW5naW5lLT5jcmVhdGVNZWRpYUVuZ2luZVBs
YXllcih0aGlzKTsKKyAgICAgICAgaWYgKG1fcHJpdmF0ZSkgeworICAgICAgICAgICAgY2xpZW50
KCkubWVkaWFQbGF5ZXJFbmdpbmVVcGRhdGVkKCk7CisgICAgICAgICAgICBtX3ByaXZhdGUtPnNl
dFByaXZhdGVCcm93c2luZ01vZGUobV9wcml2YXRlQnJvd3NpbmcpOworICAgICAgICAgICAgbV9w
cml2YXRlLT5zZXRQcmVsb2FkKG1fcHJlbG9hZCk7CisgICAgICAgICAgICBtX3ByaXZhdGUtPnNl
dFByZXNlcnZlc1BpdGNoKHByZXNlcnZlc1BpdGNoKCkpOworICAgICAgICAgICAgaWYgKG1fc2hv
dWxkUHJlcGFyZVRvUmVuZGVyKQorICAgICAgICAgICAgICAgIG1fcHJpdmF0ZS0+cHJlcGFyZUZv
clJlbmRlcmluZygpOworICAgICAgICB9CiAgICAgfQogCiAgICAgaWYgKG1fcHJpdmF0ZSkgewpA
QCAtNTEyLDggKzU3NywxMiBAQCB2b2lkIE1lZGlhUGxheWVyOjpsb2FkV2l0aE5leHRNZWRpYUVu
Z2luZShjb25zdCBNZWRpYVBsYXllckZhY3RvcnkqIGN1cnJlbnQpCiAgICAgICAgIG1fcHJpdmF0
ZS0+bG9hZChtX3VybC5zdHJpbmcoKSk7CiAgICAgfSBlbHNlIHsKICAgICAgICAgbV9wcml2YXRl
ID0gbWFrZVVuaXF1ZTxOdWxsTWVkaWFQbGF5ZXJQcml2YXRlPih0aGlzKTsKLSAgICAgICAgY2xp
ZW50KCkubWVkaWFQbGF5ZXJFbmdpbmVVcGRhdGVkKCk7Ci0gICAgICAgIGNsaWVudCgpLm1lZGlh
UGxheWVyUmVzb3VyY2VOb3RTdXBwb3J0ZWQoKTsKKyAgICAgICAgaWYgKCFtX2FjdGl2ZUVuZ2lu
ZUlkZW50aWZpZXIgJiYgaW5zdGFsbGVkTWVkaWFFbmdpbmVzKCkuc2l6ZSgpID4gMSAmJiBuZXh0
QmVzdE1lZGlhRW5naW5lKG1fY3VycmVudE1lZGlhRW5naW5lKSkKKyAgICAgICAgICAgIG1fcmVs
b2FkVGltZXIuc3RhcnRPbmVTaG90KDBfcyk7CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAg
Y2xpZW50KCkubWVkaWFQbGF5ZXJFbmdpbmVVcGRhdGVkKCk7CisgICAgICAgICAgICBjbGllbnQo
KS5tZWRpYVBsYXllclJlc291cmNlTm90U3VwcG9ydGVkKCk7CisgICAgICAgIH0KICAgICB9CiAK
ICAgICBtX2luaXRpYWxpemluZ01lZGlhRW5naW5lID0gZmFsc2U7CkBAIC05MjksNyArOTk4LDcg
QEAgdm9pZCBNZWRpYVBsYXllcjo6Z2V0U3VwcG9ydGVkVHlwZXMoSGFzaFNldDxTdHJpbmcsIEFT
Q0lJQ2FzZUluc2Vuc2l0aXZlSGFzaD4mIHQKIHsKICAgICBmb3IgKGF1dG8mIGVuZ2luZSA6IGlu
c3RhbGxlZE1lZGlhRW5naW5lcygpKSB7CiAgICAgICAgIEhhc2hTZXQ8U3RyaW5nLCBBU0NJSUNh
c2VJbnNlbnNpdGl2ZUhhc2g+IGVuZ2luZVR5cGVzOwotICAgICAgICBlbmdpbmUuZ2V0U3VwcG9y
dGVkVHlwZXMoZW5naW5lVHlwZXMpOworICAgICAgICBlbmdpbmUtPmdldFN1cHBvcnRlZFR5cGVz
KGVuZ2luZVR5cGVzKTsKICAgICAgICAgdHlwZXMuYWRkKGVuZ2luZVR5cGVzLmJlZ2luKCksIGVu
Z2luZVR5cGVzLmVuZCgpKTsKICAgICB9CiB9IApAQCAtMTEyNSwzNCArMTE5NCwyOCBAQCBzdGF0
aWMgdm9pZCBhZGRUb0hhc2goSGFzaFNldDxUPiYgdG9IYXNoLCBIYXNoU2V0PFQ+JiYgZnJvbUhh
c2gpCiBIYXNoU2V0PFJlZlB0cjxTZWN1cml0eU9yaWdpbj4+IE1lZGlhUGxheWVyOjpvcmlnaW5z
SW5NZWRpYUNhY2hlKGNvbnN0IFN0cmluZyYgcGF0aCkKIHsKICAgICBIYXNoU2V0PFJlZlB0cjxT
ZWN1cml0eU9yaWdpbj4+IG9yaWdpbnM7Ci0gICAgZm9yIChhdXRvJiBlbmdpbmUgOiBpbnN0YWxs
ZWRNZWRpYUVuZ2luZXMoKSkgewotICAgICAgICBpZiAoIWVuZ2luZS5vcmlnaW5zSW5NZWRpYUNh
Y2hlKQotICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgIGFkZFRvSGFzaChvcmlnaW5zLCBl
bmdpbmUub3JpZ2luc0luTWVkaWFDYWNoZShwYXRoKSk7Ci0gICAgfQorICAgIGZvciAoYXV0byYg
ZW5naW5lIDogaW5zdGFsbGVkTWVkaWFFbmdpbmVzKCkpCisgICAgICAgIGFkZFRvSGFzaChvcmln
aW5zLCBlbmdpbmUtPm9yaWdpbnNJbk1lZGlhQ2FjaGUocGF0aCkpOworCiAgICAgcmV0dXJuIG9y
aWdpbnM7CiB9CiAKIHZvaWQgTWVkaWFQbGF5ZXI6OmNsZWFyTWVkaWFDYWNoZShjb25zdCBTdHJp
bmcmIHBhdGgsIFdhbGxUaW1lIG1vZGlmaWVkU2luY2UpCiB7Ci0gICAgZm9yIChhdXRvJiBlbmdp
bmUgOiBpbnN0YWxsZWRNZWRpYUVuZ2luZXMoKSkgewotICAgICAgICBpZiAoZW5naW5lLmNsZWFy
TWVkaWFDYWNoZSkKLSAgICAgICAgICAgIGVuZ2luZS5jbGVhck1lZGlhQ2FjaGUocGF0aCwgbW9k
aWZpZWRTaW5jZSk7Ci0gICAgfQorICAgIGZvciAoYXV0byYgZW5naW5lIDogaW5zdGFsbGVkTWVk
aWFFbmdpbmVzKCkpCisgICAgICAgIGVuZ2luZS0+Y2xlYXJNZWRpYUNhY2hlKHBhdGgsIG1vZGlm
aWVkU2luY2UpOwogfQogCiB2b2lkIE1lZGlhUGxheWVyOjpjbGVhck1lZGlhQ2FjaGVGb3JPcmln
aW5zKGNvbnN0IFN0cmluZyYgcGF0aCwgY29uc3QgSGFzaFNldDxSZWZQdHI8U2VjdXJpdHlPcmln
aW4+PiYgb3JpZ2lucykKIHsKLSAgICBmb3IgKGF1dG8mIGVuZ2luZSA6IGluc3RhbGxlZE1lZGlh
RW5naW5lcygpKSB7Ci0gICAgICAgIGlmIChlbmdpbmUuY2xlYXJNZWRpYUNhY2hlRm9yT3JpZ2lu
cykKLSAgICAgICAgICAgIGVuZ2luZS5jbGVhck1lZGlhQ2FjaGVGb3JPcmlnaW5zKHBhdGgsIG9y
aWdpbnMpOwotICAgIH0KKyAgICBmb3IgKGF1dG8mIGVuZ2luZSA6IGluc3RhbGxlZE1lZGlhRW5n
aW5lcygpKQorICAgICAgICBlbmdpbmUtPmNsZWFyTWVkaWFDYWNoZUZvck9yaWdpbnMocGF0aCwg
b3JpZ2lucyk7CiB9CiAKIGJvb2wgTWVkaWFQbGF5ZXI6OnN1cHBvcnRzS2V5U3lzdGVtKGNvbnN0
IFN0cmluZyYga2V5U3lzdGVtLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlKQogewogICAgIGZvciAo
YXV0byYgZW5naW5lIDogaW5zdGFsbGVkTWVkaWFFbmdpbmVzKCkpIHsKLSAgICAgICAgaWYgKGVu
Z2luZS5zdXBwb3J0c0tleVN5c3RlbSAmJiBlbmdpbmUuc3VwcG9ydHNLZXlTeXN0ZW0oa2V5U3lz
dGVtLCBtaW1lVHlwZSkpCisgICAgICAgIGlmIChlbmdpbmUtPnN1cHBvcnRzS2V5U3lzdGVtKGtl
eVN5c3RlbSwgbWltZVR5cGUpKQogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogICAg
IHJldHVybiBmYWxzZTsKQEAgLTExNzIsNyArMTIzNSw3IEBAIHZvaWQgTWVkaWFQbGF5ZXI6Om5l
dHdvcmtTdGF0ZUNoYW5nZWQoKQogICAgIC8vIGxldCB0aGUgbmV4dCBlbmdpbmUgdHJ5LgogICAg
IGlmIChtX3ByaXZhdGUtPm5ldHdvcmtTdGF0ZSgpID49IE1lZGlhUGxheWVyOjpOZXR3b3JrU3Rh
dGU6OkZvcm1hdEVycm9yICYmIG1fcHJpdmF0ZS0+cmVhZHlTdGF0ZSgpIDwgTWVkaWFQbGF5ZXI6
OlJlYWR5U3RhdGU6OkhhdmVNZXRhZGF0YSkgewogICAgICAgICBjbGllbnQoKS5tZWRpYVBsYXll
ckVuZ2luZUZhaWxlZFRvTG9hZCgpOwotICAgICAgICBpZiAoaW5zdGFsbGVkTWVkaWFFbmdpbmVz
KCkuc2l6ZSgpID4gMSAmJiAobV9jb250ZW50VHlwZS5pc0VtcHR5KCkgfHwgbmV4dEJlc3RNZWRp
YUVuZ2luZShtX2N1cnJlbnRNZWRpYUVuZ2luZSkpKSB7CisgICAgICAgIGlmICghbV9hY3RpdmVF
bmdpbmVJZGVudGlmaWVyICYmIGluc3RhbGxlZE1lZGlhRW5naW5lcygpLnNpemUoKSA+IDEgJiYg
KG1fY29udGVudFR5cGUuaXNFbXB0eSgpIHx8IG5leHRCZXN0TWVkaWFFbmdpbmUobV9jdXJyZW50
TWVkaWFFbmdpbmUpKSkgewogICAgICAgICAgICAgbV9yZWxvYWRUaW1lci5zdGFydE9uZVNob3Qo
MF9zKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmgKaW5kZXggOGE3YjFlOWJmZDc4N2Y1MTMw
NTJiNTY4ODM0NTk0NDBkZjlkMWIxNy4uZTMyMTM5YTE1ZDgwZGY4YTEyYmQ5MTk3ZmJmNTU0ZWJm
YmI4OWYwMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVk
aWFQbGF5ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBs
YXllci5oCkBAIC02Nyw2ICs2Nyw3IEBAIGNsYXNzIEluYmFuZFRleHRUcmFja1ByaXZhdGU7CiBj
bGFzcyBMZWdhY3lDRE1TZXNzaW9uQ2xpZW50OwogY2xhc3MgTWVkaWFQbGF5YmFja1RhcmdldDsK
IGNsYXNzIE1lZGlhUGxheWVyOworY2xhc3MgTWVkaWFQbGF5ZXJGYWN0b3J5OwogY2xhc3MgTWVk
aWFQbGF5ZXJQcml2YXRlSW50ZXJmYWNlOwogY2xhc3MgTWVkaWFQbGF5ZXJSZXF1ZXN0SW5zdGFs
bE1pc3NpbmdQbHVnaW5zQ2FsbGJhY2s7CiBjbGFzcyBNZWRpYVNvdXJjZVByaXZhdGVDbGllbnQ7
CkBAIC03Niw3ICs3Nyw2IEBAIGNsYXNzIFRleHRUcmFja1JlcHJlc2VudGF0aW9uOwogCiBzdHJ1
Y3QgQ29va2llOwogc3RydWN0IEdyYXBoaWNzRGV2aWNlQWRhcHRlcjsKLXN0cnVjdCBNZWRpYVBs
YXllckZhY3Rvcnk7CiAKIHN0cnVjdCBNZWRpYUVuZ2luZVN1cHBvcnRQYXJhbWV0ZXJzIHsKICAg
ICBDb250ZW50VHlwZSB0eXBlOwpAQCAtODQsNiArODQsNDggQEAgc3RydWN0IE1lZGlhRW5naW5l
U3VwcG9ydFBhcmFtZXRlcnMgewogICAgIGJvb2wgaXNNZWRpYVNvdXJjZSB7IGZhbHNlIH07CiAg
ICAgYm9vbCBpc01lZGlhU3RyZWFtIHsgZmFsc2UgfTsKICAgICBWZWN0b3I8Q29udGVudFR5cGU+
IGNvbnRlbnRUeXBlc1JlcXVpcmluZ0hhcmR3YXJlU3VwcG9ydDsKKworI2lmIEVOQUJMRShHUFVf
UFJPQ0VTUykKKyAgICB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPgorICAgIHZvaWQgZW5jb2RlKEVu
Y29kZXImIGVuY29kZXIpIGNvbnN0CisgICAgeworICAgICAgICBlbmNvZGVyIDw8IHR5cGU7Cisg
ICAgICAgIGVuY29kZXIgPDwgdXJsOworICAgICAgICBlbmNvZGVyIDw8IGlzTWVkaWFTb3VyY2U7
CisgICAgICAgIGVuY29kZXIgPDwgY29udGVudFR5cGVzUmVxdWlyaW5nSGFyZHdhcmVTdXBwb3J0
OworICAgIH0KKworICAgIHRlbXBsYXRlIDxjbGFzcyBEZWNvZGVyPgorICAgIHN0YXRpYyBPcHRp
b25hbDxNZWRpYUVuZ2luZVN1cHBvcnRQYXJhbWV0ZXJzPiBkZWNvZGUoRGVjb2RlciYgZGVjb2Rl
cikKKyAgICB7CisgICAgICAgIE9wdGlvbmFsPENvbnRlbnRUeXBlPiB0eXBlOworICAgICAgICBk
ZWNvZGVyID4+IHR5cGU7CisgICAgICAgIGlmICghdHlwZSkKKyAgICAgICAgICAgIHJldHVybiBX
VEY6Om51bGxvcHQ7CisKKyAgICAgICAgT3B0aW9uYWw8VVJMPiB1cmw7CisgICAgICAgIGRlY29k
ZXIgPj4gdXJsOworICAgICAgICBpZiAoIXVybCkKKyAgICAgICAgICAgIHJldHVybiBXVEY6Om51
bGxvcHQ7CisKKyAgICAgICAgT3B0aW9uYWw8Ym9vbD4gaXNNZWRpYVNvdXJjZTsKKyAgICAgICAg
ZGVjb2RlciA+PiBpc01lZGlhU291cmNlOworICAgICAgICBpZiAoIWlzTWVkaWFTb3VyY2UpCisg
ICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworCisgICAgICAgIE9wdGlvbmFsPGJvb2w+
IGlzTWVkaWFTdHJlYW07CisgICAgICAgIGRlY29kZXIgPj4gaXNNZWRpYVN0cmVhbTsKKyAgICAg
ICAgaWYgKCFpc01lZGlhU3RyZWFtKQorICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsK
KworICAgICAgICBPcHRpb25hbDxWZWN0b3I8Q29udGVudFR5cGU+PiB0eXBlc1JlcXVpcmluZ0hh
cmR3YXJlOworICAgICAgICBkZWNvZGVyID4+IHR5cGVzUmVxdWlyaW5nSGFyZHdhcmU7CisgICAg
ICAgIGlmICghdHlwZXNSZXF1aXJpbmdIYXJkd2FyZSkKKyAgICAgICAgICAgIHJldHVybiBXVEY6
Om51bGxvcHQ7CisKKyAgICAgICAgcmV0dXJuIHt7IFdURk1vdmUoKnR5cGUpLCBXVEZNb3ZlKCp1
cmwpLCBXVEZNb3ZlKCppc01lZGlhU291cmNlKSwgV1RGTW92ZSgqaXNNZWRpYVN0cmVhbSksIFdU
Rk1vdmUoKnR5cGVzUmVxdWlyaW5nSGFyZHdhcmUpIH19OworICAgIH0KKyNlbmRpZgogfTsKIAog
c3RydWN0IFZpZGVvUGxheWJhY2tRdWFsaXR5TWV0cmljcyB7CkBAIC0yMzUsNyArMjc3LDcgQEAg
cHVibGljOgogI2VuZGlmCiAKICAgICB2aXJ0dWFsIGJvb2wgbWVkaWFQbGF5ZXJTaG91bGREaXNh
YmxlU2xlZXAoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQotICAgIHZpcnR1YWwgY29uc3QgVmVj
dG9yPENvbnRlbnRUeXBlPiYgbWVkaWFDb250ZW50VHlwZXNSZXF1aXJpbmdIYXJkd2FyZVN1cHBv
cnQoKSBjb25zdDsKKyAgICB2aXJ0dWFsIGNvbnN0IFZlY3RvcjxDb250ZW50VHlwZT4mIG1lZGlh
Q29udGVudFR5cGVzUmVxdWlyaW5nSGFyZHdhcmVTdXBwb3J0KCkgY29uc3QgPSAwOwogICAgIHZp
cnR1YWwgYm9vbCBtZWRpYVBsYXllclNob3VsZENoZWNrSGFyZHdhcmVTdXBwb3J0KCkgY29uc3Qg
eyByZXR1cm4gZmFsc2U7IH0KIAogI2lmICFSRUxFQVNFX0xPR19ESVNBQkxFRApAQCAtMjQ0LDE1
ICsyODYsMTggQEAgcHVibGljOgogI2VuZGlmCiB9OwogCi1jbGFzcyBNZWRpYVBsYXllciA6IHB1
YmxpYyBNZWRpYVBsYXllckVudW1zLCBwdWJsaWMgUmVmQ291bnRlZDxNZWRpYVBsYXllcj4gewor
Y2xhc3MgV0VCQ09SRV9FWFBPUlQgTWVkaWFQbGF5ZXIgOiBwdWJsaWMgTWVkaWFQbGF5ZXJFbnVt
cywgcHVibGljIFJlZkNvdW50ZWQ8TWVkaWFQbGF5ZXI+IHsKICAgICBXVEZfTUFLRV9OT05DT1BZ
QUJMRShNZWRpYVBsYXllcik7IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAg
IHN0YXRpYyBSZWY8TWVkaWFQbGF5ZXI+IGNyZWF0ZShNZWRpYVBsYXllckNsaWVudCYpOworICAg
IHN0YXRpYyBSZWY8TWVkaWFQbGF5ZXI+IGNyZWF0ZShNZWRpYVBsYXllckNsaWVudCYsIE1lZGlh
UGxheWVyRW51bXM6Ok1lZGlhRW5naW5lSWRlbnRpZmllcik7CiAgICAgdmlydHVhbCB+TWVkaWFQ
bGF5ZXIoKTsKIAogICAgIHZvaWQgaW52YWxpZGF0ZSgpOwogCiAgICAgLy8gTWVkaWEgZW5naW5l
IHN1cHBvcnQuCisgICAgdXNpbmcgTWVkaWFQbGF5ZXJFbnVtczo6U3VwcG9ydHNUeXBlOworICAg
IHN0YXRpYyBjb25zdCBNZWRpYVBsYXllckZhY3RvcnkqIG1lZGlhRW5naW5lKE1lZGlhUGxheWVy
RW51bXM6Ok1lZGlhRW5naW5lSWRlbnRpZmllcik7CiAgICAgc3RhdGljIFN1cHBvcnRzVHlwZSBz
dXBwb3J0c1R5cGUoY29uc3QgTWVkaWFFbmdpbmVTdXBwb3J0UGFyYW1ldGVycyYpOwogICAgIHN0
YXRpYyB2b2lkIGdldFN1cHBvcnRlZFR5cGVzKEhhc2hTZXQ8U3RyaW5nLCBBU0NJSUNhc2VJbnNl
bnNpdGl2ZUhhc2g+Jik7CiAgICAgc3RhdGljIGJvb2wgaXNBdmFpbGFibGUoKTsKQEAgLTUzMSwx
MSArNTc2LDExIEBAIHB1YmxpYzoKICAgICBzdGF0aWMgdm9pZCByZXNldE1lZGlhRW5naW5lcygp
OwogCiAjaWYgVVNFKEdTVFJFQU1FUikKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNpbXVsYXRl
QXVkaW9JbnRlcnJ1cHRpb24oKTsKKyAgICB2b2lkIHNpbXVsYXRlQXVkaW9JbnRlcnJ1cHRpb24o
KTsKICNlbmRpZgogCi0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBiZWdpblNpbXVsYXRlZEhEQ1BF
cnJvcigpOwotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZW5kU2ltdWxhdGVkSERDUEVycm9yKCk7
CisgICAgdm9pZCBiZWdpblNpbXVsYXRlZEhEQ1BFcnJvcigpOworICAgIHZvaWQgZW5kU2ltdWxh
dGVkSERDUEVycm9yKCk7CiAKICAgICBTdHJpbmcgbGFuZ3VhZ2VPZlByaW1hcnlBdWRpb1RyYWNr
KCkgY29uc3Q7CiAKQEAgLTU3MCw3ICs2MTUsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBhcHBsaWNh
dGlvbkRpZEJlY29tZUFjdGl2ZSgpOwogCiAjaWYgVVNFKEFWRk9VTkRBVElPTikKLSAgICBXRUJD
T1JFX0VYUE9SVCBBVlBsYXllciAqb2JqQ0FWRm91bmRhdGlvbkFWUGxheWVyKCkgY29uc3Q7Cisg
ICAgQVZQbGF5ZXIgKm9iakNBVkZvdW5kYXRpb25BVlBsYXllcigpIGNvbnN0OwogI2VuZGlmCiAK
ICAgICBib29sIHBlcmZvcm1UYXNrQXRNZWRpYVRpbWUoV1RGOjpGdW5jdGlvbjx2b2lkKCk+JiYs
IE1lZGlhVGltZSk7CkBAIC01OTUsMTEgKzY0MCwxMyBAQCBwdWJsaWM6CiAKIHByaXZhdGU6CiAg
ICAgTWVkaWFQbGF5ZXIoTWVkaWFQbGF5ZXJDbGllbnQmKTsKKyAgICBNZWRpYVBsYXllcihNZWRp
YVBsYXllckNsaWVudCYsIE1lZGlhUGxheWVyRW51bXM6Ok1lZGlhRW5naW5lSWRlbnRpZmllcik7
CiAKICAgICBNZWRpYVBsYXllckNsaWVudCYgY2xpZW50KCkgY29uc3QgeyByZXR1cm4gKm1fY2xp
ZW50OyB9CiAKLSAgICBjb25zdCBNZWRpYVBsYXllckZhY3RvcnkqIG5leHRCZXN0TWVkaWFFbmdp
bmUoY29uc3QgTWVkaWFQbGF5ZXJGYWN0b3J5KikgY29uc3Q7CisgICAgY29uc3QgTWVkaWFQbGF5
ZXJGYWN0b3J5KiBuZXh0QmVzdE1lZGlhRW5naW5lKGNvbnN0IE1lZGlhUGxheWVyRmFjdG9yeSop
OwogICAgIHZvaWQgbG9hZFdpdGhOZXh0TWVkaWFFbmdpbmUoY29uc3QgTWVkaWFQbGF5ZXJGYWN0
b3J5Kik7CisgICAgY29uc3QgTWVkaWFQbGF5ZXJGYWN0b3J5KiBuZXh0TWVkaWFFbmdpbmUoY29u
c3QgTWVkaWFQbGF5ZXJGYWN0b3J5Kik7CiAgICAgdm9pZCByZWxvYWRUaW1lckZpcmVkKCk7CiAK
ICAgICBNZWRpYVBsYXllckNsaWVudCogbV9jbGllbnQ7CkBAIC02MDksNiArNjU2LDcgQEAgcHJp
dmF0ZToKICAgICBVUkwgbV91cmw7CiAgICAgQ29udGVudFR5cGUgbV9jb250ZW50VHlwZTsKICAg
ICBTdHJpbmcgbV9rZXlTeXN0ZW07CisgICAgT3B0aW9uYWw8TWVkaWFQbGF5ZXJFbnVtczo6TWVk
aWFFbmdpbmVJZGVudGlmaWVyPiBtX2FjdGl2ZUVuZ2luZUlkZW50aWZpZXI7CiAgICAgSW50U2l6
ZSBtX3NpemU7CiAgICAgUHJlbG9hZCBtX3ByZWxvYWQgeyBQcmVsb2FkOjpBdXRvIH07CiAgICAg
ZG91YmxlIG1fdm9sdW1lIHsgMSB9OwpAQCAtNjI4LDE2ICs2NzYsMjQgQEAgcHJpdmF0ZToKICNl
bmRpZgogfTsKIAotdXNpbmcgQ3JlYXRlTWVkaWFFbmdpbmVQbGF5ZXIgPSBXVEY6OkZ1bmN0aW9u
PHN0ZDo6dW5pcXVlX3B0cjxNZWRpYVBsYXllclByaXZhdGVJbnRlcmZhY2U+IChNZWRpYVBsYXll
ciopPjsKLXR5cGVkZWYgdm9pZCAoKk1lZGlhRW5naW5lU3VwcG9ydGVkVHlwZXMpKEhhc2hTZXQ8
U3RyaW5nLCBBU0NJSUNhc2VJbnNlbnNpdGl2ZUhhc2g+JiB0eXBlcyk7Ci10eXBlZGVmIE1lZGlh
UGxheWVyOjpTdXBwb3J0c1R5cGUgKCpNZWRpYUVuZ2luZVN1cHBvcnRzVHlwZSkoY29uc3QgTWVk
aWFFbmdpbmVTdXBwb3J0UGFyYW1ldGVycyYgcGFyYW1ldGVycyk7Ci10eXBlZGVmIEhhc2hTZXQ8
UmVmUHRyPFNlY3VyaXR5T3JpZ2luPj4gKCpNZWRpYUVuZ2luZU9yaWdpbnNJbk1lZGlhQ2FjaGUp
KGNvbnN0IFN0cmluZyYgcGF0aCk7Ci10eXBlZGVmIHZvaWQgKCpNZWRpYUVuZ2luZUNsZWFyTWVk
aWFDYWNoZSkoY29uc3QgU3RyaW5nJiBwYXRoLCBXYWxsVGltZSBtb2RpZmllZFNpbmNlKTsKLXR5
cGVkZWYgdm9pZCAoKk1lZGlhRW5naW5lQ2xlYXJNZWRpYUNhY2hlRm9yT3JpZ2lucykoY29uc3Qg
U3RyaW5nJiBwYXRoLCBjb25zdCBIYXNoU2V0PFJlZlB0cjxTZWN1cml0eU9yaWdpbj4+Jik7Ci10
eXBlZGVmIGJvb2wgKCpNZWRpYUVuZ2luZVN1cHBvcnRzS2V5U3lzdGVtKShjb25zdCBTdHJpbmcm
IGtleVN5c3RlbSwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSk7CitjbGFzcyBNZWRpYVBsYXllckZh
Y3RvcnkgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOworcHVibGljOgorICAgIE1lZGlh
UGxheWVyRmFjdG9yeSgpID0gZGVmYXVsdDsKKyAgICB2aXJ0dWFsIH5NZWRpYVBsYXllckZhY3Rv
cnkoKSB7IH0KKworICAgIHZpcnR1YWwgTWVkaWFQbGF5ZXJFbnVtczo6TWVkaWFFbmdpbmVJZGVu
dGlmaWVyIGlkZW50aWZpZXIoKSBjb25zdCAgPSAwOworICAgIHZpcnR1YWwgc3RkOjp1bmlxdWVf
cHRyPE1lZGlhUGxheWVyUHJpdmF0ZUludGVyZmFjZT4gY3JlYXRlTWVkaWFFbmdpbmVQbGF5ZXIo
TWVkaWFQbGF5ZXIqKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCB2b2lkIGdldFN1cHBvcnRlZFR5
cGVzKEhhc2hTZXQ8U3RyaW5nLCBBU0NJSUNhc2VJbnNlbnNpdGl2ZUhhc2g+JikgY29uc3QgPSAw
OworICAgIHZpcnR1YWwgTWVkaWFQbGF5ZXI6OlN1cHBvcnRzVHlwZSBzdXBwb3J0c1R5cGVBbmRD
b2RlY3MoY29uc3QgTWVkaWFFbmdpbmVTdXBwb3J0UGFyYW1ldGVycyYpIGNvbnN0ID0gMDsKKwor
ICAgIHZpcnR1YWwgSGFzaFNldDxSZWZQdHI8U2VjdXJpdHlPcmlnaW4+PiBvcmlnaW5zSW5NZWRp
YUNhY2hlKGNvbnN0IFN0cmluZyYpIGNvbnN0IHsgcmV0dXJuIHsgfTsgfQorICAgIHZpcnR1YWwg
dm9pZCBjbGVhck1lZGlhQ2FjaGUoY29uc3QgU3RyaW5nJiwgV2FsbFRpbWUpIGNvbnN0IHsgfQor
ICAgIHZpcnR1YWwgdm9pZCBjbGVhck1lZGlhQ2FjaGVGb3JPcmlnaW5zKGNvbnN0IFN0cmluZyYs
IGNvbnN0IEhhc2hTZXQ8UmVmUHRyPFNlY3VyaXR5T3JpZ2luPj4mKSBjb25zdCB7IH0KKyAgICB2
aXJ0dWFsIGJvb2wgc3VwcG9ydHNLZXlTeXN0ZW0oY29uc3QgU3RyaW5nJiAvKiBrZXlTeXN0ZW0g
Ki8sIGNvbnN0IFN0cmluZyYgLyogbWltZVR5cGUgKi8pIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9
Cit9OwogCi10eXBlZGVmIHZvaWQgKCpNZWRpYUVuZ2luZVJlZ2lzdHJhcikoQ3JlYXRlTWVkaWFF
bmdpbmVQbGF5ZXImJiwgTWVkaWFFbmdpbmVTdXBwb3J0ZWRUeXBlcywgTWVkaWFFbmdpbmVTdXBw
b3J0c1R5cGUsCi0gICAgTWVkaWFFbmdpbmVPcmlnaW5zSW5NZWRpYUNhY2hlLCBNZWRpYUVuZ2lu
ZUNsZWFyTWVkaWFDYWNoZSwgTWVkaWFFbmdpbmVDbGVhck1lZGlhQ2FjaGVGb3JPcmlnaW5zLCBN
ZWRpYUVuZ2luZVN1cHBvcnRzS2V5U3lzdGVtKTsKK3R5cGVkZWYgdm9pZCAoKk1lZGlhRW5naW5l
UmVnaXN0cmFyKShzdGQ6OnVuaXF1ZV9wdHI8TWVkaWFQbGF5ZXJGYWN0b3J5Pik7CiB0eXBlZGVm
IHZvaWQgKCpNZWRpYUVuZ2luZVJlZ2lzdGVyKShNZWRpYUVuZ2luZVJlZ2lzdHJhcik7CiAKIGNs
YXNzIE1lZGlhUGxheWVyRmFjdG9yeVN1cHBvcnQgewpAQCAtNjQ1LDYgKzcwMSwxMyBAQCBwdWJs
aWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIHZvaWQgY2FsbFJlZ2lzdGVyTWVkaWFFbmdp
bmUoTWVkaWFFbmdpbmVSZWdpc3Rlcik7CiB9OwogCitjbGFzcyBSZW1vdGVNZWRpYVBsYXllclN1
cHBvcnQgeworcHVibGljOgorICAgIHVzaW5nIFJlZ2lzdGVyUmVtb3RlUGxheWVyQ2FsbGJhY2sg
PSBzdGQ6OmZ1bmN0aW9uPHZvaWQoTWVkaWFFbmdpbmVSZWdpc3RyYXIsIE1lZGlhUGxheWVyRW51
bXM6Ok1lZGlhRW5naW5lSWRlbnRpZmllcik+OworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyB2
b2lkIHNldFJlZ2lzdGVyUmVtb3RlUGxheWVyQ2FsbGJhY2soUmVnaXN0ZXJSZW1vdGVQbGF5ZXJD
YWxsYmFjayYmKTsKK307CisKKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8g
RU5BQkxFKFZJREVPKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvTWVkaWFQbGF5ZXJFbnVtcy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
TWVkaWFQbGF5ZXJFbnVtcy5oCmluZGV4IDRiMTBmMDQ4MzA4N2UyZTY2ZTNhYWQ4MWVlNDQyZTZk
MjQ4ZGU5ZDQuLjgxZTUxOTM3NTI2MDg5MTQzZDUwYTUxM2NhZjAyNDgwMTgyZTQ1NzAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyRW51bXMu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllckVudW1z
LmgKQEAgLTg3LDYgKzg3LDE3IEBAIHB1YmxpYzoKICAgICAgICAgTWFrZVJlc291cmNlc1B1cmdl
YWJsZSwKICAgICAgICAgUHVyZ2VSZXNvdXJjZXMsCiAgICAgfTsKKworICAgIGVudW0gY2xhc3Mg
TWVkaWFFbmdpbmVJZGVudGlmaWVyIDogdWludDhfdCB7CisgICAgICAgIEFWRm91bmRhdGlvbiwK
KyAgICAgICAgQVZGb3VuZGF0aW9uTVNFLAorICAgICAgICBBVkZvdW5kYXRpb25NZWRpYVN0cmVh
bSwKKyAgICAgICAgR1N0cmVhbWVyLAorICAgICAgICBHU3RyZWFtZXJNU0UsCisgICAgICAgIEhv
bGVQdW5jaCwKKyAgICAgICAgTWVkaWFGb3VuZGF0aW9uLAorICAgICAgICBNb2NrTVNFLAorICAg
IH07CiB9OwogCiBXVEY6OlN0cmluZyBjb252ZXJ0RW51bWVyYXRpb25Ub1N0cmluZyhNZWRpYVBs
YXllckVudW1zOjpSZWFkeVN0YXRlKTsKQEAgLTE0MCw3ICsxNTEsNiBAQCB0ZW1wbGF0ZTw+IHN0
cnVjdCBFbnVtVHJhaXRzPFdlYkNvcmU6Ok1lZGlhUGxheWVyRW51bXM6Ok5ldHdvcmtTdGF0ZT4g
ewogICAgID47CiB9OwogCi0KIHRlbXBsYXRlPD4gc3RydWN0IEVudW1UcmFpdHM8V2ViQ29yZTo6
TWVkaWFQbGF5ZXJFbnVtczo6UmVhZHlTdGF0ZT4gewogICAgIHVzaW5nIHZhbHVlcyA9IEVudW1W
YWx1ZXM8CiAgICAgICAgIFdlYkNvcmU6Ok1lZGlhUGxheWVyRW51bXM6OlJlYWR5U3RhdGUsCkBA
IC0xOTYsNiArMjA2LDIwIEBAIHRlbXBsYXRlPD4gc3RydWN0IEVudW1UcmFpdHM8V2ViQ29yZTo6
TWVkaWFQbGF5ZXJFbnVtczo6QnVmZmVyaW5nUG9saWN5PiB7CiAgICAgICAgIFdlYkNvcmU6Ok1l
ZGlhUGxheWVyRW51bXM6OkJ1ZmZlcmluZ1BvbGljeTo6TGltaXRSZWFkQWhlYWQsCiAgICAgICAg
IFdlYkNvcmU6Ok1lZGlhUGxheWVyRW51bXM6OkJ1ZmZlcmluZ1BvbGljeTo6TWFrZVJlc291cmNl
c1B1cmdlYWJsZSwKICAgICAgICAgV2ViQ29yZTo6TWVkaWFQbGF5ZXJFbnVtczo6QnVmZmVyaW5n
UG9saWN5OjpQdXJnZVJlc291cmNlcworICAgICAgICA+OworICAgIH07CisKK3RlbXBsYXRlPD4g
c3RydWN0IEVudW1UcmFpdHM8V2ViQ29yZTo6TWVkaWFQbGF5ZXJFbnVtczo6TWVkaWFFbmdpbmVJ
ZGVudGlmaWVyPiB7CisgICAgdXNpbmcgdmFsdWVzID0gRW51bVZhbHVlczwKKyAgICAgICAgV2Vi
Q29yZTo6TWVkaWFQbGF5ZXJFbnVtczo6TWVkaWFFbmdpbmVJZGVudGlmaWVyLAorICAgICAgICBX
ZWJDb3JlOjpNZWRpYVBsYXllckVudW1zOjpNZWRpYUVuZ2luZUlkZW50aWZpZXI6OkFWRm91bmRh
dGlvbiwKKyAgICAgICAgV2ViQ29yZTo6TWVkaWFQbGF5ZXJFbnVtczo6TWVkaWFFbmdpbmVJZGVu
dGlmaWVyOjpBVkZvdW5kYXRpb25NU0UsCisgICAgICAgIFdlYkNvcmU6Ok1lZGlhUGxheWVyRW51
bXM6Ok1lZGlhRW5naW5lSWRlbnRpZmllcjo6QVZGb3VuZGF0aW9uTWVkaWFTdHJlYW0sCisgICAg
ICAgIFdlYkNvcmU6Ok1lZGlhUGxheWVyRW51bXM6Ok1lZGlhRW5naW5lSWRlbnRpZmllcjo6R1N0
cmVhbWVyLAorICAgICAgICBXZWJDb3JlOjpNZWRpYVBsYXllckVudW1zOjpNZWRpYUVuZ2luZUlk
ZW50aWZpZXI6OkdTdHJlYW1lck1TRSwKKyAgICAgICAgV2ViQ29yZTo6TWVkaWFQbGF5ZXJFbnVt
czo6TWVkaWFFbmdpbmVJZGVudGlmaWVyOjpIb2xlUHVuY2gsCisgICAgICAgIFdlYkNvcmU6Ok1l
ZGlhUGxheWVyRW51bXM6Ok1lZGlhRW5naW5lSWRlbnRpZmllcjo6TWVkaWFGb3VuZGF0aW9uLAor
ICAgICAgICBXZWJDb3JlOjpNZWRpYVBsYXllckVudW1zOjpNZWRpYUVuZ2luZUlkZW50aWZpZXI6
Ok1vY2tNU0UKICAgICA+OwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvUGxhdGZvcm1UaW1lUmFuZ2VzLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9QbGF0Zm9ybVRpbWVSYW5nZXMuaAppbmRleCAxODg4Njk1Yzc2ZTkyNmZiM2Vk
NGIzYTUxMGM5YmIwMzNiNDM3MzMwLi5kYzU2ZGI2YzdlOGMzNDY0Yzk1MzE0YTk4YWY0YWMzNTll
MzI3M2QwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9QbGF0
Zm9ybVRpbWVSYW5nZXMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Q
bGF0Zm9ybVRpbWVSYW5nZXMuaApAQCAtMzYsMTUgKzM2LDE1IEBAIGNsYXNzIFByaW50U3RyZWFt
OwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIFBsYXRmb3JtVGltZVJhbmdlcyB7Citj
bGFzcyBXRUJDT1JFX0VYUE9SVCBQbGF0Zm9ybVRpbWVSYW5nZXMgewogICAgIFdURl9NQUtFX0ZB
U1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIGV4cGxpY2l0IFBsYXRmb3JtVGltZVJhbmdlcygp
IHsgfQogICAgIFBsYXRmb3JtVGltZVJhbmdlcyhjb25zdCBNZWRpYVRpbWUmIHN0YXJ0LCBjb25z
dCBNZWRpYVRpbWUmIGVuZCk7CiAKLSAgICBXRUJDT1JFX0VYUE9SVCBNZWRpYVRpbWUgc3RhcnQo
dW5zaWduZWQgaW5kZXgpIGNvbnN0OworICAgIE1lZGlhVGltZSBzdGFydCh1bnNpZ25lZCBpbmRl
eCkgY29uc3Q7CiAgICAgTWVkaWFUaW1lIHN0YXJ0KHVuc2lnbmVkIGluZGV4LCBib29sJiB2YWxp
ZCkgY29uc3Q7Ci0gICAgV0VCQ09SRV9FWFBPUlQgTWVkaWFUaW1lIGVuZCh1bnNpZ25lZCBpbmRl
eCkgY29uc3Q7CisgICAgTWVkaWFUaW1lIGVuZCh1bnNpZ25lZCBpbmRleCkgY29uc3Q7CiAgICAg
TWVkaWFUaW1lIGVuZCh1bnNpZ25lZCBpbmRleCwgYm9vbCYgdmFsaWQpIGNvbnN0OwogICAgIE1l
ZGlhVGltZSBkdXJhdGlvbih1bnNpZ25lZCBpbmRleCkgY29uc3Q7CiAgICAgTWVkaWFUaW1lIG1h
eGltdW1CdWZmZXJlZFRpbWUoKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9jZi9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5k
YXRpb25DRi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRp
b24vY2YvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uQ0YuY3BwCmluZGV4IDg1NjJlODQ1
ZDFmY2EwYzM5ZTZjY2ZlMWE3MTNjNWRhYjU4MTU3MjkuLmQ0MjRmMjFjNjRlM2I1ZjE5MjJhZTkw
OWM1ZGI2MjJlNzZhMWFmMTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2F2Zm91bmRhdGlvbi9jZi9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25DRi5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL2Nm
L01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbkNGLmNwcApAQCAtMzQyLDExICszNDIsMzcg
QEAgc3RhdGljIGRpc3BhdGNoX3F1ZXVlX3QgZ2xvYmFsTG9hZGVyRGVsZWdhdGVRdWV1ZSgpCiB9
CiAjZW5kaWYKIAorY2xhc3MgTWVkaWFQbGF5ZXJGYWN0b3J5QVZGb3VuZGF0aW9uQ0YgOiBwdWJs
aWMgTWVkaWFQbGF5ZXJGYWN0b3J5IHsKK3B1YmxpYzoKKyAgICBNZWRpYVBsYXllckVudW1zOjpN
ZWRpYUVuZ2luZUlkZW50aWZpZXIgaWRlbnRpZmllcigpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIE1l
ZGlhUGxheWVyRW5naW5lSWRlbnRpZmllcnM6OmF2Rm91bmRhdGlvbk1lZGlhU3RyZWFtSWRlbnRp
ZmllcigpOyB9OworCisgICAgc3RkOjp1bmlxdWVfcHRyPE1lZGlhUGxheWVyUHJpdmF0ZUludGVy
ZmFjZT4gY3JlYXRlTWVkaWFFbmdpbmVQbGF5ZXIoTWVkaWFQbGF5ZXIqIHBsYXllcikgY29uc3Qg
ZmluYWwKKyAgICB7CisgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPE1lZGlhUGxheWVyUHJpdmF0
ZUFWRm91bmRhdGlvbkNGPihwbGF5ZXIpOworICAgIH0KKworICAgIHZvaWQgZ2V0U3VwcG9ydGVk
VHlwZXMoSGFzaFNldDxTdHJpbmcsIEFTQ0lJQ2FzZUluc2Vuc2l0aXZlSGFzaD4mIHR5cGVzKSBj
b25zdCBmaW5hbAorICAgIHsKKyAgICAgICAgcmV0dXJuIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91
bmRhdGlvbkNGOjpnZXRTdXBwb3J0ZWRUeXBlcyh0eXBlcyk7CisgICAgfQorCisgICAgTWVkaWFQ
bGF5ZXI6OlN1cHBvcnRzVHlwZSBzdXBwb3J0c1R5cGVBbmRDb2RlY3MoY29uc3QgTWVkaWFFbmdp
bmVTdXBwb3J0UGFyYW1ldGVycyYgcGFyYW1ldGVycykgY29uc3QgZmluYWwKKyAgICB7CisgICAg
ICAgIHJldHVybiBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25DRjo6c3VwcG9ydHNUeXBl
KHBhcmFtZXRlcnMpOworICAgIH0KKworICAgIGJvb2wgc3VwcG9ydHNLZXlTeXN0ZW0oY29uc3Qg
U3RyaW5nJiBrZXlTeXN0ZW0sIGNvbnN0IFN0cmluZyYgbWltZVR5cGUpIGNvbnN0IGZpbmFsCisg
ICAgeworICAgICAgICByZXR1cm4gTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uQ0Y6OnN1
cHBvcnRzS2V5U3lzdGVtKGtleVN5c3RlbSwgbWltZVR5cGUpOworICAgIH0KK307CisKIHZvaWQg
TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uQ0Y6OnJlZ2lzdGVyTWVkaWFFbmdpbmUoTWVk
aWFFbmdpbmVSZWdpc3RyYXIgcmVnaXN0cmFyKQogewotICAgIGlmIChpc0F2YWlsYWJsZSgpKQot
ICAgICAgICByZWdpc3RyYXIoW10oTWVkaWFQbGF5ZXIqIHBsYXllcikgeyByZXR1cm4gbWFrZVVu
aXF1ZTxNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25DRj4ocGxheWVyKTsgfSwKLSAgICAg
ICAgICAgIGdldFN1cHBvcnRlZFR5cGVzLCBzdXBwb3J0c1R5cGUsIDAsIDAsIDAsIHN1cHBvcnRz
S2V5U3lzdGVtKTsKKyAgICBpZiAoIWlzQXZhaWxhYmxlKCkpCisgICAgICAgIHJldHVybjsKKwor
ICAgIHJlZ2lzdHJhcihtYWtlVW5pcXVlPE1lZGlhUGxheWVyRmFjdG9yeUFWRm91bmRhdGlvbkNG
PigpKTsKIH0KIAogTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uQ0Y6Ok1lZGlhUGxheWVy
UHJpdmF0ZUFWRm91bmRhdGlvbkNGKE1lZGlhUGxheWVyKiBwbGF5ZXIpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBs
YXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25P
YmpDLmgKaW5kZXggY2FkYTIzMTFiYjZjNjgyMjg5YjBmYTY2YmI2ZDhkNTEyNTkzZjYwNy4uMjhm
ZDYyZWQ0ZTZlYmRjYjA5MjFjYjViOTRiOTNiZWMwMDA1YzM0MiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQ
cml2YXRlQVZGb3VuZGF0aW9uT2JqQy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9i
akMuaApAQCAtMTYyLDYgKzE2Miw3IEBAIHB1YmxpYzoKIAogcHJpdmF0ZToKICAgICAvLyBlbmdp
bmUgc3VwcG9ydAorICAgIGZyaWVuZCBjbGFzcyBNZWRpYVBsYXllckZhY3RvcnlBVkZvdW5kYXRp
b25PYmpDOwogICAgIHN0YXRpYyB2b2lkIGdldFN1cHBvcnRlZFR5cGVzKEhhc2hTZXQ8U3RyaW5n
LCBBU0NJSUNhc2VJbnNlbnNpdGl2ZUhhc2g+JiB0eXBlcyk7CiAgICAgc3RhdGljIE1lZGlhUGxh
eWVyOjpTdXBwb3J0c1R5cGUgc3VwcG9ydHNUeXBlKGNvbnN0IE1lZGlhRW5naW5lU3VwcG9ydFBh
cmFtZXRlcnMmKTsKICAgICBzdGF0aWMgYm9vbCBzdXBwb3J0c0tleVN5c3RlbShjb25zdCBTdHJp
bmcmIGtleVN5c3RlbSwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXll
clByaXZhdGVBVkZvdW5kYXRpb25PYmpDLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2Jq
Qy5tbQppbmRleCA3MTg5MjljNjIxMjIzMTFmNjlhM2Q4ZGFlMDI4MjNkMzE2MTUyYjViLi40Y2Zj
N2Y1ZTVlNWI3N2UyNTZmZGYyN2E5MTRkMmU2MWEzMmZkZGEzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclBy
aXZhdGVBVkZvdW5kYXRpb25PYmpDLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9i
akMubW0KQEAgLTI3MywxNCArMjczLDU0IEBAIHN0YXRpYyBkaXNwYXRjaF9xdWV1ZV90IGdsb2Jh
bFB1bGxEZWxlZ2F0ZVF1ZXVlKCkKIH0KICNlbmRpZgogCitjbGFzcyBNZWRpYVBsYXllckZhY3Rv
cnlBVkZvdW5kYXRpb25PYmpDIDogcHVibGljIE1lZGlhUGxheWVyRmFjdG9yeSB7CitwdWJsaWM6
CisgICAgTWVkaWFQbGF5ZXJFbnVtczo6TWVkaWFFbmdpbmVJZGVudGlmaWVyIGlkZW50aWZpZXIo
KSBjb25zdCBmaW5hbCB7IHJldHVybiBNZWRpYVBsYXllckVudW1zOjpNZWRpYUVuZ2luZUlkZW50
aWZpZXI6OkFWRm91bmRhdGlvbjsgfTsKKworICAgIHN0ZDo6dW5pcXVlX3B0cjxNZWRpYVBsYXll
clByaXZhdGVJbnRlcmZhY2U+IGNyZWF0ZU1lZGlhRW5naW5lUGxheWVyKE1lZGlhUGxheWVyKiBw
bGF5ZXIpIGNvbnN0IGZpbmFsCisgICAgeworICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxNZWRp
YVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDPihwbGF5ZXIpOworICAgIH0KKworICAgIHZv
aWQgZ2V0U3VwcG9ydGVkVHlwZXMoSGFzaFNldDxTdHJpbmcsIEFTQ0lJQ2FzZUluc2Vuc2l0aXZl
SGFzaD4mIHR5cGVzKSBjb25zdCBmaW5hbAorICAgIHsKKyAgICAgICAgcmV0dXJuIE1lZGlhUGxh
eWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OmdldFN1cHBvcnRlZFR5cGVzKHR5cGVzKTsKKyAg
ICB9CisKKyAgICBNZWRpYVBsYXllcjo6U3VwcG9ydHNUeXBlIHN1cHBvcnRzVHlwZUFuZENvZGVj
cyhjb25zdCBNZWRpYUVuZ2luZVN1cHBvcnRQYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzKSBjb25zdCBm
aW5hbAorICAgIHsKKyAgICAgICAgcmV0dXJuIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlv
bk9iakM6OnN1cHBvcnRzVHlwZShwYXJhbWV0ZXJzKTsKKyAgICB9CisKKyAgICBIYXNoU2V0PFJl
ZlB0cjxTZWN1cml0eU9yaWdpbj4+IG9yaWdpbnNJbk1lZGlhQ2FjaGUoY29uc3QgU3RyaW5nJiBw
YXRoKSBjb25zdCBmaW5hbAorICAgIHsKKyAgICAgICAgcmV0dXJuIE1lZGlhUGxheWVyUHJpdmF0
ZUFWRm91bmRhdGlvbk9iakM6Om9yaWdpbnNJbk1lZGlhQ2FjaGUocGF0aCk7CisgICAgfQorCisg
ICAgdm9pZCBjbGVhck1lZGlhQ2FjaGUoY29uc3QgU3RyaW5nJiBwYXRoLCBXYWxsVGltZSBtb2Rp
ZmllZFNpbmNlKSBjb25zdCBmaW5hbAorICAgIHsKKyAgICAgICAgcmV0dXJuIE1lZGlhUGxheWVy
UHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OmNsZWFyTWVkaWFDYWNoZShwYXRoLCBtb2RpZmllZFNp
bmNlKTsKKyAgICB9CisKKyAgICB2b2lkIGNsZWFyTWVkaWFDYWNoZUZvck9yaWdpbnMoY29uc3Qg
U3RyaW5nJiBwYXRoLCBjb25zdCBIYXNoU2V0PFJlZlB0cjxTZWN1cml0eU9yaWdpbj4+JiBvcmln
aW5zKSBjb25zdCBmaW5hbAorICAgIHsKKyAgICAgICAgcmV0dXJuIE1lZGlhUGxheWVyUHJpdmF0
ZUFWRm91bmRhdGlvbk9iakM6OmNsZWFyTWVkaWFDYWNoZUZvck9yaWdpbnMocGF0aCwgb3JpZ2lu
cyk7CisgICAgfQorCisgICAgYm9vbCBzdXBwb3J0c0tleVN5c3RlbShjb25zdCBTdHJpbmcmIGtl
eVN5c3RlbSwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSkgY29uc3QgZmluYWwKKyAgICB7CisgICAg
ICAgIHJldHVybiBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpzdXBwb3J0c0tl
eVN5c3RlbShrZXlTeXN0ZW0sIG1pbWVUeXBlKTsKKyAgICB9Cit9OworCiB2b2lkIE1lZGlhUGxh
eWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OnJlZ2lzdGVyTWVkaWFFbmdpbmUoTWVkaWFFbmdp
bmVSZWdpc3RyYXIgcmVnaXN0cmFyKQogewogICAgIGlmICghaXNBdmFpbGFibGUoKSkKICAgICAg
ICAgcmV0dXJuOwogCi0gICAgcmVnaXN0cmFyKFtdKE1lZGlhUGxheWVyKiBwbGF5ZXIpIHsgcmV0
dXJuIG1ha2VVbmlxdWU8TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQz4ocGxheWVy
KTsgfSwKLSAgICAgICAgICAgIGdldFN1cHBvcnRlZFR5cGVzLCBzdXBwb3J0c1R5cGUsIG9yaWdp
bnNJbk1lZGlhQ2FjaGUsIGNsZWFyTWVkaWFDYWNoZSwgY2xlYXJNZWRpYUNhY2hlRm9yT3JpZ2lu
cywgc3VwcG9ydHNLZXlTeXN0ZW0pOwogICAgIEFTU0VSVChBVkFzc2V0TUlNRVR5cGVDYWNoZTo6
c2luZ2xldG9uKCkuaXNBdmFpbGFibGUoKSk7CisKKyAgICByZWdpc3RyYXIobWFrZVVuaXF1ZTxN
ZWRpYVBsYXllckZhY3RvcnlBVkZvdW5kYXRpb25PYmpDPigpKTsKIH0KIAogc3RhdGljIEFWQXNz
ZXRDYWNoZSAqYXNzZXRDYWNoZUZvclBhdGgoY29uc3QgU3RyaW5nJiBwYXRoKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVk
aWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDLm1tIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFT
b3VyY2VBVkZPYmpDLm1tCmluZGV4IGRmZjNlMjQ1MmJmNWFlMjVhYzQ2MzA1YjEwMzlmZTI4NzNj
OThiNWYuLmVmNjkyNjhiYzUzZmIwOTI0ZWM4MTBhYzIxZWU0YmE3YzE0MjZmYTkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01l
ZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQy5tbQorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVN
ZWRpYVNvdXJjZUFWRk9iakMubW0KQEAgLTE5NiwxNCArMTk2LDM0IEBAIE1lZGlhUGxheWVyUHJp
dmF0ZU1lZGlhU291cmNlQVZGT2JqQzo6fk1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZG
T2JqQygpCiAjcHJhZ21hIG1hcmsgLQogI3ByYWdtYSBtYXJrIE1lZGlhUGxheWVyIEZhY3Rvcnkg
TWV0aG9kcwogCitjbGFzcyBNZWRpYVBsYXllckZhY3RvcnlNZWRpYVNvdXJjZUFWRk9iakMgOiBw
dWJsaWMgTWVkaWFQbGF5ZXJGYWN0b3J5IHsKK3B1YmxpYzoKKyAgICBNZWRpYVBsYXllckVudW1z
OjpNZWRpYUVuZ2luZUlkZW50aWZpZXIgaWRlbnRpZmllcigpIGNvbnN0IGZpbmFsIHsgcmV0dXJu
IE1lZGlhUGxheWVyRW51bXM6Ok1lZGlhRW5naW5lSWRlbnRpZmllcjo6QVZGb3VuZGF0aW9uTVNF
OyB9OworCisgICAgc3RkOjp1bmlxdWVfcHRyPE1lZGlhUGxheWVyUHJpdmF0ZUludGVyZmFjZT4g
Y3JlYXRlTWVkaWFFbmdpbmVQbGF5ZXIoTWVkaWFQbGF5ZXIqIHBsYXllcikgY29uc3QgZmluYWwK
KyAgICB7CisgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlh
U291cmNlQVZGT2JqQz4ocGxheWVyKTsgICAgICAgIAorICAgIH0KKworICAgIHZvaWQgZ2V0U3Vw
cG9ydGVkVHlwZXMoSGFzaFNldDxTdHJpbmcsIEFTQ0lJQ2FzZUluc2Vuc2l0aXZlSGFzaD4mIHR5
cGVzKSBjb25zdCBmaW5hbAorICAgIHsKKyAgICAgICAgcmV0dXJuIE1lZGlhUGxheWVyUHJpdmF0
ZU1lZGlhU291cmNlQVZGT2JqQzo6Z2V0U3VwcG9ydGVkVHlwZXModHlwZXMpOworICAgIH0KKwor
ICAgIE1lZGlhUGxheWVyOjpTdXBwb3J0c1R5cGUgc3VwcG9ydHNUeXBlQW5kQ29kZWNzKGNvbnN0
IE1lZGlhRW5naW5lU3VwcG9ydFBhcmFtZXRlcnMmIHBhcmFtZXRlcnMpIGNvbnN0IGZpbmFsCisg
ICAgeworICAgICAgICByZXR1cm4gTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpD
OjpzdXBwb3J0c1R5cGUocGFyYW1ldGVycyk7CisgICAgfQorfTsKKwogdm9pZCBNZWRpYVBsYXll
clByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakM6OnJlZ2lzdGVyTWVkaWFFbmdpbmUoTWVkaWFFbmdp
bmVSZWdpc3RyYXIgcmVnaXN0cmFyKQogewogICAgIGlmICghaXNBdmFpbGFibGUoKSkKICAgICAg
ICAgcmV0dXJuOwogCi0gICAgcmVnaXN0cmFyKFtdKE1lZGlhUGxheWVyKiBwbGF5ZXIpIHsgcmV0
dXJuIG1ha2VVbmlxdWU8TWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDPihwbGF5
ZXIpOyB9LAotICAgICAgICBnZXRTdXBwb3J0ZWRUeXBlcywgc3VwcG9ydHNUeXBlLCAwLCAwLCAw
LCAwKTsKICAgICBBU1NFUlQoQVZBc3NldE1JTUVUeXBlQ2FjaGU6OnNpbmdsZXRvbigpLmlzQXZh
aWxhYmxlKCkpOworCisgICAgcmVnaXN0cmFyKG1ha2VVbmlxdWU8TWVkaWFQbGF5ZXJGYWN0b3J5
TWVkaWFTb3VyY2VBVkZPYmpDPigpKTsKIH0KIAogYm9vbCBNZWRpYVBsYXllclByaXZhdGVNZWRp
YVNvdXJjZUFWRk9iakM6OmlzQXZhaWxhYmxlKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZU1l
ZGlhU3RyZWFtQVZGT2JqQy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2
Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQy5tbQpp
bmRleCAyNTE5YzExNGY0MDg5NjlhM2M0MGJlYjM4NTQzNTkwOGYwYjI1YjE3Li4wN2JiZmFiYjBh
YzkyODNkNDU2YjEyZTIyMzQ4M2NkNzcyZTNkMGE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVN
ZWRpYVN0cmVhbUFWRk9iakMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpD
Lm1tCkBAIC0yMjAsMTEgKzIyMCwzMiBAQCBNZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFW
Rk9iakM6On5NZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakMoKQogI3ByYWdtYSBt
YXJrIC0KICNwcmFnbWEgbWFyayBNZWRpYVBsYXllciBGYWN0b3J5IE1ldGhvZHMKIAorY2xhc3Mg
TWVkaWFQbGF5ZXJGYWN0b3J5TWVkaWFTdHJlYW1BVkZPYmpDIDogcHVibGljIE1lZGlhUGxheWVy
RmFjdG9yeSB7CitwdWJsaWM6CisgICAgTWVkaWFQbGF5ZXJFbnVtczo6TWVkaWFFbmdpbmVJZGVu
dGlmaWVyIGlkZW50aWZpZXIoKSBjb25zdCBmaW5hbCB7IHJldHVybiBNZWRpYVBsYXllckVudW1z
OjpNZWRpYUVuZ2luZUlkZW50aWZpZXI6OkFWRm91bmRhdGlvbk1lZGlhU3RyZWFtOyB9OworCisg
ICAgc3RkOjp1bmlxdWVfcHRyPE1lZGlhUGxheWVyUHJpdmF0ZUludGVyZmFjZT4gY3JlYXRlTWVk
aWFFbmdpbmVQbGF5ZXIoTWVkaWFQbGF5ZXIqIHBsYXllcikgY29uc3QgZmluYWwKKyAgICB7Cisg
ICAgICAgIHJldHVybiBtYWtlVW5pcXVlPE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZG
T2JqQz4ocGxheWVyKTsKKyAgICB9CisKKyAgICB2b2lkIGdldFN1cHBvcnRlZFR5cGVzKEhhc2hT
ZXQ8U3RyaW5nLCBBU0NJSUNhc2VJbnNlbnNpdGl2ZUhhc2g+JiB0eXBlcykgY29uc3QgZmluYWwK
KyAgICB7CisgICAgICAgIHJldHVybiBNZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9i
akM6OmdldFN1cHBvcnRlZFR5cGVzKHR5cGVzKTsKKyAgICB9CisKKyAgICBNZWRpYVBsYXllcjo6
U3VwcG9ydHNUeXBlIHN1cHBvcnRzVHlwZUFuZENvZGVjcyhjb25zdCBNZWRpYUVuZ2luZVN1cHBv
cnRQYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzKSBjb25zdCBmaW5hbAorICAgIHsKKyAgICAgICAgcmV0
dXJuIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQzo6c3VwcG9ydHNUeXBlKHBh
cmFtZXRlcnMpOworICAgIH0KK307CisKIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJl
YW1BVkZPYmpDOjpyZWdpc3Rlck1lZGlhRW5naW5lKE1lZGlhRW5naW5lUmVnaXN0cmFyIHJlZ2lz
dHJhcikKIHsKLSAgICBpZiAoaXNBdmFpbGFibGUoKSkKLSAgICAgICAgcmVnaXN0cmFyKFtdKE1l
ZGlhUGxheWVyKiBwbGF5ZXIpIHsgcmV0dXJuIG1ha2VVbmlxdWU8TWVkaWFQbGF5ZXJQcml2YXRl
TWVkaWFTdHJlYW1BVkZPYmpDPihwbGF5ZXIpOyB9LCBnZXRTdXBwb3J0ZWRUeXBlcywKLSAgICAg
ICAgICAgIHN1cHBvcnRzVHlwZSwgMCwgMCwgMCwgMCk7CisgICAgaWYgKCFpc0F2YWlsYWJsZSgp
KQorICAgICAgICByZXR1cm47CisKKyAgICByZWdpc3RyYXIobWFrZVVuaXF1ZTxNZWRpYVBsYXll
ckZhY3RvcnlNZWRpYVN0cmVhbUFWRk9iakM+KCkpOwogfQogCiBib29sIE1lZGlhUGxheWVyUHJp
dmF0ZU1lZGlhU3RyZWFtQVZGT2JqQzo6aXNBdmFpbGFibGUoKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdT
dHJlYW1lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIv
TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmNwcAppbmRleCBkNDg4NTQyMjY3YTM3YTJiMzhk
NTliM2QzOGJmNDI5MTlhNGExNzg1Li40YzU3ZTU2OWI4MWQ4MmRlZjY0Y2Y5N2U2ZjI1N2M2ODVm
YjkwZmQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3Ry
ZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVy
LmNwcApAQCAtNDY0LDE0ICs0NjQsMzcgQEAgYm9vbCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFt
ZXI6OmlzQXZhaWxhYmxlKCkKICAgICByZXR1cm4gZmFjdG9yeTsKIH0KIAorY2xhc3MgTWVkaWFQ
bGF5ZXJGYWN0b3J5R1N0cmVhbWVyIDogcHVibGljIE1lZGlhUGxheWVyRmFjdG9yeSB7CitwdWJs
aWM6CisgICAgTWVkaWFQbGF5ZXJFbnVtczo6TWVkaWFFbmdpbmVJZGVudGlmaWVyIGlkZW50aWZp
ZXIoKSBjb25zdCBmaW5hbCB7IHJldHVybiBNZWRpYVBsYXllckVudW1zOjpNZWRpYUVuZ2luZUlk
ZW50aWZpZXI6OkdTdHJlYW1lcjsgfTsKKworICAgIHN0ZDo6dW5pcXVlX3B0cjxNZWRpYVBsYXll
clByaXZhdGVJbnRlcmZhY2U+IGNyZWF0ZU1lZGlhRW5naW5lUGxheWVyKE1lZGlhUGxheWVyKiBw
bGF5ZXIpIGNvbnN0IGZpbmFsCisgICAgeworICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxNZWRp
YVBsYXllclByaXZhdGVHU3RyZWFtZXI+KHBsYXllcik7CisgICAgfQorCisgICAgdm9pZCBnZXRT
dXBwb3J0ZWRUeXBlcyhIYXNoU2V0PFN0cmluZywgQVNDSUlDYXNlSW5zZW5zaXRpdmVIYXNoPiYg
dHlwZXMpIGNvbnN0IGZpbmFsCisgICAgeworICAgICAgICByZXR1cm4gTWVkaWFQbGF5ZXJQcml2
YXRlR1N0cmVhbWVyOjpnZXRTdXBwb3J0ZWRUeXBlcyh0eXBlcyk7CisgICAgfQorCisgICAgTWVk
aWFQbGF5ZXI6OlN1cHBvcnRzVHlwZSBzdXBwb3J0c1R5cGVBbmRDb2RlY3MoY29uc3QgTWVkaWFF
bmdpbmVTdXBwb3J0UGFyYW1ldGVycyYgcGFyYW1ldGVycykgY29uc3QgZmluYWwKKyAgICB7Cisg
ICAgICAgIHJldHVybiBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6OnN1cHBvcnRzVHlwZShw
YXJhbWV0ZXJzKTsKKyAgICB9CisKKyAgICBib29sIHN1cHBvcnRzS2V5U3lzdGVtKGNvbnN0IFN0
cmluZyYga2V5U3lzdGVtLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlKSBjb25zdCBmaW5hbAorICAg
IHsKKyAgICAgICAgcmV0dXJuIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6c3VwcG9ydHNL
ZXlTeXN0ZW0oa2V5U3lzdGVtLCBtaW1lVHlwZSk7CisgICAgfQorfTsKKwogdm9pZCBNZWRpYVBs
YXllclByaXZhdGVHU3RyZWFtZXI6OnJlZ2lzdGVyTWVkaWFFbmdpbmUoTWVkaWFFbmdpbmVSZWdp
c3RyYXIgcmVnaXN0cmFyKQogewogICAgIGluaXRpYWxpemVEZWJ1Z0NhdGVnb3J5KCk7CiAKLSAg
ICBpZiAoaXNBdmFpbGFibGUoKSkgewotICAgICAgICByZWdpc3RyYXIoW10oTWVkaWFQbGF5ZXIq
IHBsYXllcikgeyByZXR1cm4gbWFrZVVuaXF1ZTxNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI+
KHBsYXllcik7IH0sCi0gICAgICAgICAgICBnZXRTdXBwb3J0ZWRUeXBlcywgc3VwcG9ydHNUeXBl
LCBudWxscHRyLCBudWxscHRyLCBudWxscHRyLCBzdXBwb3J0c0tleVN5c3RlbSk7Ci0gICAgfQor
ICAgIGlmIChpc0F2YWlsYWJsZSgpKQorICAgICAgICByZWdpc3RyYXIobWFrZVVuaXF1ZTxNZWRp
YVBsYXllckZhY3RvcnlHU3RyZWFtZXI+KCkpOwogfQogCiB2b2lkIE1lZGlhUGxheWVyUHJpdmF0
ZUdTdHJlYW1lcjo6bG9hZEZ1bGwoY29uc3QgU3RyaW5nJiB1cmxTdHJpbmcsIGNvbnN0IFN0cmlu
ZyYgcGlwZWxpbmVOYW1lKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJl
YW1lci5oCmluZGV4IGY5YzQ3YTFmNjAxMjRiOThiZmNjYmFlMWM3M2E0YTA0NTE4NTM4ZDEuLjg1
MTY1ZDFiZjEyOWNlY2UxYTEyNmQxYzMwNGQzZmM5NjJlNzI1MzggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVH
U3RyZWFtZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFt
ZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmgKQEAgLTM5NCw2ICszOTQsNyBAQCBwcml2
YXRlOgogICAgIEdzdEVsZW1lbnQqIGNyZWF0ZUF1ZGlvU2luaygpOwogICAgIEdzdEVsZW1lbnQq
IGF1ZGlvU2luaygpIGNvbnN0OwogCisgICAgZnJpZW5kIGNsYXNzIE1lZGlhUGxheWVyRmFjdG9y
eUdTdHJlYW1lcjsKICAgICBzdGF0aWMgdm9pZCBnZXRTdXBwb3J0ZWRUeXBlcyhIYXNoU2V0PFN0
cmluZywgQVNDSUlDYXNlSW5zZW5zaXRpdmVIYXNoPiYpOwogICAgIHN0YXRpYyBNZWRpYVBsYXll
cjo6U3VwcG9ydHNUeXBlIHN1cHBvcnRzVHlwZShjb25zdCBNZWRpYUVuZ2luZVN1cHBvcnRQYXJh
bWV0ZXJzJik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2dzdHJlYW1lci9tc2UvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyTVNFLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9tc2UvTWVkaWFQbGF5ZXJQcml2
YXRlR1N0cmVhbWVyTVNFLmNwcAppbmRleCA4MjAxNTVlNTRkODg3ZTUxNjdhMzQwYWRkM2M0YjMx
ZDQ5NmU1NmFiLi5jOTBiMjEwMWZkZDA0NjZkOTYxMDM3MDBmNWU3ZTA2NmNiYzRmOGIyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvbXNlL01l
ZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lck1TRS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL21zZS9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJN
U0UuY3BwCkBAIC03MiwxNCArNzIsMzcgQEAgR1NUX0RFQlVHX0NBVEVHT1JZKHdlYmtpdF9tc2Vf
ZGVidWcpOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK2NsYXNzIE1lZGlhUGxheWVyRmFjdG9y
eUdTdHJlYW1lck1TRSA6IHB1YmxpYyBNZWRpYVBsYXllckZhY3RvcnkgeworcHVibGljOgorICAg
IE1lZGlhUGxheWVyRW51bXM6Ok1lZGlhRW5naW5lSWRlbnRpZmllciBpZGVudGlmaWVyKCkgY29u
c3QgZmluYWwgeyByZXR1cm4gTWVkaWFQbGF5ZXJFbnVtczo6TWVkaWFFbmdpbmVJZGVudGlmaWVy
OjpHU3RyZWFtZXJNU0U7IH07CisKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8TWVkaWFQbGF5ZXJQcml2
YXRlSW50ZXJmYWNlPiBjcmVhdGVNZWRpYUVuZ2luZVBsYXllcihNZWRpYVBsYXllciogcGxheWVy
KSBjb25zdCBmaW5hbAorICAgIHsKKyAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8TWVkaWFQbGF5
ZXJQcml2YXRlR1N0cmVhbWVyTVNFPihwbGF5ZXIpOworICAgIH0KKworICAgIHZvaWQgZ2V0U3Vw
cG9ydGVkVHlwZXMoSGFzaFNldDxTdHJpbmcsIEFTQ0lJQ2FzZUluc2Vuc2l0aXZlSGFzaD4mIHR5
cGVzKSBjb25zdCBmaW5hbAorICAgIHsKKyAgICAgICAgcmV0dXJuIE1lZGlhUGxheWVyUHJpdmF0
ZUdTdHJlYW1lck1TRTo6Z2V0U3VwcG9ydGVkVHlwZXModHlwZXMpOworICAgIH0KKworICAgIE1l
ZGlhUGxheWVyOjpTdXBwb3J0c1R5cGUgc3VwcG9ydHNUeXBlQW5kQ29kZWNzKGNvbnN0IE1lZGlh
RW5naW5lU3VwcG9ydFBhcmFtZXRlcnMmIHBhcmFtZXRlcnMpIGNvbnN0IGZpbmFsCisgICAgewor
ICAgICAgICByZXR1cm4gTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyTVNFOjpzdXBwb3J0c1R5
cGUocGFyYW1ldGVycyk7CisgICAgfQorCisgICAgYm9vbCBzdXBwb3J0c0tleVN5c3RlbShjb25z
dCBTdHJpbmcmIGtleVN5c3RlbSwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSkgY29uc3QgZmluYWwK
KyAgICB7CisgICAgICAgIHJldHVybiBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJNU0U6OnN1
cHBvcnRzS2V5U3lzdGVtKGtleVN5c3RlbSwgbWltZVR5cGUpOworICAgIH0KK307CisKIHZvaWQg
TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyTVNFOjpyZWdpc3Rlck1lZGlhRW5naW5lKE1lZGlh
RW5naW5lUmVnaXN0cmFyIHJlZ2lzdHJhcikKIHsKICAgICBpbml0aWFsaXplR1N0cmVhbWVyQW5k
UmVnaXN0ZXJXZWJLaXRFbGVtZW50cygpOwogICAgIEdTVF9ERUJVR19DQVRFR09SWV9JTklUKHdl
YmtpdF9tc2VfZGVidWcsICJ3ZWJraXRtc2UiLCAwLCAiV2ViS2l0IE1TRSBtZWRpYSBwbGF5ZXIi
KTsKLSAgICBpZiAoaXNBdmFpbGFibGUoKSkgewotICAgICAgICByZWdpc3RyYXIoW10oTWVkaWFQ
bGF5ZXIqIHBsYXllcikgeyByZXR1cm4gbWFrZVVuaXF1ZTxNZWRpYVBsYXllclByaXZhdGVHU3Ry
ZWFtZXJNU0U+KHBsYXllcik7IH0sCi0gICAgICAgICAgICBnZXRTdXBwb3J0ZWRUeXBlcywgc3Vw
cG9ydHNUeXBlLCBudWxscHRyLCBudWxscHRyLCBudWxscHRyLCBzdXBwb3J0c0tleVN5c3RlbSk7
Ci0gICAgfQorICAgIGlmIChpc0F2YWlsYWJsZSgpKQorICAgICAgICByZWdpc3RyYXIobWFrZVVu
aXF1ZTxNZWRpYVBsYXllckZhY3RvcnlHU3RyZWFtZXJNU0U+KCkpOwogfQogCiBNZWRpYVBsYXll
clByaXZhdGVHU3RyZWFtZXJNU0U6Ok1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lck1TRShNZWRp
YVBsYXllciogcGxheWVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZ3N0cmVhbWVyL21zZS9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJNU0UuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9tc2UvTWVkaWFQbGF5ZXJQ
cml2YXRlR1N0cmVhbWVyTVNFLmgKaW5kZXggOWIzMzMwNWY3ZjExNmRhYzkxYzY0MWM0ODQ1OTNi
ZTdhODMwNzM1Zi4uNWQxMDEzZmNiZWYwNTc5MzQ4MGJiMzhlZGVmZTRiNjRmMGFjZjQyYyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL21zZS9N
ZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJNU0UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvbXNlL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lck1T
RS5oCkBAIC04NSw2ICs4NSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHVuYmxvY2tEdXJhdGlvbkNo
YW5nZXMoKTsKIAogcHJpdmF0ZToKKyAgICBmcmllbmQgY2xhc3MgTWVkaWFQbGF5ZXJGYWN0b3J5
R1N0cmVhbWVyTVNFOwogICAgIHN0YXRpYyB2b2lkIGdldFN1cHBvcnRlZFR5cGVzKEhhc2hTZXQ8
U3RyaW5nLCBBU0NJSUNhc2VJbnNlbnNpdGl2ZUhhc2g+Jik7CiAgICAgc3RhdGljIE1lZGlhUGxh
eWVyOjpTdXBwb3J0c1R5cGUgc3VwcG9ydHNUeXBlKGNvbnN0IE1lZGlhRW5naW5lU3VwcG9ydFBh
cmFtZXRlcnMmKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvaG9sZXB1bmNoL01lZGlhUGxheWVyUHJpdmF0ZUhvbGVQdW5jaC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ob2xlcHVuY2gvTWVkaWFQbGF5ZXJQcml2YXRlSG9sZVB1
bmNoLmNwcAppbmRleCBiOGM0ZTAxZmFkZjQxM2FkZGM3MTU0ZTFlYWYxZjViYjA1NTM2YTBjLi4w
NjJjYWIyYWEyYmU1YjUzNDFiZWE2OTM0MWVlNWU1YjFiODg3ZTc0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ob2xlcHVuY2gvTWVkaWFQbGF5ZXJQcml2YXRl
SG9sZVB1bmNoLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ob2xl
cHVuY2gvTWVkaWFQbGF5ZXJQcml2YXRlSG9sZVB1bmNoLmNwcApAQCAtMTM5LDEwICsxMzksMjkg
QEAgTWVkaWFQbGF5ZXI6OlN1cHBvcnRzVHlwZSBNZWRpYVBsYXllclByaXZhdGVIb2xlUHVuY2g6
OnN1cHBvcnRzVHlwZShjb25zdCBNZWRpYUUKICAgICByZXR1cm4gTWVkaWFQbGF5ZXI6OlN1cHBv
cnRzVHlwZTo6SXNOb3RTdXBwb3J0ZWQ7CiB9CiAKK2NsYXNzIE1lZGlhUGxheWVyRmFjdG9yeUhv
bGVQdW5jaCA6IHB1YmxpYyBNZWRpYVBsYXllckZhY3RvcnkgeworcHVibGljOgorICAgIE1lZGlh
UGxheWVyRW51bXM6Ok1lZGlhRW5naW5lSWRlbnRpZmllciBpZGVudGlmaWVyKCkgY29uc3QgZmlu
YWwgeyByZXR1cm4gTWVkaWFQbGF5ZXJFbnVtczo6TWVkaWFFbmdpbmVJZGVudGlmaWVyOjpIb2xl
UHVuY2g7IH07CisKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8TWVkaWFQbGF5ZXJQcml2YXRlSW50ZXJm
YWNlPiBjcmVhdGVNZWRpYUVuZ2luZVBsYXllcihNZWRpYVBsYXllciogcGxheWVyKSBjb25zdCBm
aW5hbAorICAgIHsKKyAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8TWVkaWFQbGF5ZXJQcml2YXRl
SG9sZVB1bmNoPihwbGF5ZXIpOworICAgIH0KKworICAgIHZvaWQgZ2V0U3VwcG9ydGVkVHlwZXMo
SGFzaFNldDxTdHJpbmcsIEFTQ0lJQ2FzZUluc2Vuc2l0aXZlSGFzaD4mIHR5cGVzKSBjb25zdCBm
aW5hbAorICAgIHsKKyAgICAgICAgcmV0dXJuIE1lZGlhUGxheWVyUHJpdmF0ZUhvbGVQdW5jaDo6
Z2V0U3VwcG9ydGVkVHlwZXModHlwZXMpOworICAgIH0KKworICAgIE1lZGlhUGxheWVyOjpTdXBw
b3J0c1R5cGUgc3VwcG9ydHNUeXBlQW5kQ29kZWNzKGNvbnN0IE1lZGlhRW5naW5lU3VwcG9ydFBh
cmFtZXRlcnMmIHBhcmFtZXRlcnMpIGNvbnN0IGZpbmFsCisgICAgeworICAgICAgICByZXR1cm4g
TWVkaWFQbGF5ZXJQcml2YXRlSG9sZVB1bmNoOjpzdXBwb3J0c1R5cGUocGFyYW1ldGVycyk7Cisg
ICAgfQorfTsKKwogdm9pZCBNZWRpYVBsYXllclByaXZhdGVIb2xlUHVuY2g6OnJlZ2lzdGVyTWVk
aWFFbmdpbmUoTWVkaWFFbmdpbmVSZWdpc3RyYXIgcmVnaXN0cmFyKQogewotICAgIHJlZ2lzdHJh
cihbXShNZWRpYVBsYXllciogcGxheWVyKSB7IHJldHVybiBtYWtlVW5pcXVlPE1lZGlhUGxheWVy
UHJpdmF0ZUhvbGVQdW5jaD4ocGxheWVyKTsgfSwKLSAgICAgICAgZ2V0U3VwcG9ydGVkVHlwZXMs
IHN1cHBvcnRzVHlwZSwgbnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0cik7CisgICAg
cmVnaXN0cmFyKG1ha2VVbmlxdWU8TWVkaWFQbGF5ZXJGYWN0b3J5SG9sZVB1bmNoPigpKTsKIH0K
IAogdm9pZCBNZWRpYVBsYXllclByaXZhdGVIb2xlUHVuY2g6Om5vdGlmeVJlYWR5U3RhdGUoKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvaG9sZXB1bmNoL01l
ZGlhUGxheWVyUHJpdmF0ZUhvbGVQdW5jaC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvaG9sZXB1bmNoL01lZGlhUGxheWVyUHJpdmF0ZUhvbGVQdW5jaC5oCmluZGV4IDlhMTA4
N2QzMmIyNWIzYzMwZGNkZGJlYjQwMDhjYTA1MDA5NTdmNWEuLjNiMzRiZmE5MmFiYmY0ODFhMWI1
NDIyY2I1NWFmNjU1ZTYzNmJhMGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2hvbGVwdW5jaC9NZWRpYVBsYXllclByaXZhdGVIb2xlUHVuY2guaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ob2xlcHVuY2gvTWVkaWFQbGF5ZXJQcml2
YXRlSG9sZVB1bmNoLmgKQEAgLTk4LDYgKzk4LDcgQEAgcHVibGljOgogI2VuZGlmCiAKIHByaXZh
dGU6CisgICAgZnJpZW5kIGNsYXNzIE1lZGlhUGxheWVyRmFjdG9yeUhvbGVQdW5jaDsKICAgICBz
dGF0aWMgdm9pZCBnZXRTdXBwb3J0ZWRUeXBlcyhIYXNoU2V0PFN0cmluZywgQVNDSUlDYXNlSW5z
ZW5zaXRpdmVIYXNoPiYpOwogICAgIHN0YXRpYyBNZWRpYVBsYXllcjo6U3VwcG9ydHNUeXBlIHN1
cHBvcnRzVHlwZShjb25zdCBNZWRpYUVuZ2luZVN1cHBvcnRQYXJhbWV0ZXJzJik7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9NZWRpYVBsYXllclBy
aXZhdGVNZWRpYUZvdW5kYXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3Mvd2luL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhRm91bmRhdGlvbi5jcHAKaW5kZXggYmJiYjQz
MjJlZDNhNzViZjgxZDBiZjQ3NzYyZjA1MDgyYzM5NGJiMC4uNTkwYWJhZGQ3ZDcxNTRjYzlkYjJj
Mzc3NjI0M2I2NWM1NDhkNmQ4NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3Mvd2luL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhRm91bmRhdGlvbi5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL01lZGlhUGxheWVyUHJpdmF0ZU1l
ZGlhRm91bmRhdGlvbi5jcHAKQEAgLTc5LDEyICs3OSwzMCBAQCBNZWRpYVBsYXllclByaXZhdGVN
ZWRpYUZvdW5kYXRpb246On5NZWRpYVBsYXllclByaXZhdGVNZWRpYUZvdW5kYXRpb24oKQogICAg
IGVuZFNlc3Npb24oKTsKIH0KIAorY2xhc3MgTWVkaWFQbGF5ZXJGYWN0b3J5TWVkaWFGb3VuZGF0
aW9uIDogcHVibGljIE1lZGlhUGxheWVyRmFjdG9yeSB7CitwdWJsaWM6CisgICAgTWVkaWFQbGF5
ZXJFbnVtczo6TWVkaWFFbmdpbmVJZGVudGlmaWVyIGlkZW50aWZpZXIoKSBjb25zdCBmaW5hbCB7
IHJldHVybiBNZWRpYVBsYXllckVudW1zOjpNZWRpYUVuZ2luZUlkZW50aWZpZXI6Ok1lZGlhRm91
bmRhdGlvbjsgfTsKKworICAgIHN0ZDo6dW5pcXVlX3B0cjxNZWRpYVBsYXllclByaXZhdGVJbnRl
cmZhY2U+IGNyZWF0ZU1lZGlhRW5naW5lUGxheWVyKE1lZGlhUGxheWVyKiBwbGF5ZXIpIGNvbnN0
IGZpbmFsCisgICAgeworICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxNZWRpYVBsYXllclByaXZh
dGVNZWRpYUZvdW5kYXRpb24+KHBsYXllcik7CisgICAgfQorCisgICAgdm9pZCBnZXRTdXBwb3J0
ZWRUeXBlcyhIYXNoU2V0PFN0cmluZywgQVNDSUlDYXNlSW5zZW5zaXRpdmVIYXNoPiYgdHlwZXMp
IGNvbnN0IGZpbmFsCisgICAgeworICAgICAgICByZXR1cm4gTWVkaWFQbGF5ZXJQcml2YXRlTWVk
aWFGb3VuZGF0aW9uOjpnZXRTdXBwb3J0ZWRUeXBlcyh0eXBlcyk7CisgICAgfQorCisgICAgTWVk
aWFQbGF5ZXI6OlN1cHBvcnRzVHlwZSBzdXBwb3J0c1R5cGVBbmRDb2RlY3MoY29uc3QgTWVkaWFF
bmdpbmVTdXBwb3J0UGFyYW1ldGVycyYgcGFyYW1ldGVycykgY29uc3QgZmluYWwKKyAgICB7Cisg
ICAgICAgIHJldHVybiBNZWRpYVBsYXllclByaXZhdGVNZWRpYUZvdW5kYXRpb246OnN1cHBvcnRz
VHlwZShwYXJhbWV0ZXJzKTsKKyAgICB9Cit9OworCiB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZU1l
ZGlhRm91bmRhdGlvbjo6cmVnaXN0ZXJNZWRpYUVuZ2luZShNZWRpYUVuZ2luZVJlZ2lzdHJhciBy
ZWdpc3RyYXIpCiB7Ci0gICAgaWYgKGlzQXZhaWxhYmxlKCkpIHsKLSAgICAgICAgcmVnaXN0cmFy
KFtdKE1lZGlhUGxheWVyKiBwbGF5ZXIpIHsgcmV0dXJuIG1ha2VVbmlxdWU8TWVkaWFQbGF5ZXJQ
cml2YXRlTWVkaWFGb3VuZGF0aW9uPihwbGF5ZXIpOyB9LAotICAgICAgICAgICAgZ2V0U3VwcG9y
dGVkVHlwZXMsIHN1cHBvcnRzVHlwZSwgMCwgMCwgMCwgMCk7Ci0gICAgfQorICAgIGlmIChpc0F2
YWlsYWJsZSgpKQorICAgICAgICByZWdpc3RyYXIobWFrZVVuaXF1ZTxNZWRpYVBsYXllckZhY3Rv
cnlNZWRpYUZvdW5kYXRpb24+KCkpOwogfQogCiBib29sIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlh
Rm91bmRhdGlvbjo6aXNBdmFpbGFibGUoKSAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21vY2svbWVkaWFzb3VyY2UvTW9ja01lZGlhUGxheWVyTWVkaWFTb3VyY2UuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9tZWRpYXNvdXJjZS9Nb2NrTWVkaWFQbGF5ZXJN
ZWRpYVNvdXJjZS5jcHAKaW5kZXggMDFhNmEwMDMwZjRmNDYxZDQ2NzI3YmI2OTYwMTY1YWI5YmNm
YTFjOC4uNGFjNjQwYjRjMDJlYmMwODhiYjljNmI3OWY3NjcwOThjYjNmZTllYiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9tZWRpYXNvdXJjZS9Nb2NrTWVkaWFQbGF5
ZXJNZWRpYVNvdXJjZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9tZWRp
YXNvdXJjZS9Nb2NrTWVkaWFQbGF5ZXJNZWRpYVNvdXJjZS5jcHAKQEAgLTM3LDExICszNywyNyBA
QAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK2NsYXNzIE1lZGlhUGxheWVyRmFjdG9yeU1lZGlh
U291cmNlTW9jayA6IHB1YmxpYyBNZWRpYVBsYXllckZhY3RvcnkgeworcHVibGljOgorICAgIE1l
ZGlhUGxheWVyRW51bXM6Ok1lZGlhRW5naW5lSWRlbnRpZmllciBpZGVudGlmaWVyKCkgY29uc3Qg
ZmluYWwgeyByZXR1cm4gTWVkaWFQbGF5ZXJFbnVtczo6TWVkaWFFbmdpbmVJZGVudGlmaWVyOjpN
b2NrTVNFOyB9OworCisgICAgc3RkOjp1bmlxdWVfcHRyPE1lZGlhUGxheWVyUHJpdmF0ZUludGVy
ZmFjZT4gY3JlYXRlTWVkaWFFbmdpbmVQbGF5ZXIoTWVkaWFQbGF5ZXIqIHBsYXllcikgY29uc3Qg
ZmluYWwgeyByZXR1cm4gbWFrZVVuaXF1ZTxNb2NrTWVkaWFQbGF5ZXJNZWRpYVNvdXJjZT4ocGxh
eWVyKTsgfQorCisgICAgdm9pZCBnZXRTdXBwb3J0ZWRUeXBlcyhIYXNoU2V0PFN0cmluZywgQVND
SUlDYXNlSW5zZW5zaXRpdmVIYXNoPiYgdHlwZXMpIGNvbnN0IGZpbmFsCisgICAgeworICAgICAg
ICByZXR1cm4gTW9ja01lZGlhUGxheWVyTWVkaWFTb3VyY2U6OmdldFN1cHBvcnRlZFR5cGVzKHR5
cGVzKTsKKyAgICB9CisKKyAgICBNZWRpYVBsYXllcjo6U3VwcG9ydHNUeXBlIHN1cHBvcnRzVHlw
ZUFuZENvZGVjcyhjb25zdCBNZWRpYUVuZ2luZVN1cHBvcnRQYXJhbWV0ZXJzJiBwYXJhbWV0ZXJz
KSBjb25zdCBmaW5hbAorICAgIHsKKyAgICAgICAgcmV0dXJuIE1vY2tNZWRpYVBsYXllck1lZGlh
U291cmNlOjpzdXBwb3J0c1R5cGUocGFyYW1ldGVycyk7CisgICAgfQorfTsKKwogLy8gTWVkaWFQ
bGF5ZXIgRW5pZ25lIFN1cHBvcnQKIHZvaWQgTW9ja01lZGlhUGxheWVyTWVkaWFTb3VyY2U6OnJl
Z2lzdGVyTWVkaWFFbmdpbmUoTWVkaWFFbmdpbmVSZWdpc3RyYXIgcmVnaXN0cmFyKQogewotICAg
IHJlZ2lzdHJhcihbXSAoTWVkaWFQbGF5ZXIqIHBsYXllcikgeyByZXR1cm4gbWFrZVVuaXF1ZTxN
b2NrTWVkaWFQbGF5ZXJNZWRpYVNvdXJjZT4ocGxheWVyKTsgfSwgZ2V0U3VwcG9ydGVkVHlwZXMs
Ci0gICAgICAgIHN1cHBvcnRzVHlwZSwgMCwgMCwgMCwgMCk7CisgICAgcmVnaXN0cmFyKG1ha2VV
bmlxdWU8TWVkaWFQbGF5ZXJGYWN0b3J5TWVkaWFTb3VyY2VNb2NrPigpKTsKIH0KIAogLy8gRklY
TUU6IFdoYXQgZG9lcyB0aGUgd29yZCAiY2FjaGUiIG1lYW4gaGVyZT8KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMtaW5wdXQueGNmaWxlbGlzdCBiL1NvdXJjZS9XZWJL
aXQvRGVyaXZlZFNvdXJjZXMtaW5wdXQueGNmaWxlbGlzdAppbmRleCA3ZjA4ZjJiMmYxODU4MmVk
NTA0MDMyZGNhY2I1NDc4NmExNjlhZDVmLi4zZWYxY2E4OGZmYWVhYTI5ZGNkODNiNzU1YzJiM2Jm
Mjg4ZjBmMmFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2VzLWlucHV0
LnhjZmlsZWxpc3QKKysrIGIvU291cmNlL1dlYktpdC9EZXJpdmVkU291cmNlcy1pbnB1dC54Y2Zp
bGVsaXN0CkBAIC0xNiw2ICsxNiw3IEBAICQoSkFWQVNDUklQVENPUkVfUFJJVkFURV9IRUFERVJT
X0RJUikveHhkLnBsCiAkKFBST0pFQ1RfRElSKS9HUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dl
YlByb2Nlc3MubWVzc2FnZXMuaW4KICQoUFJPSkVDVF9ESVIpL0dQVVByb2Nlc3MvR1BVUHJvY2Vz
cy5tZXNzYWdlcy5pbgogJChQUk9KRUNUX0RJUikvR1BVUHJvY2Vzcy9tYWMvY29tLmFwcGxlLldl
YktpdC5HUFVQcm9jZXNzLnNiLmluCiskKFBST0pFQ1RfRElSKS9HUFVQcm9jZXNzL21lZGlhL1Jl
bW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5Lm1lc3NhZ2VzLmluCiAkKFBST0pFQ1RfRElSKS9O
ZXR3b3JrUHJvY2Vzcy9Db29raWVzL1dlYkNvb2tpZU1hbmFnZXIubWVzc2FnZXMuaW4KICQoUFJP
SkVDVF9ESVIpL05ldHdvcmtQcm9jZXNzL0N1c3RvbVByb3RvY29scy9MZWdhY3lDdXN0b21Qcm90
b2NvbE1hbmFnZXIubWVzc2FnZXMuaW4KICQoUFJPSkVDVF9ESVIpL05ldHdvcmtQcm9jZXNzL0lu
ZGV4ZWREQi9XZWJJREJDb25uZWN0aW9uVG9DbGllbnQubWVzc2FnZXMuaW4KQEAgLTk3LDYgKzk4
LDcgQEAgJChQUk9KRUNUX0RJUikvV2ViUHJvY2Vzcy9DYWNoZS9XZWJDYWNoZVN0b3JhZ2VDb25u
ZWN0aW9uLm1lc3NhZ2VzLmluCiAkKFBST0pFQ1RfRElSKS9XZWJQcm9jZXNzL0RhdGFiYXNlcy9J
bmRleGVkREIvV2ViSURCQ29ubmVjdGlvblRvU2VydmVyLm1lc3NhZ2VzLmluCiAkKFBST0pFQ1Rf
RElSKS9XZWJQcm9jZXNzL0Z1bGxTY3JlZW4vV2ViRnVsbFNjcmVlbk1hbmFnZXIubWVzc2FnZXMu
aW4KICQoUFJPSkVDVF9ESVIpL1dlYlByb2Nlc3MvR1BVL0dQVVByb2Nlc3NDb25uZWN0aW9uLm1l
c3NhZ2VzLmluCiskKFBST0pFQ1RfRElSKS9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVNZWRp
YVBsYXllck1hbmFnZXIubWVzc2FnZXMuaW4KICQoUFJPSkVDVF9ESVIpL1dlYlByb2Nlc3MvR2Vv
bG9jYXRpb24vV2ViR2VvbG9jYXRpb25NYW5hZ2VyLm1lc3NhZ2VzLmluCiAkKFBST0pFQ1RfRElS
KS9XZWJQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLm1lc3NhZ2VzLmlu
CiAkKFBST0pFQ1RfRElSKS9XZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIubWVz
c2FnZXMuaW4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMtb3V0cHV0
LnhjZmlsZWxpc3QgYi9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2VzLW91dHB1dC54Y2ZpbGVs
aXN0CmluZGV4IDNiMWU5NDExNzAzOGJmMGQwNGEwNzU3ZjVlNmQ4NWUzMzRiZDc1YWUuLmM4YTNi
NDk1YzBjZTU1NDEyOTkyMzY4MTEzMjAwZGEyYjk0MDc5MjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvRGVyaXZlZFNvdXJjZXMtb3V0cHV0LnhjZmlsZWxpc3QKKysrIGIvU291cmNlL1dlYktp
dC9EZXJpdmVkU291cmNlcy1vdXRwdXQueGNmaWxlbGlzdApAQCAtMTE0LDYgKzExNCwxMiBAQCAk
KEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9QbHVnaW5Qcm94eU1l
c3NhZ2VzUmVwbGllcy5oCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2Vi
S2l0Mi9SZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYVByb3h5TWVzc2FnZVJlY2VpdmVyLmNwcAog
JChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIvUmVtb3RlTGF5ZXJU
cmVlRHJhd2luZ0FyZWFQcm94eU1lc3NhZ2VzLmgKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJp
dmVkU291cmNlcy9XZWJLaXQyL1JlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhUHJveHlNZXNzYWdl
c1JlcGxpZXMuaAorJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIv
UmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyTWVzc2FnZVJlY2VpdmVyLmNwcAorJChCVUlMVF9QUk9E
VUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIvUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2Vy
TWVzc2FnZXMuaAorJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIv
UmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyTWVzc2FnZXNSZXBsaWVzLmgKKyQoQlVJTFRfUFJPRFVD
VFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQyL1JlbW90ZU1lZGlhUGxheWVyTWFuYWdlclBy
b3h5TWVzc2FnZVJlY2VpdmVyLmNwcAorJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3Vy
Y2VzL1dlYktpdDIvUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHlNZXNzYWdlcy5oCiskKEJV
SUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9SZW1vdGVNZWRpYVBsYXll
ck1hbmFnZXJQcm94eU1lc3NhZ2VzUmVwbGllcy5oCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVy
aXZlZFNvdXJjZXMvV2ViS2l0Mi9SZW1vdGVPYmplY3RSZWdpc3RyeU1lc3NhZ2VSZWNlaXZlci5j
cHAKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQyL1JlbW90ZU9i
amVjdFJlZ2lzdHJ5TWVzc2FnZXMuaAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3Vy
Y2VzL1dlYktpdDIvUmVtb3RlT2JqZWN0UmVnaXN0cnlNZXNzYWdlc1JlcGxpZXMuaApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9EZXJpdmVkU291cmNlcy5tYWtlIGIvU291cmNlL1dlYktpdC9E
ZXJpdmVkU291cmNlcy5tYWtlCmluZGV4IGJlNTI1ZTEzYzU5YmJkMTQ1NmU4ZjBkNDIzYmE2NDQx
Y2U4YjA4ZGEuLjk2ZjNhMmVjZWYzMTE4Y2UyM2YzODc1MWQ3MmUyYWIwODNjZjRhYzQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMubWFrZQorKysgYi9Tb3VyY2UvV2Vi
S2l0L0Rlcml2ZWRTb3VyY2VzLm1ha2UKQEAgLTI0LDYgKzI0LDcgQEAgVlBBVEggPSBcCiAgICAg
JChXZWJLaXQyKSBcCiAgICAgJChXZWJLaXQyKS9HUFVQcm9jZXNzIFwKICAgICAkKFdlYktpdDIp
L0dQVVByb2Nlc3MvbWFjIFwKKyAgICAkKFdlYktpdDIpL0dQVVByb2Nlc3MvbWVkaWEgXAogICAg
ICQoV2ViS2l0MikvTmV0d29ya1Byb2Nlc3MgXAogICAgICQoV2ViS2l0MikvTmV0d29ya1Byb2Nl
c3MvQ29va2llcyBcCiAgICAgJChXZWJLaXQyKS9OZXR3b3JrUHJvY2Vzcy9jYWNoZSBcCkBAIC00
OSw2ICs1MCw3IEBAIFZQQVRIID0gXAogICAgICQoV2ViS2l0MikvV2ViUHJvY2Vzcy9GdWxsU2Ny
ZWVuIFwKICAgICAkKFdlYktpdDIpL1dlYlByb2Nlc3MvR2VvbG9jYXRpb24gXAogICAgICQoV2Vi
S2l0MikvV2ViUHJvY2Vzcy9HUFUgXAorICAgICQoV2ViS2l0MikvV2ViUHJvY2Vzcy9HUFUvbWVk
aWEgXAogICAgICQoV2ViS2l0MikvV2ViUHJvY2Vzcy9JY29uRGF0YWJhc2UgXAogICAgICQoV2Vi
S2l0MikvV2ViUHJvY2Vzcy9NZWRpYUNhY2hlIFwKICAgICAkKFdlYktpdDIpL1dlYlByb2Nlc3Mv
TWVkaWFTdHJlYW0gXApAQCAtMTM1LDYgKzEzNyw4IEBAIE1FU1NBR0VfUkVDRUlWRVJTID0gXAog
ICAgIFBsdWdpblByb2Nlc3NQcm94eSBcCiAgICAgUGx1Z2luUHJveHkgXAogICAgIFJlbW90ZUxh
eWVyVHJlZURyYXdpbmdBcmVhUHJveHkgXAorICAgIFJlbW90ZU1lZGlhUGxheWVyTWFuYWdlciBc
CisgICAgUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHkgXAogICAgIFJlbW90ZU9iamVjdFJl
Z2lzdHJ5IFwKICAgICBSZW1vdGVTY3JvbGxpbmdDb29yZGluYXRvciBcCiAgICAgUmVtb3RlV2Vi
SW5zcGVjdG9yUHJveHkgXApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQ
VUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQ
VUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwCmluZGV4IGJkMTM5ZmU1MzMxYmNjZTM2YzMzNDNi
MTUyMTdkMDExZjI1MjRjMzguLjQ3YTlhYzNjYzFmZDdlYWZlZmRlNmI5NDAzYjBjYWRjYTJiNjlj
MmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9X
ZWJQcm9jZXNzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BVQ29ubmVjdGlv
blRvV2ViUHJvY2Vzcy5jcHAKQEAgLTM1LDYgKzM1LDggQEAKICNpbmNsdWRlICJHUFVQcm9jZXNz
UHJveHlNZXNzYWdlcy5oIgogI2luY2x1ZGUgIkxvZ2dpbmcuaCIKICNpbmNsdWRlICJSZW1vdGVM
YXllclRyZWVEcmF3aW5nQXJlYVByb3h5TWVzc2FnZXMuaCIKKyNpbmNsdWRlICJSZW1vdGVNZWRp
YVBsYXllck1hbmFnZXJQcm94eS5oIgorI2luY2x1ZGUgIlJlbW90ZU1lZGlhUGxheWVyTWFuYWdl
clByb3h5TWVzc2FnZXMuaCIKICNpbmNsdWRlICJSZW1vdGVTY3JvbGxpbmdDb29yZGluYXRvclRy
YW5zYWN0aW9uLmgiCiAjaW5jbHVkZSAiV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgiCiAjaW5jbHVk
ZSAiV2ViRXJyb3JzLmgiCkBAIC01Miw2ICs1NCw3IEBAIEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nl
c3M6OkdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MoR1BVUHJvY2VzcyYgZ3B1UHJvY2VzcywgV2Vi
CiAgICAgOiBtX2Nvbm5lY3Rpb24oSVBDOjpDb25uZWN0aW9uOjpjcmVhdGVTZXJ2ZXJDb25uZWN0
aW9uKGNvbm5lY3Rpb25JZGVudGlmaWVyLCAqdGhpcykpCiAgICAgLCBtX2dwdVByb2Nlc3MoZ3B1
UHJvY2VzcykKICAgICAsIG1fd2ViUHJvY2Vzc0lkZW50aWZpZXIod2ViUHJvY2Vzc0lkZW50aWZp
ZXIpCisgICAgLCBtX3JlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5KG1ha2VVbmlxdWU8UmVt
b3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHk+KCp0aGlzKSkKIHsKICAgICBSRUxFQVNFX0FTU0VS
VChSdW5Mb29wOjppc01haW4oKSk7CiAgICAgbV9jb25uZWN0aW9uLT5vcGVuKCk7CkBAIC02MSw2
ICs2NCw3IEBAIEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6On5HUFVDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzKCkKIHsKICAgICBSRUxFQVNFX0FTU0VSVChSdW5Mb29wOjppc01haW4oKSk7CiAKKyAg
ICBtX3JlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5ID0gbnVsbHB0cjsKICAgICBtX2Nvbm5l
Y3Rpb24tPmludmFsaWRhdGUoKTsKIH0KIApAQCAtNzQsNiArNzgsMjYgQEAgdm9pZCBHUFVDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzOjpkaWRSZWNlaXZlSW52YWxpZE1lc3NhZ2UoSVBDOjpDb25uZWN0
aW9uJiBjb25uZWMKICAgICBDUkFTSCgpOwogfQogCit2b2lkIEdQVUNvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3M6OmRpZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgSVBD
OjpEZWNvZGVyJiBkZWNvZGVyKQoreworICAgIGlmIChkZWNvZGVyLm1lc3NhZ2VSZWNlaXZlck5h
bWUoKSA9PSBNZXNzYWdlczo6UmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHk6Om1lc3NhZ2VS
ZWNlaXZlck5hbWUoKSkgeworICAgICAgICBpZiAobV9yZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQ
cm94eSkKKyAgICAgICAgICAgIG1fcmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHktPmRpZFJl
Y2VpdmVNZXNzYWdlRnJvbVdlYlByb2Nlc3MoY29ubmVjdGlvbiwgZGVjb2Rlcik7CisgICAgICAg
IHJldHVybjsKKyAgICB9Cit9CisKK3ZvaWQgR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6ZGlk
UmVjZWl2ZVN5bmNNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgSVBDOjpEZWNv
ZGVyJiBkZWNvZGVyLCBzdGQ6OnVuaXF1ZV9wdHI8SVBDOjpFbmNvZGVyPiYgcmVwbHlFbmNvZGVy
KQoreworICAgIGlmIChkZWNvZGVyLm1lc3NhZ2VSZWNlaXZlck5hbWUoKSA9PSBNZXNzYWdlczo6
UmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHk6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSkgewor
ICAgICAgICBpZiAobV9yZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eSkKKyAgICAgICAgICAg
IG1fcmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHktPmRpZFJlY2VpdmVTeW5jTWVzc2FnZUZy
b21XZWJQcm9jZXNzKGNvbm5lY3Rpb24sIGRlY29kZXIsIHJlcGx5RW5jb2Rlcik7CisgICAgICAg
IHJldHVybjsKKyAgICB9CisKKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKK30KKwogfSAvLyBu
YW1lc3BhY2UgV2ViS2l0CiAKICNlbmRpZiAvLyBFTkFCTEUoR1BVX1BST0NFU1MpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5o
IGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaApp
bmRleCBmOTBjYjI4ZjI4N2VjZTFmZmZkMTQ1ZmUxMjQ4ZGI5OTc1Y2ViMDJkLi5iMmY4N2M5MWQ1
MTJhOThjOGVmMjg2NDU1NTg5YzY0MGM0MGM0YjIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L0dQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgKQEAgLTM2LDYgKzM2LDcg
QEAKIG5hbWVzcGFjZSBXZWJLaXQgewogCiBjbGFzcyBHUFVQcm9jZXNzOworY2xhc3MgUmVtb3Rl
TWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHk7CiAKIGNsYXNzIEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nl
c3MKICAgICA6IHB1YmxpYyBSZWZDb3VudGVkPEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M+CkBA
IC01OCwxMCArNTksMTMgQEAgcHJpdmF0ZToKICAgICAvLyBJUEM6OkNvbm5lY3Rpb246OkNsaWVu
dAogICAgIHZvaWQgZGlkQ2xvc2UoSVBDOjpDb25uZWN0aW9uJikgb3ZlcnJpZGU7CiAgICAgdm9p
ZCBkaWRSZWNlaXZlSW52YWxpZE1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpTdHJpbmdS
ZWZlcmVuY2UgbWVzc2FnZVJlY2VpdmVyTmFtZSwgSVBDOjpTdHJpbmdSZWZlcmVuY2UgbWVzc2Fn
ZU5hbWUpIG92ZXJyaWRlOworICAgIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25uZWN0
aW9uJiwgSVBDOjpEZWNvZGVyJikgb3ZlcnJpZGU7CisgICAgdm9pZCBkaWRSZWNlaXZlU3luY01l
c3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJiwgc3RkOjp1bmlxdWVfcHRyPElQ
Qzo6RW5jb2Rlcj4mKSBvdmVycmlkZTsKIAogICAgIFJlZjxJUEM6OkNvbm5lY3Rpb24+IG1fY29u
bmVjdGlvbjsKICAgICBSZWY8R1BVUHJvY2Vzcz4gbV9ncHVQcm9jZXNzOwogICAgIGNvbnN0IFdl
YkNvcmU6OlByb2Nlc3NJZGVudGlmaWVyIG1fd2ViUHJvY2Vzc0lkZW50aWZpZXI7CisgICAgc3Rk
Ojp1bmlxdWVfcHRyPFJlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5PiBtX3JlbW90ZU1lZGlh
UGxheWVyTWFuYWdlclByb3h5OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJNYW5h
Z2VyUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlh
UGxheWVyTWFuYWdlclByb3h5LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hY2ZjNTNkNWE0Y2Y5ZDEwYTJmZDhl
YWVmZGE5ODIyMDNhMmRlZDViCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9HUFVQ
cm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5LmNwcApAQCAtMCwwICsx
LDE0NSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IK
KyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisg
KiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJSZW1v
dGVNZWRpYVBsYXllck1hbmFnZXJQcm94eS5oIgorCisjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKQor
CisjaW5jbHVkZSAiR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oIgorI2luY2x1ZGUgIlJlbW90
ZU1lZGlhUGxheWVyTWFuYWdlck1lc3NhZ2VzLmgiCisjaW5jbHVkZSAiUmVtb3RlTWVkaWFQbGF5
ZXJNYW5hZ2VyUHJveHlNZXNzYWdlcy5oIgorI2luY2x1ZGUgIldlYkNvcmVBcmd1bWVudENvZGVy
cy5oIgorI2luY2x1ZGUgPFdlYkNvcmUvTWVkaWFQbGF5ZXIuaD4KKyNpbmNsdWRlIDxXZWJDb3Jl
L01lZGlhUGxheWVyUHJpdmF0ZS5oPgorI2luY2x1ZGUgPHd0Zi9VbmlxdWVSZWYuaD4KKworI2Rl
ZmluZSBNRVNTQUdFX0NIRUNLX0NPTlRFWFRJRChpZGVudGlmaWVyKSBNRVNTQUdFX0NIRUNLX0JB
U0UobV9wcm94aWVzLmlzVmFsaWRLZXkoaWRlbnRpZmllciksICZtX3dlYlByb2Nlc3NDb25uZWN0
aW9uLmNvbm5lY3Rpb24oKSkKKworbmFtZXNwYWNlIFdlYktpdCB7Cit1c2luZyBuYW1lc3BhY2Ug
V2ViQ29yZTsKKworI2lmICFSRUxFQVNFX0xPR19ESVNBQkxFRAorc3RhdGljIFJlZlB0cjxMb2dn
ZXI+JiBudWxsTG9nZ2VyKCkKK3sKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8UmVmUHRyPExv
Z2dlcj4+IGxvZ2dlcjsKKyAgICByZXR1cm4gbG9nZ2VyOworfQorI2VuZGlmCisKK2NsYXNzIFJl
bW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5OjpQbGF5ZXJQcm94eQorICAgIDogcHVibGljIE1l
ZGlhUGxheWVyQ2xpZW50IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKK3B1YmxpYzoK
KyAgICBQbGF5ZXJQcm94eShjb25zdCBNZWRpYVBsYXllclByaXZhdGVSZW1vdGVJZGVudGlmaWVy
JiBpZCwgUmVmPElQQzo6Q29ubmVjdGlvbj4mJiBjb25uZWN0aW9uLCBNZWRpYVBsYXllckVudW1z
OjpNZWRpYUVuZ2luZUlkZW50aWZpZXIgcmVtb3RlRW5naW5lSWRlbnRpZmllcikKKyAgICAgICAg
OiBtX2lkKGlkKQorICAgICAgICAsIG1fY29ubmVjdGlvbihXVEZNb3ZlKGNvbm5lY3Rpb24pKQor
ICAgICAgICAsIG1fcmVtb3RlRW5naW5lSWRlbnRpZmllcihyZW1vdGVFbmdpbmVJZGVudGlmaWVy
KQorICAgIHsKKyAgICB9CisKKyAgICB2aXJ0dWFsIH5QbGF5ZXJQcm94eSgpCisgICAgeworICAg
IH0KKworcHJpdmF0ZToKKworICAgIC8vIE1lZGlhUGxheWVyQ2xpZW50CisgICAgY29uc3QgVmVj
dG9yPFdlYkNvcmU6OkNvbnRlbnRUeXBlPiYgbWVkaWFDb250ZW50VHlwZXNSZXF1aXJpbmdIYXJk
d2FyZVN1cHBvcnQoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX3R5cGVzUmVxdWlyaW5nSGFyZHdh
cmVTdXBwb3J0OyB9CisKKyNpZiAhUkVMRUFTRV9MT0dfRElTQUJMRUQKKyAgICBjb25zdCBMb2dn
ZXImIG1lZGlhUGxheWVyTG9nZ2VyKCkgZmluYWwKKyAgICB7CisgICAgICAgIGlmICghbnVsbExv
Z2dlcigpLmdldCgpKSB7CisgICAgICAgICAgICBudWxsTG9nZ2VyKCkgPSBMb2dnZXI6OmNyZWF0
ZSh0aGlzKTsKKyAgICAgICAgICAgIG51bGxMb2dnZXIoKS0+c2V0RW5hYmxlZCh0aGlzLCBmYWxz
ZSk7CisgICAgICAgIH0KKworICAgICAgICByZXR1cm4gKm51bGxMb2dnZXIoKS5nZXQoKTsKKyAg
ICB9CisjZW5kaWYKKworcHJvdGVjdGVkOgorICAgIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZUlk
ZW50aWZpZXIgbV9pZDsKKyAgICBSZWY8SVBDOjpDb25uZWN0aW9uPiBtX2Nvbm5lY3Rpb247Cisg
ICAgc3RkOjp1bmlxdWVfcHRyPE1lZGlhUGxheWVyUHJpdmF0ZUludGVyZmFjZT4gbV9wbGF5ZXI7
CisgICAgTWVkaWFQbGF5ZXJFbnVtczo6TWVkaWFFbmdpbmVJZGVudGlmaWVyIG1fcmVtb3RlRW5n
aW5lSWRlbnRpZmllcjsKKyAgICBWZWN0b3I8V2ViQ29yZTo6Q29udGVudFR5cGU+IG1fdHlwZXNS
ZXF1aXJpbmdIYXJkd2FyZVN1cHBvcnQ7Cit9OworCitSZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQ
cm94eTo6UmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHkoR1BVQ29ubmVjdGlvblRvV2ViUHJv
Y2VzcyYgY29ubmVjdGlvbikKKyAgICA6IG1fd2ViUHJvY2Vzc0Nvbm5lY3Rpb24oY29ubmVjdGlv
bikKK3sKK30KKworUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHk6On5SZW1vdGVNZWRpYVBs
YXllck1hbmFnZXJQcm94eSgpCit7Cit9CisKK3ZvaWQgUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2Vy
UHJveHk6OmNyZWF0ZU1lZGlhUGxheWVyKGNvbnN0IE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZUlk
ZW50aWZpZXImIGlkLCBNZWRpYVBsYXllckVudW1zOjpNZWRpYUVuZ2luZUlkZW50aWZpZXIgcmVt
b3RlRW5naW5lSWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sIHN1Y2NlZWRl
ZCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit7CisgICAgTUVTU0FHRV9DSEVDS19DT05URVhUSUQo
aWQpOworCisgICAgQVNTRVJUKCFtX3Byb3hpZXMuY29udGFpbnMoaWQpKTsKKyAgICBtX3Byb3hp
ZXMuYWRkKGlkLCBtYWtlVW5pcXVlPFBsYXllclByb3h5PihpZCwgbV93ZWJQcm9jZXNzQ29ubmVj
dGlvbi5jb25uZWN0aW9uKCksIHJlbW90ZUVuZ2luZUlkZW50aWZpZXIpKTsKKworICAgIGNvbXBs
ZXRpb25IYW5kbGVyKHRydWUpOworfQorCit2b2lkIFJlbW90ZU1lZGlhUGxheWVyTWFuYWdlclBy
b3h5OjpnZXRTdXBwb3J0ZWRUeXBlcyhNZWRpYVBsYXllckVudW1zOjpNZWRpYUVuZ2luZUlkZW50
aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoVmVjdG9yPFN0cmluZz4mJik+JiYgY29tcGxl
dGlvbkhhbmRsZXIpCit7CisgICAgLy8gRklYTUU6IHF1ZXJ5IHRoZSBhcHByb3ByaWF0ZSBtZWRp
YSBlbmdpbmUKKyAgICBjb21wbGV0aW9uSGFuZGxlcih7ICJ2aWRlby9tcDQiLCAiYXVkaW8vbXA0
IiB9KTsKK30KKwordm9pZCBSZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eTo6c3VwcG9ydHNU
eXBlKE1lZGlhUGxheWVyRW51bXM6Ok1lZGlhRW5naW5lSWRlbnRpZmllciwgY29uc3QgV2ViQ29y
ZTo6TWVkaWFFbmdpbmVTdXBwb3J0UGFyYW1ldGVycyYmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KE1lZGlhUGxheWVyOjpTdXBwb3J0c1R5cGUpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQoreworICAg
IC8vIEZJWE1FOiBkb24ndCB0ZWxsIGxpZXMKKyAgICBjb21wbGV0aW9uSGFuZGxlcihNZWRpYVBs
YXllcjo6U3VwcG9ydHNUeXBlOjpNYXlCZVN1cHBvcnRlZCk7Cit9CisKK3ZvaWQgUmVtb3RlTWVk
aWFQbGF5ZXJNYW5hZ2VyUHJveHk6Om9yaWdpbnNJbk1lZGlhQ2FjaGUoTWVkaWFQbGF5ZXJFbnVt
czo6TWVkaWFFbmdpbmVJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmJiwgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZChWZWN0b3I8V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhPiYmKT4mJiBjb21wbGV0
aW9uSGFuZGxlcikKK3sKKyAgICBjb21wbGV0aW9uSGFuZGxlcih7IH0pOworfQorCit2b2lkIFJl
bW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5OjpjbGVhck1lZGlhQ2FjaGUoTWVkaWFQbGF5ZXJF
bnVtczo6TWVkaWFFbmdpbmVJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmJiwgV2FsbFRpbWUpCit7
Cit9CisKK3ZvaWQgUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHk6OmNsZWFyTWVkaWFDYWNo
ZUZvck9yaWdpbnMoTWVkaWFQbGF5ZXJFbnVtczo6TWVkaWFFbmdpbmVJZGVudGlmaWVyLCBjb25z
dCBTdHJpbmcmJiwgVmVjdG9yPFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YT4mJikKK3sKK30K
Kwordm9pZCBSZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eTo6c3VwcG9ydHNLZXlTeXN0ZW0o
TWVkaWFQbGF5ZXJFbnVtczo6TWVkaWFFbmdpbmVJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmJiwg
Y29uc3QgU3RyaW5nJiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYgY29tcGxldGlv
bkhhbmRsZXIpCit7CisgICAgY29tcGxldGlvbkhhbmRsZXIoeyB9KTsKK30KKworfQorCisjdW5k
ZWYgTUVTU0FHRV9DSEVDS19DT05URVhUSUQKKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHkuaCBi
L1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQ
cm94eS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLmI0MmM4YzUzOTM5YWM1MWJkYjdlYzRkNWJmYjFmMDQ4OGU0Mzc1
MjcKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVt
b3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHkuaApAQCAtMCwwICsxLDc0IEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBD
T05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
KyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAq
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisg
KiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoR1BVX1BST0NFU1MpCisKKyNpbmNsdWRlICJD
b25uZWN0aW9uLmgiCisjaW5jbHVkZSAiTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlSWRlbnRpZmll
ci5oIgorI2luY2x1ZGUgIk1lc3NhZ2VSZWNlaXZlci5oIgorI2luY2x1ZGUgPFdlYkNvcmUvTWVk
aWFQbGF5ZXIuaD4KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIEdQVUNvbm5lY3Rpb25U
b1dlYlByb2Nlc3M7CisKK2NsYXNzIFJlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5IDogcHJp
dmF0ZSBJUEM6Ok1lc3NhZ2VSZWNlaXZlciB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7
CitwdWJsaWM6CisgICAgZXhwbGljaXQgUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHkoR1BV
Q29ubmVjdGlvblRvV2ViUHJvY2VzcyYpOworICAgIH5SZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQ
cm94eSgpOworCisgICAgR1BVQ29ubmVjdGlvblRvV2ViUHJvY2VzcyYgd2ViUHJvY2Vzc0Nvbm5l
Y3Rpb24oKSBjb25zdCB7IHJldHVybiBtX3dlYlByb2Nlc3NDb25uZWN0aW9uOyB9CisgICAgdm9p
ZCBjbGVhcigpOworCisgICAgdm9pZCBkaWRSZWNlaXZlTWVzc2FnZUZyb21XZWJQcm9jZXNzKElQ
Qzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgSVBDOjpEZWNvZGVyJiBkZWNvZGVyKSB7IGRpZFJl
Y2VpdmVNZXNzYWdlKGNvbm5lY3Rpb24sIGRlY29kZXIpOyB9CisgICAgdm9pZCBkaWRSZWNlaXZl
U3luY01lc3NhZ2VGcm9tV2ViUHJvY2VzcyhJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIElQ
Qzo6RGVjb2RlciYgZGVjb2Rlciwgc3RkOjp1bmlxdWVfcHRyPElQQzo6RW5jb2Rlcj4mIGVuY29k
ZXIpIHsgZGlkUmVjZWl2ZVN5bmNNZXNzYWdlKGNvbm5lY3Rpb24sIGRlY29kZXIsIGVuY29kZXIp
OyB9CisKK3ByaXZhdGU6CisgICAgLy8gSVBDOjpNZXNzYWdlUmVjZWl2ZXIKKyAgICB2b2lkIGRp
ZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYpIGZpbmFsOwor
ICAgIHZvaWQgZGlkUmVjZWl2ZVN5bmNNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVj
b2RlciYsIHN0ZDo6dW5pcXVlX3B0cjxJUEM6OkVuY29kZXI+JikgZmluYWw7CisKKyAgICB2b2lk
IGNyZWF0ZU1lZGlhUGxheWVyKGNvbnN0IE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZUlkZW50aWZp
ZXImLCBXZWJDb3JlOjpNZWRpYVBsYXllckVudW1zOjpNZWRpYUVuZ2luZUlkZW50aWZpZXIsIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpOworCisgICAgdm9pZCBnZXRTdXBwb3J0ZWRU
eXBlcyhXZWJDb3JlOjpNZWRpYVBsYXllckVudW1zOjpNZWRpYUVuZ2luZUlkZW50aWZpZXIsIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoVmVjdG9yPFN0cmluZz4mJik+JiYpOworICAgIHZvaWQgc3Vw
cG9ydHNUeXBlKFdlYkNvcmU6Ok1lZGlhUGxheWVyRW51bXM6Ok1lZGlhRW5naW5lSWRlbnRpZmll
ciwgY29uc3QgV2ViQ29yZTo6TWVkaWFFbmdpbmVTdXBwb3J0UGFyYW1ldGVycyYmLCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKFdlYkNvcmU6Ok1lZGlhUGxheWVyOjpTdXBwb3J0c1R5cGUpPiYmKTsK
KworICAgIHZvaWQgb3JpZ2luc0luTWVkaWFDYWNoZShXZWJDb3JlOjpNZWRpYVBsYXllckVudW1z
OjpNZWRpYUVuZ2luZUlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYmLCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKFZlY3RvcjxXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGE+JiYpPiYmKTsKKyAgICB2
b2lkIGNsZWFyTWVkaWFDYWNoZShXZWJDb3JlOjpNZWRpYVBsYXllckVudW1zOjpNZWRpYUVuZ2lu
ZUlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYmLCBXYWxsVGltZSk7CisgICAgdm9pZCBjbGVhck1l
ZGlhQ2FjaGVGb3JPcmlnaW5zKFdlYkNvcmU6Ok1lZGlhUGxheWVyRW51bXM6Ok1lZGlhRW5naW5l
SWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiYsIFZlY3RvcjxXZWJDb3JlOjpTZWN1cml0eU9yaWdp
bkRhdGE+JiYpOworICAgIHZvaWQgc3VwcG9ydHNLZXlTeXN0ZW0oV2ViQ29yZTo6TWVkaWFQbGF5
ZXJFbnVtczo6TWVkaWFFbmdpbmVJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmJiwgY29uc3QgU3Ry
aW5nJiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpOworCisgICAgY2xhc3MgUGxh
eWVyUHJveHk7CisgICAgZnJpZW5kIGNsYXNzIFBsYXllclByb3h5OworICAgIEhhc2hNYXA8TWVk
aWFQbGF5ZXJQcml2YXRlUmVtb3RlSWRlbnRpZmllciwgc3RkOjp1bmlxdWVfcHRyPFBsYXllclBy
b3h5Pj4gbV9wcm94aWVzOworICAgIEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MmIG1fd2ViUHJv
Y2Vzc0Nvbm5lY3Rpb247Cit9OworCit9CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5Lm1lc3Nh
Z2VzLmluIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUGxheWVy
TWFuYWdlclByb3h5Lm1lc3NhZ2VzLmluCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjFiZmM0Yzc4MmEzMTZlMGI4NjBh
N2Q1YmVhMDkyMDRlYWUwMmYzNDMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQ
VVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHkubWVzc2FnZXMuaW4K
QEAgLTAsMCArMSwzNyBAQAorIyBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisjIGFyZSBtZXQ6Cisj
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisjICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorIyAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisjIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorIyBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisjIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworIyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisjIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GCisjIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUworIyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorIyBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KQorIyBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GCisjIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKwor
I2lmIEVOQUJMRShWSURFTykKKworbWVzc2FnZXMgLT4gUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2Vy
UHJveHkgTm90UmVmQ291bnRlZCB7CisgICAgQ3JlYXRlTWVkaWFQbGF5ZXIoV2ViS2l0OjpNZWRp
YVBsYXllclByaXZhdGVSZW1vdGVJZGVudGlmaWVyIGlkLCBlbnVtOnVpbnQ4X3QgV2ViQ29yZTo6
TWVkaWFQbGF5ZXJFbnVtczo6TWVkaWFFbmdpbmVJZGVudGlmaWVyIHJlbW90ZUVuZ2luZUlkZW50
aWZpZXIpIC0+IChib29sIHN1Y2Nlc3MpIFN5bmNocm9ub3VzCisKKyAgICBHZXRTdXBwb3J0ZWRU
eXBlcyhlbnVtOnVpbnQ4X3QgV2ViQ29yZTo6TWVkaWFQbGF5ZXJFbnVtczo6TWVkaWFFbmdpbmVJ
ZGVudGlmaWVyIHJlbW90ZUVuZ2luZUlkZW50aWZpZXIpIC0+IChWZWN0b3I8U3RyaW5nPiB0eXBl
cykgU3luY2hyb25vdXMKKyAgICBTdXBwb3J0c1R5cGUoZW51bTp1aW50OF90IFdlYkNvcmU6Ok1l
ZGlhUGxheWVyRW51bXM6Ok1lZGlhRW5naW5lSWRlbnRpZmllciByZW1vdGVFbmdpbmVJZGVudGlm
aWVyLCBzdHJ1Y3QgV2ViQ29yZTo6TWVkaWFFbmdpbmVTdXBwb3J0UGFyYW1ldGVycyB0eXBlKSAt
PiAoZW51bTp1aW50OF90IFdlYkNvcmU6Ok1lZGlhUGxheWVyOjpTdXBwb3J0c1R5cGUgc3VwcG9y
dCkgU3luY2hyb25vdXMKKyAgICBPcmlnaW5zSW5NZWRpYUNhY2hlKGVudW06dWludDhfdCBXZWJD
b3JlOjpNZWRpYVBsYXllckVudW1zOjpNZWRpYUVuZ2luZUlkZW50aWZpZXIgcmVtb3RlRW5naW5l
SWRlbnRpZmllciwgU3RyaW5nIHBhdGgpIC0+IChWZWN0b3I8V2ViQ29yZTo6U2VjdXJpdHlPcmln
aW5EYXRhPiBvcmlnaW5zKSBTeW5jaHJvbm91cworICAgIENsZWFyTWVkaWFDYWNoZShlbnVtOnVp
bnQ4X3QgV2ViQ29yZTo6TWVkaWFQbGF5ZXJFbnVtczo6TWVkaWFFbmdpbmVJZGVudGlmaWVyIHJl
bW90ZUVuZ2luZUlkZW50aWZpZXIsIFN0cmluZyBwYXRoLCBXYWxsVGltZSBtb2RpZmllZFNpbmNl
KQorICAgIENsZWFyTWVkaWFDYWNoZUZvck9yaWdpbnMoZW51bTp1aW50OF90IFdlYkNvcmU6Ok1l
ZGlhUGxheWVyRW51bXM6Ok1lZGlhRW5naW5lSWRlbnRpZmllciByZW1vdGVFbmdpbmVJZGVudGlm
aWVyLCBTdHJpbmcgcGF0aCwgVmVjdG9yPFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YT4gb3Jp
Z2lucykKKyAgICBTdXBwb3J0c0tleVN5c3RlbShlbnVtOnVpbnQ4X3QgV2ViQ29yZTo6TWVkaWFQ
bGF5ZXJFbnVtczo6TWVkaWFFbmdpbmVJZGVudGlmaWVyIHJlbW90ZUVuZ2luZUlkZW50aWZpZXIs
IFN0cmluZyBrZXlTeXN0ZW0sIFN0cmluZyBtaW1lVHlwZSkgLT4gKGJvb2wgc3VwcG9ydHMpIFN5
bmNocm9ub3VzCit9CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TY3JpcHRz
L3dlYmtpdC9tZXNzYWdlcy5weSBiL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvbWVzc2Fn
ZXMucHkKaW5kZXggZWQxMWFjMjcyNTIyNmU0N2EyYjU2YmNjOWVjZjIyMmRhYzAwMDlhZS4uZjJl
OWVkN2FiNTQwMmVmNTExODhmN2U4ZGJlMzk2YmE4YWNlMGZhZCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9TY3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5weQorKysgYi9Tb3VyY2UvV2ViS2l0L1Nj
cmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5CkBAIC0xLDQgKzEsNCBAQAotIyBDb3B5cmlnaHQgKEMp
IDIwMTAtMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjIENvcHlyaWdodCAo
QykgMjAxMC0yMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICMKICMgUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CiAjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucwpAQCAtMjE5LDEwICsyMTksMTEgQEAgZGVmIHR5cGVzX3RoYXRfY2Fu
bm90X2JlX2ZvcndhcmRfZGVjbGFyZWQoKToKICAgICAgICAgJ1dlYkNvcmU6OlNXU2VydmVyQ29u
bmVjdGlvbklkZW50aWZpZXInLAogICAgICAgICAnV2ViS2l0OjpBY3Rpdml0eVN0YXRlQ2hhbmdl
SUQnLAogICAgICAgICAnV2ViS2l0OjpMYXllckhvc3RpbmdDb250ZXh0SUQnLAotICAgICAgICAn
V2ViS2l0OjpUcmFuc2FjdGlvbklEJywKKyAgICAgICAgJ1dlYktpdDo6TWVkaWFQbGF5ZXJQcml2
YXRlUmVtb3RlSWRlbnRpZmllcicsCiAgICAgICAgICdXZWJLaXQ6OlN0b3JhZ2VBcmVhSWRlbnRp
ZmllcicsCiAgICAgICAgICdXZWJLaXQ6OlN0b3JhZ2VBcmVhSW1wbElkZW50aWZpZXInLAogICAg
ICAgICAnV2ViS2l0OjpTdG9yYWdlTmFtZXNwYWNlSWRlbnRpZmllcicsCisgICAgICAgICdXZWJL
aXQ6OlRyYW5zYWN0aW9uSUQnLAogICAgICAgICAnV2ViS2l0OjpVc2VyQ29udGVudENvbnRyb2xs
ZXJJZGVudGlmaWVyJywKICAgICAgICAgJ1dlYktpdDo6V2ViUGFnZVByb3h5SWRlbnRpZmllcics
CiAgICAgXSkKQEAgLTYwMyw2ICs2MDQsNyBAQCBkZWYgaGVhZGVyc19mb3JfdHlwZSh0eXBlKToK
ICAgICAgICAgJ1dlYktpdDo6V2ViTW91c2VFdmVudCc6IFsnIldlYkV2ZW50LmgiJ10sCiAgICAg
ICAgICdXZWJLaXQ6OldlYlRvdWNoRXZlbnQnOiBbJyJXZWJFdmVudC5oIiddLAogICAgICAgICAn
V2ViS2l0OjpXZWJXaGVlbEV2ZW50JzogWyciV2ViRXZlbnQuaCInXSwKKyAgICAgICAgJ1dlYkNv
cmU6Ok1lZGlhRW5naW5lU3VwcG9ydFBhcmFtZXRlcnMnOiBbJzxXZWJDb3JlL01lZGlhUGxheWVy
Lmg+J10sCiAgICAgICAgICdzdHJ1Y3QgV2ViQ29yZTo6RWxlbWVudENvbnRleHQnOiBbJzxXZWJD
b3JlL0VsZW1lbnRDb250ZXh0Lmg+J10sCiAgICAgICAgICdzdHJ1Y3QgV2ViS2l0OjpXZWJVc2Vy
U2NyaXB0RGF0YSc6IFsnIldlYlVzZXJDb250ZW50Q29udHJvbGxlckRhdGFUeXBlcy5oIiddLAog
ICAgICAgICAnc3RydWN0IFdlYktpdDo6V2ViVXNlclN0eWxlU2hlZXREYXRhJzogWyciV2ViVXNl
ckNvbnRlbnRDb250cm9sbGVyRGF0YVR5cGVzLmgiJ10sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1NvdXJjZXMudHh0IGIvU291cmNlL1dlYktpdC9Tb3VyY2VzLnR4dAppbmRleCA1ZjA0ZDhh
M2RhMGRkMzNlZjZiOTA2YWVhOTVlMjk1MGY4ZGVmNmY5Li41NDI0ZTVkZmJiMTUyMDEwYjBiMzJk
NmY1ZWE2ZDUzNTg5MTRlNTZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NvdXJjZXMudHh0
CisrKyBiL1NvdXJjZS9XZWJLaXQvU291cmNlcy50eHQKQEAgLTUwMCw2ICs1MDAsOCBAQCBXZWJQ
cm9jZXNzL01lZGlhU3RyZWFtL01lZGlhRGV2aWNlU2FuZGJveEV4dGVuc2lvbnMuY3BwCiBXZWJQ
cm9jZXNzL01lZGlhU3RyZWFtL1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlci5jcHAK
IAogV2ViUHJvY2Vzcy9HUFUvR1BVUHJvY2Vzc0Nvbm5lY3Rpb24uY3BwCitXZWJQcm9jZXNzL0dQ
VS9tZWRpYS9NZWRpYVBsYXllclByaXZhdGVSZW1vdGUuY3BwCitXZWJQcm9jZXNzL0dQVS9tZWRp
YS9SZW1vdGVNZWRpYVBsYXllck1hbmFnZXIuY3BwCiAKIFdlYlByb2Nlc3MvTmV0d29yay9OZXR3
b3JrUHJvY2Vzc0Nvbm5lY3Rpb24uY3BwCiBXZWJQcm9jZXNzL05ldHdvcmsvV2ViTG9hZGVyU3Ry
YXRlZ3kuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NvdXJjZXNDb2NvYS50eHQgYi9T
b3VyY2UvV2ViS2l0L1NvdXJjZXNDb2NvYS50eHQKaW5kZXggOWQyNDJlMmEwNjRkZmY3MmY0OWM0
MmY1NGQ5NzgxM2NhZDk0ZDkyYy4uZDk0ODNkMGExMzlhMDBhZGFkNzdmYTgzN2VjYzczZWMxNzhi
OWMzZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9Tb3VyY2VzQ29jb2EudHh0CisrKyBiL1Nv
dXJjZS9XZWJLaXQvU291cmNlc0NvY29hLnR4dApAQCAtNTksNiArNTksNyBAQCBOZXR3b3JrUHJv
Y2Vzcy93ZWJydGMvTmV0d29ya1JUQ1NvY2tldC5jcHAKIAogR1BVUHJvY2Vzcy9pb3MvR1BVUHJv
Y2Vzc0lPUy5tbQogR1BVUHJvY2Vzcy9tYWMvR1BVUHJvY2Vzc01hYy5tbQorR1BVUHJvY2Vzcy9t
ZWRpYS9SZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eS5jcHAKIEdQVVByb2Nlc3MvRW50cnlQ
b2ludC9Db2NvYS9YUENTZXJ2aWNlL0dQVVNlcnZpY2VFbnRyeVBvaW50Lm1tCiAKIFBsYXRmb3Jt
L2NmL01vZHVsZUNGLmNwcApAQCAtNjI0LDUgKzYyNSw3IEBAIEVkaXRhYmxlSW1hZ2VDb250cm9s
bGVyTWVzc2FnZVJlY2VpdmVyLmNwcAogR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzc01lc3NhZ2VS
ZWNlaXZlci5jcHAKIEdQVVByb2Nlc3NQcm94eU1lc3NhZ2VSZWNlaXZlci5jcHAKIEdQVVByb2Nl
c3NNZXNzYWdlUmVjZWl2ZXIuY3BwCisvL1JlbW90ZU1lZGlhUGxheWVyTWFuYWdlck1lc3NhZ2VS
ZWNlaXZlci5jcHAKKy8vUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHlNZXNzYWdlUmVjZWl2
ZXIuY3BwCiBTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrTWVzc2FnZVJlY2VpdmVyLmNwcAogVGV4dENo
ZWNraW5nQ29udHJvbGxlclByb3h5TWVzc2FnZVJlY2VpdmVyLmNwcApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJL
aXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggNDY2Y2RlOTljZWRhNDFh
YjNkMTI1YjAyNTJiYTI5YzZhOTFmMjg2Yy4uMjE1Y2YyYjM1YzQ0OWU4YThhOGY3ZmYzZDJiY2Y1
ZjQ3MTljZTNmNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qCkBAIC05MSw2ICs5MSwxMyBAQAogCQkwNzRFNzVGRTFERjIyMTE5MDBEMzE4RUMg
LyogVXNlck1lZGlhUHJvY2Vzc01hbmFnZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDA3NEU3NUZCMURGMUZEMTMwMEQzMThFQyAvKiBVc2VyTWVkaWFQ
cm9jZXNzTWFuYWdlci5oICovOyB9OwogCQkwNzZFODg0RTFBMTNDQURGMDA1RTkwRkMgLyogQVBJ
Q29udGV4dE1lbnVDbGllbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDA3NkU4ODREMUExM0NBREYwMDVFOTBGQyAvKiBBUElDb250ZXh0TWVudUNsaWVu
dC5oICovOyB9OwogCQkwNzcyODExRDIxMjM0RkY2MDBDOEVGMkUgLyogVXNlck1lZGlhUGVybWlz
c2lvblJlcXVlc3RNYW5hZ2VyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA0QTQxMEY0MzE5QUY3QjI3MDAyRUJBQjUgLyogVXNlck1lZGlhUGVybWlzc2lv
blJlcXVlc3RNYW5hZ2VyLmggKi87IH07CisJCTA3OTIzMTQ4MjM5Q0JDQjgwMDk1OThFMiAvKiBS
ZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eU1lc3NhZ2VzUmVwbGllcy5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDc5MjMxNDIyMzlDQkNCNTAwOTU5
OEUyIC8qIFJlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5TWVzc2FnZXNSZXBsaWVzLmggKi87
IH07CisJCTA3OTIzMTQ5MjM5Q0JDQjgwMDk1OThFMiAvKiBSZW1vdGVNZWRpYVBsYXllck1hbmFn
ZXJNZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gMDc5MjMxNDMyMzlDQkNCNjAwOTU5OEUyIC8qIFJlbW90ZU1lZGlhUGxheWVy
TWFuYWdlck1lc3NhZ2VSZWNlaXZlci5jcHAgKi87IH07CisJCTA3OTIzMTRBMjM5Q0JDQjgwMDk1
OThFMiAvKiBSZW1vdGVNZWRpYVBsYXllck1hbmFnZXJNZXNzYWdlc1JlcGxpZXMuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3OTIzMTQ0MjM5Q0JDQjYw
MDk1OThFMiAvKiBSZW1vdGVNZWRpYVBsYXllck1hbmFnZXJNZXNzYWdlc1JlcGxpZXMuaCAqLzsg
fTsKKwkJMDc5MjMxNEIyMzlDQkNCODAwOTU5OEUyIC8qIFJlbW90ZU1lZGlhUGxheWVyTWFuYWdl
clByb3h5TWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDA3OTIzMTQ1MjM5Q0JDQjcwMDk1OThFMiAvKiBSZW1vdGVNZWRpYVBs
YXllck1hbmFnZXJQcm94eU1lc3NhZ2VSZWNlaXZlci5jcHAgKi87IH07CisJCTA3OTIzMTRDMjM5
Q0JDQjgwMDk1OThFMiAvKiBSZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eU1lc3NhZ2VzLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwNzkyMzE0NjIz
OUNCQ0I3MDA5NTk4RTIgLyogUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHlNZXNzYWdlcy5o
ICovOyB9OworCQkwNzkyMzE0RDIzOUNCQ0I4MDA5NTk4RTIgLyogUmVtb3RlTWVkaWFQbGF5ZXJN
YW5hZ2VyTWVzc2FnZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDA3OTIzMTQ3MjM5Q0JDQjcwMDk1OThFMiAvKiBSZW1vdGVNZWRpYVBsYXllck1hbmFn
ZXJNZXNzYWdlcy5oICovOyB9OworCQkwNzkyMzE0RjIzOUQ2MjNFMDA5NTk4RTIgLyogTWVkaWFQ
bGF5ZXJQcml2YXRlUmVtb3RlSWRlbnRpZmllci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gMDc5MjMxNEUyMzlENUY1MzAwOTU5OEUyIC8qIE1lZGlhUGxh
eWVyUHJpdmF0ZVJlbW90ZUlkZW50aWZpZXIuaCAqLzsgfTsKIAkJMDdBNUVCQkMxQzdCQTQzRTAw
QjlDQTY5IC8qIFdLRnJhbWVIYW5kbGVSZWYuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDA3QTVFQkJBMUM3QkE0M0UwMEI5Q0E2OSAvKiBXS0ZyYW1lSGFu
ZGxlUmVmLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
IAkJMEU5N0Q3NEQyMDBFOTAwNDAwQkY2NjQzIC8qIFNhZmVCcm93c2luZ1NQSS5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEU5N0Q3NEMyMDBFOEZGMzAw
QkY2NjQzIC8qIFNhZmVCcm93c2luZ1NQSS5oICovOyB9OwogCQkwRURFODUwMzIwMDRFNzVEMDAw
MzA1NjAgLyogV2Vic2l0ZVBvcFVwUG9saWN5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSAwRURFODUwMjIwMDRFNzQ5MDAwMzA1NjAgLyogV2Vic2l0ZVBv
cFVwUG9saWN5LmggKi87IH07CkBAIC0xOTk3LDYgKzIwMDQsOSBAQAogCQkwMEI5NjYxNTE4RTI0
Q0JBMDBDRTFGODggLyogQVBJRmluZENsaWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBBUElGaW5kQ2xpZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTAw
Qjk2NjE3MThFMjVBRTEwMENFMUY4OCAvKiBGaW5kQ2xpZW50Lm1tICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAub2JqY3BwOyBwYXRoID0gRmluZENsaWVudC5tbTsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJMDBCOTY2MTgxOEUyNUFFMTAwQ0UxRjg4IC8qIEZpbmRDbGllbnQuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRmluZENsaWVudC5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQkwNzI1RUZBQjIzOUFFMzg0MDBBNTM4QTkgLyogUmVtb3RlTWVkaWFQ
bGF5ZXJNYW5hZ2VyUHJveHkubWVzc2FnZXMuaW4gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gUmVtb3RlTWVkaWFQbGF5ZXJNYW5h
Z2VyUHJveHkubWVzc2FnZXMuaW47IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTA3MjVF
RkFDMjM5QUUzODUwMEE1MzhBOSAvKiBSZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eS5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBSZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eS5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQkwNzI1RUZBRDIzOUIwMjQ1MDBBNTM4QTkgLyogUmVtb3RlTWVk
aWFQbGF5ZXJNYW5hZ2VyUHJveHkuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUmVtb3RlTWVkaWFQ
bGF5ZXJNYW5hZ2VyUHJveHkuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwNzI5
N0Y5QzFDMTcxMUVBMDAzRjA3MzUgLyogRGV2aWNlSWRIYXNoU2FsdFN0b3JhZ2UuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRGV2aWNlSWRIYXNoU2FsdFN0b3JhZ2Uu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwNzI5N0Y5QzFDMTdCQkVBMDAzRjA3
MzUgLyogVXNlck1lZGlhUGVybWlzc2lvbkNoZWNrUHJveHkuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gVXNlck1lZGlhUGVybWlzc2lvbkNoZWNrUHJveHkuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwNzI5N0Y5RDFDMTdCQkVBMDAzRjA3MzUgLyog
VXNlck1lZGlhUGVybWlzc2lvbkNoZWNrUHJveHkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gVXNlck1lZGlhUGVybWlzc2lvbkNoZWNrUHJveHkuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKQEAgLTIwMTEsNiArMjAyMSwxOCBAQAogCQkwNzRFNzYwMTFERjcwNzVEMDBE
MzE4RUMgLyogTWVkaWFEZXZpY2VTYW5kYm94RXh0ZW5zaW9ucy5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBNZWRpYURldmljZVNhbmRib3hFeHRlbnNpb25zLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTA3NkU4ODREMUExM0NBREYwMDVFOTBGQyAvKiBBUElDb250
ZXh0TWVudUNsaWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBUElDb250
ZXh0TWVudUNsaWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwNzZFODg0RjFB
MTNDQkM2MDA1RTkwRkMgLyogQVBJSW5qZWN0ZWRCdW5kbGVQYWdlQ29udGV4dE1lbnVDbGllbnQu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQVBJSW5qZWN0ZWRCdW5kbGVQYWdl
Q29udGV4dE1lbnVDbGllbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMDc5MjMx
MzAyMzlCM0IwQzAwOTU5OEUyIC8qIFJlbW90ZU1lZGlhUGxheWVyTWFuYWdlci5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBSZW1vdGVNZWRpYVBsYXllck1hbmFnZXIuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQkwNzkyMzEzMTIzOUIzQjBDMDA5NTk4RTIgLyogTWVkaWFQbGF5ZXJQ
cml2YXRlUmVtb3RlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE1lZGlhUGxheWVyUHJpdmF0ZVJl
bW90ZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTA3OTIzMTMyMjM5QjNCMEMw
MDk1OThFMiAvKiBNZWRpYVBsYXllclByaXZhdGVSZW1vdGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTWVk
aWFQbGF5ZXJQcml2YXRlUmVtb3RlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTA3
OTIzMTMzMjM5QjNCMEMwMDk1OThFMiAvKiBSZW1vdGVNZWRpYVBsYXllck1hbmFnZXIubWVzc2Fn
ZXMuaW4gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0
ZXh0OyBwYXRoID0gUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyLm1lc3NhZ2VzLmluOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQkwNzkyMzEzNDIzOUIzQjBDMDA5NTk4RTIgLyogUmVtb3Rl
TWVkaWFQbGF5ZXJNYW5hZ2VyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlbW90ZU1lZGlhUGxheWVyTWFu
YWdlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwNzkyMzE0MjIzOUNCQ0I1MDA5
NTk4RTIgLyogUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHlNZXNzYWdlc1JlcGxpZXMuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2Vy
UHJveHlNZXNzYWdlc1JlcGxpZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMDc5
MjMxNDMyMzlDQkNCNjAwOTU5OEUyIC8qIFJlbW90ZU1lZGlhUGxheWVyTWFuYWdlck1lc3NhZ2VS
ZWNlaXZlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSZW1vdGVN
ZWRpYVBsYXllck1hbmFnZXJNZXNzYWdlUmVjZWl2ZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQkwNzkyMzE0NDIzOUNCQ0I2MDA5NTk4RTIgLyogUmVtb3RlTWVkaWFQbGF5ZXJN
YW5hZ2VyTWVzc2FnZXNSZXBsaWVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IFJlbW90ZU1lZGlhUGxheWVyTWFuYWdlck1lc3NhZ2VzUmVwbGllcy5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQkwNzkyMzE0NTIzOUNCQ0I3MDA5NTk4RTIgLyogUmVtb3RlTWVkaWFQ
bGF5ZXJNYW5hZ2VyUHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHlNZXNzYWdlUmVj
ZWl2ZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwNzkyMzE0NjIzOUNCQ0I3
MDA5NTk4RTIgLyogUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHlNZXNzYWdlcy5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94
eU1lc3NhZ2VzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTA3OTIzMTQ3MjM5Q0JD
QjcwMDk1OThFMiAvKiBSZW1vdGVNZWRpYVBsYXllck1hbmFnZXJNZXNzYWdlcy5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZW1vdGVNZWRpYVBsYXllck1hbmFnZXJNZXNzYWdl
cy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwNzkyMzE0RTIzOUQ1RjUzMDA5NTk4
RTIgLyogTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlSWRlbnRpZmllci5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBNZWRpYVBsYXllclByaXZhdGVSZW1vdGVJZGVudGlmaWVyLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTA3QTVFQkI5MUM3QkE0M0UwMEI5Q0E2OSAvKiBXS0ZyYW1lSGFuZGxlUmVm
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdLRnJhbWVIYW5kbGVS
ZWYuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwN0E1RUJCQTFDN0JBNDNFMDBC
OUNBNjkgLyogV0tGcmFtZUhhbmRsZVJlZi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBXS0ZyYW1lSGFuZGxlUmVmLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTA4
NjdENkE1RkU4NDAzMDdDMDJBQUMwNyAvKiBBcHBLaXQuZnJhbWV3b3JrICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gd3JhcHBlci5mcmFtZXdvcms7IG5h
bWUgPSBBcHBLaXQuZnJhbWV3b3JrOyBwYXRoID0gL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3Mv
QXBwS2l0LmZyYW1ld29yazsgc291cmNlVHJlZSA9ICI8YWJzb2x1dGU+IjsgfTsKQEAgLTUwMTMs
NiArNTAzNSwyOSBAQAogCQkJdGFiV2lkdGggPSA4OwogCQkJdXNlc1RhYnMgPSAwOwogCQl9Owor
CQkwNzkyMzEyRjIzOUIzQjBDMDA5NTk4RTIgLyogbWVkaWEgKi8gPSB7CisJCQlpc2EgPSBQQlhH
cm91cDsKKwkJCWNoaWxkcmVuID0gKAorCQkJCTA3OTIzMTMxMjM5QjNCMEMwMDk1OThFMiAvKiBN
ZWRpYVBsYXllclByaXZhdGVSZW1vdGUuY3BwICovLAorCQkJCTA3OTIzMTMyMjM5QjNCMEMwMDk1
OThFMiAvKiBNZWRpYVBsYXllclByaXZhdGVSZW1vdGUuaCAqLywKKwkJCQkwNzkyMzE0RTIzOUQ1
RjUzMDA5NTk4RTIgLyogTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlSWRlbnRpZmllci5oICovLAor
CQkJCTA3OTIzMTMwMjM5QjNCMEMwMDk1OThFMiAvKiBSZW1vdGVNZWRpYVBsYXllck1hbmFnZXIu
Y3BwICovLAorCQkJCTA3OTIzMTM0MjM5QjNCMEMwMDk1OThFMiAvKiBSZW1vdGVNZWRpYVBsYXll
ck1hbmFnZXIuaCAqLywKKwkJCQkwNzkyMzEzMzIzOUIzQjBDMDA5NTk4RTIgLyogUmVtb3RlTWVk
aWFQbGF5ZXJNYW5hZ2VyLm1lc3NhZ2VzLmluICovLAorCQkJKTsKKwkJCXBhdGggPSBtZWRpYTsK
KwkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CisJCX07CisJCTA3Qzc1QzE3MjM5OUEzREIwMDg4
RTY1QiAvKiBtZWRpYSAqLyA9IHsKKwkJCWlzYSA9IFBCWEdyb3VwOworCQkJY2hpbGRyZW4gPSAo
CisJCQkJMDcyNUVGQUQyMzlCMDI0NTAwQTUzOEE5IC8qIFJlbW90ZU1lZGlhUGxheWVyTWFuYWdl
clByb3h5LmNwcCAqLywKKwkJCQkwNzI1RUZBQzIzOUFFMzg1MDBBNTM4QTkgLyogUmVtb3RlTWVk
aWFQbGF5ZXJNYW5hZ2VyUHJveHkuaCAqLywKKwkJCQkwNzI1RUZBQjIzOUFFMzg0MDBBNTM4QTkg
LyogUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHkubWVzc2FnZXMuaW4gKi8sCisJCQkpOwor
CQkJcGF0aCA9IG1lZGlhOworCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKKwkJfTsKIAkJMDg2
N0Q2OTFGRTg0MDI4RkMwMkFBQzA3IC8qIFdlYktpdDIgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91
cDsKIAkJCWNoaWxkcmVuID0gKApAQCAtNjE5NSw2ICs2MjQwLDcgQEAKIAkJMkQ3RTQzQkYyMzc1
MkNEOTAwRUE1Q0EwIC8qIEdQVSAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRy
ZW4gPSAoCisJCQkJMDc5MjMxMkYyMzlCM0IwQzAwOTU5OEUyIC8qIG1lZGlhICovLAogCQkJCTJE
N0U0M0MwMjM3NTJDRDkwMEVBNUNBMCAvKiBHUFVQcm9jZXNzQ29ubmVjdGlvbi5jcHAgKi8sCiAJ
CQkJMkQ3RTQzQzMyMzc1MkNEOTAwRUE1Q0EwIC8qIEdQVVByb2Nlc3NDb25uZWN0aW9uLmggKi8s
CiAJCQkJMkQ3RTQzQzIyMzc1MkNEOTAwRUE1Q0EwIC8qIEdQVVByb2Nlc3NDb25uZWN0aW9uLm1l
c3NhZ2VzLmluICovLApAQCAtNjIwOSw2ICs2MjU1LDcgQEAKIAkJCQkyRDlGQjIwRDIzNzUyMDlE
MDA0OUY5MzYgLyogRW50cnlQb2ludCAqLywKIAkJCQkyRDlGQjIwNDIzNzUyMDlEMDA0OUY5MzYg
LyogaW9zICovLAogCQkJCTJEOUZCMjA2MjM3NTIwOUQwMDQ5RjkzNiAvKiBtYWMgKi8sCisJCQkJ
MDdDNzVDMTcyMzk5QTNEQjAwODhFNjVCIC8qIG1lZGlhICovLAogCQkJCTJEOUZCMjBDMjM3NTIw
OUQwMDQ5RjkzNiAvKiBHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcCAqLywKIAkJCQkyRDlG
QjIwMDIzNzUyMDlEMDA0OUY5MzYgLyogR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oICovLAog
CQkJCTJEOUZCMjA5MjM3NTIwOUQwMDQ5RjkzNiAvKiBHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNz
Lm1lc3NhZ2VzLmluICovLApAQCAtOTEyMyw2ICs5MTcwLDEyIEBACiAJCQkJMUE4RUZBNkYxMjUy
Qjg0MTAwRjcwNjdGIC8qIFBsdWdpblByb3h5TWVzc2FnZXMuaCAqLywKIAkJCQkwRkYyNEEyQjE4
NzlFNEJDMDAzQUJGMEMgLyogUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWFQcm94eU1lc3NhZ2VS
ZWNlaXZlci5jcHAgKi8sCiAJCQkJMEZGMjRBMkMxODc5RTRCQzAwM0FCRjBDIC8qIFJlbW90ZUxh
eWVyVHJlZURyYXdpbmdBcmVhUHJveHlNZXNzYWdlcy5oICovLAorCQkJCTA3OTIzMTQzMjM5Q0JD
QjYwMDk1OThFMiAvKiBSZW1vdGVNZWRpYVBsYXllck1hbmFnZXJNZXNzYWdlUmVjZWl2ZXIuY3Bw
ICovLAorCQkJCTA3OTIzMTQ3MjM5Q0JDQjcwMDk1OThFMiAvKiBSZW1vdGVNZWRpYVBsYXllck1h
bmFnZXJNZXNzYWdlcy5oICovLAorCQkJCTA3OTIzMTQ0MjM5Q0JDQjYwMDk1OThFMiAvKiBSZW1v
dGVNZWRpYVBsYXllck1hbmFnZXJNZXNzYWdlc1JlcGxpZXMuaCAqLywKKwkJCQkwNzkyMzE0NTIz
OUNCQ0I3MDA5NTk4RTIgLyogUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHlNZXNzYWdlUmVj
ZWl2ZXIuY3BwICovLAorCQkJCTA3OTIzMTQ2MjM5Q0JDQjcwMDk1OThFMiAvKiBSZW1vdGVNZWRp
YVBsYXllck1hbmFnZXJQcm94eU1lc3NhZ2VzLmggKi8sCisJCQkJMDc5MjMxNDIyMzlDQkNCNTAw
OTU5OEUyIC8qIFJlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5TWVzc2FnZXNSZXBsaWVzLmgg
Ki8sCiAJCQkJMUFDMTMzODMxODU5MEM0NjAwRjNFQzA1IC8qIFJlbW90ZU9iamVjdFJlZ2lzdHJ5
TWVzc2FnZVJlY2VpdmVyLmNwcCAqLywKIAkJCQkxQUMxMzM4NDE4NTkwQzQ2MDBGM0VDMDUgLyog
UmVtb3RlT2JqZWN0UmVnaXN0cnlNZXNzYWdlcy5oICovLAogCQkJCTBGNTk0N0E1MTg3QjUxNzYw
MDQzNzg1NyAvKiBSZW1vdGVTY3JvbGxpbmdDb29yZGluYXRvck1lc3NhZ2VSZWNlaXZlci5jcHAg
Ki8sCkBAIC05ODQwLDYgKzk4OTMsNyBAQAogCQkJCUJDQzU2Rjc5MTE1OTk1N0QwMDFDQ0FGOSAv
KiBNYWNoUG9ydC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUEyNEI1RjMxMUY1MzFFODAwQzM4MjY5
IC8qIE1hY2hVdGlsaXRpZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCUNFMUEwQkQ1MUE0OEU2QzYw
MDU0RUY3NCAvKiBNYW5hZ2VkQ29uZmlndXJhdGlvblNQSS5oIGluIEhlYWRlcnMgKi8sCisJCQkJ
MDc5MjMxNEYyMzlENjIzRTAwOTU5OEUyIC8qIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZUlkZW50
aWZpZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTUxOTMzREVGMTk2NUVCMzEwMDhBQzNFQSAvKiBN
ZW51VXRpbGl0aWVzLmggaW4gSGVhZGVycyAqLywKIAkJCQkxQUM0QzgyOTE2Qjg3NkE5MDA2OURD
Q0QgLyogTWVzc2FnZUZsYWdzLmggaW4gSGVhZGVycyAqLywKIAkJCQkxQTNFRUQxMjE2MUE1M0Q2
MDBBRUI0RjUgLyogTWVzc2FnZVJlY2VpdmVyLmggaW4gSGVhZGVycyAqLywKQEAgLTEwMDAwLDYg
KzEwMDU0LDEwIEBACiAJCQkJMEZGMjY0QTAxQTFGRjlDQzAwMUZFNzU5IC8qIFJlbW90ZUxheWVy
VHJlZVNjcm9sbGluZ1BlcmZvcm1hbmNlRGF0YS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUFGMUFD
NkMxNjUxNzU5RTAwQzE3RDdGIC8qIFJlbW90ZUxheWVyVHJlZVRyYW5zYWN0aW9uLmggaW4gSGVh
ZGVycyAqLywKIAkJCQkyREMxOEZCMzIxOEE2RTlFMDAyNUE4OEQgLyogUmVtb3RlTGF5ZXJUcmVl
Vmlld3MuaCBpbiBIZWFkZXJzICovLAorCQkJCTA3OTIzMTREMjM5Q0JDQjgwMDk1OThFMiAvKiBS
ZW1vdGVNZWRpYVBsYXllck1hbmFnZXJNZXNzYWdlcy5oIGluIEhlYWRlcnMgKi8sCisJCQkJMDc5
MjMxNEEyMzlDQkNCODAwOTU5OEUyIC8qIFJlbW90ZU1lZGlhUGxheWVyTWFuYWdlck1lc3NhZ2Vz
UmVwbGllcy5oIGluIEhlYWRlcnMgKi8sCisJCQkJMDc5MjMxNEMyMzlDQkNCODAwOTU5OEUyIC8q
IFJlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5TWVzc2FnZXMuaCBpbiBIZWFkZXJzICovLAor
CQkJCTA3OTIzMTQ4MjM5Q0JDQjgwMDk1OThFMiAvKiBSZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQ
cm94eU1lc3NhZ2VzUmVwbGllcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTFCNzg0NzExNjNGMjQ2
OTAwMDdCNjkyIC8qIFJlbW90ZU5ldHdvcmtpbmdDb250ZXh0LmggaW4gSGVhZGVycyAqLywKIAkJ
CQkxQTU3MDRGQzFCRTE3NTExMDA4NzRBRjEgLyogUmVtb3RlT2JqZWN0SW52b2NhdGlvbi5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJMUFDMTMzODAxODU5MEFFNDAwRjNFQzA1IC8qIFJlbW90ZU9iamVj
dFJlZ2lzdHJ5LmggaW4gSGVhZGVycyAqLywKQEAgLTExNjU4LDYgKzExNzE2LDggQEAKIAkJCQky
RDcyQTFGQTIxMkJGNDZFMDA1MTdBMjAgLyogUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWEubW0g
aW4gU291cmNlcyAqLywKIAkJCQkwRkYyNEEyRDE4NzlFNEJDMDAzQUJGMEMgLyogUmVtb3RlTGF5
ZXJUcmVlRHJhd2luZ0FyZWFQcm94eU1lc3NhZ2VSZWNlaXZlci5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQkyREMxOEZCNDIxOEE2RTlFMDAyNUE4OEQgLyogUmVtb3RlTGF5ZXJUcmVlVmlld3MubW0g
aW4gU291cmNlcyAqLywKKwkJCQkwNzkyMzE0OTIzOUNCQ0I4MDA5NTk4RTIgLyogUmVtb3RlTWVk
aWFQbGF5ZXJNYW5hZ2VyTWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTA3
OTIzMTRCMjM5Q0JDQjgwMDk1OThFMiAvKiBSZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eU1l
c3NhZ2VSZWNlaXZlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxQUMxMzM4NTE4NTkwQzQ2MDBG
M0VDMDUgLyogUmVtb3RlT2JqZWN0UmVnaXN0cnlNZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJMEY1OTQ3QTcxODdCNTE3NjAwNDM3ODU3IC8qIFJlbW90ZVNjcm9sbGluZ0Nv
b3JkaW5hdG9yTWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE1NUJBODI2
MUJBMjVDRkQwMDdDRDMzRCAvKiBSZW1vdGVXZWJJbnNwZWN0b3JQcm94eU1lc3NhZ2VSZWNlaXZl
ci5jcHAgaW4gU291cmNlcyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9HUFUvbWVkaWEvTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlLmNwcCBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9HUFUvbWVkaWEvTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlLmNwcApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi43ZTI0NTcxMDU1MDcyNGM4YzkwMzQ3ZDcxZjNmZDY5ODI1YzMwYTFlCi0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9NZWRpYVBsYXllclBy
aXZhdGVSZW1vdGUuY3BwCkBAIC0wLDAgKzEsNzY4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAq
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UK
KyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKworI2lmIEVOQUJM
RShHUFVfUFJPQ0VTUykKKyNpbmNsdWRlICJNZWRpYVBsYXllclByaXZhdGVSZW1vdGUuaCIKKwor
I2luY2x1ZGUgIkxvZ2dpbmcuaCIKKyNpbmNsdWRlICJSZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQ
cm94eU1lc3NhZ2VzLmgiCisjaW5jbHVkZSA8V2ViQ29yZS9NZWRpYVBsYXllci5oPgorI2luY2x1
ZGUgPFdlYkNvcmUvTm90SW1wbGVtZW50ZWQuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1BsYXRmb3Jt
TGF5ZXIuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1BsYXRmb3JtVGltZVJhbmdlcy5oPgorI2luY2x1
ZGUgPHd0Zi9IYXNoTWFwLmg+CisjaW5jbHVkZSA8d3RmL01haW5UaHJlYWQuaD4KKyNpbmNsdWRl
IDx3dGYvU3RyaW5nUHJpbnRTdHJlYW0uaD4KKyNpbmNsdWRlIDx3dGYvVVJMLmg+CisjaW5jbHVk
ZSA8d3RmL3RleHQvQ1N0cmluZy5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsKK3VzaW5nIG5hbWVz
cGFjZSBQQUw7Cit1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKKworTWVkaWFQbGF5ZXJQcml2YXRl
UmVtb3RlOjpNZWRpYVBsYXllclByaXZhdGVSZW1vdGUoTWVkaWFQbGF5ZXIqIHBsYXllciwgTWVk
aWFQbGF5ZXJFbnVtczo6TWVkaWFFbmdpbmVJZGVudGlmaWVyIGVuZ2luZUlkZW50aWZpZXIsIE1l
ZGlhUGxheWVyUHJpdmF0ZVJlbW90ZUlkZW50aWZpZXIgcGxheWVySWRlbnRpZmllciwgUmVtb3Rl
TWVkaWFQbGF5ZXJNYW5hZ2VyJiBtYW5hZ2VyKQorICAgIDogbV9wbGF5ZXIocGxheWVyKQorICAg
ICwgbV9tYW5hZ2VyKG1hbmFnZXIpCisgICAgLCBtX3JlbW90ZUVuZ2luZUlkZW50aWZpZXIoZW5n
aW5lSWRlbnRpZmllcikKKyAgICAsIG1faWRlbnRpZmllcihwbGF5ZXJJZGVudGlmaWVyKQorI2lm
ICFSRUxFQVNFX0xPR19ESVNBQkxFRAorICAgICwgbV9sb2dnZXIocGxheWVyLT5tZWRpYVBsYXll
ckxvZ2dlcigpKQorICAgICwgbV9sb2dJZGVudGlmaWVyKHBsYXllci0+bWVkaWFQbGF5ZXJMb2dJ
ZGVudGlmaWVyKCkpCisjZW5kaWYKK3sKKyAgICBJTkZPX0xPRyhMT0dJREVOVElGSUVSKTsKK30K
KworTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjp+TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlKCkK
K3sKKyAgICBJTkZPX0xPRyhMT0dJREVOVElGSUVSKTsKKyAgICBtX3BsYXllciA9IG51bGxwdHI7
Cit9CisKK3ZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpNZWRpYVBsYXllclByaXZhdGVS
ZW1vdGU6OmxvYWQoY29uc3QgU3RyaW5nJikKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQor
CisjaWYgRU5BQkxFKE1FRElBX1NPVVJDRSkKK3ZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3Rl
Ojpsb2FkKGNvbnN0IFN0cmluZyYsIE1lZGlhU291cmNlUHJpdmF0ZUNsaWVudCopCit7CisgICAg
bm90SW1wbGVtZW50ZWQoKTsKK30KKyNlbmRpZgorCisjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkK
K3ZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpsb2FkKE1lZGlhU3RyZWFtUHJpdmF0ZSYp
Cit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKyNlbmRpZgordm9pZCBNZWRpYVBsYXllclBy
aXZhdGVSZW1vdGU6OmNhbmNlbExvYWQoKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisK
Kwordm9pZCBNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OnByZXBhcmVUb1BsYXkoKQoreworICAg
IG5vdEltcGxlbWVudGVkKCk7Cit9CisKK1BsYXRmb3JtTGF5ZXIqIE1lZGlhUGxheWVyUHJpdmF0
ZVJlbW90ZTo6cGxhdGZvcm1MYXllcigpIGNvbnN0Cit7CisgICAgcmV0dXJuIG51bGxwdHI7Cit9
CisKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKSB8fCAoUExBVEZPUk0oTUFDKSAmJiBFTkFCTEUo
VklERU9fUFJFU0VOVEFUSU9OX01PREUpKQordm9pZCBNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6
OnNldFZpZGVvRnVsbHNjcmVlbkxheWVyKFBsYXRmb3JtTGF5ZXIqLCBXVEY6OkZ1bmN0aW9uPHZv
aWQoKT4mJikKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCit2b2lkIE1lZGlhUGxheWVy
UHJpdmF0ZVJlbW90ZTo6dXBkYXRlVmlkZW9GdWxsc2NyZWVuSW5saW5lSW1hZ2UoKQoreworICAg
IG5vdEltcGxlbWVudGVkKCk7Cit9CisKK3ZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpz
ZXRWaWRlb0Z1bGxzY3JlZW5GcmFtZShGbG9hdFJlY3QpCit7CisgICAgbm90SW1wbGVtZW50ZWQo
KTsKK30KKwordm9pZCBNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OnNldFZpZGVvRnVsbHNjcmVl
bkdyYXZpdHkoTWVkaWFQbGF5ZXI6OlZpZGVvR3Jhdml0eSkKK3sKKyAgICBub3RJbXBsZW1lbnRl
ZCgpOworfQorCit2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6c2V0VmlkZW9GdWxsc2Ny
ZWVuTW9kZShNZWRpYVBsYXllcjo6VmlkZW9GdWxsc2NyZWVuTW9kZSkKK3sKKyAgICBub3RJbXBs
ZW1lbnRlZCgpOworfQorCit2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6dmlkZW9GdWxs
c2NyZWVuU3RhbmRieUNoYW5nZWQoKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisjZW5k
aWYKKworI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCitOU0FycmF5KiBNZWRpYVBsYXllclByaXZh
dGVSZW1vdGU6OnRpbWVkTWV0YWRhdGEoKSBjb25zdAoreworICAgIG5vdEltcGxlbWVudGVkKCk7
CisgICAgcmV0dXJuIG51bGxwdHI7Cit9CisKK1N0cmluZyBNZWRpYVBsYXllclByaXZhdGVSZW1v
dGU6OmFjY2Vzc0xvZygpIGNvbnN0Cit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1
cm4gZW1wdHlTdHJpbmcoKTsKK30KKworU3RyaW5nIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6
ZXJyb3JMb2coKSBjb25zdAoreworICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIGVt
cHR5U3RyaW5nKCk7Cit9CisjZW5kaWYKKworbG9uZyBNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6
OnBsYXRmb3JtRXJyb3JDb2RlKCkgY29uc3QKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAg
IHJldHVybiAwOworfQorCit2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6cGxheSgpCit7
CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwordm9pZCBNZWRpYVBsYXllclByaXZhdGVSZW1v
dGU6OnBhdXNlKCkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCit2b2lkIE1lZGlhUGxh
eWVyUHJpdmF0ZVJlbW90ZTo6c2V0QnVmZmVyaW5nUG9saWN5KE1lZGlhUGxheWVyOjpCdWZmZXJp
bmdQb2xpY3kpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKworYm9vbCBNZWRpYVBsYXll
clByaXZhdGVSZW1vdGU6OnN1cHBvcnRzUGljdHVyZUluUGljdHVyZSgpIGNvbnN0Cit7CisgICAg
bm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK2Jvb2wgTWVkaWFQbGF5
ZXJQcml2YXRlUmVtb3RlOjpzdXBwb3J0c0Z1bGxzY3JlZW4oKSBjb25zdAoreworICAgIG5vdElt
cGxlbWVudGVkKCk7CisgICAgcmV0dXJuIGZhbHNlOworfQorCitib29sIE1lZGlhUGxheWVyUHJp
dmF0ZVJlbW90ZTo6c3VwcG9ydHNTY2FubmluZygpIGNvbnN0Cit7CisgICAgbm90SW1wbGVtZW50
ZWQoKTsKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK2Jvb2wgTWVkaWFQbGF5ZXJQcml2YXRlUmVt
b3RlOjpyZXF1aXJlc0ltbWVkaWF0ZUNvbXBvc2l0aW5nKCkgY29uc3QKK3sKKyAgICBub3RJbXBs
ZW1lbnRlZCgpOworICAgIHJldHVybiBmYWxzZTsKK30KKworYm9vbCBNZWRpYVBsYXllclByaXZh
dGVSZW1vdGU6OmNhblNhdmVNZWRpYURhdGEoKSBjb25zdAoreworICAgIG5vdEltcGxlbWVudGVk
KCk7CisgICAgcmV0dXJuIGZhbHNlOworfQorCitGbG9hdFNpemUgTWVkaWFQbGF5ZXJQcml2YXRl
UmVtb3RlOjpuYXR1cmFsU2l6ZSgpIGNvbnN0Cit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAg
ICByZXR1cm4geyB9OworfQorCitib29sIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6aGFzVmlk
ZW8oKSBjb25zdAoreworICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIGZhbHNlOwor
fQorCitib29sIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6aGFzQXVkaW8oKSBjb25zdAorewor
ICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIGZhbHNlOworfQorCit2b2lkIE1lZGlh
UGxheWVyUHJpdmF0ZVJlbW90ZTo6c2V0VmlzaWJsZShib29sKQoreworICAgIG5vdEltcGxlbWVu
dGVkKCk7Cit9CisKK01lZGlhVGltZSBNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6Ok1lZGlhUGxh
eWVyUHJpdmF0ZVJlbW90ZTo6ZHVyYXRpb25NZWRpYVRpbWUoKSBjb25zdAoreworICAgIG5vdElt
cGxlbWVudGVkKCk7CisgICAgcmV0dXJuIE1lZGlhVGltZTo6emVyb1RpbWUoKTsKK30KKworTWVk
aWFUaW1lIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6Y3VycmVudE1lZGlhVGltZSgpIGNvbnN0
Cit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gTWVkaWFUaW1lOjp6ZXJvVGlt
ZSgpOworfQorCitNZWRpYVRpbWUgTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpnZXRTdGFydERh
dGUoKSBjb25zdAoreworICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIE1lZGlhVGlt
ZTo6emVyb1RpbWUoKTsKK30KKwordm9pZCBNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OnNlZWso
Y29uc3QgTWVkaWFUaW1lJikKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCit2b2lkIE1l
ZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6c2Vla1dpdGhUb2xlcmFuY2UoY29uc3QgTWVkaWFUaW1l
JiwgY29uc3QgTWVkaWFUaW1lJiwgY29uc3QgTWVkaWFUaW1lJikKK3sKKyAgICBub3RJbXBsZW1l
bnRlZCgpOworfQorCitib29sIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6c2Vla2luZygpIGNv
bnN0Cit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK01l
ZGlhVGltZSBNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OnN0YXJ0VGltZSgpIGNvbnN0Cit7Cisg
ICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gTWVkaWFUaW1lOjp6ZXJvVGltZSgpOwor
fQorCit2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6c2V0UmF0ZURvdWJsZShkb3VibGUp
Cit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKworZG91YmxlIE1lZGlhUGxheWVyUHJpdmF0
ZVJlbW90ZTo6cmF0ZSgpIGNvbnN0Cit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1
cm4gMDsKK30KKwordm9pZCBNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OnNldFByZXNlcnZlc1Bp
dGNoKGJvb2wpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKworYm9vbCBNZWRpYVBsYXll
clByaXZhdGVSZW1vdGU6OnBhdXNlZCgpIGNvbnN0Cit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsK
KyAgICByZXR1cm4gZmFsc2U7Cit9CisKK3ZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpz
ZXRWb2x1bWVEb3VibGUoZG91YmxlKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKK3Zv
aWQgTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpzZXRNdXRlZChib29sKQoreworICAgIG5vdElt
cGxlbWVudGVkKCk7Cit9CisKK2Jvb2wgTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpoYXNDbG9z
ZWRDYXB0aW9ucygpIGNvbnN0Cit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4g
ZmFsc2U7Cit9CisKK3ZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpzZXRDbG9zZWRDYXB0
aW9uc1Zpc2libGUoYm9vbCkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCitkb3VibGUg
TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjptYXhGYXN0Rm9yd2FyZFJhdGUoKSBjb25zdAorewor
ICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIDA7Cit9CisKK2RvdWJsZSBNZWRpYVBs
YXllclByaXZhdGVSZW1vdGU6Om1pbkZhc3RSZXZlcnNlUmF0ZSgpIGNvbnN0Cit7CisgICAgbm90
SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gMDsKK30KKworTWVkaWFQbGF5ZXI6Ok5ldHdvcmtT
dGF0ZSBNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6Om5ldHdvcmtTdGF0ZSgpIGNvbnN0Cit7Cisg
ICAgaWYgKG1faW52YWxpZCkKKyAgICAgICAgcmV0dXJuIE1lZGlhUGxheWVyOjpOZXR3b3JrU3Rh
dGU6OkZvcm1hdEVycm9yOworCisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gTWVk
aWFQbGF5ZXI6Ok5ldHdvcmtTdGF0ZTo6RW1wdHk7Cit9CisKK01lZGlhUGxheWVyOjpSZWFkeVN0
YXRlIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6cmVhZHlTdGF0ZSgpIGNvbnN0Cit7CisgICAg
aWYgKG1faW52YWxpZCkKKyAgICAgICAgcmV0dXJuIE1lZGlhUGxheWVyOjpSZWFkeVN0YXRlOjpI
YXZlTm90aGluZzsKKworICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIE1lZGlhUGxh
eWVyOjpSZWFkeVN0YXRlOjpIYXZlTm90aGluZzsKK30KKworc3RkOjp1bmlxdWVfcHRyPFBsYXRm
b3JtVGltZVJhbmdlcz4gTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpzZWVrYWJsZSgpIGNvbnN0
Cit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxQbGF0Zm9y
bVRpbWVSYW5nZXM+KCk7Cit9CisKK3N0ZDo6dW5pcXVlX3B0cjxQbGF0Zm9ybVRpbWVSYW5nZXM+
IE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6YnVmZmVyZWQoKSBjb25zdAoreworICAgIG5vdElt
cGxlbWVudGVkKCk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8UGxhdGZvcm1UaW1lUmFuZ2VzPigp
OworfQorCitNZWRpYVRpbWUgTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjptYXhNZWRpYVRpbWVT
ZWVrYWJsZSgpIGNvbnN0Cit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gTWVk
aWFUaW1lOjp6ZXJvVGltZSgpOworfQorCitNZWRpYVRpbWUgTWVkaWFQbGF5ZXJQcml2YXRlUmVt
b3RlOjptaW5NZWRpYVRpbWVTZWVrYWJsZSgpIGNvbnN0Cit7CisgICAgbm90SW1wbGVtZW50ZWQo
KTsKKyAgICByZXR1cm4gTWVkaWFUaW1lOjp6ZXJvVGltZSgpOworfQorCitkb3VibGUgTWVkaWFQ
bGF5ZXJQcml2YXRlUmVtb3RlOjpzZWVrYWJsZVRpbWVSYW5nZXNMYXN0TW9kaWZpZWRUaW1lKCkg
Y29uc3QKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiAwOworfQorCitkb3Vi
bGUgTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpsaXZlVXBkYXRlSW50ZXJ2YWwoKSBjb25zdAor
eworICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIDA7Cit9CisKK3Vuc2lnbmVkIGxv
bmcgbG9uZyBNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OnRvdGFsQnl0ZXMoKSBjb25zdAorewor
ICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIDA7Cit9CisKK2Jvb2wgTWVkaWFQbGF5
ZXJQcml2YXRlUmVtb3RlOjpkaWRMb2FkaW5nUHJvZ3Jlc3MoKSBjb25zdAoreworICAgIG5vdElt
cGxlbWVudGVkKCk7CisgICAgcmV0dXJuIGZhbHNlOworfQorCit2b2lkIE1lZGlhUGxheWVyUHJp
dmF0ZVJlbW90ZTo6c2V0U2l6ZShjb25zdCBJbnRTaXplJikKK3sKKyAgICBub3RJbXBsZW1lbnRl
ZCgpOworfQorCit2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6cGFpbnQoR3JhcGhpY3ND
b250ZXh0JiwgY29uc3QgRmxvYXRSZWN0JikKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQor
Cit2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6cGFpbnRDdXJyZW50RnJhbWVJbkNvbnRl
eHQoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRSZWN0JikKK3sKKyAgICBub3RJbXBsZW1l
bnRlZCgpOworfQorCitib29sIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6Y29weVZpZGVvVGV4
dHVyZVRvUGxhdGZvcm1UZXh0dXJlKEdyYXBoaWNzQ29udGV4dDNEKiwgUGxhdGZvcm0zRE9iamVj
dCwgR0MzRGVudW0sIEdDM0RpbnQsIEdDM0RlbnVtLCBHQzNEZW51bSwgR0MzRGVudW0sIGJvb2ws
IGJvb2wpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gZmFsc2U7Cit9CisK
K05hdGl2ZUltYWdlUHRyIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6bmF0aXZlSW1hZ2VGb3JD
dXJyZW50VGltZSgpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gbnVsbHB0
cjsKK30KKwordm9pZCBNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OnNldFByZWxvYWQoTWVkaWFQ
bGF5ZXI6OlByZWxvYWQpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKworYm9vbCBNZWRp
YVBsYXllclByaXZhdGVSZW1vdGU6Omhhc0F2YWlsYWJsZVZpZGVvRnJhbWUoKSBjb25zdAorewor
ICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIGZhbHNlOworfQorCitib29sIE1lZGlh
UGxheWVyUHJpdmF0ZVJlbW90ZTo6Y2FuTG9hZFBvc3RlcigpIGNvbnN0Cit7CisgICAgbm90SW1w
bGVtZW50ZWQoKTsKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK3ZvaWQgTWVkaWFQbGF5ZXJQcml2
YXRlUmVtb3RlOjpzZXRQb3N0ZXIoY29uc3QgU3RyaW5nJikKK3sKKyAgICBub3RJbXBsZW1lbnRl
ZCgpOworfQorCisjaWYgVVNFKE5BVElWRV9GVUxMU0NSRUVOX1ZJREVPKQordm9pZCBNZWRpYVBs
YXllclByaXZhdGVSZW1vdGU6OmVudGVyRnVsbHNjcmVlbigpCit7CisgICAgbm90SW1wbGVtZW50
ZWQoKTsKK30KKwordm9pZCBNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OmV4aXRGdWxsc2NyZWVu
KCkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorI2VuZGlmCisKKyNpZiBFTkFCTEUoV0lS
RUxFU1NfUExBWUJBQ0tfVEFSR0VUKQorU3RyaW5nIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6
d2lyZWxlc3NQbGF5YmFja1RhcmdldE5hbWUoKSBjb25zdAoreworICAgIG5vdEltcGxlbWVudGVk
KCk7CisgICAgcmV0dXJuIGVtcHR5U3RyaW5nKCk7Cit9CisKK01lZGlhUGxheWVyOjpXaXJlbGVz
c1BsYXliYWNrVGFyZ2V0VHlwZSBNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OndpcmVsZXNzUGxh
eWJhY2tUYXJnZXRUeXBlKCkgY29uc3QKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJl
dHVybiBNZWRpYVBsYXllcjo6VGFyZ2V0VHlwZU5vbmU7Cit9CisKK2Jvb2wgTWVkaWFQbGF5ZXJQ
cml2YXRlUmVtb3RlOjp3aXJlbGVzc1ZpZGVvUGxheWJhY2tEaXNhYmxlZCgpIGNvbnN0Cit7Cisg
ICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwordm9pZCBNZWRpYVBs
YXllclByaXZhdGVSZW1vdGU6OnNldFdpcmVsZXNzVmlkZW9QbGF5YmFja0Rpc2FibGVkKGJvb2wp
Cit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKworYm9vbCBNZWRpYVBsYXllclByaXZhdGVS
ZW1vdGU6OmNhblBsYXlUb1dpcmVsZXNzUGxheWJhY2tUYXJnZXQoKSBjb25zdAoreworICAgIG5v
dEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIGZhbHNlOworfQorCitib29sIE1lZGlhUGxheWVy
UHJpdmF0ZVJlbW90ZTo6aXNDdXJyZW50UGxheWJhY2tUYXJnZXRXaXJlbGVzcygpIGNvbnN0Cit7
CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK3ZvaWQgTWVk
aWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpzZXRXaXJlbGVzc1BsYXliYWNrVGFyZ2V0KFJlZjxNZWRp
YVBsYXliYWNrVGFyZ2V0PiYmKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKK3ZvaWQg
TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpzZXRTaG91bGRQbGF5VG9QbGF5YmFja1RhcmdldChi
b29sKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisjZW5kaWYKKworI2lmIFVTRShOQVRJ
VkVfRlVMTFNDUkVFTl9WSURFTykKK2Jvb2wgTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpjYW5F
bnRlckZ1bGxzY3JlZW4oKSBjb25zdAoreworICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0
dXJuIGZhbHNlOworfQorI2VuZGlmCisKK2Jvb2wgTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpz
dXBwb3J0c0FjY2VsZXJhdGVkUmVuZGVyaW5nKCkgY29uc3QKK3sKKyAgICBub3RJbXBsZW1lbnRl
ZCgpOworICAgIHJldHVybiBmYWxzZTsKK30KKwordm9pZCBNZWRpYVBsYXllclByaXZhdGVSZW1v
dGU6OmFjY2VsZXJhdGVkUmVuZGVyaW5nU3RhdGVDaGFuZ2VkKCkKK3sKKyAgICBub3RJbXBsZW1l
bnRlZCgpOworfQorCitib29sIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6c2hvdWxkTWFpbnRh
aW5Bc3BlY3RSYXRpbygpIGNvbnN0Cit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1
cm4gdHJ1ZTsKK30KKwordm9pZCBNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OnNldFNob3VsZE1h
aW50YWluQXNwZWN0UmF0aW8oYm9vbCkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCiti
b29sIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6aGFzU2luZ2xlU2VjdXJpdHlPcmlnaW4oKSBj
b25zdAoreworICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIGZhbHNlOworfQorCiti
b29sIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6ZGlkUGFzc0NPUlNBY2Nlc3NDaGVjaygpIGNv
bnN0Cit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK09w
dGlvbmFsPGJvb2w+IE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6d291bGRUYWludE9yaWdpbihj
b25zdCBTZWN1cml0eU9yaWdpbiYpIGNvbnN0Cit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAg
ICByZXR1cm4gV1RGOjpudWxsb3B0OworfQorCitNZWRpYVBsYXllcjo6TW92aWVMb2FkVHlwZSBN
ZWRpYVBsYXllclByaXZhdGVSZW1vdGU6Om1vdmllTG9hZFR5cGUoKSBjb25zdAoreworICAgIG5v
dEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIE1lZGlhUGxheWVyOjpNb3ZpZUxvYWRUeXBlOjpV
bmtub3duOworfQorCit2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6cHJlcGFyZUZvclJl
bmRlcmluZygpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKworTWVkaWFUaW1lIE1lZGlh
UGxheWVyUHJpdmF0ZVJlbW90ZTo6bWVkaWFUaW1lRm9yVGltZVZhbHVlKGNvbnN0IE1lZGlhVGlt
ZSYgdGltZVZhbHVlKSBjb25zdAoreworICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJu
IHRpbWVWYWx1ZTsKK30KKworZG91YmxlIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6bWF4aW11
bUR1cmF0aW9uVG9DYWNoZU1lZGlhVGltZSgpIGNvbnN0Cit7CisgICAgbm90SW1wbGVtZW50ZWQo
KTsKKyAgICByZXR1cm4gMDsKK30KKwordW5zaWduZWQgTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3Rl
OjpkZWNvZGVkRnJhbWVDb3VudCgpIGNvbnN0Cit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAg
ICByZXR1cm4gMDsKK30KKwordW5zaWduZWQgTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpkcm9w
cGVkRnJhbWVDb3VudCgpIGNvbnN0Cit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1
cm4gMDsKK30KKwordW5zaWduZWQgTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjphdWRpb0RlY29k
ZWRCeXRlQ291bnQoKSBjb25zdAoreworICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJu
IDA7Cit9CisKK3Vuc2lnbmVkIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6dmlkZW9EZWNvZGVk
Qnl0ZUNvdW50KCkgY29uc3QKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiAw
OworfQorCit2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6c2V0UHJpdmF0ZUJyb3dzaW5n
TW9kZShib29sKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKK1N0cmluZyBNZWRpYVBs
YXllclByaXZhdGVSZW1vdGU6OmVuZ2luZURlc2NyaXB0aW9uKCkgY29uc3QKK3sKKyAgICBub3RJ
bXBsZW1lbnRlZCgpOworICAgIHJldHVybiBlbXB0eVN0cmluZygpOworfQorCisjaWYgRU5BQkxF
KFdFQl9BVURJTykKK0F1ZGlvU291cmNlUHJvdmlkZXIqIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90
ZTo6YXVkaW9Tb3VyY2VQcm92aWRlcigpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICBy
ZXR1cm4gbnVsbHB0cjsKK30KKyNlbmRpZgorCisjaWYgRU5BQkxFKExFR0FDWV9FTkNSWVBURURf
TUVESUEpCitzdGQ6OnVuaXF1ZV9wdHI8TGVnYWN5Q0RNU2Vzc2lvbj4gTWVkaWFQbGF5ZXJQcml2
YXRlUmVtb3RlOjpjcmVhdGVTZXNzaW9uKGNvbnN0IFN0cmluZyYsIExlZ2FjeUNETVNlc3Npb25D
bGllbnQqKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIG51bGxwdHI7Cit9
CisKK3ZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpzZXRDRE1TZXNzaW9uKExlZ2FjeUNE
TVNlc3Npb24qKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKK3ZvaWQgTWVkaWFQbGF5
ZXJQcml2YXRlUmVtb3RlOjprZXlBZGRlZCgpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30K
KyNlbmRpZgorCisjaWYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkKK3ZvaWQgTWVkaWFQbGF5ZXJQ
cml2YXRlUmVtb3RlOjpjZG1JbnN0YW5jZUF0dGFjaGVkKENETUluc3RhbmNlJikKK3sKKyAgICBu
b3RJbXBsZW1lbnRlZCgpOworfQorCit2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6Y2Rt
SW5zdGFuY2VEZXRhY2hlZChDRE1JbnN0YW5jZSYpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsK
K30KKwordm9pZCBNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OmF0dGVtcHRUb0RlY3J5cHRXaXRo
SW5zdGFuY2UoQ0RNSW5zdGFuY2UmKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKK2Jv
b2wgTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjp3YWl0aW5nRm9yS2V5KCkgY29uc3QKK3sKKyAg
ICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiBmYWxzZTsKK30KKyNlbmRpZgorCisjaWYg
RU5BQkxFKFZJREVPX1RSQUNLKQorYm9vbCBNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OnJlcXVp
cmVzVGV4dFRyYWNrUmVwcmVzZW50YXRpb24oKSBjb25zdAoreworICAgIG5vdEltcGxlbWVudGVk
KCk7CisgICAgcmV0dXJuIGZhbHNlOworfQorCit2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90
ZTo6c2V0VGV4dFRyYWNrUmVwcmVzZW50YXRpb24oVGV4dFRyYWNrUmVwcmVzZW50YXRpb24qKQor
eworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKK3ZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlUmVt
b3RlOjpzeW5jVGV4dFRyYWNrQm91bmRzKCkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQor
Cit2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6dHJhY2tzQ2hhbmdlZCgpCit7CisgICAg
bm90SW1wbGVtZW50ZWQoKTsKK30KKyNlbmRpZgorCisjaWYgVVNFKEdTVFJFQU1FUikKK3ZvaWQg
TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpzaW11bGF0ZUF1ZGlvSW50ZXJydXB0aW9uKCkKK3sK
KyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorI2VuZGlmCisKK3ZvaWQgTWVkaWFQbGF5ZXJQcml2
YXRlUmVtb3RlOjpiZWdpblNpbXVsYXRlZEhEQ1BFcnJvcigpCit7CisgICAgbm90SW1wbGVtZW50
ZWQoKTsKK30KKwordm9pZCBNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OmVuZFNpbXVsYXRlZEhE
Q1BFcnJvcigpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKworU3RyaW5nIE1lZGlhUGxh
eWVyUHJpdmF0ZVJlbW90ZTo6bGFuZ3VhZ2VPZlByaW1hcnlBdWRpb1RyYWNrKCkgY29uc3QKK3sK
KyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiBlbXB0eVN0cmluZygpOworfQorCitz
aXplX3QgTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpleHRyYU1lbW9yeUNvc3QoKSBjb25zdAor
eworICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIDA7Cit9CisKK3Vuc2lnbmVkIGxv
bmcgbG9uZyBNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OmZpbGVTaXplKCkgY29uc3QKK3sKKyAg
ICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiAwOworfQorCitib29sIE1lZGlhUGxheWVy
UHJpdmF0ZVJlbW90ZTo6ZW5kZWQoKSBjb25zdAoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cisg
ICAgcmV0dXJuIGZhbHNlOworfQorCitPcHRpb25hbDxWaWRlb1BsYXliYWNrUXVhbGl0eU1ldHJp
Y3M+IE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6dmlkZW9QbGF5YmFja1F1YWxpdHlNZXRyaWNz
KCkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Cit9
CisKKyNpZiBFTkFCTEUoQVZGX0NBUFRJT05TKQordm9pZCBNZWRpYVBsYXllclByaXZhdGVSZW1v
dGU6Om5vdGlmeVRyYWNrTW9kZUNoYW5nZWQoKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9
CisjZW5kaWYKKwordm9pZCBNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6Om5vdGlmeUFjdGl2ZVNv
dXJjZUJ1ZmZlcnNDaGFuZ2VkKCkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCit2b2lk
IE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6c2V0U2hvdWxkRGlzYWJsZVNsZWVwKGJvb2wpCit7
CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwordm9pZCBNZWRpYVBsYXllclByaXZhdGVSZW1v
dGU6OmFwcGxpY2F0aW9uV2lsbFJlc2lnbkFjdGl2ZSgpCit7CisgICAgbm90SW1wbGVtZW50ZWQo
KTsKK30KKwordm9pZCBNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OmFwcGxpY2F0aW9uRGlkQmVj
b21lQWN0aXZlKCkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCitib29sIE1lZGlhUGxh
eWVyUHJpdmF0ZVJlbW90ZTo6cGVyZm9ybVRhc2tBdE1lZGlhVGltZShXVEY6OkZ1bmN0aW9uPHZv
aWQoKT4mJiwgTWVkaWFUaW1lKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJu
IGZhbHNlOworfQorCitib29sIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6c2hvdWxkSWdub3Jl
SW50cmluc2ljU2l6ZSgpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gZmFs
c2U7Cit9CisKKyNpZiAhUkVMRUFTRV9MT0dfRElTQUJMRUQKK1dURkxvZ0NoYW5uZWwmIE1lZGlh
UGxheWVyUHJpdmF0ZVJlbW90ZTo6bG9nQ2hhbm5lbCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIFdl
YktpdDJMb2dXZWJSVEM7Cit9CisjZW5kaWYKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisj
ZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvTWVk
aWFQbGF5ZXJQcml2YXRlUmVtb3RlLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21l
ZGlhL01lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmY1ZTFhNjU1NmU2NmMx
OWVmZWFmNTIzYzgwMGM4Y2Y1NmEzZWE5M2QKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL01lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZS5oCkBAIC0w
LDAgKzEsMjk5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICog
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICov
CisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKQorCisjaW5jbHVkZSAi
UmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyLmgiCisjaW5jbHVkZSA8V2ViQ29yZS9NZWRpYVBsYXll
clByaXZhdGUuaD4KKyNpbmNsdWRlIDx3dGYvTG9nZ2VySGVscGVyLmg+CisjaW5jbHVkZSA8d3Rm
L01lZGlhVGltZS5oPgorI2luY2x1ZGUgPHd0Zi9XZWFrUHRyLmg+CisKK25hbWVzcGFjZSBXZWJL
aXQgeworCitjbGFzcyBNZWRpYVBsYXllclByaXZhdGVSZW1vdGUgZmluYWwKKyAgICA6IHB1Ymxp
YyBDYW5NYWtlV2Vha1B0cjxNZWRpYVBsYXllclByaXZhdGVSZW1vdGU+CisgICAgLCBwdWJsaWMg
TWVkaWFQbGF5ZXJQcml2YXRlSW50ZXJmYWNlCisjaWYgIVJFTEVBU0VfTE9HX0RJU0FCTEVECisg
ICAgLCBwcml2YXRlIExvZ2dlckhlbHBlcgorI2VuZGlmCit7CitwdWJsaWM6CisgICAgc3RhdGlj
IHN0ZDo6dW5pcXVlX3B0cjxNZWRpYVBsYXllclByaXZhdGVSZW1vdGU+IGNyZWF0ZShNZWRpYVBs
YXllciogcGxheWVyLCBNZWRpYVBsYXllckVudW1zOjpNZWRpYUVuZ2luZUlkZW50aWZpZXIgcmVt
b3RlRW5naW5lSWRlbnRpZmllciwgTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlSWRlbnRpZmllciBp
ZGVudGlmaWVyLCBSZW1vdGVNZWRpYVBsYXllck1hbmFnZXImIG1hbmFnZXIpCisgICAgeworICAg
ICAgICByZXR1cm4gbWFrZVVuaXF1ZTxNZWRpYVBsYXllclByaXZhdGVSZW1vdGU+KHBsYXllciwg
cmVtb3RlRW5naW5lSWRlbnRpZmllciwgaWRlbnRpZmllciwgbWFuYWdlcik7CisgICAgfQorCisg
ICAgZXhwbGljaXQgTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlKE1lZGlhUGxheWVyKiwgTWVkaWFQ
bGF5ZXJFbnVtczo6TWVkaWFFbmdpbmVJZGVudGlmaWVyLCBNZWRpYVBsYXllclByaXZhdGVSZW1v
dGVJZGVudGlmaWVyLCBSZW1vdGVNZWRpYVBsYXllck1hbmFnZXImKTsKKyAgICB2aXJ0dWFsIH5N
ZWRpYVBsYXllclByaXZhdGVSZW1vdGUoKTsKKworICAgIHZvaWQgaW52YWxpZGF0ZSgpIHsgbV9p
bnZhbGlkID0gdHJ1ZTsgfQorICAgIE1lZGlhUGxheWVyRW51bXM6Ok1lZGlhRW5naW5lSWRlbnRp
ZmllciByZW1vdGVFbmdpbmVJZGVudGlmaWVyKCkgY29uc3QgeyByZXR1cm4gbV9yZW1vdGVFbmdp
bmVJZGVudGlmaWVyOyB9CisgICAgTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlSWRlbnRpZmllciBw
bGF5ZXJJdGVudGlmaWVyKCkgY29uc3QgeyByZXR1cm4gbV9pZGVudGlmaWVyOyB9CisKKyNpZiAh
UkVMRUFTRV9MT0dfRElTQUJMRUQKKyAgICBjb25zdCBMb2dnZXImIGxvZ2dlcigpIGNvbnN0IGZp
bmFsIHsgcmV0dXJuIG1fbG9nZ2VyLmdldCgpOyB9CisgICAgY29uc3QgY2hhciogbG9nQ2xhc3NO
YW1lKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gIk1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZSI7
IH0KKyAgICBjb25zdCB2b2lkKiBsb2dJZGVudGlmaWVyKCkgY29uc3QgZmluYWwgeyByZXR1cm4g
cmVpbnRlcnByZXRfY2FzdDxjb25zdCB2b2lkKj4obV9sb2dJZGVudGlmaWVyKTsgfQorICAgIFdU
RkxvZ0NoYW5uZWwmIGxvZ0NoYW5uZWwoKSBjb25zdCBmaW5hbDsKKyNlbmRpZgorCitwcml2YXRl
OgorCisgICAgdm9pZCBsb2FkKGNvbnN0IFN0cmluZyYpIGZpbmFsOworI2lmIEVOQUJMRShNRURJ
QV9TT1VSQ0UpCisgICAgdm9pZCBsb2FkKGNvbnN0IFN0cmluZyYsIE1lZGlhU291cmNlUHJpdmF0
ZUNsaWVudCopIGZpbmFsOworI2VuZGlmCisjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKKyAgICB2
b2lkIGxvYWQoTWVkaWFTdHJlYW1Qcml2YXRlJikgZmluYWw7CisjZW5kaWYKKyAgICB2b2lkIGNh
bmNlbExvYWQoKSBmaW5hbDsKKyAgICAKKyAgICB2b2lkIHByZXBhcmVUb1BsYXkoKSBmaW5hbDsK
KyAgICBQbGF0Zm9ybUxheWVyKiBwbGF0Zm9ybUxheWVyKCkgY29uc3QgZmluYWw7CisKKyNpZiBQ
TEFURk9STShJT1NfRkFNSUxZKSB8fCAoUExBVEZPUk0oTUFDKSAmJiBFTkFCTEUoVklERU9fUFJF
U0VOVEFUSU9OX01PREUpKQorICAgIHZvaWQgc2V0VmlkZW9GdWxsc2NyZWVuTGF5ZXIoUGxhdGZv
cm1MYXllciosIFdURjo6RnVuY3Rpb248dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKSBmaW5h
bDsKKyAgICB2b2lkIHVwZGF0ZVZpZGVvRnVsbHNjcmVlbklubGluZUltYWdlKCkgZmluYWw7Cisg
ICAgdm9pZCBzZXRWaWRlb0Z1bGxzY3JlZW5GcmFtZShGbG9hdFJlY3QpIGZpbmFsOworICAgIHZv
aWQgc2V0VmlkZW9GdWxsc2NyZWVuR3Jhdml0eShNZWRpYVBsYXllcjo6VmlkZW9HcmF2aXR5KSBm
aW5hbDsKKyAgICB2b2lkIHNldFZpZGVvRnVsbHNjcmVlbk1vZGUoTWVkaWFQbGF5ZXI6OlZpZGVv
RnVsbHNjcmVlbk1vZGUpIGZpbmFsOworICAgIHZvaWQgdmlkZW9GdWxsc2NyZWVuU3RhbmRieUNo
YW5nZWQoKSBmaW5hbDsKKyNlbmRpZgorCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKKyAgICBO
U0FycmF5ICp0aW1lZE1ldGFkYXRhKCkgY29uc3QgZmluYWw7CisgICAgU3RyaW5nIGFjY2Vzc0xv
ZygpIGNvbnN0IGZpbmFsOworICAgIFN0cmluZyBlcnJvckxvZygpIGNvbnN0IGZpbmFsOworI2Vu
ZGlmCisgICAgbG9uZyBwbGF0Zm9ybUVycm9yQ29kZSgpIGNvbnN0IGZpbmFsOworCisgICAgdm9p
ZCBwbGF5KCkgZmluYWw7CisgICAgdm9pZCBwYXVzZSgpIGZpbmFsOworICAgIHZvaWQgc2V0QnVm
ZmVyaW5nUG9saWN5KE1lZGlhUGxheWVyOjpCdWZmZXJpbmdQb2xpY3kpIGZpbmFsOworCisgICAg
Ym9vbCBzdXBwb3J0c1BpY3R1cmVJblBpY3R1cmUoKSBjb25zdCBmaW5hbDsKKyAgICBib29sIHN1
cHBvcnRzRnVsbHNjcmVlbigpIGNvbnN0IGZpbmFsOworICAgIGJvb2wgc3VwcG9ydHNTY2Fubmlu
ZygpIGNvbnN0IGZpbmFsOworICAgIGJvb2wgcmVxdWlyZXNJbW1lZGlhdGVDb21wb3NpdGluZygp
IGNvbnN0IGZpbmFsOworCisgICAgYm9vbCBjYW5TYXZlTWVkaWFEYXRhKCkgY29uc3QgZmluYWw7
CisKKyAgICBGbG9hdFNpemUgbmF0dXJhbFNpemUoKSBjb25zdCBmaW5hbDsKKworICAgIGJvb2wg
aGFzVmlkZW8oKSBjb25zdCBmaW5hbDsKKyAgICBib29sIGhhc0F1ZGlvKCkgY29uc3QgZmluYWw7
CisKKyAgICB2b2lkIHNldFZpc2libGUoYm9vbCkgZmluYWw7CisKKyAgICBNZWRpYVRpbWUgZHVy
YXRpb25NZWRpYVRpbWUoKSBjb25zdCBmaW5hbDsKKyAgICBNZWRpYVRpbWUgY3VycmVudE1lZGlh
VGltZSgpIGNvbnN0IGZpbmFsOworCisgICAgTWVkaWFUaW1lIGdldFN0YXJ0RGF0ZSgpIGNvbnN0
IGZpbmFsOworCisgICAgdm9pZCBzZWVrKGNvbnN0IE1lZGlhVGltZSYpIGZpbmFsOworICAgIHZv
aWQgc2Vla1dpdGhUb2xlcmFuY2UoY29uc3QgTWVkaWFUaW1lJiwgY29uc3QgTWVkaWFUaW1lJiwg
Y29uc3QgTWVkaWFUaW1lJikgZmluYWw7CisKKyAgICBib29sIHNlZWtpbmcoKSBjb25zdCBmaW5h
bDsKKworICAgIE1lZGlhVGltZSBzdGFydFRpbWUoKSBjb25zdCBmaW5hbDsKKworICAgIHZvaWQg
c2V0UmF0ZURvdWJsZShkb3VibGUpIGZpbmFsOworICAgIGRvdWJsZSByYXRlKCkgY29uc3QgZmlu
YWw7CisKKyAgICB2b2lkIHNldFByZXNlcnZlc1BpdGNoKGJvb2wpIGZpbmFsOworCisgICAgYm9v
bCBwYXVzZWQoKSBjb25zdCBmaW5hbDsKKworICAgIHZvaWQgc2V0Vm9sdW1lRG91YmxlKGRvdWJs
ZSkgZmluYWw7CisKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKSB8fCBVU0UoR1NUUkVBTUVSKQor
ICAgIGZsb2F0IHZvbHVtZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIDE7IH0KKyNlbmRpZgorCisg
ICAgdm9pZCBzZXRNdXRlZChib29sKSBmaW5hbDsKKworICAgIGJvb2wgaGFzQ2xvc2VkQ2FwdGlv
bnMoKSBjb25zdCBmaW5hbDsKKyAgICB2b2lkIHNldENsb3NlZENhcHRpb25zVmlzaWJsZShib29s
KSBmaW5hbDsKKworICAgIGRvdWJsZSBtYXhGYXN0Rm9yd2FyZFJhdGUoKSBjb25zdCBmaW5hbDsK
KyAgICBkb3VibGUgbWluRmFzdFJldmVyc2VSYXRlKCkgY29uc3QgZmluYWw7CisKKyAgICBNZWRp
YVBsYXllcjo6TmV0d29ya1N0YXRlIG5ldHdvcmtTdGF0ZSgpIGNvbnN0IGZpbmFsOworICAgIE1l
ZGlhUGxheWVyOjpSZWFkeVN0YXRlIHJlYWR5U3RhdGUoKSBjb25zdCBmaW5hbDsKKworICAgIHN0
ZDo6dW5pcXVlX3B0cjxQbGF0Zm9ybVRpbWVSYW5nZXM+IHNlZWthYmxlKCkgY29uc3QgZmluYWw7
CisKKyAgICBNZWRpYVRpbWUgbWF4TWVkaWFUaW1lU2Vla2FibGUoKSBjb25zdCBmaW5hbDsKKyAg
ICBNZWRpYVRpbWUgbWluTWVkaWFUaW1lU2Vla2FibGUoKSBjb25zdCBmaW5hbDsKKyAgICBzdGQ6
OnVuaXF1ZV9wdHI8UGxhdGZvcm1UaW1lUmFuZ2VzPiBidWZmZXJlZCgpIGNvbnN0IGZpbmFsOwor
ICAgIGRvdWJsZSBzZWVrYWJsZVRpbWVSYW5nZXNMYXN0TW9kaWZpZWRUaW1lKCkgY29uc3QgZmlu
YWw7CisgICAgZG91YmxlIGxpdmVVcGRhdGVJbnRlcnZhbCgpIGNvbnN0IGZpbmFsOworCisgICAg
dW5zaWduZWQgbG9uZyBsb25nIHRvdGFsQnl0ZXMoKSBjb25zdCBmaW5hbDsKKyAgICBib29sIGRp
ZExvYWRpbmdQcm9ncmVzcygpIGNvbnN0IGZpbmFsOworCisgICAgdm9pZCBzZXRTaXplKGNvbnN0
IEludFNpemUmKSBmaW5hbDsKKworICAgIHZvaWQgcGFpbnQoR3JhcGhpY3NDb250ZXh0JiwgY29u
c3QgRmxvYXRSZWN0JikgZmluYWw7CisKKyAgICB2b2lkIHBhaW50Q3VycmVudEZyYW1lSW5Db250
ZXh0KEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYpIGZpbmFsOworICAgIGJvb2wg
Y29weVZpZGVvVGV4dHVyZVRvUGxhdGZvcm1UZXh0dXJlKEdyYXBoaWNzQ29udGV4dDNEKiwgUGxh
dGZvcm0zRE9iamVjdCwgR0MzRGVudW0sIEdDM0RpbnQsIEdDM0RlbnVtLCBHQzNEZW51bSwgR0Mz
RGVudW0sIGJvb2wsIGJvb2wpIGZpbmFsOworICAgIE5hdGl2ZUltYWdlUHRyIG5hdGl2ZUltYWdl
Rm9yQ3VycmVudFRpbWUoKSBmaW5hbDsKKworICAgIHZvaWQgc2V0UHJlbG9hZChNZWRpYVBsYXll
cjo6UHJlbG9hZCkgZmluYWw7CisKKyAgICBib29sIGhhc0F2YWlsYWJsZVZpZGVvRnJhbWUoKSBj
b25zdCBmaW5hbDsKKworICAgIGJvb2wgY2FuTG9hZFBvc3RlcigpIGNvbnN0IGZpbmFsOworICAg
IHZvaWQgc2V0UG9zdGVyKGNvbnN0IFN0cmluZyYpIGZpbmFsOworCisjaWYgVVNFKE5BVElWRV9G
VUxMU0NSRUVOX1ZJREVPKQorICAgIHZvaWQgZW50ZXJGdWxsc2NyZWVuKCkgZmluYWw7CisgICAg
dm9pZCBleGl0RnVsbHNjcmVlbigpIGZpbmFsOworI2VuZGlmCisKKyNpZiBFTkFCTEUoV0lSRUxF
U1NfUExBWUJBQ0tfVEFSR0VUKQorICAgIFN0cmluZyB3aXJlbGVzc1BsYXliYWNrVGFyZ2V0TmFt
ZSgpIGNvbnN0IGZpbmFsOworICAgIE1lZGlhUGxheWVyOjpXaXJlbGVzc1BsYXliYWNrVGFyZ2V0
VHlwZSB3aXJlbGVzc1BsYXliYWNrVGFyZ2V0VHlwZSgpIGNvbnN0IGZpbmFsOworCisgICAgYm9v
bCB3aXJlbGVzc1ZpZGVvUGxheWJhY2tEaXNhYmxlZCgpIGNvbnN0IGZpbmFsOworICAgIHZvaWQg
c2V0V2lyZWxlc3NWaWRlb1BsYXliYWNrRGlzYWJsZWQoYm9vbCkgZmluYWw7CisKKyAgICBib29s
IGNhblBsYXlUb1dpcmVsZXNzUGxheWJhY2tUYXJnZXQoKSBjb25zdCBmaW5hbDsKKyAgICBib29s
IGlzQ3VycmVudFBsYXliYWNrVGFyZ2V0V2lyZWxlc3MoKSBjb25zdCBmaW5hbDsKKyAgICB2b2lk
IHNldFdpcmVsZXNzUGxheWJhY2tUYXJnZXQoUmVmPE1lZGlhUGxheWJhY2tUYXJnZXQ+JiYpIGZp
bmFsOworCisgICAgdm9pZCBzZXRTaG91bGRQbGF5VG9QbGF5YmFja1RhcmdldChib29sKSBmaW5h
bDsKKyNlbmRpZgorCisjaWYgVVNFKE5BVElWRV9GVUxMU0NSRUVOX1ZJREVPKQorICAgIGJvb2wg
Y2FuRW50ZXJGdWxsc2NyZWVuKCkgY29uc3QgZmluYWw7CisjZW5kaWYKKworICAgIGJvb2wgc3Vw
cG9ydHNBY2NlbGVyYXRlZFJlbmRlcmluZygpIGNvbnN0IGZpbmFsOworICAgIHZvaWQgYWNjZWxl
cmF0ZWRSZW5kZXJpbmdTdGF0ZUNoYW5nZWQoKSBmaW5hbDsKKworICAgIGJvb2wgc2hvdWxkTWFp
bnRhaW5Bc3BlY3RSYXRpbygpIGNvbnN0IGZpbmFsOworICAgIHZvaWQgc2V0U2hvdWxkTWFpbnRh
aW5Bc3BlY3RSYXRpbyhib29sKSBmaW5hbDsKKworICAgIGJvb2wgaGFzU2luZ2xlU2VjdXJpdHlP
cmlnaW4oKSBjb25zdCBmaW5hbDsKKyAgICBib29sIGRpZFBhc3NDT1JTQWNjZXNzQ2hlY2soKSBj
b25zdCBmaW5hbDsKKyAgICBPcHRpb25hbDxib29sPiB3b3VsZFRhaW50T3JpZ2luKGNvbnN0IFNl
Y3VyaXR5T3JpZ2luJikgY29uc3QgZmluYWw7CisKKyAgICBNZWRpYVBsYXllcjo6TW92aWVMb2Fk
VHlwZSBtb3ZpZUxvYWRUeXBlKCkgY29uc3QgZmluYWw7CisKKyAgICB2b2lkIHByZXBhcmVGb3JS
ZW5kZXJpbmcoKSBmaW5hbDsKKworICAgIE1lZGlhVGltZSBtZWRpYVRpbWVGb3JUaW1lVmFsdWUo
Y29uc3QgTWVkaWFUaW1lJiB0aW1lVmFsdWUpIGNvbnN0IGZpbmFsOworCisgICAgZG91YmxlIG1h
eGltdW1EdXJhdGlvblRvQ2FjaGVNZWRpYVRpbWUoKSBjb25zdCBmaW5hbDsKKworICAgIHVuc2ln
bmVkIGRlY29kZWRGcmFtZUNvdW50KCkgY29uc3QgZmluYWw7CisgICAgdW5zaWduZWQgZHJvcHBl
ZEZyYW1lQ291bnQoKSBjb25zdCBmaW5hbDsKKyAgICB1bnNpZ25lZCBhdWRpb0RlY29kZWRCeXRl
Q291bnQoKSBjb25zdCBmaW5hbDsKKyAgICB1bnNpZ25lZCB2aWRlb0RlY29kZWRCeXRlQ291bnQo
KSBjb25zdCBmaW5hbDsKKworICAgIHZvaWQgc2V0UHJpdmF0ZUJyb3dzaW5nTW9kZShib29sKSBm
aW5hbDsKKyAgICBTdHJpbmcgZW5naW5lRGVzY3JpcHRpb24oKSBjb25zdCBmaW5hbDsKKworI2lm
IEVOQUJMRShXRUJfQVVESU8pCisgICAgQXVkaW9Tb3VyY2VQcm92aWRlciogYXVkaW9Tb3VyY2VQ
cm92aWRlcigpIGZpbmFsOworI2VuZGlmCisKKyNpZiBFTkFCTEUoTEVHQUNZX0VOQ1JZUFRFRF9N
RURJQSkKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8TGVnYWN5Q0RNU2Vzc2lvbj4gY3JlYXRlU2Vzc2lv
bihjb25zdCBTdHJpbmcmLCBMZWdhY3lDRE1TZXNzaW9uQ2xpZW50KikgZmluYWw7CisgICAgdm9p
ZCBzZXRDRE1TZXNzaW9uKExlZ2FjeUNETVNlc3Npb24qKSBmaW5hbDsKKyAgICB2b2lkIGtleUFk
ZGVkKCkgZmluYWw7CisjZW5kaWYKKworI2lmIEVOQUJMRShFTkNSWVBURURfTUVESUEpCisgICAg
dm9pZCBjZG1JbnN0YW5jZUF0dGFjaGVkKENETUluc3RhbmNlJikgZmluYWw7CisgICAgdm9pZCBj
ZG1JbnN0YW5jZURldGFjaGVkKENETUluc3RhbmNlJikgZmluYWw7CisgICAgdm9pZCBhdHRlbXB0
VG9EZWNyeXB0V2l0aEluc3RhbmNlKENETUluc3RhbmNlJikgZmluYWw7CisgICAgYm9vbCB3YWl0
aW5nRm9yS2V5KCkgY29uc3QgZmluYWw7CisjZW5kaWYKKworI2lmIEVOQUJMRShWSURFT19UUkFD
SykKKyAgICBib29sIHJlcXVpcmVzVGV4dFRyYWNrUmVwcmVzZW50YXRpb24oKSBjb25zdCBmaW5h
bDsKKyAgICB2b2lkIHNldFRleHRUcmFja1JlcHJlc2VudGF0aW9uKFRleHRUcmFja1JlcHJlc2Vu
dGF0aW9uKikgZmluYWw7CisgICAgdm9pZCBzeW5jVGV4dFRyYWNrQm91bmRzKCkgZmluYWw7Cisg
ICAgdm9pZCB0cmFja3NDaGFuZ2VkKCkgZmluYWw7CisjZW5kaWYKKworI2lmIFVTRShHU1RSRUFN
RVIpCisgICAgdm9pZCBzaW11bGF0ZUF1ZGlvSW50ZXJydXB0aW9uKCkgZmluYWw7CisjZW5kaWYK
KworICAgIHZvaWQgYmVnaW5TaW11bGF0ZWRIRENQRXJyb3IoKSBmaW5hbDsKKyAgICB2b2lkIGVu
ZFNpbXVsYXRlZEhEQ1BFcnJvcigpIGZpbmFsOworCisgICAgU3RyaW5nIGxhbmd1YWdlT2ZQcmlt
YXJ5QXVkaW9UcmFjaygpIGNvbnN0IGZpbmFsOworCisgICAgc2l6ZV90IGV4dHJhTWVtb3J5Q29z
dCgpIGNvbnN0IGZpbmFsOworCisgICAgdW5zaWduZWQgbG9uZyBsb25nIGZpbGVTaXplKCkgY29u
c3QgZmluYWw7CisKKyAgICBib29sIGVuZGVkKCkgY29uc3QgZmluYWw7CisKKyAgICBPcHRpb25h
bDxWaWRlb1BsYXliYWNrUXVhbGl0eU1ldHJpY3M+IHZpZGVvUGxheWJhY2tRdWFsaXR5TWV0cmlj
cygpIGZpbmFsOworCisjaWYgRU5BQkxFKEFWRl9DQVBUSU9OUykKKyAgICB2b2lkIG5vdGlmeVRy
YWNrTW9kZUNoYW5nZWQoKSBmaW5hbDsKKyNlbmRpZgorCisgICAgdm9pZCBub3RpZnlBY3RpdmVT
b3VyY2VCdWZmZXJzQ2hhbmdlZCgpIGZpbmFsOworCisgICAgdm9pZCBzZXRTaG91bGREaXNhYmxl
U2xlZXAoYm9vbCkgZmluYWw7CisKKyAgICB2b2lkIGFwcGxpY2F0aW9uV2lsbFJlc2lnbkFjdGl2
ZSgpIGZpbmFsOworICAgIHZvaWQgYXBwbGljYXRpb25EaWRCZWNvbWVBY3RpdmUoKSBmaW5hbDsK
KworI2lmIFVTRShBVkZPVU5EQVRJT04pCisgICAgQVZQbGF5ZXIgKm9iakNBVkZvdW5kYXRpb25B
VlBsYXllcigpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG51bGxwdHI7IH0KKyNlbmRpZgorCisgICAg
Ym9vbCBwZXJmb3JtVGFza0F0TWVkaWFUaW1lKFdURjo6RnVuY3Rpb248dm9pZCgpPiYmLCBNZWRp
YVRpbWUpIGZpbmFsOworCisgICAgYm9vbCBzaG91bGRJZ25vcmVJbnRyaW5zaWNTaXplKCkgZmlu
YWw7CisKKyAgICBNZWRpYVBsYXllciogbV9wbGF5ZXIgeyBudWxscHRyIH07CisgICAgUmVtb3Rl
TWVkaWFQbGF5ZXJNYW5hZ2VyIG1fbWFuYWdlcjsKKyAgICBNZWRpYVBsYXllckVudW1zOjpNZWRp
YUVuZ2luZUlkZW50aWZpZXIgbV9yZW1vdGVFbmdpbmVJZGVudGlmaWVyOworICAgIE1lZGlhUGxh
eWVyUHJpdmF0ZVJlbW90ZUlkZW50aWZpZXIgbV9pZGVudGlmaWVyOworCisjaWYgIVJFTEVBU0Vf
TE9HX0RJU0FCTEVECisgICAgUmVmPGNvbnN0IExvZ2dlcj4gbV9sb2dnZXI7CisgICAgY29uc3Qg
dm9pZCogbV9sb2dJZGVudGlmaWVyOworI2VuZGlmCisKKyAgICBib29sIG1faW52YWxpZCB7IGZh
bHNlIH07Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL01lZGlhUGxheWVyUHJpdmF0ZVJl
bW90ZUlkZW50aWZpZXIuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvTWVk
aWFQbGF5ZXJQcml2YXRlUmVtb3RlSWRlbnRpZmllci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjg3ZTdiOGJiYWVj
MzUzNGU3ZGVmZDc4MjM4NjEwMTQzMjE3NTM4YzcKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL01lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZUlkZW50
aWZpZXIuaApAQCAtMCwwICsxLDM1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UgLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMn
JworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMK
KyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAq
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICog
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisj
aW5jbHVkZSA8d3RmL09iamVjdElkZW50aWZpZXIuaD4KKworbmFtZXNwYWNlIFdlYktpdCB7CisK
K2VudW0gTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlSWRlbnRpZmllclR5cGUgeyB9OwordXNpbmcg
TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlSWRlbnRpZmllciA9IE9iamVjdElkZW50aWZpZXI8TWVk
aWFQbGF5ZXJQcml2YXRlUmVtb3RlSWRlbnRpZmllclR5cGU+OworCit9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1Jl
bW90ZU1lZGlhUGxheWVyTWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BV
L21lZGlhL1JlbW90ZU1lZGlhUGxheWVyTWFuYWdlci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDg2YjU3OWNj
NzdmM2U1OWQzMmMwOTE0MTYyNDQ4NjQzYTc1NThiOAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyLmNw
cApAQCAtMCwwICsxLDIxMCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICog
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNp
bmNsdWRlICJSZW1vdGVNZWRpYVBsYXllck1hbmFnZXIuaCIKKworI2lmIEVOQUJMRShHUFVfUFJP
Q0VTUykKKworI2luY2x1ZGUgIlJlbW90ZU1lZGlhUGxheWVyTWFuYWdlck1lc3NhZ2VzLmgiCisj
aW5jbHVkZSAiUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHlNZXNzYWdlcy5oIgorI2luY2x1
ZGUgIldlYkNvcmVBcmd1bWVudENvZGVycy5oIgorI2luY2x1ZGUgIldlYlByb2Nlc3MuaCIKKyNp
bmNsdWRlICJXZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmgiCisjaW5jbHVkZSA8V2ViQ29y
ZS9NZWRpYVBsYXllci5oPgorI2luY2x1ZGUgPFdlYkNvcmUvTm90SW1wbGVtZW50ZWQuaD4KKyNp
bmNsdWRlIDxXZWJDb3JlL1NldHRpbmdzLmg+CisjaW5jbHVkZSA8d3RmL0Fzc2VydGlvbnMuaD4K
KworbmFtZXNwYWNlIFdlYktpdCB7Cit1c2luZyBuYW1lc3BhY2UgUEFMOwordXNpbmcgbmFtZXNw
YWNlIFdlYkNvcmU7CisKK2NsYXNzIE1lZGlhUGxheWVyUmVtb3RlRmFjdG9yeSA6IHB1YmxpYyBN
ZWRpYVBsYXllckZhY3RvcnkgeworcHVibGljOgorICAgIE1lZGlhUGxheWVyUmVtb3RlRmFjdG9y
eShNZWRpYVBsYXllckVudW1zOjpNZWRpYUVuZ2luZUlkZW50aWZpZXIgcmVtb3RlRW5naW5lSWRl
bnRpZmllciwgUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyJiBtYW5hZ2VyKQorICAgICAgICA6IG1f
cmVtb3RlRW5naW5lSWRlbnRpZmllcihyZW1vdGVFbmdpbmVJZGVudGlmaWVyKQorICAgICAgICAs
IG1fbWFuYWdlcihtYW5hZ2VyKQorICAgIHsKKyAgICB9CisKKyAgICBNZWRpYVBsYXllckVudW1z
OjpNZWRpYUVuZ2luZUlkZW50aWZpZXIgaWRlbnRpZmllcigpIGNvbnN0IGZpbmFsIHsgcmV0dXJu
IG1fcmVtb3RlRW5naW5lSWRlbnRpZmllcjsgfTsKKworICAgIHN0ZDo6dW5pcXVlX3B0cjxNZWRp
YVBsYXllclByaXZhdGVJbnRlcmZhY2U+IGNyZWF0ZU1lZGlhRW5naW5lUGxheWVyKE1lZGlhUGxh
eWVyKiBwbGF5ZXIpIGNvbnN0IGZpbmFsCisgICAgeworICAgICAgICByZXR1cm4gbV9tYW5hZ2Vy
LmNyZWF0ZVJlbW90ZU1lZGlhUGxheWVyKHBsYXllciwgbV9yZW1vdGVFbmdpbmVJZGVudGlmaWVy
KTsKKyAgICB9CisKKyAgICB2b2lkIGdldFN1cHBvcnRlZFR5cGVzKEhhc2hTZXQ8U3RyaW5nLCBB
U0NJSUNhc2VJbnNlbnNpdGl2ZUhhc2g+JiB0eXBlcykgY29uc3QgZmluYWwKKyAgICB7CisgICAg
ICAgIHJldHVybiBtX21hbmFnZXIuZ2V0U3VwcG9ydGVkVHlwZXMobV9yZW1vdGVFbmdpbmVJZGVu
dGlmaWVyLCB0eXBlcyk7CisgICAgfQorCisgICAgTWVkaWFQbGF5ZXI6OlN1cHBvcnRzVHlwZSBz
dXBwb3J0c1R5cGVBbmRDb2RlY3MoY29uc3QgTWVkaWFFbmdpbmVTdXBwb3J0UGFyYW1ldGVycyYg
cGFyYW1ldGVycykgY29uc3QgZmluYWwKKyAgICB7CisgICAgICAgIHJldHVybiBtX21hbmFnZXIu
c3VwcG9ydHNUeXBlQW5kQ29kZWNzKG1fcmVtb3RlRW5naW5lSWRlbnRpZmllciwgcGFyYW1ldGVy
cyk7CisgICAgfQorCisgICAgSGFzaFNldDxSZWZQdHI8U2VjdXJpdHlPcmlnaW4+PiBvcmlnaW5z
SW5NZWRpYUNhY2hlKGNvbnN0IFN0cmluZyYgcGF0aCkgY29uc3QgZmluYWwKKyAgICB7CisgICAg
ICAgIHJldHVybiBtX21hbmFnZXIub3JpZ2luc0luTWVkaWFDYWNoZShtX3JlbW90ZUVuZ2luZUlk
ZW50aWZpZXIsIHBhdGgpOworICAgIH0KKworICAgIHZvaWQgY2xlYXJNZWRpYUNhY2hlKGNvbnN0
IFN0cmluZyYgcGF0aCwgV2FsbFRpbWUgbW9kaWZpZWRTaW5jZSkgY29uc3QgZmluYWwKKyAgICB7
CisgICAgICAgIHJldHVybiBtX21hbmFnZXIuY2xlYXJNZWRpYUNhY2hlKG1fcmVtb3RlRW5naW5l
SWRlbnRpZmllciwgcGF0aCwgbW9kaWZpZWRTaW5jZSk7CisgICAgfQorCisgICAgdm9pZCBjbGVh
ck1lZGlhQ2FjaGVGb3JPcmlnaW5zKGNvbnN0IFN0cmluZyYgcGF0aCwgY29uc3QgSGFzaFNldDxS
ZWZQdHI8U2VjdXJpdHlPcmlnaW4+PiYgb3JpZ2lucykgY29uc3QgZmluYWwKKyAgICB7CisgICAg
ICAgIHJldHVybiBtX21hbmFnZXIuY2xlYXJNZWRpYUNhY2hlRm9yT3JpZ2lucyhtX3JlbW90ZUVu
Z2luZUlkZW50aWZpZXIsIHBhdGgsIG9yaWdpbnMpOworICAgIH0KKworICAgIGJvb2wgc3VwcG9y
dHNLZXlTeXN0ZW0oY29uc3QgU3RyaW5nJiBrZXlTeXN0ZW0sIGNvbnN0IFN0cmluZyYgbWltZVR5
cGUpIGNvbnN0IGZpbmFsCisgICAgeworICAgICAgICByZXR1cm4gbV9tYW5hZ2VyLnN1cHBvcnRz
S2V5U3lzdGVtKG1fcmVtb3RlRW5naW5lSWRlbnRpZmllciwga2V5U3lzdGVtLCBtaW1lVHlwZSk7
CisgICAgfQorCitwcml2YXRlOgorICAgIE1lZGlhUGxheWVyRW51bXM6Ok1lZGlhRW5naW5lSWRl
bnRpZmllciBtX3JlbW90ZUVuZ2luZUlkZW50aWZpZXI7CisgICAgUmVtb3RlTWVkaWFQbGF5ZXJN
YW5hZ2VyJiBtX21hbmFnZXI7Cit9OworCitSZW1vdGVNZWRpYVBsYXllck1hbmFnZXI6OlJlbW90
ZU1lZGlhUGxheWVyTWFuYWdlcihXZWJQcm9jZXNzJiBwcm9jZXNzKQorICAgIDogbV9wcm9jZXNz
KHByb2Nlc3MpCit7CisgICAgbV9wcm9jZXNzLmFkZE1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6
UmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyOjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksICp0aGlzKTsK
K30KKworUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyOjp+UmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2Vy
KCkKK3sKKyAgICBtX3Byb2Nlc3MucmVtb3ZlTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpSZW1v
dGVNZWRpYVBsYXllck1hbmFnZXI6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSk7Cit9CisKK2NvbnN0
IGNoYXIqIFJlbW90ZU1lZGlhUGxheWVyTWFuYWdlcjo6c3VwcGxlbWVudE5hbWUoKQoreworICAg
IHJldHVybiAiUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyIjsKK30KKwordm9pZCBSZW1vdGVNZWRp
YVBsYXllck1hbmFnZXI6OmluaXRpYWxpemUoY29uc3QgV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1l
dGVycyYpCit7CisvLyBGSVhNRTogVXNlIHBhcmFtZXRlcnMubWVkaWFNSU1FVHlwZXMuCit9CisK
K3N0ZDo6dW5pcXVlX3B0cjxNZWRpYVBsYXllclByaXZhdGVJbnRlcmZhY2U+IFJlbW90ZU1lZGlh
UGxheWVyTWFuYWdlcjo6Y3JlYXRlUmVtb3RlTWVkaWFQbGF5ZXIoTWVkaWFQbGF5ZXIqIHBsYXll
ciwgTWVkaWFQbGF5ZXJFbnVtczo6TWVkaWFFbmdpbmVJZGVudGlmaWVyIHJlbW90ZUVuZ2luZUlk
ZW50aWZpZXIpCit7CisgICAgYXV0byBpZCA9IE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZUlkZW50
aWZpZXI6OmdlbmVyYXRlKCk7CisKKyAgICBib29sIGhhdmVSZW1vdGVQcm94eTsKKyAgICBib29s
IHNlbmRTdWNjZWVkZWQgPSBncHVQcm9jZXNzQ29ubmVjdGlvbigpLnNlbmRTeW5jKE1lc3NhZ2Vz
OjpSZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eTo6Q3JlYXRlTWVkaWFQbGF5ZXIoaWQsIHJl
bW90ZUVuZ2luZUlkZW50aWZpZXIpLCBNZXNzYWdlczo6UmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2Vy
UHJveHk6OkNyZWF0ZU1lZGlhUGxheWVyOjpSZXBseShoYXZlUmVtb3RlUHJveHkpLCAwKTsKKyAg
ICBpZiAoIWhhdmVSZW1vdGVQcm94eSB8fCAhc2VuZFN1Y2NlZWRlZCkgeworICAgICAgICBXVEZM
b2dBbHdheXMoIkZhaWxlZCB0byBjcmVhdGUgcmVtb3RlIG1lZGlhIHBsYXllci4iKTsKKyAgICAg
ICAgcmV0dXJuIG51bGxwdHI7CisgICAgfQorCisgICAgYXV0byByZW1vdGVQbGF5ZXIgPSBNZWRp
YVBsYXllclByaXZhdGVSZW1vdGU6OmNyZWF0ZShwbGF5ZXIsIHJlbW90ZUVuZ2luZUlkZW50aWZp
ZXIsIGlkLCAqdGhpcyk7CisgICAgbV9wbGF5ZXJzLmFkZChpZCwgbWFrZVdlYWtQdHIoKnJlbW90
ZVBsYXllcikpOworICAgIHJldHVybiByZW1vdGVQbGF5ZXI7Cit9CisKK3ZvaWQgUmVtb3RlTWVk
aWFQbGF5ZXJNYW5hZ2VyOjpnZXRTdXBwb3J0ZWRUeXBlcyhNZWRpYVBsYXllckVudW1zOjpNZWRp
YUVuZ2luZUlkZW50aWZpZXIgcmVtb3RlRW5naW5lSWRlbnRpZmllciwgSGFzaFNldDxTdHJpbmcs
IEFTQ0lJQ2FzZUluc2Vuc2l0aXZlSGFzaD4mIHJlc3VsdCkKK3sKKyAgICAvLyBGSVhNRTogc3Vw
cG9ydGVkIHR5cGVzIGRvbid0IGNoYW5nZSwgY2FjaGUgdGhlbS4KKyAgICBWZWN0b3I8U3RyaW5n
PiB0eXBlczsKKyAgICBpZiAoIWdwdVByb2Nlc3NDb25uZWN0aW9uKCkuc2VuZFN5bmMoTWVzc2Fn
ZXM6OlJlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5OjpHZXRTdXBwb3J0ZWRUeXBlcyhyZW1v
dGVFbmdpbmVJZGVudGlmaWVyKSwgTWVzc2FnZXM6OlJlbW90ZU1lZGlhUGxheWVyTWFuYWdlclBy
b3h5OjpHZXRTdXBwb3J0ZWRUeXBlczo6UmVwbHkodHlwZXMpLCAwKSkKKyAgICAgICAgcmV0dXJu
OworCisgICAgcmVzdWx0ID0gSGFzaFNldDxTdHJpbmcsIEFTQ0lJQ2FzZUluc2Vuc2l0aXZlSGFz
aD4oKTsKKyAgICBmb3IgKGF1dG8mIHR5cGUgOiB0eXBlcykKKyAgICAgICAgcmVzdWx0LmFkZCh0
eXBlKTsKK30KKworTWVkaWFQbGF5ZXI6OlN1cHBvcnRzVHlwZSBSZW1vdGVNZWRpYVBsYXllck1h
bmFnZXI6OnN1cHBvcnRzVHlwZUFuZENvZGVjcyhNZWRpYVBsYXllckVudW1zOjpNZWRpYUVuZ2lu
ZUlkZW50aWZpZXIgcmVtb3RlRW5naW5lSWRlbnRpZmllciwgY29uc3QgV2ViQ29yZTo6TWVkaWFF
bmdpbmVTdXBwb3J0UGFyYW1ldGVycyYgcGFyYW1ldGVycykKK3sKKyAgICAvLyBGSVhNRTogc3Vw
cG9ydGVkIHR5cGVzIGRvbid0IGNoYW5nZSwgY2FjaGUgdGhlbS4KKworICAgIC8vIEZJWE1FOiBj
b252ZXJ0IFdlYkNvcmU6Ok1lZGlhUGxheWVyOjpTdXBwb3J0c1R5cGUgdG8gZW51bSBjbGFzcyBz
byBpdCBjYW4gYmUgZW5jb2RlZCBhbmQgc2VudCB2aWEgSVBDCisgICAgTWVkaWFQbGF5ZXI6OlN1
cHBvcnRzVHlwZSByZXN1bHQ7CisgICAgaWYgKCFncHVQcm9jZXNzQ29ubmVjdGlvbigpLnNlbmRT
eW5jKE1lc3NhZ2VzOjpSZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eTo6U3VwcG9ydHNUeXBl
KHJlbW90ZUVuZ2luZUlkZW50aWZpZXIsIHBhcmFtZXRlcnMpLCBNZXNzYWdlczo6UmVtb3RlTWVk
aWFQbGF5ZXJNYW5hZ2VyUHJveHk6OlN1cHBvcnRzVHlwZTo6UmVwbHkocmVzdWx0KSwgMCkpCisg
ICAgICAgIHJldHVybiBNZWRpYVBsYXllcjo6U3VwcG9ydHNUeXBlOjpJc05vdFN1cHBvcnRlZDsK
KworICAgIHJldHVybiBzdGF0aWNfY2FzdDxXZWJDb3JlOjpNZWRpYVBsYXllcjo6U3VwcG9ydHNU
eXBlPihyZXN1bHQpOworfQorCisKK2Jvb2wgUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyOjpzdXBw
b3J0c0tleVN5c3RlbShNZWRpYVBsYXllckVudW1zOjpNZWRpYUVuZ2luZUlkZW50aWZpZXIsIGNv
bnN0IFN0cmluZyYga2V5U3lzdGVtLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlKQoreworICAgIHJl
dHVybiBmYWxzZTsKK30KKworCitIYXNoU2V0PFJlZlB0cjxXZWJDb3JlOjpTZWN1cml0eU9yaWdp
bj4+IFJlbW90ZU1lZGlhUGxheWVyTWFuYWdlcjo6b3JpZ2luc0luTWVkaWFDYWNoZShNZWRpYVBs
YXllckVudW1zOjpNZWRpYUVuZ2luZUlkZW50aWZpZXIgcmVtb3RlRW5naW5lSWRlbnRpZmllciwg
Y29uc3QgU3RyaW5nJiBwYXRoKQoreworICAgIFZlY3RvcjxXZWJDb3JlOjpTZWN1cml0eU9yaWdp
bkRhdGE+IG9yaWdpbkRhdGFzOworICAgIGlmICghZ3B1UHJvY2Vzc0Nvbm5lY3Rpb24oKS5zZW5k
U3luYyhNZXNzYWdlczo6UmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHk6Ok9yaWdpbnNJbk1l
ZGlhQ2FjaGUocmVtb3RlRW5naW5lSWRlbnRpZmllciwgcGF0aCksIE1lc3NhZ2VzOjpSZW1vdGVN
ZWRpYVBsYXllck1hbmFnZXJQcm94eTo6T3JpZ2luc0luTWVkaWFDYWNoZTo6UmVwbHkob3JpZ2lu
RGF0YXMpLCAwKSkKKyAgICAgICAgcmV0dXJuIHsgfTsKKworICAgIEhhc2hTZXQ8UmVmUHRyPFNl
Y3VyaXR5T3JpZ2luPj4gb3JpZ2luczsKKyAgICBmb3IgKGF1dG8mIG9yaWdpbkRhdGEgOiBvcmln
aW5EYXRhcykKKyAgICAgICAgb3JpZ2lucy5hZGQob3JpZ2luRGF0YS5zZWN1cml0eU9yaWdpbigp
KTsKKworICAgIHJldHVybiBvcmlnaW5zOworfQorCit2b2lkIFJlbW90ZU1lZGlhUGxheWVyTWFu
YWdlcjo6Y2xlYXJNZWRpYUNhY2hlKE1lZGlhUGxheWVyRW51bXM6Ok1lZGlhRW5naW5lSWRlbnRp
ZmllciByZW1vdGVFbmdpbmVJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIHBhdGgsIFdhbGxUaW1l
IG1vZGlmaWVkU2luY2UpCit7CisgICAgZ3B1UHJvY2Vzc0Nvbm5lY3Rpb24oKS5zZW5kKE1lc3Nh
Z2VzOjpSZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eTo6Q2xlYXJNZWRpYUNhY2hlKHJlbW90
ZUVuZ2luZUlkZW50aWZpZXIsIHBhdGgsIG1vZGlmaWVkU2luY2UpLCAwKTsKK30KKwordm9pZCBS
ZW1vdGVNZWRpYVBsYXllck1hbmFnZXI6OmNsZWFyTWVkaWFDYWNoZUZvck9yaWdpbnMoTWVkaWFQ
bGF5ZXJFbnVtczo6TWVkaWFFbmdpbmVJZGVudGlmaWVyIHJlbW90ZUVuZ2luZUlkZW50aWZpZXIs
IGNvbnN0IFN0cmluZyYgcGF0aCwgY29uc3QgSGFzaFNldDxSZWZQdHI8V2ViQ29yZTo6U2VjdXJp
dHlPcmlnaW4+PiYgb3JpZ2lucykKK3sKKyAgICBWZWN0b3I8V2ViQ29yZTo6U2VjdXJpdHlPcmln
aW5EYXRhPiBvcmlnaW5EYXRhOworICAgIGZvciAoYXV0byYgb3JpZ2luIDogb3JpZ2lucykKKyAg
ICAgICAgb3JpZ2luRGF0YS5hcHBlbmQob3JpZ2luLT5kYXRhKCkpOworCisgICAgZ3B1UHJvY2Vz
c0Nvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpSZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94
eTo6Q2xlYXJNZWRpYUNhY2hlRm9yT3JpZ2lucyhyZW1vdGVFbmdpbmVJZGVudGlmaWVyLCBwYXRo
LCBvcmlnaW5EYXRhKSwgMCk7Cit9CisKK3ZvaWQgUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyOjpu
ZXR3b3JrU3RhdGVDaGFuZ2VkKE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZUlkZW50aWZpZXIpCit7
Cit9CisKK3ZvaWQgUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyOjp1cGRhdGVQcmVmZXJlbmNlcyhj
b25zdCBTZXR0aW5ncyYgc2V0dGluZ3MpCit7CisgICAgYXV0byByZWdpc3RlckVuZ2luZSA9IFt0
aGlzXShNZWRpYUVuZ2luZVJlZ2lzdHJhciByZWdpc3RyYXIsIE1lZGlhUGxheWVyRW51bXM6Ok1l
ZGlhRW5naW5lSWRlbnRpZmllciByZW1vdGVFbmdpbmVJZGVudGlmaWVyKSB7CisgICAgICAgIHJl
Z2lzdHJhcihtYWtlVW5pcXVlPE1lZGlhUGxheWVyUmVtb3RlRmFjdG9yeT4ocmVtb3RlRW5naW5l
SWRlbnRpZmllciwgKnRoaXMpKTsKKyAgICB9OworCisgICAgUmVtb3RlTWVkaWFQbGF5ZXJTdXBw
b3J0OjpzZXRSZWdpc3RlclJlbW90ZVBsYXllckNhbGxiYWNrKHNldHRpbmdzLnVzZUdQVVByb2Nl
c3NGb3JNZWRpYSgpID8gcmVnaXN0ZXJFbmdpbmUgOiBzdGQ6OmZ1bmN0aW9uPHZvaWQoTWVkaWFF
bmdpbmVSZWdpc3RyYXIsIE1lZGlhUGxheWVyRW51bXM6Ok1lZGlhRW5naW5lSWRlbnRpZmllcik+
IHsgfSk7Cit9CisKK0lQQzo6Q29ubmVjdGlvbiYgUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyOjpn
cHVQcm9jZXNzQ29ubmVjdGlvbigpIGNvbnN0Cit7CisgICAgcmV0dXJuIFdlYlByb2Nlc3M6OnNp
bmdsZXRvbigpLmVuc3VyZUdQVVByb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigpOworfQor
Cit9CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9t
ZWRpYS9SZW1vdGVNZWRpYVBsYXllck1hbmFnZXIuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9HUFUvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyLmgKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYmU1YmZm
N2FhOTNlMjVmMzViNDhhYTQ2YWUxZjgyODEyMTNjZjJjMQotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2Vy
LmgKQEAgLTAsMCArMSw4NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICog
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5B
QkxFKEdQVV9QUk9DRVNTKQorCisjaW5jbHVkZSAiTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlSWRl
bnRpZmllci5oIgorI2luY2x1ZGUgIk1lc3NhZ2VSZWNlaXZlci5oIgorI2luY2x1ZGUgIlNoYXJl
ZE1lbW9yeS5oIgorI2luY2x1ZGUgIldlYlByb2Nlc3NTdXBwbGVtZW50LmgiCisjaW5jbHVkZSA8
V2ViQ29yZS9NZWRpYVBsYXllci5oPgorI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CisKK25hbWVz
cGFjZSBXZWJDb3JlIHsKK2NsYXNzIE1lZGlhUGxheWVyOworY2xhc3MgTWVkaWFQbGF5ZXJQcml2
YXRlSW50ZXJmYWNlOworY2xhc3MgU2V0dGluZ3M7Cit9CisKK25hbWVzcGFjZSBXZWJLaXQgewor
CitjbGFzcyBNZWRpYVBsYXllclByaXZhdGVSZW1vdGU7CitjbGFzcyBXZWJQcm9jZXNzOworCitj
bGFzcyBSZW1vdGVNZWRpYVBsYXllck1hbmFnZXIgOiBwdWJsaWMgV2ViUHJvY2Vzc1N1cHBsZW1l
bnQsIHB1YmxpYyBJUEM6Ok1lc3NhZ2VSZWNlaXZlciB7CisgICAgV1RGX01BS0VfRkFTVF9BTExP
Q0FURUQ7CitwdWJsaWM6CisgICAgZXhwbGljaXQgUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyKFdl
YlByb2Nlc3MmKTsKKyAgICB+UmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyKCk7CisKKyAgICBzdGF0
aWMgY29uc3QgY2hhciogc3VwcGxlbWVudE5hbWUoKTsKKworICAgIHZvaWQgdXBkYXRlUHJlZmVy
ZW5jZXMoY29uc3QgV2ViQ29yZTo6U2V0dGluZ3MmKTsKKworICAgIElQQzo6Q29ubmVjdGlvbiYg
Z3B1UHJvY2Vzc0Nvbm5lY3Rpb24oKSBjb25zdDsKKworcHJpdmF0ZToKKyAgICBzdGQ6OnVuaXF1
ZV9wdHI8V2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlSW50ZXJmYWNlPiBjcmVhdGVSZW1vdGVN
ZWRpYVBsYXllcihXZWJDb3JlOjpNZWRpYVBsYXllciosIFdlYkNvcmU6Ok1lZGlhUGxheWVyRW51
bXM6Ok1lZGlhRW5naW5lSWRlbnRpZmllcik7CisKKyAgICAvLyBXZWJQcm9jZXNzU3VwcGxlbWVu
dAorICAgIHZvaWQgaW5pdGlhbGl6ZShjb25zdCBXZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJz
JikgZmluYWw7CisKKyAgICAvLyBJUEM6Ok1lc3NhZ2VSZWNlaXZlcgorICAgIHZvaWQgZGlkUmVj
ZWl2ZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJikgZmluYWw7CisKKyAg
ICAvLyBNZXNzYWdlczo6UmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyCisgICAgdm9pZCBuZXR3b3Jr
U3RhdGVDaGFuZ2VkKE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZUlkZW50aWZpZXIpOworCisgICAg
ZnJpZW5kIGNsYXNzIE1lZGlhUGxheWVyUmVtb3RlRmFjdG9yeTsKKyAgICB2b2lkIGdldFN1cHBv
cnRlZFR5cGVzKFdlYkNvcmU6Ok1lZGlhUGxheWVyRW51bXM6Ok1lZGlhRW5naW5lSWRlbnRpZmll
ciwgSGFzaFNldDxTdHJpbmcsIEFTQ0lJQ2FzZUluc2Vuc2l0aXZlSGFzaD4mKTsKKyAgICBXZWJD
b3JlOjpNZWRpYVBsYXllcjo6U3VwcG9ydHNUeXBlIHN1cHBvcnRzVHlwZUFuZENvZGVjcyhXZWJD
b3JlOjpNZWRpYVBsYXllckVudW1zOjpNZWRpYUVuZ2luZUlkZW50aWZpZXIsIGNvbnN0IFdlYkNv
cmU6Ok1lZGlhRW5naW5lU3VwcG9ydFBhcmFtZXRlcnMmKTsKKyAgICBib29sIHN1cHBvcnRzS2V5
U3lzdGVtKFdlYkNvcmU6Ok1lZGlhUGxheWVyRW51bXM6Ok1lZGlhRW5naW5lSWRlbnRpZmllciwg
Y29uc3QgU3RyaW5nJiBrZXlTeXN0ZW0sIGNvbnN0IFN0cmluZyYgbWltZVR5cGUpOworICAgIEhh
c2hTZXQ8UmVmUHRyPFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luPj4gb3JpZ2luc0luTWVkaWFDYWNo
ZShXZWJDb3JlOjpNZWRpYVBsYXllckVudW1zOjpNZWRpYUVuZ2luZUlkZW50aWZpZXIsIGNvbnN0
IFN0cmluZyYpOworICAgIHZvaWQgY2xlYXJNZWRpYUNhY2hlKFdlYkNvcmU6Ok1lZGlhUGxheWVy
RW51bXM6Ok1lZGlhRW5naW5lSWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiwgV2FsbFRpbWUgbW9k
aWZpZWRTaW5jZSk7CisgICAgdm9pZCBjbGVhck1lZGlhQ2FjaGVGb3JPcmlnaW5zKFdlYkNvcmU6
Ok1lZGlhUGxheWVyRW51bXM6Ok1lZGlhRW5naW5lSWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiwg
Y29uc3QgSGFzaFNldDxSZWZQdHI8V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4+PiYpOworCisgICAg
SGFzaE1hcDxNZWRpYVBsYXllclByaXZhdGVSZW1vdGVJZGVudGlmaWVyLCBXZWFrUHRyPE1lZGlh
UGxheWVyUHJpdmF0ZVJlbW90ZT4+IG1fcGxheWVyczsKKyAgICBXZWJQcm9jZXNzJiBtX3Byb2Nl
c3M7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyTWFuYWdl
ci5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3Rl
TWVkaWFQbGF5ZXJNYW5hZ2VyLm1lc3NhZ2VzLmluCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmE5MzM1N2MyYmE4NWZm
MWRkZWNjYTA3YzMwMzkxZjhlMjAyOTIxMmYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyTWFuYWdlci5tZXNzYWdl
cy5pbgpAQCAtMCwwICsxLDMyIEBACisjIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyMgYXJlIG1l
dDoKKyMgMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisjICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyMgQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisj
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyMgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisjIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyMgQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YKKyMgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisjIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisjIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpCisjIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyMgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorCisjaWYgRU5BQkxFKFZJREVPKQorCittZXNzYWdlcyAtPiBSZW1vdGVNZWRpYVBsYXllck1h
bmFnZXIgTm90UmVmQ291bnRlZCB7CisKKyAgICBOZXR3b3JrU3RhdGVDaGFuZ2VkKFdlYktpdDo6
TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlSWRlbnRpZmllciBpZCkKKworfQorCisjZW5kaWYKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1ZpZXdVcGRhdGVEaXNw
YXRjaGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1ZpZXdVcGRhdGVE
aXNwYXRjaGVyLmNwcAppbmRleCA1Y2Y0NDQwN2UzZmIzZjY3YTAzNDcwMDNkMDQ3OGQ3NDE5OTMy
NDNmLi4xZmJjYzc5NmZmYjY1OTVhNGYzNWI1MjkwYTljM2I5YTRkZjE4NjZmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9WaWV3VXBkYXRlRGlzcGF0Y2hlci5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvVmlld1VwZGF0ZURpc3Bh
dGNoZXIuY3BwCkBAIC0zMSw2ICszMSw3IEBACiAjaW5jbHVkZSAiVmlld1VwZGF0ZURpc3BhdGNo
ZXJNZXNzYWdlcy5oIgogI2luY2x1ZGUgIldlYlBhZ2UuaCIKICNpbmNsdWRlICJXZWJQcm9jZXNz
LmgiCisjaW5jbHVkZSA8V2ViQ29yZS9QYWdlSWRlbnRpZmllci5oPgogI2luY2x1ZGUgPHd0Zi9S
dW5Mb29wLmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQgewpAQCAtNzUsNyArNzYsNyBAQCB2b2lkIFZp
ZXdVcGRhdGVEaXNwYXRjaGVyOjp2aXNpYmxlQ29udGVudFJlY3RVcGRhdGUoV2ViQ29yZTo6UGFn
ZUlkZW50aWZpZXIgcGFnZQogCiB2b2lkIFZpZXdVcGRhdGVEaXNwYXRjaGVyOjpkaXNwYXRjaFZp
c2libGVDb250ZW50UmVjdFVwZGF0ZSgpCiB7Ci0gICAgSGFzaE1hcDxQYWdlSWRlbnRpZmllciwg
VXBkYXRlRGF0YT4gdXBkYXRlOworICAgIEhhc2hNYXA8V2ViQ29yZTo6UGFnZUlkZW50aWZpZXIs
IFVwZGF0ZURhdGE+IHVwZGF0ZTsKICAgICB7CiAgICAgICAgIExvY2tIb2xkZXIgbG9ja2VyKCZt
X2RhdGFNdXRleCk7CiAgICAgICAgIHVwZGF0ZSA9IFdURk1vdmUobV9sYXRlc3RVcGRhdGUpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAppbmRleCA3MzVm
ZWE0ZWUxM2JlNDI1YzIzNGJlOTIxMjBmZTllN2JjYTJkNWM3Li5iOTY5ZDliYWU2YjFkYWNlMzdj
N2M3OTZiMmEyMDJhZDY3NTM4Nzg0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViUGFnZS9XZWJQYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
UGFnZS9XZWJQYWdlLmNwcApAQCAtMzEyLDYgKzMxMiwxMCBAQAogI2luY2x1ZGUgIldlYkRldmlj
ZU9yaWVudGF0aW9uVXBkYXRlUHJvdmlkZXIuaCIKICNlbmRpZgogCisjaWYgRU5BQkxFKEdQVV9Q
Uk9DRVNTKQorI2luY2x1ZGUgIlJlbW90ZU1lZGlhUGxheWVyTWFuYWdlci5oIgorI2VuZGlmCisK
IG5hbWVzcGFjZSBXZWJLaXQgewogdXNpbmcgbmFtZXNwYWNlIEpTQzsKIHVzaW5nIG5hbWVzcGFj
ZSBXZWJDb3JlOwpAQCAtMzYwNiw2ICszNjEwLDEwIEBAIHZvaWQgV2ViUGFnZTo6dXBkYXRlUHJl
ZmVyZW5jZXMoY29uc3QgV2ViUHJlZmVyZW5jZXNTdG9yZSYgc3RvcmUpCiAKICAgICBpZiAobV9k
cmF3aW5nQXJlYSkKICAgICAgICAgbV9kcmF3aW5nQXJlYS0+dXBkYXRlUHJlZmVyZW5jZXMoc3Rv
cmUpOworCisjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKQorICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRv
bigpLnN1cHBsZW1lbnQ8UmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyPigpLT51cGRhdGVQcmVmZXJl
bmNlcyhzZXR0aW5ncyk7CisjZW5kaWYKIH0KIAogI2lmIEVOQUJMRShEQVRBX0RFVEVDVElPTikK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcCBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcAppbmRleCAwNmIwOGQ3OGJmNTg3
MzVlODE3ODBmYTA0MWMwYTg3NDFlZjAwZWY5Li4xNTEzMjcxYWMzZjk3NTE1NmY5OTQyZGFmZGYw
Y2MwYThjZDdlM2QzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJv
Y2Vzcy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCkBA
IC0xNjQsNiArMTY0LDEwIEBACiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvUmVtb3RlSW5zcGVj
dG9yLmg+CiAjZW5kaWYKIAorI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykKKyNpbmNsdWRlICJSZW1v
dGVNZWRpYVBsYXllck1hbmFnZXIuaCIKKyNlbmRpZgorCiAvLyBUaGlzIHNob3VsZCBiZSBsZXNz
IHRoYW4gcGx1Z0luQXV0b1N0YXJ0RXhwaXJhdGlvblRpbWVUaHJlc2hvbGQgaW4gUGx1Z0luQXV0
b1N0YXJ0UHJvdmlkZXIuCiBzdGF0aWMgY29uc3QgU2Vjb25kcyBwbHVnSW5BdXRvU3RhcnRFeHBp
cmF0aW9uVGltZVVwZGF0ZVRocmVzaG9sZCB7IDI5ICogMjQgKiA2MCAqIDYwIH07CiAKQEAgLTIy
MSw3ICsyMjUsMTEgQEAgV2ViUHJvY2Vzczo6V2ViUHJvY2VzcygpCiAjaWYgUExBVEZPUk0oQ09D
T0EpICYmIEVOQUJMRShNRURJQV9TVFJFQU0pCiAgICAgYWRkU3VwcGxlbWVudDxVc2VyTWVkaWFD
YXB0dXJlTWFuYWdlcj4oKTsKICNlbmRpZgotICAgIAorCisjaWYgRU5BQkxFKEdQVV9QUk9DRVNT
KQorICAgIGFkZFN1cHBsZW1lbnQ8UmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyPigpOworI2VuZGlm
CisKICAgICBHaWdhY2FnZTo6Zm9yYmlkRGlzYWJsaW5nUHJpbWl0aXZlR2lnYWNhZ2UoKTsKIH0K
IAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>385498</attachid>
            <date>2019-12-12 09:02:45 -0800</date>
            <delta_ts>2019-12-12 09:32:53 -0800</delta_ts>
            <desc>WIP patch</desc>
            <filename>bug-205094-20191212090244.patch</filename>
            <type>text/plain</type>
            <size>154588</size>
            <attacher name="Eric Carlson">eric.carlson</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjUzMzk3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZTk0ZmQ0ZWMxNDg4MjAx
YTM0ZjM1Nzk2MWUwOTg5OWZmNzIyYmNmNS4uNGEyNzIyNWMwNjkyM2ZiMWMxZjBiZDkwZmI0ZDkw
OWU1YzdlNWRkMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEwNyBAQAorMjAxOS0xMi0xMCAgRXJp
YyBDYXJsc29uICA8ZXJpYy5jYXJsc29uQGFwcGxlLmNvbT4KKworICAgICAgICBBZGQgaW5mcmFz
dHJ1Y3R1cmUgbmVlZGVkIGZvciBwbGF5aW5nIG1lZGlhIHBsYXllciBpbiB0aGUgR1BVIHByb2Nl
c3MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwNTA5
NAorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNTc4MTUzOTM+CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLCBubyBmdW5jdGlvbmFs
IGNoYW5nZSB5ZXQuCisKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2o6CisgICAgICAgICogcGxhdGZvcm0vQ29udGVudFR5cGUuaDoKKyAgICAgICAgKFdlYkNvcmU6
OkNvbnRlbnRUeXBlOjplbmNvZGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudFR5
cGU6OmRlY29kZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6bnVsbExvZ2dlcik6CisgICAgICAgIChXZWJDb3JlOjpudWxs
Q29udGVudFR5cGVWZWN0b3IpOgorICAgICAgICAoV2ViQ29yZTo6bXV0YWJsZUluc3RhbGxlZE1l
ZGlhRW5naW5lc1ZlY3Rvcik6CisgICAgICAgIChXZWJDb3JlOjpyZWdpc3RlclJlbW90ZVBsYXll
ckNhbGxiYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbW90ZU1lZGlhUGxheWVyU3VwcG9ydDo6
c2V0UmVnaXN0ZXJSZW1vdGVQbGF5ZXJDYWxsYmFjayk6CisgICAgICAgIChXZWJDb3JlOjpidWls
ZE1lZGlhRW5naW5lc1ZlY3Rvcik6CisgICAgICAgIChXZWJDb3JlOjppbnN0YWxsZWRNZWRpYUVu
Z2luZXMpOgorICAgICAgICAoV2ViQ29yZTo6YWRkTWVkaWFFbmdpbmUpOgorICAgICAgICAoV2Vi
Q29yZTo6TWVkaWFQbGF5ZXI6Om1lZGlhRW5naW5lKToKKyAgICAgICAgKFdlYkNvcmU6OmJlc3RN
ZWRpYUVuZ2luZUZvclN1cHBvcnRQYXJhbWV0ZXJzKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlh
UGxheWVyOjpuZXh0TWVkaWFFbmdpbmUpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXI6
OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllcjo6TWVkaWFQbGF5ZXIpOgor
ICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXI6Om5leHRCZXN0TWVkaWFFbmdpbmUpOgorICAg
ICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXI6OmxvYWRXaXRoTmV4dE1lZGlhRW5naW5lKToKKyAg
ICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyOjpnZXRTdXBwb3J0ZWRUeXBlcyk6CisgICAgICAg
IChXZWJDb3JlOjpNZWRpYVBsYXllcjo6b3JpZ2luc0luTWVkaWFDYWNoZSk6CisgICAgICAgIChX
ZWJDb3JlOjpNZWRpYVBsYXllcjo6Y2xlYXJNZWRpYUNhY2hlKToKKyAgICAgICAgKFdlYkNvcmU6
Ok1lZGlhUGxheWVyOjpjbGVhck1lZGlhQ2FjaGVGb3JPcmlnaW5zKToKKyAgICAgICAgKFdlYkNv
cmU6Ok1lZGlhUGxheWVyOjpzdXBwb3J0c0tleVN5c3RlbSk6CisgICAgICAgIChXZWJDb3JlOjpN
ZWRpYVBsYXllcjo6bmV0d29ya1N0YXRlQ2hhbmdlZCk6CisgICAgICAgIChXZWJDb3JlOjpuZXh0
TWVkaWFFbmdpbmUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXI6Om5l
eHRCZXN0TWVkaWFFbmdpbmUgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL01lZGlhUGxheWVyLmg6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYUVuZ2luZVN1cHBv
cnRQYXJhbWV0ZXJzOjplbmNvZGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFFbmdp
bmVTdXBwb3J0UGFyYW1ldGVyczo6ZGVjb2RlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxh
eWVyRmFjdG9yeTo6fk1lZGlhUGxheWVyRmFjdG9yeSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRp
YVBsYXllckZhY3Rvcnk6Om9yaWdpbnNJbk1lZGlhQ2FjaGUgY29uc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6TWVkaWFQbGF5ZXJGYWN0b3J5OjpjbGVhck1lZGlhQ2FjaGUgY29uc3QpOgorICAgICAg
ICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJGYWN0b3J5OjpjbGVhck1lZGlhQ2FjaGVGb3JPcmlnaW5z
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyRmFjdG9yeTo6c3VwcG9ydHNL
ZXlTeXN0ZW0gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXI6OnNldFZpZGVv
RnVsbHNjcmVlbkxheWVyKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVy
OjpzaXplIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyOjpp
bnZhbGlkVGltZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllcjo6cGxh
dGZvcm1Wb2x1bWVDb25maWd1cmF0aW9uUmVxdWlyZWQgY29uc3QpOiBEZWxldGVkLgorICAgICAg
ICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXI6OmNvbnRlbnRNSU1FVHlwZSBjb25zdCk6IERlbGV0ZWQu
CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllcjo6Y29udGVudFR5cGVDb2RlY3MgY29uc3Qp
OiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXI6OmNvbnRlbnRNSU1FVHlw
ZVdhc0luZmVycmVkRnJvbUV4dGVuc2lvbiBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJD
b3JlOjpNZWRpYVBsYXllcjo6bWVkaWFQbGF5ZXJMb2dJZGVudGlmaWVyKTogRGVsZXRlZC4KKyAg
ICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyOjpyZW5kZXJpbmdDYW5CZUFjY2VsZXJhdGVkIGNv
bnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyOjpyZW5kZXJpbmdN
b2RlQ2hhbmdlZCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXll
cjo6YWNjZWxlcmF0ZWRDb21wb3NpdGluZ0VuYWJsZWQpOiBEZWxldGVkLgorICAgICAgICAoV2Vi
Q29yZTo6TWVkaWFQbGF5ZXI6OmFjdGl2ZVNvdXJjZUJ1ZmZlcnNDaGFuZ2VkKTogRGVsZXRlZC4K
KyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyOjpwbGF5ZXJDb250ZW50Qm94UmVjdCBjb25z
dCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllcjo6cGxheWVyQ29udGVu
dHNTY2FsZSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllcjo6
c2hvdWxkVXNlUGVyc2lzdGVudENhY2hlIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNv
cmU6Ok1lZGlhUGxheWVyOjptZWRpYUNhY2hlRGlyZWN0b3J5IGNvbnN0KTogRGVsZXRlZC4KKyAg
ICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyOjppc1ZpZGVvUGxheWVyIGNvbnN0KTogRGVsZXRl
ZC4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyOjptZWRpYUVuZ2luZVVwZGF0ZWQpOiBE
ZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXI6OmlzTG9vcGluZyBjb25zdCk6
IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllcjo6cmVxdWVzdEluc3RhbGxN
aXNzaW5nUGx1Z2lucyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllcjo6
Y2xpZW50IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9NZWRp
YVBsYXllckVuZ2luZUlkZW50aWZpZXJzLmg6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL0NvbnRlbnRUeXBlLmguCisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllckVuZ2lu
ZUlkZW50aWZpZXJzOjphdkZvdW5kYXRpb25FbmdpbmVJZGVudGlmaWVyKToKKyAgICAgICAgKFdl
YkNvcmU6Ok1lZGlhUGxheWVyRW5naW5lSWRlbnRpZmllcnM6OmF2Rm91bmRhdGlvbk1TRUVuZ2lu
ZUlkZW50aWZpZXIpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJFbmdpbmVJZGVudGlm
aWVyczo6YXZGb3VuZGF0aW9uTWVkaWFTdHJlYW1FbmdpbmVJZGVudGlmaWVyKToKKyAgICAgICAg
KFdlYkNvcmU6Ok1lZGlhUGxheWVyRW5naW5lSWRlbnRpZmllcnM6OkdTdHJlYW1lck1lZGlhRW5n
aW5lSWRlbnRpZmllcik6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllckVuZ2luZUlkZW50
aWZpZXJzOjpHU3RyZWFtZXJNU0VNZWRpYUVuZ2luZUlkZW50aWZpZXIpOgorICAgICAgICAoV2Vi
Q29yZTo6TWVkaWFQbGF5ZXJFbmdpbmVJZGVudGlmaWVyczo6aG9sZVB1bmNoTWVkaWFFbmdpbmVJ
ZGVudGlmaWVyKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyRW5naW5lSWRlbnRpZmll
cnM6Ok1lZGlhRm91bmRhdGlvbk1lZGlhRW5naW5lSWRlbnRpZmllcik6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvUGxhdGZvcm1UaW1lUmFuZ2VzLmg6CisgICAgICAgIChXZWJDb3JlOjpQ
bGF0Zm9ybVRpbWVSYW5nZXM6OlBsYXRmb3JtVGltZVJhbmdlcyk6IERlbGV0ZWQuCisgICAgICAg
IChXZWJDb3JlOjpQbGF0Zm9ybVRpbWVSYW5nZXM6Omxlbmd0aCBjb25zdCk6IERlbGV0ZWQuCisg
ICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybVRpbWVSYW5nZXM6OlJhbmdlOjpSYW5nZSk6IERlbGV0
ZWQuCisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybVRpbWVSYW5nZXM6OlJhbmdlOjppc1BvaW50
SW5SYW5nZSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybVRpbWVS
YW5nZXM6OlJhbmdlOjppc092ZXJsYXBwaW5nUmFuZ2UgY29uc3QpOiBEZWxldGVkLgorICAgICAg
ICAoV2ViQ29yZTo6UGxhdGZvcm1UaW1lUmFuZ2VzOjpSYW5nZTo6aXNDb250aWd1b3VzV2l0aFJh
bmdlIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtVGltZVJhbmdl
czo6UmFuZ2U6OnVuaW9uV2l0aE92ZXJsYXBwaW5nT3JDb250aWd1b3VzUmFuZ2UgY29uc3QpOiBE
ZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1UaW1lUmFuZ2VzOjpSYW5nZTo6aXNC
ZWZvcmVSYW5nZSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
YXZmb3VuZGF0aW9uL2NmL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbkNGLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbkNGOjpyZWdpc3Rl
ck1lZGlhRW5naW5lKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24v
b2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLmg6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3Vu
ZGF0aW9uT2JqQy5tbToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUFWRm91
bmRhdGlvbk9iakM6OnJlZ2lzdGVyTWVkaWFFbmdpbmUpOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZG
T2JqQy5tbToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNl
QVZGT2JqQzo6cmVnaXN0ZXJNZWRpYUVuZ2luZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpD
Lm1tOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZP
YmpDOjpyZWdpc3Rlck1lZGlhRW5naW5lKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9n
c3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6cmVnaXN0ZXJNZWRpYUVuZ2luZSk6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL21zZS9NZWRpYVBsYXllclByaXZh
dGVHU3RyZWFtZXJNU0UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRl
R1N0cmVhbWVyTVNFOjpyZWdpc3Rlck1lZGlhRW5naW5lKToKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9ob2xlcHVuY2gvTWVkaWFQbGF5ZXJQcml2YXRlSG9sZVB1bmNoLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUhvbGVQdW5jaDo6cmVnaXN0ZXJNZWRpYUVu
Z2luZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL01lZGlhUGxheWVyUHJpdmF0
ZU1lZGlhRm91bmRhdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZh
dGVNZWRpYUZvdW5kYXRpb246OnJlZ2lzdGVyTWVkaWFFbmdpbmUpOgorICAgICAgICAqIHBsYXRm
b3JtL21vY2svbWVkaWFzb3VyY2UvTW9ja01lZGlhUGxheWVyTWVkaWFTb3VyY2UuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6TW9ja01lZGlhUGxheWVyTWVkaWFTb3VyY2U6OnJlZ2lzdGVyTWVkaWFF
bmdpbmUpOgorCiAyMDE5LTEyLTExICBFcmljIENhcmxzb24gIDxlcmljLmNhcmxzb25AYXBwbGUu
Y29tPgogCiAgICAgICAgIEFkZCBlbmNvZGVycyBmb3IgTWVkaWFQbGF5ZXJFbnVtIGVudW1zCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdl
TG9nCmluZGV4IDc1M2ZkODg3YmFlMDM4MjVmM2ZlYmM0NjAxNTM5Yzg1ODQyNTQ0MjMuLjMyZWI1
NjI1NDUyYmU5NWIzMWI0MTlhMGFlMzk0N2M3NjNlNGYwZmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEs
MTg3IEBACisyMDE5LTEyLTEwICBFcmljIENhcmxzb24gIDxlcmljLmNhcmxzb25AYXBwbGUuY29t
PgorCisgICAgICAgIEFkZCBpbmZyYXN0cnVjdHVyZSBuZWVkZWQgZm9yIHBsYXlpbmcgbWVkaWEg
cGxheWVyIGluIHRoZSBHUFUgcHJvY2VzcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MjA1MDk0CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS81NzgxNTM5
Mz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIERl
cml2ZWRTb3VyY2VzLWlucHV0LnhjZmlsZWxpc3Q6CisgICAgICAgICogRGVyaXZlZFNvdXJjZXMt
b3V0cHV0LnhjZmlsZWxpc3Q6CisgICAgICAgICogRGVyaXZlZFNvdXJjZXMubWFrZToKKyAgICAg
ICAgKiBHUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwOgorICAgICAgICAo
V2ViS2l0OjpHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpHUFVDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzKToKKyAgICAgICAgKFdlYktpdDo6R1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6fkdQVUNv
bm5lY3Rpb25Ub1dlYlByb2Nlc3MpOgorICAgICAgICAoV2ViS2l0OjpHUFVDb25uZWN0aW9uVG9X
ZWJQcm9jZXNzOjpkaWRSZWNlaXZlTWVzc2FnZSk6CisgICAgICAgIChXZWJLaXQ6OkdQVUNvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3M6OmRpZFJlY2VpdmVTeW5jTWVzc2FnZSk6CisgICAgICAgICogR1BV
UHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmg6CisgICAgICAgICogR1BVUHJvY2Vz
cy9tZWRpYS9SZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eS5jcHA6IEFkZGVkLgorICAgICAg
ICAoV2ViS2l0OjpudWxsTG9nZ2VyKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTWVkaWFQbGF5
ZXJNYW5hZ2VyUHJveHk6OlBsYXllclByb3h5OjpQbGF5ZXJQcm94eSk6CisgICAgICAgIChXZWJL
aXQ6OlJlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5OjpQbGF5ZXJQcm94eTo6flBsYXllclBy
b3h5KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHk6OlJl
bW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTWVk
aWFQbGF5ZXJNYW5hZ2VyUHJveHk6On5SZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eSk6Cisg
ICAgICAgIChXZWJLaXQ6OlJlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5OjpjcmVhdGVNZWRp
YVBsYXllcik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5
OjpnZXRTdXBwb3J0ZWRUeXBlcyk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZU1lZGlhUGxheWVy
TWFuYWdlclByb3h5OjpzdXBwb3J0c1R5cGUpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVNZWRp
YVBsYXllck1hbmFnZXJQcm94eTo6b3JpZ2luc0luTWVkaWFDYWNoZSk6CisgICAgICAgIChXZWJL
aXQ6OlJlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5OjpjbGVhck1lZGlhQ2FjaGUpOgorICAg
ICAgICAoV2ViS2l0OjpSZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eTo6Y2xlYXJNZWRpYUNh
Y2hlRm9yT3JpZ2lucyk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZU1lZGlhUGxheWVyTWFuYWdl
clByb3h5OjpzdXBwb3J0c0tleVN5c3RlbSk6CisgICAgICAgICogR1BVUHJvY2Vzcy9tZWRpYS9S
ZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eS5oOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6
UmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHk6OndlYlByb2Nlc3NDb25uZWN0aW9uIGNvbnN0
KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHk6OmRpZFJl
Y2VpdmVNZXNzYWdlRnJvbVdlYlByb2Nlc3MpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVNZWRp
YVBsYXllck1hbmFnZXJQcm94eTo6ZGlkUmVjZWl2ZVN5bmNNZXNzYWdlRnJvbVdlYlByb2Nlc3Mp
OgorICAgICAgICAqIEdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJv
eHkubWVzc2FnZXMuaW46IEFkZGVkLgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0L21lc3NhZ2Vz
LnB5OgorICAgICAgICAqIFNvdXJjZXMudHh0OgorICAgICAgICAqIFNvdXJjZXNDb2NvYS50eHQ6
CisgICAgICAgICogV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICog
V2ViUHJvY2Vzcy9HUFUvbWVkaWEvTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlLmNwcDogQWRkZWQu
CisgICAgICAgIChXZWJLaXQ6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6TWVkaWFQbGF5ZXJQ
cml2YXRlUmVtb3RlKToKKyAgICAgICAgKFdlYktpdDo6TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3Rl
Ojp+TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlKToKKyAgICAgICAgKFdlYktpdDo6TWVkaWFQbGF5
ZXJQcml2YXRlUmVtb3RlOjpNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OmxvYWQpOgorICAgICAg
ICAoV2ViS2l0OjpNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OmxvYWQpOgorICAgICAgICAoV2Vi
S2l0OjpNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OmNhbmNlbExvYWQpOgorICAgICAgICAoV2Vi
S2l0OjpNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OnByZXBhcmVUb1BsYXkpOgorICAgICAgICAo
V2ViS2l0OjpNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OnBsYXRmb3JtTGF5ZXIgY29uc3QpOgor
ICAgICAgICAoV2ViS2l0OjpNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OnNldFZpZGVvRnVsbHNj
cmVlbkxheWVyKToKKyAgICAgICAgKFdlYktpdDo6TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjp1
cGRhdGVWaWRlb0Z1bGxzY3JlZW5JbmxpbmVJbWFnZSk6CisgICAgICAgIChXZWJLaXQ6Ok1lZGlh
UGxheWVyUHJpdmF0ZVJlbW90ZTo6c2V0VmlkZW9GdWxsc2NyZWVuRnJhbWUpOgorICAgICAgICAo
V2ViS2l0OjpNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OnNldFZpZGVvRnVsbHNjcmVlbkdyYXZp
dHkpOgorICAgICAgICAoV2ViS2l0OjpNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OnNldFZpZGVv
RnVsbHNjcmVlbk1vZGUpOgorICAgICAgICAoV2ViS2l0OjpNZWRpYVBsYXllclByaXZhdGVSZW1v
dGU6OnZpZGVvRnVsbHNjcmVlblN0YW5kYnlDaGFuZ2VkKToKKyAgICAgICAgKFdlYktpdDo6TWVk
aWFQbGF5ZXJQcml2YXRlUmVtb3RlOjphY2Nlc3NMb2cgY29uc3QpOgorICAgICAgICAoV2ViS2l0
OjpNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OmVycm9yTG9nIGNvbnN0KToKKyAgICAgICAgKFdl
YktpdDo6TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpwbGF0Zm9ybUVycm9yQ29kZSBjb25zdCk6
CisgICAgICAgIChXZWJLaXQ6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6cGxheSk6CisgICAg
ICAgIChXZWJLaXQ6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6cGF1c2UpOgorICAgICAgICAo
V2ViS2l0OjpNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OnNldEJ1ZmZlcmluZ1BvbGljeSk6Cisg
ICAgICAgIChXZWJLaXQ6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6c3VwcG9ydHNQaWN0dXJl
SW5QaWN0dXJlIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6TWVkaWFQbGF5ZXJQcml2YXRlUmVt
b3RlOjpzdXBwb3J0c0Z1bGxzY3JlZW4gY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpNZWRpYVBs
YXllclByaXZhdGVSZW1vdGU6OnN1cHBvcnRzU2Nhbm5pbmcgY29uc3QpOgorICAgICAgICAoV2Vi
S2l0OjpNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OnJlcXVpcmVzSW1tZWRpYXRlQ29tcG9zaXRp
bmcgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OmNh
blNhdmVNZWRpYURhdGEgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpNZWRpYVBsYXllclByaXZh
dGVSZW1vdGU6Om5hdHVyYWxTaXplIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6TWVkaWFQbGF5
ZXJQcml2YXRlUmVtb3RlOjpoYXNWaWRlbyBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6Ok1lZGlh
UGxheWVyUHJpdmF0ZVJlbW90ZTo6aGFzQXVkaW8gY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpN
ZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OnNldFZpc2libGUpOgorICAgICAgICAoV2ViS2l0OjpN
ZWRpYVBsYXllclByaXZhdGVSZW1vdGU6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6ZHVyYXRp
b25NZWRpYVRpbWUgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpNZWRpYVBsYXllclByaXZhdGVS
ZW1vdGU6OmN1cnJlbnRNZWRpYVRpbWUgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpNZWRpYVBs
YXllclByaXZhdGVSZW1vdGU6OmdldFN0YXJ0RGF0ZSBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6
Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6c2Vlayk6CisgICAgICAgIChXZWJLaXQ6Ok1lZGlh
UGxheWVyUHJpdmF0ZVJlbW90ZTo6c2Vla1dpdGhUb2xlcmFuY2UpOgorICAgICAgICAoV2ViS2l0
OjpNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OnNlZWtpbmcgY29uc3QpOgorICAgICAgICAoV2Vi
S2l0OjpNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OnN0YXJ0VGltZSBjb25zdCk6CisgICAgICAg
IChXZWJLaXQ6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6c2V0UmF0ZURvdWJsZSk6CisgICAg
ICAgIChXZWJLaXQ6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6cmF0ZSBjb25zdCk6CisgICAg
ICAgIChXZWJLaXQ6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6c2V0UHJlc2VydmVzUGl0Y2gp
OgorICAgICAgICAoV2ViS2l0OjpNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OnBhdXNlZCBjb25z
dCk6CisgICAgICAgIChXZWJLaXQ6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6c2V0Vm9sdW1l
RG91YmxlKToKKyAgICAgICAgKFdlYktpdDo6TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpzZXRN
dXRlZCk6CisgICAgICAgIChXZWJLaXQ6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6aGFzQ2xv
c2VkQ2FwdGlvbnMgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpNZWRpYVBsYXllclByaXZhdGVS
ZW1vdGU6OnNldENsb3NlZENhcHRpb25zVmlzaWJsZSk6CisgICAgICAgIChXZWJLaXQ6Ok1lZGlh
UGxheWVyUHJpdmF0ZVJlbW90ZTo6bWF4RmFzdEZvcndhcmRSYXRlIGNvbnN0KToKKyAgICAgICAg
KFdlYktpdDo6TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjptaW5GYXN0UmV2ZXJzZVJhdGUgY29u
c3QpOgorICAgICAgICAoV2ViS2l0OjpNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6Om5ldHdvcmtT
dGF0ZSBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6
cmVhZHlTdGF0ZSBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6Ok1lZGlhUGxheWVyUHJpdmF0ZVJl
bW90ZTo6c2Vla2FibGUgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpNZWRpYVBsYXllclByaXZh
dGVSZW1vdGU6OmJ1ZmZlcmVkIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6TWVkaWFQbGF5ZXJQ
cml2YXRlUmVtb3RlOjptYXhNZWRpYVRpbWVTZWVrYWJsZSBjb25zdCk6CisgICAgICAgIChXZWJL
aXQ6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6bWluTWVkaWFUaW1lU2Vla2FibGUgY29uc3Qp
OgorICAgICAgICAoV2ViS2l0OjpNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OnNlZWthYmxlVGlt
ZVJhbmdlc0xhc3RNb2RpZmllZFRpbWUgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpNZWRpYVBs
YXllclByaXZhdGVSZW1vdGU6OmxpdmVVcGRhdGVJbnRlcnZhbCBjb25zdCk6CisgICAgICAgIChX
ZWJLaXQ6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6dG90YWxCeXRlcyBjb25zdCk6CisgICAg
ICAgIChXZWJLaXQ6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6ZGlkTG9hZGluZ1Byb2dyZXNz
IGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpzZXRT
aXplKToKKyAgICAgICAgKFdlYktpdDo6TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpwYWludCk6
CisgICAgICAgIChXZWJLaXQ6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6cGFpbnRDdXJyZW50
RnJhbWVJbkNvbnRleHQpOgorICAgICAgICAoV2ViS2l0OjpNZWRpYVBsYXllclByaXZhdGVSZW1v
dGU6OmNvcHlWaWRlb1RleHR1cmVUb1BsYXRmb3JtVGV4dHVyZSk6CisgICAgICAgIChXZWJLaXQ6
Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6bmF0aXZlSW1hZ2VGb3JDdXJyZW50VGltZSk6Cisg
ICAgICAgIChXZWJLaXQ6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6c2V0UHJlbG9hZCk6Cisg
ICAgICAgIChXZWJLaXQ6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6aGFzQXZhaWxhYmxlVmlk
ZW9GcmFtZSBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90
ZTo6Y2FuTG9hZFBvc3RlciBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6Ok1lZGlhUGxheWVyUHJp
dmF0ZVJlbW90ZTo6c2V0UG9zdGVyKToKKyAgICAgICAgKFdlYktpdDo6TWVkaWFQbGF5ZXJQcml2
YXRlUmVtb3RlOjplbnRlckZ1bGxzY3JlZW4pOgorICAgICAgICAoV2ViS2l0OjpNZWRpYVBsYXll
clByaXZhdGVSZW1vdGU6OmV4aXRGdWxsc2NyZWVuKToKKyAgICAgICAgKFdlYktpdDo6TWVkaWFQ
bGF5ZXJQcml2YXRlUmVtb3RlOjp3aXJlbGVzc1BsYXliYWNrVGFyZ2V0TmFtZSBjb25zdCk6Cisg
ICAgICAgIChXZWJLaXQ6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6d2lyZWxlc3NQbGF5YmFj
a1RhcmdldFR5cGUgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpNZWRpYVBsYXllclByaXZhdGVS
ZW1vdGU6OndpcmVsZXNzVmlkZW9QbGF5YmFja0Rpc2FibGVkIGNvbnN0KToKKyAgICAgICAgKFdl
YktpdDo6TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpzZXRXaXJlbGVzc1ZpZGVvUGxheWJhY2tE
aXNhYmxlZCk6CisgICAgICAgIChXZWJLaXQ6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6Y2Fu
UGxheVRvV2lyZWxlc3NQbGF5YmFja1RhcmdldCBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6Ok1l
ZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6aXNDdXJyZW50UGxheWJhY2tUYXJnZXRXaXJlbGVzcyBj
b25zdCk6CisgICAgICAgIChXZWJLaXQ6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6c2V0V2ly
ZWxlc3NQbGF5YmFja1RhcmdldCk6CisgICAgICAgIChXZWJLaXQ6Ok1lZGlhUGxheWVyUHJpdmF0
ZVJlbW90ZTo6c2V0U2hvdWxkUGxheVRvUGxheWJhY2tUYXJnZXQpOgorICAgICAgICAoV2ViS2l0
OjpNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OmNhbkVudGVyRnVsbHNjcmVlbiBjb25zdCk6Cisg
ICAgICAgIChXZWJLaXQ6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6c3VwcG9ydHNBY2NlbGVy
YXRlZFJlbmRlcmluZyBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6Ok1lZGlhUGxheWVyUHJpdmF0
ZVJlbW90ZTo6YWNjZWxlcmF0ZWRSZW5kZXJpbmdTdGF0ZUNoYW5nZWQpOgorICAgICAgICAoV2Vi
S2l0OjpNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OnNob3VsZE1haW50YWluQXNwZWN0UmF0aW8g
Y29uc3QpOgorICAgICAgICAoV2ViS2l0OjpNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OnNldFNo
b3VsZE1haW50YWluQXNwZWN0UmF0aW8pOgorICAgICAgICAoV2ViS2l0OjpNZWRpYVBsYXllclBy
aXZhdGVSZW1vdGU6Omhhc1NpbmdsZVNlY3VyaXR5T3JpZ2luIGNvbnN0KToKKyAgICAgICAgKFdl
YktpdDo6TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpkaWRQYXNzQ09SU0FjY2Vzc0NoZWNrIGNv
bnN0KToKKyAgICAgICAgKFdlYktpdDo6TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjp3b3VsZFRh
aW50T3JpZ2luIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6TWVkaWFQbGF5ZXJQcml2YXRlUmVt
b3RlOjptb3ZpZUxvYWRUeXBlIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6TWVkaWFQbGF5ZXJQ
cml2YXRlUmVtb3RlOjpwcmVwYXJlRm9yUmVuZGVyaW5nKToKKyAgICAgICAgKFdlYktpdDo6TWVk
aWFQbGF5ZXJQcml2YXRlUmVtb3RlOjptZWRpYVRpbWVGb3JUaW1lVmFsdWUgY29uc3QpOgorICAg
ICAgICAoV2ViS2l0OjpNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6Om1heGltdW1EdXJhdGlvblRv
Q2FjaGVNZWRpYVRpbWUgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpNZWRpYVBsYXllclByaXZh
dGVSZW1vdGU6OmRlY29kZWRGcmFtZUNvdW50IGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6TWVk
aWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpkcm9wcGVkRnJhbWVDb3VudCBjb25zdCk6CisgICAgICAg
IChXZWJLaXQ6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6YXVkaW9EZWNvZGVkQnl0ZUNvdW50
IGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjp2aWRl
b0RlY29kZWRCeXRlQ291bnQgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpNZWRpYVBsYXllclBy
aXZhdGVSZW1vdGU6OnNldFByaXZhdGVCcm93c2luZ01vZGUpOgorICAgICAgICAoV2ViS2l0OjpN
ZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OmVuZ2luZURlc2NyaXB0aW9uIGNvbnN0KToKKyAgICAg
ICAgKFdlYktpdDo6TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjphdWRpb1NvdXJjZVByb3ZpZGVy
KToKKyAgICAgICAgKFdlYktpdDo6TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpjcmVhdGVTZXNz
aW9uKToKKyAgICAgICAgKFdlYktpdDo6TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpzZXRDRE1T
ZXNzaW9uKToKKyAgICAgICAgKFdlYktpdDo6TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjprZXlB
ZGRlZCk6CisgICAgICAgIChXZWJLaXQ6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6Y2RtSW5z
dGFuY2VBdHRhY2hlZCk6CisgICAgICAgIChXZWJLaXQ6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90
ZTo6Y2RtSW5zdGFuY2VEZXRhY2hlZCk6CisgICAgICAgIChXZWJLaXQ6Ok1lZGlhUGxheWVyUHJp
dmF0ZVJlbW90ZTo6YXR0ZW1wdFRvRGVjcnlwdFdpdGhJbnN0YW5jZSk6CisgICAgICAgIChXZWJL
aXQ6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6d2FpdGluZ0ZvcktleSBjb25zdCk6CisgICAg
ICAgIChXZWJLaXQ6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6cmVxdWlyZXNUZXh0VHJhY2tS
ZXByZXNlbnRhdGlvbiBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6Ok1lZGlhUGxheWVyUHJpdmF0
ZVJlbW90ZTo6c2V0VGV4dFRyYWNrUmVwcmVzZW50YXRpb24pOgorICAgICAgICAoV2ViS2l0OjpN
ZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OnN5bmNUZXh0VHJhY2tCb3VuZHMpOgorICAgICAgICAo
V2ViS2l0OjpNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OnRyYWNrc0NoYW5nZWQpOgorICAgICAg
ICAoV2ViS2l0OjpNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OnNpbXVsYXRlQXVkaW9JbnRlcnJ1
cHRpb24pOgorICAgICAgICAoV2ViS2l0OjpNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OmJlZ2lu
U2ltdWxhdGVkSERDUEVycm9yKToKKyAgICAgICAgKFdlYktpdDo6TWVkaWFQbGF5ZXJQcml2YXRl
UmVtb3RlOjplbmRTaW11bGF0ZWRIRENQRXJyb3IpOgorICAgICAgICAoV2ViS2l0OjpNZWRpYVBs
YXllclByaXZhdGVSZW1vdGU6Omxhbmd1YWdlT2ZQcmltYXJ5QXVkaW9UcmFjayBjb25zdCk6Cisg
ICAgICAgIChXZWJLaXQ6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6ZXh0cmFNZW1vcnlDb3N0
IGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpmaWxl
U2l6ZSBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6
ZW5kZWQgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6
OnZpZGVvUGxheWJhY2tRdWFsaXR5TWV0cmljcyk6CisgICAgICAgIChXZWJLaXQ6Ok1lZGlhUGxh
eWVyUHJpdmF0ZVJlbW90ZTo6bm90aWZ5VHJhY2tNb2RlQ2hhbmdlZCk6CisgICAgICAgIChXZWJL
aXQ6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6bm90aWZ5QWN0aXZlU291cmNlQnVmZmVyc0No
YW5nZWQpOgorICAgICAgICAoV2ViS2l0OjpNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OnNldFNo
b3VsZERpc2FibGVTbGVlcCk6CisgICAgICAgIChXZWJLaXQ6Ok1lZGlhUGxheWVyUHJpdmF0ZVJl
bW90ZTo6YXBwbGljYXRpb25XaWxsUmVzaWduQWN0aXZlKToKKyAgICAgICAgKFdlYktpdDo6TWVk
aWFQbGF5ZXJQcml2YXRlUmVtb3RlOjphcHBsaWNhdGlvbkRpZEJlY29tZUFjdGl2ZSk6CisgICAg
ICAgIChXZWJLaXQ6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6cGVyZm9ybVRhc2tBdE1lZGlh
VGltZSk6CisgICAgICAgIChXZWJLaXQ6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6c2hvdWxk
SWdub3JlSW50cmluc2ljU2l6ZSk6CisgICAgICAgIChXZWJLaXQ6Ok1lZGlhUGxheWVyUHJpdmF0
ZVJlbW90ZTo6bG9nQ2hhbm5lbCBjb25zdCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvbWVk
aWEvTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlLmg6IEFkZGVkLgorICAgICAgICAqIFdlYlByb2Nl
c3MvR1BVL21lZGlhL01lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZUlkZW50aWZpZXIuaDogQWRkZWQu
CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2Vy
LmNwcDogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6Ok1lZGlhUGxheWVyUmVtb3RlRmFjdG9yeTo6
TWVkaWFQbGF5ZXJSZW1vdGVGYWN0b3J5KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTWVkaWFQ
bGF5ZXJNYW5hZ2VyOjpSZW1vdGVNZWRpYVBsYXllck1hbmFnZXIpOgorICAgICAgICAoV2ViS2l0
OjpSZW1vdGVNZWRpYVBsYXllck1hbmFnZXI6On5SZW1vdGVNZWRpYVBsYXllck1hbmFnZXIpOgor
ICAgICAgICAoV2ViS2l0OjpSZW1vdGVNZWRpYVBsYXllck1hbmFnZXI6OnN1cHBsZW1lbnROYW1l
KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyOjppbml0aWFsaXpl
KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyOjpjcmVhdGVSZW1v
dGVNZWRpYVBsYXllcik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZU1lZGlhUGxheWVyTWFuYWdl
cjo6Z2V0U3VwcG9ydGVkVHlwZXMpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVNZWRpYVBsYXll
ck1hbmFnZXI6OnN1cHBvcnRzVHlwZUFuZENvZGVjcyk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90
ZU1lZGlhUGxheWVyTWFuYWdlcjo6c3VwcG9ydHNLZXlTeXN0ZW0pOgorICAgICAgICAoV2ViS2l0
OjpSZW1vdGVNZWRpYVBsYXllck1hbmFnZXI6Om9yaWdpbnNJbk1lZGlhQ2FjaGUpOgorICAgICAg
ICAoV2ViS2l0OjpSZW1vdGVNZWRpYVBsYXllck1hbmFnZXI6OmNsZWFyTWVkaWFDYWNoZSk6Cisg
ICAgICAgIChXZWJLaXQ6OlJlbW90ZU1lZGlhUGxheWVyTWFuYWdlcjo6Y2xlYXJNZWRpYUNhY2hl
Rm9yT3JpZ2lucyk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZU1lZGlhUGxheWVyTWFuYWdlcjo6
bmV0d29ya1N0YXRlQ2hhbmdlZCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZU1lZGlhUGxheWVy
TWFuYWdlcjo6dXBkYXRlUHJlZmVyZW5jZXMpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVNZWRp
YVBsYXllck1hbmFnZXI6OmdwdVByb2Nlc3NDb25uZWN0aW9uIGNvbnN0KToKKyAgICAgICAgKiBX
ZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVNZWRpYVBsYXllck1hbmFnZXIuaDogQWRkZWQuCisg
ICAgICAgICogV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyLm1l
c3NhZ2VzLmluOiBBZGRlZC4KKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5j
cHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnVwZGF0ZVByZWZlcmVuY2VzKToKKyAgICAg
ICAgKiBXZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwOgorCiAyMDE5LTEyLTExICBUcnVpdHQgU2F2
ZWxsICA8dHNhdmVsbEBhcHBsZS5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgcm9sbGluZyBv
dXQgcjI1MzM3Ni4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvagppbmRleCAwM2U2ZjU0MzNiZjZmNjdlYmM1ZjQ5ZmVkMGE5NTAxMmQ0YmU0YmY5
Li5iZjI4MWFmZTUxN2I5ZWE2YzRjOWNlNmJkZWMxZTE4NDcwYmY4NGNkIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291
cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xMDQsNiAr
MTA0LDcgQEAKIAkJMDcxRTQ5NkUxQUQ1QUEwRDAwOEE1MEI0IC8qIE1lZGlhUGxheWJhY2tUYXJn
ZXRNYWMubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAw
NzFFNDk2RDFBRDVBQTBEMDA4QTUwQjQgLyogTWVkaWFQbGF5YmFja1RhcmdldE1hYy5tbSAqLzsg
fTsKIAkJMDcxRTQ5NzAxQUQ1QUI1RTAwOEE1MEI0IC8qIE1lZGlhUGxheWJhY2tUYXJnZXRNYWMu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3MUU0OTZG
MUFENUFCNUUwMDhBNTBCNCAvKiBNZWRpYVBsYXliYWNrVGFyZ2V0TWFjLmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMDcyMEIwQTExNEQzMzIzNTAw
NjQyOTU1IC8qIEdlbmVyaWNFdmVudFF1ZXVlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSAwNzIwQjA5RjE0RDMzMjM1MDA2NDI5NTUgLyogR2VuZXJpY0V2
ZW50UXVldWUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OworCQkwNzI1RUZBOTIzOUFENzkzMDBBNTM4QTkgLyogTWVkaWFQbGF5ZXJQcml2YXRlLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwNzlGNUU0QjBGM0JF
QkVBMDA1RTA3ODIgLyogTWVkaWFQbGF5ZXJQcml2YXRlLmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMDcyNzdFNEQxN0QwMThDQzAwMTU1MzREIC8q
IEpTTWVkaWFTdHJlYW0uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDA3Mjc3RTQxMTdEMDE4Q0MwMDE1NTM0RCAvKiBKU01lZGlhU3RyZWFtLmggKi87IH07
CiAJCTA3Mjc3RTREMTdEMDE4Q0MwMDE1NTM0RSAvKiBKU0NhbnZhc0NhcHR1cmVNZWRpYVN0cmVh
bVRyYWNrLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAw
NzI3N0U0MTE3RDAxOENDMDAxNTUzNEUgLyogSlNDYW52YXNDYXB0dXJlTWVkaWFTdHJlYW1UcmFj
ay5oICovOyB9OwogCQkwNzI3N0U0RjE3RDAxOENDMDAxNTUzNEQgLyogSlNNZWRpYVN0cmVhbUF1
ZGlvRGVzdGluYXRpb25Ob2RlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSAwNzI3N0U0MzE3RDAxOENDMDAxNTUzNEQgLyogSlNNZWRpYVN0cmVhbUF1ZGlv
RGVzdGluYXRpb25Ob2RlLmggKi87IH07CkBAIC0zMTM3OSw2ICszMTM4MCw3IEBACiAJCQkJMDc3
QjY0MTMxQjk0RjEyRTAwM0U5QUQ1IC8qIE1lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJNb2NrLmgg
aW4gSGVhZGVycyAqLywKIAkJCQlFNDQ2MTNFNDBDRDY4MUEyMDBGQURBNzUgLyogTWVkaWFQbGF5
ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUNENTIwOUU0MUIwQkQ4MzgwMDc3MTg0RSAvKiBNZWRp
YVBsYXllckVudW1zLmggaW4gSGVhZGVycyAqLywKKwkJCQkwNzI1RUZBOTIzOUFENzkzMDBBNTM4
QTkgLyogTWVkaWFQbGF5ZXJQcml2YXRlLmggaW4gSGVhZGVycyAqLywKIAkJCQkwNzZGMEQwRTEy
QjgxOTI3MDBDMjZBQTQgLyogTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uLmggaW4gSGVh
ZGVycyAqLywKIAkJCQlERjlBRkQ3MjEzRkMzMUQ4MDAxNUZFQjcgLyogTWVkaWFQbGF5ZXJQcml2
YXRlQVZGb3VuZGF0aW9uT2JqQy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQ0RDOEI1QTMxODA0NjM0
NzAwMTZFNjg1IC8qIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQy5oIGluIEhl
YWRlcnMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Db250ZW50VHlw
ZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vQ29udGVudFR5cGUuaAppbmRleCBjODJiNWI3
MTk3YzllMTVkMWUyZjU0N2ZkNTY0MWZjNWY0ZWM1ZWNmLi41ODVhM2ZkNWE3ZWZkMWFiMzQ4ZDE0
ZjFmZjIxZTkwOWU2NjZjMjQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9D
b250ZW50VHlwZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0NvbnRlbnRUeXBlLmgK
QEAgLTMzLDggKzMzLDggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBDb250ZW50VHlw
ZSB7CiBwdWJsaWM6Ci0gICAgZXhwbGljaXQgQ29udGVudFR5cGUoU3RyaW5nJiYgdHlwZSk7Ci0g
ICAgZXhwbGljaXQgQ29udGVudFR5cGUoY29uc3QgU3RyaW5nJiB0eXBlKTsKKyAgICBXRUJDT1JF
X0VYUE9SVCBleHBsaWNpdCBDb250ZW50VHlwZShTdHJpbmcmJiB0eXBlKTsKKyAgICBXRUJDT1JF
X0VYUE9SVCBleHBsaWNpdCBDb250ZW50VHlwZShjb25zdCBTdHJpbmcmIHR5cGUpOwogICAgIENv
bnRlbnRUeXBlKCkgPSBkZWZhdWx0OwogCiAgICAgc3RhdGljIGNvbnN0IFN0cmluZyYgY29kZWNz
UGFyYW1ldGVyKCk7CkBAIC00OSw2ICs0OSwyMyBAQCBwdWJsaWM6CiAKICAgICBTdHJpbmcgdG9K
U09OU3RyaW5nKCkgY29uc3Q7CiAKKyAgICB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPgorICAgIHZv
aWQgZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0CisgICAgeworICAgICAgICBlbmNvZGVy
IDw8IG1fdHlwZTsKKyAgICB9CisKKyAgICB0ZW1wbGF0ZSA8Y2xhc3MgRGVjb2Rlcj4KKyAgICBz
dGF0aWMgT3B0aW9uYWw8Q29udGVudFR5cGU+IGRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQorICAg
IHsKKyAgICAgICAgT3B0aW9uYWw8U3RyaW5nPiB0eXBlOworICAgICAgICBkZWNvZGVyID4+IHR5
cGU7CisgICAgICAgIGlmICghdHlwZSkKKyAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7
CisKKyAgICAgICAgcmV0dXJuIHsgQ29udGVudFR5cGUoV1RGTW92ZSgqdHlwZSkpIH07CisgICAg
fQorCiBwcml2YXRlOgogICAgIFN0cmluZyBtX3R5cGU7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuY3BwCmluZGV4IGNlMjNhYjc4NGJjNmMy
YTE1ZmI4OTFkODE1Nzk1OWYxYzE2NGI1NGEuLmM3NDVjNDA2YzA2NGU2NGE0OTE4ZTA1N2QyNmVj
OTEwYjM3MGE3MzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L01lZGlhUGxheWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9N
ZWRpYVBsYXllci5jcHAKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA3
LTIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAy
MDA3LTIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCkBAIC05MCwxNCArOTAsNiBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKLSNpZiAhUkVMRUFTRV9MT0dfRElTQUJMRUQKLXN0YXRpYyBSZWZQdHI8TG9nZ2VyPiYgbnVs
bExvZ2dlcigpCi17Ci0gICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFJlZlB0cjxMb2dnZXI+PiBs
b2dnZXI7Ci0gICAgcmV0dXJuIGxvZ2dlcjsKLX0KLSNlbmRpZgotCiAvLyBhIG51bGwgcGxheWVy
IHRvIG1ha2UgTWVkaWFQbGF5ZXIgbG9naWMgc2ltcGxlcgogCiBjbGFzcyBOdWxsTWVkaWFQbGF5
ZXJQcml2YXRlIGZpbmFsIDogcHVibGljIE1lZGlhUGxheWVyUHJpdmF0ZUludGVyZmFjZSB7CkBA
IC0xNjYsOCArMTU4LDIyIEBAIHB1YmxpYzoKICAgICBib29sIGhhc1NpbmdsZVNlY3VyaXR5T3Jp
Z2luKCkgY29uc3QgZmluYWwgeyByZXR1cm4gdHJ1ZTsgfQogfTsKIAorI2lmICFSRUxFQVNFX0xP
R19ESVNBQkxFRAorc3RhdGljIFJlZlB0cjxMb2dnZXI+JiBudWxsTG9nZ2VyKCkKK3sKKyAgICBz
dGF0aWMgTmV2ZXJEZXN0cm95ZWQ8UmVmUHRyPExvZ2dlcj4+IGxvZ2dlcjsKKyAgICByZXR1cm4g
bG9nZ2VyOworfQorI2VuZGlmCisKK3N0YXRpYyBjb25zdCBWZWN0b3I8V2ViQ29yZTo6Q29udGVu
dFR5cGU+JiBudWxsQ29udGVudFR5cGVWZWN0b3IoKQoreworICAgIHN0YXRpYyBOZXZlckRlc3Ry
b3llZDxWZWN0b3I8V2ViQ29yZTo6Q29udGVudFR5cGU+PiB2ZWN0b3I7CisgICAgcmV0dXJuIHZl
Y3RvcjsKK30KKwogY2xhc3MgTnVsbE1lZGlhUGxheWVyQ2xpZW50IDogcHVibGljIE1lZGlhUGxh
eWVyQ2xpZW50IHsKLXB1YmxpYzoKK3ByaXZhdGU6CiAjaWYgIVJFTEVBU0VfTE9HX0RJU0FCTEVE
CiAgICAgY29uc3QgTG9nZ2VyJiBtZWRpYVBsYXllckxvZ2dlcigpIGZpbmFsCiAgICAgewpAQCAt
MTc5LDggKzE4NSwxMSBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiAqbnVsbExvZ2dlcigpLmdl
dCgpOwogICAgIH0KICNlbmRpZgorCisgICAgY29uc3QgVmVjdG9yPFdlYkNvcmU6OkNvbnRlbnRU
eXBlPiYgbWVkaWFDb250ZW50VHlwZXNSZXF1aXJpbmdIYXJkd2FyZVN1cHBvcnQoKSBjb25zdCBm
aW5hbCB7IHJldHVybiBudWxsQ29udGVudFR5cGVWZWN0b3IoKTsgfQogfTsKIAorCiBjb25zdCBW
ZWN0b3I8Q29udGVudFR5cGU+JiBNZWRpYVBsYXllckNsaWVudDo6bWVkaWFDb250ZW50VHlwZXNS
ZXF1aXJpbmdIYXJkd2FyZVN1cHBvcnQoKSBjb25zdAogewogICAgIHN0YXRpYyBOZXZlckRlc3Ry
b3llZDxWZWN0b3I8Q29udGVudFR5cGU+PiBjb250ZW50VHlwZXM7CkBAIC0xOTUsMTcgKzIwNCw3
IEBAIHN0YXRpYyBNZWRpYVBsYXllckNsaWVudCYgbnVsbE1lZGlhUGxheWVyQ2xpZW50KCkKIAog
Ly8gZW5naW5lIHN1cHBvcnQKIAotc3RydWN0IE1lZGlhUGxheWVyRmFjdG9yeSB7Ci0gICAgQ3Jl
YXRlTWVkaWFFbmdpbmVQbGF5ZXIgY29uc3RydWN0b3I7Ci0gICAgTWVkaWFFbmdpbmVTdXBwb3J0
ZWRUeXBlcyBnZXRTdXBwb3J0ZWRUeXBlczsKLSAgICBNZWRpYUVuZ2luZVN1cHBvcnRzVHlwZSBz
dXBwb3J0c1R5cGVBbmRDb2RlY3M7Ci0gICAgTWVkaWFFbmdpbmVPcmlnaW5zSW5NZWRpYUNhY2hl
IG9yaWdpbnNJbk1lZGlhQ2FjaGU7Ci0gICAgTWVkaWFFbmdpbmVDbGVhck1lZGlhQ2FjaGUgY2xl
YXJNZWRpYUNhY2hlOwotICAgIE1lZGlhRW5naW5lQ2xlYXJNZWRpYUNhY2hlRm9yT3JpZ2lucyBj
bGVhck1lZGlhQ2FjaGVGb3JPcmlnaW5zOwotICAgIE1lZGlhRW5naW5lU3VwcG9ydHNLZXlTeXN0
ZW0gc3VwcG9ydHNLZXlTeXN0ZW07Ci19OwotCi1zdGF0aWMgdm9pZCBhZGRNZWRpYUVuZ2luZShD
cmVhdGVNZWRpYUVuZ2luZVBsYXllciYmLCBNZWRpYUVuZ2luZVN1cHBvcnRlZFR5cGVzLCBNZWRp
YUVuZ2luZVN1cHBvcnRzVHlwZSwgTWVkaWFFbmdpbmVPcmlnaW5zSW5NZWRpYUNhY2hlLCBNZWRp
YUVuZ2luZUNsZWFyTWVkaWFDYWNoZSwgTWVkaWFFbmdpbmVDbGVhck1lZGlhQ2FjaGVGb3JPcmln
aW5zLCBNZWRpYUVuZ2luZVN1cHBvcnRzS2V5U3lzdGVtKTsKK3N0YXRpYyB2b2lkIGFkZE1lZGlh
RW5naW5lKHN0ZDo6dW5pcXVlX3B0cjxNZWRpYVBsYXllckZhY3Rvcnk+KTsKIAogc3RhdGljIExv
Y2sgbWVkaWFFbmdpbmVWZWN0b3JMb2NrOwogCkBAIC0yMTUsMjEgKzIxNCwzNyBAQCBzdGF0aWMg
Ym9vbCYgaGF2ZU1lZGlhRW5naW5lc1ZlY3RvcigpCiAgICAgcmV0dXJuIGhhdmVWZWN0b3I7CiB9
CiAKLXN0YXRpYyBWZWN0b3I8TWVkaWFQbGF5ZXJGYWN0b3J5PiYgbXV0YWJsZUluc3RhbGxlZE1l
ZGlhRW5naW5lc1ZlY3RvcigpCitzdGF0aWMgVmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxNZWRpYVBs
YXllckZhY3Rvcnk+PiYgbXV0YWJsZUluc3RhbGxlZE1lZGlhRW5naW5lc1ZlY3RvcigpCiB7Ci0g
ICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFZlY3RvcjxNZWRpYVBsYXllckZhY3Rvcnk+PiBpbnN0
YWxsZWRFbmdpbmVzOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxWZWN0b3I8c3RkOjp1bmlx
dWVfcHRyPE1lZGlhUGxheWVyRmFjdG9yeT4+PiBpbnN0YWxsZWRFbmdpbmVzOwogICAgIHJldHVy
biBpbnN0YWxsZWRFbmdpbmVzOwogfQogCitzdGF0aWMgUmVtb3RlTWVkaWFQbGF5ZXJTdXBwb3J0
OjpSZWdpc3RlclJlbW90ZVBsYXllckNhbGxiYWNrJiByZWdpc3RlclJlbW90ZVBsYXllckNhbGxi
YWNrKCkKK3sKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8UmVtb3RlTWVkaWFQbGF5ZXJTdXBw
b3J0OjpSZWdpc3RlclJlbW90ZVBsYXllckNhbGxiYWNrPiBjYWxsYmFjazsKKyAgICByZXR1cm4g
Y2FsbGJhY2s7Cit9CisKK3ZvaWQgUmVtb3RlTWVkaWFQbGF5ZXJTdXBwb3J0OjpzZXRSZWdpc3Rl
clJlbW90ZVBsYXllckNhbGxiYWNrKFJlZ2lzdGVyUmVtb3RlUGxheWVyQ2FsbGJhY2smJiBjYWxs
YmFjaykKK3sKKyAgICByZWdpc3RlclJlbW90ZVBsYXllckNhbGxiYWNrKCkgPSBXVEZNb3ZlKGNh
bGxiYWNrKTsKK30KKwogc3RhdGljIHZvaWQgYnVpbGRNZWRpYUVuZ2luZXNWZWN0b3IoKQogewog
ICAgIEFTU0VSVChtZWRpYUVuZ2luZVZlY3RvckxvY2suaXNMb2NrZWQoKSk7CiAKICNpZiBVU0Uo
QVZGT1VOREFUSU9OKQorICAgIGF1dG8mIHJlZ2lzdGVyUmVtb3RlRW5naW5lID0gcmVnaXN0ZXJS
ZW1vdGVQbGF5ZXJDYWxsYmFjaygpOworCiAgICAgaWYgKERlcHJlY2F0ZWRHbG9iYWxTZXR0aW5n
czo6aXNBVkZvdW5kYXRpb25FbmFibGVkKCkpIHsKIAogI2lmIFBMQVRGT1JNKENPQ09BKQotICAg
ICAgICBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpyZWdpc3Rlck1lZGlhRW5n
aW5lKGFkZE1lZGlhRW5naW5lKTsKKyAgICAgICAgaWYgKHJlZ2lzdGVyUmVtb3RlRW5naW5lKQor
ICAgICAgICAgICAgcmVnaXN0ZXJSZW1vdGVFbmdpbmUoYWRkTWVkaWFFbmdpbmUsIE1lZGlhUGxh
eWVyRW51bXM6Ok1lZGlhRW5naW5lSWRlbnRpZmllcjo6QVZGb3VuZGF0aW9uKTsKKyAgICAgICAg
ZWxzZQorICAgICAgICAgICAgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6cmVn
aXN0ZXJNZWRpYUVuZ2luZShhZGRNZWRpYUVuZ2luZSk7CiAjZW5kaWYKIAogI2lmIEVOQUJMRShN
RURJQV9TT1VSQ0UpCkBAIC0yNjUsNyArMjgwLDcgQEAgc3RhdGljIHZvaWQgYnVpbGRNZWRpYUVu
Z2luZXNWZWN0b3IoKQogICAgIGhhdmVNZWRpYUVuZ2luZXNWZWN0b3IoKSA9IHRydWU7CiB9CiAK
LXN0YXRpYyBjb25zdCBWZWN0b3I8TWVkaWFQbGF5ZXJGYWN0b3J5PiYgaW5zdGFsbGVkTWVkaWFF
bmdpbmVzKCkKK3N0YXRpYyBjb25zdCBWZWN0b3I8c3RkOjp1bmlxdWVfcHRyPE1lZGlhUGxheWVy
RmFjdG9yeT4+JiBpbnN0YWxsZWRNZWRpYUVuZ2luZXMoKQogewogICAgIHsKICAgICAgICAgYXV0
byBsb2NrZXIgPSBob2xkTG9jayhtZWRpYUVuZ2luZVZlY3RvckxvY2spOwpAQCAtMjc2LDE0ICsy
OTEsOSBAQCBzdGF0aWMgY29uc3QgVmVjdG9yPE1lZGlhUGxheWVyRmFjdG9yeT4mIGluc3RhbGxl
ZE1lZGlhRW5naW5lcygpCiAgICAgcmV0dXJuIG11dGFibGVJbnN0YWxsZWRNZWRpYUVuZ2luZXNW
ZWN0b3IoKTsKIH0KIAotc3RhdGljIHZvaWQgYWRkTWVkaWFFbmdpbmUoQ3JlYXRlTWVkaWFFbmdp
bmVQbGF5ZXImJiBjb25zdHJ1Y3RvciwgTWVkaWFFbmdpbmVTdXBwb3J0ZWRUeXBlcyBnZXRTdXBw
b3J0ZWRUeXBlcywgTWVkaWFFbmdpbmVTdXBwb3J0c1R5cGUgc3VwcG9ydHNUeXBlLAotICAgIE1l
ZGlhRW5naW5lT3JpZ2luc0luTWVkaWFDYWNoZSBvcmlnaW5zSW5NZWRpYUNhY2hlLCBNZWRpYUVu
Z2luZUNsZWFyTWVkaWFDYWNoZSBjbGVhck1lZGlhQ2FjaGUsIE1lZGlhRW5naW5lQ2xlYXJNZWRp
YUNhY2hlRm9yT3JpZ2lucyBjbGVhck1lZGlhQ2FjaGVGb3JPcmlnaW5zLCBNZWRpYUVuZ2luZVN1
cHBvcnRzS2V5U3lzdGVtIHN1cHBvcnRzS2V5U3lzdGVtKQorc3RhdGljIHZvaWQgYWRkTWVkaWFF
bmdpbmUoc3RkOjp1bmlxdWVfcHRyPE1lZGlhUGxheWVyRmFjdG9yeT4gZmFjdG9yeSkKIHsKLSAg
ICBBU1NFUlQoY29uc3RydWN0b3IpOwotICAgIEFTU0VSVChnZXRTdXBwb3J0ZWRUeXBlcyk7Ci0g
ICAgQVNTRVJUKHN1cHBvcnRzVHlwZSk7Ci0KLSAgICBtdXRhYmxlSW5zdGFsbGVkTWVkaWFFbmdp
bmVzVmVjdG9yKCkuYXBwZW5kKE1lZGlhUGxheWVyRmFjdG9yeSB7IFdURk1vdmUoY29uc3RydWN0
b3IpLCBnZXRTdXBwb3J0ZWRUeXBlcywgc3VwcG9ydHNUeXBlLCBvcmlnaW5zSW5NZWRpYUNhY2hl
LCBjbGVhck1lZGlhQ2FjaGUsIGNsZWFyTWVkaWFDYWNoZUZvck9yaWdpbnMsIHN1cHBvcnRzS2V5
U3lzdGVtIH0pOworICAgIG11dGFibGVJbnN0YWxsZWRNZWRpYUVuZ2luZXNWZWN0b3IoKS5hcHBl
bmQoV1RGTW92ZShmYWN0b3J5KSk7CiB9CiAKIHN0YXRpYyBjb25zdCBBdG9tU3RyaW5nJiBhcHBs
aWNhdGlvbk9jdGV0U3RyZWFtKCkKQEAgLTI5OCw2ICszMDgsMjEgQEAgc3RhdGljIGNvbnN0IEF0
b21TdHJpbmcmIHRleHRQbGFpbigpCiAgICAgcmV0dXJuIHRleHRQbGFpbjsKIH0KIAorY29uc3Qg
TWVkaWFQbGF5ZXJGYWN0b3J5KiBNZWRpYVBsYXllcjo6bWVkaWFFbmdpbmUoTWVkaWFQbGF5ZXJF
bnVtczo6TWVkaWFFbmdpbmVJZGVudGlmaWVyIGlkZW50aWZpZXIpCit7CisgICAgYXV0byYgZW5n
aW5lcyA9IGluc3RhbGxlZE1lZGlhRW5naW5lcygpOworICAgIGF1dG8gY3VycmVudEluZGV4ID0g
ZW5naW5lcy5maW5kTWF0Y2hpbmcoW2lkZW50aWZpZXJdIChhdXRvJiBlbmdpbmUpIHsKKyAgICAg
ICAgcmV0dXJuIGVuZ2luZS0+aWRlbnRpZmllcigpID09IGlkZW50aWZpZXI7CisgICAgfSk7CisK
KyAgICBpZiAoY3VycmVudEluZGV4ID09IG5vdEZvdW5kKSB7CisgICAgICAgIEFTU0VSVF9OT1Rf
UkVBQ0hFRCgpOworICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICB9CisKKyAgICByZXR1cm4g
ZW5naW5lc1tjdXJyZW50SW5kZXhdLmdldCgpOworfQorCiBzdGF0aWMgY29uc3QgTWVkaWFQbGF5
ZXJGYWN0b3J5KiBiZXN0TWVkaWFFbmdpbmVGb3JTdXBwb3J0UGFyYW1ldGVycyhjb25zdCBNZWRp
YUVuZ2luZVN1cHBvcnRQYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzLCBjb25zdCBNZWRpYVBsYXllckZh
Y3RvcnkqIGN1cnJlbnQgPSBudWxscHRyKQogewogICAgIGlmIChwYXJhbWV0ZXJzLnR5cGUuaXNF
bXB0eSgpICYmICFwYXJhbWV0ZXJzLmlzTWVkaWFTb3VyY2UgJiYgIXBhcmFtZXRlcnMuaXNNZWRp
YVN0cmVhbSkKQEAgLTMxNSwzNCArMzQwLDQ2IEBAIHN0YXRpYyBjb25zdCBNZWRpYVBsYXllckZh
Y3RvcnkqIGJlc3RNZWRpYUVuZ2luZUZvclN1cHBvcnRQYXJhbWV0ZXJzKGNvbnN0IE1lZGlhCiAg
ICAgTWVkaWFQbGF5ZXI6OlN1cHBvcnRzVHlwZSBzdXBwb3J0ZWQgPSBNZWRpYVBsYXllcjo6U3Vw
cG9ydHNUeXBlOjpJc05vdFN1cHBvcnRlZDsKICAgICBmb3IgKGF1dG8mIGVuZ2luZSA6IGluc3Rh
bGxlZE1lZGlhRW5naW5lcygpKSB7CiAgICAgICAgIGlmIChjdXJyZW50KSB7Ci0gICAgICAgICAg
ICBpZiAoY3VycmVudCA9PSAmZW5naW5lKQorICAgICAgICAgICAgaWYgKGN1cnJlbnQgPT0gZW5n
aW5lLmdldCgpKQogICAgICAgICAgICAgICAgIGN1cnJlbnQgPSBudWxscHRyOwogICAgICAgICAg
ICAgY29udGludWU7CiAgICAgICAgIH0KLSAgICAgICAgTWVkaWFQbGF5ZXI6OlN1cHBvcnRzVHlw
ZSBlbmdpbmVTdXBwb3J0ID0gZW5naW5lLnN1cHBvcnRzVHlwZUFuZENvZGVjcyhwYXJhbWV0ZXJz
KTsKKyAgICAgICAgTWVkaWFQbGF5ZXI6OlN1cHBvcnRzVHlwZSBlbmdpbmVTdXBwb3J0ID0gZW5n
aW5lLT5zdXBwb3J0c1R5cGVBbmRDb2RlY3MocGFyYW1ldGVycyk7CiAgICAgICAgIGlmIChlbmdp
bmVTdXBwb3J0ID4gc3VwcG9ydGVkKSB7CiAgICAgICAgICAgICBzdXBwb3J0ZWQgPSBlbmdpbmVT
dXBwb3J0OwotICAgICAgICAgICAgZm91bmRFbmdpbmUgPSAmZW5naW5lOworICAgICAgICAgICAg
Zm91bmRFbmdpbmUgPSBlbmdpbmUuZ2V0KCk7CiAgICAgICAgIH0KICAgICB9CiAKICAgICByZXR1
cm4gZm91bmRFbmdpbmU7CiB9CiAKLXN0YXRpYyBjb25zdCBNZWRpYVBsYXllckZhY3RvcnkqIG5l
eHRNZWRpYUVuZ2luZShjb25zdCBNZWRpYVBsYXllckZhY3RvcnkqIGN1cnJlbnQpCitjb25zdCBN
ZWRpYVBsYXllckZhY3RvcnkqIE1lZGlhUGxheWVyOjpuZXh0TWVkaWFFbmdpbmUoY29uc3QgTWVk
aWFQbGF5ZXJGYWN0b3J5KiBjdXJyZW50KQogeworICAgIGlmIChtX2FjdGl2ZUVuZ2luZUlkZW50
aWZpZXIpIHsKKyAgICAgICAgYXV0byogZW5naW5lID0gbWVkaWFFbmdpbmUobV9hY3RpdmVFbmdp
bmVJZGVudGlmaWVyLnZhbHVlKCkpOworICAgICAgICByZXR1cm4gY3VycmVudCAhPSBlbmdpbmUg
PyBlbmdpbmUgOiBudWxscHRyOworICAgIH0KKwogICAgIGF1dG8mIGVuZ2luZXMgPSBpbnN0YWxs
ZWRNZWRpYUVuZ2luZXMoKTsKICAgICBpZiAoZW5naW5lcy5pc0VtcHR5KCkpCiAgICAgICAgIHJl
dHVybiBudWxscHRyOwogCiAgICAgaWYgKCFjdXJyZW50KSAKLSAgICAgICAgcmV0dXJuICZlbmdp
bmVzLmZpcnN0KCk7CisgICAgICAgIHJldHVybiBlbmdpbmVzLmZpcnN0KCkuZ2V0KCk7CisKKyAg
ICBhdXRvIGN1cnJlbnRJbmRleCA9IGVuZ2luZXMuZmluZE1hdGNoaW5nKFtjdXJyZW50XSAoYXV0
byYgZW5naW5lKSB7CisgICAgICAgIHJldHVybiBlbmdpbmUuZ2V0KCkgPT0gY3VycmVudDsKKyAg
ICB9KTsKKyAgICBpZiAoY3VycmVudEluZGV4ID09IG5vdEZvdW5kKSB7CisgICAgICAgIEFTU0VS
VF9OT1RfUkVBQ0hFRCgpOworICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICB9CiAKLSAgICBz
aXplX3QgY3VycmVudEluZGV4ID0gY3VycmVudCAtICZlbmdpbmVzLmZpcnN0KCk7CiAgICAgaWYg
KGN1cnJlbnRJbmRleCArIDEgPj0gZW5naW5lcy5zaXplKCkpCiAgICAgICAgIHJldHVybiBudWxs
cHRyOwogCi0gICAgcmV0dXJuICZlbmdpbmVzW2N1cnJlbnRJbmRleCArIDFdOworICAgIHJldHVy
biBlbmdpbmVzW2N1cnJlbnRJbmRleCArIDFdLmdldCgpOwogfQogCiAvLyBtZWRpYSBwbGF5ZXIK
QEAgLTM1Miw2ICszODksMTMgQEAgUmVmPE1lZGlhUGxheWVyPiBNZWRpYVBsYXllcjo6Y3JlYXRl
KE1lZGlhUGxheWVyQ2xpZW50JiBjbGllbnQpCiAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgTWVk
aWFQbGF5ZXIoY2xpZW50KSk7CiB9CiAKK1JlZjxNZWRpYVBsYXllcj4gTWVkaWFQbGF5ZXI6OmNy
ZWF0ZShNZWRpYVBsYXllckNsaWVudCYgY2xpZW50LCBNZWRpYVBsYXllckVudW1zOjpNZWRpYUVu
Z2luZUlkZW50aWZpZXIgbWVkaWFFbmdpbmVJZGVudGlmaWVyKQoreworICAgIHJldHVybiBhZG9w
dFJlZigqbmV3IE1lZGlhUGxheWVyKGNsaWVudCwgbWVkaWFFbmdpbmVJZGVudGlmaWVyKSk7Cit9
CisKKworCiBNZWRpYVBsYXllcjo6TWVkaWFQbGF5ZXIoTWVkaWFQbGF5ZXJDbGllbnQmIGNsaWVu
dCkKICAgICA6IG1fY2xpZW50KCZjbGllbnQpCiAgICAgLCBtX3JlbG9hZFRpbWVyKCp0aGlzLCAm
TWVkaWFQbGF5ZXI6OnJlbG9hZFRpbWVyRmlyZWQpCkBAIC0zNTksNiArNDAzLDE0IEBAIE1lZGlh
UGxheWVyOjpNZWRpYVBsYXllcihNZWRpYVBsYXllckNsaWVudCYgY2xpZW50KQogewogfQogCitN
ZWRpYVBsYXllcjo6TWVkaWFQbGF5ZXIoTWVkaWFQbGF5ZXJDbGllbnQmIGNsaWVudCwgTWVkaWFQ
bGF5ZXJFbnVtczo6TWVkaWFFbmdpbmVJZGVudGlmaWVyIG1lZGlhRW5naW5lSWRlbnRpZmllcikK
KyAgICA6IG1fY2xpZW50KCZjbGllbnQpCisgICAgLCBtX3JlbG9hZFRpbWVyKCp0aGlzLCAmTWVk
aWFQbGF5ZXI6OnJlbG9hZFRpbWVyRmlyZWQpCisgICAgLCBtX3ByaXZhdGUobWFrZVVuaXF1ZTxO
dWxsTWVkaWFQbGF5ZXJQcml2YXRlPih0aGlzKSkKKyAgICAsIG1fYWN0aXZlRW5naW5lSWRlbnRp
ZmllcihtZWRpYUVuZ2luZUlkZW50aWZpZXIpCit7Cit9CisKIE1lZGlhUGxheWVyOjp+TWVkaWFQ
bGF5ZXIoKQogewogICAgIEFTU0VSVCghbV9pbml0aWFsaXppbmdNZWRpYUVuZ2luZSk7CkBAIC00
NDEsNyArNDkzLDcgQEAgYm9vbCBNZWRpYVBsYXllcjo6bG9hZChNZWRpYVN0cmVhbVByaXZhdGUm
IG1lZGlhU3RyZWFtKQogfQogI2VuZGlmCiAKLWNvbnN0IE1lZGlhUGxheWVyRmFjdG9yeSogTWVk
aWFQbGF5ZXI6Om5leHRCZXN0TWVkaWFFbmdpbmUoY29uc3QgTWVkaWFQbGF5ZXJGYWN0b3J5KiBj
dXJyZW50KSBjb25zdAorY29uc3QgTWVkaWFQbGF5ZXJGYWN0b3J5KiBNZWRpYVBsYXllcjo6bmV4
dEJlc3RNZWRpYUVuZ2luZShjb25zdCBNZWRpYVBsYXllckZhY3RvcnkqIGN1cnJlbnQpCiB7CiAg
ICAgTWVkaWFFbmdpbmVTdXBwb3J0UGFyYW1ldGVycyBwYXJhbWV0ZXJzOwogICAgIHBhcmFtZXRl
cnMudHlwZSA9IG1fY29udGVudFR5cGU7CkBAIC00NTMsNiArNTA1LDE3IEBAIGNvbnN0IE1lZGlh
UGxheWVyRmFjdG9yeSogTWVkaWFQbGF5ZXI6Om5leHRCZXN0TWVkaWFFbmdpbmUoY29uc3QgTWVk
aWFQbGF5ZXJGYWN0CiAgICAgcGFyYW1ldGVycy5pc01lZGlhU3RyZWFtID0gISFtX21lZGlhU3Ry
ZWFtOwogI2VuZGlmCiAKKyAgICBpZiAobV9hY3RpdmVFbmdpbmVJZGVudGlmaWVyKSB7CisgICAg
ICAgIGlmIChjdXJyZW50KQorICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICAgICAg
YXV0byogZW5naW5lID0gbWVkaWFFbmdpbmUobV9hY3RpdmVFbmdpbmVJZGVudGlmaWVyLnZhbHVl
KCkpOworICAgICAgICBpZiAoZW5naW5lICYmIGVuZ2luZS0+c3VwcG9ydHNUeXBlQW5kQ29kZWNz
KHBhcmFtZXRlcnMpICE9IFN1cHBvcnRzVHlwZTo6SXNOb3RTdXBwb3J0ZWQpCisgICAgICAgICAg
ICByZXR1cm4gZW5naW5lOworCisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIH0KKwogICAg
IHJldHVybiBiZXN0TWVkaWFFbmdpbmVGb3JTdXBwb3J0UGFyYW1ldGVycyhwYXJhbWV0ZXJzLCBj
dXJyZW50KTsKIH0KIApAQCAtNDg5LDEzICs1NTIsMTUgQEAgdm9pZCBNZWRpYVBsYXllcjo6bG9h
ZFdpdGhOZXh0TWVkaWFFbmdpbmUoY29uc3QgTWVkaWFQbGF5ZXJGYWN0b3J5KiBjdXJyZW50KQog
ICAgICAgICBtX3ByaXZhdGUgPSBudWxscHRyOwogICAgIH0gZWxzZSBpZiAobV9jdXJyZW50TWVk
aWFFbmdpbmUgIT0gZW5naW5lKSB7CiAgICAgICAgIG1fY3VycmVudE1lZGlhRW5naW5lID0gZW5n
aW5lOwotICAgICAgICBtX3ByaXZhdGUgPSBlbmdpbmUtPmNvbnN0cnVjdG9yKHRoaXMpOwotICAg
ICAgICBjbGllbnQoKS5tZWRpYVBsYXllckVuZ2luZVVwZGF0ZWQoKTsKLSAgICAgICAgbV9wcml2
YXRlLT5zZXRQcml2YXRlQnJvd3NpbmdNb2RlKG1fcHJpdmF0ZUJyb3dzaW5nKTsKLSAgICAgICAg
bV9wcml2YXRlLT5zZXRQcmVsb2FkKG1fcHJlbG9hZCk7Ci0gICAgICAgIG1fcHJpdmF0ZS0+c2V0
UHJlc2VydmVzUGl0Y2gocHJlc2VydmVzUGl0Y2goKSk7Ci0gICAgICAgIGlmIChtX3Nob3VsZFBy
ZXBhcmVUb1JlbmRlcikKLSAgICAgICAgICAgIG1fcHJpdmF0ZS0+cHJlcGFyZUZvclJlbmRlcmlu
ZygpOworICAgICAgICBtX3ByaXZhdGUgPSBlbmdpbmUtPmNyZWF0ZU1lZGlhRW5naW5lUGxheWVy
KHRoaXMpOworICAgICAgICBpZiAobV9wcml2YXRlKSB7CisgICAgICAgICAgICBjbGllbnQoKS5t
ZWRpYVBsYXllckVuZ2luZVVwZGF0ZWQoKTsKKyAgICAgICAgICAgIG1fcHJpdmF0ZS0+c2V0UHJp
dmF0ZUJyb3dzaW5nTW9kZShtX3ByaXZhdGVCcm93c2luZyk7CisgICAgICAgICAgICBtX3ByaXZh
dGUtPnNldFByZWxvYWQobV9wcmVsb2FkKTsKKyAgICAgICAgICAgIG1fcHJpdmF0ZS0+c2V0UHJl
c2VydmVzUGl0Y2gocHJlc2VydmVzUGl0Y2goKSk7CisgICAgICAgICAgICBpZiAobV9zaG91bGRQ
cmVwYXJlVG9SZW5kZXIpCisgICAgICAgICAgICAgICAgbV9wcml2YXRlLT5wcmVwYXJlRm9yUmVu
ZGVyaW5nKCk7CisgICAgICAgIH0KICAgICB9CiAKICAgICBpZiAobV9wcml2YXRlKSB7CkBAIC01
MTIsOCArNTc3LDEyIEBAIHZvaWQgTWVkaWFQbGF5ZXI6OmxvYWRXaXRoTmV4dE1lZGlhRW5naW5l
KGNvbnN0IE1lZGlhUGxheWVyRmFjdG9yeSogY3VycmVudCkKICAgICAgICAgbV9wcml2YXRlLT5s
b2FkKG1fdXJsLnN0cmluZygpKTsKICAgICB9IGVsc2UgewogICAgICAgICBtX3ByaXZhdGUgPSBt
YWtlVW5pcXVlPE51bGxNZWRpYVBsYXllclByaXZhdGU+KHRoaXMpOwotICAgICAgICBjbGllbnQo
KS5tZWRpYVBsYXllckVuZ2luZVVwZGF0ZWQoKTsKLSAgICAgICAgY2xpZW50KCkubWVkaWFQbGF5
ZXJSZXNvdXJjZU5vdFN1cHBvcnRlZCgpOworICAgICAgICBpZiAoIW1fYWN0aXZlRW5naW5lSWRl
bnRpZmllciAmJiBpbnN0YWxsZWRNZWRpYUVuZ2luZXMoKS5zaXplKCkgPiAxICYmIG5leHRCZXN0
TWVkaWFFbmdpbmUobV9jdXJyZW50TWVkaWFFbmdpbmUpKQorICAgICAgICAgICAgbV9yZWxvYWRU
aW1lci5zdGFydE9uZVNob3QoMF9zKTsKKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBjbGll
bnQoKS5tZWRpYVBsYXllckVuZ2luZVVwZGF0ZWQoKTsKKyAgICAgICAgICAgIGNsaWVudCgpLm1l
ZGlhUGxheWVyUmVzb3VyY2VOb3RTdXBwb3J0ZWQoKTsKKyAgICAgICAgfQogICAgIH0KIAogICAg
IG1faW5pdGlhbGl6aW5nTWVkaWFFbmdpbmUgPSBmYWxzZTsKQEAgLTkyOSw3ICs5OTgsNyBAQCB2
b2lkIE1lZGlhUGxheWVyOjpnZXRTdXBwb3J0ZWRUeXBlcyhIYXNoU2V0PFN0cmluZywgQVNDSUlD
YXNlSW5zZW5zaXRpdmVIYXNoPiYgdAogewogICAgIGZvciAoYXV0byYgZW5naW5lIDogaW5zdGFs
bGVkTWVkaWFFbmdpbmVzKCkpIHsKICAgICAgICAgSGFzaFNldDxTdHJpbmcsIEFTQ0lJQ2FzZUlu
c2Vuc2l0aXZlSGFzaD4gZW5naW5lVHlwZXM7Ci0gICAgICAgIGVuZ2luZS5nZXRTdXBwb3J0ZWRU
eXBlcyhlbmdpbmVUeXBlcyk7CisgICAgICAgIGVuZ2luZS0+Z2V0U3VwcG9ydGVkVHlwZXMoZW5n
aW5lVHlwZXMpOwogICAgICAgICB0eXBlcy5hZGQoZW5naW5lVHlwZXMuYmVnaW4oKSwgZW5naW5l
VHlwZXMuZW5kKCkpOwogICAgIH0KIH0gCkBAIC0xMTI1LDM0ICsxMTk0LDI4IEBAIHN0YXRpYyB2
b2lkIGFkZFRvSGFzaChIYXNoU2V0PFQ+JiB0b0hhc2gsIEhhc2hTZXQ8VD4mJiBmcm9tSGFzaCkK
IEhhc2hTZXQ8UmVmUHRyPFNlY3VyaXR5T3JpZ2luPj4gTWVkaWFQbGF5ZXI6Om9yaWdpbnNJbk1l
ZGlhQ2FjaGUoY29uc3QgU3RyaW5nJiBwYXRoKQogewogICAgIEhhc2hTZXQ8UmVmUHRyPFNlY3Vy
aXR5T3JpZ2luPj4gb3JpZ2luczsKLSAgICBmb3IgKGF1dG8mIGVuZ2luZSA6IGluc3RhbGxlZE1l
ZGlhRW5naW5lcygpKSB7Ci0gICAgICAgIGlmICghZW5naW5lLm9yaWdpbnNJbk1lZGlhQ2FjaGUp
Ci0gICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgYWRkVG9IYXNoKG9yaWdpbnMsIGVuZ2lu
ZS5vcmlnaW5zSW5NZWRpYUNhY2hlKHBhdGgpKTsKLSAgICB9CisgICAgZm9yIChhdXRvJiBlbmdp
bmUgOiBpbnN0YWxsZWRNZWRpYUVuZ2luZXMoKSkKKyAgICAgICAgYWRkVG9IYXNoKG9yaWdpbnMs
IGVuZ2luZS0+b3JpZ2luc0luTWVkaWFDYWNoZShwYXRoKSk7CisKICAgICByZXR1cm4gb3JpZ2lu
czsKIH0KIAogdm9pZCBNZWRpYVBsYXllcjo6Y2xlYXJNZWRpYUNhY2hlKGNvbnN0IFN0cmluZyYg
cGF0aCwgV2FsbFRpbWUgbW9kaWZpZWRTaW5jZSkKIHsKLSAgICBmb3IgKGF1dG8mIGVuZ2luZSA6
IGluc3RhbGxlZE1lZGlhRW5naW5lcygpKSB7Ci0gICAgICAgIGlmIChlbmdpbmUuY2xlYXJNZWRp
YUNhY2hlKQotICAgICAgICAgICAgZW5naW5lLmNsZWFyTWVkaWFDYWNoZShwYXRoLCBtb2RpZmll
ZFNpbmNlKTsKLSAgICB9CisgICAgZm9yIChhdXRvJiBlbmdpbmUgOiBpbnN0YWxsZWRNZWRpYUVu
Z2luZXMoKSkKKyAgICAgICAgZW5naW5lLT5jbGVhck1lZGlhQ2FjaGUocGF0aCwgbW9kaWZpZWRT
aW5jZSk7CiB9CiAKIHZvaWQgTWVkaWFQbGF5ZXI6OmNsZWFyTWVkaWFDYWNoZUZvck9yaWdpbnMo
Y29uc3QgU3RyaW5nJiBwYXRoLCBjb25zdCBIYXNoU2V0PFJlZlB0cjxTZWN1cml0eU9yaWdpbj4+
JiBvcmlnaW5zKQogewotICAgIGZvciAoYXV0byYgZW5naW5lIDogaW5zdGFsbGVkTWVkaWFFbmdp
bmVzKCkpIHsKLSAgICAgICAgaWYgKGVuZ2luZS5jbGVhck1lZGlhQ2FjaGVGb3JPcmlnaW5zKQot
ICAgICAgICAgICAgZW5naW5lLmNsZWFyTWVkaWFDYWNoZUZvck9yaWdpbnMocGF0aCwgb3JpZ2lu
cyk7Ci0gICAgfQorICAgIGZvciAoYXV0byYgZW5naW5lIDogaW5zdGFsbGVkTWVkaWFFbmdpbmVz
KCkpCisgICAgICAgIGVuZ2luZS0+Y2xlYXJNZWRpYUNhY2hlRm9yT3JpZ2lucyhwYXRoLCBvcmln
aW5zKTsKIH0KIAogYm9vbCBNZWRpYVBsYXllcjo6c3VwcG9ydHNLZXlTeXN0ZW0oY29uc3QgU3Ry
aW5nJiBrZXlTeXN0ZW0sIGNvbnN0IFN0cmluZyYgbWltZVR5cGUpCiB7CiAgICAgZm9yIChhdXRv
JiBlbmdpbmUgOiBpbnN0YWxsZWRNZWRpYUVuZ2luZXMoKSkgewotICAgICAgICBpZiAoZW5naW5l
LnN1cHBvcnRzS2V5U3lzdGVtICYmIGVuZ2luZS5zdXBwb3J0c0tleVN5c3RlbShrZXlTeXN0ZW0s
IG1pbWVUeXBlKSkKKyAgICAgICAgaWYgKGVuZ2luZS0+c3VwcG9ydHNLZXlTeXN0ZW0oa2V5U3lz
dGVtLCBtaW1lVHlwZSkpCiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAgICAgcmV0
dXJuIGZhbHNlOwpAQCAtMTE3Miw3ICsxMjM1LDcgQEAgdm9pZCBNZWRpYVBsYXllcjo6bmV0d29y
a1N0YXRlQ2hhbmdlZCgpCiAgICAgLy8gbGV0IHRoZSBuZXh0IGVuZ2luZSB0cnkuCiAgICAgaWYg
KG1fcHJpdmF0ZS0+bmV0d29ya1N0YXRlKCkgPj0gTWVkaWFQbGF5ZXI6Ok5ldHdvcmtTdGF0ZTo6
Rm9ybWF0RXJyb3IgJiYgbV9wcml2YXRlLT5yZWFkeVN0YXRlKCkgPCBNZWRpYVBsYXllcjo6UmVh
ZHlTdGF0ZTo6SGF2ZU1ldGFkYXRhKSB7CiAgICAgICAgIGNsaWVudCgpLm1lZGlhUGxheWVyRW5n
aW5lRmFpbGVkVG9Mb2FkKCk7Ci0gICAgICAgIGlmIChpbnN0YWxsZWRNZWRpYUVuZ2luZXMoKS5z
aXplKCkgPiAxICYmIChtX2NvbnRlbnRUeXBlLmlzRW1wdHkoKSB8fCBuZXh0QmVzdE1lZGlhRW5n
aW5lKG1fY3VycmVudE1lZGlhRW5naW5lKSkpIHsKKyAgICAgICAgaWYgKCFtX2FjdGl2ZUVuZ2lu
ZUlkZW50aWZpZXIgJiYgaW5zdGFsbGVkTWVkaWFFbmdpbmVzKCkuc2l6ZSgpID4gMSAmJiAobV9j
b250ZW50VHlwZS5pc0VtcHR5KCkgfHwgbmV4dEJlc3RNZWRpYUVuZ2luZShtX2N1cnJlbnRNZWRp
YUVuZ2luZSkpKSB7CiAgICAgICAgICAgICBtX3JlbG9hZFRpbWVyLnN0YXJ0T25lU2hvdCgwX3Mp
OwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuaAppbmRleCA4YTdiMWU5YmZkNzg3ZjUxMzA1MmI1
Njg4MzQ1OTQ0MGRmOWQxYjE3Li5lMzIxMzlhMTVkODBkZjhhMTJiZDkxOTdmYmY1NTRlYmZiYjg5
ZjAxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBs
YXllci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVy
LmgKQEAgLTY3LDYgKzY3LDcgQEAgY2xhc3MgSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZTsKIGNsYXNz
IExlZ2FjeUNETVNlc3Npb25DbGllbnQ7CiBjbGFzcyBNZWRpYVBsYXliYWNrVGFyZ2V0OwogY2xh
c3MgTWVkaWFQbGF5ZXI7CitjbGFzcyBNZWRpYVBsYXllckZhY3Rvcnk7CiBjbGFzcyBNZWRpYVBs
YXllclByaXZhdGVJbnRlcmZhY2U7CiBjbGFzcyBNZWRpYVBsYXllclJlcXVlc3RJbnN0YWxsTWlz
c2luZ1BsdWdpbnNDYWxsYmFjazsKIGNsYXNzIE1lZGlhU291cmNlUHJpdmF0ZUNsaWVudDsKQEAg
LTc2LDcgKzc3LDYgQEAgY2xhc3MgVGV4dFRyYWNrUmVwcmVzZW50YXRpb247CiAKIHN0cnVjdCBD
b29raWU7CiBzdHJ1Y3QgR3JhcGhpY3NEZXZpY2VBZGFwdGVyOwotc3RydWN0IE1lZGlhUGxheWVy
RmFjdG9yeTsKIAogc3RydWN0IE1lZGlhRW5naW5lU3VwcG9ydFBhcmFtZXRlcnMgewogICAgIENv
bnRlbnRUeXBlIHR5cGU7CkBAIC04NCw2ICs4NCw0OCBAQCBzdHJ1Y3QgTWVkaWFFbmdpbmVTdXBw
b3J0UGFyYW1ldGVycyB7CiAgICAgYm9vbCBpc01lZGlhU291cmNlIHsgZmFsc2UgfTsKICAgICBi
b29sIGlzTWVkaWFTdHJlYW0geyBmYWxzZSB9OwogICAgIFZlY3RvcjxDb250ZW50VHlwZT4gY29u
dGVudFR5cGVzUmVxdWlyaW5nSGFyZHdhcmVTdXBwb3J0OworCisjaWYgRU5BQkxFKEdQVV9QUk9D
RVNTKQorICAgIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+CisgICAgdm9pZCBlbmNvZGUoRW5jb2Rl
ciYgZW5jb2RlcikgY29uc3QKKyAgICB7CisgICAgICAgIGVuY29kZXIgPDwgdHlwZTsKKyAgICAg
ICAgZW5jb2RlciA8PCB1cmw7CisgICAgICAgIGVuY29kZXIgPDwgaXNNZWRpYVNvdXJjZTsKKyAg
ICAgICAgZW5jb2RlciA8PCBjb250ZW50VHlwZXNSZXF1aXJpbmdIYXJkd2FyZVN1cHBvcnQ7Cisg
ICAgfQorCisgICAgdGVtcGxhdGUgPGNsYXNzIERlY29kZXI+CisgICAgc3RhdGljIE9wdGlvbmFs
PE1lZGlhRW5naW5lU3VwcG9ydFBhcmFtZXRlcnM+IGRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQor
ICAgIHsKKyAgICAgICAgT3B0aW9uYWw8Q29udGVudFR5cGU+IHR5cGU7CisgICAgICAgIGRlY29k
ZXIgPj4gdHlwZTsKKyAgICAgICAgaWYgKCF0eXBlKQorICAgICAgICAgICAgcmV0dXJuIFdURjo6
bnVsbG9wdDsKKworICAgICAgICBPcHRpb25hbDxVUkw+IHVybDsKKyAgICAgICAgZGVjb2RlciA+
PiB1cmw7CisgICAgICAgIGlmICghdXJsKQorICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9w
dDsKKworICAgICAgICBPcHRpb25hbDxib29sPiBpc01lZGlhU291cmNlOworICAgICAgICBkZWNv
ZGVyID4+IGlzTWVkaWFTb3VyY2U7CisgICAgICAgIGlmICghaXNNZWRpYVNvdXJjZSkKKyAgICAg
ICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisKKyAgICAgICAgT3B0aW9uYWw8Ym9vbD4gaXNN
ZWRpYVN0cmVhbTsKKyAgICAgICAgZGVjb2RlciA+PiBpc01lZGlhU3RyZWFtOworICAgICAgICBp
ZiAoIWlzTWVkaWFTdHJlYW0pCisgICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworCisg
ICAgICAgIE9wdGlvbmFsPFZlY3RvcjxDb250ZW50VHlwZT4+IHR5cGVzUmVxdWlyaW5nSGFyZHdh
cmU7CisgICAgICAgIGRlY29kZXIgPj4gdHlwZXNSZXF1aXJpbmdIYXJkd2FyZTsKKyAgICAgICAg
aWYgKCF0eXBlc1JlcXVpcmluZ0hhcmR3YXJlKQorICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVs
bG9wdDsKKworICAgICAgICByZXR1cm4ge3sgV1RGTW92ZSgqdHlwZSksIFdURk1vdmUoKnVybCks
IFdURk1vdmUoKmlzTWVkaWFTb3VyY2UpLCBXVEZNb3ZlKCppc01lZGlhU3RyZWFtKSwgV1RGTW92
ZSgqdHlwZXNSZXF1aXJpbmdIYXJkd2FyZSkgfX07CisgICAgfQorI2VuZGlmCiB9OwogCiBzdHJ1
Y3QgVmlkZW9QbGF5YmFja1F1YWxpdHlNZXRyaWNzIHsKQEAgLTIzNSw3ICsyNzcsNyBAQCBwdWJs
aWM6CiAjZW5kaWYKIAogICAgIHZpcnR1YWwgYm9vbCBtZWRpYVBsYXllclNob3VsZERpc2FibGVT
bGVlcCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgdmlydHVhbCBjb25zdCBWZWN0b3I8
Q29udGVudFR5cGU+JiBtZWRpYUNvbnRlbnRUeXBlc1JlcXVpcmluZ0hhcmR3YXJlU3VwcG9ydCgp
IGNvbnN0OworICAgIHZpcnR1YWwgY29uc3QgVmVjdG9yPENvbnRlbnRUeXBlPiYgbWVkaWFDb250
ZW50VHlwZXNSZXF1aXJpbmdIYXJkd2FyZVN1cHBvcnQoKSBjb25zdCA9IDA7CiAgICAgdmlydHVh
bCBib29sIG1lZGlhUGxheWVyU2hvdWxkQ2hlY2tIYXJkd2FyZVN1cHBvcnQoKSBjb25zdCB7IHJl
dHVybiBmYWxzZTsgfQogCiAjaWYgIVJFTEVBU0VfTE9HX0RJU0FCTEVECkBAIC0yNDQsMTUgKzI4
NiwxOCBAQCBwdWJsaWM6CiAjZW5kaWYKIH07CiAKLWNsYXNzIE1lZGlhUGxheWVyIDogcHVibGlj
IE1lZGlhUGxheWVyRW51bXMsIHB1YmxpYyBSZWZDb3VudGVkPE1lZGlhUGxheWVyPiB7CitjbGFz
cyBXRUJDT1JFX0VYUE9SVCBNZWRpYVBsYXllciA6IHB1YmxpYyBNZWRpYVBsYXllckVudW1zLCBw
dWJsaWMgUmVmQ291bnRlZDxNZWRpYVBsYXllcj4gewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxF
KE1lZGlhUGxheWVyKTsgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgc3Rh
dGljIFJlZjxNZWRpYVBsYXllcj4gY3JlYXRlKE1lZGlhUGxheWVyQ2xpZW50Jik7CisgICAgc3Rh
dGljIFJlZjxNZWRpYVBsYXllcj4gY3JlYXRlKE1lZGlhUGxheWVyQ2xpZW50JiwgTWVkaWFQbGF5
ZXJFbnVtczo6TWVkaWFFbmdpbmVJZGVudGlmaWVyKTsKICAgICB2aXJ0dWFsIH5NZWRpYVBsYXll
cigpOwogCiAgICAgdm9pZCBpbnZhbGlkYXRlKCk7CiAKICAgICAvLyBNZWRpYSBlbmdpbmUgc3Vw
cG9ydC4KKyAgICB1c2luZyBNZWRpYVBsYXllckVudW1zOjpTdXBwb3J0c1R5cGU7CisgICAgc3Rh
dGljIGNvbnN0IE1lZGlhUGxheWVyRmFjdG9yeSogbWVkaWFFbmdpbmUoTWVkaWFQbGF5ZXJFbnVt
czo6TWVkaWFFbmdpbmVJZGVudGlmaWVyKTsKICAgICBzdGF0aWMgU3VwcG9ydHNUeXBlIHN1cHBv
cnRzVHlwZShjb25zdCBNZWRpYUVuZ2luZVN1cHBvcnRQYXJhbWV0ZXJzJik7CiAgICAgc3RhdGlj
IHZvaWQgZ2V0U3VwcG9ydGVkVHlwZXMoSGFzaFNldDxTdHJpbmcsIEFTQ0lJQ2FzZUluc2Vuc2l0
aXZlSGFzaD4mKTsKICAgICBzdGF0aWMgYm9vbCBpc0F2YWlsYWJsZSgpOwpAQCAtNTMxLDExICs1
NzYsMTEgQEAgcHVibGljOgogICAgIHN0YXRpYyB2b2lkIHJlc2V0TWVkaWFFbmdpbmVzKCk7CiAK
ICNpZiBVU0UoR1NUUkVBTUVSKQotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2ltdWxhdGVBdWRp
b0ludGVycnVwdGlvbigpOworICAgIHZvaWQgc2ltdWxhdGVBdWRpb0ludGVycnVwdGlvbigpOwog
I2VuZGlmCiAKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGJlZ2luU2ltdWxhdGVkSERDUEVycm9y
KCk7Ci0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBlbmRTaW11bGF0ZWRIRENQRXJyb3IoKTsKKyAg
ICB2b2lkIGJlZ2luU2ltdWxhdGVkSERDUEVycm9yKCk7CisgICAgdm9pZCBlbmRTaW11bGF0ZWRI
RENQRXJyb3IoKTsKIAogICAgIFN0cmluZyBsYW5ndWFnZU9mUHJpbWFyeUF1ZGlvVHJhY2soKSBj
b25zdDsKIApAQCAtNTcwLDcgKzYxNSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGFwcGxpY2F0aW9u
RGlkQmVjb21lQWN0aXZlKCk7CiAKICNpZiBVU0UoQVZGT1VOREFUSU9OKQotICAgIFdFQkNPUkVf
RVhQT1JUIEFWUGxheWVyICpvYmpDQVZGb3VuZGF0aW9uQVZQbGF5ZXIoKSBjb25zdDsKKyAgICBB
VlBsYXllciAqb2JqQ0FWRm91bmRhdGlvbkFWUGxheWVyKCkgY29uc3Q7CiAjZW5kaWYKIAogICAg
IGJvb2wgcGVyZm9ybVRhc2tBdE1lZGlhVGltZShXVEY6OkZ1bmN0aW9uPHZvaWQoKT4mJiwgTWVk
aWFUaW1lKTsKQEAgLTU5NSwxMSArNjQwLDEzIEBAIHB1YmxpYzoKIAogcHJpdmF0ZToKICAgICBN
ZWRpYVBsYXllcihNZWRpYVBsYXllckNsaWVudCYpOworICAgIE1lZGlhUGxheWVyKE1lZGlhUGxh
eWVyQ2xpZW50JiwgTWVkaWFQbGF5ZXJFbnVtczo6TWVkaWFFbmdpbmVJZGVudGlmaWVyKTsKIAog
ICAgIE1lZGlhUGxheWVyQ2xpZW50JiBjbGllbnQoKSBjb25zdCB7IHJldHVybiAqbV9jbGllbnQ7
IH0KIAotICAgIGNvbnN0IE1lZGlhUGxheWVyRmFjdG9yeSogbmV4dEJlc3RNZWRpYUVuZ2luZShj
b25zdCBNZWRpYVBsYXllckZhY3RvcnkqKSBjb25zdDsKKyAgICBjb25zdCBNZWRpYVBsYXllckZh
Y3RvcnkqIG5leHRCZXN0TWVkaWFFbmdpbmUoY29uc3QgTWVkaWFQbGF5ZXJGYWN0b3J5Kik7CiAg
ICAgdm9pZCBsb2FkV2l0aE5leHRNZWRpYUVuZ2luZShjb25zdCBNZWRpYVBsYXllckZhY3Rvcnkq
KTsKKyAgICBjb25zdCBNZWRpYVBsYXllckZhY3RvcnkqIG5leHRNZWRpYUVuZ2luZShjb25zdCBN
ZWRpYVBsYXllckZhY3RvcnkqKTsKICAgICB2b2lkIHJlbG9hZFRpbWVyRmlyZWQoKTsKIAogICAg
IE1lZGlhUGxheWVyQ2xpZW50KiBtX2NsaWVudDsKQEAgLTYwOSw2ICs2NTYsNyBAQCBwcml2YXRl
OgogICAgIFVSTCBtX3VybDsKICAgICBDb250ZW50VHlwZSBtX2NvbnRlbnRUeXBlOwogICAgIFN0
cmluZyBtX2tleVN5c3RlbTsKKyAgICBPcHRpb25hbDxNZWRpYVBsYXllckVudW1zOjpNZWRpYUVu
Z2luZUlkZW50aWZpZXI+IG1fYWN0aXZlRW5naW5lSWRlbnRpZmllcjsKICAgICBJbnRTaXplIG1f
c2l6ZTsKICAgICBQcmVsb2FkIG1fcHJlbG9hZCB7IFByZWxvYWQ6OkF1dG8gfTsKICAgICBkb3Vi
bGUgbV92b2x1bWUgeyAxIH07CkBAIC02MjgsMTYgKzY3NiwyNCBAQCBwcml2YXRlOgogI2VuZGlm
CiB9OwogCi11c2luZyBDcmVhdGVNZWRpYUVuZ2luZVBsYXllciA9IFdURjo6RnVuY3Rpb248c3Rk
Ojp1bmlxdWVfcHRyPE1lZGlhUGxheWVyUHJpdmF0ZUludGVyZmFjZT4gKE1lZGlhUGxheWVyKik+
OwotdHlwZWRlZiB2b2lkICgqTWVkaWFFbmdpbmVTdXBwb3J0ZWRUeXBlcykoSGFzaFNldDxTdHJp
bmcsIEFTQ0lJQ2FzZUluc2Vuc2l0aXZlSGFzaD4mIHR5cGVzKTsKLXR5cGVkZWYgTWVkaWFQbGF5
ZXI6OlN1cHBvcnRzVHlwZSAoKk1lZGlhRW5naW5lU3VwcG9ydHNUeXBlKShjb25zdCBNZWRpYUVu
Z2luZVN1cHBvcnRQYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzKTsKLXR5cGVkZWYgSGFzaFNldDxSZWZQ
dHI8U2VjdXJpdHlPcmlnaW4+PiAoKk1lZGlhRW5naW5lT3JpZ2luc0luTWVkaWFDYWNoZSkoY29u
c3QgU3RyaW5nJiBwYXRoKTsKLXR5cGVkZWYgdm9pZCAoKk1lZGlhRW5naW5lQ2xlYXJNZWRpYUNh
Y2hlKShjb25zdCBTdHJpbmcmIHBhdGgsIFdhbGxUaW1lIG1vZGlmaWVkU2luY2UpOwotdHlwZWRl
ZiB2b2lkICgqTWVkaWFFbmdpbmVDbGVhck1lZGlhQ2FjaGVGb3JPcmlnaW5zKShjb25zdCBTdHJp
bmcmIHBhdGgsIGNvbnN0IEhhc2hTZXQ8UmVmUHRyPFNlY3VyaXR5T3JpZ2luPj4mKTsKLXR5cGVk
ZWYgYm9vbCAoKk1lZGlhRW5naW5lU3VwcG9ydHNLZXlTeXN0ZW0pKGNvbnN0IFN0cmluZyYga2V5
U3lzdGVtLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlKTsKK2NsYXNzIE1lZGlhUGxheWVyRmFjdG9y
eSB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CitwdWJsaWM6CisgICAgTWVkaWFQbGF5
ZXJGYWN0b3J5KCkgPSBkZWZhdWx0OworICAgIHZpcnR1YWwgfk1lZGlhUGxheWVyRmFjdG9yeSgp
IHsgfQorCisgICAgdmlydHVhbCBNZWRpYVBsYXllckVudW1zOjpNZWRpYUVuZ2luZUlkZW50aWZp
ZXIgaWRlbnRpZmllcigpIGNvbnN0ICA9IDA7CisgICAgdmlydHVhbCBzdGQ6OnVuaXF1ZV9wdHI8
TWVkaWFQbGF5ZXJQcml2YXRlSW50ZXJmYWNlPiBjcmVhdGVNZWRpYUVuZ2luZVBsYXllcihNZWRp
YVBsYXllciopIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZ2V0U3VwcG9ydGVkVHlwZXMo
SGFzaFNldDxTdHJpbmcsIEFTQ0lJQ2FzZUluc2Vuc2l0aXZlSGFzaD4mKSBjb25zdCA9IDA7Cisg
ICAgdmlydHVhbCBNZWRpYVBsYXllcjo6U3VwcG9ydHNUeXBlIHN1cHBvcnRzVHlwZUFuZENvZGVj
cyhjb25zdCBNZWRpYUVuZ2luZVN1cHBvcnRQYXJhbWV0ZXJzJikgY29uc3QgPSAwOworCisgICAg
dmlydHVhbCBIYXNoU2V0PFJlZlB0cjxTZWN1cml0eU9yaWdpbj4+IG9yaWdpbnNJbk1lZGlhQ2Fj
aGUoY29uc3QgU3RyaW5nJikgY29uc3QgeyByZXR1cm4geyB9OyB9CisgICAgdmlydHVhbCB2b2lk
IGNsZWFyTWVkaWFDYWNoZShjb25zdCBTdHJpbmcmLCBXYWxsVGltZSkgY29uc3QgeyB9CisgICAg
dmlydHVhbCB2b2lkIGNsZWFyTWVkaWFDYWNoZUZvck9yaWdpbnMoY29uc3QgU3RyaW5nJiwgY29u
c3QgSGFzaFNldDxSZWZQdHI8U2VjdXJpdHlPcmlnaW4+PiYpIGNvbnN0IHsgfQorICAgIHZpcnR1
YWwgYm9vbCBzdXBwb3J0c0tleVN5c3RlbShjb25zdCBTdHJpbmcmIC8qIGtleVN5c3RlbSAqLywg
Y29uc3QgU3RyaW5nJiAvKiBtaW1lVHlwZSAqLykgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KK307
CiAKLXR5cGVkZWYgdm9pZCAoKk1lZGlhRW5naW5lUmVnaXN0cmFyKShDcmVhdGVNZWRpYUVuZ2lu
ZVBsYXllciYmLCBNZWRpYUVuZ2luZVN1cHBvcnRlZFR5cGVzLCBNZWRpYUVuZ2luZVN1cHBvcnRz
VHlwZSwKLSAgICBNZWRpYUVuZ2luZU9yaWdpbnNJbk1lZGlhQ2FjaGUsIE1lZGlhRW5naW5lQ2xl
YXJNZWRpYUNhY2hlLCBNZWRpYUVuZ2luZUNsZWFyTWVkaWFDYWNoZUZvck9yaWdpbnMsIE1lZGlh
RW5naW5lU3VwcG9ydHNLZXlTeXN0ZW0pOwordHlwZWRlZiB2b2lkICgqTWVkaWFFbmdpbmVSZWdp
c3RyYXIpKHN0ZDo6dW5pcXVlX3B0cjxNZWRpYVBsYXllckZhY3Rvcnk+KTsKIHR5cGVkZWYgdm9p
ZCAoKk1lZGlhRW5naW5lUmVnaXN0ZXIpKE1lZGlhRW5naW5lUmVnaXN0cmFyKTsKIAogY2xhc3Mg
TWVkaWFQbGF5ZXJGYWN0b3J5U3VwcG9ydCB7CkBAIC02NDUsNiArNzAxLDEzIEBAIHB1YmxpYzoK
ICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgdm9pZCBjYWxsUmVnaXN0ZXJNZWRpYUVuZ2luZShN
ZWRpYUVuZ2luZVJlZ2lzdGVyKTsKIH07CiAKK2NsYXNzIFJlbW90ZU1lZGlhUGxheWVyU3VwcG9y
dCB7CitwdWJsaWM6CisgICAgdXNpbmcgUmVnaXN0ZXJSZW1vdGVQbGF5ZXJDYWxsYmFjayA9IHN0
ZDo6ZnVuY3Rpb248dm9pZChNZWRpYUVuZ2luZVJlZ2lzdHJhciwgTWVkaWFQbGF5ZXJFbnVtczo6
TWVkaWFFbmdpbmVJZGVudGlmaWVyKT47CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIHZvaWQg
c2V0UmVnaXN0ZXJSZW1vdGVQbGF5ZXJDYWxsYmFjayhSZWdpc3RlclJlbW90ZVBsYXllckNhbGxi
YWNrJiYpOworfTsKKworCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBFTkFC
TEUoVklERU8pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9N
ZWRpYVBsYXllckVudW1zLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRp
YVBsYXllckVudW1zLmgKaW5kZXggNGIxMGYwNDgzMDg3ZTJlNjZlM2FhZDgxZWU0NDJlNmQyNDhk
ZTlkNC4uODFlNTE5Mzc1MjYwODkxNDNkNTBhNTEzY2FmMDI0ODAxODJlNDU3MCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXJFbnVtcy5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyRW51bXMuaApA
QCAtODcsNiArODcsMTcgQEAgcHVibGljOgogICAgICAgICBNYWtlUmVzb3VyY2VzUHVyZ2VhYmxl
LAogICAgICAgICBQdXJnZVJlc291cmNlcywKICAgICB9OworCisgICAgZW51bSBjbGFzcyBNZWRp
YUVuZ2luZUlkZW50aWZpZXIgOiB1aW50OF90IHsKKyAgICAgICAgQVZGb3VuZGF0aW9uLAorICAg
ICAgICBBVkZvdW5kYXRpb25NU0UsCisgICAgICAgIEFWRm91bmRhdGlvbk1lZGlhU3RyZWFtLAor
ICAgICAgICBHU3RyZWFtZXIsCisgICAgICAgIEdTdHJlYW1lck1TRSwKKyAgICAgICAgSG9sZVB1
bmNoLAorICAgICAgICBNZWRpYUZvdW5kYXRpb24sCisgICAgICAgIE1vY2tNU0UsCisgICAgfTsK
IH07CiAKIFdURjo6U3RyaW5nIGNvbnZlcnRFbnVtZXJhdGlvblRvU3RyaW5nKE1lZGlhUGxheWVy
RW51bXM6OlJlYWR5U3RhdGUpOwpAQCAtMTQwLDcgKzE1MSw2IEBAIHRlbXBsYXRlPD4gc3RydWN0
IEVudW1UcmFpdHM8V2ViQ29yZTo6TWVkaWFQbGF5ZXJFbnVtczo6TmV0d29ya1N0YXRlPiB7CiAg
ICAgPjsKIH07CiAKLQogdGVtcGxhdGU8PiBzdHJ1Y3QgRW51bVRyYWl0czxXZWJDb3JlOjpNZWRp
YVBsYXllckVudW1zOjpSZWFkeVN0YXRlPiB7CiAgICAgdXNpbmcgdmFsdWVzID0gRW51bVZhbHVl
czwKICAgICAgICAgV2ViQ29yZTo6TWVkaWFQbGF5ZXJFbnVtczo6UmVhZHlTdGF0ZSwKQEAgLTE5
Niw2ICsyMDYsMjAgQEAgdGVtcGxhdGU8PiBzdHJ1Y3QgRW51bVRyYWl0czxXZWJDb3JlOjpNZWRp
YVBsYXllckVudW1zOjpCdWZmZXJpbmdQb2xpY3k+IHsKICAgICAgICAgV2ViQ29yZTo6TWVkaWFQ
bGF5ZXJFbnVtczo6QnVmZmVyaW5nUG9saWN5OjpMaW1pdFJlYWRBaGVhZCwKICAgICAgICAgV2Vi
Q29yZTo6TWVkaWFQbGF5ZXJFbnVtczo6QnVmZmVyaW5nUG9saWN5OjpNYWtlUmVzb3VyY2VzUHVy
Z2VhYmxlLAogICAgICAgICBXZWJDb3JlOjpNZWRpYVBsYXllckVudW1zOjpCdWZmZXJpbmdQb2xp
Y3k6OlB1cmdlUmVzb3VyY2VzCisgICAgICAgID47CisgICAgfTsKKwordGVtcGxhdGU8PiBzdHJ1
Y3QgRW51bVRyYWl0czxXZWJDb3JlOjpNZWRpYVBsYXllckVudW1zOjpNZWRpYUVuZ2luZUlkZW50
aWZpZXI+IHsKKyAgICB1c2luZyB2YWx1ZXMgPSBFbnVtVmFsdWVzPAorICAgICAgICBXZWJDb3Jl
OjpNZWRpYVBsYXllckVudW1zOjpNZWRpYUVuZ2luZUlkZW50aWZpZXIsCisgICAgICAgIFdlYkNv
cmU6Ok1lZGlhUGxheWVyRW51bXM6Ok1lZGlhRW5naW5lSWRlbnRpZmllcjo6QVZGb3VuZGF0aW9u
LAorICAgICAgICBXZWJDb3JlOjpNZWRpYVBsYXllckVudW1zOjpNZWRpYUVuZ2luZUlkZW50aWZp
ZXI6OkFWRm91bmRhdGlvbk1TRSwKKyAgICAgICAgV2ViQ29yZTo6TWVkaWFQbGF5ZXJFbnVtczo6
TWVkaWFFbmdpbmVJZGVudGlmaWVyOjpBVkZvdW5kYXRpb25NZWRpYVN0cmVhbSwKKyAgICAgICAg
V2ViQ29yZTo6TWVkaWFQbGF5ZXJFbnVtczo6TWVkaWFFbmdpbmVJZGVudGlmaWVyOjpHU3RyZWFt
ZXIsCisgICAgICAgIFdlYkNvcmU6Ok1lZGlhUGxheWVyRW51bXM6Ok1lZGlhRW5naW5lSWRlbnRp
Zmllcjo6R1N0cmVhbWVyTVNFLAorICAgICAgICBXZWJDb3JlOjpNZWRpYVBsYXllckVudW1zOjpN
ZWRpYUVuZ2luZUlkZW50aWZpZXI6OkhvbGVQdW5jaCwKKyAgICAgICAgV2ViQ29yZTo6TWVkaWFQ
bGF5ZXJFbnVtczo6TWVkaWFFbmdpbmVJZGVudGlmaWVyOjpNZWRpYUZvdW5kYXRpb24sCisgICAg
ICAgIFdlYkNvcmU6Ok1lZGlhUGxheWVyRW51bXM6Ok1lZGlhRW5naW5lSWRlbnRpZmllcjo6TW9j
a01TRQogICAgID47CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9QbGF0Zm9ybVRpbWVSYW5nZXMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL1BsYXRmb3JtVGltZVJhbmdlcy5oCmluZGV4IDE4ODg2OTVjNzZlOTI2ZmIzZWQ0YjNh
NTEwYzliYjAzM2I0MzczMzAuLmRjNTZkYjZjN2U4YzM0NjRjOTUzMTRhOThhZjRhYzM1OWUzMjcz
ZDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1BsYXRmb3Jt
VGltZVJhbmdlcy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1BsYXRm
b3JtVGltZVJhbmdlcy5oCkBAIC0zNiwxNSArMzYsMTUgQEAgY2xhc3MgUHJpbnRTdHJlYW07CiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgUGxhdGZvcm1UaW1lUmFuZ2VzIHsKK2NsYXNz
IFdFQkNPUkVfRVhQT1JUIFBsYXRmb3JtVGltZVJhbmdlcyB7CiAgICAgV1RGX01BS0VfRkFTVF9B
TExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgZXhwbGljaXQgUGxhdGZvcm1UaW1lUmFuZ2VzKCkgeyB9
CiAgICAgUGxhdGZvcm1UaW1lUmFuZ2VzKGNvbnN0IE1lZGlhVGltZSYgc3RhcnQsIGNvbnN0IE1l
ZGlhVGltZSYgZW5kKTsKIAotICAgIFdFQkNPUkVfRVhQT1JUIE1lZGlhVGltZSBzdGFydCh1bnNp
Z25lZCBpbmRleCkgY29uc3Q7CisgICAgTWVkaWFUaW1lIHN0YXJ0KHVuc2lnbmVkIGluZGV4KSBj
b25zdDsKICAgICBNZWRpYVRpbWUgc3RhcnQodW5zaWduZWQgaW5kZXgsIGJvb2wmIHZhbGlkKSBj
b25zdDsKLSAgICBXRUJDT1JFX0VYUE9SVCBNZWRpYVRpbWUgZW5kKHVuc2lnbmVkIGluZGV4KSBj
b25zdDsKKyAgICBNZWRpYVRpbWUgZW5kKHVuc2lnbmVkIGluZGV4KSBjb25zdDsKICAgICBNZWRp
YVRpbWUgZW5kKHVuc2lnbmVkIGluZGV4LCBib29sJiB2YWxpZCkgY29uc3Q7CiAgICAgTWVkaWFU
aW1lIGR1cmF0aW9uKHVuc2lnbmVkIGluZGV4KSBjb25zdDsKICAgICBNZWRpYVRpbWUgbWF4aW11
bUJ1ZmZlcmVkVGltZSgpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL2NmL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlv
bkNGLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9j
Zi9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25DRi5jcHAKaW5kZXggODU2MmU4NDVkMWZj
YTBjMzllNmNjZmUxYTcxM2M1ZGFiNTgxNTcyOS4uZDQyNGYyMWM2NGUzYjVmMTkyMmFlOTA5YzVk
YjYyMmU3NmExYWYxNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvYXZmb3VuZGF0aW9uL2NmL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbkNGLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vY2YvTWVk
aWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uQ0YuY3BwCkBAIC0zNDIsMTEgKzM0MiwzNyBAQCBz
dGF0aWMgZGlzcGF0Y2hfcXVldWVfdCBnbG9iYWxMb2FkZXJEZWxlZ2F0ZVF1ZXVlKCkKIH0KICNl
bmRpZgogCitjbGFzcyBNZWRpYVBsYXllckZhY3RvcnlBVkZvdW5kYXRpb25DRiA6IHB1YmxpYyBN
ZWRpYVBsYXllckZhY3RvcnkgeworcHVibGljOgorICAgIE1lZGlhUGxheWVyRW51bXM6Ok1lZGlh
RW5naW5lSWRlbnRpZmllciBpZGVudGlmaWVyKCkgY29uc3QgZmluYWwgeyByZXR1cm4gTWVkaWFQ
bGF5ZXJFbmdpbmVJZGVudGlmaWVyczo6YXZGb3VuZGF0aW9uTWVkaWFTdHJlYW1JZGVudGlmaWVy
KCk7IH07CisKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8TWVkaWFQbGF5ZXJQcml2YXRlSW50ZXJmYWNl
PiBjcmVhdGVNZWRpYUVuZ2luZVBsYXllcihNZWRpYVBsYXllciogcGxheWVyKSBjb25zdCBmaW5h
bAorICAgIHsKKyAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8TWVkaWFQbGF5ZXJQcml2YXRlQVZG
b3VuZGF0aW9uQ0Y+KHBsYXllcik7CisgICAgfQorCisgICAgdm9pZCBnZXRTdXBwb3J0ZWRUeXBl
cyhIYXNoU2V0PFN0cmluZywgQVNDSUlDYXNlSW5zZW5zaXRpdmVIYXNoPiYgdHlwZXMpIGNvbnN0
IGZpbmFsCisgICAgeworICAgICAgICByZXR1cm4gTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0
aW9uQ0Y6OmdldFN1cHBvcnRlZFR5cGVzKHR5cGVzKTsKKyAgICB9CisKKyAgICBNZWRpYVBsYXll
cjo6U3VwcG9ydHNUeXBlIHN1cHBvcnRzVHlwZUFuZENvZGVjcyhjb25zdCBNZWRpYUVuZ2luZVN1
cHBvcnRQYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzKSBjb25zdCBmaW5hbAorICAgIHsKKyAgICAgICAg
cmV0dXJuIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbkNGOjpzdXBwb3J0c1R5cGUocGFy
YW1ldGVycyk7CisgICAgfQorCisgICAgYm9vbCBzdXBwb3J0c0tleVN5c3RlbShjb25zdCBTdHJp
bmcmIGtleVN5c3RlbSwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSkgY29uc3QgZmluYWwKKyAgICB7
CisgICAgICAgIHJldHVybiBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25DRjo6c3VwcG9y
dHNLZXlTeXN0ZW0oa2V5U3lzdGVtLCBtaW1lVHlwZSk7CisgICAgfQorfTsKKwogdm9pZCBNZWRp
YVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25DRjo6cmVnaXN0ZXJNZWRpYUVuZ2luZShNZWRpYUVu
Z2luZVJlZ2lzdHJhciByZWdpc3RyYXIpCiB7Ci0gICAgaWYgKGlzQXZhaWxhYmxlKCkpCi0gICAg
ICAgIHJlZ2lzdHJhcihbXShNZWRpYVBsYXllciogcGxheWVyKSB7IHJldHVybiBtYWtlVW5pcXVl
PE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbkNGPihwbGF5ZXIpOyB9LAotICAgICAgICAg
ICAgZ2V0U3VwcG9ydGVkVHlwZXMsIHN1cHBvcnRzVHlwZSwgMCwgMCwgMCwgc3VwcG9ydHNLZXlT
eXN0ZW0pOworICAgIGlmICghaXNBdmFpbGFibGUoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAg
cmVnaXN0cmFyKG1ha2VVbmlxdWU8TWVkaWFQbGF5ZXJGYWN0b3J5QVZGb3VuZGF0aW9uQ0Y+KCkp
OwogfQogCiBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25DRjo6TWVkaWFQbGF5ZXJQcml2
YXRlQVZGb3VuZGF0aW9uQ0YoTWVkaWFQbGF5ZXIqIHBsYXllcikKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVy
UHJpdmF0ZUFWRm91bmRhdGlvbk9iakMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMu
aAppbmRleCBjYWRhMjMxMWJiNmM2ODIyODliMGZhNjZiYjZkOGQ1MTI1OTNmNjA3Li4yOGZkNjJl
ZDRlNmViZGNiMDkyMWNiNWI5NGI5M2JlYzAwMDVjMzQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZh
dGVBVkZvdW5kYXRpb25PYmpDLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5o
CkBAIC0xNjIsNiArMTYyLDcgQEAgcHVibGljOgogCiBwcml2YXRlOgogICAgIC8vIGVuZ2luZSBz
dXBwb3J0CisgICAgZnJpZW5kIGNsYXNzIE1lZGlhUGxheWVyRmFjdG9yeUFWRm91bmRhdGlvbk9i
akM7CiAgICAgc3RhdGljIHZvaWQgZ2V0U3VwcG9ydGVkVHlwZXMoSGFzaFNldDxTdHJpbmcsIEFT
Q0lJQ2FzZUluc2Vuc2l0aXZlSGFzaD4mIHR5cGVzKTsKICAgICBzdGF0aWMgTWVkaWFQbGF5ZXI6
OlN1cHBvcnRzVHlwZSBzdXBwb3J0c1R5cGUoY29uc3QgTWVkaWFFbmdpbmVTdXBwb3J0UGFyYW1l
dGVycyYpOwogICAgIHN0YXRpYyBib29sIHN1cHBvcnRzS2V5U3lzdGVtKGNvbnN0IFN0cmluZyYg
a2V5U3lzdGVtLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJp
dmF0ZUFWRm91bmRhdGlvbk9iakMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLm1t
CmluZGV4IDcxODkyOWM2MjEyMjMxMWY2OWEzZDhkYWUwMjgyM2QzMTYxNTJiNWIuLjRjZmM3ZjVl
NWU1Yjc3ZTI1NmZkZjI3YTkxNGQyZTYxYTMyZmRkYTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0
ZUFWRm91bmRhdGlvbk9iakMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5t
bQpAQCAtMjczLDE0ICsyNzMsNTQgQEAgc3RhdGljIGRpc3BhdGNoX3F1ZXVlX3QgZ2xvYmFsUHVs
bERlbGVnYXRlUXVldWUoKQogfQogI2VuZGlmCiAKK2NsYXNzIE1lZGlhUGxheWVyRmFjdG9yeUFW
Rm91bmRhdGlvbk9iakMgOiBwdWJsaWMgTWVkaWFQbGF5ZXJGYWN0b3J5IHsKK3B1YmxpYzoKKyAg
ICBNZWRpYVBsYXllckVudW1zOjpNZWRpYUVuZ2luZUlkZW50aWZpZXIgaWRlbnRpZmllcigpIGNv
bnN0IGZpbmFsIHsgcmV0dXJuIE1lZGlhUGxheWVyRW51bXM6Ok1lZGlhRW5naW5lSWRlbnRpZmll
cjo6QVZGb3VuZGF0aW9uOyB9OworCisgICAgc3RkOjp1bmlxdWVfcHRyPE1lZGlhUGxheWVyUHJp
dmF0ZUludGVyZmFjZT4gY3JlYXRlTWVkaWFFbmdpbmVQbGF5ZXIoTWVkaWFQbGF5ZXIqIHBsYXll
cikgY29uc3QgZmluYWwKKyAgICB7CisgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPE1lZGlhUGxh
eWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM+KHBsYXllcik7CisgICAgfQorCisgICAgdm9pZCBn
ZXRTdXBwb3J0ZWRUeXBlcyhIYXNoU2V0PFN0cmluZywgQVNDSUlDYXNlSW5zZW5zaXRpdmVIYXNo
PiYgdHlwZXMpIGNvbnN0IGZpbmFsCisgICAgeworICAgICAgICByZXR1cm4gTWVkaWFQbGF5ZXJQ
cml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6Z2V0U3VwcG9ydGVkVHlwZXModHlwZXMpOworICAgIH0K
KworICAgIE1lZGlhUGxheWVyOjpTdXBwb3J0c1R5cGUgc3VwcG9ydHNUeXBlQW5kQ29kZWNzKGNv
bnN0IE1lZGlhRW5naW5lU3VwcG9ydFBhcmFtZXRlcnMmIHBhcmFtZXRlcnMpIGNvbnN0IGZpbmFs
CisgICAgeworICAgICAgICByZXR1cm4gTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2Jq
Qzo6c3VwcG9ydHNUeXBlKHBhcmFtZXRlcnMpOworICAgIH0KKworICAgIEhhc2hTZXQ8UmVmUHRy
PFNlY3VyaXR5T3JpZ2luPj4gb3JpZ2luc0luTWVkaWFDYWNoZShjb25zdCBTdHJpbmcmIHBhdGgp
IGNvbnN0IGZpbmFsCisgICAgeworICAgICAgICByZXR1cm4gTWVkaWFQbGF5ZXJQcml2YXRlQVZG
b3VuZGF0aW9uT2JqQzo6b3JpZ2luc0luTWVkaWFDYWNoZShwYXRoKTsKKyAgICB9CisKKyAgICB2
b2lkIGNsZWFyTWVkaWFDYWNoZShjb25zdCBTdHJpbmcmIHBhdGgsIFdhbGxUaW1lIG1vZGlmaWVk
U2luY2UpIGNvbnN0IGZpbmFsCisgICAgeworICAgICAgICByZXR1cm4gTWVkaWFQbGF5ZXJQcml2
YXRlQVZGb3VuZGF0aW9uT2JqQzo6Y2xlYXJNZWRpYUNhY2hlKHBhdGgsIG1vZGlmaWVkU2luY2Up
OworICAgIH0KKworICAgIHZvaWQgY2xlYXJNZWRpYUNhY2hlRm9yT3JpZ2lucyhjb25zdCBTdHJp
bmcmIHBhdGgsIGNvbnN0IEhhc2hTZXQ8UmVmUHRyPFNlY3VyaXR5T3JpZ2luPj4mIG9yaWdpbnMp
IGNvbnN0IGZpbmFsCisgICAgeworICAgICAgICByZXR1cm4gTWVkaWFQbGF5ZXJQcml2YXRlQVZG
b3VuZGF0aW9uT2JqQzo6Y2xlYXJNZWRpYUNhY2hlRm9yT3JpZ2lucyhwYXRoLCBvcmlnaW5zKTsK
KyAgICB9CisKKyAgICBib29sIHN1cHBvcnRzS2V5U3lzdGVtKGNvbnN0IFN0cmluZyYga2V5U3lz
dGVtLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlKSBjb25zdCBmaW5hbAorICAgIHsKKyAgICAgICAg
cmV0dXJuIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OnN1cHBvcnRzS2V5U3lz
dGVtKGtleVN5c3RlbSwgbWltZVR5cGUpOworICAgIH0KK307CisKIHZvaWQgTWVkaWFQbGF5ZXJQ
cml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6cmVnaXN0ZXJNZWRpYUVuZ2luZShNZWRpYUVuZ2luZVJl
Z2lzdHJhciByZWdpc3RyYXIpCiB7CiAgICAgaWYgKCFpc0F2YWlsYWJsZSgpKQogICAgICAgICBy
ZXR1cm47CiAKLSAgICByZWdpc3RyYXIoW10oTWVkaWFQbGF5ZXIqIHBsYXllcikgeyByZXR1cm4g
bWFrZVVuaXF1ZTxNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDPihwbGF5ZXIpOyB9
LAotICAgICAgICAgICAgZ2V0U3VwcG9ydGVkVHlwZXMsIHN1cHBvcnRzVHlwZSwgb3JpZ2luc0lu
TWVkaWFDYWNoZSwgY2xlYXJNZWRpYUNhY2hlLCBjbGVhck1lZGlhQ2FjaGVGb3JPcmlnaW5zLCBz
dXBwb3J0c0tleVN5c3RlbSk7CiAgICAgQVNTRVJUKEFWQXNzZXRNSU1FVHlwZUNhY2hlOjpzaW5n
bGV0b24oKS5pc0F2YWlsYWJsZSgpKTsKKworICAgIHJlZ2lzdHJhcihtYWtlVW5pcXVlPE1lZGlh
UGxheWVyRmFjdG9yeUFWRm91bmRhdGlvbk9iakM+KCkpOwogfQogCiBzdGF0aWMgQVZBc3NldENh
Y2hlICphc3NldENhY2hlRm9yUGF0aChjb25zdCBTdHJpbmcmIHBhdGgpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBs
YXllclByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVNZWRpYVNvdXJj
ZUFWRk9iakMubW0KaW5kZXggZGZmM2UyNDUyYmY1YWUyNWFjNDYzMDViMTAzOWZlMjg3M2M5OGI1
Zi4uZWY2OTI2OGJjNTNmYjA5MjRlYzgxMGFjMjFlZTRiYTdjMTQyNmZhOSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQ
bGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlh
U291cmNlQVZGT2JqQy5tbQpAQCAtMTk2LDE0ICsxOTYsMzQgQEAgTWVkaWFQbGF5ZXJQcml2YXRl
TWVkaWFTb3VyY2VBVkZPYmpDOjp+TWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpD
KCkKICNwcmFnbWEgbWFyayAtCiAjcHJhZ21hIG1hcmsgTWVkaWFQbGF5ZXIgRmFjdG9yeSBNZXRo
b2RzCiAKK2NsYXNzIE1lZGlhUGxheWVyRmFjdG9yeU1lZGlhU291cmNlQVZGT2JqQyA6IHB1Ymxp
YyBNZWRpYVBsYXllckZhY3RvcnkgeworcHVibGljOgorICAgIE1lZGlhUGxheWVyRW51bXM6Ok1l
ZGlhRW5naW5lSWRlbnRpZmllciBpZGVudGlmaWVyKCkgY29uc3QgZmluYWwgeyByZXR1cm4gTWVk
aWFQbGF5ZXJFbnVtczo6TWVkaWFFbmdpbmVJZGVudGlmaWVyOjpBVkZvdW5kYXRpb25NU0U7IH07
CisKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8TWVkaWFQbGF5ZXJQcml2YXRlSW50ZXJmYWNlPiBjcmVh
dGVNZWRpYUVuZ2luZVBsYXllcihNZWRpYVBsYXllciogcGxheWVyKSBjb25zdCBmaW5hbAorICAg
IHsKKyAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8TWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3Vy
Y2VBVkZPYmpDPihwbGF5ZXIpOyAgICAgICAgCisgICAgfQorCisgICAgdm9pZCBnZXRTdXBwb3J0
ZWRUeXBlcyhIYXNoU2V0PFN0cmluZywgQVNDSUlDYXNlSW5zZW5zaXRpdmVIYXNoPiYgdHlwZXMp
IGNvbnN0IGZpbmFsCisgICAgeworICAgICAgICByZXR1cm4gTWVkaWFQbGF5ZXJQcml2YXRlTWVk
aWFTb3VyY2VBVkZPYmpDOjpnZXRTdXBwb3J0ZWRUeXBlcyh0eXBlcyk7CisgICAgfQorCisgICAg
TWVkaWFQbGF5ZXI6OlN1cHBvcnRzVHlwZSBzdXBwb3J0c1R5cGVBbmRDb2RlY3MoY29uc3QgTWVk
aWFFbmdpbmVTdXBwb3J0UGFyYW1ldGVycyYgcGFyYW1ldGVycykgY29uc3QgZmluYWwKKyAgICB7
CisgICAgICAgIHJldHVybiBNZWRpYVBsYXllclByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakM6OnN1
cHBvcnRzVHlwZShwYXJhbWV0ZXJzKTsKKyAgICB9Cit9OworCiB2b2lkIE1lZGlhUGxheWVyUHJp
dmF0ZU1lZGlhU291cmNlQVZGT2JqQzo6cmVnaXN0ZXJNZWRpYUVuZ2luZShNZWRpYUVuZ2luZVJl
Z2lzdHJhciByZWdpc3RyYXIpCiB7CiAgICAgaWYgKCFpc0F2YWlsYWJsZSgpKQogICAgICAgICBy
ZXR1cm47CiAKLSAgICByZWdpc3RyYXIoW10oTWVkaWFQbGF5ZXIqIHBsYXllcikgeyByZXR1cm4g
bWFrZVVuaXF1ZTxNZWRpYVBsYXllclByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakM+KHBsYXllcik7
IH0sCi0gICAgICAgIGdldFN1cHBvcnRlZFR5cGVzLCBzdXBwb3J0c1R5cGUsIDAsIDAsIDAsIDAp
OwogICAgIEFTU0VSVChBVkFzc2V0TUlNRVR5cGVDYWNoZTo6c2luZ2xldG9uKCkuaXNBdmFpbGFi
bGUoKSk7CisKKyAgICByZWdpc3RyYXIobWFrZVVuaXF1ZTxNZWRpYVBsYXllckZhY3RvcnlNZWRp
YVNvdXJjZUFWRk9iakM+KCkpOwogfQogCiBib29sIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291
cmNlQVZGT2JqQzo6aXNBdmFpbGFibGUoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFT
dHJlYW1BVkZPYmpDLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3Vu
ZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDLm1tCmluZGV4
IDI1MTljMTE0ZjQwODk2OWEzYzQwYmViMzg1NDM1OTA4ZjBiMjViMTcuLjA3YmJmYWJiMGFjOTI4
M2Q0NTZiMTJlMjIzNDgzY2Q3NzJlM2QwYTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlh
U3RyZWFtQVZGT2JqQy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9h
dmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakMubW0K
QEAgLTIyMCwxMSArMjIwLDMyIEBAIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2Jq
Qzo6fk1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQygpCiAjcHJhZ21hIG1hcmsg
LQogI3ByYWdtYSBtYXJrIE1lZGlhUGxheWVyIEZhY3RvcnkgTWV0aG9kcwogCitjbGFzcyBNZWRp
YVBsYXllckZhY3RvcnlNZWRpYVN0cmVhbUFWRk9iakMgOiBwdWJsaWMgTWVkaWFQbGF5ZXJGYWN0
b3J5IHsKK3B1YmxpYzoKKyAgICBNZWRpYVBsYXllckVudW1zOjpNZWRpYUVuZ2luZUlkZW50aWZp
ZXIgaWRlbnRpZmllcigpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIE1lZGlhUGxheWVyRW51bXM6Ok1l
ZGlhRW5naW5lSWRlbnRpZmllcjo6QVZGb3VuZGF0aW9uTWVkaWFTdHJlYW07IH07CisKKyAgICBz
dGQ6OnVuaXF1ZV9wdHI8TWVkaWFQbGF5ZXJQcml2YXRlSW50ZXJmYWNlPiBjcmVhdGVNZWRpYUVu
Z2luZVBsYXllcihNZWRpYVBsYXllciogcGxheWVyKSBjb25zdCBmaW5hbAorICAgIHsKKyAgICAg
ICAgcmV0dXJuIG1ha2VVbmlxdWU8TWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpD
PihwbGF5ZXIpOworICAgIH0KKworICAgIHZvaWQgZ2V0U3VwcG9ydGVkVHlwZXMoSGFzaFNldDxT
dHJpbmcsIEFTQ0lJQ2FzZUluc2Vuc2l0aXZlSGFzaD4mIHR5cGVzKSBjb25zdCBmaW5hbAorICAg
IHsKKyAgICAgICAgcmV0dXJuIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQzo6
Z2V0U3VwcG9ydGVkVHlwZXModHlwZXMpOworICAgIH0KKworICAgIE1lZGlhUGxheWVyOjpTdXBw
b3J0c1R5cGUgc3VwcG9ydHNUeXBlQW5kQ29kZWNzKGNvbnN0IE1lZGlhRW5naW5lU3VwcG9ydFBh
cmFtZXRlcnMmIHBhcmFtZXRlcnMpIGNvbnN0IGZpbmFsCisgICAgeworICAgICAgICByZXR1cm4g
TWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDOjpzdXBwb3J0c1R5cGUocGFyYW1l
dGVycyk7CisgICAgfQorfTsKKwogdm9pZCBNZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFW
Rk9iakM6OnJlZ2lzdGVyTWVkaWFFbmdpbmUoTWVkaWFFbmdpbmVSZWdpc3RyYXIgcmVnaXN0cmFy
KQogewotICAgIGlmIChpc0F2YWlsYWJsZSgpKQotICAgICAgICByZWdpc3RyYXIoW10oTWVkaWFQ
bGF5ZXIqIHBsYXllcikgeyByZXR1cm4gbWFrZVVuaXF1ZTxNZWRpYVBsYXllclByaXZhdGVNZWRp
YVN0cmVhbUFWRk9iakM+KHBsYXllcik7IH0sIGdldFN1cHBvcnRlZFR5cGVzLAotICAgICAgICAg
ICAgc3VwcG9ydHNUeXBlLCAwLCAwLCAwLCAwKTsKKyAgICBpZiAoIWlzQXZhaWxhYmxlKCkpCisg
ICAgICAgIHJldHVybjsKKworICAgIHJlZ2lzdHJhcihtYWtlVW5pcXVlPE1lZGlhUGxheWVyRmFj
dG9yeU1lZGlhU3RyZWFtQVZGT2JqQz4oKSk7CiB9CiAKIGJvb2wgTWVkaWFQbGF5ZXJQcml2YXRl
TWVkaWFTdHJlYW1BVkZPYmpDOjppc0F2YWlsYWJsZSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVh
bWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRp
YVBsYXllclByaXZhdGVHU3RyZWFtZXIuY3BwCmluZGV4IGQ0ODg1NDIyNjdhMzdhMmIzOGQ1OWIz
ZDM4YmY0MjkxOWE0YTE3ODUuLjRjNTdlNTY5YjgxZDgyZGVmNjRjZjk3ZTZmMjU3YzY4NWZiOTBm
ZDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1l
ci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIuY3Bw
CkBAIC00NjQsMTQgKzQ2NCwzNyBAQCBib29sIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6
aXNBdmFpbGFibGUoKQogICAgIHJldHVybiBmYWN0b3J5OwogfQogCitjbGFzcyBNZWRpYVBsYXll
ckZhY3RvcnlHU3RyZWFtZXIgOiBwdWJsaWMgTWVkaWFQbGF5ZXJGYWN0b3J5IHsKK3B1YmxpYzoK
KyAgICBNZWRpYVBsYXllckVudW1zOjpNZWRpYUVuZ2luZUlkZW50aWZpZXIgaWRlbnRpZmllcigp
IGNvbnN0IGZpbmFsIHsgcmV0dXJuIE1lZGlhUGxheWVyRW51bXM6Ok1lZGlhRW5naW5lSWRlbnRp
Zmllcjo6R1N0cmVhbWVyOyB9OworCisgICAgc3RkOjp1bmlxdWVfcHRyPE1lZGlhUGxheWVyUHJp
dmF0ZUludGVyZmFjZT4gY3JlYXRlTWVkaWFFbmdpbmVQbGF5ZXIoTWVkaWFQbGF5ZXIqIHBsYXll
cikgY29uc3QgZmluYWwKKyAgICB7CisgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPE1lZGlhUGxh
eWVyUHJpdmF0ZUdTdHJlYW1lcj4ocGxheWVyKTsKKyAgICB9CisKKyAgICB2b2lkIGdldFN1cHBv
cnRlZFR5cGVzKEhhc2hTZXQ8U3RyaW5nLCBBU0NJSUNhc2VJbnNlbnNpdGl2ZUhhc2g+JiB0eXBl
cykgY29uc3QgZmluYWwKKyAgICB7CisgICAgICAgIHJldHVybiBNZWRpYVBsYXllclByaXZhdGVH
U3RyZWFtZXI6OmdldFN1cHBvcnRlZFR5cGVzKHR5cGVzKTsKKyAgICB9CisKKyAgICBNZWRpYVBs
YXllcjo6U3VwcG9ydHNUeXBlIHN1cHBvcnRzVHlwZUFuZENvZGVjcyhjb25zdCBNZWRpYUVuZ2lu
ZVN1cHBvcnRQYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzKSBjb25zdCBmaW5hbAorICAgIHsKKyAgICAg
ICAgcmV0dXJuIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6c3VwcG9ydHNUeXBlKHBhcmFt
ZXRlcnMpOworICAgIH0KKworICAgIGJvb2wgc3VwcG9ydHNLZXlTeXN0ZW0oY29uc3QgU3RyaW5n
JiBrZXlTeXN0ZW0sIGNvbnN0IFN0cmluZyYgbWltZVR5cGUpIGNvbnN0IGZpbmFsCisgICAgewor
ICAgICAgICByZXR1cm4gTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpzdXBwb3J0c0tleVN5
c3RlbShrZXlTeXN0ZW0sIG1pbWVUeXBlKTsKKyAgICB9Cit9OworCiB2b2lkIE1lZGlhUGxheWVy
UHJpdmF0ZUdTdHJlYW1lcjo6cmVnaXN0ZXJNZWRpYUVuZ2luZShNZWRpYUVuZ2luZVJlZ2lzdHJh
ciByZWdpc3RyYXIpCiB7CiAgICAgaW5pdGlhbGl6ZURlYnVnQ2F0ZWdvcnkoKTsKIAotICAgIGlm
IChpc0F2YWlsYWJsZSgpKSB7Ci0gICAgICAgIHJlZ2lzdHJhcihbXShNZWRpYVBsYXllciogcGxh
eWVyKSB7IHJldHVybiBtYWtlVW5pcXVlPE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcj4ocGxh
eWVyKTsgfSwKLSAgICAgICAgICAgIGdldFN1cHBvcnRlZFR5cGVzLCBzdXBwb3J0c1R5cGUsIG51
bGxwdHIsIG51bGxwdHIsIG51bGxwdHIsIHN1cHBvcnRzS2V5U3lzdGVtKTsKLSAgICB9CisgICAg
aWYgKGlzQXZhaWxhYmxlKCkpCisgICAgICAgIHJlZ2lzdHJhcihtYWtlVW5pcXVlPE1lZGlhUGxh
eWVyRmFjdG9yeUdTdHJlYW1lcj4oKSk7CiB9CiAKIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlR1N0
cmVhbWVyOjpsb2FkRnVsbChjb25zdCBTdHJpbmcmIHVybFN0cmluZywgY29uc3QgU3RyaW5nJiBw
aXBlbGluZU5hbWUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVy
LmgKaW5kZXggZjljNDdhMWY2MDEyNGI5OGJmY2NiYWUxYzczYTRhMDQ1MTg1MzhkMS4uODUxNjVk
MWJmMTI5Y2VjZTFhMTI2ZDFjMzA0ZDNmYzk2MmU3MjUzOCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJl
YW1lci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9N
ZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIuaApAQCAtMzk0LDYgKzM5NCw3IEBAIHByaXZhdGU6
CiAgICAgR3N0RWxlbWVudCogY3JlYXRlQXVkaW9TaW5rKCk7CiAgICAgR3N0RWxlbWVudCogYXVk
aW9TaW5rKCkgY29uc3Q7CiAKKyAgICBmcmllbmQgY2xhc3MgTWVkaWFQbGF5ZXJGYWN0b3J5R1N0
cmVhbWVyOwogICAgIHN0YXRpYyB2b2lkIGdldFN1cHBvcnRlZFR5cGVzKEhhc2hTZXQ8U3RyaW5n
LCBBU0NJSUNhc2VJbnNlbnNpdGl2ZUhhc2g+Jik7CiAgICAgc3RhdGljIE1lZGlhUGxheWVyOjpT
dXBwb3J0c1R5cGUgc3VwcG9ydHNUeXBlKGNvbnN0IE1lZGlhRW5naW5lU3VwcG9ydFBhcmFtZXRl
cnMmKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0
cmVhbWVyL21zZS9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJNU0UuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL21zZS9NZWRpYVBsYXllclByaXZhdGVH
U3RyZWFtZXJNU0UuY3BwCmluZGV4IDgyMDE1NWU1NGQ4ODdlNTE2N2EzNDBhZGQzYzRiMzFkNDk2
ZTU2YWIuLmM5MGIyMTAxZmRkMDQ2NmQ5NjEwMzcwMGY1ZTdlMDY2Y2JjNGY4YjIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9tc2UvTWVkaWFQ
bGF5ZXJQcml2YXRlR1N0cmVhbWVyTVNFLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9nc3RyZWFtZXIvbXNlL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lck1TRS5j
cHAKQEAgLTcyLDE0ICs3MiwzNyBAQCBHU1RfREVCVUdfQ0FURUdPUlkod2Via2l0X21zZV9kZWJ1
Zyk7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorY2xhc3MgTWVkaWFQbGF5ZXJGYWN0b3J5R1N0
cmVhbWVyTVNFIDogcHVibGljIE1lZGlhUGxheWVyRmFjdG9yeSB7CitwdWJsaWM6CisgICAgTWVk
aWFQbGF5ZXJFbnVtczo6TWVkaWFFbmdpbmVJZGVudGlmaWVyIGlkZW50aWZpZXIoKSBjb25zdCBm
aW5hbCB7IHJldHVybiBNZWRpYVBsYXllckVudW1zOjpNZWRpYUVuZ2luZUlkZW50aWZpZXI6OkdT
dHJlYW1lck1TRTsgfTsKKworICAgIHN0ZDo6dW5pcXVlX3B0cjxNZWRpYVBsYXllclByaXZhdGVJ
bnRlcmZhY2U+IGNyZWF0ZU1lZGlhRW5naW5lUGxheWVyKE1lZGlhUGxheWVyKiBwbGF5ZXIpIGNv
bnN0IGZpbmFsCisgICAgeworICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxNZWRpYVBsYXllclBy
aXZhdGVHU3RyZWFtZXJNU0U+KHBsYXllcik7CisgICAgfQorCisgICAgdm9pZCBnZXRTdXBwb3J0
ZWRUeXBlcyhIYXNoU2V0PFN0cmluZywgQVNDSUlDYXNlSW5zZW5zaXRpdmVIYXNoPiYgdHlwZXMp
IGNvbnN0IGZpbmFsCisgICAgeworICAgICAgICByZXR1cm4gTWVkaWFQbGF5ZXJQcml2YXRlR1N0
cmVhbWVyTVNFOjpnZXRTdXBwb3J0ZWRUeXBlcyh0eXBlcyk7CisgICAgfQorCisgICAgTWVkaWFQ
bGF5ZXI6OlN1cHBvcnRzVHlwZSBzdXBwb3J0c1R5cGVBbmRDb2RlY3MoY29uc3QgTWVkaWFFbmdp
bmVTdXBwb3J0UGFyYW1ldGVycyYgcGFyYW1ldGVycykgY29uc3QgZmluYWwKKyAgICB7CisgICAg
ICAgIHJldHVybiBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJNU0U6OnN1cHBvcnRzVHlwZShw
YXJhbWV0ZXJzKTsKKyAgICB9CisKKyAgICBib29sIHN1cHBvcnRzS2V5U3lzdGVtKGNvbnN0IFN0
cmluZyYga2V5U3lzdGVtLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlKSBjb25zdCBmaW5hbAorICAg
IHsKKyAgICAgICAgcmV0dXJuIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lck1TRTo6c3VwcG9y
dHNLZXlTeXN0ZW0oa2V5U3lzdGVtLCBtaW1lVHlwZSk7CisgICAgfQorfTsKKwogdm9pZCBNZWRp
YVBsYXllclByaXZhdGVHU3RyZWFtZXJNU0U6OnJlZ2lzdGVyTWVkaWFFbmdpbmUoTWVkaWFFbmdp
bmVSZWdpc3RyYXIgcmVnaXN0cmFyKQogewogICAgIGluaXRpYWxpemVHU3RyZWFtZXJBbmRSZWdp
c3RlcldlYktpdEVsZW1lbnRzKCk7CiAgICAgR1NUX0RFQlVHX0NBVEVHT1JZX0lOSVQod2Via2l0
X21zZV9kZWJ1ZywgIndlYmtpdG1zZSIsIDAsICJXZWJLaXQgTVNFIG1lZGlhIHBsYXllciIpOwot
ICAgIGlmIChpc0F2YWlsYWJsZSgpKSB7Ci0gICAgICAgIHJlZ2lzdHJhcihbXShNZWRpYVBsYXll
ciogcGxheWVyKSB7IHJldHVybiBtYWtlVW5pcXVlPE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1l
ck1TRT4ocGxheWVyKTsgfSwKLSAgICAgICAgICAgIGdldFN1cHBvcnRlZFR5cGVzLCBzdXBwb3J0
c1R5cGUsIG51bGxwdHIsIG51bGxwdHIsIG51bGxwdHIsIHN1cHBvcnRzS2V5U3lzdGVtKTsKLSAg
ICB9CisgICAgaWYgKGlzQXZhaWxhYmxlKCkpCisgICAgICAgIHJlZ2lzdHJhcihtYWtlVW5pcXVl
PE1lZGlhUGxheWVyRmFjdG9yeUdTdHJlYW1lck1TRT4oKSk7CiB9CiAKIE1lZGlhUGxheWVyUHJp
dmF0ZUdTdHJlYW1lck1TRTo6TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyTVNFKE1lZGlhUGxh
eWVyKiBwbGF5ZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9nc3RyZWFtZXIvbXNlL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lck1TRS5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL21zZS9NZWRpYVBsYXllclByaXZh
dGVHU3RyZWFtZXJNU0UuaAppbmRleCA5YjMzMzA1ZjdmMTE2ZGFjOTFjNjQxYzQ4NDU5M2JlN2E4
MzA3MzVmLi41ZDEwMTNmY2JlZjA1NzkzNDgwYmIzOGVkZWZlNGI2NGYwYWNmNDJjIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvbXNlL01lZGlh
UGxheWVyUHJpdmF0ZUdTdHJlYW1lck1TRS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2dzdHJlYW1lci9tc2UvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyTVNFLmgK
QEAgLTg1LDYgKzg1LDcgQEAgcHVibGljOgogICAgIHZvaWQgdW5ibG9ja0R1cmF0aW9uQ2hhbmdl
cygpOwogCiBwcml2YXRlOgorICAgIGZyaWVuZCBjbGFzcyBNZWRpYVBsYXllckZhY3RvcnlHU3Ry
ZWFtZXJNU0U7CiAgICAgc3RhdGljIHZvaWQgZ2V0U3VwcG9ydGVkVHlwZXMoSGFzaFNldDxTdHJp
bmcsIEFTQ0lJQ2FzZUluc2Vuc2l0aXZlSGFzaD4mKTsKICAgICBzdGF0aWMgTWVkaWFQbGF5ZXI6
OlN1cHBvcnRzVHlwZSBzdXBwb3J0c1R5cGUoY29uc3QgTWVkaWFFbmdpbmVTdXBwb3J0UGFyYW1l
dGVycyYpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9o
b2xlcHVuY2gvTWVkaWFQbGF5ZXJQcml2YXRlSG9sZVB1bmNoLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2hvbGVwdW5jaC9NZWRpYVBsYXllclByaXZhdGVIb2xlUHVuY2gu
Y3BwCmluZGV4IGI4YzRlMDFmYWRmNDEzYWRkYzcxNTRlMWVhZjFmNWJiMDU1MzZhMGMuLjA2MmNh
YjJhYTJiZTViNTM0MWJlYTY5MzQxZWU1ZTViMWI4ODdlNzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2hvbGVwdW5jaC9NZWRpYVBsYXllclByaXZhdGVIb2xl
UHVuY2guY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2hvbGVwdW5j
aC9NZWRpYVBsYXllclByaXZhdGVIb2xlUHVuY2guY3BwCkBAIC0xMzksMTAgKzEzOSwyOSBAQCBN
ZWRpYVBsYXllcjo6U3VwcG9ydHNUeXBlIE1lZGlhUGxheWVyUHJpdmF0ZUhvbGVQdW5jaDo6c3Vw
cG9ydHNUeXBlKGNvbnN0IE1lZGlhRQogICAgIHJldHVybiBNZWRpYVBsYXllcjo6U3VwcG9ydHNU
eXBlOjpJc05vdFN1cHBvcnRlZDsKIH0KIAorY2xhc3MgTWVkaWFQbGF5ZXJGYWN0b3J5SG9sZVB1
bmNoIDogcHVibGljIE1lZGlhUGxheWVyRmFjdG9yeSB7CitwdWJsaWM6CisgICAgTWVkaWFQbGF5
ZXJFbnVtczo6TWVkaWFFbmdpbmVJZGVudGlmaWVyIGlkZW50aWZpZXIoKSBjb25zdCBmaW5hbCB7
IHJldHVybiBNZWRpYVBsYXllckVudW1zOjpNZWRpYUVuZ2luZUlkZW50aWZpZXI6OkhvbGVQdW5j
aDsgfTsKKworICAgIHN0ZDo6dW5pcXVlX3B0cjxNZWRpYVBsYXllclByaXZhdGVJbnRlcmZhY2U+
IGNyZWF0ZU1lZGlhRW5naW5lUGxheWVyKE1lZGlhUGxheWVyKiBwbGF5ZXIpIGNvbnN0IGZpbmFs
CisgICAgeworICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxNZWRpYVBsYXllclByaXZhdGVIb2xl
UHVuY2g+KHBsYXllcik7CisgICAgfQorCisgICAgdm9pZCBnZXRTdXBwb3J0ZWRUeXBlcyhIYXNo
U2V0PFN0cmluZywgQVNDSUlDYXNlSW5zZW5zaXRpdmVIYXNoPiYgdHlwZXMpIGNvbnN0IGZpbmFs
CisgICAgeworICAgICAgICByZXR1cm4gTWVkaWFQbGF5ZXJQcml2YXRlSG9sZVB1bmNoOjpnZXRT
dXBwb3J0ZWRUeXBlcyh0eXBlcyk7CisgICAgfQorCisgICAgTWVkaWFQbGF5ZXI6OlN1cHBvcnRz
VHlwZSBzdXBwb3J0c1R5cGVBbmRDb2RlY3MoY29uc3QgTWVkaWFFbmdpbmVTdXBwb3J0UGFyYW1l
dGVycyYgcGFyYW1ldGVycykgY29uc3QgZmluYWwKKyAgICB7CisgICAgICAgIHJldHVybiBNZWRp
YVBsYXllclByaXZhdGVIb2xlUHVuY2g6OnN1cHBvcnRzVHlwZShwYXJhbWV0ZXJzKTsKKyAgICB9
Cit9OworCiB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUhvbGVQdW5jaDo6cmVnaXN0ZXJNZWRpYUVu
Z2luZShNZWRpYUVuZ2luZVJlZ2lzdHJhciByZWdpc3RyYXIpCiB7Ci0gICAgcmVnaXN0cmFyKFtd
KE1lZGlhUGxheWVyKiBwbGF5ZXIpIHsgcmV0dXJuIG1ha2VVbmlxdWU8TWVkaWFQbGF5ZXJQcml2
YXRlSG9sZVB1bmNoPihwbGF5ZXIpOyB9LAotICAgICAgICBnZXRTdXBwb3J0ZWRUeXBlcywgc3Vw
cG9ydHNUeXBlLCBudWxscHRyLCBudWxscHRyLCBudWxscHRyLCBudWxscHRyKTsKKyAgICByZWdp
c3RyYXIobWFrZVVuaXF1ZTxNZWRpYVBsYXllckZhY3RvcnlIb2xlUHVuY2g+KCkpOwogfQogCiB2
b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUhvbGVQdW5jaDo6bm90aWZ5UmVhZHlTdGF0ZSgpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ob2xlcHVuY2gvTWVkaWFQ
bGF5ZXJQcml2YXRlSG9sZVB1bmNoLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9ob2xlcHVuY2gvTWVkaWFQbGF5ZXJQcml2YXRlSG9sZVB1bmNoLmgKaW5kZXggOWExMDg3ZDMy
YjI1YjNjMzBkY2RkYmViNDAwOGNhMDUwMDk1N2Y1YS4uM2IzNGJmYTkyYWJiZjQ4MWExYjU0MjJj
YjU1YWY2NTVlNjM2YmEwZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvaG9sZXB1bmNoL01lZGlhUGxheWVyUHJpdmF0ZUhvbGVQdW5jaC5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2hvbGVwdW5jaC9NZWRpYVBsYXllclByaXZhdGVI
b2xlUHVuY2guaApAQCAtOTgsNiArOTgsNyBAQCBwdWJsaWM6CiAjZW5kaWYKIAogcHJpdmF0ZToK
KyAgICBmcmllbmQgY2xhc3MgTWVkaWFQbGF5ZXJGYWN0b3J5SG9sZVB1bmNoOwogICAgIHN0YXRp
YyB2b2lkIGdldFN1cHBvcnRlZFR5cGVzKEhhc2hTZXQ8U3RyaW5nLCBBU0NJSUNhc2VJbnNlbnNp
dGl2ZUhhc2g+Jik7CiAgICAgc3RhdGljIE1lZGlhUGxheWVyOjpTdXBwb3J0c1R5cGUgc3VwcG9y
dHNUeXBlKGNvbnN0IE1lZGlhRW5naW5lU3VwcG9ydFBhcmFtZXRlcnMmKTsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL01lZGlhUGxheWVyUHJpdmF0
ZU1lZGlhRm91bmRhdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93
aW4vTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFGb3VuZGF0aW9uLmNwcAppbmRleCBiYmJiNDMyMmVk
M2E3NWJmODFkMGJmNDc3NjJmMDUwODJjMzk0YmIwLi41OTBhYmFkZDdkNzE1NGNjOWRiMmMzNzc2
MjQzYjY1YzU0OGQ2ZDg1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy93aW4vTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFGb3VuZGF0aW9uLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFG
b3VuZGF0aW9uLmNwcApAQCAtNzksMTIgKzc5LDMwIEBAIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlh
Rm91bmRhdGlvbjo6fk1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhRm91bmRhdGlvbigpCiAgICAgZW5k
U2Vzc2lvbigpOwogfQogCitjbGFzcyBNZWRpYVBsYXllckZhY3RvcnlNZWRpYUZvdW5kYXRpb24g
OiBwdWJsaWMgTWVkaWFQbGF5ZXJGYWN0b3J5IHsKK3B1YmxpYzoKKyAgICBNZWRpYVBsYXllckVu
dW1zOjpNZWRpYUVuZ2luZUlkZW50aWZpZXIgaWRlbnRpZmllcigpIGNvbnN0IGZpbmFsIHsgcmV0
dXJuIE1lZGlhUGxheWVyRW51bXM6Ok1lZGlhRW5naW5lSWRlbnRpZmllcjo6TWVkaWFGb3VuZGF0
aW9uOyB9OworCisgICAgc3RkOjp1bmlxdWVfcHRyPE1lZGlhUGxheWVyUHJpdmF0ZUludGVyZmFj
ZT4gY3JlYXRlTWVkaWFFbmdpbmVQbGF5ZXIoTWVkaWFQbGF5ZXIqIHBsYXllcikgY29uc3QgZmlu
YWwKKyAgICB7CisgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPE1lZGlhUGxheWVyUHJpdmF0ZU1l
ZGlhRm91bmRhdGlvbj4ocGxheWVyKTsKKyAgICB9CisKKyAgICB2b2lkIGdldFN1cHBvcnRlZFR5
cGVzKEhhc2hTZXQ8U3RyaW5nLCBBU0NJSUNhc2VJbnNlbnNpdGl2ZUhhc2g+JiB0eXBlcykgY29u
c3QgZmluYWwKKyAgICB7CisgICAgICAgIHJldHVybiBNZWRpYVBsYXllclByaXZhdGVNZWRpYUZv
dW5kYXRpb246OmdldFN1cHBvcnRlZFR5cGVzKHR5cGVzKTsKKyAgICB9CisKKyAgICBNZWRpYVBs
YXllcjo6U3VwcG9ydHNUeXBlIHN1cHBvcnRzVHlwZUFuZENvZGVjcyhjb25zdCBNZWRpYUVuZ2lu
ZVN1cHBvcnRQYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzKSBjb25zdCBmaW5hbAorICAgIHsKKyAgICAg
ICAgcmV0dXJuIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhRm91bmRhdGlvbjo6c3VwcG9ydHNUeXBl
KHBhcmFtZXRlcnMpOworICAgIH0KK307CisKIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFG
b3VuZGF0aW9uOjpyZWdpc3Rlck1lZGlhRW5naW5lKE1lZGlhRW5naW5lUmVnaXN0cmFyIHJlZ2lz
dHJhcikKIHsKLSAgICBpZiAoaXNBdmFpbGFibGUoKSkgewotICAgICAgICByZWdpc3RyYXIoW10o
TWVkaWFQbGF5ZXIqIHBsYXllcikgeyByZXR1cm4gbWFrZVVuaXF1ZTxNZWRpYVBsYXllclByaXZh
dGVNZWRpYUZvdW5kYXRpb24+KHBsYXllcik7IH0sCi0gICAgICAgICAgICBnZXRTdXBwb3J0ZWRU
eXBlcywgc3VwcG9ydHNUeXBlLCAwLCAwLCAwLCAwKTsKLSAgICB9CisgICAgaWYgKGlzQXZhaWxh
YmxlKCkpCisgICAgICAgIHJlZ2lzdHJhcihtYWtlVW5pcXVlPE1lZGlhUGxheWVyRmFjdG9yeU1l
ZGlhRm91bmRhdGlvbj4oKSk7CiB9CiAKIGJvb2wgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFGb3Vu
ZGF0aW9uOjppc0F2YWlsYWJsZSgpIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbW9jay9tZWRpYXNvdXJjZS9Nb2NrTWVkaWFQbGF5ZXJNZWRpYVNvdXJjZS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL21lZGlhc291cmNlL01vY2tNZWRpYVBsYXllck1lZGlh
U291cmNlLmNwcAppbmRleCAwMWE2YTAwMzBmNGY0NjFkNDY3MjdiYjY5NjAxNjVhYjliY2ZhMWM4
Li40YWM2NDBiNGMwMmViYzA4OGJiOWM2Yjc5Zjc2NzA5OGNiM2ZlOWViIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL21lZGlhc291cmNlL01vY2tNZWRpYVBsYXllck1l
ZGlhU291cmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL21lZGlhc291
cmNlL01vY2tNZWRpYVBsYXllck1lZGlhU291cmNlLmNwcApAQCAtMzcsMTEgKzM3LDI3IEBACiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorY2xhc3MgTWVkaWFQbGF5ZXJGYWN0b3J5TWVkaWFTb3Vy
Y2VNb2NrIDogcHVibGljIE1lZGlhUGxheWVyRmFjdG9yeSB7CitwdWJsaWM6CisgICAgTWVkaWFQ
bGF5ZXJFbnVtczo6TWVkaWFFbmdpbmVJZGVudGlmaWVyIGlkZW50aWZpZXIoKSBjb25zdCBmaW5h
bCB7IHJldHVybiBNZWRpYVBsYXllckVudW1zOjpNZWRpYUVuZ2luZUlkZW50aWZpZXI6Ok1vY2tN
U0U7IH07CisKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8TWVkaWFQbGF5ZXJQcml2YXRlSW50ZXJmYWNl
PiBjcmVhdGVNZWRpYUVuZ2luZVBsYXllcihNZWRpYVBsYXllciogcGxheWVyKSBjb25zdCBmaW5h
bCB7IHJldHVybiBtYWtlVW5pcXVlPE1vY2tNZWRpYVBsYXllck1lZGlhU291cmNlPihwbGF5ZXIp
OyB9CisKKyAgICB2b2lkIGdldFN1cHBvcnRlZFR5cGVzKEhhc2hTZXQ8U3RyaW5nLCBBU0NJSUNh
c2VJbnNlbnNpdGl2ZUhhc2g+JiB0eXBlcykgY29uc3QgZmluYWwKKyAgICB7CisgICAgICAgIHJl
dHVybiBNb2NrTWVkaWFQbGF5ZXJNZWRpYVNvdXJjZTo6Z2V0U3VwcG9ydGVkVHlwZXModHlwZXMp
OworICAgIH0KKworICAgIE1lZGlhUGxheWVyOjpTdXBwb3J0c1R5cGUgc3VwcG9ydHNUeXBlQW5k
Q29kZWNzKGNvbnN0IE1lZGlhRW5naW5lU3VwcG9ydFBhcmFtZXRlcnMmIHBhcmFtZXRlcnMpIGNv
bnN0IGZpbmFsCisgICAgeworICAgICAgICByZXR1cm4gTW9ja01lZGlhUGxheWVyTWVkaWFTb3Vy
Y2U6OnN1cHBvcnRzVHlwZShwYXJhbWV0ZXJzKTsKKyAgICB9Cit9OworCiAvLyBNZWRpYVBsYXll
ciBFbmlnbmUgU3VwcG9ydAogdm9pZCBNb2NrTWVkaWFQbGF5ZXJNZWRpYVNvdXJjZTo6cmVnaXN0
ZXJNZWRpYUVuZ2luZShNZWRpYUVuZ2luZVJlZ2lzdHJhciByZWdpc3RyYXIpCiB7Ci0gICAgcmVn
aXN0cmFyKFtdIChNZWRpYVBsYXllciogcGxheWVyKSB7IHJldHVybiBtYWtlVW5pcXVlPE1vY2tN
ZWRpYVBsYXllck1lZGlhU291cmNlPihwbGF5ZXIpOyB9LCBnZXRTdXBwb3J0ZWRUeXBlcywKLSAg
ICAgICAgc3VwcG9ydHNUeXBlLCAwLCAwLCAwLCAwKTsKKyAgICByZWdpc3RyYXIobWFrZVVuaXF1
ZTxNZWRpYVBsYXllckZhY3RvcnlNZWRpYVNvdXJjZU1vY2s+KCkpOwogfQogCiAvLyBGSVhNRTog
V2hhdCBkb2VzIHRoZSB3b3JkICJjYWNoZSIgbWVhbiBoZXJlPwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9EZXJpdmVkU291cmNlcy1pbnB1dC54Y2ZpbGVsaXN0IGIvU291cmNlL1dlYktpdC9E
ZXJpdmVkU291cmNlcy1pbnB1dC54Y2ZpbGVsaXN0CmluZGV4IDdmMDhmMmIyZjE4NTgyZWQ1MDQw
MzJkY2FjYjU0Nzg2YTE2OWFkNWYuLjNlZjFjYTg4ZmZhZWFhMjlkY2Q4M2I3NTVjMmIzYmYyODhm
MGYyYWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMtaW5wdXQueGNm
aWxlbGlzdAorKysgYi9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2VzLWlucHV0LnhjZmlsZWxp
c3QKQEAgLTE2LDYgKzE2LDcgQEAgJChKQVZBU0NSSVBUQ09SRV9QUklWQVRFX0hFQURFUlNfRElS
KS94eGQucGwKICQoUFJPSkVDVF9ESVIpL0dQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJv
Y2Vzcy5tZXNzYWdlcy5pbgogJChQUk9KRUNUX0RJUikvR1BVUHJvY2Vzcy9HUFVQcm9jZXNzLm1l
c3NhZ2VzLmluCiAkKFBST0pFQ1RfRElSKS9HUFVQcm9jZXNzL21hYy9jb20uYXBwbGUuV2ViS2l0
LkdQVVByb2Nlc3Muc2IuaW4KKyQoUFJPSkVDVF9ESVIpL0dQVVByb2Nlc3MvbWVkaWEvUmVtb3Rl
TWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHkubWVzc2FnZXMuaW4KICQoUFJPSkVDVF9ESVIpL05ldHdv
cmtQcm9jZXNzL0Nvb2tpZXMvV2ViQ29va2llTWFuYWdlci5tZXNzYWdlcy5pbgogJChQUk9KRUNU
X0RJUikvTmV0d29ya1Byb2Nlc3MvQ3VzdG9tUHJvdG9jb2xzL0xlZ2FjeUN1c3RvbVByb3RvY29s
TWFuYWdlci5tZXNzYWdlcy5pbgogJChQUk9KRUNUX0RJUikvTmV0d29ya1Byb2Nlc3MvSW5kZXhl
ZERCL1dlYklEQkNvbm5lY3Rpb25Ub0NsaWVudC5tZXNzYWdlcy5pbgpAQCAtOTcsNiArOTgsNyBA
QCAkKFBST0pFQ1RfRElSKS9XZWJQcm9jZXNzL0NhY2hlL1dlYkNhY2hlU3RvcmFnZUNvbm5lY3Rp
b24ubWVzc2FnZXMuaW4KICQoUFJPSkVDVF9ESVIpL1dlYlByb2Nlc3MvRGF0YWJhc2VzL0luZGV4
ZWREQi9XZWJJREJDb25uZWN0aW9uVG9TZXJ2ZXIubWVzc2FnZXMuaW4KICQoUFJPSkVDVF9ESVIp
L1dlYlByb2Nlc3MvRnVsbFNjcmVlbi9XZWJGdWxsU2NyZWVuTWFuYWdlci5tZXNzYWdlcy5pbgog
JChQUk9KRUNUX0RJUikvV2ViUHJvY2Vzcy9HUFUvR1BVUHJvY2Vzc0Nvbm5lY3Rpb24ubWVzc2Fn
ZXMuaW4KKyQoUFJPSkVDVF9ESVIpL1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZU1lZGlhUGxh
eWVyTWFuYWdlci5tZXNzYWdlcy5pbgogJChQUk9KRUNUX0RJUikvV2ViUHJvY2Vzcy9HZW9sb2Nh
dGlvbi9XZWJHZW9sb2NhdGlvbk1hbmFnZXIubWVzc2FnZXMuaW4KICQoUFJPSkVDVF9ESVIpL1dl
YlByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24ubWVzc2FnZXMuaW4KICQo
UFJPSkVDVF9ESVIpL1dlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRlci5tZXNzYWdl
cy5pbgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9EZXJpdmVkU291cmNlcy1vdXRwdXQueGNm
aWxlbGlzdCBiL1NvdXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMtb3V0cHV0LnhjZmlsZWxpc3QK
aW5kZXggM2IxZTk0MTE3MDM4YmYwZDA0YTA3NTdmNWU2ZDg1ZTMzNGJkNzVhZS4uYzhhM2I0OTVj
MGNlNTU0MTI5OTIzNjgxMTMyMDBkYTJiOTQwNzkyOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9EZXJpdmVkU291cmNlcy1vdXRwdXQueGNmaWxlbGlzdAorKysgYi9Tb3VyY2UvV2ViS2l0L0Rl
cml2ZWRTb3VyY2VzLW91dHB1dC54Y2ZpbGVsaXN0CkBAIC0xMTQsNiArMTE0LDEyIEBAICQoQlVJ
TFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQyL1BsdWdpblByb3h5TWVzc2Fn
ZXNSZXBsaWVzLmgKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQy
L1JlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhUHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwCiAkKEJV
SUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9SZW1vdGVMYXllclRyZWVE
cmF3aW5nQXJlYVByb3h5TWVzc2FnZXMuaAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRT
b3VyY2VzL1dlYktpdDIvUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWFQcm94eU1lc3NhZ2VzUmVw
bGllcy5oCiskKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9SZW1v
dGVNZWRpYVBsYXllck1hbmFnZXJNZXNzYWdlUmVjZWl2ZXIuY3BwCiskKEJVSUxUX1BST0RVQ1RT
X0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9SZW1vdGVNZWRpYVBsYXllck1hbmFnZXJNZXNz
YWdlcy5oCiskKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9SZW1v
dGVNZWRpYVBsYXllck1hbmFnZXJNZXNzYWdlc1JlcGxpZXMuaAorJChCVUlMVF9QUk9EVUNUU19E
SVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIvUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHlN
ZXNzYWdlUmVjZWl2ZXIuY3BwCiskKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMv
V2ViS2l0Mi9SZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eU1lc3NhZ2VzLmgKKyQoQlVJTFRf
UFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQyL1JlbW90ZU1lZGlhUGxheWVyTWFu
YWdlclByb3h5TWVzc2FnZXNSZXBsaWVzLmgKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVk
U291cmNlcy9XZWJLaXQyL1JlbW90ZU9iamVjdFJlZ2lzdHJ5TWVzc2FnZVJlY2VpdmVyLmNwcAog
JChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIvUmVtb3RlT2JqZWN0
UmVnaXN0cnlNZXNzYWdlcy5oCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMv
V2ViS2l0Mi9SZW1vdGVPYmplY3RSZWdpc3RyeU1lc3NhZ2VzUmVwbGllcy5oCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2VzLm1ha2UgYi9Tb3VyY2UvV2ViS2l0L0Rlcml2
ZWRTb3VyY2VzLm1ha2UKaW5kZXggYmU1MjVlMTNjNTliYmQxNDU2ZThmMGQ0MjNiYTY0NDFjZThi
MDhkYS4uOTZmM2EyZWNlZjMxMThjZTIzZjM4NzUxZDcyZTJhYjA4M2NmNGFjNCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9EZXJpdmVkU291cmNlcy5tYWtlCisrKyBiL1NvdXJjZS9XZWJLaXQv
RGVyaXZlZFNvdXJjZXMubWFrZQpAQCAtMjQsNiArMjQsNyBAQCBWUEFUSCA9IFwKICAgICAkKFdl
YktpdDIpIFwKICAgICAkKFdlYktpdDIpL0dQVVByb2Nlc3MgXAogICAgICQoV2ViS2l0MikvR1BV
UHJvY2Vzcy9tYWMgXAorICAgICQoV2ViS2l0MikvR1BVUHJvY2Vzcy9tZWRpYSBcCiAgICAgJChX
ZWJLaXQyKS9OZXR3b3JrUHJvY2VzcyBcCiAgICAgJChXZWJLaXQyKS9OZXR3b3JrUHJvY2Vzcy9D
b29raWVzIFwKICAgICAkKFdlYktpdDIpL05ldHdvcmtQcm9jZXNzL2NhY2hlIFwKQEAgLTQ5LDYg
KzUwLDcgQEAgVlBBVEggPSBcCiAgICAgJChXZWJLaXQyKS9XZWJQcm9jZXNzL0Z1bGxTY3JlZW4g
XAogICAgICQoV2ViS2l0MikvV2ViUHJvY2Vzcy9HZW9sb2NhdGlvbiBcCiAgICAgJChXZWJLaXQy
KS9XZWJQcm9jZXNzL0dQVSBcCisgICAgJChXZWJLaXQyKS9XZWJQcm9jZXNzL0dQVS9tZWRpYSBc
CiAgICAgJChXZWJLaXQyKS9XZWJQcm9jZXNzL0ljb25EYXRhYmFzZSBcCiAgICAgJChXZWJLaXQy
KS9XZWJQcm9jZXNzL01lZGlhQ2FjaGUgXAogICAgICQoV2ViS2l0MikvV2ViUHJvY2Vzcy9NZWRp
YVN0cmVhbSBcCkBAIC0xMzUsNiArMTM3LDggQEAgTUVTU0FHRV9SRUNFSVZFUlMgPSBcCiAgICAg
UGx1Z2luUHJvY2Vzc1Byb3h5IFwKICAgICBQbHVnaW5Qcm94eSBcCiAgICAgUmVtb3RlTGF5ZXJU
cmVlRHJhd2luZ0FyZWFQcm94eSBcCisgICAgUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyIFwKKyAg
ICBSZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eSBcCiAgICAgUmVtb3RlT2JqZWN0UmVnaXN0
cnkgXAogICAgIFJlbW90ZVNjcm9sbGluZ0Nvb3JkaW5hdG9yIFwKICAgICBSZW1vdGVXZWJJbnNw
ZWN0b3JQcm94eSBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BVQ29u
bmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BVQ29u
bmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAKaW5kZXggYmQxMzlmZTUzMzFiY2NlMzZjMzM0M2IxNTIx
N2QwMTFmMjUyNGMzOC4uNDdhOWFjM2NjMWZkN2VhZmVmZGU2Yjk0MDNiMGNhZGNhMmI2OWMyZCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9X
ZWJQcm9jZXNzLmNwcApAQCAtMzUsNiArMzUsOCBAQAogI2luY2x1ZGUgIkdQVVByb2Nlc3NQcm94
eU1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiTG9nZ2luZy5oIgogI2luY2x1ZGUgIlJlbW90ZUxheWVy
VHJlZURyYXdpbmdBcmVhUHJveHlNZXNzYWdlcy5oIgorI2luY2x1ZGUgIlJlbW90ZU1lZGlhUGxh
eWVyTWFuYWdlclByb3h5LmgiCisjaW5jbHVkZSAiUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJv
eHlNZXNzYWdlcy5oIgogI2luY2x1ZGUgIlJlbW90ZVNjcm9sbGluZ0Nvb3JkaW5hdG9yVHJhbnNh
Y3Rpb24uaCIKICNpbmNsdWRlICJXZWJDb3JlQXJndW1lbnRDb2RlcnMuaCIKICNpbmNsdWRlICJX
ZWJFcnJvcnMuaCIKQEAgLTUyLDYgKzU0LDcgQEAgR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6
R1BVQ29ubmVjdGlvblRvV2ViUHJvY2VzcyhHUFVQcm9jZXNzJiBncHVQcm9jZXNzLCBXZWIKICAg
ICA6IG1fY29ubmVjdGlvbihJUEM6OkNvbm5lY3Rpb246OmNyZWF0ZVNlcnZlckNvbm5lY3Rpb24o
Y29ubmVjdGlvbklkZW50aWZpZXIsICp0aGlzKSkKICAgICAsIG1fZ3B1UHJvY2VzcyhncHVQcm9j
ZXNzKQogICAgICwgbV93ZWJQcm9jZXNzSWRlbnRpZmllcih3ZWJQcm9jZXNzSWRlbnRpZmllcikK
KyAgICAsIG1fcmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHkobWFrZVVuaXF1ZTxSZW1vdGVN
ZWRpYVBsYXllck1hbmFnZXJQcm94eT4oKnRoaXMpKQogewogICAgIFJFTEVBU0VfQVNTRVJUKFJ1
bkxvb3A6OmlzTWFpbigpKTsKICAgICBtX2Nvbm5lY3Rpb24tPm9wZW4oKTsKQEAgLTYxLDYgKzY0
LDcgQEAgR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6fkdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nl
c3MoKQogewogICAgIFJFTEVBU0VfQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKIAorICAgIG1f
cmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHkgPSBudWxscHRyOwogICAgIG1fY29ubmVjdGlv
bi0+aW52YWxpZGF0ZSgpOwogfQogCkBAIC03NCw2ICs3OCwyNiBAQCB2b2lkIEdQVUNvbm5lY3Rp
b25Ub1dlYlByb2Nlc3M6OmRpZFJlY2VpdmVJbnZhbGlkTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24m
IGNvbm5lYwogICAgIENSQVNIKCk7CiB9CiAKK3ZvaWQgR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vz
czo6ZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBJUEM6OkRl
Y29kZXImIGRlY29kZXIpCit7CisgICAgaWYgKGRlY29kZXIubWVzc2FnZVJlY2VpdmVyTmFtZSgp
ID09IE1lc3NhZ2VzOjpSZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eTo6bWVzc2FnZVJlY2Vp
dmVyTmFtZSgpKSB7CisgICAgICAgIGlmIChtX3JlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5
KQorICAgICAgICAgICAgbV9yZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eS0+ZGlkUmVjZWl2
ZU1lc3NhZ2VGcm9tV2ViUHJvY2Vzcyhjb25uZWN0aW9uLCBkZWNvZGVyKTsKKyAgICAgICAgcmV0
dXJuOworICAgIH0KK30KKwordm9pZCBHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpkaWRSZWNl
aXZlU3luY01lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBJUEM6OkRlY29kZXIm
IGRlY29kZXIsIHN0ZDo6dW5pcXVlX3B0cjxJUEM6OkVuY29kZXI+JiByZXBseUVuY29kZXIpCit7
CisgICAgaWYgKGRlY29kZXIubWVzc2FnZVJlY2VpdmVyTmFtZSgpID09IE1lc3NhZ2VzOjpSZW1v
dGVNZWRpYVBsYXllck1hbmFnZXJQcm94eTo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpKSB7CisgICAg
ICAgIGlmIChtX3JlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5KQorICAgICAgICAgICAgbV9y
ZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eS0+ZGlkUmVjZWl2ZVN5bmNNZXNzYWdlRnJvbVdl
YlByb2Nlc3MoY29ubmVjdGlvbiwgZGVjb2RlciwgcmVwbHlFbmNvZGVyKTsKKyAgICAgICAgcmV0
dXJuOworICAgIH0KKworICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworfQorCiB9IC8vIG5hbWVz
cGFjZSBXZWJLaXQKIAogI2VuZGlmIC8vIEVOQUJMRShHUFVfUFJPQ0VTUykKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmggYi9T
b3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oCmluZGV4
IGY5MGNiMjhmMjg3ZWNlMWZmZmQxNDVmZTEyNDhkYjk5NzVjZWIwMmQuLmIyZjg3YzkxZDUxMmE5
OGM4ZWYyODY0NTU1ODljNjQwYzQwYzRiMjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BV
UHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgKKysrIGIvU291cmNlL1dlYktpdC9H
UFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaApAQCAtMzYsNiArMzYsNyBAQAog
bmFtZXNwYWNlIFdlYktpdCB7CiAKIGNsYXNzIEdQVVByb2Nlc3M7CitjbGFzcyBSZW1vdGVNZWRp
YVBsYXllck1hbmFnZXJQcm94eTsKIAogY2xhc3MgR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcwog
ICAgIDogcHVibGljIFJlZkNvdW50ZWQ8R1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcz4KQEAgLTU4
LDEwICs1OSwxMyBAQCBwcml2YXRlOgogICAgIC8vIElQQzo6Q29ubmVjdGlvbjo6Q2xpZW50CiAg
ICAgdm9pZCBkaWRDbG9zZShJUEM6OkNvbm5lY3Rpb24mKSBvdmVycmlkZTsKICAgICB2b2lkIGRp
ZFJlY2VpdmVJbnZhbGlkTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OlN0cmluZ1JlZmVy
ZW5jZSBtZXNzYWdlUmVjZWl2ZXJOYW1lLCBJUEM6OlN0cmluZ1JlZmVyZW5jZSBtZXNzYWdlTmFt
ZSkgb3ZlcnJpZGU7CisgICAgdm9pZCBkaWRSZWNlaXZlTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24m
LCBJUEM6OkRlY29kZXImKSBvdmVycmlkZTsKKyAgICB2b2lkIGRpZFJlY2VpdmVTeW5jTWVzc2Fn
ZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImLCBzdGQ6OnVuaXF1ZV9wdHI8SVBDOjpF
bmNvZGVyPiYpIG92ZXJyaWRlOwogCiAgICAgUmVmPElQQzo6Q29ubmVjdGlvbj4gbV9jb25uZWN0
aW9uOwogICAgIFJlZjxHUFVQcm9jZXNzPiBtX2dwdVByb2Nlc3M7CiAgICAgY29uc3QgV2ViQ29y
ZTo6UHJvY2Vzc0lkZW50aWZpZXIgbV93ZWJQcm9jZXNzSWRlbnRpZmllcjsKKyAgICBzdGQ6OnVu
aXF1ZV9wdHI8UmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHk+IG1fcmVtb3RlTWVkaWFQbGF5
ZXJNYW5hZ2VyUHJveHk7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQ
cm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFQbGF5
ZXJNYW5hZ2VyUHJveHkuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjA5Yjg3NTQwODkzYTY5ODI2MTFhNWMyNzA5
YmZjYjFmZjY1ZGU3NzcKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nl
c3MvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHkuY3BwCkBAIC0wLDAgKzEsMjAz
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICog
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlJlbW90ZU1l
ZGlhUGxheWVyTWFuYWdlclByb3h5LmgiCisKKyNpZiBFTkFCTEUoR1BVX1BST0NFU1MpCisKKyNp
bmNsdWRlICJHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgiCisjaW5jbHVkZSAiUmVtb3RlTWVk
aWFQbGF5ZXJNYW5hZ2VyTWVzc2FnZXMuaCIKKyNpbmNsdWRlICJSZW1vdGVNZWRpYVBsYXllck1h
bmFnZXJQcm94eU1lc3NhZ2VzLmgiCisjaW5jbHVkZSAiV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgi
CisjaW5jbHVkZSA8V2ViQ29yZS9NZWRpYVBsYXllci5oPgorI2luY2x1ZGUgPFdlYkNvcmUvTWVk
aWFQbGF5ZXJQcml2YXRlLmg+CisjaW5jbHVkZSA8d3RmL1VuaXF1ZVJlZi5oPgorCisjZGVmaW5l
IE1FU1NBR0VfQ0hFQ0tfQ09OVEVYVElEKGlkZW50aWZpZXIpIE1FU1NBR0VfQ0hFQ0tfQkFTRSht
X3Byb3hpZXMuaXNWYWxpZEtleShpZGVudGlmaWVyKSwgJm1fd2ViUHJvY2Vzc0Nvbm5lY3Rpb24u
Y29ubmVjdGlvbigpKQorCituYW1lc3BhY2UgV2ViS2l0IHsKK3VzaW5nIG5hbWVzcGFjZSBXZWJD
b3JlOworCisjaWYgIVJFTEVBU0VfTE9HX0RJU0FCTEVECitzdGF0aWMgUmVmUHRyPExvZ2dlcj4m
IG51bGxMb2dnZXIoKQoreworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxSZWZQdHI8TG9nZ2Vy
Pj4gbG9nZ2VyOworICAgIHJldHVybiBsb2dnZXI7Cit9CisjZW5kaWYKKworY2xhc3MgUmVtb3Rl
TWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHk6OlBsYXllclByb3h5CisgICAgOiBwdWJsaWMgTWVkaWFQ
bGF5ZXJDbGllbnQgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOworcHVibGljOgorICAg
IFBsYXllclByb3h5KGNvbnN0IE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZUlkZW50aWZpZXImIGlk
LCBSZWY8SVBDOjpDb25uZWN0aW9uPiYmIGNvbm5lY3Rpb24sIE1lZGlhUGxheWVyRW51bXM6Ok1l
ZGlhRW5naW5lSWRlbnRpZmllciBlbmdpbmVJZGVudGlmaWVyKQorICAgICAgICA6IG1faWQoaWQp
CisgICAgICAgICwgbV9jb25uZWN0aW9uKFdURk1vdmUoY29ubmVjdGlvbikpCisgICAgICAgICwg
bV9lbmdpbmVJZGVudGlmaWVyKGVuZ2luZUlkZW50aWZpZXIpCisgICAgeworICAgIH0KKworICAg
IHZpcnR1YWwgflBsYXllclByb3h5KCkKKyAgICB7CisgICAgfQorCitwcml2YXRlOgorCisgICAg
Ly8gTWVkaWFQbGF5ZXJDbGllbnQKKyAgICBjb25zdCBWZWN0b3I8V2ViQ29yZTo6Q29udGVudFR5
cGU+JiBtZWRpYUNvbnRlbnRUeXBlc1JlcXVpcmluZ0hhcmR3YXJlU3VwcG9ydCgpIGNvbnN0IGZp
bmFsIHsgcmV0dXJuIG1fdHlwZXNSZXF1aXJpbmdIYXJkd2FyZVN1cHBvcnQ7IH0KKworI2lmICFS
RUxFQVNFX0xPR19ESVNBQkxFRAorICAgIGNvbnN0IExvZ2dlciYgbWVkaWFQbGF5ZXJMb2dnZXIo
KSBmaW5hbAorICAgIHsKKyAgICAgICAgaWYgKCFudWxsTG9nZ2VyKCkuZ2V0KCkpIHsKKyAgICAg
ICAgICAgIG51bGxMb2dnZXIoKSA9IExvZ2dlcjo6Y3JlYXRlKHRoaXMpOworICAgICAgICAgICAg
bnVsbExvZ2dlcigpLT5zZXRFbmFibGVkKHRoaXMsIGZhbHNlKTsKKyAgICAgICAgfQorCisgICAg
ICAgIHJldHVybiAqbnVsbExvZ2dlcigpLmdldCgpOworICAgIH0KKyNlbmRpZgorCitwcm90ZWN0
ZWQ6CisgICAgTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlSWRlbnRpZmllciBtX2lkOworICAgIFJl
ZjxJUEM6OkNvbm5lY3Rpb24+IG1fY29ubmVjdGlvbjsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8TWVk
aWFQbGF5ZXJQcml2YXRlSW50ZXJmYWNlPiBtX3BsYXllcjsKKyAgICBNZWRpYVBsYXllckVudW1z
OjpNZWRpYUVuZ2luZUlkZW50aWZpZXIgbV9lbmdpbmVJZGVudGlmaWVyOworICAgIFZlY3RvcjxX
ZWJDb3JlOjpDb250ZW50VHlwZT4gbV90eXBlc1JlcXVpcmluZ0hhcmR3YXJlU3VwcG9ydDsKK307
CisKK1JlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5OjpSZW1vdGVNZWRpYVBsYXllck1hbmFn
ZXJQcm94eShHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzJiBjb25uZWN0aW9uKQorICAgIDogbV93
ZWJQcm9jZXNzQ29ubmVjdGlvbihjb25uZWN0aW9uKQoreworfQorCitSZW1vdGVNZWRpYVBsYXll
ck1hbmFnZXJQcm94eTo6flJlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5KCkKK3sKK30KKwor
dm9pZCBSZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eTo6Y3JlYXRlTWVkaWFQbGF5ZXIoY29u
c3QgTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlSWRlbnRpZmllciYgaWQsIE1lZGlhUGxheWVyRW51
bXM6Ok1lZGlhRW5naW5lSWRlbnRpZmllciBlbmdpbmVJZGVudGlmaWVyLCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKGJvb2wgc3VjY2VlZGVkKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyAgICBN
RVNTQUdFX0NIRUNLX0NPTlRFWFRJRChpZCk7CisKKyAgICBBU1NFUlQoIW1fcHJveGllcy5jb250
YWlucyhpZCkpOworICAgIG1fcHJveGllcy5hZGQoaWQsIG1ha2VVbmlxdWU8UGxheWVyUHJveHk+
KGlkLCBtX3dlYlByb2Nlc3NDb25uZWN0aW9uLmNvbm5lY3Rpb24oKSwgZW5naW5lSWRlbnRpZmll
cikpOworCisgICAgY29tcGxldGlvbkhhbmRsZXIodHJ1ZSk7Cit9CisKK3ZvaWQgUmVtb3RlTWVk
aWFQbGF5ZXJNYW5hZ2VyUHJveHk6OmdldFN1cHBvcnRlZFR5cGVzKE1lZGlhUGxheWVyRW51bXM6
Ok1lZGlhRW5naW5lSWRlbnRpZmllciBlbmdpbmVJZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKFZlY3RvcjxTdHJpbmc+JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQoreworICAgIGF1
dG8gZW5naW5lID0gTWVkaWFQbGF5ZXI6Om1lZGlhRW5naW5lKGVuZ2luZUlkZW50aWZpZXIpOwor
ICAgIGlmICghZW5naW5lKSB7CisgICAgICAgIFdURkxvZ0Fsd2F5cygiRmFpbGVkIHRvIGZpbmQg
bWVkaWEgZW5naW5lLiIpOworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcih7IH0pOworICAgICAg
ICByZXR1cm47CisgICAgfQorCisgICAgSGFzaFNldDxTdHJpbmcsIEFTQ0lJQ2FzZUluc2Vuc2l0
aXZlSGFzaD4gZW5naW5lVHlwZXM7CisgICAgZW5naW5lLT5nZXRTdXBwb3J0ZWRUeXBlcyhlbmdp
bmVUeXBlcyk7CisKKyAgICBWZWN0b3I8U3RyaW5nPiByZXN1bHQ7CisgICAgZm9yIChhdXRvJiB0
eXBlIDogZW5naW5lVHlwZXMpCisgICAgICAgIHJlc3VsdC5hcHBlbmQodHlwZSk7CisKKyAgICBj
b21wbGV0aW9uSGFuZGxlcihXVEZNb3ZlKHJlc3VsdCkpOworfQorCit2b2lkIFJlbW90ZU1lZGlh
UGxheWVyTWFuYWdlclByb3h5OjpzdXBwb3J0c1R5cGUoTWVkaWFQbGF5ZXJFbnVtczo6TWVkaWFF
bmdpbmVJZGVudGlmaWVyIGVuZ2luZUlkZW50aWZpZXIsIGNvbnN0IFdlYkNvcmU6Ok1lZGlhRW5n
aW5lU3VwcG9ydFBhcmFtZXRlcnMmJiBwYXJhbWV0ZXJzLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KE1lZGlhUGxheWVyOjpTdXBwb3J0c1R5cGUpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQoreworICAg
IGF1dG8gZW5naW5lID0gTWVkaWFQbGF5ZXI6Om1lZGlhRW5naW5lKGVuZ2luZUlkZW50aWZpZXIp
OworICAgIGlmICghZW5naW5lKSB7CisgICAgICAgIFdURkxvZ0Fsd2F5cygiRmFpbGVkIHRvIGZp
bmQgbWVkaWEgZW5naW5lLiIpOworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihNZWRpYVBsYXll
cjo6U3VwcG9ydHNUeXBlOjpJc05vdFN1cHBvcnRlZCk7CisgICAgICAgIHJldHVybjsKKyAgICB9
CisKKyAgICBhdXRvIHJlc3VsdCA9IGVuZ2luZS0+c3VwcG9ydHNUeXBlQW5kQ29kZWNzKHBhcmFt
ZXRlcnMpOworICAgIGNvbXBsZXRpb25IYW5kbGVyKHJlc3VsdCk7Cit9CisKK3ZvaWQgUmVtb3Rl
TWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHk6Om9yaWdpbnNJbk1lZGlhQ2FjaGUoTWVkaWFQbGF5ZXJF
bnVtczo6TWVkaWFFbmdpbmVJZGVudGlmaWVyIGVuZ2luZUlkZW50aWZpZXIsIGNvbnN0IFN0cmlu
ZyYmIHBhdGgsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoVmVjdG9yPFdlYkNvcmU6OlNlY3VyaXR5
T3JpZ2luRGF0YT4mJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCit7CisgICAgYXV0byBlbmdpbmUg
PSBNZWRpYVBsYXllcjo6bWVkaWFFbmdpbmUoZW5naW5lSWRlbnRpZmllcik7CisgICAgaWYgKCFl
bmdpbmUpIHsKKyAgICAgICAgV1RGTG9nQWx3YXlzKCJGYWlsZWQgdG8gZmluZCBtZWRpYSBlbmdp
bmUuIik7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHsgfSk7CisgICAgICAgIHJldHVybjsK
KyAgICB9CisKKyAgICBhdXRvIG9yaWdpbnMgPSBlbmdpbmUtPm9yaWdpbnNJbk1lZGlhQ2FjaGUo
cGF0aCk7CisKKyAgICBWZWN0b3I8V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhPiByZXN1bHQ7
CisgICAgZm9yIChhdXRvJiBvcmlnaW4gOiBvcmlnaW5zKQorICAgICAgICByZXN1bHQuYXBwZW5k
KG9yaWdpbi0+ZGF0YSgpKTsKKworICAgIGNvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUocmVzdWx0
KSk7Cit9CisKK3ZvaWQgUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHk6OmNsZWFyTWVkaWFD
YWNoZShNZWRpYVBsYXllckVudW1zOjpNZWRpYUVuZ2luZUlkZW50aWZpZXIgZW5naW5lSWRlbnRp
ZmllciwgY29uc3QgU3RyaW5nJiZwYXRoLCBXYWxsVGltZSBtb2RpZmllZFNpbmNlKQoreworICAg
IGF1dG8gZW5naW5lID0gTWVkaWFQbGF5ZXI6Om1lZGlhRW5naW5lKGVuZ2luZUlkZW50aWZpZXIp
OworICAgIGlmICghZW5naW5lKSB7CisgICAgICAgIFdURkxvZ0Fsd2F5cygiRmFpbGVkIHRvIGZp
bmQgbWVkaWEgZW5naW5lLiIpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgZW5naW5l
LT5jbGVhck1lZGlhQ2FjaGUocGF0aCwgbW9kaWZpZWRTaW5jZSk7Cit9CisKK3ZvaWQgUmVtb3Rl
TWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHk6OmNsZWFyTWVkaWFDYWNoZUZvck9yaWdpbnMoTWVkaWFQ
bGF5ZXJFbnVtczo6TWVkaWFFbmdpbmVJZGVudGlmaWVyIGVuZ2luZUlkZW50aWZpZXIsIGNvbnN0
IFN0cmluZyYmIHBhdGgsIFZlY3RvcjxXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGE+JiYgb3Jp
Z2luRGF0YSkKK3sKKyAgICBhdXRvIGVuZ2luZSA9IE1lZGlhUGxheWVyOjptZWRpYUVuZ2luZShl
bmdpbmVJZGVudGlmaWVyKTsKKyAgICBpZiAoIWVuZ2luZSkgeworICAgICAgICBXVEZMb2dBbHdh
eXMoIkZhaWxlZCB0byBmaW5kIG1lZGlhIGVuZ2luZS4iKTsKKyAgICAgICAgcmV0dXJuOworICAg
IH0KKworICAgIEhhc2hTZXQ8UmVmUHRyPFNlY3VyaXR5T3JpZ2luPj4gb3JpZ2luczsKKyAgICBm
b3IgKGF1dG8mIGRhdGEgOiBvcmlnaW5EYXRhKQorICAgICAgICBvcmlnaW5zLmFkZChkYXRhLnNl
Y3VyaXR5T3JpZ2luKCkpOworCisgICAgZW5naW5lLT5jbGVhck1lZGlhQ2FjaGVGb3JPcmlnaW5z
KHBhdGgsIG9yaWdpbnMpOworfQorCit2b2lkIFJlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5
OjpzdXBwb3J0c0tleVN5c3RlbShNZWRpYVBsYXllckVudW1zOjpNZWRpYUVuZ2luZUlkZW50aWZp
ZXIgZW5naW5lSWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiYga2V5U3lzdGVtLCBjb25zdCBTdHJp
bmcmJiBtaW1lVHlwZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBjb21wbGV0aW9u
SGFuZGxlcikKK3sKKyAgICBhdXRvIGVuZ2luZSA9IE1lZGlhUGxheWVyOjptZWRpYUVuZ2luZShl
bmdpbmVJZGVudGlmaWVyKTsKKyAgICBpZiAoIWVuZ2luZSkgeworICAgICAgICBXVEZMb2dBbHdh
eXMoIkZhaWxlZCB0byBmaW5kIG1lZGlhIGVuZ2luZS4iKTsKKyAgICAgICAgcmV0dXJuOworICAg
IH0KKworICAgIGF1dG8gcmVzdWx0ID0gZW5naW5lLT5zdXBwb3J0c0tleVN5c3RlbShrZXlTeXN0
ZW0sIG1pbWVUeXBlKTsKKyAgICBjb21wbGV0aW9uSGFuZGxlcihyZXN1bHQpOworfQorCit9CisK
KyN1bmRlZiBNRVNTQUdFX0NIRUNLX0NPTlRFWFRJRAorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94
eS5oIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyTWFu
YWdlclByb3h5LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYjQyYzhjNTM5MzlhYzUxYmRiN2VjNGQ1YmZiMWYwNDg4
ZTQzNzUyNwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRp
YS9SZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eS5oCkBAIC0wLDAgKzEsNzQgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQg
SVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykKKworI2luY2x1
ZGUgIkNvbm5lY3Rpb24uaCIKKyNpbmNsdWRlICJNZWRpYVBsYXllclByaXZhdGVSZW1vdGVJZGVu
dGlmaWVyLmgiCisjaW5jbHVkZSAiTWVzc2FnZVJlY2VpdmVyLmgiCisjaW5jbHVkZSA8V2ViQ29y
ZS9NZWRpYVBsYXllci5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3MgR1BVQ29ubmVj
dGlvblRvV2ViUHJvY2VzczsKKworY2xhc3MgUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHkg
OiBwcml2YXRlIElQQzo6TWVzc2FnZVJlY2VpdmVyIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9D
QVRFRDsKK3B1YmxpYzoKKyAgICBleHBsaWNpdCBSZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94
eShHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzJik7CisgICAgflJlbW90ZU1lZGlhUGxheWVyTWFu
YWdlclByb3h5KCk7CisKKyAgICBHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzJiB3ZWJQcm9jZXNz
Q29ubmVjdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fd2ViUHJvY2Vzc0Nvbm5lY3Rpb247IH0KKyAg
ICB2b2lkIGNsZWFyKCk7CisKKyAgICB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlRnJvbVdlYlByb2Nl
c3MoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBJUEM6OkRlY29kZXImIGRlY29kZXIpIHsg
ZGlkUmVjZWl2ZU1lc3NhZ2UoY29ubmVjdGlvbiwgZGVjb2Rlcik7IH0KKyAgICB2b2lkIGRpZFJl
Y2VpdmVTeW5jTWVzc2FnZUZyb21XZWJQcm9jZXNzKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlv
biwgSVBDOjpEZWNvZGVyJiBkZWNvZGVyLCBzdGQ6OnVuaXF1ZV9wdHI8SVBDOjpFbmNvZGVyPiYg
ZW5jb2RlcikgeyBkaWRSZWNlaXZlU3luY01lc3NhZ2UoY29ubmVjdGlvbiwgZGVjb2RlciwgZW5j
b2Rlcik7IH0KKworcHJpdmF0ZToKKyAgICAvLyBJUEM6Ok1lc3NhZ2VSZWNlaXZlcgorICAgIHZv
aWQgZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJikgZmlu
YWw7CisgICAgdm9pZCBkaWRSZWNlaXZlU3luY01lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBD
OjpEZWNvZGVyJiwgc3RkOjp1bmlxdWVfcHRyPElQQzo6RW5jb2Rlcj4mKSBmaW5hbDsKKworICAg
IHZvaWQgY3JlYXRlTWVkaWFQbGF5ZXIoY29uc3QgTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlSWRl
bnRpZmllciYsIFdlYkNvcmU6Ok1lZGlhUGxheWVyRW51bXM6Ok1lZGlhRW5naW5lSWRlbnRpZmll
ciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJik7CisKKyAgICB2b2lkIGdldFN1cHBv
cnRlZFR5cGVzKFdlYkNvcmU6Ok1lZGlhUGxheWVyRW51bXM6Ok1lZGlhRW5naW5lSWRlbnRpZmll
ciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChWZWN0b3I8U3RyaW5nPiYmKT4mJik7CisgICAgdm9p
ZCBzdXBwb3J0c1R5cGUoV2ViQ29yZTo6TWVkaWFQbGF5ZXJFbnVtczo6TWVkaWFFbmdpbmVJZGVu
dGlmaWVyLCBjb25zdCBXZWJDb3JlOjpNZWRpYUVuZ2luZVN1cHBvcnRQYXJhbWV0ZXJzJiYsIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoV2ViQ29yZTo6TWVkaWFQbGF5ZXI6OlN1cHBvcnRzVHlwZSk+
JiYpOworCisgICAgdm9pZCBvcmlnaW5zSW5NZWRpYUNhY2hlKFdlYkNvcmU6Ok1lZGlhUGxheWVy
RW51bXM6Ok1lZGlhRW5naW5lSWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiYsIENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoVmVjdG9yPFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YT4mJik+JiYpOwor
ICAgIHZvaWQgY2xlYXJNZWRpYUNhY2hlKFdlYkNvcmU6Ok1lZGlhUGxheWVyRW51bXM6Ok1lZGlh
RW5naW5lSWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiYsIFdhbGxUaW1lKTsKKyAgICB2b2lkIGNs
ZWFyTWVkaWFDYWNoZUZvck9yaWdpbnMoV2ViQ29yZTo6TWVkaWFQbGF5ZXJFbnVtczo6TWVkaWFF
bmdpbmVJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmJiwgVmVjdG9yPFdlYkNvcmU6OlNlY3VyaXR5
T3JpZ2luRGF0YT4mJik7CisgICAgdm9pZCBzdXBwb3J0c0tleVN5c3RlbShXZWJDb3JlOjpNZWRp
YVBsYXllckVudW1zOjpNZWRpYUVuZ2luZUlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYmLCBjb25z
dCBTdHJpbmcmJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJik7CisKKyAgICBjbGFz
cyBQbGF5ZXJQcm94eTsKKyAgICBmcmllbmQgY2xhc3MgUGxheWVyUHJveHk7CisgICAgSGFzaE1h
cDxNZWRpYVBsYXllclByaXZhdGVSZW1vdGVJZGVudGlmaWVyLCBzdGQ6OnVuaXF1ZV9wdHI8UGxh
eWVyUHJveHk+PiBtX3Byb3hpZXM7CisgICAgR1BVQ29ubmVjdGlvblRvV2ViUHJvY2VzcyYgbV93
ZWJQcm9jZXNzQ29ubmVjdGlvbjsKK307CisKK30KKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHku
bWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFQ
bGF5ZXJNYW5hZ2VyUHJveHkubWVzc2FnZXMuaW4KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMWJmYzRjNzgyYTMxNmUw
Yjg2MGE3ZDViZWEwOTIwNGVhZTAyZjM0MwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJL
aXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eS5tZXNzYWdl
cy5pbgpAQCAtMCwwICsxLDM3IEBACisjIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyMgYXJlIG1l
dDoKKyMgMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisjICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyMgQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisj
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyMgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisjIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyMgQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YKKyMgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisjIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisjIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpCisjIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyMgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorCisjaWYgRU5BQkxFKFZJREVPKQorCittZXNzYWdlcyAtPiBSZW1vdGVNZWRpYVBsYXllck1h
bmFnZXJQcm94eSBOb3RSZWZDb3VudGVkIHsKKyAgICBDcmVhdGVNZWRpYVBsYXllcihXZWJLaXQ6
Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZUlkZW50aWZpZXIgaWQsIGVudW06dWludDhfdCBXZWJD
b3JlOjpNZWRpYVBsYXllckVudW1zOjpNZWRpYUVuZ2luZUlkZW50aWZpZXIgcmVtb3RlRW5naW5l
SWRlbnRpZmllcikgLT4gKGJvb2wgc3VjY2VzcykgU3luY2hyb25vdXMKKworICAgIEdldFN1cHBv
cnRlZFR5cGVzKGVudW06dWludDhfdCBXZWJDb3JlOjpNZWRpYVBsYXllckVudW1zOjpNZWRpYUVu
Z2luZUlkZW50aWZpZXIgcmVtb3RlRW5naW5lSWRlbnRpZmllcikgLT4gKFZlY3RvcjxTdHJpbmc+
IHR5cGVzKSBTeW5jaHJvbm91cworICAgIFN1cHBvcnRzVHlwZShlbnVtOnVpbnQ4X3QgV2ViQ29y
ZTo6TWVkaWFQbGF5ZXJFbnVtczo6TWVkaWFFbmdpbmVJZGVudGlmaWVyIHJlbW90ZUVuZ2luZUlk
ZW50aWZpZXIsIHN0cnVjdCBXZWJDb3JlOjpNZWRpYUVuZ2luZVN1cHBvcnRQYXJhbWV0ZXJzIHR5
cGUpIC0+IChlbnVtOnVpbnQ4X3QgV2ViQ29yZTo6TWVkaWFQbGF5ZXI6OlN1cHBvcnRzVHlwZSBz
dXBwb3J0KSBTeW5jaHJvbm91cworICAgIE9yaWdpbnNJbk1lZGlhQ2FjaGUoZW51bTp1aW50OF90
IFdlYkNvcmU6Ok1lZGlhUGxheWVyRW51bXM6Ok1lZGlhRW5naW5lSWRlbnRpZmllciByZW1vdGVF
bmdpbmVJZGVudGlmaWVyLCBTdHJpbmcgcGF0aCkgLT4gKFZlY3RvcjxXZWJDb3JlOjpTZWN1cml0
eU9yaWdpbkRhdGE+IG9yaWdpbnMpIFN5bmNocm9ub3VzCisgICAgQ2xlYXJNZWRpYUNhY2hlKGVu
dW06dWludDhfdCBXZWJDb3JlOjpNZWRpYVBsYXllckVudW1zOjpNZWRpYUVuZ2luZUlkZW50aWZp
ZXIgcmVtb3RlRW5naW5lSWRlbnRpZmllciwgU3RyaW5nIHBhdGgsIFdhbGxUaW1lIG1vZGlmaWVk
U2luY2UpCisgICAgQ2xlYXJNZWRpYUNhY2hlRm9yT3JpZ2lucyhlbnVtOnVpbnQ4X3QgV2ViQ29y
ZTo6TWVkaWFQbGF5ZXJFbnVtczo6TWVkaWFFbmdpbmVJZGVudGlmaWVyIHJlbW90ZUVuZ2luZUlk
ZW50aWZpZXIsIFN0cmluZyBwYXRoLCBWZWN0b3I8V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRh
PiBvcmlnaW5zKQorICAgIFN1cHBvcnRzS2V5U3lzdGVtKGVudW06dWludDhfdCBXZWJDb3JlOjpN
ZWRpYVBsYXllckVudW1zOjpNZWRpYUVuZ2luZUlkZW50aWZpZXIgcmVtb3RlRW5naW5lSWRlbnRp
ZmllciwgU3RyaW5nIGtleVN5c3RlbSwgU3RyaW5nIG1pbWVUeXBlKSAtPiAoYm9vbCBzdXBwb3J0
cykgU3luY2hyb25vdXMKK30KKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1Nj
cmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5IGIvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC9t
ZXNzYWdlcy5weQppbmRleCBlZDExYWMyNzI1MjI2ZTQ3YTJiNTZiY2M5ZWNmMjIyZGFjMDAwOWFl
Li5mMmU5ZWQ3YWI1NDAyZWY1MTE4OGY3ZThkYmUzOTZiYThhY2UwZmFkIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5CisrKyBiL1NvdXJjZS9XZWJL
aXQvU2NyaXB0cy93ZWJraXQvbWVzc2FnZXMucHkKQEAgLTEsNCArMSw0IEBACi0jIENvcHlyaWdo
dCAoQykgMjAxMC0yMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMgQ29weXJp
Z2h0IChDKSAyMDEwLTIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogIwogIyBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKICMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yMTksMTAgKzIxOSwxMSBAQCBkZWYgdHlwZXNfdGhh
dF9jYW5ub3RfYmVfZm9yd2FyZF9kZWNsYXJlZCgpOgogICAgICAgICAnV2ViQ29yZTo6U1dTZXJ2
ZXJDb25uZWN0aW9uSWRlbnRpZmllcicsCiAgICAgICAgICdXZWJLaXQ6OkFjdGl2aXR5U3RhdGVD
aGFuZ2VJRCcsCiAgICAgICAgICdXZWJLaXQ6OkxheWVySG9zdGluZ0NvbnRleHRJRCcsCi0gICAg
ICAgICdXZWJLaXQ6OlRyYW5zYWN0aW9uSUQnLAorICAgICAgICAnV2ViS2l0OjpNZWRpYVBsYXll
clByaXZhdGVSZW1vdGVJZGVudGlmaWVyJywKICAgICAgICAgJ1dlYktpdDo6U3RvcmFnZUFyZWFJ
ZGVudGlmaWVyJywKICAgICAgICAgJ1dlYktpdDo6U3RvcmFnZUFyZWFJbXBsSWRlbnRpZmllcics
CiAgICAgICAgICdXZWJLaXQ6OlN0b3JhZ2VOYW1lc3BhY2VJZGVudGlmaWVyJywKKyAgICAgICAg
J1dlYktpdDo6VHJhbnNhY3Rpb25JRCcsCiAgICAgICAgICdXZWJLaXQ6OlVzZXJDb250ZW50Q29u
dHJvbGxlcklkZW50aWZpZXInLAogICAgICAgICAnV2ViS2l0OjpXZWJQYWdlUHJveHlJZGVudGlm
aWVyJywKICAgICBdKQpAQCAtNjAzLDYgKzYwNCw3IEBAIGRlZiBoZWFkZXJzX2Zvcl90eXBlKHR5
cGUpOgogICAgICAgICAnV2ViS2l0OjpXZWJNb3VzZUV2ZW50JzogWyciV2ViRXZlbnQuaCInXSwK
ICAgICAgICAgJ1dlYktpdDo6V2ViVG91Y2hFdmVudCc6IFsnIldlYkV2ZW50LmgiJ10sCiAgICAg
ICAgICdXZWJLaXQ6OldlYldoZWVsRXZlbnQnOiBbJyJXZWJFdmVudC5oIiddLAorICAgICAgICAn
V2ViQ29yZTo6TWVkaWFFbmdpbmVTdXBwb3J0UGFyYW1ldGVycyc6IFsnPFdlYkNvcmUvTWVkaWFQ
bGF5ZXIuaD4nXSwKICAgICAgICAgJ3N0cnVjdCBXZWJDb3JlOjpFbGVtZW50Q29udGV4dCc6IFsn
PFdlYkNvcmUvRWxlbWVudENvbnRleHQuaD4nXSwKICAgICAgICAgJ3N0cnVjdCBXZWJLaXQ6Oldl
YlVzZXJTY3JpcHREYXRhJzogWyciV2ViVXNlckNvbnRlbnRDb250cm9sbGVyRGF0YVR5cGVzLmgi
J10sCiAgICAgICAgICdzdHJ1Y3QgV2ViS2l0OjpXZWJVc2VyU3R5bGVTaGVldERhdGEnOiBbJyJX
ZWJVc2VyQ29udGVudENvbnRyb2xsZXJEYXRhVHlwZXMuaCInXSwKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvU291cmNlcy50eHQgYi9Tb3VyY2UvV2ViS2l0L1NvdXJjZXMudHh0CmluZGV4IDVm
MDRkOGEzZGEwZGQzM2VmNmI5MDZhZWE5NWUyOTUwZjhkZWY2ZjkuLjU0MjRlNWRmYmIxNTIwMTBi
MGIzMmQ2ZjVlYTZkNTM1ODkxNGU1NmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU291cmNl
cy50eHQKKysrIGIvU291cmNlL1dlYktpdC9Tb3VyY2VzLnR4dApAQCAtNTAwLDYgKzUwMCw4IEBA
IFdlYlByb2Nlc3MvTWVkaWFTdHJlYW0vTWVkaWFEZXZpY2VTYW5kYm94RXh0ZW5zaW9ucy5jcHAK
IFdlYlByb2Nlc3MvTWVkaWFTdHJlYW0vVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2Vy
LmNwcAogCiBXZWJQcm9jZXNzL0dQVS9HUFVQcm9jZXNzQ29ubmVjdGlvbi5jcHAKK1dlYlByb2Nl
c3MvR1BVL21lZGlhL01lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZS5jcHAKK1dlYlByb2Nlc3MvR1BV
L21lZGlhL1JlbW90ZU1lZGlhUGxheWVyTWFuYWdlci5jcHAKIAogV2ViUHJvY2Vzcy9OZXR3b3Jr
L05ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5jcHAKIFdlYlByb2Nlc3MvTmV0d29yay9XZWJMb2Fk
ZXJTdHJhdGVneS5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU291cmNlc0NvY29hLnR4
dCBiL1NvdXJjZS9XZWJLaXQvU291cmNlc0NvY29hLnR4dAppbmRleCA5ZDI0MmUyYTA2NGRmZjcy
ZjQ5YzQyZjU0ZDk3ODEzY2FkOTRkOTJjLi5kOTQ4M2QwYTEzOWEwMGFkYWQ3N2ZhODM3ZWNjNzNl
YzE3OGI5YzNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NvdXJjZXNDb2NvYS50eHQKKysr
IGIvU291cmNlL1dlYktpdC9Tb3VyY2VzQ29jb2EudHh0CkBAIC01OSw2ICs1OSw3IEBAIE5ldHdv
cmtQcm9jZXNzL3dlYnJ0Yy9OZXR3b3JrUlRDU29ja2V0LmNwcAogCiBHUFVQcm9jZXNzL2lvcy9H
UFVQcm9jZXNzSU9TLm1tCiBHUFVQcm9jZXNzL21hYy9HUFVQcm9jZXNzTWFjLm1tCitHUFVQcm9j
ZXNzL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5LmNwcAogR1BVUHJvY2Vzcy9F
bnRyeVBvaW50L0NvY29hL1hQQ1NlcnZpY2UvR1BVU2VydmljZUVudHJ5UG9pbnQubW0KIAogUGxh
dGZvcm0vY2YvTW9kdWxlQ0YuY3BwCkBAIC02MjQsNSArNjI1LDcgQEAgRWRpdGFibGVJbWFnZUNv
bnRyb2xsZXJNZXNzYWdlUmVjZWl2ZXIuY3BwCiBHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzTWVz
c2FnZVJlY2VpdmVyLmNwcAogR1BVUHJvY2Vzc1Byb3h5TWVzc2FnZVJlY2VpdmVyLmNwcAogR1BV
UHJvY2Vzc01lc3NhZ2VSZWNlaXZlci5jcHAKKy8vUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyTWVz
c2FnZVJlY2VpdmVyLmNwcAorLy9SZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eU1lc3NhZ2VS
ZWNlaXZlci5jcHAKIFNlcnZpY2VXb3JrZXJGZXRjaFRhc2tNZXNzYWdlUmVjZWl2ZXIuY3BwCiBU
ZXh0Q2hlY2tpbmdDb250cm9sbGVyUHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNl
L1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCA0NjZjZGU5OWNl
ZGE0MWFiM2QxMjViMDI1MmJhMjljNmE5MWYyODZjLi4yMTVjZjJiMzVjNDQ5ZThhOGE4ZjdmZjNk
MmJjZjVmNDcxOWNlM2Y2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oKQEAgLTkxLDYgKzkxLDEzIEBACiAJCTA3NEU3NUZFMURGMjIxMTkwMEQz
MThFQyAvKiBVc2VyTWVkaWFQcm9jZXNzTWFuYWdlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDc0RTc1RkIxREYxRkQxMzAwRDMxOEVDIC8qIFVzZXJN
ZWRpYVByb2Nlc3NNYW5hZ2VyLmggKi87IH07CiAJCTA3NkU4ODRFMUExM0NBREYwMDVFOTBGQyAv
KiBBUElDb250ZXh0TWVudUNsaWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gMDc2RTg4NEQxQTEzQ0FERjAwNUU5MEZDIC8qIEFQSUNvbnRleHRNZW51
Q2xpZW50LmggKi87IH07CiAJCTA3NzI4MTFEMjEyMzRGRjYwMEM4RUYyRSAvKiBVc2VyTWVkaWFQ
ZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDRBNDEwRjQzMTlBRjdCMjcwMDJFQkFCNSAvKiBVc2VyTWVkaWFQZXJt
aXNzaW9uUmVxdWVzdE1hbmFnZXIuaCAqLzsgfTsKKwkJMDc5MjMxNDgyMzlDQkNCODAwOTU5OEUy
IC8qIFJlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5TWVzc2FnZXNSZXBsaWVzLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwNzkyMzE0MjIzOUNCQ0I1
MDA5NTk4RTIgLyogUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHlNZXNzYWdlc1JlcGxpZXMu
aCAqLzsgfTsKKwkJMDc5MjMxNDkyMzlDQkNCODAwOTU5OEUyIC8qIFJlbW90ZU1lZGlhUGxheWVy
TWFuYWdlck1lc3NhZ2VSZWNlaXZlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSAwNzkyMzE0MzIzOUNCQ0I2MDA5NTk4RTIgLyogUmVtb3RlTWVkaWFQ
bGF5ZXJNYW5hZ2VyTWVzc2FnZVJlY2VpdmVyLmNwcCAqLzsgfTsKKwkJMDc5MjMxNEEyMzlDQkNC
ODAwOTU5OEUyIC8qIFJlbW90ZU1lZGlhUGxheWVyTWFuYWdlck1lc3NhZ2VzUmVwbGllcy5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDc5MjMxNDQyMzlD
QkNCNjAwOTU5OEUyIC8qIFJlbW90ZU1lZGlhUGxheWVyTWFuYWdlck1lc3NhZ2VzUmVwbGllcy5o
ICovOyB9OworCQkwNzkyMzE0QjIzOUNCQ0I4MDA5NTk4RTIgLyogUmVtb3RlTWVkaWFQbGF5ZXJN
YW5hZ2VyUHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gMDc5MjMxNDUyMzlDQkNCNzAwOTU5OEUyIC8qIFJlbW90ZU1l
ZGlhUGxheWVyTWFuYWdlclByb3h5TWVzc2FnZVJlY2VpdmVyLmNwcCAqLzsgfTsKKwkJMDc5MjMx
NEMyMzlDQkNCODAwOTU5OEUyIC8qIFJlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5TWVzc2Fn
ZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3OTIz
MTQ2MjM5Q0JDQjcwMDk1OThFMiAvKiBSZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eU1lc3Nh
Z2VzLmggKi87IH07CisJCTA3OTIzMTREMjM5Q0JDQjgwMDk1OThFMiAvKiBSZW1vdGVNZWRpYVBs
YXllck1hbmFnZXJNZXNzYWdlcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gMDc5MjMxNDcyMzlDQkNCNzAwOTU5OEUyIC8qIFJlbW90ZU1lZGlhUGxheWVy
TWFuYWdlck1lc3NhZ2VzLmggKi87IH07CisJCTA3OTIzMTRGMjM5RDYyM0UwMDk1OThFMiAvKiBN
ZWRpYVBsYXllclByaXZhdGVSZW1vdGVJZGVudGlmaWVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwNzkyMzE0RTIzOUQ1RjUzMDA5NTk4RTIgLyogTWVk
aWFQbGF5ZXJQcml2YXRlUmVtb3RlSWRlbnRpZmllci5oICovOyB9OwogCQkwN0E1RUJCQzFDN0JB
NDNFMDBCOUNBNjkgLyogV0tGcmFtZUhhbmRsZVJlZi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDdBNUVCQkExQzdCQTQzRTAwQjlDQTY5IC8qIFdLRnJh
bWVIYW5kbGVSZWYuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OwogCQkwRTk3RDc0RDIwMEU5MDA0MDBCRjY2NDMgLyogU2FmZUJyb3dzaW5nU1BJLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRTk3RDc0QzIwMEU4
RkYzMDBCRjY2NDMgLyogU2FmZUJyb3dzaW5nU1BJLmggKi87IH07CiAJCTBFREU4NTAzMjAwNEU3
NUQwMDAzMDU2MCAvKiBXZWJzaXRlUG9wVXBQb2xpY3kuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBFREU4NTAyMjAwNEU3NDkwMDAzMDU2MCAvKiBXZWJz
aXRlUG9wVXBQb2xpY3kuaCAqLzsgfTsKQEAgLTE5OTcsNiArMjAwNCw5IEBACiAJCTAwQjk2NjE1
MThFMjRDQkEwMENFMUY4OCAvKiBBUElGaW5kQ2xpZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IEFQSUZpbmRDbGllbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJMDBCOTY2MTcxOEUyNUFFMTAwQ0UxRjg4IC8qIEZpbmRDbGllbnQubW0gKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBGaW5kQ2xpZW50Lm1tOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQkwMEI5NjYxODE4RTI1QUUxMDBDRTFGODggLyogRmluZENsaWVudC5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBGaW5kQ2xpZW50Lmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCTA3MjVFRkFCMjM5QUUzODQwMEE1MzhBOSAvKiBSZW1vdGVN
ZWRpYVBsYXllck1hbmFnZXJQcm94eS5tZXNzYWdlcy5pbiAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBSZW1vdGVNZWRpYVBsYXll
ck1hbmFnZXJQcm94eS5tZXNzYWdlcy5pbjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
MDcyNUVGQUMyMzlBRTM4NTAwQTUzOEE5IC8qIFJlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IFJlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5Lmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTA3MjVFRkFEMjM5QjAyNDUwMEE1MzhBOSAvKiBSZW1v
dGVNZWRpYVBsYXllck1hbmFnZXJQcm94eS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSZW1vdGVN
ZWRpYVBsYXllck1hbmFnZXJQcm94eS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTA3Mjk3RjlDMUMxNzExRUEwMDNGMDczNSAvKiBEZXZpY2VJZEhhc2hTYWx0U3RvcmFnZS5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBEZXZpY2VJZEhhc2hTYWx0U3Rv
cmFnZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTA3Mjk3RjlDMUMxN0JCRUEw
MDNGMDczNSAvKiBVc2VyTWVkaWFQZXJtaXNzaW9uQ2hlY2tQcm94eS5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBVc2VyTWVkaWFQZXJtaXNzaW9uQ2hlY2tQcm94eS5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTA3Mjk3RjlEMUMxN0JCRUEwMDNGMDcz
NSAvKiBVc2VyTWVkaWFQZXJtaXNzaW9uQ2hlY2tQcm94eS5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBVc2VyTWVkaWFQZXJtaXNzaW9uQ2hlY2tQcm94eS5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwpAQCAtMjAxMSw2ICsyMDIxLDE4IEBACiAJCTA3NEU3NjAxMURGNzA3
NUQwMEQzMThFQyAvKiBNZWRpYURldmljZVNhbmRib3hFeHRlbnNpb25zLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1lZGlhRGV2aWNlU2FuZGJveEV4dGVuc2lvbnMuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMDc2RTg4NEQxQTEzQ0FERjAwNUU5MEZDIC8qIEFQ
SUNvbnRleHRNZW51Q2xpZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEFQ
SUNvbnRleHRNZW51Q2xpZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTA3NkU4
ODRGMUExM0NCQzYwMDVFOTBGQyAvKiBBUElJbmplY3RlZEJ1bmRsZVBhZ2VDb250ZXh0TWVudUNs
aWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBUElJbmplY3RlZEJ1bmRs
ZVBhZ2VDb250ZXh0TWVudUNsaWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkw
NzkyMzEzMDIzOUIzQjBDMDA5NTk4RTIgLyogUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IFJlbW90ZU1lZGlhUGxheWVyTWFuYWdlci5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCTA3OTIzMTMxMjM5QjNCMEMwMDk1OThFMiAvKiBNZWRpYVBs
YXllclByaXZhdGVSZW1vdGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTWVkaWFQbGF5ZXJQcml2
YXRlUmVtb3RlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMDc5MjMxMzIyMzlC
M0IwQzAwOTU5OEUyIC8qIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZS5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBNZWRpYVBsYXllclByaXZhdGVSZW1vdGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJMDc5MjMxMzMyMzlCM0IwQzAwOTU5OEUyIC8qIFJlbW90ZU1lZGlhUGxheWVyTWFuYWdlci5t
ZXNzYWdlcy5pbiAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHRleHQ7IHBhdGggPSBSZW1vdGVNZWRpYVBsYXllck1hbmFnZXIubWVzc2FnZXMuaW47IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTA3OTIzMTM0MjM5QjNCMEMwMDk1OThFMiAvKiBS
ZW1vdGVNZWRpYVBsYXllck1hbmFnZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVtb3RlTWVkaWFQbGF5
ZXJNYW5hZ2VyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTA3OTIzMTQyMjM5Q0JD
QjUwMDk1OThFMiAvKiBSZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eU1lc3NhZ2VzUmVwbGll
cy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZW1vdGVNZWRpYVBsYXllck1h
bmFnZXJQcm94eU1lc3NhZ2VzUmVwbGllcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQkwNzkyMzE0MzIzOUNCQ0I2MDA5NTk4RTIgLyogUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyTWVz
c2FnZVJlY2VpdmVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJl
bW90ZU1lZGlhUGxheWVyTWFuYWdlck1lc3NhZ2VSZWNlaXZlci5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCTA3OTIzMTQ0MjM5Q0JDQjYwMDk1OThFMiAvKiBSZW1vdGVNZWRpYVBs
YXllck1hbmFnZXJNZXNzYWdlc1JlcGxpZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyTWVzc2FnZXNSZXBsaWVzLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCTA3OTIzMTQ1MjM5Q0JDQjcwMDk1OThFMiAvKiBSZW1vdGVN
ZWRpYVBsYXllck1hbmFnZXJQcm94eU1lc3NhZ2VSZWNlaXZlci5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eU1lc3Nh
Z2VSZWNlaXZlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTA3OTIzMTQ2MjM5
Q0JDQjcwMDk1OThFMiAvKiBSZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eU1lc3NhZ2VzLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlbW90ZU1lZGlhUGxheWVyTWFuYWdl
clByb3h5TWVzc2FnZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMDc5MjMxNDcy
MzlDQkNCNzAwOTU5OEUyIC8qIFJlbW90ZU1lZGlhUGxheWVyTWFuYWdlck1lc3NhZ2VzLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlbW90ZU1lZGlhUGxheWVyTWFuYWdlck1l
c3NhZ2VzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTA3OTIzMTRFMjM5RDVGNTMw
MDk1OThFMiAvKiBNZWRpYVBsYXllclByaXZhdGVSZW1vdGVJZGVudGlmaWVyLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZUlkZW50aWZpZXIuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJMDdBNUVCQjkxQzdCQTQzRTAwQjlDQTY5IC8qIFdLRnJhbWVIYW5k
bGVSZWYuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV0tGcmFtZUhh
bmRsZVJlZi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTA3QTVFQkJBMUM3QkE0
M0UwMEI5Q0E2OSAvKiBXS0ZyYW1lSGFuZGxlUmVmLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IFdLRnJhbWVIYW5kbGVSZWYuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJMDg2N0Q2QTVGRTg0MDMwN0MwMkFBQzA3IC8qIEFwcEtpdC5mcmFtZXdvcmsgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB3cmFwcGVyLmZyYW1ld29y
azsgbmFtZSA9IEFwcEtpdC5mcmFtZXdvcms7IHBhdGggPSAvU3lzdGVtL0xpYnJhcnkvRnJhbWV3
b3Jrcy9BcHBLaXQuZnJhbWV3b3JrOyBzb3VyY2VUcmVlID0gIjxhYnNvbHV0ZT4iOyB9OwpAQCAt
NTAxMyw2ICs1MDM1LDI5IEBACiAJCQl0YWJXaWR0aCA9IDg7CiAJCQl1c2VzVGFicyA9IDA7CiAJ
CX07CisJCTA3OTIzMTJGMjM5QjNCMEMwMDk1OThFMiAvKiBtZWRpYSAqLyA9IHsKKwkJCWlzYSA9
IFBCWEdyb3VwOworCQkJY2hpbGRyZW4gPSAoCisJCQkJMDc5MjMxMzEyMzlCM0IwQzAwOTU5OEUy
IC8qIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZS5jcHAgKi8sCisJCQkJMDc5MjMxMzIyMzlCM0Iw
QzAwOTU5OEUyIC8qIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZS5oICovLAorCQkJCTA3OTIzMTRF
MjM5RDVGNTMwMDk1OThFMiAvKiBNZWRpYVBsYXllclByaXZhdGVSZW1vdGVJZGVudGlmaWVyLmgg
Ki8sCisJCQkJMDc5MjMxMzAyMzlCM0IwQzAwOTU5OEUyIC8qIFJlbW90ZU1lZGlhUGxheWVyTWFu
YWdlci5jcHAgKi8sCisJCQkJMDc5MjMxMzQyMzlCM0IwQzAwOTU5OEUyIC8qIFJlbW90ZU1lZGlh
UGxheWVyTWFuYWdlci5oICovLAorCQkJCTA3OTIzMTMzMjM5QjNCMEMwMDk1OThFMiAvKiBSZW1v
dGVNZWRpYVBsYXllck1hbmFnZXIubWVzc2FnZXMuaW4gKi8sCisJCQkpOworCQkJcGF0aCA9IG1l
ZGlhOworCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKKwkJfTsKKwkJMDdDNzVDMTcyMzk5QTNE
QjAwODhFNjVCIC8qIG1lZGlhICovID0geworCQkJaXNhID0gUEJYR3JvdXA7CisJCQljaGlsZHJl
biA9ICgKKwkJCQkwNzI1RUZBRDIzOUIwMjQ1MDBBNTM4QTkgLyogUmVtb3RlTWVkaWFQbGF5ZXJN
YW5hZ2VyUHJveHkuY3BwICovLAorCQkJCTA3MjVFRkFDMjM5QUUzODUwMEE1MzhBOSAvKiBSZW1v
dGVNZWRpYVBsYXllck1hbmFnZXJQcm94eS5oICovLAorCQkJCTA3MjVFRkFCMjM5QUUzODQwMEE1
MzhBOSAvKiBSZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eS5tZXNzYWdlcy5pbiAqLywKKwkJ
CSk7CisJCQlwYXRoID0gbWVkaWE7CisJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOworCQl9Owog
CQkwODY3RDY5MUZFODQwMjhGQzAyQUFDMDcgLyogV2ViS2l0MiAqLyA9IHsKIAkJCWlzYSA9IFBC
WEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCkBAIC02MTk1LDYgKzYyNDAsNyBAQAogCQkyRDdFNDNC
RjIzNzUyQ0Q5MDBFQTVDQTAgLyogR1BVICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQlj
aGlsZHJlbiA9ICgKKwkJCQkwNzkyMzEyRjIzOUIzQjBDMDA5NTk4RTIgLyogbWVkaWEgKi8sCiAJ
CQkJMkQ3RTQzQzAyMzc1MkNEOTAwRUE1Q0EwIC8qIEdQVVByb2Nlc3NDb25uZWN0aW9uLmNwcCAq
LywKIAkJCQkyRDdFNDNDMzIzNzUyQ0Q5MDBFQTVDQTAgLyogR1BVUHJvY2Vzc0Nvbm5lY3Rpb24u
aCAqLywKIAkJCQkyRDdFNDNDMjIzNzUyQ0Q5MDBFQTVDQTAgLyogR1BVUHJvY2Vzc0Nvbm5lY3Rp
b24ubWVzc2FnZXMuaW4gKi8sCkBAIC02MjA5LDYgKzYyNTUsNyBAQAogCQkJCTJEOUZCMjBEMjM3
NTIwOUQwMDQ5RjkzNiAvKiBFbnRyeVBvaW50ICovLAogCQkJCTJEOUZCMjA0MjM3NTIwOUQwMDQ5
RjkzNiAvKiBpb3MgKi8sCiAJCQkJMkQ5RkIyMDYyMzc1MjA5RDAwNDlGOTM2IC8qIG1hYyAqLywK
KwkJCQkwN0M3NUMxNzIzOTlBM0RCMDA4OEU2NUIgLyogbWVkaWEgKi8sCiAJCQkJMkQ5RkIyMEMy
Mzc1MjA5RDAwNDlGOTM2IC8qIEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwICovLAogCQkJ
CTJEOUZCMjAwMjM3NTIwOUQwMDQ5RjkzNiAvKiBHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgg
Ki8sCiAJCQkJMkQ5RkIyMDkyMzc1MjA5RDAwNDlGOTM2IC8qIEdQVUNvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3MubWVzc2FnZXMuaW4gKi8sCkBAIC05MTIzLDYgKzkxNzAsMTIgQEAKIAkJCQkxQThFRkE2
RjEyNTJCODQxMDBGNzA2N0YgLyogUGx1Z2luUHJveHlNZXNzYWdlcy5oICovLAogCQkJCTBGRjI0
QTJCMTg3OUU0QkMwMDNBQkYwQyAvKiBSZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYVByb3h5TWVz
c2FnZVJlY2VpdmVyLmNwcCAqLywKIAkJCQkwRkYyNEEyQzE4NzlFNEJDMDAzQUJGMEMgLyogUmVt
b3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWFQcm94eU1lc3NhZ2VzLmggKi8sCisJCQkJMDc5MjMxNDMy
MzlDQkNCNjAwOTU5OEUyIC8qIFJlbW90ZU1lZGlhUGxheWVyTWFuYWdlck1lc3NhZ2VSZWNlaXZl
ci5jcHAgKi8sCisJCQkJMDc5MjMxNDcyMzlDQkNCNzAwOTU5OEUyIC8qIFJlbW90ZU1lZGlhUGxh
eWVyTWFuYWdlck1lc3NhZ2VzLmggKi8sCisJCQkJMDc5MjMxNDQyMzlDQkNCNjAwOTU5OEUyIC8q
IFJlbW90ZU1lZGlhUGxheWVyTWFuYWdlck1lc3NhZ2VzUmVwbGllcy5oICovLAorCQkJCTA3OTIz
MTQ1MjM5Q0JDQjcwMDk1OThFMiAvKiBSZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eU1lc3Nh
Z2VSZWNlaXZlci5jcHAgKi8sCisJCQkJMDc5MjMxNDYyMzlDQkNCNzAwOTU5OEUyIC8qIFJlbW90
ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5TWVzc2FnZXMuaCAqLywKKwkJCQkwNzkyMzE0MjIzOUNC
Q0I1MDA5NTk4RTIgLyogUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHlNZXNzYWdlc1JlcGxp
ZXMuaCAqLywKIAkJCQkxQUMxMzM4MzE4NTkwQzQ2MDBGM0VDMDUgLyogUmVtb3RlT2JqZWN0UmVn
aXN0cnlNZXNzYWdlUmVjZWl2ZXIuY3BwICovLAogCQkJCTFBQzEzMzg0MTg1OTBDNDYwMEYzRUMw
NSAvKiBSZW1vdGVPYmplY3RSZWdpc3RyeU1lc3NhZ2VzLmggKi8sCiAJCQkJMEY1OTQ3QTUxODdC
NTE3NjAwNDM3ODU3IC8qIFJlbW90ZVNjcm9sbGluZ0Nvb3JkaW5hdG9yTWVzc2FnZVJlY2VpdmVy
LmNwcCAqLywKQEAgLTk4NDAsNiArOTg5Myw3IEBACiAJCQkJQkNDNTZGNzkxMTU5OTU3RDAwMUND
QUY5IC8qIE1hY2hQb3J0LmggaW4gSGVhZGVycyAqLywKIAkJCQkxQTI0QjVGMzExRjUzMUU4MDBD
MzgyNjkgLyogTWFjaFV0aWxpdGllcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQ0UxQTBCRDUxQTQ4
RTZDNjAwNTRFRjc0IC8qIE1hbmFnZWRDb25maWd1cmF0aW9uU1BJLmggaW4gSGVhZGVycyAqLywK
KwkJCQkwNzkyMzE0RjIzOUQ2MjNFMDA5NTk4RTIgLyogTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3Rl
SWRlbnRpZmllci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTE5MzNERUYxOTY1RUIzMTAwOEFDM0VB
IC8qIE1lbnVVdGlsaXRpZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBQzRDODI5MTZCODc2QTkw
MDY5RENDRCAvKiBNZXNzYWdlRmxhZ3MuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBM0VFRDEyMTYx
QTUzRDYwMEFFQjRGNSAvKiBNZXNzYWdlUmVjZWl2ZXIuaCBpbiBIZWFkZXJzICovLApAQCAtMTAw
MDAsNiArMTAwNTQsMTAgQEAKIAkJCQkwRkYyNjRBMDFBMUZGOUNDMDAxRkU3NTkgLyogUmVtb3Rl
TGF5ZXJUcmVlU2Nyb2xsaW5nUGVyZm9ybWFuY2VEYXRhLmggaW4gSGVhZGVycyAqLywKIAkJCQkx
QUYxQUM2QzE2NTE3NTlFMDBDMTdEN0YgLyogUmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb24uaCBp
biBIZWFkZXJzICovLAogCQkJCTJEQzE4RkIzMjE4QTZFOUUwMDI1QTg4RCAvKiBSZW1vdGVMYXll
clRyZWVWaWV3cy5oIGluIEhlYWRlcnMgKi8sCisJCQkJMDc5MjMxNEQyMzlDQkNCODAwOTU5OEUy
IC8qIFJlbW90ZU1lZGlhUGxheWVyTWFuYWdlck1lc3NhZ2VzLmggaW4gSGVhZGVycyAqLywKKwkJ
CQkwNzkyMzE0QTIzOUNCQ0I4MDA5NTk4RTIgLyogUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyTWVz
c2FnZXNSZXBsaWVzLmggaW4gSGVhZGVycyAqLywKKwkJCQkwNzkyMzE0QzIzOUNCQ0I4MDA5NTk4
RTIgLyogUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHlNZXNzYWdlcy5oIGluIEhlYWRlcnMg
Ki8sCisJCQkJMDc5MjMxNDgyMzlDQkNCODAwOTU5OEUyIC8qIFJlbW90ZU1lZGlhUGxheWVyTWFu
YWdlclByb3h5TWVzc2FnZXNSZXBsaWVzLmggaW4gSGVhZGVycyAqLywKIAkJCQlFMUI3ODQ3MTE2
M0YyNDY5MDAwN0I2OTIgLyogUmVtb3RlTmV0d29ya2luZ0NvbnRleHQuaCBpbiBIZWFkZXJzICov
LAogCQkJCTFBNTcwNEZDMUJFMTc1MTEwMDg3NEFGMSAvKiBSZW1vdGVPYmplY3RJbnZvY2F0aW9u
LmggaW4gSGVhZGVycyAqLywKIAkJCQkxQUMxMzM4MDE4NTkwQUU0MDBGM0VDMDUgLyogUmVtb3Rl
T2JqZWN0UmVnaXN0cnkuaCBpbiBIZWFkZXJzICovLApAQCAtMTE2NTgsNiArMTE3MTYsOCBAQAog
CQkJCTJENzJBMUZBMjEyQkY0NkUwMDUxN0EyMCAvKiBSZW1vdGVMYXllclRyZWVEcmF3aW5nQXJl
YS5tbSBpbiBTb3VyY2VzICovLAogCQkJCTBGRjI0QTJEMTg3OUU0QkMwMDNBQkYwQyAvKiBSZW1v
dGVMYXllclRyZWVEcmF3aW5nQXJlYVByb3h5TWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCTJEQzE4RkI0MjE4QTZFOUUwMDI1QTg4RCAvKiBSZW1vdGVMYXllclRyZWVWaWV3
cy5tbSBpbiBTb3VyY2VzICovLAorCQkJCTA3OTIzMTQ5MjM5Q0JDQjgwMDk1OThFMiAvKiBSZW1v
dGVNZWRpYVBsYXllck1hbmFnZXJNZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8sCisJ
CQkJMDc5MjMxNEIyMzlDQkNCODAwOTU5OEUyIC8qIFJlbW90ZU1lZGlhUGxheWVyTWFuYWdlclBy
b3h5TWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTFBQzEzMzg1MTg1OTBD
NDYwMEYzRUMwNSAvKiBSZW1vdGVPYmplY3RSZWdpc3RyeU1lc3NhZ2VSZWNlaXZlci5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQkwRjU5NDdBNzE4N0I1MTc2MDA0Mzc4NTcgLyogUmVtb3RlU2Nyb2xs
aW5nQ29vcmRpbmF0b3JNZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTU1
QkE4MjYxQkEyNUNGRDAwN0NEMzNEIC8qIFJlbW90ZVdlYkluc3BlY3RvclByb3h5TWVzc2FnZVJl
Y2VpdmVyLmNwcCBpbiBTb3VyY2VzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL0dQVS9tZWRpYS9NZWRpYVBsYXllclByaXZhdGVSZW1vdGUuY3BwIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9NZWRpYVBsYXllclByaXZhdGVSZW1vdGUuY3BwCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjdlMjQ1NzEwNTUwNzI0YzhjOTAzNDdkNzFmM2ZkNjk4MjVjMzBhMWUKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL01lZGlhUGxh
eWVyUHJpdmF0ZVJlbW90ZS5jcHAKQEAgLTAsMCArMSw3NjggQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFO
WQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorCisjaWYg
RU5BQkxFKEdQVV9QUk9DRVNTKQorI2luY2x1ZGUgIk1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZS5o
IgorCisjaW5jbHVkZSAiTG9nZ2luZy5oIgorI2luY2x1ZGUgIlJlbW90ZU1lZGlhUGxheWVyTWFu
YWdlclByb3h5TWVzc2FnZXMuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL01lZGlhUGxheWVyLmg+Cisj
aW5jbHVkZSA8V2ViQ29yZS9Ob3RJbXBsZW1lbnRlZC5oPgorI2luY2x1ZGUgPFdlYkNvcmUvUGxh
dGZvcm1MYXllci5oPgorI2luY2x1ZGUgPFdlYkNvcmUvUGxhdGZvcm1UaW1lUmFuZ2VzLmg+Cisj
aW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KKyNpbmNsdWRlIDx3dGYvTWFpblRocmVhZC5oPgorI2lu
Y2x1ZGUgPHd0Zi9TdHJpbmdQcmludFN0cmVhbS5oPgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KKyNp
bmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CisKK25hbWVzcGFjZSBXZWJLaXQgewordXNpbmcg
bmFtZXNwYWNlIFBBTDsKK3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOworCitNZWRpYVBsYXllclBy
aXZhdGVSZW1vdGU6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZShNZWRpYVBsYXllciogcGxheWVy
LCBNZWRpYVBsYXllckVudW1zOjpNZWRpYUVuZ2luZUlkZW50aWZpZXIgZW5naW5lSWRlbnRpZmll
ciwgTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlSWRlbnRpZmllciBwbGF5ZXJJZGVudGlmaWVyLCBS
ZW1vdGVNZWRpYVBsYXllck1hbmFnZXImIG1hbmFnZXIpCisgICAgOiBtX3BsYXllcihwbGF5ZXIp
CisgICAgLCBtX21hbmFnZXIobWFuYWdlcikKKyAgICAsIG1fcmVtb3RlRW5naW5lSWRlbnRpZmll
cihlbmdpbmVJZGVudGlmaWVyKQorICAgICwgbV9pZGVudGlmaWVyKHBsYXllcklkZW50aWZpZXIp
CisjaWYgIVJFTEVBU0VfTE9HX0RJU0FCTEVECisgICAgLCBtX2xvZ2dlcihwbGF5ZXItPm1lZGlh
UGxheWVyTG9nZ2VyKCkpCisgICAgLCBtX2xvZ0lkZW50aWZpZXIocGxheWVyLT5tZWRpYVBsYXll
ckxvZ0lkZW50aWZpZXIoKSkKKyNlbmRpZgoreworICAgIElORk9fTE9HKExPR0lERU5USUZJRVIp
OworfQorCitNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6On5NZWRpYVBsYXllclByaXZhdGVSZW1v
dGUoKQoreworICAgIElORk9fTE9HKExPR0lERU5USUZJRVIpOworICAgIG1fcGxheWVyID0gbnVs
bHB0cjsKK30KKwordm9pZCBNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6Ok1lZGlhUGxheWVyUHJp
dmF0ZVJlbW90ZTo6bG9hZChjb25zdCBTdHJpbmcmKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7
Cit9CisKKyNpZiBFTkFCTEUoTUVESUFfU09VUkNFKQordm9pZCBNZWRpYVBsYXllclByaXZhdGVS
ZW1vdGU6OmxvYWQoY29uc3QgU3RyaW5nJiwgTWVkaWFTb3VyY2VQcml2YXRlQ2xpZW50KikKK3sK
KyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorI2VuZGlmCisKKyNpZiBFTkFCTEUoTUVESUFfU1RS
RUFNKQordm9pZCBNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OmxvYWQoTWVkaWFTdHJlYW1Qcml2
YXRlJikKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorI2VuZGlmCit2b2lkIE1lZGlhUGxh
eWVyUHJpdmF0ZVJlbW90ZTo6Y2FuY2VsTG9hZCgpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsK
K30KKworCit2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6cHJlcGFyZVRvUGxheSgpCit7
CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKworUGxhdGZvcm1MYXllciogTWVkaWFQbGF5ZXJQ
cml2YXRlUmVtb3RlOjpwbGF0Zm9ybUxheWVyKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbnVsbHB0
cjsKK30KKworI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpIHx8IChQTEFURk9STShNQUMpICYmIEVO
QUJMRShWSURFT19QUkVTRU5UQVRJT05fTU9ERSkpCit2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZVJl
bW90ZTo6c2V0VmlkZW9GdWxsc2NyZWVuTGF5ZXIoUGxhdGZvcm1MYXllciosIFdURjo6RnVuY3Rp
b248dm9pZCgpPiYmKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKK3ZvaWQgTWVkaWFQ
bGF5ZXJQcml2YXRlUmVtb3RlOjp1cGRhdGVWaWRlb0Z1bGxzY3JlZW5JbmxpbmVJbWFnZSgpCit7
CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwordm9pZCBNZWRpYVBsYXllclByaXZhdGVSZW1v
dGU6OnNldFZpZGVvRnVsbHNjcmVlbkZyYW1lKEZsb2F0UmVjdCkKK3sKKyAgICBub3RJbXBsZW1l
bnRlZCgpOworfQorCit2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6c2V0VmlkZW9GdWxs
c2NyZWVuR3Jhdml0eShNZWRpYVBsYXllcjo6VmlkZW9HcmF2aXR5KQoreworICAgIG5vdEltcGxl
bWVudGVkKCk7Cit9CisKK3ZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpzZXRWaWRlb0Z1
bGxzY3JlZW5Nb2RlKE1lZGlhUGxheWVyOjpWaWRlb0Z1bGxzY3JlZW5Nb2RlKQoreworICAgIG5v
dEltcGxlbWVudGVkKCk7Cit9CisKK3ZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjp2aWRl
b0Z1bGxzY3JlZW5TdGFuZGJ5Q2hhbmdlZCgpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30K
KyNlbmRpZgorCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKK05TQXJyYXkqIE1lZGlhUGxheWVy
UHJpdmF0ZVJlbW90ZTo6dGltZWRNZXRhZGF0YSgpIGNvbnN0Cit7CisgICAgbm90SW1wbGVtZW50
ZWQoKTsKKyAgICByZXR1cm4gbnVsbHB0cjsKK30KKworU3RyaW5nIE1lZGlhUGxheWVyUHJpdmF0
ZVJlbW90ZTo6YWNjZXNzTG9nKCkgY29uc3QKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAg
IHJldHVybiBlbXB0eVN0cmluZygpOworfQorCitTdHJpbmcgTWVkaWFQbGF5ZXJQcml2YXRlUmVt
b3RlOjplcnJvckxvZygpIGNvbnN0Cit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1
cm4gZW1wdHlTdHJpbmcoKTsKK30KKyNlbmRpZgorCitsb25nIE1lZGlhUGxheWVyUHJpdmF0ZVJl
bW90ZTo6cGxhdGZvcm1FcnJvckNvZGUoKSBjb25zdAoreworICAgIG5vdEltcGxlbWVudGVkKCk7
CisgICAgcmV0dXJuIDA7Cit9CisKK3ZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpwbGF5
KCkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCit2b2lkIE1lZGlhUGxheWVyUHJpdmF0
ZVJlbW90ZTo6cGF1c2UoKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKK3ZvaWQgTWVk
aWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpzZXRCdWZmZXJpbmdQb2xpY3koTWVkaWFQbGF5ZXI6OkJ1
ZmZlcmluZ1BvbGljeSkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCitib29sIE1lZGlh
UGxheWVyUHJpdmF0ZVJlbW90ZTo6c3VwcG9ydHNQaWN0dXJlSW5QaWN0dXJlKCkgY29uc3QKK3sK
KyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiBmYWxzZTsKK30KKworYm9vbCBNZWRp
YVBsYXllclByaXZhdGVSZW1vdGU6OnN1cHBvcnRzRnVsbHNjcmVlbigpIGNvbnN0Cit7CisgICAg
bm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK2Jvb2wgTWVkaWFQbGF5
ZXJQcml2YXRlUmVtb3RlOjpzdXBwb3J0c1NjYW5uaW5nKCkgY29uc3QKK3sKKyAgICBub3RJbXBs
ZW1lbnRlZCgpOworICAgIHJldHVybiBmYWxzZTsKK30KKworYm9vbCBNZWRpYVBsYXllclByaXZh
dGVSZW1vdGU6OnJlcXVpcmVzSW1tZWRpYXRlQ29tcG9zaXRpbmcoKSBjb25zdAoreworICAgIG5v
dEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIGZhbHNlOworfQorCitib29sIE1lZGlhUGxheWVy
UHJpdmF0ZVJlbW90ZTo6Y2FuU2F2ZU1lZGlhRGF0YSgpIGNvbnN0Cit7CisgICAgbm90SW1wbGVt
ZW50ZWQoKTsKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK0Zsb2F0U2l6ZSBNZWRpYVBsYXllclBy
aXZhdGVSZW1vdGU6Om5hdHVyYWxTaXplKCkgY29uc3QKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgp
OworICAgIHJldHVybiB7IH07Cit9CisKK2Jvb2wgTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpo
YXNWaWRlbygpIGNvbnN0Cit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gZmFs
c2U7Cit9CisKK2Jvb2wgTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpoYXNBdWRpbygpIGNvbnN0
Cit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK3ZvaWQg
TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpzZXRWaXNpYmxlKGJvb2wpCit7CisgICAgbm90SW1w
bGVtZW50ZWQoKTsKK30KKworTWVkaWFUaW1lIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6TWVk
aWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpkdXJhdGlvbk1lZGlhVGltZSgpIGNvbnN0Cit7CisgICAg
bm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gTWVkaWFUaW1lOjp6ZXJvVGltZSgpOworfQor
CitNZWRpYVRpbWUgTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpjdXJyZW50TWVkaWFUaW1lKCkg
Y29uc3QKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiBNZWRpYVRpbWU6Onpl
cm9UaW1lKCk7Cit9CisKK01lZGlhVGltZSBNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OmdldFN0
YXJ0RGF0ZSgpIGNvbnN0Cit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gTWVk
aWFUaW1lOjp6ZXJvVGltZSgpOworfQorCit2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6
c2Vlayhjb25zdCBNZWRpYVRpbWUmKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKK3Zv
aWQgTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpzZWVrV2l0aFRvbGVyYW5jZShjb25zdCBNZWRp
YVRpbWUmLCBjb25zdCBNZWRpYVRpbWUmLCBjb25zdCBNZWRpYVRpbWUmKQoreworICAgIG5vdElt
cGxlbWVudGVkKCk7Cit9CisKK2Jvb2wgTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpzZWVraW5n
KCkgY29uc3QKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiBmYWxzZTsKK30K
KworTWVkaWFUaW1lIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6c3RhcnRUaW1lKCkgY29uc3QK
K3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiBNZWRpYVRpbWU6Onplcm9UaW1l
KCk7Cit9CisKK3ZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpzZXRSYXRlRG91YmxlKGRv
dWJsZSkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCitkb3VibGUgTWVkaWFQbGF5ZXJQ
cml2YXRlUmVtb3RlOjpyYXRlKCkgY29uc3QKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAg
IHJldHVybiAwOworfQorCit2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6c2V0UHJlc2Vy
dmVzUGl0Y2goYm9vbCkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCitib29sIE1lZGlh
UGxheWVyUHJpdmF0ZVJlbW90ZTo6cGF1c2VkKCkgY29uc3QKK3sKKyAgICBub3RJbXBsZW1lbnRl
ZCgpOworICAgIHJldHVybiBmYWxzZTsKK30KKwordm9pZCBNZWRpYVBsYXllclByaXZhdGVSZW1v
dGU6OnNldFZvbHVtZURvdWJsZShkb3VibGUpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30K
Kwordm9pZCBNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OnNldE11dGVkKGJvb2wpCit7CisgICAg
bm90SW1wbGVtZW50ZWQoKTsKK30KKworYm9vbCBNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6Omhh
c0Nsb3NlZENhcHRpb25zKCkgY29uc3QKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJl
dHVybiBmYWxzZTsKK30KKwordm9pZCBNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OnNldENsb3Nl
ZENhcHRpb25zVmlzaWJsZShib29sKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKK2Rv
dWJsZSBNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6Om1heEZhc3RGb3J3YXJkUmF0ZSgpIGNvbnN0
Cit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gMDsKK30KKworZG91YmxlIE1l
ZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6bWluRmFzdFJldmVyc2VSYXRlKCkgY29uc3QKK3sKKyAg
ICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiAwOworfQorCitNZWRpYVBsYXllcjo6TmV0
d29ya1N0YXRlIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6bmV0d29ya1N0YXRlKCkgY29uc3QK
K3sKKyAgICBpZiAobV9pbnZhbGlkKQorICAgICAgICByZXR1cm4gTWVkaWFQbGF5ZXI6Ok5ldHdv
cmtTdGF0ZTo6Rm9ybWF0RXJyb3I7CisKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVy
biBNZWRpYVBsYXllcjo6TmV0d29ya1N0YXRlOjpFbXB0eTsKK30KKworTWVkaWFQbGF5ZXI6OlJl
YWR5U3RhdGUgTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpyZWFkeVN0YXRlKCkgY29uc3QKK3sK
KyAgICBpZiAobV9pbnZhbGlkKQorICAgICAgICByZXR1cm4gTWVkaWFQbGF5ZXI6OlJlYWR5U3Rh
dGU6OkhhdmVOb3RoaW5nOworCisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gTWVk
aWFQbGF5ZXI6OlJlYWR5U3RhdGU6OkhhdmVOb3RoaW5nOworfQorCitzdGQ6OnVuaXF1ZV9wdHI8
UGxhdGZvcm1UaW1lUmFuZ2VzPiBNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OnNlZWthYmxlKCkg
Y29uc3QKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiBtYWtlVW5pcXVlPFBs
YXRmb3JtVGltZVJhbmdlcz4oKTsKK30KKworc3RkOjp1bmlxdWVfcHRyPFBsYXRmb3JtVGltZVJh
bmdlcz4gTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpidWZmZXJlZCgpIGNvbnN0Cit7CisgICAg
bm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxQbGF0Zm9ybVRpbWVSYW5n
ZXM+KCk7Cit9CisKK01lZGlhVGltZSBNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6Om1heE1lZGlh
VGltZVNlZWthYmxlKCkgY29uc3QKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVy
biBNZWRpYVRpbWU6Onplcm9UaW1lKCk7Cit9CisKK01lZGlhVGltZSBNZWRpYVBsYXllclByaXZh
dGVSZW1vdGU6Om1pbk1lZGlhVGltZVNlZWthYmxlKCkgY29uc3QKK3sKKyAgICBub3RJbXBsZW1l
bnRlZCgpOworICAgIHJldHVybiBNZWRpYVRpbWU6Onplcm9UaW1lKCk7Cit9CisKK2RvdWJsZSBN
ZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OnNlZWthYmxlVGltZVJhbmdlc0xhc3RNb2RpZmllZFRp
bWUoKSBjb25zdAoreworICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIDA7Cit9CisK
K2RvdWJsZSBNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OmxpdmVVcGRhdGVJbnRlcnZhbCgpIGNv
bnN0Cit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gMDsKK30KKwordW5zaWdu
ZWQgbG9uZyBsb25nIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6dG90YWxCeXRlcygpIGNvbnN0
Cit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gMDsKK30KKworYm9vbCBNZWRp
YVBsYXllclByaXZhdGVSZW1vdGU6OmRpZExvYWRpbmdQcm9ncmVzcygpIGNvbnN0Cit7CisgICAg
bm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK3ZvaWQgTWVkaWFQbGF5
ZXJQcml2YXRlUmVtb3RlOjpzZXRTaXplKGNvbnN0IEludFNpemUmKQoreworICAgIG5vdEltcGxl
bWVudGVkKCk7Cit9CisKK3ZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpwYWludChHcmFw
aGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJlY3QmKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7
Cit9CisKK3ZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpwYWludEN1cnJlbnRGcmFtZUlu
Q29udGV4dChHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJlY3QmKQoreworICAgIG5vdElt
cGxlbWVudGVkKCk7Cit9CisKK2Jvb2wgTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpjb3B5Vmlk
ZW9UZXh0dXJlVG9QbGF0Zm9ybVRleHR1cmUoR3JhcGhpY3NDb250ZXh0M0QqLCBQbGF0Zm9ybTNE
T2JqZWN0LCBHQzNEZW51bSwgR0MzRGludCwgR0MzRGVudW0sIEdDM0RlbnVtLCBHQzNEZW51bSwg
Ym9vbCwgYm9vbCkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiBmYWxzZTsK
K30KKworTmF0aXZlSW1hZ2VQdHIgTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpuYXRpdmVJbWFn
ZUZvckN1cnJlbnRUaW1lKCkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiBu
dWxscHRyOworfQorCit2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6c2V0UHJlbG9hZChN
ZWRpYVBsYXllcjo6UHJlbG9hZCkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCitib29s
IE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6aGFzQXZhaWxhYmxlVmlkZW9GcmFtZSgpIGNvbnN0
Cit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK2Jvb2wg
TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpjYW5Mb2FkUG9zdGVyKCkgY29uc3QKK3sKKyAgICBu
b3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiBmYWxzZTsKK30KKwordm9pZCBNZWRpYVBsYXll
clByaXZhdGVSZW1vdGU6OnNldFBvc3Rlcihjb25zdCBTdHJpbmcmKQoreworICAgIG5vdEltcGxl
bWVudGVkKCk7Cit9CisKKyNpZiBVU0UoTkFUSVZFX0ZVTExTQ1JFRU5fVklERU8pCit2b2lkIE1l
ZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6ZW50ZXJGdWxsc2NyZWVuKCkKK3sKKyAgICBub3RJbXBs
ZW1lbnRlZCgpOworfQorCit2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6ZXhpdEZ1bGxz
Y3JlZW4oKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisjZW5kaWYKKworI2lmIEVOQUJM
RShXSVJFTEVTU19QTEFZQkFDS19UQVJHRVQpCitTdHJpbmcgTWVkaWFQbGF5ZXJQcml2YXRlUmVt
b3RlOjp3aXJlbGVzc1BsYXliYWNrVGFyZ2V0TmFtZSgpIGNvbnN0Cit7CisgICAgbm90SW1wbGVt
ZW50ZWQoKTsKKyAgICByZXR1cm4gZW1wdHlTdHJpbmcoKTsKK30KKworTWVkaWFQbGF5ZXI6Oldp
cmVsZXNzUGxheWJhY2tUYXJnZXRUeXBlIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6d2lyZWxl
c3NQbGF5YmFja1RhcmdldFR5cGUoKSBjb25zdAoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cisg
ICAgcmV0dXJuIE1lZGlhUGxheWVyOjpUYXJnZXRUeXBlTm9uZTsKK30KKworYm9vbCBNZWRpYVBs
YXllclByaXZhdGVSZW1vdGU6OndpcmVsZXNzVmlkZW9QbGF5YmFja0Rpc2FibGVkKCkgY29uc3QK
K3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiB0cnVlOworfQorCit2b2lkIE1l
ZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6c2V0V2lyZWxlc3NWaWRlb1BsYXliYWNrRGlzYWJsZWQo
Ym9vbCkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCitib29sIE1lZGlhUGxheWVyUHJp
dmF0ZVJlbW90ZTo6Y2FuUGxheVRvV2lyZWxlc3NQbGF5YmFja1RhcmdldCgpIGNvbnN0Cit7Cisg
ICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK2Jvb2wgTWVkaWFQ
bGF5ZXJQcml2YXRlUmVtb3RlOjppc0N1cnJlbnRQbGF5YmFja1RhcmdldFdpcmVsZXNzKCkgY29u
c3QKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiBmYWxzZTsKK30KKwordm9p
ZCBNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OnNldFdpcmVsZXNzUGxheWJhY2tUYXJnZXQoUmVm
PE1lZGlhUGxheWJhY2tUYXJnZXQ+JiYpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwor
dm9pZCBNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OnNldFNob3VsZFBsYXlUb1BsYXliYWNrVGFy
Z2V0KGJvb2wpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKyNlbmRpZgorCisjaWYgVVNF
KE5BVElWRV9GVUxMU0NSRUVOX1ZJREVPKQorYm9vbCBNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6
OmNhbkVudGVyRnVsbHNjcmVlbigpIGNvbnN0Cit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAg
ICByZXR1cm4gZmFsc2U7Cit9CisjZW5kaWYKKworYm9vbCBNZWRpYVBsYXllclByaXZhdGVSZW1v
dGU6OnN1cHBvcnRzQWNjZWxlcmF0ZWRSZW5kZXJpbmcoKSBjb25zdAoreworICAgIG5vdEltcGxl
bWVudGVkKCk7CisgICAgcmV0dXJuIGZhbHNlOworfQorCit2b2lkIE1lZGlhUGxheWVyUHJpdmF0
ZVJlbW90ZTo6YWNjZWxlcmF0ZWRSZW5kZXJpbmdTdGF0ZUNoYW5nZWQoKQoreworICAgIG5vdElt
cGxlbWVudGVkKCk7Cit9CisKK2Jvb2wgTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpzaG91bGRN
YWludGFpbkFzcGVjdFJhdGlvKCkgY29uc3QKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAg
IHJldHVybiB0cnVlOworfQorCit2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6c2V0U2hv
dWxkTWFpbnRhaW5Bc3BlY3RSYXRpbyhib29sKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9
CisKK2Jvb2wgTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpoYXNTaW5nbGVTZWN1cml0eU9yaWdp
bigpIGNvbnN0Cit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gZmFsc2U7Cit9
CisKK2Jvb2wgTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpkaWRQYXNzQ09SU0FjY2Vzc0NoZWNr
KCkgY29uc3QKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiBmYWxzZTsKK30K
KworT3B0aW9uYWw8Ym9vbD4gTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjp3b3VsZFRhaW50T3Jp
Z2luKGNvbnN0IFNlY3VyaXR5T3JpZ2luJikgY29uc3QKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgp
OworICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Cit9CisKK01lZGlhUGxheWVyOjpNb3ZpZUxvYWRU
eXBlIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6bW92aWVMb2FkVHlwZSgpIGNvbnN0Cit7Cisg
ICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gTWVkaWFQbGF5ZXI6Ok1vdmllTG9hZFR5
cGU6OlVua25vd247Cit9CisKK3ZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpwcmVwYXJl
Rm9yUmVuZGVyaW5nKCkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCitNZWRpYVRpbWUg
TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjptZWRpYVRpbWVGb3JUaW1lVmFsdWUoY29uc3QgTWVk
aWFUaW1lJiB0aW1lVmFsdWUpIGNvbnN0Cit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICBy
ZXR1cm4gdGltZVZhbHVlOworfQorCitkb3VibGUgTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpt
YXhpbXVtRHVyYXRpb25Ub0NhY2hlTWVkaWFUaW1lKCkgY29uc3QKK3sKKyAgICBub3RJbXBsZW1l
bnRlZCgpOworICAgIHJldHVybiAwOworfQorCit1bnNpZ25lZCBNZWRpYVBsYXllclByaXZhdGVS
ZW1vdGU6OmRlY29kZWRGcmFtZUNvdW50KCkgY29uc3QKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgp
OworICAgIHJldHVybiAwOworfQorCit1bnNpZ25lZCBNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6
OmRyb3BwZWRGcmFtZUNvdW50KCkgY29uc3QKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAg
IHJldHVybiAwOworfQorCit1bnNpZ25lZCBNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OmF1ZGlv
RGVjb2RlZEJ5dGVDb3VudCgpIGNvbnN0Cit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICBy
ZXR1cm4gMDsKK30KKwordW5zaWduZWQgTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjp2aWRlb0Rl
Y29kZWRCeXRlQ291bnQoKSBjb25zdAoreworICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0
dXJuIDA7Cit9CisKK3ZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpzZXRQcml2YXRlQnJv
d3NpbmdNb2RlKGJvb2wpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKworU3RyaW5nIE1l
ZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6ZW5naW5lRGVzY3JpcHRpb24oKSBjb25zdAoreworICAg
IG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIGVtcHR5U3RyaW5nKCk7Cit9CisKKyNpZiBF
TkFCTEUoV0VCX0FVRElPKQorQXVkaW9Tb3VyY2VQcm92aWRlciogTWVkaWFQbGF5ZXJQcml2YXRl
UmVtb3RlOjphdWRpb1NvdXJjZVByb3ZpZGVyKCkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOwor
ICAgIHJldHVybiBudWxscHRyOworfQorI2VuZGlmCisKKyNpZiBFTkFCTEUoTEVHQUNZX0VOQ1JZ
UFRFRF9NRURJQSkKK3N0ZDo6dW5pcXVlX3B0cjxMZWdhY3lDRE1TZXNzaW9uPiBNZWRpYVBsYXll
clByaXZhdGVSZW1vdGU6OmNyZWF0ZVNlc3Npb24oY29uc3QgU3RyaW5nJiwgTGVnYWN5Q0RNU2Vz
c2lvbkNsaWVudCopCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gbnVsbHB0
cjsKK30KKwordm9pZCBNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OnNldENETVNlc3Npb24oTGVn
YWN5Q0RNU2Vzc2lvbiopCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwordm9pZCBNZWRp
YVBsYXllclByaXZhdGVSZW1vdGU6OmtleUFkZGVkKCkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgp
OworfQorI2VuZGlmCisKKyNpZiBFTkFCTEUoRU5DUllQVEVEX01FRElBKQordm9pZCBNZWRpYVBs
YXllclByaXZhdGVSZW1vdGU6OmNkbUluc3RhbmNlQXR0YWNoZWQoQ0RNSW5zdGFuY2UmKQorewor
ICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKK3ZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3Rl
OjpjZG1JbnN0YW5jZURldGFjaGVkKENETUluc3RhbmNlJikKK3sKKyAgICBub3RJbXBsZW1lbnRl
ZCgpOworfQorCit2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6YXR0ZW1wdFRvRGVjcnlw
dFdpdGhJbnN0YW5jZShDRE1JbnN0YW5jZSYpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30K
KworYm9vbCBNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OndhaXRpbmdGb3JLZXkoKSBjb25zdAor
eworICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIGZhbHNlOworfQorI2VuZGlmCisK
KyNpZiBFTkFCTEUoVklERU9fVFJBQ0spCitib29sIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6
cmVxdWlyZXNUZXh0VHJhY2tSZXByZXNlbnRhdGlvbigpIGNvbnN0Cit7CisgICAgbm90SW1wbGVt
ZW50ZWQoKTsKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK3ZvaWQgTWVkaWFQbGF5ZXJQcml2YXRl
UmVtb3RlOjpzZXRUZXh0VHJhY2tSZXByZXNlbnRhdGlvbihUZXh0VHJhY2tSZXByZXNlbnRhdGlv
biopCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwordm9pZCBNZWRpYVBsYXllclByaXZh
dGVSZW1vdGU6OnN5bmNUZXh0VHJhY2tCb3VuZHMoKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7
Cit9CisKK3ZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjp0cmFja3NDaGFuZ2VkKCkKK3sK
KyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorI2VuZGlmCisKKyNpZiBVU0UoR1NUUkVBTUVSKQor
dm9pZCBNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OnNpbXVsYXRlQXVkaW9JbnRlcnJ1cHRpb24o
KQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisjZW5kaWYKKwordm9pZCBNZWRpYVBsYXll
clByaXZhdGVSZW1vdGU6OmJlZ2luU2ltdWxhdGVkSERDUEVycm9yKCkKK3sKKyAgICBub3RJbXBs
ZW1lbnRlZCgpOworfQorCit2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6ZW5kU2ltdWxh
dGVkSERDUEVycm9yKCkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCitTdHJpbmcgTWVk
aWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpsYW5ndWFnZU9mUHJpbWFyeUF1ZGlvVHJhY2soKSBjb25z
dAoreworICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIGVtcHR5U3RyaW5nKCk7Cit9
CisKK3NpemVfdCBNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OmV4dHJhTWVtb3J5Q29zdCgpIGNv
bnN0Cit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gMDsKK30KKwordW5zaWdu
ZWQgbG9uZyBsb25nIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6ZmlsZVNpemUoKSBjb25zdAor
eworICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIDA7Cit9CisKK2Jvb2wgTWVkaWFQ
bGF5ZXJQcml2YXRlUmVtb3RlOjplbmRlZCgpIGNvbnN0Cit7CisgICAgbm90SW1wbGVtZW50ZWQo
KTsKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK09wdGlvbmFsPFZpZGVvUGxheWJhY2tRdWFsaXR5
TWV0cmljcz4gTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjp2aWRlb1BsYXliYWNrUXVhbGl0eU1l
dHJpY3MoKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIFdURjo6bnVsbG9w
dDsKK30KKworI2lmIEVOQUJMRShBVkZfQ0FQVElPTlMpCit2b2lkIE1lZGlhUGxheWVyUHJpdmF0
ZVJlbW90ZTo6bm90aWZ5VHJhY2tNb2RlQ2hhbmdlZCgpCit7CisgICAgbm90SW1wbGVtZW50ZWQo
KTsKK30KKyNlbmRpZgorCit2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6bm90aWZ5QWN0
aXZlU291cmNlQnVmZmVyc0NoYW5nZWQoKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisK
K3ZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpzZXRTaG91bGREaXNhYmxlU2xlZXAoYm9v
bCkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCit2b2lkIE1lZGlhUGxheWVyUHJpdmF0
ZVJlbW90ZTo6YXBwbGljYXRpb25XaWxsUmVzaWduQWN0aXZlKCkKK3sKKyAgICBub3RJbXBsZW1l
bnRlZCgpOworfQorCit2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6YXBwbGljYXRpb25E
aWRCZWNvbWVBY3RpdmUoKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKK2Jvb2wgTWVk
aWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpwZXJmb3JtVGFza0F0TWVkaWFUaW1lKFdURjo6RnVuY3Rp
b248dm9pZCgpPiYmLCBNZWRpYVRpbWUpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICBy
ZXR1cm4gZmFsc2U7Cit9CisKK2Jvb2wgTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpzaG91bGRJ
Z25vcmVJbnRyaW5zaWNTaXplKCkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVy
biBmYWxzZTsKK30KKworI2lmICFSRUxFQVNFX0xPR19ESVNBQkxFRAorV1RGTG9nQ2hhbm5lbCYg
TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpsb2dDaGFubmVsKCkgY29uc3QKK3sKKyAgICByZXR1
cm4gV2ViS2l0MkxvZ1dlYlJUQzsKK30KKyNlbmRpZgorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRp
YS9NZWRpYVBsYXllclByaXZhdGVSZW1vdGUuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9H
UFUvbWVkaWEvTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZjVlMWE2NTU2
ZTY2YzE5ZWZlYWY1MjNjODAwYzhjZjU2YTNlYTkzZAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlLmgK
QEAgLTAsMCArMSwyOTkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
CisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4g
CisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoR1BVX1BST0NFU1MpCisKKyNpbmNs
dWRlICJSZW1vdGVNZWRpYVBsYXllck1hbmFnZXIuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL01lZGlh
UGxheWVyUHJpdmF0ZS5oPgorI2luY2x1ZGUgPHd0Zi9Mb2dnZXJIZWxwZXIuaD4KKyNpbmNsdWRl
IDx3dGYvTWVkaWFUaW1lLmg+CisjaW5jbHVkZSA8d3RmL1dlYWtQdHIuaD4KKworbmFtZXNwYWNl
IFdlYktpdCB7CisKK2NsYXNzIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZSBmaW5hbAorICAgIDog
cHVibGljIENhbk1ha2VXZWFrUHRyPE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZT4KKyAgICAsIHB1
YmxpYyBNZWRpYVBsYXllclByaXZhdGVJbnRlcmZhY2UKKyNpZiAhUkVMRUFTRV9MT0dfRElTQUJM
RUQKKyAgICAsIHByaXZhdGUgTG9nZ2VySGVscGVyCisjZW5kaWYKK3sKK3B1YmxpYzoKKyAgICBz
dGF0aWMgc3RkOjp1bmlxdWVfcHRyPE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZT4gY3JlYXRlKE1l
ZGlhUGxheWVyKiBwbGF5ZXIsIE1lZGlhUGxheWVyRW51bXM6Ok1lZGlhRW5naW5lSWRlbnRpZmll
ciByZW1vdGVFbmdpbmVJZGVudGlmaWVyLCBNZWRpYVBsYXllclByaXZhdGVSZW1vdGVJZGVudGlm
aWVyIGlkZW50aWZpZXIsIFJlbW90ZU1lZGlhUGxheWVyTWFuYWdlciYgbWFuYWdlcikKKyAgICB7
CisgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZT4ocGxh
eWVyLCByZW1vdGVFbmdpbmVJZGVudGlmaWVyLCBpZGVudGlmaWVyLCBtYW5hZ2VyKTsKKyAgICB9
CisKKyAgICBleHBsaWNpdCBNZWRpYVBsYXllclByaXZhdGVSZW1vdGUoTWVkaWFQbGF5ZXIqLCBN
ZWRpYVBsYXllckVudW1zOjpNZWRpYUVuZ2luZUlkZW50aWZpZXIsIE1lZGlhUGxheWVyUHJpdmF0
ZVJlbW90ZUlkZW50aWZpZXIsIFJlbW90ZU1lZGlhUGxheWVyTWFuYWdlciYpOworICAgIHZpcnR1
YWwgfk1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZSgpOworCisgICAgdm9pZCBpbnZhbGlkYXRlKCkg
eyBtX2ludmFsaWQgPSB0cnVlOyB9CisgICAgTWVkaWFQbGF5ZXJFbnVtczo6TWVkaWFFbmdpbmVJ
ZGVudGlmaWVyIHJlbW90ZUVuZ2luZUlkZW50aWZpZXIoKSBjb25zdCB7IHJldHVybiBtX3JlbW90
ZUVuZ2luZUlkZW50aWZpZXI7IH0KKyAgICBNZWRpYVBsYXllclByaXZhdGVSZW1vdGVJZGVudGlm
aWVyIHBsYXllckl0ZW50aWZpZXIoKSBjb25zdCB7IHJldHVybiBtX2lkZW50aWZpZXI7IH0KKwor
I2lmICFSRUxFQVNFX0xPR19ESVNBQkxFRAorICAgIGNvbnN0IExvZ2dlciYgbG9nZ2VyKCkgY29u
c3QgZmluYWwgeyByZXR1cm4gbV9sb2dnZXIuZ2V0KCk7IH0KKyAgICBjb25zdCBjaGFyKiBsb2dD
bGFzc05hbWUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiAiTWVkaWFQbGF5ZXJQcml2YXRlUmVt
b3RlIjsgfQorICAgIGNvbnN0IHZvaWQqIGxvZ0lkZW50aWZpZXIoKSBjb25zdCBmaW5hbCB7IHJl
dHVybiByZWludGVycHJldF9jYXN0PGNvbnN0IHZvaWQqPihtX2xvZ0lkZW50aWZpZXIpOyB9Cisg
ICAgV1RGTG9nQ2hhbm5lbCYgbG9nQ2hhbm5lbCgpIGNvbnN0IGZpbmFsOworI2VuZGlmCisKK3By
aXZhdGU6CisKKyAgICB2b2lkIGxvYWQoY29uc3QgU3RyaW5nJikgZmluYWw7CisjaWYgRU5BQkxF
KE1FRElBX1NPVVJDRSkKKyAgICB2b2lkIGxvYWQoY29uc3QgU3RyaW5nJiwgTWVkaWFTb3VyY2VQ
cml2YXRlQ2xpZW50KikgZmluYWw7CisjZW5kaWYKKyNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQor
ICAgIHZvaWQgbG9hZChNZWRpYVN0cmVhbVByaXZhdGUmKSBmaW5hbDsKKyNlbmRpZgorICAgIHZv
aWQgY2FuY2VsTG9hZCgpIGZpbmFsOworICAgIAorICAgIHZvaWQgcHJlcGFyZVRvUGxheSgpIGZp
bmFsOworICAgIFBsYXRmb3JtTGF5ZXIqIHBsYXRmb3JtTGF5ZXIoKSBjb25zdCBmaW5hbDsKKwor
I2lmIFBMQVRGT1JNKElPU19GQU1JTFkpIHx8IChQTEFURk9STShNQUMpICYmIEVOQUJMRShWSURF
T19QUkVTRU5UQVRJT05fTU9ERSkpCisgICAgdm9pZCBzZXRWaWRlb0Z1bGxzY3JlZW5MYXllcihQ
bGF0Zm9ybUxheWVyKiwgV1RGOjpGdW5jdGlvbjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIp
IGZpbmFsOworICAgIHZvaWQgdXBkYXRlVmlkZW9GdWxsc2NyZWVuSW5saW5lSW1hZ2UoKSBmaW5h
bDsKKyAgICB2b2lkIHNldFZpZGVvRnVsbHNjcmVlbkZyYW1lKEZsb2F0UmVjdCkgZmluYWw7Cisg
ICAgdm9pZCBzZXRWaWRlb0Z1bGxzY3JlZW5HcmF2aXR5KE1lZGlhUGxheWVyOjpWaWRlb0dyYXZp
dHkpIGZpbmFsOworICAgIHZvaWQgc2V0VmlkZW9GdWxsc2NyZWVuTW9kZShNZWRpYVBsYXllcjo6
VmlkZW9GdWxsc2NyZWVuTW9kZSkgZmluYWw7CisgICAgdm9pZCB2aWRlb0Z1bGxzY3JlZW5TdGFu
ZGJ5Q2hhbmdlZCgpIGZpbmFsOworI2VuZGlmCisKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQor
ICAgIE5TQXJyYXkgKnRpbWVkTWV0YWRhdGEoKSBjb25zdCBmaW5hbDsKKyAgICBTdHJpbmcgYWNj
ZXNzTG9nKCkgY29uc3QgZmluYWw7CisgICAgU3RyaW5nIGVycm9yTG9nKCkgY29uc3QgZmluYWw7
CisjZW5kaWYKKyAgICBsb25nIHBsYXRmb3JtRXJyb3JDb2RlKCkgY29uc3QgZmluYWw7CisKKyAg
ICB2b2lkIHBsYXkoKSBmaW5hbDsKKyAgICB2b2lkIHBhdXNlKCkgZmluYWw7CisgICAgdm9pZCBz
ZXRCdWZmZXJpbmdQb2xpY3koTWVkaWFQbGF5ZXI6OkJ1ZmZlcmluZ1BvbGljeSkgZmluYWw7CisK
KyAgICBib29sIHN1cHBvcnRzUGljdHVyZUluUGljdHVyZSgpIGNvbnN0IGZpbmFsOworICAgIGJv
b2wgc3VwcG9ydHNGdWxsc2NyZWVuKCkgY29uc3QgZmluYWw7CisgICAgYm9vbCBzdXBwb3J0c1Nj
YW5uaW5nKCkgY29uc3QgZmluYWw7CisgICAgYm9vbCByZXF1aXJlc0ltbWVkaWF0ZUNvbXBvc2l0
aW5nKCkgY29uc3QgZmluYWw7CisKKyAgICBib29sIGNhblNhdmVNZWRpYURhdGEoKSBjb25zdCBm
aW5hbDsKKworICAgIEZsb2F0U2l6ZSBuYXR1cmFsU2l6ZSgpIGNvbnN0IGZpbmFsOworCisgICAg
Ym9vbCBoYXNWaWRlbygpIGNvbnN0IGZpbmFsOworICAgIGJvb2wgaGFzQXVkaW8oKSBjb25zdCBm
aW5hbDsKKworICAgIHZvaWQgc2V0VmlzaWJsZShib29sKSBmaW5hbDsKKworICAgIE1lZGlhVGlt
ZSBkdXJhdGlvbk1lZGlhVGltZSgpIGNvbnN0IGZpbmFsOworICAgIE1lZGlhVGltZSBjdXJyZW50
TWVkaWFUaW1lKCkgY29uc3QgZmluYWw7CisKKyAgICBNZWRpYVRpbWUgZ2V0U3RhcnREYXRlKCkg
Y29uc3QgZmluYWw7CisKKyAgICB2b2lkIHNlZWsoY29uc3QgTWVkaWFUaW1lJikgZmluYWw7Cisg
ICAgdm9pZCBzZWVrV2l0aFRvbGVyYW5jZShjb25zdCBNZWRpYVRpbWUmLCBjb25zdCBNZWRpYVRp
bWUmLCBjb25zdCBNZWRpYVRpbWUmKSBmaW5hbDsKKworICAgIGJvb2wgc2Vla2luZygpIGNvbnN0
IGZpbmFsOworCisgICAgTWVkaWFUaW1lIHN0YXJ0VGltZSgpIGNvbnN0IGZpbmFsOworCisgICAg
dm9pZCBzZXRSYXRlRG91YmxlKGRvdWJsZSkgZmluYWw7CisgICAgZG91YmxlIHJhdGUoKSBjb25z
dCBmaW5hbDsKKworICAgIHZvaWQgc2V0UHJlc2VydmVzUGl0Y2goYm9vbCkgZmluYWw7CisKKyAg
ICBib29sIHBhdXNlZCgpIGNvbnN0IGZpbmFsOworCisgICAgdm9pZCBzZXRWb2x1bWVEb3VibGUo
ZG91YmxlKSBmaW5hbDsKKworI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpIHx8IFVTRShHU1RSRUFN
RVIpCisgICAgZmxvYXQgdm9sdW1lKCkgY29uc3QgZmluYWwgeyByZXR1cm4gMTsgfQorI2VuZGlm
CisKKyAgICB2b2lkIHNldE11dGVkKGJvb2wpIGZpbmFsOworCisgICAgYm9vbCBoYXNDbG9zZWRD
YXB0aW9ucygpIGNvbnN0IGZpbmFsOworICAgIHZvaWQgc2V0Q2xvc2VkQ2FwdGlvbnNWaXNpYmxl
KGJvb2wpIGZpbmFsOworCisgICAgZG91YmxlIG1heEZhc3RGb3J3YXJkUmF0ZSgpIGNvbnN0IGZp
bmFsOworICAgIGRvdWJsZSBtaW5GYXN0UmV2ZXJzZVJhdGUoKSBjb25zdCBmaW5hbDsKKworICAg
IE1lZGlhUGxheWVyOjpOZXR3b3JrU3RhdGUgbmV0d29ya1N0YXRlKCkgY29uc3QgZmluYWw7Cisg
ICAgTWVkaWFQbGF5ZXI6OlJlYWR5U3RhdGUgcmVhZHlTdGF0ZSgpIGNvbnN0IGZpbmFsOworCisg
ICAgc3RkOjp1bmlxdWVfcHRyPFBsYXRmb3JtVGltZVJhbmdlcz4gc2Vla2FibGUoKSBjb25zdCBm
aW5hbDsKKworICAgIE1lZGlhVGltZSBtYXhNZWRpYVRpbWVTZWVrYWJsZSgpIGNvbnN0IGZpbmFs
OworICAgIE1lZGlhVGltZSBtaW5NZWRpYVRpbWVTZWVrYWJsZSgpIGNvbnN0IGZpbmFsOworICAg
IHN0ZDo6dW5pcXVlX3B0cjxQbGF0Zm9ybVRpbWVSYW5nZXM+IGJ1ZmZlcmVkKCkgY29uc3QgZmlu
YWw7CisgICAgZG91YmxlIHNlZWthYmxlVGltZVJhbmdlc0xhc3RNb2RpZmllZFRpbWUoKSBjb25z
dCBmaW5hbDsKKyAgICBkb3VibGUgbGl2ZVVwZGF0ZUludGVydmFsKCkgY29uc3QgZmluYWw7CisK
KyAgICB1bnNpZ25lZCBsb25nIGxvbmcgdG90YWxCeXRlcygpIGNvbnN0IGZpbmFsOworICAgIGJv
b2wgZGlkTG9hZGluZ1Byb2dyZXNzKCkgY29uc3QgZmluYWw7CisKKyAgICB2b2lkIHNldFNpemUo
Y29uc3QgSW50U2l6ZSYpIGZpbmFsOworCisgICAgdm9pZCBwYWludChHcmFwaGljc0NvbnRleHQm
LCBjb25zdCBGbG9hdFJlY3QmKSBmaW5hbDsKKworICAgIHZvaWQgcGFpbnRDdXJyZW50RnJhbWVJ
bkNvbnRleHQoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRSZWN0JikgZmluYWw7CisgICAg
Ym9vbCBjb3B5VmlkZW9UZXh0dXJlVG9QbGF0Zm9ybVRleHR1cmUoR3JhcGhpY3NDb250ZXh0M0Qq
LCBQbGF0Zm9ybTNET2JqZWN0LCBHQzNEZW51bSwgR0MzRGludCwgR0MzRGVudW0sIEdDM0RlbnVt
LCBHQzNEZW51bSwgYm9vbCwgYm9vbCkgZmluYWw7CisgICAgTmF0aXZlSW1hZ2VQdHIgbmF0aXZl
SW1hZ2VGb3JDdXJyZW50VGltZSgpIGZpbmFsOworCisgICAgdm9pZCBzZXRQcmVsb2FkKE1lZGlh
UGxheWVyOjpQcmVsb2FkKSBmaW5hbDsKKworICAgIGJvb2wgaGFzQXZhaWxhYmxlVmlkZW9GcmFt
ZSgpIGNvbnN0IGZpbmFsOworCisgICAgYm9vbCBjYW5Mb2FkUG9zdGVyKCkgY29uc3QgZmluYWw7
CisgICAgdm9pZCBzZXRQb3N0ZXIoY29uc3QgU3RyaW5nJikgZmluYWw7CisKKyNpZiBVU0UoTkFU
SVZFX0ZVTExTQ1JFRU5fVklERU8pCisgICAgdm9pZCBlbnRlckZ1bGxzY3JlZW4oKSBmaW5hbDsK
KyAgICB2b2lkIGV4aXRGdWxsc2NyZWVuKCkgZmluYWw7CisjZW5kaWYKKworI2lmIEVOQUJMRShX
SVJFTEVTU19QTEFZQkFDS19UQVJHRVQpCisgICAgU3RyaW5nIHdpcmVsZXNzUGxheWJhY2tUYXJn
ZXROYW1lKCkgY29uc3QgZmluYWw7CisgICAgTWVkaWFQbGF5ZXI6OldpcmVsZXNzUGxheWJhY2tU
YXJnZXRUeXBlIHdpcmVsZXNzUGxheWJhY2tUYXJnZXRUeXBlKCkgY29uc3QgZmluYWw7CisKKyAg
ICBib29sIHdpcmVsZXNzVmlkZW9QbGF5YmFja0Rpc2FibGVkKCkgY29uc3QgZmluYWw7CisgICAg
dm9pZCBzZXRXaXJlbGVzc1ZpZGVvUGxheWJhY2tEaXNhYmxlZChib29sKSBmaW5hbDsKKworICAg
IGJvb2wgY2FuUGxheVRvV2lyZWxlc3NQbGF5YmFja1RhcmdldCgpIGNvbnN0IGZpbmFsOworICAg
IGJvb2wgaXNDdXJyZW50UGxheWJhY2tUYXJnZXRXaXJlbGVzcygpIGNvbnN0IGZpbmFsOworICAg
IHZvaWQgc2V0V2lyZWxlc3NQbGF5YmFja1RhcmdldChSZWY8TWVkaWFQbGF5YmFja1RhcmdldD4m
JikgZmluYWw7CisKKyAgICB2b2lkIHNldFNob3VsZFBsYXlUb1BsYXliYWNrVGFyZ2V0KGJvb2wp
IGZpbmFsOworI2VuZGlmCisKKyNpZiBVU0UoTkFUSVZFX0ZVTExTQ1JFRU5fVklERU8pCisgICAg
Ym9vbCBjYW5FbnRlckZ1bGxzY3JlZW4oKSBjb25zdCBmaW5hbDsKKyNlbmRpZgorCisgICAgYm9v
bCBzdXBwb3J0c0FjY2VsZXJhdGVkUmVuZGVyaW5nKCkgY29uc3QgZmluYWw7CisgICAgdm9pZCBh
Y2NlbGVyYXRlZFJlbmRlcmluZ1N0YXRlQ2hhbmdlZCgpIGZpbmFsOworCisgICAgYm9vbCBzaG91
bGRNYWludGFpbkFzcGVjdFJhdGlvKCkgY29uc3QgZmluYWw7CisgICAgdm9pZCBzZXRTaG91bGRN
YWludGFpbkFzcGVjdFJhdGlvKGJvb2wpIGZpbmFsOworCisgICAgYm9vbCBoYXNTaW5nbGVTZWN1
cml0eU9yaWdpbigpIGNvbnN0IGZpbmFsOworICAgIGJvb2wgZGlkUGFzc0NPUlNBY2Nlc3NDaGVj
aygpIGNvbnN0IGZpbmFsOworICAgIE9wdGlvbmFsPGJvb2w+IHdvdWxkVGFpbnRPcmlnaW4oY29u
c3QgU2VjdXJpdHlPcmlnaW4mKSBjb25zdCBmaW5hbDsKKworICAgIE1lZGlhUGxheWVyOjpNb3Zp
ZUxvYWRUeXBlIG1vdmllTG9hZFR5cGUoKSBjb25zdCBmaW5hbDsKKworICAgIHZvaWQgcHJlcGFy
ZUZvclJlbmRlcmluZygpIGZpbmFsOworCisgICAgTWVkaWFUaW1lIG1lZGlhVGltZUZvclRpbWVW
YWx1ZShjb25zdCBNZWRpYVRpbWUmIHRpbWVWYWx1ZSkgY29uc3QgZmluYWw7CisKKyAgICBkb3Vi
bGUgbWF4aW11bUR1cmF0aW9uVG9DYWNoZU1lZGlhVGltZSgpIGNvbnN0IGZpbmFsOworCisgICAg
dW5zaWduZWQgZGVjb2RlZEZyYW1lQ291bnQoKSBjb25zdCBmaW5hbDsKKyAgICB1bnNpZ25lZCBk
cm9wcGVkRnJhbWVDb3VudCgpIGNvbnN0IGZpbmFsOworICAgIHVuc2lnbmVkIGF1ZGlvRGVjb2Rl
ZEJ5dGVDb3VudCgpIGNvbnN0IGZpbmFsOworICAgIHVuc2lnbmVkIHZpZGVvRGVjb2RlZEJ5dGVD
b3VudCgpIGNvbnN0IGZpbmFsOworCisgICAgdm9pZCBzZXRQcml2YXRlQnJvd3NpbmdNb2RlKGJv
b2wpIGZpbmFsOworICAgIFN0cmluZyBlbmdpbmVEZXNjcmlwdGlvbigpIGNvbnN0IGZpbmFsOwor
CisjaWYgRU5BQkxFKFdFQl9BVURJTykKKyAgICBBdWRpb1NvdXJjZVByb3ZpZGVyKiBhdWRpb1Nv
dXJjZVByb3ZpZGVyKCkgZmluYWw7CisjZW5kaWYKKworI2lmIEVOQUJMRShMRUdBQ1lfRU5DUllQ
VEVEX01FRElBKQorICAgIHN0ZDo6dW5pcXVlX3B0cjxMZWdhY3lDRE1TZXNzaW9uPiBjcmVhdGVT
ZXNzaW9uKGNvbnN0IFN0cmluZyYsIExlZ2FjeUNETVNlc3Npb25DbGllbnQqKSBmaW5hbDsKKyAg
ICB2b2lkIHNldENETVNlc3Npb24oTGVnYWN5Q0RNU2Vzc2lvbiopIGZpbmFsOworICAgIHZvaWQg
a2V5QWRkZWQoKSBmaW5hbDsKKyNlbmRpZgorCisjaWYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkK
KyAgICB2b2lkIGNkbUluc3RhbmNlQXR0YWNoZWQoQ0RNSW5zdGFuY2UmKSBmaW5hbDsKKyAgICB2
b2lkIGNkbUluc3RhbmNlRGV0YWNoZWQoQ0RNSW5zdGFuY2UmKSBmaW5hbDsKKyAgICB2b2lkIGF0
dGVtcHRUb0RlY3J5cHRXaXRoSW5zdGFuY2UoQ0RNSW5zdGFuY2UmKSBmaW5hbDsKKyAgICBib29s
IHdhaXRpbmdGb3JLZXkoKSBjb25zdCBmaW5hbDsKKyNlbmRpZgorCisjaWYgRU5BQkxFKFZJREVP
X1RSQUNLKQorICAgIGJvb2wgcmVxdWlyZXNUZXh0VHJhY2tSZXByZXNlbnRhdGlvbigpIGNvbnN0
IGZpbmFsOworICAgIHZvaWQgc2V0VGV4dFRyYWNrUmVwcmVzZW50YXRpb24oVGV4dFRyYWNrUmVw
cmVzZW50YXRpb24qKSBmaW5hbDsKKyAgICB2b2lkIHN5bmNUZXh0VHJhY2tCb3VuZHMoKSBmaW5h
bDsKKyAgICB2b2lkIHRyYWNrc0NoYW5nZWQoKSBmaW5hbDsKKyNlbmRpZgorCisjaWYgVVNFKEdT
VFJFQU1FUikKKyAgICB2b2lkIHNpbXVsYXRlQXVkaW9JbnRlcnJ1cHRpb24oKSBmaW5hbDsKKyNl
bmRpZgorCisgICAgdm9pZCBiZWdpblNpbXVsYXRlZEhEQ1BFcnJvcigpIGZpbmFsOworICAgIHZv
aWQgZW5kU2ltdWxhdGVkSERDUEVycm9yKCkgZmluYWw7CisKKyAgICBTdHJpbmcgbGFuZ3VhZ2VP
ZlByaW1hcnlBdWRpb1RyYWNrKCkgY29uc3QgZmluYWw7CisKKyAgICBzaXplX3QgZXh0cmFNZW1v
cnlDb3N0KCkgY29uc3QgZmluYWw7CisKKyAgICB1bnNpZ25lZCBsb25nIGxvbmcgZmlsZVNpemUo
KSBjb25zdCBmaW5hbDsKKworICAgIGJvb2wgZW5kZWQoKSBjb25zdCBmaW5hbDsKKworICAgIE9w
dGlvbmFsPFZpZGVvUGxheWJhY2tRdWFsaXR5TWV0cmljcz4gdmlkZW9QbGF5YmFja1F1YWxpdHlN
ZXRyaWNzKCkgZmluYWw7CisKKyNpZiBFTkFCTEUoQVZGX0NBUFRJT05TKQorICAgIHZvaWQgbm90
aWZ5VHJhY2tNb2RlQ2hhbmdlZCgpIGZpbmFsOworI2VuZGlmCisKKyAgICB2b2lkIG5vdGlmeUFj
dGl2ZVNvdXJjZUJ1ZmZlcnNDaGFuZ2VkKCkgZmluYWw7CisKKyAgICB2b2lkIHNldFNob3VsZERp
c2FibGVTbGVlcChib29sKSBmaW5hbDsKKworICAgIHZvaWQgYXBwbGljYXRpb25XaWxsUmVzaWdu
QWN0aXZlKCkgZmluYWw7CisgICAgdm9pZCBhcHBsaWNhdGlvbkRpZEJlY29tZUFjdGl2ZSgpIGZp
bmFsOworCisjaWYgVVNFKEFWRk9VTkRBVElPTikKKyAgICBBVlBsYXllciAqb2JqQ0FWRm91bmRh
dGlvbkFWUGxheWVyKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbnVsbHB0cjsgfQorI2VuZGlmCisK
KyAgICBib29sIHBlcmZvcm1UYXNrQXRNZWRpYVRpbWUoV1RGOjpGdW5jdGlvbjx2b2lkKCk+JiYs
IE1lZGlhVGltZSkgZmluYWw7CisKKyAgICBib29sIHNob3VsZElnbm9yZUludHJpbnNpY1NpemUo
KSBmaW5hbDsKKworICAgIE1lZGlhUGxheWVyKiBtX3BsYXllciB7IG51bGxwdHIgfTsKKyAgICBS
ZW1vdGVNZWRpYVBsYXllck1hbmFnZXIgbV9tYW5hZ2VyOworICAgIE1lZGlhUGxheWVyRW51bXM6
Ok1lZGlhRW5naW5lSWRlbnRpZmllciBtX3JlbW90ZUVuZ2luZUlkZW50aWZpZXI7CisgICAgTWVk
aWFQbGF5ZXJQcml2YXRlUmVtb3RlSWRlbnRpZmllciBtX2lkZW50aWZpZXI7CisKKyNpZiAhUkVM
RUFTRV9MT0dfRElTQUJMRUQKKyAgICBSZWY8Y29uc3QgTG9nZ2VyPiBtX2xvZ2dlcjsKKyAgICBj
b25zdCB2b2lkKiBtX2xvZ0lkZW50aWZpZXI7CisjZW5kaWYKKworICAgIGJvb2wgbV9pbnZhbGlk
IHsgZmFsc2UgfTsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvTWVkaWFQbGF5ZXJQcml2
YXRlUmVtb3RlSWRlbnRpZmllci5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRp
YS9NZWRpYVBsYXllclByaXZhdGVSZW1vdGVJZGVudGlmaWVyLmgKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uODdlN2I4
YmJhZWMzNTM0ZTdkZWZkNzgyMzg2MTAxNDMyMTc1MzhjNwotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3Rl
SWRlbnRpZmllci5oCkBAIC0wLDAgKzEsMzUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTkg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSAsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBB
UyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJV
VE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
CisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNl
CisKKyNpbmNsdWRlIDx3dGYvT2JqZWN0SWRlbnRpZmllci5oPgorCituYW1lc3BhY2UgV2ViS2l0
IHsKKworZW51bSBNZWRpYVBsYXllclByaXZhdGVSZW1vdGVJZGVudGlmaWVyVHlwZSB7IH07Cit1
c2luZyBNZWRpYVBsYXllclByaXZhdGVSZW1vdGVJZGVudGlmaWVyID0gT2JqZWN0SWRlbnRpZmll
cjxNZWRpYVBsYXllclByaXZhdGVSZW1vdGVJZGVudGlmaWVyVHlwZT47CisKK30gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVk
aWEvUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9HUFUvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyLmNwcApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43OTRk
Y2Y3YWM2M2ZkOWVjNDNjYWRhNWU4MmVjNWJmNDA0YWNjOTQ5Ci0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVNZWRpYVBsYXllck1hbmFn
ZXIuY3BwCkBAIC0wLDAgKzEsMjA5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycn
CisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwor
ICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICog
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5o
IgorI2luY2x1ZGUgIlJlbW90ZU1lZGlhUGxheWVyTWFuYWdlci5oIgorCisjaWYgRU5BQkxFKEdQ
VV9QUk9DRVNTKQorCisjaW5jbHVkZSAiUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyTWVzc2FnZXMu
aCIKKyNpbmNsdWRlICJSZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eU1lc3NhZ2VzLmgiCisj
aW5jbHVkZSAiV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgiCisjaW5jbHVkZSAiV2ViUHJvY2Vzcy5o
IgorI2luY2x1ZGUgIldlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuaCIKKyNpbmNsdWRlIDxX
ZWJDb3JlL01lZGlhUGxheWVyLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9Ob3RJbXBsZW1lbnRlZC5o
PgorI2luY2x1ZGUgPFdlYkNvcmUvU2V0dGluZ3MuaD4KKyNpbmNsdWRlIDx3dGYvQXNzZXJ0aW9u
cy5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsKK3VzaW5nIG5hbWVzcGFjZSBQQUw7Cit1c2luZyBu
YW1lc3BhY2UgV2ViQ29yZTsKKworY2xhc3MgTWVkaWFQbGF5ZXJSZW1vdGVGYWN0b3J5IDogcHVi
bGljIE1lZGlhUGxheWVyRmFjdG9yeSB7CitwdWJsaWM6CisgICAgTWVkaWFQbGF5ZXJSZW1vdGVG
YWN0b3J5KE1lZGlhUGxheWVyRW51bXM6Ok1lZGlhRW5naW5lSWRlbnRpZmllciByZW1vdGVFbmdp
bmVJZGVudGlmaWVyLCBSZW1vdGVNZWRpYVBsYXllck1hbmFnZXImIG1hbmFnZXIpCisgICAgICAg
IDogbV9yZW1vdGVFbmdpbmVJZGVudGlmaWVyKHJlbW90ZUVuZ2luZUlkZW50aWZpZXIpCisgICAg
ICAgICwgbV9tYW5hZ2VyKG1hbmFnZXIpCisgICAgeworICAgIH0KKworICAgIE1lZGlhUGxheWVy
RW51bXM6Ok1lZGlhRW5naW5lSWRlbnRpZmllciBpZGVudGlmaWVyKCkgY29uc3QgZmluYWwgeyBy
ZXR1cm4gbV9yZW1vdGVFbmdpbmVJZGVudGlmaWVyOyB9OworCisgICAgc3RkOjp1bmlxdWVfcHRy
PE1lZGlhUGxheWVyUHJpdmF0ZUludGVyZmFjZT4gY3JlYXRlTWVkaWFFbmdpbmVQbGF5ZXIoTWVk
aWFQbGF5ZXIqIHBsYXllcikgY29uc3QgZmluYWwKKyAgICB7CisgICAgICAgIHJldHVybiBtX21h
bmFnZXIuY3JlYXRlUmVtb3RlTWVkaWFQbGF5ZXIocGxheWVyLCBtX3JlbW90ZUVuZ2luZUlkZW50
aWZpZXIpOworICAgIH0KKworICAgIHZvaWQgZ2V0U3VwcG9ydGVkVHlwZXMoSGFzaFNldDxTdHJp
bmcsIEFTQ0lJQ2FzZUluc2Vuc2l0aXZlSGFzaD4mIHR5cGVzKSBjb25zdCBmaW5hbAorICAgIHsK
KyAgICAgICAgcmV0dXJuIG1fbWFuYWdlci5nZXRTdXBwb3J0ZWRUeXBlcyhtX3JlbW90ZUVuZ2lu
ZUlkZW50aWZpZXIsIHR5cGVzKTsKKyAgICB9CisKKyAgICBNZWRpYVBsYXllcjo6U3VwcG9ydHNU
eXBlIHN1cHBvcnRzVHlwZUFuZENvZGVjcyhjb25zdCBNZWRpYUVuZ2luZVN1cHBvcnRQYXJhbWV0
ZXJzJiBwYXJhbWV0ZXJzKSBjb25zdCBmaW5hbAorICAgIHsKKyAgICAgICAgcmV0dXJuIG1fbWFu
YWdlci5zdXBwb3J0c1R5cGVBbmRDb2RlY3MobV9yZW1vdGVFbmdpbmVJZGVudGlmaWVyLCBwYXJh
bWV0ZXJzKTsKKyAgICB9CisKKyAgICBIYXNoU2V0PFJlZlB0cjxTZWN1cml0eU9yaWdpbj4+IG9y
aWdpbnNJbk1lZGlhQ2FjaGUoY29uc3QgU3RyaW5nJiBwYXRoKSBjb25zdCBmaW5hbAorICAgIHsK
KyAgICAgICAgcmV0dXJuIG1fbWFuYWdlci5vcmlnaW5zSW5NZWRpYUNhY2hlKG1fcmVtb3RlRW5n
aW5lSWRlbnRpZmllciwgcGF0aCk7CisgICAgfQorCisgICAgdm9pZCBjbGVhck1lZGlhQ2FjaGUo
Y29uc3QgU3RyaW5nJiBwYXRoLCBXYWxsVGltZSBtb2RpZmllZFNpbmNlKSBjb25zdCBmaW5hbAor
ICAgIHsKKyAgICAgICAgcmV0dXJuIG1fbWFuYWdlci5jbGVhck1lZGlhQ2FjaGUobV9yZW1vdGVF
bmdpbmVJZGVudGlmaWVyLCBwYXRoLCBtb2RpZmllZFNpbmNlKTsKKyAgICB9CisKKyAgICB2b2lk
IGNsZWFyTWVkaWFDYWNoZUZvck9yaWdpbnMoY29uc3QgU3RyaW5nJiBwYXRoLCBjb25zdCBIYXNo
U2V0PFJlZlB0cjxTZWN1cml0eU9yaWdpbj4+JiBvcmlnaW5zKSBjb25zdCBmaW5hbAorICAgIHsK
KyAgICAgICAgcmV0dXJuIG1fbWFuYWdlci5jbGVhck1lZGlhQ2FjaGVGb3JPcmlnaW5zKG1fcmVt
b3RlRW5naW5lSWRlbnRpZmllciwgcGF0aCwgb3JpZ2lucyk7CisgICAgfQorCisgICAgYm9vbCBz
dXBwb3J0c0tleVN5c3RlbShjb25zdCBTdHJpbmcmIGtleVN5c3RlbSwgY29uc3QgU3RyaW5nJiBt
aW1lVHlwZSkgY29uc3QgZmluYWwKKyAgICB7CisgICAgICAgIHJldHVybiBtX21hbmFnZXIuc3Vw
cG9ydHNLZXlTeXN0ZW0obV9yZW1vdGVFbmdpbmVJZGVudGlmaWVyLCBrZXlTeXN0ZW0sIG1pbWVU
eXBlKTsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgTWVkaWFQbGF5ZXJFbnVtczo6TWVkaWFFbmdp
bmVJZGVudGlmaWVyIG1fcmVtb3RlRW5naW5lSWRlbnRpZmllcjsKKyAgICBSZW1vdGVNZWRpYVBs
YXllck1hbmFnZXImIG1fbWFuYWdlcjsKK307CisKK1JlbW90ZU1lZGlhUGxheWVyTWFuYWdlcjo6
UmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyKFdlYlByb2Nlc3MmIHByb2Nlc3MpCisgICAgOiBtX3By
b2Nlc3MocHJvY2VzcykKK3sKKyAgICBtX3Byb2Nlc3MuYWRkTWVzc2FnZVJlY2VpdmVyKE1lc3Nh
Z2VzOjpSZW1vdGVNZWRpYVBsYXllck1hbmFnZXI6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgKnRo
aXMpOworfQorCitSZW1vdGVNZWRpYVBsYXllck1hbmFnZXI6On5SZW1vdGVNZWRpYVBsYXllck1h
bmFnZXIoKQoreworICAgIG1fcHJvY2Vzcy5yZW1vdmVNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6
OlJlbW90ZU1lZGlhUGxheWVyTWFuYWdlcjo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpKTsKK30KKwor
Y29uc3QgY2hhciogUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyOjpzdXBwbGVtZW50TmFtZSgpCit7
CisgICAgcmV0dXJuICJSZW1vdGVNZWRpYVBsYXllck1hbmFnZXIiOworfQorCit2b2lkIFJlbW90
ZU1lZGlhUGxheWVyTWFuYWdlcjo6aW5pdGlhbGl6ZShjb25zdCBXZWJQcm9jZXNzQ3JlYXRpb25Q
YXJhbWV0ZXJzJikKK3sKKy8vIEZJWE1FOiBVc2UgcGFyYW1ldGVycy5tZWRpYU1JTUVUeXBlcy4K
K30KKworc3RkOjp1bmlxdWVfcHRyPE1lZGlhUGxheWVyUHJpdmF0ZUludGVyZmFjZT4gUmVtb3Rl
TWVkaWFQbGF5ZXJNYW5hZ2VyOjpjcmVhdGVSZW1vdGVNZWRpYVBsYXllcihNZWRpYVBsYXllciog
cGxheWVyLCBNZWRpYVBsYXllckVudW1zOjpNZWRpYUVuZ2luZUlkZW50aWZpZXIgcmVtb3RlRW5n
aW5lSWRlbnRpZmllcikKK3sKKyAgICBhdXRvIGlkID0gTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3Rl
SWRlbnRpZmllcjo6Z2VuZXJhdGUoKTsKKworICAgIGJvb2wgaGF2ZVJlbW90ZVByb3h5OworICAg
IGJvb2wgc2VuZFN1Y2NlZWRlZCA9IGdwdVByb2Nlc3NDb25uZWN0aW9uKCkuc2VuZFN5bmMoTWVz
c2FnZXM6OlJlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5OjpDcmVhdGVNZWRpYVBsYXllcihp
ZCwgcmVtb3RlRW5naW5lSWRlbnRpZmllciksIE1lc3NhZ2VzOjpSZW1vdGVNZWRpYVBsYXllck1h
bmFnZXJQcm94eTo6Q3JlYXRlTWVkaWFQbGF5ZXI6OlJlcGx5KGhhdmVSZW1vdGVQcm94eSksIDAp
OworICAgIGlmICghaGF2ZVJlbW90ZVByb3h5IHx8ICFzZW5kU3VjY2VlZGVkKSB7CisgICAgICAg
IFdURkxvZ0Fsd2F5cygiRmFpbGVkIHRvIGNyZWF0ZSByZW1vdGUgbWVkaWEgcGxheWVyLiIpOwor
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICB9CisKKyAgICBhdXRvIHJlbW90ZVBsYXllciA9
IE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6Y3JlYXRlKHBsYXllciwgcmVtb3RlRW5naW5lSWRl
bnRpZmllciwgaWQsICp0aGlzKTsKKyAgICBtX3BsYXllcnMuYWRkKGlkLCBtYWtlV2Vha1B0cigq
cmVtb3RlUGxheWVyKSk7CisgICAgcmV0dXJuIHJlbW90ZVBsYXllcjsKK30KKwordm9pZCBSZW1v
dGVNZWRpYVBsYXllck1hbmFnZXI6OmdldFN1cHBvcnRlZFR5cGVzKE1lZGlhUGxheWVyRW51bXM6
Ok1lZGlhRW5naW5lSWRlbnRpZmllciByZW1vdGVFbmdpbmVJZGVudGlmaWVyLCBIYXNoU2V0PFN0
cmluZywgQVNDSUlDYXNlSW5zZW5zaXRpdmVIYXNoPiYgcmVzdWx0KQoreworICAgIC8vIEZJWE1F
OiBzdXBwb3J0ZWQgdHlwZXMgZG9uJ3QgY2hhbmdlLCBjYWNoZSB0aGVtLgorICAgIFZlY3RvcjxT
dHJpbmc+IHR5cGVzOworICAgIGlmICghZ3B1UHJvY2Vzc0Nvbm5lY3Rpb24oKS5zZW5kU3luYyhN
ZXNzYWdlczo6UmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHk6OkdldFN1cHBvcnRlZFR5cGVz
KHJlbW90ZUVuZ2luZUlkZW50aWZpZXIpLCBNZXNzYWdlczo6UmVtb3RlTWVkaWFQbGF5ZXJNYW5h
Z2VyUHJveHk6OkdldFN1cHBvcnRlZFR5cGVzOjpSZXBseSh0eXBlcyksIDApKQorICAgICAgICBy
ZXR1cm47CisKKyAgICByZXN1bHQgPSBIYXNoU2V0PFN0cmluZywgQVNDSUlDYXNlSW5zZW5zaXRp
dmVIYXNoPigpOworICAgIGZvciAoYXV0byYgdHlwZSA6IHR5cGVzKQorICAgICAgICByZXN1bHQu
YWRkKHR5cGUpOworfQorCitNZWRpYVBsYXllcjo6U3VwcG9ydHNUeXBlIFJlbW90ZU1lZGlhUGxh
eWVyTWFuYWdlcjo6c3VwcG9ydHNUeXBlQW5kQ29kZWNzKE1lZGlhUGxheWVyRW51bXM6Ok1lZGlh
RW5naW5lSWRlbnRpZmllciByZW1vdGVFbmdpbmVJZGVudGlmaWVyLCBjb25zdCBXZWJDb3JlOjpN
ZWRpYUVuZ2luZVN1cHBvcnRQYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzKQoreworICAgIC8vIEZJWE1F
OiBzdXBwb3J0ZWQgdHlwZXMgZG9uJ3QgY2hhbmdlLCBjYWNoZSB0aGVtLgorCisgICAgTWVkaWFQ
bGF5ZXI6OlN1cHBvcnRzVHlwZSByZXN1bHQ7CisgICAgaWYgKCFncHVQcm9jZXNzQ29ubmVjdGlv
bigpLnNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eTo6U3Vw
cG9ydHNUeXBlKHJlbW90ZUVuZ2luZUlkZW50aWZpZXIsIHBhcmFtZXRlcnMpLCBNZXNzYWdlczo6
UmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHk6OlN1cHBvcnRzVHlwZTo6UmVwbHkocmVzdWx0
KSwgMCkpCisgICAgICAgIHJldHVybiBNZWRpYVBsYXllcjo6U3VwcG9ydHNUeXBlOjpJc05vdFN1
cHBvcnRlZDsKKworICAgIHJldHVybiByZXN1bHQ7Cit9CisKKworYm9vbCBSZW1vdGVNZWRpYVBs
YXllck1hbmFnZXI6OnN1cHBvcnRzS2V5U3lzdGVtKE1lZGlhUGxheWVyRW51bXM6Ok1lZGlhRW5n
aW5lSWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBrZXlTeXN0ZW0sIGNvbnN0IFN0cmluZyYgbWlt
ZVR5cGUpCit7CisgICAgcmV0dXJuIGZhbHNlOworfQorCisKK0hhc2hTZXQ8UmVmUHRyPFdlYkNv
cmU6OlNlY3VyaXR5T3JpZ2luPj4gUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyOjpvcmlnaW5zSW5N
ZWRpYUNhY2hlKE1lZGlhUGxheWVyRW51bXM6Ok1lZGlhRW5naW5lSWRlbnRpZmllciByZW1vdGVF
bmdpbmVJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIHBhdGgpCit7CisgICAgVmVjdG9yPFdlYkNv
cmU6OlNlY3VyaXR5T3JpZ2luRGF0YT4gb3JpZ2luRGF0YTsKKyAgICBpZiAoIWdwdVByb2Nlc3ND
b25uZWN0aW9uKCkuc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZU1lZGlhUGxheWVyTWFuYWdlclBy
b3h5OjpPcmlnaW5zSW5NZWRpYUNhY2hlKHJlbW90ZUVuZ2luZUlkZW50aWZpZXIsIHBhdGgpLCBN
ZXNzYWdlczo6UmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHk6Ok9yaWdpbnNJbk1lZGlhQ2Fj
aGU6OlJlcGx5KG9yaWdpbkRhdGEpLCAwKSkKKyAgICAgICAgcmV0dXJuIHsgfTsKKworICAgIEhh
c2hTZXQ8UmVmUHRyPFNlY3VyaXR5T3JpZ2luPj4gb3JpZ2luczsKKyAgICBmb3IgKGF1dG8mIGRh
dGEgOiBvcmlnaW5EYXRhKQorICAgICAgICBvcmlnaW5zLmFkZChkYXRhLnNlY3VyaXR5T3JpZ2lu
KCkpOworCisgICAgcmV0dXJuIG9yaWdpbnM7Cit9CisKK3ZvaWQgUmVtb3RlTWVkaWFQbGF5ZXJN
YW5hZ2VyOjpjbGVhck1lZGlhQ2FjaGUoTWVkaWFQbGF5ZXJFbnVtczo6TWVkaWFFbmdpbmVJZGVu
dGlmaWVyIHJlbW90ZUVuZ2luZUlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgcGF0aCwgV2FsbFRp
bWUgbW9kaWZpZWRTaW5jZSkKK3sKKyAgICBncHVQcm9jZXNzQ29ubmVjdGlvbigpLnNlbmQoTWVz
c2FnZXM6OlJlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5OjpDbGVhck1lZGlhQ2FjaGUocmVt
b3RlRW5naW5lSWRlbnRpZmllciwgcGF0aCwgbW9kaWZpZWRTaW5jZSksIDApOworfQorCit2b2lk
IFJlbW90ZU1lZGlhUGxheWVyTWFuYWdlcjo6Y2xlYXJNZWRpYUNhY2hlRm9yT3JpZ2lucyhNZWRp
YVBsYXllckVudW1zOjpNZWRpYUVuZ2luZUlkZW50aWZpZXIgcmVtb3RlRW5naW5lSWRlbnRpZmll
ciwgY29uc3QgU3RyaW5nJiBwYXRoLCBjb25zdCBIYXNoU2V0PFJlZlB0cjxXZWJDb3JlOjpTZWN1
cml0eU9yaWdpbj4+JiBvcmlnaW5zKQoreworICAgIFZlY3RvcjxXZWJDb3JlOjpTZWN1cml0eU9y
aWdpbkRhdGE+IG9yaWdpbkRhdGE7CisgICAgZm9yIChhdXRvJiBvcmlnaW4gOiBvcmlnaW5zKQor
ICAgICAgICBvcmlnaW5EYXRhLmFwcGVuZChvcmlnaW4tPmRhdGEoKSk7CisKKyAgICBncHVQcm9j
ZXNzQ29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6OlJlbW90ZU1lZGlhUGxheWVyTWFuYWdlclBy
b3h5OjpDbGVhck1lZGlhQ2FjaGVGb3JPcmlnaW5zKHJlbW90ZUVuZ2luZUlkZW50aWZpZXIsIHBh
dGgsIG9yaWdpbkRhdGEpLCAwKTsKK30KKwordm9pZCBSZW1vdGVNZWRpYVBsYXllck1hbmFnZXI6
Om5ldHdvcmtTdGF0ZUNoYW5nZWQoTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlSWRlbnRpZmllcikK
K3sKK30KKwordm9pZCBSZW1vdGVNZWRpYVBsYXllck1hbmFnZXI6OnVwZGF0ZVByZWZlcmVuY2Vz
KGNvbnN0IFNldHRpbmdzJiBzZXR0aW5ncykKK3sKKyAgICBhdXRvIHJlZ2lzdGVyRW5naW5lID0g
W3RoaXNdKE1lZGlhRW5naW5lUmVnaXN0cmFyIHJlZ2lzdHJhciwgTWVkaWFQbGF5ZXJFbnVtczo6
TWVkaWFFbmdpbmVJZGVudGlmaWVyIHJlbW90ZUVuZ2luZUlkZW50aWZpZXIpIHsKKyAgICAgICAg
cmVnaXN0cmFyKG1ha2VVbmlxdWU8TWVkaWFQbGF5ZXJSZW1vdGVGYWN0b3J5PihyZW1vdGVFbmdp
bmVJZGVudGlmaWVyLCAqdGhpcykpOworICAgIH07CisKKyAgICBSZW1vdGVNZWRpYVBsYXllclN1
cHBvcnQ6OnNldFJlZ2lzdGVyUmVtb3RlUGxheWVyQ2FsbGJhY2soc2V0dGluZ3MudXNlR1BVUHJv
Y2Vzc0Zvck1lZGlhKCkgPyByZWdpc3RlckVuZ2luZSA6IHN0ZDo6ZnVuY3Rpb248dm9pZChNZWRp
YUVuZ2luZVJlZ2lzdHJhciwgTWVkaWFQbGF5ZXJFbnVtczo6TWVkaWFFbmdpbmVJZGVudGlmaWVy
KT4geyB9KTsKK30KKworSVBDOjpDb25uZWN0aW9uJiBSZW1vdGVNZWRpYVBsYXllck1hbmFnZXI6
OmdwdVByb2Nlc3NDb25uZWN0aW9uKCkgY29uc3QKK3sKKyAgICByZXR1cm4gV2ViUHJvY2Vzczo6
c2luZ2xldG9uKCkuZW5zdXJlR1BVUHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9uKCk7Cit9
CisKK30KKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BV
L21lZGlhL1JlbW90ZU1lZGlhUGxheWVyTWFuYWdlci5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL0dQVS9tZWRpYS9SZW1vdGVNZWRpYVBsYXllck1hbmFnZXIuaApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iZTVi
ZmY3YWE5M2UyNWYzNWI0OGFhNDZhZTFmODI4MTIxM2NmMmMxCi0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVNZWRpYVBsYXllck1hbmFn
ZXIuaApAQCAtMCwwICsxLDg2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisg
KiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICog
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBF
TkFCTEUoR1BVX1BST0NFU1MpCisKKyNpbmNsdWRlICJNZWRpYVBsYXllclByaXZhdGVSZW1vdGVJ
ZGVudGlmaWVyLmgiCisjaW5jbHVkZSAiTWVzc2FnZVJlY2VpdmVyLmgiCisjaW5jbHVkZSAiU2hh
cmVkTWVtb3J5LmgiCisjaW5jbHVkZSAiV2ViUHJvY2Vzc1N1cHBsZW1lbnQuaCIKKyNpbmNsdWRl
IDxXZWJDb3JlL01lZGlhUGxheWVyLmg+CisjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KKworbmFt
ZXNwYWNlIFdlYkNvcmUgeworY2xhc3MgTWVkaWFQbGF5ZXI7CitjbGFzcyBNZWRpYVBsYXllclBy
aXZhdGVJbnRlcmZhY2U7CitjbGFzcyBTZXR0aW5nczsKK30KKworbmFtZXNwYWNlIFdlYktpdCB7
CisKK2NsYXNzIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTsKK2NsYXNzIFdlYlByb2Nlc3M7CisK
K2NsYXNzIFJlbW90ZU1lZGlhUGxheWVyTWFuYWdlciA6IHB1YmxpYyBXZWJQcm9jZXNzU3VwcGxl
bWVudCwgcHVibGljIElQQzo6TWVzc2FnZVJlY2VpdmVyIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FM
TE9DQVRFRDsKK3B1YmxpYzoKKyAgICBleHBsaWNpdCBSZW1vdGVNZWRpYVBsYXllck1hbmFnZXIo
V2ViUHJvY2VzcyYpOworICAgIH5SZW1vdGVNZWRpYVBsYXllck1hbmFnZXIoKTsKKworICAgIHN0
YXRpYyBjb25zdCBjaGFyKiBzdXBwbGVtZW50TmFtZSgpOworCisgICAgdm9pZCB1cGRhdGVQcmVm
ZXJlbmNlcyhjb25zdCBXZWJDb3JlOjpTZXR0aW5ncyYpOworCisgICAgSVBDOjpDb25uZWN0aW9u
JiBncHVQcm9jZXNzQ29ubmVjdGlvbigpIGNvbnN0OworCitwcml2YXRlOgorICAgIHN0ZDo6dW5p
cXVlX3B0cjxXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVJbnRlcmZhY2U+IGNyZWF0ZVJlbW90
ZU1lZGlhUGxheWVyKFdlYkNvcmU6Ok1lZGlhUGxheWVyKiwgV2ViQ29yZTo6TWVkaWFQbGF5ZXJF
bnVtczo6TWVkaWFFbmdpbmVJZGVudGlmaWVyKTsKKworICAgIC8vIFdlYlByb2Nlc3NTdXBwbGVt
ZW50CisgICAgdm9pZCBpbml0aWFsaXplKGNvbnN0IFdlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRl
cnMmKSBmaW5hbDsKKworICAgIC8vIElQQzo6TWVzc2FnZVJlY2VpdmVyCisgICAgdm9pZCBkaWRS
ZWNlaXZlTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImKSBmaW5hbDsKKwor
ICAgIC8vIE1lc3NhZ2VzOjpSZW1vdGVNZWRpYVBsYXllck1hbmFnZXIKKyAgICB2b2lkIG5ldHdv
cmtTdGF0ZUNoYW5nZWQoTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlSWRlbnRpZmllcik7CisKKyAg
ICBmcmllbmQgY2xhc3MgTWVkaWFQbGF5ZXJSZW1vdGVGYWN0b3J5OworICAgIHZvaWQgZ2V0U3Vw
cG9ydGVkVHlwZXMoV2ViQ29yZTo6TWVkaWFQbGF5ZXJFbnVtczo6TWVkaWFFbmdpbmVJZGVudGlm
aWVyLCBIYXNoU2V0PFN0cmluZywgQVNDSUlDYXNlSW5zZW5zaXRpdmVIYXNoPiYpOworICAgIFdl
YkNvcmU6Ok1lZGlhUGxheWVyOjpTdXBwb3J0c1R5cGUgc3VwcG9ydHNUeXBlQW5kQ29kZWNzKFdl
YkNvcmU6Ok1lZGlhUGxheWVyRW51bXM6Ok1lZGlhRW5naW5lSWRlbnRpZmllciwgY29uc3QgV2Vi
Q29yZTo6TWVkaWFFbmdpbmVTdXBwb3J0UGFyYW1ldGVycyYpOworICAgIGJvb2wgc3VwcG9ydHNL
ZXlTeXN0ZW0oV2ViQ29yZTo6TWVkaWFQbGF5ZXJFbnVtczo6TWVkaWFFbmdpbmVJZGVudGlmaWVy
LCBjb25zdCBTdHJpbmcmIGtleVN5c3RlbSwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSk7CisgICAg
SGFzaFNldDxSZWZQdHI8V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4+PiBvcmlnaW5zSW5NZWRpYUNh
Y2hlKFdlYkNvcmU6Ok1lZGlhUGxheWVyRW51bXM6Ok1lZGlhRW5naW5lSWRlbnRpZmllciwgY29u
c3QgU3RyaW5nJik7CisgICAgdm9pZCBjbGVhck1lZGlhQ2FjaGUoV2ViQ29yZTo6TWVkaWFQbGF5
ZXJFbnVtczo6TWVkaWFFbmdpbmVJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmLCBXYWxsVGltZSBt
b2RpZmllZFNpbmNlKTsKKyAgICB2b2lkIGNsZWFyTWVkaWFDYWNoZUZvck9yaWdpbnMoV2ViQ29y
ZTo6TWVkaWFQbGF5ZXJFbnVtczo6TWVkaWFFbmdpbmVJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcm
LCBjb25zdCBIYXNoU2V0PFJlZlB0cjxXZWJDb3JlOjpTZWN1cml0eU9yaWdpbj4+Jik7CisKKyAg
ICBIYXNoTWFwPE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZUlkZW50aWZpZXIsIFdlYWtQdHI8TWVk
aWFQbGF5ZXJQcml2YXRlUmVtb3RlPj4gbV9wbGF5ZXJzOworICAgIFdlYlByb2Nlc3MmIG1fcHJv
Y2VzczsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJNYW5h
Z2VyLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1v
dGVNZWRpYVBsYXllck1hbmFnZXIubWVzc2FnZXMuaW4KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYTkzMzU3YzJiYTg1
ZmYxZGRlY2NhMDdjMzAzOTFmOGUyMDI5MjEyZgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyLm1lc3Nh
Z2VzLmluCkBAIC0wLDAgKzEsMzIgQEAKKyMgQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworIyBhcmUg
bWV0OgorIyAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorIyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisjIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyMgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworIyBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyMgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgorIyBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyMgQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorIyBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRgorIyBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyMgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyMgQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkKKyMgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorIyBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisKKyNpZiBFTkFCTEUoVklERU8pCisKK21lc3NhZ2VzIC0+IFJlbW90ZU1lZGlhUGxheWVy
TWFuYWdlciBOb3RSZWZDb3VudGVkIHsKKworICAgIE5ldHdvcmtTdGF0ZUNoYW5nZWQoV2ViS2l0
OjpNZWRpYVBsYXllclByaXZhdGVSZW1vdGVJZGVudGlmaWVyIGlkKQorCit9CisKKyNlbmRpZgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvVmlld1VwZGF0ZURp
c3BhdGNoZXIuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvVmlld1VwZGF0
ZURpc3BhdGNoZXIuY3BwCmluZGV4IDVjZjQ0NDA3ZTNmYjNmNjdhMDM0NzAwM2QwNDc4ZDc0MTk5
MzI0M2YuLjFmYmNjNzk2ZmZiNjU5NWE0ZjM1YjUyOTBhOWMzYjlhNGRmMTg2NmYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1ZpZXdVcGRhdGVEaXNwYXRjaGVy
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9WaWV3VXBkYXRlRGlz
cGF0Y2hlci5jcHAKQEAgLTMxLDYgKzMxLDcgQEAKICNpbmNsdWRlICJWaWV3VXBkYXRlRGlzcGF0
Y2hlck1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiV2ViUGFnZS5oIgogI2luY2x1ZGUgIldlYlByb2Nl
c3MuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL1BhZ2VJZGVudGlmaWVyLmg+CiAjaW5jbHVkZSA8d3Rm
L1J1bkxvb3AuaD4KIAogbmFtZXNwYWNlIFdlYktpdCB7CkBAIC03NSw3ICs3Niw3IEBAIHZvaWQg
Vmlld1VwZGF0ZURpc3BhdGNoZXI6OnZpc2libGVDb250ZW50UmVjdFVwZGF0ZShXZWJDb3JlOjpQ
YWdlSWRlbnRpZmllciBwYWdlCiAKIHZvaWQgVmlld1VwZGF0ZURpc3BhdGNoZXI6OmRpc3BhdGNo
VmlzaWJsZUNvbnRlbnRSZWN0VXBkYXRlKCkKIHsKLSAgICBIYXNoTWFwPFBhZ2VJZGVudGlmaWVy
LCBVcGRhdGVEYXRhPiB1cGRhdGU7CisgICAgSGFzaE1hcDxXZWJDb3JlOjpQYWdlSWRlbnRpZmll
ciwgVXBkYXRlRGF0YT4gdXBkYXRlOwogICAgIHsKICAgICAgICAgTG9ja0hvbGRlciBsb2NrZXIo
Jm1fZGF0YU11dGV4KTsKICAgICAgICAgdXBkYXRlID0gV1RGTW92ZShtX2xhdGVzdFVwZGF0ZSk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNw
cCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCmluZGV4IDcz
NWZlYTRlZTEzYmU0MjVjMjM0YmU5MjEyMGZlOWU3YmNhMmQ1YzcuLmI5NjlkOWJhZTZiMWRhY2Uz
N2M3Yzc5NmIyYTIwMmFkNjc1Mzg3ODQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJQYWdlL1dlYlBhZ2UuY3BwCkBAIC0zMTIsNiArMzEyLDEwIEBACiAjaW5jbHVkZSAiV2ViRGV2
aWNlT3JpZW50YXRpb25VcGRhdGVQcm92aWRlci5oIgogI2VuZGlmCiAKKyNpZiBFTkFCTEUoR1BV
X1BST0NFU1MpCisjaW5jbHVkZSAiUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyLmgiCisjZW5kaWYK
KwogbmFtZXNwYWNlIFdlYktpdCB7CiB1c2luZyBuYW1lc3BhY2UgSlNDOwogdXNpbmcgbmFtZXNw
YWNlIFdlYkNvcmU7CkBAIC0zNjA2LDYgKzM2MTAsMTAgQEAgdm9pZCBXZWJQYWdlOjp1cGRhdGVQ
cmVmZXJlbmNlcyhjb25zdCBXZWJQcmVmZXJlbmNlc1N0b3JlJiBzdG9yZSkKIAogICAgIGlmICht
X2RyYXdpbmdBcmVhKQogICAgICAgICBtX2RyYXdpbmdBcmVhLT51cGRhdGVQcmVmZXJlbmNlcyhz
dG9yZSk7CisKKyNpZiBFTkFCTEUoR1BVX1BST0NFU1MpCisgICAgV2ViUHJvY2Vzczo6c2luZ2xl
dG9uKCkuc3VwcGxlbWVudDxSZW1vdGVNZWRpYVBsYXllck1hbmFnZXI+KCktPnVwZGF0ZVByZWZl
cmVuY2VzKHNldHRpbmdzKTsKKyNlbmRpZgogfQogCiAjaWYgRU5BQkxFKERBVEFfREVURUNUSU9O
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCmluZGV4IDA2YjA4ZDc4YmY1
ODczNWU4MTc4MGZhMDQxYzBhODc0MWVmMDBlZjkuLjE1MTMyNzFhYzNmOTc1MTU2Zjk5NDJkYWZk
ZjBjYzBhOGNkN2UzZDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQ
cm9jZXNzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAK
QEAgLTE2NCw2ICsxNjQsMTAgQEAKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9SZW1vdGVJbnNw
ZWN0b3IuaD4KICNlbmRpZgogCisjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKQorI2luY2x1ZGUgIlJl
bW90ZU1lZGlhUGxheWVyTWFuYWdlci5oIgorI2VuZGlmCisKIC8vIFRoaXMgc2hvdWxkIGJlIGxl
c3MgdGhhbiBwbHVnSW5BdXRvU3RhcnRFeHBpcmF0aW9uVGltZVRocmVzaG9sZCBpbiBQbHVnSW5B
dXRvU3RhcnRQcm92aWRlci4KIHN0YXRpYyBjb25zdCBTZWNvbmRzIHBsdWdJbkF1dG9TdGFydEV4
cGlyYXRpb25UaW1lVXBkYXRlVGhyZXNob2xkIHsgMjkgKiAyNCAqIDYwICogNjAgfTsKIApAQCAt
MjIxLDcgKzIyNSwxMSBAQCBXZWJQcm9jZXNzOjpXZWJQcm9jZXNzKCkKICNpZiBQTEFURk9STShD
T0NPQSkgJiYgRU5BQkxFKE1FRElBX1NUUkVBTSkKICAgICBhZGRTdXBwbGVtZW50PFVzZXJNZWRp
YUNhcHR1cmVNYW5hZ2VyPigpOwogI2VuZGlmCi0gICAgCisKKyNpZiBFTkFCTEUoR1BVX1BST0NF
U1MpCisgICAgYWRkU3VwcGxlbWVudDxSZW1vdGVNZWRpYVBsYXllck1hbmFnZXI+KCk7CisjZW5k
aWYKKwogICAgIEdpZ2FjYWdlOjpmb3JiaWREaXNhYmxpbmdQcmltaXRpdmVHaWdhY2FnZSgpOwog
fQogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>385502</attachid>
            <date>2019-12-12 09:32:54 -0800</date>
            <delta_ts>2019-12-12 10:19:11 -0800</delta_ts>
            <desc>WIP patch</desc>
            <filename>bug-205094-20191212093254.patch</filename>
            <type>text/plain</type>
            <size>154603</size>
            <attacher name="Eric Carlson">eric.carlson</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjUzMzk3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZTk0ZmQ0ZWMxNDg4MjAx
YTM0ZjM1Nzk2MWUwOTg5OWZmNzIyYmNmNS4uNGEyNzIyNWMwNjkyM2ZiMWMxZjBiZDkwZmI0ZDkw
OWU1YzdlNWRkMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEwNyBAQAorMjAxOS0xMi0xMCAgRXJp
YyBDYXJsc29uICA8ZXJpYy5jYXJsc29uQGFwcGxlLmNvbT4KKworICAgICAgICBBZGQgaW5mcmFz
dHJ1Y3R1cmUgbmVlZGVkIGZvciBwbGF5aW5nIG1lZGlhIHBsYXllciBpbiB0aGUgR1BVIHByb2Nl
c3MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwNTA5
NAorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNTc4MTUzOTM+CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLCBubyBmdW5jdGlvbmFs
IGNoYW5nZSB5ZXQuCisKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2o6CisgICAgICAgICogcGxhdGZvcm0vQ29udGVudFR5cGUuaDoKKyAgICAgICAgKFdlYkNvcmU6
OkNvbnRlbnRUeXBlOjplbmNvZGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudFR5
cGU6OmRlY29kZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6bnVsbExvZ2dlcik6CisgICAgICAgIChXZWJDb3JlOjpudWxs
Q29udGVudFR5cGVWZWN0b3IpOgorICAgICAgICAoV2ViQ29yZTo6bXV0YWJsZUluc3RhbGxlZE1l
ZGlhRW5naW5lc1ZlY3Rvcik6CisgICAgICAgIChXZWJDb3JlOjpyZWdpc3RlclJlbW90ZVBsYXll
ckNhbGxiYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbW90ZU1lZGlhUGxheWVyU3VwcG9ydDo6
c2V0UmVnaXN0ZXJSZW1vdGVQbGF5ZXJDYWxsYmFjayk6CisgICAgICAgIChXZWJDb3JlOjpidWls
ZE1lZGlhRW5naW5lc1ZlY3Rvcik6CisgICAgICAgIChXZWJDb3JlOjppbnN0YWxsZWRNZWRpYUVu
Z2luZXMpOgorICAgICAgICAoV2ViQ29yZTo6YWRkTWVkaWFFbmdpbmUpOgorICAgICAgICAoV2Vi
Q29yZTo6TWVkaWFQbGF5ZXI6Om1lZGlhRW5naW5lKToKKyAgICAgICAgKFdlYkNvcmU6OmJlc3RN
ZWRpYUVuZ2luZUZvclN1cHBvcnRQYXJhbWV0ZXJzKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlh
UGxheWVyOjpuZXh0TWVkaWFFbmdpbmUpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXI6
OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllcjo6TWVkaWFQbGF5ZXIpOgor
ICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXI6Om5leHRCZXN0TWVkaWFFbmdpbmUpOgorICAg
ICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXI6OmxvYWRXaXRoTmV4dE1lZGlhRW5naW5lKToKKyAg
ICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyOjpnZXRTdXBwb3J0ZWRUeXBlcyk6CisgICAgICAg
IChXZWJDb3JlOjpNZWRpYVBsYXllcjo6b3JpZ2luc0luTWVkaWFDYWNoZSk6CisgICAgICAgIChX
ZWJDb3JlOjpNZWRpYVBsYXllcjo6Y2xlYXJNZWRpYUNhY2hlKToKKyAgICAgICAgKFdlYkNvcmU6
Ok1lZGlhUGxheWVyOjpjbGVhck1lZGlhQ2FjaGVGb3JPcmlnaW5zKToKKyAgICAgICAgKFdlYkNv
cmU6Ok1lZGlhUGxheWVyOjpzdXBwb3J0c0tleVN5c3RlbSk6CisgICAgICAgIChXZWJDb3JlOjpN
ZWRpYVBsYXllcjo6bmV0d29ya1N0YXRlQ2hhbmdlZCk6CisgICAgICAgIChXZWJDb3JlOjpuZXh0
TWVkaWFFbmdpbmUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXI6Om5l
eHRCZXN0TWVkaWFFbmdpbmUgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL01lZGlhUGxheWVyLmg6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYUVuZ2luZVN1cHBv
cnRQYXJhbWV0ZXJzOjplbmNvZGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFFbmdp
bmVTdXBwb3J0UGFyYW1ldGVyczo6ZGVjb2RlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxh
eWVyRmFjdG9yeTo6fk1lZGlhUGxheWVyRmFjdG9yeSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRp
YVBsYXllckZhY3Rvcnk6Om9yaWdpbnNJbk1lZGlhQ2FjaGUgY29uc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6TWVkaWFQbGF5ZXJGYWN0b3J5OjpjbGVhck1lZGlhQ2FjaGUgY29uc3QpOgorICAgICAg
ICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJGYWN0b3J5OjpjbGVhck1lZGlhQ2FjaGVGb3JPcmlnaW5z
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyRmFjdG9yeTo6c3VwcG9ydHNL
ZXlTeXN0ZW0gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXI6OnNldFZpZGVv
RnVsbHNjcmVlbkxheWVyKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVy
OjpzaXplIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyOjpp
bnZhbGlkVGltZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllcjo6cGxh
dGZvcm1Wb2x1bWVDb25maWd1cmF0aW9uUmVxdWlyZWQgY29uc3QpOiBEZWxldGVkLgorICAgICAg
ICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXI6OmNvbnRlbnRNSU1FVHlwZSBjb25zdCk6IERlbGV0ZWQu
CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllcjo6Y29udGVudFR5cGVDb2RlY3MgY29uc3Qp
OiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXI6OmNvbnRlbnRNSU1FVHlw
ZVdhc0luZmVycmVkRnJvbUV4dGVuc2lvbiBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJD
b3JlOjpNZWRpYVBsYXllcjo6bWVkaWFQbGF5ZXJMb2dJZGVudGlmaWVyKTogRGVsZXRlZC4KKyAg
ICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyOjpyZW5kZXJpbmdDYW5CZUFjY2VsZXJhdGVkIGNv
bnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyOjpyZW5kZXJpbmdN
b2RlQ2hhbmdlZCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXll
cjo6YWNjZWxlcmF0ZWRDb21wb3NpdGluZ0VuYWJsZWQpOiBEZWxldGVkLgorICAgICAgICAoV2Vi
Q29yZTo6TWVkaWFQbGF5ZXI6OmFjdGl2ZVNvdXJjZUJ1ZmZlcnNDaGFuZ2VkKTogRGVsZXRlZC4K
KyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyOjpwbGF5ZXJDb250ZW50Qm94UmVjdCBjb25z
dCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllcjo6cGxheWVyQ29udGVu
dHNTY2FsZSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllcjo6
c2hvdWxkVXNlUGVyc2lzdGVudENhY2hlIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNv
cmU6Ok1lZGlhUGxheWVyOjptZWRpYUNhY2hlRGlyZWN0b3J5IGNvbnN0KTogRGVsZXRlZC4KKyAg
ICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyOjppc1ZpZGVvUGxheWVyIGNvbnN0KTogRGVsZXRl
ZC4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyOjptZWRpYUVuZ2luZVVwZGF0ZWQpOiBE
ZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXI6OmlzTG9vcGluZyBjb25zdCk6
IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllcjo6cmVxdWVzdEluc3RhbGxN
aXNzaW5nUGx1Z2lucyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllcjo6
Y2xpZW50IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9NZWRp
YVBsYXllckVuZ2luZUlkZW50aWZpZXJzLmg6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL0NvbnRlbnRUeXBlLmguCisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllckVuZ2lu
ZUlkZW50aWZpZXJzOjphdkZvdW5kYXRpb25FbmdpbmVJZGVudGlmaWVyKToKKyAgICAgICAgKFdl
YkNvcmU6Ok1lZGlhUGxheWVyRW5naW5lSWRlbnRpZmllcnM6OmF2Rm91bmRhdGlvbk1TRUVuZ2lu
ZUlkZW50aWZpZXIpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJFbmdpbmVJZGVudGlm
aWVyczo6YXZGb3VuZGF0aW9uTWVkaWFTdHJlYW1FbmdpbmVJZGVudGlmaWVyKToKKyAgICAgICAg
KFdlYkNvcmU6Ok1lZGlhUGxheWVyRW5naW5lSWRlbnRpZmllcnM6OkdTdHJlYW1lck1lZGlhRW5n
aW5lSWRlbnRpZmllcik6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllckVuZ2luZUlkZW50
aWZpZXJzOjpHU3RyZWFtZXJNU0VNZWRpYUVuZ2luZUlkZW50aWZpZXIpOgorICAgICAgICAoV2Vi
Q29yZTo6TWVkaWFQbGF5ZXJFbmdpbmVJZGVudGlmaWVyczo6aG9sZVB1bmNoTWVkaWFFbmdpbmVJ
ZGVudGlmaWVyKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyRW5naW5lSWRlbnRpZmll
cnM6Ok1lZGlhRm91bmRhdGlvbk1lZGlhRW5naW5lSWRlbnRpZmllcik6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvUGxhdGZvcm1UaW1lUmFuZ2VzLmg6CisgICAgICAgIChXZWJDb3JlOjpQ
bGF0Zm9ybVRpbWVSYW5nZXM6OlBsYXRmb3JtVGltZVJhbmdlcyk6IERlbGV0ZWQuCisgICAgICAg
IChXZWJDb3JlOjpQbGF0Zm9ybVRpbWVSYW5nZXM6Omxlbmd0aCBjb25zdCk6IERlbGV0ZWQuCisg
ICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybVRpbWVSYW5nZXM6OlJhbmdlOjpSYW5nZSk6IERlbGV0
ZWQuCisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybVRpbWVSYW5nZXM6OlJhbmdlOjppc1BvaW50
SW5SYW5nZSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybVRpbWVS
YW5nZXM6OlJhbmdlOjppc092ZXJsYXBwaW5nUmFuZ2UgY29uc3QpOiBEZWxldGVkLgorICAgICAg
ICAoV2ViQ29yZTo6UGxhdGZvcm1UaW1lUmFuZ2VzOjpSYW5nZTo6aXNDb250aWd1b3VzV2l0aFJh
bmdlIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtVGltZVJhbmdl
czo6UmFuZ2U6OnVuaW9uV2l0aE92ZXJsYXBwaW5nT3JDb250aWd1b3VzUmFuZ2UgY29uc3QpOiBE
ZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1UaW1lUmFuZ2VzOjpSYW5nZTo6aXNC
ZWZvcmVSYW5nZSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
YXZmb3VuZGF0aW9uL2NmL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbkNGLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbkNGOjpyZWdpc3Rl
ck1lZGlhRW5naW5lKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24v
b2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLmg6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3Vu
ZGF0aW9uT2JqQy5tbToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUFWRm91
bmRhdGlvbk9iakM6OnJlZ2lzdGVyTWVkaWFFbmdpbmUpOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZG
T2JqQy5tbToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNl
QVZGT2JqQzo6cmVnaXN0ZXJNZWRpYUVuZ2luZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpD
Lm1tOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZP
YmpDOjpyZWdpc3Rlck1lZGlhRW5naW5lKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9n
c3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6cmVnaXN0ZXJNZWRpYUVuZ2luZSk6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL21zZS9NZWRpYVBsYXllclByaXZh
dGVHU3RyZWFtZXJNU0UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRl
R1N0cmVhbWVyTVNFOjpyZWdpc3Rlck1lZGlhRW5naW5lKToKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9ob2xlcHVuY2gvTWVkaWFQbGF5ZXJQcml2YXRlSG9sZVB1bmNoLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUhvbGVQdW5jaDo6cmVnaXN0ZXJNZWRpYUVu
Z2luZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL01lZGlhUGxheWVyUHJpdmF0
ZU1lZGlhRm91bmRhdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZh
dGVNZWRpYUZvdW5kYXRpb246OnJlZ2lzdGVyTWVkaWFFbmdpbmUpOgorICAgICAgICAqIHBsYXRm
b3JtL21vY2svbWVkaWFzb3VyY2UvTW9ja01lZGlhUGxheWVyTWVkaWFTb3VyY2UuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6TW9ja01lZGlhUGxheWVyTWVkaWFTb3VyY2U6OnJlZ2lzdGVyTWVkaWFF
bmdpbmUpOgorCiAyMDE5LTEyLTExICBFcmljIENhcmxzb24gIDxlcmljLmNhcmxzb25AYXBwbGUu
Y29tPgogCiAgICAgICAgIEFkZCBlbmNvZGVycyBmb3IgTWVkaWFQbGF5ZXJFbnVtIGVudW1zCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdl
TG9nCmluZGV4IDc1M2ZkODg3YmFlMDM4MjVmM2ZlYmM0NjAxNTM5Yzg1ODQyNTQ0MjMuLjMyZWI1
NjI1NDUyYmU5NWIzMWI0MTlhMGFlMzk0N2M3NjNlNGYwZmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEs
MTg3IEBACisyMDE5LTEyLTEwICBFcmljIENhcmxzb24gIDxlcmljLmNhcmxzb25AYXBwbGUuY29t
PgorCisgICAgICAgIEFkZCBpbmZyYXN0cnVjdHVyZSBuZWVkZWQgZm9yIHBsYXlpbmcgbWVkaWEg
cGxheWVyIGluIHRoZSBHUFUgcHJvY2VzcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MjA1MDk0CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS81NzgxNTM5
Mz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIERl
cml2ZWRTb3VyY2VzLWlucHV0LnhjZmlsZWxpc3Q6CisgICAgICAgICogRGVyaXZlZFNvdXJjZXMt
b3V0cHV0LnhjZmlsZWxpc3Q6CisgICAgICAgICogRGVyaXZlZFNvdXJjZXMubWFrZToKKyAgICAg
ICAgKiBHUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwOgorICAgICAgICAo
V2ViS2l0OjpHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpHUFVDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzKToKKyAgICAgICAgKFdlYktpdDo6R1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6fkdQVUNv
bm5lY3Rpb25Ub1dlYlByb2Nlc3MpOgorICAgICAgICAoV2ViS2l0OjpHUFVDb25uZWN0aW9uVG9X
ZWJQcm9jZXNzOjpkaWRSZWNlaXZlTWVzc2FnZSk6CisgICAgICAgIChXZWJLaXQ6OkdQVUNvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3M6OmRpZFJlY2VpdmVTeW5jTWVzc2FnZSk6CisgICAgICAgICogR1BV
UHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmg6CisgICAgICAgICogR1BVUHJvY2Vz
cy9tZWRpYS9SZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eS5jcHA6IEFkZGVkLgorICAgICAg
ICAoV2ViS2l0OjpudWxsTG9nZ2VyKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTWVkaWFQbGF5
ZXJNYW5hZ2VyUHJveHk6OlBsYXllclByb3h5OjpQbGF5ZXJQcm94eSk6CisgICAgICAgIChXZWJL
aXQ6OlJlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5OjpQbGF5ZXJQcm94eTo6flBsYXllclBy
b3h5KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHk6OlJl
bW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTWVk
aWFQbGF5ZXJNYW5hZ2VyUHJveHk6On5SZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eSk6Cisg
ICAgICAgIChXZWJLaXQ6OlJlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5OjpjcmVhdGVNZWRp
YVBsYXllcik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5
OjpnZXRTdXBwb3J0ZWRUeXBlcyk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZU1lZGlhUGxheWVy
TWFuYWdlclByb3h5OjpzdXBwb3J0c1R5cGUpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVNZWRp
YVBsYXllck1hbmFnZXJQcm94eTo6b3JpZ2luc0luTWVkaWFDYWNoZSk6CisgICAgICAgIChXZWJL
aXQ6OlJlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5OjpjbGVhck1lZGlhQ2FjaGUpOgorICAg
ICAgICAoV2ViS2l0OjpSZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eTo6Y2xlYXJNZWRpYUNh
Y2hlRm9yT3JpZ2lucyk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZU1lZGlhUGxheWVyTWFuYWdl
clByb3h5OjpzdXBwb3J0c0tleVN5c3RlbSk6CisgICAgICAgICogR1BVUHJvY2Vzcy9tZWRpYS9S
ZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eS5oOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6
UmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHk6OndlYlByb2Nlc3NDb25uZWN0aW9uIGNvbnN0
KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHk6OmRpZFJl
Y2VpdmVNZXNzYWdlRnJvbVdlYlByb2Nlc3MpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVNZWRp
YVBsYXllck1hbmFnZXJQcm94eTo6ZGlkUmVjZWl2ZVN5bmNNZXNzYWdlRnJvbVdlYlByb2Nlc3Mp
OgorICAgICAgICAqIEdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJv
eHkubWVzc2FnZXMuaW46IEFkZGVkLgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0L21lc3NhZ2Vz
LnB5OgorICAgICAgICAqIFNvdXJjZXMudHh0OgorICAgICAgICAqIFNvdXJjZXNDb2NvYS50eHQ6
CisgICAgICAgICogV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICog
V2ViUHJvY2Vzcy9HUFUvbWVkaWEvTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlLmNwcDogQWRkZWQu
CisgICAgICAgIChXZWJLaXQ6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6TWVkaWFQbGF5ZXJQ
cml2YXRlUmVtb3RlKToKKyAgICAgICAgKFdlYktpdDo6TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3Rl
Ojp+TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlKToKKyAgICAgICAgKFdlYktpdDo6TWVkaWFQbGF5
ZXJQcml2YXRlUmVtb3RlOjpNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OmxvYWQpOgorICAgICAg
ICAoV2ViS2l0OjpNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OmxvYWQpOgorICAgICAgICAoV2Vi
S2l0OjpNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OmNhbmNlbExvYWQpOgorICAgICAgICAoV2Vi
S2l0OjpNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OnByZXBhcmVUb1BsYXkpOgorICAgICAgICAo
V2ViS2l0OjpNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OnBsYXRmb3JtTGF5ZXIgY29uc3QpOgor
ICAgICAgICAoV2ViS2l0OjpNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OnNldFZpZGVvRnVsbHNj
cmVlbkxheWVyKToKKyAgICAgICAgKFdlYktpdDo6TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjp1
cGRhdGVWaWRlb0Z1bGxzY3JlZW5JbmxpbmVJbWFnZSk6CisgICAgICAgIChXZWJLaXQ6Ok1lZGlh
UGxheWVyUHJpdmF0ZVJlbW90ZTo6c2V0VmlkZW9GdWxsc2NyZWVuRnJhbWUpOgorICAgICAgICAo
V2ViS2l0OjpNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OnNldFZpZGVvRnVsbHNjcmVlbkdyYXZp
dHkpOgorICAgICAgICAoV2ViS2l0OjpNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OnNldFZpZGVv
RnVsbHNjcmVlbk1vZGUpOgorICAgICAgICAoV2ViS2l0OjpNZWRpYVBsYXllclByaXZhdGVSZW1v
dGU6OnZpZGVvRnVsbHNjcmVlblN0YW5kYnlDaGFuZ2VkKToKKyAgICAgICAgKFdlYktpdDo6TWVk
aWFQbGF5ZXJQcml2YXRlUmVtb3RlOjphY2Nlc3NMb2cgY29uc3QpOgorICAgICAgICAoV2ViS2l0
OjpNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OmVycm9yTG9nIGNvbnN0KToKKyAgICAgICAgKFdl
YktpdDo6TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpwbGF0Zm9ybUVycm9yQ29kZSBjb25zdCk6
CisgICAgICAgIChXZWJLaXQ6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6cGxheSk6CisgICAg
ICAgIChXZWJLaXQ6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6cGF1c2UpOgorICAgICAgICAo
V2ViS2l0OjpNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OnNldEJ1ZmZlcmluZ1BvbGljeSk6Cisg
ICAgICAgIChXZWJLaXQ6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6c3VwcG9ydHNQaWN0dXJl
SW5QaWN0dXJlIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6TWVkaWFQbGF5ZXJQcml2YXRlUmVt
b3RlOjpzdXBwb3J0c0Z1bGxzY3JlZW4gY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpNZWRpYVBs
YXllclByaXZhdGVSZW1vdGU6OnN1cHBvcnRzU2Nhbm5pbmcgY29uc3QpOgorICAgICAgICAoV2Vi
S2l0OjpNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OnJlcXVpcmVzSW1tZWRpYXRlQ29tcG9zaXRp
bmcgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OmNh
blNhdmVNZWRpYURhdGEgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpNZWRpYVBsYXllclByaXZh
dGVSZW1vdGU6Om5hdHVyYWxTaXplIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6TWVkaWFQbGF5
ZXJQcml2YXRlUmVtb3RlOjpoYXNWaWRlbyBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6Ok1lZGlh
UGxheWVyUHJpdmF0ZVJlbW90ZTo6aGFzQXVkaW8gY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpN
ZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OnNldFZpc2libGUpOgorICAgICAgICAoV2ViS2l0OjpN
ZWRpYVBsYXllclByaXZhdGVSZW1vdGU6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6ZHVyYXRp
b25NZWRpYVRpbWUgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpNZWRpYVBsYXllclByaXZhdGVS
ZW1vdGU6OmN1cnJlbnRNZWRpYVRpbWUgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpNZWRpYVBs
YXllclByaXZhdGVSZW1vdGU6OmdldFN0YXJ0RGF0ZSBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6
Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6c2Vlayk6CisgICAgICAgIChXZWJLaXQ6Ok1lZGlh
UGxheWVyUHJpdmF0ZVJlbW90ZTo6c2Vla1dpdGhUb2xlcmFuY2UpOgorICAgICAgICAoV2ViS2l0
OjpNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OnNlZWtpbmcgY29uc3QpOgorICAgICAgICAoV2Vi
S2l0OjpNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OnN0YXJ0VGltZSBjb25zdCk6CisgICAgICAg
IChXZWJLaXQ6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6c2V0UmF0ZURvdWJsZSk6CisgICAg
ICAgIChXZWJLaXQ6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6cmF0ZSBjb25zdCk6CisgICAg
ICAgIChXZWJLaXQ6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6c2V0UHJlc2VydmVzUGl0Y2gp
OgorICAgICAgICAoV2ViS2l0OjpNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OnBhdXNlZCBjb25z
dCk6CisgICAgICAgIChXZWJLaXQ6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6c2V0Vm9sdW1l
RG91YmxlKToKKyAgICAgICAgKFdlYktpdDo6TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpzZXRN
dXRlZCk6CisgICAgICAgIChXZWJLaXQ6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6aGFzQ2xv
c2VkQ2FwdGlvbnMgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpNZWRpYVBsYXllclByaXZhdGVS
ZW1vdGU6OnNldENsb3NlZENhcHRpb25zVmlzaWJsZSk6CisgICAgICAgIChXZWJLaXQ6Ok1lZGlh
UGxheWVyUHJpdmF0ZVJlbW90ZTo6bWF4RmFzdEZvcndhcmRSYXRlIGNvbnN0KToKKyAgICAgICAg
KFdlYktpdDo6TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjptaW5GYXN0UmV2ZXJzZVJhdGUgY29u
c3QpOgorICAgICAgICAoV2ViS2l0OjpNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6Om5ldHdvcmtT
dGF0ZSBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6
cmVhZHlTdGF0ZSBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6Ok1lZGlhUGxheWVyUHJpdmF0ZVJl
bW90ZTo6c2Vla2FibGUgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpNZWRpYVBsYXllclByaXZh
dGVSZW1vdGU6OmJ1ZmZlcmVkIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6TWVkaWFQbGF5ZXJQ
cml2YXRlUmVtb3RlOjptYXhNZWRpYVRpbWVTZWVrYWJsZSBjb25zdCk6CisgICAgICAgIChXZWJL
aXQ6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6bWluTWVkaWFUaW1lU2Vla2FibGUgY29uc3Qp
OgorICAgICAgICAoV2ViS2l0OjpNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OnNlZWthYmxlVGlt
ZVJhbmdlc0xhc3RNb2RpZmllZFRpbWUgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpNZWRpYVBs
YXllclByaXZhdGVSZW1vdGU6OmxpdmVVcGRhdGVJbnRlcnZhbCBjb25zdCk6CisgICAgICAgIChX
ZWJLaXQ6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6dG90YWxCeXRlcyBjb25zdCk6CisgICAg
ICAgIChXZWJLaXQ6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6ZGlkTG9hZGluZ1Byb2dyZXNz
IGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpzZXRT
aXplKToKKyAgICAgICAgKFdlYktpdDo6TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpwYWludCk6
CisgICAgICAgIChXZWJLaXQ6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6cGFpbnRDdXJyZW50
RnJhbWVJbkNvbnRleHQpOgorICAgICAgICAoV2ViS2l0OjpNZWRpYVBsYXllclByaXZhdGVSZW1v
dGU6OmNvcHlWaWRlb1RleHR1cmVUb1BsYXRmb3JtVGV4dHVyZSk6CisgICAgICAgIChXZWJLaXQ6
Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6bmF0aXZlSW1hZ2VGb3JDdXJyZW50VGltZSk6Cisg
ICAgICAgIChXZWJLaXQ6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6c2V0UHJlbG9hZCk6Cisg
ICAgICAgIChXZWJLaXQ6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6aGFzQXZhaWxhYmxlVmlk
ZW9GcmFtZSBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90
ZTo6Y2FuTG9hZFBvc3RlciBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6Ok1lZGlhUGxheWVyUHJp
dmF0ZVJlbW90ZTo6c2V0UG9zdGVyKToKKyAgICAgICAgKFdlYktpdDo6TWVkaWFQbGF5ZXJQcml2
YXRlUmVtb3RlOjplbnRlckZ1bGxzY3JlZW4pOgorICAgICAgICAoV2ViS2l0OjpNZWRpYVBsYXll
clByaXZhdGVSZW1vdGU6OmV4aXRGdWxsc2NyZWVuKToKKyAgICAgICAgKFdlYktpdDo6TWVkaWFQ
bGF5ZXJQcml2YXRlUmVtb3RlOjp3aXJlbGVzc1BsYXliYWNrVGFyZ2V0TmFtZSBjb25zdCk6Cisg
ICAgICAgIChXZWJLaXQ6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6d2lyZWxlc3NQbGF5YmFj
a1RhcmdldFR5cGUgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpNZWRpYVBsYXllclByaXZhdGVS
ZW1vdGU6OndpcmVsZXNzVmlkZW9QbGF5YmFja0Rpc2FibGVkIGNvbnN0KToKKyAgICAgICAgKFdl
YktpdDo6TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpzZXRXaXJlbGVzc1ZpZGVvUGxheWJhY2tE
aXNhYmxlZCk6CisgICAgICAgIChXZWJLaXQ6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6Y2Fu
UGxheVRvV2lyZWxlc3NQbGF5YmFja1RhcmdldCBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6Ok1l
ZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6aXNDdXJyZW50UGxheWJhY2tUYXJnZXRXaXJlbGVzcyBj
b25zdCk6CisgICAgICAgIChXZWJLaXQ6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6c2V0V2ly
ZWxlc3NQbGF5YmFja1RhcmdldCk6CisgICAgICAgIChXZWJLaXQ6Ok1lZGlhUGxheWVyUHJpdmF0
ZVJlbW90ZTo6c2V0U2hvdWxkUGxheVRvUGxheWJhY2tUYXJnZXQpOgorICAgICAgICAoV2ViS2l0
OjpNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OmNhbkVudGVyRnVsbHNjcmVlbiBjb25zdCk6Cisg
ICAgICAgIChXZWJLaXQ6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6c3VwcG9ydHNBY2NlbGVy
YXRlZFJlbmRlcmluZyBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6Ok1lZGlhUGxheWVyUHJpdmF0
ZVJlbW90ZTo6YWNjZWxlcmF0ZWRSZW5kZXJpbmdTdGF0ZUNoYW5nZWQpOgorICAgICAgICAoV2Vi
S2l0OjpNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OnNob3VsZE1haW50YWluQXNwZWN0UmF0aW8g
Y29uc3QpOgorICAgICAgICAoV2ViS2l0OjpNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OnNldFNo
b3VsZE1haW50YWluQXNwZWN0UmF0aW8pOgorICAgICAgICAoV2ViS2l0OjpNZWRpYVBsYXllclBy
aXZhdGVSZW1vdGU6Omhhc1NpbmdsZVNlY3VyaXR5T3JpZ2luIGNvbnN0KToKKyAgICAgICAgKFdl
YktpdDo6TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpkaWRQYXNzQ09SU0FjY2Vzc0NoZWNrIGNv
bnN0KToKKyAgICAgICAgKFdlYktpdDo6TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjp3b3VsZFRh
aW50T3JpZ2luIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6TWVkaWFQbGF5ZXJQcml2YXRlUmVt
b3RlOjptb3ZpZUxvYWRUeXBlIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6TWVkaWFQbGF5ZXJQ
cml2YXRlUmVtb3RlOjpwcmVwYXJlRm9yUmVuZGVyaW5nKToKKyAgICAgICAgKFdlYktpdDo6TWVk
aWFQbGF5ZXJQcml2YXRlUmVtb3RlOjptZWRpYVRpbWVGb3JUaW1lVmFsdWUgY29uc3QpOgorICAg
ICAgICAoV2ViS2l0OjpNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6Om1heGltdW1EdXJhdGlvblRv
Q2FjaGVNZWRpYVRpbWUgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpNZWRpYVBsYXllclByaXZh
dGVSZW1vdGU6OmRlY29kZWRGcmFtZUNvdW50IGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6TWVk
aWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpkcm9wcGVkRnJhbWVDb3VudCBjb25zdCk6CisgICAgICAg
IChXZWJLaXQ6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6YXVkaW9EZWNvZGVkQnl0ZUNvdW50
IGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjp2aWRl
b0RlY29kZWRCeXRlQ291bnQgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpNZWRpYVBsYXllclBy
aXZhdGVSZW1vdGU6OnNldFByaXZhdGVCcm93c2luZ01vZGUpOgorICAgICAgICAoV2ViS2l0OjpN
ZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OmVuZ2luZURlc2NyaXB0aW9uIGNvbnN0KToKKyAgICAg
ICAgKFdlYktpdDo6TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjphdWRpb1NvdXJjZVByb3ZpZGVy
KToKKyAgICAgICAgKFdlYktpdDo6TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpjcmVhdGVTZXNz
aW9uKToKKyAgICAgICAgKFdlYktpdDo6TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpzZXRDRE1T
ZXNzaW9uKToKKyAgICAgICAgKFdlYktpdDo6TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjprZXlB
ZGRlZCk6CisgICAgICAgIChXZWJLaXQ6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6Y2RtSW5z
dGFuY2VBdHRhY2hlZCk6CisgICAgICAgIChXZWJLaXQ6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90
ZTo6Y2RtSW5zdGFuY2VEZXRhY2hlZCk6CisgICAgICAgIChXZWJLaXQ6Ok1lZGlhUGxheWVyUHJp
dmF0ZVJlbW90ZTo6YXR0ZW1wdFRvRGVjcnlwdFdpdGhJbnN0YW5jZSk6CisgICAgICAgIChXZWJL
aXQ6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6d2FpdGluZ0ZvcktleSBjb25zdCk6CisgICAg
ICAgIChXZWJLaXQ6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6cmVxdWlyZXNUZXh0VHJhY2tS
ZXByZXNlbnRhdGlvbiBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6Ok1lZGlhUGxheWVyUHJpdmF0
ZVJlbW90ZTo6c2V0VGV4dFRyYWNrUmVwcmVzZW50YXRpb24pOgorICAgICAgICAoV2ViS2l0OjpN
ZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OnN5bmNUZXh0VHJhY2tCb3VuZHMpOgorICAgICAgICAo
V2ViS2l0OjpNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OnRyYWNrc0NoYW5nZWQpOgorICAgICAg
ICAoV2ViS2l0OjpNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OnNpbXVsYXRlQXVkaW9JbnRlcnJ1
cHRpb24pOgorICAgICAgICAoV2ViS2l0OjpNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OmJlZ2lu
U2ltdWxhdGVkSERDUEVycm9yKToKKyAgICAgICAgKFdlYktpdDo6TWVkaWFQbGF5ZXJQcml2YXRl
UmVtb3RlOjplbmRTaW11bGF0ZWRIRENQRXJyb3IpOgorICAgICAgICAoV2ViS2l0OjpNZWRpYVBs
YXllclByaXZhdGVSZW1vdGU6Omxhbmd1YWdlT2ZQcmltYXJ5QXVkaW9UcmFjayBjb25zdCk6Cisg
ICAgICAgIChXZWJLaXQ6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6ZXh0cmFNZW1vcnlDb3N0
IGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpmaWxl
U2l6ZSBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6
ZW5kZWQgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6
OnZpZGVvUGxheWJhY2tRdWFsaXR5TWV0cmljcyk6CisgICAgICAgIChXZWJLaXQ6Ok1lZGlhUGxh
eWVyUHJpdmF0ZVJlbW90ZTo6bm90aWZ5VHJhY2tNb2RlQ2hhbmdlZCk6CisgICAgICAgIChXZWJL
aXQ6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6bm90aWZ5QWN0aXZlU291cmNlQnVmZmVyc0No
YW5nZWQpOgorICAgICAgICAoV2ViS2l0OjpNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OnNldFNo
b3VsZERpc2FibGVTbGVlcCk6CisgICAgICAgIChXZWJLaXQ6Ok1lZGlhUGxheWVyUHJpdmF0ZVJl
bW90ZTo6YXBwbGljYXRpb25XaWxsUmVzaWduQWN0aXZlKToKKyAgICAgICAgKFdlYktpdDo6TWVk
aWFQbGF5ZXJQcml2YXRlUmVtb3RlOjphcHBsaWNhdGlvbkRpZEJlY29tZUFjdGl2ZSk6CisgICAg
ICAgIChXZWJLaXQ6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6cGVyZm9ybVRhc2tBdE1lZGlh
VGltZSk6CisgICAgICAgIChXZWJLaXQ6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6c2hvdWxk
SWdub3JlSW50cmluc2ljU2l6ZSk6CisgICAgICAgIChXZWJLaXQ6Ok1lZGlhUGxheWVyUHJpdmF0
ZVJlbW90ZTo6bG9nQ2hhbm5lbCBjb25zdCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvbWVk
aWEvTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlLmg6IEFkZGVkLgorICAgICAgICAqIFdlYlByb2Nl
c3MvR1BVL21lZGlhL01lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZUlkZW50aWZpZXIuaDogQWRkZWQu
CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2Vy
LmNwcDogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6Ok1lZGlhUGxheWVyUmVtb3RlRmFjdG9yeTo6
TWVkaWFQbGF5ZXJSZW1vdGVGYWN0b3J5KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTWVkaWFQ
bGF5ZXJNYW5hZ2VyOjpSZW1vdGVNZWRpYVBsYXllck1hbmFnZXIpOgorICAgICAgICAoV2ViS2l0
OjpSZW1vdGVNZWRpYVBsYXllck1hbmFnZXI6On5SZW1vdGVNZWRpYVBsYXllck1hbmFnZXIpOgor
ICAgICAgICAoV2ViS2l0OjpSZW1vdGVNZWRpYVBsYXllck1hbmFnZXI6OnN1cHBsZW1lbnROYW1l
KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyOjppbml0aWFsaXpl
KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyOjpjcmVhdGVSZW1v
dGVNZWRpYVBsYXllcik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZU1lZGlhUGxheWVyTWFuYWdl
cjo6Z2V0U3VwcG9ydGVkVHlwZXMpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVNZWRpYVBsYXll
ck1hbmFnZXI6OnN1cHBvcnRzVHlwZUFuZENvZGVjcyk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90
ZU1lZGlhUGxheWVyTWFuYWdlcjo6c3VwcG9ydHNLZXlTeXN0ZW0pOgorICAgICAgICAoV2ViS2l0
OjpSZW1vdGVNZWRpYVBsYXllck1hbmFnZXI6Om9yaWdpbnNJbk1lZGlhQ2FjaGUpOgorICAgICAg
ICAoV2ViS2l0OjpSZW1vdGVNZWRpYVBsYXllck1hbmFnZXI6OmNsZWFyTWVkaWFDYWNoZSk6Cisg
ICAgICAgIChXZWJLaXQ6OlJlbW90ZU1lZGlhUGxheWVyTWFuYWdlcjo6Y2xlYXJNZWRpYUNhY2hl
Rm9yT3JpZ2lucyk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZU1lZGlhUGxheWVyTWFuYWdlcjo6
bmV0d29ya1N0YXRlQ2hhbmdlZCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZU1lZGlhUGxheWVy
TWFuYWdlcjo6dXBkYXRlUHJlZmVyZW5jZXMpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVNZWRp
YVBsYXllck1hbmFnZXI6OmdwdVByb2Nlc3NDb25uZWN0aW9uIGNvbnN0KToKKyAgICAgICAgKiBX
ZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVNZWRpYVBsYXllck1hbmFnZXIuaDogQWRkZWQuCisg
ICAgICAgICogV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyLm1l
c3NhZ2VzLmluOiBBZGRlZC4KKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5j
cHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnVwZGF0ZVByZWZlcmVuY2VzKToKKyAgICAg
ICAgKiBXZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwOgorCiAyMDE5LTEyLTExICBUcnVpdHQgU2F2
ZWxsICA8dHNhdmVsbEBhcHBsZS5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgcm9sbGluZyBv
dXQgcjI1MzM3Ni4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvagppbmRleCAwM2U2ZjU0MzNiZjZmNjdlYmM1ZjQ5ZmVkMGE5NTAxMmQ0YmU0YmY5
Li5iZjI4MWFmZTUxN2I5ZWE2YzRjOWNlNmJkZWMxZTE4NDcwYmY4NGNkIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291
cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xMDQsNiAr
MTA0LDcgQEAKIAkJMDcxRTQ5NkUxQUQ1QUEwRDAwOEE1MEI0IC8qIE1lZGlhUGxheWJhY2tUYXJn
ZXRNYWMubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAw
NzFFNDk2RDFBRDVBQTBEMDA4QTUwQjQgLyogTWVkaWFQbGF5YmFja1RhcmdldE1hYy5tbSAqLzsg
fTsKIAkJMDcxRTQ5NzAxQUQ1QUI1RTAwOEE1MEI0IC8qIE1lZGlhUGxheWJhY2tUYXJnZXRNYWMu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3MUU0OTZG
MUFENUFCNUUwMDhBNTBCNCAvKiBNZWRpYVBsYXliYWNrVGFyZ2V0TWFjLmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMDcyMEIwQTExNEQzMzIzNTAw
NjQyOTU1IC8qIEdlbmVyaWNFdmVudFF1ZXVlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSAwNzIwQjA5RjE0RDMzMjM1MDA2NDI5NTUgLyogR2VuZXJpY0V2
ZW50UXVldWUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OworCQkwNzI1RUZBOTIzOUFENzkzMDBBNTM4QTkgLyogTWVkaWFQbGF5ZXJQcml2YXRlLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwNzlGNUU0QjBGM0JF
QkVBMDA1RTA3ODIgLyogTWVkaWFQbGF5ZXJQcml2YXRlLmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMDcyNzdFNEQxN0QwMThDQzAwMTU1MzREIC8q
IEpTTWVkaWFTdHJlYW0uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDA3Mjc3RTQxMTdEMDE4Q0MwMDE1NTM0RCAvKiBKU01lZGlhU3RyZWFtLmggKi87IH07
CiAJCTA3Mjc3RTREMTdEMDE4Q0MwMDE1NTM0RSAvKiBKU0NhbnZhc0NhcHR1cmVNZWRpYVN0cmVh
bVRyYWNrLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAw
NzI3N0U0MTE3RDAxOENDMDAxNTUzNEUgLyogSlNDYW52YXNDYXB0dXJlTWVkaWFTdHJlYW1UcmFj
ay5oICovOyB9OwogCQkwNzI3N0U0RjE3RDAxOENDMDAxNTUzNEQgLyogSlNNZWRpYVN0cmVhbUF1
ZGlvRGVzdGluYXRpb25Ob2RlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSAwNzI3N0U0MzE3RDAxOENDMDAxNTUzNEQgLyogSlNNZWRpYVN0cmVhbUF1ZGlv
RGVzdGluYXRpb25Ob2RlLmggKi87IH07CkBAIC0zMTM3OSw2ICszMTM4MCw3IEBACiAJCQkJMDc3
QjY0MTMxQjk0RjEyRTAwM0U5QUQ1IC8qIE1lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJNb2NrLmgg
aW4gSGVhZGVycyAqLywKIAkJCQlFNDQ2MTNFNDBDRDY4MUEyMDBGQURBNzUgLyogTWVkaWFQbGF5
ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUNENTIwOUU0MUIwQkQ4MzgwMDc3MTg0RSAvKiBNZWRp
YVBsYXllckVudW1zLmggaW4gSGVhZGVycyAqLywKKwkJCQkwNzI1RUZBOTIzOUFENzkzMDBBNTM4
QTkgLyogTWVkaWFQbGF5ZXJQcml2YXRlLmggaW4gSGVhZGVycyAqLywKIAkJCQkwNzZGMEQwRTEy
QjgxOTI3MDBDMjZBQTQgLyogTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uLmggaW4gSGVh
ZGVycyAqLywKIAkJCQlERjlBRkQ3MjEzRkMzMUQ4MDAxNUZFQjcgLyogTWVkaWFQbGF5ZXJQcml2
YXRlQVZGb3VuZGF0aW9uT2JqQy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQ0RDOEI1QTMxODA0NjM0
NzAwMTZFNjg1IC8qIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQy5oIGluIEhl
YWRlcnMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Db250ZW50VHlw
ZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vQ29udGVudFR5cGUuaAppbmRleCBjODJiNWI3
MTk3YzllMTVkMWUyZjU0N2ZkNTY0MWZjNWY0ZWM1ZWNmLi41ODVhM2ZkNWE3ZWZkMWFiMzQ4ZDE0
ZjFmZjIxZTkwOWU2NjZjMjQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9D
b250ZW50VHlwZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0NvbnRlbnRUeXBlLmgK
QEAgLTMzLDggKzMzLDggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBDb250ZW50VHlw
ZSB7CiBwdWJsaWM6Ci0gICAgZXhwbGljaXQgQ29udGVudFR5cGUoU3RyaW5nJiYgdHlwZSk7Ci0g
ICAgZXhwbGljaXQgQ29udGVudFR5cGUoY29uc3QgU3RyaW5nJiB0eXBlKTsKKyAgICBXRUJDT1JF
X0VYUE9SVCBleHBsaWNpdCBDb250ZW50VHlwZShTdHJpbmcmJiB0eXBlKTsKKyAgICBXRUJDT1JF
X0VYUE9SVCBleHBsaWNpdCBDb250ZW50VHlwZShjb25zdCBTdHJpbmcmIHR5cGUpOwogICAgIENv
bnRlbnRUeXBlKCkgPSBkZWZhdWx0OwogCiAgICAgc3RhdGljIGNvbnN0IFN0cmluZyYgY29kZWNz
UGFyYW1ldGVyKCk7CkBAIC00OSw2ICs0OSwyMyBAQCBwdWJsaWM6CiAKICAgICBTdHJpbmcgdG9K
U09OU3RyaW5nKCkgY29uc3Q7CiAKKyAgICB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPgorICAgIHZv
aWQgZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0CisgICAgeworICAgICAgICBlbmNvZGVy
IDw8IG1fdHlwZTsKKyAgICB9CisKKyAgICB0ZW1wbGF0ZSA8Y2xhc3MgRGVjb2Rlcj4KKyAgICBz
dGF0aWMgT3B0aW9uYWw8Q29udGVudFR5cGU+IGRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQorICAg
IHsKKyAgICAgICAgT3B0aW9uYWw8U3RyaW5nPiB0eXBlOworICAgICAgICBkZWNvZGVyID4+IHR5
cGU7CisgICAgICAgIGlmICghdHlwZSkKKyAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7
CisKKyAgICAgICAgcmV0dXJuIHsgQ29udGVudFR5cGUoV1RGTW92ZSgqdHlwZSkpIH07CisgICAg
fQorCiBwcml2YXRlOgogICAgIFN0cmluZyBtX3R5cGU7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuY3BwCmluZGV4IGNlMjNhYjc4NGJjNmMy
YTE1ZmI4OTFkODE1Nzk1OWYxYzE2NGI1NGEuLmM3NDVjNDA2YzA2NGU2NGE0OTE4ZTA1N2QyNmVj
OTEwYjM3MGE3MzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L01lZGlhUGxheWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9N
ZWRpYVBsYXllci5jcHAKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA3
LTIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAy
MDA3LTIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCkBAIC05MCwxNCArOTAsNiBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKLSNpZiAhUkVMRUFTRV9MT0dfRElTQUJMRUQKLXN0YXRpYyBSZWZQdHI8TG9nZ2VyPiYgbnVs
bExvZ2dlcigpCi17Ci0gICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFJlZlB0cjxMb2dnZXI+PiBs
b2dnZXI7Ci0gICAgcmV0dXJuIGxvZ2dlcjsKLX0KLSNlbmRpZgotCiAvLyBhIG51bGwgcGxheWVy
IHRvIG1ha2UgTWVkaWFQbGF5ZXIgbG9naWMgc2ltcGxlcgogCiBjbGFzcyBOdWxsTWVkaWFQbGF5
ZXJQcml2YXRlIGZpbmFsIDogcHVibGljIE1lZGlhUGxheWVyUHJpdmF0ZUludGVyZmFjZSB7CkBA
IC0xNjYsOCArMTU4LDIyIEBAIHB1YmxpYzoKICAgICBib29sIGhhc1NpbmdsZVNlY3VyaXR5T3Jp
Z2luKCkgY29uc3QgZmluYWwgeyByZXR1cm4gdHJ1ZTsgfQogfTsKIAorI2lmICFSRUxFQVNFX0xP
R19ESVNBQkxFRAorc3RhdGljIFJlZlB0cjxMb2dnZXI+JiBudWxsTG9nZ2VyKCkKK3sKKyAgICBz
dGF0aWMgTmV2ZXJEZXN0cm95ZWQ8UmVmUHRyPExvZ2dlcj4+IGxvZ2dlcjsKKyAgICByZXR1cm4g
bG9nZ2VyOworfQorI2VuZGlmCisKK3N0YXRpYyBjb25zdCBWZWN0b3I8V2ViQ29yZTo6Q29udGVu
dFR5cGU+JiBudWxsQ29udGVudFR5cGVWZWN0b3IoKQoreworICAgIHN0YXRpYyBOZXZlckRlc3Ry
b3llZDxWZWN0b3I8V2ViQ29yZTo6Q29udGVudFR5cGU+PiB2ZWN0b3I7CisgICAgcmV0dXJuIHZl
Y3RvcjsKK30KKwogY2xhc3MgTnVsbE1lZGlhUGxheWVyQ2xpZW50IDogcHVibGljIE1lZGlhUGxh
eWVyQ2xpZW50IHsKLXB1YmxpYzoKK3ByaXZhdGU6CiAjaWYgIVJFTEVBU0VfTE9HX0RJU0FCTEVE
CiAgICAgY29uc3QgTG9nZ2VyJiBtZWRpYVBsYXllckxvZ2dlcigpIGZpbmFsCiAgICAgewpAQCAt
MTc5LDggKzE4NSwxMSBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiAqbnVsbExvZ2dlcigpLmdl
dCgpOwogICAgIH0KICNlbmRpZgorCisgICAgY29uc3QgVmVjdG9yPFdlYkNvcmU6OkNvbnRlbnRU
eXBlPiYgbWVkaWFDb250ZW50VHlwZXNSZXF1aXJpbmdIYXJkd2FyZVN1cHBvcnQoKSBjb25zdCBm
aW5hbCB7IHJldHVybiBudWxsQ29udGVudFR5cGVWZWN0b3IoKTsgfQogfTsKIAorCiBjb25zdCBW
ZWN0b3I8Q29udGVudFR5cGU+JiBNZWRpYVBsYXllckNsaWVudDo6bWVkaWFDb250ZW50VHlwZXNS
ZXF1aXJpbmdIYXJkd2FyZVN1cHBvcnQoKSBjb25zdAogewogICAgIHN0YXRpYyBOZXZlckRlc3Ry
b3llZDxWZWN0b3I8Q29udGVudFR5cGU+PiBjb250ZW50VHlwZXM7CkBAIC0xOTUsMTcgKzIwNCw3
IEBAIHN0YXRpYyBNZWRpYVBsYXllckNsaWVudCYgbnVsbE1lZGlhUGxheWVyQ2xpZW50KCkKIAog
Ly8gZW5naW5lIHN1cHBvcnQKIAotc3RydWN0IE1lZGlhUGxheWVyRmFjdG9yeSB7Ci0gICAgQ3Jl
YXRlTWVkaWFFbmdpbmVQbGF5ZXIgY29uc3RydWN0b3I7Ci0gICAgTWVkaWFFbmdpbmVTdXBwb3J0
ZWRUeXBlcyBnZXRTdXBwb3J0ZWRUeXBlczsKLSAgICBNZWRpYUVuZ2luZVN1cHBvcnRzVHlwZSBz
dXBwb3J0c1R5cGVBbmRDb2RlY3M7Ci0gICAgTWVkaWFFbmdpbmVPcmlnaW5zSW5NZWRpYUNhY2hl
IG9yaWdpbnNJbk1lZGlhQ2FjaGU7Ci0gICAgTWVkaWFFbmdpbmVDbGVhck1lZGlhQ2FjaGUgY2xl
YXJNZWRpYUNhY2hlOwotICAgIE1lZGlhRW5naW5lQ2xlYXJNZWRpYUNhY2hlRm9yT3JpZ2lucyBj
bGVhck1lZGlhQ2FjaGVGb3JPcmlnaW5zOwotICAgIE1lZGlhRW5naW5lU3VwcG9ydHNLZXlTeXN0
ZW0gc3VwcG9ydHNLZXlTeXN0ZW07Ci19OwotCi1zdGF0aWMgdm9pZCBhZGRNZWRpYUVuZ2luZShD
cmVhdGVNZWRpYUVuZ2luZVBsYXllciYmLCBNZWRpYUVuZ2luZVN1cHBvcnRlZFR5cGVzLCBNZWRp
YUVuZ2luZVN1cHBvcnRzVHlwZSwgTWVkaWFFbmdpbmVPcmlnaW5zSW5NZWRpYUNhY2hlLCBNZWRp
YUVuZ2luZUNsZWFyTWVkaWFDYWNoZSwgTWVkaWFFbmdpbmVDbGVhck1lZGlhQ2FjaGVGb3JPcmln
aW5zLCBNZWRpYUVuZ2luZVN1cHBvcnRzS2V5U3lzdGVtKTsKK3N0YXRpYyB2b2lkIGFkZE1lZGlh
RW5naW5lKHN0ZDo6dW5pcXVlX3B0cjxNZWRpYVBsYXllckZhY3Rvcnk+KTsKIAogc3RhdGljIExv
Y2sgbWVkaWFFbmdpbmVWZWN0b3JMb2NrOwogCkBAIC0yMTUsMjEgKzIxNCwzNyBAQCBzdGF0aWMg
Ym9vbCYgaGF2ZU1lZGlhRW5naW5lc1ZlY3RvcigpCiAgICAgcmV0dXJuIGhhdmVWZWN0b3I7CiB9
CiAKLXN0YXRpYyBWZWN0b3I8TWVkaWFQbGF5ZXJGYWN0b3J5PiYgbXV0YWJsZUluc3RhbGxlZE1l
ZGlhRW5naW5lc1ZlY3RvcigpCitzdGF0aWMgVmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxNZWRpYVBs
YXllckZhY3Rvcnk+PiYgbXV0YWJsZUluc3RhbGxlZE1lZGlhRW5naW5lc1ZlY3RvcigpCiB7Ci0g
ICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFZlY3RvcjxNZWRpYVBsYXllckZhY3Rvcnk+PiBpbnN0
YWxsZWRFbmdpbmVzOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxWZWN0b3I8c3RkOjp1bmlx
dWVfcHRyPE1lZGlhUGxheWVyRmFjdG9yeT4+PiBpbnN0YWxsZWRFbmdpbmVzOwogICAgIHJldHVy
biBpbnN0YWxsZWRFbmdpbmVzOwogfQogCitzdGF0aWMgUmVtb3RlTWVkaWFQbGF5ZXJTdXBwb3J0
OjpSZWdpc3RlclJlbW90ZVBsYXllckNhbGxiYWNrJiByZWdpc3RlclJlbW90ZVBsYXllckNhbGxi
YWNrKCkKK3sKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8UmVtb3RlTWVkaWFQbGF5ZXJTdXBw
b3J0OjpSZWdpc3RlclJlbW90ZVBsYXllckNhbGxiYWNrPiBjYWxsYmFjazsKKyAgICByZXR1cm4g
Y2FsbGJhY2s7Cit9CisKK3ZvaWQgUmVtb3RlTWVkaWFQbGF5ZXJTdXBwb3J0OjpzZXRSZWdpc3Rl
clJlbW90ZVBsYXllckNhbGxiYWNrKFJlZ2lzdGVyUmVtb3RlUGxheWVyQ2FsbGJhY2smJiBjYWxs
YmFjaykKK3sKKyAgICByZWdpc3RlclJlbW90ZVBsYXllckNhbGxiYWNrKCkgPSBXVEZNb3ZlKGNh
bGxiYWNrKTsKK30KKwogc3RhdGljIHZvaWQgYnVpbGRNZWRpYUVuZ2luZXNWZWN0b3IoKQogewog
ICAgIEFTU0VSVChtZWRpYUVuZ2luZVZlY3RvckxvY2suaXNMb2NrZWQoKSk7CiAKICNpZiBVU0Uo
QVZGT1VOREFUSU9OKQorICAgIGF1dG8mIHJlZ2lzdGVyUmVtb3RlRW5naW5lID0gcmVnaXN0ZXJS
ZW1vdGVQbGF5ZXJDYWxsYmFjaygpOworCiAgICAgaWYgKERlcHJlY2F0ZWRHbG9iYWxTZXR0aW5n
czo6aXNBVkZvdW5kYXRpb25FbmFibGVkKCkpIHsKIAogI2lmIFBMQVRGT1JNKENPQ09BKQotICAg
ICAgICBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpyZWdpc3Rlck1lZGlhRW5n
aW5lKGFkZE1lZGlhRW5naW5lKTsKKyAgICAgICAgaWYgKHJlZ2lzdGVyUmVtb3RlRW5naW5lKQor
ICAgICAgICAgICAgcmVnaXN0ZXJSZW1vdGVFbmdpbmUoYWRkTWVkaWFFbmdpbmUsIE1lZGlhUGxh
eWVyRW51bXM6Ok1lZGlhRW5naW5lSWRlbnRpZmllcjo6QVZGb3VuZGF0aW9uKTsKKyAgICAgICAg
ZWxzZQorICAgICAgICAgICAgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6cmVn
aXN0ZXJNZWRpYUVuZ2luZShhZGRNZWRpYUVuZ2luZSk7CiAjZW5kaWYKIAogI2lmIEVOQUJMRShN
RURJQV9TT1VSQ0UpCkBAIC0yNjUsNyArMjgwLDcgQEAgc3RhdGljIHZvaWQgYnVpbGRNZWRpYUVu
Z2luZXNWZWN0b3IoKQogICAgIGhhdmVNZWRpYUVuZ2luZXNWZWN0b3IoKSA9IHRydWU7CiB9CiAK
LXN0YXRpYyBjb25zdCBWZWN0b3I8TWVkaWFQbGF5ZXJGYWN0b3J5PiYgaW5zdGFsbGVkTWVkaWFF
bmdpbmVzKCkKK3N0YXRpYyBjb25zdCBWZWN0b3I8c3RkOjp1bmlxdWVfcHRyPE1lZGlhUGxheWVy
RmFjdG9yeT4+JiBpbnN0YWxsZWRNZWRpYUVuZ2luZXMoKQogewogICAgIHsKICAgICAgICAgYXV0
byBsb2NrZXIgPSBob2xkTG9jayhtZWRpYUVuZ2luZVZlY3RvckxvY2spOwpAQCAtMjc2LDE0ICsy
OTEsOSBAQCBzdGF0aWMgY29uc3QgVmVjdG9yPE1lZGlhUGxheWVyRmFjdG9yeT4mIGluc3RhbGxl
ZE1lZGlhRW5naW5lcygpCiAgICAgcmV0dXJuIG11dGFibGVJbnN0YWxsZWRNZWRpYUVuZ2luZXNW
ZWN0b3IoKTsKIH0KIAotc3RhdGljIHZvaWQgYWRkTWVkaWFFbmdpbmUoQ3JlYXRlTWVkaWFFbmdp
bmVQbGF5ZXImJiBjb25zdHJ1Y3RvciwgTWVkaWFFbmdpbmVTdXBwb3J0ZWRUeXBlcyBnZXRTdXBw
b3J0ZWRUeXBlcywgTWVkaWFFbmdpbmVTdXBwb3J0c1R5cGUgc3VwcG9ydHNUeXBlLAotICAgIE1l
ZGlhRW5naW5lT3JpZ2luc0luTWVkaWFDYWNoZSBvcmlnaW5zSW5NZWRpYUNhY2hlLCBNZWRpYUVu
Z2luZUNsZWFyTWVkaWFDYWNoZSBjbGVhck1lZGlhQ2FjaGUsIE1lZGlhRW5naW5lQ2xlYXJNZWRp
YUNhY2hlRm9yT3JpZ2lucyBjbGVhck1lZGlhQ2FjaGVGb3JPcmlnaW5zLCBNZWRpYUVuZ2luZVN1
cHBvcnRzS2V5U3lzdGVtIHN1cHBvcnRzS2V5U3lzdGVtKQorc3RhdGljIHZvaWQgYWRkTWVkaWFF
bmdpbmUoc3RkOjp1bmlxdWVfcHRyPE1lZGlhUGxheWVyRmFjdG9yeT4gZmFjdG9yeSkKIHsKLSAg
ICBBU1NFUlQoY29uc3RydWN0b3IpOwotICAgIEFTU0VSVChnZXRTdXBwb3J0ZWRUeXBlcyk7Ci0g
ICAgQVNTRVJUKHN1cHBvcnRzVHlwZSk7Ci0KLSAgICBtdXRhYmxlSW5zdGFsbGVkTWVkaWFFbmdp
bmVzVmVjdG9yKCkuYXBwZW5kKE1lZGlhUGxheWVyRmFjdG9yeSB7IFdURk1vdmUoY29uc3RydWN0
b3IpLCBnZXRTdXBwb3J0ZWRUeXBlcywgc3VwcG9ydHNUeXBlLCBvcmlnaW5zSW5NZWRpYUNhY2hl
LCBjbGVhck1lZGlhQ2FjaGUsIGNsZWFyTWVkaWFDYWNoZUZvck9yaWdpbnMsIHN1cHBvcnRzS2V5
U3lzdGVtIH0pOworICAgIG11dGFibGVJbnN0YWxsZWRNZWRpYUVuZ2luZXNWZWN0b3IoKS5hcHBl
bmQoV1RGTW92ZShmYWN0b3J5KSk7CiB9CiAKIHN0YXRpYyBjb25zdCBBdG9tU3RyaW5nJiBhcHBs
aWNhdGlvbk9jdGV0U3RyZWFtKCkKQEAgLTI5OCw2ICszMDgsMjEgQEAgc3RhdGljIGNvbnN0IEF0
b21TdHJpbmcmIHRleHRQbGFpbigpCiAgICAgcmV0dXJuIHRleHRQbGFpbjsKIH0KIAorY29uc3Qg
TWVkaWFQbGF5ZXJGYWN0b3J5KiBNZWRpYVBsYXllcjo6bWVkaWFFbmdpbmUoTWVkaWFQbGF5ZXJF
bnVtczo6TWVkaWFFbmdpbmVJZGVudGlmaWVyIGlkZW50aWZpZXIpCit7CisgICAgYXV0byYgZW5n
aW5lcyA9IGluc3RhbGxlZE1lZGlhRW5naW5lcygpOworICAgIGF1dG8gY3VycmVudEluZGV4ID0g
ZW5naW5lcy5maW5kTWF0Y2hpbmcoW2lkZW50aWZpZXJdIChhdXRvJiBlbmdpbmUpIHsKKyAgICAg
ICAgcmV0dXJuIGVuZ2luZS0+aWRlbnRpZmllcigpID09IGlkZW50aWZpZXI7CisgICAgfSk7CisK
KyAgICBpZiAoY3VycmVudEluZGV4ID09IG5vdEZvdW5kKSB7CisgICAgICAgIEFTU0VSVF9OT1Rf
UkVBQ0hFRCgpOworICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICB9CisKKyAgICByZXR1cm4g
ZW5naW5lc1tjdXJyZW50SW5kZXhdLmdldCgpOworfQorCiBzdGF0aWMgY29uc3QgTWVkaWFQbGF5
ZXJGYWN0b3J5KiBiZXN0TWVkaWFFbmdpbmVGb3JTdXBwb3J0UGFyYW1ldGVycyhjb25zdCBNZWRp
YUVuZ2luZVN1cHBvcnRQYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzLCBjb25zdCBNZWRpYVBsYXllckZh
Y3RvcnkqIGN1cnJlbnQgPSBudWxscHRyKQogewogICAgIGlmIChwYXJhbWV0ZXJzLnR5cGUuaXNF
bXB0eSgpICYmICFwYXJhbWV0ZXJzLmlzTWVkaWFTb3VyY2UgJiYgIXBhcmFtZXRlcnMuaXNNZWRp
YVN0cmVhbSkKQEAgLTMxNSwzNCArMzQwLDQ2IEBAIHN0YXRpYyBjb25zdCBNZWRpYVBsYXllckZh
Y3RvcnkqIGJlc3RNZWRpYUVuZ2luZUZvclN1cHBvcnRQYXJhbWV0ZXJzKGNvbnN0IE1lZGlhCiAg
ICAgTWVkaWFQbGF5ZXI6OlN1cHBvcnRzVHlwZSBzdXBwb3J0ZWQgPSBNZWRpYVBsYXllcjo6U3Vw
cG9ydHNUeXBlOjpJc05vdFN1cHBvcnRlZDsKICAgICBmb3IgKGF1dG8mIGVuZ2luZSA6IGluc3Rh
bGxlZE1lZGlhRW5naW5lcygpKSB7CiAgICAgICAgIGlmIChjdXJyZW50KSB7Ci0gICAgICAgICAg
ICBpZiAoY3VycmVudCA9PSAmZW5naW5lKQorICAgICAgICAgICAgaWYgKGN1cnJlbnQgPT0gZW5n
aW5lLmdldCgpKQogICAgICAgICAgICAgICAgIGN1cnJlbnQgPSBudWxscHRyOwogICAgICAgICAg
ICAgY29udGludWU7CiAgICAgICAgIH0KLSAgICAgICAgTWVkaWFQbGF5ZXI6OlN1cHBvcnRzVHlw
ZSBlbmdpbmVTdXBwb3J0ID0gZW5naW5lLnN1cHBvcnRzVHlwZUFuZENvZGVjcyhwYXJhbWV0ZXJz
KTsKKyAgICAgICAgTWVkaWFQbGF5ZXI6OlN1cHBvcnRzVHlwZSBlbmdpbmVTdXBwb3J0ID0gZW5n
aW5lLT5zdXBwb3J0c1R5cGVBbmRDb2RlY3MocGFyYW1ldGVycyk7CiAgICAgICAgIGlmIChlbmdp
bmVTdXBwb3J0ID4gc3VwcG9ydGVkKSB7CiAgICAgICAgICAgICBzdXBwb3J0ZWQgPSBlbmdpbmVT
dXBwb3J0OwotICAgICAgICAgICAgZm91bmRFbmdpbmUgPSAmZW5naW5lOworICAgICAgICAgICAg
Zm91bmRFbmdpbmUgPSBlbmdpbmUuZ2V0KCk7CiAgICAgICAgIH0KICAgICB9CiAKICAgICByZXR1
cm4gZm91bmRFbmdpbmU7CiB9CiAKLXN0YXRpYyBjb25zdCBNZWRpYVBsYXllckZhY3RvcnkqIG5l
eHRNZWRpYUVuZ2luZShjb25zdCBNZWRpYVBsYXllckZhY3RvcnkqIGN1cnJlbnQpCitjb25zdCBN
ZWRpYVBsYXllckZhY3RvcnkqIE1lZGlhUGxheWVyOjpuZXh0TWVkaWFFbmdpbmUoY29uc3QgTWVk
aWFQbGF5ZXJGYWN0b3J5KiBjdXJyZW50KQogeworICAgIGlmIChtX2FjdGl2ZUVuZ2luZUlkZW50
aWZpZXIpIHsKKyAgICAgICAgYXV0byogZW5naW5lID0gbWVkaWFFbmdpbmUobV9hY3RpdmVFbmdp
bmVJZGVudGlmaWVyLnZhbHVlKCkpOworICAgICAgICByZXR1cm4gY3VycmVudCAhPSBlbmdpbmUg
PyBlbmdpbmUgOiBudWxscHRyOworICAgIH0KKwogICAgIGF1dG8mIGVuZ2luZXMgPSBpbnN0YWxs
ZWRNZWRpYUVuZ2luZXMoKTsKICAgICBpZiAoZW5naW5lcy5pc0VtcHR5KCkpCiAgICAgICAgIHJl
dHVybiBudWxscHRyOwogCiAgICAgaWYgKCFjdXJyZW50KSAKLSAgICAgICAgcmV0dXJuICZlbmdp
bmVzLmZpcnN0KCk7CisgICAgICAgIHJldHVybiBlbmdpbmVzLmZpcnN0KCkuZ2V0KCk7CisKKyAg
ICBhdXRvIGN1cnJlbnRJbmRleCA9IGVuZ2luZXMuZmluZE1hdGNoaW5nKFtjdXJyZW50XSAoYXV0
byYgZW5naW5lKSB7CisgICAgICAgIHJldHVybiBlbmdpbmUuZ2V0KCkgPT0gY3VycmVudDsKKyAg
ICB9KTsKKyAgICBpZiAoY3VycmVudEluZGV4ID09IG5vdEZvdW5kKSB7CisgICAgICAgIEFTU0VS
VF9OT1RfUkVBQ0hFRCgpOworICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICB9CiAKLSAgICBz
aXplX3QgY3VycmVudEluZGV4ID0gY3VycmVudCAtICZlbmdpbmVzLmZpcnN0KCk7CiAgICAgaWYg
KGN1cnJlbnRJbmRleCArIDEgPj0gZW5naW5lcy5zaXplKCkpCiAgICAgICAgIHJldHVybiBudWxs
cHRyOwogCi0gICAgcmV0dXJuICZlbmdpbmVzW2N1cnJlbnRJbmRleCArIDFdOworICAgIHJldHVy
biBlbmdpbmVzW2N1cnJlbnRJbmRleCArIDFdLmdldCgpOwogfQogCiAvLyBtZWRpYSBwbGF5ZXIK
QEAgLTM1Miw2ICszODksMTMgQEAgUmVmPE1lZGlhUGxheWVyPiBNZWRpYVBsYXllcjo6Y3JlYXRl
KE1lZGlhUGxheWVyQ2xpZW50JiBjbGllbnQpCiAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgTWVk
aWFQbGF5ZXIoY2xpZW50KSk7CiB9CiAKK1JlZjxNZWRpYVBsYXllcj4gTWVkaWFQbGF5ZXI6OmNy
ZWF0ZShNZWRpYVBsYXllckNsaWVudCYgY2xpZW50LCBNZWRpYVBsYXllckVudW1zOjpNZWRpYUVu
Z2luZUlkZW50aWZpZXIgbWVkaWFFbmdpbmVJZGVudGlmaWVyKQoreworICAgIHJldHVybiBhZG9w
dFJlZigqbmV3IE1lZGlhUGxheWVyKGNsaWVudCwgbWVkaWFFbmdpbmVJZGVudGlmaWVyKSk7Cit9
CisKKworCiBNZWRpYVBsYXllcjo6TWVkaWFQbGF5ZXIoTWVkaWFQbGF5ZXJDbGllbnQmIGNsaWVu
dCkKICAgICA6IG1fY2xpZW50KCZjbGllbnQpCiAgICAgLCBtX3JlbG9hZFRpbWVyKCp0aGlzLCAm
TWVkaWFQbGF5ZXI6OnJlbG9hZFRpbWVyRmlyZWQpCkBAIC0zNTksNiArNDAzLDE0IEBAIE1lZGlh
UGxheWVyOjpNZWRpYVBsYXllcihNZWRpYVBsYXllckNsaWVudCYgY2xpZW50KQogewogfQogCitN
ZWRpYVBsYXllcjo6TWVkaWFQbGF5ZXIoTWVkaWFQbGF5ZXJDbGllbnQmIGNsaWVudCwgTWVkaWFQ
bGF5ZXJFbnVtczo6TWVkaWFFbmdpbmVJZGVudGlmaWVyIG1lZGlhRW5naW5lSWRlbnRpZmllcikK
KyAgICA6IG1fY2xpZW50KCZjbGllbnQpCisgICAgLCBtX3JlbG9hZFRpbWVyKCp0aGlzLCAmTWVk
aWFQbGF5ZXI6OnJlbG9hZFRpbWVyRmlyZWQpCisgICAgLCBtX3ByaXZhdGUobWFrZVVuaXF1ZTxO
dWxsTWVkaWFQbGF5ZXJQcml2YXRlPih0aGlzKSkKKyAgICAsIG1fYWN0aXZlRW5naW5lSWRlbnRp
ZmllcihtZWRpYUVuZ2luZUlkZW50aWZpZXIpCit7Cit9CisKIE1lZGlhUGxheWVyOjp+TWVkaWFQ
bGF5ZXIoKQogewogICAgIEFTU0VSVCghbV9pbml0aWFsaXppbmdNZWRpYUVuZ2luZSk7CkBAIC00
NDEsNyArNDkzLDcgQEAgYm9vbCBNZWRpYVBsYXllcjo6bG9hZChNZWRpYVN0cmVhbVByaXZhdGUm
IG1lZGlhU3RyZWFtKQogfQogI2VuZGlmCiAKLWNvbnN0IE1lZGlhUGxheWVyRmFjdG9yeSogTWVk
aWFQbGF5ZXI6Om5leHRCZXN0TWVkaWFFbmdpbmUoY29uc3QgTWVkaWFQbGF5ZXJGYWN0b3J5KiBj
dXJyZW50KSBjb25zdAorY29uc3QgTWVkaWFQbGF5ZXJGYWN0b3J5KiBNZWRpYVBsYXllcjo6bmV4
dEJlc3RNZWRpYUVuZ2luZShjb25zdCBNZWRpYVBsYXllckZhY3RvcnkqIGN1cnJlbnQpCiB7CiAg
ICAgTWVkaWFFbmdpbmVTdXBwb3J0UGFyYW1ldGVycyBwYXJhbWV0ZXJzOwogICAgIHBhcmFtZXRl
cnMudHlwZSA9IG1fY29udGVudFR5cGU7CkBAIC00NTMsNiArNTA1LDE3IEBAIGNvbnN0IE1lZGlh
UGxheWVyRmFjdG9yeSogTWVkaWFQbGF5ZXI6Om5leHRCZXN0TWVkaWFFbmdpbmUoY29uc3QgTWVk
aWFQbGF5ZXJGYWN0CiAgICAgcGFyYW1ldGVycy5pc01lZGlhU3RyZWFtID0gISFtX21lZGlhU3Ry
ZWFtOwogI2VuZGlmCiAKKyAgICBpZiAobV9hY3RpdmVFbmdpbmVJZGVudGlmaWVyKSB7CisgICAg
ICAgIGlmIChjdXJyZW50KQorICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICAgICAg
YXV0byogZW5naW5lID0gbWVkaWFFbmdpbmUobV9hY3RpdmVFbmdpbmVJZGVudGlmaWVyLnZhbHVl
KCkpOworICAgICAgICBpZiAoZW5naW5lICYmIGVuZ2luZS0+c3VwcG9ydHNUeXBlQW5kQ29kZWNz
KHBhcmFtZXRlcnMpICE9IFN1cHBvcnRzVHlwZTo6SXNOb3RTdXBwb3J0ZWQpCisgICAgICAgICAg
ICByZXR1cm4gZW5naW5lOworCisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIH0KKwogICAg
IHJldHVybiBiZXN0TWVkaWFFbmdpbmVGb3JTdXBwb3J0UGFyYW1ldGVycyhwYXJhbWV0ZXJzLCBj
dXJyZW50KTsKIH0KIApAQCAtNDg5LDEzICs1NTIsMTUgQEAgdm9pZCBNZWRpYVBsYXllcjo6bG9h
ZFdpdGhOZXh0TWVkaWFFbmdpbmUoY29uc3QgTWVkaWFQbGF5ZXJGYWN0b3J5KiBjdXJyZW50KQog
ICAgICAgICBtX3ByaXZhdGUgPSBudWxscHRyOwogICAgIH0gZWxzZSBpZiAobV9jdXJyZW50TWVk
aWFFbmdpbmUgIT0gZW5naW5lKSB7CiAgICAgICAgIG1fY3VycmVudE1lZGlhRW5naW5lID0gZW5n
aW5lOwotICAgICAgICBtX3ByaXZhdGUgPSBlbmdpbmUtPmNvbnN0cnVjdG9yKHRoaXMpOwotICAg
ICAgICBjbGllbnQoKS5tZWRpYVBsYXllckVuZ2luZVVwZGF0ZWQoKTsKLSAgICAgICAgbV9wcml2
YXRlLT5zZXRQcml2YXRlQnJvd3NpbmdNb2RlKG1fcHJpdmF0ZUJyb3dzaW5nKTsKLSAgICAgICAg
bV9wcml2YXRlLT5zZXRQcmVsb2FkKG1fcHJlbG9hZCk7Ci0gICAgICAgIG1fcHJpdmF0ZS0+c2V0
UHJlc2VydmVzUGl0Y2gocHJlc2VydmVzUGl0Y2goKSk7Ci0gICAgICAgIGlmIChtX3Nob3VsZFBy
ZXBhcmVUb1JlbmRlcikKLSAgICAgICAgICAgIG1fcHJpdmF0ZS0+cHJlcGFyZUZvclJlbmRlcmlu
ZygpOworICAgICAgICBtX3ByaXZhdGUgPSBlbmdpbmUtPmNyZWF0ZU1lZGlhRW5naW5lUGxheWVy
KHRoaXMpOworICAgICAgICBpZiAobV9wcml2YXRlKSB7CisgICAgICAgICAgICBjbGllbnQoKS5t
ZWRpYVBsYXllckVuZ2luZVVwZGF0ZWQoKTsKKyAgICAgICAgICAgIG1fcHJpdmF0ZS0+c2V0UHJp
dmF0ZUJyb3dzaW5nTW9kZShtX3ByaXZhdGVCcm93c2luZyk7CisgICAgICAgICAgICBtX3ByaXZh
dGUtPnNldFByZWxvYWQobV9wcmVsb2FkKTsKKyAgICAgICAgICAgIG1fcHJpdmF0ZS0+c2V0UHJl
c2VydmVzUGl0Y2gocHJlc2VydmVzUGl0Y2goKSk7CisgICAgICAgICAgICBpZiAobV9zaG91bGRQ
cmVwYXJlVG9SZW5kZXIpCisgICAgICAgICAgICAgICAgbV9wcml2YXRlLT5wcmVwYXJlRm9yUmVu
ZGVyaW5nKCk7CisgICAgICAgIH0KICAgICB9CiAKICAgICBpZiAobV9wcml2YXRlKSB7CkBAIC01
MTIsOCArNTc3LDEyIEBAIHZvaWQgTWVkaWFQbGF5ZXI6OmxvYWRXaXRoTmV4dE1lZGlhRW5naW5l
KGNvbnN0IE1lZGlhUGxheWVyRmFjdG9yeSogY3VycmVudCkKICAgICAgICAgbV9wcml2YXRlLT5s
b2FkKG1fdXJsLnN0cmluZygpKTsKICAgICB9IGVsc2UgewogICAgICAgICBtX3ByaXZhdGUgPSBt
YWtlVW5pcXVlPE51bGxNZWRpYVBsYXllclByaXZhdGU+KHRoaXMpOwotICAgICAgICBjbGllbnQo
KS5tZWRpYVBsYXllckVuZ2luZVVwZGF0ZWQoKTsKLSAgICAgICAgY2xpZW50KCkubWVkaWFQbGF5
ZXJSZXNvdXJjZU5vdFN1cHBvcnRlZCgpOworICAgICAgICBpZiAoIW1fYWN0aXZlRW5naW5lSWRl
bnRpZmllciAmJiBpbnN0YWxsZWRNZWRpYUVuZ2luZXMoKS5zaXplKCkgPiAxICYmIG5leHRCZXN0
TWVkaWFFbmdpbmUobV9jdXJyZW50TWVkaWFFbmdpbmUpKQorICAgICAgICAgICAgbV9yZWxvYWRU
aW1lci5zdGFydE9uZVNob3QoMF9zKTsKKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBjbGll
bnQoKS5tZWRpYVBsYXllckVuZ2luZVVwZGF0ZWQoKTsKKyAgICAgICAgICAgIGNsaWVudCgpLm1l
ZGlhUGxheWVyUmVzb3VyY2VOb3RTdXBwb3J0ZWQoKTsKKyAgICAgICAgfQogICAgIH0KIAogICAg
IG1faW5pdGlhbGl6aW5nTWVkaWFFbmdpbmUgPSBmYWxzZTsKQEAgLTkyOSw3ICs5OTgsNyBAQCB2
b2lkIE1lZGlhUGxheWVyOjpnZXRTdXBwb3J0ZWRUeXBlcyhIYXNoU2V0PFN0cmluZywgQVNDSUlD
YXNlSW5zZW5zaXRpdmVIYXNoPiYgdAogewogICAgIGZvciAoYXV0byYgZW5naW5lIDogaW5zdGFs
bGVkTWVkaWFFbmdpbmVzKCkpIHsKICAgICAgICAgSGFzaFNldDxTdHJpbmcsIEFTQ0lJQ2FzZUlu
c2Vuc2l0aXZlSGFzaD4gZW5naW5lVHlwZXM7Ci0gICAgICAgIGVuZ2luZS5nZXRTdXBwb3J0ZWRU
eXBlcyhlbmdpbmVUeXBlcyk7CisgICAgICAgIGVuZ2luZS0+Z2V0U3VwcG9ydGVkVHlwZXMoZW5n
aW5lVHlwZXMpOwogICAgICAgICB0eXBlcy5hZGQoZW5naW5lVHlwZXMuYmVnaW4oKSwgZW5naW5l
VHlwZXMuZW5kKCkpOwogICAgIH0KIH0gCkBAIC0xMTI1LDM0ICsxMTk0LDI4IEBAIHN0YXRpYyB2
b2lkIGFkZFRvSGFzaChIYXNoU2V0PFQ+JiB0b0hhc2gsIEhhc2hTZXQ8VD4mJiBmcm9tSGFzaCkK
IEhhc2hTZXQ8UmVmUHRyPFNlY3VyaXR5T3JpZ2luPj4gTWVkaWFQbGF5ZXI6Om9yaWdpbnNJbk1l
ZGlhQ2FjaGUoY29uc3QgU3RyaW5nJiBwYXRoKQogewogICAgIEhhc2hTZXQ8UmVmUHRyPFNlY3Vy
aXR5T3JpZ2luPj4gb3JpZ2luczsKLSAgICBmb3IgKGF1dG8mIGVuZ2luZSA6IGluc3RhbGxlZE1l
ZGlhRW5naW5lcygpKSB7Ci0gICAgICAgIGlmICghZW5naW5lLm9yaWdpbnNJbk1lZGlhQ2FjaGUp
Ci0gICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgYWRkVG9IYXNoKG9yaWdpbnMsIGVuZ2lu
ZS5vcmlnaW5zSW5NZWRpYUNhY2hlKHBhdGgpKTsKLSAgICB9CisgICAgZm9yIChhdXRvJiBlbmdp
bmUgOiBpbnN0YWxsZWRNZWRpYUVuZ2luZXMoKSkKKyAgICAgICAgYWRkVG9IYXNoKG9yaWdpbnMs
IGVuZ2luZS0+b3JpZ2luc0luTWVkaWFDYWNoZShwYXRoKSk7CisKICAgICByZXR1cm4gb3JpZ2lu
czsKIH0KIAogdm9pZCBNZWRpYVBsYXllcjo6Y2xlYXJNZWRpYUNhY2hlKGNvbnN0IFN0cmluZyYg
cGF0aCwgV2FsbFRpbWUgbW9kaWZpZWRTaW5jZSkKIHsKLSAgICBmb3IgKGF1dG8mIGVuZ2luZSA6
IGluc3RhbGxlZE1lZGlhRW5naW5lcygpKSB7Ci0gICAgICAgIGlmIChlbmdpbmUuY2xlYXJNZWRp
YUNhY2hlKQotICAgICAgICAgICAgZW5naW5lLmNsZWFyTWVkaWFDYWNoZShwYXRoLCBtb2RpZmll
ZFNpbmNlKTsKLSAgICB9CisgICAgZm9yIChhdXRvJiBlbmdpbmUgOiBpbnN0YWxsZWRNZWRpYUVu
Z2luZXMoKSkKKyAgICAgICAgZW5naW5lLT5jbGVhck1lZGlhQ2FjaGUocGF0aCwgbW9kaWZpZWRT
aW5jZSk7CiB9CiAKIHZvaWQgTWVkaWFQbGF5ZXI6OmNsZWFyTWVkaWFDYWNoZUZvck9yaWdpbnMo
Y29uc3QgU3RyaW5nJiBwYXRoLCBjb25zdCBIYXNoU2V0PFJlZlB0cjxTZWN1cml0eU9yaWdpbj4+
JiBvcmlnaW5zKQogewotICAgIGZvciAoYXV0byYgZW5naW5lIDogaW5zdGFsbGVkTWVkaWFFbmdp
bmVzKCkpIHsKLSAgICAgICAgaWYgKGVuZ2luZS5jbGVhck1lZGlhQ2FjaGVGb3JPcmlnaW5zKQot
ICAgICAgICAgICAgZW5naW5lLmNsZWFyTWVkaWFDYWNoZUZvck9yaWdpbnMocGF0aCwgb3JpZ2lu
cyk7Ci0gICAgfQorICAgIGZvciAoYXV0byYgZW5naW5lIDogaW5zdGFsbGVkTWVkaWFFbmdpbmVz
KCkpCisgICAgICAgIGVuZ2luZS0+Y2xlYXJNZWRpYUNhY2hlRm9yT3JpZ2lucyhwYXRoLCBvcmln
aW5zKTsKIH0KIAogYm9vbCBNZWRpYVBsYXllcjo6c3VwcG9ydHNLZXlTeXN0ZW0oY29uc3QgU3Ry
aW5nJiBrZXlTeXN0ZW0sIGNvbnN0IFN0cmluZyYgbWltZVR5cGUpCiB7CiAgICAgZm9yIChhdXRv
JiBlbmdpbmUgOiBpbnN0YWxsZWRNZWRpYUVuZ2luZXMoKSkgewotICAgICAgICBpZiAoZW5naW5l
LnN1cHBvcnRzS2V5U3lzdGVtICYmIGVuZ2luZS5zdXBwb3J0c0tleVN5c3RlbShrZXlTeXN0ZW0s
IG1pbWVUeXBlKSkKKyAgICAgICAgaWYgKGVuZ2luZS0+c3VwcG9ydHNLZXlTeXN0ZW0oa2V5U3lz
dGVtLCBtaW1lVHlwZSkpCiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAgICAgcmV0
dXJuIGZhbHNlOwpAQCAtMTE3Miw3ICsxMjM1LDcgQEAgdm9pZCBNZWRpYVBsYXllcjo6bmV0d29y
a1N0YXRlQ2hhbmdlZCgpCiAgICAgLy8gbGV0IHRoZSBuZXh0IGVuZ2luZSB0cnkuCiAgICAgaWYg
KG1fcHJpdmF0ZS0+bmV0d29ya1N0YXRlKCkgPj0gTWVkaWFQbGF5ZXI6Ok5ldHdvcmtTdGF0ZTo6
Rm9ybWF0RXJyb3IgJiYgbV9wcml2YXRlLT5yZWFkeVN0YXRlKCkgPCBNZWRpYVBsYXllcjo6UmVh
ZHlTdGF0ZTo6SGF2ZU1ldGFkYXRhKSB7CiAgICAgICAgIGNsaWVudCgpLm1lZGlhUGxheWVyRW5n
aW5lRmFpbGVkVG9Mb2FkKCk7Ci0gICAgICAgIGlmIChpbnN0YWxsZWRNZWRpYUVuZ2luZXMoKS5z
aXplKCkgPiAxICYmIChtX2NvbnRlbnRUeXBlLmlzRW1wdHkoKSB8fCBuZXh0QmVzdE1lZGlhRW5n
aW5lKG1fY3VycmVudE1lZGlhRW5naW5lKSkpIHsKKyAgICAgICAgaWYgKCFtX2FjdGl2ZUVuZ2lu
ZUlkZW50aWZpZXIgJiYgaW5zdGFsbGVkTWVkaWFFbmdpbmVzKCkuc2l6ZSgpID4gMSAmJiAobV9j
b250ZW50VHlwZS5pc0VtcHR5KCkgfHwgbmV4dEJlc3RNZWRpYUVuZ2luZShtX2N1cnJlbnRNZWRp
YUVuZ2luZSkpKSB7CiAgICAgICAgICAgICBtX3JlbG9hZFRpbWVyLnN0YXJ0T25lU2hvdCgwX3Mp
OwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuaAppbmRleCA4YTdiMWU5YmZkNzg3ZjUxMzA1MmI1
Njg4MzQ1OTQ0MGRmOWQxYjE3Li5lMzIxMzlhMTVkODBkZjhhMTJiZDkxOTdmYmY1NTRlYmZiYjg5
ZjAxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBs
YXllci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVy
LmgKQEAgLTY3LDYgKzY3LDcgQEAgY2xhc3MgSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZTsKIGNsYXNz
IExlZ2FjeUNETVNlc3Npb25DbGllbnQ7CiBjbGFzcyBNZWRpYVBsYXliYWNrVGFyZ2V0OwogY2xh
c3MgTWVkaWFQbGF5ZXI7CitjbGFzcyBNZWRpYVBsYXllckZhY3Rvcnk7CiBjbGFzcyBNZWRpYVBs
YXllclByaXZhdGVJbnRlcmZhY2U7CiBjbGFzcyBNZWRpYVBsYXllclJlcXVlc3RJbnN0YWxsTWlz
c2luZ1BsdWdpbnNDYWxsYmFjazsKIGNsYXNzIE1lZGlhU291cmNlUHJpdmF0ZUNsaWVudDsKQEAg
LTc2LDcgKzc3LDYgQEAgY2xhc3MgVGV4dFRyYWNrUmVwcmVzZW50YXRpb247CiAKIHN0cnVjdCBD
b29raWU7CiBzdHJ1Y3QgR3JhcGhpY3NEZXZpY2VBZGFwdGVyOwotc3RydWN0IE1lZGlhUGxheWVy
RmFjdG9yeTsKIAogc3RydWN0IE1lZGlhRW5naW5lU3VwcG9ydFBhcmFtZXRlcnMgewogICAgIENv
bnRlbnRUeXBlIHR5cGU7CkBAIC04NCw2ICs4NCw0OCBAQCBzdHJ1Y3QgTWVkaWFFbmdpbmVTdXBw
b3J0UGFyYW1ldGVycyB7CiAgICAgYm9vbCBpc01lZGlhU291cmNlIHsgZmFsc2UgfTsKICAgICBi
b29sIGlzTWVkaWFTdHJlYW0geyBmYWxzZSB9OwogICAgIFZlY3RvcjxDb250ZW50VHlwZT4gY29u
dGVudFR5cGVzUmVxdWlyaW5nSGFyZHdhcmVTdXBwb3J0OworCisjaWYgRU5BQkxFKEdQVV9QUk9D
RVNTKQorICAgIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+CisgICAgdm9pZCBlbmNvZGUoRW5jb2Rl
ciYgZW5jb2RlcikgY29uc3QKKyAgICB7CisgICAgICAgIGVuY29kZXIgPDwgdHlwZTsKKyAgICAg
ICAgZW5jb2RlciA8PCB1cmw7CisgICAgICAgIGVuY29kZXIgPDwgaXNNZWRpYVNvdXJjZTsKKyAg
ICAgICAgZW5jb2RlciA8PCBjb250ZW50VHlwZXNSZXF1aXJpbmdIYXJkd2FyZVN1cHBvcnQ7Cisg
ICAgfQorCisgICAgdGVtcGxhdGUgPGNsYXNzIERlY29kZXI+CisgICAgc3RhdGljIE9wdGlvbmFs
PE1lZGlhRW5naW5lU3VwcG9ydFBhcmFtZXRlcnM+IGRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQor
ICAgIHsKKyAgICAgICAgT3B0aW9uYWw8Q29udGVudFR5cGU+IHR5cGU7CisgICAgICAgIGRlY29k
ZXIgPj4gdHlwZTsKKyAgICAgICAgaWYgKCF0eXBlKQorICAgICAgICAgICAgcmV0dXJuIFdURjo6
bnVsbG9wdDsKKworICAgICAgICBPcHRpb25hbDxVUkw+IHVybDsKKyAgICAgICAgZGVjb2RlciA+
PiB1cmw7CisgICAgICAgIGlmICghdXJsKQorICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9w
dDsKKworICAgICAgICBPcHRpb25hbDxib29sPiBpc01lZGlhU291cmNlOworICAgICAgICBkZWNv
ZGVyID4+IGlzTWVkaWFTb3VyY2U7CisgICAgICAgIGlmICghaXNNZWRpYVNvdXJjZSkKKyAgICAg
ICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisKKyAgICAgICAgT3B0aW9uYWw8Ym9vbD4gaXNN
ZWRpYVN0cmVhbTsKKyAgICAgICAgZGVjb2RlciA+PiBpc01lZGlhU3RyZWFtOworICAgICAgICBp
ZiAoIWlzTWVkaWFTdHJlYW0pCisgICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworCisg
ICAgICAgIE9wdGlvbmFsPFZlY3RvcjxDb250ZW50VHlwZT4+IHR5cGVzUmVxdWlyaW5nSGFyZHdh
cmU7CisgICAgICAgIGRlY29kZXIgPj4gdHlwZXNSZXF1aXJpbmdIYXJkd2FyZTsKKyAgICAgICAg
aWYgKCF0eXBlc1JlcXVpcmluZ0hhcmR3YXJlKQorICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVs
bG9wdDsKKworICAgICAgICByZXR1cm4ge3sgV1RGTW92ZSgqdHlwZSksIFdURk1vdmUoKnVybCks
IFdURk1vdmUoKmlzTWVkaWFTb3VyY2UpLCBXVEZNb3ZlKCppc01lZGlhU3RyZWFtKSwgV1RGTW92
ZSgqdHlwZXNSZXF1aXJpbmdIYXJkd2FyZSkgfX07CisgICAgfQorI2VuZGlmCiB9OwogCiBzdHJ1
Y3QgVmlkZW9QbGF5YmFja1F1YWxpdHlNZXRyaWNzIHsKQEAgLTIzNSw3ICsyNzcsNyBAQCBwdWJs
aWM6CiAjZW5kaWYKIAogICAgIHZpcnR1YWwgYm9vbCBtZWRpYVBsYXllclNob3VsZERpc2FibGVT
bGVlcCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgdmlydHVhbCBjb25zdCBWZWN0b3I8
Q29udGVudFR5cGU+JiBtZWRpYUNvbnRlbnRUeXBlc1JlcXVpcmluZ0hhcmR3YXJlU3VwcG9ydCgp
IGNvbnN0OworICAgIHZpcnR1YWwgY29uc3QgVmVjdG9yPENvbnRlbnRUeXBlPiYgbWVkaWFDb250
ZW50VHlwZXNSZXF1aXJpbmdIYXJkd2FyZVN1cHBvcnQoKSBjb25zdCA9IDA7CiAgICAgdmlydHVh
bCBib29sIG1lZGlhUGxheWVyU2hvdWxkQ2hlY2tIYXJkd2FyZVN1cHBvcnQoKSBjb25zdCB7IHJl
dHVybiBmYWxzZTsgfQogCiAjaWYgIVJFTEVBU0VfTE9HX0RJU0FCTEVECkBAIC0yNDQsMTUgKzI4
NiwxOCBAQCBwdWJsaWM6CiAjZW5kaWYKIH07CiAKLWNsYXNzIE1lZGlhUGxheWVyIDogcHVibGlj
IE1lZGlhUGxheWVyRW51bXMsIHB1YmxpYyBSZWZDb3VudGVkPE1lZGlhUGxheWVyPiB7CitjbGFz
cyBXRUJDT1JFX0VYUE9SVCBNZWRpYVBsYXllciA6IHB1YmxpYyBNZWRpYVBsYXllckVudW1zLCBw
dWJsaWMgUmVmQ291bnRlZDxNZWRpYVBsYXllcj4gewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxF
KE1lZGlhUGxheWVyKTsgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgc3Rh
dGljIFJlZjxNZWRpYVBsYXllcj4gY3JlYXRlKE1lZGlhUGxheWVyQ2xpZW50Jik7CisgICAgc3Rh
dGljIFJlZjxNZWRpYVBsYXllcj4gY3JlYXRlKE1lZGlhUGxheWVyQ2xpZW50JiwgTWVkaWFQbGF5
ZXJFbnVtczo6TWVkaWFFbmdpbmVJZGVudGlmaWVyKTsKICAgICB2aXJ0dWFsIH5NZWRpYVBsYXll
cigpOwogCiAgICAgdm9pZCBpbnZhbGlkYXRlKCk7CiAKICAgICAvLyBNZWRpYSBlbmdpbmUgc3Vw
cG9ydC4KKyAgICB1c2luZyBNZWRpYVBsYXllckVudW1zOjpTdXBwb3J0c1R5cGU7CisgICAgc3Rh
dGljIGNvbnN0IE1lZGlhUGxheWVyRmFjdG9yeSogbWVkaWFFbmdpbmUoTWVkaWFQbGF5ZXJFbnVt
czo6TWVkaWFFbmdpbmVJZGVudGlmaWVyKTsKICAgICBzdGF0aWMgU3VwcG9ydHNUeXBlIHN1cHBv
cnRzVHlwZShjb25zdCBNZWRpYUVuZ2luZVN1cHBvcnRQYXJhbWV0ZXJzJik7CiAgICAgc3RhdGlj
IHZvaWQgZ2V0U3VwcG9ydGVkVHlwZXMoSGFzaFNldDxTdHJpbmcsIEFTQ0lJQ2FzZUluc2Vuc2l0
aXZlSGFzaD4mKTsKICAgICBzdGF0aWMgYm9vbCBpc0F2YWlsYWJsZSgpOwpAQCAtNTMxLDExICs1
NzYsMTEgQEAgcHVibGljOgogICAgIHN0YXRpYyB2b2lkIHJlc2V0TWVkaWFFbmdpbmVzKCk7CiAK
ICNpZiBVU0UoR1NUUkVBTUVSKQotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2ltdWxhdGVBdWRp
b0ludGVycnVwdGlvbigpOworICAgIHZvaWQgc2ltdWxhdGVBdWRpb0ludGVycnVwdGlvbigpOwog
I2VuZGlmCiAKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGJlZ2luU2ltdWxhdGVkSERDUEVycm9y
KCk7Ci0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBlbmRTaW11bGF0ZWRIRENQRXJyb3IoKTsKKyAg
ICB2b2lkIGJlZ2luU2ltdWxhdGVkSERDUEVycm9yKCk7CisgICAgdm9pZCBlbmRTaW11bGF0ZWRI
RENQRXJyb3IoKTsKIAogICAgIFN0cmluZyBsYW5ndWFnZU9mUHJpbWFyeUF1ZGlvVHJhY2soKSBj
b25zdDsKIApAQCAtNTcwLDcgKzYxNSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGFwcGxpY2F0aW9u
RGlkQmVjb21lQWN0aXZlKCk7CiAKICNpZiBVU0UoQVZGT1VOREFUSU9OKQotICAgIFdFQkNPUkVf
RVhQT1JUIEFWUGxheWVyICpvYmpDQVZGb3VuZGF0aW9uQVZQbGF5ZXIoKSBjb25zdDsKKyAgICBB
VlBsYXllciAqb2JqQ0FWRm91bmRhdGlvbkFWUGxheWVyKCkgY29uc3Q7CiAjZW5kaWYKIAogICAg
IGJvb2wgcGVyZm9ybVRhc2tBdE1lZGlhVGltZShXVEY6OkZ1bmN0aW9uPHZvaWQoKT4mJiwgTWVk
aWFUaW1lKTsKQEAgLTU5NSwxMSArNjQwLDEzIEBAIHB1YmxpYzoKIAogcHJpdmF0ZToKICAgICBN
ZWRpYVBsYXllcihNZWRpYVBsYXllckNsaWVudCYpOworICAgIE1lZGlhUGxheWVyKE1lZGlhUGxh
eWVyQ2xpZW50JiwgTWVkaWFQbGF5ZXJFbnVtczo6TWVkaWFFbmdpbmVJZGVudGlmaWVyKTsKIAog
ICAgIE1lZGlhUGxheWVyQ2xpZW50JiBjbGllbnQoKSBjb25zdCB7IHJldHVybiAqbV9jbGllbnQ7
IH0KIAotICAgIGNvbnN0IE1lZGlhUGxheWVyRmFjdG9yeSogbmV4dEJlc3RNZWRpYUVuZ2luZShj
b25zdCBNZWRpYVBsYXllckZhY3RvcnkqKSBjb25zdDsKKyAgICBjb25zdCBNZWRpYVBsYXllckZh
Y3RvcnkqIG5leHRCZXN0TWVkaWFFbmdpbmUoY29uc3QgTWVkaWFQbGF5ZXJGYWN0b3J5Kik7CiAg
ICAgdm9pZCBsb2FkV2l0aE5leHRNZWRpYUVuZ2luZShjb25zdCBNZWRpYVBsYXllckZhY3Rvcnkq
KTsKKyAgICBjb25zdCBNZWRpYVBsYXllckZhY3RvcnkqIG5leHRNZWRpYUVuZ2luZShjb25zdCBN
ZWRpYVBsYXllckZhY3RvcnkqKTsKICAgICB2b2lkIHJlbG9hZFRpbWVyRmlyZWQoKTsKIAogICAg
IE1lZGlhUGxheWVyQ2xpZW50KiBtX2NsaWVudDsKQEAgLTYwOSw2ICs2NTYsNyBAQCBwcml2YXRl
OgogICAgIFVSTCBtX3VybDsKICAgICBDb250ZW50VHlwZSBtX2NvbnRlbnRUeXBlOwogICAgIFN0
cmluZyBtX2tleVN5c3RlbTsKKyAgICBPcHRpb25hbDxNZWRpYVBsYXllckVudW1zOjpNZWRpYUVu
Z2luZUlkZW50aWZpZXI+IG1fYWN0aXZlRW5naW5lSWRlbnRpZmllcjsKICAgICBJbnRTaXplIG1f
c2l6ZTsKICAgICBQcmVsb2FkIG1fcHJlbG9hZCB7IFByZWxvYWQ6OkF1dG8gfTsKICAgICBkb3Vi
bGUgbV92b2x1bWUgeyAxIH07CkBAIC02MjgsMTYgKzY3NiwyNCBAQCBwcml2YXRlOgogI2VuZGlm
CiB9OwogCi11c2luZyBDcmVhdGVNZWRpYUVuZ2luZVBsYXllciA9IFdURjo6RnVuY3Rpb248c3Rk
Ojp1bmlxdWVfcHRyPE1lZGlhUGxheWVyUHJpdmF0ZUludGVyZmFjZT4gKE1lZGlhUGxheWVyKik+
OwotdHlwZWRlZiB2b2lkICgqTWVkaWFFbmdpbmVTdXBwb3J0ZWRUeXBlcykoSGFzaFNldDxTdHJp
bmcsIEFTQ0lJQ2FzZUluc2Vuc2l0aXZlSGFzaD4mIHR5cGVzKTsKLXR5cGVkZWYgTWVkaWFQbGF5
ZXI6OlN1cHBvcnRzVHlwZSAoKk1lZGlhRW5naW5lU3VwcG9ydHNUeXBlKShjb25zdCBNZWRpYUVu
Z2luZVN1cHBvcnRQYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzKTsKLXR5cGVkZWYgSGFzaFNldDxSZWZQ
dHI8U2VjdXJpdHlPcmlnaW4+PiAoKk1lZGlhRW5naW5lT3JpZ2luc0luTWVkaWFDYWNoZSkoY29u
c3QgU3RyaW5nJiBwYXRoKTsKLXR5cGVkZWYgdm9pZCAoKk1lZGlhRW5naW5lQ2xlYXJNZWRpYUNh
Y2hlKShjb25zdCBTdHJpbmcmIHBhdGgsIFdhbGxUaW1lIG1vZGlmaWVkU2luY2UpOwotdHlwZWRl
ZiB2b2lkICgqTWVkaWFFbmdpbmVDbGVhck1lZGlhQ2FjaGVGb3JPcmlnaW5zKShjb25zdCBTdHJp
bmcmIHBhdGgsIGNvbnN0IEhhc2hTZXQ8UmVmUHRyPFNlY3VyaXR5T3JpZ2luPj4mKTsKLXR5cGVk
ZWYgYm9vbCAoKk1lZGlhRW5naW5lU3VwcG9ydHNLZXlTeXN0ZW0pKGNvbnN0IFN0cmluZyYga2V5
U3lzdGVtLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlKTsKK2NsYXNzIE1lZGlhUGxheWVyRmFjdG9y
eSB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CitwdWJsaWM6CisgICAgTWVkaWFQbGF5
ZXJGYWN0b3J5KCkgPSBkZWZhdWx0OworICAgIHZpcnR1YWwgfk1lZGlhUGxheWVyRmFjdG9yeSgp
IHsgfQorCisgICAgdmlydHVhbCBNZWRpYVBsYXllckVudW1zOjpNZWRpYUVuZ2luZUlkZW50aWZp
ZXIgaWRlbnRpZmllcigpIGNvbnN0ICA9IDA7CisgICAgdmlydHVhbCBzdGQ6OnVuaXF1ZV9wdHI8
TWVkaWFQbGF5ZXJQcml2YXRlSW50ZXJmYWNlPiBjcmVhdGVNZWRpYUVuZ2luZVBsYXllcihNZWRp
YVBsYXllciopIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZ2V0U3VwcG9ydGVkVHlwZXMo
SGFzaFNldDxTdHJpbmcsIEFTQ0lJQ2FzZUluc2Vuc2l0aXZlSGFzaD4mKSBjb25zdCA9IDA7Cisg
ICAgdmlydHVhbCBNZWRpYVBsYXllcjo6U3VwcG9ydHNUeXBlIHN1cHBvcnRzVHlwZUFuZENvZGVj
cyhjb25zdCBNZWRpYUVuZ2luZVN1cHBvcnRQYXJhbWV0ZXJzJikgY29uc3QgPSAwOworCisgICAg
dmlydHVhbCBIYXNoU2V0PFJlZlB0cjxTZWN1cml0eU9yaWdpbj4+IG9yaWdpbnNJbk1lZGlhQ2Fj
aGUoY29uc3QgU3RyaW5nJikgY29uc3QgeyByZXR1cm4geyB9OyB9CisgICAgdmlydHVhbCB2b2lk
IGNsZWFyTWVkaWFDYWNoZShjb25zdCBTdHJpbmcmLCBXYWxsVGltZSkgY29uc3QgeyB9CisgICAg
dmlydHVhbCB2b2lkIGNsZWFyTWVkaWFDYWNoZUZvck9yaWdpbnMoY29uc3QgU3RyaW5nJiwgY29u
c3QgSGFzaFNldDxSZWZQdHI8U2VjdXJpdHlPcmlnaW4+PiYpIGNvbnN0IHsgfQorICAgIHZpcnR1
YWwgYm9vbCBzdXBwb3J0c0tleVN5c3RlbShjb25zdCBTdHJpbmcmIC8qIGtleVN5c3RlbSAqLywg
Y29uc3QgU3RyaW5nJiAvKiBtaW1lVHlwZSAqLykgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KK307
CiAKLXR5cGVkZWYgdm9pZCAoKk1lZGlhRW5naW5lUmVnaXN0cmFyKShDcmVhdGVNZWRpYUVuZ2lu
ZVBsYXllciYmLCBNZWRpYUVuZ2luZVN1cHBvcnRlZFR5cGVzLCBNZWRpYUVuZ2luZVN1cHBvcnRz
VHlwZSwKLSAgICBNZWRpYUVuZ2luZU9yaWdpbnNJbk1lZGlhQ2FjaGUsIE1lZGlhRW5naW5lQ2xl
YXJNZWRpYUNhY2hlLCBNZWRpYUVuZ2luZUNsZWFyTWVkaWFDYWNoZUZvck9yaWdpbnMsIE1lZGlh
RW5naW5lU3VwcG9ydHNLZXlTeXN0ZW0pOwordHlwZWRlZiB2b2lkICgqTWVkaWFFbmdpbmVSZWdp
c3RyYXIpKHN0ZDo6dW5pcXVlX3B0cjxNZWRpYVBsYXllckZhY3Rvcnk+KTsKIHR5cGVkZWYgdm9p
ZCAoKk1lZGlhRW5naW5lUmVnaXN0ZXIpKE1lZGlhRW5naW5lUmVnaXN0cmFyKTsKIAogY2xhc3Mg
TWVkaWFQbGF5ZXJGYWN0b3J5U3VwcG9ydCB7CkBAIC02NDUsNiArNzAxLDEzIEBAIHB1YmxpYzoK
ICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgdm9pZCBjYWxsUmVnaXN0ZXJNZWRpYUVuZ2luZShN
ZWRpYUVuZ2luZVJlZ2lzdGVyKTsKIH07CiAKK2NsYXNzIFJlbW90ZU1lZGlhUGxheWVyU3VwcG9y
dCB7CitwdWJsaWM6CisgICAgdXNpbmcgUmVnaXN0ZXJSZW1vdGVQbGF5ZXJDYWxsYmFjayA9IHN0
ZDo6ZnVuY3Rpb248dm9pZChNZWRpYUVuZ2luZVJlZ2lzdHJhciwgTWVkaWFQbGF5ZXJFbnVtczo6
TWVkaWFFbmdpbmVJZGVudGlmaWVyKT47CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIHZvaWQg
c2V0UmVnaXN0ZXJSZW1vdGVQbGF5ZXJDYWxsYmFjayhSZWdpc3RlclJlbW90ZVBsYXllckNhbGxi
YWNrJiYpOworfTsKKworCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBFTkFC
TEUoVklERU8pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9N
ZWRpYVBsYXllckVudW1zLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRp
YVBsYXllckVudW1zLmgKaW5kZXggNGIxMGYwNDgzMDg3ZTJlNjZlM2FhZDgxZWU0NDJlNmQyNDhk
ZTlkNC4uMTc4MzgzMjhiZWFiZjNhZGE5MGYxNjkwNTYzYWVlMjQ4NmEwNjRlNiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXJFbnVtcy5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyRW51bXMuaApA
QCAtODcsNiArODcsMTggQEAgcHVibGljOgogICAgICAgICBNYWtlUmVzb3VyY2VzUHVyZ2VhYmxl
LAogICAgICAgICBQdXJnZVJlc291cmNlcywKICAgICB9OworCisgICAgZW51bSBjbGFzcyBNZWRp
YUVuZ2luZUlkZW50aWZpZXIgOiB1aW50OF90IHsKKyAgICAgICAgQVZGb3VuZGF0aW9uLAorICAg
ICAgICBBVkZvdW5kYXRpb25NU0UsCisgICAgICAgIEFWRm91bmRhdGlvbk1lZGlhU3RyZWFtLAor
ICAgICAgICBBVkZvdW5kYXRpb25DRiwKKyAgICAgICAgR1N0cmVhbWVyLAorICAgICAgICBHU3Ry
ZWFtZXJNU0UsCisgICAgICAgIEhvbGVQdW5jaCwKKyAgICAgICAgTWVkaWFGb3VuZGF0aW9uLAor
ICAgICAgICBNb2NrTVNFLAorICAgIH07CiB9OwogCiBXVEY6OlN0cmluZyBjb252ZXJ0RW51bWVy
YXRpb25Ub1N0cmluZyhNZWRpYVBsYXllckVudW1zOjpSZWFkeVN0YXRlKTsKQEAgLTE0MCw3ICsx
NTIsNiBAQCB0ZW1wbGF0ZTw+IHN0cnVjdCBFbnVtVHJhaXRzPFdlYkNvcmU6Ok1lZGlhUGxheWVy
RW51bXM6Ok5ldHdvcmtTdGF0ZT4gewogICAgID47CiB9OwogCi0KIHRlbXBsYXRlPD4gc3RydWN0
IEVudW1UcmFpdHM8V2ViQ29yZTo6TWVkaWFQbGF5ZXJFbnVtczo6UmVhZHlTdGF0ZT4gewogICAg
IHVzaW5nIHZhbHVlcyA9IEVudW1WYWx1ZXM8CiAgICAgICAgIFdlYkNvcmU6Ok1lZGlhUGxheWVy
RW51bXM6OlJlYWR5U3RhdGUsCkBAIC0xOTYsNiArMjA3LDIwIEBAIHRlbXBsYXRlPD4gc3RydWN0
IEVudW1UcmFpdHM8V2ViQ29yZTo6TWVkaWFQbGF5ZXJFbnVtczo6QnVmZmVyaW5nUG9saWN5PiB7
CiAgICAgICAgIFdlYkNvcmU6Ok1lZGlhUGxheWVyRW51bXM6OkJ1ZmZlcmluZ1BvbGljeTo6TGlt
aXRSZWFkQWhlYWQsCiAgICAgICAgIFdlYkNvcmU6Ok1lZGlhUGxheWVyRW51bXM6OkJ1ZmZlcmlu
Z1BvbGljeTo6TWFrZVJlc291cmNlc1B1cmdlYWJsZSwKICAgICAgICAgV2ViQ29yZTo6TWVkaWFQ
bGF5ZXJFbnVtczo6QnVmZmVyaW5nUG9saWN5OjpQdXJnZVJlc291cmNlcworICAgICAgICA+Owor
ICAgIH07CisKK3RlbXBsYXRlPD4gc3RydWN0IEVudW1UcmFpdHM8V2ViQ29yZTo6TWVkaWFQbGF5
ZXJFbnVtczo6TWVkaWFFbmdpbmVJZGVudGlmaWVyPiB7CisgICAgdXNpbmcgdmFsdWVzID0gRW51
bVZhbHVlczwKKyAgICAgICAgV2ViQ29yZTo6TWVkaWFQbGF5ZXJFbnVtczo6TWVkaWFFbmdpbmVJ
ZGVudGlmaWVyLAorICAgICAgICBXZWJDb3JlOjpNZWRpYVBsYXllckVudW1zOjpNZWRpYUVuZ2lu
ZUlkZW50aWZpZXI6OkFWRm91bmRhdGlvbiwKKyAgICAgICAgV2ViQ29yZTo6TWVkaWFQbGF5ZXJF
bnVtczo6TWVkaWFFbmdpbmVJZGVudGlmaWVyOjpBVkZvdW5kYXRpb25NU0UsCisgICAgICAgIFdl
YkNvcmU6Ok1lZGlhUGxheWVyRW51bXM6Ok1lZGlhRW5naW5lSWRlbnRpZmllcjo6QVZGb3VuZGF0
aW9uTWVkaWFTdHJlYW0sCisgICAgICAgIFdlYkNvcmU6Ok1lZGlhUGxheWVyRW51bXM6Ok1lZGlh
RW5naW5lSWRlbnRpZmllcjo6R1N0cmVhbWVyLAorICAgICAgICBXZWJDb3JlOjpNZWRpYVBsYXll
ckVudW1zOjpNZWRpYUVuZ2luZUlkZW50aWZpZXI6OkdTdHJlYW1lck1TRSwKKyAgICAgICAgV2Vi
Q29yZTo6TWVkaWFQbGF5ZXJFbnVtczo6TWVkaWFFbmdpbmVJZGVudGlmaWVyOjpIb2xlUHVuY2gs
CisgICAgICAgIFdlYkNvcmU6Ok1lZGlhUGxheWVyRW51bXM6Ok1lZGlhRW5naW5lSWRlbnRpZmll
cjo6TWVkaWFGb3VuZGF0aW9uLAorICAgICAgICBXZWJDb3JlOjpNZWRpYVBsYXllckVudW1zOjpN
ZWRpYUVuZ2luZUlkZW50aWZpZXI6Ok1vY2tNU0UKICAgICA+OwogfTsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGxhdGZvcm1UaW1lUmFuZ2VzLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9QbGF0Zm9ybVRpbWVSYW5nZXMuaAppbmRl
eCAxODg4Njk1Yzc2ZTkyNmZiM2VkNGIzYTUxMGM5YmIwMzNiNDM3MzMwLi5kYzU2ZGI2YzdlOGMz
NDY0Yzk1MzE0YTk4YWY0YWMzNTllMzI3M2QwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9QbGF0Zm9ybVRpbWVSYW5nZXMuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9QbGF0Zm9ybVRpbWVSYW5nZXMuaApAQCAtMzYsMTUgKzM2LDE1
IEBAIGNsYXNzIFByaW50U3RyZWFtOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIFBs
YXRmb3JtVGltZVJhbmdlcyB7CitjbGFzcyBXRUJDT1JFX0VYUE9SVCBQbGF0Zm9ybVRpbWVSYW5n
ZXMgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIGV4cGxpY2l0
IFBsYXRmb3JtVGltZVJhbmdlcygpIHsgfQogICAgIFBsYXRmb3JtVGltZVJhbmdlcyhjb25zdCBN
ZWRpYVRpbWUmIHN0YXJ0LCBjb25zdCBNZWRpYVRpbWUmIGVuZCk7CiAKLSAgICBXRUJDT1JFX0VY
UE9SVCBNZWRpYVRpbWUgc3RhcnQodW5zaWduZWQgaW5kZXgpIGNvbnN0OworICAgIE1lZGlhVGlt
ZSBzdGFydCh1bnNpZ25lZCBpbmRleCkgY29uc3Q7CiAgICAgTWVkaWFUaW1lIHN0YXJ0KHVuc2ln
bmVkIGluZGV4LCBib29sJiB2YWxpZCkgY29uc3Q7Ci0gICAgV0VCQ09SRV9FWFBPUlQgTWVkaWFU
aW1lIGVuZCh1bnNpZ25lZCBpbmRleCkgY29uc3Q7CisgICAgTWVkaWFUaW1lIGVuZCh1bnNpZ25l
ZCBpbmRleCkgY29uc3Q7CiAgICAgTWVkaWFUaW1lIGVuZCh1bnNpZ25lZCBpbmRleCwgYm9vbCYg
dmFsaWQpIGNvbnN0OwogICAgIE1lZGlhVGltZSBkdXJhdGlvbih1bnNpZ25lZCBpbmRleCkgY29u
c3Q7CiAgICAgTWVkaWFUaW1lIG1heGltdW1CdWZmZXJlZFRpbWUoKSBjb25zdDsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9jZi9NZWRp
YVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25DRi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9hdmZvdW5kYXRpb24vY2YvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9u
Q0YuY3BwCmluZGV4IDg1NjJlODQ1ZDFmY2EwYzM5ZTZjY2ZlMWE3MTNjNWRhYjU4MTU3MjkuLmRh
MmJlNDk4ZmJjMWE4ODE0M2FkNGFhNmFjZjk3NTk0MTQ1MTI5YWIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9jZi9NZWRpYVBsYXllclBy
aXZhdGVBVkZvdW5kYXRpb25DRi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvYXZmb3VuZGF0aW9uL2NmL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbkNGLmNw
cApAQCAtMzQyLDExICszNDIsMzcgQEAgc3RhdGljIGRpc3BhdGNoX3F1ZXVlX3QgZ2xvYmFsTG9h
ZGVyRGVsZWdhdGVRdWV1ZSgpCiB9CiAjZW5kaWYKIAorY2xhc3MgTWVkaWFQbGF5ZXJGYWN0b3J5
QVZGb3VuZGF0aW9uQ0YgOiBwdWJsaWMgTWVkaWFQbGF5ZXJGYWN0b3J5IHsKK3B1YmxpYzoKKyAg
ICBNZWRpYVBsYXllckVudW1zOjpNZWRpYUVuZ2luZUlkZW50aWZpZXIgaWRlbnRpZmllcigpIGNv
bnN0IGZpbmFsIHsgcmV0dXJuIE1lZGlhUGxheWVyRW51bXM6Ok1lZGlhRW5naW5lSWRlbnRpZmll
cjo6QVZGb3VuZGF0aW9uQ0Y7IH07CisKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8TWVkaWFQbGF5ZXJQ
cml2YXRlSW50ZXJmYWNlPiBjcmVhdGVNZWRpYUVuZ2luZVBsYXllcihNZWRpYVBsYXllciogcGxh
eWVyKSBjb25zdCBmaW5hbAorICAgIHsKKyAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8TWVkaWFQ
bGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uQ0Y+KHBsYXllcik7CisgICAgfQorCisgICAgdm9pZCBn
ZXRTdXBwb3J0ZWRUeXBlcyhIYXNoU2V0PFN0cmluZywgQVNDSUlDYXNlSW5zZW5zaXRpdmVIYXNo
PiYgdHlwZXMpIGNvbnN0IGZpbmFsCisgICAgeworICAgICAgICByZXR1cm4gTWVkaWFQbGF5ZXJQ
cml2YXRlQVZGb3VuZGF0aW9uQ0Y6OmdldFN1cHBvcnRlZFR5cGVzKHR5cGVzKTsKKyAgICB9CisK
KyAgICBNZWRpYVBsYXllcjo6U3VwcG9ydHNUeXBlIHN1cHBvcnRzVHlwZUFuZENvZGVjcyhjb25z
dCBNZWRpYUVuZ2luZVN1cHBvcnRQYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzKSBjb25zdCBmaW5hbAor
ICAgIHsKKyAgICAgICAgcmV0dXJuIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbkNGOjpz
dXBwb3J0c1R5cGUocGFyYW1ldGVycyk7CisgICAgfQorCisgICAgYm9vbCBzdXBwb3J0c0tleVN5
c3RlbShjb25zdCBTdHJpbmcmIGtleVN5c3RlbSwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSkgY29u
c3QgZmluYWwKKyAgICB7CisgICAgICAgIHJldHVybiBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5k
YXRpb25DRjo6c3VwcG9ydHNLZXlTeXN0ZW0oa2V5U3lzdGVtLCBtaW1lVHlwZSk7CisgICAgfQor
fTsKKwogdm9pZCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25DRjo6cmVnaXN0ZXJNZWRp
YUVuZ2luZShNZWRpYUVuZ2luZVJlZ2lzdHJhciByZWdpc3RyYXIpCiB7Ci0gICAgaWYgKGlzQXZh
aWxhYmxlKCkpCi0gICAgICAgIHJlZ2lzdHJhcihbXShNZWRpYVBsYXllciogcGxheWVyKSB7IHJl
dHVybiBtYWtlVW5pcXVlPE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbkNGPihwbGF5ZXIp
OyB9LAotICAgICAgICAgICAgZ2V0U3VwcG9ydGVkVHlwZXMsIHN1cHBvcnRzVHlwZSwgMCwgMCwg
MCwgc3VwcG9ydHNLZXlTeXN0ZW0pOworICAgIGlmICghaXNBdmFpbGFibGUoKSkKKyAgICAgICAg
cmV0dXJuOworCisgICAgcmVnaXN0cmFyKG1ha2VVbmlxdWU8TWVkaWFQbGF5ZXJGYWN0b3J5QVZG
b3VuZGF0aW9uQ0Y+KCkpOwogfQogCiBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25DRjo6
TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uQ0YoTWVkaWFQbGF5ZXIqIHBsYXllcikKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9v
YmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFW
Rm91bmRhdGlvbk9iakMuaAppbmRleCBjYWRhMjMxMWJiNmM2ODIyODliMGZhNjZiYjZkOGQ1MTI1
OTNmNjA3Li4yOGZkNjJlZDRlNmViZGNiMDkyMWNiNWI5NGI5M2JlYzAwMDVjMzQyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9N
ZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZG
b3VuZGF0aW9uT2JqQy5oCkBAIC0xNjIsNiArMTYyLDcgQEAgcHVibGljOgogCiBwcml2YXRlOgog
ICAgIC8vIGVuZ2luZSBzdXBwb3J0CisgICAgZnJpZW5kIGNsYXNzIE1lZGlhUGxheWVyRmFjdG9y
eUFWRm91bmRhdGlvbk9iakM7CiAgICAgc3RhdGljIHZvaWQgZ2V0U3VwcG9ydGVkVHlwZXMoSGFz
aFNldDxTdHJpbmcsIEFTQ0lJQ2FzZUluc2Vuc2l0aXZlSGFzaD4mIHR5cGVzKTsKICAgICBzdGF0
aWMgTWVkaWFQbGF5ZXI6OlN1cHBvcnRzVHlwZSBzdXBwb3J0c1R5cGUoY29uc3QgTWVkaWFFbmdp
bmVTdXBwb3J0UGFyYW1ldGVycyYpOwogICAgIHN0YXRpYyBib29sIHN1cHBvcnRzS2V5U3lzdGVt
KGNvbnN0IFN0cmluZyYga2V5U3lzdGVtLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpj
L01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMubW0gYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZv
dW5kYXRpb25PYmpDLm1tCmluZGV4IDcxODkyOWM2MjEyMjMxMWY2OWEzZDhkYWUwMjgyM2QzMTYx
NTJiNWIuLjRjZmM3ZjVlNWU1Yjc3ZTI1NmZkZjI3YTkxNGQyZTYxYTMyZmRkYTMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01l
ZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMubW0KKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZG
b3VuZGF0aW9uT2JqQy5tbQpAQCAtMjczLDE0ICsyNzMsNTQgQEAgc3RhdGljIGRpc3BhdGNoX3F1
ZXVlX3QgZ2xvYmFsUHVsbERlbGVnYXRlUXVldWUoKQogfQogI2VuZGlmCiAKK2NsYXNzIE1lZGlh
UGxheWVyRmFjdG9yeUFWRm91bmRhdGlvbk9iakMgOiBwdWJsaWMgTWVkaWFQbGF5ZXJGYWN0b3J5
IHsKK3B1YmxpYzoKKyAgICBNZWRpYVBsYXllckVudW1zOjpNZWRpYUVuZ2luZUlkZW50aWZpZXIg
aWRlbnRpZmllcigpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIE1lZGlhUGxheWVyRW51bXM6Ok1lZGlh
RW5naW5lSWRlbnRpZmllcjo6QVZGb3VuZGF0aW9uOyB9OworCisgICAgc3RkOjp1bmlxdWVfcHRy
PE1lZGlhUGxheWVyUHJpdmF0ZUludGVyZmFjZT4gY3JlYXRlTWVkaWFFbmdpbmVQbGF5ZXIoTWVk
aWFQbGF5ZXIqIHBsYXllcikgY29uc3QgZmluYWwKKyAgICB7CisgICAgICAgIHJldHVybiBtYWtl
VW5pcXVlPE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM+KHBsYXllcik7CisgICAg
fQorCisgICAgdm9pZCBnZXRTdXBwb3J0ZWRUeXBlcyhIYXNoU2V0PFN0cmluZywgQVNDSUlDYXNl
SW5zZW5zaXRpdmVIYXNoPiYgdHlwZXMpIGNvbnN0IGZpbmFsCisgICAgeworICAgICAgICByZXR1
cm4gTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6Z2V0U3VwcG9ydGVkVHlwZXMo
dHlwZXMpOworICAgIH0KKworICAgIE1lZGlhUGxheWVyOjpTdXBwb3J0c1R5cGUgc3VwcG9ydHNU
eXBlQW5kQ29kZWNzKGNvbnN0IE1lZGlhRW5naW5lU3VwcG9ydFBhcmFtZXRlcnMmIHBhcmFtZXRl
cnMpIGNvbnN0IGZpbmFsCisgICAgeworICAgICAgICByZXR1cm4gTWVkaWFQbGF5ZXJQcml2YXRl
QVZGb3VuZGF0aW9uT2JqQzo6c3VwcG9ydHNUeXBlKHBhcmFtZXRlcnMpOworICAgIH0KKworICAg
IEhhc2hTZXQ8UmVmUHRyPFNlY3VyaXR5T3JpZ2luPj4gb3JpZ2luc0luTWVkaWFDYWNoZShjb25z
dCBTdHJpbmcmIHBhdGgpIGNvbnN0IGZpbmFsCisgICAgeworICAgICAgICByZXR1cm4gTWVkaWFQ
bGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6b3JpZ2luc0luTWVkaWFDYWNoZShwYXRoKTsK
KyAgICB9CisKKyAgICB2b2lkIGNsZWFyTWVkaWFDYWNoZShjb25zdCBTdHJpbmcmIHBhdGgsIFdh
bGxUaW1lIG1vZGlmaWVkU2luY2UpIGNvbnN0IGZpbmFsCisgICAgeworICAgICAgICByZXR1cm4g
TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6Y2xlYXJNZWRpYUNhY2hlKHBhdGgs
IG1vZGlmaWVkU2luY2UpOworICAgIH0KKworICAgIHZvaWQgY2xlYXJNZWRpYUNhY2hlRm9yT3Jp
Z2lucyhjb25zdCBTdHJpbmcmIHBhdGgsIGNvbnN0IEhhc2hTZXQ8UmVmUHRyPFNlY3VyaXR5T3Jp
Z2luPj4mIG9yaWdpbnMpIGNvbnN0IGZpbmFsCisgICAgeworICAgICAgICByZXR1cm4gTWVkaWFQ
bGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6Y2xlYXJNZWRpYUNhY2hlRm9yT3JpZ2lucyhw
YXRoLCBvcmlnaW5zKTsKKyAgICB9CisKKyAgICBib29sIHN1cHBvcnRzS2V5U3lzdGVtKGNvbnN0
IFN0cmluZyYga2V5U3lzdGVtLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlKSBjb25zdCBmaW5hbAor
ICAgIHsKKyAgICAgICAgcmV0dXJuIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6
OnN1cHBvcnRzS2V5U3lzdGVtKGtleVN5c3RlbSwgbWltZVR5cGUpOworICAgIH0KK307CisKIHZv
aWQgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6cmVnaXN0ZXJNZWRpYUVuZ2lu
ZShNZWRpYUVuZ2luZVJlZ2lzdHJhciByZWdpc3RyYXIpCiB7CiAgICAgaWYgKCFpc0F2YWlsYWJs
ZSgpKQogICAgICAgICByZXR1cm47CiAKLSAgICByZWdpc3RyYXIoW10oTWVkaWFQbGF5ZXIqIHBs
YXllcikgeyByZXR1cm4gbWFrZVVuaXF1ZTxNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25P
YmpDPihwbGF5ZXIpOyB9LAotICAgICAgICAgICAgZ2V0U3VwcG9ydGVkVHlwZXMsIHN1cHBvcnRz
VHlwZSwgb3JpZ2luc0luTWVkaWFDYWNoZSwgY2xlYXJNZWRpYUNhY2hlLCBjbGVhck1lZGlhQ2Fj
aGVGb3JPcmlnaW5zLCBzdXBwb3J0c0tleVN5c3RlbSk7CiAgICAgQVNTRVJUKEFWQXNzZXRNSU1F
VHlwZUNhY2hlOjpzaW5nbGV0b24oKS5pc0F2YWlsYWJsZSgpKTsKKworICAgIHJlZ2lzdHJhciht
YWtlVW5pcXVlPE1lZGlhUGxheWVyRmFjdG9yeUFWRm91bmRhdGlvbk9iakM+KCkpOwogfQogCiBz
dGF0aWMgQVZBc3NldENhY2hlICphc3NldENhY2hlRm9yUGF0aChjb25zdCBTdHJpbmcmIHBhdGgp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRp
b24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMubW0gYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclBy
aXZhdGVNZWRpYVNvdXJjZUFWRk9iakMubW0KaW5kZXggZGZmM2UyNDUyYmY1YWUyNWFjNDYzMDVi
MTAzOWZlMjg3M2M5OGI1Zi4uZWY2OTI2OGJjNTNmYjA5MjRlYzgxMGFjMjFlZTRiYTdjMTQyNmZh
OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0
aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDLm1tCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxh
eWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQy5tbQpAQCAtMTk2LDE0ICsxOTYsMzQgQEAgTWVk
aWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDOjp+TWVkaWFQbGF5ZXJQcml2YXRlTWVk
aWFTb3VyY2VBVkZPYmpDKCkKICNwcmFnbWEgbWFyayAtCiAjcHJhZ21hIG1hcmsgTWVkaWFQbGF5
ZXIgRmFjdG9yeSBNZXRob2RzCiAKK2NsYXNzIE1lZGlhUGxheWVyRmFjdG9yeU1lZGlhU291cmNl
QVZGT2JqQyA6IHB1YmxpYyBNZWRpYVBsYXllckZhY3RvcnkgeworcHVibGljOgorICAgIE1lZGlh
UGxheWVyRW51bXM6Ok1lZGlhRW5naW5lSWRlbnRpZmllciBpZGVudGlmaWVyKCkgY29uc3QgZmlu
YWwgeyByZXR1cm4gTWVkaWFQbGF5ZXJFbnVtczo6TWVkaWFFbmdpbmVJZGVudGlmaWVyOjpBVkZv
dW5kYXRpb25NU0U7IH07CisKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8TWVkaWFQbGF5ZXJQcml2YXRl
SW50ZXJmYWNlPiBjcmVhdGVNZWRpYUVuZ2luZVBsYXllcihNZWRpYVBsYXllciogcGxheWVyKSBj
b25zdCBmaW5hbAorICAgIHsKKyAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8TWVkaWFQbGF5ZXJQ
cml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDPihwbGF5ZXIpOyAgICAgICAgCisgICAgfQorCisgICAg
dm9pZCBnZXRTdXBwb3J0ZWRUeXBlcyhIYXNoU2V0PFN0cmluZywgQVNDSUlDYXNlSW5zZW5zaXRp
dmVIYXNoPiYgdHlwZXMpIGNvbnN0IGZpbmFsCisgICAgeworICAgICAgICByZXR1cm4gTWVkaWFQ
bGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDOjpnZXRTdXBwb3J0ZWRUeXBlcyh0eXBlcyk7
CisgICAgfQorCisgICAgTWVkaWFQbGF5ZXI6OlN1cHBvcnRzVHlwZSBzdXBwb3J0c1R5cGVBbmRD
b2RlY3MoY29uc3QgTWVkaWFFbmdpbmVTdXBwb3J0UGFyYW1ldGVycyYgcGFyYW1ldGVycykgY29u
c3QgZmluYWwKKyAgICB7CisgICAgICAgIHJldHVybiBNZWRpYVBsYXllclByaXZhdGVNZWRpYVNv
dXJjZUFWRk9iakM6OnN1cHBvcnRzVHlwZShwYXJhbWV0ZXJzKTsKKyAgICB9Cit9OworCiB2b2lk
IE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQzo6cmVnaXN0ZXJNZWRpYUVuZ2lu
ZShNZWRpYUVuZ2luZVJlZ2lzdHJhciByZWdpc3RyYXIpCiB7CiAgICAgaWYgKCFpc0F2YWlsYWJs
ZSgpKQogICAgICAgICByZXR1cm47CiAKLSAgICByZWdpc3RyYXIoW10oTWVkaWFQbGF5ZXIqIHBs
YXllcikgeyByZXR1cm4gbWFrZVVuaXF1ZTxNZWRpYVBsYXllclByaXZhdGVNZWRpYVNvdXJjZUFW
Rk9iakM+KHBsYXllcik7IH0sCi0gICAgICAgIGdldFN1cHBvcnRlZFR5cGVzLCBzdXBwb3J0c1R5
cGUsIDAsIDAsIDAsIDApOwogICAgIEFTU0VSVChBVkFzc2V0TUlNRVR5cGVDYWNoZTo6c2luZ2xl
dG9uKCkuaXNBdmFpbGFibGUoKSk7CisKKyAgICByZWdpc3RyYXIobWFrZVVuaXF1ZTxNZWRpYVBs
YXllckZhY3RvcnlNZWRpYVNvdXJjZUFWRk9iakM+KCkpOwogfQogCiBib29sIE1lZGlhUGxheWVy
UHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQzo6aXNBdmFpbGFibGUoKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5
ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1B
VkZPYmpDLm1tCmluZGV4IDI1MTljMTE0ZjQwODk2OWEzYzQwYmViMzg1NDM1OTA4ZjBiMjViMTcu
LjA3YmJmYWJiMGFjOTI4M2Q0NTZiMTJlMjIzNDgzY2Q3NzJlM2QwYTkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxh
eWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVNZWRpYVN0
cmVhbUFWRk9iakMubW0KQEAgLTIyMCwxMSArMjIwLDMyIEBAIE1lZGlhUGxheWVyUHJpdmF0ZU1l
ZGlhU3RyZWFtQVZGT2JqQzo6fk1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQygp
CiAjcHJhZ21hIG1hcmsgLQogI3ByYWdtYSBtYXJrIE1lZGlhUGxheWVyIEZhY3RvcnkgTWV0aG9k
cwogCitjbGFzcyBNZWRpYVBsYXllckZhY3RvcnlNZWRpYVN0cmVhbUFWRk9iakMgOiBwdWJsaWMg
TWVkaWFQbGF5ZXJGYWN0b3J5IHsKK3B1YmxpYzoKKyAgICBNZWRpYVBsYXllckVudW1zOjpNZWRp
YUVuZ2luZUlkZW50aWZpZXIgaWRlbnRpZmllcigpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIE1lZGlh
UGxheWVyRW51bXM6Ok1lZGlhRW5naW5lSWRlbnRpZmllcjo6QVZGb3VuZGF0aW9uTWVkaWFTdHJl
YW07IH07CisKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8TWVkaWFQbGF5ZXJQcml2YXRlSW50ZXJmYWNl
PiBjcmVhdGVNZWRpYUVuZ2luZVBsYXllcihNZWRpYVBsYXllciogcGxheWVyKSBjb25zdCBmaW5h
bAorICAgIHsKKyAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8TWVkaWFQbGF5ZXJQcml2YXRlTWVk
aWFTdHJlYW1BVkZPYmpDPihwbGF5ZXIpOworICAgIH0KKworICAgIHZvaWQgZ2V0U3VwcG9ydGVk
VHlwZXMoSGFzaFNldDxTdHJpbmcsIEFTQ0lJQ2FzZUluc2Vuc2l0aXZlSGFzaD4mIHR5cGVzKSBj
b25zdCBmaW5hbAorICAgIHsKKyAgICAgICAgcmV0dXJuIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlh
U3RyZWFtQVZGT2JqQzo6Z2V0U3VwcG9ydGVkVHlwZXModHlwZXMpOworICAgIH0KKworICAgIE1l
ZGlhUGxheWVyOjpTdXBwb3J0c1R5cGUgc3VwcG9ydHNUeXBlQW5kQ29kZWNzKGNvbnN0IE1lZGlh
RW5naW5lU3VwcG9ydFBhcmFtZXRlcnMmIHBhcmFtZXRlcnMpIGNvbnN0IGZpbmFsCisgICAgewor
ICAgICAgICByZXR1cm4gTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDOjpzdXBw
b3J0c1R5cGUocGFyYW1ldGVycyk7CisgICAgfQorfTsKKwogdm9pZCBNZWRpYVBsYXllclByaXZh
dGVNZWRpYVN0cmVhbUFWRk9iakM6OnJlZ2lzdGVyTWVkaWFFbmdpbmUoTWVkaWFFbmdpbmVSZWdp
c3RyYXIgcmVnaXN0cmFyKQogewotICAgIGlmIChpc0F2YWlsYWJsZSgpKQotICAgICAgICByZWdp
c3RyYXIoW10oTWVkaWFQbGF5ZXIqIHBsYXllcikgeyByZXR1cm4gbWFrZVVuaXF1ZTxNZWRpYVBs
YXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakM+KHBsYXllcik7IH0sIGdldFN1cHBvcnRlZFR5
cGVzLAotICAgICAgICAgICAgc3VwcG9ydHNUeXBlLCAwLCAwLCAwLCAwKTsKKyAgICBpZiAoIWlz
QXZhaWxhYmxlKCkpCisgICAgICAgIHJldHVybjsKKworICAgIHJlZ2lzdHJhcihtYWtlVW5pcXVl
PE1lZGlhUGxheWVyRmFjdG9yeU1lZGlhU3RyZWFtQVZGT2JqQz4oKSk7CiB9CiAKIGJvb2wgTWVk
aWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDOjppc0F2YWlsYWJsZSgpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5
ZXJQcml2YXRlR1N0cmVhbWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIuY3BwCmluZGV4IGQ0ODg1NDIy
NjdhMzdhMmIzOGQ1OWIzZDM4YmY0MjkxOWE0YTE3ODUuLjRjNTdlNTY5YjgxZDgyZGVmNjRjZjk3
ZTZmMjU3YzY4NWZiOTBmZDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZh
dGVHU3RyZWFtZXIuY3BwCkBAIC00NjQsMTQgKzQ2NCwzNyBAQCBib29sIE1lZGlhUGxheWVyUHJp
dmF0ZUdTdHJlYW1lcjo6aXNBdmFpbGFibGUoKQogICAgIHJldHVybiBmYWN0b3J5OwogfQogCitj
bGFzcyBNZWRpYVBsYXllckZhY3RvcnlHU3RyZWFtZXIgOiBwdWJsaWMgTWVkaWFQbGF5ZXJGYWN0
b3J5IHsKK3B1YmxpYzoKKyAgICBNZWRpYVBsYXllckVudW1zOjpNZWRpYUVuZ2luZUlkZW50aWZp
ZXIgaWRlbnRpZmllcigpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIE1lZGlhUGxheWVyRW51bXM6Ok1l
ZGlhRW5naW5lSWRlbnRpZmllcjo6R1N0cmVhbWVyOyB9OworCisgICAgc3RkOjp1bmlxdWVfcHRy
PE1lZGlhUGxheWVyUHJpdmF0ZUludGVyZmFjZT4gY3JlYXRlTWVkaWFFbmdpbmVQbGF5ZXIoTWVk
aWFQbGF5ZXIqIHBsYXllcikgY29uc3QgZmluYWwKKyAgICB7CisgICAgICAgIHJldHVybiBtYWtl
VW5pcXVlPE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcj4ocGxheWVyKTsKKyAgICB9CisKKyAg
ICB2b2lkIGdldFN1cHBvcnRlZFR5cGVzKEhhc2hTZXQ8U3RyaW5nLCBBU0NJSUNhc2VJbnNlbnNp
dGl2ZUhhc2g+JiB0eXBlcykgY29uc3QgZmluYWwKKyAgICB7CisgICAgICAgIHJldHVybiBNZWRp
YVBsYXllclByaXZhdGVHU3RyZWFtZXI6OmdldFN1cHBvcnRlZFR5cGVzKHR5cGVzKTsKKyAgICB9
CisKKyAgICBNZWRpYVBsYXllcjo6U3VwcG9ydHNUeXBlIHN1cHBvcnRzVHlwZUFuZENvZGVjcyhj
b25zdCBNZWRpYUVuZ2luZVN1cHBvcnRQYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzKSBjb25zdCBmaW5h
bAorICAgIHsKKyAgICAgICAgcmV0dXJuIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6c3Vw
cG9ydHNUeXBlKHBhcmFtZXRlcnMpOworICAgIH0KKworICAgIGJvb2wgc3VwcG9ydHNLZXlTeXN0
ZW0oY29uc3QgU3RyaW5nJiBrZXlTeXN0ZW0sIGNvbnN0IFN0cmluZyYgbWltZVR5cGUpIGNvbnN0
IGZpbmFsCisgICAgeworICAgICAgICByZXR1cm4gTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVy
OjpzdXBwb3J0c0tleVN5c3RlbShrZXlTeXN0ZW0sIG1pbWVUeXBlKTsKKyAgICB9Cit9OworCiB2
b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6cmVnaXN0ZXJNZWRpYUVuZ2luZShNZWRp
YUVuZ2luZVJlZ2lzdHJhciByZWdpc3RyYXIpCiB7CiAgICAgaW5pdGlhbGl6ZURlYnVnQ2F0ZWdv
cnkoKTsKIAotICAgIGlmIChpc0F2YWlsYWJsZSgpKSB7Ci0gICAgICAgIHJlZ2lzdHJhcihbXShN
ZWRpYVBsYXllciogcGxheWVyKSB7IHJldHVybiBtYWtlVW5pcXVlPE1lZGlhUGxheWVyUHJpdmF0
ZUdTdHJlYW1lcj4ocGxheWVyKTsgfSwKLSAgICAgICAgICAgIGdldFN1cHBvcnRlZFR5cGVzLCBz
dXBwb3J0c1R5cGUsIG51bGxwdHIsIG51bGxwdHIsIG51bGxwdHIsIHN1cHBvcnRzS2V5U3lzdGVt
KTsKLSAgICB9CisgICAgaWYgKGlzQXZhaWxhYmxlKCkpCisgICAgICAgIHJlZ2lzdHJhcihtYWtl
VW5pcXVlPE1lZGlhUGxheWVyRmFjdG9yeUdTdHJlYW1lcj4oKSk7CiB9CiAKIHZvaWQgTWVkaWFQ
bGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpsb2FkRnVsbChjb25zdCBTdHJpbmcmIHVybFN0cmluZywg
Y29uc3QgU3RyaW5nJiBwaXBlbGluZU5hbWUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQ
cml2YXRlR1N0cmVhbWVyLmgKaW5kZXggZjljNDdhMWY2MDEyNGI5OGJmY2NiYWUxYzczYTRhMDQ1
MTg1MzhkMS4uODUxNjVkMWJmMTI5Y2VjZTFhMTI2ZDFjMzA0ZDNmYzk2MmU3MjUzOCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxh
eWVyUHJpdmF0ZUdTdHJlYW1lci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIuaApAQCAtMzk0LDYgKzM5
NCw3IEBAIHByaXZhdGU6CiAgICAgR3N0RWxlbWVudCogY3JlYXRlQXVkaW9TaW5rKCk7CiAgICAg
R3N0RWxlbWVudCogYXVkaW9TaW5rKCkgY29uc3Q7CiAKKyAgICBmcmllbmQgY2xhc3MgTWVkaWFQ
bGF5ZXJGYWN0b3J5R1N0cmVhbWVyOwogICAgIHN0YXRpYyB2b2lkIGdldFN1cHBvcnRlZFR5cGVz
KEhhc2hTZXQ8U3RyaW5nLCBBU0NJSUNhc2VJbnNlbnNpdGl2ZUhhc2g+Jik7CiAgICAgc3RhdGlj
IE1lZGlhUGxheWVyOjpTdXBwb3J0c1R5cGUgc3VwcG9ydHNUeXBlKGNvbnN0IE1lZGlhRW5naW5l
U3VwcG9ydFBhcmFtZXRlcnMmKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL21zZS9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJNU0Uu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL21zZS9NZWRp
YVBsYXllclByaXZhdGVHU3RyZWFtZXJNU0UuY3BwCmluZGV4IDgyMDE1NWU1NGQ4ODdlNTE2N2Ez
NDBhZGQzYzRiMzFkNDk2ZTU2YWIuLmM5MGIyMTAxZmRkMDQ2NmQ5NjEwMzcwMGY1ZTdlMDY2Y2Jj
NGY4YjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJl
YW1lci9tc2UvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyTVNFLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvbXNlL01lZGlhUGxheWVyUHJpdmF0
ZUdTdHJlYW1lck1TRS5jcHAKQEAgLTcyLDE0ICs3MiwzNyBAQCBHU1RfREVCVUdfQ0FURUdPUlko
d2Via2l0X21zZV9kZWJ1Zyk7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorY2xhc3MgTWVkaWFQ
bGF5ZXJGYWN0b3J5R1N0cmVhbWVyTVNFIDogcHVibGljIE1lZGlhUGxheWVyRmFjdG9yeSB7Citw
dWJsaWM6CisgICAgTWVkaWFQbGF5ZXJFbnVtczo6TWVkaWFFbmdpbmVJZGVudGlmaWVyIGlkZW50
aWZpZXIoKSBjb25zdCBmaW5hbCB7IHJldHVybiBNZWRpYVBsYXllckVudW1zOjpNZWRpYUVuZ2lu
ZUlkZW50aWZpZXI6OkdTdHJlYW1lck1TRTsgfTsKKworICAgIHN0ZDo6dW5pcXVlX3B0cjxNZWRp
YVBsYXllclByaXZhdGVJbnRlcmZhY2U+IGNyZWF0ZU1lZGlhRW5naW5lUGxheWVyKE1lZGlhUGxh
eWVyKiBwbGF5ZXIpIGNvbnN0IGZpbmFsCisgICAgeworICAgICAgICByZXR1cm4gbWFrZVVuaXF1
ZTxNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJNU0U+KHBsYXllcik7CisgICAgfQorCisgICAg
dm9pZCBnZXRTdXBwb3J0ZWRUeXBlcyhIYXNoU2V0PFN0cmluZywgQVNDSUlDYXNlSW5zZW5zaXRp
dmVIYXNoPiYgdHlwZXMpIGNvbnN0IGZpbmFsCisgICAgeworICAgICAgICByZXR1cm4gTWVkaWFQ
bGF5ZXJQcml2YXRlR1N0cmVhbWVyTVNFOjpnZXRTdXBwb3J0ZWRUeXBlcyh0eXBlcyk7CisgICAg
fQorCisgICAgTWVkaWFQbGF5ZXI6OlN1cHBvcnRzVHlwZSBzdXBwb3J0c1R5cGVBbmRDb2RlY3Mo
Y29uc3QgTWVkaWFFbmdpbmVTdXBwb3J0UGFyYW1ldGVycyYgcGFyYW1ldGVycykgY29uc3QgZmlu
YWwKKyAgICB7CisgICAgICAgIHJldHVybiBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJNU0U6
OnN1cHBvcnRzVHlwZShwYXJhbWV0ZXJzKTsKKyAgICB9CisKKyAgICBib29sIHN1cHBvcnRzS2V5
U3lzdGVtKGNvbnN0IFN0cmluZyYga2V5U3lzdGVtLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlKSBj
b25zdCBmaW5hbAorICAgIHsKKyAgICAgICAgcmV0dXJuIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJl
YW1lck1TRTo6c3VwcG9ydHNLZXlTeXN0ZW0oa2V5U3lzdGVtLCBtaW1lVHlwZSk7CisgICAgfQor
fTsKKwogdm9pZCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJNU0U6OnJlZ2lzdGVyTWVkaWFF
bmdpbmUoTWVkaWFFbmdpbmVSZWdpc3RyYXIgcmVnaXN0cmFyKQogewogICAgIGluaXRpYWxpemVH
U3RyZWFtZXJBbmRSZWdpc3RlcldlYktpdEVsZW1lbnRzKCk7CiAgICAgR1NUX0RFQlVHX0NBVEVH
T1JZX0lOSVQod2Via2l0X21zZV9kZWJ1ZywgIndlYmtpdG1zZSIsIDAsICJXZWJLaXQgTVNFIG1l
ZGlhIHBsYXllciIpOwotICAgIGlmIChpc0F2YWlsYWJsZSgpKSB7Ci0gICAgICAgIHJlZ2lzdHJh
cihbXShNZWRpYVBsYXllciogcGxheWVyKSB7IHJldHVybiBtYWtlVW5pcXVlPE1lZGlhUGxheWVy
UHJpdmF0ZUdTdHJlYW1lck1TRT4ocGxheWVyKTsgfSwKLSAgICAgICAgICAgIGdldFN1cHBvcnRl
ZFR5cGVzLCBzdXBwb3J0c1R5cGUsIG51bGxwdHIsIG51bGxwdHIsIG51bGxwdHIsIHN1cHBvcnRz
S2V5U3lzdGVtKTsKLSAgICB9CisgICAgaWYgKGlzQXZhaWxhYmxlKCkpCisgICAgICAgIHJlZ2lz
dHJhcihtYWtlVW5pcXVlPE1lZGlhUGxheWVyRmFjdG9yeUdTdHJlYW1lck1TRT4oKSk7CiB9CiAK
IE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lck1TRTo6TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVh
bWVyTVNFKE1lZGlhUGxheWVyKiBwbGF5ZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvbXNlL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1l
ck1TRS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL21zZS9N
ZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJNU0UuaAppbmRleCA5YjMzMzA1ZjdmMTE2ZGFjOTFj
NjQxYzQ4NDU5M2JlN2E4MzA3MzVmLi41ZDEwMTNmY2JlZjA1NzkzNDgwYmIzOGVkZWZlNGI2NGYw
YWNmNDJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3Ry
ZWFtZXIvbXNlL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lck1TRS5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9tc2UvTWVkaWFQbGF5ZXJQcml2YXRl
R1N0cmVhbWVyTVNFLmgKQEAgLTg1LDYgKzg1LDcgQEAgcHVibGljOgogICAgIHZvaWQgdW5ibG9j
a0R1cmF0aW9uQ2hhbmdlcygpOwogCiBwcml2YXRlOgorICAgIGZyaWVuZCBjbGFzcyBNZWRpYVBs
YXllckZhY3RvcnlHU3RyZWFtZXJNU0U7CiAgICAgc3RhdGljIHZvaWQgZ2V0U3VwcG9ydGVkVHlw
ZXMoSGFzaFNldDxTdHJpbmcsIEFTQ0lJQ2FzZUluc2Vuc2l0aXZlSGFzaD4mKTsKICAgICBzdGF0
aWMgTWVkaWFQbGF5ZXI6OlN1cHBvcnRzVHlwZSBzdXBwb3J0c1R5cGUoY29uc3QgTWVkaWFFbmdp
bmVTdXBwb3J0UGFyYW1ldGVycyYpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9ob2xlcHVuY2gvTWVkaWFQbGF5ZXJQcml2YXRlSG9sZVB1bmNoLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2hvbGVwdW5jaC9NZWRpYVBsYXllclBy
aXZhdGVIb2xlUHVuY2guY3BwCmluZGV4IGI4YzRlMDFmYWRmNDEzYWRkYzcxNTRlMWVhZjFmNWJi
MDU1MzZhMGMuLjA2MmNhYjJhYTJiZTViNTM0MWJlYTY5MzQxZWU1ZTViMWI4ODdlNzQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2hvbGVwdW5jaC9NZWRpYVBs
YXllclByaXZhdGVIb2xlUHVuY2guY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2hvbGVwdW5jaC9NZWRpYVBsYXllclByaXZhdGVIb2xlUHVuY2guY3BwCkBAIC0xMzks
MTAgKzEzOSwyOSBAQCBNZWRpYVBsYXllcjo6U3VwcG9ydHNUeXBlIE1lZGlhUGxheWVyUHJpdmF0
ZUhvbGVQdW5jaDo6c3VwcG9ydHNUeXBlKGNvbnN0IE1lZGlhRQogICAgIHJldHVybiBNZWRpYVBs
YXllcjo6U3VwcG9ydHNUeXBlOjpJc05vdFN1cHBvcnRlZDsKIH0KIAorY2xhc3MgTWVkaWFQbGF5
ZXJGYWN0b3J5SG9sZVB1bmNoIDogcHVibGljIE1lZGlhUGxheWVyRmFjdG9yeSB7CitwdWJsaWM6
CisgICAgTWVkaWFQbGF5ZXJFbnVtczo6TWVkaWFFbmdpbmVJZGVudGlmaWVyIGlkZW50aWZpZXIo
KSBjb25zdCBmaW5hbCB7IHJldHVybiBNZWRpYVBsYXllckVudW1zOjpNZWRpYUVuZ2luZUlkZW50
aWZpZXI6OkhvbGVQdW5jaDsgfTsKKworICAgIHN0ZDo6dW5pcXVlX3B0cjxNZWRpYVBsYXllclBy
aXZhdGVJbnRlcmZhY2U+IGNyZWF0ZU1lZGlhRW5naW5lUGxheWVyKE1lZGlhUGxheWVyKiBwbGF5
ZXIpIGNvbnN0IGZpbmFsCisgICAgeworICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxNZWRpYVBs
YXllclByaXZhdGVIb2xlUHVuY2g+KHBsYXllcik7CisgICAgfQorCisgICAgdm9pZCBnZXRTdXBw
b3J0ZWRUeXBlcyhIYXNoU2V0PFN0cmluZywgQVNDSUlDYXNlSW5zZW5zaXRpdmVIYXNoPiYgdHlw
ZXMpIGNvbnN0IGZpbmFsCisgICAgeworICAgICAgICByZXR1cm4gTWVkaWFQbGF5ZXJQcml2YXRl
SG9sZVB1bmNoOjpnZXRTdXBwb3J0ZWRUeXBlcyh0eXBlcyk7CisgICAgfQorCisgICAgTWVkaWFQ
bGF5ZXI6OlN1cHBvcnRzVHlwZSBzdXBwb3J0c1R5cGVBbmRDb2RlY3MoY29uc3QgTWVkaWFFbmdp
bmVTdXBwb3J0UGFyYW1ldGVycyYgcGFyYW1ldGVycykgY29uc3QgZmluYWwKKyAgICB7CisgICAg
ICAgIHJldHVybiBNZWRpYVBsYXllclByaXZhdGVIb2xlUHVuY2g6OnN1cHBvcnRzVHlwZShwYXJh
bWV0ZXJzKTsKKyAgICB9Cit9OworCiB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUhvbGVQdW5jaDo6
cmVnaXN0ZXJNZWRpYUVuZ2luZShNZWRpYUVuZ2luZVJlZ2lzdHJhciByZWdpc3RyYXIpCiB7Ci0g
ICAgcmVnaXN0cmFyKFtdKE1lZGlhUGxheWVyKiBwbGF5ZXIpIHsgcmV0dXJuIG1ha2VVbmlxdWU8
TWVkaWFQbGF5ZXJQcml2YXRlSG9sZVB1bmNoPihwbGF5ZXIpOyB9LAotICAgICAgICBnZXRTdXBw
b3J0ZWRUeXBlcywgc3VwcG9ydHNUeXBlLCBudWxscHRyLCBudWxscHRyLCBudWxscHRyLCBudWxs
cHRyKTsKKyAgICByZWdpc3RyYXIobWFrZVVuaXF1ZTxNZWRpYVBsYXllckZhY3RvcnlIb2xlUHVu
Y2g+KCkpOwogfQogCiB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUhvbGVQdW5jaDo6bm90aWZ5UmVh
ZHlTdGF0ZSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9o
b2xlcHVuY2gvTWVkaWFQbGF5ZXJQcml2YXRlSG9sZVB1bmNoLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9ob2xlcHVuY2gvTWVkaWFQbGF5ZXJQcml2YXRlSG9sZVB1bmNoLmgK
aW5kZXggOWExMDg3ZDMyYjI1YjNjMzBkY2RkYmViNDAwOGNhMDUwMDk1N2Y1YS4uM2IzNGJmYTky
YWJiZjQ4MWExYjU0MjJjYjU1YWY2NTVlNjM2YmEwZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvaG9sZXB1bmNoL01lZGlhUGxheWVyUHJpdmF0ZUhvbGVQdW5j
aC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2hvbGVwdW5jaC9NZWRp
YVBsYXllclByaXZhdGVIb2xlUHVuY2guaApAQCAtOTgsNiArOTgsNyBAQCBwdWJsaWM6CiAjZW5k
aWYKIAogcHJpdmF0ZToKKyAgICBmcmllbmQgY2xhc3MgTWVkaWFQbGF5ZXJGYWN0b3J5SG9sZVB1
bmNoOwogICAgIHN0YXRpYyB2b2lkIGdldFN1cHBvcnRlZFR5cGVzKEhhc2hTZXQ8U3RyaW5nLCBB
U0NJSUNhc2VJbnNlbnNpdGl2ZUhhc2g+Jik7CiAgICAgc3RhdGljIE1lZGlhUGxheWVyOjpTdXBw
b3J0c1R5cGUgc3VwcG9ydHNUeXBlKGNvbnN0IE1lZGlhRW5naW5lU3VwcG9ydFBhcmFtZXRlcnMm
KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL01l
ZGlhUGxheWVyUHJpdmF0ZU1lZGlhRm91bmRhdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy93aW4vTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFGb3VuZGF0aW9uLmNwcApp
bmRleCBiYmJiNDMyMmVkM2E3NWJmODFkMGJmNDc3NjJmMDUwODJjMzk0YmIwLi41OTBhYmFkZDdk
NzE1NGNjOWRiMmMzNzc2MjQzYjY1YzU0OGQ2ZDg1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFGb3VuZGF0aW9u
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vTWVkaWFQbGF5
ZXJQcml2YXRlTWVkaWFGb3VuZGF0aW9uLmNwcApAQCAtNzksMTIgKzc5LDMwIEBAIE1lZGlhUGxh
eWVyUHJpdmF0ZU1lZGlhRm91bmRhdGlvbjo6fk1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhRm91bmRh
dGlvbigpCiAgICAgZW5kU2Vzc2lvbigpOwogfQogCitjbGFzcyBNZWRpYVBsYXllckZhY3RvcnlN
ZWRpYUZvdW5kYXRpb24gOiBwdWJsaWMgTWVkaWFQbGF5ZXJGYWN0b3J5IHsKK3B1YmxpYzoKKyAg
ICBNZWRpYVBsYXllckVudW1zOjpNZWRpYUVuZ2luZUlkZW50aWZpZXIgaWRlbnRpZmllcigpIGNv
bnN0IGZpbmFsIHsgcmV0dXJuIE1lZGlhUGxheWVyRW51bXM6Ok1lZGlhRW5naW5lSWRlbnRpZmll
cjo6TWVkaWFGb3VuZGF0aW9uOyB9OworCisgICAgc3RkOjp1bmlxdWVfcHRyPE1lZGlhUGxheWVy
UHJpdmF0ZUludGVyZmFjZT4gY3JlYXRlTWVkaWFFbmdpbmVQbGF5ZXIoTWVkaWFQbGF5ZXIqIHBs
YXllcikgY29uc3QgZmluYWwKKyAgICB7CisgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPE1lZGlh
UGxheWVyUHJpdmF0ZU1lZGlhRm91bmRhdGlvbj4ocGxheWVyKTsKKyAgICB9CisKKyAgICB2b2lk
IGdldFN1cHBvcnRlZFR5cGVzKEhhc2hTZXQ8U3RyaW5nLCBBU0NJSUNhc2VJbnNlbnNpdGl2ZUhh
c2g+JiB0eXBlcykgY29uc3QgZmluYWwKKyAgICB7CisgICAgICAgIHJldHVybiBNZWRpYVBsYXll
clByaXZhdGVNZWRpYUZvdW5kYXRpb246OmdldFN1cHBvcnRlZFR5cGVzKHR5cGVzKTsKKyAgICB9
CisKKyAgICBNZWRpYVBsYXllcjo6U3VwcG9ydHNUeXBlIHN1cHBvcnRzVHlwZUFuZENvZGVjcyhj
b25zdCBNZWRpYUVuZ2luZVN1cHBvcnRQYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzKSBjb25zdCBmaW5h
bAorICAgIHsKKyAgICAgICAgcmV0dXJuIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhRm91bmRhdGlv
bjo6c3VwcG9ydHNUeXBlKHBhcmFtZXRlcnMpOworICAgIH0KK307CisKIHZvaWQgTWVkaWFQbGF5
ZXJQcml2YXRlTWVkaWFGb3VuZGF0aW9uOjpyZWdpc3Rlck1lZGlhRW5naW5lKE1lZGlhRW5naW5l
UmVnaXN0cmFyIHJlZ2lzdHJhcikKIHsKLSAgICBpZiAoaXNBdmFpbGFibGUoKSkgewotICAgICAg
ICByZWdpc3RyYXIoW10oTWVkaWFQbGF5ZXIqIHBsYXllcikgeyByZXR1cm4gbWFrZVVuaXF1ZTxN
ZWRpYVBsYXllclByaXZhdGVNZWRpYUZvdW5kYXRpb24+KHBsYXllcik7IH0sCi0gICAgICAgICAg
ICBnZXRTdXBwb3J0ZWRUeXBlcywgc3VwcG9ydHNUeXBlLCAwLCAwLCAwLCAwKTsKLSAgICB9Cisg
ICAgaWYgKGlzQXZhaWxhYmxlKCkpCisgICAgICAgIHJlZ2lzdHJhcihtYWtlVW5pcXVlPE1lZGlh
UGxheWVyRmFjdG9yeU1lZGlhRm91bmRhdGlvbj4oKSk7CiB9CiAKIGJvb2wgTWVkaWFQbGF5ZXJQ
cml2YXRlTWVkaWFGb3VuZGF0aW9uOjppc0F2YWlsYWJsZSgpIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbW9jay9tZWRpYXNvdXJjZS9Nb2NrTWVkaWFQbGF5ZXJNZWRpYVNv
dXJjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL21lZGlhc291cmNlL01vY2tN
ZWRpYVBsYXllck1lZGlhU291cmNlLmNwcAppbmRleCAwMWE2YTAwMzBmNGY0NjFkNDY3MjdiYjY5
NjAxNjVhYjliY2ZhMWM4Li40YWM2NDBiNGMwMmViYzA4OGJiOWM2Yjc5Zjc2NzA5OGNiM2ZlOWVi
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL21lZGlhc291cmNlL01v
Y2tNZWRpYVBsYXllck1lZGlhU291cmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9tb2NrL21lZGlhc291cmNlL01vY2tNZWRpYVBsYXllck1lZGlhU291cmNlLmNwcApAQCAtMzcs
MTEgKzM3LDI3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorY2xhc3MgTWVkaWFQbGF5ZXJG
YWN0b3J5TWVkaWFTb3VyY2VNb2NrIDogcHVibGljIE1lZGlhUGxheWVyRmFjdG9yeSB7CitwdWJs
aWM6CisgICAgTWVkaWFQbGF5ZXJFbnVtczo6TWVkaWFFbmdpbmVJZGVudGlmaWVyIGlkZW50aWZp
ZXIoKSBjb25zdCBmaW5hbCB7IHJldHVybiBNZWRpYVBsYXllckVudW1zOjpNZWRpYUVuZ2luZUlk
ZW50aWZpZXI6Ok1vY2tNU0U7IH07CisKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8TWVkaWFQbGF5ZXJQ
cml2YXRlSW50ZXJmYWNlPiBjcmVhdGVNZWRpYUVuZ2luZVBsYXllcihNZWRpYVBsYXllciogcGxh
eWVyKSBjb25zdCBmaW5hbCB7IHJldHVybiBtYWtlVW5pcXVlPE1vY2tNZWRpYVBsYXllck1lZGlh
U291cmNlPihwbGF5ZXIpOyB9CisKKyAgICB2b2lkIGdldFN1cHBvcnRlZFR5cGVzKEhhc2hTZXQ8
U3RyaW5nLCBBU0NJSUNhc2VJbnNlbnNpdGl2ZUhhc2g+JiB0eXBlcykgY29uc3QgZmluYWwKKyAg
ICB7CisgICAgICAgIHJldHVybiBNb2NrTWVkaWFQbGF5ZXJNZWRpYVNvdXJjZTo6Z2V0U3VwcG9y
dGVkVHlwZXModHlwZXMpOworICAgIH0KKworICAgIE1lZGlhUGxheWVyOjpTdXBwb3J0c1R5cGUg
c3VwcG9ydHNUeXBlQW5kQ29kZWNzKGNvbnN0IE1lZGlhRW5naW5lU3VwcG9ydFBhcmFtZXRlcnMm
IHBhcmFtZXRlcnMpIGNvbnN0IGZpbmFsCisgICAgeworICAgICAgICByZXR1cm4gTW9ja01lZGlh
UGxheWVyTWVkaWFTb3VyY2U6OnN1cHBvcnRzVHlwZShwYXJhbWV0ZXJzKTsKKyAgICB9Cit9Owor
CiAvLyBNZWRpYVBsYXllciBFbmlnbmUgU3VwcG9ydAogdm9pZCBNb2NrTWVkaWFQbGF5ZXJNZWRp
YVNvdXJjZTo6cmVnaXN0ZXJNZWRpYUVuZ2luZShNZWRpYUVuZ2luZVJlZ2lzdHJhciByZWdpc3Ry
YXIpCiB7Ci0gICAgcmVnaXN0cmFyKFtdIChNZWRpYVBsYXllciogcGxheWVyKSB7IHJldHVybiBt
YWtlVW5pcXVlPE1vY2tNZWRpYVBsYXllck1lZGlhU291cmNlPihwbGF5ZXIpOyB9LCBnZXRTdXBw
b3J0ZWRUeXBlcywKLSAgICAgICAgc3VwcG9ydHNUeXBlLCAwLCAwLCAwLCAwKTsKKyAgICByZWdp
c3RyYXIobWFrZVVuaXF1ZTxNZWRpYVBsYXllckZhY3RvcnlNZWRpYVNvdXJjZU1vY2s+KCkpOwog
fQogCiAvLyBGSVhNRTogV2hhdCBkb2VzIHRoZSB3b3JkICJjYWNoZSIgbWVhbiBoZXJlPwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9EZXJpdmVkU291cmNlcy1pbnB1dC54Y2ZpbGVsaXN0IGIv
U291cmNlL1dlYktpdC9EZXJpdmVkU291cmNlcy1pbnB1dC54Y2ZpbGVsaXN0CmluZGV4IDdmMDhm
MmIyZjE4NTgyZWQ1MDQwMzJkY2FjYjU0Nzg2YTE2OWFkNWYuLjNlZjFjYTg4ZmZhZWFhMjlkY2Q4
M2I3NTVjMmIzYmYyODhmMGYyYWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvRGVyaXZlZFNv
dXJjZXMtaW5wdXQueGNmaWxlbGlzdAorKysgYi9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2Vz
LWlucHV0LnhjZmlsZWxpc3QKQEAgLTE2LDYgKzE2LDcgQEAgJChKQVZBU0NSSVBUQ09SRV9QUklW
QVRFX0hFQURFUlNfRElSKS94eGQucGwKICQoUFJPSkVDVF9ESVIpL0dQVVByb2Nlc3MvR1BVQ29u
bmVjdGlvblRvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbgogJChQUk9KRUNUX0RJUikvR1BVUHJvY2Vz
cy9HUFVQcm9jZXNzLm1lc3NhZ2VzLmluCiAkKFBST0pFQ1RfRElSKS9HUFVQcm9jZXNzL21hYy9j
b20uYXBwbGUuV2ViS2l0LkdQVVByb2Nlc3Muc2IuaW4KKyQoUFJPSkVDVF9ESVIpL0dQVVByb2Nl
c3MvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHkubWVzc2FnZXMuaW4KICQoUFJP
SkVDVF9ESVIpL05ldHdvcmtQcm9jZXNzL0Nvb2tpZXMvV2ViQ29va2llTWFuYWdlci5tZXNzYWdl
cy5pbgogJChQUk9KRUNUX0RJUikvTmV0d29ya1Byb2Nlc3MvQ3VzdG9tUHJvdG9jb2xzL0xlZ2Fj
eUN1c3RvbVByb3RvY29sTWFuYWdlci5tZXNzYWdlcy5pbgogJChQUk9KRUNUX0RJUikvTmV0d29y
a1Byb2Nlc3MvSW5kZXhlZERCL1dlYklEQkNvbm5lY3Rpb25Ub0NsaWVudC5tZXNzYWdlcy5pbgpA
QCAtOTcsNiArOTgsNyBAQCAkKFBST0pFQ1RfRElSKS9XZWJQcm9jZXNzL0NhY2hlL1dlYkNhY2hl
U3RvcmFnZUNvbm5lY3Rpb24ubWVzc2FnZXMuaW4KICQoUFJPSkVDVF9ESVIpL1dlYlByb2Nlc3Mv
RGF0YWJhc2VzL0luZGV4ZWREQi9XZWJJREJDb25uZWN0aW9uVG9TZXJ2ZXIubWVzc2FnZXMuaW4K
ICQoUFJPSkVDVF9ESVIpL1dlYlByb2Nlc3MvRnVsbFNjcmVlbi9XZWJGdWxsU2NyZWVuTWFuYWdl
ci5tZXNzYWdlcy5pbgogJChQUk9KRUNUX0RJUikvV2ViUHJvY2Vzcy9HUFUvR1BVUHJvY2Vzc0Nv
bm5lY3Rpb24ubWVzc2FnZXMuaW4KKyQoUFJPSkVDVF9ESVIpL1dlYlByb2Nlc3MvR1BVL21lZGlh
L1JlbW90ZU1lZGlhUGxheWVyTWFuYWdlci5tZXNzYWdlcy5pbgogJChQUk9KRUNUX0RJUikvV2Vi
UHJvY2Vzcy9HZW9sb2NhdGlvbi9XZWJHZW9sb2NhdGlvbk1hbmFnZXIubWVzc2FnZXMuaW4KICQo
UFJPSkVDVF9ESVIpL1dlYlByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24u
bWVzc2FnZXMuaW4KICQoUFJPSkVDVF9ESVIpL1dlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJj
ZUxvYWRlci5tZXNzYWdlcy5pbgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9EZXJpdmVkU291
cmNlcy1vdXRwdXQueGNmaWxlbGlzdCBiL1NvdXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMtb3V0
cHV0LnhjZmlsZWxpc3QKaW5kZXggM2IxZTk0MTE3MDM4YmYwZDA0YTA3NTdmNWU2ZDg1ZTMzNGJk
NzVhZS4uYzhhM2I0OTVjMGNlNTU0MTI5OTIzNjgxMTMyMDBkYTJiOTQwNzkyOSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9EZXJpdmVkU291cmNlcy1vdXRwdXQueGNmaWxlbGlzdAorKysgYi9T
b3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2VzLW91dHB1dC54Y2ZpbGVsaXN0CkBAIC0xMTQsNiAr
MTE0LDEyIEBAICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQyL1Bs
dWdpblByb3h5TWVzc2FnZXNSZXBsaWVzLmgKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVk
U291cmNlcy9XZWJLaXQyL1JlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhUHJveHlNZXNzYWdlUmVj
ZWl2ZXIuY3BwCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9S
ZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYVByb3h5TWVzc2FnZXMuaAogJChCVUlMVF9QUk9EVUNU
U19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIvUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWFQ
cm94eU1lc3NhZ2VzUmVwbGllcy5oCiskKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJj
ZXMvV2ViS2l0Mi9SZW1vdGVNZWRpYVBsYXllck1hbmFnZXJNZXNzYWdlUmVjZWl2ZXIuY3BwCisk
KEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9SZW1vdGVNZWRpYVBs
YXllck1hbmFnZXJNZXNzYWdlcy5oCiskKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJj
ZXMvV2ViS2l0Mi9SZW1vdGVNZWRpYVBsYXllck1hbmFnZXJNZXNzYWdlc1JlcGxpZXMuaAorJChC
VUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIvUmVtb3RlTWVkaWFQbGF5
ZXJNYW5hZ2VyUHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwCiskKEJVSUxUX1BST0RVQ1RTX0RJUikv
RGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9SZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eU1lc3Nh
Z2VzLmgKKyQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQyL1JlbW90
ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5TWVzc2FnZXNSZXBsaWVzLmgKICQoQlVJTFRfUFJPRFVD
VFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQyL1JlbW90ZU9iamVjdFJlZ2lzdHJ5TWVzc2Fn
ZVJlY2VpdmVyLmNwcAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktp
dDIvUmVtb3RlT2JqZWN0UmVnaXN0cnlNZXNzYWdlcy5oCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikv
RGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9SZW1vdGVPYmplY3RSZWdpc3RyeU1lc3NhZ2VzUmVwbGll
cy5oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2VzLm1ha2UgYi9Tb3Vy
Y2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2VzLm1ha2UKaW5kZXggYmU1MjVlMTNjNTliYmQxNDU2ZThm
MGQ0MjNiYTY0NDFjZThiMDhkYS4uOTZmM2EyZWNlZjMxMThjZTIzZjM4NzUxZDcyZTJhYjA4M2Nm
NGFjNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9EZXJpdmVkU291cmNlcy5tYWtlCisrKyBi
L1NvdXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMubWFrZQpAQCAtMjQsNiArMjQsNyBAQCBWUEFU
SCA9IFwKICAgICAkKFdlYktpdDIpIFwKICAgICAkKFdlYktpdDIpL0dQVVByb2Nlc3MgXAogICAg
ICQoV2ViS2l0MikvR1BVUHJvY2Vzcy9tYWMgXAorICAgICQoV2ViS2l0MikvR1BVUHJvY2Vzcy9t
ZWRpYSBcCiAgICAgJChXZWJLaXQyKS9OZXR3b3JrUHJvY2VzcyBcCiAgICAgJChXZWJLaXQyKS9O
ZXR3b3JrUHJvY2Vzcy9Db29raWVzIFwKICAgICAkKFdlYktpdDIpL05ldHdvcmtQcm9jZXNzL2Nh
Y2hlIFwKQEAgLTQ5LDYgKzUwLDcgQEAgVlBBVEggPSBcCiAgICAgJChXZWJLaXQyKS9XZWJQcm9j
ZXNzL0Z1bGxTY3JlZW4gXAogICAgICQoV2ViS2l0MikvV2ViUHJvY2Vzcy9HZW9sb2NhdGlvbiBc
CiAgICAgJChXZWJLaXQyKS9XZWJQcm9jZXNzL0dQVSBcCisgICAgJChXZWJLaXQyKS9XZWJQcm9j
ZXNzL0dQVS9tZWRpYSBcCiAgICAgJChXZWJLaXQyKS9XZWJQcm9jZXNzL0ljb25EYXRhYmFzZSBc
CiAgICAgJChXZWJLaXQyKS9XZWJQcm9jZXNzL01lZGlhQ2FjaGUgXAogICAgICQoV2ViS2l0Mikv
V2ViUHJvY2Vzcy9NZWRpYVN0cmVhbSBcCkBAIC0xMzUsNiArMTM3LDggQEAgTUVTU0FHRV9SRUNF
SVZFUlMgPSBcCiAgICAgUGx1Z2luUHJvY2Vzc1Byb3h5IFwKICAgICBQbHVnaW5Qcm94eSBcCiAg
ICAgUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWFQcm94eSBcCisgICAgUmVtb3RlTWVkaWFQbGF5
ZXJNYW5hZ2VyIFwKKyAgICBSZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eSBcCiAgICAgUmVt
b3RlT2JqZWN0UmVnaXN0cnkgXAogICAgIFJlbW90ZVNjcm9sbGluZ0Nvb3JkaW5hdG9yIFwKICAg
ICBSZW1vdGVXZWJJbnNwZWN0b3JQcm94eSBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQ
VVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAgYi9Tb3VyY2UvV2ViS2l0L0dQ
VVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAKaW5kZXggYmQxMzlmZTUzMzFi
Y2NlMzZjMzM0M2IxNTIxN2QwMTFmMjUyNGMzOC4uNDdhOWFjM2NjMWZkN2VhZmVmZGU2Yjk0MDNi
MGNhZGNhMmI2OWMyZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQVUNv
bm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9H
UFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcApAQCAtMzUsNiArMzUsOCBAQAogI2luY2x1ZGUg
IkdQVVByb2Nlc3NQcm94eU1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiTG9nZ2luZy5oIgogI2luY2x1
ZGUgIlJlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhUHJveHlNZXNzYWdlcy5oIgorI2luY2x1ZGUg
IlJlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5LmgiCisjaW5jbHVkZSAiUmVtb3RlTWVkaWFQ
bGF5ZXJNYW5hZ2VyUHJveHlNZXNzYWdlcy5oIgogI2luY2x1ZGUgIlJlbW90ZVNjcm9sbGluZ0Nv
b3JkaW5hdG9yVHJhbnNhY3Rpb24uaCIKICNpbmNsdWRlICJXZWJDb3JlQXJndW1lbnRDb2RlcnMu
aCIKICNpbmNsdWRlICJXZWJFcnJvcnMuaCIKQEAgLTUyLDYgKzU0LDcgQEAgR1BVQ29ubmVjdGlv
blRvV2ViUHJvY2Vzczo6R1BVQ29ubmVjdGlvblRvV2ViUHJvY2VzcyhHUFVQcm9jZXNzJiBncHVQ
cm9jZXNzLCBXZWIKICAgICA6IG1fY29ubmVjdGlvbihJUEM6OkNvbm5lY3Rpb246OmNyZWF0ZVNl
cnZlckNvbm5lY3Rpb24oY29ubmVjdGlvbklkZW50aWZpZXIsICp0aGlzKSkKICAgICAsIG1fZ3B1
UHJvY2VzcyhncHVQcm9jZXNzKQogICAgICwgbV93ZWJQcm9jZXNzSWRlbnRpZmllcih3ZWJQcm9j
ZXNzSWRlbnRpZmllcikKKyAgICAsIG1fcmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHkobWFr
ZVVuaXF1ZTxSZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eT4oKnRoaXMpKQogewogICAgIFJF
TEVBU0VfQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKICAgICBtX2Nvbm5lY3Rpb24tPm9wZW4o
KTsKQEAgLTYxLDYgKzY0LDcgQEAgR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6fkdQVUNvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3MoKQogewogICAgIFJFTEVBU0VfQVNTRVJUKFJ1bkxvb3A6OmlzTWFp
bigpKTsKIAorICAgIG1fcmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHkgPSBudWxscHRyOwog
ICAgIG1fY29ubmVjdGlvbi0+aW52YWxpZGF0ZSgpOwogfQogCkBAIC03NCw2ICs3OCwyNiBAQCB2
b2lkIEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmRpZFJlY2VpdmVJbnZhbGlkTWVzc2FnZShJ
UEM6OkNvbm5lY3Rpb24mIGNvbm5lYwogICAgIENSQVNIKCk7CiB9CiAKK3ZvaWQgR1BVQ29ubmVj
dGlvblRvV2ViUHJvY2Vzczo6ZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiBjb25u
ZWN0aW9uLCBJUEM6OkRlY29kZXImIGRlY29kZXIpCit7CisgICAgaWYgKGRlY29kZXIubWVzc2Fn
ZVJlY2VpdmVyTmFtZSgpID09IE1lc3NhZ2VzOjpSZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94
eTo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpKSB7CisgICAgICAgIGlmIChtX3JlbW90ZU1lZGlhUGxh
eWVyTWFuYWdlclByb3h5KQorICAgICAgICAgICAgbV9yZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQ
cm94eS0+ZGlkUmVjZWl2ZU1lc3NhZ2VGcm9tV2ViUHJvY2Vzcyhjb25uZWN0aW9uLCBkZWNvZGVy
KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KK30KKwordm9pZCBHUFVDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzOjpkaWRSZWNlaXZlU3luY01lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9u
LCBJUEM6OkRlY29kZXImIGRlY29kZXIsIHN0ZDo6dW5pcXVlX3B0cjxJUEM6OkVuY29kZXI+JiBy
ZXBseUVuY29kZXIpCit7CisgICAgaWYgKGRlY29kZXIubWVzc2FnZVJlY2VpdmVyTmFtZSgpID09
IE1lc3NhZ2VzOjpSZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eTo6bWVzc2FnZVJlY2VpdmVy
TmFtZSgpKSB7CisgICAgICAgIGlmIChtX3JlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5KQor
ICAgICAgICAgICAgbV9yZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eS0+ZGlkUmVjZWl2ZVN5
bmNNZXNzYWdlRnJvbVdlYlByb2Nlc3MoY29ubmVjdGlvbiwgZGVjb2RlciwgcmVwbHlFbmNvZGVy
KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwor
fQorCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKIAogI2VuZGlmIC8vIEVOQUJMRShHUFVfUFJPQ0VT
UykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9X
ZWJQcm9jZXNzLmggYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2Vi
UHJvY2Vzcy5oCmluZGV4IGY5MGNiMjhmMjg3ZWNlMWZmZmQxNDVmZTEyNDhkYjk5NzVjZWIwMmQu
LmIyZjg3YzkxZDUxMmE5OGM4ZWYyODY0NTU1ODljNjQwYzQwYzRiMjEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgKKysrIGIv
U291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaApAQCAt
MzYsNiArMzYsNyBAQAogbmFtZXNwYWNlIFdlYktpdCB7CiAKIGNsYXNzIEdQVVByb2Nlc3M7Citj
bGFzcyBSZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eTsKIAogY2xhc3MgR1BVQ29ubmVjdGlv
blRvV2ViUHJvY2VzcwogICAgIDogcHVibGljIFJlZkNvdW50ZWQ8R1BVQ29ubmVjdGlvblRvV2Vi
UHJvY2Vzcz4KQEAgLTU4LDEwICs1OSwxMyBAQCBwcml2YXRlOgogICAgIC8vIElQQzo6Q29ubmVj
dGlvbjo6Q2xpZW50CiAgICAgdm9pZCBkaWRDbG9zZShJUEM6OkNvbm5lY3Rpb24mKSBvdmVycmlk
ZTsKICAgICB2b2lkIGRpZFJlY2VpdmVJbnZhbGlkTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJ
UEM6OlN0cmluZ1JlZmVyZW5jZSBtZXNzYWdlUmVjZWl2ZXJOYW1lLCBJUEM6OlN0cmluZ1JlZmVy
ZW5jZSBtZXNzYWdlTmFtZSkgb3ZlcnJpZGU7CisgICAgdm9pZCBkaWRSZWNlaXZlTWVzc2FnZShJ
UEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImKSBvdmVycmlkZTsKKyAgICB2b2lkIGRpZFJl
Y2VpdmVTeW5jTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImLCBzdGQ6OnVu
aXF1ZV9wdHI8SVBDOjpFbmNvZGVyPiYpIG92ZXJyaWRlOwogCiAgICAgUmVmPElQQzo6Q29ubmVj
dGlvbj4gbV9jb25uZWN0aW9uOwogICAgIFJlZjxHUFVQcm9jZXNzPiBtX2dwdVByb2Nlc3M7CiAg
ICAgY29uc3QgV2ViQ29yZTo6UHJvY2Vzc0lkZW50aWZpZXIgbV93ZWJQcm9jZXNzSWRlbnRpZmll
cjsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8UmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHk+IG1f
cmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHk7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJL
aXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRp
YVBsYXllck1hbmFnZXJQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEv
UmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHkuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjA5Yjg3NTQwODkz
YTY5ODI2MTFhNWMyNzA5YmZjYjFmZjY1ZGU3NzcKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
V2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHkuY3Bw
CkBAIC0wLDAgKzEsMjAzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2lu
Y2x1ZGUgIlJlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5LmgiCisKKyNpZiBFTkFCTEUoR1BV
X1BST0NFU1MpCisKKyNpbmNsdWRlICJHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgiCisjaW5j
bHVkZSAiUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyTWVzc2FnZXMuaCIKKyNpbmNsdWRlICJSZW1v
dGVNZWRpYVBsYXllck1hbmFnZXJQcm94eU1lc3NhZ2VzLmgiCisjaW5jbHVkZSAiV2ViQ29yZUFy
Z3VtZW50Q29kZXJzLmgiCisjaW5jbHVkZSA8V2ViQ29yZS9NZWRpYVBsYXllci5oPgorI2luY2x1
ZGUgPFdlYkNvcmUvTWVkaWFQbGF5ZXJQcml2YXRlLmg+CisjaW5jbHVkZSA8d3RmL1VuaXF1ZVJl
Zi5oPgorCisjZGVmaW5lIE1FU1NBR0VfQ0hFQ0tfQ09OVEVYVElEKGlkZW50aWZpZXIpIE1FU1NB
R0VfQ0hFQ0tfQkFTRShtX3Byb3hpZXMuaXNWYWxpZEtleShpZGVudGlmaWVyKSwgJm1fd2ViUHJv
Y2Vzc0Nvbm5lY3Rpb24uY29ubmVjdGlvbigpKQorCituYW1lc3BhY2UgV2ViS2l0IHsKK3VzaW5n
IG5hbWVzcGFjZSBXZWJDb3JlOworCisjaWYgIVJFTEVBU0VfTE9HX0RJU0FCTEVECitzdGF0aWMg
UmVmUHRyPExvZ2dlcj4mIG51bGxMb2dnZXIoKQoreworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3ll
ZDxSZWZQdHI8TG9nZ2VyPj4gbG9nZ2VyOworICAgIHJldHVybiBsb2dnZXI7Cit9CisjZW5kaWYK
KworY2xhc3MgUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHk6OlBsYXllclByb3h5CisgICAg
OiBwdWJsaWMgTWVkaWFQbGF5ZXJDbGllbnQgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVE
OworcHVibGljOgorICAgIFBsYXllclByb3h5KGNvbnN0IE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90
ZUlkZW50aWZpZXImIGlkLCBSZWY8SVBDOjpDb25uZWN0aW9uPiYmIGNvbm5lY3Rpb24sIE1lZGlh
UGxheWVyRW51bXM6Ok1lZGlhRW5naW5lSWRlbnRpZmllciBlbmdpbmVJZGVudGlmaWVyKQorICAg
ICAgICA6IG1faWQoaWQpCisgICAgICAgICwgbV9jb25uZWN0aW9uKFdURk1vdmUoY29ubmVjdGlv
bikpCisgICAgICAgICwgbV9lbmdpbmVJZGVudGlmaWVyKGVuZ2luZUlkZW50aWZpZXIpCisgICAg
eworICAgIH0KKworICAgIHZpcnR1YWwgflBsYXllclByb3h5KCkKKyAgICB7CisgICAgfQorCitw
cml2YXRlOgorCisgICAgLy8gTWVkaWFQbGF5ZXJDbGllbnQKKyAgICBjb25zdCBWZWN0b3I8V2Vi
Q29yZTo6Q29udGVudFR5cGU+JiBtZWRpYUNvbnRlbnRUeXBlc1JlcXVpcmluZ0hhcmR3YXJlU3Vw
cG9ydCgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fdHlwZXNSZXF1aXJpbmdIYXJkd2FyZVN1cHBv
cnQ7IH0KKworI2lmICFSRUxFQVNFX0xPR19ESVNBQkxFRAorICAgIGNvbnN0IExvZ2dlciYgbWVk
aWFQbGF5ZXJMb2dnZXIoKSBmaW5hbAorICAgIHsKKyAgICAgICAgaWYgKCFudWxsTG9nZ2VyKCku
Z2V0KCkpIHsKKyAgICAgICAgICAgIG51bGxMb2dnZXIoKSA9IExvZ2dlcjo6Y3JlYXRlKHRoaXMp
OworICAgICAgICAgICAgbnVsbExvZ2dlcigpLT5zZXRFbmFibGVkKHRoaXMsIGZhbHNlKTsKKyAg
ICAgICAgfQorCisgICAgICAgIHJldHVybiAqbnVsbExvZ2dlcigpLmdldCgpOworICAgIH0KKyNl
bmRpZgorCitwcm90ZWN0ZWQ6CisgICAgTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlSWRlbnRpZmll
ciBtX2lkOworICAgIFJlZjxJUEM6OkNvbm5lY3Rpb24+IG1fY29ubmVjdGlvbjsKKyAgICBzdGQ6
OnVuaXF1ZV9wdHI8TWVkaWFQbGF5ZXJQcml2YXRlSW50ZXJmYWNlPiBtX3BsYXllcjsKKyAgICBN
ZWRpYVBsYXllckVudW1zOjpNZWRpYUVuZ2luZUlkZW50aWZpZXIgbV9lbmdpbmVJZGVudGlmaWVy
OworICAgIFZlY3RvcjxXZWJDb3JlOjpDb250ZW50VHlwZT4gbV90eXBlc1JlcXVpcmluZ0hhcmR3
YXJlU3VwcG9ydDsKK307CisKK1JlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5OjpSZW1vdGVN
ZWRpYVBsYXllck1hbmFnZXJQcm94eShHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzJiBjb25uZWN0
aW9uKQorICAgIDogbV93ZWJQcm9jZXNzQ29ubmVjdGlvbihjb25uZWN0aW9uKQoreworfQorCitS
ZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eTo6flJlbW90ZU1lZGlhUGxheWVyTWFuYWdlclBy
b3h5KCkKK3sKK30KKwordm9pZCBSZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eTo6Y3JlYXRl
TWVkaWFQbGF5ZXIoY29uc3QgTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlSWRlbnRpZmllciYgaWQs
IE1lZGlhUGxheWVyRW51bXM6Ok1lZGlhRW5naW5lSWRlbnRpZmllciBlbmdpbmVJZGVudGlmaWVy
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wgc3VjY2VlZGVkKT4mJiBjb21wbGV0aW9uSGFu
ZGxlcikKK3sKKyAgICBNRVNTQUdFX0NIRUNLX0NPTlRFWFRJRChpZCk7CisKKyAgICBBU1NFUlQo
IW1fcHJveGllcy5jb250YWlucyhpZCkpOworICAgIG1fcHJveGllcy5hZGQoaWQsIG1ha2VVbmlx
dWU8UGxheWVyUHJveHk+KGlkLCBtX3dlYlByb2Nlc3NDb25uZWN0aW9uLmNvbm5lY3Rpb24oKSwg
ZW5naW5lSWRlbnRpZmllcikpOworCisgICAgY29tcGxldGlvbkhhbmRsZXIodHJ1ZSk7Cit9CisK
K3ZvaWQgUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHk6OmdldFN1cHBvcnRlZFR5cGVzKE1l
ZGlhUGxheWVyRW51bXM6Ok1lZGlhRW5naW5lSWRlbnRpZmllciBlbmdpbmVJZGVudGlmaWVyLCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKFZlY3RvcjxTdHJpbmc+JiYpPiYmIGNvbXBsZXRpb25IYW5k
bGVyKQoreworICAgIGF1dG8gZW5naW5lID0gTWVkaWFQbGF5ZXI6Om1lZGlhRW5naW5lKGVuZ2lu
ZUlkZW50aWZpZXIpOworICAgIGlmICghZW5naW5lKSB7CisgICAgICAgIFdURkxvZ0Fsd2F5cygi
RmFpbGVkIHRvIGZpbmQgbWVkaWEgZW5naW5lLiIpOworICAgICAgICBjb21wbGV0aW9uSGFuZGxl
cih7IH0pOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgSGFzaFNldDxTdHJpbmcsIEFT
Q0lJQ2FzZUluc2Vuc2l0aXZlSGFzaD4gZW5naW5lVHlwZXM7CisgICAgZW5naW5lLT5nZXRTdXBw
b3J0ZWRUeXBlcyhlbmdpbmVUeXBlcyk7CisKKyAgICBWZWN0b3I8U3RyaW5nPiByZXN1bHQ7Cisg
ICAgZm9yIChhdXRvJiB0eXBlIDogZW5naW5lVHlwZXMpCisgICAgICAgIHJlc3VsdC5hcHBlbmQo
dHlwZSk7CisKKyAgICBjb21wbGV0aW9uSGFuZGxlcihXVEZNb3ZlKHJlc3VsdCkpOworfQorCit2
b2lkIFJlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5OjpzdXBwb3J0c1R5cGUoTWVkaWFQbGF5
ZXJFbnVtczo6TWVkaWFFbmdpbmVJZGVudGlmaWVyIGVuZ2luZUlkZW50aWZpZXIsIGNvbnN0IFdl
YkNvcmU6Ok1lZGlhRW5naW5lU3VwcG9ydFBhcmFtZXRlcnMmJiBwYXJhbWV0ZXJzLCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKE1lZGlhUGxheWVyOjpTdXBwb3J0c1R5cGUpPiYmIGNvbXBsZXRpb25I
YW5kbGVyKQoreworICAgIGF1dG8gZW5naW5lID0gTWVkaWFQbGF5ZXI6Om1lZGlhRW5naW5lKGVu
Z2luZUlkZW50aWZpZXIpOworICAgIGlmICghZW5naW5lKSB7CisgICAgICAgIFdURkxvZ0Fsd2F5
cygiRmFpbGVkIHRvIGZpbmQgbWVkaWEgZW5naW5lLiIpOworICAgICAgICBjb21wbGV0aW9uSGFu
ZGxlcihNZWRpYVBsYXllcjo6U3VwcG9ydHNUeXBlOjpJc05vdFN1cHBvcnRlZCk7CisgICAgICAg
IHJldHVybjsKKyAgICB9CisKKyAgICBhdXRvIHJlc3VsdCA9IGVuZ2luZS0+c3VwcG9ydHNUeXBl
QW5kQ29kZWNzKHBhcmFtZXRlcnMpOworICAgIGNvbXBsZXRpb25IYW5kbGVyKHJlc3VsdCk7Cit9
CisKK3ZvaWQgUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHk6Om9yaWdpbnNJbk1lZGlhQ2Fj
aGUoTWVkaWFQbGF5ZXJFbnVtczo6TWVkaWFFbmdpbmVJZGVudGlmaWVyIGVuZ2luZUlkZW50aWZp
ZXIsIGNvbnN0IFN0cmluZyYmIHBhdGgsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoVmVjdG9yPFdl
YkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YT4mJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCit7Cisg
ICAgYXV0byBlbmdpbmUgPSBNZWRpYVBsYXllcjo6bWVkaWFFbmdpbmUoZW5naW5lSWRlbnRpZmll
cik7CisgICAgaWYgKCFlbmdpbmUpIHsKKyAgICAgICAgV1RGTG9nQWx3YXlzKCJGYWlsZWQgdG8g
ZmluZCBtZWRpYSBlbmdpbmUuIik7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHsgfSk7Cisg
ICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBhdXRvIG9yaWdpbnMgPSBlbmdpbmUtPm9yaWdp
bnNJbk1lZGlhQ2FjaGUocGF0aCk7CisKKyAgICBWZWN0b3I8V2ViQ29yZTo6U2VjdXJpdHlPcmln
aW5EYXRhPiByZXN1bHQ7CisgICAgZm9yIChhdXRvJiBvcmlnaW4gOiBvcmlnaW5zKQorICAgICAg
ICByZXN1bHQuYXBwZW5kKG9yaWdpbi0+ZGF0YSgpKTsKKworICAgIGNvbXBsZXRpb25IYW5kbGVy
KFdURk1vdmUocmVzdWx0KSk7Cit9CisKK3ZvaWQgUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJv
eHk6OmNsZWFyTWVkaWFDYWNoZShNZWRpYVBsYXllckVudW1zOjpNZWRpYUVuZ2luZUlkZW50aWZp
ZXIgZW5naW5lSWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiZwYXRoLCBXYWxsVGltZSBtb2RpZmll
ZFNpbmNlKQoreworICAgIGF1dG8gZW5naW5lID0gTWVkaWFQbGF5ZXI6Om1lZGlhRW5naW5lKGVu
Z2luZUlkZW50aWZpZXIpOworICAgIGlmICghZW5naW5lKSB7CisgICAgICAgIFdURkxvZ0Fsd2F5
cygiRmFpbGVkIHRvIGZpbmQgbWVkaWEgZW5naW5lLiIpOworICAgICAgICByZXR1cm47CisgICAg
fQorCisgICAgZW5naW5lLT5jbGVhck1lZGlhQ2FjaGUocGF0aCwgbW9kaWZpZWRTaW5jZSk7Cit9
CisKK3ZvaWQgUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHk6OmNsZWFyTWVkaWFDYWNoZUZv
ck9yaWdpbnMoTWVkaWFQbGF5ZXJFbnVtczo6TWVkaWFFbmdpbmVJZGVudGlmaWVyIGVuZ2luZUlk
ZW50aWZpZXIsIGNvbnN0IFN0cmluZyYmIHBhdGgsIFZlY3RvcjxXZWJDb3JlOjpTZWN1cml0eU9y
aWdpbkRhdGE+JiYgb3JpZ2luRGF0YSkKK3sKKyAgICBhdXRvIGVuZ2luZSA9IE1lZGlhUGxheWVy
OjptZWRpYUVuZ2luZShlbmdpbmVJZGVudGlmaWVyKTsKKyAgICBpZiAoIWVuZ2luZSkgeworICAg
ICAgICBXVEZMb2dBbHdheXMoIkZhaWxlZCB0byBmaW5kIG1lZGlhIGVuZ2luZS4iKTsKKyAgICAg
ICAgcmV0dXJuOworICAgIH0KKworICAgIEhhc2hTZXQ8UmVmUHRyPFNlY3VyaXR5T3JpZ2luPj4g
b3JpZ2luczsKKyAgICBmb3IgKGF1dG8mIGRhdGEgOiBvcmlnaW5EYXRhKQorICAgICAgICBvcmln
aW5zLmFkZChkYXRhLnNlY3VyaXR5T3JpZ2luKCkpOworCisgICAgZW5naW5lLT5jbGVhck1lZGlh
Q2FjaGVGb3JPcmlnaW5zKHBhdGgsIG9yaWdpbnMpOworfQorCit2b2lkIFJlbW90ZU1lZGlhUGxh
eWVyTWFuYWdlclByb3h5OjpzdXBwb3J0c0tleVN5c3RlbShNZWRpYVBsYXllckVudW1zOjpNZWRp
YUVuZ2luZUlkZW50aWZpZXIgZW5naW5lSWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiYga2V5U3lz
dGVtLCBjb25zdCBTdHJpbmcmJiBtaW1lVHlwZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29s
KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyAgICBhdXRvIGVuZ2luZSA9IE1lZGlhUGxheWVy
OjptZWRpYUVuZ2luZShlbmdpbmVJZGVudGlmaWVyKTsKKyAgICBpZiAoIWVuZ2luZSkgeworICAg
ICAgICBXVEZMb2dBbHdheXMoIkZhaWxlZCB0byBmaW5kIG1lZGlhIGVuZ2luZS4iKTsKKyAgICAg
ICAgcmV0dXJuOworICAgIH0KKworICAgIGF1dG8gcmVzdWx0ID0gZW5naW5lLT5zdXBwb3J0c0tl
eVN5c3RlbShrZXlTeXN0ZW0sIG1pbWVUeXBlKTsKKyAgICBjb21wbGV0aW9uSGFuZGxlcihyZXN1
bHQpOworfQorCit9CisKKyN1bmRlZiBNRVNTQUdFX0NIRUNLX0NPTlRFWFRJRAorCisjZW5kaWYK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVBs
YXllck1hbmFnZXJQcm94eS5oIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90
ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYjQyYzhjNTM5MzlhYzUxYmRi
N2VjNGQ1YmZiMWYwNDg4ZTQzNzUyNwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQv
R1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eS5oCkBAIC0wLDAg
KzEsNzQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
CisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgor
ICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShHUFVfUFJP
Q0VTUykKKworI2luY2x1ZGUgIkNvbm5lY3Rpb24uaCIKKyNpbmNsdWRlICJNZWRpYVBsYXllclBy
aXZhdGVSZW1vdGVJZGVudGlmaWVyLmgiCisjaW5jbHVkZSAiTWVzc2FnZVJlY2VpdmVyLmgiCisj
aW5jbHVkZSA8V2ViQ29yZS9NZWRpYVBsYXllci5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsKKwor
Y2xhc3MgR1BVQ29ubmVjdGlvblRvV2ViUHJvY2VzczsKKworY2xhc3MgUmVtb3RlTWVkaWFQbGF5
ZXJNYW5hZ2VyUHJveHkgOiBwcml2YXRlIElQQzo6TWVzc2FnZVJlY2VpdmVyIHsKKyAgICBXVEZf
TUFLRV9GQVNUX0FMTE9DQVRFRDsKK3B1YmxpYzoKKyAgICBleHBsaWNpdCBSZW1vdGVNZWRpYVBs
YXllck1hbmFnZXJQcm94eShHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzJik7CisgICAgflJlbW90
ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5KCk7CisKKyAgICBHUFVDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzJiB3ZWJQcm9jZXNzQ29ubmVjdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fd2ViUHJvY2Vzc0Nv
bm5lY3Rpb247IH0KKyAgICB2b2lkIGNsZWFyKCk7CisKKyAgICB2b2lkIGRpZFJlY2VpdmVNZXNz
YWdlRnJvbVdlYlByb2Nlc3MoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBJUEM6OkRlY29k
ZXImIGRlY29kZXIpIHsgZGlkUmVjZWl2ZU1lc3NhZ2UoY29ubmVjdGlvbiwgZGVjb2Rlcik7IH0K
KyAgICB2b2lkIGRpZFJlY2VpdmVTeW5jTWVzc2FnZUZyb21XZWJQcm9jZXNzKElQQzo6Q29ubmVj
dGlvbiYgY29ubmVjdGlvbiwgSVBDOjpEZWNvZGVyJiBkZWNvZGVyLCBzdGQ6OnVuaXF1ZV9wdHI8
SVBDOjpFbmNvZGVyPiYgZW5jb2RlcikgeyBkaWRSZWNlaXZlU3luY01lc3NhZ2UoY29ubmVjdGlv
biwgZGVjb2RlciwgZW5jb2Rlcik7IH0KKworcHJpdmF0ZToKKyAgICAvLyBJUEM6Ok1lc3NhZ2VS
ZWNlaXZlcgorICAgIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBD
OjpEZWNvZGVyJikgZmluYWw7CisgICAgdm9pZCBkaWRSZWNlaXZlU3luY01lc3NhZ2UoSVBDOjpD
b25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJiwgc3RkOjp1bmlxdWVfcHRyPElQQzo6RW5jb2Rlcj4m
KSBmaW5hbDsKKworICAgIHZvaWQgY3JlYXRlTWVkaWFQbGF5ZXIoY29uc3QgTWVkaWFQbGF5ZXJQ
cml2YXRlUmVtb3RlSWRlbnRpZmllciYsIFdlYkNvcmU6Ok1lZGlhUGxheWVyRW51bXM6Ok1lZGlh
RW5naW5lSWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJik7CisKKyAg
ICB2b2lkIGdldFN1cHBvcnRlZFR5cGVzKFdlYkNvcmU6Ok1lZGlhUGxheWVyRW51bXM6Ok1lZGlh
RW5naW5lSWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChWZWN0b3I8U3RyaW5nPiYm
KT4mJik7CisgICAgdm9pZCBzdXBwb3J0c1R5cGUoV2ViQ29yZTo6TWVkaWFQbGF5ZXJFbnVtczo6
TWVkaWFFbmdpbmVJZGVudGlmaWVyLCBjb25zdCBXZWJDb3JlOjpNZWRpYUVuZ2luZVN1cHBvcnRQ
YXJhbWV0ZXJzJiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoV2ViQ29yZTo6TWVkaWFQbGF5ZXI6
OlN1cHBvcnRzVHlwZSk+JiYpOworCisgICAgdm9pZCBvcmlnaW5zSW5NZWRpYUNhY2hlKFdlYkNv
cmU6Ok1lZGlhUGxheWVyRW51bXM6Ok1lZGlhRW5naW5lSWRlbnRpZmllciwgY29uc3QgU3RyaW5n
JiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoVmVjdG9yPFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2lu
RGF0YT4mJik+JiYpOworICAgIHZvaWQgY2xlYXJNZWRpYUNhY2hlKFdlYkNvcmU6Ok1lZGlhUGxh
eWVyRW51bXM6Ok1lZGlhRW5naW5lSWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiYsIFdhbGxUaW1l
KTsKKyAgICB2b2lkIGNsZWFyTWVkaWFDYWNoZUZvck9yaWdpbnMoV2ViQ29yZTo6TWVkaWFQbGF5
ZXJFbnVtczo6TWVkaWFFbmdpbmVJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmJiwgVmVjdG9yPFdl
YkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YT4mJik7CisgICAgdm9pZCBzdXBwb3J0c0tleVN5c3Rl
bShXZWJDb3JlOjpNZWRpYVBsYXllckVudW1zOjpNZWRpYUVuZ2luZUlkZW50aWZpZXIsIGNvbnN0
IFN0cmluZyYmLCBjb25zdCBTdHJpbmcmJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4m
Jik7CisKKyAgICBjbGFzcyBQbGF5ZXJQcm94eTsKKyAgICBmcmllbmQgY2xhc3MgUGxheWVyUHJv
eHk7CisgICAgSGFzaE1hcDxNZWRpYVBsYXllclByaXZhdGVSZW1vdGVJZGVudGlmaWVyLCBzdGQ6
OnVuaXF1ZV9wdHI8UGxheWVyUHJveHk+PiBtX3Byb3hpZXM7CisgICAgR1BVQ29ubmVjdGlvblRv
V2ViUHJvY2VzcyYgbV93ZWJQcm9jZXNzQ29ubmVjdGlvbjsKK307CisKK30KKworI2VuZGlmCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFQbGF5
ZXJNYW5hZ2VyUHJveHkubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVk
aWEvUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHkubWVzc2FnZXMuaW4KbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
MWJmYzRjNzgyYTMxNmUwYjg2MGE3ZDViZWEwOTIwNGVhZTAyZjM0MwotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVBsYXllck1hbmFn
ZXJQcm94eS5tZXNzYWdlcy5pbgpAQCAtMCwwICsxLDM3IEBACisjIENvcHlyaWdodCAoQykgMjAx
OSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyMgYXJlIG1ldDoKKyMgMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
IyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisjICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyMg
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisjIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyMgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisjIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IKKyMgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyMgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisjIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOCisjIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpCisjIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyMgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorCisjaWYgRU5BQkxFKFZJREVPKQorCittZXNzYWdlcyAtPiBSZW1v
dGVNZWRpYVBsYXllck1hbmFnZXJQcm94eSBOb3RSZWZDb3VudGVkIHsKKyAgICBDcmVhdGVNZWRp
YVBsYXllcihXZWJLaXQ6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZUlkZW50aWZpZXIgaWQsIGVu
dW06dWludDhfdCBXZWJDb3JlOjpNZWRpYVBsYXllckVudW1zOjpNZWRpYUVuZ2luZUlkZW50aWZp
ZXIgcmVtb3RlRW5naW5lSWRlbnRpZmllcikgLT4gKGJvb2wgc3VjY2VzcykgU3luY2hyb25vdXMK
KworICAgIEdldFN1cHBvcnRlZFR5cGVzKGVudW06dWludDhfdCBXZWJDb3JlOjpNZWRpYVBsYXll
ckVudW1zOjpNZWRpYUVuZ2luZUlkZW50aWZpZXIgcmVtb3RlRW5naW5lSWRlbnRpZmllcikgLT4g
KFZlY3RvcjxTdHJpbmc+IHR5cGVzKSBTeW5jaHJvbm91cworICAgIFN1cHBvcnRzVHlwZShlbnVt
OnVpbnQ4X3QgV2ViQ29yZTo6TWVkaWFQbGF5ZXJFbnVtczo6TWVkaWFFbmdpbmVJZGVudGlmaWVy
IHJlbW90ZUVuZ2luZUlkZW50aWZpZXIsIHN0cnVjdCBXZWJDb3JlOjpNZWRpYUVuZ2luZVN1cHBv
cnRQYXJhbWV0ZXJzIHR5cGUpIC0+IChlbnVtOnVpbnQ4X3QgV2ViQ29yZTo6TWVkaWFQbGF5ZXI6
OlN1cHBvcnRzVHlwZSBzdXBwb3J0KSBTeW5jaHJvbm91cworICAgIE9yaWdpbnNJbk1lZGlhQ2Fj
aGUoZW51bTp1aW50OF90IFdlYkNvcmU6Ok1lZGlhUGxheWVyRW51bXM6Ok1lZGlhRW5naW5lSWRl
bnRpZmllciByZW1vdGVFbmdpbmVJZGVudGlmaWVyLCBTdHJpbmcgcGF0aCkgLT4gKFZlY3RvcjxX
ZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGE+IG9yaWdpbnMpIFN5bmNocm9ub3VzCisgICAgQ2xl
YXJNZWRpYUNhY2hlKGVudW06dWludDhfdCBXZWJDb3JlOjpNZWRpYVBsYXllckVudW1zOjpNZWRp
YUVuZ2luZUlkZW50aWZpZXIgcmVtb3RlRW5naW5lSWRlbnRpZmllciwgU3RyaW5nIHBhdGgsIFdh
bGxUaW1lIG1vZGlmaWVkU2luY2UpCisgICAgQ2xlYXJNZWRpYUNhY2hlRm9yT3JpZ2lucyhlbnVt
OnVpbnQ4X3QgV2ViQ29yZTo6TWVkaWFQbGF5ZXJFbnVtczo6TWVkaWFFbmdpbmVJZGVudGlmaWVy
IHJlbW90ZUVuZ2luZUlkZW50aWZpZXIsIFN0cmluZyBwYXRoLCBWZWN0b3I8V2ViQ29yZTo6U2Vj
dXJpdHlPcmlnaW5EYXRhPiBvcmlnaW5zKQorICAgIFN1cHBvcnRzS2V5U3lzdGVtKGVudW06dWlu
dDhfdCBXZWJDb3JlOjpNZWRpYVBsYXllckVudW1zOjpNZWRpYUVuZ2luZUlkZW50aWZpZXIgcmVt
b3RlRW5naW5lSWRlbnRpZmllciwgU3RyaW5nIGtleVN5c3RlbSwgU3RyaW5nIG1pbWVUeXBlKSAt
PiAoYm9vbCBzdXBwb3J0cykgU3luY2hyb25vdXMKK30KKworI2VuZGlmCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5IGIvU291cmNlL1dlYktpdC9T
Y3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5weQppbmRleCBlZDExYWMyNzI1MjI2ZTQ3YTJiNTZiY2M5
ZWNmMjIyZGFjMDAwOWFlLi5mMmU5ZWQ3YWI1NDAyZWY1MTE4OGY3ZThkYmUzOTZiYThhY2UwZmFk
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5Cisr
KyBiL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvbWVzc2FnZXMucHkKQEAgLTEsNCArMSw0
IEBACi0jIENvcHlyaWdodCAoQykgMjAxMC0yMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyMgQ29weXJpZ2h0IChDKSAyMDEwLTIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgogIwogIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yMTksMTAgKzIxOSwxMSBA
QCBkZWYgdHlwZXNfdGhhdF9jYW5ub3RfYmVfZm9yd2FyZF9kZWNsYXJlZCgpOgogICAgICAgICAn
V2ViQ29yZTo6U1dTZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllcicsCiAgICAgICAgICdXZWJLaXQ6
OkFjdGl2aXR5U3RhdGVDaGFuZ2VJRCcsCiAgICAgICAgICdXZWJLaXQ6OkxheWVySG9zdGluZ0Nv
bnRleHRJRCcsCi0gICAgICAgICdXZWJLaXQ6OlRyYW5zYWN0aW9uSUQnLAorICAgICAgICAnV2Vi
S2l0OjpNZWRpYVBsYXllclByaXZhdGVSZW1vdGVJZGVudGlmaWVyJywKICAgICAgICAgJ1dlYktp
dDo6U3RvcmFnZUFyZWFJZGVudGlmaWVyJywKICAgICAgICAgJ1dlYktpdDo6U3RvcmFnZUFyZWFJ
bXBsSWRlbnRpZmllcicsCiAgICAgICAgICdXZWJLaXQ6OlN0b3JhZ2VOYW1lc3BhY2VJZGVudGlm
aWVyJywKKyAgICAgICAgJ1dlYktpdDo6VHJhbnNhY3Rpb25JRCcsCiAgICAgICAgICdXZWJLaXQ6
OlVzZXJDb250ZW50Q29udHJvbGxlcklkZW50aWZpZXInLAogICAgICAgICAnV2ViS2l0OjpXZWJQ
YWdlUHJveHlJZGVudGlmaWVyJywKICAgICBdKQpAQCAtNjAzLDYgKzYwNCw3IEBAIGRlZiBoZWFk
ZXJzX2Zvcl90eXBlKHR5cGUpOgogICAgICAgICAnV2ViS2l0OjpXZWJNb3VzZUV2ZW50JzogWyci
V2ViRXZlbnQuaCInXSwKICAgICAgICAgJ1dlYktpdDo6V2ViVG91Y2hFdmVudCc6IFsnIldlYkV2
ZW50LmgiJ10sCiAgICAgICAgICdXZWJLaXQ6OldlYldoZWVsRXZlbnQnOiBbJyJXZWJFdmVudC5o
IiddLAorICAgICAgICAnV2ViQ29yZTo6TWVkaWFFbmdpbmVTdXBwb3J0UGFyYW1ldGVycyc6IFsn
PFdlYkNvcmUvTWVkaWFQbGF5ZXIuaD4nXSwKICAgICAgICAgJ3N0cnVjdCBXZWJDb3JlOjpFbGVt
ZW50Q29udGV4dCc6IFsnPFdlYkNvcmUvRWxlbWVudENvbnRleHQuaD4nXSwKICAgICAgICAgJ3N0
cnVjdCBXZWJLaXQ6OldlYlVzZXJTY3JpcHREYXRhJzogWyciV2ViVXNlckNvbnRlbnRDb250cm9s
bGVyRGF0YVR5cGVzLmgiJ10sCiAgICAgICAgICdzdHJ1Y3QgV2ViS2l0OjpXZWJVc2VyU3R5bGVT
aGVldERhdGEnOiBbJyJXZWJVc2VyQ29udGVudENvbnRyb2xsZXJEYXRhVHlwZXMuaCInXSwKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU291cmNlcy50eHQgYi9Tb3VyY2UvV2ViS2l0L1NvdXJj
ZXMudHh0CmluZGV4IDVmMDRkOGEzZGEwZGQzM2VmNmI5MDZhZWE5NWUyOTUwZjhkZWY2ZjkuLjU0
MjRlNWRmYmIxNTIwMTBiMGIzMmQ2ZjVlYTZkNTM1ODkxNGU1NmIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvU291cmNlcy50eHQKKysrIGIvU291cmNlL1dlYktpdC9Tb3VyY2VzLnR4dApAQCAt
NTAwLDYgKzUwMCw4IEBAIFdlYlByb2Nlc3MvTWVkaWFTdHJlYW0vTWVkaWFEZXZpY2VTYW5kYm94
RXh0ZW5zaW9ucy5jcHAKIFdlYlByb2Nlc3MvTWVkaWFTdHJlYW0vVXNlck1lZGlhUGVybWlzc2lv
blJlcXVlc3RNYW5hZ2VyLmNwcAogCiBXZWJQcm9jZXNzL0dQVS9HUFVQcm9jZXNzQ29ubmVjdGlv
bi5jcHAKK1dlYlByb2Nlc3MvR1BVL21lZGlhL01lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZS5jcHAK
K1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyTWFuYWdlci5jcHAKIAogV2Vi
UHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5jcHAKIFdlYlByb2Nlc3Mv
TmV0d29yay9XZWJMb2FkZXJTdHJhdGVneS5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
U291cmNlc0NvY29hLnR4dCBiL1NvdXJjZS9XZWJLaXQvU291cmNlc0NvY29hLnR4dAppbmRleCA5
ZDI0MmUyYTA2NGRmZjcyZjQ5YzQyZjU0ZDk3ODEzY2FkOTRkOTJjLi5kOTQ4M2QwYTEzOWEwMGFk
YWQ3N2ZhODM3ZWNjNzNlYzE3OGI5YzNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NvdXJj
ZXNDb2NvYS50eHQKKysrIGIvU291cmNlL1dlYktpdC9Tb3VyY2VzQ29jb2EudHh0CkBAIC01OSw2
ICs1OSw3IEBAIE5ldHdvcmtQcm9jZXNzL3dlYnJ0Yy9OZXR3b3JrUlRDU29ja2V0LmNwcAogCiBH
UFVQcm9jZXNzL2lvcy9HUFVQcm9jZXNzSU9TLm1tCiBHUFVQcm9jZXNzL21hYy9HUFVQcm9jZXNz
TWFjLm1tCitHUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5LmNw
cAogR1BVUHJvY2Vzcy9FbnRyeVBvaW50L0NvY29hL1hQQ1NlcnZpY2UvR1BVU2VydmljZUVudHJ5
UG9pbnQubW0KIAogUGxhdGZvcm0vY2YvTW9kdWxlQ0YuY3BwCkBAIC02MjQsNSArNjI1LDcgQEAg
RWRpdGFibGVJbWFnZUNvbnRyb2xsZXJNZXNzYWdlUmVjZWl2ZXIuY3BwCiBHUFVDb25uZWN0aW9u
VG9XZWJQcm9jZXNzTWVzc2FnZVJlY2VpdmVyLmNwcAogR1BVUHJvY2Vzc1Byb3h5TWVzc2FnZVJl
Y2VpdmVyLmNwcAogR1BVUHJvY2Vzc01lc3NhZ2VSZWNlaXZlci5jcHAKKy8vUmVtb3RlTWVkaWFQ
bGF5ZXJNYW5hZ2VyTWVzc2FnZVJlY2VpdmVyLmNwcAorLy9SZW1vdGVNZWRpYVBsYXllck1hbmFn
ZXJQcm94eU1lc3NhZ2VSZWNlaXZlci5jcHAKIFNlcnZpY2VXb3JrZXJGZXRjaFRhc2tNZXNzYWdl
UmVjZWl2ZXIuY3BwCiBUZXh0Q2hlY2tpbmdDb250cm9sbGVyUHJveHlNZXNzYWdlUmVjZWl2ZXIu
Y3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qIGIvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpp
bmRleCA0NjZjZGU5OWNlZGE0MWFiM2QxMjViMDI1MmJhMjljNmE5MWYyODZjLi4yMTVjZjJiMzVj
NDQ5ZThhOGE4ZjdmZjNkMmJjZjVmNDcxOWNlM2Y2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJLaXQvV2Vi
S2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTkxLDYgKzkxLDEzIEBACiAJCTA3NEU3
NUZFMURGMjIxMTkwMEQzMThFQyAvKiBVc2VyTWVkaWFQcm9jZXNzTWFuYWdlci5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDc0RTc1RkIxREYxRkQxMzAw
RDMxOEVDIC8qIFVzZXJNZWRpYVByb2Nlc3NNYW5hZ2VyLmggKi87IH07CiAJCTA3NkU4ODRFMUEx
M0NBREYwMDVFOTBGQyAvKiBBUElDb250ZXh0TWVudUNsaWVudC5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDc2RTg4NEQxQTEzQ0FERjAwNUU5MEZDIC8q
IEFQSUNvbnRleHRNZW51Q2xpZW50LmggKi87IH07CiAJCTA3NzI4MTFEMjEyMzRGRjYwMEM4RUYy
RSAvKiBVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXIuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDRBNDEwRjQzMTlBRjdCMjcwMDJFQkFCNSAv
KiBVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXIuaCAqLzsgfTsKKwkJMDc5MjMxNDgy
MzlDQkNCODAwOTU5OEUyIC8qIFJlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5TWVzc2FnZXNS
ZXBsaWVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAw
NzkyMzE0MjIzOUNCQ0I1MDA5NTk4RTIgLyogUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHlN
ZXNzYWdlc1JlcGxpZXMuaCAqLzsgfTsKKwkJMDc5MjMxNDkyMzlDQkNCODAwOTU5OEUyIC8qIFJl
bW90ZU1lZGlhUGxheWVyTWFuYWdlck1lc3NhZ2VSZWNlaXZlci5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwNzkyMzE0MzIzOUNCQ0I2MDA5NTk4RTIg
LyogUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyTWVzc2FnZVJlY2VpdmVyLmNwcCAqLzsgfTsKKwkJ
MDc5MjMxNEEyMzlDQkNCODAwOTU5OEUyIC8qIFJlbW90ZU1lZGlhUGxheWVyTWFuYWdlck1lc3Nh
Z2VzUmVwbGllcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gMDc5MjMxNDQyMzlDQkNCNjAwOTU5OEUyIC8qIFJlbW90ZU1lZGlhUGxheWVyTWFuYWdlck1l
c3NhZ2VzUmVwbGllcy5oICovOyB9OworCQkwNzkyMzE0QjIzOUNCQ0I4MDA5NTk4RTIgLyogUmVt
b3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDc5MjMxNDUyMzlDQkNCNzAwOTU5
OEUyIC8qIFJlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5TWVzc2FnZVJlY2VpdmVyLmNwcCAq
LzsgfTsKKwkJMDc5MjMxNEMyMzlDQkNCODAwOTU5OEUyIC8qIFJlbW90ZU1lZGlhUGxheWVyTWFu
YWdlclByb3h5TWVzc2FnZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDA3OTIzMTQ2MjM5Q0JDQjcwMDk1OThFMiAvKiBSZW1vdGVNZWRpYVBsYXllck1h
bmFnZXJQcm94eU1lc3NhZ2VzLmggKi87IH07CisJCTA3OTIzMTREMjM5Q0JDQjgwMDk1OThFMiAv
KiBSZW1vdGVNZWRpYVBsYXllck1hbmFnZXJNZXNzYWdlcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDc5MjMxNDcyMzlDQkNCNzAwOTU5OEUyIC8qIFJl
bW90ZU1lZGlhUGxheWVyTWFuYWdlck1lc3NhZ2VzLmggKi87IH07CisJCTA3OTIzMTRGMjM5RDYy
M0UwMDk1OThFMiAvKiBNZWRpYVBsYXllclByaXZhdGVSZW1vdGVJZGVudGlmaWVyLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwNzkyMzE0RTIzOUQ1RjUz
MDA5NTk4RTIgLyogTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlSWRlbnRpZmllci5oICovOyB9Owog
CQkwN0E1RUJCQzFDN0JBNDNFMDBCOUNBNjkgLyogV0tGcmFtZUhhbmRsZVJlZi5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDdBNUVCQkExQzdCQTQzRTAw
QjlDQTY5IC8qIFdLRnJhbWVIYW5kbGVSZWYuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OwogCQkwRTk3RDc0RDIwMEU5MDA0MDBCRjY2NDMgLyogU2FmZUJy
b3dzaW5nU1BJLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSAwRTk3RDc0QzIwMEU4RkYzMDBCRjY2NDMgLyogU2FmZUJyb3dzaW5nU1BJLmggKi87IH07CiAJ
CTBFREU4NTAzMjAwNEU3NUQwMDAzMDU2MCAvKiBXZWJzaXRlUG9wVXBQb2xpY3kuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBFREU4NTAyMjAwNEU3NDkw
MDAzMDU2MCAvKiBXZWJzaXRlUG9wVXBQb2xpY3kuaCAqLzsgfTsKQEAgLTE5OTcsNiArMjAwNCw5
IEBACiAJCTAwQjk2NjE1MThFMjRDQkEwMENFMUY4OCAvKiBBUElGaW5kQ2xpZW50LmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEFQSUZpbmRDbGllbnQuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJMDBCOTY2MTcxOEUyNUFFMTAwQ0UxRjg4IC8qIEZpbmRDbGllbnQu
bW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBGaW5kQ2xpZW50Lm1t
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwMEI5NjYxODE4RTI1QUUxMDBDRTFGODgg
LyogRmluZENsaWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBGaW5kQ2xp
ZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTA3MjVFRkFCMjM5QUUzODQwMEE1
MzhBOSAvKiBSZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eS5tZXNzYWdlcy5pbiAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBS
ZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eS5tZXNzYWdlcy5pbjsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJMDcyNUVGQUMyMzlBRTM4NTAwQTUzOEE5IC8qIFJlbW90ZU1lZGlhUGxh
eWVyTWFuYWdlclByb3h5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlbW90ZU1lZGlhUGxheWVyTWFuYWdl
clByb3h5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTA3MjVFRkFEMjM5QjAyNDUw
MEE1MzhBOSAvKiBSZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eS5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBSZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eS5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTA3Mjk3RjlDMUMxNzExRUEwMDNGMDczNSAvKiBEZXZpY2VJZEhhc2hT
YWx0U3RvcmFnZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBEZXZp
Y2VJZEhhc2hTYWx0U3RvcmFnZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTA3
Mjk3RjlDMUMxN0JCRUEwMDNGMDczNSAvKiBVc2VyTWVkaWFQZXJtaXNzaW9uQ2hlY2tQcm94eS5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBVc2VyTWVkaWFQZXJtaXNz
aW9uQ2hlY2tQcm94eS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTA3Mjk3RjlE
MUMxN0JCRUEwMDNGMDczNSAvKiBVc2VyTWVkaWFQZXJtaXNzaW9uQ2hlY2tQcm94eS5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBVc2VyTWVkaWFQZXJtaXNzaW9uQ2hlY2tQcm94
eS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMjAxMSw2ICsyMDIxLDE4IEBACiAJ
CTA3NEU3NjAxMURGNzA3NUQwMEQzMThFQyAvKiBNZWRpYURldmljZVNhbmRib3hFeHRlbnNpb25z
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1lZGlhRGV2aWNlU2FuZGJveEV4
dGVuc2lvbnMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMDc2RTg4NEQxQTEzQ0FE
RjAwNUU5MEZDIC8qIEFQSUNvbnRleHRNZW51Q2xpZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IEFQSUNvbnRleHRNZW51Q2xpZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTA3NkU4ODRGMUExM0NCQzYwMDVFOTBGQyAvKiBBUElJbmplY3RlZEJ1bmRsZVBh
Z2VDb250ZXh0TWVudUNsaWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBB
UElJbmplY3RlZEJ1bmRsZVBhZ2VDb250ZXh0TWVudUNsaWVudC5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQkwNzkyMzEzMDIzOUIzQjBDMDA5NTk4RTIgLyogUmVtb3RlTWVkaWFQbGF5
ZXJNYW5hZ2VyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJlbW90ZU1lZGlhUGxheWVyTWFuYWdl
ci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTA3OTIzMTMxMjM5QjNCMEMwMDk1
OThFMiAvKiBNZWRpYVBsYXllclByaXZhdGVSZW1vdGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJMDc5MjMxMzIyMzlCM0IwQzAwOTU5OEUyIC8qIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZS5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBNZWRpYVBsYXllclByaXZhdGVSZW1vdGUuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJMDc5MjMxMzMyMzlCM0IwQzAwOTU5OEUyIC8qIFJlbW90ZU1lZGlh
UGxheWVyTWFuYWdlci5tZXNzYWdlcy5pbiAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBSZW1vdGVNZWRpYVBsYXllck1hbmFnZXIu
bWVzc2FnZXMuaW47IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTA3OTIzMTM0MjM5QjNC
MEMwMDk1OThFMiAvKiBSZW1vdGVNZWRpYVBsYXllck1hbmFnZXIuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
UmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CTA3OTIzMTQyMjM5Q0JDQjUwMDk1OThFMiAvKiBSZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94
eU1lc3NhZ2VzUmVwbGllcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZW1v
dGVNZWRpYVBsYXllck1hbmFnZXJQcm94eU1lc3NhZ2VzUmVwbGllcy5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQkwNzkyMzE0MzIzOUNCQ0I2MDA5NTk4RTIgLyogUmVtb3RlTWVkaWFQ
bGF5ZXJNYW5hZ2VyTWVzc2FnZVJlY2VpdmVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IFJlbW90ZU1lZGlhUGxheWVyTWFuYWdlck1lc3NhZ2VSZWNlaXZlci5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTA3OTIzMTQ0MjM5Q0JDQjYwMDk1OThFMiAv
KiBSZW1vdGVNZWRpYVBsYXllck1hbmFnZXJNZXNzYWdlc1JlcGxpZXMuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyTWVzc2FnZXNSZXBs
aWVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTA3OTIzMTQ1MjM5Q0JDQjcwMDk1
OThFMiAvKiBSZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eU1lc3NhZ2VSZWNlaXZlci5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSZW1vdGVNZWRpYVBsYXllck1h
bmFnZXJQcm94eU1lc3NhZ2VSZWNlaXZlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCTA3OTIzMTQ2MjM5Q0JDQjcwMDk1OThFMiAvKiBSZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQ
cm94eU1lc3NhZ2VzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlbW90ZU1l
ZGlhUGxheWVyTWFuYWdlclByb3h5TWVzc2FnZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJMDc5MjMxNDcyMzlDQkNCNzAwOTU5OEUyIC8qIFJlbW90ZU1lZGlhUGxheWVyTWFuYWdl
ck1lc3NhZ2VzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlbW90ZU1lZGlh
UGxheWVyTWFuYWdlck1lc3NhZ2VzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTA3
OTIzMTRFMjM5RDVGNTMwMDk1OThFMiAvKiBNZWRpYVBsYXllclByaXZhdGVSZW1vdGVJZGVudGlm
aWVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZUlkZW50aWZpZXIu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMDdBNUVCQjkxQzdCQTQzRTAwQjlDQTY5
IC8qIFdLRnJhbWVIYW5kbGVSZWYuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gV0tGcmFtZUhhbmRsZVJlZi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTA3QTVFQkJBMUM3QkE0M0UwMEI5Q0E2OSAvKiBXS0ZyYW1lSGFuZGxlUmVmLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdLRnJhbWVIYW5kbGVSZWYuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJMDg2N0Q2QTVGRTg0MDMwN0MwMkFBQzA3IC8qIEFwcEtpdC5mcmFt
ZXdvcmsgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB3
cmFwcGVyLmZyYW1ld29yazsgbmFtZSA9IEFwcEtpdC5mcmFtZXdvcms7IHBhdGggPSAvU3lzdGVt
L0xpYnJhcnkvRnJhbWV3b3Jrcy9BcHBLaXQuZnJhbWV3b3JrOyBzb3VyY2VUcmVlID0gIjxhYnNv
bHV0ZT4iOyB9OwpAQCAtNTAxMyw2ICs1MDM1LDI5IEBACiAJCQl0YWJXaWR0aCA9IDg7CiAJCQl1
c2VzVGFicyA9IDA7CiAJCX07CisJCTA3OTIzMTJGMjM5QjNCMEMwMDk1OThFMiAvKiBtZWRpYSAq
LyA9IHsKKwkJCWlzYSA9IFBCWEdyb3VwOworCQkJY2hpbGRyZW4gPSAoCisJCQkJMDc5MjMxMzEy
MzlCM0IwQzAwOTU5OEUyIC8qIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZS5jcHAgKi8sCisJCQkJ
MDc5MjMxMzIyMzlCM0IwQzAwOTU5OEUyIC8qIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZS5oICov
LAorCQkJCTA3OTIzMTRFMjM5RDVGNTMwMDk1OThFMiAvKiBNZWRpYVBsYXllclByaXZhdGVSZW1v
dGVJZGVudGlmaWVyLmggKi8sCisJCQkJMDc5MjMxMzAyMzlCM0IwQzAwOTU5OEUyIC8qIFJlbW90
ZU1lZGlhUGxheWVyTWFuYWdlci5jcHAgKi8sCisJCQkJMDc5MjMxMzQyMzlCM0IwQzAwOTU5OEUy
IC8qIFJlbW90ZU1lZGlhUGxheWVyTWFuYWdlci5oICovLAorCQkJCTA3OTIzMTMzMjM5QjNCMEMw
MDk1OThFMiAvKiBSZW1vdGVNZWRpYVBsYXllck1hbmFnZXIubWVzc2FnZXMuaW4gKi8sCisJCQkp
OworCQkJcGF0aCA9IG1lZGlhOworCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKKwkJfTsKKwkJ
MDdDNzVDMTcyMzk5QTNEQjAwODhFNjVCIC8qIG1lZGlhICovID0geworCQkJaXNhID0gUEJYR3Jv
dXA7CisJCQljaGlsZHJlbiA9ICgKKwkJCQkwNzI1RUZBRDIzOUIwMjQ1MDBBNTM4QTkgLyogUmVt
b3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHkuY3BwICovLAorCQkJCTA3MjVFRkFDMjM5QUUzODUw
MEE1MzhBOSAvKiBSZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eS5oICovLAorCQkJCTA3MjVF
RkFCMjM5QUUzODQwMEE1MzhBOSAvKiBSZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eS5tZXNz
YWdlcy5pbiAqLywKKwkJCSk7CisJCQlwYXRoID0gbWVkaWE7CisJCQlzb3VyY2VUcmVlID0gIjxn
cm91cD4iOworCQl9OwogCQkwODY3RDY5MUZFODQwMjhGQzAyQUFDMDcgLyogV2ViS2l0MiAqLyA9
IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCkBAIC02MTk1LDYgKzYyNDAs
NyBAQAogCQkyRDdFNDNCRjIzNzUyQ0Q5MDBFQTVDQTAgLyogR1BVICovID0gewogCQkJaXNhID0g
UEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKKwkJCQkwNzkyMzEyRjIzOUIzQjBDMDA5NTk4RTIg
LyogbWVkaWEgKi8sCiAJCQkJMkQ3RTQzQzAyMzc1MkNEOTAwRUE1Q0EwIC8qIEdQVVByb2Nlc3ND
b25uZWN0aW9uLmNwcCAqLywKIAkJCQkyRDdFNDNDMzIzNzUyQ0Q5MDBFQTVDQTAgLyogR1BVUHJv
Y2Vzc0Nvbm5lY3Rpb24uaCAqLywKIAkJCQkyRDdFNDNDMjIzNzUyQ0Q5MDBFQTVDQTAgLyogR1BV
UHJvY2Vzc0Nvbm5lY3Rpb24ubWVzc2FnZXMuaW4gKi8sCkBAIC02MjA5LDYgKzYyNTUsNyBAQAog
CQkJCTJEOUZCMjBEMjM3NTIwOUQwMDQ5RjkzNiAvKiBFbnRyeVBvaW50ICovLAogCQkJCTJEOUZC
MjA0MjM3NTIwOUQwMDQ5RjkzNiAvKiBpb3MgKi8sCiAJCQkJMkQ5RkIyMDYyMzc1MjA5RDAwNDlG
OTM2IC8qIG1hYyAqLywKKwkJCQkwN0M3NUMxNzIzOTlBM0RCMDA4OEU2NUIgLyogbWVkaWEgKi8s
CiAJCQkJMkQ5RkIyMEMyMzc1MjA5RDAwNDlGOTM2IC8qIEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nl
c3MuY3BwICovLAogCQkJCTJEOUZCMjAwMjM3NTIwOUQwMDQ5RjkzNiAvKiBHUFVDb25uZWN0aW9u
VG9XZWJQcm9jZXNzLmggKi8sCiAJCQkJMkQ5RkIyMDkyMzc1MjA5RDAwNDlGOTM2IC8qIEdQVUNv
bm5lY3Rpb25Ub1dlYlByb2Nlc3MubWVzc2FnZXMuaW4gKi8sCkBAIC05MTIzLDYgKzkxNzAsMTIg
QEAKIAkJCQkxQThFRkE2RjEyNTJCODQxMDBGNzA2N0YgLyogUGx1Z2luUHJveHlNZXNzYWdlcy5o
ICovLAogCQkJCTBGRjI0QTJCMTg3OUU0QkMwMDNBQkYwQyAvKiBSZW1vdGVMYXllclRyZWVEcmF3
aW5nQXJlYVByb3h5TWVzc2FnZVJlY2VpdmVyLmNwcCAqLywKIAkJCQkwRkYyNEEyQzE4NzlFNEJD
MDAzQUJGMEMgLyogUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWFQcm94eU1lc3NhZ2VzLmggKi8s
CisJCQkJMDc5MjMxNDMyMzlDQkNCNjAwOTU5OEUyIC8qIFJlbW90ZU1lZGlhUGxheWVyTWFuYWdl
ck1lc3NhZ2VSZWNlaXZlci5jcHAgKi8sCisJCQkJMDc5MjMxNDcyMzlDQkNCNzAwOTU5OEUyIC8q
IFJlbW90ZU1lZGlhUGxheWVyTWFuYWdlck1lc3NhZ2VzLmggKi8sCisJCQkJMDc5MjMxNDQyMzlD
QkNCNjAwOTU5OEUyIC8qIFJlbW90ZU1lZGlhUGxheWVyTWFuYWdlck1lc3NhZ2VzUmVwbGllcy5o
ICovLAorCQkJCTA3OTIzMTQ1MjM5Q0JDQjcwMDk1OThFMiAvKiBSZW1vdGVNZWRpYVBsYXllck1h
bmFnZXJQcm94eU1lc3NhZ2VSZWNlaXZlci5jcHAgKi8sCisJCQkJMDc5MjMxNDYyMzlDQkNCNzAw
OTU5OEUyIC8qIFJlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5TWVzc2FnZXMuaCAqLywKKwkJ
CQkwNzkyMzE0MjIzOUNCQ0I1MDA5NTk4RTIgLyogUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJv
eHlNZXNzYWdlc1JlcGxpZXMuaCAqLywKIAkJCQkxQUMxMzM4MzE4NTkwQzQ2MDBGM0VDMDUgLyog
UmVtb3RlT2JqZWN0UmVnaXN0cnlNZXNzYWdlUmVjZWl2ZXIuY3BwICovLAogCQkJCTFBQzEzMzg0
MTg1OTBDNDYwMEYzRUMwNSAvKiBSZW1vdGVPYmplY3RSZWdpc3RyeU1lc3NhZ2VzLmggKi8sCiAJ
CQkJMEY1OTQ3QTUxODdCNTE3NjAwNDM3ODU3IC8qIFJlbW90ZVNjcm9sbGluZ0Nvb3JkaW5hdG9y
TWVzc2FnZVJlY2VpdmVyLmNwcCAqLywKQEAgLTk4NDAsNiArOTg5Myw3IEBACiAJCQkJQkNDNTZG
NzkxMTU5OTU3RDAwMUNDQUY5IC8qIE1hY2hQb3J0LmggaW4gSGVhZGVycyAqLywKIAkJCQkxQTI0
QjVGMzExRjUzMUU4MDBDMzgyNjkgLyogTWFjaFV0aWxpdGllcy5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJQ0UxQTBCRDUxQTQ4RTZDNjAwNTRFRjc0IC8qIE1hbmFnZWRDb25maWd1cmF0aW9uU1BJLmgg
aW4gSGVhZGVycyAqLywKKwkJCQkwNzkyMzE0RjIzOUQ2MjNFMDA5NTk4RTIgLyogTWVkaWFQbGF5
ZXJQcml2YXRlUmVtb3RlSWRlbnRpZmllci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTE5MzNERUYx
OTY1RUIzMTAwOEFDM0VBIC8qIE1lbnVVdGlsaXRpZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTFB
QzRDODI5MTZCODc2QTkwMDY5RENDRCAvKiBNZXNzYWdlRmxhZ3MuaCBpbiBIZWFkZXJzICovLAog
CQkJCTFBM0VFRDEyMTYxQTUzRDYwMEFFQjRGNSAvKiBNZXNzYWdlUmVjZWl2ZXIuaCBpbiBIZWFk
ZXJzICovLApAQCAtMTAwMDAsNiArMTAwNTQsMTAgQEAKIAkJCQkwRkYyNjRBMDFBMUZGOUNDMDAx
RkU3NTkgLyogUmVtb3RlTGF5ZXJUcmVlU2Nyb2xsaW5nUGVyZm9ybWFuY2VEYXRhLmggaW4gSGVh
ZGVycyAqLywKIAkJCQkxQUYxQUM2QzE2NTE3NTlFMDBDMTdEN0YgLyogUmVtb3RlTGF5ZXJUcmVl
VHJhbnNhY3Rpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCTJEQzE4RkIzMjE4QTZFOUUwMDI1QTg4
RCAvKiBSZW1vdGVMYXllclRyZWVWaWV3cy5oIGluIEhlYWRlcnMgKi8sCisJCQkJMDc5MjMxNEQy
MzlDQkNCODAwOTU5OEUyIC8qIFJlbW90ZU1lZGlhUGxheWVyTWFuYWdlck1lc3NhZ2VzLmggaW4g
SGVhZGVycyAqLywKKwkJCQkwNzkyMzE0QTIzOUNCQ0I4MDA5NTk4RTIgLyogUmVtb3RlTWVkaWFQ
bGF5ZXJNYW5hZ2VyTWVzc2FnZXNSZXBsaWVzLmggaW4gSGVhZGVycyAqLywKKwkJCQkwNzkyMzE0
QzIzOUNCQ0I4MDA5NTk4RTIgLyogUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHlNZXNzYWdl
cy5oIGluIEhlYWRlcnMgKi8sCisJCQkJMDc5MjMxNDgyMzlDQkNCODAwOTU5OEUyIC8qIFJlbW90
ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5TWVzc2FnZXNSZXBsaWVzLmggaW4gSGVhZGVycyAqLywK
IAkJCQlFMUI3ODQ3MTE2M0YyNDY5MDAwN0I2OTIgLyogUmVtb3RlTmV0d29ya2luZ0NvbnRleHQu
aCBpbiBIZWFkZXJzICovLAogCQkJCTFBNTcwNEZDMUJFMTc1MTEwMDg3NEFGMSAvKiBSZW1vdGVP
YmplY3RJbnZvY2F0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQkxQUMxMzM4MDE4NTkwQUU0MDBG
M0VDMDUgLyogUmVtb3RlT2JqZWN0UmVnaXN0cnkuaCBpbiBIZWFkZXJzICovLApAQCAtMTE2NTgs
NiArMTE3MTYsOCBAQAogCQkJCTJENzJBMUZBMjEyQkY0NkUwMDUxN0EyMCAvKiBSZW1vdGVMYXll
clRyZWVEcmF3aW5nQXJlYS5tbSBpbiBTb3VyY2VzICovLAogCQkJCTBGRjI0QTJEMTg3OUU0QkMw
MDNBQkYwQyAvKiBSZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYVByb3h5TWVzc2FnZVJlY2VpdmVy
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTJEQzE4RkI0MjE4QTZFOUUwMDI1QTg4RCAvKiBSZW1v
dGVMYXllclRyZWVWaWV3cy5tbSBpbiBTb3VyY2VzICovLAorCQkJCTA3OTIzMTQ5MjM5Q0JDQjgw
MDk1OThFMiAvKiBSZW1vdGVNZWRpYVBsYXllck1hbmFnZXJNZXNzYWdlUmVjZWl2ZXIuY3BwIGlu
IFNvdXJjZXMgKi8sCisJCQkJMDc5MjMxNEIyMzlDQkNCODAwOTU5OEUyIC8qIFJlbW90ZU1lZGlh
UGxheWVyTWFuYWdlclByb3h5TWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CTFBQzEzMzg1MTg1OTBDNDYwMEYzRUMwNSAvKiBSZW1vdGVPYmplY3RSZWdpc3RyeU1lc3NhZ2VS
ZWNlaXZlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjU5NDdBNzE4N0I1MTc2MDA0Mzc4NTcg
LyogUmVtb3RlU2Nyb2xsaW5nQ29vcmRpbmF0b3JNZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJQTU1QkE4MjYxQkEyNUNGRDAwN0NEMzNEIC8qIFJlbW90ZVdlYkluc3BlY3Rv
clByb3h5TWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2VzICovLApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9NZWRpYVBsYXllclByaXZhdGVSZW1vdGUu
Y3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9NZWRpYVBsYXllclByaXZh
dGVSZW1vdGUuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjdlMjQ1NzEwNTUwNzI0YzhjOTAzNDdkNzFmM2ZkNjk4
MjVjMzBhMWUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BV
L21lZGlhL01lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZS5jcHAKQEAgLTAsMCArMSw3NjggQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBg
YEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2luY2x1ZGUgImNv
bmZpZy5oIgorCisjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKQorI2luY2x1ZGUgIk1lZGlhUGxheWVy
UHJpdmF0ZVJlbW90ZS5oIgorCisjaW5jbHVkZSAiTG9nZ2luZy5oIgorI2luY2x1ZGUgIlJlbW90
ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5TWVzc2FnZXMuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL01l
ZGlhUGxheWVyLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9Ob3RJbXBsZW1lbnRlZC5oPgorI2luY2x1
ZGUgPFdlYkNvcmUvUGxhdGZvcm1MYXllci5oPgorI2luY2x1ZGUgPFdlYkNvcmUvUGxhdGZvcm1U
aW1lUmFuZ2VzLmg+CisjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KKyNpbmNsdWRlIDx3dGYvTWFp
blRocmVhZC5oPgorI2luY2x1ZGUgPHd0Zi9TdHJpbmdQcmludFN0cmVhbS5oPgorI2luY2x1ZGUg
PHd0Zi9VUkwuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CisKK25hbWVzcGFjZSBX
ZWJLaXQgewordXNpbmcgbmFtZXNwYWNlIFBBTDsKK3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwor
CitNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZShNZWRp
YVBsYXllciogcGxheWVyLCBNZWRpYVBsYXllckVudW1zOjpNZWRpYUVuZ2luZUlkZW50aWZpZXIg
ZW5naW5lSWRlbnRpZmllciwgTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlSWRlbnRpZmllciBwbGF5
ZXJJZGVudGlmaWVyLCBSZW1vdGVNZWRpYVBsYXllck1hbmFnZXImIG1hbmFnZXIpCisgICAgOiBt
X3BsYXllcihwbGF5ZXIpCisgICAgLCBtX21hbmFnZXIobWFuYWdlcikKKyAgICAsIG1fcmVtb3Rl
RW5naW5lSWRlbnRpZmllcihlbmdpbmVJZGVudGlmaWVyKQorICAgICwgbV9pZGVudGlmaWVyKHBs
YXllcklkZW50aWZpZXIpCisjaWYgIVJFTEVBU0VfTE9HX0RJU0FCTEVECisgICAgLCBtX2xvZ2dl
cihwbGF5ZXItPm1lZGlhUGxheWVyTG9nZ2VyKCkpCisgICAgLCBtX2xvZ0lkZW50aWZpZXIocGxh
eWVyLT5tZWRpYVBsYXllckxvZ0lkZW50aWZpZXIoKSkKKyNlbmRpZgoreworICAgIElORk9fTE9H
KExPR0lERU5USUZJRVIpOworfQorCitNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6On5NZWRpYVBs
YXllclByaXZhdGVSZW1vdGUoKQoreworICAgIElORk9fTE9HKExPR0lERU5USUZJRVIpOworICAg
IG1fcGxheWVyID0gbnVsbHB0cjsKK30KKwordm9pZCBNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6
Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6bG9hZChjb25zdCBTdHJpbmcmKQoreworICAgIG5v
dEltcGxlbWVudGVkKCk7Cit9CisKKyNpZiBFTkFCTEUoTUVESUFfU09VUkNFKQordm9pZCBNZWRp
YVBsYXllclByaXZhdGVSZW1vdGU6OmxvYWQoY29uc3QgU3RyaW5nJiwgTWVkaWFTb3VyY2VQcml2
YXRlQ2xpZW50KikKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorI2VuZGlmCisKKyNpZiBF
TkFCTEUoTUVESUFfU1RSRUFNKQordm9pZCBNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OmxvYWQo
TWVkaWFTdHJlYW1Qcml2YXRlJikKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorI2VuZGlm
Cit2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6Y2FuY2VsTG9hZCgpCit7CisgICAgbm90
SW1wbGVtZW50ZWQoKTsKK30KKworCit2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6cHJl
cGFyZVRvUGxheSgpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKworUGxhdGZvcm1MYXll
ciogTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpwbGF0Zm9ybUxheWVyKCkgY29uc3QKK3sKKyAg
ICByZXR1cm4gbnVsbHB0cjsKK30KKworI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpIHx8IChQTEFU
Rk9STShNQUMpICYmIEVOQUJMRShWSURFT19QUkVTRU5UQVRJT05fTU9ERSkpCit2b2lkIE1lZGlh
UGxheWVyUHJpdmF0ZVJlbW90ZTo6c2V0VmlkZW9GdWxsc2NyZWVuTGF5ZXIoUGxhdGZvcm1MYXll
ciosIFdURjo6RnVuY3Rpb248dm9pZCgpPiYmKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9
CisKK3ZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjp1cGRhdGVWaWRlb0Z1bGxzY3JlZW5J
bmxpbmVJbWFnZSgpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwordm9pZCBNZWRpYVBs
YXllclByaXZhdGVSZW1vdGU6OnNldFZpZGVvRnVsbHNjcmVlbkZyYW1lKEZsb2F0UmVjdCkKK3sK
KyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCit2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90
ZTo6c2V0VmlkZW9GdWxsc2NyZWVuR3Jhdml0eShNZWRpYVBsYXllcjo6VmlkZW9HcmF2aXR5KQor
eworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKK3ZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlUmVt
b3RlOjpzZXRWaWRlb0Z1bGxzY3JlZW5Nb2RlKE1lZGlhUGxheWVyOjpWaWRlb0Z1bGxzY3JlZW5N
b2RlKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKK3ZvaWQgTWVkaWFQbGF5ZXJQcml2
YXRlUmVtb3RlOjp2aWRlb0Z1bGxzY3JlZW5TdGFuZGJ5Q2hhbmdlZCgpCit7CisgICAgbm90SW1w
bGVtZW50ZWQoKTsKK30KKyNlbmRpZgorCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKK05TQXJy
YXkqIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6dGltZWRNZXRhZGF0YSgpIGNvbnN0Cit7Cisg
ICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gbnVsbHB0cjsKK30KKworU3RyaW5nIE1l
ZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6YWNjZXNzTG9nKCkgY29uc3QKK3sKKyAgICBub3RJbXBs
ZW1lbnRlZCgpOworICAgIHJldHVybiBlbXB0eVN0cmluZygpOworfQorCitTdHJpbmcgTWVkaWFQ
bGF5ZXJQcml2YXRlUmVtb3RlOjplcnJvckxvZygpIGNvbnN0Cit7CisgICAgbm90SW1wbGVtZW50
ZWQoKTsKKyAgICByZXR1cm4gZW1wdHlTdHJpbmcoKTsKK30KKyNlbmRpZgorCitsb25nIE1lZGlh
UGxheWVyUHJpdmF0ZVJlbW90ZTo6cGxhdGZvcm1FcnJvckNvZGUoKSBjb25zdAoreworICAgIG5v
dEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIDA7Cit9CisKK3ZvaWQgTWVkaWFQbGF5ZXJQcml2
YXRlUmVtb3RlOjpwbGF5KCkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCit2b2lkIE1l
ZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6cGF1c2UoKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7
Cit9CisKK3ZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpzZXRCdWZmZXJpbmdQb2xpY3ko
TWVkaWFQbGF5ZXI6OkJ1ZmZlcmluZ1BvbGljeSkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOwor
fQorCitib29sIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6c3VwcG9ydHNQaWN0dXJlSW5QaWN0
dXJlKCkgY29uc3QKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiBmYWxzZTsK
K30KKworYm9vbCBNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OnN1cHBvcnRzRnVsbHNjcmVlbigp
IGNvbnN0Cit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gZmFsc2U7Cit9CisK
K2Jvb2wgTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpzdXBwb3J0c1NjYW5uaW5nKCkgY29uc3QK
K3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiBmYWxzZTsKK30KKworYm9vbCBN
ZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OnJlcXVpcmVzSW1tZWRpYXRlQ29tcG9zaXRpbmcoKSBj
b25zdAoreworICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIGZhbHNlOworfQorCiti
b29sIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6Y2FuU2F2ZU1lZGlhRGF0YSgpIGNvbnN0Cit7
CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK0Zsb2F0U2l6
ZSBNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6Om5hdHVyYWxTaXplKCkgY29uc3QKK3sKKyAgICBu
b3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiB7IH07Cit9CisKK2Jvb2wgTWVkaWFQbGF5ZXJQ
cml2YXRlUmVtb3RlOjpoYXNWaWRlbygpIGNvbnN0Cit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsK
KyAgICByZXR1cm4gZmFsc2U7Cit9CisKK2Jvb2wgTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpo
YXNBdWRpbygpIGNvbnN0Cit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gZmFs
c2U7Cit9CisKK3ZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpzZXRWaXNpYmxlKGJvb2wp
Cit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKworTWVkaWFUaW1lIE1lZGlhUGxheWVyUHJp
dmF0ZVJlbW90ZTo6TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpkdXJhdGlvbk1lZGlhVGltZSgp
IGNvbnN0Cit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gTWVkaWFUaW1lOjp6
ZXJvVGltZSgpOworfQorCitNZWRpYVRpbWUgTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpjdXJy
ZW50TWVkaWFUaW1lKCkgY29uc3QKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVy
biBNZWRpYVRpbWU6Onplcm9UaW1lKCk7Cit9CisKK01lZGlhVGltZSBNZWRpYVBsYXllclByaXZh
dGVSZW1vdGU6OmdldFN0YXJ0RGF0ZSgpIGNvbnN0Cit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsK
KyAgICByZXR1cm4gTWVkaWFUaW1lOjp6ZXJvVGltZSgpOworfQorCit2b2lkIE1lZGlhUGxheWVy
UHJpdmF0ZVJlbW90ZTo6c2Vlayhjb25zdCBNZWRpYVRpbWUmKQoreworICAgIG5vdEltcGxlbWVu
dGVkKCk7Cit9CisKK3ZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpzZWVrV2l0aFRvbGVy
YW5jZShjb25zdCBNZWRpYVRpbWUmLCBjb25zdCBNZWRpYVRpbWUmLCBjb25zdCBNZWRpYVRpbWUm
KQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKK2Jvb2wgTWVkaWFQbGF5ZXJQcml2YXRl
UmVtb3RlOjpzZWVraW5nKCkgY29uc3QKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJl
dHVybiBmYWxzZTsKK30KKworTWVkaWFUaW1lIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6c3Rh
cnRUaW1lKCkgY29uc3QKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiBNZWRp
YVRpbWU6Onplcm9UaW1lKCk7Cit9CisKK3ZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpz
ZXRSYXRlRG91YmxlKGRvdWJsZSkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCitkb3Vi
bGUgTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpyYXRlKCkgY29uc3QKK3sKKyAgICBub3RJbXBs
ZW1lbnRlZCgpOworICAgIHJldHVybiAwOworfQorCit2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZVJl
bW90ZTo6c2V0UHJlc2VydmVzUGl0Y2goYm9vbCkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOwor
fQorCitib29sIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6cGF1c2VkKCkgY29uc3QKK3sKKyAg
ICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiBmYWxzZTsKK30KKwordm9pZCBNZWRpYVBs
YXllclByaXZhdGVSZW1vdGU6OnNldFZvbHVtZURvdWJsZShkb3VibGUpCit7CisgICAgbm90SW1w
bGVtZW50ZWQoKTsKK30KKwordm9pZCBNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OnNldE11dGVk
KGJvb2wpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKworYm9vbCBNZWRpYVBsYXllclBy
aXZhdGVSZW1vdGU6Omhhc0Nsb3NlZENhcHRpb25zKCkgY29uc3QKK3sKKyAgICBub3RJbXBsZW1l
bnRlZCgpOworICAgIHJldHVybiBmYWxzZTsKK30KKwordm9pZCBNZWRpYVBsYXllclByaXZhdGVS
ZW1vdGU6OnNldENsb3NlZENhcHRpb25zVmlzaWJsZShib29sKQoreworICAgIG5vdEltcGxlbWVu
dGVkKCk7Cit9CisKK2RvdWJsZSBNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6Om1heEZhc3RGb3J3
YXJkUmF0ZSgpIGNvbnN0Cit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gMDsK
K30KKworZG91YmxlIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6bWluRmFzdFJldmVyc2VSYXRl
KCkgY29uc3QKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiAwOworfQorCitN
ZWRpYVBsYXllcjo6TmV0d29ya1N0YXRlIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6bmV0d29y
a1N0YXRlKCkgY29uc3QKK3sKKyAgICBpZiAobV9pbnZhbGlkKQorICAgICAgICByZXR1cm4gTWVk
aWFQbGF5ZXI6Ok5ldHdvcmtTdGF0ZTo6Rm9ybWF0RXJyb3I7CisKKyAgICBub3RJbXBsZW1lbnRl
ZCgpOworICAgIHJldHVybiBNZWRpYVBsYXllcjo6TmV0d29ya1N0YXRlOjpFbXB0eTsKK30KKwor
TWVkaWFQbGF5ZXI6OlJlYWR5U3RhdGUgTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpyZWFkeVN0
YXRlKCkgY29uc3QKK3sKKyAgICBpZiAobV9pbnZhbGlkKQorICAgICAgICByZXR1cm4gTWVkaWFQ
bGF5ZXI6OlJlYWR5U3RhdGU6OkhhdmVOb3RoaW5nOworCisgICAgbm90SW1wbGVtZW50ZWQoKTsK
KyAgICByZXR1cm4gTWVkaWFQbGF5ZXI6OlJlYWR5U3RhdGU6OkhhdmVOb3RoaW5nOworfQorCitz
dGQ6OnVuaXF1ZV9wdHI8UGxhdGZvcm1UaW1lUmFuZ2VzPiBNZWRpYVBsYXllclByaXZhdGVSZW1v
dGU6OnNlZWthYmxlKCkgY29uc3QKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVy
biBtYWtlVW5pcXVlPFBsYXRmb3JtVGltZVJhbmdlcz4oKTsKK30KKworc3RkOjp1bmlxdWVfcHRy
PFBsYXRmb3JtVGltZVJhbmdlcz4gTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpidWZmZXJlZCgp
IGNvbnN0Cit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxQ
bGF0Zm9ybVRpbWVSYW5nZXM+KCk7Cit9CisKK01lZGlhVGltZSBNZWRpYVBsYXllclByaXZhdGVS
ZW1vdGU6Om1heE1lZGlhVGltZVNlZWthYmxlKCkgY29uc3QKK3sKKyAgICBub3RJbXBsZW1lbnRl
ZCgpOworICAgIHJldHVybiBNZWRpYVRpbWU6Onplcm9UaW1lKCk7Cit9CisKK01lZGlhVGltZSBN
ZWRpYVBsYXllclByaXZhdGVSZW1vdGU6Om1pbk1lZGlhVGltZVNlZWthYmxlKCkgY29uc3QKK3sK
KyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiBNZWRpYVRpbWU6Onplcm9UaW1lKCk7
Cit9CisKK2RvdWJsZSBNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OnNlZWthYmxlVGltZVJhbmdl
c0xhc3RNb2RpZmllZFRpbWUoKSBjb25zdAoreworICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAg
cmV0dXJuIDA7Cit9CisKK2RvdWJsZSBNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OmxpdmVVcGRh
dGVJbnRlcnZhbCgpIGNvbnN0Cit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4g
MDsKK30KKwordW5zaWduZWQgbG9uZyBsb25nIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6dG90
YWxCeXRlcygpIGNvbnN0Cit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gMDsK
K30KKworYm9vbCBNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OmRpZExvYWRpbmdQcm9ncmVzcygp
IGNvbnN0Cit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gZmFsc2U7Cit9CisK
K3ZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpzZXRTaXplKGNvbnN0IEludFNpemUmKQor
eworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKK3ZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlUmVt
b3RlOjpwYWludChHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJlY3QmKQoreworICAgIG5v
dEltcGxlbWVudGVkKCk7Cit9CisKK3ZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpwYWlu
dEN1cnJlbnRGcmFtZUluQ29udGV4dChHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJlY3Qm
KQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKK2Jvb2wgTWVkaWFQbGF5ZXJQcml2YXRl
UmVtb3RlOjpjb3B5VmlkZW9UZXh0dXJlVG9QbGF0Zm9ybVRleHR1cmUoR3JhcGhpY3NDb250ZXh0
M0QqLCBQbGF0Zm9ybTNET2JqZWN0LCBHQzNEZW51bSwgR0MzRGludCwgR0MzRGVudW0sIEdDM0Rl
bnVtLCBHQzNEZW51bSwgYm9vbCwgYm9vbCkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAg
IHJldHVybiBmYWxzZTsKK30KKworTmF0aXZlSW1hZ2VQdHIgTWVkaWFQbGF5ZXJQcml2YXRlUmVt
b3RlOjpuYXRpdmVJbWFnZUZvckN1cnJlbnRUaW1lKCkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgp
OworICAgIHJldHVybiBudWxscHRyOworfQorCit2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90
ZTo6c2V0UHJlbG9hZChNZWRpYVBsYXllcjo6UHJlbG9hZCkKK3sKKyAgICBub3RJbXBsZW1lbnRl
ZCgpOworfQorCitib29sIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6aGFzQXZhaWxhYmxlVmlk
ZW9GcmFtZSgpIGNvbnN0Cit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gZmFs
c2U7Cit9CisKK2Jvb2wgTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpjYW5Mb2FkUG9zdGVyKCkg
Y29uc3QKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiBmYWxzZTsKK30KKwor
dm9pZCBNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OnNldFBvc3Rlcihjb25zdCBTdHJpbmcmKQor
eworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKKyNpZiBVU0UoTkFUSVZFX0ZVTExTQ1JFRU5f
VklERU8pCit2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6ZW50ZXJGdWxsc2NyZWVuKCkK
K3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCit2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZVJl
bW90ZTo6ZXhpdEZ1bGxzY3JlZW4oKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisjZW5k
aWYKKworI2lmIEVOQUJMRShXSVJFTEVTU19QTEFZQkFDS19UQVJHRVQpCitTdHJpbmcgTWVkaWFQ
bGF5ZXJQcml2YXRlUmVtb3RlOjp3aXJlbGVzc1BsYXliYWNrVGFyZ2V0TmFtZSgpIGNvbnN0Cit7
CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gZW1wdHlTdHJpbmcoKTsKK30KKwor
TWVkaWFQbGF5ZXI6OldpcmVsZXNzUGxheWJhY2tUYXJnZXRUeXBlIE1lZGlhUGxheWVyUHJpdmF0
ZVJlbW90ZTo6d2lyZWxlc3NQbGF5YmFja1RhcmdldFR5cGUoKSBjb25zdAoreworICAgIG5vdElt
cGxlbWVudGVkKCk7CisgICAgcmV0dXJuIE1lZGlhUGxheWVyOjpUYXJnZXRUeXBlTm9uZTsKK30K
KworYm9vbCBNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OndpcmVsZXNzVmlkZW9QbGF5YmFja0Rp
c2FibGVkKCkgY29uc3QKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiB0cnVl
OworfQorCit2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6c2V0V2lyZWxlc3NWaWRlb1Bs
YXliYWNrRGlzYWJsZWQoYm9vbCkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCitib29s
IE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6Y2FuUGxheVRvV2lyZWxlc3NQbGF5YmFja1Rhcmdl
dCgpIGNvbnN0Cit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gZmFsc2U7Cit9
CisKK2Jvb2wgTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjppc0N1cnJlbnRQbGF5YmFja1Rhcmdl
dFdpcmVsZXNzKCkgY29uc3QKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiBm
YWxzZTsKK30KKwordm9pZCBNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OnNldFdpcmVsZXNzUGxh
eWJhY2tUYXJnZXQoUmVmPE1lZGlhUGxheWJhY2tUYXJnZXQ+JiYpCit7CisgICAgbm90SW1wbGVt
ZW50ZWQoKTsKK30KKwordm9pZCBNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OnNldFNob3VsZFBs
YXlUb1BsYXliYWNrVGFyZ2V0KGJvb2wpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKyNl
bmRpZgorCisjaWYgVVNFKE5BVElWRV9GVUxMU0NSRUVOX1ZJREVPKQorYm9vbCBNZWRpYVBsYXll
clByaXZhdGVSZW1vdGU6OmNhbkVudGVyRnVsbHNjcmVlbigpIGNvbnN0Cit7CisgICAgbm90SW1w
bGVtZW50ZWQoKTsKKyAgICByZXR1cm4gZmFsc2U7Cit9CisjZW5kaWYKKworYm9vbCBNZWRpYVBs
YXllclByaXZhdGVSZW1vdGU6OnN1cHBvcnRzQWNjZWxlcmF0ZWRSZW5kZXJpbmcoKSBjb25zdAor
eworICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIGZhbHNlOworfQorCit2b2lkIE1l
ZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6YWNjZWxlcmF0ZWRSZW5kZXJpbmdTdGF0ZUNoYW5nZWQo
KQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKK2Jvb2wgTWVkaWFQbGF5ZXJQcml2YXRl
UmVtb3RlOjpzaG91bGRNYWludGFpbkFzcGVjdFJhdGlvKCkgY29uc3QKK3sKKyAgICBub3RJbXBs
ZW1lbnRlZCgpOworICAgIHJldHVybiB0cnVlOworfQorCit2b2lkIE1lZGlhUGxheWVyUHJpdmF0
ZVJlbW90ZTo6c2V0U2hvdWxkTWFpbnRhaW5Bc3BlY3RSYXRpbyhib29sKQoreworICAgIG5vdElt
cGxlbWVudGVkKCk7Cit9CisKK2Jvb2wgTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpoYXNTaW5n
bGVTZWN1cml0eU9yaWdpbigpIGNvbnN0Cit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICBy
ZXR1cm4gZmFsc2U7Cit9CisKK2Jvb2wgTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpkaWRQYXNz
Q09SU0FjY2Vzc0NoZWNrKCkgY29uc3QKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJl
dHVybiBmYWxzZTsKK30KKworT3B0aW9uYWw8Ym9vbD4gTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3Rl
Ojp3b3VsZFRhaW50T3JpZ2luKGNvbnN0IFNlY3VyaXR5T3JpZ2luJikgY29uc3QKK3sKKyAgICBu
b3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Cit9CisKK01lZGlhUGxh
eWVyOjpNb3ZpZUxvYWRUeXBlIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6bW92aWVMb2FkVHlw
ZSgpIGNvbnN0Cit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gTWVkaWFQbGF5
ZXI6Ok1vdmllTG9hZFR5cGU6OlVua25vd247Cit9CisKK3ZvaWQgTWVkaWFQbGF5ZXJQcml2YXRl
UmVtb3RlOjpwcmVwYXJlRm9yUmVuZGVyaW5nKCkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOwor
fQorCitNZWRpYVRpbWUgTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjptZWRpYVRpbWVGb3JUaW1l
VmFsdWUoY29uc3QgTWVkaWFUaW1lJiB0aW1lVmFsdWUpIGNvbnN0Cit7CisgICAgbm90SW1wbGVt
ZW50ZWQoKTsKKyAgICByZXR1cm4gdGltZVZhbHVlOworfQorCitkb3VibGUgTWVkaWFQbGF5ZXJQ
cml2YXRlUmVtb3RlOjptYXhpbXVtRHVyYXRpb25Ub0NhY2hlTWVkaWFUaW1lKCkgY29uc3QKK3sK
KyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiAwOworfQorCit1bnNpZ25lZCBNZWRp
YVBsYXllclByaXZhdGVSZW1vdGU6OmRlY29kZWRGcmFtZUNvdW50KCkgY29uc3QKK3sKKyAgICBu
b3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiAwOworfQorCit1bnNpZ25lZCBNZWRpYVBsYXll
clByaXZhdGVSZW1vdGU6OmRyb3BwZWRGcmFtZUNvdW50KCkgY29uc3QKK3sKKyAgICBub3RJbXBs
ZW1lbnRlZCgpOworICAgIHJldHVybiAwOworfQorCit1bnNpZ25lZCBNZWRpYVBsYXllclByaXZh
dGVSZW1vdGU6OmF1ZGlvRGVjb2RlZEJ5dGVDb3VudCgpIGNvbnN0Cit7CisgICAgbm90SW1wbGVt
ZW50ZWQoKTsKKyAgICByZXR1cm4gMDsKK30KKwordW5zaWduZWQgTWVkaWFQbGF5ZXJQcml2YXRl
UmVtb3RlOjp2aWRlb0RlY29kZWRCeXRlQ291bnQoKSBjb25zdAoreworICAgIG5vdEltcGxlbWVu
dGVkKCk7CisgICAgcmV0dXJuIDA7Cit9CisKK3ZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3Rl
OjpzZXRQcml2YXRlQnJvd3NpbmdNb2RlKGJvb2wpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsK
K30KKworU3RyaW5nIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6ZW5naW5lRGVzY3JpcHRpb24o
KSBjb25zdAoreworICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIGVtcHR5U3RyaW5n
KCk7Cit9CisKKyNpZiBFTkFCTEUoV0VCX0FVRElPKQorQXVkaW9Tb3VyY2VQcm92aWRlciogTWVk
aWFQbGF5ZXJQcml2YXRlUmVtb3RlOjphdWRpb1NvdXJjZVByb3ZpZGVyKCkKK3sKKyAgICBub3RJ
bXBsZW1lbnRlZCgpOworICAgIHJldHVybiBudWxscHRyOworfQorI2VuZGlmCisKKyNpZiBFTkFC
TEUoTEVHQUNZX0VOQ1JZUFRFRF9NRURJQSkKK3N0ZDo6dW5pcXVlX3B0cjxMZWdhY3lDRE1TZXNz
aW9uPiBNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OmNyZWF0ZVNlc3Npb24oY29uc3QgU3RyaW5n
JiwgTGVnYWN5Q0RNU2Vzc2lvbkNsaWVudCopCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAg
ICByZXR1cm4gbnVsbHB0cjsKK30KKwordm9pZCBNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OnNl
dENETVNlc3Npb24oTGVnYWN5Q0RNU2Vzc2lvbiopCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsK
K30KKwordm9pZCBNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OmtleUFkZGVkKCkKK3sKKyAgICBu
b3RJbXBsZW1lbnRlZCgpOworfQorI2VuZGlmCisKKyNpZiBFTkFCTEUoRU5DUllQVEVEX01FRElB
KQordm9pZCBNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OmNkbUluc3RhbmNlQXR0YWNoZWQoQ0RN
SW5zdGFuY2UmKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKK3ZvaWQgTWVkaWFQbGF5
ZXJQcml2YXRlUmVtb3RlOjpjZG1JbnN0YW5jZURldGFjaGVkKENETUluc3RhbmNlJikKK3sKKyAg
ICBub3RJbXBsZW1lbnRlZCgpOworfQorCit2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6
YXR0ZW1wdFRvRGVjcnlwdFdpdGhJbnN0YW5jZShDRE1JbnN0YW5jZSYpCit7CisgICAgbm90SW1w
bGVtZW50ZWQoKTsKK30KKworYm9vbCBNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OndhaXRpbmdG
b3JLZXkoKSBjb25zdAoreworICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIGZhbHNl
OworfQorI2VuZGlmCisKKyNpZiBFTkFCTEUoVklERU9fVFJBQ0spCitib29sIE1lZGlhUGxheWVy
UHJpdmF0ZVJlbW90ZTo6cmVxdWlyZXNUZXh0VHJhY2tSZXByZXNlbnRhdGlvbigpIGNvbnN0Cit7
CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK3ZvaWQgTWVk
aWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpzZXRUZXh0VHJhY2tSZXByZXNlbnRhdGlvbihUZXh0VHJh
Y2tSZXByZXNlbnRhdGlvbiopCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwordm9pZCBN
ZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OnN5bmNUZXh0VHJhY2tCb3VuZHMoKQoreworICAgIG5v
dEltcGxlbWVudGVkKCk7Cit9CisKK3ZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjp0cmFj
a3NDaGFuZ2VkKCkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorI2VuZGlmCisKKyNpZiBV
U0UoR1NUUkVBTUVSKQordm9pZCBNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OnNpbXVsYXRlQXVk
aW9JbnRlcnJ1cHRpb24oKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisjZW5kaWYKKwor
dm9pZCBNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OmJlZ2luU2ltdWxhdGVkSERDUEVycm9yKCkK
K3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCit2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZVJl
bW90ZTo6ZW5kU2ltdWxhdGVkSERDUEVycm9yKCkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOwor
fQorCitTdHJpbmcgTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpsYW5ndWFnZU9mUHJpbWFyeUF1
ZGlvVHJhY2soKSBjb25zdAoreworICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIGVt
cHR5U3RyaW5nKCk7Cit9CisKK3NpemVfdCBNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OmV4dHJh
TWVtb3J5Q29zdCgpIGNvbnN0Cit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4g
MDsKK30KKwordW5zaWduZWQgbG9uZyBsb25nIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6Zmls
ZVNpemUoKSBjb25zdAoreworICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIDA7Cit9
CisKK2Jvb2wgTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjplbmRlZCgpIGNvbnN0Cit7CisgICAg
bm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK09wdGlvbmFsPFZpZGVv
UGxheWJhY2tRdWFsaXR5TWV0cmljcz4gTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjp2aWRlb1Bs
YXliYWNrUXVhbGl0eU1ldHJpY3MoKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0
dXJuIFdURjo6bnVsbG9wdDsKK30KKworI2lmIEVOQUJMRShBVkZfQ0FQVElPTlMpCit2b2lkIE1l
ZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6bm90aWZ5VHJhY2tNb2RlQ2hhbmdlZCgpCit7CisgICAg
bm90SW1wbGVtZW50ZWQoKTsKK30KKyNlbmRpZgorCit2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZVJl
bW90ZTo6bm90aWZ5QWN0aXZlU291cmNlQnVmZmVyc0NoYW5nZWQoKQoreworICAgIG5vdEltcGxl
bWVudGVkKCk7Cit9CisKK3ZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpzZXRTaG91bGRE
aXNhYmxlU2xlZXAoYm9vbCkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCit2b2lkIE1l
ZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6YXBwbGljYXRpb25XaWxsUmVzaWduQWN0aXZlKCkKK3sK
KyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCit2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90
ZTo6YXBwbGljYXRpb25EaWRCZWNvbWVBY3RpdmUoKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7
Cit9CisKK2Jvb2wgTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpwZXJmb3JtVGFza0F0TWVkaWFU
aW1lKFdURjo6RnVuY3Rpb248dm9pZCgpPiYmLCBNZWRpYVRpbWUpCit7CisgICAgbm90SW1wbGVt
ZW50ZWQoKTsKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK2Jvb2wgTWVkaWFQbGF5ZXJQcml2YXRl
UmVtb3RlOjpzaG91bGRJZ25vcmVJbnRyaW5zaWNTaXplKCkKK3sKKyAgICBub3RJbXBsZW1lbnRl
ZCgpOworICAgIHJldHVybiBmYWxzZTsKK30KKworI2lmICFSRUxFQVNFX0xPR19ESVNBQkxFRAor
V1RGTG9nQ2hhbm5lbCYgTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpsb2dDaGFubmVsKCkgY29u
c3QKK3sKKyAgICByZXR1cm4gV2ViS2l0MkxvZ1dlYlJUQzsKK30KKyNlbmRpZgorCit9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL0dQVS9tZWRpYS9NZWRpYVBsYXllclByaXZhdGVSZW1vdGUuaCBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlLmgKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uZjVlMWE2NTU2ZTY2YzE5ZWZlYWY1MjNjODAwYzhjZjU2YTNlYTkzZAotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvTWVkaWFQbGF5ZXJQ
cml2YXRlUmVtb3RlLmgKQEAgLTAsMCArMSwyOTkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICog
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQor
ICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4gCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoR1BVX1BS
T0NFU1MpCisKKyNpbmNsdWRlICJSZW1vdGVNZWRpYVBsYXllck1hbmFnZXIuaCIKKyNpbmNsdWRl
IDxXZWJDb3JlL01lZGlhUGxheWVyUHJpdmF0ZS5oPgorI2luY2x1ZGUgPHd0Zi9Mb2dnZXJIZWxw
ZXIuaD4KKyNpbmNsdWRlIDx3dGYvTWVkaWFUaW1lLmg+CisjaW5jbHVkZSA8d3RmL1dlYWtQdHIu
aD4KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90
ZSBmaW5hbAorICAgIDogcHVibGljIENhbk1ha2VXZWFrUHRyPE1lZGlhUGxheWVyUHJpdmF0ZVJl
bW90ZT4KKyAgICAsIHB1YmxpYyBNZWRpYVBsYXllclByaXZhdGVJbnRlcmZhY2UKKyNpZiAhUkVM
RUFTRV9MT0dfRElTQUJMRUQKKyAgICAsIHByaXZhdGUgTG9nZ2VySGVscGVyCisjZW5kaWYKK3sK
K3B1YmxpYzoKKyAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPE1lZGlhUGxheWVyUHJpdmF0ZVJl
bW90ZT4gY3JlYXRlKE1lZGlhUGxheWVyKiBwbGF5ZXIsIE1lZGlhUGxheWVyRW51bXM6Ok1lZGlh
RW5naW5lSWRlbnRpZmllciByZW1vdGVFbmdpbmVJZGVudGlmaWVyLCBNZWRpYVBsYXllclByaXZh
dGVSZW1vdGVJZGVudGlmaWVyIGlkZW50aWZpZXIsIFJlbW90ZU1lZGlhUGxheWVyTWFuYWdlciYg
bWFuYWdlcikKKyAgICB7CisgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPE1lZGlhUGxheWVyUHJp
dmF0ZVJlbW90ZT4ocGxheWVyLCByZW1vdGVFbmdpbmVJZGVudGlmaWVyLCBpZGVudGlmaWVyLCBt
YW5hZ2VyKTsKKyAgICB9CisKKyAgICBleHBsaWNpdCBNZWRpYVBsYXllclByaXZhdGVSZW1vdGUo
TWVkaWFQbGF5ZXIqLCBNZWRpYVBsYXllckVudW1zOjpNZWRpYUVuZ2luZUlkZW50aWZpZXIsIE1l
ZGlhUGxheWVyUHJpdmF0ZVJlbW90ZUlkZW50aWZpZXIsIFJlbW90ZU1lZGlhUGxheWVyTWFuYWdl
ciYpOworICAgIHZpcnR1YWwgfk1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZSgpOworCisgICAgdm9p
ZCBpbnZhbGlkYXRlKCkgeyBtX2ludmFsaWQgPSB0cnVlOyB9CisgICAgTWVkaWFQbGF5ZXJFbnVt
czo6TWVkaWFFbmdpbmVJZGVudGlmaWVyIHJlbW90ZUVuZ2luZUlkZW50aWZpZXIoKSBjb25zdCB7
IHJldHVybiBtX3JlbW90ZUVuZ2luZUlkZW50aWZpZXI7IH0KKyAgICBNZWRpYVBsYXllclByaXZh
dGVSZW1vdGVJZGVudGlmaWVyIHBsYXllckl0ZW50aWZpZXIoKSBjb25zdCB7IHJldHVybiBtX2lk
ZW50aWZpZXI7IH0KKworI2lmICFSRUxFQVNFX0xPR19ESVNBQkxFRAorICAgIGNvbnN0IExvZ2dl
ciYgbG9nZ2VyKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9sb2dnZXIuZ2V0KCk7IH0KKyAgICBj
b25zdCBjaGFyKiBsb2dDbGFzc05hbWUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiAiTWVkaWFQ
bGF5ZXJQcml2YXRlUmVtb3RlIjsgfQorICAgIGNvbnN0IHZvaWQqIGxvZ0lkZW50aWZpZXIoKSBj
b25zdCBmaW5hbCB7IHJldHVybiByZWludGVycHJldF9jYXN0PGNvbnN0IHZvaWQqPihtX2xvZ0lk
ZW50aWZpZXIpOyB9CisgICAgV1RGTG9nQ2hhbm5lbCYgbG9nQ2hhbm5lbCgpIGNvbnN0IGZpbmFs
OworI2VuZGlmCisKK3ByaXZhdGU6CisKKyAgICB2b2lkIGxvYWQoY29uc3QgU3RyaW5nJikgZmlu
YWw7CisjaWYgRU5BQkxFKE1FRElBX1NPVVJDRSkKKyAgICB2b2lkIGxvYWQoY29uc3QgU3RyaW5n
JiwgTWVkaWFTb3VyY2VQcml2YXRlQ2xpZW50KikgZmluYWw7CisjZW5kaWYKKyNpZiBFTkFCTEUo
TUVESUFfU1RSRUFNKQorICAgIHZvaWQgbG9hZChNZWRpYVN0cmVhbVByaXZhdGUmKSBmaW5hbDsK
KyNlbmRpZgorICAgIHZvaWQgY2FuY2VsTG9hZCgpIGZpbmFsOworICAgIAorICAgIHZvaWQgcHJl
cGFyZVRvUGxheSgpIGZpbmFsOworICAgIFBsYXRmb3JtTGF5ZXIqIHBsYXRmb3JtTGF5ZXIoKSBj
b25zdCBmaW5hbDsKKworI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpIHx8IChQTEFURk9STShNQUMp
ICYmIEVOQUJMRShWSURFT19QUkVTRU5UQVRJT05fTU9ERSkpCisgICAgdm9pZCBzZXRWaWRlb0Z1
bGxzY3JlZW5MYXllcihQbGF0Zm9ybUxheWVyKiwgV1RGOjpGdW5jdGlvbjx2b2lkKCk+JiYgY29t
cGxldGlvbkhhbmRsZXIpIGZpbmFsOworICAgIHZvaWQgdXBkYXRlVmlkZW9GdWxsc2NyZWVuSW5s
aW5lSW1hZ2UoKSBmaW5hbDsKKyAgICB2b2lkIHNldFZpZGVvRnVsbHNjcmVlbkZyYW1lKEZsb2F0
UmVjdCkgZmluYWw7CisgICAgdm9pZCBzZXRWaWRlb0Z1bGxzY3JlZW5HcmF2aXR5KE1lZGlhUGxh
eWVyOjpWaWRlb0dyYXZpdHkpIGZpbmFsOworICAgIHZvaWQgc2V0VmlkZW9GdWxsc2NyZWVuTW9k
ZShNZWRpYVBsYXllcjo6VmlkZW9GdWxsc2NyZWVuTW9kZSkgZmluYWw7CisgICAgdm9pZCB2aWRl
b0Z1bGxzY3JlZW5TdGFuZGJ5Q2hhbmdlZCgpIGZpbmFsOworI2VuZGlmCisKKyNpZiBQTEFURk9S
TShJT1NfRkFNSUxZKQorICAgIE5TQXJyYXkgKnRpbWVkTWV0YWRhdGEoKSBjb25zdCBmaW5hbDsK
KyAgICBTdHJpbmcgYWNjZXNzTG9nKCkgY29uc3QgZmluYWw7CisgICAgU3RyaW5nIGVycm9yTG9n
KCkgY29uc3QgZmluYWw7CisjZW5kaWYKKyAgICBsb25nIHBsYXRmb3JtRXJyb3JDb2RlKCkgY29u
c3QgZmluYWw7CisKKyAgICB2b2lkIHBsYXkoKSBmaW5hbDsKKyAgICB2b2lkIHBhdXNlKCkgZmlu
YWw7CisgICAgdm9pZCBzZXRCdWZmZXJpbmdQb2xpY3koTWVkaWFQbGF5ZXI6OkJ1ZmZlcmluZ1Bv
bGljeSkgZmluYWw7CisKKyAgICBib29sIHN1cHBvcnRzUGljdHVyZUluUGljdHVyZSgpIGNvbnN0
IGZpbmFsOworICAgIGJvb2wgc3VwcG9ydHNGdWxsc2NyZWVuKCkgY29uc3QgZmluYWw7CisgICAg
Ym9vbCBzdXBwb3J0c1NjYW5uaW5nKCkgY29uc3QgZmluYWw7CisgICAgYm9vbCByZXF1aXJlc0lt
bWVkaWF0ZUNvbXBvc2l0aW5nKCkgY29uc3QgZmluYWw7CisKKyAgICBib29sIGNhblNhdmVNZWRp
YURhdGEoKSBjb25zdCBmaW5hbDsKKworICAgIEZsb2F0U2l6ZSBuYXR1cmFsU2l6ZSgpIGNvbnN0
IGZpbmFsOworCisgICAgYm9vbCBoYXNWaWRlbygpIGNvbnN0IGZpbmFsOworICAgIGJvb2wgaGFz
QXVkaW8oKSBjb25zdCBmaW5hbDsKKworICAgIHZvaWQgc2V0VmlzaWJsZShib29sKSBmaW5hbDsK
KworICAgIE1lZGlhVGltZSBkdXJhdGlvbk1lZGlhVGltZSgpIGNvbnN0IGZpbmFsOworICAgIE1l
ZGlhVGltZSBjdXJyZW50TWVkaWFUaW1lKCkgY29uc3QgZmluYWw7CisKKyAgICBNZWRpYVRpbWUg
Z2V0U3RhcnREYXRlKCkgY29uc3QgZmluYWw7CisKKyAgICB2b2lkIHNlZWsoY29uc3QgTWVkaWFU
aW1lJikgZmluYWw7CisgICAgdm9pZCBzZWVrV2l0aFRvbGVyYW5jZShjb25zdCBNZWRpYVRpbWUm
LCBjb25zdCBNZWRpYVRpbWUmLCBjb25zdCBNZWRpYVRpbWUmKSBmaW5hbDsKKworICAgIGJvb2wg
c2Vla2luZygpIGNvbnN0IGZpbmFsOworCisgICAgTWVkaWFUaW1lIHN0YXJ0VGltZSgpIGNvbnN0
IGZpbmFsOworCisgICAgdm9pZCBzZXRSYXRlRG91YmxlKGRvdWJsZSkgZmluYWw7CisgICAgZG91
YmxlIHJhdGUoKSBjb25zdCBmaW5hbDsKKworICAgIHZvaWQgc2V0UHJlc2VydmVzUGl0Y2goYm9v
bCkgZmluYWw7CisKKyAgICBib29sIHBhdXNlZCgpIGNvbnN0IGZpbmFsOworCisgICAgdm9pZCBz
ZXRWb2x1bWVEb3VibGUoZG91YmxlKSBmaW5hbDsKKworI2lmIFBMQVRGT1JNKElPU19GQU1JTFkp
IHx8IFVTRShHU1RSRUFNRVIpCisgICAgZmxvYXQgdm9sdW1lKCkgY29uc3QgZmluYWwgeyByZXR1
cm4gMTsgfQorI2VuZGlmCisKKyAgICB2b2lkIHNldE11dGVkKGJvb2wpIGZpbmFsOworCisgICAg
Ym9vbCBoYXNDbG9zZWRDYXB0aW9ucygpIGNvbnN0IGZpbmFsOworICAgIHZvaWQgc2V0Q2xvc2Vk
Q2FwdGlvbnNWaXNpYmxlKGJvb2wpIGZpbmFsOworCisgICAgZG91YmxlIG1heEZhc3RGb3J3YXJk
UmF0ZSgpIGNvbnN0IGZpbmFsOworICAgIGRvdWJsZSBtaW5GYXN0UmV2ZXJzZVJhdGUoKSBjb25z
dCBmaW5hbDsKKworICAgIE1lZGlhUGxheWVyOjpOZXR3b3JrU3RhdGUgbmV0d29ya1N0YXRlKCkg
Y29uc3QgZmluYWw7CisgICAgTWVkaWFQbGF5ZXI6OlJlYWR5U3RhdGUgcmVhZHlTdGF0ZSgpIGNv
bnN0IGZpbmFsOworCisgICAgc3RkOjp1bmlxdWVfcHRyPFBsYXRmb3JtVGltZVJhbmdlcz4gc2Vl
a2FibGUoKSBjb25zdCBmaW5hbDsKKworICAgIE1lZGlhVGltZSBtYXhNZWRpYVRpbWVTZWVrYWJs
ZSgpIGNvbnN0IGZpbmFsOworICAgIE1lZGlhVGltZSBtaW5NZWRpYVRpbWVTZWVrYWJsZSgpIGNv
bnN0IGZpbmFsOworICAgIHN0ZDo6dW5pcXVlX3B0cjxQbGF0Zm9ybVRpbWVSYW5nZXM+IGJ1ZmZl
cmVkKCkgY29uc3QgZmluYWw7CisgICAgZG91YmxlIHNlZWthYmxlVGltZVJhbmdlc0xhc3RNb2Rp
ZmllZFRpbWUoKSBjb25zdCBmaW5hbDsKKyAgICBkb3VibGUgbGl2ZVVwZGF0ZUludGVydmFsKCkg
Y29uc3QgZmluYWw7CisKKyAgICB1bnNpZ25lZCBsb25nIGxvbmcgdG90YWxCeXRlcygpIGNvbnN0
IGZpbmFsOworICAgIGJvb2wgZGlkTG9hZGluZ1Byb2dyZXNzKCkgY29uc3QgZmluYWw7CisKKyAg
ICB2b2lkIHNldFNpemUoY29uc3QgSW50U2l6ZSYpIGZpbmFsOworCisgICAgdm9pZCBwYWludChH
cmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJlY3QmKSBmaW5hbDsKKworICAgIHZvaWQgcGFp
bnRDdXJyZW50RnJhbWVJbkNvbnRleHQoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRSZWN0
JikgZmluYWw7CisgICAgYm9vbCBjb3B5VmlkZW9UZXh0dXJlVG9QbGF0Zm9ybVRleHR1cmUoR3Jh
cGhpY3NDb250ZXh0M0QqLCBQbGF0Zm9ybTNET2JqZWN0LCBHQzNEZW51bSwgR0MzRGludCwgR0Mz
RGVudW0sIEdDM0RlbnVtLCBHQzNEZW51bSwgYm9vbCwgYm9vbCkgZmluYWw7CisgICAgTmF0aXZl
SW1hZ2VQdHIgbmF0aXZlSW1hZ2VGb3JDdXJyZW50VGltZSgpIGZpbmFsOworCisgICAgdm9pZCBz
ZXRQcmVsb2FkKE1lZGlhUGxheWVyOjpQcmVsb2FkKSBmaW5hbDsKKworICAgIGJvb2wgaGFzQXZh
aWxhYmxlVmlkZW9GcmFtZSgpIGNvbnN0IGZpbmFsOworCisgICAgYm9vbCBjYW5Mb2FkUG9zdGVy
KCkgY29uc3QgZmluYWw7CisgICAgdm9pZCBzZXRQb3N0ZXIoY29uc3QgU3RyaW5nJikgZmluYWw7
CisKKyNpZiBVU0UoTkFUSVZFX0ZVTExTQ1JFRU5fVklERU8pCisgICAgdm9pZCBlbnRlckZ1bGxz
Y3JlZW4oKSBmaW5hbDsKKyAgICB2b2lkIGV4aXRGdWxsc2NyZWVuKCkgZmluYWw7CisjZW5kaWYK
KworI2lmIEVOQUJMRShXSVJFTEVTU19QTEFZQkFDS19UQVJHRVQpCisgICAgU3RyaW5nIHdpcmVs
ZXNzUGxheWJhY2tUYXJnZXROYW1lKCkgY29uc3QgZmluYWw7CisgICAgTWVkaWFQbGF5ZXI6Oldp
cmVsZXNzUGxheWJhY2tUYXJnZXRUeXBlIHdpcmVsZXNzUGxheWJhY2tUYXJnZXRUeXBlKCkgY29u
c3QgZmluYWw7CisKKyAgICBib29sIHdpcmVsZXNzVmlkZW9QbGF5YmFja0Rpc2FibGVkKCkgY29u
c3QgZmluYWw7CisgICAgdm9pZCBzZXRXaXJlbGVzc1ZpZGVvUGxheWJhY2tEaXNhYmxlZChib29s
KSBmaW5hbDsKKworICAgIGJvb2wgY2FuUGxheVRvV2lyZWxlc3NQbGF5YmFja1RhcmdldCgpIGNv
bnN0IGZpbmFsOworICAgIGJvb2wgaXNDdXJyZW50UGxheWJhY2tUYXJnZXRXaXJlbGVzcygpIGNv
bnN0IGZpbmFsOworICAgIHZvaWQgc2V0V2lyZWxlc3NQbGF5YmFja1RhcmdldChSZWY8TWVkaWFQ
bGF5YmFja1RhcmdldD4mJikgZmluYWw7CisKKyAgICB2b2lkIHNldFNob3VsZFBsYXlUb1BsYXli
YWNrVGFyZ2V0KGJvb2wpIGZpbmFsOworI2VuZGlmCisKKyNpZiBVU0UoTkFUSVZFX0ZVTExTQ1JF
RU5fVklERU8pCisgICAgYm9vbCBjYW5FbnRlckZ1bGxzY3JlZW4oKSBjb25zdCBmaW5hbDsKKyNl
bmRpZgorCisgICAgYm9vbCBzdXBwb3J0c0FjY2VsZXJhdGVkUmVuZGVyaW5nKCkgY29uc3QgZmlu
YWw7CisgICAgdm9pZCBhY2NlbGVyYXRlZFJlbmRlcmluZ1N0YXRlQ2hhbmdlZCgpIGZpbmFsOwor
CisgICAgYm9vbCBzaG91bGRNYWludGFpbkFzcGVjdFJhdGlvKCkgY29uc3QgZmluYWw7CisgICAg
dm9pZCBzZXRTaG91bGRNYWludGFpbkFzcGVjdFJhdGlvKGJvb2wpIGZpbmFsOworCisgICAgYm9v
bCBoYXNTaW5nbGVTZWN1cml0eU9yaWdpbigpIGNvbnN0IGZpbmFsOworICAgIGJvb2wgZGlkUGFz
c0NPUlNBY2Nlc3NDaGVjaygpIGNvbnN0IGZpbmFsOworICAgIE9wdGlvbmFsPGJvb2w+IHdvdWxk
VGFpbnRPcmlnaW4oY29uc3QgU2VjdXJpdHlPcmlnaW4mKSBjb25zdCBmaW5hbDsKKworICAgIE1l
ZGlhUGxheWVyOjpNb3ZpZUxvYWRUeXBlIG1vdmllTG9hZFR5cGUoKSBjb25zdCBmaW5hbDsKKwor
ICAgIHZvaWQgcHJlcGFyZUZvclJlbmRlcmluZygpIGZpbmFsOworCisgICAgTWVkaWFUaW1lIG1l
ZGlhVGltZUZvclRpbWVWYWx1ZShjb25zdCBNZWRpYVRpbWUmIHRpbWVWYWx1ZSkgY29uc3QgZmlu
YWw7CisKKyAgICBkb3VibGUgbWF4aW11bUR1cmF0aW9uVG9DYWNoZU1lZGlhVGltZSgpIGNvbnN0
IGZpbmFsOworCisgICAgdW5zaWduZWQgZGVjb2RlZEZyYW1lQ291bnQoKSBjb25zdCBmaW5hbDsK
KyAgICB1bnNpZ25lZCBkcm9wcGVkRnJhbWVDb3VudCgpIGNvbnN0IGZpbmFsOworICAgIHVuc2ln
bmVkIGF1ZGlvRGVjb2RlZEJ5dGVDb3VudCgpIGNvbnN0IGZpbmFsOworICAgIHVuc2lnbmVkIHZp
ZGVvRGVjb2RlZEJ5dGVDb3VudCgpIGNvbnN0IGZpbmFsOworCisgICAgdm9pZCBzZXRQcml2YXRl
QnJvd3NpbmdNb2RlKGJvb2wpIGZpbmFsOworICAgIFN0cmluZyBlbmdpbmVEZXNjcmlwdGlvbigp
IGNvbnN0IGZpbmFsOworCisjaWYgRU5BQkxFKFdFQl9BVURJTykKKyAgICBBdWRpb1NvdXJjZVBy
b3ZpZGVyKiBhdWRpb1NvdXJjZVByb3ZpZGVyKCkgZmluYWw7CisjZW5kaWYKKworI2lmIEVOQUJM
RShMRUdBQ1lfRU5DUllQVEVEX01FRElBKQorICAgIHN0ZDo6dW5pcXVlX3B0cjxMZWdhY3lDRE1T
ZXNzaW9uPiBjcmVhdGVTZXNzaW9uKGNvbnN0IFN0cmluZyYsIExlZ2FjeUNETVNlc3Npb25DbGll
bnQqKSBmaW5hbDsKKyAgICB2b2lkIHNldENETVNlc3Npb24oTGVnYWN5Q0RNU2Vzc2lvbiopIGZp
bmFsOworICAgIHZvaWQga2V5QWRkZWQoKSBmaW5hbDsKKyNlbmRpZgorCisjaWYgRU5BQkxFKEVO
Q1JZUFRFRF9NRURJQSkKKyAgICB2b2lkIGNkbUluc3RhbmNlQXR0YWNoZWQoQ0RNSW5zdGFuY2Um
KSBmaW5hbDsKKyAgICB2b2lkIGNkbUluc3RhbmNlRGV0YWNoZWQoQ0RNSW5zdGFuY2UmKSBmaW5h
bDsKKyAgICB2b2lkIGF0dGVtcHRUb0RlY3J5cHRXaXRoSW5zdGFuY2UoQ0RNSW5zdGFuY2UmKSBm
aW5hbDsKKyAgICBib29sIHdhaXRpbmdGb3JLZXkoKSBjb25zdCBmaW5hbDsKKyNlbmRpZgorCisj
aWYgRU5BQkxFKFZJREVPX1RSQUNLKQorICAgIGJvb2wgcmVxdWlyZXNUZXh0VHJhY2tSZXByZXNl
bnRhdGlvbigpIGNvbnN0IGZpbmFsOworICAgIHZvaWQgc2V0VGV4dFRyYWNrUmVwcmVzZW50YXRp
b24oVGV4dFRyYWNrUmVwcmVzZW50YXRpb24qKSBmaW5hbDsKKyAgICB2b2lkIHN5bmNUZXh0VHJh
Y2tCb3VuZHMoKSBmaW5hbDsKKyAgICB2b2lkIHRyYWNrc0NoYW5nZWQoKSBmaW5hbDsKKyNlbmRp
ZgorCisjaWYgVVNFKEdTVFJFQU1FUikKKyAgICB2b2lkIHNpbXVsYXRlQXVkaW9JbnRlcnJ1cHRp
b24oKSBmaW5hbDsKKyNlbmRpZgorCisgICAgdm9pZCBiZWdpblNpbXVsYXRlZEhEQ1BFcnJvcigp
IGZpbmFsOworICAgIHZvaWQgZW5kU2ltdWxhdGVkSERDUEVycm9yKCkgZmluYWw7CisKKyAgICBT
dHJpbmcgbGFuZ3VhZ2VPZlByaW1hcnlBdWRpb1RyYWNrKCkgY29uc3QgZmluYWw7CisKKyAgICBz
aXplX3QgZXh0cmFNZW1vcnlDb3N0KCkgY29uc3QgZmluYWw7CisKKyAgICB1bnNpZ25lZCBsb25n
IGxvbmcgZmlsZVNpemUoKSBjb25zdCBmaW5hbDsKKworICAgIGJvb2wgZW5kZWQoKSBjb25zdCBm
aW5hbDsKKworICAgIE9wdGlvbmFsPFZpZGVvUGxheWJhY2tRdWFsaXR5TWV0cmljcz4gdmlkZW9Q
bGF5YmFja1F1YWxpdHlNZXRyaWNzKCkgZmluYWw7CisKKyNpZiBFTkFCTEUoQVZGX0NBUFRJT05T
KQorICAgIHZvaWQgbm90aWZ5VHJhY2tNb2RlQ2hhbmdlZCgpIGZpbmFsOworI2VuZGlmCisKKyAg
ICB2b2lkIG5vdGlmeUFjdGl2ZVNvdXJjZUJ1ZmZlcnNDaGFuZ2VkKCkgZmluYWw7CisKKyAgICB2
b2lkIHNldFNob3VsZERpc2FibGVTbGVlcChib29sKSBmaW5hbDsKKworICAgIHZvaWQgYXBwbGlj
YXRpb25XaWxsUmVzaWduQWN0aXZlKCkgZmluYWw7CisgICAgdm9pZCBhcHBsaWNhdGlvbkRpZEJl
Y29tZUFjdGl2ZSgpIGZpbmFsOworCisjaWYgVVNFKEFWRk9VTkRBVElPTikKKyAgICBBVlBsYXll
ciAqb2JqQ0FWRm91bmRhdGlvbkFWUGxheWVyKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbnVsbHB0
cjsgfQorI2VuZGlmCisKKyAgICBib29sIHBlcmZvcm1UYXNrQXRNZWRpYVRpbWUoV1RGOjpGdW5j
dGlvbjx2b2lkKCk+JiYsIE1lZGlhVGltZSkgZmluYWw7CisKKyAgICBib29sIHNob3VsZElnbm9y
ZUludHJpbnNpY1NpemUoKSBmaW5hbDsKKworICAgIE1lZGlhUGxheWVyKiBtX3BsYXllciB7IG51
bGxwdHIgfTsKKyAgICBSZW1vdGVNZWRpYVBsYXllck1hbmFnZXIgbV9tYW5hZ2VyOworICAgIE1l
ZGlhUGxheWVyRW51bXM6Ok1lZGlhRW5naW5lSWRlbnRpZmllciBtX3JlbW90ZUVuZ2luZUlkZW50
aWZpZXI7CisgICAgTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlSWRlbnRpZmllciBtX2lkZW50aWZp
ZXI7CisKKyNpZiAhUkVMRUFTRV9MT0dfRElTQUJMRUQKKyAgICBSZWY8Y29uc3QgTG9nZ2VyPiBt
X2xvZ2dlcjsKKyAgICBjb25zdCB2b2lkKiBtX2xvZ0lkZW50aWZpZXI7CisjZW5kaWYKKworICAg
IGJvb2wgbV9pbnZhbGlkIHsgZmFsc2UgfTsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAor
CisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEv
TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlSWRlbnRpZmllci5oIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL0dQVS9tZWRpYS9NZWRpYVBsYXllclByaXZhdGVSZW1vdGVJZGVudGlmaWVyLmgKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uODdlN2I4YmJhZWMzNTM0ZTdkZWZkNzgyMzg2MTAxNDMyMTc1MzhjNwotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvTWVkaWFQbGF5
ZXJQcml2YXRlUmVtb3RlSWRlbnRpZmllci5oCkBAIC0wLDAgKzEsMzUgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSAsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBD
T05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
KyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAq
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisg
KiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlIDx3dGYvT2JqZWN0SWRlbnRpZmllci5oPgorCitu
YW1lc3BhY2UgV2ViS2l0IHsKKworZW51bSBNZWRpYVBsYXllclByaXZhdGVSZW1vdGVJZGVudGlm
aWVyVHlwZSB7IH07Cit1c2luZyBNZWRpYVBsYXllclByaXZhdGVSZW1vdGVJZGVudGlmaWVyID0g
T2JqZWN0SWRlbnRpZmllcjxNZWRpYVBsYXllclByaXZhdGVSZW1vdGVJZGVudGlmaWVyVHlwZT47
CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyLmNwcCBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyLmNwcApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi43OTRkY2Y3YWM2M2ZkOWVjNDNjYWRhNWU4MmVjNWJmNDA0YWNjOTQ5Ci0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVN
ZWRpYVBsYXllck1hbmFnZXIuY3BwCkBAIC0wLDAgKzEsMjA5IEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklC
VVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRT
IENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lu
Y2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlJlbW90ZU1lZGlhUGxheWVyTWFuYWdlci5oIgor
CisjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKQorCisjaW5jbHVkZSAiUmVtb3RlTWVkaWFQbGF5ZXJN
YW5hZ2VyTWVzc2FnZXMuaCIKKyNpbmNsdWRlICJSZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94
eU1lc3NhZ2VzLmgiCisjaW5jbHVkZSAiV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgiCisjaW5jbHVk
ZSAiV2ViUHJvY2Vzcy5oIgorI2luY2x1ZGUgIldlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMu
aCIKKyNpbmNsdWRlIDxXZWJDb3JlL01lZGlhUGxheWVyLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9O
b3RJbXBsZW1lbnRlZC5oPgorI2luY2x1ZGUgPFdlYkNvcmUvU2V0dGluZ3MuaD4KKyNpbmNsdWRl
IDx3dGYvQXNzZXJ0aW9ucy5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsKK3VzaW5nIG5hbWVzcGFj
ZSBQQUw7Cit1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKKworY2xhc3MgTWVkaWFQbGF5ZXJSZW1v
dGVGYWN0b3J5IDogcHVibGljIE1lZGlhUGxheWVyRmFjdG9yeSB7CitwdWJsaWM6CisgICAgTWVk
aWFQbGF5ZXJSZW1vdGVGYWN0b3J5KE1lZGlhUGxheWVyRW51bXM6Ok1lZGlhRW5naW5lSWRlbnRp
ZmllciByZW1vdGVFbmdpbmVJZGVudGlmaWVyLCBSZW1vdGVNZWRpYVBsYXllck1hbmFnZXImIG1h
bmFnZXIpCisgICAgICAgIDogbV9yZW1vdGVFbmdpbmVJZGVudGlmaWVyKHJlbW90ZUVuZ2luZUlk
ZW50aWZpZXIpCisgICAgICAgICwgbV9tYW5hZ2VyKG1hbmFnZXIpCisgICAgeworICAgIH0KKwor
ICAgIE1lZGlhUGxheWVyRW51bXM6Ok1lZGlhRW5naW5lSWRlbnRpZmllciBpZGVudGlmaWVyKCkg
Y29uc3QgZmluYWwgeyByZXR1cm4gbV9yZW1vdGVFbmdpbmVJZGVudGlmaWVyOyB9OworCisgICAg
c3RkOjp1bmlxdWVfcHRyPE1lZGlhUGxheWVyUHJpdmF0ZUludGVyZmFjZT4gY3JlYXRlTWVkaWFF
bmdpbmVQbGF5ZXIoTWVkaWFQbGF5ZXIqIHBsYXllcikgY29uc3QgZmluYWwKKyAgICB7CisgICAg
ICAgIHJldHVybiBtX21hbmFnZXIuY3JlYXRlUmVtb3RlTWVkaWFQbGF5ZXIocGxheWVyLCBtX3Jl
bW90ZUVuZ2luZUlkZW50aWZpZXIpOworICAgIH0KKworICAgIHZvaWQgZ2V0U3VwcG9ydGVkVHlw
ZXMoSGFzaFNldDxTdHJpbmcsIEFTQ0lJQ2FzZUluc2Vuc2l0aXZlSGFzaD4mIHR5cGVzKSBjb25z
dCBmaW5hbAorICAgIHsKKyAgICAgICAgcmV0dXJuIG1fbWFuYWdlci5nZXRTdXBwb3J0ZWRUeXBl
cyhtX3JlbW90ZUVuZ2luZUlkZW50aWZpZXIsIHR5cGVzKTsKKyAgICB9CisKKyAgICBNZWRpYVBs
YXllcjo6U3VwcG9ydHNUeXBlIHN1cHBvcnRzVHlwZUFuZENvZGVjcyhjb25zdCBNZWRpYUVuZ2lu
ZVN1cHBvcnRQYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzKSBjb25zdCBmaW5hbAorICAgIHsKKyAgICAg
ICAgcmV0dXJuIG1fbWFuYWdlci5zdXBwb3J0c1R5cGVBbmRDb2RlY3MobV9yZW1vdGVFbmdpbmVJ
ZGVudGlmaWVyLCBwYXJhbWV0ZXJzKTsKKyAgICB9CisKKyAgICBIYXNoU2V0PFJlZlB0cjxTZWN1
cml0eU9yaWdpbj4+IG9yaWdpbnNJbk1lZGlhQ2FjaGUoY29uc3QgU3RyaW5nJiBwYXRoKSBjb25z
dCBmaW5hbAorICAgIHsKKyAgICAgICAgcmV0dXJuIG1fbWFuYWdlci5vcmlnaW5zSW5NZWRpYUNh
Y2hlKG1fcmVtb3RlRW5naW5lSWRlbnRpZmllciwgcGF0aCk7CisgICAgfQorCisgICAgdm9pZCBj
bGVhck1lZGlhQ2FjaGUoY29uc3QgU3RyaW5nJiBwYXRoLCBXYWxsVGltZSBtb2RpZmllZFNpbmNl
KSBjb25zdCBmaW5hbAorICAgIHsKKyAgICAgICAgcmV0dXJuIG1fbWFuYWdlci5jbGVhck1lZGlh
Q2FjaGUobV9yZW1vdGVFbmdpbmVJZGVudGlmaWVyLCBwYXRoLCBtb2RpZmllZFNpbmNlKTsKKyAg
ICB9CisKKyAgICB2b2lkIGNsZWFyTWVkaWFDYWNoZUZvck9yaWdpbnMoY29uc3QgU3RyaW5nJiBw
YXRoLCBjb25zdCBIYXNoU2V0PFJlZlB0cjxTZWN1cml0eU9yaWdpbj4+JiBvcmlnaW5zKSBjb25z
dCBmaW5hbAorICAgIHsKKyAgICAgICAgcmV0dXJuIG1fbWFuYWdlci5jbGVhck1lZGlhQ2FjaGVG
b3JPcmlnaW5zKG1fcmVtb3RlRW5naW5lSWRlbnRpZmllciwgcGF0aCwgb3JpZ2lucyk7CisgICAg
fQorCisgICAgYm9vbCBzdXBwb3J0c0tleVN5c3RlbShjb25zdCBTdHJpbmcmIGtleVN5c3RlbSwg
Y29uc3QgU3RyaW5nJiBtaW1lVHlwZSkgY29uc3QgZmluYWwKKyAgICB7CisgICAgICAgIHJldHVy
biBtX21hbmFnZXIuc3VwcG9ydHNLZXlTeXN0ZW0obV9yZW1vdGVFbmdpbmVJZGVudGlmaWVyLCBr
ZXlTeXN0ZW0sIG1pbWVUeXBlKTsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgTWVkaWFQbGF5ZXJF
bnVtczo6TWVkaWFFbmdpbmVJZGVudGlmaWVyIG1fcmVtb3RlRW5naW5lSWRlbnRpZmllcjsKKyAg
ICBSZW1vdGVNZWRpYVBsYXllck1hbmFnZXImIG1fbWFuYWdlcjsKK307CisKK1JlbW90ZU1lZGlh
UGxheWVyTWFuYWdlcjo6UmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyKFdlYlByb2Nlc3MmIHByb2Nl
c3MpCisgICAgOiBtX3Byb2Nlc3MocHJvY2VzcykKK3sKKyAgICBtX3Byb2Nlc3MuYWRkTWVzc2Fn
ZVJlY2VpdmVyKE1lc3NhZ2VzOjpSZW1vdGVNZWRpYVBsYXllck1hbmFnZXI6Om1lc3NhZ2VSZWNl
aXZlck5hbWUoKSwgKnRoaXMpOworfQorCitSZW1vdGVNZWRpYVBsYXllck1hbmFnZXI6On5SZW1v
dGVNZWRpYVBsYXllck1hbmFnZXIoKQoreworICAgIG1fcHJvY2Vzcy5yZW1vdmVNZXNzYWdlUmVj
ZWl2ZXIoTWVzc2FnZXM6OlJlbW90ZU1lZGlhUGxheWVyTWFuYWdlcjo6bWVzc2FnZVJlY2VpdmVy
TmFtZSgpKTsKK30KKworY29uc3QgY2hhciogUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyOjpzdXBw
bGVtZW50TmFtZSgpCit7CisgICAgcmV0dXJuICJSZW1vdGVNZWRpYVBsYXllck1hbmFnZXIiOwor
fQorCit2b2lkIFJlbW90ZU1lZGlhUGxheWVyTWFuYWdlcjo6aW5pdGlhbGl6ZShjb25zdCBXZWJQ
cm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzJikKK3sKKy8vIEZJWE1FOiBVc2UgcGFyYW1ldGVycy5t
ZWRpYU1JTUVUeXBlcy4KK30KKworc3RkOjp1bmlxdWVfcHRyPE1lZGlhUGxheWVyUHJpdmF0ZUlu
dGVyZmFjZT4gUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyOjpjcmVhdGVSZW1vdGVNZWRpYVBsYXll
cihNZWRpYVBsYXllciogcGxheWVyLCBNZWRpYVBsYXllckVudW1zOjpNZWRpYUVuZ2luZUlkZW50
aWZpZXIgcmVtb3RlRW5naW5lSWRlbnRpZmllcikKK3sKKyAgICBhdXRvIGlkID0gTWVkaWFQbGF5
ZXJQcml2YXRlUmVtb3RlSWRlbnRpZmllcjo6Z2VuZXJhdGUoKTsKKworICAgIGJvb2wgaGF2ZVJl
bW90ZVByb3h5OworICAgIGJvb2wgc2VuZFN1Y2NlZWRlZCA9IGdwdVByb2Nlc3NDb25uZWN0aW9u
KCkuc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5OjpDcmVh
dGVNZWRpYVBsYXllcihpZCwgcmVtb3RlRW5naW5lSWRlbnRpZmllciksIE1lc3NhZ2VzOjpSZW1v
dGVNZWRpYVBsYXllck1hbmFnZXJQcm94eTo6Q3JlYXRlTWVkaWFQbGF5ZXI6OlJlcGx5KGhhdmVS
ZW1vdGVQcm94eSksIDApOworICAgIGlmICghaGF2ZVJlbW90ZVByb3h5IHx8ICFzZW5kU3VjY2Vl
ZGVkKSB7CisgICAgICAgIFdURkxvZ0Fsd2F5cygiRmFpbGVkIHRvIGNyZWF0ZSByZW1vdGUgbWVk
aWEgcGxheWVyLiIpOworICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICB9CisKKyAgICBhdXRv
IHJlbW90ZVBsYXllciA9IE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6Y3JlYXRlKHBsYXllciwg
cmVtb3RlRW5naW5lSWRlbnRpZmllciwgaWQsICp0aGlzKTsKKyAgICBtX3BsYXllcnMuYWRkKGlk
LCBtYWtlV2Vha1B0cigqcmVtb3RlUGxheWVyKSk7CisgICAgcmV0dXJuIHJlbW90ZVBsYXllcjsK
K30KKwordm9pZCBSZW1vdGVNZWRpYVBsYXllck1hbmFnZXI6OmdldFN1cHBvcnRlZFR5cGVzKE1l
ZGlhUGxheWVyRW51bXM6Ok1lZGlhRW5naW5lSWRlbnRpZmllciByZW1vdGVFbmdpbmVJZGVudGlm
aWVyLCBIYXNoU2V0PFN0cmluZywgQVNDSUlDYXNlSW5zZW5zaXRpdmVIYXNoPiYgcmVzdWx0KQor
eworICAgIC8vIEZJWE1FOiBzdXBwb3J0ZWQgdHlwZXMgZG9uJ3QgY2hhbmdlLCBjYWNoZSB0aGVt
LgorICAgIFZlY3RvcjxTdHJpbmc+IHR5cGVzOworICAgIGlmICghZ3B1UHJvY2Vzc0Nvbm5lY3Rp
b24oKS5zZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHk6Okdl
dFN1cHBvcnRlZFR5cGVzKHJlbW90ZUVuZ2luZUlkZW50aWZpZXIpLCBNZXNzYWdlczo6UmVtb3Rl
TWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHk6OkdldFN1cHBvcnRlZFR5cGVzOjpSZXBseSh0eXBlcyks
IDApKQorICAgICAgICByZXR1cm47CisKKyAgICByZXN1bHQgPSBIYXNoU2V0PFN0cmluZywgQVND
SUlDYXNlSW5zZW5zaXRpdmVIYXNoPigpOworICAgIGZvciAoYXV0byYgdHlwZSA6IHR5cGVzKQor
ICAgICAgICByZXN1bHQuYWRkKHR5cGUpOworfQorCitNZWRpYVBsYXllcjo6U3VwcG9ydHNUeXBl
IFJlbW90ZU1lZGlhUGxheWVyTWFuYWdlcjo6c3VwcG9ydHNUeXBlQW5kQ29kZWNzKE1lZGlhUGxh
eWVyRW51bXM6Ok1lZGlhRW5naW5lSWRlbnRpZmllciByZW1vdGVFbmdpbmVJZGVudGlmaWVyLCBj
b25zdCBXZWJDb3JlOjpNZWRpYUVuZ2luZVN1cHBvcnRQYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzKQor
eworICAgIC8vIEZJWE1FOiBzdXBwb3J0ZWQgdHlwZXMgZG9uJ3QgY2hhbmdlLCBjYWNoZSB0aGVt
LgorCisgICAgTWVkaWFQbGF5ZXI6OlN1cHBvcnRzVHlwZSByZXN1bHQ7CisgICAgaWYgKCFncHVQ
cm9jZXNzQ29ubmVjdGlvbigpLnNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVNZWRpYVBsYXllck1h
bmFnZXJQcm94eTo6U3VwcG9ydHNUeXBlKHJlbW90ZUVuZ2luZUlkZW50aWZpZXIsIHBhcmFtZXRl
cnMpLCBNZXNzYWdlczo6UmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHk6OlN1cHBvcnRzVHlw
ZTo6UmVwbHkocmVzdWx0KSwgMCkpCisgICAgICAgIHJldHVybiBNZWRpYVBsYXllcjo6U3VwcG9y
dHNUeXBlOjpJc05vdFN1cHBvcnRlZDsKKworICAgIHJldHVybiByZXN1bHQ7Cit9CisKKworYm9v
bCBSZW1vdGVNZWRpYVBsYXllck1hbmFnZXI6OnN1cHBvcnRzS2V5U3lzdGVtKE1lZGlhUGxheWVy
RW51bXM6Ok1lZGlhRW5naW5lSWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBrZXlTeXN0ZW0sIGNv
bnN0IFN0cmluZyYgbWltZVR5cGUpCit7CisgICAgcmV0dXJuIGZhbHNlOworfQorCisKK0hhc2hT
ZXQ8UmVmUHRyPFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luPj4gUmVtb3RlTWVkaWFQbGF5ZXJNYW5h
Z2VyOjpvcmlnaW5zSW5NZWRpYUNhY2hlKE1lZGlhUGxheWVyRW51bXM6Ok1lZGlhRW5naW5lSWRl
bnRpZmllciByZW1vdGVFbmdpbmVJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIHBhdGgpCit7Cisg
ICAgVmVjdG9yPFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YT4gb3JpZ2luRGF0YTsKKyAgICBp
ZiAoIWdwdVByb2Nlc3NDb25uZWN0aW9uKCkuc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZU1lZGlh
UGxheWVyTWFuYWdlclByb3h5OjpPcmlnaW5zSW5NZWRpYUNhY2hlKHJlbW90ZUVuZ2luZUlkZW50
aWZpZXIsIHBhdGgpLCBNZXNzYWdlczo6UmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHk6Ok9y
aWdpbnNJbk1lZGlhQ2FjaGU6OlJlcGx5KG9yaWdpbkRhdGEpLCAwKSkKKyAgICAgICAgcmV0dXJu
IHsgfTsKKworICAgIEhhc2hTZXQ8UmVmUHRyPFNlY3VyaXR5T3JpZ2luPj4gb3JpZ2luczsKKyAg
ICBmb3IgKGF1dG8mIGRhdGEgOiBvcmlnaW5EYXRhKQorICAgICAgICBvcmlnaW5zLmFkZChkYXRh
LnNlY3VyaXR5T3JpZ2luKCkpOworCisgICAgcmV0dXJuIG9yaWdpbnM7Cit9CisKK3ZvaWQgUmVt
b3RlTWVkaWFQbGF5ZXJNYW5hZ2VyOjpjbGVhck1lZGlhQ2FjaGUoTWVkaWFQbGF5ZXJFbnVtczo6
TWVkaWFFbmdpbmVJZGVudGlmaWVyIHJlbW90ZUVuZ2luZUlkZW50aWZpZXIsIGNvbnN0IFN0cmlu
ZyYgcGF0aCwgV2FsbFRpbWUgbW9kaWZpZWRTaW5jZSkKK3sKKyAgICBncHVQcm9jZXNzQ29ubmVj
dGlvbigpLnNlbmQoTWVzc2FnZXM6OlJlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5OjpDbGVh
ck1lZGlhQ2FjaGUocmVtb3RlRW5naW5lSWRlbnRpZmllciwgcGF0aCwgbW9kaWZpZWRTaW5jZSks
IDApOworfQorCit2b2lkIFJlbW90ZU1lZGlhUGxheWVyTWFuYWdlcjo6Y2xlYXJNZWRpYUNhY2hl
Rm9yT3JpZ2lucyhNZWRpYVBsYXllckVudW1zOjpNZWRpYUVuZ2luZUlkZW50aWZpZXIgcmVtb3Rl
RW5naW5lSWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBwYXRoLCBjb25zdCBIYXNoU2V0PFJlZlB0
cjxXZWJDb3JlOjpTZWN1cml0eU9yaWdpbj4+JiBvcmlnaW5zKQoreworICAgIFZlY3RvcjxXZWJD
b3JlOjpTZWN1cml0eU9yaWdpbkRhdGE+IG9yaWdpbkRhdGE7CisgICAgZm9yIChhdXRvJiBvcmln
aW4gOiBvcmlnaW5zKQorICAgICAgICBvcmlnaW5EYXRhLmFwcGVuZChvcmlnaW4tPmRhdGEoKSk7
CisKKyAgICBncHVQcm9jZXNzQ29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6OlJlbW90ZU1lZGlh
UGxheWVyTWFuYWdlclByb3h5OjpDbGVhck1lZGlhQ2FjaGVGb3JPcmlnaW5zKHJlbW90ZUVuZ2lu
ZUlkZW50aWZpZXIsIHBhdGgsIG9yaWdpbkRhdGEpLCAwKTsKK30KKwordm9pZCBSZW1vdGVNZWRp
YVBsYXllck1hbmFnZXI6Om5ldHdvcmtTdGF0ZUNoYW5nZWQoTWVkaWFQbGF5ZXJQcml2YXRlUmVt
b3RlSWRlbnRpZmllcikKK3sKK30KKwordm9pZCBSZW1vdGVNZWRpYVBsYXllck1hbmFnZXI6OnVw
ZGF0ZVByZWZlcmVuY2VzKGNvbnN0IFNldHRpbmdzJiBzZXR0aW5ncykKK3sKKyAgICBhdXRvIHJl
Z2lzdGVyRW5naW5lID0gW3RoaXNdKE1lZGlhRW5naW5lUmVnaXN0cmFyIHJlZ2lzdHJhciwgTWVk
aWFQbGF5ZXJFbnVtczo6TWVkaWFFbmdpbmVJZGVudGlmaWVyIHJlbW90ZUVuZ2luZUlkZW50aWZp
ZXIpIHsKKyAgICAgICAgcmVnaXN0cmFyKG1ha2VVbmlxdWU8TWVkaWFQbGF5ZXJSZW1vdGVGYWN0
b3J5PihyZW1vdGVFbmdpbmVJZGVudGlmaWVyLCAqdGhpcykpOworICAgIH07CisKKyAgICBSZW1v
dGVNZWRpYVBsYXllclN1cHBvcnQ6OnNldFJlZ2lzdGVyUmVtb3RlUGxheWVyQ2FsbGJhY2soc2V0
dGluZ3MudXNlR1BVUHJvY2Vzc0Zvck1lZGlhKCkgPyByZWdpc3RlckVuZ2luZSA6IHN0ZDo6ZnVu
Y3Rpb248dm9pZChNZWRpYUVuZ2luZVJlZ2lzdHJhciwgTWVkaWFQbGF5ZXJFbnVtczo6TWVkaWFF
bmdpbmVJZGVudGlmaWVyKT4geyB9KTsKK30KKworSVBDOjpDb25uZWN0aW9uJiBSZW1vdGVNZWRp
YVBsYXllck1hbmFnZXI6OmdwdVByb2Nlc3NDb25uZWN0aW9uKCkgY29uc3QKK3sKKyAgICByZXR1
cm4gV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuZW5zdXJlR1BVUHJvY2Vzc0Nvbm5lY3Rpb24oKS5j
b25uZWN0aW9uKCk7Cit9CisKK30KKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyTWFuYWdlci5oIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVNZWRpYVBsYXllck1hbmFnZXIuaApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi5iZTViZmY3YWE5M2UyNWYzNWI0OGFhNDZhZTFmODI4MTIxM2NmMmMxCi0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVN
ZWRpYVBsYXllck1hbmFnZXIuaApAQCAtMCwwICsxLDg2IEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRP
UlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENP
TlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdt
YSBvbmNlCisKKyNpZiBFTkFCTEUoR1BVX1BST0NFU1MpCisKKyNpbmNsdWRlICJNZWRpYVBsYXll
clByaXZhdGVSZW1vdGVJZGVudGlmaWVyLmgiCisjaW5jbHVkZSAiTWVzc2FnZVJlY2VpdmVyLmgi
CisjaW5jbHVkZSAiU2hhcmVkTWVtb3J5LmgiCisjaW5jbHVkZSAiV2ViUHJvY2Vzc1N1cHBsZW1l
bnQuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL01lZGlhUGxheWVyLmg+CisjaW5jbHVkZSA8d3RmL0hh
c2hNYXAuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworY2xhc3MgTWVkaWFQbGF5ZXI7CitjbGFz
cyBNZWRpYVBsYXllclByaXZhdGVJbnRlcmZhY2U7CitjbGFzcyBTZXR0aW5nczsKK30KKworbmFt
ZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTsKK2NsYXNz
IFdlYlByb2Nlc3M7CisKK2NsYXNzIFJlbW90ZU1lZGlhUGxheWVyTWFuYWdlciA6IHB1YmxpYyBX
ZWJQcm9jZXNzU3VwcGxlbWVudCwgcHVibGljIElQQzo6TWVzc2FnZVJlY2VpdmVyIHsKKyAgICBX
VEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKK3B1YmxpYzoKKyAgICBleHBsaWNpdCBSZW1vdGVNZWRp
YVBsYXllck1hbmFnZXIoV2ViUHJvY2VzcyYpOworICAgIH5SZW1vdGVNZWRpYVBsYXllck1hbmFn
ZXIoKTsKKworICAgIHN0YXRpYyBjb25zdCBjaGFyKiBzdXBwbGVtZW50TmFtZSgpOworCisgICAg
dm9pZCB1cGRhdGVQcmVmZXJlbmNlcyhjb25zdCBXZWJDb3JlOjpTZXR0aW5ncyYpOworCisgICAg
SVBDOjpDb25uZWN0aW9uJiBncHVQcm9jZXNzQ29ubmVjdGlvbigpIGNvbnN0OworCitwcml2YXRl
OgorICAgIHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVJbnRlcmZh
Y2U+IGNyZWF0ZVJlbW90ZU1lZGlhUGxheWVyKFdlYkNvcmU6Ok1lZGlhUGxheWVyKiwgV2ViQ29y
ZTo6TWVkaWFQbGF5ZXJFbnVtczo6TWVkaWFFbmdpbmVJZGVudGlmaWVyKTsKKworICAgIC8vIFdl
YlByb2Nlc3NTdXBwbGVtZW50CisgICAgdm9pZCBpbml0aWFsaXplKGNvbnN0IFdlYlByb2Nlc3ND
cmVhdGlvblBhcmFtZXRlcnMmKSBmaW5hbDsKKworICAgIC8vIElQQzo6TWVzc2FnZVJlY2VpdmVy
CisgICAgdm9pZCBkaWRSZWNlaXZlTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29k
ZXImKSBmaW5hbDsKKworICAgIC8vIE1lc3NhZ2VzOjpSZW1vdGVNZWRpYVBsYXllck1hbmFnZXIK
KyAgICB2b2lkIG5ldHdvcmtTdGF0ZUNoYW5nZWQoTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlSWRl
bnRpZmllcik7CisKKyAgICBmcmllbmQgY2xhc3MgTWVkaWFQbGF5ZXJSZW1vdGVGYWN0b3J5Owor
ICAgIHZvaWQgZ2V0U3VwcG9ydGVkVHlwZXMoV2ViQ29yZTo6TWVkaWFQbGF5ZXJFbnVtczo6TWVk
aWFFbmdpbmVJZGVudGlmaWVyLCBIYXNoU2V0PFN0cmluZywgQVNDSUlDYXNlSW5zZW5zaXRpdmVI
YXNoPiYpOworICAgIFdlYkNvcmU6Ok1lZGlhUGxheWVyOjpTdXBwb3J0c1R5cGUgc3VwcG9ydHNU
eXBlQW5kQ29kZWNzKFdlYkNvcmU6Ok1lZGlhUGxheWVyRW51bXM6Ok1lZGlhRW5naW5lSWRlbnRp
ZmllciwgY29uc3QgV2ViQ29yZTo6TWVkaWFFbmdpbmVTdXBwb3J0UGFyYW1ldGVycyYpOworICAg
IGJvb2wgc3VwcG9ydHNLZXlTeXN0ZW0oV2ViQ29yZTo6TWVkaWFQbGF5ZXJFbnVtczo6TWVkaWFF
bmdpbmVJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIGtleVN5c3RlbSwgY29uc3QgU3RyaW5nJiBt
aW1lVHlwZSk7CisgICAgSGFzaFNldDxSZWZQdHI8V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4+PiBv
cmlnaW5zSW5NZWRpYUNhY2hlKFdlYkNvcmU6Ok1lZGlhUGxheWVyRW51bXM6Ok1lZGlhRW5naW5l
SWRlbnRpZmllciwgY29uc3QgU3RyaW5nJik7CisgICAgdm9pZCBjbGVhck1lZGlhQ2FjaGUoV2Vi
Q29yZTo6TWVkaWFQbGF5ZXJFbnVtczo6TWVkaWFFbmdpbmVJZGVudGlmaWVyLCBjb25zdCBTdHJp
bmcmLCBXYWxsVGltZSBtb2RpZmllZFNpbmNlKTsKKyAgICB2b2lkIGNsZWFyTWVkaWFDYWNoZUZv
ck9yaWdpbnMoV2ViQ29yZTo6TWVkaWFQbGF5ZXJFbnVtczo6TWVkaWFFbmdpbmVJZGVudGlmaWVy
LCBjb25zdCBTdHJpbmcmLCBjb25zdCBIYXNoU2V0PFJlZlB0cjxXZWJDb3JlOjpTZWN1cml0eU9y
aWdpbj4+Jik7CisKKyAgICBIYXNoTWFwPE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZUlkZW50aWZp
ZXIsIFdlYWtQdHI8TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlPj4gbV9wbGF5ZXJzOworICAgIFdl
YlByb2Nlc3MmIG1fcHJvY2VzczsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5k
aWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3Rl
TWVkaWFQbGF5ZXJNYW5hZ2VyLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L0dQVS9tZWRpYS9SZW1vdGVNZWRpYVBsYXllck1hbmFnZXIubWVzc2FnZXMuaW4KbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uYTkzMzU3YzJiYTg1ZmYxZGRlY2NhMDdjMzAzOTFmOGUyMDI5MjEyZgotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlTWVkaWFQbGF5
ZXJNYW5hZ2VyLm1lc3NhZ2VzLmluCkBAIC0wLDAgKzEsMzIgQEAKKyMgQ29weXJpZ2h0IChDKSAy
MDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworIyBhcmUgbWV0OgorIyAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisjIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisjICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyMgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwor
IyBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyMgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorIyBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyMgQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUgorIyBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorIyBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyMgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4KKyMgQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyMgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorIyBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisKKyNpZiBFTkFCTEUoVklERU8pCisKK21lc3NhZ2VzIC0+IFJl
bW90ZU1lZGlhUGxheWVyTWFuYWdlciBOb3RSZWZDb3VudGVkIHsKKworICAgIE5ldHdvcmtTdGF0
ZUNoYW5nZWQoV2ViS2l0OjpNZWRpYVBsYXllclByaXZhdGVSZW1vdGVJZGVudGlmaWVyIGlkKQor
Cit9CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBh
Z2UvVmlld1VwZGF0ZURpc3BhdGNoZXIuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YlBhZ2UvVmlld1VwZGF0ZURpc3BhdGNoZXIuY3BwCmluZGV4IDVjZjQ0NDA3ZTNmYjNmNjdhMDM0
NzAwM2QwNDc4ZDc0MTk5MzI0M2YuLjFmYmNjNzk2ZmZiNjU5NWE0ZjM1YjUyOTBhOWMzYjlhNGRm
MTg2NmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1ZpZXdV
cGRhdGVEaXNwYXRjaGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFn
ZS9WaWV3VXBkYXRlRGlzcGF0Y2hlci5jcHAKQEAgLTMxLDYgKzMxLDcgQEAKICNpbmNsdWRlICJW
aWV3VXBkYXRlRGlzcGF0Y2hlck1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiV2ViUGFnZS5oIgogI2lu
Y2x1ZGUgIldlYlByb2Nlc3MuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL1BhZ2VJZGVudGlmaWVyLmg+
CiAjaW5jbHVkZSA8d3RmL1J1bkxvb3AuaD4KIAogbmFtZXNwYWNlIFdlYktpdCB7CkBAIC03NSw3
ICs3Niw3IEBAIHZvaWQgVmlld1VwZGF0ZURpc3BhdGNoZXI6OnZpc2libGVDb250ZW50UmVjdFVw
ZGF0ZShXZWJDb3JlOjpQYWdlSWRlbnRpZmllciBwYWdlCiAKIHZvaWQgVmlld1VwZGF0ZURpc3Bh
dGNoZXI6OmRpc3BhdGNoVmlzaWJsZUNvbnRlbnRSZWN0VXBkYXRlKCkKIHsKLSAgICBIYXNoTWFw
PFBhZ2VJZGVudGlmaWVyLCBVcGRhdGVEYXRhPiB1cGRhdGU7CisgICAgSGFzaE1hcDxXZWJDb3Jl
OjpQYWdlSWRlbnRpZmllciwgVXBkYXRlRGF0YT4gdXBkYXRlOwogICAgIHsKICAgICAgICAgTG9j
a0hvbGRlciBsb2NrZXIoJm1fZGF0YU11dGV4KTsKICAgICAgICAgdXBkYXRlID0gV1RGTW92ZSht
X2xhdGVzdFVwZGF0ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
UGFnZS9XZWJQYWdlLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBh
Z2UuY3BwCmluZGV4IDczNWZlYTRlZTEzYmU0MjVjMjM0YmU5MjEyMGZlOWU3YmNhMmQ1YzcuLmI5
NjlkOWJhZTZiMWRhY2UzN2M3Yzc5NmIyYTIwMmFkNjc1Mzg3ODQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCkBAIC0zMTIsNiArMzEyLDEwIEBACiAj
aW5jbHVkZSAiV2ViRGV2aWNlT3JpZW50YXRpb25VcGRhdGVQcm92aWRlci5oIgogI2VuZGlmCiAK
KyNpZiBFTkFCTEUoR1BVX1BST0NFU1MpCisjaW5jbHVkZSAiUmVtb3RlTWVkaWFQbGF5ZXJNYW5h
Z2VyLmgiCisjZW5kaWYKKwogbmFtZXNwYWNlIFdlYktpdCB7CiB1c2luZyBuYW1lc3BhY2UgSlND
OwogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CkBAIC0zNjA2LDYgKzM2MTAsMTAgQEAgdm9pZCBX
ZWJQYWdlOjp1cGRhdGVQcmVmZXJlbmNlcyhjb25zdCBXZWJQcmVmZXJlbmNlc1N0b3JlJiBzdG9y
ZSkKIAogICAgIGlmIChtX2RyYXdpbmdBcmVhKQogICAgICAgICBtX2RyYXdpbmdBcmVhLT51cGRh
dGVQcmVmZXJlbmNlcyhzdG9yZSk7CisKKyNpZiBFTkFCTEUoR1BVX1BST0NFU1MpCisgICAgV2Vi
UHJvY2Vzczo6c2luZ2xldG9uKCkuc3VwcGxlbWVudDxSZW1vdGVNZWRpYVBsYXllck1hbmFnZXI+
KCktPnVwZGF0ZVByZWZlcmVuY2VzKHNldHRpbmdzKTsKKyNlbmRpZgogfQogCiAjaWYgRU5BQkxF
KERBVEFfREVURUNUSU9OKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YlByb2Nlc3MuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCmlu
ZGV4IDA2YjA4ZDc4YmY1ODczNWU4MTc4MGZhMDQxYzBhODc0MWVmMDBlZjkuLjE1MTMyNzFhYzNm
OTc1MTU2Zjk5NDJkYWZkZjBjYzBhOGNkN2UzZDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViUHJvY2Vzcy5jcHAKQEAgLTE2NCw2ICsxNjQsMTAgQEAKICNpbmNsdWRlIDxKYXZhU2NyaXB0
Q29yZS9SZW1vdGVJbnNwZWN0b3IuaD4KICNlbmRpZgogCisjaWYgRU5BQkxFKEdQVV9QUk9DRVNT
KQorI2luY2x1ZGUgIlJlbW90ZU1lZGlhUGxheWVyTWFuYWdlci5oIgorI2VuZGlmCisKIC8vIFRo
aXMgc2hvdWxkIGJlIGxlc3MgdGhhbiBwbHVnSW5BdXRvU3RhcnRFeHBpcmF0aW9uVGltZVRocmVz
aG9sZCBpbiBQbHVnSW5BdXRvU3RhcnRQcm92aWRlci4KIHN0YXRpYyBjb25zdCBTZWNvbmRzIHBs
dWdJbkF1dG9TdGFydEV4cGlyYXRpb25UaW1lVXBkYXRlVGhyZXNob2xkIHsgMjkgKiAyNCAqIDYw
ICogNjAgfTsKIApAQCAtMjIxLDcgKzIyNSwxMSBAQCBXZWJQcm9jZXNzOjpXZWJQcm9jZXNzKCkK
ICNpZiBQTEFURk9STShDT0NPQSkgJiYgRU5BQkxFKE1FRElBX1NUUkVBTSkKICAgICBhZGRTdXBw
bGVtZW50PFVzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyPigpOwogI2VuZGlmCi0gICAgCisKKyNpZiBF
TkFCTEUoR1BVX1BST0NFU1MpCisgICAgYWRkU3VwcGxlbWVudDxSZW1vdGVNZWRpYVBsYXllck1h
bmFnZXI+KCk7CisjZW5kaWYKKwogICAgIEdpZ2FjYWdlOjpmb3JiaWREaXNhYmxpbmdQcmltaXRp
dmVHaWdhY2FnZSgpOwogfQogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>385509</attachid>
            <date>2019-12-12 10:19:15 -0800</date>
            <delta_ts>2019-12-12 21:50:57 -0800</delta_ts>
            <desc>WIP patch</desc>
            <filename>bug-205094-20191212101914.patch</filename>
            <type>text/plain</type>
            <size>155472</size>
            <attacher name="Eric Carlson">eric.carlson</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjUzMzk3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZTk0ZmQ0ZWMxNDg4MjAx
YTM0ZjM1Nzk2MWUwOTg5OWZmNzIyYmNmNS4uNGEyNzIyNWMwNjkyM2ZiMWMxZjBiZDkwZmI0ZDkw
OWU1YzdlNWRkMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEwNyBAQAorMjAxOS0xMi0xMCAgRXJp
YyBDYXJsc29uICA8ZXJpYy5jYXJsc29uQGFwcGxlLmNvbT4KKworICAgICAgICBBZGQgaW5mcmFz
dHJ1Y3R1cmUgbmVlZGVkIGZvciBwbGF5aW5nIG1lZGlhIHBsYXllciBpbiB0aGUgR1BVIHByb2Nl
c3MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwNTA5
NAorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNTc4MTUzOTM+CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLCBubyBmdW5jdGlvbmFs
IGNoYW5nZSB5ZXQuCisKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2o6CisgICAgICAgICogcGxhdGZvcm0vQ29udGVudFR5cGUuaDoKKyAgICAgICAgKFdlYkNvcmU6
OkNvbnRlbnRUeXBlOjplbmNvZGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudFR5
cGU6OmRlY29kZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6bnVsbExvZ2dlcik6CisgICAgICAgIChXZWJDb3JlOjpudWxs
Q29udGVudFR5cGVWZWN0b3IpOgorICAgICAgICAoV2ViQ29yZTo6bXV0YWJsZUluc3RhbGxlZE1l
ZGlhRW5naW5lc1ZlY3Rvcik6CisgICAgICAgIChXZWJDb3JlOjpyZWdpc3RlclJlbW90ZVBsYXll
ckNhbGxiYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbW90ZU1lZGlhUGxheWVyU3VwcG9ydDo6
c2V0UmVnaXN0ZXJSZW1vdGVQbGF5ZXJDYWxsYmFjayk6CisgICAgICAgIChXZWJDb3JlOjpidWls
ZE1lZGlhRW5naW5lc1ZlY3Rvcik6CisgICAgICAgIChXZWJDb3JlOjppbnN0YWxsZWRNZWRpYUVu
Z2luZXMpOgorICAgICAgICAoV2ViQ29yZTo6YWRkTWVkaWFFbmdpbmUpOgorICAgICAgICAoV2Vi
Q29yZTo6TWVkaWFQbGF5ZXI6Om1lZGlhRW5naW5lKToKKyAgICAgICAgKFdlYkNvcmU6OmJlc3RN
ZWRpYUVuZ2luZUZvclN1cHBvcnRQYXJhbWV0ZXJzKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlh
UGxheWVyOjpuZXh0TWVkaWFFbmdpbmUpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXI6
OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllcjo6TWVkaWFQbGF5ZXIpOgor
ICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXI6Om5leHRCZXN0TWVkaWFFbmdpbmUpOgorICAg
ICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXI6OmxvYWRXaXRoTmV4dE1lZGlhRW5naW5lKToKKyAg
ICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyOjpnZXRTdXBwb3J0ZWRUeXBlcyk6CisgICAgICAg
IChXZWJDb3JlOjpNZWRpYVBsYXllcjo6b3JpZ2luc0luTWVkaWFDYWNoZSk6CisgICAgICAgIChX
ZWJDb3JlOjpNZWRpYVBsYXllcjo6Y2xlYXJNZWRpYUNhY2hlKToKKyAgICAgICAgKFdlYkNvcmU6
Ok1lZGlhUGxheWVyOjpjbGVhck1lZGlhQ2FjaGVGb3JPcmlnaW5zKToKKyAgICAgICAgKFdlYkNv
cmU6Ok1lZGlhUGxheWVyOjpzdXBwb3J0c0tleVN5c3RlbSk6CisgICAgICAgIChXZWJDb3JlOjpN
ZWRpYVBsYXllcjo6bmV0d29ya1N0YXRlQ2hhbmdlZCk6CisgICAgICAgIChXZWJDb3JlOjpuZXh0
TWVkaWFFbmdpbmUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXI6Om5l
eHRCZXN0TWVkaWFFbmdpbmUgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL01lZGlhUGxheWVyLmg6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYUVuZ2luZVN1cHBv
cnRQYXJhbWV0ZXJzOjplbmNvZGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFFbmdp
bmVTdXBwb3J0UGFyYW1ldGVyczo6ZGVjb2RlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxh
eWVyRmFjdG9yeTo6fk1lZGlhUGxheWVyRmFjdG9yeSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRp
YVBsYXllckZhY3Rvcnk6Om9yaWdpbnNJbk1lZGlhQ2FjaGUgY29uc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6TWVkaWFQbGF5ZXJGYWN0b3J5OjpjbGVhck1lZGlhQ2FjaGUgY29uc3QpOgorICAgICAg
ICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJGYWN0b3J5OjpjbGVhck1lZGlhQ2FjaGVGb3JPcmlnaW5z
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyRmFjdG9yeTo6c3VwcG9ydHNL
ZXlTeXN0ZW0gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXI6OnNldFZpZGVv
RnVsbHNjcmVlbkxheWVyKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVy
OjpzaXplIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyOjpp
bnZhbGlkVGltZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllcjo6cGxh
dGZvcm1Wb2x1bWVDb25maWd1cmF0aW9uUmVxdWlyZWQgY29uc3QpOiBEZWxldGVkLgorICAgICAg
ICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXI6OmNvbnRlbnRNSU1FVHlwZSBjb25zdCk6IERlbGV0ZWQu
CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllcjo6Y29udGVudFR5cGVDb2RlY3MgY29uc3Qp
OiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXI6OmNvbnRlbnRNSU1FVHlw
ZVdhc0luZmVycmVkRnJvbUV4dGVuc2lvbiBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJD
b3JlOjpNZWRpYVBsYXllcjo6bWVkaWFQbGF5ZXJMb2dJZGVudGlmaWVyKTogRGVsZXRlZC4KKyAg
ICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyOjpyZW5kZXJpbmdDYW5CZUFjY2VsZXJhdGVkIGNv
bnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyOjpyZW5kZXJpbmdN
b2RlQ2hhbmdlZCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXll
cjo6YWNjZWxlcmF0ZWRDb21wb3NpdGluZ0VuYWJsZWQpOiBEZWxldGVkLgorICAgICAgICAoV2Vi
Q29yZTo6TWVkaWFQbGF5ZXI6OmFjdGl2ZVNvdXJjZUJ1ZmZlcnNDaGFuZ2VkKTogRGVsZXRlZC4K
KyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyOjpwbGF5ZXJDb250ZW50Qm94UmVjdCBjb25z
dCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllcjo6cGxheWVyQ29udGVu
dHNTY2FsZSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllcjo6
c2hvdWxkVXNlUGVyc2lzdGVudENhY2hlIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNv
cmU6Ok1lZGlhUGxheWVyOjptZWRpYUNhY2hlRGlyZWN0b3J5IGNvbnN0KTogRGVsZXRlZC4KKyAg
ICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyOjppc1ZpZGVvUGxheWVyIGNvbnN0KTogRGVsZXRl
ZC4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyOjptZWRpYUVuZ2luZVVwZGF0ZWQpOiBE
ZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXI6OmlzTG9vcGluZyBjb25zdCk6
IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllcjo6cmVxdWVzdEluc3RhbGxN
aXNzaW5nUGx1Z2lucyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllcjo6
Y2xpZW50IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9NZWRp
YVBsYXllckVuZ2luZUlkZW50aWZpZXJzLmg6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL0NvbnRlbnRUeXBlLmguCisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllckVuZ2lu
ZUlkZW50aWZpZXJzOjphdkZvdW5kYXRpb25FbmdpbmVJZGVudGlmaWVyKToKKyAgICAgICAgKFdl
YkNvcmU6Ok1lZGlhUGxheWVyRW5naW5lSWRlbnRpZmllcnM6OmF2Rm91bmRhdGlvbk1TRUVuZ2lu
ZUlkZW50aWZpZXIpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJFbmdpbmVJZGVudGlm
aWVyczo6YXZGb3VuZGF0aW9uTWVkaWFTdHJlYW1FbmdpbmVJZGVudGlmaWVyKToKKyAgICAgICAg
KFdlYkNvcmU6Ok1lZGlhUGxheWVyRW5naW5lSWRlbnRpZmllcnM6OkdTdHJlYW1lck1lZGlhRW5n
aW5lSWRlbnRpZmllcik6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllckVuZ2luZUlkZW50
aWZpZXJzOjpHU3RyZWFtZXJNU0VNZWRpYUVuZ2luZUlkZW50aWZpZXIpOgorICAgICAgICAoV2Vi
Q29yZTo6TWVkaWFQbGF5ZXJFbmdpbmVJZGVudGlmaWVyczo6aG9sZVB1bmNoTWVkaWFFbmdpbmVJ
ZGVudGlmaWVyKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyRW5naW5lSWRlbnRpZmll
cnM6Ok1lZGlhRm91bmRhdGlvbk1lZGlhRW5naW5lSWRlbnRpZmllcik6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvUGxhdGZvcm1UaW1lUmFuZ2VzLmg6CisgICAgICAgIChXZWJDb3JlOjpQ
bGF0Zm9ybVRpbWVSYW5nZXM6OlBsYXRmb3JtVGltZVJhbmdlcyk6IERlbGV0ZWQuCisgICAgICAg
IChXZWJDb3JlOjpQbGF0Zm9ybVRpbWVSYW5nZXM6Omxlbmd0aCBjb25zdCk6IERlbGV0ZWQuCisg
ICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybVRpbWVSYW5nZXM6OlJhbmdlOjpSYW5nZSk6IERlbGV0
ZWQuCisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybVRpbWVSYW5nZXM6OlJhbmdlOjppc1BvaW50
SW5SYW5nZSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybVRpbWVS
YW5nZXM6OlJhbmdlOjppc092ZXJsYXBwaW5nUmFuZ2UgY29uc3QpOiBEZWxldGVkLgorICAgICAg
ICAoV2ViQ29yZTo6UGxhdGZvcm1UaW1lUmFuZ2VzOjpSYW5nZTo6aXNDb250aWd1b3VzV2l0aFJh
bmdlIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtVGltZVJhbmdl
czo6UmFuZ2U6OnVuaW9uV2l0aE92ZXJsYXBwaW5nT3JDb250aWd1b3VzUmFuZ2UgY29uc3QpOiBE
ZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1UaW1lUmFuZ2VzOjpSYW5nZTo6aXNC
ZWZvcmVSYW5nZSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
YXZmb3VuZGF0aW9uL2NmL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbkNGLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbkNGOjpyZWdpc3Rl
ck1lZGlhRW5naW5lKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24v
b2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLmg6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3Vu
ZGF0aW9uT2JqQy5tbToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUFWRm91
bmRhdGlvbk9iakM6OnJlZ2lzdGVyTWVkaWFFbmdpbmUpOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZG
T2JqQy5tbToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNl
QVZGT2JqQzo6cmVnaXN0ZXJNZWRpYUVuZ2luZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpD
Lm1tOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZP
YmpDOjpyZWdpc3Rlck1lZGlhRW5naW5lKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9n
c3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6cmVnaXN0ZXJNZWRpYUVuZ2luZSk6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL21zZS9NZWRpYVBsYXllclByaXZh
dGVHU3RyZWFtZXJNU0UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRl
R1N0cmVhbWVyTVNFOjpyZWdpc3Rlck1lZGlhRW5naW5lKToKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9ob2xlcHVuY2gvTWVkaWFQbGF5ZXJQcml2YXRlSG9sZVB1bmNoLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUhvbGVQdW5jaDo6cmVnaXN0ZXJNZWRpYUVu
Z2luZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL01lZGlhUGxheWVyUHJpdmF0
ZU1lZGlhRm91bmRhdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZh
dGVNZWRpYUZvdW5kYXRpb246OnJlZ2lzdGVyTWVkaWFFbmdpbmUpOgorICAgICAgICAqIHBsYXRm
b3JtL21vY2svbWVkaWFzb3VyY2UvTW9ja01lZGlhUGxheWVyTWVkaWFTb3VyY2UuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6TW9ja01lZGlhUGxheWVyTWVkaWFTb3VyY2U6OnJlZ2lzdGVyTWVkaWFF
bmdpbmUpOgorCiAyMDE5LTEyLTExICBFcmljIENhcmxzb24gIDxlcmljLmNhcmxzb25AYXBwbGUu
Y29tPgogCiAgICAgICAgIEFkZCBlbmNvZGVycyBmb3IgTWVkaWFQbGF5ZXJFbnVtIGVudW1zCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdl
TG9nCmluZGV4IDc1M2ZkODg3YmFlMDM4MjVmM2ZlYmM0NjAxNTM5Yzg1ODQyNTQ0MjMuLjMyZWI1
NjI1NDUyYmU5NWIzMWI0MTlhMGFlMzk0N2M3NjNlNGYwZmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEs
MTg3IEBACisyMDE5LTEyLTEwICBFcmljIENhcmxzb24gIDxlcmljLmNhcmxzb25AYXBwbGUuY29t
PgorCisgICAgICAgIEFkZCBpbmZyYXN0cnVjdHVyZSBuZWVkZWQgZm9yIHBsYXlpbmcgbWVkaWEg
cGxheWVyIGluIHRoZSBHUFUgcHJvY2VzcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MjA1MDk0CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS81NzgxNTM5
Mz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIERl
cml2ZWRTb3VyY2VzLWlucHV0LnhjZmlsZWxpc3Q6CisgICAgICAgICogRGVyaXZlZFNvdXJjZXMt
b3V0cHV0LnhjZmlsZWxpc3Q6CisgICAgICAgICogRGVyaXZlZFNvdXJjZXMubWFrZToKKyAgICAg
ICAgKiBHUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwOgorICAgICAgICAo
V2ViS2l0OjpHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpHUFVDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzKToKKyAgICAgICAgKFdlYktpdDo6R1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6fkdQVUNv
bm5lY3Rpb25Ub1dlYlByb2Nlc3MpOgorICAgICAgICAoV2ViS2l0OjpHUFVDb25uZWN0aW9uVG9X
ZWJQcm9jZXNzOjpkaWRSZWNlaXZlTWVzc2FnZSk6CisgICAgICAgIChXZWJLaXQ6OkdQVUNvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3M6OmRpZFJlY2VpdmVTeW5jTWVzc2FnZSk6CisgICAgICAgICogR1BV
UHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmg6CisgICAgICAgICogR1BVUHJvY2Vz
cy9tZWRpYS9SZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eS5jcHA6IEFkZGVkLgorICAgICAg
ICAoV2ViS2l0OjpudWxsTG9nZ2VyKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTWVkaWFQbGF5
ZXJNYW5hZ2VyUHJveHk6OlBsYXllclByb3h5OjpQbGF5ZXJQcm94eSk6CisgICAgICAgIChXZWJL
aXQ6OlJlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5OjpQbGF5ZXJQcm94eTo6flBsYXllclBy
b3h5KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHk6OlJl
bW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTWVk
aWFQbGF5ZXJNYW5hZ2VyUHJveHk6On5SZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eSk6Cisg
ICAgICAgIChXZWJLaXQ6OlJlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5OjpjcmVhdGVNZWRp
YVBsYXllcik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5
OjpnZXRTdXBwb3J0ZWRUeXBlcyk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZU1lZGlhUGxheWVy
TWFuYWdlclByb3h5OjpzdXBwb3J0c1R5cGUpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVNZWRp
YVBsYXllck1hbmFnZXJQcm94eTo6b3JpZ2luc0luTWVkaWFDYWNoZSk6CisgICAgICAgIChXZWJL
aXQ6OlJlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5OjpjbGVhck1lZGlhQ2FjaGUpOgorICAg
ICAgICAoV2ViS2l0OjpSZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eTo6Y2xlYXJNZWRpYUNh
Y2hlRm9yT3JpZ2lucyk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZU1lZGlhUGxheWVyTWFuYWdl
clByb3h5OjpzdXBwb3J0c0tleVN5c3RlbSk6CisgICAgICAgICogR1BVUHJvY2Vzcy9tZWRpYS9S
ZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eS5oOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6
UmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHk6OndlYlByb2Nlc3NDb25uZWN0aW9uIGNvbnN0
KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHk6OmRpZFJl
Y2VpdmVNZXNzYWdlRnJvbVdlYlByb2Nlc3MpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVNZWRp
YVBsYXllck1hbmFnZXJQcm94eTo6ZGlkUmVjZWl2ZVN5bmNNZXNzYWdlRnJvbVdlYlByb2Nlc3Mp
OgorICAgICAgICAqIEdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJv
eHkubWVzc2FnZXMuaW46IEFkZGVkLgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0L21lc3NhZ2Vz
LnB5OgorICAgICAgICAqIFNvdXJjZXMudHh0OgorICAgICAgICAqIFNvdXJjZXNDb2NvYS50eHQ6
CisgICAgICAgICogV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICog
V2ViUHJvY2Vzcy9HUFUvbWVkaWEvTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlLmNwcDogQWRkZWQu
CisgICAgICAgIChXZWJLaXQ6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6TWVkaWFQbGF5ZXJQ
cml2YXRlUmVtb3RlKToKKyAgICAgICAgKFdlYktpdDo6TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3Rl
Ojp+TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlKToKKyAgICAgICAgKFdlYktpdDo6TWVkaWFQbGF5
ZXJQcml2YXRlUmVtb3RlOjpNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OmxvYWQpOgorICAgICAg
ICAoV2ViS2l0OjpNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OmxvYWQpOgorICAgICAgICAoV2Vi
S2l0OjpNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OmNhbmNlbExvYWQpOgorICAgICAgICAoV2Vi
S2l0OjpNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OnByZXBhcmVUb1BsYXkpOgorICAgICAgICAo
V2ViS2l0OjpNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OnBsYXRmb3JtTGF5ZXIgY29uc3QpOgor
ICAgICAgICAoV2ViS2l0OjpNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OnNldFZpZGVvRnVsbHNj
cmVlbkxheWVyKToKKyAgICAgICAgKFdlYktpdDo6TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjp1
cGRhdGVWaWRlb0Z1bGxzY3JlZW5JbmxpbmVJbWFnZSk6CisgICAgICAgIChXZWJLaXQ6Ok1lZGlh
UGxheWVyUHJpdmF0ZVJlbW90ZTo6c2V0VmlkZW9GdWxsc2NyZWVuRnJhbWUpOgorICAgICAgICAo
V2ViS2l0OjpNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OnNldFZpZGVvRnVsbHNjcmVlbkdyYXZp
dHkpOgorICAgICAgICAoV2ViS2l0OjpNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OnNldFZpZGVv
RnVsbHNjcmVlbk1vZGUpOgorICAgICAgICAoV2ViS2l0OjpNZWRpYVBsYXllclByaXZhdGVSZW1v
dGU6OnZpZGVvRnVsbHNjcmVlblN0YW5kYnlDaGFuZ2VkKToKKyAgICAgICAgKFdlYktpdDo6TWVk
aWFQbGF5ZXJQcml2YXRlUmVtb3RlOjphY2Nlc3NMb2cgY29uc3QpOgorICAgICAgICAoV2ViS2l0
OjpNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OmVycm9yTG9nIGNvbnN0KToKKyAgICAgICAgKFdl
YktpdDo6TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpwbGF0Zm9ybUVycm9yQ29kZSBjb25zdCk6
CisgICAgICAgIChXZWJLaXQ6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6cGxheSk6CisgICAg
ICAgIChXZWJLaXQ6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6cGF1c2UpOgorICAgICAgICAo
V2ViS2l0OjpNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OnNldEJ1ZmZlcmluZ1BvbGljeSk6Cisg
ICAgICAgIChXZWJLaXQ6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6c3VwcG9ydHNQaWN0dXJl
SW5QaWN0dXJlIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6TWVkaWFQbGF5ZXJQcml2YXRlUmVt
b3RlOjpzdXBwb3J0c0Z1bGxzY3JlZW4gY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpNZWRpYVBs
YXllclByaXZhdGVSZW1vdGU6OnN1cHBvcnRzU2Nhbm5pbmcgY29uc3QpOgorICAgICAgICAoV2Vi
S2l0OjpNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OnJlcXVpcmVzSW1tZWRpYXRlQ29tcG9zaXRp
bmcgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OmNh
blNhdmVNZWRpYURhdGEgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpNZWRpYVBsYXllclByaXZh
dGVSZW1vdGU6Om5hdHVyYWxTaXplIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6TWVkaWFQbGF5
ZXJQcml2YXRlUmVtb3RlOjpoYXNWaWRlbyBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6Ok1lZGlh
UGxheWVyUHJpdmF0ZVJlbW90ZTo6aGFzQXVkaW8gY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpN
ZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OnNldFZpc2libGUpOgorICAgICAgICAoV2ViS2l0OjpN
ZWRpYVBsYXllclByaXZhdGVSZW1vdGU6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6ZHVyYXRp
b25NZWRpYVRpbWUgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpNZWRpYVBsYXllclByaXZhdGVS
ZW1vdGU6OmN1cnJlbnRNZWRpYVRpbWUgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpNZWRpYVBs
YXllclByaXZhdGVSZW1vdGU6OmdldFN0YXJ0RGF0ZSBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6
Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6c2Vlayk6CisgICAgICAgIChXZWJLaXQ6Ok1lZGlh
UGxheWVyUHJpdmF0ZVJlbW90ZTo6c2Vla1dpdGhUb2xlcmFuY2UpOgorICAgICAgICAoV2ViS2l0
OjpNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OnNlZWtpbmcgY29uc3QpOgorICAgICAgICAoV2Vi
S2l0OjpNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OnN0YXJ0VGltZSBjb25zdCk6CisgICAgICAg
IChXZWJLaXQ6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6c2V0UmF0ZURvdWJsZSk6CisgICAg
ICAgIChXZWJLaXQ6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6cmF0ZSBjb25zdCk6CisgICAg
ICAgIChXZWJLaXQ6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6c2V0UHJlc2VydmVzUGl0Y2gp
OgorICAgICAgICAoV2ViS2l0OjpNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OnBhdXNlZCBjb25z
dCk6CisgICAgICAgIChXZWJLaXQ6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6c2V0Vm9sdW1l
RG91YmxlKToKKyAgICAgICAgKFdlYktpdDo6TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpzZXRN
dXRlZCk6CisgICAgICAgIChXZWJLaXQ6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6aGFzQ2xv
c2VkQ2FwdGlvbnMgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpNZWRpYVBsYXllclByaXZhdGVS
ZW1vdGU6OnNldENsb3NlZENhcHRpb25zVmlzaWJsZSk6CisgICAgICAgIChXZWJLaXQ6Ok1lZGlh
UGxheWVyUHJpdmF0ZVJlbW90ZTo6bWF4RmFzdEZvcndhcmRSYXRlIGNvbnN0KToKKyAgICAgICAg
KFdlYktpdDo6TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjptaW5GYXN0UmV2ZXJzZVJhdGUgY29u
c3QpOgorICAgICAgICAoV2ViS2l0OjpNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6Om5ldHdvcmtT
dGF0ZSBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6
cmVhZHlTdGF0ZSBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6Ok1lZGlhUGxheWVyUHJpdmF0ZVJl
bW90ZTo6c2Vla2FibGUgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpNZWRpYVBsYXllclByaXZh
dGVSZW1vdGU6OmJ1ZmZlcmVkIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6TWVkaWFQbGF5ZXJQ
cml2YXRlUmVtb3RlOjptYXhNZWRpYVRpbWVTZWVrYWJsZSBjb25zdCk6CisgICAgICAgIChXZWJL
aXQ6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6bWluTWVkaWFUaW1lU2Vla2FibGUgY29uc3Qp
OgorICAgICAgICAoV2ViS2l0OjpNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OnNlZWthYmxlVGlt
ZVJhbmdlc0xhc3RNb2RpZmllZFRpbWUgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpNZWRpYVBs
YXllclByaXZhdGVSZW1vdGU6OmxpdmVVcGRhdGVJbnRlcnZhbCBjb25zdCk6CisgICAgICAgIChX
ZWJLaXQ6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6dG90YWxCeXRlcyBjb25zdCk6CisgICAg
ICAgIChXZWJLaXQ6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6ZGlkTG9hZGluZ1Byb2dyZXNz
IGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpzZXRT
aXplKToKKyAgICAgICAgKFdlYktpdDo6TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpwYWludCk6
CisgICAgICAgIChXZWJLaXQ6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6cGFpbnRDdXJyZW50
RnJhbWVJbkNvbnRleHQpOgorICAgICAgICAoV2ViS2l0OjpNZWRpYVBsYXllclByaXZhdGVSZW1v
dGU6OmNvcHlWaWRlb1RleHR1cmVUb1BsYXRmb3JtVGV4dHVyZSk6CisgICAgICAgIChXZWJLaXQ6
Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6bmF0aXZlSW1hZ2VGb3JDdXJyZW50VGltZSk6Cisg
ICAgICAgIChXZWJLaXQ6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6c2V0UHJlbG9hZCk6Cisg
ICAgICAgIChXZWJLaXQ6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6aGFzQXZhaWxhYmxlVmlk
ZW9GcmFtZSBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90
ZTo6Y2FuTG9hZFBvc3RlciBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6Ok1lZGlhUGxheWVyUHJp
dmF0ZVJlbW90ZTo6c2V0UG9zdGVyKToKKyAgICAgICAgKFdlYktpdDo6TWVkaWFQbGF5ZXJQcml2
YXRlUmVtb3RlOjplbnRlckZ1bGxzY3JlZW4pOgorICAgICAgICAoV2ViS2l0OjpNZWRpYVBsYXll
clByaXZhdGVSZW1vdGU6OmV4aXRGdWxsc2NyZWVuKToKKyAgICAgICAgKFdlYktpdDo6TWVkaWFQ
bGF5ZXJQcml2YXRlUmVtb3RlOjp3aXJlbGVzc1BsYXliYWNrVGFyZ2V0TmFtZSBjb25zdCk6Cisg
ICAgICAgIChXZWJLaXQ6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6d2lyZWxlc3NQbGF5YmFj
a1RhcmdldFR5cGUgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpNZWRpYVBsYXllclByaXZhdGVS
ZW1vdGU6OndpcmVsZXNzVmlkZW9QbGF5YmFja0Rpc2FibGVkIGNvbnN0KToKKyAgICAgICAgKFdl
YktpdDo6TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpzZXRXaXJlbGVzc1ZpZGVvUGxheWJhY2tE
aXNhYmxlZCk6CisgICAgICAgIChXZWJLaXQ6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6Y2Fu
UGxheVRvV2lyZWxlc3NQbGF5YmFja1RhcmdldCBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6Ok1l
ZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6aXNDdXJyZW50UGxheWJhY2tUYXJnZXRXaXJlbGVzcyBj
b25zdCk6CisgICAgICAgIChXZWJLaXQ6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6c2V0V2ly
ZWxlc3NQbGF5YmFja1RhcmdldCk6CisgICAgICAgIChXZWJLaXQ6Ok1lZGlhUGxheWVyUHJpdmF0
ZVJlbW90ZTo6c2V0U2hvdWxkUGxheVRvUGxheWJhY2tUYXJnZXQpOgorICAgICAgICAoV2ViS2l0
OjpNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OmNhbkVudGVyRnVsbHNjcmVlbiBjb25zdCk6Cisg
ICAgICAgIChXZWJLaXQ6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6c3VwcG9ydHNBY2NlbGVy
YXRlZFJlbmRlcmluZyBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6Ok1lZGlhUGxheWVyUHJpdmF0
ZVJlbW90ZTo6YWNjZWxlcmF0ZWRSZW5kZXJpbmdTdGF0ZUNoYW5nZWQpOgorICAgICAgICAoV2Vi
S2l0OjpNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OnNob3VsZE1haW50YWluQXNwZWN0UmF0aW8g
Y29uc3QpOgorICAgICAgICAoV2ViS2l0OjpNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OnNldFNo
b3VsZE1haW50YWluQXNwZWN0UmF0aW8pOgorICAgICAgICAoV2ViS2l0OjpNZWRpYVBsYXllclBy
aXZhdGVSZW1vdGU6Omhhc1NpbmdsZVNlY3VyaXR5T3JpZ2luIGNvbnN0KToKKyAgICAgICAgKFdl
YktpdDo6TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpkaWRQYXNzQ09SU0FjY2Vzc0NoZWNrIGNv
bnN0KToKKyAgICAgICAgKFdlYktpdDo6TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjp3b3VsZFRh
aW50T3JpZ2luIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6TWVkaWFQbGF5ZXJQcml2YXRlUmVt
b3RlOjptb3ZpZUxvYWRUeXBlIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6TWVkaWFQbGF5ZXJQ
cml2YXRlUmVtb3RlOjpwcmVwYXJlRm9yUmVuZGVyaW5nKToKKyAgICAgICAgKFdlYktpdDo6TWVk
aWFQbGF5ZXJQcml2YXRlUmVtb3RlOjptZWRpYVRpbWVGb3JUaW1lVmFsdWUgY29uc3QpOgorICAg
ICAgICAoV2ViS2l0OjpNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6Om1heGltdW1EdXJhdGlvblRv
Q2FjaGVNZWRpYVRpbWUgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpNZWRpYVBsYXllclByaXZh
dGVSZW1vdGU6OmRlY29kZWRGcmFtZUNvdW50IGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6TWVk
aWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpkcm9wcGVkRnJhbWVDb3VudCBjb25zdCk6CisgICAgICAg
IChXZWJLaXQ6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6YXVkaW9EZWNvZGVkQnl0ZUNvdW50
IGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjp2aWRl
b0RlY29kZWRCeXRlQ291bnQgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpNZWRpYVBsYXllclBy
aXZhdGVSZW1vdGU6OnNldFByaXZhdGVCcm93c2luZ01vZGUpOgorICAgICAgICAoV2ViS2l0OjpN
ZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OmVuZ2luZURlc2NyaXB0aW9uIGNvbnN0KToKKyAgICAg
ICAgKFdlYktpdDo6TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjphdWRpb1NvdXJjZVByb3ZpZGVy
KToKKyAgICAgICAgKFdlYktpdDo6TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpjcmVhdGVTZXNz
aW9uKToKKyAgICAgICAgKFdlYktpdDo6TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpzZXRDRE1T
ZXNzaW9uKToKKyAgICAgICAgKFdlYktpdDo6TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjprZXlB
ZGRlZCk6CisgICAgICAgIChXZWJLaXQ6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6Y2RtSW5z
dGFuY2VBdHRhY2hlZCk6CisgICAgICAgIChXZWJLaXQ6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90
ZTo6Y2RtSW5zdGFuY2VEZXRhY2hlZCk6CisgICAgICAgIChXZWJLaXQ6Ok1lZGlhUGxheWVyUHJp
dmF0ZVJlbW90ZTo6YXR0ZW1wdFRvRGVjcnlwdFdpdGhJbnN0YW5jZSk6CisgICAgICAgIChXZWJL
aXQ6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6d2FpdGluZ0ZvcktleSBjb25zdCk6CisgICAg
ICAgIChXZWJLaXQ6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6cmVxdWlyZXNUZXh0VHJhY2tS
ZXByZXNlbnRhdGlvbiBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6Ok1lZGlhUGxheWVyUHJpdmF0
ZVJlbW90ZTo6c2V0VGV4dFRyYWNrUmVwcmVzZW50YXRpb24pOgorICAgICAgICAoV2ViS2l0OjpN
ZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OnN5bmNUZXh0VHJhY2tCb3VuZHMpOgorICAgICAgICAo
V2ViS2l0OjpNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OnRyYWNrc0NoYW5nZWQpOgorICAgICAg
ICAoV2ViS2l0OjpNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OnNpbXVsYXRlQXVkaW9JbnRlcnJ1
cHRpb24pOgorICAgICAgICAoV2ViS2l0OjpNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OmJlZ2lu
U2ltdWxhdGVkSERDUEVycm9yKToKKyAgICAgICAgKFdlYktpdDo6TWVkaWFQbGF5ZXJQcml2YXRl
UmVtb3RlOjplbmRTaW11bGF0ZWRIRENQRXJyb3IpOgorICAgICAgICAoV2ViS2l0OjpNZWRpYVBs
YXllclByaXZhdGVSZW1vdGU6Omxhbmd1YWdlT2ZQcmltYXJ5QXVkaW9UcmFjayBjb25zdCk6Cisg
ICAgICAgIChXZWJLaXQ6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6ZXh0cmFNZW1vcnlDb3N0
IGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpmaWxl
U2l6ZSBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6
ZW5kZWQgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6
OnZpZGVvUGxheWJhY2tRdWFsaXR5TWV0cmljcyk6CisgICAgICAgIChXZWJLaXQ6Ok1lZGlhUGxh
eWVyUHJpdmF0ZVJlbW90ZTo6bm90aWZ5VHJhY2tNb2RlQ2hhbmdlZCk6CisgICAgICAgIChXZWJL
aXQ6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6bm90aWZ5QWN0aXZlU291cmNlQnVmZmVyc0No
YW5nZWQpOgorICAgICAgICAoV2ViS2l0OjpNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OnNldFNo
b3VsZERpc2FibGVTbGVlcCk6CisgICAgICAgIChXZWJLaXQ6Ok1lZGlhUGxheWVyUHJpdmF0ZVJl
bW90ZTo6YXBwbGljYXRpb25XaWxsUmVzaWduQWN0aXZlKToKKyAgICAgICAgKFdlYktpdDo6TWVk
aWFQbGF5ZXJQcml2YXRlUmVtb3RlOjphcHBsaWNhdGlvbkRpZEJlY29tZUFjdGl2ZSk6CisgICAg
ICAgIChXZWJLaXQ6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6cGVyZm9ybVRhc2tBdE1lZGlh
VGltZSk6CisgICAgICAgIChXZWJLaXQ6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6c2hvdWxk
SWdub3JlSW50cmluc2ljU2l6ZSk6CisgICAgICAgIChXZWJLaXQ6Ok1lZGlhUGxheWVyUHJpdmF0
ZVJlbW90ZTo6bG9nQ2hhbm5lbCBjb25zdCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvbWVk
aWEvTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlLmg6IEFkZGVkLgorICAgICAgICAqIFdlYlByb2Nl
c3MvR1BVL21lZGlhL01lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZUlkZW50aWZpZXIuaDogQWRkZWQu
CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2Vy
LmNwcDogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6Ok1lZGlhUGxheWVyUmVtb3RlRmFjdG9yeTo6
TWVkaWFQbGF5ZXJSZW1vdGVGYWN0b3J5KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTWVkaWFQ
bGF5ZXJNYW5hZ2VyOjpSZW1vdGVNZWRpYVBsYXllck1hbmFnZXIpOgorICAgICAgICAoV2ViS2l0
OjpSZW1vdGVNZWRpYVBsYXllck1hbmFnZXI6On5SZW1vdGVNZWRpYVBsYXllck1hbmFnZXIpOgor
ICAgICAgICAoV2ViS2l0OjpSZW1vdGVNZWRpYVBsYXllck1hbmFnZXI6OnN1cHBsZW1lbnROYW1l
KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyOjppbml0aWFsaXpl
KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyOjpjcmVhdGVSZW1v
dGVNZWRpYVBsYXllcik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZU1lZGlhUGxheWVyTWFuYWdl
cjo6Z2V0U3VwcG9ydGVkVHlwZXMpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVNZWRpYVBsYXll
ck1hbmFnZXI6OnN1cHBvcnRzVHlwZUFuZENvZGVjcyk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90
ZU1lZGlhUGxheWVyTWFuYWdlcjo6c3VwcG9ydHNLZXlTeXN0ZW0pOgorICAgICAgICAoV2ViS2l0
OjpSZW1vdGVNZWRpYVBsYXllck1hbmFnZXI6Om9yaWdpbnNJbk1lZGlhQ2FjaGUpOgorICAgICAg
ICAoV2ViS2l0OjpSZW1vdGVNZWRpYVBsYXllck1hbmFnZXI6OmNsZWFyTWVkaWFDYWNoZSk6Cisg
ICAgICAgIChXZWJLaXQ6OlJlbW90ZU1lZGlhUGxheWVyTWFuYWdlcjo6Y2xlYXJNZWRpYUNhY2hl
Rm9yT3JpZ2lucyk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZU1lZGlhUGxheWVyTWFuYWdlcjo6
bmV0d29ya1N0YXRlQ2hhbmdlZCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZU1lZGlhUGxheWVy
TWFuYWdlcjo6dXBkYXRlUHJlZmVyZW5jZXMpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVNZWRp
YVBsYXllck1hbmFnZXI6OmdwdVByb2Nlc3NDb25uZWN0aW9uIGNvbnN0KToKKyAgICAgICAgKiBX
ZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVNZWRpYVBsYXllck1hbmFnZXIuaDogQWRkZWQuCisg
ICAgICAgICogV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyLm1l
c3NhZ2VzLmluOiBBZGRlZC4KKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5j
cHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnVwZGF0ZVByZWZlcmVuY2VzKToKKyAgICAg
ICAgKiBXZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwOgorCiAyMDE5LTEyLTExICBUcnVpdHQgU2F2
ZWxsICA8dHNhdmVsbEBhcHBsZS5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgcm9sbGluZyBv
dXQgcjI1MzM3Ni4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvagppbmRleCAwM2U2ZjU0MzNiZjZmNjdlYmM1ZjQ5ZmVkMGE5NTAxMmQ0YmU0YmY5
Li5iZjI4MWFmZTUxN2I5ZWE2YzRjOWNlNmJkZWMxZTE4NDcwYmY4NGNkIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291
cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xMDQsNiAr
MTA0LDcgQEAKIAkJMDcxRTQ5NkUxQUQ1QUEwRDAwOEE1MEI0IC8qIE1lZGlhUGxheWJhY2tUYXJn
ZXRNYWMubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAw
NzFFNDk2RDFBRDVBQTBEMDA4QTUwQjQgLyogTWVkaWFQbGF5YmFja1RhcmdldE1hYy5tbSAqLzsg
fTsKIAkJMDcxRTQ5NzAxQUQ1QUI1RTAwOEE1MEI0IC8qIE1lZGlhUGxheWJhY2tUYXJnZXRNYWMu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3MUU0OTZG
MUFENUFCNUUwMDhBNTBCNCAvKiBNZWRpYVBsYXliYWNrVGFyZ2V0TWFjLmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMDcyMEIwQTExNEQzMzIzNTAw
NjQyOTU1IC8qIEdlbmVyaWNFdmVudFF1ZXVlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSAwNzIwQjA5RjE0RDMzMjM1MDA2NDI5NTUgLyogR2VuZXJpY0V2
ZW50UXVldWUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OworCQkwNzI1RUZBOTIzOUFENzkzMDBBNTM4QTkgLyogTWVkaWFQbGF5ZXJQcml2YXRlLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwNzlGNUU0QjBGM0JF
QkVBMDA1RTA3ODIgLyogTWVkaWFQbGF5ZXJQcml2YXRlLmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMDcyNzdFNEQxN0QwMThDQzAwMTU1MzREIC8q
IEpTTWVkaWFTdHJlYW0uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDA3Mjc3RTQxMTdEMDE4Q0MwMDE1NTM0RCAvKiBKU01lZGlhU3RyZWFtLmggKi87IH07
CiAJCTA3Mjc3RTREMTdEMDE4Q0MwMDE1NTM0RSAvKiBKU0NhbnZhc0NhcHR1cmVNZWRpYVN0cmVh
bVRyYWNrLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAw
NzI3N0U0MTE3RDAxOENDMDAxNTUzNEUgLyogSlNDYW52YXNDYXB0dXJlTWVkaWFTdHJlYW1UcmFj
ay5oICovOyB9OwogCQkwNzI3N0U0RjE3RDAxOENDMDAxNTUzNEQgLyogSlNNZWRpYVN0cmVhbUF1
ZGlvRGVzdGluYXRpb25Ob2RlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSAwNzI3N0U0MzE3RDAxOENDMDAxNTUzNEQgLyogSlNNZWRpYVN0cmVhbUF1ZGlv
RGVzdGluYXRpb25Ob2RlLmggKi87IH07CkBAIC0zMTM3OSw2ICszMTM4MCw3IEBACiAJCQkJMDc3
QjY0MTMxQjk0RjEyRTAwM0U5QUQ1IC8qIE1lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJNb2NrLmgg
aW4gSGVhZGVycyAqLywKIAkJCQlFNDQ2MTNFNDBDRDY4MUEyMDBGQURBNzUgLyogTWVkaWFQbGF5
ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUNENTIwOUU0MUIwQkQ4MzgwMDc3MTg0RSAvKiBNZWRp
YVBsYXllckVudW1zLmggaW4gSGVhZGVycyAqLywKKwkJCQkwNzI1RUZBOTIzOUFENzkzMDBBNTM4
QTkgLyogTWVkaWFQbGF5ZXJQcml2YXRlLmggaW4gSGVhZGVycyAqLywKIAkJCQkwNzZGMEQwRTEy
QjgxOTI3MDBDMjZBQTQgLyogTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uLmggaW4gSGVh
ZGVycyAqLywKIAkJCQlERjlBRkQ3MjEzRkMzMUQ4MDAxNUZFQjcgLyogTWVkaWFQbGF5ZXJQcml2
YXRlQVZGb3VuZGF0aW9uT2JqQy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQ0RDOEI1QTMxODA0NjM0
NzAwMTZFNjg1IC8qIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQy5oIGluIEhl
YWRlcnMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Db250ZW50VHlw
ZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vQ29udGVudFR5cGUuaAppbmRleCBjODJiNWI3
MTk3YzllMTVkMWUyZjU0N2ZkNTY0MWZjNWY0ZWM1ZWNmLi41ODVhM2ZkNWE3ZWZkMWFiMzQ4ZDE0
ZjFmZjIxZTkwOWU2NjZjMjQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9D
b250ZW50VHlwZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0NvbnRlbnRUeXBlLmgK
QEAgLTMzLDggKzMzLDggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBDb250ZW50VHlw
ZSB7CiBwdWJsaWM6Ci0gICAgZXhwbGljaXQgQ29udGVudFR5cGUoU3RyaW5nJiYgdHlwZSk7Ci0g
ICAgZXhwbGljaXQgQ29udGVudFR5cGUoY29uc3QgU3RyaW5nJiB0eXBlKTsKKyAgICBXRUJDT1JF
X0VYUE9SVCBleHBsaWNpdCBDb250ZW50VHlwZShTdHJpbmcmJiB0eXBlKTsKKyAgICBXRUJDT1JF
X0VYUE9SVCBleHBsaWNpdCBDb250ZW50VHlwZShjb25zdCBTdHJpbmcmIHR5cGUpOwogICAgIENv
bnRlbnRUeXBlKCkgPSBkZWZhdWx0OwogCiAgICAgc3RhdGljIGNvbnN0IFN0cmluZyYgY29kZWNz
UGFyYW1ldGVyKCk7CkBAIC00OSw2ICs0OSwyMyBAQCBwdWJsaWM6CiAKICAgICBTdHJpbmcgdG9K
U09OU3RyaW5nKCkgY29uc3Q7CiAKKyAgICB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPgorICAgIHZv
aWQgZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0CisgICAgeworICAgICAgICBlbmNvZGVy
IDw8IG1fdHlwZTsKKyAgICB9CisKKyAgICB0ZW1wbGF0ZSA8Y2xhc3MgRGVjb2Rlcj4KKyAgICBz
dGF0aWMgT3B0aW9uYWw8Q29udGVudFR5cGU+IGRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQorICAg
IHsKKyAgICAgICAgT3B0aW9uYWw8U3RyaW5nPiB0eXBlOworICAgICAgICBkZWNvZGVyID4+IHR5
cGU7CisgICAgICAgIGlmICghdHlwZSkKKyAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7
CisKKyAgICAgICAgcmV0dXJuIHsgQ29udGVudFR5cGUoV1RGTW92ZSgqdHlwZSkpIH07CisgICAg
fQorCiBwcml2YXRlOgogICAgIFN0cmluZyBtX3R5cGU7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuY3BwCmluZGV4IGNlMjNhYjc4NGJjNmMy
YTE1ZmI4OTFkODE1Nzk1OWYxYzE2NGI1NGEuLmM3NDVjNDA2YzA2NGU2NGE0OTE4ZTA1N2QyNmVj
OTEwYjM3MGE3MzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L01lZGlhUGxheWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9N
ZWRpYVBsYXllci5jcHAKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA3
LTIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAy
MDA3LTIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCkBAIC05MCwxNCArOTAsNiBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKLSNpZiAhUkVMRUFTRV9MT0dfRElTQUJMRUQKLXN0YXRpYyBSZWZQdHI8TG9nZ2VyPiYgbnVs
bExvZ2dlcigpCi17Ci0gICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFJlZlB0cjxMb2dnZXI+PiBs
b2dnZXI7Ci0gICAgcmV0dXJuIGxvZ2dlcjsKLX0KLSNlbmRpZgotCiAvLyBhIG51bGwgcGxheWVy
IHRvIG1ha2UgTWVkaWFQbGF5ZXIgbG9naWMgc2ltcGxlcgogCiBjbGFzcyBOdWxsTWVkaWFQbGF5
ZXJQcml2YXRlIGZpbmFsIDogcHVibGljIE1lZGlhUGxheWVyUHJpdmF0ZUludGVyZmFjZSB7CkBA
IC0xNjYsOCArMTU4LDIyIEBAIHB1YmxpYzoKICAgICBib29sIGhhc1NpbmdsZVNlY3VyaXR5T3Jp
Z2luKCkgY29uc3QgZmluYWwgeyByZXR1cm4gdHJ1ZTsgfQogfTsKIAorI2lmICFSRUxFQVNFX0xP
R19ESVNBQkxFRAorc3RhdGljIFJlZlB0cjxMb2dnZXI+JiBudWxsTG9nZ2VyKCkKK3sKKyAgICBz
dGF0aWMgTmV2ZXJEZXN0cm95ZWQ8UmVmUHRyPExvZ2dlcj4+IGxvZ2dlcjsKKyAgICByZXR1cm4g
bG9nZ2VyOworfQorI2VuZGlmCisKK3N0YXRpYyBjb25zdCBWZWN0b3I8V2ViQ29yZTo6Q29udGVu
dFR5cGU+JiBudWxsQ29udGVudFR5cGVWZWN0b3IoKQoreworICAgIHN0YXRpYyBOZXZlckRlc3Ry
b3llZDxWZWN0b3I8V2ViQ29yZTo6Q29udGVudFR5cGU+PiB2ZWN0b3I7CisgICAgcmV0dXJuIHZl
Y3RvcjsKK30KKwogY2xhc3MgTnVsbE1lZGlhUGxheWVyQ2xpZW50IDogcHVibGljIE1lZGlhUGxh
eWVyQ2xpZW50IHsKLXB1YmxpYzoKK3ByaXZhdGU6CiAjaWYgIVJFTEVBU0VfTE9HX0RJU0FCTEVE
CiAgICAgY29uc3QgTG9nZ2VyJiBtZWRpYVBsYXllckxvZ2dlcigpIGZpbmFsCiAgICAgewpAQCAt
MTc5LDggKzE4NSwxMSBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiAqbnVsbExvZ2dlcigpLmdl
dCgpOwogICAgIH0KICNlbmRpZgorCisgICAgY29uc3QgVmVjdG9yPFdlYkNvcmU6OkNvbnRlbnRU
eXBlPiYgbWVkaWFDb250ZW50VHlwZXNSZXF1aXJpbmdIYXJkd2FyZVN1cHBvcnQoKSBjb25zdCBm
aW5hbCB7IHJldHVybiBudWxsQ29udGVudFR5cGVWZWN0b3IoKTsgfQogfTsKIAorCiBjb25zdCBW
ZWN0b3I8Q29udGVudFR5cGU+JiBNZWRpYVBsYXllckNsaWVudDo6bWVkaWFDb250ZW50VHlwZXNS
ZXF1aXJpbmdIYXJkd2FyZVN1cHBvcnQoKSBjb25zdAogewogICAgIHN0YXRpYyBOZXZlckRlc3Ry
b3llZDxWZWN0b3I8Q29udGVudFR5cGU+PiBjb250ZW50VHlwZXM7CkBAIC0xOTUsMTcgKzIwNCw3
IEBAIHN0YXRpYyBNZWRpYVBsYXllckNsaWVudCYgbnVsbE1lZGlhUGxheWVyQ2xpZW50KCkKIAog
Ly8gZW5naW5lIHN1cHBvcnQKIAotc3RydWN0IE1lZGlhUGxheWVyRmFjdG9yeSB7Ci0gICAgQ3Jl
YXRlTWVkaWFFbmdpbmVQbGF5ZXIgY29uc3RydWN0b3I7Ci0gICAgTWVkaWFFbmdpbmVTdXBwb3J0
ZWRUeXBlcyBnZXRTdXBwb3J0ZWRUeXBlczsKLSAgICBNZWRpYUVuZ2luZVN1cHBvcnRzVHlwZSBz
dXBwb3J0c1R5cGVBbmRDb2RlY3M7Ci0gICAgTWVkaWFFbmdpbmVPcmlnaW5zSW5NZWRpYUNhY2hl
IG9yaWdpbnNJbk1lZGlhQ2FjaGU7Ci0gICAgTWVkaWFFbmdpbmVDbGVhck1lZGlhQ2FjaGUgY2xl
YXJNZWRpYUNhY2hlOwotICAgIE1lZGlhRW5naW5lQ2xlYXJNZWRpYUNhY2hlRm9yT3JpZ2lucyBj
bGVhck1lZGlhQ2FjaGVGb3JPcmlnaW5zOwotICAgIE1lZGlhRW5naW5lU3VwcG9ydHNLZXlTeXN0
ZW0gc3VwcG9ydHNLZXlTeXN0ZW07Ci19OwotCi1zdGF0aWMgdm9pZCBhZGRNZWRpYUVuZ2luZShD
cmVhdGVNZWRpYUVuZ2luZVBsYXllciYmLCBNZWRpYUVuZ2luZVN1cHBvcnRlZFR5cGVzLCBNZWRp
YUVuZ2luZVN1cHBvcnRzVHlwZSwgTWVkaWFFbmdpbmVPcmlnaW5zSW5NZWRpYUNhY2hlLCBNZWRp
YUVuZ2luZUNsZWFyTWVkaWFDYWNoZSwgTWVkaWFFbmdpbmVDbGVhck1lZGlhQ2FjaGVGb3JPcmln
aW5zLCBNZWRpYUVuZ2luZVN1cHBvcnRzS2V5U3lzdGVtKTsKK3N0YXRpYyB2b2lkIGFkZE1lZGlh
RW5naW5lKHN0ZDo6dW5pcXVlX3B0cjxNZWRpYVBsYXllckZhY3Rvcnk+KTsKIAogc3RhdGljIExv
Y2sgbWVkaWFFbmdpbmVWZWN0b3JMb2NrOwogCkBAIC0yMTUsMjEgKzIxNCwzNyBAQCBzdGF0aWMg
Ym9vbCYgaGF2ZU1lZGlhRW5naW5lc1ZlY3RvcigpCiAgICAgcmV0dXJuIGhhdmVWZWN0b3I7CiB9
CiAKLXN0YXRpYyBWZWN0b3I8TWVkaWFQbGF5ZXJGYWN0b3J5PiYgbXV0YWJsZUluc3RhbGxlZE1l
ZGlhRW5naW5lc1ZlY3RvcigpCitzdGF0aWMgVmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxNZWRpYVBs
YXllckZhY3Rvcnk+PiYgbXV0YWJsZUluc3RhbGxlZE1lZGlhRW5naW5lc1ZlY3RvcigpCiB7Ci0g
ICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFZlY3RvcjxNZWRpYVBsYXllckZhY3Rvcnk+PiBpbnN0
YWxsZWRFbmdpbmVzOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxWZWN0b3I8c3RkOjp1bmlx
dWVfcHRyPE1lZGlhUGxheWVyRmFjdG9yeT4+PiBpbnN0YWxsZWRFbmdpbmVzOwogICAgIHJldHVy
biBpbnN0YWxsZWRFbmdpbmVzOwogfQogCitzdGF0aWMgUmVtb3RlTWVkaWFQbGF5ZXJTdXBwb3J0
OjpSZWdpc3RlclJlbW90ZVBsYXllckNhbGxiYWNrJiByZWdpc3RlclJlbW90ZVBsYXllckNhbGxi
YWNrKCkKK3sKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8UmVtb3RlTWVkaWFQbGF5ZXJTdXBw
b3J0OjpSZWdpc3RlclJlbW90ZVBsYXllckNhbGxiYWNrPiBjYWxsYmFjazsKKyAgICByZXR1cm4g
Y2FsbGJhY2s7Cit9CisKK3ZvaWQgUmVtb3RlTWVkaWFQbGF5ZXJTdXBwb3J0OjpzZXRSZWdpc3Rl
clJlbW90ZVBsYXllckNhbGxiYWNrKFJlZ2lzdGVyUmVtb3RlUGxheWVyQ2FsbGJhY2smJiBjYWxs
YmFjaykKK3sKKyAgICByZWdpc3RlclJlbW90ZVBsYXllckNhbGxiYWNrKCkgPSBXVEZNb3ZlKGNh
bGxiYWNrKTsKK30KKwogc3RhdGljIHZvaWQgYnVpbGRNZWRpYUVuZ2luZXNWZWN0b3IoKQogewog
ICAgIEFTU0VSVChtZWRpYUVuZ2luZVZlY3RvckxvY2suaXNMb2NrZWQoKSk7CiAKICNpZiBVU0Uo
QVZGT1VOREFUSU9OKQorICAgIGF1dG8mIHJlZ2lzdGVyUmVtb3RlRW5naW5lID0gcmVnaXN0ZXJS
ZW1vdGVQbGF5ZXJDYWxsYmFjaygpOworCiAgICAgaWYgKERlcHJlY2F0ZWRHbG9iYWxTZXR0aW5n
czo6aXNBVkZvdW5kYXRpb25FbmFibGVkKCkpIHsKIAogI2lmIFBMQVRGT1JNKENPQ09BKQotICAg
ICAgICBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpyZWdpc3Rlck1lZGlhRW5n
aW5lKGFkZE1lZGlhRW5naW5lKTsKKyAgICAgICAgaWYgKHJlZ2lzdGVyUmVtb3RlRW5naW5lKQor
ICAgICAgICAgICAgcmVnaXN0ZXJSZW1vdGVFbmdpbmUoYWRkTWVkaWFFbmdpbmUsIE1lZGlhUGxh
eWVyRW51bXM6Ok1lZGlhRW5naW5lSWRlbnRpZmllcjo6QVZGb3VuZGF0aW9uKTsKKyAgICAgICAg
ZWxzZQorICAgICAgICAgICAgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6cmVn
aXN0ZXJNZWRpYUVuZ2luZShhZGRNZWRpYUVuZ2luZSk7CiAjZW5kaWYKIAogI2lmIEVOQUJMRShN
RURJQV9TT1VSQ0UpCkBAIC0yNjUsNyArMjgwLDcgQEAgc3RhdGljIHZvaWQgYnVpbGRNZWRpYUVu
Z2luZXNWZWN0b3IoKQogICAgIGhhdmVNZWRpYUVuZ2luZXNWZWN0b3IoKSA9IHRydWU7CiB9CiAK
LXN0YXRpYyBjb25zdCBWZWN0b3I8TWVkaWFQbGF5ZXJGYWN0b3J5PiYgaW5zdGFsbGVkTWVkaWFF
bmdpbmVzKCkKK3N0YXRpYyBjb25zdCBWZWN0b3I8c3RkOjp1bmlxdWVfcHRyPE1lZGlhUGxheWVy
RmFjdG9yeT4+JiBpbnN0YWxsZWRNZWRpYUVuZ2luZXMoKQogewogICAgIHsKICAgICAgICAgYXV0
byBsb2NrZXIgPSBob2xkTG9jayhtZWRpYUVuZ2luZVZlY3RvckxvY2spOwpAQCAtMjc2LDE0ICsy
OTEsOSBAQCBzdGF0aWMgY29uc3QgVmVjdG9yPE1lZGlhUGxheWVyRmFjdG9yeT4mIGluc3RhbGxl
ZE1lZGlhRW5naW5lcygpCiAgICAgcmV0dXJuIG11dGFibGVJbnN0YWxsZWRNZWRpYUVuZ2luZXNW
ZWN0b3IoKTsKIH0KIAotc3RhdGljIHZvaWQgYWRkTWVkaWFFbmdpbmUoQ3JlYXRlTWVkaWFFbmdp
bmVQbGF5ZXImJiBjb25zdHJ1Y3RvciwgTWVkaWFFbmdpbmVTdXBwb3J0ZWRUeXBlcyBnZXRTdXBw
b3J0ZWRUeXBlcywgTWVkaWFFbmdpbmVTdXBwb3J0c1R5cGUgc3VwcG9ydHNUeXBlLAotICAgIE1l
ZGlhRW5naW5lT3JpZ2luc0luTWVkaWFDYWNoZSBvcmlnaW5zSW5NZWRpYUNhY2hlLCBNZWRpYUVu
Z2luZUNsZWFyTWVkaWFDYWNoZSBjbGVhck1lZGlhQ2FjaGUsIE1lZGlhRW5naW5lQ2xlYXJNZWRp
YUNhY2hlRm9yT3JpZ2lucyBjbGVhck1lZGlhQ2FjaGVGb3JPcmlnaW5zLCBNZWRpYUVuZ2luZVN1
cHBvcnRzS2V5U3lzdGVtIHN1cHBvcnRzS2V5U3lzdGVtKQorc3RhdGljIHZvaWQgYWRkTWVkaWFF
bmdpbmUoc3RkOjp1bmlxdWVfcHRyPE1lZGlhUGxheWVyRmFjdG9yeT4gZmFjdG9yeSkKIHsKLSAg
ICBBU1NFUlQoY29uc3RydWN0b3IpOwotICAgIEFTU0VSVChnZXRTdXBwb3J0ZWRUeXBlcyk7Ci0g
ICAgQVNTRVJUKHN1cHBvcnRzVHlwZSk7Ci0KLSAgICBtdXRhYmxlSW5zdGFsbGVkTWVkaWFFbmdp
bmVzVmVjdG9yKCkuYXBwZW5kKE1lZGlhUGxheWVyRmFjdG9yeSB7IFdURk1vdmUoY29uc3RydWN0
b3IpLCBnZXRTdXBwb3J0ZWRUeXBlcywgc3VwcG9ydHNUeXBlLCBvcmlnaW5zSW5NZWRpYUNhY2hl
LCBjbGVhck1lZGlhQ2FjaGUsIGNsZWFyTWVkaWFDYWNoZUZvck9yaWdpbnMsIHN1cHBvcnRzS2V5
U3lzdGVtIH0pOworICAgIG11dGFibGVJbnN0YWxsZWRNZWRpYUVuZ2luZXNWZWN0b3IoKS5hcHBl
bmQoV1RGTW92ZShmYWN0b3J5KSk7CiB9CiAKIHN0YXRpYyBjb25zdCBBdG9tU3RyaW5nJiBhcHBs
aWNhdGlvbk9jdGV0U3RyZWFtKCkKQEAgLTI5OCw2ICszMDgsMjEgQEAgc3RhdGljIGNvbnN0IEF0
b21TdHJpbmcmIHRleHRQbGFpbigpCiAgICAgcmV0dXJuIHRleHRQbGFpbjsKIH0KIAorY29uc3Qg
TWVkaWFQbGF5ZXJGYWN0b3J5KiBNZWRpYVBsYXllcjo6bWVkaWFFbmdpbmUoTWVkaWFQbGF5ZXJF
bnVtczo6TWVkaWFFbmdpbmVJZGVudGlmaWVyIGlkZW50aWZpZXIpCit7CisgICAgYXV0byYgZW5n
aW5lcyA9IGluc3RhbGxlZE1lZGlhRW5naW5lcygpOworICAgIGF1dG8gY3VycmVudEluZGV4ID0g
ZW5naW5lcy5maW5kTWF0Y2hpbmcoW2lkZW50aWZpZXJdIChhdXRvJiBlbmdpbmUpIHsKKyAgICAg
ICAgcmV0dXJuIGVuZ2luZS0+aWRlbnRpZmllcigpID09IGlkZW50aWZpZXI7CisgICAgfSk7CisK
KyAgICBpZiAoY3VycmVudEluZGV4ID09IG5vdEZvdW5kKSB7CisgICAgICAgIEFTU0VSVF9OT1Rf
UkVBQ0hFRCgpOworICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICB9CisKKyAgICByZXR1cm4g
ZW5naW5lc1tjdXJyZW50SW5kZXhdLmdldCgpOworfQorCiBzdGF0aWMgY29uc3QgTWVkaWFQbGF5
ZXJGYWN0b3J5KiBiZXN0TWVkaWFFbmdpbmVGb3JTdXBwb3J0UGFyYW1ldGVycyhjb25zdCBNZWRp
YUVuZ2luZVN1cHBvcnRQYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzLCBjb25zdCBNZWRpYVBsYXllckZh
Y3RvcnkqIGN1cnJlbnQgPSBudWxscHRyKQogewogICAgIGlmIChwYXJhbWV0ZXJzLnR5cGUuaXNF
bXB0eSgpICYmICFwYXJhbWV0ZXJzLmlzTWVkaWFTb3VyY2UgJiYgIXBhcmFtZXRlcnMuaXNNZWRp
YVN0cmVhbSkKQEAgLTMxNSwzNCArMzQwLDQ2IEBAIHN0YXRpYyBjb25zdCBNZWRpYVBsYXllckZh
Y3RvcnkqIGJlc3RNZWRpYUVuZ2luZUZvclN1cHBvcnRQYXJhbWV0ZXJzKGNvbnN0IE1lZGlhCiAg
ICAgTWVkaWFQbGF5ZXI6OlN1cHBvcnRzVHlwZSBzdXBwb3J0ZWQgPSBNZWRpYVBsYXllcjo6U3Vw
cG9ydHNUeXBlOjpJc05vdFN1cHBvcnRlZDsKICAgICBmb3IgKGF1dG8mIGVuZ2luZSA6IGluc3Rh
bGxlZE1lZGlhRW5naW5lcygpKSB7CiAgICAgICAgIGlmIChjdXJyZW50KSB7Ci0gICAgICAgICAg
ICBpZiAoY3VycmVudCA9PSAmZW5naW5lKQorICAgICAgICAgICAgaWYgKGN1cnJlbnQgPT0gZW5n
aW5lLmdldCgpKQogICAgICAgICAgICAgICAgIGN1cnJlbnQgPSBudWxscHRyOwogICAgICAgICAg
ICAgY29udGludWU7CiAgICAgICAgIH0KLSAgICAgICAgTWVkaWFQbGF5ZXI6OlN1cHBvcnRzVHlw
ZSBlbmdpbmVTdXBwb3J0ID0gZW5naW5lLnN1cHBvcnRzVHlwZUFuZENvZGVjcyhwYXJhbWV0ZXJz
KTsKKyAgICAgICAgTWVkaWFQbGF5ZXI6OlN1cHBvcnRzVHlwZSBlbmdpbmVTdXBwb3J0ID0gZW5n
aW5lLT5zdXBwb3J0c1R5cGVBbmRDb2RlY3MocGFyYW1ldGVycyk7CiAgICAgICAgIGlmIChlbmdp
bmVTdXBwb3J0ID4gc3VwcG9ydGVkKSB7CiAgICAgICAgICAgICBzdXBwb3J0ZWQgPSBlbmdpbmVT
dXBwb3J0OwotICAgICAgICAgICAgZm91bmRFbmdpbmUgPSAmZW5naW5lOworICAgICAgICAgICAg
Zm91bmRFbmdpbmUgPSBlbmdpbmUuZ2V0KCk7CiAgICAgICAgIH0KICAgICB9CiAKICAgICByZXR1
cm4gZm91bmRFbmdpbmU7CiB9CiAKLXN0YXRpYyBjb25zdCBNZWRpYVBsYXllckZhY3RvcnkqIG5l
eHRNZWRpYUVuZ2luZShjb25zdCBNZWRpYVBsYXllckZhY3RvcnkqIGN1cnJlbnQpCitjb25zdCBN
ZWRpYVBsYXllckZhY3RvcnkqIE1lZGlhUGxheWVyOjpuZXh0TWVkaWFFbmdpbmUoY29uc3QgTWVk
aWFQbGF5ZXJGYWN0b3J5KiBjdXJyZW50KQogeworICAgIGlmIChtX2FjdGl2ZUVuZ2luZUlkZW50
aWZpZXIpIHsKKyAgICAgICAgYXV0byogZW5naW5lID0gbWVkaWFFbmdpbmUobV9hY3RpdmVFbmdp
bmVJZGVudGlmaWVyLnZhbHVlKCkpOworICAgICAgICByZXR1cm4gY3VycmVudCAhPSBlbmdpbmUg
PyBlbmdpbmUgOiBudWxscHRyOworICAgIH0KKwogICAgIGF1dG8mIGVuZ2luZXMgPSBpbnN0YWxs
ZWRNZWRpYUVuZ2luZXMoKTsKICAgICBpZiAoZW5naW5lcy5pc0VtcHR5KCkpCiAgICAgICAgIHJl
dHVybiBudWxscHRyOwogCiAgICAgaWYgKCFjdXJyZW50KSAKLSAgICAgICAgcmV0dXJuICZlbmdp
bmVzLmZpcnN0KCk7CisgICAgICAgIHJldHVybiBlbmdpbmVzLmZpcnN0KCkuZ2V0KCk7CisKKyAg
ICBhdXRvIGN1cnJlbnRJbmRleCA9IGVuZ2luZXMuZmluZE1hdGNoaW5nKFtjdXJyZW50XSAoYXV0
byYgZW5naW5lKSB7CisgICAgICAgIHJldHVybiBlbmdpbmUuZ2V0KCkgPT0gY3VycmVudDsKKyAg
ICB9KTsKKyAgICBpZiAoY3VycmVudEluZGV4ID09IG5vdEZvdW5kKSB7CisgICAgICAgIEFTU0VS
VF9OT1RfUkVBQ0hFRCgpOworICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICB9CiAKLSAgICBz
aXplX3QgY3VycmVudEluZGV4ID0gY3VycmVudCAtICZlbmdpbmVzLmZpcnN0KCk7CiAgICAgaWYg
KGN1cnJlbnRJbmRleCArIDEgPj0gZW5naW5lcy5zaXplKCkpCiAgICAgICAgIHJldHVybiBudWxs
cHRyOwogCi0gICAgcmV0dXJuICZlbmdpbmVzW2N1cnJlbnRJbmRleCArIDFdOworICAgIHJldHVy
biBlbmdpbmVzW2N1cnJlbnRJbmRleCArIDFdLmdldCgpOwogfQogCiAvLyBtZWRpYSBwbGF5ZXIK
QEAgLTM1Miw2ICszODksMTMgQEAgUmVmPE1lZGlhUGxheWVyPiBNZWRpYVBsYXllcjo6Y3JlYXRl
KE1lZGlhUGxheWVyQ2xpZW50JiBjbGllbnQpCiAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgTWVk
aWFQbGF5ZXIoY2xpZW50KSk7CiB9CiAKK1JlZjxNZWRpYVBsYXllcj4gTWVkaWFQbGF5ZXI6OmNy
ZWF0ZShNZWRpYVBsYXllckNsaWVudCYgY2xpZW50LCBNZWRpYVBsYXllckVudW1zOjpNZWRpYUVu
Z2luZUlkZW50aWZpZXIgbWVkaWFFbmdpbmVJZGVudGlmaWVyKQoreworICAgIHJldHVybiBhZG9w
dFJlZigqbmV3IE1lZGlhUGxheWVyKGNsaWVudCwgbWVkaWFFbmdpbmVJZGVudGlmaWVyKSk7Cit9
CisKKworCiBNZWRpYVBsYXllcjo6TWVkaWFQbGF5ZXIoTWVkaWFQbGF5ZXJDbGllbnQmIGNsaWVu
dCkKICAgICA6IG1fY2xpZW50KCZjbGllbnQpCiAgICAgLCBtX3JlbG9hZFRpbWVyKCp0aGlzLCAm
TWVkaWFQbGF5ZXI6OnJlbG9hZFRpbWVyRmlyZWQpCkBAIC0zNTksNiArNDAzLDE0IEBAIE1lZGlh
UGxheWVyOjpNZWRpYVBsYXllcihNZWRpYVBsYXllckNsaWVudCYgY2xpZW50KQogewogfQogCitN
ZWRpYVBsYXllcjo6TWVkaWFQbGF5ZXIoTWVkaWFQbGF5ZXJDbGllbnQmIGNsaWVudCwgTWVkaWFQ
bGF5ZXJFbnVtczo6TWVkaWFFbmdpbmVJZGVudGlmaWVyIG1lZGlhRW5naW5lSWRlbnRpZmllcikK
KyAgICA6IG1fY2xpZW50KCZjbGllbnQpCisgICAgLCBtX3JlbG9hZFRpbWVyKCp0aGlzLCAmTWVk
aWFQbGF5ZXI6OnJlbG9hZFRpbWVyRmlyZWQpCisgICAgLCBtX3ByaXZhdGUobWFrZVVuaXF1ZTxO
dWxsTWVkaWFQbGF5ZXJQcml2YXRlPih0aGlzKSkKKyAgICAsIG1fYWN0aXZlRW5naW5lSWRlbnRp
ZmllcihtZWRpYUVuZ2luZUlkZW50aWZpZXIpCit7Cit9CisKIE1lZGlhUGxheWVyOjp+TWVkaWFQ
bGF5ZXIoKQogewogICAgIEFTU0VSVCghbV9pbml0aWFsaXppbmdNZWRpYUVuZ2luZSk7CkBAIC00
NDEsNyArNDkzLDcgQEAgYm9vbCBNZWRpYVBsYXllcjo6bG9hZChNZWRpYVN0cmVhbVByaXZhdGUm
IG1lZGlhU3RyZWFtKQogfQogI2VuZGlmCiAKLWNvbnN0IE1lZGlhUGxheWVyRmFjdG9yeSogTWVk
aWFQbGF5ZXI6Om5leHRCZXN0TWVkaWFFbmdpbmUoY29uc3QgTWVkaWFQbGF5ZXJGYWN0b3J5KiBj
dXJyZW50KSBjb25zdAorY29uc3QgTWVkaWFQbGF5ZXJGYWN0b3J5KiBNZWRpYVBsYXllcjo6bmV4
dEJlc3RNZWRpYUVuZ2luZShjb25zdCBNZWRpYVBsYXllckZhY3RvcnkqIGN1cnJlbnQpCiB7CiAg
ICAgTWVkaWFFbmdpbmVTdXBwb3J0UGFyYW1ldGVycyBwYXJhbWV0ZXJzOwogICAgIHBhcmFtZXRl
cnMudHlwZSA9IG1fY29udGVudFR5cGU7CkBAIC00NTMsNiArNTA1LDE3IEBAIGNvbnN0IE1lZGlh
UGxheWVyRmFjdG9yeSogTWVkaWFQbGF5ZXI6Om5leHRCZXN0TWVkaWFFbmdpbmUoY29uc3QgTWVk
aWFQbGF5ZXJGYWN0CiAgICAgcGFyYW1ldGVycy5pc01lZGlhU3RyZWFtID0gISFtX21lZGlhU3Ry
ZWFtOwogI2VuZGlmCiAKKyAgICBpZiAobV9hY3RpdmVFbmdpbmVJZGVudGlmaWVyKSB7CisgICAg
ICAgIGlmIChjdXJyZW50KQorICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICAgICAg
YXV0byogZW5naW5lID0gbWVkaWFFbmdpbmUobV9hY3RpdmVFbmdpbmVJZGVudGlmaWVyLnZhbHVl
KCkpOworICAgICAgICBpZiAoZW5naW5lICYmIGVuZ2luZS0+c3VwcG9ydHNUeXBlQW5kQ29kZWNz
KHBhcmFtZXRlcnMpICE9IFN1cHBvcnRzVHlwZTo6SXNOb3RTdXBwb3J0ZWQpCisgICAgICAgICAg
ICByZXR1cm4gZW5naW5lOworCisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIH0KKwogICAg
IHJldHVybiBiZXN0TWVkaWFFbmdpbmVGb3JTdXBwb3J0UGFyYW1ldGVycyhwYXJhbWV0ZXJzLCBj
dXJyZW50KTsKIH0KIApAQCAtNDg5LDEzICs1NTIsMTUgQEAgdm9pZCBNZWRpYVBsYXllcjo6bG9h
ZFdpdGhOZXh0TWVkaWFFbmdpbmUoY29uc3QgTWVkaWFQbGF5ZXJGYWN0b3J5KiBjdXJyZW50KQog
ICAgICAgICBtX3ByaXZhdGUgPSBudWxscHRyOwogICAgIH0gZWxzZSBpZiAobV9jdXJyZW50TWVk
aWFFbmdpbmUgIT0gZW5naW5lKSB7CiAgICAgICAgIG1fY3VycmVudE1lZGlhRW5naW5lID0gZW5n
aW5lOwotICAgICAgICBtX3ByaXZhdGUgPSBlbmdpbmUtPmNvbnN0cnVjdG9yKHRoaXMpOwotICAg
ICAgICBjbGllbnQoKS5tZWRpYVBsYXllckVuZ2luZVVwZGF0ZWQoKTsKLSAgICAgICAgbV9wcml2
YXRlLT5zZXRQcml2YXRlQnJvd3NpbmdNb2RlKG1fcHJpdmF0ZUJyb3dzaW5nKTsKLSAgICAgICAg
bV9wcml2YXRlLT5zZXRQcmVsb2FkKG1fcHJlbG9hZCk7Ci0gICAgICAgIG1fcHJpdmF0ZS0+c2V0
UHJlc2VydmVzUGl0Y2gocHJlc2VydmVzUGl0Y2goKSk7Ci0gICAgICAgIGlmIChtX3Nob3VsZFBy
ZXBhcmVUb1JlbmRlcikKLSAgICAgICAgICAgIG1fcHJpdmF0ZS0+cHJlcGFyZUZvclJlbmRlcmlu
ZygpOworICAgICAgICBtX3ByaXZhdGUgPSBlbmdpbmUtPmNyZWF0ZU1lZGlhRW5naW5lUGxheWVy
KHRoaXMpOworICAgICAgICBpZiAobV9wcml2YXRlKSB7CisgICAgICAgICAgICBjbGllbnQoKS5t
ZWRpYVBsYXllckVuZ2luZVVwZGF0ZWQoKTsKKyAgICAgICAgICAgIG1fcHJpdmF0ZS0+c2V0UHJp
dmF0ZUJyb3dzaW5nTW9kZShtX3ByaXZhdGVCcm93c2luZyk7CisgICAgICAgICAgICBtX3ByaXZh
dGUtPnNldFByZWxvYWQobV9wcmVsb2FkKTsKKyAgICAgICAgICAgIG1fcHJpdmF0ZS0+c2V0UHJl
c2VydmVzUGl0Y2gocHJlc2VydmVzUGl0Y2goKSk7CisgICAgICAgICAgICBpZiAobV9zaG91bGRQ
cmVwYXJlVG9SZW5kZXIpCisgICAgICAgICAgICAgICAgbV9wcml2YXRlLT5wcmVwYXJlRm9yUmVu
ZGVyaW5nKCk7CisgICAgICAgIH0KICAgICB9CiAKICAgICBpZiAobV9wcml2YXRlKSB7CkBAIC01
MTIsOCArNTc3LDEyIEBAIHZvaWQgTWVkaWFQbGF5ZXI6OmxvYWRXaXRoTmV4dE1lZGlhRW5naW5l
KGNvbnN0IE1lZGlhUGxheWVyRmFjdG9yeSogY3VycmVudCkKICAgICAgICAgbV9wcml2YXRlLT5s
b2FkKG1fdXJsLnN0cmluZygpKTsKICAgICB9IGVsc2UgewogICAgICAgICBtX3ByaXZhdGUgPSBt
YWtlVW5pcXVlPE51bGxNZWRpYVBsYXllclByaXZhdGU+KHRoaXMpOwotICAgICAgICBjbGllbnQo
KS5tZWRpYVBsYXllckVuZ2luZVVwZGF0ZWQoKTsKLSAgICAgICAgY2xpZW50KCkubWVkaWFQbGF5
ZXJSZXNvdXJjZU5vdFN1cHBvcnRlZCgpOworICAgICAgICBpZiAoIW1fYWN0aXZlRW5naW5lSWRl
bnRpZmllciAmJiBpbnN0YWxsZWRNZWRpYUVuZ2luZXMoKS5zaXplKCkgPiAxICYmIG5leHRCZXN0
TWVkaWFFbmdpbmUobV9jdXJyZW50TWVkaWFFbmdpbmUpKQorICAgICAgICAgICAgbV9yZWxvYWRU
aW1lci5zdGFydE9uZVNob3QoMF9zKTsKKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBjbGll
bnQoKS5tZWRpYVBsYXllckVuZ2luZVVwZGF0ZWQoKTsKKyAgICAgICAgICAgIGNsaWVudCgpLm1l
ZGlhUGxheWVyUmVzb3VyY2VOb3RTdXBwb3J0ZWQoKTsKKyAgICAgICAgfQogICAgIH0KIAogICAg
IG1faW5pdGlhbGl6aW5nTWVkaWFFbmdpbmUgPSBmYWxzZTsKQEAgLTkyOSw3ICs5OTgsNyBAQCB2
b2lkIE1lZGlhUGxheWVyOjpnZXRTdXBwb3J0ZWRUeXBlcyhIYXNoU2V0PFN0cmluZywgQVNDSUlD
YXNlSW5zZW5zaXRpdmVIYXNoPiYgdAogewogICAgIGZvciAoYXV0byYgZW5naW5lIDogaW5zdGFs
bGVkTWVkaWFFbmdpbmVzKCkpIHsKICAgICAgICAgSGFzaFNldDxTdHJpbmcsIEFTQ0lJQ2FzZUlu
c2Vuc2l0aXZlSGFzaD4gZW5naW5lVHlwZXM7Ci0gICAgICAgIGVuZ2luZS5nZXRTdXBwb3J0ZWRU
eXBlcyhlbmdpbmVUeXBlcyk7CisgICAgICAgIGVuZ2luZS0+Z2V0U3VwcG9ydGVkVHlwZXMoZW5n
aW5lVHlwZXMpOwogICAgICAgICB0eXBlcy5hZGQoZW5naW5lVHlwZXMuYmVnaW4oKSwgZW5naW5l
VHlwZXMuZW5kKCkpOwogICAgIH0KIH0gCkBAIC0xMTI1LDM0ICsxMTk0LDI4IEBAIHN0YXRpYyB2
b2lkIGFkZFRvSGFzaChIYXNoU2V0PFQ+JiB0b0hhc2gsIEhhc2hTZXQ8VD4mJiBmcm9tSGFzaCkK
IEhhc2hTZXQ8UmVmUHRyPFNlY3VyaXR5T3JpZ2luPj4gTWVkaWFQbGF5ZXI6Om9yaWdpbnNJbk1l
ZGlhQ2FjaGUoY29uc3QgU3RyaW5nJiBwYXRoKQogewogICAgIEhhc2hTZXQ8UmVmUHRyPFNlY3Vy
aXR5T3JpZ2luPj4gb3JpZ2luczsKLSAgICBmb3IgKGF1dG8mIGVuZ2luZSA6IGluc3RhbGxlZE1l
ZGlhRW5naW5lcygpKSB7Ci0gICAgICAgIGlmICghZW5naW5lLm9yaWdpbnNJbk1lZGlhQ2FjaGUp
Ci0gICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgYWRkVG9IYXNoKG9yaWdpbnMsIGVuZ2lu
ZS5vcmlnaW5zSW5NZWRpYUNhY2hlKHBhdGgpKTsKLSAgICB9CisgICAgZm9yIChhdXRvJiBlbmdp
bmUgOiBpbnN0YWxsZWRNZWRpYUVuZ2luZXMoKSkKKyAgICAgICAgYWRkVG9IYXNoKG9yaWdpbnMs
IGVuZ2luZS0+b3JpZ2luc0luTWVkaWFDYWNoZShwYXRoKSk7CisKICAgICByZXR1cm4gb3JpZ2lu
czsKIH0KIAogdm9pZCBNZWRpYVBsYXllcjo6Y2xlYXJNZWRpYUNhY2hlKGNvbnN0IFN0cmluZyYg
cGF0aCwgV2FsbFRpbWUgbW9kaWZpZWRTaW5jZSkKIHsKLSAgICBmb3IgKGF1dG8mIGVuZ2luZSA6
IGluc3RhbGxlZE1lZGlhRW5naW5lcygpKSB7Ci0gICAgICAgIGlmIChlbmdpbmUuY2xlYXJNZWRp
YUNhY2hlKQotICAgICAgICAgICAgZW5naW5lLmNsZWFyTWVkaWFDYWNoZShwYXRoLCBtb2RpZmll
ZFNpbmNlKTsKLSAgICB9CisgICAgZm9yIChhdXRvJiBlbmdpbmUgOiBpbnN0YWxsZWRNZWRpYUVu
Z2luZXMoKSkKKyAgICAgICAgZW5naW5lLT5jbGVhck1lZGlhQ2FjaGUocGF0aCwgbW9kaWZpZWRT
aW5jZSk7CiB9CiAKIHZvaWQgTWVkaWFQbGF5ZXI6OmNsZWFyTWVkaWFDYWNoZUZvck9yaWdpbnMo
Y29uc3QgU3RyaW5nJiBwYXRoLCBjb25zdCBIYXNoU2V0PFJlZlB0cjxTZWN1cml0eU9yaWdpbj4+
JiBvcmlnaW5zKQogewotICAgIGZvciAoYXV0byYgZW5naW5lIDogaW5zdGFsbGVkTWVkaWFFbmdp
bmVzKCkpIHsKLSAgICAgICAgaWYgKGVuZ2luZS5jbGVhck1lZGlhQ2FjaGVGb3JPcmlnaW5zKQot
ICAgICAgICAgICAgZW5naW5lLmNsZWFyTWVkaWFDYWNoZUZvck9yaWdpbnMocGF0aCwgb3JpZ2lu
cyk7Ci0gICAgfQorICAgIGZvciAoYXV0byYgZW5naW5lIDogaW5zdGFsbGVkTWVkaWFFbmdpbmVz
KCkpCisgICAgICAgIGVuZ2luZS0+Y2xlYXJNZWRpYUNhY2hlRm9yT3JpZ2lucyhwYXRoLCBvcmln
aW5zKTsKIH0KIAogYm9vbCBNZWRpYVBsYXllcjo6c3VwcG9ydHNLZXlTeXN0ZW0oY29uc3QgU3Ry
aW5nJiBrZXlTeXN0ZW0sIGNvbnN0IFN0cmluZyYgbWltZVR5cGUpCiB7CiAgICAgZm9yIChhdXRv
JiBlbmdpbmUgOiBpbnN0YWxsZWRNZWRpYUVuZ2luZXMoKSkgewotICAgICAgICBpZiAoZW5naW5l
LnN1cHBvcnRzS2V5U3lzdGVtICYmIGVuZ2luZS5zdXBwb3J0c0tleVN5c3RlbShrZXlTeXN0ZW0s
IG1pbWVUeXBlKSkKKyAgICAgICAgaWYgKGVuZ2luZS0+c3VwcG9ydHNLZXlTeXN0ZW0oa2V5U3lz
dGVtLCBtaW1lVHlwZSkpCiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAgICAgcmV0
dXJuIGZhbHNlOwpAQCAtMTE3Miw3ICsxMjM1LDcgQEAgdm9pZCBNZWRpYVBsYXllcjo6bmV0d29y
a1N0YXRlQ2hhbmdlZCgpCiAgICAgLy8gbGV0IHRoZSBuZXh0IGVuZ2luZSB0cnkuCiAgICAgaWYg
KG1fcHJpdmF0ZS0+bmV0d29ya1N0YXRlKCkgPj0gTWVkaWFQbGF5ZXI6Ok5ldHdvcmtTdGF0ZTo6
Rm9ybWF0RXJyb3IgJiYgbV9wcml2YXRlLT5yZWFkeVN0YXRlKCkgPCBNZWRpYVBsYXllcjo6UmVh
ZHlTdGF0ZTo6SGF2ZU1ldGFkYXRhKSB7CiAgICAgICAgIGNsaWVudCgpLm1lZGlhUGxheWVyRW5n
aW5lRmFpbGVkVG9Mb2FkKCk7Ci0gICAgICAgIGlmIChpbnN0YWxsZWRNZWRpYUVuZ2luZXMoKS5z
aXplKCkgPiAxICYmIChtX2NvbnRlbnRUeXBlLmlzRW1wdHkoKSB8fCBuZXh0QmVzdE1lZGlhRW5n
aW5lKG1fY3VycmVudE1lZGlhRW5naW5lKSkpIHsKKyAgICAgICAgaWYgKCFtX2FjdGl2ZUVuZ2lu
ZUlkZW50aWZpZXIgJiYgaW5zdGFsbGVkTWVkaWFFbmdpbmVzKCkuc2l6ZSgpID4gMSAmJiAobV9j
b250ZW50VHlwZS5pc0VtcHR5KCkgfHwgbmV4dEJlc3RNZWRpYUVuZ2luZShtX2N1cnJlbnRNZWRp
YUVuZ2luZSkpKSB7CiAgICAgICAgICAgICBtX3JlbG9hZFRpbWVyLnN0YXJ0T25lU2hvdCgwX3Mp
OwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuaAppbmRleCA4YTdiMWU5YmZkNzg3ZjUxMzA1MmI1
Njg4MzQ1OTQ0MGRmOWQxYjE3Li5lMzIxMzlhMTVkODBkZjhhMTJiZDkxOTdmYmY1NTRlYmZiYjg5
ZjAxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBs
YXllci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVy
LmgKQEAgLTY3LDYgKzY3LDcgQEAgY2xhc3MgSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZTsKIGNsYXNz
IExlZ2FjeUNETVNlc3Npb25DbGllbnQ7CiBjbGFzcyBNZWRpYVBsYXliYWNrVGFyZ2V0OwogY2xh
c3MgTWVkaWFQbGF5ZXI7CitjbGFzcyBNZWRpYVBsYXllckZhY3Rvcnk7CiBjbGFzcyBNZWRpYVBs
YXllclByaXZhdGVJbnRlcmZhY2U7CiBjbGFzcyBNZWRpYVBsYXllclJlcXVlc3RJbnN0YWxsTWlz
c2luZ1BsdWdpbnNDYWxsYmFjazsKIGNsYXNzIE1lZGlhU291cmNlUHJpdmF0ZUNsaWVudDsKQEAg
LTc2LDcgKzc3LDYgQEAgY2xhc3MgVGV4dFRyYWNrUmVwcmVzZW50YXRpb247CiAKIHN0cnVjdCBD
b29raWU7CiBzdHJ1Y3QgR3JhcGhpY3NEZXZpY2VBZGFwdGVyOwotc3RydWN0IE1lZGlhUGxheWVy
RmFjdG9yeTsKIAogc3RydWN0IE1lZGlhRW5naW5lU3VwcG9ydFBhcmFtZXRlcnMgewogICAgIENv
bnRlbnRUeXBlIHR5cGU7CkBAIC04NCw2ICs4NCw0OCBAQCBzdHJ1Y3QgTWVkaWFFbmdpbmVTdXBw
b3J0UGFyYW1ldGVycyB7CiAgICAgYm9vbCBpc01lZGlhU291cmNlIHsgZmFsc2UgfTsKICAgICBi
b29sIGlzTWVkaWFTdHJlYW0geyBmYWxzZSB9OwogICAgIFZlY3RvcjxDb250ZW50VHlwZT4gY29u
dGVudFR5cGVzUmVxdWlyaW5nSGFyZHdhcmVTdXBwb3J0OworCisjaWYgRU5BQkxFKEdQVV9QUk9D
RVNTKQorICAgIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+CisgICAgdm9pZCBlbmNvZGUoRW5jb2Rl
ciYgZW5jb2RlcikgY29uc3QKKyAgICB7CisgICAgICAgIGVuY29kZXIgPDwgdHlwZTsKKyAgICAg
ICAgZW5jb2RlciA8PCB1cmw7CisgICAgICAgIGVuY29kZXIgPDwgaXNNZWRpYVNvdXJjZTsKKyAg
ICAgICAgZW5jb2RlciA8PCBjb250ZW50VHlwZXNSZXF1aXJpbmdIYXJkd2FyZVN1cHBvcnQ7Cisg
ICAgfQorCisgICAgdGVtcGxhdGUgPGNsYXNzIERlY29kZXI+CisgICAgc3RhdGljIE9wdGlvbmFs
PE1lZGlhRW5naW5lU3VwcG9ydFBhcmFtZXRlcnM+IGRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQor
ICAgIHsKKyAgICAgICAgT3B0aW9uYWw8Q29udGVudFR5cGU+IHR5cGU7CisgICAgICAgIGRlY29k
ZXIgPj4gdHlwZTsKKyAgICAgICAgaWYgKCF0eXBlKQorICAgICAgICAgICAgcmV0dXJuIFdURjo6
bnVsbG9wdDsKKworICAgICAgICBPcHRpb25hbDxVUkw+IHVybDsKKyAgICAgICAgZGVjb2RlciA+
PiB1cmw7CisgICAgICAgIGlmICghdXJsKQorICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9w
dDsKKworICAgICAgICBPcHRpb25hbDxib29sPiBpc01lZGlhU291cmNlOworICAgICAgICBkZWNv
ZGVyID4+IGlzTWVkaWFTb3VyY2U7CisgICAgICAgIGlmICghaXNNZWRpYVNvdXJjZSkKKyAgICAg
ICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisKKyAgICAgICAgT3B0aW9uYWw8Ym9vbD4gaXNN
ZWRpYVN0cmVhbTsKKyAgICAgICAgZGVjb2RlciA+PiBpc01lZGlhU3RyZWFtOworICAgICAgICBp
ZiAoIWlzTWVkaWFTdHJlYW0pCisgICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworCisg
ICAgICAgIE9wdGlvbmFsPFZlY3RvcjxDb250ZW50VHlwZT4+IHR5cGVzUmVxdWlyaW5nSGFyZHdh
cmU7CisgICAgICAgIGRlY29kZXIgPj4gdHlwZXNSZXF1aXJpbmdIYXJkd2FyZTsKKyAgICAgICAg
aWYgKCF0eXBlc1JlcXVpcmluZ0hhcmR3YXJlKQorICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVs
bG9wdDsKKworICAgICAgICByZXR1cm4ge3sgV1RGTW92ZSgqdHlwZSksIFdURk1vdmUoKnVybCks
IFdURk1vdmUoKmlzTWVkaWFTb3VyY2UpLCBXVEZNb3ZlKCppc01lZGlhU3RyZWFtKSwgV1RGTW92
ZSgqdHlwZXNSZXF1aXJpbmdIYXJkd2FyZSkgfX07CisgICAgfQorI2VuZGlmCiB9OwogCiBzdHJ1
Y3QgVmlkZW9QbGF5YmFja1F1YWxpdHlNZXRyaWNzIHsKQEAgLTIzNSw3ICsyNzcsNyBAQCBwdWJs
aWM6CiAjZW5kaWYKIAogICAgIHZpcnR1YWwgYm9vbCBtZWRpYVBsYXllclNob3VsZERpc2FibGVT
bGVlcCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgdmlydHVhbCBjb25zdCBWZWN0b3I8
Q29udGVudFR5cGU+JiBtZWRpYUNvbnRlbnRUeXBlc1JlcXVpcmluZ0hhcmR3YXJlU3VwcG9ydCgp
IGNvbnN0OworICAgIHZpcnR1YWwgY29uc3QgVmVjdG9yPENvbnRlbnRUeXBlPiYgbWVkaWFDb250
ZW50VHlwZXNSZXF1aXJpbmdIYXJkd2FyZVN1cHBvcnQoKSBjb25zdCA9IDA7CiAgICAgdmlydHVh
bCBib29sIG1lZGlhUGxheWVyU2hvdWxkQ2hlY2tIYXJkd2FyZVN1cHBvcnQoKSBjb25zdCB7IHJl
dHVybiBmYWxzZTsgfQogCiAjaWYgIVJFTEVBU0VfTE9HX0RJU0FCTEVECkBAIC0yNDQsMTUgKzI4
NiwxOCBAQCBwdWJsaWM6CiAjZW5kaWYKIH07CiAKLWNsYXNzIE1lZGlhUGxheWVyIDogcHVibGlj
IE1lZGlhUGxheWVyRW51bXMsIHB1YmxpYyBSZWZDb3VudGVkPE1lZGlhUGxheWVyPiB7CitjbGFz
cyBXRUJDT1JFX0VYUE9SVCBNZWRpYVBsYXllciA6IHB1YmxpYyBNZWRpYVBsYXllckVudW1zLCBw
dWJsaWMgUmVmQ291bnRlZDxNZWRpYVBsYXllcj4gewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxF
KE1lZGlhUGxheWVyKTsgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgc3Rh
dGljIFJlZjxNZWRpYVBsYXllcj4gY3JlYXRlKE1lZGlhUGxheWVyQ2xpZW50Jik7CisgICAgc3Rh
dGljIFJlZjxNZWRpYVBsYXllcj4gY3JlYXRlKE1lZGlhUGxheWVyQ2xpZW50JiwgTWVkaWFQbGF5
ZXJFbnVtczo6TWVkaWFFbmdpbmVJZGVudGlmaWVyKTsKICAgICB2aXJ0dWFsIH5NZWRpYVBsYXll
cigpOwogCiAgICAgdm9pZCBpbnZhbGlkYXRlKCk7CiAKICAgICAvLyBNZWRpYSBlbmdpbmUgc3Vw
cG9ydC4KKyAgICB1c2luZyBNZWRpYVBsYXllckVudW1zOjpTdXBwb3J0c1R5cGU7CisgICAgc3Rh
dGljIGNvbnN0IE1lZGlhUGxheWVyRmFjdG9yeSogbWVkaWFFbmdpbmUoTWVkaWFQbGF5ZXJFbnVt
czo6TWVkaWFFbmdpbmVJZGVudGlmaWVyKTsKICAgICBzdGF0aWMgU3VwcG9ydHNUeXBlIHN1cHBv
cnRzVHlwZShjb25zdCBNZWRpYUVuZ2luZVN1cHBvcnRQYXJhbWV0ZXJzJik7CiAgICAgc3RhdGlj
IHZvaWQgZ2V0U3VwcG9ydGVkVHlwZXMoSGFzaFNldDxTdHJpbmcsIEFTQ0lJQ2FzZUluc2Vuc2l0
aXZlSGFzaD4mKTsKICAgICBzdGF0aWMgYm9vbCBpc0F2YWlsYWJsZSgpOwpAQCAtNTMxLDExICs1
NzYsMTEgQEAgcHVibGljOgogICAgIHN0YXRpYyB2b2lkIHJlc2V0TWVkaWFFbmdpbmVzKCk7CiAK
ICNpZiBVU0UoR1NUUkVBTUVSKQotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2ltdWxhdGVBdWRp
b0ludGVycnVwdGlvbigpOworICAgIHZvaWQgc2ltdWxhdGVBdWRpb0ludGVycnVwdGlvbigpOwog
I2VuZGlmCiAKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGJlZ2luU2ltdWxhdGVkSERDUEVycm9y
KCk7Ci0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBlbmRTaW11bGF0ZWRIRENQRXJyb3IoKTsKKyAg
ICB2b2lkIGJlZ2luU2ltdWxhdGVkSERDUEVycm9yKCk7CisgICAgdm9pZCBlbmRTaW11bGF0ZWRI
RENQRXJyb3IoKTsKIAogICAgIFN0cmluZyBsYW5ndWFnZU9mUHJpbWFyeUF1ZGlvVHJhY2soKSBj
b25zdDsKIApAQCAtNTcwLDcgKzYxNSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGFwcGxpY2F0aW9u
RGlkQmVjb21lQWN0aXZlKCk7CiAKICNpZiBVU0UoQVZGT1VOREFUSU9OKQotICAgIFdFQkNPUkVf
RVhQT1JUIEFWUGxheWVyICpvYmpDQVZGb3VuZGF0aW9uQVZQbGF5ZXIoKSBjb25zdDsKKyAgICBB
VlBsYXllciAqb2JqQ0FWRm91bmRhdGlvbkFWUGxheWVyKCkgY29uc3Q7CiAjZW5kaWYKIAogICAg
IGJvb2wgcGVyZm9ybVRhc2tBdE1lZGlhVGltZShXVEY6OkZ1bmN0aW9uPHZvaWQoKT4mJiwgTWVk
aWFUaW1lKTsKQEAgLTU5NSwxMSArNjQwLDEzIEBAIHB1YmxpYzoKIAogcHJpdmF0ZToKICAgICBN
ZWRpYVBsYXllcihNZWRpYVBsYXllckNsaWVudCYpOworICAgIE1lZGlhUGxheWVyKE1lZGlhUGxh
eWVyQ2xpZW50JiwgTWVkaWFQbGF5ZXJFbnVtczo6TWVkaWFFbmdpbmVJZGVudGlmaWVyKTsKIAog
ICAgIE1lZGlhUGxheWVyQ2xpZW50JiBjbGllbnQoKSBjb25zdCB7IHJldHVybiAqbV9jbGllbnQ7
IH0KIAotICAgIGNvbnN0IE1lZGlhUGxheWVyRmFjdG9yeSogbmV4dEJlc3RNZWRpYUVuZ2luZShj
b25zdCBNZWRpYVBsYXllckZhY3RvcnkqKSBjb25zdDsKKyAgICBjb25zdCBNZWRpYVBsYXllckZh
Y3RvcnkqIG5leHRCZXN0TWVkaWFFbmdpbmUoY29uc3QgTWVkaWFQbGF5ZXJGYWN0b3J5Kik7CiAg
ICAgdm9pZCBsb2FkV2l0aE5leHRNZWRpYUVuZ2luZShjb25zdCBNZWRpYVBsYXllckZhY3Rvcnkq
KTsKKyAgICBjb25zdCBNZWRpYVBsYXllckZhY3RvcnkqIG5leHRNZWRpYUVuZ2luZShjb25zdCBN
ZWRpYVBsYXllckZhY3RvcnkqKTsKICAgICB2b2lkIHJlbG9hZFRpbWVyRmlyZWQoKTsKIAogICAg
IE1lZGlhUGxheWVyQ2xpZW50KiBtX2NsaWVudDsKQEAgLTYwOSw2ICs2NTYsNyBAQCBwcml2YXRl
OgogICAgIFVSTCBtX3VybDsKICAgICBDb250ZW50VHlwZSBtX2NvbnRlbnRUeXBlOwogICAgIFN0
cmluZyBtX2tleVN5c3RlbTsKKyAgICBPcHRpb25hbDxNZWRpYVBsYXllckVudW1zOjpNZWRpYUVu
Z2luZUlkZW50aWZpZXI+IG1fYWN0aXZlRW5naW5lSWRlbnRpZmllcjsKICAgICBJbnRTaXplIG1f
c2l6ZTsKICAgICBQcmVsb2FkIG1fcHJlbG9hZCB7IFByZWxvYWQ6OkF1dG8gfTsKICAgICBkb3Vi
bGUgbV92b2x1bWUgeyAxIH07CkBAIC02MjgsMTYgKzY3NiwyNCBAQCBwcml2YXRlOgogI2VuZGlm
CiB9OwogCi11c2luZyBDcmVhdGVNZWRpYUVuZ2luZVBsYXllciA9IFdURjo6RnVuY3Rpb248c3Rk
Ojp1bmlxdWVfcHRyPE1lZGlhUGxheWVyUHJpdmF0ZUludGVyZmFjZT4gKE1lZGlhUGxheWVyKik+
OwotdHlwZWRlZiB2b2lkICgqTWVkaWFFbmdpbmVTdXBwb3J0ZWRUeXBlcykoSGFzaFNldDxTdHJp
bmcsIEFTQ0lJQ2FzZUluc2Vuc2l0aXZlSGFzaD4mIHR5cGVzKTsKLXR5cGVkZWYgTWVkaWFQbGF5
ZXI6OlN1cHBvcnRzVHlwZSAoKk1lZGlhRW5naW5lU3VwcG9ydHNUeXBlKShjb25zdCBNZWRpYUVu
Z2luZVN1cHBvcnRQYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzKTsKLXR5cGVkZWYgSGFzaFNldDxSZWZQ
dHI8U2VjdXJpdHlPcmlnaW4+PiAoKk1lZGlhRW5naW5lT3JpZ2luc0luTWVkaWFDYWNoZSkoY29u
c3QgU3RyaW5nJiBwYXRoKTsKLXR5cGVkZWYgdm9pZCAoKk1lZGlhRW5naW5lQ2xlYXJNZWRpYUNh
Y2hlKShjb25zdCBTdHJpbmcmIHBhdGgsIFdhbGxUaW1lIG1vZGlmaWVkU2luY2UpOwotdHlwZWRl
ZiB2b2lkICgqTWVkaWFFbmdpbmVDbGVhck1lZGlhQ2FjaGVGb3JPcmlnaW5zKShjb25zdCBTdHJp
bmcmIHBhdGgsIGNvbnN0IEhhc2hTZXQ8UmVmUHRyPFNlY3VyaXR5T3JpZ2luPj4mKTsKLXR5cGVk
ZWYgYm9vbCAoKk1lZGlhRW5naW5lU3VwcG9ydHNLZXlTeXN0ZW0pKGNvbnN0IFN0cmluZyYga2V5
U3lzdGVtLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlKTsKK2NsYXNzIE1lZGlhUGxheWVyRmFjdG9y
eSB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CitwdWJsaWM6CisgICAgTWVkaWFQbGF5
ZXJGYWN0b3J5KCkgPSBkZWZhdWx0OworICAgIHZpcnR1YWwgfk1lZGlhUGxheWVyRmFjdG9yeSgp
IHsgfQorCisgICAgdmlydHVhbCBNZWRpYVBsYXllckVudW1zOjpNZWRpYUVuZ2luZUlkZW50aWZp
ZXIgaWRlbnRpZmllcigpIGNvbnN0ICA9IDA7CisgICAgdmlydHVhbCBzdGQ6OnVuaXF1ZV9wdHI8
TWVkaWFQbGF5ZXJQcml2YXRlSW50ZXJmYWNlPiBjcmVhdGVNZWRpYUVuZ2luZVBsYXllcihNZWRp
YVBsYXllciopIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZ2V0U3VwcG9ydGVkVHlwZXMo
SGFzaFNldDxTdHJpbmcsIEFTQ0lJQ2FzZUluc2Vuc2l0aXZlSGFzaD4mKSBjb25zdCA9IDA7Cisg
ICAgdmlydHVhbCBNZWRpYVBsYXllcjo6U3VwcG9ydHNUeXBlIHN1cHBvcnRzVHlwZUFuZENvZGVj
cyhjb25zdCBNZWRpYUVuZ2luZVN1cHBvcnRQYXJhbWV0ZXJzJikgY29uc3QgPSAwOworCisgICAg
dmlydHVhbCBIYXNoU2V0PFJlZlB0cjxTZWN1cml0eU9yaWdpbj4+IG9yaWdpbnNJbk1lZGlhQ2Fj
aGUoY29uc3QgU3RyaW5nJikgY29uc3QgeyByZXR1cm4geyB9OyB9CisgICAgdmlydHVhbCB2b2lk
IGNsZWFyTWVkaWFDYWNoZShjb25zdCBTdHJpbmcmLCBXYWxsVGltZSkgY29uc3QgeyB9CisgICAg
dmlydHVhbCB2b2lkIGNsZWFyTWVkaWFDYWNoZUZvck9yaWdpbnMoY29uc3QgU3RyaW5nJiwgY29u
c3QgSGFzaFNldDxSZWZQdHI8U2VjdXJpdHlPcmlnaW4+PiYpIGNvbnN0IHsgfQorICAgIHZpcnR1
YWwgYm9vbCBzdXBwb3J0c0tleVN5c3RlbShjb25zdCBTdHJpbmcmIC8qIGtleVN5c3RlbSAqLywg
Y29uc3QgU3RyaW5nJiAvKiBtaW1lVHlwZSAqLykgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KK307
CiAKLXR5cGVkZWYgdm9pZCAoKk1lZGlhRW5naW5lUmVnaXN0cmFyKShDcmVhdGVNZWRpYUVuZ2lu
ZVBsYXllciYmLCBNZWRpYUVuZ2luZVN1cHBvcnRlZFR5cGVzLCBNZWRpYUVuZ2luZVN1cHBvcnRz
VHlwZSwKLSAgICBNZWRpYUVuZ2luZU9yaWdpbnNJbk1lZGlhQ2FjaGUsIE1lZGlhRW5naW5lQ2xl
YXJNZWRpYUNhY2hlLCBNZWRpYUVuZ2luZUNsZWFyTWVkaWFDYWNoZUZvck9yaWdpbnMsIE1lZGlh
RW5naW5lU3VwcG9ydHNLZXlTeXN0ZW0pOwordHlwZWRlZiB2b2lkICgqTWVkaWFFbmdpbmVSZWdp
c3RyYXIpKHN0ZDo6dW5pcXVlX3B0cjxNZWRpYVBsYXllckZhY3Rvcnk+KTsKIHR5cGVkZWYgdm9p
ZCAoKk1lZGlhRW5naW5lUmVnaXN0ZXIpKE1lZGlhRW5naW5lUmVnaXN0cmFyKTsKIAogY2xhc3Mg
TWVkaWFQbGF5ZXJGYWN0b3J5U3VwcG9ydCB7CkBAIC02NDUsNiArNzAxLDEzIEBAIHB1YmxpYzoK
ICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgdm9pZCBjYWxsUmVnaXN0ZXJNZWRpYUVuZ2luZShN
ZWRpYUVuZ2luZVJlZ2lzdGVyKTsKIH07CiAKK2NsYXNzIFJlbW90ZU1lZGlhUGxheWVyU3VwcG9y
dCB7CitwdWJsaWM6CisgICAgdXNpbmcgUmVnaXN0ZXJSZW1vdGVQbGF5ZXJDYWxsYmFjayA9IHN0
ZDo6ZnVuY3Rpb248dm9pZChNZWRpYUVuZ2luZVJlZ2lzdHJhciwgTWVkaWFQbGF5ZXJFbnVtczo6
TWVkaWFFbmdpbmVJZGVudGlmaWVyKT47CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIHZvaWQg
c2V0UmVnaXN0ZXJSZW1vdGVQbGF5ZXJDYWxsYmFjayhSZWdpc3RlclJlbW90ZVBsYXllckNhbGxi
YWNrJiYpOworfTsKKworCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBFTkFC
TEUoVklERU8pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9N
ZWRpYVBsYXllckVudW1zLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRp
YVBsYXllckVudW1zLmgKaW5kZXggNGIxMGYwNDgzMDg3ZTJlNjZlM2FhZDgxZWU0NDJlNmQyNDhk
ZTlkNC4uMTc4MzgzMjhiZWFiZjNhZGE5MGYxNjkwNTYzYWVlMjQ4NmEwNjRlNiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXJFbnVtcy5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyRW51bXMuaApA
QCAtODcsNiArODcsMTggQEAgcHVibGljOgogICAgICAgICBNYWtlUmVzb3VyY2VzUHVyZ2VhYmxl
LAogICAgICAgICBQdXJnZVJlc291cmNlcywKICAgICB9OworCisgICAgZW51bSBjbGFzcyBNZWRp
YUVuZ2luZUlkZW50aWZpZXIgOiB1aW50OF90IHsKKyAgICAgICAgQVZGb3VuZGF0aW9uLAorICAg
ICAgICBBVkZvdW5kYXRpb25NU0UsCisgICAgICAgIEFWRm91bmRhdGlvbk1lZGlhU3RyZWFtLAor
ICAgICAgICBBVkZvdW5kYXRpb25DRiwKKyAgICAgICAgR1N0cmVhbWVyLAorICAgICAgICBHU3Ry
ZWFtZXJNU0UsCisgICAgICAgIEhvbGVQdW5jaCwKKyAgICAgICAgTWVkaWFGb3VuZGF0aW9uLAor
ICAgICAgICBNb2NrTVNFLAorICAgIH07CiB9OwogCiBXVEY6OlN0cmluZyBjb252ZXJ0RW51bWVy
YXRpb25Ub1N0cmluZyhNZWRpYVBsYXllckVudW1zOjpSZWFkeVN0YXRlKTsKQEAgLTE0MCw3ICsx
NTIsNiBAQCB0ZW1wbGF0ZTw+IHN0cnVjdCBFbnVtVHJhaXRzPFdlYkNvcmU6Ok1lZGlhUGxheWVy
RW51bXM6Ok5ldHdvcmtTdGF0ZT4gewogICAgID47CiB9OwogCi0KIHRlbXBsYXRlPD4gc3RydWN0
IEVudW1UcmFpdHM8V2ViQ29yZTo6TWVkaWFQbGF5ZXJFbnVtczo6UmVhZHlTdGF0ZT4gewogICAg
IHVzaW5nIHZhbHVlcyA9IEVudW1WYWx1ZXM8CiAgICAgICAgIFdlYkNvcmU6Ok1lZGlhUGxheWVy
RW51bXM6OlJlYWR5U3RhdGUsCkBAIC0xOTYsNiArMjA3LDIwIEBAIHRlbXBsYXRlPD4gc3RydWN0
IEVudW1UcmFpdHM8V2ViQ29yZTo6TWVkaWFQbGF5ZXJFbnVtczo6QnVmZmVyaW5nUG9saWN5PiB7
CiAgICAgICAgIFdlYkNvcmU6Ok1lZGlhUGxheWVyRW51bXM6OkJ1ZmZlcmluZ1BvbGljeTo6TGlt
aXRSZWFkQWhlYWQsCiAgICAgICAgIFdlYkNvcmU6Ok1lZGlhUGxheWVyRW51bXM6OkJ1ZmZlcmlu
Z1BvbGljeTo6TWFrZVJlc291cmNlc1B1cmdlYWJsZSwKICAgICAgICAgV2ViQ29yZTo6TWVkaWFQ
bGF5ZXJFbnVtczo6QnVmZmVyaW5nUG9saWN5OjpQdXJnZVJlc291cmNlcworICAgICAgICA+Owor
ICAgIH07CisKK3RlbXBsYXRlPD4gc3RydWN0IEVudW1UcmFpdHM8V2ViQ29yZTo6TWVkaWFQbGF5
ZXJFbnVtczo6TWVkaWFFbmdpbmVJZGVudGlmaWVyPiB7CisgICAgdXNpbmcgdmFsdWVzID0gRW51
bVZhbHVlczwKKyAgICAgICAgV2ViQ29yZTo6TWVkaWFQbGF5ZXJFbnVtczo6TWVkaWFFbmdpbmVJ
ZGVudGlmaWVyLAorICAgICAgICBXZWJDb3JlOjpNZWRpYVBsYXllckVudW1zOjpNZWRpYUVuZ2lu
ZUlkZW50aWZpZXI6OkFWRm91bmRhdGlvbiwKKyAgICAgICAgV2ViQ29yZTo6TWVkaWFQbGF5ZXJF
bnVtczo6TWVkaWFFbmdpbmVJZGVudGlmaWVyOjpBVkZvdW5kYXRpb25NU0UsCisgICAgICAgIFdl
YkNvcmU6Ok1lZGlhUGxheWVyRW51bXM6Ok1lZGlhRW5naW5lSWRlbnRpZmllcjo6QVZGb3VuZGF0
aW9uTWVkaWFTdHJlYW0sCisgICAgICAgIFdlYkNvcmU6Ok1lZGlhUGxheWVyRW51bXM6Ok1lZGlh
RW5naW5lSWRlbnRpZmllcjo6R1N0cmVhbWVyLAorICAgICAgICBXZWJDb3JlOjpNZWRpYVBsYXll
ckVudW1zOjpNZWRpYUVuZ2luZUlkZW50aWZpZXI6OkdTdHJlYW1lck1TRSwKKyAgICAgICAgV2Vi
Q29yZTo6TWVkaWFQbGF5ZXJFbnVtczo6TWVkaWFFbmdpbmVJZGVudGlmaWVyOjpIb2xlUHVuY2gs
CisgICAgICAgIFdlYkNvcmU6Ok1lZGlhUGxheWVyRW51bXM6Ok1lZGlhRW5naW5lSWRlbnRpZmll
cjo6TWVkaWFGb3VuZGF0aW9uLAorICAgICAgICBXZWJDb3JlOjpNZWRpYVBsYXllckVudW1zOjpN
ZWRpYUVuZ2luZUlkZW50aWZpZXI6Ok1vY2tNU0UKICAgICA+OwogfTsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGxhdGZvcm1UaW1lUmFuZ2VzLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9QbGF0Zm9ybVRpbWVSYW5nZXMuaAppbmRl
eCAxODg4Njk1Yzc2ZTkyNmZiM2VkNGIzYTUxMGM5YmIwMzNiNDM3MzMwLi5kYzU2ZGI2YzdlOGMz
NDY0Yzk1MzE0YTk4YWY0YWMzNTllMzI3M2QwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9QbGF0Zm9ybVRpbWVSYW5nZXMuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9QbGF0Zm9ybVRpbWVSYW5nZXMuaApAQCAtMzYsMTUgKzM2LDE1
IEBAIGNsYXNzIFByaW50U3RyZWFtOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIFBs
YXRmb3JtVGltZVJhbmdlcyB7CitjbGFzcyBXRUJDT1JFX0VYUE9SVCBQbGF0Zm9ybVRpbWVSYW5n
ZXMgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIGV4cGxpY2l0
IFBsYXRmb3JtVGltZVJhbmdlcygpIHsgfQogICAgIFBsYXRmb3JtVGltZVJhbmdlcyhjb25zdCBN
ZWRpYVRpbWUmIHN0YXJ0LCBjb25zdCBNZWRpYVRpbWUmIGVuZCk7CiAKLSAgICBXRUJDT1JFX0VY
UE9SVCBNZWRpYVRpbWUgc3RhcnQodW5zaWduZWQgaW5kZXgpIGNvbnN0OworICAgIE1lZGlhVGlt
ZSBzdGFydCh1bnNpZ25lZCBpbmRleCkgY29uc3Q7CiAgICAgTWVkaWFUaW1lIHN0YXJ0KHVuc2ln
bmVkIGluZGV4LCBib29sJiB2YWxpZCkgY29uc3Q7Ci0gICAgV0VCQ09SRV9FWFBPUlQgTWVkaWFU
aW1lIGVuZCh1bnNpZ25lZCBpbmRleCkgY29uc3Q7CisgICAgTWVkaWFUaW1lIGVuZCh1bnNpZ25l
ZCBpbmRleCkgY29uc3Q7CiAgICAgTWVkaWFUaW1lIGVuZCh1bnNpZ25lZCBpbmRleCwgYm9vbCYg
dmFsaWQpIGNvbnN0OwogICAgIE1lZGlhVGltZSBkdXJhdGlvbih1bnNpZ25lZCBpbmRleCkgY29u
c3Q7CiAgICAgTWVkaWFUaW1lIG1heGltdW1CdWZmZXJlZFRpbWUoKSBjb25zdDsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9jZi9NZWRp
YVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25DRi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9hdmZvdW5kYXRpb24vY2YvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9u
Q0YuY3BwCmluZGV4IDg1NjJlODQ1ZDFmY2EwYzM5ZTZjY2ZlMWE3MTNjNWRhYjU4MTU3MjkuLmRh
MmJlNDk4ZmJjMWE4ODE0M2FkNGFhNmFjZjk3NTk0MTQ1MTI5YWIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9jZi9NZWRpYVBsYXllclBy
aXZhdGVBVkZvdW5kYXRpb25DRi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvYXZmb3VuZGF0aW9uL2NmL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbkNGLmNw
cApAQCAtMzQyLDExICszNDIsMzcgQEAgc3RhdGljIGRpc3BhdGNoX3F1ZXVlX3QgZ2xvYmFsTG9h
ZGVyRGVsZWdhdGVRdWV1ZSgpCiB9CiAjZW5kaWYKIAorY2xhc3MgTWVkaWFQbGF5ZXJGYWN0b3J5
QVZGb3VuZGF0aW9uQ0YgOiBwdWJsaWMgTWVkaWFQbGF5ZXJGYWN0b3J5IHsKK3B1YmxpYzoKKyAg
ICBNZWRpYVBsYXllckVudW1zOjpNZWRpYUVuZ2luZUlkZW50aWZpZXIgaWRlbnRpZmllcigpIGNv
bnN0IGZpbmFsIHsgcmV0dXJuIE1lZGlhUGxheWVyRW51bXM6Ok1lZGlhRW5naW5lSWRlbnRpZmll
cjo6QVZGb3VuZGF0aW9uQ0Y7IH07CisKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8TWVkaWFQbGF5ZXJQ
cml2YXRlSW50ZXJmYWNlPiBjcmVhdGVNZWRpYUVuZ2luZVBsYXllcihNZWRpYVBsYXllciogcGxh
eWVyKSBjb25zdCBmaW5hbAorICAgIHsKKyAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8TWVkaWFQ
bGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uQ0Y+KHBsYXllcik7CisgICAgfQorCisgICAgdm9pZCBn
ZXRTdXBwb3J0ZWRUeXBlcyhIYXNoU2V0PFN0cmluZywgQVNDSUlDYXNlSW5zZW5zaXRpdmVIYXNo
PiYgdHlwZXMpIGNvbnN0IGZpbmFsCisgICAgeworICAgICAgICByZXR1cm4gTWVkaWFQbGF5ZXJQ
cml2YXRlQVZGb3VuZGF0aW9uQ0Y6OmdldFN1cHBvcnRlZFR5cGVzKHR5cGVzKTsKKyAgICB9CisK
KyAgICBNZWRpYVBsYXllcjo6U3VwcG9ydHNUeXBlIHN1cHBvcnRzVHlwZUFuZENvZGVjcyhjb25z
dCBNZWRpYUVuZ2luZVN1cHBvcnRQYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzKSBjb25zdCBmaW5hbAor
ICAgIHsKKyAgICAgICAgcmV0dXJuIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbkNGOjpz
dXBwb3J0c1R5cGUocGFyYW1ldGVycyk7CisgICAgfQorCisgICAgYm9vbCBzdXBwb3J0c0tleVN5
c3RlbShjb25zdCBTdHJpbmcmIGtleVN5c3RlbSwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSkgY29u
c3QgZmluYWwKKyAgICB7CisgICAgICAgIHJldHVybiBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5k
YXRpb25DRjo6c3VwcG9ydHNLZXlTeXN0ZW0oa2V5U3lzdGVtLCBtaW1lVHlwZSk7CisgICAgfQor
fTsKKwogdm9pZCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25DRjo6cmVnaXN0ZXJNZWRp
YUVuZ2luZShNZWRpYUVuZ2luZVJlZ2lzdHJhciByZWdpc3RyYXIpCiB7Ci0gICAgaWYgKGlzQXZh
aWxhYmxlKCkpCi0gICAgICAgIHJlZ2lzdHJhcihbXShNZWRpYVBsYXllciogcGxheWVyKSB7IHJl
dHVybiBtYWtlVW5pcXVlPE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbkNGPihwbGF5ZXIp
OyB9LAotICAgICAgICAgICAgZ2V0U3VwcG9ydGVkVHlwZXMsIHN1cHBvcnRzVHlwZSwgMCwgMCwg
MCwgc3VwcG9ydHNLZXlTeXN0ZW0pOworICAgIGlmICghaXNBdmFpbGFibGUoKSkKKyAgICAgICAg
cmV0dXJuOworCisgICAgcmVnaXN0cmFyKG1ha2VVbmlxdWU8TWVkaWFQbGF5ZXJGYWN0b3J5QVZG
b3VuZGF0aW9uQ0Y+KCkpOwogfQogCiBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25DRjo6
TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uQ0YoTWVkaWFQbGF5ZXIqIHBsYXllcikKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9j
Zi9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25DRi5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL2NmL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRh
dGlvbkNGLmgKaW5kZXggNDM4YTNiZDNjMzY5OTUxN2RkZTljNjBmY2QxZmMyZjcwMzg4NzlmNC4u
MTFmOTQ2MThjN2NiODViNmVhMGVmNDJhMzhhMWE5OTE5ZGYyYmI3MiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL2NmL01lZGlhUGxheWVy
UHJpdmF0ZUFWRm91bmRhdGlvbkNGLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvYXZmb3VuZGF0aW9uL2NmL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbkNGLmgK
QEAgLTYxLDYgKzYxLDcgQEAgcHVibGljOgogICAgIHN0YXRpYyB2b2lkIHJlZ2lzdGVyTWVkaWFF
bmdpbmUoTWVkaWFFbmdpbmVSZWdpc3RyYXIpOwogCiBwcml2YXRlOgorICAgIGZyaWVuZCBjbGFz
cyBNZWRpYVBsYXllckZhY3RvcnlBVkZvdW5kYXRpb25DRjsKICAgICBzdGF0aWMgdm9pZCBnZXRT
dXBwb3J0ZWRUeXBlcyhIYXNoU2V0PFN0cmluZywgQVNDSUlDYXNlSW5zZW5zaXRpdmVIYXNoPiYg
dHlwZXMpOwogICAgIHN0YXRpYyBNZWRpYVBsYXllcjo6U3VwcG9ydHNUeXBlIHN1cHBvcnRzVHlw
ZShjb25zdCBNZWRpYUVuZ2luZVN1cHBvcnRQYXJhbWV0ZXJzJik7CiAgICAgc3RhdGljIGJvb2wg
c3VwcG9ydHNLZXlTeXN0ZW0oY29uc3QgU3RyaW5nJiBrZXlTeXN0ZW0sIGNvbnN0IFN0cmluZyYg
bWltZVR5cGUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
YXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQ
bGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5oCmluZGV4IGNhZGEyMzExYmI2YzY4MjI4OWIw
ZmE2NmJiNmQ4ZDUxMjU5M2Y2MDcuLjI4ZmQ2MmVkNGU2ZWJkY2IwOTIxY2I1Yjk0YjkzYmVjMDAw
NWMzNDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91
bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBs
YXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLmgKQEAgLTE2Miw2ICsxNjIsNyBAQCBwdWJsaWM6
CiAKIHByaXZhdGU6CiAgICAgLy8gZW5naW5lIHN1cHBvcnQKKyAgICBmcmllbmQgY2xhc3MgTWVk
aWFQbGF5ZXJGYWN0b3J5QVZGb3VuZGF0aW9uT2JqQzsKICAgICBzdGF0aWMgdm9pZCBnZXRTdXBw
b3J0ZWRUeXBlcyhIYXNoU2V0PFN0cmluZywgQVNDSUlDYXNlSW5zZW5zaXRpdmVIYXNoPiYgdHlw
ZXMpOwogICAgIHN0YXRpYyBNZWRpYVBsYXllcjo6U3VwcG9ydHNUeXBlIHN1cHBvcnRzVHlwZShj
b25zdCBNZWRpYUVuZ2luZVN1cHBvcnRQYXJhbWV0ZXJzJik7CiAgICAgc3RhdGljIGJvb2wgc3Vw
cG9ydHNLZXlTeXN0ZW0oY29uc3QgU3RyaW5nJiBrZXlTeXN0ZW0sIGNvbnN0IFN0cmluZyYgbWlt
ZVR5cGUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZm
b3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5tbSBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxh
eWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMubW0KaW5kZXggNzE4OTI5YzYyMTIyMzExZjY5YTNk
OGRhZTAyODIzZDMxNjE1MmI1Yi4uNGNmYzdmNWU1ZTViNzdlMjU2ZmRmMjdhOTE0ZDJlNjFhMzJm
ZGRhMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3Vu
ZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5tbQorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBs
YXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLm1tCkBAIC0yNzMsMTQgKzI3Myw1NCBAQCBzdGF0
aWMgZGlzcGF0Y2hfcXVldWVfdCBnbG9iYWxQdWxsRGVsZWdhdGVRdWV1ZSgpCiB9CiAjZW5kaWYK
IAorY2xhc3MgTWVkaWFQbGF5ZXJGYWN0b3J5QVZGb3VuZGF0aW9uT2JqQyA6IHB1YmxpYyBNZWRp
YVBsYXllckZhY3RvcnkgeworcHVibGljOgorICAgIE1lZGlhUGxheWVyRW51bXM6Ok1lZGlhRW5n
aW5lSWRlbnRpZmllciBpZGVudGlmaWVyKCkgY29uc3QgZmluYWwgeyByZXR1cm4gTWVkaWFQbGF5
ZXJFbnVtczo6TWVkaWFFbmdpbmVJZGVudGlmaWVyOjpBVkZvdW5kYXRpb247IH07CisKKyAgICBz
dGQ6OnVuaXF1ZV9wdHI8TWVkaWFQbGF5ZXJQcml2YXRlSW50ZXJmYWNlPiBjcmVhdGVNZWRpYUVu
Z2luZVBsYXllcihNZWRpYVBsYXllciogcGxheWVyKSBjb25zdCBmaW5hbAorICAgIHsKKyAgICAg
ICAgcmV0dXJuIG1ha2VVbmlxdWU8TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQz4o
cGxheWVyKTsKKyAgICB9CisKKyAgICB2b2lkIGdldFN1cHBvcnRlZFR5cGVzKEhhc2hTZXQ8U3Ry
aW5nLCBBU0NJSUNhc2VJbnNlbnNpdGl2ZUhhc2g+JiB0eXBlcykgY29uc3QgZmluYWwKKyAgICB7
CisgICAgICAgIHJldHVybiBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpnZXRT
dXBwb3J0ZWRUeXBlcyh0eXBlcyk7CisgICAgfQorCisgICAgTWVkaWFQbGF5ZXI6OlN1cHBvcnRz
VHlwZSBzdXBwb3J0c1R5cGVBbmRDb2RlY3MoY29uc3QgTWVkaWFFbmdpbmVTdXBwb3J0UGFyYW1l
dGVycyYgcGFyYW1ldGVycykgY29uc3QgZmluYWwKKyAgICB7CisgICAgICAgIHJldHVybiBNZWRp
YVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpzdXBwb3J0c1R5cGUocGFyYW1ldGVycyk7
CisgICAgfQorCisgICAgSGFzaFNldDxSZWZQdHI8U2VjdXJpdHlPcmlnaW4+PiBvcmlnaW5zSW5N
ZWRpYUNhY2hlKGNvbnN0IFN0cmluZyYgcGF0aCkgY29uc3QgZmluYWwKKyAgICB7CisgICAgICAg
IHJldHVybiBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpvcmlnaW5zSW5NZWRp
YUNhY2hlKHBhdGgpOworICAgIH0KKworICAgIHZvaWQgY2xlYXJNZWRpYUNhY2hlKGNvbnN0IFN0
cmluZyYgcGF0aCwgV2FsbFRpbWUgbW9kaWZpZWRTaW5jZSkgY29uc3QgZmluYWwKKyAgICB7Cisg
ICAgICAgIHJldHVybiBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpjbGVhck1l
ZGlhQ2FjaGUocGF0aCwgbW9kaWZpZWRTaW5jZSk7CisgICAgfQorCisgICAgdm9pZCBjbGVhck1l
ZGlhQ2FjaGVGb3JPcmlnaW5zKGNvbnN0IFN0cmluZyYgcGF0aCwgY29uc3QgSGFzaFNldDxSZWZQ
dHI8U2VjdXJpdHlPcmlnaW4+PiYgb3JpZ2lucykgY29uc3QgZmluYWwKKyAgICB7CisgICAgICAg
IHJldHVybiBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpjbGVhck1lZGlhQ2Fj
aGVGb3JPcmlnaW5zKHBhdGgsIG9yaWdpbnMpOworICAgIH0KKworICAgIGJvb2wgc3VwcG9ydHNL
ZXlTeXN0ZW0oY29uc3QgU3RyaW5nJiBrZXlTeXN0ZW0sIGNvbnN0IFN0cmluZyYgbWltZVR5cGUp
IGNvbnN0IGZpbmFsCisgICAgeworICAgICAgICByZXR1cm4gTWVkaWFQbGF5ZXJQcml2YXRlQVZG
b3VuZGF0aW9uT2JqQzo6c3VwcG9ydHNLZXlTeXN0ZW0oa2V5U3lzdGVtLCBtaW1lVHlwZSk7Cisg
ICAgfQorfTsKKwogdm9pZCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpyZWdp
c3Rlck1lZGlhRW5naW5lKE1lZGlhRW5naW5lUmVnaXN0cmFyIHJlZ2lzdHJhcikKIHsKICAgICBp
ZiAoIWlzQXZhaWxhYmxlKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIHJlZ2lzdHJhcihbXShN
ZWRpYVBsYXllciogcGxheWVyKSB7IHJldHVybiBtYWtlVW5pcXVlPE1lZGlhUGxheWVyUHJpdmF0
ZUFWRm91bmRhdGlvbk9iakM+KHBsYXllcik7IH0sCi0gICAgICAgICAgICBnZXRTdXBwb3J0ZWRU
eXBlcywgc3VwcG9ydHNUeXBlLCBvcmlnaW5zSW5NZWRpYUNhY2hlLCBjbGVhck1lZGlhQ2FjaGUs
IGNsZWFyTWVkaWFDYWNoZUZvck9yaWdpbnMsIHN1cHBvcnRzS2V5U3lzdGVtKTsKICAgICBBU1NF
UlQoQVZBc3NldE1JTUVUeXBlQ2FjaGU6OnNpbmdsZXRvbigpLmlzQXZhaWxhYmxlKCkpOworCisg
ICAgcmVnaXN0cmFyKG1ha2VVbmlxdWU8TWVkaWFQbGF5ZXJGYWN0b3J5QVZGb3VuZGF0aW9uT2Jq
Qz4oKSk7CiB9CiAKIHN0YXRpYyBBVkFzc2V0Q2FjaGUgKmFzc2V0Q2FjaGVGb3JQYXRoKGNvbnN0
IFN0cmluZyYgcGF0aCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2Jq
Qy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpj
L01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQy5tbQppbmRleCBkZmYzZTI0NTJi
ZjVhZTI1YWM0NjMwNWIxMDM5ZmUyODczYzk4YjVmLi5lZjY5MjY4YmM1M2ZiMDkyNGVjODEwYWMy
MWVlNGJhN2MxNDI2ZmE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVNZWRpYVNvdXJjZUFWRk9i
akMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9u
L29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDLm1tCkBAIC0xOTYsMTQg
KzE5NiwzNCBAQCBNZWRpYVBsYXllclByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakM6On5NZWRpYVBs
YXllclByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMoKQogI3ByYWdtYSBtYXJrIC0KICNwcmFnbWEg
bWFyayBNZWRpYVBsYXllciBGYWN0b3J5IE1ldGhvZHMKIAorY2xhc3MgTWVkaWFQbGF5ZXJGYWN0
b3J5TWVkaWFTb3VyY2VBVkZPYmpDIDogcHVibGljIE1lZGlhUGxheWVyRmFjdG9yeSB7CitwdWJs
aWM6CisgICAgTWVkaWFQbGF5ZXJFbnVtczo6TWVkaWFFbmdpbmVJZGVudGlmaWVyIGlkZW50aWZp
ZXIoKSBjb25zdCBmaW5hbCB7IHJldHVybiBNZWRpYVBsYXllckVudW1zOjpNZWRpYUVuZ2luZUlk
ZW50aWZpZXI6OkFWRm91bmRhdGlvbk1TRTsgfTsKKworICAgIHN0ZDo6dW5pcXVlX3B0cjxNZWRp
YVBsYXllclByaXZhdGVJbnRlcmZhY2U+IGNyZWF0ZU1lZGlhRW5naW5lUGxheWVyKE1lZGlhUGxh
eWVyKiBwbGF5ZXIpIGNvbnN0IGZpbmFsCisgICAgeworICAgICAgICByZXR1cm4gbWFrZVVuaXF1
ZTxNZWRpYVBsYXllclByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakM+KHBsYXllcik7ICAgICAgICAK
KyAgICB9CisKKyAgICB2b2lkIGdldFN1cHBvcnRlZFR5cGVzKEhhc2hTZXQ8U3RyaW5nLCBBU0NJ
SUNhc2VJbnNlbnNpdGl2ZUhhc2g+JiB0eXBlcykgY29uc3QgZmluYWwKKyAgICB7CisgICAgICAg
IHJldHVybiBNZWRpYVBsYXllclByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakM6OmdldFN1cHBvcnRl
ZFR5cGVzKHR5cGVzKTsKKyAgICB9CisKKyAgICBNZWRpYVBsYXllcjo6U3VwcG9ydHNUeXBlIHN1
cHBvcnRzVHlwZUFuZENvZGVjcyhjb25zdCBNZWRpYUVuZ2luZVN1cHBvcnRQYXJhbWV0ZXJzJiBw
YXJhbWV0ZXJzKSBjb25zdCBmaW5hbAorICAgIHsKKyAgICAgICAgcmV0dXJuIE1lZGlhUGxheWVy
UHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQzo6c3VwcG9ydHNUeXBlKHBhcmFtZXRlcnMpOworICAg
IH0KK307CisKIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDOjpyZWdp
c3Rlck1lZGlhRW5naW5lKE1lZGlhRW5naW5lUmVnaXN0cmFyIHJlZ2lzdHJhcikKIHsKICAgICBp
ZiAoIWlzQXZhaWxhYmxlKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIHJlZ2lzdHJhcihbXShN
ZWRpYVBsYXllciogcGxheWVyKSB7IHJldHVybiBtYWtlVW5pcXVlPE1lZGlhUGxheWVyUHJpdmF0
ZU1lZGlhU291cmNlQVZGT2JqQz4ocGxheWVyKTsgfSwKLSAgICAgICAgZ2V0U3VwcG9ydGVkVHlw
ZXMsIHN1cHBvcnRzVHlwZSwgMCwgMCwgMCwgMCk7CiAgICAgQVNTRVJUKEFWQXNzZXRNSU1FVHlw
ZUNhY2hlOjpzaW5nbGV0b24oKS5pc0F2YWlsYWJsZSgpKTsKKworICAgIHJlZ2lzdHJhcihtYWtl
VW5pcXVlPE1lZGlhUGxheWVyRmFjdG9yeU1lZGlhU291cmNlQVZGT2JqQz4oKSk7CiB9CiAKIGJv
b2wgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDOjppc0F2YWlsYWJsZSgpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24v
b2JqYy9NZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakMubW0gYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZh
dGVNZWRpYVN0cmVhbUFWRk9iakMubW0KaW5kZXggMjUxOWMxMTRmNDA4OTY5YTNjNDBiZWIzODU0
MzU5MDhmMGIyNWIxNy4uMDdiYmZhYmIwYWM5MjgzZDQ1NmIxMmUyMjM0ODNjZDc3MmUzZDBhOSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9u
L29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDLm1tCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVy
UHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQy5tbQpAQCAtMjIwLDExICsyMjAsMzIgQEAgTWVkaWFQ
bGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDOjp+TWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFT
dHJlYW1BVkZPYmpDKCkKICNwcmFnbWEgbWFyayAtCiAjcHJhZ21hIG1hcmsgTWVkaWFQbGF5ZXIg
RmFjdG9yeSBNZXRob2RzCiAKK2NsYXNzIE1lZGlhUGxheWVyRmFjdG9yeU1lZGlhU3RyZWFtQVZG
T2JqQyA6IHB1YmxpYyBNZWRpYVBsYXllckZhY3RvcnkgeworcHVibGljOgorICAgIE1lZGlhUGxh
eWVyRW51bXM6Ok1lZGlhRW5naW5lSWRlbnRpZmllciBpZGVudGlmaWVyKCkgY29uc3QgZmluYWwg
eyByZXR1cm4gTWVkaWFQbGF5ZXJFbnVtczo6TWVkaWFFbmdpbmVJZGVudGlmaWVyOjpBVkZvdW5k
YXRpb25NZWRpYVN0cmVhbTsgfTsKKworICAgIHN0ZDo6dW5pcXVlX3B0cjxNZWRpYVBsYXllclBy
aXZhdGVJbnRlcmZhY2U+IGNyZWF0ZU1lZGlhRW5naW5lUGxheWVyKE1lZGlhUGxheWVyKiBwbGF5
ZXIpIGNvbnN0IGZpbmFsCisgICAgeworICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxNZWRpYVBs
YXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakM+KHBsYXllcik7CisgICAgfQorCisgICAgdm9p
ZCBnZXRTdXBwb3J0ZWRUeXBlcyhIYXNoU2V0PFN0cmluZywgQVNDSUlDYXNlSW5zZW5zaXRpdmVI
YXNoPiYgdHlwZXMpIGNvbnN0IGZpbmFsCisgICAgeworICAgICAgICByZXR1cm4gTWVkaWFQbGF5
ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDOjpnZXRTdXBwb3J0ZWRUeXBlcyh0eXBlcyk7Cisg
ICAgfQorCisgICAgTWVkaWFQbGF5ZXI6OlN1cHBvcnRzVHlwZSBzdXBwb3J0c1R5cGVBbmRDb2Rl
Y3MoY29uc3QgTWVkaWFFbmdpbmVTdXBwb3J0UGFyYW1ldGVycyYgcGFyYW1ldGVycykgY29uc3Qg
ZmluYWwKKyAgICB7CisgICAgICAgIHJldHVybiBNZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVh
bUFWRk9iakM6OnN1cHBvcnRzVHlwZShwYXJhbWV0ZXJzKTsKKyAgICB9Cit9OworCiB2b2lkIE1l
ZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQzo6cmVnaXN0ZXJNZWRpYUVuZ2luZShN
ZWRpYUVuZ2luZVJlZ2lzdHJhciByZWdpc3RyYXIpCiB7Ci0gICAgaWYgKGlzQXZhaWxhYmxlKCkp
Ci0gICAgICAgIHJlZ2lzdHJhcihbXShNZWRpYVBsYXllciogcGxheWVyKSB7IHJldHVybiBtYWtl
VW5pcXVlPE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQz4ocGxheWVyKTsgfSwg
Z2V0U3VwcG9ydGVkVHlwZXMsCi0gICAgICAgICAgICBzdXBwb3J0c1R5cGUsIDAsIDAsIDAsIDAp
OworICAgIGlmICghaXNBdmFpbGFibGUoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgcmVnaXN0
cmFyKG1ha2VVbmlxdWU8TWVkaWFQbGF5ZXJGYWN0b3J5TWVkaWFTdHJlYW1BVkZPYmpDPigpKTsK
IH0KIAogYm9vbCBNZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakM6OmlzQXZhaWxh
YmxlKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJl
YW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5jcHAK
aW5kZXggZDQ4ODU0MjI2N2EzN2EyYjM4ZDU5YjNkMzhiZjQyOTE5YTRhMTc4NS4uNGM1N2U1Njli
ODFkODJkZWY2NGNmOTdlNmYyNTdjNjg1ZmI5MGZkOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1l
ci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01l
ZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5jcHAKQEAgLTQ2NCwxNCArNDY0LDM3IEBAIGJvb2wg
TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjppc0F2YWlsYWJsZSgpCiAgICAgcmV0dXJuIGZh
Y3Rvcnk7CiB9CiAKK2NsYXNzIE1lZGlhUGxheWVyRmFjdG9yeUdTdHJlYW1lciA6IHB1YmxpYyBN
ZWRpYVBsYXllckZhY3RvcnkgeworcHVibGljOgorICAgIE1lZGlhUGxheWVyRW51bXM6Ok1lZGlh
RW5naW5lSWRlbnRpZmllciBpZGVudGlmaWVyKCkgY29uc3QgZmluYWwgeyByZXR1cm4gTWVkaWFQ
bGF5ZXJFbnVtczo6TWVkaWFFbmdpbmVJZGVudGlmaWVyOjpHU3RyZWFtZXI7IH07CisKKyAgICBz
dGQ6OnVuaXF1ZV9wdHI8TWVkaWFQbGF5ZXJQcml2YXRlSW50ZXJmYWNlPiBjcmVhdGVNZWRpYUVu
Z2luZVBsYXllcihNZWRpYVBsYXllciogcGxheWVyKSBjb25zdCBmaW5hbAorICAgIHsKKyAgICAg
ICAgcmV0dXJuIG1ha2VVbmlxdWU8TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyPihwbGF5ZXIp
OworICAgIH0KKworICAgIHZvaWQgZ2V0U3VwcG9ydGVkVHlwZXMoSGFzaFNldDxTdHJpbmcsIEFT
Q0lJQ2FzZUluc2Vuc2l0aXZlSGFzaD4mIHR5cGVzKSBjb25zdCBmaW5hbAorICAgIHsKKyAgICAg
ICAgcmV0dXJuIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6Z2V0U3VwcG9ydGVkVHlwZXMo
dHlwZXMpOworICAgIH0KKworICAgIE1lZGlhUGxheWVyOjpTdXBwb3J0c1R5cGUgc3VwcG9ydHNU
eXBlQW5kQ29kZWNzKGNvbnN0IE1lZGlhRW5naW5lU3VwcG9ydFBhcmFtZXRlcnMmIHBhcmFtZXRl
cnMpIGNvbnN0IGZpbmFsCisgICAgeworICAgICAgICByZXR1cm4gTWVkaWFQbGF5ZXJQcml2YXRl
R1N0cmVhbWVyOjpzdXBwb3J0c1R5cGUocGFyYW1ldGVycyk7CisgICAgfQorCisgICAgYm9vbCBz
dXBwb3J0c0tleVN5c3RlbShjb25zdCBTdHJpbmcmIGtleVN5c3RlbSwgY29uc3QgU3RyaW5nJiBt
aW1lVHlwZSkgY29uc3QgZmluYWwKKyAgICB7CisgICAgICAgIHJldHVybiBNZWRpYVBsYXllclBy
aXZhdGVHU3RyZWFtZXI6OnN1cHBvcnRzS2V5U3lzdGVtKGtleVN5c3RlbSwgbWltZVR5cGUpOwor
ICAgIH0KK307CisKIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpyZWdpc3Rlck1l
ZGlhRW5naW5lKE1lZGlhRW5naW5lUmVnaXN0cmFyIHJlZ2lzdHJhcikKIHsKICAgICBpbml0aWFs
aXplRGVidWdDYXRlZ29yeSgpOwogCi0gICAgaWYgKGlzQXZhaWxhYmxlKCkpIHsKLSAgICAgICAg
cmVnaXN0cmFyKFtdKE1lZGlhUGxheWVyKiBwbGF5ZXIpIHsgcmV0dXJuIG1ha2VVbmlxdWU8TWVk
aWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyPihwbGF5ZXIpOyB9LAotICAgICAgICAgICAgZ2V0U3Vw
cG9ydGVkVHlwZXMsIHN1cHBvcnRzVHlwZSwgbnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0ciwgc3Vw
cG9ydHNLZXlTeXN0ZW0pOwotICAgIH0KKyAgICBpZiAoaXNBdmFpbGFibGUoKSkKKyAgICAgICAg
cmVnaXN0cmFyKG1ha2VVbmlxdWU8TWVkaWFQbGF5ZXJGYWN0b3J5R1N0cmVhbWVyPigpKTsKIH0K
IAogdm9pZCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6OmxvYWRGdWxsKGNvbnN0IFN0cmlu
ZyYgdXJsU3RyaW5nLCBjb25zdCBTdHJpbmcmIHBpcGVsaW5lTmFtZSkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZh
dGVHU3RyZWFtZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1l
ci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIuaAppbmRleCBmOWM0N2ExZjYwMTI0Yjk4YmZj
Y2JhZTFjNzNhNGEwNDUxODUzOGQxLi44NTE2NWQxYmYxMjljZWNlMWExMjZkMWMzMDRkM2ZjOTYy
ZTcyNTM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3Ry
ZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5o
CkBAIC0zOTQsNiArMzk0LDcgQEAgcHJpdmF0ZToKICAgICBHc3RFbGVtZW50KiBjcmVhdGVBdWRp
b1NpbmsoKTsKICAgICBHc3RFbGVtZW50KiBhdWRpb1NpbmsoKSBjb25zdDsKIAorICAgIGZyaWVu
ZCBjbGFzcyBNZWRpYVBsYXllckZhY3RvcnlHU3RyZWFtZXI7CiAgICAgc3RhdGljIHZvaWQgZ2V0
U3VwcG9ydGVkVHlwZXMoSGFzaFNldDxTdHJpbmcsIEFTQ0lJQ2FzZUluc2Vuc2l0aXZlSGFzaD4m
KTsKICAgICBzdGF0aWMgTWVkaWFQbGF5ZXI6OlN1cHBvcnRzVHlwZSBzdXBwb3J0c1R5cGUoY29u
c3QgTWVkaWFFbmdpbmVTdXBwb3J0UGFyYW1ldGVycyYpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvbXNlL01lZGlhUGxheWVyUHJpdmF0
ZUdTdHJlYW1lck1TRS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3Ry
ZWFtZXIvbXNlL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lck1TRS5jcHAKaW5kZXggODIwMTU1
ZTU0ZDg4N2U1MTY3YTM0MGFkZDNjNGIzMWQ0OTZlNTZhYi4uYzkwYjIxMDFmZGQwNDY2ZDk2MTAz
NzAwZjVlN2UwNjZjYmM0ZjhiMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZ3N0cmVhbWVyL21zZS9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJNU0UuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9tc2UvTWVk
aWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyTVNFLmNwcApAQCAtNzIsMTQgKzcyLDM3IEBAIEdTVF9E
RUJVR19DQVRFR09SWSh3ZWJraXRfbXNlX2RlYnVnKTsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewog
CitjbGFzcyBNZWRpYVBsYXllckZhY3RvcnlHU3RyZWFtZXJNU0UgOiBwdWJsaWMgTWVkaWFQbGF5
ZXJGYWN0b3J5IHsKK3B1YmxpYzoKKyAgICBNZWRpYVBsYXllckVudW1zOjpNZWRpYUVuZ2luZUlk
ZW50aWZpZXIgaWRlbnRpZmllcigpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIE1lZGlhUGxheWVyRW51
bXM6Ok1lZGlhRW5naW5lSWRlbnRpZmllcjo6R1N0cmVhbWVyTVNFOyB9OworCisgICAgc3RkOjp1
bmlxdWVfcHRyPE1lZGlhUGxheWVyUHJpdmF0ZUludGVyZmFjZT4gY3JlYXRlTWVkaWFFbmdpbmVQ
bGF5ZXIoTWVkaWFQbGF5ZXIqIHBsYXllcikgY29uc3QgZmluYWwKKyAgICB7CisgICAgICAgIHJl
dHVybiBtYWtlVW5pcXVlPE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lck1TRT4ocGxheWVyKTsK
KyAgICB9CisKKyAgICB2b2lkIGdldFN1cHBvcnRlZFR5cGVzKEhhc2hTZXQ8U3RyaW5nLCBBU0NJ
SUNhc2VJbnNlbnNpdGl2ZUhhc2g+JiB0eXBlcykgY29uc3QgZmluYWwKKyAgICB7CisgICAgICAg
IHJldHVybiBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJNU0U6OmdldFN1cHBvcnRlZFR5cGVz
KHR5cGVzKTsKKyAgICB9CisKKyAgICBNZWRpYVBsYXllcjo6U3VwcG9ydHNUeXBlIHN1cHBvcnRz
VHlwZUFuZENvZGVjcyhjb25zdCBNZWRpYUVuZ2luZVN1cHBvcnRQYXJhbWV0ZXJzJiBwYXJhbWV0
ZXJzKSBjb25zdCBmaW5hbAorICAgIHsKKyAgICAgICAgcmV0dXJuIE1lZGlhUGxheWVyUHJpdmF0
ZUdTdHJlYW1lck1TRTo6c3VwcG9ydHNUeXBlKHBhcmFtZXRlcnMpOworICAgIH0KKworICAgIGJv
b2wgc3VwcG9ydHNLZXlTeXN0ZW0oY29uc3QgU3RyaW5nJiBrZXlTeXN0ZW0sIGNvbnN0IFN0cmlu
ZyYgbWltZVR5cGUpIGNvbnN0IGZpbmFsCisgICAgeworICAgICAgICByZXR1cm4gTWVkaWFQbGF5
ZXJQcml2YXRlR1N0cmVhbWVyTVNFOjpzdXBwb3J0c0tleVN5c3RlbShrZXlTeXN0ZW0sIG1pbWVU
eXBlKTsKKyAgICB9Cit9OworCiB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lck1TRTo6
cmVnaXN0ZXJNZWRpYUVuZ2luZShNZWRpYUVuZ2luZVJlZ2lzdHJhciByZWdpc3RyYXIpCiB7CiAg
ICAgaW5pdGlhbGl6ZUdTdHJlYW1lckFuZFJlZ2lzdGVyV2ViS2l0RWxlbWVudHMoKTsKICAgICBH
U1RfREVCVUdfQ0FURUdPUllfSU5JVCh3ZWJraXRfbXNlX2RlYnVnLCAid2Via2l0bXNlIiwgMCwg
IldlYktpdCBNU0UgbWVkaWEgcGxheWVyIik7Ci0gICAgaWYgKGlzQXZhaWxhYmxlKCkpIHsKLSAg
ICAgICAgcmVnaXN0cmFyKFtdKE1lZGlhUGxheWVyKiBwbGF5ZXIpIHsgcmV0dXJuIG1ha2VVbmlx
dWU8TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyTVNFPihwbGF5ZXIpOyB9LAotICAgICAgICAg
ICAgZ2V0U3VwcG9ydGVkVHlwZXMsIHN1cHBvcnRzVHlwZSwgbnVsbHB0ciwgbnVsbHB0ciwgbnVs
bHB0ciwgc3VwcG9ydHNLZXlTeXN0ZW0pOwotICAgIH0KKyAgICBpZiAoaXNBdmFpbGFibGUoKSkK
KyAgICAgICAgcmVnaXN0cmFyKG1ha2VVbmlxdWU8TWVkaWFQbGF5ZXJGYWN0b3J5R1N0cmVhbWVy
TVNFPigpKTsKIH0KIAogTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyTVNFOjpNZWRpYVBsYXll
clByaXZhdGVHU3RyZWFtZXJNU0UoTWVkaWFQbGF5ZXIqIHBsYXllcikKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9tc2UvTWVkaWFQbGF5ZXJQ
cml2YXRlR1N0cmVhbWVyTVNFLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9n
c3RyZWFtZXIvbXNlL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lck1TRS5oCmluZGV4IDliMzMz
MDVmN2YxMTZkYWM5MWM2NDFjNDg0NTkzYmU3YTgzMDczNWYuLjVkMTAxM2ZjYmVmMDU3OTM0ODBi
YjM4ZWRlZmU0YjY0ZjBhY2Y0MmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2dzdHJlYW1lci9tc2UvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyTVNFLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL21zZS9NZWRp
YVBsYXllclByaXZhdGVHU3RyZWFtZXJNU0UuaApAQCAtODUsNiArODUsNyBAQCBwdWJsaWM6CiAg
ICAgdm9pZCB1bmJsb2NrRHVyYXRpb25DaGFuZ2VzKCk7CiAKIHByaXZhdGU6CisgICAgZnJpZW5k
IGNsYXNzIE1lZGlhUGxheWVyRmFjdG9yeUdTdHJlYW1lck1TRTsKICAgICBzdGF0aWMgdm9pZCBn
ZXRTdXBwb3J0ZWRUeXBlcyhIYXNoU2V0PFN0cmluZywgQVNDSUlDYXNlSW5zZW5zaXRpdmVIYXNo
PiYpOwogICAgIHN0YXRpYyBNZWRpYVBsYXllcjo6U3VwcG9ydHNUeXBlIHN1cHBvcnRzVHlwZShj
b25zdCBNZWRpYUVuZ2luZVN1cHBvcnRQYXJhbWV0ZXJzJik7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2hvbGVwdW5jaC9NZWRpYVBsYXllclByaXZhdGVI
b2xlUHVuY2guY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvaG9sZXB1bmNo
L01lZGlhUGxheWVyUHJpdmF0ZUhvbGVQdW5jaC5jcHAKaW5kZXggYjhjNGUwMWZhZGY0MTNhZGRj
NzE1NGUxZWFmMWY1YmIwNTUzNmEwYy4uMDYyY2FiMmFhMmJlNWI1MzQxYmVhNjkzNDFlZTVlNWIx
Yjg4N2U3NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvaG9s
ZXB1bmNoL01lZGlhUGxheWVyUHJpdmF0ZUhvbGVQdW5jaC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvaG9sZXB1bmNoL01lZGlhUGxheWVyUHJpdmF0ZUhvbGVQdW5j
aC5jcHAKQEAgLTEzOSwxMCArMTM5LDI5IEBAIE1lZGlhUGxheWVyOjpTdXBwb3J0c1R5cGUgTWVk
aWFQbGF5ZXJQcml2YXRlSG9sZVB1bmNoOjpzdXBwb3J0c1R5cGUoY29uc3QgTWVkaWFFCiAgICAg
cmV0dXJuIE1lZGlhUGxheWVyOjpTdXBwb3J0c1R5cGU6OklzTm90U3VwcG9ydGVkOwogfQogCitj
bGFzcyBNZWRpYVBsYXllckZhY3RvcnlIb2xlUHVuY2ggOiBwdWJsaWMgTWVkaWFQbGF5ZXJGYWN0
b3J5IHsKK3B1YmxpYzoKKyAgICBNZWRpYVBsYXllckVudW1zOjpNZWRpYUVuZ2luZUlkZW50aWZp
ZXIgaWRlbnRpZmllcigpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIE1lZGlhUGxheWVyRW51bXM6Ok1l
ZGlhRW5naW5lSWRlbnRpZmllcjo6SG9sZVB1bmNoOyB9OworCisgICAgc3RkOjp1bmlxdWVfcHRy
PE1lZGlhUGxheWVyUHJpdmF0ZUludGVyZmFjZT4gY3JlYXRlTWVkaWFFbmdpbmVQbGF5ZXIoTWVk
aWFQbGF5ZXIqIHBsYXllcikgY29uc3QgZmluYWwKKyAgICB7CisgICAgICAgIHJldHVybiBtYWtl
VW5pcXVlPE1lZGlhUGxheWVyUHJpdmF0ZUhvbGVQdW5jaD4ocGxheWVyKTsKKyAgICB9CisKKyAg
ICB2b2lkIGdldFN1cHBvcnRlZFR5cGVzKEhhc2hTZXQ8U3RyaW5nLCBBU0NJSUNhc2VJbnNlbnNp
dGl2ZUhhc2g+JiB0eXBlcykgY29uc3QgZmluYWwKKyAgICB7CisgICAgICAgIHJldHVybiBNZWRp
YVBsYXllclByaXZhdGVIb2xlUHVuY2g6OmdldFN1cHBvcnRlZFR5cGVzKHR5cGVzKTsKKyAgICB9
CisKKyAgICBNZWRpYVBsYXllcjo6U3VwcG9ydHNUeXBlIHN1cHBvcnRzVHlwZUFuZENvZGVjcyhj
b25zdCBNZWRpYUVuZ2luZVN1cHBvcnRQYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzKSBjb25zdCBmaW5h
bAorICAgIHsKKyAgICAgICAgcmV0dXJuIE1lZGlhUGxheWVyUHJpdmF0ZUhvbGVQdW5jaDo6c3Vw
cG9ydHNUeXBlKHBhcmFtZXRlcnMpOworICAgIH0KK307CisKIHZvaWQgTWVkaWFQbGF5ZXJQcml2
YXRlSG9sZVB1bmNoOjpyZWdpc3Rlck1lZGlhRW5naW5lKE1lZGlhRW5naW5lUmVnaXN0cmFyIHJl
Z2lzdHJhcikKIHsKLSAgICByZWdpc3RyYXIoW10oTWVkaWFQbGF5ZXIqIHBsYXllcikgeyByZXR1
cm4gbWFrZVVuaXF1ZTxNZWRpYVBsYXllclByaXZhdGVIb2xlUHVuY2g+KHBsYXllcik7IH0sCi0g
ICAgICAgIGdldFN1cHBvcnRlZFR5cGVzLCBzdXBwb3J0c1R5cGUsIG51bGxwdHIsIG51bGxwdHIs
IG51bGxwdHIsIG51bGxwdHIpOworICAgIHJlZ2lzdHJhcihtYWtlVW5pcXVlPE1lZGlhUGxheWVy
RmFjdG9yeUhvbGVQdW5jaD4oKSk7CiB9CiAKIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlSG9sZVB1
bmNoOjpub3RpZnlSZWFkeVN0YXRlKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2hvbGVwdW5jaC9NZWRpYVBsYXllclByaXZhdGVIb2xlUHVuY2guaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2hvbGVwdW5jaC9NZWRpYVBsYXllclByaXZh
dGVIb2xlUHVuY2guaAppbmRleCA5YTEwODdkMzJiMjViM2MzMGRjZGRiZWI0MDA4Y2EwNTAwOTU3
ZjVhLi4zYjM0YmZhOTJhYmJmNDgxYTFiNTQyMmNiNTVhZjY1NWU2MzZiYTBkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ob2xlcHVuY2gvTWVkaWFQbGF5ZXJQ
cml2YXRlSG9sZVB1bmNoLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
aG9sZXB1bmNoL01lZGlhUGxheWVyUHJpdmF0ZUhvbGVQdW5jaC5oCkBAIC05OCw2ICs5OCw3IEBA
IHB1YmxpYzoKICNlbmRpZgogCiBwcml2YXRlOgorICAgIGZyaWVuZCBjbGFzcyBNZWRpYVBsYXll
ckZhY3RvcnlIb2xlUHVuY2g7CiAgICAgc3RhdGljIHZvaWQgZ2V0U3VwcG9ydGVkVHlwZXMoSGFz
aFNldDxTdHJpbmcsIEFTQ0lJQ2FzZUluc2Vuc2l0aXZlSGFzaD4mKTsKICAgICBzdGF0aWMgTWVk
aWFQbGF5ZXI6OlN1cHBvcnRzVHlwZSBzdXBwb3J0c1R5cGUoY29uc3QgTWVkaWFFbmdpbmVTdXBw
b3J0UGFyYW1ldGVycyYpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy93aW4vTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFGb3VuZGF0aW9uLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9NZWRpYVBsYXllclByaXZhdGVNZWRpYUZv
dW5kYXRpb24uY3BwCmluZGV4IGJiYmI0MzIyZWQzYTc1YmY4MWQwYmY0Nzc2MmYwNTA4MmMzOTRi
YjAuLjU5MGFiYWRkN2Q3MTU0Y2M5ZGIyYzM3NzYyNDNiNjVjNTQ4ZDZkODUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9NZWRpYVBsYXllclByaXZhdGVN
ZWRpYUZvdW5kYXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L3dpbi9NZWRpYVBsYXllclByaXZhdGVNZWRpYUZvdW5kYXRpb24uY3BwCkBAIC03OSwxMiArNzks
MzAgQEAgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFGb3VuZGF0aW9uOjp+TWVkaWFQbGF5ZXJQcml2
YXRlTWVkaWFGb3VuZGF0aW9uKCkKICAgICBlbmRTZXNzaW9uKCk7CiB9CiAKK2NsYXNzIE1lZGlh
UGxheWVyRmFjdG9yeU1lZGlhRm91bmRhdGlvbiA6IHB1YmxpYyBNZWRpYVBsYXllckZhY3Rvcnkg
eworcHVibGljOgorICAgIE1lZGlhUGxheWVyRW51bXM6Ok1lZGlhRW5naW5lSWRlbnRpZmllciBp
ZGVudGlmaWVyKCkgY29uc3QgZmluYWwgeyByZXR1cm4gTWVkaWFQbGF5ZXJFbnVtczo6TWVkaWFF
bmdpbmVJZGVudGlmaWVyOjpNZWRpYUZvdW5kYXRpb247IH07CisKKyAgICBzdGQ6OnVuaXF1ZV9w
dHI8TWVkaWFQbGF5ZXJQcml2YXRlSW50ZXJmYWNlPiBjcmVhdGVNZWRpYUVuZ2luZVBsYXllcihN
ZWRpYVBsYXllciogcGxheWVyKSBjb25zdCBmaW5hbAorICAgIHsKKyAgICAgICAgcmV0dXJuIG1h
a2VVbmlxdWU8TWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFGb3VuZGF0aW9uPihwbGF5ZXIpOworICAg
IH0KKworICAgIHZvaWQgZ2V0U3VwcG9ydGVkVHlwZXMoSGFzaFNldDxTdHJpbmcsIEFTQ0lJQ2Fz
ZUluc2Vuc2l0aXZlSGFzaD4mIHR5cGVzKSBjb25zdCBmaW5hbAorICAgIHsKKyAgICAgICAgcmV0
dXJuIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhRm91bmRhdGlvbjo6Z2V0U3VwcG9ydGVkVHlwZXMo
dHlwZXMpOworICAgIH0KKworICAgIE1lZGlhUGxheWVyOjpTdXBwb3J0c1R5cGUgc3VwcG9ydHNU
eXBlQW5kQ29kZWNzKGNvbnN0IE1lZGlhRW5naW5lU3VwcG9ydFBhcmFtZXRlcnMmIHBhcmFtZXRl
cnMpIGNvbnN0IGZpbmFsCisgICAgeworICAgICAgICByZXR1cm4gTWVkaWFQbGF5ZXJQcml2YXRl
TWVkaWFGb3VuZGF0aW9uOjpzdXBwb3J0c1R5cGUocGFyYW1ldGVycyk7CisgICAgfQorfTsKKwog
dm9pZCBNZWRpYVBsYXllclByaXZhdGVNZWRpYUZvdW5kYXRpb246OnJlZ2lzdGVyTWVkaWFFbmdp
bmUoTWVkaWFFbmdpbmVSZWdpc3RyYXIgcmVnaXN0cmFyKQogewotICAgIGlmIChpc0F2YWlsYWJs
ZSgpKSB7Ci0gICAgICAgIHJlZ2lzdHJhcihbXShNZWRpYVBsYXllciogcGxheWVyKSB7IHJldHVy
biBtYWtlVW5pcXVlPE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhRm91bmRhdGlvbj4ocGxheWVyKTsg
fSwKLSAgICAgICAgICAgIGdldFN1cHBvcnRlZFR5cGVzLCBzdXBwb3J0c1R5cGUsIDAsIDAsIDAs
IDApOwotICAgIH0KKyAgICBpZiAoaXNBdmFpbGFibGUoKSkKKyAgICAgICAgcmVnaXN0cmFyKG1h
a2VVbmlxdWU8TWVkaWFQbGF5ZXJGYWN0b3J5TWVkaWFGb3VuZGF0aW9uPigpKTsKIH0KIAogYm9v
bCBNZWRpYVBsYXllclByaXZhdGVNZWRpYUZvdW5kYXRpb246OmlzQXZhaWxhYmxlKCkgCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL21lZGlhc291cmNlL01vY2tNZWRp
YVBsYXllck1lZGlhU291cmNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svbWVk
aWFzb3VyY2UvTW9ja01lZGlhUGxheWVyTWVkaWFTb3VyY2UuY3BwCmluZGV4IDAxYTZhMDAzMGY0
ZjQ2MWQ0NjcyN2JiNjk2MDE2NWFiOWJjZmExYzguLjRhYzY0MGI0YzAyZWJjMDg4YmI5YzZiNzlm
NzY3MDk4Y2IzZmU5ZWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2sv
bWVkaWFzb3VyY2UvTW9ja01lZGlhUGxheWVyTWVkaWFTb3VyY2UuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21vY2svbWVkaWFzb3VyY2UvTW9ja01lZGlhUGxheWVyTWVkaWFTb3Vy
Y2UuY3BwCkBAIC0zNywxMSArMzcsMjcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitjbGFz
cyBNZWRpYVBsYXllckZhY3RvcnlNZWRpYVNvdXJjZU1vY2sgOiBwdWJsaWMgTWVkaWFQbGF5ZXJG
YWN0b3J5IHsKK3B1YmxpYzoKKyAgICBNZWRpYVBsYXllckVudW1zOjpNZWRpYUVuZ2luZUlkZW50
aWZpZXIgaWRlbnRpZmllcigpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIE1lZGlhUGxheWVyRW51bXM6
Ok1lZGlhRW5naW5lSWRlbnRpZmllcjo6TW9ja01TRTsgfTsKKworICAgIHN0ZDo6dW5pcXVlX3B0
cjxNZWRpYVBsYXllclByaXZhdGVJbnRlcmZhY2U+IGNyZWF0ZU1lZGlhRW5naW5lUGxheWVyKE1l
ZGlhUGxheWVyKiBwbGF5ZXIpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1ha2VVbmlxdWU8TW9ja01l
ZGlhUGxheWVyTWVkaWFTb3VyY2U+KHBsYXllcik7IH0KKworICAgIHZvaWQgZ2V0U3VwcG9ydGVk
VHlwZXMoSGFzaFNldDxTdHJpbmcsIEFTQ0lJQ2FzZUluc2Vuc2l0aXZlSGFzaD4mIHR5cGVzKSBj
b25zdCBmaW5hbAorICAgIHsKKyAgICAgICAgcmV0dXJuIE1vY2tNZWRpYVBsYXllck1lZGlhU291
cmNlOjpnZXRTdXBwb3J0ZWRUeXBlcyh0eXBlcyk7CisgICAgfQorCisgICAgTWVkaWFQbGF5ZXI6
OlN1cHBvcnRzVHlwZSBzdXBwb3J0c1R5cGVBbmRDb2RlY3MoY29uc3QgTWVkaWFFbmdpbmVTdXBw
b3J0UGFyYW1ldGVycyYgcGFyYW1ldGVycykgY29uc3QgZmluYWwKKyAgICB7CisgICAgICAgIHJl
dHVybiBNb2NrTWVkaWFQbGF5ZXJNZWRpYVNvdXJjZTo6c3VwcG9ydHNUeXBlKHBhcmFtZXRlcnMp
OworICAgIH0KK307CisKIC8vIE1lZGlhUGxheWVyIEVuaWduZSBTdXBwb3J0CiB2b2lkIE1vY2tN
ZWRpYVBsYXllck1lZGlhU291cmNlOjpyZWdpc3Rlck1lZGlhRW5naW5lKE1lZGlhRW5naW5lUmVn
aXN0cmFyIHJlZ2lzdHJhcikKIHsKLSAgICByZWdpc3RyYXIoW10gKE1lZGlhUGxheWVyKiBwbGF5
ZXIpIHsgcmV0dXJuIG1ha2VVbmlxdWU8TW9ja01lZGlhUGxheWVyTWVkaWFTb3VyY2U+KHBsYXll
cik7IH0sIGdldFN1cHBvcnRlZFR5cGVzLAotICAgICAgICBzdXBwb3J0c1R5cGUsIDAsIDAsIDAs
IDApOworICAgIHJlZ2lzdHJhcihtYWtlVW5pcXVlPE1lZGlhUGxheWVyRmFjdG9yeU1lZGlhU291
cmNlTW9jaz4oKSk7CiB9CiAKIC8vIEZJWE1FOiBXaGF0IGRvZXMgdGhlIHdvcmQgImNhY2hlIiBt
ZWFuIGhlcmU/CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2VzLWlucHV0
LnhjZmlsZWxpc3QgYi9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2VzLWlucHV0LnhjZmlsZWxp
c3QKaW5kZXggN2YwOGYyYjJmMTg1ODJlZDUwNDAzMmRjYWNiNTQ3ODZhMTY5YWQ1Zi4uM2VmMWNh
ODhmZmFlYWEyOWRjZDgzYjc1NWMyYjNiZjI4OGYwZjJhYSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9EZXJpdmVkU291cmNlcy1pbnB1dC54Y2ZpbGVsaXN0CisrKyBiL1NvdXJjZS9XZWJLaXQv
RGVyaXZlZFNvdXJjZXMtaW5wdXQueGNmaWxlbGlzdApAQCAtMTYsNiArMTYsNyBAQCAkKEpBVkFT
Q1JJUFRDT1JFX1BSSVZBVEVfSEVBREVSU19ESVIpL3h4ZC5wbAogJChQUk9KRUNUX0RJUikvR1BV
UHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluCiAkKFBST0pFQ1Rf
RElSKS9HUFVQcm9jZXNzL0dQVVByb2Nlc3MubWVzc2FnZXMuaW4KICQoUFJPSkVDVF9ESVIpL0dQ
VVByb2Nlc3MvbWFjL2NvbS5hcHBsZS5XZWJLaXQuR1BVUHJvY2Vzcy5zYi5pbgorJChQUk9KRUNU
X0RJUikvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eS5tZXNz
YWdlcy5pbgogJChQUk9KRUNUX0RJUikvTmV0d29ya1Byb2Nlc3MvQ29va2llcy9XZWJDb29raWVN
YW5hZ2VyLm1lc3NhZ2VzLmluCiAkKFBST0pFQ1RfRElSKS9OZXR3b3JrUHJvY2Vzcy9DdXN0b21Q
cm90b2NvbHMvTGVnYWN5Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyLm1lc3NhZ2VzLmluCiAkKFBST0pF
Q1RfRElSKS9OZXR3b3JrUHJvY2Vzcy9JbmRleGVkREIvV2ViSURCQ29ubmVjdGlvblRvQ2xpZW50
Lm1lc3NhZ2VzLmluCkBAIC05Nyw2ICs5OCw3IEBAICQoUFJPSkVDVF9ESVIpL1dlYlByb2Nlc3Mv
Q2FjaGUvV2ViQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbi5tZXNzYWdlcy5pbgogJChQUk9KRUNUX0RJ
UikvV2ViUHJvY2Vzcy9EYXRhYmFzZXMvSW5kZXhlZERCL1dlYklEQkNvbm5lY3Rpb25Ub1NlcnZl
ci5tZXNzYWdlcy5pbgogJChQUk9KRUNUX0RJUikvV2ViUHJvY2Vzcy9GdWxsU2NyZWVuL1dlYkZ1
bGxTY3JlZW5NYW5hZ2VyLm1lc3NhZ2VzLmluCiAkKFBST0pFQ1RfRElSKS9XZWJQcm9jZXNzL0dQ
VS9HUFVQcm9jZXNzQ29ubmVjdGlvbi5tZXNzYWdlcy5pbgorJChQUk9KRUNUX0RJUikvV2ViUHJv
Y2Vzcy9HUFUvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyLm1lc3NhZ2VzLmluCiAkKFBS
T0pFQ1RfRElSKS9XZWJQcm9jZXNzL0dlb2xvY2F0aW9uL1dlYkdlb2xvY2F0aW9uTWFuYWdlci5t
ZXNzYWdlcy5pbgogJChQUk9KRUNUX0RJUikvV2ViUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9j
ZXNzQ29ubmVjdGlvbi5tZXNzYWdlcy5pbgogJChQUk9KRUNUX0RJUikvV2ViUHJvY2Vzcy9OZXR3
b3JrL1dlYlJlc291cmNlTG9hZGVyLm1lc3NhZ2VzLmluCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L0Rlcml2ZWRTb3VyY2VzLW91dHB1dC54Y2ZpbGVsaXN0IGIvU291cmNlL1dlYktpdC9EZXJp
dmVkU291cmNlcy1vdXRwdXQueGNmaWxlbGlzdAppbmRleCAzYjFlOTQxMTcwMzhiZjBkMDRhMDc1
N2Y1ZTZkODVlMzM0YmQ3NWFlLi5jOGEzYjQ5NWMwY2U1NTQxMjk5MjM2ODExMzIwMGRhMmI5NDA3
OTI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2VzLW91dHB1dC54Y2Zp
bGVsaXN0CisrKyBiL1NvdXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMtb3V0cHV0LnhjZmlsZWxp
c3QKQEAgLTExNCw2ICsxMTQsMTIgQEAgJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3Vy
Y2VzL1dlYktpdDIvUGx1Z2luUHJveHlNZXNzYWdlc1JlcGxpZXMuaAogJChCVUlMVF9QUk9EVUNU
U19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIvUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWFQ
cm94eU1lc3NhZ2VSZWNlaXZlci5jcHAKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291
cmNlcy9XZWJLaXQyL1JlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhUHJveHlNZXNzYWdlcy5oCiAk
KEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9SZW1vdGVMYXllclRy
ZWVEcmF3aW5nQXJlYVByb3h5TWVzc2FnZXNSZXBsaWVzLmgKKyQoQlVJTFRfUFJPRFVDVFNfRElS
KS9EZXJpdmVkU291cmNlcy9XZWJLaXQyL1JlbW90ZU1lZGlhUGxheWVyTWFuYWdlck1lc3NhZ2VS
ZWNlaXZlci5jcHAKKyQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQy
L1JlbW90ZU1lZGlhUGxheWVyTWFuYWdlck1lc3NhZ2VzLmgKKyQoQlVJTFRfUFJPRFVDVFNfRElS
KS9EZXJpdmVkU291cmNlcy9XZWJLaXQyL1JlbW90ZU1lZGlhUGxheWVyTWFuYWdlck1lc3NhZ2Vz
UmVwbGllcy5oCiskKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9S
ZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eU1lc3NhZ2VSZWNlaXZlci5jcHAKKyQoQlVJTFRf
UFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQyL1JlbW90ZU1lZGlhUGxheWVyTWFu
YWdlclByb3h5TWVzc2FnZXMuaAorJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2Vz
L1dlYktpdDIvUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHlNZXNzYWdlc1JlcGxpZXMuaAog
JChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIvUmVtb3RlT2JqZWN0
UmVnaXN0cnlNZXNzYWdlUmVjZWl2ZXIuY3BwCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZl
ZFNvdXJjZXMvV2ViS2l0Mi9SZW1vdGVPYmplY3RSZWdpc3RyeU1lc3NhZ2VzLmgKICQoQlVJTFRf
UFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQyL1JlbW90ZU9iamVjdFJlZ2lzdHJ5
TWVzc2FnZXNSZXBsaWVzLmgKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJj
ZXMubWFrZSBiL1NvdXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMubWFrZQppbmRleCBiZTUyNWUx
M2M1OWJiZDE0NTZlOGYwZDQyM2JhNjQ0MWNlOGIwOGRhLi45NmYzYTJlY2VmMzExOGNlMjNmMzg3
NTFkNzJlMmFiMDgzY2Y0YWM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3Vy
Y2VzLm1ha2UKKysrIGIvU291cmNlL1dlYktpdC9EZXJpdmVkU291cmNlcy5tYWtlCkBAIC0yNCw2
ICsyNCw3IEBAIFZQQVRIID0gXAogICAgICQoV2ViS2l0MikgXAogICAgICQoV2ViS2l0MikvR1BV
UHJvY2VzcyBcCiAgICAgJChXZWJLaXQyKS9HUFVQcm9jZXNzL21hYyBcCisgICAgJChXZWJLaXQy
KS9HUFVQcm9jZXNzL21lZGlhIFwKICAgICAkKFdlYktpdDIpL05ldHdvcmtQcm9jZXNzIFwKICAg
ICAkKFdlYktpdDIpL05ldHdvcmtQcm9jZXNzL0Nvb2tpZXMgXAogICAgICQoV2ViS2l0MikvTmV0
d29ya1Byb2Nlc3MvY2FjaGUgXApAQCAtNDksNiArNTAsNyBAQCBWUEFUSCA9IFwKICAgICAkKFdl
YktpdDIpL1dlYlByb2Nlc3MvRnVsbFNjcmVlbiBcCiAgICAgJChXZWJLaXQyKS9XZWJQcm9jZXNz
L0dlb2xvY2F0aW9uIFwKICAgICAkKFdlYktpdDIpL1dlYlByb2Nlc3MvR1BVIFwKKyAgICAkKFdl
YktpdDIpL1dlYlByb2Nlc3MvR1BVL21lZGlhIFwKICAgICAkKFdlYktpdDIpL1dlYlByb2Nlc3Mv
SWNvbkRhdGFiYXNlIFwKICAgICAkKFdlYktpdDIpL1dlYlByb2Nlc3MvTWVkaWFDYWNoZSBcCiAg
ICAgJChXZWJLaXQyKS9XZWJQcm9jZXNzL01lZGlhU3RyZWFtIFwKQEAgLTEzNSw2ICsxMzcsOCBA
QCBNRVNTQUdFX1JFQ0VJVkVSUyA9IFwKICAgICBQbHVnaW5Qcm9jZXNzUHJveHkgXAogICAgIFBs
dWdpblByb3h5IFwKICAgICBSZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYVByb3h5IFwKKyAgICBS
ZW1vdGVNZWRpYVBsYXllck1hbmFnZXIgXAorICAgIFJlbW90ZU1lZGlhUGxheWVyTWFuYWdlclBy
b3h5IFwKICAgICBSZW1vdGVPYmplY3RSZWdpc3RyeSBcCiAgICAgUmVtb3RlU2Nyb2xsaW5nQ29v
cmRpbmF0b3IgXAogICAgIFJlbW90ZVdlYkluc3BlY3RvclByb3h5IFwKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcCBiL1Nv
dXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcAppbmRl
eCBiZDEzOWZlNTMzMWJjY2UzNmMzMzQzYjE1MjE3ZDAxMWYyNTI0YzM4Li40N2E5YWMzY2MxZmQ3
ZWFmZWZkZTZiOTQwM2IwY2FkY2EyYjY5YzJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQ
VVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9HUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwCkBAIC0zNSw2ICszNSw4
IEBACiAjaW5jbHVkZSAiR1BVUHJvY2Vzc1Byb3h5TWVzc2FnZXMuaCIKICNpbmNsdWRlICJMb2dn
aW5nLmgiCiAjaW5jbHVkZSAiUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWFQcm94eU1lc3NhZ2Vz
LmgiCisjaW5jbHVkZSAiUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHkuaCIKKyNpbmNsdWRl
ICJSZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eU1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiUmVt
b3RlU2Nyb2xsaW5nQ29vcmRpbmF0b3JUcmFuc2FjdGlvbi5oIgogI2luY2x1ZGUgIldlYkNvcmVB
cmd1bWVudENvZGVycy5oIgogI2luY2x1ZGUgIldlYkVycm9ycy5oIgpAQCAtNTIsNiArNTQsNyBA
QCBHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzKEdQ
VVByb2Nlc3MmIGdwdVByb2Nlc3MsIFdlYgogICAgIDogbV9jb25uZWN0aW9uKElQQzo6Q29ubmVj
dGlvbjo6Y3JlYXRlU2VydmVyQ29ubmVjdGlvbihjb25uZWN0aW9uSWRlbnRpZmllciwgKnRoaXMp
KQogICAgICwgbV9ncHVQcm9jZXNzKGdwdVByb2Nlc3MpCiAgICAgLCBtX3dlYlByb2Nlc3NJZGVu
dGlmaWVyKHdlYlByb2Nlc3NJZGVudGlmaWVyKQorICAgICwgbV9yZW1vdGVNZWRpYVBsYXllck1h
bmFnZXJQcm94eShtYWtlVW5pcXVlPFJlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5PigqdGhp
cykpCiB7CiAgICAgUkVMRUFTRV9BU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOwogICAgIG1fY29u
bmVjdGlvbi0+b3BlbigpOwpAQCAtNjEsNiArNjQsNyBAQCBHUFVDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzOjp+R1BVQ29ubmVjdGlvblRvV2ViUHJvY2VzcygpCiB7CiAgICAgUkVMRUFTRV9BU1NFUlQo
UnVuTG9vcDo6aXNNYWluKCkpOwogCisgICAgbV9yZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94
eSA9IG51bGxwdHI7CiAgICAgbV9jb25uZWN0aW9uLT5pbnZhbGlkYXRlKCk7CiB9CiAKQEAgLTc0
LDYgKzc4LDI2IEBAIHZvaWQgR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6ZGlkUmVjZWl2ZUlu
dmFsaWRNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjCiAgICAgQ1JBU0goKTsKIH0KIAor
dm9pZCBHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpkaWRSZWNlaXZlTWVzc2FnZShJUEM6OkNv
bm5lY3Rpb24mIGNvbm5lY3Rpb24sIElQQzo6RGVjb2RlciYgZGVjb2RlcikKK3sKKyAgICBpZiAo
ZGVjb2Rlci5tZXNzYWdlUmVjZWl2ZXJOYW1lKCkgPT0gTWVzc2FnZXM6OlJlbW90ZU1lZGlhUGxh
eWVyTWFuYWdlclByb3h5OjptZXNzYWdlUmVjZWl2ZXJOYW1lKCkpIHsKKyAgICAgICAgaWYgKG1f
cmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHkpCisgICAgICAgICAgICBtX3JlbW90ZU1lZGlh
UGxheWVyTWFuYWdlclByb3h5LT5kaWRSZWNlaXZlTWVzc2FnZUZyb21XZWJQcm9jZXNzKGNvbm5l
Y3Rpb24sIGRlY29kZXIpOworICAgICAgICByZXR1cm47CisgICAgfQorfQorCit2b2lkIEdQVUNv
bm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmRpZFJlY2VpdmVTeW5jTWVzc2FnZShJUEM6OkNvbm5lY3Rp
b24mIGNvbm5lY3Rpb24sIElQQzo6RGVjb2RlciYgZGVjb2Rlciwgc3RkOjp1bmlxdWVfcHRyPElQ
Qzo6RW5jb2Rlcj4mIHJlcGx5RW5jb2RlcikKK3sKKyAgICBpZiAoZGVjb2Rlci5tZXNzYWdlUmVj
ZWl2ZXJOYW1lKCkgPT0gTWVzc2FnZXM6OlJlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5Ojpt
ZXNzYWdlUmVjZWl2ZXJOYW1lKCkpIHsKKyAgICAgICAgaWYgKG1fcmVtb3RlTWVkaWFQbGF5ZXJN
YW5hZ2VyUHJveHkpCisgICAgICAgICAgICBtX3JlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5
LT5kaWRSZWNlaXZlU3luY01lc3NhZ2VGcm9tV2ViUHJvY2Vzcyhjb25uZWN0aW9uLCBkZWNvZGVy
LCByZXBseUVuY29kZXIpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgQVNTRVJUX05P
VF9SRUFDSEVEKCk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAogCiAjZW5kaWYgLy8gRU5B
QkxFKEdQVV9QUk9DRVNTKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQ
VUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVD
b25uZWN0aW9uVG9XZWJQcm9jZXNzLmgKaW5kZXggZjkwY2IyOGYyODdlY2UxZmZmZDE0NWZlMTI0
OGRiOTk3NWNlYjAyZC4uYjJmODdjOTFkNTEyYTk4YzhlZjI4NjQ1NTU4OWM2NDBjNDBjNGIyMSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3MuaAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2Vi
UHJvY2Vzcy5oCkBAIC0zNiw2ICszNiw3IEBACiBuYW1lc3BhY2UgV2ViS2l0IHsKIAogY2xhc3Mg
R1BVUHJvY2VzczsKK2NsYXNzIFJlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5OwogCiBjbGFz
cyBHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzCiAgICAgOiBwdWJsaWMgUmVmQ291bnRlZDxHUFVD
b25uZWN0aW9uVG9XZWJQcm9jZXNzPgpAQCAtNTgsMTAgKzU5LDEzIEBAIHByaXZhdGU6CiAgICAg
Ly8gSVBDOjpDb25uZWN0aW9uOjpDbGllbnQKICAgICB2b2lkIGRpZENsb3NlKElQQzo6Q29ubmVj
dGlvbiYpIG92ZXJyaWRlOwogICAgIHZvaWQgZGlkUmVjZWl2ZUludmFsaWRNZXNzYWdlKElQQzo6
Q29ubmVjdGlvbiYsIElQQzo6U3RyaW5nUmVmZXJlbmNlIG1lc3NhZ2VSZWNlaXZlck5hbWUsIElQ
Qzo6U3RyaW5nUmVmZXJlbmNlIG1lc3NhZ2VOYW1lKSBvdmVycmlkZTsKKyAgICB2b2lkIGRpZFJl
Y2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYpIG92ZXJyaWRlOwor
ICAgIHZvaWQgZGlkUmVjZWl2ZVN5bmNNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVj
b2RlciYsIHN0ZDo6dW5pcXVlX3B0cjxJUEM6OkVuY29kZXI+Jikgb3ZlcnJpZGU7CiAKICAgICBS
ZWY8SVBDOjpDb25uZWN0aW9uPiBtX2Nvbm5lY3Rpb247CiAgICAgUmVmPEdQVVByb2Nlc3M+IG1f
Z3B1UHJvY2VzczsKICAgICBjb25zdCBXZWJDb3JlOjpQcm9jZXNzSWRlbnRpZmllciBtX3dlYlBy
b2Nlc3NJZGVudGlmaWVyOworICAgIHN0ZDo6dW5pcXVlX3B0cjxSZW1vdGVNZWRpYVBsYXllck1h
bmFnZXJQcm94eT4gbV9yZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eTsKIH07CiAKIH0gLy8g
bmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21l
ZGlhL1JlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvR1BV
UHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eS5jcHAKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uMDliODc1NDA4OTNhNjk4MjYxMWE1YzI3MDliZmNiMWZmNjVkZTc3NwotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVBsYXllck1h
bmFnZXJQcm94eS5jcHAKQEAgLTAsMCArMSwyMDMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBg
YEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJ
QlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAi
Y29uZmlnLmgiCisjaW5jbHVkZSAiUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHkuaCIKKwor
I2lmIEVOQUJMRShHUFVfUFJPQ0VTUykKKworI2luY2x1ZGUgIkdQVUNvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3MuaCIKKyNpbmNsdWRlICJSZW1vdGVNZWRpYVBsYXllck1hbmFnZXJNZXNzYWdlcy5oIgor
I2luY2x1ZGUgIlJlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5TWVzc2FnZXMuaCIKKyNpbmNs
dWRlICJXZWJDb3JlQXJndW1lbnRDb2RlcnMuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL01lZGlhUGxh
eWVyLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9NZWRpYVBsYXllclByaXZhdGUuaD4KKyNpbmNsdWRl
IDx3dGYvVW5pcXVlUmVmLmg+CisKKyNkZWZpbmUgTUVTU0FHRV9DSEVDS19DT05URVhUSUQoaWRl
bnRpZmllcikgTUVTU0FHRV9DSEVDS19CQVNFKG1fcHJveGllcy5pc1ZhbGlkS2V5KGlkZW50aWZp
ZXIpLCAmbV93ZWJQcm9jZXNzQ29ubmVjdGlvbi5jb25uZWN0aW9uKCkpCisKK25hbWVzcGFjZSBX
ZWJLaXQgewordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CisKKyNpZiAhUkVMRUFTRV9MT0dfRElT
QUJMRUQKK3N0YXRpYyBSZWZQdHI8TG9nZ2VyPiYgbnVsbExvZ2dlcigpCit7CisgICAgc3RhdGlj
IE5ldmVyRGVzdHJveWVkPFJlZlB0cjxMb2dnZXI+PiBsb2dnZXI7CisgICAgcmV0dXJuIGxvZ2dl
cjsKK30KKyNlbmRpZgorCitjbGFzcyBSZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eTo6UGxh
eWVyUHJveHkKKyAgICA6IHB1YmxpYyBNZWRpYVBsYXllckNsaWVudCB7CisgICAgV1RGX01BS0Vf
RkFTVF9BTExPQ0FURUQ7CitwdWJsaWM6CisgICAgUGxheWVyUHJveHkoY29uc3QgTWVkaWFQbGF5
ZXJQcml2YXRlUmVtb3RlSWRlbnRpZmllciYgaWQsIFJlZjxJUEM6OkNvbm5lY3Rpb24+JiYgY29u
bmVjdGlvbiwgTWVkaWFQbGF5ZXJFbnVtczo6TWVkaWFFbmdpbmVJZGVudGlmaWVyIGVuZ2luZUlk
ZW50aWZpZXIpCisgICAgICAgIDogbV9pZChpZCkKKyAgICAgICAgLCBtX2Nvbm5lY3Rpb24oV1RG
TW92ZShjb25uZWN0aW9uKSkKKyAgICAgICAgLCBtX2VuZ2luZUlkZW50aWZpZXIoZW5naW5lSWRl
bnRpZmllcikKKyAgICB7CisgICAgfQorCisgICAgdmlydHVhbCB+UGxheWVyUHJveHkoKQorICAg
IHsKKyAgICB9CisKK3ByaXZhdGU6CisKKyAgICAvLyBNZWRpYVBsYXllckNsaWVudAorICAgIGNv
bnN0IFZlY3RvcjxXZWJDb3JlOjpDb250ZW50VHlwZT4mIG1lZGlhQ29udGVudFR5cGVzUmVxdWly
aW5nSGFyZHdhcmVTdXBwb3J0KCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV90eXBlc1JlcXVpcmlu
Z0hhcmR3YXJlU3VwcG9ydDsgfQorCisjaWYgIVJFTEVBU0VfTE9HX0RJU0FCTEVECisgICAgY29u
c3QgTG9nZ2VyJiBtZWRpYVBsYXllckxvZ2dlcigpIGZpbmFsCisgICAgeworICAgICAgICBpZiAo
IW51bGxMb2dnZXIoKS5nZXQoKSkgeworICAgICAgICAgICAgbnVsbExvZ2dlcigpID0gTG9nZ2Vy
OjpjcmVhdGUodGhpcyk7CisgICAgICAgICAgICBudWxsTG9nZ2VyKCktPnNldEVuYWJsZWQodGhp
cywgZmFsc2UpOworICAgICAgICB9CisKKyAgICAgICAgcmV0dXJuICpudWxsTG9nZ2VyKCkuZ2V0
KCk7CisgICAgfQorI2VuZGlmCisKK3Byb3RlY3RlZDoKKyAgICBNZWRpYVBsYXllclByaXZhdGVS
ZW1vdGVJZGVudGlmaWVyIG1faWQ7CisgICAgUmVmPElQQzo6Q29ubmVjdGlvbj4gbV9jb25uZWN0
aW9uOworICAgIHN0ZDo6dW5pcXVlX3B0cjxNZWRpYVBsYXllclByaXZhdGVJbnRlcmZhY2U+IG1f
cGxheWVyOworICAgIE1lZGlhUGxheWVyRW51bXM6Ok1lZGlhRW5naW5lSWRlbnRpZmllciBtX2Vu
Z2luZUlkZW50aWZpZXI7CisgICAgVmVjdG9yPFdlYkNvcmU6OkNvbnRlbnRUeXBlPiBtX3R5cGVz
UmVxdWlyaW5nSGFyZHdhcmVTdXBwb3J0OworfTsKKworUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2Vy
UHJveHk6OlJlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5KEdQVUNvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3MmIGNvbm5lY3Rpb24pCisgICAgOiBtX3dlYlByb2Nlc3NDb25uZWN0aW9uKGNvbm5lY3Rp
b24pCit7Cit9CisKK1JlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5Ojp+UmVtb3RlTWVkaWFQ
bGF5ZXJNYW5hZ2VyUHJveHkoKQoreworfQorCit2b2lkIFJlbW90ZU1lZGlhUGxheWVyTWFuYWdl
clByb3h5OjpjcmVhdGVNZWRpYVBsYXllcihjb25zdCBNZWRpYVBsYXllclByaXZhdGVSZW1vdGVJ
ZGVudGlmaWVyJiBpZCwgTWVkaWFQbGF5ZXJFbnVtczo6TWVkaWFFbmdpbmVJZGVudGlmaWVyIGVu
Z2luZUlkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCBzdWNjZWVkZWQpPiYm
IGNvbXBsZXRpb25IYW5kbGVyKQoreworICAgIE1FU1NBR0VfQ0hFQ0tfQ09OVEVYVElEKGlkKTsK
KworICAgIEFTU0VSVCghbV9wcm94aWVzLmNvbnRhaW5zKGlkKSk7CisgICAgbV9wcm94aWVzLmFk
ZChpZCwgbWFrZVVuaXF1ZTxQbGF5ZXJQcm94eT4oaWQsIG1fd2ViUHJvY2Vzc0Nvbm5lY3Rpb24u
Y29ubmVjdGlvbigpLCBlbmdpbmVJZGVudGlmaWVyKSk7CisKKyAgICBjb21wbGV0aW9uSGFuZGxl
cih0cnVlKTsKK30KKwordm9pZCBSZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eTo6Z2V0U3Vw
cG9ydGVkVHlwZXMoTWVkaWFQbGF5ZXJFbnVtczo6TWVkaWFFbmdpbmVJZGVudGlmaWVyIGVuZ2lu
ZUlkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoVmVjdG9yPFN0cmluZz4mJik+JiYg
Y29tcGxldGlvbkhhbmRsZXIpCit7CisgICAgYXV0byBlbmdpbmUgPSBNZWRpYVBsYXllcjo6bWVk
aWFFbmdpbmUoZW5naW5lSWRlbnRpZmllcik7CisgICAgaWYgKCFlbmdpbmUpIHsKKyAgICAgICAg
V1RGTG9nQWx3YXlzKCJGYWlsZWQgdG8gZmluZCBtZWRpYSBlbmdpbmUuIik7CisgICAgICAgIGNv
bXBsZXRpb25IYW5kbGVyKHsgfSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBIYXNo
U2V0PFN0cmluZywgQVNDSUlDYXNlSW5zZW5zaXRpdmVIYXNoPiBlbmdpbmVUeXBlczsKKyAgICBl
bmdpbmUtPmdldFN1cHBvcnRlZFR5cGVzKGVuZ2luZVR5cGVzKTsKKworICAgIFZlY3RvcjxTdHJp
bmc+IHJlc3VsdDsKKyAgICBmb3IgKGF1dG8mIHR5cGUgOiBlbmdpbmVUeXBlcykKKyAgICAgICAg
cmVzdWx0LmFwcGVuZCh0eXBlKTsKKworICAgIGNvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUocmVz
dWx0KSk7Cit9CisKK3ZvaWQgUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHk6OnN1cHBvcnRz
VHlwZShNZWRpYVBsYXllckVudW1zOjpNZWRpYUVuZ2luZUlkZW50aWZpZXIgZW5naW5lSWRlbnRp
ZmllciwgY29uc3QgV2ViQ29yZTo6TWVkaWFFbmdpbmVTdXBwb3J0UGFyYW1ldGVycyYmIHBhcmFt
ZXRlcnMsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoTWVkaWFQbGF5ZXI6OlN1cHBvcnRzVHlwZSk+
JiYgY29tcGxldGlvbkhhbmRsZXIpCit7CisgICAgYXV0byBlbmdpbmUgPSBNZWRpYVBsYXllcjo6
bWVkaWFFbmdpbmUoZW5naW5lSWRlbnRpZmllcik7CisgICAgaWYgKCFlbmdpbmUpIHsKKyAgICAg
ICAgV1RGTG9nQWx3YXlzKCJGYWlsZWQgdG8gZmluZCBtZWRpYSBlbmdpbmUuIik7CisgICAgICAg
IGNvbXBsZXRpb25IYW5kbGVyKE1lZGlhUGxheWVyOjpTdXBwb3J0c1R5cGU6OklzTm90U3VwcG9y
dGVkKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGF1dG8gcmVzdWx0ID0gZW5naW5l
LT5zdXBwb3J0c1R5cGVBbmRDb2RlY3MocGFyYW1ldGVycyk7CisgICAgY29tcGxldGlvbkhhbmRs
ZXIocmVzdWx0KTsKK30KKwordm9pZCBSZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eTo6b3Jp
Z2luc0luTWVkaWFDYWNoZShNZWRpYVBsYXllckVudW1zOjpNZWRpYUVuZ2luZUlkZW50aWZpZXIg
ZW5naW5lSWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiYgcGF0aCwgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZChWZWN0b3I8V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhPiYmKT4mJiBjb21wbGV0aW9u
SGFuZGxlcikKK3sKKyAgICBhdXRvIGVuZ2luZSA9IE1lZGlhUGxheWVyOjptZWRpYUVuZ2luZShl
bmdpbmVJZGVudGlmaWVyKTsKKyAgICBpZiAoIWVuZ2luZSkgeworICAgICAgICBXVEZMb2dBbHdh
eXMoIkZhaWxlZCB0byBmaW5kIG1lZGlhIGVuZ2luZS4iKTsKKyAgICAgICAgY29tcGxldGlvbkhh
bmRsZXIoeyB9KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGF1dG8gb3JpZ2lucyA9
IGVuZ2luZS0+b3JpZ2luc0luTWVkaWFDYWNoZShwYXRoKTsKKworICAgIFZlY3RvcjxXZWJDb3Jl
OjpTZWN1cml0eU9yaWdpbkRhdGE+IHJlc3VsdDsKKyAgICBmb3IgKGF1dG8mIG9yaWdpbiA6IG9y
aWdpbnMpCisgICAgICAgIHJlc3VsdC5hcHBlbmQob3JpZ2luLT5kYXRhKCkpOworCisgICAgY29t
cGxldGlvbkhhbmRsZXIoV1RGTW92ZShyZXN1bHQpKTsKK30KKwordm9pZCBSZW1vdGVNZWRpYVBs
YXllck1hbmFnZXJQcm94eTo6Y2xlYXJNZWRpYUNhY2hlKE1lZGlhUGxheWVyRW51bXM6Ok1lZGlh
RW5naW5lSWRlbnRpZmllciBlbmdpbmVJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmJnBhdGgsIFdh
bGxUaW1lIG1vZGlmaWVkU2luY2UpCit7CisgICAgYXV0byBlbmdpbmUgPSBNZWRpYVBsYXllcjo6
bWVkaWFFbmdpbmUoZW5naW5lSWRlbnRpZmllcik7CisgICAgaWYgKCFlbmdpbmUpIHsKKyAgICAg
ICAgV1RGTG9nQWx3YXlzKCJGYWlsZWQgdG8gZmluZCBtZWRpYSBlbmdpbmUuIik7CisgICAgICAg
IHJldHVybjsKKyAgICB9CisKKyAgICBlbmdpbmUtPmNsZWFyTWVkaWFDYWNoZShwYXRoLCBtb2Rp
ZmllZFNpbmNlKTsKK30KKwordm9pZCBSZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eTo6Y2xl
YXJNZWRpYUNhY2hlRm9yT3JpZ2lucyhNZWRpYVBsYXllckVudW1zOjpNZWRpYUVuZ2luZUlkZW50
aWZpZXIgZW5naW5lSWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiYgcGF0aCwgVmVjdG9yPFdlYkNv
cmU6OlNlY3VyaXR5T3JpZ2luRGF0YT4mJiBvcmlnaW5EYXRhKQoreworICAgIGF1dG8gZW5naW5l
ID0gTWVkaWFQbGF5ZXI6Om1lZGlhRW5naW5lKGVuZ2luZUlkZW50aWZpZXIpOworICAgIGlmICgh
ZW5naW5lKSB7CisgICAgICAgIFdURkxvZ0Fsd2F5cygiRmFpbGVkIHRvIGZpbmQgbWVkaWEgZW5n
aW5lLiIpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgSGFzaFNldDxSZWZQdHI8U2Vj
dXJpdHlPcmlnaW4+PiBvcmlnaW5zOworICAgIGZvciAoYXV0byYgZGF0YSA6IG9yaWdpbkRhdGEp
CisgICAgICAgIG9yaWdpbnMuYWRkKGRhdGEuc2VjdXJpdHlPcmlnaW4oKSk7CisKKyAgICBlbmdp
bmUtPmNsZWFyTWVkaWFDYWNoZUZvck9yaWdpbnMocGF0aCwgb3JpZ2lucyk7Cit9CisKK3ZvaWQg
UmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHk6OnN1cHBvcnRzS2V5U3lzdGVtKE1lZGlhUGxh
eWVyRW51bXM6Ok1lZGlhRW5naW5lSWRlbnRpZmllciBlbmdpbmVJZGVudGlmaWVyLCBjb25zdCBT
dHJpbmcmJiBrZXlTeXN0ZW0sIGNvbnN0IFN0cmluZyYmIG1pbWVUeXBlLCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKGJvb2wpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQoreworICAgIGF1dG8gZW5naW5l
ID0gTWVkaWFQbGF5ZXI6Om1lZGlhRW5naW5lKGVuZ2luZUlkZW50aWZpZXIpOworICAgIGlmICgh
ZW5naW5lKSB7CisgICAgICAgIFdURkxvZ0Fsd2F5cygiRmFpbGVkIHRvIGZpbmQgbWVkaWEgZW5n
aW5lLiIpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgYXV0byByZXN1bHQgPSBlbmdp
bmUtPnN1cHBvcnRzS2V5U3lzdGVtKGtleVN5c3RlbSwgbWltZVR5cGUpOworICAgIGNvbXBsZXRp
b25IYW5kbGVyKHJlc3VsdCk7Cit9CisKK30KKworI3VuZGVmIE1FU1NBR0VfQ0hFQ0tfQ09OVEVY
VElECisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlh
L1JlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nl
c3MvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHkuaApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iNDJj
OGM1MzkzOWFjNTFiZGI3ZWM0ZDViZmIxZjA0ODhlNDM3NTI3Ci0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyTWFuYWdlclBy
b3h5LmgKQEAgLTAsMCArMSw3NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwor
ICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAq
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYg
RU5BQkxFKEdQVV9QUk9DRVNTKQorCisjaW5jbHVkZSAiQ29ubmVjdGlvbi5oIgorI2luY2x1ZGUg
Ik1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZUlkZW50aWZpZXIuaCIKKyNpbmNsdWRlICJNZXNzYWdl
UmVjZWl2ZXIuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL01lZGlhUGxheWVyLmg+CisKK25hbWVzcGFj
ZSBXZWJLaXQgeworCitjbGFzcyBHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzOworCitjbGFzcyBS
ZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eSA6IHByaXZhdGUgSVBDOjpNZXNzYWdlUmVjZWl2
ZXIgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOworcHVibGljOgorICAgIGV4cGxpY2l0
IFJlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5KEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3Mm
KTsKKyAgICB+UmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHkoKTsKKworICAgIEdQVUNvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3MmIHdlYlByb2Nlc3NDb25uZWN0aW9uKCkgY29uc3QgeyByZXR1cm4g
bV93ZWJQcm9jZXNzQ29ubmVjdGlvbjsgfQorICAgIHZvaWQgY2xlYXIoKTsKKworICAgIHZvaWQg
ZGlkUmVjZWl2ZU1lc3NhZ2VGcm9tV2ViUHJvY2VzcyhJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rp
b24sIElQQzo6RGVjb2RlciYgZGVjb2RlcikgeyBkaWRSZWNlaXZlTWVzc2FnZShjb25uZWN0aW9u
LCBkZWNvZGVyKTsgfQorICAgIHZvaWQgZGlkUmVjZWl2ZVN5bmNNZXNzYWdlRnJvbVdlYlByb2Nl
c3MoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBJUEM6OkRlY29kZXImIGRlY29kZXIsIHN0
ZDo6dW5pcXVlX3B0cjxJUEM6OkVuY29kZXI+JiBlbmNvZGVyKSB7IGRpZFJlY2VpdmVTeW5jTWVz
c2FnZShjb25uZWN0aW9uLCBkZWNvZGVyLCBlbmNvZGVyKTsgfQorCitwcml2YXRlOgorICAgIC8v
IElQQzo6TWVzc2FnZVJlY2VpdmVyCisgICAgdm9pZCBkaWRSZWNlaXZlTWVzc2FnZShJUEM6OkNv
bm5lY3Rpb24mLCBJUEM6OkRlY29kZXImKSBmaW5hbDsKKyAgICB2b2lkIGRpZFJlY2VpdmVTeW5j
TWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImLCBzdGQ6OnVuaXF1ZV9wdHI8
SVBDOjpFbmNvZGVyPiYpIGZpbmFsOworCisgICAgdm9pZCBjcmVhdGVNZWRpYVBsYXllcihjb25z
dCBNZWRpYVBsYXllclByaXZhdGVSZW1vdGVJZGVudGlmaWVyJiwgV2ViQ29yZTo6TWVkaWFQbGF5
ZXJFbnVtczo6TWVkaWFFbmdpbmVJZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJv
b2wpPiYmKTsKKworICAgIHZvaWQgZ2V0U3VwcG9ydGVkVHlwZXMoV2ViQ29yZTo6TWVkaWFQbGF5
ZXJFbnVtczo6TWVkaWFFbmdpbmVJZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFZl
Y3RvcjxTdHJpbmc+JiYpPiYmKTsKKyAgICB2b2lkIHN1cHBvcnRzVHlwZShXZWJDb3JlOjpNZWRp
YVBsYXllckVudW1zOjpNZWRpYUVuZ2luZUlkZW50aWZpZXIsIGNvbnN0IFdlYkNvcmU6Ok1lZGlh
RW5naW5lU3VwcG9ydFBhcmFtZXRlcnMmJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChXZWJDb3Jl
OjpNZWRpYVBsYXllcjo6U3VwcG9ydHNUeXBlKT4mJik7CisKKyAgICB2b2lkIG9yaWdpbnNJbk1l
ZGlhQ2FjaGUoV2ViQ29yZTo6TWVkaWFQbGF5ZXJFbnVtczo6TWVkaWFFbmdpbmVJZGVudGlmaWVy
LCBjb25zdCBTdHJpbmcmJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChWZWN0b3I8V2ViQ29yZTo6
U2VjdXJpdHlPcmlnaW5EYXRhPiYmKT4mJik7CisgICAgdm9pZCBjbGVhck1lZGlhQ2FjaGUoV2Vi
Q29yZTo6TWVkaWFQbGF5ZXJFbnVtczo6TWVkaWFFbmdpbmVJZGVudGlmaWVyLCBjb25zdCBTdHJp
bmcmJiwgV2FsbFRpbWUpOworICAgIHZvaWQgY2xlYXJNZWRpYUNhY2hlRm9yT3JpZ2lucyhXZWJD
b3JlOjpNZWRpYVBsYXllckVudW1zOjpNZWRpYUVuZ2luZUlkZW50aWZpZXIsIGNvbnN0IFN0cmlu
ZyYmLCBWZWN0b3I8V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhPiYmKTsKKyAgICB2b2lkIHN1
cHBvcnRzS2V5U3lzdGVtKFdlYkNvcmU6Ok1lZGlhUGxheWVyRW51bXM6Ok1lZGlhRW5naW5lSWRl
bnRpZmllciwgY29uc3QgU3RyaW5nJiYsIGNvbnN0IFN0cmluZyYmLCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKGJvb2wpPiYmKTsKKworICAgIGNsYXNzIFBsYXllclByb3h5OworICAgIGZyaWVuZCBj
bGFzcyBQbGF5ZXJQcm94eTsKKyAgICBIYXNoTWFwPE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZUlk
ZW50aWZpZXIsIHN0ZDo6dW5pcXVlX3B0cjxQbGF5ZXJQcm94eT4+IG1fcHJveGllczsKKyAgICBH
UFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzJiBtX3dlYlByb2Nlc3NDb25uZWN0aW9uOworfTsKKwor
fQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9S
ZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQv
R1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eS5tZXNzYWdlcy5p
bgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi4xYmZjNGM3ODJhMzE2ZTBiODYwYTdkNWJlYTA5MjA0ZWFlMDJmMzQzCi0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1l
ZGlhUGxheWVyTWFuYWdlclByb3h5Lm1lc3NhZ2VzLmluCkBAIC0wLDAgKzEsMzcgQEAKKyMgQ29w
eXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworIyBhcmUgbWV0OgorIyAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisj
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisjICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyMgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyMKKyMgVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JT
IGBgQVMgSVMnJworIyBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyMgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorIyBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklC
VVRPUlMKKyMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorIyBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorIyBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MK
KyMgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4KKyMgQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQg
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyMgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorIyBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKKyNpZiBFTkFCTEUoVklERU8pCisKK21l
c3NhZ2VzIC0+IFJlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5IE5vdFJlZkNvdW50ZWQgewor
ICAgIENyZWF0ZU1lZGlhUGxheWVyKFdlYktpdDo6TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlSWRl
bnRpZmllciBpZCwgZW51bTp1aW50OF90IFdlYkNvcmU6Ok1lZGlhUGxheWVyRW51bXM6Ok1lZGlh
RW5naW5lSWRlbnRpZmllciByZW1vdGVFbmdpbmVJZGVudGlmaWVyKSAtPiAoYm9vbCBzdWNjZXNz
KSBTeW5jaHJvbm91cworCisgICAgR2V0U3VwcG9ydGVkVHlwZXMoZW51bTp1aW50OF90IFdlYkNv
cmU6Ok1lZGlhUGxheWVyRW51bXM6Ok1lZGlhRW5naW5lSWRlbnRpZmllciByZW1vdGVFbmdpbmVJ
ZGVudGlmaWVyKSAtPiAoVmVjdG9yPFN0cmluZz4gdHlwZXMpIFN5bmNocm9ub3VzCisgICAgU3Vw
cG9ydHNUeXBlKGVudW06dWludDhfdCBXZWJDb3JlOjpNZWRpYVBsYXllckVudW1zOjpNZWRpYUVu
Z2luZUlkZW50aWZpZXIgcmVtb3RlRW5naW5lSWRlbnRpZmllciwgc3RydWN0IFdlYkNvcmU6Ok1l
ZGlhRW5naW5lU3VwcG9ydFBhcmFtZXRlcnMgdHlwZSkgLT4gKGVudW06dWludDhfdCBXZWJDb3Jl
OjpNZWRpYVBsYXllcjo6U3VwcG9ydHNUeXBlIHN1cHBvcnQpIFN5bmNocm9ub3VzCisgICAgT3Jp
Z2luc0luTWVkaWFDYWNoZShlbnVtOnVpbnQ4X3QgV2ViQ29yZTo6TWVkaWFQbGF5ZXJFbnVtczo6
TWVkaWFFbmdpbmVJZGVudGlmaWVyIHJlbW90ZUVuZ2luZUlkZW50aWZpZXIsIFN0cmluZyBwYXRo
KSAtPiAoVmVjdG9yPFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YT4gb3JpZ2lucykgU3luY2hy
b25vdXMKKyAgICBDbGVhck1lZGlhQ2FjaGUoZW51bTp1aW50OF90IFdlYkNvcmU6Ok1lZGlhUGxh
eWVyRW51bXM6Ok1lZGlhRW5naW5lSWRlbnRpZmllciByZW1vdGVFbmdpbmVJZGVudGlmaWVyLCBT
dHJpbmcgcGF0aCwgV2FsbFRpbWUgbW9kaWZpZWRTaW5jZSkKKyAgICBDbGVhck1lZGlhQ2FjaGVG
b3JPcmlnaW5zKGVudW06dWludDhfdCBXZWJDb3JlOjpNZWRpYVBsYXllckVudW1zOjpNZWRpYUVu
Z2luZUlkZW50aWZpZXIgcmVtb3RlRW5naW5lSWRlbnRpZmllciwgU3RyaW5nIHBhdGgsIFZlY3Rv
cjxXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGE+IG9yaWdpbnMpCisgICAgU3VwcG9ydHNLZXlT
eXN0ZW0oZW51bTp1aW50OF90IFdlYkNvcmU6Ok1lZGlhUGxheWVyRW51bXM6Ok1lZGlhRW5naW5l
SWRlbnRpZmllciByZW1vdGVFbmdpbmVJZGVudGlmaWVyLCBTdHJpbmcga2V5U3lzdGVtLCBTdHJp
bmcgbWltZVR5cGUpIC0+IChib29sIHN1cHBvcnRzKSBTeW5jaHJvbm91cworfQorCisjZW5kaWYK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvbWVzc2FnZXMucHkgYi9T
b3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5CmluZGV4IGVkMTFhYzI3MjUy
MjZlNDdhMmI1NmJjYzllY2YyMjJkYWMwMDA5YWUuLmYyZTllZDdhYjU0MDJlZjUxMTg4ZjdlOGRi
ZTM5NmJhOGFjZTBmYWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQv
bWVzc2FnZXMucHkKKysrIGIvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5w
eQpAQCAtMSw0ICsxLDQgQEAKLSMgQ29weXJpZ2h0IChDKSAyMDEwLTIwMTggQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorIyBDb3B5cmlnaHQgKEMpIDIwMTAtMjAxOSBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAjCiAjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogIyBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTIx
OSwxMCArMjE5LDExIEBAIGRlZiB0eXBlc190aGF0X2Nhbm5vdF9iZV9mb3J3YXJkX2RlY2xhcmVk
KCk6CiAgICAgICAgICdXZWJDb3JlOjpTV1NlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyJywKICAg
ICAgICAgJ1dlYktpdDo6QWN0aXZpdHlTdGF0ZUNoYW5nZUlEJywKICAgICAgICAgJ1dlYktpdDo6
TGF5ZXJIb3N0aW5nQ29udGV4dElEJywKLSAgICAgICAgJ1dlYktpdDo6VHJhbnNhY3Rpb25JRCcs
CisgICAgICAgICdXZWJLaXQ6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZUlkZW50aWZpZXInLAog
ICAgICAgICAnV2ViS2l0OjpTdG9yYWdlQXJlYUlkZW50aWZpZXInLAogICAgICAgICAnV2ViS2l0
OjpTdG9yYWdlQXJlYUltcGxJZGVudGlmaWVyJywKICAgICAgICAgJ1dlYktpdDo6U3RvcmFnZU5h
bWVzcGFjZUlkZW50aWZpZXInLAorICAgICAgICAnV2ViS2l0OjpUcmFuc2FjdGlvbklEJywKICAg
ICAgICAgJ1dlYktpdDo6VXNlckNvbnRlbnRDb250cm9sbGVySWRlbnRpZmllcicsCiAgICAgICAg
ICdXZWJLaXQ6OldlYlBhZ2VQcm94eUlkZW50aWZpZXInLAogICAgIF0pCkBAIC02MDMsNiArNjA0
LDcgQEAgZGVmIGhlYWRlcnNfZm9yX3R5cGUodHlwZSk6CiAgICAgICAgICdXZWJLaXQ6OldlYk1v
dXNlRXZlbnQnOiBbJyJXZWJFdmVudC5oIiddLAogICAgICAgICAnV2ViS2l0OjpXZWJUb3VjaEV2
ZW50JzogWyciV2ViRXZlbnQuaCInXSwKICAgICAgICAgJ1dlYktpdDo6V2ViV2hlZWxFdmVudCc6
IFsnIldlYkV2ZW50LmgiJ10sCisgICAgICAgICdXZWJDb3JlOjpNZWRpYUVuZ2luZVN1cHBvcnRQ
YXJhbWV0ZXJzJzogWyc8V2ViQ29yZS9NZWRpYVBsYXllci5oPiddLAogICAgICAgICAnc3RydWN0
IFdlYkNvcmU6OkVsZW1lbnRDb250ZXh0JzogWyc8V2ViQ29yZS9FbGVtZW50Q29udGV4dC5oPidd
LAogICAgICAgICAnc3RydWN0IFdlYktpdDo6V2ViVXNlclNjcmlwdERhdGEnOiBbJyJXZWJVc2Vy
Q29udGVudENvbnRyb2xsZXJEYXRhVHlwZXMuaCInXSwKICAgICAgICAgJ3N0cnVjdCBXZWJLaXQ6
OldlYlVzZXJTdHlsZVNoZWV0RGF0YSc6IFsnIldlYlVzZXJDb250ZW50Q29udHJvbGxlckRhdGFU
eXBlcy5oIiddLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9Tb3VyY2VzLnR4dCBiL1NvdXJj
ZS9XZWJLaXQvU291cmNlcy50eHQKaW5kZXggNWYwNGQ4YTNkYTBkZDMzZWY2YjkwNmFlYTk1ZTI5
NTBmOGRlZjZmOS4uNTQyNGU1ZGZiYjE1MjAxMGIwYjMyZDZmNWVhNmQ1MzU4OTE0ZTU2YiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9Tb3VyY2VzLnR4dAorKysgYi9Tb3VyY2UvV2ViS2l0L1Nv
dXJjZXMudHh0CkBAIC01MDAsNiArNTAwLDggQEAgV2ViUHJvY2Vzcy9NZWRpYVN0cmVhbS9NZWRp
YURldmljZVNhbmRib3hFeHRlbnNpb25zLmNwcAogV2ViUHJvY2Vzcy9NZWRpYVN0cmVhbS9Vc2Vy
TWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXIuY3BwCiAKIFdlYlByb2Nlc3MvR1BVL0dQVVBy
b2Nlc3NDb25uZWN0aW9uLmNwcAorV2ViUHJvY2Vzcy9HUFUvbWVkaWEvTWVkaWFQbGF5ZXJQcml2
YXRlUmVtb3RlLmNwcAorV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJNYW5h
Z2VyLmNwcAogCiBXZWJQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLmNw
cAogV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYkxvYWRlclN0cmF0ZWd5LmNwcApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9Tb3VyY2VzQ29jb2EudHh0IGIvU291cmNlL1dlYktpdC9Tb3VyY2VzQ29j
b2EudHh0CmluZGV4IDlkMjQyZTJhMDY0ZGZmNzJmNDljNDJmNTRkOTc4MTNjYWQ5NGQ5MmMuLmQ5
NDgzZDBhMTM5YTAwYWRhZDc3ZmE4MzdlY2M3M2VjMTc4YjljM2YgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvU291cmNlc0NvY29hLnR4dAorKysgYi9Tb3VyY2UvV2ViS2l0L1NvdXJjZXNDb2Nv
YS50eHQKQEAgLTU5LDYgKzU5LDcgQEAgTmV0d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdvcmtSVENT
b2NrZXQuY3BwCiAKIEdQVVByb2Nlc3MvaW9zL0dQVVByb2Nlc3NJT1MubW0KIEdQVVByb2Nlc3Mv
bWFjL0dQVVByb2Nlc3NNYWMubW0KK0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJN
YW5hZ2VyUHJveHkuY3BwCiBHUFVQcm9jZXNzL0VudHJ5UG9pbnQvQ29jb2EvWFBDU2VydmljZS9H
UFVTZXJ2aWNlRW50cnlQb2ludC5tbQogCiBQbGF0Zm9ybS9jZi9Nb2R1bGVDRi5jcHAKQEAgLTYy
NCw1ICs2MjUsNyBAQCBFZGl0YWJsZUltYWdlQ29udHJvbGxlck1lc3NhZ2VSZWNlaXZlci5jcHAK
IEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3NNZXNzYWdlUmVjZWl2ZXIuY3BwCiBHUFVQcm9jZXNz
UHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwCiBHUFVQcm9jZXNzTWVzc2FnZVJlY2VpdmVyLmNwcAor
Ly9SZW1vdGVNZWRpYVBsYXllck1hbmFnZXJNZXNzYWdlUmVjZWl2ZXIuY3BwCisvL1JlbW90ZU1l
ZGlhUGxheWVyTWFuYWdlclByb3h5TWVzc2FnZVJlY2VpdmVyLmNwcAogU2VydmljZVdvcmtlckZl
dGNoVGFza01lc3NhZ2VSZWNlaXZlci5jcHAKIFRleHRDaGVja2luZ0NvbnRyb2xsZXJQcm94eU1l
c3NhZ2VSZWNlaXZlci5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCmluZGV4IDQ2NmNkZTk5Y2VkYTQxYWIzZDEyNWIwMjUyYmEyOWM2YTkxZjI4
NmMuLjIxNWNmMmIzNWM0NDllOGE4YThmN2ZmM2QyYmNmNWY0NzE5Y2UzZjYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291
cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtOTEsNiArOTEs
MTMgQEAKIAkJMDc0RTc1RkUxREYyMjExOTAwRDMxOEVDIC8qIFVzZXJNZWRpYVByb2Nlc3NNYW5h
Z2VyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwNzRF
NzVGQjFERjFGRDEzMDBEMzE4RUMgLyogVXNlck1lZGlhUHJvY2Vzc01hbmFnZXIuaCAqLzsgfTsK
IAkJMDc2RTg4NEUxQTEzQ0FERjAwNUU5MEZDIC8qIEFQSUNvbnRleHRNZW51Q2xpZW50LmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwNzZFODg0RDFBMTND
QURGMDA1RTkwRkMgLyogQVBJQ29udGV4dE1lbnVDbGllbnQuaCAqLzsgfTsKIAkJMDc3MjgxMUQy
MTIzNEZGNjAwQzhFRjJFIC8qIFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlci5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNEE0MTBGNDMxOUFG
N0IyNzAwMkVCQUI1IC8qIFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlci5oICovOyB9
OworCQkwNzkyMzE0ODIzOUNCQ0I4MDA5NTk4RTIgLyogUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2Vy
UHJveHlNZXNzYWdlc1JlcGxpZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDA3OTIzMTQyMjM5Q0JDQjUwMDk1OThFMiAvKiBSZW1vdGVNZWRpYVBsYXll
ck1hbmFnZXJQcm94eU1lc3NhZ2VzUmVwbGllcy5oICovOyB9OworCQkwNzkyMzE0OTIzOUNCQ0I4
MDA5NTk4RTIgLyogUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyTWVzc2FnZVJlY2VpdmVyLmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3OTIzMTQzMjM5
Q0JDQjYwMDk1OThFMiAvKiBSZW1vdGVNZWRpYVBsYXllck1hbmFnZXJNZXNzYWdlUmVjZWl2ZXIu
Y3BwICovOyB9OworCQkwNzkyMzE0QTIzOUNCQ0I4MDA5NTk4RTIgLyogUmVtb3RlTWVkaWFQbGF5
ZXJNYW5hZ2VyTWVzc2FnZXNSZXBsaWVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSAwNzkyMzE0NDIzOUNCQ0I2MDA5NTk4RTIgLyogUmVtb3RlTWVkaWFQ
bGF5ZXJNYW5hZ2VyTWVzc2FnZXNSZXBsaWVzLmggKi87IH07CisJCTA3OTIzMTRCMjM5Q0JDQjgw
MDk1OThFMiAvKiBSZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eU1lc3NhZ2VSZWNlaXZlci5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwNzkyMzE0
NTIzOUNCQ0I3MDA5NTk4RTIgLyogUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHlNZXNzYWdl
UmVjZWl2ZXIuY3BwICovOyB9OworCQkwNzkyMzE0QzIzOUNCQ0I4MDA5NTk4RTIgLyogUmVtb3Rl
TWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHlNZXNzYWdlcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDc5MjMxNDYyMzlDQkNCNzAwOTU5OEUyIC8qIFJlbW90
ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5TWVzc2FnZXMuaCAqLzsgfTsKKwkJMDc5MjMxNEQyMzlD
QkNCODAwOTU5OEUyIC8qIFJlbW90ZU1lZGlhUGxheWVyTWFuYWdlck1lc3NhZ2VzLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwNzkyMzE0NzIzOUNCQ0I3
MDA5NTk4RTIgLyogUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyTWVzc2FnZXMuaCAqLzsgfTsKKwkJ
MDc5MjMxNEYyMzlENjIzRTAwOTU5OEUyIC8qIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZUlkZW50
aWZpZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3
OTIzMTRFMjM5RDVGNTMwMDk1OThFMiAvKiBNZWRpYVBsYXllclByaXZhdGVSZW1vdGVJZGVudGlm
aWVyLmggKi87IH07CiAJCTA3QTVFQkJDMUM3QkE0M0UwMEI5Q0E2OSAvKiBXS0ZyYW1lSGFuZGxl
UmVmLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwN0E1
RUJCQTFDN0JBNDNFMDBCOUNBNjkgLyogV0tGcmFtZUhhbmRsZVJlZi5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTBFOTdENzREMjAwRTkwMDQwMEJG
NjY0MyAvKiBTYWZlQnJvd3NpbmdTUEkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDBFOTdENzRDMjAwRThGRjMwMEJGNjY0MyAvKiBTYWZlQnJvd3NpbmdT
UEkuaCAqLzsgfTsKIAkJMEVERTg1MDMyMDA0RTc1RDAwMDMwNTYwIC8qIFdlYnNpdGVQb3BVcFBv
bGljeS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEVE
RTg1MDIyMDA0RTc0OTAwMDMwNTYwIC8qIFdlYnNpdGVQb3BVcFBvbGljeS5oICovOyB9OwpAQCAt
MTk5Nyw2ICsyMDA0LDkgQEAKIAkJMDBCOTY2MTUxOEUyNENCQTAwQ0UxRjg4IC8qIEFQSUZpbmRD
bGllbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQVBJRmluZENsaWVudC5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwMEI5NjYxNzE4RTI1QUUxMDBDRTFGODgg
LyogRmluZENsaWVudC5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9
IEZpbmRDbGllbnQubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTAwQjk2NjE4MThF
MjVBRTEwMENFMUY4OCAvKiBGaW5kQ2xpZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IEZpbmRDbGllbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMDcyNUVG
QUIyMzlBRTM4NDAwQTUzOEE5IC8qIFJlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5Lm1lc3Nh
Z2VzLmluICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0g
dGV4dDsgcGF0aCA9IFJlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5Lm1lc3NhZ2VzLmluOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwNzI1RUZBQzIzOUFFMzg1MDBBNTM4QTkgLyog
UmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVtb3RlTWVk
aWFQbGF5ZXJNYW5hZ2VyUHJveHkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMDcy
NUVGQUQyMzlCMDI0NTAwQTUzOEE5IC8qIFJlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5LmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5LmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMDcyOTdGOUMxQzE3MTFFQTAwM0YwNzM1IC8q
IERldmljZUlkSGFzaFNhbHRTdG9yYWdlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IERldmljZUlkSGFzaFNhbHRTdG9yYWdlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJMDcyOTdGOUMxQzE3QkJFQTAwM0YwNzM1IC8qIFVzZXJNZWRpYVBlcm1pc3Np
b25DaGVja1Byb3h5LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFVz
ZXJNZWRpYVBlcm1pc3Npb25DaGVja1Byb3h5LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJMDcyOTdGOUQxQzE3QkJFQTAwM0YwNzM1IC8qIFVzZXJNZWRpYVBlcm1pc3Npb25DaGVj
a1Byb3h5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFVzZXJNZWRpYVBlcm1p
c3Npb25DaGVja1Byb3h5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0yMDExLDYg
KzIwMjEsMTggQEAKIAkJMDc0RTc2MDExREY3MDc1RDAwRDMxOEVDIC8qIE1lZGlhRGV2aWNlU2Fu
ZGJveEV4dGVuc2lvbnMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTWVkaWFE
ZXZpY2VTYW5kYm94RXh0ZW5zaW9ucy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkw
NzZFODg0RDFBMTNDQURGMDA1RTkwRkMgLyogQVBJQ29udGV4dE1lbnVDbGllbnQuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQVBJQ29udGV4dE1lbnVDbGllbnQuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMDc2RTg4NEYxQTEzQ0JDNjAwNUU5MEZDIC8qIEFQSUlu
amVjdGVkQnVuZGxlUGFnZUNvbnRleHRNZW51Q2xpZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IEFQSUluamVjdGVkQnVuZGxlUGFnZUNvbnRleHRNZW51Q2xpZW50Lmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTA3OTIzMTMwMjM5QjNCMEMwMDk1OThFMiAvKiBS
ZW1vdGVNZWRpYVBsYXllck1hbmFnZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUmVtb3RlTWVk
aWFQbGF5ZXJNYW5hZ2VyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMDc5MjMx
MzEyMzlCM0IwQzAwOTU5OEUyIC8qIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZS5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBNZWRpYVBsYXllclByaXZhdGVSZW1vdGUuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQkwNzkyMzEzMjIzOUIzQjBDMDA5NTk4RTIgLyogTWVkaWFQbGF5ZXJQ
cml2YXRlUmVtb3RlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZS5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwNzkyMzEzMzIzOUIzQjBDMDA5NTk4RTIg
LyogUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyLm1lc3NhZ2VzLmluICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IFJlbW90ZU1lZGlh
UGxheWVyTWFuYWdlci5tZXNzYWdlcy5pbjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
MDc5MjMxMzQyMzlCM0IwQzAwOTU5OEUyIC8qIFJlbW90ZU1lZGlhUGxheWVyTWFuYWdlci5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBSZW1vdGVNZWRpYVBsYXllck1hbmFnZXIuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJMDc5MjMxNDIyMzlDQkNCNTAwOTU5OEUyIC8qIFJlbW90ZU1lZGlhUGxh
eWVyTWFuYWdlclByb3h5TWVzc2FnZXNSZXBsaWVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IFJlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5TWVzc2FnZXNSZXBsaWVzLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTA3OTIzMTQzMjM5Q0JDQjYwMDk1OThFMiAv
KiBSZW1vdGVNZWRpYVBsYXllck1hbmFnZXJNZXNzYWdlUmVjZWl2ZXIuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyTWVzc2Fn
ZVJlY2VpdmVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMDc5MjMxNDQyMzlD
QkNCNjAwOTU5OEUyIC8qIFJlbW90ZU1lZGlhUGxheWVyTWFuYWdlck1lc3NhZ2VzUmVwbGllcy5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZW1vdGVNZWRpYVBsYXllck1hbmFn
ZXJNZXNzYWdlc1JlcGxpZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMDc5MjMx
NDUyMzlDQkNCNzAwOTU5OEUyIC8qIFJlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5TWVzc2Fn
ZVJlY2VpdmVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJlbW90
ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5TWVzc2FnZVJlY2VpdmVyLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJMDc5MjMxNDYyMzlDQkNCNzAwOTU5OEUyIC8qIFJlbW90ZU1lZGlh
UGxheWVyTWFuYWdlclByb3h5TWVzc2FnZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHlNZXNzYWdlcy5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQkwNzkyMzE0NzIzOUNCQ0I3MDA5NTk4RTIgLyogUmVtb3RlTWVk
aWFQbGF5ZXJNYW5hZ2VyTWVzc2FnZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyTWVzc2FnZXMuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJMDc5MjMxNEUyMzlENUY1MzAwOTU5OEUyIC8qIE1lZGlhUGxheWVyUHJpdmF0
ZVJlbW90ZUlkZW50aWZpZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTWVkaWFQbGF5ZXJQcml2YXRlUmVt
b3RlSWRlbnRpZmllci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwN0E1RUJCOTFD
N0JBNDNFMDBCOUNBNjkgLyogV0tGcmFtZUhhbmRsZVJlZi5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBXS0ZyYW1lSGFuZGxlUmVmLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJMDdBNUVCQkExQzdCQTQzRTAwQjlDQTY5IC8qIFdLRnJhbWVIYW5kbGVS
ZWYuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0tGcmFtZUhhbmRsZVJlZi5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwODY3RDZBNUZFODQwMzA3QzAyQUFDMDcg
LyogQXBwS2l0LmZyYW1ld29yayAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25v
d25GaWxlVHlwZSA9IHdyYXBwZXIuZnJhbWV3b3JrOyBuYW1lID0gQXBwS2l0LmZyYW1ld29yazsg
cGF0aCA9IC9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0FwcEtpdC5mcmFtZXdvcms7IHNvdXJj
ZVRyZWUgPSAiPGFic29sdXRlPiI7IH07CkBAIC01MDEzLDYgKzUwMzUsMjkgQEAKIAkJCXRhYldp
ZHRoID0gODsKIAkJCXVzZXNUYWJzID0gMDsKIAkJfTsKKwkJMDc5MjMxMkYyMzlCM0IwQzAwOTU5
OEUyIC8qIG1lZGlhICovID0geworCQkJaXNhID0gUEJYR3JvdXA7CisJCQljaGlsZHJlbiA9ICgK
KwkJCQkwNzkyMzEzMTIzOUIzQjBDMDA5NTk4RTIgLyogTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3Rl
LmNwcCAqLywKKwkJCQkwNzkyMzEzMjIzOUIzQjBDMDA5NTk4RTIgLyogTWVkaWFQbGF5ZXJQcml2
YXRlUmVtb3RlLmggKi8sCisJCQkJMDc5MjMxNEUyMzlENUY1MzAwOTU5OEUyIC8qIE1lZGlhUGxh
eWVyUHJpdmF0ZVJlbW90ZUlkZW50aWZpZXIuaCAqLywKKwkJCQkwNzkyMzEzMDIzOUIzQjBDMDA5
NTk4RTIgLyogUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyLmNwcCAqLywKKwkJCQkwNzkyMzEzNDIz
OUIzQjBDMDA5NTk4RTIgLyogUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyLmggKi8sCisJCQkJMDc5
MjMxMzMyMzlCM0IwQzAwOTU5OEUyIC8qIFJlbW90ZU1lZGlhUGxheWVyTWFuYWdlci5tZXNzYWdl
cy5pbiAqLywKKwkJCSk7CisJCQlwYXRoID0gbWVkaWE7CisJCQlzb3VyY2VUcmVlID0gIjxncm91
cD4iOworCQl9OworCQkwN0M3NUMxNzIzOTlBM0RCMDA4OEU2NUIgLyogbWVkaWEgKi8gPSB7CisJ
CQlpc2EgPSBQQlhHcm91cDsKKwkJCWNoaWxkcmVuID0gKAorCQkJCTA3MjVFRkFEMjM5QjAyNDUw
MEE1MzhBOSAvKiBSZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eS5jcHAgKi8sCisJCQkJMDcy
NUVGQUMyMzlBRTM4NTAwQTUzOEE5IC8qIFJlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5Lmgg
Ki8sCisJCQkJMDcyNUVGQUIyMzlBRTM4NDAwQTUzOEE5IC8qIFJlbW90ZU1lZGlhUGxheWVyTWFu
YWdlclByb3h5Lm1lc3NhZ2VzLmluICovLAorCQkJKTsKKwkJCXBhdGggPSBtZWRpYTsKKwkJCXNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7CisJCX07CiAJCTA4NjdENjkxRkU4NDAyOEZDMDJBQUMwNyAv
KiBXZWJLaXQyICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKQEAg
LTYxOTUsNiArNjI0MCw3IEBACiAJCTJEN0U0M0JGMjM3NTJDRDkwMEVBNUNBMCAvKiBHUFUgKi8g
PSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAorCQkJCTA3OTIzMTJGMjM5
QjNCMEMwMDk1OThFMiAvKiBtZWRpYSAqLywKIAkJCQkyRDdFNDNDMDIzNzUyQ0Q5MDBFQTVDQTAg
LyogR1BVUHJvY2Vzc0Nvbm5lY3Rpb24uY3BwICovLAogCQkJCTJEN0U0M0MzMjM3NTJDRDkwMEVB
NUNBMCAvKiBHUFVQcm9jZXNzQ29ubmVjdGlvbi5oICovLAogCQkJCTJEN0U0M0MyMjM3NTJDRDkw
MEVBNUNBMCAvKiBHUFVQcm9jZXNzQ29ubmVjdGlvbi5tZXNzYWdlcy5pbiAqLywKQEAgLTYyMDks
NiArNjI1NSw3IEBACiAJCQkJMkQ5RkIyMEQyMzc1MjA5RDAwNDlGOTM2IC8qIEVudHJ5UG9pbnQg
Ki8sCiAJCQkJMkQ5RkIyMDQyMzc1MjA5RDAwNDlGOTM2IC8qIGlvcyAqLywKIAkJCQkyRDlGQjIw
NjIzNzUyMDlEMDA0OUY5MzYgLyogbWFjICovLAorCQkJCTA3Qzc1QzE3MjM5OUEzREIwMDg4RTY1
QiAvKiBtZWRpYSAqLywKIAkJCQkyRDlGQjIwQzIzNzUyMDlEMDA0OUY5MzYgLyogR1BVQ29ubmVj
dGlvblRvV2ViUHJvY2Vzcy5jcHAgKi8sCiAJCQkJMkQ5RkIyMDAyMzc1MjA5RDAwNDlGOTM2IC8q
IEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaCAqLywKIAkJCQkyRDlGQjIwOTIzNzUyMDlEMDA0
OUY5MzYgLyogR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbiAqLywKQEAgLTkx
MjMsNiArOTE3MCwxMiBAQAogCQkJCTFBOEVGQTZGMTI1MkI4NDEwMEY3MDY3RiAvKiBQbHVnaW5Q
cm94eU1lc3NhZ2VzLmggKi8sCiAJCQkJMEZGMjRBMkIxODc5RTRCQzAwM0FCRjBDIC8qIFJlbW90
ZUxheWVyVHJlZURyYXdpbmdBcmVhUHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwICovLAogCQkJCTBG
RjI0QTJDMTg3OUU0QkMwMDNBQkYwQyAvKiBSZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYVByb3h5
TWVzc2FnZXMuaCAqLywKKwkJCQkwNzkyMzE0MzIzOUNCQ0I2MDA5NTk4RTIgLyogUmVtb3RlTWVk
aWFQbGF5ZXJNYW5hZ2VyTWVzc2FnZVJlY2VpdmVyLmNwcCAqLywKKwkJCQkwNzkyMzE0NzIzOUNC
Q0I3MDA5NTk4RTIgLyogUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyTWVzc2FnZXMuaCAqLywKKwkJ
CQkwNzkyMzE0NDIzOUNCQ0I2MDA5NTk4RTIgLyogUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyTWVz
c2FnZXNSZXBsaWVzLmggKi8sCisJCQkJMDc5MjMxNDUyMzlDQkNCNzAwOTU5OEUyIC8qIFJlbW90
ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5TWVzc2FnZVJlY2VpdmVyLmNwcCAqLywKKwkJCQkwNzky
MzE0NjIzOUNCQ0I3MDA5NTk4RTIgLyogUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHlNZXNz
YWdlcy5oICovLAorCQkJCTA3OTIzMTQyMjM5Q0JDQjUwMDk1OThFMiAvKiBSZW1vdGVNZWRpYVBs
YXllck1hbmFnZXJQcm94eU1lc3NhZ2VzUmVwbGllcy5oICovLAogCQkJCTFBQzEzMzgzMTg1OTBD
NDYwMEYzRUMwNSAvKiBSZW1vdGVPYmplY3RSZWdpc3RyeU1lc3NhZ2VSZWNlaXZlci5jcHAgKi8s
CiAJCQkJMUFDMTMzODQxODU5MEM0NjAwRjNFQzA1IC8qIFJlbW90ZU9iamVjdFJlZ2lzdHJ5TWVz
c2FnZXMuaCAqLywKIAkJCQkwRjU5NDdBNTE4N0I1MTc2MDA0Mzc4NTcgLyogUmVtb3RlU2Nyb2xs
aW5nQ29vcmRpbmF0b3JNZXNzYWdlUmVjZWl2ZXIuY3BwICovLApAQCAtOTg0MCw2ICs5ODkzLDcg
QEAKIAkJCQlCQ0M1NkY3OTExNTk5NTdEMDAxQ0NBRjkgLyogTWFjaFBvcnQuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTFBMjRCNUYzMTFGNTMxRTgwMEMzODI2OSAvKiBNYWNoVXRpbGl0aWVzLmggaW4g
SGVhZGVycyAqLywKIAkJCQlDRTFBMEJENTFBNDhFNkM2MDA1NEVGNzQgLyogTWFuYWdlZENvbmZp
Z3VyYXRpb25TUEkuaCBpbiBIZWFkZXJzICovLAorCQkJCTA3OTIzMTRGMjM5RDYyM0UwMDk1OThF
MiAvKiBNZWRpYVBsYXllclByaXZhdGVSZW1vdGVJZGVudGlmaWVyLmggaW4gSGVhZGVycyAqLywK
IAkJCQk1MTkzM0RFRjE5NjVFQjMxMDA4QUMzRUEgLyogTWVudVV0aWxpdGllcy5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJMUFDNEM4MjkxNkI4NzZBOTAwNjlEQ0NEIC8qIE1lc3NhZ2VGbGFncy5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJMUEzRUVEMTIxNjFBNTNENjAwQUVCNEY1IC8qIE1lc3NhZ2VSZWNl
aXZlci5oIGluIEhlYWRlcnMgKi8sCkBAIC0xMDAwMCw2ICsxMDA1NCwxMCBAQAogCQkJCTBGRjI2
NEEwMUExRkY5Q0MwMDFGRTc1OSAvKiBSZW1vdGVMYXllclRyZWVTY3JvbGxpbmdQZXJmb3JtYW5j
ZURhdGEuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBRjFBQzZDMTY1MTc1OUUwMEMxN0Q3RiAvKiBS
ZW1vdGVMYXllclRyZWVUcmFuc2FjdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMkRDMThGQjMy
MThBNkU5RTAwMjVBODhEIC8qIFJlbW90ZUxheWVyVHJlZVZpZXdzLmggaW4gSGVhZGVycyAqLywK
KwkJCQkwNzkyMzE0RDIzOUNCQ0I4MDA5NTk4RTIgLyogUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2Vy
TWVzc2FnZXMuaCBpbiBIZWFkZXJzICovLAorCQkJCTA3OTIzMTRBMjM5Q0JDQjgwMDk1OThFMiAv
KiBSZW1vdGVNZWRpYVBsYXllck1hbmFnZXJNZXNzYWdlc1JlcGxpZXMuaCBpbiBIZWFkZXJzICov
LAorCQkJCTA3OTIzMTRDMjM5Q0JDQjgwMDk1OThFMiAvKiBSZW1vdGVNZWRpYVBsYXllck1hbmFn
ZXJQcm94eU1lc3NhZ2VzLmggaW4gSGVhZGVycyAqLywKKwkJCQkwNzkyMzE0ODIzOUNCQ0I4MDA5
NTk4RTIgLyogUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHlNZXNzYWdlc1JlcGxpZXMuaCBp
biBIZWFkZXJzICovLAogCQkJCUUxQjc4NDcxMTYzRjI0NjkwMDA3QjY5MiAvKiBSZW1vdGVOZXR3
b3JraW5nQ29udGV4dC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUE1NzA0RkMxQkUxNzUxMTAwODc0
QUYxIC8qIFJlbW90ZU9iamVjdEludm9jYXRpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCTFBQzEz
MzgwMTg1OTBBRTQwMEYzRUMwNSAvKiBSZW1vdGVPYmplY3RSZWdpc3RyeS5oIGluIEhlYWRlcnMg
Ki8sCkBAIC0xMTY1OCw2ICsxMTcxNiw4IEBACiAJCQkJMkQ3MkExRkEyMTJCRjQ2RTAwNTE3QTIw
IC8qIFJlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJMEZG
MjRBMkQxODc5RTRCQzAwM0FCRjBDIC8qIFJlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhUHJveHlN
ZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMkRDMThGQjQyMThBNkU5RTAw
MjVBODhEIC8qIFJlbW90ZUxheWVyVHJlZVZpZXdzLm1tIGluIFNvdXJjZXMgKi8sCisJCQkJMDc5
MjMxNDkyMzlDQkNCODAwOTU5OEUyIC8qIFJlbW90ZU1lZGlhUGxheWVyTWFuYWdlck1lc3NhZ2VS
ZWNlaXZlci5jcHAgaW4gU291cmNlcyAqLywKKwkJCQkwNzkyMzE0QjIzOUNCQ0I4MDA5NTk4RTIg
LyogUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJMUFDMTMzODUxODU5MEM0NjAwRjNFQzA1IC8qIFJlbW90ZU9iamVjdFJl
Z2lzdHJ5TWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGNTk0N0E3MTg3
QjUxNzYwMDQzNzg1NyAvKiBSZW1vdGVTY3JvbGxpbmdDb29yZGluYXRvck1lc3NhZ2VSZWNlaXZl
ci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBNTVCQTgyNjFCQTI1Q0ZEMDA3Q0QzM0QgLyogUmVt
b3RlV2ViSW5zcGVjdG9yUHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8sCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL01lZGlhUGxheWVy
UHJpdmF0ZVJlbW90ZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL01l
ZGlhUGxheWVyUHJpdmF0ZVJlbW90ZS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uN2UyNDU3MTA1NTA3MjRjOGM5
MDM0N2Q3MWYzZmQ2OTgyNWMzMGExZQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9HUFUvbWVkaWEvTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlLmNwcApAQCAtMCww
ICsxLDc2OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
CisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLwor
CisjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNpZiBFTkFCTEUoR1BVX1BST0NFU1MpCisjaW5jbHVk
ZSAiTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlLmgiCisKKyNpbmNsdWRlICJMb2dnaW5nLmgiCisj
aW5jbHVkZSAiUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHlNZXNzYWdlcy5oIgorI2luY2x1
ZGUgPFdlYkNvcmUvTWVkaWFQbGF5ZXIuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL05vdEltcGxlbWVu
dGVkLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9QbGF0Zm9ybUxheWVyLmg+CisjaW5jbHVkZSA8V2Vi
Q29yZS9QbGF0Zm9ybVRpbWVSYW5nZXMuaD4KKyNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgorI2lu
Y2x1ZGUgPHd0Zi9NYWluVGhyZWFkLmg+CisjaW5jbHVkZSA8d3RmL1N0cmluZ1ByaW50U3RyZWFt
Lmg+CisjaW5jbHVkZSA8d3RmL1VSTC5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4K
KworbmFtZXNwYWNlIFdlYktpdCB7Cit1c2luZyBuYW1lc3BhY2UgUEFMOwordXNpbmcgbmFtZXNw
YWNlIFdlYkNvcmU7CisKK01lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6TWVkaWFQbGF5ZXJQcml2
YXRlUmVtb3RlKE1lZGlhUGxheWVyKiBwbGF5ZXIsIE1lZGlhUGxheWVyRW51bXM6Ok1lZGlhRW5n
aW5lSWRlbnRpZmllciBlbmdpbmVJZGVudGlmaWVyLCBNZWRpYVBsYXllclByaXZhdGVSZW1vdGVJ
ZGVudGlmaWVyIHBsYXllcklkZW50aWZpZXIsIFJlbW90ZU1lZGlhUGxheWVyTWFuYWdlciYgbWFu
YWdlcikKKyAgICA6IG1fcGxheWVyKHBsYXllcikKKyAgICAsIG1fbWFuYWdlcihtYW5hZ2VyKQor
ICAgICwgbV9yZW1vdGVFbmdpbmVJZGVudGlmaWVyKGVuZ2luZUlkZW50aWZpZXIpCisgICAgLCBt
X2lkZW50aWZpZXIocGxheWVySWRlbnRpZmllcikKKyNpZiAhUkVMRUFTRV9MT0dfRElTQUJMRUQK
KyAgICAsIG1fbG9nZ2VyKHBsYXllci0+bWVkaWFQbGF5ZXJMb2dnZXIoKSkKKyAgICAsIG1fbG9n
SWRlbnRpZmllcihwbGF5ZXItPm1lZGlhUGxheWVyTG9nSWRlbnRpZmllcigpKQorI2VuZGlmCit7
CisgICAgSU5GT19MT0coTE9HSURFTlRJRklFUik7Cit9CisKK01lZGlhUGxheWVyUHJpdmF0ZVJl
bW90ZTo6fk1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZSgpCit7CisgICAgSU5GT19MT0coTE9HSURF
TlRJRklFUik7CisgICAgbV9wbGF5ZXIgPSBudWxscHRyOworfQorCit2b2lkIE1lZGlhUGxheWVy
UHJpdmF0ZVJlbW90ZTo6TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpsb2FkKGNvbnN0IFN0cmlu
ZyYpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKworI2lmIEVOQUJMRShNRURJQV9TT1VS
Q0UpCit2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6bG9hZChjb25zdCBTdHJpbmcmLCBN
ZWRpYVNvdXJjZVByaXZhdGVDbGllbnQqKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9Cisj
ZW5kaWYKKworI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCit2b2lkIE1lZGlhUGxheWVyUHJpdmF0
ZVJlbW90ZTo6bG9hZChNZWRpYVN0cmVhbVByaXZhdGUmKQoreworICAgIG5vdEltcGxlbWVudGVk
KCk7Cit9CisjZW5kaWYKK3ZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpjYW5jZWxMb2Fk
KCkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCisKK3ZvaWQgTWVkaWFQbGF5ZXJQcml2
YXRlUmVtb3RlOjpwcmVwYXJlVG9QbGF5KCkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQor
CitQbGF0Zm9ybUxheWVyKiBNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OnBsYXRmb3JtTGF5ZXIo
KSBjb25zdAoreworICAgIHJldHVybiBudWxscHRyOworfQorCisjaWYgUExBVEZPUk0oSU9TX0ZB
TUlMWSkgfHwgKFBMQVRGT1JNKE1BQykgJiYgRU5BQkxFKFZJREVPX1BSRVNFTlRBVElPTl9NT0RF
KSkKK3ZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpzZXRWaWRlb0Z1bGxzY3JlZW5MYXll
cihQbGF0Zm9ybUxheWVyKiwgV1RGOjpGdW5jdGlvbjx2b2lkKCk+JiYpCit7CisgICAgbm90SW1w
bGVtZW50ZWQoKTsKK30KKwordm9pZCBNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OnVwZGF0ZVZp
ZGVvRnVsbHNjcmVlbklubGluZUltYWdlKCkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQor
Cit2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6c2V0VmlkZW9GdWxsc2NyZWVuRnJhbWUo
RmxvYXRSZWN0KQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKK3ZvaWQgTWVkaWFQbGF5
ZXJQcml2YXRlUmVtb3RlOjpzZXRWaWRlb0Z1bGxzY3JlZW5HcmF2aXR5KE1lZGlhUGxheWVyOjpW
aWRlb0dyYXZpdHkpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwordm9pZCBNZWRpYVBs
YXllclByaXZhdGVSZW1vdGU6OnNldFZpZGVvRnVsbHNjcmVlbk1vZGUoTWVkaWFQbGF5ZXI6OlZp
ZGVvRnVsbHNjcmVlbk1vZGUpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwordm9pZCBN
ZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OnZpZGVvRnVsbHNjcmVlblN0YW5kYnlDaGFuZ2VkKCkK
K3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorI2VuZGlmCisKKyNpZiBQTEFURk9STShJT1Nf
RkFNSUxZKQorTlNBcnJheSogTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjp0aW1lZE1ldGFkYXRh
KCkgY29uc3QKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiBudWxscHRyOwor
fQorCitTdHJpbmcgTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjphY2Nlc3NMb2coKSBjb25zdAor
eworICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIGVtcHR5U3RyaW5nKCk7Cit9CisK
K1N0cmluZyBNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OmVycm9yTG9nKCkgY29uc3QKK3sKKyAg
ICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiBlbXB0eVN0cmluZygpOworfQorI2VuZGlm
CisKK2xvbmcgTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpwbGF0Zm9ybUVycm9yQ29kZSgpIGNv
bnN0Cit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gMDsKK30KKwordm9pZCBN
ZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OnBsYXkoKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7
Cit9CisKK3ZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpwYXVzZSgpCit7CisgICAgbm90
SW1wbGVtZW50ZWQoKTsKK30KKwordm9pZCBNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OnNldEJ1
ZmZlcmluZ1BvbGljeShNZWRpYVBsYXllcjo6QnVmZmVyaW5nUG9saWN5KQoreworICAgIG5vdElt
cGxlbWVudGVkKCk7Cit9CisKK2Jvb2wgTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpzdXBwb3J0
c1BpY3R1cmVJblBpY3R1cmUoKSBjb25zdAoreworICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAg
cmV0dXJuIGZhbHNlOworfQorCitib29sIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6c3VwcG9y
dHNGdWxsc2NyZWVuKCkgY29uc3QKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVy
biBmYWxzZTsKK30KKworYm9vbCBNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OnN1cHBvcnRzU2Nh
bm5pbmcoKSBjb25zdAoreworICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIGZhbHNl
OworfQorCitib29sIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6cmVxdWlyZXNJbW1lZGlhdGVD
b21wb3NpdGluZygpIGNvbnN0Cit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4g
ZmFsc2U7Cit9CisKK2Jvb2wgTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpjYW5TYXZlTWVkaWFE
YXRhKCkgY29uc3QKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiBmYWxzZTsK
K30KKworRmxvYXRTaXplIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6bmF0dXJhbFNpemUoKSBj
b25zdAoreworICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIHsgfTsKK30KKworYm9v
bCBNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6Omhhc1ZpZGVvKCkgY29uc3QKK3sKKyAgICBub3RJ
bXBsZW1lbnRlZCgpOworICAgIHJldHVybiBmYWxzZTsKK30KKworYm9vbCBNZWRpYVBsYXllclBy
aXZhdGVSZW1vdGU6Omhhc0F1ZGlvKCkgY29uc3QKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOwor
ICAgIHJldHVybiBmYWxzZTsKK30KKwordm9pZCBNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OnNl
dFZpc2libGUoYm9vbCkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCitNZWRpYVRpbWUg
TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OmR1cmF0
aW9uTWVkaWFUaW1lKCkgY29uc3QKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVy
biBNZWRpYVRpbWU6Onplcm9UaW1lKCk7Cit9CisKK01lZGlhVGltZSBNZWRpYVBsYXllclByaXZh
dGVSZW1vdGU6OmN1cnJlbnRNZWRpYVRpbWUoKSBjb25zdAoreworICAgIG5vdEltcGxlbWVudGVk
KCk7CisgICAgcmV0dXJuIE1lZGlhVGltZTo6emVyb1RpbWUoKTsKK30KKworTWVkaWFUaW1lIE1l
ZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6Z2V0U3RhcnREYXRlKCkgY29uc3QKK3sKKyAgICBub3RJ
bXBsZW1lbnRlZCgpOworICAgIHJldHVybiBNZWRpYVRpbWU6Onplcm9UaW1lKCk7Cit9CisKK3Zv
aWQgTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpzZWVrKGNvbnN0IE1lZGlhVGltZSYpCit7Cisg
ICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwordm9pZCBNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6
OnNlZWtXaXRoVG9sZXJhbmNlKGNvbnN0IE1lZGlhVGltZSYsIGNvbnN0IE1lZGlhVGltZSYsIGNv
bnN0IE1lZGlhVGltZSYpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKworYm9vbCBNZWRp
YVBsYXllclByaXZhdGVSZW1vdGU6OnNlZWtpbmcoKSBjb25zdAoreworICAgIG5vdEltcGxlbWVu
dGVkKCk7CisgICAgcmV0dXJuIGZhbHNlOworfQorCitNZWRpYVRpbWUgTWVkaWFQbGF5ZXJQcml2
YXRlUmVtb3RlOjpzdGFydFRpbWUoKSBjb25zdAoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cisg
ICAgcmV0dXJuIE1lZGlhVGltZTo6emVyb1RpbWUoKTsKK30KKwordm9pZCBNZWRpYVBsYXllclBy
aXZhdGVSZW1vdGU6OnNldFJhdGVEb3VibGUoZG91YmxlKQoreworICAgIG5vdEltcGxlbWVudGVk
KCk7Cit9CisKK2RvdWJsZSBNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OnJhdGUoKSBjb25zdAor
eworICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIDA7Cit9CisKK3ZvaWQgTWVkaWFQ
bGF5ZXJQcml2YXRlUmVtb3RlOjpzZXRQcmVzZXJ2ZXNQaXRjaChib29sKQoreworICAgIG5vdElt
cGxlbWVudGVkKCk7Cit9CisKK2Jvb2wgTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpwYXVzZWQo
KSBjb25zdAoreworICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIGZhbHNlOworfQor
Cit2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6c2V0Vm9sdW1lRG91YmxlKGRvdWJsZSkK
K3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCit2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZVJl
bW90ZTo6c2V0TXV0ZWQoYm9vbCkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCitib29s
IE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6aGFzQ2xvc2VkQ2FwdGlvbnMoKSBjb25zdAorewor
ICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIGZhbHNlOworfQorCit2b2lkIE1lZGlh
UGxheWVyUHJpdmF0ZVJlbW90ZTo6c2V0Q2xvc2VkQ2FwdGlvbnNWaXNpYmxlKGJvb2wpCit7Cisg
ICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKworZG91YmxlIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90
ZTo6bWF4RmFzdEZvcndhcmRSYXRlKCkgY29uc3QKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOwor
ICAgIHJldHVybiAwOworfQorCitkb3VibGUgTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjptaW5G
YXN0UmV2ZXJzZVJhdGUoKSBjb25zdAoreworICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0
dXJuIDA7Cit9CisKK01lZGlhUGxheWVyOjpOZXR3b3JrU3RhdGUgTWVkaWFQbGF5ZXJQcml2YXRl
UmVtb3RlOjpuZXR3b3JrU3RhdGUoKSBjb25zdAoreworICAgIGlmIChtX2ludmFsaWQpCisgICAg
ICAgIHJldHVybiBNZWRpYVBsYXllcjo6TmV0d29ya1N0YXRlOjpGb3JtYXRFcnJvcjsKKworICAg
IG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIE1lZGlhUGxheWVyOjpOZXR3b3JrU3RhdGU6
OkVtcHR5OworfQorCitNZWRpYVBsYXllcjo6UmVhZHlTdGF0ZSBNZWRpYVBsYXllclByaXZhdGVS
ZW1vdGU6OnJlYWR5U3RhdGUoKSBjb25zdAoreworICAgIGlmIChtX2ludmFsaWQpCisgICAgICAg
IHJldHVybiBNZWRpYVBsYXllcjo6UmVhZHlTdGF0ZTo6SGF2ZU5vdGhpbmc7CisKKyAgICBub3RJ
bXBsZW1lbnRlZCgpOworICAgIHJldHVybiBNZWRpYVBsYXllcjo6UmVhZHlTdGF0ZTo6SGF2ZU5v
dGhpbmc7Cit9CisKK3N0ZDo6dW5pcXVlX3B0cjxQbGF0Zm9ybVRpbWVSYW5nZXM+IE1lZGlhUGxh
eWVyUHJpdmF0ZVJlbW90ZTo6c2Vla2FibGUoKSBjb25zdAoreworICAgIG5vdEltcGxlbWVudGVk
KCk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8UGxhdGZvcm1UaW1lUmFuZ2VzPigpOworfQorCitz
dGQ6OnVuaXF1ZV9wdHI8UGxhdGZvcm1UaW1lUmFuZ2VzPiBNZWRpYVBsYXllclByaXZhdGVSZW1v
dGU6OmJ1ZmZlcmVkKCkgY29uc3QKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVy
biBtYWtlVW5pcXVlPFBsYXRmb3JtVGltZVJhbmdlcz4oKTsKK30KKworTWVkaWFUaW1lIE1lZGlh
UGxheWVyUHJpdmF0ZVJlbW90ZTo6bWF4TWVkaWFUaW1lU2Vla2FibGUoKSBjb25zdAoreworICAg
IG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIE1lZGlhVGltZTo6emVyb1RpbWUoKTsKK30K
KworTWVkaWFUaW1lIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6bWluTWVkaWFUaW1lU2Vla2Fi
bGUoKSBjb25zdAoreworICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIE1lZGlhVGlt
ZTo6emVyb1RpbWUoKTsKK30KKworZG91YmxlIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6c2Vl
a2FibGVUaW1lUmFuZ2VzTGFzdE1vZGlmaWVkVGltZSgpIGNvbnN0Cit7CisgICAgbm90SW1wbGVt
ZW50ZWQoKTsKKyAgICByZXR1cm4gMDsKK30KKworZG91YmxlIE1lZGlhUGxheWVyUHJpdmF0ZVJl
bW90ZTo6bGl2ZVVwZGF0ZUludGVydmFsKCkgY29uc3QKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgp
OworICAgIHJldHVybiAwOworfQorCit1bnNpZ25lZCBsb25nIGxvbmcgTWVkaWFQbGF5ZXJQcml2
YXRlUmVtb3RlOjp0b3RhbEJ5dGVzKCkgY29uc3QKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOwor
ICAgIHJldHVybiAwOworfQorCitib29sIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6ZGlkTG9h
ZGluZ1Byb2dyZXNzKCkgY29uc3QKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVy
biBmYWxzZTsKK30KKwordm9pZCBNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OnNldFNpemUoY29u
c3QgSW50U2l6ZSYpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwordm9pZCBNZWRpYVBs
YXllclByaXZhdGVSZW1vdGU6OnBhaW50KEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0UmVj
dCYpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwordm9pZCBNZWRpYVBsYXllclByaXZh
dGVSZW1vdGU6OnBhaW50Q3VycmVudEZyYW1lSW5Db250ZXh0KEdyYXBoaWNzQ29udGV4dCYsIGNv
bnN0IEZsb2F0UmVjdCYpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKworYm9vbCBNZWRp
YVBsYXllclByaXZhdGVSZW1vdGU6OmNvcHlWaWRlb1RleHR1cmVUb1BsYXRmb3JtVGV4dHVyZShH
cmFwaGljc0NvbnRleHQzRCosIFBsYXRmb3JtM0RPYmplY3QsIEdDM0RlbnVtLCBHQzNEaW50LCBH
QzNEZW51bSwgR0MzRGVudW0sIEdDM0RlbnVtLCBib29sLCBib29sKQoreworICAgIG5vdEltcGxl
bWVudGVkKCk7CisgICAgcmV0dXJuIGZhbHNlOworfQorCitOYXRpdmVJbWFnZVB0ciBNZWRpYVBs
YXllclByaXZhdGVSZW1vdGU6Om5hdGl2ZUltYWdlRm9yQ3VycmVudFRpbWUoKQoreworICAgIG5v
dEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIG51bGxwdHI7Cit9CisKK3ZvaWQgTWVkaWFQbGF5
ZXJQcml2YXRlUmVtb3RlOjpzZXRQcmVsb2FkKE1lZGlhUGxheWVyOjpQcmVsb2FkKQoreworICAg
IG5vdEltcGxlbWVudGVkKCk7Cit9CisKK2Jvb2wgTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpo
YXNBdmFpbGFibGVWaWRlb0ZyYW1lKCkgY29uc3QKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOwor
ICAgIHJldHVybiBmYWxzZTsKK30KKworYm9vbCBNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OmNh
bkxvYWRQb3N0ZXIoKSBjb25zdAoreworICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJu
IGZhbHNlOworfQorCit2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6c2V0UG9zdGVyKGNv
bnN0IFN0cmluZyYpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKworI2lmIFVTRShOQVRJ
VkVfRlVMTFNDUkVFTl9WSURFTykKK3ZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjplbnRl
ckZ1bGxzY3JlZW4oKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKK3ZvaWQgTWVkaWFQ
bGF5ZXJQcml2YXRlUmVtb3RlOjpleGl0RnVsbHNjcmVlbigpCit7CisgICAgbm90SW1wbGVtZW50
ZWQoKTsKK30KKyNlbmRpZgorCisjaWYgRU5BQkxFKFdJUkVMRVNTX1BMQVlCQUNLX1RBUkdFVCkK
K1N0cmluZyBNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OndpcmVsZXNzUGxheWJhY2tUYXJnZXRO
YW1lKCkgY29uc3QKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiBlbXB0eVN0
cmluZygpOworfQorCitNZWRpYVBsYXllcjo6V2lyZWxlc3NQbGF5YmFja1RhcmdldFR5cGUgTWVk
aWFQbGF5ZXJQcml2YXRlUmVtb3RlOjp3aXJlbGVzc1BsYXliYWNrVGFyZ2V0VHlwZSgpIGNvbnN0
Cit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gTWVkaWFQbGF5ZXI6OlRhcmdl
dFR5cGVOb25lOworfQorCitib29sIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6d2lyZWxlc3NW
aWRlb1BsYXliYWNrRGlzYWJsZWQoKSBjb25zdAoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cisg
ICAgcmV0dXJuIHRydWU7Cit9CisKK3ZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpzZXRX
aXJlbGVzc1ZpZGVvUGxheWJhY2tEaXNhYmxlZChib29sKQoreworICAgIG5vdEltcGxlbWVudGVk
KCk7Cit9CisKK2Jvb2wgTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpjYW5QbGF5VG9XaXJlbGVz
c1BsYXliYWNrVGFyZ2V0KCkgY29uc3QKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJl
dHVybiBmYWxzZTsKK30KKworYm9vbCBNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OmlzQ3VycmVu
dFBsYXliYWNrVGFyZ2V0V2lyZWxlc3MoKSBjb25zdAoreworICAgIG5vdEltcGxlbWVudGVkKCk7
CisgICAgcmV0dXJuIGZhbHNlOworfQorCit2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6
c2V0V2lyZWxlc3NQbGF5YmFja1RhcmdldChSZWY8TWVkaWFQbGF5YmFja1RhcmdldD4mJikKK3sK
KyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCit2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90
ZTo6c2V0U2hvdWxkUGxheVRvUGxheWJhY2tUYXJnZXQoYm9vbCkKK3sKKyAgICBub3RJbXBsZW1l
bnRlZCgpOworfQorI2VuZGlmCisKKyNpZiBVU0UoTkFUSVZFX0ZVTExTQ1JFRU5fVklERU8pCiti
b29sIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6Y2FuRW50ZXJGdWxsc2NyZWVuKCkgY29uc3QK
K3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiBmYWxzZTsKK30KKyNlbmRpZgor
Citib29sIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6c3VwcG9ydHNBY2NlbGVyYXRlZFJlbmRl
cmluZygpIGNvbnN0Cit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gZmFsc2U7
Cit9CisKK3ZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjphY2NlbGVyYXRlZFJlbmRlcmlu
Z1N0YXRlQ2hhbmdlZCgpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKworYm9vbCBNZWRp
YVBsYXllclByaXZhdGVSZW1vdGU6OnNob3VsZE1haW50YWluQXNwZWN0UmF0aW8oKSBjb25zdAor
eworICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK3ZvaWQgTWVk
aWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpzZXRTaG91bGRNYWludGFpbkFzcGVjdFJhdGlvKGJvb2wp
Cit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKworYm9vbCBNZWRpYVBsYXllclByaXZhdGVS
ZW1vdGU6Omhhc1NpbmdsZVNlY3VyaXR5T3JpZ2luKCkgY29uc3QKK3sKKyAgICBub3RJbXBsZW1l
bnRlZCgpOworICAgIHJldHVybiBmYWxzZTsKK30KKworYm9vbCBNZWRpYVBsYXllclByaXZhdGVS
ZW1vdGU6OmRpZFBhc3NDT1JTQWNjZXNzQ2hlY2soKSBjb25zdAoreworICAgIG5vdEltcGxlbWVu
dGVkKCk7CisgICAgcmV0dXJuIGZhbHNlOworfQorCitPcHRpb25hbDxib29sPiBNZWRpYVBsYXll
clByaXZhdGVSZW1vdGU6OndvdWxkVGFpbnRPcmlnaW4oY29uc3QgU2VjdXJpdHlPcmlnaW4mKSBj
b25zdAoreworICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsK
K30KKworTWVkaWFQbGF5ZXI6Ok1vdmllTG9hZFR5cGUgTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3Rl
Ojptb3ZpZUxvYWRUeXBlKCkgY29uc3QKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJl
dHVybiBNZWRpYVBsYXllcjo6TW92aWVMb2FkVHlwZTo6VW5rbm93bjsKK30KKwordm9pZCBNZWRp
YVBsYXllclByaXZhdGVSZW1vdGU6OnByZXBhcmVGb3JSZW5kZXJpbmcoKQoreworICAgIG5vdElt
cGxlbWVudGVkKCk7Cit9CisKK01lZGlhVGltZSBNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6Om1l
ZGlhVGltZUZvclRpbWVWYWx1ZShjb25zdCBNZWRpYVRpbWUmIHRpbWVWYWx1ZSkgY29uc3QKK3sK
KyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiB0aW1lVmFsdWU7Cit9CisKK2RvdWJs
ZSBNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6Om1heGltdW1EdXJhdGlvblRvQ2FjaGVNZWRpYVRp
bWUoKSBjb25zdAoreworICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIDA7Cit9CisK
K3Vuc2lnbmVkIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6ZGVjb2RlZEZyYW1lQ291bnQoKSBj
b25zdAoreworICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIDA7Cit9CisKK3Vuc2ln
bmVkIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6ZHJvcHBlZEZyYW1lQ291bnQoKSBjb25zdAor
eworICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIDA7Cit9CisKK3Vuc2lnbmVkIE1l
ZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6YXVkaW9EZWNvZGVkQnl0ZUNvdW50KCkgY29uc3QKK3sK
KyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiAwOworfQorCit1bnNpZ25lZCBNZWRp
YVBsYXllclByaXZhdGVSZW1vdGU6OnZpZGVvRGVjb2RlZEJ5dGVDb3VudCgpIGNvbnN0Cit7Cisg
ICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gMDsKK30KKwordm9pZCBNZWRpYVBsYXll
clByaXZhdGVSZW1vdGU6OnNldFByaXZhdGVCcm93c2luZ01vZGUoYm9vbCkKK3sKKyAgICBub3RJ
bXBsZW1lbnRlZCgpOworfQorCitTdHJpbmcgTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjplbmdp
bmVEZXNjcmlwdGlvbigpIGNvbnN0Cit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1
cm4gZW1wdHlTdHJpbmcoKTsKK30KKworI2lmIEVOQUJMRShXRUJfQVVESU8pCitBdWRpb1NvdXJj
ZVByb3ZpZGVyKiBNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OmF1ZGlvU291cmNlUHJvdmlkZXIo
KQoreworICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIG51bGxwdHI7Cit9CisjZW5k
aWYKKworI2lmIEVOQUJMRShMRUdBQ1lfRU5DUllQVEVEX01FRElBKQorc3RkOjp1bmlxdWVfcHRy
PExlZ2FjeUNETVNlc3Npb24+IE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6Y3JlYXRlU2Vzc2lv
bihjb25zdCBTdHJpbmcmLCBMZWdhY3lDRE1TZXNzaW9uQ2xpZW50KikKK3sKKyAgICBub3RJbXBs
ZW1lbnRlZCgpOworICAgIHJldHVybiBudWxscHRyOworfQorCit2b2lkIE1lZGlhUGxheWVyUHJp
dmF0ZVJlbW90ZTo6c2V0Q0RNU2Vzc2lvbihMZWdhY3lDRE1TZXNzaW9uKikKK3sKKyAgICBub3RJ
bXBsZW1lbnRlZCgpOworfQorCit2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6a2V5QWRk
ZWQoKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisjZW5kaWYKKworI2lmIEVOQUJMRShF
TkNSWVBURURfTUVESUEpCit2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6Y2RtSW5zdGFu
Y2VBdHRhY2hlZChDRE1JbnN0YW5jZSYpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwor
dm9pZCBNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OmNkbUluc3RhbmNlRGV0YWNoZWQoQ0RNSW5z
dGFuY2UmKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKK3ZvaWQgTWVkaWFQbGF5ZXJQ
cml2YXRlUmVtb3RlOjphdHRlbXB0VG9EZWNyeXB0V2l0aEluc3RhbmNlKENETUluc3RhbmNlJikK
K3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCitib29sIE1lZGlhUGxheWVyUHJpdmF0ZVJl
bW90ZTo6d2FpdGluZ0ZvcktleSgpIGNvbnN0Cit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAg
ICByZXR1cm4gZmFsc2U7Cit9CisjZW5kaWYKKworI2lmIEVOQUJMRShWSURFT19UUkFDSykKK2Jv
b2wgTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpyZXF1aXJlc1RleHRUcmFja1JlcHJlc2VudGF0
aW9uKCkgY29uc3QKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiBmYWxzZTsK
K30KKwordm9pZCBNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OnNldFRleHRUcmFja1JlcHJlc2Vu
dGF0aW9uKFRleHRUcmFja1JlcHJlc2VudGF0aW9uKikKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgp
OworfQorCit2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6c3luY1RleHRUcmFja0JvdW5k
cygpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwordm9pZCBNZWRpYVBsYXllclByaXZh
dGVSZW1vdGU6OnRyYWNrc0NoYW5nZWQoKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9Cisj
ZW5kaWYKKworI2lmIFVTRShHU1RSRUFNRVIpCit2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90
ZTo6c2ltdWxhdGVBdWRpb0ludGVycnVwdGlvbigpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsK
K30KKyNlbmRpZgorCit2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6YmVnaW5TaW11bGF0
ZWRIRENQRXJyb3IoKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKK3ZvaWQgTWVkaWFQ
bGF5ZXJQcml2YXRlUmVtb3RlOjplbmRTaW11bGF0ZWRIRENQRXJyb3IoKQoreworICAgIG5vdElt
cGxlbWVudGVkKCk7Cit9CisKK1N0cmluZyBNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6Omxhbmd1
YWdlT2ZQcmltYXJ5QXVkaW9UcmFjaygpIGNvbnN0Cit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsK
KyAgICByZXR1cm4gZW1wdHlTdHJpbmcoKTsKK30KKworc2l6ZV90IE1lZGlhUGxheWVyUHJpdmF0
ZVJlbW90ZTo6ZXh0cmFNZW1vcnlDb3N0KCkgY29uc3QKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgp
OworICAgIHJldHVybiAwOworfQorCit1bnNpZ25lZCBsb25nIGxvbmcgTWVkaWFQbGF5ZXJQcml2
YXRlUmVtb3RlOjpmaWxlU2l6ZSgpIGNvbnN0Cit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAg
ICByZXR1cm4gMDsKK30KKworYm9vbCBNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OmVuZGVkKCkg
Y29uc3QKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiBmYWxzZTsKK30KKwor
T3B0aW9uYWw8VmlkZW9QbGF5YmFja1F1YWxpdHlNZXRyaWNzPiBNZWRpYVBsYXllclByaXZhdGVS
ZW1vdGU6OnZpZGVvUGxheWJhY2tRdWFsaXR5TWV0cmljcygpCit7CisgICAgbm90SW1wbGVtZW50
ZWQoKTsKKyAgICByZXR1cm4gV1RGOjpudWxsb3B0OworfQorCisjaWYgRU5BQkxFKEFWRl9DQVBU
SU9OUykKK3ZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpub3RpZnlUcmFja01vZGVDaGFu
Z2VkKCkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorI2VuZGlmCisKK3ZvaWQgTWVkaWFQ
bGF5ZXJQcml2YXRlUmVtb3RlOjpub3RpZnlBY3RpdmVTb3VyY2VCdWZmZXJzQ2hhbmdlZCgpCit7
CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwordm9pZCBNZWRpYVBsYXllclByaXZhdGVSZW1v
dGU6OnNldFNob3VsZERpc2FibGVTbGVlcChib29sKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7
Cit9CisKK3ZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjphcHBsaWNhdGlvbldpbGxSZXNp
Z25BY3RpdmUoKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKK3ZvaWQgTWVkaWFQbGF5
ZXJQcml2YXRlUmVtb3RlOjphcHBsaWNhdGlvbkRpZEJlY29tZUFjdGl2ZSgpCit7CisgICAgbm90
SW1wbGVtZW50ZWQoKTsKK30KKworYm9vbCBNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OnBlcmZv
cm1UYXNrQXRNZWRpYVRpbWUoV1RGOjpGdW5jdGlvbjx2b2lkKCk+JiYsIE1lZGlhVGltZSkKK3sK
KyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiBmYWxzZTsKK30KKworYm9vbCBNZWRp
YVBsYXllclByaXZhdGVSZW1vdGU6OnNob3VsZElnbm9yZUludHJpbnNpY1NpemUoKQoreworICAg
IG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIGZhbHNlOworfQorCisjaWYgIVJFTEVBU0Vf
TE9HX0RJU0FCTEVECitXVEZMb2dDaGFubmVsJiBNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6Omxv
Z0NoYW5uZWwoKSBjb25zdAoreworICAgIHJldHVybiBXZWJLaXQyTG9nV2ViUlRDOworfQorI2Vu
ZGlmCisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL01lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZS5o
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9NZWRpYVBsYXllclByaXZhdGVS
ZW1vdGUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi5mNWUxYTY1NTZlNjZjMTllZmVhZjUyM2M4MDBjOGNmNTZhM2Vh
OTNkCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRp
YS9NZWRpYVBsYXllclByaXZhdGVSZW1vdGUuaApAQCAtMCwwICsxLDI5OSBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMn
JyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
CisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICog
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lm
IEVOQUJMRShHUFVfUFJPQ0VTUykKKworI2luY2x1ZGUgIlJlbW90ZU1lZGlhUGxheWVyTWFuYWdl
ci5oIgorI2luY2x1ZGUgPFdlYkNvcmUvTWVkaWFQbGF5ZXJQcml2YXRlLmg+CisjaW5jbHVkZSA8
d3RmL0xvZ2dlckhlbHBlci5oPgorI2luY2x1ZGUgPHd0Zi9NZWRpYVRpbWUuaD4KKyNpbmNsdWRl
IDx3dGYvV2Vha1B0ci5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3MgTWVkaWFQbGF5
ZXJQcml2YXRlUmVtb3RlIGZpbmFsCisgICAgOiBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8TWVkaWFQ
bGF5ZXJQcml2YXRlUmVtb3RlPgorICAgICwgcHVibGljIE1lZGlhUGxheWVyUHJpdmF0ZUludGVy
ZmFjZQorI2lmICFSRUxFQVNFX0xPR19ESVNBQkxFRAorICAgICwgcHJpdmF0ZSBMb2dnZXJIZWxw
ZXIKKyNlbmRpZgoreworcHVibGljOgorICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8TWVkaWFQ
bGF5ZXJQcml2YXRlUmVtb3RlPiBjcmVhdGUoTWVkaWFQbGF5ZXIqIHBsYXllciwgTWVkaWFQbGF5
ZXJFbnVtczo6TWVkaWFFbmdpbmVJZGVudGlmaWVyIHJlbW90ZUVuZ2luZUlkZW50aWZpZXIsIE1l
ZGlhUGxheWVyUHJpdmF0ZVJlbW90ZUlkZW50aWZpZXIgaWRlbnRpZmllciwgUmVtb3RlTWVkaWFQ
bGF5ZXJNYW5hZ2VyJiBtYW5hZ2VyKQorICAgIHsKKyAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8
TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlPihwbGF5ZXIsIHJlbW90ZUVuZ2luZUlkZW50aWZpZXIs
IGlkZW50aWZpZXIsIG1hbmFnZXIpOworICAgIH0KKworICAgIGV4cGxpY2l0IE1lZGlhUGxheWVy
UHJpdmF0ZVJlbW90ZShNZWRpYVBsYXllciosIE1lZGlhUGxheWVyRW51bXM6Ok1lZGlhRW5naW5l
SWRlbnRpZmllciwgTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlSWRlbnRpZmllciwgUmVtb3RlTWVk
aWFQbGF5ZXJNYW5hZ2VyJik7CisgICAgdmlydHVhbCB+TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3Rl
KCk7CisKKyAgICB2b2lkIGludmFsaWRhdGUoKSB7IG1faW52YWxpZCA9IHRydWU7IH0KKyAgICBN
ZWRpYVBsYXllckVudW1zOjpNZWRpYUVuZ2luZUlkZW50aWZpZXIgcmVtb3RlRW5naW5lSWRlbnRp
ZmllcigpIGNvbnN0IHsgcmV0dXJuIG1fcmVtb3RlRW5naW5lSWRlbnRpZmllcjsgfQorICAgIE1l
ZGlhUGxheWVyUHJpdmF0ZVJlbW90ZUlkZW50aWZpZXIgcGxheWVySXRlbnRpZmllcigpIGNvbnN0
IHsgcmV0dXJuIG1faWRlbnRpZmllcjsgfQorCisjaWYgIVJFTEVBU0VfTE9HX0RJU0FCTEVECisg
ICAgY29uc3QgTG9nZ2VyJiBsb2dnZXIoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX2xvZ2dlci5n
ZXQoKTsgfQorICAgIGNvbnN0IGNoYXIqIGxvZ0NsYXNzTmFtZSgpIGNvbnN0IG92ZXJyaWRlIHsg
cmV0dXJuICJNZWRpYVBsYXllclByaXZhdGVSZW1vdGUiOyB9CisgICAgY29uc3Qgdm9pZCogbG9n
SWRlbnRpZmllcigpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3Qg
dm9pZCo+KG1fbG9nSWRlbnRpZmllcik7IH0KKyAgICBXVEZMb2dDaGFubmVsJiBsb2dDaGFubmVs
KCkgY29uc3QgZmluYWw7CisjZW5kaWYKKworcHJpdmF0ZToKKworICAgIHZvaWQgbG9hZChjb25z
dCBTdHJpbmcmKSBmaW5hbDsKKyNpZiBFTkFCTEUoTUVESUFfU09VUkNFKQorICAgIHZvaWQgbG9h
ZChjb25zdCBTdHJpbmcmLCBNZWRpYVNvdXJjZVByaXZhdGVDbGllbnQqKSBmaW5hbDsKKyNlbmRp
ZgorI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCisgICAgdm9pZCBsb2FkKE1lZGlhU3RyZWFtUHJp
dmF0ZSYpIGZpbmFsOworI2VuZGlmCisgICAgdm9pZCBjYW5jZWxMb2FkKCkgZmluYWw7CisgICAg
CisgICAgdm9pZCBwcmVwYXJlVG9QbGF5KCkgZmluYWw7CisgICAgUGxhdGZvcm1MYXllciogcGxh
dGZvcm1MYXllcigpIGNvbnN0IGZpbmFsOworCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkgfHwg
KFBMQVRGT1JNKE1BQykgJiYgRU5BQkxFKFZJREVPX1BSRVNFTlRBVElPTl9NT0RFKSkKKyAgICB2
b2lkIHNldFZpZGVvRnVsbHNjcmVlbkxheWVyKFBsYXRmb3JtTGF5ZXIqLCBXVEY6OkZ1bmN0aW9u
PHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikgZmluYWw7CisgICAgdm9pZCB1cGRhdGVWaWRl
b0Z1bGxzY3JlZW5JbmxpbmVJbWFnZSgpIGZpbmFsOworICAgIHZvaWQgc2V0VmlkZW9GdWxsc2Ny
ZWVuRnJhbWUoRmxvYXRSZWN0KSBmaW5hbDsKKyAgICB2b2lkIHNldFZpZGVvRnVsbHNjcmVlbkdy
YXZpdHkoTWVkaWFQbGF5ZXI6OlZpZGVvR3Jhdml0eSkgZmluYWw7CisgICAgdm9pZCBzZXRWaWRl
b0Z1bGxzY3JlZW5Nb2RlKE1lZGlhUGxheWVyOjpWaWRlb0Z1bGxzY3JlZW5Nb2RlKSBmaW5hbDsK
KyAgICB2b2lkIHZpZGVvRnVsbHNjcmVlblN0YW5kYnlDaGFuZ2VkKCkgZmluYWw7CisjZW5kaWYK
KworI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCisgICAgTlNBcnJheSAqdGltZWRNZXRhZGF0YSgp
IGNvbnN0IGZpbmFsOworICAgIFN0cmluZyBhY2Nlc3NMb2coKSBjb25zdCBmaW5hbDsKKyAgICBT
dHJpbmcgZXJyb3JMb2coKSBjb25zdCBmaW5hbDsKKyNlbmRpZgorICAgIGxvbmcgcGxhdGZvcm1F
cnJvckNvZGUoKSBjb25zdCBmaW5hbDsKKworICAgIHZvaWQgcGxheSgpIGZpbmFsOworICAgIHZv
aWQgcGF1c2UoKSBmaW5hbDsKKyAgICB2b2lkIHNldEJ1ZmZlcmluZ1BvbGljeShNZWRpYVBsYXll
cjo6QnVmZmVyaW5nUG9saWN5KSBmaW5hbDsKKworICAgIGJvb2wgc3VwcG9ydHNQaWN0dXJlSW5Q
aWN0dXJlKCkgY29uc3QgZmluYWw7CisgICAgYm9vbCBzdXBwb3J0c0Z1bGxzY3JlZW4oKSBjb25z
dCBmaW5hbDsKKyAgICBib29sIHN1cHBvcnRzU2Nhbm5pbmcoKSBjb25zdCBmaW5hbDsKKyAgICBi
b29sIHJlcXVpcmVzSW1tZWRpYXRlQ29tcG9zaXRpbmcoKSBjb25zdCBmaW5hbDsKKworICAgIGJv
b2wgY2FuU2F2ZU1lZGlhRGF0YSgpIGNvbnN0IGZpbmFsOworCisgICAgRmxvYXRTaXplIG5hdHVy
YWxTaXplKCkgY29uc3QgZmluYWw7CisKKyAgICBib29sIGhhc1ZpZGVvKCkgY29uc3QgZmluYWw7
CisgICAgYm9vbCBoYXNBdWRpbygpIGNvbnN0IGZpbmFsOworCisgICAgdm9pZCBzZXRWaXNpYmxl
KGJvb2wpIGZpbmFsOworCisgICAgTWVkaWFUaW1lIGR1cmF0aW9uTWVkaWFUaW1lKCkgY29uc3Qg
ZmluYWw7CisgICAgTWVkaWFUaW1lIGN1cnJlbnRNZWRpYVRpbWUoKSBjb25zdCBmaW5hbDsKKwor
ICAgIE1lZGlhVGltZSBnZXRTdGFydERhdGUoKSBjb25zdCBmaW5hbDsKKworICAgIHZvaWQgc2Vl
ayhjb25zdCBNZWRpYVRpbWUmKSBmaW5hbDsKKyAgICB2b2lkIHNlZWtXaXRoVG9sZXJhbmNlKGNv
bnN0IE1lZGlhVGltZSYsIGNvbnN0IE1lZGlhVGltZSYsIGNvbnN0IE1lZGlhVGltZSYpIGZpbmFs
OworCisgICAgYm9vbCBzZWVraW5nKCkgY29uc3QgZmluYWw7CisKKyAgICBNZWRpYVRpbWUgc3Rh
cnRUaW1lKCkgY29uc3QgZmluYWw7CisKKyAgICB2b2lkIHNldFJhdGVEb3VibGUoZG91YmxlKSBm
aW5hbDsKKyAgICBkb3VibGUgcmF0ZSgpIGNvbnN0IGZpbmFsOworCisgICAgdm9pZCBzZXRQcmVz
ZXJ2ZXNQaXRjaChib29sKSBmaW5hbDsKKworICAgIGJvb2wgcGF1c2VkKCkgY29uc3QgZmluYWw7
CisKKyAgICB2b2lkIHNldFZvbHVtZURvdWJsZShkb3VibGUpIGZpbmFsOworCisjaWYgUExBVEZP
Uk0oSU9TX0ZBTUlMWSkgfHwgVVNFKEdTVFJFQU1FUikKKyAgICBmbG9hdCB2b2x1bWUoKSBjb25z
dCBmaW5hbCB7IHJldHVybiAxOyB9CisjZW5kaWYKKworICAgIHZvaWQgc2V0TXV0ZWQoYm9vbCkg
ZmluYWw7CisKKyAgICBib29sIGhhc0Nsb3NlZENhcHRpb25zKCkgY29uc3QgZmluYWw7CisgICAg
dm9pZCBzZXRDbG9zZWRDYXB0aW9uc1Zpc2libGUoYm9vbCkgZmluYWw7CisKKyAgICBkb3VibGUg
bWF4RmFzdEZvcndhcmRSYXRlKCkgY29uc3QgZmluYWw7CisgICAgZG91YmxlIG1pbkZhc3RSZXZl
cnNlUmF0ZSgpIGNvbnN0IGZpbmFsOworCisgICAgTWVkaWFQbGF5ZXI6Ok5ldHdvcmtTdGF0ZSBu
ZXR3b3JrU3RhdGUoKSBjb25zdCBmaW5hbDsKKyAgICBNZWRpYVBsYXllcjo6UmVhZHlTdGF0ZSBy
ZWFkeVN0YXRlKCkgY29uc3QgZmluYWw7CisKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8UGxhdGZvcm1U
aW1lUmFuZ2VzPiBzZWVrYWJsZSgpIGNvbnN0IGZpbmFsOworCisgICAgTWVkaWFUaW1lIG1heE1l
ZGlhVGltZVNlZWthYmxlKCkgY29uc3QgZmluYWw7CisgICAgTWVkaWFUaW1lIG1pbk1lZGlhVGlt
ZVNlZWthYmxlKCkgY29uc3QgZmluYWw7CisgICAgc3RkOjp1bmlxdWVfcHRyPFBsYXRmb3JtVGlt
ZVJhbmdlcz4gYnVmZmVyZWQoKSBjb25zdCBmaW5hbDsKKyAgICBkb3VibGUgc2Vla2FibGVUaW1l
UmFuZ2VzTGFzdE1vZGlmaWVkVGltZSgpIGNvbnN0IGZpbmFsOworICAgIGRvdWJsZSBsaXZlVXBk
YXRlSW50ZXJ2YWwoKSBjb25zdCBmaW5hbDsKKworICAgIHVuc2lnbmVkIGxvbmcgbG9uZyB0b3Rh
bEJ5dGVzKCkgY29uc3QgZmluYWw7CisgICAgYm9vbCBkaWRMb2FkaW5nUHJvZ3Jlc3MoKSBjb25z
dCBmaW5hbDsKKworICAgIHZvaWQgc2V0U2l6ZShjb25zdCBJbnRTaXplJikgZmluYWw7CisKKyAg
ICB2b2lkIHBhaW50KEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYpIGZpbmFsOwor
CisgICAgdm9pZCBwYWludEN1cnJlbnRGcmFtZUluQ29udGV4dChHcmFwaGljc0NvbnRleHQmLCBj
b25zdCBGbG9hdFJlY3QmKSBmaW5hbDsKKyAgICBib29sIGNvcHlWaWRlb1RleHR1cmVUb1BsYXRm
b3JtVGV4dHVyZShHcmFwaGljc0NvbnRleHQzRCosIFBsYXRmb3JtM0RPYmplY3QsIEdDM0RlbnVt
LCBHQzNEaW50LCBHQzNEZW51bSwgR0MzRGVudW0sIEdDM0RlbnVtLCBib29sLCBib29sKSBmaW5h
bDsKKyAgICBOYXRpdmVJbWFnZVB0ciBuYXRpdmVJbWFnZUZvckN1cnJlbnRUaW1lKCkgZmluYWw7
CisKKyAgICB2b2lkIHNldFByZWxvYWQoTWVkaWFQbGF5ZXI6OlByZWxvYWQpIGZpbmFsOworCisg
ICAgYm9vbCBoYXNBdmFpbGFibGVWaWRlb0ZyYW1lKCkgY29uc3QgZmluYWw7CisKKyAgICBib29s
IGNhbkxvYWRQb3N0ZXIoKSBjb25zdCBmaW5hbDsKKyAgICB2b2lkIHNldFBvc3Rlcihjb25zdCBT
dHJpbmcmKSBmaW5hbDsKKworI2lmIFVTRShOQVRJVkVfRlVMTFNDUkVFTl9WSURFTykKKyAgICB2
b2lkIGVudGVyRnVsbHNjcmVlbigpIGZpbmFsOworICAgIHZvaWQgZXhpdEZ1bGxzY3JlZW4oKSBm
aW5hbDsKKyNlbmRpZgorCisjaWYgRU5BQkxFKFdJUkVMRVNTX1BMQVlCQUNLX1RBUkdFVCkKKyAg
ICBTdHJpbmcgd2lyZWxlc3NQbGF5YmFja1RhcmdldE5hbWUoKSBjb25zdCBmaW5hbDsKKyAgICBN
ZWRpYVBsYXllcjo6V2lyZWxlc3NQbGF5YmFja1RhcmdldFR5cGUgd2lyZWxlc3NQbGF5YmFja1Rh
cmdldFR5cGUoKSBjb25zdCBmaW5hbDsKKworICAgIGJvb2wgd2lyZWxlc3NWaWRlb1BsYXliYWNr
RGlzYWJsZWQoKSBjb25zdCBmaW5hbDsKKyAgICB2b2lkIHNldFdpcmVsZXNzVmlkZW9QbGF5YmFj
a0Rpc2FibGVkKGJvb2wpIGZpbmFsOworCisgICAgYm9vbCBjYW5QbGF5VG9XaXJlbGVzc1BsYXli
YWNrVGFyZ2V0KCkgY29uc3QgZmluYWw7CisgICAgYm9vbCBpc0N1cnJlbnRQbGF5YmFja1Rhcmdl
dFdpcmVsZXNzKCkgY29uc3QgZmluYWw7CisgICAgdm9pZCBzZXRXaXJlbGVzc1BsYXliYWNrVGFy
Z2V0KFJlZjxNZWRpYVBsYXliYWNrVGFyZ2V0PiYmKSBmaW5hbDsKKworICAgIHZvaWQgc2V0U2hv
dWxkUGxheVRvUGxheWJhY2tUYXJnZXQoYm9vbCkgZmluYWw7CisjZW5kaWYKKworI2lmIFVTRShO
QVRJVkVfRlVMTFNDUkVFTl9WSURFTykKKyAgICBib29sIGNhbkVudGVyRnVsbHNjcmVlbigpIGNv
bnN0IGZpbmFsOworI2VuZGlmCisKKyAgICBib29sIHN1cHBvcnRzQWNjZWxlcmF0ZWRSZW5kZXJp
bmcoKSBjb25zdCBmaW5hbDsKKyAgICB2b2lkIGFjY2VsZXJhdGVkUmVuZGVyaW5nU3RhdGVDaGFu
Z2VkKCkgZmluYWw7CisKKyAgICBib29sIHNob3VsZE1haW50YWluQXNwZWN0UmF0aW8oKSBjb25z
dCBmaW5hbDsKKyAgICB2b2lkIHNldFNob3VsZE1haW50YWluQXNwZWN0UmF0aW8oYm9vbCkgZmlu
YWw7CisKKyAgICBib29sIGhhc1NpbmdsZVNlY3VyaXR5T3JpZ2luKCkgY29uc3QgZmluYWw7Cisg
ICAgYm9vbCBkaWRQYXNzQ09SU0FjY2Vzc0NoZWNrKCkgY29uc3QgZmluYWw7CisgICAgT3B0aW9u
YWw8Ym9vbD4gd291bGRUYWludE9yaWdpbihjb25zdCBTZWN1cml0eU9yaWdpbiYpIGNvbnN0IGZp
bmFsOworCisgICAgTWVkaWFQbGF5ZXI6Ok1vdmllTG9hZFR5cGUgbW92aWVMb2FkVHlwZSgpIGNv
bnN0IGZpbmFsOworCisgICAgdm9pZCBwcmVwYXJlRm9yUmVuZGVyaW5nKCkgZmluYWw7CisKKyAg
ICBNZWRpYVRpbWUgbWVkaWFUaW1lRm9yVGltZVZhbHVlKGNvbnN0IE1lZGlhVGltZSYgdGltZVZh
bHVlKSBjb25zdCBmaW5hbDsKKworICAgIGRvdWJsZSBtYXhpbXVtRHVyYXRpb25Ub0NhY2hlTWVk
aWFUaW1lKCkgY29uc3QgZmluYWw7CisKKyAgICB1bnNpZ25lZCBkZWNvZGVkRnJhbWVDb3VudCgp
IGNvbnN0IGZpbmFsOworICAgIHVuc2lnbmVkIGRyb3BwZWRGcmFtZUNvdW50KCkgY29uc3QgZmlu
YWw7CisgICAgdW5zaWduZWQgYXVkaW9EZWNvZGVkQnl0ZUNvdW50KCkgY29uc3QgZmluYWw7Cisg
ICAgdW5zaWduZWQgdmlkZW9EZWNvZGVkQnl0ZUNvdW50KCkgY29uc3QgZmluYWw7CisKKyAgICB2
b2lkIHNldFByaXZhdGVCcm93c2luZ01vZGUoYm9vbCkgZmluYWw7CisgICAgU3RyaW5nIGVuZ2lu
ZURlc2NyaXB0aW9uKCkgY29uc3QgZmluYWw7CisKKyNpZiBFTkFCTEUoV0VCX0FVRElPKQorICAg
IEF1ZGlvU291cmNlUHJvdmlkZXIqIGF1ZGlvU291cmNlUHJvdmlkZXIoKSBmaW5hbDsKKyNlbmRp
ZgorCisjaWYgRU5BQkxFKExFR0FDWV9FTkNSWVBURURfTUVESUEpCisgICAgc3RkOjp1bmlxdWVf
cHRyPExlZ2FjeUNETVNlc3Npb24+IGNyZWF0ZVNlc3Npb24oY29uc3QgU3RyaW5nJiwgTGVnYWN5
Q0RNU2Vzc2lvbkNsaWVudCopIGZpbmFsOworICAgIHZvaWQgc2V0Q0RNU2Vzc2lvbihMZWdhY3lD
RE1TZXNzaW9uKikgZmluYWw7CisgICAgdm9pZCBrZXlBZGRlZCgpIGZpbmFsOworI2VuZGlmCisK
KyNpZiBFTkFCTEUoRU5DUllQVEVEX01FRElBKQorICAgIHZvaWQgY2RtSW5zdGFuY2VBdHRhY2hl
ZChDRE1JbnN0YW5jZSYpIGZpbmFsOworICAgIHZvaWQgY2RtSW5zdGFuY2VEZXRhY2hlZChDRE1J
bnN0YW5jZSYpIGZpbmFsOworICAgIHZvaWQgYXR0ZW1wdFRvRGVjcnlwdFdpdGhJbnN0YW5jZShD
RE1JbnN0YW5jZSYpIGZpbmFsOworICAgIGJvb2wgd2FpdGluZ0ZvcktleSgpIGNvbnN0IGZpbmFs
OworI2VuZGlmCisKKyNpZiBFTkFCTEUoVklERU9fVFJBQ0spCisgICAgYm9vbCByZXF1aXJlc1Rl
eHRUcmFja1JlcHJlc2VudGF0aW9uKCkgY29uc3QgZmluYWw7CisgICAgdm9pZCBzZXRUZXh0VHJh
Y2tSZXByZXNlbnRhdGlvbihUZXh0VHJhY2tSZXByZXNlbnRhdGlvbiopIGZpbmFsOworICAgIHZv
aWQgc3luY1RleHRUcmFja0JvdW5kcygpIGZpbmFsOworICAgIHZvaWQgdHJhY2tzQ2hhbmdlZCgp
IGZpbmFsOworI2VuZGlmCisKKyNpZiBVU0UoR1NUUkVBTUVSKQorICAgIHZvaWQgc2ltdWxhdGVB
dWRpb0ludGVycnVwdGlvbigpIGZpbmFsOworI2VuZGlmCisKKyAgICB2b2lkIGJlZ2luU2ltdWxh
dGVkSERDUEVycm9yKCkgZmluYWw7CisgICAgdm9pZCBlbmRTaW11bGF0ZWRIRENQRXJyb3IoKSBm
aW5hbDsKKworICAgIFN0cmluZyBsYW5ndWFnZU9mUHJpbWFyeUF1ZGlvVHJhY2soKSBjb25zdCBm
aW5hbDsKKworICAgIHNpemVfdCBleHRyYU1lbW9yeUNvc3QoKSBjb25zdCBmaW5hbDsKKworICAg
IHVuc2lnbmVkIGxvbmcgbG9uZyBmaWxlU2l6ZSgpIGNvbnN0IGZpbmFsOworCisgICAgYm9vbCBl
bmRlZCgpIGNvbnN0IGZpbmFsOworCisgICAgT3B0aW9uYWw8VmlkZW9QbGF5YmFja1F1YWxpdHlN
ZXRyaWNzPiB2aWRlb1BsYXliYWNrUXVhbGl0eU1ldHJpY3MoKSBmaW5hbDsKKworI2lmIEVOQUJM
RShBVkZfQ0FQVElPTlMpCisgICAgdm9pZCBub3RpZnlUcmFja01vZGVDaGFuZ2VkKCkgZmluYWw7
CisjZW5kaWYKKworICAgIHZvaWQgbm90aWZ5QWN0aXZlU291cmNlQnVmZmVyc0NoYW5nZWQoKSBm
aW5hbDsKKworICAgIHZvaWQgc2V0U2hvdWxkRGlzYWJsZVNsZWVwKGJvb2wpIGZpbmFsOworCisg
ICAgdm9pZCBhcHBsaWNhdGlvbldpbGxSZXNpZ25BY3RpdmUoKSBmaW5hbDsKKyAgICB2b2lkIGFw
cGxpY2F0aW9uRGlkQmVjb21lQWN0aXZlKCkgZmluYWw7CisKKyNpZiBVU0UoQVZGT1VOREFUSU9O
KQorICAgIEFWUGxheWVyICpvYmpDQVZGb3VuZGF0aW9uQVZQbGF5ZXIoKSBjb25zdCBmaW5hbCB7
IHJldHVybiBudWxscHRyOyB9CisjZW5kaWYKKworICAgIGJvb2wgcGVyZm9ybVRhc2tBdE1lZGlh
VGltZShXVEY6OkZ1bmN0aW9uPHZvaWQoKT4mJiwgTWVkaWFUaW1lKSBmaW5hbDsKKworICAgIGJv
b2wgc2hvdWxkSWdub3JlSW50cmluc2ljU2l6ZSgpIGZpbmFsOworCisgICAgTWVkaWFQbGF5ZXIq
IG1fcGxheWVyIHsgbnVsbHB0ciB9OworICAgIFJlbW90ZU1lZGlhUGxheWVyTWFuYWdlciBtX21h
bmFnZXI7CisgICAgTWVkaWFQbGF5ZXJFbnVtczo6TWVkaWFFbmdpbmVJZGVudGlmaWVyIG1fcmVt
b3RlRW5naW5lSWRlbnRpZmllcjsKKyAgICBNZWRpYVBsYXllclByaXZhdGVSZW1vdGVJZGVudGlm
aWVyIG1faWRlbnRpZmllcjsKKworI2lmICFSRUxFQVNFX0xPR19ESVNBQkxFRAorICAgIFJlZjxj
b25zdCBMb2dnZXI+IG1fbG9nZ2VyOworICAgIGNvbnN0IHZvaWQqIG1fbG9nSWRlbnRpZmllcjsK
KyNlbmRpZgorCisgICAgYm9vbCBtX2ludmFsaWQgeyBmYWxzZSB9OworfTsKKworfSAvLyBuYW1l
c3BhY2UgV2ViS2l0CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL0dQVS9tZWRpYS9NZWRpYVBsYXllclByaXZhdGVSZW1vdGVJZGVudGlmaWVyLmggYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL01lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZUlk
ZW50aWZpZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44N2U3YjhiYmFlYzM1MzRlN2RlZmQ3ODIzODYxMDE0MzIx
NzUzOGM3Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9t
ZWRpYS9NZWRpYVBsYXllclByaXZhdGVSZW1vdGVJZGVudGlmaWVyLmgKQEAgLTAsMCArMSwzNSBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlICwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgPHd0Zi9PYmplY3RJZGVu
dGlmaWVyLmg+CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitlbnVtIE1lZGlhUGxheWVyUHJpdmF0
ZVJlbW90ZUlkZW50aWZpZXJUeXBlIHsgfTsKK3VzaW5nIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90
ZUlkZW50aWZpZXIgPSBPYmplY3RJZGVudGlmaWVyPE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZUlk
ZW50aWZpZXJUeXBlPjsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVNZWRpYVBsYXllck1hbmFnZXIu
Y3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVNZWRpYVBsYXll
ck1hbmFnZXIuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjc5NGRjZjdhYzYzZmQ5ZWM0M2NhZGE1ZTgyZWM1YmY0
MDRhY2M5NDkKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BV
L21lZGlhL1JlbW90ZU1lZGlhUGxheWVyTWFuYWdlci5jcHAKQEAgLTAsMCArMSwyMDkgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBB
TkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiUmVtb3RlTWVkaWFQbGF5
ZXJNYW5hZ2VyLmgiCisKKyNpZiBFTkFCTEUoR1BVX1BST0NFU1MpCisKKyNpbmNsdWRlICJSZW1v
dGVNZWRpYVBsYXllck1hbmFnZXJNZXNzYWdlcy5oIgorI2luY2x1ZGUgIlJlbW90ZU1lZGlhUGxh
eWVyTWFuYWdlclByb3h5TWVzc2FnZXMuaCIKKyNpbmNsdWRlICJXZWJDb3JlQXJndW1lbnRDb2Rl
cnMuaCIKKyNpbmNsdWRlICJXZWJQcm9jZXNzLmgiCisjaW5jbHVkZSAiV2ViUHJvY2Vzc0NyZWF0
aW9uUGFyYW1ldGVycy5oIgorI2luY2x1ZGUgPFdlYkNvcmUvTWVkaWFQbGF5ZXIuaD4KKyNpbmNs
dWRlIDxXZWJDb3JlL05vdEltcGxlbWVudGVkLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9TZXR0aW5n
cy5oPgorI2luY2x1ZGUgPHd0Zi9Bc3NlcnRpb25zLmg+CisKK25hbWVzcGFjZSBXZWJLaXQgewor
dXNpbmcgbmFtZXNwYWNlIFBBTDsKK3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOworCitjbGFzcyBN
ZWRpYVBsYXllclJlbW90ZUZhY3RvcnkgOiBwdWJsaWMgTWVkaWFQbGF5ZXJGYWN0b3J5IHsKK3B1
YmxpYzoKKyAgICBNZWRpYVBsYXllclJlbW90ZUZhY3RvcnkoTWVkaWFQbGF5ZXJFbnVtczo6TWVk
aWFFbmdpbmVJZGVudGlmaWVyIHJlbW90ZUVuZ2luZUlkZW50aWZpZXIsIFJlbW90ZU1lZGlhUGxh
eWVyTWFuYWdlciYgbWFuYWdlcikKKyAgICAgICAgOiBtX3JlbW90ZUVuZ2luZUlkZW50aWZpZXIo
cmVtb3RlRW5naW5lSWRlbnRpZmllcikKKyAgICAgICAgLCBtX21hbmFnZXIobWFuYWdlcikKKyAg
ICB7CisgICAgfQorCisgICAgTWVkaWFQbGF5ZXJFbnVtczo6TWVkaWFFbmdpbmVJZGVudGlmaWVy
IGlkZW50aWZpZXIoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX3JlbW90ZUVuZ2luZUlkZW50aWZp
ZXI7IH07CisKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8TWVkaWFQbGF5ZXJQcml2YXRlSW50ZXJmYWNl
PiBjcmVhdGVNZWRpYUVuZ2luZVBsYXllcihNZWRpYVBsYXllciogcGxheWVyKSBjb25zdCBmaW5h
bAorICAgIHsKKyAgICAgICAgcmV0dXJuIG1fbWFuYWdlci5jcmVhdGVSZW1vdGVNZWRpYVBsYXll
cihwbGF5ZXIsIG1fcmVtb3RlRW5naW5lSWRlbnRpZmllcik7CisgICAgfQorCisgICAgdm9pZCBn
ZXRTdXBwb3J0ZWRUeXBlcyhIYXNoU2V0PFN0cmluZywgQVNDSUlDYXNlSW5zZW5zaXRpdmVIYXNo
PiYgdHlwZXMpIGNvbnN0IGZpbmFsCisgICAgeworICAgICAgICByZXR1cm4gbV9tYW5hZ2VyLmdl
dFN1cHBvcnRlZFR5cGVzKG1fcmVtb3RlRW5naW5lSWRlbnRpZmllciwgdHlwZXMpOworICAgIH0K
KworICAgIE1lZGlhUGxheWVyOjpTdXBwb3J0c1R5cGUgc3VwcG9ydHNUeXBlQW5kQ29kZWNzKGNv
bnN0IE1lZGlhRW5naW5lU3VwcG9ydFBhcmFtZXRlcnMmIHBhcmFtZXRlcnMpIGNvbnN0IGZpbmFs
CisgICAgeworICAgICAgICByZXR1cm4gbV9tYW5hZ2VyLnN1cHBvcnRzVHlwZUFuZENvZGVjcyht
X3JlbW90ZUVuZ2luZUlkZW50aWZpZXIsIHBhcmFtZXRlcnMpOworICAgIH0KKworICAgIEhhc2hT
ZXQ8UmVmUHRyPFNlY3VyaXR5T3JpZ2luPj4gb3JpZ2luc0luTWVkaWFDYWNoZShjb25zdCBTdHJp
bmcmIHBhdGgpIGNvbnN0IGZpbmFsCisgICAgeworICAgICAgICByZXR1cm4gbV9tYW5hZ2VyLm9y
aWdpbnNJbk1lZGlhQ2FjaGUobV9yZW1vdGVFbmdpbmVJZGVudGlmaWVyLCBwYXRoKTsKKyAgICB9
CisKKyAgICB2b2lkIGNsZWFyTWVkaWFDYWNoZShjb25zdCBTdHJpbmcmIHBhdGgsIFdhbGxUaW1l
IG1vZGlmaWVkU2luY2UpIGNvbnN0IGZpbmFsCisgICAgeworICAgICAgICByZXR1cm4gbV9tYW5h
Z2VyLmNsZWFyTWVkaWFDYWNoZShtX3JlbW90ZUVuZ2luZUlkZW50aWZpZXIsIHBhdGgsIG1vZGlm
aWVkU2luY2UpOworICAgIH0KKworICAgIHZvaWQgY2xlYXJNZWRpYUNhY2hlRm9yT3JpZ2lucyhj
b25zdCBTdHJpbmcmIHBhdGgsIGNvbnN0IEhhc2hTZXQ8UmVmUHRyPFNlY3VyaXR5T3JpZ2luPj4m
IG9yaWdpbnMpIGNvbnN0IGZpbmFsCisgICAgeworICAgICAgICByZXR1cm4gbV9tYW5hZ2VyLmNs
ZWFyTWVkaWFDYWNoZUZvck9yaWdpbnMobV9yZW1vdGVFbmdpbmVJZGVudGlmaWVyLCBwYXRoLCBv
cmlnaW5zKTsKKyAgICB9CisKKyAgICBib29sIHN1cHBvcnRzS2V5U3lzdGVtKGNvbnN0IFN0cmlu
ZyYga2V5U3lzdGVtLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlKSBjb25zdCBmaW5hbAorICAgIHsK
KyAgICAgICAgcmV0dXJuIG1fbWFuYWdlci5zdXBwb3J0c0tleVN5c3RlbShtX3JlbW90ZUVuZ2lu
ZUlkZW50aWZpZXIsIGtleVN5c3RlbSwgbWltZVR5cGUpOworICAgIH0KKworcHJpdmF0ZToKKyAg
ICBNZWRpYVBsYXllckVudW1zOjpNZWRpYUVuZ2luZUlkZW50aWZpZXIgbV9yZW1vdGVFbmdpbmVJ
ZGVudGlmaWVyOworICAgIFJlbW90ZU1lZGlhUGxheWVyTWFuYWdlciYgbV9tYW5hZ2VyOworfTsK
KworUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyOjpSZW1vdGVNZWRpYVBsYXllck1hbmFnZXIoV2Vi
UHJvY2VzcyYgcHJvY2VzcykKKyAgICA6IG1fcHJvY2Vzcyhwcm9jZXNzKQoreworICAgIG1fcHJv
Y2Vzcy5hZGRNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OlJlbW90ZU1lZGlhUGxheWVyTWFuYWdl
cjo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCAqdGhpcyk7Cit9CisKK1JlbW90ZU1lZGlhUGxheWVy
TWFuYWdlcjo6flJlbW90ZU1lZGlhUGxheWVyTWFuYWdlcigpCit7CisgICAgbV9wcm9jZXNzLnJl
bW92ZU1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6UmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyOjpt
ZXNzYWdlUmVjZWl2ZXJOYW1lKCkpOworfQorCitjb25zdCBjaGFyKiBSZW1vdGVNZWRpYVBsYXll
ck1hbmFnZXI6OnN1cHBsZW1lbnROYW1lKCkKK3sKKyAgICByZXR1cm4gIlJlbW90ZU1lZGlhUGxh
eWVyTWFuYWdlciI7Cit9CisKK3ZvaWQgUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyOjppbml0aWFs
aXplKGNvbnN0IFdlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMmKQoreworLy8gRklYTUU6IFVz
ZSBwYXJhbWV0ZXJzLm1lZGlhTUlNRVR5cGVzLgorfQorCitzdGQ6OnVuaXF1ZV9wdHI8TWVkaWFQ
bGF5ZXJQcml2YXRlSW50ZXJmYWNlPiBSZW1vdGVNZWRpYVBsYXllck1hbmFnZXI6OmNyZWF0ZVJl
bW90ZU1lZGlhUGxheWVyKE1lZGlhUGxheWVyKiBwbGF5ZXIsIE1lZGlhUGxheWVyRW51bXM6Ok1l
ZGlhRW5naW5lSWRlbnRpZmllciByZW1vdGVFbmdpbmVJZGVudGlmaWVyKQoreworICAgIGF1dG8g
aWQgPSBNZWRpYVBsYXllclByaXZhdGVSZW1vdGVJZGVudGlmaWVyOjpnZW5lcmF0ZSgpOworCisg
ICAgYm9vbCBoYXZlUmVtb3RlUHJveHk7CisgICAgYm9vbCBzZW5kU3VjY2VlZGVkID0gZ3B1UHJv
Y2Vzc0Nvbm5lY3Rpb24oKS5zZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlTWVkaWFQbGF5ZXJNYW5h
Z2VyUHJveHk6OkNyZWF0ZU1lZGlhUGxheWVyKGlkLCByZW1vdGVFbmdpbmVJZGVudGlmaWVyKSwg
TWVzc2FnZXM6OlJlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5OjpDcmVhdGVNZWRpYVBsYXll
cjo6UmVwbHkoaGF2ZVJlbW90ZVByb3h5KSwgMCk7CisgICAgaWYgKCFoYXZlUmVtb3RlUHJveHkg
fHwgIXNlbmRTdWNjZWVkZWQpIHsKKyAgICAgICAgV1RGTG9nQWx3YXlzKCJGYWlsZWQgdG8gY3Jl
YXRlIHJlbW90ZSBtZWRpYSBwbGF5ZXIuIik7CisgICAgICAgIHJldHVybiBudWxscHRyOworICAg
IH0KKworICAgIGF1dG8gcmVtb3RlUGxheWVyID0gTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpj
cmVhdGUocGxheWVyLCByZW1vdGVFbmdpbmVJZGVudGlmaWVyLCBpZCwgKnRoaXMpOworICAgIG1f
cGxheWVycy5hZGQoaWQsIG1ha2VXZWFrUHRyKCpyZW1vdGVQbGF5ZXIpKTsKKyAgICByZXR1cm4g
cmVtb3RlUGxheWVyOworfQorCit2b2lkIFJlbW90ZU1lZGlhUGxheWVyTWFuYWdlcjo6Z2V0U3Vw
cG9ydGVkVHlwZXMoTWVkaWFQbGF5ZXJFbnVtczo6TWVkaWFFbmdpbmVJZGVudGlmaWVyIHJlbW90
ZUVuZ2luZUlkZW50aWZpZXIsIEhhc2hTZXQ8U3RyaW5nLCBBU0NJSUNhc2VJbnNlbnNpdGl2ZUhh
c2g+JiByZXN1bHQpCit7CisgICAgLy8gRklYTUU6IHN1cHBvcnRlZCB0eXBlcyBkb24ndCBjaGFu
Z2UsIGNhY2hlIHRoZW0uCisgICAgVmVjdG9yPFN0cmluZz4gdHlwZXM7CisgICAgaWYgKCFncHVQ
cm9jZXNzQ29ubmVjdGlvbigpLnNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVNZWRpYVBsYXllck1h
bmFnZXJQcm94eTo6R2V0U3VwcG9ydGVkVHlwZXMocmVtb3RlRW5naW5lSWRlbnRpZmllciksIE1l
c3NhZ2VzOjpSZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eTo6R2V0U3VwcG9ydGVkVHlwZXM6
OlJlcGx5KHR5cGVzKSwgMCkpCisgICAgICAgIHJldHVybjsKKworICAgIHJlc3VsdCA9IEhhc2hT
ZXQ8U3RyaW5nLCBBU0NJSUNhc2VJbnNlbnNpdGl2ZUhhc2g+KCk7CisgICAgZm9yIChhdXRvJiB0
eXBlIDogdHlwZXMpCisgICAgICAgIHJlc3VsdC5hZGQodHlwZSk7Cit9CisKK01lZGlhUGxheWVy
OjpTdXBwb3J0c1R5cGUgUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyOjpzdXBwb3J0c1R5cGVBbmRD
b2RlY3MoTWVkaWFQbGF5ZXJFbnVtczo6TWVkaWFFbmdpbmVJZGVudGlmaWVyIHJlbW90ZUVuZ2lu
ZUlkZW50aWZpZXIsIGNvbnN0IFdlYkNvcmU6Ok1lZGlhRW5naW5lU3VwcG9ydFBhcmFtZXRlcnMm
IHBhcmFtZXRlcnMpCit7CisgICAgLy8gRklYTUU6IHN1cHBvcnRlZCB0eXBlcyBkb24ndCBjaGFu
Z2UsIGNhY2hlIHRoZW0uCisKKyAgICBNZWRpYVBsYXllcjo6U3VwcG9ydHNUeXBlIHJlc3VsdDsK
KyAgICBpZiAoIWdwdVByb2Nlc3NDb25uZWN0aW9uKCkuc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90
ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5OjpTdXBwb3J0c1R5cGUocmVtb3RlRW5naW5lSWRlbnRp
ZmllciwgcGFyYW1ldGVycyksIE1lc3NhZ2VzOjpSZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94
eTo6U3VwcG9ydHNUeXBlOjpSZXBseShyZXN1bHQpLCAwKSkKKyAgICAgICAgcmV0dXJuIE1lZGlh
UGxheWVyOjpTdXBwb3J0c1R5cGU6OklzTm90U3VwcG9ydGVkOworCisgICAgcmV0dXJuIHJlc3Vs
dDsKK30KKworCitib29sIFJlbW90ZU1lZGlhUGxheWVyTWFuYWdlcjo6c3VwcG9ydHNLZXlTeXN0
ZW0oTWVkaWFQbGF5ZXJFbnVtczo6TWVkaWFFbmdpbmVJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcm
IGtleVN5c3RlbSwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSkKK3sKKyAgICByZXR1cm4gZmFsc2U7
Cit9CisKKworSGFzaFNldDxSZWZQdHI8V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4+PiBSZW1vdGVN
ZWRpYVBsYXllck1hbmFnZXI6Om9yaWdpbnNJbk1lZGlhQ2FjaGUoTWVkaWFQbGF5ZXJFbnVtczo6
TWVkaWFFbmdpbmVJZGVudGlmaWVyIHJlbW90ZUVuZ2luZUlkZW50aWZpZXIsIGNvbnN0IFN0cmlu
ZyYgcGF0aCkKK3sKKyAgICBWZWN0b3I8V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhPiBvcmln
aW5EYXRhOworICAgIGlmICghZ3B1UHJvY2Vzc0Nvbm5lY3Rpb24oKS5zZW5kU3luYyhNZXNzYWdl
czo6UmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHk6Ok9yaWdpbnNJbk1lZGlhQ2FjaGUocmVt
b3RlRW5naW5lSWRlbnRpZmllciwgcGF0aCksIE1lc3NhZ2VzOjpSZW1vdGVNZWRpYVBsYXllck1h
bmFnZXJQcm94eTo6T3JpZ2luc0luTWVkaWFDYWNoZTo6UmVwbHkob3JpZ2luRGF0YSksIDApKQor
ICAgICAgICByZXR1cm4geyB9OworCisgICAgSGFzaFNldDxSZWZQdHI8U2VjdXJpdHlPcmlnaW4+
PiBvcmlnaW5zOworICAgIGZvciAoYXV0byYgZGF0YSA6IG9yaWdpbkRhdGEpCisgICAgICAgIG9y
aWdpbnMuYWRkKGRhdGEuc2VjdXJpdHlPcmlnaW4oKSk7CisKKyAgICByZXR1cm4gb3JpZ2luczsK
K30KKwordm9pZCBSZW1vdGVNZWRpYVBsYXllck1hbmFnZXI6OmNsZWFyTWVkaWFDYWNoZShNZWRp
YVBsYXllckVudW1zOjpNZWRpYUVuZ2luZUlkZW50aWZpZXIgcmVtb3RlRW5naW5lSWRlbnRpZmll
ciwgY29uc3QgU3RyaW5nJiBwYXRoLCBXYWxsVGltZSBtb2RpZmllZFNpbmNlKQoreworICAgIGdw
dVByb2Nlc3NDb25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6UmVtb3RlTWVkaWFQbGF5ZXJNYW5h
Z2VyUHJveHk6OkNsZWFyTWVkaWFDYWNoZShyZW1vdGVFbmdpbmVJZGVudGlmaWVyLCBwYXRoLCBt
b2RpZmllZFNpbmNlKSwgMCk7Cit9CisKK3ZvaWQgUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyOjpj
bGVhck1lZGlhQ2FjaGVGb3JPcmlnaW5zKE1lZGlhUGxheWVyRW51bXM6Ok1lZGlhRW5naW5lSWRl
bnRpZmllciByZW1vdGVFbmdpbmVJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIHBhdGgsIGNvbnN0
IEhhc2hTZXQ8UmVmUHRyPFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luPj4mIG9yaWdpbnMpCit7Cisg
ICAgVmVjdG9yPFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YT4gb3JpZ2luRGF0YTsKKyAgICBm
b3IgKGF1dG8mIG9yaWdpbiA6IG9yaWdpbnMpCisgICAgICAgIG9yaWdpbkRhdGEuYXBwZW5kKG9y
aWdpbi0+ZGF0YSgpKTsKKworICAgIGdwdVByb2Nlc3NDb25uZWN0aW9uKCkuc2VuZChNZXNzYWdl
czo6UmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHk6OkNsZWFyTWVkaWFDYWNoZUZvck9yaWdp
bnMocmVtb3RlRW5naW5lSWRlbnRpZmllciwgcGF0aCwgb3JpZ2luRGF0YSksIDApOworfQorCit2
b2lkIFJlbW90ZU1lZGlhUGxheWVyTWFuYWdlcjo6bmV0d29ya1N0YXRlQ2hhbmdlZChNZWRpYVBs
YXllclByaXZhdGVSZW1vdGVJZGVudGlmaWVyKQoreworfQorCit2b2lkIFJlbW90ZU1lZGlhUGxh
eWVyTWFuYWdlcjo6dXBkYXRlUHJlZmVyZW5jZXMoY29uc3QgU2V0dGluZ3MmIHNldHRpbmdzKQor
eworICAgIGF1dG8gcmVnaXN0ZXJFbmdpbmUgPSBbdGhpc10oTWVkaWFFbmdpbmVSZWdpc3RyYXIg
cmVnaXN0cmFyLCBNZWRpYVBsYXllckVudW1zOjpNZWRpYUVuZ2luZUlkZW50aWZpZXIgcmVtb3Rl
RW5naW5lSWRlbnRpZmllcikgeworICAgICAgICByZWdpc3RyYXIobWFrZVVuaXF1ZTxNZWRpYVBs
YXllclJlbW90ZUZhY3Rvcnk+KHJlbW90ZUVuZ2luZUlkZW50aWZpZXIsICp0aGlzKSk7CisgICAg
fTsKKworICAgIFJlbW90ZU1lZGlhUGxheWVyU3VwcG9ydDo6c2V0UmVnaXN0ZXJSZW1vdGVQbGF5
ZXJDYWxsYmFjayhzZXR0aW5ncy51c2VHUFVQcm9jZXNzRm9yTWVkaWEoKSA/IHJlZ2lzdGVyRW5n
aW5lIDogc3RkOjpmdW5jdGlvbjx2b2lkKE1lZGlhRW5naW5lUmVnaXN0cmFyLCBNZWRpYVBsYXll
ckVudW1zOjpNZWRpYUVuZ2luZUlkZW50aWZpZXIpPiB7IH0pOworfQorCitJUEM6OkNvbm5lY3Rp
b24mIFJlbW90ZU1lZGlhUGxheWVyTWFuYWdlcjo6Z3B1UHJvY2Vzc0Nvbm5lY3Rpb24oKSBjb25z
dAoreworICAgIHJldHVybiBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5lbnN1cmVHUFVQcm9jZXNz
Q29ubmVjdGlvbigpLmNvbm5lY3Rpb24oKTsKK30KKworfQorCisjZW5kaWYKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJNYW5h
Z2VyLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZU1lZGlhUGxh
eWVyTWFuYWdlci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmJlNWJmZjdhYTkzZTI1ZjM1YjQ4YWE0NmFlMWY4Mjgx
MjEzY2YyYzEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BV
L21lZGlhL1JlbW90ZU1lZGlhUGxheWVyTWFuYWdlci5oCkBAIC0wLDAgKzEsODYgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQg
SVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykKKworI2luY2x1
ZGUgIk1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZUlkZW50aWZpZXIuaCIKKyNpbmNsdWRlICJNZXNz
YWdlUmVjZWl2ZXIuaCIKKyNpbmNsdWRlICJTaGFyZWRNZW1vcnkuaCIKKyNpbmNsdWRlICJXZWJQ
cm9jZXNzU3VwcGxlbWVudC5oIgorI2luY2x1ZGUgPFdlYkNvcmUvTWVkaWFQbGF5ZXIuaD4KKyNp
bmNsdWRlIDx3dGYvSGFzaE1hcC5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CitjbGFzcyBNZWRp
YVBsYXllcjsKK2NsYXNzIE1lZGlhUGxheWVyUHJpdmF0ZUludGVyZmFjZTsKK2NsYXNzIFNldHRp
bmdzOworfQorCituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3MgTWVkaWFQbGF5ZXJQcml2YXRl
UmVtb3RlOworY2xhc3MgV2ViUHJvY2VzczsKKworY2xhc3MgUmVtb3RlTWVkaWFQbGF5ZXJNYW5h
Z2VyIDogcHVibGljIFdlYlByb2Nlc3NTdXBwbGVtZW50LCBwdWJsaWMgSVBDOjpNZXNzYWdlUmVj
ZWl2ZXIgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOworcHVibGljOgorICAgIGV4cGxp
Y2l0IFJlbW90ZU1lZGlhUGxheWVyTWFuYWdlcihXZWJQcm9jZXNzJik7CisgICAgflJlbW90ZU1l
ZGlhUGxheWVyTWFuYWdlcigpOworCisgICAgc3RhdGljIGNvbnN0IGNoYXIqIHN1cHBsZW1lbnRO
YW1lKCk7CisKKyAgICB2b2lkIHVwZGF0ZVByZWZlcmVuY2VzKGNvbnN0IFdlYkNvcmU6OlNldHRp
bmdzJik7CisKKyAgICBJUEM6OkNvbm5lY3Rpb24mIGdwdVByb2Nlc3NDb25uZWN0aW9uKCkgY29u
c3Q7CisKK3ByaXZhdGU6CisgICAgc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6Ok1lZGlhUGxheWVy
UHJpdmF0ZUludGVyZmFjZT4gY3JlYXRlUmVtb3RlTWVkaWFQbGF5ZXIoV2ViQ29yZTo6TWVkaWFQ
bGF5ZXIqLCBXZWJDb3JlOjpNZWRpYVBsYXllckVudW1zOjpNZWRpYUVuZ2luZUlkZW50aWZpZXIp
OworCisgICAgLy8gV2ViUHJvY2Vzc1N1cHBsZW1lbnQKKyAgICB2b2lkIGluaXRpYWxpemUoY29u
c3QgV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycyYpIGZpbmFsOworCisgICAgLy8gSVBDOjpN
ZXNzYWdlUmVjZWl2ZXIKKyAgICB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlv
biYsIElQQzo6RGVjb2RlciYpIGZpbmFsOworCisgICAgLy8gTWVzc2FnZXM6OlJlbW90ZU1lZGlh
UGxheWVyTWFuYWdlcgorICAgIHZvaWQgbmV0d29ya1N0YXRlQ2hhbmdlZChNZWRpYVBsYXllclBy
aXZhdGVSZW1vdGVJZGVudGlmaWVyKTsKKworICAgIGZyaWVuZCBjbGFzcyBNZWRpYVBsYXllclJl
bW90ZUZhY3Rvcnk7CisgICAgdm9pZCBnZXRTdXBwb3J0ZWRUeXBlcyhXZWJDb3JlOjpNZWRpYVBs
YXllckVudW1zOjpNZWRpYUVuZ2luZUlkZW50aWZpZXIsIEhhc2hTZXQ8U3RyaW5nLCBBU0NJSUNh
c2VJbnNlbnNpdGl2ZUhhc2g+Jik7CisgICAgV2ViQ29yZTo6TWVkaWFQbGF5ZXI6OlN1cHBvcnRz
VHlwZSBzdXBwb3J0c1R5cGVBbmRDb2RlY3MoV2ViQ29yZTo6TWVkaWFQbGF5ZXJFbnVtczo6TWVk
aWFFbmdpbmVJZGVudGlmaWVyLCBjb25zdCBXZWJDb3JlOjpNZWRpYUVuZ2luZVN1cHBvcnRQYXJh
bWV0ZXJzJik7CisgICAgYm9vbCBzdXBwb3J0c0tleVN5c3RlbShXZWJDb3JlOjpNZWRpYVBsYXll
ckVudW1zOjpNZWRpYUVuZ2luZUlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYga2V5U3lzdGVtLCBj
b25zdCBTdHJpbmcmIG1pbWVUeXBlKTsKKyAgICBIYXNoU2V0PFJlZlB0cjxXZWJDb3JlOjpTZWN1
cml0eU9yaWdpbj4+IG9yaWdpbnNJbk1lZGlhQ2FjaGUoV2ViQ29yZTo6TWVkaWFQbGF5ZXJFbnVt
czo6TWVkaWFFbmdpbmVJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmKTsKKyAgICB2b2lkIGNsZWFy
TWVkaWFDYWNoZShXZWJDb3JlOjpNZWRpYVBsYXllckVudW1zOjpNZWRpYUVuZ2luZUlkZW50aWZp
ZXIsIGNvbnN0IFN0cmluZyYsIFdhbGxUaW1lIG1vZGlmaWVkU2luY2UpOworICAgIHZvaWQgY2xl
YXJNZWRpYUNhY2hlRm9yT3JpZ2lucyhXZWJDb3JlOjpNZWRpYVBsYXllckVudW1zOjpNZWRpYUVu
Z2luZUlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYsIGNvbnN0IEhhc2hTZXQ8UmVmUHRyPFdlYkNv
cmU6OlNlY3VyaXR5T3JpZ2luPj4mKTsKKworICAgIEhhc2hNYXA8TWVkaWFQbGF5ZXJQcml2YXRl
UmVtb3RlSWRlbnRpZmllciwgV2Vha1B0cjxNZWRpYVBsYXllclByaXZhdGVSZW1vdGU+PiBtX3Bs
YXllcnM7CisgICAgV2ViUHJvY2VzcyYgbV9wcm9jZXNzOworfTsKKworfSAvLyBuYW1lc3BhY2Ug
V2ViS2l0CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQ
VS9tZWRpYS9SZW1vdGVNZWRpYVBsYXllck1hbmFnZXIubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyTWFuYWdlci5tZXNzYWdl
cy5pbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi5hOTMzNTdjMmJhODVmZjFkZGVjY2EwN2MzMDM5MWY4ZTIwMjkyMTJm
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9S
ZW1vdGVNZWRpYVBsYXllck1hbmFnZXIubWVzc2FnZXMuaW4KQEAgLTAsMCArMSwzMiBAQAorIyBD
b3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisjIGFyZSBtZXQ6CisjIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyMgMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorIyAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorIworIyBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRP
UlMgYGBBUyBJUycnCisjIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorIyBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisjIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUworIyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisjIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisjIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UworIyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTgorIyBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorIyBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisj
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKworI2lmIEVOQUJMRShWSURFTykKKwor
bWVzc2FnZXMgLT4gUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyIE5vdFJlZkNvdW50ZWQgeworCisg
ICAgTmV0d29ya1N0YXRlQ2hhbmdlZChXZWJLaXQ6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZUlk
ZW50aWZpZXIgaWQpCisKK30KKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViUGFnZS9WaWV3VXBkYXRlRGlzcGF0Y2hlci5jcHAgYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViUGFnZS9WaWV3VXBkYXRlRGlzcGF0Y2hlci5jcHAKaW5kZXggNWNmNDQ0
MDdlM2ZiM2Y2N2EwMzQ3MDAzZDA0NzhkNzQxOTkzMjQzZi4uMWZiY2M3OTZmZmI2NTk1YTRmMzVi
NTI5MGE5YzNiOWE0ZGYxODY2ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYlBhZ2UvVmlld1VwZGF0ZURpc3BhdGNoZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJQYWdlL1ZpZXdVcGRhdGVEaXNwYXRjaGVyLmNwcApAQCAtMzEsNiArMzEsNyBA
QAogI2luY2x1ZGUgIlZpZXdVcGRhdGVEaXNwYXRjaGVyTWVzc2FnZXMuaCIKICNpbmNsdWRlICJX
ZWJQYWdlLmgiCiAjaW5jbHVkZSAiV2ViUHJvY2Vzcy5oIgorI2luY2x1ZGUgPFdlYkNvcmUvUGFn
ZUlkZW50aWZpZXIuaD4KICNpbmNsdWRlIDx3dGYvUnVuTG9vcC5oPgogCiBuYW1lc3BhY2UgV2Vi
S2l0IHsKQEAgLTc1LDcgKzc2LDcgQEAgdm9pZCBWaWV3VXBkYXRlRGlzcGF0Y2hlcjo6dmlzaWJs
ZUNvbnRlbnRSZWN0VXBkYXRlKFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIHBhZ2UKIAogdm9pZCBW
aWV3VXBkYXRlRGlzcGF0Y2hlcjo6ZGlzcGF0Y2hWaXNpYmxlQ29udGVudFJlY3RVcGRhdGUoKQog
ewotICAgIEhhc2hNYXA8UGFnZUlkZW50aWZpZXIsIFVwZGF0ZURhdGE+IHVwZGF0ZTsKKyAgICBI
YXNoTWFwPFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBVcGRhdGVEYXRhPiB1cGRhdGU7CiAgICAg
ewogICAgICAgICBMb2NrSG9sZGVyIGxvY2tlcigmbV9kYXRhTXV0ZXgpOwogICAgICAgICB1cGRh
dGUgPSBXVEZNb3ZlKG1fbGF0ZXN0VXBkYXRlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYlBhZ2UvV2ViUGFnZS5jcHAKaW5kZXggNzM1ZmVhNGVlMTNiZTQyNWMyMzRiZTkyMTIwZmU5
ZTdiY2EyZDVjNy4uYjk2OWQ5YmFlNmIxZGFjZTM3YzdjNzk2YjJhMjAyYWQ2NzUzODc4NCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKQEAgLTMxMiw2
ICszMTIsMTAgQEAKICNpbmNsdWRlICJXZWJEZXZpY2VPcmllbnRhdGlvblVwZGF0ZVByb3ZpZGVy
LmgiCiAjZW5kaWYKIAorI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykKKyNpbmNsdWRlICJSZW1vdGVN
ZWRpYVBsYXllck1hbmFnZXIuaCIKKyNlbmRpZgorCiBuYW1lc3BhY2UgV2ViS2l0IHsKIHVzaW5n
IG5hbWVzcGFjZSBKU0M7CiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKQEAgLTM2MDYsNiArMzYx
MCwxMCBAQCB2b2lkIFdlYlBhZ2U6OnVwZGF0ZVByZWZlcmVuY2VzKGNvbnN0IFdlYlByZWZlcmVu
Y2VzU3RvcmUmIHN0b3JlKQogCiAgICAgaWYgKG1fZHJhd2luZ0FyZWEpCiAgICAgICAgIG1fZHJh
d2luZ0FyZWEtPnVwZGF0ZVByZWZlcmVuY2VzKHN0b3JlKTsKKworI2lmIEVOQUJMRShHUFVfUFJP
Q0VTUykKKyAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5zdXBwbGVtZW50PFJlbW90ZU1lZGlh
UGxheWVyTWFuYWdlcj4oKS0+dXBkYXRlUHJlZmVyZW5jZXMoc2V0dGluZ3MpOworI2VuZGlmCiB9
CiAKICNpZiBFTkFCTEUoREFUQV9ERVRFQ1RJT04pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
UHJvY2Vzcy5jcHAKaW5kZXggMDZiMDhkNzhiZjU4NzM1ZTgxNzgwZmEwNDFjMGE4NzQxZWYwMGVm
OS4uMTUxMzI3MWFjM2Y5NzUxNTZmOTk0MmRhZmRmMGNjMGE4Y2Q3ZTNkMyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcApAQCAtMTY0LDYgKzE2NCwxMCBAQAogI2luY2x1
ZGUgPEphdmFTY3JpcHRDb3JlL1JlbW90ZUluc3BlY3Rvci5oPgogI2VuZGlmCiAKKyNpZiBFTkFC
TEUoR1BVX1BST0NFU1MpCisjaW5jbHVkZSAiUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyLmgiCisj
ZW5kaWYKKwogLy8gVGhpcyBzaG91bGQgYmUgbGVzcyB0aGFuIHBsdWdJbkF1dG9TdGFydEV4cGly
YXRpb25UaW1lVGhyZXNob2xkIGluIFBsdWdJbkF1dG9TdGFydFByb3ZpZGVyLgogc3RhdGljIGNv
bnN0IFNlY29uZHMgcGx1Z0luQXV0b1N0YXJ0RXhwaXJhdGlvblRpbWVVcGRhdGVUaHJlc2hvbGQg
eyAyOSAqIDI0ICogNjAgKiA2MCB9OwogCkBAIC0yMjEsNyArMjI1LDExIEBAIFdlYlByb2Nlc3M6
OldlYlByb2Nlc3MoKQogI2lmIFBMQVRGT1JNKENPQ09BKSAmJiBFTkFCTEUoTUVESUFfU1RSRUFN
KQogICAgIGFkZFN1cHBsZW1lbnQ8VXNlck1lZGlhQ2FwdHVyZU1hbmFnZXI+KCk7CiAjZW5kaWYK
LSAgICAKKworI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykKKyAgICBhZGRTdXBwbGVtZW50PFJlbW90
ZU1lZGlhUGxheWVyTWFuYWdlcj4oKTsKKyNlbmRpZgorCiAgICAgR2lnYWNhZ2U6OmZvcmJpZERp
c2FibGluZ1ByaW1pdGl2ZUdpZ2FjYWdlKCk7CiB9CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>385578</attachid>
            <date>2019-12-12 21:50:59 -0800</date>
            <delta_ts>2019-12-13 08:44:02 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-205094-20191212215058.patch</filename>
            <type>text/plain</type>
            <size>167296</size>
            <attacher name="Eric Carlson">eric.carlson</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjUzMzk3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZTk0ZmQ0ZWMxNDg4MjAx
YTM0ZjM1Nzk2MWUwOTg5OWZmNzIyYmNmNS4uNGEyNzIyNWMwNjkyM2ZiMWMxZjBiZDkwZmI0ZDkw
OWU1YzdlNWRkMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEwNyBAQAorMjAxOS0xMi0xMCAgRXJp
YyBDYXJsc29uICA8ZXJpYy5jYXJsc29uQGFwcGxlLmNvbT4KKworICAgICAgICBBZGQgaW5mcmFz
dHJ1Y3R1cmUgbmVlZGVkIGZvciBwbGF5aW5nIG1lZGlhIHBsYXllciBpbiB0aGUgR1BVIHByb2Nl
c3MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwNTA5
NAorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNTc4MTUzOTM+CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLCBubyBmdW5jdGlvbmFs
IGNoYW5nZSB5ZXQuCisKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2o6CisgICAgICAgICogcGxhdGZvcm0vQ29udGVudFR5cGUuaDoKKyAgICAgICAgKFdlYkNvcmU6
OkNvbnRlbnRUeXBlOjplbmNvZGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudFR5
cGU6OmRlY29kZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6bnVsbExvZ2dlcik6CisgICAgICAgIChXZWJDb3JlOjpudWxs
Q29udGVudFR5cGVWZWN0b3IpOgorICAgICAgICAoV2ViQ29yZTo6bXV0YWJsZUluc3RhbGxlZE1l
ZGlhRW5naW5lc1ZlY3Rvcik6CisgICAgICAgIChXZWJDb3JlOjpyZWdpc3RlclJlbW90ZVBsYXll
ckNhbGxiYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbW90ZU1lZGlhUGxheWVyU3VwcG9ydDo6
c2V0UmVnaXN0ZXJSZW1vdGVQbGF5ZXJDYWxsYmFjayk6CisgICAgICAgIChXZWJDb3JlOjpidWls
ZE1lZGlhRW5naW5lc1ZlY3Rvcik6CisgICAgICAgIChXZWJDb3JlOjppbnN0YWxsZWRNZWRpYUVu
Z2luZXMpOgorICAgICAgICAoV2ViQ29yZTo6YWRkTWVkaWFFbmdpbmUpOgorICAgICAgICAoV2Vi
Q29yZTo6TWVkaWFQbGF5ZXI6Om1lZGlhRW5naW5lKToKKyAgICAgICAgKFdlYkNvcmU6OmJlc3RN
ZWRpYUVuZ2luZUZvclN1cHBvcnRQYXJhbWV0ZXJzKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlh
UGxheWVyOjpuZXh0TWVkaWFFbmdpbmUpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXI6
OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllcjo6TWVkaWFQbGF5ZXIpOgor
ICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXI6Om5leHRCZXN0TWVkaWFFbmdpbmUpOgorICAg
ICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXI6OmxvYWRXaXRoTmV4dE1lZGlhRW5naW5lKToKKyAg
ICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyOjpnZXRTdXBwb3J0ZWRUeXBlcyk6CisgICAgICAg
IChXZWJDb3JlOjpNZWRpYVBsYXllcjo6b3JpZ2luc0luTWVkaWFDYWNoZSk6CisgICAgICAgIChX
ZWJDb3JlOjpNZWRpYVBsYXllcjo6Y2xlYXJNZWRpYUNhY2hlKToKKyAgICAgICAgKFdlYkNvcmU6
Ok1lZGlhUGxheWVyOjpjbGVhck1lZGlhQ2FjaGVGb3JPcmlnaW5zKToKKyAgICAgICAgKFdlYkNv
cmU6Ok1lZGlhUGxheWVyOjpzdXBwb3J0c0tleVN5c3RlbSk6CisgICAgICAgIChXZWJDb3JlOjpN
ZWRpYVBsYXllcjo6bmV0d29ya1N0YXRlQ2hhbmdlZCk6CisgICAgICAgIChXZWJDb3JlOjpuZXh0
TWVkaWFFbmdpbmUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXI6Om5l
eHRCZXN0TWVkaWFFbmdpbmUgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL01lZGlhUGxheWVyLmg6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYUVuZ2luZVN1cHBv
cnRQYXJhbWV0ZXJzOjplbmNvZGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFFbmdp
bmVTdXBwb3J0UGFyYW1ldGVyczo6ZGVjb2RlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxh
eWVyRmFjdG9yeTo6fk1lZGlhUGxheWVyRmFjdG9yeSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRp
YVBsYXllckZhY3Rvcnk6Om9yaWdpbnNJbk1lZGlhQ2FjaGUgY29uc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6TWVkaWFQbGF5ZXJGYWN0b3J5OjpjbGVhck1lZGlhQ2FjaGUgY29uc3QpOgorICAgICAg
ICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJGYWN0b3J5OjpjbGVhck1lZGlhQ2FjaGVGb3JPcmlnaW5z
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyRmFjdG9yeTo6c3VwcG9ydHNL
ZXlTeXN0ZW0gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXI6OnNldFZpZGVv
RnVsbHNjcmVlbkxheWVyKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVy
OjpzaXplIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyOjpp
bnZhbGlkVGltZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllcjo6cGxh
dGZvcm1Wb2x1bWVDb25maWd1cmF0aW9uUmVxdWlyZWQgY29uc3QpOiBEZWxldGVkLgorICAgICAg
ICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXI6OmNvbnRlbnRNSU1FVHlwZSBjb25zdCk6IERlbGV0ZWQu
CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllcjo6Y29udGVudFR5cGVDb2RlY3MgY29uc3Qp
OiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXI6OmNvbnRlbnRNSU1FVHlw
ZVdhc0luZmVycmVkRnJvbUV4dGVuc2lvbiBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJD
b3JlOjpNZWRpYVBsYXllcjo6bWVkaWFQbGF5ZXJMb2dJZGVudGlmaWVyKTogRGVsZXRlZC4KKyAg
ICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyOjpyZW5kZXJpbmdDYW5CZUFjY2VsZXJhdGVkIGNv
bnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyOjpyZW5kZXJpbmdN
b2RlQ2hhbmdlZCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXll
cjo6YWNjZWxlcmF0ZWRDb21wb3NpdGluZ0VuYWJsZWQpOiBEZWxldGVkLgorICAgICAgICAoV2Vi
Q29yZTo6TWVkaWFQbGF5ZXI6OmFjdGl2ZVNvdXJjZUJ1ZmZlcnNDaGFuZ2VkKTogRGVsZXRlZC4K
KyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyOjpwbGF5ZXJDb250ZW50Qm94UmVjdCBjb25z
dCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllcjo6cGxheWVyQ29udGVu
dHNTY2FsZSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllcjo6
c2hvdWxkVXNlUGVyc2lzdGVudENhY2hlIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNv
cmU6Ok1lZGlhUGxheWVyOjptZWRpYUNhY2hlRGlyZWN0b3J5IGNvbnN0KTogRGVsZXRlZC4KKyAg
ICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyOjppc1ZpZGVvUGxheWVyIGNvbnN0KTogRGVsZXRl
ZC4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyOjptZWRpYUVuZ2luZVVwZGF0ZWQpOiBE
ZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXI6OmlzTG9vcGluZyBjb25zdCk6
IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllcjo6cmVxdWVzdEluc3RhbGxN
aXNzaW5nUGx1Z2lucyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllcjo6
Y2xpZW50IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9NZWRp
YVBsYXllckVuZ2luZUlkZW50aWZpZXJzLmg6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL0NvbnRlbnRUeXBlLmguCisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllckVuZ2lu
ZUlkZW50aWZpZXJzOjphdkZvdW5kYXRpb25FbmdpbmVJZGVudGlmaWVyKToKKyAgICAgICAgKFdl
YkNvcmU6Ok1lZGlhUGxheWVyRW5naW5lSWRlbnRpZmllcnM6OmF2Rm91bmRhdGlvbk1TRUVuZ2lu
ZUlkZW50aWZpZXIpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJFbmdpbmVJZGVudGlm
aWVyczo6YXZGb3VuZGF0aW9uTWVkaWFTdHJlYW1FbmdpbmVJZGVudGlmaWVyKToKKyAgICAgICAg
KFdlYkNvcmU6Ok1lZGlhUGxheWVyRW5naW5lSWRlbnRpZmllcnM6OkdTdHJlYW1lck1lZGlhRW5n
aW5lSWRlbnRpZmllcik6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllckVuZ2luZUlkZW50
aWZpZXJzOjpHU3RyZWFtZXJNU0VNZWRpYUVuZ2luZUlkZW50aWZpZXIpOgorICAgICAgICAoV2Vi
Q29yZTo6TWVkaWFQbGF5ZXJFbmdpbmVJZGVudGlmaWVyczo6aG9sZVB1bmNoTWVkaWFFbmdpbmVJ
ZGVudGlmaWVyKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyRW5naW5lSWRlbnRpZmll
cnM6Ok1lZGlhRm91bmRhdGlvbk1lZGlhRW5naW5lSWRlbnRpZmllcik6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvUGxhdGZvcm1UaW1lUmFuZ2VzLmg6CisgICAgICAgIChXZWJDb3JlOjpQ
bGF0Zm9ybVRpbWVSYW5nZXM6OlBsYXRmb3JtVGltZVJhbmdlcyk6IERlbGV0ZWQuCisgICAgICAg
IChXZWJDb3JlOjpQbGF0Zm9ybVRpbWVSYW5nZXM6Omxlbmd0aCBjb25zdCk6IERlbGV0ZWQuCisg
ICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybVRpbWVSYW5nZXM6OlJhbmdlOjpSYW5nZSk6IERlbGV0
ZWQuCisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybVRpbWVSYW5nZXM6OlJhbmdlOjppc1BvaW50
SW5SYW5nZSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybVRpbWVS
YW5nZXM6OlJhbmdlOjppc092ZXJsYXBwaW5nUmFuZ2UgY29uc3QpOiBEZWxldGVkLgorICAgICAg
ICAoV2ViQ29yZTo6UGxhdGZvcm1UaW1lUmFuZ2VzOjpSYW5nZTo6aXNDb250aWd1b3VzV2l0aFJh
bmdlIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtVGltZVJhbmdl
czo6UmFuZ2U6OnVuaW9uV2l0aE92ZXJsYXBwaW5nT3JDb250aWd1b3VzUmFuZ2UgY29uc3QpOiBE
ZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1UaW1lUmFuZ2VzOjpSYW5nZTo6aXNC
ZWZvcmVSYW5nZSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
YXZmb3VuZGF0aW9uL2NmL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbkNGLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbkNGOjpyZWdpc3Rl
ck1lZGlhRW5naW5lKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24v
b2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLmg6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3Vu
ZGF0aW9uT2JqQy5tbToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUFWRm91
bmRhdGlvbk9iakM6OnJlZ2lzdGVyTWVkaWFFbmdpbmUpOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZG
T2JqQy5tbToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNl
QVZGT2JqQzo6cmVnaXN0ZXJNZWRpYUVuZ2luZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpD
Lm1tOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZP
YmpDOjpyZWdpc3Rlck1lZGlhRW5naW5lKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9n
c3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6cmVnaXN0ZXJNZWRpYUVuZ2luZSk6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL21zZS9NZWRpYVBsYXllclByaXZh
dGVHU3RyZWFtZXJNU0UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRl
R1N0cmVhbWVyTVNFOjpyZWdpc3Rlck1lZGlhRW5naW5lKToKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9ob2xlcHVuY2gvTWVkaWFQbGF5ZXJQcml2YXRlSG9sZVB1bmNoLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUhvbGVQdW5jaDo6cmVnaXN0ZXJNZWRpYUVu
Z2luZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL01lZGlhUGxheWVyUHJpdmF0
ZU1lZGlhRm91bmRhdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZh
dGVNZWRpYUZvdW5kYXRpb246OnJlZ2lzdGVyTWVkaWFFbmdpbmUpOgorICAgICAgICAqIHBsYXRm
b3JtL21vY2svbWVkaWFzb3VyY2UvTW9ja01lZGlhUGxheWVyTWVkaWFTb3VyY2UuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6TW9ja01lZGlhUGxheWVyTWVkaWFTb3VyY2U6OnJlZ2lzdGVyTWVkaWFF
bmdpbmUpOgorCiAyMDE5LTEyLTExICBFcmljIENhcmxzb24gIDxlcmljLmNhcmxzb25AYXBwbGUu
Y29tPgogCiAgICAgICAgIEFkZCBlbmNvZGVycyBmb3IgTWVkaWFQbGF5ZXJFbnVtIGVudW1zCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdl
TG9nCmluZGV4IDc1M2ZkODg3YmFlMDM4MjVmM2ZlYmM0NjAxNTM5Yzg1ODQyNTQ0MjMuLjMyZWI1
NjI1NDUyYmU5NWIzMWI0MTlhMGFlMzk0N2M3NjNlNGYwZmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEs
MTg3IEBACisyMDE5LTEyLTEwICBFcmljIENhcmxzb24gIDxlcmljLmNhcmxzb25AYXBwbGUuY29t
PgorCisgICAgICAgIEFkZCBpbmZyYXN0cnVjdHVyZSBuZWVkZWQgZm9yIHBsYXlpbmcgbWVkaWEg
cGxheWVyIGluIHRoZSBHUFUgcHJvY2VzcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MjA1MDk0CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS81NzgxNTM5
Mz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIERl
cml2ZWRTb3VyY2VzLWlucHV0LnhjZmlsZWxpc3Q6CisgICAgICAgICogRGVyaXZlZFNvdXJjZXMt
b3V0cHV0LnhjZmlsZWxpc3Q6CisgICAgICAgICogRGVyaXZlZFNvdXJjZXMubWFrZToKKyAgICAg
ICAgKiBHUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwOgorICAgICAgICAo
V2ViS2l0OjpHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpHUFVDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzKToKKyAgICAgICAgKFdlYktpdDo6R1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6fkdQVUNv
bm5lY3Rpb25Ub1dlYlByb2Nlc3MpOgorICAgICAgICAoV2ViS2l0OjpHUFVDb25uZWN0aW9uVG9X
ZWJQcm9jZXNzOjpkaWRSZWNlaXZlTWVzc2FnZSk6CisgICAgICAgIChXZWJLaXQ6OkdQVUNvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3M6OmRpZFJlY2VpdmVTeW5jTWVzc2FnZSk6CisgICAgICAgICogR1BV
UHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmg6CisgICAgICAgICogR1BVUHJvY2Vz
cy9tZWRpYS9SZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eS5jcHA6IEFkZGVkLgorICAgICAg
ICAoV2ViS2l0OjpudWxsTG9nZ2VyKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTWVkaWFQbGF5
ZXJNYW5hZ2VyUHJveHk6OlBsYXllclByb3h5OjpQbGF5ZXJQcm94eSk6CisgICAgICAgIChXZWJL
aXQ6OlJlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5OjpQbGF5ZXJQcm94eTo6flBsYXllclBy
b3h5KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHk6OlJl
bW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTWVk
aWFQbGF5ZXJNYW5hZ2VyUHJveHk6On5SZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eSk6Cisg
ICAgICAgIChXZWJLaXQ6OlJlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5OjpjcmVhdGVNZWRp
YVBsYXllcik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5
OjpnZXRTdXBwb3J0ZWRUeXBlcyk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZU1lZGlhUGxheWVy
TWFuYWdlclByb3h5OjpzdXBwb3J0c1R5cGUpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVNZWRp
YVBsYXllck1hbmFnZXJQcm94eTo6b3JpZ2luc0luTWVkaWFDYWNoZSk6CisgICAgICAgIChXZWJL
aXQ6OlJlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5OjpjbGVhck1lZGlhQ2FjaGUpOgorICAg
ICAgICAoV2ViS2l0OjpSZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eTo6Y2xlYXJNZWRpYUNh
Y2hlRm9yT3JpZ2lucyk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZU1lZGlhUGxheWVyTWFuYWdl
clByb3h5OjpzdXBwb3J0c0tleVN5c3RlbSk6CisgICAgICAgICogR1BVUHJvY2Vzcy9tZWRpYS9S
ZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eS5oOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6
UmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHk6OndlYlByb2Nlc3NDb25uZWN0aW9uIGNvbnN0
KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHk6OmRpZFJl
Y2VpdmVNZXNzYWdlRnJvbVdlYlByb2Nlc3MpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVNZWRp
YVBsYXllck1hbmFnZXJQcm94eTo6ZGlkUmVjZWl2ZVN5bmNNZXNzYWdlRnJvbVdlYlByb2Nlc3Mp
OgorICAgICAgICAqIEdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJv
eHkubWVzc2FnZXMuaW46IEFkZGVkLgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0L21lc3NhZ2Vz
LnB5OgorICAgICAgICAqIFNvdXJjZXMudHh0OgorICAgICAgICAqIFNvdXJjZXNDb2NvYS50eHQ6
CisgICAgICAgICogV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICog
V2ViUHJvY2Vzcy9HUFUvbWVkaWEvTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlLmNwcDogQWRkZWQu
CisgICAgICAgIChXZWJLaXQ6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6TWVkaWFQbGF5ZXJQ
cml2YXRlUmVtb3RlKToKKyAgICAgICAgKFdlYktpdDo6TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3Rl
Ojp+TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlKToKKyAgICAgICAgKFdlYktpdDo6TWVkaWFQbGF5
ZXJQcml2YXRlUmVtb3RlOjpNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OmxvYWQpOgorICAgICAg
ICAoV2ViS2l0OjpNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OmxvYWQpOgorICAgICAgICAoV2Vi
S2l0OjpNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OmNhbmNlbExvYWQpOgorICAgICAgICAoV2Vi
S2l0OjpNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OnByZXBhcmVUb1BsYXkpOgorICAgICAgICAo
V2ViS2l0OjpNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OnBsYXRmb3JtTGF5ZXIgY29uc3QpOgor
ICAgICAgICAoV2ViS2l0OjpNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OnNldFZpZGVvRnVsbHNj
cmVlbkxheWVyKToKKyAgICAgICAgKFdlYktpdDo6TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjp1
cGRhdGVWaWRlb0Z1bGxzY3JlZW5JbmxpbmVJbWFnZSk6CisgICAgICAgIChXZWJLaXQ6Ok1lZGlh
UGxheWVyUHJpdmF0ZVJlbW90ZTo6c2V0VmlkZW9GdWxsc2NyZWVuRnJhbWUpOgorICAgICAgICAo
V2ViS2l0OjpNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OnNldFZpZGVvRnVsbHNjcmVlbkdyYXZp
dHkpOgorICAgICAgICAoV2ViS2l0OjpNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OnNldFZpZGVv
RnVsbHNjcmVlbk1vZGUpOgorICAgICAgICAoV2ViS2l0OjpNZWRpYVBsYXllclByaXZhdGVSZW1v
dGU6OnZpZGVvRnVsbHNjcmVlblN0YW5kYnlDaGFuZ2VkKToKKyAgICAgICAgKFdlYktpdDo6TWVk
aWFQbGF5ZXJQcml2YXRlUmVtb3RlOjphY2Nlc3NMb2cgY29uc3QpOgorICAgICAgICAoV2ViS2l0
OjpNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OmVycm9yTG9nIGNvbnN0KToKKyAgICAgICAgKFdl
YktpdDo6TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpwbGF0Zm9ybUVycm9yQ29kZSBjb25zdCk6
CisgICAgICAgIChXZWJLaXQ6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6cGxheSk6CisgICAg
ICAgIChXZWJLaXQ6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6cGF1c2UpOgorICAgICAgICAo
V2ViS2l0OjpNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OnNldEJ1ZmZlcmluZ1BvbGljeSk6Cisg
ICAgICAgIChXZWJLaXQ6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6c3VwcG9ydHNQaWN0dXJl
SW5QaWN0dXJlIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6TWVkaWFQbGF5ZXJQcml2YXRlUmVt
b3RlOjpzdXBwb3J0c0Z1bGxzY3JlZW4gY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpNZWRpYVBs
YXllclByaXZhdGVSZW1vdGU6OnN1cHBvcnRzU2Nhbm5pbmcgY29uc3QpOgorICAgICAgICAoV2Vi
S2l0OjpNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OnJlcXVpcmVzSW1tZWRpYXRlQ29tcG9zaXRp
bmcgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OmNh
blNhdmVNZWRpYURhdGEgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpNZWRpYVBsYXllclByaXZh
dGVSZW1vdGU6Om5hdHVyYWxTaXplIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6TWVkaWFQbGF5
ZXJQcml2YXRlUmVtb3RlOjpoYXNWaWRlbyBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6Ok1lZGlh
UGxheWVyUHJpdmF0ZVJlbW90ZTo6aGFzQXVkaW8gY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpN
ZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OnNldFZpc2libGUpOgorICAgICAgICAoV2ViS2l0OjpN
ZWRpYVBsYXllclByaXZhdGVSZW1vdGU6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6ZHVyYXRp
b25NZWRpYVRpbWUgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpNZWRpYVBsYXllclByaXZhdGVS
ZW1vdGU6OmN1cnJlbnRNZWRpYVRpbWUgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpNZWRpYVBs
YXllclByaXZhdGVSZW1vdGU6OmdldFN0YXJ0RGF0ZSBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6
Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6c2Vlayk6CisgICAgICAgIChXZWJLaXQ6Ok1lZGlh
UGxheWVyUHJpdmF0ZVJlbW90ZTo6c2Vla1dpdGhUb2xlcmFuY2UpOgorICAgICAgICAoV2ViS2l0
OjpNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OnNlZWtpbmcgY29uc3QpOgorICAgICAgICAoV2Vi
S2l0OjpNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OnN0YXJ0VGltZSBjb25zdCk6CisgICAgICAg
IChXZWJLaXQ6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6c2V0UmF0ZURvdWJsZSk6CisgICAg
ICAgIChXZWJLaXQ6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6cmF0ZSBjb25zdCk6CisgICAg
ICAgIChXZWJLaXQ6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6c2V0UHJlc2VydmVzUGl0Y2gp
OgorICAgICAgICAoV2ViS2l0OjpNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OnBhdXNlZCBjb25z
dCk6CisgICAgICAgIChXZWJLaXQ6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6c2V0Vm9sdW1l
RG91YmxlKToKKyAgICAgICAgKFdlYktpdDo6TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpzZXRN
dXRlZCk6CisgICAgICAgIChXZWJLaXQ6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6aGFzQ2xv
c2VkQ2FwdGlvbnMgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpNZWRpYVBsYXllclByaXZhdGVS
ZW1vdGU6OnNldENsb3NlZENhcHRpb25zVmlzaWJsZSk6CisgICAgICAgIChXZWJLaXQ6Ok1lZGlh
UGxheWVyUHJpdmF0ZVJlbW90ZTo6bWF4RmFzdEZvcndhcmRSYXRlIGNvbnN0KToKKyAgICAgICAg
KFdlYktpdDo6TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjptaW5GYXN0UmV2ZXJzZVJhdGUgY29u
c3QpOgorICAgICAgICAoV2ViS2l0OjpNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6Om5ldHdvcmtT
dGF0ZSBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6
cmVhZHlTdGF0ZSBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6Ok1lZGlhUGxheWVyUHJpdmF0ZVJl
bW90ZTo6c2Vla2FibGUgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpNZWRpYVBsYXllclByaXZh
dGVSZW1vdGU6OmJ1ZmZlcmVkIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6TWVkaWFQbGF5ZXJQ
cml2YXRlUmVtb3RlOjptYXhNZWRpYVRpbWVTZWVrYWJsZSBjb25zdCk6CisgICAgICAgIChXZWJL
aXQ6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6bWluTWVkaWFUaW1lU2Vla2FibGUgY29uc3Qp
OgorICAgICAgICAoV2ViS2l0OjpNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OnNlZWthYmxlVGlt
ZVJhbmdlc0xhc3RNb2RpZmllZFRpbWUgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpNZWRpYVBs
YXllclByaXZhdGVSZW1vdGU6OmxpdmVVcGRhdGVJbnRlcnZhbCBjb25zdCk6CisgICAgICAgIChX
ZWJLaXQ6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6dG90YWxCeXRlcyBjb25zdCk6CisgICAg
ICAgIChXZWJLaXQ6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6ZGlkTG9hZGluZ1Byb2dyZXNz
IGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpzZXRT
aXplKToKKyAgICAgICAgKFdlYktpdDo6TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpwYWludCk6
CisgICAgICAgIChXZWJLaXQ6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6cGFpbnRDdXJyZW50
RnJhbWVJbkNvbnRleHQpOgorICAgICAgICAoV2ViS2l0OjpNZWRpYVBsYXllclByaXZhdGVSZW1v
dGU6OmNvcHlWaWRlb1RleHR1cmVUb1BsYXRmb3JtVGV4dHVyZSk6CisgICAgICAgIChXZWJLaXQ6
Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6bmF0aXZlSW1hZ2VGb3JDdXJyZW50VGltZSk6Cisg
ICAgICAgIChXZWJLaXQ6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6c2V0UHJlbG9hZCk6Cisg
ICAgICAgIChXZWJLaXQ6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6aGFzQXZhaWxhYmxlVmlk
ZW9GcmFtZSBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90
ZTo6Y2FuTG9hZFBvc3RlciBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6Ok1lZGlhUGxheWVyUHJp
dmF0ZVJlbW90ZTo6c2V0UG9zdGVyKToKKyAgICAgICAgKFdlYktpdDo6TWVkaWFQbGF5ZXJQcml2
YXRlUmVtb3RlOjplbnRlckZ1bGxzY3JlZW4pOgorICAgICAgICAoV2ViS2l0OjpNZWRpYVBsYXll
clByaXZhdGVSZW1vdGU6OmV4aXRGdWxsc2NyZWVuKToKKyAgICAgICAgKFdlYktpdDo6TWVkaWFQ
bGF5ZXJQcml2YXRlUmVtb3RlOjp3aXJlbGVzc1BsYXliYWNrVGFyZ2V0TmFtZSBjb25zdCk6Cisg
ICAgICAgIChXZWJLaXQ6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6d2lyZWxlc3NQbGF5YmFj
a1RhcmdldFR5cGUgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpNZWRpYVBsYXllclByaXZhdGVS
ZW1vdGU6OndpcmVsZXNzVmlkZW9QbGF5YmFja0Rpc2FibGVkIGNvbnN0KToKKyAgICAgICAgKFdl
YktpdDo6TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpzZXRXaXJlbGVzc1ZpZGVvUGxheWJhY2tE
aXNhYmxlZCk6CisgICAgICAgIChXZWJLaXQ6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6Y2Fu
UGxheVRvV2lyZWxlc3NQbGF5YmFja1RhcmdldCBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6Ok1l
ZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6aXNDdXJyZW50UGxheWJhY2tUYXJnZXRXaXJlbGVzcyBj
b25zdCk6CisgICAgICAgIChXZWJLaXQ6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6c2V0V2ly
ZWxlc3NQbGF5YmFja1RhcmdldCk6CisgICAgICAgIChXZWJLaXQ6Ok1lZGlhUGxheWVyUHJpdmF0
ZVJlbW90ZTo6c2V0U2hvdWxkUGxheVRvUGxheWJhY2tUYXJnZXQpOgorICAgICAgICAoV2ViS2l0
OjpNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OmNhbkVudGVyRnVsbHNjcmVlbiBjb25zdCk6Cisg
ICAgICAgIChXZWJLaXQ6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6c3VwcG9ydHNBY2NlbGVy
YXRlZFJlbmRlcmluZyBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6Ok1lZGlhUGxheWVyUHJpdmF0
ZVJlbW90ZTo6YWNjZWxlcmF0ZWRSZW5kZXJpbmdTdGF0ZUNoYW5nZWQpOgorICAgICAgICAoV2Vi
S2l0OjpNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OnNob3VsZE1haW50YWluQXNwZWN0UmF0aW8g
Y29uc3QpOgorICAgICAgICAoV2ViS2l0OjpNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OnNldFNo
b3VsZE1haW50YWluQXNwZWN0UmF0aW8pOgorICAgICAgICAoV2ViS2l0OjpNZWRpYVBsYXllclBy
aXZhdGVSZW1vdGU6Omhhc1NpbmdsZVNlY3VyaXR5T3JpZ2luIGNvbnN0KToKKyAgICAgICAgKFdl
YktpdDo6TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpkaWRQYXNzQ09SU0FjY2Vzc0NoZWNrIGNv
bnN0KToKKyAgICAgICAgKFdlYktpdDo6TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjp3b3VsZFRh
aW50T3JpZ2luIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6TWVkaWFQbGF5ZXJQcml2YXRlUmVt
b3RlOjptb3ZpZUxvYWRUeXBlIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6TWVkaWFQbGF5ZXJQ
cml2YXRlUmVtb3RlOjpwcmVwYXJlRm9yUmVuZGVyaW5nKToKKyAgICAgICAgKFdlYktpdDo6TWVk
aWFQbGF5ZXJQcml2YXRlUmVtb3RlOjptZWRpYVRpbWVGb3JUaW1lVmFsdWUgY29uc3QpOgorICAg
ICAgICAoV2ViS2l0OjpNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6Om1heGltdW1EdXJhdGlvblRv
Q2FjaGVNZWRpYVRpbWUgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpNZWRpYVBsYXllclByaXZh
dGVSZW1vdGU6OmRlY29kZWRGcmFtZUNvdW50IGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6TWVk
aWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpkcm9wcGVkRnJhbWVDb3VudCBjb25zdCk6CisgICAgICAg
IChXZWJLaXQ6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6YXVkaW9EZWNvZGVkQnl0ZUNvdW50
IGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjp2aWRl
b0RlY29kZWRCeXRlQ291bnQgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpNZWRpYVBsYXllclBy
aXZhdGVSZW1vdGU6OnNldFByaXZhdGVCcm93c2luZ01vZGUpOgorICAgICAgICAoV2ViS2l0OjpN
ZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OmVuZ2luZURlc2NyaXB0aW9uIGNvbnN0KToKKyAgICAg
ICAgKFdlYktpdDo6TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjphdWRpb1NvdXJjZVByb3ZpZGVy
KToKKyAgICAgICAgKFdlYktpdDo6TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpjcmVhdGVTZXNz
aW9uKToKKyAgICAgICAgKFdlYktpdDo6TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpzZXRDRE1T
ZXNzaW9uKToKKyAgICAgICAgKFdlYktpdDo6TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjprZXlB
ZGRlZCk6CisgICAgICAgIChXZWJLaXQ6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6Y2RtSW5z
dGFuY2VBdHRhY2hlZCk6CisgICAgICAgIChXZWJLaXQ6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90
ZTo6Y2RtSW5zdGFuY2VEZXRhY2hlZCk6CisgICAgICAgIChXZWJLaXQ6Ok1lZGlhUGxheWVyUHJp
dmF0ZVJlbW90ZTo6YXR0ZW1wdFRvRGVjcnlwdFdpdGhJbnN0YW5jZSk6CisgICAgICAgIChXZWJL
aXQ6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6d2FpdGluZ0ZvcktleSBjb25zdCk6CisgICAg
ICAgIChXZWJLaXQ6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6cmVxdWlyZXNUZXh0VHJhY2tS
ZXByZXNlbnRhdGlvbiBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6Ok1lZGlhUGxheWVyUHJpdmF0
ZVJlbW90ZTo6c2V0VGV4dFRyYWNrUmVwcmVzZW50YXRpb24pOgorICAgICAgICAoV2ViS2l0OjpN
ZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OnN5bmNUZXh0VHJhY2tCb3VuZHMpOgorICAgICAgICAo
V2ViS2l0OjpNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OnRyYWNrc0NoYW5nZWQpOgorICAgICAg
ICAoV2ViS2l0OjpNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OnNpbXVsYXRlQXVkaW9JbnRlcnJ1
cHRpb24pOgorICAgICAgICAoV2ViS2l0OjpNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OmJlZ2lu
U2ltdWxhdGVkSERDUEVycm9yKToKKyAgICAgICAgKFdlYktpdDo6TWVkaWFQbGF5ZXJQcml2YXRl
UmVtb3RlOjplbmRTaW11bGF0ZWRIRENQRXJyb3IpOgorICAgICAgICAoV2ViS2l0OjpNZWRpYVBs
YXllclByaXZhdGVSZW1vdGU6Omxhbmd1YWdlT2ZQcmltYXJ5QXVkaW9UcmFjayBjb25zdCk6Cisg
ICAgICAgIChXZWJLaXQ6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6ZXh0cmFNZW1vcnlDb3N0
IGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpmaWxl
U2l6ZSBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6
ZW5kZWQgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6
OnZpZGVvUGxheWJhY2tRdWFsaXR5TWV0cmljcyk6CisgICAgICAgIChXZWJLaXQ6Ok1lZGlhUGxh
eWVyUHJpdmF0ZVJlbW90ZTo6bm90aWZ5VHJhY2tNb2RlQ2hhbmdlZCk6CisgICAgICAgIChXZWJL
aXQ6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6bm90aWZ5QWN0aXZlU291cmNlQnVmZmVyc0No
YW5nZWQpOgorICAgICAgICAoV2ViS2l0OjpNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OnNldFNo
b3VsZERpc2FibGVTbGVlcCk6CisgICAgICAgIChXZWJLaXQ6Ok1lZGlhUGxheWVyUHJpdmF0ZVJl
bW90ZTo6YXBwbGljYXRpb25XaWxsUmVzaWduQWN0aXZlKToKKyAgICAgICAgKFdlYktpdDo6TWVk
aWFQbGF5ZXJQcml2YXRlUmVtb3RlOjphcHBsaWNhdGlvbkRpZEJlY29tZUFjdGl2ZSk6CisgICAg
ICAgIChXZWJLaXQ6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6cGVyZm9ybVRhc2tBdE1lZGlh
VGltZSk6CisgICAgICAgIChXZWJLaXQ6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6c2hvdWxk
SWdub3JlSW50cmluc2ljU2l6ZSk6CisgICAgICAgIChXZWJLaXQ6Ok1lZGlhUGxheWVyUHJpdmF0
ZVJlbW90ZTo6bG9nQ2hhbm5lbCBjb25zdCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvbWVk
aWEvTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlLmg6IEFkZGVkLgorICAgICAgICAqIFdlYlByb2Nl
c3MvR1BVL21lZGlhL01lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZUlkZW50aWZpZXIuaDogQWRkZWQu
CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2Vy
LmNwcDogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6Ok1lZGlhUGxheWVyUmVtb3RlRmFjdG9yeTo6
TWVkaWFQbGF5ZXJSZW1vdGVGYWN0b3J5KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTWVkaWFQ
bGF5ZXJNYW5hZ2VyOjpSZW1vdGVNZWRpYVBsYXllck1hbmFnZXIpOgorICAgICAgICAoV2ViS2l0
OjpSZW1vdGVNZWRpYVBsYXllck1hbmFnZXI6On5SZW1vdGVNZWRpYVBsYXllck1hbmFnZXIpOgor
ICAgICAgICAoV2ViS2l0OjpSZW1vdGVNZWRpYVBsYXllck1hbmFnZXI6OnN1cHBsZW1lbnROYW1l
KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyOjppbml0aWFsaXpl
KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyOjpjcmVhdGVSZW1v
dGVNZWRpYVBsYXllcik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZU1lZGlhUGxheWVyTWFuYWdl
cjo6Z2V0U3VwcG9ydGVkVHlwZXMpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVNZWRpYVBsYXll
ck1hbmFnZXI6OnN1cHBvcnRzVHlwZUFuZENvZGVjcyk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90
ZU1lZGlhUGxheWVyTWFuYWdlcjo6c3VwcG9ydHNLZXlTeXN0ZW0pOgorICAgICAgICAoV2ViS2l0
OjpSZW1vdGVNZWRpYVBsYXllck1hbmFnZXI6Om9yaWdpbnNJbk1lZGlhQ2FjaGUpOgorICAgICAg
ICAoV2ViS2l0OjpSZW1vdGVNZWRpYVBsYXllck1hbmFnZXI6OmNsZWFyTWVkaWFDYWNoZSk6Cisg
ICAgICAgIChXZWJLaXQ6OlJlbW90ZU1lZGlhUGxheWVyTWFuYWdlcjo6Y2xlYXJNZWRpYUNhY2hl
Rm9yT3JpZ2lucyk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZU1lZGlhUGxheWVyTWFuYWdlcjo6
bmV0d29ya1N0YXRlQ2hhbmdlZCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZU1lZGlhUGxheWVy
TWFuYWdlcjo6dXBkYXRlUHJlZmVyZW5jZXMpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVNZWRp
YVBsYXllck1hbmFnZXI6OmdwdVByb2Nlc3NDb25uZWN0aW9uIGNvbnN0KToKKyAgICAgICAgKiBX
ZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVNZWRpYVBsYXllck1hbmFnZXIuaDogQWRkZWQuCisg
ICAgICAgICogV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyLm1l
c3NhZ2VzLmluOiBBZGRlZC4KKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5j
cHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnVwZGF0ZVByZWZlcmVuY2VzKToKKyAgICAg
ICAgKiBXZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwOgorCiAyMDE5LTEyLTExICBUcnVpdHQgU2F2
ZWxsICA8dHNhdmVsbEBhcHBsZS5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgcm9sbGluZyBv
dXQgcjI1MzM3Ni4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvagppbmRleCAwM2U2ZjU0MzNiZjZmNjdlYmM1ZjQ5ZmVkMGE5NTAxMmQ0YmU0YmY5
Li5iZjI4MWFmZTUxN2I5ZWE2YzRjOWNlNmJkZWMxZTE4NDcwYmY4NGNkIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291
cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xMDQsNiAr
MTA0LDcgQEAKIAkJMDcxRTQ5NkUxQUQ1QUEwRDAwOEE1MEI0IC8qIE1lZGlhUGxheWJhY2tUYXJn
ZXRNYWMubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAw
NzFFNDk2RDFBRDVBQTBEMDA4QTUwQjQgLyogTWVkaWFQbGF5YmFja1RhcmdldE1hYy5tbSAqLzsg
fTsKIAkJMDcxRTQ5NzAxQUQ1QUI1RTAwOEE1MEI0IC8qIE1lZGlhUGxheWJhY2tUYXJnZXRNYWMu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3MUU0OTZG
MUFENUFCNUUwMDhBNTBCNCAvKiBNZWRpYVBsYXliYWNrVGFyZ2V0TWFjLmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMDcyMEIwQTExNEQzMzIzNTAw
NjQyOTU1IC8qIEdlbmVyaWNFdmVudFF1ZXVlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSAwNzIwQjA5RjE0RDMzMjM1MDA2NDI5NTUgLyogR2VuZXJpY0V2
ZW50UXVldWUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OworCQkwNzI1RUZBOTIzOUFENzkzMDBBNTM4QTkgLyogTWVkaWFQbGF5ZXJQcml2YXRlLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwNzlGNUU0QjBGM0JF
QkVBMDA1RTA3ODIgLyogTWVkaWFQbGF5ZXJQcml2YXRlLmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMDcyNzdFNEQxN0QwMThDQzAwMTU1MzREIC8q
IEpTTWVkaWFTdHJlYW0uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDA3Mjc3RTQxMTdEMDE4Q0MwMDE1NTM0RCAvKiBKU01lZGlhU3RyZWFtLmggKi87IH07
CiAJCTA3Mjc3RTREMTdEMDE4Q0MwMDE1NTM0RSAvKiBKU0NhbnZhc0NhcHR1cmVNZWRpYVN0cmVh
bVRyYWNrLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAw
NzI3N0U0MTE3RDAxOENDMDAxNTUzNEUgLyogSlNDYW52YXNDYXB0dXJlTWVkaWFTdHJlYW1UcmFj
ay5oICovOyB9OwogCQkwNzI3N0U0RjE3RDAxOENDMDAxNTUzNEQgLyogSlNNZWRpYVN0cmVhbUF1
ZGlvRGVzdGluYXRpb25Ob2RlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSAwNzI3N0U0MzE3RDAxOENDMDAxNTUzNEQgLyogSlNNZWRpYVN0cmVhbUF1ZGlv
RGVzdGluYXRpb25Ob2RlLmggKi87IH07CkBAIC0zMTM3OSw2ICszMTM4MCw3IEBACiAJCQkJMDc3
QjY0MTMxQjk0RjEyRTAwM0U5QUQ1IC8qIE1lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJNb2NrLmgg
aW4gSGVhZGVycyAqLywKIAkJCQlFNDQ2MTNFNDBDRDY4MUEyMDBGQURBNzUgLyogTWVkaWFQbGF5
ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUNENTIwOUU0MUIwQkQ4MzgwMDc3MTg0RSAvKiBNZWRp
YVBsYXllckVudW1zLmggaW4gSGVhZGVycyAqLywKKwkJCQkwNzI1RUZBOTIzOUFENzkzMDBBNTM4
QTkgLyogTWVkaWFQbGF5ZXJQcml2YXRlLmggaW4gSGVhZGVycyAqLywKIAkJCQkwNzZGMEQwRTEy
QjgxOTI3MDBDMjZBQTQgLyogTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uLmggaW4gSGVh
ZGVycyAqLywKIAkJCQlERjlBRkQ3MjEzRkMzMUQ4MDAxNUZFQjcgLyogTWVkaWFQbGF5ZXJQcml2
YXRlQVZGb3VuZGF0aW9uT2JqQy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQ0RDOEI1QTMxODA0NjM0
NzAwMTZFNjg1IC8qIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQy5oIGluIEhl
YWRlcnMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Db250ZW50VHlw
ZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vQ29udGVudFR5cGUuaAppbmRleCBjODJiNWI3
MTk3YzllMTVkMWUyZjU0N2ZkNTY0MWZjNWY0ZWM1ZWNmLi41ODVhM2ZkNWE3ZWZkMWFiMzQ4ZDE0
ZjFmZjIxZTkwOWU2NjZjMjQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9D
b250ZW50VHlwZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0NvbnRlbnRUeXBlLmgK
QEAgLTMzLDggKzMzLDggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBDb250ZW50VHlw
ZSB7CiBwdWJsaWM6Ci0gICAgZXhwbGljaXQgQ29udGVudFR5cGUoU3RyaW5nJiYgdHlwZSk7Ci0g
ICAgZXhwbGljaXQgQ29udGVudFR5cGUoY29uc3QgU3RyaW5nJiB0eXBlKTsKKyAgICBXRUJDT1JF
X0VYUE9SVCBleHBsaWNpdCBDb250ZW50VHlwZShTdHJpbmcmJiB0eXBlKTsKKyAgICBXRUJDT1JF
X0VYUE9SVCBleHBsaWNpdCBDb250ZW50VHlwZShjb25zdCBTdHJpbmcmIHR5cGUpOwogICAgIENv
bnRlbnRUeXBlKCkgPSBkZWZhdWx0OwogCiAgICAgc3RhdGljIGNvbnN0IFN0cmluZyYgY29kZWNz
UGFyYW1ldGVyKCk7CkBAIC00OSw2ICs0OSwyMyBAQCBwdWJsaWM6CiAKICAgICBTdHJpbmcgdG9K
U09OU3RyaW5nKCkgY29uc3Q7CiAKKyAgICB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPgorICAgIHZv
aWQgZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0CisgICAgeworICAgICAgICBlbmNvZGVy
IDw8IG1fdHlwZTsKKyAgICB9CisKKyAgICB0ZW1wbGF0ZSA8Y2xhc3MgRGVjb2Rlcj4KKyAgICBz
dGF0aWMgT3B0aW9uYWw8Q29udGVudFR5cGU+IGRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQorICAg
IHsKKyAgICAgICAgT3B0aW9uYWw8U3RyaW5nPiB0eXBlOworICAgICAgICBkZWNvZGVyID4+IHR5
cGU7CisgICAgICAgIGlmICghdHlwZSkKKyAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7
CisKKyAgICAgICAgcmV0dXJuIHsgQ29udGVudFR5cGUoV1RGTW92ZSgqdHlwZSkpIH07CisgICAg
fQorCiBwcml2YXRlOgogICAgIFN0cmluZyBtX3R5cGU7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuY3BwCmluZGV4IGNlMjNhYjc4NGJjNmMy
YTE1ZmI4OTFkODE1Nzk1OWYxYzE2NGI1NGEuLjI0NzJhMTFlNmIzYzYxOGMwZDAyY2EzMzU4YmQ5
MWIwZGQ0YzZjODYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L01lZGlhUGxheWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9N
ZWRpYVBsYXllci5jcHAKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA3
LTIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAy
MDA3LTIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCkBAIC05MCwxNCArOTAsNiBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKLSNpZiAhUkVMRUFTRV9MT0dfRElTQUJMRUQKLXN0YXRpYyBSZWZQdHI8TG9nZ2VyPiYgbnVs
bExvZ2dlcigpCi17Ci0gICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFJlZlB0cjxMb2dnZXI+PiBs
b2dnZXI7Ci0gICAgcmV0dXJuIGxvZ2dlcjsKLX0KLSNlbmRpZgotCiAvLyBhIG51bGwgcGxheWVy
IHRvIG1ha2UgTWVkaWFQbGF5ZXIgbG9naWMgc2ltcGxlcgogCiBjbGFzcyBOdWxsTWVkaWFQbGF5
ZXJQcml2YXRlIGZpbmFsIDogcHVibGljIE1lZGlhUGxheWVyUHJpdmF0ZUludGVyZmFjZSB7CkBA
IC0xNjYsOCArMTU4LDIyIEBAIHB1YmxpYzoKICAgICBib29sIGhhc1NpbmdsZVNlY3VyaXR5T3Jp
Z2luKCkgY29uc3QgZmluYWwgeyByZXR1cm4gdHJ1ZTsgfQogfTsKIAorI2lmICFSRUxFQVNFX0xP
R19ESVNBQkxFRAorc3RhdGljIFJlZlB0cjxMb2dnZXI+JiBudWxsTG9nZ2VyKCkKK3sKKyAgICBz
dGF0aWMgTmV2ZXJEZXN0cm95ZWQ8UmVmUHRyPExvZ2dlcj4+IGxvZ2dlcjsKKyAgICByZXR1cm4g
bG9nZ2VyOworfQorI2VuZGlmCisKK3N0YXRpYyBjb25zdCBWZWN0b3I8V2ViQ29yZTo6Q29udGVu
dFR5cGU+JiBudWxsQ29udGVudFR5cGVWZWN0b3IoKQoreworICAgIHN0YXRpYyBOZXZlckRlc3Ry
b3llZDxWZWN0b3I8V2ViQ29yZTo6Q29udGVudFR5cGU+PiB2ZWN0b3I7CisgICAgcmV0dXJuIHZl
Y3RvcjsKK30KKwogY2xhc3MgTnVsbE1lZGlhUGxheWVyQ2xpZW50IDogcHVibGljIE1lZGlhUGxh
eWVyQ2xpZW50IHsKLXB1YmxpYzoKK3ByaXZhdGU6CiAjaWYgIVJFTEVBU0VfTE9HX0RJU0FCTEVE
CiAgICAgY29uc3QgTG9nZ2VyJiBtZWRpYVBsYXllckxvZ2dlcigpIGZpbmFsCiAgICAgewpAQCAt
MTc5LDggKzE4NSwxMSBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiAqbnVsbExvZ2dlcigpLmdl
dCgpOwogICAgIH0KICNlbmRpZgorCisgICAgY29uc3QgVmVjdG9yPFdlYkNvcmU6OkNvbnRlbnRU
eXBlPiYgbWVkaWFDb250ZW50VHlwZXNSZXF1aXJpbmdIYXJkd2FyZVN1cHBvcnQoKSBjb25zdCBm
aW5hbCB7IHJldHVybiBudWxsQ29udGVudFR5cGVWZWN0b3IoKTsgfQogfTsKIAorCiBjb25zdCBW
ZWN0b3I8Q29udGVudFR5cGU+JiBNZWRpYVBsYXllckNsaWVudDo6bWVkaWFDb250ZW50VHlwZXNS
ZXF1aXJpbmdIYXJkd2FyZVN1cHBvcnQoKSBjb25zdAogewogICAgIHN0YXRpYyBOZXZlckRlc3Ry
b3llZDxWZWN0b3I8Q29udGVudFR5cGU+PiBjb250ZW50VHlwZXM7CkBAIC0xOTUsMTcgKzIwNCw3
IEBAIHN0YXRpYyBNZWRpYVBsYXllckNsaWVudCYgbnVsbE1lZGlhUGxheWVyQ2xpZW50KCkKIAog
Ly8gZW5naW5lIHN1cHBvcnQKIAotc3RydWN0IE1lZGlhUGxheWVyRmFjdG9yeSB7Ci0gICAgQ3Jl
YXRlTWVkaWFFbmdpbmVQbGF5ZXIgY29uc3RydWN0b3I7Ci0gICAgTWVkaWFFbmdpbmVTdXBwb3J0
ZWRUeXBlcyBnZXRTdXBwb3J0ZWRUeXBlczsKLSAgICBNZWRpYUVuZ2luZVN1cHBvcnRzVHlwZSBz
dXBwb3J0c1R5cGVBbmRDb2RlY3M7Ci0gICAgTWVkaWFFbmdpbmVPcmlnaW5zSW5NZWRpYUNhY2hl
IG9yaWdpbnNJbk1lZGlhQ2FjaGU7Ci0gICAgTWVkaWFFbmdpbmVDbGVhck1lZGlhQ2FjaGUgY2xl
YXJNZWRpYUNhY2hlOwotICAgIE1lZGlhRW5naW5lQ2xlYXJNZWRpYUNhY2hlRm9yT3JpZ2lucyBj
bGVhck1lZGlhQ2FjaGVGb3JPcmlnaW5zOwotICAgIE1lZGlhRW5naW5lU3VwcG9ydHNLZXlTeXN0
ZW0gc3VwcG9ydHNLZXlTeXN0ZW07Ci19OwotCi1zdGF0aWMgdm9pZCBhZGRNZWRpYUVuZ2luZShD
cmVhdGVNZWRpYUVuZ2luZVBsYXllciYmLCBNZWRpYUVuZ2luZVN1cHBvcnRlZFR5cGVzLCBNZWRp
YUVuZ2luZVN1cHBvcnRzVHlwZSwgTWVkaWFFbmdpbmVPcmlnaW5zSW5NZWRpYUNhY2hlLCBNZWRp
YUVuZ2luZUNsZWFyTWVkaWFDYWNoZSwgTWVkaWFFbmdpbmVDbGVhck1lZGlhQ2FjaGVGb3JPcmln
aW5zLCBNZWRpYUVuZ2luZVN1cHBvcnRzS2V5U3lzdGVtKTsKK3N0YXRpYyB2b2lkIGFkZE1lZGlh
RW5naW5lKHN0ZDo6dW5pcXVlX3B0cjxNZWRpYVBsYXllckZhY3Rvcnk+JiYpOwogCiBzdGF0aWMg
TG9jayBtZWRpYUVuZ2luZVZlY3RvckxvY2s7CiAKQEAgLTIxNSwyMSArMjE0LDM3IEBAIHN0YXRp
YyBib29sJiBoYXZlTWVkaWFFbmdpbmVzVmVjdG9yKCkKICAgICByZXR1cm4gaGF2ZVZlY3RvcjsK
IH0KIAotc3RhdGljIFZlY3RvcjxNZWRpYVBsYXllckZhY3Rvcnk+JiBtdXRhYmxlSW5zdGFsbGVk
TWVkaWFFbmdpbmVzVmVjdG9yKCkKK3N0YXRpYyBWZWN0b3I8c3RkOjp1bmlxdWVfcHRyPE1lZGlh
UGxheWVyRmFjdG9yeT4+JiBtdXRhYmxlSW5zdGFsbGVkTWVkaWFFbmdpbmVzVmVjdG9yKCkKIHsK
LSAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8VmVjdG9yPE1lZGlhUGxheWVyRmFjdG9yeT4+IGlu
c3RhbGxlZEVuZ2luZXM7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFZlY3RvcjxzdGQ6OnVu
aXF1ZV9wdHI8TWVkaWFQbGF5ZXJGYWN0b3J5Pj4+IGluc3RhbGxlZEVuZ2luZXM7CiAgICAgcmV0
dXJuIGluc3RhbGxlZEVuZ2luZXM7CiB9CiAKK3N0YXRpYyBSZW1vdGVNZWRpYVBsYXllclN1cHBv
cnQ6OlJlZ2lzdGVyUmVtb3RlUGxheWVyQ2FsbGJhY2smIHJlZ2lzdGVyUmVtb3RlUGxheWVyQ2Fs
bGJhY2soKQoreworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxSZW1vdGVNZWRpYVBsYXllclN1
cHBvcnQ6OlJlZ2lzdGVyUmVtb3RlUGxheWVyQ2FsbGJhY2s+IGNhbGxiYWNrOworICAgIHJldHVy
biBjYWxsYmFjazsKK30KKwordm9pZCBSZW1vdGVNZWRpYVBsYXllclN1cHBvcnQ6OnNldFJlZ2lz
dGVyUmVtb3RlUGxheWVyQ2FsbGJhY2soUmVnaXN0ZXJSZW1vdGVQbGF5ZXJDYWxsYmFjayYmIGNh
bGxiYWNrKQoreworICAgIHJlZ2lzdGVyUmVtb3RlUGxheWVyQ2FsbGJhY2soKSA9IFdURk1vdmUo
Y2FsbGJhY2spOworfQorCiBzdGF0aWMgdm9pZCBidWlsZE1lZGlhRW5naW5lc1ZlY3RvcigpCiB7
CiAgICAgQVNTRVJUKG1lZGlhRW5naW5lVmVjdG9yTG9jay5pc0xvY2tlZCgpKTsKIAogI2lmIFVT
RShBVkZPVU5EQVRJT04pCisKICAgICBpZiAoRGVwcmVjYXRlZEdsb2JhbFNldHRpbmdzOjppc0FW
Rm91bmRhdGlvbkVuYWJsZWQoKSkgewogCisgICAgICAgIGF1dG8mIHJlZ2lzdGVyUmVtb3RlRW5n
aW5lID0gcmVnaXN0ZXJSZW1vdGVQbGF5ZXJDYWxsYmFjaygpOwogI2lmIFBMQVRGT1JNKENPQ09B
KQotICAgICAgICBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpyZWdpc3Rlck1l
ZGlhRW5naW5lKGFkZE1lZGlhRW5naW5lKTsKKyAgICAgICAgaWYgKHJlZ2lzdGVyUmVtb3RlRW5n
aW5lKQorICAgICAgICAgICAgcmVnaXN0ZXJSZW1vdGVFbmdpbmUoYWRkTWVkaWFFbmdpbmUsIE1l
ZGlhUGxheWVyRW51bXM6Ok1lZGlhRW5naW5lSWRlbnRpZmllcjo6QVZGb3VuZGF0aW9uKTsKKyAg
ICAgICAgZWxzZQorICAgICAgICAgICAgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2Jq
Qzo6cmVnaXN0ZXJNZWRpYUVuZ2luZShhZGRNZWRpYUVuZ2luZSk7CiAjZW5kaWYKIAogI2lmIEVO
QUJMRShNRURJQV9TT1VSQ0UpCkBAIC0yNjUsNyArMjgwLDcgQEAgc3RhdGljIHZvaWQgYnVpbGRN
ZWRpYUVuZ2luZXNWZWN0b3IoKQogICAgIGhhdmVNZWRpYUVuZ2luZXNWZWN0b3IoKSA9IHRydWU7
CiB9CiAKLXN0YXRpYyBjb25zdCBWZWN0b3I8TWVkaWFQbGF5ZXJGYWN0b3J5PiYgaW5zdGFsbGVk
TWVkaWFFbmdpbmVzKCkKK3N0YXRpYyBjb25zdCBWZWN0b3I8c3RkOjp1bmlxdWVfcHRyPE1lZGlh
UGxheWVyRmFjdG9yeT4+JiBpbnN0YWxsZWRNZWRpYUVuZ2luZXMoKQogewogICAgIHsKICAgICAg
ICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhtZWRpYUVuZ2luZVZlY3RvckxvY2spOwpAQCAtMjc2
LDE0ICsyOTEsOSBAQCBzdGF0aWMgY29uc3QgVmVjdG9yPE1lZGlhUGxheWVyRmFjdG9yeT4mIGlu
c3RhbGxlZE1lZGlhRW5naW5lcygpCiAgICAgcmV0dXJuIG11dGFibGVJbnN0YWxsZWRNZWRpYUVu
Z2luZXNWZWN0b3IoKTsKIH0KIAotc3RhdGljIHZvaWQgYWRkTWVkaWFFbmdpbmUoQ3JlYXRlTWVk
aWFFbmdpbmVQbGF5ZXImJiBjb25zdHJ1Y3RvciwgTWVkaWFFbmdpbmVTdXBwb3J0ZWRUeXBlcyBn
ZXRTdXBwb3J0ZWRUeXBlcywgTWVkaWFFbmdpbmVTdXBwb3J0c1R5cGUgc3VwcG9ydHNUeXBlLAot
ICAgIE1lZGlhRW5naW5lT3JpZ2luc0luTWVkaWFDYWNoZSBvcmlnaW5zSW5NZWRpYUNhY2hlLCBN
ZWRpYUVuZ2luZUNsZWFyTWVkaWFDYWNoZSBjbGVhck1lZGlhQ2FjaGUsIE1lZGlhRW5naW5lQ2xl
YXJNZWRpYUNhY2hlRm9yT3JpZ2lucyBjbGVhck1lZGlhQ2FjaGVGb3JPcmlnaW5zLCBNZWRpYUVu
Z2luZVN1cHBvcnRzS2V5U3lzdGVtIHN1cHBvcnRzS2V5U3lzdGVtKQorc3RhdGljIHZvaWQgYWRk
TWVkaWFFbmdpbmUoc3RkOjp1bmlxdWVfcHRyPE1lZGlhUGxheWVyRmFjdG9yeT4mJiBmYWN0b3J5
KQogewotICAgIEFTU0VSVChjb25zdHJ1Y3Rvcik7Ci0gICAgQVNTRVJUKGdldFN1cHBvcnRlZFR5
cGVzKTsKLSAgICBBU1NFUlQoc3VwcG9ydHNUeXBlKTsKLQotICAgIG11dGFibGVJbnN0YWxsZWRN
ZWRpYUVuZ2luZXNWZWN0b3IoKS5hcHBlbmQoTWVkaWFQbGF5ZXJGYWN0b3J5IHsgV1RGTW92ZShj
b25zdHJ1Y3RvciksIGdldFN1cHBvcnRlZFR5cGVzLCBzdXBwb3J0c1R5cGUsIG9yaWdpbnNJbk1l
ZGlhQ2FjaGUsIGNsZWFyTWVkaWFDYWNoZSwgY2xlYXJNZWRpYUNhY2hlRm9yT3JpZ2lucywgc3Vw
cG9ydHNLZXlTeXN0ZW0gfSk7CisgICAgbXV0YWJsZUluc3RhbGxlZE1lZGlhRW5naW5lc1ZlY3Rv
cigpLmFwcGVuZChXVEZNb3ZlKGZhY3RvcnkpKTsKIH0KIAogc3RhdGljIGNvbnN0IEF0b21TdHJp
bmcmIGFwcGxpY2F0aW9uT2N0ZXRTdHJlYW0oKQpAQCAtMjk4LDYgKzMwOCwyMSBAQCBzdGF0aWMg
Y29uc3QgQXRvbVN0cmluZyYgdGV4dFBsYWluKCkKICAgICByZXR1cm4gdGV4dFBsYWluOwogfQog
Citjb25zdCBNZWRpYVBsYXllckZhY3RvcnkqIE1lZGlhUGxheWVyOjptZWRpYUVuZ2luZShNZWRp
YVBsYXllckVudW1zOjpNZWRpYUVuZ2luZUlkZW50aWZpZXIgaWRlbnRpZmllcikKK3sKKyAgICBh
dXRvJiBlbmdpbmVzID0gaW5zdGFsbGVkTWVkaWFFbmdpbmVzKCk7CisgICAgYXV0byBjdXJyZW50
SW5kZXggPSBlbmdpbmVzLmZpbmRNYXRjaGluZyhbaWRlbnRpZmllcl0gKGF1dG8mIGVuZ2luZSkg
eworICAgICAgICByZXR1cm4gZW5naW5lLT5pZGVudGlmaWVyKCkgPT0gaWRlbnRpZmllcjsKKyAg
ICB9KTsKKworICAgIGlmIChjdXJyZW50SW5kZXggPT0gbm90Rm91bmQpIHsKKyAgICAgICAgQVNT
RVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIH0KKworICAg
IHJldHVybiBlbmdpbmVzW2N1cnJlbnRJbmRleF0uZ2V0KCk7Cit9CisKIHN0YXRpYyBjb25zdCBN
ZWRpYVBsYXllckZhY3RvcnkqIGJlc3RNZWRpYUVuZ2luZUZvclN1cHBvcnRQYXJhbWV0ZXJzKGNv
bnN0IE1lZGlhRW5naW5lU3VwcG9ydFBhcmFtZXRlcnMmIHBhcmFtZXRlcnMsIGNvbnN0IE1lZGlh
UGxheWVyRmFjdG9yeSogY3VycmVudCA9IG51bGxwdHIpCiB7CiAgICAgaWYgKHBhcmFtZXRlcnMu
dHlwZS5pc0VtcHR5KCkgJiYgIXBhcmFtZXRlcnMuaXNNZWRpYVNvdXJjZSAmJiAhcGFyYW1ldGVy
cy5pc01lZGlhU3RyZWFtKQpAQCAtMzE1LDM0ICszNDAsNDYgQEAgc3RhdGljIGNvbnN0IE1lZGlh
UGxheWVyRmFjdG9yeSogYmVzdE1lZGlhRW5naW5lRm9yU3VwcG9ydFBhcmFtZXRlcnMoY29uc3Qg
TWVkaWEKICAgICBNZWRpYVBsYXllcjo6U3VwcG9ydHNUeXBlIHN1cHBvcnRlZCA9IE1lZGlhUGxh
eWVyOjpTdXBwb3J0c1R5cGU6OklzTm90U3VwcG9ydGVkOwogICAgIGZvciAoYXV0byYgZW5naW5l
IDogaW5zdGFsbGVkTWVkaWFFbmdpbmVzKCkpIHsKICAgICAgICAgaWYgKGN1cnJlbnQpIHsKLSAg
ICAgICAgICAgIGlmIChjdXJyZW50ID09ICZlbmdpbmUpCisgICAgICAgICAgICBpZiAoY3VycmVu
dCA9PSBlbmdpbmUuZ2V0KCkpCiAgICAgICAgICAgICAgICAgY3VycmVudCA9IG51bGxwdHI7CiAg
ICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgfQotICAgICAgICBNZWRpYVBsYXllcjo6U3Vw
cG9ydHNUeXBlIGVuZ2luZVN1cHBvcnQgPSBlbmdpbmUuc3VwcG9ydHNUeXBlQW5kQ29kZWNzKHBh
cmFtZXRlcnMpOworICAgICAgICBNZWRpYVBsYXllcjo6U3VwcG9ydHNUeXBlIGVuZ2luZVN1cHBv
cnQgPSBlbmdpbmUtPnN1cHBvcnRzVHlwZUFuZENvZGVjcyhwYXJhbWV0ZXJzKTsKICAgICAgICAg
aWYgKGVuZ2luZVN1cHBvcnQgPiBzdXBwb3J0ZWQpIHsKICAgICAgICAgICAgIHN1cHBvcnRlZCA9
IGVuZ2luZVN1cHBvcnQ7Ci0gICAgICAgICAgICBmb3VuZEVuZ2luZSA9ICZlbmdpbmU7CisgICAg
ICAgICAgICBmb3VuZEVuZ2luZSA9IGVuZ2luZS5nZXQoKTsKICAgICAgICAgfQogICAgIH0KIAog
ICAgIHJldHVybiBmb3VuZEVuZ2luZTsKIH0KIAotc3RhdGljIGNvbnN0IE1lZGlhUGxheWVyRmFj
dG9yeSogbmV4dE1lZGlhRW5naW5lKGNvbnN0IE1lZGlhUGxheWVyRmFjdG9yeSogY3VycmVudCkK
K2NvbnN0IE1lZGlhUGxheWVyRmFjdG9yeSogTWVkaWFQbGF5ZXI6Om5leHRNZWRpYUVuZ2luZShj
b25zdCBNZWRpYVBsYXllckZhY3RvcnkqIGN1cnJlbnQpCiB7CisgICAgaWYgKG1fYWN0aXZlRW5n
aW5lSWRlbnRpZmllcikgeworICAgICAgICBhdXRvKiBlbmdpbmUgPSBtZWRpYUVuZ2luZShtX2Fj
dGl2ZUVuZ2luZUlkZW50aWZpZXIudmFsdWUoKSk7CisgICAgICAgIHJldHVybiBjdXJyZW50ICE9
IGVuZ2luZSA/IGVuZ2luZSA6IG51bGxwdHI7CisgICAgfQorCiAgICAgYXV0byYgZW5naW5lcyA9
IGluc3RhbGxlZE1lZGlhRW5naW5lcygpOwogICAgIGlmIChlbmdpbmVzLmlzRW1wdHkoKSkKICAg
ICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICAgICBpZiAoIWN1cnJlbnQpIAotICAgICAgICByZXR1
cm4gJmVuZ2luZXMuZmlyc3QoKTsKKyAgICAgICAgcmV0dXJuIGVuZ2luZXMuZmlyc3QoKS5nZXQo
KTsKKworICAgIGF1dG8gY3VycmVudEluZGV4ID0gZW5naW5lcy5maW5kTWF0Y2hpbmcoW2N1cnJl
bnRdIChhdXRvJiBlbmdpbmUpIHsKKyAgICAgICAgcmV0dXJuIGVuZ2luZS5nZXQoKSA9PSBjdXJy
ZW50OworICAgIH0pOworICAgIGlmIChjdXJyZW50SW5kZXggPT0gbm90Rm91bmQpIHsKKyAgICAg
ICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIH0K
IAotICAgIHNpemVfdCBjdXJyZW50SW5kZXggPSBjdXJyZW50IC0gJmVuZ2luZXMuZmlyc3QoKTsK
ICAgICBpZiAoY3VycmVudEluZGV4ICsgMSA+PSBlbmdpbmVzLnNpemUoKSkKICAgICAgICAgcmV0
dXJuIG51bGxwdHI7CiAKLSAgICByZXR1cm4gJmVuZ2luZXNbY3VycmVudEluZGV4ICsgMV07Cisg
ICAgcmV0dXJuIGVuZ2luZXNbY3VycmVudEluZGV4ICsgMV0uZ2V0KCk7CiB9CiAKIC8vIG1lZGlh
IHBsYXllcgpAQCAtMzUyLDYgKzM4OSwxMSBAQCBSZWY8TWVkaWFQbGF5ZXI+IE1lZGlhUGxheWVy
OjpjcmVhdGUoTWVkaWFQbGF5ZXJDbGllbnQmIGNsaWVudCkKICAgICByZXR1cm4gYWRvcHRSZWYo
Km5ldyBNZWRpYVBsYXllcihjbGllbnQpKTsKIH0KIAorUmVmPE1lZGlhUGxheWVyPiBNZWRpYVBs
YXllcjo6Y3JlYXRlKE1lZGlhUGxheWVyQ2xpZW50JiBjbGllbnQsIE1lZGlhUGxheWVyRW51bXM6
Ok1lZGlhRW5naW5lSWRlbnRpZmllciBtZWRpYUVuZ2luZUlkZW50aWZpZXIpCit7CisgICAgcmV0
dXJuIGFkb3B0UmVmKCpuZXcgTWVkaWFQbGF5ZXIoY2xpZW50LCBtZWRpYUVuZ2luZUlkZW50aWZp
ZXIpKTsKK30KKwogTWVkaWFQbGF5ZXI6Ok1lZGlhUGxheWVyKE1lZGlhUGxheWVyQ2xpZW50JiBj
bGllbnQpCiAgICAgOiBtX2NsaWVudCgmY2xpZW50KQogICAgICwgbV9yZWxvYWRUaW1lcigqdGhp
cywgJk1lZGlhUGxheWVyOjpyZWxvYWRUaW1lckZpcmVkKQpAQCAtMzU5LDYgKzQwMSwxNCBAQCBN
ZWRpYVBsYXllcjo6TWVkaWFQbGF5ZXIoTWVkaWFQbGF5ZXJDbGllbnQmIGNsaWVudCkKIHsKIH0K
IAorTWVkaWFQbGF5ZXI6Ok1lZGlhUGxheWVyKE1lZGlhUGxheWVyQ2xpZW50JiBjbGllbnQsIE1l
ZGlhUGxheWVyRW51bXM6Ok1lZGlhRW5naW5lSWRlbnRpZmllciBtZWRpYUVuZ2luZUlkZW50aWZp
ZXIpCisgICAgOiBtX2NsaWVudCgmY2xpZW50KQorICAgICwgbV9yZWxvYWRUaW1lcigqdGhpcywg
Jk1lZGlhUGxheWVyOjpyZWxvYWRUaW1lckZpcmVkKQorICAgICwgbV9wcml2YXRlKG1ha2VVbmlx
dWU8TnVsbE1lZGlhUGxheWVyUHJpdmF0ZT4odGhpcykpCisgICAgLCBtX2FjdGl2ZUVuZ2luZUlk
ZW50aWZpZXIobWVkaWFFbmdpbmVJZGVudGlmaWVyKQoreworfQorCiBNZWRpYVBsYXllcjo6fk1l
ZGlhUGxheWVyKCkKIHsKICAgICBBU1NFUlQoIW1faW5pdGlhbGl6aW5nTWVkaWFFbmdpbmUpOwpA
QCAtNDQxLDcgKzQ5MSw3IEBAIGJvb2wgTWVkaWFQbGF5ZXI6OmxvYWQoTWVkaWFTdHJlYW1Qcml2
YXRlJiBtZWRpYVN0cmVhbSkKIH0KICNlbmRpZgogCi1jb25zdCBNZWRpYVBsYXllckZhY3Rvcnkq
IE1lZGlhUGxheWVyOjpuZXh0QmVzdE1lZGlhRW5naW5lKGNvbnN0IE1lZGlhUGxheWVyRmFjdG9y
eSogY3VycmVudCkgY29uc3QKK2NvbnN0IE1lZGlhUGxheWVyRmFjdG9yeSogTWVkaWFQbGF5ZXI6
Om5leHRCZXN0TWVkaWFFbmdpbmUoY29uc3QgTWVkaWFQbGF5ZXJGYWN0b3J5KiBjdXJyZW50KQog
ewogICAgIE1lZGlhRW5naW5lU3VwcG9ydFBhcmFtZXRlcnMgcGFyYW1ldGVyczsKICAgICBwYXJh
bWV0ZXJzLnR5cGUgPSBtX2NvbnRlbnRUeXBlOwpAQCAtNDUzLDYgKzUwMywxNyBAQCBjb25zdCBN
ZWRpYVBsYXllckZhY3RvcnkqIE1lZGlhUGxheWVyOjpuZXh0QmVzdE1lZGlhRW5naW5lKGNvbnN0
IE1lZGlhUGxheWVyRmFjdAogICAgIHBhcmFtZXRlcnMuaXNNZWRpYVN0cmVhbSA9ICEhbV9tZWRp
YVN0cmVhbTsKICNlbmRpZgogCisgICAgaWYgKG1fYWN0aXZlRW5naW5lSWRlbnRpZmllcikgewor
ICAgICAgICBpZiAoY3VycmVudCkKKyAgICAgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAg
ICAgIGF1dG8qIGVuZ2luZSA9IG1lZGlhRW5naW5lKG1fYWN0aXZlRW5naW5lSWRlbnRpZmllci52
YWx1ZSgpKTsKKyAgICAgICAgaWYgKGVuZ2luZSAmJiBlbmdpbmUtPnN1cHBvcnRzVHlwZUFuZENv
ZGVjcyhwYXJhbWV0ZXJzKSAhPSBTdXBwb3J0c1R5cGU6OklzTm90U3VwcG9ydGVkKQorICAgICAg
ICAgICAgcmV0dXJuIGVuZ2luZTsKKworICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICB9CisK
ICAgICByZXR1cm4gYmVzdE1lZGlhRW5naW5lRm9yU3VwcG9ydFBhcmFtZXRlcnMocGFyYW1ldGVy
cywgY3VycmVudCk7CiB9CiAKQEAgLTQ4OSwxMyArNTUwLDE1IEBAIHZvaWQgTWVkaWFQbGF5ZXI6
OmxvYWRXaXRoTmV4dE1lZGlhRW5naW5lKGNvbnN0IE1lZGlhUGxheWVyRmFjdG9yeSogY3VycmVu
dCkKICAgICAgICAgbV9wcml2YXRlID0gbnVsbHB0cjsKICAgICB9IGVsc2UgaWYgKG1fY3VycmVu
dE1lZGlhRW5naW5lICE9IGVuZ2luZSkgewogICAgICAgICBtX2N1cnJlbnRNZWRpYUVuZ2luZSA9
IGVuZ2luZTsKLSAgICAgICAgbV9wcml2YXRlID0gZW5naW5lLT5jb25zdHJ1Y3Rvcih0aGlzKTsK
LSAgICAgICAgY2xpZW50KCkubWVkaWFQbGF5ZXJFbmdpbmVVcGRhdGVkKCk7Ci0gICAgICAgIG1f
cHJpdmF0ZS0+c2V0UHJpdmF0ZUJyb3dzaW5nTW9kZShtX3ByaXZhdGVCcm93c2luZyk7Ci0gICAg
ICAgIG1fcHJpdmF0ZS0+c2V0UHJlbG9hZChtX3ByZWxvYWQpOwotICAgICAgICBtX3ByaXZhdGUt
PnNldFByZXNlcnZlc1BpdGNoKHByZXNlcnZlc1BpdGNoKCkpOwotICAgICAgICBpZiAobV9zaG91
bGRQcmVwYXJlVG9SZW5kZXIpCi0gICAgICAgICAgICBtX3ByaXZhdGUtPnByZXBhcmVGb3JSZW5k
ZXJpbmcoKTsKKyAgICAgICAgbV9wcml2YXRlID0gZW5naW5lLT5jcmVhdGVNZWRpYUVuZ2luZVBs
YXllcih0aGlzKTsKKyAgICAgICAgaWYgKG1fcHJpdmF0ZSkgeworICAgICAgICAgICAgY2xpZW50
KCkubWVkaWFQbGF5ZXJFbmdpbmVVcGRhdGVkKCk7CisgICAgICAgICAgICBtX3ByaXZhdGUtPnNl
dFByaXZhdGVCcm93c2luZ01vZGUobV9wcml2YXRlQnJvd3NpbmcpOworICAgICAgICAgICAgbV9w
cml2YXRlLT5zZXRQcmVsb2FkKG1fcHJlbG9hZCk7CisgICAgICAgICAgICBtX3ByaXZhdGUtPnNl
dFByZXNlcnZlc1BpdGNoKHByZXNlcnZlc1BpdGNoKCkpOworICAgICAgICAgICAgaWYgKG1fc2hv
dWxkUHJlcGFyZVRvUmVuZGVyKQorICAgICAgICAgICAgICAgIG1fcHJpdmF0ZS0+cHJlcGFyZUZv
clJlbmRlcmluZygpOworICAgICAgICB9CiAgICAgfQogCiAgICAgaWYgKG1fcHJpdmF0ZSkgewpA
QCAtNTEyLDggKzU3NSwxMiBAQCB2b2lkIE1lZGlhUGxheWVyOjpsb2FkV2l0aE5leHRNZWRpYUVu
Z2luZShjb25zdCBNZWRpYVBsYXllckZhY3RvcnkqIGN1cnJlbnQpCiAgICAgICAgIG1fcHJpdmF0
ZS0+bG9hZChtX3VybC5zdHJpbmcoKSk7CiAgICAgfSBlbHNlIHsKICAgICAgICAgbV9wcml2YXRl
ID0gbWFrZVVuaXF1ZTxOdWxsTWVkaWFQbGF5ZXJQcml2YXRlPih0aGlzKTsKLSAgICAgICAgY2xp
ZW50KCkubWVkaWFQbGF5ZXJFbmdpbmVVcGRhdGVkKCk7Ci0gICAgICAgIGNsaWVudCgpLm1lZGlh
UGxheWVyUmVzb3VyY2VOb3RTdXBwb3J0ZWQoKTsKKyAgICAgICAgaWYgKCFtX2FjdGl2ZUVuZ2lu
ZUlkZW50aWZpZXIgJiYgaW5zdGFsbGVkTWVkaWFFbmdpbmVzKCkuc2l6ZSgpID4gMSAmJiBuZXh0
QmVzdE1lZGlhRW5naW5lKG1fY3VycmVudE1lZGlhRW5naW5lKSkKKyAgICAgICAgICAgIG1fcmVs
b2FkVGltZXIuc3RhcnRPbmVTaG90KDBfcyk7CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAg
Y2xpZW50KCkubWVkaWFQbGF5ZXJFbmdpbmVVcGRhdGVkKCk7CisgICAgICAgICAgICBjbGllbnQo
KS5tZWRpYVBsYXllclJlc291cmNlTm90U3VwcG9ydGVkKCk7CisgICAgICAgIH0KICAgICB9CiAK
ICAgICBtX2luaXRpYWxpemluZ01lZGlhRW5naW5lID0gZmFsc2U7CkBAIC05MjksNyArOTk2LDcg
QEAgdm9pZCBNZWRpYVBsYXllcjo6Z2V0U3VwcG9ydGVkVHlwZXMoSGFzaFNldDxTdHJpbmcsIEFT
Q0lJQ2FzZUluc2Vuc2l0aXZlSGFzaD4mIHQKIHsKICAgICBmb3IgKGF1dG8mIGVuZ2luZSA6IGlu
c3RhbGxlZE1lZGlhRW5naW5lcygpKSB7CiAgICAgICAgIEhhc2hTZXQ8U3RyaW5nLCBBU0NJSUNh
c2VJbnNlbnNpdGl2ZUhhc2g+IGVuZ2luZVR5cGVzOwotICAgICAgICBlbmdpbmUuZ2V0U3VwcG9y
dGVkVHlwZXMoZW5naW5lVHlwZXMpOworICAgICAgICBlbmdpbmUtPmdldFN1cHBvcnRlZFR5cGVz
KGVuZ2luZVR5cGVzKTsKICAgICAgICAgdHlwZXMuYWRkKGVuZ2luZVR5cGVzLmJlZ2luKCksIGVu
Z2luZVR5cGVzLmVuZCgpKTsKICAgICB9CiB9IApAQCAtMTEyNSwzNCArMTE5MiwyOCBAQCBzdGF0
aWMgdm9pZCBhZGRUb0hhc2goSGFzaFNldDxUPiYgdG9IYXNoLCBIYXNoU2V0PFQ+JiYgZnJvbUhh
c2gpCiBIYXNoU2V0PFJlZlB0cjxTZWN1cml0eU9yaWdpbj4+IE1lZGlhUGxheWVyOjpvcmlnaW5z
SW5NZWRpYUNhY2hlKGNvbnN0IFN0cmluZyYgcGF0aCkKIHsKICAgICBIYXNoU2V0PFJlZlB0cjxT
ZWN1cml0eU9yaWdpbj4+IG9yaWdpbnM7Ci0gICAgZm9yIChhdXRvJiBlbmdpbmUgOiBpbnN0YWxs
ZWRNZWRpYUVuZ2luZXMoKSkgewotICAgICAgICBpZiAoIWVuZ2luZS5vcmlnaW5zSW5NZWRpYUNh
Y2hlKQotICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgIGFkZFRvSGFzaChvcmlnaW5zLCBl
bmdpbmUub3JpZ2luc0luTWVkaWFDYWNoZShwYXRoKSk7Ci0gICAgfQorICAgIGZvciAoYXV0byYg
ZW5naW5lIDogaW5zdGFsbGVkTWVkaWFFbmdpbmVzKCkpCisgICAgICAgIGFkZFRvSGFzaChvcmln
aW5zLCBlbmdpbmUtPm9yaWdpbnNJbk1lZGlhQ2FjaGUocGF0aCkpOworCiAgICAgcmV0dXJuIG9y
aWdpbnM7CiB9CiAKIHZvaWQgTWVkaWFQbGF5ZXI6OmNsZWFyTWVkaWFDYWNoZShjb25zdCBTdHJp
bmcmIHBhdGgsIFdhbGxUaW1lIG1vZGlmaWVkU2luY2UpCiB7Ci0gICAgZm9yIChhdXRvJiBlbmdp
bmUgOiBpbnN0YWxsZWRNZWRpYUVuZ2luZXMoKSkgewotICAgICAgICBpZiAoZW5naW5lLmNsZWFy
TWVkaWFDYWNoZSkKLSAgICAgICAgICAgIGVuZ2luZS5jbGVhck1lZGlhQ2FjaGUocGF0aCwgbW9k
aWZpZWRTaW5jZSk7Ci0gICAgfQorICAgIGZvciAoYXV0byYgZW5naW5lIDogaW5zdGFsbGVkTWVk
aWFFbmdpbmVzKCkpCisgICAgICAgIGVuZ2luZS0+Y2xlYXJNZWRpYUNhY2hlKHBhdGgsIG1vZGlm
aWVkU2luY2UpOwogfQogCiB2b2lkIE1lZGlhUGxheWVyOjpjbGVhck1lZGlhQ2FjaGVGb3JPcmln
aW5zKGNvbnN0IFN0cmluZyYgcGF0aCwgY29uc3QgSGFzaFNldDxSZWZQdHI8U2VjdXJpdHlPcmln
aW4+PiYgb3JpZ2lucykKIHsKLSAgICBmb3IgKGF1dG8mIGVuZ2luZSA6IGluc3RhbGxlZE1lZGlh
RW5naW5lcygpKSB7Ci0gICAgICAgIGlmIChlbmdpbmUuY2xlYXJNZWRpYUNhY2hlRm9yT3JpZ2lu
cykKLSAgICAgICAgICAgIGVuZ2luZS5jbGVhck1lZGlhQ2FjaGVGb3JPcmlnaW5zKHBhdGgsIG9y
aWdpbnMpOwotICAgIH0KKyAgICBmb3IgKGF1dG8mIGVuZ2luZSA6IGluc3RhbGxlZE1lZGlhRW5n
aW5lcygpKQorICAgICAgICBlbmdpbmUtPmNsZWFyTWVkaWFDYWNoZUZvck9yaWdpbnMocGF0aCwg
b3JpZ2lucyk7CiB9CiAKIGJvb2wgTWVkaWFQbGF5ZXI6OnN1cHBvcnRzS2V5U3lzdGVtKGNvbnN0
IFN0cmluZyYga2V5U3lzdGVtLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlKQogewogICAgIGZvciAo
YXV0byYgZW5naW5lIDogaW5zdGFsbGVkTWVkaWFFbmdpbmVzKCkpIHsKLSAgICAgICAgaWYgKGVu
Z2luZS5zdXBwb3J0c0tleVN5c3RlbSAmJiBlbmdpbmUuc3VwcG9ydHNLZXlTeXN0ZW0oa2V5U3lz
dGVtLCBtaW1lVHlwZSkpCisgICAgICAgIGlmIChlbmdpbmUtPnN1cHBvcnRzS2V5U3lzdGVtKGtl
eVN5c3RlbSwgbWltZVR5cGUpKQogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogICAg
IHJldHVybiBmYWxzZTsKQEAgLTExNzIsNyArMTIzMyw3IEBAIHZvaWQgTWVkaWFQbGF5ZXI6Om5l
dHdvcmtTdGF0ZUNoYW5nZWQoKQogICAgIC8vIGxldCB0aGUgbmV4dCBlbmdpbmUgdHJ5LgogICAg
IGlmIChtX3ByaXZhdGUtPm5ldHdvcmtTdGF0ZSgpID49IE1lZGlhUGxheWVyOjpOZXR3b3JrU3Rh
dGU6OkZvcm1hdEVycm9yICYmIG1fcHJpdmF0ZS0+cmVhZHlTdGF0ZSgpIDwgTWVkaWFQbGF5ZXI6
OlJlYWR5U3RhdGU6OkhhdmVNZXRhZGF0YSkgewogICAgICAgICBjbGllbnQoKS5tZWRpYVBsYXll
ckVuZ2luZUZhaWxlZFRvTG9hZCgpOwotICAgICAgICBpZiAoaW5zdGFsbGVkTWVkaWFFbmdpbmVz
KCkuc2l6ZSgpID4gMSAmJiAobV9jb250ZW50VHlwZS5pc0VtcHR5KCkgfHwgbmV4dEJlc3RNZWRp
YUVuZ2luZShtX2N1cnJlbnRNZWRpYUVuZ2luZSkpKSB7CisgICAgICAgIGlmICghbV9hY3RpdmVF
bmdpbmVJZGVudGlmaWVyICYmIGluc3RhbGxlZE1lZGlhRW5naW5lcygpLnNpemUoKSA+IDEgJiYg
KG1fY29udGVudFR5cGUuaXNFbXB0eSgpIHx8IG5leHRCZXN0TWVkaWFFbmdpbmUobV9jdXJyZW50
TWVkaWFFbmdpbmUpKSkgewogICAgICAgICAgICAgbV9yZWxvYWRUaW1lci5zdGFydE9uZVNob3Qo
MF9zKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmgKaW5kZXggOGE3YjFlOWJmZDc4N2Y1MTMw
NTJiNTY4ODM0NTk0NDBkZjlkMWIxNy4uMTE0NjBjNzNkMzY0ODNlMzdmNjRjZjhkOGFlZjNhMDAz
YTkyYzAxZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVk
aWFQbGF5ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBs
YXllci5oCkBAIC02Nyw2ICs2Nyw3IEBAIGNsYXNzIEluYmFuZFRleHRUcmFja1ByaXZhdGU7CiBj
bGFzcyBMZWdhY3lDRE1TZXNzaW9uQ2xpZW50OwogY2xhc3MgTWVkaWFQbGF5YmFja1RhcmdldDsK
IGNsYXNzIE1lZGlhUGxheWVyOworY2xhc3MgTWVkaWFQbGF5ZXJGYWN0b3J5OwogY2xhc3MgTWVk
aWFQbGF5ZXJQcml2YXRlSW50ZXJmYWNlOwogY2xhc3MgTWVkaWFQbGF5ZXJSZXF1ZXN0SW5zdGFs
bE1pc3NpbmdQbHVnaW5zQ2FsbGJhY2s7CiBjbGFzcyBNZWRpYVNvdXJjZVByaXZhdGVDbGllbnQ7
CkBAIC03Niw3ICs3Nyw2IEBAIGNsYXNzIFRleHRUcmFja1JlcHJlc2VudGF0aW9uOwogCiBzdHJ1
Y3QgQ29va2llOwogc3RydWN0IEdyYXBoaWNzRGV2aWNlQWRhcHRlcjsKLXN0cnVjdCBNZWRpYVBs
YXllckZhY3Rvcnk7CiAKIHN0cnVjdCBNZWRpYUVuZ2luZVN1cHBvcnRQYXJhbWV0ZXJzIHsKICAg
ICBDb250ZW50VHlwZSB0eXBlOwpAQCAtODQsNiArODQsNDYgQEAgc3RydWN0IE1lZGlhRW5naW5l
U3VwcG9ydFBhcmFtZXRlcnMgewogICAgIGJvb2wgaXNNZWRpYVNvdXJjZSB7IGZhbHNlIH07CiAg
ICAgYm9vbCBpc01lZGlhU3RyZWFtIHsgZmFsc2UgfTsKICAgICBWZWN0b3I8Q29udGVudFR5cGU+
IGNvbnRlbnRUeXBlc1JlcXVpcmluZ0hhcmR3YXJlU3VwcG9ydDsKKworICAgIHRlbXBsYXRlPGNs
YXNzIEVuY29kZXI+CisgICAgdm9pZCBlbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QKKyAg
ICB7CisgICAgICAgIGVuY29kZXIgPDwgdHlwZTsKKyAgICAgICAgZW5jb2RlciA8PCB1cmw7Cisg
ICAgICAgIGVuY29kZXIgPDwgaXNNZWRpYVNvdXJjZTsKKyAgICAgICAgZW5jb2RlciA8PCBjb250
ZW50VHlwZXNSZXF1aXJpbmdIYXJkd2FyZVN1cHBvcnQ7CisgICAgfQorCisgICAgdGVtcGxhdGUg
PGNsYXNzIERlY29kZXI+CisgICAgc3RhdGljIE9wdGlvbmFsPE1lZGlhRW5naW5lU3VwcG9ydFBh
cmFtZXRlcnM+IGRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQorICAgIHsKKyAgICAgICAgT3B0aW9u
YWw8Q29udGVudFR5cGU+IHR5cGU7CisgICAgICAgIGRlY29kZXIgPj4gdHlwZTsKKyAgICAgICAg
aWYgKCF0eXBlKQorICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKworICAgICAgICBP
cHRpb25hbDxVUkw+IHVybDsKKyAgICAgICAgZGVjb2RlciA+PiB1cmw7CisgICAgICAgIGlmICgh
dXJsKQorICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKworICAgICAgICBPcHRpb25h
bDxib29sPiBpc01lZGlhU291cmNlOworICAgICAgICBkZWNvZGVyID4+IGlzTWVkaWFTb3VyY2U7
CisgICAgICAgIGlmICghaXNNZWRpYVNvdXJjZSkKKyAgICAgICAgICAgIHJldHVybiBXVEY6Om51
bGxvcHQ7CisKKyAgICAgICAgT3B0aW9uYWw8Ym9vbD4gaXNNZWRpYVN0cmVhbTsKKyAgICAgICAg
ZGVjb2RlciA+PiBpc01lZGlhU3RyZWFtOworICAgICAgICBpZiAoIWlzTWVkaWFTdHJlYW0pCisg
ICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworCisgICAgICAgIE9wdGlvbmFsPFZlY3Rv
cjxDb250ZW50VHlwZT4+IHR5cGVzUmVxdWlyaW5nSGFyZHdhcmU7CisgICAgICAgIGRlY29kZXIg
Pj4gdHlwZXNSZXF1aXJpbmdIYXJkd2FyZTsKKyAgICAgICAgaWYgKCF0eXBlc1JlcXVpcmluZ0hh
cmR3YXJlKQorICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKworICAgICAgICByZXR1
cm4ge3sgV1RGTW92ZSgqdHlwZSksIFdURk1vdmUoKnVybCksIFdURk1vdmUoKmlzTWVkaWFTb3Vy
Y2UpLCBXVEZNb3ZlKCppc01lZGlhU3RyZWFtKSwgV1RGTW92ZSgqdHlwZXNSZXF1aXJpbmdIYXJk
d2FyZSkgfX07CisgICAgfQogfTsKIAogc3RydWN0IFZpZGVvUGxheWJhY2tRdWFsaXR5TWV0cmlj
cyB7CkBAIC0yMzUsNyArMjc1LDcgQEAgcHVibGljOgogI2VuZGlmCiAKICAgICB2aXJ0dWFsIGJv
b2wgbWVkaWFQbGF5ZXJTaG91bGREaXNhYmxlU2xlZXAoKSBjb25zdCB7IHJldHVybiBmYWxzZTsg
fQotICAgIHZpcnR1YWwgY29uc3QgVmVjdG9yPENvbnRlbnRUeXBlPiYgbWVkaWFDb250ZW50VHlw
ZXNSZXF1aXJpbmdIYXJkd2FyZVN1cHBvcnQoKSBjb25zdDsKKyAgICB2aXJ0dWFsIGNvbnN0IFZl
Y3RvcjxDb250ZW50VHlwZT4mIG1lZGlhQ29udGVudFR5cGVzUmVxdWlyaW5nSGFyZHdhcmVTdXBw
b3J0KCkgY29uc3QgPSAwOwogICAgIHZpcnR1YWwgYm9vbCBtZWRpYVBsYXllclNob3VsZENoZWNr
SGFyZHdhcmVTdXBwb3J0KCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KIAogI2lmICFSRUxFQVNF
X0xPR19ESVNBQkxFRApAQCAtMjQ0LDE1ICsyODQsMTggQEAgcHVibGljOgogI2VuZGlmCiB9Owog
Ci1jbGFzcyBNZWRpYVBsYXllciA6IHB1YmxpYyBNZWRpYVBsYXllckVudW1zLCBwdWJsaWMgUmVm
Q291bnRlZDxNZWRpYVBsYXllcj4geworY2xhc3MgV0VCQ09SRV9FWFBPUlQgTWVkaWFQbGF5ZXIg
OiBwdWJsaWMgTWVkaWFQbGF5ZXJFbnVtcywgcHVibGljIFJlZkNvdW50ZWQ8TWVkaWFQbGF5ZXI+
IHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShNZWRpYVBsYXllcik7IFdURl9NQUtFX0ZBU1Rf
QUxMT0NBVEVEOwogcHVibGljOgogICAgIHN0YXRpYyBSZWY8TWVkaWFQbGF5ZXI+IGNyZWF0ZShN
ZWRpYVBsYXllckNsaWVudCYpOworICAgIHN0YXRpYyBSZWY8TWVkaWFQbGF5ZXI+IGNyZWF0ZShN
ZWRpYVBsYXllckNsaWVudCYsIE1lZGlhUGxheWVyRW51bXM6Ok1lZGlhRW5naW5lSWRlbnRpZmll
cik7CiAgICAgdmlydHVhbCB+TWVkaWFQbGF5ZXIoKTsKIAogICAgIHZvaWQgaW52YWxpZGF0ZSgp
OwogCiAgICAgLy8gTWVkaWEgZW5naW5lIHN1cHBvcnQuCisgICAgdXNpbmcgTWVkaWFQbGF5ZXJF
bnVtczo6U3VwcG9ydHNUeXBlOworICAgIHN0YXRpYyBjb25zdCBNZWRpYVBsYXllckZhY3Rvcnkq
IG1lZGlhRW5naW5lKE1lZGlhUGxheWVyRW51bXM6Ok1lZGlhRW5naW5lSWRlbnRpZmllcik7CiAg
ICAgc3RhdGljIFN1cHBvcnRzVHlwZSBzdXBwb3J0c1R5cGUoY29uc3QgTWVkaWFFbmdpbmVTdXBw
b3J0UGFyYW1ldGVycyYpOwogICAgIHN0YXRpYyB2b2lkIGdldFN1cHBvcnRlZFR5cGVzKEhhc2hT
ZXQ8U3RyaW5nLCBBU0NJSUNhc2VJbnNlbnNpdGl2ZUhhc2g+Jik7CiAgICAgc3RhdGljIGJvb2wg
aXNBdmFpbGFibGUoKTsKQEAgLTUzMSwxMSArNTc0LDExIEBAIHB1YmxpYzoKICAgICBzdGF0aWMg
dm9pZCByZXNldE1lZGlhRW5naW5lcygpOwogCiAjaWYgVVNFKEdTVFJFQU1FUikKLSAgICBXRUJD
T1JFX0VYUE9SVCB2b2lkIHNpbXVsYXRlQXVkaW9JbnRlcnJ1cHRpb24oKTsKKyAgICB2b2lkIHNp
bXVsYXRlQXVkaW9JbnRlcnJ1cHRpb24oKTsKICNlbmRpZgogCi0gICAgV0VCQ09SRV9FWFBPUlQg
dm9pZCBiZWdpblNpbXVsYXRlZEhEQ1BFcnJvcigpOwotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQg
ZW5kU2ltdWxhdGVkSERDUEVycm9yKCk7CisgICAgdm9pZCBiZWdpblNpbXVsYXRlZEhEQ1BFcnJv
cigpOworICAgIHZvaWQgZW5kU2ltdWxhdGVkSERDUEVycm9yKCk7CiAKICAgICBTdHJpbmcgbGFu
Z3VhZ2VPZlByaW1hcnlBdWRpb1RyYWNrKCkgY29uc3Q7CiAKQEAgLTU3MCw3ICs2MTMsNyBAQCBw
dWJsaWM6CiAgICAgdm9pZCBhcHBsaWNhdGlvbkRpZEJlY29tZUFjdGl2ZSgpOwogCiAjaWYgVVNF
KEFWRk9VTkRBVElPTikKLSAgICBXRUJDT1JFX0VYUE9SVCBBVlBsYXllciAqb2JqQ0FWRm91bmRh
dGlvbkFWUGxheWVyKCkgY29uc3Q7CisgICAgQVZQbGF5ZXIgKm9iakNBVkZvdW5kYXRpb25BVlBs
YXllcigpIGNvbnN0OwogI2VuZGlmCiAKICAgICBib29sIHBlcmZvcm1UYXNrQXRNZWRpYVRpbWUo
V1RGOjpGdW5jdGlvbjx2b2lkKCk+JiYsIE1lZGlhVGltZSk7CkBAIC01OTUsMTEgKzYzOCwxMyBA
QCBwdWJsaWM6CiAKIHByaXZhdGU6CiAgICAgTWVkaWFQbGF5ZXIoTWVkaWFQbGF5ZXJDbGllbnQm
KTsKKyAgICBNZWRpYVBsYXllcihNZWRpYVBsYXllckNsaWVudCYsIE1lZGlhUGxheWVyRW51bXM6
Ok1lZGlhRW5naW5lSWRlbnRpZmllcik7CiAKICAgICBNZWRpYVBsYXllckNsaWVudCYgY2xpZW50
KCkgY29uc3QgeyByZXR1cm4gKm1fY2xpZW50OyB9CiAKLSAgICBjb25zdCBNZWRpYVBsYXllckZh
Y3RvcnkqIG5leHRCZXN0TWVkaWFFbmdpbmUoY29uc3QgTWVkaWFQbGF5ZXJGYWN0b3J5KikgY29u
c3Q7CisgICAgY29uc3QgTWVkaWFQbGF5ZXJGYWN0b3J5KiBuZXh0QmVzdE1lZGlhRW5naW5lKGNv
bnN0IE1lZGlhUGxheWVyRmFjdG9yeSopOwogICAgIHZvaWQgbG9hZFdpdGhOZXh0TWVkaWFFbmdp
bmUoY29uc3QgTWVkaWFQbGF5ZXJGYWN0b3J5Kik7CisgICAgY29uc3QgTWVkaWFQbGF5ZXJGYWN0
b3J5KiBuZXh0TWVkaWFFbmdpbmUoY29uc3QgTWVkaWFQbGF5ZXJGYWN0b3J5Kik7CiAgICAgdm9p
ZCByZWxvYWRUaW1lckZpcmVkKCk7CiAKICAgICBNZWRpYVBsYXllckNsaWVudCogbV9jbGllbnQ7
CkBAIC02MDksNiArNjU0LDcgQEAgcHJpdmF0ZToKICAgICBVUkwgbV91cmw7CiAgICAgQ29udGVu
dFR5cGUgbV9jb250ZW50VHlwZTsKICAgICBTdHJpbmcgbV9rZXlTeXN0ZW07CisgICAgT3B0aW9u
YWw8TWVkaWFQbGF5ZXJFbnVtczo6TWVkaWFFbmdpbmVJZGVudGlmaWVyPiBtX2FjdGl2ZUVuZ2lu
ZUlkZW50aWZpZXI7CiAgICAgSW50U2l6ZSBtX3NpemU7CiAgICAgUHJlbG9hZCBtX3ByZWxvYWQg
eyBQcmVsb2FkOjpBdXRvIH07CiAgICAgZG91YmxlIG1fdm9sdW1lIHsgMSB9OwpAQCAtNjI4LDIz
ICs2NzQsMzggQEAgcHJpdmF0ZToKICNlbmRpZgogfTsKIAotdXNpbmcgQ3JlYXRlTWVkaWFFbmdp
bmVQbGF5ZXIgPSBXVEY6OkZ1bmN0aW9uPHN0ZDo6dW5pcXVlX3B0cjxNZWRpYVBsYXllclByaXZh
dGVJbnRlcmZhY2U+IChNZWRpYVBsYXllciopPjsKLXR5cGVkZWYgdm9pZCAoKk1lZGlhRW5naW5l
U3VwcG9ydGVkVHlwZXMpKEhhc2hTZXQ8U3RyaW5nLCBBU0NJSUNhc2VJbnNlbnNpdGl2ZUhhc2g+
JiB0eXBlcyk7Ci10eXBlZGVmIE1lZGlhUGxheWVyOjpTdXBwb3J0c1R5cGUgKCpNZWRpYUVuZ2lu
ZVN1cHBvcnRzVHlwZSkoY29uc3QgTWVkaWFFbmdpbmVTdXBwb3J0UGFyYW1ldGVycyYgcGFyYW1l
dGVycyk7Ci10eXBlZGVmIEhhc2hTZXQ8UmVmUHRyPFNlY3VyaXR5T3JpZ2luPj4gKCpNZWRpYUVu
Z2luZU9yaWdpbnNJbk1lZGlhQ2FjaGUpKGNvbnN0IFN0cmluZyYgcGF0aCk7Ci10eXBlZGVmIHZv
aWQgKCpNZWRpYUVuZ2luZUNsZWFyTWVkaWFDYWNoZSkoY29uc3QgU3RyaW5nJiBwYXRoLCBXYWxs
VGltZSBtb2RpZmllZFNpbmNlKTsKLXR5cGVkZWYgdm9pZCAoKk1lZGlhRW5naW5lQ2xlYXJNZWRp
YUNhY2hlRm9yT3JpZ2lucykoY29uc3QgU3RyaW5nJiBwYXRoLCBjb25zdCBIYXNoU2V0PFJlZlB0
cjxTZWN1cml0eU9yaWdpbj4+Jik7Ci10eXBlZGVmIGJvb2wgKCpNZWRpYUVuZ2luZVN1cHBvcnRz
S2V5U3lzdGVtKShjb25zdCBTdHJpbmcmIGtleVN5c3RlbSwgY29uc3QgU3RyaW5nJiBtaW1lVHlw
ZSk7CitjbGFzcyBNZWRpYVBsYXllckZhY3RvcnkgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NB
VEVEOworcHVibGljOgorICAgIE1lZGlhUGxheWVyRmFjdG9yeSgpID0gZGVmYXVsdDsKKyAgICB2
aXJ0dWFsIH5NZWRpYVBsYXllckZhY3RvcnkoKSA9IGRlZmF1bHQ7CisKKyAgICB2aXJ0dWFsIE1l
ZGlhUGxheWVyRW51bXM6Ok1lZGlhRW5naW5lSWRlbnRpZmllciBpZGVudGlmaWVyKCkgY29uc3Qg
ID0gMDsKKyAgICB2aXJ0dWFsIHN0ZDo6dW5pcXVlX3B0cjxNZWRpYVBsYXllclByaXZhdGVJbnRl
cmZhY2U+IGNyZWF0ZU1lZGlhRW5naW5lUGxheWVyKE1lZGlhUGxheWVyKikgY29uc3QgPSAwOwor
ICAgIHZpcnR1YWwgdm9pZCBnZXRTdXBwb3J0ZWRUeXBlcyhIYXNoU2V0PFN0cmluZywgQVNDSUlD
YXNlSW5zZW5zaXRpdmVIYXNoPiYpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIE1lZGlhUGxheWVy
OjpTdXBwb3J0c1R5cGUgc3VwcG9ydHNUeXBlQW5kQ29kZWNzKGNvbnN0IE1lZGlhRW5naW5lU3Vw
cG9ydFBhcmFtZXRlcnMmKSBjb25zdCA9IDA7CisKKyAgICB2aXJ0dWFsIEhhc2hTZXQ8UmVmUHRy
PFNlY3VyaXR5T3JpZ2luPj4gb3JpZ2luc0luTWVkaWFDYWNoZShjb25zdCBTdHJpbmcmKSBjb25z
dCB7IHJldHVybiB7IH07IH0KKyAgICB2aXJ0dWFsIHZvaWQgY2xlYXJNZWRpYUNhY2hlKGNvbnN0
IFN0cmluZyYsIFdhbGxUaW1lKSBjb25zdCB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgY2xlYXJNZWRp
YUNhY2hlRm9yT3JpZ2lucyhjb25zdCBTdHJpbmcmLCBjb25zdCBIYXNoU2V0PFJlZlB0cjxTZWN1
cml0eU9yaWdpbj4+JikgY29uc3QgeyB9CisgICAgdmlydHVhbCBib29sIHN1cHBvcnRzS2V5U3lz
dGVtKGNvbnN0IFN0cmluZyYgLyoga2V5U3lzdGVtICovLCBjb25zdCBTdHJpbmcmIC8qIG1pbWVU
eXBlICovKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQorfTsKIAotdHlwZWRlZiB2b2lkICgqTWVk
aWFFbmdpbmVSZWdpc3RyYXIpKENyZWF0ZU1lZGlhRW5naW5lUGxheWVyJiYsIE1lZGlhRW5naW5l
U3VwcG9ydGVkVHlwZXMsIE1lZGlhRW5naW5lU3VwcG9ydHNUeXBlLAotICAgIE1lZGlhRW5naW5l
T3JpZ2luc0luTWVkaWFDYWNoZSwgTWVkaWFFbmdpbmVDbGVhck1lZGlhQ2FjaGUsIE1lZGlhRW5n
aW5lQ2xlYXJNZWRpYUNhY2hlRm9yT3JpZ2lucywgTWVkaWFFbmdpbmVTdXBwb3J0c0tleVN5c3Rl
bSk7Ci10eXBlZGVmIHZvaWQgKCpNZWRpYUVuZ2luZVJlZ2lzdGVyKShNZWRpYUVuZ2luZVJlZ2lz
dHJhcik7Cit1c2luZyBNZWRpYUVuZ2luZVJlZ2lzdHJhciA9IHZvaWQoc3RkOjp1bmlxdWVfcHRy
PE1lZGlhUGxheWVyRmFjdG9yeT4mJik7Cit1c2luZyBNZWRpYUVuZ2luZVJlZ2lzdGVyID0gdm9p
ZChNZWRpYUVuZ2luZVJlZ2lzdHJhcik7CiAKIGNsYXNzIE1lZGlhUGxheWVyRmFjdG9yeVN1cHBv
cnQgewogcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyB2b2lkIGNhbGxSZWdpc3Rl
ck1lZGlhRW5naW5lKE1lZGlhRW5naW5lUmVnaXN0ZXIpOwogfTsKIAorY2xhc3MgUmVtb3RlTWVk
aWFQbGF5ZXJTdXBwb3J0IHsKK3B1YmxpYzoKKyAgICB1c2luZyBSZWdpc3RlclJlbW90ZVBsYXll
ckNhbGxiYWNrID0gQ29tcGxldGlvbkhhbmRsZXI8dm9pZChNZWRpYUVuZ2luZVJlZ2lzdHJhciwg
TWVkaWFQbGF5ZXJFbnVtczo6TWVkaWFFbmdpbmVJZGVudGlmaWVyKT47CisgICAgV0VCQ09SRV9F
WFBPUlQgc3RhdGljIHZvaWQgc2V0UmVnaXN0ZXJSZW1vdGVQbGF5ZXJDYWxsYmFjayhSZWdpc3Rl
clJlbW90ZVBsYXllckNhbGxiYWNrJiYpOworfTsKKworCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CiAKICNlbmRpZiAvLyBFTkFCTEUoVklERU8pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllckVudW1zLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllckVudW1zLmgKaW5kZXggNGIxMGYwNDgzMDg3ZTJlNjZl
M2FhZDgxZWU0NDJlNmQyNDhkZTlkNC4uMTc4MzgzMjhiZWFiZjNhZGE5MGYxNjkwNTYzYWVlMjQ4
NmEwNjRlNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVk
aWFQbGF5ZXJFbnVtcy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01l
ZGlhUGxheWVyRW51bXMuaApAQCAtODcsNiArODcsMTggQEAgcHVibGljOgogICAgICAgICBNYWtl
UmVzb3VyY2VzUHVyZ2VhYmxlLAogICAgICAgICBQdXJnZVJlc291cmNlcywKICAgICB9OworCisg
ICAgZW51bSBjbGFzcyBNZWRpYUVuZ2luZUlkZW50aWZpZXIgOiB1aW50OF90IHsKKyAgICAgICAg
QVZGb3VuZGF0aW9uLAorICAgICAgICBBVkZvdW5kYXRpb25NU0UsCisgICAgICAgIEFWRm91bmRh
dGlvbk1lZGlhU3RyZWFtLAorICAgICAgICBBVkZvdW5kYXRpb25DRiwKKyAgICAgICAgR1N0cmVh
bWVyLAorICAgICAgICBHU3RyZWFtZXJNU0UsCisgICAgICAgIEhvbGVQdW5jaCwKKyAgICAgICAg
TWVkaWFGb3VuZGF0aW9uLAorICAgICAgICBNb2NrTVNFLAorICAgIH07CiB9OwogCiBXVEY6OlN0
cmluZyBjb252ZXJ0RW51bWVyYXRpb25Ub1N0cmluZyhNZWRpYVBsYXllckVudW1zOjpSZWFkeVN0
YXRlKTsKQEAgLTE0MCw3ICsxNTIsNiBAQCB0ZW1wbGF0ZTw+IHN0cnVjdCBFbnVtVHJhaXRzPFdl
YkNvcmU6Ok1lZGlhUGxheWVyRW51bXM6Ok5ldHdvcmtTdGF0ZT4gewogICAgID47CiB9OwogCi0K
IHRlbXBsYXRlPD4gc3RydWN0IEVudW1UcmFpdHM8V2ViQ29yZTo6TWVkaWFQbGF5ZXJFbnVtczo6
UmVhZHlTdGF0ZT4gewogICAgIHVzaW5nIHZhbHVlcyA9IEVudW1WYWx1ZXM8CiAgICAgICAgIFdl
YkNvcmU6Ok1lZGlhUGxheWVyRW51bXM6OlJlYWR5U3RhdGUsCkBAIC0xOTYsNiArMjA3LDIwIEBA
IHRlbXBsYXRlPD4gc3RydWN0IEVudW1UcmFpdHM8V2ViQ29yZTo6TWVkaWFQbGF5ZXJFbnVtczo6
QnVmZmVyaW5nUG9saWN5PiB7CiAgICAgICAgIFdlYkNvcmU6Ok1lZGlhUGxheWVyRW51bXM6OkJ1
ZmZlcmluZ1BvbGljeTo6TGltaXRSZWFkQWhlYWQsCiAgICAgICAgIFdlYkNvcmU6Ok1lZGlhUGxh
eWVyRW51bXM6OkJ1ZmZlcmluZ1BvbGljeTo6TWFrZVJlc291cmNlc1B1cmdlYWJsZSwKICAgICAg
ICAgV2ViQ29yZTo6TWVkaWFQbGF5ZXJFbnVtczo6QnVmZmVyaW5nUG9saWN5OjpQdXJnZVJlc291
cmNlcworICAgICAgICA+OworICAgIH07CisKK3RlbXBsYXRlPD4gc3RydWN0IEVudW1UcmFpdHM8
V2ViQ29yZTo6TWVkaWFQbGF5ZXJFbnVtczo6TWVkaWFFbmdpbmVJZGVudGlmaWVyPiB7CisgICAg
dXNpbmcgdmFsdWVzID0gRW51bVZhbHVlczwKKyAgICAgICAgV2ViQ29yZTo6TWVkaWFQbGF5ZXJF
bnVtczo6TWVkaWFFbmdpbmVJZGVudGlmaWVyLAorICAgICAgICBXZWJDb3JlOjpNZWRpYVBsYXll
ckVudW1zOjpNZWRpYUVuZ2luZUlkZW50aWZpZXI6OkFWRm91bmRhdGlvbiwKKyAgICAgICAgV2Vi
Q29yZTo6TWVkaWFQbGF5ZXJFbnVtczo6TWVkaWFFbmdpbmVJZGVudGlmaWVyOjpBVkZvdW5kYXRp
b25NU0UsCisgICAgICAgIFdlYkNvcmU6Ok1lZGlhUGxheWVyRW51bXM6Ok1lZGlhRW5naW5lSWRl
bnRpZmllcjo6QVZGb3VuZGF0aW9uTWVkaWFTdHJlYW0sCisgICAgICAgIFdlYkNvcmU6Ok1lZGlh
UGxheWVyRW51bXM6Ok1lZGlhRW5naW5lSWRlbnRpZmllcjo6R1N0cmVhbWVyLAorICAgICAgICBX
ZWJDb3JlOjpNZWRpYVBsYXllckVudW1zOjpNZWRpYUVuZ2luZUlkZW50aWZpZXI6OkdTdHJlYW1l
ck1TRSwKKyAgICAgICAgV2ViQ29yZTo6TWVkaWFQbGF5ZXJFbnVtczo6TWVkaWFFbmdpbmVJZGVu
dGlmaWVyOjpIb2xlUHVuY2gsCisgICAgICAgIFdlYkNvcmU6Ok1lZGlhUGxheWVyRW51bXM6Ok1l
ZGlhRW5naW5lSWRlbnRpZmllcjo6TWVkaWFGb3VuZGF0aW9uLAorICAgICAgICBXZWJDb3JlOjpN
ZWRpYVBsYXllckVudW1zOjpNZWRpYUVuZ2luZUlkZW50aWZpZXI6Ok1vY2tNU0UKICAgICA+Owog
fTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGxhdGZv
cm1UaW1lUmFuZ2VzLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9QbGF0Zm9y
bVRpbWVSYW5nZXMuaAppbmRleCAxODg4Njk1Yzc2ZTkyNmZiM2VkNGIzYTUxMGM5YmIwMzNiNDM3
MzMwLi5kYzU2ZGI2YzdlOGMzNDY0Yzk1MzE0YTk4YWY0YWMzNTllMzI3M2QwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9QbGF0Zm9ybVRpbWVSYW5nZXMuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9QbGF0Zm9ybVRpbWVSYW5nZXMu
aApAQCAtMzYsMTUgKzM2LDE1IEBAIGNsYXNzIFByaW50U3RyZWFtOwogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKLWNsYXNzIFBsYXRmb3JtVGltZVJhbmdlcyB7CitjbGFzcyBXRUJDT1JFX0VYUE9S
VCBQbGF0Zm9ybVRpbWVSYW5nZXMgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVi
bGljOgogICAgIGV4cGxpY2l0IFBsYXRmb3JtVGltZVJhbmdlcygpIHsgfQogICAgIFBsYXRmb3Jt
VGltZVJhbmdlcyhjb25zdCBNZWRpYVRpbWUmIHN0YXJ0LCBjb25zdCBNZWRpYVRpbWUmIGVuZCk7
CiAKLSAgICBXRUJDT1JFX0VYUE9SVCBNZWRpYVRpbWUgc3RhcnQodW5zaWduZWQgaW5kZXgpIGNv
bnN0OworICAgIE1lZGlhVGltZSBzdGFydCh1bnNpZ25lZCBpbmRleCkgY29uc3Q7CiAgICAgTWVk
aWFUaW1lIHN0YXJ0KHVuc2lnbmVkIGluZGV4LCBib29sJiB2YWxpZCkgY29uc3Q7Ci0gICAgV0VC
Q09SRV9FWFBPUlQgTWVkaWFUaW1lIGVuZCh1bnNpZ25lZCBpbmRleCkgY29uc3Q7CisgICAgTWVk
aWFUaW1lIGVuZCh1bnNpZ25lZCBpbmRleCkgY29uc3Q7CiAgICAgTWVkaWFUaW1lIGVuZCh1bnNp
Z25lZCBpbmRleCwgYm9vbCYgdmFsaWQpIGNvbnN0OwogICAgIE1lZGlhVGltZSBkdXJhdGlvbih1
bnNpZ25lZCBpbmRleCkgY29uc3Q7CiAgICAgTWVkaWFUaW1lIG1heGltdW1CdWZmZXJlZFRpbWUo
KSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2
Zm91bmRhdGlvbi9jZi9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25DRi5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vY2YvTWVkaWFQbGF5ZXJQ
cml2YXRlQVZGb3VuZGF0aW9uQ0YuY3BwCmluZGV4IDg1NjJlODQ1ZDFmY2EwYzM5ZTZjY2ZlMWE3
MTNjNWRhYjU4MTU3MjkuLjVjODQ1YTdkMjgyZmE4ZmVmYzU4ZWE2OGFiYjE3NTA1NmViOThjMjQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlv
bi9jZi9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25DRi5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL2NmL01lZGlhUGxheWVyUHJpdmF0
ZUFWRm91bmRhdGlvbkNGLmNwcApAQCAtMzQyLDExICszNDIsMzcgQEAgc3RhdGljIGRpc3BhdGNo
X3F1ZXVlX3QgZ2xvYmFsTG9hZGVyRGVsZWdhdGVRdWV1ZSgpCiB9CiAjZW5kaWYKIAorY2xhc3Mg
TWVkaWFQbGF5ZXJGYWN0b3J5QVZGb3VuZGF0aW9uQ0YgZmluYWwgOiBwdWJsaWMgTWVkaWFQbGF5
ZXJGYWN0b3J5IHsKK3ByaXZhdGU6CisgICAgTWVkaWFQbGF5ZXJFbnVtczo6TWVkaWFFbmdpbmVJ
ZGVudGlmaWVyIGlkZW50aWZpZXIoKSBjb25zdCBmaW5hbCB7IHJldHVybiBNZWRpYVBsYXllckVu
dW1zOjpNZWRpYUVuZ2luZUlkZW50aWZpZXI6OkFWRm91bmRhdGlvbkNGOyB9OworCisgICAgc3Rk
Ojp1bmlxdWVfcHRyPE1lZGlhUGxheWVyUHJpdmF0ZUludGVyZmFjZT4gY3JlYXRlTWVkaWFFbmdp
bmVQbGF5ZXIoTWVkaWFQbGF5ZXIqIHBsYXllcikgY29uc3QgZmluYWwKKyAgICB7CisgICAgICAg
IHJldHVybiBtYWtlVW5pcXVlPE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbkNGPihwbGF5
ZXIpOworICAgIH0KKworICAgIHZvaWQgZ2V0U3VwcG9ydGVkVHlwZXMoSGFzaFNldDxTdHJpbmcs
IEFTQ0lJQ2FzZUluc2Vuc2l0aXZlSGFzaD4mIHR5cGVzKSBjb25zdCBmaW5hbAorICAgIHsKKyAg
ICAgICAgcmV0dXJuIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbkNGOjpnZXRTdXBwb3J0
ZWRUeXBlcyh0eXBlcyk7CisgICAgfQorCisgICAgTWVkaWFQbGF5ZXI6OlN1cHBvcnRzVHlwZSBz
dXBwb3J0c1R5cGVBbmRDb2RlY3MoY29uc3QgTWVkaWFFbmdpbmVTdXBwb3J0UGFyYW1ldGVycyYg
cGFyYW1ldGVycykgY29uc3QgZmluYWwKKyAgICB7CisgICAgICAgIHJldHVybiBNZWRpYVBsYXll
clByaXZhdGVBVkZvdW5kYXRpb25DRjo6c3VwcG9ydHNUeXBlKHBhcmFtZXRlcnMpOworICAgIH0K
KworICAgIGJvb2wgc3VwcG9ydHNLZXlTeXN0ZW0oY29uc3QgU3RyaW5nJiBrZXlTeXN0ZW0sIGNv
bnN0IFN0cmluZyYgbWltZVR5cGUpIGNvbnN0IGZpbmFsCisgICAgeworICAgICAgICByZXR1cm4g
TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uQ0Y6OnN1cHBvcnRzS2V5U3lzdGVtKGtleVN5
c3RlbSwgbWltZVR5cGUpOworICAgIH0KK307CisKIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlQVZG
b3VuZGF0aW9uQ0Y6OnJlZ2lzdGVyTWVkaWFFbmdpbmUoTWVkaWFFbmdpbmVSZWdpc3RyYXIgcmVn
aXN0cmFyKQogewotICAgIGlmIChpc0F2YWlsYWJsZSgpKQotICAgICAgICByZWdpc3RyYXIoW10o
TWVkaWFQbGF5ZXIqIHBsYXllcikgeyByZXR1cm4gbWFrZVVuaXF1ZTxNZWRpYVBsYXllclByaXZh
dGVBVkZvdW5kYXRpb25DRj4ocGxheWVyKTsgfSwKLSAgICAgICAgICAgIGdldFN1cHBvcnRlZFR5
cGVzLCBzdXBwb3J0c1R5cGUsIDAsIDAsIDAsIHN1cHBvcnRzS2V5U3lzdGVtKTsKKyAgICBpZiAo
IWlzQXZhaWxhYmxlKCkpCisgICAgICAgIHJldHVybjsKKworICAgIHJlZ2lzdHJhcihtYWtlVW5p
cXVlPE1lZGlhUGxheWVyRmFjdG9yeUFWRm91bmRhdGlvbkNGPigpKTsKIH0KIAogTWVkaWFQbGF5
ZXJQcml2YXRlQVZGb3VuZGF0aW9uQ0Y6Ok1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbkNG
KE1lZGlhUGxheWVyKiBwbGF5ZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9hdmZvdW5kYXRpb24vY2YvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9u
Q0YuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9jZi9N
ZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25DRi5oCmluZGV4IDQzOGEzYmQzYzM2OTk1MTdk
ZGU5YzYwZmNkMWZjMmY3MDM4ODc5ZjQuLjExZjk0NjE4YzdjYjg1YjZlYTBlZjQyYTM4YTFhOTkx
OWRmMmJiNzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2
Zm91bmRhdGlvbi9jZi9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25DRi5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9jZi9NZWRpYVBsYXll
clByaXZhdGVBVkZvdW5kYXRpb25DRi5oCkBAIC02MSw2ICs2MSw3IEBAIHB1YmxpYzoKICAgICBz
dGF0aWMgdm9pZCByZWdpc3Rlck1lZGlhRW5naW5lKE1lZGlhRW5naW5lUmVnaXN0cmFyKTsKIAog
cHJpdmF0ZToKKyAgICBmcmllbmQgY2xhc3MgTWVkaWFQbGF5ZXJGYWN0b3J5QVZGb3VuZGF0aW9u
Q0Y7CiAgICAgc3RhdGljIHZvaWQgZ2V0U3VwcG9ydGVkVHlwZXMoSGFzaFNldDxTdHJpbmcsIEFT
Q0lJQ2FzZUluc2Vuc2l0aXZlSGFzaD4mIHR5cGVzKTsKICAgICBzdGF0aWMgTWVkaWFQbGF5ZXI6
OlN1cHBvcnRzVHlwZSBzdXBwb3J0c1R5cGUoY29uc3QgTWVkaWFFbmdpbmVTdXBwb3J0UGFyYW1l
dGVycyYpOwogICAgIHN0YXRpYyBib29sIHN1cHBvcnRzS2V5U3lzdGVtKGNvbnN0IFN0cmluZyYg
a2V5U3lzdGVtLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJp
dmF0ZUFWRm91bmRhdGlvbk9iakMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMuaApp
bmRleCBjYWRhMjMxMWJiNmM2ODIyODliMGZhNjZiYjZkOGQ1MTI1OTNmNjA3Li4yOGZkNjJlZDRl
NmViZGNiMDkyMWNiNWI5NGI5M2JlYzAwMDVjMzQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVB
VkZvdW5kYXRpb25PYmpDLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
YXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5oCkBA
IC0xNjIsNiArMTYyLDcgQEAgcHVibGljOgogCiBwcml2YXRlOgogICAgIC8vIGVuZ2luZSBzdXBw
b3J0CisgICAgZnJpZW5kIGNsYXNzIE1lZGlhUGxheWVyRmFjdG9yeUFWRm91bmRhdGlvbk9iakM7
CiAgICAgc3RhdGljIHZvaWQgZ2V0U3VwcG9ydGVkVHlwZXMoSGFzaFNldDxTdHJpbmcsIEFTQ0lJ
Q2FzZUluc2Vuc2l0aXZlSGFzaD4mIHR5cGVzKTsKICAgICBzdGF0aWMgTWVkaWFQbGF5ZXI6OlN1
cHBvcnRzVHlwZSBzdXBwb3J0c1R5cGUoY29uc3QgTWVkaWFFbmdpbmVTdXBwb3J0UGFyYW1ldGVy
cyYpOwogICAgIHN0YXRpYyBib29sIHN1cHBvcnRzS2V5U3lzdGVtKGNvbnN0IFN0cmluZyYga2V5
U3lzdGVtLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0
ZUFWRm91bmRhdGlvbk9iakMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9h
dmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLm1tCmlu
ZGV4IDcxODkyOWM2MjEyMjMxMWY2OWEzZDhkYWUwMjgyM2QzMTYxNTJiNWIuLmFkNjI1NzQyNzI0
NGJkNDk2OTU3YzNhYjlkMTZjYzBhYWRjNmQ0ODcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFW
Rm91bmRhdGlvbk9iakMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
YXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5tbQpA
QCAtMjczLDE0ICsyNzMsNTQgQEAgc3RhdGljIGRpc3BhdGNoX3F1ZXVlX3QgZ2xvYmFsUHVsbERl
bGVnYXRlUXVldWUoKQogfQogI2VuZGlmCiAKK2NsYXNzIE1lZGlhUGxheWVyRmFjdG9yeUFWRm91
bmRhdGlvbk9iakMgZmluYWwgOiBwdWJsaWMgTWVkaWFQbGF5ZXJGYWN0b3J5IHsKK3ByaXZhdGU6
CisgICAgTWVkaWFQbGF5ZXJFbnVtczo6TWVkaWFFbmdpbmVJZGVudGlmaWVyIGlkZW50aWZpZXIo
KSBjb25zdCBmaW5hbCB7IHJldHVybiBNZWRpYVBsYXllckVudW1zOjpNZWRpYUVuZ2luZUlkZW50
aWZpZXI6OkFWRm91bmRhdGlvbjsgfTsKKworICAgIHN0ZDo6dW5pcXVlX3B0cjxNZWRpYVBsYXll
clByaXZhdGVJbnRlcmZhY2U+IGNyZWF0ZU1lZGlhRW5naW5lUGxheWVyKE1lZGlhUGxheWVyKiBw
bGF5ZXIpIGNvbnN0IGZpbmFsCisgICAgeworICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxNZWRp
YVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDPihwbGF5ZXIpOworICAgIH0KKworICAgIHZv
aWQgZ2V0U3VwcG9ydGVkVHlwZXMoSGFzaFNldDxTdHJpbmcsIEFTQ0lJQ2FzZUluc2Vuc2l0aXZl
SGFzaD4mIHR5cGVzKSBjb25zdCBmaW5hbAorICAgIHsKKyAgICAgICAgcmV0dXJuIE1lZGlhUGxh
eWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OmdldFN1cHBvcnRlZFR5cGVzKHR5cGVzKTsKKyAg
ICB9CisKKyAgICBNZWRpYVBsYXllcjo6U3VwcG9ydHNUeXBlIHN1cHBvcnRzVHlwZUFuZENvZGVj
cyhjb25zdCBNZWRpYUVuZ2luZVN1cHBvcnRQYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzKSBjb25zdCBm
aW5hbAorICAgIHsKKyAgICAgICAgcmV0dXJuIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlv
bk9iakM6OnN1cHBvcnRzVHlwZShwYXJhbWV0ZXJzKTsKKyAgICB9CisKKyAgICBIYXNoU2V0PFJl
ZlB0cjxTZWN1cml0eU9yaWdpbj4+IG9yaWdpbnNJbk1lZGlhQ2FjaGUoY29uc3QgU3RyaW5nJiBw
YXRoKSBjb25zdCBmaW5hbAorICAgIHsKKyAgICAgICAgcmV0dXJuIE1lZGlhUGxheWVyUHJpdmF0
ZUFWRm91bmRhdGlvbk9iakM6Om9yaWdpbnNJbk1lZGlhQ2FjaGUocGF0aCk7CisgICAgfQorCisg
ICAgdm9pZCBjbGVhck1lZGlhQ2FjaGUoY29uc3QgU3RyaW5nJiBwYXRoLCBXYWxsVGltZSBtb2Rp
ZmllZFNpbmNlKSBjb25zdCBmaW5hbAorICAgIHsKKyAgICAgICAgcmV0dXJuIE1lZGlhUGxheWVy
UHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OmNsZWFyTWVkaWFDYWNoZShwYXRoLCBtb2RpZmllZFNp
bmNlKTsKKyAgICB9CisKKyAgICB2b2lkIGNsZWFyTWVkaWFDYWNoZUZvck9yaWdpbnMoY29uc3Qg
U3RyaW5nJiBwYXRoLCBjb25zdCBIYXNoU2V0PFJlZlB0cjxTZWN1cml0eU9yaWdpbj4+JiBvcmln
aW5zKSBjb25zdCBmaW5hbAorICAgIHsKKyAgICAgICAgcmV0dXJuIE1lZGlhUGxheWVyUHJpdmF0
ZUFWRm91bmRhdGlvbk9iakM6OmNsZWFyTWVkaWFDYWNoZUZvck9yaWdpbnMocGF0aCwgb3JpZ2lu
cyk7CisgICAgfQorCisgICAgYm9vbCBzdXBwb3J0c0tleVN5c3RlbShjb25zdCBTdHJpbmcmIGtl
eVN5c3RlbSwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSkgY29uc3QgZmluYWwKKyAgICB7CisgICAg
ICAgIHJldHVybiBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpzdXBwb3J0c0tl
eVN5c3RlbShrZXlTeXN0ZW0sIG1pbWVUeXBlKTsKKyAgICB9Cit9OworCiB2b2lkIE1lZGlhUGxh
eWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OnJlZ2lzdGVyTWVkaWFFbmdpbmUoTWVkaWFFbmdp
bmVSZWdpc3RyYXIgcmVnaXN0cmFyKQogewogICAgIGlmICghaXNBdmFpbGFibGUoKSkKICAgICAg
ICAgcmV0dXJuOwogCi0gICAgcmVnaXN0cmFyKFtdKE1lZGlhUGxheWVyKiBwbGF5ZXIpIHsgcmV0
dXJuIG1ha2VVbmlxdWU8TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQz4ocGxheWVy
KTsgfSwKLSAgICAgICAgICAgIGdldFN1cHBvcnRlZFR5cGVzLCBzdXBwb3J0c1R5cGUsIG9yaWdp
bnNJbk1lZGlhQ2FjaGUsIGNsZWFyTWVkaWFDYWNoZSwgY2xlYXJNZWRpYUNhY2hlRm9yT3JpZ2lu
cywgc3VwcG9ydHNLZXlTeXN0ZW0pOwogICAgIEFTU0VSVChBVkFzc2V0TUlNRVR5cGVDYWNoZTo6
c2luZ2xldG9uKCkuaXNBdmFpbGFibGUoKSk7CisKKyAgICByZWdpc3RyYXIobWFrZVVuaXF1ZTxN
ZWRpYVBsYXllckZhY3RvcnlBVkZvdW5kYXRpb25PYmpDPigpKTsKIH0KIAogc3RhdGljIEFWQXNz
ZXRDYWNoZSAqYXNzZXRDYWNoZUZvclBhdGgoY29uc3QgU3RyaW5nJiBwYXRoKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVk
aWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDLm1tIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFT
b3VyY2VBVkZPYmpDLm1tCmluZGV4IGRmZjNlMjQ1MmJmNWFlMjVhYzQ2MzA1YjEwMzlmZTI4NzNj
OThiNWYuLmJhY2JmMGVhNzgwNjkwMTIyNjRhM2E2OWIwNzZiZGVkN2MwN2FhMWMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01l
ZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQy5tbQorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVN
ZWRpYVNvdXJjZUFWRk9iakMubW0KQEAgLTE5NiwxNCArMTk2LDM0IEBAIE1lZGlhUGxheWVyUHJp
dmF0ZU1lZGlhU291cmNlQVZGT2JqQzo6fk1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZG
T2JqQygpCiAjcHJhZ21hIG1hcmsgLQogI3ByYWdtYSBtYXJrIE1lZGlhUGxheWVyIEZhY3Rvcnkg
TWV0aG9kcwogCitjbGFzcyBNZWRpYVBsYXllckZhY3RvcnlNZWRpYVNvdXJjZUFWRk9iakMgZmlu
YWwgOiBwdWJsaWMgTWVkaWFQbGF5ZXJGYWN0b3J5IHsKK3ByaXZhdGU6CisgICAgTWVkaWFQbGF5
ZXJFbnVtczo6TWVkaWFFbmdpbmVJZGVudGlmaWVyIGlkZW50aWZpZXIoKSBjb25zdCBmaW5hbCB7
IHJldHVybiBNZWRpYVBsYXllckVudW1zOjpNZWRpYUVuZ2luZUlkZW50aWZpZXI6OkFWRm91bmRh
dGlvbk1TRTsgfTsKKworICAgIHN0ZDo6dW5pcXVlX3B0cjxNZWRpYVBsYXllclByaXZhdGVJbnRl
cmZhY2U+IGNyZWF0ZU1lZGlhRW5naW5lUGxheWVyKE1lZGlhUGxheWVyKiBwbGF5ZXIpIGNvbnN0
IGZpbmFsCisgICAgeworICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxNZWRpYVBsYXllclByaXZh
dGVNZWRpYVNvdXJjZUFWRk9iakM+KHBsYXllcik7ICAgICAgICAKKyAgICB9CisKKyAgICB2b2lk
IGdldFN1cHBvcnRlZFR5cGVzKEhhc2hTZXQ8U3RyaW5nLCBBU0NJSUNhc2VJbnNlbnNpdGl2ZUhh
c2g+JiB0eXBlcykgY29uc3QgZmluYWwKKyAgICB7CisgICAgICAgIHJldHVybiBNZWRpYVBsYXll
clByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakM6OmdldFN1cHBvcnRlZFR5cGVzKHR5cGVzKTsKKyAg
ICB9CisKKyAgICBNZWRpYVBsYXllcjo6U3VwcG9ydHNUeXBlIHN1cHBvcnRzVHlwZUFuZENvZGVj
cyhjb25zdCBNZWRpYUVuZ2luZVN1cHBvcnRQYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzKSBjb25zdCBm
aW5hbAorICAgIHsKKyAgICAgICAgcmV0dXJuIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNl
QVZGT2JqQzo6c3VwcG9ydHNUeXBlKHBhcmFtZXRlcnMpOworICAgIH0KK307CisKIHZvaWQgTWVk
aWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDOjpyZWdpc3Rlck1lZGlhRW5naW5lKE1l
ZGlhRW5naW5lUmVnaXN0cmFyIHJlZ2lzdHJhcikKIHsKICAgICBpZiAoIWlzQXZhaWxhYmxlKCkp
CiAgICAgICAgIHJldHVybjsKIAotICAgIHJlZ2lzdHJhcihbXShNZWRpYVBsYXllciogcGxheWVy
KSB7IHJldHVybiBtYWtlVW5pcXVlPE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2Jq
Qz4ocGxheWVyKTsgfSwKLSAgICAgICAgZ2V0U3VwcG9ydGVkVHlwZXMsIHN1cHBvcnRzVHlwZSwg
MCwgMCwgMCwgMCk7CiAgICAgQVNTRVJUKEFWQXNzZXRNSU1FVHlwZUNhY2hlOjpzaW5nbGV0b24o
KS5pc0F2YWlsYWJsZSgpKTsKKworICAgIHJlZ2lzdHJhcihtYWtlVW5pcXVlPE1lZGlhUGxheWVy
RmFjdG9yeU1lZGlhU291cmNlQVZGT2JqQz4oKSk7CiB9CiAKIGJvb2wgTWVkaWFQbGF5ZXJQcml2
YXRlTWVkaWFTb3VyY2VBVkZPYmpDOjppc0F2YWlsYWJsZSgpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclBy
aXZhdGVNZWRpYVN0cmVhbUFWRk9iakMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9i
akMubW0KaW5kZXggMjUxOWMxMTRmNDA4OTY5YTNjNDBiZWIzODU0MzU5MDhmMGIyNWIxNy4uNmM1
ZjUwYjRkYTAwZDIxMDJiYWRlMzc5NGY5ZGRkMGJkNDE5MjY2MyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQ
cml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFt
QVZGT2JqQy5tbQpAQCAtMjIwLDExICsyMjAsMzIgQEAgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFT
dHJlYW1BVkZPYmpDOjp+TWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDKCkKICNw
cmFnbWEgbWFyayAtCiAjcHJhZ21hIG1hcmsgTWVkaWFQbGF5ZXIgRmFjdG9yeSBNZXRob2RzCiAK
K2NsYXNzIE1lZGlhUGxheWVyRmFjdG9yeU1lZGlhU3RyZWFtQVZGT2JqQyBmaW5hbCA6IHB1Ymxp
YyBNZWRpYVBsYXllckZhY3RvcnkgeworcHJpdmF0ZToKKyAgICBNZWRpYVBsYXllckVudW1zOjpN
ZWRpYUVuZ2luZUlkZW50aWZpZXIgaWRlbnRpZmllcigpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIE1l
ZGlhUGxheWVyRW51bXM6Ok1lZGlhRW5naW5lSWRlbnRpZmllcjo6QVZGb3VuZGF0aW9uTWVkaWFT
dHJlYW07IH07CisKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8TWVkaWFQbGF5ZXJQcml2YXRlSW50ZXJm
YWNlPiBjcmVhdGVNZWRpYUVuZ2luZVBsYXllcihNZWRpYVBsYXllciogcGxheWVyKSBjb25zdCBm
aW5hbAorICAgIHsKKyAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8TWVkaWFQbGF5ZXJQcml2YXRl
TWVkaWFTdHJlYW1BVkZPYmpDPihwbGF5ZXIpOworICAgIH0KKworICAgIHZvaWQgZ2V0U3VwcG9y
dGVkVHlwZXMoSGFzaFNldDxTdHJpbmcsIEFTQ0lJQ2FzZUluc2Vuc2l0aXZlSGFzaD4mIHR5cGVz
KSBjb25zdCBmaW5hbAorICAgIHsKKyAgICAgICAgcmV0dXJuIE1lZGlhUGxheWVyUHJpdmF0ZU1l
ZGlhU3RyZWFtQVZGT2JqQzo6Z2V0U3VwcG9ydGVkVHlwZXModHlwZXMpOworICAgIH0KKworICAg
IE1lZGlhUGxheWVyOjpTdXBwb3J0c1R5cGUgc3VwcG9ydHNUeXBlQW5kQ29kZWNzKGNvbnN0IE1l
ZGlhRW5naW5lU3VwcG9ydFBhcmFtZXRlcnMmIHBhcmFtZXRlcnMpIGNvbnN0IGZpbmFsCisgICAg
eworICAgICAgICByZXR1cm4gTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDOjpz
dXBwb3J0c1R5cGUocGFyYW1ldGVycyk7CisgICAgfQorfTsKKwogdm9pZCBNZWRpYVBsYXllclBy
aXZhdGVNZWRpYVN0cmVhbUFWRk9iakM6OnJlZ2lzdGVyTWVkaWFFbmdpbmUoTWVkaWFFbmdpbmVS
ZWdpc3RyYXIgcmVnaXN0cmFyKQogewotICAgIGlmIChpc0F2YWlsYWJsZSgpKQotICAgICAgICBy
ZWdpc3RyYXIoW10oTWVkaWFQbGF5ZXIqIHBsYXllcikgeyByZXR1cm4gbWFrZVVuaXF1ZTxNZWRp
YVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakM+KHBsYXllcik7IH0sIGdldFN1cHBvcnRl
ZFR5cGVzLAotICAgICAgICAgICAgc3VwcG9ydHNUeXBlLCAwLCAwLCAwLCAwKTsKKyAgICBpZiAo
IWlzQXZhaWxhYmxlKCkpCisgICAgICAgIHJldHVybjsKKworICAgIHJlZ2lzdHJhcihtYWtlVW5p
cXVlPE1lZGlhUGxheWVyRmFjdG9yeU1lZGlhU3RyZWFtQVZGT2JqQz4oKSk7CiB9CiAKIGJvb2wg
TWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDOjppc0F2YWlsYWJsZSgpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQ
bGF5ZXJQcml2YXRlR1N0cmVhbWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIuY3BwCmluZGV4IGQ0ODg1
NDIyNjdhMzdhMmIzOGQ1OWIzZDM4YmY0MjkxOWE0YTE3ODUuLjUzZDU2ZjhlOTUwODM0Mjg4Mzdj
ZWMxOGE0MTBhYzU4NDFiMGUwMjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclBy
aXZhdGVHU3RyZWFtZXIuY3BwCkBAIC00NjQsMTQgKzQ2NCwzNyBAQCBib29sIE1lZGlhUGxheWVy
UHJpdmF0ZUdTdHJlYW1lcjo6aXNBdmFpbGFibGUoKQogICAgIHJldHVybiBmYWN0b3J5OwogfQog
CitjbGFzcyBNZWRpYVBsYXllckZhY3RvcnlHU3RyZWFtZXIgZmluYWwgOiBwdWJsaWMgTWVkaWFQ
bGF5ZXJGYWN0b3J5IHsKK3ByaXZhdGU6CisgICAgTWVkaWFQbGF5ZXJFbnVtczo6TWVkaWFFbmdp
bmVJZGVudGlmaWVyIGlkZW50aWZpZXIoKSBjb25zdCBmaW5hbCB7IHJldHVybiBNZWRpYVBsYXll
ckVudW1zOjpNZWRpYUVuZ2luZUlkZW50aWZpZXI6OkdTdHJlYW1lcjsgfTsKKworICAgIHN0ZDo6
dW5pcXVlX3B0cjxNZWRpYVBsYXllclByaXZhdGVJbnRlcmZhY2U+IGNyZWF0ZU1lZGlhRW5naW5l
UGxheWVyKE1lZGlhUGxheWVyKiBwbGF5ZXIpIGNvbnN0IGZpbmFsCisgICAgeworICAgICAgICBy
ZXR1cm4gbWFrZVVuaXF1ZTxNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI+KHBsYXllcik7Cisg
ICAgfQorCisgICAgdm9pZCBnZXRTdXBwb3J0ZWRUeXBlcyhIYXNoU2V0PFN0cmluZywgQVNDSUlD
YXNlSW5zZW5zaXRpdmVIYXNoPiYgdHlwZXMpIGNvbnN0IGZpbmFsCisgICAgeworICAgICAgICBy
ZXR1cm4gTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpnZXRTdXBwb3J0ZWRUeXBlcyh0eXBl
cyk7CisgICAgfQorCisgICAgTWVkaWFQbGF5ZXI6OlN1cHBvcnRzVHlwZSBzdXBwb3J0c1R5cGVB
bmRDb2RlY3MoY29uc3QgTWVkaWFFbmdpbmVTdXBwb3J0UGFyYW1ldGVycyYgcGFyYW1ldGVycykg
Y29uc3QgZmluYWwKKyAgICB7CisgICAgICAgIHJldHVybiBNZWRpYVBsYXllclByaXZhdGVHU3Ry
ZWFtZXI6OnN1cHBvcnRzVHlwZShwYXJhbWV0ZXJzKTsKKyAgICB9CisKKyAgICBib29sIHN1cHBv
cnRzS2V5U3lzdGVtKGNvbnN0IFN0cmluZyYga2V5U3lzdGVtLCBjb25zdCBTdHJpbmcmIG1pbWVU
eXBlKSBjb25zdCBmaW5hbAorICAgIHsKKyAgICAgICAgcmV0dXJuIE1lZGlhUGxheWVyUHJpdmF0
ZUdTdHJlYW1lcjo6c3VwcG9ydHNLZXlTeXN0ZW0oa2V5U3lzdGVtLCBtaW1lVHlwZSk7CisgICAg
fQorfTsKKwogdm9pZCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6OnJlZ2lzdGVyTWVkaWFF
bmdpbmUoTWVkaWFFbmdpbmVSZWdpc3RyYXIgcmVnaXN0cmFyKQogewogICAgIGluaXRpYWxpemVE
ZWJ1Z0NhdGVnb3J5KCk7CiAKLSAgICBpZiAoaXNBdmFpbGFibGUoKSkgewotICAgICAgICByZWdp
c3RyYXIoW10oTWVkaWFQbGF5ZXIqIHBsYXllcikgeyByZXR1cm4gbWFrZVVuaXF1ZTxNZWRpYVBs
YXllclByaXZhdGVHU3RyZWFtZXI+KHBsYXllcik7IH0sCi0gICAgICAgICAgICBnZXRTdXBwb3J0
ZWRUeXBlcywgc3VwcG9ydHNUeXBlLCBudWxscHRyLCBudWxscHRyLCBudWxscHRyLCBzdXBwb3J0
c0tleVN5c3RlbSk7Ci0gICAgfQorICAgIGlmIChpc0F2YWlsYWJsZSgpKQorICAgICAgICByZWdp
c3RyYXIobWFrZVVuaXF1ZTxNZWRpYVBsYXllckZhY3RvcnlHU3RyZWFtZXI+KCkpOwogfQogCiB2
b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6bG9hZEZ1bGwoY29uc3QgU3RyaW5nJiB1
cmxTdHJpbmcsIGNvbnN0IFN0cmluZyYgcGlwZWxpbmVOYW1lKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdT
dHJlYW1lci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01l
ZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5oCmluZGV4IGY5YzQ3YTFmNjAxMjRiOThiZmNjYmFl
MWM3M2E0YTA0NTE4NTM4ZDEuLjg1MTY1ZDFiZjEyOWNlY2UxYTEyNmQxYzMwNGQzZmM5NjJlNzI1
MzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1l
ci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmgKQEAg
LTM5NCw2ICszOTQsNyBAQCBwcml2YXRlOgogICAgIEdzdEVsZW1lbnQqIGNyZWF0ZUF1ZGlvU2lu
aygpOwogICAgIEdzdEVsZW1lbnQqIGF1ZGlvU2luaygpIGNvbnN0OwogCisgICAgZnJpZW5kIGNs
YXNzIE1lZGlhUGxheWVyRmFjdG9yeUdTdHJlYW1lcjsKICAgICBzdGF0aWMgdm9pZCBnZXRTdXBw
b3J0ZWRUeXBlcyhIYXNoU2V0PFN0cmluZywgQVNDSUlDYXNlSW5zZW5zaXRpdmVIYXNoPiYpOwog
ICAgIHN0YXRpYyBNZWRpYVBsYXllcjo6U3VwcG9ydHNUeXBlIHN1cHBvcnRzVHlwZShjb25zdCBN
ZWRpYUVuZ2luZVN1cHBvcnRQYXJhbWV0ZXJzJik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9tc2UvTWVkaWFQbGF5ZXJQcml2YXRlR1N0
cmVhbWVyTVNFLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1l
ci9tc2UvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyTVNFLmNwcAppbmRleCA4MjAxNTVlNTRk
ODg3ZTUxNjdhMzQwYWRkM2M0YjMxZDQ5NmU1NmFiLi42YjZkOWUwNGFjZDQwNTE4OTRlMjEwNjVk
NGE1NmZkZDI1Y2NhMzI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9nc3RyZWFtZXIvbXNlL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lck1TRS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL21zZS9NZWRpYVBs
YXllclByaXZhdGVHU3RyZWFtZXJNU0UuY3BwCkBAIC03MiwxNCArNzIsMzcgQEAgR1NUX0RFQlVH
X0NBVEVHT1JZKHdlYmtpdF9tc2VfZGVidWcpOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK2Ns
YXNzIE1lZGlhUGxheWVyRmFjdG9yeUdTdHJlYW1lck1TRSBmaW5hbCA6IHB1YmxpYyBNZWRpYVBs
YXllckZhY3RvcnkgeworcHJpdmF0ZToKKyAgICBNZWRpYVBsYXllckVudW1zOjpNZWRpYUVuZ2lu
ZUlkZW50aWZpZXIgaWRlbnRpZmllcigpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIE1lZGlhUGxheWVy
RW51bXM6Ok1lZGlhRW5naW5lSWRlbnRpZmllcjo6R1N0cmVhbWVyTVNFOyB9OworCisgICAgc3Rk
Ojp1bmlxdWVfcHRyPE1lZGlhUGxheWVyUHJpdmF0ZUludGVyZmFjZT4gY3JlYXRlTWVkaWFFbmdp
bmVQbGF5ZXIoTWVkaWFQbGF5ZXIqIHBsYXllcikgY29uc3QgZmluYWwKKyAgICB7CisgICAgICAg
IHJldHVybiBtYWtlVW5pcXVlPE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lck1TRT4ocGxheWVy
KTsKKyAgICB9CisKKyAgICB2b2lkIGdldFN1cHBvcnRlZFR5cGVzKEhhc2hTZXQ8U3RyaW5nLCBB
U0NJSUNhc2VJbnNlbnNpdGl2ZUhhc2g+JiB0eXBlcykgY29uc3QgZmluYWwKKyAgICB7CisgICAg
ICAgIHJldHVybiBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJNU0U6OmdldFN1cHBvcnRlZFR5
cGVzKHR5cGVzKTsKKyAgICB9CisKKyAgICBNZWRpYVBsYXllcjo6U3VwcG9ydHNUeXBlIHN1cHBv
cnRzVHlwZUFuZENvZGVjcyhjb25zdCBNZWRpYUVuZ2luZVN1cHBvcnRQYXJhbWV0ZXJzJiBwYXJh
bWV0ZXJzKSBjb25zdCBmaW5hbAorICAgIHsKKyAgICAgICAgcmV0dXJuIE1lZGlhUGxheWVyUHJp
dmF0ZUdTdHJlYW1lck1TRTo6c3VwcG9ydHNUeXBlKHBhcmFtZXRlcnMpOworICAgIH0KKworICAg
IGJvb2wgc3VwcG9ydHNLZXlTeXN0ZW0oY29uc3QgU3RyaW5nJiBrZXlTeXN0ZW0sIGNvbnN0IFN0
cmluZyYgbWltZVR5cGUpIGNvbnN0IGZpbmFsCisgICAgeworICAgICAgICByZXR1cm4gTWVkaWFQ
bGF5ZXJQcml2YXRlR1N0cmVhbWVyTVNFOjpzdXBwb3J0c0tleVN5c3RlbShrZXlTeXN0ZW0sIG1p
bWVUeXBlKTsKKyAgICB9Cit9OworCiB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lck1T
RTo6cmVnaXN0ZXJNZWRpYUVuZ2luZShNZWRpYUVuZ2luZVJlZ2lzdHJhciByZWdpc3RyYXIpCiB7
CiAgICAgaW5pdGlhbGl6ZUdTdHJlYW1lckFuZFJlZ2lzdGVyV2ViS2l0RWxlbWVudHMoKTsKICAg
ICBHU1RfREVCVUdfQ0FURUdPUllfSU5JVCh3ZWJraXRfbXNlX2RlYnVnLCAid2Via2l0bXNlIiwg
MCwgIldlYktpdCBNU0UgbWVkaWEgcGxheWVyIik7Ci0gICAgaWYgKGlzQXZhaWxhYmxlKCkpIHsK
LSAgICAgICAgcmVnaXN0cmFyKFtdKE1lZGlhUGxheWVyKiBwbGF5ZXIpIHsgcmV0dXJuIG1ha2VV
bmlxdWU8TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyTVNFPihwbGF5ZXIpOyB9LAotICAgICAg
ICAgICAgZ2V0U3VwcG9ydGVkVHlwZXMsIHN1cHBvcnRzVHlwZSwgbnVsbHB0ciwgbnVsbHB0ciwg
bnVsbHB0ciwgc3VwcG9ydHNLZXlTeXN0ZW0pOwotICAgIH0KKyAgICBpZiAoaXNBdmFpbGFibGUo
KSkKKyAgICAgICAgcmVnaXN0cmFyKG1ha2VVbmlxdWU8TWVkaWFQbGF5ZXJGYWN0b3J5R1N0cmVh
bWVyTVNFPigpKTsKIH0KIAogTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyTVNFOjpNZWRpYVBs
YXllclByaXZhdGVHU3RyZWFtZXJNU0UoTWVkaWFQbGF5ZXIqIHBsYXllcikKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9tc2UvTWVkaWFQbGF5
ZXJQcml2YXRlR1N0cmVhbWVyTVNFLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9nc3RyZWFtZXIvbXNlL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lck1TRS5oCmluZGV4IDli
MzMzMDVmN2YxMTZkYWM5MWM2NDFjNDg0NTkzYmU3YTgzMDczNWYuLjVkMTAxM2ZjYmVmMDU3OTM0
ODBiYjM4ZWRlZmU0YjY0ZjBhY2Y0MmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2dzdHJlYW1lci9tc2UvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyTVNF
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL21zZS9N
ZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJNU0UuaApAQCAtODUsNiArODUsNyBAQCBwdWJsaWM6
CiAgICAgdm9pZCB1bmJsb2NrRHVyYXRpb25DaGFuZ2VzKCk7CiAKIHByaXZhdGU6CisgICAgZnJp
ZW5kIGNsYXNzIE1lZGlhUGxheWVyRmFjdG9yeUdTdHJlYW1lck1TRTsKICAgICBzdGF0aWMgdm9p
ZCBnZXRTdXBwb3J0ZWRUeXBlcyhIYXNoU2V0PFN0cmluZywgQVNDSUlDYXNlSW5zZW5zaXRpdmVI
YXNoPiYpOwogICAgIHN0YXRpYyBNZWRpYVBsYXllcjo6U3VwcG9ydHNUeXBlIHN1cHBvcnRzVHlw
ZShjb25zdCBNZWRpYUVuZ2luZVN1cHBvcnRQYXJhbWV0ZXJzJik7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2hvbGVwdW5jaC9NZWRpYVBsYXllclByaXZh
dGVIb2xlUHVuY2guY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvaG9sZXB1
bmNoL01lZGlhUGxheWVyUHJpdmF0ZUhvbGVQdW5jaC5jcHAKaW5kZXggYjhjNGUwMWZhZGY0MTNh
ZGRjNzE1NGUxZWFmMWY1YmIwNTUzNmEwYy4uNTZjOGI5MmQ5NmRjZWM4ZTBmNjk1MmVmMWI5MGY3
Y2RhMmY3NmU3NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
aG9sZXB1bmNoL01lZGlhUGxheWVyUHJpdmF0ZUhvbGVQdW5jaC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvaG9sZXB1bmNoL01lZGlhUGxheWVyUHJpdmF0ZUhvbGVQ
dW5jaC5jcHAKQEAgLTEzOSwxMCArMTM5LDI5IEBAIE1lZGlhUGxheWVyOjpTdXBwb3J0c1R5cGUg
TWVkaWFQbGF5ZXJQcml2YXRlSG9sZVB1bmNoOjpzdXBwb3J0c1R5cGUoY29uc3QgTWVkaWFFCiAg
ICAgcmV0dXJuIE1lZGlhUGxheWVyOjpTdXBwb3J0c1R5cGU6OklzTm90U3VwcG9ydGVkOwogfQog
CitjbGFzcyBNZWRpYVBsYXllckZhY3RvcnlIb2xlUHVuY2ggZmluYWwgOiBwdWJsaWMgTWVkaWFQ
bGF5ZXJGYWN0b3J5IHsKK3ByaXZhdGU6CisgICAgTWVkaWFQbGF5ZXJFbnVtczo6TWVkaWFFbmdp
bmVJZGVudGlmaWVyIGlkZW50aWZpZXIoKSBjb25zdCBmaW5hbCB7IHJldHVybiBNZWRpYVBsYXll
ckVudW1zOjpNZWRpYUVuZ2luZUlkZW50aWZpZXI6OkhvbGVQdW5jaDsgfTsKKworICAgIHN0ZDo6
dW5pcXVlX3B0cjxNZWRpYVBsYXllclByaXZhdGVJbnRlcmZhY2U+IGNyZWF0ZU1lZGlhRW5naW5l
UGxheWVyKE1lZGlhUGxheWVyKiBwbGF5ZXIpIGNvbnN0IGZpbmFsCisgICAgeworICAgICAgICBy
ZXR1cm4gbWFrZVVuaXF1ZTxNZWRpYVBsYXllclByaXZhdGVIb2xlUHVuY2g+KHBsYXllcik7Cisg
ICAgfQorCisgICAgdm9pZCBnZXRTdXBwb3J0ZWRUeXBlcyhIYXNoU2V0PFN0cmluZywgQVNDSUlD
YXNlSW5zZW5zaXRpdmVIYXNoPiYgdHlwZXMpIGNvbnN0IGZpbmFsCisgICAgeworICAgICAgICBy
ZXR1cm4gTWVkaWFQbGF5ZXJQcml2YXRlSG9sZVB1bmNoOjpnZXRTdXBwb3J0ZWRUeXBlcyh0eXBl
cyk7CisgICAgfQorCisgICAgTWVkaWFQbGF5ZXI6OlN1cHBvcnRzVHlwZSBzdXBwb3J0c1R5cGVB
bmRDb2RlY3MoY29uc3QgTWVkaWFFbmdpbmVTdXBwb3J0UGFyYW1ldGVycyYgcGFyYW1ldGVycykg
Y29uc3QgZmluYWwKKyAgICB7CisgICAgICAgIHJldHVybiBNZWRpYVBsYXllclByaXZhdGVIb2xl
UHVuY2g6OnN1cHBvcnRzVHlwZShwYXJhbWV0ZXJzKTsKKyAgICB9Cit9OworCiB2b2lkIE1lZGlh
UGxheWVyUHJpdmF0ZUhvbGVQdW5jaDo6cmVnaXN0ZXJNZWRpYUVuZ2luZShNZWRpYUVuZ2luZVJl
Z2lzdHJhciByZWdpc3RyYXIpCiB7Ci0gICAgcmVnaXN0cmFyKFtdKE1lZGlhUGxheWVyKiBwbGF5
ZXIpIHsgcmV0dXJuIG1ha2VVbmlxdWU8TWVkaWFQbGF5ZXJQcml2YXRlSG9sZVB1bmNoPihwbGF5
ZXIpOyB9LAotICAgICAgICBnZXRTdXBwb3J0ZWRUeXBlcywgc3VwcG9ydHNUeXBlLCBudWxscHRy
LCBudWxscHRyLCBudWxscHRyLCBudWxscHRyKTsKKyAgICByZWdpc3RyYXIobWFrZVVuaXF1ZTxN
ZWRpYVBsYXllckZhY3RvcnlIb2xlUHVuY2g+KCkpOwogfQogCiB2b2lkIE1lZGlhUGxheWVyUHJp
dmF0ZUhvbGVQdW5jaDo6bm90aWZ5UmVhZHlTdGF0ZSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ob2xlcHVuY2gvTWVkaWFQbGF5ZXJQcml2YXRlSG9sZVB1
bmNoLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ob2xlcHVuY2gvTWVkaWFQ
bGF5ZXJQcml2YXRlSG9sZVB1bmNoLmgKaW5kZXggOWExMDg3ZDMyYjI1YjNjMzBkY2RkYmViNDAw
OGNhMDUwMDk1N2Y1YS4uM2IzNGJmYTkyYWJiZjQ4MWExYjU0MjJjYjU1YWY2NTVlNjM2YmEwZCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvaG9sZXB1bmNoL01l
ZGlhUGxheWVyUHJpdmF0ZUhvbGVQdW5jaC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2hvbGVwdW5jaC9NZWRpYVBsYXllclByaXZhdGVIb2xlUHVuY2guaApAQCAtOTgs
NiArOTgsNyBAQCBwdWJsaWM6CiAjZW5kaWYKIAogcHJpdmF0ZToKKyAgICBmcmllbmQgY2xhc3Mg
TWVkaWFQbGF5ZXJGYWN0b3J5SG9sZVB1bmNoOwogICAgIHN0YXRpYyB2b2lkIGdldFN1cHBvcnRl
ZFR5cGVzKEhhc2hTZXQ8U3RyaW5nLCBBU0NJSUNhc2VJbnNlbnNpdGl2ZUhhc2g+Jik7CiAgICAg
c3RhdGljIE1lZGlhUGxheWVyOjpTdXBwb3J0c1R5cGUgc3VwcG9ydHNUeXBlKGNvbnN0IE1lZGlh
RW5naW5lU3VwcG9ydFBhcmFtZXRlcnMmKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3Mvd2luL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhRm91bmRhdGlvbi5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vTWVkaWFQbGF5ZXJQcml2
YXRlTWVkaWFGb3VuZGF0aW9uLmNwcAppbmRleCBiYmJiNDMyMmVkM2E3NWJmODFkMGJmNDc3NjJm
MDUwODJjMzk0YmIwLi5lNTM3ZDkxYTk0ZjUxZmM0OTNlNGQxYmVkZmM3NjY2OTc5OGEyYjUzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vTWVkaWFQbGF5
ZXJQcml2YXRlTWVkaWFGb3VuZGF0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy93aW4vTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFGb3VuZGF0aW9uLmNwcApAQCAt
NzksMTIgKzc5LDMwIEBAIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhRm91bmRhdGlvbjo6fk1lZGlh
UGxheWVyUHJpdmF0ZU1lZGlhRm91bmRhdGlvbigpCiAgICAgZW5kU2Vzc2lvbigpOwogfQogCitj
bGFzcyBNZWRpYVBsYXllckZhY3RvcnlNZWRpYUZvdW5kYXRpb24gZmluYWwgOiBwdWJsaWMgTWVk
aWFQbGF5ZXJGYWN0b3J5IHsKK3ByaXZhdGU6CisgICAgTWVkaWFQbGF5ZXJFbnVtczo6TWVkaWFF
bmdpbmVJZGVudGlmaWVyIGlkZW50aWZpZXIoKSBjb25zdCBmaW5hbCB7IHJldHVybiBNZWRpYVBs
YXllckVudW1zOjpNZWRpYUVuZ2luZUlkZW50aWZpZXI6Ok1lZGlhRm91bmRhdGlvbjsgfTsKKwor
ICAgIHN0ZDo6dW5pcXVlX3B0cjxNZWRpYVBsYXllclByaXZhdGVJbnRlcmZhY2U+IGNyZWF0ZU1l
ZGlhRW5naW5lUGxheWVyKE1lZGlhUGxheWVyKiBwbGF5ZXIpIGNvbnN0IGZpbmFsCisgICAgewor
ICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxNZWRpYVBsYXllclByaXZhdGVNZWRpYUZvdW5kYXRp
b24+KHBsYXllcik7CisgICAgfQorCisgICAgdm9pZCBnZXRTdXBwb3J0ZWRUeXBlcyhIYXNoU2V0
PFN0cmluZywgQVNDSUlDYXNlSW5zZW5zaXRpdmVIYXNoPiYgdHlwZXMpIGNvbnN0IGZpbmFsCisg
ICAgeworICAgICAgICByZXR1cm4gTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFGb3VuZGF0aW9uOjpn
ZXRTdXBwb3J0ZWRUeXBlcyh0eXBlcyk7CisgICAgfQorCisgICAgTWVkaWFQbGF5ZXI6OlN1cHBv
cnRzVHlwZSBzdXBwb3J0c1R5cGVBbmRDb2RlY3MoY29uc3QgTWVkaWFFbmdpbmVTdXBwb3J0UGFy
YW1ldGVycyYgcGFyYW1ldGVycykgY29uc3QgZmluYWwKKyAgICB7CisgICAgICAgIHJldHVybiBN
ZWRpYVBsYXllclByaXZhdGVNZWRpYUZvdW5kYXRpb246OnN1cHBvcnRzVHlwZShwYXJhbWV0ZXJz
KTsKKyAgICB9Cit9OworCiB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhRm91bmRhdGlvbjo6
cmVnaXN0ZXJNZWRpYUVuZ2luZShNZWRpYUVuZ2luZVJlZ2lzdHJhciByZWdpc3RyYXIpCiB7Ci0g
ICAgaWYgKGlzQXZhaWxhYmxlKCkpIHsKLSAgICAgICAgcmVnaXN0cmFyKFtdKE1lZGlhUGxheWVy
KiBwbGF5ZXIpIHsgcmV0dXJuIG1ha2VVbmlxdWU8TWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFGb3Vu
ZGF0aW9uPihwbGF5ZXIpOyB9LAotICAgICAgICAgICAgZ2V0U3VwcG9ydGVkVHlwZXMsIHN1cHBv
cnRzVHlwZSwgMCwgMCwgMCwgMCk7Ci0gICAgfQorICAgIGlmIChpc0F2YWlsYWJsZSgpKQorICAg
ICAgICByZWdpc3RyYXIobWFrZVVuaXF1ZTxNZWRpYVBsYXllckZhY3RvcnlNZWRpYUZvdW5kYXRp
b24+KCkpOwogfQogCiBib29sIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhRm91bmRhdGlvbjo6aXNB
dmFpbGFibGUoKSAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svbWVk
aWFzb3VyY2UvTW9ja01lZGlhUGxheWVyTWVkaWFTb3VyY2UuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbW9jay9tZWRpYXNvdXJjZS9Nb2NrTWVkaWFQbGF5ZXJNZWRpYVNvdXJjZS5jcHAK
aW5kZXggMDFhNmEwMDMwZjRmNDYxZDQ2NzI3YmI2OTYwMTY1YWI5YmNmYTFjOC4uN2QwYzdkN2Nm
MDJmNDJhZWM3M2RjYzM4MjdiYmIyYjE3YzMzNTJmMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbW9jay9tZWRpYXNvdXJjZS9Nb2NrTWVkaWFQbGF5ZXJNZWRpYVNvdXJjZS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9tZWRpYXNvdXJjZS9Nb2NrTWVk
aWFQbGF5ZXJNZWRpYVNvdXJjZS5jcHAKQEAgLTM3LDExICszNywyNyBAQAogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKK2NsYXNzIE1lZGlhUGxheWVyRmFjdG9yeU1lZGlhU291cmNlTW9jayBmaW5h
bCA6IHB1YmxpYyBNZWRpYVBsYXllckZhY3RvcnkgeworcHJpdmF0ZToKKyAgICBNZWRpYVBsYXll
ckVudW1zOjpNZWRpYUVuZ2luZUlkZW50aWZpZXIgaWRlbnRpZmllcigpIGNvbnN0IGZpbmFsIHsg
cmV0dXJuIE1lZGlhUGxheWVyRW51bXM6Ok1lZGlhRW5naW5lSWRlbnRpZmllcjo6TW9ja01TRTsg
fTsKKworICAgIHN0ZDo6dW5pcXVlX3B0cjxNZWRpYVBsYXllclByaXZhdGVJbnRlcmZhY2U+IGNy
ZWF0ZU1lZGlhRW5naW5lUGxheWVyKE1lZGlhUGxheWVyKiBwbGF5ZXIpIGNvbnN0IGZpbmFsIHsg
cmV0dXJuIG1ha2VVbmlxdWU8TW9ja01lZGlhUGxheWVyTWVkaWFTb3VyY2U+KHBsYXllcik7IH0K
KworICAgIHZvaWQgZ2V0U3VwcG9ydGVkVHlwZXMoSGFzaFNldDxTdHJpbmcsIEFTQ0lJQ2FzZUlu
c2Vuc2l0aXZlSGFzaD4mIHR5cGVzKSBjb25zdCBmaW5hbAorICAgIHsKKyAgICAgICAgcmV0dXJu
IE1vY2tNZWRpYVBsYXllck1lZGlhU291cmNlOjpnZXRTdXBwb3J0ZWRUeXBlcyh0eXBlcyk7Cisg
ICAgfQorCisgICAgTWVkaWFQbGF5ZXI6OlN1cHBvcnRzVHlwZSBzdXBwb3J0c1R5cGVBbmRDb2Rl
Y3MoY29uc3QgTWVkaWFFbmdpbmVTdXBwb3J0UGFyYW1ldGVycyYgcGFyYW1ldGVycykgY29uc3Qg
ZmluYWwKKyAgICB7CisgICAgICAgIHJldHVybiBNb2NrTWVkaWFQbGF5ZXJNZWRpYVNvdXJjZTo6
c3VwcG9ydHNUeXBlKHBhcmFtZXRlcnMpOworICAgIH0KK307CisKIC8vIE1lZGlhUGxheWVyIEVu
aWduZSBTdXBwb3J0CiB2b2lkIE1vY2tNZWRpYVBsYXllck1lZGlhU291cmNlOjpyZWdpc3Rlck1l
ZGlhRW5naW5lKE1lZGlhRW5naW5lUmVnaXN0cmFyIHJlZ2lzdHJhcikKIHsKLSAgICByZWdpc3Ry
YXIoW10gKE1lZGlhUGxheWVyKiBwbGF5ZXIpIHsgcmV0dXJuIG1ha2VVbmlxdWU8TW9ja01lZGlh
UGxheWVyTWVkaWFTb3VyY2U+KHBsYXllcik7IH0sIGdldFN1cHBvcnRlZFR5cGVzLAotICAgICAg
ICBzdXBwb3J0c1R5cGUsIDAsIDAsIDAsIDApOworICAgIHJlZ2lzdHJhcihtYWtlVW5pcXVlPE1l
ZGlhUGxheWVyRmFjdG9yeU1lZGlhU291cmNlTW9jaz4oKSk7CiB9CiAKIC8vIEZJWE1FOiBXaGF0
IGRvZXMgdGhlIHdvcmQgImNhY2hlIiBtZWFuIGhlcmU/CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L0Rlcml2ZWRTb3VyY2VzLWlucHV0LnhjZmlsZWxpc3QgYi9Tb3VyY2UvV2ViS2l0L0Rlcml2
ZWRTb3VyY2VzLWlucHV0LnhjZmlsZWxpc3QKaW5kZXggN2YwOGYyYjJmMTg1ODJlZDUwNDAzMmRj
YWNiNTQ3ODZhMTY5YWQ1Zi4uM2VmMWNhODhmZmFlYWEyOWRjZDgzYjc1NWMyYjNiZjI4OGYwZjJh
YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9EZXJpdmVkU291cmNlcy1pbnB1dC54Y2ZpbGVs
aXN0CisrKyBiL1NvdXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMtaW5wdXQueGNmaWxlbGlzdApA
QCAtMTYsNiArMTYsNyBAQCAkKEpBVkFTQ1JJUFRDT1JFX1BSSVZBVEVfSEVBREVSU19ESVIpL3h4
ZC5wbAogJChQUk9KRUNUX0RJUikvR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNz
Lm1lc3NhZ2VzLmluCiAkKFBST0pFQ1RfRElSKS9HUFVQcm9jZXNzL0dQVVByb2Nlc3MubWVzc2Fn
ZXMuaW4KICQoUFJPSkVDVF9ESVIpL0dQVVByb2Nlc3MvbWFjL2NvbS5hcHBsZS5XZWJLaXQuR1BV
UHJvY2Vzcy5zYi5pbgorJChQUk9KRUNUX0RJUikvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRp
YVBsYXllck1hbmFnZXJQcm94eS5tZXNzYWdlcy5pbgogJChQUk9KRUNUX0RJUikvTmV0d29ya1By
b2Nlc3MvQ29va2llcy9XZWJDb29raWVNYW5hZ2VyLm1lc3NhZ2VzLmluCiAkKFBST0pFQ1RfRElS
KS9OZXR3b3JrUHJvY2Vzcy9DdXN0b21Qcm90b2NvbHMvTGVnYWN5Q3VzdG9tUHJvdG9jb2xNYW5h
Z2VyLm1lc3NhZ2VzLmluCiAkKFBST0pFQ1RfRElSKS9OZXR3b3JrUHJvY2Vzcy9JbmRleGVkREIv
V2ViSURCQ29ubmVjdGlvblRvQ2xpZW50Lm1lc3NhZ2VzLmluCkBAIC05Nyw2ICs5OCw3IEBAICQo
UFJPSkVDVF9ESVIpL1dlYlByb2Nlc3MvQ2FjaGUvV2ViQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbi5t
ZXNzYWdlcy5pbgogJChQUk9KRUNUX0RJUikvV2ViUHJvY2Vzcy9EYXRhYmFzZXMvSW5kZXhlZERC
L1dlYklEQkNvbm5lY3Rpb25Ub1NlcnZlci5tZXNzYWdlcy5pbgogJChQUk9KRUNUX0RJUikvV2Vi
UHJvY2Vzcy9GdWxsU2NyZWVuL1dlYkZ1bGxTY3JlZW5NYW5hZ2VyLm1lc3NhZ2VzLmluCiAkKFBS
T0pFQ1RfRElSKS9XZWJQcm9jZXNzL0dQVS9HUFVQcm9jZXNzQ29ubmVjdGlvbi5tZXNzYWdlcy5p
bgorJChQUk9KRUNUX0RJUikvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJN
YW5hZ2VyLm1lc3NhZ2VzLmluCiAkKFBST0pFQ1RfRElSKS9XZWJQcm9jZXNzL0dlb2xvY2F0aW9u
L1dlYkdlb2xvY2F0aW9uTWFuYWdlci5tZXNzYWdlcy5pbgogJChQUk9KRUNUX0RJUikvV2ViUHJv
Y2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5tZXNzYWdlcy5pbgogJChQUk9K
RUNUX0RJUikvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZGVyLm1lc3NhZ2VzLmlu
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2VzLW91dHB1dC54Y2ZpbGVs
aXN0IGIvU291cmNlL1dlYktpdC9EZXJpdmVkU291cmNlcy1vdXRwdXQueGNmaWxlbGlzdAppbmRl
eCAzYjFlOTQxMTcwMzhiZjBkMDRhMDc1N2Y1ZTZkODVlMzM0YmQ3NWFlLi5jOGEzYjQ5NWMwY2U1
NTQxMjk5MjM2ODExMzIwMGRhMmI5NDA3OTI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0Rl
cml2ZWRTb3VyY2VzLW91dHB1dC54Y2ZpbGVsaXN0CisrKyBiL1NvdXJjZS9XZWJLaXQvRGVyaXZl
ZFNvdXJjZXMtb3V0cHV0LnhjZmlsZWxpc3QKQEAgLTExNCw2ICsxMTQsMTIgQEAgJChCVUlMVF9Q
Uk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIvUGx1Z2luUHJveHlNZXNzYWdlc1Jl
cGxpZXMuaAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIvUmVt
b3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWFQcm94eU1lc3NhZ2VSZWNlaXZlci5jcHAKICQoQlVJTFRf
UFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQyL1JlbW90ZUxheWVyVHJlZURyYXdp
bmdBcmVhUHJveHlNZXNzYWdlcy5oCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJj
ZXMvV2ViS2l0Mi9SZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYVByb3h5TWVzc2FnZXNSZXBsaWVz
LmgKKyQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQyL1JlbW90ZU1l
ZGlhUGxheWVyTWFuYWdlck1lc3NhZ2VSZWNlaXZlci5jcHAKKyQoQlVJTFRfUFJPRFVDVFNfRElS
KS9EZXJpdmVkU291cmNlcy9XZWJLaXQyL1JlbW90ZU1lZGlhUGxheWVyTWFuYWdlck1lc3NhZ2Vz
LmgKKyQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQyL1JlbW90ZU1l
ZGlhUGxheWVyTWFuYWdlck1lc3NhZ2VzUmVwbGllcy5oCiskKEJVSUxUX1BST0RVQ1RTX0RJUikv
RGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9SZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eU1lc3Nh
Z2VSZWNlaXZlci5jcHAKKyQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJL
aXQyL1JlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5TWVzc2FnZXMuaAorJChCVUlMVF9QUk9E
VUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIvUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2Vy
UHJveHlNZXNzYWdlc1JlcGxpZXMuaAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3Vy
Y2VzL1dlYktpdDIvUmVtb3RlT2JqZWN0UmVnaXN0cnlNZXNzYWdlUmVjZWl2ZXIuY3BwCiAkKEJV
SUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9SZW1vdGVPYmplY3RSZWdp
c3RyeU1lc3NhZ2VzLmgKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJL
aXQyL1JlbW90ZU9iamVjdFJlZ2lzdHJ5TWVzc2FnZXNSZXBsaWVzLmgKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMubWFrZSBiL1NvdXJjZS9XZWJLaXQvRGVyaXZlZFNv
dXJjZXMubWFrZQppbmRleCBiZTUyNWUxM2M1OWJiZDE0NTZlOGYwZDQyM2JhNjQ0MWNlOGIwOGRh
Li45NmYzYTJlY2VmMzExOGNlMjNmMzg3NTFkNzJlMmFiMDgzY2Y0YWM0IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2VzLm1ha2UKKysrIGIvU291cmNlL1dlYktpdC9EZXJp
dmVkU291cmNlcy5tYWtlCkBAIC0yNCw2ICsyNCw3IEBAIFZQQVRIID0gXAogICAgICQoV2ViS2l0
MikgXAogICAgICQoV2ViS2l0MikvR1BVUHJvY2VzcyBcCiAgICAgJChXZWJLaXQyKS9HUFVQcm9j
ZXNzL21hYyBcCisgICAgJChXZWJLaXQyKS9HUFVQcm9jZXNzL21lZGlhIFwKICAgICAkKFdlYktp
dDIpL05ldHdvcmtQcm9jZXNzIFwKICAgICAkKFdlYktpdDIpL05ldHdvcmtQcm9jZXNzL0Nvb2tp
ZXMgXAogICAgICQoV2ViS2l0MikvTmV0d29ya1Byb2Nlc3MvY2FjaGUgXApAQCAtNDksNiArNTAs
NyBAQCBWUEFUSCA9IFwKICAgICAkKFdlYktpdDIpL1dlYlByb2Nlc3MvRnVsbFNjcmVlbiBcCiAg
ICAgJChXZWJLaXQyKS9XZWJQcm9jZXNzL0dlb2xvY2F0aW9uIFwKICAgICAkKFdlYktpdDIpL1dl
YlByb2Nlc3MvR1BVIFwKKyAgICAkKFdlYktpdDIpL1dlYlByb2Nlc3MvR1BVL21lZGlhIFwKICAg
ICAkKFdlYktpdDIpL1dlYlByb2Nlc3MvSWNvbkRhdGFiYXNlIFwKICAgICAkKFdlYktpdDIpL1dl
YlByb2Nlc3MvTWVkaWFDYWNoZSBcCiAgICAgJChXZWJLaXQyKS9XZWJQcm9jZXNzL01lZGlhU3Ry
ZWFtIFwKQEAgLTEzNSw2ICsxMzcsOCBAQCBNRVNTQUdFX1JFQ0VJVkVSUyA9IFwKICAgICBQbHVn
aW5Qcm9jZXNzUHJveHkgXAogICAgIFBsdWdpblByb3h5IFwKICAgICBSZW1vdGVMYXllclRyZWVE
cmF3aW5nQXJlYVByb3h5IFwKKyAgICBSZW1vdGVNZWRpYVBsYXllck1hbmFnZXIgXAorICAgIFJl
bW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5IFwKICAgICBSZW1vdGVPYmplY3RSZWdpc3RyeSBc
CiAgICAgUmVtb3RlU2Nyb2xsaW5nQ29vcmRpbmF0b3IgXAogICAgIFJlbW90ZVdlYkluc3BlY3Rv
clByb3h5IFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVDb25uZWN0
aW9uVG9XZWJQcm9jZXNzLmNwcCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVDb25uZWN0
aW9uVG9XZWJQcm9jZXNzLmNwcAppbmRleCBiZDEzOWZlNTMzMWJjY2UzNmMzMzQzYjE1MjE3ZDAx
MWYyNTI0YzM4Li5jMzQ4ZTMwZGU4YTI5ZTk3M2VhZWFhNmE5YjhhOGUwOTMzYWE4ODI1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vz
cy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3MuY3BwCkBAIC0zNSw2ICszNSw4IEBACiAjaW5jbHVkZSAiR1BVUHJvY2Vzc1Byb3h5TWVz
c2FnZXMuaCIKICNpbmNsdWRlICJMb2dnaW5nLmgiCiAjaW5jbHVkZSAiUmVtb3RlTGF5ZXJUcmVl
RHJhd2luZ0FyZWFQcm94eU1lc3NhZ2VzLmgiCisjaW5jbHVkZSAiUmVtb3RlTWVkaWFQbGF5ZXJN
YW5hZ2VyUHJveHkuaCIKKyNpbmNsdWRlICJSZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eU1l
c3NhZ2VzLmgiCiAjaW5jbHVkZSAiUmVtb3RlU2Nyb2xsaW5nQ29vcmRpbmF0b3JUcmFuc2FjdGlv
bi5oIgogI2luY2x1ZGUgIldlYkNvcmVBcmd1bWVudENvZGVycy5oIgogI2luY2x1ZGUgIldlYkVy
cm9ycy5oIgpAQCAtNzQsNiArNzYsMzIgQEAgdm9pZCBHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNz
OjpkaWRSZWNlaXZlSW52YWxpZE1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiBjb25uZWMKICAgICBD
UkFTSCgpOwogfQogCitSZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eSYgR1BVQ29ubmVjdGlv
blRvV2ViUHJvY2Vzczo6cmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHkoKQoreworICAgIGlm
ICghbV9yZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eSkKKyAgICAgICAgbV9yZW1vdGVNZWRp
YVBsYXllck1hbmFnZXJQcm94eSA9IG1ha2VVbmlxdWU8UmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2Vy
UHJveHk+KCp0aGlzKTsKKworICAgIHJldHVybiAqbV9yZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQ
cm94eTsKK30KKwordm9pZCBHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpkaWRSZWNlaXZlTWVz
c2FnZShJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIElQQzo6RGVjb2RlciYgZGVjb2RlcikK
K3sKKyAgICBpZiAoZGVjb2Rlci5tZXNzYWdlUmVjZWl2ZXJOYW1lKCkgPT0gTWVzc2FnZXM6OlJl
bW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5OjptZXNzYWdlUmVjZWl2ZXJOYW1lKCkpIHsKKyAg
ICAgICAgcmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHkoKS5kaWRSZWNlaXZlTWVzc2FnZUZy
b21XZWJQcm9jZXNzKGNvbm5lY3Rpb24sIGRlY29kZXIpOworICAgICAgICByZXR1cm47CisgICAg
fQorfQorCit2b2lkIEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmRpZFJlY2VpdmVTeW5jTWVz
c2FnZShJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIElQQzo6RGVjb2RlciYgZGVjb2Rlciwg
c3RkOjp1bmlxdWVfcHRyPElQQzo6RW5jb2Rlcj4mIHJlcGx5RW5jb2RlcikKK3sKKyAgICBpZiAo
ZGVjb2Rlci5tZXNzYWdlUmVjZWl2ZXJOYW1lKCkgPT0gTWVzc2FnZXM6OlJlbW90ZU1lZGlhUGxh
eWVyTWFuYWdlclByb3h5OjptZXNzYWdlUmVjZWl2ZXJOYW1lKCkpIHsKKyAgICAgICAgcmVtb3Rl
TWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHkoKS5kaWRSZWNlaXZlU3luY01lc3NhZ2VGcm9tV2ViUHJv
Y2Vzcyhjb25uZWN0aW9uLCBkZWNvZGVyLCByZXBseUVuY29kZXIpOworICAgICAgICByZXR1cm47
CisgICAgfQorCisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Cit9CisKIH0gLy8gbmFtZXNwYWNl
IFdlYktpdAogCiAjZW5kaWYgLy8gRU5BQkxFKEdQVV9QUk9DRVNTKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaCBiL1NvdXJj
ZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgKaW5kZXggZjkw
Y2IyOGYyODdlY2UxZmZmZDE0NWZlMTI0OGRiOTk3NWNlYjAyZC4uYmJmYzE2ODBiYmIzMGUxOTdk
YWY4MDM2MDVjZmM0YTIxNzlhZWY0OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9j
ZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVBy
b2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oCkBAIC0zMiwxMCArMzIsMTIgQEAKICNp
bmNsdWRlIDxXZWJDb3JlL0Rpc3BsYXlMaXN0SXRlbXMuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1By
b2Nlc3NJZGVudGlmaWVyLmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KKyNpbmNsdWRl
IDx3dGYvVW5pcXVlUmVmLmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCiBjbGFzcyBHUFVQcm9j
ZXNzOworY2xhc3MgUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHk7CiAKIGNsYXNzIEdQVUNv
bm5lY3Rpb25Ub1dlYlByb2Nlc3MKICAgICA6IHB1YmxpYyBSZWZDb3VudGVkPEdQVUNvbm5lY3Rp
b25Ub1dlYlByb2Nlc3M+CkBAIC01NSwxMyArNTcsMTggQEAgcHVibGljOgogcHJpdmF0ZToKICAg
ICBHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzKEdQVVByb2Nlc3MmLCBXZWJDb3JlOjpQcm9jZXNz
SWRlbnRpZmllciwgSVBDOjpDb25uZWN0aW9uOjpJZGVudGlmaWVyKTsKIAorICAgIFJlbW90ZU1l
ZGlhUGxheWVyTWFuYWdlclByb3h5JiByZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eSgpOwor
CiAgICAgLy8gSVBDOjpDb25uZWN0aW9uOjpDbGllbnQKICAgICB2b2lkIGRpZENsb3NlKElQQzo6
Q29ubmVjdGlvbiYpIG92ZXJyaWRlOwogICAgIHZvaWQgZGlkUmVjZWl2ZUludmFsaWRNZXNzYWdl
KElQQzo6Q29ubmVjdGlvbiYsIElQQzo6U3RyaW5nUmVmZXJlbmNlIG1lc3NhZ2VSZWNlaXZlck5h
bWUsIElQQzo6U3RyaW5nUmVmZXJlbmNlIG1lc3NhZ2VOYW1lKSBvdmVycmlkZTsKKyAgICB2b2lk
IGRpZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYpIG92ZXJy
aWRlOworICAgIHZvaWQgZGlkUmVjZWl2ZVN5bmNNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQ
Qzo6RGVjb2RlciYsIHN0ZDo6dW5pcXVlX3B0cjxJUEM6OkVuY29kZXI+Jikgb3ZlcnJpZGU7CiAK
ICAgICBSZWY8SVBDOjpDb25uZWN0aW9uPiBtX2Nvbm5lY3Rpb247CiAgICAgUmVmPEdQVVByb2Nl
c3M+IG1fZ3B1UHJvY2VzczsKICAgICBjb25zdCBXZWJDb3JlOjpQcm9jZXNzSWRlbnRpZmllciBt
X3dlYlByb2Nlc3NJZGVudGlmaWVyOworICAgIHN0ZDo6dW5pcXVlX3B0cjxSZW1vdGVNZWRpYVBs
YXllck1hbmFnZXJQcm94eT4gbV9yZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eTsKIH07CiAK
IH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9j
ZXNzL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5LmNwcCBiL1NvdXJjZS9XZWJL
aXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eS5jcHAKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uOGM3NmU2YmNmYmJjODNmYzE5ODJiZDBhNjA5YTYyMjA5Y2I4NGE5ZgotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVBs
YXllck1hbmFnZXJQcm94eS5jcHAKQEAgLTAsMCArMSwxOTIgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJV
VE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMg
Q09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5j
bHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHku
aCIKKworI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykKKworI2luY2x1ZGUgIkdQVUNvbm5lY3Rpb25U
b1dlYlByb2Nlc3MuaCIKKyNpbmNsdWRlICJSZW1vdGVNZWRpYVBsYXllck1hbmFnZXJNZXNzYWdl
cy5oIgorI2luY2x1ZGUgIlJlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5TWVzc2FnZXMuaCIK
KyNpbmNsdWRlICJSZW1vdGVNZWRpYVBsYXllclByb3h5LmgiCisjaW5jbHVkZSAiV2ViQ29yZUFy
Z3VtZW50Q29kZXJzLmgiCisjaW5jbHVkZSA8V2ViQ29yZS9NZWRpYVBsYXllci5oPgorI2luY2x1
ZGUgPFdlYkNvcmUvTWVkaWFQbGF5ZXJQcml2YXRlLmg+CisjaW5jbHVkZSA8d3RmL1VuaXF1ZVJl
Zi5oPgorCisjZGVmaW5lIE1FU1NBR0VfQ0hFQ0tfQ09OVEVYVElEKGlkZW50aWZpZXIpIE1FU1NB
R0VfQ0hFQ0tfQkFTRShtX3Byb3hpZXMuaXNWYWxpZEtleShpZGVudGlmaWVyKSwgJm1fd2ViUHJv
Y2Vzc0Nvbm5lY3Rpb24uY29ubmVjdGlvbigpKQorCituYW1lc3BhY2UgV2ViS2l0IHsKK3VzaW5n
IG5hbWVzcGFjZSBXZWJDb3JlOworCisjaWYgIVJFTEVBU0VfTE9HX0RJU0FCTEVECitzdGF0aWMg
UmVmUHRyPExvZ2dlcj4mIG51bGxMb2dnZXIoKQoreworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3ll
ZDxSZWZQdHI8TG9nZ2VyPj4gbG9nZ2VyOworICAgIHJldHVybiBsb2dnZXI7Cit9CisjZW5kaWYK
KworUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHk6OlJlbW90ZU1lZGlhUGxheWVyTWFuYWdl
clByb3h5KEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MmIGNvbm5lY3Rpb24pCisgICAgOiBtX3dl
YlByb2Nlc3NDb25uZWN0aW9uKGNvbm5lY3Rpb24pCisjaWYgIVJFTEVBU0VfTE9HX0RJU0FCTEVE
CisgICAgLCBtX2xvZ0lkZW50aWZpZXIoV1RGOjpMb2dnZXJIZWxwZXI6OnVuaXF1ZUxvZ0lkZW50
aWZpZXIoKSkKKyNlbmRpZgoreworfQorCitSZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eTo6
flJlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5KCkKK3sKK30KKwordm9pZCBSZW1vdGVNZWRp
YVBsYXllck1hbmFnZXJQcm94eTo6Y3JlYXRlTWVkaWFQbGF5ZXIoY29uc3QgTWVkaWFQbGF5ZXJQ
cml2YXRlUmVtb3RlSWRlbnRpZmllciYgaWQsIE1lZGlhUGxheWVyRW51bXM6Ok1lZGlhRW5naW5l
SWRlbnRpZmllciBlbmdpbmVJZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wg
c3VjY2VlZGVkKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyAgICBNRVNTQUdFX0NIRUNLX0NP
TlRFWFRJRChpZCk7CisKKyAgICBBU1NFUlQoIW1fcHJveGllcy5jb250YWlucyhpZCkpOworICAg
IG1fcHJveGllcy5hZGQoaWQsIG1ha2VVbmlxdWU8UmVtb3RlTWVkaWFQbGF5ZXJQcm94eT4oKnRo
aXMsIGlkLCBtX3dlYlByb2Nlc3NDb25uZWN0aW9uLmNvbm5lY3Rpb24oKSwgZW5naW5lSWRlbnRp
ZmllcikpOworCisgICAgY29tcGxldGlvbkhhbmRsZXIodHJ1ZSk7Cit9CisKK3ZvaWQgUmVtb3Rl
TWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHk6OmRlbGV0ZU1lZGlhUGxheWVyKGNvbnN0IE1lZGlhUGxh
eWVyUHJpdmF0ZVJlbW90ZUlkZW50aWZpZXImIGlkKQoreworICAgIGlmIChhdXRvIHByb3h5ID0g
bV9wcm94aWVzLnRha2UoaWQpKQorICAgICAgICBwcm94eS0+aW52YWxpZGF0ZSgpOworfQorCit2
b2lkIFJlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5OjpnZXRTdXBwb3J0ZWRUeXBlcyhNZWRp
YVBsYXllckVudW1zOjpNZWRpYUVuZ2luZUlkZW50aWZpZXIgZW5naW5lSWRlbnRpZmllciwgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZChWZWN0b3I8U3RyaW5nPiYmKT4mJiBjb21wbGV0aW9uSGFuZGxl
cikKK3sKKyAgICBhdXRvIGVuZ2luZSA9IE1lZGlhUGxheWVyOjptZWRpYUVuZ2luZShlbmdpbmVJ
ZGVudGlmaWVyKTsKKyAgICBpZiAoIWVuZ2luZSkgeworICAgICAgICBXVEZMb2dBbHdheXMoIkZh
aWxlZCB0byBmaW5kIG1lZGlhIGVuZ2luZS4iKTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIo
eyB9KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIEhhc2hTZXQ8U3RyaW5nLCBBU0NJ
SUNhc2VJbnNlbnNpdGl2ZUhhc2g+IGVuZ2luZVR5cGVzOworICAgIGVuZ2luZS0+Z2V0U3VwcG9y
dGVkVHlwZXMoZW5naW5lVHlwZXMpOworCisgICAgYXV0byByZXN1bHQgPSBXVEY6Om1hcChlbmdp
bmVUeXBlcywgW10gKGF1dG8mIHR5cGUpIHsKKyAgICAgICAgcmV0dXJuIHR5cGU7CisgICAgfSk7
CisKKyAgICBjb21wbGV0aW9uSGFuZGxlcihXVEZNb3ZlKHJlc3VsdCkpOworfQorCit2b2lkIFJl
bW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5OjpzdXBwb3J0c1R5cGUoTWVkaWFQbGF5ZXJFbnVt
czo6TWVkaWFFbmdpbmVJZGVudGlmaWVyIGVuZ2luZUlkZW50aWZpZXIsIGNvbnN0IFdlYkNvcmU6
Ok1lZGlhRW5naW5lU3VwcG9ydFBhcmFtZXRlcnMmJiBwYXJhbWV0ZXJzLCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKE1lZGlhUGxheWVyOjpTdXBwb3J0c1R5cGUpPiYmIGNvbXBsZXRpb25IYW5kbGVy
KQoreworICAgIGF1dG8gZW5naW5lID0gTWVkaWFQbGF5ZXI6Om1lZGlhRW5naW5lKGVuZ2luZUlk
ZW50aWZpZXIpOworICAgIGlmICghZW5naW5lKSB7CisgICAgICAgIFdURkxvZ0Fsd2F5cygiRmFp
bGVkIHRvIGZpbmQgbWVkaWEgZW5naW5lLiIpOworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihN
ZWRpYVBsYXllcjo6U3VwcG9ydHNUeXBlOjpJc05vdFN1cHBvcnRlZCk7CisgICAgICAgIHJldHVy
bjsKKyAgICB9CisKKyAgICBhdXRvIHJlc3VsdCA9IGVuZ2luZS0+c3VwcG9ydHNUeXBlQW5kQ29k
ZWNzKHBhcmFtZXRlcnMpOworICAgIGNvbXBsZXRpb25IYW5kbGVyKHJlc3VsdCk7Cit9CisKK3Zv
aWQgUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHk6Om9yaWdpbnNJbk1lZGlhQ2FjaGUoTWVk
aWFQbGF5ZXJFbnVtczo6TWVkaWFFbmdpbmVJZGVudGlmaWVyIGVuZ2luZUlkZW50aWZpZXIsIGNv
bnN0IFN0cmluZyYmIHBhdGgsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoVmVjdG9yPFdlYkNvcmU6
OlNlY3VyaXR5T3JpZ2luRGF0YT4mJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCit7CisgICAgYXV0
byBlbmdpbmUgPSBNZWRpYVBsYXllcjo6bWVkaWFFbmdpbmUoZW5naW5lSWRlbnRpZmllcik7Cisg
ICAgaWYgKCFlbmdpbmUpIHsKKyAgICAgICAgV1RGTG9nQWx3YXlzKCJGYWlsZWQgdG8gZmluZCBt
ZWRpYSBlbmdpbmUuIik7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHsgfSk7CisgICAgICAg
IHJldHVybjsKKyAgICB9CisKKyAgICBhdXRvIG9yaWdpbnMgPSBlbmdpbmUtPm9yaWdpbnNJbk1l
ZGlhQ2FjaGUocGF0aCk7CisKKyAgICBWZWN0b3I8V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRh
PiByZXN1bHQ7CisgICAgZm9yIChhdXRvJiBvcmlnaW4gOiBvcmlnaW5zKQorICAgICAgICByZXN1
bHQuYXBwZW5kKG9yaWdpbi0+ZGF0YSgpKTsKKworICAgIGNvbXBsZXRpb25IYW5kbGVyKFdURk1v
dmUocmVzdWx0KSk7Cit9CisKK3ZvaWQgUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHk6OmNs
ZWFyTWVkaWFDYWNoZShNZWRpYVBsYXllckVudW1zOjpNZWRpYUVuZ2luZUlkZW50aWZpZXIgZW5n
aW5lSWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiZwYXRoLCBXYWxsVGltZSBtb2RpZmllZFNpbmNl
KQoreworICAgIGF1dG8gZW5naW5lID0gTWVkaWFQbGF5ZXI6Om1lZGlhRW5naW5lKGVuZ2luZUlk
ZW50aWZpZXIpOworICAgIGlmICghZW5naW5lKSB7CisgICAgICAgIFdURkxvZ0Fsd2F5cygiRmFp
bGVkIHRvIGZpbmQgbWVkaWEgZW5naW5lLiIpOworICAgICAgICByZXR1cm47CisgICAgfQorCisg
ICAgZW5naW5lLT5jbGVhck1lZGlhQ2FjaGUocGF0aCwgbW9kaWZpZWRTaW5jZSk7Cit9CisKK3Zv
aWQgUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHk6OmNsZWFyTWVkaWFDYWNoZUZvck9yaWdp
bnMoTWVkaWFQbGF5ZXJFbnVtczo6TWVkaWFFbmdpbmVJZGVudGlmaWVyIGVuZ2luZUlkZW50aWZp
ZXIsIGNvbnN0IFN0cmluZyYmIHBhdGgsIFZlY3RvcjxXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRh
dGE+JiYgb3JpZ2luRGF0YSkKK3sKKyAgICBhdXRvIGVuZ2luZSA9IE1lZGlhUGxheWVyOjptZWRp
YUVuZ2luZShlbmdpbmVJZGVudGlmaWVyKTsKKyAgICBpZiAoIWVuZ2luZSkgeworICAgICAgICBX
VEZMb2dBbHdheXMoIkZhaWxlZCB0byBmaW5kIG1lZGlhIGVuZ2luZS4iKTsKKyAgICAgICAgcmV0
dXJuOworICAgIH0KKworICAgIEhhc2hTZXQ8UmVmUHRyPFNlY3VyaXR5T3JpZ2luPj4gb3JpZ2lu
czsKKyAgICBmb3IgKGF1dG8mIGRhdGEgOiBvcmlnaW5EYXRhKQorICAgICAgICBvcmlnaW5zLmFk
ZChkYXRhLnNlY3VyaXR5T3JpZ2luKCkpOworCisgICAgZW5naW5lLT5jbGVhck1lZGlhQ2FjaGVG
b3JPcmlnaW5zKHBhdGgsIG9yaWdpbnMpOworfQorCit2b2lkIFJlbW90ZU1lZGlhUGxheWVyTWFu
YWdlclByb3h5OjpzdXBwb3J0c0tleVN5c3RlbShNZWRpYVBsYXllckVudW1zOjpNZWRpYUVuZ2lu
ZUlkZW50aWZpZXIgZW5naW5lSWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiYga2V5U3lzdGVtLCBj
b25zdCBTdHJpbmcmJiBtaW1lVHlwZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBj
b21wbGV0aW9uSGFuZGxlcikKK3sKKyAgICBhdXRvIGVuZ2luZSA9IE1lZGlhUGxheWVyOjptZWRp
YUVuZ2luZShlbmdpbmVJZGVudGlmaWVyKTsKKyAgICBpZiAoIWVuZ2luZSkgeworICAgICAgICBX
VEZMb2dBbHdheXMoIkZhaWxlZCB0byBmaW5kIG1lZGlhIGVuZ2luZS4iKTsKKyAgICAgICAgcmV0
dXJuOworICAgIH0KKworICAgIGF1dG8gcmVzdWx0ID0gZW5naW5lLT5zdXBwb3J0c0tleVN5c3Rl
bShrZXlTeXN0ZW0sIG1pbWVUeXBlKTsKKyAgICBjb21wbGV0aW9uSGFuZGxlcihyZXN1bHQpOwor
fQorCisjaWYgIVJFTEVBU0VfTE9HX0RJU0FCTEVECitjb25zdCBMb2dnZXImIFJlbW90ZU1lZGlh
UGxheWVyTWFuYWdlclByb3h5Ojpsb2dnZXIoKSBjb25zdAoreworICAgIC8vIEZJWE1FOiB1c2Ug
YSByZWFsIGxvZ2dlcgorICAgIGlmICghbnVsbExvZ2dlcigpLmdldCgpKSB7CisgICAgICAgIG51
bGxMb2dnZXIoKSA9IExvZ2dlcjo6Y3JlYXRlKHRoaXMpOworICAgICAgICBudWxsTG9nZ2VyKCkt
PnNldEVuYWJsZWQodGhpcywgZmFsc2UpOworICAgIH0KKworICAgIHJldHVybiAqbnVsbExvZ2dl
cigpLmdldCgpOworfQorCitXVEZMb2dDaGFubmVsJiBSZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQ
cm94eTo6bG9nQ2hhbm5lbCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIFdlYktpdDJMb2dXZWJSVEM7
Cit9CisKKyNlbmRpZgorCit9CisKKyN1bmRlZiBNRVNTQUdFX0NIRUNLX0NPTlRFWFRJRAorCisj
ZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVN
ZWRpYVBsYXllck1hbmFnZXJQcm94eS5oIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlh
L1JlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uODFmYWJiYTg0ODli
MjM4ZTk0MDFiNTQyNGU2N2UxYzNjZWJkN2Y0NQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9X
ZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eS5oCkBA
IC0wLDAgKzEsOTEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShH
UFVfUFJPQ0VTUykKKworI2luY2x1ZGUgIkNvbm5lY3Rpb24uaCIKKyNpbmNsdWRlICJNZWRpYVBs
YXllclByaXZhdGVSZW1vdGVJZGVudGlmaWVyLmgiCisjaW5jbHVkZSAiTWVzc2FnZVJlY2VpdmVy
LmgiCisjaW5jbHVkZSA8V2ViQ29yZS9NZWRpYVBsYXllci5oPgorI2luY2x1ZGUgPHd0Zi9Mb2dn
ZXJIZWxwZXIuaD4KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIEdQVUNvbm5lY3Rpb25U
b1dlYlByb2Nlc3M7CitjbGFzcyBSZW1vdGVNZWRpYVBsYXllclByb3h5OworCitjbGFzcyBSZW1v
dGVNZWRpYVBsYXllck1hbmFnZXJQcm94eQorICAgIDogcHJpdmF0ZSBJUEM6Ok1lc3NhZ2VSZWNl
aXZlcgorI2lmICFSRUxFQVNFX0xPR19ESVNBQkxFRAorICAgICwgcHJpdmF0ZSBMb2dnZXJIZWxw
ZXIKKyNlbmRpZgoreworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOworcHVibGljOgorICAg
IGV4cGxpY2l0IFJlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5KEdQVUNvbm5lY3Rpb25Ub1dl
YlByb2Nlc3MmKTsKKyAgICB+UmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHkoKTsKKworICAg
IEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MmIHdlYlByb2Nlc3NDb25uZWN0aW9uKCkgY29uc3Qg
eyByZXR1cm4gbV93ZWJQcm9jZXNzQ29ubmVjdGlvbjsgfQorICAgIHZvaWQgY2xlYXIoKTsKKwor
ICAgIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2VGcm9tV2ViUHJvY2VzcyhJUEM6OkNvbm5lY3Rpb24m
IGNvbm5lY3Rpb24sIElQQzo6RGVjb2RlciYgZGVjb2RlcikgeyBkaWRSZWNlaXZlTWVzc2FnZShj
b25uZWN0aW9uLCBkZWNvZGVyKTsgfQorICAgIHZvaWQgZGlkUmVjZWl2ZVN5bmNNZXNzYWdlRnJv
bVdlYlByb2Nlc3MoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBJUEM6OkRlY29kZXImIGRl
Y29kZXIsIHN0ZDo6dW5pcXVlX3B0cjxJUEM6OkVuY29kZXI+JiBlbmNvZGVyKSB7IGRpZFJlY2Vp
dmVTeW5jTWVzc2FnZShjb25uZWN0aW9uLCBkZWNvZGVyLCBlbmNvZGVyKTsgfQorCisjaWYgIVJF
TEVBU0VfTE9HX0RJU0FCTEVECisgICAgY29uc3QgTG9nZ2VyJiBsb2dnZXIoKSBjb25zdCBmaW5h
bDsKKyAgICBjb25zdCB2b2lkKiBsb2dJZGVudGlmaWVyKCkgY29uc3QgZmluYWwgeyByZXR1cm4g
bV9sb2dJZGVudGlmaWVyOyB9CisgICAgY29uc3QgY2hhciogbG9nQ2xhc3NOYW1lKCkgY29uc3Qg
ZmluYWwgeyByZXR1cm4gIlJlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5IjsgfQorICAgIFdU
RkxvZ0NoYW5uZWwmIGxvZ0NoYW5uZWwoKSBjb25zdCBmaW5hbDsKKyNlbmRpZgorCitwcml2YXRl
OgorICAgIC8vIElQQzo6TWVzc2FnZVJlY2VpdmVyCisgICAgdm9pZCBkaWRSZWNlaXZlTWVzc2Fn
ZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImKSBmaW5hbDsKKyAgICB2b2lkIGRpZFJl
Y2VpdmVTeW5jTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImLCBzdGQ6OnVu
aXF1ZV9wdHI8SVBDOjpFbmNvZGVyPiYpIGZpbmFsOworCisgICAgdm9pZCBjcmVhdGVNZWRpYVBs
YXllcihjb25zdCBNZWRpYVBsYXllclByaXZhdGVSZW1vdGVJZGVudGlmaWVyJiwgV2ViQ29yZTo6
TWVkaWFQbGF5ZXJFbnVtczo6TWVkaWFFbmdpbmVJZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKGJvb2wpPiYmKTsKKyAgICB2b2lkIGRlbGV0ZU1lZGlhUGxheWVyKGNvbnN0IE1lZGlh
UGxheWVyUHJpdmF0ZVJlbW90ZUlkZW50aWZpZXImKTsKKworICAgIHZvaWQgZ2V0U3VwcG9ydGVk
VHlwZXMoV2ViQ29yZTo6TWVkaWFQbGF5ZXJFbnVtczo6TWVkaWFFbmdpbmVJZGVudGlmaWVyLCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKFZlY3RvcjxTdHJpbmc+JiYpPiYmKTsKKyAgICB2b2lkIHN1
cHBvcnRzVHlwZShXZWJDb3JlOjpNZWRpYVBsYXllckVudW1zOjpNZWRpYUVuZ2luZUlkZW50aWZp
ZXIsIGNvbnN0IFdlYkNvcmU6Ok1lZGlhRW5naW5lU3VwcG9ydFBhcmFtZXRlcnMmJiwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChXZWJDb3JlOjpNZWRpYVBsYXllcjo6U3VwcG9ydHNUeXBlKT4mJik7
CisKKyAgICB2b2lkIG9yaWdpbnNJbk1lZGlhQ2FjaGUoV2ViQ29yZTo6TWVkaWFQbGF5ZXJFbnVt
czo6TWVkaWFFbmdpbmVJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmJiwgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZChWZWN0b3I8V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhPiYmKT4mJik7CisgICAg
dm9pZCBjbGVhck1lZGlhQ2FjaGUoV2ViQ29yZTo6TWVkaWFQbGF5ZXJFbnVtczo6TWVkaWFFbmdp
bmVJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmJiwgV2FsbFRpbWUpOworICAgIHZvaWQgY2xlYXJN
ZWRpYUNhY2hlRm9yT3JpZ2lucyhXZWJDb3JlOjpNZWRpYVBsYXllckVudW1zOjpNZWRpYUVuZ2lu
ZUlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYmLCBWZWN0b3I8V2ViQ29yZTo6U2VjdXJpdHlPcmln
aW5EYXRhPiYmKTsKKyAgICB2b2lkIHN1cHBvcnRzS2V5U3lzdGVtKFdlYkNvcmU6Ok1lZGlhUGxh
eWVyRW51bXM6Ok1lZGlhRW5naW5lSWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiYsIGNvbnN0IFN0
cmluZyYmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKTsKKworICAgIEhhc2hNYXA8
TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlSWRlbnRpZmllciwgc3RkOjp1bmlxdWVfcHRyPFJlbW90
ZU1lZGlhUGxheWVyUHJveHk+PiBtX3Byb3hpZXM7CisgICAgR1BVQ29ubmVjdGlvblRvV2ViUHJv
Y2VzcyYgbV93ZWJQcm9jZXNzQ29ubmVjdGlvbjsKKworI2lmICFSRUxFQVNFX0xPR19ESVNBQkxF
RAorICAgIGNvbnN0IHZvaWQqIG1fbG9nSWRlbnRpZmllcjsKKyNlbmRpZgorfTsKKworfQorCisj
ZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVN
ZWRpYVBsYXllck1hbmFnZXJQcm94eS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvR1BVUHJv
Y2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eS5tZXNzYWdlcy5pbgpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi4wMWE0NDI3NTc4ZjliNTc4OGUwODQ3YTRjNWFmNDJlOGExZmY3OGE4Ci0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUGxh
eWVyTWFuYWdlclByb3h5Lm1lc3NhZ2VzLmluCkBAIC0wLDAgKzEsMzggQEAKKyMgQ29weXJpZ2h0
IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworIyBhcmUgbWV0OgorIyAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisjIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisjICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyMgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyMKKyMgVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMg
SVMnJworIyBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyMgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorIyBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMK
KyMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUgorIyBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorIyBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyMgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4KKyMgQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyMgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorIyBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKKyNpZiBFTkFCTEUoVklERU8pCisKK21lc3NhZ2Vz
IC0+IFJlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5IE5vdFJlZkNvdW50ZWQgeworICAgIENy
ZWF0ZU1lZGlhUGxheWVyKFdlYktpdDo6TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlSWRlbnRpZmll
ciBpZCwgZW51bTp1aW50OF90IFdlYkNvcmU6Ok1lZGlhUGxheWVyRW51bXM6Ok1lZGlhRW5naW5l
SWRlbnRpZmllciByZW1vdGVFbmdpbmVJZGVudGlmaWVyKSAtPiAoYm9vbCBzdWNjZXNzKSBTeW5j
aHJvbm91cworICAgIERlbGV0ZU1lZGlhUGxheWVyKFdlYktpdDo6TWVkaWFQbGF5ZXJQcml2YXRl
UmVtb3RlSWRlbnRpZmllciBpZCkKKworICAgIEdldFN1cHBvcnRlZFR5cGVzKGVudW06dWludDhf
dCBXZWJDb3JlOjpNZWRpYVBsYXllckVudW1zOjpNZWRpYUVuZ2luZUlkZW50aWZpZXIgcmVtb3Rl
RW5naW5lSWRlbnRpZmllcikgLT4gKFZlY3RvcjxTdHJpbmc+IHR5cGVzKSBTeW5jaHJvbm91cwor
ICAgIFN1cHBvcnRzVHlwZShlbnVtOnVpbnQ4X3QgV2ViQ29yZTo6TWVkaWFQbGF5ZXJFbnVtczo6
TWVkaWFFbmdpbmVJZGVudGlmaWVyIHJlbW90ZUVuZ2luZUlkZW50aWZpZXIsIHN0cnVjdCBXZWJD
b3JlOjpNZWRpYUVuZ2luZVN1cHBvcnRQYXJhbWV0ZXJzIHR5cGUpIC0+IChlbnVtOnVpbnQ4X3Qg
V2ViQ29yZTo6TWVkaWFQbGF5ZXI6OlN1cHBvcnRzVHlwZSBzdXBwb3J0KSBTeW5jaHJvbm91cwor
ICAgIE9yaWdpbnNJbk1lZGlhQ2FjaGUoZW51bTp1aW50OF90IFdlYkNvcmU6Ok1lZGlhUGxheWVy
RW51bXM6Ok1lZGlhRW5naW5lSWRlbnRpZmllciByZW1vdGVFbmdpbmVJZGVudGlmaWVyLCBTdHJp
bmcgcGF0aCkgLT4gKFZlY3RvcjxXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGE+IG9yaWdpbnMp
IFN5bmNocm9ub3VzCisgICAgQ2xlYXJNZWRpYUNhY2hlKGVudW06dWludDhfdCBXZWJDb3JlOjpN
ZWRpYVBsYXllckVudW1zOjpNZWRpYUVuZ2luZUlkZW50aWZpZXIgcmVtb3RlRW5naW5lSWRlbnRp
ZmllciwgU3RyaW5nIHBhdGgsIFdhbGxUaW1lIG1vZGlmaWVkU2luY2UpCisgICAgQ2xlYXJNZWRp
YUNhY2hlRm9yT3JpZ2lucyhlbnVtOnVpbnQ4X3QgV2ViQ29yZTo6TWVkaWFQbGF5ZXJFbnVtczo6
TWVkaWFFbmdpbmVJZGVudGlmaWVyIHJlbW90ZUVuZ2luZUlkZW50aWZpZXIsIFN0cmluZyBwYXRo
LCBWZWN0b3I8V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhPiBvcmlnaW5zKQorICAgIFN1cHBv
cnRzS2V5U3lzdGVtKGVudW06dWludDhfdCBXZWJDb3JlOjpNZWRpYVBsYXllckVudW1zOjpNZWRp
YUVuZ2luZUlkZW50aWZpZXIgcmVtb3RlRW5naW5lSWRlbnRpZmllciwgU3RyaW5nIGtleVN5c3Rl
bSwgU3RyaW5nIG1pbWVUeXBlKSAtPiAoYm9vbCBzdXBwb3J0cykgU3luY2hyb25vdXMKK30KKwor
I2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3Rl
TWVkaWFQbGF5ZXJQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVt
b3RlTWVkaWFQbGF5ZXJQcm94eS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZmNlOTMzNTUxMDkzZmE2ZDg0NWYz
MzJhNGEwNjNhZjExZjllMGNhYQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BV
UHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVBsYXllclByb3h5LmNwcApAQCAtMCwwICsxLDk1IEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlJlbW90ZU1lZGlh
UGxheWVyUHJveHkuaCIKKworI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykKKworI2luY2x1ZGUgIlJl
bW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5LmgiCisjaW5jbHVkZSA8V2ViQ29yZS9NZWRpYVBs
YXllci5oPgorI2luY2x1ZGUgPFdlYkNvcmUvTWVkaWFQbGF5ZXJQcml2YXRlLmg+CisKK25hbWVz
cGFjZSBXZWJLaXQgeworCit1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKKworUmVtb3RlTWVkaWFQ
bGF5ZXJQcm94eTo6UmVtb3RlTWVkaWFQbGF5ZXJQcm94eShSZW1vdGVNZWRpYVBsYXllck1hbmFn
ZXJQcm94eSYgbWFuYWdlciwgY29uc3QgTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlSWRlbnRpZmll
ciYgaWQsIFJlZjxJUEM6OkNvbm5lY3Rpb24+JiYgY29ubmVjdGlvbiwgTWVkaWFQbGF5ZXJFbnVt
czo6TWVkaWFFbmdpbmVJZGVudGlmaWVyIGVuZ2luZUlkZW50aWZpZXIpCisgICAgOiBtX2lkKGlk
KQorICAgICwgbV9jb25uZWN0aW9uKFdURk1vdmUoY29ubmVjdGlvbikpCisgICAgLCBtX21hbmFn
ZXIobWFuYWdlcikKKyAgICAsIG1fZW5naW5lSWRlbnRpZmllcihlbmdpbmVJZGVudGlmaWVyKQor
I2lmICFSRUxFQVNFX0xPR19ESVNBQkxFRAorICAgICwgbV9sb2dnZXIobWFuYWdlci5sb2dnZXIo
KSkKKyNlbmRpZgoreworICAgIG1fcGxheWVyID0gTWVkaWFQbGF5ZXI6OmNyZWF0ZSgqdGhpcywg
ZW5naW5lSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlTWVkaWFQbGF5ZXJQcm94eTo6aW52
YWxpZGF0ZSgpCit7CisgICAgbV9wbGF5ZXItPmludmFsaWRhdGUoKTsKK30KKwordm9pZCBSZW1v
dGVNZWRpYVBsYXllclByb3h5OjptZWRpYVBsYXllck5ldHdvcmtTdGF0ZUNoYW5nZWQoKQorewor
ICAgIG1fY29ubmVjdGlvbi0+c2VuZChNZXNzYWdlczo6UmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2Vy
OjpOZXR3b3JrU3RhdGVDaGFuZ2VkKG1faWQsIG1fcGxheWVyLT5uZXR3b3JrU3RhdGUoKSksIDAp
OworfQorCit2b2lkIFJlbW90ZU1lZGlhUGxheWVyUHJveHk6Om1lZGlhUGxheWVyUmVhZHlTdGF0
ZUNoYW5nZWQoKQoreworICAgIG1fY29ubmVjdGlvbi0+c2VuZChNZXNzYWdlczo6UmVtb3RlTWVk
aWFQbGF5ZXJNYW5hZ2VyOjpSZWFkeVN0YXRlQ2hhbmdlZChtX2lkLCBtX3BsYXllci0+cmVhZHlT
dGF0ZSgpKSwgMCk7Cit9CisKK3ZvaWQgUmVtb3RlTWVkaWFQbGF5ZXJQcm94eTo6bWVkaWFQbGF5
ZXJWb2x1bWVDaGFuZ2VkKCkKK3sKKyAgICBtX2Nvbm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6OlJl
bW90ZU1lZGlhUGxheWVyTWFuYWdlcjo6Vm9sdW1lQ2hhbmdlZChtX2lkLCBtX3BsYXllci0+dm9s
dW1lKCkpLCAwKTsKK30KKwordm9pZCBSZW1vdGVNZWRpYVBsYXllclByb3h5OjptZWRpYVBsYXll
ck11dGVDaGFuZ2VkKCkKK3sKKyAgICBtX2Nvbm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6OlJlbW90
ZU1lZGlhUGxheWVyTWFuYWdlcjo6TXV0ZUNoYW5nZWQobV9pZCwgbV9wbGF5ZXItPm11dGVkKCkp
LCAwKTsKK30KKwordm9pZCBSZW1vdGVNZWRpYVBsYXllclByb3h5OjptZWRpYVBsYXllclRpbWVD
aGFuZ2VkKCkKK3sKKyAgICBtX2Nvbm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6OlJlbW90ZU1lZGlh
UGxheWVyTWFuYWdlcjo6VGltZUNoYW5nZWQobV9pZCwgbV9wbGF5ZXItPmN1cnJlbnRUaW1lKCkp
LCAwKTsKK30KKwordm9pZCBSZW1vdGVNZWRpYVBsYXllclByb3h5OjptZWRpYVBsYXllckR1cmF0
aW9uQ2hhbmdlZCgpCit7CisgICAgbV9jb25uZWN0aW9uLT5zZW5kKE1lc3NhZ2VzOjpSZW1vdGVN
ZWRpYVBsYXllck1hbmFnZXI6OkR1cmF0aW9uQ2hhbmdlZChtX2lkLCBtX3BsYXllci0+ZHVyYXRp
b24oKSksIDApOworfQorCit2b2lkIFJlbW90ZU1lZGlhUGxheWVyUHJveHk6Om1lZGlhUGxheWVy
UmF0ZUNoYW5nZWQoKQoreworICAgIG1fY29ubmVjdGlvbi0+c2VuZChNZXNzYWdlczo6UmVtb3Rl
TWVkaWFQbGF5ZXJNYW5hZ2VyOjpSYXRlQ2hhbmdlZChtX2lkLCBtX3BsYXllci0+cmF0ZSgpKSwg
MCk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjdW5kZWYgTUVTU0FHRV9DSEVDS19D
T05URVhUSUQKKworI2VuZGlmIC8vIEVOQUJMRShHUFVfUFJPQ0VTUykKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVBsYXllclByb3h5LmggYi9T
b3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJQcm94eS5oCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjdlMWEyN2M3ZWJlY2U3MzIzOGY5ZDBkMDZmYzEyNDhmNGUzYmI4YWIKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFQ
bGF5ZXJQcm94eS5oCkBAIC0wLDAgKzEsODkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTkg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFT
IElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVU
T1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
CisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YK
KyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UK
KworI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykKKworI2luY2x1ZGUgIk1lZGlhUGxheWVyUHJpdmF0
ZVJlbW90ZUlkZW50aWZpZXIuaCIKKyNpbmNsdWRlIDx3dGYvTG9nZ2VySGVscGVyLmg+CisjaW5j
bHVkZSA8d3RmL1JlZlB0ci5oPgorI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KKworbmFtZXNwYWNl
IElQQyB7CitjbGFzcyBDb25uZWN0aW9uOworfQorCituYW1lc3BhY2UgV2ViQ29yZSB7CitjbGFz
cyBNZWRpYVBsYXllcjsKK30KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIFJlbW90ZU1l
ZGlhUGxheWVyTWFuYWdlclByb3h5OworCitjbGFzcyBSZW1vdGVNZWRpYVBsYXllclByb3h5Cisg
ICAgOiBwdWJsaWMgTWVkaWFQbGF5ZXJDbGllbnQgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NB
VEVEOworcHVibGljOgorICAgIFJlbW90ZU1lZGlhUGxheWVyUHJveHkoUmVtb3RlTWVkaWFQbGF5
ZXJNYW5hZ2VyUHJveHkmLCBjb25zdCBNZWRpYVBsYXllclByaXZhdGVSZW1vdGVJZGVudGlmaWVy
JiwgUmVmPElQQzo6Q29ubmVjdGlvbj4mJiwgTWVkaWFQbGF5ZXJFbnVtczo6TWVkaWFFbmdpbmVJ
ZGVudGlmaWVyKTsKKyAgICB2aXJ0dWFsIH5SZW1vdGVNZWRpYVBsYXllclByb3h5KCkKKyAgICB7
CisgICAgfQorCisgICAgdm9pZCBpbnZhbGlkYXRlKCk7CisKK3ByaXZhdGU6CisgICAgLy8gTWVk
aWFQbGF5ZXJDbGllbnQKKyAgICB2b2lkIG1lZGlhUGxheWVyTmV0d29ya1N0YXRlQ2hhbmdlZCgp
IGZpbmFsOworICAgIHZvaWQgbWVkaWFQbGF5ZXJSZWFkeVN0YXRlQ2hhbmdlZCgpIGZpbmFsOwor
ICAgIHZvaWQgbWVkaWFQbGF5ZXJWb2x1bWVDaGFuZ2VkKCkgZmluYWw7CisgICAgdm9pZCBtZWRp
YVBsYXllck11dGVDaGFuZ2VkKCkgZmluYWw7CisgICAgdm9pZCBtZWRpYVBsYXllclRpbWVDaGFu
Z2VkKCkgZmluYWw7CisgICAgdm9pZCBtZWRpYVBsYXllckR1cmF0aW9uQ2hhbmdlZCgpIGZpbmFs
OworICAgIHZvaWQgbWVkaWFQbGF5ZXJSYXRlQ2hhbmdlZCgpIGZpbmFsOworCisgICAgY29uc3Qg
VmVjdG9yPFdlYkNvcmU6OkNvbnRlbnRUeXBlPiYgbWVkaWFDb250ZW50VHlwZXNSZXF1aXJpbmdI
YXJkd2FyZVN1cHBvcnQoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX3R5cGVzUmVxdWlyaW5nSGFy
ZHdhcmVTdXBwb3J0OyB9CisKKyNpZiAhUkVMRUFTRV9MT0dfRElTQUJMRUQKKyAgICBjb25zdCBM
b2dnZXImIG1lZGlhUGxheWVyTG9nZ2VyKCkgZmluYWwgeyByZXR1cm4gbV9sb2dnZXI7IH0KKyNl
bmRpZgorCitwcm90ZWN0ZWQ6CisgICAgTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlSWRlbnRpZmll
ciBtX2lkOworICAgIFJlZjxJUEM6OkNvbm5lY3Rpb24+IG1fY29ubmVjdGlvbjsKKyAgICBSZWZQ
dHI8TWVkaWFQbGF5ZXI+IG1fcGxheWVyOworICAgIFJlbW90ZU1lZGlhUGxheWVyTWFuYWdlclBy
b3h5JiBtX21hbmFnZXI7CisgICAgTWVkaWFQbGF5ZXJFbnVtczo6TWVkaWFFbmdpbmVJZGVudGlm
aWVyIG1fZW5naW5lSWRlbnRpZmllcjsKKyAgICBWZWN0b3I8V2ViQ29yZTo6Q29udGVudFR5cGU+
IG1fdHlwZXNSZXF1aXJpbmdIYXJkd2FyZVN1cHBvcnQ7CisKKyNpZiAhUkVMRUFTRV9MT0dfRElT
QUJMRUQKKyAgICBjb25zdCBMb2dnZXImIG1fbG9nZ2VyOworI2VuZGlmCit9OworCit9CisKKyNl
bmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5w
eSBiL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvbWVzc2FnZXMucHkKaW5kZXggZWQxMWFj
MjcyNTIyNmU0N2EyYjU2YmNjOWVjZjIyMmRhYzAwMDlhZS4uZjJlOWVkN2FiNTQwMmVmNTExODhm
N2U4ZGJlMzk2YmE4YWNlMGZhZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TY3JpcHRzL3dl
YmtpdC9tZXNzYWdlcy5weQorKysgYi9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L21lc3Nh
Z2VzLnB5CkBAIC0xLDQgKzEsNCBAQAotIyBDb3B5cmlnaHQgKEMpIDIwMTAtMjAxOCBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjIENvcHlyaWdodCAoQykgMjAxMC0yMDE5IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICMKICMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAjIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpA
QCAtMjE5LDEwICsyMTksMTEgQEAgZGVmIHR5cGVzX3RoYXRfY2Fubm90X2JlX2ZvcndhcmRfZGVj
bGFyZWQoKToKICAgICAgICAgJ1dlYkNvcmU6OlNXU2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIn
LAogICAgICAgICAnV2ViS2l0OjpBY3Rpdml0eVN0YXRlQ2hhbmdlSUQnLAogICAgICAgICAnV2Vi
S2l0OjpMYXllckhvc3RpbmdDb250ZXh0SUQnLAotICAgICAgICAnV2ViS2l0OjpUcmFuc2FjdGlv
bklEJywKKyAgICAgICAgJ1dlYktpdDo6TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlSWRlbnRpZmll
cicsCiAgICAgICAgICdXZWJLaXQ6OlN0b3JhZ2VBcmVhSWRlbnRpZmllcicsCiAgICAgICAgICdX
ZWJLaXQ6OlN0b3JhZ2VBcmVhSW1wbElkZW50aWZpZXInLAogICAgICAgICAnV2ViS2l0OjpTdG9y
YWdlTmFtZXNwYWNlSWRlbnRpZmllcicsCisgICAgICAgICdXZWJLaXQ6OlRyYW5zYWN0aW9uSUQn
LAogICAgICAgICAnV2ViS2l0OjpVc2VyQ29udGVudENvbnRyb2xsZXJJZGVudGlmaWVyJywKICAg
ICAgICAgJ1dlYktpdDo6V2ViUGFnZVByb3h5SWRlbnRpZmllcicsCiAgICAgXSkKQEAgLTYwMyw2
ICs2MDQsNyBAQCBkZWYgaGVhZGVyc19mb3JfdHlwZSh0eXBlKToKICAgICAgICAgJ1dlYktpdDo6
V2ViTW91c2VFdmVudCc6IFsnIldlYkV2ZW50LmgiJ10sCiAgICAgICAgICdXZWJLaXQ6OldlYlRv
dWNoRXZlbnQnOiBbJyJXZWJFdmVudC5oIiddLAogICAgICAgICAnV2ViS2l0OjpXZWJXaGVlbEV2
ZW50JzogWyciV2ViRXZlbnQuaCInXSwKKyAgICAgICAgJ1dlYkNvcmU6Ok1lZGlhRW5naW5lU3Vw
cG9ydFBhcmFtZXRlcnMnOiBbJzxXZWJDb3JlL01lZGlhUGxheWVyLmg+J10sCiAgICAgICAgICdz
dHJ1Y3QgV2ViQ29yZTo6RWxlbWVudENvbnRleHQnOiBbJzxXZWJDb3JlL0VsZW1lbnRDb250ZXh0
Lmg+J10sCiAgICAgICAgICdzdHJ1Y3QgV2ViS2l0OjpXZWJVc2VyU2NyaXB0RGF0YSc6IFsnIldl
YlVzZXJDb250ZW50Q29udHJvbGxlckRhdGFUeXBlcy5oIiddLAogICAgICAgICAnc3RydWN0IFdl
YktpdDo6V2ViVXNlclN0eWxlU2hlZXREYXRhJzogWyciV2ViVXNlckNvbnRlbnRDb250cm9sbGVy
RGF0YVR5cGVzLmgiJ10sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NvdXJjZXMudHh0IGIv
U291cmNlL1dlYktpdC9Tb3VyY2VzLnR4dAppbmRleCA1ZjA0ZDhhM2RhMGRkMzNlZjZiOTA2YWVh
OTVlMjk1MGY4ZGVmNmY5Li41NDI0ZTVkZmJiMTUyMDEwYjBiMzJkNmY1ZWE2ZDUzNTg5MTRlNTZi
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NvdXJjZXMudHh0CisrKyBiL1NvdXJjZS9XZWJL
aXQvU291cmNlcy50eHQKQEAgLTUwMCw2ICs1MDAsOCBAQCBXZWJQcm9jZXNzL01lZGlhU3RyZWFt
L01lZGlhRGV2aWNlU2FuZGJveEV4dGVuc2lvbnMuY3BwCiBXZWJQcm9jZXNzL01lZGlhU3RyZWFt
L1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlci5jcHAKIAogV2ViUHJvY2Vzcy9HUFUv
R1BVUHJvY2Vzc0Nvbm5lY3Rpb24uY3BwCitXZWJQcm9jZXNzL0dQVS9tZWRpYS9NZWRpYVBsYXll
clByaXZhdGVSZW1vdGUuY3BwCitXZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVNZWRpYVBsYXll
ck1hbmFnZXIuY3BwCiAKIFdlYlByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rp
b24uY3BwCiBXZWJQcm9jZXNzL05ldHdvcmsvV2ViTG9hZGVyU3RyYXRlZ3kuY3BwCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1NvdXJjZXNDb2NvYS50eHQgYi9Tb3VyY2UvV2ViS2l0L1NvdXJj
ZXNDb2NvYS50eHQKaW5kZXggOWQyNDJlMmEwNjRkZmY3MmY0OWM0MmY1NGQ5NzgxM2NhZDk0ZDky
Yy4uMzcyYjlhYzFiZmM3M2E0OTQ5NTliNzMyMDg3MWNiYzI4YzM0M2UyMCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9Tb3VyY2VzQ29jb2EudHh0CisrKyBiL1NvdXJjZS9XZWJLaXQvU291cmNl
c0NvY29hLnR4dApAQCAtNTksNiArNTksOCBAQCBOZXR3b3JrUHJvY2Vzcy93ZWJydGMvTmV0d29y
a1JUQ1NvY2tldC5jcHAKIAogR1BVUHJvY2Vzcy9pb3MvR1BVUHJvY2Vzc0lPUy5tbQogR1BVUHJv
Y2Vzcy9tYWMvR1BVUHJvY2Vzc01hYy5tbQorR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVBs
YXllclByb3h5LmNwcAorR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQ
cm94eS5jcHAKIEdQVVByb2Nlc3MvRW50cnlQb2ludC9Db2NvYS9YUENTZXJ2aWNlL0dQVVNlcnZp
Y2VFbnRyeVBvaW50Lm1tCiAKIFBsYXRmb3JtL2NmL01vZHVsZUNGLmNwcApAQCAtNjI0LDUgKzYy
Niw3IEBAIEVkaXRhYmxlSW1hZ2VDb250cm9sbGVyTWVzc2FnZVJlY2VpdmVyLmNwcAogR1BVQ29u
bmVjdGlvblRvV2ViUHJvY2Vzc01lc3NhZ2VSZWNlaXZlci5jcHAKIEdQVVByb2Nlc3NQcm94eU1l
c3NhZ2VSZWNlaXZlci5jcHAKIEdQVVByb2Nlc3NNZXNzYWdlUmVjZWl2ZXIuY3BwCisvL1JlbW90
ZU1lZGlhUGxheWVyTWFuYWdlck1lc3NhZ2VSZWNlaXZlci5jcHAKKy8vUmVtb3RlTWVkaWFQbGF5
ZXJNYW5hZ2VyUHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwCiBTZXJ2aWNlV29ya2VyRmV0Y2hUYXNr
TWVzc2FnZVJlY2VpdmVyLmNwcAogVGV4dENoZWNraW5nQ29udHJvbGxlclByb3h5TWVzc2FnZVJl
Y2VpdmVyLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oKaW5kZXggNDY2Y2RlOTljZWRhNDFhYjNkMTI1YjAyNTJiYTI5YzZhOTFmMjg2Yy4uMDZi
MDU1NGZhNGZiNzZlODIzZTE5MmM1MWQxNjA5ZGQyOGU2YzgxYiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2Vi
S2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC05MSw2ICs5MSwxMyBAQAog
CQkwNzRFNzVGRTFERjIyMTE5MDBEMzE4RUMgLyogVXNlck1lZGlhUHJvY2Vzc01hbmFnZXIuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3NEU3NUZCMURG
MUZEMTMwMEQzMThFQyAvKiBVc2VyTWVkaWFQcm9jZXNzTWFuYWdlci5oICovOyB9OwogCQkwNzZF
ODg0RTFBMTNDQURGMDA1RTkwRkMgLyogQVBJQ29udGV4dE1lbnVDbGllbnQuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3NkU4ODREMUExM0NBREYwMDVF
OTBGQyAvKiBBUElDb250ZXh0TWVudUNsaWVudC5oICovOyB9OwogCQkwNzcyODExRDIxMjM0RkY2
MDBDOEVGMkUgLyogVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0QTQxMEY0MzE5QUY3QjI3MDAy
RUJBQjUgLyogVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyLmggKi87IH07CisJCTA3
OTIzMTQ4MjM5Q0JDQjgwMDk1OThFMiAvKiBSZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eU1l
c3NhZ2VzUmVwbGllcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gMDc5MjMxNDIyMzlDQkNCNTAwOTU5OEUyIC8qIFJlbW90ZU1lZGlhUGxheWVyTWFuYWdl
clByb3h5TWVzc2FnZXNSZXBsaWVzLmggKi87IH07CisJCTA3OTIzMTQ5MjM5Q0JDQjgwMDk1OThF
MiAvKiBSZW1vdGVNZWRpYVBsYXllck1hbmFnZXJNZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDc5MjMxNDMyMzlDQkNCNjAw
OTU5OEUyIC8qIFJlbW90ZU1lZGlhUGxheWVyTWFuYWdlck1lc3NhZ2VSZWNlaXZlci5jcHAgKi87
IH07CisJCTA3OTIzMTRBMjM5Q0JDQjgwMDk1OThFMiAvKiBSZW1vdGVNZWRpYVBsYXllck1hbmFn
ZXJNZXNzYWdlc1JlcGxpZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDA3OTIzMTQ0MjM5Q0JDQjYwMDk1OThFMiAvKiBSZW1vdGVNZWRpYVBsYXllck1h
bmFnZXJNZXNzYWdlc1JlcGxpZXMuaCAqLzsgfTsKKwkJMDc5MjMxNEIyMzlDQkNCODAwOTU5OEUy
IC8qIFJlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5TWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3OTIzMTQ1MjM5Q0JD
QjcwMDk1OThFMiAvKiBSZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eU1lc3NhZ2VSZWNlaXZl
ci5jcHAgKi87IH07CisJCTA3OTIzMTRDMjM5Q0JDQjgwMDk1OThFMiAvKiBSZW1vdGVNZWRpYVBs
YXllck1hbmFnZXJQcm94eU1lc3NhZ2VzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSAwNzkyMzE0NjIzOUNCQ0I3MDA5NTk4RTIgLyogUmVtb3RlTWVkaWFQ
bGF5ZXJNYW5hZ2VyUHJveHlNZXNzYWdlcy5oICovOyB9OworCQkwNzkyMzE0RDIzOUNCQ0I4MDA5
NTk4RTIgLyogUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyTWVzc2FnZXMuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3OTIzMTQ3MjM5Q0JDQjcwMDk1OThF
MiAvKiBSZW1vdGVNZWRpYVBsYXllck1hbmFnZXJNZXNzYWdlcy5oICovOyB9OworCQkwNzkyMzE0
RjIzOUQ2MjNFMDA5NTk4RTIgLyogTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlSWRlbnRpZmllci5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDc5MjMxNEUy
MzlENUY1MzAwOTU5OEUyIC8qIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZUlkZW50aWZpZXIuaCAq
LzsgfTsKIAkJMDdBNUVCQkMxQzdCQTQzRTAwQjlDQTY5IC8qIFdLRnJhbWVIYW5kbGVSZWYuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3QTVFQkJBMUM3
QkE0M0UwMEI5Q0E2OSAvKiBXS0ZyYW1lSGFuZGxlUmVmLmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMEU5N0Q3NEQyMDBFOTAwNDAwQkY2NjQzIC8q
IFNhZmVCcm93c2luZ1NQSS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gMEU5N0Q3NEMyMDBFOEZGMzAwQkY2NjQzIC8qIFNhZmVCcm93c2luZ1NQSS5oICov
OyB9OwogCQkwRURFODUwMzIwMDRFNzVEMDAwMzA1NjAgLyogV2Vic2l0ZVBvcFVwUG9saWN5Lmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRURFODUwMjIw
MDRFNzQ5MDAwMzA1NjAgLyogV2Vic2l0ZVBvcFVwUG9saWN5LmggKi87IH07CkBAIC0xOTk3LDYg
KzIwMDQsOSBAQAogCQkwMEI5NjYxNTE4RTI0Q0JBMDBDRTFGODggLyogQVBJRmluZENsaWVudC5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBUElGaW5kQ2xpZW50Lmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTAwQjk2NjE3MThFMjVBRTEwMENFMUY4OCAvKiBGaW5k
Q2xpZW50Lm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gRmluZENs
aWVudC5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMDBCOTY2MTgxOEUyNUFFMTAw
Q0UxRjg4IC8qIEZpbmRDbGllbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
RmluZENsaWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwNzI1RUZBQjIzOUFF
Mzg0MDBBNTM4QTkgLyogUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHkubWVzc2FnZXMuaW4g
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBw
YXRoID0gUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHkubWVzc2FnZXMuaW47IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCTA3MjVFRkFDMjM5QUUzODUwMEE1MzhBOSAvKiBSZW1vdGVN
ZWRpYVBsYXllck1hbmFnZXJQcm94eS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZW1vdGVNZWRpYVBsYXll
ck1hbmFnZXJQcm94eS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwNzI1RUZBRDIz
OUIwMjQ1MDBBNTM4QTkgLyogUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHkuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHkuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQkwNzI5N0Y5QzFDMTcxMUVBMDAzRjA3MzUgLyogRGV2aWNl
SWRIYXNoU2FsdFN0b3JhZ2UuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gRGV2aWNlSWRIYXNoU2FsdFN0b3JhZ2UuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQkwNzI5N0Y5QzFDMTdCQkVBMDAzRjA3MzUgLyogVXNlck1lZGlhUGVybWlzc2lvbkNoZWNr
UHJveHkuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gVXNlck1lZGlh
UGVybWlzc2lvbkNoZWNrUHJveHkuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkw
NzI5N0Y5RDFDMTdCQkVBMDAzRjA3MzUgLyogVXNlck1lZGlhUGVybWlzc2lvbkNoZWNrUHJveHku
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVXNlck1lZGlhUGVybWlzc2lvbkNo
ZWNrUHJveHkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTIwMTEsOCArMjAyMSwy
MiBAQAogCQkwNzRFNzYwMTFERjcwNzVEMDBEMzE4RUMgLyogTWVkaWFEZXZpY2VTYW5kYm94RXh0
ZW5zaW9ucy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBNZWRpYURldmljZVNh
bmRib3hFeHRlbnNpb25zLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTA3NkU4ODRE
MUExM0NBREYwMDVFOTBGQyAvKiBBUElDb250ZXh0TWVudUNsaWVudC5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBBUElDb250ZXh0TWVudUNsaWVudC5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQkwNzZFODg0RjFBMTNDQkM2MDA1RTkwRkMgLyogQVBJSW5qZWN0ZWRC
dW5kbGVQYWdlQ29udGV4dE1lbnVDbGllbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gQVBJSW5qZWN0ZWRCdW5kbGVQYWdlQ29udGV4dE1lbnVDbGllbnQuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMDc5MjMxMzAyMzlCM0IwQzAwOTU5OEUyIC8qIFJlbW90ZU1l
ZGlhUGxheWVyTWFuYWdlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSZW1vdGVNZWRpYVBsYXll
ck1hbmFnZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwNzkyMzEzMTIzOUIz
QjBDMDA5NTk4RTIgLyogTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCTA3OTIzMTMyMjM5QjNCMEMwMDk1OThFMiAvKiBNZWRpYVBsYXllclByaXZhdGVS
ZW1vdGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTA3OTIzMTMzMjM5QjNCMEMwMDk1OThFMiAvKiBSZW1v
dGVNZWRpYVBsYXllck1hbmFnZXIubWVzc2FnZXMuaW4gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gUmVtb3RlTWVkaWFQbGF5ZXJN
YW5hZ2VyLm1lc3NhZ2VzLmluOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwNzkyMzEz
NDIzOUIzQjBDMDA5NTk4RTIgLyogUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IFJlbW90ZU1lZGlhUGxheWVyTWFuYWdlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQkwNzkyMzE0MjIzOUNCQ0I1MDA5NTk4RTIgLyogUmVtb3RlTWVkaWFQbGF5ZXJNYW5h
Z2VyUHJveHlNZXNzYWdlc1JlcGxpZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHlNZXNzYWdlc1JlcGxpZXMuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMDc5MjMxNDMyMzlDQkNCNjAwOTU5OEUyIC8qIFJlbW90
ZU1lZGlhUGxheWVyTWFuYWdlck1lc3NhZ2VSZWNlaXZlci5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBSZW1vdGVNZWRpYVBsYXllck1hbmFnZXJNZXNzYWdlUmVjZWl2
ZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwNzkyMzE0NDIzOUNCQ0I2MDA5
NTk4RTIgLyogUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyTWVzc2FnZXNSZXBsaWVzLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlbW90ZU1lZGlhUGxheWVyTWFuYWdlck1lc3Nh
Z2VzUmVwbGllcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwNzkyMzE0NTIzOUNC
Q0I3MDA5NTk4RTIgLyogUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHlNZXNzYWdlUmVjZWl2
ZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUmVtb3RlTWVkaWFQ
bGF5ZXJNYW5hZ2VyUHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQkwNzkyMzE0NjIzOUNCQ0I3MDA5NTk4RTIgLyogUmVtb3RlTWVkaWFQbGF5ZXJN
YW5hZ2VyUHJveHlNZXNzYWdlcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBS
ZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eU1lc3NhZ2VzLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCTA3OTIzMTQ3MjM5Q0JDQjcwMDk1OThFMiAvKiBSZW1vdGVNZWRpYVBsYXll
ck1hbmFnZXJNZXNzYWdlcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZW1v
dGVNZWRpYVBsYXllck1hbmFnZXJNZXNzYWdlcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQkwNzkyMzE0RTIzOUQ1RjUzMDA5NTk4RTIgLyogTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3Rl
SWRlbnRpZmllci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBNZWRpYVBsYXllclByaXZhdGVSZW1vdGVJZGVu
dGlmaWVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTA3QTVFQkI5MUM3QkE0M0Uw
MEI5Q0E2OSAvKiBXS0ZyYW1lSGFuZGxlUmVmLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IFdLRnJhbWVIYW5kbGVSZWYuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQkwN0E1RUJCQTFDN0JBNDNFMDBCOUNBNjkgLyogV0tGcmFtZUhhbmRsZVJlZi5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXS0ZyYW1lSGFuZGxlUmVmLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTA3QkFGMzU2MjNBMkNDMTcwMDQ0MjU3RSAvKiBSZW1v
dGVNZWRpYVBsYXllclByb3h5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlbW90ZU1lZGlhUGxheWVyUHJv
eHkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMDdCQUYzNTcyM0EyQ0MxOTAwNDQy
NTdFIC8qIFJlbW90ZU1lZGlhUGxheWVyUHJveHkuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUmVt
b3RlTWVkaWFQbGF5ZXJQcm94eS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTA4
NjdENkE1RkU4NDAzMDdDMDJBQUMwNyAvKiBBcHBLaXQuZnJhbWV3b3JrICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gd3JhcHBlci5mcmFtZXdvcms7IG5h
bWUgPSBBcHBLaXQuZnJhbWV3b3JrOyBwYXRoID0gL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3Mv
QXBwS2l0LmZyYW1ld29yazsgc291cmNlVHJlZSA9ICI8YWJzb2x1dGU+IjsgfTsKIAkJMDg5QzE2
NjdGRTg0MTE1OEMwMkFBQzA3IC8qIGVuICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5wbGlzdC5zdHJpbmdzOyBu
YW1lID0gZW47IHBhdGggPSBlbi5scHJvai9JbmZvUGxpc3Quc3RyaW5nczsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJMEU5N0Q3NEMyMDBFOEZGMzAwQkY2NjQzIC8qIFNhZmVCcm93c2lu
Z1NQSS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBTYWZlQnJvd3NpbmdTUEkuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKQEAgLTUwMTMsNiArNTAzNywzMSBAQAogCQkJdGFiV2lkdGggPSA4OwogCQkJ
dXNlc1RhYnMgPSAwOwogCQl9OworCQkwNzkyMzEyRjIzOUIzQjBDMDA5NTk4RTIgLyogbWVkaWEg
Ki8gPSB7CisJCQlpc2EgPSBQQlhHcm91cDsKKwkJCWNoaWxkcmVuID0gKAorCQkJCTA3OTIzMTMx
MjM5QjNCMEMwMDk1OThFMiAvKiBNZWRpYVBsYXllclByaXZhdGVSZW1vdGUuY3BwICovLAorCQkJ
CTA3OTIzMTMyMjM5QjNCMEMwMDk1OThFMiAvKiBNZWRpYVBsYXllclByaXZhdGVSZW1vdGUuaCAq
LywKKwkJCQkwNzkyMzE0RTIzOUQ1RjUzMDA5NTk4RTIgLyogTWVkaWFQbGF5ZXJQcml2YXRlUmVt
b3RlSWRlbnRpZmllci5oICovLAorCQkJCTA3OTIzMTMwMjM5QjNCMEMwMDk1OThFMiAvKiBSZW1v
dGVNZWRpYVBsYXllck1hbmFnZXIuY3BwICovLAorCQkJCTA3OTIzMTM0MjM5QjNCMEMwMDk1OThF
MiAvKiBSZW1vdGVNZWRpYVBsYXllck1hbmFnZXIuaCAqLywKKwkJCQkwNzkyMzEzMzIzOUIzQjBD
MDA5NTk4RTIgLyogUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyLm1lc3NhZ2VzLmluICovLAorCQkJ
KTsKKwkJCXBhdGggPSBtZWRpYTsKKwkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CisJCX07CisJ
CTA3Qzc1QzE3MjM5OUEzREIwMDg4RTY1QiAvKiBtZWRpYSAqLyA9IHsKKwkJCWlzYSA9IFBCWEdy
b3VwOworCQkJY2hpbGRyZW4gPSAoCisJCQkJMDcyNUVGQUQyMzlCMDI0NTAwQTUzOEE5IC8qIFJl
bW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5LmNwcCAqLywKKwkJCQkwNzI1RUZBQzIzOUFFMzg1
MDBBNTM4QTkgLyogUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHkuaCAqLywKKwkJCQkwNzI1
RUZBQjIzOUFFMzg0MDBBNTM4QTkgLyogUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHkubWVz
c2FnZXMuaW4gKi8sCisJCQkJMDdCQUYzNTcyM0EyQ0MxOTAwNDQyNTdFIC8qIFJlbW90ZU1lZGlh
UGxheWVyUHJveHkuY3BwICovLAorCQkJCTA3QkFGMzU2MjNBMkNDMTcwMDQ0MjU3RSAvKiBSZW1v
dGVNZWRpYVBsYXllclByb3h5LmggKi8sCisJCQkpOworCQkJcGF0aCA9IG1lZGlhOworCQkJc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsKKwkJfTsKIAkJMDg2N0Q2OTFGRTg0MDI4RkMwMkFBQzA3IC8q
IFdlYktpdDIgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKApAQCAt
NjE5NSw2ICs2MjQ0LDcgQEAKIAkJMkQ3RTQzQkYyMzc1MkNEOTAwRUE1Q0EwIC8qIEdQVSAqLyA9
IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCisJCQkJMDc5MjMxMkYyMzlC
M0IwQzAwOTU5OEUyIC8qIG1lZGlhICovLAogCQkJCTJEN0U0M0MwMjM3NTJDRDkwMEVBNUNBMCAv
KiBHUFVQcm9jZXNzQ29ubmVjdGlvbi5jcHAgKi8sCiAJCQkJMkQ3RTQzQzMyMzc1MkNEOTAwRUE1
Q0EwIC8qIEdQVVByb2Nlc3NDb25uZWN0aW9uLmggKi8sCiAJCQkJMkQ3RTQzQzIyMzc1MkNEOTAw
RUE1Q0EwIC8qIEdQVVByb2Nlc3NDb25uZWN0aW9uLm1lc3NhZ2VzLmluICovLApAQCAtNjIwOSw2
ICs2MjU5LDcgQEAKIAkJCQkyRDlGQjIwRDIzNzUyMDlEMDA0OUY5MzYgLyogRW50cnlQb2ludCAq
LywKIAkJCQkyRDlGQjIwNDIzNzUyMDlEMDA0OUY5MzYgLyogaW9zICovLAogCQkJCTJEOUZCMjA2
MjM3NTIwOUQwMDQ5RjkzNiAvKiBtYWMgKi8sCisJCQkJMDdDNzVDMTcyMzk5QTNEQjAwODhFNjVC
IC8qIG1lZGlhICovLAogCQkJCTJEOUZCMjBDMjM3NTIwOUQwMDQ5RjkzNiAvKiBHUFVDb25uZWN0
aW9uVG9XZWJQcm9jZXNzLmNwcCAqLywKIAkJCQkyRDlGQjIwMDIzNzUyMDlEMDA0OUY5MzYgLyog
R1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oICovLAogCQkJCTJEOUZCMjA5MjM3NTIwOUQwMDQ5
RjkzNiAvKiBHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluICovLApAQCAtOTEy
Myw2ICs5MTc0LDEyIEBACiAJCQkJMUE4RUZBNkYxMjUyQjg0MTAwRjcwNjdGIC8qIFBsdWdpblBy
b3h5TWVzc2FnZXMuaCAqLywKIAkJCQkwRkYyNEEyQjE4NzlFNEJDMDAzQUJGMEMgLyogUmVtb3Rl
TGF5ZXJUcmVlRHJhd2luZ0FyZWFQcm94eU1lc3NhZ2VSZWNlaXZlci5jcHAgKi8sCiAJCQkJMEZG
MjRBMkMxODc5RTRCQzAwM0FCRjBDIC8qIFJlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhUHJveHlN
ZXNzYWdlcy5oICovLAorCQkJCTA3OTIzMTQzMjM5Q0JDQjYwMDk1OThFMiAvKiBSZW1vdGVNZWRp
YVBsYXllck1hbmFnZXJNZXNzYWdlUmVjZWl2ZXIuY3BwICovLAorCQkJCTA3OTIzMTQ3MjM5Q0JD
QjcwMDk1OThFMiAvKiBSZW1vdGVNZWRpYVBsYXllck1hbmFnZXJNZXNzYWdlcy5oICovLAorCQkJ
CTA3OTIzMTQ0MjM5Q0JDQjYwMDk1OThFMiAvKiBSZW1vdGVNZWRpYVBsYXllck1hbmFnZXJNZXNz
YWdlc1JlcGxpZXMuaCAqLywKKwkJCQkwNzkyMzE0NTIzOUNCQ0I3MDA5NTk4RTIgLyogUmVtb3Rl
TWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwICovLAorCQkJCTA3OTIz
MTQ2MjM5Q0JDQjcwMDk1OThFMiAvKiBSZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eU1lc3Nh
Z2VzLmggKi8sCisJCQkJMDc5MjMxNDIyMzlDQkNCNTAwOTU5OEUyIC8qIFJlbW90ZU1lZGlhUGxh
eWVyTWFuYWdlclByb3h5TWVzc2FnZXNSZXBsaWVzLmggKi8sCiAJCQkJMUFDMTMzODMxODU5MEM0
NjAwRjNFQzA1IC8qIFJlbW90ZU9iamVjdFJlZ2lzdHJ5TWVzc2FnZVJlY2VpdmVyLmNwcCAqLywK
IAkJCQkxQUMxMzM4NDE4NTkwQzQ2MDBGM0VDMDUgLyogUmVtb3RlT2JqZWN0UmVnaXN0cnlNZXNz
YWdlcy5oICovLAogCQkJCTBGNTk0N0E1MTg3QjUxNzYwMDQzNzg1NyAvKiBSZW1vdGVTY3JvbGxp
bmdDb29yZGluYXRvck1lc3NhZ2VSZWNlaXZlci5jcHAgKi8sCkBAIC05ODQwLDYgKzk4OTcsNyBA
QAogCQkJCUJDQzU2Rjc5MTE1OTk1N0QwMDFDQ0FGOSAvKiBNYWNoUG9ydC5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJMUEyNEI1RjMxMUY1MzFFODAwQzM4MjY5IC8qIE1hY2hVdGlsaXRpZXMuaCBpbiBI
ZWFkZXJzICovLAogCQkJCUNFMUEwQkQ1MUE0OEU2QzYwMDU0RUY3NCAvKiBNYW5hZ2VkQ29uZmln
dXJhdGlvblNQSS5oIGluIEhlYWRlcnMgKi8sCisJCQkJMDc5MjMxNEYyMzlENjIzRTAwOTU5OEUy
IC8qIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZUlkZW50aWZpZXIuaCBpbiBIZWFkZXJzICovLAog
CQkJCTUxOTMzREVGMTk2NUVCMzEwMDhBQzNFQSAvKiBNZW51VXRpbGl0aWVzLmggaW4gSGVhZGVy
cyAqLywKIAkJCQkxQUM0QzgyOTE2Qjg3NkE5MDA2OURDQ0QgLyogTWVzc2FnZUZsYWdzLmggaW4g
SGVhZGVycyAqLywKIAkJCQkxQTNFRUQxMjE2MUE1M0Q2MDBBRUI0RjUgLyogTWVzc2FnZVJlY2Vp
dmVyLmggaW4gSGVhZGVycyAqLywKQEAgLTEwMDAwLDYgKzEwMDU4LDEwIEBACiAJCQkJMEZGMjY0
QTAxQTFGRjlDQzAwMUZFNzU5IC8qIFJlbW90ZUxheWVyVHJlZVNjcm9sbGluZ1BlcmZvcm1hbmNl
RGF0YS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUFGMUFDNkMxNjUxNzU5RTAwQzE3RDdGIC8qIFJl
bW90ZUxheWVyVHJlZVRyYW5zYWN0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQkyREMxOEZCMzIx
OEE2RTlFMDAyNUE4OEQgLyogUmVtb3RlTGF5ZXJUcmVlVmlld3MuaCBpbiBIZWFkZXJzICovLAor
CQkJCTA3OTIzMTREMjM5Q0JDQjgwMDk1OThFMiAvKiBSZW1vdGVNZWRpYVBsYXllck1hbmFnZXJN
ZXNzYWdlcy5oIGluIEhlYWRlcnMgKi8sCisJCQkJMDc5MjMxNEEyMzlDQkNCODAwOTU5OEUyIC8q
IFJlbW90ZU1lZGlhUGxheWVyTWFuYWdlck1lc3NhZ2VzUmVwbGllcy5oIGluIEhlYWRlcnMgKi8s
CisJCQkJMDc5MjMxNEMyMzlDQkNCODAwOTU5OEUyIC8qIFJlbW90ZU1lZGlhUGxheWVyTWFuYWdl
clByb3h5TWVzc2FnZXMuaCBpbiBIZWFkZXJzICovLAorCQkJCTA3OTIzMTQ4MjM5Q0JDQjgwMDk1
OThFMiAvKiBSZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eU1lc3NhZ2VzUmVwbGllcy5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJRTFCNzg0NzExNjNGMjQ2OTAwMDdCNjkyIC8qIFJlbW90ZU5ldHdv
cmtpbmdDb250ZXh0LmggaW4gSGVhZGVycyAqLywKIAkJCQkxQTU3MDRGQzFCRTE3NTExMDA4NzRB
RjEgLyogUmVtb3RlT2JqZWN0SW52b2NhdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUFDMTMz
ODAxODU5MEFFNDAwRjNFQzA1IC8qIFJlbW90ZU9iamVjdFJlZ2lzdHJ5LmggaW4gSGVhZGVycyAq
LywKQEAgLTExNjU4LDYgKzExNzIwLDggQEAKIAkJCQkyRDcyQTFGQTIxMkJGNDZFMDA1MTdBMjAg
LyogUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWEubW0gaW4gU291cmNlcyAqLywKIAkJCQkwRkYy
NEEyRDE4NzlFNEJDMDAzQUJGMEMgLyogUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWFQcm94eU1l
c3NhZ2VSZWNlaXZlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkyREMxOEZCNDIxOEE2RTlFMDAy
NUE4OEQgLyogUmVtb3RlTGF5ZXJUcmVlVmlld3MubW0gaW4gU291cmNlcyAqLywKKwkJCQkwNzky
MzE0OTIzOUNCQ0I4MDA5NTk4RTIgLyogUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyTWVzc2FnZVJl
Y2VpdmVyLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTA3OTIzMTRCMjM5Q0JDQjgwMDk1OThFMiAv
KiBSZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eU1lc3NhZ2VSZWNlaXZlci5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQkxQUMxMzM4NTE4NTkwQzQ2MDBGM0VDMDUgLyogUmVtb3RlT2JqZWN0UmVn
aXN0cnlNZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEY1OTQ3QTcxODdC
NTE3NjAwNDM3ODU3IC8qIFJlbW90ZVNjcm9sbGluZ0Nvb3JkaW5hdG9yTWVzc2FnZVJlY2VpdmVy
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE1NUJBODI2MUJBMjVDRkQwMDdDRDMzRCAvKiBSZW1v
dGVXZWJJbnNwZWN0b3JQcm94eU1lc3NhZ2VSZWNlaXZlci5jcHAgaW4gU291cmNlcyAqLywKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvTWVkaWFQbGF5ZXJQ
cml2YXRlUmVtb3RlLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvTWVk
aWFQbGF5ZXJQcml2YXRlUmVtb3RlLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mZWRlY2E1ZGViNjY0NmFkNTkx
OWY1NDczZDk3YmJiNDRlNDA5NThlCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL0dQVS9tZWRpYS9NZWRpYVBsYXllclByaXZhdGVSZW1vdGUuY3BwCkBAIC0wLDAg
KzEsNzgyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
KyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisK
KyNpbmNsdWRlICJjb25maWcuaCIKKworI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykKKyNpbmNsdWRl
ICJNZWRpYVBsYXllclByaXZhdGVSZW1vdGUuaCIKKworI2luY2x1ZGUgIkxvZ2dpbmcuaCIKKyNp
bmNsdWRlICJSZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eU1lc3NhZ2VzLmgiCisjaW5jbHVk
ZSA8V2ViQ29yZS9NZWRpYVBsYXllci5oPgorI2luY2x1ZGUgPFdlYkNvcmUvTm90SW1wbGVtZW50
ZWQuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1BsYXRmb3JtTGF5ZXIuaD4KKyNpbmNsdWRlIDxXZWJD
b3JlL1BsYXRmb3JtVGltZVJhbmdlcy5oPgorI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CisjaW5j
bHVkZSA8d3RmL01haW5UaHJlYWQuaD4KKyNpbmNsdWRlIDx3dGYvU3RyaW5nUHJpbnRTdHJlYW0u
aD4KKyNpbmNsdWRlIDx3dGYvVVJMLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgor
CituYW1lc3BhY2UgV2ViS2l0IHsKK3VzaW5nIG5hbWVzcGFjZSBQQUw7Cit1c2luZyBuYW1lc3Bh
Y2UgV2ViQ29yZTsKKworTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpNZWRpYVBsYXllclByaXZh
dGVSZW1vdGUoTWVkaWFQbGF5ZXIqIHBsYXllciwgTWVkaWFQbGF5ZXJFbnVtczo6TWVkaWFFbmdp
bmVJZGVudGlmaWVyIGVuZ2luZUlkZW50aWZpZXIsIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZUlk
ZW50aWZpZXIgcGxheWVySWRlbnRpZmllciwgUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyJiBtYW5h
Z2VyKQorICAgIDogbV9wbGF5ZXIocGxheWVyKQorICAgICwgbV9tYW5hZ2VyKG1hbmFnZXIpCisg
ICAgLCBtX3JlbW90ZUVuZ2luZUlkZW50aWZpZXIoZW5naW5lSWRlbnRpZmllcikKKyAgICAsIG1f
aWQocGxheWVySWRlbnRpZmllcikKKyNpZiAhUkVMRUFTRV9MT0dfRElTQUJMRUQKKyAgICAsIG1f
bG9nZ2VyKCZwbGF5ZXItPm1lZGlhUGxheWVyTG9nZ2VyKCkpCisgICAgLCBtX2xvZ0lkZW50aWZp
ZXIocGxheWVyLT5tZWRpYVBsYXllckxvZ0lkZW50aWZpZXIoKSkKKyNlbmRpZgoreworICAgIElO
Rk9fTE9HKExPR0lERU5USUZJRVIpOworfQorCitNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6On5N
ZWRpYVBsYXllclByaXZhdGVSZW1vdGUoKQoreworICAgIElORk9fTE9HKExPR0lERU5USUZJRVIp
OworICAgIG1fbWFuYWdlci5kZWxldGVSZW1vdGVNZWRpYVBsYXllcihtX2lkKTsKK30KKwordm9p
ZCBNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6bG9h
ZChjb25zdCBTdHJpbmcmKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKKyNpZiBFTkFC
TEUoTUVESUFfU09VUkNFKQordm9pZCBNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OmxvYWQoY29u
c3QgU3RyaW5nJiwgTWVkaWFTb3VyY2VQcml2YXRlQ2xpZW50KikKK3sKKyAgICBub3RJbXBsZW1l
bnRlZCgpOworfQorI2VuZGlmCisKKyNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQordm9pZCBNZWRp
YVBsYXllclByaXZhdGVSZW1vdGU6OmxvYWQoTWVkaWFTdHJlYW1Qcml2YXRlJikKK3sKKyAgICBu
b3RJbXBsZW1lbnRlZCgpOworfQorI2VuZGlmCisKK3ZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlUmVt
b3RlOjpjYW5jZWxMb2FkKCkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCisKK3ZvaWQg
TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpwcmVwYXJlVG9QbGF5KCkKK3sKKyAgICBub3RJbXBs
ZW1lbnRlZCgpOworfQorCitQbGF0Zm9ybUxheWVyKiBNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6
OnBsYXRmb3JtTGF5ZXIoKSBjb25zdAoreworICAgIHJldHVybiBudWxscHRyOworfQorCisjaWYg
UExBVEZPUk0oSU9TX0ZBTUlMWSkgfHwgKFBMQVRGT1JNKE1BQykgJiYgRU5BQkxFKFZJREVPX1BS
RVNFTlRBVElPTl9NT0RFKSkKK3ZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpzZXRWaWRl
b0Z1bGxzY3JlZW5MYXllcihQbGF0Zm9ybUxheWVyKiwgV1RGOjpGdW5jdGlvbjx2b2lkKCk+JiYp
Cit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwordm9pZCBNZWRpYVBsYXllclByaXZhdGVS
ZW1vdGU6OnVwZGF0ZVZpZGVvRnVsbHNjcmVlbklubGluZUltYWdlKCkKK3sKKyAgICBub3RJbXBs
ZW1lbnRlZCgpOworfQorCit2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6c2V0VmlkZW9G
dWxsc2NyZWVuRnJhbWUoRmxvYXRSZWN0KQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisK
K3ZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpzZXRWaWRlb0Z1bGxzY3JlZW5HcmF2aXR5
KE1lZGlhUGxheWVyOjpWaWRlb0dyYXZpdHkpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30K
Kwordm9pZCBNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OnNldFZpZGVvRnVsbHNjcmVlbk1vZGUo
TWVkaWFQbGF5ZXI6OlZpZGVvRnVsbHNjcmVlbk1vZGUpCit7CisgICAgbm90SW1wbGVtZW50ZWQo
KTsKK30KKwordm9pZCBNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OnZpZGVvRnVsbHNjcmVlblN0
YW5kYnlDaGFuZ2VkKCkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorI2VuZGlmCisKKyNp
ZiBQTEFURk9STShJT1NfRkFNSUxZKQorTlNBcnJheSogTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3Rl
Ojp0aW1lZE1ldGFkYXRhKCkgY29uc3QKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJl
dHVybiBudWxscHRyOworfQorCitTdHJpbmcgTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjphY2Nl
c3NMb2coKSBjb25zdAoreworICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIGVtcHR5
U3RyaW5nKCk7Cit9CisKK1N0cmluZyBNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OmVycm9yTG9n
KCkgY29uc3QKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiBlbXB0eVN0cmlu
ZygpOworfQorI2VuZGlmCisKK2xvbmcgTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpwbGF0Zm9y
bUVycm9yQ29kZSgpIGNvbnN0Cit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4g
MDsKK30KKwordm9pZCBNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OnBsYXkoKQoreworICAgIG5v
dEltcGxlbWVudGVkKCk7Cit9CisKK3ZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpwYXVz
ZSgpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwordm9pZCBNZWRpYVBsYXllclByaXZh
dGVSZW1vdGU6OnNldEJ1ZmZlcmluZ1BvbGljeShNZWRpYVBsYXllcjo6QnVmZmVyaW5nUG9saWN5
KQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKK2Jvb2wgTWVkaWFQbGF5ZXJQcml2YXRl
UmVtb3RlOjpzdXBwb3J0c1BpY3R1cmVJblBpY3R1cmUoKSBjb25zdAoreworICAgIG5vdEltcGxl
bWVudGVkKCk7CisgICAgcmV0dXJuIGZhbHNlOworfQorCitib29sIE1lZGlhUGxheWVyUHJpdmF0
ZVJlbW90ZTo6c3VwcG9ydHNGdWxsc2NyZWVuKCkgY29uc3QKK3sKKyAgICBub3RJbXBsZW1lbnRl
ZCgpOworICAgIHJldHVybiBmYWxzZTsKK30KKworYm9vbCBNZWRpYVBsYXllclByaXZhdGVSZW1v
dGU6OnN1cHBvcnRzU2Nhbm5pbmcoKSBjb25zdAoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cisg
ICAgcmV0dXJuIGZhbHNlOworfQorCitib29sIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6cmVx
dWlyZXNJbW1lZGlhdGVDb21wb3NpdGluZygpIGNvbnN0Cit7CisgICAgbm90SW1wbGVtZW50ZWQo
KTsKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK2Jvb2wgTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3Rl
OjpjYW5TYXZlTWVkaWFEYXRhKCkgY29uc3QKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAg
IHJldHVybiBmYWxzZTsKK30KKworRmxvYXRTaXplIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6
bmF0dXJhbFNpemUoKSBjb25zdAoreworICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJu
IHsgfTsKK30KKworYm9vbCBNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6Omhhc1ZpZGVvKCkgY29u
c3QKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiBmYWxzZTsKK30KKworYm9v
bCBNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6Omhhc0F1ZGlvKCkgY29uc3QKK3sKKyAgICBub3RJ
bXBsZW1lbnRlZCgpOworICAgIHJldHVybiBmYWxzZTsKK30KKwordm9pZCBNZWRpYVBsYXllclBy
aXZhdGVSZW1vdGU6OnNldFZpc2libGUoYm9vbCkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOwor
fQorCitNZWRpYVRpbWUgTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpjdXJyZW50TWVkaWFUaW1l
KCkgY29uc3QKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiBNZWRpYVRpbWU6
Onplcm9UaW1lKCk7Cit9CisKK01lZGlhVGltZSBNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6Omdl
dFN0YXJ0RGF0ZSgpIGNvbnN0Cit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4g
TWVkaWFUaW1lOjp6ZXJvVGltZSgpOworfQorCit2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90
ZTo6c2Vlayhjb25zdCBNZWRpYVRpbWUmKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisK
K3ZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpzZWVrV2l0aFRvbGVyYW5jZShjb25zdCBN
ZWRpYVRpbWUmLCBjb25zdCBNZWRpYVRpbWUmLCBjb25zdCBNZWRpYVRpbWUmKQoreworICAgIG5v
dEltcGxlbWVudGVkKCk7Cit9CisKK2Jvb2wgTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpzZWVr
aW5nKCkgY29uc3QKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiBmYWxzZTsK
K30KKworTWVkaWFUaW1lIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6c3RhcnRUaW1lKCkgY29u
c3QKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiBNZWRpYVRpbWU6Onplcm9U
aW1lKCk7Cit9CisKK3ZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpzZXRSYXRlRG91Ymxl
KGRvdWJsZSkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCit2b2lkIE1lZGlhUGxheWVy
UHJpdmF0ZVJlbW90ZTo6c2V0UHJlc2VydmVzUGl0Y2goYm9vbCkKK3sKKyAgICBub3RJbXBsZW1l
bnRlZCgpOworfQorCitib29sIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6cGF1c2VkKCkgY29u
c3QKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiBmYWxzZTsKK30KKwordm9p
ZCBNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OnNldFZvbHVtZURvdWJsZShkb3VibGUpCit7Cisg
ICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwordm9pZCBNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6
OnNldE11dGVkKGJvb2wpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKworYm9vbCBNZWRp
YVBsYXllclByaXZhdGVSZW1vdGU6Omhhc0Nsb3NlZENhcHRpb25zKCkgY29uc3QKK3sKKyAgICBu
b3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiBmYWxzZTsKK30KKwordm9pZCBNZWRpYVBsYXll
clByaXZhdGVSZW1vdGU6OnNldENsb3NlZENhcHRpb25zVmlzaWJsZShib29sKQoreworICAgIG5v
dEltcGxlbWVudGVkKCk7Cit9CisKK2RvdWJsZSBNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6Om1h
eEZhc3RGb3J3YXJkUmF0ZSgpIGNvbnN0Cit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICBy
ZXR1cm4gMDsKK30KKworZG91YmxlIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6bWluRmFzdFJl
dmVyc2VSYXRlKCkgY29uc3QKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiAw
OworfQorCitzdGQ6OnVuaXF1ZV9wdHI8UGxhdGZvcm1UaW1lUmFuZ2VzPiBNZWRpYVBsYXllclBy
aXZhdGVSZW1vdGU6OnNlZWthYmxlKCkgY29uc3QKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOwor
ICAgIHJldHVybiBtYWtlVW5pcXVlPFBsYXRmb3JtVGltZVJhbmdlcz4oKTsKK30KKworc3RkOjp1
bmlxdWVfcHRyPFBsYXRmb3JtVGltZVJhbmdlcz4gTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpi
dWZmZXJlZCgpIGNvbnN0Cit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gbWFr
ZVVuaXF1ZTxQbGF0Zm9ybVRpbWVSYW5nZXM+KCk7Cit9CisKK01lZGlhVGltZSBNZWRpYVBsYXll
clByaXZhdGVSZW1vdGU6Om1heE1lZGlhVGltZVNlZWthYmxlKCkgY29uc3QKK3sKKyAgICBub3RJ
bXBsZW1lbnRlZCgpOworICAgIHJldHVybiBNZWRpYVRpbWU6Onplcm9UaW1lKCk7Cit9CisKK01l
ZGlhVGltZSBNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6Om1pbk1lZGlhVGltZVNlZWthYmxlKCkg
Y29uc3QKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiBNZWRpYVRpbWU6Onpl
cm9UaW1lKCk7Cit9CisKK2RvdWJsZSBNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OnNlZWthYmxl
VGltZVJhbmdlc0xhc3RNb2RpZmllZFRpbWUoKSBjb25zdAoreworICAgIG5vdEltcGxlbWVudGVk
KCk7CisgICAgcmV0dXJuIDA7Cit9CisKK2RvdWJsZSBNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6
OmxpdmVVcGRhdGVJbnRlcnZhbCgpIGNvbnN0Cit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAg
ICByZXR1cm4gMDsKK30KKwordW5zaWduZWQgbG9uZyBsb25nIE1lZGlhUGxheWVyUHJpdmF0ZVJl
bW90ZTo6dG90YWxCeXRlcygpIGNvbnN0Cit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICBy
ZXR1cm4gMDsKK30KKworYm9vbCBNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OmRpZExvYWRpbmdQ
cm9ncmVzcygpIGNvbnN0Cit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gZmFs
c2U7Cit9CisKK3ZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpzZXRTaXplKGNvbnN0IElu
dFNpemUmKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKK3ZvaWQgTWVkaWFQbGF5ZXJQ
cml2YXRlUmVtb3RlOjpwYWludChHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJlY3QmKQor
eworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKK3ZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlUmVt
b3RlOjpwYWludEN1cnJlbnRGcmFtZUluQ29udGV4dChHcmFwaGljc0NvbnRleHQmLCBjb25zdCBG
bG9hdFJlY3QmKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKK2Jvb2wgTWVkaWFQbGF5
ZXJQcml2YXRlUmVtb3RlOjpjb3B5VmlkZW9UZXh0dXJlVG9QbGF0Zm9ybVRleHR1cmUoR3JhcGhp
Y3NDb250ZXh0M0QqLCBQbGF0Zm9ybTNET2JqZWN0LCBHQzNEZW51bSwgR0MzRGludCwgR0MzRGVu
dW0sIEdDM0RlbnVtLCBHQzNEZW51bSwgYm9vbCwgYm9vbCkKK3sKKyAgICBub3RJbXBsZW1lbnRl
ZCgpOworICAgIHJldHVybiBmYWxzZTsKK30KKworTmF0aXZlSW1hZ2VQdHIgTWVkaWFQbGF5ZXJQ
cml2YXRlUmVtb3RlOjpuYXRpdmVJbWFnZUZvckN1cnJlbnRUaW1lKCkKK3sKKyAgICBub3RJbXBs
ZW1lbnRlZCgpOworICAgIHJldHVybiBudWxscHRyOworfQorCit2b2lkIE1lZGlhUGxheWVyUHJp
dmF0ZVJlbW90ZTo6c2V0UHJlbG9hZChNZWRpYVBsYXllcjo6UHJlbG9hZCkKK3sKKyAgICBub3RJ
bXBsZW1lbnRlZCgpOworfQorCitib29sIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6aGFzQXZh
aWxhYmxlVmlkZW9GcmFtZSgpIGNvbnN0Cit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICBy
ZXR1cm4gZmFsc2U7Cit9CisKK2Jvb2wgTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpjYW5Mb2Fk
UG9zdGVyKCkgY29uc3QKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiBmYWxz
ZTsKK30KKwordm9pZCBNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OnNldFBvc3Rlcihjb25zdCBT
dHJpbmcmKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKKyNpZiBVU0UoTkFUSVZFX0ZV
TExTQ1JFRU5fVklERU8pCit2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6ZW50ZXJGdWxs
c2NyZWVuKCkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCit2b2lkIE1lZGlhUGxheWVy
UHJpdmF0ZVJlbW90ZTo6ZXhpdEZ1bGxzY3JlZW4oKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7
Cit9CisjZW5kaWYKKworI2lmIEVOQUJMRShXSVJFTEVTU19QTEFZQkFDS19UQVJHRVQpCitTdHJp
bmcgTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjp3aXJlbGVzc1BsYXliYWNrVGFyZ2V0TmFtZSgp
IGNvbnN0Cit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gZW1wdHlTdHJpbmco
KTsKK30KKworTWVkaWFQbGF5ZXI6OldpcmVsZXNzUGxheWJhY2tUYXJnZXRUeXBlIE1lZGlhUGxh
eWVyUHJpdmF0ZVJlbW90ZTo6d2lyZWxlc3NQbGF5YmFja1RhcmdldFR5cGUoKSBjb25zdAorewor
ICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIE1lZGlhUGxheWVyOjpUYXJnZXRUeXBl
Tm9uZTsKK30KKworYm9vbCBNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OndpcmVsZXNzVmlkZW9Q
bGF5YmFja0Rpc2FibGVkKCkgY29uc3QKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJl
dHVybiB0cnVlOworfQorCit2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6c2V0V2lyZWxl
c3NWaWRlb1BsYXliYWNrRGlzYWJsZWQoYm9vbCkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOwor
fQorCitib29sIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6Y2FuUGxheVRvV2lyZWxlc3NQbGF5
YmFja1RhcmdldCgpIGNvbnN0Cit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4g
ZmFsc2U7Cit9CisKK2Jvb2wgTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjppc0N1cnJlbnRQbGF5
YmFja1RhcmdldFdpcmVsZXNzKCkgY29uc3QKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAg
IHJldHVybiBmYWxzZTsKK30KKwordm9pZCBNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OnNldFdp
cmVsZXNzUGxheWJhY2tUYXJnZXQoUmVmPE1lZGlhUGxheWJhY2tUYXJnZXQ+JiYpCit7CisgICAg
bm90SW1wbGVtZW50ZWQoKTsKK30KKwordm9pZCBNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OnNl
dFNob3VsZFBsYXlUb1BsYXliYWNrVGFyZ2V0KGJvb2wpCit7CisgICAgbm90SW1wbGVtZW50ZWQo
KTsKK30KKyNlbmRpZgorCisjaWYgVVNFKE5BVElWRV9GVUxMU0NSRUVOX1ZJREVPKQorYm9vbCBN
ZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OmNhbkVudGVyRnVsbHNjcmVlbigpIGNvbnN0Cit7Cisg
ICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gZmFsc2U7Cit9CisjZW5kaWYKKworYm9v
bCBNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OnN1cHBvcnRzQWNjZWxlcmF0ZWRSZW5kZXJpbmco
KSBjb25zdAoreworICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIGZhbHNlOworfQor
Cit2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6YWNjZWxlcmF0ZWRSZW5kZXJpbmdTdGF0
ZUNoYW5nZWQoKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKK2Jvb2wgTWVkaWFQbGF5
ZXJQcml2YXRlUmVtb3RlOjpzaG91bGRNYWludGFpbkFzcGVjdFJhdGlvKCkgY29uc3QKK3sKKyAg
ICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiB0cnVlOworfQorCit2b2lkIE1lZGlhUGxh
eWVyUHJpdmF0ZVJlbW90ZTo6c2V0U2hvdWxkTWFpbnRhaW5Bc3BlY3RSYXRpbyhib29sKQorewor
ICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKK2Jvb2wgTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3Rl
OjpoYXNTaW5nbGVTZWN1cml0eU9yaWdpbigpIGNvbnN0Cit7CisgICAgbm90SW1wbGVtZW50ZWQo
KTsKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK2Jvb2wgTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3Rl
OjpkaWRQYXNzQ09SU0FjY2Vzc0NoZWNrKCkgY29uc3QKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgp
OworICAgIHJldHVybiBmYWxzZTsKK30KKworT3B0aW9uYWw8Ym9vbD4gTWVkaWFQbGF5ZXJQcml2
YXRlUmVtb3RlOjp3b3VsZFRhaW50T3JpZ2luKGNvbnN0IFNlY3VyaXR5T3JpZ2luJikgY29uc3QK
K3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Cit9CisK
K01lZGlhUGxheWVyOjpNb3ZpZUxvYWRUeXBlIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6bW92
aWVMb2FkVHlwZSgpIGNvbnN0Cit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4g
TWVkaWFQbGF5ZXI6Ok1vdmllTG9hZFR5cGU6OlVua25vd247Cit9CisKK3ZvaWQgTWVkaWFQbGF5
ZXJQcml2YXRlUmVtb3RlOjpwcmVwYXJlRm9yUmVuZGVyaW5nKCkKK3sKKyAgICBub3RJbXBsZW1l
bnRlZCgpOworfQorCitNZWRpYVRpbWUgTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjptZWRpYVRp
bWVGb3JUaW1lVmFsdWUoY29uc3QgTWVkaWFUaW1lJiB0aW1lVmFsdWUpIGNvbnN0Cit7CisgICAg
bm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gdGltZVZhbHVlOworfQorCitkb3VibGUgTWVk
aWFQbGF5ZXJQcml2YXRlUmVtb3RlOjptYXhpbXVtRHVyYXRpb25Ub0NhY2hlTWVkaWFUaW1lKCkg
Y29uc3QKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiAwOworfQorCit1bnNp
Z25lZCBNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OmRlY29kZWRGcmFtZUNvdW50KCkgY29uc3QK
K3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiAwOworfQorCit1bnNpZ25lZCBN
ZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OmRyb3BwZWRGcmFtZUNvdW50KCkgY29uc3QKK3sKKyAg
ICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiAwOworfQorCit1bnNpZ25lZCBNZWRpYVBs
YXllclByaXZhdGVSZW1vdGU6OmF1ZGlvRGVjb2RlZEJ5dGVDb3VudCgpIGNvbnN0Cit7CisgICAg
bm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gMDsKK30KKwordW5zaWduZWQgTWVkaWFQbGF5
ZXJQcml2YXRlUmVtb3RlOjp2aWRlb0RlY29kZWRCeXRlQ291bnQoKSBjb25zdAoreworICAgIG5v
dEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIDA7Cit9CisKK3ZvaWQgTWVkaWFQbGF5ZXJQcml2
YXRlUmVtb3RlOjpzZXRQcml2YXRlQnJvd3NpbmdNb2RlKGJvb2wpCit7CisgICAgbm90SW1wbGVt
ZW50ZWQoKTsKK30KKworU3RyaW5nIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6ZW5naW5lRGVz
Y3JpcHRpb24oKSBjb25zdAoreworICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIGVt
cHR5U3RyaW5nKCk7Cit9CisKKyNpZiBFTkFCTEUoV0VCX0FVRElPKQorQXVkaW9Tb3VyY2VQcm92
aWRlciogTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjphdWRpb1NvdXJjZVByb3ZpZGVyKCkKK3sK
KyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiBudWxscHRyOworfQorI2VuZGlmCisK
KyNpZiBFTkFCTEUoTEVHQUNZX0VOQ1JZUFRFRF9NRURJQSkKK3N0ZDo6dW5pcXVlX3B0cjxMZWdh
Y3lDRE1TZXNzaW9uPiBNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OmNyZWF0ZVNlc3Npb24oY29u
c3QgU3RyaW5nJiwgTGVnYWN5Q0RNU2Vzc2lvbkNsaWVudCopCit7CisgICAgbm90SW1wbGVtZW50
ZWQoKTsKKyAgICByZXR1cm4gbnVsbHB0cjsKK30KKwordm9pZCBNZWRpYVBsYXllclByaXZhdGVS
ZW1vdGU6OnNldENETVNlc3Npb24oTGVnYWN5Q0RNU2Vzc2lvbiopCit7CisgICAgbm90SW1wbGVt
ZW50ZWQoKTsKK30KKwordm9pZCBNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OmtleUFkZGVkKCkK
K3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorI2VuZGlmCisKKyNpZiBFTkFCTEUoRU5DUllQ
VEVEX01FRElBKQordm9pZCBNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OmNkbUluc3RhbmNlQXR0
YWNoZWQoQ0RNSW5zdGFuY2UmKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKK3ZvaWQg
TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpjZG1JbnN0YW5jZURldGFjaGVkKENETUluc3RhbmNl
JikKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCit2b2lkIE1lZGlhUGxheWVyUHJpdmF0
ZVJlbW90ZTo6YXR0ZW1wdFRvRGVjcnlwdFdpdGhJbnN0YW5jZShDRE1JbnN0YW5jZSYpCit7Cisg
ICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKworYm9vbCBNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6
OndhaXRpbmdGb3JLZXkoKSBjb25zdAoreworICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0
dXJuIGZhbHNlOworfQorI2VuZGlmCisKKyNpZiBFTkFCTEUoVklERU9fVFJBQ0spCitib29sIE1l
ZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6cmVxdWlyZXNUZXh0VHJhY2tSZXByZXNlbnRhdGlvbigp
IGNvbnN0Cit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gZmFsc2U7Cit9CisK
K3ZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpzZXRUZXh0VHJhY2tSZXByZXNlbnRhdGlv
bihUZXh0VHJhY2tSZXByZXNlbnRhdGlvbiopCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30K
Kwordm9pZCBNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OnN5bmNUZXh0VHJhY2tCb3VuZHMoKQor
eworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKK3ZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlUmVt
b3RlOjp0cmFja3NDaGFuZ2VkKCkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorI2VuZGlm
CisKKyNpZiBVU0UoR1NUUkVBTUVSKQordm9pZCBNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OnNp
bXVsYXRlQXVkaW9JbnRlcnJ1cHRpb24oKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9Cisj
ZW5kaWYKKwordm9pZCBNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OmJlZ2luU2ltdWxhdGVkSERD
UEVycm9yKCkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCit2b2lkIE1lZGlhUGxheWVy
UHJpdmF0ZVJlbW90ZTo6ZW5kU2ltdWxhdGVkSERDUEVycm9yKCkKK3sKKyAgICBub3RJbXBsZW1l
bnRlZCgpOworfQorCitTdHJpbmcgTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpsYW5ndWFnZU9m
UHJpbWFyeUF1ZGlvVHJhY2soKSBjb25zdAoreworICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAg
cmV0dXJuIGVtcHR5U3RyaW5nKCk7Cit9CisKK3NpemVfdCBNZWRpYVBsYXllclByaXZhdGVSZW1v
dGU6OmV4dHJhTWVtb3J5Q29zdCgpIGNvbnN0Cit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAg
ICByZXR1cm4gMDsKK30KKwordW5zaWduZWQgbG9uZyBsb25nIE1lZGlhUGxheWVyUHJpdmF0ZVJl
bW90ZTo6ZmlsZVNpemUoKSBjb25zdAoreworICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0
dXJuIDA7Cit9CisKK2Jvb2wgTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjplbmRlZCgpIGNvbnN0
Cit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK09wdGlv
bmFsPFZpZGVvUGxheWJhY2tRdWFsaXR5TWV0cmljcz4gTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3Rl
Ojp2aWRlb1BsYXliYWNrUXVhbGl0eU1ldHJpY3MoKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7
CisgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKK30KKworI2lmIEVOQUJMRShBVkZfQ0FQVElPTlMp
Cit2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6bm90aWZ5VHJhY2tNb2RlQ2hhbmdlZCgp
Cit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKyNlbmRpZgorCit2b2lkIE1lZGlhUGxheWVy
UHJpdmF0ZVJlbW90ZTo6bm90aWZ5QWN0aXZlU291cmNlQnVmZmVyc0NoYW5nZWQoKQoreworICAg
IG5vdEltcGxlbWVudGVkKCk7Cit9CisKK3ZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpz
ZXRTaG91bGREaXNhYmxlU2xlZXAoYm9vbCkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQor
Cit2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6YXBwbGljYXRpb25XaWxsUmVzaWduQWN0
aXZlKCkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCit2b2lkIE1lZGlhUGxheWVyUHJp
dmF0ZVJlbW90ZTo6YXBwbGljYXRpb25EaWRCZWNvbWVBY3RpdmUoKQoreworICAgIG5vdEltcGxl
bWVudGVkKCk7Cit9CisKK2Jvb2wgTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpwZXJmb3JtVGFz
a0F0TWVkaWFUaW1lKFdURjo6RnVuY3Rpb248dm9pZCgpPiYmLCBNZWRpYVRpbWUpCit7CisgICAg
bm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK2Jvb2wgTWVkaWFQbGF5
ZXJQcml2YXRlUmVtb3RlOjpzaG91bGRJZ25vcmVJbnRyaW5zaWNTaXplKCkKK3sKKyAgICBub3RJ
bXBsZW1lbnRlZCgpOworICAgIHJldHVybiBmYWxzZTsKK30KKwordm9pZCBNZWRpYVBsYXllclBy
aXZhdGVSZW1vdGU6Om5ldHdvcmtTdGF0ZUNoYW5nZWQoV2ViQ29yZTo6TWVkaWFQbGF5ZXJFbnVt
czo6TmV0d29ya1N0YXRlIHN0YXRlKQoreworICAgIG1fbmV0d29ya1N0YXRlID0gc3RhdGU7Cisg
ICAgbV9wbGF5ZXItPm5ldHdvcmtTdGF0ZUNoYW5nZWQoKTsKK30KKwordm9pZCBNZWRpYVBsYXll
clByaXZhdGVSZW1vdGU6OnJlYWR5U3RhdGVDaGFuZ2VkKFdlYkNvcmU6Ok1lZGlhUGxheWVyRW51
bXM6OlJlYWR5U3RhdGUgc3RhdGUpCit7CisgICAgbV9yZWFkeVN0YXRlID0gc3RhdGU7CisgICAg
bV9wbGF5ZXItPm5ldHdvcmtTdGF0ZUNoYW5nZWQoKTsKK30KKwordm9pZCBNZWRpYVBsYXllclBy
aXZhdGVSZW1vdGU6OnZvbHVtZUNoYW5nZWQoZG91YmxlIHZvbHVtZSkKK3sKKyAgICBtX3ZvbHVt
ZSA9IHZvbHVtZTsKKyAgICBtX3BsYXllci0+dm9sdW1lQ2hhbmdlZCh2b2x1bWUpOworfQorCisK
K3ZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjptdXRlQ2hhbmdlZChib29sIG11dGUpCit7
CisgICAgbV9tdXRlID0gbXV0ZTsKKyAgICBtX3BsYXllci0+bXV0ZUNoYW5nZWQobXV0ZSk7Cit9
CisKK3ZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjp0aW1lQ2hhbmdlZChNZWRpYVRpbWUg
dGltZSkKK3sKKyAgICBtX3BsYXllci0+dGltZUNoYW5nZWQoKTsKK30KKworCit2b2lkIE1lZGlh
UGxheWVyUHJpdmF0ZVJlbW90ZTo6ZHVyYXRpb25DaGFuZ2VkKE1lZGlhVGltZSBkdXJhdGlvbikK
K3sKKyAgICBtX2R1cmF0aW9uID0gZHVyYXRpb247CisgICAgbV9wbGF5ZXItPmR1cmF0aW9uQ2hh
bmdlZCgpOworfQorCit2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6cmF0ZUNoYW5nZWQo
ZG91YmxlIHJhdGUpCit7CisgICAgbV9yYXRlID0gcmF0ZTsKKyAgICBtX3BsYXllci0+cmF0ZUNo
YW5nZWQoKTsKK30KKworI2lmICFSRUxFQVNFX0xPR19ESVNBQkxFRAorV1RGTG9nQ2hhbm5lbCYg
TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpsb2dDaGFubmVsKCkgY29uc3QKK3sKKyAgICByZXR1
cm4gV2ViS2l0MkxvZ1dlYlJUQzsKK30KKyNlbmRpZgorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRp
YS9NZWRpYVBsYXllclByaXZhdGVSZW1vdGUuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9H
UFUvbWVkaWEvTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDRlYjg4NWEw
Y2QwZTFkNjdmNDk5M2Y4NjY5ZDBlYmJhNGJhYTMxMQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlLmgK
QEAgLTAsMCArMSwzMTQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
CisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4g
CisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoR1BVX1BST0NFU1MpCisKKyNpbmNs
dWRlICJSZW1vdGVNZWRpYVBsYXllck1hbmFnZXIuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL01lZGlh
UGxheWVyUHJpdmF0ZS5oPgorI2luY2x1ZGUgPHd0Zi9Mb2dnZXJIZWxwZXIuaD4KKyNpbmNsdWRl
IDx3dGYvTWVkaWFUaW1lLmg+CisjaW5jbHVkZSA8d3RmL1dlYWtQdHIuaD4KKworbmFtZXNwYWNl
IFdlYktpdCB7CisKK2NsYXNzIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZSBmaW5hbAorICAgIDog
cHVibGljIENhbk1ha2VXZWFrUHRyPE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZT4KKyAgICAsIHB1
YmxpYyBNZWRpYVBsYXllclByaXZhdGVJbnRlcmZhY2UKKyNpZiAhUkVMRUFTRV9MT0dfRElTQUJM
RUQKKyAgICAsIHByaXZhdGUgTG9nZ2VySGVscGVyCisjZW5kaWYKK3sKK3B1YmxpYzoKKyAgICBz
dGF0aWMgc3RkOjp1bmlxdWVfcHRyPE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZT4gY3JlYXRlKE1l
ZGlhUGxheWVyKiBwbGF5ZXIsIE1lZGlhUGxheWVyRW51bXM6Ok1lZGlhRW5naW5lSWRlbnRpZmll
ciByZW1vdGVFbmdpbmVJZGVudGlmaWVyLCBNZWRpYVBsYXllclByaXZhdGVSZW1vdGVJZGVudGlm
aWVyIGlkZW50aWZpZXIsIFJlbW90ZU1lZGlhUGxheWVyTWFuYWdlciYgbWFuYWdlcikKKyAgICB7
CisgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZT4ocGxh
eWVyLCByZW1vdGVFbmdpbmVJZGVudGlmaWVyLCBpZGVudGlmaWVyLCBtYW5hZ2VyKTsKKyAgICB9
CisKKyAgICBleHBsaWNpdCBNZWRpYVBsYXllclByaXZhdGVSZW1vdGUoTWVkaWFQbGF5ZXIqLCBN
ZWRpYVBsYXllckVudW1zOjpNZWRpYUVuZ2luZUlkZW50aWZpZXIsIE1lZGlhUGxheWVyUHJpdmF0
ZVJlbW90ZUlkZW50aWZpZXIsIFJlbW90ZU1lZGlhUGxheWVyTWFuYWdlciYpOworICAgIHZpcnR1
YWwgfk1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZSgpOworCisgICAgdm9pZCBpbnZhbGlkYXRlKCkg
eyBtX2ludmFsaWQgPSB0cnVlOyB9CisgICAgTWVkaWFQbGF5ZXJFbnVtczo6TWVkaWFFbmdpbmVJ
ZGVudGlmaWVyIHJlbW90ZUVuZ2luZUlkZW50aWZpZXIoKSBjb25zdCB7IHJldHVybiBtX3JlbW90
ZUVuZ2luZUlkZW50aWZpZXI7IH0KKyAgICBNZWRpYVBsYXllclByaXZhdGVSZW1vdGVJZGVudGlm
aWVyIHBsYXllckl0ZW50aWZpZXIoKSBjb25zdCB7IHJldHVybiBtX2lkOyB9CisKKyAgICB2b2lk
IG5ldHdvcmtTdGF0ZUNoYW5nZWQoV2ViQ29yZTo6TWVkaWFQbGF5ZXJFbnVtczo6TmV0d29ya1N0
YXRlKTsKKyAgICB2b2lkIHJlYWR5U3RhdGVDaGFuZ2VkKFdlYkNvcmU6Ok1lZGlhUGxheWVyRW51
bXM6OlJlYWR5U3RhdGUpOworICAgIHZvaWQgdm9sdW1lQ2hhbmdlZChkb3VibGUpOworICAgIHZv
aWQgbXV0ZUNoYW5nZWQoYm9vbCk7CisgICAgdm9pZCB0aW1lQ2hhbmdlZChNZWRpYVRpbWUpOwor
ICAgIHZvaWQgZHVyYXRpb25DaGFuZ2VkKE1lZGlhVGltZSk7CisgICAgdm9pZCByYXRlQ2hhbmdl
ZChkb3VibGUpOworCisjaWYgIVJFTEVBU0VfTE9HX0RJU0FCTEVECisgICAgY29uc3QgTG9nZ2Vy
JiBsb2dnZXIoKSBjb25zdCBmaW5hbCB7IHJldHVybiAqbV9sb2dnZXI7IH0KKyAgICBjb25zdCBj
aGFyKiBsb2dDbGFzc05hbWUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiAiTWVkaWFQbGF5ZXJQ
cml2YXRlUmVtb3RlIjsgfQorICAgIGNvbnN0IHZvaWQqIGxvZ0lkZW50aWZpZXIoKSBjb25zdCBm
aW5hbCB7IHJldHVybiByZWludGVycHJldF9jYXN0PGNvbnN0IHZvaWQqPihtX2xvZ0lkZW50aWZp
ZXIpOyB9CisgICAgV1RGTG9nQ2hhbm5lbCYgbG9nQ2hhbm5lbCgpIGNvbnN0IGZpbmFsOworI2Vu
ZGlmCisKK3ByaXZhdGU6CisKKyAgICB2b2lkIGxvYWQoY29uc3QgU3RyaW5nJikgZmluYWw7Cisj
aWYgRU5BQkxFKE1FRElBX1NPVVJDRSkKKyAgICB2b2lkIGxvYWQoY29uc3QgU3RyaW5nJiwgTWVk
aWFTb3VyY2VQcml2YXRlQ2xpZW50KikgZmluYWw7CisjZW5kaWYKKyNpZiBFTkFCTEUoTUVESUFf
U1RSRUFNKQorICAgIHZvaWQgbG9hZChNZWRpYVN0cmVhbVByaXZhdGUmKSBmaW5hbDsKKyNlbmRp
ZgorICAgIHZvaWQgY2FuY2VsTG9hZCgpIGZpbmFsOworICAgIAorICAgIHZvaWQgcHJlcGFyZVRv
UGxheSgpIGZpbmFsOworICAgIFBsYXRmb3JtTGF5ZXIqIHBsYXRmb3JtTGF5ZXIoKSBjb25zdCBm
aW5hbDsKKworI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpIHx8IChQTEFURk9STShNQUMpICYmIEVO
QUJMRShWSURFT19QUkVTRU5UQVRJT05fTU9ERSkpCisgICAgdm9pZCBzZXRWaWRlb0Z1bGxzY3Jl
ZW5MYXllcihQbGF0Zm9ybUxheWVyKiwgV1RGOjpGdW5jdGlvbjx2b2lkKCk+JiYgY29tcGxldGlv
bkhhbmRsZXIpIGZpbmFsOworICAgIHZvaWQgdXBkYXRlVmlkZW9GdWxsc2NyZWVuSW5saW5lSW1h
Z2UoKSBmaW5hbDsKKyAgICB2b2lkIHNldFZpZGVvRnVsbHNjcmVlbkZyYW1lKEZsb2F0UmVjdCkg
ZmluYWw7CisgICAgdm9pZCBzZXRWaWRlb0Z1bGxzY3JlZW5HcmF2aXR5KE1lZGlhUGxheWVyOjpW
aWRlb0dyYXZpdHkpIGZpbmFsOworICAgIHZvaWQgc2V0VmlkZW9GdWxsc2NyZWVuTW9kZShNZWRp
YVBsYXllcjo6VmlkZW9GdWxsc2NyZWVuTW9kZSkgZmluYWw7CisgICAgdm9pZCB2aWRlb0Z1bGxz
Y3JlZW5TdGFuZGJ5Q2hhbmdlZCgpIGZpbmFsOworI2VuZGlmCisKKyNpZiBQTEFURk9STShJT1Nf
RkFNSUxZKQorICAgIE5TQXJyYXkgKnRpbWVkTWV0YWRhdGEoKSBjb25zdCBmaW5hbDsKKyAgICBT
dHJpbmcgYWNjZXNzTG9nKCkgY29uc3QgZmluYWw7CisgICAgU3RyaW5nIGVycm9yTG9nKCkgY29u
c3QgZmluYWw7CisjZW5kaWYKKyAgICBsb25nIHBsYXRmb3JtRXJyb3JDb2RlKCkgY29uc3QgZmlu
YWw7CisKKyAgICB2b2lkIHBsYXkoKSBmaW5hbDsKKyAgICB2b2lkIHBhdXNlKCkgZmluYWw7Cisg
ICAgdm9pZCBzZXRCdWZmZXJpbmdQb2xpY3koTWVkaWFQbGF5ZXI6OkJ1ZmZlcmluZ1BvbGljeSkg
ZmluYWw7CisKKyAgICBib29sIHN1cHBvcnRzUGljdHVyZUluUGljdHVyZSgpIGNvbnN0IGZpbmFs
OworICAgIGJvb2wgc3VwcG9ydHNGdWxsc2NyZWVuKCkgY29uc3QgZmluYWw7CisgICAgYm9vbCBz
dXBwb3J0c1NjYW5uaW5nKCkgY29uc3QgZmluYWw7CisgICAgYm9vbCByZXF1aXJlc0ltbWVkaWF0
ZUNvbXBvc2l0aW5nKCkgY29uc3QgZmluYWw7CisKKyAgICBib29sIGNhblNhdmVNZWRpYURhdGEo
KSBjb25zdCBmaW5hbDsKKworICAgIEZsb2F0U2l6ZSBuYXR1cmFsU2l6ZSgpIGNvbnN0IGZpbmFs
OworCisgICAgYm9vbCBoYXNWaWRlbygpIGNvbnN0IGZpbmFsOworICAgIGJvb2wgaGFzQXVkaW8o
KSBjb25zdCBmaW5hbDsKKworICAgIHZvaWQgc2V0VmlzaWJsZShib29sKSBmaW5hbDsKKworICAg
IE1lZGlhVGltZSBkdXJhdGlvbk1lZGlhVGltZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fZHVy
YXRpb247IH0KKyAgICBNZWRpYVRpbWUgY3VycmVudE1lZGlhVGltZSgpIGNvbnN0IGZpbmFsOwor
CisgICAgTWVkaWFUaW1lIGdldFN0YXJ0RGF0ZSgpIGNvbnN0IGZpbmFsOworCisgICAgdm9pZCBz
ZWVrKGNvbnN0IE1lZGlhVGltZSYpIGZpbmFsOworICAgIHZvaWQgc2Vla1dpdGhUb2xlcmFuY2Uo
Y29uc3QgTWVkaWFUaW1lJiwgY29uc3QgTWVkaWFUaW1lJiwgY29uc3QgTWVkaWFUaW1lJikgZmlu
YWw7CisKKyAgICBib29sIHNlZWtpbmcoKSBjb25zdCBmaW5hbDsKKworICAgIE1lZGlhVGltZSBz
dGFydFRpbWUoKSBjb25zdCBmaW5hbDsKKworICAgIHZvaWQgc2V0UmF0ZURvdWJsZShkb3VibGUp
IGZpbmFsOworICAgIGRvdWJsZSByYXRlKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9yYXRlOyB9
CisKKyAgICB2b2lkIHNldFByZXNlcnZlc1BpdGNoKGJvb2wpIGZpbmFsOworCisgICAgYm9vbCBw
YXVzZWQoKSBjb25zdCBmaW5hbDsKKworICAgIHZvaWQgc2V0Vm9sdW1lRG91YmxlKGRvdWJsZSkg
ZmluYWw7CisKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKSB8fCBVU0UoR1NUUkVBTUVSKQorICAg
IGZsb2F0IHZvbHVtZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIDE7IH0KKyNlbmRpZgorCisgICAg
dm9pZCBzZXRNdXRlZChib29sKSBmaW5hbDsKKworICAgIGJvb2wgaGFzQ2xvc2VkQ2FwdGlvbnMo
KSBjb25zdCBmaW5hbDsKKyAgICB2b2lkIHNldENsb3NlZENhcHRpb25zVmlzaWJsZShib29sKSBm
aW5hbDsKKworICAgIGRvdWJsZSBtYXhGYXN0Rm9yd2FyZFJhdGUoKSBjb25zdCBmaW5hbDsKKyAg
ICBkb3VibGUgbWluRmFzdFJldmVyc2VSYXRlKCkgY29uc3QgZmluYWw7CisKKyAgICBNZWRpYVBs
YXllcjo6TmV0d29ya1N0YXRlIG5ldHdvcmtTdGF0ZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1f
bmV0d29ya1N0YXRlOyB9CisgICAgTWVkaWFQbGF5ZXI6OlJlYWR5U3RhdGUgcmVhZHlTdGF0ZSgp
IGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fcmVhZHlTdGF0ZTsgfQorCisgICAgc3RkOjp1bmlxdWVf
cHRyPFBsYXRmb3JtVGltZVJhbmdlcz4gc2Vla2FibGUoKSBjb25zdCBmaW5hbDsKKworICAgIE1l
ZGlhVGltZSBtYXhNZWRpYVRpbWVTZWVrYWJsZSgpIGNvbnN0IGZpbmFsOworICAgIE1lZGlhVGlt
ZSBtaW5NZWRpYVRpbWVTZWVrYWJsZSgpIGNvbnN0IGZpbmFsOworICAgIHN0ZDo6dW5pcXVlX3B0
cjxQbGF0Zm9ybVRpbWVSYW5nZXM+IGJ1ZmZlcmVkKCkgY29uc3QgZmluYWw7CisgICAgZG91Ymxl
IHNlZWthYmxlVGltZVJhbmdlc0xhc3RNb2RpZmllZFRpbWUoKSBjb25zdCBmaW5hbDsKKyAgICBk
b3VibGUgbGl2ZVVwZGF0ZUludGVydmFsKCkgY29uc3QgZmluYWw7CisKKyAgICB1bnNpZ25lZCBs
b25nIGxvbmcgdG90YWxCeXRlcygpIGNvbnN0IGZpbmFsOworICAgIGJvb2wgZGlkTG9hZGluZ1By
b2dyZXNzKCkgY29uc3QgZmluYWw7CisKKyAgICB2b2lkIHNldFNpemUoY29uc3QgSW50U2l6ZSYp
IGZpbmFsOworCisgICAgdm9pZCBwYWludChHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJl
Y3QmKSBmaW5hbDsKKworICAgIHZvaWQgcGFpbnRDdXJyZW50RnJhbWVJbkNvbnRleHQoR3JhcGhp
Y3NDb250ZXh0JiwgY29uc3QgRmxvYXRSZWN0JikgZmluYWw7CisgICAgYm9vbCBjb3B5VmlkZW9U
ZXh0dXJlVG9QbGF0Zm9ybVRleHR1cmUoR3JhcGhpY3NDb250ZXh0M0QqLCBQbGF0Zm9ybTNET2Jq
ZWN0LCBHQzNEZW51bSwgR0MzRGludCwgR0MzRGVudW0sIEdDM0RlbnVtLCBHQzNEZW51bSwgYm9v
bCwgYm9vbCkgZmluYWw7CisgICAgTmF0aXZlSW1hZ2VQdHIgbmF0aXZlSW1hZ2VGb3JDdXJyZW50
VGltZSgpIGZpbmFsOworCisgICAgdm9pZCBzZXRQcmVsb2FkKE1lZGlhUGxheWVyOjpQcmVsb2Fk
KSBmaW5hbDsKKworICAgIGJvb2wgaGFzQXZhaWxhYmxlVmlkZW9GcmFtZSgpIGNvbnN0IGZpbmFs
OworCisgICAgYm9vbCBjYW5Mb2FkUG9zdGVyKCkgY29uc3QgZmluYWw7CisgICAgdm9pZCBzZXRQ
b3N0ZXIoY29uc3QgU3RyaW5nJikgZmluYWw7CisKKyNpZiBVU0UoTkFUSVZFX0ZVTExTQ1JFRU5f
VklERU8pCisgICAgdm9pZCBlbnRlckZ1bGxzY3JlZW4oKSBmaW5hbDsKKyAgICB2b2lkIGV4aXRG
dWxsc2NyZWVuKCkgZmluYWw7CisjZW5kaWYKKworI2lmIEVOQUJMRShXSVJFTEVTU19QTEFZQkFD
S19UQVJHRVQpCisgICAgU3RyaW5nIHdpcmVsZXNzUGxheWJhY2tUYXJnZXROYW1lKCkgY29uc3Qg
ZmluYWw7CisgICAgTWVkaWFQbGF5ZXI6OldpcmVsZXNzUGxheWJhY2tUYXJnZXRUeXBlIHdpcmVs
ZXNzUGxheWJhY2tUYXJnZXRUeXBlKCkgY29uc3QgZmluYWw7CisKKyAgICBib29sIHdpcmVsZXNz
VmlkZW9QbGF5YmFja0Rpc2FibGVkKCkgY29uc3QgZmluYWw7CisgICAgdm9pZCBzZXRXaXJlbGVz
c1ZpZGVvUGxheWJhY2tEaXNhYmxlZChib29sKSBmaW5hbDsKKworICAgIGJvb2wgY2FuUGxheVRv
V2lyZWxlc3NQbGF5YmFja1RhcmdldCgpIGNvbnN0IGZpbmFsOworICAgIGJvb2wgaXNDdXJyZW50
UGxheWJhY2tUYXJnZXRXaXJlbGVzcygpIGNvbnN0IGZpbmFsOworICAgIHZvaWQgc2V0V2lyZWxl
c3NQbGF5YmFja1RhcmdldChSZWY8TWVkaWFQbGF5YmFja1RhcmdldD4mJikgZmluYWw7CisKKyAg
ICB2b2lkIHNldFNob3VsZFBsYXlUb1BsYXliYWNrVGFyZ2V0KGJvb2wpIGZpbmFsOworI2VuZGlm
CisKKyNpZiBVU0UoTkFUSVZFX0ZVTExTQ1JFRU5fVklERU8pCisgICAgYm9vbCBjYW5FbnRlckZ1
bGxzY3JlZW4oKSBjb25zdCBmaW5hbDsKKyNlbmRpZgorCisgICAgYm9vbCBzdXBwb3J0c0FjY2Vs
ZXJhdGVkUmVuZGVyaW5nKCkgY29uc3QgZmluYWw7CisgICAgdm9pZCBhY2NlbGVyYXRlZFJlbmRl
cmluZ1N0YXRlQ2hhbmdlZCgpIGZpbmFsOworCisgICAgYm9vbCBzaG91bGRNYWludGFpbkFzcGVj
dFJhdGlvKCkgY29uc3QgZmluYWw7CisgICAgdm9pZCBzZXRTaG91bGRNYWludGFpbkFzcGVjdFJh
dGlvKGJvb2wpIGZpbmFsOworCisgICAgYm9vbCBoYXNTaW5nbGVTZWN1cml0eU9yaWdpbigpIGNv
bnN0IGZpbmFsOworICAgIGJvb2wgZGlkUGFzc0NPUlNBY2Nlc3NDaGVjaygpIGNvbnN0IGZpbmFs
OworICAgIE9wdGlvbmFsPGJvb2w+IHdvdWxkVGFpbnRPcmlnaW4oY29uc3QgU2VjdXJpdHlPcmln
aW4mKSBjb25zdCBmaW5hbDsKKworICAgIE1lZGlhUGxheWVyOjpNb3ZpZUxvYWRUeXBlIG1vdmll
TG9hZFR5cGUoKSBjb25zdCBmaW5hbDsKKworICAgIHZvaWQgcHJlcGFyZUZvclJlbmRlcmluZygp
IGZpbmFsOworCisgICAgTWVkaWFUaW1lIG1lZGlhVGltZUZvclRpbWVWYWx1ZShjb25zdCBNZWRp
YVRpbWUmIHRpbWVWYWx1ZSkgY29uc3QgZmluYWw7CisKKyAgICBkb3VibGUgbWF4aW11bUR1cmF0
aW9uVG9DYWNoZU1lZGlhVGltZSgpIGNvbnN0IGZpbmFsOworCisgICAgdW5zaWduZWQgZGVjb2Rl
ZEZyYW1lQ291bnQoKSBjb25zdCBmaW5hbDsKKyAgICB1bnNpZ25lZCBkcm9wcGVkRnJhbWVDb3Vu
dCgpIGNvbnN0IGZpbmFsOworICAgIHVuc2lnbmVkIGF1ZGlvRGVjb2RlZEJ5dGVDb3VudCgpIGNv
bnN0IGZpbmFsOworICAgIHVuc2lnbmVkIHZpZGVvRGVjb2RlZEJ5dGVDb3VudCgpIGNvbnN0IGZp
bmFsOworCisgICAgdm9pZCBzZXRQcml2YXRlQnJvd3NpbmdNb2RlKGJvb2wpIGZpbmFsOworICAg
IFN0cmluZyBlbmdpbmVEZXNjcmlwdGlvbigpIGNvbnN0IGZpbmFsOworCisjaWYgRU5BQkxFKFdF
Ql9BVURJTykKKyAgICBBdWRpb1NvdXJjZVByb3ZpZGVyKiBhdWRpb1NvdXJjZVByb3ZpZGVyKCkg
ZmluYWw7CisjZW5kaWYKKworI2lmIEVOQUJMRShMRUdBQ1lfRU5DUllQVEVEX01FRElBKQorICAg
IHN0ZDo6dW5pcXVlX3B0cjxMZWdhY3lDRE1TZXNzaW9uPiBjcmVhdGVTZXNzaW9uKGNvbnN0IFN0
cmluZyYsIExlZ2FjeUNETVNlc3Npb25DbGllbnQqKSBmaW5hbDsKKyAgICB2b2lkIHNldENETVNl
c3Npb24oTGVnYWN5Q0RNU2Vzc2lvbiopIGZpbmFsOworICAgIHZvaWQga2V5QWRkZWQoKSBmaW5h
bDsKKyNlbmRpZgorCisjaWYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkKKyAgICB2b2lkIGNkbUlu
c3RhbmNlQXR0YWNoZWQoQ0RNSW5zdGFuY2UmKSBmaW5hbDsKKyAgICB2b2lkIGNkbUluc3RhbmNl
RGV0YWNoZWQoQ0RNSW5zdGFuY2UmKSBmaW5hbDsKKyAgICB2b2lkIGF0dGVtcHRUb0RlY3J5cHRX
aXRoSW5zdGFuY2UoQ0RNSW5zdGFuY2UmKSBmaW5hbDsKKyAgICBib29sIHdhaXRpbmdGb3JLZXko
KSBjb25zdCBmaW5hbDsKKyNlbmRpZgorCisjaWYgRU5BQkxFKFZJREVPX1RSQUNLKQorICAgIGJv
b2wgcmVxdWlyZXNUZXh0VHJhY2tSZXByZXNlbnRhdGlvbigpIGNvbnN0IGZpbmFsOworICAgIHZv
aWQgc2V0VGV4dFRyYWNrUmVwcmVzZW50YXRpb24oVGV4dFRyYWNrUmVwcmVzZW50YXRpb24qKSBm
aW5hbDsKKyAgICB2b2lkIHN5bmNUZXh0VHJhY2tCb3VuZHMoKSBmaW5hbDsKKyAgICB2b2lkIHRy
YWNrc0NoYW5nZWQoKSBmaW5hbDsKKyNlbmRpZgorCisjaWYgVVNFKEdTVFJFQU1FUikKKyAgICB2
b2lkIHNpbXVsYXRlQXVkaW9JbnRlcnJ1cHRpb24oKSBmaW5hbDsKKyNlbmRpZgorCisgICAgdm9p
ZCBiZWdpblNpbXVsYXRlZEhEQ1BFcnJvcigpIGZpbmFsOworICAgIHZvaWQgZW5kU2ltdWxhdGVk
SERDUEVycm9yKCkgZmluYWw7CisKKyAgICBTdHJpbmcgbGFuZ3VhZ2VPZlByaW1hcnlBdWRpb1Ry
YWNrKCkgY29uc3QgZmluYWw7CisKKyAgICBzaXplX3QgZXh0cmFNZW1vcnlDb3N0KCkgY29uc3Qg
ZmluYWw7CisKKyAgICB1bnNpZ25lZCBsb25nIGxvbmcgZmlsZVNpemUoKSBjb25zdCBmaW5hbDsK
KworICAgIGJvb2wgZW5kZWQoKSBjb25zdCBmaW5hbDsKKworICAgIE9wdGlvbmFsPFZpZGVvUGxh
eWJhY2tRdWFsaXR5TWV0cmljcz4gdmlkZW9QbGF5YmFja1F1YWxpdHlNZXRyaWNzKCkgZmluYWw7
CisKKyNpZiBFTkFCTEUoQVZGX0NBUFRJT05TKQorICAgIHZvaWQgbm90aWZ5VHJhY2tNb2RlQ2hh
bmdlZCgpIGZpbmFsOworI2VuZGlmCisKKyAgICB2b2lkIG5vdGlmeUFjdGl2ZVNvdXJjZUJ1ZmZl
cnNDaGFuZ2VkKCkgZmluYWw7CisKKyAgICB2b2lkIHNldFNob3VsZERpc2FibGVTbGVlcChib29s
KSBmaW5hbDsKKworICAgIHZvaWQgYXBwbGljYXRpb25XaWxsUmVzaWduQWN0aXZlKCkgZmluYWw7
CisgICAgdm9pZCBhcHBsaWNhdGlvbkRpZEJlY29tZUFjdGl2ZSgpIGZpbmFsOworCisjaWYgVVNF
KEFWRk9VTkRBVElPTikKKyAgICBBVlBsYXllciAqb2JqQ0FWRm91bmRhdGlvbkFWUGxheWVyKCkg
Y29uc3QgZmluYWwgeyByZXR1cm4gbnVsbHB0cjsgfQorI2VuZGlmCisKKyAgICBib29sIHBlcmZv
cm1UYXNrQXRNZWRpYVRpbWUoV1RGOjpGdW5jdGlvbjx2b2lkKCk+JiYsIE1lZGlhVGltZSkgZmlu
YWw7CisKKyAgICBib29sIHNob3VsZElnbm9yZUludHJpbnNpY1NpemUoKSBmaW5hbDsKKworICAg
IE1lZGlhUGxheWVyKiBtX3BsYXllciB7IG51bGxwdHIgfTsKKyAgICBSZW1vdGVNZWRpYVBsYXll
ck1hbmFnZXIgbV9tYW5hZ2VyOworICAgIE1lZGlhUGxheWVyRW51bXM6Ok1lZGlhRW5naW5lSWRl
bnRpZmllciBtX3JlbW90ZUVuZ2luZUlkZW50aWZpZXI7CisgICAgTWVkaWFQbGF5ZXJQcml2YXRl
UmVtb3RlSWRlbnRpZmllciBtX2lkOworCisgICAgTWVkaWFQbGF5ZXI6Ok5ldHdvcmtTdGF0ZSBt
X25ldHdvcmtTdGF0ZSB7IE1lZGlhUGxheWVyOjpOZXR3b3JrU3RhdGU6OkVtcHR5IH07CisgICAg
TWVkaWFQbGF5ZXI6OlJlYWR5U3RhdGUgbV9yZWFkeVN0YXRlIHsgTWVkaWFQbGF5ZXI6OlJlYWR5
U3RhdGU6OkhhdmVOb3RoaW5nIH07CisgICAgZG91YmxlIG1fdm9sdW1lIHsgMSB9OworICAgIGJv
b2wgbV9tdXRlIHsgZmFsc2UgfTsKKyAgICBNZWRpYVRpbWUgbV9kdXJhdGlvbjsKKyAgICBkb3Vi
bGUgbV9yYXRlIHsgMSB9OworCisjaWYgIVJFTEVBU0VfTE9HX0RJU0FCTEVECisgICAgUmVmUHRy
PGNvbnN0IExvZ2dlcj4gbV9sb2dnZXI7CisgICAgY29uc3Qgdm9pZCogbV9sb2dJZGVudGlmaWVy
OworI2VuZGlmCisKKyAgICBib29sIG1faW52YWxpZCB7IGZhbHNlIH07Cit9OworCit9IC8vIG5h
bWVzcGFjZSBXZWJLaXQKKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvR1BVL21lZGlhL01lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZUlkZW50aWZpZXIuaCBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3Rl
SWRlbnRpZmllci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjg3ZTdiOGJiYWVjMzUzNGU3ZGVmZDc4MjM4NjEwMTQz
MjE3NTM4YzcKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BV
L21lZGlhL01lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZUlkZW50aWZpZXIuaApAQCAtMCwwICsxLDM1
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UgLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisg
KiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAq
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSA8d3RmL09iamVjdElk
ZW50aWZpZXIuaD4KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2VudW0gTWVkaWFQbGF5ZXJQcml2
YXRlUmVtb3RlSWRlbnRpZmllclR5cGUgeyB9OwordXNpbmcgTWVkaWFQbGF5ZXJQcml2YXRlUmVt
b3RlSWRlbnRpZmllciA9IE9iamVjdElkZW50aWZpZXI8TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3Rl
SWRlbnRpZmllclR5cGU+OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyTWFuYWdl
ci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZU1lZGlhUGxh
eWVyTWFuYWdlci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZDIzNjZmZDYzZTZhM2E3NTBiNzczMWNkOGUwMGIx
YjI3NDRkNGUxNwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9H
UFUvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyLmNwcApAQCAtMCwwICsxLDI1MiBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJSZW1vdGVNZWRpYVBs
YXllck1hbmFnZXIuaCIKKworI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykKKworI2luY2x1ZGUgIlJl
bW90ZU1lZGlhUGxheWVyTWFuYWdlck1lc3NhZ2VzLmgiCisjaW5jbHVkZSAiUmVtb3RlTWVkaWFQ
bGF5ZXJNYW5hZ2VyUHJveHlNZXNzYWdlcy5oIgorI2luY2x1ZGUgIldlYkNvcmVBcmd1bWVudENv
ZGVycy5oIgorI2luY2x1ZGUgIldlYlByb2Nlc3MuaCIKKyNpbmNsdWRlICJXZWJQcm9jZXNzQ3Jl
YXRpb25QYXJhbWV0ZXJzLmgiCisjaW5jbHVkZSA8V2ViQ29yZS9NZWRpYVBsYXllci5oPgorI2lu
Y2x1ZGUgPFdlYkNvcmUvTm90SW1wbGVtZW50ZWQuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1NldHRp
bmdzLmg+CisjaW5jbHVkZSA8d3RmL0Fzc2VydGlvbnMuaD4KKworbmFtZXNwYWNlIFdlYktpdCB7
Cit1c2luZyBuYW1lc3BhY2UgUEFMOwordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CisKK2NsYXNz
IE1lZGlhUGxheWVyUmVtb3RlRmFjdG9yeSBmaW5hbCA6IHB1YmxpYyBNZWRpYVBsYXllckZhY3Rv
cnkgeworcHVibGljOgorICAgIE1lZGlhUGxheWVyUmVtb3RlRmFjdG9yeShNZWRpYVBsYXllckVu
dW1zOjpNZWRpYUVuZ2luZUlkZW50aWZpZXIgcmVtb3RlRW5naW5lSWRlbnRpZmllciwgUmVtb3Rl
TWVkaWFQbGF5ZXJNYW5hZ2VyJiBtYW5hZ2VyKQorICAgICAgICA6IG1fcmVtb3RlRW5naW5lSWRl
bnRpZmllcihyZW1vdGVFbmdpbmVJZGVudGlmaWVyKQorICAgICAgICAsIG1fbWFuYWdlcihtYW5h
Z2VyKQorICAgIHsKKyAgICB9CisKKyAgICBNZWRpYVBsYXllckVudW1zOjpNZWRpYUVuZ2luZUlk
ZW50aWZpZXIgaWRlbnRpZmllcigpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fcmVtb3RlRW5naW5l
SWRlbnRpZmllcjsgfTsKKworICAgIHN0ZDo6dW5pcXVlX3B0cjxNZWRpYVBsYXllclByaXZhdGVJ
bnRlcmZhY2U+IGNyZWF0ZU1lZGlhRW5naW5lUGxheWVyKE1lZGlhUGxheWVyKiBwbGF5ZXIpIGNv
bnN0IGZpbmFsCisgICAgeworICAgICAgICByZXR1cm4gbV9tYW5hZ2VyLmNyZWF0ZVJlbW90ZU1l
ZGlhUGxheWVyKHBsYXllciwgbV9yZW1vdGVFbmdpbmVJZGVudGlmaWVyKTsKKyAgICB9CisKKyAg
ICB2b2lkIGdldFN1cHBvcnRlZFR5cGVzKEhhc2hTZXQ8U3RyaW5nLCBBU0NJSUNhc2VJbnNlbnNp
dGl2ZUhhc2g+JiB0eXBlcykgY29uc3QgZmluYWwKKyAgICB7CisgICAgICAgIHJldHVybiBtX21h
bmFnZXIuZ2V0U3VwcG9ydGVkVHlwZXMobV9yZW1vdGVFbmdpbmVJZGVudGlmaWVyLCB0eXBlcyk7
CisgICAgfQorCisgICAgTWVkaWFQbGF5ZXI6OlN1cHBvcnRzVHlwZSBzdXBwb3J0c1R5cGVBbmRD
b2RlY3MoY29uc3QgTWVkaWFFbmdpbmVTdXBwb3J0UGFyYW1ldGVycyYgcGFyYW1ldGVycykgY29u
c3QgZmluYWwKKyAgICB7CisgICAgICAgIHJldHVybiBtX21hbmFnZXIuc3VwcG9ydHNUeXBlQW5k
Q29kZWNzKG1fcmVtb3RlRW5naW5lSWRlbnRpZmllciwgcGFyYW1ldGVycyk7CisgICAgfQorCisg
ICAgSGFzaFNldDxSZWZQdHI8U2VjdXJpdHlPcmlnaW4+PiBvcmlnaW5zSW5NZWRpYUNhY2hlKGNv
bnN0IFN0cmluZyYgcGF0aCkgY29uc3QgZmluYWwKKyAgICB7CisgICAgICAgIHJldHVybiBtX21h
bmFnZXIub3JpZ2luc0luTWVkaWFDYWNoZShtX3JlbW90ZUVuZ2luZUlkZW50aWZpZXIsIHBhdGgp
OworICAgIH0KKworICAgIHZvaWQgY2xlYXJNZWRpYUNhY2hlKGNvbnN0IFN0cmluZyYgcGF0aCwg
V2FsbFRpbWUgbW9kaWZpZWRTaW5jZSkgY29uc3QgZmluYWwKKyAgICB7CisgICAgICAgIHJldHVy
biBtX21hbmFnZXIuY2xlYXJNZWRpYUNhY2hlKG1fcmVtb3RlRW5naW5lSWRlbnRpZmllciwgcGF0
aCwgbW9kaWZpZWRTaW5jZSk7CisgICAgfQorCisgICAgdm9pZCBjbGVhck1lZGlhQ2FjaGVGb3JP
cmlnaW5zKGNvbnN0IFN0cmluZyYgcGF0aCwgY29uc3QgSGFzaFNldDxSZWZQdHI8U2VjdXJpdHlP
cmlnaW4+PiYgb3JpZ2lucykgY29uc3QgZmluYWwKKyAgICB7CisgICAgICAgIHJldHVybiBtX21h
bmFnZXIuY2xlYXJNZWRpYUNhY2hlRm9yT3JpZ2lucyhtX3JlbW90ZUVuZ2luZUlkZW50aWZpZXIs
IHBhdGgsIG9yaWdpbnMpOworICAgIH0KKworICAgIGJvb2wgc3VwcG9ydHNLZXlTeXN0ZW0oY29u
c3QgU3RyaW5nJiBrZXlTeXN0ZW0sIGNvbnN0IFN0cmluZyYgbWltZVR5cGUpIGNvbnN0IGZpbmFs
CisgICAgeworICAgICAgICByZXR1cm4gbV9tYW5hZ2VyLnN1cHBvcnRzS2V5U3lzdGVtKG1fcmVt
b3RlRW5naW5lSWRlbnRpZmllciwga2V5U3lzdGVtLCBtaW1lVHlwZSk7CisgICAgfQorCitwcml2
YXRlOgorICAgIE1lZGlhUGxheWVyRW51bXM6Ok1lZGlhRW5naW5lSWRlbnRpZmllciBtX3JlbW90
ZUVuZ2luZUlkZW50aWZpZXI7CisgICAgUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyJiBtX21hbmFn
ZXI7Cit9OworCitSZW1vdGVNZWRpYVBsYXllck1hbmFnZXI6OlJlbW90ZU1lZGlhUGxheWVyTWFu
YWdlcihXZWJQcm9jZXNzJiBwcm9jZXNzKQorICAgIDogbV9wcm9jZXNzKHByb2Nlc3MpCit7Cisg
ICAgbV9wcm9jZXNzLmFkZE1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6UmVtb3RlTWVkaWFQbGF5
ZXJNYW5hZ2VyOjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksICp0aGlzKTsKK30KKworUmVtb3RlTWVk
aWFQbGF5ZXJNYW5hZ2VyOjp+UmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyKCkKK3sKKyAgICBtX3By
b2Nlc3MucmVtb3ZlTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpSZW1vdGVNZWRpYVBsYXllck1h
bmFnZXI6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSk7Cit9CisKK2NvbnN0IGNoYXIqIFJlbW90ZU1l
ZGlhUGxheWVyTWFuYWdlcjo6c3VwcGxlbWVudE5hbWUoKQoreworICAgIHJldHVybiAiUmVtb3Rl
TWVkaWFQbGF5ZXJNYW5hZ2VyIjsKK30KKwordm9pZCBSZW1vdGVNZWRpYVBsYXllck1hbmFnZXI6
OmluaXRpYWxpemUoY29uc3QgV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycyYpCit7CisvLyBG
SVhNRTogVXNlIHBhcmFtZXRlcnMubWVkaWFNSU1FVHlwZXMuCit9CisKK3N0ZDo6dW5pcXVlX3B0
cjxNZWRpYVBsYXllclByaXZhdGVJbnRlcmZhY2U+IFJlbW90ZU1lZGlhUGxheWVyTWFuYWdlcjo6
Y3JlYXRlUmVtb3RlTWVkaWFQbGF5ZXIoTWVkaWFQbGF5ZXIqIHBsYXllciwgTWVkaWFQbGF5ZXJF
bnVtczo6TWVkaWFFbmdpbmVJZGVudGlmaWVyIHJlbW90ZUVuZ2luZUlkZW50aWZpZXIpCit7Cisg
ICAgYXV0byBpZCA9IE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZUlkZW50aWZpZXI6OmdlbmVyYXRl
KCk7CisKKyAgICBib29sIGhhdmVSZW1vdGVQcm94eTsKKyAgICBib29sIHNlbmRTdWNjZWVkZWQg
PSBncHVQcm9jZXNzQ29ubmVjdGlvbigpLnNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVNZWRpYVBs
YXllck1hbmFnZXJQcm94eTo6Q3JlYXRlTWVkaWFQbGF5ZXIoaWQsIHJlbW90ZUVuZ2luZUlkZW50
aWZpZXIpLCBNZXNzYWdlczo6UmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHk6OkNyZWF0ZU1l
ZGlhUGxheWVyOjpSZXBseShoYXZlUmVtb3RlUHJveHkpLCAwKTsKKyAgICBpZiAoIWhhdmVSZW1v
dGVQcm94eSB8fCAhc2VuZFN1Y2NlZWRlZCkgeworICAgICAgICBXVEZMb2dBbHdheXMoIkZhaWxl
ZCB0byBjcmVhdGUgcmVtb3RlIG1lZGlhIHBsYXllci4iKTsKKyAgICAgICAgcmV0dXJuIG51bGxw
dHI7CisgICAgfQorCisgICAgYXV0byByZW1vdGVQbGF5ZXIgPSBNZWRpYVBsYXllclByaXZhdGVS
ZW1vdGU6OmNyZWF0ZShwbGF5ZXIsIHJlbW90ZUVuZ2luZUlkZW50aWZpZXIsIGlkLCAqdGhpcyk7
CisgICAgbV9wbGF5ZXJzLmFkZChpZCwgbWFrZVdlYWtQdHIoKnJlbW90ZVBsYXllcikpOworICAg
IHJldHVybiByZW1vdGVQbGF5ZXI7Cit9CisKK3ZvaWQgUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2Vy
OjpkZWxldGVSZW1vdGVNZWRpYVBsYXllcihNZWRpYVBsYXllclByaXZhdGVSZW1vdGVJZGVudGlm
aWVyIGlkKQoreworICAgIG1fcGxheWVycy50YWtlKGlkKTsKKyAgICBncHVQcm9jZXNzQ29ubmVj
dGlvbigpLnNlbmQoTWVzc2FnZXM6OlJlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5OjpEZWxl
dGVNZWRpYVBsYXllcihpZCksIDApOworfQorCit2b2lkIFJlbW90ZU1lZGlhUGxheWVyTWFuYWdl
cjo6Z2V0U3VwcG9ydGVkVHlwZXMoTWVkaWFQbGF5ZXJFbnVtczo6TWVkaWFFbmdpbmVJZGVudGlm
aWVyIHJlbW90ZUVuZ2luZUlkZW50aWZpZXIsIEhhc2hTZXQ8U3RyaW5nLCBBU0NJSUNhc2VJbnNl
bnNpdGl2ZUhhc2g+JiByZXN1bHQpCit7CisgICAgLy8gRklYTUU6IHN1cHBvcnRlZCB0eXBlcyBk
b24ndCBjaGFuZ2UsIGNhY2hlIHRoZW0uCisKKyAgICBWZWN0b3I8U3RyaW5nPiB0eXBlczsKKyAg
ICBpZiAoIWdwdVByb2Nlc3NDb25uZWN0aW9uKCkuc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZU1l
ZGlhUGxheWVyTWFuYWdlclByb3h5OjpHZXRTdXBwb3J0ZWRUeXBlcyhyZW1vdGVFbmdpbmVJZGVu
dGlmaWVyKSwgTWVzc2FnZXM6OlJlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5OjpHZXRTdXBw
b3J0ZWRUeXBlczo6UmVwbHkodHlwZXMpLCAwKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgcmVz
dWx0ID0gSGFzaFNldDxTdHJpbmcsIEFTQ0lJQ2FzZUluc2Vuc2l0aXZlSGFzaD4oKTsKKyAgICBm
b3IgKGF1dG8mIHR5cGUgOiB0eXBlcykKKyAgICAgICAgcmVzdWx0LmFkZCh0eXBlKTsKK30KKwor
TWVkaWFQbGF5ZXI6OlN1cHBvcnRzVHlwZSBSZW1vdGVNZWRpYVBsYXllck1hbmFnZXI6OnN1cHBv
cnRzVHlwZUFuZENvZGVjcyhNZWRpYVBsYXllckVudW1zOjpNZWRpYUVuZ2luZUlkZW50aWZpZXIg
cmVtb3RlRW5naW5lSWRlbnRpZmllciwgY29uc3QgV2ViQ29yZTo6TWVkaWFFbmdpbmVTdXBwb3J0
UGFyYW1ldGVycyYgcGFyYW1ldGVycykKK3sKKyAgICAvLyBGSVhNRTogc3VwcG9ydGVkIHR5cGVz
IGRvbid0IGNoYW5nZSwgY2FjaGUgdGhlbS4KKworICAgIE1lZGlhUGxheWVyOjpTdXBwb3J0c1R5
cGUgcmVzdWx0OworICAgIGlmICghZ3B1UHJvY2Vzc0Nvbm5lY3Rpb24oKS5zZW5kU3luYyhNZXNz
YWdlczo6UmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHk6OlN1cHBvcnRzVHlwZShyZW1vdGVF
bmdpbmVJZGVudGlmaWVyLCBwYXJhbWV0ZXJzKSwgTWVzc2FnZXM6OlJlbW90ZU1lZGlhUGxheWVy
TWFuYWdlclByb3h5OjpTdXBwb3J0c1R5cGU6OlJlcGx5KHJlc3VsdCksIDApKQorICAgICAgICBy
ZXR1cm4gTWVkaWFQbGF5ZXI6OlN1cHBvcnRzVHlwZTo6SXNOb3RTdXBwb3J0ZWQ7CisKKyAgICBy
ZXR1cm4gcmVzdWx0OworfQorCitib29sIFJlbW90ZU1lZGlhUGxheWVyTWFuYWdlcjo6c3VwcG9y
dHNLZXlTeXN0ZW0oTWVkaWFQbGF5ZXJFbnVtczo6TWVkaWFFbmdpbmVJZGVudGlmaWVyLCBjb25z
dCBTdHJpbmcmIGtleVN5c3RlbSwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSkKK3sKKyAgICByZXR1
cm4gZmFsc2U7Cit9CisKK0hhc2hTZXQ8UmVmUHRyPFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luPj4g
UmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyOjpvcmlnaW5zSW5NZWRpYUNhY2hlKE1lZGlhUGxheWVy
RW51bXM6Ok1lZGlhRW5naW5lSWRlbnRpZmllciByZW1vdGVFbmdpbmVJZGVudGlmaWVyLCBjb25z
dCBTdHJpbmcmIHBhdGgpCit7CisgICAgVmVjdG9yPFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0
YT4gb3JpZ2luRGF0YTsKKyAgICBpZiAoIWdwdVByb2Nlc3NDb25uZWN0aW9uKCkuc2VuZFN5bmMo
TWVzc2FnZXM6OlJlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5OjpPcmlnaW5zSW5NZWRpYUNh
Y2hlKHJlbW90ZUVuZ2luZUlkZW50aWZpZXIsIHBhdGgpLCBNZXNzYWdlczo6UmVtb3RlTWVkaWFQ
bGF5ZXJNYW5hZ2VyUHJveHk6Ok9yaWdpbnNJbk1lZGlhQ2FjaGU6OlJlcGx5KG9yaWdpbkRhdGEp
LCAwKSkKKyAgICAgICAgcmV0dXJuIHsgfTsKKworICAgIEhhc2hTZXQ8UmVmUHRyPFNlY3VyaXR5
T3JpZ2luPj4gb3JpZ2luczsKKyAgICBmb3IgKGF1dG8mIGRhdGEgOiBvcmlnaW5EYXRhKQorICAg
ICAgICBvcmlnaW5zLmFkZChkYXRhLnNlY3VyaXR5T3JpZ2luKCkpOworCisgICAgcmV0dXJuIG9y
aWdpbnM7Cit9CisKK3ZvaWQgUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyOjpjbGVhck1lZGlhQ2Fj
aGUoTWVkaWFQbGF5ZXJFbnVtczo6TWVkaWFFbmdpbmVJZGVudGlmaWVyIHJlbW90ZUVuZ2luZUlk
ZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgcGF0aCwgV2FsbFRpbWUgbW9kaWZpZWRTaW5jZSkKK3sK
KyAgICBncHVQcm9jZXNzQ29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6OlJlbW90ZU1lZGlhUGxh
eWVyTWFuYWdlclByb3h5OjpDbGVhck1lZGlhQ2FjaGUocmVtb3RlRW5naW5lSWRlbnRpZmllciwg
cGF0aCwgbW9kaWZpZWRTaW5jZSksIDApOworfQorCit2b2lkIFJlbW90ZU1lZGlhUGxheWVyTWFu
YWdlcjo6Y2xlYXJNZWRpYUNhY2hlRm9yT3JpZ2lucyhNZWRpYVBsYXllckVudW1zOjpNZWRpYUVu
Z2luZUlkZW50aWZpZXIgcmVtb3RlRW5naW5lSWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBwYXRo
LCBjb25zdCBIYXNoU2V0PFJlZlB0cjxXZWJDb3JlOjpTZWN1cml0eU9yaWdpbj4+JiBvcmlnaW5z
KQoreworICAgIGF1dG8gb3JpZ2luRGF0YSA9IFdURjo6bWFwKG9yaWdpbnMsIFtdIChhdXRvJiBv
cmlnaW4pIHsKKyAgICAgICAgcmV0dXJuIG9yaWdpbi0+ZGF0YSgpOworICAgIH0pOworCisgICAg
Z3B1UHJvY2Vzc0Nvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpSZW1vdGVNZWRpYVBsYXllck1h
bmFnZXJQcm94eTo6Q2xlYXJNZWRpYUNhY2hlRm9yT3JpZ2lucyhyZW1vdGVFbmdpbmVJZGVudGlm
aWVyLCBwYXRoLCBvcmlnaW5EYXRhKSwgMCk7Cit9CisKK3ZvaWQgUmVtb3RlTWVkaWFQbGF5ZXJN
YW5hZ2VyOjpuZXR3b3JrU3RhdGVDaGFuZ2VkKE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZUlkZW50
aWZpZXIgaWQsIE1lZGlhUGxheWVyRW51bXM6Ok5ldHdvcmtTdGF0ZSBzdGF0ZSkKK3sKKyAgICBp
ZiAoYXV0byBwbGF5ZXIgPSBtX3BsYXllcnMuZ2V0KGlkKSkKKyAgICAgICAgcGxheWVyLT5uZXR3
b3JrU3RhdGVDaGFuZ2VkKHN0YXRlKTsKK30KKwordm9pZCBSZW1vdGVNZWRpYVBsYXllck1hbmFn
ZXI6OnJlYWR5U3RhdGVDaGFuZ2VkKE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZUlkZW50aWZpZXIg
aWQsIE1lZGlhUGxheWVyRW51bXM6OlJlYWR5U3RhdGUgc3RhdGUpCit7CisgICAgaWYgKGF1dG8g
cGxheWVyID0gbV9wbGF5ZXJzLmdldChpZCkpCisgICAgICAgIHBsYXllci0+cmVhZHlTdGF0ZUNo
YW5nZWQoc3RhdGUpOworfQorCit2b2lkIFJlbW90ZU1lZGlhUGxheWVyTWFuYWdlcjo6dm9sdW1l
Q2hhbmdlZChXZWJLaXQ6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZUlkZW50aWZpZXIgaWQsIGRv
dWJsZSB2b2x1bWUpCit7CisgICAgaWYgKGF1dG8gcGxheWVyID0gbV9wbGF5ZXJzLmdldChpZCkp
CisgICAgICAgIHBsYXllci0+dm9sdW1lQ2hhbmdlZCh2b2x1bWUpOworfQorCit2b2lkIFJlbW90
ZU1lZGlhUGxheWVyTWFuYWdlcjo6bXV0ZUNoYW5nZWQoV2ViS2l0OjpNZWRpYVBsYXllclByaXZh
dGVSZW1vdGVJZGVudGlmaWVyIGlkLCBib29sIG11dGUpCit7CisgICAgaWYgKGF1dG8gcGxheWVy
ID0gbV9wbGF5ZXJzLmdldChpZCkpCisgICAgICAgIHBsYXllci0+bXV0ZUNoYW5nZWQobXV0ZSk7
Cit9CisKK3ZvaWQgUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyOjp0aW1lQ2hhbmdlZChXZWJLaXQ6
Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZUlkZW50aWZpZXIgaWQsIE1lZGlhVGltZSYmIHRpbWUp
Cit7CisgICAgaWYgKGF1dG8gcGxheWVyID0gbV9wbGF5ZXJzLmdldChpZCkpCisgICAgICAgIHBs
YXllci0+dGltZUNoYW5nZWQoV1RGTW92ZSh0aW1lKSk7Cit9CisKK3ZvaWQgUmVtb3RlTWVkaWFQ
bGF5ZXJNYW5hZ2VyOjpkdXJhdGlvbkNoYW5nZWQoV2ViS2l0OjpNZWRpYVBsYXllclByaXZhdGVS
ZW1vdGVJZGVudGlmaWVyIGlkLCBNZWRpYVRpbWUmJiB0aW1lKQoreworICAgIGlmIChhdXRvIHBs
YXllciA9IG1fcGxheWVycy5nZXQoaWQpKQorICAgICAgICBwbGF5ZXItPmR1cmF0aW9uQ2hhbmdl
ZChXVEZNb3ZlKHRpbWUpKTsKK30KKwordm9pZCBSZW1vdGVNZWRpYVBsYXllck1hbmFnZXI6OnJh
dGVDaGFuZ2VkKFdlYktpdDo6TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlSWRlbnRpZmllciBpZCwg
ZG91YmxlIHJhdGUpCit7CisgICAgaWYgKGF1dG8gcGxheWVyID0gbV9wbGF5ZXJzLmdldChpZCkp
CisgICAgICAgIHBsYXllci0+cmF0ZUNoYW5nZWQocmF0ZSk7Cit9CisKK3ZvaWQgUmVtb3RlTWVk
aWFQbGF5ZXJNYW5hZ2VyOjp1cGRhdGVQcmVmZXJlbmNlcyhjb25zdCBTZXR0aW5ncyYgc2V0dGlu
Z3MpCit7CisgICAgYXV0byByZWdpc3RlckVuZ2luZSA9IFt0aGlzXShNZWRpYUVuZ2luZVJlZ2lz
dHJhciByZWdpc3RyYXIsIE1lZGlhUGxheWVyRW51bXM6Ok1lZGlhRW5naW5lSWRlbnRpZmllciBy
ZW1vdGVFbmdpbmVJZGVudGlmaWVyKSB7CisgICAgICAgIHJlZ2lzdHJhcihtYWtlVW5pcXVlPE1l
ZGlhUGxheWVyUmVtb3RlRmFjdG9yeT4ocmVtb3RlRW5naW5lSWRlbnRpZmllciwgKnRoaXMpKTsK
KyAgICB9OworCisgICAgUmVtb3RlTWVkaWFQbGF5ZXJTdXBwb3J0OjpzZXRSZWdpc3RlclJlbW90
ZVBsYXllckNhbGxiYWNrKHNldHRpbmdzLnVzZUdQVVByb2Nlc3NGb3JNZWRpYSgpID8gcmVnaXN0
ZXJFbmdpbmUgOiBzdGQ6OmZ1bmN0aW9uPHZvaWQoTWVkaWFFbmdpbmVSZWdpc3RyYXIsIE1lZGlh
UGxheWVyRW51bXM6Ok1lZGlhRW5naW5lSWRlbnRpZmllcik+IHsgfSk7Cit9CisKK0lQQzo6Q29u
bmVjdGlvbiYgUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyOjpncHVQcm9jZXNzQ29ubmVjdGlvbigp
IGNvbnN0Cit7CisgICAgcmV0dXJuIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmVuc3VyZUdQVVBy
b2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigpOworfQorCit9CisKKyNlbmRpZgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVNZWRpYVBsYXll
ck1hbmFnZXIuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlTWVk
aWFQbGF5ZXJNYW5hZ2VyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDdiNWIzZWM0MDkyZWE5ZjFlYjI4MWYzMTM3
NGU3MjdlMjI2NDQxYQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9HUFUvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyLmgKQEAgLTAsMCArMSw5MyBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKQorCisj
aW5jbHVkZSAiTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlSWRlbnRpZmllci5oIgorI2luY2x1ZGUg
Ik1lc3NhZ2VSZWNlaXZlci5oIgorI2luY2x1ZGUgIlNoYXJlZE1lbW9yeS5oIgorI2luY2x1ZGUg
IldlYlByb2Nlc3NTdXBwbGVtZW50LmgiCisjaW5jbHVkZSA8V2ViQ29yZS9NZWRpYVBsYXllci5o
PgorI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKK2NsYXNz
IE1lZGlhUGxheWVyUHJpdmF0ZUludGVyZmFjZTsKK2NsYXNzIFNldHRpbmdzOworfQorCituYW1l
c3BhY2UgV2ViS2l0IHsKKworY2xhc3MgTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOworY2xhc3Mg
V2ViUHJvY2VzczsKKworY2xhc3MgUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyIDogcHVibGljIFdl
YlByb2Nlc3NTdXBwbGVtZW50LCBwdWJsaWMgSVBDOjpNZXNzYWdlUmVjZWl2ZXIgeworICAgIFdU
Rl9NQUtFX0ZBU1RfQUxMT0NBVEVEOworcHVibGljOgorICAgIGV4cGxpY2l0IFJlbW90ZU1lZGlh
UGxheWVyTWFuYWdlcihXZWJQcm9jZXNzJik7CisgICAgflJlbW90ZU1lZGlhUGxheWVyTWFuYWdl
cigpOworCisgICAgc3RhdGljIGNvbnN0IGNoYXIqIHN1cHBsZW1lbnROYW1lKCk7CisKKyAgICB2
b2lkIHVwZGF0ZVByZWZlcmVuY2VzKGNvbnN0IFdlYkNvcmU6OlNldHRpbmdzJik7CisKKyAgICBJ
UEM6OkNvbm5lY3Rpb24mIGdwdVByb2Nlc3NDb25uZWN0aW9uKCkgY29uc3Q7CisKKyAgICB2b2lk
IGRlbGV0ZVJlbW90ZU1lZGlhUGxheWVyKE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZUlkZW50aWZp
ZXIpOworCitwcml2YXRlOgorICAgIHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpNZWRpYVBsYXll
clByaXZhdGVJbnRlcmZhY2U+IGNyZWF0ZVJlbW90ZU1lZGlhUGxheWVyKFdlYkNvcmU6Ok1lZGlh
UGxheWVyKiwgV2ViQ29yZTo6TWVkaWFQbGF5ZXJFbnVtczo6TWVkaWFFbmdpbmVJZGVudGlmaWVy
KTsKKworICAgIC8vIFdlYlByb2Nlc3NTdXBwbGVtZW50CisgICAgdm9pZCBpbml0aWFsaXplKGNv
bnN0IFdlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMmKSBmaW5hbDsKKworICAgIC8vIElQQzo6
TWVzc2FnZVJlY2VpdmVyCisgICAgdm9pZCBkaWRSZWNlaXZlTWVzc2FnZShJUEM6OkNvbm5lY3Rp
b24mLCBJUEM6OkRlY29kZXImKSBmaW5hbDsKKworICAgIC8vIE1lc3NhZ2VzOjpSZW1vdGVNZWRp
YVBsYXllck1hbmFnZXIKKyAgICB2b2lkIG5ldHdvcmtTdGF0ZUNoYW5nZWQoTWVkaWFQbGF5ZXJQ
cml2YXRlUmVtb3RlSWRlbnRpZmllciwgV2ViQ29yZTo6TWVkaWFQbGF5ZXI6Ok5ldHdvcmtTdGF0
ZSk7CisgICAgdm9pZCByZWFkeVN0YXRlQ2hhbmdlZChNZWRpYVBsYXllclByaXZhdGVSZW1vdGVJ
ZGVudGlmaWVyLCBXZWJDb3JlOjpNZWRpYVBsYXllcjo6UmVhZHlTdGF0ZSk7CisgICAgdm9pZCB2
b2x1bWVDaGFuZ2VkKFdlYktpdDo6TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlSWRlbnRpZmllciwg
ZG91YmxlKTsKKyAgICB2b2lkIG11dGVDaGFuZ2VkKFdlYktpdDo6TWVkaWFQbGF5ZXJQcml2YXRl
UmVtb3RlSWRlbnRpZmllciwgYm9vbCk7CisgICAgdm9pZCB0aW1lQ2hhbmdlZChXZWJLaXQ6Ok1l
ZGlhUGxheWVyUHJpdmF0ZVJlbW90ZUlkZW50aWZpZXIsIE1lZGlhVGltZSYmKTsKKyAgICB2b2lk
IGR1cmF0aW9uQ2hhbmdlZChXZWJLaXQ6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZUlkZW50aWZp
ZXIsIE1lZGlhVGltZSYmKTsKKyAgICB2b2lkIHJhdGVDaGFuZ2VkKFdlYktpdDo6TWVkaWFQbGF5
ZXJQcml2YXRlUmVtb3RlSWRlbnRpZmllciwgZG91YmxlKTsKKworICAgIGZyaWVuZCBjbGFzcyBN
ZWRpYVBsYXllclJlbW90ZUZhY3Rvcnk7CisgICAgdm9pZCBnZXRTdXBwb3J0ZWRUeXBlcyhXZWJD
b3JlOjpNZWRpYVBsYXllckVudW1zOjpNZWRpYUVuZ2luZUlkZW50aWZpZXIsIEhhc2hTZXQ8U3Ry
aW5nLCBBU0NJSUNhc2VJbnNlbnNpdGl2ZUhhc2g+Jik7CisgICAgV2ViQ29yZTo6TWVkaWFQbGF5
ZXI6OlN1cHBvcnRzVHlwZSBzdXBwb3J0c1R5cGVBbmRDb2RlY3MoV2ViQ29yZTo6TWVkaWFQbGF5
ZXJFbnVtczo6TWVkaWFFbmdpbmVJZGVudGlmaWVyLCBjb25zdCBXZWJDb3JlOjpNZWRpYUVuZ2lu
ZVN1cHBvcnRQYXJhbWV0ZXJzJik7CisgICAgYm9vbCBzdXBwb3J0c0tleVN5c3RlbShXZWJDb3Jl
OjpNZWRpYVBsYXllckVudW1zOjpNZWRpYUVuZ2luZUlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYg
a2V5U3lzdGVtLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlKTsKKyAgICBIYXNoU2V0PFJlZlB0cjxX
ZWJDb3JlOjpTZWN1cml0eU9yaWdpbj4+IG9yaWdpbnNJbk1lZGlhQ2FjaGUoV2ViQ29yZTo6TWVk
aWFQbGF5ZXJFbnVtczo6TWVkaWFFbmdpbmVJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmKTsKKyAg
ICB2b2lkIGNsZWFyTWVkaWFDYWNoZShXZWJDb3JlOjpNZWRpYVBsYXllckVudW1zOjpNZWRpYUVu
Z2luZUlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYsIFdhbGxUaW1lIG1vZGlmaWVkU2luY2UpOwor
ICAgIHZvaWQgY2xlYXJNZWRpYUNhY2hlRm9yT3JpZ2lucyhXZWJDb3JlOjpNZWRpYVBsYXllckVu
dW1zOjpNZWRpYUVuZ2luZUlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYsIGNvbnN0IEhhc2hTZXQ8
UmVmUHRyPFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luPj4mKTsKKworICAgIEhhc2hNYXA8TWVkaWFQ
bGF5ZXJQcml2YXRlUmVtb3RlSWRlbnRpZmllciwgV2Vha1B0cjxNZWRpYVBsYXllclByaXZhdGVS
ZW1vdGU+PiBtX3BsYXllcnM7CisgICAgV2ViUHJvY2VzcyYgbV9wcm9jZXNzOworfTsKKworfSAv
LyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVNZWRpYVBsYXllck1hbmFnZXIubWVzc2FnZXMuaW4g
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyTWFu
YWdlci5tZXNzYWdlcy5pbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mYTcxNjI3NWE1NDFkMzI3YjY0OWM3NWU4ZDU0
OTYwZmM3OTllNDU2Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L0dQVS9tZWRpYS9SZW1vdGVNZWRpYVBsYXllck1hbmFnZXIubWVzc2FnZXMuaW4KQEAgLTAsMCAr
MSwzNyBAQAorIyBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisjIGFyZSBtZXQ6CisjIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisjICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyMgMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorIyAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElU
UyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisjIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorIyBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
CisjIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IgSVRTIENPTlRSSUJVVE9SUworIyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisjIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisjIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUworIyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorIyBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorIyBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GCisjIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKworI2lmIEVOQUJM
RShWSURFTykKKworbWVzc2FnZXMgLT4gUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyIE5vdFJlZkNv
dW50ZWQgeworCisgICAgTmV0d29ya1N0YXRlQ2hhbmdlZChXZWJLaXQ6Ok1lZGlhUGxheWVyUHJp
dmF0ZVJlbW90ZUlkZW50aWZpZXIgaWQsIGVudW06dWludDhfdCBXZWJDb3JlOjpNZWRpYVBsYXll
ckVudW1zOjpOZXR3b3JrU3RhdGUgc3RhdGUpCisgICAgUmVhZHlTdGF0ZUNoYW5nZWQoV2ViS2l0
OjpNZWRpYVBsYXllclByaXZhdGVSZW1vdGVJZGVudGlmaWVyIGlkLCBlbnVtOnVpbnQ4X3QgV2Vi
Q29yZTo6TWVkaWFQbGF5ZXJFbnVtczo6UmVhZHlTdGF0ZSBzdGF0ZSkKKyAgICBWb2x1bWVDaGFu
Z2VkKFdlYktpdDo6TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlSWRlbnRpZmllciBpZCwgZG91Ymxl
IHZvbHVtZSkKKyAgICBNdXRlQ2hhbmdlZChXZWJLaXQ6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90
ZUlkZW50aWZpZXIgaWQsIGJvb2wgbXV0ZSkKKyAgICBUaW1lQ2hhbmdlZChXZWJLaXQ6Ok1lZGlh
UGxheWVyUHJpdmF0ZVJlbW90ZUlkZW50aWZpZXIgaWQsIE1lZGlhVGltZSB0aW1lKQorICAgIER1
cmF0aW9uQ2hhbmdlZChXZWJLaXQ6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZUlkZW50aWZpZXIg
aWQsIE1lZGlhVGltZSB0aW1lKQorICAgIFJhdGVDaGFuZ2VkKFdlYktpdDo6TWVkaWFQbGF5ZXJQ
cml2YXRlUmVtb3RlSWRlbnRpZmllciBpZCwgZG91YmxlIHJhdGUpCit9CisKKyNlbmRpZgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvVmlld1VwZGF0ZURpc3Bh
dGNoZXIuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvVmlld1VwZGF0ZURp
c3BhdGNoZXIuY3BwCmluZGV4IDVjZjQ0NDA3ZTNmYjNmNjdhMDM0NzAwM2QwNDc4ZDc0MTk5MzI0
M2YuLjFmYmNjNzk2ZmZiNjU5NWE0ZjM1YjUyOTBhOWMzYjlhNGRmMTg2NmYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1ZpZXdVcGRhdGVEaXNwYXRjaGVyLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9WaWV3VXBkYXRlRGlzcGF0
Y2hlci5jcHAKQEAgLTMxLDYgKzMxLDcgQEAKICNpbmNsdWRlICJWaWV3VXBkYXRlRGlzcGF0Y2hl
ck1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiV2ViUGFnZS5oIgogI2luY2x1ZGUgIldlYlByb2Nlc3Mu
aCIKKyNpbmNsdWRlIDxXZWJDb3JlL1BhZ2VJZGVudGlmaWVyLmg+CiAjaW5jbHVkZSA8d3RmL1J1
bkxvb3AuaD4KIAogbmFtZXNwYWNlIFdlYktpdCB7CkBAIC03NSw3ICs3Niw3IEBAIHZvaWQgVmll
d1VwZGF0ZURpc3BhdGNoZXI6OnZpc2libGVDb250ZW50UmVjdFVwZGF0ZShXZWJDb3JlOjpQYWdl
SWRlbnRpZmllciBwYWdlCiAKIHZvaWQgVmlld1VwZGF0ZURpc3BhdGNoZXI6OmRpc3BhdGNoVmlz
aWJsZUNvbnRlbnRSZWN0VXBkYXRlKCkKIHsKLSAgICBIYXNoTWFwPFBhZ2VJZGVudGlmaWVyLCBV
cGRhdGVEYXRhPiB1cGRhdGU7CisgICAgSGFzaE1hcDxXZWJDb3JlOjpQYWdlSWRlbnRpZmllciwg
VXBkYXRlRGF0YT4gdXBkYXRlOwogICAgIHsKICAgICAgICAgTG9ja0hvbGRlciBsb2NrZXIoJm1f
ZGF0YU11dGV4KTsKICAgICAgICAgdXBkYXRlID0gV1RGTW92ZShtX2xhdGVzdFVwZGF0ZSk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcCBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCmluZGV4IDczNWZl
YTRlZTEzYmU0MjVjMjM0YmU5MjEyMGZlOWU3YmNhMmQ1YzcuLmI5NjlkOWJhZTZiMWRhY2UzN2M3
Yzc5NmIyYTIwMmFkNjc1Mzg3ODQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJQYWdlL1dlYlBhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQ
YWdlL1dlYlBhZ2UuY3BwCkBAIC0zMTIsNiArMzEyLDEwIEBACiAjaW5jbHVkZSAiV2ViRGV2aWNl
T3JpZW50YXRpb25VcGRhdGVQcm92aWRlci5oIgogI2VuZGlmCiAKKyNpZiBFTkFCTEUoR1BVX1BS
T0NFU1MpCisjaW5jbHVkZSAiUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyLmgiCisjZW5kaWYKKwog
bmFtZXNwYWNlIFdlYktpdCB7CiB1c2luZyBuYW1lc3BhY2UgSlNDOwogdXNpbmcgbmFtZXNwYWNl
IFdlYkNvcmU7CkBAIC0zNjA2LDYgKzM2MTAsMTAgQEAgdm9pZCBXZWJQYWdlOjp1cGRhdGVQcmVm
ZXJlbmNlcyhjb25zdCBXZWJQcmVmZXJlbmNlc1N0b3JlJiBzdG9yZSkKIAogICAgIGlmIChtX2Ry
YXdpbmdBcmVhKQogICAgICAgICBtX2RyYXdpbmdBcmVhLT51cGRhdGVQcmVmZXJlbmNlcyhzdG9y
ZSk7CisKKyNpZiBFTkFCTEUoR1BVX1BST0NFU1MpCisgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9u
KCkuc3VwcGxlbWVudDxSZW1vdGVNZWRpYVBsYXllck1hbmFnZXI+KCktPnVwZGF0ZVByZWZlcmVu
Y2VzKHNldHRpbmdzKTsKKyNlbmRpZgogfQogCiAjaWYgRU5BQkxFKERBVEFfREVURUNUSU9OKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCmluZGV4IDA2YjA4ZDc4YmY1ODcz
NWU4MTc4MGZhMDQxYzBhODc0MWVmMDBlZjkuLjE1MTMyNzFhYzNmOTc1MTU2Zjk5NDJkYWZkZjBj
YzBhOGNkN2UzZDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9j
ZXNzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAKQEAg
LTE2NCw2ICsxNjQsMTAgQEAKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9SZW1vdGVJbnNwZWN0
b3IuaD4KICNlbmRpZgogCisjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKQorI2luY2x1ZGUgIlJlbW90
ZU1lZGlhUGxheWVyTWFuYWdlci5oIgorI2VuZGlmCisKIC8vIFRoaXMgc2hvdWxkIGJlIGxlc3Mg
dGhhbiBwbHVnSW5BdXRvU3RhcnRFeHBpcmF0aW9uVGltZVRocmVzaG9sZCBpbiBQbHVnSW5BdXRv
U3RhcnRQcm92aWRlci4KIHN0YXRpYyBjb25zdCBTZWNvbmRzIHBsdWdJbkF1dG9TdGFydEV4cGly
YXRpb25UaW1lVXBkYXRlVGhyZXNob2xkIHsgMjkgKiAyNCAqIDYwICogNjAgfTsKIApAQCAtMjIx
LDcgKzIyNSwxMSBAQCBXZWJQcm9jZXNzOjpXZWJQcm9jZXNzKCkKICNpZiBQTEFURk9STShDT0NP
QSkgJiYgRU5BQkxFKE1FRElBX1NUUkVBTSkKICAgICBhZGRTdXBwbGVtZW50PFVzZXJNZWRpYUNh
cHR1cmVNYW5hZ2VyPigpOwogI2VuZGlmCi0gICAgCisKKyNpZiBFTkFCTEUoR1BVX1BST0NFU1Mp
CisgICAgYWRkU3VwcGxlbWVudDxSZW1vdGVNZWRpYVBsYXllck1hbmFnZXI+KCk7CisjZW5kaWYK
KwogICAgIEdpZ2FjYWdlOjpmb3JiaWREaXNhYmxpbmdQcmltaXRpdmVHaWdhY2FnZSgpOwogfQog
Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>385606</attachid>
            <date>2019-12-13 08:44:09 -0800</date>
            <delta_ts>2019-12-13 09:50:00 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-205094-20191213084405.patch</filename>
            <type>text/plain</type>
            <size>167835</size>
            <attacher name="Eric Carlson">eric.carlson</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjUzMzk3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZTk0ZmQ0ZWMxNDg4MjAx
YTM0ZjM1Nzk2MWUwOTg5OWZmNzIyYmNmNS4uNGEyNzIyNWMwNjkyM2ZiMWMxZjBiZDkwZmI0ZDkw
OWU1YzdlNWRkMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEwNyBAQAorMjAxOS0xMi0xMCAgRXJp
YyBDYXJsc29uICA8ZXJpYy5jYXJsc29uQGFwcGxlLmNvbT4KKworICAgICAgICBBZGQgaW5mcmFz
dHJ1Y3R1cmUgbmVlZGVkIGZvciBwbGF5aW5nIG1lZGlhIHBsYXllciBpbiB0aGUgR1BVIHByb2Nl
c3MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwNTA5
NAorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNTc4MTUzOTM+CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLCBubyBmdW5jdGlvbmFs
IGNoYW5nZSB5ZXQuCisKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2o6CisgICAgICAgICogcGxhdGZvcm0vQ29udGVudFR5cGUuaDoKKyAgICAgICAgKFdlYkNvcmU6
OkNvbnRlbnRUeXBlOjplbmNvZGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudFR5
cGU6OmRlY29kZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6bnVsbExvZ2dlcik6CisgICAgICAgIChXZWJDb3JlOjpudWxs
Q29udGVudFR5cGVWZWN0b3IpOgorICAgICAgICAoV2ViQ29yZTo6bXV0YWJsZUluc3RhbGxlZE1l
ZGlhRW5naW5lc1ZlY3Rvcik6CisgICAgICAgIChXZWJDb3JlOjpyZWdpc3RlclJlbW90ZVBsYXll
ckNhbGxiYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbW90ZU1lZGlhUGxheWVyU3VwcG9ydDo6
c2V0UmVnaXN0ZXJSZW1vdGVQbGF5ZXJDYWxsYmFjayk6CisgICAgICAgIChXZWJDb3JlOjpidWls
ZE1lZGlhRW5naW5lc1ZlY3Rvcik6CisgICAgICAgIChXZWJDb3JlOjppbnN0YWxsZWRNZWRpYUVu
Z2luZXMpOgorICAgICAgICAoV2ViQ29yZTo6YWRkTWVkaWFFbmdpbmUpOgorICAgICAgICAoV2Vi
Q29yZTo6TWVkaWFQbGF5ZXI6Om1lZGlhRW5naW5lKToKKyAgICAgICAgKFdlYkNvcmU6OmJlc3RN
ZWRpYUVuZ2luZUZvclN1cHBvcnRQYXJhbWV0ZXJzKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlh
UGxheWVyOjpuZXh0TWVkaWFFbmdpbmUpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXI6
OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllcjo6TWVkaWFQbGF5ZXIpOgor
ICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXI6Om5leHRCZXN0TWVkaWFFbmdpbmUpOgorICAg
ICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXI6OmxvYWRXaXRoTmV4dE1lZGlhRW5naW5lKToKKyAg
ICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyOjpnZXRTdXBwb3J0ZWRUeXBlcyk6CisgICAgICAg
IChXZWJDb3JlOjpNZWRpYVBsYXllcjo6b3JpZ2luc0luTWVkaWFDYWNoZSk6CisgICAgICAgIChX
ZWJDb3JlOjpNZWRpYVBsYXllcjo6Y2xlYXJNZWRpYUNhY2hlKToKKyAgICAgICAgKFdlYkNvcmU6
Ok1lZGlhUGxheWVyOjpjbGVhck1lZGlhQ2FjaGVGb3JPcmlnaW5zKToKKyAgICAgICAgKFdlYkNv
cmU6Ok1lZGlhUGxheWVyOjpzdXBwb3J0c0tleVN5c3RlbSk6CisgICAgICAgIChXZWJDb3JlOjpN
ZWRpYVBsYXllcjo6bmV0d29ya1N0YXRlQ2hhbmdlZCk6CisgICAgICAgIChXZWJDb3JlOjpuZXh0
TWVkaWFFbmdpbmUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXI6Om5l
eHRCZXN0TWVkaWFFbmdpbmUgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL01lZGlhUGxheWVyLmg6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYUVuZ2luZVN1cHBv
cnRQYXJhbWV0ZXJzOjplbmNvZGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFFbmdp
bmVTdXBwb3J0UGFyYW1ldGVyczo6ZGVjb2RlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxh
eWVyRmFjdG9yeTo6fk1lZGlhUGxheWVyRmFjdG9yeSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRp
YVBsYXllckZhY3Rvcnk6Om9yaWdpbnNJbk1lZGlhQ2FjaGUgY29uc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6TWVkaWFQbGF5ZXJGYWN0b3J5OjpjbGVhck1lZGlhQ2FjaGUgY29uc3QpOgorICAgICAg
ICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJGYWN0b3J5OjpjbGVhck1lZGlhQ2FjaGVGb3JPcmlnaW5z
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyRmFjdG9yeTo6c3VwcG9ydHNL
ZXlTeXN0ZW0gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXI6OnNldFZpZGVv
RnVsbHNjcmVlbkxheWVyKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVy
OjpzaXplIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyOjpp
bnZhbGlkVGltZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllcjo6cGxh
dGZvcm1Wb2x1bWVDb25maWd1cmF0aW9uUmVxdWlyZWQgY29uc3QpOiBEZWxldGVkLgorICAgICAg
ICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXI6OmNvbnRlbnRNSU1FVHlwZSBjb25zdCk6IERlbGV0ZWQu
CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllcjo6Y29udGVudFR5cGVDb2RlY3MgY29uc3Qp
OiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXI6OmNvbnRlbnRNSU1FVHlw
ZVdhc0luZmVycmVkRnJvbUV4dGVuc2lvbiBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJD
b3JlOjpNZWRpYVBsYXllcjo6bWVkaWFQbGF5ZXJMb2dJZGVudGlmaWVyKTogRGVsZXRlZC4KKyAg
ICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyOjpyZW5kZXJpbmdDYW5CZUFjY2VsZXJhdGVkIGNv
bnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyOjpyZW5kZXJpbmdN
b2RlQ2hhbmdlZCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXll
cjo6YWNjZWxlcmF0ZWRDb21wb3NpdGluZ0VuYWJsZWQpOiBEZWxldGVkLgorICAgICAgICAoV2Vi
Q29yZTo6TWVkaWFQbGF5ZXI6OmFjdGl2ZVNvdXJjZUJ1ZmZlcnNDaGFuZ2VkKTogRGVsZXRlZC4K
KyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyOjpwbGF5ZXJDb250ZW50Qm94UmVjdCBjb25z
dCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllcjo6cGxheWVyQ29udGVu
dHNTY2FsZSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllcjo6
c2hvdWxkVXNlUGVyc2lzdGVudENhY2hlIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNv
cmU6Ok1lZGlhUGxheWVyOjptZWRpYUNhY2hlRGlyZWN0b3J5IGNvbnN0KTogRGVsZXRlZC4KKyAg
ICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyOjppc1ZpZGVvUGxheWVyIGNvbnN0KTogRGVsZXRl
ZC4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyOjptZWRpYUVuZ2luZVVwZGF0ZWQpOiBE
ZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXI6OmlzTG9vcGluZyBjb25zdCk6
IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllcjo6cmVxdWVzdEluc3RhbGxN
aXNzaW5nUGx1Z2lucyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllcjo6
Y2xpZW50IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9NZWRp
YVBsYXllckVuZ2luZUlkZW50aWZpZXJzLmg6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL0NvbnRlbnRUeXBlLmguCisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllckVuZ2lu
ZUlkZW50aWZpZXJzOjphdkZvdW5kYXRpb25FbmdpbmVJZGVudGlmaWVyKToKKyAgICAgICAgKFdl
YkNvcmU6Ok1lZGlhUGxheWVyRW5naW5lSWRlbnRpZmllcnM6OmF2Rm91bmRhdGlvbk1TRUVuZ2lu
ZUlkZW50aWZpZXIpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJFbmdpbmVJZGVudGlm
aWVyczo6YXZGb3VuZGF0aW9uTWVkaWFTdHJlYW1FbmdpbmVJZGVudGlmaWVyKToKKyAgICAgICAg
KFdlYkNvcmU6Ok1lZGlhUGxheWVyRW5naW5lSWRlbnRpZmllcnM6OkdTdHJlYW1lck1lZGlhRW5n
aW5lSWRlbnRpZmllcik6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllckVuZ2luZUlkZW50
aWZpZXJzOjpHU3RyZWFtZXJNU0VNZWRpYUVuZ2luZUlkZW50aWZpZXIpOgorICAgICAgICAoV2Vi
Q29yZTo6TWVkaWFQbGF5ZXJFbmdpbmVJZGVudGlmaWVyczo6aG9sZVB1bmNoTWVkaWFFbmdpbmVJ
ZGVudGlmaWVyKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyRW5naW5lSWRlbnRpZmll
cnM6Ok1lZGlhRm91bmRhdGlvbk1lZGlhRW5naW5lSWRlbnRpZmllcik6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvUGxhdGZvcm1UaW1lUmFuZ2VzLmg6CisgICAgICAgIChXZWJDb3JlOjpQ
bGF0Zm9ybVRpbWVSYW5nZXM6OlBsYXRmb3JtVGltZVJhbmdlcyk6IERlbGV0ZWQuCisgICAgICAg
IChXZWJDb3JlOjpQbGF0Zm9ybVRpbWVSYW5nZXM6Omxlbmd0aCBjb25zdCk6IERlbGV0ZWQuCisg
ICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybVRpbWVSYW5nZXM6OlJhbmdlOjpSYW5nZSk6IERlbGV0
ZWQuCisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybVRpbWVSYW5nZXM6OlJhbmdlOjppc1BvaW50
SW5SYW5nZSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybVRpbWVS
YW5nZXM6OlJhbmdlOjppc092ZXJsYXBwaW5nUmFuZ2UgY29uc3QpOiBEZWxldGVkLgorICAgICAg
ICAoV2ViQ29yZTo6UGxhdGZvcm1UaW1lUmFuZ2VzOjpSYW5nZTo6aXNDb250aWd1b3VzV2l0aFJh
bmdlIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtVGltZVJhbmdl
czo6UmFuZ2U6OnVuaW9uV2l0aE92ZXJsYXBwaW5nT3JDb250aWd1b3VzUmFuZ2UgY29uc3QpOiBE
ZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1UaW1lUmFuZ2VzOjpSYW5nZTo6aXNC
ZWZvcmVSYW5nZSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
YXZmb3VuZGF0aW9uL2NmL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbkNGLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbkNGOjpyZWdpc3Rl
ck1lZGlhRW5naW5lKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24v
b2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLmg6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3Vu
ZGF0aW9uT2JqQy5tbToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUFWRm91
bmRhdGlvbk9iakM6OnJlZ2lzdGVyTWVkaWFFbmdpbmUpOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZG
T2JqQy5tbToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNl
QVZGT2JqQzo6cmVnaXN0ZXJNZWRpYUVuZ2luZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpD
Lm1tOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZP
YmpDOjpyZWdpc3Rlck1lZGlhRW5naW5lKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9n
c3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6cmVnaXN0ZXJNZWRpYUVuZ2luZSk6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL21zZS9NZWRpYVBsYXllclByaXZh
dGVHU3RyZWFtZXJNU0UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRl
R1N0cmVhbWVyTVNFOjpyZWdpc3Rlck1lZGlhRW5naW5lKToKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9ob2xlcHVuY2gvTWVkaWFQbGF5ZXJQcml2YXRlSG9sZVB1bmNoLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUhvbGVQdW5jaDo6cmVnaXN0ZXJNZWRpYUVu
Z2luZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL01lZGlhUGxheWVyUHJpdmF0
ZU1lZGlhRm91bmRhdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZh
dGVNZWRpYUZvdW5kYXRpb246OnJlZ2lzdGVyTWVkaWFFbmdpbmUpOgorICAgICAgICAqIHBsYXRm
b3JtL21vY2svbWVkaWFzb3VyY2UvTW9ja01lZGlhUGxheWVyTWVkaWFTb3VyY2UuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6TW9ja01lZGlhUGxheWVyTWVkaWFTb3VyY2U6OnJlZ2lzdGVyTWVkaWFF
bmdpbmUpOgorCiAyMDE5LTEyLTExICBFcmljIENhcmxzb24gIDxlcmljLmNhcmxzb25AYXBwbGUu
Y29tPgogCiAgICAgICAgIEFkZCBlbmNvZGVycyBmb3IgTWVkaWFQbGF5ZXJFbnVtIGVudW1zCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdl
TG9nCmluZGV4IDc1M2ZkODg3YmFlMDM4MjVmM2ZlYmM0NjAxNTM5Yzg1ODQyNTQ0MjMuLjMyZWI1
NjI1NDUyYmU5NWIzMWI0MTlhMGFlMzk0N2M3NjNlNGYwZmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEs
MTg3IEBACisyMDE5LTEyLTEwICBFcmljIENhcmxzb24gIDxlcmljLmNhcmxzb25AYXBwbGUuY29t
PgorCisgICAgICAgIEFkZCBpbmZyYXN0cnVjdHVyZSBuZWVkZWQgZm9yIHBsYXlpbmcgbWVkaWEg
cGxheWVyIGluIHRoZSBHUFUgcHJvY2VzcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MjA1MDk0CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS81NzgxNTM5
Mz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIERl
cml2ZWRTb3VyY2VzLWlucHV0LnhjZmlsZWxpc3Q6CisgICAgICAgICogRGVyaXZlZFNvdXJjZXMt
b3V0cHV0LnhjZmlsZWxpc3Q6CisgICAgICAgICogRGVyaXZlZFNvdXJjZXMubWFrZToKKyAgICAg
ICAgKiBHUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwOgorICAgICAgICAo
V2ViS2l0OjpHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpHUFVDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzKToKKyAgICAgICAgKFdlYktpdDo6R1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6fkdQVUNv
bm5lY3Rpb25Ub1dlYlByb2Nlc3MpOgorICAgICAgICAoV2ViS2l0OjpHUFVDb25uZWN0aW9uVG9X
ZWJQcm9jZXNzOjpkaWRSZWNlaXZlTWVzc2FnZSk6CisgICAgICAgIChXZWJLaXQ6OkdQVUNvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3M6OmRpZFJlY2VpdmVTeW5jTWVzc2FnZSk6CisgICAgICAgICogR1BV
UHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmg6CisgICAgICAgICogR1BVUHJvY2Vz
cy9tZWRpYS9SZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eS5jcHA6IEFkZGVkLgorICAgICAg
ICAoV2ViS2l0OjpudWxsTG9nZ2VyKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTWVkaWFQbGF5
ZXJNYW5hZ2VyUHJveHk6OlBsYXllclByb3h5OjpQbGF5ZXJQcm94eSk6CisgICAgICAgIChXZWJL
aXQ6OlJlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5OjpQbGF5ZXJQcm94eTo6flBsYXllclBy
b3h5KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHk6OlJl
bW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTWVk
aWFQbGF5ZXJNYW5hZ2VyUHJveHk6On5SZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eSk6Cisg
ICAgICAgIChXZWJLaXQ6OlJlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5OjpjcmVhdGVNZWRp
YVBsYXllcik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5
OjpnZXRTdXBwb3J0ZWRUeXBlcyk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZU1lZGlhUGxheWVy
TWFuYWdlclByb3h5OjpzdXBwb3J0c1R5cGUpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVNZWRp
YVBsYXllck1hbmFnZXJQcm94eTo6b3JpZ2luc0luTWVkaWFDYWNoZSk6CisgICAgICAgIChXZWJL
aXQ6OlJlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5OjpjbGVhck1lZGlhQ2FjaGUpOgorICAg
ICAgICAoV2ViS2l0OjpSZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eTo6Y2xlYXJNZWRpYUNh
Y2hlRm9yT3JpZ2lucyk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZU1lZGlhUGxheWVyTWFuYWdl
clByb3h5OjpzdXBwb3J0c0tleVN5c3RlbSk6CisgICAgICAgICogR1BVUHJvY2Vzcy9tZWRpYS9S
ZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eS5oOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6
UmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHk6OndlYlByb2Nlc3NDb25uZWN0aW9uIGNvbnN0
KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHk6OmRpZFJl
Y2VpdmVNZXNzYWdlRnJvbVdlYlByb2Nlc3MpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVNZWRp
YVBsYXllck1hbmFnZXJQcm94eTo6ZGlkUmVjZWl2ZVN5bmNNZXNzYWdlRnJvbVdlYlByb2Nlc3Mp
OgorICAgICAgICAqIEdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJv
eHkubWVzc2FnZXMuaW46IEFkZGVkLgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0L21lc3NhZ2Vz
LnB5OgorICAgICAgICAqIFNvdXJjZXMudHh0OgorICAgICAgICAqIFNvdXJjZXNDb2NvYS50eHQ6
CisgICAgICAgICogV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICog
V2ViUHJvY2Vzcy9HUFUvbWVkaWEvTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlLmNwcDogQWRkZWQu
CisgICAgICAgIChXZWJLaXQ6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6TWVkaWFQbGF5ZXJQ
cml2YXRlUmVtb3RlKToKKyAgICAgICAgKFdlYktpdDo6TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3Rl
Ojp+TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlKToKKyAgICAgICAgKFdlYktpdDo6TWVkaWFQbGF5
ZXJQcml2YXRlUmVtb3RlOjpNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OmxvYWQpOgorICAgICAg
ICAoV2ViS2l0OjpNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OmxvYWQpOgorICAgICAgICAoV2Vi
S2l0OjpNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OmNhbmNlbExvYWQpOgorICAgICAgICAoV2Vi
S2l0OjpNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OnByZXBhcmVUb1BsYXkpOgorICAgICAgICAo
V2ViS2l0OjpNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OnBsYXRmb3JtTGF5ZXIgY29uc3QpOgor
ICAgICAgICAoV2ViS2l0OjpNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OnNldFZpZGVvRnVsbHNj
cmVlbkxheWVyKToKKyAgICAgICAgKFdlYktpdDo6TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjp1
cGRhdGVWaWRlb0Z1bGxzY3JlZW5JbmxpbmVJbWFnZSk6CisgICAgICAgIChXZWJLaXQ6Ok1lZGlh
UGxheWVyUHJpdmF0ZVJlbW90ZTo6c2V0VmlkZW9GdWxsc2NyZWVuRnJhbWUpOgorICAgICAgICAo
V2ViS2l0OjpNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OnNldFZpZGVvRnVsbHNjcmVlbkdyYXZp
dHkpOgorICAgICAgICAoV2ViS2l0OjpNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OnNldFZpZGVv
RnVsbHNjcmVlbk1vZGUpOgorICAgICAgICAoV2ViS2l0OjpNZWRpYVBsYXllclByaXZhdGVSZW1v
dGU6OnZpZGVvRnVsbHNjcmVlblN0YW5kYnlDaGFuZ2VkKToKKyAgICAgICAgKFdlYktpdDo6TWVk
aWFQbGF5ZXJQcml2YXRlUmVtb3RlOjphY2Nlc3NMb2cgY29uc3QpOgorICAgICAgICAoV2ViS2l0
OjpNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OmVycm9yTG9nIGNvbnN0KToKKyAgICAgICAgKFdl
YktpdDo6TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpwbGF0Zm9ybUVycm9yQ29kZSBjb25zdCk6
CisgICAgICAgIChXZWJLaXQ6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6cGxheSk6CisgICAg
ICAgIChXZWJLaXQ6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6cGF1c2UpOgorICAgICAgICAo
V2ViS2l0OjpNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OnNldEJ1ZmZlcmluZ1BvbGljeSk6Cisg
ICAgICAgIChXZWJLaXQ6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6c3VwcG9ydHNQaWN0dXJl
SW5QaWN0dXJlIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6TWVkaWFQbGF5ZXJQcml2YXRlUmVt
b3RlOjpzdXBwb3J0c0Z1bGxzY3JlZW4gY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpNZWRpYVBs
YXllclByaXZhdGVSZW1vdGU6OnN1cHBvcnRzU2Nhbm5pbmcgY29uc3QpOgorICAgICAgICAoV2Vi
S2l0OjpNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OnJlcXVpcmVzSW1tZWRpYXRlQ29tcG9zaXRp
bmcgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OmNh
blNhdmVNZWRpYURhdGEgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpNZWRpYVBsYXllclByaXZh
dGVSZW1vdGU6Om5hdHVyYWxTaXplIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6TWVkaWFQbGF5
ZXJQcml2YXRlUmVtb3RlOjpoYXNWaWRlbyBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6Ok1lZGlh
UGxheWVyUHJpdmF0ZVJlbW90ZTo6aGFzQXVkaW8gY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpN
ZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OnNldFZpc2libGUpOgorICAgICAgICAoV2ViS2l0OjpN
ZWRpYVBsYXllclByaXZhdGVSZW1vdGU6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6ZHVyYXRp
b25NZWRpYVRpbWUgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpNZWRpYVBsYXllclByaXZhdGVS
ZW1vdGU6OmN1cnJlbnRNZWRpYVRpbWUgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpNZWRpYVBs
YXllclByaXZhdGVSZW1vdGU6OmdldFN0YXJ0RGF0ZSBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6
Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6c2Vlayk6CisgICAgICAgIChXZWJLaXQ6Ok1lZGlh
UGxheWVyUHJpdmF0ZVJlbW90ZTo6c2Vla1dpdGhUb2xlcmFuY2UpOgorICAgICAgICAoV2ViS2l0
OjpNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OnNlZWtpbmcgY29uc3QpOgorICAgICAgICAoV2Vi
S2l0OjpNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OnN0YXJ0VGltZSBjb25zdCk6CisgICAgICAg
IChXZWJLaXQ6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6c2V0UmF0ZURvdWJsZSk6CisgICAg
ICAgIChXZWJLaXQ6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6cmF0ZSBjb25zdCk6CisgICAg
ICAgIChXZWJLaXQ6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6c2V0UHJlc2VydmVzUGl0Y2gp
OgorICAgICAgICAoV2ViS2l0OjpNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OnBhdXNlZCBjb25z
dCk6CisgICAgICAgIChXZWJLaXQ6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6c2V0Vm9sdW1l
RG91YmxlKToKKyAgICAgICAgKFdlYktpdDo6TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpzZXRN
dXRlZCk6CisgICAgICAgIChXZWJLaXQ6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6aGFzQ2xv
c2VkQ2FwdGlvbnMgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpNZWRpYVBsYXllclByaXZhdGVS
ZW1vdGU6OnNldENsb3NlZENhcHRpb25zVmlzaWJsZSk6CisgICAgICAgIChXZWJLaXQ6Ok1lZGlh
UGxheWVyUHJpdmF0ZVJlbW90ZTo6bWF4RmFzdEZvcndhcmRSYXRlIGNvbnN0KToKKyAgICAgICAg
KFdlYktpdDo6TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjptaW5GYXN0UmV2ZXJzZVJhdGUgY29u
c3QpOgorICAgICAgICAoV2ViS2l0OjpNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6Om5ldHdvcmtT
dGF0ZSBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6
cmVhZHlTdGF0ZSBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6Ok1lZGlhUGxheWVyUHJpdmF0ZVJl
bW90ZTo6c2Vla2FibGUgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpNZWRpYVBsYXllclByaXZh
dGVSZW1vdGU6OmJ1ZmZlcmVkIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6TWVkaWFQbGF5ZXJQ
cml2YXRlUmVtb3RlOjptYXhNZWRpYVRpbWVTZWVrYWJsZSBjb25zdCk6CisgICAgICAgIChXZWJL
aXQ6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6bWluTWVkaWFUaW1lU2Vla2FibGUgY29uc3Qp
OgorICAgICAgICAoV2ViS2l0OjpNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OnNlZWthYmxlVGlt
ZVJhbmdlc0xhc3RNb2RpZmllZFRpbWUgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpNZWRpYVBs
YXllclByaXZhdGVSZW1vdGU6OmxpdmVVcGRhdGVJbnRlcnZhbCBjb25zdCk6CisgICAgICAgIChX
ZWJLaXQ6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6dG90YWxCeXRlcyBjb25zdCk6CisgICAg
ICAgIChXZWJLaXQ6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6ZGlkTG9hZGluZ1Byb2dyZXNz
IGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpzZXRT
aXplKToKKyAgICAgICAgKFdlYktpdDo6TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpwYWludCk6
CisgICAgICAgIChXZWJLaXQ6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6cGFpbnRDdXJyZW50
RnJhbWVJbkNvbnRleHQpOgorICAgICAgICAoV2ViS2l0OjpNZWRpYVBsYXllclByaXZhdGVSZW1v
dGU6OmNvcHlWaWRlb1RleHR1cmVUb1BsYXRmb3JtVGV4dHVyZSk6CisgICAgICAgIChXZWJLaXQ6
Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6bmF0aXZlSW1hZ2VGb3JDdXJyZW50VGltZSk6Cisg
ICAgICAgIChXZWJLaXQ6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6c2V0UHJlbG9hZCk6Cisg
ICAgICAgIChXZWJLaXQ6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6aGFzQXZhaWxhYmxlVmlk
ZW9GcmFtZSBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90
ZTo6Y2FuTG9hZFBvc3RlciBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6Ok1lZGlhUGxheWVyUHJp
dmF0ZVJlbW90ZTo6c2V0UG9zdGVyKToKKyAgICAgICAgKFdlYktpdDo6TWVkaWFQbGF5ZXJQcml2
YXRlUmVtb3RlOjplbnRlckZ1bGxzY3JlZW4pOgorICAgICAgICAoV2ViS2l0OjpNZWRpYVBsYXll
clByaXZhdGVSZW1vdGU6OmV4aXRGdWxsc2NyZWVuKToKKyAgICAgICAgKFdlYktpdDo6TWVkaWFQ
bGF5ZXJQcml2YXRlUmVtb3RlOjp3aXJlbGVzc1BsYXliYWNrVGFyZ2V0TmFtZSBjb25zdCk6Cisg
ICAgICAgIChXZWJLaXQ6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6d2lyZWxlc3NQbGF5YmFj
a1RhcmdldFR5cGUgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpNZWRpYVBsYXllclByaXZhdGVS
ZW1vdGU6OndpcmVsZXNzVmlkZW9QbGF5YmFja0Rpc2FibGVkIGNvbnN0KToKKyAgICAgICAgKFdl
YktpdDo6TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpzZXRXaXJlbGVzc1ZpZGVvUGxheWJhY2tE
aXNhYmxlZCk6CisgICAgICAgIChXZWJLaXQ6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6Y2Fu
UGxheVRvV2lyZWxlc3NQbGF5YmFja1RhcmdldCBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6Ok1l
ZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6aXNDdXJyZW50UGxheWJhY2tUYXJnZXRXaXJlbGVzcyBj
b25zdCk6CisgICAgICAgIChXZWJLaXQ6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6c2V0V2ly
ZWxlc3NQbGF5YmFja1RhcmdldCk6CisgICAgICAgIChXZWJLaXQ6Ok1lZGlhUGxheWVyUHJpdmF0
ZVJlbW90ZTo6c2V0U2hvdWxkUGxheVRvUGxheWJhY2tUYXJnZXQpOgorICAgICAgICAoV2ViS2l0
OjpNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OmNhbkVudGVyRnVsbHNjcmVlbiBjb25zdCk6Cisg
ICAgICAgIChXZWJLaXQ6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6c3VwcG9ydHNBY2NlbGVy
YXRlZFJlbmRlcmluZyBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6Ok1lZGlhUGxheWVyUHJpdmF0
ZVJlbW90ZTo6YWNjZWxlcmF0ZWRSZW5kZXJpbmdTdGF0ZUNoYW5nZWQpOgorICAgICAgICAoV2Vi
S2l0OjpNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OnNob3VsZE1haW50YWluQXNwZWN0UmF0aW8g
Y29uc3QpOgorICAgICAgICAoV2ViS2l0OjpNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OnNldFNo
b3VsZE1haW50YWluQXNwZWN0UmF0aW8pOgorICAgICAgICAoV2ViS2l0OjpNZWRpYVBsYXllclBy
aXZhdGVSZW1vdGU6Omhhc1NpbmdsZVNlY3VyaXR5T3JpZ2luIGNvbnN0KToKKyAgICAgICAgKFdl
YktpdDo6TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpkaWRQYXNzQ09SU0FjY2Vzc0NoZWNrIGNv
bnN0KToKKyAgICAgICAgKFdlYktpdDo6TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjp3b3VsZFRh
aW50T3JpZ2luIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6TWVkaWFQbGF5ZXJQcml2YXRlUmVt
b3RlOjptb3ZpZUxvYWRUeXBlIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6TWVkaWFQbGF5ZXJQ
cml2YXRlUmVtb3RlOjpwcmVwYXJlRm9yUmVuZGVyaW5nKToKKyAgICAgICAgKFdlYktpdDo6TWVk
aWFQbGF5ZXJQcml2YXRlUmVtb3RlOjptZWRpYVRpbWVGb3JUaW1lVmFsdWUgY29uc3QpOgorICAg
ICAgICAoV2ViS2l0OjpNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6Om1heGltdW1EdXJhdGlvblRv
Q2FjaGVNZWRpYVRpbWUgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpNZWRpYVBsYXllclByaXZh
dGVSZW1vdGU6OmRlY29kZWRGcmFtZUNvdW50IGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6TWVk
aWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpkcm9wcGVkRnJhbWVDb3VudCBjb25zdCk6CisgICAgICAg
IChXZWJLaXQ6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6YXVkaW9EZWNvZGVkQnl0ZUNvdW50
IGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjp2aWRl
b0RlY29kZWRCeXRlQ291bnQgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpNZWRpYVBsYXllclBy
aXZhdGVSZW1vdGU6OnNldFByaXZhdGVCcm93c2luZ01vZGUpOgorICAgICAgICAoV2ViS2l0OjpN
ZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OmVuZ2luZURlc2NyaXB0aW9uIGNvbnN0KToKKyAgICAg
ICAgKFdlYktpdDo6TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjphdWRpb1NvdXJjZVByb3ZpZGVy
KToKKyAgICAgICAgKFdlYktpdDo6TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpjcmVhdGVTZXNz
aW9uKToKKyAgICAgICAgKFdlYktpdDo6TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpzZXRDRE1T
ZXNzaW9uKToKKyAgICAgICAgKFdlYktpdDo6TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjprZXlB
ZGRlZCk6CisgICAgICAgIChXZWJLaXQ6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6Y2RtSW5z
dGFuY2VBdHRhY2hlZCk6CisgICAgICAgIChXZWJLaXQ6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90
ZTo6Y2RtSW5zdGFuY2VEZXRhY2hlZCk6CisgICAgICAgIChXZWJLaXQ6Ok1lZGlhUGxheWVyUHJp
dmF0ZVJlbW90ZTo6YXR0ZW1wdFRvRGVjcnlwdFdpdGhJbnN0YW5jZSk6CisgICAgICAgIChXZWJL
aXQ6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6d2FpdGluZ0ZvcktleSBjb25zdCk6CisgICAg
ICAgIChXZWJLaXQ6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6cmVxdWlyZXNUZXh0VHJhY2tS
ZXByZXNlbnRhdGlvbiBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6Ok1lZGlhUGxheWVyUHJpdmF0
ZVJlbW90ZTo6c2V0VGV4dFRyYWNrUmVwcmVzZW50YXRpb24pOgorICAgICAgICAoV2ViS2l0OjpN
ZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OnN5bmNUZXh0VHJhY2tCb3VuZHMpOgorICAgICAgICAo
V2ViS2l0OjpNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OnRyYWNrc0NoYW5nZWQpOgorICAgICAg
ICAoV2ViS2l0OjpNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OnNpbXVsYXRlQXVkaW9JbnRlcnJ1
cHRpb24pOgorICAgICAgICAoV2ViS2l0OjpNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OmJlZ2lu
U2ltdWxhdGVkSERDUEVycm9yKToKKyAgICAgICAgKFdlYktpdDo6TWVkaWFQbGF5ZXJQcml2YXRl
UmVtb3RlOjplbmRTaW11bGF0ZWRIRENQRXJyb3IpOgorICAgICAgICAoV2ViS2l0OjpNZWRpYVBs
YXllclByaXZhdGVSZW1vdGU6Omxhbmd1YWdlT2ZQcmltYXJ5QXVkaW9UcmFjayBjb25zdCk6Cisg
ICAgICAgIChXZWJLaXQ6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6ZXh0cmFNZW1vcnlDb3N0
IGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpmaWxl
U2l6ZSBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6
ZW5kZWQgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6
OnZpZGVvUGxheWJhY2tRdWFsaXR5TWV0cmljcyk6CisgICAgICAgIChXZWJLaXQ6Ok1lZGlhUGxh
eWVyUHJpdmF0ZVJlbW90ZTo6bm90aWZ5VHJhY2tNb2RlQ2hhbmdlZCk6CisgICAgICAgIChXZWJL
aXQ6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6bm90aWZ5QWN0aXZlU291cmNlQnVmZmVyc0No
YW5nZWQpOgorICAgICAgICAoV2ViS2l0OjpNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OnNldFNo
b3VsZERpc2FibGVTbGVlcCk6CisgICAgICAgIChXZWJLaXQ6Ok1lZGlhUGxheWVyUHJpdmF0ZVJl
bW90ZTo6YXBwbGljYXRpb25XaWxsUmVzaWduQWN0aXZlKToKKyAgICAgICAgKFdlYktpdDo6TWVk
aWFQbGF5ZXJQcml2YXRlUmVtb3RlOjphcHBsaWNhdGlvbkRpZEJlY29tZUFjdGl2ZSk6CisgICAg
ICAgIChXZWJLaXQ6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6cGVyZm9ybVRhc2tBdE1lZGlh
VGltZSk6CisgICAgICAgIChXZWJLaXQ6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6c2hvdWxk
SWdub3JlSW50cmluc2ljU2l6ZSk6CisgICAgICAgIChXZWJLaXQ6Ok1lZGlhUGxheWVyUHJpdmF0
ZVJlbW90ZTo6bG9nQ2hhbm5lbCBjb25zdCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvbWVk
aWEvTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlLmg6IEFkZGVkLgorICAgICAgICAqIFdlYlByb2Nl
c3MvR1BVL21lZGlhL01lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZUlkZW50aWZpZXIuaDogQWRkZWQu
CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2Vy
LmNwcDogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6Ok1lZGlhUGxheWVyUmVtb3RlRmFjdG9yeTo6
TWVkaWFQbGF5ZXJSZW1vdGVGYWN0b3J5KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTWVkaWFQ
bGF5ZXJNYW5hZ2VyOjpSZW1vdGVNZWRpYVBsYXllck1hbmFnZXIpOgorICAgICAgICAoV2ViS2l0
OjpSZW1vdGVNZWRpYVBsYXllck1hbmFnZXI6On5SZW1vdGVNZWRpYVBsYXllck1hbmFnZXIpOgor
ICAgICAgICAoV2ViS2l0OjpSZW1vdGVNZWRpYVBsYXllck1hbmFnZXI6OnN1cHBsZW1lbnROYW1l
KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyOjppbml0aWFsaXpl
KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyOjpjcmVhdGVSZW1v
dGVNZWRpYVBsYXllcik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZU1lZGlhUGxheWVyTWFuYWdl
cjo6Z2V0U3VwcG9ydGVkVHlwZXMpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVNZWRpYVBsYXll
ck1hbmFnZXI6OnN1cHBvcnRzVHlwZUFuZENvZGVjcyk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90
ZU1lZGlhUGxheWVyTWFuYWdlcjo6c3VwcG9ydHNLZXlTeXN0ZW0pOgorICAgICAgICAoV2ViS2l0
OjpSZW1vdGVNZWRpYVBsYXllck1hbmFnZXI6Om9yaWdpbnNJbk1lZGlhQ2FjaGUpOgorICAgICAg
ICAoV2ViS2l0OjpSZW1vdGVNZWRpYVBsYXllck1hbmFnZXI6OmNsZWFyTWVkaWFDYWNoZSk6Cisg
ICAgICAgIChXZWJLaXQ6OlJlbW90ZU1lZGlhUGxheWVyTWFuYWdlcjo6Y2xlYXJNZWRpYUNhY2hl
Rm9yT3JpZ2lucyk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZU1lZGlhUGxheWVyTWFuYWdlcjo6
bmV0d29ya1N0YXRlQ2hhbmdlZCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZU1lZGlhUGxheWVy
TWFuYWdlcjo6dXBkYXRlUHJlZmVyZW5jZXMpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVNZWRp
YVBsYXllck1hbmFnZXI6OmdwdVByb2Nlc3NDb25uZWN0aW9uIGNvbnN0KToKKyAgICAgICAgKiBX
ZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVNZWRpYVBsYXllck1hbmFnZXIuaDogQWRkZWQuCisg
ICAgICAgICogV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyLm1l
c3NhZ2VzLmluOiBBZGRlZC4KKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5j
cHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnVwZGF0ZVByZWZlcmVuY2VzKToKKyAgICAg
ICAgKiBXZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwOgorCiAyMDE5LTEyLTExICBUcnVpdHQgU2F2
ZWxsICA8dHNhdmVsbEBhcHBsZS5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgcm9sbGluZyBv
dXQgcjI1MzM3Ni4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvagppbmRleCAwM2U2ZjU0MzNiZjZmNjdlYmM1ZjQ5ZmVkMGE5NTAxMmQ0YmU0YmY5
Li5iZjI4MWFmZTUxN2I5ZWE2YzRjOWNlNmJkZWMxZTE4NDcwYmY4NGNkIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291
cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xMDQsNiAr
MTA0LDcgQEAKIAkJMDcxRTQ5NkUxQUQ1QUEwRDAwOEE1MEI0IC8qIE1lZGlhUGxheWJhY2tUYXJn
ZXRNYWMubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAw
NzFFNDk2RDFBRDVBQTBEMDA4QTUwQjQgLyogTWVkaWFQbGF5YmFja1RhcmdldE1hYy5tbSAqLzsg
fTsKIAkJMDcxRTQ5NzAxQUQ1QUI1RTAwOEE1MEI0IC8qIE1lZGlhUGxheWJhY2tUYXJnZXRNYWMu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3MUU0OTZG
MUFENUFCNUUwMDhBNTBCNCAvKiBNZWRpYVBsYXliYWNrVGFyZ2V0TWFjLmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMDcyMEIwQTExNEQzMzIzNTAw
NjQyOTU1IC8qIEdlbmVyaWNFdmVudFF1ZXVlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSAwNzIwQjA5RjE0RDMzMjM1MDA2NDI5NTUgLyogR2VuZXJpY0V2
ZW50UXVldWUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OworCQkwNzI1RUZBOTIzOUFENzkzMDBBNTM4QTkgLyogTWVkaWFQbGF5ZXJQcml2YXRlLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwNzlGNUU0QjBGM0JF
QkVBMDA1RTA3ODIgLyogTWVkaWFQbGF5ZXJQcml2YXRlLmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMDcyNzdFNEQxN0QwMThDQzAwMTU1MzREIC8q
IEpTTWVkaWFTdHJlYW0uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDA3Mjc3RTQxMTdEMDE4Q0MwMDE1NTM0RCAvKiBKU01lZGlhU3RyZWFtLmggKi87IH07
CiAJCTA3Mjc3RTREMTdEMDE4Q0MwMDE1NTM0RSAvKiBKU0NhbnZhc0NhcHR1cmVNZWRpYVN0cmVh
bVRyYWNrLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAw
NzI3N0U0MTE3RDAxOENDMDAxNTUzNEUgLyogSlNDYW52YXNDYXB0dXJlTWVkaWFTdHJlYW1UcmFj
ay5oICovOyB9OwogCQkwNzI3N0U0RjE3RDAxOENDMDAxNTUzNEQgLyogSlNNZWRpYVN0cmVhbUF1
ZGlvRGVzdGluYXRpb25Ob2RlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSAwNzI3N0U0MzE3RDAxOENDMDAxNTUzNEQgLyogSlNNZWRpYVN0cmVhbUF1ZGlv
RGVzdGluYXRpb25Ob2RlLmggKi87IH07CkBAIC0zMTM3OSw2ICszMTM4MCw3IEBACiAJCQkJMDc3
QjY0MTMxQjk0RjEyRTAwM0U5QUQ1IC8qIE1lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJNb2NrLmgg
aW4gSGVhZGVycyAqLywKIAkJCQlFNDQ2MTNFNDBDRDY4MUEyMDBGQURBNzUgLyogTWVkaWFQbGF5
ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUNENTIwOUU0MUIwQkQ4MzgwMDc3MTg0RSAvKiBNZWRp
YVBsYXllckVudW1zLmggaW4gSGVhZGVycyAqLywKKwkJCQkwNzI1RUZBOTIzOUFENzkzMDBBNTM4
QTkgLyogTWVkaWFQbGF5ZXJQcml2YXRlLmggaW4gSGVhZGVycyAqLywKIAkJCQkwNzZGMEQwRTEy
QjgxOTI3MDBDMjZBQTQgLyogTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uLmggaW4gSGVh
ZGVycyAqLywKIAkJCQlERjlBRkQ3MjEzRkMzMUQ4MDAxNUZFQjcgLyogTWVkaWFQbGF5ZXJQcml2
YXRlQVZGb3VuZGF0aW9uT2JqQy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQ0RDOEI1QTMxODA0NjM0
NzAwMTZFNjg1IC8qIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQy5oIGluIEhl
YWRlcnMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Db250ZW50VHlw
ZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vQ29udGVudFR5cGUuaAppbmRleCBjODJiNWI3
MTk3YzllMTVkMWUyZjU0N2ZkNTY0MWZjNWY0ZWM1ZWNmLi41ODVhM2ZkNWE3ZWZkMWFiMzQ4ZDE0
ZjFmZjIxZTkwOWU2NjZjMjQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9D
b250ZW50VHlwZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0NvbnRlbnRUeXBlLmgK
QEAgLTMzLDggKzMzLDggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBDb250ZW50VHlw
ZSB7CiBwdWJsaWM6Ci0gICAgZXhwbGljaXQgQ29udGVudFR5cGUoU3RyaW5nJiYgdHlwZSk7Ci0g
ICAgZXhwbGljaXQgQ29udGVudFR5cGUoY29uc3QgU3RyaW5nJiB0eXBlKTsKKyAgICBXRUJDT1JF
X0VYUE9SVCBleHBsaWNpdCBDb250ZW50VHlwZShTdHJpbmcmJiB0eXBlKTsKKyAgICBXRUJDT1JF
X0VYUE9SVCBleHBsaWNpdCBDb250ZW50VHlwZShjb25zdCBTdHJpbmcmIHR5cGUpOwogICAgIENv
bnRlbnRUeXBlKCkgPSBkZWZhdWx0OwogCiAgICAgc3RhdGljIGNvbnN0IFN0cmluZyYgY29kZWNz
UGFyYW1ldGVyKCk7CkBAIC00OSw2ICs0OSwyMyBAQCBwdWJsaWM6CiAKICAgICBTdHJpbmcgdG9K
U09OU3RyaW5nKCkgY29uc3Q7CiAKKyAgICB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPgorICAgIHZv
aWQgZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0CisgICAgeworICAgICAgICBlbmNvZGVy
IDw8IG1fdHlwZTsKKyAgICB9CisKKyAgICB0ZW1wbGF0ZSA8Y2xhc3MgRGVjb2Rlcj4KKyAgICBz
dGF0aWMgT3B0aW9uYWw8Q29udGVudFR5cGU+IGRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQorICAg
IHsKKyAgICAgICAgT3B0aW9uYWw8U3RyaW5nPiB0eXBlOworICAgICAgICBkZWNvZGVyID4+IHR5
cGU7CisgICAgICAgIGlmICghdHlwZSkKKyAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7
CisKKyAgICAgICAgcmV0dXJuIHsgQ29udGVudFR5cGUoV1RGTW92ZSgqdHlwZSkpIH07CisgICAg
fQorCiBwcml2YXRlOgogICAgIFN0cmluZyBtX3R5cGU7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuY3BwCmluZGV4IGNlMjNhYjc4NGJjNmMy
YTE1ZmI4OTFkODE1Nzk1OWYxYzE2NGI1NGEuLjI0NzJhMTFlNmIzYzYxOGMwZDAyY2EzMzU4YmQ5
MWIwZGQ0YzZjODYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L01lZGlhUGxheWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9N
ZWRpYVBsYXllci5jcHAKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA3
LTIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAy
MDA3LTIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCkBAIC05MCwxNCArOTAsNiBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKLSNpZiAhUkVMRUFTRV9MT0dfRElTQUJMRUQKLXN0YXRpYyBSZWZQdHI8TG9nZ2VyPiYgbnVs
bExvZ2dlcigpCi17Ci0gICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFJlZlB0cjxMb2dnZXI+PiBs
b2dnZXI7Ci0gICAgcmV0dXJuIGxvZ2dlcjsKLX0KLSNlbmRpZgotCiAvLyBhIG51bGwgcGxheWVy
IHRvIG1ha2UgTWVkaWFQbGF5ZXIgbG9naWMgc2ltcGxlcgogCiBjbGFzcyBOdWxsTWVkaWFQbGF5
ZXJQcml2YXRlIGZpbmFsIDogcHVibGljIE1lZGlhUGxheWVyUHJpdmF0ZUludGVyZmFjZSB7CkBA
IC0xNjYsOCArMTU4LDIyIEBAIHB1YmxpYzoKICAgICBib29sIGhhc1NpbmdsZVNlY3VyaXR5T3Jp
Z2luKCkgY29uc3QgZmluYWwgeyByZXR1cm4gdHJ1ZTsgfQogfTsKIAorI2lmICFSRUxFQVNFX0xP
R19ESVNBQkxFRAorc3RhdGljIFJlZlB0cjxMb2dnZXI+JiBudWxsTG9nZ2VyKCkKK3sKKyAgICBz
dGF0aWMgTmV2ZXJEZXN0cm95ZWQ8UmVmUHRyPExvZ2dlcj4+IGxvZ2dlcjsKKyAgICByZXR1cm4g
bG9nZ2VyOworfQorI2VuZGlmCisKK3N0YXRpYyBjb25zdCBWZWN0b3I8V2ViQ29yZTo6Q29udGVu
dFR5cGU+JiBudWxsQ29udGVudFR5cGVWZWN0b3IoKQoreworICAgIHN0YXRpYyBOZXZlckRlc3Ry
b3llZDxWZWN0b3I8V2ViQ29yZTo6Q29udGVudFR5cGU+PiB2ZWN0b3I7CisgICAgcmV0dXJuIHZl
Y3RvcjsKK30KKwogY2xhc3MgTnVsbE1lZGlhUGxheWVyQ2xpZW50IDogcHVibGljIE1lZGlhUGxh
eWVyQ2xpZW50IHsKLXB1YmxpYzoKK3ByaXZhdGU6CiAjaWYgIVJFTEVBU0VfTE9HX0RJU0FCTEVE
CiAgICAgY29uc3QgTG9nZ2VyJiBtZWRpYVBsYXllckxvZ2dlcigpIGZpbmFsCiAgICAgewpAQCAt
MTc5LDggKzE4NSwxMSBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiAqbnVsbExvZ2dlcigpLmdl
dCgpOwogICAgIH0KICNlbmRpZgorCisgICAgY29uc3QgVmVjdG9yPFdlYkNvcmU6OkNvbnRlbnRU
eXBlPiYgbWVkaWFDb250ZW50VHlwZXNSZXF1aXJpbmdIYXJkd2FyZVN1cHBvcnQoKSBjb25zdCBm
aW5hbCB7IHJldHVybiBudWxsQ29udGVudFR5cGVWZWN0b3IoKTsgfQogfTsKIAorCiBjb25zdCBW
ZWN0b3I8Q29udGVudFR5cGU+JiBNZWRpYVBsYXllckNsaWVudDo6bWVkaWFDb250ZW50VHlwZXNS
ZXF1aXJpbmdIYXJkd2FyZVN1cHBvcnQoKSBjb25zdAogewogICAgIHN0YXRpYyBOZXZlckRlc3Ry
b3llZDxWZWN0b3I8Q29udGVudFR5cGU+PiBjb250ZW50VHlwZXM7CkBAIC0xOTUsMTcgKzIwNCw3
IEBAIHN0YXRpYyBNZWRpYVBsYXllckNsaWVudCYgbnVsbE1lZGlhUGxheWVyQ2xpZW50KCkKIAog
Ly8gZW5naW5lIHN1cHBvcnQKIAotc3RydWN0IE1lZGlhUGxheWVyRmFjdG9yeSB7Ci0gICAgQ3Jl
YXRlTWVkaWFFbmdpbmVQbGF5ZXIgY29uc3RydWN0b3I7Ci0gICAgTWVkaWFFbmdpbmVTdXBwb3J0
ZWRUeXBlcyBnZXRTdXBwb3J0ZWRUeXBlczsKLSAgICBNZWRpYUVuZ2luZVN1cHBvcnRzVHlwZSBz
dXBwb3J0c1R5cGVBbmRDb2RlY3M7Ci0gICAgTWVkaWFFbmdpbmVPcmlnaW5zSW5NZWRpYUNhY2hl
IG9yaWdpbnNJbk1lZGlhQ2FjaGU7Ci0gICAgTWVkaWFFbmdpbmVDbGVhck1lZGlhQ2FjaGUgY2xl
YXJNZWRpYUNhY2hlOwotICAgIE1lZGlhRW5naW5lQ2xlYXJNZWRpYUNhY2hlRm9yT3JpZ2lucyBj
bGVhck1lZGlhQ2FjaGVGb3JPcmlnaW5zOwotICAgIE1lZGlhRW5naW5lU3VwcG9ydHNLZXlTeXN0
ZW0gc3VwcG9ydHNLZXlTeXN0ZW07Ci19OwotCi1zdGF0aWMgdm9pZCBhZGRNZWRpYUVuZ2luZShD
cmVhdGVNZWRpYUVuZ2luZVBsYXllciYmLCBNZWRpYUVuZ2luZVN1cHBvcnRlZFR5cGVzLCBNZWRp
YUVuZ2luZVN1cHBvcnRzVHlwZSwgTWVkaWFFbmdpbmVPcmlnaW5zSW5NZWRpYUNhY2hlLCBNZWRp
YUVuZ2luZUNsZWFyTWVkaWFDYWNoZSwgTWVkaWFFbmdpbmVDbGVhck1lZGlhQ2FjaGVGb3JPcmln
aW5zLCBNZWRpYUVuZ2luZVN1cHBvcnRzS2V5U3lzdGVtKTsKK3N0YXRpYyB2b2lkIGFkZE1lZGlh
RW5naW5lKHN0ZDo6dW5pcXVlX3B0cjxNZWRpYVBsYXllckZhY3Rvcnk+JiYpOwogCiBzdGF0aWMg
TG9jayBtZWRpYUVuZ2luZVZlY3RvckxvY2s7CiAKQEAgLTIxNSwyMSArMjE0LDM3IEBAIHN0YXRp
YyBib29sJiBoYXZlTWVkaWFFbmdpbmVzVmVjdG9yKCkKICAgICByZXR1cm4gaGF2ZVZlY3RvcjsK
IH0KIAotc3RhdGljIFZlY3RvcjxNZWRpYVBsYXllckZhY3Rvcnk+JiBtdXRhYmxlSW5zdGFsbGVk
TWVkaWFFbmdpbmVzVmVjdG9yKCkKK3N0YXRpYyBWZWN0b3I8c3RkOjp1bmlxdWVfcHRyPE1lZGlh
UGxheWVyRmFjdG9yeT4+JiBtdXRhYmxlSW5zdGFsbGVkTWVkaWFFbmdpbmVzVmVjdG9yKCkKIHsK
LSAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8VmVjdG9yPE1lZGlhUGxheWVyRmFjdG9yeT4+IGlu
c3RhbGxlZEVuZ2luZXM7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFZlY3RvcjxzdGQ6OnVu
aXF1ZV9wdHI8TWVkaWFQbGF5ZXJGYWN0b3J5Pj4+IGluc3RhbGxlZEVuZ2luZXM7CiAgICAgcmV0
dXJuIGluc3RhbGxlZEVuZ2luZXM7CiB9CiAKK3N0YXRpYyBSZW1vdGVNZWRpYVBsYXllclN1cHBv
cnQ6OlJlZ2lzdGVyUmVtb3RlUGxheWVyQ2FsbGJhY2smIHJlZ2lzdGVyUmVtb3RlUGxheWVyQ2Fs
bGJhY2soKQoreworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxSZW1vdGVNZWRpYVBsYXllclN1
cHBvcnQ6OlJlZ2lzdGVyUmVtb3RlUGxheWVyQ2FsbGJhY2s+IGNhbGxiYWNrOworICAgIHJldHVy
biBjYWxsYmFjazsKK30KKwordm9pZCBSZW1vdGVNZWRpYVBsYXllclN1cHBvcnQ6OnNldFJlZ2lz
dGVyUmVtb3RlUGxheWVyQ2FsbGJhY2soUmVnaXN0ZXJSZW1vdGVQbGF5ZXJDYWxsYmFjayYmIGNh
bGxiYWNrKQoreworICAgIHJlZ2lzdGVyUmVtb3RlUGxheWVyQ2FsbGJhY2soKSA9IFdURk1vdmUo
Y2FsbGJhY2spOworfQorCiBzdGF0aWMgdm9pZCBidWlsZE1lZGlhRW5naW5lc1ZlY3RvcigpCiB7
CiAgICAgQVNTRVJUKG1lZGlhRW5naW5lVmVjdG9yTG9jay5pc0xvY2tlZCgpKTsKIAogI2lmIFVT
RShBVkZPVU5EQVRJT04pCisKICAgICBpZiAoRGVwcmVjYXRlZEdsb2JhbFNldHRpbmdzOjppc0FW
Rm91bmRhdGlvbkVuYWJsZWQoKSkgewogCisgICAgICAgIGF1dG8mIHJlZ2lzdGVyUmVtb3RlRW5n
aW5lID0gcmVnaXN0ZXJSZW1vdGVQbGF5ZXJDYWxsYmFjaygpOwogI2lmIFBMQVRGT1JNKENPQ09B
KQotICAgICAgICBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpyZWdpc3Rlck1l
ZGlhRW5naW5lKGFkZE1lZGlhRW5naW5lKTsKKyAgICAgICAgaWYgKHJlZ2lzdGVyUmVtb3RlRW5n
aW5lKQorICAgICAgICAgICAgcmVnaXN0ZXJSZW1vdGVFbmdpbmUoYWRkTWVkaWFFbmdpbmUsIE1l
ZGlhUGxheWVyRW51bXM6Ok1lZGlhRW5naW5lSWRlbnRpZmllcjo6QVZGb3VuZGF0aW9uKTsKKyAg
ICAgICAgZWxzZQorICAgICAgICAgICAgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2Jq
Qzo6cmVnaXN0ZXJNZWRpYUVuZ2luZShhZGRNZWRpYUVuZ2luZSk7CiAjZW5kaWYKIAogI2lmIEVO
QUJMRShNRURJQV9TT1VSQ0UpCkBAIC0yNjUsNyArMjgwLDcgQEAgc3RhdGljIHZvaWQgYnVpbGRN
ZWRpYUVuZ2luZXNWZWN0b3IoKQogICAgIGhhdmVNZWRpYUVuZ2luZXNWZWN0b3IoKSA9IHRydWU7
CiB9CiAKLXN0YXRpYyBjb25zdCBWZWN0b3I8TWVkaWFQbGF5ZXJGYWN0b3J5PiYgaW5zdGFsbGVk
TWVkaWFFbmdpbmVzKCkKK3N0YXRpYyBjb25zdCBWZWN0b3I8c3RkOjp1bmlxdWVfcHRyPE1lZGlh
UGxheWVyRmFjdG9yeT4+JiBpbnN0YWxsZWRNZWRpYUVuZ2luZXMoKQogewogICAgIHsKICAgICAg
ICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhtZWRpYUVuZ2luZVZlY3RvckxvY2spOwpAQCAtMjc2
LDE0ICsyOTEsOSBAQCBzdGF0aWMgY29uc3QgVmVjdG9yPE1lZGlhUGxheWVyRmFjdG9yeT4mIGlu
c3RhbGxlZE1lZGlhRW5naW5lcygpCiAgICAgcmV0dXJuIG11dGFibGVJbnN0YWxsZWRNZWRpYUVu
Z2luZXNWZWN0b3IoKTsKIH0KIAotc3RhdGljIHZvaWQgYWRkTWVkaWFFbmdpbmUoQ3JlYXRlTWVk
aWFFbmdpbmVQbGF5ZXImJiBjb25zdHJ1Y3RvciwgTWVkaWFFbmdpbmVTdXBwb3J0ZWRUeXBlcyBn
ZXRTdXBwb3J0ZWRUeXBlcywgTWVkaWFFbmdpbmVTdXBwb3J0c1R5cGUgc3VwcG9ydHNUeXBlLAot
ICAgIE1lZGlhRW5naW5lT3JpZ2luc0luTWVkaWFDYWNoZSBvcmlnaW5zSW5NZWRpYUNhY2hlLCBN
ZWRpYUVuZ2luZUNsZWFyTWVkaWFDYWNoZSBjbGVhck1lZGlhQ2FjaGUsIE1lZGlhRW5naW5lQ2xl
YXJNZWRpYUNhY2hlRm9yT3JpZ2lucyBjbGVhck1lZGlhQ2FjaGVGb3JPcmlnaW5zLCBNZWRpYUVu
Z2luZVN1cHBvcnRzS2V5U3lzdGVtIHN1cHBvcnRzS2V5U3lzdGVtKQorc3RhdGljIHZvaWQgYWRk
TWVkaWFFbmdpbmUoc3RkOjp1bmlxdWVfcHRyPE1lZGlhUGxheWVyRmFjdG9yeT4mJiBmYWN0b3J5
KQogewotICAgIEFTU0VSVChjb25zdHJ1Y3Rvcik7Ci0gICAgQVNTRVJUKGdldFN1cHBvcnRlZFR5
cGVzKTsKLSAgICBBU1NFUlQoc3VwcG9ydHNUeXBlKTsKLQotICAgIG11dGFibGVJbnN0YWxsZWRN
ZWRpYUVuZ2luZXNWZWN0b3IoKS5hcHBlbmQoTWVkaWFQbGF5ZXJGYWN0b3J5IHsgV1RGTW92ZShj
b25zdHJ1Y3RvciksIGdldFN1cHBvcnRlZFR5cGVzLCBzdXBwb3J0c1R5cGUsIG9yaWdpbnNJbk1l
ZGlhQ2FjaGUsIGNsZWFyTWVkaWFDYWNoZSwgY2xlYXJNZWRpYUNhY2hlRm9yT3JpZ2lucywgc3Vw
cG9ydHNLZXlTeXN0ZW0gfSk7CisgICAgbXV0YWJsZUluc3RhbGxlZE1lZGlhRW5naW5lc1ZlY3Rv
cigpLmFwcGVuZChXVEZNb3ZlKGZhY3RvcnkpKTsKIH0KIAogc3RhdGljIGNvbnN0IEF0b21TdHJp
bmcmIGFwcGxpY2F0aW9uT2N0ZXRTdHJlYW0oKQpAQCAtMjk4LDYgKzMwOCwyMSBAQCBzdGF0aWMg
Y29uc3QgQXRvbVN0cmluZyYgdGV4dFBsYWluKCkKICAgICByZXR1cm4gdGV4dFBsYWluOwogfQog
Citjb25zdCBNZWRpYVBsYXllckZhY3RvcnkqIE1lZGlhUGxheWVyOjptZWRpYUVuZ2luZShNZWRp
YVBsYXllckVudW1zOjpNZWRpYUVuZ2luZUlkZW50aWZpZXIgaWRlbnRpZmllcikKK3sKKyAgICBh
dXRvJiBlbmdpbmVzID0gaW5zdGFsbGVkTWVkaWFFbmdpbmVzKCk7CisgICAgYXV0byBjdXJyZW50
SW5kZXggPSBlbmdpbmVzLmZpbmRNYXRjaGluZyhbaWRlbnRpZmllcl0gKGF1dG8mIGVuZ2luZSkg
eworICAgICAgICByZXR1cm4gZW5naW5lLT5pZGVudGlmaWVyKCkgPT0gaWRlbnRpZmllcjsKKyAg
ICB9KTsKKworICAgIGlmIChjdXJyZW50SW5kZXggPT0gbm90Rm91bmQpIHsKKyAgICAgICAgQVNT
RVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIH0KKworICAg
IHJldHVybiBlbmdpbmVzW2N1cnJlbnRJbmRleF0uZ2V0KCk7Cit9CisKIHN0YXRpYyBjb25zdCBN
ZWRpYVBsYXllckZhY3RvcnkqIGJlc3RNZWRpYUVuZ2luZUZvclN1cHBvcnRQYXJhbWV0ZXJzKGNv
bnN0IE1lZGlhRW5naW5lU3VwcG9ydFBhcmFtZXRlcnMmIHBhcmFtZXRlcnMsIGNvbnN0IE1lZGlh
UGxheWVyRmFjdG9yeSogY3VycmVudCA9IG51bGxwdHIpCiB7CiAgICAgaWYgKHBhcmFtZXRlcnMu
dHlwZS5pc0VtcHR5KCkgJiYgIXBhcmFtZXRlcnMuaXNNZWRpYVNvdXJjZSAmJiAhcGFyYW1ldGVy
cy5pc01lZGlhU3RyZWFtKQpAQCAtMzE1LDM0ICszNDAsNDYgQEAgc3RhdGljIGNvbnN0IE1lZGlh
UGxheWVyRmFjdG9yeSogYmVzdE1lZGlhRW5naW5lRm9yU3VwcG9ydFBhcmFtZXRlcnMoY29uc3Qg
TWVkaWEKICAgICBNZWRpYVBsYXllcjo6U3VwcG9ydHNUeXBlIHN1cHBvcnRlZCA9IE1lZGlhUGxh
eWVyOjpTdXBwb3J0c1R5cGU6OklzTm90U3VwcG9ydGVkOwogICAgIGZvciAoYXV0byYgZW5naW5l
IDogaW5zdGFsbGVkTWVkaWFFbmdpbmVzKCkpIHsKICAgICAgICAgaWYgKGN1cnJlbnQpIHsKLSAg
ICAgICAgICAgIGlmIChjdXJyZW50ID09ICZlbmdpbmUpCisgICAgICAgICAgICBpZiAoY3VycmVu
dCA9PSBlbmdpbmUuZ2V0KCkpCiAgICAgICAgICAgICAgICAgY3VycmVudCA9IG51bGxwdHI7CiAg
ICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgfQotICAgICAgICBNZWRpYVBsYXllcjo6U3Vw
cG9ydHNUeXBlIGVuZ2luZVN1cHBvcnQgPSBlbmdpbmUuc3VwcG9ydHNUeXBlQW5kQ29kZWNzKHBh
cmFtZXRlcnMpOworICAgICAgICBNZWRpYVBsYXllcjo6U3VwcG9ydHNUeXBlIGVuZ2luZVN1cHBv
cnQgPSBlbmdpbmUtPnN1cHBvcnRzVHlwZUFuZENvZGVjcyhwYXJhbWV0ZXJzKTsKICAgICAgICAg
aWYgKGVuZ2luZVN1cHBvcnQgPiBzdXBwb3J0ZWQpIHsKICAgICAgICAgICAgIHN1cHBvcnRlZCA9
IGVuZ2luZVN1cHBvcnQ7Ci0gICAgICAgICAgICBmb3VuZEVuZ2luZSA9ICZlbmdpbmU7CisgICAg
ICAgICAgICBmb3VuZEVuZ2luZSA9IGVuZ2luZS5nZXQoKTsKICAgICAgICAgfQogICAgIH0KIAog
ICAgIHJldHVybiBmb3VuZEVuZ2luZTsKIH0KIAotc3RhdGljIGNvbnN0IE1lZGlhUGxheWVyRmFj
dG9yeSogbmV4dE1lZGlhRW5naW5lKGNvbnN0IE1lZGlhUGxheWVyRmFjdG9yeSogY3VycmVudCkK
K2NvbnN0IE1lZGlhUGxheWVyRmFjdG9yeSogTWVkaWFQbGF5ZXI6Om5leHRNZWRpYUVuZ2luZShj
b25zdCBNZWRpYVBsYXllckZhY3RvcnkqIGN1cnJlbnQpCiB7CisgICAgaWYgKG1fYWN0aXZlRW5n
aW5lSWRlbnRpZmllcikgeworICAgICAgICBhdXRvKiBlbmdpbmUgPSBtZWRpYUVuZ2luZShtX2Fj
dGl2ZUVuZ2luZUlkZW50aWZpZXIudmFsdWUoKSk7CisgICAgICAgIHJldHVybiBjdXJyZW50ICE9
IGVuZ2luZSA/IGVuZ2luZSA6IG51bGxwdHI7CisgICAgfQorCiAgICAgYXV0byYgZW5naW5lcyA9
IGluc3RhbGxlZE1lZGlhRW5naW5lcygpOwogICAgIGlmIChlbmdpbmVzLmlzRW1wdHkoKSkKICAg
ICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICAgICBpZiAoIWN1cnJlbnQpIAotICAgICAgICByZXR1
cm4gJmVuZ2luZXMuZmlyc3QoKTsKKyAgICAgICAgcmV0dXJuIGVuZ2luZXMuZmlyc3QoKS5nZXQo
KTsKKworICAgIGF1dG8gY3VycmVudEluZGV4ID0gZW5naW5lcy5maW5kTWF0Y2hpbmcoW2N1cnJl
bnRdIChhdXRvJiBlbmdpbmUpIHsKKyAgICAgICAgcmV0dXJuIGVuZ2luZS5nZXQoKSA9PSBjdXJy
ZW50OworICAgIH0pOworICAgIGlmIChjdXJyZW50SW5kZXggPT0gbm90Rm91bmQpIHsKKyAgICAg
ICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIH0K
IAotICAgIHNpemVfdCBjdXJyZW50SW5kZXggPSBjdXJyZW50IC0gJmVuZ2luZXMuZmlyc3QoKTsK
ICAgICBpZiAoY3VycmVudEluZGV4ICsgMSA+PSBlbmdpbmVzLnNpemUoKSkKICAgICAgICAgcmV0
dXJuIG51bGxwdHI7CiAKLSAgICByZXR1cm4gJmVuZ2luZXNbY3VycmVudEluZGV4ICsgMV07Cisg
ICAgcmV0dXJuIGVuZ2luZXNbY3VycmVudEluZGV4ICsgMV0uZ2V0KCk7CiB9CiAKIC8vIG1lZGlh
IHBsYXllcgpAQCAtMzUyLDYgKzM4OSwxMSBAQCBSZWY8TWVkaWFQbGF5ZXI+IE1lZGlhUGxheWVy
OjpjcmVhdGUoTWVkaWFQbGF5ZXJDbGllbnQmIGNsaWVudCkKICAgICByZXR1cm4gYWRvcHRSZWYo
Km5ldyBNZWRpYVBsYXllcihjbGllbnQpKTsKIH0KIAorUmVmPE1lZGlhUGxheWVyPiBNZWRpYVBs
YXllcjo6Y3JlYXRlKE1lZGlhUGxheWVyQ2xpZW50JiBjbGllbnQsIE1lZGlhUGxheWVyRW51bXM6
Ok1lZGlhRW5naW5lSWRlbnRpZmllciBtZWRpYUVuZ2luZUlkZW50aWZpZXIpCit7CisgICAgcmV0
dXJuIGFkb3B0UmVmKCpuZXcgTWVkaWFQbGF5ZXIoY2xpZW50LCBtZWRpYUVuZ2luZUlkZW50aWZp
ZXIpKTsKK30KKwogTWVkaWFQbGF5ZXI6Ok1lZGlhUGxheWVyKE1lZGlhUGxheWVyQ2xpZW50JiBj
bGllbnQpCiAgICAgOiBtX2NsaWVudCgmY2xpZW50KQogICAgICwgbV9yZWxvYWRUaW1lcigqdGhp
cywgJk1lZGlhUGxheWVyOjpyZWxvYWRUaW1lckZpcmVkKQpAQCAtMzU5LDYgKzQwMSwxNCBAQCBN
ZWRpYVBsYXllcjo6TWVkaWFQbGF5ZXIoTWVkaWFQbGF5ZXJDbGllbnQmIGNsaWVudCkKIHsKIH0K
IAorTWVkaWFQbGF5ZXI6Ok1lZGlhUGxheWVyKE1lZGlhUGxheWVyQ2xpZW50JiBjbGllbnQsIE1l
ZGlhUGxheWVyRW51bXM6Ok1lZGlhRW5naW5lSWRlbnRpZmllciBtZWRpYUVuZ2luZUlkZW50aWZp
ZXIpCisgICAgOiBtX2NsaWVudCgmY2xpZW50KQorICAgICwgbV9yZWxvYWRUaW1lcigqdGhpcywg
Jk1lZGlhUGxheWVyOjpyZWxvYWRUaW1lckZpcmVkKQorICAgICwgbV9wcml2YXRlKG1ha2VVbmlx
dWU8TnVsbE1lZGlhUGxheWVyUHJpdmF0ZT4odGhpcykpCisgICAgLCBtX2FjdGl2ZUVuZ2luZUlk
ZW50aWZpZXIobWVkaWFFbmdpbmVJZGVudGlmaWVyKQoreworfQorCiBNZWRpYVBsYXllcjo6fk1l
ZGlhUGxheWVyKCkKIHsKICAgICBBU1NFUlQoIW1faW5pdGlhbGl6aW5nTWVkaWFFbmdpbmUpOwpA
QCAtNDQxLDcgKzQ5MSw3IEBAIGJvb2wgTWVkaWFQbGF5ZXI6OmxvYWQoTWVkaWFTdHJlYW1Qcml2
YXRlJiBtZWRpYVN0cmVhbSkKIH0KICNlbmRpZgogCi1jb25zdCBNZWRpYVBsYXllckZhY3Rvcnkq
IE1lZGlhUGxheWVyOjpuZXh0QmVzdE1lZGlhRW5naW5lKGNvbnN0IE1lZGlhUGxheWVyRmFjdG9y
eSogY3VycmVudCkgY29uc3QKK2NvbnN0IE1lZGlhUGxheWVyRmFjdG9yeSogTWVkaWFQbGF5ZXI6
Om5leHRCZXN0TWVkaWFFbmdpbmUoY29uc3QgTWVkaWFQbGF5ZXJGYWN0b3J5KiBjdXJyZW50KQog
ewogICAgIE1lZGlhRW5naW5lU3VwcG9ydFBhcmFtZXRlcnMgcGFyYW1ldGVyczsKICAgICBwYXJh
bWV0ZXJzLnR5cGUgPSBtX2NvbnRlbnRUeXBlOwpAQCAtNDUzLDYgKzUwMywxNyBAQCBjb25zdCBN
ZWRpYVBsYXllckZhY3RvcnkqIE1lZGlhUGxheWVyOjpuZXh0QmVzdE1lZGlhRW5naW5lKGNvbnN0
IE1lZGlhUGxheWVyRmFjdAogICAgIHBhcmFtZXRlcnMuaXNNZWRpYVN0cmVhbSA9ICEhbV9tZWRp
YVN0cmVhbTsKICNlbmRpZgogCisgICAgaWYgKG1fYWN0aXZlRW5naW5lSWRlbnRpZmllcikgewor
ICAgICAgICBpZiAoY3VycmVudCkKKyAgICAgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAg
ICAgIGF1dG8qIGVuZ2luZSA9IG1lZGlhRW5naW5lKG1fYWN0aXZlRW5naW5lSWRlbnRpZmllci52
YWx1ZSgpKTsKKyAgICAgICAgaWYgKGVuZ2luZSAmJiBlbmdpbmUtPnN1cHBvcnRzVHlwZUFuZENv
ZGVjcyhwYXJhbWV0ZXJzKSAhPSBTdXBwb3J0c1R5cGU6OklzTm90U3VwcG9ydGVkKQorICAgICAg
ICAgICAgcmV0dXJuIGVuZ2luZTsKKworICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICB9CisK
ICAgICByZXR1cm4gYmVzdE1lZGlhRW5naW5lRm9yU3VwcG9ydFBhcmFtZXRlcnMocGFyYW1ldGVy
cywgY3VycmVudCk7CiB9CiAKQEAgLTQ4OSwxMyArNTUwLDE1IEBAIHZvaWQgTWVkaWFQbGF5ZXI6
OmxvYWRXaXRoTmV4dE1lZGlhRW5naW5lKGNvbnN0IE1lZGlhUGxheWVyRmFjdG9yeSogY3VycmVu
dCkKICAgICAgICAgbV9wcml2YXRlID0gbnVsbHB0cjsKICAgICB9IGVsc2UgaWYgKG1fY3VycmVu
dE1lZGlhRW5naW5lICE9IGVuZ2luZSkgewogICAgICAgICBtX2N1cnJlbnRNZWRpYUVuZ2luZSA9
IGVuZ2luZTsKLSAgICAgICAgbV9wcml2YXRlID0gZW5naW5lLT5jb25zdHJ1Y3Rvcih0aGlzKTsK
LSAgICAgICAgY2xpZW50KCkubWVkaWFQbGF5ZXJFbmdpbmVVcGRhdGVkKCk7Ci0gICAgICAgIG1f
cHJpdmF0ZS0+c2V0UHJpdmF0ZUJyb3dzaW5nTW9kZShtX3ByaXZhdGVCcm93c2luZyk7Ci0gICAg
ICAgIG1fcHJpdmF0ZS0+c2V0UHJlbG9hZChtX3ByZWxvYWQpOwotICAgICAgICBtX3ByaXZhdGUt
PnNldFByZXNlcnZlc1BpdGNoKHByZXNlcnZlc1BpdGNoKCkpOwotICAgICAgICBpZiAobV9zaG91
bGRQcmVwYXJlVG9SZW5kZXIpCi0gICAgICAgICAgICBtX3ByaXZhdGUtPnByZXBhcmVGb3JSZW5k
ZXJpbmcoKTsKKyAgICAgICAgbV9wcml2YXRlID0gZW5naW5lLT5jcmVhdGVNZWRpYUVuZ2luZVBs
YXllcih0aGlzKTsKKyAgICAgICAgaWYgKG1fcHJpdmF0ZSkgeworICAgICAgICAgICAgY2xpZW50
KCkubWVkaWFQbGF5ZXJFbmdpbmVVcGRhdGVkKCk7CisgICAgICAgICAgICBtX3ByaXZhdGUtPnNl
dFByaXZhdGVCcm93c2luZ01vZGUobV9wcml2YXRlQnJvd3NpbmcpOworICAgICAgICAgICAgbV9w
cml2YXRlLT5zZXRQcmVsb2FkKG1fcHJlbG9hZCk7CisgICAgICAgICAgICBtX3ByaXZhdGUtPnNl
dFByZXNlcnZlc1BpdGNoKHByZXNlcnZlc1BpdGNoKCkpOworICAgICAgICAgICAgaWYgKG1fc2hv
dWxkUHJlcGFyZVRvUmVuZGVyKQorICAgICAgICAgICAgICAgIG1fcHJpdmF0ZS0+cHJlcGFyZUZv
clJlbmRlcmluZygpOworICAgICAgICB9CiAgICAgfQogCiAgICAgaWYgKG1fcHJpdmF0ZSkgewpA
QCAtNTEyLDggKzU3NSwxMiBAQCB2b2lkIE1lZGlhUGxheWVyOjpsb2FkV2l0aE5leHRNZWRpYUVu
Z2luZShjb25zdCBNZWRpYVBsYXllckZhY3RvcnkqIGN1cnJlbnQpCiAgICAgICAgIG1fcHJpdmF0
ZS0+bG9hZChtX3VybC5zdHJpbmcoKSk7CiAgICAgfSBlbHNlIHsKICAgICAgICAgbV9wcml2YXRl
ID0gbWFrZVVuaXF1ZTxOdWxsTWVkaWFQbGF5ZXJQcml2YXRlPih0aGlzKTsKLSAgICAgICAgY2xp
ZW50KCkubWVkaWFQbGF5ZXJFbmdpbmVVcGRhdGVkKCk7Ci0gICAgICAgIGNsaWVudCgpLm1lZGlh
UGxheWVyUmVzb3VyY2VOb3RTdXBwb3J0ZWQoKTsKKyAgICAgICAgaWYgKCFtX2FjdGl2ZUVuZ2lu
ZUlkZW50aWZpZXIgJiYgaW5zdGFsbGVkTWVkaWFFbmdpbmVzKCkuc2l6ZSgpID4gMSAmJiBuZXh0
QmVzdE1lZGlhRW5naW5lKG1fY3VycmVudE1lZGlhRW5naW5lKSkKKyAgICAgICAgICAgIG1fcmVs
b2FkVGltZXIuc3RhcnRPbmVTaG90KDBfcyk7CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAg
Y2xpZW50KCkubWVkaWFQbGF5ZXJFbmdpbmVVcGRhdGVkKCk7CisgICAgICAgICAgICBjbGllbnQo
KS5tZWRpYVBsYXllclJlc291cmNlTm90U3VwcG9ydGVkKCk7CisgICAgICAgIH0KICAgICB9CiAK
ICAgICBtX2luaXRpYWxpemluZ01lZGlhRW5naW5lID0gZmFsc2U7CkBAIC05MjksNyArOTk2LDcg
QEAgdm9pZCBNZWRpYVBsYXllcjo6Z2V0U3VwcG9ydGVkVHlwZXMoSGFzaFNldDxTdHJpbmcsIEFT
Q0lJQ2FzZUluc2Vuc2l0aXZlSGFzaD4mIHQKIHsKICAgICBmb3IgKGF1dG8mIGVuZ2luZSA6IGlu
c3RhbGxlZE1lZGlhRW5naW5lcygpKSB7CiAgICAgICAgIEhhc2hTZXQ8U3RyaW5nLCBBU0NJSUNh
c2VJbnNlbnNpdGl2ZUhhc2g+IGVuZ2luZVR5cGVzOwotICAgICAgICBlbmdpbmUuZ2V0U3VwcG9y
dGVkVHlwZXMoZW5naW5lVHlwZXMpOworICAgICAgICBlbmdpbmUtPmdldFN1cHBvcnRlZFR5cGVz
KGVuZ2luZVR5cGVzKTsKICAgICAgICAgdHlwZXMuYWRkKGVuZ2luZVR5cGVzLmJlZ2luKCksIGVu
Z2luZVR5cGVzLmVuZCgpKTsKICAgICB9CiB9IApAQCAtMTEyNSwzNCArMTE5MiwyOCBAQCBzdGF0
aWMgdm9pZCBhZGRUb0hhc2goSGFzaFNldDxUPiYgdG9IYXNoLCBIYXNoU2V0PFQ+JiYgZnJvbUhh
c2gpCiBIYXNoU2V0PFJlZlB0cjxTZWN1cml0eU9yaWdpbj4+IE1lZGlhUGxheWVyOjpvcmlnaW5z
SW5NZWRpYUNhY2hlKGNvbnN0IFN0cmluZyYgcGF0aCkKIHsKICAgICBIYXNoU2V0PFJlZlB0cjxT
ZWN1cml0eU9yaWdpbj4+IG9yaWdpbnM7Ci0gICAgZm9yIChhdXRvJiBlbmdpbmUgOiBpbnN0YWxs
ZWRNZWRpYUVuZ2luZXMoKSkgewotICAgICAgICBpZiAoIWVuZ2luZS5vcmlnaW5zSW5NZWRpYUNh
Y2hlKQotICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgIGFkZFRvSGFzaChvcmlnaW5zLCBl
bmdpbmUub3JpZ2luc0luTWVkaWFDYWNoZShwYXRoKSk7Ci0gICAgfQorICAgIGZvciAoYXV0byYg
ZW5naW5lIDogaW5zdGFsbGVkTWVkaWFFbmdpbmVzKCkpCisgICAgICAgIGFkZFRvSGFzaChvcmln
aW5zLCBlbmdpbmUtPm9yaWdpbnNJbk1lZGlhQ2FjaGUocGF0aCkpOworCiAgICAgcmV0dXJuIG9y
aWdpbnM7CiB9CiAKIHZvaWQgTWVkaWFQbGF5ZXI6OmNsZWFyTWVkaWFDYWNoZShjb25zdCBTdHJp
bmcmIHBhdGgsIFdhbGxUaW1lIG1vZGlmaWVkU2luY2UpCiB7Ci0gICAgZm9yIChhdXRvJiBlbmdp
bmUgOiBpbnN0YWxsZWRNZWRpYUVuZ2luZXMoKSkgewotICAgICAgICBpZiAoZW5naW5lLmNsZWFy
TWVkaWFDYWNoZSkKLSAgICAgICAgICAgIGVuZ2luZS5jbGVhck1lZGlhQ2FjaGUocGF0aCwgbW9k
aWZpZWRTaW5jZSk7Ci0gICAgfQorICAgIGZvciAoYXV0byYgZW5naW5lIDogaW5zdGFsbGVkTWVk
aWFFbmdpbmVzKCkpCisgICAgICAgIGVuZ2luZS0+Y2xlYXJNZWRpYUNhY2hlKHBhdGgsIG1vZGlm
aWVkU2luY2UpOwogfQogCiB2b2lkIE1lZGlhUGxheWVyOjpjbGVhck1lZGlhQ2FjaGVGb3JPcmln
aW5zKGNvbnN0IFN0cmluZyYgcGF0aCwgY29uc3QgSGFzaFNldDxSZWZQdHI8U2VjdXJpdHlPcmln
aW4+PiYgb3JpZ2lucykKIHsKLSAgICBmb3IgKGF1dG8mIGVuZ2luZSA6IGluc3RhbGxlZE1lZGlh
RW5naW5lcygpKSB7Ci0gICAgICAgIGlmIChlbmdpbmUuY2xlYXJNZWRpYUNhY2hlRm9yT3JpZ2lu
cykKLSAgICAgICAgICAgIGVuZ2luZS5jbGVhck1lZGlhQ2FjaGVGb3JPcmlnaW5zKHBhdGgsIG9y
aWdpbnMpOwotICAgIH0KKyAgICBmb3IgKGF1dG8mIGVuZ2luZSA6IGluc3RhbGxlZE1lZGlhRW5n
aW5lcygpKQorICAgICAgICBlbmdpbmUtPmNsZWFyTWVkaWFDYWNoZUZvck9yaWdpbnMocGF0aCwg
b3JpZ2lucyk7CiB9CiAKIGJvb2wgTWVkaWFQbGF5ZXI6OnN1cHBvcnRzS2V5U3lzdGVtKGNvbnN0
IFN0cmluZyYga2V5U3lzdGVtLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlKQogewogICAgIGZvciAo
YXV0byYgZW5naW5lIDogaW5zdGFsbGVkTWVkaWFFbmdpbmVzKCkpIHsKLSAgICAgICAgaWYgKGVu
Z2luZS5zdXBwb3J0c0tleVN5c3RlbSAmJiBlbmdpbmUuc3VwcG9ydHNLZXlTeXN0ZW0oa2V5U3lz
dGVtLCBtaW1lVHlwZSkpCisgICAgICAgIGlmIChlbmdpbmUtPnN1cHBvcnRzS2V5U3lzdGVtKGtl
eVN5c3RlbSwgbWltZVR5cGUpKQogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogICAg
IHJldHVybiBmYWxzZTsKQEAgLTExNzIsNyArMTIzMyw3IEBAIHZvaWQgTWVkaWFQbGF5ZXI6Om5l
dHdvcmtTdGF0ZUNoYW5nZWQoKQogICAgIC8vIGxldCB0aGUgbmV4dCBlbmdpbmUgdHJ5LgogICAg
IGlmIChtX3ByaXZhdGUtPm5ldHdvcmtTdGF0ZSgpID49IE1lZGlhUGxheWVyOjpOZXR3b3JrU3Rh
dGU6OkZvcm1hdEVycm9yICYmIG1fcHJpdmF0ZS0+cmVhZHlTdGF0ZSgpIDwgTWVkaWFQbGF5ZXI6
OlJlYWR5U3RhdGU6OkhhdmVNZXRhZGF0YSkgewogICAgICAgICBjbGllbnQoKS5tZWRpYVBsYXll
ckVuZ2luZUZhaWxlZFRvTG9hZCgpOwotICAgICAgICBpZiAoaW5zdGFsbGVkTWVkaWFFbmdpbmVz
KCkuc2l6ZSgpID4gMSAmJiAobV9jb250ZW50VHlwZS5pc0VtcHR5KCkgfHwgbmV4dEJlc3RNZWRp
YUVuZ2luZShtX2N1cnJlbnRNZWRpYUVuZ2luZSkpKSB7CisgICAgICAgIGlmICghbV9hY3RpdmVF
bmdpbmVJZGVudGlmaWVyICYmIGluc3RhbGxlZE1lZGlhRW5naW5lcygpLnNpemUoKSA+IDEgJiYg
KG1fY29udGVudFR5cGUuaXNFbXB0eSgpIHx8IG5leHRCZXN0TWVkaWFFbmdpbmUobV9jdXJyZW50
TWVkaWFFbmdpbmUpKSkgewogICAgICAgICAgICAgbV9yZWxvYWRUaW1lci5zdGFydE9uZVNob3Qo
MF9zKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmgKaW5kZXggOGE3YjFlOWJmZDc4N2Y1MTMw
NTJiNTY4ODM0NTk0NDBkZjlkMWIxNy4uMzVlNDUwYTZlZWViZmUxMWY1ZjdhNjRlZWYwOTBjZjEz
ODc2MDE4NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVk
aWFQbGF5ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBs
YXllci5oCkBAIC02Nyw2ICs2Nyw3IEBAIGNsYXNzIEluYmFuZFRleHRUcmFja1ByaXZhdGU7CiBj
bGFzcyBMZWdhY3lDRE1TZXNzaW9uQ2xpZW50OwogY2xhc3MgTWVkaWFQbGF5YmFja1RhcmdldDsK
IGNsYXNzIE1lZGlhUGxheWVyOworY2xhc3MgTWVkaWFQbGF5ZXJGYWN0b3J5OwogY2xhc3MgTWVk
aWFQbGF5ZXJQcml2YXRlSW50ZXJmYWNlOwogY2xhc3MgTWVkaWFQbGF5ZXJSZXF1ZXN0SW5zdGFs
bE1pc3NpbmdQbHVnaW5zQ2FsbGJhY2s7CiBjbGFzcyBNZWRpYVNvdXJjZVByaXZhdGVDbGllbnQ7
CkBAIC03Niw3ICs3Nyw2IEBAIGNsYXNzIFRleHRUcmFja1JlcHJlc2VudGF0aW9uOwogCiBzdHJ1
Y3QgQ29va2llOwogc3RydWN0IEdyYXBoaWNzRGV2aWNlQWRhcHRlcjsKLXN0cnVjdCBNZWRpYVBs
YXllckZhY3Rvcnk7CiAKIHN0cnVjdCBNZWRpYUVuZ2luZVN1cHBvcnRQYXJhbWV0ZXJzIHsKICAg
ICBDb250ZW50VHlwZSB0eXBlOwpAQCAtODQsNiArODQsNDYgQEAgc3RydWN0IE1lZGlhRW5naW5l
U3VwcG9ydFBhcmFtZXRlcnMgewogICAgIGJvb2wgaXNNZWRpYVNvdXJjZSB7IGZhbHNlIH07CiAg
ICAgYm9vbCBpc01lZGlhU3RyZWFtIHsgZmFsc2UgfTsKICAgICBWZWN0b3I8Q29udGVudFR5cGU+
IGNvbnRlbnRUeXBlc1JlcXVpcmluZ0hhcmR3YXJlU3VwcG9ydDsKKworICAgIHRlbXBsYXRlPGNs
YXNzIEVuY29kZXI+CisgICAgdm9pZCBlbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QKKyAg
ICB7CisgICAgICAgIGVuY29kZXIgPDwgdHlwZTsKKyAgICAgICAgZW5jb2RlciA8PCB1cmw7Cisg
ICAgICAgIGVuY29kZXIgPDwgaXNNZWRpYVNvdXJjZTsKKyAgICAgICAgZW5jb2RlciA8PCBjb250
ZW50VHlwZXNSZXF1aXJpbmdIYXJkd2FyZVN1cHBvcnQ7CisgICAgfQorCisgICAgdGVtcGxhdGUg
PGNsYXNzIERlY29kZXI+CisgICAgc3RhdGljIE9wdGlvbmFsPE1lZGlhRW5naW5lU3VwcG9ydFBh
cmFtZXRlcnM+IGRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQorICAgIHsKKyAgICAgICAgT3B0aW9u
YWw8Q29udGVudFR5cGU+IHR5cGU7CisgICAgICAgIGRlY29kZXIgPj4gdHlwZTsKKyAgICAgICAg
aWYgKCF0eXBlKQorICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKworICAgICAgICBP
cHRpb25hbDxVUkw+IHVybDsKKyAgICAgICAgZGVjb2RlciA+PiB1cmw7CisgICAgICAgIGlmICgh
dXJsKQorICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKworICAgICAgICBPcHRpb25h
bDxib29sPiBpc01lZGlhU291cmNlOworICAgICAgICBkZWNvZGVyID4+IGlzTWVkaWFTb3VyY2U7
CisgICAgICAgIGlmICghaXNNZWRpYVNvdXJjZSkKKyAgICAgICAgICAgIHJldHVybiBXVEY6Om51
bGxvcHQ7CisKKyAgICAgICAgT3B0aW9uYWw8Ym9vbD4gaXNNZWRpYVN0cmVhbTsKKyAgICAgICAg
ZGVjb2RlciA+PiBpc01lZGlhU3RyZWFtOworICAgICAgICBpZiAoIWlzTWVkaWFTdHJlYW0pCisg
ICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworCisgICAgICAgIE9wdGlvbmFsPFZlY3Rv
cjxDb250ZW50VHlwZT4+IHR5cGVzUmVxdWlyaW5nSGFyZHdhcmU7CisgICAgICAgIGRlY29kZXIg
Pj4gdHlwZXNSZXF1aXJpbmdIYXJkd2FyZTsKKyAgICAgICAgaWYgKCF0eXBlc1JlcXVpcmluZ0hh
cmR3YXJlKQorICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKworICAgICAgICByZXR1
cm4ge3sgV1RGTW92ZSgqdHlwZSksIFdURk1vdmUoKnVybCksIFdURk1vdmUoKmlzTWVkaWFTb3Vy
Y2UpLCBXVEZNb3ZlKCppc01lZGlhU3RyZWFtKSwgV1RGTW92ZSgqdHlwZXNSZXF1aXJpbmdIYXJk
d2FyZSkgfX07CisgICAgfQogfTsKIAogc3RydWN0IFZpZGVvUGxheWJhY2tRdWFsaXR5TWV0cmlj
cyB7CkBAIC0yMzUsNyArMjc1LDcgQEAgcHVibGljOgogI2VuZGlmCiAKICAgICB2aXJ0dWFsIGJv
b2wgbWVkaWFQbGF5ZXJTaG91bGREaXNhYmxlU2xlZXAoKSBjb25zdCB7IHJldHVybiBmYWxzZTsg
fQotICAgIHZpcnR1YWwgY29uc3QgVmVjdG9yPENvbnRlbnRUeXBlPiYgbWVkaWFDb250ZW50VHlw
ZXNSZXF1aXJpbmdIYXJkd2FyZVN1cHBvcnQoKSBjb25zdDsKKyAgICB2aXJ0dWFsIGNvbnN0IFZl
Y3RvcjxDb250ZW50VHlwZT4mIG1lZGlhQ29udGVudFR5cGVzUmVxdWlyaW5nSGFyZHdhcmVTdXBw
b3J0KCkgY29uc3QgPSAwOwogICAgIHZpcnR1YWwgYm9vbCBtZWRpYVBsYXllclNob3VsZENoZWNr
SGFyZHdhcmVTdXBwb3J0KCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KIAogI2lmICFSRUxFQVNF
X0xPR19ESVNBQkxFRApAQCAtMjQ0LDE1ICsyODQsMTggQEAgcHVibGljOgogI2VuZGlmCiB9Owog
Ci1jbGFzcyBNZWRpYVBsYXllciA6IHB1YmxpYyBNZWRpYVBsYXllckVudW1zLCBwdWJsaWMgUmVm
Q291bnRlZDxNZWRpYVBsYXllcj4geworY2xhc3MgV0VCQ09SRV9FWFBPUlQgTWVkaWFQbGF5ZXIg
OiBwdWJsaWMgTWVkaWFQbGF5ZXJFbnVtcywgcHVibGljIFJlZkNvdW50ZWQ8TWVkaWFQbGF5ZXI+
IHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShNZWRpYVBsYXllcik7IFdURl9NQUtFX0ZBU1Rf
QUxMT0NBVEVEOwogcHVibGljOgogICAgIHN0YXRpYyBSZWY8TWVkaWFQbGF5ZXI+IGNyZWF0ZShN
ZWRpYVBsYXllckNsaWVudCYpOworICAgIHN0YXRpYyBSZWY8TWVkaWFQbGF5ZXI+IGNyZWF0ZShN
ZWRpYVBsYXllckNsaWVudCYsIE1lZGlhUGxheWVyRW51bXM6Ok1lZGlhRW5naW5lSWRlbnRpZmll
cik7CiAgICAgdmlydHVhbCB+TWVkaWFQbGF5ZXIoKTsKIAogICAgIHZvaWQgaW52YWxpZGF0ZSgp
OwogCiAgICAgLy8gTWVkaWEgZW5naW5lIHN1cHBvcnQuCisgICAgdXNpbmcgTWVkaWFQbGF5ZXJF
bnVtczo6U3VwcG9ydHNUeXBlOworICAgIHN0YXRpYyBjb25zdCBNZWRpYVBsYXllckZhY3Rvcnkq
IG1lZGlhRW5naW5lKE1lZGlhUGxheWVyRW51bXM6Ok1lZGlhRW5naW5lSWRlbnRpZmllcik7CiAg
ICAgc3RhdGljIFN1cHBvcnRzVHlwZSBzdXBwb3J0c1R5cGUoY29uc3QgTWVkaWFFbmdpbmVTdXBw
b3J0UGFyYW1ldGVycyYpOwogICAgIHN0YXRpYyB2b2lkIGdldFN1cHBvcnRlZFR5cGVzKEhhc2hT
ZXQ8U3RyaW5nLCBBU0NJSUNhc2VJbnNlbnNpdGl2ZUhhc2g+Jik7CiAgICAgc3RhdGljIGJvb2wg
aXNBdmFpbGFibGUoKTsKQEAgLTUzMSwxMSArNTc0LDExIEBAIHB1YmxpYzoKICAgICBzdGF0aWMg
dm9pZCByZXNldE1lZGlhRW5naW5lcygpOwogCiAjaWYgVVNFKEdTVFJFQU1FUikKLSAgICBXRUJD
T1JFX0VYUE9SVCB2b2lkIHNpbXVsYXRlQXVkaW9JbnRlcnJ1cHRpb24oKTsKKyAgICB2b2lkIHNp
bXVsYXRlQXVkaW9JbnRlcnJ1cHRpb24oKTsKICNlbmRpZgogCi0gICAgV0VCQ09SRV9FWFBPUlQg
dm9pZCBiZWdpblNpbXVsYXRlZEhEQ1BFcnJvcigpOwotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQg
ZW5kU2ltdWxhdGVkSERDUEVycm9yKCk7CisgICAgdm9pZCBiZWdpblNpbXVsYXRlZEhEQ1BFcnJv
cigpOworICAgIHZvaWQgZW5kU2ltdWxhdGVkSERDUEVycm9yKCk7CiAKICAgICBTdHJpbmcgbGFu
Z3VhZ2VPZlByaW1hcnlBdWRpb1RyYWNrKCkgY29uc3Q7CiAKQEAgLTU3MCw3ICs2MTMsNyBAQCBw
dWJsaWM6CiAgICAgdm9pZCBhcHBsaWNhdGlvbkRpZEJlY29tZUFjdGl2ZSgpOwogCiAjaWYgVVNF
KEFWRk9VTkRBVElPTikKLSAgICBXRUJDT1JFX0VYUE9SVCBBVlBsYXllciAqb2JqQ0FWRm91bmRh
dGlvbkFWUGxheWVyKCkgY29uc3Q7CisgICAgQVZQbGF5ZXIgKm9iakNBVkZvdW5kYXRpb25BVlBs
YXllcigpIGNvbnN0OwogI2VuZGlmCiAKICAgICBib29sIHBlcmZvcm1UYXNrQXRNZWRpYVRpbWUo
V1RGOjpGdW5jdGlvbjx2b2lkKCk+JiYsIE1lZGlhVGltZSk7CkBAIC01OTUsMTEgKzYzOCwxMyBA
QCBwdWJsaWM6CiAKIHByaXZhdGU6CiAgICAgTWVkaWFQbGF5ZXIoTWVkaWFQbGF5ZXJDbGllbnQm
KTsKKyAgICBNZWRpYVBsYXllcihNZWRpYVBsYXllckNsaWVudCYsIE1lZGlhUGxheWVyRW51bXM6
Ok1lZGlhRW5naW5lSWRlbnRpZmllcik7CiAKICAgICBNZWRpYVBsYXllckNsaWVudCYgY2xpZW50
KCkgY29uc3QgeyByZXR1cm4gKm1fY2xpZW50OyB9CiAKLSAgICBjb25zdCBNZWRpYVBsYXllckZh
Y3RvcnkqIG5leHRCZXN0TWVkaWFFbmdpbmUoY29uc3QgTWVkaWFQbGF5ZXJGYWN0b3J5KikgY29u
c3Q7CisgICAgY29uc3QgTWVkaWFQbGF5ZXJGYWN0b3J5KiBuZXh0QmVzdE1lZGlhRW5naW5lKGNv
bnN0IE1lZGlhUGxheWVyRmFjdG9yeSopOwogICAgIHZvaWQgbG9hZFdpdGhOZXh0TWVkaWFFbmdp
bmUoY29uc3QgTWVkaWFQbGF5ZXJGYWN0b3J5Kik7CisgICAgY29uc3QgTWVkaWFQbGF5ZXJGYWN0
b3J5KiBuZXh0TWVkaWFFbmdpbmUoY29uc3QgTWVkaWFQbGF5ZXJGYWN0b3J5Kik7CiAgICAgdm9p
ZCByZWxvYWRUaW1lckZpcmVkKCk7CiAKICAgICBNZWRpYVBsYXllckNsaWVudCogbV9jbGllbnQ7
CkBAIC02MDksNiArNjU0LDcgQEAgcHJpdmF0ZToKICAgICBVUkwgbV91cmw7CiAgICAgQ29udGVu
dFR5cGUgbV9jb250ZW50VHlwZTsKICAgICBTdHJpbmcgbV9rZXlTeXN0ZW07CisgICAgT3B0aW9u
YWw8TWVkaWFQbGF5ZXJFbnVtczo6TWVkaWFFbmdpbmVJZGVudGlmaWVyPiBtX2FjdGl2ZUVuZ2lu
ZUlkZW50aWZpZXI7CiAgICAgSW50U2l6ZSBtX3NpemU7CiAgICAgUHJlbG9hZCBtX3ByZWxvYWQg
eyBQcmVsb2FkOjpBdXRvIH07CiAgICAgZG91YmxlIG1fdm9sdW1lIHsgMSB9OwpAQCAtNjI4LDIz
ICs2NzQsMzggQEAgcHJpdmF0ZToKICNlbmRpZgogfTsKIAotdXNpbmcgQ3JlYXRlTWVkaWFFbmdp
bmVQbGF5ZXIgPSBXVEY6OkZ1bmN0aW9uPHN0ZDo6dW5pcXVlX3B0cjxNZWRpYVBsYXllclByaXZh
dGVJbnRlcmZhY2U+IChNZWRpYVBsYXllciopPjsKLXR5cGVkZWYgdm9pZCAoKk1lZGlhRW5naW5l
U3VwcG9ydGVkVHlwZXMpKEhhc2hTZXQ8U3RyaW5nLCBBU0NJSUNhc2VJbnNlbnNpdGl2ZUhhc2g+
JiB0eXBlcyk7Ci10eXBlZGVmIE1lZGlhUGxheWVyOjpTdXBwb3J0c1R5cGUgKCpNZWRpYUVuZ2lu
ZVN1cHBvcnRzVHlwZSkoY29uc3QgTWVkaWFFbmdpbmVTdXBwb3J0UGFyYW1ldGVycyYgcGFyYW1l
dGVycyk7Ci10eXBlZGVmIEhhc2hTZXQ8UmVmUHRyPFNlY3VyaXR5T3JpZ2luPj4gKCpNZWRpYUVu
Z2luZU9yaWdpbnNJbk1lZGlhQ2FjaGUpKGNvbnN0IFN0cmluZyYgcGF0aCk7Ci10eXBlZGVmIHZv
aWQgKCpNZWRpYUVuZ2luZUNsZWFyTWVkaWFDYWNoZSkoY29uc3QgU3RyaW5nJiBwYXRoLCBXYWxs
VGltZSBtb2RpZmllZFNpbmNlKTsKLXR5cGVkZWYgdm9pZCAoKk1lZGlhRW5naW5lQ2xlYXJNZWRp
YUNhY2hlRm9yT3JpZ2lucykoY29uc3QgU3RyaW5nJiBwYXRoLCBjb25zdCBIYXNoU2V0PFJlZlB0
cjxTZWN1cml0eU9yaWdpbj4+Jik7Ci10eXBlZGVmIGJvb2wgKCpNZWRpYUVuZ2luZVN1cHBvcnRz
S2V5U3lzdGVtKShjb25zdCBTdHJpbmcmIGtleVN5c3RlbSwgY29uc3QgU3RyaW5nJiBtaW1lVHlw
ZSk7CitjbGFzcyBNZWRpYVBsYXllckZhY3RvcnkgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NB
VEVEOworcHVibGljOgorICAgIE1lZGlhUGxheWVyRmFjdG9yeSgpID0gZGVmYXVsdDsKKyAgICB2
aXJ0dWFsIH5NZWRpYVBsYXllckZhY3RvcnkoKSA9IGRlZmF1bHQ7CisKKyAgICB2aXJ0dWFsIE1l
ZGlhUGxheWVyRW51bXM6Ok1lZGlhRW5naW5lSWRlbnRpZmllciBpZGVudGlmaWVyKCkgY29uc3Qg
ID0gMDsKKyAgICB2aXJ0dWFsIHN0ZDo6dW5pcXVlX3B0cjxNZWRpYVBsYXllclByaXZhdGVJbnRl
cmZhY2U+IGNyZWF0ZU1lZGlhRW5naW5lUGxheWVyKE1lZGlhUGxheWVyKikgY29uc3QgPSAwOwor
ICAgIHZpcnR1YWwgdm9pZCBnZXRTdXBwb3J0ZWRUeXBlcyhIYXNoU2V0PFN0cmluZywgQVNDSUlD
YXNlSW5zZW5zaXRpdmVIYXNoPiYpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIE1lZGlhUGxheWVy
OjpTdXBwb3J0c1R5cGUgc3VwcG9ydHNUeXBlQW5kQ29kZWNzKGNvbnN0IE1lZGlhRW5naW5lU3Vw
cG9ydFBhcmFtZXRlcnMmKSBjb25zdCA9IDA7CisKKyAgICB2aXJ0dWFsIEhhc2hTZXQ8UmVmUHRy
PFNlY3VyaXR5T3JpZ2luPj4gb3JpZ2luc0luTWVkaWFDYWNoZShjb25zdCBTdHJpbmcmKSBjb25z
dCB7IHJldHVybiB7IH07IH0KKyAgICB2aXJ0dWFsIHZvaWQgY2xlYXJNZWRpYUNhY2hlKGNvbnN0
IFN0cmluZyYsIFdhbGxUaW1lKSBjb25zdCB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgY2xlYXJNZWRp
YUNhY2hlRm9yT3JpZ2lucyhjb25zdCBTdHJpbmcmLCBjb25zdCBIYXNoU2V0PFJlZlB0cjxTZWN1
cml0eU9yaWdpbj4+JikgY29uc3QgeyB9CisgICAgdmlydHVhbCBib29sIHN1cHBvcnRzS2V5U3lz
dGVtKGNvbnN0IFN0cmluZyYgLyoga2V5U3lzdGVtICovLCBjb25zdCBTdHJpbmcmIC8qIG1pbWVU
eXBlICovKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQorfTsKIAotdHlwZWRlZiB2b2lkICgqTWVk
aWFFbmdpbmVSZWdpc3RyYXIpKENyZWF0ZU1lZGlhRW5naW5lUGxheWVyJiYsIE1lZGlhRW5naW5l
U3VwcG9ydGVkVHlwZXMsIE1lZGlhRW5naW5lU3VwcG9ydHNUeXBlLAotICAgIE1lZGlhRW5naW5l
T3JpZ2luc0luTWVkaWFDYWNoZSwgTWVkaWFFbmdpbmVDbGVhck1lZGlhQ2FjaGUsIE1lZGlhRW5n
aW5lQ2xlYXJNZWRpYUNhY2hlRm9yT3JpZ2lucywgTWVkaWFFbmdpbmVTdXBwb3J0c0tleVN5c3Rl
bSk7Ci10eXBlZGVmIHZvaWQgKCpNZWRpYUVuZ2luZVJlZ2lzdGVyKShNZWRpYUVuZ2luZVJlZ2lz
dHJhcik7Cit1c2luZyBNZWRpYUVuZ2luZVJlZ2lzdHJhciA9IHZvaWQoc3RkOjp1bmlxdWVfcHRy
PE1lZGlhUGxheWVyRmFjdG9yeT4mJik7Cit1c2luZyBNZWRpYUVuZ2luZVJlZ2lzdGVyID0gdm9p
ZChNZWRpYUVuZ2luZVJlZ2lzdHJhcik7CiAKIGNsYXNzIE1lZGlhUGxheWVyRmFjdG9yeVN1cHBv
cnQgewogcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyB2b2lkIGNhbGxSZWdpc3Rl
ck1lZGlhRW5naW5lKE1lZGlhRW5naW5lUmVnaXN0ZXIpOwogfTsKIAorY2xhc3MgUmVtb3RlTWVk
aWFQbGF5ZXJTdXBwb3J0IHsKK3B1YmxpYzoKKyAgICB1c2luZyBSZWdpc3RlclJlbW90ZVBsYXll
ckNhbGxiYWNrID0gV1RGOjpGdW5jdGlvbjx2b2lkKE1lZGlhRW5naW5lUmVnaXN0cmFyLCBNZWRp
YVBsYXllckVudW1zOjpNZWRpYUVuZ2luZUlkZW50aWZpZXIpPjsKKyAgICBXRUJDT1JFX0VYUE9S
VCBzdGF0aWMgdm9pZCBzZXRSZWdpc3RlclJlbW90ZVBsYXllckNhbGxiYWNrKFJlZ2lzdGVyUmVt
b3RlUGxheWVyQ2FsbGJhY2smJik7Cit9OworCisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAog
I2VuZGlmIC8vIEVOQUJMRShWSURFTykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL01lZGlhUGxheWVyRW51bXMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL01lZGlhUGxheWVyRW51bXMuaAppbmRleCA0YjEwZjA0ODMwODdlMmU2NmUzYWFk
ODFlZTQ0MmU2ZDI0OGRlOWQ0Li4xNzgzODMyOGJlYWJmM2FkYTkwZjE2OTA1NjNhZWUyNDg2YTA2
NGU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBs
YXllckVudW1zLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQ
bGF5ZXJFbnVtcy5oCkBAIC04Nyw2ICs4NywxOCBAQCBwdWJsaWM6CiAgICAgICAgIE1ha2VSZXNv
dXJjZXNQdXJnZWFibGUsCiAgICAgICAgIFB1cmdlUmVzb3VyY2VzLAogICAgIH07CisKKyAgICBl
bnVtIGNsYXNzIE1lZGlhRW5naW5lSWRlbnRpZmllciA6IHVpbnQ4X3QgeworICAgICAgICBBVkZv
dW5kYXRpb24sCisgICAgICAgIEFWRm91bmRhdGlvbk1TRSwKKyAgICAgICAgQVZGb3VuZGF0aW9u
TWVkaWFTdHJlYW0sCisgICAgICAgIEFWRm91bmRhdGlvbkNGLAorICAgICAgICBHU3RyZWFtZXIs
CisgICAgICAgIEdTdHJlYW1lck1TRSwKKyAgICAgICAgSG9sZVB1bmNoLAorICAgICAgICBNZWRp
YUZvdW5kYXRpb24sCisgICAgICAgIE1vY2tNU0UsCisgICAgfTsKIH07CiAKIFdURjo6U3RyaW5n
IGNvbnZlcnRFbnVtZXJhdGlvblRvU3RyaW5nKE1lZGlhUGxheWVyRW51bXM6OlJlYWR5U3RhdGUp
OwpAQCAtMTQwLDcgKzE1Miw2IEBAIHRlbXBsYXRlPD4gc3RydWN0IEVudW1UcmFpdHM8V2ViQ29y
ZTo6TWVkaWFQbGF5ZXJFbnVtczo6TmV0d29ya1N0YXRlPiB7CiAgICAgPjsKIH07CiAKLQogdGVt
cGxhdGU8PiBzdHJ1Y3QgRW51bVRyYWl0czxXZWJDb3JlOjpNZWRpYVBsYXllckVudW1zOjpSZWFk
eVN0YXRlPiB7CiAgICAgdXNpbmcgdmFsdWVzID0gRW51bVZhbHVlczwKICAgICAgICAgV2ViQ29y
ZTo6TWVkaWFQbGF5ZXJFbnVtczo6UmVhZHlTdGF0ZSwKQEAgLTE5Niw2ICsyMDcsMjAgQEAgdGVt
cGxhdGU8PiBzdHJ1Y3QgRW51bVRyYWl0czxXZWJDb3JlOjpNZWRpYVBsYXllckVudW1zOjpCdWZm
ZXJpbmdQb2xpY3k+IHsKICAgICAgICAgV2ViQ29yZTo6TWVkaWFQbGF5ZXJFbnVtczo6QnVmZmVy
aW5nUG9saWN5OjpMaW1pdFJlYWRBaGVhZCwKICAgICAgICAgV2ViQ29yZTo6TWVkaWFQbGF5ZXJF
bnVtczo6QnVmZmVyaW5nUG9saWN5OjpNYWtlUmVzb3VyY2VzUHVyZ2VhYmxlLAogICAgICAgICBX
ZWJDb3JlOjpNZWRpYVBsYXllckVudW1zOjpCdWZmZXJpbmdQb2xpY3k6OlB1cmdlUmVzb3VyY2Vz
CisgICAgICAgID47CisgICAgfTsKKwordGVtcGxhdGU8PiBzdHJ1Y3QgRW51bVRyYWl0czxXZWJD
b3JlOjpNZWRpYVBsYXllckVudW1zOjpNZWRpYUVuZ2luZUlkZW50aWZpZXI+IHsKKyAgICB1c2lu
ZyB2YWx1ZXMgPSBFbnVtVmFsdWVzPAorICAgICAgICBXZWJDb3JlOjpNZWRpYVBsYXllckVudW1z
OjpNZWRpYUVuZ2luZUlkZW50aWZpZXIsCisgICAgICAgIFdlYkNvcmU6Ok1lZGlhUGxheWVyRW51
bXM6Ok1lZGlhRW5naW5lSWRlbnRpZmllcjo6QVZGb3VuZGF0aW9uLAorICAgICAgICBXZWJDb3Jl
OjpNZWRpYVBsYXllckVudW1zOjpNZWRpYUVuZ2luZUlkZW50aWZpZXI6OkFWRm91bmRhdGlvbk1T
RSwKKyAgICAgICAgV2ViQ29yZTo6TWVkaWFQbGF5ZXJFbnVtczo6TWVkaWFFbmdpbmVJZGVudGlm
aWVyOjpBVkZvdW5kYXRpb25NZWRpYVN0cmVhbSwKKyAgICAgICAgV2ViQ29yZTo6TWVkaWFQbGF5
ZXJFbnVtczo6TWVkaWFFbmdpbmVJZGVudGlmaWVyOjpHU3RyZWFtZXIsCisgICAgICAgIFdlYkNv
cmU6Ok1lZGlhUGxheWVyRW51bXM6Ok1lZGlhRW5naW5lSWRlbnRpZmllcjo6R1N0cmVhbWVyTVNF
LAorICAgICAgICBXZWJDb3JlOjpNZWRpYVBsYXllckVudW1zOjpNZWRpYUVuZ2luZUlkZW50aWZp
ZXI6OkhvbGVQdW5jaCwKKyAgICAgICAgV2ViQ29yZTo6TWVkaWFQbGF5ZXJFbnVtczo6TWVkaWFF
bmdpbmVJZGVudGlmaWVyOjpNZWRpYUZvdW5kYXRpb24sCisgICAgICAgIFdlYkNvcmU6Ok1lZGlh
UGxheWVyRW51bXM6Ok1lZGlhRW5naW5lSWRlbnRpZmllcjo6TW9ja01TRQogICAgID47CiB9Owog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9QbGF0Zm9ybVRp
bWVSYW5nZXMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1BsYXRmb3JtVGlt
ZVJhbmdlcy5oCmluZGV4IDE4ODg2OTVjNzZlOTI2ZmIzZWQ0YjNhNTEwYzliYjAzM2I0MzczMzAu
LmRjNTZkYjZjN2U4YzM0NjRjOTUzMTRhOThhZjRhYzM1OWUzMjczZDAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1BsYXRmb3JtVGltZVJhbmdlcy5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1BsYXRmb3JtVGltZVJhbmdlcy5oCkBA
IC0zNiwxNSArMzYsMTUgQEAgY2xhc3MgUHJpbnRTdHJlYW07CiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAotY2xhc3MgUGxhdGZvcm1UaW1lUmFuZ2VzIHsKK2NsYXNzIFdFQkNPUkVfRVhQT1JUIFBs
YXRmb3JtVGltZVJhbmdlcyB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6
CiAgICAgZXhwbGljaXQgUGxhdGZvcm1UaW1lUmFuZ2VzKCkgeyB9CiAgICAgUGxhdGZvcm1UaW1l
UmFuZ2VzKGNvbnN0IE1lZGlhVGltZSYgc3RhcnQsIGNvbnN0IE1lZGlhVGltZSYgZW5kKTsKIAot
ICAgIFdFQkNPUkVfRVhQT1JUIE1lZGlhVGltZSBzdGFydCh1bnNpZ25lZCBpbmRleCkgY29uc3Q7
CisgICAgTWVkaWFUaW1lIHN0YXJ0KHVuc2lnbmVkIGluZGV4KSBjb25zdDsKICAgICBNZWRpYVRp
bWUgc3RhcnQodW5zaWduZWQgaW5kZXgsIGJvb2wmIHZhbGlkKSBjb25zdDsKLSAgICBXRUJDT1JF
X0VYUE9SVCBNZWRpYVRpbWUgZW5kKHVuc2lnbmVkIGluZGV4KSBjb25zdDsKKyAgICBNZWRpYVRp
bWUgZW5kKHVuc2lnbmVkIGluZGV4KSBjb25zdDsKICAgICBNZWRpYVRpbWUgZW5kKHVuc2lnbmVk
IGluZGV4LCBib29sJiB2YWxpZCkgY29uc3Q7CiAgICAgTWVkaWFUaW1lIGR1cmF0aW9uKHVuc2ln
bmVkIGluZGV4KSBjb25zdDsKICAgICBNZWRpYVRpbWUgbWF4aW11bUJ1ZmZlcmVkVGltZSgpIGNv
bnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3Vu
ZGF0aW9uL2NmL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbkNGLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9jZi9NZWRpYVBsYXllclByaXZh
dGVBVkZvdW5kYXRpb25DRi5jcHAKaW5kZXggODU2MmU4NDVkMWZjYTBjMzllNmNjZmUxYTcxM2M1
ZGFiNTgxNTcyOS4uNWM4NDVhN2QyODJmYThmZWZjNThlYTY4YWJiMTc1MDU2ZWI5OGMyNCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL2Nm
L01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbkNGLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vY2YvTWVkaWFQbGF5ZXJQcml2YXRlQVZG
b3VuZGF0aW9uQ0YuY3BwCkBAIC0zNDIsMTEgKzM0MiwzNyBAQCBzdGF0aWMgZGlzcGF0Y2hfcXVl
dWVfdCBnbG9iYWxMb2FkZXJEZWxlZ2F0ZVF1ZXVlKCkKIH0KICNlbmRpZgogCitjbGFzcyBNZWRp
YVBsYXllckZhY3RvcnlBVkZvdW5kYXRpb25DRiBmaW5hbCA6IHB1YmxpYyBNZWRpYVBsYXllckZh
Y3RvcnkgeworcHJpdmF0ZToKKyAgICBNZWRpYVBsYXllckVudW1zOjpNZWRpYUVuZ2luZUlkZW50
aWZpZXIgaWRlbnRpZmllcigpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIE1lZGlhUGxheWVyRW51bXM6
Ok1lZGlhRW5naW5lSWRlbnRpZmllcjo6QVZGb3VuZGF0aW9uQ0Y7IH07CisKKyAgICBzdGQ6OnVu
aXF1ZV9wdHI8TWVkaWFQbGF5ZXJQcml2YXRlSW50ZXJmYWNlPiBjcmVhdGVNZWRpYUVuZ2luZVBs
YXllcihNZWRpYVBsYXllciogcGxheWVyKSBjb25zdCBmaW5hbAorICAgIHsKKyAgICAgICAgcmV0
dXJuIG1ha2VVbmlxdWU8TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uQ0Y+KHBsYXllcik7
CisgICAgfQorCisgICAgdm9pZCBnZXRTdXBwb3J0ZWRUeXBlcyhIYXNoU2V0PFN0cmluZywgQVND
SUlDYXNlSW5zZW5zaXRpdmVIYXNoPiYgdHlwZXMpIGNvbnN0IGZpbmFsCisgICAgeworICAgICAg
ICByZXR1cm4gTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uQ0Y6OmdldFN1cHBvcnRlZFR5
cGVzKHR5cGVzKTsKKyAgICB9CisKKyAgICBNZWRpYVBsYXllcjo6U3VwcG9ydHNUeXBlIHN1cHBv
cnRzVHlwZUFuZENvZGVjcyhjb25zdCBNZWRpYUVuZ2luZVN1cHBvcnRQYXJhbWV0ZXJzJiBwYXJh
bWV0ZXJzKSBjb25zdCBmaW5hbAorICAgIHsKKyAgICAgICAgcmV0dXJuIE1lZGlhUGxheWVyUHJp
dmF0ZUFWRm91bmRhdGlvbkNGOjpzdXBwb3J0c1R5cGUocGFyYW1ldGVycyk7CisgICAgfQorCisg
ICAgYm9vbCBzdXBwb3J0c0tleVN5c3RlbShjb25zdCBTdHJpbmcmIGtleVN5c3RlbSwgY29uc3Qg
U3RyaW5nJiBtaW1lVHlwZSkgY29uc3QgZmluYWwKKyAgICB7CisgICAgICAgIHJldHVybiBNZWRp
YVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25DRjo6c3VwcG9ydHNLZXlTeXN0ZW0oa2V5U3lzdGVt
LCBtaW1lVHlwZSk7CisgICAgfQorfTsKKwogdm9pZCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5k
YXRpb25DRjo6cmVnaXN0ZXJNZWRpYUVuZ2luZShNZWRpYUVuZ2luZVJlZ2lzdHJhciByZWdpc3Ry
YXIpCiB7Ci0gICAgaWYgKGlzQXZhaWxhYmxlKCkpCi0gICAgICAgIHJlZ2lzdHJhcihbXShNZWRp
YVBsYXllciogcGxheWVyKSB7IHJldHVybiBtYWtlVW5pcXVlPE1lZGlhUGxheWVyUHJpdmF0ZUFW
Rm91bmRhdGlvbkNGPihwbGF5ZXIpOyB9LAotICAgICAgICAgICAgZ2V0U3VwcG9ydGVkVHlwZXMs
IHN1cHBvcnRzVHlwZSwgMCwgMCwgMCwgc3VwcG9ydHNLZXlTeXN0ZW0pOworICAgIGlmICghaXNB
dmFpbGFibGUoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgcmVnaXN0cmFyKG1ha2VVbmlxdWU8
TWVkaWFQbGF5ZXJGYWN0b3J5QVZGb3VuZGF0aW9uQ0Y+KCkpOwogfQogCiBNZWRpYVBsYXllclBy
aXZhdGVBVkZvdW5kYXRpb25DRjo6TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uQ0YoTWVk
aWFQbGF5ZXIqIHBsYXllcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2F2Zm91bmRhdGlvbi9jZi9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25DRi5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL2NmL01lZGlh
UGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbkNGLmgKaW5kZXggNDM4YTNiZDNjMzY5OTUxN2RkZTlj
NjBmY2QxZmMyZjcwMzg4NzlmNC4uMTFmOTQ2MThjN2NiODViNmVhMGVmNDJhMzhhMWE5OTE5ZGYy
YmI3MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3Vu
ZGF0aW9uL2NmL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbkNGLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL2NmL01lZGlhUGxheWVyUHJp
dmF0ZUFWRm91bmRhdGlvbkNGLmgKQEAgLTYxLDYgKzYxLDcgQEAgcHVibGljOgogICAgIHN0YXRp
YyB2b2lkIHJlZ2lzdGVyTWVkaWFFbmdpbmUoTWVkaWFFbmdpbmVSZWdpc3RyYXIpOwogCiBwcml2
YXRlOgorICAgIGZyaWVuZCBjbGFzcyBNZWRpYVBsYXllckZhY3RvcnlBVkZvdW5kYXRpb25DRjsK
ICAgICBzdGF0aWMgdm9pZCBnZXRTdXBwb3J0ZWRUeXBlcyhIYXNoU2V0PFN0cmluZywgQVNDSUlD
YXNlSW5zZW5zaXRpdmVIYXNoPiYgdHlwZXMpOwogICAgIHN0YXRpYyBNZWRpYVBsYXllcjo6U3Vw
cG9ydHNUeXBlIHN1cHBvcnRzVHlwZShjb25zdCBNZWRpYUVuZ2luZVN1cHBvcnRQYXJhbWV0ZXJz
Jik7CiAgICAgc3RhdGljIGJvb2wgc3VwcG9ydHNLZXlTeXN0ZW0oY29uc3QgU3RyaW5nJiBrZXlT
eXN0ZW0sIGNvbnN0IFN0cmluZyYgbWltZVR5cGUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRl
QVZGb3VuZGF0aW9uT2JqQy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZm
b3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5oCmluZGV4
IGNhZGEyMzExYmI2YzY4MjI4OWIwZmE2NmJiNmQ4ZDUxMjU5M2Y2MDcuLjI4ZmQ2MmVkNGU2ZWJk
Y2IwOTIxY2I1Yjk0YjkzYmVjMDAwNWMzNDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91
bmRhdGlvbk9iakMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZv
dW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLmgKQEAgLTE2
Miw2ICsxNjIsNyBAQCBwdWJsaWM6CiAKIHByaXZhdGU6CiAgICAgLy8gZW5naW5lIHN1cHBvcnQK
KyAgICBmcmllbmQgY2xhc3MgTWVkaWFQbGF5ZXJGYWN0b3J5QVZGb3VuZGF0aW9uT2JqQzsKICAg
ICBzdGF0aWMgdm9pZCBnZXRTdXBwb3J0ZWRUeXBlcyhIYXNoU2V0PFN0cmluZywgQVNDSUlDYXNl
SW5zZW5zaXRpdmVIYXNoPiYgdHlwZXMpOwogICAgIHN0YXRpYyBNZWRpYVBsYXllcjo6U3VwcG9y
dHNUeXBlIHN1cHBvcnRzVHlwZShjb25zdCBNZWRpYUVuZ2luZVN1cHBvcnRQYXJhbWV0ZXJzJik7
CiAgICAgc3RhdGljIGJvb2wgc3VwcG9ydHNLZXlTeXN0ZW0oY29uc3QgU3RyaW5nJiBrZXlTeXN0
ZW0sIGNvbnN0IFN0cmluZyYgbWltZVR5cGUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZG
b3VuZGF0aW9uT2JqQy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91
bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMubW0KaW5kZXgg
NzE4OTI5YzYyMTIyMzExZjY5YTNkOGRhZTAyODIzZDMxNjE1MmI1Yi4uYWQ2MjU3NDI3MjQ0YmQ0
OTY5NTdjM2FiOWQxNmNjMGFhZGM2ZDQ4NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3Vu
ZGF0aW9uT2JqQy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZv
dW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLm1tCkBAIC0y
NzMsMTQgKzI3Myw1NCBAQCBzdGF0aWMgZGlzcGF0Y2hfcXVldWVfdCBnbG9iYWxQdWxsRGVsZWdh
dGVRdWV1ZSgpCiB9CiAjZW5kaWYKIAorY2xhc3MgTWVkaWFQbGF5ZXJGYWN0b3J5QVZGb3VuZGF0
aW9uT2JqQyBmaW5hbCA6IHB1YmxpYyBNZWRpYVBsYXllckZhY3RvcnkgeworcHJpdmF0ZToKKyAg
ICBNZWRpYVBsYXllckVudW1zOjpNZWRpYUVuZ2luZUlkZW50aWZpZXIgaWRlbnRpZmllcigpIGNv
bnN0IGZpbmFsIHsgcmV0dXJuIE1lZGlhUGxheWVyRW51bXM6Ok1lZGlhRW5naW5lSWRlbnRpZmll
cjo6QVZGb3VuZGF0aW9uOyB9OworCisgICAgc3RkOjp1bmlxdWVfcHRyPE1lZGlhUGxheWVyUHJp
dmF0ZUludGVyZmFjZT4gY3JlYXRlTWVkaWFFbmdpbmVQbGF5ZXIoTWVkaWFQbGF5ZXIqIHBsYXll
cikgY29uc3QgZmluYWwKKyAgICB7CisgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPE1lZGlhUGxh
eWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM+KHBsYXllcik7CisgICAgfQorCisgICAgdm9pZCBn
ZXRTdXBwb3J0ZWRUeXBlcyhIYXNoU2V0PFN0cmluZywgQVNDSUlDYXNlSW5zZW5zaXRpdmVIYXNo
PiYgdHlwZXMpIGNvbnN0IGZpbmFsCisgICAgeworICAgICAgICByZXR1cm4gTWVkaWFQbGF5ZXJQ
cml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6Z2V0U3VwcG9ydGVkVHlwZXModHlwZXMpOworICAgIH0K
KworICAgIE1lZGlhUGxheWVyOjpTdXBwb3J0c1R5cGUgc3VwcG9ydHNUeXBlQW5kQ29kZWNzKGNv
bnN0IE1lZGlhRW5naW5lU3VwcG9ydFBhcmFtZXRlcnMmIHBhcmFtZXRlcnMpIGNvbnN0IGZpbmFs
CisgICAgeworICAgICAgICByZXR1cm4gTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2Jq
Qzo6c3VwcG9ydHNUeXBlKHBhcmFtZXRlcnMpOworICAgIH0KKworICAgIEhhc2hTZXQ8UmVmUHRy
PFNlY3VyaXR5T3JpZ2luPj4gb3JpZ2luc0luTWVkaWFDYWNoZShjb25zdCBTdHJpbmcmIHBhdGgp
IGNvbnN0IGZpbmFsCisgICAgeworICAgICAgICByZXR1cm4gTWVkaWFQbGF5ZXJQcml2YXRlQVZG
b3VuZGF0aW9uT2JqQzo6b3JpZ2luc0luTWVkaWFDYWNoZShwYXRoKTsKKyAgICB9CisKKyAgICB2
b2lkIGNsZWFyTWVkaWFDYWNoZShjb25zdCBTdHJpbmcmIHBhdGgsIFdhbGxUaW1lIG1vZGlmaWVk
U2luY2UpIGNvbnN0IGZpbmFsCisgICAgeworICAgICAgICByZXR1cm4gTWVkaWFQbGF5ZXJQcml2
YXRlQVZGb3VuZGF0aW9uT2JqQzo6Y2xlYXJNZWRpYUNhY2hlKHBhdGgsIG1vZGlmaWVkU2luY2Up
OworICAgIH0KKworICAgIHZvaWQgY2xlYXJNZWRpYUNhY2hlRm9yT3JpZ2lucyhjb25zdCBTdHJp
bmcmIHBhdGgsIGNvbnN0IEhhc2hTZXQ8UmVmUHRyPFNlY3VyaXR5T3JpZ2luPj4mIG9yaWdpbnMp
IGNvbnN0IGZpbmFsCisgICAgeworICAgICAgICByZXR1cm4gTWVkaWFQbGF5ZXJQcml2YXRlQVZG
b3VuZGF0aW9uT2JqQzo6Y2xlYXJNZWRpYUNhY2hlRm9yT3JpZ2lucyhwYXRoLCBvcmlnaW5zKTsK
KyAgICB9CisKKyAgICBib29sIHN1cHBvcnRzS2V5U3lzdGVtKGNvbnN0IFN0cmluZyYga2V5U3lz
dGVtLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlKSBjb25zdCBmaW5hbAorICAgIHsKKyAgICAgICAg
cmV0dXJuIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OnN1cHBvcnRzS2V5U3lz
dGVtKGtleVN5c3RlbSwgbWltZVR5cGUpOworICAgIH0KK307CisKIHZvaWQgTWVkaWFQbGF5ZXJQ
cml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6cmVnaXN0ZXJNZWRpYUVuZ2luZShNZWRpYUVuZ2luZVJl
Z2lzdHJhciByZWdpc3RyYXIpCiB7CiAgICAgaWYgKCFpc0F2YWlsYWJsZSgpKQogICAgICAgICBy
ZXR1cm47CiAKLSAgICByZWdpc3RyYXIoW10oTWVkaWFQbGF5ZXIqIHBsYXllcikgeyByZXR1cm4g
bWFrZVVuaXF1ZTxNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDPihwbGF5ZXIpOyB9
LAotICAgICAgICAgICAgZ2V0U3VwcG9ydGVkVHlwZXMsIHN1cHBvcnRzVHlwZSwgb3JpZ2luc0lu
TWVkaWFDYWNoZSwgY2xlYXJNZWRpYUNhY2hlLCBjbGVhck1lZGlhQ2FjaGVGb3JPcmlnaW5zLCBz
dXBwb3J0c0tleVN5c3RlbSk7CiAgICAgQVNTRVJUKEFWQXNzZXRNSU1FVHlwZUNhY2hlOjpzaW5n
bGV0b24oKS5pc0F2YWlsYWJsZSgpKTsKKworICAgIHJlZ2lzdHJhcihtYWtlVW5pcXVlPE1lZGlh
UGxheWVyRmFjdG9yeUFWRm91bmRhdGlvbk9iakM+KCkpOwogfQogCiBzdGF0aWMgQVZBc3NldENh
Y2hlICphc3NldENhY2hlRm9yUGF0aChjb25zdCBTdHJpbmcmIHBhdGgpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBs
YXllclByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVNZWRpYVNvdXJj
ZUFWRk9iakMubW0KaW5kZXggZGZmM2UyNDUyYmY1YWUyNWFjNDYzMDViMTAzOWZlMjg3M2M5OGI1
Zi4uYmFjYmYwZWE3ODA2OTAxMjI2NGEzYTY5YjA3NmJkZWQ3YzA3YWExYyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQ
bGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlh
U291cmNlQVZGT2JqQy5tbQpAQCAtMTk2LDE0ICsxOTYsMzQgQEAgTWVkaWFQbGF5ZXJQcml2YXRl
TWVkaWFTb3VyY2VBVkZPYmpDOjp+TWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpD
KCkKICNwcmFnbWEgbWFyayAtCiAjcHJhZ21hIG1hcmsgTWVkaWFQbGF5ZXIgRmFjdG9yeSBNZXRo
b2RzCiAKK2NsYXNzIE1lZGlhUGxheWVyRmFjdG9yeU1lZGlhU291cmNlQVZGT2JqQyBmaW5hbCA6
IHB1YmxpYyBNZWRpYVBsYXllckZhY3RvcnkgeworcHJpdmF0ZToKKyAgICBNZWRpYVBsYXllckVu
dW1zOjpNZWRpYUVuZ2luZUlkZW50aWZpZXIgaWRlbnRpZmllcigpIGNvbnN0IGZpbmFsIHsgcmV0
dXJuIE1lZGlhUGxheWVyRW51bXM6Ok1lZGlhRW5naW5lSWRlbnRpZmllcjo6QVZGb3VuZGF0aW9u
TVNFOyB9OworCisgICAgc3RkOjp1bmlxdWVfcHRyPE1lZGlhUGxheWVyUHJpdmF0ZUludGVyZmFj
ZT4gY3JlYXRlTWVkaWFFbmdpbmVQbGF5ZXIoTWVkaWFQbGF5ZXIqIHBsYXllcikgY29uc3QgZmlu
YWwKKyAgICB7CisgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPE1lZGlhUGxheWVyUHJpdmF0ZU1l
ZGlhU291cmNlQVZGT2JqQz4ocGxheWVyKTsgICAgICAgIAorICAgIH0KKworICAgIHZvaWQgZ2V0
U3VwcG9ydGVkVHlwZXMoSGFzaFNldDxTdHJpbmcsIEFTQ0lJQ2FzZUluc2Vuc2l0aXZlSGFzaD4m
IHR5cGVzKSBjb25zdCBmaW5hbAorICAgIHsKKyAgICAgICAgcmV0dXJuIE1lZGlhUGxheWVyUHJp
dmF0ZU1lZGlhU291cmNlQVZGT2JqQzo6Z2V0U3VwcG9ydGVkVHlwZXModHlwZXMpOworICAgIH0K
KworICAgIE1lZGlhUGxheWVyOjpTdXBwb3J0c1R5cGUgc3VwcG9ydHNUeXBlQW5kQ29kZWNzKGNv
bnN0IE1lZGlhRW5naW5lU3VwcG9ydFBhcmFtZXRlcnMmIHBhcmFtZXRlcnMpIGNvbnN0IGZpbmFs
CisgICAgeworICAgICAgICByZXR1cm4gTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZP
YmpDOjpzdXBwb3J0c1R5cGUocGFyYW1ldGVycyk7CisgICAgfQorfTsKKwogdm9pZCBNZWRpYVBs
YXllclByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakM6OnJlZ2lzdGVyTWVkaWFFbmdpbmUoTWVkaWFF
bmdpbmVSZWdpc3RyYXIgcmVnaXN0cmFyKQogewogICAgIGlmICghaXNBdmFpbGFibGUoKSkKICAg
ICAgICAgcmV0dXJuOwogCi0gICAgcmVnaXN0cmFyKFtdKE1lZGlhUGxheWVyKiBwbGF5ZXIpIHsg
cmV0dXJuIG1ha2VVbmlxdWU8TWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDPihw
bGF5ZXIpOyB9LAotICAgICAgICBnZXRTdXBwb3J0ZWRUeXBlcywgc3VwcG9ydHNUeXBlLCAwLCAw
LCAwLCAwKTsKICAgICBBU1NFUlQoQVZBc3NldE1JTUVUeXBlQ2FjaGU6OnNpbmdsZXRvbigpLmlz
QXZhaWxhYmxlKCkpOworCisgICAgcmVnaXN0cmFyKG1ha2VVbmlxdWU8TWVkaWFQbGF5ZXJGYWN0
b3J5TWVkaWFTb3VyY2VBVkZPYmpDPigpKTsKIH0KIAogYm9vbCBNZWRpYVBsYXllclByaXZhdGVN
ZWRpYVNvdXJjZUFWRk9iakM6OmlzQXZhaWxhYmxlKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0
ZU1lZGlhU3RyZWFtQVZGT2JqQy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQy5t
bQppbmRleCAyNTE5YzExNGY0MDg5NjlhM2M0MGJlYjM4NTQzNTkwOGYwYjI1YjE3Li42YzVmNTBi
NGRhMDBkMjEwMmJhZGUzNzk0ZjlkZGQwYmQ0MTkyNjYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZh
dGVNZWRpYVN0cmVhbUFWRk9iakMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZP
YmpDLm1tCkBAIC0yMjAsMTEgKzIyMCwzMiBAQCBNZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVh
bUFWRk9iakM6On5NZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakMoKQogI3ByYWdt
YSBtYXJrIC0KICNwcmFnbWEgbWFyayBNZWRpYVBsYXllciBGYWN0b3J5IE1ldGhvZHMKIAorY2xh
c3MgTWVkaWFQbGF5ZXJGYWN0b3J5TWVkaWFTdHJlYW1BVkZPYmpDIGZpbmFsIDogcHVibGljIE1l
ZGlhUGxheWVyRmFjdG9yeSB7Citwcml2YXRlOgorICAgIE1lZGlhUGxheWVyRW51bXM6Ok1lZGlh
RW5naW5lSWRlbnRpZmllciBpZGVudGlmaWVyKCkgY29uc3QgZmluYWwgeyByZXR1cm4gTWVkaWFQ
bGF5ZXJFbnVtczo6TWVkaWFFbmdpbmVJZGVudGlmaWVyOjpBVkZvdW5kYXRpb25NZWRpYVN0cmVh
bTsgfTsKKworICAgIHN0ZDo6dW5pcXVlX3B0cjxNZWRpYVBsYXllclByaXZhdGVJbnRlcmZhY2U+
IGNyZWF0ZU1lZGlhRW5naW5lUGxheWVyKE1lZGlhUGxheWVyKiBwbGF5ZXIpIGNvbnN0IGZpbmFs
CisgICAgeworICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxNZWRpYVBsYXllclByaXZhdGVNZWRp
YVN0cmVhbUFWRk9iakM+KHBsYXllcik7CisgICAgfQorCisgICAgdm9pZCBnZXRTdXBwb3J0ZWRU
eXBlcyhIYXNoU2V0PFN0cmluZywgQVNDSUlDYXNlSW5zZW5zaXRpdmVIYXNoPiYgdHlwZXMpIGNv
bnN0IGZpbmFsCisgICAgeworICAgICAgICByZXR1cm4gTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFT
dHJlYW1BVkZPYmpDOjpnZXRTdXBwb3J0ZWRUeXBlcyh0eXBlcyk7CisgICAgfQorCisgICAgTWVk
aWFQbGF5ZXI6OlN1cHBvcnRzVHlwZSBzdXBwb3J0c1R5cGVBbmRDb2RlY3MoY29uc3QgTWVkaWFF
bmdpbmVTdXBwb3J0UGFyYW1ldGVycyYgcGFyYW1ldGVycykgY29uc3QgZmluYWwKKyAgICB7Cisg
ICAgICAgIHJldHVybiBNZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakM6OnN1cHBv
cnRzVHlwZShwYXJhbWV0ZXJzKTsKKyAgICB9Cit9OworCiB2b2lkIE1lZGlhUGxheWVyUHJpdmF0
ZU1lZGlhU3RyZWFtQVZGT2JqQzo6cmVnaXN0ZXJNZWRpYUVuZ2luZShNZWRpYUVuZ2luZVJlZ2lz
dHJhciByZWdpc3RyYXIpCiB7Ci0gICAgaWYgKGlzQXZhaWxhYmxlKCkpCi0gICAgICAgIHJlZ2lz
dHJhcihbXShNZWRpYVBsYXllciogcGxheWVyKSB7IHJldHVybiBtYWtlVW5pcXVlPE1lZGlhUGxh
eWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQz4ocGxheWVyKTsgfSwgZ2V0U3VwcG9ydGVkVHlw
ZXMsCi0gICAgICAgICAgICBzdXBwb3J0c1R5cGUsIDAsIDAsIDAsIDApOworICAgIGlmICghaXNB
dmFpbGFibGUoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgcmVnaXN0cmFyKG1ha2VVbmlxdWU8
TWVkaWFQbGF5ZXJGYWN0b3J5TWVkaWFTdHJlYW1BVkZPYmpDPigpKTsKIH0KIAogYm9vbCBNZWRp
YVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakM6OmlzQXZhaWxhYmxlKCkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXll
clByaXZhdGVHU3RyZWFtZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Z3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5jcHAKaW5kZXggZDQ4ODU0MjI2
N2EzN2EyYjM4ZDU5YjNkMzhiZjQyOTE5YTRhMTc4NS4uNTNkNTZmOGU5NTA4MzQyODgzN2NlYzE4
YTQxMGFjNTg0MWIwZTAyNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0
ZUdTdHJlYW1lci5jcHAKQEAgLTQ2NCwxNCArNDY0LDM3IEBAIGJvb2wgTWVkaWFQbGF5ZXJQcml2
YXRlR1N0cmVhbWVyOjppc0F2YWlsYWJsZSgpCiAgICAgcmV0dXJuIGZhY3Rvcnk7CiB9CiAKK2Ns
YXNzIE1lZGlhUGxheWVyRmFjdG9yeUdTdHJlYW1lciBmaW5hbCA6IHB1YmxpYyBNZWRpYVBsYXll
ckZhY3RvcnkgeworcHJpdmF0ZToKKyAgICBNZWRpYVBsYXllckVudW1zOjpNZWRpYUVuZ2luZUlk
ZW50aWZpZXIgaWRlbnRpZmllcigpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIE1lZGlhUGxheWVyRW51
bXM6Ok1lZGlhRW5naW5lSWRlbnRpZmllcjo6R1N0cmVhbWVyOyB9OworCisgICAgc3RkOjp1bmlx
dWVfcHRyPE1lZGlhUGxheWVyUHJpdmF0ZUludGVyZmFjZT4gY3JlYXRlTWVkaWFFbmdpbmVQbGF5
ZXIoTWVkaWFQbGF5ZXIqIHBsYXllcikgY29uc3QgZmluYWwKKyAgICB7CisgICAgICAgIHJldHVy
biBtYWtlVW5pcXVlPE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcj4ocGxheWVyKTsKKyAgICB9
CisKKyAgICB2b2lkIGdldFN1cHBvcnRlZFR5cGVzKEhhc2hTZXQ8U3RyaW5nLCBBU0NJSUNhc2VJ
bnNlbnNpdGl2ZUhhc2g+JiB0eXBlcykgY29uc3QgZmluYWwKKyAgICB7CisgICAgICAgIHJldHVy
biBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6OmdldFN1cHBvcnRlZFR5cGVzKHR5cGVzKTsK
KyAgICB9CisKKyAgICBNZWRpYVBsYXllcjo6U3VwcG9ydHNUeXBlIHN1cHBvcnRzVHlwZUFuZENv
ZGVjcyhjb25zdCBNZWRpYUVuZ2luZVN1cHBvcnRQYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzKSBjb25z
dCBmaW5hbAorICAgIHsKKyAgICAgICAgcmV0dXJuIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1l
cjo6c3VwcG9ydHNUeXBlKHBhcmFtZXRlcnMpOworICAgIH0KKworICAgIGJvb2wgc3VwcG9ydHNL
ZXlTeXN0ZW0oY29uc3QgU3RyaW5nJiBrZXlTeXN0ZW0sIGNvbnN0IFN0cmluZyYgbWltZVR5cGUp
IGNvbnN0IGZpbmFsCisgICAgeworICAgICAgICByZXR1cm4gTWVkaWFQbGF5ZXJQcml2YXRlR1N0
cmVhbWVyOjpzdXBwb3J0c0tleVN5c3RlbShrZXlTeXN0ZW0sIG1pbWVUeXBlKTsKKyAgICB9Cit9
OworCiB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6cmVnaXN0ZXJNZWRpYUVuZ2lu
ZShNZWRpYUVuZ2luZVJlZ2lzdHJhciByZWdpc3RyYXIpCiB7CiAgICAgaW5pdGlhbGl6ZURlYnVn
Q2F0ZWdvcnkoKTsKIAotICAgIGlmIChpc0F2YWlsYWJsZSgpKSB7Ci0gICAgICAgIHJlZ2lzdHJh
cihbXShNZWRpYVBsYXllciogcGxheWVyKSB7IHJldHVybiBtYWtlVW5pcXVlPE1lZGlhUGxheWVy
UHJpdmF0ZUdTdHJlYW1lcj4ocGxheWVyKTsgfSwKLSAgICAgICAgICAgIGdldFN1cHBvcnRlZFR5
cGVzLCBzdXBwb3J0c1R5cGUsIG51bGxwdHIsIG51bGxwdHIsIG51bGxwdHIsIHN1cHBvcnRzS2V5
U3lzdGVtKTsKLSAgICB9CisgICAgaWYgKGlzQXZhaWxhYmxlKCkpCisgICAgICAgIHJlZ2lzdHJh
cihtYWtlVW5pcXVlPE1lZGlhUGxheWVyRmFjdG9yeUdTdHJlYW1lcj4oKSk7CiB9CiAKIHZvaWQg
TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpsb2FkRnVsbChjb25zdCBTdHJpbmcmIHVybFN0
cmluZywgY29uc3QgU3RyaW5nJiBwaXBlbGluZU5hbWUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVh
bWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQ
bGF5ZXJQcml2YXRlR1N0cmVhbWVyLmgKaW5kZXggZjljNDdhMWY2MDEyNGI5OGJmY2NiYWUxYzcz
YTRhMDQ1MTg1MzhkMS4uODUxNjVkMWJmMTI5Y2VjZTFhMTI2ZDFjMzA0ZDNmYzk2MmU3MjUzOCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01l
ZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIuaApAQCAtMzk0
LDYgKzM5NCw3IEBAIHByaXZhdGU6CiAgICAgR3N0RWxlbWVudCogY3JlYXRlQXVkaW9TaW5rKCk7
CiAgICAgR3N0RWxlbWVudCogYXVkaW9TaW5rKCkgY29uc3Q7CiAKKyAgICBmcmllbmQgY2xhc3Mg
TWVkaWFQbGF5ZXJGYWN0b3J5R1N0cmVhbWVyOwogICAgIHN0YXRpYyB2b2lkIGdldFN1cHBvcnRl
ZFR5cGVzKEhhc2hTZXQ8U3RyaW5nLCBBU0NJSUNhc2VJbnNlbnNpdGl2ZUhhc2g+Jik7CiAgICAg
c3RhdGljIE1lZGlhUGxheWVyOjpTdXBwb3J0c1R5cGUgc3VwcG9ydHNUeXBlKGNvbnN0IE1lZGlh
RW5naW5lU3VwcG9ydFBhcmFtZXRlcnMmKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL21zZS9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFt
ZXJNU0UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL21z
ZS9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJNU0UuY3BwCmluZGV4IDgyMDE1NWU1NGQ4ODdl
NTE2N2EzNDBhZGQzYzRiMzFkNDk2ZTU2YWIuLjZiNmQ5ZTA0YWNkNDA1MTg5NGUyMTA2NWQ0YTU2
ZmRkMjVjY2EzMjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2dzdHJlYW1lci9tc2UvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyTVNFLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvbXNlL01lZGlhUGxheWVy
UHJpdmF0ZUdTdHJlYW1lck1TRS5jcHAKQEAgLTcyLDE0ICs3MiwzNyBAQCBHU1RfREVCVUdfQ0FU
RUdPUlkod2Via2l0X21zZV9kZWJ1Zyk7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorY2xhc3Mg
TWVkaWFQbGF5ZXJGYWN0b3J5R1N0cmVhbWVyTVNFIGZpbmFsIDogcHVibGljIE1lZGlhUGxheWVy
RmFjdG9yeSB7Citwcml2YXRlOgorICAgIE1lZGlhUGxheWVyRW51bXM6Ok1lZGlhRW5naW5lSWRl
bnRpZmllciBpZGVudGlmaWVyKCkgY29uc3QgZmluYWwgeyByZXR1cm4gTWVkaWFQbGF5ZXJFbnVt
czo6TWVkaWFFbmdpbmVJZGVudGlmaWVyOjpHU3RyZWFtZXJNU0U7IH07CisKKyAgICBzdGQ6OnVu
aXF1ZV9wdHI8TWVkaWFQbGF5ZXJQcml2YXRlSW50ZXJmYWNlPiBjcmVhdGVNZWRpYUVuZ2luZVBs
YXllcihNZWRpYVBsYXllciogcGxheWVyKSBjb25zdCBmaW5hbAorICAgIHsKKyAgICAgICAgcmV0
dXJuIG1ha2VVbmlxdWU8TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyTVNFPihwbGF5ZXIpOwor
ICAgIH0KKworICAgIHZvaWQgZ2V0U3VwcG9ydGVkVHlwZXMoSGFzaFNldDxTdHJpbmcsIEFTQ0lJ
Q2FzZUluc2Vuc2l0aXZlSGFzaD4mIHR5cGVzKSBjb25zdCBmaW5hbAorICAgIHsKKyAgICAgICAg
cmV0dXJuIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lck1TRTo6Z2V0U3VwcG9ydGVkVHlwZXMo
dHlwZXMpOworICAgIH0KKworICAgIE1lZGlhUGxheWVyOjpTdXBwb3J0c1R5cGUgc3VwcG9ydHNU
eXBlQW5kQ29kZWNzKGNvbnN0IE1lZGlhRW5naW5lU3VwcG9ydFBhcmFtZXRlcnMmIHBhcmFtZXRl
cnMpIGNvbnN0IGZpbmFsCisgICAgeworICAgICAgICByZXR1cm4gTWVkaWFQbGF5ZXJQcml2YXRl
R1N0cmVhbWVyTVNFOjpzdXBwb3J0c1R5cGUocGFyYW1ldGVycyk7CisgICAgfQorCisgICAgYm9v
bCBzdXBwb3J0c0tleVN5c3RlbShjb25zdCBTdHJpbmcmIGtleVN5c3RlbSwgY29uc3QgU3RyaW5n
JiBtaW1lVHlwZSkgY29uc3QgZmluYWwKKyAgICB7CisgICAgICAgIHJldHVybiBNZWRpYVBsYXll
clByaXZhdGVHU3RyZWFtZXJNU0U6OnN1cHBvcnRzS2V5U3lzdGVtKGtleVN5c3RlbSwgbWltZVR5
cGUpOworICAgIH0KK307CisKIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyTVNFOjpy
ZWdpc3Rlck1lZGlhRW5naW5lKE1lZGlhRW5naW5lUmVnaXN0cmFyIHJlZ2lzdHJhcikKIHsKICAg
ICBpbml0aWFsaXplR1N0cmVhbWVyQW5kUmVnaXN0ZXJXZWJLaXRFbGVtZW50cygpOwogICAgIEdT
VF9ERUJVR19DQVRFR09SWV9JTklUKHdlYmtpdF9tc2VfZGVidWcsICJ3ZWJraXRtc2UiLCAwLCAi
V2ViS2l0IE1TRSBtZWRpYSBwbGF5ZXIiKTsKLSAgICBpZiAoaXNBdmFpbGFibGUoKSkgewotICAg
ICAgICByZWdpc3RyYXIoW10oTWVkaWFQbGF5ZXIqIHBsYXllcikgeyByZXR1cm4gbWFrZVVuaXF1
ZTxNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJNU0U+KHBsYXllcik7IH0sCi0gICAgICAgICAg
ICBnZXRTdXBwb3J0ZWRUeXBlcywgc3VwcG9ydHNUeXBlLCBudWxscHRyLCBudWxscHRyLCBudWxs
cHRyLCBzdXBwb3J0c0tleVN5c3RlbSk7Ci0gICAgfQorICAgIGlmIChpc0F2YWlsYWJsZSgpKQor
ICAgICAgICByZWdpc3RyYXIobWFrZVVuaXF1ZTxNZWRpYVBsYXllckZhY3RvcnlHU3RyZWFtZXJN
U0U+KCkpOwogfQogCiBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJNU0U6Ok1lZGlhUGxheWVy
UHJpdmF0ZUdTdHJlYW1lck1TRShNZWRpYVBsYXllciogcGxheWVyKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL21zZS9NZWRpYVBsYXllclBy
aXZhdGVHU3RyZWFtZXJNU0UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dz
dHJlYW1lci9tc2UvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyTVNFLmgKaW5kZXggOWIzMzMw
NWY3ZjExNmRhYzkxYzY0MWM0ODQ1OTNiZTdhODMwNzM1Zi4uNWQxMDEzZmNiZWYwNTc5MzQ4MGJi
MzhlZGVmZTRiNjRmMGFjZjQyYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZ3N0cmVhbWVyL21zZS9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJNU0UuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvbXNlL01lZGlh
UGxheWVyUHJpdmF0ZUdTdHJlYW1lck1TRS5oCkBAIC04NSw2ICs4NSw3IEBAIHB1YmxpYzoKICAg
ICB2b2lkIHVuYmxvY2tEdXJhdGlvbkNoYW5nZXMoKTsKIAogcHJpdmF0ZToKKyAgICBmcmllbmQg
Y2xhc3MgTWVkaWFQbGF5ZXJGYWN0b3J5R1N0cmVhbWVyTVNFOwogICAgIHN0YXRpYyB2b2lkIGdl
dFN1cHBvcnRlZFR5cGVzKEhhc2hTZXQ8U3RyaW5nLCBBU0NJSUNhc2VJbnNlbnNpdGl2ZUhhc2g+
Jik7CiAgICAgc3RhdGljIE1lZGlhUGxheWVyOjpTdXBwb3J0c1R5cGUgc3VwcG9ydHNUeXBlKGNv
bnN0IE1lZGlhRW5naW5lU3VwcG9ydFBhcmFtZXRlcnMmKTsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvaG9sZXB1bmNoL01lZGlhUGxheWVyUHJpdmF0ZUhv
bGVQdW5jaC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ob2xlcHVuY2gv
TWVkaWFQbGF5ZXJQcml2YXRlSG9sZVB1bmNoLmNwcAppbmRleCBiOGM0ZTAxZmFkZjQxM2FkZGM3
MTU0ZTFlYWYxZjViYjA1NTM2YTBjLi41NmM4YjkyZDk2ZGNlYzhlMGY2OTUyZWYxYjkwZjdjZGEy
Zjc2ZTc0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ob2xl
cHVuY2gvTWVkaWFQbGF5ZXJQcml2YXRlSG9sZVB1bmNoLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9ob2xlcHVuY2gvTWVkaWFQbGF5ZXJQcml2YXRlSG9sZVB1bmNo
LmNwcApAQCAtMTM5LDEwICsxMzksMjkgQEAgTWVkaWFQbGF5ZXI6OlN1cHBvcnRzVHlwZSBNZWRp
YVBsYXllclByaXZhdGVIb2xlUHVuY2g6OnN1cHBvcnRzVHlwZShjb25zdCBNZWRpYUUKICAgICBy
ZXR1cm4gTWVkaWFQbGF5ZXI6OlN1cHBvcnRzVHlwZTo6SXNOb3RTdXBwb3J0ZWQ7CiB9CiAKK2Ns
YXNzIE1lZGlhUGxheWVyRmFjdG9yeUhvbGVQdW5jaCBmaW5hbCA6IHB1YmxpYyBNZWRpYVBsYXll
ckZhY3RvcnkgeworcHJpdmF0ZToKKyAgICBNZWRpYVBsYXllckVudW1zOjpNZWRpYUVuZ2luZUlk
ZW50aWZpZXIgaWRlbnRpZmllcigpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIE1lZGlhUGxheWVyRW51
bXM6Ok1lZGlhRW5naW5lSWRlbnRpZmllcjo6SG9sZVB1bmNoOyB9OworCisgICAgc3RkOjp1bmlx
dWVfcHRyPE1lZGlhUGxheWVyUHJpdmF0ZUludGVyZmFjZT4gY3JlYXRlTWVkaWFFbmdpbmVQbGF5
ZXIoTWVkaWFQbGF5ZXIqIHBsYXllcikgY29uc3QgZmluYWwKKyAgICB7CisgICAgICAgIHJldHVy
biBtYWtlVW5pcXVlPE1lZGlhUGxheWVyUHJpdmF0ZUhvbGVQdW5jaD4ocGxheWVyKTsKKyAgICB9
CisKKyAgICB2b2lkIGdldFN1cHBvcnRlZFR5cGVzKEhhc2hTZXQ8U3RyaW5nLCBBU0NJSUNhc2VJ
bnNlbnNpdGl2ZUhhc2g+JiB0eXBlcykgY29uc3QgZmluYWwKKyAgICB7CisgICAgICAgIHJldHVy
biBNZWRpYVBsYXllclByaXZhdGVIb2xlUHVuY2g6OmdldFN1cHBvcnRlZFR5cGVzKHR5cGVzKTsK
KyAgICB9CisKKyAgICBNZWRpYVBsYXllcjo6U3VwcG9ydHNUeXBlIHN1cHBvcnRzVHlwZUFuZENv
ZGVjcyhjb25zdCBNZWRpYUVuZ2luZVN1cHBvcnRQYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzKSBjb25z
dCBmaW5hbAorICAgIHsKKyAgICAgICAgcmV0dXJuIE1lZGlhUGxheWVyUHJpdmF0ZUhvbGVQdW5j
aDo6c3VwcG9ydHNUeXBlKHBhcmFtZXRlcnMpOworICAgIH0KK307CisKIHZvaWQgTWVkaWFQbGF5
ZXJQcml2YXRlSG9sZVB1bmNoOjpyZWdpc3Rlck1lZGlhRW5naW5lKE1lZGlhRW5naW5lUmVnaXN0
cmFyIHJlZ2lzdHJhcikKIHsKLSAgICByZWdpc3RyYXIoW10oTWVkaWFQbGF5ZXIqIHBsYXllcikg
eyByZXR1cm4gbWFrZVVuaXF1ZTxNZWRpYVBsYXllclByaXZhdGVIb2xlUHVuY2g+KHBsYXllcik7
IH0sCi0gICAgICAgIGdldFN1cHBvcnRlZFR5cGVzLCBzdXBwb3J0c1R5cGUsIG51bGxwdHIsIG51
bGxwdHIsIG51bGxwdHIsIG51bGxwdHIpOworICAgIHJlZ2lzdHJhcihtYWtlVW5pcXVlPE1lZGlh
UGxheWVyRmFjdG9yeUhvbGVQdW5jaD4oKSk7CiB9CiAKIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRl
SG9sZVB1bmNoOjpub3RpZnlSZWFkeVN0YXRlKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2hvbGVwdW5jaC9NZWRpYVBsYXllclByaXZhdGVIb2xlUHVuY2gu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2hvbGVwdW5jaC9NZWRpYVBsYXll
clByaXZhdGVIb2xlUHVuY2guaAppbmRleCA5YTEwODdkMzJiMjViM2MzMGRjZGRiZWI0MDA4Y2Ew
NTAwOTU3ZjVhLi4zYjM0YmZhOTJhYmJmNDgxYTFiNTQyMmNiNTVhZjY1NWU2MzZiYTBkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ob2xlcHVuY2gvTWVkaWFQ
bGF5ZXJQcml2YXRlSG9sZVB1bmNoLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvaG9sZXB1bmNoL01lZGlhUGxheWVyUHJpdmF0ZUhvbGVQdW5jaC5oCkBAIC05OCw2ICs5
OCw3IEBAIHB1YmxpYzoKICNlbmRpZgogCiBwcml2YXRlOgorICAgIGZyaWVuZCBjbGFzcyBNZWRp
YVBsYXllckZhY3RvcnlIb2xlUHVuY2g7CiAgICAgc3RhdGljIHZvaWQgZ2V0U3VwcG9ydGVkVHlw
ZXMoSGFzaFNldDxTdHJpbmcsIEFTQ0lJQ2FzZUluc2Vuc2l0aXZlSGFzaD4mKTsKICAgICBzdGF0
aWMgTWVkaWFQbGF5ZXI6OlN1cHBvcnRzVHlwZSBzdXBwb3J0c1R5cGUoY29uc3QgTWVkaWFFbmdp
bmVTdXBwb3J0UGFyYW1ldGVycyYpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy93aW4vTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFGb3VuZGF0aW9uLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9NZWRpYVBsYXllclByaXZhdGVN
ZWRpYUZvdW5kYXRpb24uY3BwCmluZGV4IGJiYmI0MzIyZWQzYTc1YmY4MWQwYmY0Nzc2MmYwNTA4
MmMzOTRiYjAuLmU1MzdkOTFhOTRmNTFmYzQ5M2U0ZDFiZWRmYzc2NjY5Nzk4YTJiNTMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9NZWRpYVBsYXllclBy
aXZhdGVNZWRpYUZvdW5kYXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL3dpbi9NZWRpYVBsYXllclByaXZhdGVNZWRpYUZvdW5kYXRpb24uY3BwCkBAIC03OSwx
MiArNzksMzAgQEAgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFGb3VuZGF0aW9uOjp+TWVkaWFQbGF5
ZXJQcml2YXRlTWVkaWFGb3VuZGF0aW9uKCkKICAgICBlbmRTZXNzaW9uKCk7CiB9CiAKK2NsYXNz
IE1lZGlhUGxheWVyRmFjdG9yeU1lZGlhRm91bmRhdGlvbiBmaW5hbCA6IHB1YmxpYyBNZWRpYVBs
YXllckZhY3RvcnkgeworcHJpdmF0ZToKKyAgICBNZWRpYVBsYXllckVudW1zOjpNZWRpYUVuZ2lu
ZUlkZW50aWZpZXIgaWRlbnRpZmllcigpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIE1lZGlhUGxheWVy
RW51bXM6Ok1lZGlhRW5naW5lSWRlbnRpZmllcjo6TWVkaWFGb3VuZGF0aW9uOyB9OworCisgICAg
c3RkOjp1bmlxdWVfcHRyPE1lZGlhUGxheWVyUHJpdmF0ZUludGVyZmFjZT4gY3JlYXRlTWVkaWFF
bmdpbmVQbGF5ZXIoTWVkaWFQbGF5ZXIqIHBsYXllcikgY29uc3QgZmluYWwKKyAgICB7CisgICAg
ICAgIHJldHVybiBtYWtlVW5pcXVlPE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhRm91bmRhdGlvbj4o
cGxheWVyKTsKKyAgICB9CisKKyAgICB2b2lkIGdldFN1cHBvcnRlZFR5cGVzKEhhc2hTZXQ8U3Ry
aW5nLCBBU0NJSUNhc2VJbnNlbnNpdGl2ZUhhc2g+JiB0eXBlcykgY29uc3QgZmluYWwKKyAgICB7
CisgICAgICAgIHJldHVybiBNZWRpYVBsYXllclByaXZhdGVNZWRpYUZvdW5kYXRpb246OmdldFN1
cHBvcnRlZFR5cGVzKHR5cGVzKTsKKyAgICB9CisKKyAgICBNZWRpYVBsYXllcjo6U3VwcG9ydHNU
eXBlIHN1cHBvcnRzVHlwZUFuZENvZGVjcyhjb25zdCBNZWRpYUVuZ2luZVN1cHBvcnRQYXJhbWV0
ZXJzJiBwYXJhbWV0ZXJzKSBjb25zdCBmaW5hbAorICAgIHsKKyAgICAgICAgcmV0dXJuIE1lZGlh
UGxheWVyUHJpdmF0ZU1lZGlhRm91bmRhdGlvbjo6c3VwcG9ydHNUeXBlKHBhcmFtZXRlcnMpOwor
ICAgIH0KK307CisKIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFGb3VuZGF0aW9uOjpyZWdp
c3Rlck1lZGlhRW5naW5lKE1lZGlhRW5naW5lUmVnaXN0cmFyIHJlZ2lzdHJhcikKIHsKLSAgICBp
ZiAoaXNBdmFpbGFibGUoKSkgewotICAgICAgICByZWdpc3RyYXIoW10oTWVkaWFQbGF5ZXIqIHBs
YXllcikgeyByZXR1cm4gbWFrZVVuaXF1ZTxNZWRpYVBsYXllclByaXZhdGVNZWRpYUZvdW5kYXRp
b24+KHBsYXllcik7IH0sCi0gICAgICAgICAgICBnZXRTdXBwb3J0ZWRUeXBlcywgc3VwcG9ydHNU
eXBlLCAwLCAwLCAwLCAwKTsKLSAgICB9CisgICAgaWYgKGlzQXZhaWxhYmxlKCkpCisgICAgICAg
IHJlZ2lzdHJhcihtYWtlVW5pcXVlPE1lZGlhUGxheWVyRmFjdG9yeU1lZGlhRm91bmRhdGlvbj4o
KSk7CiB9CiAKIGJvb2wgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFGb3VuZGF0aW9uOjppc0F2YWls
YWJsZSgpIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9tZWRpYXNv
dXJjZS9Nb2NrTWVkaWFQbGF5ZXJNZWRpYVNvdXJjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9tb2NrL21lZGlhc291cmNlL01vY2tNZWRpYVBsYXllck1lZGlhU291cmNlLmNwcAppbmRl
eCAwMWE2YTAwMzBmNGY0NjFkNDY3MjdiYjY5NjAxNjVhYjliY2ZhMWM4Li43ZDBjN2Q3Y2YwMmY0
MmFlYzczZGNjMzgyN2JiYjJiMTdjMzM1MmYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tb2NrL21lZGlhc291cmNlL01vY2tNZWRpYVBsYXllck1lZGlhU291cmNlLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL21lZGlhc291cmNlL01vY2tNZWRpYVBs
YXllck1lZGlhU291cmNlLmNwcApAQCAtMzcsMTEgKzM3LDI3IEBACiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAorY2xhc3MgTWVkaWFQbGF5ZXJGYWN0b3J5TWVkaWFTb3VyY2VNb2NrIGZpbmFsIDog
cHVibGljIE1lZGlhUGxheWVyRmFjdG9yeSB7Citwcml2YXRlOgorICAgIE1lZGlhUGxheWVyRW51
bXM6Ok1lZGlhRW5naW5lSWRlbnRpZmllciBpZGVudGlmaWVyKCkgY29uc3QgZmluYWwgeyByZXR1
cm4gTWVkaWFQbGF5ZXJFbnVtczo6TWVkaWFFbmdpbmVJZGVudGlmaWVyOjpNb2NrTVNFOyB9Owor
CisgICAgc3RkOjp1bmlxdWVfcHRyPE1lZGlhUGxheWVyUHJpdmF0ZUludGVyZmFjZT4gY3JlYXRl
TWVkaWFFbmdpbmVQbGF5ZXIoTWVkaWFQbGF5ZXIqIHBsYXllcikgY29uc3QgZmluYWwgeyByZXR1
cm4gbWFrZVVuaXF1ZTxNb2NrTWVkaWFQbGF5ZXJNZWRpYVNvdXJjZT4ocGxheWVyKTsgfQorCisg
ICAgdm9pZCBnZXRTdXBwb3J0ZWRUeXBlcyhIYXNoU2V0PFN0cmluZywgQVNDSUlDYXNlSW5zZW5z
aXRpdmVIYXNoPiYgdHlwZXMpIGNvbnN0IGZpbmFsCisgICAgeworICAgICAgICByZXR1cm4gTW9j
a01lZGlhUGxheWVyTWVkaWFTb3VyY2U6OmdldFN1cHBvcnRlZFR5cGVzKHR5cGVzKTsKKyAgICB9
CisKKyAgICBNZWRpYVBsYXllcjo6U3VwcG9ydHNUeXBlIHN1cHBvcnRzVHlwZUFuZENvZGVjcyhj
b25zdCBNZWRpYUVuZ2luZVN1cHBvcnRQYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzKSBjb25zdCBmaW5h
bAorICAgIHsKKyAgICAgICAgcmV0dXJuIE1vY2tNZWRpYVBsYXllck1lZGlhU291cmNlOjpzdXBw
b3J0c1R5cGUocGFyYW1ldGVycyk7CisgICAgfQorfTsKKwogLy8gTWVkaWFQbGF5ZXIgRW5pZ25l
IFN1cHBvcnQKIHZvaWQgTW9ja01lZGlhUGxheWVyTWVkaWFTb3VyY2U6OnJlZ2lzdGVyTWVkaWFF
bmdpbmUoTWVkaWFFbmdpbmVSZWdpc3RyYXIgcmVnaXN0cmFyKQogewotICAgIHJlZ2lzdHJhcihb
XSAoTWVkaWFQbGF5ZXIqIHBsYXllcikgeyByZXR1cm4gbWFrZVVuaXF1ZTxNb2NrTWVkaWFQbGF5
ZXJNZWRpYVNvdXJjZT4ocGxheWVyKTsgfSwgZ2V0U3VwcG9ydGVkVHlwZXMsCi0gICAgICAgIHN1
cHBvcnRzVHlwZSwgMCwgMCwgMCwgMCk7CisgICAgcmVnaXN0cmFyKG1ha2VVbmlxdWU8TWVkaWFQ
bGF5ZXJGYWN0b3J5TWVkaWFTb3VyY2VNb2NrPigpKTsKIH0KIAogLy8gRklYTUU6IFdoYXQgZG9l
cyB0aGUgd29yZCAiY2FjaGUiIG1lYW4gaGVyZT8KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
RGVyaXZlZFNvdXJjZXMtaW5wdXQueGNmaWxlbGlzdCBiL1NvdXJjZS9XZWJLaXQvRGVyaXZlZFNv
dXJjZXMtaW5wdXQueGNmaWxlbGlzdAppbmRleCA3ZjA4ZjJiMmYxODU4MmVkNTA0MDMyZGNhY2I1
NDc4NmExNjlhZDVmLi4zZWYxY2E4OGZmYWVhYTI5ZGNkODNiNzU1YzJiM2JmMjg4ZjBmMmFhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2VzLWlucHV0LnhjZmlsZWxpc3QK
KysrIGIvU291cmNlL1dlYktpdC9EZXJpdmVkU291cmNlcy1pbnB1dC54Y2ZpbGVsaXN0CkBAIC0x
Niw2ICsxNiw3IEBAICQoSkFWQVNDUklQVENPUkVfUFJJVkFURV9IRUFERVJTX0RJUikveHhkLnBs
CiAkKFBST0pFQ1RfRElSKS9HUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MubWVz
c2FnZXMuaW4KICQoUFJPSkVDVF9ESVIpL0dQVVByb2Nlc3MvR1BVUHJvY2Vzcy5tZXNzYWdlcy5p
bgogJChQUk9KRUNUX0RJUikvR1BVUHJvY2Vzcy9tYWMvY29tLmFwcGxlLldlYktpdC5HUFVQcm9j
ZXNzLnNiLmluCiskKFBST0pFQ1RfRElSKS9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUGxh
eWVyTWFuYWdlclByb3h5Lm1lc3NhZ2VzLmluCiAkKFBST0pFQ1RfRElSKS9OZXR3b3JrUHJvY2Vz
cy9Db29raWVzL1dlYkNvb2tpZU1hbmFnZXIubWVzc2FnZXMuaW4KICQoUFJPSkVDVF9ESVIpL05l
dHdvcmtQcm9jZXNzL0N1c3RvbVByb3RvY29scy9MZWdhY3lDdXN0b21Qcm90b2NvbE1hbmFnZXIu
bWVzc2FnZXMuaW4KICQoUFJPSkVDVF9ESVIpL05ldHdvcmtQcm9jZXNzL0luZGV4ZWREQi9XZWJJ
REJDb25uZWN0aW9uVG9DbGllbnQubWVzc2FnZXMuaW4KQEAgLTk3LDYgKzk4LDcgQEAgJChQUk9K
RUNUX0RJUikvV2ViUHJvY2Vzcy9DYWNoZS9XZWJDYWNoZVN0b3JhZ2VDb25uZWN0aW9uLm1lc3Nh
Z2VzLmluCiAkKFBST0pFQ1RfRElSKS9XZWJQcm9jZXNzL0RhdGFiYXNlcy9JbmRleGVkREIvV2Vi
SURCQ29ubmVjdGlvblRvU2VydmVyLm1lc3NhZ2VzLmluCiAkKFBST0pFQ1RfRElSKS9XZWJQcm9j
ZXNzL0Z1bGxTY3JlZW4vV2ViRnVsbFNjcmVlbk1hbmFnZXIubWVzc2FnZXMuaW4KICQoUFJPSkVD
VF9ESVIpL1dlYlByb2Nlc3MvR1BVL0dQVVByb2Nlc3NDb25uZWN0aW9uLm1lc3NhZ2VzLmluCisk
KFBST0pFQ1RfRElSKS9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVNZWRpYVBsYXllck1hbmFn
ZXIubWVzc2FnZXMuaW4KICQoUFJPSkVDVF9ESVIpL1dlYlByb2Nlc3MvR2VvbG9jYXRpb24vV2Vi
R2VvbG9jYXRpb25NYW5hZ2VyLm1lc3NhZ2VzLmluCiAkKFBST0pFQ1RfRElSKS9XZWJQcm9jZXNz
L05ldHdvcmsvTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLm1lc3NhZ2VzLmluCiAkKFBST0pFQ1Rf
RElSKS9XZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIubWVzc2FnZXMuaW4KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMtb3V0cHV0LnhjZmlsZWxpc3Qg
Yi9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2VzLW91dHB1dC54Y2ZpbGVsaXN0CmluZGV4IDNi
MWU5NDExNzAzOGJmMGQwNGEwNzU3ZjVlNmQ4NWUzMzRiZDc1YWUuLmM4YTNiNDk1YzBjZTU1NDEy
OTkyMzY4MTEzMjAwZGEyYjk0MDc5MjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvRGVyaXZl
ZFNvdXJjZXMtb3V0cHV0LnhjZmlsZWxpc3QKKysrIGIvU291cmNlL1dlYktpdC9EZXJpdmVkU291
cmNlcy1vdXRwdXQueGNmaWxlbGlzdApAQCAtMTE0LDYgKzExNCwxMiBAQCAkKEJVSUxUX1BST0RV
Q1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9QbHVnaW5Qcm94eU1lc3NhZ2VzUmVwbGll
cy5oCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9SZW1vdGVM
YXllclRyZWVEcmF3aW5nQXJlYVByb3h5TWVzc2FnZVJlY2VpdmVyLmNwcAogJChCVUlMVF9QUk9E
VUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIvUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0Fy
ZWFQcm94eU1lc3NhZ2VzLmgKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9X
ZWJLaXQyL1JlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhUHJveHlNZXNzYWdlc1JlcGxpZXMuaAor
JChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIvUmVtb3RlTWVkaWFQ
bGF5ZXJNYW5hZ2VyTWVzc2FnZVJlY2VpdmVyLmNwcAorJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rl
cml2ZWRTb3VyY2VzL1dlYktpdDIvUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyTWVzc2FnZXMuaAor
JChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIvUmVtb3RlTWVkaWFQ
bGF5ZXJNYW5hZ2VyTWVzc2FnZXNSZXBsaWVzLmgKKyQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJp
dmVkU291cmNlcy9XZWJLaXQyL1JlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5TWVzc2FnZVJl
Y2VpdmVyLmNwcAorJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIv
UmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHlNZXNzYWdlcy5oCiskKEJVSUxUX1BST0RVQ1RT
X0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9SZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94
eU1lc3NhZ2VzUmVwbGllcy5oCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMv
V2ViS2l0Mi9SZW1vdGVPYmplY3RSZWdpc3RyeU1lc3NhZ2VSZWNlaXZlci5jcHAKICQoQlVJTFRf
UFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQyL1JlbW90ZU9iamVjdFJlZ2lzdHJ5
TWVzc2FnZXMuaAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIv
UmVtb3RlT2JqZWN0UmVnaXN0cnlNZXNzYWdlc1JlcGxpZXMuaApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9EZXJpdmVkU291cmNlcy5tYWtlIGIvU291cmNlL1dlYktpdC9EZXJpdmVkU291cmNl
cy5tYWtlCmluZGV4IGJlNTI1ZTEzYzU5YmJkMTQ1NmU4ZjBkNDIzYmE2NDQxY2U4YjA4ZGEuLjk2
ZjNhMmVjZWYzMTE4Y2UyM2YzODc1MWQ3MmUyYWIwODNjZjRhYzQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMubWFrZQorKysgYi9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRT
b3VyY2VzLm1ha2UKQEAgLTI0LDYgKzI0LDcgQEAgVlBBVEggPSBcCiAgICAgJChXZWJLaXQyKSBc
CiAgICAgJChXZWJLaXQyKS9HUFVQcm9jZXNzIFwKICAgICAkKFdlYktpdDIpL0dQVVByb2Nlc3Mv
bWFjIFwKKyAgICAkKFdlYktpdDIpL0dQVVByb2Nlc3MvbWVkaWEgXAogICAgICQoV2ViS2l0Mikv
TmV0d29ya1Byb2Nlc3MgXAogICAgICQoV2ViS2l0MikvTmV0d29ya1Byb2Nlc3MvQ29va2llcyBc
CiAgICAgJChXZWJLaXQyKS9OZXR3b3JrUHJvY2Vzcy9jYWNoZSBcCkBAIC00OSw2ICs1MCw3IEBA
IFZQQVRIID0gXAogICAgICQoV2ViS2l0MikvV2ViUHJvY2Vzcy9GdWxsU2NyZWVuIFwKICAgICAk
KFdlYktpdDIpL1dlYlByb2Nlc3MvR2VvbG9jYXRpb24gXAogICAgICQoV2ViS2l0MikvV2ViUHJv
Y2Vzcy9HUFUgXAorICAgICQoV2ViS2l0MikvV2ViUHJvY2Vzcy9HUFUvbWVkaWEgXAogICAgICQo
V2ViS2l0MikvV2ViUHJvY2Vzcy9JY29uRGF0YWJhc2UgXAogICAgICQoV2ViS2l0MikvV2ViUHJv
Y2Vzcy9NZWRpYUNhY2hlIFwKICAgICAkKFdlYktpdDIpL1dlYlByb2Nlc3MvTWVkaWFTdHJlYW0g
XApAQCAtMTM1LDYgKzEzNyw4IEBAIE1FU1NBR0VfUkVDRUlWRVJTID0gXAogICAgIFBsdWdpblBy
b2Nlc3NQcm94eSBcCiAgICAgUGx1Z2luUHJveHkgXAogICAgIFJlbW90ZUxheWVyVHJlZURyYXdp
bmdBcmVhUHJveHkgXAorICAgIFJlbW90ZU1lZGlhUGxheWVyTWFuYWdlciBcCisgICAgUmVtb3Rl
TWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHkgXAogICAgIFJlbW90ZU9iamVjdFJlZ2lzdHJ5IFwKICAg
ICBSZW1vdGVTY3JvbGxpbmdDb29yZGluYXRvciBcCiAgICAgUmVtb3RlV2ViSW5zcGVjdG9yUHJv
eHkgXApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25U
b1dlYlByb2Nlc3MuY3BwIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25U
b1dlYlByb2Nlc3MuY3BwCmluZGV4IGJkMTM5ZmU1MzMxYmNjZTM2YzMzNDNiMTUyMTdkMDExZjI1
MjRjMzguLmMzNDhlMzBkZThhMjllOTczZWFlYWE2YTliOGE4ZTA5MzNhYTg4MjUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vz
cy5jcHAKQEAgLTM1LDYgKzM1LDggQEAKICNpbmNsdWRlICJHUFVQcm9jZXNzUHJveHlNZXNzYWdl
cy5oIgogI2luY2x1ZGUgIkxvZ2dpbmcuaCIKICNpbmNsdWRlICJSZW1vdGVMYXllclRyZWVEcmF3
aW5nQXJlYVByb3h5TWVzc2FnZXMuaCIKKyNpbmNsdWRlICJSZW1vdGVNZWRpYVBsYXllck1hbmFn
ZXJQcm94eS5oIgorI2luY2x1ZGUgIlJlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5TWVzc2Fn
ZXMuaCIKICNpbmNsdWRlICJSZW1vdGVTY3JvbGxpbmdDb29yZGluYXRvclRyYW5zYWN0aW9uLmgi
CiAjaW5jbHVkZSAiV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgiCiAjaW5jbHVkZSAiV2ViRXJyb3Jz
LmgiCkBAIC03NCw2ICs3NiwzMiBAQCB2b2lkIEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmRp
ZFJlY2VpdmVJbnZhbGlkTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mIGNvbm5lYwogICAgIENSQVNI
KCk7CiB9CiAKK1JlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5JiBHUFVDb25uZWN0aW9uVG9X
ZWJQcm9jZXNzOjpyZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eSgpCit7CisgICAgaWYgKCFt
X3JlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5KQorICAgICAgICBtX3JlbW90ZU1lZGlhUGxh
eWVyTWFuYWdlclByb3h5ID0gbWFrZVVuaXF1ZTxSZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94
eT4oKnRoaXMpOworCisgICAgcmV0dXJuICptX3JlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5
OworfQorCit2b2lkIEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmRpZFJlY2VpdmVNZXNzYWdl
KElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgSVBDOjpEZWNvZGVyJiBkZWNvZGVyKQorewor
ICAgIGlmIChkZWNvZGVyLm1lc3NhZ2VSZWNlaXZlck5hbWUoKSA9PSBNZXNzYWdlczo6UmVtb3Rl
TWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHk6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSkgeworICAgICAg
ICByZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eSgpLmRpZFJlY2VpdmVNZXNzYWdlRnJvbVdl
YlByb2Nlc3MoY29ubmVjdGlvbiwgZGVjb2Rlcik7CisgICAgICAgIHJldHVybjsKKyAgICB9Cit9
CisKK3ZvaWQgR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6ZGlkUmVjZWl2ZVN5bmNNZXNzYWdl
KElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgSVBDOjpEZWNvZGVyJiBkZWNvZGVyLCBzdGQ6
OnVuaXF1ZV9wdHI8SVBDOjpFbmNvZGVyPiYgcmVwbHlFbmNvZGVyKQoreworICAgIGlmIChkZWNv
ZGVyLm1lc3NhZ2VSZWNlaXZlck5hbWUoKSA9PSBNZXNzYWdlczo6UmVtb3RlTWVkaWFQbGF5ZXJN
YW5hZ2VyUHJveHk6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSkgeworICAgICAgICByZW1vdGVNZWRp
YVBsYXllck1hbmFnZXJQcm94eSgpLmRpZFJlY2VpdmVTeW5jTWVzc2FnZUZyb21XZWJQcm9jZXNz
KGNvbm5lY3Rpb24sIGRlY29kZXIsIHJlcGx5RW5jb2Rlcik7CisgICAgICAgIHJldHVybjsKKyAg
ICB9CisKKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2Vi
S2l0CiAKICNlbmRpZiAvLyBFTkFCTEUoR1BVX1BST0NFU1MpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L0dQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oIGIvU291cmNlL1dl
YktpdC9HUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaAppbmRleCBmOTBjYjI4
ZjI4N2VjZTFmZmZkMTQ1ZmUxMjQ4ZGI5OTc1Y2ViMDJkLi5iYmZjMTY4MGJiYjMwZTE5N2RhZjgw
MzYwNWNmYzRhMjE3OWFlZjQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mv
R1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vz
cy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgKQEAgLTMyLDEwICszMiwxMiBAQAogI2luY2x1
ZGUgPFdlYkNvcmUvRGlzcGxheUxpc3RJdGVtcy5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUHJvY2Vz
c0lkZW50aWZpZXIuaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgorI2luY2x1ZGUgPHd0
Zi9VbmlxdWVSZWYuaD4KIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKIGNsYXNzIEdQVVByb2Nlc3M7
CitjbGFzcyBSZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eTsKIAogY2xhc3MgR1BVQ29ubmVj
dGlvblRvV2ViUHJvY2VzcwogICAgIDogcHVibGljIFJlZkNvdW50ZWQ8R1BVQ29ubmVjdGlvblRv
V2ViUHJvY2Vzcz4KQEAgLTU1LDEzICs1NywxOCBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAgIEdQ
VUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MoR1BVUHJvY2VzcyYsIFdlYkNvcmU6OlByb2Nlc3NJZGVu
dGlmaWVyLCBJUEM6OkNvbm5lY3Rpb246OklkZW50aWZpZXIpOwogCisgICAgUmVtb3RlTWVkaWFQ
bGF5ZXJNYW5hZ2VyUHJveHkmIHJlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5KCk7CisKICAg
ICAvLyBJUEM6OkNvbm5lY3Rpb246OkNsaWVudAogICAgIHZvaWQgZGlkQ2xvc2UoSVBDOjpDb25u
ZWN0aW9uJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRSZWNlaXZlSW52YWxpZE1lc3NhZ2UoSVBD
OjpDb25uZWN0aW9uJiwgSVBDOjpTdHJpbmdSZWZlcmVuY2UgbWVzc2FnZVJlY2VpdmVyTmFtZSwg
SVBDOjpTdHJpbmdSZWZlcmVuY2UgbWVzc2FnZU5hbWUpIG92ZXJyaWRlOworICAgIHZvaWQgZGlk
UmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJikgb3ZlcnJpZGU7
CisgICAgdm9pZCBkaWRSZWNlaXZlU3luY01lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpE
ZWNvZGVyJiwgc3RkOjp1bmlxdWVfcHRyPElQQzo6RW5jb2Rlcj4mKSBvdmVycmlkZTsKIAogICAg
IFJlZjxJUEM6OkNvbm5lY3Rpb24+IG1fY29ubmVjdGlvbjsKICAgICBSZWY8R1BVUHJvY2Vzcz4g
bV9ncHVQcm9jZXNzOwogICAgIGNvbnN0IFdlYkNvcmU6OlByb2Nlc3NJZGVudGlmaWVyIG1fd2Vi
UHJvY2Vzc0lkZW50aWZpZXI7CisgICAgc3RkOjp1bmlxdWVfcHRyPFJlbW90ZU1lZGlhUGxheWVy
TWFuYWdlclByb3h5PiBtX3JlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5OwogfTsKIAogfSAv
LyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mv
bWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9H
UFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5LmNwcApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi44Yzc2ZTZiY2ZiYmM4M2ZjMTk4MmJkMGE2MDlhNjIyMDljYjg0YTlmCi0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUGxheWVy
TWFuYWdlclByb3h5LmNwcApAQCAtMCwwICsxLDE5MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JT
IGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05U
UklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRl
ICJjb25maWcuaCIKKyNpbmNsdWRlICJSZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eS5oIgor
CisjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKQorCisjaW5jbHVkZSAiR1BVQ29ubmVjdGlvblRvV2Vi
UHJvY2Vzcy5oIgorI2luY2x1ZGUgIlJlbW90ZU1lZGlhUGxheWVyTWFuYWdlck1lc3NhZ2VzLmgi
CisjaW5jbHVkZSAiUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHlNZXNzYWdlcy5oIgorI2lu
Y2x1ZGUgIlJlbW90ZU1lZGlhUGxheWVyUHJveHkuaCIKKyNpbmNsdWRlICJXZWJDb3JlQXJndW1l
bnRDb2RlcnMuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL01lZGlhUGxheWVyLmg+CisjaW5jbHVkZSA8
V2ViQ29yZS9NZWRpYVBsYXllclByaXZhdGUuaD4KKyNpbmNsdWRlIDx3dGYvVW5pcXVlUmVmLmg+
CisKKyNkZWZpbmUgTUVTU0FHRV9DSEVDS19DT05URVhUSUQoaWRlbnRpZmllcikgTUVTU0FHRV9D
SEVDS19CQVNFKG1fcHJveGllcy5pc1ZhbGlkS2V5KGlkZW50aWZpZXIpLCAmbV93ZWJQcm9jZXNz
Q29ubmVjdGlvbi5jb25uZWN0aW9uKCkpCisKK25hbWVzcGFjZSBXZWJLaXQgewordXNpbmcgbmFt
ZXNwYWNlIFdlYkNvcmU7CisKKyNpZiAhUkVMRUFTRV9MT0dfRElTQUJMRUQKK3N0YXRpYyBSZWZQ
dHI8TG9nZ2VyPiYgbnVsbExvZ2dlcigpCit7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFJl
ZlB0cjxMb2dnZXI+PiBsb2dnZXI7CisgICAgcmV0dXJuIGxvZ2dlcjsKK30KKyNlbmRpZgorCitS
ZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eTo6UmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJv
eHkoR1BVQ29ubmVjdGlvblRvV2ViUHJvY2VzcyYgY29ubmVjdGlvbikKKyAgICA6IG1fd2ViUHJv
Y2Vzc0Nvbm5lY3Rpb24oY29ubmVjdGlvbikKKyNpZiAhUkVMRUFTRV9MT0dfRElTQUJMRUQKKyAg
ICAsIG1fbG9nSWRlbnRpZmllcihXVEY6OkxvZ2dlckhlbHBlcjo6dW5pcXVlTG9nSWRlbnRpZmll
cigpKQorI2VuZGlmCit7Cit9CisKK1JlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5Ojp+UmVt
b3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHkoKQoreworfQorCit2b2lkIFJlbW90ZU1lZGlhUGxh
eWVyTWFuYWdlclByb3h5OjpjcmVhdGVNZWRpYVBsYXllcihjb25zdCBNZWRpYVBsYXllclByaXZh
dGVSZW1vdGVJZGVudGlmaWVyJiBpZCwgTWVkaWFQbGF5ZXJFbnVtczo6TWVkaWFFbmdpbmVJZGVu
dGlmaWVyIGVuZ2luZUlkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCBzdWNj
ZWVkZWQpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQoreworICAgIE1FU1NBR0VfQ0hFQ0tfQ09OVEVY
VElEKGlkKTsKKworICAgIEFTU0VSVCghbV9wcm94aWVzLmNvbnRhaW5zKGlkKSk7CisgICAgbV9w
cm94aWVzLmFkZChpZCwgbWFrZVVuaXF1ZTxSZW1vdGVNZWRpYVBsYXllclByb3h5PigqdGhpcywg
aWQsIG1fd2ViUHJvY2Vzc0Nvbm5lY3Rpb24uY29ubmVjdGlvbigpLCBlbmdpbmVJZGVudGlmaWVy
KSk7CisKKyAgICBjb21wbGV0aW9uSGFuZGxlcih0cnVlKTsKK30KKwordm9pZCBSZW1vdGVNZWRp
YVBsYXllck1hbmFnZXJQcm94eTo6ZGVsZXRlTWVkaWFQbGF5ZXIoY29uc3QgTWVkaWFQbGF5ZXJQ
cml2YXRlUmVtb3RlSWRlbnRpZmllciYgaWQpCit7CisgICAgaWYgKGF1dG8gcHJveHkgPSBtX3By
b3hpZXMudGFrZShpZCkpCisgICAgICAgIHByb3h5LT5pbnZhbGlkYXRlKCk7Cit9CisKK3ZvaWQg
UmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHk6OmdldFN1cHBvcnRlZFR5cGVzKE1lZGlhUGxh
eWVyRW51bXM6Ok1lZGlhRW5naW5lSWRlbnRpZmllciBlbmdpbmVJZGVudGlmaWVyLCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKFZlY3RvcjxTdHJpbmc+JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQor
eworICAgIGF1dG8gZW5naW5lID0gTWVkaWFQbGF5ZXI6Om1lZGlhRW5naW5lKGVuZ2luZUlkZW50
aWZpZXIpOworICAgIGlmICghZW5naW5lKSB7CisgICAgICAgIFdURkxvZ0Fsd2F5cygiRmFpbGVk
IHRvIGZpbmQgbWVkaWEgZW5naW5lLiIpOworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcih7IH0p
OworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgSGFzaFNldDxTdHJpbmcsIEFTQ0lJQ2Fz
ZUluc2Vuc2l0aXZlSGFzaD4gZW5naW5lVHlwZXM7CisgICAgZW5naW5lLT5nZXRTdXBwb3J0ZWRU
eXBlcyhlbmdpbmVUeXBlcyk7CisKKyAgICBhdXRvIHJlc3VsdCA9IFdURjo6bWFwKGVuZ2luZVR5
cGVzLCBbXSAoYXV0byYgdHlwZSkgeworICAgICAgICByZXR1cm4gdHlwZTsKKyAgICB9KTsKKwor
ICAgIGNvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUocmVzdWx0KSk7Cit9CisKK3ZvaWQgUmVtb3Rl
TWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHk6OnN1cHBvcnRzVHlwZShNZWRpYVBsYXllckVudW1zOjpN
ZWRpYUVuZ2luZUlkZW50aWZpZXIgZW5naW5lSWRlbnRpZmllciwgY29uc3QgV2ViQ29yZTo6TWVk
aWFFbmdpbmVTdXBwb3J0UGFyYW1ldGVycyYmIHBhcmFtZXRlcnMsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoTWVkaWFQbGF5ZXI6OlN1cHBvcnRzVHlwZSk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit7
CisgICAgYXV0byBlbmdpbmUgPSBNZWRpYVBsYXllcjo6bWVkaWFFbmdpbmUoZW5naW5lSWRlbnRp
Zmllcik7CisgICAgaWYgKCFlbmdpbmUpIHsKKyAgICAgICAgV1RGTG9nQWx3YXlzKCJGYWlsZWQg
dG8gZmluZCBtZWRpYSBlbmdpbmUuIik7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKE1lZGlh
UGxheWVyOjpTdXBwb3J0c1R5cGU6OklzTm90U3VwcG9ydGVkKTsKKyAgICAgICAgcmV0dXJuOwor
ICAgIH0KKworICAgIGF1dG8gcmVzdWx0ID0gZW5naW5lLT5zdXBwb3J0c1R5cGVBbmRDb2RlY3Mo
cGFyYW1ldGVycyk7CisgICAgY29tcGxldGlvbkhhbmRsZXIocmVzdWx0KTsKK30KKwordm9pZCBS
ZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eTo6b3JpZ2luc0luTWVkaWFDYWNoZShNZWRpYVBs
YXllckVudW1zOjpNZWRpYUVuZ2luZUlkZW50aWZpZXIgZW5naW5lSWRlbnRpZmllciwgY29uc3Qg
U3RyaW5nJiYgcGF0aCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChWZWN0b3I8V2ViQ29yZTo6U2Vj
dXJpdHlPcmlnaW5EYXRhPiYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyAgICBhdXRvIGVu
Z2luZSA9IE1lZGlhUGxheWVyOjptZWRpYUVuZ2luZShlbmdpbmVJZGVudGlmaWVyKTsKKyAgICBp
ZiAoIWVuZ2luZSkgeworICAgICAgICBXVEZMb2dBbHdheXMoIkZhaWxlZCB0byBmaW5kIG1lZGlh
IGVuZ2luZS4iKTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoeyB9KTsKKyAgICAgICAgcmV0
dXJuOworICAgIH0KKworICAgIGF1dG8gb3JpZ2lucyA9IGVuZ2luZS0+b3JpZ2luc0luTWVkaWFD
YWNoZShwYXRoKTsKKworICAgIFZlY3RvcjxXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGE+IHJl
c3VsdDsKKyAgICBmb3IgKGF1dG8mIG9yaWdpbiA6IG9yaWdpbnMpCisgICAgICAgIHJlc3VsdC5h
cHBlbmQob3JpZ2luLT5kYXRhKCkpOworCisgICAgY29tcGxldGlvbkhhbmRsZXIoV1RGTW92ZShy
ZXN1bHQpKTsKK30KKwordm9pZCBSZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eTo6Y2xlYXJN
ZWRpYUNhY2hlKE1lZGlhUGxheWVyRW51bXM6Ok1lZGlhRW5naW5lSWRlbnRpZmllciBlbmdpbmVJ
ZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmJnBhdGgsIFdhbGxUaW1lIG1vZGlmaWVkU2luY2UpCit7
CisgICAgYXV0byBlbmdpbmUgPSBNZWRpYVBsYXllcjo6bWVkaWFFbmdpbmUoZW5naW5lSWRlbnRp
Zmllcik7CisgICAgaWYgKCFlbmdpbmUpIHsKKyAgICAgICAgV1RGTG9nQWx3YXlzKCJGYWlsZWQg
dG8gZmluZCBtZWRpYSBlbmdpbmUuIik7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBl
bmdpbmUtPmNsZWFyTWVkaWFDYWNoZShwYXRoLCBtb2RpZmllZFNpbmNlKTsKK30KKwordm9pZCBS
ZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eTo6Y2xlYXJNZWRpYUNhY2hlRm9yT3JpZ2lucyhN
ZWRpYVBsYXllckVudW1zOjpNZWRpYUVuZ2luZUlkZW50aWZpZXIgZW5naW5lSWRlbnRpZmllciwg
Y29uc3QgU3RyaW5nJiYgcGF0aCwgVmVjdG9yPFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YT4m
JiBvcmlnaW5EYXRhKQoreworICAgIGF1dG8gZW5naW5lID0gTWVkaWFQbGF5ZXI6Om1lZGlhRW5n
aW5lKGVuZ2luZUlkZW50aWZpZXIpOworICAgIGlmICghZW5naW5lKSB7CisgICAgICAgIFdURkxv
Z0Fsd2F5cygiRmFpbGVkIHRvIGZpbmQgbWVkaWEgZW5naW5lLiIpOworICAgICAgICByZXR1cm47
CisgICAgfQorCisgICAgSGFzaFNldDxSZWZQdHI8U2VjdXJpdHlPcmlnaW4+PiBvcmlnaW5zOwor
ICAgIGZvciAoYXV0byYgZGF0YSA6IG9yaWdpbkRhdGEpCisgICAgICAgIG9yaWdpbnMuYWRkKGRh
dGEuc2VjdXJpdHlPcmlnaW4oKSk7CisKKyAgICBlbmdpbmUtPmNsZWFyTWVkaWFDYWNoZUZvck9y
aWdpbnMocGF0aCwgb3JpZ2lucyk7Cit9CisKK3ZvaWQgUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2Vy
UHJveHk6OnN1cHBvcnRzS2V5U3lzdGVtKE1lZGlhUGxheWVyRW51bXM6Ok1lZGlhRW5naW5lSWRl
bnRpZmllciBlbmdpbmVJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmJiBrZXlTeXN0ZW0sIGNvbnN0
IFN0cmluZyYmIG1pbWVUeXBlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmIGNvbXBs
ZXRpb25IYW5kbGVyKQoreworICAgIGF1dG8gZW5naW5lID0gTWVkaWFQbGF5ZXI6Om1lZGlhRW5n
aW5lKGVuZ2luZUlkZW50aWZpZXIpOworICAgIGlmICghZW5naW5lKSB7CisgICAgICAgIFdURkxv
Z0Fsd2F5cygiRmFpbGVkIHRvIGZpbmQgbWVkaWEgZW5naW5lLiIpOworICAgICAgICByZXR1cm47
CisgICAgfQorCisgICAgYXV0byByZXN1bHQgPSBlbmdpbmUtPnN1cHBvcnRzS2V5U3lzdGVtKGtl
eVN5c3RlbSwgbWltZVR5cGUpOworICAgIGNvbXBsZXRpb25IYW5kbGVyKHJlc3VsdCk7Cit9CisK
KyNpZiAhUkVMRUFTRV9MT0dfRElTQUJMRUQKK2NvbnN0IExvZ2dlciYgUmVtb3RlTWVkaWFQbGF5
ZXJNYW5hZ2VyUHJveHk6OmxvZ2dlcigpIGNvbnN0Cit7CisgICAgLy8gRklYTUU6IHVzZSBhIHJl
YWwgbG9nZ2VyCisgICAgaWYgKCFudWxsTG9nZ2VyKCkuZ2V0KCkpIHsKKyAgICAgICAgbnVsbExv
Z2dlcigpID0gTG9nZ2VyOjpjcmVhdGUodGhpcyk7CisgICAgICAgIG51bGxMb2dnZXIoKS0+c2V0
RW5hYmxlZCh0aGlzLCBmYWxzZSk7CisgICAgfQorCisgICAgcmV0dXJuICpudWxsTG9nZ2VyKCku
Z2V0KCk7Cit9CisKK1dURkxvZ0NoYW5uZWwmIFJlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5
Ojpsb2dDaGFubmVsKCkgY29uc3QKK3sKKyAgICByZXR1cm4gV2ViS2l0MkxvZ1dlYlJUQzsKK30K
KworI2VuZGlmCisKK30KKworI3VuZGVmIE1FU1NBR0VfQ0hFQ0tfQ09OVEVYVElECisKKyNlbmRp
ZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlh
UGxheWVyTWFuYWdlclByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVt
b3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHkuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44MWZhYmJhODQ4OWIyMzhl
OTQwMWI1NDI0ZTY3ZTFjM2NlYmQ3ZjQ1Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktp
dC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5LmgKQEAgLTAs
MCArMSw5MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
CisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxFKEdQVV9Q
Uk9DRVNTKQorCisjaW5jbHVkZSAiQ29ubmVjdGlvbi5oIgorI2luY2x1ZGUgIk1lZGlhUGxheWVy
UHJpdmF0ZVJlbW90ZUlkZW50aWZpZXIuaCIKKyNpbmNsdWRlICJNZXNzYWdlUmVjZWl2ZXIuaCIK
KyNpbmNsdWRlIDxXZWJDb3JlL01lZGlhUGxheWVyLmg+CisjaW5jbHVkZSA8d3RmL0xvZ2dlckhl
bHBlci5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3MgR1BVQ29ubmVjdGlvblRvV2Vi
UHJvY2VzczsKK2NsYXNzIFJlbW90ZU1lZGlhUGxheWVyUHJveHk7CisKK2NsYXNzIFJlbW90ZU1l
ZGlhUGxheWVyTWFuYWdlclByb3h5CisgICAgOiBwcml2YXRlIElQQzo6TWVzc2FnZVJlY2VpdmVy
CisjaWYgIVJFTEVBU0VfTE9HX0RJU0FCTEVECisgICAgLCBwcml2YXRlIExvZ2dlckhlbHBlcgor
I2VuZGlmCit7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CitwdWJsaWM6CisgICAgZXhw
bGljaXQgUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHkoR1BVQ29ubmVjdGlvblRvV2ViUHJv
Y2VzcyYpOworICAgIH5SZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eSgpOworCisgICAgR1BV
Q29ubmVjdGlvblRvV2ViUHJvY2VzcyYgd2ViUHJvY2Vzc0Nvbm5lY3Rpb24oKSBjb25zdCB7IHJl
dHVybiBtX3dlYlByb2Nlc3NDb25uZWN0aW9uOyB9CisgICAgdm9pZCBjbGVhcigpOworCisgICAg
dm9pZCBkaWRSZWNlaXZlTWVzc2FnZUZyb21XZWJQcm9jZXNzKElQQzo6Q29ubmVjdGlvbiYgY29u
bmVjdGlvbiwgSVBDOjpEZWNvZGVyJiBkZWNvZGVyKSB7IGRpZFJlY2VpdmVNZXNzYWdlKGNvbm5l
Y3Rpb24sIGRlY29kZXIpOyB9CisgICAgdm9pZCBkaWRSZWNlaXZlU3luY01lc3NhZ2VGcm9tV2Vi
UHJvY2VzcyhJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIElQQzo6RGVjb2RlciYgZGVjb2Rl
ciwgc3RkOjp1bmlxdWVfcHRyPElQQzo6RW5jb2Rlcj4mIGVuY29kZXIpIHsgZGlkUmVjZWl2ZVN5
bmNNZXNzYWdlKGNvbm5lY3Rpb24sIGRlY29kZXIsIGVuY29kZXIpOyB9CisKKyNpZiAhUkVMRUFT
RV9MT0dfRElTQUJMRUQKKyAgICBjb25zdCBMb2dnZXImIGxvZ2dlcigpIGNvbnN0IGZpbmFsOwor
ICAgIGNvbnN0IHZvaWQqIGxvZ0lkZW50aWZpZXIoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX2xv
Z0lkZW50aWZpZXI7IH0KKyAgICBjb25zdCBjaGFyKiBsb2dDbGFzc05hbWUoKSBjb25zdCBmaW5h
bCB7IHJldHVybiAiUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHkiOyB9CisgICAgV1RGTG9n
Q2hhbm5lbCYgbG9nQ2hhbm5lbCgpIGNvbnN0IGZpbmFsOworI2VuZGlmCisKK3ByaXZhdGU6Cisg
ICAgLy8gSVBDOjpNZXNzYWdlUmVjZWl2ZXIKKyAgICB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlKElQ
Qzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYpIGZpbmFsOworICAgIHZvaWQgZGlkUmVjZWl2
ZVN5bmNNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYsIHN0ZDo6dW5pcXVl
X3B0cjxJUEM6OkVuY29kZXI+JikgZmluYWw7CisKKyAgICB2b2lkIGNyZWF0ZU1lZGlhUGxheWVy
KGNvbnN0IE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZUlkZW50aWZpZXImLCBXZWJDb3JlOjpNZWRp
YVBsYXllckVudW1zOjpNZWRpYUVuZ2luZUlkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoYm9vbCk+JiYpOworICAgIHZvaWQgZGVsZXRlTWVkaWFQbGF5ZXIoY29uc3QgTWVkaWFQbGF5
ZXJQcml2YXRlUmVtb3RlSWRlbnRpZmllciYpOworCisgICAgdm9pZCBnZXRTdXBwb3J0ZWRUeXBl
cyhXZWJDb3JlOjpNZWRpYVBsYXllckVudW1zOjpNZWRpYUVuZ2luZUlkZW50aWZpZXIsIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoVmVjdG9yPFN0cmluZz4mJik+JiYpOworICAgIHZvaWQgc3VwcG9y
dHNUeXBlKFdlYkNvcmU6Ok1lZGlhUGxheWVyRW51bXM6Ok1lZGlhRW5naW5lSWRlbnRpZmllciwg
Y29uc3QgV2ViQ29yZTo6TWVkaWFFbmdpbmVTdXBwb3J0UGFyYW1ldGVycyYmLCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKFdlYkNvcmU6Ok1lZGlhUGxheWVyOjpTdXBwb3J0c1R5cGUpPiYmKTsKKwor
ICAgIHZvaWQgb3JpZ2luc0luTWVkaWFDYWNoZShXZWJDb3JlOjpNZWRpYVBsYXllckVudW1zOjpN
ZWRpYUVuZ2luZUlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYmLCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKFZlY3RvcjxXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGE+JiYpPiYmKTsKKyAgICB2b2lk
IGNsZWFyTWVkaWFDYWNoZShXZWJDb3JlOjpNZWRpYVBsYXllckVudW1zOjpNZWRpYUVuZ2luZUlk
ZW50aWZpZXIsIGNvbnN0IFN0cmluZyYmLCBXYWxsVGltZSk7CisgICAgdm9pZCBjbGVhck1lZGlh
Q2FjaGVGb3JPcmlnaW5zKFdlYkNvcmU6Ok1lZGlhUGxheWVyRW51bXM6Ok1lZGlhRW5naW5lSWRl
bnRpZmllciwgY29uc3QgU3RyaW5nJiYsIFZlY3RvcjxXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRh
dGE+JiYpOworICAgIHZvaWQgc3VwcG9ydHNLZXlTeXN0ZW0oV2ViQ29yZTo6TWVkaWFQbGF5ZXJF
bnVtczo6TWVkaWFFbmdpbmVJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmJiwgY29uc3QgU3RyaW5n
JiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpOworCisgICAgSGFzaE1hcDxNZWRp
YVBsYXllclByaXZhdGVSZW1vdGVJZGVudGlmaWVyLCBzdGQ6OnVuaXF1ZV9wdHI8UmVtb3RlTWVk
aWFQbGF5ZXJQcm94eT4+IG1fcHJveGllczsKKyAgICBHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNz
JiBtX3dlYlByb2Nlc3NDb25uZWN0aW9uOworCisjaWYgIVJFTEVBU0VfTE9HX0RJU0FCTEVECisg
ICAgY29uc3Qgdm9pZCogbV9sb2dJZGVudGlmaWVyOworI2VuZGlmCit9OworCit9CisKKyNlbmRp
ZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlh
UGxheWVyTWFuYWdlclByb3h5Lm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNz
L21lZGlhL1JlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5Lm1lc3NhZ2VzLmluCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjAxYTQ0Mjc1NzhmOWI1Nzg4ZTA4NDdhNGM1YWY0MmU4YTFmZjc4YTgKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJN
YW5hZ2VyUHJveHkubWVzc2FnZXMuaW4KQEAgLTAsMCArMSwzOCBAQAorIyBDb3B5cmlnaHQgKEMp
IDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMg
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisjIGFyZSBtZXQ6CisjIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorIyAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorIworIyBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycn
CisjIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorIyBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisjIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworIyBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SCisjIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisjIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworIyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTgorIyBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorIyBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisjIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKworI2lmIEVOQUJMRShWSURFTykKKworbWVzc2FnZXMgLT4g
UmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHkgTm90UmVmQ291bnRlZCB7CisgICAgQ3JlYXRl
TWVkaWFQbGF5ZXIoV2ViS2l0OjpNZWRpYVBsYXllclByaXZhdGVSZW1vdGVJZGVudGlmaWVyIGlk
LCBlbnVtOnVpbnQ4X3QgV2ViQ29yZTo6TWVkaWFQbGF5ZXJFbnVtczo6TWVkaWFFbmdpbmVJZGVu
dGlmaWVyIHJlbW90ZUVuZ2luZUlkZW50aWZpZXIpIC0+IChib29sIHN1Y2Nlc3MpIFN5bmNocm9u
b3VzCisgICAgRGVsZXRlTWVkaWFQbGF5ZXIoV2ViS2l0OjpNZWRpYVBsYXllclByaXZhdGVSZW1v
dGVJZGVudGlmaWVyIGlkKQorCisgICAgR2V0U3VwcG9ydGVkVHlwZXMoZW51bTp1aW50OF90IFdl
YkNvcmU6Ok1lZGlhUGxheWVyRW51bXM6Ok1lZGlhRW5naW5lSWRlbnRpZmllciByZW1vdGVFbmdp
bmVJZGVudGlmaWVyKSAtPiAoVmVjdG9yPFN0cmluZz4gdHlwZXMpIFN5bmNocm9ub3VzCisgICAg
U3VwcG9ydHNUeXBlKGVudW06dWludDhfdCBXZWJDb3JlOjpNZWRpYVBsYXllckVudW1zOjpNZWRp
YUVuZ2luZUlkZW50aWZpZXIgcmVtb3RlRW5naW5lSWRlbnRpZmllciwgc3RydWN0IFdlYkNvcmU6
Ok1lZGlhRW5naW5lU3VwcG9ydFBhcmFtZXRlcnMgdHlwZSkgLT4gKGVudW06dWludDhfdCBXZWJD
b3JlOjpNZWRpYVBsYXllcjo6U3VwcG9ydHNUeXBlIHN1cHBvcnQpIFN5bmNocm9ub3VzCisgICAg
T3JpZ2luc0luTWVkaWFDYWNoZShlbnVtOnVpbnQ4X3QgV2ViQ29yZTo6TWVkaWFQbGF5ZXJFbnVt
czo6TWVkaWFFbmdpbmVJZGVudGlmaWVyIHJlbW90ZUVuZ2luZUlkZW50aWZpZXIsIFN0cmluZyBw
YXRoKSAtPiAoVmVjdG9yPFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YT4gb3JpZ2lucykgU3lu
Y2hyb25vdXMKKyAgICBDbGVhck1lZGlhQ2FjaGUoZW51bTp1aW50OF90IFdlYkNvcmU6Ok1lZGlh
UGxheWVyRW51bXM6Ok1lZGlhRW5naW5lSWRlbnRpZmllciByZW1vdGVFbmdpbmVJZGVudGlmaWVy
LCBTdHJpbmcgcGF0aCwgV2FsbFRpbWUgbW9kaWZpZWRTaW5jZSkKKyAgICBDbGVhck1lZGlhQ2Fj
aGVGb3JPcmlnaW5zKGVudW06dWludDhfdCBXZWJDb3JlOjpNZWRpYVBsYXllckVudW1zOjpNZWRp
YUVuZ2luZUlkZW50aWZpZXIgcmVtb3RlRW5naW5lSWRlbnRpZmllciwgU3RyaW5nIHBhdGgsIFZl
Y3RvcjxXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGE+IG9yaWdpbnMpCisgICAgU3VwcG9ydHNL
ZXlTeXN0ZW0oZW51bTp1aW50OF90IFdlYkNvcmU6Ok1lZGlhUGxheWVyRW51bXM6Ok1lZGlhRW5n
aW5lSWRlbnRpZmllciByZW1vdGVFbmdpbmVJZGVudGlmaWVyLCBTdHJpbmcga2V5U3lzdGVtLCBT
dHJpbmcgbWltZVR5cGUpIC0+IChib29sIHN1cHBvcnRzKSBTeW5jaHJvbm91cworfQorCisjZW5k
aWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRp
YVBsYXllclByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVN
ZWRpYVBsYXllclByb3h5LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mY2U5MzM1NTEwOTNmYTZkODQ1ZjMzMmE0
YTA2M2FmMTFmOWUwY2FhCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9j
ZXNzL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyUHJveHkuY3BwCkBAIC0wLDAgKzEsOTUgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBB
TkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiUmVtb3RlTWVkaWFQbGF5
ZXJQcm94eS5oIgorCisjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKQorCisjaW5jbHVkZSAiUmVtb3Rl
TWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHkuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL01lZGlhUGxheWVy
Lmg+CisjaW5jbHVkZSA8V2ViQ29yZS9NZWRpYVBsYXllclByaXZhdGUuaD4KKworbmFtZXNwYWNl
IFdlYktpdCB7CisKK3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOworCitSZW1vdGVNZWRpYVBsYXll
clByb3h5OjpSZW1vdGVNZWRpYVBsYXllclByb3h5KFJlbW90ZU1lZGlhUGxheWVyTWFuYWdlclBy
b3h5JiBtYW5hZ2VyLCBjb25zdCBNZWRpYVBsYXllclByaXZhdGVSZW1vdGVJZGVudGlmaWVyJiBp
ZCwgUmVmPElQQzo6Q29ubmVjdGlvbj4mJiBjb25uZWN0aW9uLCBNZWRpYVBsYXllckVudW1zOjpN
ZWRpYUVuZ2luZUlkZW50aWZpZXIgZW5naW5lSWRlbnRpZmllcikKKyAgICA6IG1faWQoaWQpCisg
ICAgLCBtX2Nvbm5lY3Rpb24oV1RGTW92ZShjb25uZWN0aW9uKSkKKyAgICAsIG1fbWFuYWdlciht
YW5hZ2VyKQorICAgICwgbV9lbmdpbmVJZGVudGlmaWVyKGVuZ2luZUlkZW50aWZpZXIpCisjaWYg
IVJFTEVBU0VfTE9HX0RJU0FCTEVECisgICAgLCBtX2xvZ2dlcihtYW5hZ2VyLmxvZ2dlcigpKQor
I2VuZGlmCit7CisgICAgbV9wbGF5ZXIgPSBNZWRpYVBsYXllcjo6Y3JlYXRlKCp0aGlzLCBlbmdp
bmVJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVNZWRpYVBsYXllclByb3h5OjppbnZhbGlk
YXRlKCkKK3sKKyAgICBtX3BsYXllci0+aW52YWxpZGF0ZSgpOworfQorCit2b2lkIFJlbW90ZU1l
ZGlhUGxheWVyUHJveHk6Om1lZGlhUGxheWVyTmV0d29ya1N0YXRlQ2hhbmdlZCgpCit7CisgICAg
bV9jb25uZWN0aW9uLT5zZW5kKE1lc3NhZ2VzOjpSZW1vdGVNZWRpYVBsYXllck1hbmFnZXI6Ok5l
dHdvcmtTdGF0ZUNoYW5nZWQobV9pZCwgbV9wbGF5ZXItPm5ldHdvcmtTdGF0ZSgpKSwgMCk7Cit9
CisKK3ZvaWQgUmVtb3RlTWVkaWFQbGF5ZXJQcm94eTo6bWVkaWFQbGF5ZXJSZWFkeVN0YXRlQ2hh
bmdlZCgpCit7CisgICAgbV9jb25uZWN0aW9uLT5zZW5kKE1lc3NhZ2VzOjpSZW1vdGVNZWRpYVBs
YXllck1hbmFnZXI6OlJlYWR5U3RhdGVDaGFuZ2VkKG1faWQsIG1fcGxheWVyLT5yZWFkeVN0YXRl
KCkpLCAwKTsKK30KKwordm9pZCBSZW1vdGVNZWRpYVBsYXllclByb3h5OjptZWRpYVBsYXllclZv
bHVtZUNoYW5nZWQoKQoreworICAgIG1fY29ubmVjdGlvbi0+c2VuZChNZXNzYWdlczo6UmVtb3Rl
TWVkaWFQbGF5ZXJNYW5hZ2VyOjpWb2x1bWVDaGFuZ2VkKG1faWQsIG1fcGxheWVyLT52b2x1bWUo
KSksIDApOworfQorCit2b2lkIFJlbW90ZU1lZGlhUGxheWVyUHJveHk6Om1lZGlhUGxheWVyTXV0
ZUNoYW5nZWQoKQoreworICAgIG1fY29ubmVjdGlvbi0+c2VuZChNZXNzYWdlczo6UmVtb3RlTWVk
aWFQbGF5ZXJNYW5hZ2VyOjpNdXRlQ2hhbmdlZChtX2lkLCBtX3BsYXllci0+bXV0ZWQoKSksIDAp
OworfQorCit2b2lkIFJlbW90ZU1lZGlhUGxheWVyUHJveHk6Om1lZGlhUGxheWVyVGltZUNoYW5n
ZWQoKQoreworICAgIG1fY29ubmVjdGlvbi0+c2VuZChNZXNzYWdlczo6UmVtb3RlTWVkaWFQbGF5
ZXJNYW5hZ2VyOjpUaW1lQ2hhbmdlZChtX2lkLCBtX3BsYXllci0+Y3VycmVudFRpbWUoKSksIDAp
OworfQorCit2b2lkIFJlbW90ZU1lZGlhUGxheWVyUHJveHk6Om1lZGlhUGxheWVyRHVyYXRpb25D
aGFuZ2VkKCkKK3sKKyAgICBtX2Nvbm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6OlJlbW90ZU1lZGlh
UGxheWVyTWFuYWdlcjo6RHVyYXRpb25DaGFuZ2VkKG1faWQsIG1fcGxheWVyLT5kdXJhdGlvbigp
KSwgMCk7Cit9CisKK3ZvaWQgUmVtb3RlTWVkaWFQbGF5ZXJQcm94eTo6bWVkaWFQbGF5ZXJSYXRl
Q2hhbmdlZCgpCit7CisgICAgbV9jb25uZWN0aW9uLT5zZW5kKE1lc3NhZ2VzOjpSZW1vdGVNZWRp
YVBsYXllck1hbmFnZXI6OlJhdGVDaGFuZ2VkKG1faWQsIG1fcGxheWVyLT5yYXRlKCkpLCAwKTsK
K30KKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyN1bmRlZiBNRVNTQUdFX0NIRUNLX0NPTlRF
WFRJRAorCisjZW5kaWYgLy8gRU5BQkxFKEdQVV9QUk9DRVNTKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyUHJveHkuaCBiL1NvdXJj
ZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVBsYXllclByb3h5LmgKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uN2UxYTI3YzdlYmVjZTczMjM4ZjlkMGQwNmZjMTI0OGY0ZTNiYjhhYgotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVBsYXll
clByb3h5LmgKQEAgLTAsMCArMSw4OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMn
JworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMK
KyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAq
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICog
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisj
aWYgRU5BQkxFKEdQVV9QUk9DRVNTKQorCisjaW5jbHVkZSAiTWVkaWFQbGF5ZXJQcml2YXRlUmVt
b3RlSWRlbnRpZmllci5oIgorI2luY2x1ZGUgPHd0Zi9Mb2dnZXJIZWxwZXIuaD4KKyNpbmNsdWRl
IDx3dGYvUmVmUHRyLmg+CisjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgorCituYW1lc3BhY2UgSVBD
IHsKK2NsYXNzIENvbm5lY3Rpb247Cit9CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKK2NsYXNzIE1l
ZGlhUGxheWVyOworfQorCituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3MgUmVtb3RlTWVkaWFQ
bGF5ZXJNYW5hZ2VyUHJveHk7CisKK2NsYXNzIFJlbW90ZU1lZGlhUGxheWVyUHJveHkKKyAgICA6
IHB1YmxpYyBNZWRpYVBsYXllckNsaWVudCB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7
CitwdWJsaWM6CisgICAgUmVtb3RlTWVkaWFQbGF5ZXJQcm94eShSZW1vdGVNZWRpYVBsYXllck1h
bmFnZXJQcm94eSYsIGNvbnN0IE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZUlkZW50aWZpZXImLCBS
ZWY8SVBDOjpDb25uZWN0aW9uPiYmLCBNZWRpYVBsYXllckVudW1zOjpNZWRpYUVuZ2luZUlkZW50
aWZpZXIpOworICAgIHZpcnR1YWwgflJlbW90ZU1lZGlhUGxheWVyUHJveHkoKQorICAgIHsKKyAg
ICB9CisKKyAgICB2b2lkIGludmFsaWRhdGUoKTsKKworcHJpdmF0ZToKKyAgICAvLyBNZWRpYVBs
YXllckNsaWVudAorICAgIHZvaWQgbWVkaWFQbGF5ZXJOZXR3b3JrU3RhdGVDaGFuZ2VkKCkgZmlu
YWw7CisgICAgdm9pZCBtZWRpYVBsYXllclJlYWR5U3RhdGVDaGFuZ2VkKCkgZmluYWw7CisgICAg
dm9pZCBtZWRpYVBsYXllclZvbHVtZUNoYW5nZWQoKSBmaW5hbDsKKyAgICB2b2lkIG1lZGlhUGxh
eWVyTXV0ZUNoYW5nZWQoKSBmaW5hbDsKKyAgICB2b2lkIG1lZGlhUGxheWVyVGltZUNoYW5nZWQo
KSBmaW5hbDsKKyAgICB2b2lkIG1lZGlhUGxheWVyRHVyYXRpb25DaGFuZ2VkKCkgZmluYWw7Cisg
ICAgdm9pZCBtZWRpYVBsYXllclJhdGVDaGFuZ2VkKCkgZmluYWw7CisKKyAgICBjb25zdCBWZWN0
b3I8V2ViQ29yZTo6Q29udGVudFR5cGU+JiBtZWRpYUNvbnRlbnRUeXBlc1JlcXVpcmluZ0hhcmR3
YXJlU3VwcG9ydCgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fdHlwZXNSZXF1aXJpbmdIYXJkd2Fy
ZVN1cHBvcnQ7IH0KKworI2lmICFSRUxFQVNFX0xPR19ESVNBQkxFRAorICAgIGNvbnN0IExvZ2dl
ciYgbWVkaWFQbGF5ZXJMb2dnZXIoKSBmaW5hbCB7IHJldHVybiBtX2xvZ2dlcjsgfQorI2VuZGlm
CisKK3Byb3RlY3RlZDoKKyAgICBNZWRpYVBsYXllclByaXZhdGVSZW1vdGVJZGVudGlmaWVyIG1f
aWQ7CisgICAgUmVmPElQQzo6Q29ubmVjdGlvbj4gbV9jb25uZWN0aW9uOworICAgIFJlZlB0cjxN
ZWRpYVBsYXllcj4gbV9wbGF5ZXI7CisgICAgUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHkm
IG1fbWFuYWdlcjsKKyAgICBNZWRpYVBsYXllckVudW1zOjpNZWRpYUVuZ2luZUlkZW50aWZpZXIg
bV9lbmdpbmVJZGVudGlmaWVyOworICAgIFZlY3RvcjxXZWJDb3JlOjpDb250ZW50VHlwZT4gbV90
eXBlc1JlcXVpcmluZ0hhcmR3YXJlU3VwcG9ydDsKKworI2lmICFSRUxFQVNFX0xPR19ESVNBQkxF
RAorICAgIGNvbnN0IExvZ2dlciYgbV9sb2dnZXI7CisjZW5kaWYKK307CisKK30KKworI2VuZGlm
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5IGIv
U291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5weQppbmRleCBlZDExYWMyNzI1
MjI2ZTQ3YTJiNTZiY2M5ZWNmMjIyZGFjMDAwOWFlLi5mMmU5ZWQ3YWI1NDAyZWY1MTE4OGY3ZThk
YmUzOTZiYThhY2UwZmFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0
L21lc3NhZ2VzLnB5CisrKyBiL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvbWVzc2FnZXMu
cHkKQEAgLTEsNCArMSw0IEBACi0jIENvcHlyaWdodCAoQykgMjAxMC0yMDE4IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMgQ29weXJpZ2h0IChDKSAyMDEwLTIwMTkgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgogIwogIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICMgbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0y
MTksMTAgKzIxOSwxMSBAQCBkZWYgdHlwZXNfdGhhdF9jYW5ub3RfYmVfZm9yd2FyZF9kZWNsYXJl
ZCgpOgogICAgICAgICAnV2ViQ29yZTo6U1dTZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllcicsCiAg
ICAgICAgICdXZWJLaXQ6OkFjdGl2aXR5U3RhdGVDaGFuZ2VJRCcsCiAgICAgICAgICdXZWJLaXQ6
OkxheWVySG9zdGluZ0NvbnRleHRJRCcsCi0gICAgICAgICdXZWJLaXQ6OlRyYW5zYWN0aW9uSUQn
LAorICAgICAgICAnV2ViS2l0OjpNZWRpYVBsYXllclByaXZhdGVSZW1vdGVJZGVudGlmaWVyJywK
ICAgICAgICAgJ1dlYktpdDo6U3RvcmFnZUFyZWFJZGVudGlmaWVyJywKICAgICAgICAgJ1dlYktp
dDo6U3RvcmFnZUFyZWFJbXBsSWRlbnRpZmllcicsCiAgICAgICAgICdXZWJLaXQ6OlN0b3JhZ2VO
YW1lc3BhY2VJZGVudGlmaWVyJywKKyAgICAgICAgJ1dlYktpdDo6VHJhbnNhY3Rpb25JRCcsCiAg
ICAgICAgICdXZWJLaXQ6OlVzZXJDb250ZW50Q29udHJvbGxlcklkZW50aWZpZXInLAogICAgICAg
ICAnV2ViS2l0OjpXZWJQYWdlUHJveHlJZGVudGlmaWVyJywKICAgICBdKQpAQCAtNjAzLDYgKzYw
NCw3IEBAIGRlZiBoZWFkZXJzX2Zvcl90eXBlKHR5cGUpOgogICAgICAgICAnV2ViS2l0OjpXZWJN
b3VzZUV2ZW50JzogWyciV2ViRXZlbnQuaCInXSwKICAgICAgICAgJ1dlYktpdDo6V2ViVG91Y2hF
dmVudCc6IFsnIldlYkV2ZW50LmgiJ10sCiAgICAgICAgICdXZWJLaXQ6OldlYldoZWVsRXZlbnQn
OiBbJyJXZWJFdmVudC5oIiddLAorICAgICAgICAnV2ViQ29yZTo6TWVkaWFFbmdpbmVTdXBwb3J0
UGFyYW1ldGVycyc6IFsnPFdlYkNvcmUvTWVkaWFQbGF5ZXIuaD4nXSwKICAgICAgICAgJ3N0cnVj
dCBXZWJDb3JlOjpFbGVtZW50Q29udGV4dCc6IFsnPFdlYkNvcmUvRWxlbWVudENvbnRleHQuaD4n
XSwKICAgICAgICAgJ3N0cnVjdCBXZWJLaXQ6OldlYlVzZXJTY3JpcHREYXRhJzogWyciV2ViVXNl
ckNvbnRlbnRDb250cm9sbGVyRGF0YVR5cGVzLmgiJ10sCiAgICAgICAgICdzdHJ1Y3QgV2ViS2l0
OjpXZWJVc2VyU3R5bGVTaGVldERhdGEnOiBbJyJXZWJVc2VyQ29udGVudENvbnRyb2xsZXJEYXRh
VHlwZXMuaCInXSwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU291cmNlcy50eHQgYi9Tb3Vy
Y2UvV2ViS2l0L1NvdXJjZXMudHh0CmluZGV4IDVmMDRkOGEzZGEwZGQzM2VmNmI5MDZhZWE5NWUy
OTUwZjhkZWY2ZjkuLjU0MjRlNWRmYmIxNTIwMTBiMGIzMmQ2ZjVlYTZkNTM1ODkxNGU1NmIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU291cmNlcy50eHQKKysrIGIvU291cmNlL1dlYktpdC9T
b3VyY2VzLnR4dApAQCAtNTAwLDYgKzUwMCw4IEBAIFdlYlByb2Nlc3MvTWVkaWFTdHJlYW0vTWVk
aWFEZXZpY2VTYW5kYm94RXh0ZW5zaW9ucy5jcHAKIFdlYlByb2Nlc3MvTWVkaWFTdHJlYW0vVXNl
ck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyLmNwcAogCiBXZWJQcm9jZXNzL0dQVS9HUFVQ
cm9jZXNzQ29ubmVjdGlvbi5jcHAKK1dlYlByb2Nlc3MvR1BVL21lZGlhL01lZGlhUGxheWVyUHJp
dmF0ZVJlbW90ZS5jcHAKK1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyTWFu
YWdlci5jcHAKIAogV2ViUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5j
cHAKIFdlYlByb2Nlc3MvTmV0d29yay9XZWJMb2FkZXJTdHJhdGVneS5jcHAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvU291cmNlc0NvY29hLnR4dCBiL1NvdXJjZS9XZWJLaXQvU291cmNlc0Nv
Y29hLnR4dAppbmRleCA5ZDI0MmUyYTA2NGRmZjcyZjQ5YzQyZjU0ZDk3ODEzY2FkOTRkOTJjLi4z
NzJiOWFjMWJmYzczYTQ5NDk1OWI3MzIwODcxY2JjMjhjMzQzZTIwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1NvdXJjZXNDb2NvYS50eHQKKysrIGIvU291cmNlL1dlYktpdC9Tb3VyY2VzQ29j
b2EudHh0CkBAIC01OSw2ICs1OSw4IEBAIE5ldHdvcmtQcm9jZXNzL3dlYnJ0Yy9OZXR3b3JrUlRD
U29ja2V0LmNwcAogCiBHUFVQcm9jZXNzL2lvcy9HUFVQcm9jZXNzSU9TLm1tCiBHUFVQcm9jZXNz
L21hYy9HUFVQcm9jZXNzTWFjLm1tCitHUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUGxheWVy
UHJveHkuY3BwCitHUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5
LmNwcAogR1BVUHJvY2Vzcy9FbnRyeVBvaW50L0NvY29hL1hQQ1NlcnZpY2UvR1BVU2VydmljZUVu
dHJ5UG9pbnQubW0KIAogUGxhdGZvcm0vY2YvTW9kdWxlQ0YuY3BwCkBAIC02MjQsNSArNjI2LDcg
QEAgRWRpdGFibGVJbWFnZUNvbnRyb2xsZXJNZXNzYWdlUmVjZWl2ZXIuY3BwCiBHUFVDb25uZWN0
aW9uVG9XZWJQcm9jZXNzTWVzc2FnZVJlY2VpdmVyLmNwcAogR1BVUHJvY2Vzc1Byb3h5TWVzc2Fn
ZVJlY2VpdmVyLmNwcAogR1BVUHJvY2Vzc01lc3NhZ2VSZWNlaXZlci5jcHAKKy8vUmVtb3RlTWVk
aWFQbGF5ZXJNYW5hZ2VyTWVzc2FnZVJlY2VpdmVyLmNwcAorLy9SZW1vdGVNZWRpYVBsYXllck1h
bmFnZXJQcm94eU1lc3NhZ2VSZWNlaXZlci5jcHAKIFNlcnZpY2VXb3JrZXJGZXRjaFRhc2tNZXNz
YWdlUmVjZWl2ZXIuY3BwCiBUZXh0Q2hlY2tpbmdDb250cm9sbGVyUHJveHlNZXNzYWdlUmVjZWl2
ZXIuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qIGIvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
agppbmRleCA0NjZjZGU5OWNlZGE0MWFiM2QxMjViMDI1MmJhMjljNmE5MWYyODZjLi4wNmIwNTU0
ZmE0ZmI3NmU4MjNlMTkyYzUxZDE2MDlkZDI4ZTZjODFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJLaXQv
V2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTkxLDYgKzkxLDEzIEBACiAJCTA3
NEU3NUZFMURGMjIxMTkwMEQzMThFQyAvKiBVc2VyTWVkaWFQcm9jZXNzTWFuYWdlci5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDc0RTc1RkIxREYxRkQx
MzAwRDMxOEVDIC8qIFVzZXJNZWRpYVByb2Nlc3NNYW5hZ2VyLmggKi87IH07CiAJCTA3NkU4ODRF
MUExM0NBREYwMDVFOTBGQyAvKiBBUElDb250ZXh0TWVudUNsaWVudC5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDc2RTg4NEQxQTEzQ0FERjAwNUU5MEZD
IC8qIEFQSUNvbnRleHRNZW51Q2xpZW50LmggKi87IH07CiAJCTA3NzI4MTFEMjEyMzRGRjYwMEM4
RUYyRSAvKiBVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXIuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDRBNDEwRjQzMTlBRjdCMjcwMDJFQkFC
NSAvKiBVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXIuaCAqLzsgfTsKKwkJMDc5MjMx
NDgyMzlDQkNCODAwOTU5OEUyIC8qIFJlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5TWVzc2Fn
ZXNSZXBsaWVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSAwNzkyMzE0MjIzOUNCQ0I1MDA5NTk4RTIgLyogUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJv
eHlNZXNzYWdlc1JlcGxpZXMuaCAqLzsgfTsKKwkJMDc5MjMxNDkyMzlDQkNCODAwOTU5OEUyIC8q
IFJlbW90ZU1lZGlhUGxheWVyTWFuYWdlck1lc3NhZ2VSZWNlaXZlci5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwNzkyMzE0MzIzOUNCQ0I2MDA5NTk4
RTIgLyogUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyTWVzc2FnZVJlY2VpdmVyLmNwcCAqLzsgfTsK
KwkJMDc5MjMxNEEyMzlDQkNCODAwOTU5OEUyIC8qIFJlbW90ZU1lZGlhUGxheWVyTWFuYWdlck1l
c3NhZ2VzUmVwbGllcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gMDc5MjMxNDQyMzlDQkNCNjAwOTU5OEUyIC8qIFJlbW90ZU1lZGlhUGxheWVyTWFuYWdl
ck1lc3NhZ2VzUmVwbGllcy5oICovOyB9OworCQkwNzkyMzE0QjIzOUNCQ0I4MDA5NTk4RTIgLyog
UmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDc5MjMxNDUyMzlDQkNCNzAw
OTU5OEUyIC8qIFJlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5TWVzc2FnZVJlY2VpdmVyLmNw
cCAqLzsgfTsKKwkJMDc5MjMxNEMyMzlDQkNCODAwOTU5OEUyIC8qIFJlbW90ZU1lZGlhUGxheWVy
TWFuYWdlclByb3h5TWVzc2FnZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDA3OTIzMTQ2MjM5Q0JDQjcwMDk1OThFMiAvKiBSZW1vdGVNZWRpYVBsYXll
ck1hbmFnZXJQcm94eU1lc3NhZ2VzLmggKi87IH07CisJCTA3OTIzMTREMjM5Q0JDQjgwMDk1OThF
MiAvKiBSZW1vdGVNZWRpYVBsYXllck1hbmFnZXJNZXNzYWdlcy5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDc5MjMxNDcyMzlDQkNCNzAwOTU5OEUyIC8q
IFJlbW90ZU1lZGlhUGxheWVyTWFuYWdlck1lc3NhZ2VzLmggKi87IH07CisJCTA3OTIzMTRGMjM5
RDYyM0UwMDk1OThFMiAvKiBNZWRpYVBsYXllclByaXZhdGVSZW1vdGVJZGVudGlmaWVyLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwNzkyMzE0RTIzOUQ1
RjUzMDA5NTk4RTIgLyogTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlSWRlbnRpZmllci5oICovOyB9
OwogCQkwN0E1RUJCQzFDN0JBNDNFMDBCOUNBNjkgLyogV0tGcmFtZUhhbmRsZVJlZi5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDdBNUVCQkExQzdCQTQz
RTAwQjlDQTY5IC8qIFdLRnJhbWVIYW5kbGVSZWYuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkwRTk3RDc0RDIwMEU5MDA0MDBCRjY2NDMgLyogU2Fm
ZUJyb3dzaW5nU1BJLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSAwRTk3RDc0QzIwMEU4RkYzMDBCRjY2NDMgLyogU2FmZUJyb3dzaW5nU1BJLmggKi87IH07
CiAJCTBFREU4NTAzMjAwNEU3NUQwMDAzMDU2MCAvKiBXZWJzaXRlUG9wVXBQb2xpY3kuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBFREU4NTAyMjAwNEU3
NDkwMDAzMDU2MCAvKiBXZWJzaXRlUG9wVXBQb2xpY3kuaCAqLzsgfTsKQEAgLTE5OTcsNiArMjAw
NCw5IEBACiAJCTAwQjk2NjE1MThFMjRDQkEwMENFMUY4OCAvKiBBUElGaW5kQ2xpZW50LmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEFQSUZpbmRDbGllbnQuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMDBCOTY2MTcxOEUyNUFFMTAwQ0UxRjg4IC8qIEZpbmRDbGll
bnQubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBGaW5kQ2xpZW50
Lm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwMEI5NjYxODE4RTI1QUUxMDBDRTFG
ODggLyogRmluZENsaWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBGaW5k
Q2xpZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTA3MjVFRkFCMjM5QUUzODQw
MEE1MzhBOSAvKiBSZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eS5tZXNzYWdlcy5pbiAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGgg
PSBSZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eS5tZXNzYWdlcy5pbjsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJMDcyNUVGQUMyMzlBRTM4NTAwQTUzOEE5IC8qIFJlbW90ZU1lZGlh
UGxheWVyTWFuYWdlclByb3h5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlbW90ZU1lZGlhUGxheWVyTWFu
YWdlclByb3h5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTA3MjVFRkFEMjM5QjAy
NDUwMEE1MzhBOSAvKiBSZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eS5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBSZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eS5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTA3Mjk3RjlDMUMxNzExRUEwMDNGMDczNSAvKiBEZXZpY2VJZEhh
c2hTYWx0U3RvcmFnZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBE
ZXZpY2VJZEhhc2hTYWx0U3RvcmFnZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTA3Mjk3RjlDMUMxN0JCRUEwMDNGMDczNSAvKiBVc2VyTWVkaWFQZXJtaXNzaW9uQ2hlY2tQcm94
eS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBVc2VyTWVkaWFQZXJt
aXNzaW9uQ2hlY2tQcm94eS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTA3Mjk3
RjlEMUMxN0JCRUEwMDNGMDczNSAvKiBVc2VyTWVkaWFQZXJtaXNzaW9uQ2hlY2tQcm94eS5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBVc2VyTWVkaWFQZXJtaXNzaW9uQ2hlY2tQ
cm94eS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMjAxMSw4ICsyMDIxLDIyIEBA
CiAJCTA3NEU3NjAxMURGNzA3NUQwMEQzMThFQyAvKiBNZWRpYURldmljZVNhbmRib3hFeHRlbnNp
b25zLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1lZGlhRGV2aWNlU2FuZGJv
eEV4dGVuc2lvbnMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMDc2RTg4NEQxQTEz
Q0FERjAwNUU5MEZDIC8qIEFQSUNvbnRleHRNZW51Q2xpZW50LmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IEFQSUNvbnRleHRNZW51Q2xpZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTA3NkU4ODRGMUExM0NCQzYwMDVFOTBGQyAvKiBBUElJbmplY3RlZEJ1bmRs
ZVBhZ2VDb250ZXh0TWVudUNsaWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBBUElJbmplY3RlZEJ1bmRsZVBhZ2VDb250ZXh0TWVudUNsaWVudC5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQkwNzkyMzEzMDIzOUIzQjBDMDA5NTk4RTIgLyogUmVtb3RlTWVkaWFQ
bGF5ZXJNYW5hZ2VyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJlbW90ZU1lZGlhUGxheWVyTWFu
YWdlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTA3OTIzMTMxMjM5QjNCMEMw
MDk1OThFMiAvKiBNZWRpYVBsYXllclByaXZhdGVSZW1vdGUuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJMDc5MjMxMzIyMzlCM0IwQzAwOTU5OEUyIC8qIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90
ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBNZWRpYVBsYXllclByaXZhdGVSZW1vdGUuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMDc5MjMxMzMyMzlCM0IwQzAwOTU5OEUyIC8qIFJlbW90ZU1l
ZGlhUGxheWVyTWFuYWdlci5tZXNzYWdlcy5pbiAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBSZW1vdGVNZWRpYVBsYXllck1hbmFn
ZXIubWVzc2FnZXMuaW47IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTA3OTIzMTM0MjM5
QjNCMEMwMDk1OThFMiAvKiBSZW1vdGVNZWRpYVBsYXllck1hbmFnZXIuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCTA3OTIzMTQyMjM5Q0JDQjUwMDk1OThFMiAvKiBSZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQ
cm94eU1lc3NhZ2VzUmVwbGllcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBS
ZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eU1lc3NhZ2VzUmVwbGllcy5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQkwNzkyMzE0MzIzOUNCQ0I2MDA5NTk4RTIgLyogUmVtb3RlTWVk
aWFQbGF5ZXJNYW5hZ2VyTWVzc2FnZVJlY2VpdmVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IFJlbW90ZU1lZGlhUGxheWVyTWFuYWdlck1lc3NhZ2VSZWNlaXZlci5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTA3OTIzMTQ0MjM5Q0JDQjYwMDk1OThF
MiAvKiBSZW1vdGVNZWRpYVBsYXllck1hbmFnZXJNZXNzYWdlc1JlcGxpZXMuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyTWVzc2FnZXNS
ZXBsaWVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTA3OTIzMTQ1MjM5Q0JDQjcw
MDk1OThFMiAvKiBSZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eU1lc3NhZ2VSZWNlaXZlci5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSZW1vdGVNZWRpYVBsYXll
ck1hbmFnZXJQcm94eU1lc3NhZ2VSZWNlaXZlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCTA3OTIzMTQ2MjM5Q0JDQjcwMDk1OThFMiAvKiBSZW1vdGVNZWRpYVBsYXllck1hbmFn
ZXJQcm94eU1lc3NhZ2VzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlbW90
ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5TWVzc2FnZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJMDc5MjMxNDcyMzlDQkNCNzAwOTU5OEUyIC8qIFJlbW90ZU1lZGlhUGxheWVyTWFu
YWdlck1lc3NhZ2VzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlbW90ZU1l
ZGlhUGxheWVyTWFuYWdlck1lc3NhZ2VzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CTA3OTIzMTRFMjM5RDVGNTMwMDk1OThFMiAvKiBNZWRpYVBsYXllclByaXZhdGVSZW1vdGVJZGVu
dGlmaWVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZUlkZW50aWZp
ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMDdBNUVCQjkxQzdCQTQzRTAwQjlD
QTY5IC8qIFdLRnJhbWVIYW5kbGVSZWYuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gV0tGcmFtZUhhbmRsZVJlZi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTA3QTVFQkJBMUM3QkE0M0UwMEI5Q0E2OSAvKiBXS0ZyYW1lSGFuZGxlUmVmLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdLRnJhbWVIYW5kbGVSZWYuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMDdCQUYzNTYyM0EyQ0MxNzAwNDQyNTdFIC8qIFJlbW90ZU1l
ZGlhUGxheWVyUHJveHkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVtb3RlTWVkaWFQbGF5ZXJQcm94eS5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwN0JBRjM1NzIzQTJDQzE5MDA0NDI1N0Ug
LyogUmVtb3RlTWVkaWFQbGF5ZXJQcm94eS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSZW1vdGVN
ZWRpYVBsYXllclByb3h5LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMDg2N0Q2
QTVGRTg0MDMwN0MwMkFBQzA3IC8qIEFwcEtpdC5mcmFtZXdvcmsgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB3cmFwcGVyLmZyYW1ld29yazsgbmFtZSA9
IEFwcEtpdC5mcmFtZXdvcms7IHBhdGggPSAvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9BcHBL
aXQuZnJhbWV3b3JrOyBzb3VyY2VUcmVlID0gIjxhYnNvbHV0ZT4iOyB9OwogCQkwODlDMTY2N0ZF
ODQxMTU4QzAyQUFDMDcgLyogZW4gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0LnBsaXN0LnN0cmluZ3M7IG5hbWUg
PSBlbjsgcGF0aCA9IGVuLmxwcm9qL0luZm9QbGlzdC5zdHJpbmdzOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQkwRTk3RDc0QzIwMEU4RkYzMDBCRjY2NDMgLyogU2FmZUJyb3dzaW5nU1BJ
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IFNhZmVCcm93c2luZ1NQSS5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwpAQCAtNTAxMyw2ICs1MDM3LDMxIEBACiAJCQl0YWJXaWR0aCA9IDg7CiAJCQl1c2Vz
VGFicyA9IDA7CiAJCX07CisJCTA3OTIzMTJGMjM5QjNCMEMwMDk1OThFMiAvKiBtZWRpYSAqLyA9
IHsKKwkJCWlzYSA9IFBCWEdyb3VwOworCQkJY2hpbGRyZW4gPSAoCisJCQkJMDc5MjMxMzEyMzlC
M0IwQzAwOTU5OEUyIC8qIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZS5jcHAgKi8sCisJCQkJMDc5
MjMxMzIyMzlCM0IwQzAwOTU5OEUyIC8qIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZS5oICovLAor
CQkJCTA3OTIzMTRFMjM5RDVGNTMwMDk1OThFMiAvKiBNZWRpYVBsYXllclByaXZhdGVSZW1vdGVJ
ZGVudGlmaWVyLmggKi8sCisJCQkJMDc5MjMxMzAyMzlCM0IwQzAwOTU5OEUyIC8qIFJlbW90ZU1l
ZGlhUGxheWVyTWFuYWdlci5jcHAgKi8sCisJCQkJMDc5MjMxMzQyMzlCM0IwQzAwOTU5OEUyIC8q
IFJlbW90ZU1lZGlhUGxheWVyTWFuYWdlci5oICovLAorCQkJCTA3OTIzMTMzMjM5QjNCMEMwMDk1
OThFMiAvKiBSZW1vdGVNZWRpYVBsYXllck1hbmFnZXIubWVzc2FnZXMuaW4gKi8sCisJCQkpOwor
CQkJcGF0aCA9IG1lZGlhOworCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKKwkJfTsKKwkJMDdD
NzVDMTcyMzk5QTNEQjAwODhFNjVCIC8qIG1lZGlhICovID0geworCQkJaXNhID0gUEJYR3JvdXA7
CisJCQljaGlsZHJlbiA9ICgKKwkJCQkwNzI1RUZBRDIzOUIwMjQ1MDBBNTM4QTkgLyogUmVtb3Rl
TWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHkuY3BwICovLAorCQkJCTA3MjVFRkFDMjM5QUUzODUwMEE1
MzhBOSAvKiBSZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eS5oICovLAorCQkJCTA3MjVFRkFC
MjM5QUUzODQwMEE1MzhBOSAvKiBSZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eS5tZXNzYWdl
cy5pbiAqLywKKwkJCQkwN0JBRjM1NzIzQTJDQzE5MDA0NDI1N0UgLyogUmVtb3RlTWVkaWFQbGF5
ZXJQcm94eS5jcHAgKi8sCisJCQkJMDdCQUYzNTYyM0EyQ0MxNzAwNDQyNTdFIC8qIFJlbW90ZU1l
ZGlhUGxheWVyUHJveHkuaCAqLywKKwkJCSk7CisJCQlwYXRoID0gbWVkaWE7CisJCQlzb3VyY2VU
cmVlID0gIjxncm91cD4iOworCQl9OwogCQkwODY3RDY5MUZFODQwMjhGQzAyQUFDMDcgLyogV2Vi
S2l0MiAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCkBAIC02MTk1
LDYgKzYyNDQsNyBAQAogCQkyRDdFNDNCRjIzNzUyQ0Q5MDBFQTVDQTAgLyogR1BVICovID0gewog
CQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKKwkJCQkwNzkyMzEyRjIzOUIzQjBD
MDA5NTk4RTIgLyogbWVkaWEgKi8sCiAJCQkJMkQ3RTQzQzAyMzc1MkNEOTAwRUE1Q0EwIC8qIEdQ
VVByb2Nlc3NDb25uZWN0aW9uLmNwcCAqLywKIAkJCQkyRDdFNDNDMzIzNzUyQ0Q5MDBFQTVDQTAg
LyogR1BVUHJvY2Vzc0Nvbm5lY3Rpb24uaCAqLywKIAkJCQkyRDdFNDNDMjIzNzUyQ0Q5MDBFQTVD
QTAgLyogR1BVUHJvY2Vzc0Nvbm5lY3Rpb24ubWVzc2FnZXMuaW4gKi8sCkBAIC02MjA5LDYgKzYy
NTksNyBAQAogCQkJCTJEOUZCMjBEMjM3NTIwOUQwMDQ5RjkzNiAvKiBFbnRyeVBvaW50ICovLAog
CQkJCTJEOUZCMjA0MjM3NTIwOUQwMDQ5RjkzNiAvKiBpb3MgKi8sCiAJCQkJMkQ5RkIyMDYyMzc1
MjA5RDAwNDlGOTM2IC8qIG1hYyAqLywKKwkJCQkwN0M3NUMxNzIzOTlBM0RCMDA4OEU2NUIgLyog
bWVkaWEgKi8sCiAJCQkJMkQ5RkIyMEMyMzc1MjA5RDAwNDlGOTM2IC8qIEdQVUNvbm5lY3Rpb25U
b1dlYlByb2Nlc3MuY3BwICovLAogCQkJCTJEOUZCMjAwMjM3NTIwOUQwMDQ5RjkzNiAvKiBHUFVD
b25uZWN0aW9uVG9XZWJQcm9jZXNzLmggKi8sCiAJCQkJMkQ5RkIyMDkyMzc1MjA5RDAwNDlGOTM2
IC8qIEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MubWVzc2FnZXMuaW4gKi8sCkBAIC05MTIzLDYg
KzkxNzQsMTIgQEAKIAkJCQkxQThFRkE2RjEyNTJCODQxMDBGNzA2N0YgLyogUGx1Z2luUHJveHlN
ZXNzYWdlcy5oICovLAogCQkJCTBGRjI0QTJCMTg3OUU0QkMwMDNBQkYwQyAvKiBSZW1vdGVMYXll
clRyZWVEcmF3aW5nQXJlYVByb3h5TWVzc2FnZVJlY2VpdmVyLmNwcCAqLywKIAkJCQkwRkYyNEEy
QzE4NzlFNEJDMDAzQUJGMEMgLyogUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWFQcm94eU1lc3Nh
Z2VzLmggKi8sCisJCQkJMDc5MjMxNDMyMzlDQkNCNjAwOTU5OEUyIC8qIFJlbW90ZU1lZGlhUGxh
eWVyTWFuYWdlck1lc3NhZ2VSZWNlaXZlci5jcHAgKi8sCisJCQkJMDc5MjMxNDcyMzlDQkNCNzAw
OTU5OEUyIC8qIFJlbW90ZU1lZGlhUGxheWVyTWFuYWdlck1lc3NhZ2VzLmggKi8sCisJCQkJMDc5
MjMxNDQyMzlDQkNCNjAwOTU5OEUyIC8qIFJlbW90ZU1lZGlhUGxheWVyTWFuYWdlck1lc3NhZ2Vz
UmVwbGllcy5oICovLAorCQkJCTA3OTIzMTQ1MjM5Q0JDQjcwMDk1OThFMiAvKiBSZW1vdGVNZWRp
YVBsYXllck1hbmFnZXJQcm94eU1lc3NhZ2VSZWNlaXZlci5jcHAgKi8sCisJCQkJMDc5MjMxNDYy
MzlDQkNCNzAwOTU5OEUyIC8qIFJlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5TWVzc2FnZXMu
aCAqLywKKwkJCQkwNzkyMzE0MjIzOUNCQ0I1MDA5NTk4RTIgLyogUmVtb3RlTWVkaWFQbGF5ZXJN
YW5hZ2VyUHJveHlNZXNzYWdlc1JlcGxpZXMuaCAqLywKIAkJCQkxQUMxMzM4MzE4NTkwQzQ2MDBG
M0VDMDUgLyogUmVtb3RlT2JqZWN0UmVnaXN0cnlNZXNzYWdlUmVjZWl2ZXIuY3BwICovLAogCQkJ
CTFBQzEzMzg0MTg1OTBDNDYwMEYzRUMwNSAvKiBSZW1vdGVPYmplY3RSZWdpc3RyeU1lc3NhZ2Vz
LmggKi8sCiAJCQkJMEY1OTQ3QTUxODdCNTE3NjAwNDM3ODU3IC8qIFJlbW90ZVNjcm9sbGluZ0Nv
b3JkaW5hdG9yTWVzc2FnZVJlY2VpdmVyLmNwcCAqLywKQEAgLTk4NDAsNiArOTg5Nyw3IEBACiAJ
CQkJQkNDNTZGNzkxMTU5OTU3RDAwMUNDQUY5IC8qIE1hY2hQb3J0LmggaW4gSGVhZGVycyAqLywK
IAkJCQkxQTI0QjVGMzExRjUzMUU4MDBDMzgyNjkgLyogTWFjaFV0aWxpdGllcy5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJQ0UxQTBCRDUxQTQ4RTZDNjAwNTRFRjc0IC8qIE1hbmFnZWRDb25maWd1cmF0
aW9uU1BJLmggaW4gSGVhZGVycyAqLywKKwkJCQkwNzkyMzE0RjIzOUQ2MjNFMDA5NTk4RTIgLyog
TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlSWRlbnRpZmllci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
NTE5MzNERUYxOTY1RUIzMTAwOEFDM0VBIC8qIE1lbnVVdGlsaXRpZXMuaCBpbiBIZWFkZXJzICov
LAogCQkJCTFBQzRDODI5MTZCODc2QTkwMDY5RENDRCAvKiBNZXNzYWdlRmxhZ3MuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTFBM0VFRDEyMTYxQTUzRDYwMEFFQjRGNSAvKiBNZXNzYWdlUmVjZWl2ZXIu
aCBpbiBIZWFkZXJzICovLApAQCAtMTAwMDAsNiArMTAwNTgsMTAgQEAKIAkJCQkwRkYyNjRBMDFB
MUZGOUNDMDAxRkU3NTkgLyogUmVtb3RlTGF5ZXJUcmVlU2Nyb2xsaW5nUGVyZm9ybWFuY2VEYXRh
LmggaW4gSGVhZGVycyAqLywKIAkJCQkxQUYxQUM2QzE2NTE3NTlFMDBDMTdEN0YgLyogUmVtb3Rl
TGF5ZXJUcmVlVHJhbnNhY3Rpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCTJEQzE4RkIzMjE4QTZF
OUUwMDI1QTg4RCAvKiBSZW1vdGVMYXllclRyZWVWaWV3cy5oIGluIEhlYWRlcnMgKi8sCisJCQkJ
MDc5MjMxNEQyMzlDQkNCODAwOTU5OEUyIC8qIFJlbW90ZU1lZGlhUGxheWVyTWFuYWdlck1lc3Nh
Z2VzLmggaW4gSGVhZGVycyAqLywKKwkJCQkwNzkyMzE0QTIzOUNCQ0I4MDA5NTk4RTIgLyogUmVt
b3RlTWVkaWFQbGF5ZXJNYW5hZ2VyTWVzc2FnZXNSZXBsaWVzLmggaW4gSGVhZGVycyAqLywKKwkJ
CQkwNzkyMzE0QzIzOUNCQ0I4MDA5NTk4RTIgLyogUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJv
eHlNZXNzYWdlcy5oIGluIEhlYWRlcnMgKi8sCisJCQkJMDc5MjMxNDgyMzlDQkNCODAwOTU5OEUy
IC8qIFJlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5TWVzc2FnZXNSZXBsaWVzLmggaW4gSGVh
ZGVycyAqLywKIAkJCQlFMUI3ODQ3MTE2M0YyNDY5MDAwN0I2OTIgLyogUmVtb3RlTmV0d29ya2lu
Z0NvbnRleHQuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBNTcwNEZDMUJFMTc1MTEwMDg3NEFGMSAv
KiBSZW1vdGVPYmplY3RJbnZvY2F0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQkxQUMxMzM4MDE4
NTkwQUU0MDBGM0VDMDUgLyogUmVtb3RlT2JqZWN0UmVnaXN0cnkuaCBpbiBIZWFkZXJzICovLApA
QCAtMTE2NTgsNiArMTE3MjAsOCBAQAogCQkJCTJENzJBMUZBMjEyQkY0NkUwMDUxN0EyMCAvKiBS
ZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYS5tbSBpbiBTb3VyY2VzICovLAogCQkJCTBGRjI0QTJE
MTg3OUU0QkMwMDNBQkYwQyAvKiBSZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYVByb3h5TWVzc2Fn
ZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTJEQzE4RkI0MjE4QTZFOUUwMDI1QTg4
RCAvKiBSZW1vdGVMYXllclRyZWVWaWV3cy5tbSBpbiBTb3VyY2VzICovLAorCQkJCTA3OTIzMTQ5
MjM5Q0JDQjgwMDk1OThFMiAvKiBSZW1vdGVNZWRpYVBsYXllck1hbmFnZXJNZXNzYWdlUmVjZWl2
ZXIuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJMDc5MjMxNEIyMzlDQkNCODAwOTU5OEUyIC8qIFJl
bW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5TWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCTFBQzEzMzg1MTg1OTBDNDYwMEYzRUMwNSAvKiBSZW1vdGVPYmplY3RSZWdpc3Ry
eU1lc3NhZ2VSZWNlaXZlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjU5NDdBNzE4N0I1MTc2
MDA0Mzc4NTcgLyogUmVtb3RlU2Nyb2xsaW5nQ29vcmRpbmF0b3JNZXNzYWdlUmVjZWl2ZXIuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJQTU1QkE4MjYxQkEyNUNGRDAwN0NEMzNEIC8qIFJlbW90ZVdl
Ykluc3BlY3RvclByb3h5TWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2VzICovLApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9NZWRpYVBsYXllclByaXZh
dGVSZW1vdGUuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9NZWRpYVBs
YXllclByaXZhdGVSZW1vdGUuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjgzYWFjMWE4ZjRmYWE2ZjEwODE5MTgy
ODY4MzI0NTQyOGIzMjhkY2IKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvR1BVL21lZGlhL01lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZS5jcHAKQEAgLTAsMCArMSw4
MDAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IK
KyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2lu
Y2x1ZGUgImNvbmZpZy5oIgorCisjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKQorI2luY2x1ZGUgIk1l
ZGlhUGxheWVyUHJpdmF0ZVJlbW90ZS5oIgorCisjaW5jbHVkZSAiTG9nZ2luZy5oIgorI2luY2x1
ZGUgIlJlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5TWVzc2FnZXMuaCIKKyNpbmNsdWRlIDxX
ZWJDb3JlL01lZGlhUGxheWVyLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9Ob3RJbXBsZW1lbnRlZC5o
PgorI2luY2x1ZGUgPFdlYkNvcmUvUGxhdGZvcm1MYXllci5oPgorI2luY2x1ZGUgPFdlYkNvcmUv
UGxhdGZvcm1UaW1lUmFuZ2VzLmg+CisjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KKyNpbmNsdWRl
IDx3dGYvTWFpblRocmVhZC5oPgorI2luY2x1ZGUgPHd0Zi9TdHJpbmdQcmludFN0cmVhbS5oPgor
I2luY2x1ZGUgPHd0Zi9VUkwuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CisKK25h
bWVzcGFjZSBXZWJLaXQgewordXNpbmcgbmFtZXNwYWNlIFBBTDsKK3VzaW5nIG5hbWVzcGFjZSBX
ZWJDb3JlOworCitNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6Ok1lZGlhUGxheWVyUHJpdmF0ZVJl
bW90ZShNZWRpYVBsYXllciogcGxheWVyLCBNZWRpYVBsYXllckVudW1zOjpNZWRpYUVuZ2luZUlk
ZW50aWZpZXIgZW5naW5lSWRlbnRpZmllciwgTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlSWRlbnRp
ZmllciBwbGF5ZXJJZGVudGlmaWVyLCBSZW1vdGVNZWRpYVBsYXllck1hbmFnZXImIG1hbmFnZXIp
CisgICAgOiBtX3BsYXllcihwbGF5ZXIpCisgICAgLCBtX21hbmFnZXIobWFuYWdlcikKKyAgICAs
IG1fcmVtb3RlRW5naW5lSWRlbnRpZmllcihlbmdpbmVJZGVudGlmaWVyKQorICAgICwgbV9pZChw
bGF5ZXJJZGVudGlmaWVyKQorI2lmICFSRUxFQVNFX0xPR19ESVNBQkxFRAorICAgICwgbV9sb2dn
ZXIoJnBsYXllci0+bWVkaWFQbGF5ZXJMb2dnZXIoKSkKKyAgICAsIG1fbG9nSWRlbnRpZmllcihw
bGF5ZXItPm1lZGlhUGxheWVyTG9nSWRlbnRpZmllcigpKQorI2VuZGlmCit7CisgICAgSU5GT19M
T0coTE9HSURFTlRJRklFUik7Cit9CisKK01lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6fk1lZGlh
UGxheWVyUHJpdmF0ZVJlbW90ZSgpCit7CisgICAgSU5GT19MT0coTE9HSURFTlRJRklFUik7Cisg
ICAgbV9tYW5hZ2VyLmRlbGV0ZVJlbW90ZU1lZGlhUGxheWVyKG1faWQpOworfQorCit2b2lkIE1l
ZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpsb2FkKGNv
bnN0IFN0cmluZyYpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICBjYWxsT25NYWluVGhy
ZWFkKFt3ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKCp0aGlzKSwgdGhpc10geworICAgICAgICBpZiAo
IXdlYWtUaGlzKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIG5ldHdvcmtTdGF0ZUNo
YW5nZWQoTWVkaWFQbGF5ZXI6Ok5ldHdvcmtTdGF0ZTo6Rm9ybWF0RXJyb3IpOworICAgIH0pOwor
fQorCisjaWYgRU5BQkxFKE1FRElBX1NPVVJDRSkKK3ZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlUmVt
b3RlOjpsb2FkKGNvbnN0IFN0cmluZyYsIE1lZGlhU291cmNlUHJpdmF0ZUNsaWVudCopCit7Cisg
ICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICBjYWxsT25NYWluVGhyZWFkKFt3ZWFrVGhpcyA9IG1h
a2VXZWFrUHRyKCp0aGlzKSwgdGhpc10geworICAgICAgICBpZiAoIXdlYWtUaGlzKQorICAgICAg
ICAgICAgcmV0dXJuOworCisgICAgICAgIG5ldHdvcmtTdGF0ZUNoYW5nZWQoTWVkaWFQbGF5ZXI6
Ok5ldHdvcmtTdGF0ZTo6Rm9ybWF0RXJyb3IpOworICAgIH0pOworfQorI2VuZGlmCisKKyNpZiBF
TkFCTEUoTUVESUFfU1RSRUFNKQordm9pZCBNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OmxvYWQo
TWVkaWFTdHJlYW1Qcml2YXRlJikKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIGNhbGxP
bk1haW5UaHJlYWQoW3dlYWtUaGlzID0gbWFrZVdlYWtQdHIoKnRoaXMpLCB0aGlzXSB7CisgICAg
ICAgIGlmICghd2Vha1RoaXMpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgbmV0d29y
a1N0YXRlQ2hhbmdlZChNZWRpYVBsYXllcjo6TmV0d29ya1N0YXRlOjpGb3JtYXRFcnJvcik7Cisg
ICAgfSk7Cit9CisjZW5kaWYKKwordm9pZCBNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OmNhbmNl
bExvYWQoKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKKwordm9pZCBNZWRpYVBsYXll
clByaXZhdGVSZW1vdGU6OnByZXBhcmVUb1BsYXkoKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7
Cit9CisKK1BsYXRmb3JtTGF5ZXIqIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6cGxhdGZvcm1M
YXllcigpIGNvbnN0Cit7CisgICAgcmV0dXJuIG51bGxwdHI7Cit9CisKKyNpZiBQTEFURk9STShJ
T1NfRkFNSUxZKSB8fCAoUExBVEZPUk0oTUFDKSAmJiBFTkFCTEUoVklERU9fUFJFU0VOVEFUSU9O
X01PREUpKQordm9pZCBNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OnNldFZpZGVvRnVsbHNjcmVl
bkxheWVyKFBsYXRmb3JtTGF5ZXIqLCBXVEY6OkZ1bmN0aW9uPHZvaWQoKT4mJikKK3sKKyAgICBu
b3RJbXBsZW1lbnRlZCgpOworfQorCit2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6dXBk
YXRlVmlkZW9GdWxsc2NyZWVuSW5saW5lSW1hZ2UoKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7
Cit9CisKK3ZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpzZXRWaWRlb0Z1bGxzY3JlZW5G
cmFtZShGbG9hdFJlY3QpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwordm9pZCBNZWRp
YVBsYXllclByaXZhdGVSZW1vdGU6OnNldFZpZGVvRnVsbHNjcmVlbkdyYXZpdHkoTWVkaWFQbGF5
ZXI6OlZpZGVvR3Jhdml0eSkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCit2b2lkIE1l
ZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6c2V0VmlkZW9GdWxsc2NyZWVuTW9kZShNZWRpYVBsYXll
cjo6VmlkZW9GdWxsc2NyZWVuTW9kZSkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCit2
b2lkIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6dmlkZW9GdWxsc2NyZWVuU3RhbmRieUNoYW5n
ZWQoKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisjZW5kaWYKKworI2lmIFBMQVRGT1JN
KElPU19GQU1JTFkpCitOU0FycmF5KiBNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OnRpbWVkTWV0
YWRhdGEoKSBjb25zdAoreworICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIG51bGxw
dHI7Cit9CisKK1N0cmluZyBNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OmFjY2Vzc0xvZygpIGNv
bnN0Cit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gZW1wdHlTdHJpbmcoKTsK
K30KKworU3RyaW5nIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6ZXJyb3JMb2coKSBjb25zdAor
eworICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIGVtcHR5U3RyaW5nKCk7Cit9Cisj
ZW5kaWYKKworbG9uZyBNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OnBsYXRmb3JtRXJyb3JDb2Rl
KCkgY29uc3QKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiAwOworfQorCit2
b2lkIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6cGxheSgpCit7CisgICAgbm90SW1wbGVtZW50
ZWQoKTsKK30KKwordm9pZCBNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OnBhdXNlKCkKK3sKKyAg
ICBub3RJbXBsZW1lbnRlZCgpOworfQorCit2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6
c2V0QnVmZmVyaW5nUG9saWN5KE1lZGlhUGxheWVyOjpCdWZmZXJpbmdQb2xpY3kpCit7CisgICAg
bm90SW1wbGVtZW50ZWQoKTsKK30KKworYm9vbCBNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OnN1
cHBvcnRzUGljdHVyZUluUGljdHVyZSgpIGNvbnN0Cit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsK
KyAgICByZXR1cm4gZmFsc2U7Cit9CisKK2Jvb2wgTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpz
dXBwb3J0c0Z1bGxzY3JlZW4oKSBjb25zdAoreworICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAg
cmV0dXJuIGZhbHNlOworfQorCitib29sIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6c3VwcG9y
dHNTY2FubmluZygpIGNvbnN0Cit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4g
ZmFsc2U7Cit9CisKK2Jvb2wgTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpyZXF1aXJlc0ltbWVk
aWF0ZUNvbXBvc2l0aW5nKCkgY29uc3QKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJl
dHVybiBmYWxzZTsKK30KKworYm9vbCBNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OmNhblNhdmVN
ZWRpYURhdGEoKSBjb25zdAoreworICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIGZh
bHNlOworfQorCitGbG9hdFNpemUgTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpuYXR1cmFsU2l6
ZSgpIGNvbnN0Cit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4geyB9OworfQor
Citib29sIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6aGFzVmlkZW8oKSBjb25zdAoreworICAg
IG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIGZhbHNlOworfQorCitib29sIE1lZGlhUGxh
eWVyUHJpdmF0ZVJlbW90ZTo6aGFzQXVkaW8oKSBjb25zdAoreworICAgIG5vdEltcGxlbWVudGVk
KCk7CisgICAgcmV0dXJuIGZhbHNlOworfQorCit2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90
ZTo6c2V0VmlzaWJsZShib29sKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKK01lZGlh
VGltZSBNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OmN1cnJlbnRNZWRpYVRpbWUoKSBjb25zdAor
eworICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIE1lZGlhVGltZTo6emVyb1RpbWUo
KTsKK30KKworTWVkaWFUaW1lIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6Z2V0U3RhcnREYXRl
KCkgY29uc3QKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiBNZWRpYVRpbWU6
Onplcm9UaW1lKCk7Cit9CisKK3ZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpzZWVrKGNv
bnN0IE1lZGlhVGltZSYpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwordm9pZCBNZWRp
YVBsYXllclByaXZhdGVSZW1vdGU6OnNlZWtXaXRoVG9sZXJhbmNlKGNvbnN0IE1lZGlhVGltZSYs
IGNvbnN0IE1lZGlhVGltZSYsIGNvbnN0IE1lZGlhVGltZSYpCit7CisgICAgbm90SW1wbGVtZW50
ZWQoKTsKK30KKworYm9vbCBNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OnNlZWtpbmcoKSBjb25z
dAoreworICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIGZhbHNlOworfQorCitNZWRp
YVRpbWUgTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpzdGFydFRpbWUoKSBjb25zdAoreworICAg
IG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIE1lZGlhVGltZTo6emVyb1RpbWUoKTsKK30K
Kwordm9pZCBNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OnNldFJhdGVEb3VibGUoZG91YmxlKQor
eworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKK3ZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlUmVt
b3RlOjpzZXRQcmVzZXJ2ZXNQaXRjaChib29sKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9
CisKK2Jvb2wgTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpwYXVzZWQoKSBjb25zdAoreworICAg
IG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIGZhbHNlOworfQorCit2b2lkIE1lZGlhUGxh
eWVyUHJpdmF0ZVJlbW90ZTo6c2V0Vm9sdW1lRG91YmxlKGRvdWJsZSkKK3sKKyAgICBub3RJbXBs
ZW1lbnRlZCgpOworfQorCit2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6c2V0TXV0ZWQo
Ym9vbCkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCitib29sIE1lZGlhUGxheWVyUHJp
dmF0ZVJlbW90ZTo6aGFzQ2xvc2VkQ2FwdGlvbnMoKSBjb25zdAoreworICAgIG5vdEltcGxlbWVu
dGVkKCk7CisgICAgcmV0dXJuIGZhbHNlOworfQorCit2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZVJl
bW90ZTo6c2V0Q2xvc2VkQ2FwdGlvbnNWaXNpYmxlKGJvb2wpCit7CisgICAgbm90SW1wbGVtZW50
ZWQoKTsKK30KKworZG91YmxlIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6bWF4RmFzdEZvcndh
cmRSYXRlKCkgY29uc3QKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiAwOwor
fQorCitkb3VibGUgTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjptaW5GYXN0UmV2ZXJzZVJhdGUo
KSBjb25zdAoreworICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIDA7Cit9CisKK3N0
ZDo6dW5pcXVlX3B0cjxQbGF0Zm9ybVRpbWVSYW5nZXM+IE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90
ZTo6c2Vla2FibGUoKSBjb25zdAoreworICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJu
IG1ha2VVbmlxdWU8UGxhdGZvcm1UaW1lUmFuZ2VzPigpOworfQorCitzdGQ6OnVuaXF1ZV9wdHI8
UGxhdGZvcm1UaW1lUmFuZ2VzPiBNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OmJ1ZmZlcmVkKCkg
Y29uc3QKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiBtYWtlVW5pcXVlPFBs
YXRmb3JtVGltZVJhbmdlcz4oKTsKK30KKworTWVkaWFUaW1lIE1lZGlhUGxheWVyUHJpdmF0ZVJl
bW90ZTo6bWF4TWVkaWFUaW1lU2Vla2FibGUoKSBjb25zdAoreworICAgIG5vdEltcGxlbWVudGVk
KCk7CisgICAgcmV0dXJuIE1lZGlhVGltZTo6emVyb1RpbWUoKTsKK30KKworTWVkaWFUaW1lIE1l
ZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6bWluTWVkaWFUaW1lU2Vla2FibGUoKSBjb25zdAorewor
ICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIE1lZGlhVGltZTo6emVyb1RpbWUoKTsK
K30KKworZG91YmxlIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6c2Vla2FibGVUaW1lUmFuZ2Vz
TGFzdE1vZGlmaWVkVGltZSgpIGNvbnN0Cit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICBy
ZXR1cm4gMDsKK30KKworZG91YmxlIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6bGl2ZVVwZGF0
ZUludGVydmFsKCkgY29uc3QKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiAw
OworfQorCit1bnNpZ25lZCBsb25nIGxvbmcgTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjp0b3Rh
bEJ5dGVzKCkgY29uc3QKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiAwOwor
fQorCitib29sIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6ZGlkTG9hZGluZ1Byb2dyZXNzKCkg
Y29uc3QKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiBmYWxzZTsKK30KKwor
dm9pZCBNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OnNldFNpemUoY29uc3QgSW50U2l6ZSYpCit7
CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwordm9pZCBNZWRpYVBsYXllclByaXZhdGVSZW1v
dGU6OnBhaW50KEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYpCit7CisgICAgbm90
SW1wbGVtZW50ZWQoKTsKK30KKwordm9pZCBNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OnBhaW50
Q3VycmVudEZyYW1lSW5Db250ZXh0KEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYp
Cit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKworYm9vbCBNZWRpYVBsYXllclByaXZhdGVS
ZW1vdGU6OmNvcHlWaWRlb1RleHR1cmVUb1BsYXRmb3JtVGV4dHVyZShHcmFwaGljc0NvbnRleHQz
RCosIFBsYXRmb3JtM0RPYmplY3QsIEdDM0RlbnVtLCBHQzNEaW50LCBHQzNEZW51bSwgR0MzRGVu
dW0sIEdDM0RlbnVtLCBib29sLCBib29sKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAg
cmV0dXJuIGZhbHNlOworfQorCitOYXRpdmVJbWFnZVB0ciBNZWRpYVBsYXllclByaXZhdGVSZW1v
dGU6Om5hdGl2ZUltYWdlRm9yQ3VycmVudFRpbWUoKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7
CisgICAgcmV0dXJuIG51bGxwdHI7Cit9CisKK3ZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3Rl
OjpzZXRQcmVsb2FkKE1lZGlhUGxheWVyOjpQcmVsb2FkKQoreworICAgIG5vdEltcGxlbWVudGVk
KCk7Cit9CisKK2Jvb2wgTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpoYXNBdmFpbGFibGVWaWRl
b0ZyYW1lKCkgY29uc3QKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiBmYWxz
ZTsKK30KKworYm9vbCBNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OmNhbkxvYWRQb3N0ZXIoKSBj
b25zdAoreworICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIGZhbHNlOworfQorCit2
b2lkIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6c2V0UG9zdGVyKGNvbnN0IFN0cmluZyYpCit7
CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKworI2lmIFVTRShOQVRJVkVfRlVMTFNDUkVFTl9W
SURFTykKK3ZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjplbnRlckZ1bGxzY3JlZW4oKQor
eworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKK3ZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlUmVt
b3RlOjpleGl0RnVsbHNjcmVlbigpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKyNlbmRp
ZgorCisjaWYgRU5BQkxFKFdJUkVMRVNTX1BMQVlCQUNLX1RBUkdFVCkKK1N0cmluZyBNZWRpYVBs
YXllclByaXZhdGVSZW1vdGU6OndpcmVsZXNzUGxheWJhY2tUYXJnZXROYW1lKCkgY29uc3QKK3sK
KyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiBlbXB0eVN0cmluZygpOworfQorCitN
ZWRpYVBsYXllcjo6V2lyZWxlc3NQbGF5YmFja1RhcmdldFR5cGUgTWVkaWFQbGF5ZXJQcml2YXRl
UmVtb3RlOjp3aXJlbGVzc1BsYXliYWNrVGFyZ2V0VHlwZSgpIGNvbnN0Cit7CisgICAgbm90SW1w
bGVtZW50ZWQoKTsKKyAgICByZXR1cm4gTWVkaWFQbGF5ZXI6OlRhcmdldFR5cGVOb25lOworfQor
Citib29sIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6d2lyZWxlc3NWaWRlb1BsYXliYWNrRGlz
YWJsZWQoKSBjb25zdAoreworICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIHRydWU7
Cit9CisKK3ZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpzZXRXaXJlbGVzc1ZpZGVvUGxh
eWJhY2tEaXNhYmxlZChib29sKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKK2Jvb2wg
TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpjYW5QbGF5VG9XaXJlbGVzc1BsYXliYWNrVGFyZ2V0
KCkgY29uc3QKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiBmYWxzZTsKK30K
KworYm9vbCBNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OmlzQ3VycmVudFBsYXliYWNrVGFyZ2V0
V2lyZWxlc3MoKSBjb25zdAoreworICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIGZh
bHNlOworfQorCit2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6c2V0V2lyZWxlc3NQbGF5
YmFja1RhcmdldChSZWY8TWVkaWFQbGF5YmFja1RhcmdldD4mJikKK3sKKyAgICBub3RJbXBsZW1l
bnRlZCgpOworfQorCit2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6c2V0U2hvdWxkUGxh
eVRvUGxheWJhY2tUYXJnZXQoYm9vbCkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorI2Vu
ZGlmCisKKyNpZiBVU0UoTkFUSVZFX0ZVTExTQ1JFRU5fVklERU8pCitib29sIE1lZGlhUGxheWVy
UHJpdmF0ZVJlbW90ZTo6Y2FuRW50ZXJGdWxsc2NyZWVuKCkgY29uc3QKK3sKKyAgICBub3RJbXBs
ZW1lbnRlZCgpOworICAgIHJldHVybiBmYWxzZTsKK30KKyNlbmRpZgorCitib29sIE1lZGlhUGxh
eWVyUHJpdmF0ZVJlbW90ZTo6c3VwcG9ydHNBY2NlbGVyYXRlZFJlbmRlcmluZygpIGNvbnN0Cit7
CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK3ZvaWQgTWVk
aWFQbGF5ZXJQcml2YXRlUmVtb3RlOjphY2NlbGVyYXRlZFJlbmRlcmluZ1N0YXRlQ2hhbmdlZCgp
Cit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKworYm9vbCBNZWRpYVBsYXllclByaXZhdGVS
ZW1vdGU6OnNob3VsZE1haW50YWluQXNwZWN0UmF0aW8oKSBjb25zdAoreworICAgIG5vdEltcGxl
bWVudGVkKCk7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK3ZvaWQgTWVkaWFQbGF5ZXJQcml2YXRl
UmVtb3RlOjpzZXRTaG91bGRNYWludGFpbkFzcGVjdFJhdGlvKGJvb2wpCit7CisgICAgbm90SW1w
bGVtZW50ZWQoKTsKK30KKworYm9vbCBNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6Omhhc1Npbmds
ZVNlY3VyaXR5T3JpZ2luKCkgY29uc3QKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJl
dHVybiBmYWxzZTsKK30KKworYm9vbCBNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OmRpZFBhc3ND
T1JTQWNjZXNzQ2hlY2soKSBjb25zdAoreworICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0
dXJuIGZhbHNlOworfQorCitPcHRpb25hbDxib29sPiBNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6
OndvdWxkVGFpbnRPcmlnaW4oY29uc3QgU2VjdXJpdHlPcmlnaW4mKSBjb25zdAoreworICAgIG5v
dEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKK30KKworTWVkaWFQbGF5
ZXI6Ok1vdmllTG9hZFR5cGUgTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjptb3ZpZUxvYWRUeXBl
KCkgY29uc3QKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiBNZWRpYVBsYXll
cjo6TW92aWVMb2FkVHlwZTo6VW5rbm93bjsKK30KKwordm9pZCBNZWRpYVBsYXllclByaXZhdGVS
ZW1vdGU6OnByZXBhcmVGb3JSZW5kZXJpbmcoKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9
CisKK01lZGlhVGltZSBNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6Om1lZGlhVGltZUZvclRpbWVW
YWx1ZShjb25zdCBNZWRpYVRpbWUmIHRpbWVWYWx1ZSkgY29uc3QKK3sKKyAgICBub3RJbXBsZW1l
bnRlZCgpOworICAgIHJldHVybiB0aW1lVmFsdWU7Cit9CisKK2RvdWJsZSBNZWRpYVBsYXllclBy
aXZhdGVSZW1vdGU6Om1heGltdW1EdXJhdGlvblRvQ2FjaGVNZWRpYVRpbWUoKSBjb25zdAorewor
ICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIDA7Cit9CisKK3Vuc2lnbmVkIE1lZGlh
UGxheWVyUHJpdmF0ZVJlbW90ZTo6ZGVjb2RlZEZyYW1lQ291bnQoKSBjb25zdAoreworICAgIG5v
dEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIDA7Cit9CisKK3Vuc2lnbmVkIE1lZGlhUGxheWVy
UHJpdmF0ZVJlbW90ZTo6ZHJvcHBlZEZyYW1lQ291bnQoKSBjb25zdAoreworICAgIG5vdEltcGxl
bWVudGVkKCk7CisgICAgcmV0dXJuIDA7Cit9CisKK3Vuc2lnbmVkIE1lZGlhUGxheWVyUHJpdmF0
ZVJlbW90ZTo6YXVkaW9EZWNvZGVkQnl0ZUNvdW50KCkgY29uc3QKK3sKKyAgICBub3RJbXBsZW1l
bnRlZCgpOworICAgIHJldHVybiAwOworfQorCit1bnNpZ25lZCBNZWRpYVBsYXllclByaXZhdGVS
ZW1vdGU6OnZpZGVvRGVjb2RlZEJ5dGVDb3VudCgpIGNvbnN0Cit7CisgICAgbm90SW1wbGVtZW50
ZWQoKTsKKyAgICByZXR1cm4gMDsKK30KKwordm9pZCBNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6
OnNldFByaXZhdGVCcm93c2luZ01vZGUoYm9vbCkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOwor
fQorCitTdHJpbmcgTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjplbmdpbmVEZXNjcmlwdGlvbigp
IGNvbnN0Cit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gZW1wdHlTdHJpbmco
KTsKK30KKworI2lmIEVOQUJMRShXRUJfQVVESU8pCitBdWRpb1NvdXJjZVByb3ZpZGVyKiBNZWRp
YVBsYXllclByaXZhdGVSZW1vdGU6OmF1ZGlvU291cmNlUHJvdmlkZXIoKQoreworICAgIG5vdElt
cGxlbWVudGVkKCk7CisgICAgcmV0dXJuIG51bGxwdHI7Cit9CisjZW5kaWYKKworI2lmIEVOQUJM
RShMRUdBQ1lfRU5DUllQVEVEX01FRElBKQorc3RkOjp1bmlxdWVfcHRyPExlZ2FjeUNETVNlc3Np
b24+IE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6Y3JlYXRlU2Vzc2lvbihjb25zdCBTdHJpbmcm
LCBMZWdhY3lDRE1TZXNzaW9uQ2xpZW50KikKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAg
IHJldHVybiBudWxscHRyOworfQorCit2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6c2V0
Q0RNU2Vzc2lvbihMZWdhY3lDRE1TZXNzaW9uKikKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOwor
fQorCit2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6a2V5QWRkZWQoKQoreworICAgIG5v
dEltcGxlbWVudGVkKCk7Cit9CisjZW5kaWYKKworI2lmIEVOQUJMRShFTkNSWVBURURfTUVESUEp
Cit2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6Y2RtSW5zdGFuY2VBdHRhY2hlZChDRE1J
bnN0YW5jZSYpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwordm9pZCBNZWRpYVBsYXll
clByaXZhdGVSZW1vdGU6OmNkbUluc3RhbmNlRGV0YWNoZWQoQ0RNSW5zdGFuY2UmKQoreworICAg
IG5vdEltcGxlbWVudGVkKCk7Cit9CisKK3ZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjph
dHRlbXB0VG9EZWNyeXB0V2l0aEluc3RhbmNlKENETUluc3RhbmNlJikKK3sKKyAgICBub3RJbXBs
ZW1lbnRlZCgpOworfQorCitib29sIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6d2FpdGluZ0Zv
cktleSgpIGNvbnN0Cit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gZmFsc2U7
Cit9CisjZW5kaWYKKworI2lmIEVOQUJMRShWSURFT19UUkFDSykKK2Jvb2wgTWVkaWFQbGF5ZXJQ
cml2YXRlUmVtb3RlOjpyZXF1aXJlc1RleHRUcmFja1JlcHJlc2VudGF0aW9uKCkgY29uc3QKK3sK
KyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiBmYWxzZTsKK30KKwordm9pZCBNZWRp
YVBsYXllclByaXZhdGVSZW1vdGU6OnNldFRleHRUcmFja1JlcHJlc2VudGF0aW9uKFRleHRUcmFj
a1JlcHJlc2VudGF0aW9uKikKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCit2b2lkIE1l
ZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6c3luY1RleHRUcmFja0JvdW5kcygpCit7CisgICAgbm90
SW1wbGVtZW50ZWQoKTsKK30KKwordm9pZCBNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OnRyYWNr
c0NoYW5nZWQoKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisjZW5kaWYKKworI2lmIFVT
RShHU1RSRUFNRVIpCit2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6c2ltdWxhdGVBdWRp
b0ludGVycnVwdGlvbigpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKyNlbmRpZgorCit2
b2lkIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6YmVnaW5TaW11bGF0ZWRIRENQRXJyb3IoKQor
eworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKK3ZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlUmVt
b3RlOjplbmRTaW11bGF0ZWRIRENQRXJyb3IoKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9
CisKK1N0cmluZyBNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6Omxhbmd1YWdlT2ZQcmltYXJ5QXVk
aW9UcmFjaygpIGNvbnN0Cit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gZW1w
dHlTdHJpbmcoKTsKK30KKworc2l6ZV90IE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6ZXh0cmFN
ZW1vcnlDb3N0KCkgY29uc3QKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiAw
OworfQorCit1bnNpZ25lZCBsb25nIGxvbmcgTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpmaWxl
U2l6ZSgpIGNvbnN0Cit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gMDsKK30K
KworYm9vbCBNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OmVuZGVkKCkgY29uc3QKK3sKKyAgICBu
b3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiBmYWxzZTsKK30KKworT3B0aW9uYWw8VmlkZW9Q
bGF5YmFja1F1YWxpdHlNZXRyaWNzPiBNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OnZpZGVvUGxh
eWJhY2tRdWFsaXR5TWV0cmljcygpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1
cm4gV1RGOjpudWxsb3B0OworfQorCisjaWYgRU5BQkxFKEFWRl9DQVBUSU9OUykKK3ZvaWQgTWVk
aWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpub3RpZnlUcmFja01vZGVDaGFuZ2VkKCkKK3sKKyAgICBu
b3RJbXBsZW1lbnRlZCgpOworfQorI2VuZGlmCisKK3ZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlUmVt
b3RlOjpub3RpZnlBY3RpdmVTb3VyY2VCdWZmZXJzQ2hhbmdlZCgpCit7CisgICAgbm90SW1wbGVt
ZW50ZWQoKTsKK30KKwordm9pZCBNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OnNldFNob3VsZERp
c2FibGVTbGVlcChib29sKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKK3ZvaWQgTWVk
aWFQbGF5ZXJQcml2YXRlUmVtb3RlOjphcHBsaWNhdGlvbldpbGxSZXNpZ25BY3RpdmUoKQorewor
ICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKK3ZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3Rl
OjphcHBsaWNhdGlvbkRpZEJlY29tZUFjdGl2ZSgpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsK
K30KKworYm9vbCBNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OnBlcmZvcm1UYXNrQXRNZWRpYVRp
bWUoV1RGOjpGdW5jdGlvbjx2b2lkKCk+JiYsIE1lZGlhVGltZSkKK3sKKyAgICBub3RJbXBsZW1l
bnRlZCgpOworICAgIHJldHVybiBmYWxzZTsKK30KKworYm9vbCBNZWRpYVBsYXllclByaXZhdGVS
ZW1vdGU6OnNob3VsZElnbm9yZUludHJpbnNpY1NpemUoKQoreworICAgIG5vdEltcGxlbWVudGVk
KCk7CisgICAgcmV0dXJuIGZhbHNlOworfQorCit2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90
ZTo6bmV0d29ya1N0YXRlQ2hhbmdlZChXZWJDb3JlOjpNZWRpYVBsYXllckVudW1zOjpOZXR3b3Jr
U3RhdGUgc3RhdGUpCit7CisgICAgbV9uZXR3b3JrU3RhdGUgPSBzdGF0ZTsKKyAgICBtX3BsYXll
ci0+bmV0d29ya1N0YXRlQ2hhbmdlZCgpOworfQorCit2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZVJl
bW90ZTo6cmVhZHlTdGF0ZUNoYW5nZWQoV2ViQ29yZTo6TWVkaWFQbGF5ZXJFbnVtczo6UmVhZHlT
dGF0ZSBzdGF0ZSkKK3sKKyAgICBtX3JlYWR5U3RhdGUgPSBzdGF0ZTsKKyAgICBtX3BsYXllci0+
bmV0d29ya1N0YXRlQ2hhbmdlZCgpOworfQorCit2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90
ZTo6dm9sdW1lQ2hhbmdlZChkb3VibGUgdm9sdW1lKQoreworICAgIG1fdm9sdW1lID0gdm9sdW1l
OworICAgIG1fcGxheWVyLT52b2x1bWVDaGFuZ2VkKHZvbHVtZSk7Cit9CisKKwordm9pZCBNZWRp
YVBsYXllclByaXZhdGVSZW1vdGU6Om11dGVDaGFuZ2VkKGJvb2wgbXV0ZSkKK3sKKyAgICBtX211
dGUgPSBtdXRlOworICAgIG1fcGxheWVyLT5tdXRlQ2hhbmdlZChtdXRlKTsKK30KKwordm9pZCBN
ZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OnRpbWVDaGFuZ2VkKE1lZGlhVGltZSB0aW1lKQorewor
ICAgIG1fcGxheWVyLT50aW1lQ2hhbmdlZCgpOworfQorCisKK3ZvaWQgTWVkaWFQbGF5ZXJQcml2
YXRlUmVtb3RlOjpkdXJhdGlvbkNoYW5nZWQoTWVkaWFUaW1lIGR1cmF0aW9uKQoreworICAgIG1f
ZHVyYXRpb24gPSBkdXJhdGlvbjsKKyAgICBtX3BsYXllci0+ZHVyYXRpb25DaGFuZ2VkKCk7Cit9
CisKK3ZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpyYXRlQ2hhbmdlZChkb3VibGUgcmF0
ZSkKK3sKKyAgICBtX3JhdGUgPSByYXRlOworICAgIG1fcGxheWVyLT5yYXRlQ2hhbmdlZCgpOwor
fQorCisjaWYgIVJFTEVBU0VfTE9HX0RJU0FCTEVECitXVEZMb2dDaGFubmVsJiBNZWRpYVBsYXll
clByaXZhdGVSZW1vdGU6OmxvZ0NoYW5uZWwoKSBjb25zdAoreworICAgIHJldHVybiBXZWJLaXQy
TG9nV2ViUlRDOworfQorI2VuZGlmCisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlm
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL01lZGlhUGxh
eWVyUHJpdmF0ZVJlbW90ZS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9N
ZWRpYVBsYXllclByaXZhdGVSZW1vdGUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wNGViODg1YTBjZDBlMWQ2N2Y0
OTkzZjg2NjlkMGViYmE0YmFhMzExCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL0dQVS9tZWRpYS9NZWRpYVBsYXllclByaXZhdGVSZW1vdGUuaApAQCAtMCwwICsx
LDMxNCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisg
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisj
cHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykKKworI2luY2x1ZGUgIlJlbW90
ZU1lZGlhUGxheWVyTWFuYWdlci5oIgorI2luY2x1ZGUgPFdlYkNvcmUvTWVkaWFQbGF5ZXJQcml2
YXRlLmg+CisjaW5jbHVkZSA8d3RmL0xvZ2dlckhlbHBlci5oPgorI2luY2x1ZGUgPHd0Zi9NZWRp
YVRpbWUuaD4KKyNpbmNsdWRlIDx3dGYvV2Vha1B0ci5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsK
KworY2xhc3MgTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlIGZpbmFsCisgICAgOiBwdWJsaWMgQ2Fu
TWFrZVdlYWtQdHI8TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlPgorICAgICwgcHVibGljIE1lZGlh
UGxheWVyUHJpdmF0ZUludGVyZmFjZQorI2lmICFSRUxFQVNFX0xPR19ESVNBQkxFRAorICAgICwg
cHJpdmF0ZSBMb2dnZXJIZWxwZXIKKyNlbmRpZgoreworcHVibGljOgorICAgIHN0YXRpYyBzdGQ6
OnVuaXF1ZV9wdHI8TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlPiBjcmVhdGUoTWVkaWFQbGF5ZXIq
IHBsYXllciwgTWVkaWFQbGF5ZXJFbnVtczo6TWVkaWFFbmdpbmVJZGVudGlmaWVyIHJlbW90ZUVu
Z2luZUlkZW50aWZpZXIsIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZUlkZW50aWZpZXIgaWRlbnRp
ZmllciwgUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyJiBtYW5hZ2VyKQorICAgIHsKKyAgICAgICAg
cmV0dXJuIG1ha2VVbmlxdWU8TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlPihwbGF5ZXIsIHJlbW90
ZUVuZ2luZUlkZW50aWZpZXIsIGlkZW50aWZpZXIsIG1hbmFnZXIpOworICAgIH0KKworICAgIGV4
cGxpY2l0IE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZShNZWRpYVBsYXllciosIE1lZGlhUGxheWVy
RW51bXM6Ok1lZGlhRW5naW5lSWRlbnRpZmllciwgTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlSWRl
bnRpZmllciwgUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyJik7CisgICAgdmlydHVhbCB+TWVkaWFQ
bGF5ZXJQcml2YXRlUmVtb3RlKCk7CisKKyAgICB2b2lkIGludmFsaWRhdGUoKSB7IG1faW52YWxp
ZCA9IHRydWU7IH0KKyAgICBNZWRpYVBsYXllckVudW1zOjpNZWRpYUVuZ2luZUlkZW50aWZpZXIg
cmVtb3RlRW5naW5lSWRlbnRpZmllcigpIGNvbnN0IHsgcmV0dXJuIG1fcmVtb3RlRW5naW5lSWRl
bnRpZmllcjsgfQorICAgIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZUlkZW50aWZpZXIgcGxheWVy
SXRlbnRpZmllcigpIGNvbnN0IHsgcmV0dXJuIG1faWQ7IH0KKworICAgIHZvaWQgbmV0d29ya1N0
YXRlQ2hhbmdlZChXZWJDb3JlOjpNZWRpYVBsYXllckVudW1zOjpOZXR3b3JrU3RhdGUpOworICAg
IHZvaWQgcmVhZHlTdGF0ZUNoYW5nZWQoV2ViQ29yZTo6TWVkaWFQbGF5ZXJFbnVtczo6UmVhZHlT
dGF0ZSk7CisgICAgdm9pZCB2b2x1bWVDaGFuZ2VkKGRvdWJsZSk7CisgICAgdm9pZCBtdXRlQ2hh
bmdlZChib29sKTsKKyAgICB2b2lkIHRpbWVDaGFuZ2VkKE1lZGlhVGltZSk7CisgICAgdm9pZCBk
dXJhdGlvbkNoYW5nZWQoTWVkaWFUaW1lKTsKKyAgICB2b2lkIHJhdGVDaGFuZ2VkKGRvdWJsZSk7
CisKKyNpZiAhUkVMRUFTRV9MT0dfRElTQUJMRUQKKyAgICBjb25zdCBMb2dnZXImIGxvZ2dlcigp
IGNvbnN0IGZpbmFsIHsgcmV0dXJuICptX2xvZ2dlcjsgfQorICAgIGNvbnN0IGNoYXIqIGxvZ0Ns
YXNzTmFtZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuICJNZWRpYVBsYXllclByaXZhdGVSZW1v
dGUiOyB9CisgICAgY29uc3Qgdm9pZCogbG9nSWRlbnRpZmllcigpIGNvbnN0IGZpbmFsIHsgcmV0
dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3Qgdm9pZCo+KG1fbG9nSWRlbnRpZmllcik7IH0KKyAg
ICBXVEZMb2dDaGFubmVsJiBsb2dDaGFubmVsKCkgY29uc3QgZmluYWw7CisjZW5kaWYKKworcHJp
dmF0ZToKKworICAgIHZvaWQgbG9hZChjb25zdCBTdHJpbmcmKSBmaW5hbDsKKyNpZiBFTkFCTEUo
TUVESUFfU09VUkNFKQorICAgIHZvaWQgbG9hZChjb25zdCBTdHJpbmcmLCBNZWRpYVNvdXJjZVBy
aXZhdGVDbGllbnQqKSBmaW5hbDsKKyNlbmRpZgorI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCisg
ICAgdm9pZCBsb2FkKE1lZGlhU3RyZWFtUHJpdmF0ZSYpIGZpbmFsOworI2VuZGlmCisgICAgdm9p
ZCBjYW5jZWxMb2FkKCkgZmluYWw7CisgICAgCisgICAgdm9pZCBwcmVwYXJlVG9QbGF5KCkgZmlu
YWw7CisgICAgUGxhdGZvcm1MYXllciogcGxhdGZvcm1MYXllcigpIGNvbnN0IGZpbmFsOworCisj
aWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkgfHwgKFBMQVRGT1JNKE1BQykgJiYgRU5BQkxFKFZJREVP
X1BSRVNFTlRBVElPTl9NT0RFKSkKKyAgICB2b2lkIHNldFZpZGVvRnVsbHNjcmVlbkxheWVyKFBs
YXRmb3JtTGF5ZXIqLCBXVEY6OkZ1bmN0aW9uPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikg
ZmluYWw7CisgICAgdm9pZCB1cGRhdGVWaWRlb0Z1bGxzY3JlZW5JbmxpbmVJbWFnZSgpIGZpbmFs
OworICAgIHZvaWQgc2V0VmlkZW9GdWxsc2NyZWVuRnJhbWUoRmxvYXRSZWN0KSBmaW5hbDsKKyAg
ICB2b2lkIHNldFZpZGVvRnVsbHNjcmVlbkdyYXZpdHkoTWVkaWFQbGF5ZXI6OlZpZGVvR3Jhdml0
eSkgZmluYWw7CisgICAgdm9pZCBzZXRWaWRlb0Z1bGxzY3JlZW5Nb2RlKE1lZGlhUGxheWVyOjpW
aWRlb0Z1bGxzY3JlZW5Nb2RlKSBmaW5hbDsKKyAgICB2b2lkIHZpZGVvRnVsbHNjcmVlblN0YW5k
YnlDaGFuZ2VkKCkgZmluYWw7CisjZW5kaWYKKworI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCisg
ICAgTlNBcnJheSAqdGltZWRNZXRhZGF0YSgpIGNvbnN0IGZpbmFsOworICAgIFN0cmluZyBhY2Nl
c3NMb2coKSBjb25zdCBmaW5hbDsKKyAgICBTdHJpbmcgZXJyb3JMb2coKSBjb25zdCBmaW5hbDsK
KyNlbmRpZgorICAgIGxvbmcgcGxhdGZvcm1FcnJvckNvZGUoKSBjb25zdCBmaW5hbDsKKworICAg
IHZvaWQgcGxheSgpIGZpbmFsOworICAgIHZvaWQgcGF1c2UoKSBmaW5hbDsKKyAgICB2b2lkIHNl
dEJ1ZmZlcmluZ1BvbGljeShNZWRpYVBsYXllcjo6QnVmZmVyaW5nUG9saWN5KSBmaW5hbDsKKwor
ICAgIGJvb2wgc3VwcG9ydHNQaWN0dXJlSW5QaWN0dXJlKCkgY29uc3QgZmluYWw7CisgICAgYm9v
bCBzdXBwb3J0c0Z1bGxzY3JlZW4oKSBjb25zdCBmaW5hbDsKKyAgICBib29sIHN1cHBvcnRzU2Nh
bm5pbmcoKSBjb25zdCBmaW5hbDsKKyAgICBib29sIHJlcXVpcmVzSW1tZWRpYXRlQ29tcG9zaXRp
bmcoKSBjb25zdCBmaW5hbDsKKworICAgIGJvb2wgY2FuU2F2ZU1lZGlhRGF0YSgpIGNvbnN0IGZp
bmFsOworCisgICAgRmxvYXRTaXplIG5hdHVyYWxTaXplKCkgY29uc3QgZmluYWw7CisKKyAgICBi
b29sIGhhc1ZpZGVvKCkgY29uc3QgZmluYWw7CisgICAgYm9vbCBoYXNBdWRpbygpIGNvbnN0IGZp
bmFsOworCisgICAgdm9pZCBzZXRWaXNpYmxlKGJvb2wpIGZpbmFsOworCisgICAgTWVkaWFUaW1l
IGR1cmF0aW9uTWVkaWFUaW1lKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9kdXJhdGlvbjsgfQor
ICAgIE1lZGlhVGltZSBjdXJyZW50TWVkaWFUaW1lKCkgY29uc3QgZmluYWw7CisKKyAgICBNZWRp
YVRpbWUgZ2V0U3RhcnREYXRlKCkgY29uc3QgZmluYWw7CisKKyAgICB2b2lkIHNlZWsoY29uc3Qg
TWVkaWFUaW1lJikgZmluYWw7CisgICAgdm9pZCBzZWVrV2l0aFRvbGVyYW5jZShjb25zdCBNZWRp
YVRpbWUmLCBjb25zdCBNZWRpYVRpbWUmLCBjb25zdCBNZWRpYVRpbWUmKSBmaW5hbDsKKworICAg
IGJvb2wgc2Vla2luZygpIGNvbnN0IGZpbmFsOworCisgICAgTWVkaWFUaW1lIHN0YXJ0VGltZSgp
IGNvbnN0IGZpbmFsOworCisgICAgdm9pZCBzZXRSYXRlRG91YmxlKGRvdWJsZSkgZmluYWw7Cisg
ICAgZG91YmxlIHJhdGUoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX3JhdGU7IH0KKworICAgIHZv
aWQgc2V0UHJlc2VydmVzUGl0Y2goYm9vbCkgZmluYWw7CisKKyAgICBib29sIHBhdXNlZCgpIGNv
bnN0IGZpbmFsOworCisgICAgdm9pZCBzZXRWb2x1bWVEb3VibGUoZG91YmxlKSBmaW5hbDsKKwor
I2lmIFBMQVRGT1JNKElPU19GQU1JTFkpIHx8IFVTRShHU1RSRUFNRVIpCisgICAgZmxvYXQgdm9s
dW1lKCkgY29uc3QgZmluYWwgeyByZXR1cm4gMTsgfQorI2VuZGlmCisKKyAgICB2b2lkIHNldE11
dGVkKGJvb2wpIGZpbmFsOworCisgICAgYm9vbCBoYXNDbG9zZWRDYXB0aW9ucygpIGNvbnN0IGZp
bmFsOworICAgIHZvaWQgc2V0Q2xvc2VkQ2FwdGlvbnNWaXNpYmxlKGJvb2wpIGZpbmFsOworCisg
ICAgZG91YmxlIG1heEZhc3RGb3J3YXJkUmF0ZSgpIGNvbnN0IGZpbmFsOworICAgIGRvdWJsZSBt
aW5GYXN0UmV2ZXJzZVJhdGUoKSBjb25zdCBmaW5hbDsKKworICAgIE1lZGlhUGxheWVyOjpOZXR3
b3JrU3RhdGUgbmV0d29ya1N0YXRlKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9uZXR3b3JrU3Rh
dGU7IH0KKyAgICBNZWRpYVBsYXllcjo6UmVhZHlTdGF0ZSByZWFkeVN0YXRlKCkgY29uc3QgZmlu
YWwgeyByZXR1cm4gbV9yZWFkeVN0YXRlOyB9CisKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8UGxhdGZv
cm1UaW1lUmFuZ2VzPiBzZWVrYWJsZSgpIGNvbnN0IGZpbmFsOworCisgICAgTWVkaWFUaW1lIG1h
eE1lZGlhVGltZVNlZWthYmxlKCkgY29uc3QgZmluYWw7CisgICAgTWVkaWFUaW1lIG1pbk1lZGlh
VGltZVNlZWthYmxlKCkgY29uc3QgZmluYWw7CisgICAgc3RkOjp1bmlxdWVfcHRyPFBsYXRmb3Jt
VGltZVJhbmdlcz4gYnVmZmVyZWQoKSBjb25zdCBmaW5hbDsKKyAgICBkb3VibGUgc2Vla2FibGVU
aW1lUmFuZ2VzTGFzdE1vZGlmaWVkVGltZSgpIGNvbnN0IGZpbmFsOworICAgIGRvdWJsZSBsaXZl
VXBkYXRlSW50ZXJ2YWwoKSBjb25zdCBmaW5hbDsKKworICAgIHVuc2lnbmVkIGxvbmcgbG9uZyB0
b3RhbEJ5dGVzKCkgY29uc3QgZmluYWw7CisgICAgYm9vbCBkaWRMb2FkaW5nUHJvZ3Jlc3MoKSBj
b25zdCBmaW5hbDsKKworICAgIHZvaWQgc2V0U2l6ZShjb25zdCBJbnRTaXplJikgZmluYWw7CisK
KyAgICB2b2lkIHBhaW50KEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYpIGZpbmFs
OworCisgICAgdm9pZCBwYWludEN1cnJlbnRGcmFtZUluQ29udGV4dChHcmFwaGljc0NvbnRleHQm
LCBjb25zdCBGbG9hdFJlY3QmKSBmaW5hbDsKKyAgICBib29sIGNvcHlWaWRlb1RleHR1cmVUb1Bs
YXRmb3JtVGV4dHVyZShHcmFwaGljc0NvbnRleHQzRCosIFBsYXRmb3JtM0RPYmplY3QsIEdDM0Rl
bnVtLCBHQzNEaW50LCBHQzNEZW51bSwgR0MzRGVudW0sIEdDM0RlbnVtLCBib29sLCBib29sKSBm
aW5hbDsKKyAgICBOYXRpdmVJbWFnZVB0ciBuYXRpdmVJbWFnZUZvckN1cnJlbnRUaW1lKCkgZmlu
YWw7CisKKyAgICB2b2lkIHNldFByZWxvYWQoTWVkaWFQbGF5ZXI6OlByZWxvYWQpIGZpbmFsOwor
CisgICAgYm9vbCBoYXNBdmFpbGFibGVWaWRlb0ZyYW1lKCkgY29uc3QgZmluYWw7CisKKyAgICBi
b29sIGNhbkxvYWRQb3N0ZXIoKSBjb25zdCBmaW5hbDsKKyAgICB2b2lkIHNldFBvc3Rlcihjb25z
dCBTdHJpbmcmKSBmaW5hbDsKKworI2lmIFVTRShOQVRJVkVfRlVMTFNDUkVFTl9WSURFTykKKyAg
ICB2b2lkIGVudGVyRnVsbHNjcmVlbigpIGZpbmFsOworICAgIHZvaWQgZXhpdEZ1bGxzY3JlZW4o
KSBmaW5hbDsKKyNlbmRpZgorCisjaWYgRU5BQkxFKFdJUkVMRVNTX1BMQVlCQUNLX1RBUkdFVCkK
KyAgICBTdHJpbmcgd2lyZWxlc3NQbGF5YmFja1RhcmdldE5hbWUoKSBjb25zdCBmaW5hbDsKKyAg
ICBNZWRpYVBsYXllcjo6V2lyZWxlc3NQbGF5YmFja1RhcmdldFR5cGUgd2lyZWxlc3NQbGF5YmFj
a1RhcmdldFR5cGUoKSBjb25zdCBmaW5hbDsKKworICAgIGJvb2wgd2lyZWxlc3NWaWRlb1BsYXli
YWNrRGlzYWJsZWQoKSBjb25zdCBmaW5hbDsKKyAgICB2b2lkIHNldFdpcmVsZXNzVmlkZW9QbGF5
YmFja0Rpc2FibGVkKGJvb2wpIGZpbmFsOworCisgICAgYm9vbCBjYW5QbGF5VG9XaXJlbGVzc1Bs
YXliYWNrVGFyZ2V0KCkgY29uc3QgZmluYWw7CisgICAgYm9vbCBpc0N1cnJlbnRQbGF5YmFja1Rh
cmdldFdpcmVsZXNzKCkgY29uc3QgZmluYWw7CisgICAgdm9pZCBzZXRXaXJlbGVzc1BsYXliYWNr
VGFyZ2V0KFJlZjxNZWRpYVBsYXliYWNrVGFyZ2V0PiYmKSBmaW5hbDsKKworICAgIHZvaWQgc2V0
U2hvdWxkUGxheVRvUGxheWJhY2tUYXJnZXQoYm9vbCkgZmluYWw7CisjZW5kaWYKKworI2lmIFVT
RShOQVRJVkVfRlVMTFNDUkVFTl9WSURFTykKKyAgICBib29sIGNhbkVudGVyRnVsbHNjcmVlbigp
IGNvbnN0IGZpbmFsOworI2VuZGlmCisKKyAgICBib29sIHN1cHBvcnRzQWNjZWxlcmF0ZWRSZW5k
ZXJpbmcoKSBjb25zdCBmaW5hbDsKKyAgICB2b2lkIGFjY2VsZXJhdGVkUmVuZGVyaW5nU3RhdGVD
aGFuZ2VkKCkgZmluYWw7CisKKyAgICBib29sIHNob3VsZE1haW50YWluQXNwZWN0UmF0aW8oKSBj
b25zdCBmaW5hbDsKKyAgICB2b2lkIHNldFNob3VsZE1haW50YWluQXNwZWN0UmF0aW8oYm9vbCkg
ZmluYWw7CisKKyAgICBib29sIGhhc1NpbmdsZVNlY3VyaXR5T3JpZ2luKCkgY29uc3QgZmluYWw7
CisgICAgYm9vbCBkaWRQYXNzQ09SU0FjY2Vzc0NoZWNrKCkgY29uc3QgZmluYWw7CisgICAgT3B0
aW9uYWw8Ym9vbD4gd291bGRUYWludE9yaWdpbihjb25zdCBTZWN1cml0eU9yaWdpbiYpIGNvbnN0
IGZpbmFsOworCisgICAgTWVkaWFQbGF5ZXI6Ok1vdmllTG9hZFR5cGUgbW92aWVMb2FkVHlwZSgp
IGNvbnN0IGZpbmFsOworCisgICAgdm9pZCBwcmVwYXJlRm9yUmVuZGVyaW5nKCkgZmluYWw7CisK
KyAgICBNZWRpYVRpbWUgbWVkaWFUaW1lRm9yVGltZVZhbHVlKGNvbnN0IE1lZGlhVGltZSYgdGlt
ZVZhbHVlKSBjb25zdCBmaW5hbDsKKworICAgIGRvdWJsZSBtYXhpbXVtRHVyYXRpb25Ub0NhY2hl
TWVkaWFUaW1lKCkgY29uc3QgZmluYWw7CisKKyAgICB1bnNpZ25lZCBkZWNvZGVkRnJhbWVDb3Vu
dCgpIGNvbnN0IGZpbmFsOworICAgIHVuc2lnbmVkIGRyb3BwZWRGcmFtZUNvdW50KCkgY29uc3Qg
ZmluYWw7CisgICAgdW5zaWduZWQgYXVkaW9EZWNvZGVkQnl0ZUNvdW50KCkgY29uc3QgZmluYWw7
CisgICAgdW5zaWduZWQgdmlkZW9EZWNvZGVkQnl0ZUNvdW50KCkgY29uc3QgZmluYWw7CisKKyAg
ICB2b2lkIHNldFByaXZhdGVCcm93c2luZ01vZGUoYm9vbCkgZmluYWw7CisgICAgU3RyaW5nIGVu
Z2luZURlc2NyaXB0aW9uKCkgY29uc3QgZmluYWw7CisKKyNpZiBFTkFCTEUoV0VCX0FVRElPKQor
ICAgIEF1ZGlvU291cmNlUHJvdmlkZXIqIGF1ZGlvU291cmNlUHJvdmlkZXIoKSBmaW5hbDsKKyNl
bmRpZgorCisjaWYgRU5BQkxFKExFR0FDWV9FTkNSWVBURURfTUVESUEpCisgICAgc3RkOjp1bmlx
dWVfcHRyPExlZ2FjeUNETVNlc3Npb24+IGNyZWF0ZVNlc3Npb24oY29uc3QgU3RyaW5nJiwgTGVn
YWN5Q0RNU2Vzc2lvbkNsaWVudCopIGZpbmFsOworICAgIHZvaWQgc2V0Q0RNU2Vzc2lvbihMZWdh
Y3lDRE1TZXNzaW9uKikgZmluYWw7CisgICAgdm9pZCBrZXlBZGRlZCgpIGZpbmFsOworI2VuZGlm
CisKKyNpZiBFTkFCTEUoRU5DUllQVEVEX01FRElBKQorICAgIHZvaWQgY2RtSW5zdGFuY2VBdHRh
Y2hlZChDRE1JbnN0YW5jZSYpIGZpbmFsOworICAgIHZvaWQgY2RtSW5zdGFuY2VEZXRhY2hlZChD
RE1JbnN0YW5jZSYpIGZpbmFsOworICAgIHZvaWQgYXR0ZW1wdFRvRGVjcnlwdFdpdGhJbnN0YW5j
ZShDRE1JbnN0YW5jZSYpIGZpbmFsOworICAgIGJvb2wgd2FpdGluZ0ZvcktleSgpIGNvbnN0IGZp
bmFsOworI2VuZGlmCisKKyNpZiBFTkFCTEUoVklERU9fVFJBQ0spCisgICAgYm9vbCByZXF1aXJl
c1RleHRUcmFja1JlcHJlc2VudGF0aW9uKCkgY29uc3QgZmluYWw7CisgICAgdm9pZCBzZXRUZXh0
VHJhY2tSZXByZXNlbnRhdGlvbihUZXh0VHJhY2tSZXByZXNlbnRhdGlvbiopIGZpbmFsOworICAg
IHZvaWQgc3luY1RleHRUcmFja0JvdW5kcygpIGZpbmFsOworICAgIHZvaWQgdHJhY2tzQ2hhbmdl
ZCgpIGZpbmFsOworI2VuZGlmCisKKyNpZiBVU0UoR1NUUkVBTUVSKQorICAgIHZvaWQgc2ltdWxh
dGVBdWRpb0ludGVycnVwdGlvbigpIGZpbmFsOworI2VuZGlmCisKKyAgICB2b2lkIGJlZ2luU2lt
dWxhdGVkSERDUEVycm9yKCkgZmluYWw7CisgICAgdm9pZCBlbmRTaW11bGF0ZWRIRENQRXJyb3Io
KSBmaW5hbDsKKworICAgIFN0cmluZyBsYW5ndWFnZU9mUHJpbWFyeUF1ZGlvVHJhY2soKSBjb25z
dCBmaW5hbDsKKworICAgIHNpemVfdCBleHRyYU1lbW9yeUNvc3QoKSBjb25zdCBmaW5hbDsKKwor
ICAgIHVuc2lnbmVkIGxvbmcgbG9uZyBmaWxlU2l6ZSgpIGNvbnN0IGZpbmFsOworCisgICAgYm9v
bCBlbmRlZCgpIGNvbnN0IGZpbmFsOworCisgICAgT3B0aW9uYWw8VmlkZW9QbGF5YmFja1F1YWxp
dHlNZXRyaWNzPiB2aWRlb1BsYXliYWNrUXVhbGl0eU1ldHJpY3MoKSBmaW5hbDsKKworI2lmIEVO
QUJMRShBVkZfQ0FQVElPTlMpCisgICAgdm9pZCBub3RpZnlUcmFja01vZGVDaGFuZ2VkKCkgZmlu
YWw7CisjZW5kaWYKKworICAgIHZvaWQgbm90aWZ5QWN0aXZlU291cmNlQnVmZmVyc0NoYW5nZWQo
KSBmaW5hbDsKKworICAgIHZvaWQgc2V0U2hvdWxkRGlzYWJsZVNsZWVwKGJvb2wpIGZpbmFsOwor
CisgICAgdm9pZCBhcHBsaWNhdGlvbldpbGxSZXNpZ25BY3RpdmUoKSBmaW5hbDsKKyAgICB2b2lk
IGFwcGxpY2F0aW9uRGlkQmVjb21lQWN0aXZlKCkgZmluYWw7CisKKyNpZiBVU0UoQVZGT1VOREFU
SU9OKQorICAgIEFWUGxheWVyICpvYmpDQVZGb3VuZGF0aW9uQVZQbGF5ZXIoKSBjb25zdCBmaW5h
bCB7IHJldHVybiBudWxscHRyOyB9CisjZW5kaWYKKworICAgIGJvb2wgcGVyZm9ybVRhc2tBdE1l
ZGlhVGltZShXVEY6OkZ1bmN0aW9uPHZvaWQoKT4mJiwgTWVkaWFUaW1lKSBmaW5hbDsKKworICAg
IGJvb2wgc2hvdWxkSWdub3JlSW50cmluc2ljU2l6ZSgpIGZpbmFsOworCisgICAgTWVkaWFQbGF5
ZXIqIG1fcGxheWVyIHsgbnVsbHB0ciB9OworICAgIFJlbW90ZU1lZGlhUGxheWVyTWFuYWdlciBt
X21hbmFnZXI7CisgICAgTWVkaWFQbGF5ZXJFbnVtczo6TWVkaWFFbmdpbmVJZGVudGlmaWVyIG1f
cmVtb3RlRW5naW5lSWRlbnRpZmllcjsKKyAgICBNZWRpYVBsYXllclByaXZhdGVSZW1vdGVJZGVu
dGlmaWVyIG1faWQ7CisKKyAgICBNZWRpYVBsYXllcjo6TmV0d29ya1N0YXRlIG1fbmV0d29ya1N0
YXRlIHsgTWVkaWFQbGF5ZXI6Ok5ldHdvcmtTdGF0ZTo6RW1wdHkgfTsKKyAgICBNZWRpYVBsYXll
cjo6UmVhZHlTdGF0ZSBtX3JlYWR5U3RhdGUgeyBNZWRpYVBsYXllcjo6UmVhZHlTdGF0ZTo6SGF2
ZU5vdGhpbmcgfTsKKyAgICBkb3VibGUgbV92b2x1bWUgeyAxIH07CisgICAgYm9vbCBtX211dGUg
eyBmYWxzZSB9OworICAgIE1lZGlhVGltZSBtX2R1cmF0aW9uOworICAgIGRvdWJsZSBtX3JhdGUg
eyAxIH07CisKKyNpZiAhUkVMRUFTRV9MT0dfRElTQUJMRUQKKyAgICBSZWZQdHI8Y29uc3QgTG9n
Z2VyPiBtX2xvZ2dlcjsKKyAgICBjb25zdCB2b2lkKiBtX2xvZ0lkZW50aWZpZXI7CisjZW5kaWYK
KworICAgIGJvb2wgbV9pbnZhbGlkIHsgZmFsc2UgfTsKK307CisKK30gLy8gbmFtZXNwYWNlIFdl
YktpdAorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUv
bWVkaWEvTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlSWRlbnRpZmllci5oIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9NZWRpYVBsYXllclByaXZhdGVSZW1vdGVJZGVudGlmaWVy
LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uODdlN2I4YmJhZWMzNTM0ZTdkZWZkNzgyMzg2MTAxNDMyMTc1MzhjNwot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvTWVk
aWFQbGF5ZXJQcml2YXRlUmVtb3RlSWRlbnRpZmllci5oCkBAIC0wLDAgKzEsMzUgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSAsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5E
IElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlIDx3dGYvT2JqZWN0SWRlbnRpZmllci5o
PgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworZW51bSBNZWRpYVBsYXllclByaXZhdGVSZW1vdGVJ
ZGVudGlmaWVyVHlwZSB7IH07Cit1c2luZyBNZWRpYVBsYXllclByaXZhdGVSZW1vdGVJZGVudGlm
aWVyID0gT2JqZWN0SWRlbnRpZmllcjxNZWRpYVBsYXllclByaXZhdGVSZW1vdGVJZGVudGlmaWVy
VHlwZT47CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyLmNwcCBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2Vy
LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi41ZTg1NDZjOTYzZDc0M2M4ZTczMmFkOTczMzA3NjcwYzcwY2FkNWFm
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9S
ZW1vdGVNZWRpYVBsYXllck1hbmFnZXIuY3BwCkBAIC0wLDAgKzEsMjUyIEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBD
T05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
KyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAq
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisg
KiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlJlbW90ZU1lZGlhUGxheWVyTWFuYWdl
ci5oIgorCisjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKQorCisjaW5jbHVkZSAiUmVtb3RlTWVkaWFQ
bGF5ZXJNYW5hZ2VyTWVzc2FnZXMuaCIKKyNpbmNsdWRlICJSZW1vdGVNZWRpYVBsYXllck1hbmFn
ZXJQcm94eU1lc3NhZ2VzLmgiCisjaW5jbHVkZSAiV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgiCisj
aW5jbHVkZSAiV2ViUHJvY2Vzcy5oIgorI2luY2x1ZGUgIldlYlByb2Nlc3NDcmVhdGlvblBhcmFt
ZXRlcnMuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL01lZGlhUGxheWVyLmg+CisjaW5jbHVkZSA8V2Vi
Q29yZS9Ob3RJbXBsZW1lbnRlZC5oPgorI2luY2x1ZGUgPFdlYkNvcmUvU2V0dGluZ3MuaD4KKyNp
bmNsdWRlIDx3dGYvQXNzZXJ0aW9ucy5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsKK3VzaW5nIG5h
bWVzcGFjZSBQQUw7Cit1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKKworY2xhc3MgTWVkaWFQbGF5
ZXJSZW1vdGVGYWN0b3J5IGZpbmFsIDogcHVibGljIE1lZGlhUGxheWVyRmFjdG9yeSB7CitwdWJs
aWM6CisgICAgTWVkaWFQbGF5ZXJSZW1vdGVGYWN0b3J5KE1lZGlhUGxheWVyRW51bXM6Ok1lZGlh
RW5naW5lSWRlbnRpZmllciByZW1vdGVFbmdpbmVJZGVudGlmaWVyLCBSZW1vdGVNZWRpYVBsYXll
ck1hbmFnZXImIG1hbmFnZXIpCisgICAgICAgIDogbV9yZW1vdGVFbmdpbmVJZGVudGlmaWVyKHJl
bW90ZUVuZ2luZUlkZW50aWZpZXIpCisgICAgICAgICwgbV9tYW5hZ2VyKG1hbmFnZXIpCisgICAg
eworICAgIH0KKworICAgIE1lZGlhUGxheWVyRW51bXM6Ok1lZGlhRW5naW5lSWRlbnRpZmllciBp
ZGVudGlmaWVyKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9yZW1vdGVFbmdpbmVJZGVudGlmaWVy
OyB9OworCisgICAgc3RkOjp1bmlxdWVfcHRyPE1lZGlhUGxheWVyUHJpdmF0ZUludGVyZmFjZT4g
Y3JlYXRlTWVkaWFFbmdpbmVQbGF5ZXIoTWVkaWFQbGF5ZXIqIHBsYXllcikgY29uc3QgZmluYWwK
KyAgICB7CisgICAgICAgIHJldHVybiBtX21hbmFnZXIuY3JlYXRlUmVtb3RlTWVkaWFQbGF5ZXIo
cGxheWVyLCBtX3JlbW90ZUVuZ2luZUlkZW50aWZpZXIpOworICAgIH0KKworICAgIHZvaWQgZ2V0
U3VwcG9ydGVkVHlwZXMoSGFzaFNldDxTdHJpbmcsIEFTQ0lJQ2FzZUluc2Vuc2l0aXZlSGFzaD4m
IHR5cGVzKSBjb25zdCBmaW5hbAorICAgIHsKKyAgICAgICAgcmV0dXJuIG1fbWFuYWdlci5nZXRT
dXBwb3J0ZWRUeXBlcyhtX3JlbW90ZUVuZ2luZUlkZW50aWZpZXIsIHR5cGVzKTsKKyAgICB9CisK
KyAgICBNZWRpYVBsYXllcjo6U3VwcG9ydHNUeXBlIHN1cHBvcnRzVHlwZUFuZENvZGVjcyhjb25z
dCBNZWRpYUVuZ2luZVN1cHBvcnRQYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzKSBjb25zdCBmaW5hbAor
ICAgIHsKKyAgICAgICAgcmV0dXJuIG1fbWFuYWdlci5zdXBwb3J0c1R5cGVBbmRDb2RlY3MobV9y
ZW1vdGVFbmdpbmVJZGVudGlmaWVyLCBwYXJhbWV0ZXJzKTsKKyAgICB9CisKKyAgICBIYXNoU2V0
PFJlZlB0cjxTZWN1cml0eU9yaWdpbj4+IG9yaWdpbnNJbk1lZGlhQ2FjaGUoY29uc3QgU3RyaW5n
JiBwYXRoKSBjb25zdCBmaW5hbAorICAgIHsKKyAgICAgICAgcmV0dXJuIG1fbWFuYWdlci5vcmln
aW5zSW5NZWRpYUNhY2hlKG1fcmVtb3RlRW5naW5lSWRlbnRpZmllciwgcGF0aCk7CisgICAgfQor
CisgICAgdm9pZCBjbGVhck1lZGlhQ2FjaGUoY29uc3QgU3RyaW5nJiBwYXRoLCBXYWxsVGltZSBt
b2RpZmllZFNpbmNlKSBjb25zdCBmaW5hbAorICAgIHsKKyAgICAgICAgcmV0dXJuIG1fbWFuYWdl
ci5jbGVhck1lZGlhQ2FjaGUobV9yZW1vdGVFbmdpbmVJZGVudGlmaWVyLCBwYXRoLCBtb2RpZmll
ZFNpbmNlKTsKKyAgICB9CisKKyAgICB2b2lkIGNsZWFyTWVkaWFDYWNoZUZvck9yaWdpbnMoY29u
c3QgU3RyaW5nJiBwYXRoLCBjb25zdCBIYXNoU2V0PFJlZlB0cjxTZWN1cml0eU9yaWdpbj4+JiBv
cmlnaW5zKSBjb25zdCBmaW5hbAorICAgIHsKKyAgICAgICAgcmV0dXJuIG1fbWFuYWdlci5jbGVh
ck1lZGlhQ2FjaGVGb3JPcmlnaW5zKG1fcmVtb3RlRW5naW5lSWRlbnRpZmllciwgcGF0aCwgb3Jp
Z2lucyk7CisgICAgfQorCisgICAgYm9vbCBzdXBwb3J0c0tleVN5c3RlbShjb25zdCBTdHJpbmcm
IGtleVN5c3RlbSwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSkgY29uc3QgZmluYWwKKyAgICB7Cisg
ICAgICAgIHJldHVybiBtX21hbmFnZXIuc3VwcG9ydHNLZXlTeXN0ZW0obV9yZW1vdGVFbmdpbmVJ
ZGVudGlmaWVyLCBrZXlTeXN0ZW0sIG1pbWVUeXBlKTsKKyAgICB9CisKK3ByaXZhdGU6CisgICAg
TWVkaWFQbGF5ZXJFbnVtczo6TWVkaWFFbmdpbmVJZGVudGlmaWVyIG1fcmVtb3RlRW5naW5lSWRl
bnRpZmllcjsKKyAgICBSZW1vdGVNZWRpYVBsYXllck1hbmFnZXImIG1fbWFuYWdlcjsKK307CisK
K1JlbW90ZU1lZGlhUGxheWVyTWFuYWdlcjo6UmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyKFdlYlBy
b2Nlc3MmIHByb2Nlc3MpCisgICAgOiBtX3Byb2Nlc3MocHJvY2VzcykKK3sKKyAgICBtX3Byb2Nl
c3MuYWRkTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpSZW1vdGVNZWRpYVBsYXllck1hbmFnZXI6
Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgKnRoaXMpOworfQorCitSZW1vdGVNZWRpYVBsYXllck1h
bmFnZXI6On5SZW1vdGVNZWRpYVBsYXllck1hbmFnZXIoKQoreworICAgIG1fcHJvY2Vzcy5yZW1v
dmVNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OlJlbW90ZU1lZGlhUGxheWVyTWFuYWdlcjo6bWVz
c2FnZVJlY2VpdmVyTmFtZSgpKTsKK30KKworY29uc3QgY2hhciogUmVtb3RlTWVkaWFQbGF5ZXJN
YW5hZ2VyOjpzdXBwbGVtZW50TmFtZSgpCit7CisgICAgcmV0dXJuICJSZW1vdGVNZWRpYVBsYXll
ck1hbmFnZXIiOworfQorCit2b2lkIFJlbW90ZU1lZGlhUGxheWVyTWFuYWdlcjo6aW5pdGlhbGl6
ZShjb25zdCBXZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzJikKK3sKKy8vIEZJWE1FOiBVc2Ug
cGFyYW1ldGVycy5tZWRpYU1JTUVUeXBlcy4KK30KKworc3RkOjp1bmlxdWVfcHRyPE1lZGlhUGxh
eWVyUHJpdmF0ZUludGVyZmFjZT4gUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyOjpjcmVhdGVSZW1v
dGVNZWRpYVBsYXllcihNZWRpYVBsYXllciogcGxheWVyLCBNZWRpYVBsYXllckVudW1zOjpNZWRp
YUVuZ2luZUlkZW50aWZpZXIgcmVtb3RlRW5naW5lSWRlbnRpZmllcikKK3sKKyAgICBhdXRvIGlk
ID0gTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlSWRlbnRpZmllcjo6Z2VuZXJhdGUoKTsKKworICAg
IGJvb2wgaGF2ZVJlbW90ZVByb3h5OworICAgIGJvb2wgc2VuZFN1Y2NlZWRlZCA9IGdwdVByb2Nl
c3NDb25uZWN0aW9uKCkuc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZU1lZGlhUGxheWVyTWFuYWdl
clByb3h5OjpDcmVhdGVNZWRpYVBsYXllcihpZCwgcmVtb3RlRW5naW5lSWRlbnRpZmllciksIE1l
c3NhZ2VzOjpSZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eTo6Q3JlYXRlTWVkaWFQbGF5ZXI6
OlJlcGx5KGhhdmVSZW1vdGVQcm94eSksIDApOworICAgIGlmICghaGF2ZVJlbW90ZVByb3h5IHx8
ICFzZW5kU3VjY2VlZGVkKSB7CisgICAgICAgIFdURkxvZ0Fsd2F5cygiRmFpbGVkIHRvIGNyZWF0
ZSByZW1vdGUgbWVkaWEgcGxheWVyLiIpOworICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICB9
CisKKyAgICBhdXRvIHJlbW90ZVBsYXllciA9IE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6Y3Jl
YXRlKHBsYXllciwgcmVtb3RlRW5naW5lSWRlbnRpZmllciwgaWQsICp0aGlzKTsKKyAgICBtX3Bs
YXllcnMuYWRkKGlkLCBtYWtlV2Vha1B0cigqcmVtb3RlUGxheWVyKSk7CisgICAgcmV0dXJuIHJl
bW90ZVBsYXllcjsKK30KKwordm9pZCBSZW1vdGVNZWRpYVBsYXllck1hbmFnZXI6OmRlbGV0ZVJl
bW90ZU1lZGlhUGxheWVyKE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZUlkZW50aWZpZXIgaWQpCit7
CisgICAgbV9wbGF5ZXJzLnRha2UoaWQpOworICAgIGdwdVByb2Nlc3NDb25uZWN0aW9uKCkuc2Vu
ZChNZXNzYWdlczo6UmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHk6OkRlbGV0ZU1lZGlhUGxh
eWVyKGlkKSwgMCk7Cit9CisKK3ZvaWQgUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyOjpnZXRTdXBw
b3J0ZWRUeXBlcyhNZWRpYVBsYXllckVudW1zOjpNZWRpYUVuZ2luZUlkZW50aWZpZXIgcmVtb3Rl
RW5naW5lSWRlbnRpZmllciwgSGFzaFNldDxTdHJpbmcsIEFTQ0lJQ2FzZUluc2Vuc2l0aXZlSGFz
aD4mIHJlc3VsdCkKK3sKKyAgICAvLyBGSVhNRTogc3VwcG9ydGVkIHR5cGVzIGRvbid0IGNoYW5n
ZSwgY2FjaGUgdGhlbS4KKworICAgIFZlY3RvcjxTdHJpbmc+IHR5cGVzOworICAgIGlmICghZ3B1
UHJvY2Vzc0Nvbm5lY3Rpb24oKS5zZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlTWVkaWFQbGF5ZXJN
YW5hZ2VyUHJveHk6OkdldFN1cHBvcnRlZFR5cGVzKHJlbW90ZUVuZ2luZUlkZW50aWZpZXIpLCBN
ZXNzYWdlczo6UmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHk6OkdldFN1cHBvcnRlZFR5cGVz
OjpSZXBseSh0eXBlcyksIDApKQorICAgICAgICByZXR1cm47CisKKyAgICByZXN1bHQgPSBIYXNo
U2V0PFN0cmluZywgQVNDSUlDYXNlSW5zZW5zaXRpdmVIYXNoPigpOworICAgIGZvciAoYXV0byYg
dHlwZSA6IHR5cGVzKQorICAgICAgICByZXN1bHQuYWRkKHR5cGUpOworfQorCitNZWRpYVBsYXll
cjo6U3VwcG9ydHNUeXBlIFJlbW90ZU1lZGlhUGxheWVyTWFuYWdlcjo6c3VwcG9ydHNUeXBlQW5k
Q29kZWNzKE1lZGlhUGxheWVyRW51bXM6Ok1lZGlhRW5naW5lSWRlbnRpZmllciByZW1vdGVFbmdp
bmVJZGVudGlmaWVyLCBjb25zdCBXZWJDb3JlOjpNZWRpYUVuZ2luZVN1cHBvcnRQYXJhbWV0ZXJz
JiBwYXJhbWV0ZXJzKQoreworICAgIC8vIEZJWE1FOiBzdXBwb3J0ZWQgdHlwZXMgZG9uJ3QgY2hh
bmdlLCBjYWNoZSB0aGVtLgorCisgICAgTWVkaWFQbGF5ZXI6OlN1cHBvcnRzVHlwZSByZXN1bHQ7
CisgICAgaWYgKCFncHVQcm9jZXNzQ29ubmVjdGlvbigpLnNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1v
dGVNZWRpYVBsYXllck1hbmFnZXJQcm94eTo6U3VwcG9ydHNUeXBlKHJlbW90ZUVuZ2luZUlkZW50
aWZpZXIsIHBhcmFtZXRlcnMpLCBNZXNzYWdlczo6UmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJv
eHk6OlN1cHBvcnRzVHlwZTo6UmVwbHkocmVzdWx0KSwgMCkpCisgICAgICAgIHJldHVybiBNZWRp
YVBsYXllcjo6U3VwcG9ydHNUeXBlOjpJc05vdFN1cHBvcnRlZDsKKworICAgIHJldHVybiByZXN1
bHQ7Cit9CisKK2Jvb2wgUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyOjpzdXBwb3J0c0tleVN5c3Rl
bShNZWRpYVBsYXllckVudW1zOjpNZWRpYUVuZ2luZUlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYg
a2V5U3lzdGVtLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlKQoreworICAgIHJldHVybiBmYWxzZTsK
K30KKworSGFzaFNldDxSZWZQdHI8V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4+PiBSZW1vdGVNZWRp
YVBsYXllck1hbmFnZXI6Om9yaWdpbnNJbk1lZGlhQ2FjaGUoTWVkaWFQbGF5ZXJFbnVtczo6TWVk
aWFFbmdpbmVJZGVudGlmaWVyIHJlbW90ZUVuZ2luZUlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYg
cGF0aCkKK3sKKyAgICBWZWN0b3I8V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhPiBvcmlnaW5E
YXRhOworICAgIGlmICghZ3B1UHJvY2Vzc0Nvbm5lY3Rpb24oKS5zZW5kU3luYyhNZXNzYWdlczo6
UmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHk6Ok9yaWdpbnNJbk1lZGlhQ2FjaGUocmVtb3Rl
RW5naW5lSWRlbnRpZmllciwgcGF0aCksIE1lc3NhZ2VzOjpSZW1vdGVNZWRpYVBsYXllck1hbmFn
ZXJQcm94eTo6T3JpZ2luc0luTWVkaWFDYWNoZTo6UmVwbHkob3JpZ2luRGF0YSksIDApKQorICAg
ICAgICByZXR1cm4geyB9OworCisgICAgSGFzaFNldDxSZWZQdHI8U2VjdXJpdHlPcmlnaW4+PiBv
cmlnaW5zOworICAgIGZvciAoYXV0byYgZGF0YSA6IG9yaWdpbkRhdGEpCisgICAgICAgIG9yaWdp
bnMuYWRkKGRhdGEuc2VjdXJpdHlPcmlnaW4oKSk7CisKKyAgICByZXR1cm4gb3JpZ2luczsKK30K
Kwordm9pZCBSZW1vdGVNZWRpYVBsYXllck1hbmFnZXI6OmNsZWFyTWVkaWFDYWNoZShNZWRpYVBs
YXllckVudW1zOjpNZWRpYUVuZ2luZUlkZW50aWZpZXIgcmVtb3RlRW5naW5lSWRlbnRpZmllciwg
Y29uc3QgU3RyaW5nJiBwYXRoLCBXYWxsVGltZSBtb2RpZmllZFNpbmNlKQoreworICAgIGdwdVBy
b2Nlc3NDb25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6UmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2Vy
UHJveHk6OkNsZWFyTWVkaWFDYWNoZShyZW1vdGVFbmdpbmVJZGVudGlmaWVyLCBwYXRoLCBtb2Rp
ZmllZFNpbmNlKSwgMCk7Cit9CisKK3ZvaWQgUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyOjpjbGVh
ck1lZGlhQ2FjaGVGb3JPcmlnaW5zKE1lZGlhUGxheWVyRW51bXM6Ok1lZGlhRW5naW5lSWRlbnRp
ZmllciByZW1vdGVFbmdpbmVJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIHBhdGgsIGNvbnN0IEhh
c2hTZXQ8UmVmUHRyPFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luPj4mIG9yaWdpbnMpCit7CisgICAg
YXV0byBvcmlnaW5EYXRhID0gV1RGOjptYXAob3JpZ2lucywgW10gKGF1dG8mIG9yaWdpbikgewor
ICAgICAgICByZXR1cm4gb3JpZ2luLT5kYXRhKCk7CisgICAgfSk7CisKKyAgICBncHVQcm9jZXNz
Q29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6OlJlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5
OjpDbGVhck1lZGlhQ2FjaGVGb3JPcmlnaW5zKHJlbW90ZUVuZ2luZUlkZW50aWZpZXIsIHBhdGgs
IG9yaWdpbkRhdGEpLCAwKTsKK30KKwordm9pZCBSZW1vdGVNZWRpYVBsYXllck1hbmFnZXI6Om5l
dHdvcmtTdGF0ZUNoYW5nZWQoTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlSWRlbnRpZmllciBpZCwg
TWVkaWFQbGF5ZXJFbnVtczo6TmV0d29ya1N0YXRlIHN0YXRlKQoreworICAgIGlmIChhdXRvIHBs
YXllciA9IG1fcGxheWVycy5nZXQoaWQpKQorICAgICAgICBwbGF5ZXItPm5ldHdvcmtTdGF0ZUNo
YW5nZWQoc3RhdGUpOworfQorCit2b2lkIFJlbW90ZU1lZGlhUGxheWVyTWFuYWdlcjo6cmVhZHlT
dGF0ZUNoYW5nZWQoTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlSWRlbnRpZmllciBpZCwgTWVkaWFQ
bGF5ZXJFbnVtczo6UmVhZHlTdGF0ZSBzdGF0ZSkKK3sKKyAgICBpZiAoYXV0byBwbGF5ZXIgPSBt
X3BsYXllcnMuZ2V0KGlkKSkKKyAgICAgICAgcGxheWVyLT5yZWFkeVN0YXRlQ2hhbmdlZChzdGF0
ZSk7Cit9CisKK3ZvaWQgUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyOjp2b2x1bWVDaGFuZ2VkKFdl
YktpdDo6TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlSWRlbnRpZmllciBpZCwgZG91YmxlIHZvbHVt
ZSkKK3sKKyAgICBpZiAoYXV0byBwbGF5ZXIgPSBtX3BsYXllcnMuZ2V0KGlkKSkKKyAgICAgICAg
cGxheWVyLT52b2x1bWVDaGFuZ2VkKHZvbHVtZSk7Cit9CisKK3ZvaWQgUmVtb3RlTWVkaWFQbGF5
ZXJNYW5hZ2VyOjptdXRlQ2hhbmdlZChXZWJLaXQ6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZUlk
ZW50aWZpZXIgaWQsIGJvb2wgbXV0ZSkKK3sKKyAgICBpZiAoYXV0byBwbGF5ZXIgPSBtX3BsYXll
cnMuZ2V0KGlkKSkKKyAgICAgICAgcGxheWVyLT5tdXRlQ2hhbmdlZChtdXRlKTsKK30KKwordm9p
ZCBSZW1vdGVNZWRpYVBsYXllck1hbmFnZXI6OnRpbWVDaGFuZ2VkKFdlYktpdDo6TWVkaWFQbGF5
ZXJQcml2YXRlUmVtb3RlSWRlbnRpZmllciBpZCwgTWVkaWFUaW1lJiYgdGltZSkKK3sKKyAgICBp
ZiAoYXV0byBwbGF5ZXIgPSBtX3BsYXllcnMuZ2V0KGlkKSkKKyAgICAgICAgcGxheWVyLT50aW1l
Q2hhbmdlZChXVEZNb3ZlKHRpbWUpKTsKK30KKwordm9pZCBSZW1vdGVNZWRpYVBsYXllck1hbmFn
ZXI6OmR1cmF0aW9uQ2hhbmdlZChXZWJLaXQ6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZUlkZW50
aWZpZXIgaWQsIE1lZGlhVGltZSYmIHRpbWUpCit7CisgICAgaWYgKGF1dG8gcGxheWVyID0gbV9w
bGF5ZXJzLmdldChpZCkpCisgICAgICAgIHBsYXllci0+ZHVyYXRpb25DaGFuZ2VkKFdURk1vdmUo
dGltZSkpOworfQorCit2b2lkIFJlbW90ZU1lZGlhUGxheWVyTWFuYWdlcjo6cmF0ZUNoYW5nZWQo
V2ViS2l0OjpNZWRpYVBsYXllclByaXZhdGVSZW1vdGVJZGVudGlmaWVyIGlkLCBkb3VibGUgcmF0
ZSkKK3sKKyAgICBpZiAoYXV0byBwbGF5ZXIgPSBtX3BsYXllcnMuZ2V0KGlkKSkKKyAgICAgICAg
cGxheWVyLT5yYXRlQ2hhbmdlZChyYXRlKTsKK30KKwordm9pZCBSZW1vdGVNZWRpYVBsYXllck1h
bmFnZXI6OnVwZGF0ZVByZWZlcmVuY2VzKGNvbnN0IFNldHRpbmdzJiBzZXR0aW5ncykKK3sKKyAg
ICBhdXRvIHJlZ2lzdGVyRW5naW5lID0gW3RoaXNdKE1lZGlhRW5naW5lUmVnaXN0cmFyIHJlZ2lz
dHJhciwgTWVkaWFQbGF5ZXJFbnVtczo6TWVkaWFFbmdpbmVJZGVudGlmaWVyIHJlbW90ZUVuZ2lu
ZUlkZW50aWZpZXIpIHsKKyAgICAgICAgcmVnaXN0cmFyKG1ha2VVbmlxdWU8TWVkaWFQbGF5ZXJS
ZW1vdGVGYWN0b3J5PihyZW1vdGVFbmdpbmVJZGVudGlmaWVyLCAqdGhpcykpOworICAgIH07CisK
KyAgICBSZW1vdGVNZWRpYVBsYXllclN1cHBvcnQ6OnNldFJlZ2lzdGVyUmVtb3RlUGxheWVyQ2Fs
bGJhY2soc2V0dGluZ3MudXNlR1BVUHJvY2Vzc0Zvck1lZGlhKCkgPyBXVEZNb3ZlKHJlZ2lzdGVy
RW5naW5lKSA6IFJlbW90ZU1lZGlhUGxheWVyU3VwcG9ydDo6UmVnaXN0ZXJSZW1vdGVQbGF5ZXJD
YWxsYmFjaygpKTsKK30KKworSVBDOjpDb25uZWN0aW9uJiBSZW1vdGVNZWRpYVBsYXllck1hbmFn
ZXI6OmdwdVByb2Nlc3NDb25uZWN0aW9uKCkgY29uc3QKK3sKKyAgICByZXR1cm4gV2ViUHJvY2Vz
czo6c2luZ2xldG9uKCkuZW5zdXJlR1BVUHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9uKCk7
Cit9CisKK30KKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
R1BVL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyTWFuYWdlci5oIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVNZWRpYVBsYXllck1hbmFnZXIuaApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4w
N2I1YjNlYzQwOTJlYTlmMWViMjgxZjMxMzc0ZTcyN2UyMjY0NDFhCi0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVNZWRpYVBsYXllck1h
bmFnZXIuaApAQCAtMCwwICsxLDkzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycn
CisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwor
ICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICog
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNp
ZiBFTkFCTEUoR1BVX1BST0NFU1MpCisKKyNpbmNsdWRlICJNZWRpYVBsYXllclByaXZhdGVSZW1v
dGVJZGVudGlmaWVyLmgiCisjaW5jbHVkZSAiTWVzc2FnZVJlY2VpdmVyLmgiCisjaW5jbHVkZSAi
U2hhcmVkTWVtb3J5LmgiCisjaW5jbHVkZSAiV2ViUHJvY2Vzc1N1cHBsZW1lbnQuaCIKKyNpbmNs
dWRlIDxXZWJDb3JlL01lZGlhUGxheWVyLmg+CisjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KKwor
bmFtZXNwYWNlIFdlYkNvcmUgeworY2xhc3MgTWVkaWFQbGF5ZXJQcml2YXRlSW50ZXJmYWNlOwor
Y2xhc3MgU2V0dGluZ3M7Cit9CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBNZWRpYVBs
YXllclByaXZhdGVSZW1vdGU7CitjbGFzcyBXZWJQcm9jZXNzOworCitjbGFzcyBSZW1vdGVNZWRp
YVBsYXllck1hbmFnZXIgOiBwdWJsaWMgV2ViUHJvY2Vzc1N1cHBsZW1lbnQsIHB1YmxpYyBJUEM6
Ok1lc3NhZ2VSZWNlaXZlciB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CitwdWJsaWM6
CisgICAgZXhwbGljaXQgUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyKFdlYlByb2Nlc3MmKTsKKyAg
ICB+UmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyKCk7CisKKyAgICBzdGF0aWMgY29uc3QgY2hhciog
c3VwcGxlbWVudE5hbWUoKTsKKworICAgIHZvaWQgdXBkYXRlUHJlZmVyZW5jZXMoY29uc3QgV2Vi
Q29yZTo6U2V0dGluZ3MmKTsKKworICAgIElQQzo6Q29ubmVjdGlvbiYgZ3B1UHJvY2Vzc0Nvbm5l
Y3Rpb24oKSBjb25zdDsKKworICAgIHZvaWQgZGVsZXRlUmVtb3RlTWVkaWFQbGF5ZXIoTWVkaWFQ
bGF5ZXJQcml2YXRlUmVtb3RlSWRlbnRpZmllcik7CisKK3ByaXZhdGU6CisgICAgc3RkOjp1bmlx
dWVfcHRyPFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUludGVyZmFjZT4gY3JlYXRlUmVtb3Rl
TWVkaWFQbGF5ZXIoV2ViQ29yZTo6TWVkaWFQbGF5ZXIqLCBXZWJDb3JlOjpNZWRpYVBsYXllckVu
dW1zOjpNZWRpYUVuZ2luZUlkZW50aWZpZXIpOworCisgICAgLy8gV2ViUHJvY2Vzc1N1cHBsZW1l
bnQKKyAgICB2b2lkIGluaXRpYWxpemUoY29uc3QgV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVy
cyYpIGZpbmFsOworCisgICAgLy8gSVBDOjpNZXNzYWdlUmVjZWl2ZXIKKyAgICB2b2lkIGRpZFJl
Y2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYpIGZpbmFsOworCisg
ICAgLy8gTWVzc2FnZXM6OlJlbW90ZU1lZGlhUGxheWVyTWFuYWdlcgorICAgIHZvaWQgbmV0d29y
a1N0YXRlQ2hhbmdlZChNZWRpYVBsYXllclByaXZhdGVSZW1vdGVJZGVudGlmaWVyLCBXZWJDb3Jl
OjpNZWRpYVBsYXllcjo6TmV0d29ya1N0YXRlKTsKKyAgICB2b2lkIHJlYWR5U3RhdGVDaGFuZ2Vk
KE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZUlkZW50aWZpZXIsIFdlYkNvcmU6Ok1lZGlhUGxheWVy
OjpSZWFkeVN0YXRlKTsKKyAgICB2b2lkIHZvbHVtZUNoYW5nZWQoV2ViS2l0OjpNZWRpYVBsYXll
clByaXZhdGVSZW1vdGVJZGVudGlmaWVyLCBkb3VibGUpOworICAgIHZvaWQgbXV0ZUNoYW5nZWQo
V2ViS2l0OjpNZWRpYVBsYXllclByaXZhdGVSZW1vdGVJZGVudGlmaWVyLCBib29sKTsKKyAgICB2
b2lkIHRpbWVDaGFuZ2VkKFdlYktpdDo6TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlSWRlbnRpZmll
ciwgTWVkaWFUaW1lJiYpOworICAgIHZvaWQgZHVyYXRpb25DaGFuZ2VkKFdlYktpdDo6TWVkaWFQ
bGF5ZXJQcml2YXRlUmVtb3RlSWRlbnRpZmllciwgTWVkaWFUaW1lJiYpOworICAgIHZvaWQgcmF0
ZUNoYW5nZWQoV2ViS2l0OjpNZWRpYVBsYXllclByaXZhdGVSZW1vdGVJZGVudGlmaWVyLCBkb3Vi
bGUpOworCisgICAgZnJpZW5kIGNsYXNzIE1lZGlhUGxheWVyUmVtb3RlRmFjdG9yeTsKKyAgICB2
b2lkIGdldFN1cHBvcnRlZFR5cGVzKFdlYkNvcmU6Ok1lZGlhUGxheWVyRW51bXM6Ok1lZGlhRW5n
aW5lSWRlbnRpZmllciwgSGFzaFNldDxTdHJpbmcsIEFTQ0lJQ2FzZUluc2Vuc2l0aXZlSGFzaD4m
KTsKKyAgICBXZWJDb3JlOjpNZWRpYVBsYXllcjo6U3VwcG9ydHNUeXBlIHN1cHBvcnRzVHlwZUFu
ZENvZGVjcyhXZWJDb3JlOjpNZWRpYVBsYXllckVudW1zOjpNZWRpYUVuZ2luZUlkZW50aWZpZXIs
IGNvbnN0IFdlYkNvcmU6Ok1lZGlhRW5naW5lU3VwcG9ydFBhcmFtZXRlcnMmKTsKKyAgICBib29s
IHN1cHBvcnRzS2V5U3lzdGVtKFdlYkNvcmU6Ok1lZGlhUGxheWVyRW51bXM6Ok1lZGlhRW5naW5l
SWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBrZXlTeXN0ZW0sIGNvbnN0IFN0cmluZyYgbWltZVR5
cGUpOworICAgIEhhc2hTZXQ8UmVmUHRyPFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luPj4gb3JpZ2lu
c0luTWVkaWFDYWNoZShXZWJDb3JlOjpNZWRpYVBsYXllckVudW1zOjpNZWRpYUVuZ2luZUlkZW50
aWZpZXIsIGNvbnN0IFN0cmluZyYpOworICAgIHZvaWQgY2xlYXJNZWRpYUNhY2hlKFdlYkNvcmU6
Ok1lZGlhUGxheWVyRW51bXM6Ok1lZGlhRW5naW5lSWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiwg
V2FsbFRpbWUgbW9kaWZpZWRTaW5jZSk7CisgICAgdm9pZCBjbGVhck1lZGlhQ2FjaGVGb3JPcmln
aW5zKFdlYkNvcmU6Ok1lZGlhUGxheWVyRW51bXM6Ok1lZGlhRW5naW5lSWRlbnRpZmllciwgY29u
c3QgU3RyaW5nJiwgY29uc3QgSGFzaFNldDxSZWZQdHI8V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4+
PiYpOworCisgICAgSGFzaE1hcDxNZWRpYVBsYXllclByaXZhdGVSZW1vdGVJZGVudGlmaWVyLCBX
ZWFrUHRyPE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZT4+IG1fcGxheWVyczsKKyAgICBXZWJQcm9j
ZXNzJiBtX3Byb2Nlc3M7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZU1lZGlh
UGxheWVyTWFuYWdlci5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUv
bWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyLm1lc3NhZ2VzLmluCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmZh
NzE2Mjc1YTU0MWQzMjdiNjQ5Yzc1ZThkNTQ5NjBmYzc5OWU0NTYKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyTWFu
YWdlci5tZXNzYWdlcy5pbgpAQCAtMCwwICsxLDM3IEBACisjIENvcHlyaWdodCAoQykgMjAxOSBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyMgYXJlIG1ldDoKKyMgMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorIyAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisjICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyMgQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisjIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyMgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisjIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IKKyMgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YKKyMgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisjIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
CisjIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpCisjIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyMgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorCisjaWYgRU5BQkxFKFZJREVPKQorCittZXNzYWdlcyAtPiBSZW1vdGVN
ZWRpYVBsYXllck1hbmFnZXIgTm90UmVmQ291bnRlZCB7CisKKyAgICBOZXR3b3JrU3RhdGVDaGFu
Z2VkKFdlYktpdDo6TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlSWRlbnRpZmllciBpZCwgZW51bTp1
aW50OF90IFdlYkNvcmU6Ok1lZGlhUGxheWVyRW51bXM6Ok5ldHdvcmtTdGF0ZSBzdGF0ZSkKKyAg
ICBSZWFkeVN0YXRlQ2hhbmdlZChXZWJLaXQ6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZUlkZW50
aWZpZXIgaWQsIGVudW06dWludDhfdCBXZWJDb3JlOjpNZWRpYVBsYXllckVudW1zOjpSZWFkeVN0
YXRlIHN0YXRlKQorICAgIFZvbHVtZUNoYW5nZWQoV2ViS2l0OjpNZWRpYVBsYXllclByaXZhdGVS
ZW1vdGVJZGVudGlmaWVyIGlkLCBkb3VibGUgdm9sdW1lKQorICAgIE11dGVDaGFuZ2VkKFdlYktp
dDo6TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlSWRlbnRpZmllciBpZCwgYm9vbCBtdXRlKQorICAg
IFRpbWVDaGFuZ2VkKFdlYktpdDo6TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlSWRlbnRpZmllciBp
ZCwgTWVkaWFUaW1lIHRpbWUpCisgICAgRHVyYXRpb25DaGFuZ2VkKFdlYktpdDo6TWVkaWFQbGF5
ZXJQcml2YXRlUmVtb3RlSWRlbnRpZmllciBpZCwgTWVkaWFUaW1lIHRpbWUpCisgICAgUmF0ZUNo
YW5nZWQoV2ViS2l0OjpNZWRpYVBsYXllclByaXZhdGVSZW1vdGVJZGVudGlmaWVyIGlkLCBkb3Vi
bGUgcmF0ZSkKK30KKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViUGFnZS9WaWV3VXBkYXRlRGlzcGF0Y2hlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViUGFnZS9WaWV3VXBkYXRlRGlzcGF0Y2hlci5jcHAKaW5kZXggNWNmNDQ0MDdlM2Zi
M2Y2N2EwMzQ3MDAzZDA0NzhkNzQxOTkzMjQzZi4uMWZiY2M3OTZmZmI2NTk1YTRmMzViNTI5MGE5
YzNiOWE0ZGYxODY2ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBh
Z2UvVmlld1VwZGF0ZURpc3BhdGNoZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJQYWdlL1ZpZXdVcGRhdGVEaXNwYXRjaGVyLmNwcApAQCAtMzEsNiArMzEsNyBAQAogI2lu
Y2x1ZGUgIlZpZXdVcGRhdGVEaXNwYXRjaGVyTWVzc2FnZXMuaCIKICNpbmNsdWRlICJXZWJQYWdl
LmgiCiAjaW5jbHVkZSAiV2ViUHJvY2Vzcy5oIgorI2luY2x1ZGUgPFdlYkNvcmUvUGFnZUlkZW50
aWZpZXIuaD4KICNpbmNsdWRlIDx3dGYvUnVuTG9vcC5oPgogCiBuYW1lc3BhY2UgV2ViS2l0IHsK
QEAgLTc1LDcgKzc2LDcgQEAgdm9pZCBWaWV3VXBkYXRlRGlzcGF0Y2hlcjo6dmlzaWJsZUNvbnRl
bnRSZWN0VXBkYXRlKFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIHBhZ2UKIAogdm9pZCBWaWV3VXBk
YXRlRGlzcGF0Y2hlcjo6ZGlzcGF0Y2hWaXNpYmxlQ29udGVudFJlY3RVcGRhdGUoKQogewotICAg
IEhhc2hNYXA8UGFnZUlkZW50aWZpZXIsIFVwZGF0ZURhdGE+IHVwZGF0ZTsKKyAgICBIYXNoTWFw
PFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBVcGRhdGVEYXRhPiB1cGRhdGU7CiAgICAgewogICAg
ICAgICBMb2NrSG9sZGVyIGxvY2tlcigmbV9kYXRhTXV0ZXgpOwogICAgICAgICB1cGRhdGUgPSBX
VEZNb3ZlKG1fbGF0ZXN0VXBkYXRlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBh
Z2UvV2ViUGFnZS5jcHAKaW5kZXggNzM1ZmVhNGVlMTNiZTQyNWMyMzRiZTkyMTIwZmU5ZTdiY2Ey
ZDVjNy4uYjk2OWQ5YmFlNmIxZGFjZTM3YzdjNzk2YjJhMjAyYWQ2NzUzODc4NCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKQEAgLTMxMiw2ICszMTIs
MTAgQEAKICNpbmNsdWRlICJXZWJEZXZpY2VPcmllbnRhdGlvblVwZGF0ZVByb3ZpZGVyLmgiCiAj
ZW5kaWYKIAorI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykKKyNpbmNsdWRlICJSZW1vdGVNZWRpYVBs
YXllck1hbmFnZXIuaCIKKyNlbmRpZgorCiBuYW1lc3BhY2UgV2ViS2l0IHsKIHVzaW5nIG5hbWVz
cGFjZSBKU0M7CiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKQEAgLTM2MDYsNiArMzYxMCwxMCBA
QCB2b2lkIFdlYlBhZ2U6OnVwZGF0ZVByZWZlcmVuY2VzKGNvbnN0IFdlYlByZWZlcmVuY2VzU3Rv
cmUmIHN0b3JlKQogCiAgICAgaWYgKG1fZHJhd2luZ0FyZWEpCiAgICAgICAgIG1fZHJhd2luZ0Fy
ZWEtPnVwZGF0ZVByZWZlcmVuY2VzKHN0b3JlKTsKKworI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykK
KyAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5zdXBwbGVtZW50PFJlbW90ZU1lZGlhUGxheWVy
TWFuYWdlcj4oKS0+dXBkYXRlUHJlZmVyZW5jZXMoc2V0dGluZ3MpOworI2VuZGlmCiB9CiAKICNp
ZiBFTkFCTEUoREFUQV9ERVRFQ1RJT04pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViUHJvY2Vzcy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vz
cy5jcHAKaW5kZXggMDZiMDhkNzhiZjU4NzM1ZTgxNzgwZmEwNDFjMGE4NzQxZWYwMGVmOS4uMTUx
MzI3MWFjM2Y5NzUxNTZmOTk0MmRhZmRmMGNjMGE4Y2Q3ZTNkMyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJQcm9jZXNzLmNwcApAQCAtMTY0LDYgKzE2NCwxMCBAQAogI2luY2x1ZGUgPEph
dmFTY3JpcHRDb3JlL1JlbW90ZUluc3BlY3Rvci5oPgogI2VuZGlmCiAKKyNpZiBFTkFCTEUoR1BV
X1BST0NFU1MpCisjaW5jbHVkZSAiUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyLmgiCisjZW5kaWYK
KwogLy8gVGhpcyBzaG91bGQgYmUgbGVzcyB0aGFuIHBsdWdJbkF1dG9TdGFydEV4cGlyYXRpb25U
aW1lVGhyZXNob2xkIGluIFBsdWdJbkF1dG9TdGFydFByb3ZpZGVyLgogc3RhdGljIGNvbnN0IFNl
Y29uZHMgcGx1Z0luQXV0b1N0YXJ0RXhwaXJhdGlvblRpbWVVcGRhdGVUaHJlc2hvbGQgeyAyOSAq
IDI0ICogNjAgKiA2MCB9OwogCkBAIC0yMjEsNyArMjI1LDExIEBAIFdlYlByb2Nlc3M6OldlYlBy
b2Nlc3MoKQogI2lmIFBMQVRGT1JNKENPQ09BKSAmJiBFTkFCTEUoTUVESUFfU1RSRUFNKQogICAg
IGFkZFN1cHBsZW1lbnQ8VXNlck1lZGlhQ2FwdHVyZU1hbmFnZXI+KCk7CiAjZW5kaWYKLSAgICAK
KworI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykKKyAgICBhZGRTdXBwbGVtZW50PFJlbW90ZU1lZGlh
UGxheWVyTWFuYWdlcj4oKTsKKyNlbmRpZgorCiAgICAgR2lnYWNhZ2U6OmZvcmJpZERpc2FibGlu
Z1ByaW1pdGl2ZUdpZ2FjYWdlKCk7CiB9CiAK
</data>

          </attachment>
      

    </bug>

</bugzilla>