<?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>218426</bug_id>
          
          <creation_ts>2020-11-01 11:28:54 -0800</creation_ts>
          <short_desc>[Concurrent display lists] Add an initial implementation of concurrent display list rendering</short_desc>
          <delta_ts>2020-11-11 07:07:17 -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>WebKit2</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>218568</dependson>
    
    <dependson>218588</dependson>
    
    <dependson>218661</dependson>
    
    <dependson>218689</dependson>
    
    <dependson>218720</dependson>
          <blocked>218614</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Wenson Hsieh">wenson_hsieh</reporter>
          <assigned_to name="Wenson Hsieh">wenson_hsieh</assigned_to>
          <cc>ggaren</cc>
    
    <cc>rniwa</cc>
    
    <cc>saam</cc>
    
    <cc>sabouhallawa</cc>
    
    <cc>sam</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>thorton</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1703406</commentid>
    <comment_count>0</comment_count>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2020-11-01 11:28:54 -0800</bug_when>
    <thetext>Make it possible for the web process to write display list items while the GPU process is reading items from shared memory.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1704685</commentid>
    <comment_count>1</comment_count>
      <attachid>413231</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2020-11-04 17:28:56 -0800</bug_when>
    <thetext>Created attachment 413231
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1705048</commentid>
    <comment_count>2</comment_count>
      <attachid>413367</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2020-11-05 16:16:31 -0800</bug_when>
    <thetext>Created attachment 413367
Depends on #218588 and #218406</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1705503</commentid>
    <comment_count>3</comment_count>
      <attachid>413510</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2020-11-06 20:42:25 -0800</bug_when>
    <thetext>Created attachment 413510
Rebase on trunk</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1705535</commentid>
    <comment_count>4</comment_count>
      <attachid>413525</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2020-11-07 09:37:39 -0800</bug_when>
    <thetext>Created attachment 413525
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1705536</commentid>
    <comment_count>5</comment_count>
      <attachid>413526</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2020-11-07 09:40:32 -0800</bug_when>
    <thetext>Created attachment 413526
Tweak ChangeLog wording</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1705541</commentid>
    <comment_count>6</comment_count>
      <attachid>413526</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2020-11-07 10:28:14 -0800</bug_when>
    <thetext>Comment on attachment 413526
Tweak ChangeLog wording

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

&gt; Source/WebKit/GPUProcess/graphics/RemoteRenderingBackend.cpp:146
&gt; +    DisplayList::ItemBufferReadingClient* itemBufferClient;
&gt;      if (imageBuffer-&gt;isAccelerated())
&gt; -        displayList-&gt;setItemBufferClient(static_cast&lt;AcceleratedRemoteImageBuffer*&gt;(imageBuffer));
&gt; +        itemBufferClient = static_cast&lt;AcceleratedRemoteImageBuffer*&gt;(imageBuffer);
&gt;      else
&gt; -        displayList-&gt;setItemBufferClient(static_cast&lt;UnacceleratedRemoteImageBuffer*&gt;(imageBuffer));
&gt; +        itemBufferClient = static_cast&lt;UnacceleratedRemoteImageBuffer*&gt;(imageBuffer);

What is the purpose of these casts?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1705547</commentid>
    <comment_count>7</comment_count>
      <attachid>413526</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2020-11-07 11:28:43 -0800</bug_when>
    <thetext>Comment on attachment 413526
Tweak ChangeLog wording

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

&gt;&gt; Source/WebKit/GPUProcess/graphics/RemoteRenderingBackend.cpp:146
&gt;&gt; +        itemBufferClient = static_cast&lt;UnacceleratedRemoteImageBuffer*&gt;(imageBuffer);
&gt; 
&gt; What is the purpose of these casts?

These casts are currently here because RemoteImageBuffer is the thing that implements ItemBufferReadingClient.

(That said, perhaps it would be cleaner to make RemoteRenderingBackend the client, since none of the logic for decoding display list items is specific to RemoteImageBuffer anyways. If I did that, then I would be able to remove these casts)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1705552</commentid>
    <comment_count>8</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2020-11-07 11:48:27 -0800</bug_when>
    <thetext>(In reply to Wenson Hsieh from comment #7)
&gt; Comment on attachment 413526 [details]
&gt; Tweak ChangeLog wording
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=413526&amp;action=review
&gt; 
&gt; &gt;&gt; Source/WebKit/GPUProcess/graphics/RemoteRenderingBackend.cpp:146
&gt; &gt;&gt; +        itemBufferClient = static_cast&lt;UnacceleratedRemoteImageBuffer*&gt;(imageBuffer);
&gt; &gt; 
&gt; &gt; What is the purpose of these casts?
&gt; 
&gt; These casts are currently here because RemoteImageBuffer is the thing that
&gt; implements ItemBufferReadingClient.
&gt; 
&gt; (That said, perhaps it would be cleaner to make RemoteRenderingBackend the
&gt; client, since none of the logic for decoding display list items is specific
&gt; to RemoteImageBuffer anyways. If I did that, then I would be able to remove
&gt; these casts)

I see. That does sound cleaner.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1705559</commentid>
    <comment_count>9</comment_count>
      <attachid>413534</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2020-11-07 13:16:19 -0800</bug_when>
    <thetext>Created attachment 413534
Depends on #218689</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1705596</commentid>
    <comment_count>10</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2020-11-08 11:29:15 -0800</bug_when>
    <thetext>&lt;rdar://problem/71167220&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1705763</commentid>
    <comment_count>11</comment_count>
      <attachid>413534</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2020-11-09 10:40:34 -0800</bug_when>
    <thetext>Comment on attachment 413534
Depends on #218689

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

&gt; Source/WebKit/GPUProcess/graphics/DisplayListReaderHandle.cpp:34
&gt; +    unreadBytesHandle() -= amount;

Check for underflow?

&gt; Source/WebKit/GPUProcess/graphics/DisplayListReaderHandle.h:42
&gt; +    std::unique_ptr&lt;WebCore::DisplayList::DisplayList&gt; createDisplayList(size_t offset, size_t capacity, WebCore::DisplayList::ItemBufferReadingClient&amp;) const;

Maybe readDisplayListFromHandle() to not make it sound like it creates a fresh, empty DisplayList.

&gt; Source/WebKit/GPUProcess/graphics/RemoteRenderingBackend.cpp:128
&gt; +void RemoteRenderingBackend::wakeUpAndProcessDisplayList(WebCore::DisplayList::ItemBufferIdentifier initialIdentifier, uint64_t initialOffset, RenderingResourceIdentifier renderingResourceIdentifier)

renderingResourceIdentifier -&gt; destinationBufferIdentifier

&gt; Source/WebKit/GPUProcess/graphics/RemoteRenderingBackend.cpp:130
&gt; +    auto imageBuffer = m_remoteResourceCache.cachedImageBuffer(renderingResourceIdentifier);

Why is this getting a designation buffer from the source cache? Resouce cache buffers are readonly in the GPU process.

&gt; Source/WebKit/GPUProcess/graphics/RemoteRenderingBackend.cpp:132
&gt;          // FIXME: Add a message check to terminate the web process.

I think we need to do this very soon.

&gt; Source/WebKit/GPUProcess/graphics/RemoteRenderingBackend.cpp:146
&gt; +        SharedDisplayListHandle::Lock locker { *sharedHandle };

The cool kids do something like auto locker = SharedDisplayListHandle::Lock { ... }

&gt; Source/WebKit/GPUProcess/graphics/RemoteRenderingBackend.cpp:151
&gt; +        imageBuffer-&gt;flushDisplayList(*sharedHandle-&gt;createDisplayList(offset, sizeToRead, *this));

We need to call this something other than &quot;flushDisplayList&quot;. It&apos;s more &quot;render display list&quot;.

&gt; Source/WebKit/GPUProcess/graphics/RemoteRenderingBackend.cpp:153
&gt; +        offset += sizeToRead;

Do we need overflow checks?

&gt; Source/WebKit/GPUProcess/graphics/RemoteRenderingBackend.cpp:166
&gt; +        sharedHandle = m_sharedDisplayListHandles.get(nextIdentifier);

I think I&apos;d feel more comfortable if you didn&apos;t change the sharedHandle in this loop, since sharedHandle and sizeToRead go together and it would be easy to introduce mistakes in future. Can you refractor the code to read from a single handle into its own function?

&gt; Source/WebKit/GPUProcess/graphics/RemoteRenderingBackend.cpp:203
&gt; +void RemoteRenderingBackend::didCreateSharedDisplayListHandle(DisplayList::ItemBufferIdentifier identifier, const SharedMemory::IPCHandle&amp; handle, RenderingResourceIdentifier remoteResourceIdentifier)

remoteResourceIdentifier -&gt; destinationBufferIdentifier

&gt; Source/WebKit/GPUProcess/graphics/RemoteRenderingBackend.cpp:205
&gt; +    if (auto sharedMemory = SharedMemory::map(handle.handle, SharedMemory::Protection::ReadWrite))

Why are we mapping ReadWrite in the GPUP? Is this just to be able to write unreadBytes? Should that instead be in its own little shared memory handle?

&gt; Source/WebKit/GPUProcess/graphics/RemoteRenderingBackend.h:105
&gt; +    void didCreateSharedDisplayListHandle(WebCore::DisplayList::ItemBufferIdentifier, const SharedMemory::IPCHandle&amp;, WebCore::RenderingResourceIdentifier);

Give RenderingResourceIdentifier a name

&gt; Source/WebKit/Shared/SharedDisplayListHandle.h:38
&gt; +    static constexpr auto reservedCapacityAtStart = sizeof(bool) + sizeof(size_t);

Maybe round this up for better alignment?

&gt; Source/WebKit/Shared/SharedDisplayListHandle.h:42
&gt; +    size_t unreadBytes() const { return *reinterpret_cast&lt;size_t*&gt;(data() + sizeof(bool)); }

Rather than this manual offsetting, how about describing the buffer contents via a struct.

&gt; Source/WebKit/Shared/SharedDisplayListHandle.h:58
&gt; +            auto&amp; atomicValue = m_handle.atomicLockValue();
&gt; +            while (true) {
&gt; +                std::this_thread::yield();
&gt; +                bool unlocked = false;
&gt; +                if (atomicValue.compare_exchange_weak(unlocked, true))
&gt; +                    break;

Please check with a locking/scheduling/priority-donating expert.

&gt; Source/WebKit/WebProcess/GPU/graphics/DisplayListWriterHandle.cpp:35
&gt; +    m_writableOffset += amount;
&gt; +    unreadBytesHandle() += amount;

Check for overflow?

&gt; Source/WebKit/WebProcess/GPU/graphics/DisplayListWriterHandle.cpp:40
&gt; +    return sharedMemory().size() - writableOffset();

Check for underflow?

&gt; Source/WebKit/WebProcess/GPU/graphics/DisplayListWriterHandle.cpp:55
&gt; +        ASSERT(m_writableOffset == SharedDisplayListHandle::reservedCapacityAtStart);

RELEASE_ASSERT?

&gt; Source/WebKit/WebProcess/GPU/graphics/DisplayListWriterHandle.cpp:59
&gt; +    Lock locker { *this };

auto locker =

&gt; Source/WebKit/WebProcess/GPU/graphics/RemoteRenderingBackendProxy.cpp:129
&gt; +        SharedDisplayListHandle::Lock locker { *sharedHandle };

auto locker =</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1705797</commentid>
    <comment_count>12</comment_count>
      <attachid>413534</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2020-11-09 11:48:54 -0800</bug_when>
    <thetext>Comment on attachment 413534
Depends on #218689

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

&gt;&gt; Source/WebKit/GPUProcess/graphics/DisplayListReaderHandle.cpp:34
&gt;&gt; +    unreadBytesHandle() -= amount;
&gt; 
&gt; Check for underflow?

Done! Made this robust against underflow.

&gt;&gt; Source/WebKit/GPUProcess/graphics/DisplayListReaderHandle.h:42
&gt;&gt; +    std::unique_ptr&lt;WebCore::DisplayList::DisplayList&gt; createDisplayList(size_t offset, size_t capacity, WebCore::DisplayList::ItemBufferReadingClient&amp;) const;
&gt; 
&gt; Maybe readDisplayListFromHandle() to not make it sound like it creates a fresh, empty DisplayList.

I do agree `readDisplayListFromHandle` is better than my current name, but at the same time `readDisplayListFromHandle` sounds like it&apos;s performing an action (namely, reading a display list). I&apos;ll change this to `displayListForReadingFromHandle`.

&gt;&gt; Source/WebKit/GPUProcess/graphics/RemoteRenderingBackend.cpp:128
&gt;&gt; +void RemoteRenderingBackend::wakeUpAndProcessDisplayList(WebCore::DisplayList::ItemBufferIdentifier initialIdentifier, uint64_t initialOffset, RenderingResourceIdentifier renderingResourceIdentifier)
&gt; 
&gt; renderingResourceIdentifier -&gt; destinationBufferIdentifier

Changed to destinationBufferIdentifier.

&gt;&gt; Source/WebKit/GPUProcess/graphics/RemoteRenderingBackend.cpp:130
&gt;&gt; +    auto imageBuffer = m_remoteResourceCache.cachedImageBuffer(renderingResourceIdentifier);
&gt; 
&gt; Why is this getting a designation buffer from the source cache? Resouce cache buffers are readonly in the GPU process.

The current status quo is that remote image buffers that back canvases are tracked in the GPU process as cached resources (see RemoteRenderingBackend::createImageBuffer, above). I agree it&apos;s a bit confusing, but this might have benefits (e.g. when painting from canvas to canvas). Perhaps RemoteResourceCache and its cacheImageBuffer method should be renamed to something more general? (For example, RemoteResourceStore::addImageBuffer or RemoteResourceRegistry::registerImageBuffer).

&gt;&gt; Source/WebKit/GPUProcess/graphics/RemoteRenderingBackend.cpp:132
&gt;&gt;          // FIXME: Add a message check to terminate the web process.
&gt; 
&gt; I think we need to do this very soon.

Yes!

&gt;&gt; Source/WebKit/GPUProcess/graphics/RemoteRenderingBackend.cpp:146
&gt;&gt; +        SharedDisplayListHandle::Lock locker { *sharedHandle };
&gt; 
&gt; The cool kids do something like auto locker = SharedDisplayListHandle::Lock { ... }

👍🏻

&gt;&gt; Source/WebKit/GPUProcess/graphics/RemoteRenderingBackend.cpp:151
&gt;&gt; +        imageBuffer-&gt;flushDisplayList(*sharedHandle-&gt;createDisplayList(offset, sizeToRead, *this));
&gt; 
&gt; We need to call this something other than &quot;flushDisplayList&quot;. It&apos;s more &quot;render display list&quot;.

`renderDisplayList` sounds good to me.

I think I&apos;ll split this renaming out into a different patch.

&gt;&gt; Source/WebKit/GPUProcess/graphics/RemoteRenderingBackend.cpp:153
&gt;&gt; +        offset += sizeToRead;
&gt; 
&gt; Do we need overflow checks?

Added!

&gt;&gt; Source/WebKit/GPUProcess/graphics/RemoteRenderingBackend.cpp:166
&gt;&gt; +        sharedHandle = m_sharedDisplayListHandles.get(nextIdentifier);
&gt; 
&gt; I think I&apos;d feel more comfortable if you didn&apos;t change the sharedHandle in this loop, since sharedHandle and sizeToRead go together and it would be easy to introduce mistakes in future. Can you refractor the code to read from a single handle into its own function?

Yeah, that makes sense — I will split out the logic for reading from a single shared handle into a new private helper.

&gt;&gt; Source/WebKit/GPUProcess/graphics/RemoteRenderingBackend.cpp:203
&gt;&gt; +void RemoteRenderingBackend::didCreateSharedDisplayListHandle(DisplayList::ItemBufferIdentifier identifier, const SharedMemory::IPCHandle&amp; handle, RenderingResourceIdentifier remoteResourceIdentifier)
&gt; 
&gt; remoteResourceIdentifier -&gt; destinationBufferIdentifier

Fixed!

&gt;&gt; Source/WebKit/GPUProcess/graphics/RemoteRenderingBackend.cpp:205
&gt;&gt; +    if (auto sharedMemory = SharedMemory::map(handle.handle, SharedMemory::Protection::ReadWrite))
&gt; 
&gt; Why are we mapping ReadWrite in the GPUP? Is this just to be able to write unreadBytes? Should that instead be in its own little shared memory handle?

Yes, it is so that we can update the &quot;unread bytes&quot; count. I recall discussing it with Geoff, and he suggested that we should just stick it in the first bit of each shared memory chunk instead of taking up a whole new page for an atomic.

&gt;&gt; Source/WebKit/GPUProcess/graphics/RemoteRenderingBackend.h:105
&gt;&gt; +    void didCreateSharedDisplayListHandle(WebCore::DisplayList::ItemBufferIdentifier, const SharedMemory::IPCHandle&amp;, WebCore::RenderingResourceIdentifier);
&gt; 
&gt; Give RenderingResourceIdentifier a name

👍🏻 &quot;destinationBufferIdentifier&quot;

&gt;&gt; Source/WebKit/Shared/SharedDisplayListHandle.h:38
&gt;&gt; +    static constexpr auto reservedCapacityAtStart = sizeof(bool) + sizeof(size_t);
&gt; 
&gt; Maybe round this up for better alignment?

Done! (changed to 16 bytes)

&gt;&gt; Source/WebKit/Shared/SharedDisplayListHandle.h:58
&gt;&gt; +                    break;
&gt; 
&gt; Please check with a locking/scheduling/priority-donating expert.

I came up with this part with some help from Geoff; perhaps he has some more thoughts on this!

One thing we should investigate is changing this to use a single atomic size_t counter instead of an atomic lock. When I tried doing this, however, it ended up hurting performance for (as-of-yet) unknown reasons...

&gt;&gt; Source/WebKit/WebProcess/GPU/graphics/DisplayListWriterHandle.cpp:35
&gt;&gt; +    unreadBytesHandle() += amount;
&gt; 
&gt; Check for overflow?

Fixed!

&gt;&gt; Source/WebKit/WebProcess/GPU/graphics/DisplayListWriterHandle.cpp:40
&gt;&gt; +    return sharedMemory().size() - writableOffset();
&gt; 
&gt; Check for underflow?

Fixed!

&gt;&gt; Source/WebKit/WebProcess/GPU/graphics/DisplayListWriterHandle.cpp:55
&gt;&gt; +        ASSERT(m_writableOffset == SharedDisplayListHandle::reservedCapacityAtStart);
&gt; 
&gt; RELEASE_ASSERT?

Changed to RELEASE_ASSERT.

&gt;&gt; Source/WebKit/WebProcess/GPU/graphics/DisplayListWriterHandle.cpp:59
&gt;&gt; +    Lock locker { *this };
&gt; 
&gt; auto locker =

Fixed!

&gt;&gt; Source/WebKit/WebProcess/GPU/graphics/RemoteRenderingBackendProxy.cpp:129
&gt;&gt; +        SharedDisplayListHandle::Lock locker { *sharedHandle };
&gt; 
&gt; auto locker =

Fixed!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1706093</commentid>
    <comment_count>13</comment_count>
      <attachid>413701</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2020-11-10 08:52:46 -0800</bug_when>
    <thetext>Created attachment 413701
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1706191</commentid>
    <comment_count>14</comment_count>
      <attachid>413729</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2020-11-10 13:20:10 -0800</bug_when>
    <thetext>Created attachment 413729
Use CheckedSize instead of Checked&lt;&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1706293</commentid>
    <comment_count>15</comment_count>
      <attachid>413729</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2020-11-10 16:53:13 -0800</bug_when>
    <thetext>Comment on attachment 413729
Use CheckedSize instead of Checked&lt;&gt;

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

&gt; Source/WebKit/GPUProcess/graphics/RemoteRenderingBackend.cpp:136
&gt; +        auto locker = SharedDisplayListHandle::Lock { handle };
&gt; +        sizeToRead = handle.unreadBytes();

This seems error prone. Can&apos;t we just add the lock to unreadBytes() instead?

&gt; Source/WebKit/GPUProcess/graphics/RemoteRenderingBackend.cpp:167
&gt; +        auto locker = SharedDisplayListHandle::Lock { handle };
&gt; +        handle.advance(sizeToRead);
&gt; +        sizeToRead = handle.unreadBytes();

Ditto about moving the lock into advance. Maybe advance can return the new unread bytes value.

&gt; Source/WebKit/GPUProcess/graphics/RemoteRenderingBackend.cpp:181
&gt; +    auto initialHandle = m_sharedDisplayListHandles.get(initialIdentifier);
&gt; +    if (UNLIKELY(!initialHandle)) {

As we discussed, it&apos;s a bit dangerous to rely on the fact the map won&apos;t be mutated while we&apos;re accessing this handle.
We should either make the handle ref-counted or add some kind of message check to make sure we don&apos;t remove stuff from the map.

&gt; Source/WebKit/Shared/SharedDisplayListHandle.h:57
&gt; +                std::this_thread::yield();

Why are we yielding before checking the value at least once? That seems rather inefficient.
Also, use Thread::yield?

&gt; Source/WebKit/Shared/SharedDisplayListHandle.h:61
&gt; +            }

We should probably limit ourselves from spinning forever.
We probably need an equivalent of parking lot cross-process.
e.g. Use the OS-level lock feature for example.
We can do that in a follow up patch though.

&gt; Source/WebKit/Shared/SharedDisplayListHandle.h:83
&gt; +    struct DisplayListHandleStructure {

I would have called this DisplayListSharedMemoryHeader or something.
&quot;Structure&quot; sounds rather vague &amp; sounds like something related to JSC::Structure, which it is not.

&gt; Source/WebKit/Shared/SharedDisplayListHandle.h:88
&gt; +    std::atomic&lt;uint64_t&gt;&amp; atomicLockValue() { return structure().lock; }

Maybe use WTF::Atomic instead?

&gt; Source/WebKit/WebProcess/GPU/graphics/RemoteRenderingBackendProxy.cpp:132
&gt; +        auto locker = SharedDisplayListHandle::Lock { *sharedHandle };
&gt; +
&gt; +        bool unreadCountWasEmpty = !sharedHandle-&gt;unreadBytes();
&gt; +        sharedHandle-&gt;advance(handle.capacity);

It seems like this is the only part we need to put under lock?
Can we move the lock into advance? Maybe advance can return the old &amp; new values of unread bytes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1706295</commentid>
    <comment_count>16</comment_count>
      <attachid>413729</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2020-11-10 16:54:45 -0800</bug_when>
    <thetext>Comment on attachment 413729
Use CheckedSize instead of Checked&lt;&gt;

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

&gt; Source/WebKit/WebProcess/GPU/graphics/DisplayListWriterHandle.cpp:81
&gt; +    auto locker = Lock { *this };
&gt; +    if (unreadBytes())

We should move the lock to unreadBytes().
There is no need to keep holding onto the lock when we&apos;re updating m_writableOffset.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1706324</commentid>
    <comment_count>17</comment_count>
      <attachid>413729</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2020-11-10 20:14:40 -0800</bug_when>
    <thetext>Comment on attachment 413729
Use CheckedSize instead of Checked&lt;&gt;

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

&gt;&gt; Source/WebKit/GPUProcess/graphics/RemoteRenderingBackend.cpp:136
&gt;&gt; +        sizeToRead = handle.unreadBytes();
&gt; 
&gt; This seems error prone. Can&apos;t we just add the lock to unreadBytes() instead?

Good call — done!

Also made the inner Lock class protected, since the code using these handles won&apos;t need to manually lock anymore.

&gt;&gt; Source/WebKit/GPUProcess/graphics/RemoteRenderingBackend.cpp:167
&gt;&gt; +        sizeToRead = handle.unreadBytes();
&gt; 
&gt; Ditto about moving the lock into advance. Maybe advance can return the new unread bytes value.

Added to advance() too, and made it return the new value.

&gt;&gt; Source/WebKit/GPUProcess/graphics/RemoteRenderingBackend.cpp:181
&gt;&gt; +    if (UNLIKELY(!initialHandle)) {
&gt; 
&gt; As we discussed, it&apos;s a bit dangerous to rely on the fact the map won&apos;t be mutated while we&apos;re accessing this handle.
&gt; We should either make the handle ref-counted or add some kind of message check to make sure we don&apos;t remove stuff from the map.

Yes — made SharedDisplayListHandle (and its reader/writer subclasses) ref-counted, and also added an early return in `RemoteRenderingBackend::didCreateSharedDisplayListHandle`, in the case where we&apos;re attempting to re-register an ID, with a FIXME to addionally turn it into a MESSAGE_CHECK.

In an upcoming patch, I&apos;m going to make all of these returns MESSAGE_CHECK and kill the web content process.

&gt;&gt; Source/WebKit/Shared/SharedDisplayListHandle.h:57
&gt;&gt; +                std::this_thread::yield();
&gt; 
&gt; Why are we yielding before checking the value at least once? That seems rather inefficient.
&gt; Also, use Thread::yield?

Whoops, good catch. Changed to use Thread::yield, and also moved it after the break; statement so we&apos;ll only yield if we were unsuccessful in grabbing the lock the first time.

&gt;&gt; Source/WebKit/Shared/SharedDisplayListHandle.h:61
&gt;&gt; +            }
&gt; 
&gt; We should probably limit ourselves from spinning forever.
&gt; We probably need an equivalent of parking lot cross-process.
&gt; e.g. Use the OS-level lock feature for example.
&gt; We can do that in a follow up patch though.

Added a FIXME for this.

&gt;&gt; Source/WebKit/Shared/SharedDisplayListHandle.h:83
&gt;&gt; +    struct DisplayListHandleStructure {
&gt; 
&gt; I would have called this DisplayListSharedMemoryHeader or something.
&gt; &quot;Structure&quot; sounds rather vague &amp; sounds like something related to JSC::Structure, which it is not.

Sounds good — renamed to DisplayListSharedMemoryHeader (and renamed the structure() method to header()).

&gt;&gt; Source/WebKit/Shared/SharedDisplayListHandle.h:88
&gt;&gt; +    std::atomic&lt;uint64_t&gt;&amp; atomicLockValue() { return structure().lock; }
&gt; 
&gt; Maybe use WTF::Atomic instead?

Done!

&gt;&gt; Source/WebKit/WebProcess/GPU/graphics/DisplayListWriterHandle.cpp:81
&gt;&gt; +    if (unreadBytes())
&gt; 
&gt; We should move the lock to unreadBytes().
&gt; There is no need to keep holding onto the lock when we&apos;re updating m_writableOffset.

Fixed!

&gt;&gt; Source/WebKit/WebProcess/GPU/graphics/RemoteRenderingBackendProxy.cpp:132
&gt;&gt; +        sharedHandle-&gt;advance(handle.capacity);
&gt; 
&gt; It seems like this is the only part we need to put under lock?
&gt; Can we move the lock into advance? Maybe advance can return the old &amp; new values of unread bytes.

Done!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1706328</commentid>
    <comment_count>18</comment_count>
      <attachid>413767</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2020-11-10 20:47:47 -0800</bug_when>
    <thetext>Created attachment 413767
For EWS</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1706348</commentid>
    <comment_count>19</comment_count>
      <attachid>413775</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2020-11-10 21:33:59 -0800</bug_when>
    <thetext>Created attachment 413775
For EWS</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1706447</commentid>
    <comment_count>20</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2020-11-11 07:07:16 -0800</bug_when>
    <thetext>Committed r269682: &lt;https://trac.webkit.org/changeset/269682&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 413775.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>413231</attachid>
            <date>2020-11-04 17:28:56 -0800</date>
            <delta_ts>2020-11-05 16:16:29 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-218426-20201104172856.patch</filename>
            <type>text/plain</type>
            <size>59313</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY5Mzc5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDMzOWY3MmEzOWNmMjM0MTBi
YTgwMzdhZWYwNGI4MTAzODY5M2QwY2IuLjQ2YTcyNGM4YTlkNjU1N2IwYmVlM2EwNDNlYmIwMmQ3
ODAzZDk4NzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQ5IEBACisyMDIwLTExLTA0ICBXZW5zb24g
SHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAgICAgIFtDb25jdXJyZW50IGRp
c3BsYXkgbGlzdHNdIEFkZCBhbiBpbml0aWFsIGltcGxlbWVudGF0aW9uIG9mIGNvbmN1cnJlbnQg
ZGlzcGxheSBsaXN0IHJlbmRlcmluZworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MjE4NDI2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgVGhpcyBwYXRjaCBhZGRzIGEgZmlyc3QtY3V0IGltcGxlbWVudGF0aW9u
IG9mIGNvbmN1cnJlbnQgZGlzcGxheSBsaXN0IHJlbmRlcmluZywgd2hpY2ggYWxsb3dzIHRoZSBH
UFUgYW5kIHdlYgorICAgICAgICBwcm9jZXNzZXMgdG8gcmVhZCBhbmQgd3JpdGUgZGlzcGxheSBs
aXN0IGRhdGEgYXQgdGhlIHNhbWUgdGltZS4gVG8gYWNoaWV2ZSB0aGlzLCB3ZSByZW1vdmUgdGhl
IHBsYWNlaG9sZGVyCisgICAgICAgIHNoYXJlZCBtZW1vcnkgZGlzcGxheSBsaXN0IGVuY29kaW5n
IG1lY2hhbmlzbSBwcmV2aW91c2x5IGFkZGVkIGluIDx3ZWJraXQub3JnL2IvMjE4NDA2PiwgYW5k
IHJlcGxhY2UgaXQgd2l0aCBhCisgICAgICAgIG5ldyBtb2RlbCBpbiB3aGljaCBhIHdyaXRlciAo
aS5lLiB0aGUgd2ViIHByb2Nlc3MpIGFuZCBhIHJlYWRlciAoaS5lLiB0aGUgR1BVIHByb2Nlc3Mp
IHNoYXJlIGEgc2V0IG9mIHJldXNhYmxlCisgICAgICAgIHNoYXJlZCBtZW1vcnkgYnVmZmVycyB3
aGljaCBjb250YWluIGRpc3BsYXkgbGlzdCBpdGVtIGRhdGEuIEFzIHRoZSB3cml0ZXIgYXBwZW5k
cyBkYXRhIHRvIHNoYXJlZCBtZW1vcnksIGl0CisgICAgICAgIGluY3JlbWVudHMgYSBjb3VudGVy
IGluIGVhY2ggc2hhcmVkIG1lbW9yeSBidWZmZXIgdGhhdCByZXByZXNlbnRzIHRoZSBudW1iZXIg
b2YgYnl0ZXMgdGhhdCB0aGUgcmVhZGVyIGhhcyB5ZXQgdG8KKyAgICAgICAgcmVhZDsgYXMgdGhl
IHJlYWRlciByZWFkcyBkaXNwbGF5IGxpc3QgaXRlbXMgZnJvbSBzaGFyZWQgbWVtb3J5LCBpdCBk
ZWNyZW1lbnRzIHRoaXMgY291bnRlci4KKworICAgICAgICBUaGlzIHBhdGNoIGFsc28gaW1wbGVt
ZW50cyBhIHNpbXBsZSBzdHJhdGVneSBmb3IgcmV1c2luZyB0aGVzZSBzaGFyZWQgaXRlbSBidWZm
ZXJzLiBUaGUgd2ViIHByb2Nlc3MgbWFpbnRhaW5zIGEKKyAgICAgICAgcXVldWUgb2YgcmV1c2Fi
bGUgYnVmZmVyczsgd2hlbiBkaXNwbGF5IGxpc3QgaXRlbXMgYXJlIGFwcGVuZGVkIGFuZCB0aGUg
Y3VycmVudCB3cml0YWJsZSBidWZmZXIgaXMgb3V0IG9mCisgICAgICAgIGNhcGFjaXR5LCB0aGUg
ZGlzcGxheSBsaXN0IGl0ZW0gYnVmZmVyIGNhbGxzIG91dCB0byBXZWJLaXQyIHZpYSBhIGNsaWVu
dCBtZXRob2QgdG8gcmVxdWVzdCBtb3JlIHNoYXJlZCBtZW1vcnkuCisgICAgICAgIEhlcmUsIHRo
ZSB3ZWIgcHJvY2VzcyB0cmF2ZXJzZXMgdGhlIHF1ZXVlIG9mIHJldXNhYmxlIGl0ZW0gYnVmZmVy
cyBpbiBzZWFyY2ggb2YgYSBidWZmZXIgd2l0aCBzdWZmaWNpZW50CisgICAgICAgIGNhcGFjaXR5
OyBpZiBmb3VuZCwgd2UgaGFuZCB0aGlzIGJhY2sgdG8gV2ViQ29yZSBhcyBhbiBvcGFxdWUgYEl0
ZW1CdWZmZXJIYW5kbGVgOyBvdGhlcndpc2UsIHdlIGFsbG9jYXRlIGEgbmV3CisgICAgICAgIHJl
dXNhYmxlIHNoYXJlZCBtZW1vcnkgYnVmZmVyLiBJdGVtIGJ1ZmZlcnMgdGhhdCBoYXZlIGJlZW4g
dXNlZCBiZWNvbWUgcmV1c2FibGUgb25seSBhZnRlciB0aGV5IGFyZSAoMSkgbm8KKyAgICAgICAg
bG9uZ2VyIGJlaW5nIHJlYWQgZnJvbSAtLSBpLmUuLCB0aGUgY291bnRlciB2YWx1ZSBpcyAwLCBh
bmQgKDIpIHRoZXkgYXJlIG5vdCBhY3RpdmVseSBiZWluZyB3cml0dGVuIHRvLgorICAgICAgICBC
dWZmZXJzIHRoYXQgaGF2ZSBiZWVuIHVzZWQgYXJlIGxhemlseSByZWludHJvZHVjZWQgaW50byB0
aGUgcmV1c2UgcXVldWUgd2hlbiBhIGRpc3BsYXkgbGlzdCByZXF1ZXN0cyBhIGhhbmRsZQorICAg
ICAgICB0byB3cml0YWJsZSBpdGVtIGJ1ZmZlciBkYXRhLgorCisgICAgICAgIFNlZSBiZWxvdyBm
b3IgbW9yZSBkZXRhaWxzLgorCisgICAgICAgICogR1BVUHJvY2Vzcy9ncmFwaGljcy9EaXNwbGF5
TGlzdFJlYWRlckhhbmRsZS5jcHA6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJLaXQvU2hhcmVkL1No
YXJlZERpc3BsYXlMaXN0SGFuZGxlLmNwcC4KKyAgICAgICAgKFdlYktpdDo6RGlzcGxheUxpc3RS
ZWFkZXJIYW5kbGU6OmFkdmFuY2UpOgorICAgICAgICAoV2ViS2l0OjpEaXNwbGF5TGlzdFJlYWRl
ckhhbmRsZTo6Y3JlYXRlRGlzcGxheUxpc3QgY29uc3QpOgorICAgICAgICAqIEdQVVByb2Nlc3Mv
Z3JhcGhpY3MvRGlzcGxheUxpc3RSZWFkZXJIYW5kbGUuaDogQ29waWVkIGZyb20gU291cmNlL1dl
YktpdC9TaGFyZWQvU2hhcmVkRGlzcGxheUxpc3RIYW5kbGUuY3BwLgorICAgICAgICAoV2ViS2l0
OjpEaXNwbGF5TGlzdFJlYWRlckhhbmRsZTo6RGlzcGxheUxpc3RSZWFkZXJIYW5kbGUpOgorCisg
ICAgICAgIEFkZCBhIG5ldyBoZWxwZXIgY2xhc3MgdG8gcmVwcmVzZW50IGEgc2hhcmVkIGRpc3Bs
YXkgbGlzdCBpdGVtIGJ1ZmZlciB0aGF0IHRoZSBHUFUgcHJvY2VzcyBjYW4gdXNlIHRvIGNvbnN1
bWUKKyAgICAgICAgZGlzcGxheSBsaXN0IGl0ZW1zLiBBZHZhbmNpbmcgdGhlIGN1cnNvciBpbiBg
RGlzcGxheUxpc3RSZWFkZXJIYW5kbGVgIGluY3JlbWVudHMgdGhlICJyZW1haW5pbmcgYnl0ZXMi
IGNvdW50ZXI7CisgICAgICAgIHRoZSBjbGFzcyBhbHNvIGhhcyBhIGhlbHBlciBtZXRob2QgZm9y
IGNyZWF0aW5nIGEgbmV3IGBEaXNwbGF5TGlzdGAgd2l0aCBhIGdpdmVuIG9mZnNldCBpbnRvIHRo
ZSBzaGFyZWQgYnVmZmVyLAorICAgICAgICBhcyB3ZWxsIHRoZSBudW1iZXIgb2YgYnl0ZXMgdG8g
cmVhZC4KKworICAgICAgICAqIEdQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlSW1hZ2VCdWZmZXIu
aDoKKworICAgICAgICBIYW5kbGUgdGhlIGBTd2l0Y2hUb0J1ZmZlcmAgYW5kIGBGbHVzaENvbnRl
eHRgIGl0ZW1zIGJ5IChyZXNwZWN0aXZlbHkpIGluZm9ybWluZyB0aGUgcmVuZGVyaW5nIGJhY2tl
bmQgYWJvdXQKKyAgICAgICAgdGhlIG5leHQgYnVmZmVyIHRvIHJlYWQgZnJvbSwgYW5kIHNlbmRp
bmcgYSAiZmx1c2ggY29tbWl0dGVkIiBJUEMgbWVzc2FnZSBiYWNrIHRvIHRoZSB3ZWIgcHJvY2Vz
cy4KKworICAgICAgICAoV2ViS2l0OjpSZW1vdGVJbWFnZUJ1ZmZlcjo6UmVtb3RlSW1hZ2VCdWZm
ZXIpOgorICAgICAgICAqIEdQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2Vu
ZC5jcHA6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6Ondha2VVcEFu
ZFByb2Nlc3NEaXNwbGF5TGlzdCk6CisKKyAgICAgICAgVGhpcyBpcyB0aGUgbWFpbiBsb29wIGlu
IHRoZSBHUFUgcHJvY2VzcyB0aGF0IGlzIHJlc3BvbnNpYmxlIGZvciBhcHBseWluZyBpbmNvbWlu
ZyBkaXNwbGF5IGxpc3QgaXRlbSBkYXRhLiBUaGlzCisgICAgICAgIElQQyBlbmRwb2ludCByZWNl
aXZlcyBpbmZvcm1hdGlvbiBhYm91dCB3aGVyZSB0byBzdGFydCAoaS5lLiBhbiBpdGVtIGJ1ZmZl
ciBJRCBhbmQgYW4gb2Zmc2V0IGludG8gc2hhcmVkIG1lbW9yeQorICAgICAgICBpbiB0aGF0IGJ1
ZmZlcikgYW5kIGJlZ2lucyByZWFkaW5nIHJhbmdlcyBvZiBkaXNwbGF5IGxpc3QgaXRlbSBkYXRh
IGluc2lkZSB0aGF0IGJ1ZmZlci4gQWZ0ZXIgaXQgaXMgZG9uZQorICAgICAgICBwcm9jZXNzaW5n
IGFsbCBvZiBpdHMgdW5yZWFkIGJ5dGVzLCBpdCB0aGVuIGNoZWNrcyB0aGUgdW5yZWFkIGJ5dGUg
Y291bnQgb25jZSBhZ2FpbiwgYW5kIGNvbnRpbnVlcyB0aGUgbG9vcCBpZgorICAgICAgICB0aGUg
d2ViIHByb2Nlc3MgaGFzIGFkdmFuY2VkIHRoaXMgY291bnQuCisKKyAgICAgICAgKFdlYktpdDo6
UmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6c2V0TmV4dEl0ZW1CdWZmZXJUb1JlYWQpOgorICAgICAg
ICAoV2ViS2l0OjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpkaWRDcmVhdGVTaGFyZWREaXNwbGF5
TGlzdEhhbmRsZSk6CisKKyAgICAgICAgQWRkIGxvZ2ljIHRvIGhhbmRsZSB0aGUgY2FzZSB3aGVy
ZSB3ZSByZWFjaGVkIHRoZSBlbmQgb2YgYW4gaXRlbSBidWZmZXIsIGJ1dCB0aGUgbmV4dCBidWZm
ZXIgaWRlbnRpZmllciBpcyBzdGlsbAorICAgICAgICB1bmtub3duIHRvIHVzIChzaW5jZSBpdCBp
cyBzdGlsbCAiaW4gdHJhbnNpdCIgdmlhIHRoZSBgRGlkQ3JlYXRlU2hhcmVkRGlzcGxheUxpc3RI
YW5kbGVgIElQQyBtZXNzYWdlKS4gSW4gdGhpcworICAgICAgICBjYXNlLCB3ZSByZW1lbWJlciB0
aGUgbmV4dCBidWZmZXIgaWRlbnRpZmllciBpbiBgbV9uZXh0SXRlbUJ1ZmZlclRvUmVhZGAsIGFu
ZCBleGl0IHRoZSBwcm9jZXNzaW5nIGxvb3AgaW5zaWRlCisgICAgICAgIGB3YWtlVXBBbmRQcm9j
ZXNzRGlzcGxheUxpc3RgLiBVcG9uIHJlY2VpdmluZyB0aGUgc2hhcmVkIG1lbW9yeSBoYW5kbGUg
aW4gYGRpZENyZWF0ZVNoYXJlZERpc3BsYXlMaXN0SGFuZGxlYCwgd2UKKyAgICAgICAgdGhlbiBh
dXRvbWF0aWNhbGx5IHJlc3VtZSBkaXNwbGF5IGxpc3QgcHJvY2Vzc2luZywgc3RhcnRpbmcgZnJv
bSB0aGUgYmVnaW5uaW5nIG9mIHRoaXMgbmV3IGJ1ZmZlci4KKworICAgICAgICAoV2ViS2l0OjpS
ZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjphcHBseURpc3BsYXlMaXN0KTogRGVsZXRlZC4KKyAgICAg
ICAgKFdlYktpdDo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6Zmx1c2hEaXNwbGF5TGlzdCk6IERl
bGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OmZsdXNoRGlz
cGxheUxpc3RBbmRDb21taXQpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVSZW5k
ZXJpbmdCYWNrZW5kOjpkaWRDcmVhdGVTaGFyZWRJdGVtRGF0YSk6IERlbGV0ZWQuCisKKyAgICAg
ICAgV2UgZG9uJ3QgbmVlZCBhbnkgb2YgdGhlc2UgbWV0aG9kcyBhbnltb3JlLCBub3cgdGhhdCB0
aGVyZSBpcyBvbmx5IG9uZSBjb2RlcGF0aCBmb3IgcHJvY2Vzc2luZyBkaXNwbGF5IGxpc3QKKyAg
ICAgICAgaXRlbXMuIFNlZSBgUmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6d2FrZVVwQW5kUHJvY2Vz
c0Rpc3BsYXlMaXN0YCBhYm92ZS4gQWxzbywgcmVuYW1lIGBkaWRDcmVhdGVTaGFyZWRJdGVtRGF0
YWAKKyAgICAgICAgdG8gYGRpZENyZWF0ZVNoYXJlZERpc3BsYXlMaXN0SGFuZGxlYCAoYWxzbyBh
Ym92ZSkuCisKKyAgICAgICAgKiBHUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0Jh
Y2tlbmQuaDoKKyAgICAgICAgKiBHUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0Jh
Y2tlbmQubWVzc2FnZXMuaW46CisgICAgICAgICogU2hhcmVkL1NoYXJlZERpc3BsYXlMaXN0SGFu
ZGxlLmg6CisgICAgICAgIChXZWJLaXQ6OlNoYXJlZERpc3BsYXlMaXN0SGFuZGxlOjpzaGFyZWRN
ZW1vcnkgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpTaGFyZWREaXNwbGF5TGlzdEhhbmRsZTo6
c2hhcmVkTWVtb3J5KToKKyAgICAgICAgKFdlYktpdDo6U2hhcmVkRGlzcGxheUxpc3RIYW5kbGU6
OnVucmVhZEJ5dGVzIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6U2hhcmVkRGlzcGxheUxpc3RI
YW5kbGU6OmRhdGEgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpTaGFyZWREaXNwbGF5TGlzdEhh
bmRsZTo6aWRlbnRpZmllciBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OlNoYXJlZERpc3BsYXlM
aXN0SGFuZGxlOjpMb2NrOjpMb2NrKToKKyAgICAgICAgKFdlYktpdDo6U2hhcmVkRGlzcGxheUxp
c3RIYW5kbGU6OkxvY2s6On5Mb2NrKToKKyAgICAgICAgKFdlYktpdDo6U2hhcmVkRGlzcGxheUxp
c3RIYW5kbGU6OlNoYXJlZERpc3BsYXlMaXN0SGFuZGxlKToKKyAgICAgICAgKFdlYktpdDo6U2hh
cmVkRGlzcGxheUxpc3RIYW5kbGU6OnVucmVhZEJ5dGVzSGFuZGxlKToKKyAgICAgICAgKFdlYktp
dDo6U2hhcmVkRGlzcGxheUxpc3RIYW5kbGU6OmF0b21pY0xvY2tWYWx1ZSBjb25zdCk6CisgICAg
ICAgIChXZWJLaXQ6OlNoYXJlZERpc3BsYXlMaXN0SGFuZGxlOjplbmNvZGUgY29uc3QpOiBEZWxl
dGVkLgorICAgICAgICAoV2ViS2l0OjpTaGFyZWREaXNwbGF5TGlzdEhhbmRsZTo6ZGVjb2RlKTog
RGVsZXRlZC4KKworICAgICAgICBSZXB1cnBvc2UgYFNoYXJlZERpc3BsYXlMaXN0SGFuZGxlYCB0
byBzZXJ2ZSBhcyBhIGJhc2UgY2xhc3MgZm9yIGJvdGggYERpc3BsYXlMaXN0UmVhZGVySGFuZGxl
YCBhbmQKKyAgICAgICAgYERpc3BsYXlMaXN0V3JpdGVySGFuZGxlYC4gVGhpcyBiYXNlIGNsYXNz
IGlzIGF3YXJlIG9mIHRoZSBtZW1vcnkgbGF5b3V0IG9mIHRoZSBkaXNwbGF5IGxpc3QgaXRlbSBi
dWZmZXIgaW4KKyAgICAgICAgc2hhcmVkIG1lbW9yeSAoaW4gcGFydGljdWxhciwgdGhlIGZhY3Qg
dGhhdCB0aGUgZmlyc3QgYnl0ZSBpcyB0aGUgYXRvbWljIGxvY2sgYW5kIHRoZSBuZXh0IGBzaXpl
b2Yoc2l6ZV90KWAKKyAgICAgICAgYnl0ZXMgY29udGFpbiB0aGUgdW5yZWFkIGJ5dGUgY291bnRl
cikuCisKKyAgICAgICAgVGhpcyBhbHNvIGV4cG9zZXMgYSBoZWxwZXIgUkFJSSBjbGFzcywgYFNo
YXJlZERpc3BsYXlMaXN0SGFuZGxlOjpMb2NrYCwgdGhhdCBpcyB1c2VkIHRvIGdyYWIgdGhlIGxv
Y2sgb24gYQorICAgICAgICBwYXJ0aWN1bGFyIHNoYXJlZCBpdGVtIGJ1ZmZlciB3aGVuIHJlYWRp
bmcgb3IgdXBkYXRpbmcgdGhlIHVucmVhZCBieXRlcyBjb3VudGVyLgorCisgICAgICAgICogU291
cmNlcy50eHQ6CisgICAgICAgICogV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6Cisg
ICAgICAgICogV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvRGlzcGxheUxpc3RXcml0ZXJIYW5kbGUu
Y3BwOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViS2l0L1NoYXJlZC9TaGFyZWREaXNwbGF5TGlzdEhh
bmRsZS5jcHAuCisgICAgICAgIChXZWJLaXQ6OkRpc3BsYXlMaXN0V3JpdGVySGFuZGxlOjphZHZh
bmNlKToKKyAgICAgICAgKFdlYktpdDo6RGlzcGxheUxpc3RXcml0ZXJIYW5kbGU6OmF2YWlsYWJs
ZUNhcGFjaXR5IGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6RGlzcGxheUxpc3RXcml0ZXJIYW5k
bGU6OmNyZWF0ZUhhbmRsZSBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OkRpc3BsYXlMaXN0V3Jp
dGVySGFuZGxlOjpyZXNldFdyaXRhYmxlT2Zmc2V0SWZQb3NzaWJsZSk6CisKKyAgICAgICAgVGhp
cyBoZWxwZXIgbWV0aG9kIG1vdmVzIHRoZSB3cml0YWJsZSBvZmZzZXQgKHNlZSBiZWxvdykgYmFj
ayB0byB0aGUgc3RhcnQgb2YgdGhlIGJ1ZmZlciBpZiBpdCBpcyBub3QgYmVpbmcgcmVhZAorICAg
ICAgICBmcm9tIGJ5IHRoZSBHUFUgcHJvY2Vzcy4KKworICAgICAgICAqIFdlYlByb2Nlc3MvR1BV
L2dyYXBoaWNzL0Rpc3BsYXlMaXN0V3JpdGVySGFuZGxlLmg6IFJlbmFtZWQgZnJvbSBTb3VyY2Uv
V2ViS2l0L1NoYXJlZC9TaGFyZWREaXNwbGF5TGlzdEhhbmRsZS5jcHAuCisgICAgICAgIChXZWJL
aXQ6OkRpc3BsYXlMaXN0V3JpdGVySGFuZGxlOjpEaXNwbGF5TGlzdFdyaXRlckhhbmRsZSk6Cisg
ICAgICAgIChXZWJLaXQ6OkRpc3BsYXlMaXN0V3JpdGVySGFuZGxlOjp3cml0YWJsZU9mZnNldCBj
b25zdCk6CisKKyAgICAgICAgU2ltaWxhciB0byBgRGlzcGxheUxpc3RSZWFkZXJIYW5kbGVgLCBl
eGNlcHQgdGhhdCB0aGlzIGNvbnRhaW5zIGxvZ2ljIHNwZWNpZmljIHRvIHRoZSB3ZWIgcHJvY2Vz
cyBmb3Igd3JpdGluZworICAgICAgICBkaXNwbGF5IGxpc3QgaXRlbXMgaW50byBzaGFyZWQgbWVt
b3J5LiBBZHZhbmNpbmcgdGhlIGN1cnNvciBpbiBgRGlzcGxheUxpc3RXcml0ZXJIYW5kbGVgIGlu
Y3JlbWVudHMgdGhlIGNvdW50ZXIuCisgICAgICAgIEl0IGFsc28gaW5jcmVtZW50cyB0aGUgYHdy
aXRhYmxlT2Zmc2V0YCBvZiB0aGUgaGFuZGxlLCB3aGljaCByZXByZXNlbnRzIHRoZSBtaW5pbXVt
IG9mZnNldCBpbnRvIHRoZSBzaGFyZWQKKyAgICAgICAgYnVmZmVyIHRoYXQgbWF5IGNvbnRhaW4g
bmV3bHkgYXBwZW5kZWQgZGlzcGxheSBsaXN0IGl0ZW1zLgorCisgICAgICAgICogV2ViUHJvY2Vz
cy9HUFUvZ3JhcGhpY3MvUmVtb3RlSW1hZ2VCdWZmZXJQcm94eS5oOgorICAgICAgICAqIFdlYlBy
b2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS5jcHA6CisgICAg
ICAgIChXZWJLaXQ6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eTo6Zmx1c2hEaXNwbGF5TGlz
dCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eTo6dXBkYXRl
UmV1c2FibGVIYW5kbGVzKToKKworICAgICAgICBUaGlzIHByaXZhdGUgaGVscGVyIGl0ZXJhdGVz
IHRoZSBzZXQgb2YgYnVmZmVycyB0aGF0IGFyZSBub3QgY3VycmVudGx5IGJlaW5nIHdyaXR0ZW4g
dG8sIGFuZCBhZGRzIGVhY2ggb25lIHRvCisgICAgICAgIHRoZSByZXVzYWJsZSBidWZmZXIgcXVl
dWUgb25seSBpZiBpdHMgd3JpdGFibGUgb2Zmc2V0IGlzIGF0IHRoZSBzdGFydC4KKworICAgICAg
ICAoV2ViS2l0OjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHk6OmNyZWF0ZUl0ZW1CdWZmZXIp
OgorCisgICAgICAgIEltcGxlbWVudHMgbG9naWMgdGhhdCBoYW5kcyBzaGFyZWQgaXRlbSBidWZm
ZXIgZGF0YSBoYW5kbGVzIHRvIFdlYkNvcmUgZm9yIHdyaXRpbmcgZGlzcGxheSBsaXN0IGl0ZW1z
LiBUaGlzIHdpbGwKKyAgICAgICAgdHJ5IHRvIHJldXNlIGFuIGl0ZW0gYnVmZmVyIGluIHRoZSBy
ZXVzZSBxdWV1ZSwgaWYgcG9zc2libGUsIGFuZCBmYWxsIGJhY2sgdG8gYWxsb2NhdGluZyBhIG5l
dyBjaHVuayBvZiBzaGFyZWQKKyAgICAgICAgbWVtb3J5IGlmIG5vIHJldXNhYmxlIGJ1ZmZlciBp
cyBmb3VuZCAob3IgdGhlIGV4aXN0aW5nIGJ1ZmZlcnMgaGF2ZSBpbnN1ZmZpY2llbnQgY2FwYWNp
dHkpLiBUaGUgZmFjdCB0aGF0IHdlCisgICAgICAgIGl0ZXJhdGUgdGhyb3VnaCBlYWNoIHJldXNh
YmxlIGJ1ZmZlciBpbiBvcmRlciwgY29tYmluZWQgd2l0aCB0aGUgYWJvdmUgbG9naWMgaW4gYHVw
ZGF0ZVJldXNhYmxlSGFuZGxlc2AsIGVuc3VyZXMKKyAgICAgICAgdGhhdCBvbmNlIHdlIGJlZ2lu
IHdyaXRpbmcgdG8gYSBpdGVtIGJ1ZmZlciwgd2Ugd2lsbCBjb250aW51ZSB1c2luZyB0aGF0IGl0
ZW0gYnVmZmVyIHVudGlsIGl0IGV4aGF1c3RzIGF2YWlsYWJsZQorICAgICAgICBjYXBhY2l0eS4K
KworICAgICAgICBUaGlzIHByb3BlcnR5IGlzIGltcG9ydGFudCBiZWNhdXNlIGl0IGFsbG93cyB0
aGUgR1BVIHByb2Nlc3MgdG8gc2ltcGx5IHN0YXJ0IHJlYWRpbmcgaXRlbSBkYXRhIGZyb20gYSBn
aXZlbgorICAgICAgICBvZmZzZXQgYW5kIGJ1ZmZlciBJRCAoc3BlY2lmaWVkIGluIHRoZSBgV2Fr
ZVVwQW5kUHJvY2Vzc0Rpc3BsYXlMaXN0YCBJUEMgbWVzc2FnZSksIGFuZCBzZWFtbGVzc2x5IGNv
bnRpbnVlCisgICAgICAgIHJlYWRpbmcgZGF0YSBldmVuIGFmdGVyIGl0IGV4aGF1c3RzIGFsbCBh
dmFpbGFibGUgaXRlbSBkYXRhIGluIHRoZSBjdXJyZW50IGJ1ZmZlciBieSBjb250aW51aW5nIGZy
b20gdGhlIHN0YXJ0CisgICAgICAgIG9mIHRoZSBpdGVtIGJ1ZmZlciB0aGF0IGNvbnRhaW5zIHRo
ZSBuZXh0IGRpc3BsYXkgbGlzdCBpdGVtcyAod2hpY2ggd2UgbGVhcm4gaW4gdGhlIEdQVSBwcm9j
ZXNzIGJ5IGVuY291bnRlcmluZworICAgICAgICBhIGBTd2l0Y2hUb0J1ZmZlcmAgaXRlbSBhdCB0
aGUgZW5kIG9mIHRoZSBwcmV2aW91cyBidWZmZXIpLgorCisgICAgICAgIEluICJzdGVhZHkgc3Rh
dGUiICh3aGVyZWluIGJvdGggcHJvY2Vzc2VzIGFyZSBjb25jdXJyZW50bHkgd3JpdGluZyBhbmQg
cmVhZGluZyBpdGVtcyBhcyBxdWlja2x5IGFzIHBvc3NpYmxlKSwKKyAgICAgICAgdGhpcyBtZWFu
cyB0aGF0IGFzIHRoZSB3ZWIgcHJvY2VzcyBpcyBidXN5IGZpbGxpbmcgdXAgZWFjaCBpdGVtIGJ1
ZmZlciB3aXRoIGl0ZW0gZGF0YSwgdGhlIEdQVSBwcm9jZXNzIGlzIGFsc28KKyAgICAgICAgYnVz
eSBhcHBseWluZyBhbGwgdGhlIGl0ZW0gZGF0YSBpbiBvbmUgYnVmZmVyIGFuZCBhdXRvbWF0aWNh
bGx5IG1vdmluZyBvbiB0byB0aGUgbmV4dCBidWZmZXIgd2l0aCBubyBhZGRpdGlvbmFsCisgICAg
ICAgIElQQyBtZXNzYWdlcyByZXF1aXJlZC4KKworICAgICAgICAoV2ViS2l0OjpSZW1vdGVSZW5k
ZXJpbmdCYWNrZW5kUHJveHk6OmZsdXNoRGlzcGxheUxpc3RBbmRDb21taXQpOiBEZWxldGVkLgor
ICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQ
cm94eS5oOgorCiAyMDIwLTExLTA0ICBXZW5zb24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUu
Y29tPgogCiAgICAgICAgIEFkZCBhIGRpc3BsYXkgbGlzdCBpdGVtIHRvIHJlcHJlc2VudCBzdHJv
a2luZyBhIHNpbmdsZSBsaW5lCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mv
Z3JhcGhpY3MvRGlzcGxheUxpc3RSZWFkZXJIYW5kbGUuY3BwIGIvU291cmNlL1dlYktpdC9HUFVQ
cm9jZXNzL2dyYXBoaWNzL0Rpc3BsYXlMaXN0UmVhZGVySGFuZGxlLmNwcApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5l
ODYxOWM0M2YzNTQxNGM5ZmI2ODMwZDZmMjY4YzAyMmJiNTlkZjk0Ci0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL0Rpc3BsYXlMaXN0UmVhZGVySGFu
ZGxlLmNwcApAQCAtMCwwICsxLDQ0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycn
CisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwor
ICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICog
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5o
IgorI2luY2x1ZGUgIkRpc3BsYXlMaXN0UmVhZGVySGFuZGxlLmgiCisKK25hbWVzcGFjZSBXZWJL
aXQgewordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CisKK3ZvaWQgRGlzcGxheUxpc3RSZWFkZXJI
YW5kbGU6OmFkdmFuY2Uoc2l6ZV90IGFtb3VudCkKK3sKKyAgICB1bnJlYWRCeXRlc0hhbmRsZSgp
IC09IGFtb3VudDsKK30KKworc3RkOjp1bmlxdWVfcHRyPERpc3BsYXlMaXN0OjpEaXNwbGF5TGlz
dD4gRGlzcGxheUxpc3RSZWFkZXJIYW5kbGU6OmNyZWF0ZURpc3BsYXlMaXN0KHNpemVfdCBvZmZz
ZXQsIHNpemVfdCBjYXBhY2l0eSwgRGlzcGxheUxpc3Q6Okl0ZW1CdWZmZXJSZWFkaW5nQ2xpZW50
JiBjbGllbnQpIGNvbnN0Cit7CisgICAgYXV0byBkaXNwbGF5TGlzdCA9IG1ha2VVbmlxdWU8RGlz
cGxheUxpc3Q6OkRpc3BsYXlMaXN0PihEaXNwbGF5TGlzdDo6SXRlbUJ1ZmZlckhhbmRsZXMge3sg
aWRlbnRpZmllcigpLCBkYXRhKCkgKyBvZmZzZXQsIGNhcGFjaXR5IH19KTsKKyAgICBkaXNwbGF5
TGlzdC0+c2V0SXRlbUJ1ZmZlckNsaWVudCgmY2xpZW50KTsKKyAgICByZXR1cm4gZGlzcGxheUxp
c3Q7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9HUFVQcm9jZXNzL2dyYXBoaWNzL0Rpc3BsYXlMaXN0UmVhZGVySGFuZGxlLmggYi9Tb3VyY2Uv
V2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvRGlzcGxheUxpc3RSZWFkZXJIYW5kbGUuaApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi41ZjNiYjk5ZTFjNjVhZTdhNmE0YjNiMjc3MjgwMDg0MzA2MTA4Yzg5Ci0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL0Rpc3BsYXlMaXN0
UmVhZGVySGFuZGxlLmgKQEAgLTAsMCArMSw0NSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAy
MCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBg
QVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklC
VVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25j
ZQorCisjaW5jbHVkZSAiU2hhcmVkRGlzcGxheUxpc3RIYW5kbGUuaCIKKyNpbmNsdWRlIDx3dGYv
RmFzdE1hbGxvYy5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3MgRGlzcGxheUxpc3RS
ZWFkZXJIYW5kbGUgOiBwdWJsaWMgU2hhcmVkRGlzcGxheUxpc3RIYW5kbGUgeworICAgIFdURl9N
QUtFX05PTkNPUFlBQkxFKERpc3BsYXlMaXN0UmVhZGVySGFuZGxlKTsgV1RGX01BS0VfRkFTVF9B
TExPQ0FURUQ7CitwdWJsaWM6CisgICAgRGlzcGxheUxpc3RSZWFkZXJIYW5kbGUoV2ViQ29yZTo6
RGlzcGxheUxpc3Q6Okl0ZW1CdWZmZXJJZGVudGlmaWVyIGlkZW50aWZpZXIsIFJlZjxTaGFyZWRN
ZW1vcnk+JiYgc2hhcmVkTWVtb3J5KQorICAgICAgICA6IFNoYXJlZERpc3BsYXlMaXN0SGFuZGxl
KGlkZW50aWZpZXIsIFdURk1vdmUoc2hhcmVkTWVtb3J5KSkKKyAgICB7CisgICAgfQorCisgICAg
dm9pZCBhZHZhbmNlKHNpemVfdCBhbW91bnQpIG92ZXJyaWRlOworICAgIHN0ZDo6dW5pcXVlX3B0
cjxXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RGlzcGxheUxpc3Q+IGNyZWF0ZURpc3BsYXlMaXN0KHNp
emVfdCBvZmZzZXQsIHNpemVfdCBjYXBhY2l0eSwgV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1C
dWZmZXJSZWFkaW5nQ2xpZW50JikgY29uc3Q7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVJbWFn
ZUJ1ZmZlci5oIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUltYWdl
QnVmZmVyLmgKaW5kZXggMjUyNWU1NDUxYjk0NzZjMGVmMzZhODZlNmMyNjgxZDg1MGJjODQ1MC4u
ZGE2MmJlZjNlZDk1MzFmNjgxNGRiODM3M2JhNzc0YTMzZTU5NzRlNiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUltYWdlQnVmZmVyLmgKKysrIGIv
U291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUltYWdlQnVmZmVyLmgKQEAg
LTUyLDYgKzUyLDcgQEAgcHVibGljOgogICAgIFJlbW90ZUltYWdlQnVmZmVyKHN0ZDo6dW5pcXVl
X3B0cjxCYWNrZW5kVHlwZT4mJiBiYWNrZW5kLCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kJiByZW1v
dGVSZW5kZXJpbmdCYWNrZW5kLCBXZWJDb3JlOjpSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIg
cmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKQogICAgICAgICA6IEJhc2VDb25jcmV0ZUltYWdl
QnVmZmVyKFdURk1vdmUoYmFja2VuZCkpCiAgICAgICAgICwgbV9yZW1vdGVSZW5kZXJpbmdCYWNr
ZW5kKHJlbW90ZVJlbmRlcmluZ0JhY2tlbmQpCisgICAgICAgICwgbV9yZW5kZXJpbmdSZXNvdXJj
ZUlkZW50aWZpZXIocmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKQogICAgIHsKICAgICAgICAg
bV9yZW1vdGVSZW5kZXJpbmdCYWNrZW5kLmltYWdlQnVmZmVyQmFja2VuZFdhc0NyZWF0ZWQobV9i
YWNrZW5kLT5sb2dpY2FsU2l6ZSgpLCBtX2JhY2tlbmQtPmJhY2tlbmRTaXplKCksIG1fYmFja2Vu
ZC0+cmVzb2x1dGlvblNjYWxlKCksIG1fYmFja2VuZC0+Y29sb3JTcGFjZSgpLCBtX2JhY2tlbmQt
PmNyZWF0ZUltYWdlQnVmZmVyQmFja2VuZEhhbmRsZSgpLCByZW5kZXJpbmdSZXNvdXJjZUlkZW50
aWZpZXIpOwogICAgIH0KQEAgLTgyLDEyICs4MywxNSBAQCBwcml2YXRlOgogICAgICAgICB9CiAK
ICAgICAgICAgaWYgKGl0ZW0uaXM8V2ViQ29yZTo6RGlzcGxheUxpc3Q6OkZsdXNoQ29udGV4dD4o
KSkgewotICAgICAgICAgICAgLy8gRklYTUU6IE5vdCBpbXBsZW1lbnRlZCB5ZXQuCisgICAgICAg
ICAgICBCYXNlQ29uY3JldGVJbWFnZUJ1ZmZlcjo6Zmx1c2hDb250ZXh0KCk7CisgICAgICAgICAg
ICBhdXRvIGlkZW50aWZpZXIgPSBpdGVtLmdldDxXZWJDb3JlOjpEaXNwbGF5TGlzdDo6Rmx1c2hD
b250ZXh0PigpLmlkZW50aWZpZXIoKTsKKyAgICAgICAgICAgIG1fcmVtb3RlUmVuZGVyaW5nQmFj
a2VuZC5mbHVzaERpc3BsYXlMaXN0V2FzQ29tbWl0dGVkKGlkZW50aWZpZXIsIG1fcmVuZGVyaW5n
UmVzb3VyY2VJZGVudGlmaWVyKTsKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICB9
CiAKICAgICAgICAgaWYgKGl0ZW0uaXM8V2ViQ29yZTo6RGlzcGxheUxpc3Q6OlN3aXRjaFRvQnVm
ZmVyPigpKSB7Ci0gICAgICAgICAgICAvLyBGSVhNRTogTm90IGltcGxlbWVudGVkIHlldC4KKyAg
ICAgICAgICAgIGF1dG8gbmV4dEJ1ZmZlcklkZW50aWZpZXIgPSBpdGVtLmdldDxXZWJDb3JlOjpE
aXNwbGF5TGlzdDo6U3dpdGNoVG9CdWZmZXI+KCkuaWRlbnRpZmllcigpOworICAgICAgICAgICAg
bV9yZW1vdGVSZW5kZXJpbmdCYWNrZW5kLnNldE5leHRJdGVtQnVmZmVyVG9SZWFkKG5leHRCdWZm
ZXJJZGVudGlmaWVyKTsKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICB9CiAKQEAg
LTIxMCw2ICsyMTQsNyBAQCBwcml2YXRlOgogICAgIH0KIAogICAgIFJlbW90ZVJlbmRlcmluZ0Jh
Y2tlbmQmIG1fcmVtb3RlUmVuZGVyaW5nQmFja2VuZDsKKyAgICBXZWJDb3JlOjpSZW5kZXJpbmdS
ZXNvdXJjZUlkZW50aWZpZXIgbV9yZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXI7CiB9OwogCiB9
IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vz
cy9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kLmNwcCBiL1NvdXJjZS9XZWJLaXQvR1BV
UHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kLmNwcAppbmRleCAxYjNiMmVj
ZGZiNWQxOWQzMWEyNTcwYmIyZWM0MTY1MDQxMGE4ZmRjLi41NDRiM2VjNWZjZTlkN2Y1MjhlMmQx
ZWJiOTkwYjUyM2VlNGY4YjZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mv
Z3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9H
UFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQuY3BwCkBAIC0yOCw2ICsy
OCw3IEBACiAKICNpZiBFTkFCTEUoR1BVX1BST0NFU1MpCiAKKyNpbmNsdWRlICJEaXNwbGF5TGlz
dFJlYWRlckhhbmRsZS5oIgogI2luY2x1ZGUgIkdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaCIK
ICNpbmNsdWRlICJQbGF0Zm9ybVJlbW90ZUltYWdlQnVmZmVyLmgiCiAjaW5jbHVkZSAiUmVtb3Rl
UmVuZGVyaW5nQmFja2VuZE1lc3NhZ2VzLmgiCkBAIC0xMzksNDUgKzE0MCw3MyBAQCB2b2lkIFJl
bW90ZVJlbmRlcmluZ0JhY2tlbmQ6OmNyZWF0ZUltYWdlQnVmZmVyKGNvbnN0IEZsb2F0U2l6ZSYg
bG9naWNhbFNpemUsIFJlbgogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogfQogCi12b2lkIFJl
bW90ZVJlbmRlcmluZ0JhY2tlbmQ6OmFwcGx5RGlzcGxheUxpc3QoY29uc3QgU2hhcmVkRGlzcGxh
eUxpc3RIYW5kbGUmIGhhbmRsZSwgUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyIHJlbmRlcmlu
Z1Jlc291cmNlSWRlbnRpZmllciwgU2hvdWxkRmx1c2hDb250ZXh0IGZsdXNoQ29udGV4dCkKK3Zv
aWQgUmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6d2FrZVVwQW5kUHJvY2Vzc0Rpc3BsYXlMaXN0KFdl
YkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtQnVmZmVySWRlbnRpZmllciBpbml0aWFsSWRlbnRpZmll
ciwgc2l6ZV90IGluaXRpYWxPZmZzZXQsIFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciByZW5k
ZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpCiB7Ci0gICAgYXV0byBkaXNwbGF5TGlzdCA9IGhhbmRs
ZS5jcmVhdGVEaXNwbGF5TGlzdChbJl0gKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtQnVmZmVy
SWRlbnRpZmllciBpZGVudGlmaWVyKSAtPiB1aW50OF90KiB7Ci0gICAgICAgIGlmIChhdXRvIHNo
YXJlZE1lbW9yeSA9IG1fc2hhcmVkSXRlbUJ1ZmZlcnMudGFrZShpZGVudGlmaWVyKSkKLSAgICAg
ICAgICAgIHJldHVybiByZWludGVycHJldF9jYXN0PHVpbnQ4X3QqPihzaGFyZWRNZW1vcnktPmRh
dGEoKSk7Ci0gICAgICAgIHJldHVybiBudWxscHRyOwotICAgIH0pOwotCi0gICAgaWYgKCFkaXNw
bGF5TGlzdCkgeworICAgIGF1dG8gaW1hZ2VCdWZmZXIgPSBtX3JlbW90ZVJlc291cmNlQ2FjaGUu
Y2FjaGVkSW1hZ2VCdWZmZXIocmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKTsKKyAgICBpZiAo
IWltYWdlQnVmZmVyKSB7CiAgICAgICAgIC8vIEZJWE1FOiBBZGQgYSBtZXNzYWdlIGNoZWNrIHRv
IHRlcm1pbmF0ZSB0aGUgd2ViIHByb2Nlc3MuCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAg
ICBhdXRvIGltYWdlQnVmZmVyID0gbV9yZW1vdGVSZXNvdXJjZUNhY2hlLmNhY2hlZEltYWdlQnVm
ZmVyKHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcik7Ci0gICAgaWYgKCFpbWFnZUJ1ZmZlcikg
eworICAgIGF1dG8qIHNoYXJlZEhhbmRsZSA9IG1fc2hhcmVkRGlzcGxheUxpc3RIYW5kbGVzLmdl
dChpbml0aWFsSWRlbnRpZmllcik7CisgICAgaWYgKCFzaGFyZWRIYW5kbGUpIHsKICAgICAgICAg
Ly8gRklYTUU6IEFkZCBhIG1lc3NhZ2UgY2hlY2sgdG8gdGVybWluYXRlIHRoZSB3ZWIgcHJvY2Vz
cy4KICAgICAgICAgcmV0dXJuOwogICAgIH0KIAorICAgIERpc3BsYXlMaXN0OjpJdGVtQnVmZmVy
UmVhZGluZ0NsaWVudCogaXRlbUJ1ZmZlckNsaWVudDsKICAgICBpZiAoaW1hZ2VCdWZmZXItPmlz
QWNjZWxlcmF0ZWQoKSkKLSAgICAgICAgZGlzcGxheUxpc3QtPnNldEl0ZW1CdWZmZXJDbGllbnQo
c3RhdGljX2Nhc3Q8QWNjZWxlcmF0ZWRSZW1vdGVJbWFnZUJ1ZmZlcio+KGltYWdlQnVmZmVyKSk7
CisgICAgICAgIGl0ZW1CdWZmZXJDbGllbnQgPSBzdGF0aWNfY2FzdDxBY2NlbGVyYXRlZFJlbW90
ZUltYWdlQnVmZmVyKj4oaW1hZ2VCdWZmZXIpOwogICAgIGVsc2UKLSAgICAgICAgZGlzcGxheUxp
c3QtPnNldEl0ZW1CdWZmZXJDbGllbnQoc3RhdGljX2Nhc3Q8VW5hY2NlbGVyYXRlZFJlbW90ZUlt
YWdlQnVmZmVyKj4oaW1hZ2VCdWZmZXIpKTsKKyAgICAgICAgaXRlbUJ1ZmZlckNsaWVudCA9IHN0
YXRpY19jYXN0PFVuYWNjZWxlcmF0ZWRSZW1vdGVJbWFnZUJ1ZmZlcio+KGltYWdlQnVmZmVyKTsK
IAotICAgIGltYWdlQnVmZmVyLT5mbHVzaERpc3BsYXlMaXN0KCpkaXNwbGF5TGlzdCk7CisgICAg
c2l6ZV90IG9mZnNldCA9IGluaXRpYWxPZmZzZXQ7CisgICAgc2l6ZV90IHNpemVUb1JlYWQgPSAw
OwogCi0gICAgaWYgKGZsdXNoQ29udGV4dCA9PSBTaG91bGRGbHVzaENvbnRleHQ6OlllcykKLSAg
ICAgICAgaW1hZ2VCdWZmZXItPmZsdXNoQ29udGV4dCgpOwotfQorICAgIHsKKyAgICAgICAgU2hh
cmVkRGlzcGxheUxpc3RIYW5kbGU6OkxvY2sgbG9ja2VyIHsgKnNoYXJlZEhhbmRsZSB9OworICAg
ICAgICBzaXplVG9SZWFkID0gc2hhcmVkSGFuZGxlLT51bnJlYWRCeXRlcygpOworICAgIH0KIAot
dm9pZCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpmbHVzaERpc3BsYXlMaXN0KGNvbnN0IFNoYXJl
ZERpc3BsYXlMaXN0SGFuZGxlJiBoYW5kbGUsIFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciBy
ZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpCi17Ci0gICAgYXBwbHlEaXNwbGF5TGlzdChoYW5k
bGUsIHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciwgU2hvdWxkRmx1c2hDb250ZXh0OjpObyk7
CisgICAgd2hpbGUgKHNpemVUb1JlYWQpIHsKKyAgICAgICAgaW1hZ2VCdWZmZXItPmZsdXNoRGlz
cGxheUxpc3QoKnNoYXJlZEhhbmRsZS0+Y3JlYXRlRGlzcGxheUxpc3Qob2Zmc2V0LCBzaXplVG9S
ZWFkLCAqaXRlbUJ1ZmZlckNsaWVudCkpOworCisgICAgICAgIG9mZnNldCArPSBzaXplVG9SZWFk
OworICAgICAgICB7CisgICAgICAgICAgICBTaGFyZWREaXNwbGF5TGlzdEhhbmRsZTo6TG9jayBs
b2NrZXIgeyAqc2hhcmVkSGFuZGxlIH07CisgICAgICAgICAgICBzaGFyZWRIYW5kbGUtPmFkdmFu
Y2Uoc2l6ZVRvUmVhZCk7CisgICAgICAgICAgICBzaXplVG9SZWFkID0gc2hhcmVkSGFuZGxlLT51
bnJlYWRCeXRlcygpOworICAgICAgICB9CisgICAgICAgIGlmIChzaXplVG9SZWFkKQorICAgICAg
ICAgICAgY29udGludWU7CisKKyAgICAgICAgYXV0byBuZXh0SWRlbnRpZmllciA9IHN0ZDo6ZXhj
aGFuZ2UobV9uZXh0SXRlbUJ1ZmZlclRvUmVhZCwgeyB9KTsKKyAgICAgICAgaWYgKCFuZXh0SWRl
bnRpZmllcikKKyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgIHNoYXJlZEhhbmRsZSA9IG1f
c2hhcmVkRGlzcGxheUxpc3RIYW5kbGVzLmdldChuZXh0SWRlbnRpZmllcik7CisgICAgICAgIGlm
ICghc2hhcmVkSGFuZGxlKSB7CisgICAgICAgICAgICBtX25leHRJdGVtQnVmZmVyVG9SZWFkID0g
bmV4dElkZW50aWZpZXI7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorCisgICAgICAg
IG9mZnNldCA9IFNoYXJlZERpc3BsYXlMaXN0SGFuZGxlOjpyZXNlcnZlZENhcGFjaXR5QXRTdGFy
dDsKKworICAgICAgICBkbyB7CisgICAgICAgICAgICBTaGFyZWREaXNwbGF5TGlzdEhhbmRsZTo6
TG9jayBuZXh0QnVmZmVyTG9ja2VyIHsgKnNoYXJlZEhhbmRsZSB9OworICAgICAgICAgICAgc2l6
ZVRvUmVhZCA9IHNoYXJlZEhhbmRsZS0+dW5yZWFkQnl0ZXMoKTsKKyAgICAgICAgICAgIHN0ZDo6
dGhpc190aHJlYWQ6OnlpZWxkKCk7CisgICAgICAgIH0gd2hpbGUgKCFzaXplVG9SZWFkKTsKKyAg
ICB9CiB9CiAKLXZvaWQgUmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6Zmx1c2hEaXNwbGF5TGlzdEFu
ZENvbW1pdChjb25zdCBTaGFyZWREaXNwbGF5TGlzdEhhbmRsZSYgaGFuZGxlLCBEaXNwbGF5TGlz
dDo6Rmx1c2hJZGVudGlmaWVyIGZsdXNoSWRlbnRpZmllciwgUmVuZGVyaW5nUmVzb3VyY2VJZGVu
dGlmaWVyIHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcikKK3ZvaWQgUmVtb3RlUmVuZGVyaW5n
QmFja2VuZDo6c2V0TmV4dEl0ZW1CdWZmZXJUb1JlYWQoV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0
ZW1CdWZmZXJJZGVudGlmaWVyIGlkZW50aWZpZXIpCiB7Ci0gICAgYXBwbHlEaXNwbGF5TGlzdCho
YW5kbGUsIHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciwgU2hvdWxkRmx1c2hDb250ZXh0OjpZ
ZXMpOwotICAgIGZsdXNoRGlzcGxheUxpc3RXYXNDb21taXR0ZWQoZmx1c2hJZGVudGlmaWVyLCBy
ZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpOworICAgIGlmIChVTkxJS0VMWShtX25leHRJdGVt
QnVmZmVyVG9SZWFkKSkgeworICAgICAgICAvLyBGSVhNRTogQWRkIGEgbWVzc2FnZSBjaGVjayB0
byB0ZXJtaW5hdGUgdGhlIHdlYiBwcm9jZXNzLgorICAgICAgICByZXR1cm47CisgICAgfQorICAg
IG1fbmV4dEl0ZW1CdWZmZXJUb1JlYWQgPSBpZGVudGlmaWVyOwogfQogCiB2b2lkIFJlbW90ZVJl
bmRlcmluZ0JhY2tlbmQ6OmdldEltYWdlRGF0YShBbHBoYVByZW11bHRpcGxpY2F0aW9uIG91dHB1
dEZvcm1hdCwgSW50UmVjdCBzcmNSZWN0LCBSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgcmVu
ZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKElQQzo6SW1h
Z2VEYXRhUmVmZXJlbmNlJiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQpAQCAtMTkzLDEwICsyMjIs
MTUgQEAgdm9pZCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpyZWxlYXNlUmVtb3RlUmVzb3VyY2Uo
UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyIHIKICAgICBtX3JlbW90ZVJlc291cmNlQ2FjaGUu
cmVsZWFzZVJlbW90ZVJlc291cmNlKHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcik7CiB9CiAK
LXZvaWQgUmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6ZGlkQ3JlYXRlU2hhcmVkSXRlbURhdGEoRGlz
cGxheUxpc3Q6Okl0ZW1CdWZmZXJJZGVudGlmaWVyIGlkZW50aWZpZXIsIGNvbnN0IFNoYXJlZE1l
bW9yeTo6SVBDSGFuZGxlJiBoYW5kbGUpCit2b2lkIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OmRp
ZENyZWF0ZVNoYXJlZERpc3BsYXlMaXN0SGFuZGxlKERpc3BsYXlMaXN0OjpJdGVtQnVmZmVySWRl
bnRpZmllciBpZGVudGlmaWVyLCBjb25zdCBTaGFyZWRNZW1vcnk6OklQQ0hhbmRsZSYgaGFuZGxl
LCBSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgcmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyKQog
ewotICAgIGlmIChhdXRvIHNoYXJlZE1lbW9yeSA9IFNoYXJlZE1lbW9yeTo6bWFwKGhhbmRsZS5o
YW5kbGUsIFNoYXJlZE1lbW9yeTo6UHJvdGVjdGlvbjo6UmVhZE9ubHkpKQotICAgICAgICBtX3No
YXJlZEl0ZW1CdWZmZXJzLnNldChpZGVudGlmaWVyLCBXVEZNb3ZlKHNoYXJlZE1lbW9yeSkpOwor
ICAgIGlmIChhdXRvIHNoYXJlZE1lbW9yeSA9IFNoYXJlZE1lbW9yeTo6bWFwKGhhbmRsZS5oYW5k
bGUsIFNoYXJlZE1lbW9yeTo6UHJvdGVjdGlvbjo6UmVhZFdyaXRlKSkKKyAgICAgICAgbV9zaGFy
ZWREaXNwbGF5TGlzdEhhbmRsZXMuc2V0KGlkZW50aWZpZXIsIG1ha2VVbmlxdWU8RGlzcGxheUxp
c3RSZWFkZXJIYW5kbGU+KGlkZW50aWZpZXIsIHNoYXJlZE1lbW9yeS5yZWxlYXNlTm9uTnVsbCgp
KSk7CisKKyAgICBpZiAobV9uZXh0SXRlbUJ1ZmZlclRvUmVhZCA9PSBpZGVudGlmaWVyKSB7Cisg
ICAgICAgIG1fbmV4dEl0ZW1CdWZmZXJUb1JlYWQgPSB7IH07CisgICAgICAgIHdha2VVcEFuZFBy
b2Nlc3NEaXNwbGF5TGlzdChpZGVudGlmaWVyLCBTaGFyZWREaXNwbGF5TGlzdEhhbmRsZTo6cmVz
ZXJ2ZWRDYXBhY2l0eUF0U3RhcnQsIHJlbW90ZVJlc291cmNlSWRlbnRpZmllcik7CisgICAgfQog
fQogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BV
UHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kLmggYi9Tb3VyY2UvV2ViS2l0
L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5oCmluZGV4IDU1MzQ4
YWI1MDkzNTliOGU3ZTE5MDExODFmMjY4MDFiZjIwMjg0ZTYuLjRlMDRiNjdmM2IxZGJkMmI1YmEz
ZTc2YjY1NWRjYTY5ZmVlZjdjYTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vz
cy9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kLmgKKysrIGIvU291cmNlL1dlYktpdC9H
UFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQuaApAQCAtMzQsNyArMzQs
NiBAQAogI2luY2x1ZGUgIk1lc3NhZ2VTZW5kZXIuaCIKICNpbmNsdWRlICJSZW1vdGVSZXNvdXJj
ZUNhY2hlLmgiCiAjaW5jbHVkZSAiUmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXIuaCIKLSNpbmNs
dWRlICJTaGFyZWREaXNwbGF5TGlzdEhhbmRsZS5oIgogI2luY2x1ZGUgPFdlYkNvcmUvQ29sb3JT
cGFjZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRGlzcGxheUxpc3QuaD4KICNpbmNsdWRlIDxXZWJD
b3JlL0Rpc3BsYXlMaXN0SXRlbXMuaD4KQEAgLTUyLDYgKzUxLDcgQEAgZW51bSBjbGFzcyBSZW5k
ZXJpbmdNb2RlIDogYm9vbDsKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKK2NsYXNzIERpc3BsYXlM
aXN0UmVhZGVySGFuZGxlOwogY2xhc3MgR1BVQ29ubmVjdGlvblRvV2ViUHJvY2VzczsKIAogY2xh
c3MgUmVtb3RlUmVuZGVyaW5nQmFja2VuZApAQCAtNzEsMTIgKzcxLDExIEBAIHB1YmxpYzoKICAg
ICB2b2lkIGltYWdlQnVmZmVyQmFja2VuZFdhc0NyZWF0ZWQoY29uc3QgV2ViQ29yZTo6RmxvYXRT
aXplJiBsb2dpY2FsU2l6ZSwgY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYgYmFja2VuZFNpemUsIGZs
b2F0IHJlc29sdXRpb25TY2FsZSwgV2ViQ29yZTo6Q29sb3JTcGFjZSwgSW1hZ2VCdWZmZXJCYWNr
ZW5kSGFuZGxlLCBXZWJDb3JlOjpSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpOwogICAgIHZv
aWQgZmx1c2hEaXNwbGF5TGlzdFdhc0NvbW1pdHRlZChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6Rmx1
c2hJZGVudGlmaWVyLCBXZWJDb3JlOjpSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpOwogCisg
ICAgdm9pZCBzZXROZXh0SXRlbUJ1ZmZlclRvUmVhZChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRl
bUJ1ZmZlcklkZW50aWZpZXIpOworCiBwcml2YXRlOgogICAgIFJlbW90ZVJlbmRlcmluZ0JhY2tl
bmQoR1BVQ29ubmVjdGlvblRvV2ViUHJvY2VzcyYsIFJlbmRlcmluZ0JhY2tlbmRJZGVudGlmaWVy
KTsKIAotICAgIGVudW0gY2xhc3MgU2hvdWxkRmx1c2hDb250ZXh0IDogYm9vbCB7IE5vLCBZZXMg
fTsKLSAgICB2b2lkIGFwcGx5RGlzcGxheUxpc3QoY29uc3QgU2hhcmVkRGlzcGxheUxpc3RIYW5k
bGUmLCBXZWJDb3JlOjpSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIsIFNob3VsZEZsdXNoQ29u
dGV4dCk7Ci0KICAgICAvLyBJUEM6Ok1lc3NhZ2VTZW5kZXIuCiAgICAgSVBDOjpDb25uZWN0aW9u
KiBtZXNzYWdlU2VuZGVyQ29ubmVjdGlvbigpIGNvbnN0IG92ZXJyaWRlOwogICAgIHVpbnQ2NF90
IG1lc3NhZ2VTZW5kZXJEZXN0aW5hdGlvbklEKCkgY29uc3Qgb3ZlcnJpZGU7CkBAIC04NywxNiAr
ODYsMTYgQEAgcHJpdmF0ZToKIAogICAgIC8vIE1lc3NhZ2VzIHRvIGJlIHJlY2VpdmVkLgogICAg
IHZvaWQgY3JlYXRlSW1hZ2VCdWZmZXIoY29uc3QgV2ViQ29yZTo6RmxvYXRTaXplJiBsb2dpY2Fs
U2l6ZSwgV2ViQ29yZTo6UmVuZGVyaW5nTW9kZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBXZWJD
b3JlOjpDb2xvclNwYWNlLCBXZWJDb3JlOjpSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpOwot
ICAgIHZvaWQgZmx1c2hEaXNwbGF5TGlzdChjb25zdCBTaGFyZWREaXNwbGF5TGlzdEhhbmRsZSYs
IFdlYkNvcmU6OlJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcik7Ci0gICAgdm9pZCBmbHVzaERp
c3BsYXlMaXN0QW5kQ29tbWl0KGNvbnN0IFNoYXJlZERpc3BsYXlMaXN0SGFuZGxlJiwgV2ViQ29y
ZTo6RGlzcGxheUxpc3Q6OkZsdXNoSWRlbnRpZmllciwgV2ViQ29yZTo6UmVuZGVyaW5nUmVzb3Vy
Y2VJZGVudGlmaWVyKTsKKyAgICB2b2lkIHdha2VVcEFuZFByb2Nlc3NEaXNwbGF5TGlzdChXZWJD
b3JlOjpEaXNwbGF5TGlzdDo6SXRlbUJ1ZmZlcklkZW50aWZpZXIgaW5pdGlhbElkZW50aWZpZXIs
IHNpemVfdCBpbml0aWFsT2Zmc2V0LCBXZWJDb3JlOjpSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZp
ZXIpOwogICAgIHZvaWQgZ2V0SW1hZ2VEYXRhKFdlYkNvcmU6OkFscGhhUHJlbXVsdGlwbGljYXRp
b24gb3V0cHV0Rm9ybWF0LCBXZWJDb3JlOjpJbnRSZWN0IHNyY1JlY3QsIFdlYkNvcmU6OlJlbmRl
cmluZ1Jlc291cmNlSWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChJUEM6OkltYWdl
RGF0YVJlZmVyZW5jZSYmKT4mJik7CiAgICAgdm9pZCByZWxlYXNlUmVtb3RlUmVzb3VyY2UoV2Vi
Q29yZTo6UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKTsKLSAgICB2b2lkIGRpZENyZWF0ZVNo
YXJlZEl0ZW1EYXRhKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtQnVmZmVySWRlbnRpZmllciwg
Y29uc3QgU2hhcmVkTWVtb3J5OjpJUENIYW5kbGUmKTsKKyAgICB2b2lkIGRpZENyZWF0ZVNoYXJl
ZERpc3BsYXlMaXN0SGFuZGxlKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtQnVmZmVySWRlbnRp
ZmllciwgY29uc3QgU2hhcmVkTWVtb3J5OjpJUENIYW5kbGUmLCBXZWJDb3JlOjpSZW5kZXJpbmdS
ZXNvdXJjZUlkZW50aWZpZXIpOwogCiAgICAgUmVtb3RlUmVzb3VyY2VDYWNoZSBtX3JlbW90ZVJl
c291cmNlQ2FjaGU7CiAgICAgV2Vha1B0cjxHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzPiBtX2dw
dUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M7CiAgICAgUmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXIg
bV9yZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllcjsKLSAgICBIYXNoTWFwPFdlYkNvcmU6OkRpc3Bs
YXlMaXN0OjpJdGVtQnVmZmVySWRlbnRpZmllciwgUmVmUHRyPFNoYXJlZE1lbW9yeT4+IG1fc2hh
cmVkSXRlbUJ1ZmZlcnM7CisgICAgSGFzaE1hcDxXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbUJ1
ZmZlcklkZW50aWZpZXIsIHN0ZDo6dW5pcXVlX3B0cjxEaXNwbGF5TGlzdFJlYWRlckhhbmRsZT4+
IG1fc2hhcmVkRGlzcGxheUxpc3RIYW5kbGVzOworICAgIFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJ
dGVtQnVmZmVySWRlbnRpZmllciBtX25leHRJdGVtQnVmZmVyVG9SZWFkOwogfTsKIAogfSAvLyBu
YW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3Jh
cGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQv
R1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kLm1lc3NhZ2VzLmluCmlu
ZGV4IDE4Nzg1YWRjMGZkMWI2MjAzZTUxMTQyYTk0NjQ2NzVmYmE0YTE3OTMuLjczMTFjNjZiYmIx
NmI4ZmEwOGZiMmMwYjkwMjRhOTY2NTg4NjBkZDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
R1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kLm1lc3NhZ2VzLmluCisr
KyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNr
ZW5kLm1lc3NhZ2VzLmluCkBAIC0yNCwxMCArMjQsOSBAQAogCiBtZXNzYWdlcyAtPiBSZW1vdGVS
ZW5kZXJpbmdCYWNrZW5kIE5vdFJlZkNvdW50ZWQgewogICAgIENyZWF0ZUltYWdlQnVmZmVyKFdl
YkNvcmU6OkZsb2F0U2l6ZSBsb2dpY2FsU2l6ZSwgV2ViQ29yZTo6UmVuZGVyaW5nTW9kZSByZW5k
ZXJpbmdNb2RlLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIFdlYkNvcmU6OkNvbG9yU3BhY2UgY29s
b3JTcGFjZSwgV2ViQ29yZTo6UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyIHJlbmRlcmluZ1Jl
c291cmNlSWRlbnRpZmllcikKLSAgICBGbHVzaERpc3BsYXlMaXN0KFdlYktpdDo6U2hhcmVkRGlz
cGxheUxpc3RIYW5kbGUgZGlzcGxheUxpc3QsIFdlYkNvcmU6OlJlbmRlcmluZ1Jlc291cmNlSWRl
bnRpZmllciByZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpCi0gICAgRmx1c2hEaXNwbGF5TGlz
dEFuZENvbW1pdChXZWJLaXQ6OlNoYXJlZERpc3BsYXlMaXN0SGFuZGxlIGRpc3BsYXlMaXN0LCBX
ZWJDb3JlOjpEaXNwbGF5TGlzdDo6Rmx1c2hJZGVudGlmaWVyIGZsdXNoSWRlbnRpZmllciwgV2Vi
Q29yZTo6UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyIHJlbmRlcmluZ1Jlc291cmNlSWRlbnRp
ZmllcikKKyAgICBXYWtlVXBBbmRQcm9jZXNzRGlzcGxheUxpc3QoV2ViQ29yZTo6RGlzcGxheUxp
c3Q6Okl0ZW1CdWZmZXJJZGVudGlmaWVyIGluaXRpYWxJZGVudGlmaWVyLCBzaXplX3QgaW5pdGlh
bE9mZnNldCwgV2ViQ29yZTo6UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyIHJlbmRlcmluZ1Jl
c291cmNlSWRlbnRpZmllcikKICAgICBHZXRJbWFnZURhdGEoZW51bTp1aW50OF90IFdlYkNvcmU6
OkFscGhhUHJlbXVsdGlwbGljYXRpb24gb3V0cHV0Rm9ybWF0LCBXZWJDb3JlOjpJbnRSZWN0IHNy
Y1JlY3QsIFdlYkNvcmU6OlJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciByZW5kZXJpbmdSZXNv
dXJjZUlkZW50aWZpZXIpIC0+IChJUEM6OkltYWdlRGF0YVJlZmVyZW5jZSBpbWFnZURhdGEpIFN5
bmNocm9ub3VzCi0gICAgRGlkQ3JlYXRlU2hhcmVkSXRlbURhdGEoV2ViQ29yZTo6RGlzcGxheUxp
c3Q6Okl0ZW1CdWZmZXJJZGVudGlmaWVyIGlkZW50aWZpZXIsIFdlYktpdDo6U2hhcmVkTWVtb3J5
OjpJUENIYW5kbGUgaGFuZGxlKQorICAgIERpZENyZWF0ZVNoYXJlZERpc3BsYXlMaXN0SGFuZGxl
KFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtQnVmZmVySWRlbnRpZmllciBpZGVudGlmaWVyLCBX
ZWJLaXQ6OlNoYXJlZE1lbW9yeTo6SVBDSGFuZGxlIGhhbmRsZSwgV2ViQ29yZTo6UmVuZGVyaW5n
UmVzb3VyY2VJZGVudGlmaWVyIHJlbW90ZVJlc291cmNlSWRlbnRpZmllcikKICAgICBSZWxlYXNl
UmVtb3RlUmVzb3VyY2UoV2ViQ29yZTo6UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyIHJlbmRl
cmluZ1Jlc291cmNlSWRlbnRpZmllcikKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9T
aGFyZWQvU2hhcmVkRGlzcGxheUxpc3RIYW5kbGUuY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQv
U2hhcmVkRGlzcGxheUxpc3RIYW5kbGUuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAxYWE3NGQ2MTVhYmQzZjRhMzE4NjI1MmZmMGZkY2I4NzFlNzBmYTUwLi4wMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1No
YXJlZERpc3BsYXlMaXN0SGFuZGxlLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDUzICswLDAgQEAK
LS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiU2hhcmVkRGlzcGxh
eUxpc3RIYW5kbGUuaCIKLQotbmFtZXNwYWNlIFdlYktpdCB7Ci11c2luZyBuYW1lc3BhY2UgV2Vi
Q29yZTsKLQotU2hhcmVkRGlzcGxheUxpc3RIYW5kbGU6OlNoYXJlZERpc3BsYXlMaXN0SGFuZGxl
KGNvbnN0IERpc3BsYXlMaXN0OjpEaXNwbGF5TGlzdCYgZGlzcGxheUxpc3QpCi17Ci0gICAgZGlz
cGxheUxpc3QuZm9yRWFjaEl0ZW1CdWZmZXIoWyZdIChhdXRvJiBoYW5kbGUpIHsKLSAgICAgICAg
bV9idWZmZXJzLmFwcGVuZCh7IGhhbmRsZS5pZGVudGlmaWVyLCBoYW5kbGUuY2FwYWNpdHkgfSk7
Ci0gICAgfSk7Ci19Ci0KLXN0ZDo6dW5pcXVlX3B0cjxEaXNwbGF5TGlzdDo6RGlzcGxheUxpc3Q+
IFNoYXJlZERpc3BsYXlMaXN0SGFuZGxlOjpjcmVhdGVEaXNwbGF5TGlzdChJdGVtQnVmZmVyUHJv
dmlkZXImJiBidWZmZXJQcm92aWRlcikgY29uc3QKLXsKLSAgICBEaXNwbGF5TGlzdDo6SXRlbUJ1
ZmZlckhhbmRsZXMgaGFuZGxlczsKLSAgICBoYW5kbGVzLnJlc2VydmVJbml0aWFsQ2FwYWNpdHko
bV9idWZmZXJzLnNpemUoKSk7Ci0gICAgZm9yIChhdXRvJiBbaWRlbnRpZmllciwgY2FwYWNpdHld
IDogbV9idWZmZXJzKSB7Ci0gICAgICAgIGF1dG8qIGRhdGEgPSBidWZmZXJQcm92aWRlcihpZGVu
dGlmaWVyKTsKLSAgICAgICAgaWYgKCFkYXRhKQotICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7
Ci0KLSAgICAgICAgaGFuZGxlcy51bmNoZWNrZWRBcHBlbmQoeyBpZGVudGlmaWVyLCBkYXRhLCBj
YXBhY2l0eSB9KTsKLSAgICB9Ci0gICAgcmV0dXJuIG1ha2VVbmlxdWU8RGlzcGxheUxpc3Q6OkRp
c3BsYXlMaXN0PihXVEZNb3ZlKGhhbmRsZXMpKTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV2ViS2l0
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9TaGFyZWREaXNwbGF5TGlzdEhhbmRs
ZS5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQvU2hhcmVkRGlzcGxheUxpc3RIYW5kbGUuaAppbmRl
eCBkMTc1ZTExNGYyM2JjOGZiOGU1N2NkOTBmNjRhMzNiZTI2MmUxZjMxLi40NjkyYTFlYWQxYWVi
N2VjOTIxZThhNWQ1NTc4MDNhOTFiY2VmZWMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1No
YXJlZC9TaGFyZWREaXNwbGF5TGlzdEhhbmRsZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L1NoYXJlZERpc3BsYXlMaXN0SGFuZGxlLmgKQEAgLTI1LDQyICsyNSw2MyBAQAogCiAjcHJhZ21h
IG9uY2UKIAorI2luY2x1ZGUgIlNoYXJlZE1lbW9yeS5oIgogI2luY2x1ZGUgPFdlYkNvcmUvRGlz
cGxheUxpc3QuaD4KKyNpbmNsdWRlIDxhdG9taWM+CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCiBj
bGFzcyBTaGFyZWREaXNwbGF5TGlzdEhhbmRsZSB7CiBwdWJsaWM6Ci0gICAgdXNpbmcgSXRlbUJ1
ZmZlclByb3ZpZGVyID0gRnVuY3Rpb248dWludDhfdCooV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0
ZW1CdWZmZXJJZGVudGlmaWVyKT47CisgICAgdmlydHVhbCB+U2hhcmVkRGlzcGxheUxpc3RIYW5k
bGUoKSA9IGRlZmF1bHQ7CiAKLSAgICBTaGFyZWREaXNwbGF5TGlzdEhhbmRsZShjb25zdCBXZWJD
b3JlOjpEaXNwbGF5TGlzdDo6RGlzcGxheUxpc3QmKTsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8V2Vi
Q29yZTo6RGlzcGxheUxpc3Q6OkRpc3BsYXlMaXN0PiBjcmVhdGVEaXNwbGF5TGlzdChJdGVtQnVm
ZmVyUHJvdmlkZXImJikgY29uc3Q7CisgICAgc3RhdGljIGNvbnN0ZXhwciBhdXRvIHJlc2VydmVk
Q2FwYWNpdHlBdFN0YXJ0ID0gc2l6ZW9mKGJvb2wpICsgc2l6ZW9mKHNpemVfdCk7CiAKLSAgICB0
ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPiB2b2lkIGVuY29kZShFbmNvZGVyJikgY29uc3Q7Ci0gICAg
dGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIE9wdGlvbmFsPFNoYXJlZERpc3BsYXlMaXN0
SGFuZGxlPiBkZWNvZGUoRGVjb2RlciYpOworICAgIGNvbnN0IFNoYXJlZE1lbW9yeSYgc2hhcmVk
TWVtb3J5KCkgY29uc3QgeyByZXR1cm4gbV9zaGFyZWRNZW1vcnkuZ2V0KCk7IH0KKyAgICBTaGFy
ZWRNZW1vcnkmIHNoYXJlZE1lbW9yeSgpIHsgcmV0dXJuIG1fc2hhcmVkTWVtb3J5LmdldCgpOyB9
CisgICAgc2l6ZV90IHVucmVhZEJ5dGVzKCkgY29uc3QgeyByZXR1cm4gKnJlaW50ZXJwcmV0X2Nh
c3Q8c2l6ZV90Kj4oZGF0YSgpICsgc2l6ZW9mKGJvb2wpKTsgfQorICAgIHVpbnQ4X3QqIGRhdGEo
KSBjb25zdCB7IHJldHVybiByZWludGVycHJldF9jYXN0PHVpbnQ4X3QqPihzaGFyZWRNZW1vcnko
KS5kYXRhKCkpOyB9CisgICAgV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1CdWZmZXJJZGVudGlm
aWVyIGlkZW50aWZpZXIoKSBjb25zdCB7IHJldHVybiBtX2lkZW50aWZpZXI7IH0KIAotcHJpdmF0
ZToKLSAgICBTaGFyZWREaXNwbGF5TGlzdEhhbmRsZShWZWN0b3I8c3RkOjpwYWlyPFdlYkNvcmU6
OkRpc3BsYXlMaXN0OjpJdGVtQnVmZmVySWRlbnRpZmllciwgc2l6ZV90Pj4mJiBidWZmZXJzKQot
ICAgICAgICA6IG1fYnVmZmVycyhXVEZNb3ZlKGJ1ZmZlcnMpKQorICAgIHZpcnR1YWwgdm9pZCBh
ZHZhbmNlKHNpemVfdCBhbW91bnQpID0gMDsKKworICAgIGNsYXNzIExvY2sgeworICAgIHB1Ymxp
YzoKKyAgICAgICAgTG9jayhTaGFyZWREaXNwbGF5TGlzdEhhbmRsZSYgaGFuZGxlKQorICAgICAg
ICAgICAgOiBtX2hhbmRsZShoYW5kbGUpCisgICAgICAgIHsKKyAgICAgICAgICAgIGF1dG8mIGF0
b21pY1ZhbHVlID0gbV9oYW5kbGUuYXRvbWljTG9ja1ZhbHVlKCk7CisgICAgICAgICAgICB3aGls
ZSAodHJ1ZSkgeworICAgICAgICAgICAgICAgIHN0ZDo6dGhpc190aHJlYWQ6OnlpZWxkKCk7Cisg
ICAgICAgICAgICAgICAgYm9vbCB1bmxvY2tlZCA9IGZhbHNlOworICAgICAgICAgICAgICAgIGlm
IChhdG9taWNWYWx1ZS5jb21wYXJlX2V4Y2hhbmdlX3dlYWsodW5sb2NrZWQsIHRydWUpKQorICAg
ICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAg
ICAgIH5Mb2NrKCkKKyAgICAgICAgeworICAgICAgICAgICAgbV9oYW5kbGUuYXRvbWljTG9ja1Zh
bHVlKCkuc3RvcmUoZmFsc2UpOworICAgICAgICB9CisKKyAgICBwcml2YXRlOgorICAgICAgICBT
aGFyZWREaXNwbGF5TGlzdEhhbmRsZSYgbV9oYW5kbGU7CisgICAgfTsKKworcHJvdGVjdGVkOgor
ICAgIFNoYXJlZERpc3BsYXlMaXN0SGFuZGxlKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtQnVm
ZmVySWRlbnRpZmllciBpZGVudGlmaWVyLCBSZWY8U2hhcmVkTWVtb3J5PiYmIHNoYXJlZE1lbW9y
eSkKKyAgICAgICAgOiBtX2lkZW50aWZpZXIoaWRlbnRpZmllcikKKyAgICAgICAgLCBtX3NoYXJl
ZE1lbW9yeShXVEZNb3ZlKHNoYXJlZE1lbW9yeSkpCiAgICAgewogICAgIH0KIAotICAgIFZlY3Rv
cjxzdGQ6OnBhaXI8V2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1CdWZmZXJJZGVudGlmaWVyLCBz
aXplX3Q+PiBtX2J1ZmZlcnM7Ci19OwotCi10ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPiB2b2lkIFNo
YXJlZERpc3BsYXlMaXN0SGFuZGxlOjplbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QKLXsK
LSAgICBlbmNvZGVyIDw8IG1fYnVmZmVyczsKLX0KKyAgICBzaXplX3QmIHVucmVhZEJ5dGVzSGFu
ZGxlKCkgeyByZXR1cm4gKnJlaW50ZXJwcmV0X2Nhc3Q8c2l6ZV90Kj4oZGF0YSgpICsgc2l6ZW9m
KGJvb2wpKTsgfQogCi10ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBPcHRpb25hbDxTaGFyZWREaXNw
bGF5TGlzdEhhbmRsZT4gU2hhcmVkRGlzcGxheUxpc3RIYW5kbGU6OmRlY29kZShEZWNvZGVyJiBk
ZWNvZGVyKQotewotICAgIE9wdGlvbmFsPFZlY3RvcjxzdGQ6OnBhaXI8V2ViQ29yZTo6RGlzcGxh
eUxpc3Q6Okl0ZW1CdWZmZXJJZGVudGlmaWVyLCBzaXplX3Q+Pj4gYnVmZmVyczsKLSAgICBkZWNv
ZGVyID4+IGJ1ZmZlcnM7Ci0gICAgaWYgKCFidWZmZXJzKQotICAgICAgICByZXR1cm4gV1RGOjpu
dWxsb3B0OworcHJpdmF0ZToKKyAgICBzdGQ6OmF0b21pYzxib29sPiYgYXRvbWljTG9ja1ZhbHVl
KCkgY29uc3QgeyByZXR1cm4gKnN0YXRpY19jYXN0PHN0ZDo6YXRvbWljPGJvb2w+Kj4oc2hhcmVk
TWVtb3J5KCkuZGF0YSgpKTsgfQogCi0gICAgcmV0dXJuIHt7IFdURk1vdmUoKmJ1ZmZlcnMpIH19
OwotfQorICAgIFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtQnVmZmVySWRlbnRpZmllciBtX2lk
ZW50aWZpZXI7CisgICAgUmVmPFNoYXJlZE1lbW9yeT4gbV9zaGFyZWRNZW1vcnk7Cit9OwogCiB9
IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU291cmNlcy50
eHQgYi9Tb3VyY2UvV2ViS2l0L1NvdXJjZXMudHh0CmluZGV4IDM0OTk3NWNlYzEwMGFhMzI1Zjgy
ZmM2MTUwYTY3NjkxZWExMmVjMGIuLmJjNzE5NWJmY2NlMzU1YTUzM2JmNzM2OTM4NzI5NmQyMTBm
NzgzZWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU291cmNlcy50eHQKKysrIGIvU291cmNl
L1dlYktpdC9Tb3VyY2VzLnR4dApAQCAtMjQsNiArMjQsNyBAQAogR1BVUHJvY2Vzcy9HUFVQcm9j
ZXNzLmNwcAogR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcAogR1BVUHJv
Y2Vzcy9HUFVQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcAorR1BVUHJvY2Vzcy9ncmFwaGlj
cy9EaXNwbGF5TGlzdFJlYWRlckhhbmRsZS5jcHAKIEdQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3Rl
UmVuZGVyaW5nQmFja2VuZC5jcHAKIEdQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVzb3VyY2VD
YWNoZS5jcHAKIEdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQXVkaW9TZXNzaW9uUHJveHkuY3BwCkBA
IC0xNzMsNyArMTc0LDYgQEAgU2hhcmVkL1NlcnZpY2VXb3JrZXJJbml0aWFsaXphdGlvbkRhdGEu
Y3BwCiBTaGFyZWQvU2Vzc2lvblN0YXRlLmNwcAogU2hhcmVkL1NoYXJlYWJsZUJpdG1hcC5jcHAg
QG5vLXVuaWZ5CiBTaGFyZWQvU2hhcmVhYmxlUmVzb3VyY2UuY3BwCi1TaGFyZWQvU2hhcmVkRGlz
cGxheUxpc3RIYW5kbGUuY3BwCiBTaGFyZWQvU2hhcmVkU3RyaW5nSGFzaFN0b3JlLmNwcAogU2hh
cmVkL1NoYXJlZFN0cmluZ0hhc2hUYWJsZVJlYWRPbmx5LmNwcAogU2hhcmVkL1NoYXJlZFN0cmlu
Z0hhc2hUYWJsZS5jcHAKQEAgLTU1OSw2ICs1NTksNyBAQCBXZWJQcm9jZXNzL01lZGlhU3RyZWFt
L01lZGlhRGV2aWNlU2FuZGJveEV4dGVuc2lvbnMuY3BwCiBXZWJQcm9jZXNzL01lZGlhU3RyZWFt
L1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlci5jcHAKIAogV2ViUHJvY2Vzcy9HUFUv
R1BVUHJvY2Vzc0Nvbm5lY3Rpb24uY3BwCitXZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9EaXNwbGF5
TGlzdFdyaXRlckhhbmRsZS5jcHAKIFdlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL0ltYWdlQnVmZmVy
U2hhcmVhYmxlQml0bWFwQmFja2VuZC5jcHAKIFdlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90
ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS5jcHAKIFdlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90
ZVJlc291cmNlQ2FjaGVQcm94eS5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViS2l0
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDU1MjI5MmNjZTRlMTViNDYxOWZmMzg0MWQ3MWZmODAw
ZThlMDVhNTkuLjg0YmYyNGEyODMyNDgxMzg1MDI2OWU1MmFlNzU1ZjRjNmI2M2FjZDYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysr
IGIvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTg2
OCw2ICsxODY4LDggQEAKIAkJRTVCRUY2ODIyMTMwQzQ4MDAwRjMxMTExIC8qIFdlYkRhdGFMaXN0
U3VnZ2VzdGlvbnNEcm9wZG93bklPUy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gRTVCRUY2ODAyMTMwQzQ3RjAwRjMxMTExIC8qIFdlYkRhdGFMaXN0U3Vn
Z2VzdGlvbnNEcm9wZG93bklPUy5oICovOyB9OwogCQlFNUNCMDdEQzIwRTE2NzhGMDAyMkMxODMg
LyogV0tGb3JtQ29sb3JDb250cm9sLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBFNUNCMDdEQTIwRTE2NzhGMDAyMkMxODMgLyogV0tGb3JtQ29sb3JDb250
cm9sLmggKi87IH07CiAJCUVEODJBN0YyMTI4QzZGQUYwMDQ0NzdCMyAvKiBXS0J1bmRsZVBhZ2VP
dmVybGF5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAx
QTIyRjBGRjEyODlGQ0Q5MDA4NUU3NEYgLyogV0tCdW5kbGVQYWdlT3ZlcmxheS5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCUY0MDk0Q0JEMjU1MzA1
M0QwMDNENzNFMyAvKiBEaXNwbGF5TGlzdFJlYWRlckhhbmRsZS5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjQwOTRDQkIyNTUzMDRBRjAwM0Q3M0UzIC8q
IERpc3BsYXlMaXN0UmVhZGVySGFuZGxlLmggKi87IH07CisJCUY0MDk0Q0JFMjU1MzA1NDAwMDNE
NzNFMyAvKiBEaXNwbGF5TGlzdFdyaXRlckhhbmRsZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjQwOTRDQjkyNTUzMDQ3RTAwM0Q3M0UzIC8qIERpc3Bs
YXlMaXN0V3JpdGVySGFuZGxlLmggKi87IH07CiAJCUY0MDlCQTE4MUU2RTY0QkMwMDlEQTI4RSAv
KiBXS0RyYWdEZXN0aW5hdGlvbkFjdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gRjQwOUJBMTcxRTZFNjRCMzAwOURBMjhFIC8qIFdLRHJhZ0Rlc3Rp
bmF0aW9uQWN0aW9uLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKIAkJRjQyRDYzNDEyMkEwRUZERjAwRDJGQjNBIC8qIFdlYkF1dG9jb3JyZWN0aW9uRGF0
YS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjQyRDYz
M0YyMkEwRUZEMzAwRDJGQjNBIC8qIFdlYkF1dG9jb3JyZWN0aW9uRGF0YS5oICovOyB9OwogCQlG
NDMwRTk0MjIyNDczMzVGMDA1RkUwNTMgLyogV2Vic2l0ZU1ldGFWaWV3cG9ydFBvbGljeS5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjQzMEU5NDEyMjQ3
MzJBOTAwNUZFMDUzIC8qIFdlYnNpdGVNZXRhVmlld3BvcnRQb2xpY3kuaCAqLzsgfTsKQEAgLTU0
NjAsNiArNTQ2MiwxMCBAQAogCQlFQ0E2ODBEMzFFNjkwNEI1MDA3MzFEMjAgLyogRXh0cmFQcml2
YXRlU3ltYm9sc0ZvclRBUEkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRXh0
cmFQcml2YXRlU3ltYm9sc0ZvclRBUEkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
RUNCRkMxREIxRTZBNEQ2NjAwMDMwMEM3IC8qIEV4dHJhUHVibGljU3ltYm9sc0ZvclRBUEkuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gRXh0cmFQdWJsaWNTeW1ib2xzRm9yVEFQSS5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQlGMDM2OTc4NzE1RjRCRjA1MDBDM0E4MEUgLyogV2ViQ29sb3JQaWNr
ZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2ViQ29sb3JQaWNr
ZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlGNDA5NENCOTI1NTMwNDdFMDAz
RDczRTMgLyogRGlzcGxheUxpc3RXcml0ZXJIYW5kbGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRGlzcGxh
eUxpc3RXcml0ZXJIYW5kbGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRjQwOTRD
QkEyNTUzMDQ3RTAwM0Q3M0UzIC8qIERpc3BsYXlMaXN0V3JpdGVySGFuZGxlLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IERpc3BsYXlMaXN0V3JpdGVySGFuZGxlLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJRjQwOTRDQkIyNTUzMDRBRjAwM0Q3M0UzIC8qIERpc3BsYXlMaXN0UmVh
ZGVySGFuZGxlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERpc3BsYXlMaXN0UmVhZGVySGFuZGxlLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUY0MDk0Q0JDMjU1MzA0QUYwMDNENzNFMyAvKiBE
aXNwbGF5TGlzdFJlYWRlckhhbmRsZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBEaXNwbGF5TGlz
dFJlYWRlckhhbmRsZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUY0MDlCQTE3
MUU2RTY0QjMwMDlEQTI4RSAvKiBXS0RyYWdEZXN0aW5hdGlvbkFjdGlvbi5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBXS0RyYWdEZXN0aW5hdGlvbkFjdGlvbi5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQlGNDBEMUI2ODIyMEJEQzBGMDBCNDlBMDEgLyogV2ViQXV0
b2NvcnJlY3Rpb25Db250ZXh0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFdlYkF1dG9jb3JyZWN0aW9uQ29u
dGV4dC5oOyBwYXRoID0gaW9zL1dlYkF1dG9jb3JyZWN0aW9uQ29udGV4dC5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQlGNDEwNTY2MTIxMzA2OTlBMDA5MjI4MUQgLyogQVBJQXR0YWNo
bWVudENvY29hLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gQVBJQXR0YWNobWVudENvY29hLm1t
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNTQ4Miw3ICs1NDg4LDYgQEAKIAkJRjQ5
NkE0MkYxRjU4QTI3MjAwNEMxNzU3IC8qIERyYWdEcm9wSW50ZXJhY3Rpb25TdGF0ZS5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IG5hbWUgPSBEcmFnRHJvcEludGVyYWN0aW9uU3RhdGUuaDsgcGF0aCA9IGlvcy9EcmFnRHJv
cEludGVyYWN0aW9uU3RhdGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRjQ5NkE0
MzAxRjU4QTI3MjAwNEMxNzU3IC8qIERyYWdEcm9wSW50ZXJhY3Rpb25TdGF0ZS5tbSAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
Lm9iamNwcDsgbmFtZSA9IERyYWdEcm9wSW50ZXJhY3Rpb25TdGF0ZS5tbTsgcGF0aCA9IGlvcy9E
cmFnRHJvcEludGVyYWN0aW9uU3RhdGUubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CUY0QTZENkJCMjU0Q0EzRTkwMEI2NUZBQSAvKiBTaGFyZWREaXNwbGF5TGlzdEhhbmRsZS5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBTaGFyZWREaXNwbGF5TGlzdEhhbmRsZS5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwotCQlGNEE2RDZCRDI1NENBNTIyMDBCNjVGQUEgLyogU2hhcmVkRGlzcGxheUxp
c3RIYW5kbGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU2hhcmVkRGlzcGxheUxpc3RIYW5kbGUu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGNEFDNjU1RTIyQTMxNDBFMDBBMDU2
MDcgLyogV2ViUHJlZmVyZW5jZXNEZWZhdWx0VmFsdWVzSU9TLm1tICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAub2JqY3BwOyBuYW1lID0gV2ViUHJlZmVyZW5jZXNEZWZhdWx0VmFsdWVzSU9TLm1t
OyBwYXRoID0gaW9zL1dlYlByZWZlcmVuY2VzRGVmYXVsdFZhbHVlc0lPUy5tbTsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRjRCMzc4RDAyMUREQkJBQjAwOTVBMzc4IC8qIFdlYlVuZG9T
dGVwSUQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViVW5kb1N0ZXBJRC5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQlGNENCMDlFNDIyNUQ1QTAzMDA4OTE0ODcgLyogV2Vic2l0ZU1lZGlhU291
cmNlUG9saWN5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYnNpdGVNZWRpYVNvdXJjZVBvbGljeS5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNjE5MCw3ICs2MTk1LDYgQEAKIAkJCQkxQTY0
MjBFMzEyRENFMkZGMDBDQUFFMkMgLyogU2hhcmVhYmxlQml0bWFwLmggKi8sCiAJCQkJNTEyMTc0
NUUxNjRDMjBFMzAwMzdBNUMxIC8qIFNoYXJlYWJsZVJlc291cmNlLmNwcCAqLywKIAkJCQk1MTIx
NzQ1RjE2NEMyMEUzMDAzN0E1QzEgLyogU2hhcmVhYmxlUmVzb3VyY2UuaCAqLywKLQkJCQlGNEE2
RDZCRDI1NENBNTIyMDBCNjVGQUEgLyogU2hhcmVkRGlzcGxheUxpc3RIYW5kbGUuY3BwICovLAog
CQkJCUY0QTZENkJCMjU0Q0EzRTkwMEI2NUZBQSAvKiBTaGFyZWREaXNwbGF5TGlzdEhhbmRsZS5o
ICovLAogCQkJCTgzMTNGN0VBMUY3REFFMDQwMEI5NDRFQiAvKiBTaGFyZWRTdHJpbmdIYXNoU3Rv
cmUuY3BwICovLAogCQkJCTgzMTNGN0U5MUY3REFFMDMwMEI5NDRFQiAvKiBTaGFyZWRTdHJpbmdI
YXNoU3RvcmUuaCAqLywKQEAgLTgxNjIsNiArODE2Niw4IEBACiAJCQlpc2EgPSBQQlhHcm91cDsK
IAkJCWNoaWxkcmVuID0gKAogCQkJCTcyN0E3RjMzMjQwNzg1MjcwMDREMjkzMSAvKiBjb2NvYSAq
LywKKwkJCQlGNDA5NENCOTI1NTMwNDdFMDAzRDczRTMgLyogRGlzcGxheUxpc3RXcml0ZXJIYW5k
bGUuaCAqLywKKwkJCQlGNDA5NENCQTI1NTMwNDdFMDAzRDczRTMgLyogRGlzcGxheUxpc3RXcml0
ZXJIYW5kbGUuY3BwICovLAogCQkJCTcyN0E3RjM5MjQwNzg4RjEwMDREMjkzMSAvKiBJbWFnZUJ1
ZmZlckJhY2tlbmRIYW5kbGUuaCAqLywKIAkJCQk3MjdBN0YzNzI0MDc4OEYwMDA0RDI5MzEgLyog
SW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRtYXBCYWNrZW5kLmNwcCAqLywKIAkJCQk3MjdBN0YzNjI0
MDc4OEYwMDA0RDI5MzEgLyogSW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRtYXBCYWNrZW5kLmggKi8s
CkBAIC04MTgxLDYgKzgxODcsOCBAQAogCQk1NTA2NDBBMTI0MDcxQTI5MDBBQUUwNDUgLyogZ3Jh
cGhpY3MgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAorCQkJCUY0
MDk0Q0JCMjU1MzA0QUYwMDNENzNFMyAvKiBEaXNwbGF5TGlzdFJlYWRlckhhbmRsZS5oICovLAor
CQkJCUY0MDk0Q0JDMjU1MzA0QUYwMDNENzNFMyAvKiBEaXNwbGF5TGlzdFJlYWRlckhhbmRsZS5j
cHAgKi8sCiAJCQkJNTVBRDA5NDMyNDA4QTBFNjAwREU0RDJGIC8qIFBsYXRmb3JtUmVtb3RlSW1h
Z2VCdWZmZXIuaCAqLywKIAkJCQk1NUFEMDk0MjI0MDhBMDJFMDBERTREMkYgLyogUmVtb3RlSW1h
Z2VCdWZmZXIuaCAqLywKIAkJCQk1NTA2NDBBMjI0MDcxQTYxMDBBQUUwNDUgLyogUmVtb3RlUmVu
ZGVyaW5nQmFja2VuZC5jcHAgKi8sCkBAIC0xMTIyNyw2ICsxMTIzNSw3IEBACiAJCQkJNUMyOThE
QTAxQzNERjAyMTAwNDcwQUZFIC8qIFBlbmRpbmdEb3dubG9hZC5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJODMyRUQxOEMxRTJGRTE1NzAwNkJBNjRBIC8qIFBlckFjdGl2aXR5U3RhdGVDUFVVc2FnZVNh
bXBsZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTdBRkJEMzZGMjFFNTQ2RjgwMDVEQkFDQiAvKiBQ
ZXJzaXN0ZW5jeVV0aWxzLmggaW4gSGVhZGVycyAqLywKKwkJCQlGNDA5NENCRTI1NTMwNTQwMDAz
RDczRTMgLyogRGlzcGxheUxpc3RXcml0ZXJIYW5kbGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTVD
RTg1QjIwMUM4OEU2NEIwMDcwQkZDRSAvKiBQaW5nTG9hZC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
MEY1RTIwMDQxOEU3NzA1MTAwM0VDM0U1IC8qIFBsYXRmb3JtQ0FBbmltYXRpb25SZW1vdGUuaCBp
biBIZWFkZXJzICovLAogCQkJCTJEQTA0OUI0MTgwQ0NDRDMwMEFBRkE5RSAvKiBQbGF0Zm9ybUNB
TGF5ZXJSZW1vdGUuaCBpbiBIZWFkZXJzICovLApAQCAtMTE2MTUsNiArMTE2MjQsNyBAQAogCQkJ
CUJDRTBFNDI1MTY4QjdBMjgwMDU3RTY2QSAvKiBXZWJQcm9jZXNzU3VwcGxlbWVudC5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJMUExRTA5MzQxODg2MUQzODAwRDJEQzQ5IC8qIFdlYlByb2dyZXNzVHJh
Y2tlckNsaWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTEyRjU4OUQxMkE4ODM4ODAwNjI5NTMw
IC8qIFdlYlByb3RlY3Rpb25TcGFjZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJRjQwOTRDQkQyNTUz
MDUzRDAwM0Q3M0UzIC8qIERpc3BsYXlMaXN0UmVhZGVySGFuZGxlLmggaW4gSGVhZGVycyAqLywK
IAkJCQk0NjFDQ0NBNjIzMTQ4NUFBMDBCNjU5QjkgLyogV2ViUmVtb3RlT2JqZWN0UmVnaXN0cnku
aCBpbiBIZWFkZXJzICovLAogCQkJCUE1ODYwRTcxMjMwRjY3RkMwMDQ2MUFBRSAvKiBXZWJSZXNv
dXJjZUludGVyY2VwdENvbnRyb2xsZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTUxMEFGRkJBMTY1
NDIwNDgwMDFCQTA1RSAvKiBXZWJSZXNvdXJjZUxvYWRlci5oIGluIEhlYWRlcnMgKi8sCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL0Rpc3BsYXlMaXN0
V3JpdGVySGFuZGxlLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3Mv
RGlzcGxheUxpc3RXcml0ZXJIYW5kbGUuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmU1NDk4OTNhYTE4OWJhM2Fl
MmIwOGIyNzIxMzZlMjg5Nzg0YjUxZTYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL0Rpc3BsYXlMaXN0V3JpdGVySGFuZGxlLmNwcApAQCAt
MCwwICsxLDcxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUg
IkRpc3BsYXlMaXN0V3JpdGVySGFuZGxlLmgiCisKK25hbWVzcGFjZSBXZWJLaXQgewordXNpbmcg
bmFtZXNwYWNlIFdlYkNvcmU7CisKK3ZvaWQgRGlzcGxheUxpc3RXcml0ZXJIYW5kbGU6OmFkdmFu
Y2Uoc2l6ZV90IGFtb3VudCkKK3sKKyAgICBtX3dyaXRhYmxlT2Zmc2V0ICs9IGFtb3VudDsKKyAg
ICB1bnJlYWRCeXRlc0hhbmRsZSgpICs9IGFtb3VudDsKK30KKworc2l6ZV90IERpc3BsYXlMaXN0
V3JpdGVySGFuZGxlOjphdmFpbGFibGVDYXBhY2l0eSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIHNo
YXJlZE1lbW9yeSgpLnNpemUoKSAtIHdyaXRhYmxlT2Zmc2V0KCk7Cit9CisKK0Rpc3BsYXlMaXN0
OjpJdGVtQnVmZmVySGFuZGxlIERpc3BsYXlMaXN0V3JpdGVySGFuZGxlOjpjcmVhdGVIYW5kbGUo
KSBjb25zdAoreworICAgIHJldHVybiB7CisgICAgICAgIGlkZW50aWZpZXIoKSwKKyAgICAgICAg
ZGF0YSgpICsgd3JpdGFibGVPZmZzZXQoKSwKKyAgICAgICAgYXZhaWxhYmxlQ2FwYWNpdHkoKQor
ICAgIH07Cit9CisKK2Jvb2wgRGlzcGxheUxpc3RXcml0ZXJIYW5kbGU6OnJlc2V0V3JpdGFibGVP
ZmZzZXRJZlBvc3NpYmxlKCkKK3sKKyAgICBpZiAobV93cml0YWJsZU9mZnNldCA8PSBTaGFyZWRE
aXNwbGF5TGlzdEhhbmRsZTo6cmVzZXJ2ZWRDYXBhY2l0eUF0U3RhcnQpIHsKKyAgICAgICAgQVNT
RVJUKG1fd3JpdGFibGVPZmZzZXQgPT0gU2hhcmVkRGlzcGxheUxpc3RIYW5kbGU6OnJlc2VydmVk
Q2FwYWNpdHlBdFN0YXJ0KTsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorCisgICAgTG9j
ayBsb2NrZXIgeyAqdGhpcyB9OworICAgIGlmICghdW5yZWFkQnl0ZXMoKSkgeworICAgICAgICAv
LyBPbmNlIHRoZSBHUFUgcHJvY2VzcyBoYXMgcmVhZCBhbmQgcHJvY2Vzc2VkIGFsbCByZW1haW5p
bmcgaXRlbXMsIG1vdmUgdGhlIHJlYWRvbmx5CisgICAgICAgIC8vIHJhbmdlIGJhY2sgdG8gdGhl
IHN0YXJ0LiBUaGlzIE1VU1QgYmUgY2FsbGVkIG9ubHkgd2hlbiB0aGUgaXRlbSBidWZmZXIgaXMg
bm90IGFjdGl2ZWx5CisgICAgICAgIC8vIGJlaW5nIHdyaXR0ZW4gdG8uCisgICAgICAgIG1fd3Jp
dGFibGVPZmZzZXQgPSBTaGFyZWREaXNwbGF5TGlzdEhhbmRsZTo6cmVzZXJ2ZWRDYXBhY2l0eUF0
U3RhcnQ7CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKworICAgIHJldHVybiBmYWxzZTsK
K30KKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvR1BVL2dyYXBoaWNzL0Rpc3BsYXlMaXN0V3JpdGVySGFuZGxlLmggYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL0Rpc3BsYXlMaXN0V3JpdGVySGFuZGxlLmgK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uMTM4MDEyNjVlZTM4NDk0MzFhZGU5MTdmNThmYTUzYjI1OTNmYjk0ZAotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvRGlz
cGxheUxpc3RXcml0ZXJIYW5kbGUuaApAQCAtMCwwICsxLDU0IEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklC
VVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRT
IENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3By
YWdtYSBvbmNlCisKKyNpbmNsdWRlICJTaGFyZWREaXNwbGF5TGlzdEhhbmRsZS5oIgorI2luY2x1
ZGUgPHd0Zi9GYXN0TWFsbG9jLmg+CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBEaXNw
bGF5TGlzdFdyaXRlckhhbmRsZSA6IHB1YmxpYyBTaGFyZWREaXNwbGF5TGlzdEhhbmRsZSB7Cisg
ICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoRGlzcGxheUxpc3RXcml0ZXJIYW5kbGUpOyBXVEZfTUFL
RV9GQVNUX0FMTE9DQVRFRDsKK3B1YmxpYzoKKyAgICBEaXNwbGF5TGlzdFdyaXRlckhhbmRsZShX
ZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbUJ1ZmZlcklkZW50aWZpZXIgaWRlbnRpZmllciwgUmVm
PFNoYXJlZE1lbW9yeT4mJiBzaGFyZWRNZW1vcnkpCisgICAgICAgIDogU2hhcmVkRGlzcGxheUxp
c3RIYW5kbGUoaWRlbnRpZmllciwgV1RGTW92ZShzaGFyZWRNZW1vcnkpKQorICAgICAgICAsIG1f
d3JpdGFibGVPZmZzZXQoU2hhcmVkRGlzcGxheUxpc3RIYW5kbGU6OnJlc2VydmVkQ2FwYWNpdHlB
dFN0YXJ0KQorICAgIHsKKyAgICB9CisKKyAgICBzaXplX3Qgd3JpdGFibGVPZmZzZXQoKSBjb25z
dCB7IHJldHVybiBtX3dyaXRhYmxlT2Zmc2V0OyB9CisgICAgc2l6ZV90IGF2YWlsYWJsZUNhcGFj
aXR5KCkgY29uc3Q7CisKKyAgICBib29sIHJlc2V0V3JpdGFibGVPZmZzZXRJZlBvc3NpYmxlKCk7
CisKKyAgICB2b2lkIGFkdmFuY2Uoc2l6ZV90IGFtb3VudCkgb3ZlcnJpZGU7CisgICAgV2ViQ29y
ZTo6RGlzcGxheUxpc3Q6Okl0ZW1CdWZmZXJIYW5kbGUgY3JlYXRlSGFuZGxlKCkgY29uc3Q7CisK
K3ByaXZhdGU6CisgICAgc2l6ZV90IG1fd3JpdGFibGVPZmZzZXQgeyAwIH07Cit9OworCit9IC8v
IG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9H
UFUvZ3JhcGhpY3MvUmVtb3RlSW1hZ2VCdWZmZXJQcm94eS5oIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVJbWFnZUJ1ZmZlclByb3h5LmgKaW5kZXggZDA3Mjkx
MGFhOGUwYTAzMGJkMWIzZTAzMmQ3ZDFhZGYxMDI5NzllYi4uNWM0ZGVhYWQ5NWMzYWIzMjA4ZDhk
MDdhZTMxMzU0ZmQ1NDgxODYwZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L0dQVS9ncmFwaGljcy9SZW1vdGVJbWFnZUJ1ZmZlclByb3h5LmgKKysrIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVJbWFnZUJ1ZmZlclByb3h5LmgKQEAgLTE1
NCw3ICsxNTQsOSBAQCBwcm90ZWN0ZWQ6CiAgICAgICAgICAgICByZXR1cm47CiAKICAgICAgICAg
VHJhY2VTY29wZSB0cmFjaW5nU2NvcGUoRmx1c2hSZW1vdGVJbWFnZUJ1ZmZlclN0YXJ0LCBGbHVz
aFJlbW90ZUltYWdlQnVmZmVyRW5kLCAxKTsKLSAgICAgICAgbV9zZW50Rmx1c2hJZGVudGlmaWVy
ID0gbV9yZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHktPmZsdXNoRGlzcGxheUxpc3RBbmRDb21t
aXQoZGlzcGxheUxpc3QsIG1fcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKTsKKyAgICAgICAg
bV9zZW50Rmx1c2hJZGVudGlmaWVyID0gV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkZsdXNoSWRlbnRp
Zmllcjo6Z2VuZXJhdGUoKTsKKyAgICAgICAgZGlzcGxheUxpc3QudGVtcGxhdGUgYXBwZW5kPFdl
YkNvcmU6OkRpc3BsYXlMaXN0OjpGbHVzaENvbnRleHQ+KG1fc2VudEZsdXNoSWRlbnRpZmllcik7
CisgICAgICAgIG1fcmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5LT5mbHVzaERpc3BsYXlMaXN0
KGRpc3BsYXlMaXN0LCBtX3JlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcik7CiAgICAgICAgIG1f
cmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5LT5yZW1vdGVSZXNvdXJjZUNhY2hlUHJveHkoKS51
bmxvY2tSZW1vdGVSZXNvdXJjZXNGb3JSZW1vdGVDbGllbnQobV9yZW5kZXJpbmdSZXNvdXJjZUlk
ZW50aWZpZXIpOwogICAgICAgICBtX2l0ZW1Db3VudEluQ3VycmVudERpc3BsYXlMaXN0ID0gMDsK
ICAgICAgICAgZGlzcGxheUxpc3QuY2xlYXIoKTsKQEAgLTE5NSw3ICsxOTcsNyBAQCBwcm90ZWN0
ZWQ6CiAgICAgV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1CdWZmZXJIYW5kbGUgY3JlYXRlSXRl
bUJ1ZmZlcihzaXplX3QgY2FwYWNpdHkpIG92ZXJyaWRlCiAgICAgewogICAgICAgICBpZiAobV9y
ZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkpCi0gICAgICAgICAgICByZXR1cm4gbV9yZW1vdGVS
ZW5kZXJpbmdCYWNrZW5kUHJveHktPmNyZWF0ZUl0ZW1CdWZmZXIoY2FwYWNpdHkpOworICAgICAg
ICAgICAgcmV0dXJuIG1fcmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5LT5jcmVhdGVJdGVtQnVm
ZmVyKGNhcGFjaXR5LCBtX3JlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcik7CiAKICAgICAgICAg
QVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAgIHJldHVybiB7IH07CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tl
bmRQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90
ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS5jcHAKaW5kZXggYmU5MzVmNzVjY2ViOTQ1ZWJmMWZmMDg2
Zjg5MGE0NGI4NTJjNDhhZi4uZDdjYTQ1MTAzOWJhN2FiYTNlNTkxMGZkNzMxOWMxNGQ3Y2E2YmRl
ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1v
dGVSZW5kZXJpbmdCYWNrZW5kUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9HUFUvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5LmNwcApAQCAtMjgsMTMg
KzI4LDEzIEBACiAKICNpZiBFTkFCTEUoR1BVX1BST0NFU1MpCiAKKyNpbmNsdWRlICJEaXNwbGF5
TGlzdFdyaXRlckhhbmRsZS5oIgogI2luY2x1ZGUgIkdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3Mu
aCIKICNpbmNsdWRlICJHUFVQcm9jZXNzQ29ubmVjdGlvbi5oIgogI2luY2x1ZGUgIkltYWdlRGF0
YVJlZmVyZW5jZS5oIgogI2luY2x1ZGUgIlBsYXRmb3JtUmVtb3RlSW1hZ2VCdWZmZXJQcm94eS5o
IgogI2luY2x1ZGUgIlJlbW90ZVJlbmRlcmluZ0JhY2tlbmRNZXNzYWdlcy5oIgogI2luY2x1ZGUg
IlJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eU1lc3NhZ2VzLmgiCi0jaW5jbHVkZSAiU2hhcmVk
RGlzcGxheUxpc3RIYW5kbGUuaCIKICNpbmNsdWRlICJTaGFyZWRNZW1vcnkuaCIKICNpbmNsdWRl
ICJXZWJQcm9jZXNzLmgiCiAKQEAgLTExOCwxNiArMTE4LDI5IEBAIFJlZlB0cjxJbWFnZURhdGE+
IFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eTo6Z2V0SW1hZ2VEYXRhKEFscGhhUHJlbXVsdGlw
bGljYXRpCiAKIHZvaWQgUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5OjpmbHVzaERpc3BsYXlM
aXN0KGNvbnN0IERpc3BsYXlMaXN0OjpEaXNwbGF5TGlzdCYgZGlzcGxheUxpc3QsIFJlbmRlcmlu
Z1Jlc291cmNlSWRlbnRpZmllciByZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpCiB7Ci0gICAg
c2VuZChNZXNzYWdlczo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6Rmx1c2hEaXNwbGF5TGlzdCh7
IGRpc3BsYXlMaXN0IH0sIHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciksIG1fcmVuZGVyaW5n
QmFja2VuZElkZW50aWZpZXIpOwotICAgIG1fc2hhcmVkSXRlbUJ1ZmZlcnMuY2xlYXIoKTsKLX0K
KyAgICBPcHRpb25hbDxzdGQ6OnBhaXI8V2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1CdWZmZXJJ
ZGVudGlmaWVyLCBzaXplX3Q+PiBpZGVudGlmaWVyQW5kT2Zmc2V0Rm9yV2FrZVVwTWVzc2FnZTsK
KyAgICBib29sIGlzRmlyc3RIYW5kbGUgPSB0cnVlOwogCi1EaXNwbGF5TGlzdDo6Rmx1c2hJZGVu
dGlmaWVyIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eTo6Zmx1c2hEaXNwbGF5TGlzdEFuZENv
bW1pdChjb25zdCBEaXNwbGF5TGlzdDo6RGlzcGxheUxpc3QmIGRpc3BsYXlMaXN0LCBSZW5kZXJp
bmdSZXNvdXJjZUlkZW50aWZpZXIgcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKQotewotICAg
IGF1dG8gc2VudEZsdXNoSWRlbnRpZmllciA9IERpc3BsYXlMaXN0OjpGbHVzaElkZW50aWZpZXI6
OmdlbmVyYXRlKCk7Ci0gICAgc2VuZChNZXNzYWdlczo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6
Rmx1c2hEaXNwbGF5TGlzdEFuZENvbW1pdCh7IGRpc3BsYXlMaXN0IH0sIHNlbnRGbHVzaElkZW50
aWZpZXIsIHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciksIG1fcmVuZGVyaW5nQmFja2VuZElk
ZW50aWZpZXIpOwotICAgIG1fc2hhcmVkSXRlbUJ1ZmZlcnMuY2xlYXIoKTsKLSAgICByZXR1cm4g
c2VudEZsdXNoSWRlbnRpZmllcjsKKyAgICBkaXNwbGF5TGlzdC5mb3JFYWNoSXRlbUJ1ZmZlcihb
Jl0gKGF1dG8mIGhhbmRsZSkgeworICAgICAgICBtX2lkZW50aWZpZXJzT2ZIYW5kbGVzQXZhaWxh
YmxlRm9yV3JpdGluZy5hZGQoaGFuZGxlLmlkZW50aWZpZXIpOworCisgICAgICAgIGF1dG8qIHNo
YXJlZEhhbmRsZSA9IG1fc2hhcmVkRGlzcGxheUxpc3RIYW5kbGVzLmdldChoYW5kbGUuaWRlbnRp
Zmllcik7CisgICAgICAgIFJFTEVBU0VfQVNTRVJUX1dJVEhfTUVTU0FHRShzaGFyZWRIYW5kbGUs
ICIlcyBmYWlsZWQgdG8gZmluZCBzaGFyZWQgZGlzcGxheSBsaXN0IiwgX19QUkVUVFlfRlVOQ1RJ
T05fXyk7CisKKyAgICAgICAgU2hhcmVkRGlzcGxheUxpc3RIYW5kbGU6OkxvY2sgbG9ja2VyIHsg
KnNoYXJlZEhhbmRsZSB9OworCisgICAgICAgIGJvb2wgdW5yZWFkQ291bnRXYXNFbXB0eSA9ICFz
aGFyZWRIYW5kbGUtPnVucmVhZEJ5dGVzKCk7CisgICAgICAgIHNoYXJlZEhhbmRsZS0+YWR2YW5j
ZShoYW5kbGUuY2FwYWNpdHkpOworICAgICAgICBpZiAoaXNGaXJzdEhhbmRsZSAmJiB1bnJlYWRD
b3VudFdhc0VtcHR5KQorICAgICAgICAgICAgaWRlbnRpZmllckFuZE9mZnNldEZvcldha2VVcE1l
c3NhZ2UgPSB7eyBoYW5kbGUuaWRlbnRpZmllciwgaGFuZGxlLmRhdGEgLSBzaGFyZWRIYW5kbGUt
PmRhdGEoKSB9fTsKKworICAgICAgICBpc0ZpcnN0SGFuZGxlID0gZmFsc2U7CisgICAgfSk7CisK
KyAgICBpZiAoaWRlbnRpZmllckFuZE9mZnNldEZvcldha2VVcE1lc3NhZ2UpIHsKKyAgICAgICAg
YXV0byBbaWRlbnRpZmllciwgb2Zmc2V0XSA9ICppZGVudGlmaWVyQW5kT2Zmc2V0Rm9yV2FrZVVw
TWVzc2FnZTsKKyAgICAgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6
V2FrZVVwQW5kUHJvY2Vzc0Rpc3BsYXlMaXN0KGlkZW50aWZpZXIsIG9mZnNldCwgcmVuZGVyaW5n
UmVzb3VyY2VJZGVudGlmaWVyKSwgbV9yZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllcik7CisgICAg
fQogfQogCiB2b2lkIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eTo6cmVsZWFzZVJlbW90ZVJl
c291cmNlKFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciByZW5kZXJpbmdSZXNvdXJjZUlkZW50
aWZpZXIpCkBAIC0xNTksMjEgKzE3Miw1NiBAQCB2b2lkIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQ
cm94eTo6Zmx1c2hEaXNwbGF5TGlzdFdhc0NvbW1pdHRlZChEaXNwbGF5TGlzdDo6Rmx1cwogICAg
ICAgICBkb3duY2FzdDxVbmFjY2VsZXJhdGVkUmVtb3RlSW1hZ2VCdWZmZXJQcm94eT4oKmltYWdl
QnVmZmVyKS5jb21taXRGbHVzaERpc3BsYXlMaXN0KGZsdXNoSWRlbnRpZmllcik7CiB9CiAKLURp
c3BsYXlMaXN0OjpJdGVtQnVmZmVySGFuZGxlIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eTo6
Y3JlYXRlSXRlbUJ1ZmZlcihzaXplX3QgY2FwYWNpdHkpCit2b2lkIFJlbW90ZVJlbmRlcmluZ0Jh
Y2tlbmRQcm94eTo6dXBkYXRlUmV1c2FibGVIYW5kbGVzKCkKK3sKKyAgICBmb3IgKGF1dG8gaWRl
bnRpZmllciA6IG1faWRlbnRpZmllcnNPZkhhbmRsZXNBdmFpbGFibGVGb3JXcml0aW5nKSB7Cisg
ICAgICAgIGF1dG8qIGhhbmRsZSA9IG1fc2hhcmVkRGlzcGxheUxpc3RIYW5kbGVzLmdldChpZGVu
dGlmaWVyKTsKKyAgICAgICAgaWYgKCFoYW5kbGUtPnJlc2V0V3JpdGFibGVPZmZzZXRJZlBvc3Np
YmxlKCkpCisgICAgICAgICAgICBjb250aW51ZTsKKworICAgICAgICBpZiAobV9pZGVudGlmaWVy
c09mUmV1c2FibGVIYW5kbGVzLmNvbnRhaW5zKGlkZW50aWZpZXIpKQorICAgICAgICAgICAgY29u
dGludWU7CisKKyAgICAgICAgbV9pZGVudGlmaWVyc09mUmV1c2FibGVIYW5kbGVzLmFwcGVuZChp
ZGVudGlmaWVyKTsKKyAgICB9Cit9CisKK0Rpc3BsYXlMaXN0OjpJdGVtQnVmZmVySGFuZGxlIFJl
bW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eTo6Y3JlYXRlSXRlbUJ1ZmZlcihzaXplX3QgY2FwYWNp
dHksIFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciByZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIp
CiB7CisgICAgdXBkYXRlUmV1c2FibGVIYW5kbGVzKCk7CisKKyAgICB3aGlsZSAoIW1faWRlbnRp
ZmllcnNPZlJldXNhYmxlSGFuZGxlcy5pc0VtcHR5KCkpIHsKKyAgICAgICAgYXV0byBpZGVudGlm
aWVyID0gbV9pZGVudGlmaWVyc09mUmV1c2FibGVIYW5kbGVzLmZpcnN0KCk7CisgICAgICAgIGF1
dG8qIHJldXNhYmxlSGFuZGxlID0gbV9zaGFyZWREaXNwbGF5TGlzdEhhbmRsZXMuZ2V0KGlkZW50
aWZpZXIpOworICAgICAgICBSRUxFQVNFX0FTU0VSVF9XSVRIX01FU1NBR0UocmV1c2FibGVIYW5k
bGUsICIlcyBmYWlsZWQgdG8gZmluZCBzaGFyZWQgZGlzcGxheSBsaXN0IiwgX19QUkVUVFlfRlVO
Q1RJT05fXyk7CisKKyAgICAgICAgaWYgKG1faWRlbnRpZmllcnNPZkhhbmRsZXNBdmFpbGFibGVG
b3JXcml0aW5nLmNvbnRhaW5zKGlkZW50aWZpZXIpICYmIHJldXNhYmxlSGFuZGxlLT5hdmFpbGFi
bGVDYXBhY2l0eSgpID49IGNhcGFjaXR5KSB7CisgICAgICAgICAgICBtX2lkZW50aWZpZXJzT2ZI
YW5kbGVzQXZhaWxhYmxlRm9yV3JpdGluZy5yZW1vdmUoaWRlbnRpZmllcik7CisgICAgICAgICAg
ICByZXR1cm4gcmV1c2FibGVIYW5kbGUtPmNyZWF0ZUhhbmRsZSgpOworICAgICAgICB9CisKKyAg
ICAgICAgbV9pZGVudGlmaWVyc09mUmV1c2FibGVIYW5kbGVzLnJlbW92ZUZpcnN0KCk7CisgICAg
fQorCiAgICAgc3RhdGljIGNvbnN0ZXhwciBzaXplX3QgZGVmYXVsdFNoYXJlZEl0ZW1CdWZmZXJT
aXplID0gMSA8PCAxNjsKIAotICAgIGF1dG8gc2hhcmVkTWVtb3J5ID0gU2hhcmVkTWVtb3J5Ojph
bGxvY2F0ZShzdGQ6Om1heChkZWZhdWx0U2hhcmVkSXRlbUJ1ZmZlclNpemUsIGNhcGFjaXR5KSk7
CisgICAgYXV0byBzaGFyZWRNZW1vcnkgPSBTaGFyZWRNZW1vcnk6OmFsbG9jYXRlKHN0ZDo6bWF4
KGRlZmF1bHRTaGFyZWRJdGVtQnVmZmVyU2l6ZSwgY2FwYWNpdHkgKyBTaGFyZWREaXNwbGF5TGlz
dEhhbmRsZTo6cmVzZXJ2ZWRDYXBhY2l0eUF0U3RhcnQpKTsKICAgICBpZiAoIXNoYXJlZE1lbW9y
eSkKICAgICAgICAgcmV0dXJuIHsgfTsKIAotICAgIGF1dG8gaWRlbnRpZmllciA9IERpc3BsYXlM
aXN0OjpJdGVtQnVmZmVySWRlbnRpZmllcjo6Z2VuZXJhdGUoKTsKICAgICBTaGFyZWRNZW1vcnk6
OkhhbmRsZSBzaGFyZWRNZW1vcnlIYW5kbGU7Ci0gICAgc2hhcmVkTWVtb3J5LT5jcmVhdGVIYW5k
bGUoc2hhcmVkTWVtb3J5SGFuZGxlLCBTaGFyZWRNZW1vcnk6OlByb3RlY3Rpb246OlJlYWRPbmx5
KTsKLSAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpEaWRDcmVhdGVT
aGFyZWRJdGVtRGF0YShpZGVudGlmaWVyLCB7IFdURk1vdmUoc2hhcmVkTWVtb3J5SGFuZGxlKSwg
c2hhcmVkTWVtb3J5LT5zaXplKCkgfSksIG1fcmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXIpOwot
ICAgIG1fc2hhcmVkSXRlbUJ1ZmZlcnMuc2V0KGlkZW50aWZpZXIsIHNoYXJlZE1lbW9yeS5jb3B5
UmVmKCkpOworICAgIHNoYXJlZE1lbW9yeS0+Y3JlYXRlSGFuZGxlKHNoYXJlZE1lbW9yeUhhbmRs
ZSwgU2hhcmVkTWVtb3J5OjpQcm90ZWN0aW9uOjpSZWFkV3JpdGUpOworCisgICAgYXV0byBpZGVu
dGlmaWVyID0gRGlzcGxheUxpc3Q6Okl0ZW1CdWZmZXJJZGVudGlmaWVyOjpnZW5lcmF0ZSgpOwor
ICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OkRpZENyZWF0ZVNoYXJl
ZERpc3BsYXlMaXN0SGFuZGxlKGlkZW50aWZpZXIsIHsgV1RGTW92ZShzaGFyZWRNZW1vcnlIYW5k
bGUpLCBzaGFyZWRNZW1vcnktPnNpemUoKSB9LCByZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIpLCBt
X3JlbmRlcmluZ0JhY2tlbmRJZGVudGlmaWVyKTsKKworICAgIGF1dG8gbmV3SGFuZGxlID0gbWFr
ZVVuaXF1ZTxEaXNwbGF5TGlzdFdyaXRlckhhbmRsZT4oaWRlbnRpZmllciwgc2hhcmVkTWVtb3J5
LnJlbGVhc2VOb25OdWxsKCkpOworICAgIGF1dG8gZGlzcGxheUxpc3RIYW5kbGUgPSBuZXdIYW5k
bGUtPmNyZWF0ZUhhbmRsZSgpOworCisgICAgbV9pZGVudGlmaWVyc09mUmV1c2FibGVIYW5kbGVz
LmFwcGVuZChpZGVudGlmaWVyKTsKKyAgICBtX3NoYXJlZERpc3BsYXlMaXN0SGFuZGxlcy5zZXQo
aWRlbnRpZmllciwgV1RGTW92ZShuZXdIYW5kbGUpKTsKIAotICAgIHJldHVybiB7IGlkZW50aWZp
ZXIsIHJlaW50ZXJwcmV0X2Nhc3Q8dWludDhfdCo+KHNoYXJlZE1lbW9yeS0+ZGF0YSgpKSwgc2hh
cmVkTWVtb3J5LT5zaXplKCkgfTsKKyAgICByZXR1cm4gZGlzcGxheUxpc3RIYW5kbGU7CiB9CiAK
IH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkuaCBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5
LmgKaW5kZXggMzQ1NTk2ZWZiODhhOWJkNTVhMzU3ZmZkNWM5OTYxMjdlOWNlMTcyYS4uMmNlY2Zh
ODkxZGM1MDg4MmZkYTEwYjVkYmRlZmYzMDUzMTczOGRhZCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHku
aAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZVJlbmRl
cmluZ0JhY2tlbmRQcm94eS5oCkBAIC0zNCw2ICszNCw3IEBACiAjaW5jbHVkZSAiUmVuZGVyaW5n
QmFja2VuZElkZW50aWZpZXIuaCIKICNpbmNsdWRlIDxXZWJDb3JlL0Rpc3BsYXlMaXN0Lmg+CiAj
aW5jbHVkZSA8V2ViQ29yZS9SZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIuaD4KKyNpbmNsdWRl
IDx3dGYvRGVxdWUuaD4KICNpbmNsdWRlIDx3dGYvV2Vha1B0ci5oPgogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CkBAIC01MCw2ICs1MSw4IEBAIGVudW0gY2xhc3MgUmVuZGVyaW5nTW9kZSA6IGJvb2w7
CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCitjbGFzcyBEaXNwbGF5TGlzdFdyaXRlckhhbmRsZTsK
KwogY2xhc3MgUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5CiAgICAgOiBwdWJsaWMgSVBDOjpN
ZXNzYWdlU2VuZGVyCiAgICAgLCBwcml2YXRlIElQQzo6TWVzc2FnZVJlY2VpdmVyCkBAIC02MCw3
ICs2Myw3IEBAIHB1YmxpYzoKICAgICB+UmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5KCk7CiAK
ICAgICBSZW1vdGVSZXNvdXJjZUNhY2hlUHJveHkmIHJlbW90ZVJlc291cmNlQ2FjaGVQcm94eSgp
IHsgcmV0dXJuIG1fcmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5OyB9Ci0gICAgV2ViQ29yZTo6RGlz
cGxheUxpc3Q6Okl0ZW1CdWZmZXJIYW5kbGUgY3JlYXRlSXRlbUJ1ZmZlcihzaXplX3QpOworICAg
IFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtQnVmZmVySGFuZGxlIGNyZWF0ZUl0ZW1CdWZmZXIo
c2l6ZV90IGNhcGFjaXR5LCBXZWJDb3JlOjpSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpOwog
CiAgICAgLy8gSVBDOjpNZXNzYWdlU2VuZGVyLgogICAgIElQQzo6Q29ubmVjdGlvbiogbWVzc2Fn
ZVNlbmRlckNvbm5lY3Rpb24oKSBjb25zdCBvdmVycmlkZTsKQEAgLTgyLDExICs4NSwxNSBAQCBw
dWJsaWM6CiBwcml2YXRlOgogICAgIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eSgpOwogCisg
ICAgdm9pZCB1cGRhdGVSZXVzYWJsZUhhbmRsZXMoKTsKKwogICAgIC8vIE1lc3NhZ2VzIHRvIGJl
IHJlY2VpdmVkLgogICAgIHZvaWQgaW1hZ2VCdWZmZXJCYWNrZW5kV2FzQ3JlYXRlZChjb25zdCBX
ZWJDb3JlOjpGbG9hdFNpemUmIGxvZ2ljYWxTaXplLCBjb25zdCBXZWJDb3JlOjpJbnRTaXplJiBi
YWNrZW5kU2l6ZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBXZWJDb3JlOjpDb2xvclNwYWNlLCBJ
bWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGUsIFdlYkNvcmU6OlJlbmRlcmluZ1Jlc291cmNlSWRlbnRp
Zmllcik7CiAgICAgdm9pZCBmbHVzaERpc3BsYXlMaXN0V2FzQ29tbWl0dGVkKFdlYkNvcmU6OkRp
c3BsYXlMaXN0OjpGbHVzaElkZW50aWZpZXIsIFdlYkNvcmU6OlJlbmRlcmluZ1Jlc291cmNlSWRl
bnRpZmllcik7CiAKLSAgICBIYXNoTWFwPFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtQnVmZmVy
SWRlbnRpZmllciwgUmVmUHRyPFNoYXJlZE1lbW9yeT4+IG1fc2hhcmVkSXRlbUJ1ZmZlcnM7Cisg
ICAgSGFzaE1hcDxXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbUJ1ZmZlcklkZW50aWZpZXIsIHN0
ZDo6dW5pcXVlX3B0cjxEaXNwbGF5TGlzdFdyaXRlckhhbmRsZT4+IG1fc2hhcmVkRGlzcGxheUxp
c3RIYW5kbGVzOworICAgIERlcXVlPFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtQnVmZmVySWRl
bnRpZmllcj4gbV9pZGVudGlmaWVyc09mUmV1c2FibGVIYW5kbGVzOworICAgIEhhc2hTZXQ8V2Vi
Q29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1CdWZmZXJJZGVudGlmaWVyPiBtX2lkZW50aWZpZXJzT2ZI
YW5kbGVzQXZhaWxhYmxlRm9yV3JpdGluZzsKICAgICBSZW1vdGVSZXNvdXJjZUNhY2hlUHJveHkg
bV9yZW1vdGVSZXNvdXJjZUNhY2hlUHJveHkgeyAqdGhpcyB9OwogICAgIFJlbmRlcmluZ0JhY2tl
bmRJZGVudGlmaWVyIG1fcmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXIgeyBSZW5kZXJpbmdCYWNr
ZW5kSWRlbnRpZmllcjo6Z2VuZXJhdGUoKSB9OwogfTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>413367</attachid>
            <date>2020-11-05 16:16:31 -0800</date>
            <delta_ts>2020-11-06 20:22:44 -0800</delta_ts>
            <desc>Depends on #218588 and #218406</desc>
            <filename>bug-218426-20201105161630.patch</filename>
            <type>text/plain</type>
            <size>58823</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY5NDU4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDJhNzIwNmJmNWQ1NGIxNDk1
N2JjYTM2NTdjNDBkOWJlYjQyNWExZTcuLjM3NTEyZDc5NzAyOTIyNjRlOTczOGI4ZDU0MzYyZmI0
NzJhMjkyMDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQ5IEBACisyMDIwLTExLTA0ICBXZW5zb24g
SHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAgICAgIFtDb25jdXJyZW50IGRp
c3BsYXkgbGlzdHNdIEFkZCBhbiBpbml0aWFsIGltcGxlbWVudGF0aW9uIG9mIGNvbmN1cnJlbnQg
ZGlzcGxheSBsaXN0IHJlbmRlcmluZworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MjE4NDI2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgVGhpcyBwYXRjaCBhZGRzIGEgZmlyc3QtY3V0IGltcGxlbWVudGF0aW9u
IG9mIGNvbmN1cnJlbnQgZGlzcGxheSBsaXN0IHJlbmRlcmluZywgd2hpY2ggYWxsb3dzIHRoZSBH
UFUgYW5kIHdlYgorICAgICAgICBwcm9jZXNzZXMgdG8gcmVhZCBhbmQgd3JpdGUgZGlzcGxheSBs
aXN0IGRhdGEgYXQgdGhlIHNhbWUgdGltZS4gVG8gYWNoaWV2ZSB0aGlzLCB3ZSByZW1vdmUgdGhl
IHBsYWNlaG9sZGVyCisgICAgICAgIHNoYXJlZCBtZW1vcnkgZGlzcGxheSBsaXN0IGVuY29kaW5n
IG1lY2hhbmlzbSBwcmV2aW91c2x5IGFkZGVkIGluIDx3ZWJraXQub3JnL2IvMjE4NDA2PiwgYW5k
IHJlcGxhY2UgaXQgd2l0aCBhCisgICAgICAgIG5ldyBtb2RlbCBpbiB3aGljaCBhIHdyaXRlciAo
aS5lLiB0aGUgd2ViIHByb2Nlc3MpIGFuZCBhIHJlYWRlciAoaS5lLiB0aGUgR1BVIHByb2Nlc3Mp
IHNoYXJlIGEgc2V0IG9mIHJldXNhYmxlCisgICAgICAgIHNoYXJlZCBtZW1vcnkgYnVmZmVycyB3
aGljaCBjb250YWluIGRpc3BsYXkgbGlzdCBpdGVtIGRhdGEuIEFzIHRoZSB3cml0ZXIgYXBwZW5k
cyBkYXRhIHRvIHNoYXJlZCBtZW1vcnksIGl0CisgICAgICAgIGluY3JlbWVudHMgYSBjb3VudGVy
IGluIGVhY2ggc2hhcmVkIG1lbW9yeSBidWZmZXIgdGhhdCByZXByZXNlbnRzIHRoZSBudW1iZXIg
b2YgYnl0ZXMgdGhhdCB0aGUgcmVhZGVyIGhhcyB5ZXQgdG8KKyAgICAgICAgcmVhZDsgYXMgdGhl
IHJlYWRlciByZWFkcyBkaXNwbGF5IGxpc3QgaXRlbXMgZnJvbSBzaGFyZWQgbWVtb3J5LCBpdCBk
ZWNyZW1lbnRzIHRoaXMgY291bnRlci4KKworICAgICAgICBUaGlzIHBhdGNoIGFsc28gaW1wbGVt
ZW50cyBhIHNpbXBsZSBzdHJhdGVneSBmb3IgcmV1c2luZyB0aGVzZSBzaGFyZWQgaXRlbSBidWZm
ZXJzLiBUaGUgd2ViIHByb2Nlc3MgbWFpbnRhaW5zIGEKKyAgICAgICAgcXVldWUgb2YgcmV1c2Fi
bGUgYnVmZmVyczsgd2hlbiBkaXNwbGF5IGxpc3QgaXRlbXMgYXJlIGFwcGVuZGVkIGFuZCB0aGUg
Y3VycmVudCB3cml0YWJsZSBidWZmZXIgaXMgb3V0IG9mCisgICAgICAgIGNhcGFjaXR5LCB0aGUg
ZGlzcGxheSBsaXN0IGl0ZW0gYnVmZmVyIGNhbGxzIG91dCB0byBXZWJLaXQyIHZpYSBhIGNsaWVu
dCBtZXRob2QgdG8gcmVxdWVzdCBtb3JlIHNoYXJlZCBtZW1vcnkuCisgICAgICAgIEhlcmUsIHRo
ZSB3ZWIgcHJvY2VzcyB0cmF2ZXJzZXMgdGhlIHF1ZXVlIG9mIHJldXNhYmxlIGl0ZW0gYnVmZmVy
cyBpbiBzZWFyY2ggb2YgYSBidWZmZXIgd2l0aCBzdWZmaWNpZW50CisgICAgICAgIGNhcGFjaXR5
OyBpZiBmb3VuZCwgd2UgaGFuZCB0aGlzIGJhY2sgdG8gV2ViQ29yZSBhcyBhbiBvcGFxdWUgYEl0
ZW1CdWZmZXJIYW5kbGVgOyBvdGhlcndpc2UsIHdlIGFsbG9jYXRlIGEgbmV3CisgICAgICAgIHJl
dXNhYmxlIHNoYXJlZCBtZW1vcnkgYnVmZmVyLiBJdGVtIGJ1ZmZlcnMgdGhhdCBoYXZlIGJlZW4g
dXNlZCBiZWNvbWUgcmV1c2FibGUgb25seSBhZnRlciB0aGV5IGFyZSAoMSkgbm8KKyAgICAgICAg
bG9uZ2VyIGJlaW5nIHJlYWQgZnJvbSAtLSBpLmUuLCB0aGUgY291bnRlciB2YWx1ZSBpcyAwLCBh
bmQgKDIpIHRoZXkgYXJlIG5vdCBhY3RpdmVseSBiZWluZyB3cml0dGVuIHRvLgorICAgICAgICBC
dWZmZXJzIHRoYXQgaGF2ZSBiZWVuIHVzZWQgYXJlIGxhemlseSByZWludHJvZHVjZWQgaW50byB0
aGUgcmV1c2UgcXVldWUgd2hlbiBhIGRpc3BsYXkgbGlzdCByZXF1ZXN0cyBhIGhhbmRsZQorICAg
ICAgICB0byB3cml0YWJsZSBpdGVtIGJ1ZmZlciBkYXRhLgorCisgICAgICAgIFNlZSBiZWxvdyBm
b3IgbW9yZSBkZXRhaWxzLgorCisgICAgICAgICogR1BVUHJvY2Vzcy9ncmFwaGljcy9EaXNwbGF5
TGlzdFJlYWRlckhhbmRsZS5jcHA6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJLaXQvU2hhcmVkL1No
YXJlZERpc3BsYXlMaXN0SGFuZGxlLmNwcC4KKyAgICAgICAgKFdlYktpdDo6RGlzcGxheUxpc3RS
ZWFkZXJIYW5kbGU6OmFkdmFuY2UpOgorICAgICAgICAoV2ViS2l0OjpEaXNwbGF5TGlzdFJlYWRl
ckhhbmRsZTo6Y3JlYXRlRGlzcGxheUxpc3QgY29uc3QpOgorICAgICAgICAqIEdQVVByb2Nlc3Mv
Z3JhcGhpY3MvRGlzcGxheUxpc3RSZWFkZXJIYW5kbGUuaDogQ29waWVkIGZyb20gU291cmNlL1dl
YktpdC9TaGFyZWQvU2hhcmVkRGlzcGxheUxpc3RIYW5kbGUuY3BwLgorICAgICAgICAoV2ViS2l0
OjpEaXNwbGF5TGlzdFJlYWRlckhhbmRsZTo6RGlzcGxheUxpc3RSZWFkZXJIYW5kbGUpOgorCisg
ICAgICAgIEFkZCBhIG5ldyBoZWxwZXIgY2xhc3MgdG8gcmVwcmVzZW50IGEgc2hhcmVkIGRpc3Bs
YXkgbGlzdCBpdGVtIGJ1ZmZlciB0aGF0IHRoZSBHUFUgcHJvY2VzcyBjYW4gdXNlIHRvIGNvbnN1
bWUKKyAgICAgICAgZGlzcGxheSBsaXN0IGl0ZW1zLiBBZHZhbmNpbmcgdGhlIGN1cnNvciBpbiBg
RGlzcGxheUxpc3RSZWFkZXJIYW5kbGVgIGluY3JlbWVudHMgdGhlICJyZW1haW5pbmcgYnl0ZXMi
IGNvdW50ZXI7CisgICAgICAgIHRoZSBjbGFzcyBhbHNvIGhhcyBhIGhlbHBlciBtZXRob2QgZm9y
IGNyZWF0aW5nIGEgbmV3IGBEaXNwbGF5TGlzdGAgd2l0aCBhIGdpdmVuIG9mZnNldCBpbnRvIHRo
ZSBzaGFyZWQgYnVmZmVyLAorICAgICAgICBhcyB3ZWxsIHRoZSBudW1iZXIgb2YgYnl0ZXMgdG8g
cmVhZC4KKworICAgICAgICAqIEdQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlSW1hZ2VCdWZmZXIu
aDoKKworICAgICAgICBIYW5kbGUgdGhlIGBTd2l0Y2hUb0J1ZmZlcmAgYW5kIGBGbHVzaENvbnRl
eHRgIGl0ZW1zIGJ5IChyZXNwZWN0aXZlbHkpIGluZm9ybWluZyB0aGUgcmVuZGVyaW5nIGJhY2tl
bmQgYWJvdXQKKyAgICAgICAgdGhlIG5leHQgYnVmZmVyIHRvIHJlYWQgZnJvbSwgYW5kIHNlbmRp
bmcgYSAiZmx1c2ggY29tbWl0dGVkIiBJUEMgbWVzc2FnZSBiYWNrIHRvIHRoZSB3ZWIgcHJvY2Vz
cy4KKworICAgICAgICAoV2ViS2l0OjpSZW1vdGVJbWFnZUJ1ZmZlcjo6UmVtb3RlSW1hZ2VCdWZm
ZXIpOgorICAgICAgICAqIEdQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2Vu
ZC5jcHA6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6Ondha2VVcEFu
ZFByb2Nlc3NEaXNwbGF5TGlzdCk6CisKKyAgICAgICAgVGhpcyBpcyB0aGUgbWFpbiBsb29wIGlu
IHRoZSBHUFUgcHJvY2VzcyB0aGF0IGlzIHJlc3BvbnNpYmxlIGZvciBhcHBseWluZyBpbmNvbWlu
ZyBkaXNwbGF5IGxpc3QgaXRlbSBkYXRhLiBUaGlzCisgICAgICAgIElQQyBlbmRwb2ludCByZWNl
aXZlcyBpbmZvcm1hdGlvbiBhYm91dCB3aGVyZSB0byBzdGFydCAoaS5lLiBhbiBpdGVtIGJ1ZmZl
ciBJRCBhbmQgYW4gb2Zmc2V0IGludG8gc2hhcmVkIG1lbW9yeQorICAgICAgICBpbiB0aGF0IGJ1
ZmZlcikgYW5kIGJlZ2lucyByZWFkaW5nIHJhbmdlcyBvZiBkaXNwbGF5IGxpc3QgaXRlbSBkYXRh
IGluc2lkZSB0aGF0IGJ1ZmZlci4gQWZ0ZXIgaXQgaXMgZG9uZQorICAgICAgICBwcm9jZXNzaW5n
IGFsbCBvZiBpdHMgdW5yZWFkIGJ5dGVzLCBpdCB0aGVuIGNoZWNrcyB0aGUgdW5yZWFkIGJ5dGUg
Y291bnQgb25jZSBhZ2FpbiwgYW5kIGNvbnRpbnVlcyB0aGUgbG9vcCBpZgorICAgICAgICB0aGUg
d2ViIHByb2Nlc3MgaGFzIGFkdmFuY2VkIHRoaXMgY291bnQuCisKKyAgICAgICAgKFdlYktpdDo6
UmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6c2V0TmV4dEl0ZW1CdWZmZXJUb1JlYWQpOgorICAgICAg
ICAoV2ViS2l0OjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpkaWRDcmVhdGVTaGFyZWREaXNwbGF5
TGlzdEhhbmRsZSk6CisKKyAgICAgICAgQWRkIGxvZ2ljIHRvIGhhbmRsZSB0aGUgY2FzZSB3aGVy
ZSB3ZSByZWFjaGVkIHRoZSBlbmQgb2YgYW4gaXRlbSBidWZmZXIsIGJ1dCB0aGUgbmV4dCBidWZm
ZXIgaWRlbnRpZmllciBpcyBzdGlsbAorICAgICAgICB1bmtub3duIHRvIHVzIChzaW5jZSBpdCBp
cyBzdGlsbCAiaW4gdHJhbnNpdCIgdmlhIHRoZSBgRGlkQ3JlYXRlU2hhcmVkRGlzcGxheUxpc3RI
YW5kbGVgIElQQyBtZXNzYWdlKS4gSW4gdGhpcworICAgICAgICBjYXNlLCB3ZSByZW1lbWJlciB0
aGUgbmV4dCBidWZmZXIgaWRlbnRpZmllciBpbiBgbV9uZXh0SXRlbUJ1ZmZlclRvUmVhZGAsIGFu
ZCBleGl0IHRoZSBwcm9jZXNzaW5nIGxvb3AgaW5zaWRlCisgICAgICAgIGB3YWtlVXBBbmRQcm9j
ZXNzRGlzcGxheUxpc3RgLiBVcG9uIHJlY2VpdmluZyB0aGUgc2hhcmVkIG1lbW9yeSBoYW5kbGUg
aW4gYGRpZENyZWF0ZVNoYXJlZERpc3BsYXlMaXN0SGFuZGxlYCwgd2UKKyAgICAgICAgdGhlbiBh
dXRvbWF0aWNhbGx5IHJlc3VtZSBkaXNwbGF5IGxpc3QgcHJvY2Vzc2luZywgc3RhcnRpbmcgZnJv
bSB0aGUgYmVnaW5uaW5nIG9mIHRoaXMgbmV3IGJ1ZmZlci4KKworICAgICAgICAoV2ViS2l0OjpS
ZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjphcHBseURpc3BsYXlMaXN0KTogRGVsZXRlZC4KKyAgICAg
ICAgKFdlYktpdDo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6Zmx1c2hEaXNwbGF5TGlzdCk6IERl
bGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OmZsdXNoRGlz
cGxheUxpc3RBbmRDb21taXQpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVSZW5k
ZXJpbmdCYWNrZW5kOjpkaWRDcmVhdGVTaGFyZWRJdGVtRGF0YSk6IERlbGV0ZWQuCisKKyAgICAg
ICAgV2UgZG9uJ3QgbmVlZCBhbnkgb2YgdGhlc2UgbWV0aG9kcyBhbnltb3JlLCBub3cgdGhhdCB0
aGVyZSBpcyBvbmx5IG9uZSBjb2RlcGF0aCBmb3IgcHJvY2Vzc2luZyBkaXNwbGF5IGxpc3QKKyAg
ICAgICAgaXRlbXMuIFNlZSBgUmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6d2FrZVVwQW5kUHJvY2Vz
c0Rpc3BsYXlMaXN0YCBhYm92ZS4gQWxzbywgcmVuYW1lIGBkaWRDcmVhdGVTaGFyZWRJdGVtRGF0
YWAKKyAgICAgICAgdG8gYGRpZENyZWF0ZVNoYXJlZERpc3BsYXlMaXN0SGFuZGxlYCAoYWxzbyBh
Ym92ZSkuCisKKyAgICAgICAgKiBHUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0Jh
Y2tlbmQuaDoKKyAgICAgICAgKiBHUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0Jh
Y2tlbmQubWVzc2FnZXMuaW46CisgICAgICAgICogU2hhcmVkL1NoYXJlZERpc3BsYXlMaXN0SGFu
ZGxlLmg6CisgICAgICAgIChXZWJLaXQ6OlNoYXJlZERpc3BsYXlMaXN0SGFuZGxlOjpzaGFyZWRN
ZW1vcnkgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpTaGFyZWREaXNwbGF5TGlzdEhhbmRsZTo6
c2hhcmVkTWVtb3J5KToKKyAgICAgICAgKFdlYktpdDo6U2hhcmVkRGlzcGxheUxpc3RIYW5kbGU6
OnVucmVhZEJ5dGVzIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6U2hhcmVkRGlzcGxheUxpc3RI
YW5kbGU6OmRhdGEgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpTaGFyZWREaXNwbGF5TGlzdEhh
bmRsZTo6aWRlbnRpZmllciBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OlNoYXJlZERpc3BsYXlM
aXN0SGFuZGxlOjpMb2NrOjpMb2NrKToKKyAgICAgICAgKFdlYktpdDo6U2hhcmVkRGlzcGxheUxp
c3RIYW5kbGU6OkxvY2s6On5Mb2NrKToKKyAgICAgICAgKFdlYktpdDo6U2hhcmVkRGlzcGxheUxp
c3RIYW5kbGU6OlNoYXJlZERpc3BsYXlMaXN0SGFuZGxlKToKKyAgICAgICAgKFdlYktpdDo6U2hh
cmVkRGlzcGxheUxpc3RIYW5kbGU6OnVucmVhZEJ5dGVzSGFuZGxlKToKKyAgICAgICAgKFdlYktp
dDo6U2hhcmVkRGlzcGxheUxpc3RIYW5kbGU6OmF0b21pY0xvY2tWYWx1ZSBjb25zdCk6CisgICAg
ICAgIChXZWJLaXQ6OlNoYXJlZERpc3BsYXlMaXN0SGFuZGxlOjplbmNvZGUgY29uc3QpOiBEZWxl
dGVkLgorICAgICAgICAoV2ViS2l0OjpTaGFyZWREaXNwbGF5TGlzdEhhbmRsZTo6ZGVjb2RlKTog
RGVsZXRlZC4KKworICAgICAgICBSZXB1cnBvc2UgYFNoYXJlZERpc3BsYXlMaXN0SGFuZGxlYCB0
byBzZXJ2ZSBhcyBhIGJhc2UgY2xhc3MgZm9yIGJvdGggYERpc3BsYXlMaXN0UmVhZGVySGFuZGxl
YCBhbmQKKyAgICAgICAgYERpc3BsYXlMaXN0V3JpdGVySGFuZGxlYC4gVGhpcyBiYXNlIGNsYXNz
IGlzIGF3YXJlIG9mIHRoZSBtZW1vcnkgbGF5b3V0IG9mIHRoZSBkaXNwbGF5IGxpc3QgaXRlbSBi
dWZmZXIgaW4KKyAgICAgICAgc2hhcmVkIG1lbW9yeSAoaW4gcGFydGljdWxhciwgdGhlIGZhY3Qg
dGhhdCB0aGUgZmlyc3QgYnl0ZSBpcyB0aGUgYXRvbWljIGxvY2sgYW5kIHRoZSBuZXh0IGBzaXpl
b2Yoc2l6ZV90KWAKKyAgICAgICAgYnl0ZXMgY29udGFpbiB0aGUgdW5yZWFkIGJ5dGUgY291bnRl
cikuCisKKyAgICAgICAgVGhpcyBhbHNvIGV4cG9zZXMgYSBoZWxwZXIgUkFJSSBjbGFzcywgYFNo
YXJlZERpc3BsYXlMaXN0SGFuZGxlOjpMb2NrYCwgdGhhdCBpcyB1c2VkIHRvIGdyYWIgdGhlIGxv
Y2sgb24gYQorICAgICAgICBwYXJ0aWN1bGFyIHNoYXJlZCBpdGVtIGJ1ZmZlciB3aGVuIHJlYWRp
bmcgb3IgdXBkYXRpbmcgdGhlIHVucmVhZCBieXRlcyBjb3VudGVyLgorCisgICAgICAgICogU291
cmNlcy50eHQ6CisgICAgICAgICogV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6Cisg
ICAgICAgICogV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvRGlzcGxheUxpc3RXcml0ZXJIYW5kbGUu
Y3BwOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViS2l0L1NoYXJlZC9TaGFyZWREaXNwbGF5TGlzdEhh
bmRsZS5jcHAuCisgICAgICAgIChXZWJLaXQ6OkRpc3BsYXlMaXN0V3JpdGVySGFuZGxlOjphZHZh
bmNlKToKKyAgICAgICAgKFdlYktpdDo6RGlzcGxheUxpc3RXcml0ZXJIYW5kbGU6OmF2YWlsYWJs
ZUNhcGFjaXR5IGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6RGlzcGxheUxpc3RXcml0ZXJIYW5k
bGU6OmNyZWF0ZUhhbmRsZSBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OkRpc3BsYXlMaXN0V3Jp
dGVySGFuZGxlOjpyZXNldFdyaXRhYmxlT2Zmc2V0SWZQb3NzaWJsZSk6CisKKyAgICAgICAgVGhp
cyBoZWxwZXIgbWV0aG9kIG1vdmVzIHRoZSB3cml0YWJsZSBvZmZzZXQgKHNlZSBiZWxvdykgYmFj
ayB0byB0aGUgc3RhcnQgb2YgdGhlIGJ1ZmZlciBpZiBpdCBpcyBub3QgYmVpbmcgcmVhZAorICAg
ICAgICBmcm9tIGJ5IHRoZSBHUFUgcHJvY2Vzcy4KKworICAgICAgICAqIFdlYlByb2Nlc3MvR1BV
L2dyYXBoaWNzL0Rpc3BsYXlMaXN0V3JpdGVySGFuZGxlLmg6IFJlbmFtZWQgZnJvbSBTb3VyY2Uv
V2ViS2l0L1NoYXJlZC9TaGFyZWREaXNwbGF5TGlzdEhhbmRsZS5jcHAuCisgICAgICAgIChXZWJL
aXQ6OkRpc3BsYXlMaXN0V3JpdGVySGFuZGxlOjpEaXNwbGF5TGlzdFdyaXRlckhhbmRsZSk6Cisg
ICAgICAgIChXZWJLaXQ6OkRpc3BsYXlMaXN0V3JpdGVySGFuZGxlOjp3cml0YWJsZU9mZnNldCBj
b25zdCk6CisKKyAgICAgICAgU2ltaWxhciB0byBgRGlzcGxheUxpc3RSZWFkZXJIYW5kbGVgLCBl
eGNlcHQgdGhhdCB0aGlzIGNvbnRhaW5zIGxvZ2ljIHNwZWNpZmljIHRvIHRoZSB3ZWIgcHJvY2Vz
cyBmb3Igd3JpdGluZworICAgICAgICBkaXNwbGF5IGxpc3QgaXRlbXMgaW50byBzaGFyZWQgbWVt
b3J5LiBBZHZhbmNpbmcgdGhlIGN1cnNvciBpbiBgRGlzcGxheUxpc3RXcml0ZXJIYW5kbGVgIGRl
Y3JlbWVudHMgdGhlIGNvdW50ZXIuCisgICAgICAgIEl0IGFsc28gaW5jcmVtZW50cyB0aGUgYHdy
aXRhYmxlT2Zmc2V0YCBvZiB0aGUgaGFuZGxlLCB3aGljaCByZXByZXNlbnRzIHRoZSBtaW5pbXVt
IG9mZnNldCBpbnRvIHRoZSBzaGFyZWQKKyAgICAgICAgYnVmZmVyIHRoYXQgbWF5IGNvbnRhaW4g
bmV3bHkgYXBwZW5kZWQgZGlzcGxheSBsaXN0IGl0ZW1zLgorCisgICAgICAgICogV2ViUHJvY2Vz
cy9HUFUvZ3JhcGhpY3MvUmVtb3RlSW1hZ2VCdWZmZXJQcm94eS5oOgorICAgICAgICAqIFdlYlBy
b2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS5jcHA6CisgICAg
ICAgIChXZWJLaXQ6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eTo6Zmx1c2hEaXNwbGF5TGlz
dCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eTo6dXBkYXRl
UmV1c2FibGVIYW5kbGVzKToKKworICAgICAgICBUaGlzIHByaXZhdGUgaGVscGVyIGl0ZXJhdGVz
IHRoZSBzZXQgb2YgYnVmZmVycyB0aGF0IGFyZSBub3QgY3VycmVudGx5IGJlaW5nIHdyaXR0ZW4g
dG8sIGFuZCBhZGRzIGVhY2ggb25lIHRvCisgICAgICAgIHRoZSByZXVzYWJsZSBidWZmZXIgcXVl
dWUgb25seSBpZiBpdHMgd3JpdGFibGUgb2Zmc2V0IGlzIGF0IHRoZSBzdGFydC4KKworICAgICAg
ICAoV2ViS2l0OjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHk6OmNyZWF0ZUl0ZW1CdWZmZXIp
OgorCisgICAgICAgIEltcGxlbWVudHMgbG9naWMgdGhhdCBoYW5kcyBzaGFyZWQgaXRlbSBidWZm
ZXIgZGF0YSBoYW5kbGVzIHRvIFdlYkNvcmUgZm9yIHdyaXRpbmcgZGlzcGxheSBsaXN0IGl0ZW1z
LiBUaGlzIHdpbGwKKyAgICAgICAgdHJ5IHRvIHJldXNlIGFuIGl0ZW0gYnVmZmVyIGluIHRoZSBy
ZXVzZSBxdWV1ZSwgaWYgcG9zc2libGUsIGFuZCBmYWxsIGJhY2sgdG8gYWxsb2NhdGluZyBhIG5l
dyBjaHVuayBvZiBzaGFyZWQKKyAgICAgICAgbWVtb3J5IGlmIG5vIHJldXNhYmxlIGJ1ZmZlciBp
cyBmb3VuZCAob3IgdGhlIGV4aXN0aW5nIGJ1ZmZlcnMgaGF2ZSBpbnN1ZmZpY2llbnQgY2FwYWNp
dHkpLiBUaGUgZmFjdCB0aGF0IHdlCisgICAgICAgIGl0ZXJhdGUgdGhyb3VnaCBlYWNoIHJldXNh
YmxlIGJ1ZmZlciBpbiBvcmRlciwgY29tYmluZWQgd2l0aCB0aGUgYWJvdmUgbG9naWMgaW4gYHVw
ZGF0ZVJldXNhYmxlSGFuZGxlc2AsIGVuc3VyZXMKKyAgICAgICAgdGhhdCBvbmNlIHdlIGJlZ2lu
IHdyaXRpbmcgdG8gYSBpdGVtIGJ1ZmZlciwgd2Ugd2lsbCBjb250aW51ZSB1c2luZyB0aGF0IGl0
ZW0gYnVmZmVyIHVudGlsIGl0IGV4aGF1c3RzIGF2YWlsYWJsZQorICAgICAgICBjYXBhY2l0eS4K
KworICAgICAgICBUaGlzIHByb3BlcnR5IGlzIGltcG9ydGFudCBiZWNhdXNlIGl0IGFsbG93cyB0
aGUgR1BVIHByb2Nlc3MgdG8gc2ltcGx5IHN0YXJ0IHJlYWRpbmcgaXRlbSBkYXRhIGZyb20gYSBn
aXZlbgorICAgICAgICBvZmZzZXQgYW5kIGJ1ZmZlciBJRCAoc3BlY2lmaWVkIGluIHRoZSBgV2Fr
ZVVwQW5kUHJvY2Vzc0Rpc3BsYXlMaXN0YCBJUEMgbWVzc2FnZSksIGFuZCBzZWFtbGVzc2x5IGNv
bnRpbnVlCisgICAgICAgIHJlYWRpbmcgZGF0YSBldmVuIGFmdGVyIGl0IGV4aGF1c3RzIGFsbCBh
dmFpbGFibGUgaXRlbSBkYXRhIGluIHRoZSBjdXJyZW50IGJ1ZmZlciBieSBjb250aW51aW5nIGZy
b20gdGhlIHN0YXJ0CisgICAgICAgIG9mIHRoZSBpdGVtIGJ1ZmZlciB0aGF0IGNvbnRhaW5zIHRo
ZSBuZXh0IGRpc3BsYXkgbGlzdCBpdGVtcyAod2hpY2ggd2UgbGVhcm4gaW4gdGhlIEdQVSBwcm9j
ZXNzIGJ5IGVuY291bnRlcmluZworICAgICAgICBhIGBTd2l0Y2hUb0J1ZmZlcmAgaXRlbSBhdCB0
aGUgZW5kIG9mIHRoZSBwcmV2aW91cyBidWZmZXIpLgorCisgICAgICAgIEluICJzdGVhZHkgc3Rh
dGUiICh3aGVyZWluIGJvdGggcHJvY2Vzc2VzIGFyZSBjb25jdXJyZW50bHkgd3JpdGluZyBhbmQg
cmVhZGluZyBpdGVtcyBhcyBxdWlja2x5IGFzIHBvc3NpYmxlKSwKKyAgICAgICAgdGhpcyBtZWFu
cyB0aGF0IGFzIHRoZSB3ZWIgcHJvY2VzcyBpcyBidXN5IGZpbGxpbmcgdXAgZWFjaCBpdGVtIGJ1
ZmZlciB3aXRoIGl0ZW0gZGF0YSwgdGhlIEdQVSBwcm9jZXNzIGlzIGFsc28KKyAgICAgICAgYnVz
eSBhcHBseWluZyBhbGwgdGhlIGl0ZW0gZGF0YSBpbiBvbmUgYnVmZmVyIGFuZCBhdXRvbWF0aWNh
bGx5IG1vdmluZyBvbiB0byB0aGUgbmV4dCBidWZmZXIgd2l0aCBubyBhZGRpdGlvbmFsCisgICAg
ICAgIElQQyBtZXNzYWdlcyByZXF1aXJlZC4KKworICAgICAgICAoV2ViS2l0OjpSZW1vdGVSZW5k
ZXJpbmdCYWNrZW5kUHJveHk6OmZsdXNoRGlzcGxheUxpc3RBbmRDb21taXQpOiBEZWxldGVkLgor
ICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQ
cm94eS5oOgorCiAyMDIwLTExLTA1ICBXZW5zb24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUu
Y29tPgogCiAgICAgICAgIEFkZCBhIGRpc3BsYXkgbGlzdCBpdGVtIHRvIHJlcHJlc2VudCBzdHJv
a2luZyBhIHNpbmdsZSBsaW5lCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mv
Z3JhcGhpY3MvRGlzcGxheUxpc3RSZWFkZXJIYW5kbGUuY3BwIGIvU291cmNlL1dlYktpdC9HUFVQ
cm9jZXNzL2dyYXBoaWNzL0Rpc3BsYXlMaXN0UmVhZGVySGFuZGxlLmNwcApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5l
ODYxOWM0M2YzNTQxNGM5ZmI2ODMwZDZmMjY4YzAyMmJiNTlkZjk0Ci0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL0Rpc3BsYXlMaXN0UmVhZGVySGFu
ZGxlLmNwcApAQCAtMCwwICsxLDQ0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycn
CisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwor
ICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICog
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5o
IgorI2luY2x1ZGUgIkRpc3BsYXlMaXN0UmVhZGVySGFuZGxlLmgiCisKK25hbWVzcGFjZSBXZWJL
aXQgewordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CisKK3ZvaWQgRGlzcGxheUxpc3RSZWFkZXJI
YW5kbGU6OmFkdmFuY2Uoc2l6ZV90IGFtb3VudCkKK3sKKyAgICB1bnJlYWRCeXRlc0hhbmRsZSgp
IC09IGFtb3VudDsKK30KKworc3RkOjp1bmlxdWVfcHRyPERpc3BsYXlMaXN0OjpEaXNwbGF5TGlz
dD4gRGlzcGxheUxpc3RSZWFkZXJIYW5kbGU6OmNyZWF0ZURpc3BsYXlMaXN0KHNpemVfdCBvZmZz
ZXQsIHNpemVfdCBjYXBhY2l0eSwgRGlzcGxheUxpc3Q6Okl0ZW1CdWZmZXJSZWFkaW5nQ2xpZW50
JiBjbGllbnQpIGNvbnN0Cit7CisgICAgYXV0byBkaXNwbGF5TGlzdCA9IG1ha2VVbmlxdWU8RGlz
cGxheUxpc3Q6OkRpc3BsYXlMaXN0PihEaXNwbGF5TGlzdDo6SXRlbUJ1ZmZlckhhbmRsZXMge3sg
aWRlbnRpZmllcigpLCBkYXRhKCkgKyBvZmZzZXQsIGNhcGFjaXR5IH19KTsKKyAgICBkaXNwbGF5
TGlzdC0+c2V0SXRlbUJ1ZmZlckNsaWVudCgmY2xpZW50KTsKKyAgICByZXR1cm4gZGlzcGxheUxp
c3Q7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9HUFVQcm9jZXNzL2dyYXBoaWNzL0Rpc3BsYXlMaXN0UmVhZGVySGFuZGxlLmggYi9Tb3VyY2Uv
V2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvRGlzcGxheUxpc3RSZWFkZXJIYW5kbGUuaApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi41ZjNiYjk5ZTFjNjVhZTdhNmE0YjNiMjc3MjgwMDg0MzA2MTA4Yzg5Ci0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL0Rpc3BsYXlMaXN0
UmVhZGVySGFuZGxlLmgKQEAgLTAsMCArMSw0NSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAy
MCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBg
QVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklC
VVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25j
ZQorCisjaW5jbHVkZSAiU2hhcmVkRGlzcGxheUxpc3RIYW5kbGUuaCIKKyNpbmNsdWRlIDx3dGYv
RmFzdE1hbGxvYy5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3MgRGlzcGxheUxpc3RS
ZWFkZXJIYW5kbGUgOiBwdWJsaWMgU2hhcmVkRGlzcGxheUxpc3RIYW5kbGUgeworICAgIFdURl9N
QUtFX05PTkNPUFlBQkxFKERpc3BsYXlMaXN0UmVhZGVySGFuZGxlKTsgV1RGX01BS0VfRkFTVF9B
TExPQ0FURUQ7CitwdWJsaWM6CisgICAgRGlzcGxheUxpc3RSZWFkZXJIYW5kbGUoV2ViQ29yZTo6
RGlzcGxheUxpc3Q6Okl0ZW1CdWZmZXJJZGVudGlmaWVyIGlkZW50aWZpZXIsIFJlZjxTaGFyZWRN
ZW1vcnk+JiYgc2hhcmVkTWVtb3J5KQorICAgICAgICA6IFNoYXJlZERpc3BsYXlMaXN0SGFuZGxl
KGlkZW50aWZpZXIsIFdURk1vdmUoc2hhcmVkTWVtb3J5KSkKKyAgICB7CisgICAgfQorCisgICAg
dm9pZCBhZHZhbmNlKHNpemVfdCBhbW91bnQpIG92ZXJyaWRlOworICAgIHN0ZDo6dW5pcXVlX3B0
cjxXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RGlzcGxheUxpc3Q+IGNyZWF0ZURpc3BsYXlMaXN0KHNp
emVfdCBvZmZzZXQsIHNpemVfdCBjYXBhY2l0eSwgV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1C
dWZmZXJSZWFkaW5nQ2xpZW50JikgY29uc3Q7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVJbWFn
ZUJ1ZmZlci5oIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUltYWdl
QnVmZmVyLmgKaW5kZXggNTcxODE0YzAyMjI0Y2UxZTk5YTZmYzI3ZTJlM2Q0MjAxMDI0YTEwYi4u
MDZhZjNmZTNlZjcwZTUwOTM1ZGY4YjM5MGE0YjdlNDE1ZGU5ZmE1NSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUltYWdlQnVmZmVyLmgKKysrIGIv
U291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUltYWdlQnVmZmVyLmgKQEAg
LTUyLDYgKzUyLDcgQEAgcHVibGljOgogICAgIFJlbW90ZUltYWdlQnVmZmVyKHN0ZDo6dW5pcXVl
X3B0cjxCYWNrZW5kVHlwZT4mJiBiYWNrZW5kLCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kJiByZW1v
dGVSZW5kZXJpbmdCYWNrZW5kLCBXZWJDb3JlOjpSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIg
cmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKQogICAgICAgICA6IEJhc2VDb25jcmV0ZUltYWdl
QnVmZmVyKFdURk1vdmUoYmFja2VuZCkpCiAgICAgICAgICwgbV9yZW1vdGVSZW5kZXJpbmdCYWNr
ZW5kKHJlbW90ZVJlbmRlcmluZ0JhY2tlbmQpCisgICAgICAgICwgbV9yZW5kZXJpbmdSZXNvdXJj
ZUlkZW50aWZpZXIocmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKQogICAgIHsKICAgICAgICAg
bV9yZW1vdGVSZW5kZXJpbmdCYWNrZW5kLmltYWdlQnVmZmVyQmFja2VuZFdhc0NyZWF0ZWQobV9i
YWNrZW5kLT5sb2dpY2FsU2l6ZSgpLCBtX2JhY2tlbmQtPmJhY2tlbmRTaXplKCksIG1fYmFja2Vu
ZC0+cmVzb2x1dGlvblNjYWxlKCksIG1fYmFja2VuZC0+Y29sb3JTcGFjZSgpLCBtX2JhY2tlbmQt
PmNyZWF0ZUltYWdlQnVmZmVyQmFja2VuZEhhbmRsZSgpLCByZW5kZXJpbmdSZXNvdXJjZUlkZW50
aWZpZXIpOwogICAgIH0KQEAgLTgyLDEyICs4MywxNSBAQCBwcml2YXRlOgogICAgICAgICB9CiAK
ICAgICAgICAgaWYgKGl0ZW0uaXM8V2ViQ29yZTo6RGlzcGxheUxpc3Q6OkZsdXNoQ29udGV4dD4o
KSkgewotICAgICAgICAgICAgLy8gRklYTUU6IE5vdCBpbXBsZW1lbnRlZCB5ZXQuCisgICAgICAg
ICAgICBCYXNlQ29uY3JldGVJbWFnZUJ1ZmZlcjo6Zmx1c2hDb250ZXh0KCk7CisgICAgICAgICAg
ICBhdXRvIGlkZW50aWZpZXIgPSBpdGVtLmdldDxXZWJDb3JlOjpEaXNwbGF5TGlzdDo6Rmx1c2hD
b250ZXh0PigpLmlkZW50aWZpZXIoKTsKKyAgICAgICAgICAgIG1fcmVtb3RlUmVuZGVyaW5nQmFj
a2VuZC5mbHVzaERpc3BsYXlMaXN0V2FzQ29tbWl0dGVkKGlkZW50aWZpZXIsIG1fcmVuZGVyaW5n
UmVzb3VyY2VJZGVudGlmaWVyKTsKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICB9
CiAKICAgICAgICAgaWYgKGl0ZW0uaXM8V2ViQ29yZTo6RGlzcGxheUxpc3Q6OlN3aXRjaFRvQnVm
ZmVyPigpKSB7Ci0gICAgICAgICAgICAvLyBGSVhNRTogTm90IGltcGxlbWVudGVkIHlldC4KKyAg
ICAgICAgICAgIGF1dG8gbmV4dEJ1ZmZlcklkZW50aWZpZXIgPSBpdGVtLmdldDxXZWJDb3JlOjpE
aXNwbGF5TGlzdDo6U3dpdGNoVG9CdWZmZXI+KCkuaWRlbnRpZmllcigpOworICAgICAgICAgICAg
bV9yZW1vdGVSZW5kZXJpbmdCYWNrZW5kLnNldE5leHRJdGVtQnVmZmVyVG9SZWFkKG5leHRCdWZm
ZXJJZGVudGlmaWVyKTsKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICB9CiAKQEAg
LTIxMCw2ICsyMTQsNyBAQCBwcml2YXRlOgogICAgIH0KIAogICAgIFJlbW90ZVJlbmRlcmluZ0Jh
Y2tlbmQmIG1fcmVtb3RlUmVuZGVyaW5nQmFja2VuZDsKKyAgICBXZWJDb3JlOjpSZW5kZXJpbmdS
ZXNvdXJjZUlkZW50aWZpZXIgbV9yZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXI7CiB9OwogCiB9
IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vz
cy9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kLmNwcCBiL1NvdXJjZS9XZWJLaXQvR1BV
UHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kLmNwcAppbmRleCAxYjNiMmVj
ZGZiNWQxOWQzMWEyNTcwYmIyZWM0MTY1MDQxMGE4ZmRjLi41NDRiM2VjNWZjZTlkN2Y1MjhlMmQx
ZWJiOTkwYjUyM2VlNGY4YjZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mv
Z3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9H
UFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQuY3BwCkBAIC0yOCw2ICsy
OCw3IEBACiAKICNpZiBFTkFCTEUoR1BVX1BST0NFU1MpCiAKKyNpbmNsdWRlICJEaXNwbGF5TGlz
dFJlYWRlckhhbmRsZS5oIgogI2luY2x1ZGUgIkdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaCIK
ICNpbmNsdWRlICJQbGF0Zm9ybVJlbW90ZUltYWdlQnVmZmVyLmgiCiAjaW5jbHVkZSAiUmVtb3Rl
UmVuZGVyaW5nQmFja2VuZE1lc3NhZ2VzLmgiCkBAIC0xMzksNDUgKzE0MCw3MyBAQCB2b2lkIFJl
bW90ZVJlbmRlcmluZ0JhY2tlbmQ6OmNyZWF0ZUltYWdlQnVmZmVyKGNvbnN0IEZsb2F0U2l6ZSYg
bG9naWNhbFNpemUsIFJlbgogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogfQogCi12b2lkIFJl
bW90ZVJlbmRlcmluZ0JhY2tlbmQ6OmFwcGx5RGlzcGxheUxpc3QoY29uc3QgU2hhcmVkRGlzcGxh
eUxpc3RIYW5kbGUmIGhhbmRsZSwgUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyIHJlbmRlcmlu
Z1Jlc291cmNlSWRlbnRpZmllciwgU2hvdWxkRmx1c2hDb250ZXh0IGZsdXNoQ29udGV4dCkKK3Zv
aWQgUmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6d2FrZVVwQW5kUHJvY2Vzc0Rpc3BsYXlMaXN0KFdl
YkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtQnVmZmVySWRlbnRpZmllciBpbml0aWFsSWRlbnRpZmll
ciwgc2l6ZV90IGluaXRpYWxPZmZzZXQsIFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciByZW5k
ZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpCiB7Ci0gICAgYXV0byBkaXNwbGF5TGlzdCA9IGhhbmRs
ZS5jcmVhdGVEaXNwbGF5TGlzdChbJl0gKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtQnVmZmVy
SWRlbnRpZmllciBpZGVudGlmaWVyKSAtPiB1aW50OF90KiB7Ci0gICAgICAgIGlmIChhdXRvIHNo
YXJlZE1lbW9yeSA9IG1fc2hhcmVkSXRlbUJ1ZmZlcnMudGFrZShpZGVudGlmaWVyKSkKLSAgICAg
ICAgICAgIHJldHVybiByZWludGVycHJldF9jYXN0PHVpbnQ4X3QqPihzaGFyZWRNZW1vcnktPmRh
dGEoKSk7Ci0gICAgICAgIHJldHVybiBudWxscHRyOwotICAgIH0pOwotCi0gICAgaWYgKCFkaXNw
bGF5TGlzdCkgeworICAgIGF1dG8gaW1hZ2VCdWZmZXIgPSBtX3JlbW90ZVJlc291cmNlQ2FjaGUu
Y2FjaGVkSW1hZ2VCdWZmZXIocmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKTsKKyAgICBpZiAo
IWltYWdlQnVmZmVyKSB7CiAgICAgICAgIC8vIEZJWE1FOiBBZGQgYSBtZXNzYWdlIGNoZWNrIHRv
IHRlcm1pbmF0ZSB0aGUgd2ViIHByb2Nlc3MuCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAg
ICBhdXRvIGltYWdlQnVmZmVyID0gbV9yZW1vdGVSZXNvdXJjZUNhY2hlLmNhY2hlZEltYWdlQnVm
ZmVyKHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcik7Ci0gICAgaWYgKCFpbWFnZUJ1ZmZlcikg
eworICAgIGF1dG8qIHNoYXJlZEhhbmRsZSA9IG1fc2hhcmVkRGlzcGxheUxpc3RIYW5kbGVzLmdl
dChpbml0aWFsSWRlbnRpZmllcik7CisgICAgaWYgKCFzaGFyZWRIYW5kbGUpIHsKICAgICAgICAg
Ly8gRklYTUU6IEFkZCBhIG1lc3NhZ2UgY2hlY2sgdG8gdGVybWluYXRlIHRoZSB3ZWIgcHJvY2Vz
cy4KICAgICAgICAgcmV0dXJuOwogICAgIH0KIAorICAgIERpc3BsYXlMaXN0OjpJdGVtQnVmZmVy
UmVhZGluZ0NsaWVudCogaXRlbUJ1ZmZlckNsaWVudDsKICAgICBpZiAoaW1hZ2VCdWZmZXItPmlz
QWNjZWxlcmF0ZWQoKSkKLSAgICAgICAgZGlzcGxheUxpc3QtPnNldEl0ZW1CdWZmZXJDbGllbnQo
c3RhdGljX2Nhc3Q8QWNjZWxlcmF0ZWRSZW1vdGVJbWFnZUJ1ZmZlcio+KGltYWdlQnVmZmVyKSk7
CisgICAgICAgIGl0ZW1CdWZmZXJDbGllbnQgPSBzdGF0aWNfY2FzdDxBY2NlbGVyYXRlZFJlbW90
ZUltYWdlQnVmZmVyKj4oaW1hZ2VCdWZmZXIpOwogICAgIGVsc2UKLSAgICAgICAgZGlzcGxheUxp
c3QtPnNldEl0ZW1CdWZmZXJDbGllbnQoc3RhdGljX2Nhc3Q8VW5hY2NlbGVyYXRlZFJlbW90ZUlt
YWdlQnVmZmVyKj4oaW1hZ2VCdWZmZXIpKTsKKyAgICAgICAgaXRlbUJ1ZmZlckNsaWVudCA9IHN0
YXRpY19jYXN0PFVuYWNjZWxlcmF0ZWRSZW1vdGVJbWFnZUJ1ZmZlcio+KGltYWdlQnVmZmVyKTsK
IAotICAgIGltYWdlQnVmZmVyLT5mbHVzaERpc3BsYXlMaXN0KCpkaXNwbGF5TGlzdCk7CisgICAg
c2l6ZV90IG9mZnNldCA9IGluaXRpYWxPZmZzZXQ7CisgICAgc2l6ZV90IHNpemVUb1JlYWQgPSAw
OwogCi0gICAgaWYgKGZsdXNoQ29udGV4dCA9PSBTaG91bGRGbHVzaENvbnRleHQ6OlllcykKLSAg
ICAgICAgaW1hZ2VCdWZmZXItPmZsdXNoQ29udGV4dCgpOwotfQorICAgIHsKKyAgICAgICAgU2hh
cmVkRGlzcGxheUxpc3RIYW5kbGU6OkxvY2sgbG9ja2VyIHsgKnNoYXJlZEhhbmRsZSB9OworICAg
ICAgICBzaXplVG9SZWFkID0gc2hhcmVkSGFuZGxlLT51bnJlYWRCeXRlcygpOworICAgIH0KIAot
dm9pZCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpmbHVzaERpc3BsYXlMaXN0KGNvbnN0IFNoYXJl
ZERpc3BsYXlMaXN0SGFuZGxlJiBoYW5kbGUsIFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciBy
ZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpCi17Ci0gICAgYXBwbHlEaXNwbGF5TGlzdChoYW5k
bGUsIHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciwgU2hvdWxkRmx1c2hDb250ZXh0OjpObyk7
CisgICAgd2hpbGUgKHNpemVUb1JlYWQpIHsKKyAgICAgICAgaW1hZ2VCdWZmZXItPmZsdXNoRGlz
cGxheUxpc3QoKnNoYXJlZEhhbmRsZS0+Y3JlYXRlRGlzcGxheUxpc3Qob2Zmc2V0LCBzaXplVG9S
ZWFkLCAqaXRlbUJ1ZmZlckNsaWVudCkpOworCisgICAgICAgIG9mZnNldCArPSBzaXplVG9SZWFk
OworICAgICAgICB7CisgICAgICAgICAgICBTaGFyZWREaXNwbGF5TGlzdEhhbmRsZTo6TG9jayBs
b2NrZXIgeyAqc2hhcmVkSGFuZGxlIH07CisgICAgICAgICAgICBzaGFyZWRIYW5kbGUtPmFkdmFu
Y2Uoc2l6ZVRvUmVhZCk7CisgICAgICAgICAgICBzaXplVG9SZWFkID0gc2hhcmVkSGFuZGxlLT51
bnJlYWRCeXRlcygpOworICAgICAgICB9CisgICAgICAgIGlmIChzaXplVG9SZWFkKQorICAgICAg
ICAgICAgY29udGludWU7CisKKyAgICAgICAgYXV0byBuZXh0SWRlbnRpZmllciA9IHN0ZDo6ZXhj
aGFuZ2UobV9uZXh0SXRlbUJ1ZmZlclRvUmVhZCwgeyB9KTsKKyAgICAgICAgaWYgKCFuZXh0SWRl
bnRpZmllcikKKyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgIHNoYXJlZEhhbmRsZSA9IG1f
c2hhcmVkRGlzcGxheUxpc3RIYW5kbGVzLmdldChuZXh0SWRlbnRpZmllcik7CisgICAgICAgIGlm
ICghc2hhcmVkSGFuZGxlKSB7CisgICAgICAgICAgICBtX25leHRJdGVtQnVmZmVyVG9SZWFkID0g
bmV4dElkZW50aWZpZXI7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorCisgICAgICAg
IG9mZnNldCA9IFNoYXJlZERpc3BsYXlMaXN0SGFuZGxlOjpyZXNlcnZlZENhcGFjaXR5QXRTdGFy
dDsKKworICAgICAgICBkbyB7CisgICAgICAgICAgICBTaGFyZWREaXNwbGF5TGlzdEhhbmRsZTo6
TG9jayBuZXh0QnVmZmVyTG9ja2VyIHsgKnNoYXJlZEhhbmRsZSB9OworICAgICAgICAgICAgc2l6
ZVRvUmVhZCA9IHNoYXJlZEhhbmRsZS0+dW5yZWFkQnl0ZXMoKTsKKyAgICAgICAgICAgIHN0ZDo6
dGhpc190aHJlYWQ6OnlpZWxkKCk7CisgICAgICAgIH0gd2hpbGUgKCFzaXplVG9SZWFkKTsKKyAg
ICB9CiB9CiAKLXZvaWQgUmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6Zmx1c2hEaXNwbGF5TGlzdEFu
ZENvbW1pdChjb25zdCBTaGFyZWREaXNwbGF5TGlzdEhhbmRsZSYgaGFuZGxlLCBEaXNwbGF5TGlz
dDo6Rmx1c2hJZGVudGlmaWVyIGZsdXNoSWRlbnRpZmllciwgUmVuZGVyaW5nUmVzb3VyY2VJZGVu
dGlmaWVyIHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcikKK3ZvaWQgUmVtb3RlUmVuZGVyaW5n
QmFja2VuZDo6c2V0TmV4dEl0ZW1CdWZmZXJUb1JlYWQoV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0
ZW1CdWZmZXJJZGVudGlmaWVyIGlkZW50aWZpZXIpCiB7Ci0gICAgYXBwbHlEaXNwbGF5TGlzdCho
YW5kbGUsIHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciwgU2hvdWxkRmx1c2hDb250ZXh0OjpZ
ZXMpOwotICAgIGZsdXNoRGlzcGxheUxpc3RXYXNDb21taXR0ZWQoZmx1c2hJZGVudGlmaWVyLCBy
ZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpOworICAgIGlmIChVTkxJS0VMWShtX25leHRJdGVt
QnVmZmVyVG9SZWFkKSkgeworICAgICAgICAvLyBGSVhNRTogQWRkIGEgbWVzc2FnZSBjaGVjayB0
byB0ZXJtaW5hdGUgdGhlIHdlYiBwcm9jZXNzLgorICAgICAgICByZXR1cm47CisgICAgfQorICAg
IG1fbmV4dEl0ZW1CdWZmZXJUb1JlYWQgPSBpZGVudGlmaWVyOwogfQogCiB2b2lkIFJlbW90ZVJl
bmRlcmluZ0JhY2tlbmQ6OmdldEltYWdlRGF0YShBbHBoYVByZW11bHRpcGxpY2F0aW9uIG91dHB1
dEZvcm1hdCwgSW50UmVjdCBzcmNSZWN0LCBSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgcmVu
ZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKElQQzo6SW1h
Z2VEYXRhUmVmZXJlbmNlJiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQpAQCAtMTkzLDEwICsyMjIs
MTUgQEAgdm9pZCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpyZWxlYXNlUmVtb3RlUmVzb3VyY2Uo
UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyIHIKICAgICBtX3JlbW90ZVJlc291cmNlQ2FjaGUu
cmVsZWFzZVJlbW90ZVJlc291cmNlKHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcik7CiB9CiAK
LXZvaWQgUmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6ZGlkQ3JlYXRlU2hhcmVkSXRlbURhdGEoRGlz
cGxheUxpc3Q6Okl0ZW1CdWZmZXJJZGVudGlmaWVyIGlkZW50aWZpZXIsIGNvbnN0IFNoYXJlZE1l
bW9yeTo6SVBDSGFuZGxlJiBoYW5kbGUpCit2b2lkIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OmRp
ZENyZWF0ZVNoYXJlZERpc3BsYXlMaXN0SGFuZGxlKERpc3BsYXlMaXN0OjpJdGVtQnVmZmVySWRl
bnRpZmllciBpZGVudGlmaWVyLCBjb25zdCBTaGFyZWRNZW1vcnk6OklQQ0hhbmRsZSYgaGFuZGxl
LCBSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgcmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyKQog
ewotICAgIGlmIChhdXRvIHNoYXJlZE1lbW9yeSA9IFNoYXJlZE1lbW9yeTo6bWFwKGhhbmRsZS5o
YW5kbGUsIFNoYXJlZE1lbW9yeTo6UHJvdGVjdGlvbjo6UmVhZE9ubHkpKQotICAgICAgICBtX3No
YXJlZEl0ZW1CdWZmZXJzLnNldChpZGVudGlmaWVyLCBXVEZNb3ZlKHNoYXJlZE1lbW9yeSkpOwor
ICAgIGlmIChhdXRvIHNoYXJlZE1lbW9yeSA9IFNoYXJlZE1lbW9yeTo6bWFwKGhhbmRsZS5oYW5k
bGUsIFNoYXJlZE1lbW9yeTo6UHJvdGVjdGlvbjo6UmVhZFdyaXRlKSkKKyAgICAgICAgbV9zaGFy
ZWREaXNwbGF5TGlzdEhhbmRsZXMuc2V0KGlkZW50aWZpZXIsIG1ha2VVbmlxdWU8RGlzcGxheUxp
c3RSZWFkZXJIYW5kbGU+KGlkZW50aWZpZXIsIHNoYXJlZE1lbW9yeS5yZWxlYXNlTm9uTnVsbCgp
KSk7CisKKyAgICBpZiAobV9uZXh0SXRlbUJ1ZmZlclRvUmVhZCA9PSBpZGVudGlmaWVyKSB7Cisg
ICAgICAgIG1fbmV4dEl0ZW1CdWZmZXJUb1JlYWQgPSB7IH07CisgICAgICAgIHdha2VVcEFuZFBy
b2Nlc3NEaXNwbGF5TGlzdChpZGVudGlmaWVyLCBTaGFyZWREaXNwbGF5TGlzdEhhbmRsZTo6cmVz
ZXJ2ZWRDYXBhY2l0eUF0U3RhcnQsIHJlbW90ZVJlc291cmNlSWRlbnRpZmllcik7CisgICAgfQog
fQogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BV
UHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kLmggYi9Tb3VyY2UvV2ViS2l0
L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5oCmluZGV4IDU1MzQ4
YWI1MDkzNTliOGU3ZTE5MDExODFmMjY4MDFiZjIwMjg0ZTYuLjRlMDRiNjdmM2IxZGJkMmI1YmEz
ZTc2YjY1NWRjYTY5ZmVlZjdjYTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vz
cy9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kLmgKKysrIGIvU291cmNlL1dlYktpdC9H
UFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQuaApAQCAtMzQsNyArMzQs
NiBAQAogI2luY2x1ZGUgIk1lc3NhZ2VTZW5kZXIuaCIKICNpbmNsdWRlICJSZW1vdGVSZXNvdXJj
ZUNhY2hlLmgiCiAjaW5jbHVkZSAiUmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXIuaCIKLSNpbmNs
dWRlICJTaGFyZWREaXNwbGF5TGlzdEhhbmRsZS5oIgogI2luY2x1ZGUgPFdlYkNvcmUvQ29sb3JT
cGFjZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRGlzcGxheUxpc3QuaD4KICNpbmNsdWRlIDxXZWJD
b3JlL0Rpc3BsYXlMaXN0SXRlbXMuaD4KQEAgLTUyLDYgKzUxLDcgQEAgZW51bSBjbGFzcyBSZW5k
ZXJpbmdNb2RlIDogYm9vbDsKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKK2NsYXNzIERpc3BsYXlM
aXN0UmVhZGVySGFuZGxlOwogY2xhc3MgR1BVQ29ubmVjdGlvblRvV2ViUHJvY2VzczsKIAogY2xh
c3MgUmVtb3RlUmVuZGVyaW5nQmFja2VuZApAQCAtNzEsMTIgKzcxLDExIEBAIHB1YmxpYzoKICAg
ICB2b2lkIGltYWdlQnVmZmVyQmFja2VuZFdhc0NyZWF0ZWQoY29uc3QgV2ViQ29yZTo6RmxvYXRT
aXplJiBsb2dpY2FsU2l6ZSwgY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYgYmFja2VuZFNpemUsIGZs
b2F0IHJlc29sdXRpb25TY2FsZSwgV2ViQ29yZTo6Q29sb3JTcGFjZSwgSW1hZ2VCdWZmZXJCYWNr
ZW5kSGFuZGxlLCBXZWJDb3JlOjpSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpOwogICAgIHZv
aWQgZmx1c2hEaXNwbGF5TGlzdFdhc0NvbW1pdHRlZChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6Rmx1
c2hJZGVudGlmaWVyLCBXZWJDb3JlOjpSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpOwogCisg
ICAgdm9pZCBzZXROZXh0SXRlbUJ1ZmZlclRvUmVhZChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRl
bUJ1ZmZlcklkZW50aWZpZXIpOworCiBwcml2YXRlOgogICAgIFJlbW90ZVJlbmRlcmluZ0JhY2tl
bmQoR1BVQ29ubmVjdGlvblRvV2ViUHJvY2VzcyYsIFJlbmRlcmluZ0JhY2tlbmRJZGVudGlmaWVy
KTsKIAotICAgIGVudW0gY2xhc3MgU2hvdWxkRmx1c2hDb250ZXh0IDogYm9vbCB7IE5vLCBZZXMg
fTsKLSAgICB2b2lkIGFwcGx5RGlzcGxheUxpc3QoY29uc3QgU2hhcmVkRGlzcGxheUxpc3RIYW5k
bGUmLCBXZWJDb3JlOjpSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIsIFNob3VsZEZsdXNoQ29u
dGV4dCk7Ci0KICAgICAvLyBJUEM6Ok1lc3NhZ2VTZW5kZXIuCiAgICAgSVBDOjpDb25uZWN0aW9u
KiBtZXNzYWdlU2VuZGVyQ29ubmVjdGlvbigpIGNvbnN0IG92ZXJyaWRlOwogICAgIHVpbnQ2NF90
IG1lc3NhZ2VTZW5kZXJEZXN0aW5hdGlvbklEKCkgY29uc3Qgb3ZlcnJpZGU7CkBAIC04NywxNiAr
ODYsMTYgQEAgcHJpdmF0ZToKIAogICAgIC8vIE1lc3NhZ2VzIHRvIGJlIHJlY2VpdmVkLgogICAg
IHZvaWQgY3JlYXRlSW1hZ2VCdWZmZXIoY29uc3QgV2ViQ29yZTo6RmxvYXRTaXplJiBsb2dpY2Fs
U2l6ZSwgV2ViQ29yZTo6UmVuZGVyaW5nTW9kZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBXZWJD
b3JlOjpDb2xvclNwYWNlLCBXZWJDb3JlOjpSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpOwot
ICAgIHZvaWQgZmx1c2hEaXNwbGF5TGlzdChjb25zdCBTaGFyZWREaXNwbGF5TGlzdEhhbmRsZSYs
IFdlYkNvcmU6OlJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcik7Ci0gICAgdm9pZCBmbHVzaERp
c3BsYXlMaXN0QW5kQ29tbWl0KGNvbnN0IFNoYXJlZERpc3BsYXlMaXN0SGFuZGxlJiwgV2ViQ29y
ZTo6RGlzcGxheUxpc3Q6OkZsdXNoSWRlbnRpZmllciwgV2ViQ29yZTo6UmVuZGVyaW5nUmVzb3Vy
Y2VJZGVudGlmaWVyKTsKKyAgICB2b2lkIHdha2VVcEFuZFByb2Nlc3NEaXNwbGF5TGlzdChXZWJD
b3JlOjpEaXNwbGF5TGlzdDo6SXRlbUJ1ZmZlcklkZW50aWZpZXIgaW5pdGlhbElkZW50aWZpZXIs
IHNpemVfdCBpbml0aWFsT2Zmc2V0LCBXZWJDb3JlOjpSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZp
ZXIpOwogICAgIHZvaWQgZ2V0SW1hZ2VEYXRhKFdlYkNvcmU6OkFscGhhUHJlbXVsdGlwbGljYXRp
b24gb3V0cHV0Rm9ybWF0LCBXZWJDb3JlOjpJbnRSZWN0IHNyY1JlY3QsIFdlYkNvcmU6OlJlbmRl
cmluZ1Jlc291cmNlSWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChJUEM6OkltYWdl
RGF0YVJlZmVyZW5jZSYmKT4mJik7CiAgICAgdm9pZCByZWxlYXNlUmVtb3RlUmVzb3VyY2UoV2Vi
Q29yZTo6UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKTsKLSAgICB2b2lkIGRpZENyZWF0ZVNo
YXJlZEl0ZW1EYXRhKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtQnVmZmVySWRlbnRpZmllciwg
Y29uc3QgU2hhcmVkTWVtb3J5OjpJUENIYW5kbGUmKTsKKyAgICB2b2lkIGRpZENyZWF0ZVNoYXJl
ZERpc3BsYXlMaXN0SGFuZGxlKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtQnVmZmVySWRlbnRp
ZmllciwgY29uc3QgU2hhcmVkTWVtb3J5OjpJUENIYW5kbGUmLCBXZWJDb3JlOjpSZW5kZXJpbmdS
ZXNvdXJjZUlkZW50aWZpZXIpOwogCiAgICAgUmVtb3RlUmVzb3VyY2VDYWNoZSBtX3JlbW90ZVJl
c291cmNlQ2FjaGU7CiAgICAgV2Vha1B0cjxHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzPiBtX2dw
dUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M7CiAgICAgUmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXIg
bV9yZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllcjsKLSAgICBIYXNoTWFwPFdlYkNvcmU6OkRpc3Bs
YXlMaXN0OjpJdGVtQnVmZmVySWRlbnRpZmllciwgUmVmUHRyPFNoYXJlZE1lbW9yeT4+IG1fc2hh
cmVkSXRlbUJ1ZmZlcnM7CisgICAgSGFzaE1hcDxXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbUJ1
ZmZlcklkZW50aWZpZXIsIHN0ZDo6dW5pcXVlX3B0cjxEaXNwbGF5TGlzdFJlYWRlckhhbmRsZT4+
IG1fc2hhcmVkRGlzcGxheUxpc3RIYW5kbGVzOworICAgIFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJ
dGVtQnVmZmVySWRlbnRpZmllciBtX25leHRJdGVtQnVmZmVyVG9SZWFkOwogfTsKIAogfSAvLyBu
YW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3Jh
cGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQv
R1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kLm1lc3NhZ2VzLmluCmlu
ZGV4IDE4Nzg1YWRjMGZkMWI2MjAzZTUxMTQyYTk0NjQ2NzVmYmE0YTE3OTMuLjczMTFjNjZiYmIx
NmI4ZmEwOGZiMmMwYjkwMjRhOTY2NTg4NjBkZDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
R1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kLm1lc3NhZ2VzLmluCisr
KyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNr
ZW5kLm1lc3NhZ2VzLmluCkBAIC0yNCwxMCArMjQsOSBAQAogCiBtZXNzYWdlcyAtPiBSZW1vdGVS
ZW5kZXJpbmdCYWNrZW5kIE5vdFJlZkNvdW50ZWQgewogICAgIENyZWF0ZUltYWdlQnVmZmVyKFdl
YkNvcmU6OkZsb2F0U2l6ZSBsb2dpY2FsU2l6ZSwgV2ViQ29yZTo6UmVuZGVyaW5nTW9kZSByZW5k
ZXJpbmdNb2RlLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIFdlYkNvcmU6OkNvbG9yU3BhY2UgY29s
b3JTcGFjZSwgV2ViQ29yZTo6UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyIHJlbmRlcmluZ1Jl
c291cmNlSWRlbnRpZmllcikKLSAgICBGbHVzaERpc3BsYXlMaXN0KFdlYktpdDo6U2hhcmVkRGlz
cGxheUxpc3RIYW5kbGUgZGlzcGxheUxpc3QsIFdlYkNvcmU6OlJlbmRlcmluZ1Jlc291cmNlSWRl
bnRpZmllciByZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpCi0gICAgRmx1c2hEaXNwbGF5TGlz
dEFuZENvbW1pdChXZWJLaXQ6OlNoYXJlZERpc3BsYXlMaXN0SGFuZGxlIGRpc3BsYXlMaXN0LCBX
ZWJDb3JlOjpEaXNwbGF5TGlzdDo6Rmx1c2hJZGVudGlmaWVyIGZsdXNoSWRlbnRpZmllciwgV2Vi
Q29yZTo6UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyIHJlbmRlcmluZ1Jlc291cmNlSWRlbnRp
ZmllcikKKyAgICBXYWtlVXBBbmRQcm9jZXNzRGlzcGxheUxpc3QoV2ViQ29yZTo6RGlzcGxheUxp
c3Q6Okl0ZW1CdWZmZXJJZGVudGlmaWVyIGluaXRpYWxJZGVudGlmaWVyLCBzaXplX3QgaW5pdGlh
bE9mZnNldCwgV2ViQ29yZTo6UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyIHJlbmRlcmluZ1Jl
c291cmNlSWRlbnRpZmllcikKICAgICBHZXRJbWFnZURhdGEoZW51bTp1aW50OF90IFdlYkNvcmU6
OkFscGhhUHJlbXVsdGlwbGljYXRpb24gb3V0cHV0Rm9ybWF0LCBXZWJDb3JlOjpJbnRSZWN0IHNy
Y1JlY3QsIFdlYkNvcmU6OlJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciByZW5kZXJpbmdSZXNv
dXJjZUlkZW50aWZpZXIpIC0+IChJUEM6OkltYWdlRGF0YVJlZmVyZW5jZSBpbWFnZURhdGEpIFN5
bmNocm9ub3VzCi0gICAgRGlkQ3JlYXRlU2hhcmVkSXRlbURhdGEoV2ViQ29yZTo6RGlzcGxheUxp
c3Q6Okl0ZW1CdWZmZXJJZGVudGlmaWVyIGlkZW50aWZpZXIsIFdlYktpdDo6U2hhcmVkTWVtb3J5
OjpJUENIYW5kbGUgaGFuZGxlKQorICAgIERpZENyZWF0ZVNoYXJlZERpc3BsYXlMaXN0SGFuZGxl
KFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtQnVmZmVySWRlbnRpZmllciBpZGVudGlmaWVyLCBX
ZWJLaXQ6OlNoYXJlZE1lbW9yeTo6SVBDSGFuZGxlIGhhbmRsZSwgV2ViQ29yZTo6UmVuZGVyaW5n
UmVzb3VyY2VJZGVudGlmaWVyIHJlbW90ZVJlc291cmNlSWRlbnRpZmllcikKICAgICBSZWxlYXNl
UmVtb3RlUmVzb3VyY2UoV2ViQ29yZTo6UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyIHJlbmRl
cmluZ1Jlc291cmNlSWRlbnRpZmllcikKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9T
aGFyZWQvU2hhcmVkRGlzcGxheUxpc3RIYW5kbGUuY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQv
U2hhcmVkRGlzcGxheUxpc3RIYW5kbGUuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAxYWE3NGQ2MTVhYmQzZjRhMzE4NjI1MmZmMGZkY2I4NzFlNzBmYTUwLi4wMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1No
YXJlZERpc3BsYXlMaXN0SGFuZGxlLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDUzICswLDAgQEAK
LS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiU2hhcmVkRGlzcGxh
eUxpc3RIYW5kbGUuaCIKLQotbmFtZXNwYWNlIFdlYktpdCB7Ci11c2luZyBuYW1lc3BhY2UgV2Vi
Q29yZTsKLQotU2hhcmVkRGlzcGxheUxpc3RIYW5kbGU6OlNoYXJlZERpc3BsYXlMaXN0SGFuZGxl
KGNvbnN0IERpc3BsYXlMaXN0OjpEaXNwbGF5TGlzdCYgZGlzcGxheUxpc3QpCi17Ci0gICAgZGlz
cGxheUxpc3QuZm9yRWFjaEl0ZW1CdWZmZXIoWyZdIChhdXRvJiBoYW5kbGUpIHsKLSAgICAgICAg
bV9idWZmZXJzLmFwcGVuZCh7IGhhbmRsZS5pZGVudGlmaWVyLCBoYW5kbGUuY2FwYWNpdHkgfSk7
Ci0gICAgfSk7Ci19Ci0KLXN0ZDo6dW5pcXVlX3B0cjxEaXNwbGF5TGlzdDo6RGlzcGxheUxpc3Q+
IFNoYXJlZERpc3BsYXlMaXN0SGFuZGxlOjpjcmVhdGVEaXNwbGF5TGlzdChJdGVtQnVmZmVyUHJv
dmlkZXImJiBidWZmZXJQcm92aWRlcikgY29uc3QKLXsKLSAgICBEaXNwbGF5TGlzdDo6SXRlbUJ1
ZmZlckhhbmRsZXMgaGFuZGxlczsKLSAgICBoYW5kbGVzLnJlc2VydmVJbml0aWFsQ2FwYWNpdHko
bV9idWZmZXJzLnNpemUoKSk7Ci0gICAgZm9yIChhdXRvJiBbaWRlbnRpZmllciwgY2FwYWNpdHld
IDogbV9idWZmZXJzKSB7Ci0gICAgICAgIGF1dG8qIGRhdGEgPSBidWZmZXJQcm92aWRlcihpZGVu
dGlmaWVyKTsKLSAgICAgICAgaWYgKCFkYXRhKQotICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7
Ci0KLSAgICAgICAgaGFuZGxlcy51bmNoZWNrZWRBcHBlbmQoeyBpZGVudGlmaWVyLCBkYXRhLCBj
YXBhY2l0eSB9KTsKLSAgICB9Ci0gICAgcmV0dXJuIG1ha2VVbmlxdWU8RGlzcGxheUxpc3Q6OkRp
c3BsYXlMaXN0PihXVEZNb3ZlKGhhbmRsZXMpKTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV2ViS2l0
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9TaGFyZWREaXNwbGF5TGlzdEhhbmRs
ZS5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQvU2hhcmVkRGlzcGxheUxpc3RIYW5kbGUuaAppbmRl
eCBkMTc1ZTExNGYyM2JjOGZiOGU1N2NkOTBmNjRhMzNiZTI2MmUxZjMxLi40NjkyYTFlYWQxYWVi
N2VjOTIxZThhNWQ1NTc4MDNhOTFiY2VmZWMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1No
YXJlZC9TaGFyZWREaXNwbGF5TGlzdEhhbmRsZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L1NoYXJlZERpc3BsYXlMaXN0SGFuZGxlLmgKQEAgLTI1LDQyICsyNSw2MyBAQAogCiAjcHJhZ21h
IG9uY2UKIAorI2luY2x1ZGUgIlNoYXJlZE1lbW9yeS5oIgogI2luY2x1ZGUgPFdlYkNvcmUvRGlz
cGxheUxpc3QuaD4KKyNpbmNsdWRlIDxhdG9taWM+CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCiBj
bGFzcyBTaGFyZWREaXNwbGF5TGlzdEhhbmRsZSB7CiBwdWJsaWM6Ci0gICAgdXNpbmcgSXRlbUJ1
ZmZlclByb3ZpZGVyID0gRnVuY3Rpb248dWludDhfdCooV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0
ZW1CdWZmZXJJZGVudGlmaWVyKT47CisgICAgdmlydHVhbCB+U2hhcmVkRGlzcGxheUxpc3RIYW5k
bGUoKSA9IGRlZmF1bHQ7CiAKLSAgICBTaGFyZWREaXNwbGF5TGlzdEhhbmRsZShjb25zdCBXZWJD
b3JlOjpEaXNwbGF5TGlzdDo6RGlzcGxheUxpc3QmKTsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8V2Vi
Q29yZTo6RGlzcGxheUxpc3Q6OkRpc3BsYXlMaXN0PiBjcmVhdGVEaXNwbGF5TGlzdChJdGVtQnVm
ZmVyUHJvdmlkZXImJikgY29uc3Q7CisgICAgc3RhdGljIGNvbnN0ZXhwciBhdXRvIHJlc2VydmVk
Q2FwYWNpdHlBdFN0YXJ0ID0gc2l6ZW9mKGJvb2wpICsgc2l6ZW9mKHNpemVfdCk7CiAKLSAgICB0
ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPiB2b2lkIGVuY29kZShFbmNvZGVyJikgY29uc3Q7Ci0gICAg
dGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIE9wdGlvbmFsPFNoYXJlZERpc3BsYXlMaXN0
SGFuZGxlPiBkZWNvZGUoRGVjb2RlciYpOworICAgIGNvbnN0IFNoYXJlZE1lbW9yeSYgc2hhcmVk
TWVtb3J5KCkgY29uc3QgeyByZXR1cm4gbV9zaGFyZWRNZW1vcnkuZ2V0KCk7IH0KKyAgICBTaGFy
ZWRNZW1vcnkmIHNoYXJlZE1lbW9yeSgpIHsgcmV0dXJuIG1fc2hhcmVkTWVtb3J5LmdldCgpOyB9
CisgICAgc2l6ZV90IHVucmVhZEJ5dGVzKCkgY29uc3QgeyByZXR1cm4gKnJlaW50ZXJwcmV0X2Nh
c3Q8c2l6ZV90Kj4oZGF0YSgpICsgc2l6ZW9mKGJvb2wpKTsgfQorICAgIHVpbnQ4X3QqIGRhdGEo
KSBjb25zdCB7IHJldHVybiByZWludGVycHJldF9jYXN0PHVpbnQ4X3QqPihzaGFyZWRNZW1vcnko
KS5kYXRhKCkpOyB9CisgICAgV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1CdWZmZXJJZGVudGlm
aWVyIGlkZW50aWZpZXIoKSBjb25zdCB7IHJldHVybiBtX2lkZW50aWZpZXI7IH0KIAotcHJpdmF0
ZToKLSAgICBTaGFyZWREaXNwbGF5TGlzdEhhbmRsZShWZWN0b3I8c3RkOjpwYWlyPFdlYkNvcmU6
OkRpc3BsYXlMaXN0OjpJdGVtQnVmZmVySWRlbnRpZmllciwgc2l6ZV90Pj4mJiBidWZmZXJzKQot
ICAgICAgICA6IG1fYnVmZmVycyhXVEZNb3ZlKGJ1ZmZlcnMpKQorICAgIHZpcnR1YWwgdm9pZCBh
ZHZhbmNlKHNpemVfdCBhbW91bnQpID0gMDsKKworICAgIGNsYXNzIExvY2sgeworICAgIHB1Ymxp
YzoKKyAgICAgICAgTG9jayhTaGFyZWREaXNwbGF5TGlzdEhhbmRsZSYgaGFuZGxlKQorICAgICAg
ICAgICAgOiBtX2hhbmRsZShoYW5kbGUpCisgICAgICAgIHsKKyAgICAgICAgICAgIGF1dG8mIGF0
b21pY1ZhbHVlID0gbV9oYW5kbGUuYXRvbWljTG9ja1ZhbHVlKCk7CisgICAgICAgICAgICB3aGls
ZSAodHJ1ZSkgeworICAgICAgICAgICAgICAgIHN0ZDo6dGhpc190aHJlYWQ6OnlpZWxkKCk7Cisg
ICAgICAgICAgICAgICAgYm9vbCB1bmxvY2tlZCA9IGZhbHNlOworICAgICAgICAgICAgICAgIGlm
IChhdG9taWNWYWx1ZS5jb21wYXJlX2V4Y2hhbmdlX3dlYWsodW5sb2NrZWQsIHRydWUpKQorICAg
ICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAg
ICAgIH5Mb2NrKCkKKyAgICAgICAgeworICAgICAgICAgICAgbV9oYW5kbGUuYXRvbWljTG9ja1Zh
bHVlKCkuc3RvcmUoZmFsc2UpOworICAgICAgICB9CisKKyAgICBwcml2YXRlOgorICAgICAgICBT
aGFyZWREaXNwbGF5TGlzdEhhbmRsZSYgbV9oYW5kbGU7CisgICAgfTsKKworcHJvdGVjdGVkOgor
ICAgIFNoYXJlZERpc3BsYXlMaXN0SGFuZGxlKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtQnVm
ZmVySWRlbnRpZmllciBpZGVudGlmaWVyLCBSZWY8U2hhcmVkTWVtb3J5PiYmIHNoYXJlZE1lbW9y
eSkKKyAgICAgICAgOiBtX2lkZW50aWZpZXIoaWRlbnRpZmllcikKKyAgICAgICAgLCBtX3NoYXJl
ZE1lbW9yeShXVEZNb3ZlKHNoYXJlZE1lbW9yeSkpCiAgICAgewogICAgIH0KIAotICAgIFZlY3Rv
cjxzdGQ6OnBhaXI8V2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1CdWZmZXJJZGVudGlmaWVyLCBz
aXplX3Q+PiBtX2J1ZmZlcnM7Ci19OwotCi10ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPiB2b2lkIFNo
YXJlZERpc3BsYXlMaXN0SGFuZGxlOjplbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QKLXsK
LSAgICBlbmNvZGVyIDw8IG1fYnVmZmVyczsKLX0KKyAgICBzaXplX3QmIHVucmVhZEJ5dGVzSGFu
ZGxlKCkgeyByZXR1cm4gKnJlaW50ZXJwcmV0X2Nhc3Q8c2l6ZV90Kj4oZGF0YSgpICsgc2l6ZW9m
KGJvb2wpKTsgfQogCi10ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBPcHRpb25hbDxTaGFyZWREaXNw
bGF5TGlzdEhhbmRsZT4gU2hhcmVkRGlzcGxheUxpc3RIYW5kbGU6OmRlY29kZShEZWNvZGVyJiBk
ZWNvZGVyKQotewotICAgIE9wdGlvbmFsPFZlY3RvcjxzdGQ6OnBhaXI8V2ViQ29yZTo6RGlzcGxh
eUxpc3Q6Okl0ZW1CdWZmZXJJZGVudGlmaWVyLCBzaXplX3Q+Pj4gYnVmZmVyczsKLSAgICBkZWNv
ZGVyID4+IGJ1ZmZlcnM7Ci0gICAgaWYgKCFidWZmZXJzKQotICAgICAgICByZXR1cm4gV1RGOjpu
dWxsb3B0OworcHJpdmF0ZToKKyAgICBzdGQ6OmF0b21pYzxib29sPiYgYXRvbWljTG9ja1ZhbHVl
KCkgY29uc3QgeyByZXR1cm4gKnN0YXRpY19jYXN0PHN0ZDo6YXRvbWljPGJvb2w+Kj4oc2hhcmVk
TWVtb3J5KCkuZGF0YSgpKTsgfQogCi0gICAgcmV0dXJuIHt7IFdURk1vdmUoKmJ1ZmZlcnMpIH19
OwotfQorICAgIFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtQnVmZmVySWRlbnRpZmllciBtX2lk
ZW50aWZpZXI7CisgICAgUmVmPFNoYXJlZE1lbW9yeT4gbV9zaGFyZWRNZW1vcnk7Cit9OwogCiB9
IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU291cmNlcy50
eHQgYi9Tb3VyY2UvV2ViS2l0L1NvdXJjZXMudHh0CmluZGV4IDM0OTk3NWNlYzEwMGFhMzI1Zjgy
ZmM2MTUwYTY3NjkxZWExMmVjMGIuLmJjNzE5NWJmY2NlMzU1YTUzM2JmNzM2OTM4NzI5NmQyMTBm
NzgzZWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU291cmNlcy50eHQKKysrIGIvU291cmNl
L1dlYktpdC9Tb3VyY2VzLnR4dApAQCAtMjQsNiArMjQsNyBAQAogR1BVUHJvY2Vzcy9HUFVQcm9j
ZXNzLmNwcAogR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcAogR1BVUHJv
Y2Vzcy9HUFVQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcAorR1BVUHJvY2Vzcy9ncmFwaGlj
cy9EaXNwbGF5TGlzdFJlYWRlckhhbmRsZS5jcHAKIEdQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3Rl
UmVuZGVyaW5nQmFja2VuZC5jcHAKIEdQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVzb3VyY2VD
YWNoZS5jcHAKIEdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQXVkaW9TZXNzaW9uUHJveHkuY3BwCkBA
IC0xNzMsNyArMTc0LDYgQEAgU2hhcmVkL1NlcnZpY2VXb3JrZXJJbml0aWFsaXphdGlvbkRhdGEu
Y3BwCiBTaGFyZWQvU2Vzc2lvblN0YXRlLmNwcAogU2hhcmVkL1NoYXJlYWJsZUJpdG1hcC5jcHAg
QG5vLXVuaWZ5CiBTaGFyZWQvU2hhcmVhYmxlUmVzb3VyY2UuY3BwCi1TaGFyZWQvU2hhcmVkRGlz
cGxheUxpc3RIYW5kbGUuY3BwCiBTaGFyZWQvU2hhcmVkU3RyaW5nSGFzaFN0b3JlLmNwcAogU2hh
cmVkL1NoYXJlZFN0cmluZ0hhc2hUYWJsZVJlYWRPbmx5LmNwcAogU2hhcmVkL1NoYXJlZFN0cmlu
Z0hhc2hUYWJsZS5jcHAKQEAgLTU1OSw2ICs1NTksNyBAQCBXZWJQcm9jZXNzL01lZGlhU3RyZWFt
L01lZGlhRGV2aWNlU2FuZGJveEV4dGVuc2lvbnMuY3BwCiBXZWJQcm9jZXNzL01lZGlhU3RyZWFt
L1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlci5jcHAKIAogV2ViUHJvY2Vzcy9HUFUv
R1BVUHJvY2Vzc0Nvbm5lY3Rpb24uY3BwCitXZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9EaXNwbGF5
TGlzdFdyaXRlckhhbmRsZS5jcHAKIFdlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL0ltYWdlQnVmZmVy
U2hhcmVhYmxlQml0bWFwQmFja2VuZC5jcHAKIFdlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90
ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS5jcHAKIFdlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90
ZVJlc291cmNlQ2FjaGVQcm94eS5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViS2l0
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDUxZjUyMzA2YTcwMGZlZTZlNTEyOTUxNjA1MzUwMzRm
YWNkZDFlODcuLmQ2Mjc3NmQyZGNlYTAyNGQyNjk5N2MzMzU1ZTM4ZjM0NWI4YWFiZWUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysr
IGIvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTg3
MCw2ICsxODcwLDggQEAKIAkJRTVCRUY2ODIyMTMwQzQ4MDAwRjMxMTExIC8qIFdlYkRhdGFMaXN0
U3VnZ2VzdGlvbnNEcm9wZG93bklPUy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gRTVCRUY2ODAyMTMwQzQ3RjAwRjMxMTExIC8qIFdlYkRhdGFMaXN0U3Vn
Z2VzdGlvbnNEcm9wZG93bklPUy5oICovOyB9OwogCQlFNUNCMDdEQzIwRTE2NzhGMDAyMkMxODMg
LyogV0tGb3JtQ29sb3JDb250cm9sLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBFNUNCMDdEQTIwRTE2NzhGMDAyMkMxODMgLyogV0tGb3JtQ29sb3JDb250
cm9sLmggKi87IH07CiAJCUVEODJBN0YyMTI4QzZGQUYwMDQ0NzdCMyAvKiBXS0J1bmRsZVBhZ2VP
dmVybGF5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAx
QTIyRjBGRjEyODlGQ0Q5MDA4NUU3NEYgLyogV0tCdW5kbGVQYWdlT3ZlcmxheS5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCUY0MDk0Q0JEMjU1MzA1
M0QwMDNENzNFMyAvKiBEaXNwbGF5TGlzdFJlYWRlckhhbmRsZS5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjQwOTRDQkIyNTUzMDRBRjAwM0Q3M0UzIC8q
IERpc3BsYXlMaXN0UmVhZGVySGFuZGxlLmggKi87IH07CisJCUY0MDk0Q0JFMjU1MzA1NDAwMDNE
NzNFMyAvKiBEaXNwbGF5TGlzdFdyaXRlckhhbmRsZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjQwOTRDQjkyNTUzMDQ3RTAwM0Q3M0UzIC8qIERpc3Bs
YXlMaXN0V3JpdGVySGFuZGxlLmggKi87IH07CiAJCUY0MDlCQTE4MUU2RTY0QkMwMDlEQTI4RSAv
KiBXS0RyYWdEZXN0aW5hdGlvbkFjdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gRjQwOUJBMTcxRTZFNjRCMzAwOURBMjhFIC8qIFdLRHJhZ0Rlc3Rp
bmF0aW9uQWN0aW9uLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKIAkJRjQyRDYzNDEyMkEwRUZERjAwRDJGQjNBIC8qIFdlYkF1dG9jb3JyZWN0aW9uRGF0
YS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjQyRDYz
M0YyMkEwRUZEMzAwRDJGQjNBIC8qIFdlYkF1dG9jb3JyZWN0aW9uRGF0YS5oICovOyB9OwogCQlG
NDMwRTk0MjIyNDczMzVGMDA1RkUwNTMgLyogV2Vic2l0ZU1ldGFWaWV3cG9ydFBvbGljeS5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjQzMEU5NDEyMjQ3
MzJBOTAwNUZFMDUzIC8qIFdlYnNpdGVNZXRhVmlld3BvcnRQb2xpY3kuaCAqLzsgfTsKQEAgLTU0
NjUsNiArNTQ2NywxMCBAQAogCQlFQ0E2ODBEMzFFNjkwNEI1MDA3MzFEMjAgLyogRXh0cmFQcml2
YXRlU3ltYm9sc0ZvclRBUEkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRXh0
cmFQcml2YXRlU3ltYm9sc0ZvclRBUEkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
RUNCRkMxREIxRTZBNEQ2NjAwMDMwMEM3IC8qIEV4dHJhUHVibGljU3ltYm9sc0ZvclRBUEkuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gRXh0cmFQdWJsaWNTeW1ib2xzRm9yVEFQSS5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQlGMDM2OTc4NzE1RjRCRjA1MDBDM0E4MEUgLyogV2ViQ29sb3JQaWNr
ZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2ViQ29sb3JQaWNr
ZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlGNDA5NENCOTI1NTMwNDdFMDAz
RDczRTMgLyogRGlzcGxheUxpc3RXcml0ZXJIYW5kbGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRGlzcGxh
eUxpc3RXcml0ZXJIYW5kbGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRjQwOTRD
QkEyNTUzMDQ3RTAwM0Q3M0UzIC8qIERpc3BsYXlMaXN0V3JpdGVySGFuZGxlLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IERpc3BsYXlMaXN0V3JpdGVySGFuZGxlLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJRjQwOTRDQkIyNTUzMDRBRjAwM0Q3M0UzIC8qIERpc3BsYXlMaXN0UmVh
ZGVySGFuZGxlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERpc3BsYXlMaXN0UmVhZGVySGFuZGxlLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUY0MDk0Q0JDMjU1MzA0QUYwMDNENzNFMyAvKiBE
aXNwbGF5TGlzdFJlYWRlckhhbmRsZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBEaXNwbGF5TGlz
dFJlYWRlckhhbmRsZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUY0MDlCQTE3
MUU2RTY0QjMwMDlEQTI4RSAvKiBXS0RyYWdEZXN0aW5hdGlvbkFjdGlvbi5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBXS0RyYWdEZXN0aW5hdGlvbkFjdGlvbi5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQlGNDBEMUI2ODIyMEJEQzBGMDBCNDlBMDEgLyogV2ViQXV0
b2NvcnJlY3Rpb25Db250ZXh0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFdlYkF1dG9jb3JyZWN0aW9uQ29u
dGV4dC5oOyBwYXRoID0gaW9zL1dlYkF1dG9jb3JyZWN0aW9uQ29udGV4dC5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQlGNDEwNTY2MTIxMzA2OTlBMDA5MjI4MUQgLyogQVBJQXR0YWNo
bWVudENvY29hLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gQVBJQXR0YWNobWVudENvY29hLm1t
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNTQ4Nyw3ICs1NDkzLDYgQEAKIAkJRjQ5
NkE0MkYxRjU4QTI3MjAwNEMxNzU3IC8qIERyYWdEcm9wSW50ZXJhY3Rpb25TdGF0ZS5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IG5hbWUgPSBEcmFnRHJvcEludGVyYWN0aW9uU3RhdGUuaDsgcGF0aCA9IGlvcy9EcmFnRHJv
cEludGVyYWN0aW9uU3RhdGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRjQ5NkE0
MzAxRjU4QTI3MjAwNEMxNzU3IC8qIERyYWdEcm9wSW50ZXJhY3Rpb25TdGF0ZS5tbSAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
Lm9iamNwcDsgbmFtZSA9IERyYWdEcm9wSW50ZXJhY3Rpb25TdGF0ZS5tbTsgcGF0aCA9IGlvcy9E
cmFnRHJvcEludGVyYWN0aW9uU3RhdGUubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CUY0QTZENkJCMjU0Q0EzRTkwMEI2NUZBQSAvKiBTaGFyZWREaXNwbGF5TGlzdEhhbmRsZS5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBTaGFyZWREaXNwbGF5TGlzdEhhbmRsZS5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwotCQlGNEE2RDZCRDI1NENBNTIyMDBCNjVGQUEgLyogU2hhcmVkRGlzcGxheUxp
c3RIYW5kbGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU2hhcmVkRGlzcGxheUxpc3RIYW5kbGUu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGNEFDNjU1RTIyQTMxNDBFMDBBMDU2
MDcgLyogV2ViUHJlZmVyZW5jZXNEZWZhdWx0VmFsdWVzSU9TLm1tICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAub2JqY3BwOyBuYW1lID0gV2ViUHJlZmVyZW5jZXNEZWZhdWx0VmFsdWVzSU9TLm1t
OyBwYXRoID0gaW9zL1dlYlByZWZlcmVuY2VzRGVmYXVsdFZhbHVlc0lPUy5tbTsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRjRCMzc4RDAyMUREQkJBQjAwOTVBMzc4IC8qIFdlYlVuZG9T
dGVwSUQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViVW5kb1N0ZXBJRC5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQlGNENCMDlFNDIyNUQ1QTAzMDA4OTE0ODcgLyogV2Vic2l0ZU1lZGlhU291
cmNlUG9saWN5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYnNpdGVNZWRpYVNvdXJjZVBvbGljeS5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNjE5NSw3ICs2MjAwLDYgQEAKIAkJCQkxQTY0
MjBFMzEyRENFMkZGMDBDQUFFMkMgLyogU2hhcmVhYmxlQml0bWFwLmggKi8sCiAJCQkJNTEyMTc0
NUUxNjRDMjBFMzAwMzdBNUMxIC8qIFNoYXJlYWJsZVJlc291cmNlLmNwcCAqLywKIAkJCQk1MTIx
NzQ1RjE2NEMyMEUzMDAzN0E1QzEgLyogU2hhcmVhYmxlUmVzb3VyY2UuaCAqLywKLQkJCQlGNEE2
RDZCRDI1NENBNTIyMDBCNjVGQUEgLyogU2hhcmVkRGlzcGxheUxpc3RIYW5kbGUuY3BwICovLAog
CQkJCUY0QTZENkJCMjU0Q0EzRTkwMEI2NUZBQSAvKiBTaGFyZWREaXNwbGF5TGlzdEhhbmRsZS5o
ICovLAogCQkJCTgzMTNGN0VBMUY3REFFMDQwMEI5NDRFQiAvKiBTaGFyZWRTdHJpbmdIYXNoU3Rv
cmUuY3BwICovLAogCQkJCTgzMTNGN0U5MUY3REFFMDMwMEI5NDRFQiAvKiBTaGFyZWRTdHJpbmdI
YXNoU3RvcmUuaCAqLywKQEAgLTgxNzAsNiArODE3NCw4IEBACiAJCQlpc2EgPSBQQlhHcm91cDsK
IAkJCWNoaWxkcmVuID0gKAogCQkJCTcyN0E3RjMzMjQwNzg1MjcwMDREMjkzMSAvKiBjb2NvYSAq
LywKKwkJCQlGNDA5NENCQTI1NTMwNDdFMDAzRDczRTMgLyogRGlzcGxheUxpc3RXcml0ZXJIYW5k
bGUuY3BwICovLAorCQkJCUY0MDk0Q0I5MjU1MzA0N0UwMDNENzNFMyAvKiBEaXNwbGF5TGlzdFdy
aXRlckhhbmRsZS5oICovLAogCQkJCTcyN0E3RjM5MjQwNzg4RjEwMDREMjkzMSAvKiBJbWFnZUJ1
ZmZlckJhY2tlbmRIYW5kbGUuaCAqLywKIAkJCQk3MjdBN0YzNzI0MDc4OEYwMDA0RDI5MzEgLyog
SW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRtYXBCYWNrZW5kLmNwcCAqLywKIAkJCQk3MjdBN0YzNjI0
MDc4OEYwMDA0RDI5MzEgLyogSW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRtYXBCYWNrZW5kLmggKi8s
CkBAIC04MTg5LDYgKzgxOTUsOCBAQAogCQk1NTA2NDBBMTI0MDcxQTI5MDBBQUUwNDUgLyogZ3Jh
cGhpY3MgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAorCQkJCUY0
MDk0Q0JDMjU1MzA0QUYwMDNENzNFMyAvKiBEaXNwbGF5TGlzdFJlYWRlckhhbmRsZS5jcHAgKi8s
CisJCQkJRjQwOTRDQkIyNTUzMDRBRjAwM0Q3M0UzIC8qIERpc3BsYXlMaXN0UmVhZGVySGFuZGxl
LmggKi8sCiAJCQkJNTVBRDA5NDMyNDA4QTBFNjAwREU0RDJGIC8qIFBsYXRmb3JtUmVtb3RlSW1h
Z2VCdWZmZXIuaCAqLywKIAkJCQk1NUFEMDk0MjI0MDhBMDJFMDBERTREMkYgLyogUmVtb3RlSW1h
Z2VCdWZmZXIuaCAqLywKIAkJCQk1NTA2NDBBMjI0MDcxQTYxMDBBQUUwNDUgLyogUmVtb3RlUmVu
ZGVyaW5nQmFja2VuZC5jcHAgKi8sCkBAIC0xMTAyNyw2ICsxMTAzNSw4IEBACiAJCQkJODM4OTFC
NkMxQTY4QzMwQjAwMzBGMzg2IC8qIERpYWdub3N0aWNMb2dnaW5nQ2xpZW50LmggaW4gSGVhZGVy
cyAqLywKIAkJCQlDMTgxNzM2MTIwNTg0MjQ3MDBERkRBNjUgLyogRGlzcGxheUxpbmsuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTBGMTg5Q0FDMjQ3NDlGMkYwMEU1OEQ4MSAvKiBEaXNwbGF5TGlua09i
c2VydmVySUQuaCBpbiBIZWFkZXJzICovLAorCQkJCUY0MDk0Q0JEMjU1MzA1M0QwMDNENzNFMyAv
KiBEaXNwbGF5TGlzdFJlYWRlckhhbmRsZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJRjQwOTRDQkUy
NTUzMDU0MDAwM0Q3M0UzIC8qIERpc3BsYXlMaXN0V3JpdGVySGFuZGxlLmggaW4gSGVhZGVycyAq
LywKIAkJCQk1QzE0MjcwMjFDMjNGODRDMDBENDExODMgLyogRG93bmxvYWQuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTVDMTQyNzA1MUMyM0Y4NEMwMEQ0MTE4MyAvKiBEb3dubG9hZElELmggaW4gSGVh
ZGVycyAqLywKIAkJCQk1QzE0MjcwNzFDMjNGODRDMDBENDExODMgLyogRG93bmxvYWRNYW5hZ2Vy
LmggaW4gSGVhZGVycyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9H
UFUvZ3JhcGhpY3MvRGlzcGxheUxpc3RXcml0ZXJIYW5kbGUuY3BwIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9EaXNwbGF5TGlzdFdyaXRlckhhbmRsZS5jcHAKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uZTU0OTg5M2FhMTg5YmEzYWUyYjA4YjI3MjEzNmUyODk3ODRiNTFlNgotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvRGlzcGxheUxp
c3RXcml0ZXJIYW5kbGUuY3BwCkBAIC0wLDAgKzEsNzEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVk
ZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiRGlzcGxheUxpc3RXcml0ZXJIYW5kbGUuaCIKKworbmFt
ZXNwYWNlIFdlYktpdCB7Cit1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKKwordm9pZCBEaXNwbGF5
TGlzdFdyaXRlckhhbmRsZTo6YWR2YW5jZShzaXplX3QgYW1vdW50KQoreworICAgIG1fd3JpdGFi
bGVPZmZzZXQgKz0gYW1vdW50OworICAgIHVucmVhZEJ5dGVzSGFuZGxlKCkgKz0gYW1vdW50Owor
fQorCitzaXplX3QgRGlzcGxheUxpc3RXcml0ZXJIYW5kbGU6OmF2YWlsYWJsZUNhcGFjaXR5KCkg
Y29uc3QKK3sKKyAgICByZXR1cm4gc2hhcmVkTWVtb3J5KCkuc2l6ZSgpIC0gd3JpdGFibGVPZmZz
ZXQoKTsKK30KKworRGlzcGxheUxpc3Q6Okl0ZW1CdWZmZXJIYW5kbGUgRGlzcGxheUxpc3RXcml0
ZXJIYW5kbGU6OmNyZWF0ZUhhbmRsZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIHsKKyAgICAgICAg
aWRlbnRpZmllcigpLAorICAgICAgICBkYXRhKCkgKyB3cml0YWJsZU9mZnNldCgpLAorICAgICAg
ICBhdmFpbGFibGVDYXBhY2l0eSgpCisgICAgfTsKK30KKworYm9vbCBEaXNwbGF5TGlzdFdyaXRl
ckhhbmRsZTo6cmVzZXRXcml0YWJsZU9mZnNldElmUG9zc2libGUoKQoreworICAgIGlmIChtX3dy
aXRhYmxlT2Zmc2V0IDw9IFNoYXJlZERpc3BsYXlMaXN0SGFuZGxlOjpyZXNlcnZlZENhcGFjaXR5
QXRTdGFydCkgeworICAgICAgICBBU1NFUlQobV93cml0YWJsZU9mZnNldCA9PSBTaGFyZWREaXNw
bGF5TGlzdEhhbmRsZTo6cmVzZXJ2ZWRDYXBhY2l0eUF0U3RhcnQpOworICAgICAgICByZXR1cm4g
dHJ1ZTsKKyAgICB9CisKKyAgICBMb2NrIGxvY2tlciB7ICp0aGlzIH07CisgICAgaWYgKCF1bnJl
YWRCeXRlcygpKSB7CisgICAgICAgIC8vIE9uY2UgdGhlIEdQVSBwcm9jZXNzIGhhcyByZWFkIGFu
ZCBwcm9jZXNzZWQgYWxsIHJlbWFpbmluZyBpdGVtcywgbW92ZSB0aGUgcmVhZG9ubHkKKyAgICAg
ICAgLy8gcmFuZ2UgYmFjayB0byB0aGUgc3RhcnQuIFRoaXMgTVVTVCBiZSBjYWxsZWQgb25seSB3
aGVuIHRoZSBpdGVtIGJ1ZmZlciBpcyBub3QgYWN0aXZlbHkKKyAgICAgICAgLy8gYmVpbmcgd3Jp
dHRlbiB0by4KKyAgICAgICAgbV93cml0YWJsZU9mZnNldCA9IFNoYXJlZERpc3BsYXlMaXN0SGFu
ZGxlOjpyZXNlcnZlZENhcGFjaXR5QXRTdGFydDsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAg
fQorCisgICAgcmV0dXJuIGZhbHNlOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvRGlzcGxheUxpc3RX
cml0ZXJIYW5kbGUuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvRGlz
cGxheUxpc3RXcml0ZXJIYW5kbGUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xMzgwMTI2NWVlMzg0OTQzMWFkZTkx
N2Y1OGZhNTNiMjU5M2ZiOTRkCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL0dQVS9ncmFwaGljcy9EaXNwbGF5TGlzdFdyaXRlckhhbmRsZS5oCkBAIC0wLDAgKzEs
NTQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAor
ICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisg
KiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICog
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIlNoYXJlZERpc3Bs
YXlMaXN0SGFuZGxlLmgiCisjaW5jbHVkZSA8d3RmL0Zhc3RNYWxsb2MuaD4KKworbmFtZXNwYWNl
IFdlYktpdCB7CisKK2NsYXNzIERpc3BsYXlMaXN0V3JpdGVySGFuZGxlIDogcHVibGljIFNoYXJl
ZERpc3BsYXlMaXN0SGFuZGxlIHsKKyAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShEaXNwbGF5TGlz
dFdyaXRlckhhbmRsZSk7IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOworcHVibGljOgorICAgIERp
c3BsYXlMaXN0V3JpdGVySGFuZGxlKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtQnVmZmVySWRl
bnRpZmllciBpZGVudGlmaWVyLCBSZWY8U2hhcmVkTWVtb3J5PiYmIHNoYXJlZE1lbW9yeSkKKyAg
ICAgICAgOiBTaGFyZWREaXNwbGF5TGlzdEhhbmRsZShpZGVudGlmaWVyLCBXVEZNb3ZlKHNoYXJl
ZE1lbW9yeSkpCisgICAgICAgICwgbV93cml0YWJsZU9mZnNldChTaGFyZWREaXNwbGF5TGlzdEhh
bmRsZTo6cmVzZXJ2ZWRDYXBhY2l0eUF0U3RhcnQpCisgICAgeworICAgIH0KKworICAgIHNpemVf
dCB3cml0YWJsZU9mZnNldCgpIGNvbnN0IHsgcmV0dXJuIG1fd3JpdGFibGVPZmZzZXQ7IH0KKyAg
ICBzaXplX3QgYXZhaWxhYmxlQ2FwYWNpdHkoKSBjb25zdDsKKworICAgIGJvb2wgcmVzZXRXcml0
YWJsZU9mZnNldElmUG9zc2libGUoKTsKKworICAgIHZvaWQgYWR2YW5jZShzaXplX3QgYW1vdW50
KSBvdmVycmlkZTsKKyAgICBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbUJ1ZmZlckhhbmRsZSBj
cmVhdGVIYW5kbGUoKSBjb25zdDsKKworcHJpdmF0ZToKKyAgICBzaXplX3QgbV93cml0YWJsZU9m
ZnNldCB7IDAgfTsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVJbWFnZUJ1ZmZlclByb3h5
LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUltYWdlQnVm
ZmVyUHJveHkuaAppbmRleCBkNDJkNGRlZGNlZTI5MGM1OTdlM2Y4MjQxNmQyNzU2ZTVhZDllYjA0
Li5mZThmMGRjOGIyMjI2NDE0NjE0YWNmYzE3NjA3Y2MzZWE5MjgwZjFkIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUltYWdlQnVmZmVyUHJv
eHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUlt
YWdlQnVmZmVyUHJveHkuaApAQCAtMTU0LDcgKzE1NCw5IEBAIHByb3RlY3RlZDoKICAgICAgICAg
ICAgIHJldHVybjsKIAogICAgICAgICBUcmFjZVNjb3BlIHRyYWNpbmdTY29wZShGbHVzaFJlbW90
ZUltYWdlQnVmZmVyU3RhcnQsIEZsdXNoUmVtb3RlSW1hZ2VCdWZmZXJFbmQsIDEpOwotICAgICAg
ICBtX3NlbnRGbHVzaElkZW50aWZpZXIgPSBtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS0+
Zmx1c2hEaXNwbGF5TGlzdEFuZENvbW1pdChkaXNwbGF5TGlzdCwgbV9yZW5kZXJpbmdSZXNvdXJj
ZUlkZW50aWZpZXIpOworICAgICAgICBtX3NlbnRGbHVzaElkZW50aWZpZXIgPSBXZWJDb3JlOjpE
aXNwbGF5TGlzdDo6Rmx1c2hJZGVudGlmaWVyOjpnZW5lcmF0ZSgpOworICAgICAgICBkaXNwbGF5
TGlzdC50ZW1wbGF0ZSBhcHBlbmQ8V2ViQ29yZTo6RGlzcGxheUxpc3Q6OkZsdXNoQ29udGV4dD4o
bV9zZW50Rmx1c2hJZGVudGlmaWVyKTsKKyAgICAgICAgbV9yZW1vdGVSZW5kZXJpbmdCYWNrZW5k
UHJveHktPmZsdXNoRGlzcGxheUxpc3QoZGlzcGxheUxpc3QsIG1fcmVuZGVyaW5nUmVzb3VyY2VJ
ZGVudGlmaWVyKTsKICAgICAgICAgbV9yZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHktPnJlbW90
ZVJlc291cmNlQ2FjaGVQcm94eSgpLnVubG9ja1JlbW90ZVJlc291cmNlc0ZvclJlbW90ZUNsaWVu
dChtX3JlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcik7CiAgICAgICAgIG1faXRlbUNvdW50SW5D
dXJyZW50RGlzcGxheUxpc3QgPSAwOwogICAgICAgICBkaXNwbGF5TGlzdC5jbGVhcigpOwpAQCAt
MTk1LDcgKzE5Nyw3IEBAIHByb3RlY3RlZDoKICAgICBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRl
bUJ1ZmZlckhhbmRsZSBjcmVhdGVJdGVtQnVmZmVyKHNpemVfdCBjYXBhY2l0eSkgb3ZlcnJpZGUK
ICAgICB7CiAgICAgICAgIGlmIChtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eSkKLSAgICAg
ICAgICAgIHJldHVybiBtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS0+Y3JlYXRlSXRlbUJ1
ZmZlcihjYXBhY2l0eSk7CisgICAgICAgICAgICByZXR1cm4gbV9yZW1vdGVSZW5kZXJpbmdCYWNr
ZW5kUHJveHktPmNyZWF0ZUl0ZW1CdWZmZXIoY2FwYWNpdHksIG1fcmVuZGVyaW5nUmVzb3VyY2VJ
ZGVudGlmaWVyKTsKIAogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgcmV0
dXJuIHsgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhp
Y3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5LmNwcAppbmRleCA3
ZTBkODJjNWRjYjczZWI1ZDk0N2YyNzg0ZDUxYWEwYjYyZDFlMzU5Li43NTFjYWRlYmM0N2Q1MDFj
MjVkZDBiYTRlMzI1ZDY3YjhiNWYwNTc2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNr
ZW5kUHJveHkuY3BwCkBAIC0yOCwxMyArMjgsMTMgQEAKIAogI2lmIEVOQUJMRShHUFVfUFJPQ0VT
UykKIAorI2luY2x1ZGUgIkRpc3BsYXlMaXN0V3JpdGVySGFuZGxlLmgiCiAjaW5jbHVkZSAiR1BV
Q29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oIgogI2luY2x1ZGUgIkdQVVByb2Nlc3NDb25uZWN0aW9u
LmgiCiAjaW5jbHVkZSAiSW1hZ2VEYXRhUmVmZXJlbmNlLmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1S
ZW1vdGVJbWFnZUJ1ZmZlclByb3h5LmgiCiAjaW5jbHVkZSAiUmVtb3RlUmVuZGVyaW5nQmFja2Vu
ZE1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5TWVzc2Fn
ZXMuaCIKLSNpbmNsdWRlICJTaGFyZWREaXNwbGF5TGlzdEhhbmRsZS5oIgogI2luY2x1ZGUgIlNo
YXJlZE1lbW9yeS5oIgogI2luY2x1ZGUgIldlYlByb2Nlc3MuaCIKIApAQCAtMTE3LDE2ICsxMTcs
MjkgQEAgUmVmUHRyPEltYWdlRGF0YT4gUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5OjpnZXRJ
bWFnZURhdGEoQWxwaGFQcmVtdWx0aXBsaWNhdGkKIAogdm9pZCBSZW1vdGVSZW5kZXJpbmdCYWNr
ZW5kUHJveHk6OmZsdXNoRGlzcGxheUxpc3QoY29uc3QgRGlzcGxheUxpc3Q6OkRpc3BsYXlMaXN0
JiBkaXNwbGF5TGlzdCwgUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyIHJlbmRlcmluZ1Jlc291
cmNlSWRlbnRpZmllcikKIHsKLSAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVSZW5kZXJpbmdCYWNr
ZW5kOjpGbHVzaERpc3BsYXlMaXN0KHsgZGlzcGxheUxpc3QgfSwgcmVuZGVyaW5nUmVzb3VyY2VJ
ZGVudGlmaWVyKSwgbV9yZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllcik7Ci0gICAgbV9zaGFyZWRJ
dGVtQnVmZmVycy5jbGVhcigpOwotfQorICAgIE9wdGlvbmFsPHN0ZDo6cGFpcjxXZWJDb3JlOjpE
aXNwbGF5TGlzdDo6SXRlbUJ1ZmZlcklkZW50aWZpZXIsIHNpemVfdD4+IGlkZW50aWZpZXJBbmRP
ZmZzZXRGb3JXYWtlVXBNZXNzYWdlOworICAgIGJvb2wgaXNGaXJzdEhhbmRsZSA9IHRydWU7CiAK
LURpc3BsYXlMaXN0OjpGbHVzaElkZW50aWZpZXIgUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5
OjpmbHVzaERpc3BsYXlMaXN0QW5kQ29tbWl0KGNvbnN0IERpc3BsYXlMaXN0OjpEaXNwbGF5TGlz
dCYgZGlzcGxheUxpc3QsIFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciByZW5kZXJpbmdSZXNv
dXJjZUlkZW50aWZpZXIpCi17Ci0gICAgYXV0byBzZW50Rmx1c2hJZGVudGlmaWVyID0gRGlzcGxh
eUxpc3Q6OkZsdXNoSWRlbnRpZmllcjo6Z2VuZXJhdGUoKTsKLSAgICBzZW5kKE1lc3NhZ2VzOjpS
ZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpGbHVzaERpc3BsYXlMaXN0QW5kQ29tbWl0KHsgZGlzcGxh
eUxpc3QgfSwgc2VudEZsdXNoSWRlbnRpZmllciwgcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVy
KSwgbV9yZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllcik7Ci0gICAgbV9zaGFyZWRJdGVtQnVmZmVy
cy5jbGVhcigpOwotICAgIHJldHVybiBzZW50Rmx1c2hJZGVudGlmaWVyOworICAgIGRpc3BsYXlM
aXN0LmZvckVhY2hJdGVtQnVmZmVyKFsmXSAoYXV0byYgaGFuZGxlKSB7CisgICAgICAgIG1faWRl
bnRpZmllcnNPZkhhbmRsZXNBdmFpbGFibGVGb3JXcml0aW5nLmFkZChoYW5kbGUuaWRlbnRpZmll
cik7CisKKyAgICAgICAgYXV0byogc2hhcmVkSGFuZGxlID0gbV9zaGFyZWREaXNwbGF5TGlzdEhh
bmRsZXMuZ2V0KGhhbmRsZS5pZGVudGlmaWVyKTsKKyAgICAgICAgUkVMRUFTRV9BU1NFUlRfV0lU
SF9NRVNTQUdFKHNoYXJlZEhhbmRsZSwgIiVzIGZhaWxlZCB0byBmaW5kIHNoYXJlZCBkaXNwbGF5
IGxpc3QiLCBfX1BSRVRUWV9GVU5DVElPTl9fKTsKKworICAgICAgICBTaGFyZWREaXNwbGF5TGlz
dEhhbmRsZTo6TG9jayBsb2NrZXIgeyAqc2hhcmVkSGFuZGxlIH07CisKKyAgICAgICAgYm9vbCB1
bnJlYWRDb3VudFdhc0VtcHR5ID0gIXNoYXJlZEhhbmRsZS0+dW5yZWFkQnl0ZXMoKTsKKyAgICAg
ICAgc2hhcmVkSGFuZGxlLT5hZHZhbmNlKGhhbmRsZS5jYXBhY2l0eSk7CisgICAgICAgIGlmIChp
c0ZpcnN0SGFuZGxlICYmIHVucmVhZENvdW50V2FzRW1wdHkpCisgICAgICAgICAgICBpZGVudGlm
aWVyQW5kT2Zmc2V0Rm9yV2FrZVVwTWVzc2FnZSA9IHt7IGhhbmRsZS5pZGVudGlmaWVyLCBoYW5k
bGUuZGF0YSAtIHNoYXJlZEhhbmRsZS0+ZGF0YSgpIH19OworCisgICAgICAgIGlzRmlyc3RIYW5k
bGUgPSBmYWxzZTsKKyAgICB9KTsKKworICAgIGlmIChpZGVudGlmaWVyQW5kT2Zmc2V0Rm9yV2Fr
ZVVwTWVzc2FnZSkgeworICAgICAgICBhdXRvIFtpZGVudGlmaWVyLCBvZmZzZXRdID0gKmlkZW50
aWZpZXJBbmRPZmZzZXRGb3JXYWtlVXBNZXNzYWdlOworICAgICAgICBzZW5kKE1lc3NhZ2VzOjpS
ZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpXYWtlVXBBbmRQcm9jZXNzRGlzcGxheUxpc3QoaWRlbnRp
Zmllciwgb2Zmc2V0LCByZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpLCBtX3JlbmRlcmluZ0Jh
Y2tlbmRJZGVudGlmaWVyKTsKKyAgICB9CiB9CiAKIHZvaWQgUmVtb3RlUmVuZGVyaW5nQmFja2Vu
ZFByb3h5OjpyZWxlYXNlUmVtb3RlUmVzb3VyY2UoUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVy
IHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcikKQEAgLTE1OCwyMSArMTcxLDU2IEBAIHZvaWQg
UmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5OjpmbHVzaERpc3BsYXlMaXN0V2FzQ29tbWl0dGVk
KERpc3BsYXlMaXN0OjpGbHVzCiAgICAgICAgIGRvd25jYXN0PFVuYWNjZWxlcmF0ZWRSZW1vdGVJ
bWFnZUJ1ZmZlclByb3h5PigqaW1hZ2VCdWZmZXIpLmNvbW1pdEZsdXNoRGlzcGxheUxpc3QoZmx1
c2hJZGVudGlmaWVyKTsKIH0KIAotRGlzcGxheUxpc3Q6Okl0ZW1CdWZmZXJIYW5kbGUgUmVtb3Rl
UmVuZGVyaW5nQmFja2VuZFByb3h5OjpjcmVhdGVJdGVtQnVmZmVyKHNpemVfdCBjYXBhY2l0eSkK
K3ZvaWQgUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5Ojp1cGRhdGVSZXVzYWJsZUhhbmRsZXMo
KQoreworICAgIGZvciAoYXV0byBpZGVudGlmaWVyIDogbV9pZGVudGlmaWVyc09mSGFuZGxlc0F2
YWlsYWJsZUZvcldyaXRpbmcpIHsKKyAgICAgICAgYXV0byogaGFuZGxlID0gbV9zaGFyZWREaXNw
bGF5TGlzdEhhbmRsZXMuZ2V0KGlkZW50aWZpZXIpOworICAgICAgICBpZiAoIWhhbmRsZS0+cmVz
ZXRXcml0YWJsZU9mZnNldElmUG9zc2libGUoKSkKKyAgICAgICAgICAgIGNvbnRpbnVlOworCisg
ICAgICAgIGlmIChtX2lkZW50aWZpZXJzT2ZSZXVzYWJsZUhhbmRsZXMuY29udGFpbnMoaWRlbnRp
ZmllcikpCisgICAgICAgICAgICBjb250aW51ZTsKKworICAgICAgICBtX2lkZW50aWZpZXJzT2ZS
ZXVzYWJsZUhhbmRsZXMuYXBwZW5kKGlkZW50aWZpZXIpOworICAgIH0KK30KKworRGlzcGxheUxp
c3Q6Okl0ZW1CdWZmZXJIYW5kbGUgUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5OjpjcmVhdGVJ
dGVtQnVmZmVyKHNpemVfdCBjYXBhY2l0eSwgUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyIHJl
bW90ZVJlc291cmNlSWRlbnRpZmllcikKIHsKKyAgICB1cGRhdGVSZXVzYWJsZUhhbmRsZXMoKTsK
KworICAgIHdoaWxlICghbV9pZGVudGlmaWVyc09mUmV1c2FibGVIYW5kbGVzLmlzRW1wdHkoKSkg
eworICAgICAgICBhdXRvIGlkZW50aWZpZXIgPSBtX2lkZW50aWZpZXJzT2ZSZXVzYWJsZUhhbmRs
ZXMuZmlyc3QoKTsKKyAgICAgICAgYXV0byogcmV1c2FibGVIYW5kbGUgPSBtX3NoYXJlZERpc3Bs
YXlMaXN0SGFuZGxlcy5nZXQoaWRlbnRpZmllcik7CisgICAgICAgIFJFTEVBU0VfQVNTRVJUX1dJ
VEhfTUVTU0FHRShyZXVzYWJsZUhhbmRsZSwgIiVzIGZhaWxlZCB0byBmaW5kIHNoYXJlZCBkaXNw
bGF5IGxpc3QiLCBfX1BSRVRUWV9GVU5DVElPTl9fKTsKKworICAgICAgICBpZiAobV9pZGVudGlm
aWVyc09mSGFuZGxlc0F2YWlsYWJsZUZvcldyaXRpbmcuY29udGFpbnMoaWRlbnRpZmllcikgJiYg
cmV1c2FibGVIYW5kbGUtPmF2YWlsYWJsZUNhcGFjaXR5KCkgPj0gY2FwYWNpdHkpIHsKKyAgICAg
ICAgICAgIG1faWRlbnRpZmllcnNPZkhhbmRsZXNBdmFpbGFibGVGb3JXcml0aW5nLnJlbW92ZShp
ZGVudGlmaWVyKTsKKyAgICAgICAgICAgIHJldHVybiByZXVzYWJsZUhhbmRsZS0+Y3JlYXRlSGFu
ZGxlKCk7CisgICAgICAgIH0KKworICAgICAgICBtX2lkZW50aWZpZXJzT2ZSZXVzYWJsZUhhbmRs
ZXMucmVtb3ZlRmlyc3QoKTsKKyAgICB9CisKICAgICBzdGF0aWMgY29uc3RleHByIHNpemVfdCBk
ZWZhdWx0U2hhcmVkSXRlbUJ1ZmZlclNpemUgPSAxIDw8IDE2OwogCi0gICAgYXV0byBzaGFyZWRN
ZW1vcnkgPSBTaGFyZWRNZW1vcnk6OmFsbG9jYXRlKHN0ZDo6bWF4KGRlZmF1bHRTaGFyZWRJdGVt
QnVmZmVyU2l6ZSwgY2FwYWNpdHkpKTsKKyAgICBhdXRvIHNoYXJlZE1lbW9yeSA9IFNoYXJlZE1l
bW9yeTo6YWxsb2NhdGUoc3RkOjptYXgoZGVmYXVsdFNoYXJlZEl0ZW1CdWZmZXJTaXplLCBjYXBh
Y2l0eSArIFNoYXJlZERpc3BsYXlMaXN0SGFuZGxlOjpyZXNlcnZlZENhcGFjaXR5QXRTdGFydCkp
OwogICAgIGlmICghc2hhcmVkTWVtb3J5KQogICAgICAgICByZXR1cm4geyB9OwogCi0gICAgYXV0
byBpZGVudGlmaWVyID0gRGlzcGxheUxpc3Q6Okl0ZW1CdWZmZXJJZGVudGlmaWVyOjpnZW5lcmF0
ZSgpOwogICAgIFNoYXJlZE1lbW9yeTo6SGFuZGxlIHNoYXJlZE1lbW9yeUhhbmRsZTsKLSAgICBz
aGFyZWRNZW1vcnktPmNyZWF0ZUhhbmRsZShzaGFyZWRNZW1vcnlIYW5kbGUsIFNoYXJlZE1lbW9y
eTo6UHJvdGVjdGlvbjo6UmVhZE9ubHkpOwotICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZVJlbmRl
cmluZ0JhY2tlbmQ6OkRpZENyZWF0ZVNoYXJlZEl0ZW1EYXRhKGlkZW50aWZpZXIsIHsgV1RGTW92
ZShzaGFyZWRNZW1vcnlIYW5kbGUpLCBzaGFyZWRNZW1vcnktPnNpemUoKSB9KSwgbV9yZW5kZXJp
bmdCYWNrZW5kSWRlbnRpZmllcik7Ci0gICAgbV9zaGFyZWRJdGVtQnVmZmVycy5zZXQoaWRlbnRp
Zmllciwgc2hhcmVkTWVtb3J5LmNvcHlSZWYoKSk7CisgICAgc2hhcmVkTWVtb3J5LT5jcmVhdGVI
YW5kbGUoc2hhcmVkTWVtb3J5SGFuZGxlLCBTaGFyZWRNZW1vcnk6OlByb3RlY3Rpb246OlJlYWRX
cml0ZSk7CisKKyAgICBhdXRvIGlkZW50aWZpZXIgPSBEaXNwbGF5TGlzdDo6SXRlbUJ1ZmZlcklk
ZW50aWZpZXI6OmdlbmVyYXRlKCk7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlUmVuZGVyaW5n
QmFja2VuZDo6RGlkQ3JlYXRlU2hhcmVkRGlzcGxheUxpc3RIYW5kbGUoaWRlbnRpZmllciwgeyBX
VEZNb3ZlKHNoYXJlZE1lbW9yeUhhbmRsZSksIHNoYXJlZE1lbW9yeS0+c2l6ZSgpIH0sIHJlbW90
ZVJlc291cmNlSWRlbnRpZmllciksIG1fcmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXIpOworCisg
ICAgYXV0byBuZXdIYW5kbGUgPSBtYWtlVW5pcXVlPERpc3BsYXlMaXN0V3JpdGVySGFuZGxlPihp
ZGVudGlmaWVyLCBzaGFyZWRNZW1vcnkucmVsZWFzZU5vbk51bGwoKSk7CisgICAgYXV0byBkaXNw
bGF5TGlzdEhhbmRsZSA9IG5ld0hhbmRsZS0+Y3JlYXRlSGFuZGxlKCk7CisKKyAgICBtX2lkZW50
aWZpZXJzT2ZSZXVzYWJsZUhhbmRsZXMuYXBwZW5kKGlkZW50aWZpZXIpOworICAgIG1fc2hhcmVk
RGlzcGxheUxpc3RIYW5kbGVzLnNldChpZGVudGlmaWVyLCBXVEZNb3ZlKG5ld0hhbmRsZSkpOwog
Ci0gICAgcmV0dXJuIHsgaWRlbnRpZmllciwgcmVpbnRlcnByZXRfY2FzdDx1aW50OF90Kj4oc2hh
cmVkTWVtb3J5LT5kYXRhKCkpLCBzaGFyZWRNZW1vcnktPnNpemUoKSB9OworICAgIHJldHVybiBk
aXNwbGF5TGlzdEhhbmRsZTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0Jh
Y2tlbmRQcm94eS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1v
dGVSZW5kZXJpbmdCYWNrZW5kUHJveHkuaAppbmRleCAzNDU1OTZlZmI4OGE5YmQ1NWEzNTdmZmQ1
Yzk5NjEyN2U5Y2UxNzJhLi4yY2VjZmE4OTFkYzUwODgyZmRhMTBiNWRiZGVmZjMwNTMxNzM4ZGFk
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90
ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9H
UFUvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5LmgKQEAgLTM0LDYgKzM0LDcg
QEAKICNpbmNsdWRlICJSZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllci5oIgogI2luY2x1ZGUgPFdl
YkNvcmUvRGlzcGxheUxpc3QuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1JlbmRlcmluZ1Jlc291cmNl
SWRlbnRpZmllci5oPgorI2luY2x1ZGUgPHd0Zi9EZXF1ZS5oPgogI2luY2x1ZGUgPHd0Zi9XZWFr
UHRyLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTUwLDYgKzUxLDggQEAgZW51bSBjbGFz
cyBSZW5kZXJpbmdNb2RlIDogYm9vbDsKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKK2NsYXNzIERp
c3BsYXlMaXN0V3JpdGVySGFuZGxlOworCiBjbGFzcyBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJv
eHkKICAgICA6IHB1YmxpYyBJUEM6Ok1lc3NhZ2VTZW5kZXIKICAgICAsIHByaXZhdGUgSVBDOjpN
ZXNzYWdlUmVjZWl2ZXIKQEAgLTYwLDcgKzYzLDcgQEAgcHVibGljOgogICAgIH5SZW1vdGVSZW5k
ZXJpbmdCYWNrZW5kUHJveHkoKTsKIAogICAgIFJlbW90ZVJlc291cmNlQ2FjaGVQcm94eSYgcmVt
b3RlUmVzb3VyY2VDYWNoZVByb3h5KCkgeyByZXR1cm4gbV9yZW1vdGVSZXNvdXJjZUNhY2hlUHJv
eHk7IH0KLSAgICBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbUJ1ZmZlckhhbmRsZSBjcmVhdGVJ
dGVtQnVmZmVyKHNpemVfdCk7CisgICAgV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1CdWZmZXJI
YW5kbGUgY3JlYXRlSXRlbUJ1ZmZlcihzaXplX3QgY2FwYWNpdHksIFdlYkNvcmU6OlJlbmRlcmlu
Z1Jlc291cmNlSWRlbnRpZmllcik7CiAKICAgICAvLyBJUEM6Ok1lc3NhZ2VTZW5kZXIuCiAgICAg
SVBDOjpDb25uZWN0aW9uKiBtZXNzYWdlU2VuZGVyQ29ubmVjdGlvbigpIGNvbnN0IG92ZXJyaWRl
OwpAQCAtODIsMTEgKzg1LDE1IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgUmVtb3RlUmVuZGVy
aW5nQmFja2VuZFByb3h5KCk7CiAKKyAgICB2b2lkIHVwZGF0ZVJldXNhYmxlSGFuZGxlcygpOwor
CiAgICAgLy8gTWVzc2FnZXMgdG8gYmUgcmVjZWl2ZWQuCiAgICAgdm9pZCBpbWFnZUJ1ZmZlckJh
Y2tlbmRXYXNDcmVhdGVkKGNvbnN0IFdlYkNvcmU6OkZsb2F0U2l6ZSYgbG9naWNhbFNpemUsIGNv
bnN0IFdlYkNvcmU6OkludFNpemUmIGJhY2tlbmRTaXplLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUs
IFdlYkNvcmU6OkNvbG9yU3BhY2UsIEltYWdlQnVmZmVyQmFja2VuZEhhbmRsZSwgV2ViQ29yZTo6
UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKTsKICAgICB2b2lkIGZsdXNoRGlzcGxheUxpc3RX
YXNDb21taXR0ZWQoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkZsdXNoSWRlbnRpZmllciwgV2ViQ29y
ZTo6UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKTsKIAotICAgIEhhc2hNYXA8V2ViQ29yZTo6
RGlzcGxheUxpc3Q6Okl0ZW1CdWZmZXJJZGVudGlmaWVyLCBSZWZQdHI8U2hhcmVkTWVtb3J5Pj4g
bV9zaGFyZWRJdGVtQnVmZmVyczsKKyAgICBIYXNoTWFwPFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJ
dGVtQnVmZmVySWRlbnRpZmllciwgc3RkOjp1bmlxdWVfcHRyPERpc3BsYXlMaXN0V3JpdGVySGFu
ZGxlPj4gbV9zaGFyZWREaXNwbGF5TGlzdEhhbmRsZXM7CisgICAgRGVxdWU8V2ViQ29yZTo6RGlz
cGxheUxpc3Q6Okl0ZW1CdWZmZXJJZGVudGlmaWVyPiBtX2lkZW50aWZpZXJzT2ZSZXVzYWJsZUhh
bmRsZXM7CisgICAgSGFzaFNldDxXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbUJ1ZmZlcklkZW50
aWZpZXI+IG1faWRlbnRpZmllcnNPZkhhbmRsZXNBdmFpbGFibGVGb3JXcml0aW5nOwogICAgIFJl
bW90ZVJlc291cmNlQ2FjaGVQcm94eSBtX3JlbW90ZVJlc291cmNlQ2FjaGVQcm94eSB7ICp0aGlz
IH07CiAgICAgUmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXIgbV9yZW5kZXJpbmdCYWNrZW5kSWRl
bnRpZmllciB7IFJlbmRlcmluZ0JhY2tlbmRJZGVudGlmaWVyOjpnZW5lcmF0ZSgpIH07CiB9Owo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>413510</attachid>
            <date>2020-11-06 20:42:25 -0800</date>
            <delta_ts>2020-11-06 22:37:41 -0800</delta_ts>
            <desc>Rebase on trunk</desc>
            <filename>bug-218426-20201106204224.patch</filename>
            <type>text/plain</type>
            <size>59162</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY5NTU2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDRlYTRjMzdkZWI0NTI5MDhk
NTE5YWI1MDhiYzAwZGFhZDdmZDI2NDYuLmVkNTRiMjQ5MDkxYzUwNDliZGM4MzQ5NzIwOWM4OTdh
ZWFlNjQ4Y2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQ5IEBACisyMDIwLTExLTA0ICBXZW5zb24g
SHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAgICAgIFtDb25jdXJyZW50IGRp
c3BsYXkgbGlzdHNdIEFkZCBhbiBpbml0aWFsIGltcGxlbWVudGF0aW9uIG9mIGNvbmN1cnJlbnQg
ZGlzcGxheSBsaXN0IHJlbmRlcmluZworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MjE4NDI2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgVGhpcyBwYXRjaCBhZGRzIGEgZmlyc3QtY3V0IGltcGxlbWVudGF0aW9u
IG9mIGNvbmN1cnJlbnQgZGlzcGxheSBsaXN0IHJlbmRlcmluZywgd2hpY2ggYWxsb3dzIHRoZSBH
UFUgYW5kIHdlYgorICAgICAgICBwcm9jZXNzZXMgdG8gcmVhZCBhbmQgd3JpdGUgZGlzcGxheSBs
aXN0IGRhdGEgYXQgdGhlIHNhbWUgdGltZS4gVG8gYWNoaWV2ZSB0aGlzLCB3ZSByZW1vdmUgdGhl
IHBsYWNlaG9sZGVyCisgICAgICAgIHNoYXJlZCBtZW1vcnkgZGlzcGxheSBsaXN0IGVuY29kaW5n
IG1lY2hhbmlzbSBwcmV2aW91c2x5IGFkZGVkIGluIDx3ZWJraXQub3JnL2IvMjE4NDA2PiwgYW5k
IHJlcGxhY2UgaXQgd2l0aCBhCisgICAgICAgIG5ldyBtb2RlbCBpbiB3aGljaCBhIHdyaXRlciAo
aS5lLiB0aGUgd2ViIHByb2Nlc3MpIGFuZCBhIHJlYWRlciAoaS5lLiB0aGUgR1BVIHByb2Nlc3Mp
IHNoYXJlIGEgc2V0IG9mIHJldXNhYmxlCisgICAgICAgIHNoYXJlZCBtZW1vcnkgYnVmZmVycyB3
aGljaCBjb250YWluIGRpc3BsYXkgbGlzdCBpdGVtIGRhdGEuIEFzIHRoZSB3cml0ZXIgYXBwZW5k
cyBkYXRhIHRvIHNoYXJlZCBtZW1vcnksIGl0CisgICAgICAgIGluY3JlbWVudHMgYSBjb3VudGVy
IGluIGVhY2ggc2hhcmVkIG1lbW9yeSBidWZmZXIgdGhhdCByZXByZXNlbnRzIHRoZSBudW1iZXIg
b2YgYnl0ZXMgdGhhdCB0aGUgcmVhZGVyIGhhcyB5ZXQgdG8KKyAgICAgICAgcmVhZDsgYXMgdGhl
IHJlYWRlciByZWFkcyBkaXNwbGF5IGxpc3QgaXRlbXMgZnJvbSBzaGFyZWQgbWVtb3J5LCBpdCBk
ZWNyZW1lbnRzIHRoaXMgY291bnRlci4KKworICAgICAgICBUaGlzIHBhdGNoIGFsc28gaW1wbGVt
ZW50cyBhIHNpbXBsZSBzdHJhdGVneSBmb3IgcmV1c2luZyB0aGVzZSBzaGFyZWQgaXRlbSBidWZm
ZXJzLiBUaGUgd2ViIHByb2Nlc3MgbWFpbnRhaW5zIGEKKyAgICAgICAgcXVldWUgb2YgcmV1c2Fi
bGUgYnVmZmVyczsgd2hlbiBkaXNwbGF5IGxpc3QgaXRlbXMgYXJlIGFwcGVuZGVkIGFuZCB0aGUg
Y3VycmVudCB3cml0YWJsZSBidWZmZXIgaXMgb3V0IG9mCisgICAgICAgIGNhcGFjaXR5LCB0aGUg
ZGlzcGxheSBsaXN0IGl0ZW0gYnVmZmVyIGNhbGxzIG91dCB0byBXZWJLaXQyIHZpYSBhIGNsaWVu
dCBtZXRob2QgdG8gcmVxdWVzdCBtb3JlIHNoYXJlZCBtZW1vcnkuCisgICAgICAgIEhlcmUsIHRo
ZSB3ZWIgcHJvY2VzcyB0cmF2ZXJzZXMgdGhlIHF1ZXVlIG9mIHJldXNhYmxlIGl0ZW0gYnVmZmVy
cyBpbiBzZWFyY2ggb2YgYSBidWZmZXIgd2l0aCBzdWZmaWNpZW50CisgICAgICAgIGNhcGFjaXR5
OyBpZiBmb3VuZCwgd2UgaGFuZCB0aGlzIGJhY2sgdG8gV2ViQ29yZSBhcyBhbiBvcGFxdWUgYEl0
ZW1CdWZmZXJIYW5kbGVgOyBvdGhlcndpc2UsIHdlIGFsbG9jYXRlIGEgbmV3CisgICAgICAgIHJl
dXNhYmxlIHNoYXJlZCBtZW1vcnkgYnVmZmVyLiBJdGVtIGJ1ZmZlcnMgdGhhdCBoYXZlIGJlZW4g
dXNlZCBiZWNvbWUgcmV1c2FibGUgb25seSBhZnRlciB0aGV5IGFyZSAoMSkgbm8KKyAgICAgICAg
bG9uZ2VyIGJlaW5nIHJlYWQgZnJvbSAtLSBpLmUuLCB0aGUgY291bnRlciB2YWx1ZSBpcyAwLCBh
bmQgKDIpIHRoZXkgYXJlIG5vdCBhY3RpdmVseSBiZWluZyB3cml0dGVuIHRvLgorICAgICAgICBC
dWZmZXJzIHRoYXQgaGF2ZSBiZWVuIHVzZWQgYXJlIGxhemlseSByZWludHJvZHVjZWQgaW50byB0
aGUgcmV1c2UgcXVldWUgd2hlbiBhIGRpc3BsYXkgbGlzdCByZXF1ZXN0cyBhIGhhbmRsZQorICAg
ICAgICB0byB3cml0YWJsZSBpdGVtIGJ1ZmZlciBkYXRhLgorCisgICAgICAgIFNlZSBiZWxvdyBm
b3IgbW9yZSBkZXRhaWxzLgorCisgICAgICAgICogR1BVUHJvY2Vzcy9ncmFwaGljcy9EaXNwbGF5
TGlzdFJlYWRlckhhbmRsZS5jcHA6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJLaXQvU2hhcmVkL1No
YXJlZERpc3BsYXlMaXN0SGFuZGxlLmNwcC4KKyAgICAgICAgKFdlYktpdDo6RGlzcGxheUxpc3RS
ZWFkZXJIYW5kbGU6OmFkdmFuY2UpOgorICAgICAgICAoV2ViS2l0OjpEaXNwbGF5TGlzdFJlYWRl
ckhhbmRsZTo6Y3JlYXRlRGlzcGxheUxpc3QgY29uc3QpOgorICAgICAgICAqIEdQVVByb2Nlc3Mv
Z3JhcGhpY3MvRGlzcGxheUxpc3RSZWFkZXJIYW5kbGUuaDogQ29waWVkIGZyb20gU291cmNlL1dl
YktpdC9TaGFyZWQvU2hhcmVkRGlzcGxheUxpc3RIYW5kbGUuY3BwLgorICAgICAgICAoV2ViS2l0
OjpEaXNwbGF5TGlzdFJlYWRlckhhbmRsZTo6RGlzcGxheUxpc3RSZWFkZXJIYW5kbGUpOgorCisg
ICAgICAgIEFkZCBhIG5ldyBoZWxwZXIgY2xhc3MgdG8gcmVwcmVzZW50IGEgc2hhcmVkIGRpc3Bs
YXkgbGlzdCBpdGVtIGJ1ZmZlciB0aGF0IHRoZSBHUFUgcHJvY2VzcyBjYW4gdXNlIHRvIGNvbnN1
bWUKKyAgICAgICAgZGlzcGxheSBsaXN0IGl0ZW1zLiBBZHZhbmNpbmcgdGhlIGN1cnNvciBpbiBg
RGlzcGxheUxpc3RSZWFkZXJIYW5kbGVgIGluY3JlbWVudHMgdGhlICJyZW1haW5pbmcgYnl0ZXMi
IGNvdW50ZXI7CisgICAgICAgIHRoZSBjbGFzcyBhbHNvIGhhcyBhIGhlbHBlciBtZXRob2QgZm9y
IGNyZWF0aW5nIGEgbmV3IGBEaXNwbGF5TGlzdGAgd2l0aCBhIGdpdmVuIG9mZnNldCBpbnRvIHRo
ZSBzaGFyZWQgYnVmZmVyLAorICAgICAgICBhcyB3ZWxsIHRoZSBudW1iZXIgb2YgYnl0ZXMgdG8g
cmVhZC4KKworICAgICAgICAqIEdQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlSW1hZ2VCdWZmZXIu
aDoKKworICAgICAgICBIYW5kbGUgdGhlIGBTd2l0Y2hUb0J1ZmZlcmAgYW5kIGBGbHVzaENvbnRl
eHRgIGl0ZW1zIGJ5IChyZXNwZWN0aXZlbHkpIGluZm9ybWluZyB0aGUgcmVuZGVyaW5nIGJhY2tl
bmQgYWJvdXQKKyAgICAgICAgdGhlIG5leHQgYnVmZmVyIHRvIHJlYWQgZnJvbSwgYW5kIHNlbmRp
bmcgYSAiZmx1c2ggY29tbWl0dGVkIiBJUEMgbWVzc2FnZSBiYWNrIHRvIHRoZSB3ZWIgcHJvY2Vz
cy4KKworICAgICAgICAoV2ViS2l0OjpSZW1vdGVJbWFnZUJ1ZmZlcjo6UmVtb3RlSW1hZ2VCdWZm
ZXIpOgorICAgICAgICAqIEdQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2Vu
ZC5jcHA6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6Ondha2VVcEFu
ZFByb2Nlc3NEaXNwbGF5TGlzdCk6CisKKyAgICAgICAgVGhpcyBpcyB0aGUgbWFpbiBsb29wIGlu
IHRoZSBHUFUgcHJvY2VzcyB0aGF0IGlzIHJlc3BvbnNpYmxlIGZvciBhcHBseWluZyBpbmNvbWlu
ZyBkaXNwbGF5IGxpc3QgaXRlbSBkYXRhLiBUaGlzCisgICAgICAgIElQQyBlbmRwb2ludCByZWNl
aXZlcyBpbmZvcm1hdGlvbiBhYm91dCB3aGVyZSB0byBzdGFydCAoaS5lLiBhbiBpdGVtIGJ1ZmZl
ciBJRCBhbmQgYW4gb2Zmc2V0IGludG8gc2hhcmVkIG1lbW9yeQorICAgICAgICBpbiB0aGF0IGJ1
ZmZlcikgYW5kIGJlZ2lucyByZWFkaW5nIHJhbmdlcyBvZiBkaXNwbGF5IGxpc3QgaXRlbSBkYXRh
IGluc2lkZSB0aGF0IGJ1ZmZlci4gQWZ0ZXIgaXQgaXMgZG9uZQorICAgICAgICBwcm9jZXNzaW5n
IGFsbCBvZiBpdHMgdW5yZWFkIGJ5dGVzLCBpdCB0aGVuIGNoZWNrcyB0aGUgdW5yZWFkIGJ5dGUg
Y291bnQgb25jZSBhZ2FpbiwgYW5kIGNvbnRpbnVlcyB0aGUgbG9vcCBpZgorICAgICAgICB0aGUg
d2ViIHByb2Nlc3MgaGFzIGFkdmFuY2VkIHRoaXMgY291bnQuCisKKyAgICAgICAgKFdlYktpdDo6
UmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6c2V0TmV4dEl0ZW1CdWZmZXJUb1JlYWQpOgorICAgICAg
ICAoV2ViS2l0OjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpkaWRDcmVhdGVTaGFyZWREaXNwbGF5
TGlzdEhhbmRsZSk6CisKKyAgICAgICAgQWRkIGxvZ2ljIHRvIGhhbmRsZSB0aGUgY2FzZSB3aGVy
ZSB3ZSByZWFjaGVkIHRoZSBlbmQgb2YgYW4gaXRlbSBidWZmZXIsIGJ1dCB0aGUgbmV4dCBidWZm
ZXIgaWRlbnRpZmllciBpcyBzdGlsbAorICAgICAgICB1bmtub3duIHRvIHVzIChzaW5jZSBpdCBp
cyBzdGlsbCAiaW4gdHJhbnNpdCIgdmlhIHRoZSBgRGlkQ3JlYXRlU2hhcmVkRGlzcGxheUxpc3RI
YW5kbGVgIElQQyBtZXNzYWdlKS4gSW4gdGhpcworICAgICAgICBjYXNlLCB3ZSByZW1lbWJlciB0
aGUgbmV4dCBidWZmZXIgaWRlbnRpZmllciBpbiBgbV9uZXh0SXRlbUJ1ZmZlclRvUmVhZGAsIGFu
ZCBleGl0IHRoZSBwcm9jZXNzaW5nIGxvb3AgaW5zaWRlCisgICAgICAgIGB3YWtlVXBBbmRQcm9j
ZXNzRGlzcGxheUxpc3RgLiBVcG9uIHJlY2VpdmluZyB0aGUgc2hhcmVkIG1lbW9yeSBoYW5kbGUg
aW4gYGRpZENyZWF0ZVNoYXJlZERpc3BsYXlMaXN0SGFuZGxlYCwgd2UKKyAgICAgICAgdGhlbiBh
dXRvbWF0aWNhbGx5IHJlc3VtZSBkaXNwbGF5IGxpc3QgcHJvY2Vzc2luZywgc3RhcnRpbmcgZnJv
bSB0aGUgYmVnaW5uaW5nIG9mIHRoaXMgbmV3IGJ1ZmZlci4KKworICAgICAgICAoV2ViS2l0OjpS
ZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjphcHBseURpc3BsYXlMaXN0KTogRGVsZXRlZC4KKyAgICAg
ICAgKFdlYktpdDo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6Zmx1c2hEaXNwbGF5TGlzdCk6IERl
bGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OmZsdXNoRGlz
cGxheUxpc3RBbmRDb21taXQpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVSZW5k
ZXJpbmdCYWNrZW5kOjpkaWRDcmVhdGVTaGFyZWRJdGVtRGF0YSk6IERlbGV0ZWQuCisKKyAgICAg
ICAgV2UgZG9uJ3QgbmVlZCBhbnkgb2YgdGhlc2UgbWV0aG9kcyBhbnltb3JlLCBub3cgdGhhdCB0
aGVyZSBpcyBvbmx5IG9uZSBjb2RlcGF0aCBmb3IgcHJvY2Vzc2luZyBkaXNwbGF5IGxpc3QKKyAg
ICAgICAgaXRlbXMuIFNlZSBgUmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6d2FrZVVwQW5kUHJvY2Vz
c0Rpc3BsYXlMaXN0YCBhYm92ZS4gQWxzbywgcmVuYW1lIGBkaWRDcmVhdGVTaGFyZWRJdGVtRGF0
YWAKKyAgICAgICAgdG8gYGRpZENyZWF0ZVNoYXJlZERpc3BsYXlMaXN0SGFuZGxlYCAoYWxzbyBh
Ym92ZSkuCisKKyAgICAgICAgKiBHUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0Jh
Y2tlbmQuaDoKKyAgICAgICAgKiBHUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0Jh
Y2tlbmQubWVzc2FnZXMuaW46CisgICAgICAgICogU2hhcmVkL1NoYXJlZERpc3BsYXlMaXN0SGFu
ZGxlLmg6CisgICAgICAgIChXZWJLaXQ6OlNoYXJlZERpc3BsYXlMaXN0SGFuZGxlOjpzaGFyZWRN
ZW1vcnkgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpTaGFyZWREaXNwbGF5TGlzdEhhbmRsZTo6
c2hhcmVkTWVtb3J5KToKKyAgICAgICAgKFdlYktpdDo6U2hhcmVkRGlzcGxheUxpc3RIYW5kbGU6
OnVucmVhZEJ5dGVzIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6U2hhcmVkRGlzcGxheUxpc3RI
YW5kbGU6OmRhdGEgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpTaGFyZWREaXNwbGF5TGlzdEhh
bmRsZTo6aWRlbnRpZmllciBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OlNoYXJlZERpc3BsYXlM
aXN0SGFuZGxlOjpMb2NrOjpMb2NrKToKKyAgICAgICAgKFdlYktpdDo6U2hhcmVkRGlzcGxheUxp
c3RIYW5kbGU6OkxvY2s6On5Mb2NrKToKKyAgICAgICAgKFdlYktpdDo6U2hhcmVkRGlzcGxheUxp
c3RIYW5kbGU6OlNoYXJlZERpc3BsYXlMaXN0SGFuZGxlKToKKyAgICAgICAgKFdlYktpdDo6U2hh
cmVkRGlzcGxheUxpc3RIYW5kbGU6OnVucmVhZEJ5dGVzSGFuZGxlKToKKyAgICAgICAgKFdlYktp
dDo6U2hhcmVkRGlzcGxheUxpc3RIYW5kbGU6OmF0b21pY0xvY2tWYWx1ZSBjb25zdCk6CisgICAg
ICAgIChXZWJLaXQ6OlNoYXJlZERpc3BsYXlMaXN0SGFuZGxlOjplbmNvZGUgY29uc3QpOiBEZWxl
dGVkLgorICAgICAgICAoV2ViS2l0OjpTaGFyZWREaXNwbGF5TGlzdEhhbmRsZTo6ZGVjb2RlKTog
RGVsZXRlZC4KKworICAgICAgICBSZXB1cnBvc2UgYFNoYXJlZERpc3BsYXlMaXN0SGFuZGxlYCB0
byBzZXJ2ZSBhcyBhIGJhc2UgY2xhc3MgZm9yIGJvdGggYERpc3BsYXlMaXN0UmVhZGVySGFuZGxl
YCBhbmQKKyAgICAgICAgYERpc3BsYXlMaXN0V3JpdGVySGFuZGxlYC4gVGhpcyBiYXNlIGNsYXNz
IGlzIGF3YXJlIG9mIHRoZSBtZW1vcnkgbGF5b3V0IG9mIHRoZSBkaXNwbGF5IGxpc3QgaXRlbSBi
dWZmZXIgaW4KKyAgICAgICAgc2hhcmVkIG1lbW9yeSAoaW4gcGFydGljdWxhciwgdGhlIGZhY3Qg
dGhhdCB0aGUgZmlyc3QgYnl0ZSBpcyB0aGUgYXRvbWljIGxvY2sgYW5kIHRoZSBuZXh0IGBzaXpl
b2Yoc2l6ZV90KWAKKyAgICAgICAgYnl0ZXMgY29udGFpbiB0aGUgdW5yZWFkIGJ5dGUgY291bnRl
cikuCisKKyAgICAgICAgVGhpcyBhbHNvIGV4cG9zZXMgYSBoZWxwZXIgUkFJSSBjbGFzcywgYFNo
YXJlZERpc3BsYXlMaXN0SGFuZGxlOjpMb2NrYCwgdGhhdCBpcyB1c2VkIHRvIGdyYWIgdGhlIGxv
Y2sgb24gYQorICAgICAgICBwYXJ0aWN1bGFyIHNoYXJlZCBpdGVtIGJ1ZmZlciB3aGVuIHJlYWRp
bmcgb3IgdXBkYXRpbmcgdGhlIHVucmVhZCBieXRlcyBjb3VudGVyLgorCisgICAgICAgICogU291
cmNlcy50eHQ6CisgICAgICAgICogV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6Cisg
ICAgICAgICogV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvRGlzcGxheUxpc3RXcml0ZXJIYW5kbGUu
Y3BwOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViS2l0L1NoYXJlZC9TaGFyZWREaXNwbGF5TGlzdEhh
bmRsZS5jcHAuCisgICAgICAgIChXZWJLaXQ6OkRpc3BsYXlMaXN0V3JpdGVySGFuZGxlOjphZHZh
bmNlKToKKyAgICAgICAgKFdlYktpdDo6RGlzcGxheUxpc3RXcml0ZXJIYW5kbGU6OmF2YWlsYWJs
ZUNhcGFjaXR5IGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6RGlzcGxheUxpc3RXcml0ZXJIYW5k
bGU6OmNyZWF0ZUhhbmRsZSBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OkRpc3BsYXlMaXN0V3Jp
dGVySGFuZGxlOjpyZXNldFdyaXRhYmxlT2Zmc2V0SWZQb3NzaWJsZSk6CisKKyAgICAgICAgVGhp
cyBoZWxwZXIgbWV0aG9kIG1vdmVzIHRoZSB3cml0YWJsZSBvZmZzZXQgKHNlZSBiZWxvdykgYmFj
ayB0byB0aGUgc3RhcnQgb2YgdGhlIGJ1ZmZlciBpZiBpdCBpcyBub3QgYmVpbmcgcmVhZAorICAg
ICAgICBmcm9tIGJ5IHRoZSBHUFUgcHJvY2Vzcy4KKworICAgICAgICAqIFdlYlByb2Nlc3MvR1BV
L2dyYXBoaWNzL0Rpc3BsYXlMaXN0V3JpdGVySGFuZGxlLmg6IFJlbmFtZWQgZnJvbSBTb3VyY2Uv
V2ViS2l0L1NoYXJlZC9TaGFyZWREaXNwbGF5TGlzdEhhbmRsZS5jcHAuCisgICAgICAgIChXZWJL
aXQ6OkRpc3BsYXlMaXN0V3JpdGVySGFuZGxlOjpEaXNwbGF5TGlzdFdyaXRlckhhbmRsZSk6Cisg
ICAgICAgIChXZWJLaXQ6OkRpc3BsYXlMaXN0V3JpdGVySGFuZGxlOjp3cml0YWJsZU9mZnNldCBj
b25zdCk6CisKKyAgICAgICAgU2ltaWxhciB0byBgRGlzcGxheUxpc3RSZWFkZXJIYW5kbGVgLCBl
eGNlcHQgdGhhdCB0aGlzIGNvbnRhaW5zIGxvZ2ljIHNwZWNpZmljIHRvIHRoZSB3ZWIgcHJvY2Vz
cyBmb3Igd3JpdGluZworICAgICAgICBkaXNwbGF5IGxpc3QgaXRlbXMgaW50byBzaGFyZWQgbWVt
b3J5LiBBZHZhbmNpbmcgdGhlIGN1cnNvciBpbiBgRGlzcGxheUxpc3RXcml0ZXJIYW5kbGVgIGRl
Y3JlbWVudHMgdGhlIGNvdW50ZXIuCisgICAgICAgIEl0IGFsc28gaW5jcmVtZW50cyB0aGUgYHdy
aXRhYmxlT2Zmc2V0YCBvZiB0aGUgaGFuZGxlLCB3aGljaCByZXByZXNlbnRzIHRoZSBtaW5pbXVt
IG9mZnNldCBpbnRvIHRoZSBzaGFyZWQKKyAgICAgICAgYnVmZmVyIHRoYXQgbWF5IGNvbnRhaW4g
bmV3bHkgYXBwZW5kZWQgZGlzcGxheSBsaXN0IGl0ZW1zLgorCisgICAgICAgICogV2ViUHJvY2Vz
cy9HUFUvZ3JhcGhpY3MvUmVtb3RlSW1hZ2VCdWZmZXJQcm94eS5oOgorICAgICAgICAqIFdlYlBy
b2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS5jcHA6CisgICAg
ICAgIChXZWJLaXQ6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eTo6Zmx1c2hEaXNwbGF5TGlz
dCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eTo6dXBkYXRl
UmV1c2FibGVIYW5kbGVzKToKKworICAgICAgICBUaGlzIHByaXZhdGUgaGVscGVyIGl0ZXJhdGVz
IHRoZSBzZXQgb2YgYnVmZmVycyB0aGF0IGFyZSBub3QgY3VycmVudGx5IGJlaW5nIHdyaXR0ZW4g
dG8sIGFuZCBhZGRzIGVhY2ggb25lIHRvCisgICAgICAgIHRoZSByZXVzYWJsZSBidWZmZXIgcXVl
dWUgb25seSBpZiBpdHMgd3JpdGFibGUgb2Zmc2V0IGlzIGF0IHRoZSBzdGFydC4KKworICAgICAg
ICAoV2ViS2l0OjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHk6OmNyZWF0ZUl0ZW1CdWZmZXIp
OgorCisgICAgICAgIEltcGxlbWVudHMgbG9naWMgdGhhdCBoYW5kcyBzaGFyZWQgaXRlbSBidWZm
ZXIgZGF0YSBoYW5kbGVzIHRvIFdlYkNvcmUgZm9yIHdyaXRpbmcgZGlzcGxheSBsaXN0IGl0ZW1z
LiBUaGlzIHdpbGwKKyAgICAgICAgdHJ5IHRvIHJldXNlIGFuIGl0ZW0gYnVmZmVyIGluIHRoZSBy
ZXVzZSBxdWV1ZSwgaWYgcG9zc2libGUsIGFuZCBmYWxsIGJhY2sgdG8gYWxsb2NhdGluZyBhIG5l
dyBjaHVuayBvZiBzaGFyZWQKKyAgICAgICAgbWVtb3J5IGlmIG5vIHJldXNhYmxlIGJ1ZmZlciBp
cyBmb3VuZCAob3IgdGhlIGV4aXN0aW5nIGJ1ZmZlcnMgaGF2ZSBpbnN1ZmZpY2llbnQgY2FwYWNp
dHkpLiBUaGUgZmFjdCB0aGF0IHdlCisgICAgICAgIGl0ZXJhdGUgdGhyb3VnaCBlYWNoIHJldXNh
YmxlIGJ1ZmZlciBpbiBvcmRlciwgY29tYmluZWQgd2l0aCB0aGUgYWJvdmUgbG9naWMgaW4gYHVw
ZGF0ZVJldXNhYmxlSGFuZGxlc2AsIGVuc3VyZXMKKyAgICAgICAgdGhhdCBvbmNlIHdlIGJlZ2lu
IHdyaXRpbmcgdG8gYSBpdGVtIGJ1ZmZlciwgd2Ugd2lsbCBjb250aW51ZSB1c2luZyB0aGF0IGl0
ZW0gYnVmZmVyIHVudGlsIGl0IGV4aGF1c3RzIGF2YWlsYWJsZQorICAgICAgICBjYXBhY2l0eS4K
KworICAgICAgICBUaGlzIHByb3BlcnR5IGlzIGltcG9ydGFudCBiZWNhdXNlIGl0IGFsbG93cyB0
aGUgR1BVIHByb2Nlc3MgdG8gc2ltcGx5IHN0YXJ0IHJlYWRpbmcgaXRlbSBkYXRhIGZyb20gYSBn
aXZlbgorICAgICAgICBvZmZzZXQgYW5kIGJ1ZmZlciBJRCAoc3BlY2lmaWVkIGluIHRoZSBgV2Fr
ZVVwQW5kUHJvY2Vzc0Rpc3BsYXlMaXN0YCBJUEMgbWVzc2FnZSksIGFuZCBzZWFtbGVzc2x5IGNv
bnRpbnVlCisgICAgICAgIHJlYWRpbmcgZGF0YSBldmVuIGFmdGVyIGl0IGV4aGF1c3RzIGFsbCBh
dmFpbGFibGUgaXRlbSBkYXRhIGluIHRoZSBjdXJyZW50IGJ1ZmZlciBieSBjb250aW51aW5nIGZy
b20gdGhlIHN0YXJ0CisgICAgICAgIG9mIHRoZSBpdGVtIGJ1ZmZlciB0aGF0IGNvbnRhaW5zIHRo
ZSBuZXh0IGRpc3BsYXkgbGlzdCBpdGVtcyAod2hpY2ggd2UgbGVhcm4gaW4gdGhlIEdQVSBwcm9j
ZXNzIGJ5IGVuY291bnRlcmluZworICAgICAgICBhIGBTd2l0Y2hUb0J1ZmZlcmAgaXRlbSBhdCB0
aGUgZW5kIG9mIHRoZSBwcmV2aW91cyBidWZmZXIpLgorCisgICAgICAgIEluICJzdGVhZHkgc3Rh
dGUiICh3aGVyZWluIGJvdGggcHJvY2Vzc2VzIGFyZSBjb25jdXJyZW50bHkgd3JpdGluZyBhbmQg
cmVhZGluZyBpdGVtcyBhcyBxdWlja2x5IGFzIHBvc3NpYmxlKSwKKyAgICAgICAgdGhpcyBtZWFu
cyB0aGF0IGFzIHRoZSB3ZWIgcHJvY2VzcyBpcyBidXN5IGZpbGxpbmcgdXAgZWFjaCBpdGVtIGJ1
ZmZlciB3aXRoIGl0ZW0gZGF0YSwgdGhlIEdQVSBwcm9jZXNzIGlzIGFsc28KKyAgICAgICAgYnVz
eSBhcHBseWluZyBhbGwgdGhlIGl0ZW0gZGF0YSBpbiBvbmUgYnVmZmVyIGFuZCBhdXRvbWF0aWNh
bGx5IG1vdmluZyBvbiB0byB0aGUgbmV4dCBidWZmZXIgd2l0aCBubyBhZGRpdGlvbmFsCisgICAg
ICAgIElQQyBtZXNzYWdlcyByZXF1aXJlZC4KKworICAgICAgICAoV2ViS2l0OjpSZW1vdGVSZW5k
ZXJpbmdCYWNrZW5kUHJveHk6OmZsdXNoRGlzcGxheUxpc3RBbmRDb21taXQpOiBEZWxldGVkLgor
ICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQ
cm94eS5oOgorCiAyMDIwLTExLTA2ICBKaWV3ZW4gVGFuICA8amlld2VuX3RhbkBhcHBsZS5jb20+
CiAKICAgICAgICAgW1dlYkF1dGhuXSBbaU9TXSBXZWJBdXRobiBwcm9jZXNzIGRvZXNuJ3Qgc3Rh
cnQgb24gaU9TIGRldmljZXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9n
cmFwaGljcy9EaXNwbGF5TGlzdFJlYWRlckhhbmRsZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L0dQVVBy
b2Nlc3MvZ3JhcGhpY3MvRGlzcGxheUxpc3RSZWFkZXJIYW5kbGUuY3BwCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmU4
NjE5YzQzZjM1NDE0YzlmYjY4MzBkNmYyNjhjMDIyYmI1OWRmOTQKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvRGlzcGxheUxpc3RSZWFkZXJIYW5k
bGUuY3BwCkBAIC0wLDAgKzEsNDQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycK
KyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisg
KiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgi
CisjaW5jbHVkZSAiRGlzcGxheUxpc3RSZWFkZXJIYW5kbGUuaCIKKworbmFtZXNwYWNlIFdlYktp
dCB7Cit1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKKwordm9pZCBEaXNwbGF5TGlzdFJlYWRlckhh
bmRsZTo6YWR2YW5jZShzaXplX3QgYW1vdW50KQoreworICAgIHVucmVhZEJ5dGVzSGFuZGxlKCkg
LT0gYW1vdW50OworfQorCitzdGQ6OnVuaXF1ZV9wdHI8RGlzcGxheUxpc3Q6OkRpc3BsYXlMaXN0
PiBEaXNwbGF5TGlzdFJlYWRlckhhbmRsZTo6Y3JlYXRlRGlzcGxheUxpc3Qoc2l6ZV90IG9mZnNl
dCwgc2l6ZV90IGNhcGFjaXR5LCBEaXNwbGF5TGlzdDo6SXRlbUJ1ZmZlclJlYWRpbmdDbGllbnQm
IGNsaWVudCkgY29uc3QKK3sKKyAgICBhdXRvIGRpc3BsYXlMaXN0ID0gbWFrZVVuaXF1ZTxEaXNw
bGF5TGlzdDo6RGlzcGxheUxpc3Q+KERpc3BsYXlMaXN0OjpJdGVtQnVmZmVySGFuZGxlcyB7eyBp
ZGVudGlmaWVyKCksIGRhdGEoKSArIG9mZnNldCwgY2FwYWNpdHkgfX0pOworICAgIGRpc3BsYXlM
aXN0LT5zZXRJdGVtQnVmZmVyQ2xpZW50KCZjbGllbnQpOworICAgIHJldHVybiBkaXNwbGF5TGlz
dDsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L0dQVVByb2Nlc3MvZ3JhcGhpY3MvRGlzcGxheUxpc3RSZWFkZXJIYW5kbGUuaCBiL1NvdXJjZS9X
ZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9EaXNwbGF5TGlzdFJlYWRlckhhbmRsZS5oCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjVmM2JiOTllMWM2NWFlN2E2YTRiM2IyNzcyODAwODQzMDYxMDhjODkKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvRGlzcGxheUxpc3RS
ZWFkZXJIYW5kbGUuaApAQCAtMCwwICsxLDQ1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIw
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBB
UyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJV
VE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
CisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNl
CisKKyNpbmNsdWRlICJTaGFyZWREaXNwbGF5TGlzdEhhbmRsZS5oIgorI2luY2x1ZGUgPHd0Zi9G
YXN0TWFsbG9jLmg+CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBEaXNwbGF5TGlzdFJl
YWRlckhhbmRsZSA6IHB1YmxpYyBTaGFyZWREaXNwbGF5TGlzdEhhbmRsZSB7CisgICAgV1RGX01B
S0VfTk9OQ09QWUFCTEUoRGlzcGxheUxpc3RSZWFkZXJIYW5kbGUpOyBXVEZfTUFLRV9GQVNUX0FM
TE9DQVRFRDsKK3B1YmxpYzoKKyAgICBEaXNwbGF5TGlzdFJlYWRlckhhbmRsZShXZWJDb3JlOjpE
aXNwbGF5TGlzdDo6SXRlbUJ1ZmZlcklkZW50aWZpZXIgaWRlbnRpZmllciwgUmVmPFNoYXJlZE1l
bW9yeT4mJiBzaGFyZWRNZW1vcnkpCisgICAgICAgIDogU2hhcmVkRGlzcGxheUxpc3RIYW5kbGUo
aWRlbnRpZmllciwgV1RGTW92ZShzaGFyZWRNZW1vcnkpKQorICAgIHsKKyAgICB9CisKKyAgICB2
b2lkIGFkdmFuY2Uoc2l6ZV90IGFtb3VudCkgb3ZlcnJpZGU7CisgICAgc3RkOjp1bmlxdWVfcHRy
PFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEaXNwbGF5TGlzdD4gY3JlYXRlRGlzcGxheUxpc3Qoc2l6
ZV90IG9mZnNldCwgc2l6ZV90IGNhcGFjaXR5LCBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbUJ1
ZmZlclJlYWRpbmdDbGllbnQmKSBjb25zdDsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUltYWdl
QnVmZmVyLmggYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlSW1hZ2VC
dWZmZXIuaAppbmRleCBkYTk5NTgyNDZkNTBhODYxN2Y4ODdkZmU0MGI0NjUxMWU0NzUzOTAxLi4x
MWQyY2QxNDI2ZDRiMThlMThlMzM2Yzk1NGI1MjU1NmVlMzhhNjIwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlSW1hZ2VCdWZmZXIuaAorKysgYi9T
b3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlSW1hZ2VCdWZmZXIuaApAQCAt
NTIsNiArNTIsNyBAQCBwdWJsaWM6CiAgICAgUmVtb3RlSW1hZ2VCdWZmZXIoc3RkOjp1bmlxdWVf
cHRyPEJhY2tlbmRUeXBlPiYmIGJhY2tlbmQsIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQmIHJlbW90
ZVJlbmRlcmluZ0JhY2tlbmQsIFdlYkNvcmU6OlJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciBy
ZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpCiAgICAgICAgIDogQmFzZUNvbmNyZXRlSW1hZ2VC
dWZmZXIoV1RGTW92ZShiYWNrZW5kKSwgcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKQogICAg
ICAgICAsIG1fcmVtb3RlUmVuZGVyaW5nQmFja2VuZChyZW1vdGVSZW5kZXJpbmdCYWNrZW5kKQor
ICAgICAgICAsIG1fcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKHJlbmRlcmluZ1Jlc291cmNl
SWRlbnRpZmllcikKICAgICB7CiAgICAgICAgIG1fcmVtb3RlUmVuZGVyaW5nQmFja2VuZC5pbWFn
ZUJ1ZmZlckJhY2tlbmRXYXNDcmVhdGVkKG1fYmFja2VuZC0+bG9naWNhbFNpemUoKSwgbV9iYWNr
ZW5kLT5iYWNrZW5kU2l6ZSgpLCBtX2JhY2tlbmQtPnJlc29sdXRpb25TY2FsZSgpLCBtX2JhY2tl
bmQtPmNvbG9yU3BhY2UoKSwgbV9iYWNrZW5kLT5jcmVhdGVJbWFnZUJ1ZmZlckJhY2tlbmRIYW5k
bGUoKSwgcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKTsKICAgICB9CkBAIC04MywxMiArODQs
MTUgQEAgcHJpdmF0ZToKICAgICAgICAgfQogCiAgICAgICAgIGlmIChpdGVtLmlzPFdlYkNvcmU6
OkRpc3BsYXlMaXN0OjpGbHVzaENvbnRleHQ+KCkpIHsKLSAgICAgICAgICAgIC8vIEZJWE1FOiBO
b3QgaW1wbGVtZW50ZWQgeWV0LgorICAgICAgICAgICAgQmFzZUNvbmNyZXRlSW1hZ2VCdWZmZXI6
OmZsdXNoQ29udGV4dCgpOworICAgICAgICAgICAgYXV0byBpZGVudGlmaWVyID0gaXRlbS5nZXQ8
V2ViQ29yZTo6RGlzcGxheUxpc3Q6OkZsdXNoQ29udGV4dD4oKS5pZGVudGlmaWVyKCk7CisgICAg
ICAgICAgICBtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmQuZmx1c2hEaXNwbGF5TGlzdFdhc0NvbW1p
dHRlZChpZGVudGlmaWVyLCBtX3JlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcik7CiAgICAgICAg
ICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgfQogCiAgICAgICAgIGlmIChpdGVtLmlzPFdlYkNv
cmU6OkRpc3BsYXlMaXN0OjpNZXRhQ29tbWFuZFN3aXRjaFRvPigpKSB7Ci0gICAgICAgICAgICAv
LyBGSVhNRTogTm90IGltcGxlbWVudGVkIHlldC4KKyAgICAgICAgICAgIGF1dG8gbmV4dEJ1ZmZl
cklkZW50aWZpZXIgPSBpdGVtLmdldDxXZWJDb3JlOjpEaXNwbGF5TGlzdDo6TWV0YUNvbW1hbmRT
d2l0Y2hUbz4oKS5pZGVudGlmaWVyKCk7CisgICAgICAgICAgICBtX3JlbW90ZVJlbmRlcmluZ0Jh
Y2tlbmQuc2V0TmV4dEl0ZW1CdWZmZXJUb1JlYWQobmV4dEJ1ZmZlcklkZW50aWZpZXIpOwogICAg
ICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgIH0KIApAQCAtMjA3LDYgKzIxMSw3IEBAIHBy
aXZhdGU6CiAgICAgfQogCiAgICAgUmVtb3RlUmVuZGVyaW5nQmFja2VuZCYgbV9yZW1vdGVSZW5k
ZXJpbmdCYWNrZW5kOworICAgIFdlYkNvcmU6OlJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciBt
X3JlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcjsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktp
dApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJl
bmRlcmluZ0JhY2tlbmQuY3BwIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1Jl
bW90ZVJlbmRlcmluZ0JhY2tlbmQuY3BwCmluZGV4IDFhYTc1NDg4MmNlMGU4Yzk5MjY0N2NjZjg3
NTBiOTM0MWNjODQwYTIuLmEzN2MwY2JkZDMxZDA1NGNhMTcxYTVhN2U3MWQ4Njc5MjdiM2QyOGMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5k
ZXJpbmdCYWNrZW5kLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3Mv
UmVtb3RlUmVuZGVyaW5nQmFja2VuZC5jcHAKQEAgLTI4LDYgKzI4LDcgQEAKIAogI2lmIEVOQUJM
RShHUFVfUFJPQ0VTUykKIAorI2luY2x1ZGUgIkRpc3BsYXlMaXN0UmVhZGVySGFuZGxlLmgiCiAj
aW5jbHVkZSAiR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oIgogI2luY2x1ZGUgIlBsYXRmb3Jt
UmVtb3RlSW1hZ2VCdWZmZXIuaCIKICNpbmNsdWRlICJSZW1vdGVSZW5kZXJpbmdCYWNrZW5kTWVz
c2FnZXMuaCIKQEAgLTEyNCw0NSArMTI1LDczIEBAIHZvaWQgUmVtb3RlUmVuZGVyaW5nQmFja2Vu
ZDo6Y3JlYXRlSW1hZ2VCdWZmZXIoY29uc3QgRmxvYXRTaXplJiBsb2dpY2FsU2l6ZSwgUmVuCiAg
ICAgbV9yZW1vdGVSZXNvdXJjZUNhY2hlLmNhY2hlSW1hZ2VCdWZmZXIobWFrZVJlZigqaW1hZ2VC
dWZmZXIpKTsKIH0KIAotdm9pZCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjphcHBseURpc3BsYXlM
aXN0KGNvbnN0IFNoYXJlZERpc3BsYXlMaXN0SGFuZGxlJiBoYW5kbGUsIFJlbmRlcmluZ1Jlc291
cmNlSWRlbnRpZmllciByZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIsIFNob3VsZEZsdXNoQ29u
dGV4dCBmbHVzaENvbnRleHQpCit2b2lkIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6Ondha2VVcEFu
ZFByb2Nlc3NEaXNwbGF5TGlzdChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbUJ1ZmZlcklkZW50
aWZpZXIgaW5pdGlhbElkZW50aWZpZXIsIHNpemVfdCBpbml0aWFsT2Zmc2V0LCBSZW5kZXJpbmdS
ZXNvdXJjZUlkZW50aWZpZXIgcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKQogewotICAgIGF1
dG8gZGlzcGxheUxpc3QgPSBoYW5kbGUuY3JlYXRlRGlzcGxheUxpc3QoWyZdIChXZWJDb3JlOjpE
aXNwbGF5TGlzdDo6SXRlbUJ1ZmZlcklkZW50aWZpZXIgaWRlbnRpZmllcikgLT4gdWludDhfdCog
ewotICAgICAgICBpZiAoYXV0byBzaGFyZWRNZW1vcnkgPSBtX3NoYXJlZEl0ZW1CdWZmZXJzLnRh
a2UoaWRlbnRpZmllcikpCi0gICAgICAgICAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDx1aW50
OF90Kj4oc2hhcmVkTWVtb3J5LT5kYXRhKCkpOwotICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAg
ICB9KTsKLQotICAgIGlmICghZGlzcGxheUxpc3QpIHsKKyAgICBhdXRvIGltYWdlQnVmZmVyID0g
bV9yZW1vdGVSZXNvdXJjZUNhY2hlLmNhY2hlZEltYWdlQnVmZmVyKHJlbmRlcmluZ1Jlc291cmNl
SWRlbnRpZmllcik7CisgICAgaWYgKCFpbWFnZUJ1ZmZlcikgewogICAgICAgICAvLyBGSVhNRTog
QWRkIGEgbWVzc2FnZSBjaGVjayB0byB0ZXJtaW5hdGUgdGhlIHdlYiBwcm9jZXNzLgogICAgICAg
ICByZXR1cm47CiAgICAgfQogCi0gICAgYXV0byBpbWFnZUJ1ZmZlciA9IG1fcmVtb3RlUmVzb3Vy
Y2VDYWNoZS5jYWNoZWRJbWFnZUJ1ZmZlcihyZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpOwot
ICAgIGlmICghaW1hZ2VCdWZmZXIpIHsKKyAgICBhdXRvKiBzaGFyZWRIYW5kbGUgPSBtX3NoYXJl
ZERpc3BsYXlMaXN0SGFuZGxlcy5nZXQoaW5pdGlhbElkZW50aWZpZXIpOworICAgIGlmICghc2hh
cmVkSGFuZGxlKSB7CiAgICAgICAgIC8vIEZJWE1FOiBBZGQgYSBtZXNzYWdlIGNoZWNrIHRvIHRl
cm1pbmF0ZSB0aGUgd2ViIHByb2Nlc3MuCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKKyAgICBE
aXNwbGF5TGlzdDo6SXRlbUJ1ZmZlclJlYWRpbmdDbGllbnQqIGl0ZW1CdWZmZXJDbGllbnQ7CiAg
ICAgaWYgKGltYWdlQnVmZmVyLT5pc0FjY2VsZXJhdGVkKCkpCi0gICAgICAgIGRpc3BsYXlMaXN0
LT5zZXRJdGVtQnVmZmVyQ2xpZW50KHN0YXRpY19jYXN0PEFjY2VsZXJhdGVkUmVtb3RlSW1hZ2VC
dWZmZXIqPihpbWFnZUJ1ZmZlcikpOworICAgICAgICBpdGVtQnVmZmVyQ2xpZW50ID0gc3RhdGlj
X2Nhc3Q8QWNjZWxlcmF0ZWRSZW1vdGVJbWFnZUJ1ZmZlcio+KGltYWdlQnVmZmVyKTsKICAgICBl
bHNlCi0gICAgICAgIGRpc3BsYXlMaXN0LT5zZXRJdGVtQnVmZmVyQ2xpZW50KHN0YXRpY19jYXN0
PFVuYWNjZWxlcmF0ZWRSZW1vdGVJbWFnZUJ1ZmZlcio+KGltYWdlQnVmZmVyKSk7CisgICAgICAg
IGl0ZW1CdWZmZXJDbGllbnQgPSBzdGF0aWNfY2FzdDxVbmFjY2VsZXJhdGVkUmVtb3RlSW1hZ2VC
dWZmZXIqPihpbWFnZUJ1ZmZlcik7CiAKLSAgICBpbWFnZUJ1ZmZlci0+Zmx1c2hEaXNwbGF5TGlz
dCgqZGlzcGxheUxpc3QpOworICAgIHNpemVfdCBvZmZzZXQgPSBpbml0aWFsT2Zmc2V0OworICAg
IHNpemVfdCBzaXplVG9SZWFkID0gMDsKIAotICAgIGlmIChmbHVzaENvbnRleHQgPT0gU2hvdWxk
Rmx1c2hDb250ZXh0OjpZZXMpCi0gICAgICAgIGltYWdlQnVmZmVyLT5mbHVzaENvbnRleHQoKTsK
LX0KKyAgICB7CisgICAgICAgIFNoYXJlZERpc3BsYXlMaXN0SGFuZGxlOjpMb2NrIGxvY2tlciB7
ICpzaGFyZWRIYW5kbGUgfTsKKyAgICAgICAgc2l6ZVRvUmVhZCA9IHNoYXJlZEhhbmRsZS0+dW5y
ZWFkQnl0ZXMoKTsKKyAgICB9CiAKLXZvaWQgUmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6Zmx1c2hE
aXNwbGF5TGlzdChjb25zdCBTaGFyZWREaXNwbGF5TGlzdEhhbmRsZSYgaGFuZGxlLCBSZW5kZXJp
bmdSZXNvdXJjZUlkZW50aWZpZXIgcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKQotewotICAg
IGFwcGx5RGlzcGxheUxpc3QoaGFuZGxlLCByZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIsIFNo
b3VsZEZsdXNoQ29udGV4dDo6Tm8pOworICAgIHdoaWxlIChzaXplVG9SZWFkKSB7CisgICAgICAg
IGltYWdlQnVmZmVyLT5mbHVzaERpc3BsYXlMaXN0KCpzaGFyZWRIYW5kbGUtPmNyZWF0ZURpc3Bs
YXlMaXN0KG9mZnNldCwgc2l6ZVRvUmVhZCwgKml0ZW1CdWZmZXJDbGllbnQpKTsKKworICAgICAg
ICBvZmZzZXQgKz0gc2l6ZVRvUmVhZDsKKyAgICAgICAgeworICAgICAgICAgICAgU2hhcmVkRGlz
cGxheUxpc3RIYW5kbGU6OkxvY2sgbG9ja2VyIHsgKnNoYXJlZEhhbmRsZSB9OworICAgICAgICAg
ICAgc2hhcmVkSGFuZGxlLT5hZHZhbmNlKHNpemVUb1JlYWQpOworICAgICAgICAgICAgc2l6ZVRv
UmVhZCA9IHNoYXJlZEhhbmRsZS0+dW5yZWFkQnl0ZXMoKTsKKyAgICAgICAgfQorICAgICAgICBp
ZiAoc2l6ZVRvUmVhZCkKKyAgICAgICAgICAgIGNvbnRpbnVlOworCisgICAgICAgIGF1dG8gbmV4
dElkZW50aWZpZXIgPSBzdGQ6OmV4Y2hhbmdlKG1fbmV4dEl0ZW1CdWZmZXJUb1JlYWQsIHsgfSk7
CisgICAgICAgIGlmICghbmV4dElkZW50aWZpZXIpCisgICAgICAgICAgICBicmVhazsKKworICAg
ICAgICBzaGFyZWRIYW5kbGUgPSBtX3NoYXJlZERpc3BsYXlMaXN0SGFuZGxlcy5nZXQobmV4dElk
ZW50aWZpZXIpOworICAgICAgICBpZiAoIXNoYXJlZEhhbmRsZSkgeworICAgICAgICAgICAgbV9u
ZXh0SXRlbUJ1ZmZlclRvUmVhZCA9IG5leHRJZGVudGlmaWVyOworICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgIH0KKworICAgICAgICBvZmZzZXQgPSBTaGFyZWREaXNwbGF5TGlzdEhhbmRsZTo6
cmVzZXJ2ZWRDYXBhY2l0eUF0U3RhcnQ7CisKKyAgICAgICAgZG8geworICAgICAgICAgICAgU2hh
cmVkRGlzcGxheUxpc3RIYW5kbGU6OkxvY2sgbmV4dEJ1ZmZlckxvY2tlciB7ICpzaGFyZWRIYW5k
bGUgfTsKKyAgICAgICAgICAgIHNpemVUb1JlYWQgPSBzaGFyZWRIYW5kbGUtPnVucmVhZEJ5dGVz
KCk7CisgICAgICAgICAgICBzdGQ6OnRoaXNfdGhyZWFkOjp5aWVsZCgpOworICAgICAgICB9IHdo
aWxlICghc2l6ZVRvUmVhZCk7CisgICAgfQogfQogCi12b2lkIFJlbW90ZVJlbmRlcmluZ0JhY2tl
bmQ6OmZsdXNoRGlzcGxheUxpc3RBbmRDb21taXQoY29uc3QgU2hhcmVkRGlzcGxheUxpc3RIYW5k
bGUmIGhhbmRsZSwgRGlzcGxheUxpc3Q6OkZsdXNoSWRlbnRpZmllciBmbHVzaElkZW50aWZpZXIs
IFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciByZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIp
Cit2b2lkIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OnNldE5leHRJdGVtQnVmZmVyVG9SZWFkKFdl
YkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtQnVmZmVySWRlbnRpZmllciBpZGVudGlmaWVyKQogewot
ICAgIGFwcGx5RGlzcGxheUxpc3QoaGFuZGxlLCByZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIs
IFNob3VsZEZsdXNoQ29udGV4dDo6WWVzKTsKLSAgICBmbHVzaERpc3BsYXlMaXN0V2FzQ29tbWl0
dGVkKGZsdXNoSWRlbnRpZmllciwgcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKTsKKyAgICBp
ZiAoVU5MSUtFTFkobV9uZXh0SXRlbUJ1ZmZlclRvUmVhZCkpIHsKKyAgICAgICAgLy8gRklYTUU6
IEFkZCBhIG1lc3NhZ2UgY2hlY2sgdG8gdGVybWluYXRlIHRoZSB3ZWIgcHJvY2Vzcy4KKyAgICAg
ICAgcmV0dXJuOworICAgIH0KKyAgICBtX25leHRJdGVtQnVmZmVyVG9SZWFkID0gaWRlbnRpZmll
cjsKIH0KIAogdm9pZCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpnZXRJbWFnZURhdGEoQWxwaGFQ
cmVtdWx0aXBsaWNhdGlvbiBvdXRwdXRGb3JtYXQsIEludFJlY3Qgc3JjUmVjdCwgUmVuZGVyaW5n
UmVzb3VyY2VJZGVudGlmaWVyIHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciwgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZChJUEM6OkltYWdlRGF0YVJlZmVyZW5jZSYmKT4mJiBjb21wbGV0aW9uSGFu
ZGxlcikKQEAgLTE3OCwxMCArMjA3LDE1IEBAIHZvaWQgUmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6
cmVsZWFzZVJlbW90ZVJlc291cmNlKFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciByCiAgICAg
bV9yZW1vdGVSZXNvdXJjZUNhY2hlLnJlbGVhc2VSZW1vdGVSZXNvdXJjZShyZW5kZXJpbmdSZXNv
dXJjZUlkZW50aWZpZXIpOwogfQogCi12b2lkIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OmRpZENy
ZWF0ZVNoYXJlZEl0ZW1EYXRhKERpc3BsYXlMaXN0OjpJdGVtQnVmZmVySWRlbnRpZmllciBpZGVu
dGlmaWVyLCBjb25zdCBTaGFyZWRNZW1vcnk6OklQQ0hhbmRsZSYgaGFuZGxlKQordm9pZCBSZW1v
dGVSZW5kZXJpbmdCYWNrZW5kOjpkaWRDcmVhdGVTaGFyZWREaXNwbGF5TGlzdEhhbmRsZShEaXNw
bGF5TGlzdDo6SXRlbUJ1ZmZlcklkZW50aWZpZXIgaWRlbnRpZmllciwgY29uc3QgU2hhcmVkTWVt
b3J5OjpJUENIYW5kbGUmIGhhbmRsZSwgUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyIHJlbW90
ZVJlc291cmNlSWRlbnRpZmllcikKIHsKLSAgICBpZiAoYXV0byBzaGFyZWRNZW1vcnkgPSBTaGFy
ZWRNZW1vcnk6Om1hcChoYW5kbGUuaGFuZGxlLCBTaGFyZWRNZW1vcnk6OlByb3RlY3Rpb246OlJl
YWRPbmx5KSkKLSAgICAgICAgbV9zaGFyZWRJdGVtQnVmZmVycy5zZXQoaWRlbnRpZmllciwgV1RG
TW92ZShzaGFyZWRNZW1vcnkpKTsKKyAgICBpZiAoYXV0byBzaGFyZWRNZW1vcnkgPSBTaGFyZWRN
ZW1vcnk6Om1hcChoYW5kbGUuaGFuZGxlLCBTaGFyZWRNZW1vcnk6OlByb3RlY3Rpb246OlJlYWRX
cml0ZSkpCisgICAgICAgIG1fc2hhcmVkRGlzcGxheUxpc3RIYW5kbGVzLnNldChpZGVudGlmaWVy
LCBtYWtlVW5pcXVlPERpc3BsYXlMaXN0UmVhZGVySGFuZGxlPihpZGVudGlmaWVyLCBzaGFyZWRN
ZW1vcnkucmVsZWFzZU5vbk51bGwoKSkpOworCisgICAgaWYgKG1fbmV4dEl0ZW1CdWZmZXJUb1Jl
YWQgPT0gaWRlbnRpZmllcikgeworICAgICAgICBtX25leHRJdGVtQnVmZmVyVG9SZWFkID0geyB9
OworICAgICAgICB3YWtlVXBBbmRQcm9jZXNzRGlzcGxheUxpc3QoaWRlbnRpZmllciwgU2hhcmVk
RGlzcGxheUxpc3RIYW5kbGU6OnJlc2VydmVkQ2FwYWNpdHlBdFN0YXJ0LCByZW1vdGVSZXNvdXJj
ZUlkZW50aWZpZXIpOworICAgIH0KIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFj
a2VuZC5oIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmlu
Z0JhY2tlbmQuaAppbmRleCBmZWY0NjlmYzMyNjgzMzgyYjU0ZDc3ODRhZWFiNjllY2U4NmU5OTA4
Li41YmI3NWRlMjhmYWYzOTE1MmNlM2ZhNmZlNjRhNTk2Yzc2ZTMyZWY0IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdC
YWNrZW5kLmgKQEAgLTM0LDcgKzM0LDYgQEAKICNpbmNsdWRlICJNZXNzYWdlU2VuZGVyLmgiCiAj
aW5jbHVkZSAiUmVtb3RlUmVzb3VyY2VDYWNoZS5oIgogI2luY2x1ZGUgIlJlbmRlcmluZ0JhY2tl
bmRJZGVudGlmaWVyLmgiCi0jaW5jbHVkZSAiU2hhcmVkRGlzcGxheUxpc3RIYW5kbGUuaCIKICNp
bmNsdWRlIDxXZWJDb3JlL0NvbG9yU3BhY2UuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0Rpc3BsYXlM
aXN0Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9EaXNwbGF5TGlzdEl0ZW1zLmg+CkBAIC01Miw2ICs1
MSw3IEBAIGVudW0gY2xhc3MgUmVuZGVyaW5nTW9kZSA6IGJvb2w7CiAKIG5hbWVzcGFjZSBXZWJL
aXQgewogCitjbGFzcyBEaXNwbGF5TGlzdFJlYWRlckhhbmRsZTsKIGNsYXNzIEdQVUNvbm5lY3Rp
b25Ub1dlYlByb2Nlc3M7CiAKIGNsYXNzIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQKQEAgLTcxLDEy
ICs3MSwxMSBAQCBwdWJsaWM6CiAgICAgdm9pZCBpbWFnZUJ1ZmZlckJhY2tlbmRXYXNDcmVhdGVk
KGNvbnN0IFdlYkNvcmU6OkZsb2F0U2l6ZSYgbG9naWNhbFNpemUsIGNvbnN0IFdlYkNvcmU6Oklu
dFNpemUmIGJhY2tlbmRTaXplLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIFdlYkNvcmU6OkNvbG9y
U3BhY2UsIEltYWdlQnVmZmVyQmFja2VuZEhhbmRsZSwgV2ViQ29yZTo6UmVuZGVyaW5nUmVzb3Vy
Y2VJZGVudGlmaWVyKTsKICAgICB2b2lkIGZsdXNoRGlzcGxheUxpc3RXYXNDb21taXR0ZWQoV2Vi
Q29yZTo6RGlzcGxheUxpc3Q6OkZsdXNoSWRlbnRpZmllciwgV2ViQ29yZTo6UmVuZGVyaW5nUmVz
b3VyY2VJZGVudGlmaWVyKTsKIAorICAgIHZvaWQgc2V0TmV4dEl0ZW1CdWZmZXJUb1JlYWQoV2Vi
Q29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1CdWZmZXJJZGVudGlmaWVyKTsKKwogcHJpdmF0ZToKICAg
ICBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kKEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MmLCBSZW5k
ZXJpbmdCYWNrZW5kSWRlbnRpZmllcik7CiAKLSAgICBlbnVtIGNsYXNzIFNob3VsZEZsdXNoQ29u
dGV4dCA6IGJvb2wgeyBObywgWWVzIH07Ci0gICAgdm9pZCBhcHBseURpc3BsYXlMaXN0KGNvbnN0
IFNoYXJlZERpc3BsYXlMaXN0SGFuZGxlJiwgV2ViQ29yZTo6UmVuZGVyaW5nUmVzb3VyY2VJZGVu
dGlmaWVyLCBTaG91bGRGbHVzaENvbnRleHQpOwotCiAgICAgLy8gSVBDOjpNZXNzYWdlU2VuZGVy
LgogICAgIElQQzo6Q29ubmVjdGlvbiogbWVzc2FnZVNlbmRlckNvbm5lY3Rpb24oKSBjb25zdCBv
dmVycmlkZTsKICAgICB1aW50NjRfdCBtZXNzYWdlU2VuZGVyRGVzdGluYXRpb25JRCgpIGNvbnN0
IG92ZXJyaWRlOwpAQCAtODcsMTYgKzg2LDE2IEBAIHByaXZhdGU6CiAKICAgICAvLyBNZXNzYWdl
cyB0byBiZSByZWNlaXZlZC4KICAgICB2b2lkIGNyZWF0ZUltYWdlQnVmZmVyKGNvbnN0IFdlYkNv
cmU6OkZsb2F0U2l6ZSYgbG9naWNhbFNpemUsIFdlYkNvcmU6OlJlbmRlcmluZ01vZGUsIGZsb2F0
IHJlc29sdXRpb25TY2FsZSwgV2ViQ29yZTo6Q29sb3JTcGFjZSwgV2ViQ29yZTo6UmVuZGVyaW5n
UmVzb3VyY2VJZGVudGlmaWVyKTsKLSAgICB2b2lkIGZsdXNoRGlzcGxheUxpc3QoY29uc3QgU2hh
cmVkRGlzcGxheUxpc3RIYW5kbGUmLCBXZWJDb3JlOjpSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZp
ZXIpOwotICAgIHZvaWQgZmx1c2hEaXNwbGF5TGlzdEFuZENvbW1pdChjb25zdCBTaGFyZWREaXNw
bGF5TGlzdEhhbmRsZSYsIFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpGbHVzaElkZW50aWZpZXIsIFdl
YkNvcmU6OlJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcik7CisgICAgdm9pZCB3YWtlVXBBbmRQ
cm9jZXNzRGlzcGxheUxpc3QoV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1CdWZmZXJJZGVudGlm
aWVyIGluaXRpYWxJZGVudGlmaWVyLCBzaXplX3QgaW5pdGlhbE9mZnNldCwgV2ViQ29yZTo6UmVu
ZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKTsKICAgICB2b2lkIGdldEltYWdlRGF0YShXZWJDb3Jl
OjpBbHBoYVByZW11bHRpcGxpY2F0aW9uIG91dHB1dEZvcm1hdCwgV2ViQ29yZTo6SW50UmVjdCBz
cmNSZWN0LCBXZWJDb3JlOjpSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIsIENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoSVBDOjpJbWFnZURhdGFSZWZlcmVuY2UmJik+JiYpOwogICAgIHZvaWQgcmVs
ZWFzZVJlbW90ZVJlc291cmNlKFdlYkNvcmU6OlJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcik7
Ci0gICAgdm9pZCBkaWRDcmVhdGVTaGFyZWRJdGVtRGF0YShXZWJDb3JlOjpEaXNwbGF5TGlzdDo6
SXRlbUJ1ZmZlcklkZW50aWZpZXIsIGNvbnN0IFNoYXJlZE1lbW9yeTo6SVBDSGFuZGxlJik7Cisg
ICAgdm9pZCBkaWRDcmVhdGVTaGFyZWREaXNwbGF5TGlzdEhhbmRsZShXZWJDb3JlOjpEaXNwbGF5
TGlzdDo6SXRlbUJ1ZmZlcklkZW50aWZpZXIsIGNvbnN0IFNoYXJlZE1lbW9yeTo6SVBDSGFuZGxl
JiwgV2ViQ29yZTo6UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKTsKIAogICAgIFJlbW90ZVJl
c291cmNlQ2FjaGUgbV9yZW1vdGVSZXNvdXJjZUNhY2hlOwogICAgIFdlYWtQdHI8R1BVQ29ubmVj
dGlvblRvV2ViUHJvY2Vzcz4gbV9ncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzOwogICAgIFJlbmRl
cmluZ0JhY2tlbmRJZGVudGlmaWVyIG1fcmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXI7Ci0gICAg
SGFzaE1hcDxXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbUJ1ZmZlcklkZW50aWZpZXIsIFJlZlB0
cjxTaGFyZWRNZW1vcnk+PiBtX3NoYXJlZEl0ZW1CdWZmZXJzOworICAgIEhhc2hNYXA8V2ViQ29y
ZTo6RGlzcGxheUxpc3Q6Okl0ZW1CdWZmZXJJZGVudGlmaWVyLCBzdGQ6OnVuaXF1ZV9wdHI8RGlz
cGxheUxpc3RSZWFkZXJIYW5kbGU+PiBtX3NoYXJlZERpc3BsYXlMaXN0SGFuZGxlczsKKyAgICBX
ZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbUJ1ZmZlcklkZW50aWZpZXIgbV9uZXh0SXRlbUJ1ZmZl
clRvUmVhZDsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQubWVzc2Fn
ZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5n
QmFja2VuZC5tZXNzYWdlcy5pbgppbmRleCAxODc4NWFkYzBmZDFiNjIwM2U1MTE0MmE5NDY0Njc1
ZmJhNGExNzkzLi43MzExYzY2YmJiMTZiOGZhMDhmYjJjMGI5MDI0YTk2NjU4ODYwZGQ5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5n
QmFja2VuZC5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhp
Y3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5tZXNzYWdlcy5pbgpAQCAtMjQsMTAgKzI0LDkgQEAK
IAogbWVzc2FnZXMgLT4gUmVtb3RlUmVuZGVyaW5nQmFja2VuZCBOb3RSZWZDb3VudGVkIHsKICAg
ICBDcmVhdGVJbWFnZUJ1ZmZlcihXZWJDb3JlOjpGbG9hdFNpemUgbG9naWNhbFNpemUsIFdlYkNv
cmU6OlJlbmRlcmluZ01vZGUgcmVuZGVyaW5nTW9kZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBX
ZWJDb3JlOjpDb2xvclNwYWNlIGNvbG9yU3BhY2UsIFdlYkNvcmU6OlJlbmRlcmluZ1Jlc291cmNl
SWRlbnRpZmllciByZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpCi0gICAgRmx1c2hEaXNwbGF5
TGlzdChXZWJLaXQ6OlNoYXJlZERpc3BsYXlMaXN0SGFuZGxlIGRpc3BsYXlMaXN0LCBXZWJDb3Jl
OjpSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVy
KQotICAgIEZsdXNoRGlzcGxheUxpc3RBbmRDb21taXQoV2ViS2l0OjpTaGFyZWREaXNwbGF5TGlz
dEhhbmRsZSBkaXNwbGF5TGlzdCwgV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkZsdXNoSWRlbnRpZmll
ciBmbHVzaElkZW50aWZpZXIsIFdlYkNvcmU6OlJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciBy
ZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpCisgICAgV2FrZVVwQW5kUHJvY2Vzc0Rpc3BsYXlM
aXN0KFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtQnVmZmVySWRlbnRpZmllciBpbml0aWFsSWRl
bnRpZmllciwgc2l6ZV90IGluaXRpYWxPZmZzZXQsIFdlYkNvcmU6OlJlbmRlcmluZ1Jlc291cmNl
SWRlbnRpZmllciByZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpCiAgICAgR2V0SW1hZ2VEYXRh
KGVudW06dWludDhfdCBXZWJDb3JlOjpBbHBoYVByZW11bHRpcGxpY2F0aW9uIG91dHB1dEZvcm1h
dCwgV2ViQ29yZTo6SW50UmVjdCBzcmNSZWN0LCBXZWJDb3JlOjpSZW5kZXJpbmdSZXNvdXJjZUlk
ZW50aWZpZXIgcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKSAtPiAoSVBDOjpJbWFnZURhdGFS
ZWZlcmVuY2UgaW1hZ2VEYXRhKSBTeW5jaHJvbm91cwotICAgIERpZENyZWF0ZVNoYXJlZEl0ZW1E
YXRhKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtQnVmZmVySWRlbnRpZmllciBpZGVudGlmaWVy
LCBXZWJLaXQ6OlNoYXJlZE1lbW9yeTo6SVBDSGFuZGxlIGhhbmRsZSkKKyAgICBEaWRDcmVhdGVT
aGFyZWREaXNwbGF5TGlzdEhhbmRsZShXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbUJ1ZmZlcklk
ZW50aWZpZXIgaWRlbnRpZmllciwgV2ViS2l0OjpTaGFyZWRNZW1vcnk6OklQQ0hhbmRsZSBoYW5k
bGUsIFdlYkNvcmU6OlJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciByZW1vdGVSZXNvdXJjZUlk
ZW50aWZpZXIpCiAgICAgUmVsZWFzZVJlbW90ZVJlc291cmNlKFdlYkNvcmU6OlJlbmRlcmluZ1Jl
c291cmNlSWRlbnRpZmllciByZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpCiB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1NoYXJlZERpc3BsYXlMaXN0SGFuZGxlLmNwcCBi
L1NvdXJjZS9XZWJLaXQvU2hhcmVkL1NoYXJlZERpc3BsYXlMaXN0SGFuZGxlLmNwcApkZWxldGVk
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMWFhNzRkNjE1YWJkM2Y0YTMxODYyNTJmZjBmZGNiODcx
ZTcwZmE1MC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9TaGFyZWREaXNwbGF5TGlzdEhhbmRsZS5jcHAKKysrIC9kZXYv
bnVsbApAQCAtMSw1MyArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwot
ICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0g
KiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICog
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgot
I2luY2x1ZGUgIlNoYXJlZERpc3BsYXlMaXN0SGFuZGxlLmgiCi0KLW5hbWVzcGFjZSBXZWJLaXQg
ewotdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7Ci0KLVNoYXJlZERpc3BsYXlMaXN0SGFuZGxlOjpT
aGFyZWREaXNwbGF5TGlzdEhhbmRsZShjb25zdCBEaXNwbGF5TGlzdDo6RGlzcGxheUxpc3QmIGRp
c3BsYXlMaXN0KQotewotICAgIGRpc3BsYXlMaXN0LmZvckVhY2hJdGVtQnVmZmVyKFsmXSAoYXV0
byYgaGFuZGxlKSB7Ci0gICAgICAgIG1fYnVmZmVycy5hcHBlbmQoeyBoYW5kbGUuaWRlbnRpZmll
ciwgaGFuZGxlLmNhcGFjaXR5IH0pOwotICAgIH0pOwotfQotCi1zdGQ6OnVuaXF1ZV9wdHI8RGlz
cGxheUxpc3Q6OkRpc3BsYXlMaXN0PiBTaGFyZWREaXNwbGF5TGlzdEhhbmRsZTo6Y3JlYXRlRGlz
cGxheUxpc3QoSXRlbUJ1ZmZlclByb3ZpZGVyJiYgYnVmZmVyUHJvdmlkZXIpIGNvbnN0Ci17Ci0g
ICAgRGlzcGxheUxpc3Q6Okl0ZW1CdWZmZXJIYW5kbGVzIGhhbmRsZXM7Ci0gICAgaGFuZGxlcy5y
ZXNlcnZlSW5pdGlhbENhcGFjaXR5KG1fYnVmZmVycy5zaXplKCkpOwotICAgIGZvciAoYXV0byYg
W2lkZW50aWZpZXIsIGNhcGFjaXR5XSA6IG1fYnVmZmVycykgewotICAgICAgICBhdXRvKiBkYXRh
ID0gYnVmZmVyUHJvdmlkZXIoaWRlbnRpZmllcik7Ci0gICAgICAgIGlmICghZGF0YSkKLSAgICAg
ICAgICAgIHJldHVybiBudWxscHRyOwotCi0gICAgICAgIGhhbmRsZXMudW5jaGVja2VkQXBwZW5k
KHsgaWRlbnRpZmllciwgZGF0YSwgY2FwYWNpdHkgfSk7Ci0gICAgfQotICAgIHJldHVybiBtYWtl
VW5pcXVlPERpc3BsYXlMaXN0OjpEaXNwbGF5TGlzdD4oV1RGTW92ZShoYW5kbGVzKSk7Ci19Ci0K
LX0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQv
U2hhcmVkRGlzcGxheUxpc3RIYW5kbGUuaCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1NoYXJlZERp
c3BsYXlMaXN0SGFuZGxlLmgKaW5kZXggZDE3NWUxMTRmMjNiYzhmYjhlNTdjZDkwZjY0YTMzYmUy
NjJlMWYzMS4uNDY5MmExZWFkMWFlYjdlYzkyMWU4YTVkNTU3ODAzYTkxYmNlZmVjMyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvU2hhcmVkRGlzcGxheUxpc3RIYW5kbGUuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9TaGFyZWREaXNwbGF5TGlzdEhhbmRsZS5oCkBAIC0yNSw0
MiArMjUsNjMgQEAKIAogI3ByYWdtYSBvbmNlCiAKKyNpbmNsdWRlICJTaGFyZWRNZW1vcnkuaCIK
ICNpbmNsdWRlIDxXZWJDb3JlL0Rpc3BsYXlMaXN0Lmg+CisjaW5jbHVkZSA8YXRvbWljPgogCiBu
YW1lc3BhY2UgV2ViS2l0IHsKIAogY2xhc3MgU2hhcmVkRGlzcGxheUxpc3RIYW5kbGUgewogcHVi
bGljOgotICAgIHVzaW5nIEl0ZW1CdWZmZXJQcm92aWRlciA9IEZ1bmN0aW9uPHVpbnQ4X3QqKFdl
YkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtQnVmZmVySWRlbnRpZmllcik+OworICAgIHZpcnR1YWwg
flNoYXJlZERpc3BsYXlMaXN0SGFuZGxlKCkgPSBkZWZhdWx0OwogCi0gICAgU2hhcmVkRGlzcGxh
eUxpc3RIYW5kbGUoY29uc3QgV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRpc3BsYXlMaXN0Jik7Ci0g
ICAgc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEaXNwbGF5TGlzdD4gY3Jl
YXRlRGlzcGxheUxpc3QoSXRlbUJ1ZmZlclByb3ZpZGVyJiYpIGNvbnN0OworICAgIHN0YXRpYyBj
b25zdGV4cHIgYXV0byByZXNlcnZlZENhcGFjaXR5QXRTdGFydCA9IHNpemVvZihib29sKSArIHNp
emVvZihzaXplX3QpOwogCi0gICAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4gdm9pZCBlbmNvZGUo
RW5jb2RlciYpIGNvbnN0OwotICAgIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+IHN0YXRpYyBPcHRp
b25hbDxTaGFyZWREaXNwbGF5TGlzdEhhbmRsZT4gZGVjb2RlKERlY29kZXImKTsKKyAgICBjb25z
dCBTaGFyZWRNZW1vcnkmIHNoYXJlZE1lbW9yeSgpIGNvbnN0IHsgcmV0dXJuIG1fc2hhcmVkTWVt
b3J5LmdldCgpOyB9CisgICAgU2hhcmVkTWVtb3J5JiBzaGFyZWRNZW1vcnkoKSB7IHJldHVybiBt
X3NoYXJlZE1lbW9yeS5nZXQoKTsgfQorICAgIHNpemVfdCB1bnJlYWRCeXRlcygpIGNvbnN0IHsg
cmV0dXJuICpyZWludGVycHJldF9jYXN0PHNpemVfdCo+KGRhdGEoKSArIHNpemVvZihib29sKSk7
IH0KKyAgICB1aW50OF90KiBkYXRhKCkgY29uc3QgeyByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDx1
aW50OF90Kj4oc2hhcmVkTWVtb3J5KCkuZGF0YSgpKTsgfQorICAgIFdlYkNvcmU6OkRpc3BsYXlM
aXN0OjpJdGVtQnVmZmVySWRlbnRpZmllciBpZGVudGlmaWVyKCkgY29uc3QgeyByZXR1cm4gbV9p
ZGVudGlmaWVyOyB9CiAKLXByaXZhdGU6Ci0gICAgU2hhcmVkRGlzcGxheUxpc3RIYW5kbGUoVmVj
dG9yPHN0ZDo6cGFpcjxXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbUJ1ZmZlcklkZW50aWZpZXIs
IHNpemVfdD4+JiYgYnVmZmVycykKLSAgICAgICAgOiBtX2J1ZmZlcnMoV1RGTW92ZShidWZmZXJz
KSkKKyAgICB2aXJ0dWFsIHZvaWQgYWR2YW5jZShzaXplX3QgYW1vdW50KSA9IDA7CisKKyAgICBj
bGFzcyBMb2NrIHsKKyAgICBwdWJsaWM6CisgICAgICAgIExvY2soU2hhcmVkRGlzcGxheUxpc3RI
YW5kbGUmIGhhbmRsZSkKKyAgICAgICAgICAgIDogbV9oYW5kbGUoaGFuZGxlKQorICAgICAgICB7
CisgICAgICAgICAgICBhdXRvJiBhdG9taWNWYWx1ZSA9IG1faGFuZGxlLmF0b21pY0xvY2tWYWx1
ZSgpOworICAgICAgICAgICAgd2hpbGUgKHRydWUpIHsKKyAgICAgICAgICAgICAgICBzdGQ6OnRo
aXNfdGhyZWFkOjp5aWVsZCgpOworICAgICAgICAgICAgICAgIGJvb2wgdW5sb2NrZWQgPSBmYWxz
ZTsKKyAgICAgICAgICAgICAgICBpZiAoYXRvbWljVmFsdWUuY29tcGFyZV9leGNoYW5nZV93ZWFr
KHVubG9ja2VkLCB0cnVlKSkKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAg
ICB9CisgICAgICAgIH0KKworICAgICAgICB+TG9jaygpCisgICAgICAgIHsKKyAgICAgICAgICAg
IG1faGFuZGxlLmF0b21pY0xvY2tWYWx1ZSgpLnN0b3JlKGZhbHNlKTsKKyAgICAgICAgfQorCisg
ICAgcHJpdmF0ZToKKyAgICAgICAgU2hhcmVkRGlzcGxheUxpc3RIYW5kbGUmIG1faGFuZGxlOwor
ICAgIH07CisKK3Byb3RlY3RlZDoKKyAgICBTaGFyZWREaXNwbGF5TGlzdEhhbmRsZShXZWJDb3Jl
OjpEaXNwbGF5TGlzdDo6SXRlbUJ1ZmZlcklkZW50aWZpZXIgaWRlbnRpZmllciwgUmVmPFNoYXJl
ZE1lbW9yeT4mJiBzaGFyZWRNZW1vcnkpCisgICAgICAgIDogbV9pZGVudGlmaWVyKGlkZW50aWZp
ZXIpCisgICAgICAgICwgbV9zaGFyZWRNZW1vcnkoV1RGTW92ZShzaGFyZWRNZW1vcnkpKQogICAg
IHsKICAgICB9CiAKLSAgICBWZWN0b3I8c3RkOjpwYWlyPFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJ
dGVtQnVmZmVySWRlbnRpZmllciwgc2l6ZV90Pj4gbV9idWZmZXJzOwotfTsKLQotdGVtcGxhdGU8
Y2xhc3MgRW5jb2Rlcj4gdm9pZCBTaGFyZWREaXNwbGF5TGlzdEhhbmRsZTo6ZW5jb2RlKEVuY29k
ZXImIGVuY29kZXIpIGNvbnN0Ci17Ci0gICAgZW5jb2RlciA8PCBtX2J1ZmZlcnM7Ci19CisgICAg
c2l6ZV90JiB1bnJlYWRCeXRlc0hhbmRsZSgpIHsgcmV0dXJuICpyZWludGVycHJldF9jYXN0PHNp
emVfdCo+KGRhdGEoKSArIHNpemVvZihib29sKSk7IH0KIAotdGVtcGxhdGU8Y2xhc3MgRGVjb2Rl
cj4gT3B0aW9uYWw8U2hhcmVkRGlzcGxheUxpc3RIYW5kbGU+IFNoYXJlZERpc3BsYXlMaXN0SGFu
ZGxlOjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKLXsKLSAgICBPcHRpb25hbDxWZWN0b3I8c3Rk
OjpwYWlyPFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtQnVmZmVySWRlbnRpZmllciwgc2l6ZV90
Pj4+IGJ1ZmZlcnM7Ci0gICAgZGVjb2RlciA+PiBidWZmZXJzOwotICAgIGlmICghYnVmZmVycykK
LSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKK3ByaXZhdGU6CisgICAgc3RkOjphdG9taWM8
Ym9vbD4mIGF0b21pY0xvY2tWYWx1ZSgpIGNvbnN0IHsgcmV0dXJuICpzdGF0aWNfY2FzdDxzdGQ6
OmF0b21pYzxib29sPio+KHNoYXJlZE1lbW9yeSgpLmRhdGEoKSk7IH0KIAotICAgIHJldHVybiB7
eyBXVEZNb3ZlKCpidWZmZXJzKSB9fTsKLX0KKyAgICBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRl
bUJ1ZmZlcklkZW50aWZpZXIgbV9pZGVudGlmaWVyOworICAgIFJlZjxTaGFyZWRNZW1vcnk+IG1f
c2hhcmVkTWVtb3J5OworfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1NvdXJjZXMudHh0IGIvU291cmNlL1dlYktpdC9Tb3VyY2VzLnR4dAppbmRl
eCAzNDk5NzVjZWMxMDBhYTMyNWY4MmZjNjE1MGE2NzY5MWVhMTJlYzBiLi5iYzcxOTViZmNjZTM1
NWE1MzNiZjczNjkzODcyOTZkMjEwZjc4M2VkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1Nv
dXJjZXMudHh0CisrKyBiL1NvdXJjZS9XZWJLaXQvU291cmNlcy50eHQKQEAgLTI0LDYgKzI0LDcg
QEAKIEdQVVByb2Nlc3MvR1BVUHJvY2Vzcy5jcHAKIEdQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRv
V2ViUHJvY2Vzcy5jcHAKIEdQVVByb2Nlc3MvR1BVUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5j
cHAKK0dQVVByb2Nlc3MvZ3JhcGhpY3MvRGlzcGxheUxpc3RSZWFkZXJIYW5kbGUuY3BwCiBHUFVQ
cm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQuY3BwCiBHUFVQcm9jZXNzL2dy
YXBoaWNzL1JlbW90ZVJlc291cmNlQ2FjaGUuY3BwCiBHUFVQcm9jZXNzL21lZGlhL1JlbW90ZUF1
ZGlvU2Vzc2lvblByb3h5LmNwcApAQCAtMTczLDcgKzE3NCw2IEBAIFNoYXJlZC9TZXJ2aWNlV29y
a2VySW5pdGlhbGl6YXRpb25EYXRhLmNwcAogU2hhcmVkL1Nlc3Npb25TdGF0ZS5jcHAKIFNoYXJl
ZC9TaGFyZWFibGVCaXRtYXAuY3BwIEBuby11bmlmeQogU2hhcmVkL1NoYXJlYWJsZVJlc291cmNl
LmNwcAotU2hhcmVkL1NoYXJlZERpc3BsYXlMaXN0SGFuZGxlLmNwcAogU2hhcmVkL1NoYXJlZFN0
cmluZ0hhc2hTdG9yZS5jcHAKIFNoYXJlZC9TaGFyZWRTdHJpbmdIYXNoVGFibGVSZWFkT25seS5j
cHAKIFNoYXJlZC9TaGFyZWRTdHJpbmdIYXNoVGFibGUuY3BwCkBAIC01NTksNiArNTU5LDcgQEAg
V2ViUHJvY2Vzcy9NZWRpYVN0cmVhbS9NZWRpYURldmljZVNhbmRib3hFeHRlbnNpb25zLmNwcAog
V2ViUHJvY2Vzcy9NZWRpYVN0cmVhbS9Vc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXIu
Y3BwCiAKIFdlYlByb2Nlc3MvR1BVL0dQVVByb2Nlc3NDb25uZWN0aW9uLmNwcAorV2ViUHJvY2Vz
cy9HUFUvZ3JhcGhpY3MvRGlzcGxheUxpc3RXcml0ZXJIYW5kbGUuY3BwCiBXZWJQcm9jZXNzL0dQ
VS9ncmFwaGljcy9JbWFnZUJ1ZmZlclNoYXJlYWJsZUJpdG1hcEJhY2tlbmQuY3BwCiBXZWJQcm9j
ZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkuY3BwCiBXZWJQcm9j
ZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVSZXNvdXJjZUNhY2hlUHJveHkuY3BwCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNl
L1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCA1ZTBkM2NmODdl
NzlmNDEwOTZmMWQ3OGVmMmI0Y2M2MTNjMjYxNzQ5Li4wNjVmN2U0NjcyMTg1NDA4Y2E2NzhjYzUy
ZDdkZmQyOWFkNmM5NTc4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oKQEAgLTE4NzEsNiArMTg3MSw4IEBACiAJCUU1QkVGNjgyMjEzMEM0ODAw
MEYzMTExMSAvKiBXZWJEYXRhTGlzdFN1Z2dlc3Rpb25zRHJvcGRvd25JT1MuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEU1QkVGNjgwMjEzMEM0N0YwMEYz
MTExMSAvKiBXZWJEYXRhTGlzdFN1Z2dlc3Rpb25zRHJvcGRvd25JT1MuaCAqLzsgfTsKIAkJRTVD
QjA3REMyMEUxNjc4RjAwMjJDMTgzIC8qIFdLRm9ybUNvbG9yQ29udHJvbC5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTVDQjA3REEyMEUxNjc4RjAwMjJD
MTgzIC8qIFdLRm9ybUNvbG9yQ29udHJvbC5oICovOyB9OwogCQlFRDgyQTdGMjEyOEM2RkFGMDA0
NDc3QjMgLyogV0tCdW5kbGVQYWdlT3ZlcmxheS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gMUEyMkYwRkYxMjg5RkNEOTAwODVFNzRGIC8qIFdLQnVuZGxl
UGFnZU92ZXJsYXkuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OworCQlGNDA5NENCRDI1NTMwNTNEMDAzRDczRTMgLyogRGlzcGxheUxpc3RSZWFkZXJIYW5k
bGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY0MDk0
Q0JCMjU1MzA0QUYwMDNENzNFMyAvKiBEaXNwbGF5TGlzdFJlYWRlckhhbmRsZS5oICovOyB9Owor
CQlGNDA5NENCRTI1NTMwNTQwMDAzRDczRTMgLyogRGlzcGxheUxpc3RXcml0ZXJIYW5kbGUuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY0MDk0Q0I5MjU1
MzA0N0UwMDNENzNFMyAvKiBEaXNwbGF5TGlzdFdyaXRlckhhbmRsZS5oICovOyB9OwogCQlGNDA5
QkExODFFNkU2NEJDMDA5REEyOEUgLyogV0tEcmFnRGVzdGluYXRpb25BY3Rpb24uaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY0MDlCQTE3MUU2RTY0QjMw
MDlEQTI4RSAvKiBXS0RyYWdEZXN0aW5hdGlvbkFjdGlvbi5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUY0MkQ2MzQxMjJBMEVGREYwMEQyRkIzQSAv
KiBXZWJBdXRvY29ycmVjdGlvbkRhdGEuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEY0MkQ2MzNGMjJBMEVGRDMwMEQyRkIzQSAvKiBXZWJBdXRvY29ycmVj
dGlvbkRhdGEuaCAqLzsgfTsKIAkJRjQzMEU5NDIyMjQ3MzM1RjAwNUZFMDUzIC8qIFdlYnNpdGVN
ZXRhVmlld3BvcnRQb2xpY3kuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEY0MzBFOTQxMjI0NzMyQTkwMDVGRTA1MyAvKiBXZWJzaXRlTWV0YVZpZXdwb3J0
UG9saWN5LmggKi87IH07CkBAIC01NDY4LDYgKzU0NzAsMTAgQEAKIAkJRUNBNjgwRDMxRTY5MDRC
NTAwNzMxRDIwIC8qIEV4dHJhUHJpdmF0ZVN5bWJvbHNGb3JUQVBJLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IEV4dHJhUHJpdmF0ZVN5bWJvbHNGb3JUQVBJLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCUVDQkZDMURCMUU2QTRENjYwMDAzMDBDNyAvKiBFeHRyYVB1
YmxpY1N5bWJvbHNGb3JUQVBJLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEV4dHJhUHVibGljU3ltYm9sc0Zv
clRBUEkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRjAzNjk3ODcxNUY0QkYwNTAw
QzNBODBFIC8qIFdlYkNvbG9yUGlja2VyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IFdlYkNvbG9yUGlja2VyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJRjQwOTRDQjkyNTUzMDQ3RTAwM0Q3M0UzIC8qIERpc3BsYXlMaXN0V3JpdGVySGFuZGxlLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IERpc3BsYXlMaXN0V3JpdGVySGFuZGxlLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCUY0MDk0Q0JBMjU1MzA0N0UwMDNENzNFMyAvKiBEaXNwbGF5TGlzdFdy
aXRlckhhbmRsZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBEaXNwbGF5TGlzdFdyaXRlckhhbmRs
ZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUY0MDk0Q0JCMjU1MzA0QUYwMDNE
NzNFMyAvKiBEaXNwbGF5TGlzdFJlYWRlckhhbmRsZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBEaXNwbGF5
TGlzdFJlYWRlckhhbmRsZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlGNDA5NENC
QzI1NTMwNEFGMDAzRDczRTMgLyogRGlzcGxheUxpc3RSZWFkZXJIYW5kbGUuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gRGlzcGxheUxpc3RSZWFkZXJIYW5kbGUuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQlGNDA5QkExNzFFNkU2NEIzMDA5REEyOEUgLyogV0tEcmFnRGVzdGluYXRp
b25BY3Rpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0tEcmFnRGVzdGlu
YXRpb25BY3Rpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRjQwRDFCNjgyMjBC
REMwRjAwQjQ5QTAxIC8qIFdlYkF1dG9jb3JyZWN0aW9uQ29udGV4dC5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUg
PSBXZWJBdXRvY29ycmVjdGlvbkNvbnRleHQuaDsgcGF0aCA9IGlvcy9XZWJBdXRvY29ycmVjdGlv
bkNvbnRleHQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRjQxMDU2NjEyMTMwNjk5
QTAwOTIyODFEIC8qIEFQSUF0dGFjaG1lbnRDb2NvYS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9
IEFQSUF0dGFjaG1lbnRDb2NvYS5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTU0
OTAsNyArNTQ5Niw2IEBACiAJCUY0OTZBNDJGMUY1OEEyNzIwMDRDMTc1NyAvKiBEcmFnRHJvcElu
dGVyYWN0aW9uU3RhdGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gRHJhZ0Ryb3BJbnRlcmFjdGlvblN0YXRl
Lmg7IHBhdGggPSBpb3MvRHJhZ0Ryb3BJbnRlcmFjdGlvblN0YXRlLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCUY0OTZBNDMwMUY1OEEyNzIwMDRDMTc1NyAvKiBEcmFnRHJvcEludGVy
YWN0aW9uU3RhdGUubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IG5hbWUgPSBEcmFnRHJvcEludGVyYWN0aW9u
U3RhdGUubW07IHBhdGggPSBpb3MvRHJhZ0Ryb3BJbnRlcmFjdGlvblN0YXRlLm1tOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQlGNEE2RDZCQjI1NENBM0U5MDBCNjVGQUEgLyogU2hhcmVk
RGlzcGxheUxpc3RIYW5kbGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU2hhcmVkRGlzcGxheUxpc3RIYW5k
bGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJRjRBNkQ2QkQyNTRDQTUyMjAwQjY1
RkFBIC8qIFNoYXJlZERpc3BsYXlMaXN0SGFuZGxlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNo
YXJlZERpc3BsYXlMaXN0SGFuZGxlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
RjRBQzY1NUUyMkEzMTQwRTAwQTA1NjA3IC8qIFdlYlByZWZlcmVuY2VzRGVmYXVsdFZhbHVlc0lP
Uy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgbmFtZSA9IFdlYlByZWZlcmVu
Y2VzRGVmYXVsdFZhbHVlc0lPUy5tbTsgcGF0aCA9IGlvcy9XZWJQcmVmZXJlbmNlc0RlZmF1bHRW
YWx1ZXNJT1MubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUY0QjM3OEQwMjFEREJC
QUIwMDk1QTM3OCAvKiBXZWJVbmRvU3RlcElELmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYlVuZG9TdGVw
SUQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRjRDQjA5RTQyMjVENUEwMzAwODkx
NDg3IC8qIFdlYnNpdGVNZWRpYVNvdXJjZVBvbGljeS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJzaXRl
TWVkaWFTb3VyY2VQb2xpY3kuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTYxOTgs
NyArNjIwMyw2IEBACiAJCQkJMUE2NDIwRTMxMkRDRTJGRjAwQ0FBRTJDIC8qIFNoYXJlYWJsZUJp
dG1hcC5oICovLAogCQkJCTUxMjE3NDVFMTY0QzIwRTMwMDM3QTVDMSAvKiBTaGFyZWFibGVSZXNv
dXJjZS5jcHAgKi8sCiAJCQkJNTEyMTc0NUYxNjRDMjBFMzAwMzdBNUMxIC8qIFNoYXJlYWJsZVJl
c291cmNlLmggKi8sCi0JCQkJRjRBNkQ2QkQyNTRDQTUyMjAwQjY1RkFBIC8qIFNoYXJlZERpc3Bs
YXlMaXN0SGFuZGxlLmNwcCAqLywKIAkJCQlGNEE2RDZCQjI1NENBM0U5MDBCNjVGQUEgLyogU2hh
cmVkRGlzcGxheUxpc3RIYW5kbGUuaCAqLywKIAkJCQk4MzEzRjdFQTFGN0RBRTA0MDBCOTQ0RUIg
LyogU2hhcmVkU3RyaW5nSGFzaFN0b3JlLmNwcCAqLywKIAkJCQk4MzEzRjdFOTFGN0RBRTAzMDBC
OTQ0RUIgLyogU2hhcmVkU3RyaW5nSGFzaFN0b3JlLmggKi8sCkBAIC04MTczLDYgKzgxNzcsOCBA
QAogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKIAkJCQk3MjdBN0YzMzI0MDc4
NTI3MDA0RDI5MzEgLyogY29jb2EgKi8sCisJCQkJRjQwOTRDQkEyNTUzMDQ3RTAwM0Q3M0UzIC8q
IERpc3BsYXlMaXN0V3JpdGVySGFuZGxlLmNwcCAqLywKKwkJCQlGNDA5NENCOTI1NTMwNDdFMDAz
RDczRTMgLyogRGlzcGxheUxpc3RXcml0ZXJIYW5kbGUuaCAqLywKIAkJCQk3MjdBN0YzOTI0MDc4
OEYxMDA0RDI5MzEgLyogSW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxlLmggKi8sCiAJCQkJNzI3QTdG
MzcyNDA3ODhGMDAwNEQyOTMxIC8qIEltYWdlQnVmZmVyU2hhcmVhYmxlQml0bWFwQmFja2VuZC5j
cHAgKi8sCiAJCQkJNzI3QTdGMzYyNDA3ODhGMDAwNEQyOTMxIC8qIEltYWdlQnVmZmVyU2hhcmVh
YmxlQml0bWFwQmFja2VuZC5oICovLApAQCAtODE5Miw2ICs4MTk4LDggQEAKIAkJNTUwNjQwQTEy
NDA3MUEyOTAwQUFFMDQ1IC8qIGdyYXBoaWNzICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJ
CQljaGlsZHJlbiA9ICgKKwkJCQlGNDA5NENCQzI1NTMwNEFGMDAzRDczRTMgLyogRGlzcGxheUxp
c3RSZWFkZXJIYW5kbGUuY3BwICovLAorCQkJCUY0MDk0Q0JCMjU1MzA0QUYwMDNENzNFMyAvKiBE
aXNwbGF5TGlzdFJlYWRlckhhbmRsZS5oICovLAogCQkJCTU1QUQwOTQzMjQwOEEwRTYwMERFNEQy
RiAvKiBQbGF0Zm9ybVJlbW90ZUltYWdlQnVmZmVyLmggKi8sCiAJCQkJNTVBRDA5NDIyNDA4QTAy
RTAwREU0RDJGIC8qIFJlbW90ZUltYWdlQnVmZmVyLmggKi8sCiAJCQkJNTUwNjQwQTIyNDA3MUE2
MTAwQUFFMDQ1IC8qIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQuY3BwICovLApAQCAtMTEwMzEsNiAr
MTEwMzksOCBAQAogCQkJCTgzODkxQjZDMUE2OEMzMEIwMDMwRjM4NiAvKiBEaWFnbm9zdGljTG9n
Z2luZ0NsaWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQzE4MTczNjEyMDU4NDI0NzAwREZEQTY1
IC8qIERpc3BsYXlMaW5rLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjE4OUNBQzI0NzQ5RjJGMDBF
NThEODEgLyogRGlzcGxheUxpbmtPYnNlcnZlcklELmggaW4gSGVhZGVycyAqLywKKwkJCQlGNDA5
NENCRDI1NTMwNTNEMDAzRDczRTMgLyogRGlzcGxheUxpc3RSZWFkZXJIYW5kbGUuaCBpbiBIZWFk
ZXJzICovLAorCQkJCUY0MDk0Q0JFMjU1MzA1NDAwMDNENzNFMyAvKiBEaXNwbGF5TGlzdFdyaXRl
ckhhbmRsZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNUMxNDI3MDIxQzIzRjg0QzAwRDQxMTgzIC8q
IERvd25sb2FkLmggaW4gSGVhZGVycyAqLywKIAkJCQk1QzE0MjcwNTFDMjNGODRDMDBENDExODMg
LyogRG93bmxvYWRJRC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNUMxNDI3MDcxQzIzRjg0QzAwRDQx
MTgzIC8qIERvd25sb2FkTWFuYWdlci5oIGluIEhlYWRlcnMgKi8sCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL0Rpc3BsYXlMaXN0V3JpdGVySGFuZGxl
LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvRGlzcGxheUxpc3RX
cml0ZXJIYW5kbGUuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmNlYWYzNmYzNjk2NThhNzI3MGJiMjQ3MzdjNjM3
YTU0Y2E4ZGFlNjYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
R1BVL2dyYXBoaWNzL0Rpc3BsYXlMaXN0V3JpdGVySGFuZGxlLmNwcApAQCAtMCwwICsxLDY3IEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkRpc3BsYXlMaXN0
V3JpdGVySGFuZGxlLmgiCisKK25hbWVzcGFjZSBXZWJLaXQgewordXNpbmcgbmFtZXNwYWNlIFdl
YkNvcmU7CisKK3ZvaWQgRGlzcGxheUxpc3RXcml0ZXJIYW5kbGU6OmFkdmFuY2Uoc2l6ZV90IGFt
b3VudCkKK3sKKyAgICBtX3dyaXRhYmxlT2Zmc2V0ICs9IGFtb3VudDsKKyAgICB1bnJlYWRCeXRl
c0hhbmRsZSgpICs9IGFtb3VudDsKK30KKworc2l6ZV90IERpc3BsYXlMaXN0V3JpdGVySGFuZGxl
OjphdmFpbGFibGVDYXBhY2l0eSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIHNoYXJlZE1lbW9yeSgp
LnNpemUoKSAtIHdyaXRhYmxlT2Zmc2V0KCk7Cit9CisKK0Rpc3BsYXlMaXN0OjpJdGVtQnVmZmVy
SGFuZGxlIERpc3BsYXlMaXN0V3JpdGVySGFuZGxlOjpjcmVhdGVIYW5kbGUoKSBjb25zdAorewor
ICAgIHJldHVybiB7CisgICAgICAgIGlkZW50aWZpZXIoKSwKKyAgICAgICAgZGF0YSgpICsgd3Jp
dGFibGVPZmZzZXQoKSwKKyAgICAgICAgYXZhaWxhYmxlQ2FwYWNpdHkoKQorICAgIH07Cit9CisK
K2Jvb2wgRGlzcGxheUxpc3RXcml0ZXJIYW5kbGU6OnJlc2V0V3JpdGFibGVPZmZzZXRJZlBvc3Np
YmxlKCkKK3sKKyAgICBpZiAobV93cml0YWJsZU9mZnNldCA8PSBTaGFyZWREaXNwbGF5TGlzdEhh
bmRsZTo6cmVzZXJ2ZWRDYXBhY2l0eUF0U3RhcnQpIHsKKyAgICAgICAgQVNTRVJUKG1fd3JpdGFi
bGVPZmZzZXQgPT0gU2hhcmVkRGlzcGxheUxpc3RIYW5kbGU6OnJlc2VydmVkQ2FwYWNpdHlBdFN0
YXJ0KTsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorCisgICAgTG9jayBsb2NrZXIgeyAq
dGhpcyB9OworICAgIGlmICh1bnJlYWRCeXRlcygpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisK
KyAgICBtX3dyaXRhYmxlT2Zmc2V0ID0gU2hhcmVkRGlzcGxheUxpc3RIYW5kbGU6OnJlc2VydmVk
Q2FwYWNpdHlBdFN0YXJ0OworICAgIHJldHVybiB0cnVlOworfQorCit9IC8vIG5hbWVzcGFjZSBX
ZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3Mv
RGlzcGxheUxpc3RXcml0ZXJIYW5kbGUuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUv
Z3JhcGhpY3MvRGlzcGxheUxpc3RXcml0ZXJIYW5kbGUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xMzgwMTI2NWVl
Mzg0OTQzMWFkZTkxN2Y1OGZhNTNiMjU5M2ZiOTRkCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9EaXNwbGF5TGlzdFdyaXRlckhhbmRsZS5o
CkBAIC0wLDAgKzEsNTQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUg
IlNoYXJlZERpc3BsYXlMaXN0SGFuZGxlLmgiCisjaW5jbHVkZSA8d3RmL0Zhc3RNYWxsb2MuaD4K
KworbmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIERpc3BsYXlMaXN0V3JpdGVySGFuZGxlIDog
cHVibGljIFNoYXJlZERpc3BsYXlMaXN0SGFuZGxlIHsKKyAgICBXVEZfTUFLRV9OT05DT1BZQUJM
RShEaXNwbGF5TGlzdFdyaXRlckhhbmRsZSk7IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOworcHVi
bGljOgorICAgIERpc3BsYXlMaXN0V3JpdGVySGFuZGxlKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJ
dGVtQnVmZmVySWRlbnRpZmllciBpZGVudGlmaWVyLCBSZWY8U2hhcmVkTWVtb3J5PiYmIHNoYXJl
ZE1lbW9yeSkKKyAgICAgICAgOiBTaGFyZWREaXNwbGF5TGlzdEhhbmRsZShpZGVudGlmaWVyLCBX
VEZNb3ZlKHNoYXJlZE1lbW9yeSkpCisgICAgICAgICwgbV93cml0YWJsZU9mZnNldChTaGFyZWRE
aXNwbGF5TGlzdEhhbmRsZTo6cmVzZXJ2ZWRDYXBhY2l0eUF0U3RhcnQpCisgICAgeworICAgIH0K
KworICAgIHNpemVfdCB3cml0YWJsZU9mZnNldCgpIGNvbnN0IHsgcmV0dXJuIG1fd3JpdGFibGVP
ZmZzZXQ7IH0KKyAgICBzaXplX3QgYXZhaWxhYmxlQ2FwYWNpdHkoKSBjb25zdDsKKworICAgIGJv
b2wgcmVzZXRXcml0YWJsZU9mZnNldElmUG9zc2libGUoKTsKKworICAgIHZvaWQgYWR2YW5jZShz
aXplX3QgYW1vdW50KSBvdmVycmlkZTsKKyAgICBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbUJ1
ZmZlckhhbmRsZSBjcmVhdGVIYW5kbGUoKSBjb25zdDsKKworcHJpdmF0ZToKKyAgICBzaXplX3Qg
bV93cml0YWJsZU9mZnNldCB7IDAgfTsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVJbWFn
ZUJ1ZmZlclByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1Jl
bW90ZUltYWdlQnVmZmVyUHJveHkuaAppbmRleCBiNTc4NDZkZGQ1MWM1MWI2YmNmNGM3Mzk1ZDIy
ODlmYjBmNzJiOWFjLi44Zjc5ZTM5OTg4M2NkMzJhNWVlMjBhOTlhNDYyYWJiNjhkNzRiMWQzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUlt
YWdlQnVmZmVyUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBo
aWNzL1JlbW90ZUltYWdlQnVmZmVyUHJveHkuaApAQCAtMTM5LDYgKzEzOSw3IEBAIHByb3RlY3Rl
ZDoKIAogICAgIHZvaWQgZmx1c2hEcmF3aW5nQ29udGV4dCgpIG92ZXJyaWRlCiAgICAgeworICAg
ICAgICBUcmFjZVNjb3BlIHRyYWNpbmdTY29wZShGbHVzaFJlbW90ZUltYWdlQnVmZmVyU3RhcnQs
IEZsdXNoUmVtb3RlSW1hZ2VCdWZmZXJFbmQpOwogICAgICAgICBmbHVzaERyYXdpbmdDb250ZXh0
QW5kQ29tbWl0KCk7CiAgICAgICAgIHRpbWVvdXRXYWl0Rm9yRmx1c2hEaXNwbGF5TGlzdFdhc0Nv
bW1pdHRlZCgpOwogICAgIH0KQEAgLTE1Miw4ICsxNTMsOSBAQCBwcm90ZWN0ZWQ6CiAgICAgICAg
IGlmIChkaXNwbGF5TGlzdC5pc0VtcHR5KCkpCiAgICAgICAgICAgICByZXR1cm47CiAKLSAgICAg
ICAgVHJhY2VTY29wZSB0cmFjaW5nU2NvcGUoRmx1c2hSZW1vdGVJbWFnZUJ1ZmZlclN0YXJ0LCBG
bHVzaFJlbW90ZUltYWdlQnVmZmVyRW5kLCAxKTsKLSAgICAgICAgbV9zZW50Rmx1c2hJZGVudGlm
aWVyID0gbV9yZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHktPmZsdXNoRGlzcGxheUxpc3RBbmRD
b21taXQoZGlzcGxheUxpc3QsIG1fcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKTsKKyAgICAg
ICAgbV9zZW50Rmx1c2hJZGVudGlmaWVyID0gV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkZsdXNoSWRl
bnRpZmllcjo6Z2VuZXJhdGUoKTsKKyAgICAgICAgZGlzcGxheUxpc3QudGVtcGxhdGUgYXBwZW5k
PFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpGbHVzaENvbnRleHQ+KG1fc2VudEZsdXNoSWRlbnRpZmll
cik7CisgICAgICAgIG1fcmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5LT5mbHVzaERpc3BsYXlM
aXN0KGRpc3BsYXlMaXN0LCBtX3JlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcik7CiAgICAgICAg
IG1faXRlbUNvdW50SW5DdXJyZW50RGlzcGxheUxpc3QgPSAwOwogICAgICAgICBkaXNwbGF5TGlz
dC5jbGVhcigpOwogICAgIH0KQEAgLTE2Myw3ICsxNjUsNiBAQCBwcm90ZWN0ZWQ6CiAgICAgICAg
IGlmICghbV9yZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkgfHwgZGlzcGxheUxpc3QuaXNFbXB0
eSgpKQogICAgICAgICAgICAgcmV0dXJuOwogCi0gICAgICAgIFRyYWNlU2NvcGUgdHJhY2luZ1Nj
b3BlKEZsdXNoUmVtb3RlSW1hZ2VCdWZmZXJTdGFydCwgRmx1c2hSZW1vdGVJbWFnZUJ1ZmZlckVu
ZCk7CiAgICAgICAgIG1fcmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5LT5mbHVzaERpc3BsYXlM
aXN0KGRpc3BsYXlMaXN0LCBtX3JlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcik7CiAgICAgfQog
CkBAIC0xODIsNyArMTgzLDcgQEAgcHJvdGVjdGVkOgogICAgIFdlYkNvcmU6OkRpc3BsYXlMaXN0
OjpJdGVtQnVmZmVySGFuZGxlIGNyZWF0ZUl0ZW1CdWZmZXIoc2l6ZV90IGNhcGFjaXR5KSBvdmVy
cmlkZQogICAgIHsKICAgICAgICAgaWYgKG1fcmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5KQot
ICAgICAgICAgICAgcmV0dXJuIG1fcmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5LT5jcmVhdGVJ
dGVtQnVmZmVyKGNhcGFjaXR5KTsKKyAgICAgICAgICAgIHJldHVybiBtX3JlbW90ZVJlbmRlcmlu
Z0JhY2tlbmRQcm94eS0+Y3JlYXRlSXRlbUJ1ZmZlcihjYXBhY2l0eSwgbV9yZW5kZXJpbmdSZXNv
dXJjZUlkZW50aWZpZXIpOwogCiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAg
ICByZXR1cm4geyB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9n
cmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkuY3BwCmlu
ZGV4IGVlYzA1MjU0Njg4ZGYwZjk3ZjM3NzhlMWMwNWI1ZmViMWU5ZWY4YjUuLjA5NWZjYzJhYjJm
ZTE5YzQ5YzkzMWIwNzEwNGE4MjYwMTM2NjdmNzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5LmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmlu
Z0JhY2tlbmRQcm94eS5jcHAKQEAgLTI4LDEzICsyOCwxMyBAQAogCiAjaWYgRU5BQkxFKEdQVV9Q
Uk9DRVNTKQogCisjaW5jbHVkZSAiRGlzcGxheUxpc3RXcml0ZXJIYW5kbGUuaCIKICNpbmNsdWRl
ICJHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgiCiAjaW5jbHVkZSAiR1BVUHJvY2Vzc0Nvbm5l
Y3Rpb24uaCIKICNpbmNsdWRlICJJbWFnZURhdGFSZWZlcmVuY2UuaCIKICNpbmNsdWRlICJQbGF0
Zm9ybVJlbW90ZUltYWdlQnVmZmVyUHJveHkuaCIKICNpbmNsdWRlICJSZW1vdGVSZW5kZXJpbmdC
YWNrZW5kTWVzc2FnZXMuaCIKICNpbmNsdWRlICJSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHlN
ZXNzYWdlcy5oIgotI2luY2x1ZGUgIlNoYXJlZERpc3BsYXlMaXN0SGFuZGxlLmgiCiAjaW5jbHVk
ZSAiU2hhcmVkTWVtb3J5LmgiCiAjaW5jbHVkZSAiV2ViUHJvY2Vzcy5oIgogCkBAIC0xMTcsMTYg
KzExNywyOSBAQCBSZWZQdHI8SW1hZ2VEYXRhPiBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHk6
OmdldEltYWdlRGF0YShBbHBoYVByZW11bHRpcGxpY2F0aQogCiB2b2lkIFJlbW90ZVJlbmRlcmlu
Z0JhY2tlbmRQcm94eTo6Zmx1c2hEaXNwbGF5TGlzdChjb25zdCBEaXNwbGF5TGlzdDo6RGlzcGxh
eUxpc3QmIGRpc3BsYXlMaXN0LCBSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgcmVuZGVyaW5n
UmVzb3VyY2VJZGVudGlmaWVyKQogewotICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZVJlbmRlcmlu
Z0JhY2tlbmQ6OkZsdXNoRGlzcGxheUxpc3QoeyBkaXNwbGF5TGlzdCB9LCByZW5kZXJpbmdSZXNv
dXJjZUlkZW50aWZpZXIpLCBtX3JlbmRlcmluZ0JhY2tlbmRJZGVudGlmaWVyKTsKLSAgICBtX3No
YXJlZEl0ZW1CdWZmZXJzLmNsZWFyKCk7Ci19CisgICAgT3B0aW9uYWw8c3RkOjpwYWlyPFdlYkNv
cmU6OkRpc3BsYXlMaXN0OjpJdGVtQnVmZmVySWRlbnRpZmllciwgc2l6ZV90Pj4gaWRlbnRpZmll
ckFuZE9mZnNldEZvcldha2VVcE1lc3NhZ2U7CisgICAgYm9vbCBpc0ZpcnN0SGFuZGxlID0gdHJ1
ZTsKIAotRGlzcGxheUxpc3Q6OkZsdXNoSWRlbnRpZmllciBSZW1vdGVSZW5kZXJpbmdCYWNrZW5k
UHJveHk6OmZsdXNoRGlzcGxheUxpc3RBbmRDb21taXQoY29uc3QgRGlzcGxheUxpc3Q6OkRpc3Bs
YXlMaXN0JiBkaXNwbGF5TGlzdCwgUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyIHJlbmRlcmlu
Z1Jlc291cmNlSWRlbnRpZmllcikKLXsKLSAgICBhdXRvIHNlbnRGbHVzaElkZW50aWZpZXIgPSBE
aXNwbGF5TGlzdDo6Rmx1c2hJZGVudGlmaWVyOjpnZW5lcmF0ZSgpOwotICAgIHNlbmQoTWVzc2Fn
ZXM6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OkZsdXNoRGlzcGxheUxpc3RBbmRDb21taXQoeyBk
aXNwbGF5TGlzdCB9LCBzZW50Rmx1c2hJZGVudGlmaWVyLCByZW5kZXJpbmdSZXNvdXJjZUlkZW50
aWZpZXIpLCBtX3JlbmRlcmluZ0JhY2tlbmRJZGVudGlmaWVyKTsKLSAgICBtX3NoYXJlZEl0ZW1C
dWZmZXJzLmNsZWFyKCk7Ci0gICAgcmV0dXJuIHNlbnRGbHVzaElkZW50aWZpZXI7CisgICAgZGlz
cGxheUxpc3QuZm9yRWFjaEl0ZW1CdWZmZXIoWyZdIChhdXRvJiBoYW5kbGUpIHsKKyAgICAgICAg
bV9pZGVudGlmaWVyc09mSGFuZGxlc0F2YWlsYWJsZUZvcldyaXRpbmcuYWRkKGhhbmRsZS5pZGVu
dGlmaWVyKTsKKworICAgICAgICBhdXRvKiBzaGFyZWRIYW5kbGUgPSBtX3NoYXJlZERpc3BsYXlM
aXN0SGFuZGxlcy5nZXQoaGFuZGxlLmlkZW50aWZpZXIpOworICAgICAgICBSRUxFQVNFX0FTU0VS
VF9XSVRIX01FU1NBR0Uoc2hhcmVkSGFuZGxlLCAiJXMgZmFpbGVkIHRvIGZpbmQgc2hhcmVkIGRp
c3BsYXkgbGlzdCIsIF9fUFJFVFRZX0ZVTkNUSU9OX18pOworCisgICAgICAgIFNoYXJlZERpc3Bs
YXlMaXN0SGFuZGxlOjpMb2NrIGxvY2tlciB7ICpzaGFyZWRIYW5kbGUgfTsKKworICAgICAgICBi
b29sIHVucmVhZENvdW50V2FzRW1wdHkgPSAhc2hhcmVkSGFuZGxlLT51bnJlYWRCeXRlcygpOwor
ICAgICAgICBzaGFyZWRIYW5kbGUtPmFkdmFuY2UoaGFuZGxlLmNhcGFjaXR5KTsKKyAgICAgICAg
aWYgKGlzRmlyc3RIYW5kbGUgJiYgdW5yZWFkQ291bnRXYXNFbXB0eSkKKyAgICAgICAgICAgIGlk
ZW50aWZpZXJBbmRPZmZzZXRGb3JXYWtlVXBNZXNzYWdlID0ge3sgaGFuZGxlLmlkZW50aWZpZXIs
IGhhbmRsZS5kYXRhIC0gc2hhcmVkSGFuZGxlLT5kYXRhKCkgfX07CisKKyAgICAgICAgaXNGaXJz
dEhhbmRsZSA9IGZhbHNlOworICAgIH0pOworCisgICAgaWYgKGlkZW50aWZpZXJBbmRPZmZzZXRG
b3JXYWtlVXBNZXNzYWdlKSB7CisgICAgICAgIGF1dG8gW2lkZW50aWZpZXIsIG9mZnNldF0gPSAq
aWRlbnRpZmllckFuZE9mZnNldEZvcldha2VVcE1lc3NhZ2U7CisgICAgICAgIHNlbmQoTWVzc2Fn
ZXM6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6Oldha2VVcEFuZFByb2Nlc3NEaXNwbGF5TGlzdChp
ZGVudGlmaWVyLCBvZmZzZXQsIHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciksIG1fcmVuZGVy
aW5nQmFja2VuZElkZW50aWZpZXIpOworICAgIH0KIH0KIAogdm9pZCBSZW1vdGVSZW5kZXJpbmdC
YWNrZW5kUHJveHk6OnJlbGVhc2VSZW1vdGVSZXNvdXJjZShSZW5kZXJpbmdSZXNvdXJjZUlkZW50
aWZpZXIgcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKQpAQCAtMTU5LDIxICsxNzIsNTYgQEAg
dm9pZCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHk6OmZsdXNoRGlzcGxheUxpc3RXYXNDb21t
aXR0ZWQoRGlzcGxheUxpc3Q6OkZsdXMKICAgICAgICAgZG93bmNhc3Q8VW5hY2NlbGVyYXRlZFJl
bW90ZUltYWdlQnVmZmVyUHJveHk+KCppbWFnZUJ1ZmZlcikuY29tbWl0Rmx1c2hEaXNwbGF5TGlz
dChmbHVzaElkZW50aWZpZXIpOwogfQogCi1EaXNwbGF5TGlzdDo6SXRlbUJ1ZmZlckhhbmRsZSBS
ZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHk6OmNyZWF0ZUl0ZW1CdWZmZXIoc2l6ZV90IGNhcGFj
aXR5KQordm9pZCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHk6OnVwZGF0ZVJldXNhYmxlSGFu
ZGxlcygpCit7CisgICAgZm9yIChhdXRvIGlkZW50aWZpZXIgOiBtX2lkZW50aWZpZXJzT2ZIYW5k
bGVzQXZhaWxhYmxlRm9yV3JpdGluZykgeworICAgICAgICBhdXRvKiBoYW5kbGUgPSBtX3NoYXJl
ZERpc3BsYXlMaXN0SGFuZGxlcy5nZXQoaWRlbnRpZmllcik7CisgICAgICAgIGlmICghaGFuZGxl
LT5yZXNldFdyaXRhYmxlT2Zmc2V0SWZQb3NzaWJsZSgpKQorICAgICAgICAgICAgY29udGludWU7
CisKKyAgICAgICAgaWYgKG1faWRlbnRpZmllcnNPZlJldXNhYmxlSGFuZGxlcy5jb250YWlucyhp
ZGVudGlmaWVyKSkKKyAgICAgICAgICAgIGNvbnRpbnVlOworCisgICAgICAgIG1faWRlbnRpZmll
cnNPZlJldXNhYmxlSGFuZGxlcy5hcHBlbmQoaWRlbnRpZmllcik7CisgICAgfQorfQorCitEaXNw
bGF5TGlzdDo6SXRlbUJ1ZmZlckhhbmRsZSBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHk6OmNy
ZWF0ZUl0ZW1CdWZmZXIoc2l6ZV90IGNhcGFjaXR5LCBSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZp
ZXIgcmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyKQogeworICAgIHVwZGF0ZVJldXNhYmxlSGFuZGxl
cygpOworCisgICAgd2hpbGUgKCFtX2lkZW50aWZpZXJzT2ZSZXVzYWJsZUhhbmRsZXMuaXNFbXB0
eSgpKSB7CisgICAgICAgIGF1dG8gaWRlbnRpZmllciA9IG1faWRlbnRpZmllcnNPZlJldXNhYmxl
SGFuZGxlcy5maXJzdCgpOworICAgICAgICBhdXRvKiByZXVzYWJsZUhhbmRsZSA9IG1fc2hhcmVk
RGlzcGxheUxpc3RIYW5kbGVzLmdldChpZGVudGlmaWVyKTsKKyAgICAgICAgUkVMRUFTRV9BU1NF
UlRfV0lUSF9NRVNTQUdFKHJldXNhYmxlSGFuZGxlLCAiJXMgZmFpbGVkIHRvIGZpbmQgc2hhcmVk
IGRpc3BsYXkgbGlzdCIsIF9fUFJFVFRZX0ZVTkNUSU9OX18pOworCisgICAgICAgIGlmIChtX2lk
ZW50aWZpZXJzT2ZIYW5kbGVzQXZhaWxhYmxlRm9yV3JpdGluZy5jb250YWlucyhpZGVudGlmaWVy
KSAmJiByZXVzYWJsZUhhbmRsZS0+YXZhaWxhYmxlQ2FwYWNpdHkoKSA+PSBjYXBhY2l0eSkgewor
ICAgICAgICAgICAgbV9pZGVudGlmaWVyc09mSGFuZGxlc0F2YWlsYWJsZUZvcldyaXRpbmcucmVt
b3ZlKGlkZW50aWZpZXIpOworICAgICAgICAgICAgcmV0dXJuIHJldXNhYmxlSGFuZGxlLT5jcmVh
dGVIYW5kbGUoKTsKKyAgICAgICAgfQorCisgICAgICAgIG1faWRlbnRpZmllcnNPZlJldXNhYmxl
SGFuZGxlcy5yZW1vdmVGaXJzdCgpOworICAgIH0KKwogICAgIHN0YXRpYyBjb25zdGV4cHIgc2l6
ZV90IGRlZmF1bHRTaGFyZWRJdGVtQnVmZmVyU2l6ZSA9IDEgPDwgMTY7CiAKLSAgICBhdXRvIHNo
YXJlZE1lbW9yeSA9IFNoYXJlZE1lbW9yeTo6YWxsb2NhdGUoc3RkOjptYXgoZGVmYXVsdFNoYXJl
ZEl0ZW1CdWZmZXJTaXplLCBjYXBhY2l0eSkpOworICAgIGF1dG8gc2hhcmVkTWVtb3J5ID0gU2hh
cmVkTWVtb3J5OjphbGxvY2F0ZShzdGQ6Om1heChkZWZhdWx0U2hhcmVkSXRlbUJ1ZmZlclNpemUs
IGNhcGFjaXR5ICsgU2hhcmVkRGlzcGxheUxpc3RIYW5kbGU6OnJlc2VydmVkQ2FwYWNpdHlBdFN0
YXJ0KSk7CiAgICAgaWYgKCFzaGFyZWRNZW1vcnkpCiAgICAgICAgIHJldHVybiB7IH07CiAKLSAg
ICBhdXRvIGlkZW50aWZpZXIgPSBEaXNwbGF5TGlzdDo6SXRlbUJ1ZmZlcklkZW50aWZpZXI6Omdl
bmVyYXRlKCk7CiAgICAgU2hhcmVkTWVtb3J5OjpIYW5kbGUgc2hhcmVkTWVtb3J5SGFuZGxlOwot
ICAgIHNoYXJlZE1lbW9yeS0+Y3JlYXRlSGFuZGxlKHNoYXJlZE1lbW9yeUhhbmRsZSwgU2hhcmVk
TWVtb3J5OjpQcm90ZWN0aW9uOjpSZWFkT25seSk7Ci0gICAgc2VuZChNZXNzYWdlczo6UmVtb3Rl
UmVuZGVyaW5nQmFja2VuZDo6RGlkQ3JlYXRlU2hhcmVkSXRlbURhdGEoaWRlbnRpZmllciwgeyBX
VEZNb3ZlKHNoYXJlZE1lbW9yeUhhbmRsZSksIHNoYXJlZE1lbW9yeS0+c2l6ZSgpIH0pLCBtX3Jl
bmRlcmluZ0JhY2tlbmRJZGVudGlmaWVyKTsKLSAgICBtX3NoYXJlZEl0ZW1CdWZmZXJzLnNldChp
ZGVudGlmaWVyLCBzaGFyZWRNZW1vcnkuY29weVJlZigpKTsKKyAgICBzaGFyZWRNZW1vcnktPmNy
ZWF0ZUhhbmRsZShzaGFyZWRNZW1vcnlIYW5kbGUsIFNoYXJlZE1lbW9yeTo6UHJvdGVjdGlvbjo6
UmVhZFdyaXRlKTsKKworICAgIGF1dG8gaWRlbnRpZmllciA9IERpc3BsYXlMaXN0OjpJdGVtQnVm
ZmVySWRlbnRpZmllcjo6Z2VuZXJhdGUoKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVSZW5k
ZXJpbmdCYWNrZW5kOjpEaWRDcmVhdGVTaGFyZWREaXNwbGF5TGlzdEhhbmRsZShpZGVudGlmaWVy
LCB7IFdURk1vdmUoc2hhcmVkTWVtb3J5SGFuZGxlKSwgc2hhcmVkTWVtb3J5LT5zaXplKCkgfSwg
cmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyKSwgbV9yZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllcik7
CisKKyAgICBhdXRvIG5ld0hhbmRsZSA9IG1ha2VVbmlxdWU8RGlzcGxheUxpc3RXcml0ZXJIYW5k
bGU+KGlkZW50aWZpZXIsIHNoYXJlZE1lbW9yeS5yZWxlYXNlTm9uTnVsbCgpKTsKKyAgICBhdXRv
IGRpc3BsYXlMaXN0SGFuZGxlID0gbmV3SGFuZGxlLT5jcmVhdGVIYW5kbGUoKTsKKworICAgIG1f
aWRlbnRpZmllcnNPZlJldXNhYmxlSGFuZGxlcy5hcHBlbmQoaWRlbnRpZmllcik7CisgICAgbV9z
aGFyZWREaXNwbGF5TGlzdEhhbmRsZXMuc2V0KGlkZW50aWZpZXIsIFdURk1vdmUobmV3SGFuZGxl
KSk7CiAKLSAgICByZXR1cm4geyBpZGVudGlmaWVyLCByZWludGVycHJldF9jYXN0PHVpbnQ4X3Qq
PihzaGFyZWRNZW1vcnktPmRhdGEoKSksIHNoYXJlZE1lbW9yeS0+c2l6ZSgpIH07CisgICAgcmV0
dXJuIGRpc3BsYXlMaXN0SGFuZGxlOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlUmVuZGVy
aW5nQmFja2VuZFByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNz
L1JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS5oCmluZGV4IDIwY2U2ZGE0NTViMTlmZDc1MThm
MDlkNWJhYmY4ZjAxZTRiZjY0ZTkuLjZlZGY4YzkzMTNlYjU2MTlmNWM1OGFjNWY3YTBmMzc1M2Y1
ODM0MTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3Mv
UmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkuaApAQCAtMzQsNiAr
MzQsNyBAQAogI2luY2x1ZGUgIlJlbmRlcmluZ0JhY2tlbmRJZGVudGlmaWVyLmgiCiAjaW5jbHVk
ZSA8V2ViQ29yZS9EaXNwbGF5TGlzdC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUmVuZGVyaW5nUmVz
b3VyY2VJZGVudGlmaWVyLmg+CisjaW5jbHVkZSA8d3RmL0RlcXVlLmg+CiAjaW5jbHVkZSA8d3Rm
L1dlYWtQdHIuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtNTAsNiArNTEsOCBAQCBlbnVt
IGNsYXNzIFJlbmRlcmluZ01vZGUgOiBib29sOwogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAorY2xh
c3MgRGlzcGxheUxpc3RXcml0ZXJIYW5kbGU7CisKIGNsYXNzIFJlbW90ZVJlbmRlcmluZ0JhY2tl
bmRQcm94eQogICAgIDogcHVibGljIElQQzo6TWVzc2FnZVNlbmRlcgogICAgICwgcHJpdmF0ZSBJ
UEM6Ok1lc3NhZ2VSZWNlaXZlcgpAQCAtNjAsNyArNjMsNyBAQCBwdWJsaWM6CiAgICAgflJlbW90
ZVJlbmRlcmluZ0JhY2tlbmRQcm94eSgpOwogCiAgICAgUmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5
JiByZW1vdGVSZXNvdXJjZUNhY2hlUHJveHkoKSB7IHJldHVybiBtX3JlbW90ZVJlc291cmNlQ2Fj
aGVQcm94eTsgfQotICAgIFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtQnVmZmVySGFuZGxlIGNy
ZWF0ZUl0ZW1CdWZmZXIoc2l6ZV90KTsKKyAgICBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbUJ1
ZmZlckhhbmRsZSBjcmVhdGVJdGVtQnVmZmVyKHNpemVfdCBjYXBhY2l0eSwgV2ViQ29yZTo6UmVu
ZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKTsKIAogICAgIC8vIElQQzo6TWVzc2FnZVNlbmRlci4K
ICAgICBJUEM6OkNvbm5lY3Rpb24qIG1lc3NhZ2VTZW5kZXJDb25uZWN0aW9uKCkgY29uc3Qgb3Zl
cnJpZGU7CkBAIC04MiwxMiArODUsMTYgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICBSZW1vdGVS
ZW5kZXJpbmdCYWNrZW5kUHJveHkoKTsKIAorICAgIHZvaWQgdXBkYXRlUmV1c2FibGVIYW5kbGVz
KCk7CisKICAgICAvLyBNZXNzYWdlcyB0byBiZSByZWNlaXZlZC4KICAgICB2b2lkIGltYWdlQnVm
ZmVyQmFja2VuZFdhc0NyZWF0ZWQoY29uc3QgV2ViQ29yZTo6RmxvYXRTaXplJiBsb2dpY2FsU2l6
ZSwgY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYgYmFja2VuZFNpemUsIGZsb2F0IHJlc29sdXRpb25T
Y2FsZSwgV2ViQ29yZTo6Q29sb3JTcGFjZSwgSW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxlLCBXZWJD
b3JlOjpSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpOwogICAgIHZvaWQgZmx1c2hEaXNwbGF5
TGlzdFdhc0NvbW1pdHRlZChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6Rmx1c2hJZGVudGlmaWVyLCBX
ZWJDb3JlOjpSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpOwogCiAgICAgUmVtb3RlUmVzb3Vy
Y2VDYWNoZVByb3h5IG1fcmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5OwotICAgIEhhc2hNYXA8V2Vi
Q29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1CdWZmZXJJZGVudGlmaWVyLCBSZWZQdHI8U2hhcmVkTWVt
b3J5Pj4gbV9zaGFyZWRJdGVtQnVmZmVyczsKKyAgICBIYXNoTWFwPFdlYkNvcmU6OkRpc3BsYXlM
aXN0OjpJdGVtQnVmZmVySWRlbnRpZmllciwgc3RkOjp1bmlxdWVfcHRyPERpc3BsYXlMaXN0V3Jp
dGVySGFuZGxlPj4gbV9zaGFyZWREaXNwbGF5TGlzdEhhbmRsZXM7CisgICAgRGVxdWU8V2ViQ29y
ZTo6RGlzcGxheUxpc3Q6Okl0ZW1CdWZmZXJJZGVudGlmaWVyPiBtX2lkZW50aWZpZXJzT2ZSZXVz
YWJsZUhhbmRsZXM7CisgICAgSGFzaFNldDxXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbUJ1ZmZl
cklkZW50aWZpZXI+IG1faWRlbnRpZmllcnNPZkhhbmRsZXNBdmFpbGFibGVGb3JXcml0aW5nOwog
ICAgIFJlbmRlcmluZ0JhY2tlbmRJZGVudGlmaWVyIG1fcmVuZGVyaW5nQmFja2VuZElkZW50aWZp
ZXIgeyBSZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllcjo6Z2VuZXJhdGUoKSB9OwogfTsKIAo=
</data>
<flag name="commit-queue"
          id="430139"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>413525</attachid>
            <date>2020-11-07 09:37:39 -0800</date>
            <delta_ts>2020-11-07 09:40:30 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-218426-20201107093738.patch</filename>
            <type>text/plain</type>
            <size>59167</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY5NTYwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGU2M2RjZjg2NTgxZmIzNTFm
ZjE4OTU5Y2ViMGY0NWU5OTczODM3YjkuLmI1ZjkyZDUzYTk5OTJjMGFmOTFjNjZlNzJhZDhiMWYw
YTk5OTE3YzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQ5IEBACisyMDIwLTExLTA0ICBXZW5zb24g
SHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAgICAgIFtDb25jdXJyZW50IGRp
c3BsYXkgbGlzdHNdIEFkZCBhbiBpbml0aWFsIGltcGxlbWVudGF0aW9uIG9mIGNvbmN1cnJlbnQg
ZGlzcGxheSBsaXN0IHJlbmRlcmluZworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MjE4NDI2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgVGhpcyBwYXRjaCBhZGRzIGEgZmlyc3QtY3V0IGltcGxlbWVudGF0aW9u
IG9mIGNvbmN1cnJlbnQgZGlzcGxheSBsaXN0IHJlbmRlcmluZywgd2hpY2ggYWxsb3dzIHRoZSBH
UFUgYW5kIHdlYgorICAgICAgICBwcm9jZXNzZXMgdG8gcmVhZCBhbmQgd3JpdGUgZGlzcGxheSBs
aXN0IGRhdGEgYXQgdGhlIHNhbWUgdGltZS4gVG8gYWNoaWV2ZSB0aGlzLCB3ZSByZW1vdmUgdGhl
IHBsYWNlaG9sZGVyCisgICAgICAgIHNoYXJlZCBtZW1vcnkgZGlzcGxheSBsaXN0IGVuY29kaW5n
IG1lY2hhbmlzbSBwcmV2aW91c2x5IGFkZGVkIGluIDx3ZWJraXQub3JnL2IvMjE4NDA2PiwgYW5k
IHJlcGxhY2UgaXQgd2l0aCBhCisgICAgICAgIG5ldyBtb2RlbCBpbiB3aGljaCBhIHdyaXRlciAo
aS5lLiB0aGUgd2ViIHByb2Nlc3MpIGFuZCBhIHJlYWRlciAoaS5lLiB0aGUgR1BVIHByb2Nlc3Mp
IHNoYXJlIGEgc2V0IG9mIHJldXNhYmxlCisgICAgICAgIHNoYXJlZCBtZW1vcnkgYnVmZmVycyB3
aGljaCBjb250YWluIGRpc3BsYXkgbGlzdCBpdGVtIGRhdGEuIEFzIHRoZSB3cml0ZXIgYXBwZW5k
cyBkYXRhIHRvIHNoYXJlZCBtZW1vcnksIGl0CisgICAgICAgIGluY3JlbWVudHMgYSBjb3VudGVy
IGluIGVhY2ggc2hhcmVkIG1lbW9yeSBidWZmZXIgdGhhdCByZXByZXNlbnRzIHRoZSBudW1iZXIg
b2YgYnl0ZXMgdGhhdCB0aGUgcmVhZGVyIGhhcyB5ZXQgdG8KKyAgICAgICAgcmVhZDsgYXMgdGhl
IHJlYWRlciByZWFkcyBkaXNwbGF5IGxpc3QgaXRlbXMgZnJvbSBzaGFyZWQgbWVtb3J5LCBpdCBk
ZWNyZW1lbnRzIHRoaXMgY291bnRlci4KKworICAgICAgICBUaGlzIHBhdGNoIGFsc28gaW1wbGVt
ZW50cyBhIHNpbXBsZSBzdHJhdGVneSBmb3IgcmV1c2luZyB0aGVzZSBzaGFyZWQgaXRlbSBidWZm
ZXJzLiBUaGUgd2ViIHByb2Nlc3MgbWFpbnRhaW5zIGEKKyAgICAgICAgcXVldWUgb2YgcmV1c2Fi
bGUgYnVmZmVyczsgd2hlbiBkaXNwbGF5IGxpc3QgaXRlbXMgYXJlIGFwcGVuZGVkIGFuZCB0aGUg
Y3VycmVudCB3cml0YWJsZSBidWZmZXIgaXMgb3V0IG9mCisgICAgICAgIGNhcGFjaXR5LCB0aGUg
ZGlzcGxheSBsaXN0IGl0ZW0gYnVmZmVyIGNhbGxzIG91dCB0byBXZWJLaXQyIHZpYSBhIGNsaWVu
dCBtZXRob2QgdG8gcmVxdWVzdCBtb3JlIHNoYXJlZCBtZW1vcnkuCisgICAgICAgIEhlcmUsIHRo
ZSB3ZWIgcHJvY2VzcyB0cmF2ZXJzZXMgdGhlIHF1ZXVlIG9mIHJldXNhYmxlIGl0ZW0gYnVmZmVy
cyBpbiBzZWFyY2ggb2YgYSBidWZmZXIgd2l0aCBzdWZmaWNpZW50CisgICAgICAgIGNhcGFjaXR5
OyBpZiBmb3VuZCwgd2UgaGFuZCB0aGlzIGJhY2sgdG8gV2ViQ29yZSBhcyBhbiBvcGFxdWUgYEl0
ZW1CdWZmZXJIYW5kbGVgOyBvdGhlcndpc2UsIHdlIGFsbG9jYXRlIGEgbmV3CisgICAgICAgIHJl
dXNhYmxlIHNoYXJlZCBtZW1vcnkgYnVmZmVyLiBJdGVtIGJ1ZmZlcnMgdGhhdCBoYXZlIGJlZW4g
dXNlZCBiZWNvbWUgcmV1c2FibGUgb25seSBhZnRlciB0aGV5IGFyZSAoMSkgbm8KKyAgICAgICAg
bG9uZ2VyIGJlaW5nIHJlYWQgZnJvbSAtLSBpLmUuLCB0aGUgY291bnRlciB2YWx1ZSBpcyAwLCBh
bmQgKDIpIHRoZXkgYXJlIG5vdCBhY3RpdmVseSBiZWluZyB3cml0dGVuIHRvLgorICAgICAgICBC
dWZmZXJzIHRoYXQgaGF2ZSBiZWVuIHVzZWQgYXJlIGxhemlseSByZWludHJvZHVjZWQgaW50byB0
aGUgcmV1c2UgcXVldWUgd2hlbiBhIGRpc3BsYXkgbGlzdCByZXF1ZXN0cyBhIGhhbmRsZQorICAg
ICAgICB0byB3cml0YWJsZSBpdGVtIGJ1ZmZlciBkYXRhLgorCisgICAgICAgIFNlZSBiZWxvdyBm
b3IgbW9yZSBkZXRhaWxzLgorCisgICAgICAgICogR1BVUHJvY2Vzcy9ncmFwaGljcy9EaXNwbGF5
TGlzdFJlYWRlckhhbmRsZS5jcHA6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJLaXQvU2hhcmVkL1No
YXJlZERpc3BsYXlMaXN0SGFuZGxlLmNwcC4KKyAgICAgICAgKFdlYktpdDo6RGlzcGxheUxpc3RS
ZWFkZXJIYW5kbGU6OmFkdmFuY2UpOgorICAgICAgICAoV2ViS2l0OjpEaXNwbGF5TGlzdFJlYWRl
ckhhbmRsZTo6Y3JlYXRlRGlzcGxheUxpc3QgY29uc3QpOgorICAgICAgICAqIEdQVVByb2Nlc3Mv
Z3JhcGhpY3MvRGlzcGxheUxpc3RSZWFkZXJIYW5kbGUuaDogQ29waWVkIGZyb20gU291cmNlL1dl
YktpdC9TaGFyZWQvU2hhcmVkRGlzcGxheUxpc3RIYW5kbGUuY3BwLgorICAgICAgICAoV2ViS2l0
OjpEaXNwbGF5TGlzdFJlYWRlckhhbmRsZTo6RGlzcGxheUxpc3RSZWFkZXJIYW5kbGUpOgorCisg
ICAgICAgIEFkZCBhIG5ldyBoZWxwZXIgY2xhc3MgdG8gcmVwcmVzZW50IGEgc2hhcmVkIGRpc3Bs
YXkgbGlzdCBpdGVtIGJ1ZmZlciB0aGF0IHRoZSBHUFUgcHJvY2VzcyBjYW4gdXNlIHRvIGNvbnN1
bWUKKyAgICAgICAgZGlzcGxheSBsaXN0IGl0ZW1zLiBBZHZhbmNpbmcgdGhlIGN1cnNvciBpbiBg
RGlzcGxheUxpc3RSZWFkZXJIYW5kbGVgIGRlY3JlbWVudHMgdGhlICJyZW1haW5pbmcgYnl0ZXMi
IGNvdW50ZXI7CisgICAgICAgIHRoZSBjbGFzcyBhbHNvIGhhcyBhIGhlbHBlciBtZXRob2QgZm9y
IGNyZWF0aW5nIGEgbmV3IGBEaXNwbGF5TGlzdGAgd2l0aCBhIGdpdmVuIG9mZnNldCBpbnRvIHRo
ZSBzaGFyZWQgYnVmZmVyLAorICAgICAgICBhcyB3ZWxsIHRoZSBudW1iZXIgb2YgYnl0ZXMgdG8g
cmVhZC4KKworICAgICAgICAqIEdQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlSW1hZ2VCdWZmZXIu
aDoKKworICAgICAgICBIYW5kbGUgdGhlIGBTd2l0Y2hUb0J1ZmZlcmAgYW5kIGBGbHVzaENvbnRl
eHRgIGl0ZW1zIGJ5IChyZXNwZWN0aXZlbHkpIGluZm9ybWluZyB0aGUgcmVuZGVyaW5nIGJhY2tl
bmQgYWJvdXQKKyAgICAgICAgdGhlIG5leHQgYnVmZmVyIHRvIHJlYWQgZnJvbSwgYW5kIHNlbmRp
bmcgYSAiZmx1c2ggY29tbWl0dGVkIiBJUEMgbWVzc2FnZSBiYWNrIHRvIHRoZSB3ZWIgcHJvY2Vz
cy4KKworICAgICAgICAoV2ViS2l0OjpSZW1vdGVJbWFnZUJ1ZmZlcjo6UmVtb3RlSW1hZ2VCdWZm
ZXIpOgorICAgICAgICAqIEdQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2Vu
ZC5jcHA6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6Ondha2VVcEFu
ZFByb2Nlc3NEaXNwbGF5TGlzdCk6CisKKyAgICAgICAgVGhpcyBpcyB0aGUgbWFpbiBsb29wIGlu
IHRoZSBHUFUgcHJvY2VzcyB0aGF0IGlzIHJlc3BvbnNpYmxlIGZvciBhcHBseWluZyBpbmNvbWlu
ZyBkaXNwbGF5IGxpc3QgaXRlbSBkYXRhLiBUaGlzCisgICAgICAgIElQQyBlbmRwb2ludCByZWNl
aXZlcyBpbmZvcm1hdGlvbiBhYm91dCB3aGVyZSB0byBzdGFydCAoaS5lLiBhbiBpdGVtIGJ1ZmZl
ciBJRCBhbmQgYW4gb2Zmc2V0IGludG8gc2hhcmVkIG1lbW9yeQorICAgICAgICBpbiB0aGF0IGJ1
ZmZlcikgYW5kIGJlZ2lucyByZWFkaW5nIHJhbmdlcyBvZiBkaXNwbGF5IGxpc3QgaXRlbSBkYXRh
IGluc2lkZSB0aGF0IGJ1ZmZlci4gQWZ0ZXIgaXQgaXMgZG9uZQorICAgICAgICBwcm9jZXNzaW5n
IGFsbCBvZiBpdHMgdW5yZWFkIGJ5dGVzLCBpdCB0aGVuIGNoZWNrcyB0aGUgdW5yZWFkIGJ5dGUg
Y291bnQgb25jZSBhZ2FpbiwgYW5kIGNvbnRpbnVlcyB0aGUgbG9vcCBpZgorICAgICAgICB0aGUg
d2ViIHByb2Nlc3MgaGFzIGFkdmFuY2VkIHRoaXMgY291bnQuCisKKyAgICAgICAgKFdlYktpdDo6
UmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6c2V0TmV4dEl0ZW1CdWZmZXJUb1JlYWQpOgorICAgICAg
ICAoV2ViS2l0OjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpkaWRDcmVhdGVTaGFyZWREaXNwbGF5
TGlzdEhhbmRsZSk6CisKKyAgICAgICAgQWRkIGxvZ2ljIHRvIGhhbmRsZSB0aGUgY2FzZSB3aGVy
ZSB3ZSByZWFjaGVkIHRoZSBlbmQgb2YgYW4gaXRlbSBidWZmZXIsIGJ1dCB0aGUgbmV4dCBidWZm
ZXIgaWRlbnRpZmllciBpcyBzdGlsbAorICAgICAgICB1bmtub3duIHRvIHVzIChzaW5jZSBpdCBp
cyBzdGlsbCAiaW4gdHJhbnNpdCIgdmlhIHRoZSBgRGlkQ3JlYXRlU2hhcmVkRGlzcGxheUxpc3RI
YW5kbGVgIElQQyBtZXNzYWdlKS4gSW4gdGhpcworICAgICAgICBjYXNlLCB3ZSByZW1lbWJlciB0
aGUgbmV4dCBidWZmZXIgaWRlbnRpZmllciBpbiBgbV9uZXh0SXRlbUJ1ZmZlclRvUmVhZGAsIGFu
ZCBleGl0IHRoZSBwcm9jZXNzaW5nIGxvb3AgaW5zaWRlCisgICAgICAgIGB3YWtlVXBBbmRQcm9j
ZXNzRGlzcGxheUxpc3RgLiBVcG9uIHJlY2VpdmluZyB0aGUgc2hhcmVkIG1lbW9yeSBoYW5kbGUg
aW4gYGRpZENyZWF0ZVNoYXJlZERpc3BsYXlMaXN0SGFuZGxlYCwgd2UKKyAgICAgICAgdGhlbiBh
dXRvbWF0aWNhbGx5IHJlc3VtZSBkaXNwbGF5IGxpc3QgcHJvY2Vzc2luZywgc3RhcnRpbmcgZnJv
bSB0aGUgYmVnaW5uaW5nIG9mIHRoaXMgbmV3IGJ1ZmZlci4KKworICAgICAgICAoV2ViS2l0OjpS
ZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjphcHBseURpc3BsYXlMaXN0KTogRGVsZXRlZC4KKyAgICAg
ICAgKFdlYktpdDo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6Zmx1c2hEaXNwbGF5TGlzdCk6IERl
bGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OmZsdXNoRGlz
cGxheUxpc3RBbmRDb21taXQpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVSZW5k
ZXJpbmdCYWNrZW5kOjpkaWRDcmVhdGVTaGFyZWRJdGVtRGF0YSk6IERlbGV0ZWQuCisKKyAgICAg
ICAgV2UgZG9uJ3QgbmVlZCBhbnkgb2YgdGhlc2UgbWV0aG9kcyBhbnltb3JlLCBub3cgdGhhdCB0
aGVyZSBpcyBvbmx5IG9uZSBjb2RlcGF0aCBmb3IgcHJvY2Vzc2luZyBkaXNwbGF5IGxpc3QKKyAg
ICAgICAgaXRlbXMuIFNlZSBgUmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6d2FrZVVwQW5kUHJvY2Vz
c0Rpc3BsYXlMaXN0YCBhYm92ZS4gQWxzbywgcmVuYW1lIGBkaWRDcmVhdGVTaGFyZWRJdGVtRGF0
YWAKKyAgICAgICAgdG8gYGRpZENyZWF0ZVNoYXJlZERpc3BsYXlMaXN0SGFuZGxlYCAoYWxzbyBh
Ym92ZSkuCisKKyAgICAgICAgKiBHUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0Jh
Y2tlbmQuaDoKKyAgICAgICAgKiBHUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0Jh
Y2tlbmQubWVzc2FnZXMuaW46CisgICAgICAgICogU2hhcmVkL1NoYXJlZERpc3BsYXlMaXN0SGFu
ZGxlLmg6CisgICAgICAgIChXZWJLaXQ6OlNoYXJlZERpc3BsYXlMaXN0SGFuZGxlOjpzaGFyZWRN
ZW1vcnkgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpTaGFyZWREaXNwbGF5TGlzdEhhbmRsZTo6
c2hhcmVkTWVtb3J5KToKKyAgICAgICAgKFdlYktpdDo6U2hhcmVkRGlzcGxheUxpc3RIYW5kbGU6
OnVucmVhZEJ5dGVzIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6U2hhcmVkRGlzcGxheUxpc3RI
YW5kbGU6OmRhdGEgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpTaGFyZWREaXNwbGF5TGlzdEhh
bmRsZTo6aWRlbnRpZmllciBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OlNoYXJlZERpc3BsYXlM
aXN0SGFuZGxlOjpMb2NrOjpMb2NrKToKKyAgICAgICAgKFdlYktpdDo6U2hhcmVkRGlzcGxheUxp
c3RIYW5kbGU6OkxvY2s6On5Mb2NrKToKKyAgICAgICAgKFdlYktpdDo6U2hhcmVkRGlzcGxheUxp
c3RIYW5kbGU6OlNoYXJlZERpc3BsYXlMaXN0SGFuZGxlKToKKyAgICAgICAgKFdlYktpdDo6U2hh
cmVkRGlzcGxheUxpc3RIYW5kbGU6OnVucmVhZEJ5dGVzSGFuZGxlKToKKyAgICAgICAgKFdlYktp
dDo6U2hhcmVkRGlzcGxheUxpc3RIYW5kbGU6OmF0b21pY0xvY2tWYWx1ZSBjb25zdCk6CisgICAg
ICAgIChXZWJLaXQ6OlNoYXJlZERpc3BsYXlMaXN0SGFuZGxlOjplbmNvZGUgY29uc3QpOiBEZWxl
dGVkLgorICAgICAgICAoV2ViS2l0OjpTaGFyZWREaXNwbGF5TGlzdEhhbmRsZTo6ZGVjb2RlKTog
RGVsZXRlZC4KKworICAgICAgICBSZXB1cnBvc2UgYFNoYXJlZERpc3BsYXlMaXN0SGFuZGxlYCB0
byBzZXJ2ZSBhcyBhIGJhc2UgY2xhc3MgZm9yIGJvdGggYERpc3BsYXlMaXN0UmVhZGVySGFuZGxl
YCBhbmQKKyAgICAgICAgYERpc3BsYXlMaXN0V3JpdGVySGFuZGxlYC4gVGhpcyBiYXNlIGNsYXNz
IGlzIGF3YXJlIG9mIHRoZSBtZW1vcnkgbGF5b3V0IG9mIHRoZSBkaXNwbGF5IGxpc3QgaXRlbSBi
dWZmZXIgaW4KKyAgICAgICAgc2hhcmVkIG1lbW9yeSAoaW4gcGFydGljdWxhciwgdGhlIGZhY3Qg
dGhhdCB0aGUgZmlyc3QgYnl0ZSBpcyB0aGUgYXRvbWljIGxvY2sgYW5kIHRoZSBuZXh0IGBzaXpl
b2Yoc2l6ZV90KWAKKyAgICAgICAgYnl0ZXMgY29udGFpbiB0aGUgdW5yZWFkIGJ5dGUgY291bnRl
cikuCisKKyAgICAgICAgVGhpcyBhbHNvIGV4cG9zZXMgYSBoZWxwZXIgUkFJSSBjbGFzcywgYFNo
YXJlZERpc3BsYXlMaXN0SGFuZGxlOjpMb2NrYCwgdGhhdCBpcyB1c2VkIHRvIGdyYWIgdGhlIGxv
Y2sgb24gYQorICAgICAgICBwYXJ0aWN1bGFyIHNoYXJlZCBpdGVtIGJ1ZmZlciB3aGVuIHJlYWRp
bmcgb3IgdXBkYXRpbmcgdGhlIHVucmVhZCBieXRlcyBjb3VudGVyLgorCisgICAgICAgICogU291
cmNlcy50eHQ6CisgICAgICAgICogV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6Cisg
ICAgICAgICogV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvRGlzcGxheUxpc3RXcml0ZXJIYW5kbGUu
Y3BwOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViS2l0L1NoYXJlZC9TaGFyZWREaXNwbGF5TGlzdEhh
bmRsZS5jcHAuCisgICAgICAgIChXZWJLaXQ6OkRpc3BsYXlMaXN0V3JpdGVySGFuZGxlOjphZHZh
bmNlKToKKyAgICAgICAgKFdlYktpdDo6RGlzcGxheUxpc3RXcml0ZXJIYW5kbGU6OmF2YWlsYWJs
ZUNhcGFjaXR5IGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6RGlzcGxheUxpc3RXcml0ZXJIYW5k
bGU6OmNyZWF0ZUhhbmRsZSBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OkRpc3BsYXlMaXN0V3Jp
dGVySGFuZGxlOjpyZXNldFdyaXRhYmxlT2Zmc2V0SWZQb3NzaWJsZSk6CisKKyAgICAgICAgVGhp
cyBoZWxwZXIgbWV0aG9kIG1vdmVzIHRoZSB3cml0YWJsZSBvZmZzZXQgKHNlZSBiZWxvdykgYmFj
ayB0byB0aGUgc3RhcnQgb2YgdGhlIGJ1ZmZlciBpZiBpdCBpcyBub3QgYmVpbmcgcmVhZAorICAg
ICAgICBmcm9tIGJ5IHRoZSBHUFUgcHJvY2Vzcy4KKworICAgICAgICAqIFdlYlByb2Nlc3MvR1BV
L2dyYXBoaWNzL0Rpc3BsYXlMaXN0V3JpdGVySGFuZGxlLmg6IFJlbmFtZWQgZnJvbSBTb3VyY2Uv
V2ViS2l0L1NoYXJlZC9TaGFyZWREaXNwbGF5TGlzdEhhbmRsZS5jcHAuCisgICAgICAgIChXZWJL
aXQ6OkRpc3BsYXlMaXN0V3JpdGVySGFuZGxlOjpEaXNwbGF5TGlzdFdyaXRlckhhbmRsZSk6Cisg
ICAgICAgIChXZWJLaXQ6OkRpc3BsYXlMaXN0V3JpdGVySGFuZGxlOjp3cml0YWJsZU9mZnNldCBj
b25zdCk6CisKKyAgICAgICAgU2ltaWxhciB0byBgRGlzcGxheUxpc3RSZWFkZXJIYW5kbGVgLCBl
eGNlcHQgdGhhdCB0aGlzIGNvbnRhaW5zIGxvZ2ljIHNwZWNpZmljIHRvIHRoZSB3ZWIgcHJvY2Vz
cyBmb3Igd3JpdGluZworICAgICAgICBkaXNwbGF5IGxpc3QgaXRlbXMgaW50byBzaGFyZWQgbWVt
b3J5LiBBZHZhbmNpbmcgdGhlIGN1cnNvciBpbiBgRGlzcGxheUxpc3RXcml0ZXJIYW5kbGVgIGlu
Y3JlbWVudHMgdGhlIGNvdW50ZXIuCisgICAgICAgIEl0IGFsc28gaW5jcmVtZW50cyB0aGUgYHdy
aXRhYmxlT2Zmc2V0YCBvZiB0aGUgaGFuZGxlLCB3aGljaCByZXByZXNlbnRzIHRoZSBtaW5pbXVt
IG9mZnNldCBpbnRvIHRoZSBzaGFyZWQKKyAgICAgICAgYnVmZmVyIHRoYXQgbWF5IGNvbnRhaW4g
bmV3bHkgYXBwZW5kZWQgZGlzcGxheSBsaXN0IGl0ZW1zLgorCisgICAgICAgICogV2ViUHJvY2Vz
cy9HUFUvZ3JhcGhpY3MvUmVtb3RlSW1hZ2VCdWZmZXJQcm94eS5oOgorICAgICAgICAqIFdlYlBy
b2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS5jcHA6CisgICAg
ICAgIChXZWJLaXQ6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eTo6Zmx1c2hEaXNwbGF5TGlz
dCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eTo6dXBkYXRl
UmV1c2FibGVIYW5kbGVzKToKKworICAgICAgICBUaGlzIHByaXZhdGUgaGVscGVyIGl0ZXJhdGVz
IHRoZSBzZXQgb2YgYnVmZmVycyB0aGF0IGFyZSBub3QgY3VycmVudGx5IGJlaW5nIHdyaXR0ZW4g
dG8sIGFuZCBhZGRzIGVhY2ggb25lIHRvCisgICAgICAgIHRoZSByZXVzYWJsZSBidWZmZXIgcXVl
dWUgb25seSBpZiBpdHMgd3JpdGFibGUgb2Zmc2V0IGlzIGF0IHRoZSBzdGFydC4KKworICAgICAg
ICAoV2ViS2l0OjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHk6OmNyZWF0ZUl0ZW1CdWZmZXIp
OgorCisgICAgICAgIEltcGxlbWVudHMgbG9naWMgdGhhdCBoYW5kcyBzaGFyZWQgaXRlbSBidWZm
ZXIgZGF0YSBoYW5kbGVzIHRvIFdlYkNvcmUgZm9yIHdyaXRpbmcgZGlzcGxheSBsaXN0IGl0ZW1z
LiBUaGlzIHdpbGwKKyAgICAgICAgdHJ5IHRvIHJldXNlIGFuIGl0ZW0gYnVmZmVyIGluIHRoZSBy
ZXVzZSBxdWV1ZSwgaWYgcG9zc2libGUsIGFuZCBmYWxsIGJhY2sgdG8gYWxsb2NhdGluZyBhIG5l
dyBjaHVuayBvZiBzaGFyZWQKKyAgICAgICAgbWVtb3J5IGlmIG5vIHJldXNhYmxlIGJ1ZmZlciBp
cyBmb3VuZCAob3IgdGhlIGV4aXN0aW5nIGJ1ZmZlcnMgaGF2ZSBpbnN1ZmZpY2llbnQgY2FwYWNp
dHkpLiBUaGUgZmFjdCB0aGF0IHdlCisgICAgICAgIGl0ZXJhdGUgdGhyb3VnaCBlYWNoIHJldXNh
YmxlIGJ1ZmZlciBpbiBvcmRlciwgY29tYmluZWQgd2l0aCB0aGUgYWJvdmUgbG9naWMgaW4gYHVw
ZGF0ZVJldXNhYmxlSGFuZGxlc2AsIGVuc3VyZXMKKyAgICAgICAgdGhhdCBvbmNlIHdlIGJlZ2lu
IHdyaXRpbmcgdG8gYSBpdGVtIGJ1ZmZlciwgd2Ugd2lsbCBjb250aW51ZSB1c2luZyB0aGF0IGl0
ZW0gYnVmZmVyIHVudGlsIGl0IGV4aGF1c3RzIGF2YWlsYWJsZQorICAgICAgICBjYXBhY2l0eS4K
KworICAgICAgICBUaGlzIHByb3BlcnR5IGlzIGltcG9ydGFudCBiZWNhdXNlIGl0IGFsbG93cyB0
aGUgR1BVIHByb2Nlc3MgdG8gc2ltcGx5IHN0YXJ0IHJlYWRpbmcgaXRlbSBkYXRhIGZyb20gYSBn
aXZlbgorICAgICAgICBvZmZzZXQgYW5kIGJ1ZmZlciBJRCAoc3BlY2lmaWVkIGluIHRoZSBgV2Fr
ZVVwQW5kUHJvY2Vzc0Rpc3BsYXlMaXN0YCBJUEMgbWVzc2FnZSksIGFuZCBzZWFtbGVzc2x5IGNv
bnRpbnVlCisgICAgICAgIHJlYWRpbmcgZGF0YSBldmVuIGFmdGVyIGl0IGV4aGF1c3RzIGFsbCBh
dmFpbGFibGUgaXRlbSBkYXRhIGluIHRoZSBjdXJyZW50IGJ1ZmZlciBieSBjb250aW51aW5nIGZy
b20gdGhlIHN0YXJ0CisgICAgICAgIG9mIHRoZSBpdGVtIGJ1ZmZlciB0aGF0IGNvbnRhaW5zIHRo
ZSBuZXh0IGRpc3BsYXkgbGlzdCBpdGVtcyAod2hpY2ggd2UgbGVhcm4gaW4gdGhlIEdQVSBwcm9j
ZXNzIGJ5IGVuY291bnRlcmluZworICAgICAgICBhIGBTd2l0Y2hUb0J1ZmZlcmAgaXRlbSBhdCB0
aGUgZW5kIG9mIHRoZSBwcmV2aW91cyBidWZmZXIpLgorCisgICAgICAgIEluICJzdGVhZHkgc3Rh
dGUiICh3aGVyZWluIGJvdGggcHJvY2Vzc2VzIGFyZSBjb25jdXJyZW50bHkgd3JpdGluZyBhbmQg
cmVhZGluZyBpdGVtcyBhcyBxdWlja2x5IGFzIHBvc3NpYmxlKSwKKyAgICAgICAgdGhpcyBtZWFu
cyB0aGF0IGFzIHRoZSB3ZWIgcHJvY2VzcyBpcyBidXN5IGZpbGxpbmcgdXAgZWFjaCBpdGVtIGJ1
ZmZlciB3aXRoIGl0ZW0gZGF0YSwgdGhlIEdQVSBwcm9jZXNzIGlzIGFsc28KKyAgICAgICAgYnVz
eSBhcHBseWluZyBhbGwgdGhlIGl0ZW0gZGF0YSBpbiBvbmUgYnVmZmVyIGFuZCBhdXRvbWF0aWNh
bGx5IG1vdmluZyBvbiB0byB0aGUgbmV4dCBidWZmZXIgd2l0aCBubyBhZGRpdGlvbmFsCisgICAg
ICAgIElQQyBtZXNzYWdlcyByZXF1aXJlZC4KKworICAgICAgICAoV2ViS2l0OjpSZW1vdGVSZW5k
ZXJpbmdCYWNrZW5kUHJveHk6OmZsdXNoRGlzcGxheUxpc3RBbmRDb21taXQpOiBEZWxldGVkLgor
ICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQ
cm94eS5oOgorCiAyMDIwLTExLTA2ICBQZW5nIExpdSAgPHBlbmcubGl1NkBhcHBsZS5jb20+CiAK
ICAgICAgICAgUGlQIHJldHVybiB0byBlbGVtZW50IGZ1bGwgc2NyZWVuIGlzIG5vdCBzbW9vdGgg
b24gc29tZSB3ZWJzaXRlcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dy
YXBoaWNzL0Rpc3BsYXlMaXN0UmVhZGVySGFuZGxlLmNwcCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJv
Y2Vzcy9ncmFwaGljcy9EaXNwbGF5TGlzdFJlYWRlckhhbmRsZS5jcHAKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZTg2
MTljNDNmMzU0MTRjOWZiNjgzMGQ2ZjI2OGMwMjJiYjU5ZGY5NAotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9EaXNwbGF5TGlzdFJlYWRlckhhbmRs
ZS5jcHAKQEAgLTAsMCArMSw0NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwor
ICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAq
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIK
KyNpbmNsdWRlICJEaXNwbGF5TGlzdFJlYWRlckhhbmRsZS5oIgorCituYW1lc3BhY2UgV2ViS2l0
IHsKK3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOworCit2b2lkIERpc3BsYXlMaXN0UmVhZGVySGFu
ZGxlOjphZHZhbmNlKHNpemVfdCBhbW91bnQpCit7CisgICAgdW5yZWFkQnl0ZXNIYW5kbGUoKSAt
PSBhbW91bnQ7Cit9CisKK3N0ZDo6dW5pcXVlX3B0cjxEaXNwbGF5TGlzdDo6RGlzcGxheUxpc3Q+
IERpc3BsYXlMaXN0UmVhZGVySGFuZGxlOjpjcmVhdGVEaXNwbGF5TGlzdChzaXplX3Qgb2Zmc2V0
LCBzaXplX3QgY2FwYWNpdHksIERpc3BsYXlMaXN0OjpJdGVtQnVmZmVyUmVhZGluZ0NsaWVudCYg
Y2xpZW50KSBjb25zdAoreworICAgIGF1dG8gZGlzcGxheUxpc3QgPSBtYWtlVW5pcXVlPERpc3Bs
YXlMaXN0OjpEaXNwbGF5TGlzdD4oRGlzcGxheUxpc3Q6Okl0ZW1CdWZmZXJIYW5kbGVzIHt7IGlk
ZW50aWZpZXIoKSwgZGF0YSgpICsgb2Zmc2V0LCBjYXBhY2l0eSB9fSk7CisgICAgZGlzcGxheUxp
c3QtPnNldEl0ZW1CdWZmZXJDbGllbnQoJmNsaWVudCk7CisgICAgcmV0dXJuIGRpc3BsYXlMaXN0
OworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
R1BVUHJvY2Vzcy9ncmFwaGljcy9EaXNwbGF5TGlzdFJlYWRlckhhbmRsZS5oIGIvU291cmNlL1dl
YktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL0Rpc3BsYXlMaXN0UmVhZGVySGFuZGxlLmgKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNWYzYmI5OWUxYzY1YWU3YTZhNGIzYjI3NzI4MDA4NDMwNjEwOGM4OQotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9EaXNwbGF5TGlzdFJl
YWRlckhhbmRsZS5oCkBAIC0wLDAgKzEsNDUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFT
IElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVU
T1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
CisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YK
KyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UK
KworI2luY2x1ZGUgIlNoYXJlZERpc3BsYXlMaXN0SGFuZGxlLmgiCisjaW5jbHVkZSA8d3RmL0Zh
c3RNYWxsb2MuaD4KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIERpc3BsYXlMaXN0UmVh
ZGVySGFuZGxlIDogcHVibGljIFNoYXJlZERpc3BsYXlMaXN0SGFuZGxlIHsKKyAgICBXVEZfTUFL
RV9OT05DT1BZQUJMRShEaXNwbGF5TGlzdFJlYWRlckhhbmRsZSk7IFdURl9NQUtFX0ZBU1RfQUxM
T0NBVEVEOworcHVibGljOgorICAgIERpc3BsYXlMaXN0UmVhZGVySGFuZGxlKFdlYkNvcmU6OkRp
c3BsYXlMaXN0OjpJdGVtQnVmZmVySWRlbnRpZmllciBpZGVudGlmaWVyLCBSZWY8U2hhcmVkTWVt
b3J5PiYmIHNoYXJlZE1lbW9yeSkKKyAgICAgICAgOiBTaGFyZWREaXNwbGF5TGlzdEhhbmRsZShp
ZGVudGlmaWVyLCBXVEZNb3ZlKHNoYXJlZE1lbW9yeSkpCisgICAgeworICAgIH0KKworICAgIHZv
aWQgYWR2YW5jZShzaXplX3QgYW1vdW50KSBvdmVycmlkZTsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8
V2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRpc3BsYXlMaXN0PiBjcmVhdGVEaXNwbGF5TGlzdChzaXpl
X3Qgb2Zmc2V0LCBzaXplX3QgY2FwYWNpdHksIFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtQnVm
ZmVyUmVhZGluZ0NsaWVudCYpIGNvbnN0OworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlSW1hZ2VC
dWZmZXIuaCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVJbWFnZUJ1
ZmZlci5oCmluZGV4IGRhOTk1ODI0NmQ1MGE4NjE3Zjg4N2RmZTQwYjQ2NTExZTQ3NTM5MDEuLjEx
ZDJjZDE0MjZkNGIxOGUxOGUzMzZjOTU0YjUyNTU2ZWUzOGE2MjAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVJbWFnZUJ1ZmZlci5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVJbWFnZUJ1ZmZlci5oCkBAIC01
Miw2ICs1Miw3IEBAIHB1YmxpYzoKICAgICBSZW1vdGVJbWFnZUJ1ZmZlcihzdGQ6OnVuaXF1ZV9w
dHI8QmFja2VuZFR5cGU+JiYgYmFja2VuZCwgUmVtb3RlUmVuZGVyaW5nQmFja2VuZCYgcmVtb3Rl
UmVuZGVyaW5nQmFja2VuZCwgV2ViQ29yZTo6UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyIHJl
bmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcikKICAgICAgICAgOiBCYXNlQ29uY3JldGVJbWFnZUJ1
ZmZlcihXVEZNb3ZlKGJhY2tlbmQpLCByZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpCiAgICAg
ICAgICwgbV9yZW1vdGVSZW5kZXJpbmdCYWNrZW5kKHJlbW90ZVJlbmRlcmluZ0JhY2tlbmQpCisg
ICAgICAgICwgbV9yZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIocmVuZGVyaW5nUmVzb3VyY2VJ
ZGVudGlmaWVyKQogICAgIHsKICAgICAgICAgbV9yZW1vdGVSZW5kZXJpbmdCYWNrZW5kLmltYWdl
QnVmZmVyQmFja2VuZFdhc0NyZWF0ZWQobV9iYWNrZW5kLT5sb2dpY2FsU2l6ZSgpLCBtX2JhY2tl
bmQtPmJhY2tlbmRTaXplKCksIG1fYmFja2VuZC0+cmVzb2x1dGlvblNjYWxlKCksIG1fYmFja2Vu
ZC0+Y29sb3JTcGFjZSgpLCBtX2JhY2tlbmQtPmNyZWF0ZUltYWdlQnVmZmVyQmFja2VuZEhhbmRs
ZSgpLCByZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpOwogICAgIH0KQEAgLTgzLDEyICs4NCwx
NSBAQCBwcml2YXRlOgogICAgICAgICB9CiAKICAgICAgICAgaWYgKGl0ZW0uaXM8V2ViQ29yZTo6
RGlzcGxheUxpc3Q6OkZsdXNoQ29udGV4dD4oKSkgewotICAgICAgICAgICAgLy8gRklYTUU6IE5v
dCBpbXBsZW1lbnRlZCB5ZXQuCisgICAgICAgICAgICBCYXNlQ29uY3JldGVJbWFnZUJ1ZmZlcjo6
Zmx1c2hDb250ZXh0KCk7CisgICAgICAgICAgICBhdXRvIGlkZW50aWZpZXIgPSBpdGVtLmdldDxX
ZWJDb3JlOjpEaXNwbGF5TGlzdDo6Rmx1c2hDb250ZXh0PigpLmlkZW50aWZpZXIoKTsKKyAgICAg
ICAgICAgIG1fcmVtb3RlUmVuZGVyaW5nQmFja2VuZC5mbHVzaERpc3BsYXlMaXN0V2FzQ29tbWl0
dGVkKGlkZW50aWZpZXIsIG1fcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKTsKICAgICAgICAg
ICAgIHJldHVybiB0cnVlOwogICAgICAgICB9CiAKICAgICAgICAgaWYgKGl0ZW0uaXM8V2ViQ29y
ZTo6RGlzcGxheUxpc3Q6Ok1ldGFDb21tYW5kU3dpdGNoVG8+KCkpIHsKLSAgICAgICAgICAgIC8v
IEZJWE1FOiBOb3QgaW1wbGVtZW50ZWQgeWV0LgorICAgICAgICAgICAgYXV0byBuZXh0QnVmZmVy
SWRlbnRpZmllciA9IGl0ZW0uZ2V0PFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpNZXRhQ29tbWFuZFN3
aXRjaFRvPigpLmlkZW50aWZpZXIoKTsKKyAgICAgICAgICAgIG1fcmVtb3RlUmVuZGVyaW5nQmFj
a2VuZC5zZXROZXh0SXRlbUJ1ZmZlclRvUmVhZChuZXh0QnVmZmVySWRlbnRpZmllcik7CiAgICAg
ICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgfQogCkBAIC0yMDcsNiArMjExLDcgQEAgcHJp
dmF0ZToKICAgICB9CiAKICAgICBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kJiBtX3JlbW90ZVJlbmRl
cmluZ0JhY2tlbmQ7CisgICAgV2ViQ29yZTo6UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyIG1f
cmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVu
ZGVyaW5nQmFja2VuZC5jcHAgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVt
b3RlUmVuZGVyaW5nQmFja2VuZC5jcHAKaW5kZXggMWFhNzU0ODgyY2UwZThjOTkyNjQ3Y2NmODc1
MGI5MzQxY2M4NDBhMi4uM2ExOWY0OTlkZmNiMWU4MTQxMWRlZDczZDRmN2I0OGUwNmNhZDA3MiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRl
cmluZ0JhY2tlbmQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9S
ZW1vdGVSZW5kZXJpbmdCYWNrZW5kLmNwcApAQCAtMjgsNiArMjgsNyBAQAogCiAjaWYgRU5BQkxF
KEdQVV9QUk9DRVNTKQogCisjaW5jbHVkZSAiRGlzcGxheUxpc3RSZWFkZXJIYW5kbGUuaCIKICNp
bmNsdWRlICJHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1S
ZW1vdGVJbWFnZUJ1ZmZlci5oIgogI2luY2x1ZGUgIlJlbW90ZVJlbmRlcmluZ0JhY2tlbmRNZXNz
YWdlcy5oIgpAQCAtMTI0LDQ1ICsxMjUsNzMgQEAgdm9pZCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5k
OjpjcmVhdGVJbWFnZUJ1ZmZlcihjb25zdCBGbG9hdFNpemUmIGxvZ2ljYWxTaXplLCBSZW4KICAg
ICBtX3JlbW90ZVJlc291cmNlQ2FjaGUuY2FjaGVJbWFnZUJ1ZmZlcihtYWtlUmVmKCppbWFnZUJ1
ZmZlcikpOwogfQogCi12b2lkIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OmFwcGx5RGlzcGxheUxp
c3QoY29uc3QgU2hhcmVkRGlzcGxheUxpc3RIYW5kbGUmIGhhbmRsZSwgUmVuZGVyaW5nUmVzb3Vy
Y2VJZGVudGlmaWVyIHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciwgU2hvdWxkRmx1c2hDb250
ZXh0IGZsdXNoQ29udGV4dCkKK3ZvaWQgUmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6d2FrZVVwQW5k
UHJvY2Vzc0Rpc3BsYXlMaXN0KFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtQnVmZmVySWRlbnRp
ZmllciBpbml0aWFsSWRlbnRpZmllciwgdWludDY0X3QgaW5pdGlhbE9mZnNldCwgUmVuZGVyaW5n
UmVzb3VyY2VJZGVudGlmaWVyIHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcikKIHsKLSAgICBh
dXRvIGRpc3BsYXlMaXN0ID0gaGFuZGxlLmNyZWF0ZURpc3BsYXlMaXN0KFsmXSAoV2ViQ29yZTo6
RGlzcGxheUxpc3Q6Okl0ZW1CdWZmZXJJZGVudGlmaWVyIGlkZW50aWZpZXIpIC0+IHVpbnQ4X3Qq
IHsKLSAgICAgICAgaWYgKGF1dG8gc2hhcmVkTWVtb3J5ID0gbV9zaGFyZWRJdGVtQnVmZmVycy50
YWtlKGlkZW50aWZpZXIpKQotICAgICAgICAgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8dWlu
dDhfdCo+KHNoYXJlZE1lbW9yeS0+ZGF0YSgpKTsKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0g
ICAgfSk7Ci0KLSAgICBpZiAoIWRpc3BsYXlMaXN0KSB7CisgICAgYXV0byBpbWFnZUJ1ZmZlciA9
IG1fcmVtb3RlUmVzb3VyY2VDYWNoZS5jYWNoZWRJbWFnZUJ1ZmZlcihyZW5kZXJpbmdSZXNvdXJj
ZUlkZW50aWZpZXIpOworICAgIGlmICghaW1hZ2VCdWZmZXIpIHsKICAgICAgICAgLy8gRklYTUU6
IEFkZCBhIG1lc3NhZ2UgY2hlY2sgdG8gdGVybWluYXRlIHRoZSB3ZWIgcHJvY2Vzcy4KICAgICAg
ICAgcmV0dXJuOwogICAgIH0KIAotICAgIGF1dG8gaW1hZ2VCdWZmZXIgPSBtX3JlbW90ZVJlc291
cmNlQ2FjaGUuY2FjaGVkSW1hZ2VCdWZmZXIocmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKTsK
LSAgICBpZiAoIWltYWdlQnVmZmVyKSB7CisgICAgYXV0byogc2hhcmVkSGFuZGxlID0gbV9zaGFy
ZWREaXNwbGF5TGlzdEhhbmRsZXMuZ2V0KGluaXRpYWxJZGVudGlmaWVyKTsKKyAgICBpZiAoIXNo
YXJlZEhhbmRsZSkgewogICAgICAgICAvLyBGSVhNRTogQWRkIGEgbWVzc2FnZSBjaGVjayB0byB0
ZXJtaW5hdGUgdGhlIHdlYiBwcm9jZXNzLgogICAgICAgICByZXR1cm47CiAgICAgfQogCisgICAg
RGlzcGxheUxpc3Q6Okl0ZW1CdWZmZXJSZWFkaW5nQ2xpZW50KiBpdGVtQnVmZmVyQ2xpZW50Owog
ICAgIGlmIChpbWFnZUJ1ZmZlci0+aXNBY2NlbGVyYXRlZCgpKQotICAgICAgICBkaXNwbGF5TGlz
dC0+c2V0SXRlbUJ1ZmZlckNsaWVudChzdGF0aWNfY2FzdDxBY2NlbGVyYXRlZFJlbW90ZUltYWdl
QnVmZmVyKj4oaW1hZ2VCdWZmZXIpKTsKKyAgICAgICAgaXRlbUJ1ZmZlckNsaWVudCA9IHN0YXRp
Y19jYXN0PEFjY2VsZXJhdGVkUmVtb3RlSW1hZ2VCdWZmZXIqPihpbWFnZUJ1ZmZlcik7CiAgICAg
ZWxzZQotICAgICAgICBkaXNwbGF5TGlzdC0+c2V0SXRlbUJ1ZmZlckNsaWVudChzdGF0aWNfY2Fz
dDxVbmFjY2VsZXJhdGVkUmVtb3RlSW1hZ2VCdWZmZXIqPihpbWFnZUJ1ZmZlcikpOworICAgICAg
ICBpdGVtQnVmZmVyQ2xpZW50ID0gc3RhdGljX2Nhc3Q8VW5hY2NlbGVyYXRlZFJlbW90ZUltYWdl
QnVmZmVyKj4oaW1hZ2VCdWZmZXIpOwogCi0gICAgaW1hZ2VCdWZmZXItPmZsdXNoRGlzcGxheUxp
c3QoKmRpc3BsYXlMaXN0KTsKKyAgICBzaXplX3Qgb2Zmc2V0ID0gaW5pdGlhbE9mZnNldDsKKyAg
ICBzaXplX3Qgc2l6ZVRvUmVhZCA9IDA7CiAKLSAgICBpZiAoZmx1c2hDb250ZXh0ID09IFNob3Vs
ZEZsdXNoQ29udGV4dDo6WWVzKQotICAgICAgICBpbWFnZUJ1ZmZlci0+Zmx1c2hDb250ZXh0KCk7
Ci19CisgICAgeworICAgICAgICBTaGFyZWREaXNwbGF5TGlzdEhhbmRsZTo6TG9jayBsb2NrZXIg
eyAqc2hhcmVkSGFuZGxlIH07CisgICAgICAgIHNpemVUb1JlYWQgPSBzaGFyZWRIYW5kbGUtPnVu
cmVhZEJ5dGVzKCk7CisgICAgfQogCi12b2lkIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OmZsdXNo
RGlzcGxheUxpc3QoY29uc3QgU2hhcmVkRGlzcGxheUxpc3RIYW5kbGUmIGhhbmRsZSwgUmVuZGVy
aW5nUmVzb3VyY2VJZGVudGlmaWVyIHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcikKLXsKLSAg
ICBhcHBseURpc3BsYXlMaXN0KGhhbmRsZSwgcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyLCBT
aG91bGRGbHVzaENvbnRleHQ6Ok5vKTsKKyAgICB3aGlsZSAoc2l6ZVRvUmVhZCkgeworICAgICAg
ICBpbWFnZUJ1ZmZlci0+Zmx1c2hEaXNwbGF5TGlzdCgqc2hhcmVkSGFuZGxlLT5jcmVhdGVEaXNw
bGF5TGlzdChvZmZzZXQsIHNpemVUb1JlYWQsICppdGVtQnVmZmVyQ2xpZW50KSk7CisKKyAgICAg
ICAgb2Zmc2V0ICs9IHNpemVUb1JlYWQ7CisgICAgICAgIHsKKyAgICAgICAgICAgIFNoYXJlZERp
c3BsYXlMaXN0SGFuZGxlOjpMb2NrIGxvY2tlciB7ICpzaGFyZWRIYW5kbGUgfTsKKyAgICAgICAg
ICAgIHNoYXJlZEhhbmRsZS0+YWR2YW5jZShzaXplVG9SZWFkKTsKKyAgICAgICAgICAgIHNpemVU
b1JlYWQgPSBzaGFyZWRIYW5kbGUtPnVucmVhZEJ5dGVzKCk7CisgICAgICAgIH0KKyAgICAgICAg
aWYgKHNpemVUb1JlYWQpCisgICAgICAgICAgICBjb250aW51ZTsKKworICAgICAgICBhdXRvIG5l
eHRJZGVudGlmaWVyID0gc3RkOjpleGNoYW5nZShtX25leHRJdGVtQnVmZmVyVG9SZWFkLCB7IH0p
OworICAgICAgICBpZiAoIW5leHRJZGVudGlmaWVyKQorICAgICAgICAgICAgYnJlYWs7CisKKyAg
ICAgICAgc2hhcmVkSGFuZGxlID0gbV9zaGFyZWREaXNwbGF5TGlzdEhhbmRsZXMuZ2V0KG5leHRJ
ZGVudGlmaWVyKTsKKyAgICAgICAgaWYgKCFzaGFyZWRIYW5kbGUpIHsKKyAgICAgICAgICAgIG1f
bmV4dEl0ZW1CdWZmZXJUb1JlYWQgPSBuZXh0SWRlbnRpZmllcjsKKyAgICAgICAgICAgIGJyZWFr
OworICAgICAgICB9CisKKyAgICAgICAgb2Zmc2V0ID0gU2hhcmVkRGlzcGxheUxpc3RIYW5kbGU6
OnJlc2VydmVkQ2FwYWNpdHlBdFN0YXJ0OworCisgICAgICAgIGRvIHsKKyAgICAgICAgICAgIFNo
YXJlZERpc3BsYXlMaXN0SGFuZGxlOjpMb2NrIG5leHRCdWZmZXJMb2NrZXIgeyAqc2hhcmVkSGFu
ZGxlIH07CisgICAgICAgICAgICBzaXplVG9SZWFkID0gc2hhcmVkSGFuZGxlLT51bnJlYWRCeXRl
cygpOworICAgICAgICAgICAgc3RkOjp0aGlzX3RocmVhZDo6eWllbGQoKTsKKyAgICAgICAgfSB3
aGlsZSAoIXNpemVUb1JlYWQpOworICAgIH0KIH0KIAotdm9pZCBSZW1vdGVSZW5kZXJpbmdCYWNr
ZW5kOjpmbHVzaERpc3BsYXlMaXN0QW5kQ29tbWl0KGNvbnN0IFNoYXJlZERpc3BsYXlMaXN0SGFu
ZGxlJiBoYW5kbGUsIERpc3BsYXlMaXN0OjpGbHVzaElkZW50aWZpZXIgZmx1c2hJZGVudGlmaWVy
LCBSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVy
KQordm9pZCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpzZXROZXh0SXRlbUJ1ZmZlclRvUmVhZChX
ZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbUJ1ZmZlcklkZW50aWZpZXIgaWRlbnRpZmllcikKIHsK
LSAgICBhcHBseURpc3BsYXlMaXN0KGhhbmRsZSwgcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVy
LCBTaG91bGRGbHVzaENvbnRleHQ6Olllcyk7Ci0gICAgZmx1c2hEaXNwbGF5TGlzdFdhc0NvbW1p
dHRlZChmbHVzaElkZW50aWZpZXIsIHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcik7CisgICAg
aWYgKFVOTElLRUxZKG1fbmV4dEl0ZW1CdWZmZXJUb1JlYWQpKSB7CisgICAgICAgIC8vIEZJWE1F
OiBBZGQgYSBtZXNzYWdlIGNoZWNrIHRvIHRlcm1pbmF0ZSB0aGUgd2ViIHByb2Nlc3MuCisgICAg
ICAgIHJldHVybjsKKyAgICB9CisgICAgbV9uZXh0SXRlbUJ1ZmZlclRvUmVhZCA9IGlkZW50aWZp
ZXI7CiB9CiAKIHZvaWQgUmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6Z2V0SW1hZ2VEYXRhKEFscGhh
UHJlbXVsdGlwbGljYXRpb24gb3V0cHV0Rm9ybWF0LCBJbnRSZWN0IHNyY1JlY3QsIFJlbmRlcmlu
Z1Jlc291cmNlSWRlbnRpZmllciByZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIsIENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoSVBDOjpJbWFnZURhdGFSZWZlcmVuY2UmJik+JiYgY29tcGxldGlvbkhh
bmRsZXIpCkBAIC0xNzgsMTAgKzIwNywxNSBAQCB2b2lkIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6
OnJlbGVhc2VSZW1vdGVSZXNvdXJjZShSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgcgogICAg
IG1fcmVtb3RlUmVzb3VyY2VDYWNoZS5yZWxlYXNlUmVtb3RlUmVzb3VyY2UocmVuZGVyaW5nUmVz
b3VyY2VJZGVudGlmaWVyKTsKIH0KIAotdm9pZCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpkaWRD
cmVhdGVTaGFyZWRJdGVtRGF0YShEaXNwbGF5TGlzdDo6SXRlbUJ1ZmZlcklkZW50aWZpZXIgaWRl
bnRpZmllciwgY29uc3QgU2hhcmVkTWVtb3J5OjpJUENIYW5kbGUmIGhhbmRsZSkKK3ZvaWQgUmVt
b3RlUmVuZGVyaW5nQmFja2VuZDo6ZGlkQ3JlYXRlU2hhcmVkRGlzcGxheUxpc3RIYW5kbGUoRGlz
cGxheUxpc3Q6Okl0ZW1CdWZmZXJJZGVudGlmaWVyIGlkZW50aWZpZXIsIGNvbnN0IFNoYXJlZE1l
bW9yeTo6SVBDSGFuZGxlJiBoYW5kbGUsIFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciByZW1v
dGVSZXNvdXJjZUlkZW50aWZpZXIpCiB7Ci0gICAgaWYgKGF1dG8gc2hhcmVkTWVtb3J5ID0gU2hh
cmVkTWVtb3J5OjptYXAoaGFuZGxlLmhhbmRsZSwgU2hhcmVkTWVtb3J5OjpQcm90ZWN0aW9uOjpS
ZWFkT25seSkpCi0gICAgICAgIG1fc2hhcmVkSXRlbUJ1ZmZlcnMuc2V0KGlkZW50aWZpZXIsIFdU
Rk1vdmUoc2hhcmVkTWVtb3J5KSk7CisgICAgaWYgKGF1dG8gc2hhcmVkTWVtb3J5ID0gU2hhcmVk
TWVtb3J5OjptYXAoaGFuZGxlLmhhbmRsZSwgU2hhcmVkTWVtb3J5OjpQcm90ZWN0aW9uOjpSZWFk
V3JpdGUpKQorICAgICAgICBtX3NoYXJlZERpc3BsYXlMaXN0SGFuZGxlcy5zZXQoaWRlbnRpZmll
ciwgbWFrZVVuaXF1ZTxEaXNwbGF5TGlzdFJlYWRlckhhbmRsZT4oaWRlbnRpZmllciwgc2hhcmVk
TWVtb3J5LnJlbGVhc2VOb25OdWxsKCkpKTsKKworICAgIGlmIChtX25leHRJdGVtQnVmZmVyVG9S
ZWFkID09IGlkZW50aWZpZXIpIHsKKyAgICAgICAgbV9uZXh0SXRlbUJ1ZmZlclRvUmVhZCA9IHsg
fTsKKyAgICAgICAgd2FrZVVwQW5kUHJvY2Vzc0Rpc3BsYXlMaXN0KGlkZW50aWZpZXIsIFNoYXJl
ZERpc3BsYXlMaXN0SGFuZGxlOjpyZXNlcnZlZENhcGFjaXR5QXRTdGFydCwgcmVtb3RlUmVzb3Vy
Y2VJZGVudGlmaWVyKTsKKyAgICB9CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0Jh
Y2tlbmQuaCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5kZXJp
bmdCYWNrZW5kLmgKaW5kZXggZmVmNDY5ZmMzMjY4MzM4MmI1NGQ3Nzg0YWVhYjY5ZWNlODZlOTkw
OC4uMDU1ZGE4NjMxYjM2MTMzZmYxZTRjNmI2YjU2ZDNmMTJlYTQzNzc3MyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQu
aAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5n
QmFja2VuZC5oCkBAIC0zNCw3ICszNCw2IEBACiAjaW5jbHVkZSAiTWVzc2FnZVNlbmRlci5oIgog
I2luY2x1ZGUgIlJlbW90ZVJlc291cmNlQ2FjaGUuaCIKICNpbmNsdWRlICJSZW5kZXJpbmdCYWNr
ZW5kSWRlbnRpZmllci5oIgotI2luY2x1ZGUgIlNoYXJlZERpc3BsYXlMaXN0SGFuZGxlLmgiCiAj
aW5jbHVkZSA8V2ViQ29yZS9Db2xvclNwYWNlLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9EaXNwbGF5
TGlzdC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRGlzcGxheUxpc3RJdGVtcy5oPgpAQCAtNTIsNiAr
NTEsNyBAQCBlbnVtIGNsYXNzIFJlbmRlcmluZ01vZGUgOiBib29sOwogCiBuYW1lc3BhY2UgV2Vi
S2l0IHsKIAorY2xhc3MgRGlzcGxheUxpc3RSZWFkZXJIYW5kbGU7CiBjbGFzcyBHUFVDb25uZWN0
aW9uVG9XZWJQcm9jZXNzOwogCiBjbGFzcyBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kCkBAIC03MSwx
MiArNzEsMTEgQEAgcHVibGljOgogICAgIHZvaWQgaW1hZ2VCdWZmZXJCYWNrZW5kV2FzQ3JlYXRl
ZChjb25zdCBXZWJDb3JlOjpGbG9hdFNpemUmIGxvZ2ljYWxTaXplLCBjb25zdCBXZWJDb3JlOjpJ
bnRTaXplJiBiYWNrZW5kU2l6ZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBXZWJDb3JlOjpDb2xv
clNwYWNlLCBJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGUsIFdlYkNvcmU6OlJlbmRlcmluZ1Jlc291
cmNlSWRlbnRpZmllcik7CiAgICAgdm9pZCBmbHVzaERpc3BsYXlMaXN0V2FzQ29tbWl0dGVkKFdl
YkNvcmU6OkRpc3BsYXlMaXN0OjpGbHVzaElkZW50aWZpZXIsIFdlYkNvcmU6OlJlbmRlcmluZ1Jl
c291cmNlSWRlbnRpZmllcik7CiAKKyAgICB2b2lkIHNldE5leHRJdGVtQnVmZmVyVG9SZWFkKFdl
YkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtQnVmZmVySWRlbnRpZmllcik7CisKIHByaXZhdGU6CiAg
ICAgUmVtb3RlUmVuZGVyaW5nQmFja2VuZChHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzJiwgUmVu
ZGVyaW5nQmFja2VuZElkZW50aWZpZXIpOwogCi0gICAgZW51bSBjbGFzcyBTaG91bGRGbHVzaENv
bnRleHQgOiBib29sIHsgTm8sIFllcyB9OwotICAgIHZvaWQgYXBwbHlEaXNwbGF5TGlzdChjb25z
dCBTaGFyZWREaXNwbGF5TGlzdEhhbmRsZSYsIFdlYkNvcmU6OlJlbmRlcmluZ1Jlc291cmNlSWRl
bnRpZmllciwgU2hvdWxkRmx1c2hDb250ZXh0KTsKLQogICAgIC8vIElQQzo6TWVzc2FnZVNlbmRl
ci4KICAgICBJUEM6OkNvbm5lY3Rpb24qIG1lc3NhZ2VTZW5kZXJDb25uZWN0aW9uKCkgY29uc3Qg
b3ZlcnJpZGU7CiAgICAgdWludDY0X3QgbWVzc2FnZVNlbmRlckRlc3RpbmF0aW9uSUQoKSBjb25z
dCBvdmVycmlkZTsKQEAgLTg3LDE2ICs4NiwxNiBAQCBwcml2YXRlOgogCiAgICAgLy8gTWVzc2Fn
ZXMgdG8gYmUgcmVjZWl2ZWQuCiAgICAgdm9pZCBjcmVhdGVJbWFnZUJ1ZmZlcihjb25zdCBXZWJD
b3JlOjpGbG9hdFNpemUmIGxvZ2ljYWxTaXplLCBXZWJDb3JlOjpSZW5kZXJpbmdNb2RlLCBmbG9h
dCByZXNvbHV0aW9uU2NhbGUsIFdlYkNvcmU6OkNvbG9yU3BhY2UsIFdlYkNvcmU6OlJlbmRlcmlu
Z1Jlc291cmNlSWRlbnRpZmllcik7Ci0gICAgdm9pZCBmbHVzaERpc3BsYXlMaXN0KGNvbnN0IFNo
YXJlZERpc3BsYXlMaXN0SGFuZGxlJiwgV2ViQ29yZTo6UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlm
aWVyKTsKLSAgICB2b2lkIGZsdXNoRGlzcGxheUxpc3RBbmRDb21taXQoY29uc3QgU2hhcmVkRGlz
cGxheUxpc3RIYW5kbGUmLCBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6Rmx1c2hJZGVudGlmaWVyLCBX
ZWJDb3JlOjpSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpOworICAgIHZvaWQgd2FrZVVwQW5k
UHJvY2Vzc0Rpc3BsYXlMaXN0KFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtQnVmZmVySWRlbnRp
ZmllciBpbml0aWFsSWRlbnRpZmllciwgdWludDY0X3QgaW5pdGlhbE9mZnNldCwgV2ViQ29yZTo6
UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKTsKICAgICB2b2lkIGdldEltYWdlRGF0YShXZWJD
b3JlOjpBbHBoYVByZW11bHRpcGxpY2F0aW9uIG91dHB1dEZvcm1hdCwgV2ViQ29yZTo6SW50UmVj
dCBzcmNSZWN0LCBXZWJDb3JlOjpSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIsIENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoSVBDOjpJbWFnZURhdGFSZWZlcmVuY2UmJik+JiYpOwogICAgIHZvaWQg
cmVsZWFzZVJlbW90ZVJlc291cmNlKFdlYkNvcmU6OlJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmll
cik7Ci0gICAgdm9pZCBkaWRDcmVhdGVTaGFyZWRJdGVtRGF0YShXZWJDb3JlOjpEaXNwbGF5TGlz
dDo6SXRlbUJ1ZmZlcklkZW50aWZpZXIsIGNvbnN0IFNoYXJlZE1lbW9yeTo6SVBDSGFuZGxlJik7
CisgICAgdm9pZCBkaWRDcmVhdGVTaGFyZWREaXNwbGF5TGlzdEhhbmRsZShXZWJDb3JlOjpEaXNw
bGF5TGlzdDo6SXRlbUJ1ZmZlcklkZW50aWZpZXIsIGNvbnN0IFNoYXJlZE1lbW9yeTo6SVBDSGFu
ZGxlJiwgV2ViQ29yZTo6UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKTsKIAogICAgIFJlbW90
ZVJlc291cmNlQ2FjaGUgbV9yZW1vdGVSZXNvdXJjZUNhY2hlOwogICAgIFdlYWtQdHI8R1BVQ29u
bmVjdGlvblRvV2ViUHJvY2Vzcz4gbV9ncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzOwogICAgIFJl
bmRlcmluZ0JhY2tlbmRJZGVudGlmaWVyIG1fcmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXI7Ci0g
ICAgSGFzaE1hcDxXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbUJ1ZmZlcklkZW50aWZpZXIsIFJl
ZlB0cjxTaGFyZWRNZW1vcnk+PiBtX3NoYXJlZEl0ZW1CdWZmZXJzOworICAgIEhhc2hNYXA8V2Vi
Q29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1CdWZmZXJJZGVudGlmaWVyLCBzdGQ6OnVuaXF1ZV9wdHI8
RGlzcGxheUxpc3RSZWFkZXJIYW5kbGU+PiBtX3NoYXJlZERpc3BsYXlMaXN0SGFuZGxlczsKKyAg
ICBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbUJ1ZmZlcklkZW50aWZpZXIgbV9uZXh0SXRlbUJ1
ZmZlclRvUmVhZDsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQubWVz
c2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVy
aW5nQmFja2VuZC5tZXNzYWdlcy5pbgppbmRleCAxODc4NWFkYzBmZDFiNjIwM2U1MTE0MmE5NDY0
Njc1ZmJhNGExNzkzLi5jMzliZTI0ZTdkY2ZlMjMyNWZlNDJiYTlhMzg3MzRmMmUyZjU4ZWYwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVy
aW5nQmFja2VuZC5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3Jh
cGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5tZXNzYWdlcy5pbgpAQCAtMjQsMTAgKzI0LDkg
QEAKIAogbWVzc2FnZXMgLT4gUmVtb3RlUmVuZGVyaW5nQmFja2VuZCBOb3RSZWZDb3VudGVkIHsK
ICAgICBDcmVhdGVJbWFnZUJ1ZmZlcihXZWJDb3JlOjpGbG9hdFNpemUgbG9naWNhbFNpemUsIFdl
YkNvcmU6OlJlbmRlcmluZ01vZGUgcmVuZGVyaW5nTW9kZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxl
LCBXZWJDb3JlOjpDb2xvclNwYWNlIGNvbG9yU3BhY2UsIFdlYkNvcmU6OlJlbmRlcmluZ1Jlc291
cmNlSWRlbnRpZmllciByZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpCi0gICAgRmx1c2hEaXNw
bGF5TGlzdChXZWJLaXQ6OlNoYXJlZERpc3BsYXlMaXN0SGFuZGxlIGRpc3BsYXlMaXN0LCBXZWJD
b3JlOjpSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlm
aWVyKQotICAgIEZsdXNoRGlzcGxheUxpc3RBbmRDb21taXQoV2ViS2l0OjpTaGFyZWREaXNwbGF5
TGlzdEhhbmRsZSBkaXNwbGF5TGlzdCwgV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkZsdXNoSWRlbnRp
ZmllciBmbHVzaElkZW50aWZpZXIsIFdlYkNvcmU6OlJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmll
ciByZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpCisgICAgV2FrZVVwQW5kUHJvY2Vzc0Rpc3Bs
YXlMaXN0KFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtQnVmZmVySWRlbnRpZmllciBpbml0aWFs
SWRlbnRpZmllciwgdWludDY0X3QgaW5pdGlhbE9mZnNldCwgV2ViQ29yZTo6UmVuZGVyaW5nUmVz
b3VyY2VJZGVudGlmaWVyIHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcikKICAgICBHZXRJbWFn
ZURhdGEoZW51bTp1aW50OF90IFdlYkNvcmU6OkFscGhhUHJlbXVsdGlwbGljYXRpb24gb3V0cHV0
Rm9ybWF0LCBXZWJDb3JlOjpJbnRSZWN0IHNyY1JlY3QsIFdlYkNvcmU6OlJlbmRlcmluZ1Jlc291
cmNlSWRlbnRpZmllciByZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpIC0+IChJUEM6OkltYWdl
RGF0YVJlZmVyZW5jZSBpbWFnZURhdGEpIFN5bmNocm9ub3VzCi0gICAgRGlkQ3JlYXRlU2hhcmVk
SXRlbURhdGEoV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1CdWZmZXJJZGVudGlmaWVyIGlkZW50
aWZpZXIsIFdlYktpdDo6U2hhcmVkTWVtb3J5OjpJUENIYW5kbGUgaGFuZGxlKQorICAgIERpZENy
ZWF0ZVNoYXJlZERpc3BsYXlMaXN0SGFuZGxlKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtQnVm
ZmVySWRlbnRpZmllciBpZGVudGlmaWVyLCBXZWJLaXQ6OlNoYXJlZE1lbW9yeTo6SVBDSGFuZGxl
IGhhbmRsZSwgV2ViQ29yZTo6UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyIHJlbW90ZVJlc291
cmNlSWRlbnRpZmllcikKICAgICBSZWxlYXNlUmVtb3RlUmVzb3VyY2UoV2ViQ29yZTo6UmVuZGVy
aW5nUmVzb3VyY2VJZGVudGlmaWVyIHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcikKIH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvU2hhcmVkRGlzcGxheUxpc3RIYW5kbGUu
Y3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvU2hhcmVkRGlzcGxheUxpc3RIYW5kbGUuY3BwCmRl
bGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxYWE3NGQ2MTVhYmQzZjRhMzE4NjI1MmZmMGZk
Y2I4NzFlNzBmYTUwLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0t
LSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1NoYXJlZERpc3BsYXlMaXN0SGFuZGxlLmNwcAorKysg
L2Rldi9udWxsCkBAIC0xLDUzICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElT
JycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JT
Ci0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0g
KiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQg
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAq
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmln
LmgiCi0jaW5jbHVkZSAiU2hhcmVkRGlzcGxheUxpc3RIYW5kbGUuaCIKLQotbmFtZXNwYWNlIFdl
YktpdCB7Ci11c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKLQotU2hhcmVkRGlzcGxheUxpc3RIYW5k
bGU6OlNoYXJlZERpc3BsYXlMaXN0SGFuZGxlKGNvbnN0IERpc3BsYXlMaXN0OjpEaXNwbGF5TGlz
dCYgZGlzcGxheUxpc3QpCi17Ci0gICAgZGlzcGxheUxpc3QuZm9yRWFjaEl0ZW1CdWZmZXIoWyZd
IChhdXRvJiBoYW5kbGUpIHsKLSAgICAgICAgbV9idWZmZXJzLmFwcGVuZCh7IGhhbmRsZS5pZGVu
dGlmaWVyLCBoYW5kbGUuY2FwYWNpdHkgfSk7Ci0gICAgfSk7Ci19Ci0KLXN0ZDo6dW5pcXVlX3B0
cjxEaXNwbGF5TGlzdDo6RGlzcGxheUxpc3Q+IFNoYXJlZERpc3BsYXlMaXN0SGFuZGxlOjpjcmVh
dGVEaXNwbGF5TGlzdChJdGVtQnVmZmVyUHJvdmlkZXImJiBidWZmZXJQcm92aWRlcikgY29uc3QK
LXsKLSAgICBEaXNwbGF5TGlzdDo6SXRlbUJ1ZmZlckhhbmRsZXMgaGFuZGxlczsKLSAgICBoYW5k
bGVzLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkobV9idWZmZXJzLnNpemUoKSk7Ci0gICAgZm9yIChh
dXRvJiBbaWRlbnRpZmllciwgY2FwYWNpdHldIDogbV9idWZmZXJzKSB7Ci0gICAgICAgIGF1dG8q
IGRhdGEgPSBidWZmZXJQcm92aWRlcihpZGVudGlmaWVyKTsKLSAgICAgICAgaWYgKCFkYXRhKQot
ICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0KLSAgICAgICAgaGFuZGxlcy51bmNoZWNrZWRB
cHBlbmQoeyBpZGVudGlmaWVyLCBkYXRhLCBjYXBhY2l0eSB9KTsKLSAgICB9Ci0gICAgcmV0dXJu
IG1ha2VVbmlxdWU8RGlzcGxheUxpc3Q6OkRpc3BsYXlMaXN0PihXVEZNb3ZlKGhhbmRsZXMpKTsK
LX0KLQotfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1No
YXJlZC9TaGFyZWREaXNwbGF5TGlzdEhhbmRsZS5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQvU2hh
cmVkRGlzcGxheUxpc3RIYW5kbGUuaAppbmRleCBkMTc1ZTExNGYyM2JjOGZiOGU1N2NkOTBmNjRh
MzNiZTI2MmUxZjMxLi40NjkyYTFlYWQxYWViN2VjOTIxZThhNWQ1NTc4MDNhOTFiY2VmZWMzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9TaGFyZWREaXNwbGF5TGlzdEhhbmRsZS5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1NoYXJlZERpc3BsYXlMaXN0SGFuZGxlLmgKQEAg
LTI1LDQyICsyNSw2MyBAQAogCiAjcHJhZ21hIG9uY2UKIAorI2luY2x1ZGUgIlNoYXJlZE1lbW9y
eS5oIgogI2luY2x1ZGUgPFdlYkNvcmUvRGlzcGxheUxpc3QuaD4KKyNpbmNsdWRlIDxhdG9taWM+
CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCiBjbGFzcyBTaGFyZWREaXNwbGF5TGlzdEhhbmRsZSB7
CiBwdWJsaWM6Ci0gICAgdXNpbmcgSXRlbUJ1ZmZlclByb3ZpZGVyID0gRnVuY3Rpb248dWludDhf
dCooV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1CdWZmZXJJZGVudGlmaWVyKT47CisgICAgdmly
dHVhbCB+U2hhcmVkRGlzcGxheUxpc3RIYW5kbGUoKSA9IGRlZmF1bHQ7CiAKLSAgICBTaGFyZWRE
aXNwbGF5TGlzdEhhbmRsZShjb25zdCBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RGlzcGxheUxpc3Qm
KTsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRpc3BsYXlMaXN0
PiBjcmVhdGVEaXNwbGF5TGlzdChJdGVtQnVmZmVyUHJvdmlkZXImJikgY29uc3Q7CisgICAgc3Rh
dGljIGNvbnN0ZXhwciBhdXRvIHJlc2VydmVkQ2FwYWNpdHlBdFN0YXJ0ID0gc2l6ZW9mKGJvb2wp
ICsgc2l6ZW9mKHNpemVfdCk7CiAKLSAgICB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPiB2b2lkIGVu
Y29kZShFbmNvZGVyJikgY29uc3Q7Ci0gICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGlj
IE9wdGlvbmFsPFNoYXJlZERpc3BsYXlMaXN0SGFuZGxlPiBkZWNvZGUoRGVjb2RlciYpOworICAg
IGNvbnN0IFNoYXJlZE1lbW9yeSYgc2hhcmVkTWVtb3J5KCkgY29uc3QgeyByZXR1cm4gbV9zaGFy
ZWRNZW1vcnkuZ2V0KCk7IH0KKyAgICBTaGFyZWRNZW1vcnkmIHNoYXJlZE1lbW9yeSgpIHsgcmV0
dXJuIG1fc2hhcmVkTWVtb3J5LmdldCgpOyB9CisgICAgc2l6ZV90IHVucmVhZEJ5dGVzKCkgY29u
c3QgeyByZXR1cm4gKnJlaW50ZXJwcmV0X2Nhc3Q8c2l6ZV90Kj4oZGF0YSgpICsgc2l6ZW9mKGJv
b2wpKTsgfQorICAgIHVpbnQ4X3QqIGRhdGEoKSBjb25zdCB7IHJldHVybiByZWludGVycHJldF9j
YXN0PHVpbnQ4X3QqPihzaGFyZWRNZW1vcnkoKS5kYXRhKCkpOyB9CisgICAgV2ViQ29yZTo6RGlz
cGxheUxpc3Q6Okl0ZW1CdWZmZXJJZGVudGlmaWVyIGlkZW50aWZpZXIoKSBjb25zdCB7IHJldHVy
biBtX2lkZW50aWZpZXI7IH0KIAotcHJpdmF0ZToKLSAgICBTaGFyZWREaXNwbGF5TGlzdEhhbmRs
ZShWZWN0b3I8c3RkOjpwYWlyPFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtQnVmZmVySWRlbnRp
Zmllciwgc2l6ZV90Pj4mJiBidWZmZXJzKQotICAgICAgICA6IG1fYnVmZmVycyhXVEZNb3ZlKGJ1
ZmZlcnMpKQorICAgIHZpcnR1YWwgdm9pZCBhZHZhbmNlKHNpemVfdCBhbW91bnQpID0gMDsKKwor
ICAgIGNsYXNzIExvY2sgeworICAgIHB1YmxpYzoKKyAgICAgICAgTG9jayhTaGFyZWREaXNwbGF5
TGlzdEhhbmRsZSYgaGFuZGxlKQorICAgICAgICAgICAgOiBtX2hhbmRsZShoYW5kbGUpCisgICAg
ICAgIHsKKyAgICAgICAgICAgIGF1dG8mIGF0b21pY1ZhbHVlID0gbV9oYW5kbGUuYXRvbWljTG9j
a1ZhbHVlKCk7CisgICAgICAgICAgICB3aGlsZSAodHJ1ZSkgeworICAgICAgICAgICAgICAgIHN0
ZDo6dGhpc190aHJlYWQ6OnlpZWxkKCk7CisgICAgICAgICAgICAgICAgYm9vbCB1bmxvY2tlZCA9
IGZhbHNlOworICAgICAgICAgICAgICAgIGlmIChhdG9taWNWYWx1ZS5jb21wYXJlX2V4Y2hhbmdl
X3dlYWsodW5sb2NrZWQsIHRydWUpKQorICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAg
ICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIH5Mb2NrKCkKKyAgICAgICAgeworICAgICAg
ICAgICAgbV9oYW5kbGUuYXRvbWljTG9ja1ZhbHVlKCkuc3RvcmUoZmFsc2UpOworICAgICAgICB9
CisKKyAgICBwcml2YXRlOgorICAgICAgICBTaGFyZWREaXNwbGF5TGlzdEhhbmRsZSYgbV9oYW5k
bGU7CisgICAgfTsKKworcHJvdGVjdGVkOgorICAgIFNoYXJlZERpc3BsYXlMaXN0SGFuZGxlKFdl
YkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtQnVmZmVySWRlbnRpZmllciBpZGVudGlmaWVyLCBSZWY8
U2hhcmVkTWVtb3J5PiYmIHNoYXJlZE1lbW9yeSkKKyAgICAgICAgOiBtX2lkZW50aWZpZXIoaWRl
bnRpZmllcikKKyAgICAgICAgLCBtX3NoYXJlZE1lbW9yeShXVEZNb3ZlKHNoYXJlZE1lbW9yeSkp
CiAgICAgewogICAgIH0KIAotICAgIFZlY3RvcjxzdGQ6OnBhaXI8V2ViQ29yZTo6RGlzcGxheUxp
c3Q6Okl0ZW1CdWZmZXJJZGVudGlmaWVyLCBzaXplX3Q+PiBtX2J1ZmZlcnM7Ci19OwotCi10ZW1w
bGF0ZTxjbGFzcyBFbmNvZGVyPiB2b2lkIFNoYXJlZERpc3BsYXlMaXN0SGFuZGxlOjplbmNvZGUo
RW5jb2RlciYgZW5jb2RlcikgY29uc3QKLXsKLSAgICBlbmNvZGVyIDw8IG1fYnVmZmVyczsKLX0K
KyAgICBzaXplX3QmIHVucmVhZEJ5dGVzSGFuZGxlKCkgeyByZXR1cm4gKnJlaW50ZXJwcmV0X2Nh
c3Q8c2l6ZV90Kj4oZGF0YSgpICsgc2l6ZW9mKGJvb2wpKTsgfQogCi10ZW1wbGF0ZTxjbGFzcyBE
ZWNvZGVyPiBPcHRpb25hbDxTaGFyZWREaXNwbGF5TGlzdEhhbmRsZT4gU2hhcmVkRGlzcGxheUxp
c3RIYW5kbGU6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQotewotICAgIE9wdGlvbmFsPFZlY3Rv
cjxzdGQ6OnBhaXI8V2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1CdWZmZXJJZGVudGlmaWVyLCBz
aXplX3Q+Pj4gYnVmZmVyczsKLSAgICBkZWNvZGVyID4+IGJ1ZmZlcnM7Ci0gICAgaWYgKCFidWZm
ZXJzKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworcHJpdmF0ZToKKyAgICBzdGQ6OmF0
b21pYzxib29sPiYgYXRvbWljTG9ja1ZhbHVlKCkgY29uc3QgeyByZXR1cm4gKnN0YXRpY19jYXN0
PHN0ZDo6YXRvbWljPGJvb2w+Kj4oc2hhcmVkTWVtb3J5KCkuZGF0YSgpKTsgfQogCi0gICAgcmV0
dXJuIHt7IFdURk1vdmUoKmJ1ZmZlcnMpIH19OwotfQorICAgIFdlYkNvcmU6OkRpc3BsYXlMaXN0
OjpJdGVtQnVmZmVySWRlbnRpZmllciBtX2lkZW50aWZpZXI7CisgICAgUmVmPFNoYXJlZE1lbW9y
eT4gbV9zaGFyZWRNZW1vcnk7Cit9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvU291cmNlcy50eHQgYi9Tb3VyY2UvV2ViS2l0L1NvdXJjZXMudHh0
CmluZGV4IDM0OTk3NWNlYzEwMGFhMzI1ZjgyZmM2MTUwYTY3NjkxZWExMmVjMGIuLmJjNzE5NWJm
Y2NlMzU1YTUzM2JmNzM2OTM4NzI5NmQyMTBmNzgzZWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvU291cmNlcy50eHQKKysrIGIvU291cmNlL1dlYktpdC9Tb3VyY2VzLnR4dApAQCAtMjQsNiAr
MjQsNyBAQAogR1BVUHJvY2Vzcy9HUFVQcm9jZXNzLmNwcAogR1BVUHJvY2Vzcy9HUFVDb25uZWN0
aW9uVG9XZWJQcm9jZXNzLmNwcAogR1BVUHJvY2Vzcy9HUFVQcm9jZXNzQ3JlYXRpb25QYXJhbWV0
ZXJzLmNwcAorR1BVUHJvY2Vzcy9ncmFwaGljcy9EaXNwbGF5TGlzdFJlYWRlckhhbmRsZS5jcHAK
IEdQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5jcHAKIEdQVVByb2Nl
c3MvZ3JhcGhpY3MvUmVtb3RlUmVzb3VyY2VDYWNoZS5jcHAKIEdQVVByb2Nlc3MvbWVkaWEvUmVt
b3RlQXVkaW9TZXNzaW9uUHJveHkuY3BwCkBAIC0xNzMsNyArMTc0LDYgQEAgU2hhcmVkL1NlcnZp
Y2VXb3JrZXJJbml0aWFsaXphdGlvbkRhdGEuY3BwCiBTaGFyZWQvU2Vzc2lvblN0YXRlLmNwcAog
U2hhcmVkL1NoYXJlYWJsZUJpdG1hcC5jcHAgQG5vLXVuaWZ5CiBTaGFyZWQvU2hhcmVhYmxlUmVz
b3VyY2UuY3BwCi1TaGFyZWQvU2hhcmVkRGlzcGxheUxpc3RIYW5kbGUuY3BwCiBTaGFyZWQvU2hh
cmVkU3RyaW5nSGFzaFN0b3JlLmNwcAogU2hhcmVkL1NoYXJlZFN0cmluZ0hhc2hUYWJsZVJlYWRP
bmx5LmNwcAogU2hhcmVkL1NoYXJlZFN0cmluZ0hhc2hUYWJsZS5jcHAKQEAgLTU1OSw2ICs1NTks
NyBAQCBXZWJQcm9jZXNzL01lZGlhU3RyZWFtL01lZGlhRGV2aWNlU2FuZGJveEV4dGVuc2lvbnMu
Y3BwCiBXZWJQcm9jZXNzL01lZGlhU3RyZWFtL1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFu
YWdlci5jcHAKIAogV2ViUHJvY2Vzcy9HUFUvR1BVUHJvY2Vzc0Nvbm5lY3Rpb24uY3BwCitXZWJQ
cm9jZXNzL0dQVS9ncmFwaGljcy9EaXNwbGF5TGlzdFdyaXRlckhhbmRsZS5jcHAKIFdlYlByb2Nl
c3MvR1BVL2dyYXBoaWNzL0ltYWdlQnVmZmVyU2hhcmVhYmxlQml0bWFwQmFja2VuZC5jcHAKIFdl
YlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS5jcHAKIFdl
YlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZVJlc291cmNlQ2FjaGVQcm94eS5jcHAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9T
b3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDVlMGQz
Y2Y4N2U3OWY0MTA5NmYxZDc4ZWYyYjRjYzYxM2MyNjE3NDkuLjA2NWY3ZTQ2NzIxODU0MDhjYTY3
OGNjNTJkN2RmZDI5YWQ2Yzk1NzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTg3MSw2ICsxODcxLDggQEAKIAkJRTVCRUY2ODIyMTMw
QzQ4MDAwRjMxMTExIC8qIFdlYkRhdGFMaXN0U3VnZ2VzdGlvbnNEcm9wZG93bklPUy5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTVCRUY2ODAyMTMwQzQ3
RjAwRjMxMTExIC8qIFdlYkRhdGFMaXN0U3VnZ2VzdGlvbnNEcm9wZG93bklPUy5oICovOyB9Owog
CQlFNUNCMDdEQzIwRTE2NzhGMDAyMkMxODMgLyogV0tGb3JtQ29sb3JDb250cm9sLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFNUNCMDdEQTIwRTE2NzhG
MDAyMkMxODMgLyogV0tGb3JtQ29sb3JDb250cm9sLmggKi87IH07CiAJCUVEODJBN0YyMTI4QzZG
QUYwMDQ0NzdCMyAvKiBXS0J1bmRsZVBhZ2VPdmVybGF5LmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQTIyRjBGRjEyODlGQ0Q5MDA4NUU3NEYgLyogV0tC
dW5kbGVQYWdlT3ZlcmxheS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CisJCUY0MDk0Q0JEMjU1MzA1M0QwMDNENzNFMyAvKiBEaXNwbGF5TGlzdFJlYWRl
ckhhbmRsZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
RjQwOTRDQkIyNTUzMDRBRjAwM0Q3M0UzIC8qIERpc3BsYXlMaXN0UmVhZGVySGFuZGxlLmggKi87
IH07CisJCUY0MDk0Q0JFMjU1MzA1NDAwMDNENzNFMyAvKiBEaXNwbGF5TGlzdFdyaXRlckhhbmRs
ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjQwOTRD
QjkyNTUzMDQ3RTAwM0Q3M0UzIC8qIERpc3BsYXlMaXN0V3JpdGVySGFuZGxlLmggKi87IH07CiAJ
CUY0MDlCQTE4MUU2RTY0QkMwMDlEQTI4RSAvKiBXS0RyYWdEZXN0aW5hdGlvbkFjdGlvbi5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjQwOUJBMTcxRTZF
NjRCMzAwOURBMjhFIC8qIFdLRHJhZ0Rlc3RpbmF0aW9uQWN0aW9uLmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJRjQyRDYzNDEyMkEwRUZERjAwRDJG
QjNBIC8qIFdlYkF1dG9jb3JyZWN0aW9uRGF0YS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gRjQyRDYzM0YyMkEwRUZEMzAwRDJGQjNBIC8qIFdlYkF1dG9j
b3JyZWN0aW9uRGF0YS5oICovOyB9OwogCQlGNDMwRTk0MjIyNDczMzVGMDA1RkUwNTMgLyogV2Vi
c2l0ZU1ldGFWaWV3cG9ydFBvbGljeS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gRjQzMEU5NDEyMjQ3MzJBOTAwNUZFMDUzIC8qIFdlYnNpdGVNZXRhVmll
d3BvcnRQb2xpY3kuaCAqLzsgfTsKQEAgLTU0NjgsNiArNTQ3MCwxMCBAQAogCQlFQ0E2ODBEMzFF
NjkwNEI1MDA3MzFEMjAgLyogRXh0cmFQcml2YXRlU3ltYm9sc0ZvclRBUEkuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRXh0cmFQcml2YXRlU3ltYm9sc0ZvclRBUEkuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRUNCRkMxREIxRTZBNEQ2NjAwMDMwMEM3IC8qIEV4
dHJhUHVibGljU3ltYm9sc0ZvclRBUEkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRXh0cmFQdWJsaWNTeW1i
b2xzRm9yVEFQSS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGMDM2OTc4NzE1RjRC
RjA1MDBDM0E4MEUgLyogV2ViQ29sb3JQaWNrZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gV2ViQ29sb3JQaWNrZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQlGNDA5NENCOTI1NTMwNDdFMDAzRDczRTMgLyogRGlzcGxheUxpc3RXcml0ZXJIYW5k
bGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gRGlzcGxheUxpc3RXcml0ZXJIYW5kbGUuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRjQwOTRDQkEyNTUzMDQ3RTAwM0Q3M0UzIC8qIERpc3BsYXlM
aXN0V3JpdGVySGFuZGxlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IERpc3BsYXlMaXN0V3JpdGVy
SGFuZGxlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRjQwOTRDQkIyNTUzMDRB
RjAwM0Q3M0UzIC8qIERpc3BsYXlMaXN0UmVhZGVySGFuZGxlLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERp
c3BsYXlMaXN0UmVhZGVySGFuZGxlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUY0
MDk0Q0JDMjU1MzA0QUYwMDNENzNFMyAvKiBEaXNwbGF5TGlzdFJlYWRlckhhbmRsZS5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBEaXNwbGF5TGlzdFJlYWRlckhhbmRsZS5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCUY0MDlCQTE3MUU2RTY0QjMwMDlEQTI4RSAvKiBXS0RyYWdEZXN0
aW5hdGlvbkFjdGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXS0RyYWdE
ZXN0aW5hdGlvbkFjdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGNDBEMUI2
ODIyMEJEQzBGMDBCNDlBMDEgLyogV2ViQXV0b2NvcnJlY3Rpb25Db250ZXh0LmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
bmFtZSA9IFdlYkF1dG9jb3JyZWN0aW9uQ29udGV4dC5oOyBwYXRoID0gaW9zL1dlYkF1dG9jb3Jy
ZWN0aW9uQ29udGV4dC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGNDEwNTY2MTIx
MzA2OTlBMDA5MjI4MUQgLyogQVBJQXR0YWNobWVudENvY29hLm1tICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBw
YXRoID0gQVBJQXR0YWNobWVudENvY29hLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpA
QCAtNTQ5MCw3ICs1NDk2LDYgQEAKIAkJRjQ5NkE0MkYxRjU4QTI3MjAwNEMxNzU3IC8qIERyYWdE
cm9wSW50ZXJhY3Rpb25TdGF0ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBEcmFnRHJvcEludGVyYWN0aW9u
U3RhdGUuaDsgcGF0aCA9IGlvcy9EcmFnRHJvcEludGVyYWN0aW9uU3RhdGUuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRjQ5NkE0MzAxRjU4QTI3MjAwNEMxNzU3IC8qIERyYWdEcm9w
SW50ZXJhY3Rpb25TdGF0ZS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgbmFtZSA9IERyYWdEcm9wSW50ZXJh
Y3Rpb25TdGF0ZS5tbTsgcGF0aCA9IGlvcy9EcmFnRHJvcEludGVyYWN0aW9uU3RhdGUubW07IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUY0QTZENkJCMjU0Q0EzRTkwMEI2NUZBQSAvKiBT
aGFyZWREaXNwbGF5TGlzdEhhbmRsZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTaGFyZWREaXNwbGF5TGlz
dEhhbmRsZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlGNEE2RDZCRDI1NENBNTIy
MDBCNjVGQUEgLyogU2hhcmVkRGlzcGxheUxpc3RIYW5kbGUuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gU2hhcmVkRGlzcGxheUxpc3RIYW5kbGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQlGNEFDNjU1RTIyQTMxNDBFMDBBMDU2MDcgLyogV2ViUHJlZmVyZW5jZXNEZWZhdWx0VmFs
dWVzSU9TLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBuYW1lID0gV2ViUHJl
ZmVyZW5jZXNEZWZhdWx0VmFsdWVzSU9TLm1tOyBwYXRoID0gaW9zL1dlYlByZWZlcmVuY2VzRGVm
YXVsdFZhbHVlc0lPUy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRjRCMzc4RDAy
MUREQkJBQjAwOTVBMzc4IC8qIFdlYlVuZG9TdGVwSUQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViVW5k
b1N0ZXBJRC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGNENCMDlFNDIyNUQ1QTAz
MDA4OTE0ODcgLyogV2Vic2l0ZU1lZGlhU291cmNlUG9saWN5LmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdl
YnNpdGVNZWRpYVNvdXJjZVBvbGljeS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAt
NjE5OCw3ICs2MjAzLDYgQEAKIAkJCQkxQTY0MjBFMzEyRENFMkZGMDBDQUFFMkMgLyogU2hhcmVh
YmxlQml0bWFwLmggKi8sCiAJCQkJNTEyMTc0NUUxNjRDMjBFMzAwMzdBNUMxIC8qIFNoYXJlYWJs
ZVJlc291cmNlLmNwcCAqLywKIAkJCQk1MTIxNzQ1RjE2NEMyMEUzMDAzN0E1QzEgLyogU2hhcmVh
YmxlUmVzb3VyY2UuaCAqLywKLQkJCQlGNEE2RDZCRDI1NENBNTIyMDBCNjVGQUEgLyogU2hhcmVk
RGlzcGxheUxpc3RIYW5kbGUuY3BwICovLAogCQkJCUY0QTZENkJCMjU0Q0EzRTkwMEI2NUZBQSAv
KiBTaGFyZWREaXNwbGF5TGlzdEhhbmRsZS5oICovLAogCQkJCTgzMTNGN0VBMUY3REFFMDQwMEI5
NDRFQiAvKiBTaGFyZWRTdHJpbmdIYXNoU3RvcmUuY3BwICovLAogCQkJCTgzMTNGN0U5MUY3REFF
MDMwMEI5NDRFQiAvKiBTaGFyZWRTdHJpbmdIYXNoU3RvcmUuaCAqLywKQEAgLTgxNzMsNiArODE3
Nyw4IEBACiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAogCQkJCTcyN0E3RjMz
MjQwNzg1MjcwMDREMjkzMSAvKiBjb2NvYSAqLywKKwkJCQlGNDA5NENCQTI1NTMwNDdFMDAzRDcz
RTMgLyogRGlzcGxheUxpc3RXcml0ZXJIYW5kbGUuY3BwICovLAorCQkJCUY0MDk0Q0I5MjU1MzA0
N0UwMDNENzNFMyAvKiBEaXNwbGF5TGlzdFdyaXRlckhhbmRsZS5oICovLAogCQkJCTcyN0E3RjM5
MjQwNzg4RjEwMDREMjkzMSAvKiBJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGUuaCAqLywKIAkJCQk3
MjdBN0YzNzI0MDc4OEYwMDA0RDI5MzEgLyogSW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRtYXBCYWNr
ZW5kLmNwcCAqLywKIAkJCQk3MjdBN0YzNjI0MDc4OEYwMDA0RDI5MzEgLyogSW1hZ2VCdWZmZXJT
aGFyZWFibGVCaXRtYXBCYWNrZW5kLmggKi8sCkBAIC04MTkyLDYgKzgxOTgsOCBAQAogCQk1NTA2
NDBBMTI0MDcxQTI5MDBBQUUwNDUgLyogZ3JhcGhpY3MgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91
cDsKIAkJCWNoaWxkcmVuID0gKAorCQkJCUY0MDk0Q0JDMjU1MzA0QUYwMDNENzNFMyAvKiBEaXNw
bGF5TGlzdFJlYWRlckhhbmRsZS5jcHAgKi8sCisJCQkJRjQwOTRDQkIyNTUzMDRBRjAwM0Q3M0Uz
IC8qIERpc3BsYXlMaXN0UmVhZGVySGFuZGxlLmggKi8sCiAJCQkJNTVBRDA5NDMyNDA4QTBFNjAw
REU0RDJGIC8qIFBsYXRmb3JtUmVtb3RlSW1hZ2VCdWZmZXIuaCAqLywKIAkJCQk1NUFEMDk0MjI0
MDhBMDJFMDBERTREMkYgLyogUmVtb3RlSW1hZ2VCdWZmZXIuaCAqLywKIAkJCQk1NTA2NDBBMjI0
MDcxQTYxMDBBQUUwNDUgLyogUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5jcHAgKi8sCkBAIC0xMTAz
MSw2ICsxMTAzOSw4IEBACiAJCQkJODM4OTFCNkMxQTY4QzMwQjAwMzBGMzg2IC8qIERpYWdub3N0
aWNMb2dnaW5nQ2xpZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlDMTgxNzM2MTIwNTg0MjQ3MDBE
RkRBNjUgLyogRGlzcGxheUxpbmsuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGMTg5Q0FDMjQ3NDlG
MkYwMEU1OEQ4MSAvKiBEaXNwbGF5TGlua09ic2VydmVySUQuaCBpbiBIZWFkZXJzICovLAorCQkJ
CUY0MDk0Q0JEMjU1MzA1M0QwMDNENzNFMyAvKiBEaXNwbGF5TGlzdFJlYWRlckhhbmRsZS5oIGlu
IEhlYWRlcnMgKi8sCisJCQkJRjQwOTRDQkUyNTUzMDU0MDAwM0Q3M0UzIC8qIERpc3BsYXlMaXN0
V3JpdGVySGFuZGxlLmggaW4gSGVhZGVycyAqLywKIAkJCQk1QzE0MjcwMjFDMjNGODRDMDBENDEx
ODMgLyogRG93bmxvYWQuaCBpbiBIZWFkZXJzICovLAogCQkJCTVDMTQyNzA1MUMyM0Y4NEMwMEQ0
MTE4MyAvKiBEb3dubG9hZElELmggaW4gSGVhZGVycyAqLywKIAkJCQk1QzE0MjcwNzFDMjNGODRD
MDBENDExODMgLyogRG93bmxvYWRNYW5hZ2VyLmggaW4gSGVhZGVycyAqLywKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvRGlzcGxheUxpc3RXcml0ZXJI
YW5kbGUuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9EaXNwbGF5
TGlzdFdyaXRlckhhbmRsZS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uY2VhZjM2ZjM2OTY1OGE3MjcwYmIyNDcz
N2M2MzdhNTRjYThkYWU2NgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9HUFUvZ3JhcGhpY3MvRGlzcGxheUxpc3RXcml0ZXJIYW5kbGUuY3BwCkBAIC0wLDAgKzEs
NjcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAor
ICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisg
KiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICog
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiRGlzcGxh
eUxpc3RXcml0ZXJIYW5kbGUuaCIKKworbmFtZXNwYWNlIFdlYktpdCB7Cit1c2luZyBuYW1lc3Bh
Y2UgV2ViQ29yZTsKKwordm9pZCBEaXNwbGF5TGlzdFdyaXRlckhhbmRsZTo6YWR2YW5jZShzaXpl
X3QgYW1vdW50KQoreworICAgIG1fd3JpdGFibGVPZmZzZXQgKz0gYW1vdW50OworICAgIHVucmVh
ZEJ5dGVzSGFuZGxlKCkgKz0gYW1vdW50OworfQorCitzaXplX3QgRGlzcGxheUxpc3RXcml0ZXJI
YW5kbGU6OmF2YWlsYWJsZUNhcGFjaXR5KCkgY29uc3QKK3sKKyAgICByZXR1cm4gc2hhcmVkTWVt
b3J5KCkuc2l6ZSgpIC0gd3JpdGFibGVPZmZzZXQoKTsKK30KKworRGlzcGxheUxpc3Q6Okl0ZW1C
dWZmZXJIYW5kbGUgRGlzcGxheUxpc3RXcml0ZXJIYW5kbGU6OmNyZWF0ZUhhbmRsZSgpIGNvbnN0
Cit7CisgICAgcmV0dXJuIHsKKyAgICAgICAgaWRlbnRpZmllcigpLAorICAgICAgICBkYXRhKCkg
KyB3cml0YWJsZU9mZnNldCgpLAorICAgICAgICBhdmFpbGFibGVDYXBhY2l0eSgpCisgICAgfTsK
K30KKworYm9vbCBEaXNwbGF5TGlzdFdyaXRlckhhbmRsZTo6cmVzZXRXcml0YWJsZU9mZnNldElm
UG9zc2libGUoKQoreworICAgIGlmIChtX3dyaXRhYmxlT2Zmc2V0IDw9IFNoYXJlZERpc3BsYXlM
aXN0SGFuZGxlOjpyZXNlcnZlZENhcGFjaXR5QXRTdGFydCkgeworICAgICAgICBBU1NFUlQobV93
cml0YWJsZU9mZnNldCA9PSBTaGFyZWREaXNwbGF5TGlzdEhhbmRsZTo6cmVzZXJ2ZWRDYXBhY2l0
eUF0U3RhcnQpOworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisKKyAgICBMb2NrIGxvY2tl
ciB7ICp0aGlzIH07CisgICAgaWYgKHVucmVhZEJ5dGVzKCkpCisgICAgICAgIHJldHVybiBmYWxz
ZTsKKworICAgIG1fd3JpdGFibGVPZmZzZXQgPSBTaGFyZWREaXNwbGF5TGlzdEhhbmRsZTo6cmVz
ZXJ2ZWRDYXBhY2l0eUF0U3RhcnQ7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK30gLy8gbmFtZXNw
YWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFw
aGljcy9EaXNwbGF5TGlzdFdyaXRlckhhbmRsZS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L0dQVS9ncmFwaGljcy9EaXNwbGF5TGlzdFdyaXRlckhhbmRsZS5oCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjEzODAx
MjY1ZWUzODQ5NDMxYWRlOTE3ZjU4ZmE1M2IyNTkzZmI5NGQKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL0Rpc3BsYXlMaXN0V3JpdGVySGFu
ZGxlLmgKQEAgLTAsMCArMSw1NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwor
ICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAq
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5j
bHVkZSAiU2hhcmVkRGlzcGxheUxpc3RIYW5kbGUuaCIKKyNpbmNsdWRlIDx3dGYvRmFzdE1hbGxv
Yy5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3MgRGlzcGxheUxpc3RXcml0ZXJIYW5k
bGUgOiBwdWJsaWMgU2hhcmVkRGlzcGxheUxpc3RIYW5kbGUgeworICAgIFdURl9NQUtFX05PTkNP
UFlBQkxFKERpc3BsYXlMaXN0V3JpdGVySGFuZGxlKTsgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7
CitwdWJsaWM6CisgICAgRGlzcGxheUxpc3RXcml0ZXJIYW5kbGUoV2ViQ29yZTo6RGlzcGxheUxp
c3Q6Okl0ZW1CdWZmZXJJZGVudGlmaWVyIGlkZW50aWZpZXIsIFJlZjxTaGFyZWRNZW1vcnk+JiYg
c2hhcmVkTWVtb3J5KQorICAgICAgICA6IFNoYXJlZERpc3BsYXlMaXN0SGFuZGxlKGlkZW50aWZp
ZXIsIFdURk1vdmUoc2hhcmVkTWVtb3J5KSkKKyAgICAgICAgLCBtX3dyaXRhYmxlT2Zmc2V0KFNo
YXJlZERpc3BsYXlMaXN0SGFuZGxlOjpyZXNlcnZlZENhcGFjaXR5QXRTdGFydCkKKyAgICB7Cisg
ICAgfQorCisgICAgc2l6ZV90IHdyaXRhYmxlT2Zmc2V0KCkgY29uc3QgeyByZXR1cm4gbV93cml0
YWJsZU9mZnNldDsgfQorICAgIHNpemVfdCBhdmFpbGFibGVDYXBhY2l0eSgpIGNvbnN0OworCisg
ICAgYm9vbCByZXNldFdyaXRhYmxlT2Zmc2V0SWZQb3NzaWJsZSgpOworCisgICAgdm9pZCBhZHZh
bmNlKHNpemVfdCBhbW91bnQpIG92ZXJyaWRlOworICAgIFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJ
dGVtQnVmZmVySGFuZGxlIGNyZWF0ZUhhbmRsZSgpIGNvbnN0OworCitwcml2YXRlOgorICAgIHNp
emVfdCBtX3dyaXRhYmxlT2Zmc2V0IHsgMCB9OworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90
ZUltYWdlQnVmZmVyUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhp
Y3MvUmVtb3RlSW1hZ2VCdWZmZXJQcm94eS5oCmluZGV4IGI1Nzg0NmRkZDUxYzUxYjZiY2Y0Yzcz
OTVkMjI4OWZiMGY3MmI5YWMuLjhmNzllMzk5ODgzY2QzMmE1ZWUyMGE5OWE0NjJhYmI2OGQ3NGIx
ZDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVt
b3RlSW1hZ2VCdWZmZXJQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUv
Z3JhcGhpY3MvUmVtb3RlSW1hZ2VCdWZmZXJQcm94eS5oCkBAIC0xMzksNiArMTM5LDcgQEAgcHJv
dGVjdGVkOgogCiAgICAgdm9pZCBmbHVzaERyYXdpbmdDb250ZXh0KCkgb3ZlcnJpZGUKICAgICB7
CisgICAgICAgIFRyYWNlU2NvcGUgdHJhY2luZ1Njb3BlKEZsdXNoUmVtb3RlSW1hZ2VCdWZmZXJT
dGFydCwgRmx1c2hSZW1vdGVJbWFnZUJ1ZmZlckVuZCk7CiAgICAgICAgIGZsdXNoRHJhd2luZ0Nv
bnRleHRBbmRDb21taXQoKTsKICAgICAgICAgdGltZW91dFdhaXRGb3JGbHVzaERpc3BsYXlMaXN0
V2FzQ29tbWl0dGVkKCk7CiAgICAgfQpAQCAtMTUyLDggKzE1Myw5IEBAIHByb3RlY3RlZDoKICAg
ICAgICAgaWYgKGRpc3BsYXlMaXN0LmlzRW1wdHkoKSkKICAgICAgICAgICAgIHJldHVybjsKIAot
ICAgICAgICBUcmFjZVNjb3BlIHRyYWNpbmdTY29wZShGbHVzaFJlbW90ZUltYWdlQnVmZmVyU3Rh
cnQsIEZsdXNoUmVtb3RlSW1hZ2VCdWZmZXJFbmQsIDEpOwotICAgICAgICBtX3NlbnRGbHVzaElk
ZW50aWZpZXIgPSBtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS0+Zmx1c2hEaXNwbGF5TGlz
dEFuZENvbW1pdChkaXNwbGF5TGlzdCwgbV9yZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpOwor
ICAgICAgICBtX3NlbnRGbHVzaElkZW50aWZpZXIgPSBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6Rmx1
c2hJZGVudGlmaWVyOjpnZW5lcmF0ZSgpOworICAgICAgICBkaXNwbGF5TGlzdC50ZW1wbGF0ZSBh
cHBlbmQ8V2ViQ29yZTo6RGlzcGxheUxpc3Q6OkZsdXNoQ29udGV4dD4obV9zZW50Rmx1c2hJZGVu
dGlmaWVyKTsKKyAgICAgICAgbV9yZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHktPmZsdXNoRGlz
cGxheUxpc3QoZGlzcGxheUxpc3QsIG1fcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKTsKICAg
ICAgICAgbV9pdGVtQ291bnRJbkN1cnJlbnREaXNwbGF5TGlzdCA9IDA7CiAgICAgICAgIGRpc3Bs
YXlMaXN0LmNsZWFyKCk7CiAgICAgfQpAQCAtMTYzLDcgKzE2NSw2IEBAIHByb3RlY3RlZDoKICAg
ICAgICAgaWYgKCFtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eSB8fCBkaXNwbGF5TGlzdC5p
c0VtcHR5KCkpCiAgICAgICAgICAgICByZXR1cm47CiAKLSAgICAgICAgVHJhY2VTY29wZSB0cmFj
aW5nU2NvcGUoRmx1c2hSZW1vdGVJbWFnZUJ1ZmZlclN0YXJ0LCBGbHVzaFJlbW90ZUltYWdlQnVm
ZmVyRW5kKTsKICAgICAgICAgbV9yZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHktPmZsdXNoRGlz
cGxheUxpc3QoZGlzcGxheUxpc3QsIG1fcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKTsKICAg
ICB9CiAKQEAgLTE4Miw3ICsxODMsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgV2ViQ29yZTo6RGlzcGxh
eUxpc3Q6Okl0ZW1CdWZmZXJIYW5kbGUgY3JlYXRlSXRlbUJ1ZmZlcihzaXplX3QgY2FwYWNpdHkp
IG92ZXJyaWRlCiAgICAgewogICAgICAgICBpZiAobV9yZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJv
eHkpCi0gICAgICAgICAgICByZXR1cm4gbV9yZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHktPmNy
ZWF0ZUl0ZW1CdWZmZXIoY2FwYWNpdHkpOworICAgICAgICAgICAgcmV0dXJuIG1fcmVtb3RlUmVu
ZGVyaW5nQmFja2VuZFByb3h5LT5jcmVhdGVJdGVtQnVmZmVyKGNhcGFjaXR5LCBtX3JlbmRlcmlu
Z1Jlc291cmNlSWRlbnRpZmllcik7CiAKICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAg
ICAgICAgIHJldHVybiB7IH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
R1BVL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS5j
cHAKaW5kZXggZWVjMDUyNTQ2ODhkZjBmOTdmMzc3OGUxYzA1YjVmZWIxZTllZjhiNS4uMDk1ZmNj
MmFiMmZlMTljNDljOTMxYjA3MTA0YTgyNjAxMzY2N2Y3MSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHku
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlUmVu
ZGVyaW5nQmFja2VuZFByb3h5LmNwcApAQCAtMjgsMTMgKzI4LDEzIEBACiAKICNpZiBFTkFCTEUo
R1BVX1BST0NFU1MpCiAKKyNpbmNsdWRlICJEaXNwbGF5TGlzdFdyaXRlckhhbmRsZS5oIgogI2lu
Y2x1ZGUgIkdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaCIKICNpbmNsdWRlICJHUFVQcm9jZXNz
Q29ubmVjdGlvbi5oIgogI2luY2x1ZGUgIkltYWdlRGF0YVJlZmVyZW5jZS5oIgogI2luY2x1ZGUg
IlBsYXRmb3JtUmVtb3RlSW1hZ2VCdWZmZXJQcm94eS5oIgogI2luY2x1ZGUgIlJlbW90ZVJlbmRl
cmluZ0JhY2tlbmRNZXNzYWdlcy5oIgogI2luY2x1ZGUgIlJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQ
cm94eU1lc3NhZ2VzLmgiCi0jaW5jbHVkZSAiU2hhcmVkRGlzcGxheUxpc3RIYW5kbGUuaCIKICNp
bmNsdWRlICJTaGFyZWRNZW1vcnkuaCIKICNpbmNsdWRlICJXZWJQcm9jZXNzLmgiCiAKQEAgLTEx
NywxNiArMTE3LDI5IEBAIFJlZlB0cjxJbWFnZURhdGE+IFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQ
cm94eTo6Z2V0SW1hZ2VEYXRhKEFscGhhUHJlbXVsdGlwbGljYXRpCiAKIHZvaWQgUmVtb3RlUmVu
ZGVyaW5nQmFja2VuZFByb3h5OjpmbHVzaERpc3BsYXlMaXN0KGNvbnN0IERpc3BsYXlMaXN0OjpE
aXNwbGF5TGlzdCYgZGlzcGxheUxpc3QsIFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciByZW5k
ZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpCiB7Ci0gICAgc2VuZChNZXNzYWdlczo6UmVtb3RlUmVu
ZGVyaW5nQmFja2VuZDo6Rmx1c2hEaXNwbGF5TGlzdCh7IGRpc3BsYXlMaXN0IH0sIHJlbmRlcmlu
Z1Jlc291cmNlSWRlbnRpZmllciksIG1fcmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXIpOwotICAg
IG1fc2hhcmVkSXRlbUJ1ZmZlcnMuY2xlYXIoKTsKLX0KKyAgICBPcHRpb25hbDxzdGQ6OnBhaXI8
V2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1CdWZmZXJJZGVudGlmaWVyLCBzaXplX3Q+PiBpZGVu
dGlmaWVyQW5kT2Zmc2V0Rm9yV2FrZVVwTWVzc2FnZTsKKyAgICBib29sIGlzRmlyc3RIYW5kbGUg
PSB0cnVlOwogCi1EaXNwbGF5TGlzdDo6Rmx1c2hJZGVudGlmaWVyIFJlbW90ZVJlbmRlcmluZ0Jh
Y2tlbmRQcm94eTo6Zmx1c2hEaXNwbGF5TGlzdEFuZENvbW1pdChjb25zdCBEaXNwbGF5TGlzdDo6
RGlzcGxheUxpc3QmIGRpc3BsYXlMaXN0LCBSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgcmVu
ZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKQotewotICAgIGF1dG8gc2VudEZsdXNoSWRlbnRpZmll
ciA9IERpc3BsYXlMaXN0OjpGbHVzaElkZW50aWZpZXI6OmdlbmVyYXRlKCk7Ci0gICAgc2VuZChN
ZXNzYWdlczo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6Rmx1c2hEaXNwbGF5TGlzdEFuZENvbW1p
dCh7IGRpc3BsYXlMaXN0IH0sIHNlbnRGbHVzaElkZW50aWZpZXIsIHJlbmRlcmluZ1Jlc291cmNl
SWRlbnRpZmllciksIG1fcmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXIpOwotICAgIG1fc2hhcmVk
SXRlbUJ1ZmZlcnMuY2xlYXIoKTsKLSAgICByZXR1cm4gc2VudEZsdXNoSWRlbnRpZmllcjsKKyAg
ICBkaXNwbGF5TGlzdC5mb3JFYWNoSXRlbUJ1ZmZlcihbJl0gKGF1dG8mIGhhbmRsZSkgeworICAg
ICAgICBtX2lkZW50aWZpZXJzT2ZIYW5kbGVzQXZhaWxhYmxlRm9yV3JpdGluZy5hZGQoaGFuZGxl
LmlkZW50aWZpZXIpOworCisgICAgICAgIGF1dG8qIHNoYXJlZEhhbmRsZSA9IG1fc2hhcmVkRGlz
cGxheUxpc3RIYW5kbGVzLmdldChoYW5kbGUuaWRlbnRpZmllcik7CisgICAgICAgIFJFTEVBU0Vf
QVNTRVJUX1dJVEhfTUVTU0FHRShzaGFyZWRIYW5kbGUsICIlcyBmYWlsZWQgdG8gZmluZCBzaGFy
ZWQgZGlzcGxheSBsaXN0IiwgX19QUkVUVFlfRlVOQ1RJT05fXyk7CisKKyAgICAgICAgU2hhcmVk
RGlzcGxheUxpc3RIYW5kbGU6OkxvY2sgbG9ja2VyIHsgKnNoYXJlZEhhbmRsZSB9OworCisgICAg
ICAgIGJvb2wgdW5yZWFkQ291bnRXYXNFbXB0eSA9ICFzaGFyZWRIYW5kbGUtPnVucmVhZEJ5dGVz
KCk7CisgICAgICAgIHNoYXJlZEhhbmRsZS0+YWR2YW5jZShoYW5kbGUuY2FwYWNpdHkpOworICAg
ICAgICBpZiAoaXNGaXJzdEhhbmRsZSAmJiB1bnJlYWRDb3VudFdhc0VtcHR5KQorICAgICAgICAg
ICAgaWRlbnRpZmllckFuZE9mZnNldEZvcldha2VVcE1lc3NhZ2UgPSB7eyBoYW5kbGUuaWRlbnRp
ZmllciwgaGFuZGxlLmRhdGEgLSBzaGFyZWRIYW5kbGUtPmRhdGEoKSB9fTsKKworICAgICAgICBp
c0ZpcnN0SGFuZGxlID0gZmFsc2U7CisgICAgfSk7CisKKyAgICBpZiAoaWRlbnRpZmllckFuZE9m
ZnNldEZvcldha2VVcE1lc3NhZ2UpIHsKKyAgICAgICAgYXV0byBbaWRlbnRpZmllciwgb2Zmc2V0
XSA9ICppZGVudGlmaWVyQW5kT2Zmc2V0Rm9yV2FrZVVwTWVzc2FnZTsKKyAgICAgICAgc2VuZChN
ZXNzYWdlczo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6V2FrZVVwQW5kUHJvY2Vzc0Rpc3BsYXlM
aXN0KGlkZW50aWZpZXIsIG9mZnNldCwgcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKSwgbV9y
ZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllcik7CisgICAgfQogfQogCiB2b2lkIFJlbW90ZVJlbmRl
cmluZ0JhY2tlbmRQcm94eTo6cmVsZWFzZVJlbW90ZVJlc291cmNlKFJlbmRlcmluZ1Jlc291cmNl
SWRlbnRpZmllciByZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpCkBAIC0xNTksMjEgKzE3Miw1
NiBAQCB2b2lkIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eTo6Zmx1c2hEaXNwbGF5TGlzdFdh
c0NvbW1pdHRlZChEaXNwbGF5TGlzdDo6Rmx1cwogICAgICAgICBkb3duY2FzdDxVbmFjY2VsZXJh
dGVkUmVtb3RlSW1hZ2VCdWZmZXJQcm94eT4oKmltYWdlQnVmZmVyKS5jb21taXRGbHVzaERpc3Bs
YXlMaXN0KGZsdXNoSWRlbnRpZmllcik7CiB9CiAKLURpc3BsYXlMaXN0OjpJdGVtQnVmZmVySGFu
ZGxlIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eTo6Y3JlYXRlSXRlbUJ1ZmZlcihzaXplX3Qg
Y2FwYWNpdHkpCit2b2lkIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eTo6dXBkYXRlUmV1c2Fi
bGVIYW5kbGVzKCkKK3sKKyAgICBmb3IgKGF1dG8gaWRlbnRpZmllciA6IG1faWRlbnRpZmllcnNP
ZkhhbmRsZXNBdmFpbGFibGVGb3JXcml0aW5nKSB7CisgICAgICAgIGF1dG8qIGhhbmRsZSA9IG1f
c2hhcmVkRGlzcGxheUxpc3RIYW5kbGVzLmdldChpZGVudGlmaWVyKTsKKyAgICAgICAgaWYgKCFo
YW5kbGUtPnJlc2V0V3JpdGFibGVPZmZzZXRJZlBvc3NpYmxlKCkpCisgICAgICAgICAgICBjb250
aW51ZTsKKworICAgICAgICBpZiAobV9pZGVudGlmaWVyc09mUmV1c2FibGVIYW5kbGVzLmNvbnRh
aW5zKGlkZW50aWZpZXIpKQorICAgICAgICAgICAgY29udGludWU7CisKKyAgICAgICAgbV9pZGVu
dGlmaWVyc09mUmV1c2FibGVIYW5kbGVzLmFwcGVuZChpZGVudGlmaWVyKTsKKyAgICB9Cit9CisK
K0Rpc3BsYXlMaXN0OjpJdGVtQnVmZmVySGFuZGxlIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94
eTo6Y3JlYXRlSXRlbUJ1ZmZlcihzaXplX3QgY2FwYWNpdHksIFJlbmRlcmluZ1Jlc291cmNlSWRl
bnRpZmllciByZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIpCiB7CisgICAgdXBkYXRlUmV1c2FibGVI
YW5kbGVzKCk7CisKKyAgICB3aGlsZSAoIW1faWRlbnRpZmllcnNPZlJldXNhYmxlSGFuZGxlcy5p
c0VtcHR5KCkpIHsKKyAgICAgICAgYXV0byBpZGVudGlmaWVyID0gbV9pZGVudGlmaWVyc09mUmV1
c2FibGVIYW5kbGVzLmZpcnN0KCk7CisgICAgICAgIGF1dG8qIHJldXNhYmxlSGFuZGxlID0gbV9z
aGFyZWREaXNwbGF5TGlzdEhhbmRsZXMuZ2V0KGlkZW50aWZpZXIpOworICAgICAgICBSRUxFQVNF
X0FTU0VSVF9XSVRIX01FU1NBR0UocmV1c2FibGVIYW5kbGUsICIlcyBmYWlsZWQgdG8gZmluZCBz
aGFyZWQgZGlzcGxheSBsaXN0IiwgX19QUkVUVFlfRlVOQ1RJT05fXyk7CisKKyAgICAgICAgaWYg
KG1faWRlbnRpZmllcnNPZkhhbmRsZXNBdmFpbGFibGVGb3JXcml0aW5nLmNvbnRhaW5zKGlkZW50
aWZpZXIpICYmIHJldXNhYmxlSGFuZGxlLT5hdmFpbGFibGVDYXBhY2l0eSgpID49IGNhcGFjaXR5
KSB7CisgICAgICAgICAgICBtX2lkZW50aWZpZXJzT2ZIYW5kbGVzQXZhaWxhYmxlRm9yV3JpdGlu
Zy5yZW1vdmUoaWRlbnRpZmllcik7CisgICAgICAgICAgICByZXR1cm4gcmV1c2FibGVIYW5kbGUt
PmNyZWF0ZUhhbmRsZSgpOworICAgICAgICB9CisKKyAgICAgICAgbV9pZGVudGlmaWVyc09mUmV1
c2FibGVIYW5kbGVzLnJlbW92ZUZpcnN0KCk7CisgICAgfQorCiAgICAgc3RhdGljIGNvbnN0ZXhw
ciBzaXplX3QgZGVmYXVsdFNoYXJlZEl0ZW1CdWZmZXJTaXplID0gMSA8PCAxNjsKIAotICAgIGF1
dG8gc2hhcmVkTWVtb3J5ID0gU2hhcmVkTWVtb3J5OjphbGxvY2F0ZShzdGQ6Om1heChkZWZhdWx0
U2hhcmVkSXRlbUJ1ZmZlclNpemUsIGNhcGFjaXR5KSk7CisgICAgYXV0byBzaGFyZWRNZW1vcnkg
PSBTaGFyZWRNZW1vcnk6OmFsbG9jYXRlKHN0ZDo6bWF4KGRlZmF1bHRTaGFyZWRJdGVtQnVmZmVy
U2l6ZSwgY2FwYWNpdHkgKyBTaGFyZWREaXNwbGF5TGlzdEhhbmRsZTo6cmVzZXJ2ZWRDYXBhY2l0
eUF0U3RhcnQpKTsKICAgICBpZiAoIXNoYXJlZE1lbW9yeSkKICAgICAgICAgcmV0dXJuIHsgfTsK
IAotICAgIGF1dG8gaWRlbnRpZmllciA9IERpc3BsYXlMaXN0OjpJdGVtQnVmZmVySWRlbnRpZmll
cjo6Z2VuZXJhdGUoKTsKICAgICBTaGFyZWRNZW1vcnk6OkhhbmRsZSBzaGFyZWRNZW1vcnlIYW5k
bGU7Ci0gICAgc2hhcmVkTWVtb3J5LT5jcmVhdGVIYW5kbGUoc2hhcmVkTWVtb3J5SGFuZGxlLCBT
aGFyZWRNZW1vcnk6OlByb3RlY3Rpb246OlJlYWRPbmx5KTsKLSAgICBzZW5kKE1lc3NhZ2VzOjpS
ZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpEaWRDcmVhdGVTaGFyZWRJdGVtRGF0YShpZGVudGlmaWVy
LCB7IFdURk1vdmUoc2hhcmVkTWVtb3J5SGFuZGxlKSwgc2hhcmVkTWVtb3J5LT5zaXplKCkgfSks
IG1fcmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXIpOwotICAgIG1fc2hhcmVkSXRlbUJ1ZmZlcnMu
c2V0KGlkZW50aWZpZXIsIHNoYXJlZE1lbW9yeS5jb3B5UmVmKCkpOworICAgIHNoYXJlZE1lbW9y
eS0+Y3JlYXRlSGFuZGxlKHNoYXJlZE1lbW9yeUhhbmRsZSwgU2hhcmVkTWVtb3J5OjpQcm90ZWN0
aW9uOjpSZWFkV3JpdGUpOworCisgICAgYXV0byBpZGVudGlmaWVyID0gRGlzcGxheUxpc3Q6Okl0
ZW1CdWZmZXJJZGVudGlmaWVyOjpnZW5lcmF0ZSgpOworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90
ZVJlbmRlcmluZ0JhY2tlbmQ6OkRpZENyZWF0ZVNoYXJlZERpc3BsYXlMaXN0SGFuZGxlKGlkZW50
aWZpZXIsIHsgV1RGTW92ZShzaGFyZWRNZW1vcnlIYW5kbGUpLCBzaGFyZWRNZW1vcnktPnNpemUo
KSB9LCByZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIpLCBtX3JlbmRlcmluZ0JhY2tlbmRJZGVudGlm
aWVyKTsKKworICAgIGF1dG8gbmV3SGFuZGxlID0gbWFrZVVuaXF1ZTxEaXNwbGF5TGlzdFdyaXRl
ckhhbmRsZT4oaWRlbnRpZmllciwgc2hhcmVkTWVtb3J5LnJlbGVhc2VOb25OdWxsKCkpOworICAg
IGF1dG8gZGlzcGxheUxpc3RIYW5kbGUgPSBuZXdIYW5kbGUtPmNyZWF0ZUhhbmRsZSgpOworCisg
ICAgbV9pZGVudGlmaWVyc09mUmV1c2FibGVIYW5kbGVzLmFwcGVuZChpZGVudGlmaWVyKTsKKyAg
ICBtX3NoYXJlZERpc3BsYXlMaXN0SGFuZGxlcy5zZXQoaWRlbnRpZmllciwgV1RGTW92ZShuZXdI
YW5kbGUpKTsKIAotICAgIHJldHVybiB7IGlkZW50aWZpZXIsIHJlaW50ZXJwcmV0X2Nhc3Q8dWlu
dDhfdCo+KHNoYXJlZE1lbW9yeS0+ZGF0YSgpKSwgc2hhcmVkTWVtb3J5LT5zaXplKCkgfTsKKyAg
ICByZXR1cm4gZGlzcGxheUxpc3RIYW5kbGU7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVS
ZW5kZXJpbmdCYWNrZW5kUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3Jh
cGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5LmgKaW5kZXggMjBjZTZkYTQ1NWIxOWZk
NzUxOGYwOWQ1YmFiZjhmMDFlNGJmNjRlOS4uNmVkZjhjOTMxM2ViNTYxOWY1YzU4YWM1ZjdhMGYz
NzUzZjU4MzQxMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFw
aGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS5oCkBAIC0z
NCw2ICszNCw3IEBACiAjaW5jbHVkZSAiUmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXIuaCIKICNp
bmNsdWRlIDxXZWJDb3JlL0Rpc3BsYXlMaXN0Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9SZW5kZXJp
bmdSZXNvdXJjZUlkZW50aWZpZXIuaD4KKyNpbmNsdWRlIDx3dGYvRGVxdWUuaD4KICNpbmNsdWRl
IDx3dGYvV2Vha1B0ci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC01MCw2ICs1MSw4IEBA
IGVudW0gY2xhc3MgUmVuZGVyaW5nTW9kZSA6IGJvb2w7CiAKIG5hbWVzcGFjZSBXZWJLaXQgewog
CitjbGFzcyBEaXNwbGF5TGlzdFdyaXRlckhhbmRsZTsKKwogY2xhc3MgUmVtb3RlUmVuZGVyaW5n
QmFja2VuZFByb3h5CiAgICAgOiBwdWJsaWMgSVBDOjpNZXNzYWdlU2VuZGVyCiAgICAgLCBwcml2
YXRlIElQQzo6TWVzc2FnZVJlY2VpdmVyCkBAIC02MCw3ICs2Myw3IEBAIHB1YmxpYzoKICAgICB+
UmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5KCk7CiAKICAgICBSZW1vdGVSZXNvdXJjZUNhY2hl
UHJveHkmIHJlbW90ZVJlc291cmNlQ2FjaGVQcm94eSgpIHsgcmV0dXJuIG1fcmVtb3RlUmVzb3Vy
Y2VDYWNoZVByb3h5OyB9Ci0gICAgV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1CdWZmZXJIYW5k
bGUgY3JlYXRlSXRlbUJ1ZmZlcihzaXplX3QpOworICAgIFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJ
dGVtQnVmZmVySGFuZGxlIGNyZWF0ZUl0ZW1CdWZmZXIoc2l6ZV90IGNhcGFjaXR5LCBXZWJDb3Jl
OjpSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpOwogCiAgICAgLy8gSVBDOjpNZXNzYWdlU2Vu
ZGVyLgogICAgIElQQzo6Q29ubmVjdGlvbiogbWVzc2FnZVNlbmRlckNvbm5lY3Rpb24oKSBjb25z
dCBvdmVycmlkZTsKQEAgLTgyLDEyICs4NSwxNiBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAgIFJl
bW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eSgpOwogCisgICAgdm9pZCB1cGRhdGVSZXVzYWJsZUhh
bmRsZXMoKTsKKwogICAgIC8vIE1lc3NhZ2VzIHRvIGJlIHJlY2VpdmVkLgogICAgIHZvaWQgaW1h
Z2VCdWZmZXJCYWNrZW5kV2FzQ3JlYXRlZChjb25zdCBXZWJDb3JlOjpGbG9hdFNpemUmIGxvZ2lj
YWxTaXplLCBjb25zdCBXZWJDb3JlOjpJbnRTaXplJiBiYWNrZW5kU2l6ZSwgZmxvYXQgcmVzb2x1
dGlvblNjYWxlLCBXZWJDb3JlOjpDb2xvclNwYWNlLCBJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGUs
IFdlYkNvcmU6OlJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcik7CiAgICAgdm9pZCBmbHVzaERp
c3BsYXlMaXN0V2FzQ29tbWl0dGVkKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpGbHVzaElkZW50aWZp
ZXIsIFdlYkNvcmU6OlJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcik7CiAKICAgICBSZW1vdGVS
ZXNvdXJjZUNhY2hlUHJveHkgbV9yZW1vdGVSZXNvdXJjZUNhY2hlUHJveHk7Ci0gICAgSGFzaE1h
cDxXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbUJ1ZmZlcklkZW50aWZpZXIsIFJlZlB0cjxTaGFy
ZWRNZW1vcnk+PiBtX3NoYXJlZEl0ZW1CdWZmZXJzOworICAgIEhhc2hNYXA8V2ViQ29yZTo6RGlz
cGxheUxpc3Q6Okl0ZW1CdWZmZXJJZGVudGlmaWVyLCBzdGQ6OnVuaXF1ZV9wdHI8RGlzcGxheUxp
c3RXcml0ZXJIYW5kbGU+PiBtX3NoYXJlZERpc3BsYXlMaXN0SGFuZGxlczsKKyAgICBEZXF1ZTxX
ZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbUJ1ZmZlcklkZW50aWZpZXI+IG1faWRlbnRpZmllcnNP
ZlJldXNhYmxlSGFuZGxlczsKKyAgICBIYXNoU2V0PFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVt
QnVmZmVySWRlbnRpZmllcj4gbV9pZGVudGlmaWVyc09mSGFuZGxlc0F2YWlsYWJsZUZvcldyaXRp
bmc7CiAgICAgUmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXIgbV9yZW5kZXJpbmdCYWNrZW5kSWRl
bnRpZmllciB7IFJlbmRlcmluZ0JhY2tlbmRJZGVudGlmaWVyOjpnZW5lcmF0ZSgpIH07CiB9Owog
Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>413526</attachid>
            <date>2020-11-07 09:40:32 -0800</date>
            <delta_ts>2020-11-07 13:16:16 -0800</delta_ts>
            <desc>Tweak ChangeLog wording</desc>
            <filename>bug-218426-20201107094031.patch</filename>
            <type>text/plain</type>
            <size>59177</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY5NTYwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGU2M2RjZjg2NTgxZmIzNTFm
ZjE4OTU5Y2ViMGY0NWU5OTczODM3YjkuLmY4ZTg1MzM5YzJkNDMwODc5YTQzMWY3MTVjNTlhODVj
ZjQ3N2I1MDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQ5IEBACisyMDIwLTExLTA0ICBXZW5zb24g
SHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAgICAgIFtDb25jdXJyZW50IGRp
c3BsYXkgbGlzdHNdIEFkZCBhbiBpbml0aWFsIGltcGxlbWVudGF0aW9uIG9mIGNvbmN1cnJlbnQg
ZGlzcGxheSBsaXN0IHJlbmRlcmluZworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MjE4NDI2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgVGhpcyBwYXRjaCBhZGRzIGEgZmlyc3QtY3V0IGltcGxlbWVudGF0aW9u
IG9mIGNvbmN1cnJlbnQgZGlzcGxheSBsaXN0IHJlbmRlcmluZywgd2hpY2ggYWxsb3dzIHRoZSBH
UFUgYW5kIHdlYgorICAgICAgICBwcm9jZXNzZXMgdG8gcmVhZCBhbmQgd3JpdGUgZGlzcGxheSBs
aXN0IGRhdGEgYXQgdGhlIHNhbWUgdGltZS4gVG8gYWNoaWV2ZSB0aGlzLCB3ZSByZW1vdmUgdGhl
IHBsYWNlaG9sZGVyCisgICAgICAgIHNoYXJlZCBtZW1vcnkgZGlzcGxheSBsaXN0IGVuY29kaW5n
IG1lY2hhbmlzbSBwcmV2aW91c2x5IGFkZGVkIGluIDx3ZWJraXQub3JnL2IvMjE4NDA2PiwgYW5k
IHJlcGxhY2UgaXQgd2l0aCBhCisgICAgICAgIG5ldyBtb2RlbCBpbiB3aGljaCBhIHdyaXRlciAo
aS5lLiB0aGUgd2ViIHByb2Nlc3MpIGFuZCBhIHJlYWRlciAoaS5lLiB0aGUgR1BVIHByb2Nlc3Mp
IHNoYXJlIGEgc2V0IG9mIHJldXNhYmxlCisgICAgICAgIHNoYXJlZCBtZW1vcnkgYnVmZmVycyB3
aGljaCBjb250YWluIGRpc3BsYXkgbGlzdCBpdGVtIGRhdGEuIEFzIHRoZSB3cml0ZXIgYXBwZW5k
cyBkYXRhIHRvIHNoYXJlZCBtZW1vcnksIGl0CisgICAgICAgIGluY3JlbWVudHMgYSBjb3VudGVy
IGluIGVhY2ggc2hhcmVkIG1lbW9yeSBidWZmZXIgdGhhdCByZXByZXNlbnRzIHRoZSBudW1iZXIg
b2YgYnl0ZXMgdGhhdCB0aGUgcmVhZGVyIGhhcyB5ZXQgdG8KKyAgICAgICAgcmVhZDsgYXMgdGhl
IHJlYWRlciByZWFkcyBkaXNwbGF5IGxpc3QgaXRlbXMgZnJvbSBzaGFyZWQgbWVtb3J5LCBpdCBk
ZWNyZW1lbnRzIHRoaXMgY291bnRlci4KKworICAgICAgICBUaGlzIHBhdGNoIGFsc28gaW1wbGVt
ZW50cyBhIHNpbXBsZSBzdHJhdGVneSBmb3IgcmV1c2luZyB0aGVzZSBzaGFyZWQgaXRlbSBidWZm
ZXJzLiBUaGUgd2ViIHByb2Nlc3MgbWFpbnRhaW5zIGEKKyAgICAgICAgcXVldWUgb2YgcmV1c2Fi
bGUgYnVmZmVyczsgd2hlbiBkaXNwbGF5IGxpc3QgaXRlbXMgYXJlIGFwcGVuZGVkIGFuZCB0aGUg
Y3VycmVudCB3cml0YWJsZSBidWZmZXIgaXMgb3V0IG9mCisgICAgICAgIGNhcGFjaXR5LCB0aGUg
ZGlzcGxheSBsaXN0IGl0ZW0gYnVmZmVyIGNhbGxzIG91dCB0byBXZWJLaXQyIHZpYSBhIGNsaWVu
dCBtZXRob2QgdG8gcmVxdWVzdCBtb3JlIHNoYXJlZCBtZW1vcnkuCisgICAgICAgIEhlcmUsIHRo
ZSB3ZWIgcHJvY2VzcyB0cmF2ZXJzZXMgdGhlIHF1ZXVlIG9mIHJldXNhYmxlIGl0ZW0gYnVmZmVy
cyBpbiBzZWFyY2ggb2YgYSBidWZmZXIgd2l0aCBzdWZmaWNpZW50CisgICAgICAgIGNhcGFjaXR5
OyBpZiBmb3VuZCwgd2UgaGFuZCB0aGlzIGJhY2sgdG8gV2ViQ29yZSBhcyBhbiBvcGFxdWUgYEl0
ZW1CdWZmZXJIYW5kbGVgOyBvdGhlcndpc2UsIHdlIGFsbG9jYXRlIGEgbmV3CisgICAgICAgIHJl
dXNhYmxlIHNoYXJlZCBtZW1vcnkgYnVmZmVyLiBJdGVtIGJ1ZmZlcnMgdGhhdCBoYXZlIGJlZW4g
dXNlZCBiZWNvbWUgcmV1c2FibGUgb25seSBhZnRlciB0aGV5IGFyZSAoMSkgbm8KKyAgICAgICAg
bG9uZ2VyIGJlaW5nIHJlYWQgZnJvbSAtLSBpLmUuLCB0aGUgY291bnRlciB2YWx1ZSBpcyAwLCBh
bmQgKDIpIHRoZXkgYXJlIG5vdCBhY3RpdmVseSBiZWluZyB3cml0dGVuIHRvLgorICAgICAgICBC
dWZmZXJzIHRoYXQgaGF2ZSBiZWVuIHVzZWQgYXJlIGxhemlseSByZWludHJvZHVjZWQgaW50byB0
aGUgcmV1c2UgcXVldWUgd2hlbiBhIGRpc3BsYXkgbGlzdCByZXF1ZXN0cyBhIGhhbmRsZQorICAg
ICAgICB0byB3cml0YWJsZSBpdGVtIGJ1ZmZlciBkYXRhLgorCisgICAgICAgIFNlZSBiZWxvdyBm
b3IgbW9yZSBkZXRhaWxzLgorCisgICAgICAgICogR1BVUHJvY2Vzcy9ncmFwaGljcy9EaXNwbGF5
TGlzdFJlYWRlckhhbmRsZS5jcHA6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJLaXQvU2hhcmVkL1No
YXJlZERpc3BsYXlMaXN0SGFuZGxlLmNwcC4KKyAgICAgICAgKFdlYktpdDo6RGlzcGxheUxpc3RS
ZWFkZXJIYW5kbGU6OmFkdmFuY2UpOgorICAgICAgICAoV2ViS2l0OjpEaXNwbGF5TGlzdFJlYWRl
ckhhbmRsZTo6Y3JlYXRlRGlzcGxheUxpc3QgY29uc3QpOgorICAgICAgICAqIEdQVVByb2Nlc3Mv
Z3JhcGhpY3MvRGlzcGxheUxpc3RSZWFkZXJIYW5kbGUuaDogQ29waWVkIGZyb20gU291cmNlL1dl
YktpdC9TaGFyZWQvU2hhcmVkRGlzcGxheUxpc3RIYW5kbGUuY3BwLgorICAgICAgICAoV2ViS2l0
OjpEaXNwbGF5TGlzdFJlYWRlckhhbmRsZTo6RGlzcGxheUxpc3RSZWFkZXJIYW5kbGUpOgorCisg
ICAgICAgIEFkZCBhIG5ldyBoZWxwZXIgY2xhc3MgdG8gcmVwcmVzZW50IGEgc2hhcmVkIGRpc3Bs
YXkgbGlzdCBpdGVtIGJ1ZmZlciB0aGF0IHRoZSBHUFUgcHJvY2VzcyBjYW4gdXNlIHRvIGNvbnN1
bWUKKyAgICAgICAgZGlzcGxheSBsaXN0IGl0ZW1zLiBBZHZhbmNpbmcgdGhlIGN1cnNvciBpbiBg
RGlzcGxheUxpc3RSZWFkZXJIYW5kbGVgIGRlY3JlbWVudHMgdGhlICJyZW1haW5pbmcgYnl0ZXMi
IGNvdW50ZXI7CisgICAgICAgIHRoZSBjbGFzcyBhbHNvIGhhcyBhIGhlbHBlciBtZXRob2QgZm9y
IGNyZWF0aW5nIGEgbmV3IGBEaXNwbGF5TGlzdGAgd2l0aCBhIGdpdmVuIG9mZnNldCBpbnRvIHRo
ZSBzaGFyZWQgYnVmZmVyLAorICAgICAgICBhcyB3ZWxsIHRoZSBudW1iZXIgb2YgYnl0ZXMgdG8g
cmVhZC4KKworICAgICAgICAqIEdQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlSW1hZ2VCdWZmZXIu
aDoKKworICAgICAgICBIYW5kbGUgdGhlIGBNZXRhQ29tbWFuZFN3aXRjaFRvYCBhbmQgYEZsdXNo
Q29udGV4dGAgaXRlbXMgYnkgKHJlc3BlY3RpdmVseSkgaW5mb3JtaW5nIHRoZSByZW5kZXJpbmcg
YmFja2VuZAorICAgICAgICBhYm91dCB0aGUgbmV4dCBidWZmZXIgdG8gcmVhZCBmcm9tLCBhbmQg
c2VuZGluZyBhICJmbHVzaCBjb21taXR0ZWQiIElQQyBtZXNzYWdlIGJhY2sgdG8gdGhlIHdlYiBw
cm9jZXNzLgorCisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUltYWdlQnVmZmVyOjpSZW1vdGVJbWFn
ZUJ1ZmZlcik6CisgICAgICAgICogR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdC
YWNrZW5kLmNwcDoKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6d2Fr
ZVVwQW5kUHJvY2Vzc0Rpc3BsYXlMaXN0KToKKworICAgICAgICBUaGlzIGlzIHRoZSBtYWluIGxv
b3AgaW4gdGhlIEdQVSBwcm9jZXNzIHRoYXQgaXMgcmVzcG9uc2libGUgZm9yIGFwcGx5aW5nIGlu
Y29taW5nIGRpc3BsYXkgbGlzdCBpdGVtIGRhdGEuIFRoaXMKKyAgICAgICAgSVBDIGVuZHBvaW50
IHJlY2VpdmVzIGluZm9ybWF0aW9uIGFib3V0IHdoZXJlIHRvIHN0YXJ0IChpLmUuIGFuIGl0ZW0g
YnVmZmVyIElEIGFuZCBhbiBvZmZzZXQgaW50byBzaGFyZWQgbWVtb3J5CisgICAgICAgIGluIHRo
YXQgYnVmZmVyKSBhbmQgYmVnaW5zIHJlYWRpbmcgcmFuZ2VzIG9mIGRpc3BsYXkgbGlzdCBpdGVt
IGRhdGEgaW5zaWRlIHRoYXQgYnVmZmVyLiBBZnRlciBpdCBpcyBkb25lCisgICAgICAgIHByb2Nl
c3NpbmcgYWxsIG9mIGl0cyB1bnJlYWQgYnl0ZXMsIGl0IHRoZW4gY2hlY2tzIHRoZSB1bnJlYWQg
Ynl0ZSBjb3VudCBvbmNlIGFnYWluLCBhbmQgY29udGludWVzIHRoZSBsb29wIGlmCisgICAgICAg
IHRoZSB3ZWIgcHJvY2VzcyBoYXMgYWR2YW5jZWQgdGhpcyBjb3VudC4KKworICAgICAgICAoV2Vi
S2l0OjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpzZXROZXh0SXRlbUJ1ZmZlclRvUmVhZCk6Cisg
ICAgICAgIChXZWJLaXQ6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OmRpZENyZWF0ZVNoYXJlZERp
c3BsYXlMaXN0SGFuZGxlKToKKworICAgICAgICBBZGQgbG9naWMgdG8gaGFuZGxlIHRoZSBjYXNl
IHdoZXJlIHdlIHJlYWNoZWQgdGhlIGVuZCBvZiBhbiBpdGVtIGJ1ZmZlciwgYnV0IHRoZSBuZXh0
IGJ1ZmZlciBpZGVudGlmaWVyIGlzIHN0aWxsCisgICAgICAgIHVua25vd24gdG8gdXMgKHNpbmNl
IGl0IGlzIHN0aWxsICJpbiB0cmFuc2l0IiB2aWEgdGhlIGBEaWRDcmVhdGVTaGFyZWREaXNwbGF5
TGlzdEhhbmRsZWAgSVBDIG1lc3NhZ2UpLiBJbiB0aGlzCisgICAgICAgIGNhc2UsIHdlIHJlbWVt
YmVyIHRoZSBuZXh0IGJ1ZmZlciBpZGVudGlmaWVyIGluIGBtX25leHRJdGVtQnVmZmVyVG9SZWFk
YCwgYW5kIGV4aXQgdGhlIHByb2Nlc3NpbmcgbG9vcCBpbnNpZGUKKyAgICAgICAgYHdha2VVcEFu
ZFByb2Nlc3NEaXNwbGF5TGlzdGAuIFVwb24gcmVjZWl2aW5nIHRoZSBzaGFyZWQgbWVtb3J5IGhh
bmRsZSBpbiBgZGlkQ3JlYXRlU2hhcmVkRGlzcGxheUxpc3RIYW5kbGVgLCB3ZQorICAgICAgICB0
aGVuIGF1dG9tYXRpY2FsbHkgcmVzdW1lIGRpc3BsYXkgbGlzdCBwcm9jZXNzaW5nLCBzdGFydGlu
ZyBmcm9tIHRoZSBiZWdpbm5pbmcgb2YgdGhpcyBuZXcgYnVmZmVyLgorCisgICAgICAgIChXZWJL
aXQ6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OmFwcGx5RGlzcGxheUxpc3QpOiBEZWxldGVkLgor
ICAgICAgICAoV2ViS2l0OjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpmbHVzaERpc3BsYXlMaXN0
KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6Zmx1
c2hEaXNwbGF5TGlzdEFuZENvbW1pdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OlJlbW90
ZVJlbmRlcmluZ0JhY2tlbmQ6OmRpZENyZWF0ZVNoYXJlZEl0ZW1EYXRhKTogRGVsZXRlZC4KKwor
ICAgICAgICBXZSBkb24ndCBuZWVkIGFueSBvZiB0aGVzZSBtZXRob2RzIGFueW1vcmUsIG5vdyB0
aGF0IHRoZXJlIGlzIG9ubHkgb25lIGNvZGVwYXRoIGZvciBwcm9jZXNzaW5nIGRpc3BsYXkgbGlz
dAorICAgICAgICBpdGVtcy4gU2VlIGBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjp3YWtlVXBBbmRQ
cm9jZXNzRGlzcGxheUxpc3RgIGFib3ZlLiBBbHNvLCByZW5hbWUgYGRpZENyZWF0ZVNoYXJlZEl0
ZW1EYXRhYAorICAgICAgICB0byBgZGlkQ3JlYXRlU2hhcmVkRGlzcGxheUxpc3RIYW5kbGVgIChh
bHNvIGFib3ZlKS4KKworICAgICAgICAqIEdQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVy
aW5nQmFja2VuZC5oOgorICAgICAgICAqIEdQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVy
aW5nQmFja2VuZC5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBTaGFyZWQvU2hhcmVkRGlzcGxheUxp
c3RIYW5kbGUuaDoKKyAgICAgICAgKFdlYktpdDo6U2hhcmVkRGlzcGxheUxpc3RIYW5kbGU6OnNo
YXJlZE1lbW9yeSBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OlNoYXJlZERpc3BsYXlMaXN0SGFu
ZGxlOjpzaGFyZWRNZW1vcnkpOgorICAgICAgICAoV2ViS2l0OjpTaGFyZWREaXNwbGF5TGlzdEhh
bmRsZTo6dW5yZWFkQnl0ZXMgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpTaGFyZWREaXNwbGF5
TGlzdEhhbmRsZTo6ZGF0YSBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OlNoYXJlZERpc3BsYXlM
aXN0SGFuZGxlOjppZGVudGlmaWVyIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6U2hhcmVkRGlz
cGxheUxpc3RIYW5kbGU6OkxvY2s6OkxvY2spOgorICAgICAgICAoV2ViS2l0OjpTaGFyZWREaXNw
bGF5TGlzdEhhbmRsZTo6TG9jazo6fkxvY2spOgorICAgICAgICAoV2ViS2l0OjpTaGFyZWREaXNw
bGF5TGlzdEhhbmRsZTo6U2hhcmVkRGlzcGxheUxpc3RIYW5kbGUpOgorICAgICAgICAoV2ViS2l0
OjpTaGFyZWREaXNwbGF5TGlzdEhhbmRsZTo6dW5yZWFkQnl0ZXNIYW5kbGUpOgorICAgICAgICAo
V2ViS2l0OjpTaGFyZWREaXNwbGF5TGlzdEhhbmRsZTo6YXRvbWljTG9ja1ZhbHVlIGNvbnN0KToK
KyAgICAgICAgKFdlYktpdDo6U2hhcmVkRGlzcGxheUxpc3RIYW5kbGU6OmVuY29kZSBjb25zdCk6
IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OlNoYXJlZERpc3BsYXlMaXN0SGFuZGxlOjpkZWNv
ZGUpOiBEZWxldGVkLgorCisgICAgICAgIFJlcHVycG9zZSBgU2hhcmVkRGlzcGxheUxpc3RIYW5k
bGVgIHRvIHNlcnZlIGFzIGEgYmFzZSBjbGFzcyBmb3IgYm90aCBgRGlzcGxheUxpc3RSZWFkZXJI
YW5kbGVgIGFuZAorICAgICAgICBgRGlzcGxheUxpc3RXcml0ZXJIYW5kbGVgLiBUaGlzIGJhc2Ug
Y2xhc3MgaXMgYXdhcmUgb2YgdGhlIG1lbW9yeSBsYXlvdXQgb2YgdGhlIGRpc3BsYXkgbGlzdCBp
dGVtIGJ1ZmZlciBpbgorICAgICAgICBzaGFyZWQgbWVtb3J5IChpbiBwYXJ0aWN1bGFyLCB0aGUg
ZmFjdCB0aGF0IHRoZSBmaXJzdCBieXRlIGlzIHRoZSBhdG9taWMgbG9jayBhbmQgdGhlIG5leHQg
YHNpemVvZihzaXplX3QpYAorICAgICAgICBieXRlcyBjb250YWluIHRoZSB1bnJlYWQgYnl0ZSBj
b3VudGVyKS4KKworICAgICAgICBUaGlzIGFsc28gZXhwb3NlcyBhIGhlbHBlciBSQUlJIGNsYXNz
LCBgU2hhcmVkRGlzcGxheUxpc3RIYW5kbGU6OkxvY2tgLCB0aGF0IGlzIHVzZWQgdG8gZ3JhYiB0
aGUgbG9jayBvbiBhCisgICAgICAgIHBhcnRpY3VsYXIgc2hhcmVkIGl0ZW0gYnVmZmVyIHdoZW4g
cmVhZGluZyBvciB1cGRhdGluZyB0aGUgdW5yZWFkIGJ5dGVzIGNvdW50ZXIuCisKKyAgICAgICAg
KiBTb3VyY2VzLnR4dDoKKyAgICAgICAgKiBXZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
ajoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9EaXNwbGF5TGlzdFdyaXRlckhh
bmRsZS5jcHA6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJLaXQvU2hhcmVkL1NoYXJlZERpc3BsYXlM
aXN0SGFuZGxlLmNwcC4KKyAgICAgICAgKFdlYktpdDo6RGlzcGxheUxpc3RXcml0ZXJIYW5kbGU6
OmFkdmFuY2UpOgorICAgICAgICAoV2ViS2l0OjpEaXNwbGF5TGlzdFdyaXRlckhhbmRsZTo6YXZh
aWxhYmxlQ2FwYWNpdHkgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpEaXNwbGF5TGlzdFdyaXRl
ckhhbmRsZTo6Y3JlYXRlSGFuZGxlIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6RGlzcGxheUxp
c3RXcml0ZXJIYW5kbGU6OnJlc2V0V3JpdGFibGVPZmZzZXRJZlBvc3NpYmxlKToKKworICAgICAg
ICBUaGlzIGhlbHBlciBtZXRob2QgbW92ZXMgdGhlIHdyaXRhYmxlIG9mZnNldCAoc2VlIGJlbG93
KSBiYWNrIHRvIHRoZSBzdGFydCBvZiB0aGUgYnVmZmVyIGlmIGl0IGlzIG5vdCBiZWluZyByZWFk
CisgICAgICAgIGZyb20gYnkgdGhlIEdQVSBwcm9jZXNzLgorCisgICAgICAgICogV2ViUHJvY2Vz
cy9HUFUvZ3JhcGhpY3MvRGlzcGxheUxpc3RXcml0ZXJIYW5kbGUuaDogUmVuYW1lZCBmcm9tIFNv
dXJjZS9XZWJLaXQvU2hhcmVkL1NoYXJlZERpc3BsYXlMaXN0SGFuZGxlLmNwcC4KKyAgICAgICAg
KFdlYktpdDo6RGlzcGxheUxpc3RXcml0ZXJIYW5kbGU6OkRpc3BsYXlMaXN0V3JpdGVySGFuZGxl
KToKKyAgICAgICAgKFdlYktpdDo6RGlzcGxheUxpc3RXcml0ZXJIYW5kbGU6OndyaXRhYmxlT2Zm
c2V0IGNvbnN0KToKKworICAgICAgICBTaW1pbGFyIHRvIGBEaXNwbGF5TGlzdFJlYWRlckhhbmRs
ZWAsIGV4Y2VwdCB0aGF0IHRoaXMgY29udGFpbnMgbG9naWMgc3BlY2lmaWMgdG8gdGhlIHdlYiBw
cm9jZXNzIGZvciB3cml0aW5nCisgICAgICAgIGRpc3BsYXkgbGlzdCBpdGVtcyBpbnRvIHNoYXJl
ZCBtZW1vcnkuIEFkdmFuY2luZyB0aGUgY3Vyc29yIGluIGBEaXNwbGF5TGlzdFdyaXRlckhhbmRs
ZWAgaW5jcmVtZW50cyB0aGUgY291bnRlci4KKyAgICAgICAgSXQgYWxzbyBpbmNyZW1lbnRzIHRo
ZSBgd3JpdGFibGVPZmZzZXRgIG9mIHRoZSBoYW5kbGUsIHdoaWNoIHJlcHJlc2VudHMgdGhlIG1p
bmltdW0gb2Zmc2V0IGludG8gdGhlIHNoYXJlZAorICAgICAgICBidWZmZXIgdGhhdCBtYXkgY29u
dGFpbiBuZXdseSBhcHBlbmRlZCBkaXNwbGF5IGxpc3QgaXRlbXMuCisKKyAgICAgICAgKiBXZWJQ
cm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVJbWFnZUJ1ZmZlclByb3h5Lmg6CisgICAgICAgICog
V2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5LmNwcDoK
KyAgICAgICAgKFdlYktpdDo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5OjpmbHVzaERpc3Bs
YXlMaXN0KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5Ojp1
cGRhdGVSZXVzYWJsZUhhbmRsZXMpOgorCisgICAgICAgIFRoaXMgcHJpdmF0ZSBoZWxwZXIgaXRl
cmF0ZXMgdGhlIHNldCBvZiBidWZmZXJzIHRoYXQgYXJlIG5vdCBjdXJyZW50bHkgYmVpbmcgd3Jp
dHRlbiB0bywgYW5kIGFkZHMgZWFjaCBvbmUgdG8KKyAgICAgICAgdGhlIHJldXNhYmxlIGJ1ZmZl
ciBxdWV1ZSBvbmx5IGlmIGl0cyB3cml0YWJsZSBvZmZzZXQgaXMgYXQgdGhlIHN0YXJ0LgorCisg
ICAgICAgIChXZWJLaXQ6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eTo6Y3JlYXRlSXRlbUJ1
ZmZlcik6CisKKyAgICAgICAgSW1wbGVtZW50cyBsb2dpYyB0aGF0IGhhbmRzIHNoYXJlZCBpdGVt
IGJ1ZmZlciBkYXRhIGhhbmRsZXMgdG8gV2ViQ29yZSBmb3Igd3JpdGluZyBkaXNwbGF5IGxpc3Qg
aXRlbXMuIFRoaXMgd2lsbAorICAgICAgICB0cnkgdG8gcmV1c2UgYW4gaXRlbSBidWZmZXIgaW4g
dGhlIHJldXNlIHF1ZXVlLCBpZiBwb3NzaWJsZSwgYW5kIGZhbGwgYmFjayB0byBhbGxvY2F0aW5n
IGEgbmV3IGNodW5rIG9mIHNoYXJlZAorICAgICAgICBtZW1vcnkgaWYgbm8gcmV1c2FibGUgYnVm
ZmVyIGlzIGZvdW5kIChvciB0aGUgZXhpc3RpbmcgYnVmZmVycyBoYXZlIGluc3VmZmljaWVudCBj
YXBhY2l0eSkuIFRoZSBmYWN0IHRoYXQgd2UKKyAgICAgICAgaXRlcmF0ZSB0aHJvdWdoIGVhY2gg
cmV1c2FibGUgYnVmZmVyIGluIG9yZGVyLCBjb21iaW5lZCB3aXRoIHRoZSBhYm92ZSBsb2dpYyBp
biBgdXBkYXRlUmV1c2FibGVIYW5kbGVzYCwgZW5zdXJlcworICAgICAgICB0aGF0IG9uY2Ugd2Ug
YmVnaW4gd3JpdGluZyB0byBhIGl0ZW0gYnVmZmVyLCB3ZSB3aWxsIGNvbnRpbnVlIHVzaW5nIHRo
YXQgaXRlbSBidWZmZXIgdW50aWwgaXQgZXhoYXVzdHMgYXZhaWxhYmxlCisgICAgICAgIGNhcGFj
aXR5LgorCisgICAgICAgIFRoaXMgcHJvcGVydHkgaXMgaW1wb3J0YW50IGJlY2F1c2UgaXQgYWxs
b3dzIHRoZSBHUFUgcHJvY2VzcyB0byBzaW1wbHkgc3RhcnQgcmVhZGluZyBpdGVtIGRhdGEgZnJv
bSBhIGdpdmVuCisgICAgICAgIG9mZnNldCBhbmQgYnVmZmVyIElEIChzcGVjaWZpZWQgaW4gdGhl
IGBXYWtlVXBBbmRQcm9jZXNzRGlzcGxheUxpc3RgIElQQyBtZXNzYWdlKSwgYW5kIHNlYW1sZXNz
bHkgY29udGludWUKKyAgICAgICAgcmVhZGluZyBkYXRhIGV2ZW4gYWZ0ZXIgaXQgZXhoYXVzdHMg
YWxsIGF2YWlsYWJsZSBpdGVtIGRhdGEgaW4gdGhlIGN1cnJlbnQgYnVmZmVyIGJ5IGNvbnRpbnVp
bmcgZnJvbSB0aGUgc3RhcnQKKyAgICAgICAgb2YgdGhlIGl0ZW0gYnVmZmVyIHRoYXQgY29udGFp
bnMgdGhlIG5leHQgZGlzcGxheSBsaXN0IGl0ZW1zICh3aGljaCB3ZSBsZWFybiBpbiB0aGUgR1BV
IHByb2Nlc3MgYnkgZW5jb3VudGVyaW5nCisgICAgICAgIGEgYE1ldGFDb21tYW5kU3dpdGNoVG9g
IGl0ZW0gYXQgdGhlIGVuZCBvZiB0aGUgcHJldmlvdXMgYnVmZmVyKS4KKworICAgICAgICBJbiAi
c3RlYWR5IHN0YXRlIiAod2hlcmVpbiBib3RoIHByb2Nlc3NlcyBhcmUgY29uY3VycmVudGx5IHdy
aXRpbmcgYW5kIHJlYWRpbmcgaXRlbXMgYXMgcXVpY2tseSBhcyBwb3NzaWJsZSksCisgICAgICAg
IHRoaXMgbWVhbnMgdGhhdCBhcyB0aGUgd2ViIHByb2Nlc3MgaXMgYnVzeSBmaWxsaW5nIHVwIGVh
Y2ggaXRlbSBidWZmZXIgd2l0aCBpdGVtIGRhdGEsIHRoZSBHUFUgcHJvY2VzcyBpcyBhbHNvCisg
ICAgICAgIGJ1c3kgYXBwbHlpbmcgYWxsIHRoZSBpdGVtIGRhdGEgaW4gb25lIGJ1ZmZlciBhbmQg
YXV0b21hdGljYWxseSBtb3Zpbmcgb24gdG8gdGhlIG5leHQgYnVmZmVyIHdpdGggbm8gYWRkaXRp
b25hbAorICAgICAgICBJUEMgbWVzc2FnZXMgcmVxdWlyZWQuCisKKyAgICAgICAgKFdlYktpdDo6
UmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5OjpmbHVzaERpc3BsYXlMaXN0QW5kQ29tbWl0KTog
RGVsZXRlZC4KKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVSZW5kZXJp
bmdCYWNrZW5kUHJveHkuaDoKKwogMjAyMC0xMS0wNiAgUGVuZyBMaXUgIDxwZW5nLmxpdTZAYXBw
bGUuY29tPgogCiAgICAgICAgIFBpUCByZXR1cm4gdG8gZWxlbWVudCBmdWxsIHNjcmVlbiBpcyBu
b3Qgc21vb3RoIG9uIHNvbWUgd2Vic2l0ZXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BV
UHJvY2Vzcy9ncmFwaGljcy9EaXNwbGF5TGlzdFJlYWRlckhhbmRsZS5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvRGlzcGxheUxpc3RSZWFkZXJIYW5kbGUuY3BwCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLmU4NjE5YzQzZjM1NDE0YzlmYjY4MzBkNmYyNjhjMDIyYmI1OWRmOTQKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvRGlzcGxheUxpc3RS
ZWFkZXJIYW5kbGUuY3BwCkBAIC0wLDAgKzEsNDQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBg
YEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJ
QlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAi
Y29uZmlnLmgiCisjaW5jbHVkZSAiRGlzcGxheUxpc3RSZWFkZXJIYW5kbGUuaCIKKworbmFtZXNw
YWNlIFdlYktpdCB7Cit1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKKwordm9pZCBEaXNwbGF5TGlz
dFJlYWRlckhhbmRsZTo6YWR2YW5jZShzaXplX3QgYW1vdW50KQoreworICAgIHVucmVhZEJ5dGVz
SGFuZGxlKCkgLT0gYW1vdW50OworfQorCitzdGQ6OnVuaXF1ZV9wdHI8RGlzcGxheUxpc3Q6OkRp
c3BsYXlMaXN0PiBEaXNwbGF5TGlzdFJlYWRlckhhbmRsZTo6Y3JlYXRlRGlzcGxheUxpc3Qoc2l6
ZV90IG9mZnNldCwgc2l6ZV90IGNhcGFjaXR5LCBEaXNwbGF5TGlzdDo6SXRlbUJ1ZmZlclJlYWRp
bmdDbGllbnQmIGNsaWVudCkgY29uc3QKK3sKKyAgICBhdXRvIGRpc3BsYXlMaXN0ID0gbWFrZVVu
aXF1ZTxEaXNwbGF5TGlzdDo6RGlzcGxheUxpc3Q+KERpc3BsYXlMaXN0OjpJdGVtQnVmZmVySGFu
ZGxlcyB7eyBpZGVudGlmaWVyKCksIGRhdGEoKSArIG9mZnNldCwgY2FwYWNpdHkgfX0pOworICAg
IGRpc3BsYXlMaXN0LT5zZXRJdGVtQnVmZmVyQ2xpZW50KCZjbGllbnQpOworICAgIHJldHVybiBk
aXNwbGF5TGlzdDsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvRGlzcGxheUxpc3RSZWFkZXJIYW5kbGUuaCBi
L1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9EaXNwbGF5TGlzdFJlYWRlckhhbmRs
ZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjVmM2JiOTllMWM2NWFlN2E2YTRiM2IyNzcyODAwODQzMDYxMDhjODkK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvRGlz
cGxheUxpc3RSZWFkZXJIYW5kbGUuaApAQCAtMCwwICsxLDQ1IEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklC
VVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRT
IENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3By
YWdtYSBvbmNlCisKKyNpbmNsdWRlICJTaGFyZWREaXNwbGF5TGlzdEhhbmRsZS5oIgorI2luY2x1
ZGUgPHd0Zi9GYXN0TWFsbG9jLmg+CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBEaXNw
bGF5TGlzdFJlYWRlckhhbmRsZSA6IHB1YmxpYyBTaGFyZWREaXNwbGF5TGlzdEhhbmRsZSB7Cisg
ICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoRGlzcGxheUxpc3RSZWFkZXJIYW5kbGUpOyBXVEZfTUFL
RV9GQVNUX0FMTE9DQVRFRDsKK3B1YmxpYzoKKyAgICBEaXNwbGF5TGlzdFJlYWRlckhhbmRsZShX
ZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbUJ1ZmZlcklkZW50aWZpZXIgaWRlbnRpZmllciwgUmVm
PFNoYXJlZE1lbW9yeT4mJiBzaGFyZWRNZW1vcnkpCisgICAgICAgIDogU2hhcmVkRGlzcGxheUxp
c3RIYW5kbGUoaWRlbnRpZmllciwgV1RGTW92ZShzaGFyZWRNZW1vcnkpKQorICAgIHsKKyAgICB9
CisKKyAgICB2b2lkIGFkdmFuY2Uoc2l6ZV90IGFtb3VudCkgb3ZlcnJpZGU7CisgICAgc3RkOjp1
bmlxdWVfcHRyPFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEaXNwbGF5TGlzdD4gY3JlYXRlRGlzcGxh
eUxpc3Qoc2l6ZV90IG9mZnNldCwgc2l6ZV90IGNhcGFjaXR5LCBXZWJDb3JlOjpEaXNwbGF5TGlz
dDo6SXRlbUJ1ZmZlclJlYWRpbmdDbGllbnQmKSBjb25zdDsKK307CisKK30gLy8gbmFtZXNwYWNl
IFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1Jl
bW90ZUltYWdlQnVmZmVyLmggYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVt
b3RlSW1hZ2VCdWZmZXIuaAppbmRleCBkYTk5NTgyNDZkNTBhODYxN2Y4ODdkZmU0MGI0NjUxMWU0
NzUzOTAxLi4xMWQyY2QxNDI2ZDRiMThlMThlMzM2Yzk1NGI1MjU1NmVlMzhhNjIwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlSW1hZ2VCdWZmZXIu
aAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlSW1hZ2VCdWZm
ZXIuaApAQCAtNTIsNiArNTIsNyBAQCBwdWJsaWM6CiAgICAgUmVtb3RlSW1hZ2VCdWZmZXIoc3Rk
Ojp1bmlxdWVfcHRyPEJhY2tlbmRUeXBlPiYmIGJhY2tlbmQsIFJlbW90ZVJlbmRlcmluZ0JhY2tl
bmQmIHJlbW90ZVJlbmRlcmluZ0JhY2tlbmQsIFdlYkNvcmU6OlJlbmRlcmluZ1Jlc291cmNlSWRl
bnRpZmllciByZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpCiAgICAgICAgIDogQmFzZUNvbmNy
ZXRlSW1hZ2VCdWZmZXIoV1RGTW92ZShiYWNrZW5kKSwgcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlm
aWVyKQogICAgICAgICAsIG1fcmVtb3RlUmVuZGVyaW5nQmFja2VuZChyZW1vdGVSZW5kZXJpbmdC
YWNrZW5kKQorICAgICAgICAsIG1fcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKHJlbmRlcmlu
Z1Jlc291cmNlSWRlbnRpZmllcikKICAgICB7CiAgICAgICAgIG1fcmVtb3RlUmVuZGVyaW5nQmFj
a2VuZC5pbWFnZUJ1ZmZlckJhY2tlbmRXYXNDcmVhdGVkKG1fYmFja2VuZC0+bG9naWNhbFNpemUo
KSwgbV9iYWNrZW5kLT5iYWNrZW5kU2l6ZSgpLCBtX2JhY2tlbmQtPnJlc29sdXRpb25TY2FsZSgp
LCBtX2JhY2tlbmQtPmNvbG9yU3BhY2UoKSwgbV9iYWNrZW5kLT5jcmVhdGVJbWFnZUJ1ZmZlckJh
Y2tlbmRIYW5kbGUoKSwgcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKTsKICAgICB9CkBAIC04
MywxMiArODQsMTUgQEAgcHJpdmF0ZToKICAgICAgICAgfQogCiAgICAgICAgIGlmIChpdGVtLmlz
PFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpGbHVzaENvbnRleHQ+KCkpIHsKLSAgICAgICAgICAgIC8v
IEZJWE1FOiBOb3QgaW1wbGVtZW50ZWQgeWV0LgorICAgICAgICAgICAgQmFzZUNvbmNyZXRlSW1h
Z2VCdWZmZXI6OmZsdXNoQ29udGV4dCgpOworICAgICAgICAgICAgYXV0byBpZGVudGlmaWVyID0g
aXRlbS5nZXQ8V2ViQ29yZTo6RGlzcGxheUxpc3Q6OkZsdXNoQ29udGV4dD4oKS5pZGVudGlmaWVy
KCk7CisgICAgICAgICAgICBtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmQuZmx1c2hEaXNwbGF5TGlz
dFdhc0NvbW1pdHRlZChpZGVudGlmaWVyLCBtX3JlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcik7
CiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgfQogCiAgICAgICAgIGlmIChpdGVt
LmlzPFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpNZXRhQ29tbWFuZFN3aXRjaFRvPigpKSB7Ci0gICAg
ICAgICAgICAvLyBGSVhNRTogTm90IGltcGxlbWVudGVkIHlldC4KKyAgICAgICAgICAgIGF1dG8g
bmV4dEJ1ZmZlcklkZW50aWZpZXIgPSBpdGVtLmdldDxXZWJDb3JlOjpEaXNwbGF5TGlzdDo6TWV0
YUNvbW1hbmRTd2l0Y2hUbz4oKS5pZGVudGlmaWVyKCk7CisgICAgICAgICAgICBtX3JlbW90ZVJl
bmRlcmluZ0JhY2tlbmQuc2V0TmV4dEl0ZW1CdWZmZXJUb1JlYWQobmV4dEJ1ZmZlcklkZW50aWZp
ZXIpOwogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgIH0KIApAQCAtMjA3LDYgKzIx
MSw3IEBAIHByaXZhdGU6CiAgICAgfQogCiAgICAgUmVtb3RlUmVuZGVyaW5nQmFja2VuZCYgbV9y
ZW1vdGVSZW5kZXJpbmdCYWNrZW5kOworICAgIFdlYkNvcmU6OlJlbmRlcmluZ1Jlc291cmNlSWRl
bnRpZmllciBtX3JlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcjsKIH07CiAKIH0gLy8gbmFtZXNw
YWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNz
L1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQuY3BwIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dy
YXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQuY3BwCmluZGV4IDFhYTc1NDg4MmNlMGU4Yzk5
MjY0N2NjZjg3NTBiOTM0MWNjODQwYTIuLjNhMTlmNDk5ZGZjYjFlODE0MTFkZWQ3M2Q0ZjdiNDhl
MDZjYWQwNzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9S
ZW1vdGVSZW5kZXJpbmdCYWNrZW5kLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mv
Z3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5jcHAKQEAgLTI4LDYgKzI4LDcgQEAKIAog
I2lmIEVOQUJMRShHUFVfUFJPQ0VTUykKIAorI2luY2x1ZGUgIkRpc3BsYXlMaXN0UmVhZGVySGFu
ZGxlLmgiCiAjaW5jbHVkZSAiR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oIgogI2luY2x1ZGUg
IlBsYXRmb3JtUmVtb3RlSW1hZ2VCdWZmZXIuaCIKICNpbmNsdWRlICJSZW1vdGVSZW5kZXJpbmdC
YWNrZW5kTWVzc2FnZXMuaCIKQEAgLTEyNCw0NSArMTI1LDczIEBAIHZvaWQgUmVtb3RlUmVuZGVy
aW5nQmFja2VuZDo6Y3JlYXRlSW1hZ2VCdWZmZXIoY29uc3QgRmxvYXRTaXplJiBsb2dpY2FsU2l6
ZSwgUmVuCiAgICAgbV9yZW1vdGVSZXNvdXJjZUNhY2hlLmNhY2hlSW1hZ2VCdWZmZXIobWFrZVJl
ZigqaW1hZ2VCdWZmZXIpKTsKIH0KIAotdm9pZCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjphcHBs
eURpc3BsYXlMaXN0KGNvbnN0IFNoYXJlZERpc3BsYXlMaXN0SGFuZGxlJiBoYW5kbGUsIFJlbmRl
cmluZ1Jlc291cmNlSWRlbnRpZmllciByZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIsIFNob3Vs
ZEZsdXNoQ29udGV4dCBmbHVzaENvbnRleHQpCit2b2lkIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6
Ondha2VVcEFuZFByb2Nlc3NEaXNwbGF5TGlzdChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbUJ1
ZmZlcklkZW50aWZpZXIgaW5pdGlhbElkZW50aWZpZXIsIHVpbnQ2NF90IGluaXRpYWxPZmZzZXQs
IFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciByZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIp
CiB7Ci0gICAgYXV0byBkaXNwbGF5TGlzdCA9IGhhbmRsZS5jcmVhdGVEaXNwbGF5TGlzdChbJl0g
KFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtQnVmZmVySWRlbnRpZmllciBpZGVudGlmaWVyKSAt
PiB1aW50OF90KiB7Ci0gICAgICAgIGlmIChhdXRvIHNoYXJlZE1lbW9yeSA9IG1fc2hhcmVkSXRl
bUJ1ZmZlcnMudGFrZShpZGVudGlmaWVyKSkKLSAgICAgICAgICAgIHJldHVybiByZWludGVycHJl
dF9jYXN0PHVpbnQ4X3QqPihzaGFyZWRNZW1vcnktPmRhdGEoKSk7Ci0gICAgICAgIHJldHVybiBu
dWxscHRyOwotICAgIH0pOwotCi0gICAgaWYgKCFkaXNwbGF5TGlzdCkgeworICAgIGF1dG8gaW1h
Z2VCdWZmZXIgPSBtX3JlbW90ZVJlc291cmNlQ2FjaGUuY2FjaGVkSW1hZ2VCdWZmZXIocmVuZGVy
aW5nUmVzb3VyY2VJZGVudGlmaWVyKTsKKyAgICBpZiAoIWltYWdlQnVmZmVyKSB7CiAgICAgICAg
IC8vIEZJWE1FOiBBZGQgYSBtZXNzYWdlIGNoZWNrIHRvIHRlcm1pbmF0ZSB0aGUgd2ViIHByb2Nl
c3MuCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBhdXRvIGltYWdlQnVmZmVyID0gbV9y
ZW1vdGVSZXNvdXJjZUNhY2hlLmNhY2hlZEltYWdlQnVmZmVyKHJlbmRlcmluZ1Jlc291cmNlSWRl
bnRpZmllcik7Ci0gICAgaWYgKCFpbWFnZUJ1ZmZlcikgeworICAgIGF1dG8qIHNoYXJlZEhhbmRs
ZSA9IG1fc2hhcmVkRGlzcGxheUxpc3RIYW5kbGVzLmdldChpbml0aWFsSWRlbnRpZmllcik7Cisg
ICAgaWYgKCFzaGFyZWRIYW5kbGUpIHsKICAgICAgICAgLy8gRklYTUU6IEFkZCBhIG1lc3NhZ2Ug
Y2hlY2sgdG8gdGVybWluYXRlIHRoZSB3ZWIgcHJvY2Vzcy4KICAgICAgICAgcmV0dXJuOwogICAg
IH0KIAorICAgIERpc3BsYXlMaXN0OjpJdGVtQnVmZmVyUmVhZGluZ0NsaWVudCogaXRlbUJ1ZmZl
ckNsaWVudDsKICAgICBpZiAoaW1hZ2VCdWZmZXItPmlzQWNjZWxlcmF0ZWQoKSkKLSAgICAgICAg
ZGlzcGxheUxpc3QtPnNldEl0ZW1CdWZmZXJDbGllbnQoc3RhdGljX2Nhc3Q8QWNjZWxlcmF0ZWRS
ZW1vdGVJbWFnZUJ1ZmZlcio+KGltYWdlQnVmZmVyKSk7CisgICAgICAgIGl0ZW1CdWZmZXJDbGll
bnQgPSBzdGF0aWNfY2FzdDxBY2NlbGVyYXRlZFJlbW90ZUltYWdlQnVmZmVyKj4oaW1hZ2VCdWZm
ZXIpOwogICAgIGVsc2UKLSAgICAgICAgZGlzcGxheUxpc3QtPnNldEl0ZW1CdWZmZXJDbGllbnQo
c3RhdGljX2Nhc3Q8VW5hY2NlbGVyYXRlZFJlbW90ZUltYWdlQnVmZmVyKj4oaW1hZ2VCdWZmZXIp
KTsKKyAgICAgICAgaXRlbUJ1ZmZlckNsaWVudCA9IHN0YXRpY19jYXN0PFVuYWNjZWxlcmF0ZWRS
ZW1vdGVJbWFnZUJ1ZmZlcio+KGltYWdlQnVmZmVyKTsKIAotICAgIGltYWdlQnVmZmVyLT5mbHVz
aERpc3BsYXlMaXN0KCpkaXNwbGF5TGlzdCk7CisgICAgc2l6ZV90IG9mZnNldCA9IGluaXRpYWxP
ZmZzZXQ7CisgICAgc2l6ZV90IHNpemVUb1JlYWQgPSAwOwogCi0gICAgaWYgKGZsdXNoQ29udGV4
dCA9PSBTaG91bGRGbHVzaENvbnRleHQ6OlllcykKLSAgICAgICAgaW1hZ2VCdWZmZXItPmZsdXNo
Q29udGV4dCgpOwotfQorICAgIHsKKyAgICAgICAgU2hhcmVkRGlzcGxheUxpc3RIYW5kbGU6Okxv
Y2sgbG9ja2VyIHsgKnNoYXJlZEhhbmRsZSB9OworICAgICAgICBzaXplVG9SZWFkID0gc2hhcmVk
SGFuZGxlLT51bnJlYWRCeXRlcygpOworICAgIH0KIAotdm9pZCBSZW1vdGVSZW5kZXJpbmdCYWNr
ZW5kOjpmbHVzaERpc3BsYXlMaXN0KGNvbnN0IFNoYXJlZERpc3BsYXlMaXN0SGFuZGxlJiBoYW5k
bGUsIFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciByZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZp
ZXIpCi17Ci0gICAgYXBwbHlEaXNwbGF5TGlzdChoYW5kbGUsIHJlbmRlcmluZ1Jlc291cmNlSWRl
bnRpZmllciwgU2hvdWxkRmx1c2hDb250ZXh0OjpObyk7CisgICAgd2hpbGUgKHNpemVUb1JlYWQp
IHsKKyAgICAgICAgaW1hZ2VCdWZmZXItPmZsdXNoRGlzcGxheUxpc3QoKnNoYXJlZEhhbmRsZS0+
Y3JlYXRlRGlzcGxheUxpc3Qob2Zmc2V0LCBzaXplVG9SZWFkLCAqaXRlbUJ1ZmZlckNsaWVudCkp
OworCisgICAgICAgIG9mZnNldCArPSBzaXplVG9SZWFkOworICAgICAgICB7CisgICAgICAgICAg
ICBTaGFyZWREaXNwbGF5TGlzdEhhbmRsZTo6TG9jayBsb2NrZXIgeyAqc2hhcmVkSGFuZGxlIH07
CisgICAgICAgICAgICBzaGFyZWRIYW5kbGUtPmFkdmFuY2Uoc2l6ZVRvUmVhZCk7CisgICAgICAg
ICAgICBzaXplVG9SZWFkID0gc2hhcmVkSGFuZGxlLT51bnJlYWRCeXRlcygpOworICAgICAgICB9
CisgICAgICAgIGlmIChzaXplVG9SZWFkKQorICAgICAgICAgICAgY29udGludWU7CisKKyAgICAg
ICAgYXV0byBuZXh0SWRlbnRpZmllciA9IHN0ZDo6ZXhjaGFuZ2UobV9uZXh0SXRlbUJ1ZmZlclRv
UmVhZCwgeyB9KTsKKyAgICAgICAgaWYgKCFuZXh0SWRlbnRpZmllcikKKyAgICAgICAgICAgIGJy
ZWFrOworCisgICAgICAgIHNoYXJlZEhhbmRsZSA9IG1fc2hhcmVkRGlzcGxheUxpc3RIYW5kbGVz
LmdldChuZXh0SWRlbnRpZmllcik7CisgICAgICAgIGlmICghc2hhcmVkSGFuZGxlKSB7CisgICAg
ICAgICAgICBtX25leHRJdGVtQnVmZmVyVG9SZWFkID0gbmV4dElkZW50aWZpZXI7CisgICAgICAg
ICAgICBicmVhazsKKyAgICAgICAgfQorCisgICAgICAgIG9mZnNldCA9IFNoYXJlZERpc3BsYXlM
aXN0SGFuZGxlOjpyZXNlcnZlZENhcGFjaXR5QXRTdGFydDsKKworICAgICAgICBkbyB7CisgICAg
ICAgICAgICBTaGFyZWREaXNwbGF5TGlzdEhhbmRsZTo6TG9jayBuZXh0QnVmZmVyTG9ja2VyIHsg
KnNoYXJlZEhhbmRsZSB9OworICAgICAgICAgICAgc2l6ZVRvUmVhZCA9IHNoYXJlZEhhbmRsZS0+
dW5yZWFkQnl0ZXMoKTsKKyAgICAgICAgICAgIHN0ZDo6dGhpc190aHJlYWQ6OnlpZWxkKCk7Cisg
ICAgICAgIH0gd2hpbGUgKCFzaXplVG9SZWFkKTsKKyAgICB9CiB9CiAKLXZvaWQgUmVtb3RlUmVu
ZGVyaW5nQmFja2VuZDo6Zmx1c2hEaXNwbGF5TGlzdEFuZENvbW1pdChjb25zdCBTaGFyZWREaXNw
bGF5TGlzdEhhbmRsZSYgaGFuZGxlLCBEaXNwbGF5TGlzdDo6Rmx1c2hJZGVudGlmaWVyIGZsdXNo
SWRlbnRpZmllciwgUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyIHJlbmRlcmluZ1Jlc291cmNl
SWRlbnRpZmllcikKK3ZvaWQgUmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6c2V0TmV4dEl0ZW1CdWZm
ZXJUb1JlYWQoV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1CdWZmZXJJZGVudGlmaWVyIGlkZW50
aWZpZXIpCiB7Ci0gICAgYXBwbHlEaXNwbGF5TGlzdChoYW5kbGUsIHJlbmRlcmluZ1Jlc291cmNl
SWRlbnRpZmllciwgU2hvdWxkRmx1c2hDb250ZXh0OjpZZXMpOwotICAgIGZsdXNoRGlzcGxheUxp
c3RXYXNDb21taXR0ZWQoZmx1c2hJZGVudGlmaWVyLCByZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZp
ZXIpOworICAgIGlmIChVTkxJS0VMWShtX25leHRJdGVtQnVmZmVyVG9SZWFkKSkgeworICAgICAg
ICAvLyBGSVhNRTogQWRkIGEgbWVzc2FnZSBjaGVjayB0byB0ZXJtaW5hdGUgdGhlIHdlYiBwcm9j
ZXNzLgorICAgICAgICByZXR1cm47CisgICAgfQorICAgIG1fbmV4dEl0ZW1CdWZmZXJUb1JlYWQg
PSBpZGVudGlmaWVyOwogfQogCiB2b2lkIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OmdldEltYWdl
RGF0YShBbHBoYVByZW11bHRpcGxpY2F0aW9uIG91dHB1dEZvcm1hdCwgSW50UmVjdCBzcmNSZWN0
LCBSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVy
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKElQQzo6SW1hZ2VEYXRhUmVmZXJlbmNlJiYpPiYmIGNv
bXBsZXRpb25IYW5kbGVyKQpAQCAtMTc4LDEwICsyMDcsMTUgQEAgdm9pZCBSZW1vdGVSZW5kZXJp
bmdCYWNrZW5kOjpyZWxlYXNlUmVtb3RlUmVzb3VyY2UoUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlm
aWVyIHIKICAgICBtX3JlbW90ZVJlc291cmNlQ2FjaGUucmVsZWFzZVJlbW90ZVJlc291cmNlKHJl
bmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcik7CiB9CiAKLXZvaWQgUmVtb3RlUmVuZGVyaW5nQmFj
a2VuZDo6ZGlkQ3JlYXRlU2hhcmVkSXRlbURhdGEoRGlzcGxheUxpc3Q6Okl0ZW1CdWZmZXJJZGVu
dGlmaWVyIGlkZW50aWZpZXIsIGNvbnN0IFNoYXJlZE1lbW9yeTo6SVBDSGFuZGxlJiBoYW5kbGUp
Cit2b2lkIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OmRpZENyZWF0ZVNoYXJlZERpc3BsYXlMaXN0
SGFuZGxlKERpc3BsYXlMaXN0OjpJdGVtQnVmZmVySWRlbnRpZmllciBpZGVudGlmaWVyLCBjb25z
dCBTaGFyZWRNZW1vcnk6OklQQ0hhbmRsZSYgaGFuZGxlLCBSZW5kZXJpbmdSZXNvdXJjZUlkZW50
aWZpZXIgcmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyKQogewotICAgIGlmIChhdXRvIHNoYXJlZE1l
bW9yeSA9IFNoYXJlZE1lbW9yeTo6bWFwKGhhbmRsZS5oYW5kbGUsIFNoYXJlZE1lbW9yeTo6UHJv
dGVjdGlvbjo6UmVhZE9ubHkpKQotICAgICAgICBtX3NoYXJlZEl0ZW1CdWZmZXJzLnNldChpZGVu
dGlmaWVyLCBXVEZNb3ZlKHNoYXJlZE1lbW9yeSkpOworICAgIGlmIChhdXRvIHNoYXJlZE1lbW9y
eSA9IFNoYXJlZE1lbW9yeTo6bWFwKGhhbmRsZS5oYW5kbGUsIFNoYXJlZE1lbW9yeTo6UHJvdGVj
dGlvbjo6UmVhZFdyaXRlKSkKKyAgICAgICAgbV9zaGFyZWREaXNwbGF5TGlzdEhhbmRsZXMuc2V0
KGlkZW50aWZpZXIsIG1ha2VVbmlxdWU8RGlzcGxheUxpc3RSZWFkZXJIYW5kbGU+KGlkZW50aWZp
ZXIsIHNoYXJlZE1lbW9yeS5yZWxlYXNlTm9uTnVsbCgpKSk7CisKKyAgICBpZiAobV9uZXh0SXRl
bUJ1ZmZlclRvUmVhZCA9PSBpZGVudGlmaWVyKSB7CisgICAgICAgIG1fbmV4dEl0ZW1CdWZmZXJU
b1JlYWQgPSB7IH07CisgICAgICAgIHdha2VVcEFuZFByb2Nlc3NEaXNwbGF5TGlzdChpZGVudGlm
aWVyLCBTaGFyZWREaXNwbGF5TGlzdEhhbmRsZTo6cmVzZXJ2ZWRDYXBhY2l0eUF0U3RhcnQsIHJl
bW90ZVJlc291cmNlSWRlbnRpZmllcik7CisgICAgfQogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJL
aXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVS
ZW5kZXJpbmdCYWNrZW5kLmggYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVt
b3RlUmVuZGVyaW5nQmFja2VuZC5oCmluZGV4IGZlZjQ2OWZjMzI2ODMzODJiNTRkNzc4NGFlYWI2
OWVjZTg2ZTk5MDguLjA1NWRhODYzMWIzNjEzM2ZmMWU0YzZiNmI1NmQzZjEyZWE0Mzc3NzMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5kZXJp
bmdCYWNrZW5kLmgKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90
ZVJlbmRlcmluZ0JhY2tlbmQuaApAQCAtMzQsNyArMzQsNiBAQAogI2luY2x1ZGUgIk1lc3NhZ2VT
ZW5kZXIuaCIKICNpbmNsdWRlICJSZW1vdGVSZXNvdXJjZUNhY2hlLmgiCiAjaW5jbHVkZSAiUmVu
ZGVyaW5nQmFja2VuZElkZW50aWZpZXIuaCIKLSNpbmNsdWRlICJTaGFyZWREaXNwbGF5TGlzdEhh
bmRsZS5oIgogI2luY2x1ZGUgPFdlYkNvcmUvQ29sb3JTcGFjZS5oPgogI2luY2x1ZGUgPFdlYkNv
cmUvRGlzcGxheUxpc3QuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0Rpc3BsYXlMaXN0SXRlbXMuaD4K
QEAgLTUyLDYgKzUxLDcgQEAgZW51bSBjbGFzcyBSZW5kZXJpbmdNb2RlIDogYm9vbDsKIAogbmFt
ZXNwYWNlIFdlYktpdCB7CiAKK2NsYXNzIERpc3BsYXlMaXN0UmVhZGVySGFuZGxlOwogY2xhc3Mg
R1BVQ29ubmVjdGlvblRvV2ViUHJvY2VzczsKIAogY2xhc3MgUmVtb3RlUmVuZGVyaW5nQmFja2Vu
ZApAQCAtNzEsMTIgKzcxLDExIEBAIHB1YmxpYzoKICAgICB2b2lkIGltYWdlQnVmZmVyQmFja2Vu
ZFdhc0NyZWF0ZWQoY29uc3QgV2ViQ29yZTo6RmxvYXRTaXplJiBsb2dpY2FsU2l6ZSwgY29uc3Qg
V2ViQ29yZTo6SW50U2l6ZSYgYmFja2VuZFNpemUsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwgV2Vi
Q29yZTo6Q29sb3JTcGFjZSwgSW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxlLCBXZWJDb3JlOjpSZW5k
ZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpOwogICAgIHZvaWQgZmx1c2hEaXNwbGF5TGlzdFdhc0Nv
bW1pdHRlZChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6Rmx1c2hJZGVudGlmaWVyLCBXZWJDb3JlOjpS
ZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpOwogCisgICAgdm9pZCBzZXROZXh0SXRlbUJ1ZmZl
clRvUmVhZChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbUJ1ZmZlcklkZW50aWZpZXIpOworCiBw
cml2YXRlOgogICAgIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQoR1BVQ29ubmVjdGlvblRvV2ViUHJv
Y2VzcyYsIFJlbmRlcmluZ0JhY2tlbmRJZGVudGlmaWVyKTsKIAotICAgIGVudW0gY2xhc3MgU2hv
dWxkRmx1c2hDb250ZXh0IDogYm9vbCB7IE5vLCBZZXMgfTsKLSAgICB2b2lkIGFwcGx5RGlzcGxh
eUxpc3QoY29uc3QgU2hhcmVkRGlzcGxheUxpc3RIYW5kbGUmLCBXZWJDb3JlOjpSZW5kZXJpbmdS
ZXNvdXJjZUlkZW50aWZpZXIsIFNob3VsZEZsdXNoQ29udGV4dCk7Ci0KICAgICAvLyBJUEM6Ok1l
c3NhZ2VTZW5kZXIuCiAgICAgSVBDOjpDb25uZWN0aW9uKiBtZXNzYWdlU2VuZGVyQ29ubmVjdGlv
bigpIGNvbnN0IG92ZXJyaWRlOwogICAgIHVpbnQ2NF90IG1lc3NhZ2VTZW5kZXJEZXN0aW5hdGlv
bklEKCkgY29uc3Qgb3ZlcnJpZGU7CkBAIC04NywxNiArODYsMTYgQEAgcHJpdmF0ZToKIAogICAg
IC8vIE1lc3NhZ2VzIHRvIGJlIHJlY2VpdmVkLgogICAgIHZvaWQgY3JlYXRlSW1hZ2VCdWZmZXIo
Y29uc3QgV2ViQ29yZTo6RmxvYXRTaXplJiBsb2dpY2FsU2l6ZSwgV2ViQ29yZTo6UmVuZGVyaW5n
TW9kZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBXZWJDb3JlOjpDb2xvclNwYWNlLCBXZWJDb3Jl
OjpSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpOwotICAgIHZvaWQgZmx1c2hEaXNwbGF5TGlz
dChjb25zdCBTaGFyZWREaXNwbGF5TGlzdEhhbmRsZSYsIFdlYkNvcmU6OlJlbmRlcmluZ1Jlc291
cmNlSWRlbnRpZmllcik7Ci0gICAgdm9pZCBmbHVzaERpc3BsYXlMaXN0QW5kQ29tbWl0KGNvbnN0
IFNoYXJlZERpc3BsYXlMaXN0SGFuZGxlJiwgV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkZsdXNoSWRl
bnRpZmllciwgV2ViQ29yZTo6UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKTsKKyAgICB2b2lk
IHdha2VVcEFuZFByb2Nlc3NEaXNwbGF5TGlzdChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbUJ1
ZmZlcklkZW50aWZpZXIgaW5pdGlhbElkZW50aWZpZXIsIHVpbnQ2NF90IGluaXRpYWxPZmZzZXQs
IFdlYkNvcmU6OlJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcik7CiAgICAgdm9pZCBnZXRJbWFn
ZURhdGEoV2ViQ29yZTo6QWxwaGFQcmVtdWx0aXBsaWNhdGlvbiBvdXRwdXRGb3JtYXQsIFdlYkNv
cmU6OkludFJlY3Qgc3JjUmVjdCwgV2ViQ29yZTo6UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVy
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKElQQzo6SW1hZ2VEYXRhUmVmZXJlbmNlJiYpPiYmKTsK
ICAgICB2b2lkIHJlbGVhc2VSZW1vdGVSZXNvdXJjZShXZWJDb3JlOjpSZW5kZXJpbmdSZXNvdXJj
ZUlkZW50aWZpZXIpOwotICAgIHZvaWQgZGlkQ3JlYXRlU2hhcmVkSXRlbURhdGEoV2ViQ29yZTo6
RGlzcGxheUxpc3Q6Okl0ZW1CdWZmZXJJZGVudGlmaWVyLCBjb25zdCBTaGFyZWRNZW1vcnk6OklQ
Q0hhbmRsZSYpOworICAgIHZvaWQgZGlkQ3JlYXRlU2hhcmVkRGlzcGxheUxpc3RIYW5kbGUoV2Vi
Q29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1CdWZmZXJJZGVudGlmaWVyLCBjb25zdCBTaGFyZWRNZW1v
cnk6OklQQ0hhbmRsZSYsIFdlYkNvcmU6OlJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcik7CiAK
ICAgICBSZW1vdGVSZXNvdXJjZUNhY2hlIG1fcmVtb3RlUmVzb3VyY2VDYWNoZTsKICAgICBXZWFr
UHRyPEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M+IG1fZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2Vz
czsKICAgICBSZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllciBtX3JlbmRlcmluZ0JhY2tlbmRJZGVu
dGlmaWVyOwotICAgIEhhc2hNYXA8V2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1CdWZmZXJJZGVu
dGlmaWVyLCBSZWZQdHI8U2hhcmVkTWVtb3J5Pj4gbV9zaGFyZWRJdGVtQnVmZmVyczsKKyAgICBI
YXNoTWFwPFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtQnVmZmVySWRlbnRpZmllciwgc3RkOjp1
bmlxdWVfcHRyPERpc3BsYXlMaXN0UmVhZGVySGFuZGxlPj4gbV9zaGFyZWREaXNwbGF5TGlzdEhh
bmRsZXM7CisgICAgV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1CdWZmZXJJZGVudGlmaWVyIG1f
bmV4dEl0ZW1CdWZmZXJUb1JlYWQ7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdC
YWNrZW5kLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1Jl
bW90ZVJlbmRlcmluZ0JhY2tlbmQubWVzc2FnZXMuaW4KaW5kZXggMTg3ODVhZGMwZmQxYjYyMDNl
NTExNDJhOTQ2NDY3NWZiYTRhMTc5My4uYzM5YmUyNGU3ZGNmZTIzMjVmZTQyYmE5YTM4NzM0ZjJl
MmY1OGVmMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1Jl
bW90ZVJlbmRlcmluZ0JhY2tlbmQubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9HUFVQ
cm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQubWVzc2FnZXMuaW4KQEAgLTI0
LDEwICsyNCw5IEBACiAKIG1lc3NhZ2VzIC0+IFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQgTm90UmVm
Q291bnRlZCB7CiAgICAgQ3JlYXRlSW1hZ2VCdWZmZXIoV2ViQ29yZTo6RmxvYXRTaXplIGxvZ2lj
YWxTaXplLCBXZWJDb3JlOjpSZW5kZXJpbmdNb2RlIHJlbmRlcmluZ01vZGUsIGZsb2F0IHJlc29s
dXRpb25TY2FsZSwgV2ViQ29yZTo6Q29sb3JTcGFjZSBjb2xvclNwYWNlLCBXZWJDb3JlOjpSZW5k
ZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKQotICAg
IEZsdXNoRGlzcGxheUxpc3QoV2ViS2l0OjpTaGFyZWREaXNwbGF5TGlzdEhhbmRsZSBkaXNwbGF5
TGlzdCwgV2ViQ29yZTo6UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyIHJlbmRlcmluZ1Jlc291
cmNlSWRlbnRpZmllcikKLSAgICBGbHVzaERpc3BsYXlMaXN0QW5kQ29tbWl0KFdlYktpdDo6U2hh
cmVkRGlzcGxheUxpc3RIYW5kbGUgZGlzcGxheUxpc3QsIFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpG
bHVzaElkZW50aWZpZXIgZmx1c2hJZGVudGlmaWVyLCBXZWJDb3JlOjpSZW5kZXJpbmdSZXNvdXJj
ZUlkZW50aWZpZXIgcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKQorICAgIFdha2VVcEFuZFBy
b2Nlc3NEaXNwbGF5TGlzdChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbUJ1ZmZlcklkZW50aWZp
ZXIgaW5pdGlhbElkZW50aWZpZXIsIHVpbnQ2NF90IGluaXRpYWxPZmZzZXQsIFdlYkNvcmU6OlJl
bmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciByZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpCiAg
ICAgR2V0SW1hZ2VEYXRhKGVudW06dWludDhfdCBXZWJDb3JlOjpBbHBoYVByZW11bHRpcGxpY2F0
aW9uIG91dHB1dEZvcm1hdCwgV2ViQ29yZTo6SW50UmVjdCBzcmNSZWN0LCBXZWJDb3JlOjpSZW5k
ZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKSAtPiAo
SVBDOjpJbWFnZURhdGFSZWZlcmVuY2UgaW1hZ2VEYXRhKSBTeW5jaHJvbm91cwotICAgIERpZENy
ZWF0ZVNoYXJlZEl0ZW1EYXRhKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtQnVmZmVySWRlbnRp
ZmllciBpZGVudGlmaWVyLCBXZWJLaXQ6OlNoYXJlZE1lbW9yeTo6SVBDSGFuZGxlIGhhbmRsZSkK
KyAgICBEaWRDcmVhdGVTaGFyZWREaXNwbGF5TGlzdEhhbmRsZShXZWJDb3JlOjpEaXNwbGF5TGlz
dDo6SXRlbUJ1ZmZlcklkZW50aWZpZXIgaWRlbnRpZmllciwgV2ViS2l0OjpTaGFyZWRNZW1vcnk6
OklQQ0hhbmRsZSBoYW5kbGUsIFdlYkNvcmU6OlJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciBy
ZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIpCiAgICAgUmVsZWFzZVJlbW90ZVJlc291cmNlKFdlYkNv
cmU6OlJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciByZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZp
ZXIpCiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1NoYXJlZERpc3BsYXlM
aXN0SGFuZGxlLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1NoYXJlZERpc3BsYXlMaXN0SGFu
ZGxlLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMWFhNzRkNjE1YWJkM2Y0YTMx
ODYyNTJmZjBmZGNiODcxZTcwZmE1MC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9TaGFyZWREaXNwbGF5TGlzdEhhbmRs
ZS5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSw1MyArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChD
KSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
LSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRP
UlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENP
TlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1
ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIlNoYXJlZERpc3BsYXlMaXN0SGFuZGxlLmgiCi0KLW5h
bWVzcGFjZSBXZWJLaXQgewotdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7Ci0KLVNoYXJlZERpc3Bs
YXlMaXN0SGFuZGxlOjpTaGFyZWREaXNwbGF5TGlzdEhhbmRsZShjb25zdCBEaXNwbGF5TGlzdDo6
RGlzcGxheUxpc3QmIGRpc3BsYXlMaXN0KQotewotICAgIGRpc3BsYXlMaXN0LmZvckVhY2hJdGVt
QnVmZmVyKFsmXSAoYXV0byYgaGFuZGxlKSB7Ci0gICAgICAgIG1fYnVmZmVycy5hcHBlbmQoeyBo
YW5kbGUuaWRlbnRpZmllciwgaGFuZGxlLmNhcGFjaXR5IH0pOwotICAgIH0pOwotfQotCi1zdGQ6
OnVuaXF1ZV9wdHI8RGlzcGxheUxpc3Q6OkRpc3BsYXlMaXN0PiBTaGFyZWREaXNwbGF5TGlzdEhh
bmRsZTo6Y3JlYXRlRGlzcGxheUxpc3QoSXRlbUJ1ZmZlclByb3ZpZGVyJiYgYnVmZmVyUHJvdmlk
ZXIpIGNvbnN0Ci17Ci0gICAgRGlzcGxheUxpc3Q6Okl0ZW1CdWZmZXJIYW5kbGVzIGhhbmRsZXM7
Ci0gICAgaGFuZGxlcy5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KG1fYnVmZmVycy5zaXplKCkpOwot
ICAgIGZvciAoYXV0byYgW2lkZW50aWZpZXIsIGNhcGFjaXR5XSA6IG1fYnVmZmVycykgewotICAg
ICAgICBhdXRvKiBkYXRhID0gYnVmZmVyUHJvdmlkZXIoaWRlbnRpZmllcik7Ci0gICAgICAgIGlm
ICghZGF0YSkKLSAgICAgICAgICAgIHJldHVybiBudWxscHRyOwotCi0gICAgICAgIGhhbmRsZXMu
dW5jaGVja2VkQXBwZW5kKHsgaWRlbnRpZmllciwgZGF0YSwgY2FwYWNpdHkgfSk7Ci0gICAgfQot
ICAgIHJldHVybiBtYWtlVW5pcXVlPERpc3BsYXlMaXN0OjpEaXNwbGF5TGlzdD4oV1RGTW92ZSho
YW5kbGVzKSk7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9TaGFyZWQvU2hhcmVkRGlzcGxheUxpc3RIYW5kbGUuaCBiL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL1NoYXJlZERpc3BsYXlMaXN0SGFuZGxlLmgKaW5kZXggZDE3NWUxMTRmMjNiYzhmYjhl
NTdjZDkwZjY0YTMzYmUyNjJlMWYzMS4uNDY5MmExZWFkMWFlYjdlYzkyMWU4YTVkNTU3ODAzYTkx
YmNlZmVjMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvU2hhcmVkRGlzcGxheUxp
c3RIYW5kbGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9TaGFyZWREaXNwbGF5TGlzdEhh
bmRsZS5oCkBAIC0yNSw0MiArMjUsNjMgQEAKIAogI3ByYWdtYSBvbmNlCiAKKyNpbmNsdWRlICJT
aGFyZWRNZW1vcnkuaCIKICNpbmNsdWRlIDxXZWJDb3JlL0Rpc3BsYXlMaXN0Lmg+CisjaW5jbHVk
ZSA8YXRvbWljPgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAogY2xhc3MgU2hhcmVkRGlzcGxheUxp
c3RIYW5kbGUgewogcHVibGljOgotICAgIHVzaW5nIEl0ZW1CdWZmZXJQcm92aWRlciA9IEZ1bmN0
aW9uPHVpbnQ4X3QqKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtQnVmZmVySWRlbnRpZmllcik+
OworICAgIHZpcnR1YWwgflNoYXJlZERpc3BsYXlMaXN0SGFuZGxlKCkgPSBkZWZhdWx0OwogCi0g
ICAgU2hhcmVkRGlzcGxheUxpc3RIYW5kbGUoY29uc3QgV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRp
c3BsYXlMaXN0Jik7Ci0gICAgc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpE
aXNwbGF5TGlzdD4gY3JlYXRlRGlzcGxheUxpc3QoSXRlbUJ1ZmZlclByb3ZpZGVyJiYpIGNvbnN0
OworICAgIHN0YXRpYyBjb25zdGV4cHIgYXV0byByZXNlcnZlZENhcGFjaXR5QXRTdGFydCA9IHNp
emVvZihib29sKSArIHNpemVvZihzaXplX3QpOwogCi0gICAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rl
cj4gdm9pZCBlbmNvZGUoRW5jb2RlciYpIGNvbnN0OwotICAgIHRlbXBsYXRlPGNsYXNzIERlY29k
ZXI+IHN0YXRpYyBPcHRpb25hbDxTaGFyZWREaXNwbGF5TGlzdEhhbmRsZT4gZGVjb2RlKERlY29k
ZXImKTsKKyAgICBjb25zdCBTaGFyZWRNZW1vcnkmIHNoYXJlZE1lbW9yeSgpIGNvbnN0IHsgcmV0
dXJuIG1fc2hhcmVkTWVtb3J5LmdldCgpOyB9CisgICAgU2hhcmVkTWVtb3J5JiBzaGFyZWRNZW1v
cnkoKSB7IHJldHVybiBtX3NoYXJlZE1lbW9yeS5nZXQoKTsgfQorICAgIHNpemVfdCB1bnJlYWRC
eXRlcygpIGNvbnN0IHsgcmV0dXJuICpyZWludGVycHJldF9jYXN0PHNpemVfdCo+KGRhdGEoKSAr
IHNpemVvZihib29sKSk7IH0KKyAgICB1aW50OF90KiBkYXRhKCkgY29uc3QgeyByZXR1cm4gcmVp
bnRlcnByZXRfY2FzdDx1aW50OF90Kj4oc2hhcmVkTWVtb3J5KCkuZGF0YSgpKTsgfQorICAgIFdl
YkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtQnVmZmVySWRlbnRpZmllciBpZGVudGlmaWVyKCkgY29u
c3QgeyByZXR1cm4gbV9pZGVudGlmaWVyOyB9CiAKLXByaXZhdGU6Ci0gICAgU2hhcmVkRGlzcGxh
eUxpc3RIYW5kbGUoVmVjdG9yPHN0ZDo6cGFpcjxXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbUJ1
ZmZlcklkZW50aWZpZXIsIHNpemVfdD4+JiYgYnVmZmVycykKLSAgICAgICAgOiBtX2J1ZmZlcnMo
V1RGTW92ZShidWZmZXJzKSkKKyAgICB2aXJ0dWFsIHZvaWQgYWR2YW5jZShzaXplX3QgYW1vdW50
KSA9IDA7CisKKyAgICBjbGFzcyBMb2NrIHsKKyAgICBwdWJsaWM6CisgICAgICAgIExvY2soU2hh
cmVkRGlzcGxheUxpc3RIYW5kbGUmIGhhbmRsZSkKKyAgICAgICAgICAgIDogbV9oYW5kbGUoaGFu
ZGxlKQorICAgICAgICB7CisgICAgICAgICAgICBhdXRvJiBhdG9taWNWYWx1ZSA9IG1faGFuZGxl
LmF0b21pY0xvY2tWYWx1ZSgpOworICAgICAgICAgICAgd2hpbGUgKHRydWUpIHsKKyAgICAgICAg
ICAgICAgICBzdGQ6OnRoaXNfdGhyZWFkOjp5aWVsZCgpOworICAgICAgICAgICAgICAgIGJvb2wg
dW5sb2NrZWQgPSBmYWxzZTsKKyAgICAgICAgICAgICAgICBpZiAoYXRvbWljVmFsdWUuY29tcGFy
ZV9leGNoYW5nZV93ZWFrKHVubG9ja2VkLCB0cnVlKSkKKyAgICAgICAgICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICB+TG9jaygpCisgICAgICAg
IHsKKyAgICAgICAgICAgIG1faGFuZGxlLmF0b21pY0xvY2tWYWx1ZSgpLnN0b3JlKGZhbHNlKTsK
KyAgICAgICAgfQorCisgICAgcHJpdmF0ZToKKyAgICAgICAgU2hhcmVkRGlzcGxheUxpc3RIYW5k
bGUmIG1faGFuZGxlOworICAgIH07CisKK3Byb3RlY3RlZDoKKyAgICBTaGFyZWREaXNwbGF5TGlz
dEhhbmRsZShXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbUJ1ZmZlcklkZW50aWZpZXIgaWRlbnRp
ZmllciwgUmVmPFNoYXJlZE1lbW9yeT4mJiBzaGFyZWRNZW1vcnkpCisgICAgICAgIDogbV9pZGVu
dGlmaWVyKGlkZW50aWZpZXIpCisgICAgICAgICwgbV9zaGFyZWRNZW1vcnkoV1RGTW92ZShzaGFy
ZWRNZW1vcnkpKQogICAgIHsKICAgICB9CiAKLSAgICBWZWN0b3I8c3RkOjpwYWlyPFdlYkNvcmU6
OkRpc3BsYXlMaXN0OjpJdGVtQnVmZmVySWRlbnRpZmllciwgc2l6ZV90Pj4gbV9idWZmZXJzOwot
fTsKLQotdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4gdm9pZCBTaGFyZWREaXNwbGF5TGlzdEhhbmRs
ZTo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0Ci17Ci0gICAgZW5jb2RlciA8PCBtX2J1
ZmZlcnM7Ci19CisgICAgc2l6ZV90JiB1bnJlYWRCeXRlc0hhbmRsZSgpIHsgcmV0dXJuICpyZWlu
dGVycHJldF9jYXN0PHNpemVfdCo+KGRhdGEoKSArIHNpemVvZihib29sKSk7IH0KIAotdGVtcGxh
dGU8Y2xhc3MgRGVjb2Rlcj4gT3B0aW9uYWw8U2hhcmVkRGlzcGxheUxpc3RIYW5kbGU+IFNoYXJl
ZERpc3BsYXlMaXN0SGFuZGxlOjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKLXsKLSAgICBPcHRp
b25hbDxWZWN0b3I8c3RkOjpwYWlyPFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtQnVmZmVySWRl
bnRpZmllciwgc2l6ZV90Pj4+IGJ1ZmZlcnM7Ci0gICAgZGVjb2RlciA+PiBidWZmZXJzOwotICAg
IGlmICghYnVmZmVycykKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKK3ByaXZhdGU6Cisg
ICAgc3RkOjphdG9taWM8Ym9vbD4mIGF0b21pY0xvY2tWYWx1ZSgpIGNvbnN0IHsgcmV0dXJuICpz
dGF0aWNfY2FzdDxzdGQ6OmF0b21pYzxib29sPio+KHNoYXJlZE1lbW9yeSgpLmRhdGEoKSk7IH0K
IAotICAgIHJldHVybiB7eyBXVEZNb3ZlKCpidWZmZXJzKSB9fTsKLX0KKyAgICBXZWJDb3JlOjpE
aXNwbGF5TGlzdDo6SXRlbUJ1ZmZlcklkZW50aWZpZXIgbV9pZGVudGlmaWVyOworICAgIFJlZjxT
aGFyZWRNZW1vcnk+IG1fc2hhcmVkTWVtb3J5OworfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NvdXJjZXMudHh0IGIvU291cmNlL1dlYktpdC9T
b3VyY2VzLnR4dAppbmRleCAzNDk5NzVjZWMxMDBhYTMyNWY4MmZjNjE1MGE2NzY5MWVhMTJlYzBi
Li5iYzcxOTViZmNjZTM1NWE1MzNiZjczNjkzODcyOTZkMjEwZjc4M2VkIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1NvdXJjZXMudHh0CisrKyBiL1NvdXJjZS9XZWJLaXQvU291cmNlcy50eHQK
QEAgLTI0LDYgKzI0LDcgQEAKIEdQVVByb2Nlc3MvR1BVUHJvY2Vzcy5jcHAKIEdQVVByb2Nlc3Mv
R1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAKIEdQVVByb2Nlc3MvR1BVUHJvY2Vzc0NyZWF0
aW9uUGFyYW1ldGVycy5jcHAKK0dQVVByb2Nlc3MvZ3JhcGhpY3MvRGlzcGxheUxpc3RSZWFkZXJI
YW5kbGUuY3BwCiBHUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQuY3Bw
CiBHUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlc291cmNlQ2FjaGUuY3BwCiBHUFVQcm9jZXNz
L21lZGlhL1JlbW90ZUF1ZGlvU2Vzc2lvblByb3h5LmNwcApAQCAtMTczLDcgKzE3NCw2IEBAIFNo
YXJlZC9TZXJ2aWNlV29ya2VySW5pdGlhbGl6YXRpb25EYXRhLmNwcAogU2hhcmVkL1Nlc3Npb25T
dGF0ZS5jcHAKIFNoYXJlZC9TaGFyZWFibGVCaXRtYXAuY3BwIEBuby11bmlmeQogU2hhcmVkL1No
YXJlYWJsZVJlc291cmNlLmNwcAotU2hhcmVkL1NoYXJlZERpc3BsYXlMaXN0SGFuZGxlLmNwcAog
U2hhcmVkL1NoYXJlZFN0cmluZ0hhc2hTdG9yZS5jcHAKIFNoYXJlZC9TaGFyZWRTdHJpbmdIYXNo
VGFibGVSZWFkT25seS5jcHAKIFNoYXJlZC9TaGFyZWRTdHJpbmdIYXNoVGFibGUuY3BwCkBAIC01
NTksNiArNTU5LDcgQEAgV2ViUHJvY2Vzcy9NZWRpYVN0cmVhbS9NZWRpYURldmljZVNhbmRib3hF
eHRlbnNpb25zLmNwcAogV2ViUHJvY2Vzcy9NZWRpYVN0cmVhbS9Vc2VyTWVkaWFQZXJtaXNzaW9u
UmVxdWVzdE1hbmFnZXIuY3BwCiAKIFdlYlByb2Nlc3MvR1BVL0dQVVByb2Nlc3NDb25uZWN0aW9u
LmNwcAorV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvRGlzcGxheUxpc3RXcml0ZXJIYW5kbGUuY3Bw
CiBXZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9JbWFnZUJ1ZmZlclNoYXJlYWJsZUJpdG1hcEJhY2tl
bmQuY3BwCiBXZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJv
eHkuY3BwCiBXZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVSZXNvdXJjZUNhY2hlUHJveHku
Y3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qIGIvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpp
bmRleCA1ZTBkM2NmODdlNzlmNDEwOTZmMWQ3OGVmMmI0Y2M2MTNjMjYxNzQ5Li4wNjVmN2U0Njcy
MTg1NDA4Y2E2NzhjYzUyZDdkZmQyOWFkNmM5NTc4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJLaXQvV2Vi
S2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTE4NzEsNiArMTg3MSw4IEBACiAJCUU1
QkVGNjgyMjEzMEM0ODAwMEYzMTExMSAvKiBXZWJEYXRhTGlzdFN1Z2dlc3Rpb25zRHJvcGRvd25J
T1MuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEU1QkVG
NjgwMjEzMEM0N0YwMEYzMTExMSAvKiBXZWJEYXRhTGlzdFN1Z2dlc3Rpb25zRHJvcGRvd25JT1Mu
aCAqLzsgfTsKIAkJRTVDQjA3REMyMEUxNjc4RjAwMjJDMTgzIC8qIFdLRm9ybUNvbG9yQ29udHJv
bC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTVDQjA3
REEyMEUxNjc4RjAwMjJDMTgzIC8qIFdLRm9ybUNvbG9yQ29udHJvbC5oICovOyB9OwogCQlFRDgy
QTdGMjEyOEM2RkFGMDA0NDc3QjMgLyogV0tCdW5kbGVQYWdlT3ZlcmxheS5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUEyMkYwRkYxMjg5RkNEOTAwODVF
NzRGIC8qIFdLQnVuZGxlUGFnZU92ZXJsYXkuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OworCQlGNDA5NENCRDI1NTMwNTNEMDAzRDczRTMgLyogRGlzcGxh
eUxpc3RSZWFkZXJIYW5kbGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEY0MDk0Q0JCMjU1MzA0QUYwMDNENzNFMyAvKiBEaXNwbGF5TGlzdFJlYWRlckhh
bmRsZS5oICovOyB9OworCQlGNDA5NENCRTI1NTMwNTQwMDAzRDczRTMgLyogRGlzcGxheUxpc3RX
cml0ZXJIYW5kbGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEY0MDk0Q0I5MjU1MzA0N0UwMDNENzNFMyAvKiBEaXNwbGF5TGlzdFdyaXRlckhhbmRsZS5o
ICovOyB9OwogCQlGNDA5QkExODFFNkU2NEJDMDA5REEyOEUgLyogV0tEcmFnRGVzdGluYXRpb25B
Y3Rpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY0
MDlCQTE3MUU2RTY0QjMwMDlEQTI4RSAvKiBXS0RyYWdEZXN0aW5hdGlvbkFjdGlvbi5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUY0MkQ2MzQxMjJB
MEVGREYwMEQyRkIzQSAvKiBXZWJBdXRvY29ycmVjdGlvbkRhdGEuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY0MkQ2MzNGMjJBMEVGRDMwMEQyRkIzQSAv
KiBXZWJBdXRvY29ycmVjdGlvbkRhdGEuaCAqLzsgfTsKIAkJRjQzMEU5NDIyMjQ3MzM1RjAwNUZF
MDUzIC8qIFdlYnNpdGVNZXRhVmlld3BvcnRQb2xpY3kuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY0MzBFOTQxMjI0NzMyQTkwMDVGRTA1MyAvKiBXZWJz
aXRlTWV0YVZpZXdwb3J0UG9saWN5LmggKi87IH07CkBAIC01NDY4LDYgKzU0NzAsMTAgQEAKIAkJ
RUNBNjgwRDMxRTY5MDRCNTAwNzMxRDIwIC8qIEV4dHJhUHJpdmF0ZVN5bWJvbHNGb3JUQVBJLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEV4dHJhUHJpdmF0ZVN5bWJvbHNGb3JU
QVBJLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUVDQkZDMURCMUU2QTRENjYwMDAz
MDBDNyAvKiBFeHRyYVB1YmxpY1N5bWJvbHNGb3JUQVBJLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEV4dHJh
UHVibGljU3ltYm9sc0ZvclRBUEkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRjAz
Njk3ODcxNUY0QkYwNTAwQzNBODBFIC8qIFdlYkNvbG9yUGlja2VyLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdlYkNvbG9yUGlja2VyLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJRjQwOTRDQjkyNTUzMDQ3RTAwM0Q3M0UzIC8qIERpc3BsYXlMaXN0
V3JpdGVySGFuZGxlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERpc3BsYXlMaXN0V3JpdGVySGFuZGxlLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUY0MDk0Q0JBMjU1MzA0N0UwMDNENzNFMyAv
KiBEaXNwbGF5TGlzdFdyaXRlckhhbmRsZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBEaXNwbGF5
TGlzdFdyaXRlckhhbmRsZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUY0MDk0
Q0JCMjU1MzA0QUYwMDNENzNFMyAvKiBEaXNwbGF5TGlzdFJlYWRlckhhbmRsZS5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBEaXNwbGF5TGlzdFJlYWRlckhhbmRsZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQlGNDA5NENCQzI1NTMwNEFGMDAzRDczRTMgLyogRGlzcGxheUxpc3RSZWFkZXJIYW5k
bGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRGlzcGxheUxpc3RSZWFkZXJIYW5kbGUuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGNDA5QkExNzFFNkU2NEIzMDA5REEyOEUgLyog
V0tEcmFnRGVzdGluYXRpb25BY3Rpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gV0tEcmFnRGVzdGluYXRpb25BY3Rpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJRjQwRDFCNjgyMjBCREMwRjAwQjQ5QTAxIC8qIFdlYkF1dG9jb3JyZWN0aW9uQ29udGV4dC5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IG5hbWUgPSBXZWJBdXRvY29ycmVjdGlvbkNvbnRleHQuaDsgcGF0aCA9IGlvcy9X
ZWJBdXRvY29ycmVjdGlvbkNvbnRleHQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
RjQxMDU2NjEyMTMwNjk5QTAwOTIyODFEIC8qIEFQSUF0dGFjaG1lbnRDb2NvYS5tbSAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
Lm9iamNwcDsgcGF0aCA9IEFQSUF0dGFjaG1lbnRDb2NvYS5tbTsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKQEAgLTU0OTAsNyArNTQ5Niw2IEBACiAJCUY0OTZBNDJGMUY1OEEyNzIwMDRDMTc1
NyAvKiBEcmFnRHJvcEludGVyYWN0aW9uU3RhdGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gRHJhZ0Ryb3BJ
bnRlcmFjdGlvblN0YXRlLmg7IHBhdGggPSBpb3MvRHJhZ0Ryb3BJbnRlcmFjdGlvblN0YXRlLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUY0OTZBNDMwMUY1OEEyNzIwMDRDMTc1NyAv
KiBEcmFnRHJvcEludGVyYWN0aW9uU3RhdGUubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IG5hbWUgPSBEcmFn
RHJvcEludGVyYWN0aW9uU3RhdGUubW07IHBhdGggPSBpb3MvRHJhZ0Ryb3BJbnRlcmFjdGlvblN0
YXRlLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGNEE2RDZCQjI1NENBM0U5MDBC
NjVGQUEgLyogU2hhcmVkRGlzcGxheUxpc3RIYW5kbGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU2hhcmVk
RGlzcGxheUxpc3RIYW5kbGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJRjRBNkQ2
QkQyNTRDQTUyMjAwQjY1RkFBIC8qIFNoYXJlZERpc3BsYXlMaXN0SGFuZGxlLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IFNoYXJlZERpc3BsYXlMaXN0SGFuZGxlLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJRjRBQzY1NUUyMkEzMTQwRTAwQTA1NjA3IC8qIFdlYlByZWZlcmVuY2Vz
RGVmYXVsdFZhbHVlc0lPUy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgbmFt
ZSA9IFdlYlByZWZlcmVuY2VzRGVmYXVsdFZhbHVlc0lPUy5tbTsgcGF0aCA9IGlvcy9XZWJQcmVm
ZXJlbmNlc0RlZmF1bHRWYWx1ZXNJT1MubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CUY0QjM3OEQwMjFEREJCQUIwMDk1QTM3OCAvKiBXZWJVbmRvU3RlcElELmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IFdlYlVuZG9TdGVwSUQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRjRDQjA5
RTQyMjVENUEwMzAwODkxNDg3IC8qIFdlYnNpdGVNZWRpYVNvdXJjZVBvbGljeS5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBXZWJzaXRlTWVkaWFTb3VyY2VQb2xpY3kuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKQEAgLTYxOTgsNyArNjIwMyw2IEBACiAJCQkJMUE2NDIwRTMxMkRDRTJGRjAwQ0FBRTJD
IC8qIFNoYXJlYWJsZUJpdG1hcC5oICovLAogCQkJCTUxMjE3NDVFMTY0QzIwRTMwMDM3QTVDMSAv
KiBTaGFyZWFibGVSZXNvdXJjZS5jcHAgKi8sCiAJCQkJNTEyMTc0NUYxNjRDMjBFMzAwMzdBNUMx
IC8qIFNoYXJlYWJsZVJlc291cmNlLmggKi8sCi0JCQkJRjRBNkQ2QkQyNTRDQTUyMjAwQjY1RkFB
IC8qIFNoYXJlZERpc3BsYXlMaXN0SGFuZGxlLmNwcCAqLywKIAkJCQlGNEE2RDZCQjI1NENBM0U5
MDBCNjVGQUEgLyogU2hhcmVkRGlzcGxheUxpc3RIYW5kbGUuaCAqLywKIAkJCQk4MzEzRjdFQTFG
N0RBRTA0MDBCOTQ0RUIgLyogU2hhcmVkU3RyaW5nSGFzaFN0b3JlLmNwcCAqLywKIAkJCQk4MzEz
RjdFOTFGN0RBRTAzMDBCOTQ0RUIgLyogU2hhcmVkU3RyaW5nSGFzaFN0b3JlLmggKi8sCkBAIC04
MTczLDYgKzgxNzcsOCBAQAogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKIAkJ
CQk3MjdBN0YzMzI0MDc4NTI3MDA0RDI5MzEgLyogY29jb2EgKi8sCisJCQkJRjQwOTRDQkEyNTUz
MDQ3RTAwM0Q3M0UzIC8qIERpc3BsYXlMaXN0V3JpdGVySGFuZGxlLmNwcCAqLywKKwkJCQlGNDA5
NENCOTI1NTMwNDdFMDAzRDczRTMgLyogRGlzcGxheUxpc3RXcml0ZXJIYW5kbGUuaCAqLywKIAkJ
CQk3MjdBN0YzOTI0MDc4OEYxMDA0RDI5MzEgLyogSW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxlLmgg
Ki8sCiAJCQkJNzI3QTdGMzcyNDA3ODhGMDAwNEQyOTMxIC8qIEltYWdlQnVmZmVyU2hhcmVhYmxl
Qml0bWFwQmFja2VuZC5jcHAgKi8sCiAJCQkJNzI3QTdGMzYyNDA3ODhGMDAwNEQyOTMxIC8qIElt
YWdlQnVmZmVyU2hhcmVhYmxlQml0bWFwQmFja2VuZC5oICovLApAQCAtODE5Miw2ICs4MTk4LDgg
QEAKIAkJNTUwNjQwQTEyNDA3MUEyOTAwQUFFMDQ1IC8qIGdyYXBoaWNzICovID0gewogCQkJaXNh
ID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKKwkJCQlGNDA5NENCQzI1NTMwNEFGMDAzRDcz
RTMgLyogRGlzcGxheUxpc3RSZWFkZXJIYW5kbGUuY3BwICovLAorCQkJCUY0MDk0Q0JCMjU1MzA0
QUYwMDNENzNFMyAvKiBEaXNwbGF5TGlzdFJlYWRlckhhbmRsZS5oICovLAogCQkJCTU1QUQwOTQz
MjQwOEEwRTYwMERFNEQyRiAvKiBQbGF0Zm9ybVJlbW90ZUltYWdlQnVmZmVyLmggKi8sCiAJCQkJ
NTVBRDA5NDIyNDA4QTAyRTAwREU0RDJGIC8qIFJlbW90ZUltYWdlQnVmZmVyLmggKi8sCiAJCQkJ
NTUwNjQwQTIyNDA3MUE2MTAwQUFFMDQ1IC8qIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQuY3BwICov
LApAQCAtMTEwMzEsNiArMTEwMzksOCBAQAogCQkJCTgzODkxQjZDMUE2OEMzMEIwMDMwRjM4NiAv
KiBEaWFnbm9zdGljTG9nZ2luZ0NsaWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQzE4MTczNjEy
MDU4NDI0NzAwREZEQTY1IC8qIERpc3BsYXlMaW5rLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjE4
OUNBQzI0NzQ5RjJGMDBFNThEODEgLyogRGlzcGxheUxpbmtPYnNlcnZlcklELmggaW4gSGVhZGVy
cyAqLywKKwkJCQlGNDA5NENCRDI1NTMwNTNEMDAzRDczRTMgLyogRGlzcGxheUxpc3RSZWFkZXJI
YW5kbGUuaCBpbiBIZWFkZXJzICovLAorCQkJCUY0MDk0Q0JFMjU1MzA1NDAwMDNENzNFMyAvKiBE
aXNwbGF5TGlzdFdyaXRlckhhbmRsZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNUMxNDI3MDIxQzIz
Rjg0QzAwRDQxMTgzIC8qIERvd25sb2FkLmggaW4gSGVhZGVycyAqLywKIAkJCQk1QzE0MjcwNTFD
MjNGODRDMDBENDExODMgLyogRG93bmxvYWRJRC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNUMxNDI3
MDcxQzIzRjg0QzAwRDQxMTgzIC8qIERvd25sb2FkTWFuYWdlci5oIGluIEhlYWRlcnMgKi8sCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL0Rpc3BsYXlM
aXN0V3JpdGVySGFuZGxlLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhp
Y3MvRGlzcGxheUxpc3RXcml0ZXJIYW5kbGUuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmNlYWYzNmYzNjk2NThh
NzI3MGJiMjQ3MzdjNjM3YTU0Y2E4ZGFlNjYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL0Rpc3BsYXlMaXN0V3JpdGVySGFuZGxlLmNwcApA
QCAtMCwwICsxLDY3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1
ZGUgIkRpc3BsYXlMaXN0V3JpdGVySGFuZGxlLmgiCisKK25hbWVzcGFjZSBXZWJLaXQgewordXNp
bmcgbmFtZXNwYWNlIFdlYkNvcmU7CisKK3ZvaWQgRGlzcGxheUxpc3RXcml0ZXJIYW5kbGU6OmFk
dmFuY2Uoc2l6ZV90IGFtb3VudCkKK3sKKyAgICBtX3dyaXRhYmxlT2Zmc2V0ICs9IGFtb3VudDsK
KyAgICB1bnJlYWRCeXRlc0hhbmRsZSgpICs9IGFtb3VudDsKK30KKworc2l6ZV90IERpc3BsYXlM
aXN0V3JpdGVySGFuZGxlOjphdmFpbGFibGVDYXBhY2l0eSgpIGNvbnN0Cit7CisgICAgcmV0dXJu
IHNoYXJlZE1lbW9yeSgpLnNpemUoKSAtIHdyaXRhYmxlT2Zmc2V0KCk7Cit9CisKK0Rpc3BsYXlM
aXN0OjpJdGVtQnVmZmVySGFuZGxlIERpc3BsYXlMaXN0V3JpdGVySGFuZGxlOjpjcmVhdGVIYW5k
bGUoKSBjb25zdAoreworICAgIHJldHVybiB7CisgICAgICAgIGlkZW50aWZpZXIoKSwKKyAgICAg
ICAgZGF0YSgpICsgd3JpdGFibGVPZmZzZXQoKSwKKyAgICAgICAgYXZhaWxhYmxlQ2FwYWNpdHko
KQorICAgIH07Cit9CisKK2Jvb2wgRGlzcGxheUxpc3RXcml0ZXJIYW5kbGU6OnJlc2V0V3JpdGFi
bGVPZmZzZXRJZlBvc3NpYmxlKCkKK3sKKyAgICBpZiAobV93cml0YWJsZU9mZnNldCA8PSBTaGFy
ZWREaXNwbGF5TGlzdEhhbmRsZTo6cmVzZXJ2ZWRDYXBhY2l0eUF0U3RhcnQpIHsKKyAgICAgICAg
QVNTRVJUKG1fd3JpdGFibGVPZmZzZXQgPT0gU2hhcmVkRGlzcGxheUxpc3RIYW5kbGU6OnJlc2Vy
dmVkQ2FwYWNpdHlBdFN0YXJ0KTsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorCisgICAg
TG9jayBsb2NrZXIgeyAqdGhpcyB9OworICAgIGlmICh1bnJlYWRCeXRlcygpKQorICAgICAgICBy
ZXR1cm4gZmFsc2U7CisKKyAgICBtX3dyaXRhYmxlT2Zmc2V0ID0gU2hhcmVkRGlzcGxheUxpc3RI
YW5kbGU6OnJlc2VydmVkQ2FwYWNpdHlBdFN0YXJ0OworICAgIHJldHVybiB0cnVlOworfQorCit9
IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9HUFUvZ3JhcGhpY3MvRGlzcGxheUxpc3RXcml0ZXJIYW5kbGUuaCBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvRGlzcGxheUxpc3RXcml0ZXJIYW5kbGUuaApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi4xMzgwMTI2NWVlMzg0OTQzMWFkZTkxN2Y1OGZhNTNiMjU5M2ZiOTRkCi0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9EaXNwbGF5TGlz
dFdyaXRlckhhbmRsZS5oCkBAIC0wLDAgKzEsNTQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBg
YEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJ
QlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9u
Y2UKKworI2luY2x1ZGUgIlNoYXJlZERpc3BsYXlMaXN0SGFuZGxlLmgiCisjaW5jbHVkZSA8d3Rm
L0Zhc3RNYWxsb2MuaD4KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIERpc3BsYXlMaXN0
V3JpdGVySGFuZGxlIDogcHVibGljIFNoYXJlZERpc3BsYXlMaXN0SGFuZGxlIHsKKyAgICBXVEZf
TUFLRV9OT05DT1BZQUJMRShEaXNwbGF5TGlzdFdyaXRlckhhbmRsZSk7IFdURl9NQUtFX0ZBU1Rf
QUxMT0NBVEVEOworcHVibGljOgorICAgIERpc3BsYXlMaXN0V3JpdGVySGFuZGxlKFdlYkNvcmU6
OkRpc3BsYXlMaXN0OjpJdGVtQnVmZmVySWRlbnRpZmllciBpZGVudGlmaWVyLCBSZWY8U2hhcmVk
TWVtb3J5PiYmIHNoYXJlZE1lbW9yeSkKKyAgICAgICAgOiBTaGFyZWREaXNwbGF5TGlzdEhhbmRs
ZShpZGVudGlmaWVyLCBXVEZNb3ZlKHNoYXJlZE1lbW9yeSkpCisgICAgICAgICwgbV93cml0YWJs
ZU9mZnNldChTaGFyZWREaXNwbGF5TGlzdEhhbmRsZTo6cmVzZXJ2ZWRDYXBhY2l0eUF0U3RhcnQp
CisgICAgeworICAgIH0KKworICAgIHNpemVfdCB3cml0YWJsZU9mZnNldCgpIGNvbnN0IHsgcmV0
dXJuIG1fd3JpdGFibGVPZmZzZXQ7IH0KKyAgICBzaXplX3QgYXZhaWxhYmxlQ2FwYWNpdHkoKSBj
b25zdDsKKworICAgIGJvb2wgcmVzZXRXcml0YWJsZU9mZnNldElmUG9zc2libGUoKTsKKworICAg
IHZvaWQgYWR2YW5jZShzaXplX3QgYW1vdW50KSBvdmVycmlkZTsKKyAgICBXZWJDb3JlOjpEaXNw
bGF5TGlzdDo6SXRlbUJ1ZmZlckhhbmRsZSBjcmVhdGVIYW5kbGUoKSBjb25zdDsKKworcHJpdmF0
ZToKKyAgICBzaXplX3QgbV93cml0YWJsZU9mZnNldCB7IDAgfTsKK307CisKK30gLy8gbmFtZXNw
YWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFw
aGljcy9SZW1vdGVJbWFnZUJ1ZmZlclByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
R1BVL2dyYXBoaWNzL1JlbW90ZUltYWdlQnVmZmVyUHJveHkuaAppbmRleCBiNTc4NDZkZGQ1MWM1
MWI2YmNmNGM3Mzk1ZDIyODlmYjBmNzJiOWFjLi44Zjc5ZTM5OTg4M2NkMzJhNWVlMjBhOTlhNDYy
YWJiNjhkNzRiMWQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dy
YXBoaWNzL1JlbW90ZUltYWdlQnVmZmVyUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUltYWdlQnVmZmVyUHJveHkuaApAQCAtMTM5LDYgKzEz
OSw3IEBAIHByb3RlY3RlZDoKIAogICAgIHZvaWQgZmx1c2hEcmF3aW5nQ29udGV4dCgpIG92ZXJy
aWRlCiAgICAgeworICAgICAgICBUcmFjZVNjb3BlIHRyYWNpbmdTY29wZShGbHVzaFJlbW90ZUlt
YWdlQnVmZmVyU3RhcnQsIEZsdXNoUmVtb3RlSW1hZ2VCdWZmZXJFbmQpOwogICAgICAgICBmbHVz
aERyYXdpbmdDb250ZXh0QW5kQ29tbWl0KCk7CiAgICAgICAgIHRpbWVvdXRXYWl0Rm9yRmx1c2hE
aXNwbGF5TGlzdFdhc0NvbW1pdHRlZCgpOwogICAgIH0KQEAgLTE1Miw4ICsxNTMsOSBAQCBwcm90
ZWN0ZWQ6CiAgICAgICAgIGlmIChkaXNwbGF5TGlzdC5pc0VtcHR5KCkpCiAgICAgICAgICAgICBy
ZXR1cm47CiAKLSAgICAgICAgVHJhY2VTY29wZSB0cmFjaW5nU2NvcGUoRmx1c2hSZW1vdGVJbWFn
ZUJ1ZmZlclN0YXJ0LCBGbHVzaFJlbW90ZUltYWdlQnVmZmVyRW5kLCAxKTsKLSAgICAgICAgbV9z
ZW50Rmx1c2hJZGVudGlmaWVyID0gbV9yZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHktPmZsdXNo
RGlzcGxheUxpc3RBbmRDb21taXQoZGlzcGxheUxpc3QsIG1fcmVuZGVyaW5nUmVzb3VyY2VJZGVu
dGlmaWVyKTsKKyAgICAgICAgbV9zZW50Rmx1c2hJZGVudGlmaWVyID0gV2ViQ29yZTo6RGlzcGxh
eUxpc3Q6OkZsdXNoSWRlbnRpZmllcjo6Z2VuZXJhdGUoKTsKKyAgICAgICAgZGlzcGxheUxpc3Qu
dGVtcGxhdGUgYXBwZW5kPFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpGbHVzaENvbnRleHQ+KG1fc2Vu
dEZsdXNoSWRlbnRpZmllcik7CisgICAgICAgIG1fcmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5
LT5mbHVzaERpc3BsYXlMaXN0KGRpc3BsYXlMaXN0LCBtX3JlbmRlcmluZ1Jlc291cmNlSWRlbnRp
Zmllcik7CiAgICAgICAgIG1faXRlbUNvdW50SW5DdXJyZW50RGlzcGxheUxpc3QgPSAwOwogICAg
ICAgICBkaXNwbGF5TGlzdC5jbGVhcigpOwogICAgIH0KQEAgLTE2Myw3ICsxNjUsNiBAQCBwcm90
ZWN0ZWQ6CiAgICAgICAgIGlmICghbV9yZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkgfHwgZGlz
cGxheUxpc3QuaXNFbXB0eSgpKQogICAgICAgICAgICAgcmV0dXJuOwogCi0gICAgICAgIFRyYWNl
U2NvcGUgdHJhY2luZ1Njb3BlKEZsdXNoUmVtb3RlSW1hZ2VCdWZmZXJTdGFydCwgRmx1c2hSZW1v
dGVJbWFnZUJ1ZmZlckVuZCk7CiAgICAgICAgIG1fcmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5
LT5mbHVzaERpc3BsYXlMaXN0KGRpc3BsYXlMaXN0LCBtX3JlbmRlcmluZ1Jlc291cmNlSWRlbnRp
Zmllcik7CiAgICAgfQogCkBAIC0xODIsNyArMTgzLDcgQEAgcHJvdGVjdGVkOgogICAgIFdlYkNv
cmU6OkRpc3BsYXlMaXN0OjpJdGVtQnVmZmVySGFuZGxlIGNyZWF0ZUl0ZW1CdWZmZXIoc2l6ZV90
IGNhcGFjaXR5KSBvdmVycmlkZQogICAgIHsKICAgICAgICAgaWYgKG1fcmVtb3RlUmVuZGVyaW5n
QmFja2VuZFByb3h5KQotICAgICAgICAgICAgcmV0dXJuIG1fcmVtb3RlUmVuZGVyaW5nQmFja2Vu
ZFByb3h5LT5jcmVhdGVJdGVtQnVmZmVyKGNhcGFjaXR5KTsKKyAgICAgICAgICAgIHJldHVybiBt
X3JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS0+Y3JlYXRlSXRlbUJ1ZmZlcihjYXBhY2l0eSwg
bV9yZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpOwogCiAgICAgICAgIEFTU0VSVF9OT1RfUkVB
Q0hFRCgpOwogICAgICAgICByZXR1cm4geyB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkuY3BwIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNr
ZW5kUHJveHkuY3BwCmluZGV4IGVlYzA1MjU0Njg4ZGYwZjk3ZjM3NzhlMWMwNWI1ZmViMWU5ZWY4
YjUuLjA5NWZjYzJhYjJmZTE5YzQ5YzkzMWIwNzEwNGE4MjYwMTM2NjdmNzEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFj
a2VuZFByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNz
L1JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS5jcHAKQEAgLTI4LDEzICsyOCwxMyBAQAogCiAj
aWYgRU5BQkxFKEdQVV9QUk9DRVNTKQogCisjaW5jbHVkZSAiRGlzcGxheUxpc3RXcml0ZXJIYW5k
bGUuaCIKICNpbmNsdWRlICJHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgiCiAjaW5jbHVkZSAi
R1BVUHJvY2Vzc0Nvbm5lY3Rpb24uaCIKICNpbmNsdWRlICJJbWFnZURhdGFSZWZlcmVuY2UuaCIK
ICNpbmNsdWRlICJQbGF0Zm9ybVJlbW90ZUltYWdlQnVmZmVyUHJveHkuaCIKICNpbmNsdWRlICJS
ZW1vdGVSZW5kZXJpbmdCYWNrZW5kTWVzc2FnZXMuaCIKICNpbmNsdWRlICJSZW1vdGVSZW5kZXJp
bmdCYWNrZW5kUHJveHlNZXNzYWdlcy5oIgotI2luY2x1ZGUgIlNoYXJlZERpc3BsYXlMaXN0SGFu
ZGxlLmgiCiAjaW5jbHVkZSAiU2hhcmVkTWVtb3J5LmgiCiAjaW5jbHVkZSAiV2ViUHJvY2Vzcy5o
IgogCkBAIC0xMTcsMTYgKzExNywyOSBAQCBSZWZQdHI8SW1hZ2VEYXRhPiBSZW1vdGVSZW5kZXJp
bmdCYWNrZW5kUHJveHk6OmdldEltYWdlRGF0YShBbHBoYVByZW11bHRpcGxpY2F0aQogCiB2b2lk
IFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eTo6Zmx1c2hEaXNwbGF5TGlzdChjb25zdCBEaXNw
bGF5TGlzdDo6RGlzcGxheUxpc3QmIGRpc3BsYXlMaXN0LCBSZW5kZXJpbmdSZXNvdXJjZUlkZW50
aWZpZXIgcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKQogewotICAgIHNlbmQoTWVzc2FnZXM6
OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OkZsdXNoRGlzcGxheUxpc3QoeyBkaXNwbGF5TGlzdCB9
LCByZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpLCBtX3JlbmRlcmluZ0JhY2tlbmRJZGVudGlm
aWVyKTsKLSAgICBtX3NoYXJlZEl0ZW1CdWZmZXJzLmNsZWFyKCk7Ci19CisgICAgT3B0aW9uYWw8
c3RkOjpwYWlyPFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtQnVmZmVySWRlbnRpZmllciwgc2l6
ZV90Pj4gaWRlbnRpZmllckFuZE9mZnNldEZvcldha2VVcE1lc3NhZ2U7CisgICAgYm9vbCBpc0Zp
cnN0SGFuZGxlID0gdHJ1ZTsKIAotRGlzcGxheUxpc3Q6OkZsdXNoSWRlbnRpZmllciBSZW1vdGVS
ZW5kZXJpbmdCYWNrZW5kUHJveHk6OmZsdXNoRGlzcGxheUxpc3RBbmRDb21taXQoY29uc3QgRGlz
cGxheUxpc3Q6OkRpc3BsYXlMaXN0JiBkaXNwbGF5TGlzdCwgUmVuZGVyaW5nUmVzb3VyY2VJZGVu
dGlmaWVyIHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcikKLXsKLSAgICBhdXRvIHNlbnRGbHVz
aElkZW50aWZpZXIgPSBEaXNwbGF5TGlzdDo6Rmx1c2hJZGVudGlmaWVyOjpnZW5lcmF0ZSgpOwot
ICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OkZsdXNoRGlzcGxheUxp
c3RBbmRDb21taXQoeyBkaXNwbGF5TGlzdCB9LCBzZW50Rmx1c2hJZGVudGlmaWVyLCByZW5kZXJp
bmdSZXNvdXJjZUlkZW50aWZpZXIpLCBtX3JlbmRlcmluZ0JhY2tlbmRJZGVudGlmaWVyKTsKLSAg
ICBtX3NoYXJlZEl0ZW1CdWZmZXJzLmNsZWFyKCk7Ci0gICAgcmV0dXJuIHNlbnRGbHVzaElkZW50
aWZpZXI7CisgICAgZGlzcGxheUxpc3QuZm9yRWFjaEl0ZW1CdWZmZXIoWyZdIChhdXRvJiBoYW5k
bGUpIHsKKyAgICAgICAgbV9pZGVudGlmaWVyc09mSGFuZGxlc0F2YWlsYWJsZUZvcldyaXRpbmcu
YWRkKGhhbmRsZS5pZGVudGlmaWVyKTsKKworICAgICAgICBhdXRvKiBzaGFyZWRIYW5kbGUgPSBt
X3NoYXJlZERpc3BsYXlMaXN0SGFuZGxlcy5nZXQoaGFuZGxlLmlkZW50aWZpZXIpOworICAgICAg
ICBSRUxFQVNFX0FTU0VSVF9XSVRIX01FU1NBR0Uoc2hhcmVkSGFuZGxlLCAiJXMgZmFpbGVkIHRv
IGZpbmQgc2hhcmVkIGRpc3BsYXkgbGlzdCIsIF9fUFJFVFRZX0ZVTkNUSU9OX18pOworCisgICAg
ICAgIFNoYXJlZERpc3BsYXlMaXN0SGFuZGxlOjpMb2NrIGxvY2tlciB7ICpzaGFyZWRIYW5kbGUg
fTsKKworICAgICAgICBib29sIHVucmVhZENvdW50V2FzRW1wdHkgPSAhc2hhcmVkSGFuZGxlLT51
bnJlYWRCeXRlcygpOworICAgICAgICBzaGFyZWRIYW5kbGUtPmFkdmFuY2UoaGFuZGxlLmNhcGFj
aXR5KTsKKyAgICAgICAgaWYgKGlzRmlyc3RIYW5kbGUgJiYgdW5yZWFkQ291bnRXYXNFbXB0eSkK
KyAgICAgICAgICAgIGlkZW50aWZpZXJBbmRPZmZzZXRGb3JXYWtlVXBNZXNzYWdlID0ge3sgaGFu
ZGxlLmlkZW50aWZpZXIsIGhhbmRsZS5kYXRhIC0gc2hhcmVkSGFuZGxlLT5kYXRhKCkgfX07CisK
KyAgICAgICAgaXNGaXJzdEhhbmRsZSA9IGZhbHNlOworICAgIH0pOworCisgICAgaWYgKGlkZW50
aWZpZXJBbmRPZmZzZXRGb3JXYWtlVXBNZXNzYWdlKSB7CisgICAgICAgIGF1dG8gW2lkZW50aWZp
ZXIsIG9mZnNldF0gPSAqaWRlbnRpZmllckFuZE9mZnNldEZvcldha2VVcE1lc3NhZ2U7CisgICAg
ICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6Oldha2VVcEFuZFByb2Nl
c3NEaXNwbGF5TGlzdChpZGVudGlmaWVyLCBvZmZzZXQsIHJlbmRlcmluZ1Jlc291cmNlSWRlbnRp
ZmllciksIG1fcmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXIpOworICAgIH0KIH0KIAogdm9pZCBS
ZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHk6OnJlbGVhc2VSZW1vdGVSZXNvdXJjZShSZW5kZXJp
bmdSZXNvdXJjZUlkZW50aWZpZXIgcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKQpAQCAtMTU5
LDIxICsxNzIsNTYgQEAgdm9pZCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHk6OmZsdXNoRGlz
cGxheUxpc3RXYXNDb21taXR0ZWQoRGlzcGxheUxpc3Q6OkZsdXMKICAgICAgICAgZG93bmNhc3Q8
VW5hY2NlbGVyYXRlZFJlbW90ZUltYWdlQnVmZmVyUHJveHk+KCppbWFnZUJ1ZmZlcikuY29tbWl0
Rmx1c2hEaXNwbGF5TGlzdChmbHVzaElkZW50aWZpZXIpOwogfQogCi1EaXNwbGF5TGlzdDo6SXRl
bUJ1ZmZlckhhbmRsZSBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHk6OmNyZWF0ZUl0ZW1CdWZm
ZXIoc2l6ZV90IGNhcGFjaXR5KQordm9pZCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHk6OnVw
ZGF0ZVJldXNhYmxlSGFuZGxlcygpCit7CisgICAgZm9yIChhdXRvIGlkZW50aWZpZXIgOiBtX2lk
ZW50aWZpZXJzT2ZIYW5kbGVzQXZhaWxhYmxlRm9yV3JpdGluZykgeworICAgICAgICBhdXRvKiBo
YW5kbGUgPSBtX3NoYXJlZERpc3BsYXlMaXN0SGFuZGxlcy5nZXQoaWRlbnRpZmllcik7CisgICAg
ICAgIGlmICghaGFuZGxlLT5yZXNldFdyaXRhYmxlT2Zmc2V0SWZQb3NzaWJsZSgpKQorICAgICAg
ICAgICAgY29udGludWU7CisKKyAgICAgICAgaWYgKG1faWRlbnRpZmllcnNPZlJldXNhYmxlSGFu
ZGxlcy5jb250YWlucyhpZGVudGlmaWVyKSkKKyAgICAgICAgICAgIGNvbnRpbnVlOworCisgICAg
ICAgIG1faWRlbnRpZmllcnNPZlJldXNhYmxlSGFuZGxlcy5hcHBlbmQoaWRlbnRpZmllcik7Cisg
ICAgfQorfQorCitEaXNwbGF5TGlzdDo6SXRlbUJ1ZmZlckhhbmRsZSBSZW1vdGVSZW5kZXJpbmdC
YWNrZW5kUHJveHk6OmNyZWF0ZUl0ZW1CdWZmZXIoc2l6ZV90IGNhcGFjaXR5LCBSZW5kZXJpbmdS
ZXNvdXJjZUlkZW50aWZpZXIgcmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyKQogeworICAgIHVwZGF0
ZVJldXNhYmxlSGFuZGxlcygpOworCisgICAgd2hpbGUgKCFtX2lkZW50aWZpZXJzT2ZSZXVzYWJs
ZUhhbmRsZXMuaXNFbXB0eSgpKSB7CisgICAgICAgIGF1dG8gaWRlbnRpZmllciA9IG1faWRlbnRp
ZmllcnNPZlJldXNhYmxlSGFuZGxlcy5maXJzdCgpOworICAgICAgICBhdXRvKiByZXVzYWJsZUhh
bmRsZSA9IG1fc2hhcmVkRGlzcGxheUxpc3RIYW5kbGVzLmdldChpZGVudGlmaWVyKTsKKyAgICAg
ICAgUkVMRUFTRV9BU1NFUlRfV0lUSF9NRVNTQUdFKHJldXNhYmxlSGFuZGxlLCAiJXMgZmFpbGVk
IHRvIGZpbmQgc2hhcmVkIGRpc3BsYXkgbGlzdCIsIF9fUFJFVFRZX0ZVTkNUSU9OX18pOworCisg
ICAgICAgIGlmIChtX2lkZW50aWZpZXJzT2ZIYW5kbGVzQXZhaWxhYmxlRm9yV3JpdGluZy5jb250
YWlucyhpZGVudGlmaWVyKSAmJiByZXVzYWJsZUhhbmRsZS0+YXZhaWxhYmxlQ2FwYWNpdHkoKSA+
PSBjYXBhY2l0eSkgeworICAgICAgICAgICAgbV9pZGVudGlmaWVyc09mSGFuZGxlc0F2YWlsYWJs
ZUZvcldyaXRpbmcucmVtb3ZlKGlkZW50aWZpZXIpOworICAgICAgICAgICAgcmV0dXJuIHJldXNh
YmxlSGFuZGxlLT5jcmVhdGVIYW5kbGUoKTsKKyAgICAgICAgfQorCisgICAgICAgIG1faWRlbnRp
ZmllcnNPZlJldXNhYmxlSGFuZGxlcy5yZW1vdmVGaXJzdCgpOworICAgIH0KKwogICAgIHN0YXRp
YyBjb25zdGV4cHIgc2l6ZV90IGRlZmF1bHRTaGFyZWRJdGVtQnVmZmVyU2l6ZSA9IDEgPDwgMTY7
CiAKLSAgICBhdXRvIHNoYXJlZE1lbW9yeSA9IFNoYXJlZE1lbW9yeTo6YWxsb2NhdGUoc3RkOjpt
YXgoZGVmYXVsdFNoYXJlZEl0ZW1CdWZmZXJTaXplLCBjYXBhY2l0eSkpOworICAgIGF1dG8gc2hh
cmVkTWVtb3J5ID0gU2hhcmVkTWVtb3J5OjphbGxvY2F0ZShzdGQ6Om1heChkZWZhdWx0U2hhcmVk
SXRlbUJ1ZmZlclNpemUsIGNhcGFjaXR5ICsgU2hhcmVkRGlzcGxheUxpc3RIYW5kbGU6OnJlc2Vy
dmVkQ2FwYWNpdHlBdFN0YXJ0KSk7CiAgICAgaWYgKCFzaGFyZWRNZW1vcnkpCiAgICAgICAgIHJl
dHVybiB7IH07CiAKLSAgICBhdXRvIGlkZW50aWZpZXIgPSBEaXNwbGF5TGlzdDo6SXRlbUJ1ZmZl
cklkZW50aWZpZXI6OmdlbmVyYXRlKCk7CiAgICAgU2hhcmVkTWVtb3J5OjpIYW5kbGUgc2hhcmVk
TWVtb3J5SGFuZGxlOwotICAgIHNoYXJlZE1lbW9yeS0+Y3JlYXRlSGFuZGxlKHNoYXJlZE1lbW9y
eUhhbmRsZSwgU2hhcmVkTWVtb3J5OjpQcm90ZWN0aW9uOjpSZWFkT25seSk7Ci0gICAgc2VuZChN
ZXNzYWdlczo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6RGlkQ3JlYXRlU2hhcmVkSXRlbURhdGEo
aWRlbnRpZmllciwgeyBXVEZNb3ZlKHNoYXJlZE1lbW9yeUhhbmRsZSksIHNoYXJlZE1lbW9yeS0+
c2l6ZSgpIH0pLCBtX3JlbmRlcmluZ0JhY2tlbmRJZGVudGlmaWVyKTsKLSAgICBtX3NoYXJlZEl0
ZW1CdWZmZXJzLnNldChpZGVudGlmaWVyLCBzaGFyZWRNZW1vcnkuY29weVJlZigpKTsKKyAgICBz
aGFyZWRNZW1vcnktPmNyZWF0ZUhhbmRsZShzaGFyZWRNZW1vcnlIYW5kbGUsIFNoYXJlZE1lbW9y
eTo6UHJvdGVjdGlvbjo6UmVhZFdyaXRlKTsKKworICAgIGF1dG8gaWRlbnRpZmllciA9IERpc3Bs
YXlMaXN0OjpJdGVtQnVmZmVySWRlbnRpZmllcjo6Z2VuZXJhdGUoKTsKKyAgICBzZW5kKE1lc3Nh
Z2VzOjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpEaWRDcmVhdGVTaGFyZWREaXNwbGF5TGlzdEhh
bmRsZShpZGVudGlmaWVyLCB7IFdURk1vdmUoc2hhcmVkTWVtb3J5SGFuZGxlKSwgc2hhcmVkTWVt
b3J5LT5zaXplKCkgfSwgcmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyKSwgbV9yZW5kZXJpbmdCYWNr
ZW5kSWRlbnRpZmllcik7CisKKyAgICBhdXRvIG5ld0hhbmRsZSA9IG1ha2VVbmlxdWU8RGlzcGxh
eUxpc3RXcml0ZXJIYW5kbGU+KGlkZW50aWZpZXIsIHNoYXJlZE1lbW9yeS5yZWxlYXNlTm9uTnVs
bCgpKTsKKyAgICBhdXRvIGRpc3BsYXlMaXN0SGFuZGxlID0gbmV3SGFuZGxlLT5jcmVhdGVIYW5k
bGUoKTsKKworICAgIG1faWRlbnRpZmllcnNPZlJldXNhYmxlSGFuZGxlcy5hcHBlbmQoaWRlbnRp
Zmllcik7CisgICAgbV9zaGFyZWREaXNwbGF5TGlzdEhhbmRsZXMuc2V0KGlkZW50aWZpZXIsIFdU
Rk1vdmUobmV3SGFuZGxlKSk7CiAKLSAgICByZXR1cm4geyBpZGVudGlmaWVyLCByZWludGVycHJl
dF9jYXN0PHVpbnQ4X3QqPihzaGFyZWRNZW1vcnktPmRhdGEoKSksIHNoYXJlZE1lbW9yeS0+c2l6
ZSgpIH07CisgICAgcmV0dXJuIGRpc3BsYXlMaXN0SGFuZGxlOwogfQogCiB9IC8vIG5hbWVzcGFj
ZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhp
Y3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvR1BVL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS5oCmluZGV4IDIwY2U2
ZGE0NTViMTlmZDc1MThmMDlkNWJhYmY4ZjAxZTRiZjY0ZTkuLjZlZGY4YzkzMTNlYjU2MTlmNWM1
OGFjNWY3YTBmMzc1M2Y1ODM0MTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9HUFUvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5LmgKKysrIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJv
eHkuaApAQCAtMzQsNiArMzQsNyBAQAogI2luY2x1ZGUgIlJlbmRlcmluZ0JhY2tlbmRJZGVudGlm
aWVyLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9EaXNwbGF5TGlzdC5oPgogI2luY2x1ZGUgPFdlYkNv
cmUvUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyLmg+CisjaW5jbHVkZSA8d3RmL0RlcXVlLmg+
CiAjaW5jbHVkZSA8d3RmL1dlYWtQdHIuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtNTAs
NiArNTEsOCBAQCBlbnVtIGNsYXNzIFJlbmRlcmluZ01vZGUgOiBib29sOwogCiBuYW1lc3BhY2Ug
V2ViS2l0IHsKIAorY2xhc3MgRGlzcGxheUxpc3RXcml0ZXJIYW5kbGU7CisKIGNsYXNzIFJlbW90
ZVJlbmRlcmluZ0JhY2tlbmRQcm94eQogICAgIDogcHVibGljIElQQzo6TWVzc2FnZVNlbmRlcgog
ICAgICwgcHJpdmF0ZSBJUEM6Ok1lc3NhZ2VSZWNlaXZlcgpAQCAtNjAsNyArNjMsNyBAQCBwdWJs
aWM6CiAgICAgflJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eSgpOwogCiAgICAgUmVtb3RlUmVz
b3VyY2VDYWNoZVByb3h5JiByZW1vdGVSZXNvdXJjZUNhY2hlUHJveHkoKSB7IHJldHVybiBtX3Jl
bW90ZVJlc291cmNlQ2FjaGVQcm94eTsgfQotICAgIFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVt
QnVmZmVySGFuZGxlIGNyZWF0ZUl0ZW1CdWZmZXIoc2l6ZV90KTsKKyAgICBXZWJDb3JlOjpEaXNw
bGF5TGlzdDo6SXRlbUJ1ZmZlckhhbmRsZSBjcmVhdGVJdGVtQnVmZmVyKHNpemVfdCBjYXBhY2l0
eSwgV2ViQ29yZTo6UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKTsKIAogICAgIC8vIElQQzo6
TWVzc2FnZVNlbmRlci4KICAgICBJUEM6OkNvbm5lY3Rpb24qIG1lc3NhZ2VTZW5kZXJDb25uZWN0
aW9uKCkgY29uc3Qgb3ZlcnJpZGU7CkBAIC04MiwxMiArODUsMTYgQEAgcHVibGljOgogcHJpdmF0
ZToKICAgICBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkoKTsKIAorICAgIHZvaWQgdXBkYXRl
UmV1c2FibGVIYW5kbGVzKCk7CisKICAgICAvLyBNZXNzYWdlcyB0byBiZSByZWNlaXZlZC4KICAg
ICB2b2lkIGltYWdlQnVmZmVyQmFja2VuZFdhc0NyZWF0ZWQoY29uc3QgV2ViQ29yZTo6RmxvYXRT
aXplJiBsb2dpY2FsU2l6ZSwgY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYgYmFja2VuZFNpemUsIGZs
b2F0IHJlc29sdXRpb25TY2FsZSwgV2ViQ29yZTo6Q29sb3JTcGFjZSwgSW1hZ2VCdWZmZXJCYWNr
ZW5kSGFuZGxlLCBXZWJDb3JlOjpSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpOwogICAgIHZv
aWQgZmx1c2hEaXNwbGF5TGlzdFdhc0NvbW1pdHRlZChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6Rmx1
c2hJZGVudGlmaWVyLCBXZWJDb3JlOjpSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpOwogCiAg
ICAgUmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5IG1fcmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5Owot
ICAgIEhhc2hNYXA8V2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1CdWZmZXJJZGVudGlmaWVyLCBS
ZWZQdHI8U2hhcmVkTWVtb3J5Pj4gbV9zaGFyZWRJdGVtQnVmZmVyczsKKyAgICBIYXNoTWFwPFdl
YkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtQnVmZmVySWRlbnRpZmllciwgc3RkOjp1bmlxdWVfcHRy
PERpc3BsYXlMaXN0V3JpdGVySGFuZGxlPj4gbV9zaGFyZWREaXNwbGF5TGlzdEhhbmRsZXM7Cisg
ICAgRGVxdWU8V2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1CdWZmZXJJZGVudGlmaWVyPiBtX2lk
ZW50aWZpZXJzT2ZSZXVzYWJsZUhhbmRsZXM7CisgICAgSGFzaFNldDxXZWJDb3JlOjpEaXNwbGF5
TGlzdDo6SXRlbUJ1ZmZlcklkZW50aWZpZXI+IG1faWRlbnRpZmllcnNPZkhhbmRsZXNBdmFpbGFi
bGVGb3JXcml0aW5nOwogICAgIFJlbmRlcmluZ0JhY2tlbmRJZGVudGlmaWVyIG1fcmVuZGVyaW5n
QmFja2VuZElkZW50aWZpZXIgeyBSZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllcjo6Z2VuZXJhdGUo
KSB9OwogfTsKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>413534</attachid>
            <date>2020-11-07 13:16:19 -0800</date>
            <delta_ts>2020-11-10 08:52:44 -0800</delta_ts>
            <desc>Depends on #218689</desc>
            <filename>bug-218426-20201107131617.patch</filename>
            <type>text/plain</type>
            <size>58898</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY5NTYwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGYzYWI0NTFhMTQ3N2JlMjM1
ODEwYTk2YjdmMjYyNDE4YmQ1Mzg3NWUuLjQxMTBhNWQ0NzNkYTE3ZTAwZWMzYzZhZDBiYWYyZjI0
OTZlMmM1ZjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQ5IEBACisyMDIwLTExLTA0ICBXZW5zb24g
SHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAgICAgIFtDb25jdXJyZW50IGRp
c3BsYXkgbGlzdHNdIEFkZCBhbiBpbml0aWFsIGltcGxlbWVudGF0aW9uIG9mIGNvbmN1cnJlbnQg
ZGlzcGxheSBsaXN0IHJlbmRlcmluZworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MjE4NDI2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgVGhpcyBwYXRjaCBhZGRzIGEgZmlyc3QtY3V0IGltcGxlbWVudGF0aW9u
IG9mIGNvbmN1cnJlbnQgZGlzcGxheSBsaXN0IHJlbmRlcmluZywgd2hpY2ggYWxsb3dzIHRoZSBH
UFUgYW5kIHdlYgorICAgICAgICBwcm9jZXNzZXMgdG8gcmVhZCBhbmQgd3JpdGUgZGlzcGxheSBs
aXN0IGRhdGEgYXQgdGhlIHNhbWUgdGltZS4gVG8gYWNoaWV2ZSB0aGlzLCB3ZSByZW1vdmUgdGhl
IHBsYWNlaG9sZGVyCisgICAgICAgIHNoYXJlZCBtZW1vcnkgZGlzcGxheSBsaXN0IGVuY29kaW5n
IG1lY2hhbmlzbSBwcmV2aW91c2x5IGFkZGVkIGluIDx3ZWJraXQub3JnL2IvMjE4NDA2PiwgYW5k
IHJlcGxhY2UgaXQgd2l0aCBhCisgICAgICAgIG5ldyBtb2RlbCBpbiB3aGljaCBhIHdyaXRlciAo
aS5lLiB0aGUgd2ViIHByb2Nlc3MpIGFuZCBhIHJlYWRlciAoaS5lLiB0aGUgR1BVIHByb2Nlc3Mp
IHNoYXJlIGEgc2V0IG9mIHJldXNhYmxlCisgICAgICAgIHNoYXJlZCBtZW1vcnkgYnVmZmVycyB3
aGljaCBjb250YWluIGRpc3BsYXkgbGlzdCBpdGVtIGRhdGEuIEFzIHRoZSB3cml0ZXIgYXBwZW5k
cyBkYXRhIHRvIHNoYXJlZCBtZW1vcnksIGl0CisgICAgICAgIGluY3JlbWVudHMgYSBjb3VudGVy
IGluIGVhY2ggc2hhcmVkIG1lbW9yeSBidWZmZXIgdGhhdCByZXByZXNlbnRzIHRoZSBudW1iZXIg
b2YgYnl0ZXMgdGhhdCB0aGUgcmVhZGVyIGhhcyB5ZXQgdG8KKyAgICAgICAgcmVhZDsgYXMgdGhl
IHJlYWRlciByZWFkcyBkaXNwbGF5IGxpc3QgaXRlbXMgZnJvbSBzaGFyZWQgbWVtb3J5LCBpdCBk
ZWNyZW1lbnRzIHRoaXMgY291bnRlci4KKworICAgICAgICBUaGlzIHBhdGNoIGFsc28gaW1wbGVt
ZW50cyBhIHNpbXBsZSBzdHJhdGVneSBmb3IgcmV1c2luZyB0aGVzZSBzaGFyZWQgaXRlbSBidWZm
ZXJzLiBUaGUgd2ViIHByb2Nlc3MgbWFpbnRhaW5zIGEKKyAgICAgICAgcXVldWUgb2YgcmV1c2Fi
bGUgYnVmZmVyczsgd2hlbiBkaXNwbGF5IGxpc3QgaXRlbXMgYXJlIGFwcGVuZGVkIGFuZCB0aGUg
Y3VycmVudCB3cml0YWJsZSBidWZmZXIgaXMgb3V0IG9mCisgICAgICAgIGNhcGFjaXR5LCB0aGUg
ZGlzcGxheSBsaXN0IGl0ZW0gYnVmZmVyIGNhbGxzIG91dCB0byBXZWJLaXQyIHZpYSBhIGNsaWVu
dCBtZXRob2QgdG8gcmVxdWVzdCBtb3JlIHNoYXJlZCBtZW1vcnkuCisgICAgICAgIEhlcmUsIHRo
ZSB3ZWIgcHJvY2VzcyB0cmF2ZXJzZXMgdGhlIHF1ZXVlIG9mIHJldXNhYmxlIGl0ZW0gYnVmZmVy
cyBpbiBzZWFyY2ggb2YgYSBidWZmZXIgd2l0aCBzdWZmaWNpZW50CisgICAgICAgIGNhcGFjaXR5
OyBpZiBmb3VuZCwgd2UgaGFuZCB0aGlzIGJhY2sgdG8gV2ViQ29yZSBhcyBhbiBvcGFxdWUgYEl0
ZW1CdWZmZXJIYW5kbGVgOyBvdGhlcndpc2UsIHdlIGFsbG9jYXRlIGEgbmV3CisgICAgICAgIHJl
dXNhYmxlIHNoYXJlZCBtZW1vcnkgYnVmZmVyLiBJdGVtIGJ1ZmZlcnMgdGhhdCBoYXZlIGJlZW4g
dXNlZCBiZWNvbWUgcmV1c2FibGUgb25seSBhZnRlciB0aGV5IGFyZSAoMSkgbm8KKyAgICAgICAg
bG9uZ2VyIGJlaW5nIHJlYWQgZnJvbSAtLSBpLmUuLCB0aGUgY291bnRlciB2YWx1ZSBpcyAwLCBh
bmQgKDIpIHRoZXkgYXJlIG5vdCBhY3RpdmVseSBiZWluZyB3cml0dGVuIHRvLgorICAgICAgICBC
dWZmZXJzIHRoYXQgaGF2ZSBiZWVuIHVzZWQgYXJlIGxhemlseSByZWludHJvZHVjZWQgaW50byB0
aGUgcmV1c2UgcXVldWUgd2hlbiBhIGRpc3BsYXkgbGlzdCByZXF1ZXN0cyBhIGhhbmRsZQorICAg
ICAgICB0byB3cml0YWJsZSBpdGVtIGJ1ZmZlciBkYXRhLgorCisgICAgICAgIFNlZSBiZWxvdyBm
b3IgbW9yZSBkZXRhaWxzLgorCisgICAgICAgICogR1BVUHJvY2Vzcy9ncmFwaGljcy9EaXNwbGF5
TGlzdFJlYWRlckhhbmRsZS5jcHA6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJLaXQvU2hhcmVkL1No
YXJlZERpc3BsYXlMaXN0SGFuZGxlLmNwcC4KKyAgICAgICAgKFdlYktpdDo6RGlzcGxheUxpc3RS
ZWFkZXJIYW5kbGU6OmFkdmFuY2UpOgorICAgICAgICAoV2ViS2l0OjpEaXNwbGF5TGlzdFJlYWRl
ckhhbmRsZTo6Y3JlYXRlRGlzcGxheUxpc3QgY29uc3QpOgorICAgICAgICAqIEdQVVByb2Nlc3Mv
Z3JhcGhpY3MvRGlzcGxheUxpc3RSZWFkZXJIYW5kbGUuaDogQ29waWVkIGZyb20gU291cmNlL1dl
YktpdC9TaGFyZWQvU2hhcmVkRGlzcGxheUxpc3RIYW5kbGUuY3BwLgorICAgICAgICAoV2ViS2l0
OjpEaXNwbGF5TGlzdFJlYWRlckhhbmRsZTo6RGlzcGxheUxpc3RSZWFkZXJIYW5kbGUpOgorCisg
ICAgICAgIEFkZCBhIG5ldyBoZWxwZXIgY2xhc3MgdG8gcmVwcmVzZW50IGEgc2hhcmVkIGRpc3Bs
YXkgbGlzdCBpdGVtIGJ1ZmZlciB0aGF0IHRoZSBHUFUgcHJvY2VzcyBjYW4gdXNlIHRvIGNvbnN1
bWUKKyAgICAgICAgZGlzcGxheSBsaXN0IGl0ZW1zLiBBZHZhbmNpbmcgdGhlIGN1cnNvciBpbiBg
RGlzcGxheUxpc3RSZWFkZXJIYW5kbGVgIGRlY3JlbWVudHMgdGhlICJyZW1haW5pbmcgYnl0ZXMi
IGNvdW50ZXI7CisgICAgICAgIHRoZSBjbGFzcyBhbHNvIGhhcyBhIGhlbHBlciBtZXRob2QgZm9y
IGNyZWF0aW5nIGEgbmV3IGBEaXNwbGF5TGlzdGAgd2l0aCBhIGdpdmVuIG9mZnNldCBpbnRvIHRo
ZSBzaGFyZWQgYnVmZmVyLAorICAgICAgICBhcyB3ZWxsIHRoZSBudW1iZXIgb2YgYnl0ZXMgdG8g
cmVhZC4KKworICAgICAgICAqIEdQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlSW1hZ2VCdWZmZXIu
aDoKKworICAgICAgICBIYW5kbGUgdGhlIGBNZXRhQ29tbWFuZFN3aXRjaFRvYCBhbmQgYEZsdXNo
Q29udGV4dGAgaXRlbXMgYnkgKHJlc3BlY3RpdmVseSkgaW5mb3JtaW5nIHRoZSByZW5kZXJpbmcg
YmFja2VuZAorICAgICAgICBhYm91dCB0aGUgbmV4dCBidWZmZXIgdG8gcmVhZCBmcm9tLCBhbmQg
c2VuZGluZyBhICJmbHVzaCBjb21taXR0ZWQiIElQQyBtZXNzYWdlIGJhY2sgdG8gdGhlIHdlYiBw
cm9jZXNzLgorCisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUltYWdlQnVmZmVyOjpSZW1vdGVJbWFn
ZUJ1ZmZlcik6CisgICAgICAgICogR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdC
YWNrZW5kLmNwcDoKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6d2Fr
ZVVwQW5kUHJvY2Vzc0Rpc3BsYXlMaXN0KToKKworICAgICAgICBUaGlzIGlzIHRoZSBtYWluIGxv
b3AgaW4gdGhlIEdQVSBwcm9jZXNzIHRoYXQgaXMgcmVzcG9uc2libGUgZm9yIGFwcGx5aW5nIGlu
Y29taW5nIGRpc3BsYXkgbGlzdCBpdGVtIGRhdGEuIFRoaXMKKyAgICAgICAgSVBDIGVuZHBvaW50
IHJlY2VpdmVzIGluZm9ybWF0aW9uIGFib3V0IHdoZXJlIHRvIHN0YXJ0IChpLmUuIGFuIGl0ZW0g
YnVmZmVyIElEIGFuZCBhbiBvZmZzZXQgaW50byBzaGFyZWQgbWVtb3J5CisgICAgICAgIGluIHRo
YXQgYnVmZmVyKSBhbmQgYmVnaW5zIHJlYWRpbmcgcmFuZ2VzIG9mIGRpc3BsYXkgbGlzdCBpdGVt
IGRhdGEgaW5zaWRlIHRoYXQgYnVmZmVyLiBBZnRlciBpdCBpcyBkb25lCisgICAgICAgIHByb2Nl
c3NpbmcgYWxsIG9mIGl0cyB1bnJlYWQgYnl0ZXMsIGl0IHRoZW4gY2hlY2tzIHRoZSB1bnJlYWQg
Ynl0ZSBjb3VudCBvbmNlIGFnYWluLCBhbmQgY29udGludWVzIHRoZSBsb29wIGlmCisgICAgICAg
IHRoZSB3ZWIgcHJvY2VzcyBoYXMgYWR2YW5jZWQgdGhpcyBjb3VudC4KKworICAgICAgICAoV2Vi
S2l0OjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpzZXROZXh0SXRlbUJ1ZmZlclRvUmVhZCk6Cisg
ICAgICAgIChXZWJLaXQ6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OmRpZENyZWF0ZVNoYXJlZERp
c3BsYXlMaXN0SGFuZGxlKToKKworICAgICAgICBBZGQgbG9naWMgdG8gaGFuZGxlIHRoZSBjYXNl
IHdoZXJlIHdlIHJlYWNoZWQgdGhlIGVuZCBvZiBhbiBpdGVtIGJ1ZmZlciwgYnV0IHRoZSBuZXh0
IGJ1ZmZlciBpZGVudGlmaWVyIGlzIHN0aWxsCisgICAgICAgIHVua25vd24gdG8gdXMgKHNpbmNl
IGl0IGlzIHN0aWxsICJpbiB0cmFuc2l0IiB2aWEgdGhlIGBEaWRDcmVhdGVTaGFyZWREaXNwbGF5
TGlzdEhhbmRsZWAgSVBDIG1lc3NhZ2UpLiBJbiB0aGlzCisgICAgICAgIGNhc2UsIHdlIHJlbWVt
YmVyIHRoZSBuZXh0IGJ1ZmZlciBpZGVudGlmaWVyIGluIGBtX25leHRJdGVtQnVmZmVyVG9SZWFk
YCwgYW5kIGV4aXQgdGhlIHByb2Nlc3NpbmcgbG9vcCBpbnNpZGUKKyAgICAgICAgYHdha2VVcEFu
ZFByb2Nlc3NEaXNwbGF5TGlzdGAuIFVwb24gcmVjZWl2aW5nIHRoZSBzaGFyZWQgbWVtb3J5IGhh
bmRsZSBpbiBgZGlkQ3JlYXRlU2hhcmVkRGlzcGxheUxpc3RIYW5kbGVgLCB3ZQorICAgICAgICB0
aGVuIGF1dG9tYXRpY2FsbHkgcmVzdW1lIGRpc3BsYXkgbGlzdCBwcm9jZXNzaW5nLCBzdGFydGlu
ZyBmcm9tIHRoZSBiZWdpbm5pbmcgb2YgdGhpcyBuZXcgYnVmZmVyLgorCisgICAgICAgIChXZWJL
aXQ6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OmFwcGx5RGlzcGxheUxpc3QpOiBEZWxldGVkLgor
ICAgICAgICAoV2ViS2l0OjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpmbHVzaERpc3BsYXlMaXN0
KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6Zmx1
c2hEaXNwbGF5TGlzdEFuZENvbW1pdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OlJlbW90
ZVJlbmRlcmluZ0JhY2tlbmQ6OmRpZENyZWF0ZVNoYXJlZEl0ZW1EYXRhKTogRGVsZXRlZC4KKwor
ICAgICAgICBXZSBkb24ndCBuZWVkIGFueSBvZiB0aGVzZSBtZXRob2RzIGFueW1vcmUsIG5vdyB0
aGF0IHRoZXJlIGlzIG9ubHkgb25lIGNvZGVwYXRoIGZvciBwcm9jZXNzaW5nIGRpc3BsYXkgbGlz
dAorICAgICAgICBpdGVtcy4gU2VlIGBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjp3YWtlVXBBbmRQ
cm9jZXNzRGlzcGxheUxpc3RgIGFib3ZlLiBBbHNvLCByZW5hbWUgYGRpZENyZWF0ZVNoYXJlZEl0
ZW1EYXRhYAorICAgICAgICB0byBgZGlkQ3JlYXRlU2hhcmVkRGlzcGxheUxpc3RIYW5kbGVgIChh
bHNvIGFib3ZlKS4KKworICAgICAgICAqIEdQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVy
aW5nQmFja2VuZC5oOgorICAgICAgICAqIEdQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVy
aW5nQmFja2VuZC5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBTaGFyZWQvU2hhcmVkRGlzcGxheUxp
c3RIYW5kbGUuaDoKKyAgICAgICAgKFdlYktpdDo6U2hhcmVkRGlzcGxheUxpc3RIYW5kbGU6OnNo
YXJlZE1lbW9yeSBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OlNoYXJlZERpc3BsYXlMaXN0SGFu
ZGxlOjpzaGFyZWRNZW1vcnkpOgorICAgICAgICAoV2ViS2l0OjpTaGFyZWREaXNwbGF5TGlzdEhh
bmRsZTo6dW5yZWFkQnl0ZXMgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpTaGFyZWREaXNwbGF5
TGlzdEhhbmRsZTo6ZGF0YSBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OlNoYXJlZERpc3BsYXlM
aXN0SGFuZGxlOjppZGVudGlmaWVyIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6U2hhcmVkRGlz
cGxheUxpc3RIYW5kbGU6OkxvY2s6OkxvY2spOgorICAgICAgICAoV2ViS2l0OjpTaGFyZWREaXNw
bGF5TGlzdEhhbmRsZTo6TG9jazo6fkxvY2spOgorICAgICAgICAoV2ViS2l0OjpTaGFyZWREaXNw
bGF5TGlzdEhhbmRsZTo6U2hhcmVkRGlzcGxheUxpc3RIYW5kbGUpOgorICAgICAgICAoV2ViS2l0
OjpTaGFyZWREaXNwbGF5TGlzdEhhbmRsZTo6dW5yZWFkQnl0ZXNIYW5kbGUpOgorICAgICAgICAo
V2ViS2l0OjpTaGFyZWREaXNwbGF5TGlzdEhhbmRsZTo6YXRvbWljTG9ja1ZhbHVlIGNvbnN0KToK
KyAgICAgICAgKFdlYktpdDo6U2hhcmVkRGlzcGxheUxpc3RIYW5kbGU6OmVuY29kZSBjb25zdCk6
IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OlNoYXJlZERpc3BsYXlMaXN0SGFuZGxlOjpkZWNv
ZGUpOiBEZWxldGVkLgorCisgICAgICAgIFJlcHVycG9zZSBgU2hhcmVkRGlzcGxheUxpc3RIYW5k
bGVgIHRvIHNlcnZlIGFzIGEgYmFzZSBjbGFzcyBmb3IgYm90aCBgRGlzcGxheUxpc3RSZWFkZXJI
YW5kbGVgIGFuZAorICAgICAgICBgRGlzcGxheUxpc3RXcml0ZXJIYW5kbGVgLiBUaGlzIGJhc2Ug
Y2xhc3MgaXMgYXdhcmUgb2YgdGhlIG1lbW9yeSBsYXlvdXQgb2YgdGhlIGRpc3BsYXkgbGlzdCBp
dGVtIGJ1ZmZlciBpbgorICAgICAgICBzaGFyZWQgbWVtb3J5IChpbiBwYXJ0aWN1bGFyLCB0aGUg
ZmFjdCB0aGF0IHRoZSBmaXJzdCBieXRlIGlzIHRoZSBhdG9taWMgbG9jayBhbmQgdGhlIG5leHQg
YHNpemVvZihzaXplX3QpYAorICAgICAgICBieXRlcyBjb250YWluIHRoZSB1bnJlYWQgYnl0ZSBj
b3VudGVyKS4KKworICAgICAgICBUaGlzIGFsc28gZXhwb3NlcyBhIGhlbHBlciBSQUlJIGNsYXNz
LCBgU2hhcmVkRGlzcGxheUxpc3RIYW5kbGU6OkxvY2tgLCB0aGF0IGlzIHVzZWQgdG8gZ3JhYiB0
aGUgbG9jayBvbiBhCisgICAgICAgIHBhcnRpY3VsYXIgc2hhcmVkIGl0ZW0gYnVmZmVyIHdoZW4g
cmVhZGluZyBvciB1cGRhdGluZyB0aGUgdW5yZWFkIGJ5dGVzIGNvdW50ZXIuCisKKyAgICAgICAg
KiBTb3VyY2VzLnR4dDoKKyAgICAgICAgKiBXZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
ajoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9EaXNwbGF5TGlzdFdyaXRlckhh
bmRsZS5jcHA6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJLaXQvU2hhcmVkL1NoYXJlZERpc3BsYXlM
aXN0SGFuZGxlLmNwcC4KKyAgICAgICAgKFdlYktpdDo6RGlzcGxheUxpc3RXcml0ZXJIYW5kbGU6
OmFkdmFuY2UpOgorICAgICAgICAoV2ViS2l0OjpEaXNwbGF5TGlzdFdyaXRlckhhbmRsZTo6YXZh
aWxhYmxlQ2FwYWNpdHkgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpEaXNwbGF5TGlzdFdyaXRl
ckhhbmRsZTo6Y3JlYXRlSGFuZGxlIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6RGlzcGxheUxp
c3RXcml0ZXJIYW5kbGU6OnJlc2V0V3JpdGFibGVPZmZzZXRJZlBvc3NpYmxlKToKKworICAgICAg
ICBUaGlzIGhlbHBlciBtZXRob2QgbW92ZXMgdGhlIHdyaXRhYmxlIG9mZnNldCAoc2VlIGJlbG93
KSBiYWNrIHRvIHRoZSBzdGFydCBvZiB0aGUgYnVmZmVyIGlmIGl0IGlzIG5vdCBiZWluZyByZWFk
CisgICAgICAgIGZyb20gYnkgdGhlIEdQVSBwcm9jZXNzLgorCisgICAgICAgICogV2ViUHJvY2Vz
cy9HUFUvZ3JhcGhpY3MvRGlzcGxheUxpc3RXcml0ZXJIYW5kbGUuaDogUmVuYW1lZCBmcm9tIFNv
dXJjZS9XZWJLaXQvU2hhcmVkL1NoYXJlZERpc3BsYXlMaXN0SGFuZGxlLmNwcC4KKyAgICAgICAg
KFdlYktpdDo6RGlzcGxheUxpc3RXcml0ZXJIYW5kbGU6OkRpc3BsYXlMaXN0V3JpdGVySGFuZGxl
KToKKyAgICAgICAgKFdlYktpdDo6RGlzcGxheUxpc3RXcml0ZXJIYW5kbGU6OndyaXRhYmxlT2Zm
c2V0IGNvbnN0KToKKworICAgICAgICBTaW1pbGFyIHRvIGBEaXNwbGF5TGlzdFJlYWRlckhhbmRs
ZWAsIGV4Y2VwdCB0aGF0IHRoaXMgY29udGFpbnMgbG9naWMgc3BlY2lmaWMgdG8gdGhlIHdlYiBw
cm9jZXNzIGZvciB3cml0aW5nCisgICAgICAgIGRpc3BsYXkgbGlzdCBpdGVtcyBpbnRvIHNoYXJl
ZCBtZW1vcnkuIEFkdmFuY2luZyB0aGUgY3Vyc29yIGluIGBEaXNwbGF5TGlzdFdyaXRlckhhbmRs
ZWAgaW5jcmVtZW50cyB0aGUgY291bnRlci4KKyAgICAgICAgSXQgYWxzbyBpbmNyZW1lbnRzIHRo
ZSBgd3JpdGFibGVPZmZzZXRgIG9mIHRoZSBoYW5kbGUsIHdoaWNoIHJlcHJlc2VudHMgdGhlIG1p
bmltdW0gb2Zmc2V0IGludG8gdGhlIHNoYXJlZAorICAgICAgICBidWZmZXIgdGhhdCBtYXkgY29u
dGFpbiBuZXdseSBhcHBlbmRlZCBkaXNwbGF5IGxpc3QgaXRlbXMuCisKKyAgICAgICAgKiBXZWJQ
cm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVJbWFnZUJ1ZmZlclByb3h5Lmg6CisgICAgICAgICog
V2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5LmNwcDoK
KyAgICAgICAgKFdlYktpdDo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5OjpmbHVzaERpc3Bs
YXlMaXN0KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5Ojp1
cGRhdGVSZXVzYWJsZUhhbmRsZXMpOgorCisgICAgICAgIFRoaXMgcHJpdmF0ZSBoZWxwZXIgaXRl
cmF0ZXMgdGhlIHNldCBvZiBidWZmZXJzIHRoYXQgYXJlIG5vdCBjdXJyZW50bHkgYmVpbmcgd3Jp
dHRlbiB0bywgYW5kIGFkZHMgZWFjaCBvbmUgdG8KKyAgICAgICAgdGhlIHJldXNhYmxlIGJ1ZmZl
ciBxdWV1ZSBvbmx5IGlmIGl0cyB3cml0YWJsZSBvZmZzZXQgaXMgYXQgdGhlIHN0YXJ0LgorCisg
ICAgICAgIChXZWJLaXQ6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eTo6Y3JlYXRlSXRlbUJ1
ZmZlcik6CisKKyAgICAgICAgSW1wbGVtZW50cyBsb2dpYyB0aGF0IGhhbmRzIHNoYXJlZCBpdGVt
IGJ1ZmZlciBkYXRhIGhhbmRsZXMgdG8gV2ViQ29yZSBmb3Igd3JpdGluZyBkaXNwbGF5IGxpc3Qg
aXRlbXMuIFRoaXMgd2lsbAorICAgICAgICB0cnkgdG8gcmV1c2UgYW4gaXRlbSBidWZmZXIgaW4g
dGhlIHJldXNlIHF1ZXVlLCBpZiBwb3NzaWJsZSwgYW5kIGZhbGwgYmFjayB0byBhbGxvY2F0aW5n
IGEgbmV3IGNodW5rIG9mIHNoYXJlZAorICAgICAgICBtZW1vcnkgaWYgbm8gcmV1c2FibGUgYnVm
ZmVyIGlzIGZvdW5kIChvciB0aGUgZXhpc3RpbmcgYnVmZmVycyBoYXZlIGluc3VmZmljaWVudCBj
YXBhY2l0eSkuIFRoZSBmYWN0IHRoYXQgd2UKKyAgICAgICAgaXRlcmF0ZSB0aHJvdWdoIGVhY2gg
cmV1c2FibGUgYnVmZmVyIGluIG9yZGVyLCBjb21iaW5lZCB3aXRoIHRoZSBhYm92ZSBsb2dpYyBp
biBgdXBkYXRlUmV1c2FibGVIYW5kbGVzYCwgZW5zdXJlcworICAgICAgICB0aGF0IG9uY2Ugd2Ug
YmVnaW4gd3JpdGluZyB0byBhIGl0ZW0gYnVmZmVyLCB3ZSB3aWxsIGNvbnRpbnVlIHVzaW5nIHRo
YXQgaXRlbSBidWZmZXIgdW50aWwgaXQgZXhoYXVzdHMgYXZhaWxhYmxlCisgICAgICAgIGNhcGFj
aXR5LgorCisgICAgICAgIFRoaXMgcHJvcGVydHkgaXMgaW1wb3J0YW50IGJlY2F1c2UgaXQgYWxs
b3dzIHRoZSBHUFUgcHJvY2VzcyB0byBzaW1wbHkgc3RhcnQgcmVhZGluZyBpdGVtIGRhdGEgZnJv
bSBhIGdpdmVuCisgICAgICAgIG9mZnNldCBhbmQgYnVmZmVyIElEIChzcGVjaWZpZWQgaW4gdGhl
IGBXYWtlVXBBbmRQcm9jZXNzRGlzcGxheUxpc3RgIElQQyBtZXNzYWdlKSwgYW5kIHNlYW1sZXNz
bHkgY29udGludWUKKyAgICAgICAgcmVhZGluZyBkYXRhIGV2ZW4gYWZ0ZXIgaXQgZXhoYXVzdHMg
YWxsIGF2YWlsYWJsZSBpdGVtIGRhdGEgaW4gdGhlIGN1cnJlbnQgYnVmZmVyIGJ5IGNvbnRpbnVp
bmcgZnJvbSB0aGUgc3RhcnQKKyAgICAgICAgb2YgdGhlIGl0ZW0gYnVmZmVyIHRoYXQgY29udGFp
bnMgdGhlIG5leHQgZGlzcGxheSBsaXN0IGl0ZW1zICh3aGljaCB3ZSBsZWFybiBpbiB0aGUgR1BV
IHByb2Nlc3MgYnkgZW5jb3VudGVyaW5nCisgICAgICAgIGEgYE1ldGFDb21tYW5kU3dpdGNoVG9g
IGl0ZW0gYXQgdGhlIGVuZCBvZiB0aGUgcHJldmlvdXMgYnVmZmVyKS4KKworICAgICAgICBJbiAi
c3RlYWR5IHN0YXRlIiAod2hlcmVpbiBib3RoIHByb2Nlc3NlcyBhcmUgY29uY3VycmVudGx5IHdy
aXRpbmcgYW5kIHJlYWRpbmcgaXRlbXMgYXMgcXVpY2tseSBhcyBwb3NzaWJsZSksCisgICAgICAg
IHRoaXMgbWVhbnMgdGhhdCBhcyB0aGUgd2ViIHByb2Nlc3MgaXMgYnVzeSBmaWxsaW5nIHVwIGVh
Y2ggaXRlbSBidWZmZXIgd2l0aCBpdGVtIGRhdGEsIHRoZSBHUFUgcHJvY2VzcyBpcyBhbHNvCisg
ICAgICAgIGJ1c3kgYXBwbHlpbmcgYWxsIHRoZSBpdGVtIGRhdGEgaW4gb25lIGJ1ZmZlciBhbmQg
YXV0b21hdGljYWxseSBtb3Zpbmcgb24gdG8gdGhlIG5leHQgYnVmZmVyIHdpdGggbm8gYWRkaXRp
b25hbAorICAgICAgICBJUEMgbWVzc2FnZXMgcmVxdWlyZWQuCisKKyAgICAgICAgKFdlYktpdDo6
UmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5OjpmbHVzaERpc3BsYXlMaXN0QW5kQ29tbWl0KTog
RGVsZXRlZC4KKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVSZW5kZXJp
bmdCYWNrZW5kUHJveHkuaDoKKwogMjAyMC0xMS0wNyAgV2Vuc29uIEhzaWVoICA8d2Vuc29uX2hz
aWVoQGFwcGxlLmNvbT4KIAogICAgICAgICBDbGVhbiB1cCBzb21lIGxvZ2ljIGluIFJlbW90ZUlt
YWdlQnVmZmVyIGFuZCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvRGlzcGxheUxpc3RSZWFkZXJIYW5kbGUuY3BwIGIv
U291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL0Rpc3BsYXlMaXN0UmVhZGVySGFuZGxl
LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi5lODYxOWM0M2YzNTQxNGM5ZmI2ODMwZDZmMjY4YzAyMmJiNTlkZjk0
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL0Rp
c3BsYXlMaXN0UmVhZGVySGFuZGxlLmNwcApAQCAtMCwwICsxLDQ0IEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05U
UklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1Ig
SVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
I2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkRpc3BsYXlMaXN0UmVhZGVySGFuZGxlLmgi
CisKK25hbWVzcGFjZSBXZWJLaXQgewordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CisKK3ZvaWQg
RGlzcGxheUxpc3RSZWFkZXJIYW5kbGU6OmFkdmFuY2Uoc2l6ZV90IGFtb3VudCkKK3sKKyAgICB1
bnJlYWRCeXRlc0hhbmRsZSgpIC09IGFtb3VudDsKK30KKworc3RkOjp1bmlxdWVfcHRyPERpc3Bs
YXlMaXN0OjpEaXNwbGF5TGlzdD4gRGlzcGxheUxpc3RSZWFkZXJIYW5kbGU6OmNyZWF0ZURpc3Bs
YXlMaXN0KHNpemVfdCBvZmZzZXQsIHNpemVfdCBjYXBhY2l0eSwgRGlzcGxheUxpc3Q6Okl0ZW1C
dWZmZXJSZWFkaW5nQ2xpZW50JiBjbGllbnQpIGNvbnN0Cit7CisgICAgYXV0byBkaXNwbGF5TGlz
dCA9IG1ha2VVbmlxdWU8RGlzcGxheUxpc3Q6OkRpc3BsYXlMaXN0PihEaXNwbGF5TGlzdDo6SXRl
bUJ1ZmZlckhhbmRsZXMge3sgaWRlbnRpZmllcigpLCBkYXRhKCkgKyBvZmZzZXQsIGNhcGFjaXR5
IH19KTsKKyAgICBkaXNwbGF5TGlzdC0+c2V0SXRlbUJ1ZmZlckNsaWVudCgmY2xpZW50KTsKKyAg
ICByZXR1cm4gZGlzcGxheUxpc3Q7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL0Rpc3BsYXlMaXN0UmVhZGVy
SGFuZGxlLmggYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvRGlzcGxheUxpc3RS
ZWFkZXJIYW5kbGUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41ZjNiYjk5ZTFjNjVhZTdhNmE0YjNiMjc3MjgwMDg0
MzA2MTA4Yzg5Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dy
YXBoaWNzL0Rpc3BsYXlMaXN0UmVhZGVySGFuZGxlLmgKQEAgLTAsMCArMSw0NSBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJ
VFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
CisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiU2hhcmVkRGlzcGxheUxpc3RIYW5kbGUu
aCIKKyNpbmNsdWRlIDx3dGYvRmFzdE1hbGxvYy5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsKKwor
Y2xhc3MgRGlzcGxheUxpc3RSZWFkZXJIYW5kbGUgOiBwdWJsaWMgU2hhcmVkRGlzcGxheUxpc3RI
YW5kbGUgeworICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKERpc3BsYXlMaXN0UmVhZGVySGFuZGxl
KTsgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CitwdWJsaWM6CisgICAgRGlzcGxheUxpc3RSZWFk
ZXJIYW5kbGUoV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1CdWZmZXJJZGVudGlmaWVyIGlkZW50
aWZpZXIsIFJlZjxTaGFyZWRNZW1vcnk+JiYgc2hhcmVkTWVtb3J5KQorICAgICAgICA6IFNoYXJl
ZERpc3BsYXlMaXN0SGFuZGxlKGlkZW50aWZpZXIsIFdURk1vdmUoc2hhcmVkTWVtb3J5KSkKKyAg
ICB7CisgICAgfQorCisgICAgdm9pZCBhZHZhbmNlKHNpemVfdCBhbW91bnQpIG92ZXJyaWRlOwor
ICAgIHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RGlzcGxheUxpc3Q+IGNy
ZWF0ZURpc3BsYXlMaXN0KHNpemVfdCBvZmZzZXQsIHNpemVfdCBjYXBhY2l0eSwgV2ViQ29yZTo6
RGlzcGxheUxpc3Q6Okl0ZW1CdWZmZXJSZWFkaW5nQ2xpZW50JikgY29uc3Q7Cit9OworCit9IC8v
IG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9n
cmFwaGljcy9SZW1vdGVJbWFnZUJ1ZmZlci5oIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dy
YXBoaWNzL1JlbW90ZUltYWdlQnVmZmVyLmgKaW5kZXggNWQzM2Q4OGFlMzE0NGY2MGM1MWQ4NjA2
MzY2MGI0NDRjN2I2YmFhOC4uOTc4ODUxNTY4NmI0ZDIxMmIzNTI4YzBlMWZhOWNhMjQzMjc4YmIw
MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUlt
YWdlQnVmZmVyLmgKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90
ZUltYWdlQnVmZmVyLmgKQEAgLTUyLDYgKzUyLDcgQEAgcHVibGljOgogICAgIFJlbW90ZUltYWdl
QnVmZmVyKHN0ZDo6dW5pcXVlX3B0cjxCYWNrZW5kVHlwZT4mJiBiYWNrZW5kLCBSZW1vdGVSZW5k
ZXJpbmdCYWNrZW5kJiByZW1vdGVSZW5kZXJpbmdCYWNrZW5kLCBXZWJDb3JlOjpSZW5kZXJpbmdS
ZXNvdXJjZUlkZW50aWZpZXIgcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKQogICAgICAgICA6
IEJhc2VDb25jcmV0ZUltYWdlQnVmZmVyKFdURk1vdmUoYmFja2VuZCksIHJlbmRlcmluZ1Jlc291
cmNlSWRlbnRpZmllcikKICAgICAgICAgLCBtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmQocmVtb3Rl
UmVuZGVyaW5nQmFja2VuZCkKKyAgICAgICAgLCBtX3JlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmll
cihyZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpCiAgICAgewogICAgICAgICBtX3JlbW90ZVJl
bmRlcmluZ0JhY2tlbmQuaW1hZ2VCdWZmZXJCYWNrZW5kV2FzQ3JlYXRlZChtX2JhY2tlbmQtPmxv
Z2ljYWxTaXplKCksIG1fYmFja2VuZC0+YmFja2VuZFNpemUoKSwgbV9iYWNrZW5kLT5yZXNvbHV0
aW9uU2NhbGUoKSwgbV9iYWNrZW5kLT5jb2xvclNwYWNlKCksIG1fYmFja2VuZC0+Y3JlYXRlSW1h
Z2VCdWZmZXJCYWNrZW5kSGFuZGxlKCksIHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcik7CiAg
ICAgfQpAQCAtODMsMTIgKzg0LDE1IEBAIHByaXZhdGU6CiAgICAgICAgIH0KIAogICAgICAgICBp
ZiAoaXRlbS5pczxXZWJDb3JlOjpEaXNwbGF5TGlzdDo6Rmx1c2hDb250ZXh0PigpKSB7Ci0gICAg
ICAgICAgICAvLyBGSVhNRTogTm90IGltcGxlbWVudGVkIHlldC4KKyAgICAgICAgICAgIEJhc2VD
b25jcmV0ZUltYWdlQnVmZmVyOjpmbHVzaENvbnRleHQoKTsKKyAgICAgICAgICAgIGF1dG8gaWRl
bnRpZmllciA9IGl0ZW0uZ2V0PFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpGbHVzaENvbnRleHQ+KCku
aWRlbnRpZmllcigpOworICAgICAgICAgICAgbV9yZW1vdGVSZW5kZXJpbmdCYWNrZW5kLmZsdXNo
RGlzcGxheUxpc3RXYXNDb21taXR0ZWQoaWRlbnRpZmllciwgbV9yZW5kZXJpbmdSZXNvdXJjZUlk
ZW50aWZpZXIpOwogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgIH0KIAogICAgICAg
ICBpZiAoaXRlbS5pczxXZWJDb3JlOjpEaXNwbGF5TGlzdDo6TWV0YUNvbW1hbmRTd2l0Y2hUbz4o
KSkgewotICAgICAgICAgICAgLy8gRklYTUU6IE5vdCBpbXBsZW1lbnRlZCB5ZXQuCisgICAgICAg
ICAgICBhdXRvIG5leHRCdWZmZXJJZGVudGlmaWVyID0gaXRlbS5nZXQ8V2ViQ29yZTo6RGlzcGxh
eUxpc3Q6Ok1ldGFDb21tYW5kU3dpdGNoVG8+KCkuaWRlbnRpZmllcigpOworICAgICAgICAgICAg
bV9yZW1vdGVSZW5kZXJpbmdCYWNrZW5kLnNldE5leHRJdGVtQnVmZmVyVG9SZWFkKG5leHRCdWZm
ZXJJZGVudGlmaWVyKTsKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICB9CiAKQEAg
LTk2LDYgKzEwMCw3IEBAIHByaXZhdGU6CiAgICAgfQogCiAgICAgUmVtb3RlUmVuZGVyaW5nQmFj
a2VuZCYgbV9yZW1vdGVSZW5kZXJpbmdCYWNrZW5kOworICAgIFdlYkNvcmU6OlJlbmRlcmluZ1Jl
c291cmNlSWRlbnRpZmllciBtX3JlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcjsKIH07CiAKIH0g
Ly8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNz
L2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQuY3BwIGIvU291cmNlL1dlYktpdC9HUFVQ
cm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQuY3BwCmluZGV4IDZlMWQ1Y2M5
NTFhYmQxOGQ3ZTcxMGU2Yjk4MDhiMWRlYzcyODZkN2MuLjQ2YjdkYmRmYjFkNzkwZDVjY2Q5NDFj
YTgxMGFhN2E0ZTA5YTMzOGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9n
cmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQ
VVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5jcHAKQEAgLTI4LDYgKzI4
LDcgQEAKIAogI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykKIAorI2luY2x1ZGUgIkRpc3BsYXlMaXN0
UmVhZGVySGFuZGxlLmgiCiAjaW5jbHVkZSAiR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oIgog
I2luY2x1ZGUgIlBsYXRmb3JtUmVtb3RlSW1hZ2VCdWZmZXIuaCIKICNpbmNsdWRlICJSZW1vdGVS
ZW5kZXJpbmdCYWNrZW5kTWVzc2FnZXMuaCIKQEAgLTEyNCw0MSArMTI1LDY2IEBAIHZvaWQgUmVt
b3RlUmVuZGVyaW5nQmFja2VuZDo6Y3JlYXRlSW1hZ2VCdWZmZXIoY29uc3QgRmxvYXRTaXplJiBs
b2dpY2FsU2l6ZSwgUmVuCiAgICAgbV9yZW1vdGVSZXNvdXJjZUNhY2hlLmNhY2hlSW1hZ2VCdWZm
ZXIobWFrZVJlZigqaW1hZ2VCdWZmZXIpKTsKIH0KIAotdm9pZCBSZW1vdGVSZW5kZXJpbmdCYWNr
ZW5kOjphcHBseURpc3BsYXlMaXN0KGNvbnN0IFNoYXJlZERpc3BsYXlMaXN0SGFuZGxlJiBoYW5k
bGUsIFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciByZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZp
ZXIsIFNob3VsZEZsdXNoQ29udGV4dCBmbHVzaENvbnRleHQpCit2b2lkIFJlbW90ZVJlbmRlcmlu
Z0JhY2tlbmQ6Ondha2VVcEFuZFByb2Nlc3NEaXNwbGF5TGlzdChXZWJDb3JlOjpEaXNwbGF5TGlz
dDo6SXRlbUJ1ZmZlcklkZW50aWZpZXIgaW5pdGlhbElkZW50aWZpZXIsIHVpbnQ2NF90IGluaXRp
YWxPZmZzZXQsIFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciByZW5kZXJpbmdSZXNvdXJjZUlk
ZW50aWZpZXIpCiB7Ci0gICAgYXV0byBkaXNwbGF5TGlzdCA9IGhhbmRsZS5jcmVhdGVEaXNwbGF5
TGlzdChbJl0gKERpc3BsYXlMaXN0OjpJdGVtQnVmZmVySWRlbnRpZmllciBpZGVudGlmaWVyKSAt
PiB1aW50OF90KiB7Ci0gICAgICAgIGlmIChhdXRvIHNoYXJlZE1lbW9yeSA9IG1fc2hhcmVkSXRl
bUJ1ZmZlcnMudGFrZShpZGVudGlmaWVyKSkKLSAgICAgICAgICAgIHJldHVybiByZWludGVycHJl
dF9jYXN0PHVpbnQ4X3QqPihzaGFyZWRNZW1vcnktPmRhdGEoKSk7Ci0gICAgICAgIHJldHVybiBu
dWxscHRyOwotICAgIH0pOwotCi0gICAgaWYgKCFkaXNwbGF5TGlzdCkgeworICAgIGF1dG8gaW1h
Z2VCdWZmZXIgPSBtX3JlbW90ZVJlc291cmNlQ2FjaGUuY2FjaGVkSW1hZ2VCdWZmZXIocmVuZGVy
aW5nUmVzb3VyY2VJZGVudGlmaWVyKTsKKyAgICBpZiAoIWltYWdlQnVmZmVyKSB7CiAgICAgICAg
IC8vIEZJWE1FOiBBZGQgYSBtZXNzYWdlIGNoZWNrIHRvIHRlcm1pbmF0ZSB0aGUgd2ViIHByb2Nl
c3MuCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBhdXRvIGltYWdlQnVmZmVyID0gbV9y
ZW1vdGVSZXNvdXJjZUNhY2hlLmNhY2hlZEltYWdlQnVmZmVyKHJlbmRlcmluZ1Jlc291cmNlSWRl
bnRpZmllcik7Ci0gICAgaWYgKCFpbWFnZUJ1ZmZlcikgeworICAgIGF1dG8qIHNoYXJlZEhhbmRs
ZSA9IG1fc2hhcmVkRGlzcGxheUxpc3RIYW5kbGVzLmdldChpbml0aWFsSWRlbnRpZmllcik7Cisg
ICAgaWYgKCFzaGFyZWRIYW5kbGUpIHsKICAgICAgICAgLy8gRklYTUU6IEFkZCBhIG1lc3NhZ2Ug
Y2hlY2sgdG8gdGVybWluYXRlIHRoZSB3ZWIgcHJvY2Vzcy4KICAgICAgICAgcmV0dXJuOwogICAg
IH0KIAotICAgIGRpc3BsYXlMaXN0LT5zZXRJdGVtQnVmZmVyQ2xpZW50KHRoaXMpOwotICAgIGlt
YWdlQnVmZmVyLT5mbHVzaERpc3BsYXlMaXN0KCpkaXNwbGF5TGlzdCk7CisgICAgc2l6ZV90IG9m
ZnNldCA9IGluaXRpYWxPZmZzZXQ7CisgICAgc2l6ZV90IHNpemVUb1JlYWQgPSAwOwogCi0gICAg
aWYgKGZsdXNoQ29udGV4dCA9PSBTaG91bGRGbHVzaENvbnRleHQ6OlllcykKLSAgICAgICAgaW1h
Z2VCdWZmZXItPmZsdXNoQ29udGV4dCgpOwotfQorICAgIHsKKyAgICAgICAgU2hhcmVkRGlzcGxh
eUxpc3RIYW5kbGU6OkxvY2sgbG9ja2VyIHsgKnNoYXJlZEhhbmRsZSB9OworICAgICAgICBzaXpl
VG9SZWFkID0gc2hhcmVkSGFuZGxlLT51bnJlYWRCeXRlcygpOworICAgIH0KIAotdm9pZCBSZW1v
dGVSZW5kZXJpbmdCYWNrZW5kOjpmbHVzaERpc3BsYXlMaXN0KGNvbnN0IFNoYXJlZERpc3BsYXlM
aXN0SGFuZGxlJiBoYW5kbGUsIFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciByZW5kZXJpbmdS
ZXNvdXJjZUlkZW50aWZpZXIpCi17Ci0gICAgYXBwbHlEaXNwbGF5TGlzdChoYW5kbGUsIHJlbmRl
cmluZ1Jlc291cmNlSWRlbnRpZmllciwgU2hvdWxkRmx1c2hDb250ZXh0OjpObyk7CisgICAgd2hp
bGUgKHNpemVUb1JlYWQpIHsKKyAgICAgICAgaW1hZ2VCdWZmZXItPmZsdXNoRGlzcGxheUxpc3Qo
KnNoYXJlZEhhbmRsZS0+Y3JlYXRlRGlzcGxheUxpc3Qob2Zmc2V0LCBzaXplVG9SZWFkLCAqdGhp
cykpOworCisgICAgICAgIG9mZnNldCArPSBzaXplVG9SZWFkOworICAgICAgICB7CisgICAgICAg
ICAgICBTaGFyZWREaXNwbGF5TGlzdEhhbmRsZTo6TG9jayBsb2NrZXIgeyAqc2hhcmVkSGFuZGxl
IH07CisgICAgICAgICAgICBzaGFyZWRIYW5kbGUtPmFkdmFuY2Uoc2l6ZVRvUmVhZCk7CisgICAg
ICAgICAgICBzaXplVG9SZWFkID0gc2hhcmVkSGFuZGxlLT51bnJlYWRCeXRlcygpOworICAgICAg
ICB9CisgICAgICAgIGlmIChzaXplVG9SZWFkKQorICAgICAgICAgICAgY29udGludWU7CisKKyAg
ICAgICAgYXV0byBuZXh0SWRlbnRpZmllciA9IHN0ZDo6ZXhjaGFuZ2UobV9uZXh0SXRlbUJ1ZmZl
clRvUmVhZCwgeyB9KTsKKyAgICAgICAgaWYgKCFuZXh0SWRlbnRpZmllcikKKyAgICAgICAgICAg
IGJyZWFrOworCisgICAgICAgIHNoYXJlZEhhbmRsZSA9IG1fc2hhcmVkRGlzcGxheUxpc3RIYW5k
bGVzLmdldChuZXh0SWRlbnRpZmllcik7CisgICAgICAgIGlmICghc2hhcmVkSGFuZGxlKSB7Cisg
ICAgICAgICAgICBtX25leHRJdGVtQnVmZmVyVG9SZWFkID0gbmV4dElkZW50aWZpZXI7CisgICAg
ICAgICAgICBicmVhazsKKyAgICAgICAgfQorCisgICAgICAgIG9mZnNldCA9IFNoYXJlZERpc3Bs
YXlMaXN0SGFuZGxlOjpyZXNlcnZlZENhcGFjaXR5QXRTdGFydDsKKworICAgICAgICBkbyB7Cisg
ICAgICAgICAgICBTaGFyZWREaXNwbGF5TGlzdEhhbmRsZTo6TG9jayBuZXh0QnVmZmVyTG9ja2Vy
IHsgKnNoYXJlZEhhbmRsZSB9OworICAgICAgICAgICAgc2l6ZVRvUmVhZCA9IHNoYXJlZEhhbmRs
ZS0+dW5yZWFkQnl0ZXMoKTsKKyAgICAgICAgfSB3aGlsZSAoIXNpemVUb1JlYWQpOworICAgIH0K
IH0KIAotdm9pZCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpmbHVzaERpc3BsYXlMaXN0QW5kQ29t
bWl0KGNvbnN0IFNoYXJlZERpc3BsYXlMaXN0SGFuZGxlJiBoYW5kbGUsIERpc3BsYXlMaXN0OjpG
bHVzaElkZW50aWZpZXIgZmx1c2hJZGVudGlmaWVyLCBSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZp
ZXIgcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKQordm9pZCBSZW1vdGVSZW5kZXJpbmdCYWNr
ZW5kOjpzZXROZXh0SXRlbUJ1ZmZlclRvUmVhZChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbUJ1
ZmZlcklkZW50aWZpZXIgaWRlbnRpZmllcikKIHsKLSAgICBhcHBseURpc3BsYXlMaXN0KGhhbmRs
ZSwgcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyLCBTaG91bGRGbHVzaENvbnRleHQ6Olllcyk7
Ci0gICAgZmx1c2hEaXNwbGF5TGlzdFdhc0NvbW1pdHRlZChmbHVzaElkZW50aWZpZXIsIHJlbmRl
cmluZ1Jlc291cmNlSWRlbnRpZmllcik7CisgICAgaWYgKFVOTElLRUxZKG1fbmV4dEl0ZW1CdWZm
ZXJUb1JlYWQpKSB7CisgICAgICAgIC8vIEZJWE1FOiBBZGQgYSBtZXNzYWdlIGNoZWNrIHRvIHRl
cm1pbmF0ZSB0aGUgd2ViIHByb2Nlc3MuCisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgbV9u
ZXh0SXRlbUJ1ZmZlclRvUmVhZCA9IGlkZW50aWZpZXI7CiB9CiAKIHZvaWQgUmVtb3RlUmVuZGVy
aW5nQmFja2VuZDo6Z2V0SW1hZ2VEYXRhKEFscGhhUHJlbXVsdGlwbGljYXRpb24gb3V0cHV0Rm9y
bWF0LCBJbnRSZWN0IHNyY1JlY3QsIFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciByZW5kZXJp
bmdSZXNvdXJjZUlkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoSVBDOjpJbWFnZURh
dGFSZWZlcmVuY2UmJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCkBAIC0xNzQsMTAgKzIwMCwxNSBA
QCB2b2lkIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OnJlbGVhc2VSZW1vdGVSZXNvdXJjZShSZW5k
ZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgcgogICAgIG1fcmVtb3RlUmVzb3VyY2VDYWNoZS5yZWxl
YXNlUmVtb3RlUmVzb3VyY2UocmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKTsKIH0KIAotdm9p
ZCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpkaWRDcmVhdGVTaGFyZWRJdGVtRGF0YShEaXNwbGF5
TGlzdDo6SXRlbUJ1ZmZlcklkZW50aWZpZXIgaWRlbnRpZmllciwgY29uc3QgU2hhcmVkTWVtb3J5
OjpJUENIYW5kbGUmIGhhbmRsZSkKK3ZvaWQgUmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6ZGlkQ3Jl
YXRlU2hhcmVkRGlzcGxheUxpc3RIYW5kbGUoRGlzcGxheUxpc3Q6Okl0ZW1CdWZmZXJJZGVudGlm
aWVyIGlkZW50aWZpZXIsIGNvbnN0IFNoYXJlZE1lbW9yeTo6SVBDSGFuZGxlJiBoYW5kbGUsIFJl
bmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciByZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIpCiB7Ci0g
ICAgaWYgKGF1dG8gc2hhcmVkTWVtb3J5ID0gU2hhcmVkTWVtb3J5OjptYXAoaGFuZGxlLmhhbmRs
ZSwgU2hhcmVkTWVtb3J5OjpQcm90ZWN0aW9uOjpSZWFkT25seSkpCi0gICAgICAgIG1fc2hhcmVk
SXRlbUJ1ZmZlcnMuc2V0KGlkZW50aWZpZXIsIFdURk1vdmUoc2hhcmVkTWVtb3J5KSk7CisgICAg
aWYgKGF1dG8gc2hhcmVkTWVtb3J5ID0gU2hhcmVkTWVtb3J5OjptYXAoaGFuZGxlLmhhbmRsZSwg
U2hhcmVkTWVtb3J5OjpQcm90ZWN0aW9uOjpSZWFkV3JpdGUpKQorICAgICAgICBtX3NoYXJlZERp
c3BsYXlMaXN0SGFuZGxlcy5zZXQoaWRlbnRpZmllciwgbWFrZVVuaXF1ZTxEaXNwbGF5TGlzdFJl
YWRlckhhbmRsZT4oaWRlbnRpZmllciwgc2hhcmVkTWVtb3J5LnJlbGVhc2VOb25OdWxsKCkpKTsK
KworICAgIGlmIChtX25leHRJdGVtQnVmZmVyVG9SZWFkID09IGlkZW50aWZpZXIpIHsKKyAgICAg
ICAgbV9uZXh0SXRlbUJ1ZmZlclRvUmVhZCA9IHsgfTsKKyAgICAgICAgd2FrZVVwQW5kUHJvY2Vz
c0Rpc3BsYXlMaXN0KGlkZW50aWZpZXIsIFNoYXJlZERpc3BsYXlMaXN0SGFuZGxlOjpyZXNlcnZl
ZENhcGFjaXR5QXRTdGFydCwgcmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyKTsKKyAgICB9CiB9CiAK
IE9wdGlvbmFsPERpc3BsYXlMaXN0OjpJdGVtSGFuZGxlPiBXQVJOX1VOVVNFRF9SRVRVUk4gUmVt
b3RlUmVuZGVyaW5nQmFja2VuZDo6ZGVjb2RlSXRlbShjb25zdCB1aW50OF90KiBkYXRhLCBzaXpl
X3QgbGVuZ3RoLCBEaXNwbGF5TGlzdDo6SXRlbVR5cGUgdHlwZSwgdWludDhfdCogaGFuZGxlTG9j
YXRpb24pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVt
b3RlUmVuZGVyaW5nQmFja2VuZC5oIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNz
L1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQuaAppbmRleCAzMTlmNGU4NzM3MGJiZmZhODkxNWZhNGRh
OGYzMmExNzNiNGU3MWZkLi4zZmRlNDg2OWE5Y2ViNTQ5ZGUzN2Q3MTdlNzlkODNkMmQ5ZGIwZWE1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVu
ZGVyaW5nQmFja2VuZC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9S
ZW1vdGVSZW5kZXJpbmdCYWNrZW5kLmgKQEAgLTM0LDcgKzM0LDYgQEAKICNpbmNsdWRlICJNZXNz
YWdlU2VuZGVyLmgiCiAjaW5jbHVkZSAiUmVtb3RlUmVzb3VyY2VDYWNoZS5oIgogI2luY2x1ZGUg
IlJlbmRlcmluZ0JhY2tlbmRJZGVudGlmaWVyLmgiCi0jaW5jbHVkZSAiU2hhcmVkRGlzcGxheUxp
c3RIYW5kbGUuaCIKICNpbmNsdWRlIDxXZWJDb3JlL0NvbG9yU3BhY2UuaD4KICNpbmNsdWRlIDxX
ZWJDb3JlL0Rpc3BsYXlMaXN0Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9EaXNwbGF5TGlzdEl0ZW1z
Lmg+CkBAIC01Miw2ICs1MSw3IEBAIGVudW0gY2xhc3MgUmVuZGVyaW5nTW9kZSA6IGJvb2w7CiAK
IG5hbWVzcGFjZSBXZWJLaXQgewogCitjbGFzcyBEaXNwbGF5TGlzdFJlYWRlckhhbmRsZTsKIGNs
YXNzIEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M7CiAKIGNsYXNzIFJlbW90ZVJlbmRlcmluZ0Jh
Y2tlbmQKQEAgLTcyLDEyICs3MiwxMSBAQCBwdWJsaWM6CiAgICAgdm9pZCBpbWFnZUJ1ZmZlckJh
Y2tlbmRXYXNDcmVhdGVkKGNvbnN0IFdlYkNvcmU6OkZsb2F0U2l6ZSYgbG9naWNhbFNpemUsIGNv
bnN0IFdlYkNvcmU6OkludFNpemUmIGJhY2tlbmRTaXplLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUs
IFdlYkNvcmU6OkNvbG9yU3BhY2UsIEltYWdlQnVmZmVyQmFja2VuZEhhbmRsZSwgV2ViQ29yZTo6
UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKTsKICAgICB2b2lkIGZsdXNoRGlzcGxheUxpc3RX
YXNDb21taXR0ZWQoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkZsdXNoSWRlbnRpZmllciwgV2ViQ29y
ZTo6UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKTsKIAorICAgIHZvaWQgc2V0TmV4dEl0ZW1C
dWZmZXJUb1JlYWQoV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1CdWZmZXJJZGVudGlmaWVyKTsK
KwogcHJpdmF0ZToKICAgICBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kKEdQVUNvbm5lY3Rpb25Ub1dl
YlByb2Nlc3MmLCBSZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllcik7CiAKLSAgICBlbnVtIGNsYXNz
IFNob3VsZEZsdXNoQ29udGV4dCA6IGJvb2wgeyBObywgWWVzIH07Ci0gICAgdm9pZCBhcHBseURp
c3BsYXlMaXN0KGNvbnN0IFNoYXJlZERpc3BsYXlMaXN0SGFuZGxlJiwgV2ViQ29yZTo6UmVuZGVy
aW5nUmVzb3VyY2VJZGVudGlmaWVyLCBTaG91bGRGbHVzaENvbnRleHQpOwotCiAgICAgT3B0aW9u
YWw8V2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1IYW5kbGU+IFdBUk5fVU5VU0VEX1JFVFVSTiBk
ZWNvZGVJdGVtKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBsZW5ndGgsIFdlYkNvcmU6OkRp
c3BsYXlMaXN0OjpJdGVtVHlwZSwgdWludDhfdCogaGFuZGxlTG9jYXRpb24pIG92ZXJyaWRlOwog
CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KQEAgLTEwMCwxNiArOTksMTYgQEAgcHJpdmF0ZToK
IAogICAgIC8vIE1lc3NhZ2VzIHRvIGJlIHJlY2VpdmVkLgogICAgIHZvaWQgY3JlYXRlSW1hZ2VC
dWZmZXIoY29uc3QgV2ViQ29yZTo6RmxvYXRTaXplJiBsb2dpY2FsU2l6ZSwgV2ViQ29yZTo6UmVu
ZGVyaW5nTW9kZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBXZWJDb3JlOjpDb2xvclNwYWNlLCBX
ZWJDb3JlOjpSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpOwotICAgIHZvaWQgZmx1c2hEaXNw
bGF5TGlzdChjb25zdCBTaGFyZWREaXNwbGF5TGlzdEhhbmRsZSYsIFdlYkNvcmU6OlJlbmRlcmlu
Z1Jlc291cmNlSWRlbnRpZmllcik7Ci0gICAgdm9pZCBmbHVzaERpc3BsYXlMaXN0QW5kQ29tbWl0
KGNvbnN0IFNoYXJlZERpc3BsYXlMaXN0SGFuZGxlJiwgV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkZs
dXNoSWRlbnRpZmllciwgV2ViQ29yZTo6UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKTsKKyAg
ICB2b2lkIHdha2VVcEFuZFByb2Nlc3NEaXNwbGF5TGlzdChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6
SXRlbUJ1ZmZlcklkZW50aWZpZXIgaW5pdGlhbElkZW50aWZpZXIsIHVpbnQ2NF90IGluaXRpYWxP
ZmZzZXQsIFdlYkNvcmU6OlJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcik7CiAgICAgdm9pZCBn
ZXRJbWFnZURhdGEoV2ViQ29yZTo6QWxwaGFQcmVtdWx0aXBsaWNhdGlvbiBvdXRwdXRGb3JtYXQs
IFdlYkNvcmU6OkludFJlY3Qgc3JjUmVjdCwgV2ViQ29yZTo6UmVuZGVyaW5nUmVzb3VyY2VJZGVu
dGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKElQQzo6SW1hZ2VEYXRhUmVmZXJlbmNlJiYp
PiYmKTsKICAgICB2b2lkIHJlbGVhc2VSZW1vdGVSZXNvdXJjZShXZWJDb3JlOjpSZW5kZXJpbmdS
ZXNvdXJjZUlkZW50aWZpZXIpOwotICAgIHZvaWQgZGlkQ3JlYXRlU2hhcmVkSXRlbURhdGEoV2Vi
Q29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1CdWZmZXJJZGVudGlmaWVyLCBjb25zdCBTaGFyZWRNZW1v
cnk6OklQQ0hhbmRsZSYpOworICAgIHZvaWQgZGlkQ3JlYXRlU2hhcmVkRGlzcGxheUxpc3RIYW5k
bGUoV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1CdWZmZXJJZGVudGlmaWVyLCBjb25zdCBTaGFy
ZWRNZW1vcnk6OklQQ0hhbmRsZSYsIFdlYkNvcmU6OlJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmll
cik7CiAKICAgICBSZW1vdGVSZXNvdXJjZUNhY2hlIG1fcmVtb3RlUmVzb3VyY2VDYWNoZTsKICAg
ICBXZWFrUHRyPEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M+IG1fZ3B1Q29ubmVjdGlvblRvV2Vi
UHJvY2VzczsKICAgICBSZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllciBtX3JlbmRlcmluZ0JhY2tl
bmRJZGVudGlmaWVyOwotICAgIEhhc2hNYXA8V2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1CdWZm
ZXJJZGVudGlmaWVyLCBSZWZQdHI8U2hhcmVkTWVtb3J5Pj4gbV9zaGFyZWRJdGVtQnVmZmVyczsK
KyAgICBIYXNoTWFwPFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtQnVmZmVySWRlbnRpZmllciwg
c3RkOjp1bmlxdWVfcHRyPERpc3BsYXlMaXN0UmVhZGVySGFuZGxlPj4gbV9zaGFyZWREaXNwbGF5
TGlzdEhhbmRsZXM7CisgICAgV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1CdWZmZXJJZGVudGlm
aWVyIG1fbmV4dEl0ZW1CdWZmZXJUb1JlYWQ7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5k
ZXJpbmdCYWNrZW5kLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBo
aWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQubWVzc2FnZXMuaW4KaW5kZXggMTg3ODVhZGMwZmQx
YjYyMDNlNTExNDJhOTQ2NDY3NWZiYTRhMTc5My4uYzM5YmUyNGU3ZGNmZTIzMjVmZTQyYmE5YTM4
NzM0ZjJlMmY1OGVmMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBo
aWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktp
dC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQubWVzc2FnZXMuaW4K
QEAgLTI0LDEwICsyNCw5IEBACiAKIG1lc3NhZ2VzIC0+IFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQg
Tm90UmVmQ291bnRlZCB7CiAgICAgQ3JlYXRlSW1hZ2VCdWZmZXIoV2ViQ29yZTo6RmxvYXRTaXpl
IGxvZ2ljYWxTaXplLCBXZWJDb3JlOjpSZW5kZXJpbmdNb2RlIHJlbmRlcmluZ01vZGUsIGZsb2F0
IHJlc29sdXRpb25TY2FsZSwgV2ViQ29yZTo6Q29sb3JTcGFjZSBjb2xvclNwYWNlLCBXZWJDb3Jl
OjpSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVy
KQotICAgIEZsdXNoRGlzcGxheUxpc3QoV2ViS2l0OjpTaGFyZWREaXNwbGF5TGlzdEhhbmRsZSBk
aXNwbGF5TGlzdCwgV2ViQ29yZTo6UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyIHJlbmRlcmlu
Z1Jlc291cmNlSWRlbnRpZmllcikKLSAgICBGbHVzaERpc3BsYXlMaXN0QW5kQ29tbWl0KFdlYktp
dDo6U2hhcmVkRGlzcGxheUxpc3RIYW5kbGUgZGlzcGxheUxpc3QsIFdlYkNvcmU6OkRpc3BsYXlM
aXN0OjpGbHVzaElkZW50aWZpZXIgZmx1c2hJZGVudGlmaWVyLCBXZWJDb3JlOjpSZW5kZXJpbmdS
ZXNvdXJjZUlkZW50aWZpZXIgcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKQorICAgIFdha2VV
cEFuZFByb2Nlc3NEaXNwbGF5TGlzdChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbUJ1ZmZlcklk
ZW50aWZpZXIgaW5pdGlhbElkZW50aWZpZXIsIHVpbnQ2NF90IGluaXRpYWxPZmZzZXQsIFdlYkNv
cmU6OlJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciByZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZp
ZXIpCiAgICAgR2V0SW1hZ2VEYXRhKGVudW06dWludDhfdCBXZWJDb3JlOjpBbHBoYVByZW11bHRp
cGxpY2F0aW9uIG91dHB1dEZvcm1hdCwgV2ViQ29yZTo6SW50UmVjdCBzcmNSZWN0LCBXZWJDb3Jl
OjpSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVy
KSAtPiAoSVBDOjpJbWFnZURhdGFSZWZlcmVuY2UgaW1hZ2VEYXRhKSBTeW5jaHJvbm91cwotICAg
IERpZENyZWF0ZVNoYXJlZEl0ZW1EYXRhKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtQnVmZmVy
SWRlbnRpZmllciBpZGVudGlmaWVyLCBXZWJLaXQ6OlNoYXJlZE1lbW9yeTo6SVBDSGFuZGxlIGhh
bmRsZSkKKyAgICBEaWRDcmVhdGVTaGFyZWREaXNwbGF5TGlzdEhhbmRsZShXZWJDb3JlOjpEaXNw
bGF5TGlzdDo6SXRlbUJ1ZmZlcklkZW50aWZpZXIgaWRlbnRpZmllciwgV2ViS2l0OjpTaGFyZWRN
ZW1vcnk6OklQQ0hhbmRsZSBoYW5kbGUsIFdlYkNvcmU6OlJlbmRlcmluZ1Jlc291cmNlSWRlbnRp
ZmllciByZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIpCiAgICAgUmVsZWFzZVJlbW90ZVJlc291cmNl
KFdlYkNvcmU6OlJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciByZW5kZXJpbmdSZXNvdXJjZUlk
ZW50aWZpZXIpCiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1NoYXJlZERp
c3BsYXlMaXN0SGFuZGxlLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1NoYXJlZERpc3BsYXlM
aXN0SGFuZGxlLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMWFhNzRkNjE1YWJk
M2Y0YTMxODYyNTJmZjBmZGNiODcxZTcwZmE1MC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9TaGFyZWREaXNwbGF5TGlz
dEhhbmRsZS5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSw1MyArMCwwIEBACi0vKgotICogQ29weXJp
Z2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
Ci0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAq
Ci0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05U
UklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1Ig
SVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQot
I2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIlNoYXJlZERpc3BsYXlMaXN0SGFuZGxlLmgi
Ci0KLW5hbWVzcGFjZSBXZWJLaXQgewotdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7Ci0KLVNoYXJl
ZERpc3BsYXlMaXN0SGFuZGxlOjpTaGFyZWREaXNwbGF5TGlzdEhhbmRsZShjb25zdCBEaXNwbGF5
TGlzdDo6RGlzcGxheUxpc3QmIGRpc3BsYXlMaXN0KQotewotICAgIGRpc3BsYXlMaXN0LmZvckVh
Y2hJdGVtQnVmZmVyKFsmXSAoYXV0byYgaGFuZGxlKSB7Ci0gICAgICAgIG1fYnVmZmVycy5hcHBl
bmQoeyBoYW5kbGUuaWRlbnRpZmllciwgaGFuZGxlLmNhcGFjaXR5IH0pOwotICAgIH0pOwotfQot
Ci1zdGQ6OnVuaXF1ZV9wdHI8RGlzcGxheUxpc3Q6OkRpc3BsYXlMaXN0PiBTaGFyZWREaXNwbGF5
TGlzdEhhbmRsZTo6Y3JlYXRlRGlzcGxheUxpc3QoSXRlbUJ1ZmZlclByb3ZpZGVyJiYgYnVmZmVy
UHJvdmlkZXIpIGNvbnN0Ci17Ci0gICAgRGlzcGxheUxpc3Q6Okl0ZW1CdWZmZXJIYW5kbGVzIGhh
bmRsZXM7Ci0gICAgaGFuZGxlcy5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KG1fYnVmZmVycy5zaXpl
KCkpOwotICAgIGZvciAoYXV0byYgW2lkZW50aWZpZXIsIGNhcGFjaXR5XSA6IG1fYnVmZmVycykg
ewotICAgICAgICBhdXRvKiBkYXRhID0gYnVmZmVyUHJvdmlkZXIoaWRlbnRpZmllcik7Ci0gICAg
ICAgIGlmICghZGF0YSkKLSAgICAgICAgICAgIHJldHVybiBudWxscHRyOwotCi0gICAgICAgIGhh
bmRsZXMudW5jaGVja2VkQXBwZW5kKHsgaWRlbnRpZmllciwgZGF0YSwgY2FwYWNpdHkgfSk7Ci0g
ICAgfQotICAgIHJldHVybiBtYWtlVW5pcXVlPERpc3BsYXlMaXN0OjpEaXNwbGF5TGlzdD4oV1RG
TW92ZShoYW5kbGVzKSk7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9TaGFyZWQvU2hhcmVkRGlzcGxheUxpc3RIYW5kbGUuaCBiL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL1NoYXJlZERpc3BsYXlMaXN0SGFuZGxlLmgKaW5kZXggZDE3NWUxMTRmMjNi
YzhmYjhlNTdjZDkwZjY0YTMzYmUyNjJlMWYzMS4uNDY5MmExZWFkMWFlYjdlYzkyMWU4YTVkNTU3
ODAzYTkxYmNlZmVjMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvU2hhcmVkRGlz
cGxheUxpc3RIYW5kbGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9TaGFyZWREaXNwbGF5
TGlzdEhhbmRsZS5oCkBAIC0yNSw0MiArMjUsNjMgQEAKIAogI3ByYWdtYSBvbmNlCiAKKyNpbmNs
dWRlICJTaGFyZWRNZW1vcnkuaCIKICNpbmNsdWRlIDxXZWJDb3JlL0Rpc3BsYXlMaXN0Lmg+Cisj
aW5jbHVkZSA8YXRvbWljPgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAogY2xhc3MgU2hhcmVkRGlz
cGxheUxpc3RIYW5kbGUgewogcHVibGljOgotICAgIHVzaW5nIEl0ZW1CdWZmZXJQcm92aWRlciA9
IEZ1bmN0aW9uPHVpbnQ4X3QqKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtQnVmZmVySWRlbnRp
Zmllcik+OworICAgIHZpcnR1YWwgflNoYXJlZERpc3BsYXlMaXN0SGFuZGxlKCkgPSBkZWZhdWx0
OwogCi0gICAgU2hhcmVkRGlzcGxheUxpc3RIYW5kbGUoY29uc3QgV2ViQ29yZTo6RGlzcGxheUxp
c3Q6OkRpc3BsYXlMaXN0Jik7Ci0gICAgc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6OkRpc3BsYXlM
aXN0OjpEaXNwbGF5TGlzdD4gY3JlYXRlRGlzcGxheUxpc3QoSXRlbUJ1ZmZlclByb3ZpZGVyJiYp
IGNvbnN0OworICAgIHN0YXRpYyBjb25zdGV4cHIgYXV0byByZXNlcnZlZENhcGFjaXR5QXRTdGFy
dCA9IHNpemVvZihib29sKSArIHNpemVvZihzaXplX3QpOwogCi0gICAgdGVtcGxhdGU8Y2xhc3Mg
RW5jb2Rlcj4gdm9pZCBlbmNvZGUoRW5jb2RlciYpIGNvbnN0OwotICAgIHRlbXBsYXRlPGNsYXNz
IERlY29kZXI+IHN0YXRpYyBPcHRpb25hbDxTaGFyZWREaXNwbGF5TGlzdEhhbmRsZT4gZGVjb2Rl
KERlY29kZXImKTsKKyAgICBjb25zdCBTaGFyZWRNZW1vcnkmIHNoYXJlZE1lbW9yeSgpIGNvbnN0
IHsgcmV0dXJuIG1fc2hhcmVkTWVtb3J5LmdldCgpOyB9CisgICAgU2hhcmVkTWVtb3J5JiBzaGFy
ZWRNZW1vcnkoKSB7IHJldHVybiBtX3NoYXJlZE1lbW9yeS5nZXQoKTsgfQorICAgIHNpemVfdCB1
bnJlYWRCeXRlcygpIGNvbnN0IHsgcmV0dXJuICpyZWludGVycHJldF9jYXN0PHNpemVfdCo+KGRh
dGEoKSArIHNpemVvZihib29sKSk7IH0KKyAgICB1aW50OF90KiBkYXRhKCkgY29uc3QgeyByZXR1
cm4gcmVpbnRlcnByZXRfY2FzdDx1aW50OF90Kj4oc2hhcmVkTWVtb3J5KCkuZGF0YSgpKTsgfQor
ICAgIFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtQnVmZmVySWRlbnRpZmllciBpZGVudGlmaWVy
KCkgY29uc3QgeyByZXR1cm4gbV9pZGVudGlmaWVyOyB9CiAKLXByaXZhdGU6Ci0gICAgU2hhcmVk
RGlzcGxheUxpc3RIYW5kbGUoVmVjdG9yPHN0ZDo6cGFpcjxXZWJDb3JlOjpEaXNwbGF5TGlzdDo6
SXRlbUJ1ZmZlcklkZW50aWZpZXIsIHNpemVfdD4+JiYgYnVmZmVycykKLSAgICAgICAgOiBtX2J1
ZmZlcnMoV1RGTW92ZShidWZmZXJzKSkKKyAgICB2aXJ0dWFsIHZvaWQgYWR2YW5jZShzaXplX3Qg
YW1vdW50KSA9IDA7CisKKyAgICBjbGFzcyBMb2NrIHsKKyAgICBwdWJsaWM6CisgICAgICAgIExv
Y2soU2hhcmVkRGlzcGxheUxpc3RIYW5kbGUmIGhhbmRsZSkKKyAgICAgICAgICAgIDogbV9oYW5k
bGUoaGFuZGxlKQorICAgICAgICB7CisgICAgICAgICAgICBhdXRvJiBhdG9taWNWYWx1ZSA9IG1f
aGFuZGxlLmF0b21pY0xvY2tWYWx1ZSgpOworICAgICAgICAgICAgd2hpbGUgKHRydWUpIHsKKyAg
ICAgICAgICAgICAgICBzdGQ6OnRoaXNfdGhyZWFkOjp5aWVsZCgpOworICAgICAgICAgICAgICAg
IGJvb2wgdW5sb2NrZWQgPSBmYWxzZTsKKyAgICAgICAgICAgICAgICBpZiAoYXRvbWljVmFsdWUu
Y29tcGFyZV9leGNoYW5nZV93ZWFrKHVubG9ja2VkLCB0cnVlKSkKKyAgICAgICAgICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICB+TG9jaygpCisg
ICAgICAgIHsKKyAgICAgICAgICAgIG1faGFuZGxlLmF0b21pY0xvY2tWYWx1ZSgpLnN0b3JlKGZh
bHNlKTsKKyAgICAgICAgfQorCisgICAgcHJpdmF0ZToKKyAgICAgICAgU2hhcmVkRGlzcGxheUxp
c3RIYW5kbGUmIG1faGFuZGxlOworICAgIH07CisKK3Byb3RlY3RlZDoKKyAgICBTaGFyZWREaXNw
bGF5TGlzdEhhbmRsZShXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbUJ1ZmZlcklkZW50aWZpZXIg
aWRlbnRpZmllciwgUmVmPFNoYXJlZE1lbW9yeT4mJiBzaGFyZWRNZW1vcnkpCisgICAgICAgIDog
bV9pZGVudGlmaWVyKGlkZW50aWZpZXIpCisgICAgICAgICwgbV9zaGFyZWRNZW1vcnkoV1RGTW92
ZShzaGFyZWRNZW1vcnkpKQogICAgIHsKICAgICB9CiAKLSAgICBWZWN0b3I8c3RkOjpwYWlyPFdl
YkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtQnVmZmVySWRlbnRpZmllciwgc2l6ZV90Pj4gbV9idWZm
ZXJzOwotfTsKLQotdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4gdm9pZCBTaGFyZWREaXNwbGF5TGlz
dEhhbmRsZTo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0Ci17Ci0gICAgZW5jb2RlciA8
PCBtX2J1ZmZlcnM7Ci19CisgICAgc2l6ZV90JiB1bnJlYWRCeXRlc0hhbmRsZSgpIHsgcmV0dXJu
ICpyZWludGVycHJldF9jYXN0PHNpemVfdCo+KGRhdGEoKSArIHNpemVvZihib29sKSk7IH0KIAot
dGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gT3B0aW9uYWw8U2hhcmVkRGlzcGxheUxpc3RIYW5kbGU+
IFNoYXJlZERpc3BsYXlMaXN0SGFuZGxlOjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKLXsKLSAg
ICBPcHRpb25hbDxWZWN0b3I8c3RkOjpwYWlyPFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtQnVm
ZmVySWRlbnRpZmllciwgc2l6ZV90Pj4+IGJ1ZmZlcnM7Ci0gICAgZGVjb2RlciA+PiBidWZmZXJz
OwotICAgIGlmICghYnVmZmVycykKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKK3ByaXZh
dGU6CisgICAgc3RkOjphdG9taWM8Ym9vbD4mIGF0b21pY0xvY2tWYWx1ZSgpIGNvbnN0IHsgcmV0
dXJuICpzdGF0aWNfY2FzdDxzdGQ6OmF0b21pYzxib29sPio+KHNoYXJlZE1lbW9yeSgpLmRhdGEo
KSk7IH0KIAotICAgIHJldHVybiB7eyBXVEZNb3ZlKCpidWZmZXJzKSB9fTsKLX0KKyAgICBXZWJD
b3JlOjpEaXNwbGF5TGlzdDo6SXRlbUJ1ZmZlcklkZW50aWZpZXIgbV9pZGVudGlmaWVyOworICAg
IFJlZjxTaGFyZWRNZW1vcnk+IG1fc2hhcmVkTWVtb3J5OworfTsKIAogfSAvLyBuYW1lc3BhY2Ug
V2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NvdXJjZXMudHh0IGIvU291cmNlL1dl
YktpdC9Tb3VyY2VzLnR4dAppbmRleCAzNDk5NzVjZWMxMDBhYTMyNWY4MmZjNjE1MGE2NzY5MWVh
MTJlYzBiLi5iYzcxOTViZmNjZTM1NWE1MzNiZjczNjkzODcyOTZkMjEwZjc4M2VkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1NvdXJjZXMudHh0CisrKyBiL1NvdXJjZS9XZWJLaXQvU291cmNl
cy50eHQKQEAgLTI0LDYgKzI0LDcgQEAKIEdQVVByb2Nlc3MvR1BVUHJvY2Vzcy5jcHAKIEdQVVBy
b2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAKIEdQVVByb2Nlc3MvR1BVUHJvY2Vz
c0NyZWF0aW9uUGFyYW1ldGVycy5jcHAKK0dQVVByb2Nlc3MvZ3JhcGhpY3MvRGlzcGxheUxpc3RS
ZWFkZXJIYW5kbGUuY3BwCiBHUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tl
bmQuY3BwCiBHUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlc291cmNlQ2FjaGUuY3BwCiBHUFVQ
cm9jZXNzL21lZGlhL1JlbW90ZUF1ZGlvU2Vzc2lvblByb3h5LmNwcApAQCAtMTczLDcgKzE3NCw2
IEBAIFNoYXJlZC9TZXJ2aWNlV29ya2VySW5pdGlhbGl6YXRpb25EYXRhLmNwcAogU2hhcmVkL1Nl
c3Npb25TdGF0ZS5jcHAKIFNoYXJlZC9TaGFyZWFibGVCaXRtYXAuY3BwIEBuby11bmlmeQogU2hh
cmVkL1NoYXJlYWJsZVJlc291cmNlLmNwcAotU2hhcmVkL1NoYXJlZERpc3BsYXlMaXN0SGFuZGxl
LmNwcAogU2hhcmVkL1NoYXJlZFN0cmluZ0hhc2hTdG9yZS5jcHAKIFNoYXJlZC9TaGFyZWRTdHJp
bmdIYXNoVGFibGVSZWFkT25seS5jcHAKIFNoYXJlZC9TaGFyZWRTdHJpbmdIYXNoVGFibGUuY3Bw
CkBAIC01NTksNiArNTU5LDcgQEAgV2ViUHJvY2Vzcy9NZWRpYVN0cmVhbS9NZWRpYURldmljZVNh
bmRib3hFeHRlbnNpb25zLmNwcAogV2ViUHJvY2Vzcy9NZWRpYVN0cmVhbS9Vc2VyTWVkaWFQZXJt
aXNzaW9uUmVxdWVzdE1hbmFnZXIuY3BwCiAKIFdlYlByb2Nlc3MvR1BVL0dQVVByb2Nlc3NDb25u
ZWN0aW9uLmNwcAorV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvRGlzcGxheUxpc3RXcml0ZXJIYW5k
bGUuY3BwCiBXZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9JbWFnZUJ1ZmZlclNoYXJlYWJsZUJpdG1h
cEJhY2tlbmQuY3BwCiBXZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNr
ZW5kUHJveHkuY3BwCiBXZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVSZXNvdXJjZUNhY2hl
UHJveHkuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qIGIvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagppbmRleCA1ZTBkM2NmODdlNzlmNDEwOTZmMWQ3OGVmMmI0Y2M2MTNjMjYxNzQ5Li4wNjVm
N2U0NjcyMTg1NDA4Y2E2NzhjYzUyZDdkZmQyOWFkNmM5NTc4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJL
aXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTE4NzEsNiArMTg3MSw4IEBA
CiAJCUU1QkVGNjgyMjEzMEM0ODAwMEYzMTExMSAvKiBXZWJEYXRhTGlzdFN1Z2dlc3Rpb25zRHJv
cGRvd25JT1MuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEU1QkVGNjgwMjEzMEM0N0YwMEYzMTExMSAvKiBXZWJEYXRhTGlzdFN1Z2dlc3Rpb25zRHJvcGRv
d25JT1MuaCAqLzsgfTsKIAkJRTVDQjA3REMyMEUxNjc4RjAwMjJDMTgzIC8qIFdLRm9ybUNvbG9y
Q29udHJvbC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
RTVDQjA3REEyMEUxNjc4RjAwMjJDMTgzIC8qIFdLRm9ybUNvbG9yQ29udHJvbC5oICovOyB9Owog
CQlFRDgyQTdGMjEyOEM2RkFGMDA0NDc3QjMgLyogV0tCdW5kbGVQYWdlT3ZlcmxheS5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUEyMkYwRkYxMjg5RkNE
OTAwODVFNzRGIC8qIFdLQnVuZGxlUGFnZU92ZXJsYXkuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQlGNDA5NENCRDI1NTMwNTNEMDAzRDczRTMgLyog
RGlzcGxheUxpc3RSZWFkZXJIYW5kbGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEY0MDk0Q0JCMjU1MzA0QUYwMDNENzNFMyAvKiBEaXNwbGF5TGlzdFJl
YWRlckhhbmRsZS5oICovOyB9OworCQlGNDA5NENCRTI1NTMwNTQwMDAzRDczRTMgLyogRGlzcGxh
eUxpc3RXcml0ZXJIYW5kbGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEY0MDk0Q0I5MjU1MzA0N0UwMDNENzNFMyAvKiBEaXNwbGF5TGlzdFdyaXRlckhh
bmRsZS5oICovOyB9OwogCQlGNDA5QkExODFFNkU2NEJDMDA5REEyOEUgLyogV0tEcmFnRGVzdGlu
YXRpb25BY3Rpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEY0MDlCQTE3MUU2RTY0QjMwMDlEQTI4RSAvKiBXS0RyYWdEZXN0aW5hdGlvbkFjdGlvbi5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUY0MkQ2
MzQxMjJBMEVGREYwMEQyRkIzQSAvKiBXZWJBdXRvY29ycmVjdGlvbkRhdGEuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY0MkQ2MzNGMjJBMEVGRDMwMEQy
RkIzQSAvKiBXZWJBdXRvY29ycmVjdGlvbkRhdGEuaCAqLzsgfTsKIAkJRjQzMEU5NDIyMjQ3MzM1
RjAwNUZFMDUzIC8qIFdlYnNpdGVNZXRhVmlld3BvcnRQb2xpY3kuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY0MzBFOTQxMjI0NzMyQTkwMDVGRTA1MyAv
KiBXZWJzaXRlTWV0YVZpZXdwb3J0UG9saWN5LmggKi87IH07CkBAIC01NDY4LDYgKzU0NzAsMTAg
QEAKIAkJRUNBNjgwRDMxRTY5MDRCNTAwNzMxRDIwIC8qIEV4dHJhUHJpdmF0ZVN5bWJvbHNGb3JU
QVBJLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEV4dHJhUHJpdmF0ZVN5bWJv
bHNGb3JUQVBJLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUVDQkZDMURCMUU2QTRE
NjYwMDAzMDBDNyAvKiBFeHRyYVB1YmxpY1N5bWJvbHNGb3JUQVBJLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IEV4dHJhUHVibGljU3ltYm9sc0ZvclRBUEkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJRjAzNjk3ODcxNUY0QkYwNTAwQzNBODBFIC8qIFdlYkNvbG9yUGlja2VyLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdlYkNvbG9yUGlja2VyLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRjQwOTRDQjkyNTUzMDQ3RTAwM0Q3M0UzIC8qIERpc3Bs
YXlMaXN0V3JpdGVySGFuZGxlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERpc3BsYXlMaXN0V3JpdGVySGFu
ZGxlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUY0MDk0Q0JBMjU1MzA0N0UwMDNE
NzNFMyAvKiBEaXNwbGF5TGlzdFdyaXRlckhhbmRsZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBE
aXNwbGF5TGlzdFdyaXRlckhhbmRsZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CUY0MDk0Q0JCMjU1MzA0QUYwMDNENzNFMyAvKiBEaXNwbGF5TGlzdFJlYWRlckhhbmRsZS5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBEaXNwbGF5TGlzdFJlYWRlckhhbmRsZS5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQlGNDA5NENCQzI1NTMwNEFGMDAzRDczRTMgLyogRGlzcGxheUxpc3RSZWFk
ZXJIYW5kbGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRGlzcGxheUxpc3RSZWFkZXJIYW5kbGUu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGNDA5QkExNzFFNkU2NEIzMDA5REEy
OEUgLyogV0tEcmFnRGVzdGluYXRpb25BY3Rpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gV0tEcmFnRGVzdGluYXRpb25BY3Rpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJRjQwRDFCNjgyMjBCREMwRjAwQjQ5QTAxIC8qIFdlYkF1dG9jb3JyZWN0aW9uQ29u
dGV4dC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IG5hbWUgPSBXZWJBdXRvY29ycmVjdGlvbkNvbnRleHQuaDsgcGF0aCA9
IGlvcy9XZWJBdXRvY29ycmVjdGlvbkNvbnRleHQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJRjQxMDU2NjEyMTMwNjk5QTAwOTIyODFEIC8qIEFQSUF0dGFjaG1lbnRDb2NvYS5tbSAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLm9iamNwcDsgcGF0aCA9IEFQSUF0dGFjaG1lbnRDb2NvYS5tbTsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKQEAgLTU0OTAsNyArNTQ5Niw2IEBACiAJCUY0OTZBNDJGMUY1OEEyNzIw
MDRDMTc1NyAvKiBEcmFnRHJvcEludGVyYWN0aW9uU3RhdGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gRHJh
Z0Ryb3BJbnRlcmFjdGlvblN0YXRlLmg7IHBhdGggPSBpb3MvRHJhZ0Ryb3BJbnRlcmFjdGlvblN0
YXRlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUY0OTZBNDMwMUY1OEEyNzIwMDRD
MTc1NyAvKiBEcmFnRHJvcEludGVyYWN0aW9uU3RhdGUubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IG5hbWUg
PSBEcmFnRHJvcEludGVyYWN0aW9uU3RhdGUubW07IHBhdGggPSBpb3MvRHJhZ0Ryb3BJbnRlcmFj
dGlvblN0YXRlLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGNEE2RDZCQjI1NENB
M0U5MDBCNjVGQUEgLyogU2hhcmVkRGlzcGxheUxpc3RIYW5kbGUuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
U2hhcmVkRGlzcGxheUxpc3RIYW5kbGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJ
RjRBNkQ2QkQyNTRDQTUyMjAwQjY1RkFBIC8qIFNoYXJlZERpc3BsYXlMaXN0SGFuZGxlLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IFNoYXJlZERpc3BsYXlMaXN0SGFuZGxlLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRjRBQzY1NUUyMkEzMTQwRTAwQTA1NjA3IC8qIFdlYlByZWZl
cmVuY2VzRGVmYXVsdFZhbHVlc0lPUy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNw
cDsgbmFtZSA9IFdlYlByZWZlcmVuY2VzRGVmYXVsdFZhbHVlc0lPUy5tbTsgcGF0aCA9IGlvcy9X
ZWJQcmVmZXJlbmNlc0RlZmF1bHRWYWx1ZXNJT1MubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCUY0QjM3OEQwMjFEREJCQUIwMDk1QTM3OCAvKiBXZWJVbmRvU3RlcElELmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IFdlYlVuZG9TdGVwSUQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
RjRDQjA5RTQyMjVENUEwMzAwODkxNDg3IC8qIFdlYnNpdGVNZWRpYVNvdXJjZVBvbGljeS5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBXZWJzaXRlTWVkaWFTb3VyY2VQb2xpY3kuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKQEAgLTYxOTgsNyArNjIwMyw2IEBACiAJCQkJMUE2NDIwRTMxMkRDRTJGRjAw
Q0FBRTJDIC8qIFNoYXJlYWJsZUJpdG1hcC5oICovLAogCQkJCTUxMjE3NDVFMTY0QzIwRTMwMDM3
QTVDMSAvKiBTaGFyZWFibGVSZXNvdXJjZS5jcHAgKi8sCiAJCQkJNTEyMTc0NUYxNjRDMjBFMzAw
MzdBNUMxIC8qIFNoYXJlYWJsZVJlc291cmNlLmggKi8sCi0JCQkJRjRBNkQ2QkQyNTRDQTUyMjAw
QjY1RkFBIC8qIFNoYXJlZERpc3BsYXlMaXN0SGFuZGxlLmNwcCAqLywKIAkJCQlGNEE2RDZCQjI1
NENBM0U5MDBCNjVGQUEgLyogU2hhcmVkRGlzcGxheUxpc3RIYW5kbGUuaCAqLywKIAkJCQk4MzEz
RjdFQTFGN0RBRTA0MDBCOTQ0RUIgLyogU2hhcmVkU3RyaW5nSGFzaFN0b3JlLmNwcCAqLywKIAkJ
CQk4MzEzRjdFOTFGN0RBRTAzMDBCOTQ0RUIgLyogU2hhcmVkU3RyaW5nSGFzaFN0b3JlLmggKi8s
CkBAIC04MTczLDYgKzgxNzcsOCBAQAogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9
ICgKIAkJCQk3MjdBN0YzMzI0MDc4NTI3MDA0RDI5MzEgLyogY29jb2EgKi8sCisJCQkJRjQwOTRD
QkEyNTUzMDQ3RTAwM0Q3M0UzIC8qIERpc3BsYXlMaXN0V3JpdGVySGFuZGxlLmNwcCAqLywKKwkJ
CQlGNDA5NENCOTI1NTMwNDdFMDAzRDczRTMgLyogRGlzcGxheUxpc3RXcml0ZXJIYW5kbGUuaCAq
LywKIAkJCQk3MjdBN0YzOTI0MDc4OEYxMDA0RDI5MzEgLyogSW1hZ2VCdWZmZXJCYWNrZW5kSGFu
ZGxlLmggKi8sCiAJCQkJNzI3QTdGMzcyNDA3ODhGMDAwNEQyOTMxIC8qIEltYWdlQnVmZmVyU2hh
cmVhYmxlQml0bWFwQmFja2VuZC5jcHAgKi8sCiAJCQkJNzI3QTdGMzYyNDA3ODhGMDAwNEQyOTMx
IC8qIEltYWdlQnVmZmVyU2hhcmVhYmxlQml0bWFwQmFja2VuZC5oICovLApAQCAtODE5Miw2ICs4
MTk4LDggQEAKIAkJNTUwNjQwQTEyNDA3MUEyOTAwQUFFMDQ1IC8qIGdyYXBoaWNzICovID0gewog
CQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKKwkJCQlGNDA5NENCQzI1NTMwNEFG
MDAzRDczRTMgLyogRGlzcGxheUxpc3RSZWFkZXJIYW5kbGUuY3BwICovLAorCQkJCUY0MDk0Q0JC
MjU1MzA0QUYwMDNENzNFMyAvKiBEaXNwbGF5TGlzdFJlYWRlckhhbmRsZS5oICovLAogCQkJCTU1
QUQwOTQzMjQwOEEwRTYwMERFNEQyRiAvKiBQbGF0Zm9ybVJlbW90ZUltYWdlQnVmZmVyLmggKi8s
CiAJCQkJNTVBRDA5NDIyNDA4QTAyRTAwREU0RDJGIC8qIFJlbW90ZUltYWdlQnVmZmVyLmggKi8s
CiAJCQkJNTUwNjQwQTIyNDA3MUE2MTAwQUFFMDQ1IC8qIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQu
Y3BwICovLApAQCAtMTEwMzEsNiArMTEwMzksOCBAQAogCQkJCTgzODkxQjZDMUE2OEMzMEIwMDMw
RjM4NiAvKiBEaWFnbm9zdGljTG9nZ2luZ0NsaWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQzE4
MTczNjEyMDU4NDI0NzAwREZEQTY1IC8qIERpc3BsYXlMaW5rLmggaW4gSGVhZGVycyAqLywKIAkJ
CQkwRjE4OUNBQzI0NzQ5RjJGMDBFNThEODEgLyogRGlzcGxheUxpbmtPYnNlcnZlcklELmggaW4g
SGVhZGVycyAqLywKKwkJCQlGNDA5NENCRDI1NTMwNTNEMDAzRDczRTMgLyogRGlzcGxheUxpc3RS
ZWFkZXJIYW5kbGUuaCBpbiBIZWFkZXJzICovLAorCQkJCUY0MDk0Q0JFMjU1MzA1NDAwMDNENzNF
MyAvKiBEaXNwbGF5TGlzdFdyaXRlckhhbmRsZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNUMxNDI3
MDIxQzIzRjg0QzAwRDQxMTgzIC8qIERvd25sb2FkLmggaW4gSGVhZGVycyAqLywKIAkJCQk1QzE0
MjcwNTFDMjNGODRDMDBENDExODMgLyogRG93bmxvYWRJRC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
NUMxNDI3MDcxQzIzRjg0QzAwRDQxMTgzIC8qIERvd25sb2FkTWFuYWdlci5oIGluIEhlYWRlcnMg
Ki8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL0Rp
c3BsYXlMaXN0V3JpdGVySGFuZGxlLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUv
Z3JhcGhpY3MvRGlzcGxheUxpc3RXcml0ZXJIYW5kbGUuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmNlYWYzNmYz
Njk2NThhNzI3MGJiMjQ3MzdjNjM3YTU0Y2E4ZGFlNjYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL0Rpc3BsYXlMaXN0V3JpdGVySGFuZGxl
LmNwcApAQCAtMCwwICsxLDY3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisg
KiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICog
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgor
I2luY2x1ZGUgIkRpc3BsYXlMaXN0V3JpdGVySGFuZGxlLmgiCisKK25hbWVzcGFjZSBXZWJLaXQg
ewordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CisKK3ZvaWQgRGlzcGxheUxpc3RXcml0ZXJIYW5k
bGU6OmFkdmFuY2Uoc2l6ZV90IGFtb3VudCkKK3sKKyAgICBtX3dyaXRhYmxlT2Zmc2V0ICs9IGFt
b3VudDsKKyAgICB1bnJlYWRCeXRlc0hhbmRsZSgpICs9IGFtb3VudDsKK30KKworc2l6ZV90IERp
c3BsYXlMaXN0V3JpdGVySGFuZGxlOjphdmFpbGFibGVDYXBhY2l0eSgpIGNvbnN0Cit7CisgICAg
cmV0dXJuIHNoYXJlZE1lbW9yeSgpLnNpemUoKSAtIHdyaXRhYmxlT2Zmc2V0KCk7Cit9CisKK0Rp
c3BsYXlMaXN0OjpJdGVtQnVmZmVySGFuZGxlIERpc3BsYXlMaXN0V3JpdGVySGFuZGxlOjpjcmVh
dGVIYW5kbGUoKSBjb25zdAoreworICAgIHJldHVybiB7CisgICAgICAgIGlkZW50aWZpZXIoKSwK
KyAgICAgICAgZGF0YSgpICsgd3JpdGFibGVPZmZzZXQoKSwKKyAgICAgICAgYXZhaWxhYmxlQ2Fw
YWNpdHkoKQorICAgIH07Cit9CisKK2Jvb2wgRGlzcGxheUxpc3RXcml0ZXJIYW5kbGU6OnJlc2V0
V3JpdGFibGVPZmZzZXRJZlBvc3NpYmxlKCkKK3sKKyAgICBpZiAobV93cml0YWJsZU9mZnNldCA8
PSBTaGFyZWREaXNwbGF5TGlzdEhhbmRsZTo6cmVzZXJ2ZWRDYXBhY2l0eUF0U3RhcnQpIHsKKyAg
ICAgICAgQVNTRVJUKG1fd3JpdGFibGVPZmZzZXQgPT0gU2hhcmVkRGlzcGxheUxpc3RIYW5kbGU6
OnJlc2VydmVkQ2FwYWNpdHlBdFN0YXJ0KTsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQor
CisgICAgTG9jayBsb2NrZXIgeyAqdGhpcyB9OworICAgIGlmICh1bnJlYWRCeXRlcygpKQorICAg
ICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBtX3dyaXRhYmxlT2Zmc2V0ID0gU2hhcmVkRGlzcGxh
eUxpc3RIYW5kbGU6OnJlc2VydmVkQ2FwYWNpdHlBdFN0YXJ0OworICAgIHJldHVybiB0cnVlOwor
fQorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9HUFUvZ3JhcGhpY3MvRGlzcGxheUxpc3RXcml0ZXJIYW5kbGUuaCBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvRGlzcGxheUxpc3RXcml0ZXJIYW5kbGUuaApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi4xMzgwMTI2NWVlMzg0OTQzMWFkZTkxN2Y1OGZhNTNiMjU5M2ZiOTRkCi0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9EaXNw
bGF5TGlzdFdyaXRlckhhbmRsZS5oCkBAIC0wLDAgKzEsNTQgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJV
VE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMg
Q09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJh
Z21hIG9uY2UKKworI2luY2x1ZGUgIlNoYXJlZERpc3BsYXlMaXN0SGFuZGxlLmgiCisjaW5jbHVk
ZSA8d3RmL0Zhc3RNYWxsb2MuaD4KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIERpc3Bs
YXlMaXN0V3JpdGVySGFuZGxlIDogcHVibGljIFNoYXJlZERpc3BsYXlMaXN0SGFuZGxlIHsKKyAg
ICBXVEZfTUFLRV9OT05DT1BZQUJMRShEaXNwbGF5TGlzdFdyaXRlckhhbmRsZSk7IFdURl9NQUtF
X0ZBU1RfQUxMT0NBVEVEOworcHVibGljOgorICAgIERpc3BsYXlMaXN0V3JpdGVySGFuZGxlKFdl
YkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtQnVmZmVySWRlbnRpZmllciBpZGVudGlmaWVyLCBSZWY8
U2hhcmVkTWVtb3J5PiYmIHNoYXJlZE1lbW9yeSkKKyAgICAgICAgOiBTaGFyZWREaXNwbGF5TGlz
dEhhbmRsZShpZGVudGlmaWVyLCBXVEZNb3ZlKHNoYXJlZE1lbW9yeSkpCisgICAgICAgICwgbV93
cml0YWJsZU9mZnNldChTaGFyZWREaXNwbGF5TGlzdEhhbmRsZTo6cmVzZXJ2ZWRDYXBhY2l0eUF0
U3RhcnQpCisgICAgeworICAgIH0KKworICAgIHNpemVfdCB3cml0YWJsZU9mZnNldCgpIGNvbnN0
IHsgcmV0dXJuIG1fd3JpdGFibGVPZmZzZXQ7IH0KKyAgICBzaXplX3QgYXZhaWxhYmxlQ2FwYWNp
dHkoKSBjb25zdDsKKworICAgIGJvb2wgcmVzZXRXcml0YWJsZU9mZnNldElmUG9zc2libGUoKTsK
KworICAgIHZvaWQgYWR2YW5jZShzaXplX3QgYW1vdW50KSBvdmVycmlkZTsKKyAgICBXZWJDb3Jl
OjpEaXNwbGF5TGlzdDo6SXRlbUJ1ZmZlckhhbmRsZSBjcmVhdGVIYW5kbGUoKSBjb25zdDsKKwor
cHJpdmF0ZToKKyAgICBzaXplX3QgbV93cml0YWJsZU9mZnNldCB7IDAgfTsKK307CisKK30gLy8g
bmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQ
VS9ncmFwaGljcy9SZW1vdGVJbWFnZUJ1ZmZlclByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUltYWdlQnVmZmVyUHJveHkuaAppbmRleCBiNTc4NDZk
ZGQ1MWM1MWI2YmNmNGM3Mzk1ZDIyODlmYjBmNzJiOWFjLi44Zjc5ZTM5OTg4M2NkMzJhNWVlMjBh
OTlhNDYyYWJiNjhkNzRiMWQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
R1BVL2dyYXBoaWNzL1JlbW90ZUltYWdlQnVmZmVyUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUltYWdlQnVmZmVyUHJveHkuaApAQCAtMTM5
LDYgKzEzOSw3IEBAIHByb3RlY3RlZDoKIAogICAgIHZvaWQgZmx1c2hEcmF3aW5nQ29udGV4dCgp
IG92ZXJyaWRlCiAgICAgeworICAgICAgICBUcmFjZVNjb3BlIHRyYWNpbmdTY29wZShGbHVzaFJl
bW90ZUltYWdlQnVmZmVyU3RhcnQsIEZsdXNoUmVtb3RlSW1hZ2VCdWZmZXJFbmQpOwogICAgICAg
ICBmbHVzaERyYXdpbmdDb250ZXh0QW5kQ29tbWl0KCk7CiAgICAgICAgIHRpbWVvdXRXYWl0Rm9y
Rmx1c2hEaXNwbGF5TGlzdFdhc0NvbW1pdHRlZCgpOwogICAgIH0KQEAgLTE1Miw4ICsxNTMsOSBA
QCBwcm90ZWN0ZWQ6CiAgICAgICAgIGlmIChkaXNwbGF5TGlzdC5pc0VtcHR5KCkpCiAgICAgICAg
ICAgICByZXR1cm47CiAKLSAgICAgICAgVHJhY2VTY29wZSB0cmFjaW5nU2NvcGUoRmx1c2hSZW1v
dGVJbWFnZUJ1ZmZlclN0YXJ0LCBGbHVzaFJlbW90ZUltYWdlQnVmZmVyRW5kLCAxKTsKLSAgICAg
ICAgbV9zZW50Rmx1c2hJZGVudGlmaWVyID0gbV9yZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkt
PmZsdXNoRGlzcGxheUxpc3RBbmRDb21taXQoZGlzcGxheUxpc3QsIG1fcmVuZGVyaW5nUmVzb3Vy
Y2VJZGVudGlmaWVyKTsKKyAgICAgICAgbV9zZW50Rmx1c2hJZGVudGlmaWVyID0gV2ViQ29yZTo6
RGlzcGxheUxpc3Q6OkZsdXNoSWRlbnRpZmllcjo6Z2VuZXJhdGUoKTsKKyAgICAgICAgZGlzcGxh
eUxpc3QudGVtcGxhdGUgYXBwZW5kPFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpGbHVzaENvbnRleHQ+
KG1fc2VudEZsdXNoSWRlbnRpZmllcik7CisgICAgICAgIG1fcmVtb3RlUmVuZGVyaW5nQmFja2Vu
ZFByb3h5LT5mbHVzaERpc3BsYXlMaXN0KGRpc3BsYXlMaXN0LCBtX3JlbmRlcmluZ1Jlc291cmNl
SWRlbnRpZmllcik7CiAgICAgICAgIG1faXRlbUNvdW50SW5DdXJyZW50RGlzcGxheUxpc3QgPSAw
OwogICAgICAgICBkaXNwbGF5TGlzdC5jbGVhcigpOwogICAgIH0KQEAgLTE2Myw3ICsxNjUsNiBA
QCBwcm90ZWN0ZWQ6CiAgICAgICAgIGlmICghbV9yZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkg
fHwgZGlzcGxheUxpc3QuaXNFbXB0eSgpKQogICAgICAgICAgICAgcmV0dXJuOwogCi0gICAgICAg
IFRyYWNlU2NvcGUgdHJhY2luZ1Njb3BlKEZsdXNoUmVtb3RlSW1hZ2VCdWZmZXJTdGFydCwgRmx1
c2hSZW1vdGVJbWFnZUJ1ZmZlckVuZCk7CiAgICAgICAgIG1fcmVtb3RlUmVuZGVyaW5nQmFja2Vu
ZFByb3h5LT5mbHVzaERpc3BsYXlMaXN0KGRpc3BsYXlMaXN0LCBtX3JlbmRlcmluZ1Jlc291cmNl
SWRlbnRpZmllcik7CiAgICAgfQogCkBAIC0xODIsNyArMTgzLDcgQEAgcHJvdGVjdGVkOgogICAg
IFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtQnVmZmVySGFuZGxlIGNyZWF0ZUl0ZW1CdWZmZXIo
c2l6ZV90IGNhcGFjaXR5KSBvdmVycmlkZQogICAgIHsKICAgICAgICAgaWYgKG1fcmVtb3RlUmVu
ZGVyaW5nQmFja2VuZFByb3h5KQotICAgICAgICAgICAgcmV0dXJuIG1fcmVtb3RlUmVuZGVyaW5n
QmFja2VuZFByb3h5LT5jcmVhdGVJdGVtQnVmZmVyKGNhcGFjaXR5KTsKKyAgICAgICAgICAgIHJl
dHVybiBtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS0+Y3JlYXRlSXRlbUJ1ZmZlcihjYXBh
Y2l0eSwgbV9yZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpOwogCiAgICAgICAgIEFTU0VSVF9O
T1RfUkVBQ0hFRCgpOwogICAgICAgICByZXR1cm4geyB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHku
Y3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVSZW5kZXJp
bmdCYWNrZW5kUHJveHkuY3BwCmluZGV4IGVlYzA1MjU0Njg4ZGYwZjk3ZjM3NzhlMWMwNWI1ZmVi
MWU5ZWY4YjUuLjA5NWZjYzJhYjJmZTE5YzQ5YzkzMWIwNzEwNGE4MjYwMTM2NjdmNzEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlUmVuZGVy
aW5nQmFja2VuZFByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dy
YXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS5jcHAKQEAgLTI4LDEzICsyOCwxMyBA
QAogCiAjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKQogCisjaW5jbHVkZSAiRGlzcGxheUxpc3RXcml0
ZXJIYW5kbGUuaCIKICNpbmNsdWRlICJHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgiCiAjaW5j
bHVkZSAiR1BVUHJvY2Vzc0Nvbm5lY3Rpb24uaCIKICNpbmNsdWRlICJJbWFnZURhdGFSZWZlcmVu
Y2UuaCIKICNpbmNsdWRlICJQbGF0Zm9ybVJlbW90ZUltYWdlQnVmZmVyUHJveHkuaCIKICNpbmNs
dWRlICJSZW1vdGVSZW5kZXJpbmdCYWNrZW5kTWVzc2FnZXMuaCIKICNpbmNsdWRlICJSZW1vdGVS
ZW5kZXJpbmdCYWNrZW5kUHJveHlNZXNzYWdlcy5oIgotI2luY2x1ZGUgIlNoYXJlZERpc3BsYXlM
aXN0SGFuZGxlLmgiCiAjaW5jbHVkZSAiU2hhcmVkTWVtb3J5LmgiCiAjaW5jbHVkZSAiV2ViUHJv
Y2Vzcy5oIgogCkBAIC0xMTcsMTYgKzExNywyOSBAQCBSZWZQdHI8SW1hZ2VEYXRhPiBSZW1vdGVS
ZW5kZXJpbmdCYWNrZW5kUHJveHk6OmdldEltYWdlRGF0YShBbHBoYVByZW11bHRpcGxpY2F0aQog
CiB2b2lkIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eTo6Zmx1c2hEaXNwbGF5TGlzdChjb25z
dCBEaXNwbGF5TGlzdDo6RGlzcGxheUxpc3QmIGRpc3BsYXlMaXN0LCBSZW5kZXJpbmdSZXNvdXJj
ZUlkZW50aWZpZXIgcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKQogewotICAgIHNlbmQoTWVz
c2FnZXM6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OkZsdXNoRGlzcGxheUxpc3QoeyBkaXNwbGF5
TGlzdCB9LCByZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpLCBtX3JlbmRlcmluZ0JhY2tlbmRJ
ZGVudGlmaWVyKTsKLSAgICBtX3NoYXJlZEl0ZW1CdWZmZXJzLmNsZWFyKCk7Ci19CisgICAgT3B0
aW9uYWw8c3RkOjpwYWlyPFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtQnVmZmVySWRlbnRpZmll
ciwgc2l6ZV90Pj4gaWRlbnRpZmllckFuZE9mZnNldEZvcldha2VVcE1lc3NhZ2U7CisgICAgYm9v
bCBpc0ZpcnN0SGFuZGxlID0gdHJ1ZTsKIAotRGlzcGxheUxpc3Q6OkZsdXNoSWRlbnRpZmllciBS
ZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHk6OmZsdXNoRGlzcGxheUxpc3RBbmRDb21taXQoY29u
c3QgRGlzcGxheUxpc3Q6OkRpc3BsYXlMaXN0JiBkaXNwbGF5TGlzdCwgUmVuZGVyaW5nUmVzb3Vy
Y2VJZGVudGlmaWVyIHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcikKLXsKLSAgICBhdXRvIHNl
bnRGbHVzaElkZW50aWZpZXIgPSBEaXNwbGF5TGlzdDo6Rmx1c2hJZGVudGlmaWVyOjpnZW5lcmF0
ZSgpOwotICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OkZsdXNoRGlz
cGxheUxpc3RBbmRDb21taXQoeyBkaXNwbGF5TGlzdCB9LCBzZW50Rmx1c2hJZGVudGlmaWVyLCBy
ZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpLCBtX3JlbmRlcmluZ0JhY2tlbmRJZGVudGlmaWVy
KTsKLSAgICBtX3NoYXJlZEl0ZW1CdWZmZXJzLmNsZWFyKCk7Ci0gICAgcmV0dXJuIHNlbnRGbHVz
aElkZW50aWZpZXI7CisgICAgZGlzcGxheUxpc3QuZm9yRWFjaEl0ZW1CdWZmZXIoWyZdIChhdXRv
JiBoYW5kbGUpIHsKKyAgICAgICAgbV9pZGVudGlmaWVyc09mSGFuZGxlc0F2YWlsYWJsZUZvcldy
aXRpbmcuYWRkKGhhbmRsZS5pZGVudGlmaWVyKTsKKworICAgICAgICBhdXRvKiBzaGFyZWRIYW5k
bGUgPSBtX3NoYXJlZERpc3BsYXlMaXN0SGFuZGxlcy5nZXQoaGFuZGxlLmlkZW50aWZpZXIpOwor
ICAgICAgICBSRUxFQVNFX0FTU0VSVF9XSVRIX01FU1NBR0Uoc2hhcmVkSGFuZGxlLCAiJXMgZmFp
bGVkIHRvIGZpbmQgc2hhcmVkIGRpc3BsYXkgbGlzdCIsIF9fUFJFVFRZX0ZVTkNUSU9OX18pOwor
CisgICAgICAgIFNoYXJlZERpc3BsYXlMaXN0SGFuZGxlOjpMb2NrIGxvY2tlciB7ICpzaGFyZWRI
YW5kbGUgfTsKKworICAgICAgICBib29sIHVucmVhZENvdW50V2FzRW1wdHkgPSAhc2hhcmVkSGFu
ZGxlLT51bnJlYWRCeXRlcygpOworICAgICAgICBzaGFyZWRIYW5kbGUtPmFkdmFuY2UoaGFuZGxl
LmNhcGFjaXR5KTsKKyAgICAgICAgaWYgKGlzRmlyc3RIYW5kbGUgJiYgdW5yZWFkQ291bnRXYXNF
bXB0eSkKKyAgICAgICAgICAgIGlkZW50aWZpZXJBbmRPZmZzZXRGb3JXYWtlVXBNZXNzYWdlID0g
e3sgaGFuZGxlLmlkZW50aWZpZXIsIGhhbmRsZS5kYXRhIC0gc2hhcmVkSGFuZGxlLT5kYXRhKCkg
fX07CisKKyAgICAgICAgaXNGaXJzdEhhbmRsZSA9IGZhbHNlOworICAgIH0pOworCisgICAgaWYg
KGlkZW50aWZpZXJBbmRPZmZzZXRGb3JXYWtlVXBNZXNzYWdlKSB7CisgICAgICAgIGF1dG8gW2lk
ZW50aWZpZXIsIG9mZnNldF0gPSAqaWRlbnRpZmllckFuZE9mZnNldEZvcldha2VVcE1lc3NhZ2U7
CisgICAgICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6Oldha2VVcEFu
ZFByb2Nlc3NEaXNwbGF5TGlzdChpZGVudGlmaWVyLCBvZmZzZXQsIHJlbmRlcmluZ1Jlc291cmNl
SWRlbnRpZmllciksIG1fcmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXIpOworICAgIH0KIH0KIAog
dm9pZCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHk6OnJlbGVhc2VSZW1vdGVSZXNvdXJjZShS
ZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKQpA
QCAtMTU5LDIxICsxNzIsNTYgQEAgdm9pZCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHk6OmZs
dXNoRGlzcGxheUxpc3RXYXNDb21taXR0ZWQoRGlzcGxheUxpc3Q6OkZsdXMKICAgICAgICAgZG93
bmNhc3Q8VW5hY2NlbGVyYXRlZFJlbW90ZUltYWdlQnVmZmVyUHJveHk+KCppbWFnZUJ1ZmZlciku
Y29tbWl0Rmx1c2hEaXNwbGF5TGlzdChmbHVzaElkZW50aWZpZXIpOwogfQogCi1EaXNwbGF5TGlz
dDo6SXRlbUJ1ZmZlckhhbmRsZSBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHk6OmNyZWF0ZUl0
ZW1CdWZmZXIoc2l6ZV90IGNhcGFjaXR5KQordm9pZCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJv
eHk6OnVwZGF0ZVJldXNhYmxlSGFuZGxlcygpCit7CisgICAgZm9yIChhdXRvIGlkZW50aWZpZXIg
OiBtX2lkZW50aWZpZXJzT2ZIYW5kbGVzQXZhaWxhYmxlRm9yV3JpdGluZykgeworICAgICAgICBh
dXRvKiBoYW5kbGUgPSBtX3NoYXJlZERpc3BsYXlMaXN0SGFuZGxlcy5nZXQoaWRlbnRpZmllcik7
CisgICAgICAgIGlmICghaGFuZGxlLT5yZXNldFdyaXRhYmxlT2Zmc2V0SWZQb3NzaWJsZSgpKQor
ICAgICAgICAgICAgY29udGludWU7CisKKyAgICAgICAgaWYgKG1faWRlbnRpZmllcnNPZlJldXNh
YmxlSGFuZGxlcy5jb250YWlucyhpZGVudGlmaWVyKSkKKyAgICAgICAgICAgIGNvbnRpbnVlOwor
CisgICAgICAgIG1faWRlbnRpZmllcnNPZlJldXNhYmxlSGFuZGxlcy5hcHBlbmQoaWRlbnRpZmll
cik7CisgICAgfQorfQorCitEaXNwbGF5TGlzdDo6SXRlbUJ1ZmZlckhhbmRsZSBSZW1vdGVSZW5k
ZXJpbmdCYWNrZW5kUHJveHk6OmNyZWF0ZUl0ZW1CdWZmZXIoc2l6ZV90IGNhcGFjaXR5LCBSZW5k
ZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgcmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyKQogeworICAg
IHVwZGF0ZVJldXNhYmxlSGFuZGxlcygpOworCisgICAgd2hpbGUgKCFtX2lkZW50aWZpZXJzT2ZS
ZXVzYWJsZUhhbmRsZXMuaXNFbXB0eSgpKSB7CisgICAgICAgIGF1dG8gaWRlbnRpZmllciA9IG1f
aWRlbnRpZmllcnNPZlJldXNhYmxlSGFuZGxlcy5maXJzdCgpOworICAgICAgICBhdXRvKiByZXVz
YWJsZUhhbmRsZSA9IG1fc2hhcmVkRGlzcGxheUxpc3RIYW5kbGVzLmdldChpZGVudGlmaWVyKTsK
KyAgICAgICAgUkVMRUFTRV9BU1NFUlRfV0lUSF9NRVNTQUdFKHJldXNhYmxlSGFuZGxlLCAiJXMg
ZmFpbGVkIHRvIGZpbmQgc2hhcmVkIGRpc3BsYXkgbGlzdCIsIF9fUFJFVFRZX0ZVTkNUSU9OX18p
OworCisgICAgICAgIGlmIChtX2lkZW50aWZpZXJzT2ZIYW5kbGVzQXZhaWxhYmxlRm9yV3JpdGlu
Zy5jb250YWlucyhpZGVudGlmaWVyKSAmJiByZXVzYWJsZUhhbmRsZS0+YXZhaWxhYmxlQ2FwYWNp
dHkoKSA+PSBjYXBhY2l0eSkgeworICAgICAgICAgICAgbV9pZGVudGlmaWVyc09mSGFuZGxlc0F2
YWlsYWJsZUZvcldyaXRpbmcucmVtb3ZlKGlkZW50aWZpZXIpOworICAgICAgICAgICAgcmV0dXJu
IHJldXNhYmxlSGFuZGxlLT5jcmVhdGVIYW5kbGUoKTsKKyAgICAgICAgfQorCisgICAgICAgIG1f
aWRlbnRpZmllcnNPZlJldXNhYmxlSGFuZGxlcy5yZW1vdmVGaXJzdCgpOworICAgIH0KKwogICAg
IHN0YXRpYyBjb25zdGV4cHIgc2l6ZV90IGRlZmF1bHRTaGFyZWRJdGVtQnVmZmVyU2l6ZSA9IDEg
PDwgMTY7CiAKLSAgICBhdXRvIHNoYXJlZE1lbW9yeSA9IFNoYXJlZE1lbW9yeTo6YWxsb2NhdGUo
c3RkOjptYXgoZGVmYXVsdFNoYXJlZEl0ZW1CdWZmZXJTaXplLCBjYXBhY2l0eSkpOworICAgIGF1
dG8gc2hhcmVkTWVtb3J5ID0gU2hhcmVkTWVtb3J5OjphbGxvY2F0ZShzdGQ6Om1heChkZWZhdWx0
U2hhcmVkSXRlbUJ1ZmZlclNpemUsIGNhcGFjaXR5ICsgU2hhcmVkRGlzcGxheUxpc3RIYW5kbGU6
OnJlc2VydmVkQ2FwYWNpdHlBdFN0YXJ0KSk7CiAgICAgaWYgKCFzaGFyZWRNZW1vcnkpCiAgICAg
ICAgIHJldHVybiB7IH07CiAKLSAgICBhdXRvIGlkZW50aWZpZXIgPSBEaXNwbGF5TGlzdDo6SXRl
bUJ1ZmZlcklkZW50aWZpZXI6OmdlbmVyYXRlKCk7CiAgICAgU2hhcmVkTWVtb3J5OjpIYW5kbGUg
c2hhcmVkTWVtb3J5SGFuZGxlOwotICAgIHNoYXJlZE1lbW9yeS0+Y3JlYXRlSGFuZGxlKHNoYXJl
ZE1lbW9yeUhhbmRsZSwgU2hhcmVkTWVtb3J5OjpQcm90ZWN0aW9uOjpSZWFkT25seSk7Ci0gICAg
c2VuZChNZXNzYWdlczo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6RGlkQ3JlYXRlU2hhcmVkSXRl
bURhdGEoaWRlbnRpZmllciwgeyBXVEZNb3ZlKHNoYXJlZE1lbW9yeUhhbmRsZSksIHNoYXJlZE1l
bW9yeS0+c2l6ZSgpIH0pLCBtX3JlbmRlcmluZ0JhY2tlbmRJZGVudGlmaWVyKTsKLSAgICBtX3No
YXJlZEl0ZW1CdWZmZXJzLnNldChpZGVudGlmaWVyLCBzaGFyZWRNZW1vcnkuY29weVJlZigpKTsK
KyAgICBzaGFyZWRNZW1vcnktPmNyZWF0ZUhhbmRsZShzaGFyZWRNZW1vcnlIYW5kbGUsIFNoYXJl
ZE1lbW9yeTo6UHJvdGVjdGlvbjo6UmVhZFdyaXRlKTsKKworICAgIGF1dG8gaWRlbnRpZmllciA9
IERpc3BsYXlMaXN0OjpJdGVtQnVmZmVySWRlbnRpZmllcjo6Z2VuZXJhdGUoKTsKKyAgICBzZW5k
KE1lc3NhZ2VzOjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpEaWRDcmVhdGVTaGFyZWREaXNwbGF5
TGlzdEhhbmRsZShpZGVudGlmaWVyLCB7IFdURk1vdmUoc2hhcmVkTWVtb3J5SGFuZGxlKSwgc2hh
cmVkTWVtb3J5LT5zaXplKCkgfSwgcmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyKSwgbV9yZW5kZXJp
bmdCYWNrZW5kSWRlbnRpZmllcik7CisKKyAgICBhdXRvIG5ld0hhbmRsZSA9IG1ha2VVbmlxdWU8
RGlzcGxheUxpc3RXcml0ZXJIYW5kbGU+KGlkZW50aWZpZXIsIHNoYXJlZE1lbW9yeS5yZWxlYXNl
Tm9uTnVsbCgpKTsKKyAgICBhdXRvIGRpc3BsYXlMaXN0SGFuZGxlID0gbmV3SGFuZGxlLT5jcmVh
dGVIYW5kbGUoKTsKKworICAgIG1faWRlbnRpZmllcnNPZlJldXNhYmxlSGFuZGxlcy5hcHBlbmQo
aWRlbnRpZmllcik7CisgICAgbV9zaGFyZWREaXNwbGF5TGlzdEhhbmRsZXMuc2V0KGlkZW50aWZp
ZXIsIFdURk1vdmUobmV3SGFuZGxlKSk7CiAKLSAgICByZXR1cm4geyBpZGVudGlmaWVyLCByZWlu
dGVycHJldF9jYXN0PHVpbnQ4X3QqPihzaGFyZWRNZW1vcnktPmRhdGEoKSksIHNoYXJlZE1lbW9y
eS0+c2l6ZSgpIH07CisgICAgcmV0dXJuIGRpc3BsYXlMaXN0SGFuZGxlOwogfQogCiB9IC8vIG5h
bWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUv
Z3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS5oCmluZGV4
IDIwY2U2ZGE0NTViMTlmZDc1MThmMDlkNWJhYmY4ZjAxZTRiZjY0ZTkuLjZlZGY4YzkzMTNlYjU2
MTlmNWM1OGFjNWY3YTBmMzc1M2Y1ODM0MTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5LmgKKysrIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNr
ZW5kUHJveHkuaApAQCAtMzQsNiArMzQsNyBAQAogI2luY2x1ZGUgIlJlbmRlcmluZ0JhY2tlbmRJ
ZGVudGlmaWVyLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9EaXNwbGF5TGlzdC5oPgogI2luY2x1ZGUg
PFdlYkNvcmUvUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyLmg+CisjaW5jbHVkZSA8d3RmL0Rl
cXVlLmg+CiAjaW5jbHVkZSA8d3RmL1dlYWtQdHIuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpA
QCAtNTAsNiArNTEsOCBAQCBlbnVtIGNsYXNzIFJlbmRlcmluZ01vZGUgOiBib29sOwogCiBuYW1l
c3BhY2UgV2ViS2l0IHsKIAorY2xhc3MgRGlzcGxheUxpc3RXcml0ZXJIYW5kbGU7CisKIGNsYXNz
IFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eQogICAgIDogcHVibGljIElQQzo6TWVzc2FnZVNl
bmRlcgogICAgICwgcHJpdmF0ZSBJUEM6Ok1lc3NhZ2VSZWNlaXZlcgpAQCAtNjAsNyArNjMsNyBA
QCBwdWJsaWM6CiAgICAgflJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eSgpOwogCiAgICAgUmVt
b3RlUmVzb3VyY2VDYWNoZVByb3h5JiByZW1vdGVSZXNvdXJjZUNhY2hlUHJveHkoKSB7IHJldHVy
biBtX3JlbW90ZVJlc291cmNlQ2FjaGVQcm94eTsgfQotICAgIFdlYkNvcmU6OkRpc3BsYXlMaXN0
OjpJdGVtQnVmZmVySGFuZGxlIGNyZWF0ZUl0ZW1CdWZmZXIoc2l6ZV90KTsKKyAgICBXZWJDb3Jl
OjpEaXNwbGF5TGlzdDo6SXRlbUJ1ZmZlckhhbmRsZSBjcmVhdGVJdGVtQnVmZmVyKHNpemVfdCBj
YXBhY2l0eSwgV2ViQ29yZTo6UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKTsKIAogICAgIC8v
IElQQzo6TWVzc2FnZVNlbmRlci4KICAgICBJUEM6OkNvbm5lY3Rpb24qIG1lc3NhZ2VTZW5kZXJD
b25uZWN0aW9uKCkgY29uc3Qgb3ZlcnJpZGU7CkBAIC04MiwxMiArODUsMTYgQEAgcHVibGljOgog
cHJpdmF0ZToKICAgICBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkoKTsKIAorICAgIHZvaWQg
dXBkYXRlUmV1c2FibGVIYW5kbGVzKCk7CisKICAgICAvLyBNZXNzYWdlcyB0byBiZSByZWNlaXZl
ZC4KICAgICB2b2lkIGltYWdlQnVmZmVyQmFja2VuZFdhc0NyZWF0ZWQoY29uc3QgV2ViQ29yZTo6
RmxvYXRTaXplJiBsb2dpY2FsU2l6ZSwgY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYgYmFja2VuZFNp
emUsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwgV2ViQ29yZTo6Q29sb3JTcGFjZSwgSW1hZ2VCdWZm
ZXJCYWNrZW5kSGFuZGxlLCBXZWJDb3JlOjpSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpOwog
ICAgIHZvaWQgZmx1c2hEaXNwbGF5TGlzdFdhc0NvbW1pdHRlZChXZWJDb3JlOjpEaXNwbGF5TGlz
dDo6Rmx1c2hJZGVudGlmaWVyLCBXZWJDb3JlOjpSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIp
OwogCiAgICAgUmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5IG1fcmVtb3RlUmVzb3VyY2VDYWNoZVBy
b3h5OwotICAgIEhhc2hNYXA8V2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1CdWZmZXJJZGVudGlm
aWVyLCBSZWZQdHI8U2hhcmVkTWVtb3J5Pj4gbV9zaGFyZWRJdGVtQnVmZmVyczsKKyAgICBIYXNo
TWFwPFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtQnVmZmVySWRlbnRpZmllciwgc3RkOjp1bmlx
dWVfcHRyPERpc3BsYXlMaXN0V3JpdGVySGFuZGxlPj4gbV9zaGFyZWREaXNwbGF5TGlzdEhhbmRs
ZXM7CisgICAgRGVxdWU8V2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1CdWZmZXJJZGVudGlmaWVy
PiBtX2lkZW50aWZpZXJzT2ZSZXVzYWJsZUhhbmRsZXM7CisgICAgSGFzaFNldDxXZWJDb3JlOjpE
aXNwbGF5TGlzdDo6SXRlbUJ1ZmZlcklkZW50aWZpZXI+IG1faWRlbnRpZmllcnNPZkhhbmRsZXNB
dmFpbGFibGVGb3JXcml0aW5nOwogICAgIFJlbmRlcmluZ0JhY2tlbmRJZGVudGlmaWVyIG1fcmVu
ZGVyaW5nQmFja2VuZElkZW50aWZpZXIgeyBSZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllcjo6Z2Vu
ZXJhdGUoKSB9OwogfTsKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>413701</attachid>
            <date>2020-11-10 08:52:46 -0800</date>
            <delta_ts>2020-11-10 13:20:08 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-218426-20201110085245.patch</filename>
            <type>text/plain</type>
            <size>61700</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY5NjI3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDUwMjBlZWRiNTI3MWViMTdi
ZDZhMDkzMzVjNTA0MWU4NTUyOTQ3OGYuLmRjYmZkMDEwNjJlMjU2MTgxMzQ2YTYwMTkyMWY5MzQw
YTk0MjE5OTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUyIEBACisyMDIwLTExLTEwICBXZW5zb24g
SHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAgICAgIFtDb25jdXJyZW50IGRp
c3BsYXkgbGlzdHNdIEFkZCBhbiBpbml0aWFsIGltcGxlbWVudGF0aW9uIG9mIGNvbmN1cnJlbnQg
ZGlzcGxheSBsaXN0IHJlbmRlcmluZworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MjE4NDI2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgVGhpcyBwYXRjaCBhZGRzIGEgZmlyc3QtY3V0IGltcGxlbWVudGF0aW9u
IG9mIGNvbmN1cnJlbnQgZGlzcGxheSBsaXN0IHJlbmRlcmluZywgd2hpY2ggYWxsb3dzIHRoZSBH
UFUgYW5kIHdlYgorICAgICAgICBwcm9jZXNzZXMgdG8gcmVhZCBhbmQgd3JpdGUgZGlzcGxheSBs
aXN0IGRhdGEgYXQgdGhlIHNhbWUgdGltZS4gVG8gYWNoaWV2ZSB0aGlzLCB3ZSByZW1vdmUgdGhl
IHBsYWNlaG9sZGVyCisgICAgICAgIHNoYXJlZCBtZW1vcnkgZGlzcGxheSBsaXN0IGVuY29kaW5n
IG1lY2hhbmlzbSBwcmV2aW91c2x5IGFkZGVkIGluIDx3ZWJraXQub3JnL2IvMjE4NDA2PiwgYW5k
IHJlcGxhY2UgaXQgd2l0aCBhCisgICAgICAgIG5ldyBtb2RlbCBpbiB3aGljaCBhIHdyaXRlciAo
aS5lLiB0aGUgd2ViIHByb2Nlc3MpIGFuZCBhIHJlYWRlciAoaS5lLiB0aGUgR1BVIHByb2Nlc3Mp
IHNoYXJlIGEgc2V0IG9mIHJldXNhYmxlCisgICAgICAgIHNoYXJlZCBtZW1vcnkgYnVmZmVycyB3
aGljaCBjb250YWluIGRpc3BsYXkgbGlzdCBpdGVtIGRhdGEuIEFzIHRoZSB3cml0ZXIgYXBwZW5k
cyBkYXRhIHRvIHNoYXJlZCBtZW1vcnksIGl0CisgICAgICAgIGluY3JlbWVudHMgYSBjb3VudGVy
IGluIGVhY2ggc2hhcmVkIG1lbW9yeSBidWZmZXIgdGhhdCByZXByZXNlbnRzIHRoZSBudW1iZXIg
b2YgYnl0ZXMgdGhhdCB0aGUgcmVhZGVyIGhhcyB5ZXQgdG8KKyAgICAgICAgcmVhZDsgYXMgdGhl
IHJlYWRlciByZWFkcyBkaXNwbGF5IGxpc3QgaXRlbXMgZnJvbSBzaGFyZWQgbWVtb3J5LCBpdCBk
ZWNyZW1lbnRzIHRoaXMgY291bnRlci4KKworICAgICAgICBUaGlzIHBhdGNoIGFsc28gaW1wbGVt
ZW50cyBhIHNpbXBsZSBzdHJhdGVneSBmb3IgcmV1c2luZyB0aGVzZSBzaGFyZWQgaXRlbSBidWZm
ZXJzLiBUaGUgd2ViIHByb2Nlc3MgbWFpbnRhaW5zIGEKKyAgICAgICAgcXVldWUgb2YgcmV1c2Fi
bGUgYnVmZmVyczsgd2hlbiBkaXNwbGF5IGxpc3QgaXRlbXMgYXJlIGFwcGVuZGVkIGFuZCB0aGUg
Y3VycmVudCB3cml0YWJsZSBidWZmZXIgaXMgb3V0IG9mCisgICAgICAgIGNhcGFjaXR5LCB0aGUg
ZGlzcGxheSBsaXN0IGl0ZW0gYnVmZmVyIGNhbGxzIG91dCB0byBXZWJLaXQyIHZpYSBhIGNsaWVu
dCBtZXRob2QgdG8gcmVxdWVzdCBtb3JlIHNoYXJlZCBtZW1vcnkuCisgICAgICAgIEhlcmUsIHRo
ZSB3ZWIgcHJvY2VzcyB0cmF2ZXJzZXMgdGhlIHF1ZXVlIG9mIHJldXNhYmxlIGl0ZW0gYnVmZmVy
cyBpbiBzZWFyY2ggb2YgYSBidWZmZXIgd2l0aCBzdWZmaWNpZW50CisgICAgICAgIGNhcGFjaXR5
OyBpZiBmb3VuZCwgd2UgaGFuZCB0aGlzIGJhY2sgdG8gV2ViQ29yZSBhcyBhbiBvcGFxdWUgYEl0
ZW1CdWZmZXJIYW5kbGVgOyBvdGhlcndpc2UsIHdlIGFsbG9jYXRlIGEgbmV3CisgICAgICAgIHJl
dXNhYmxlIHNoYXJlZCBtZW1vcnkgYnVmZmVyLiBJdGVtIGJ1ZmZlcnMgdGhhdCBoYXZlIGJlZW4g
dXNlZCBiZWNvbWUgcmV1c2FibGUgb25seSBhZnRlciB0aGV5IGFyZSAoMSkgbm8KKyAgICAgICAg
bG9uZ2VyIGJlaW5nIHJlYWQgZnJvbSAtLSBpLmUuLCB0aGUgY291bnRlciB2YWx1ZSBpcyAwLCBh
bmQgKDIpIHRoZXkgYXJlIG5vdCBhY3RpdmVseSBiZWluZyB3cml0dGVuIHRvLgorICAgICAgICBC
dWZmZXJzIHRoYXQgaGF2ZSBiZWVuIHVzZWQgYXJlIGxhemlseSByZWludHJvZHVjZWQgaW50byB0
aGUgcmV1c2UgcXVldWUgd2hlbiBhIGRpc3BsYXkgbGlzdCByZXF1ZXN0cyBhIGhhbmRsZQorICAg
ICAgICB0byB3cml0YWJsZSBpdGVtIGJ1ZmZlciBkYXRhLgorCisgICAgICAgIFNlZSBiZWxvdyBm
b3IgbW9yZSBkZXRhaWxzLgorCisgICAgICAgICogR1BVUHJvY2Vzcy9ncmFwaGljcy9EaXNwbGF5
TGlzdFJlYWRlckhhbmRsZS5jcHA6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJLaXQvU2hhcmVkL1No
YXJlZERpc3BsYXlMaXN0SGFuZGxlLmNwcC4KKyAgICAgICAgKFdlYktpdDo6RGlzcGxheUxpc3RS
ZWFkZXJIYW5kbGU6OmFkdmFuY2UpOgorICAgICAgICAoV2ViS2l0OjpEaXNwbGF5TGlzdFJlYWRl
ckhhbmRsZTo6ZGlzcGxheUxpc3RGb3JSZWFkaW5nIGNvbnN0KToKKyAgICAgICAgKiBHUFVQcm9j
ZXNzL2dyYXBoaWNzL0Rpc3BsYXlMaXN0UmVhZGVySGFuZGxlLmg6IENvcGllZCBmcm9tIFNvdXJj
ZS9XZWJLaXQvU2hhcmVkL1NoYXJlZERpc3BsYXlMaXN0SGFuZGxlLmNwcC4KKyAgICAgICAgKFdl
YktpdDo6RGlzcGxheUxpc3RSZWFkZXJIYW5kbGU6OkRpc3BsYXlMaXN0UmVhZGVySGFuZGxlKToK
KworICAgICAgICBBZGQgYSBuZXcgaGVscGVyIGNsYXNzIHRvIHJlcHJlc2VudCBhIHNoYXJlZCBk
aXNwbGF5IGxpc3QgaXRlbSBidWZmZXIgdGhhdCB0aGUgR1BVIHByb2Nlc3MgY2FuIHVzZSB0byBj
b25zdW1lCisgICAgICAgIGRpc3BsYXkgbGlzdCBpdGVtcy4gQWR2YW5jaW5nIHRoZSBjdXJzb3Ig
aW4gYERpc3BsYXlMaXN0UmVhZGVySGFuZGxlYCBkZWNyZW1lbnRzIHRoZSAicmVtYWluaW5nIGJ5
dGVzIiBjb3VudGVyOworICAgICAgICB0aGUgY2xhc3MgYWxzbyBoYXMgYSBoZWxwZXIgbWV0aG9k
IGZvciBjcmVhdGluZyBhIG5ldyBgRGlzcGxheUxpc3RgIHdpdGggYSBnaXZlbiBvZmZzZXQgaW50
byB0aGUgc2hhcmVkIGJ1ZmZlciwKKyAgICAgICAgYXMgd2VsbCB0aGUgbnVtYmVyIG9mIGJ5dGVz
IHRvIHJlYWQuCisKKyAgICAgICAgKiBHUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUltYWdlQnVm
ZmVyLmg6CisKKyAgICAgICAgSGFuZGxlIHRoZSBgTWV0YUNvbW1hbmRTd2l0Y2hUb2AgYW5kIGBG
bHVzaENvbnRleHRgIGl0ZW1zIGJ5IChyZXNwZWN0aXZlbHkpIGluZm9ybWluZyB0aGUgcmVuZGVy
aW5nIGJhY2tlbmQKKyAgICAgICAgYWJvdXQgdGhlIG5leHQgYnVmZmVyIHRvIHJlYWQgZnJvbSwg
YW5kIHNlbmRpbmcgYSAiZmx1c2ggY29tbWl0dGVkIiBJUEMgbWVzc2FnZSBiYWNrIHRvIHRoZSB3
ZWIgcHJvY2Vzcy4KKworICAgICAgICAoV2ViS2l0OjpSZW1vdGVJbWFnZUJ1ZmZlcjo6UmVtb3Rl
SW1hZ2VCdWZmZXIpOgorICAgICAgICAqIEdQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVy
aW5nQmFja2VuZC5jcHA6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6
OmFwcGx5RGlzcGxheUxpc3RzRnJvbUhhbmRsZSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVJl
bmRlcmluZ0JhY2tlbmQ6Ondha2VVcEFuZEFwcGx5RGlzcGxheUxpc3QpOgorCisgICAgICAgIFRo
aXMgaXMgdGhlIG1haW4gbG9vcCBpbiB0aGUgR1BVIHByb2Nlc3MgdGhhdCBpcyByZXNwb25zaWJs
ZSBmb3IgYXBwbHlpbmcgaW5jb21pbmcgZGlzcGxheSBsaXN0IGl0ZW0gZGF0YS4gVGhpcworICAg
ICAgICBJUEMgZW5kcG9pbnQgcmVjZWl2ZXMgaW5mb3JtYXRpb24gYWJvdXQgd2hlcmUgdG8gc3Rh
cnQgKGkuZS4gYW4gaXRlbSBidWZmZXIgSUQgYW5kIGFuIG9mZnNldCBpbnRvIHNoYXJlZCBtZW1v
cnkKKyAgICAgICAgaW4gdGhhdCBidWZmZXIpIGFuZCBiZWdpbnMgcmVhZGluZyByYW5nZXMgb2Yg
ZGlzcGxheSBsaXN0IGl0ZW0gZGF0YSBpbnNpZGUgdGhhdCBidWZmZXIuIEFmdGVyIGl0IGlzIGRv
bmUKKyAgICAgICAgcHJvY2Vzc2luZyBhbGwgb2YgaXRzIHVucmVhZCBieXRlcywgaXQgdGhlbiBj
aGVja3MgdGhlIHVucmVhZCBieXRlIGNvdW50IG9uY2UgYWdhaW4sIGFuZCBjb250aW51ZXMgdGhl
IGxvb3AgaWYKKyAgICAgICAgdGhlIHdlYiBwcm9jZXNzIGhhcyBhZHZhbmNlZCB0aGlzIGNvdW50
LgorCisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OnNldE5leHRJdGVt
QnVmZmVyVG9SZWFkKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6
ZGlkQ3JlYXRlU2hhcmVkRGlzcGxheUxpc3RIYW5kbGUpOgorCisgICAgICAgIEFkZCBsb2dpYyB0
byBoYW5kbGUgdGhlIGNhc2Ugd2hlcmUgd2UgcmVhY2hlZCB0aGUgZW5kIG9mIGFuIGl0ZW0gYnVm
ZmVyLCBidXQgdGhlIG5leHQgYnVmZmVyIGlkZW50aWZpZXIgaXMgc3RpbGwKKyAgICAgICAgdW5r
bm93biB0byB1cyAoc2luY2UgaXQgaXMgc3RpbGwgImluIHRyYW5zaXQiIHZpYSB0aGUgYERpZENy
ZWF0ZVNoYXJlZERpc3BsYXlMaXN0SGFuZGxlYCBJUEMgbWVzc2FnZSkuIEluIHRoaXMKKyAgICAg
ICAgY2FzZSwgd2UgcmVtZW1iZXIgdGhlIG5leHQgYnVmZmVyIGlkZW50aWZpZXIgaW4gYG1fbmV4
dEl0ZW1CdWZmZXJUb1JlYWRgLCBhbmQgZXhpdCB0aGUgcHJvY2Vzc2luZyBsb29wIGluc2lkZQor
ICAgICAgICBgd2FrZVVwQW5kQXBwbHlEaXNwbGF5TGlzdGAuIFVwb24gcmVjZWl2aW5nIHRoZSBz
aGFyZWQgbWVtb3J5IGhhbmRsZSBpbiBgZGlkQ3JlYXRlU2hhcmVkRGlzcGxheUxpc3RIYW5kbGVg
LCB3ZQorICAgICAgICB0aGVuIGF1dG9tYXRpY2FsbHkgcmVzdW1lIGRpc3BsYXkgbGlzdCBwcm9j
ZXNzaW5nLCBzdGFydGluZyBmcm9tIHRoZSBiZWdpbm5pbmcgb2YgdGhpcyBuZXcgYnVmZmVyLgor
CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OmFwcGx5RGlzcGxheUxp
c3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpz
dWJtaXREaXNwbGF5TGlzdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVJlbmRl
cmluZ0JhY2tlbmQ6OmZsdXNoRGlzcGxheUxpc3RBbmRDb21taXQpOiBEZWxldGVkLgorICAgICAg
ICAoV2ViS2l0OjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpkaWRDcmVhdGVTaGFyZWRJdGVtRGF0
YSk6IERlbGV0ZWQuCisKKyAgICAgICAgV2UgZG9uJ3QgbmVlZCBhbnkgb2YgdGhlc2UgbWV0aG9k
cyBhbnltb3JlLCBub3cgdGhhdCB0aGVyZSBpcyBvbmx5IG9uZSBjb2RlcGF0aCBmb3IgcHJvY2Vz
c2luZyBkaXNwbGF5IGxpc3QKKyAgICAgICAgaXRlbXMuIFNlZSBgUmVtb3RlUmVuZGVyaW5nQmFj
a2VuZDo6d2FrZVVwQW5kQXBwbHlEaXNwbGF5TGlzdGAgYWJvdmUuIEFsc28sIHJlbmFtZSBgZGlk
Q3JlYXRlU2hhcmVkSXRlbURhdGFgCisgICAgICAgIHRvIGBkaWRDcmVhdGVTaGFyZWREaXNwbGF5
TGlzdEhhbmRsZWAgKGFsc28gYWJvdmUpLgorCisgICAgICAgICogR1BVUHJvY2Vzcy9ncmFwaGlj
cy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kLmg6CisgICAgICAgICogR1BVUHJvY2Vzcy9ncmFwaGlj
cy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kLm1lc3NhZ2VzLmluOgorICAgICAgICAqIFNoYXJlZC9T
aGFyZWREaXNwbGF5TGlzdEhhbmRsZS5oOgorICAgICAgICAoV2ViS2l0OjpTaGFyZWREaXNwbGF5
TGlzdEhhbmRsZTo6c2hhcmVkTWVtb3J5KToKKyAgICAgICAgKFdlYktpdDo6U2hhcmVkRGlzcGxh
eUxpc3RIYW5kbGU6OnNoYXJlZE1lbW9yeSBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OlNoYXJl
ZERpc3BsYXlMaXN0SGFuZGxlOjppZGVudGlmaWVyIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6
U2hhcmVkRGlzcGxheUxpc3RIYW5kbGU6OmRhdGEgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpT
aGFyZWREaXNwbGF5TGlzdEhhbmRsZTo6dW5yZWFkQnl0ZXMgY29uc3QpOgorICAgICAgICAoV2Vi
S2l0OjpTaGFyZWREaXNwbGF5TGlzdEhhbmRsZTo6TG9jazo6TG9jayk6CisgICAgICAgIChXZWJL
aXQ6OlNoYXJlZERpc3BsYXlMaXN0SGFuZGxlOjpMb2NrOjp+TG9jayk6CisgICAgICAgIChXZWJL
aXQ6OlNoYXJlZERpc3BsYXlMaXN0SGFuZGxlOjpTaGFyZWREaXNwbGF5TGlzdEhhbmRsZSk6Cisg
ICAgICAgIChXZWJLaXQ6OlNoYXJlZERpc3BsYXlMaXN0SGFuZGxlOjp1bnJlYWRCeXRlc0hhbmRs
ZSk6CisgICAgICAgIChXZWJLaXQ6OlNoYXJlZERpc3BsYXlMaXN0SGFuZGxlOjphdG9taWNMb2Nr
VmFsdWUpOgorICAgICAgICAoV2ViS2l0OjpTaGFyZWREaXNwbGF5TGlzdEhhbmRsZTo6c3RydWN0
dXJlKToKKyAgICAgICAgKFdlYktpdDo6U2hhcmVkRGlzcGxheUxpc3RIYW5kbGU6OnN0cnVjdHVy
ZSBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OlNoYXJlZERpc3BsYXlMaXN0SGFuZGxlOjplbmNv
ZGUgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpTaGFyZWREaXNwbGF5TGlzdEhh
bmRsZTo6ZGVjb2RlKTogRGVsZXRlZC4KKworICAgICAgICBSZXB1cnBvc2UgYFNoYXJlZERpc3Bs
YXlMaXN0SGFuZGxlYCB0byBzZXJ2ZSBhcyBhIGJhc2UgY2xhc3MgZm9yIGJvdGggYERpc3BsYXlM
aXN0UmVhZGVySGFuZGxlYCBhbmQKKyAgICAgICAgYERpc3BsYXlMaXN0V3JpdGVySGFuZGxlYC4g
VGhpcyBiYXNlIGNsYXNzIGlzIGF3YXJlIG9mIHRoZSBtZW1vcnkgbGF5b3V0IG9mIHRoZSBkaXNw
bGF5IGxpc3QgaXRlbSBidWZmZXIgaW4KKyAgICAgICAgc2hhcmVkIG1lbW9yeSAoaW4gcGFydGlj
dWxhciwgdGhlIGZhY3QgdGhhdCB0aGUgZmlyc3QgOCBieXRlcyBhcmUgdGhlIGF0b21pYyBsb2Nr
IGFuZCB0aGUgbmV4dCA4IGJ5dGVzIGNvbnRhaW4KKyAgICAgICAgdGhlIHVucmVhZCBieXRlIGNv
dW50ZXIpLgorCisgICAgICAgIFRoaXMgYWxzbyBleHBvc2VzIGEgaGVscGVyIFJBSUkgY2xhc3Ms
IGBTaGFyZWREaXNwbGF5TGlzdEhhbmRsZTo6TG9ja2AsIHRoYXQgaXMgdXNlZCB0byBncmFiIHRo
ZSBsb2NrIG9uIGEKKyAgICAgICAgcGFydGljdWxhciBzaGFyZWQgaXRlbSBidWZmZXIgd2hlbiBy
ZWFkaW5nIG9yIHVwZGF0aW5nIHRoZSB1bnJlYWQgYnl0ZXMgY291bnRlci4KKworICAgICAgICAq
IFNvdXJjZXMudHh0OgorICAgICAgICAqIFdlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
OgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL0Rpc3BsYXlMaXN0V3JpdGVySGFu
ZGxlLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6OkRpc3BsYXlMaXN0V3JpdGVySGFuZGxl
OjphZHZhbmNlKToKKyAgICAgICAgKFdlYktpdDo6RGlzcGxheUxpc3RXcml0ZXJIYW5kbGU6OmF2
YWlsYWJsZUNhcGFjaXR5IGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6RGlzcGxheUxpc3RXcml0
ZXJIYW5kbGU6OmNyZWF0ZUhhbmRsZSBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OkRpc3BsYXlM
aXN0V3JpdGVySGFuZGxlOjpyZXNldFdyaXRhYmxlT2Zmc2V0SWZQb3NzaWJsZSk6CisKKyAgICAg
ICAgVGhpcyBoZWxwZXIgbWV0aG9kIG1vdmVzIHRoZSB3cml0YWJsZSBvZmZzZXQgKHNlZSBiZWxv
dykgYmFjayB0byB0aGUgc3RhcnQgb2YgdGhlIGJ1ZmZlciBpZiBpdCBpcyBub3QgYmVpbmcgcmVh
ZAorICAgICAgICBmcm9tIGJ5IHRoZSBHUFUgcHJvY2Vzcy4KKworICAgICAgICAqIFdlYlByb2Nl
c3MvR1BVL2dyYXBoaWNzL0Rpc3BsYXlMaXN0V3JpdGVySGFuZGxlLmg6IFJlbmFtZWQgZnJvbSBT
b3VyY2UvV2ViS2l0L1NoYXJlZC9TaGFyZWREaXNwbGF5TGlzdEhhbmRsZS5jcHAuCisgICAgICAg
IChXZWJLaXQ6OkRpc3BsYXlMaXN0V3JpdGVySGFuZGxlOjpEaXNwbGF5TGlzdFdyaXRlckhhbmRs
ZSk6CisgICAgICAgIChXZWJLaXQ6OkRpc3BsYXlMaXN0V3JpdGVySGFuZGxlOjp3cml0YWJsZU9m
ZnNldCBjb25zdCk6CisKKyAgICAgICAgU2ltaWxhciB0byBgRGlzcGxheUxpc3RSZWFkZXJIYW5k
bGVgLCBleGNlcHQgdGhhdCB0aGlzIGNvbnRhaW5zIGxvZ2ljIHNwZWNpZmljIHRvIHRoZSB3ZWIg
cHJvY2VzcyBmb3Igd3JpdGluZworICAgICAgICBkaXNwbGF5IGxpc3QgaXRlbXMgaW50byBzaGFy
ZWQgbWVtb3J5LiBBZHZhbmNpbmcgdGhlIGN1cnNvciBpbiBgRGlzcGxheUxpc3RXcml0ZXJIYW5k
bGVgIGluY3JlbWVudHMgdGhlIGNvdW50ZXIuCisgICAgICAgIEl0IGFsc28gaW5jcmVtZW50cyB0
aGUgYHdyaXRhYmxlT2Zmc2V0YCBvZiB0aGUgaGFuZGxlLCB3aGljaCByZXByZXNlbnRzIHRoZSBt
aW5pbXVtIG9mZnNldCBpbnRvIHRoZSBzaGFyZWQKKyAgICAgICAgYnVmZmVyIHRoYXQgbWF5IGNv
bnRhaW4gbmV3bHkgYXBwZW5kZWQgZGlzcGxheSBsaXN0IGl0ZW1zLgorCisgICAgICAgICogV2Vi
UHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlSW1hZ2VCdWZmZXJQcm94eS5oOgorICAgICAgICAq
IFdlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS5jcHA6
CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eTo6c3VibWl0RGlz
cGxheUxpc3QpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHk6
OnVwZGF0ZVJldXNhYmxlSGFuZGxlcyk6CisKKyAgICAgICAgVGhpcyBwcml2YXRlIGhlbHBlciBp
dGVyYXRlcyB0aGUgc2V0IG9mIGJ1ZmZlcnMgdGhhdCBhcmUgbm90IGN1cnJlbnRseSBiZWluZyB3
cml0dGVuIHRvLCBhbmQgYWRkcyBlYWNoIG9uZSB0bworICAgICAgICB0aGUgcmV1c2FibGUgYnVm
ZmVyIHF1ZXVlIG9ubHkgaWYgaXRzIHdyaXRhYmxlIG9mZnNldCBpcyBhdCB0aGUgc3RhcnQuCisK
KyAgICAgICAgKFdlYktpdDo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5OjpjcmVhdGVJdGVt
QnVmZmVyKToKKworICAgICAgICBJbXBsZW1lbnRzIGxvZ2ljIHRoYXQgaGFuZHMgc2hhcmVkIGl0
ZW0gYnVmZmVyIGRhdGEgaGFuZGxlcyB0byBXZWJDb3JlIGZvciB3cml0aW5nIGRpc3BsYXkgbGlz
dCBpdGVtcy4gVGhpcyB3aWxsCisgICAgICAgIHRyeSB0byByZXVzZSBhbiBpdGVtIGJ1ZmZlciBp
biB0aGUgcmV1c2UgcXVldWUsIGlmIHBvc3NpYmxlLCBhbmQgZmFsbCBiYWNrIHRvIGFsbG9jYXRp
bmcgYSBuZXcgY2h1bmsgb2Ygc2hhcmVkCisgICAgICAgIG1lbW9yeSBpZiBubyByZXVzYWJsZSBi
dWZmZXIgaXMgZm91bmQgKG9yIHRoZSBleGlzdGluZyBidWZmZXJzIGhhdmUgaW5zdWZmaWNpZW50
IGNhcGFjaXR5KS4gVGhlIGZhY3QgdGhhdCB3ZQorICAgICAgICBpdGVyYXRlIHRocm91Z2ggZWFj
aCByZXVzYWJsZSBidWZmZXIgaW4gb3JkZXIsIGNvbWJpbmVkIHdpdGggdGhlIGFib3ZlIGxvZ2lj
IGluIGB1cGRhdGVSZXVzYWJsZUhhbmRsZXNgLCBlbnN1cmVzCisgICAgICAgIHRoYXQgb25jZSB3
ZSBiZWdpbiB3cml0aW5nIHRvIGEgaXRlbSBidWZmZXIsIHdlIHdpbGwgY29udGludWUgdXNpbmcg
dGhhdCBpdGVtIGJ1ZmZlciB1bnRpbCBpdCBleGhhdXN0cyBhdmFpbGFibGUKKyAgICAgICAgY2Fw
YWNpdHkuCisKKyAgICAgICAgVGhpcyBwcm9wZXJ0eSBpcyBpbXBvcnRhbnQgYmVjYXVzZSBpdCBh
bGxvd3MgdGhlIEdQVSBwcm9jZXNzIHRvIHNpbXBseSBzdGFydCByZWFkaW5nIGl0ZW0gZGF0YSBm
cm9tIGEgZ2l2ZW4KKyAgICAgICAgb2Zmc2V0IGFuZCBidWZmZXIgSUQgKHNwZWNpZmllZCBpbiB0
aGUgYFdha2VVcEFuZEFwcGx5RGlzcGxheUxpc3RgIElQQyBtZXNzYWdlKSwgYW5kIHNlYW1sZXNz
bHkgY29udGludWUKKyAgICAgICAgcmVhZGluZyBkYXRhIGV2ZW4gYWZ0ZXIgaXQgZXhoYXVzdHMg
YWxsIGF2YWlsYWJsZSBpdGVtIGRhdGEgaW4gdGhlIGN1cnJlbnQgYnVmZmVyIGJ5IGNvbnRpbnVp
bmcgZnJvbSB0aGUgc3RhcnQKKyAgICAgICAgb2YgdGhlIGl0ZW0gYnVmZmVyIHRoYXQgY29udGFp
bnMgdGhlIG5leHQgZGlzcGxheSBsaXN0IGl0ZW1zICh3aGljaCB3ZSBsZWFybiBpbiB0aGUgR1BV
IHByb2Nlc3MgYnkgZW5jb3VudGVyaW5nCisgICAgICAgIGEgYE1ldGFDb21tYW5kU3dpdGNoVG9g
IGl0ZW0gYXQgdGhlIGVuZCBvZiB0aGUgcHJldmlvdXMgYnVmZmVyKS4KKworICAgICAgICBJbiAi
c3RlYWR5IHN0YXRlIiAod2hlcmVpbiBib3RoIHByb2Nlc3NlcyBhcmUgY29uY3VycmVudGx5IHdy
aXRpbmcgYW5kIHJlYWRpbmcgaXRlbXMgYXMgcXVpY2tseSBhcyBwb3NzaWJsZSksCisgICAgICAg
IHRoaXMgbWVhbnMgdGhhdCBhcyB0aGUgd2ViIHByb2Nlc3MgaXMgYnVzeSBmaWxsaW5nIHVwIGVh
Y2ggaXRlbSBidWZmZXIgd2l0aCBpdGVtIGRhdGEsIHRoZSBHUFUgcHJvY2VzcyBpcyBhbHNvCisg
ICAgICAgIGJ1c3kgYXBwbHlpbmcgYWxsIHRoZSBpdGVtIGRhdGEgaW4gb25lIGJ1ZmZlciBhbmQg
YXV0b21hdGljYWxseSBtb3Zpbmcgb24gdG8gdGhlIG5leHQgYnVmZmVyIHdpdGggbm8gYWRkaXRp
b25hbAorICAgICAgICBJUEMgbWVzc2FnZXMgcmVxdWlyZWQuCisKKyAgICAgICAgKFdlYktpdDo6
UmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5OjpmbHVzaERpc3BsYXlMaXN0QW5kQ29tbWl0KTog
RGVsZXRlZC4KKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVSZW5kZXJp
bmdCYWNrZW5kUHJveHkuaDoKKwogMjAyMC0xMS0wOSAgV2Vuc29uIEhzaWVoICA8d2Vuc29uX2hz
aWVoQGFwcGxlLmNvbT4KIAogICAgICAgICBSRUdSRVNTSU9OIChyMjY5NTI1KTogTWFueSBsYXlv
dXQgdGVzdHMgY3Jhc2ggd2hlbiBydW4gdW5kZXIgQVNhbgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL0Rpc3BsYXlMaXN0UmVhZGVySGFuZGxlLmNwcCBiL1Nv
dXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9EaXNwbGF5TGlzdFJlYWRlckhhbmRsZS5j
cHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNTQ1ZTMyNjg0Yjc1OTcxZDQxYWNkYWY4ODVhZjg1OTQ0ZGEyNzFhNQot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9EaXNw
bGF5TGlzdFJlYWRlckhhbmRsZS5jcHAKQEAgLTAsMCArMSw1MCBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJ
QlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElU
UyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNp
bmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJEaXNwbGF5TGlzdFJlYWRlckhhbmRsZS5oIgor
CituYW1lc3BhY2UgV2ViS2l0IHsKK3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOworCit2b2lkIERp
c3BsYXlMaXN0UmVhZGVySGFuZGxlOjphZHZhbmNlKHNpemVfdCBhbW91bnQpCit7CisgICAgaWYg
KExJS0VMWShhbW91bnQgPD0gdW5yZWFkQnl0ZXMoKSkpCisgICAgICAgIHVucmVhZEJ5dGVzSGFu
ZGxlKCkgLT0gYW1vdW50OworICAgIGVsc2UgeworICAgICAgICAvLyBGSVhNRTogQWRkIGEgbWVz
c2FnZSBjaGVjayB0byB0ZXJtaW5hdGUgdGhlIHdlYiBwcm9jZXNzLgorICAgICAgICBBU1NFUlRf
Tk9UX1JFQUNIRUQoKTsKKyAgICAgICAgdW5yZWFkQnl0ZXNIYW5kbGUoKSA9IDA7CisgICAgfQor
fQorCitzdGQ6OnVuaXF1ZV9wdHI8RGlzcGxheUxpc3Q6OkRpc3BsYXlMaXN0PiBEaXNwbGF5TGlz
dFJlYWRlckhhbmRsZTo6ZGlzcGxheUxpc3RGb3JSZWFkaW5nKHNpemVfdCBvZmZzZXQsIHNpemVf
dCBjYXBhY2l0eSwgRGlzcGxheUxpc3Q6Okl0ZW1CdWZmZXJSZWFkaW5nQ2xpZW50JiBjbGllbnQp
IGNvbnN0Cit7CisgICAgYXV0byBkaXNwbGF5TGlzdCA9IG1ha2VVbmlxdWU8RGlzcGxheUxpc3Q6
OkRpc3BsYXlMaXN0PihEaXNwbGF5TGlzdDo6SXRlbUJ1ZmZlckhhbmRsZXMge3sgaWRlbnRpZmll
cigpLCBkYXRhKCkgKyBvZmZzZXQsIGNhcGFjaXR5IH19KTsKKyAgICBkaXNwbGF5TGlzdC0+c2V0
SXRlbUJ1ZmZlckNsaWVudCgmY2xpZW50KTsKKyAgICByZXR1cm4gZGlzcGxheUxpc3Q7Cit9CisK
K30gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9j
ZXNzL2dyYXBoaWNzL0Rpc3BsYXlMaXN0UmVhZGVySGFuZGxlLmggYi9Tb3VyY2UvV2ViS2l0L0dQ
VVByb2Nlc3MvZ3JhcGhpY3MvRGlzcGxheUxpc3RSZWFkZXJIYW5kbGUuaApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41
YTM0N2YxNjEzNjk2NTVkZmRmYzhiZjIzYTU5MDMwNGY3OTY2M2Y3Ci0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL0Rpc3BsYXlMaXN0UmVhZGVySGFu
ZGxlLmgKQEAgLTAsMCArMSw0NSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwor
ICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAq
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5j
bHVkZSAiU2hhcmVkRGlzcGxheUxpc3RIYW5kbGUuaCIKKyNpbmNsdWRlIDx3dGYvRmFzdE1hbGxv
Yy5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3MgRGlzcGxheUxpc3RSZWFkZXJIYW5k
bGUgOiBwdWJsaWMgU2hhcmVkRGlzcGxheUxpc3RIYW5kbGUgeworICAgIFdURl9NQUtFX05PTkNP
UFlBQkxFKERpc3BsYXlMaXN0UmVhZGVySGFuZGxlKTsgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7
CitwdWJsaWM6CisgICAgRGlzcGxheUxpc3RSZWFkZXJIYW5kbGUoV2ViQ29yZTo6RGlzcGxheUxp
c3Q6Okl0ZW1CdWZmZXJJZGVudGlmaWVyIGlkZW50aWZpZXIsIFJlZjxTaGFyZWRNZW1vcnk+JiYg
c2hhcmVkTWVtb3J5KQorICAgICAgICA6IFNoYXJlZERpc3BsYXlMaXN0SGFuZGxlKGlkZW50aWZp
ZXIsIFdURk1vdmUoc2hhcmVkTWVtb3J5KSkKKyAgICB7CisgICAgfQorCisgICAgdm9pZCBhZHZh
bmNlKHNpemVfdCBhbW91bnQpIG92ZXJyaWRlOworICAgIHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3Jl
OjpEaXNwbGF5TGlzdDo6RGlzcGxheUxpc3Q+IGRpc3BsYXlMaXN0Rm9yUmVhZGluZyhzaXplX3Qg
b2Zmc2V0LCBzaXplX3QgY2FwYWNpdHksIFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtQnVmZmVy
UmVhZGluZ0NsaWVudCYpIGNvbnN0OworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlSW1hZ2VCdWZm
ZXIuaCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVJbWFnZUJ1ZmZl
ci5oCmluZGV4IDY0YjFlNmJkYWU1ZWNiZjYzMDhlYjczNTRiMzE0Mzk4OTEzNzEyMjUuLjNkYmFh
ZjlmMmVjNmJkMTEyN2Q1MWMxMTdlMGMxYzcwNTZjZDI1ZDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVJbWFnZUJ1ZmZlci5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVJbWFnZUJ1ZmZlci5oCkBAIC01Miw2
ICs1Miw3IEBAIHB1YmxpYzoKICAgICBSZW1vdGVJbWFnZUJ1ZmZlcihzdGQ6OnVuaXF1ZV9wdHI8
QmFja2VuZFR5cGU+JiYgYmFja2VuZCwgUmVtb3RlUmVuZGVyaW5nQmFja2VuZCYgcmVtb3RlUmVu
ZGVyaW5nQmFja2VuZCwgV2ViQ29yZTo6UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyIHJlbmRl
cmluZ1Jlc291cmNlSWRlbnRpZmllcikKICAgICAgICAgOiBCYXNlQ29uY3JldGVJbWFnZUJ1ZmZl
cihXVEZNb3ZlKGJhY2tlbmQpLCByZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpCiAgICAgICAg
ICwgbV9yZW1vdGVSZW5kZXJpbmdCYWNrZW5kKHJlbW90ZVJlbmRlcmluZ0JhY2tlbmQpCisgICAg
ICAgICwgbV9yZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIocmVuZGVyaW5nUmVzb3VyY2VJZGVu
dGlmaWVyKQogICAgIHsKICAgICAgICAgbV9yZW1vdGVSZW5kZXJpbmdCYWNrZW5kLmltYWdlQnVm
ZmVyQmFja2VuZFdhc0NyZWF0ZWQobV9iYWNrZW5kLT5sb2dpY2FsU2l6ZSgpLCBtX2JhY2tlbmQt
PmJhY2tlbmRTaXplKCksIG1fYmFja2VuZC0+cmVzb2x1dGlvblNjYWxlKCksIG1fYmFja2VuZC0+
Y29sb3JTcGFjZSgpLCBtX2JhY2tlbmQtPmNyZWF0ZUltYWdlQnVmZmVyQmFja2VuZEhhbmRsZSgp
LCByZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpOwogICAgIH0KQEAgLTgzLDEyICs4NCwxNSBA
QCBwcml2YXRlOgogICAgICAgICB9CiAKICAgICAgICAgaWYgKGl0ZW0uaXM8V2ViQ29yZTo6RGlz
cGxheUxpc3Q6OkZsdXNoQ29udGV4dD4oKSkgewotICAgICAgICAgICAgLy8gRklYTUU6IE5vdCBp
bXBsZW1lbnRlZCB5ZXQuCisgICAgICAgICAgICBCYXNlQ29uY3JldGVJbWFnZUJ1ZmZlcjo6Zmx1
c2hDb250ZXh0KCk7CisgICAgICAgICAgICBhdXRvIGlkZW50aWZpZXIgPSBpdGVtLmdldDxXZWJD
b3JlOjpEaXNwbGF5TGlzdDo6Rmx1c2hDb250ZXh0PigpLmlkZW50aWZpZXIoKTsKKyAgICAgICAg
ICAgIG1fcmVtb3RlUmVuZGVyaW5nQmFja2VuZC5mbHVzaERpc3BsYXlMaXN0V2FzQ29tbWl0dGVk
KGlkZW50aWZpZXIsIG1fcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKTsKICAgICAgICAgICAg
IHJldHVybiB0cnVlOwogICAgICAgICB9CiAKICAgICAgICAgaWYgKGl0ZW0uaXM8V2ViQ29yZTo6
RGlzcGxheUxpc3Q6Ok1ldGFDb21tYW5kU3dpdGNoVG8+KCkpIHsKLSAgICAgICAgICAgIC8vIEZJ
WE1FOiBOb3QgaW1wbGVtZW50ZWQgeWV0LgorICAgICAgICAgICAgYXV0byBuZXh0QnVmZmVySWRl
bnRpZmllciA9IGl0ZW0uZ2V0PFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpNZXRhQ29tbWFuZFN3aXRj
aFRvPigpLmlkZW50aWZpZXIoKTsKKyAgICAgICAgICAgIG1fcmVtb3RlUmVuZGVyaW5nQmFja2Vu
ZC5zZXROZXh0SXRlbUJ1ZmZlclRvUmVhZChuZXh0QnVmZmVySWRlbnRpZmllcik7CiAgICAgICAg
ICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgfQogCkBAIC05Niw2ICsxMDAsNyBAQCBwcml2YXRl
OgogICAgIH0KIAogICAgIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQmIG1fcmVtb3RlUmVuZGVyaW5n
QmFja2VuZDsKKyAgICBXZWJDb3JlOjpSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgbV9yZW5k
ZXJpbmdSZXNvdXJjZUlkZW50aWZpZXI7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5kZXJp
bmdCYWNrZW5kLmNwcCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVS
ZW5kZXJpbmdCYWNrZW5kLmNwcAppbmRleCBkMjM3YTYzYjg4Njk2NDIxYmI5YTI1N2VmOWRiMjE3
Y2ZlOWY5Y2Y4Li4yNjgzOWVlYzY5M2VhZTkwMzEzYzQwZWUyM2RlNzhkZjhlZjhmM2VjIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5n
QmFja2VuZC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90
ZVJlbmRlcmluZ0JhY2tlbmQuY3BwCkBAIC0yOCw2ICsyOCw3IEBACiAKICNpZiBFTkFCTEUoR1BV
X1BST0NFU1MpCiAKKyNpbmNsdWRlICJEaXNwbGF5TGlzdFJlYWRlckhhbmRsZS5oIgogI2luY2x1
ZGUgIkdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaCIKICNpbmNsdWRlICJQbGF0Zm9ybVJlbW90
ZUltYWdlQnVmZmVyLmgiCiAjaW5jbHVkZSAiUmVtb3RlUmVuZGVyaW5nQmFja2VuZE1lc3NhZ2Vz
LmgiCkBAIC0xMjQsNDQgKzEyNSw3NyBAQCB2b2lkIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OmNy
ZWF0ZUltYWdlQnVmZmVyKGNvbnN0IEZsb2F0U2l6ZSYgbG9naWNhbFNpemUsIFJlbgogICAgIG1f
cmVtb3RlUmVzb3VyY2VDYWNoZS5jYWNoZUltYWdlQnVmZmVyKG1ha2VSZWYoKmltYWdlQnVmZmVy
KSk7CiB9CiAKLXZvaWQgUmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6YXBwbHlEaXNwbGF5TGlzdChj
b25zdCBTaGFyZWREaXNwbGF5TGlzdEhhbmRsZSYgaGFuZGxlLCBSZW5kZXJpbmdSZXNvdXJjZUlk
ZW50aWZpZXIgcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyLCBTaG91bGRGbHVzaENvbnRleHQg
Zmx1c2hDb250ZXh0KQordm9pZCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjphcHBseURpc3BsYXlM
aXN0c0Zyb21IYW5kbGUoSW1hZ2VCdWZmZXImIGRlc3RpbmF0aW9uLCBEaXNwbGF5TGlzdFJlYWRl
ckhhbmRsZSYgaGFuZGxlLCBzaXplX3QgaW5pdGlhbE9mZnNldCkKIHsKLSAgICBWZWN0b3I8UmVm
PFNoYXJlZE1lbW9yeT4+IHJlbW92ZWRJdGVtQnVmZmVyczsKLSAgICBhdXRvIGRpc3BsYXlMaXN0
ID0gaGFuZGxlLmNyZWF0ZURpc3BsYXlMaXN0KFsmXSAoRGlzcGxheUxpc3Q6Okl0ZW1CdWZmZXJJ
ZGVudGlmaWVyIGlkZW50aWZpZXIpIC0+IHVpbnQ4X3QqIHsKLSAgICAgICAgaWYgKGF1dG8gc2hh
cmVkTWVtb3J5ID0gbV9zaGFyZWRJdGVtQnVmZmVycy50YWtlKGlkZW50aWZpZXIpKSB7Ci0gICAg
ICAgICAgICByZW1vdmVkSXRlbUJ1ZmZlcnMuYXBwZW5kKCpzaGFyZWRNZW1vcnkpOwotICAgICAg
ICAgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8dWludDhfdCo+KHNoYXJlZE1lbW9yeS0+ZGF0
YSgpKTsKKyAgICBzaXplX3Qgb2Zmc2V0ID0gaW5pdGlhbE9mZnNldDsKKyAgICBzaXplX3Qgc2l6
ZVRvUmVhZCA9IDA7CisKKyAgICB3aGlsZSAoIXNpemVUb1JlYWQpIHsKKyAgICAgICAgYXV0byBs
b2NrZXIgPSBTaGFyZWREaXNwbGF5TGlzdEhhbmRsZTo6TG9jayB7IGhhbmRsZSB9OworICAgICAg
ICBzaXplVG9SZWFkID0gaGFuZGxlLnVucmVhZEJ5dGVzKCk7CisgICAgfQorCisgICAgd2hpbGUg
KHNpemVUb1JlYWQpIHsKKyAgICAgICAgaWYgKGF1dG8gZGlzcGxheUxpc3QgPSBoYW5kbGUuZGlz
cGxheUxpc3RGb3JSZWFkaW5nKG9mZnNldCwgc2l6ZVRvUmVhZCwgKnRoaXMpKQorICAgICAgICAg
ICAgZGVzdGluYXRpb24uc3VibWl0RGlzcGxheUxpc3QoKmRpc3BsYXlMaXN0KTsKKyAgICAgICAg
ZWxzZSB7CisgICAgICAgICAgICAvLyBGSVhNRTogQWRkIGEgbWVzc2FnZSBjaGVjayB0byB0ZXJt
aW5hdGUgdGhlIHdlYiBwcm9jZXNzLgorICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7
CisgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KLSAgICAgICAgcmV0dXJuIG51bGxwdHI7
Ci0gICAgfSk7CiAKLSAgICBpZiAoIWRpc3BsYXlMaXN0KSB7Ci0gICAgICAgIC8vIEZJWE1FOiBB
ZGQgYSBtZXNzYWdlIGNoZWNrIHRvIHRlcm1pbmF0ZSB0aGUgd2ViIHByb2Nlc3MuCi0gICAgICAg
IHJldHVybjsKKyAgICAgICAgb2Zmc2V0ICs9IHNpemVUb1JlYWQ7CisgICAgICAgIGlmIChvZmZz
ZXQgPiBoYW5kbGUuc2hhcmVkTWVtb3J5KCkuc2l6ZSgpKSB7CisgICAgICAgICAgICAvLyBGSVhN
RTogQWRkIGEgbWVzc2FnZSBjaGVjayB0byB0ZXJtaW5hdGUgdGhlIHdlYiBwcm9jZXNzLgorICAg
ICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgICAgICByZXR1cm47CisgICAg
ICAgIH0KKworICAgICAgICBhdXRvIGxvY2tlciA9IFNoYXJlZERpc3BsYXlMaXN0SGFuZGxlOjpM
b2NrIHsgaGFuZGxlIH07CisgICAgICAgIGhhbmRsZS5hZHZhbmNlKHNpemVUb1JlYWQpOworICAg
ICAgICBzaXplVG9SZWFkID0gaGFuZGxlLnVucmVhZEJ5dGVzKCk7CiAgICAgfQorfQogCi0gICAg
YXV0byBpbWFnZUJ1ZmZlciA9IG1fcmVtb3RlUmVzb3VyY2VDYWNoZS5jYWNoZWRJbWFnZUJ1ZmZl
cihyZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpOwordm9pZCBSZW1vdGVSZW5kZXJpbmdCYWNr
ZW5kOjp3YWtlVXBBbmRBcHBseURpc3BsYXlMaXN0KFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVt
QnVmZmVySWRlbnRpZmllciBpbml0aWFsSWRlbnRpZmllciwgdWludDY0X3QgaW5pdGlhbE9mZnNl
dCwgUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyIGRlc3RpbmF0aW9uQnVmZmVySWRlbnRpZmll
cikKK3sKKyAgICBhdXRvIGltYWdlQnVmZmVyID0gbV9yZW1vdGVSZXNvdXJjZUNhY2hlLmNhY2hl
ZEltYWdlQnVmZmVyKGRlc3RpbmF0aW9uQnVmZmVySWRlbnRpZmllcik7CiAgICAgaWYgKCFpbWFn
ZUJ1ZmZlcikgewogICAgICAgICAvLyBGSVhNRTogQWRkIGEgbWVzc2FnZSBjaGVjayB0byB0ZXJt
aW5hdGUgdGhlIHdlYiBwcm9jZXNzLgorICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAg
ICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIGRpc3BsYXlMaXN0LT5zZXRJdGVtQnVmZmVyQ2xp
ZW50KHRoaXMpOwotICAgIGltYWdlQnVmZmVyLT5zdWJtaXREaXNwbGF5TGlzdCgqZGlzcGxheUxp
c3QpOworICAgIGF1dG8gaW5pdGlhbEhhbmRsZSA9IG1fc2hhcmVkRGlzcGxheUxpc3RIYW5kbGVz
LmdldChpbml0aWFsSWRlbnRpZmllcik7CisgICAgaWYgKCFpbml0aWFsSGFuZGxlKSB7CisgICAg
ICAgIC8vIEZJWE1FOiBBZGQgYSBtZXNzYWdlIGNoZWNrIHRvIHRlcm1pbmF0ZSB0aGUgd2ViIHBy
b2Nlc3MuCisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICByZXR1cm47Cisg
ICAgfQogCi0gICAgaWYgKGZsdXNoQ29udGV4dCA9PSBTaG91bGRGbHVzaENvbnRleHQ6OlllcykK
LSAgICAgICAgaW1hZ2VCdWZmZXItPmZsdXNoQ29udGV4dCgpOwotfQorICAgIGFwcGx5RGlzcGxh
eUxpc3RzRnJvbUhhbmRsZSgqaW1hZ2VCdWZmZXIsICppbml0aWFsSGFuZGxlLCBpbml0aWFsT2Zm
c2V0KTsKIAotdm9pZCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpzdWJtaXREaXNwbGF5TGlzdChj
b25zdCBTaGFyZWREaXNwbGF5TGlzdEhhbmRsZSYgaGFuZGxlLCBSZW5kZXJpbmdSZXNvdXJjZUlk
ZW50aWZpZXIgcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKQotewotICAgIGFwcGx5RGlzcGxh
eUxpc3QoaGFuZGxlLCByZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIsIFNob3VsZEZsdXNoQ29u
dGV4dDo6Tm8pOworICAgIHdoaWxlIChtX25leHRJdGVtQnVmZmVyVG9SZWFkKSB7CisgICAgICAg
IGF1dG8gbmV4dEhhbmRsZSA9IG1fc2hhcmVkRGlzcGxheUxpc3RIYW5kbGVzLmdldChtX25leHRJ
dGVtQnVmZmVyVG9SZWFkKTsKKyAgICAgICAgaWYgKCFuZXh0SGFuZGxlKSB7CisgICAgICAgICAg
ICAvLyBJZiB0aGUgaGFuZGxlIGlkZW50aWZpZXIgaXMgY3VycmVudGx5IHVua25vd24sIHdhaXQg
dW50aWwgdGhlIEdQVSBwcm9jZXNzIHJlY2VpdmVzIGFuCisgICAgICAgICAgICAvLyBJUEMgbWVz
c2FnZSB3aXRoIGEgc2hhcmVkIG1lbW9yeSBoYW5kbGUgdG8gdGhlIG5leHQgaXRlbSBidWZmZXIu
CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgICAgICAvLyBPdGhlcndpc2UsIGNv
bnRpbnVlIHJlYWRpbmcgdGhlIG5leHQgZGlzcGxheSBsaXN0IGl0ZW0gYnVmZmVyIGZyb20gdGhl
IHN0YXJ0LgorICAgICAgICBtX25leHRJdGVtQnVmZmVyVG9SZWFkID0geyB9OworICAgICAgICBh
cHBseURpc3BsYXlMaXN0c0Zyb21IYW5kbGUoKmltYWdlQnVmZmVyLCAqbmV4dEhhbmRsZSwgU2hh
cmVkRGlzcGxheUxpc3RIYW5kbGU6OnJlc2VydmVkQ2FwYWNpdHlBdFN0YXJ0KTsKKyAgICB9CiB9
CiAKLXZvaWQgUmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6Zmx1c2hEaXNwbGF5TGlzdEFuZENvbW1p
dChjb25zdCBTaGFyZWREaXNwbGF5TGlzdEhhbmRsZSYgaGFuZGxlLCBEaXNwbGF5TGlzdDo6Rmx1
c2hJZGVudGlmaWVyIGZsdXNoSWRlbnRpZmllciwgUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVy
IHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcikKK3ZvaWQgUmVtb3RlUmVuZGVyaW5nQmFja2Vu
ZDo6c2V0TmV4dEl0ZW1CdWZmZXJUb1JlYWQoV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1CdWZm
ZXJJZGVudGlmaWVyIGlkZW50aWZpZXIpCiB7Ci0gICAgYXBwbHlEaXNwbGF5TGlzdChoYW5kbGUs
IHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciwgU2hvdWxkRmx1c2hDb250ZXh0OjpZZXMpOwot
ICAgIGZsdXNoRGlzcGxheUxpc3RXYXNDb21taXR0ZWQoZmx1c2hJZGVudGlmaWVyLCByZW5kZXJp
bmdSZXNvdXJjZUlkZW50aWZpZXIpOworICAgIGlmIChVTkxJS0VMWShtX25leHRJdGVtQnVmZmVy
VG9SZWFkKSkgeworICAgICAgICAvLyBGSVhNRTogQWRkIGEgbWVzc2FnZSBjaGVjayB0byB0ZXJt
aW5hdGUgdGhlIHdlYiBwcm9jZXNzLgorICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAg
ICAgICAgcmV0dXJuOworICAgIH0KKyAgICBtX25leHRJdGVtQnVmZmVyVG9SZWFkID0gaWRlbnRp
ZmllcjsKIH0KIAogdm9pZCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpnZXRJbWFnZURhdGEoQWxw
aGFQcmVtdWx0aXBsaWNhdGlvbiBvdXRwdXRGb3JtYXQsIEludFJlY3Qgc3JjUmVjdCwgUmVuZGVy
aW5nUmVzb3VyY2VJZGVudGlmaWVyIHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChJUEM6OkltYWdlRGF0YVJlZmVyZW5jZSYmKT4mJiBjb21wbGV0aW9u
SGFuZGxlcikKQEAgLTE3NywxMCArMjExLDE1IEBAIHZvaWQgUmVtb3RlUmVuZGVyaW5nQmFja2Vu
ZDo6cmVsZWFzZVJlbW90ZVJlc291cmNlKFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciByCiAg
ICAgbV9yZW1vdGVSZXNvdXJjZUNhY2hlLnJlbGVhc2VSZW1vdGVSZXNvdXJjZShyZW5kZXJpbmdS
ZXNvdXJjZUlkZW50aWZpZXIpOwogfQogCi12b2lkIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OmRp
ZENyZWF0ZVNoYXJlZEl0ZW1EYXRhKERpc3BsYXlMaXN0OjpJdGVtQnVmZmVySWRlbnRpZmllciBp
ZGVudGlmaWVyLCBjb25zdCBTaGFyZWRNZW1vcnk6OklQQ0hhbmRsZSYgaGFuZGxlKQordm9pZCBS
ZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpkaWRDcmVhdGVTaGFyZWREaXNwbGF5TGlzdEhhbmRsZShE
aXNwbGF5TGlzdDo6SXRlbUJ1ZmZlcklkZW50aWZpZXIgaWRlbnRpZmllciwgY29uc3QgU2hhcmVk
TWVtb3J5OjpJUENIYW5kbGUmIGhhbmRsZSwgUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyIGRl
c3RpbmF0aW9uUmVzb3VyY2VJZGVudGlmaWVyKQogewotICAgIGlmIChhdXRvIHNoYXJlZE1lbW9y
eSA9IFNoYXJlZE1lbW9yeTo6bWFwKGhhbmRsZS5oYW5kbGUsIFNoYXJlZE1lbW9yeTo6UHJvdGVj
dGlvbjo6UmVhZE9ubHkpKQotICAgICAgICBtX3NoYXJlZEl0ZW1CdWZmZXJzLnNldChpZGVudGlm
aWVyLCBXVEZNb3ZlKHNoYXJlZE1lbW9yeSkpOworICAgIGlmIChhdXRvIHNoYXJlZE1lbW9yeSA9
IFNoYXJlZE1lbW9yeTo6bWFwKGhhbmRsZS5oYW5kbGUsIFNoYXJlZE1lbW9yeTo6UHJvdGVjdGlv
bjo6UmVhZFdyaXRlKSkKKyAgICAgICAgbV9zaGFyZWREaXNwbGF5TGlzdEhhbmRsZXMuc2V0KGlk
ZW50aWZpZXIsIG1ha2VVbmlxdWU8RGlzcGxheUxpc3RSZWFkZXJIYW5kbGU+KGlkZW50aWZpZXIs
IHNoYXJlZE1lbW9yeS5yZWxlYXNlTm9uTnVsbCgpKSk7CisKKyAgICBpZiAobV9uZXh0SXRlbUJ1
ZmZlclRvUmVhZCA9PSBpZGVudGlmaWVyKSB7CisgICAgICAgIG1fbmV4dEl0ZW1CdWZmZXJUb1Jl
YWQgPSB7IH07CisgICAgICAgIHdha2VVcEFuZEFwcGx5RGlzcGxheUxpc3QoaWRlbnRpZmllciwg
U2hhcmVkRGlzcGxheUxpc3RIYW5kbGU6OnJlc2VydmVkQ2FwYWNpdHlBdFN0YXJ0LCBkZXN0aW5h
dGlvblJlc291cmNlSWRlbnRpZmllcik7CisgICAgfQogfQogCiBPcHRpb25hbDxEaXNwbGF5TGlz
dDo6SXRlbUhhbmRsZT4gV0FSTl9VTlVTRURfUkVUVVJOIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6
OmRlY29kZUl0ZW0oY29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90IGxlbmd0aCwgRGlzcGxheUxp
c3Q6Okl0ZW1UeXBlIHR5cGUsIHVpbnQ4X3QqIGhhbmRsZUxvY2F0aW9uKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQu
aCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNr
ZW5kLmgKaW5kZXggN2FjOTYyMDEwM2U1N2MwN2JiMmVlZTMzZWJlZmIyYzQ1ZjAwN2RkMS4uOGJl
Y2I3NDc0NjI5OGYxMmZmMjJjNzY3Y2M4ZjQ4NmRhOWVmOTYzZiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2Vu
ZC5oCkBAIC0zNCw3ICszNCw2IEBACiAjaW5jbHVkZSAiTWVzc2FnZVNlbmRlci5oIgogI2luY2x1
ZGUgIlJlbW90ZVJlc291cmNlQ2FjaGUuaCIKICNpbmNsdWRlICJSZW5kZXJpbmdCYWNrZW5kSWRl
bnRpZmllci5oIgotI2luY2x1ZGUgIlNoYXJlZERpc3BsYXlMaXN0SGFuZGxlLmgiCiAjaW5jbHVk
ZSA8V2ViQ29yZS9Db2xvclNwYWNlLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9EaXNwbGF5TGlzdC5o
PgogI2luY2x1ZGUgPFdlYkNvcmUvRGlzcGxheUxpc3RJdGVtcy5oPgpAQCAtNTIsNiArNTEsNyBA
QCBlbnVtIGNsYXNzIFJlbmRlcmluZ01vZGUgOiBib29sOwogCiBuYW1lc3BhY2UgV2ViS2l0IHsK
IAorY2xhc3MgRGlzcGxheUxpc3RSZWFkZXJIYW5kbGU7CiBjbGFzcyBHUFVDb25uZWN0aW9uVG9X
ZWJQcm9jZXNzOwogCiBjbGFzcyBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kCkBAIC03MiwxMiArNzIs
MTEgQEAgcHVibGljOgogICAgIHZvaWQgaW1hZ2VCdWZmZXJCYWNrZW5kV2FzQ3JlYXRlZChjb25z
dCBXZWJDb3JlOjpGbG9hdFNpemUmIGxvZ2ljYWxTaXplLCBjb25zdCBXZWJDb3JlOjpJbnRTaXpl
JiBiYWNrZW5kU2l6ZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBXZWJDb3JlOjpDb2xvclNwYWNl
LCBJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGUsIFdlYkNvcmU6OlJlbmRlcmluZ1Jlc291cmNlSWRl
bnRpZmllcik7CiAgICAgdm9pZCBmbHVzaERpc3BsYXlMaXN0V2FzQ29tbWl0dGVkKFdlYkNvcmU6
OkRpc3BsYXlMaXN0OjpGbHVzaElkZW50aWZpZXIsIFdlYkNvcmU6OlJlbmRlcmluZ1Jlc291cmNl
SWRlbnRpZmllcik7CiAKKyAgICB2b2lkIHNldE5leHRJdGVtQnVmZmVyVG9SZWFkKFdlYkNvcmU6
OkRpc3BsYXlMaXN0OjpJdGVtQnVmZmVySWRlbnRpZmllcik7CisKIHByaXZhdGU6CiAgICAgUmVt
b3RlUmVuZGVyaW5nQmFja2VuZChHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzJiwgUmVuZGVyaW5n
QmFja2VuZElkZW50aWZpZXIpOwogCi0gICAgZW51bSBjbGFzcyBTaG91bGRGbHVzaENvbnRleHQg
OiBib29sIHsgTm8sIFllcyB9OwotICAgIHZvaWQgYXBwbHlEaXNwbGF5TGlzdChjb25zdCBTaGFy
ZWREaXNwbGF5TGlzdEhhbmRsZSYsIFdlYkNvcmU6OlJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmll
ciwgU2hvdWxkRmx1c2hDb250ZXh0KTsKLQogICAgIE9wdGlvbmFsPFdlYkNvcmU6OkRpc3BsYXlM
aXN0OjpJdGVtSGFuZGxlPiBXQVJOX1VOVVNFRF9SRVRVUk4gZGVjb2RlSXRlbShjb25zdCB1aW50
OF90KiBkYXRhLCBzaXplX3QgbGVuZ3RoLCBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbVR5cGUs
IHVpbnQ4X3QqIGhhbmRsZUxvY2F0aW9uKSBvdmVycmlkZTsKIAogICAgIHRlbXBsYXRlPHR5cGVu
YW1lIFQ+CkBAIC05Miw2ICs5MSw4IEBAIHByaXZhdGU6CiAgICAgICAgIHJldHVybiBXVEY6Om51
bGxvcHQ7CiAgICAgfQogCisgICAgdm9pZCBhcHBseURpc3BsYXlMaXN0c0Zyb21IYW5kbGUoV2Vi
Q29yZTo6SW1hZ2VCdWZmZXImIGRlc3RpbmF0aW9uLCBEaXNwbGF5TGlzdFJlYWRlckhhbmRsZSYs
IHNpemVfdCBvZmZzZXQpOworCiAgICAgLy8gSVBDOjpNZXNzYWdlU2VuZGVyLgogICAgIElQQzo6
Q29ubmVjdGlvbiogbWVzc2FnZVNlbmRlckNvbm5lY3Rpb24oKSBjb25zdCBvdmVycmlkZTsKICAg
ICB1aW50NjRfdCBtZXNzYWdlU2VuZGVyRGVzdGluYXRpb25JRCgpIGNvbnN0IG92ZXJyaWRlOwpA
QCAtMTAyLDE2ICsxMDMsMTYgQEAgcHJpdmF0ZToKIAogICAgIC8vIE1lc3NhZ2VzIHRvIGJlIHJl
Y2VpdmVkLgogICAgIHZvaWQgY3JlYXRlSW1hZ2VCdWZmZXIoY29uc3QgV2ViQ29yZTo6RmxvYXRT
aXplJiBsb2dpY2FsU2l6ZSwgV2ViQ29yZTo6UmVuZGVyaW5nTW9kZSwgZmxvYXQgcmVzb2x1dGlv
blNjYWxlLCBXZWJDb3JlOjpDb2xvclNwYWNlLCBXZWJDb3JlOjpSZW5kZXJpbmdSZXNvdXJjZUlk
ZW50aWZpZXIpOwotICAgIHZvaWQgc3VibWl0RGlzcGxheUxpc3QoY29uc3QgU2hhcmVkRGlzcGxh
eUxpc3RIYW5kbGUmLCBXZWJDb3JlOjpSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpOwotICAg
IHZvaWQgZmx1c2hEaXNwbGF5TGlzdEFuZENvbW1pdChjb25zdCBTaGFyZWREaXNwbGF5TGlzdEhh
bmRsZSYsIFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpGbHVzaElkZW50aWZpZXIsIFdlYkNvcmU6OlJl
bmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcik7CisgICAgdm9pZCB3YWtlVXBBbmRBcHBseURpc3Bs
YXlMaXN0KFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtQnVmZmVySWRlbnRpZmllciBpbml0aWFs
SWRlbnRpZmllciwgdWludDY0X3QgaW5pdGlhbE9mZnNldCwgV2ViQ29yZTo6UmVuZGVyaW5nUmVz
b3VyY2VJZGVudGlmaWVyKTsKICAgICB2b2lkIGdldEltYWdlRGF0YShXZWJDb3JlOjpBbHBoYVBy
ZW11bHRpcGxpY2F0aW9uIG91dHB1dEZvcm1hdCwgV2ViQ29yZTo6SW50UmVjdCBzcmNSZWN0LCBX
ZWJDb3JlOjpSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoSVBDOjpJbWFnZURhdGFSZWZlcmVuY2UmJik+JiYpOwogICAgIHZvaWQgcmVsZWFzZVJlbW90
ZVJlc291cmNlKFdlYkNvcmU6OlJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcik7Ci0gICAgdm9p
ZCBkaWRDcmVhdGVTaGFyZWRJdGVtRGF0YShXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbUJ1ZmZl
cklkZW50aWZpZXIsIGNvbnN0IFNoYXJlZE1lbW9yeTo6SVBDSGFuZGxlJik7CisgICAgdm9pZCBk
aWRDcmVhdGVTaGFyZWREaXNwbGF5TGlzdEhhbmRsZShXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRl
bUJ1ZmZlcklkZW50aWZpZXIsIGNvbnN0IFNoYXJlZE1lbW9yeTo6SVBDSGFuZGxlJiwgV2ViQ29y
ZTo6UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyIGRlc3RpbmF0aW9uQnVmZmVySWRlbnRpZmll
cik7CiAKICAgICBSZW1vdGVSZXNvdXJjZUNhY2hlIG1fcmVtb3RlUmVzb3VyY2VDYWNoZTsKICAg
ICBXZWFrUHRyPEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M+IG1fZ3B1Q29ubmVjdGlvblRvV2Vi
UHJvY2VzczsKICAgICBSZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllciBtX3JlbmRlcmluZ0JhY2tl
bmRJZGVudGlmaWVyOwotICAgIEhhc2hNYXA8V2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1CdWZm
ZXJJZGVudGlmaWVyLCBSZWZQdHI8U2hhcmVkTWVtb3J5Pj4gbV9zaGFyZWRJdGVtQnVmZmVyczsK
KyAgICBIYXNoTWFwPFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtQnVmZmVySWRlbnRpZmllciwg
c3RkOjp1bmlxdWVfcHRyPERpc3BsYXlMaXN0UmVhZGVySGFuZGxlPj4gbV9zaGFyZWREaXNwbGF5
TGlzdEhhbmRsZXM7CisgICAgV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1CdWZmZXJJZGVudGlm
aWVyIG1fbmV4dEl0ZW1CdWZmZXJUb1JlYWQ7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5k
ZXJpbmdCYWNrZW5kLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBo
aWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQubWVzc2FnZXMuaW4KaW5kZXggZjU1YjAyNmJkYjVl
NjNhMTRjZjM2MjE0YTgzZThiYmU4ODYzMWExYi4uNjFmMzAxNTJlMmNkYWNjYzYwOTlmNDdlNTcw
YTdkYWU0YjZiNmVhZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBo
aWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktp
dC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQubWVzc2FnZXMuaW4K
QEAgLTI0LDEwICsyNCw5IEBACiAKIG1lc3NhZ2VzIC0+IFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQg
Tm90UmVmQ291bnRlZCB7CiAgICAgQ3JlYXRlSW1hZ2VCdWZmZXIoV2ViQ29yZTo6RmxvYXRTaXpl
IGxvZ2ljYWxTaXplLCBXZWJDb3JlOjpSZW5kZXJpbmdNb2RlIHJlbmRlcmluZ01vZGUsIGZsb2F0
IHJlc29sdXRpb25TY2FsZSwgV2ViQ29yZTo6Q29sb3JTcGFjZSBjb2xvclNwYWNlLCBXZWJDb3Jl
OjpSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVy
KQotICAgIFN1Ym1pdERpc3BsYXlMaXN0KFdlYktpdDo6U2hhcmVkRGlzcGxheUxpc3RIYW5kbGUg
ZGlzcGxheUxpc3QsIFdlYkNvcmU6OlJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciByZW5kZXJp
bmdSZXNvdXJjZUlkZW50aWZpZXIpCi0gICAgRmx1c2hEaXNwbGF5TGlzdEFuZENvbW1pdChXZWJL
aXQ6OlNoYXJlZERpc3BsYXlMaXN0SGFuZGxlIGRpc3BsYXlMaXN0LCBXZWJDb3JlOjpEaXNwbGF5
TGlzdDo6Rmx1c2hJZGVudGlmaWVyIGZsdXNoSWRlbnRpZmllciwgV2ViQ29yZTo6UmVuZGVyaW5n
UmVzb3VyY2VJZGVudGlmaWVyIHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcikKKyAgICBXYWtl
VXBBbmRBcHBseURpc3BsYXlMaXN0KFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtQnVmZmVySWRl
bnRpZmllciBpbml0aWFsSWRlbnRpZmllciwgdWludDY0X3QgaW5pdGlhbE9mZnNldCwgV2ViQ29y
ZTo6UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyIHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmll
cikKICAgICBHZXRJbWFnZURhdGEoZW51bTp1aW50OF90IFdlYkNvcmU6OkFscGhhUHJlbXVsdGlw
bGljYXRpb24gb3V0cHV0Rm9ybWF0LCBXZWJDb3JlOjpJbnRSZWN0IHNyY1JlY3QsIFdlYkNvcmU6
OlJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciByZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIp
IC0+IChJUEM6OkltYWdlRGF0YVJlZmVyZW5jZSBpbWFnZURhdGEpIFN5bmNocm9ub3VzCi0gICAg
RGlkQ3JlYXRlU2hhcmVkSXRlbURhdGEoV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1CdWZmZXJJ
ZGVudGlmaWVyIGlkZW50aWZpZXIsIFdlYktpdDo6U2hhcmVkTWVtb3J5OjpJUENIYW5kbGUgaGFu
ZGxlKQorICAgIERpZENyZWF0ZVNoYXJlZERpc3BsYXlMaXN0SGFuZGxlKFdlYkNvcmU6OkRpc3Bs
YXlMaXN0OjpJdGVtQnVmZmVySWRlbnRpZmllciBpZGVudGlmaWVyLCBXZWJLaXQ6OlNoYXJlZE1l
bW9yeTo6SVBDSGFuZGxlIGhhbmRsZSwgV2ViQ29yZTo6UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlm
aWVyIHJlbW90ZVJlc291cmNlSWRlbnRpZmllcikKICAgICBSZWxlYXNlUmVtb3RlUmVzb3VyY2Uo
V2ViQ29yZTo6UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyIHJlbmRlcmluZ1Jlc291cmNlSWRl
bnRpZmllcikKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvU2hhcmVkRGlz
cGxheUxpc3RIYW5kbGUuY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvU2hhcmVkRGlzcGxheUxp
c3RIYW5kbGUuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxYWE3NGQ2MTVhYmQz
ZjRhMzE4NjI1MmZmMGZkY2I4NzFlNzBmYTUwLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1NoYXJlZERpc3BsYXlMaXN0
SGFuZGxlLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDUzICswLDAgQEAKLS8qCi0gKiBDb3B5cmln
aHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
LSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoK
LSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRS
SUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJ
VFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0j
aW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiU2hhcmVkRGlzcGxheUxpc3RIYW5kbGUuaCIK
LQotbmFtZXNwYWNlIFdlYktpdCB7Ci11c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKLQotU2hhcmVk
RGlzcGxheUxpc3RIYW5kbGU6OlNoYXJlZERpc3BsYXlMaXN0SGFuZGxlKGNvbnN0IERpc3BsYXlM
aXN0OjpEaXNwbGF5TGlzdCYgZGlzcGxheUxpc3QpCi17Ci0gICAgZGlzcGxheUxpc3QuZm9yRWFj
aEl0ZW1CdWZmZXIoWyZdIChhdXRvJiBoYW5kbGUpIHsKLSAgICAgICAgbV9idWZmZXJzLmFwcGVu
ZCh7IGhhbmRsZS5pZGVudGlmaWVyLCBoYW5kbGUuY2FwYWNpdHkgfSk7Ci0gICAgfSk7Ci19Ci0K
LXN0ZDo6dW5pcXVlX3B0cjxEaXNwbGF5TGlzdDo6RGlzcGxheUxpc3Q+IFNoYXJlZERpc3BsYXlM
aXN0SGFuZGxlOjpjcmVhdGVEaXNwbGF5TGlzdChJdGVtQnVmZmVyUHJvdmlkZXImJiBidWZmZXJQ
cm92aWRlcikgY29uc3QKLXsKLSAgICBEaXNwbGF5TGlzdDo6SXRlbUJ1ZmZlckhhbmRsZXMgaGFu
ZGxlczsKLSAgICBoYW5kbGVzLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkobV9idWZmZXJzLnNpemUo
KSk7Ci0gICAgZm9yIChhdXRvJiBbaWRlbnRpZmllciwgY2FwYWNpdHldIDogbV9idWZmZXJzKSB7
Ci0gICAgICAgIGF1dG8qIGRhdGEgPSBidWZmZXJQcm92aWRlcihpZGVudGlmaWVyKTsKLSAgICAg
ICAgaWYgKCFkYXRhKQotICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0KLSAgICAgICAgaGFu
ZGxlcy51bmNoZWNrZWRBcHBlbmQoeyBpZGVudGlmaWVyLCBkYXRhLCBjYXBhY2l0eSB9KTsKLSAg
ICB9Ci0gICAgcmV0dXJuIG1ha2VVbmlxdWU8RGlzcGxheUxpc3Q6OkRpc3BsYXlMaXN0PihXVEZN
b3ZlKGhhbmRsZXMpKTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9TaGFyZWREaXNwbGF5TGlzdEhhbmRsZS5oIGIvU291cmNlL1dl
YktpdC9TaGFyZWQvU2hhcmVkRGlzcGxheUxpc3RIYW5kbGUuaAppbmRleCBkMTc1ZTExNGYyM2Jj
OGZiOGU1N2NkOTBmNjRhMzNiZTI2MmUxZjMxLi5kZTEyOGY1YzUxNTgyYWIwOGQ2MDY2ZTA4YmNk
Mzg1NGU2Mjk3MTQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9TaGFyZWREaXNw
bGF5TGlzdEhhbmRsZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1NoYXJlZERpc3BsYXlM
aXN0SGFuZGxlLmgKQEAgLTI1LDQyICsyNSw3MyBAQAogCiAjcHJhZ21hIG9uY2UKIAorI2luY2x1
ZGUgIlNoYXJlZE1lbW9yeS5oIgogI2luY2x1ZGUgPFdlYkNvcmUvRGlzcGxheUxpc3QuaD4KKyNp
bmNsdWRlIDxhdG9taWM+CisjaW5jbHVkZSA8dGhyZWFkPgogCiBuYW1lc3BhY2UgV2ViS2l0IHsK
IAogY2xhc3MgU2hhcmVkRGlzcGxheUxpc3RIYW5kbGUgewogcHVibGljOgotICAgIHVzaW5nIEl0
ZW1CdWZmZXJQcm92aWRlciA9IEZ1bmN0aW9uPHVpbnQ4X3QqKFdlYkNvcmU6OkRpc3BsYXlMaXN0
OjpJdGVtQnVmZmVySWRlbnRpZmllcik+OworICAgIHZpcnR1YWwgflNoYXJlZERpc3BsYXlMaXN0
SGFuZGxlKCkgPSBkZWZhdWx0OwogCi0gICAgU2hhcmVkRGlzcGxheUxpc3RIYW5kbGUoY29uc3Qg
V2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRpc3BsYXlMaXN0Jik7Ci0gICAgc3RkOjp1bmlxdWVfcHRy
PFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEaXNwbGF5TGlzdD4gY3JlYXRlRGlzcGxheUxpc3QoSXRl
bUJ1ZmZlclByb3ZpZGVyJiYpIGNvbnN0OworICAgIHN0YXRpYyBjb25zdGV4cHIgYXV0byByZXNl
cnZlZENhcGFjaXR5QXRTdGFydCA9IDIgKiBzaXplb2YodWludDY0X3QpOwogCi0gICAgdGVtcGxh
dGU8Y2xhc3MgRW5jb2Rlcj4gdm9pZCBlbmNvZGUoRW5jb2RlciYpIGNvbnN0OwotICAgIHRlbXBs
YXRlPGNsYXNzIERlY29kZXI+IHN0YXRpYyBPcHRpb25hbDxTaGFyZWREaXNwbGF5TGlzdEhhbmRs
ZT4gZGVjb2RlKERlY29kZXImKTsKKyAgICBTaGFyZWRNZW1vcnkmIHNoYXJlZE1lbW9yeSgpIHsg
cmV0dXJuIG1fc2hhcmVkTWVtb3J5LmdldCgpOyB9CisgICAgY29uc3QgU2hhcmVkTWVtb3J5JiBz
aGFyZWRNZW1vcnkoKSBjb25zdCB7IHJldHVybiBtX3NoYXJlZE1lbW9yeS5nZXQoKTsgfQogCi1w
cml2YXRlOgotICAgIFNoYXJlZERpc3BsYXlMaXN0SGFuZGxlKFZlY3RvcjxzdGQ6OnBhaXI8V2Vi
Q29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1CdWZmZXJJZGVudGlmaWVyLCBzaXplX3Q+PiYmIGJ1ZmZl
cnMpCi0gICAgICAgIDogbV9idWZmZXJzKFdURk1vdmUoYnVmZmVycykpCisgICAgV2ViQ29yZTo6
RGlzcGxheUxpc3Q6Okl0ZW1CdWZmZXJJZGVudGlmaWVyIGlkZW50aWZpZXIoKSBjb25zdCB7IHJl
dHVybiBtX2lkZW50aWZpZXI7IH0KKyAgICB1aW50OF90KiBkYXRhKCkgY29uc3QgeyByZXR1cm4g
cmVpbnRlcnByZXRfY2FzdDx1aW50OF90Kj4oc2hhcmVkTWVtb3J5KCkuZGF0YSgpKTsgfQorCisg
ICAgdWludDY0X3QgdW5yZWFkQnl0ZXMoKSBjb25zdCB7IHJldHVybiBzdHJ1Y3R1cmUoKS51bnJl
YWRCeXRlczsgfQorICAgIHZpcnR1YWwgdm9pZCBhZHZhbmNlKHNpemVfdCBhbW91bnQpID0gMDsK
KworICAgIGNsYXNzIExvY2sgeworICAgIHB1YmxpYzoKKyAgICAgICAgTG9jayhTaGFyZWREaXNw
bGF5TGlzdEhhbmRsZSYgaGFuZGxlKQorICAgICAgICAgICAgOiBtX2hhbmRsZShoYW5kbGUpCisg
ICAgICAgIHsKKyAgICAgICAgICAgIGF1dG8mIGF0b21pY1ZhbHVlID0gbV9oYW5kbGUuYXRvbWlj
TG9ja1ZhbHVlKCk7CisgICAgICAgICAgICB3aGlsZSAodHJ1ZSkgeworICAgICAgICAgICAgICAg
IHN0ZDo6dGhpc190aHJlYWQ6OnlpZWxkKCk7CisgICAgICAgICAgICAgICAgdWludDY0X3QgdW5s
b2NrZWQgPSAwOworICAgICAgICAgICAgICAgIGlmIChhdG9taWNWYWx1ZS5jb21wYXJlX2V4Y2hh
bmdlX3dlYWsodW5sb2NrZWQsIDEpKQorICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAg
ICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIH5Mb2NrKCkKKyAgICAgICAgeworICAgICAg
ICAgICAgbV9oYW5kbGUuYXRvbWljTG9ja1ZhbHVlKCkuc3RvcmUoMCk7CisgICAgICAgIH0KKwor
ICAgIHByaXZhdGU6CisgICAgICAgIFNoYXJlZERpc3BsYXlMaXN0SGFuZGxlJiBtX2hhbmRsZTsK
KyAgICB9OworCitwcm90ZWN0ZWQ6CisgICAgU2hhcmVkRGlzcGxheUxpc3RIYW5kbGUoV2ViQ29y
ZTo6RGlzcGxheUxpc3Q6Okl0ZW1CdWZmZXJJZGVudGlmaWVyIGlkZW50aWZpZXIsIFJlZjxTaGFy
ZWRNZW1vcnk+JiYgc2hhcmVkTWVtb3J5KQorICAgICAgICA6IG1faWRlbnRpZmllcihpZGVudGlm
aWVyKQorICAgICAgICAsIG1fc2hhcmVkTWVtb3J5KFdURk1vdmUoc2hhcmVkTWVtb3J5KSkKICAg
ICB7CiAgICAgfQogCi0gICAgVmVjdG9yPHN0ZDo6cGFpcjxXZWJDb3JlOjpEaXNwbGF5TGlzdDo6
SXRlbUJ1ZmZlcklkZW50aWZpZXIsIHNpemVfdD4+IG1fYnVmZmVyczsKLX07CisgICAgdWludDY0
X3QmIHVucmVhZEJ5dGVzSGFuZGxlKCkgeyByZXR1cm4gc3RydWN0dXJlKCkudW5yZWFkQnl0ZXM7
IH0KIAotdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4gdm9pZCBTaGFyZWREaXNwbGF5TGlzdEhhbmRs
ZTo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0Ci17Ci0gICAgZW5jb2RlciA8PCBtX2J1
ZmZlcnM7Ci19Citwcml2YXRlOgorICAgIHN0cnVjdCBEaXNwbGF5TGlzdEhhbmRsZVN0cnVjdHVy
ZSB7CisgICAgICAgIHN0ZDo6YXRvbWljPHVpbnQ2NF90PiBsb2NrOworICAgICAgICB1aW50NjRf
dCB1bnJlYWRCeXRlczsKKyAgICB9OwogCi10ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBPcHRpb25h
bDxTaGFyZWREaXNwbGF5TGlzdEhhbmRsZT4gU2hhcmVkRGlzcGxheUxpc3RIYW5kbGU6OmRlY29k
ZShEZWNvZGVyJiBkZWNvZGVyKQotewotICAgIE9wdGlvbmFsPFZlY3RvcjxzdGQ6OnBhaXI8V2Vi
Q29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1CdWZmZXJJZGVudGlmaWVyLCBzaXplX3Q+Pj4gYnVmZmVy
czsKLSAgICBkZWNvZGVyID4+IGJ1ZmZlcnM7Ci0gICAgaWYgKCFidWZmZXJzKQotICAgICAgICBy
ZXR1cm4gV1RGOjpudWxsb3B0OworICAgIHN0ZDo6YXRvbWljPHVpbnQ2NF90PiYgYXRvbWljTG9j
a1ZhbHVlKCkgeyByZXR1cm4gc3RydWN0dXJlKCkubG9jazsgfQogCi0gICAgcmV0dXJuIHt7IFdU
Rk1vdmUoKmJ1ZmZlcnMpIH19OwotfQorICAgIERpc3BsYXlMaXN0SGFuZGxlU3RydWN0dXJlJiBz
dHJ1Y3R1cmUoKSB7IHJldHVybiAqcmVpbnRlcnByZXRfY2FzdDxEaXNwbGF5TGlzdEhhbmRsZVN0
cnVjdHVyZSo+KGRhdGEoKSk7IH0KKyAgICBjb25zdCBEaXNwbGF5TGlzdEhhbmRsZVN0cnVjdHVy
ZSYgc3RydWN0dXJlKCkgY29uc3QgeyByZXR1cm4gKnJlaW50ZXJwcmV0X2Nhc3Q8RGlzcGxheUxp
c3RIYW5kbGVTdHJ1Y3R1cmUqPihkYXRhKCkpOyB9CisKKyAgICBXZWJDb3JlOjpEaXNwbGF5TGlz
dDo6SXRlbUJ1ZmZlcklkZW50aWZpZXIgbV9pZGVudGlmaWVyOworICAgIFJlZjxTaGFyZWRNZW1v
cnk+IG1fc2hhcmVkTWVtb3J5OworfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1NvdXJjZXMudHh0IGIvU291cmNlL1dlYktpdC9Tb3VyY2VzLnR4
dAppbmRleCA4M2QyODBjNzVlZjVmNWJiMGEyZWI2ZDExYWE4YzBmYTkxOWI3NGQwLi4yNDVmZGIy
MWY5NTI5OThhMzlkYjhhMjE5MmM4YzU3MmM4OTEwNjJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1NvdXJjZXMudHh0CisrKyBiL1NvdXJjZS9XZWJLaXQvU291cmNlcy50eHQKQEAgLTI0LDYg
KzI0LDcgQEAKIEdQVVByb2Nlc3MvR1BVUHJvY2Vzcy5jcHAKIEdQVVByb2Nlc3MvR1BVQ29ubmVj
dGlvblRvV2ViUHJvY2Vzcy5jcHAKIEdQVVByb2Nlc3MvR1BVUHJvY2Vzc0NyZWF0aW9uUGFyYW1l
dGVycy5jcHAKK0dQVVByb2Nlc3MvZ3JhcGhpY3MvRGlzcGxheUxpc3RSZWFkZXJIYW5kbGUuY3Bw
CiBHUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQuY3BwCiBHUFVQcm9j
ZXNzL2dyYXBoaWNzL1JlbW90ZVJlc291cmNlQ2FjaGUuY3BwCiBHUFVQcm9jZXNzL21lZGlhL1Jl
bW90ZUF1ZGlvU2Vzc2lvblByb3h5LmNwcApAQCAtMTczLDcgKzE3NCw2IEBAIFNoYXJlZC9TZXJ2
aWNlV29ya2VySW5pdGlhbGl6YXRpb25EYXRhLmNwcAogU2hhcmVkL1Nlc3Npb25TdGF0ZS5jcHAK
IFNoYXJlZC9TaGFyZWFibGVCaXRtYXAuY3BwIEBuby11bmlmeQogU2hhcmVkL1NoYXJlYWJsZVJl
c291cmNlLmNwcAotU2hhcmVkL1NoYXJlZERpc3BsYXlMaXN0SGFuZGxlLmNwcAogU2hhcmVkL1No
YXJlZFN0cmluZ0hhc2hTdG9yZS5jcHAKIFNoYXJlZC9TaGFyZWRTdHJpbmdIYXNoVGFibGVSZWFk
T25seS5jcHAKIFNoYXJlZC9TaGFyZWRTdHJpbmdIYXNoVGFibGUuY3BwCkBAIC01NjAsNiArNTYw
LDcgQEAgV2ViUHJvY2Vzcy9NZWRpYVN0cmVhbS9NZWRpYURldmljZVNhbmRib3hFeHRlbnNpb25z
LmNwcAogV2ViUHJvY2Vzcy9NZWRpYVN0cmVhbS9Vc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1h
bmFnZXIuY3BwCiAKIFdlYlByb2Nlc3MvR1BVL0dQVVByb2Nlc3NDb25uZWN0aW9uLmNwcAorV2Vi
UHJvY2Vzcy9HUFUvZ3JhcGhpY3MvRGlzcGxheUxpc3RXcml0ZXJIYW5kbGUuY3BwCiBXZWJQcm9j
ZXNzL0dQVS9ncmFwaGljcy9JbWFnZUJ1ZmZlclNoYXJlYWJsZUJpdG1hcEJhY2tlbmQuY3BwCiBX
ZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkuY3BwCiBX
ZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVSZXNvdXJjZUNhY2hlUHJveHkuY3BwCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIv
U291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBjMDI3
NDk0YjczYWNjZWM1ZWZkODFjNjk0ZDNhODUzYjRlZGVmMGNhLi4wZWU5OTcxMDE5NjAzNmIzZmEx
YmZlMzEzMTUzYjg5ZjI4ODg3ZDM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYktpdC54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTE4NzEsNiArMTg3MSw4IEBACiAJCUU1QkVGNjgyMjEz
MEM0ODAwMEYzMTExMSAvKiBXZWJEYXRhTGlzdFN1Z2dlc3Rpb25zRHJvcGRvd25JT1MuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEU1QkVGNjgwMjEzMEM0
N0YwMEYzMTExMSAvKiBXZWJEYXRhTGlzdFN1Z2dlc3Rpb25zRHJvcGRvd25JT1MuaCAqLzsgfTsK
IAkJRTVDQjA3REMyMEUxNjc4RjAwMjJDMTgzIC8qIFdLRm9ybUNvbG9yQ29udHJvbC5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTVDQjA3REEyMEUxNjc4
RjAwMjJDMTgzIC8qIFdLRm9ybUNvbG9yQ29udHJvbC5oICovOyB9OwogCQlFRDgyQTdGMjEyOEM2
RkFGMDA0NDc3QjMgLyogV0tCdW5kbGVQYWdlT3ZlcmxheS5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUEyMkYwRkYxMjg5RkNEOTAwODVFNzRGIC8qIFdL
QnVuZGxlUGFnZU92ZXJsYXkuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OworCQlGNDA5NENCRDI1NTMwNTNEMDAzRDczRTMgLyogRGlzcGxheUxpc3RSZWFk
ZXJIYW5kbGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEY0MDk0Q0JCMjU1MzA0QUYwMDNENzNFMyAvKiBEaXNwbGF5TGlzdFJlYWRlckhhbmRsZS5oICov
OyB9OworCQlGNDA5NENCRTI1NTMwNTQwMDAzRDczRTMgLyogRGlzcGxheUxpc3RXcml0ZXJIYW5k
bGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY0MDk0
Q0I5MjU1MzA0N0UwMDNENzNFMyAvKiBEaXNwbGF5TGlzdFdyaXRlckhhbmRsZS5oICovOyB9Owog
CQlGNDA5QkExODFFNkU2NEJDMDA5REEyOEUgLyogV0tEcmFnRGVzdGluYXRpb25BY3Rpb24uaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY0MDlCQTE3MUU2
RTY0QjMwMDlEQTI4RSAvKiBXS0RyYWdEZXN0aW5hdGlvbkFjdGlvbi5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUY0MkQ2MzQxMjJBMEVGREYwMEQy
RkIzQSAvKiBXZWJBdXRvY29ycmVjdGlvbkRhdGEuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY0MkQ2MzNGMjJBMEVGRDMwMEQyRkIzQSAvKiBXZWJBdXRv
Y29ycmVjdGlvbkRhdGEuaCAqLzsgfTsKIAkJRjQzMEU5NDIyMjQ3MzM1RjAwNUZFMDUzIC8qIFdl
YnNpdGVNZXRhVmlld3BvcnRQb2xpY3kuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEY0MzBFOTQxMjI0NzMyQTkwMDVGRTA1MyAvKiBXZWJzaXRlTWV0YVZp
ZXdwb3J0UG9saWN5LmggKi87IH07CkBAIC01NDcwLDYgKzU0NzIsMTAgQEAKIAkJRUNBNjgwRDMx
RTY5MDRCNTAwNzMxRDIwIC8qIEV4dHJhUHJpdmF0ZVN5bWJvbHNGb3JUQVBJLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEV4dHJhUHJpdmF0ZVN5bWJvbHNGb3JUQVBJLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUVDQkZDMURCMUU2QTRENjYwMDAzMDBDNyAvKiBF
eHRyYVB1YmxpY1N5bWJvbHNGb3JUQVBJLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEV4dHJhUHVibGljU3lt
Ym9sc0ZvclRBUEkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRjAzNjk3ODcxNUY0
QkYwNTAwQzNBODBFIC8qIFdlYkNvbG9yUGlja2VyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IFdlYkNvbG9yUGlja2VyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJRjQwOTRDQjkyNTUzMDQ3RTAwM0Q3M0UzIC8qIERpc3BsYXlMaXN0V3JpdGVySGFu
ZGxlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERpc3BsYXlMaXN0V3JpdGVySGFuZGxlLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCUY0MDk0Q0JBMjU1MzA0N0UwMDNENzNFMyAvKiBEaXNwbGF5
TGlzdFdyaXRlckhhbmRsZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBEaXNwbGF5TGlzdFdyaXRl
ckhhbmRsZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUY0MDk0Q0JCMjU1MzA0
QUYwMDNENzNFMyAvKiBEaXNwbGF5TGlzdFJlYWRlckhhbmRsZS5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBE
aXNwbGF5TGlzdFJlYWRlckhhbmRsZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlG
NDA5NENCQzI1NTMwNEFGMDAzRDczRTMgLyogRGlzcGxheUxpc3RSZWFkZXJIYW5kbGUuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gRGlzcGxheUxpc3RSZWFkZXJIYW5kbGUuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQlGNDA5QkExNzFFNkU2NEIzMDA5REEyOEUgLyogV0tEcmFnRGVz
dGluYXRpb25BY3Rpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0tEcmFn
RGVzdGluYXRpb25BY3Rpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRjQwRDFC
NjgyMjBCREMwRjAwQjQ5QTAxIC8qIFdlYkF1dG9jb3JyZWN0aW9uQ29udGV4dC5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IG5hbWUgPSBXZWJBdXRvY29ycmVjdGlvbkNvbnRleHQuaDsgcGF0aCA9IGlvcy9XZWJBdXRvY29y
cmVjdGlvbkNvbnRleHQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRjQxMDU2NjEy
MTMwNjk5QTAwOTIyODFEIC8qIEFQSUF0dGFjaG1lbnRDb2NvYS5tbSAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsg
cGF0aCA9IEFQSUF0dGFjaG1lbnRDb2NvYS5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
QEAgLTU0OTIsNyArNTQ5OCw2IEBACiAJCUY0OTZBNDJGMUY1OEEyNzIwMDRDMTc1NyAvKiBEcmFn
RHJvcEludGVyYWN0aW9uU3RhdGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gRHJhZ0Ryb3BJbnRlcmFjdGlv
blN0YXRlLmg7IHBhdGggPSBpb3MvRHJhZ0Ryb3BJbnRlcmFjdGlvblN0YXRlLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCUY0OTZBNDMwMUY1OEEyNzIwMDRDMTc1NyAvKiBEcmFnRHJv
cEludGVyYWN0aW9uU3RhdGUubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IG5hbWUgPSBEcmFnRHJvcEludGVy
YWN0aW9uU3RhdGUubW07IHBhdGggPSBpb3MvRHJhZ0Ryb3BJbnRlcmFjdGlvblN0YXRlLm1tOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGNEE2RDZCQjI1NENBM0U5MDBCNjVGQUEgLyog
U2hhcmVkRGlzcGxheUxpc3RIYW5kbGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU2hhcmVkRGlzcGxheUxp
c3RIYW5kbGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJRjRBNkQ2QkQyNTRDQTUy
MjAwQjY1RkFBIC8qIFNoYXJlZERpc3BsYXlMaXN0SGFuZGxlLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IFNoYXJlZERpc3BsYXlMaXN0SGFuZGxlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJRjRBQzY1NUUyMkEzMTQwRTAwQTA1NjA3IC8qIFdlYlByZWZlcmVuY2VzRGVmYXVsdFZh
bHVlc0lPUy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgbmFtZSA9IFdlYlBy
ZWZlcmVuY2VzRGVmYXVsdFZhbHVlc0lPUy5tbTsgcGF0aCA9IGlvcy9XZWJQcmVmZXJlbmNlc0Rl
ZmF1bHRWYWx1ZXNJT1MubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUY0QjM3OEQw
MjFEREJCQUIwMDk1QTM3OCAvKiBXZWJVbmRvU3RlcElELmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYlVu
ZG9TdGVwSUQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRjRDQjA5RTQyMjVENUEw
MzAwODkxNDg3IC8qIFdlYnNpdGVNZWRpYVNvdXJjZVBvbGljeS5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBX
ZWJzaXRlTWVkaWFTb3VyY2VQb2xpY3kuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAg
LTYyMDAsNyArNjIwNSw2IEBACiAJCQkJMUE2NDIwRTMxMkRDRTJGRjAwQ0FBRTJDIC8qIFNoYXJl
YWJsZUJpdG1hcC5oICovLAogCQkJCTUxMjE3NDVFMTY0QzIwRTMwMDM3QTVDMSAvKiBTaGFyZWFi
bGVSZXNvdXJjZS5jcHAgKi8sCiAJCQkJNTEyMTc0NUYxNjRDMjBFMzAwMzdBNUMxIC8qIFNoYXJl
YWJsZVJlc291cmNlLmggKi8sCi0JCQkJRjRBNkQ2QkQyNTRDQTUyMjAwQjY1RkFBIC8qIFNoYXJl
ZERpc3BsYXlMaXN0SGFuZGxlLmNwcCAqLywKIAkJCQlGNEE2RDZCQjI1NENBM0U5MDBCNjVGQUEg
LyogU2hhcmVkRGlzcGxheUxpc3RIYW5kbGUuaCAqLywKIAkJCQk4MzEzRjdFQTFGN0RBRTA0MDBC
OTQ0RUIgLyogU2hhcmVkU3RyaW5nSGFzaFN0b3JlLmNwcCAqLywKIAkJCQk4MzEzRjdFOTFGN0RB
RTAzMDBCOTQ0RUIgLyogU2hhcmVkU3RyaW5nSGFzaFN0b3JlLmggKi8sCkBAIC04MTc1LDYgKzgx
NzksOCBAQAogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKIAkJCQk3MjdBN0Yz
MzI0MDc4NTI3MDA0RDI5MzEgLyogY29jb2EgKi8sCisJCQkJRjQwOTRDQkEyNTUzMDQ3RTAwM0Q3
M0UzIC8qIERpc3BsYXlMaXN0V3JpdGVySGFuZGxlLmNwcCAqLywKKwkJCQlGNDA5NENCOTI1NTMw
NDdFMDAzRDczRTMgLyogRGlzcGxheUxpc3RXcml0ZXJIYW5kbGUuaCAqLywKIAkJCQk3MjdBN0Yz
OTI0MDc4OEYxMDA0RDI5MzEgLyogSW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxlLmggKi8sCiAJCQkJ
NzI3QTdGMzcyNDA3ODhGMDAwNEQyOTMxIC8qIEltYWdlQnVmZmVyU2hhcmVhYmxlQml0bWFwQmFj
a2VuZC5jcHAgKi8sCiAJCQkJNzI3QTdGMzYyNDA3ODhGMDAwNEQyOTMxIC8qIEltYWdlQnVmZmVy
U2hhcmVhYmxlQml0bWFwQmFja2VuZC5oICovLApAQCAtODE5NCw2ICs4MjAwLDggQEAKIAkJNTUw
NjQwQTEyNDA3MUEyOTAwQUFFMDQ1IC8qIGdyYXBoaWNzICovID0gewogCQkJaXNhID0gUEJYR3Jv
dXA7CiAJCQljaGlsZHJlbiA9ICgKKwkJCQlGNDA5NENCQzI1NTMwNEFGMDAzRDczRTMgLyogRGlz
cGxheUxpc3RSZWFkZXJIYW5kbGUuY3BwICovLAorCQkJCUY0MDk0Q0JCMjU1MzA0QUYwMDNENzNF
MyAvKiBEaXNwbGF5TGlzdFJlYWRlckhhbmRsZS5oICovLAogCQkJCTU1QUQwOTQzMjQwOEEwRTYw
MERFNEQyRiAvKiBQbGF0Zm9ybVJlbW90ZUltYWdlQnVmZmVyLmggKi8sCiAJCQkJNTVBRDA5NDIy
NDA4QTAyRTAwREU0RDJGIC8qIFJlbW90ZUltYWdlQnVmZmVyLmggKi8sCiAJCQkJNTUwNjQwQTIy
NDA3MUE2MTAwQUFFMDQ1IC8qIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQuY3BwICovLApAQCAtMTEw
MzUsNiArMTEwNDMsOCBAQAogCQkJCTgzODkxQjZDMUE2OEMzMEIwMDMwRjM4NiAvKiBEaWFnbm9z
dGljTG9nZ2luZ0NsaWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQzE4MTczNjEyMDU4NDI0NzAw
REZEQTY1IC8qIERpc3BsYXlMaW5rLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjE4OUNBQzI0NzQ5
RjJGMDBFNThEODEgLyogRGlzcGxheUxpbmtPYnNlcnZlcklELmggaW4gSGVhZGVycyAqLywKKwkJ
CQlGNDA5NENCRDI1NTMwNTNEMDAzRDczRTMgLyogRGlzcGxheUxpc3RSZWFkZXJIYW5kbGUuaCBp
biBIZWFkZXJzICovLAorCQkJCUY0MDk0Q0JFMjU1MzA1NDAwMDNENzNFMyAvKiBEaXNwbGF5TGlz
dFdyaXRlckhhbmRsZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNUMxNDI3MDIxQzIzRjg0QzAwRDQx
MTgzIC8qIERvd25sb2FkLmggaW4gSGVhZGVycyAqLywKIAkJCQk1QzE0MjcwNTFDMjNGODRDMDBE
NDExODMgLyogRG93bmxvYWRJRC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNUMxNDI3MDcxQzIzRjg0
QzAwRDQxMTgzIC8qIERvd25sb2FkTWFuYWdlci5oIGluIEhlYWRlcnMgKi8sCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL0Rpc3BsYXlMaXN0V3JpdGVy
SGFuZGxlLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvRGlzcGxh
eUxpc3RXcml0ZXJIYW5kbGUuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjg0YWE4MWVjMmQwNjcyOGE4ZTE0NDU0
ZmY4MzJiNDRjM2U2NjBhNjQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvR1BVL2dyYXBoaWNzL0Rpc3BsYXlMaXN0V3JpdGVySGFuZGxlLmNwcApAQCAtMCwwICsx
LDg4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgor
ICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAq
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkRpc3Bs
YXlMaXN0V3JpdGVySGFuZGxlLmgiCisKKyNpbmNsdWRlIDx3dGYvQ2hlY2tlZEFyaXRobWV0aWMu
aD4KKworbmFtZXNwYWNlIFdlYktpdCB7Cit1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKKwordm9p
ZCBEaXNwbGF5TGlzdFdyaXRlckhhbmRsZTo6YWR2YW5jZShzaXplX3QgYW1vdW50KQoreworICAg
IENoZWNrZWQ8dW5zaWduZWQsIFJlY29yZE92ZXJmbG93PiBjaGVja2VkV3JpdGFibGVPZmZzZXQg
PSBtX3dyaXRhYmxlT2Zmc2V0OworICAgIGNoZWNrZWRXcml0YWJsZU9mZnNldCArPSBhbW91bnQ7
CisgICAgaWYgKFVOTElLRUxZKGNoZWNrZWRXcml0YWJsZU9mZnNldC5oYXNPdmVyZmxvd2VkKCkp
KSB7CisgICAgICAgIC8vIEZJWE1FOiBUaGlzIHNob3VsZCByZXN1bHQgaW4gdGVybWluYXRpbmcg
dGhlIHdlYiBwcm9jZXNzLgorICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAg
cmV0dXJuOworICAgIH0KKworICAgIENoZWNrZWQ8dW5zaWduZWQsIFJlY29yZE92ZXJmbG93PiBj
aGVja2VkVW5yZWFkQnl0ZXMgPSB1bnJlYWRCeXRlcygpOworICAgIGNoZWNrZWRVbnJlYWRCeXRl
cyArPSBhbW91bnQ7CisgICAgaWYgKFVOTElLRUxZKGNoZWNrZWRVbnJlYWRCeXRlcy5oYXNPdmVy
Zmxvd2VkKCkpKSB7CisgICAgICAgIC8vIEZJWE1FOiBUaGlzIHNob3VsZCByZXN1bHQgaW4gdGVy
bWluYXRpbmcgdGhlIHdlYiBwcm9jZXNzLgorICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsK
KyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIG1fd3JpdGFibGVPZmZzZXQgPSBjaGVja2Vk
V3JpdGFibGVPZmZzZXQudW5zYWZlR2V0KCk7CisgICAgdW5yZWFkQnl0ZXNIYW5kbGUoKSA9IGNo
ZWNrZWRVbnJlYWRCeXRlcy51bnNhZmVHZXQoKTsKK30KKworc2l6ZV90IERpc3BsYXlMaXN0V3Jp
dGVySGFuZGxlOjphdmFpbGFibGVDYXBhY2l0eSgpIGNvbnN0Cit7CisgICAgaWYgKFVOTElLRUxZ
KHNoYXJlZE1lbW9yeSgpLnNpemUoKSA8IHdyaXRhYmxlT2Zmc2V0KCkpKQorICAgICAgICByZXR1
cm4gMDsKKworICAgIHJldHVybiBzaGFyZWRNZW1vcnkoKS5zaXplKCkgLSB3cml0YWJsZU9mZnNl
dCgpOworfQorCitEaXNwbGF5TGlzdDo6SXRlbUJ1ZmZlckhhbmRsZSBEaXNwbGF5TGlzdFdyaXRl
ckhhbmRsZTo6Y3JlYXRlSGFuZGxlKCkgY29uc3QKK3sKKyAgICByZXR1cm4geworICAgICAgICBp
ZGVudGlmaWVyKCksCisgICAgICAgIGRhdGEoKSArIHdyaXRhYmxlT2Zmc2V0KCksCisgICAgICAg
IGF2YWlsYWJsZUNhcGFjaXR5KCkKKyAgICB9OworfQorCitib29sIERpc3BsYXlMaXN0V3JpdGVy
SGFuZGxlOjpyZXNldFdyaXRhYmxlT2Zmc2V0SWZQb3NzaWJsZSgpCit7CisgICAgaWYgKG1fd3Jp
dGFibGVPZmZzZXQgPD0gU2hhcmVkRGlzcGxheUxpc3RIYW5kbGU6OnJlc2VydmVkQ2FwYWNpdHlB
dFN0YXJ0KSB7CisgICAgICAgIFJFTEVBU0VfQVNTRVJUKG1fd3JpdGFibGVPZmZzZXQgPT0gU2hh
cmVkRGlzcGxheUxpc3RIYW5kbGU6OnJlc2VydmVkQ2FwYWNpdHlBdFN0YXJ0KTsKKyAgICAgICAg
cmV0dXJuIHRydWU7CisgICAgfQorCisgICAgYXV0byBsb2NrZXIgPSBMb2NrIHsgKnRoaXMgfTsK
KyAgICBpZiAodW5yZWFkQnl0ZXMoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgbV93
cml0YWJsZU9mZnNldCA9IFNoYXJlZERpc3BsYXlMaXN0SGFuZGxlOjpyZXNlcnZlZENhcGFjaXR5
QXRTdGFydDsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL0Rpc3BsYXlM
aXN0V3JpdGVySGFuZGxlLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNz
L0Rpc3BsYXlMaXN0V3JpdGVySGFuZGxlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTM4MDEyNjVlZTM4NDk0MzFh
ZGU5MTdmNThmYTUzYjI1OTNmYjk0ZAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvRGlzcGxheUxpc3RXcml0ZXJIYW5kbGUuaApAQCAtMCww
ICsxLDU0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4K
KyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJTaGFyZWRE
aXNwbGF5TGlzdEhhbmRsZS5oIgorI2luY2x1ZGUgPHd0Zi9GYXN0TWFsbG9jLmg+CisKK25hbWVz
cGFjZSBXZWJLaXQgeworCitjbGFzcyBEaXNwbGF5TGlzdFdyaXRlckhhbmRsZSA6IHB1YmxpYyBT
aGFyZWREaXNwbGF5TGlzdEhhbmRsZSB7CisgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoRGlzcGxh
eUxpc3RXcml0ZXJIYW5kbGUpOyBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKK3B1YmxpYzoKKyAg
ICBEaXNwbGF5TGlzdFdyaXRlckhhbmRsZShXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbUJ1ZmZl
cklkZW50aWZpZXIgaWRlbnRpZmllciwgUmVmPFNoYXJlZE1lbW9yeT4mJiBzaGFyZWRNZW1vcnkp
CisgICAgICAgIDogU2hhcmVkRGlzcGxheUxpc3RIYW5kbGUoaWRlbnRpZmllciwgV1RGTW92ZShz
aGFyZWRNZW1vcnkpKQorICAgICAgICAsIG1fd3JpdGFibGVPZmZzZXQoU2hhcmVkRGlzcGxheUxp
c3RIYW5kbGU6OnJlc2VydmVkQ2FwYWNpdHlBdFN0YXJ0KQorICAgIHsKKyAgICB9CisKKyAgICBz
aXplX3Qgd3JpdGFibGVPZmZzZXQoKSBjb25zdCB7IHJldHVybiBtX3dyaXRhYmxlT2Zmc2V0OyB9
CisgICAgc2l6ZV90IGF2YWlsYWJsZUNhcGFjaXR5KCkgY29uc3Q7CisKKyAgICBib29sIHJlc2V0
V3JpdGFibGVPZmZzZXRJZlBvc3NpYmxlKCk7CisKKyAgICB2b2lkIGFkdmFuY2Uoc2l6ZV90IGFt
b3VudCkgb3ZlcnJpZGU7CisgICAgV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1CdWZmZXJIYW5k
bGUgY3JlYXRlSGFuZGxlKCkgY29uc3Q7CisKK3ByaXZhdGU6CisgICAgc2l6ZV90IG1fd3JpdGFi
bGVPZmZzZXQgeyAwIH07Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlSW1hZ2VCdWZmZXJQ
cm94eS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVJbWFn
ZUJ1ZmZlclByb3h5LmgKaW5kZXggNTk4NTdmZjA3YTVhYzJmNGIzMmM1NjYzMjUxNGI0NWRlMTAx
OTdiOC4uMDFlNTNlMTVjNGIxZDFmNTBhZmQ3MGJkY2M5YjE2ODQ0OTZlNWQ2MyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVJbWFnZUJ1ZmZl
clByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1v
dGVJbWFnZUJ1ZmZlclByb3h5LmgKQEAgLTM0LDYgKzM0LDcgQEAKICNpbmNsdWRlIDxXZWJDb3Jl
L0Rpc3BsYXlMaXN0SW1hZ2VCdWZmZXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0Rpc3BsYXlMaXN0
SXRlbXMuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0Rpc3BsYXlMaXN0UmVjb3JkZXIuaD4KKyNpbmNs
dWRlIDx3dGYvU3lzdGVtVHJhY2luZy5oPgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIApAQCAtMTM5
LDYgKzE0MCw3IEBAIHByb3RlY3RlZDoKIAogICAgIHZvaWQgZmx1c2hEcmF3aW5nQ29udGV4dCgp
IG92ZXJyaWRlCiAgICAgeworICAgICAgICBUcmFjZVNjb3BlIHRyYWNpbmdTY29wZShGbHVzaFJl
bW90ZUltYWdlQnVmZmVyU3RhcnQsIEZsdXNoUmVtb3RlSW1hZ2VCdWZmZXJFbmQpOwogICAgICAg
ICBmbHVzaERyYXdpbmdDb250ZXh0QW5kQ29tbWl0KCk7CiAgICAgICAgIHRpbWVvdXRXYWl0Rm9y
Rmx1c2hEaXNwbGF5TGlzdFdhc0NvbW1pdHRlZCgpOwogICAgIH0KQEAgLTE1Miw4ICsxNTQsOSBA
QCBwcm90ZWN0ZWQ6CiAgICAgICAgIGlmIChkaXNwbGF5TGlzdC5pc0VtcHR5KCkpCiAgICAgICAg
ICAgICByZXR1cm47CiAKLSAgICAgICAgVHJhY2VTY29wZSB0cmFjaW5nU2NvcGUoRmx1c2hSZW1v
dGVJbWFnZUJ1ZmZlclN0YXJ0LCBGbHVzaFJlbW90ZUltYWdlQnVmZmVyRW5kLCAxKTsKLSAgICAg
ICAgbV9zZW50Rmx1c2hJZGVudGlmaWVyID0gbV9yZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkt
PmZsdXNoRGlzcGxheUxpc3RBbmRDb21taXQoZGlzcGxheUxpc3QsIG1fcmVuZGVyaW5nUmVzb3Vy
Y2VJZGVudGlmaWVyKTsKKyAgICAgICAgbV9zZW50Rmx1c2hJZGVudGlmaWVyID0gV2ViQ29yZTo6
RGlzcGxheUxpc3Q6OkZsdXNoSWRlbnRpZmllcjo6Z2VuZXJhdGUoKTsKKyAgICAgICAgZGlzcGxh
eUxpc3QudGVtcGxhdGUgYXBwZW5kPFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpGbHVzaENvbnRleHQ+
KG1fc2VudEZsdXNoSWRlbnRpZmllcik7CisgICAgICAgIG1fcmVtb3RlUmVuZGVyaW5nQmFja2Vu
ZFByb3h5LT5zdWJtaXREaXNwbGF5TGlzdChkaXNwbGF5TGlzdCwgbV9yZW5kZXJpbmdSZXNvdXJj
ZUlkZW50aWZpZXIpOwogICAgICAgICBtX2l0ZW1Db3VudEluQ3VycmVudERpc3BsYXlMaXN0ID0g
MDsKICAgICAgICAgZGlzcGxheUxpc3QuY2xlYXIoKTsKICAgICB9CkBAIC0xNjMsNyArMTY2LDYg
QEAgcHJvdGVjdGVkOgogICAgICAgICBpZiAoIW1fcmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5
IHx8IGRpc3BsYXlMaXN0LmlzRW1wdHkoKSkKICAgICAgICAgICAgIHJldHVybjsKIAotICAgICAg
ICBUcmFjZVNjb3BlIHRyYWNpbmdTY29wZShGbHVzaFJlbW90ZUltYWdlQnVmZmVyU3RhcnQsIEZs
dXNoUmVtb3RlSW1hZ2VCdWZmZXJFbmQpOwogICAgICAgICBtX3JlbW90ZVJlbmRlcmluZ0JhY2tl
bmRQcm94eS0+c3VibWl0RGlzcGxheUxpc3QoZGlzcGxheUxpc3QsIG1fcmVuZGVyaW5nUmVzb3Vy
Y2VJZGVudGlmaWVyKTsKICAgICB9CiAKQEAgLTE4Miw3ICsxODQsNyBAQCBwcm90ZWN0ZWQ6CiAg
ICAgV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1CdWZmZXJIYW5kbGUgY3JlYXRlSXRlbUJ1ZmZl
cihzaXplX3QgY2FwYWNpdHkpIG92ZXJyaWRlCiAgICAgewogICAgICAgICBpZiAobV9yZW1vdGVS
ZW5kZXJpbmdCYWNrZW5kUHJveHkpCi0gICAgICAgICAgICByZXR1cm4gbV9yZW1vdGVSZW5kZXJp
bmdCYWNrZW5kUHJveHktPmNyZWF0ZUl0ZW1CdWZmZXIoY2FwYWNpdHkpOworICAgICAgICAgICAg
cmV0dXJuIG1fcmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5LT5jcmVhdGVJdGVtQnVmZmVyKGNh
cGFjaXR5LCBtX3JlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcik7CiAKICAgICAgICAgQVNTRVJU
X05PVF9SRUFDSEVEKCk7CiAgICAgICAgIHJldHVybiB7IH07CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94
eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZVJlbmRl
cmluZ0JhY2tlbmRQcm94eS5jcHAKaW5kZXggOGQ4NjE1YjhhOTZjNzQ0NzBiMDk0MzdkOGNkN2M3
YTE2NWJjNjVkYS4uNTQ0ZTQ0YWY0NjdjMGJjYjNkMTM2N2RiMDFmY2VjMzdhYzE2MjczMCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVSZW5k
ZXJpbmdCYWNrZW5kUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUv
Z3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5LmNwcApAQCAtMjgsMTMgKzI4LDEz
IEBACiAKICNpZiBFTkFCTEUoR1BVX1BST0NFU1MpCiAKKyNpbmNsdWRlICJEaXNwbGF5TGlzdFdy
aXRlckhhbmRsZS5oIgogI2luY2x1ZGUgIkdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaCIKICNp
bmNsdWRlICJHUFVQcm9jZXNzQ29ubmVjdGlvbi5oIgogI2luY2x1ZGUgIkltYWdlRGF0YVJlZmVy
ZW5jZS5oIgogI2luY2x1ZGUgIlBsYXRmb3JtUmVtb3RlSW1hZ2VCdWZmZXJQcm94eS5oIgogI2lu
Y2x1ZGUgIlJlbW90ZVJlbmRlcmluZ0JhY2tlbmRNZXNzYWdlcy5oIgogI2luY2x1ZGUgIlJlbW90
ZVJlbmRlcmluZ0JhY2tlbmRQcm94eU1lc3NhZ2VzLmgiCi0jaW5jbHVkZSAiU2hhcmVkRGlzcGxh
eUxpc3RIYW5kbGUuaCIKICNpbmNsdWRlICJTaGFyZWRNZW1vcnkuaCIKICNpbmNsdWRlICJXZWJQ
cm9jZXNzLmgiCiAKQEAgLTExNywxNiArMTE3LDI5IEBAIFJlZlB0cjxJbWFnZURhdGE+IFJlbW90
ZVJlbmRlcmluZ0JhY2tlbmRQcm94eTo6Z2V0SW1hZ2VEYXRhKEFscGhhUHJlbXVsdGlwbGljYXRp
CiAKIHZvaWQgUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5OjpzdWJtaXREaXNwbGF5TGlzdChj
b25zdCBEaXNwbGF5TGlzdDo6RGlzcGxheUxpc3QmIGRpc3BsYXlMaXN0LCBSZW5kZXJpbmdSZXNv
dXJjZUlkZW50aWZpZXIgcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKQogewotICAgIHNlbmQo
TWVzc2FnZXM6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OlN1Ym1pdERpc3BsYXlMaXN0KHsgZGlz
cGxheUxpc3QgfSwgcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKSwgbV9yZW5kZXJpbmdCYWNr
ZW5kSWRlbnRpZmllcik7Ci0gICAgbV9zaGFyZWRJdGVtQnVmZmVycy5jbGVhcigpOwotfQorICAg
IE9wdGlvbmFsPHN0ZDo6cGFpcjxXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbUJ1ZmZlcklkZW50
aWZpZXIsIHNpemVfdD4+IGlkZW50aWZpZXJBbmRPZmZzZXRGb3JXYWtlVXBNZXNzYWdlOworICAg
IGJvb2wgaXNGaXJzdEhhbmRsZSA9IHRydWU7CiAKLURpc3BsYXlMaXN0OjpGbHVzaElkZW50aWZp
ZXIgUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5OjpmbHVzaERpc3BsYXlMaXN0QW5kQ29tbWl0
KGNvbnN0IERpc3BsYXlMaXN0OjpEaXNwbGF5TGlzdCYgZGlzcGxheUxpc3QsIFJlbmRlcmluZ1Jl
c291cmNlSWRlbnRpZmllciByZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpCi17Ci0gICAgYXV0
byBzZW50Rmx1c2hJZGVudGlmaWVyID0gRGlzcGxheUxpc3Q6OkZsdXNoSWRlbnRpZmllcjo6Z2Vu
ZXJhdGUoKTsKLSAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpGbHVz
aERpc3BsYXlMaXN0QW5kQ29tbWl0KHsgZGlzcGxheUxpc3QgfSwgc2VudEZsdXNoSWRlbnRpZmll
ciwgcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKSwgbV9yZW5kZXJpbmdCYWNrZW5kSWRlbnRp
Zmllcik7Ci0gICAgbV9zaGFyZWRJdGVtQnVmZmVycy5jbGVhcigpOwotICAgIHJldHVybiBzZW50
Rmx1c2hJZGVudGlmaWVyOworICAgIGRpc3BsYXlMaXN0LmZvckVhY2hJdGVtQnVmZmVyKFsmXSAo
YXV0byYgaGFuZGxlKSB7CisgICAgICAgIG1faWRlbnRpZmllcnNPZkhhbmRsZXNBdmFpbGFibGVG
b3JXcml0aW5nLmFkZChoYW5kbGUuaWRlbnRpZmllcik7CisKKyAgICAgICAgYXV0byogc2hhcmVk
SGFuZGxlID0gbV9zaGFyZWREaXNwbGF5TGlzdEhhbmRsZXMuZ2V0KGhhbmRsZS5pZGVudGlmaWVy
KTsKKyAgICAgICAgUkVMRUFTRV9BU1NFUlRfV0lUSF9NRVNTQUdFKHNoYXJlZEhhbmRsZSwgIiVz
IGZhaWxlZCB0byBmaW5kIHNoYXJlZCBkaXNwbGF5IGxpc3QiLCBfX1BSRVRUWV9GVU5DVElPTl9f
KTsKKworICAgICAgICBhdXRvIGxvY2tlciA9IFNoYXJlZERpc3BsYXlMaXN0SGFuZGxlOjpMb2Nr
IHsgKnNoYXJlZEhhbmRsZSB9OworCisgICAgICAgIGJvb2wgdW5yZWFkQ291bnRXYXNFbXB0eSA9
ICFzaGFyZWRIYW5kbGUtPnVucmVhZEJ5dGVzKCk7CisgICAgICAgIHNoYXJlZEhhbmRsZS0+YWR2
YW5jZShoYW5kbGUuY2FwYWNpdHkpOworICAgICAgICBpZiAoaXNGaXJzdEhhbmRsZSAmJiB1bnJl
YWRDb3VudFdhc0VtcHR5KQorICAgICAgICAgICAgaWRlbnRpZmllckFuZE9mZnNldEZvcldha2VV
cE1lc3NhZ2UgPSB7eyBoYW5kbGUuaWRlbnRpZmllciwgaGFuZGxlLmRhdGEgLSBzaGFyZWRIYW5k
bGUtPmRhdGEoKSB9fTsKKworICAgICAgICBpc0ZpcnN0SGFuZGxlID0gZmFsc2U7CisgICAgfSk7
CisKKyAgICBpZiAoaWRlbnRpZmllckFuZE9mZnNldEZvcldha2VVcE1lc3NhZ2UpIHsKKyAgICAg
ICAgYXV0byBbaWRlbnRpZmllciwgb2Zmc2V0XSA9ICppZGVudGlmaWVyQW5kT2Zmc2V0Rm9yV2Fr
ZVVwTWVzc2FnZTsKKyAgICAgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlUmVuZGVyaW5nQmFja2Vu
ZDo6V2FrZVVwQW5kQXBwbHlEaXNwbGF5TGlzdChpZGVudGlmaWVyLCBvZmZzZXQsIHJlbmRlcmlu
Z1Jlc291cmNlSWRlbnRpZmllciksIG1fcmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXIpOworICAg
IH0KIH0KIAogdm9pZCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHk6OnJlbGVhc2VSZW1vdGVS
ZXNvdXJjZShSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgcmVuZGVyaW5nUmVzb3VyY2VJZGVu
dGlmaWVyKQpAQCAtMTU5LDIxICsxNzIsNTYgQEAgdm9pZCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5k
UHJveHk6OmZsdXNoRGlzcGxheUxpc3RXYXNDb21taXR0ZWQoRGlzcGxheUxpc3Q6OkZsdXMKICAg
ICAgICAgZG93bmNhc3Q8VW5hY2NlbGVyYXRlZFJlbW90ZUltYWdlQnVmZmVyUHJveHk+KCppbWFn
ZUJ1ZmZlcikuY29tbWl0Rmx1c2hEaXNwbGF5TGlzdChmbHVzaElkZW50aWZpZXIpOwogfQogCi1E
aXNwbGF5TGlzdDo6SXRlbUJ1ZmZlckhhbmRsZSBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHk6
OmNyZWF0ZUl0ZW1CdWZmZXIoc2l6ZV90IGNhcGFjaXR5KQordm9pZCBSZW1vdGVSZW5kZXJpbmdC
YWNrZW5kUHJveHk6OnVwZGF0ZVJldXNhYmxlSGFuZGxlcygpCit7CisgICAgZm9yIChhdXRvIGlk
ZW50aWZpZXIgOiBtX2lkZW50aWZpZXJzT2ZIYW5kbGVzQXZhaWxhYmxlRm9yV3JpdGluZykgewor
ICAgICAgICBhdXRvKiBoYW5kbGUgPSBtX3NoYXJlZERpc3BsYXlMaXN0SGFuZGxlcy5nZXQoaWRl
bnRpZmllcik7CisgICAgICAgIGlmICghaGFuZGxlLT5yZXNldFdyaXRhYmxlT2Zmc2V0SWZQb3Nz
aWJsZSgpKQorICAgICAgICAgICAgY29udGludWU7CisKKyAgICAgICAgaWYgKG1faWRlbnRpZmll
cnNPZlJldXNhYmxlSGFuZGxlcy5jb250YWlucyhpZGVudGlmaWVyKSkKKyAgICAgICAgICAgIGNv
bnRpbnVlOworCisgICAgICAgIG1faWRlbnRpZmllcnNPZlJldXNhYmxlSGFuZGxlcy5hcHBlbmQo
aWRlbnRpZmllcik7CisgICAgfQorfQorCitEaXNwbGF5TGlzdDo6SXRlbUJ1ZmZlckhhbmRsZSBS
ZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHk6OmNyZWF0ZUl0ZW1CdWZmZXIoc2l6ZV90IGNhcGFj
aXR5LCBSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgcmVtb3RlUmVzb3VyY2VJZGVudGlmaWVy
KQogeworICAgIHVwZGF0ZVJldXNhYmxlSGFuZGxlcygpOworCisgICAgd2hpbGUgKCFtX2lkZW50
aWZpZXJzT2ZSZXVzYWJsZUhhbmRsZXMuaXNFbXB0eSgpKSB7CisgICAgICAgIGF1dG8gaWRlbnRp
ZmllciA9IG1faWRlbnRpZmllcnNPZlJldXNhYmxlSGFuZGxlcy5maXJzdCgpOworICAgICAgICBh
dXRvKiByZXVzYWJsZUhhbmRsZSA9IG1fc2hhcmVkRGlzcGxheUxpc3RIYW5kbGVzLmdldChpZGVu
dGlmaWVyKTsKKyAgICAgICAgUkVMRUFTRV9BU1NFUlRfV0lUSF9NRVNTQUdFKHJldXNhYmxlSGFu
ZGxlLCAiJXMgZmFpbGVkIHRvIGZpbmQgc2hhcmVkIGRpc3BsYXkgbGlzdCIsIF9fUFJFVFRZX0ZV
TkNUSU9OX18pOworCisgICAgICAgIGlmIChtX2lkZW50aWZpZXJzT2ZIYW5kbGVzQXZhaWxhYmxl
Rm9yV3JpdGluZy5jb250YWlucyhpZGVudGlmaWVyKSAmJiByZXVzYWJsZUhhbmRsZS0+YXZhaWxh
YmxlQ2FwYWNpdHkoKSA+PSBjYXBhY2l0eSkgeworICAgICAgICAgICAgbV9pZGVudGlmaWVyc09m
SGFuZGxlc0F2YWlsYWJsZUZvcldyaXRpbmcucmVtb3ZlKGlkZW50aWZpZXIpOworICAgICAgICAg
ICAgcmV0dXJuIHJldXNhYmxlSGFuZGxlLT5jcmVhdGVIYW5kbGUoKTsKKyAgICAgICAgfQorCisg
ICAgICAgIG1faWRlbnRpZmllcnNPZlJldXNhYmxlSGFuZGxlcy5yZW1vdmVGaXJzdCgpOworICAg
IH0KKwogICAgIHN0YXRpYyBjb25zdGV4cHIgc2l6ZV90IGRlZmF1bHRTaGFyZWRJdGVtQnVmZmVy
U2l6ZSA9IDEgPDwgMTY7CiAKLSAgICBhdXRvIHNoYXJlZE1lbW9yeSA9IFNoYXJlZE1lbW9yeTo6
YWxsb2NhdGUoc3RkOjptYXgoZGVmYXVsdFNoYXJlZEl0ZW1CdWZmZXJTaXplLCBjYXBhY2l0eSkp
OworICAgIGF1dG8gc2hhcmVkTWVtb3J5ID0gU2hhcmVkTWVtb3J5OjphbGxvY2F0ZShzdGQ6Om1h
eChkZWZhdWx0U2hhcmVkSXRlbUJ1ZmZlclNpemUsIGNhcGFjaXR5ICsgU2hhcmVkRGlzcGxheUxp
c3RIYW5kbGU6OnJlc2VydmVkQ2FwYWNpdHlBdFN0YXJ0KSk7CiAgICAgaWYgKCFzaGFyZWRNZW1v
cnkpCiAgICAgICAgIHJldHVybiB7IH07CiAKLSAgICBhdXRvIGlkZW50aWZpZXIgPSBEaXNwbGF5
TGlzdDo6SXRlbUJ1ZmZlcklkZW50aWZpZXI6OmdlbmVyYXRlKCk7CiAgICAgU2hhcmVkTWVtb3J5
OjpIYW5kbGUgc2hhcmVkTWVtb3J5SGFuZGxlOwotICAgIHNoYXJlZE1lbW9yeS0+Y3JlYXRlSGFu
ZGxlKHNoYXJlZE1lbW9yeUhhbmRsZSwgU2hhcmVkTWVtb3J5OjpQcm90ZWN0aW9uOjpSZWFkT25s
eSk7Ci0gICAgc2VuZChNZXNzYWdlczo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6RGlkQ3JlYXRl
U2hhcmVkSXRlbURhdGEoaWRlbnRpZmllciwgeyBXVEZNb3ZlKHNoYXJlZE1lbW9yeUhhbmRsZSks
IHNoYXJlZE1lbW9yeS0+c2l6ZSgpIH0pLCBtX3JlbmRlcmluZ0JhY2tlbmRJZGVudGlmaWVyKTsK
LSAgICBtX3NoYXJlZEl0ZW1CdWZmZXJzLnNldChpZGVudGlmaWVyLCBzaGFyZWRNZW1vcnkuY29w
eVJlZigpKTsKKyAgICBzaGFyZWRNZW1vcnktPmNyZWF0ZUhhbmRsZShzaGFyZWRNZW1vcnlIYW5k
bGUsIFNoYXJlZE1lbW9yeTo6UHJvdGVjdGlvbjo6UmVhZFdyaXRlKTsKKworICAgIGF1dG8gaWRl
bnRpZmllciA9IERpc3BsYXlMaXN0OjpJdGVtQnVmZmVySWRlbnRpZmllcjo6Z2VuZXJhdGUoKTsK
KyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpEaWRDcmVhdGVTaGFy
ZWREaXNwbGF5TGlzdEhhbmRsZShpZGVudGlmaWVyLCB7IFdURk1vdmUoc2hhcmVkTWVtb3J5SGFu
ZGxlKSwgc2hhcmVkTWVtb3J5LT5zaXplKCkgfSwgcmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyKSwg
bV9yZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllcik7CisKKyAgICBhdXRvIG5ld0hhbmRsZSA9IG1h
a2VVbmlxdWU8RGlzcGxheUxpc3RXcml0ZXJIYW5kbGU+KGlkZW50aWZpZXIsIHNoYXJlZE1lbW9y
eS5yZWxlYXNlTm9uTnVsbCgpKTsKKyAgICBhdXRvIGRpc3BsYXlMaXN0SGFuZGxlID0gbmV3SGFu
ZGxlLT5jcmVhdGVIYW5kbGUoKTsKKworICAgIG1faWRlbnRpZmllcnNPZlJldXNhYmxlSGFuZGxl
cy5hcHBlbmQoaWRlbnRpZmllcik7CisgICAgbV9zaGFyZWREaXNwbGF5TGlzdEhhbmRsZXMuc2V0
KGlkZW50aWZpZXIsIFdURk1vdmUobmV3SGFuZGxlKSk7CiAKLSAgICByZXR1cm4geyBpZGVudGlm
aWVyLCByZWludGVycHJldF9jYXN0PHVpbnQ4X3QqPihzaGFyZWRNZW1vcnktPmRhdGEoKSksIHNo
YXJlZE1lbW9yeS0+c2l6ZSgpIH07CisgICAgcmV0dXJuIGRpc3BsYXlMaXN0SGFuZGxlOwogfQog
CiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5LmggYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94
eS5oCmluZGV4IGE1NDJjODMzNWUwZTUzM2UwNTEzZTU3NjQyNjI0NWViYjc2NDFjZjkuLmM0ZjY3
MWViYTE4YzJjMTgxMWQ0NDU5OGYyMzIyYjEzYWEyNWJhZDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5
LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVSZW5k
ZXJpbmdCYWNrZW5kUHJveHkuaApAQCAtMzQsNiArMzQsNyBAQAogI2luY2x1ZGUgIlJlbmRlcmlu
Z0JhY2tlbmRJZGVudGlmaWVyLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9EaXNwbGF5TGlzdC5oPgog
I2luY2x1ZGUgPFdlYkNvcmUvUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyLmg+CisjaW5jbHVk
ZSA8d3RmL0RlcXVlLmg+CiAjaW5jbHVkZSA8d3RmL1dlYWtQdHIuaD4KIAogbmFtZXNwYWNlIFdl
YkNvcmUgewpAQCAtNTAsNiArNTEsOCBAQCBlbnVtIGNsYXNzIFJlbmRlcmluZ01vZGUgOiBib29s
OwogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAorY2xhc3MgRGlzcGxheUxpc3RXcml0ZXJIYW5kbGU7
CisKIGNsYXNzIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eQogICAgIDogcHVibGljIElQQzo6
TWVzc2FnZVNlbmRlcgogICAgICwgcHJpdmF0ZSBJUEM6Ok1lc3NhZ2VSZWNlaXZlcgpAQCAtNjAs
NyArNjMsNyBAQCBwdWJsaWM6CiAgICAgflJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eSgpOwog
CiAgICAgUmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5JiByZW1vdGVSZXNvdXJjZUNhY2hlUHJveHko
KSB7IHJldHVybiBtX3JlbW90ZVJlc291cmNlQ2FjaGVQcm94eTsgfQotICAgIFdlYkNvcmU6OkRp
c3BsYXlMaXN0OjpJdGVtQnVmZmVySGFuZGxlIGNyZWF0ZUl0ZW1CdWZmZXIoc2l6ZV90KTsKKyAg
ICBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbUJ1ZmZlckhhbmRsZSBjcmVhdGVJdGVtQnVmZmVy
KHNpemVfdCBjYXBhY2l0eSwgV2ViQ29yZTo6UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKTsK
IAogICAgIC8vIElQQzo6TWVzc2FnZVNlbmRlci4KICAgICBJUEM6OkNvbm5lY3Rpb24qIG1lc3Nh
Z2VTZW5kZXJDb25uZWN0aW9uKCkgY29uc3Qgb3ZlcnJpZGU7CkBAIC04MiwxMiArODUsMTYgQEAg
cHVibGljOgogcHJpdmF0ZToKICAgICBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkoKTsKIAor
ICAgIHZvaWQgdXBkYXRlUmV1c2FibGVIYW5kbGVzKCk7CisKICAgICAvLyBNZXNzYWdlcyB0byBi
ZSByZWNlaXZlZC4KICAgICB2b2lkIGltYWdlQnVmZmVyQmFja2VuZFdhc0NyZWF0ZWQoY29uc3Qg
V2ViQ29yZTo6RmxvYXRTaXplJiBsb2dpY2FsU2l6ZSwgY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYg
YmFja2VuZFNpemUsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwgV2ViQ29yZTo6Q29sb3JTcGFjZSwg
SW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxlLCBXZWJDb3JlOjpSZW5kZXJpbmdSZXNvdXJjZUlkZW50
aWZpZXIpOwogICAgIHZvaWQgZmx1c2hEaXNwbGF5TGlzdFdhc0NvbW1pdHRlZChXZWJDb3JlOjpE
aXNwbGF5TGlzdDo6Rmx1c2hJZGVudGlmaWVyLCBXZWJDb3JlOjpSZW5kZXJpbmdSZXNvdXJjZUlk
ZW50aWZpZXIpOwogCiAgICAgUmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5IG1fcmVtb3RlUmVzb3Vy
Y2VDYWNoZVByb3h5OwotICAgIEhhc2hNYXA8V2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1CdWZm
ZXJJZGVudGlmaWVyLCBSZWZQdHI8U2hhcmVkTWVtb3J5Pj4gbV9zaGFyZWRJdGVtQnVmZmVyczsK
KyAgICBIYXNoTWFwPFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtQnVmZmVySWRlbnRpZmllciwg
c3RkOjp1bmlxdWVfcHRyPERpc3BsYXlMaXN0V3JpdGVySGFuZGxlPj4gbV9zaGFyZWREaXNwbGF5
TGlzdEhhbmRsZXM7CisgICAgRGVxdWU8V2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1CdWZmZXJJ
ZGVudGlmaWVyPiBtX2lkZW50aWZpZXJzT2ZSZXVzYWJsZUhhbmRsZXM7CisgICAgSGFzaFNldDxX
ZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbUJ1ZmZlcklkZW50aWZpZXI+IG1faWRlbnRpZmllcnNP
ZkhhbmRsZXNBdmFpbGFibGVGb3JXcml0aW5nOwogICAgIFJlbmRlcmluZ0JhY2tlbmRJZGVudGlm
aWVyIG1fcmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXIgeyBSZW5kZXJpbmdCYWNrZW5kSWRlbnRp
Zmllcjo6Z2VuZXJhdGUoKSB9OwogfTsKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>413729</attachid>
            <date>2020-11-10 13:20:10 -0800</date>
            <delta_ts>2020-11-10 20:47:44 -0800</delta_ts>
            <desc>Use CheckedSize instead of Checked&lt;&gt;</desc>
            <filename>bug-218426-20201110132009.patch</filename>
            <type>text/plain</type>
            <size>63207</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY5NjQwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGMxYWQ2MTAyZDg0MTkyZDM2
MTMyNzIxODEzYTFjMGU4ZjBjMTVhM2IuLjVhZmRlZWRkMmQyN2YzYzgwOGMxZDZmNDNjZTVkNmUy
YzllMTAwM2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUzIEBACisyMDIwLTExLTEwICBXZW5zb24g
SHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAgICAgIFtDb25jdXJyZW50IGRp
c3BsYXkgbGlzdHNdIEFkZCBhbiBpbml0aWFsIGltcGxlbWVudGF0aW9uIG9mIGNvbmN1cnJlbnQg
ZGlzcGxheSBsaXN0IHJlbmRlcmluZworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MjE4NDI2CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS83MTE2NzIyMD4K
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIHBh
dGNoIGFkZHMgYSBmaXJzdC1jdXQgaW1wbGVtZW50YXRpb24gb2YgY29uY3VycmVudCBkaXNwbGF5
IGxpc3QgcmVuZGVyaW5nLCB3aGljaCBhbGxvd3MgdGhlIEdQVSBhbmQgd2ViCisgICAgICAgIHBy
b2Nlc3NlcyB0byByZWFkIGFuZCB3cml0ZSBkaXNwbGF5IGxpc3QgZGF0YSBhdCB0aGUgc2FtZSB0
aW1lLiBUbyBhY2hpZXZlIHRoaXMsIHdlIHJlbW92ZSB0aGUgcGxhY2Vob2xkZXIKKyAgICAgICAg
c2hhcmVkIG1lbW9yeSBkaXNwbGF5IGxpc3QgZW5jb2RpbmcgbWVjaGFuaXNtIHByZXZpb3VzbHkg
YWRkZWQgaW4gPHdlYmtpdC5vcmcvYi8yMTg0MDY+LCBhbmQgcmVwbGFjZSBpdCB3aXRoIGEKKyAg
ICAgICAgbmV3IG1vZGVsIGluIHdoaWNoIGEgd3JpdGVyIChpLmUuIHRoZSB3ZWIgcHJvY2Vzcykg
YW5kIGEgcmVhZGVyIChpLmUuIHRoZSBHUFUgcHJvY2Vzcykgc2hhcmUgYSBzZXQgb2YgcmV1c2Fi
bGUKKyAgICAgICAgc2hhcmVkIG1lbW9yeSBidWZmZXJzIHdoaWNoIGNvbnRhaW4gZGlzcGxheSBs
aXN0IGl0ZW0gZGF0YS4gQXMgdGhlIHdyaXRlciBhcHBlbmRzIGRhdGEgdG8gc2hhcmVkIG1lbW9y
eSwgaXQKKyAgICAgICAgaW5jcmVtZW50cyBhIGNvdW50ZXIgaW4gZWFjaCBzaGFyZWQgbWVtb3J5
IGJ1ZmZlciB0aGF0IHJlcHJlc2VudHMgdGhlIG51bWJlciBvZiBieXRlcyB0aGF0IHRoZSByZWFk
ZXIgaGFzIHlldCB0bworICAgICAgICByZWFkOyBhcyB0aGUgcmVhZGVyIHJlYWRzIGRpc3BsYXkg
bGlzdCBpdGVtcyBmcm9tIHNoYXJlZCBtZW1vcnksIGl0IGRlY3JlbWVudHMgdGhpcyBjb3VudGVy
LgorCisgICAgICAgIFRoaXMgcGF0Y2ggYWxzbyBpbXBsZW1lbnRzIGEgc2ltcGxlIHN0cmF0ZWd5
IGZvciByZXVzaW5nIHRoZXNlIHNoYXJlZCBpdGVtIGJ1ZmZlcnMuIFRoZSB3ZWIgcHJvY2VzcyBt
YWludGFpbnMgYQorICAgICAgICBxdWV1ZSBvZiByZXVzYWJsZSBidWZmZXJzOyB3aGVuIGRpc3Bs
YXkgbGlzdCBpdGVtcyBhcmUgYXBwZW5kZWQgYW5kIHRoZSBjdXJyZW50IHdyaXRhYmxlIGJ1ZmZl
ciBpcyBvdXQgb2YKKyAgICAgICAgY2FwYWNpdHksIHRoZSBkaXNwbGF5IGxpc3QgaXRlbSBidWZm
ZXIgY2FsbHMgb3V0IHRvIFdlYktpdDIgdmlhIGEgY2xpZW50IG1ldGhvZCB0byByZXF1ZXN0IG1v
cmUgc2hhcmVkIG1lbW9yeS4KKyAgICAgICAgSGVyZSwgdGhlIHdlYiBwcm9jZXNzIHRyYXZlcnNl
cyB0aGUgcXVldWUgb2YgcmV1c2FibGUgaXRlbSBidWZmZXJzIGluIHNlYXJjaCBvZiBhIGJ1ZmZl
ciB3aXRoIHN1ZmZpY2llbnQKKyAgICAgICAgY2FwYWNpdHk7IGlmIGZvdW5kLCB3ZSBoYW5kIHRo
aXMgYmFjayB0byBXZWJDb3JlIGFzIGFuIG9wYXF1ZSBgSXRlbUJ1ZmZlckhhbmRsZWA7IG90aGVy
d2lzZSwgd2UgYWxsb2NhdGUgYSBuZXcKKyAgICAgICAgcmV1c2FibGUgc2hhcmVkIG1lbW9yeSBi
dWZmZXIuIEl0ZW0gYnVmZmVycyB0aGF0IGhhdmUgYmVlbiB1c2VkIGJlY29tZSByZXVzYWJsZSBv
bmx5IGFmdGVyIHRoZXkgYXJlICgxKSBubworICAgICAgICBsb25nZXIgYmVpbmcgcmVhZCBmcm9t
IC0tIGkuZS4sIHRoZSBjb3VudGVyIHZhbHVlIGlzIDAsIGFuZCAoMikgdGhleSBhcmUgbm90IGFj
dGl2ZWx5IGJlaW5nIHdyaXR0ZW4gdG8uCisgICAgICAgIEJ1ZmZlcnMgdGhhdCBoYXZlIGJlZW4g
dXNlZCBhcmUgbGF6aWx5IHJlaW50cm9kdWNlZCBpbnRvIHRoZSByZXVzZSBxdWV1ZSB3aGVuIGEg
ZGlzcGxheSBsaXN0IHJlcXVlc3RzIGEgaGFuZGxlCisgICAgICAgIHRvIHdyaXRhYmxlIGl0ZW0g
YnVmZmVyIGRhdGEuCisKKyAgICAgICAgU2VlIGJlbG93IGZvciBtb3JlIGRldGFpbHMuCisKKyAg
ICAgICAgKiBHUFVQcm9jZXNzL2dyYXBoaWNzL0Rpc3BsYXlMaXN0UmVhZGVySGFuZGxlLmNwcDog
Q29waWVkIGZyb20gU291cmNlL1dlYktpdC9TaGFyZWQvU2hhcmVkRGlzcGxheUxpc3RIYW5kbGUu
Y3BwLgorICAgICAgICAoV2ViS2l0OjpEaXNwbGF5TGlzdFJlYWRlckhhbmRsZTo6YWR2YW5jZSk6
CisgICAgICAgIChXZWJLaXQ6OkRpc3BsYXlMaXN0UmVhZGVySGFuZGxlOjpkaXNwbGF5TGlzdEZv
clJlYWRpbmcgY29uc3QpOgorICAgICAgICAqIEdQVVByb2Nlc3MvZ3JhcGhpY3MvRGlzcGxheUxp
c3RSZWFkZXJIYW5kbGUuaDogQ29waWVkIGZyb20gU291cmNlL1dlYktpdC9TaGFyZWQvU2hhcmVk
RGlzcGxheUxpc3RIYW5kbGUuY3BwLgorICAgICAgICAoV2ViS2l0OjpEaXNwbGF5TGlzdFJlYWRl
ckhhbmRsZTo6RGlzcGxheUxpc3RSZWFkZXJIYW5kbGUpOgorCisgICAgICAgIEFkZCBhIG5ldyBo
ZWxwZXIgY2xhc3MgdG8gcmVwcmVzZW50IGEgc2hhcmVkIGRpc3BsYXkgbGlzdCBpdGVtIGJ1ZmZl
ciB0aGF0IHRoZSBHUFUgcHJvY2VzcyBjYW4gdXNlIHRvIGNvbnN1bWUKKyAgICAgICAgZGlzcGxh
eSBsaXN0IGl0ZW1zLiBBZHZhbmNpbmcgdGhlIGN1cnNvciBpbiBgRGlzcGxheUxpc3RSZWFkZXJI
YW5kbGVgIGRlY3JlbWVudHMgdGhlICJyZW1haW5pbmcgYnl0ZXMiIGNvdW50ZXI7CisgICAgICAg
IHRoZSBjbGFzcyBhbHNvIGhhcyBhIGhlbHBlciBtZXRob2QgZm9yIGNyZWF0aW5nIGEgbmV3IGBE
aXNwbGF5TGlzdGAgd2l0aCBhIGdpdmVuIG9mZnNldCBpbnRvIHRoZSBzaGFyZWQgYnVmZmVyLAor
ICAgICAgICBhcyB3ZWxsIHRoZSBudW1iZXIgb2YgYnl0ZXMgdG8gcmVhZC4KKworICAgICAgICAq
IEdQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlSW1hZ2VCdWZmZXIuaDoKKworICAgICAgICBIYW5k
bGUgdGhlIGBNZXRhQ29tbWFuZFN3aXRjaFRvYCBhbmQgYEZsdXNoQ29udGV4dGAgaXRlbXMgYnkg
KHJlc3BlY3RpdmVseSkgaW5mb3JtaW5nIHRoZSByZW5kZXJpbmcgYmFja2VuZAorICAgICAgICBh
Ym91dCB0aGUgbmV4dCBidWZmZXIgdG8gcmVhZCBmcm9tLCBhbmQgc2VuZGluZyBhICJmbHVzaCBj
b21taXR0ZWQiIElQQyBtZXNzYWdlIGJhY2sgdG8gdGhlIHdlYiBwcm9jZXNzLgorCisgICAgICAg
IChXZWJLaXQ6OlJlbW90ZUltYWdlQnVmZmVyOjpSZW1vdGVJbWFnZUJ1ZmZlcik6CisgICAgICAg
ICogR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kLmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6YXBwbHlEaXNwbGF5TGlzdHNGcm9t
SGFuZGxlKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6d2FrZVVw
QW5kQXBwbHlEaXNwbGF5TGlzdCk6CisKKyAgICAgICAgVGhpcyBpcyB0aGUgbWFpbiBsb29wIGlu
IHRoZSBHUFUgcHJvY2VzcyB0aGF0IGlzIHJlc3BvbnNpYmxlIGZvciBhcHBseWluZyBpbmNvbWlu
ZyBkaXNwbGF5IGxpc3QgaXRlbSBkYXRhLiBUaGlzCisgICAgICAgIElQQyBlbmRwb2ludCByZWNl
aXZlcyBpbmZvcm1hdGlvbiBhYm91dCB3aGVyZSB0byBzdGFydCAoaS5lLiBhbiBpdGVtIGJ1ZmZl
ciBJRCBhbmQgYW4gb2Zmc2V0IGludG8gc2hhcmVkIG1lbW9yeQorICAgICAgICBpbiB0aGF0IGJ1
ZmZlcikgYW5kIGJlZ2lucyByZWFkaW5nIHJhbmdlcyBvZiBkaXNwbGF5IGxpc3QgaXRlbSBkYXRh
IGluc2lkZSB0aGF0IGJ1ZmZlci4gQWZ0ZXIgaXQgaXMgZG9uZQorICAgICAgICBwcm9jZXNzaW5n
IGFsbCBvZiBpdHMgdW5yZWFkIGJ5dGVzLCBpdCB0aGVuIGNoZWNrcyB0aGUgdW5yZWFkIGJ5dGUg
Y291bnQgb25jZSBhZ2FpbiwgYW5kIGNvbnRpbnVlcyB0aGUgbG9vcCBpZgorICAgICAgICB0aGUg
d2ViIHByb2Nlc3MgaGFzIGFkdmFuY2VkIHRoaXMgY291bnQuCisKKyAgICAgICAgKFdlYktpdDo6
UmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6c2V0TmV4dEl0ZW1CdWZmZXJUb1JlYWQpOgorICAgICAg
ICAoV2ViS2l0OjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpkaWRDcmVhdGVTaGFyZWREaXNwbGF5
TGlzdEhhbmRsZSk6CisKKyAgICAgICAgQWRkIGxvZ2ljIHRvIGhhbmRsZSB0aGUgY2FzZSB3aGVy
ZSB3ZSByZWFjaGVkIHRoZSBlbmQgb2YgYW4gaXRlbSBidWZmZXIsIGJ1dCB0aGUgbmV4dCBidWZm
ZXIgaWRlbnRpZmllciBpcyBzdGlsbAorICAgICAgICB1bmtub3duIHRvIHVzIChzaW5jZSBpdCBp
cyBzdGlsbCAiaW4gdHJhbnNpdCIgdmlhIHRoZSBgRGlkQ3JlYXRlU2hhcmVkRGlzcGxheUxpc3RI
YW5kbGVgIElQQyBtZXNzYWdlKS4gSW4gdGhpcworICAgICAgICBjYXNlLCB3ZSByZW1lbWJlciB0
aGUgbmV4dCBidWZmZXIgaWRlbnRpZmllciBpbiBgbV9uZXh0SXRlbUJ1ZmZlclRvUmVhZGAsIGFu
ZCBleGl0IHRoZSBwcm9jZXNzaW5nIGxvb3AgaW5zaWRlCisgICAgICAgIGB3YWtlVXBBbmRBcHBs
eURpc3BsYXlMaXN0YC4gVXBvbiByZWNlaXZpbmcgdGhlIHNoYXJlZCBtZW1vcnkgaGFuZGxlIGlu
IGBkaWRDcmVhdGVTaGFyZWREaXNwbGF5TGlzdEhhbmRsZWAsIHdlCisgICAgICAgIHRoZW4gYXV0
b21hdGljYWxseSByZXN1bWUgZGlzcGxheSBsaXN0IHByb2Nlc3NpbmcsIHN0YXJ0aW5nIGZyb20g
dGhlIGJlZ2lubmluZyBvZiB0aGlzIG5ldyBidWZmZXIuCisKKyAgICAgICAgKFdlYktpdDo6UmVt
b3RlUmVuZGVyaW5nQmFja2VuZDo6YXBwbHlEaXNwbGF5TGlzdCk6IERlbGV0ZWQuCisgICAgICAg
IChXZWJLaXQ6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OnN1Ym1pdERpc3BsYXlMaXN0KTogRGVs
ZXRlZC4KKyAgICAgICAgKFdlYktpdDo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6Zmx1c2hEaXNw
bGF5TGlzdEFuZENvbW1pdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVJlbmRl
cmluZ0JhY2tlbmQ6OmRpZENyZWF0ZVNoYXJlZEl0ZW1EYXRhKTogRGVsZXRlZC4KKworICAgICAg
ICBXZSBkb24ndCBuZWVkIGFueSBvZiB0aGVzZSBtZXRob2RzIGFueW1vcmUsIG5vdyB0aGF0IHRo
ZXJlIGlzIG9ubHkgb25lIGNvZGVwYXRoIGZvciBwcm9jZXNzaW5nIGRpc3BsYXkgbGlzdAorICAg
ICAgICBpdGVtcy4gU2VlIGBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjp3YWtlVXBBbmRBcHBseURp
c3BsYXlMaXN0YCBhYm92ZS4gQWxzbywgcmVuYW1lIGBkaWRDcmVhdGVTaGFyZWRJdGVtRGF0YWAK
KyAgICAgICAgdG8gYGRpZENyZWF0ZVNoYXJlZERpc3BsYXlMaXN0SGFuZGxlYCAoYWxzbyBhYm92
ZSkuCisKKyAgICAgICAgKiBHUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tl
bmQuaDoKKyAgICAgICAgKiBHUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tl
bmQubWVzc2FnZXMuaW46CisgICAgICAgICogU2hhcmVkL1NoYXJlZERpc3BsYXlMaXN0SGFuZGxl
Lmg6CisgICAgICAgIChXZWJLaXQ6OlNoYXJlZERpc3BsYXlMaXN0SGFuZGxlOjpzaGFyZWRNZW1v
cnkpOgorICAgICAgICAoV2ViS2l0OjpTaGFyZWREaXNwbGF5TGlzdEhhbmRsZTo6c2hhcmVkTWVt
b3J5IGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6U2hhcmVkRGlzcGxheUxpc3RIYW5kbGU6Omlk
ZW50aWZpZXIgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpTaGFyZWREaXNwbGF5TGlzdEhhbmRs
ZTo6ZGF0YSBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OlNoYXJlZERpc3BsYXlMaXN0SGFuZGxl
Ojp1bnJlYWRCeXRlcyBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OlNoYXJlZERpc3BsYXlMaXN0
SGFuZGxlOjpMb2NrOjpMb2NrKToKKyAgICAgICAgKFdlYktpdDo6U2hhcmVkRGlzcGxheUxpc3RI
YW5kbGU6OkxvY2s6On5Mb2NrKToKKyAgICAgICAgKFdlYktpdDo6U2hhcmVkRGlzcGxheUxpc3RI
YW5kbGU6OlNoYXJlZERpc3BsYXlMaXN0SGFuZGxlKToKKyAgICAgICAgKFdlYktpdDo6U2hhcmVk
RGlzcGxheUxpc3RIYW5kbGU6OnVucmVhZEJ5dGVzSGFuZGxlKToKKyAgICAgICAgKFdlYktpdDo6
U2hhcmVkRGlzcGxheUxpc3RIYW5kbGU6OmF0b21pY0xvY2tWYWx1ZSk6CisgICAgICAgIChXZWJL
aXQ6OlNoYXJlZERpc3BsYXlMaXN0SGFuZGxlOjpzdHJ1Y3R1cmUpOgorICAgICAgICAoV2ViS2l0
OjpTaGFyZWREaXNwbGF5TGlzdEhhbmRsZTo6c3RydWN0dXJlIGNvbnN0KToKKyAgICAgICAgKFdl
YktpdDo6U2hhcmVkRGlzcGxheUxpc3RIYW5kbGU6OmVuY29kZSBjb25zdCk6IERlbGV0ZWQuCisg
ICAgICAgIChXZWJLaXQ6OlNoYXJlZERpc3BsYXlMaXN0SGFuZGxlOjpkZWNvZGUpOiBEZWxldGVk
LgorCisgICAgICAgIFJlcHVycG9zZSBgU2hhcmVkRGlzcGxheUxpc3RIYW5kbGVgIHRvIHNlcnZl
IGFzIGEgYmFzZSBjbGFzcyBmb3IgYm90aCBgRGlzcGxheUxpc3RSZWFkZXJIYW5kbGVgIGFuZAor
ICAgICAgICBgRGlzcGxheUxpc3RXcml0ZXJIYW5kbGVgLiBUaGlzIGJhc2UgY2xhc3MgaXMgYXdh
cmUgb2YgdGhlIG1lbW9yeSBsYXlvdXQgb2YgdGhlIGRpc3BsYXkgbGlzdCBpdGVtIGJ1ZmZlciBp
bgorICAgICAgICBzaGFyZWQgbWVtb3J5IChpbiBwYXJ0aWN1bGFyLCB0aGUgZmFjdCB0aGF0IHRo
ZSBmaXJzdCA4IGJ5dGVzIGFyZSB0aGUgYXRvbWljIGxvY2sgYW5kIHRoZSBuZXh0IDggYnl0ZXMg
Y29udGFpbgorICAgICAgICB0aGUgdW5yZWFkIGJ5dGUgY291bnRlcikuCisKKyAgICAgICAgVGhp
cyBhbHNvIGV4cG9zZXMgYSBoZWxwZXIgUkFJSSBjbGFzcywgYFNoYXJlZERpc3BsYXlMaXN0SGFu
ZGxlOjpMb2NrYCwgdGhhdCBpcyB1c2VkIHRvIGdyYWIgdGhlIGxvY2sgb24gYQorICAgICAgICBw
YXJ0aWN1bGFyIHNoYXJlZCBpdGVtIGJ1ZmZlciB3aGVuIHJlYWRpbmcgb3IgdXBkYXRpbmcgdGhl
IHVucmVhZCBieXRlcyBjb3VudGVyLgorCisgICAgICAgICogU291cmNlcy50eHQ6CisgICAgICAg
ICogV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogV2ViUHJvY2Vz
cy9HUFUvZ3JhcGhpY3MvRGlzcGxheUxpc3RXcml0ZXJIYW5kbGUuY3BwOiBBZGRlZC4KKyAgICAg
ICAgKFdlYktpdDo6RGlzcGxheUxpc3RXcml0ZXJIYW5kbGU6OmFkdmFuY2UpOgorICAgICAgICAo
V2ViS2l0OjpEaXNwbGF5TGlzdFdyaXRlckhhbmRsZTo6YXZhaWxhYmxlQ2FwYWNpdHkgY29uc3Qp
OgorICAgICAgICAoV2ViS2l0OjpEaXNwbGF5TGlzdFdyaXRlckhhbmRsZTo6Y3JlYXRlSGFuZGxl
IGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6RGlzcGxheUxpc3RXcml0ZXJIYW5kbGU6OnJlc2V0
V3JpdGFibGVPZmZzZXRJZlBvc3NpYmxlKToKKworICAgICAgICBUaGlzIGhlbHBlciBtZXRob2Qg
bW92ZXMgdGhlIHdyaXRhYmxlIG9mZnNldCAoc2VlIGJlbG93KSBiYWNrIHRvIHRoZSBzdGFydCBv
ZiB0aGUgYnVmZmVyIGlmIGl0IGlzIG5vdCBiZWluZyByZWFkCisgICAgICAgIGZyb20gYnkgdGhl
IEdQVSBwcm9jZXNzLgorCisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvRGlzcGxh
eUxpc3RXcml0ZXJIYW5kbGUuaDogUmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJLaXQvU2hhcmVkL1No
YXJlZERpc3BsYXlMaXN0SGFuZGxlLmNwcC4KKyAgICAgICAgKFdlYktpdDo6RGlzcGxheUxpc3RX
cml0ZXJIYW5kbGU6OkRpc3BsYXlMaXN0V3JpdGVySGFuZGxlKToKKyAgICAgICAgKFdlYktpdDo6
RGlzcGxheUxpc3RXcml0ZXJIYW5kbGU6OndyaXRhYmxlT2Zmc2V0IGNvbnN0KToKKworICAgICAg
ICBTaW1pbGFyIHRvIGBEaXNwbGF5TGlzdFJlYWRlckhhbmRsZWAsIGV4Y2VwdCB0aGF0IHRoaXMg
Y29udGFpbnMgbG9naWMgc3BlY2lmaWMgdG8gdGhlIHdlYiBwcm9jZXNzIGZvciB3cml0aW5nCisg
ICAgICAgIGRpc3BsYXkgbGlzdCBpdGVtcyBpbnRvIHNoYXJlZCBtZW1vcnkuIEFkdmFuY2luZyB0
aGUgY3Vyc29yIGluIGBEaXNwbGF5TGlzdFdyaXRlckhhbmRsZWAgaW5jcmVtZW50cyB0aGUgY291
bnRlci4KKyAgICAgICAgSXQgYWxzbyBpbmNyZW1lbnRzIHRoZSBgd3JpdGFibGVPZmZzZXRgIG9m
IHRoZSBoYW5kbGUsIHdoaWNoIHJlcHJlc2VudHMgdGhlIG1pbmltdW0gb2Zmc2V0IGludG8gdGhl
IHNoYXJlZAorICAgICAgICBidWZmZXIgdGhhdCBtYXkgY29udGFpbiBuZXdseSBhcHBlbmRlZCBk
aXNwbGF5IGxpc3QgaXRlbXMuCisKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9S
ZW1vdGVJbWFnZUJ1ZmZlclByb3h5Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvZ3JhcGhp
Y3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6UmVt
b3RlUmVuZGVyaW5nQmFja2VuZFByb3h5OjpzdWJtaXREaXNwbGF5TGlzdCk6CisgICAgICAgIChX
ZWJLaXQ6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eTo6dXBkYXRlUmV1c2FibGVIYW5kbGVz
KToKKworICAgICAgICBUaGlzIHByaXZhdGUgaGVscGVyIGl0ZXJhdGVzIHRoZSBzZXQgb2YgYnVm
ZmVycyB0aGF0IGFyZSBub3QgY3VycmVudGx5IGJlaW5nIHdyaXR0ZW4gdG8sIGFuZCBhZGRzIGVh
Y2ggb25lIHRvCisgICAgICAgIHRoZSByZXVzYWJsZSBidWZmZXIgcXVldWUgb25seSBpZiBpdHMg
d3JpdGFibGUgb2Zmc2V0IGlzIGF0IHRoZSBzdGFydC4KKworICAgICAgICAoV2ViS2l0OjpSZW1v
dGVSZW5kZXJpbmdCYWNrZW5kUHJveHk6OmNyZWF0ZUl0ZW1CdWZmZXIpOgorCisgICAgICAgIElt
cGxlbWVudHMgbG9naWMgdGhhdCBoYW5kcyBzaGFyZWQgaXRlbSBidWZmZXIgZGF0YSBoYW5kbGVz
IHRvIFdlYkNvcmUgZm9yIHdyaXRpbmcgZGlzcGxheSBsaXN0IGl0ZW1zLiBUaGlzIHdpbGwKKyAg
ICAgICAgdHJ5IHRvIHJldXNlIGFuIGl0ZW0gYnVmZmVyIGluIHRoZSByZXVzZSBxdWV1ZSwgaWYg
cG9zc2libGUsIGFuZCBmYWxsIGJhY2sgdG8gYWxsb2NhdGluZyBhIG5ldyBjaHVuayBvZiBzaGFy
ZWQKKyAgICAgICAgbWVtb3J5IGlmIG5vIHJldXNhYmxlIGJ1ZmZlciBpcyBmb3VuZCAob3IgdGhl
IGV4aXN0aW5nIGJ1ZmZlcnMgaGF2ZSBpbnN1ZmZpY2llbnQgY2FwYWNpdHkpLiBUaGUgZmFjdCB0
aGF0IHdlCisgICAgICAgIGl0ZXJhdGUgdGhyb3VnaCBlYWNoIHJldXNhYmxlIGJ1ZmZlciBpbiBv
cmRlciwgY29tYmluZWQgd2l0aCB0aGUgYWJvdmUgbG9naWMgaW4gYHVwZGF0ZVJldXNhYmxlSGFu
ZGxlc2AsIGVuc3VyZXMKKyAgICAgICAgdGhhdCBvbmNlIHdlIGJlZ2luIHdyaXRpbmcgdG8gYSBp
dGVtIGJ1ZmZlciwgd2Ugd2lsbCBjb250aW51ZSB1c2luZyB0aGF0IGl0ZW0gYnVmZmVyIHVudGls
IGl0IGV4aGF1c3RzIGF2YWlsYWJsZQorICAgICAgICBjYXBhY2l0eS4KKworICAgICAgICBUaGlz
IHByb3BlcnR5IGlzIGltcG9ydGFudCBiZWNhdXNlIGl0IGFsbG93cyB0aGUgR1BVIHByb2Nlc3Mg
dG8gc2ltcGx5IHN0YXJ0IHJlYWRpbmcgaXRlbSBkYXRhIGZyb20gYSBnaXZlbgorICAgICAgICBv
ZmZzZXQgYW5kIGJ1ZmZlciBJRCAoc3BlY2lmaWVkIGluIHRoZSBgV2FrZVVwQW5kQXBwbHlEaXNw
bGF5TGlzdGAgSVBDIG1lc3NhZ2UpLCBhbmQgc2VhbWxlc3NseSBjb250aW51ZQorICAgICAgICBy
ZWFkaW5nIGRhdGEgZXZlbiBhZnRlciBpdCBleGhhdXN0cyBhbGwgYXZhaWxhYmxlIGl0ZW0gZGF0
YSBpbiB0aGUgY3VycmVudCBidWZmZXIgYnkgY29udGludWluZyBmcm9tIHRoZSBzdGFydAorICAg
ICAgICBvZiB0aGUgaXRlbSBidWZmZXIgdGhhdCBjb250YWlucyB0aGUgbmV4dCBkaXNwbGF5IGxp
c3QgaXRlbXMgKHdoaWNoIHdlIGxlYXJuIGluIHRoZSBHUFUgcHJvY2VzcyBieSBlbmNvdW50ZXJp
bmcKKyAgICAgICAgYSBgTWV0YUNvbW1hbmRTd2l0Y2hUb2AgaXRlbSBhdCB0aGUgZW5kIG9mIHRo
ZSBwcmV2aW91cyBidWZmZXIpLgorCisgICAgICAgIEluICJzdGVhZHkgc3RhdGUiICh3aGVyZWlu
IGJvdGggcHJvY2Vzc2VzIGFyZSBjb25jdXJyZW50bHkgd3JpdGluZyBhbmQgcmVhZGluZyBpdGVt
cyBhcyBxdWlja2x5IGFzIHBvc3NpYmxlKSwKKyAgICAgICAgdGhpcyBtZWFucyB0aGF0IGFzIHRo
ZSB3ZWIgcHJvY2VzcyBpcyBidXN5IGZpbGxpbmcgdXAgZWFjaCBpdGVtIGJ1ZmZlciB3aXRoIGl0
ZW0gZGF0YSwgdGhlIEdQVSBwcm9jZXNzIGlzIGFsc28KKyAgICAgICAgYnVzeSBhcHBseWluZyBh
bGwgdGhlIGl0ZW0gZGF0YSBpbiBvbmUgYnVmZmVyIGFuZCBhdXRvbWF0aWNhbGx5IG1vdmluZyBv
biB0byB0aGUgbmV4dCBidWZmZXIgd2l0aCBubyBhZGRpdGlvbmFsCisgICAgICAgIElQQyBtZXNz
YWdlcyByZXF1aXJlZC4KKworICAgICAgICAoV2ViS2l0OjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5k
UHJveHk6OmZsdXNoRGlzcGxheUxpc3RBbmRDb21taXQpOiBEZWxldGVkLgorICAgICAgICAqIFdl
YlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS5oOgorCiAy
MDIwLTExLTEwICBXZW5zb24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgogCiAgICAg
ICAgIFJFR1JFU1NJT04gKHIyNjk1MjUpOiBNYW55IGxheW91dCB0ZXN0cyBjcmFzaCB3aGVuIHJ1
biB1bmRlciBBU2FuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhp
Y3MvRGlzcGxheUxpc3RSZWFkZXJIYW5kbGUuY3BwIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNz
L2dyYXBoaWNzL0Rpc3BsYXlMaXN0UmVhZGVySGFuZGxlLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41NDVlMzI2
ODRiNzU5NzFkNDFhY2RhZjg4NWFmODU5NDRkYTI3MWE1Ci0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL0Rpc3BsYXlMaXN0UmVhZGVySGFuZGxlLmNw
cApAQCAtMCwwICsxLDUwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2lu
Y2x1ZGUgIkRpc3BsYXlMaXN0UmVhZGVySGFuZGxlLmgiCisKK25hbWVzcGFjZSBXZWJLaXQgewor
dXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CisKK3ZvaWQgRGlzcGxheUxpc3RSZWFkZXJIYW5kbGU6
OmFkdmFuY2Uoc2l6ZV90IGFtb3VudCkKK3sKKyAgICBpZiAoTElLRUxZKGFtb3VudCA8PSB1bnJl
YWRCeXRlcygpKSkKKyAgICAgICAgdW5yZWFkQnl0ZXNIYW5kbGUoKSAtPSBhbW91bnQ7CisgICAg
ZWxzZSB7CisgICAgICAgIC8vIEZJWE1FOiBBZGQgYSBtZXNzYWdlIGNoZWNrIHRvIHRlcm1pbmF0
ZSB0aGUgd2ViIHByb2Nlc3MuCisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAg
ICB1bnJlYWRCeXRlc0hhbmRsZSgpID0gMDsKKyAgICB9Cit9CisKK3N0ZDo6dW5pcXVlX3B0cjxE
aXNwbGF5TGlzdDo6RGlzcGxheUxpc3Q+IERpc3BsYXlMaXN0UmVhZGVySGFuZGxlOjpkaXNwbGF5
TGlzdEZvclJlYWRpbmcoc2l6ZV90IG9mZnNldCwgc2l6ZV90IGNhcGFjaXR5LCBEaXNwbGF5TGlz
dDo6SXRlbUJ1ZmZlclJlYWRpbmdDbGllbnQmIGNsaWVudCkgY29uc3QKK3sKKyAgICBhdXRvIGRp
c3BsYXlMaXN0ID0gbWFrZVVuaXF1ZTxEaXNwbGF5TGlzdDo6RGlzcGxheUxpc3Q+KERpc3BsYXlM
aXN0OjpJdGVtQnVmZmVySGFuZGxlcyB7eyBpZGVudGlmaWVyKCksIGRhdGEoKSArIG9mZnNldCwg
Y2FwYWNpdHkgfX0pOworICAgIGRpc3BsYXlMaXN0LT5zZXRJdGVtQnVmZmVyQ2xpZW50KCZjbGll
bnQpOworICAgIHJldHVybiBkaXNwbGF5TGlzdDsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvRGlzcGxheUxp
c3RSZWFkZXJIYW5kbGUuaCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9EaXNw
bGF5TGlzdFJlYWRlckhhbmRsZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjVhMzQ3ZjE2MTM2OTY1NWRmZGZjOGJm
MjNhNTkwMzA0Zjc5NjYzZjcKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVBy
b2Nlc3MvZ3JhcGhpY3MvRGlzcGxheUxpc3RSZWFkZXJIYW5kbGUuaApAQCAtMCwwICsxLDQ1IEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJTaGFyZWREaXNwbGF5TGlz
dEhhbmRsZS5oIgorI2luY2x1ZGUgPHd0Zi9GYXN0TWFsbG9jLmg+CisKK25hbWVzcGFjZSBXZWJL
aXQgeworCitjbGFzcyBEaXNwbGF5TGlzdFJlYWRlckhhbmRsZSA6IHB1YmxpYyBTaGFyZWREaXNw
bGF5TGlzdEhhbmRsZSB7CisgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoRGlzcGxheUxpc3RSZWFk
ZXJIYW5kbGUpOyBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKK3B1YmxpYzoKKyAgICBEaXNwbGF5
TGlzdFJlYWRlckhhbmRsZShXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbUJ1ZmZlcklkZW50aWZp
ZXIgaWRlbnRpZmllciwgUmVmPFNoYXJlZE1lbW9yeT4mJiBzaGFyZWRNZW1vcnkpCisgICAgICAg
IDogU2hhcmVkRGlzcGxheUxpc3RIYW5kbGUoaWRlbnRpZmllciwgV1RGTW92ZShzaGFyZWRNZW1v
cnkpKQorICAgIHsKKyAgICB9CisKKyAgICB2b2lkIGFkdmFuY2Uoc2l6ZV90IGFtb3VudCkgb3Zl
cnJpZGU7CisgICAgc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEaXNwbGF5
TGlzdD4gZGlzcGxheUxpc3RGb3JSZWFkaW5nKHNpemVfdCBvZmZzZXQsIHNpemVfdCBjYXBhY2l0
eSwgV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1CdWZmZXJSZWFkaW5nQ2xpZW50JikgY29uc3Q7
Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
R1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVJbWFnZUJ1ZmZlci5oIGIvU291cmNlL1dlYktpdC9H
UFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUltYWdlQnVmZmVyLmgKaW5kZXggNjRiMWU2YmRhZTVl
Y2JmNjMwOGViNzM1NGIzMTQzOTg5MTM3MTIyNS4uM2RiYWFmOWYyZWM2YmQxMTI3ZDUxYzExN2Uw
YzFjNzA1NmNkMjVkMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBo
aWNzL1JlbW90ZUltYWdlQnVmZmVyLmgKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dy
YXBoaWNzL1JlbW90ZUltYWdlQnVmZmVyLmgKQEAgLTUyLDYgKzUyLDcgQEAgcHVibGljOgogICAg
IFJlbW90ZUltYWdlQnVmZmVyKHN0ZDo6dW5pcXVlX3B0cjxCYWNrZW5kVHlwZT4mJiBiYWNrZW5k
LCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kJiByZW1vdGVSZW5kZXJpbmdCYWNrZW5kLCBXZWJDb3Jl
OjpSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVy
KQogICAgICAgICA6IEJhc2VDb25jcmV0ZUltYWdlQnVmZmVyKFdURk1vdmUoYmFja2VuZCksIHJl
bmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcikKICAgICAgICAgLCBtX3JlbW90ZVJlbmRlcmluZ0Jh
Y2tlbmQocmVtb3RlUmVuZGVyaW5nQmFja2VuZCkKKyAgICAgICAgLCBtX3JlbmRlcmluZ1Jlc291
cmNlSWRlbnRpZmllcihyZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpCiAgICAgewogICAgICAg
ICBtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmQuaW1hZ2VCdWZmZXJCYWNrZW5kV2FzQ3JlYXRlZCht
X2JhY2tlbmQtPmxvZ2ljYWxTaXplKCksIG1fYmFja2VuZC0+YmFja2VuZFNpemUoKSwgbV9iYWNr
ZW5kLT5yZXNvbHV0aW9uU2NhbGUoKSwgbV9iYWNrZW5kLT5jb2xvclNwYWNlKCksIG1fYmFja2Vu
ZC0+Y3JlYXRlSW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxlKCksIHJlbmRlcmluZ1Jlc291cmNlSWRl
bnRpZmllcik7CiAgICAgfQpAQCAtODMsMTIgKzg0LDE1IEBAIHByaXZhdGU6CiAgICAgICAgIH0K
IAogICAgICAgICBpZiAoaXRlbS5pczxXZWJDb3JlOjpEaXNwbGF5TGlzdDo6Rmx1c2hDb250ZXh0
PigpKSB7Ci0gICAgICAgICAgICAvLyBGSVhNRTogTm90IGltcGxlbWVudGVkIHlldC4KKyAgICAg
ICAgICAgIEJhc2VDb25jcmV0ZUltYWdlQnVmZmVyOjpmbHVzaENvbnRleHQoKTsKKyAgICAgICAg
ICAgIGF1dG8gaWRlbnRpZmllciA9IGl0ZW0uZ2V0PFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpGbHVz
aENvbnRleHQ+KCkuaWRlbnRpZmllcigpOworICAgICAgICAgICAgbV9yZW1vdGVSZW5kZXJpbmdC
YWNrZW5kLmZsdXNoRGlzcGxheUxpc3RXYXNDb21taXR0ZWQoaWRlbnRpZmllciwgbV9yZW5kZXJp
bmdSZXNvdXJjZUlkZW50aWZpZXIpOwogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAg
IH0KIAogICAgICAgICBpZiAoaXRlbS5pczxXZWJDb3JlOjpEaXNwbGF5TGlzdDo6TWV0YUNvbW1h
bmRTd2l0Y2hUbz4oKSkgewotICAgICAgICAgICAgLy8gRklYTUU6IE5vdCBpbXBsZW1lbnRlZCB5
ZXQuCisgICAgICAgICAgICBhdXRvIG5leHRCdWZmZXJJZGVudGlmaWVyID0gaXRlbS5nZXQ8V2Vi
Q29yZTo6RGlzcGxheUxpc3Q6Ok1ldGFDb21tYW5kU3dpdGNoVG8+KCkuaWRlbnRpZmllcigpOwor
ICAgICAgICAgICAgbV9yZW1vdGVSZW5kZXJpbmdCYWNrZW5kLnNldE5leHRJdGVtQnVmZmVyVG9S
ZWFkKG5leHRCdWZmZXJJZGVudGlmaWVyKTsKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAg
ICAgICB9CiAKQEAgLTk2LDYgKzEwMCw3IEBAIHByaXZhdGU6CiAgICAgfQogCiAgICAgUmVtb3Rl
UmVuZGVyaW5nQmFja2VuZCYgbV9yZW1vdGVSZW5kZXJpbmdCYWNrZW5kOworICAgIFdlYkNvcmU6
OlJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciBtX3JlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmll
cjsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQuY3BwIGIvU291cmNl
L1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQuY3BwCmlu
ZGV4IGQyMzdhNjNiODg2OTY0MjFiYjlhMjU3ZWY5ZGIyMTdjZmU5ZjljZjguLjI1MzFiZjlhM2Q3
Y2M3NDY1ZjFlNDIxZmFiYzdmYTY2OThkMzVkMDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
R1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5jcHAK
QEAgLTI4LDEwICsyOCwxMiBAQAogCiAjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKQogCisjaW5jbHVk
ZSAiRGlzcGxheUxpc3RSZWFkZXJIYW5kbGUuaCIKICNpbmNsdWRlICJHUFVDb25uZWN0aW9uVG9X
ZWJQcm9jZXNzLmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1SZW1vdGVJbWFnZUJ1ZmZlci5oIgogI2lu
Y2x1ZGUgIlJlbW90ZVJlbmRlcmluZ0JhY2tlbmRNZXNzYWdlcy5oIgogI2luY2x1ZGUgIlJlbW90
ZVJlbmRlcmluZ0JhY2tlbmRQcm94eU1lc3NhZ2VzLmgiCisjaW5jbHVkZSA8d3RmL0NoZWNrZWRB
cml0aG1ldGljLmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogdXNpbmcgbmFtZXNwYWNlIFdlYkNv
cmU7CkBAIC0xMjQsNDQgKzEyNiw4NyBAQCB2b2lkIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OmNy
ZWF0ZUltYWdlQnVmZmVyKGNvbnN0IEZsb2F0U2l6ZSYgbG9naWNhbFNpemUsIFJlbgogICAgIG1f
cmVtb3RlUmVzb3VyY2VDYWNoZS5jYWNoZUltYWdlQnVmZmVyKG1ha2VSZWYoKmltYWdlQnVmZmVy
KSk7CiB9CiAKLXZvaWQgUmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6YXBwbHlEaXNwbGF5TGlzdChj
b25zdCBTaGFyZWREaXNwbGF5TGlzdEhhbmRsZSYgaGFuZGxlLCBSZW5kZXJpbmdSZXNvdXJjZUlk
ZW50aWZpZXIgcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyLCBTaG91bGRGbHVzaENvbnRleHQg
Zmx1c2hDb250ZXh0KQordm9pZCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjphcHBseURpc3BsYXlM
aXN0c0Zyb21IYW5kbGUoSW1hZ2VCdWZmZXImIGRlc3RpbmF0aW9uLCBEaXNwbGF5TGlzdFJlYWRl
ckhhbmRsZSYgaGFuZGxlLCBzaXplX3QgaW5pdGlhbE9mZnNldCkKIHsKLSAgICBWZWN0b3I8UmVm
PFNoYXJlZE1lbW9yeT4+IHJlbW92ZWRJdGVtQnVmZmVyczsKLSAgICBhdXRvIGRpc3BsYXlMaXN0
ID0gaGFuZGxlLmNyZWF0ZURpc3BsYXlMaXN0KFsmXSAoRGlzcGxheUxpc3Q6Okl0ZW1CdWZmZXJJ
ZGVudGlmaWVyIGlkZW50aWZpZXIpIC0+IHVpbnQ4X3QqIHsKLSAgICAgICAgaWYgKGF1dG8gc2hh
cmVkTWVtb3J5ID0gbV9zaGFyZWRJdGVtQnVmZmVycy50YWtlKGlkZW50aWZpZXIpKSB7Ci0gICAg
ICAgICAgICByZW1vdmVkSXRlbUJ1ZmZlcnMuYXBwZW5kKCpzaGFyZWRNZW1vcnkpOwotICAgICAg
ICAgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8dWludDhfdCo+KHNoYXJlZE1lbW9yeS0+ZGF0
YSgpKTsKKyAgICBzaXplX3Qgb2Zmc2V0ID0gaW5pdGlhbE9mZnNldDsKKyAgICBzaXplX3Qgc2l6
ZVRvUmVhZCA9IDA7CisKKyAgICB3aGlsZSAoIXNpemVUb1JlYWQpIHsKKyAgICAgICAgYXV0byBs
b2NrZXIgPSBTaGFyZWREaXNwbGF5TGlzdEhhbmRsZTo6TG9jayB7IGhhbmRsZSB9OworICAgICAg
ICBzaXplVG9SZWFkID0gaGFuZGxlLnVucmVhZEJ5dGVzKCk7CisgICAgfQorCisgICAgd2hpbGUg
KHNpemVUb1JlYWQpIHsKKyAgICAgICAgYXV0byBkaXNwbGF5TGlzdCA9IGhhbmRsZS5kaXNwbGF5
TGlzdEZvclJlYWRpbmcob2Zmc2V0LCBzaXplVG9SZWFkLCAqdGhpcyk7CisgICAgICAgIGlmIChV
TkxJS0VMWSghZGlzcGxheUxpc3QpKSB7CisgICAgICAgICAgICAvLyBGSVhNRTogQWRkIGEgbWVz
c2FnZSBjaGVjayB0byB0ZXJtaW5hdGUgdGhlIHdlYiBwcm9jZXNzLgorICAgICAgICAgICAgQVNT
RVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAg
ICAgICBkZXN0aW5hdGlvbi5zdWJtaXREaXNwbGF5TGlzdCgqZGlzcGxheUxpc3QpOworCisgICAg
ICAgIENoZWNrZWRTaXplIGNoZWNrZWRPZmZzZXQgPSBvZmZzZXQ7CisgICAgICAgIGNoZWNrZWRP
ZmZzZXQgKz0gc2l6ZVRvUmVhZDsKKyAgICAgICAgaWYgKFVOTElLRUxZKGNoZWNrZWRPZmZzZXQu
aGFzT3ZlcmZsb3dlZCgpKSkgeworICAgICAgICAgICAgLy8gRklYTUU6IEFkZCBhIG1lc3NhZ2Ug
Y2hlY2sgdG8gdGVybWluYXRlIHRoZSB3ZWIgcHJvY2Vzcy4KKyAgICAgICAgICAgIEFTU0VSVF9O
T1RfUkVBQ0hFRCgpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAg
b2Zmc2V0ID0gY2hlY2tlZE9mZnNldC51bnNhZmVHZXQoKTsKKworICAgICAgICBpZiAoVU5MSUtF
TFkob2Zmc2V0ID4gaGFuZGxlLnNoYXJlZE1lbW9yeSgpLnNpemUoKSkpIHsKKyAgICAgICAgICAg
IC8vIEZJWE1FOiBBZGQgYSBtZXNzYWdlIGNoZWNrIHRvIHRlcm1pbmF0ZSB0aGUgd2ViIHByb2Nl
c3MuCisgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgICAgIHJldHVy
bjsKICAgICAgICAgfQotICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICB9KTsKIAotICAgIGlm
ICghZGlzcGxheUxpc3QpIHsKKyAgICAgICAgYXV0byBsb2NrZXIgPSBTaGFyZWREaXNwbGF5TGlz
dEhhbmRsZTo6TG9jayB7IGhhbmRsZSB9OworICAgICAgICBoYW5kbGUuYWR2YW5jZShzaXplVG9S
ZWFkKTsKKyAgICAgICAgc2l6ZVRvUmVhZCA9IGhhbmRsZS51bnJlYWRCeXRlcygpOworICAgIH0K
K30KKwordm9pZCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjp3YWtlVXBBbmRBcHBseURpc3BsYXlM
aXN0KFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtQnVmZmVySWRlbnRpZmllciBpbml0aWFsSWRl
bnRpZmllciwgdWludDY0X3QgaW5pdGlhbE9mZnNldCwgUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlm
aWVyIGRlc3RpbmF0aW9uQnVmZmVySWRlbnRpZmllcikKK3sKKyAgICBhdXRvIGltYWdlQnVmZmVy
ID0gbV9yZW1vdGVSZXNvdXJjZUNhY2hlLmNhY2hlZEltYWdlQnVmZmVyKGRlc3RpbmF0aW9uQnVm
ZmVySWRlbnRpZmllcik7CisgICAgaWYgKFVOTElLRUxZKCFpbWFnZUJ1ZmZlcikpIHsKICAgICAg
ICAgLy8gRklYTUU6IEFkZCBhIG1lc3NhZ2UgY2hlY2sgdG8gdGVybWluYXRlIHRoZSB3ZWIgcHJv
Y2Vzcy4KKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAgIHJldHVybjsKICAg
ICB9CiAKLSAgICBhdXRvIGltYWdlQnVmZmVyID0gbV9yZW1vdGVSZXNvdXJjZUNhY2hlLmNhY2hl
ZEltYWdlQnVmZmVyKHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcik7Ci0gICAgaWYgKCFpbWFn
ZUJ1ZmZlcikgeworICAgIGF1dG8gaW5pdGlhbEhhbmRsZSA9IG1fc2hhcmVkRGlzcGxheUxpc3RI
YW5kbGVzLmdldChpbml0aWFsSWRlbnRpZmllcik7CisgICAgaWYgKFVOTElLRUxZKCFpbml0aWFs
SGFuZGxlKSkgewogICAgICAgICAvLyBGSVhNRTogQWRkIGEgbWVzc2FnZSBjaGVjayB0byB0ZXJt
aW5hdGUgdGhlIHdlYiBwcm9jZXNzLgorICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAg
ICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIGRpc3BsYXlMaXN0LT5zZXRJdGVtQnVmZmVyQ2xp
ZW50KHRoaXMpOwotICAgIGltYWdlQnVmZmVyLT5zdWJtaXREaXNwbGF5TGlzdCgqZGlzcGxheUxp
c3QpOwotCi0gICAgaWYgKGZsdXNoQ29udGV4dCA9PSBTaG91bGRGbHVzaENvbnRleHQ6OlllcykK
LSAgICAgICAgaW1hZ2VCdWZmZXItPmZsdXNoQ29udGV4dCgpOwotfQorICAgIGFwcGx5RGlzcGxh
eUxpc3RzRnJvbUhhbmRsZSgqaW1hZ2VCdWZmZXIsICppbml0aWFsSGFuZGxlLCBpbml0aWFsT2Zm
c2V0KTsKIAotdm9pZCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpzdWJtaXREaXNwbGF5TGlzdChj
b25zdCBTaGFyZWREaXNwbGF5TGlzdEhhbmRsZSYgaGFuZGxlLCBSZW5kZXJpbmdSZXNvdXJjZUlk
ZW50aWZpZXIgcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKQotewotICAgIGFwcGx5RGlzcGxh
eUxpc3QoaGFuZGxlLCByZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIsIFNob3VsZEZsdXNoQ29u
dGV4dDo6Tm8pOworICAgIHdoaWxlIChtX25leHRJdGVtQnVmZmVyVG9SZWFkKSB7CisgICAgICAg
IGF1dG8gbmV4dEhhbmRsZSA9IG1fc2hhcmVkRGlzcGxheUxpc3RIYW5kbGVzLmdldChtX25leHRJ
dGVtQnVmZmVyVG9SZWFkKTsKKyAgICAgICAgaWYgKCFuZXh0SGFuZGxlKSB7CisgICAgICAgICAg
ICAvLyBJZiB0aGUgaGFuZGxlIGlkZW50aWZpZXIgaXMgY3VycmVudGx5IHVua25vd24sIHdhaXQg
dW50aWwgdGhlIEdQVSBwcm9jZXNzIHJlY2VpdmVzIGFuCisgICAgICAgICAgICAvLyBJUEMgbWVz
c2FnZSB3aXRoIGEgc2hhcmVkIG1lbW9yeSBoYW5kbGUgdG8gdGhlIG5leHQgaXRlbSBidWZmZXIu
CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgICAgICAvLyBPdGhlcndpc2UsIGNv
bnRpbnVlIHJlYWRpbmcgdGhlIG5leHQgZGlzcGxheSBsaXN0IGl0ZW0gYnVmZmVyIGZyb20gdGhl
IHN0YXJ0LgorICAgICAgICBtX25leHRJdGVtQnVmZmVyVG9SZWFkID0geyB9OworICAgICAgICBh
cHBseURpc3BsYXlMaXN0c0Zyb21IYW5kbGUoKmltYWdlQnVmZmVyLCAqbmV4dEhhbmRsZSwgU2hh
cmVkRGlzcGxheUxpc3RIYW5kbGU6OnJlc2VydmVkQ2FwYWNpdHlBdFN0YXJ0KTsKKyAgICB9CiB9
CiAKLXZvaWQgUmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6Zmx1c2hEaXNwbGF5TGlzdEFuZENvbW1p
dChjb25zdCBTaGFyZWREaXNwbGF5TGlzdEhhbmRsZSYgaGFuZGxlLCBEaXNwbGF5TGlzdDo6Rmx1
c2hJZGVudGlmaWVyIGZsdXNoSWRlbnRpZmllciwgUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVy
IHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcikKK3ZvaWQgUmVtb3RlUmVuZGVyaW5nQmFja2Vu
ZDo6c2V0TmV4dEl0ZW1CdWZmZXJUb1JlYWQoV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1CdWZm
ZXJJZGVudGlmaWVyIGlkZW50aWZpZXIpCiB7Ci0gICAgYXBwbHlEaXNwbGF5TGlzdChoYW5kbGUs
IHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciwgU2hvdWxkRmx1c2hDb250ZXh0OjpZZXMpOwot
ICAgIGZsdXNoRGlzcGxheUxpc3RXYXNDb21taXR0ZWQoZmx1c2hJZGVudGlmaWVyLCByZW5kZXJp
bmdSZXNvdXJjZUlkZW50aWZpZXIpOworICAgIGlmIChVTkxJS0VMWShtX25leHRJdGVtQnVmZmVy
VG9SZWFkKSkgeworICAgICAgICAvLyBGSVhNRTogQWRkIGEgbWVzc2FnZSBjaGVjayB0byB0ZXJt
aW5hdGUgdGhlIHdlYiBwcm9jZXNzLgorICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAg
ICAgICAgcmV0dXJuOworICAgIH0KKyAgICBtX25leHRJdGVtQnVmZmVyVG9SZWFkID0gaWRlbnRp
ZmllcjsKIH0KIAogdm9pZCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpnZXRJbWFnZURhdGEoQWxw
aGFQcmVtdWx0aXBsaWNhdGlvbiBvdXRwdXRGb3JtYXQsIEludFJlY3Qgc3JjUmVjdCwgUmVuZGVy
aW5nUmVzb3VyY2VJZGVudGlmaWVyIHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChJUEM6OkltYWdlRGF0YVJlZmVyZW5jZSYmKT4mJiBjb21wbGV0aW9u
SGFuZGxlcikKQEAgLTE3NywxMCArMjIyLDE1IEBAIHZvaWQgUmVtb3RlUmVuZGVyaW5nQmFja2Vu
ZDo6cmVsZWFzZVJlbW90ZVJlc291cmNlKFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciByCiAg
ICAgbV9yZW1vdGVSZXNvdXJjZUNhY2hlLnJlbGVhc2VSZW1vdGVSZXNvdXJjZShyZW5kZXJpbmdS
ZXNvdXJjZUlkZW50aWZpZXIpOwogfQogCi12b2lkIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OmRp
ZENyZWF0ZVNoYXJlZEl0ZW1EYXRhKERpc3BsYXlMaXN0OjpJdGVtQnVmZmVySWRlbnRpZmllciBp
ZGVudGlmaWVyLCBjb25zdCBTaGFyZWRNZW1vcnk6OklQQ0hhbmRsZSYgaGFuZGxlKQordm9pZCBS
ZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpkaWRDcmVhdGVTaGFyZWREaXNwbGF5TGlzdEhhbmRsZShE
aXNwbGF5TGlzdDo6SXRlbUJ1ZmZlcklkZW50aWZpZXIgaWRlbnRpZmllciwgY29uc3QgU2hhcmVk
TWVtb3J5OjpJUENIYW5kbGUmIGhhbmRsZSwgUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyIGRl
c3RpbmF0aW9uQnVmZmVySWRlbnRpZmllcikKIHsKLSAgICBpZiAoYXV0byBzaGFyZWRNZW1vcnkg
PSBTaGFyZWRNZW1vcnk6Om1hcChoYW5kbGUuaGFuZGxlLCBTaGFyZWRNZW1vcnk6OlByb3RlY3Rp
b246OlJlYWRPbmx5KSkKLSAgICAgICAgbV9zaGFyZWRJdGVtQnVmZmVycy5zZXQoaWRlbnRpZmll
ciwgV1RGTW92ZShzaGFyZWRNZW1vcnkpKTsKKyAgICBpZiAoYXV0byBzaGFyZWRNZW1vcnkgPSBT
aGFyZWRNZW1vcnk6Om1hcChoYW5kbGUuaGFuZGxlLCBTaGFyZWRNZW1vcnk6OlByb3RlY3Rpb246
OlJlYWRXcml0ZSkpCisgICAgICAgIG1fc2hhcmVkRGlzcGxheUxpc3RIYW5kbGVzLnNldChpZGVu
dGlmaWVyLCBtYWtlVW5pcXVlPERpc3BsYXlMaXN0UmVhZGVySGFuZGxlPihpZGVudGlmaWVyLCBz
aGFyZWRNZW1vcnkucmVsZWFzZU5vbk51bGwoKSkpOworCisgICAgaWYgKG1fbmV4dEl0ZW1CdWZm
ZXJUb1JlYWQgPT0gaWRlbnRpZmllcikgeworICAgICAgICBtX25leHRJdGVtQnVmZmVyVG9SZWFk
ID0geyB9OworICAgICAgICB3YWtlVXBBbmRBcHBseURpc3BsYXlMaXN0KGlkZW50aWZpZXIsIFNo
YXJlZERpc3BsYXlMaXN0SGFuZGxlOjpyZXNlcnZlZENhcGFjaXR5QXRTdGFydCwgZGVzdGluYXRp
b25CdWZmZXJJZGVudGlmaWVyKTsKKyAgICB9CiB9CiAKIE9wdGlvbmFsPERpc3BsYXlMaXN0OjpJ
dGVtSGFuZGxlPiBXQVJOX1VOVVNFRF9SRVRVUk4gUmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6ZGVj
b2RlSXRlbShjb25zdCB1aW50OF90KiBkYXRhLCBzaXplX3QgbGVuZ3RoLCBEaXNwbGF5TGlzdDo6
SXRlbVR5cGUgdHlwZSwgdWludDhfdCogaGFuZGxlTG9jYXRpb24pCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5oIGIv
U291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQu
aAppbmRleCA3YWM5NjIwMTAzZTU3YzA3YmIyZWVlMzNlYmVmYjJjNDVmMDA3ZGQxLi43NTMyOWZh
MTVhMzE4YTA2M2M0MWJlMGE5Y2MzMzJiM2I4ZTRiZTQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kLmgK
QEAgLTM0LDcgKzM0LDYgQEAKICNpbmNsdWRlICJNZXNzYWdlU2VuZGVyLmgiCiAjaW5jbHVkZSAi
UmVtb3RlUmVzb3VyY2VDYWNoZS5oIgogI2luY2x1ZGUgIlJlbmRlcmluZ0JhY2tlbmRJZGVudGlm
aWVyLmgiCi0jaW5jbHVkZSAiU2hhcmVkRGlzcGxheUxpc3RIYW5kbGUuaCIKICNpbmNsdWRlIDxX
ZWJDb3JlL0NvbG9yU3BhY2UuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0Rpc3BsYXlMaXN0Lmg+CiAj
aW5jbHVkZSA8V2ViQ29yZS9EaXNwbGF5TGlzdEl0ZW1zLmg+CkBAIC01Miw2ICs1MSw3IEBAIGVu
dW0gY2xhc3MgUmVuZGVyaW5nTW9kZSA6IGJvb2w7CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCitj
bGFzcyBEaXNwbGF5TGlzdFJlYWRlckhhbmRsZTsKIGNsYXNzIEdQVUNvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3M7CiAKIGNsYXNzIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQKQEAgLTcyLDEyICs3MiwxMSBA
QCBwdWJsaWM6CiAgICAgdm9pZCBpbWFnZUJ1ZmZlckJhY2tlbmRXYXNDcmVhdGVkKGNvbnN0IFdl
YkNvcmU6OkZsb2F0U2l6ZSYgbG9naWNhbFNpemUsIGNvbnN0IFdlYkNvcmU6OkludFNpemUmIGJh
Y2tlbmRTaXplLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIFdlYkNvcmU6OkNvbG9yU3BhY2UsIElt
YWdlQnVmZmVyQmFja2VuZEhhbmRsZSwgV2ViQ29yZTo6UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlm
aWVyKTsKICAgICB2b2lkIGZsdXNoRGlzcGxheUxpc3RXYXNDb21taXR0ZWQoV2ViQ29yZTo6RGlz
cGxheUxpc3Q6OkZsdXNoSWRlbnRpZmllciwgV2ViQ29yZTo6UmVuZGVyaW5nUmVzb3VyY2VJZGVu
dGlmaWVyKTsKIAorICAgIHZvaWQgc2V0TmV4dEl0ZW1CdWZmZXJUb1JlYWQoV2ViQ29yZTo6RGlz
cGxheUxpc3Q6Okl0ZW1CdWZmZXJJZGVudGlmaWVyKTsKKwogcHJpdmF0ZToKICAgICBSZW1vdGVS
ZW5kZXJpbmdCYWNrZW5kKEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MmLCBSZW5kZXJpbmdCYWNr
ZW5kSWRlbnRpZmllcik7CiAKLSAgICBlbnVtIGNsYXNzIFNob3VsZEZsdXNoQ29udGV4dCA6IGJv
b2wgeyBObywgWWVzIH07Ci0gICAgdm9pZCBhcHBseURpc3BsYXlMaXN0KGNvbnN0IFNoYXJlZERp
c3BsYXlMaXN0SGFuZGxlJiwgV2ViQ29yZTo6UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyLCBT
aG91bGRGbHVzaENvbnRleHQpOwotCiAgICAgT3B0aW9uYWw8V2ViQ29yZTo6RGlzcGxheUxpc3Q6
Okl0ZW1IYW5kbGU+IFdBUk5fVU5VU0VEX1JFVFVSTiBkZWNvZGVJdGVtKGNvbnN0IHVpbnQ4X3Qq
IGRhdGEsIHNpemVfdCBsZW5ndGgsIFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtVHlwZSwgdWlu
dDhfdCogaGFuZGxlTG9jYXRpb24pIG92ZXJyaWRlOwogCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUg
VD4KQEAgLTkyLDYgKzkxLDggQEAgcHJpdmF0ZToKICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9w
dDsKICAgICB9CiAKKyAgICB2b2lkIGFwcGx5RGlzcGxheUxpc3RzRnJvbUhhbmRsZShXZWJDb3Jl
OjpJbWFnZUJ1ZmZlciYgZGVzdGluYXRpb24sIERpc3BsYXlMaXN0UmVhZGVySGFuZGxlJiwgc2l6
ZV90IG9mZnNldCk7CisKICAgICAvLyBJUEM6Ok1lc3NhZ2VTZW5kZXIuCiAgICAgSVBDOjpDb25u
ZWN0aW9uKiBtZXNzYWdlU2VuZGVyQ29ubmVjdGlvbigpIGNvbnN0IG92ZXJyaWRlOwogICAgIHVp
bnQ2NF90IG1lc3NhZ2VTZW5kZXJEZXN0aW5hdGlvbklEKCkgY29uc3Qgb3ZlcnJpZGU7CkBAIC0x
MDIsMTYgKzEwMywxNiBAQCBwcml2YXRlOgogCiAgICAgLy8gTWVzc2FnZXMgdG8gYmUgcmVjZWl2
ZWQuCiAgICAgdm9pZCBjcmVhdGVJbWFnZUJ1ZmZlcihjb25zdCBXZWJDb3JlOjpGbG9hdFNpemUm
IGxvZ2ljYWxTaXplLCBXZWJDb3JlOjpSZW5kZXJpbmdNb2RlLCBmbG9hdCByZXNvbHV0aW9uU2Nh
bGUsIFdlYkNvcmU6OkNvbG9yU3BhY2UsIFdlYkNvcmU6OlJlbmRlcmluZ1Jlc291cmNlSWRlbnRp
Zmllcik7Ci0gICAgdm9pZCBzdWJtaXREaXNwbGF5TGlzdChjb25zdCBTaGFyZWREaXNwbGF5TGlz
dEhhbmRsZSYsIFdlYkNvcmU6OlJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcik7Ci0gICAgdm9p
ZCBmbHVzaERpc3BsYXlMaXN0QW5kQ29tbWl0KGNvbnN0IFNoYXJlZERpc3BsYXlMaXN0SGFuZGxl
JiwgV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkZsdXNoSWRlbnRpZmllciwgV2ViQ29yZTo6UmVuZGVy
aW5nUmVzb3VyY2VJZGVudGlmaWVyKTsKKyAgICB2b2lkIHdha2VVcEFuZEFwcGx5RGlzcGxheUxp
c3QoV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1CdWZmZXJJZGVudGlmaWVyIGluaXRpYWxJZGVu
dGlmaWVyLCB1aW50NjRfdCBpbml0aWFsT2Zmc2V0LCBXZWJDb3JlOjpSZW5kZXJpbmdSZXNvdXJj
ZUlkZW50aWZpZXIgZGVzdGluYXRpb25CdWZmZXJJZGVudGlmaWVyKTsKICAgICB2b2lkIGdldElt
YWdlRGF0YShXZWJDb3JlOjpBbHBoYVByZW11bHRpcGxpY2F0aW9uIG91dHB1dEZvcm1hdCwgV2Vi
Q29yZTo6SW50UmVjdCBzcmNSZWN0LCBXZWJDb3JlOjpSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZp
ZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoSVBDOjpJbWFnZURhdGFSZWZlcmVuY2UmJik+JiYp
OwogICAgIHZvaWQgcmVsZWFzZVJlbW90ZVJlc291cmNlKFdlYkNvcmU6OlJlbmRlcmluZ1Jlc291
cmNlSWRlbnRpZmllcik7Ci0gICAgdm9pZCBkaWRDcmVhdGVTaGFyZWRJdGVtRGF0YShXZWJDb3Jl
OjpEaXNwbGF5TGlzdDo6SXRlbUJ1ZmZlcklkZW50aWZpZXIsIGNvbnN0IFNoYXJlZE1lbW9yeTo6
SVBDSGFuZGxlJik7CisgICAgdm9pZCBkaWRDcmVhdGVTaGFyZWREaXNwbGF5TGlzdEhhbmRsZShX
ZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbUJ1ZmZlcklkZW50aWZpZXIsIGNvbnN0IFNoYXJlZE1l
bW9yeTo6SVBDSGFuZGxlJiwgV2ViQ29yZTo6UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyIGRl
c3RpbmF0aW9uQnVmZmVySWRlbnRpZmllcik7CiAKICAgICBSZW1vdGVSZXNvdXJjZUNhY2hlIG1f
cmVtb3RlUmVzb3VyY2VDYWNoZTsKICAgICBXZWFrUHRyPEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nl
c3M+IG1fZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2VzczsKICAgICBSZW5kZXJpbmdCYWNrZW5kSWRl
bnRpZmllciBtX3JlbmRlcmluZ0JhY2tlbmRJZGVudGlmaWVyOwotICAgIEhhc2hNYXA8V2ViQ29y
ZTo6RGlzcGxheUxpc3Q6Okl0ZW1CdWZmZXJJZGVudGlmaWVyLCBSZWZQdHI8U2hhcmVkTWVtb3J5
Pj4gbV9zaGFyZWRJdGVtQnVmZmVyczsKKyAgICBIYXNoTWFwPFdlYkNvcmU6OkRpc3BsYXlMaXN0
OjpJdGVtQnVmZmVySWRlbnRpZmllciwgc3RkOjp1bmlxdWVfcHRyPERpc3BsYXlMaXN0UmVhZGVy
SGFuZGxlPj4gbV9zaGFyZWREaXNwbGF5TGlzdEhhbmRsZXM7CisgICAgV2ViQ29yZTo6RGlzcGxh
eUxpc3Q6Okl0ZW1CdWZmZXJJZGVudGlmaWVyIG1fbmV4dEl0ZW1CdWZmZXJUb1JlYWQ7CiB9Owog
CiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJv
Y2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kLm1lc3NhZ2VzLmluIGIvU291cmNl
L1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQubWVzc2Fn
ZXMuaW4KaW5kZXggZjU1YjAyNmJkYjVlNjNhMTRjZjM2MjE0YTgzZThiYmU4ODYzMWExYi4uNmYy
ZTJhYmRmOTI2YmNkNGEwNGMyMzU1OGU2NWI5OTZhNWEwNjA4MiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQubWVzc2Fn
ZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRl
cmluZ0JhY2tlbmQubWVzc2FnZXMuaW4KQEAgLTI0LDEwICsyNCw5IEBACiAKIG1lc3NhZ2VzIC0+
IFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQgTm90UmVmQ291bnRlZCB7CiAgICAgQ3JlYXRlSW1hZ2VC
dWZmZXIoV2ViQ29yZTo6RmxvYXRTaXplIGxvZ2ljYWxTaXplLCBXZWJDb3JlOjpSZW5kZXJpbmdN
b2RlIHJlbmRlcmluZ01vZGUsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwgV2ViQ29yZTo6Q29sb3JT
cGFjZSBjb2xvclNwYWNlLCBXZWJDb3JlOjpSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgcmVu
ZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKQotICAgIFN1Ym1pdERpc3BsYXlMaXN0KFdlYktpdDo6
U2hhcmVkRGlzcGxheUxpc3RIYW5kbGUgZGlzcGxheUxpc3QsIFdlYkNvcmU6OlJlbmRlcmluZ1Jl
c291cmNlSWRlbnRpZmllciByZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpCi0gICAgRmx1c2hE
aXNwbGF5TGlzdEFuZENvbW1pdChXZWJLaXQ6OlNoYXJlZERpc3BsYXlMaXN0SGFuZGxlIGRpc3Bs
YXlMaXN0LCBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6Rmx1c2hJZGVudGlmaWVyIGZsdXNoSWRlbnRp
ZmllciwgV2ViQ29yZTo6UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyIHJlbmRlcmluZ1Jlc291
cmNlSWRlbnRpZmllcikKKyAgICBXYWtlVXBBbmRBcHBseURpc3BsYXlMaXN0KFdlYkNvcmU6OkRp
c3BsYXlMaXN0OjpJdGVtQnVmZmVySWRlbnRpZmllciBpbml0aWFsSWRlbnRpZmllciwgdWludDY0
X3QgaW5pdGlhbE9mZnNldCwgV2ViQ29yZTo6UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyIGRl
c3RpbmF0aW9uQnVmZmVySWRlbnRpZmllcikKICAgICBHZXRJbWFnZURhdGEoZW51bTp1aW50OF90
IFdlYkNvcmU6OkFscGhhUHJlbXVsdGlwbGljYXRpb24gb3V0cHV0Rm9ybWF0LCBXZWJDb3JlOjpJ
bnRSZWN0IHNyY1JlY3QsIFdlYkNvcmU6OlJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciByZW5k
ZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpIC0+IChJUEM6OkltYWdlRGF0YVJlZmVyZW5jZSBpbWFn
ZURhdGEpIFN5bmNocm9ub3VzCi0gICAgRGlkQ3JlYXRlU2hhcmVkSXRlbURhdGEoV2ViQ29yZTo6
RGlzcGxheUxpc3Q6Okl0ZW1CdWZmZXJJZGVudGlmaWVyIGlkZW50aWZpZXIsIFdlYktpdDo6U2hh
cmVkTWVtb3J5OjpJUENIYW5kbGUgaGFuZGxlKQorICAgIERpZENyZWF0ZVNoYXJlZERpc3BsYXlM
aXN0SGFuZGxlKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtQnVmZmVySWRlbnRpZmllciBpZGVu
dGlmaWVyLCBXZWJLaXQ6OlNoYXJlZE1lbW9yeTo6SVBDSGFuZGxlIGhhbmRsZSwgV2ViQ29yZTo6
UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyIGRlc3RpbmF0aW9uQnVmZmVySWRlbnRpZmllcikK
ICAgICBSZWxlYXNlUmVtb3RlUmVzb3VyY2UoV2ViQ29yZTo6UmVuZGVyaW5nUmVzb3VyY2VJZGVu
dGlmaWVyIHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcikKIH0KIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9TaGFyZWQvU2hhcmVkRGlzcGxheUxpc3RIYW5kbGUuY3BwIGIvU291cmNlL1dl
YktpdC9TaGFyZWQvU2hhcmVkRGlzcGxheUxpc3RIYW5kbGUuY3BwCmRlbGV0ZWQgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAxYWE3NGQ2MTVhYmQzZjRhMzE4NjI1MmZmMGZkY2I4NzFlNzBmYTUwLi4w
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL1NoYXJlZERpc3BsYXlMaXN0SGFuZGxlLmNwcAorKysgL2Rldi9udWxsCkBAIC0x
LDUzICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0
OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAi
U2hhcmVkRGlzcGxheUxpc3RIYW5kbGUuaCIKLQotbmFtZXNwYWNlIFdlYktpdCB7Ci11c2luZyBu
YW1lc3BhY2UgV2ViQ29yZTsKLQotU2hhcmVkRGlzcGxheUxpc3RIYW5kbGU6OlNoYXJlZERpc3Bs
YXlMaXN0SGFuZGxlKGNvbnN0IERpc3BsYXlMaXN0OjpEaXNwbGF5TGlzdCYgZGlzcGxheUxpc3Qp
Ci17Ci0gICAgZGlzcGxheUxpc3QuZm9yRWFjaEl0ZW1CdWZmZXIoWyZdIChhdXRvJiBoYW5kbGUp
IHsKLSAgICAgICAgbV9idWZmZXJzLmFwcGVuZCh7IGhhbmRsZS5pZGVudGlmaWVyLCBoYW5kbGUu
Y2FwYWNpdHkgfSk7Ci0gICAgfSk7Ci19Ci0KLXN0ZDo6dW5pcXVlX3B0cjxEaXNwbGF5TGlzdDo6
RGlzcGxheUxpc3Q+IFNoYXJlZERpc3BsYXlMaXN0SGFuZGxlOjpjcmVhdGVEaXNwbGF5TGlzdChJ
dGVtQnVmZmVyUHJvdmlkZXImJiBidWZmZXJQcm92aWRlcikgY29uc3QKLXsKLSAgICBEaXNwbGF5
TGlzdDo6SXRlbUJ1ZmZlckhhbmRsZXMgaGFuZGxlczsKLSAgICBoYW5kbGVzLnJlc2VydmVJbml0
aWFsQ2FwYWNpdHkobV9idWZmZXJzLnNpemUoKSk7Ci0gICAgZm9yIChhdXRvJiBbaWRlbnRpZmll
ciwgY2FwYWNpdHldIDogbV9idWZmZXJzKSB7Ci0gICAgICAgIGF1dG8qIGRhdGEgPSBidWZmZXJQ
cm92aWRlcihpZGVudGlmaWVyKTsKLSAgICAgICAgaWYgKCFkYXRhKQotICAgICAgICAgICAgcmV0
dXJuIG51bGxwdHI7Ci0KLSAgICAgICAgaGFuZGxlcy51bmNoZWNrZWRBcHBlbmQoeyBpZGVudGlm
aWVyLCBkYXRhLCBjYXBhY2l0eSB9KTsKLSAgICB9Ci0gICAgcmV0dXJuIG1ha2VVbmlxdWU8RGlz
cGxheUxpc3Q6OkRpc3BsYXlMaXN0PihXVEZNb3ZlKGhhbmRsZXMpKTsKLX0KLQotfSAvLyBuYW1l
c3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9TaGFyZWREaXNw
bGF5TGlzdEhhbmRsZS5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQvU2hhcmVkRGlzcGxheUxpc3RI
YW5kbGUuaAppbmRleCBkMTc1ZTExNGYyM2JjOGZiOGU1N2NkOTBmNjRhMzNiZTI2MmUxZjMxLi5k
ZTEyOGY1YzUxNTgyYWIwOGQ2MDY2ZTA4YmNkMzg1NGU2Mjk3MTQ2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9TaGFyZWREaXNwbGF5TGlzdEhhbmRsZS5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL1NoYXJlZERpc3BsYXlMaXN0SGFuZGxlLmgKQEAgLTI1LDQyICsyNSw3MyBA
QAogCiAjcHJhZ21hIG9uY2UKIAorI2luY2x1ZGUgIlNoYXJlZE1lbW9yeS5oIgogI2luY2x1ZGUg
PFdlYkNvcmUvRGlzcGxheUxpc3QuaD4KKyNpbmNsdWRlIDxhdG9taWM+CisjaW5jbHVkZSA8dGhy
ZWFkPgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAogY2xhc3MgU2hhcmVkRGlzcGxheUxpc3RIYW5k
bGUgewogcHVibGljOgotICAgIHVzaW5nIEl0ZW1CdWZmZXJQcm92aWRlciA9IEZ1bmN0aW9uPHVp
bnQ4X3QqKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtQnVmZmVySWRlbnRpZmllcik+OworICAg
IHZpcnR1YWwgflNoYXJlZERpc3BsYXlMaXN0SGFuZGxlKCkgPSBkZWZhdWx0OwogCi0gICAgU2hh
cmVkRGlzcGxheUxpc3RIYW5kbGUoY29uc3QgV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRpc3BsYXlM
aXN0Jik7Ci0gICAgc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEaXNwbGF5
TGlzdD4gY3JlYXRlRGlzcGxheUxpc3QoSXRlbUJ1ZmZlclByb3ZpZGVyJiYpIGNvbnN0OworICAg
IHN0YXRpYyBjb25zdGV4cHIgYXV0byByZXNlcnZlZENhcGFjaXR5QXRTdGFydCA9IDIgKiBzaXpl
b2YodWludDY0X3QpOwogCi0gICAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4gdm9pZCBlbmNvZGUo
RW5jb2RlciYpIGNvbnN0OwotICAgIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+IHN0YXRpYyBPcHRp
b25hbDxTaGFyZWREaXNwbGF5TGlzdEhhbmRsZT4gZGVjb2RlKERlY29kZXImKTsKKyAgICBTaGFy
ZWRNZW1vcnkmIHNoYXJlZE1lbW9yeSgpIHsgcmV0dXJuIG1fc2hhcmVkTWVtb3J5LmdldCgpOyB9
CisgICAgY29uc3QgU2hhcmVkTWVtb3J5JiBzaGFyZWRNZW1vcnkoKSBjb25zdCB7IHJldHVybiBt
X3NoYXJlZE1lbW9yeS5nZXQoKTsgfQogCi1wcml2YXRlOgotICAgIFNoYXJlZERpc3BsYXlMaXN0
SGFuZGxlKFZlY3RvcjxzdGQ6OnBhaXI8V2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1CdWZmZXJJ
ZGVudGlmaWVyLCBzaXplX3Q+PiYmIGJ1ZmZlcnMpCi0gICAgICAgIDogbV9idWZmZXJzKFdURk1v
dmUoYnVmZmVycykpCisgICAgV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1CdWZmZXJJZGVudGlm
aWVyIGlkZW50aWZpZXIoKSBjb25zdCB7IHJldHVybiBtX2lkZW50aWZpZXI7IH0KKyAgICB1aW50
OF90KiBkYXRhKCkgY29uc3QgeyByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDx1aW50OF90Kj4oc2hh
cmVkTWVtb3J5KCkuZGF0YSgpKTsgfQorCisgICAgdWludDY0X3QgdW5yZWFkQnl0ZXMoKSBjb25z
dCB7IHJldHVybiBzdHJ1Y3R1cmUoKS51bnJlYWRCeXRlczsgfQorICAgIHZpcnR1YWwgdm9pZCBh
ZHZhbmNlKHNpemVfdCBhbW91bnQpID0gMDsKKworICAgIGNsYXNzIExvY2sgeworICAgIHB1Ymxp
YzoKKyAgICAgICAgTG9jayhTaGFyZWREaXNwbGF5TGlzdEhhbmRsZSYgaGFuZGxlKQorICAgICAg
ICAgICAgOiBtX2hhbmRsZShoYW5kbGUpCisgICAgICAgIHsKKyAgICAgICAgICAgIGF1dG8mIGF0
b21pY1ZhbHVlID0gbV9oYW5kbGUuYXRvbWljTG9ja1ZhbHVlKCk7CisgICAgICAgICAgICB3aGls
ZSAodHJ1ZSkgeworICAgICAgICAgICAgICAgIHN0ZDo6dGhpc190aHJlYWQ6OnlpZWxkKCk7Cisg
ICAgICAgICAgICAgICAgdWludDY0X3QgdW5sb2NrZWQgPSAwOworICAgICAgICAgICAgICAgIGlm
IChhdG9taWNWYWx1ZS5jb21wYXJlX2V4Y2hhbmdlX3dlYWsodW5sb2NrZWQsIDEpKQorICAgICAg
ICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAg
IH5Mb2NrKCkKKyAgICAgICAgeworICAgICAgICAgICAgbV9oYW5kbGUuYXRvbWljTG9ja1ZhbHVl
KCkuc3RvcmUoMCk7CisgICAgICAgIH0KKworICAgIHByaXZhdGU6CisgICAgICAgIFNoYXJlZERp
c3BsYXlMaXN0SGFuZGxlJiBtX2hhbmRsZTsKKyAgICB9OworCitwcm90ZWN0ZWQ6CisgICAgU2hh
cmVkRGlzcGxheUxpc3RIYW5kbGUoV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1CdWZmZXJJZGVu
dGlmaWVyIGlkZW50aWZpZXIsIFJlZjxTaGFyZWRNZW1vcnk+JiYgc2hhcmVkTWVtb3J5KQorICAg
ICAgICA6IG1faWRlbnRpZmllcihpZGVudGlmaWVyKQorICAgICAgICAsIG1fc2hhcmVkTWVtb3J5
KFdURk1vdmUoc2hhcmVkTWVtb3J5KSkKICAgICB7CiAgICAgfQogCi0gICAgVmVjdG9yPHN0ZDo6
cGFpcjxXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbUJ1ZmZlcklkZW50aWZpZXIsIHNpemVfdD4+
IG1fYnVmZmVyczsKLX07CisgICAgdWludDY0X3QmIHVucmVhZEJ5dGVzSGFuZGxlKCkgeyByZXR1
cm4gc3RydWN0dXJlKCkudW5yZWFkQnl0ZXM7IH0KIAotdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4g
dm9pZCBTaGFyZWREaXNwbGF5TGlzdEhhbmRsZTo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNv
bnN0Ci17Ci0gICAgZW5jb2RlciA8PCBtX2J1ZmZlcnM7Ci19Citwcml2YXRlOgorICAgIHN0cnVj
dCBEaXNwbGF5TGlzdEhhbmRsZVN0cnVjdHVyZSB7CisgICAgICAgIHN0ZDo6YXRvbWljPHVpbnQ2
NF90PiBsb2NrOworICAgICAgICB1aW50NjRfdCB1bnJlYWRCeXRlczsKKyAgICB9OwogCi10ZW1w
bGF0ZTxjbGFzcyBEZWNvZGVyPiBPcHRpb25hbDxTaGFyZWREaXNwbGF5TGlzdEhhbmRsZT4gU2hh
cmVkRGlzcGxheUxpc3RIYW5kbGU6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQotewotICAgIE9w
dGlvbmFsPFZlY3RvcjxzdGQ6OnBhaXI8V2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1CdWZmZXJJ
ZGVudGlmaWVyLCBzaXplX3Q+Pj4gYnVmZmVyczsKLSAgICBkZWNvZGVyID4+IGJ1ZmZlcnM7Ci0g
ICAgaWYgKCFidWZmZXJzKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgIHN0ZDo6
YXRvbWljPHVpbnQ2NF90PiYgYXRvbWljTG9ja1ZhbHVlKCkgeyByZXR1cm4gc3RydWN0dXJlKCku
bG9jazsgfQogCi0gICAgcmV0dXJuIHt7IFdURk1vdmUoKmJ1ZmZlcnMpIH19OwotfQorICAgIERp
c3BsYXlMaXN0SGFuZGxlU3RydWN0dXJlJiBzdHJ1Y3R1cmUoKSB7IHJldHVybiAqcmVpbnRlcnBy
ZXRfY2FzdDxEaXNwbGF5TGlzdEhhbmRsZVN0cnVjdHVyZSo+KGRhdGEoKSk7IH0KKyAgICBjb25z
dCBEaXNwbGF5TGlzdEhhbmRsZVN0cnVjdHVyZSYgc3RydWN0dXJlKCkgY29uc3QgeyByZXR1cm4g
KnJlaW50ZXJwcmV0X2Nhc3Q8RGlzcGxheUxpc3RIYW5kbGVTdHJ1Y3R1cmUqPihkYXRhKCkpOyB9
CisKKyAgICBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbUJ1ZmZlcklkZW50aWZpZXIgbV9pZGVu
dGlmaWVyOworICAgIFJlZjxTaGFyZWRNZW1vcnk+IG1fc2hhcmVkTWVtb3J5OworfTsKIAogfSAv
LyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NvdXJjZXMudHh0
IGIvU291cmNlL1dlYktpdC9Tb3VyY2VzLnR4dAppbmRleCA4M2QyODBjNzVlZjVmNWJiMGEyZWI2
ZDExYWE4YzBmYTkxOWI3NGQwLi4yNDVmZGIyMWY5NTI5OThhMzlkYjhhMjE5MmM4YzU3MmM4OTEw
NjJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NvdXJjZXMudHh0CisrKyBiL1NvdXJjZS9X
ZWJLaXQvU291cmNlcy50eHQKQEAgLTI0LDYgKzI0LDcgQEAKIEdQVVByb2Nlc3MvR1BVUHJvY2Vz
cy5jcHAKIEdQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAKIEdQVVByb2Nl
c3MvR1BVUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5jcHAKK0dQVVByb2Nlc3MvZ3JhcGhpY3Mv
RGlzcGxheUxpc3RSZWFkZXJIYW5kbGUuY3BwCiBHUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJl
bmRlcmluZ0JhY2tlbmQuY3BwCiBHUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlc291cmNlQ2Fj
aGUuY3BwCiBHUFVQcm9jZXNzL21lZGlhL1JlbW90ZUF1ZGlvU2Vzc2lvblByb3h5LmNwcApAQCAt
MTczLDcgKzE3NCw2IEBAIFNoYXJlZC9TZXJ2aWNlV29ya2VySW5pdGlhbGl6YXRpb25EYXRhLmNw
cAogU2hhcmVkL1Nlc3Npb25TdGF0ZS5jcHAKIFNoYXJlZC9TaGFyZWFibGVCaXRtYXAuY3BwIEBu
by11bmlmeQogU2hhcmVkL1NoYXJlYWJsZVJlc291cmNlLmNwcAotU2hhcmVkL1NoYXJlZERpc3Bs
YXlMaXN0SGFuZGxlLmNwcAogU2hhcmVkL1NoYXJlZFN0cmluZ0hhc2hTdG9yZS5jcHAKIFNoYXJl
ZC9TaGFyZWRTdHJpbmdIYXNoVGFibGVSZWFkT25seS5jcHAKIFNoYXJlZC9TaGFyZWRTdHJpbmdI
YXNoVGFibGUuY3BwCkBAIC01NjAsNiArNTYwLDcgQEAgV2ViUHJvY2Vzcy9NZWRpYVN0cmVhbS9N
ZWRpYURldmljZVNhbmRib3hFeHRlbnNpb25zLmNwcAogV2ViUHJvY2Vzcy9NZWRpYVN0cmVhbS9V
c2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXIuY3BwCiAKIFdlYlByb2Nlc3MvR1BVL0dQ
VVByb2Nlc3NDb25uZWN0aW9uLmNwcAorV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvRGlzcGxheUxp
c3RXcml0ZXJIYW5kbGUuY3BwCiBXZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9JbWFnZUJ1ZmZlclNo
YXJlYWJsZUJpdG1hcEJhY2tlbmQuY3BwCiBXZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVS
ZW5kZXJpbmdCYWNrZW5kUHJveHkuY3BwCiBXZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVS
ZXNvdXJjZUNhY2hlUHJveHkuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYktpdC54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvagppbmRleCBjMDI3NDk0YjczYWNjZWM1ZWZkODFjNjk0ZDNhODUzYjRl
ZGVmMGNhLi4wZWU5OTcxMDE5NjAzNmIzZmExYmZlMzEzMTUzYjg5ZjI4ODg3ZDM5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBi
L1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTE4NzEs
NiArMTg3MSw4IEBACiAJCUU1QkVGNjgyMjEzMEM0ODAwMEYzMTExMSAvKiBXZWJEYXRhTGlzdFN1
Z2dlc3Rpb25zRHJvcGRvd25JT1MuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEU1QkVGNjgwMjEzMEM0N0YwMEYzMTExMSAvKiBXZWJEYXRhTGlzdFN1Z2dl
c3Rpb25zRHJvcGRvd25JT1MuaCAqLzsgfTsKIAkJRTVDQjA3REMyMEUxNjc4RjAwMjJDMTgzIC8q
IFdLRm9ybUNvbG9yQ29udHJvbC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gRTVDQjA3REEyMEUxNjc4RjAwMjJDMTgzIC8qIFdLRm9ybUNvbG9yQ29udHJv
bC5oICovOyB9OwogCQlFRDgyQTdGMjEyOEM2RkFGMDA0NDc3QjMgLyogV0tCdW5kbGVQYWdlT3Zl
cmxheS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUEy
MkYwRkYxMjg5RkNEOTAwODVFNzRGIC8qIFdLQnVuZGxlUGFnZU92ZXJsYXkuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQlGNDA5NENCRDI1NTMwNTNE
MDAzRDczRTMgLyogRGlzcGxheUxpc3RSZWFkZXJIYW5kbGUuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY0MDk0Q0JCMjU1MzA0QUYwMDNENzNFMyAvKiBE
aXNwbGF5TGlzdFJlYWRlckhhbmRsZS5oICovOyB9OworCQlGNDA5NENCRTI1NTMwNTQwMDAzRDcz
RTMgLyogRGlzcGxheUxpc3RXcml0ZXJIYW5kbGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY0MDk0Q0I5MjU1MzA0N0UwMDNENzNFMyAvKiBEaXNwbGF5
TGlzdFdyaXRlckhhbmRsZS5oICovOyB9OwogCQlGNDA5QkExODFFNkU2NEJDMDA5REEyOEUgLyog
V0tEcmFnRGVzdGluYXRpb25BY3Rpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEY0MDlCQTE3MUU2RTY0QjMwMDlEQTI4RSAvKiBXS0RyYWdEZXN0aW5h
dGlvbkFjdGlvbi5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CiAJCUY0MkQ2MzQxMjJBMEVGREYwMEQyRkIzQSAvKiBXZWJBdXRvY29ycmVjdGlvbkRhdGEu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY0MkQ2MzNG
MjJBMEVGRDMwMEQyRkIzQSAvKiBXZWJBdXRvY29ycmVjdGlvbkRhdGEuaCAqLzsgfTsKIAkJRjQz
MEU5NDIyMjQ3MzM1RjAwNUZFMDUzIC8qIFdlYnNpdGVNZXRhVmlld3BvcnRQb2xpY3kuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY0MzBFOTQxMjI0NzMy
QTkwMDVGRTA1MyAvKiBXZWJzaXRlTWV0YVZpZXdwb3J0UG9saWN5LmggKi87IH07CkBAIC01NDcw
LDYgKzU0NzIsMTAgQEAKIAkJRUNBNjgwRDMxRTY5MDRCNTAwNzMxRDIwIC8qIEV4dHJhUHJpdmF0
ZVN5bWJvbHNGb3JUQVBJLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEV4dHJh
UHJpdmF0ZVN5bWJvbHNGb3JUQVBJLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUVD
QkZDMURCMUU2QTRENjYwMDAzMDBDNyAvKiBFeHRyYVB1YmxpY1N5bWJvbHNGb3JUQVBJLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IEV4dHJhUHVibGljU3ltYm9sc0ZvclRBUEkuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJRjAzNjk3ODcxNUY0QkYwNTAwQzNBODBFIC8qIFdlYkNvbG9yUGlja2Vy
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdlYkNvbG9yUGlja2Vy
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRjQwOTRDQjkyNTUzMDQ3RTAwM0Q3
M0UzIC8qIERpc3BsYXlMaXN0V3JpdGVySGFuZGxlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERpc3BsYXlM
aXN0V3JpdGVySGFuZGxlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUY0MDk0Q0JB
MjU1MzA0N0UwMDNENzNFMyAvKiBEaXNwbGF5TGlzdFdyaXRlckhhbmRsZS5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBEaXNwbGF5TGlzdFdyaXRlckhhbmRsZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCUY0MDk0Q0JCMjU1MzA0QUYwMDNENzNFMyAvKiBEaXNwbGF5TGlzdFJlYWRl
ckhhbmRsZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBEaXNwbGF5TGlzdFJlYWRlckhhbmRsZS5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQlGNDA5NENCQzI1NTMwNEFGMDAzRDczRTMgLyogRGlz
cGxheUxpc3RSZWFkZXJIYW5kbGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRGlzcGxheUxpc3RS
ZWFkZXJIYW5kbGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGNDA5QkExNzFF
NkU2NEIzMDA5REEyOEUgLyogV0tEcmFnRGVzdGluYXRpb25BY3Rpb24uaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gV0tEcmFnRGVzdGluYXRpb25BY3Rpb24uaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRjQwRDFCNjgyMjBCREMwRjAwQjQ5QTAxIC8qIFdlYkF1dG9j
b3JyZWN0aW9uQ29udGV4dC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBXZWJBdXRvY29ycmVjdGlvbkNvbnRl
eHQuaDsgcGF0aCA9IGlvcy9XZWJBdXRvY29ycmVjdGlvbkNvbnRleHQuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJRjQxMDU2NjEyMTMwNjk5QTAwOTIyODFEIC8qIEFQSUF0dGFjaG1l
bnRDb2NvYS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IEFQSUF0dGFjaG1lbnRDb2NvYS5tbTsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTU0OTIsNyArNTQ5OCw2IEBACiAJCUY0OTZB
NDJGMUY1OEEyNzIwMDRDMTc1NyAvKiBEcmFnRHJvcEludGVyYWN0aW9uU3RhdGUuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBuYW1lID0gRHJhZ0Ryb3BJbnRlcmFjdGlvblN0YXRlLmg7IHBhdGggPSBpb3MvRHJhZ0Ryb3BJ
bnRlcmFjdGlvblN0YXRlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUY0OTZBNDMw
MUY1OEEyNzIwMDRDMTc1NyAvKiBEcmFnRHJvcEludGVyYWN0aW9uU3RhdGUubW0gKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5v
YmpjcHA7IG5hbWUgPSBEcmFnRHJvcEludGVyYWN0aW9uU3RhdGUubW07IHBhdGggPSBpb3MvRHJh
Z0Ryb3BJbnRlcmFjdGlvblN0YXRlLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlG
NEE2RDZCQjI1NENBM0U5MDBCNjVGQUEgLyogU2hhcmVkRGlzcGxheUxpc3RIYW5kbGUuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gU2hhcmVkRGlzcGxheUxpc3RIYW5kbGUuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKLQkJRjRBNkQ2QkQyNTRDQTUyMjAwQjY1RkFBIC8qIFNoYXJlZERpc3BsYXlMaXN0
SGFuZGxlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNoYXJlZERpc3BsYXlMaXN0SGFuZGxlLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRjRBQzY1NUUyMkEzMTQwRTAwQTA1NjA3
IC8qIFdlYlByZWZlcmVuY2VzRGVmYXVsdFZhbHVlc0lPUy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLm9iamNwcDsgbmFtZSA9IFdlYlByZWZlcmVuY2VzRGVmYXVsdFZhbHVlc0lPUy5tbTsg
cGF0aCA9IGlvcy9XZWJQcmVmZXJlbmNlc0RlZmF1bHRWYWx1ZXNJT1MubW07IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCUY0QjM3OEQwMjFEREJCQUIwMDk1QTM3OCAvKiBXZWJVbmRvU3Rl
cElELmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYlVuZG9TdGVwSUQuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJRjRDQjA5RTQyMjVENUEwMzAwODkxNDg3IC8qIFdlYnNpdGVNZWRpYVNvdXJj
ZVBvbGljeS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJzaXRlTWVkaWFTb3VyY2VQb2xpY3kuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTYyMDAsNyArNjIwNSw2IEBACiAJCQkJMUE2NDIw
RTMxMkRDRTJGRjAwQ0FBRTJDIC8qIFNoYXJlYWJsZUJpdG1hcC5oICovLAogCQkJCTUxMjE3NDVF
MTY0QzIwRTMwMDM3QTVDMSAvKiBTaGFyZWFibGVSZXNvdXJjZS5jcHAgKi8sCiAJCQkJNTEyMTc0
NUYxNjRDMjBFMzAwMzdBNUMxIC8qIFNoYXJlYWJsZVJlc291cmNlLmggKi8sCi0JCQkJRjRBNkQ2
QkQyNTRDQTUyMjAwQjY1RkFBIC8qIFNoYXJlZERpc3BsYXlMaXN0SGFuZGxlLmNwcCAqLywKIAkJ
CQlGNEE2RDZCQjI1NENBM0U5MDBCNjVGQUEgLyogU2hhcmVkRGlzcGxheUxpc3RIYW5kbGUuaCAq
LywKIAkJCQk4MzEzRjdFQTFGN0RBRTA0MDBCOTQ0RUIgLyogU2hhcmVkU3RyaW5nSGFzaFN0b3Jl
LmNwcCAqLywKIAkJCQk4MzEzRjdFOTFGN0RBRTAzMDBCOTQ0RUIgLyogU2hhcmVkU3RyaW5nSGFz
aFN0b3JlLmggKi8sCkBAIC04MTc1LDYgKzgxNzksOCBAQAogCQkJaXNhID0gUEJYR3JvdXA7CiAJ
CQljaGlsZHJlbiA9ICgKIAkJCQk3MjdBN0YzMzI0MDc4NTI3MDA0RDI5MzEgLyogY29jb2EgKi8s
CisJCQkJRjQwOTRDQkEyNTUzMDQ3RTAwM0Q3M0UzIC8qIERpc3BsYXlMaXN0V3JpdGVySGFuZGxl
LmNwcCAqLywKKwkJCQlGNDA5NENCOTI1NTMwNDdFMDAzRDczRTMgLyogRGlzcGxheUxpc3RXcml0
ZXJIYW5kbGUuaCAqLywKIAkJCQk3MjdBN0YzOTI0MDc4OEYxMDA0RDI5MzEgLyogSW1hZ2VCdWZm
ZXJCYWNrZW5kSGFuZGxlLmggKi8sCiAJCQkJNzI3QTdGMzcyNDA3ODhGMDAwNEQyOTMxIC8qIElt
YWdlQnVmZmVyU2hhcmVhYmxlQml0bWFwQmFja2VuZC5jcHAgKi8sCiAJCQkJNzI3QTdGMzYyNDA3
ODhGMDAwNEQyOTMxIC8qIEltYWdlQnVmZmVyU2hhcmVhYmxlQml0bWFwQmFja2VuZC5oICovLApA
QCAtODE5NCw2ICs4MjAwLDggQEAKIAkJNTUwNjQwQTEyNDA3MUEyOTAwQUFFMDQ1IC8qIGdyYXBo
aWNzICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKKwkJCQlGNDA5
NENCQzI1NTMwNEFGMDAzRDczRTMgLyogRGlzcGxheUxpc3RSZWFkZXJIYW5kbGUuY3BwICovLAor
CQkJCUY0MDk0Q0JCMjU1MzA0QUYwMDNENzNFMyAvKiBEaXNwbGF5TGlzdFJlYWRlckhhbmRsZS5o
ICovLAogCQkJCTU1QUQwOTQzMjQwOEEwRTYwMERFNEQyRiAvKiBQbGF0Zm9ybVJlbW90ZUltYWdl
QnVmZmVyLmggKi8sCiAJCQkJNTVBRDA5NDIyNDA4QTAyRTAwREU0RDJGIC8qIFJlbW90ZUltYWdl
QnVmZmVyLmggKi8sCiAJCQkJNTUwNjQwQTIyNDA3MUE2MTAwQUFFMDQ1IC8qIFJlbW90ZVJlbmRl
cmluZ0JhY2tlbmQuY3BwICovLApAQCAtMTEwMzUsNiArMTEwNDMsOCBAQAogCQkJCTgzODkxQjZD
MUE2OEMzMEIwMDMwRjM4NiAvKiBEaWFnbm9zdGljTG9nZ2luZ0NsaWVudC5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJQzE4MTczNjEyMDU4NDI0NzAwREZEQTY1IC8qIERpc3BsYXlMaW5rLmggaW4gSGVh
ZGVycyAqLywKIAkJCQkwRjE4OUNBQzI0NzQ5RjJGMDBFNThEODEgLyogRGlzcGxheUxpbmtPYnNl
cnZlcklELmggaW4gSGVhZGVycyAqLywKKwkJCQlGNDA5NENCRDI1NTMwNTNEMDAzRDczRTMgLyog
RGlzcGxheUxpc3RSZWFkZXJIYW5kbGUuaCBpbiBIZWFkZXJzICovLAorCQkJCUY0MDk0Q0JFMjU1
MzA1NDAwMDNENzNFMyAvKiBEaXNwbGF5TGlzdFdyaXRlckhhbmRsZS5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJNUMxNDI3MDIxQzIzRjg0QzAwRDQxMTgzIC8qIERvd25sb2FkLmggaW4gSGVhZGVycyAq
LywKIAkJCQk1QzE0MjcwNTFDMjNGODRDMDBENDExODMgLyogRG93bmxvYWRJRC5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJNUMxNDI3MDcxQzIzRjg0QzAwRDQxMTgzIC8qIERvd25sb2FkTWFuYWdlci5o
IGluIEhlYWRlcnMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BV
L2dyYXBoaWNzL0Rpc3BsYXlMaXN0V3JpdGVySGFuZGxlLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9HUFUvZ3JhcGhpY3MvRGlzcGxheUxpc3RXcml0ZXJIYW5kbGUuY3BwCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjQwMWI0MTNmNjU1N2Q2ZWMzMmI2OWFmODBjMWY3Yzk3NDZmNmVhMmIKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL0Rpc3BsYXlMaXN0
V3JpdGVySGFuZGxlLmNwcApAQCAtMCwwICsxLDg4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMg
YGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUg
ImNvbmZpZy5oIgorI2luY2x1ZGUgIkRpc3BsYXlMaXN0V3JpdGVySGFuZGxlLmgiCisKKyNpbmNs
dWRlIDx3dGYvQ2hlY2tlZEFyaXRobWV0aWMuaD4KKworbmFtZXNwYWNlIFdlYktpdCB7Cit1c2lu
ZyBuYW1lc3BhY2UgV2ViQ29yZTsKKwordm9pZCBEaXNwbGF5TGlzdFdyaXRlckhhbmRsZTo6YWR2
YW5jZShzaXplX3QgYW1vdW50KQoreworICAgIENoZWNrZWRTaXplIGNoZWNrZWRXcml0YWJsZU9m
ZnNldCA9IG1fd3JpdGFibGVPZmZzZXQ7CisgICAgY2hlY2tlZFdyaXRhYmxlT2Zmc2V0ICs9IGFt
b3VudDsKKyAgICBpZiAoVU5MSUtFTFkoY2hlY2tlZFdyaXRhYmxlT2Zmc2V0Lmhhc092ZXJmbG93
ZWQoKSkpIHsKKyAgICAgICAgLy8gRklYTUU6IFRoaXMgc2hvdWxkIHJlc3VsdCBpbiB0ZXJtaW5h
dGluZyB0aGUgd2ViIHByb2Nlc3MuCisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAg
ICAgICByZXR1cm47CisgICAgfQorCisgICAgQ2hlY2tlZFNpemUgY2hlY2tlZFVucmVhZEJ5dGVz
ID0gdW5yZWFkQnl0ZXMoKTsKKyAgICBjaGVja2VkVW5yZWFkQnl0ZXMgKz0gYW1vdW50OworICAg
IGlmIChVTkxJS0VMWShjaGVja2VkVW5yZWFkQnl0ZXMuaGFzT3ZlcmZsb3dlZCgpKSkgeworICAg
ICAgICAvLyBGSVhNRTogVGhpcyBzaG91bGQgcmVzdWx0IGluIHRlcm1pbmF0aW5nIHRoZSB3ZWIg
cHJvY2Vzcy4KKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIHJldHVybjsK
KyAgICB9CisKKyAgICBtX3dyaXRhYmxlT2Zmc2V0ID0gY2hlY2tlZFdyaXRhYmxlT2Zmc2V0LnVu
c2FmZUdldCgpOworICAgIHVucmVhZEJ5dGVzSGFuZGxlKCkgPSBjaGVja2VkVW5yZWFkQnl0ZXMu
dW5zYWZlR2V0KCk7Cit9CisKK3NpemVfdCBEaXNwbGF5TGlzdFdyaXRlckhhbmRsZTo6YXZhaWxh
YmxlQ2FwYWNpdHkoKSBjb25zdAoreworICAgIGlmIChVTkxJS0VMWShzaGFyZWRNZW1vcnkoKS5z
aXplKCkgPCB3cml0YWJsZU9mZnNldCgpKSkKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICByZXR1
cm4gc2hhcmVkTWVtb3J5KCkuc2l6ZSgpIC0gd3JpdGFibGVPZmZzZXQoKTsKK30KKworRGlzcGxh
eUxpc3Q6Okl0ZW1CdWZmZXJIYW5kbGUgRGlzcGxheUxpc3RXcml0ZXJIYW5kbGU6OmNyZWF0ZUhh
bmRsZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIHsKKyAgICAgICAgaWRlbnRpZmllcigpLAorICAg
ICAgICBkYXRhKCkgKyB3cml0YWJsZU9mZnNldCgpLAorICAgICAgICBhdmFpbGFibGVDYXBhY2l0
eSgpCisgICAgfTsKK30KKworYm9vbCBEaXNwbGF5TGlzdFdyaXRlckhhbmRsZTo6cmVzZXRXcml0
YWJsZU9mZnNldElmUG9zc2libGUoKQoreworICAgIGlmIChtX3dyaXRhYmxlT2Zmc2V0IDw9IFNo
YXJlZERpc3BsYXlMaXN0SGFuZGxlOjpyZXNlcnZlZENhcGFjaXR5QXRTdGFydCkgeworICAgICAg
ICBSRUxFQVNFX0FTU0VSVChtX3dyaXRhYmxlT2Zmc2V0ID09IFNoYXJlZERpc3BsYXlMaXN0SGFu
ZGxlOjpyZXNlcnZlZENhcGFjaXR5QXRTdGFydCk7CisgICAgICAgIHJldHVybiB0cnVlOworICAg
IH0KKworICAgIGF1dG8gbG9ja2VyID0gTG9jayB7ICp0aGlzIH07CisgICAgaWYgKHVucmVhZEJ5
dGVzKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIG1fd3JpdGFibGVPZmZzZXQgPSBT
aGFyZWREaXNwbGF5TGlzdEhhbmRsZTo6cmVzZXJ2ZWRDYXBhY2l0eUF0U3RhcnQ7CisgICAgcmV0
dXJuIHRydWU7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9EaXNwbGF5TGlzdFdyaXRlckhhbmRsZS5o
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9EaXNwbGF5TGlzdFdyaXRl
ckhhbmRsZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjEzODAxMjY1ZWUzODQ5NDMxYWRlOTE3ZjU4ZmE1M2IyNTkz
ZmI5NGQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dy
YXBoaWNzL0Rpc3BsYXlMaXN0V3JpdGVySGFuZGxlLmgKQEAgLTAsMCArMSw1NCBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJ
VFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
CisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiU2hhcmVkRGlzcGxheUxpc3RIYW5kbGUu
aCIKKyNpbmNsdWRlIDx3dGYvRmFzdE1hbGxvYy5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsKKwor
Y2xhc3MgRGlzcGxheUxpc3RXcml0ZXJIYW5kbGUgOiBwdWJsaWMgU2hhcmVkRGlzcGxheUxpc3RI
YW5kbGUgeworICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKERpc3BsYXlMaXN0V3JpdGVySGFuZGxl
KTsgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CitwdWJsaWM6CisgICAgRGlzcGxheUxpc3RXcml0
ZXJIYW5kbGUoV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1CdWZmZXJJZGVudGlmaWVyIGlkZW50
aWZpZXIsIFJlZjxTaGFyZWRNZW1vcnk+JiYgc2hhcmVkTWVtb3J5KQorICAgICAgICA6IFNoYXJl
ZERpc3BsYXlMaXN0SGFuZGxlKGlkZW50aWZpZXIsIFdURk1vdmUoc2hhcmVkTWVtb3J5KSkKKyAg
ICAgICAgLCBtX3dyaXRhYmxlT2Zmc2V0KFNoYXJlZERpc3BsYXlMaXN0SGFuZGxlOjpyZXNlcnZl
ZENhcGFjaXR5QXRTdGFydCkKKyAgICB7CisgICAgfQorCisgICAgc2l6ZV90IHdyaXRhYmxlT2Zm
c2V0KCkgY29uc3QgeyByZXR1cm4gbV93cml0YWJsZU9mZnNldDsgfQorICAgIHNpemVfdCBhdmFp
bGFibGVDYXBhY2l0eSgpIGNvbnN0OworCisgICAgYm9vbCByZXNldFdyaXRhYmxlT2Zmc2V0SWZQ
b3NzaWJsZSgpOworCisgICAgdm9pZCBhZHZhbmNlKHNpemVfdCBhbW91bnQpIG92ZXJyaWRlOwor
ICAgIFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtQnVmZmVySGFuZGxlIGNyZWF0ZUhhbmRsZSgp
IGNvbnN0OworCitwcml2YXRlOgorICAgIHNpemVfdCBtX3dyaXRhYmxlT2Zmc2V0IHsgMCB9Owor
fTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUltYWdlQnVmZmVyUHJveHkuaCBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlSW1hZ2VCdWZmZXJQcm94eS5oCmlu
ZGV4IDU5ODU3ZmYwN2E1YWMyZjRiMzJjNTY2MzI1MTRiNDVkZTEwMTk3YjguLjAxZTUzZTE1YzRi
MWQxZjUwYWZkNzBiZGNjOWIxNjg0NDk2ZTVkNjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlSW1hZ2VCdWZmZXJQcm94eS5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlSW1hZ2VCdWZmZXJQcm94
eS5oCkBAIC0zNCw2ICszNCw3IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9EaXNwbGF5TGlzdEltYWdl
QnVmZmVyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9EaXNwbGF5TGlzdEl0ZW1zLmg+CiAjaW5jbHVk
ZSA8V2ViQ29yZS9EaXNwbGF5TGlzdFJlY29yZGVyLmg+CisjaW5jbHVkZSA8d3RmL1N5c3RlbVRy
YWNpbmcuaD4KIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKQEAgLTEzOSw2ICsxNDAsNyBAQCBwcm90
ZWN0ZWQ6CiAKICAgICB2b2lkIGZsdXNoRHJhd2luZ0NvbnRleHQoKSBvdmVycmlkZQogICAgIHsK
KyAgICAgICAgVHJhY2VTY29wZSB0cmFjaW5nU2NvcGUoRmx1c2hSZW1vdGVJbWFnZUJ1ZmZlclN0
YXJ0LCBGbHVzaFJlbW90ZUltYWdlQnVmZmVyRW5kKTsKICAgICAgICAgZmx1c2hEcmF3aW5nQ29u
dGV4dEFuZENvbW1pdCgpOwogICAgICAgICB0aW1lb3V0V2FpdEZvckZsdXNoRGlzcGxheUxpc3RX
YXNDb21taXR0ZWQoKTsKICAgICB9CkBAIC0xNTIsOCArMTU0LDkgQEAgcHJvdGVjdGVkOgogICAg
ICAgICBpZiAoZGlzcGxheUxpc3QuaXNFbXB0eSgpKQogICAgICAgICAgICAgcmV0dXJuOwogCi0g
ICAgICAgIFRyYWNlU2NvcGUgdHJhY2luZ1Njb3BlKEZsdXNoUmVtb3RlSW1hZ2VCdWZmZXJTdGFy
dCwgRmx1c2hSZW1vdGVJbWFnZUJ1ZmZlckVuZCwgMSk7Ci0gICAgICAgIG1fc2VudEZsdXNoSWRl
bnRpZmllciA9IG1fcmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5LT5mbHVzaERpc3BsYXlMaXN0
QW5kQ29tbWl0KGRpc3BsYXlMaXN0LCBtX3JlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcik7Cisg
ICAgICAgIG1fc2VudEZsdXNoSWRlbnRpZmllciA9IFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpGbHVz
aElkZW50aWZpZXI6OmdlbmVyYXRlKCk7CisgICAgICAgIGRpc3BsYXlMaXN0LnRlbXBsYXRlIGFw
cGVuZDxXZWJDb3JlOjpEaXNwbGF5TGlzdDo6Rmx1c2hDb250ZXh0PihtX3NlbnRGbHVzaElkZW50
aWZpZXIpOworICAgICAgICBtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS0+c3VibWl0RGlz
cGxheUxpc3QoZGlzcGxheUxpc3QsIG1fcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKTsKICAg
ICAgICAgbV9pdGVtQ291bnRJbkN1cnJlbnREaXNwbGF5TGlzdCA9IDA7CiAgICAgICAgIGRpc3Bs
YXlMaXN0LmNsZWFyKCk7CiAgICAgfQpAQCAtMTYzLDcgKzE2Niw2IEBAIHByb3RlY3RlZDoKICAg
ICAgICAgaWYgKCFtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eSB8fCBkaXNwbGF5TGlzdC5p
c0VtcHR5KCkpCiAgICAgICAgICAgICByZXR1cm47CiAKLSAgICAgICAgVHJhY2VTY29wZSB0cmFj
aW5nU2NvcGUoRmx1c2hSZW1vdGVJbWFnZUJ1ZmZlclN0YXJ0LCBGbHVzaFJlbW90ZUltYWdlQnVm
ZmVyRW5kKTsKICAgICAgICAgbV9yZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHktPnN1Ym1pdERp
c3BsYXlMaXN0KGRpc3BsYXlMaXN0LCBtX3JlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcik7CiAg
ICAgfQogCkBAIC0xODIsNyArMTg0LDcgQEAgcHJvdGVjdGVkOgogICAgIFdlYkNvcmU6OkRpc3Bs
YXlMaXN0OjpJdGVtQnVmZmVySGFuZGxlIGNyZWF0ZUl0ZW1CdWZmZXIoc2l6ZV90IGNhcGFjaXR5
KSBvdmVycmlkZQogICAgIHsKICAgICAgICAgaWYgKG1fcmVtb3RlUmVuZGVyaW5nQmFja2VuZFBy
b3h5KQotICAgICAgICAgICAgcmV0dXJuIG1fcmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5LT5j
cmVhdGVJdGVtQnVmZmVyKGNhcGFjaXR5KTsKKyAgICAgICAgICAgIHJldHVybiBtX3JlbW90ZVJl
bmRlcmluZ0JhY2tlbmRQcm94eS0+Y3JlYXRlSXRlbUJ1ZmZlcihjYXBhY2l0eSwgbV9yZW5kZXJp
bmdSZXNvdXJjZUlkZW50aWZpZXIpOwogCiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwog
ICAgICAgICByZXR1cm4geyB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L0dQVS9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkuY3BwIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHku
Y3BwCmluZGV4IDhkODYxNWI4YTk2Yzc0NDcwYjA5NDM3ZDhjZDdjN2ExNjViYzY1ZGEuLmIwZTA2
NTQ3YzIwYzU3YWIxNTQ0NTI3OWUxZTVhNWZlMzBiYTE3YzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZVJl
bmRlcmluZ0JhY2tlbmRQcm94eS5jcHAKQEAgLTI4LDEzICsyOCwxMyBAQAogCiAjaWYgRU5BQkxF
KEdQVV9QUk9DRVNTKQogCisjaW5jbHVkZSAiRGlzcGxheUxpc3RXcml0ZXJIYW5kbGUuaCIKICNp
bmNsdWRlICJHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgiCiAjaW5jbHVkZSAiR1BVUHJvY2Vz
c0Nvbm5lY3Rpb24uaCIKICNpbmNsdWRlICJJbWFnZURhdGFSZWZlcmVuY2UuaCIKICNpbmNsdWRl
ICJQbGF0Zm9ybVJlbW90ZUltYWdlQnVmZmVyUHJveHkuaCIKICNpbmNsdWRlICJSZW1vdGVSZW5k
ZXJpbmdCYWNrZW5kTWVzc2FnZXMuaCIKICNpbmNsdWRlICJSZW1vdGVSZW5kZXJpbmdCYWNrZW5k
UHJveHlNZXNzYWdlcy5oIgotI2luY2x1ZGUgIlNoYXJlZERpc3BsYXlMaXN0SGFuZGxlLmgiCiAj
aW5jbHVkZSAiU2hhcmVkTWVtb3J5LmgiCiAjaW5jbHVkZSAiV2ViUHJvY2Vzcy5oIgogCkBAIC0x
MTUsMTggKzExNSwzMSBAQCBSZWZQdHI8SW1hZ2VEYXRhPiBSZW1vdGVSZW5kZXJpbmdCYWNrZW5k
UHJveHk6OmdldEltYWdlRGF0YShBbHBoYVByZW11bHRpcGxpY2F0aQogICAgIHJldHVybiBpbWFn
ZURhdGFSZWZlcmVuY2UuYnVmZmVyKCk7CiB9CiAKLXZvaWQgUmVtb3RlUmVuZGVyaW5nQmFja2Vu
ZFByb3h5OjpzdWJtaXREaXNwbGF5TGlzdChjb25zdCBEaXNwbGF5TGlzdDo6RGlzcGxheUxpc3Qm
IGRpc3BsYXlMaXN0LCBSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgcmVuZGVyaW5nUmVzb3Vy
Y2VJZGVudGlmaWVyKQordm9pZCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHk6OnN1Ym1pdERp
c3BsYXlMaXN0KGNvbnN0IERpc3BsYXlMaXN0OjpEaXNwbGF5TGlzdCYgZGlzcGxheUxpc3QsIFJl
bmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciBkZXN0aW5hdGlvbkJ1ZmZlcklkZW50aWZpZXIpCiB7
Ci0gICAgc2VuZChNZXNzYWdlczo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6U3VibWl0RGlzcGxh
eUxpc3QoeyBkaXNwbGF5TGlzdCB9LCByZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpLCBtX3Jl
bmRlcmluZ0JhY2tlbmRJZGVudGlmaWVyKTsKLSAgICBtX3NoYXJlZEl0ZW1CdWZmZXJzLmNsZWFy
KCk7Ci19CisgICAgT3B0aW9uYWw8c3RkOjpwYWlyPFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVt
QnVmZmVySWRlbnRpZmllciwgc2l6ZV90Pj4gaWRlbnRpZmllckFuZE9mZnNldEZvcldha2VVcE1l
c3NhZ2U7CisgICAgYm9vbCBpc0ZpcnN0SGFuZGxlID0gdHJ1ZTsKIAotRGlzcGxheUxpc3Q6OkZs
dXNoSWRlbnRpZmllciBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHk6OmZsdXNoRGlzcGxheUxp
c3RBbmRDb21taXQoY29uc3QgRGlzcGxheUxpc3Q6OkRpc3BsYXlMaXN0JiBkaXNwbGF5TGlzdCwg
UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyIHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcikK
LXsKLSAgICBhdXRvIHNlbnRGbHVzaElkZW50aWZpZXIgPSBEaXNwbGF5TGlzdDo6Rmx1c2hJZGVu
dGlmaWVyOjpnZW5lcmF0ZSgpOwotICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZVJlbmRlcmluZ0Jh
Y2tlbmQ6OkZsdXNoRGlzcGxheUxpc3RBbmRDb21taXQoeyBkaXNwbGF5TGlzdCB9LCBzZW50Rmx1
c2hJZGVudGlmaWVyLCByZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpLCBtX3JlbmRlcmluZ0Jh
Y2tlbmRJZGVudGlmaWVyKTsKLSAgICBtX3NoYXJlZEl0ZW1CdWZmZXJzLmNsZWFyKCk7Ci0gICAg
cmV0dXJuIHNlbnRGbHVzaElkZW50aWZpZXI7CisgICAgZGlzcGxheUxpc3QuZm9yRWFjaEl0ZW1C
dWZmZXIoWyZdIChhdXRvJiBoYW5kbGUpIHsKKyAgICAgICAgbV9pZGVudGlmaWVyc09mSGFuZGxl
c0F2YWlsYWJsZUZvcldyaXRpbmcuYWRkKGhhbmRsZS5pZGVudGlmaWVyKTsKKworICAgICAgICBh
dXRvKiBzaGFyZWRIYW5kbGUgPSBtX3NoYXJlZERpc3BsYXlMaXN0SGFuZGxlcy5nZXQoaGFuZGxl
LmlkZW50aWZpZXIpOworICAgICAgICBSRUxFQVNFX0FTU0VSVF9XSVRIX01FU1NBR0Uoc2hhcmVk
SGFuZGxlLCAiJXMgZmFpbGVkIHRvIGZpbmQgc2hhcmVkIGRpc3BsYXkgbGlzdCIsIF9fUFJFVFRZ
X0ZVTkNUSU9OX18pOworCisgICAgICAgIGF1dG8gbG9ja2VyID0gU2hhcmVkRGlzcGxheUxpc3RI
YW5kbGU6OkxvY2sgeyAqc2hhcmVkSGFuZGxlIH07CisKKyAgICAgICAgYm9vbCB1bnJlYWRDb3Vu
dFdhc0VtcHR5ID0gIXNoYXJlZEhhbmRsZS0+dW5yZWFkQnl0ZXMoKTsKKyAgICAgICAgc2hhcmVk
SGFuZGxlLT5hZHZhbmNlKGhhbmRsZS5jYXBhY2l0eSk7CisgICAgICAgIGlmIChpc0ZpcnN0SGFu
ZGxlICYmIHVucmVhZENvdW50V2FzRW1wdHkpCisgICAgICAgICAgICBpZGVudGlmaWVyQW5kT2Zm
c2V0Rm9yV2FrZVVwTWVzc2FnZSA9IHt7IGhhbmRsZS5pZGVudGlmaWVyLCBoYW5kbGUuZGF0YSAt
IHNoYXJlZEhhbmRsZS0+ZGF0YSgpIH19OworCisgICAgICAgIGlzRmlyc3RIYW5kbGUgPSBmYWxz
ZTsKKyAgICB9KTsKKworICAgIGlmIChpZGVudGlmaWVyQW5kT2Zmc2V0Rm9yV2FrZVVwTWVzc2Fn
ZSkgeworICAgICAgICBhdXRvIFtpZGVudGlmaWVyLCBvZmZzZXRdID0gKmlkZW50aWZpZXJBbmRP
ZmZzZXRGb3JXYWtlVXBNZXNzYWdlOworICAgICAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVSZW5k
ZXJpbmdCYWNrZW5kOjpXYWtlVXBBbmRBcHBseURpc3BsYXlMaXN0KGlkZW50aWZpZXIsIG9mZnNl
dCwgZGVzdGluYXRpb25CdWZmZXJJZGVudGlmaWVyKSwgbV9yZW5kZXJpbmdCYWNrZW5kSWRlbnRp
Zmllcik7CisgICAgfQogfQogCiB2b2lkIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eTo6cmVs
ZWFzZVJlbW90ZVJlc291cmNlKFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciByZW5kZXJpbmdS
ZXNvdXJjZUlkZW50aWZpZXIpCkBAIC0xNTksMjEgKzE3Miw1NiBAQCB2b2lkIFJlbW90ZVJlbmRl
cmluZ0JhY2tlbmRQcm94eTo6Zmx1c2hEaXNwbGF5TGlzdFdhc0NvbW1pdHRlZChEaXNwbGF5TGlz
dDo6Rmx1cwogICAgICAgICBkb3duY2FzdDxVbmFjY2VsZXJhdGVkUmVtb3RlSW1hZ2VCdWZmZXJQ
cm94eT4oKmltYWdlQnVmZmVyKS5jb21taXRGbHVzaERpc3BsYXlMaXN0KGZsdXNoSWRlbnRpZmll
cik7CiB9CiAKLURpc3BsYXlMaXN0OjpJdGVtQnVmZmVySGFuZGxlIFJlbW90ZVJlbmRlcmluZ0Jh
Y2tlbmRQcm94eTo6Y3JlYXRlSXRlbUJ1ZmZlcihzaXplX3QgY2FwYWNpdHkpCit2b2lkIFJlbW90
ZVJlbmRlcmluZ0JhY2tlbmRQcm94eTo6dXBkYXRlUmV1c2FibGVIYW5kbGVzKCkKK3sKKyAgICBm
b3IgKGF1dG8gaWRlbnRpZmllciA6IG1faWRlbnRpZmllcnNPZkhhbmRsZXNBdmFpbGFibGVGb3JX
cml0aW5nKSB7CisgICAgICAgIGF1dG8qIGhhbmRsZSA9IG1fc2hhcmVkRGlzcGxheUxpc3RIYW5k
bGVzLmdldChpZGVudGlmaWVyKTsKKyAgICAgICAgaWYgKCFoYW5kbGUtPnJlc2V0V3JpdGFibGVP
ZmZzZXRJZlBvc3NpYmxlKCkpCisgICAgICAgICAgICBjb250aW51ZTsKKworICAgICAgICBpZiAo
bV9pZGVudGlmaWVyc09mUmV1c2FibGVIYW5kbGVzLmNvbnRhaW5zKGlkZW50aWZpZXIpKQorICAg
ICAgICAgICAgY29udGludWU7CisKKyAgICAgICAgbV9pZGVudGlmaWVyc09mUmV1c2FibGVIYW5k
bGVzLmFwcGVuZChpZGVudGlmaWVyKTsKKyAgICB9Cit9CisKK0Rpc3BsYXlMaXN0OjpJdGVtQnVm
ZmVySGFuZGxlIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eTo6Y3JlYXRlSXRlbUJ1ZmZlcihz
aXplX3QgY2FwYWNpdHksIFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciBkZXN0aW5hdGlvbkJ1
ZmZlcklkZW50aWZpZXIpCiB7CisgICAgdXBkYXRlUmV1c2FibGVIYW5kbGVzKCk7CisKKyAgICB3
aGlsZSAoIW1faWRlbnRpZmllcnNPZlJldXNhYmxlSGFuZGxlcy5pc0VtcHR5KCkpIHsKKyAgICAg
ICAgYXV0byBpZGVudGlmaWVyID0gbV9pZGVudGlmaWVyc09mUmV1c2FibGVIYW5kbGVzLmZpcnN0
KCk7CisgICAgICAgIGF1dG8qIHJldXNhYmxlSGFuZGxlID0gbV9zaGFyZWREaXNwbGF5TGlzdEhh
bmRsZXMuZ2V0KGlkZW50aWZpZXIpOworICAgICAgICBSRUxFQVNFX0FTU0VSVF9XSVRIX01FU1NB
R0UocmV1c2FibGVIYW5kbGUsICIlcyBmYWlsZWQgdG8gZmluZCBzaGFyZWQgZGlzcGxheSBsaXN0
IiwgX19QUkVUVFlfRlVOQ1RJT05fXyk7CisKKyAgICAgICAgaWYgKG1faWRlbnRpZmllcnNPZkhh
bmRsZXNBdmFpbGFibGVGb3JXcml0aW5nLmNvbnRhaW5zKGlkZW50aWZpZXIpICYmIHJldXNhYmxl
SGFuZGxlLT5hdmFpbGFibGVDYXBhY2l0eSgpID49IGNhcGFjaXR5KSB7CisgICAgICAgICAgICBt
X2lkZW50aWZpZXJzT2ZIYW5kbGVzQXZhaWxhYmxlRm9yV3JpdGluZy5yZW1vdmUoaWRlbnRpZmll
cik7CisgICAgICAgICAgICByZXR1cm4gcmV1c2FibGVIYW5kbGUtPmNyZWF0ZUhhbmRsZSgpOwor
ICAgICAgICB9CisKKyAgICAgICAgbV9pZGVudGlmaWVyc09mUmV1c2FibGVIYW5kbGVzLnJlbW92
ZUZpcnN0KCk7CisgICAgfQorCiAgICAgc3RhdGljIGNvbnN0ZXhwciBzaXplX3QgZGVmYXVsdFNo
YXJlZEl0ZW1CdWZmZXJTaXplID0gMSA8PCAxNjsKIAotICAgIGF1dG8gc2hhcmVkTWVtb3J5ID0g
U2hhcmVkTWVtb3J5OjphbGxvY2F0ZShzdGQ6Om1heChkZWZhdWx0U2hhcmVkSXRlbUJ1ZmZlclNp
emUsIGNhcGFjaXR5KSk7CisgICAgYXV0byBzaGFyZWRNZW1vcnkgPSBTaGFyZWRNZW1vcnk6OmFs
bG9jYXRlKHN0ZDo6bWF4KGRlZmF1bHRTaGFyZWRJdGVtQnVmZmVyU2l6ZSwgY2FwYWNpdHkgKyBT
aGFyZWREaXNwbGF5TGlzdEhhbmRsZTo6cmVzZXJ2ZWRDYXBhY2l0eUF0U3RhcnQpKTsKICAgICBp
ZiAoIXNoYXJlZE1lbW9yeSkKICAgICAgICAgcmV0dXJuIHsgfTsKIAotICAgIGF1dG8gaWRlbnRp
ZmllciA9IERpc3BsYXlMaXN0OjpJdGVtQnVmZmVySWRlbnRpZmllcjo6Z2VuZXJhdGUoKTsKICAg
ICBTaGFyZWRNZW1vcnk6OkhhbmRsZSBzaGFyZWRNZW1vcnlIYW5kbGU7Ci0gICAgc2hhcmVkTWVt
b3J5LT5jcmVhdGVIYW5kbGUoc2hhcmVkTWVtb3J5SGFuZGxlLCBTaGFyZWRNZW1vcnk6OlByb3Rl
Y3Rpb246OlJlYWRPbmx5KTsKLSAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVSZW5kZXJpbmdCYWNr
ZW5kOjpEaWRDcmVhdGVTaGFyZWRJdGVtRGF0YShpZGVudGlmaWVyLCB7IFdURk1vdmUoc2hhcmVk
TWVtb3J5SGFuZGxlKSwgc2hhcmVkTWVtb3J5LT5zaXplKCkgfSksIG1fcmVuZGVyaW5nQmFja2Vu
ZElkZW50aWZpZXIpOwotICAgIG1fc2hhcmVkSXRlbUJ1ZmZlcnMuc2V0KGlkZW50aWZpZXIsIHNo
YXJlZE1lbW9yeS5jb3B5UmVmKCkpOworICAgIHNoYXJlZE1lbW9yeS0+Y3JlYXRlSGFuZGxlKHNo
YXJlZE1lbW9yeUhhbmRsZSwgU2hhcmVkTWVtb3J5OjpQcm90ZWN0aW9uOjpSZWFkV3JpdGUpOwor
CisgICAgYXV0byBpZGVudGlmaWVyID0gRGlzcGxheUxpc3Q6Okl0ZW1CdWZmZXJJZGVudGlmaWVy
OjpnZW5lcmF0ZSgpOworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6
OkRpZENyZWF0ZVNoYXJlZERpc3BsYXlMaXN0SGFuZGxlKGlkZW50aWZpZXIsIHsgV1RGTW92ZShz
aGFyZWRNZW1vcnlIYW5kbGUpLCBzaGFyZWRNZW1vcnktPnNpemUoKSB9LCBkZXN0aW5hdGlvbkJ1
ZmZlcklkZW50aWZpZXIpLCBtX3JlbmRlcmluZ0JhY2tlbmRJZGVudGlmaWVyKTsKKworICAgIGF1
dG8gbmV3SGFuZGxlID0gbWFrZVVuaXF1ZTxEaXNwbGF5TGlzdFdyaXRlckhhbmRsZT4oaWRlbnRp
Zmllciwgc2hhcmVkTWVtb3J5LnJlbGVhc2VOb25OdWxsKCkpOworICAgIGF1dG8gZGlzcGxheUxp
c3RIYW5kbGUgPSBuZXdIYW5kbGUtPmNyZWF0ZUhhbmRsZSgpOworCisgICAgbV9pZGVudGlmaWVy
c09mUmV1c2FibGVIYW5kbGVzLmFwcGVuZChpZGVudGlmaWVyKTsKKyAgICBtX3NoYXJlZERpc3Bs
YXlMaXN0SGFuZGxlcy5zZXQoaWRlbnRpZmllciwgV1RGTW92ZShuZXdIYW5kbGUpKTsKIAotICAg
IHJldHVybiB7IGlkZW50aWZpZXIsIHJlaW50ZXJwcmV0X2Nhc3Q8dWludDhfdCo+KHNoYXJlZE1l
bW9yeS0+ZGF0YSgpKSwgc2hhcmVkTWVtb3J5LT5zaXplKCkgfTsKKyAgICByZXR1cm4gZGlzcGxh
eUxpc3RIYW5kbGU7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5k
UHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlUmVu
ZGVyaW5nQmFja2VuZFByb3h5LmgKaW5kZXggYTU0MmM4MzM1ZTBlNTMzZTA1MTNlNTc2NDI2MjQ1
ZWJiNzY0MWNmOS4uYTkxNTc0MDY1ZTJhMDFkMTYzMzdlY2I2ZmU3ZjQ0MGVjMzBiNTc5YSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVSZW5k
ZXJpbmdCYWNrZW5kUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dy
YXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS5oCkBAIC0zNCw2ICszNCw3IEBACiAj
aW5jbHVkZSAiUmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXIuaCIKICNpbmNsdWRlIDxXZWJDb3Jl
L0Rpc3BsYXlMaXN0Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9SZW5kZXJpbmdSZXNvdXJjZUlkZW50
aWZpZXIuaD4KKyNpbmNsdWRlIDx3dGYvRGVxdWUuaD4KICNpbmNsdWRlIDx3dGYvV2Vha1B0ci5o
PgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC01MCw2ICs1MSw4IEBAIGVudW0gY2xhc3MgUmVu
ZGVyaW5nTW9kZSA6IGJvb2w7CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCitjbGFzcyBEaXNwbGF5
TGlzdFdyaXRlckhhbmRsZTsKKwogY2xhc3MgUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5CiAg
ICAgOiBwdWJsaWMgSVBDOjpNZXNzYWdlU2VuZGVyCiAgICAgLCBwcml2YXRlIElQQzo6TWVzc2Fn
ZVJlY2VpdmVyCkBAIC02MCw3ICs2Myw3IEBAIHB1YmxpYzoKICAgICB+UmVtb3RlUmVuZGVyaW5n
QmFja2VuZFByb3h5KCk7CiAKICAgICBSZW1vdGVSZXNvdXJjZUNhY2hlUHJveHkmIHJlbW90ZVJl
c291cmNlQ2FjaGVQcm94eSgpIHsgcmV0dXJuIG1fcmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5OyB9
Ci0gICAgV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1CdWZmZXJIYW5kbGUgY3JlYXRlSXRlbUJ1
ZmZlcihzaXplX3QpOworICAgIFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtQnVmZmVySGFuZGxl
IGNyZWF0ZUl0ZW1CdWZmZXIoc2l6ZV90IGNhcGFjaXR5LCBXZWJDb3JlOjpSZW5kZXJpbmdSZXNv
dXJjZUlkZW50aWZpZXIgZGVzdGluYXRpb25CdWZmZXJJZGVudGlmaWVyKTsKIAogICAgIC8vIElQ
Qzo6TWVzc2FnZVNlbmRlci4KICAgICBJUEM6OkNvbm5lY3Rpb24qIG1lc3NhZ2VTZW5kZXJDb25u
ZWN0aW9uKCkgY29uc3Qgb3ZlcnJpZGU7CkBAIC03Miw3ICs3NSw3IEBAIHB1YmxpYzoKICAgICAv
LyBNZXNzYWdlcyB0byBiZSBzZW50LgogICAgIFJlZlB0cjxXZWJDb3JlOjpJbWFnZUJ1ZmZlcj4g
Y3JlYXRlSW1hZ2VCdWZmZXIoY29uc3QgV2ViQ29yZTo6RmxvYXRTaXplJiwgV2ViQ29yZTo6UmVu
ZGVyaW5nTW9kZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBXZWJDb3JlOjpDb2xvclNwYWNlKTsK
ICAgICBSZWZQdHI8V2ViQ29yZTo6SW1hZ2VEYXRhPiBnZXRJbWFnZURhdGEoV2ViQ29yZTo6QWxw
aGFQcmVtdWx0aXBsaWNhdGlvbiBvdXRwdXRGb3JtYXQsIGNvbnN0IFdlYkNvcmU6OkludFJlY3Qm
IHNyY1JlY3QsIFdlYkNvcmU6OlJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcik7Ci0gICAgdm9p
ZCBzdWJtaXREaXNwbGF5TGlzdChjb25zdCBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RGlzcGxheUxp
c3QmLCBXZWJDb3JlOjpSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpOworICAgIHZvaWQgc3Vi
bWl0RGlzcGxheUxpc3QoY29uc3QgV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRpc3BsYXlMaXN0Jiwg
V2ViQ29yZTo6UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyIGRlc3RpbmF0aW9uQnVmZmVySWRl
bnRpZmllcik7CiAgICAgV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkZsdXNoSWRlbnRpZmllciBmbHVz
aERpc3BsYXlMaXN0QW5kQ29tbWl0KGNvbnN0IFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEaXNwbGF5
TGlzdCYsIFdlYkNvcmU6OlJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcik7CiAgICAgdm9pZCBy
ZWxlYXNlUmVtb3RlUmVzb3VyY2UoV2ViQ29yZTo6UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVy
KTsKIApAQCAtODIsMTIgKzg1LDE2IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgUmVtb3RlUmVu
ZGVyaW5nQmFja2VuZFByb3h5KCk7CiAKKyAgICB2b2lkIHVwZGF0ZVJldXNhYmxlSGFuZGxlcygp
OworCiAgICAgLy8gTWVzc2FnZXMgdG8gYmUgcmVjZWl2ZWQuCiAgICAgdm9pZCBpbWFnZUJ1ZmZl
ckJhY2tlbmRXYXNDcmVhdGVkKGNvbnN0IFdlYkNvcmU6OkZsb2F0U2l6ZSYgbG9naWNhbFNpemUs
IGNvbnN0IFdlYkNvcmU6OkludFNpemUmIGJhY2tlbmRTaXplLCBmbG9hdCByZXNvbHV0aW9uU2Nh
bGUsIFdlYkNvcmU6OkNvbG9yU3BhY2UsIEltYWdlQnVmZmVyQmFja2VuZEhhbmRsZSwgV2ViQ29y
ZTo6UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKTsKICAgICB2b2lkIGZsdXNoRGlzcGxheUxp
c3RXYXNDb21taXR0ZWQoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkZsdXNoSWRlbnRpZmllciwgV2Vi
Q29yZTo6UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKTsKIAogICAgIFJlbW90ZVJlc291cmNl
Q2FjaGVQcm94eSBtX3JlbW90ZVJlc291cmNlQ2FjaGVQcm94eTsKLSAgICBIYXNoTWFwPFdlYkNv
cmU6OkRpc3BsYXlMaXN0OjpJdGVtQnVmZmVySWRlbnRpZmllciwgUmVmUHRyPFNoYXJlZE1lbW9y
eT4+IG1fc2hhcmVkSXRlbUJ1ZmZlcnM7CisgICAgSGFzaE1hcDxXZWJDb3JlOjpEaXNwbGF5TGlz
dDo6SXRlbUJ1ZmZlcklkZW50aWZpZXIsIHN0ZDo6dW5pcXVlX3B0cjxEaXNwbGF5TGlzdFdyaXRl
ckhhbmRsZT4+IG1fc2hhcmVkRGlzcGxheUxpc3RIYW5kbGVzOworICAgIERlcXVlPFdlYkNvcmU6
OkRpc3BsYXlMaXN0OjpJdGVtQnVmZmVySWRlbnRpZmllcj4gbV9pZGVudGlmaWVyc09mUmV1c2Fi
bGVIYW5kbGVzOworICAgIEhhc2hTZXQ8V2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1CdWZmZXJJ
ZGVudGlmaWVyPiBtX2lkZW50aWZpZXJzT2ZIYW5kbGVzQXZhaWxhYmxlRm9yV3JpdGluZzsKICAg
ICBSZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllciBtX3JlbmRlcmluZ0JhY2tlbmRJZGVudGlmaWVy
IHsgUmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXI6OmdlbmVyYXRlKCkgfTsKIH07CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>413767</attachid>
            <date>2020-11-10 20:47:47 -0800</date>
            <delta_ts>2020-11-10 21:33:57 -0800</delta_ts>
            <desc>For EWS</desc>
            <filename>bug-218426-20201110204746.patch</filename>
            <type>text/plain</type>
            <size>63628</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY5NjQwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGMxYWQ2MTAyZDg0MTkyZDM2
MTMyNzIxODEzYTFjMGU4ZjBjMTVhM2IuLjZhZjMyNmVjZmM1MDlhMWE1N2FkZTIxOGI5NDE1Nzg4
NDk1YTQ2OTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUzIEBACisyMDIwLTExLTEwICBXZW5zb24g
SHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAgICAgIFtDb25jdXJyZW50IGRp
c3BsYXkgbGlzdHNdIEFkZCBhbiBpbml0aWFsIGltcGxlbWVudGF0aW9uIG9mIGNvbmN1cnJlbnQg
ZGlzcGxheSBsaXN0IHJlbmRlcmluZworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MjE4NDI2CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS83MTE2NzIyMD4K
KworICAgICAgICBSZXZpZXdlZCBieSBSeW9zdWtlIE5pd2EuCisKKyAgICAgICAgVGhpcyBwYXRj
aCBhZGRzIGEgZmlyc3QtY3V0IGltcGxlbWVudGF0aW9uIG9mIGNvbmN1cnJlbnQgZGlzcGxheSBs
aXN0IHJlbmRlcmluZywgd2hpY2ggYWxsb3dzIHRoZSBHUFUgYW5kIHdlYgorICAgICAgICBwcm9j
ZXNzZXMgdG8gcmVhZCBhbmQgd3JpdGUgZGlzcGxheSBsaXN0IGRhdGEgYXQgdGhlIHNhbWUgdGlt
ZS4gVG8gYWNoaWV2ZSB0aGlzLCB3ZSByZW1vdmUgdGhlIHBsYWNlaG9sZGVyCisgICAgICAgIHNo
YXJlZCBtZW1vcnkgZGlzcGxheSBsaXN0IGVuY29kaW5nIG1lY2hhbmlzbSBwcmV2aW91c2x5IGFk
ZGVkIGluIDx3ZWJraXQub3JnL2IvMjE4NDA2PiwgYW5kIHJlcGxhY2UgaXQgd2l0aCBhCisgICAg
ICAgIG5ldyBtb2RlbCBpbiB3aGljaCBhIHdyaXRlciAoaS5lLiB0aGUgd2ViIHByb2Nlc3MpIGFu
ZCBhIHJlYWRlciAoaS5lLiB0aGUgR1BVIHByb2Nlc3MpIHNoYXJlIGEgc2V0IG9mIHJldXNhYmxl
CisgICAgICAgIHNoYXJlZCBtZW1vcnkgYnVmZmVycyB3aGljaCBjb250YWluIGRpc3BsYXkgbGlz
dCBpdGVtIGRhdGEuIEFzIHRoZSB3cml0ZXIgYXBwZW5kcyBkYXRhIHRvIHNoYXJlZCBtZW1vcnks
IGl0CisgICAgICAgIGluY3JlbWVudHMgYSBjb3VudGVyIGluIGVhY2ggc2hhcmVkIG1lbW9yeSBi
dWZmZXIgdGhhdCByZXByZXNlbnRzIHRoZSBudW1iZXIgb2YgYnl0ZXMgdGhhdCB0aGUgcmVhZGVy
IGhhcyB5ZXQgdG8KKyAgICAgICAgcmVhZDsgYXMgdGhlIHJlYWRlciByZWFkcyBkaXNwbGF5IGxp
c3QgaXRlbXMgZnJvbSBzaGFyZWQgbWVtb3J5LCBpdCBkZWNyZW1lbnRzIHRoaXMgY291bnRlci4K
KworICAgICAgICBUaGlzIHBhdGNoIGFsc28gaW1wbGVtZW50cyBhIHNpbXBsZSBzdHJhdGVneSBm
b3IgcmV1c2luZyB0aGVzZSBzaGFyZWQgaXRlbSBidWZmZXJzLiBUaGUgd2ViIHByb2Nlc3MgbWFp
bnRhaW5zIGEKKyAgICAgICAgcXVldWUgb2YgcmV1c2FibGUgYnVmZmVyczsgd2hlbiBkaXNwbGF5
IGxpc3QgaXRlbXMgYXJlIGFwcGVuZGVkIGFuZCB0aGUgY3VycmVudCB3cml0YWJsZSBidWZmZXIg
aXMgb3V0IG9mCisgICAgICAgIGNhcGFjaXR5LCB0aGUgZGlzcGxheSBsaXN0IGl0ZW0gYnVmZmVy
IGNhbGxzIG91dCB0byBXZWJLaXQyIHZpYSBhIGNsaWVudCBtZXRob2QgdG8gcmVxdWVzdCBtb3Jl
IHNoYXJlZCBtZW1vcnkuCisgICAgICAgIEhlcmUsIHRoZSB3ZWIgcHJvY2VzcyB0cmF2ZXJzZXMg
dGhlIHF1ZXVlIG9mIHJldXNhYmxlIGl0ZW0gYnVmZmVycyBpbiBzZWFyY2ggb2YgYSBidWZmZXIg
d2l0aCBzdWZmaWNpZW50CisgICAgICAgIGNhcGFjaXR5OyBpZiBmb3VuZCwgd2UgaGFuZCB0aGlz
IGJhY2sgdG8gV2ViQ29yZSBhcyBhbiBvcGFxdWUgYEl0ZW1CdWZmZXJIYW5kbGVgOyBvdGhlcndp
c2UsIHdlIGFsbG9jYXRlIGEgbmV3CisgICAgICAgIHJldXNhYmxlIHNoYXJlZCBtZW1vcnkgYnVm
ZmVyLiBJdGVtIGJ1ZmZlcnMgdGhhdCBoYXZlIGJlZW4gdXNlZCBiZWNvbWUgcmV1c2FibGUgb25s
eSBhZnRlciB0aGV5IGFyZSAoMSkgbm8KKyAgICAgICAgbG9uZ2VyIGJlaW5nIHJlYWQgZnJvbSAt
LSBpLmUuLCB0aGUgY291bnRlciB2YWx1ZSBpcyAwLCBhbmQgKDIpIHRoZXkgYXJlIG5vdCBhY3Rp
dmVseSBiZWluZyB3cml0dGVuIHRvLgorICAgICAgICBCdWZmZXJzIHRoYXQgaGF2ZSBiZWVuIHVz
ZWQgYXJlIGxhemlseSByZWludHJvZHVjZWQgaW50byB0aGUgcmV1c2UgcXVldWUgd2hlbiBhIGRp
c3BsYXkgbGlzdCByZXF1ZXN0cyBhIGhhbmRsZQorICAgICAgICB0byB3cml0YWJsZSBpdGVtIGJ1
ZmZlciBkYXRhLgorCisgICAgICAgIFNlZSBiZWxvdyBmb3IgbW9yZSBkZXRhaWxzLgorCisgICAg
ICAgICogR1BVUHJvY2Vzcy9ncmFwaGljcy9EaXNwbGF5TGlzdFJlYWRlckhhbmRsZS5jcHA6IENv
cGllZCBmcm9tIFNvdXJjZS9XZWJLaXQvU2hhcmVkL1NoYXJlZERpc3BsYXlMaXN0SGFuZGxlLmNw
cC4KKyAgICAgICAgKFdlYktpdDo6RGlzcGxheUxpc3RSZWFkZXJIYW5kbGU6OmFkdmFuY2UpOgor
ICAgICAgICAoV2ViS2l0OjpEaXNwbGF5TGlzdFJlYWRlckhhbmRsZTo6ZGlzcGxheUxpc3RGb3JS
ZWFkaW5nIGNvbnN0KToKKyAgICAgICAgKiBHUFVQcm9jZXNzL2dyYXBoaWNzL0Rpc3BsYXlMaXN0
UmVhZGVySGFuZGxlLmg6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJLaXQvU2hhcmVkL1NoYXJlZERp
c3BsYXlMaXN0SGFuZGxlLmNwcC4KKyAgICAgICAgKFdlYktpdDo6RGlzcGxheUxpc3RSZWFkZXJI
YW5kbGU6OmNyZWF0ZSk6CisgICAgICAgIChXZWJLaXQ6OkRpc3BsYXlMaXN0UmVhZGVySGFuZGxl
OjpEaXNwbGF5TGlzdFJlYWRlckhhbmRsZSk6CisKKyAgICAgICAgQWRkIGEgbmV3IGhlbHBlciBj
bGFzcyB0byByZXByZXNlbnQgYSBzaGFyZWQgZGlzcGxheSBsaXN0IGl0ZW0gYnVmZmVyIHRoYXQg
dGhlIEdQVSBwcm9jZXNzIGNhbiB1c2UgdG8gY29uc3VtZQorICAgICAgICBkaXNwbGF5IGxpc3Qg
aXRlbXMuIEFkdmFuY2luZyB0aGUgY3Vyc29yIGluIGBEaXNwbGF5TGlzdFJlYWRlckhhbmRsZWAg
ZGVjcmVtZW50cyB0aGUgInJlbWFpbmluZyBieXRlcyIgY291bnRlcjsKKyAgICAgICAgdGhlIGNs
YXNzIGFsc28gaGFzIGEgaGVscGVyIG1ldGhvZCBmb3IgY3JlYXRpbmcgYSBuZXcgYERpc3BsYXlM
aXN0YCB3aXRoIGEgZ2l2ZW4gb2Zmc2V0IGludG8gdGhlIHNoYXJlZCBidWZmZXIsCisgICAgICAg
IGFzIHdlbGwgdGhlIG51bWJlciBvZiBieXRlcyB0byByZWFkLgorCisgICAgICAgICogR1BVUHJv
Y2Vzcy9ncmFwaGljcy9SZW1vdGVJbWFnZUJ1ZmZlci5oOgorCisgICAgICAgIEhhbmRsZSB0aGUg
YE1ldGFDb21tYW5kU3dpdGNoVG9gIGFuZCBgRmx1c2hDb250ZXh0YCBpdGVtcyBieSAocmVzcGVj
dGl2ZWx5KSBpbmZvcm1pbmcgdGhlIHJlbmRlcmluZyBiYWNrZW5kCisgICAgICAgIGFib3V0IHRo
ZSBuZXh0IGJ1ZmZlciB0byByZWFkIGZyb20sIGFuZCBzZW5kaW5nIGEgImZsdXNoIGNvbW1pdHRl
ZCIgSVBDIG1lc3NhZ2UgYmFjayB0byB0aGUgd2ViIHByb2Nlc3MuCisKKyAgICAgICAgKFdlYktp
dDo6UmVtb3RlSW1hZ2VCdWZmZXI6OlJlbW90ZUltYWdlQnVmZmVyKToKKyAgICAgICAgKiBHUFVQ
cm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQuY3BwOgorICAgICAgICAoV2Vi
S2l0OjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjphcHBseURpc3BsYXlMaXN0c0Zyb21IYW5kbGUp
OgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjp3YWtlVXBBbmRBcHBs
eURpc3BsYXlMaXN0KToKKworICAgICAgICBUaGlzIGlzIHRoZSBtYWluIGxvb3AgaW4gdGhlIEdQ
VSBwcm9jZXNzIHRoYXQgaXMgcmVzcG9uc2libGUgZm9yIGFwcGx5aW5nIGluY29taW5nIGRpc3Bs
YXkgbGlzdCBpdGVtIGRhdGEuIFRoaXMKKyAgICAgICAgSVBDIGVuZHBvaW50IHJlY2VpdmVzIGlu
Zm9ybWF0aW9uIGFib3V0IHdoZXJlIHRvIHN0YXJ0IChpLmUuIGFuIGl0ZW0gYnVmZmVyIElEIGFu
ZCBhbiBvZmZzZXQgaW50byBzaGFyZWQgbWVtb3J5CisgICAgICAgIGluIHRoYXQgYnVmZmVyKSBh
bmQgYmVnaW5zIHJlYWRpbmcgcmFuZ2VzIG9mIGRpc3BsYXkgbGlzdCBpdGVtIGRhdGEgaW5zaWRl
IHRoYXQgYnVmZmVyLiBBZnRlciBpdCBpcyBkb25lCisgICAgICAgIHByb2Nlc3NpbmcgYWxsIG9m
IGl0cyB1bnJlYWQgYnl0ZXMsIGl0IHRoZW4gY2hlY2tzIHRoZSB1bnJlYWQgYnl0ZSBjb3VudCBv
bmNlIGFnYWluLCBhbmQgY29udGludWVzIHRoZSBsb29wIGlmCisgICAgICAgIHRoZSB3ZWIgcHJv
Y2VzcyBoYXMgYWR2YW5jZWQgdGhpcyBjb3VudC4KKworICAgICAgICAoV2ViS2l0OjpSZW1vdGVS
ZW5kZXJpbmdCYWNrZW5kOjpzZXROZXh0SXRlbUJ1ZmZlclRvUmVhZCk6CisgICAgICAgIChXZWJL
aXQ6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OmRpZENyZWF0ZVNoYXJlZERpc3BsYXlMaXN0SGFu
ZGxlKToKKworICAgICAgICBBZGQgbG9naWMgdG8gaGFuZGxlIHRoZSBjYXNlIHdoZXJlIHdlIHJl
YWNoZWQgdGhlIGVuZCBvZiBhbiBpdGVtIGJ1ZmZlciwgYnV0IHRoZSBuZXh0IGJ1ZmZlciBpZGVu
dGlmaWVyIGlzIHN0aWxsCisgICAgICAgIHVua25vd24gdG8gdXMgKHNpbmNlIGl0IGlzIHN0aWxs
ICJpbiB0cmFuc2l0IiB2aWEgdGhlIGBEaWRDcmVhdGVTaGFyZWREaXNwbGF5TGlzdEhhbmRsZWAg
SVBDIG1lc3NhZ2UpLiBJbiB0aGlzCisgICAgICAgIGNhc2UsIHdlIHJlbWVtYmVyIHRoZSBuZXh0
IGJ1ZmZlciBpZGVudGlmaWVyIGluIGBtX25leHRJdGVtQnVmZmVyVG9SZWFkYCwgYW5kIGV4aXQg
dGhlIHByb2Nlc3NpbmcgbG9vcCBpbnNpZGUKKyAgICAgICAgYHdha2VVcEFuZEFwcGx5RGlzcGxh
eUxpc3RgLiBVcG9uIHJlY2VpdmluZyB0aGUgc2hhcmVkIG1lbW9yeSBoYW5kbGUgaW4gYGRpZENy
ZWF0ZVNoYXJlZERpc3BsYXlMaXN0SGFuZGxlYCwgd2UKKyAgICAgICAgdGhlbiBhdXRvbWF0aWNh
bGx5IHJlc3VtZSBkaXNwbGF5IGxpc3QgcHJvY2Vzc2luZywgc3RhcnRpbmcgZnJvbSB0aGUgYmVn
aW5uaW5nIG9mIHRoaXMgbmV3IGJ1ZmZlci4KKworICAgICAgICAoV2ViS2l0OjpSZW1vdGVSZW5k
ZXJpbmdCYWNrZW5kOjphcHBseURpc3BsYXlMaXN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktp
dDo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6c3VibWl0RGlzcGxheUxpc3QpOiBEZWxldGVkLgor
ICAgICAgICAoV2ViS2l0OjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpmbHVzaERpc3BsYXlMaXN0
QW5kQ29tbWl0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6UmVtb3RlUmVuZGVyaW5nQmFj
a2VuZDo6ZGlkQ3JlYXRlU2hhcmVkSXRlbURhdGEpOiBEZWxldGVkLgorCisgICAgICAgIFdlIGRv
bid0IG5lZWQgYW55IG9mIHRoZXNlIG1ldGhvZHMgYW55bW9yZSwgbm93IHRoYXQgdGhlcmUgaXMg
b25seSBvbmUgY29kZXBhdGggZm9yIHByb2Nlc3NpbmcgZGlzcGxheSBsaXN0CisgICAgICAgIGl0
ZW1zLiBTZWUgYFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6Ondha2VVcEFuZEFwcGx5RGlzcGxheUxp
c3RgIGFib3ZlLiBBbHNvLCByZW5hbWUgYGRpZENyZWF0ZVNoYXJlZEl0ZW1EYXRhYAorICAgICAg
ICB0byBgZGlkQ3JlYXRlU2hhcmVkRGlzcGxheUxpc3RIYW5kbGVgIChhbHNvIGFib3ZlKS4KKwor
ICAgICAgICAqIEdQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5oOgor
ICAgICAgICAqIEdQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5tZXNz
YWdlcy5pbjoKKyAgICAgICAgKiBTaGFyZWQvU2hhcmVkRGlzcGxheUxpc3RIYW5kbGUuaDoKKyAg
ICAgICAgKFdlYktpdDo6U2hhcmVkRGlzcGxheUxpc3RIYW5kbGU6OnNoYXJlZE1lbW9yeSk6Cisg
ICAgICAgIChXZWJLaXQ6OlNoYXJlZERpc3BsYXlMaXN0SGFuZGxlOjpzaGFyZWRNZW1vcnkgY29u
c3QpOgorICAgICAgICAoV2ViS2l0OjpTaGFyZWREaXNwbGF5TGlzdEhhbmRsZTo6aWRlbnRpZmll
ciBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OlNoYXJlZERpc3BsYXlMaXN0SGFuZGxlOjpkYXRh
IGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6U2hhcmVkRGlzcGxheUxpc3RIYW5kbGU6OnVucmVh
ZEJ5dGVzKToKKyAgICAgICAgKFdlYktpdDo6U2hhcmVkRGlzcGxheUxpc3RIYW5kbGU6OkxvY2s6
OkxvY2spOgorICAgICAgICAoV2ViS2l0OjpTaGFyZWREaXNwbGF5TGlzdEhhbmRsZTo6TG9jazo6
fkxvY2spOgorICAgICAgICAoV2ViS2l0OjpTaGFyZWREaXNwbGF5TGlzdEhhbmRsZTo6U2hhcmVk
RGlzcGxheUxpc3RIYW5kbGUpOgorICAgICAgICAoV2ViS2l0OjpTaGFyZWREaXNwbGF5TGlzdEhh
bmRsZTo6aGVhZGVyKToKKyAgICAgICAgKFdlYktpdDo6U2hhcmVkRGlzcGxheUxpc3RIYW5kbGU6
OmhlYWRlciBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OlNoYXJlZERpc3BsYXlMaXN0SGFuZGxl
OjplbmNvZGUgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpTaGFyZWREaXNwbGF5
TGlzdEhhbmRsZTo6ZGVjb2RlKTogRGVsZXRlZC4KKworICAgICAgICBSZXB1cnBvc2UgYFNoYXJl
ZERpc3BsYXlMaXN0SGFuZGxlYCB0byBzZXJ2ZSBhcyBhIGJhc2UgY2xhc3MgZm9yIGJvdGggYERp
c3BsYXlMaXN0UmVhZGVySGFuZGxlYCBhbmQKKyAgICAgICAgYERpc3BsYXlMaXN0V3JpdGVySGFu
ZGxlYC4gVGhpcyBiYXNlIGNsYXNzIGlzIGF3YXJlIG9mIHRoZSBtZW1vcnkgbGF5b3V0IG9mIHRo
ZSBkaXNwbGF5IGxpc3QgaXRlbSBidWZmZXIgaW4KKyAgICAgICAgc2hhcmVkIG1lbW9yeSAoaW4g
cGFydGljdWxhciwgdGhlIGZhY3QgdGhhdCB0aGUgZmlyc3QgOCBieXRlcyBhcmUgdGhlIGF0b21p
YyBsb2NrIGFuZCB0aGUgbmV4dCA4IGJ5dGVzIGNvbnRhaW4KKyAgICAgICAgdGhlIHVucmVhZCBi
eXRlIGNvdW50ZXIpLgorCisgICAgICAgIEludGVybmFsbHksIHRoaXMgdXNlcyBhIHByb3RlY3Rl
ZCBSQUlJIGNsYXNzLCBgU2hhcmVkRGlzcGxheUxpc3RIYW5kbGU6OkxvY2tgLCB0byBncmFiIHRo
ZSBsb2NrIGJlZm9yZSBlaXRoZXIKKyAgICAgICAgcmVhZGluZyBvciB3cml0aW5nIHRoZSB1bnJl
YWQgYnl0ZXMgY291bnQuCisKKyAgICAgICAgKiBTb3VyY2VzLnR4dDoKKyAgICAgICAgKiBXZWJL
aXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9n
cmFwaGljcy9EaXNwbGF5TGlzdFdyaXRlckhhbmRsZS5jcHA6IEFkZGVkLgorICAgICAgICAoV2Vi
S2l0OjpEaXNwbGF5TGlzdFdyaXRlckhhbmRsZTo6YWR2YW5jZSk6CisgICAgICAgIChXZWJLaXQ6
OkRpc3BsYXlMaXN0V3JpdGVySGFuZGxlOjphdmFpbGFibGVDYXBhY2l0eSBjb25zdCk6CisgICAg
ICAgIChXZWJLaXQ6OkRpc3BsYXlMaXN0V3JpdGVySGFuZGxlOjpjcmVhdGVIYW5kbGUgY29uc3Qp
OgorICAgICAgICAoV2ViS2l0OjpEaXNwbGF5TGlzdFdyaXRlckhhbmRsZTo6cmVzZXRXcml0YWJs
ZU9mZnNldElmUG9zc2libGUpOgorCisgICAgICAgIFRoaXMgaGVscGVyIG1ldGhvZCBtb3ZlcyB0
aGUgd3JpdGFibGUgb2Zmc2V0IChzZWUgYmVsb3cpIGJhY2sgdG8gdGhlIHN0YXJ0IG9mIHRoZSBi
dWZmZXIgaWYgaXQgaXMgbm90IGJlaW5nIHJlYWQKKyAgICAgICAgZnJvbSBieSB0aGUgR1BVIHBy
b2Nlc3MuCisKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9EaXNwbGF5TGlzdFdy
aXRlckhhbmRsZS5oOiBSZW5hbWVkIGZyb20gU291cmNlL1dlYktpdC9TaGFyZWQvU2hhcmVkRGlz
cGxheUxpc3RIYW5kbGUuY3BwLgorICAgICAgICAoV2ViS2l0OjpEaXNwbGF5TGlzdFdyaXRlckhh
bmRsZTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYktpdDo6RGlzcGxheUxpc3RXcml0ZXJIYW5kbGU6
OndyaXRhYmxlT2Zmc2V0IGNvbnN0KToKKworICAgICAgICBTaW1pbGFyIHRvIGBEaXNwbGF5TGlz
dFJlYWRlckhhbmRsZWAsIGV4Y2VwdCB0aGF0IHRoaXMgY29udGFpbnMgbG9naWMgc3BlY2lmaWMg
dG8gdGhlIHdlYiBwcm9jZXNzIGZvciB3cml0aW5nCisgICAgICAgIGRpc3BsYXkgbGlzdCBpdGVt
cyBpbnRvIHNoYXJlZCBtZW1vcnkuIEFkdmFuY2luZyB0aGUgY3Vyc29yIGluIGBEaXNwbGF5TGlz
dFdyaXRlckhhbmRsZWAgaW5jcmVtZW50cyB0aGUgY291bnRlci4KKyAgICAgICAgSXQgYWxzbyBp
bmNyZW1lbnRzIHRoZSBgd3JpdGFibGVPZmZzZXRgIG9mIHRoZSBoYW5kbGUsIHdoaWNoIHJlcHJl
c2VudHMgdGhlIG1pbmltdW0gb2Zmc2V0IGludG8gdGhlIHNoYXJlZAorICAgICAgICBidWZmZXIg
dGhhdCBtYXkgY29udGFpbiBuZXdseSBhcHBlbmRlZCBkaXNwbGF5IGxpc3QgaXRlbXMuCisKKyAg
ICAgICAgKFdlYktpdDo6RGlzcGxheUxpc3RXcml0ZXJIYW5kbGU6OkRpc3BsYXlMaXN0V3JpdGVy
SGFuZGxlKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVJbWFnZUJ1
ZmZlclByb3h5Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlUmVu
ZGVyaW5nQmFja2VuZFByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlUmVuZGVyaW5n
QmFja2VuZFByb3h5OjpzdWJtaXREaXNwbGF5TGlzdCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90
ZVJlbmRlcmluZ0JhY2tlbmRQcm94eTo6dXBkYXRlUmV1c2FibGVIYW5kbGVzKToKKworICAgICAg
ICBUaGlzIHByaXZhdGUgaGVscGVyIGl0ZXJhdGVzIHRoZSBzZXQgb2YgYnVmZmVycyB0aGF0IGFy
ZSBub3QgY3VycmVudGx5IGJlaW5nIHdyaXR0ZW4gdG8sIGFuZCBhZGRzIGVhY2ggb25lIHRvCisg
ICAgICAgIHRoZSByZXVzYWJsZSBidWZmZXIgcXVldWUgb25seSBpZiBpdHMgd3JpdGFibGUgb2Zm
c2V0IGlzIGF0IHRoZSBzdGFydC4KKworICAgICAgICAoV2ViS2l0OjpSZW1vdGVSZW5kZXJpbmdC
YWNrZW5kUHJveHk6OmNyZWF0ZUl0ZW1CdWZmZXIpOgorCisgICAgICAgIEltcGxlbWVudHMgbG9n
aWMgdGhhdCBoYW5kcyBzaGFyZWQgaXRlbSBidWZmZXIgZGF0YSBoYW5kbGVzIHRvIFdlYkNvcmUg
Zm9yIHdyaXRpbmcgZGlzcGxheSBsaXN0IGl0ZW1zLiBUaGlzIHdpbGwKKyAgICAgICAgdHJ5IHRv
IHJldXNlIGFuIGl0ZW0gYnVmZmVyIGluIHRoZSByZXVzZSBxdWV1ZSwgaWYgcG9zc2libGUsIGFu
ZCBmYWxsIGJhY2sgdG8gYWxsb2NhdGluZyBhIG5ldyBjaHVuayBvZiBzaGFyZWQKKyAgICAgICAg
bWVtb3J5IGlmIG5vIHJldXNhYmxlIGJ1ZmZlciBpcyBmb3VuZCAob3IgdGhlIGV4aXN0aW5nIGJ1
ZmZlcnMgaGF2ZSBpbnN1ZmZpY2llbnQgY2FwYWNpdHkpLiBUaGUgZmFjdCB0aGF0IHdlCisgICAg
ICAgIGl0ZXJhdGUgdGhyb3VnaCBlYWNoIHJldXNhYmxlIGJ1ZmZlciBpbiBvcmRlciwgY29tYmlu
ZWQgd2l0aCB0aGUgYWJvdmUgbG9naWMgaW4gYHVwZGF0ZVJldXNhYmxlSGFuZGxlc2AsIGVuc3Vy
ZXMKKyAgICAgICAgdGhhdCBvbmNlIHdlIGJlZ2luIHdyaXRpbmcgdG8gYSBpdGVtIGJ1ZmZlciwg
d2Ugd2lsbCBjb250aW51ZSB1c2luZyB0aGF0IGl0ZW0gYnVmZmVyIHVudGlsIGl0IGV4aGF1c3Rz
IGF2YWlsYWJsZQorICAgICAgICBjYXBhY2l0eS4KKworICAgICAgICBUaGlzIHByb3BlcnR5IGlz
IGltcG9ydGFudCBiZWNhdXNlIGl0IGFsbG93cyB0aGUgR1BVIHByb2Nlc3MgdG8gc2ltcGx5IHN0
YXJ0IHJlYWRpbmcgaXRlbSBkYXRhIGZyb20gYSBnaXZlbgorICAgICAgICBvZmZzZXQgYW5kIGJ1
ZmZlciBJRCAoc3BlY2lmaWVkIGluIHRoZSBgV2FrZVVwQW5kQXBwbHlEaXNwbGF5TGlzdGAgSVBD
IG1lc3NhZ2UpLCBhbmQgc2VhbWxlc3NseSBjb250aW51ZQorICAgICAgICByZWFkaW5nIGRhdGEg
ZXZlbiBhZnRlciBpdCBleGhhdXN0cyBhbGwgYXZhaWxhYmxlIGl0ZW0gZGF0YSBpbiB0aGUgY3Vy
cmVudCBidWZmZXIgYnkgY29udGludWluZyBmcm9tIHRoZSBzdGFydAorICAgICAgICBvZiB0aGUg
aXRlbSBidWZmZXIgdGhhdCBjb250YWlucyB0aGUgbmV4dCBkaXNwbGF5IGxpc3QgaXRlbXMgKHdo
aWNoIHdlIGxlYXJuIGluIHRoZSBHUFUgcHJvY2VzcyBieSBlbmNvdW50ZXJpbmcKKyAgICAgICAg
YSBgTWV0YUNvbW1hbmRTd2l0Y2hUb2AgaXRlbSBhdCB0aGUgZW5kIG9mIHRoZSBwcmV2aW91cyBi
dWZmZXIpLgorCisgICAgICAgIEluICJzdGVhZHkgc3RhdGUiICh3aGVyZWluIGJvdGggcHJvY2Vz
c2VzIGFyZSBjb25jdXJyZW50bHkgd3JpdGluZyBhbmQgcmVhZGluZyBpdGVtcyBhcyBxdWlja2x5
IGFzIHBvc3NpYmxlKSwKKyAgICAgICAgdGhpcyBtZWFucyB0aGF0IGFzIHRoZSB3ZWIgcHJvY2Vz
cyBpcyBidXN5IGZpbGxpbmcgdXAgZWFjaCBpdGVtIGJ1ZmZlciB3aXRoIGl0ZW0gZGF0YSwgdGhl
IEdQVSBwcm9jZXNzIGlzIGFsc28KKyAgICAgICAgYnVzeSBhcHBseWluZyBhbGwgdGhlIGl0ZW0g
ZGF0YSBpbiBvbmUgYnVmZmVyIGFuZCBhdXRvbWF0aWNhbGx5IG1vdmluZyBvbiB0byB0aGUgbmV4
dCBidWZmZXIgd2l0aCBubyBhZGRpdGlvbmFsCisgICAgICAgIElQQyBtZXNzYWdlcyByZXF1aXJl
ZC4KKworICAgICAgICAoV2ViS2l0OjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHk6OmZsdXNo
RGlzcGxheUxpc3RBbmRDb21taXQpOiBEZWxldGVkLgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BV
L2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS5oOgorCiAyMDIwLTExLTEwICBX
ZW5zb24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgogCiAgICAgICAgIFJFR1JFU1NJ
T04gKHIyNjk1MjUpOiBNYW55IGxheW91dCB0ZXN0cyBjcmFzaCB3aGVuIHJ1biB1bmRlciBBU2Fu
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvRGlzcGxheUxp
c3RSZWFkZXJIYW5kbGUuY3BwIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL0Rp
c3BsYXlMaXN0UmVhZGVySGFuZGxlLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZTRkNDkxZjBkMDk1Mzg5NjQz
YjQ4YTI3MGIyNmFlZjEzN2I3YmZlCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9H
UFVQcm9jZXNzL2dyYXBoaWNzL0Rpc3BsYXlMaXN0UmVhZGVySGFuZGxlLmNwcApAQCAtMCwwICsx
LDUxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgor
ICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAq
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkRpc3Bs
YXlMaXN0UmVhZGVySGFuZGxlLmgiCisKK25hbWVzcGFjZSBXZWJLaXQgewordXNpbmcgbmFtZXNw
YWNlIFdlYkNvcmU7CisKK3NpemVfdCBEaXNwbGF5TGlzdFJlYWRlckhhbmRsZTo6YWR2YW5jZShz
aXplX3QgYW1vdW50KQoreworICAgIGF1dG8gbG9ja2VyID0gU2hhcmVkRGlzcGxheUxpc3RIYW5k
bGU6OkxvY2sgeyAqdGhpcyB9OworICAgIGlmIChMSUtFTFkoYW1vdW50IDw9IGhlYWRlcigpLnVu
cmVhZEJ5dGVzKSkKKyAgICAgICAgcmV0dXJuIGhlYWRlcigpLnVucmVhZEJ5dGVzIC09IGFtb3Vu
dDsKKworICAgIC8vIEZJWE1FOiBUaGlzIHNob3VsZCByZXN1bHQgaW4gdGVybWluYXRpbmcgdGhl
IHdlYiBwcm9jZXNzLgorICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIGhlYWRlcigpLnVu
cmVhZEJ5dGVzID0gMDsKKyAgICByZXR1cm4gMDsKK30KKworc3RkOjp1bmlxdWVfcHRyPERpc3Bs
YXlMaXN0OjpEaXNwbGF5TGlzdD4gRGlzcGxheUxpc3RSZWFkZXJIYW5kbGU6OmRpc3BsYXlMaXN0
Rm9yUmVhZGluZyhzaXplX3Qgb2Zmc2V0LCBzaXplX3QgY2FwYWNpdHksIERpc3BsYXlMaXN0OjpJ
dGVtQnVmZmVyUmVhZGluZ0NsaWVudCYgY2xpZW50KSBjb25zdAoreworICAgIGF1dG8gZGlzcGxh
eUxpc3QgPSBtYWtlVW5pcXVlPERpc3BsYXlMaXN0OjpEaXNwbGF5TGlzdD4oRGlzcGxheUxpc3Q6
Okl0ZW1CdWZmZXJIYW5kbGVzIHt7IGlkZW50aWZpZXIoKSwgZGF0YSgpICsgb2Zmc2V0LCBjYXBh
Y2l0eSB9fSk7CisgICAgZGlzcGxheUxpc3QtPnNldEl0ZW1CdWZmZXJDbGllbnQoJmNsaWVudCk7
CisgICAgcmV0dXJuIGRpc3BsYXlMaXN0OworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9EaXNwbGF5TGlzdFJl
YWRlckhhbmRsZS5oIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL0Rpc3BsYXlM
aXN0UmVhZGVySGFuZGxlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uY2I3MjIzOTc2OTZkYzllMGIwNmU4OWNhYzI1
Y2U3MmNiOWE1NzZlMQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vz
cy9ncmFwaGljcy9EaXNwbGF5TGlzdFJlYWRlckhhbmRsZS5oCkBAIC0wLDAgKzEsNTEgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBB
TkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIlNoYXJlZERpc3BsYXlMaXN0SGFu
ZGxlLmgiCisjaW5jbHVkZSA8d3RmL0Zhc3RNYWxsb2MuaD4KKworbmFtZXNwYWNlIFdlYktpdCB7
CisKK2NsYXNzIERpc3BsYXlMaXN0UmVhZGVySGFuZGxlIDogcHVibGljIFNoYXJlZERpc3BsYXlM
aXN0SGFuZGxlIHsKKyAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShEaXNwbGF5TGlzdFJlYWRlckhh
bmRsZSk7IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOworcHVibGljOgorICAgIHN0YXRpYyBSZWY8
RGlzcGxheUxpc3RSZWFkZXJIYW5kbGU+IGNyZWF0ZShXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRl
bUJ1ZmZlcklkZW50aWZpZXIgaWRlbnRpZmllciwgUmVmPFNoYXJlZE1lbW9yeT4mJiBzaGFyZWRN
ZW1vcnkpCisgICAgeworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBEaXNwbGF5TGlzdFJl
YWRlckhhbmRsZShpZGVudGlmaWVyLCBXVEZNb3ZlKHNoYXJlZE1lbW9yeSkpKTsKKyAgICB9CisK
KyAgICBzaXplX3QgYWR2YW5jZShzaXplX3QgYW1vdW50KSBvdmVycmlkZTsKKyAgICBzdGQ6OnVu
aXF1ZV9wdHI8V2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRpc3BsYXlMaXN0PiBkaXNwbGF5TGlzdEZv
clJlYWRpbmcoc2l6ZV90IG9mZnNldCwgc2l6ZV90IGNhcGFjaXR5LCBXZWJDb3JlOjpEaXNwbGF5
TGlzdDo6SXRlbUJ1ZmZlclJlYWRpbmdDbGllbnQmKSBjb25zdDsKKworcHJpdmF0ZToKKyAgICBE
aXNwbGF5TGlzdFJlYWRlckhhbmRsZShXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbUJ1ZmZlcklk
ZW50aWZpZXIgaWRlbnRpZmllciwgUmVmPFNoYXJlZE1lbW9yeT4mJiBzaGFyZWRNZW1vcnkpCisg
ICAgICAgIDogU2hhcmVkRGlzcGxheUxpc3RIYW5kbGUoaWRlbnRpZmllciwgV1RGTW92ZShzaGFy
ZWRNZW1vcnkpKQorICAgIHsKKyAgICB9Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVJbWFnZUJ1
ZmZlci5oIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUltYWdlQnVm
ZmVyLmgKaW5kZXggNjRiMWU2YmRhZTVlY2JmNjMwOGViNzM1NGIzMTQzOTg5MTM3MTIyNS4uM2Ri
YWFmOWYyZWM2YmQxMTI3ZDUxYzExN2UwYzFjNzA1NmNkMjVkMyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUltYWdlQnVmZmVyLmgKKysrIGIvU291
cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUltYWdlQnVmZmVyLmgKQEAgLTUy
LDYgKzUyLDcgQEAgcHVibGljOgogICAgIFJlbW90ZUltYWdlQnVmZmVyKHN0ZDo6dW5pcXVlX3B0
cjxCYWNrZW5kVHlwZT4mJiBiYWNrZW5kLCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kJiByZW1vdGVS
ZW5kZXJpbmdCYWNrZW5kLCBXZWJDb3JlOjpSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgcmVu
ZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKQogICAgICAgICA6IEJhc2VDb25jcmV0ZUltYWdlQnVm
ZmVyKFdURk1vdmUoYmFja2VuZCksIHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcikKICAgICAg
ICAgLCBtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmQocmVtb3RlUmVuZGVyaW5nQmFja2VuZCkKKyAg
ICAgICAgLCBtX3JlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcihyZW5kZXJpbmdSZXNvdXJjZUlk
ZW50aWZpZXIpCiAgICAgewogICAgICAgICBtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmQuaW1hZ2VC
dWZmZXJCYWNrZW5kV2FzQ3JlYXRlZChtX2JhY2tlbmQtPmxvZ2ljYWxTaXplKCksIG1fYmFja2Vu
ZC0+YmFja2VuZFNpemUoKSwgbV9iYWNrZW5kLT5yZXNvbHV0aW9uU2NhbGUoKSwgbV9iYWNrZW5k
LT5jb2xvclNwYWNlKCksIG1fYmFja2VuZC0+Y3JlYXRlSW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxl
KCksIHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcik7CiAgICAgfQpAQCAtODMsMTIgKzg0LDE1
IEBAIHByaXZhdGU6CiAgICAgICAgIH0KIAogICAgICAgICBpZiAoaXRlbS5pczxXZWJDb3JlOjpE
aXNwbGF5TGlzdDo6Rmx1c2hDb250ZXh0PigpKSB7Ci0gICAgICAgICAgICAvLyBGSVhNRTogTm90
IGltcGxlbWVudGVkIHlldC4KKyAgICAgICAgICAgIEJhc2VDb25jcmV0ZUltYWdlQnVmZmVyOjpm
bHVzaENvbnRleHQoKTsKKyAgICAgICAgICAgIGF1dG8gaWRlbnRpZmllciA9IGl0ZW0uZ2V0PFdl
YkNvcmU6OkRpc3BsYXlMaXN0OjpGbHVzaENvbnRleHQ+KCkuaWRlbnRpZmllcigpOworICAgICAg
ICAgICAgbV9yZW1vdGVSZW5kZXJpbmdCYWNrZW5kLmZsdXNoRGlzcGxheUxpc3RXYXNDb21taXR0
ZWQoaWRlbnRpZmllciwgbV9yZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpOwogICAgICAgICAg
ICAgcmV0dXJuIHRydWU7CiAgICAgICAgIH0KIAogICAgICAgICBpZiAoaXRlbS5pczxXZWJDb3Jl
OjpEaXNwbGF5TGlzdDo6TWV0YUNvbW1hbmRTd2l0Y2hUbz4oKSkgewotICAgICAgICAgICAgLy8g
RklYTUU6IE5vdCBpbXBsZW1lbnRlZCB5ZXQuCisgICAgICAgICAgICBhdXRvIG5leHRCdWZmZXJJ
ZGVudGlmaWVyID0gaXRlbS5nZXQ8V2ViQ29yZTo6RGlzcGxheUxpc3Q6Ok1ldGFDb21tYW5kU3dp
dGNoVG8+KCkuaWRlbnRpZmllcigpOworICAgICAgICAgICAgbV9yZW1vdGVSZW5kZXJpbmdCYWNr
ZW5kLnNldE5leHRJdGVtQnVmZmVyVG9SZWFkKG5leHRCdWZmZXJJZGVudGlmaWVyKTsKICAgICAg
ICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICB9CiAKQEAgLTk2LDYgKzEwMCw3IEBAIHByaXZh
dGU6CiAgICAgfQogCiAgICAgUmVtb3RlUmVuZGVyaW5nQmFja2VuZCYgbV9yZW1vdGVSZW5kZXJp
bmdCYWNrZW5kOworICAgIFdlYkNvcmU6OlJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciBtX3Jl
bmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcjsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRl
cmluZ0JhY2tlbmQuY3BwIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90
ZVJlbmRlcmluZ0JhY2tlbmQuY3BwCmluZGV4IGQyMzdhNjNiODg2OTY0MjFiYjlhMjU3ZWY5ZGIy
MTdjZmU5ZjljZjguLjc4OThmN2MxNDEwNmIyOWQwOWE1YjllMzM3YzUzMjUwNTc5MzE1MzIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5kZXJp
bmdCYWNrZW5kLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVt
b3RlUmVuZGVyaW5nQmFja2VuZC5jcHAKQEAgLTI4LDEwICsyOCwxMiBAQAogCiAjaWYgRU5BQkxF
KEdQVV9QUk9DRVNTKQogCisjaW5jbHVkZSAiRGlzcGxheUxpc3RSZWFkZXJIYW5kbGUuaCIKICNp
bmNsdWRlICJHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1S
ZW1vdGVJbWFnZUJ1ZmZlci5oIgogI2luY2x1ZGUgIlJlbW90ZVJlbmRlcmluZ0JhY2tlbmRNZXNz
YWdlcy5oIgogI2luY2x1ZGUgIlJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eU1lc3NhZ2VzLmgi
CisjaW5jbHVkZSA8d3RmL0NoZWNrZWRBcml0aG1ldGljLmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQg
ewogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CkBAIC0xMjQsNDQgKzEyNiw4NCBAQCB2b2lkIFJl
bW90ZVJlbmRlcmluZ0JhY2tlbmQ6OmNyZWF0ZUltYWdlQnVmZmVyKGNvbnN0IEZsb2F0U2l6ZSYg
bG9naWNhbFNpemUsIFJlbgogICAgIG1fcmVtb3RlUmVzb3VyY2VDYWNoZS5jYWNoZUltYWdlQnVm
ZmVyKG1ha2VSZWYoKmltYWdlQnVmZmVyKSk7CiB9CiAKLXZvaWQgUmVtb3RlUmVuZGVyaW5nQmFj
a2VuZDo6YXBwbHlEaXNwbGF5TGlzdChjb25zdCBTaGFyZWREaXNwbGF5TGlzdEhhbmRsZSYgaGFu
ZGxlLCBSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlm
aWVyLCBTaG91bGRGbHVzaENvbnRleHQgZmx1c2hDb250ZXh0KQordm9pZCBSZW1vdGVSZW5kZXJp
bmdCYWNrZW5kOjphcHBseURpc3BsYXlMaXN0c0Zyb21IYW5kbGUoSW1hZ2VCdWZmZXImIGRlc3Rp
bmF0aW9uLCBEaXNwbGF5TGlzdFJlYWRlckhhbmRsZSYgaGFuZGxlLCBzaXplX3QgaW5pdGlhbE9m
ZnNldCkKIHsKLSAgICBWZWN0b3I8UmVmPFNoYXJlZE1lbW9yeT4+IHJlbW92ZWRJdGVtQnVmZmVy
czsKLSAgICBhdXRvIGRpc3BsYXlMaXN0ID0gaGFuZGxlLmNyZWF0ZURpc3BsYXlMaXN0KFsmXSAo
RGlzcGxheUxpc3Q6Okl0ZW1CdWZmZXJJZGVudGlmaWVyIGlkZW50aWZpZXIpIC0+IHVpbnQ4X3Qq
IHsKLSAgICAgICAgaWYgKGF1dG8gc2hhcmVkTWVtb3J5ID0gbV9zaGFyZWRJdGVtQnVmZmVycy50
YWtlKGlkZW50aWZpZXIpKSB7Ci0gICAgICAgICAgICByZW1vdmVkSXRlbUJ1ZmZlcnMuYXBwZW5k
KCpzaGFyZWRNZW1vcnkpOwotICAgICAgICAgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8dWlu
dDhfdCo+KHNoYXJlZE1lbW9yeS0+ZGF0YSgpKTsKKyAgICBhdXRvIGhhbmRsZVByb3RlY3RvciA9
IG1ha2VSZWYoaGFuZGxlKTsKKworICAgIHNpemVfdCBvZmZzZXQgPSBpbml0aWFsT2Zmc2V0Owor
ICAgIHNpemVfdCBzaXplVG9SZWFkID0gMDsKKworICAgIHNpemVUb1JlYWQgPSBoYW5kbGUudW5y
ZWFkQnl0ZXMoKTsKKworICAgIHdoaWxlIChzaXplVG9SZWFkKSB7CisgICAgICAgIGF1dG8gZGlz
cGxheUxpc3QgPSBoYW5kbGUuZGlzcGxheUxpc3RGb3JSZWFkaW5nKG9mZnNldCwgc2l6ZVRvUmVh
ZCwgKnRoaXMpOworICAgICAgICBpZiAoVU5MSUtFTFkoIWRpc3BsYXlMaXN0KSkgeworICAgICAg
ICAgICAgLy8gRklYTUU6IEFkZCBhIG1lc3NhZ2UgY2hlY2sgdG8gdGVybWluYXRlIHRoZSB3ZWIg
cHJvY2Vzcy4KKyAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICAgICAg
cmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgZGVzdGluYXRpb24uc3VibWl0RGlzcGxheUxp
c3QoKmRpc3BsYXlMaXN0KTsKKworICAgICAgICBDaGVja2VkU2l6ZSBjaGVja2VkT2Zmc2V0ID0g
b2Zmc2V0OworICAgICAgICBjaGVja2VkT2Zmc2V0ICs9IHNpemVUb1JlYWQ7CisgICAgICAgIGlm
IChVTkxJS0VMWShjaGVja2VkT2Zmc2V0Lmhhc092ZXJmbG93ZWQoKSkpIHsKKyAgICAgICAgICAg
IC8vIEZJWE1FOiBBZGQgYSBtZXNzYWdlIGNoZWNrIHRvIHRlcm1pbmF0ZSB0aGUgd2ViIHByb2Nl
c3MuCisgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgICAgIHJldHVy
bjsKKyAgICAgICAgfQorCisgICAgICAgIG9mZnNldCA9IGNoZWNrZWRPZmZzZXQudW5zYWZlR2V0
KCk7CisKKyAgICAgICAgaWYgKFVOTElLRUxZKG9mZnNldCA+IGhhbmRsZS5zaGFyZWRNZW1vcnko
KS5zaXplKCkpKSB7CisgICAgICAgICAgICAvLyBGSVhNRTogQWRkIGEgbWVzc2FnZSBjaGVjayB0
byB0ZXJtaW5hdGUgdGhlIHdlYiBwcm9jZXNzLgorICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFD
SEVEKCk7CisgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KLSAgICAgICAgcmV0dXJuIG51
bGxwdHI7Ci0gICAgfSk7CiAKLSAgICBpZiAoIWRpc3BsYXlMaXN0KSB7CisgICAgICAgIHNpemVU
b1JlYWQgPSBoYW5kbGUuYWR2YW5jZShzaXplVG9SZWFkKTsKKyAgICB9Cit9CisKK3ZvaWQgUmVt
b3RlUmVuZGVyaW5nQmFja2VuZDo6d2FrZVVwQW5kQXBwbHlEaXNwbGF5TGlzdChEaXNwbGF5TGlz
dDo6SXRlbUJ1ZmZlcklkZW50aWZpZXIgaW5pdGlhbElkZW50aWZpZXIsIHVpbnQ2NF90IGluaXRp
YWxPZmZzZXQsIFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciBkZXN0aW5hdGlvbkJ1ZmZlcklk
ZW50aWZpZXIpCit7CisgICAgYXV0byBpbWFnZUJ1ZmZlciA9IG1fcmVtb3RlUmVzb3VyY2VDYWNo
ZS5jYWNoZWRJbWFnZUJ1ZmZlcihkZXN0aW5hdGlvbkJ1ZmZlcklkZW50aWZpZXIpOworICAgIGlm
IChVTkxJS0VMWSghaW1hZ2VCdWZmZXIpKSB7CiAgICAgICAgIC8vIEZJWE1FOiBBZGQgYSBtZXNz
YWdlIGNoZWNrIHRvIHRlcm1pbmF0ZSB0aGUgd2ViIHByb2Nlc3MuCisgICAgICAgIEFTU0VSVF9O
T1RfUkVBQ0hFRCgpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgYXV0byBpbWFnZUJ1
ZmZlciA9IG1fcmVtb3RlUmVzb3VyY2VDYWNoZS5jYWNoZWRJbWFnZUJ1ZmZlcihyZW5kZXJpbmdS
ZXNvdXJjZUlkZW50aWZpZXIpOwotICAgIGlmICghaW1hZ2VCdWZmZXIpIHsKKyAgICBhdXRvIGlu
aXRpYWxIYW5kbGUgPSBtX3NoYXJlZERpc3BsYXlMaXN0SGFuZGxlcy5nZXQoaW5pdGlhbElkZW50
aWZpZXIpOworICAgIGlmIChVTkxJS0VMWSghaW5pdGlhbEhhbmRsZSkpIHsKICAgICAgICAgLy8g
RklYTUU6IEFkZCBhIG1lc3NhZ2UgY2hlY2sgdG8gdGVybWluYXRlIHRoZSB3ZWIgcHJvY2Vzcy4K
KyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAK
LSAgICBkaXNwbGF5TGlzdC0+c2V0SXRlbUJ1ZmZlckNsaWVudCh0aGlzKTsKLSAgICBpbWFnZUJ1
ZmZlci0+c3VibWl0RGlzcGxheUxpc3QoKmRpc3BsYXlMaXN0KTsKKyAgICBhcHBseURpc3BsYXlM
aXN0c0Zyb21IYW5kbGUoKmltYWdlQnVmZmVyLCAqaW5pdGlhbEhhbmRsZSwgaW5pdGlhbE9mZnNl
dCk7CiAKLSAgICBpZiAoZmx1c2hDb250ZXh0ID09IFNob3VsZEZsdXNoQ29udGV4dDo6WWVzKQot
ICAgICAgICBpbWFnZUJ1ZmZlci0+Zmx1c2hDb250ZXh0KCk7Ci19Ci0KLXZvaWQgUmVtb3RlUmVu
ZGVyaW5nQmFja2VuZDo6c3VibWl0RGlzcGxheUxpc3QoY29uc3QgU2hhcmVkRGlzcGxheUxpc3RI
YW5kbGUmIGhhbmRsZSwgUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyIHJlbmRlcmluZ1Jlc291
cmNlSWRlbnRpZmllcikKLXsKLSAgICBhcHBseURpc3BsYXlMaXN0KGhhbmRsZSwgcmVuZGVyaW5n
UmVzb3VyY2VJZGVudGlmaWVyLCBTaG91bGRGbHVzaENvbnRleHQ6Ok5vKTsKKyAgICB3aGlsZSAo
bV9uZXh0SXRlbUJ1ZmZlclRvUmVhZCkgeworICAgICAgICBhdXRvIG5leHRIYW5kbGUgPSBtX3No
YXJlZERpc3BsYXlMaXN0SGFuZGxlcy5nZXQobV9uZXh0SXRlbUJ1ZmZlclRvUmVhZCk7CisgICAg
ICAgIGlmICghbmV4dEhhbmRsZSkgeworICAgICAgICAgICAgLy8gSWYgdGhlIGhhbmRsZSBpZGVu
dGlmaWVyIGlzIGN1cnJlbnRseSB1bmtub3duLCB3YWl0IHVudGlsIHRoZSBHUFUgcHJvY2VzcyBy
ZWNlaXZlcyBhbgorICAgICAgICAgICAgLy8gSVBDIG1lc3NhZ2Ugd2l0aCBhIHNoYXJlZCBtZW1v
cnkgaGFuZGxlIHRvIHRoZSBuZXh0IGl0ZW0gYnVmZmVyLgorICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgIH0KKyAgICAgICAgLy8gT3RoZXJ3aXNlLCBjb250aW51ZSByZWFkaW5nIHRoZSBuZXh0
IGRpc3BsYXkgbGlzdCBpdGVtIGJ1ZmZlciBmcm9tIHRoZSBzdGFydC4KKyAgICAgICAgbV9uZXh0
SXRlbUJ1ZmZlclRvUmVhZCA9IHsgfTsKKyAgICAgICAgYXBwbHlEaXNwbGF5TGlzdHNGcm9tSGFu
ZGxlKCppbWFnZUJ1ZmZlciwgKm5leHRIYW5kbGUsIFNoYXJlZERpc3BsYXlMaXN0SGFuZGxlOjpy
ZXNlcnZlZENhcGFjaXR5QXRTdGFydCk7CisgICAgfQogfQogCi12b2lkIFJlbW90ZVJlbmRlcmlu
Z0JhY2tlbmQ6OmZsdXNoRGlzcGxheUxpc3RBbmRDb21taXQoY29uc3QgU2hhcmVkRGlzcGxheUxp
c3RIYW5kbGUmIGhhbmRsZSwgRGlzcGxheUxpc3Q6OkZsdXNoSWRlbnRpZmllciBmbHVzaElkZW50
aWZpZXIsIFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciByZW5kZXJpbmdSZXNvdXJjZUlkZW50
aWZpZXIpCit2b2lkIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OnNldE5leHRJdGVtQnVmZmVyVG9S
ZWFkKERpc3BsYXlMaXN0OjpJdGVtQnVmZmVySWRlbnRpZmllciBpZGVudGlmaWVyKQogewotICAg
IGFwcGx5RGlzcGxheUxpc3QoaGFuZGxlLCByZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIsIFNo
b3VsZEZsdXNoQ29udGV4dDo6WWVzKTsKLSAgICBmbHVzaERpc3BsYXlMaXN0V2FzQ29tbWl0dGVk
KGZsdXNoSWRlbnRpZmllciwgcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKTsKKyAgICBpZiAo
VU5MSUtFTFkobV9uZXh0SXRlbUJ1ZmZlclRvUmVhZCkpIHsKKyAgICAgICAgLy8gRklYTUU6IEFk
ZCBhIG1lc3NhZ2UgY2hlY2sgdG8gdGVybWluYXRlIHRoZSB3ZWIgcHJvY2Vzcy4KKyAgICAgICAg
QVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgbV9uZXh0
SXRlbUJ1ZmZlclRvUmVhZCA9IGlkZW50aWZpZXI7CiB9CiAKIHZvaWQgUmVtb3RlUmVuZGVyaW5n
QmFja2VuZDo6Z2V0SW1hZ2VEYXRhKEFscGhhUHJlbXVsdGlwbGljYXRpb24gb3V0cHV0Rm9ybWF0
LCBJbnRSZWN0IHNyY1JlY3QsIFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciByZW5kZXJpbmdS
ZXNvdXJjZUlkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoSVBDOjpJbWFnZURhdGFS
ZWZlcmVuY2UmJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCkBAIC0xNzcsMTAgKzIxOSwyMSBAQCB2
b2lkIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OnJlbGVhc2VSZW1vdGVSZXNvdXJjZShSZW5kZXJp
bmdSZXNvdXJjZUlkZW50aWZpZXIgcgogICAgIG1fcmVtb3RlUmVzb3VyY2VDYWNoZS5yZWxlYXNl
UmVtb3RlUmVzb3VyY2UocmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKTsKIH0KIAotdm9pZCBS
ZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpkaWRDcmVhdGVTaGFyZWRJdGVtRGF0YShEaXNwbGF5TGlz
dDo6SXRlbUJ1ZmZlcklkZW50aWZpZXIgaWRlbnRpZmllciwgY29uc3QgU2hhcmVkTWVtb3J5OjpJ
UENIYW5kbGUmIGhhbmRsZSkKK3ZvaWQgUmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6ZGlkQ3JlYXRl
U2hhcmVkRGlzcGxheUxpc3RIYW5kbGUoRGlzcGxheUxpc3Q6Okl0ZW1CdWZmZXJJZGVudGlmaWVy
IGlkZW50aWZpZXIsIGNvbnN0IFNoYXJlZE1lbW9yeTo6SVBDSGFuZGxlJiBoYW5kbGUsIFJlbmRl
cmluZ1Jlc291cmNlSWRlbnRpZmllciBkZXN0aW5hdGlvbkJ1ZmZlcklkZW50aWZpZXIpCiB7Ci0g
ICAgaWYgKGF1dG8gc2hhcmVkTWVtb3J5ID0gU2hhcmVkTWVtb3J5OjptYXAoaGFuZGxlLmhhbmRs
ZSwgU2hhcmVkTWVtb3J5OjpQcm90ZWN0aW9uOjpSZWFkT25seSkpCi0gICAgICAgIG1fc2hhcmVk
SXRlbUJ1ZmZlcnMuc2V0KGlkZW50aWZpZXIsIFdURk1vdmUoc2hhcmVkTWVtb3J5KSk7CisgICAg
aWYgKFVOTElLRUxZKG1fc2hhcmVkRGlzcGxheUxpc3RIYW5kbGVzLmNvbnRhaW5zKGlkZW50aWZp
ZXIpKSkgeworICAgICAgICAvLyBGSVhNRTogQWRkIGEgbWVzc2FnZSBjaGVjayB0byB0ZXJtaW5h
dGUgdGhlIHdlYiBwcm9jZXNzLgorICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAg
ICAgcmV0dXJuOworICAgIH0KKworICAgIGlmIChhdXRvIHNoYXJlZE1lbW9yeSA9IFNoYXJlZE1l
bW9yeTo6bWFwKGhhbmRsZS5oYW5kbGUsIFNoYXJlZE1lbW9yeTo6UHJvdGVjdGlvbjo6UmVhZFdy
aXRlKSkKKyAgICAgICAgbV9zaGFyZWREaXNwbGF5TGlzdEhhbmRsZXMuc2V0KGlkZW50aWZpZXIs
IERpc3BsYXlMaXN0UmVhZGVySGFuZGxlOjpjcmVhdGUoaWRlbnRpZmllciwgc2hhcmVkTWVtb3J5
LnJlbGVhc2VOb25OdWxsKCkpKTsKKworICAgIGlmIChtX25leHRJdGVtQnVmZmVyVG9SZWFkID09
IGlkZW50aWZpZXIpIHsKKyAgICAgICAgbV9uZXh0SXRlbUJ1ZmZlclRvUmVhZCA9IHsgfTsKKyAg
ICAgICAgd2FrZVVwQW5kQXBwbHlEaXNwbGF5TGlzdChpZGVudGlmaWVyLCBTaGFyZWREaXNwbGF5
TGlzdEhhbmRsZTo6cmVzZXJ2ZWRDYXBhY2l0eUF0U3RhcnQsIGRlc3RpbmF0aW9uQnVmZmVySWRl
bnRpZmllcik7CisgICAgfQogfQogCiBPcHRpb25hbDxEaXNwbGF5TGlzdDo6SXRlbUhhbmRsZT4g
V0FSTl9VTlVTRURfUkVUVVJOIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OmRlY29kZUl0ZW0oY29u
c3QgdWludDhfdCogZGF0YSwgc2l6ZV90IGxlbmd0aCwgRGlzcGxheUxpc3Q6Okl0ZW1UeXBlIHR5
cGUsIHVpbnQ4X3QqIGhhbmRsZUxvY2F0aW9uKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9H
UFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQuaCBiL1NvdXJjZS9XZWJL
aXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kLmgKaW5kZXggN2Fj
OTYyMDEwM2U1N2MwN2JiMmVlZTMzZWJlZmIyYzQ1ZjAwN2RkMS4uYjM2YjlkZDYwNjRlZTVhNTE2
M2M2OGU0MTk0NzYzMWZlMDkxMzEzMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9j
ZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQuaAorKysgYi9Tb3VyY2UvV2ViS2l0
L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5oCkBAIC0zNCw3ICsz
NCw2IEBACiAjaW5jbHVkZSAiTWVzc2FnZVNlbmRlci5oIgogI2luY2x1ZGUgIlJlbW90ZVJlc291
cmNlQ2FjaGUuaCIKICNpbmNsdWRlICJSZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllci5oIgotI2lu
Y2x1ZGUgIlNoYXJlZERpc3BsYXlMaXN0SGFuZGxlLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9Db2xv
clNwYWNlLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9EaXNwbGF5TGlzdC5oPgogI2luY2x1ZGUgPFdl
YkNvcmUvRGlzcGxheUxpc3RJdGVtcy5oPgpAQCAtNTIsNiArNTEsNyBAQCBlbnVtIGNsYXNzIFJl
bmRlcmluZ01vZGUgOiBib29sOwogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAorY2xhc3MgRGlzcGxh
eUxpc3RSZWFkZXJIYW5kbGU7CiBjbGFzcyBHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzOwogCiBj
bGFzcyBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kCkBAIC03MiwxMiArNzIsMTEgQEAgcHVibGljOgog
ICAgIHZvaWQgaW1hZ2VCdWZmZXJCYWNrZW5kV2FzQ3JlYXRlZChjb25zdCBXZWJDb3JlOjpGbG9h
dFNpemUmIGxvZ2ljYWxTaXplLCBjb25zdCBXZWJDb3JlOjpJbnRTaXplJiBiYWNrZW5kU2l6ZSwg
ZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBXZWJDb3JlOjpDb2xvclNwYWNlLCBJbWFnZUJ1ZmZlckJh
Y2tlbmRIYW5kbGUsIFdlYkNvcmU6OlJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcik7CiAgICAg
dm9pZCBmbHVzaERpc3BsYXlMaXN0V2FzQ29tbWl0dGVkKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpG
bHVzaElkZW50aWZpZXIsIFdlYkNvcmU6OlJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcik7CiAK
KyAgICB2b2lkIHNldE5leHRJdGVtQnVmZmVyVG9SZWFkKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJ
dGVtQnVmZmVySWRlbnRpZmllcik7CisKIHByaXZhdGU6CiAgICAgUmVtb3RlUmVuZGVyaW5nQmFj
a2VuZChHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzJiwgUmVuZGVyaW5nQmFja2VuZElkZW50aWZp
ZXIpOwogCi0gICAgZW51bSBjbGFzcyBTaG91bGRGbHVzaENvbnRleHQgOiBib29sIHsgTm8sIFll
cyB9OwotICAgIHZvaWQgYXBwbHlEaXNwbGF5TGlzdChjb25zdCBTaGFyZWREaXNwbGF5TGlzdEhh
bmRsZSYsIFdlYkNvcmU6OlJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciwgU2hvdWxkRmx1c2hD
b250ZXh0KTsKLQogICAgIE9wdGlvbmFsPFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtSGFuZGxl
PiBXQVJOX1VOVVNFRF9SRVRVUk4gZGVjb2RlSXRlbShjb25zdCB1aW50OF90KiBkYXRhLCBzaXpl
X3QgbGVuZ3RoLCBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbVR5cGUsIHVpbnQ4X3QqIGhhbmRs
ZUxvY2F0aW9uKSBvdmVycmlkZTsKIAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+CkBAIC05Miw2
ICs5MSw4IEBAIHByaXZhdGU6CiAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CiAgICAgfQog
CisgICAgdm9pZCBhcHBseURpc3BsYXlMaXN0c0Zyb21IYW5kbGUoV2ViQ29yZTo6SW1hZ2VCdWZm
ZXImIGRlc3RpbmF0aW9uLCBEaXNwbGF5TGlzdFJlYWRlckhhbmRsZSYsIHNpemVfdCBvZmZzZXQp
OworCiAgICAgLy8gSVBDOjpNZXNzYWdlU2VuZGVyLgogICAgIElQQzo6Q29ubmVjdGlvbiogbWVz
c2FnZVNlbmRlckNvbm5lY3Rpb24oKSBjb25zdCBvdmVycmlkZTsKICAgICB1aW50NjRfdCBtZXNz
YWdlU2VuZGVyRGVzdGluYXRpb25JRCgpIGNvbnN0IG92ZXJyaWRlOwpAQCAtMTAyLDE2ICsxMDMs
MTYgQEAgcHJpdmF0ZToKIAogICAgIC8vIE1lc3NhZ2VzIHRvIGJlIHJlY2VpdmVkLgogICAgIHZv
aWQgY3JlYXRlSW1hZ2VCdWZmZXIoY29uc3QgV2ViQ29yZTo6RmxvYXRTaXplJiBsb2dpY2FsU2l6
ZSwgV2ViQ29yZTo6UmVuZGVyaW5nTW9kZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBXZWJDb3Jl
OjpDb2xvclNwYWNlLCBXZWJDb3JlOjpSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpOwotICAg
IHZvaWQgc3VibWl0RGlzcGxheUxpc3QoY29uc3QgU2hhcmVkRGlzcGxheUxpc3RIYW5kbGUmLCBX
ZWJDb3JlOjpSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpOwotICAgIHZvaWQgZmx1c2hEaXNw
bGF5TGlzdEFuZENvbW1pdChjb25zdCBTaGFyZWREaXNwbGF5TGlzdEhhbmRsZSYsIFdlYkNvcmU6
OkRpc3BsYXlMaXN0OjpGbHVzaElkZW50aWZpZXIsIFdlYkNvcmU6OlJlbmRlcmluZ1Jlc291cmNl
SWRlbnRpZmllcik7CisgICAgdm9pZCB3YWtlVXBBbmRBcHBseURpc3BsYXlMaXN0KFdlYkNvcmU6
OkRpc3BsYXlMaXN0OjpJdGVtQnVmZmVySWRlbnRpZmllciBpbml0aWFsSWRlbnRpZmllciwgdWlu
dDY0X3QgaW5pdGlhbE9mZnNldCwgV2ViQ29yZTo6UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVy
IGRlc3RpbmF0aW9uQnVmZmVySWRlbnRpZmllcik7CiAgICAgdm9pZCBnZXRJbWFnZURhdGEoV2Vi
Q29yZTo6QWxwaGFQcmVtdWx0aXBsaWNhdGlvbiBvdXRwdXRGb3JtYXQsIFdlYkNvcmU6OkludFJl
Y3Qgc3JjUmVjdCwgV2ViQ29yZTo6UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyLCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKElQQzo6SW1hZ2VEYXRhUmVmZXJlbmNlJiYpPiYmKTsKICAgICB2b2lk
IHJlbGVhc2VSZW1vdGVSZXNvdXJjZShXZWJDb3JlOjpSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZp
ZXIpOwotICAgIHZvaWQgZGlkQ3JlYXRlU2hhcmVkSXRlbURhdGEoV2ViQ29yZTo6RGlzcGxheUxp
c3Q6Okl0ZW1CdWZmZXJJZGVudGlmaWVyLCBjb25zdCBTaGFyZWRNZW1vcnk6OklQQ0hhbmRsZSYp
OworICAgIHZvaWQgZGlkQ3JlYXRlU2hhcmVkRGlzcGxheUxpc3RIYW5kbGUoV2ViQ29yZTo6RGlz
cGxheUxpc3Q6Okl0ZW1CdWZmZXJJZGVudGlmaWVyLCBjb25zdCBTaGFyZWRNZW1vcnk6OklQQ0hh
bmRsZSYsIFdlYkNvcmU6OlJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciBkZXN0aW5hdGlvbkJ1
ZmZlcklkZW50aWZpZXIpOwogCiAgICAgUmVtb3RlUmVzb3VyY2VDYWNoZSBtX3JlbW90ZVJlc291
cmNlQ2FjaGU7CiAgICAgV2Vha1B0cjxHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzPiBtX2dwdUNv
bm5lY3Rpb25Ub1dlYlByb2Nlc3M7CiAgICAgUmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXIgbV9y
ZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllcjsKLSAgICBIYXNoTWFwPFdlYkNvcmU6OkRpc3BsYXlM
aXN0OjpJdGVtQnVmZmVySWRlbnRpZmllciwgUmVmUHRyPFNoYXJlZE1lbW9yeT4+IG1fc2hhcmVk
SXRlbUJ1ZmZlcnM7CisgICAgSGFzaE1hcDxXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbUJ1ZmZl
cklkZW50aWZpZXIsIFJlZlB0cjxEaXNwbGF5TGlzdFJlYWRlckhhbmRsZT4+IG1fc2hhcmVkRGlz
cGxheUxpc3RIYW5kbGVzOworICAgIFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtQnVmZmVySWRl
bnRpZmllciBtX25leHRJdGVtQnVmZmVyVG9SZWFkOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2Vi
S2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3Rl
UmVuZGVyaW5nQmFja2VuZC5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9n
cmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kLm1lc3NhZ2VzLmluCmluZGV4IGY1NWIwMjZi
ZGI1ZTYzYTE0Y2YzNjIxNGE4M2U4YmJlODg2MzFhMWIuLjZmMmUyYWJkZjkyNmJjZDRhMDRjMjM1
NThlNjViOTk2YTVhMDYwODIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9n
cmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kLm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9X
ZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kLm1lc3NhZ2Vz
LmluCkBAIC0yNCwxMCArMjQsOSBAQAogCiBtZXNzYWdlcyAtPiBSZW1vdGVSZW5kZXJpbmdCYWNr
ZW5kIE5vdFJlZkNvdW50ZWQgewogICAgIENyZWF0ZUltYWdlQnVmZmVyKFdlYkNvcmU6OkZsb2F0
U2l6ZSBsb2dpY2FsU2l6ZSwgV2ViQ29yZTo6UmVuZGVyaW5nTW9kZSByZW5kZXJpbmdNb2RlLCBm
bG9hdCByZXNvbHV0aW9uU2NhbGUsIFdlYkNvcmU6OkNvbG9yU3BhY2UgY29sb3JTcGFjZSwgV2Vi
Q29yZTo6UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyIHJlbmRlcmluZ1Jlc291cmNlSWRlbnRp
ZmllcikKLSAgICBTdWJtaXREaXNwbGF5TGlzdChXZWJLaXQ6OlNoYXJlZERpc3BsYXlMaXN0SGFu
ZGxlIGRpc3BsYXlMaXN0LCBXZWJDb3JlOjpSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgcmVu
ZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKQotICAgIEZsdXNoRGlzcGxheUxpc3RBbmRDb21taXQo
V2ViS2l0OjpTaGFyZWREaXNwbGF5TGlzdEhhbmRsZSBkaXNwbGF5TGlzdCwgV2ViQ29yZTo6RGlz
cGxheUxpc3Q6OkZsdXNoSWRlbnRpZmllciBmbHVzaElkZW50aWZpZXIsIFdlYkNvcmU6OlJlbmRl
cmluZ1Jlc291cmNlSWRlbnRpZmllciByZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpCisgICAg
V2FrZVVwQW5kQXBwbHlEaXNwbGF5TGlzdChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbUJ1ZmZl
cklkZW50aWZpZXIgaW5pdGlhbElkZW50aWZpZXIsIHVpbnQ2NF90IGluaXRpYWxPZmZzZXQsIFdl
YkNvcmU6OlJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciBkZXN0aW5hdGlvbkJ1ZmZlcklkZW50
aWZpZXIpCiAgICAgR2V0SW1hZ2VEYXRhKGVudW06dWludDhfdCBXZWJDb3JlOjpBbHBoYVByZW11
bHRpcGxpY2F0aW9uIG91dHB1dEZvcm1hdCwgV2ViQ29yZTo6SW50UmVjdCBzcmNSZWN0LCBXZWJD
b3JlOjpSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlm
aWVyKSAtPiAoSVBDOjpJbWFnZURhdGFSZWZlcmVuY2UgaW1hZ2VEYXRhKSBTeW5jaHJvbm91cwot
ICAgIERpZENyZWF0ZVNoYXJlZEl0ZW1EYXRhKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtQnVm
ZmVySWRlbnRpZmllciBpZGVudGlmaWVyLCBXZWJLaXQ6OlNoYXJlZE1lbW9yeTo6SVBDSGFuZGxl
IGhhbmRsZSkKKyAgICBEaWRDcmVhdGVTaGFyZWREaXNwbGF5TGlzdEhhbmRsZShXZWJDb3JlOjpE
aXNwbGF5TGlzdDo6SXRlbUJ1ZmZlcklkZW50aWZpZXIgaWRlbnRpZmllciwgV2ViS2l0OjpTaGFy
ZWRNZW1vcnk6OklQQ0hhbmRsZSBoYW5kbGUsIFdlYkNvcmU6OlJlbmRlcmluZ1Jlc291cmNlSWRl
bnRpZmllciBkZXN0aW5hdGlvbkJ1ZmZlcklkZW50aWZpZXIpCiAgICAgUmVsZWFzZVJlbW90ZVJl
c291cmNlKFdlYkNvcmU6OlJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciByZW5kZXJpbmdSZXNv
dXJjZUlkZW50aWZpZXIpCiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1No
YXJlZERpc3BsYXlMaXN0SGFuZGxlLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1NoYXJlZERp
c3BsYXlMaXN0SGFuZGxlLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMWFhNzRk
NjE1YWJkM2Y0YTMxODYyNTJmZjBmZGNiODcxZTcwZmE1MC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9TaGFyZWREaXNw
bGF5TGlzdEhhbmRsZS5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSw1MyArMCwwIEBACi0vKgotICog
Q29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0g
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElU
UyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YK
LSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
Ci0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0g
Ki8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIlNoYXJlZERpc3BsYXlMaXN0SGFu
ZGxlLmgiCi0KLW5hbWVzcGFjZSBXZWJLaXQgewotdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7Ci0K
LVNoYXJlZERpc3BsYXlMaXN0SGFuZGxlOjpTaGFyZWREaXNwbGF5TGlzdEhhbmRsZShjb25zdCBE
aXNwbGF5TGlzdDo6RGlzcGxheUxpc3QmIGRpc3BsYXlMaXN0KQotewotICAgIGRpc3BsYXlMaXN0
LmZvckVhY2hJdGVtQnVmZmVyKFsmXSAoYXV0byYgaGFuZGxlKSB7Ci0gICAgICAgIG1fYnVmZmVy
cy5hcHBlbmQoeyBoYW5kbGUuaWRlbnRpZmllciwgaGFuZGxlLmNhcGFjaXR5IH0pOwotICAgIH0p
OwotfQotCi1zdGQ6OnVuaXF1ZV9wdHI8RGlzcGxheUxpc3Q6OkRpc3BsYXlMaXN0PiBTaGFyZWRE
aXNwbGF5TGlzdEhhbmRsZTo6Y3JlYXRlRGlzcGxheUxpc3QoSXRlbUJ1ZmZlclByb3ZpZGVyJiYg
YnVmZmVyUHJvdmlkZXIpIGNvbnN0Ci17Ci0gICAgRGlzcGxheUxpc3Q6Okl0ZW1CdWZmZXJIYW5k
bGVzIGhhbmRsZXM7Ci0gICAgaGFuZGxlcy5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KG1fYnVmZmVy
cy5zaXplKCkpOwotICAgIGZvciAoYXV0byYgW2lkZW50aWZpZXIsIGNhcGFjaXR5XSA6IG1fYnVm
ZmVycykgewotICAgICAgICBhdXRvKiBkYXRhID0gYnVmZmVyUHJvdmlkZXIoaWRlbnRpZmllcik7
Ci0gICAgICAgIGlmICghZGF0YSkKLSAgICAgICAgICAgIHJldHVybiBudWxscHRyOwotCi0gICAg
ICAgIGhhbmRsZXMudW5jaGVja2VkQXBwZW5kKHsgaWRlbnRpZmllciwgZGF0YSwgY2FwYWNpdHkg
fSk7Ci0gICAgfQotICAgIHJldHVybiBtYWtlVW5pcXVlPERpc3BsYXlMaXN0OjpEaXNwbGF5TGlz
dD4oV1RGTW92ZShoYW5kbGVzKSk7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvU2hhcmVkRGlzcGxheUxpc3RIYW5kbGUuaCBiL1Nv
dXJjZS9XZWJLaXQvU2hhcmVkL1NoYXJlZERpc3BsYXlMaXN0SGFuZGxlLmgKaW5kZXggZDE3NWUx
MTRmMjNiYzhmYjhlNTdjZDkwZjY0YTMzYmUyNjJlMWYzMS4uMzFkYzNlMDkyYjA1ZmY0NDdjOTEx
Y2FjNGQyOTA3N2Q2OWQyZmE1NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvU2hh
cmVkRGlzcGxheUxpc3RIYW5kbGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9TaGFyZWRE
aXNwbGF5TGlzdEhhbmRsZS5oCkBAIC0yNSw0MiArMjUsNzcgQEAKIAogI3ByYWdtYSBvbmNlCiAK
KyNpbmNsdWRlICJTaGFyZWRNZW1vcnkuaCIKICNpbmNsdWRlIDxXZWJDb3JlL0Rpc3BsYXlMaXN0
Lmg+CisjaW5jbHVkZSA8d3RmL0F0b21pY3MuaD4KKyNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5o
PgorI2luY2x1ZGUgPHd0Zi9UaHJlYWRpbmcuaD4KIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKLWNs
YXNzIFNoYXJlZERpc3BsYXlMaXN0SGFuZGxlIHsKK2NsYXNzIFNoYXJlZERpc3BsYXlMaXN0SGFu
ZGxlIDogcHVibGljIFJlZkNvdW50ZWQ8U2hhcmVkRGlzcGxheUxpc3RIYW5kbGU+IHsKIHB1Ymxp
YzoKLSAgICB1c2luZyBJdGVtQnVmZmVyUHJvdmlkZXIgPSBGdW5jdGlvbjx1aW50OF90KihXZWJD
b3JlOjpEaXNwbGF5TGlzdDo6SXRlbUJ1ZmZlcklkZW50aWZpZXIpPjsKKyAgICB2aXJ0dWFsIH5T
aGFyZWREaXNwbGF5TGlzdEhhbmRsZSgpID0gZGVmYXVsdDsKIAotICAgIFNoYXJlZERpc3BsYXlM
aXN0SGFuZGxlKGNvbnN0IFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEaXNwbGF5TGlzdCYpOwotICAg
IHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RGlzcGxheUxpc3Q+IGNyZWF0
ZURpc3BsYXlMaXN0KEl0ZW1CdWZmZXJQcm92aWRlciYmKSBjb25zdDsKKyAgICBzdGF0aWMgY29u
c3RleHByIGF1dG8gcmVzZXJ2ZWRDYXBhY2l0eUF0U3RhcnQgPSAyICogc2l6ZW9mKHVpbnQ2NF90
KTsKIAotICAgIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+IHZvaWQgZW5jb2RlKEVuY29kZXImKSBj
b25zdDsKLSAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGF0aWMgT3B0aW9uYWw8U2hhcmVk
RGlzcGxheUxpc3RIYW5kbGU+IGRlY29kZShEZWNvZGVyJik7CisgICAgU2hhcmVkTWVtb3J5JiBz
aGFyZWRNZW1vcnkoKSB7IHJldHVybiBtX3NoYXJlZE1lbW9yeS5nZXQoKTsgfQorICAgIGNvbnN0
IFNoYXJlZE1lbW9yeSYgc2hhcmVkTWVtb3J5KCkgY29uc3QgeyByZXR1cm4gbV9zaGFyZWRNZW1v
cnkuZ2V0KCk7IH0KIAotcHJpdmF0ZToKLSAgICBTaGFyZWREaXNwbGF5TGlzdEhhbmRsZShWZWN0
b3I8c3RkOjpwYWlyPFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtQnVmZmVySWRlbnRpZmllciwg
c2l6ZV90Pj4mJiBidWZmZXJzKQotICAgICAgICA6IG1fYnVmZmVycyhXVEZNb3ZlKGJ1ZmZlcnMp
KQorICAgIFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtQnVmZmVySWRlbnRpZmllciBpZGVudGlm
aWVyKCkgY29uc3QgeyByZXR1cm4gbV9pZGVudGlmaWVyOyB9CisgICAgdWludDhfdCogZGF0YSgp
IGNvbnN0IHsgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8dWludDhfdCo+KHNoYXJlZE1lbW9yeSgp
LmRhdGEoKSk7IH0KKworICAgIHVpbnQ2NF90IHVucmVhZEJ5dGVzKCkKICAgICB7CisgICAgICAg
IGF1dG8gbG9ja2VyID0gU2hhcmVkRGlzcGxheUxpc3RIYW5kbGU6OkxvY2sgeyAqdGhpcyB9Owor
ICAgICAgICByZXR1cm4gaGVhZGVyKCkudW5yZWFkQnl0ZXM7CiAgICAgfQogCi0gICAgVmVjdG9y
PHN0ZDo6cGFpcjxXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbUJ1ZmZlcklkZW50aWZpZXIsIHNp
emVfdD4+IG1fYnVmZmVyczsKLX07CisgICAgdmlydHVhbCBzaXplX3QgYWR2YW5jZShzaXplX3Qg
YW1vdW50KSA9IDA7CisKK3Byb3RlY3RlZDoKKyAgICBjbGFzcyBMb2NrIHsKKyAgICBwdWJsaWM6
CisgICAgICAgIExvY2soU2hhcmVkRGlzcGxheUxpc3RIYW5kbGUmIGhhbmRsZSkKKyAgICAgICAg
ICAgIDogbV9oYW5kbGUoaGFuZGxlKQorICAgICAgICB7CisgICAgICAgICAgICBhdXRvJiBhdG9t
aWNWYWx1ZSA9IG1faGFuZGxlLmhlYWRlcigpLmxvY2s7CisgICAgICAgICAgICB3aGlsZSAodHJ1
ZSkgeworICAgICAgICAgICAgICAgIC8vIEZJWE1FOiBXZSBuZWVkIHRvIGF2b2lkIHdhaXRpbmcg
Zm9yZXZlciBpbiB0aGUgY2FzZSB3aGVyZSB0aGUgd2ViIGNvbnRlbnQgcHJvY2VzcworICAgICAg
ICAgICAgICAgIC8vIGhvbGRzIG9uIHRvIHRoZSBsb2NrIGluZGVmaW5pdGVseSAob3IgY3Jhc2hl
cyB3aGlsZSBob2xkaW5nIHRoZSBsb2NrKS4KKyAgICAgICAgICAgICAgICB1aW50NjRfdCB1bmxv
Y2tlZCA9IDA7CisgICAgICAgICAgICAgICAgaWYgKGF0b21pY1ZhbHVlLmNvbXBhcmVFeGNoYW5n
ZVdlYWsodW5sb2NrZWQsIDEpKQorICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAg
ICAgICAgICBUaHJlYWQ6OnlpZWxkKCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAg
ICAgICB+TG9jaygpCisgICAgICAgIHsKKyAgICAgICAgICAgIG1faGFuZGxlLmhlYWRlcigpLmxv
Y2suc3RvcmUoMCk7CisgICAgICAgIH0KKworICAgIHByaXZhdGU6CisgICAgICAgIFNoYXJlZERp
c3BsYXlMaXN0SGFuZGxlJiBtX2hhbmRsZTsKKyAgICB9OwogCi10ZW1wbGF0ZTxjbGFzcyBFbmNv
ZGVyPiB2b2lkIFNoYXJlZERpc3BsYXlMaXN0SGFuZGxlOjplbmNvZGUoRW5jb2RlciYgZW5jb2Rl
cikgY29uc3QKLXsKLSAgICBlbmNvZGVyIDw8IG1fYnVmZmVyczsKLX0KKyAgICBTaGFyZWREaXNw
bGF5TGlzdEhhbmRsZShXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbUJ1ZmZlcklkZW50aWZpZXIg
aWRlbnRpZmllciwgUmVmPFNoYXJlZE1lbW9yeT4mJiBzaGFyZWRNZW1vcnkpCisgICAgICAgIDog
bV9pZGVudGlmaWVyKGlkZW50aWZpZXIpCisgICAgICAgICwgbV9zaGFyZWRNZW1vcnkoV1RGTW92
ZShzaGFyZWRNZW1vcnkpKQorICAgIHsKKyAgICB9CisKKyAgICBzdHJ1Y3QgRGlzcGxheUxpc3RT
aGFyZWRNZW1vcnlIZWFkZXIgeworICAgICAgICBBdG9taWM8dWludDY0X3Q+IGxvY2s7CisgICAg
ICAgIHVpbnQ2NF90IHVucmVhZEJ5dGVzOworICAgIH07CiAKLXRlbXBsYXRlPGNsYXNzIERlY29k
ZXI+IE9wdGlvbmFsPFNoYXJlZERpc3BsYXlMaXN0SGFuZGxlPiBTaGFyZWREaXNwbGF5TGlzdEhh
bmRsZTo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCi17Ci0gICAgT3B0aW9uYWw8VmVjdG9yPHN0
ZDo6cGFpcjxXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbUJ1ZmZlcklkZW50aWZpZXIsIHNpemVf
dD4+PiBidWZmZXJzOwotICAgIGRlY29kZXIgPj4gYnVmZmVyczsKLSAgICBpZiAoIWJ1ZmZlcnMp
Ci0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgRGlzcGxheUxpc3RTaGFyZWRNZW1v
cnlIZWFkZXImIGhlYWRlcigpIHsgcmV0dXJuICpyZWludGVycHJldF9jYXN0PERpc3BsYXlMaXN0
U2hhcmVkTWVtb3J5SGVhZGVyKj4oZGF0YSgpKTsgfQogCi0gICAgcmV0dXJuIHt7IFdURk1vdmUo
KmJ1ZmZlcnMpIH19OwotfQorcHJpdmF0ZToKKworICAgIFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJ
dGVtQnVmZmVySWRlbnRpZmllciBtX2lkZW50aWZpZXI7CisgICAgUmVmPFNoYXJlZE1lbW9yeT4g
bV9zaGFyZWRNZW1vcnk7Cit9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvU291cmNlcy50eHQgYi9Tb3VyY2UvV2ViS2l0L1NvdXJjZXMudHh0Cmlu
ZGV4IDgzZDI4MGM3NWVmNWY1YmIwYTJlYjZkMTFhYThjMGZhOTE5Yjc0ZDAuLjI0NWZkYjIxZjk1
Mjk5OGEzOWRiOGEyMTkyYzhjNTcyYzg5MTA2MmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
U291cmNlcy50eHQKKysrIGIvU291cmNlL1dlYktpdC9Tb3VyY2VzLnR4dApAQCAtMjQsNiArMjQs
NyBAQAogR1BVUHJvY2Vzcy9HUFVQcm9jZXNzLmNwcAogR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9u
VG9XZWJQcm9jZXNzLmNwcAogR1BVUHJvY2Vzcy9HUFVQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJz
LmNwcAorR1BVUHJvY2Vzcy9ncmFwaGljcy9EaXNwbGF5TGlzdFJlYWRlckhhbmRsZS5jcHAKIEdQ
VVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5jcHAKIEdQVVByb2Nlc3Mv
Z3JhcGhpY3MvUmVtb3RlUmVzb3VyY2VDYWNoZS5jcHAKIEdQVVByb2Nlc3MvbWVkaWEvUmVtb3Rl
QXVkaW9TZXNzaW9uUHJveHkuY3BwCkBAIC0xNzMsNyArMTc0LDYgQEAgU2hhcmVkL1NlcnZpY2VX
b3JrZXJJbml0aWFsaXphdGlvbkRhdGEuY3BwCiBTaGFyZWQvU2Vzc2lvblN0YXRlLmNwcAogU2hh
cmVkL1NoYXJlYWJsZUJpdG1hcC5jcHAgQG5vLXVuaWZ5CiBTaGFyZWQvU2hhcmVhYmxlUmVzb3Vy
Y2UuY3BwCi1TaGFyZWQvU2hhcmVkRGlzcGxheUxpc3RIYW5kbGUuY3BwCiBTaGFyZWQvU2hhcmVk
U3RyaW5nSGFzaFN0b3JlLmNwcAogU2hhcmVkL1NoYXJlZFN0cmluZ0hhc2hUYWJsZVJlYWRPbmx5
LmNwcAogU2hhcmVkL1NoYXJlZFN0cmluZ0hhc2hUYWJsZS5jcHAKQEAgLTU2MCw2ICs1NjAsNyBA
QCBXZWJQcm9jZXNzL01lZGlhU3RyZWFtL01lZGlhRGV2aWNlU2FuZGJveEV4dGVuc2lvbnMuY3Bw
CiBXZWJQcm9jZXNzL01lZGlhU3RyZWFtL1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdl
ci5jcHAKIAogV2ViUHJvY2Vzcy9HUFUvR1BVUHJvY2Vzc0Nvbm5lY3Rpb24uY3BwCitXZWJQcm9j
ZXNzL0dQVS9ncmFwaGljcy9EaXNwbGF5TGlzdFdyaXRlckhhbmRsZS5jcHAKIFdlYlByb2Nlc3Mv
R1BVL2dyYXBoaWNzL0ltYWdlQnVmZmVyU2hhcmVhYmxlQml0bWFwQmFja2VuZC5jcHAKIFdlYlBy
b2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS5jcHAKIFdlYlBy
b2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZVJlc291cmNlQ2FjaGVQcm94eS5jcHAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3Vy
Y2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGMwMjc0OTRi
NzNhY2NlYzVlZmQ4MWM2OTRkM2E4NTNiNGVkZWYwY2EuLjBlZTk5NzEwMTk2MDM2YjNmYTFiZmUz
MTMxNTNiODlmMjg4ODdkMzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvagpAQCAtMTg3MSw2ICsxODcxLDggQEAKIAkJRTVCRUY2ODIyMTMwQzQ4
MDAwRjMxMTExIC8qIFdlYkRhdGFMaXN0U3VnZ2VzdGlvbnNEcm9wZG93bklPUy5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTVCRUY2ODAyMTMwQzQ3RjAw
RjMxMTExIC8qIFdlYkRhdGFMaXN0U3VnZ2VzdGlvbnNEcm9wZG93bklPUy5oICovOyB9OwogCQlF
NUNCMDdEQzIwRTE2NzhGMDAyMkMxODMgLyogV0tGb3JtQ29sb3JDb250cm9sLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFNUNCMDdEQTIwRTE2NzhGMDAy
MkMxODMgLyogV0tGb3JtQ29sb3JDb250cm9sLmggKi87IH07CiAJCUVEODJBN0YyMTI4QzZGQUYw
MDQ0NzdCMyAvKiBXS0J1bmRsZVBhZ2VPdmVybGF5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQTIyRjBGRjEyODlGQ0Q5MDA4NUU3NEYgLyogV0tCdW5k
bGVQYWdlT3ZlcmxheS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CisJCUY0MDk0Q0JEMjU1MzA1M0QwMDNENzNFMyAvKiBEaXNwbGF5TGlzdFJlYWRlckhh
bmRsZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjQw
OTRDQkIyNTUzMDRBRjAwM0Q3M0UzIC8qIERpc3BsYXlMaXN0UmVhZGVySGFuZGxlLmggKi87IH07
CisJCUY0MDk0Q0JFMjU1MzA1NDAwMDNENzNFMyAvKiBEaXNwbGF5TGlzdFdyaXRlckhhbmRsZS5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjQwOTRDQjky
NTUzMDQ3RTAwM0Q3M0UzIC8qIERpc3BsYXlMaXN0V3JpdGVySGFuZGxlLmggKi87IH07CiAJCUY0
MDlCQTE4MUU2RTY0QkMwMDlEQTI4RSAvKiBXS0RyYWdEZXN0aW5hdGlvbkFjdGlvbi5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjQwOUJBMTcxRTZFNjRC
MzAwOURBMjhFIC8qIFdLRHJhZ0Rlc3RpbmF0aW9uQWN0aW9uLmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJRjQyRDYzNDEyMkEwRUZERjAwRDJGQjNB
IC8qIFdlYkF1dG9jb3JyZWN0aW9uRGF0YS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gRjQyRDYzM0YyMkEwRUZEMzAwRDJGQjNBIC8qIFdlYkF1dG9jb3Jy
ZWN0aW9uRGF0YS5oICovOyB9OwogCQlGNDMwRTk0MjIyNDczMzVGMDA1RkUwNTMgLyogV2Vic2l0
ZU1ldGFWaWV3cG9ydFBvbGljeS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gRjQzMEU5NDEyMjQ3MzJBOTAwNUZFMDUzIC8qIFdlYnNpdGVNZXRhVmlld3Bv
cnRQb2xpY3kuaCAqLzsgfTsKQEAgLTU0NzAsNiArNTQ3MiwxMCBAQAogCQlFQ0E2ODBEMzFFNjkw
NEI1MDA3MzFEMjAgLyogRXh0cmFQcml2YXRlU3ltYm9sc0ZvclRBUEkuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gRXh0cmFQcml2YXRlU3ltYm9sc0ZvclRBUEkuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRUNCRkMxREIxRTZBNEQ2NjAwMDMwMEM3IC8qIEV4dHJh
UHVibGljU3ltYm9sc0ZvclRBUEkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRXh0cmFQdWJsaWNTeW1ib2xz
Rm9yVEFQSS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGMDM2OTc4NzE1RjRCRjA1
MDBDM0E4MEUgLyogV2ViQ29sb3JQaWNrZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gV2ViQ29sb3JQaWNrZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQlGNDA5NENCOTI1NTMwNDdFMDAzRDczRTMgLyogRGlzcGxheUxpc3RXcml0ZXJIYW5kbGUu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gRGlzcGxheUxpc3RXcml0ZXJIYW5kbGUuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJRjQwOTRDQkEyNTUzMDQ3RTAwM0Q3M0UzIC8qIERpc3BsYXlMaXN0
V3JpdGVySGFuZGxlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IERpc3BsYXlMaXN0V3JpdGVySGFu
ZGxlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRjQwOTRDQkIyNTUzMDRBRjAw
M0Q3M0UzIC8qIERpc3BsYXlMaXN0UmVhZGVySGFuZGxlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERpc3Bs
YXlMaXN0UmVhZGVySGFuZGxlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUY0MDk0
Q0JDMjU1MzA0QUYwMDNENzNFMyAvKiBEaXNwbGF5TGlzdFJlYWRlckhhbmRsZS5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBEaXNwbGF5TGlzdFJlYWRlckhhbmRsZS5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCUY0MDlCQTE3MUU2RTY0QjMwMDlEQTI4RSAvKiBXS0RyYWdEZXN0aW5h
dGlvbkFjdGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXS0RyYWdEZXN0
aW5hdGlvbkFjdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGNDBEMUI2ODIy
MEJEQzBGMDBCNDlBMDEgLyogV2ViQXV0b2NvcnJlY3Rpb25Db250ZXh0LmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFt
ZSA9IFdlYkF1dG9jb3JyZWN0aW9uQ29udGV4dC5oOyBwYXRoID0gaW9zL1dlYkF1dG9jb3JyZWN0
aW9uQ29udGV4dC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGNDEwNTY2MTIxMzA2
OTlBMDA5MjI4MUQgLyogQVBJQXR0YWNobWVudENvY29hLm1tICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRo
ID0gQVBJQXR0YWNobWVudENvY29hLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAt
NTQ5Miw3ICs1NDk4LDYgQEAKIAkJRjQ5NkE0MkYxRjU4QTI3MjAwNEMxNzU3IC8qIERyYWdEcm9w
SW50ZXJhY3Rpb25TdGF0ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBEcmFnRHJvcEludGVyYWN0aW9uU3Rh
dGUuaDsgcGF0aCA9IGlvcy9EcmFnRHJvcEludGVyYWN0aW9uU3RhdGUuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJRjQ5NkE0MzAxRjU4QTI3MjAwNEMxNzU3IC8qIERyYWdEcm9wSW50
ZXJhY3Rpb25TdGF0ZS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgbmFtZSA9IERyYWdEcm9wSW50ZXJhY3Rp
b25TdGF0ZS5tbTsgcGF0aCA9IGlvcy9EcmFnRHJvcEludGVyYWN0aW9uU3RhdGUubW07IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUY0QTZENkJCMjU0Q0EzRTkwMEI2NUZBQSAvKiBTaGFy
ZWREaXNwbGF5TGlzdEhhbmRsZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTaGFyZWREaXNwbGF5TGlzdEhh
bmRsZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlGNEE2RDZCRDI1NENBNTIyMDBC
NjVGQUEgLyogU2hhcmVkRGlzcGxheUxpc3RIYW5kbGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
U2hhcmVkRGlzcGxheUxpc3RIYW5kbGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQlGNEFDNjU1RTIyQTMxNDBFMDBBMDU2MDcgLyogV2ViUHJlZmVyZW5jZXNEZWZhdWx0VmFsdWVz
SU9TLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBuYW1lID0gV2ViUHJlZmVy
ZW5jZXNEZWZhdWx0VmFsdWVzSU9TLm1tOyBwYXRoID0gaW9zL1dlYlByZWZlcmVuY2VzRGVmYXVs
dFZhbHVlc0lPUy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRjRCMzc4RDAyMURE
QkJBQjAwOTVBMzc4IC8qIFdlYlVuZG9TdGVwSUQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViVW5kb1N0
ZXBJRC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGNENCMDlFNDIyNUQ1QTAzMDA4
OTE0ODcgLyogV2Vic2l0ZU1lZGlhU291cmNlUG9saWN5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYnNp
dGVNZWRpYVNvdXJjZVBvbGljeS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNjIw
MCw3ICs2MjA1LDYgQEAKIAkJCQkxQTY0MjBFMzEyRENFMkZGMDBDQUFFMkMgLyogU2hhcmVhYmxl
Qml0bWFwLmggKi8sCiAJCQkJNTEyMTc0NUUxNjRDMjBFMzAwMzdBNUMxIC8qIFNoYXJlYWJsZVJl
c291cmNlLmNwcCAqLywKIAkJCQk1MTIxNzQ1RjE2NEMyMEUzMDAzN0E1QzEgLyogU2hhcmVhYmxl
UmVzb3VyY2UuaCAqLywKLQkJCQlGNEE2RDZCRDI1NENBNTIyMDBCNjVGQUEgLyogU2hhcmVkRGlz
cGxheUxpc3RIYW5kbGUuY3BwICovLAogCQkJCUY0QTZENkJCMjU0Q0EzRTkwMEI2NUZBQSAvKiBT
aGFyZWREaXNwbGF5TGlzdEhhbmRsZS5oICovLAogCQkJCTgzMTNGN0VBMUY3REFFMDQwMEI5NDRF
QiAvKiBTaGFyZWRTdHJpbmdIYXNoU3RvcmUuY3BwICovLAogCQkJCTgzMTNGN0U5MUY3REFFMDMw
MEI5NDRFQiAvKiBTaGFyZWRTdHJpbmdIYXNoU3RvcmUuaCAqLywKQEAgLTgxNzUsNiArODE3OSw4
IEBACiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAogCQkJCTcyN0E3RjMzMjQw
Nzg1MjcwMDREMjkzMSAvKiBjb2NvYSAqLywKKwkJCQlGNDA5NENCQTI1NTMwNDdFMDAzRDczRTMg
LyogRGlzcGxheUxpc3RXcml0ZXJIYW5kbGUuY3BwICovLAorCQkJCUY0MDk0Q0I5MjU1MzA0N0Uw
MDNENzNFMyAvKiBEaXNwbGF5TGlzdFdyaXRlckhhbmRsZS5oICovLAogCQkJCTcyN0E3RjM5MjQw
Nzg4RjEwMDREMjkzMSAvKiBJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGUuaCAqLywKIAkJCQk3MjdB
N0YzNzI0MDc4OEYwMDA0RDI5MzEgLyogSW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRtYXBCYWNrZW5k
LmNwcCAqLywKIAkJCQk3MjdBN0YzNjI0MDc4OEYwMDA0RDI5MzEgLyogSW1hZ2VCdWZmZXJTaGFy
ZWFibGVCaXRtYXBCYWNrZW5kLmggKi8sCkBAIC04MTk0LDYgKzgyMDAsOCBAQAogCQk1NTA2NDBB
MTI0MDcxQTI5MDBBQUUwNDUgLyogZ3JhcGhpY3MgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsK
IAkJCWNoaWxkcmVuID0gKAorCQkJCUY0MDk0Q0JDMjU1MzA0QUYwMDNENzNFMyAvKiBEaXNwbGF5
TGlzdFJlYWRlckhhbmRsZS5jcHAgKi8sCisJCQkJRjQwOTRDQkIyNTUzMDRBRjAwM0Q3M0UzIC8q
IERpc3BsYXlMaXN0UmVhZGVySGFuZGxlLmggKi8sCiAJCQkJNTVBRDA5NDMyNDA4QTBFNjAwREU0
RDJGIC8qIFBsYXRmb3JtUmVtb3RlSW1hZ2VCdWZmZXIuaCAqLywKIAkJCQk1NUFEMDk0MjI0MDhB
MDJFMDBERTREMkYgLyogUmVtb3RlSW1hZ2VCdWZmZXIuaCAqLywKIAkJCQk1NTA2NDBBMjI0MDcx
QTYxMDBBQUUwNDUgLyogUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5jcHAgKi8sCkBAIC0xMTAzNSw2
ICsxMTA0Myw4IEBACiAJCQkJODM4OTFCNkMxQTY4QzMwQjAwMzBGMzg2IC8qIERpYWdub3N0aWNM
b2dnaW5nQ2xpZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlDMTgxNzM2MTIwNTg0MjQ3MDBERkRB
NjUgLyogRGlzcGxheUxpbmsuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGMTg5Q0FDMjQ3NDlGMkYw
MEU1OEQ4MSAvKiBEaXNwbGF5TGlua09ic2VydmVySUQuaCBpbiBIZWFkZXJzICovLAorCQkJCUY0
MDk0Q0JEMjU1MzA1M0QwMDNENzNFMyAvKiBEaXNwbGF5TGlzdFJlYWRlckhhbmRsZS5oIGluIEhl
YWRlcnMgKi8sCisJCQkJRjQwOTRDQkUyNTUzMDU0MDAwM0Q3M0UzIC8qIERpc3BsYXlMaXN0V3Jp
dGVySGFuZGxlLmggaW4gSGVhZGVycyAqLywKIAkJCQk1QzE0MjcwMjFDMjNGODRDMDBENDExODMg
LyogRG93bmxvYWQuaCBpbiBIZWFkZXJzICovLAogCQkJCTVDMTQyNzA1MUMyM0Y4NEMwMEQ0MTE4
MyAvKiBEb3dubG9hZElELmggaW4gSGVhZGVycyAqLywKIAkJCQk1QzE0MjcwNzFDMjNGODRDMDBE
NDExODMgLyogRG93bmxvYWRNYW5hZ2VyLmggaW4gSGVhZGVycyAqLywKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvRGlzcGxheUxpc3RXcml0ZXJIYW5k
bGUuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9EaXNwbGF5TGlz
dFdyaXRlckhhbmRsZS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYjViN2MwODAyM2QzNTc4ZGE0NjU0ZDUxMmE1
ZjhkNWVhMzViMmI5MAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9HUFUvZ3JhcGhpY3MvRGlzcGxheUxpc3RXcml0ZXJIYW5kbGUuY3BwCkBAIC0wLDAgKzEsODMg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiRGlzcGxheUxp
c3RXcml0ZXJIYW5kbGUuaCIKKworI2luY2x1ZGUgPHd0Zi9DaGVja2VkQXJpdGhtZXRpYy5oPgor
CituYW1lc3BhY2UgV2ViS2l0IHsKK3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOworCitzaXplX3Qg
RGlzcGxheUxpc3RXcml0ZXJIYW5kbGU6OmFkdmFuY2Uoc2l6ZV90IGFtb3VudCkKK3sKKyAgICBD
aGVja2VkU2l6ZSBjaGVja2VkV3JpdGFibGVPZmZzZXQgPSBtX3dyaXRhYmxlT2Zmc2V0OworICAg
IGNoZWNrZWRXcml0YWJsZU9mZnNldCArPSBhbW91bnQ7CisgICAgaWYgKFVOTElLRUxZKGNoZWNr
ZWRXcml0YWJsZU9mZnNldC5oYXNPdmVyZmxvd2VkKCkpKQorICAgICAgICBSRUxFQVNFX0FTU0VS
VF9OT1RfUkVBQ0hFRCgpOworCisgICAgYXV0byBsb2NrZXIgPSBTaGFyZWREaXNwbGF5TGlzdEhh
bmRsZTo6TG9jayB7ICp0aGlzIH07CisgICAgQ2hlY2tlZFNpemUgY2hlY2tlZFVucmVhZEJ5dGVz
ID0gaGVhZGVyKCkudW5yZWFkQnl0ZXM7CisgICAgY2hlY2tlZFVucmVhZEJ5dGVzICs9IGFtb3Vu
dDsKKyAgICBpZiAoVU5MSUtFTFkoY2hlY2tlZFVucmVhZEJ5dGVzLmhhc092ZXJmbG93ZWQoKSkp
CisgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CisKKyAgICBtX3dyaXRhYmxl
T2Zmc2V0ID0gY2hlY2tlZFdyaXRhYmxlT2Zmc2V0LnVuc2FmZUdldCgpOworICAgIGhlYWRlcigp
LnVucmVhZEJ5dGVzID0gY2hlY2tlZFVucmVhZEJ5dGVzLnVuc2FmZUdldCgpOworICAgIHJldHVy
biBjaGVja2VkVW5yZWFkQnl0ZXMudW5zYWZlR2V0KCk7Cit9CisKK3NpemVfdCBEaXNwbGF5TGlz
dFdyaXRlckhhbmRsZTo6YXZhaWxhYmxlQ2FwYWNpdHkoKSBjb25zdAoreworICAgIGlmIChVTkxJ
S0VMWShzaGFyZWRNZW1vcnkoKS5zaXplKCkgPCB3cml0YWJsZU9mZnNldCgpKSkKKyAgICAgICAg
UkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKworICAgIHJldHVybiBzaGFyZWRNZW1vcnko
KS5zaXplKCkgLSB3cml0YWJsZU9mZnNldCgpOworfQorCitEaXNwbGF5TGlzdDo6SXRlbUJ1ZmZl
ckhhbmRsZSBEaXNwbGF5TGlzdFdyaXRlckhhbmRsZTo6Y3JlYXRlSGFuZGxlKCkgY29uc3QKK3sK
KyAgICByZXR1cm4geworICAgICAgICBpZGVudGlmaWVyKCksCisgICAgICAgIGRhdGEoKSArIHdy
aXRhYmxlT2Zmc2V0KCksCisgICAgICAgIGF2YWlsYWJsZUNhcGFjaXR5KCkKKyAgICB9OworfQor
Citib29sIERpc3BsYXlMaXN0V3JpdGVySGFuZGxlOjpyZXNldFdyaXRhYmxlT2Zmc2V0SWZQb3Nz
aWJsZSgpCit7CisgICAgaWYgKG1fd3JpdGFibGVPZmZzZXQgPD0gU2hhcmVkRGlzcGxheUxpc3RI
YW5kbGU6OnJlc2VydmVkQ2FwYWNpdHlBdFN0YXJ0KSB7CisgICAgICAgIFJFTEVBU0VfQVNTRVJU
KG1fd3JpdGFibGVPZmZzZXQgPT0gU2hhcmVkRGlzcGxheUxpc3RIYW5kbGU6OnJlc2VydmVkQ2Fw
YWNpdHlBdFN0YXJ0KTsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorCisgICAgaWYgKHVu
cmVhZEJ5dGVzKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIG1fd3JpdGFibGVPZmZz
ZXQgPSBTaGFyZWREaXNwbGF5TGlzdEhhbmRsZTo6cmVzZXJ2ZWRDYXBhY2l0eUF0U3RhcnQ7Cisg
ICAgcmV0dXJuIHRydWU7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9EaXNwbGF5TGlzdFdyaXRlckhh
bmRsZS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9EaXNwbGF5TGlz
dFdyaXRlckhhbmRsZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjc1ZjY1MDg0ZDAwZjg5MTE3ZDBhMWUwNjUwMjRh
ZWQ5MzI1MTMzZmYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
R1BVL2dyYXBoaWNzL0Rpc3BsYXlMaXN0V3JpdGVySGFuZGxlLmgKQEAgLTAsMCArMSw1OSBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiU2hhcmVkRGlzcGxheUxpc3RI
YW5kbGUuaCIKKyNpbmNsdWRlIDx3dGYvRmFzdE1hbGxvYy5oPgorCituYW1lc3BhY2UgV2ViS2l0
IHsKKworY2xhc3MgRGlzcGxheUxpc3RXcml0ZXJIYW5kbGUgOiBwdWJsaWMgU2hhcmVkRGlzcGxh
eUxpc3RIYW5kbGUgeworICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKERpc3BsYXlMaXN0V3JpdGVy
SGFuZGxlKTsgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CitwdWJsaWM6CisgICAgc3RhdGljIFJl
ZjxEaXNwbGF5TGlzdFdyaXRlckhhbmRsZT4gY3JlYXRlKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJ
dGVtQnVmZmVySWRlbnRpZmllciBpZGVudGlmaWVyLCBSZWY8U2hhcmVkTWVtb3J5PiYmIHNoYXJl
ZE1lbW9yeSkKKyAgICB7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IERpc3BsYXlMaXN0
V3JpdGVySGFuZGxlKGlkZW50aWZpZXIsIFdURk1vdmUoc2hhcmVkTWVtb3J5KSkpOworICAgIH0K
KworICAgIHNpemVfdCB3cml0YWJsZU9mZnNldCgpIGNvbnN0IHsgcmV0dXJuIG1fd3JpdGFibGVP
ZmZzZXQ7IH0KKyAgICBzaXplX3QgYXZhaWxhYmxlQ2FwYWNpdHkoKSBjb25zdDsKKworICAgIGJv
b2wgcmVzZXRXcml0YWJsZU9mZnNldElmUG9zc2libGUoKTsKKworICAgIHNpemVfdCBhZHZhbmNl
KHNpemVfdCBhbW91bnQpIG92ZXJyaWRlOworICAgIFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVt
QnVmZmVySGFuZGxlIGNyZWF0ZUhhbmRsZSgpIGNvbnN0OworCitwcml2YXRlOgorICAgIERpc3Bs
YXlMaXN0V3JpdGVySGFuZGxlKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtQnVmZmVySWRlbnRp
ZmllciBpZGVudGlmaWVyLCBSZWY8U2hhcmVkTWVtb3J5PiYmIHNoYXJlZE1lbW9yeSkKKyAgICAg
ICAgOiBTaGFyZWREaXNwbGF5TGlzdEhhbmRsZShpZGVudGlmaWVyLCBXVEZNb3ZlKHNoYXJlZE1l
bW9yeSkpCisgICAgICAgICwgbV93cml0YWJsZU9mZnNldChTaGFyZWREaXNwbGF5TGlzdEhhbmRs
ZTo6cmVzZXJ2ZWRDYXBhY2l0eUF0U3RhcnQpCisgICAgeworICAgIH0KKworICAgIHNpemVfdCBt
X3dyaXRhYmxlT2Zmc2V0IHsgMCB9OworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUltYWdl
QnVmZmVyUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVt
b3RlSW1hZ2VCdWZmZXJQcm94eS5oCmluZGV4IDU5ODU3ZmYwN2E1YWMyZjRiMzJjNTY2MzI1MTRi
NDVkZTEwMTk3YjguLjAxZTUzZTE1YzRiMWQxZjUwYWZkNzBiZGNjOWIxNjg0NDk2ZTVkNjMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlSW1h
Z2VCdWZmZXJQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhp
Y3MvUmVtb3RlSW1hZ2VCdWZmZXJQcm94eS5oCkBAIC0zNCw2ICszNCw3IEBACiAjaW5jbHVkZSA8
V2ViQ29yZS9EaXNwbGF5TGlzdEltYWdlQnVmZmVyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9EaXNw
bGF5TGlzdEl0ZW1zLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9EaXNwbGF5TGlzdFJlY29yZGVyLmg+
CisjaW5jbHVkZSA8d3RmL1N5c3RlbVRyYWNpbmcuaD4KIAogbmFtZXNwYWNlIFdlYktpdCB7CiAK
QEAgLTEzOSw2ICsxNDAsNyBAQCBwcm90ZWN0ZWQ6CiAKICAgICB2b2lkIGZsdXNoRHJhd2luZ0Nv
bnRleHQoKSBvdmVycmlkZQogICAgIHsKKyAgICAgICAgVHJhY2VTY29wZSB0cmFjaW5nU2NvcGUo
Rmx1c2hSZW1vdGVJbWFnZUJ1ZmZlclN0YXJ0LCBGbHVzaFJlbW90ZUltYWdlQnVmZmVyRW5kKTsK
ICAgICAgICAgZmx1c2hEcmF3aW5nQ29udGV4dEFuZENvbW1pdCgpOwogICAgICAgICB0aW1lb3V0
V2FpdEZvckZsdXNoRGlzcGxheUxpc3RXYXNDb21taXR0ZWQoKTsKICAgICB9CkBAIC0xNTIsOCAr
MTU0LDkgQEAgcHJvdGVjdGVkOgogICAgICAgICBpZiAoZGlzcGxheUxpc3QuaXNFbXB0eSgpKQog
ICAgICAgICAgICAgcmV0dXJuOwogCi0gICAgICAgIFRyYWNlU2NvcGUgdHJhY2luZ1Njb3BlKEZs
dXNoUmVtb3RlSW1hZ2VCdWZmZXJTdGFydCwgRmx1c2hSZW1vdGVJbWFnZUJ1ZmZlckVuZCwgMSk7
Ci0gICAgICAgIG1fc2VudEZsdXNoSWRlbnRpZmllciA9IG1fcmVtb3RlUmVuZGVyaW5nQmFja2Vu
ZFByb3h5LT5mbHVzaERpc3BsYXlMaXN0QW5kQ29tbWl0KGRpc3BsYXlMaXN0LCBtX3JlbmRlcmlu
Z1Jlc291cmNlSWRlbnRpZmllcik7CisgICAgICAgIG1fc2VudEZsdXNoSWRlbnRpZmllciA9IFdl
YkNvcmU6OkRpc3BsYXlMaXN0OjpGbHVzaElkZW50aWZpZXI6OmdlbmVyYXRlKCk7CisgICAgICAg
IGRpc3BsYXlMaXN0LnRlbXBsYXRlIGFwcGVuZDxXZWJDb3JlOjpEaXNwbGF5TGlzdDo6Rmx1c2hD
b250ZXh0PihtX3NlbnRGbHVzaElkZW50aWZpZXIpOworICAgICAgICBtX3JlbW90ZVJlbmRlcmlu
Z0JhY2tlbmRQcm94eS0+c3VibWl0RGlzcGxheUxpc3QoZGlzcGxheUxpc3QsIG1fcmVuZGVyaW5n
UmVzb3VyY2VJZGVudGlmaWVyKTsKICAgICAgICAgbV9pdGVtQ291bnRJbkN1cnJlbnREaXNwbGF5
TGlzdCA9IDA7CiAgICAgICAgIGRpc3BsYXlMaXN0LmNsZWFyKCk7CiAgICAgfQpAQCAtMTYzLDcg
KzE2Niw2IEBAIHByb3RlY3RlZDoKICAgICAgICAgaWYgKCFtX3JlbW90ZVJlbmRlcmluZ0JhY2tl
bmRQcm94eSB8fCBkaXNwbGF5TGlzdC5pc0VtcHR5KCkpCiAgICAgICAgICAgICByZXR1cm47CiAK
LSAgICAgICAgVHJhY2VTY29wZSB0cmFjaW5nU2NvcGUoRmx1c2hSZW1vdGVJbWFnZUJ1ZmZlclN0
YXJ0LCBGbHVzaFJlbW90ZUltYWdlQnVmZmVyRW5kKTsKICAgICAgICAgbV9yZW1vdGVSZW5kZXJp
bmdCYWNrZW5kUHJveHktPnN1Ym1pdERpc3BsYXlMaXN0KGRpc3BsYXlMaXN0LCBtX3JlbmRlcmlu
Z1Jlc291cmNlSWRlbnRpZmllcik7CiAgICAgfQogCkBAIC0xODIsNyArMTg0LDcgQEAgcHJvdGVj
dGVkOgogICAgIFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtQnVmZmVySGFuZGxlIGNyZWF0ZUl0
ZW1CdWZmZXIoc2l6ZV90IGNhcGFjaXR5KSBvdmVycmlkZQogICAgIHsKICAgICAgICAgaWYgKG1f
cmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5KQotICAgICAgICAgICAgcmV0dXJuIG1fcmVtb3Rl
UmVuZGVyaW5nQmFja2VuZFByb3h5LT5jcmVhdGVJdGVtQnVmZmVyKGNhcGFjaXR5KTsKKyAgICAg
ICAgICAgIHJldHVybiBtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS0+Y3JlYXRlSXRlbUJ1
ZmZlcihjYXBhY2l0eSwgbV9yZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpOwogCiAgICAgICAg
IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICByZXR1cm4geyB9OwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNr
ZW5kUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1v
dGVSZW5kZXJpbmdCYWNrZW5kUHJveHkuY3BwCmluZGV4IDhkODYxNWI4YTk2Yzc0NDcwYjA5NDM3
ZDhjZDdjN2ExNjViYzY1ZGEuLmIxYzAzYjNhZGE4NzQ4NDJkYzE3MzAzZGNhNDE5OTA5M2IwNTM4
ZmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVt
b3RlUmVuZGVyaW5nQmFja2VuZFByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvR1BVL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS5jcHAKQEAgLTI4LDEz
ICsyOCwxMyBAQAogCiAjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKQogCisjaW5jbHVkZSAiRGlzcGxh
eUxpc3RXcml0ZXJIYW5kbGUuaCIKICNpbmNsdWRlICJHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNz
LmgiCiAjaW5jbHVkZSAiR1BVUHJvY2Vzc0Nvbm5lY3Rpb24uaCIKICNpbmNsdWRlICJJbWFnZURh
dGFSZWZlcmVuY2UuaCIKICNpbmNsdWRlICJQbGF0Zm9ybVJlbW90ZUltYWdlQnVmZmVyUHJveHku
aCIKICNpbmNsdWRlICJSZW1vdGVSZW5kZXJpbmdCYWNrZW5kTWVzc2FnZXMuaCIKICNpbmNsdWRl
ICJSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHlNZXNzYWdlcy5oIgotI2luY2x1ZGUgIlNoYXJl
ZERpc3BsYXlMaXN0SGFuZGxlLmgiCiAjaW5jbHVkZSAiU2hhcmVkTWVtb3J5LmgiCiAjaW5jbHVk
ZSAiV2ViUHJvY2Vzcy5oIgogCkBAIC0xMTUsMTggKzExNSwyOCBAQCBSZWZQdHI8SW1hZ2VEYXRh
PiBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHk6OmdldEltYWdlRGF0YShBbHBoYVByZW11bHRp
cGxpY2F0aQogICAgIHJldHVybiBpbWFnZURhdGFSZWZlcmVuY2UuYnVmZmVyKCk7CiB9CiAKLXZv
aWQgUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5OjpzdWJtaXREaXNwbGF5TGlzdChjb25zdCBE
aXNwbGF5TGlzdDo6RGlzcGxheUxpc3QmIGRpc3BsYXlMaXN0LCBSZW5kZXJpbmdSZXNvdXJjZUlk
ZW50aWZpZXIgcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKQordm9pZCBSZW1vdGVSZW5kZXJp
bmdCYWNrZW5kUHJveHk6OnN1Ym1pdERpc3BsYXlMaXN0KGNvbnN0IERpc3BsYXlMaXN0OjpEaXNw
bGF5TGlzdCYgZGlzcGxheUxpc3QsIFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciBkZXN0aW5h
dGlvbkJ1ZmZlcklkZW50aWZpZXIpCiB7Ci0gICAgc2VuZChNZXNzYWdlczo6UmVtb3RlUmVuZGVy
aW5nQmFja2VuZDo6U3VibWl0RGlzcGxheUxpc3QoeyBkaXNwbGF5TGlzdCB9LCByZW5kZXJpbmdS
ZXNvdXJjZUlkZW50aWZpZXIpLCBtX3JlbmRlcmluZ0JhY2tlbmRJZGVudGlmaWVyKTsKLSAgICBt
X3NoYXJlZEl0ZW1CdWZmZXJzLmNsZWFyKCk7Ci19CisgICAgT3B0aW9uYWw8c3RkOjpwYWlyPERp
c3BsYXlMaXN0OjpJdGVtQnVmZmVySWRlbnRpZmllciwgc2l6ZV90Pj4gaWRlbnRpZmllckFuZE9m
ZnNldEZvcldha2VVcE1lc3NhZ2U7CisgICAgYm9vbCBpc0ZpcnN0SGFuZGxlID0gdHJ1ZTsKIAot
RGlzcGxheUxpc3Q6OkZsdXNoSWRlbnRpZmllciBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHk6
OmZsdXNoRGlzcGxheUxpc3RBbmRDb21taXQoY29uc3QgRGlzcGxheUxpc3Q6OkRpc3BsYXlMaXN0
JiBkaXNwbGF5TGlzdCwgUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyIHJlbmRlcmluZ1Jlc291
cmNlSWRlbnRpZmllcikKLXsKLSAgICBhdXRvIHNlbnRGbHVzaElkZW50aWZpZXIgPSBEaXNwbGF5
TGlzdDo6Rmx1c2hJZGVudGlmaWVyOjpnZW5lcmF0ZSgpOwotICAgIHNlbmQoTWVzc2FnZXM6OlJl
bW90ZVJlbmRlcmluZ0JhY2tlbmQ6OkZsdXNoRGlzcGxheUxpc3RBbmRDb21taXQoeyBkaXNwbGF5
TGlzdCB9LCBzZW50Rmx1c2hJZGVudGlmaWVyLCByZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIp
LCBtX3JlbmRlcmluZ0JhY2tlbmRJZGVudGlmaWVyKTsKLSAgICBtX3NoYXJlZEl0ZW1CdWZmZXJz
LmNsZWFyKCk7Ci0gICAgcmV0dXJuIHNlbnRGbHVzaElkZW50aWZpZXI7CisgICAgZGlzcGxheUxp
c3QuZm9yRWFjaEl0ZW1CdWZmZXIoWyZdIChhdXRvJiBoYW5kbGUpIHsKKyAgICAgICAgbV9pZGVu
dGlmaWVyc09mSGFuZGxlc0F2YWlsYWJsZUZvcldyaXRpbmcuYWRkKGhhbmRsZS5pZGVudGlmaWVy
KTsKKworICAgICAgICBhdXRvKiBzaGFyZWRIYW5kbGUgPSBtX3NoYXJlZERpc3BsYXlMaXN0SGFu
ZGxlcy5nZXQoaGFuZGxlLmlkZW50aWZpZXIpOworICAgICAgICBSRUxFQVNFX0FTU0VSVF9XSVRI
X01FU1NBR0Uoc2hhcmVkSGFuZGxlLCAiJXMgZmFpbGVkIHRvIGZpbmQgc2hhcmVkIGRpc3BsYXkg
bGlzdCIsIF9fUFJFVFRZX0ZVTkNUSU9OX18pOworCisgICAgICAgIGJvb2wgdW5yZWFkQ291bnRX
YXNFbXB0eSA9IHNoYXJlZEhhbmRsZS0+YWR2YW5jZShoYW5kbGUuY2FwYWNpdHkpID09IGhhbmRs
ZS5jYXBhY2l0eTsKKyAgICAgICAgaWYgKGlzRmlyc3RIYW5kbGUgJiYgdW5yZWFkQ291bnRXYXNF
bXB0eSkKKyAgICAgICAgICAgIGlkZW50aWZpZXJBbmRPZmZzZXRGb3JXYWtlVXBNZXNzYWdlID0g
e3sgaGFuZGxlLmlkZW50aWZpZXIsIGhhbmRsZS5kYXRhIC0gc2hhcmVkSGFuZGxlLT5kYXRhKCkg
fX07CisKKyAgICAgICAgaXNGaXJzdEhhbmRsZSA9IGZhbHNlOworICAgIH0pOworCisgICAgaWYg
KGlkZW50aWZpZXJBbmRPZmZzZXRGb3JXYWtlVXBNZXNzYWdlKSB7CisgICAgICAgIGF1dG8gW2lk
ZW50aWZpZXIsIG9mZnNldF0gPSAqaWRlbnRpZmllckFuZE9mZnNldEZvcldha2VVcE1lc3NhZ2U7
CisgICAgICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6Oldha2VVcEFu
ZEFwcGx5RGlzcGxheUxpc3QoaWRlbnRpZmllciwgb2Zmc2V0LCBkZXN0aW5hdGlvbkJ1ZmZlcklk
ZW50aWZpZXIpLCBtX3JlbmRlcmluZ0JhY2tlbmRJZGVudGlmaWVyKTsKKyAgICB9CiB9CiAKIHZv
aWQgUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5OjpyZWxlYXNlUmVtb3RlUmVzb3VyY2UoUmVu
ZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyIHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcikKQEAg
LTE1OSwyMSArMTY5LDU2IEBAIHZvaWQgUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5OjpmbHVz
aERpc3BsYXlMaXN0V2FzQ29tbWl0dGVkKERpc3BsYXlMaXN0OjpGbHVzCiAgICAgICAgIGRvd25j
YXN0PFVuYWNjZWxlcmF0ZWRSZW1vdGVJbWFnZUJ1ZmZlclByb3h5PigqaW1hZ2VCdWZmZXIpLmNv
bW1pdEZsdXNoRGlzcGxheUxpc3QoZmx1c2hJZGVudGlmaWVyKTsKIH0KIAotRGlzcGxheUxpc3Q6
Okl0ZW1CdWZmZXJIYW5kbGUgUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5OjpjcmVhdGVJdGVt
QnVmZmVyKHNpemVfdCBjYXBhY2l0eSkKK3ZvaWQgUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5
Ojp1cGRhdGVSZXVzYWJsZUhhbmRsZXMoKQogeworICAgIGZvciAoYXV0byBpZGVudGlmaWVyIDog
bV9pZGVudGlmaWVyc09mSGFuZGxlc0F2YWlsYWJsZUZvcldyaXRpbmcpIHsKKyAgICAgICAgYXV0
byogaGFuZGxlID0gbV9zaGFyZWREaXNwbGF5TGlzdEhhbmRsZXMuZ2V0KGlkZW50aWZpZXIpOwor
ICAgICAgICBpZiAoIWhhbmRsZS0+cmVzZXRXcml0YWJsZU9mZnNldElmUG9zc2libGUoKSkKKyAg
ICAgICAgICAgIGNvbnRpbnVlOworCisgICAgICAgIGlmIChtX2lkZW50aWZpZXJzT2ZSZXVzYWJs
ZUhhbmRsZXMuY29udGFpbnMoaWRlbnRpZmllcikpCisgICAgICAgICAgICBjb250aW51ZTsKKwor
ICAgICAgICBtX2lkZW50aWZpZXJzT2ZSZXVzYWJsZUhhbmRsZXMuYXBwZW5kKGlkZW50aWZpZXIp
OworICAgIH0KK30KKworRGlzcGxheUxpc3Q6Okl0ZW1CdWZmZXJIYW5kbGUgUmVtb3RlUmVuZGVy
aW5nQmFja2VuZFByb3h5OjpjcmVhdGVJdGVtQnVmZmVyKHNpemVfdCBjYXBhY2l0eSwgUmVuZGVy
aW5nUmVzb3VyY2VJZGVudGlmaWVyIGRlc3RpbmF0aW9uQnVmZmVySWRlbnRpZmllcikKK3sKKyAg
ICB1cGRhdGVSZXVzYWJsZUhhbmRsZXMoKTsKKworICAgIHdoaWxlICghbV9pZGVudGlmaWVyc09m
UmV1c2FibGVIYW5kbGVzLmlzRW1wdHkoKSkgeworICAgICAgICBhdXRvIGlkZW50aWZpZXIgPSBt
X2lkZW50aWZpZXJzT2ZSZXVzYWJsZUhhbmRsZXMuZmlyc3QoKTsKKyAgICAgICAgYXV0byogcmV1
c2FibGVIYW5kbGUgPSBtX3NoYXJlZERpc3BsYXlMaXN0SGFuZGxlcy5nZXQoaWRlbnRpZmllcik7
CisgICAgICAgIFJFTEVBU0VfQVNTRVJUX1dJVEhfTUVTU0FHRShyZXVzYWJsZUhhbmRsZSwgIiVz
IGZhaWxlZCB0byBmaW5kIHNoYXJlZCBkaXNwbGF5IGxpc3QiLCBfX1BSRVRUWV9GVU5DVElPTl9f
KTsKKworICAgICAgICBpZiAobV9pZGVudGlmaWVyc09mSGFuZGxlc0F2YWlsYWJsZUZvcldyaXRp
bmcuY29udGFpbnMoaWRlbnRpZmllcikgJiYgcmV1c2FibGVIYW5kbGUtPmF2YWlsYWJsZUNhcGFj
aXR5KCkgPj0gY2FwYWNpdHkpIHsKKyAgICAgICAgICAgIG1faWRlbnRpZmllcnNPZkhhbmRsZXNB
dmFpbGFibGVGb3JXcml0aW5nLnJlbW92ZShpZGVudGlmaWVyKTsKKyAgICAgICAgICAgIHJldHVy
biByZXVzYWJsZUhhbmRsZS0+Y3JlYXRlSGFuZGxlKCk7CisgICAgICAgIH0KKworICAgICAgICBt
X2lkZW50aWZpZXJzT2ZSZXVzYWJsZUhhbmRsZXMucmVtb3ZlRmlyc3QoKTsKKyAgICB9CisKICAg
ICBzdGF0aWMgY29uc3RleHByIHNpemVfdCBkZWZhdWx0U2hhcmVkSXRlbUJ1ZmZlclNpemUgPSAx
IDw8IDE2OwogCi0gICAgYXV0byBzaGFyZWRNZW1vcnkgPSBTaGFyZWRNZW1vcnk6OmFsbG9jYXRl
KHN0ZDo6bWF4KGRlZmF1bHRTaGFyZWRJdGVtQnVmZmVyU2l6ZSwgY2FwYWNpdHkpKTsKKyAgICBh
dXRvIHNoYXJlZE1lbW9yeSA9IFNoYXJlZE1lbW9yeTo6YWxsb2NhdGUoc3RkOjptYXgoZGVmYXVs
dFNoYXJlZEl0ZW1CdWZmZXJTaXplLCBjYXBhY2l0eSArIFNoYXJlZERpc3BsYXlMaXN0SGFuZGxl
OjpyZXNlcnZlZENhcGFjaXR5QXRTdGFydCkpOwogICAgIGlmICghc2hhcmVkTWVtb3J5KQogICAg
ICAgICByZXR1cm4geyB9OwogCi0gICAgYXV0byBpZGVudGlmaWVyID0gRGlzcGxheUxpc3Q6Okl0
ZW1CdWZmZXJJZGVudGlmaWVyOjpnZW5lcmF0ZSgpOwogICAgIFNoYXJlZE1lbW9yeTo6SGFuZGxl
IHNoYXJlZE1lbW9yeUhhbmRsZTsKLSAgICBzaGFyZWRNZW1vcnktPmNyZWF0ZUhhbmRsZShzaGFy
ZWRNZW1vcnlIYW5kbGUsIFNoYXJlZE1lbW9yeTo6UHJvdGVjdGlvbjo6UmVhZE9ubHkpOwotICAg
IHNlbmQoTWVzc2FnZXM6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OkRpZENyZWF0ZVNoYXJlZEl0
ZW1EYXRhKGlkZW50aWZpZXIsIHsgV1RGTW92ZShzaGFyZWRNZW1vcnlIYW5kbGUpLCBzaGFyZWRN
ZW1vcnktPnNpemUoKSB9KSwgbV9yZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllcik7Ci0gICAgbV9z
aGFyZWRJdGVtQnVmZmVycy5zZXQoaWRlbnRpZmllciwgc2hhcmVkTWVtb3J5LmNvcHlSZWYoKSk7
CisgICAgc2hhcmVkTWVtb3J5LT5jcmVhdGVIYW5kbGUoc2hhcmVkTWVtb3J5SGFuZGxlLCBTaGFy
ZWRNZW1vcnk6OlByb3RlY3Rpb246OlJlYWRXcml0ZSk7CisKKyAgICBhdXRvIGlkZW50aWZpZXIg
PSBEaXNwbGF5TGlzdDo6SXRlbUJ1ZmZlcklkZW50aWZpZXI6OmdlbmVyYXRlKCk7CisgICAgc2Vu
ZChNZXNzYWdlczo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6RGlkQ3JlYXRlU2hhcmVkRGlzcGxh
eUxpc3RIYW5kbGUoaWRlbnRpZmllciwgeyBXVEZNb3ZlKHNoYXJlZE1lbW9yeUhhbmRsZSksIHNo
YXJlZE1lbW9yeS0+c2l6ZSgpIH0sIGRlc3RpbmF0aW9uQnVmZmVySWRlbnRpZmllciksIG1fcmVu
ZGVyaW5nQmFja2VuZElkZW50aWZpZXIpOworCisgICAgYXV0byBuZXdIYW5kbGUgPSBEaXNwbGF5
TGlzdFdyaXRlckhhbmRsZTo6Y3JlYXRlKGlkZW50aWZpZXIsIHNoYXJlZE1lbW9yeS5yZWxlYXNl
Tm9uTnVsbCgpKTsKKyAgICBhdXRvIGRpc3BsYXlMaXN0SGFuZGxlID0gbmV3SGFuZGxlLT5jcmVh
dGVIYW5kbGUoKTsKKworICAgIG1faWRlbnRpZmllcnNPZlJldXNhYmxlSGFuZGxlcy5hcHBlbmQo
aWRlbnRpZmllcik7CisgICAgbV9zaGFyZWREaXNwbGF5TGlzdEhhbmRsZXMuc2V0KGlkZW50aWZp
ZXIsIFdURk1vdmUobmV3SGFuZGxlKSk7CiAKLSAgICByZXR1cm4geyBpZGVudGlmaWVyLCByZWlu
dGVycHJldF9jYXN0PHVpbnQ4X3QqPihzaGFyZWRNZW1vcnktPmRhdGEoKSksIHNoYXJlZE1lbW9y
eS0+c2l6ZSgpIH07CisgICAgcmV0dXJuIGRpc3BsYXlMaXN0SGFuZGxlOwogfQogCiB9IC8vIG5h
bWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUv
Z3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS5oCmluZGV4
IGE1NDJjODMzNWUwZTUzM2UwNTEzZTU3NjQyNjI0NWViYjc2NDFjZjkuLmFiYTk2MmU0MDg5Mzhj
ZjBmYjJlMzRkNWJhMDgwM2EyZTBjYTQ3MjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5LmgKKysrIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNr
ZW5kUHJveHkuaApAQCAtMzQsNiArMzQsNyBAQAogI2luY2x1ZGUgIlJlbmRlcmluZ0JhY2tlbmRJ
ZGVudGlmaWVyLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9EaXNwbGF5TGlzdC5oPgogI2luY2x1ZGUg
PFdlYkNvcmUvUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyLmg+CisjaW5jbHVkZSA8d3RmL0Rl
cXVlLmg+CiAjaW5jbHVkZSA8d3RmL1dlYWtQdHIuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpA
QCAtNTAsNiArNTEsOCBAQCBlbnVtIGNsYXNzIFJlbmRlcmluZ01vZGUgOiBib29sOwogCiBuYW1l
c3BhY2UgV2ViS2l0IHsKIAorY2xhc3MgRGlzcGxheUxpc3RXcml0ZXJIYW5kbGU7CisKIGNsYXNz
IFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eQogICAgIDogcHVibGljIElQQzo6TWVzc2FnZVNl
bmRlcgogICAgICwgcHJpdmF0ZSBJUEM6Ok1lc3NhZ2VSZWNlaXZlcgpAQCAtNjAsNyArNjMsNyBA
QCBwdWJsaWM6CiAgICAgflJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eSgpOwogCiAgICAgUmVt
b3RlUmVzb3VyY2VDYWNoZVByb3h5JiByZW1vdGVSZXNvdXJjZUNhY2hlUHJveHkoKSB7IHJldHVy
biBtX3JlbW90ZVJlc291cmNlQ2FjaGVQcm94eTsgfQotICAgIFdlYkNvcmU6OkRpc3BsYXlMaXN0
OjpJdGVtQnVmZmVySGFuZGxlIGNyZWF0ZUl0ZW1CdWZmZXIoc2l6ZV90KTsKKyAgICBXZWJDb3Jl
OjpEaXNwbGF5TGlzdDo6SXRlbUJ1ZmZlckhhbmRsZSBjcmVhdGVJdGVtQnVmZmVyKHNpemVfdCBj
YXBhY2l0eSwgV2ViQ29yZTo6UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyIGRlc3RpbmF0aW9u
QnVmZmVySWRlbnRpZmllcik7CiAKICAgICAvLyBJUEM6Ok1lc3NhZ2VTZW5kZXIuCiAgICAgSVBD
OjpDb25uZWN0aW9uKiBtZXNzYWdlU2VuZGVyQ29ubmVjdGlvbigpIGNvbnN0IG92ZXJyaWRlOwpA
QCAtNzIsNyArNzUsNyBAQCBwdWJsaWM6CiAgICAgLy8gTWVzc2FnZXMgdG8gYmUgc2VudC4KICAg
ICBSZWZQdHI8V2ViQ29yZTo6SW1hZ2VCdWZmZXI+IGNyZWF0ZUltYWdlQnVmZmVyKGNvbnN0IFdl
YkNvcmU6OkZsb2F0U2l6ZSYsIFdlYkNvcmU6OlJlbmRlcmluZ01vZGUsIGZsb2F0IHJlc29sdXRp
b25TY2FsZSwgV2ViQ29yZTo6Q29sb3JTcGFjZSk7CiAgICAgUmVmUHRyPFdlYkNvcmU6OkltYWdl
RGF0YT4gZ2V0SW1hZ2VEYXRhKFdlYkNvcmU6OkFscGhhUHJlbXVsdGlwbGljYXRpb24gb3V0cHV0
Rm9ybWF0LCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiBzcmNSZWN0LCBXZWJDb3JlOjpSZW5kZXJp
bmdSZXNvdXJjZUlkZW50aWZpZXIpOwotICAgIHZvaWQgc3VibWl0RGlzcGxheUxpc3QoY29uc3Qg
V2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRpc3BsYXlMaXN0JiwgV2ViQ29yZTo6UmVuZGVyaW5nUmVz
b3VyY2VJZGVudGlmaWVyKTsKKyAgICB2b2lkIHN1Ym1pdERpc3BsYXlMaXN0KGNvbnN0IFdlYkNv
cmU6OkRpc3BsYXlMaXN0OjpEaXNwbGF5TGlzdCYsIFdlYkNvcmU6OlJlbmRlcmluZ1Jlc291cmNl
SWRlbnRpZmllciBkZXN0aW5hdGlvbkJ1ZmZlcklkZW50aWZpZXIpOwogICAgIFdlYkNvcmU6OkRp
c3BsYXlMaXN0OjpGbHVzaElkZW50aWZpZXIgZmx1c2hEaXNwbGF5TGlzdEFuZENvbW1pdChjb25z
dCBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RGlzcGxheUxpc3QmLCBXZWJDb3JlOjpSZW5kZXJpbmdS
ZXNvdXJjZUlkZW50aWZpZXIpOwogICAgIHZvaWQgcmVsZWFzZVJlbW90ZVJlc291cmNlKFdlYkNv
cmU6OlJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcik7CiAKQEAgLTgyLDEyICs4NSwxNiBAQCBw
dWJsaWM6CiBwcml2YXRlOgogICAgIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eSgpOwogCisg
ICAgdm9pZCB1cGRhdGVSZXVzYWJsZUhhbmRsZXMoKTsKKwogICAgIC8vIE1lc3NhZ2VzIHRvIGJl
IHJlY2VpdmVkLgogICAgIHZvaWQgaW1hZ2VCdWZmZXJCYWNrZW5kV2FzQ3JlYXRlZChjb25zdCBX
ZWJDb3JlOjpGbG9hdFNpemUmIGxvZ2ljYWxTaXplLCBjb25zdCBXZWJDb3JlOjpJbnRTaXplJiBi
YWNrZW5kU2l6ZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBXZWJDb3JlOjpDb2xvclNwYWNlLCBJ
bWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGUsIFdlYkNvcmU6OlJlbmRlcmluZ1Jlc291cmNlSWRlbnRp
Zmllcik7CiAgICAgdm9pZCBmbHVzaERpc3BsYXlMaXN0V2FzQ29tbWl0dGVkKFdlYkNvcmU6OkRp
c3BsYXlMaXN0OjpGbHVzaElkZW50aWZpZXIsIFdlYkNvcmU6OlJlbmRlcmluZ1Jlc291cmNlSWRl
bnRpZmllcik7CiAKICAgICBSZW1vdGVSZXNvdXJjZUNhY2hlUHJveHkgbV9yZW1vdGVSZXNvdXJj
ZUNhY2hlUHJveHk7Ci0gICAgSGFzaE1hcDxXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbUJ1ZmZl
cklkZW50aWZpZXIsIFJlZlB0cjxTaGFyZWRNZW1vcnk+PiBtX3NoYXJlZEl0ZW1CdWZmZXJzOwor
ICAgIEhhc2hNYXA8V2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1CdWZmZXJJZGVudGlmaWVyLCBS
ZWZQdHI8RGlzcGxheUxpc3RXcml0ZXJIYW5kbGU+PiBtX3NoYXJlZERpc3BsYXlMaXN0SGFuZGxl
czsKKyAgICBEZXF1ZTxXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbUJ1ZmZlcklkZW50aWZpZXI+
IG1faWRlbnRpZmllcnNPZlJldXNhYmxlSGFuZGxlczsKKyAgICBIYXNoU2V0PFdlYkNvcmU6OkRp
c3BsYXlMaXN0OjpJdGVtQnVmZmVySWRlbnRpZmllcj4gbV9pZGVudGlmaWVyc09mSGFuZGxlc0F2
YWlsYWJsZUZvcldyaXRpbmc7CiAgICAgUmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXIgbV9yZW5k
ZXJpbmdCYWNrZW5kSWRlbnRpZmllciB7IFJlbmRlcmluZ0JhY2tlbmRJZGVudGlmaWVyOjpnZW5l
cmF0ZSgpIH07CiB9OwogCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>413775</attachid>
            <date>2020-11-10 21:33:59 -0800</date>
            <delta_ts>2020-11-11 07:07:16 -0800</delta_ts>
            <desc>For EWS</desc>
            <filename>bug-218426-20201110213358.patch</filename>
            <type>text/plain</type>
            <size>63668</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY5NjQwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGMxYWQ2MTAyZDg0MTkyZDM2
MTMyNzIxODEzYTFjMGU4ZjBjMTVhM2IuLjZhZjMyNmVjZmM1MDlhMWE1N2FkZTIxOGI5NDE1Nzg4
NDk1YTQ2OTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUzIEBACisyMDIwLTExLTEwICBXZW5zb24g
SHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAgICAgIFtDb25jdXJyZW50IGRp
c3BsYXkgbGlzdHNdIEFkZCBhbiBpbml0aWFsIGltcGxlbWVudGF0aW9uIG9mIGNvbmN1cnJlbnQg
ZGlzcGxheSBsaXN0IHJlbmRlcmluZworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MjE4NDI2CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS83MTE2NzIyMD4K
KworICAgICAgICBSZXZpZXdlZCBieSBSeW9zdWtlIE5pd2EuCisKKyAgICAgICAgVGhpcyBwYXRj
aCBhZGRzIGEgZmlyc3QtY3V0IGltcGxlbWVudGF0aW9uIG9mIGNvbmN1cnJlbnQgZGlzcGxheSBs
aXN0IHJlbmRlcmluZywgd2hpY2ggYWxsb3dzIHRoZSBHUFUgYW5kIHdlYgorICAgICAgICBwcm9j
ZXNzZXMgdG8gcmVhZCBhbmQgd3JpdGUgZGlzcGxheSBsaXN0IGRhdGEgYXQgdGhlIHNhbWUgdGlt
ZS4gVG8gYWNoaWV2ZSB0aGlzLCB3ZSByZW1vdmUgdGhlIHBsYWNlaG9sZGVyCisgICAgICAgIHNo
YXJlZCBtZW1vcnkgZGlzcGxheSBsaXN0IGVuY29kaW5nIG1lY2hhbmlzbSBwcmV2aW91c2x5IGFk
ZGVkIGluIDx3ZWJraXQub3JnL2IvMjE4NDA2PiwgYW5kIHJlcGxhY2UgaXQgd2l0aCBhCisgICAg
ICAgIG5ldyBtb2RlbCBpbiB3aGljaCBhIHdyaXRlciAoaS5lLiB0aGUgd2ViIHByb2Nlc3MpIGFu
ZCBhIHJlYWRlciAoaS5lLiB0aGUgR1BVIHByb2Nlc3MpIHNoYXJlIGEgc2V0IG9mIHJldXNhYmxl
CisgICAgICAgIHNoYXJlZCBtZW1vcnkgYnVmZmVycyB3aGljaCBjb250YWluIGRpc3BsYXkgbGlz
dCBpdGVtIGRhdGEuIEFzIHRoZSB3cml0ZXIgYXBwZW5kcyBkYXRhIHRvIHNoYXJlZCBtZW1vcnks
IGl0CisgICAgICAgIGluY3JlbWVudHMgYSBjb3VudGVyIGluIGVhY2ggc2hhcmVkIG1lbW9yeSBi
dWZmZXIgdGhhdCByZXByZXNlbnRzIHRoZSBudW1iZXIgb2YgYnl0ZXMgdGhhdCB0aGUgcmVhZGVy
IGhhcyB5ZXQgdG8KKyAgICAgICAgcmVhZDsgYXMgdGhlIHJlYWRlciByZWFkcyBkaXNwbGF5IGxp
c3QgaXRlbXMgZnJvbSBzaGFyZWQgbWVtb3J5LCBpdCBkZWNyZW1lbnRzIHRoaXMgY291bnRlci4K
KworICAgICAgICBUaGlzIHBhdGNoIGFsc28gaW1wbGVtZW50cyBhIHNpbXBsZSBzdHJhdGVneSBm
b3IgcmV1c2luZyB0aGVzZSBzaGFyZWQgaXRlbSBidWZmZXJzLiBUaGUgd2ViIHByb2Nlc3MgbWFp
bnRhaW5zIGEKKyAgICAgICAgcXVldWUgb2YgcmV1c2FibGUgYnVmZmVyczsgd2hlbiBkaXNwbGF5
IGxpc3QgaXRlbXMgYXJlIGFwcGVuZGVkIGFuZCB0aGUgY3VycmVudCB3cml0YWJsZSBidWZmZXIg
aXMgb3V0IG9mCisgICAgICAgIGNhcGFjaXR5LCB0aGUgZGlzcGxheSBsaXN0IGl0ZW0gYnVmZmVy
IGNhbGxzIG91dCB0byBXZWJLaXQyIHZpYSBhIGNsaWVudCBtZXRob2QgdG8gcmVxdWVzdCBtb3Jl
IHNoYXJlZCBtZW1vcnkuCisgICAgICAgIEhlcmUsIHRoZSB3ZWIgcHJvY2VzcyB0cmF2ZXJzZXMg
dGhlIHF1ZXVlIG9mIHJldXNhYmxlIGl0ZW0gYnVmZmVycyBpbiBzZWFyY2ggb2YgYSBidWZmZXIg
d2l0aCBzdWZmaWNpZW50CisgICAgICAgIGNhcGFjaXR5OyBpZiBmb3VuZCwgd2UgaGFuZCB0aGlz
IGJhY2sgdG8gV2ViQ29yZSBhcyBhbiBvcGFxdWUgYEl0ZW1CdWZmZXJIYW5kbGVgOyBvdGhlcndp
c2UsIHdlIGFsbG9jYXRlIGEgbmV3CisgICAgICAgIHJldXNhYmxlIHNoYXJlZCBtZW1vcnkgYnVm
ZmVyLiBJdGVtIGJ1ZmZlcnMgdGhhdCBoYXZlIGJlZW4gdXNlZCBiZWNvbWUgcmV1c2FibGUgb25s
eSBhZnRlciB0aGV5IGFyZSAoMSkgbm8KKyAgICAgICAgbG9uZ2VyIGJlaW5nIHJlYWQgZnJvbSAt
LSBpLmUuLCB0aGUgY291bnRlciB2YWx1ZSBpcyAwLCBhbmQgKDIpIHRoZXkgYXJlIG5vdCBhY3Rp
dmVseSBiZWluZyB3cml0dGVuIHRvLgorICAgICAgICBCdWZmZXJzIHRoYXQgaGF2ZSBiZWVuIHVz
ZWQgYXJlIGxhemlseSByZWludHJvZHVjZWQgaW50byB0aGUgcmV1c2UgcXVldWUgd2hlbiBhIGRp
c3BsYXkgbGlzdCByZXF1ZXN0cyBhIGhhbmRsZQorICAgICAgICB0byB3cml0YWJsZSBpdGVtIGJ1
ZmZlciBkYXRhLgorCisgICAgICAgIFNlZSBiZWxvdyBmb3IgbW9yZSBkZXRhaWxzLgorCisgICAg
ICAgICogR1BVUHJvY2Vzcy9ncmFwaGljcy9EaXNwbGF5TGlzdFJlYWRlckhhbmRsZS5jcHA6IENv
cGllZCBmcm9tIFNvdXJjZS9XZWJLaXQvU2hhcmVkL1NoYXJlZERpc3BsYXlMaXN0SGFuZGxlLmNw
cC4KKyAgICAgICAgKFdlYktpdDo6RGlzcGxheUxpc3RSZWFkZXJIYW5kbGU6OmFkdmFuY2UpOgor
ICAgICAgICAoV2ViS2l0OjpEaXNwbGF5TGlzdFJlYWRlckhhbmRsZTo6ZGlzcGxheUxpc3RGb3JS
ZWFkaW5nIGNvbnN0KToKKyAgICAgICAgKiBHUFVQcm9jZXNzL2dyYXBoaWNzL0Rpc3BsYXlMaXN0
UmVhZGVySGFuZGxlLmg6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJLaXQvU2hhcmVkL1NoYXJlZERp
c3BsYXlMaXN0SGFuZGxlLmNwcC4KKyAgICAgICAgKFdlYktpdDo6RGlzcGxheUxpc3RSZWFkZXJI
YW5kbGU6OmNyZWF0ZSk6CisgICAgICAgIChXZWJLaXQ6OkRpc3BsYXlMaXN0UmVhZGVySGFuZGxl
OjpEaXNwbGF5TGlzdFJlYWRlckhhbmRsZSk6CisKKyAgICAgICAgQWRkIGEgbmV3IGhlbHBlciBj
bGFzcyB0byByZXByZXNlbnQgYSBzaGFyZWQgZGlzcGxheSBsaXN0IGl0ZW0gYnVmZmVyIHRoYXQg
dGhlIEdQVSBwcm9jZXNzIGNhbiB1c2UgdG8gY29uc3VtZQorICAgICAgICBkaXNwbGF5IGxpc3Qg
aXRlbXMuIEFkdmFuY2luZyB0aGUgY3Vyc29yIGluIGBEaXNwbGF5TGlzdFJlYWRlckhhbmRsZWAg
ZGVjcmVtZW50cyB0aGUgInJlbWFpbmluZyBieXRlcyIgY291bnRlcjsKKyAgICAgICAgdGhlIGNs
YXNzIGFsc28gaGFzIGEgaGVscGVyIG1ldGhvZCBmb3IgY3JlYXRpbmcgYSBuZXcgYERpc3BsYXlM
aXN0YCB3aXRoIGEgZ2l2ZW4gb2Zmc2V0IGludG8gdGhlIHNoYXJlZCBidWZmZXIsCisgICAgICAg
IGFzIHdlbGwgdGhlIG51bWJlciBvZiBieXRlcyB0byByZWFkLgorCisgICAgICAgICogR1BVUHJv
Y2Vzcy9ncmFwaGljcy9SZW1vdGVJbWFnZUJ1ZmZlci5oOgorCisgICAgICAgIEhhbmRsZSB0aGUg
YE1ldGFDb21tYW5kU3dpdGNoVG9gIGFuZCBgRmx1c2hDb250ZXh0YCBpdGVtcyBieSAocmVzcGVj
dGl2ZWx5KSBpbmZvcm1pbmcgdGhlIHJlbmRlcmluZyBiYWNrZW5kCisgICAgICAgIGFib3V0IHRo
ZSBuZXh0IGJ1ZmZlciB0byByZWFkIGZyb20sIGFuZCBzZW5kaW5nIGEgImZsdXNoIGNvbW1pdHRl
ZCIgSVBDIG1lc3NhZ2UgYmFjayB0byB0aGUgd2ViIHByb2Nlc3MuCisKKyAgICAgICAgKFdlYktp
dDo6UmVtb3RlSW1hZ2VCdWZmZXI6OlJlbW90ZUltYWdlQnVmZmVyKToKKyAgICAgICAgKiBHUFVQ
cm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQuY3BwOgorICAgICAgICAoV2Vi
S2l0OjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjphcHBseURpc3BsYXlMaXN0c0Zyb21IYW5kbGUp
OgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjp3YWtlVXBBbmRBcHBs
eURpc3BsYXlMaXN0KToKKworICAgICAgICBUaGlzIGlzIHRoZSBtYWluIGxvb3AgaW4gdGhlIEdQ
VSBwcm9jZXNzIHRoYXQgaXMgcmVzcG9uc2libGUgZm9yIGFwcGx5aW5nIGluY29taW5nIGRpc3Bs
YXkgbGlzdCBpdGVtIGRhdGEuIFRoaXMKKyAgICAgICAgSVBDIGVuZHBvaW50IHJlY2VpdmVzIGlu
Zm9ybWF0aW9uIGFib3V0IHdoZXJlIHRvIHN0YXJ0IChpLmUuIGFuIGl0ZW0gYnVmZmVyIElEIGFu
ZCBhbiBvZmZzZXQgaW50byBzaGFyZWQgbWVtb3J5CisgICAgICAgIGluIHRoYXQgYnVmZmVyKSBh
bmQgYmVnaW5zIHJlYWRpbmcgcmFuZ2VzIG9mIGRpc3BsYXkgbGlzdCBpdGVtIGRhdGEgaW5zaWRl
IHRoYXQgYnVmZmVyLiBBZnRlciBpdCBpcyBkb25lCisgICAgICAgIHByb2Nlc3NpbmcgYWxsIG9m
IGl0cyB1bnJlYWQgYnl0ZXMsIGl0IHRoZW4gY2hlY2tzIHRoZSB1bnJlYWQgYnl0ZSBjb3VudCBv
bmNlIGFnYWluLCBhbmQgY29udGludWVzIHRoZSBsb29wIGlmCisgICAgICAgIHRoZSB3ZWIgcHJv
Y2VzcyBoYXMgYWR2YW5jZWQgdGhpcyBjb3VudC4KKworICAgICAgICAoV2ViS2l0OjpSZW1vdGVS
ZW5kZXJpbmdCYWNrZW5kOjpzZXROZXh0SXRlbUJ1ZmZlclRvUmVhZCk6CisgICAgICAgIChXZWJL
aXQ6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OmRpZENyZWF0ZVNoYXJlZERpc3BsYXlMaXN0SGFu
ZGxlKToKKworICAgICAgICBBZGQgbG9naWMgdG8gaGFuZGxlIHRoZSBjYXNlIHdoZXJlIHdlIHJl
YWNoZWQgdGhlIGVuZCBvZiBhbiBpdGVtIGJ1ZmZlciwgYnV0IHRoZSBuZXh0IGJ1ZmZlciBpZGVu
dGlmaWVyIGlzIHN0aWxsCisgICAgICAgIHVua25vd24gdG8gdXMgKHNpbmNlIGl0IGlzIHN0aWxs
ICJpbiB0cmFuc2l0IiB2aWEgdGhlIGBEaWRDcmVhdGVTaGFyZWREaXNwbGF5TGlzdEhhbmRsZWAg
SVBDIG1lc3NhZ2UpLiBJbiB0aGlzCisgICAgICAgIGNhc2UsIHdlIHJlbWVtYmVyIHRoZSBuZXh0
IGJ1ZmZlciBpZGVudGlmaWVyIGluIGBtX25leHRJdGVtQnVmZmVyVG9SZWFkYCwgYW5kIGV4aXQg
dGhlIHByb2Nlc3NpbmcgbG9vcCBpbnNpZGUKKyAgICAgICAgYHdha2VVcEFuZEFwcGx5RGlzcGxh
eUxpc3RgLiBVcG9uIHJlY2VpdmluZyB0aGUgc2hhcmVkIG1lbW9yeSBoYW5kbGUgaW4gYGRpZENy
ZWF0ZVNoYXJlZERpc3BsYXlMaXN0SGFuZGxlYCwgd2UKKyAgICAgICAgdGhlbiBhdXRvbWF0aWNh
bGx5IHJlc3VtZSBkaXNwbGF5IGxpc3QgcHJvY2Vzc2luZywgc3RhcnRpbmcgZnJvbSB0aGUgYmVn
aW5uaW5nIG9mIHRoaXMgbmV3IGJ1ZmZlci4KKworICAgICAgICAoV2ViS2l0OjpSZW1vdGVSZW5k
ZXJpbmdCYWNrZW5kOjphcHBseURpc3BsYXlMaXN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktp
dDo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6c3VibWl0RGlzcGxheUxpc3QpOiBEZWxldGVkLgor
ICAgICAgICAoV2ViS2l0OjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpmbHVzaERpc3BsYXlMaXN0
QW5kQ29tbWl0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6UmVtb3RlUmVuZGVyaW5nQmFj
a2VuZDo6ZGlkQ3JlYXRlU2hhcmVkSXRlbURhdGEpOiBEZWxldGVkLgorCisgICAgICAgIFdlIGRv
bid0IG5lZWQgYW55IG9mIHRoZXNlIG1ldGhvZHMgYW55bW9yZSwgbm93IHRoYXQgdGhlcmUgaXMg
b25seSBvbmUgY29kZXBhdGggZm9yIHByb2Nlc3NpbmcgZGlzcGxheSBsaXN0CisgICAgICAgIGl0
ZW1zLiBTZWUgYFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6Ondha2VVcEFuZEFwcGx5RGlzcGxheUxp
c3RgIGFib3ZlLiBBbHNvLCByZW5hbWUgYGRpZENyZWF0ZVNoYXJlZEl0ZW1EYXRhYAorICAgICAg
ICB0byBgZGlkQ3JlYXRlU2hhcmVkRGlzcGxheUxpc3RIYW5kbGVgIChhbHNvIGFib3ZlKS4KKwor
ICAgICAgICAqIEdQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5oOgor
ICAgICAgICAqIEdQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5tZXNz
YWdlcy5pbjoKKyAgICAgICAgKiBTaGFyZWQvU2hhcmVkRGlzcGxheUxpc3RIYW5kbGUuaDoKKyAg
ICAgICAgKFdlYktpdDo6U2hhcmVkRGlzcGxheUxpc3RIYW5kbGU6OnNoYXJlZE1lbW9yeSk6Cisg
ICAgICAgIChXZWJLaXQ6OlNoYXJlZERpc3BsYXlMaXN0SGFuZGxlOjpzaGFyZWRNZW1vcnkgY29u
c3QpOgorICAgICAgICAoV2ViS2l0OjpTaGFyZWREaXNwbGF5TGlzdEhhbmRsZTo6aWRlbnRpZmll
ciBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OlNoYXJlZERpc3BsYXlMaXN0SGFuZGxlOjpkYXRh
IGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6U2hhcmVkRGlzcGxheUxpc3RIYW5kbGU6OnVucmVh
ZEJ5dGVzKToKKyAgICAgICAgKFdlYktpdDo6U2hhcmVkRGlzcGxheUxpc3RIYW5kbGU6OkxvY2s6
OkxvY2spOgorICAgICAgICAoV2ViS2l0OjpTaGFyZWREaXNwbGF5TGlzdEhhbmRsZTo6TG9jazo6
fkxvY2spOgorICAgICAgICAoV2ViS2l0OjpTaGFyZWREaXNwbGF5TGlzdEhhbmRsZTo6U2hhcmVk
RGlzcGxheUxpc3RIYW5kbGUpOgorICAgICAgICAoV2ViS2l0OjpTaGFyZWREaXNwbGF5TGlzdEhh
bmRsZTo6aGVhZGVyKToKKyAgICAgICAgKFdlYktpdDo6U2hhcmVkRGlzcGxheUxpc3RIYW5kbGU6
OmhlYWRlciBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OlNoYXJlZERpc3BsYXlMaXN0SGFuZGxl
OjplbmNvZGUgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpTaGFyZWREaXNwbGF5
TGlzdEhhbmRsZTo6ZGVjb2RlKTogRGVsZXRlZC4KKworICAgICAgICBSZXB1cnBvc2UgYFNoYXJl
ZERpc3BsYXlMaXN0SGFuZGxlYCB0byBzZXJ2ZSBhcyBhIGJhc2UgY2xhc3MgZm9yIGJvdGggYERp
c3BsYXlMaXN0UmVhZGVySGFuZGxlYCBhbmQKKyAgICAgICAgYERpc3BsYXlMaXN0V3JpdGVySGFu
ZGxlYC4gVGhpcyBiYXNlIGNsYXNzIGlzIGF3YXJlIG9mIHRoZSBtZW1vcnkgbGF5b3V0IG9mIHRo
ZSBkaXNwbGF5IGxpc3QgaXRlbSBidWZmZXIgaW4KKyAgICAgICAgc2hhcmVkIG1lbW9yeSAoaW4g
cGFydGljdWxhciwgdGhlIGZhY3QgdGhhdCB0aGUgZmlyc3QgOCBieXRlcyBhcmUgdGhlIGF0b21p
YyBsb2NrIGFuZCB0aGUgbmV4dCA4IGJ5dGVzIGNvbnRhaW4KKyAgICAgICAgdGhlIHVucmVhZCBi
eXRlIGNvdW50ZXIpLgorCisgICAgICAgIEludGVybmFsbHksIHRoaXMgdXNlcyBhIHByb3RlY3Rl
ZCBSQUlJIGNsYXNzLCBgU2hhcmVkRGlzcGxheUxpc3RIYW5kbGU6OkxvY2tgLCB0byBncmFiIHRo
ZSBsb2NrIGJlZm9yZSBlaXRoZXIKKyAgICAgICAgcmVhZGluZyBvciB3cml0aW5nIHRoZSB1bnJl
YWQgYnl0ZXMgY291bnQuCisKKyAgICAgICAgKiBTb3VyY2VzLnR4dDoKKyAgICAgICAgKiBXZWJL
aXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9n
cmFwaGljcy9EaXNwbGF5TGlzdFdyaXRlckhhbmRsZS5jcHA6IEFkZGVkLgorICAgICAgICAoV2Vi
S2l0OjpEaXNwbGF5TGlzdFdyaXRlckhhbmRsZTo6YWR2YW5jZSk6CisgICAgICAgIChXZWJLaXQ6
OkRpc3BsYXlMaXN0V3JpdGVySGFuZGxlOjphdmFpbGFibGVDYXBhY2l0eSBjb25zdCk6CisgICAg
ICAgIChXZWJLaXQ6OkRpc3BsYXlMaXN0V3JpdGVySGFuZGxlOjpjcmVhdGVIYW5kbGUgY29uc3Qp
OgorICAgICAgICAoV2ViS2l0OjpEaXNwbGF5TGlzdFdyaXRlckhhbmRsZTo6cmVzZXRXcml0YWJs
ZU9mZnNldElmUG9zc2libGUpOgorCisgICAgICAgIFRoaXMgaGVscGVyIG1ldGhvZCBtb3ZlcyB0
aGUgd3JpdGFibGUgb2Zmc2V0IChzZWUgYmVsb3cpIGJhY2sgdG8gdGhlIHN0YXJ0IG9mIHRoZSBi
dWZmZXIgaWYgaXQgaXMgbm90IGJlaW5nIHJlYWQKKyAgICAgICAgZnJvbSBieSB0aGUgR1BVIHBy
b2Nlc3MuCisKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9EaXNwbGF5TGlzdFdy
aXRlckhhbmRsZS5oOiBSZW5hbWVkIGZyb20gU291cmNlL1dlYktpdC9TaGFyZWQvU2hhcmVkRGlz
cGxheUxpc3RIYW5kbGUuY3BwLgorICAgICAgICAoV2ViS2l0OjpEaXNwbGF5TGlzdFdyaXRlckhh
bmRsZTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYktpdDo6RGlzcGxheUxpc3RXcml0ZXJIYW5kbGU6
OndyaXRhYmxlT2Zmc2V0IGNvbnN0KToKKworICAgICAgICBTaW1pbGFyIHRvIGBEaXNwbGF5TGlz
dFJlYWRlckhhbmRsZWAsIGV4Y2VwdCB0aGF0IHRoaXMgY29udGFpbnMgbG9naWMgc3BlY2lmaWMg
dG8gdGhlIHdlYiBwcm9jZXNzIGZvciB3cml0aW5nCisgICAgICAgIGRpc3BsYXkgbGlzdCBpdGVt
cyBpbnRvIHNoYXJlZCBtZW1vcnkuIEFkdmFuY2luZyB0aGUgY3Vyc29yIGluIGBEaXNwbGF5TGlz
dFdyaXRlckhhbmRsZWAgaW5jcmVtZW50cyB0aGUgY291bnRlci4KKyAgICAgICAgSXQgYWxzbyBp
bmNyZW1lbnRzIHRoZSBgd3JpdGFibGVPZmZzZXRgIG9mIHRoZSBoYW5kbGUsIHdoaWNoIHJlcHJl
c2VudHMgdGhlIG1pbmltdW0gb2Zmc2V0IGludG8gdGhlIHNoYXJlZAorICAgICAgICBidWZmZXIg
dGhhdCBtYXkgY29udGFpbiBuZXdseSBhcHBlbmRlZCBkaXNwbGF5IGxpc3QgaXRlbXMuCisKKyAg
ICAgICAgKFdlYktpdDo6RGlzcGxheUxpc3RXcml0ZXJIYW5kbGU6OkRpc3BsYXlMaXN0V3JpdGVy
SGFuZGxlKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVJbWFnZUJ1
ZmZlclByb3h5Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlUmVu
ZGVyaW5nQmFja2VuZFByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlUmVuZGVyaW5n
QmFja2VuZFByb3h5OjpzdWJtaXREaXNwbGF5TGlzdCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90
ZVJlbmRlcmluZ0JhY2tlbmRQcm94eTo6dXBkYXRlUmV1c2FibGVIYW5kbGVzKToKKworICAgICAg
ICBUaGlzIHByaXZhdGUgaGVscGVyIGl0ZXJhdGVzIHRoZSBzZXQgb2YgYnVmZmVycyB0aGF0IGFy
ZSBub3QgY3VycmVudGx5IGJlaW5nIHdyaXR0ZW4gdG8sIGFuZCBhZGRzIGVhY2ggb25lIHRvCisg
ICAgICAgIHRoZSByZXVzYWJsZSBidWZmZXIgcXVldWUgb25seSBpZiBpdHMgd3JpdGFibGUgb2Zm
c2V0IGlzIGF0IHRoZSBzdGFydC4KKworICAgICAgICAoV2ViS2l0OjpSZW1vdGVSZW5kZXJpbmdC
YWNrZW5kUHJveHk6OmNyZWF0ZUl0ZW1CdWZmZXIpOgorCisgICAgICAgIEltcGxlbWVudHMgbG9n
aWMgdGhhdCBoYW5kcyBzaGFyZWQgaXRlbSBidWZmZXIgZGF0YSBoYW5kbGVzIHRvIFdlYkNvcmUg
Zm9yIHdyaXRpbmcgZGlzcGxheSBsaXN0IGl0ZW1zLiBUaGlzIHdpbGwKKyAgICAgICAgdHJ5IHRv
IHJldXNlIGFuIGl0ZW0gYnVmZmVyIGluIHRoZSByZXVzZSBxdWV1ZSwgaWYgcG9zc2libGUsIGFu
ZCBmYWxsIGJhY2sgdG8gYWxsb2NhdGluZyBhIG5ldyBjaHVuayBvZiBzaGFyZWQKKyAgICAgICAg
bWVtb3J5IGlmIG5vIHJldXNhYmxlIGJ1ZmZlciBpcyBmb3VuZCAob3IgdGhlIGV4aXN0aW5nIGJ1
ZmZlcnMgaGF2ZSBpbnN1ZmZpY2llbnQgY2FwYWNpdHkpLiBUaGUgZmFjdCB0aGF0IHdlCisgICAg
ICAgIGl0ZXJhdGUgdGhyb3VnaCBlYWNoIHJldXNhYmxlIGJ1ZmZlciBpbiBvcmRlciwgY29tYmlu
ZWQgd2l0aCB0aGUgYWJvdmUgbG9naWMgaW4gYHVwZGF0ZVJldXNhYmxlSGFuZGxlc2AsIGVuc3Vy
ZXMKKyAgICAgICAgdGhhdCBvbmNlIHdlIGJlZ2luIHdyaXRpbmcgdG8gYSBpdGVtIGJ1ZmZlciwg
d2Ugd2lsbCBjb250aW51ZSB1c2luZyB0aGF0IGl0ZW0gYnVmZmVyIHVudGlsIGl0IGV4aGF1c3Rz
IGF2YWlsYWJsZQorICAgICAgICBjYXBhY2l0eS4KKworICAgICAgICBUaGlzIHByb3BlcnR5IGlz
IGltcG9ydGFudCBiZWNhdXNlIGl0IGFsbG93cyB0aGUgR1BVIHByb2Nlc3MgdG8gc2ltcGx5IHN0
YXJ0IHJlYWRpbmcgaXRlbSBkYXRhIGZyb20gYSBnaXZlbgorICAgICAgICBvZmZzZXQgYW5kIGJ1
ZmZlciBJRCAoc3BlY2lmaWVkIGluIHRoZSBgV2FrZVVwQW5kQXBwbHlEaXNwbGF5TGlzdGAgSVBD
IG1lc3NhZ2UpLCBhbmQgc2VhbWxlc3NseSBjb250aW51ZQorICAgICAgICByZWFkaW5nIGRhdGEg
ZXZlbiBhZnRlciBpdCBleGhhdXN0cyBhbGwgYXZhaWxhYmxlIGl0ZW0gZGF0YSBpbiB0aGUgY3Vy
cmVudCBidWZmZXIgYnkgY29udGludWluZyBmcm9tIHRoZSBzdGFydAorICAgICAgICBvZiB0aGUg
aXRlbSBidWZmZXIgdGhhdCBjb250YWlucyB0aGUgbmV4dCBkaXNwbGF5IGxpc3QgaXRlbXMgKHdo
aWNoIHdlIGxlYXJuIGluIHRoZSBHUFUgcHJvY2VzcyBieSBlbmNvdW50ZXJpbmcKKyAgICAgICAg
YSBgTWV0YUNvbW1hbmRTd2l0Y2hUb2AgaXRlbSBhdCB0aGUgZW5kIG9mIHRoZSBwcmV2aW91cyBi
dWZmZXIpLgorCisgICAgICAgIEluICJzdGVhZHkgc3RhdGUiICh3aGVyZWluIGJvdGggcHJvY2Vz
c2VzIGFyZSBjb25jdXJyZW50bHkgd3JpdGluZyBhbmQgcmVhZGluZyBpdGVtcyBhcyBxdWlja2x5
IGFzIHBvc3NpYmxlKSwKKyAgICAgICAgdGhpcyBtZWFucyB0aGF0IGFzIHRoZSB3ZWIgcHJvY2Vz
cyBpcyBidXN5IGZpbGxpbmcgdXAgZWFjaCBpdGVtIGJ1ZmZlciB3aXRoIGl0ZW0gZGF0YSwgdGhl
IEdQVSBwcm9jZXNzIGlzIGFsc28KKyAgICAgICAgYnVzeSBhcHBseWluZyBhbGwgdGhlIGl0ZW0g
ZGF0YSBpbiBvbmUgYnVmZmVyIGFuZCBhdXRvbWF0aWNhbGx5IG1vdmluZyBvbiB0byB0aGUgbmV4
dCBidWZmZXIgd2l0aCBubyBhZGRpdGlvbmFsCisgICAgICAgIElQQyBtZXNzYWdlcyByZXF1aXJl
ZC4KKworICAgICAgICAoV2ViS2l0OjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHk6OmZsdXNo
RGlzcGxheUxpc3RBbmRDb21taXQpOiBEZWxldGVkLgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BV
L2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS5oOgorCiAyMDIwLTExLTEwICBX
ZW5zb24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgogCiAgICAgICAgIFJFR1JFU1NJ
T04gKHIyNjk1MjUpOiBNYW55IGxheW91dCB0ZXN0cyBjcmFzaCB3aGVuIHJ1biB1bmRlciBBU2Fu
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvRGlzcGxheUxp
c3RSZWFkZXJIYW5kbGUuY3BwIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL0Rp
c3BsYXlMaXN0UmVhZGVySGFuZGxlLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZTRkNDkxZjBkMDk1Mzg5NjQz
YjQ4YTI3MGIyNmFlZjEzN2I3YmZlCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9H
UFVQcm9jZXNzL2dyYXBoaWNzL0Rpc3BsYXlMaXN0UmVhZGVySGFuZGxlLmNwcApAQCAtMCwwICsx
LDUxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgor
ICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAq
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkRpc3Bs
YXlMaXN0UmVhZGVySGFuZGxlLmgiCisKK25hbWVzcGFjZSBXZWJLaXQgewordXNpbmcgbmFtZXNw
YWNlIFdlYkNvcmU7CisKK3NpemVfdCBEaXNwbGF5TGlzdFJlYWRlckhhbmRsZTo6YWR2YW5jZShz
aXplX3QgYW1vdW50KQoreworICAgIGF1dG8gbG9ja2VyID0gU2hhcmVkRGlzcGxheUxpc3RIYW5k
bGU6OkxvY2sgeyAqdGhpcyB9OworICAgIGlmIChMSUtFTFkoYW1vdW50IDw9IGhlYWRlcigpLnVu
cmVhZEJ5dGVzKSkKKyAgICAgICAgcmV0dXJuIGhlYWRlcigpLnVucmVhZEJ5dGVzIC09IGFtb3Vu
dDsKKworICAgIC8vIEZJWE1FOiBUaGlzIHNob3VsZCByZXN1bHQgaW4gdGVybWluYXRpbmcgdGhl
IHdlYiBwcm9jZXNzLgorICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIGhlYWRlcigpLnVu
cmVhZEJ5dGVzID0gMDsKKyAgICByZXR1cm4gMDsKK30KKworc3RkOjp1bmlxdWVfcHRyPERpc3Bs
YXlMaXN0OjpEaXNwbGF5TGlzdD4gRGlzcGxheUxpc3RSZWFkZXJIYW5kbGU6OmRpc3BsYXlMaXN0
Rm9yUmVhZGluZyhzaXplX3Qgb2Zmc2V0LCBzaXplX3QgY2FwYWNpdHksIERpc3BsYXlMaXN0OjpJ
dGVtQnVmZmVyUmVhZGluZ0NsaWVudCYgY2xpZW50KSBjb25zdAoreworICAgIGF1dG8gZGlzcGxh
eUxpc3QgPSBtYWtlVW5pcXVlPERpc3BsYXlMaXN0OjpEaXNwbGF5TGlzdD4oRGlzcGxheUxpc3Q6
Okl0ZW1CdWZmZXJIYW5kbGVzIHt7IGlkZW50aWZpZXIoKSwgZGF0YSgpICsgb2Zmc2V0LCBjYXBh
Y2l0eSB9fSk7CisgICAgZGlzcGxheUxpc3QtPnNldEl0ZW1CdWZmZXJDbGllbnQoJmNsaWVudCk7
CisgICAgcmV0dXJuIGRpc3BsYXlMaXN0OworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9EaXNwbGF5TGlzdFJl
YWRlckhhbmRsZS5oIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL0Rpc3BsYXlM
aXN0UmVhZGVySGFuZGxlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uY2I3MjIzOTc2OTZkYzllMGIwNmU4OWNhYzI1
Y2U3MmNiOWE1NzZlMQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vz
cy9ncmFwaGljcy9EaXNwbGF5TGlzdFJlYWRlckhhbmRsZS5oCkBAIC0wLDAgKzEsNTEgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBB
TkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIlNoYXJlZERpc3BsYXlMaXN0SGFu
ZGxlLmgiCisjaW5jbHVkZSA8d3RmL0Zhc3RNYWxsb2MuaD4KKworbmFtZXNwYWNlIFdlYktpdCB7
CisKK2NsYXNzIERpc3BsYXlMaXN0UmVhZGVySGFuZGxlIDogcHVibGljIFNoYXJlZERpc3BsYXlM
aXN0SGFuZGxlIHsKKyAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShEaXNwbGF5TGlzdFJlYWRlckhh
bmRsZSk7IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOworcHVibGljOgorICAgIHN0YXRpYyBSZWY8
RGlzcGxheUxpc3RSZWFkZXJIYW5kbGU+IGNyZWF0ZShXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRl
bUJ1ZmZlcklkZW50aWZpZXIgaWRlbnRpZmllciwgUmVmPFNoYXJlZE1lbW9yeT4mJiBzaGFyZWRN
ZW1vcnkpCisgICAgeworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBEaXNwbGF5TGlzdFJl
YWRlckhhbmRsZShpZGVudGlmaWVyLCBXVEZNb3ZlKHNoYXJlZE1lbW9yeSkpKTsKKyAgICB9CisK
KyAgICBzaXplX3QgYWR2YW5jZShzaXplX3QgYW1vdW50KSBvdmVycmlkZTsKKyAgICBzdGQ6OnVu
aXF1ZV9wdHI8V2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRpc3BsYXlMaXN0PiBkaXNwbGF5TGlzdEZv
clJlYWRpbmcoc2l6ZV90IG9mZnNldCwgc2l6ZV90IGNhcGFjaXR5LCBXZWJDb3JlOjpEaXNwbGF5
TGlzdDo6SXRlbUJ1ZmZlclJlYWRpbmdDbGllbnQmKSBjb25zdDsKKworcHJpdmF0ZToKKyAgICBE
aXNwbGF5TGlzdFJlYWRlckhhbmRsZShXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbUJ1ZmZlcklk
ZW50aWZpZXIgaWRlbnRpZmllciwgUmVmPFNoYXJlZE1lbW9yeT4mJiBzaGFyZWRNZW1vcnkpCisg
ICAgICAgIDogU2hhcmVkRGlzcGxheUxpc3RIYW5kbGUoaWRlbnRpZmllciwgV1RGTW92ZShzaGFy
ZWRNZW1vcnkpKQorICAgIHsKKyAgICB9Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVJbWFnZUJ1
ZmZlci5oIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUltYWdlQnVm
ZmVyLmgKaW5kZXggNjRiMWU2YmRhZTVlY2JmNjMwOGViNzM1NGIzMTQzOTg5MTM3MTIyNS4uM2Ri
YWFmOWYyZWM2YmQxMTI3ZDUxYzExN2UwYzFjNzA1NmNkMjVkMyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUltYWdlQnVmZmVyLmgKKysrIGIvU291
cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUltYWdlQnVmZmVyLmgKQEAgLTUy
LDYgKzUyLDcgQEAgcHVibGljOgogICAgIFJlbW90ZUltYWdlQnVmZmVyKHN0ZDo6dW5pcXVlX3B0
cjxCYWNrZW5kVHlwZT4mJiBiYWNrZW5kLCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kJiByZW1vdGVS
ZW5kZXJpbmdCYWNrZW5kLCBXZWJDb3JlOjpSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgcmVu
ZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKQogICAgICAgICA6IEJhc2VDb25jcmV0ZUltYWdlQnVm
ZmVyKFdURk1vdmUoYmFja2VuZCksIHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcikKICAgICAg
ICAgLCBtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmQocmVtb3RlUmVuZGVyaW5nQmFja2VuZCkKKyAg
ICAgICAgLCBtX3JlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcihyZW5kZXJpbmdSZXNvdXJjZUlk
ZW50aWZpZXIpCiAgICAgewogICAgICAgICBtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmQuaW1hZ2VC
dWZmZXJCYWNrZW5kV2FzQ3JlYXRlZChtX2JhY2tlbmQtPmxvZ2ljYWxTaXplKCksIG1fYmFja2Vu
ZC0+YmFja2VuZFNpemUoKSwgbV9iYWNrZW5kLT5yZXNvbHV0aW9uU2NhbGUoKSwgbV9iYWNrZW5k
LT5jb2xvclNwYWNlKCksIG1fYmFja2VuZC0+Y3JlYXRlSW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxl
KCksIHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcik7CiAgICAgfQpAQCAtODMsMTIgKzg0LDE1
IEBAIHByaXZhdGU6CiAgICAgICAgIH0KIAogICAgICAgICBpZiAoaXRlbS5pczxXZWJDb3JlOjpE
aXNwbGF5TGlzdDo6Rmx1c2hDb250ZXh0PigpKSB7Ci0gICAgICAgICAgICAvLyBGSVhNRTogTm90
IGltcGxlbWVudGVkIHlldC4KKyAgICAgICAgICAgIEJhc2VDb25jcmV0ZUltYWdlQnVmZmVyOjpm
bHVzaENvbnRleHQoKTsKKyAgICAgICAgICAgIGF1dG8gaWRlbnRpZmllciA9IGl0ZW0uZ2V0PFdl
YkNvcmU6OkRpc3BsYXlMaXN0OjpGbHVzaENvbnRleHQ+KCkuaWRlbnRpZmllcigpOworICAgICAg
ICAgICAgbV9yZW1vdGVSZW5kZXJpbmdCYWNrZW5kLmZsdXNoRGlzcGxheUxpc3RXYXNDb21taXR0
ZWQoaWRlbnRpZmllciwgbV9yZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpOwogICAgICAgICAg
ICAgcmV0dXJuIHRydWU7CiAgICAgICAgIH0KIAogICAgICAgICBpZiAoaXRlbS5pczxXZWJDb3Jl
OjpEaXNwbGF5TGlzdDo6TWV0YUNvbW1hbmRTd2l0Y2hUbz4oKSkgewotICAgICAgICAgICAgLy8g
RklYTUU6IE5vdCBpbXBsZW1lbnRlZCB5ZXQuCisgICAgICAgICAgICBhdXRvIG5leHRCdWZmZXJJ
ZGVudGlmaWVyID0gaXRlbS5nZXQ8V2ViQ29yZTo6RGlzcGxheUxpc3Q6Ok1ldGFDb21tYW5kU3dp
dGNoVG8+KCkuaWRlbnRpZmllcigpOworICAgICAgICAgICAgbV9yZW1vdGVSZW5kZXJpbmdCYWNr
ZW5kLnNldE5leHRJdGVtQnVmZmVyVG9SZWFkKG5leHRCdWZmZXJJZGVudGlmaWVyKTsKICAgICAg
ICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICB9CiAKQEAgLTk2LDYgKzEwMCw3IEBAIHByaXZh
dGU6CiAgICAgfQogCiAgICAgUmVtb3RlUmVuZGVyaW5nQmFja2VuZCYgbV9yZW1vdGVSZW5kZXJp
bmdCYWNrZW5kOworICAgIFdlYkNvcmU6OlJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciBtX3Jl
bmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcjsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRl
cmluZ0JhY2tlbmQuY3BwIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90
ZVJlbmRlcmluZ0JhY2tlbmQuY3BwCmluZGV4IGQyMzdhNjNiODg2OTY0MjFiYjlhMjU3ZWY5ZGIy
MTdjZmU5ZjljZjguLmVhNTY0MzI2MWUyOTllMTBkMzkxNTA0Yjc1MDUwOTk5NjI3NDRjYTkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5kZXJp
bmdCYWNrZW5kLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVt
b3RlUmVuZGVyaW5nQmFja2VuZC5jcHAKQEAgLTI4LDEwICsyOCwxMiBAQAogCiAjaWYgRU5BQkxF
KEdQVV9QUk9DRVNTKQogCisjaW5jbHVkZSAiRGlzcGxheUxpc3RSZWFkZXJIYW5kbGUuaCIKICNp
bmNsdWRlICJHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1S
ZW1vdGVJbWFnZUJ1ZmZlci5oIgogI2luY2x1ZGUgIlJlbW90ZVJlbmRlcmluZ0JhY2tlbmRNZXNz
YWdlcy5oIgogI2luY2x1ZGUgIlJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eU1lc3NhZ2VzLmgi
CisjaW5jbHVkZSA8d3RmL0NoZWNrZWRBcml0aG1ldGljLmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQg
ewogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CkBAIC0xMjQsNDQgKzEyNiw4NiBAQCB2b2lkIFJl
bW90ZVJlbmRlcmluZ0JhY2tlbmQ6OmNyZWF0ZUltYWdlQnVmZmVyKGNvbnN0IEZsb2F0U2l6ZSYg
bG9naWNhbFNpemUsIFJlbgogICAgIG1fcmVtb3RlUmVzb3VyY2VDYWNoZS5jYWNoZUltYWdlQnVm
ZmVyKG1ha2VSZWYoKmltYWdlQnVmZmVyKSk7CiB9CiAKLXZvaWQgUmVtb3RlUmVuZGVyaW5nQmFj
a2VuZDo6YXBwbHlEaXNwbGF5TGlzdChjb25zdCBTaGFyZWREaXNwbGF5TGlzdEhhbmRsZSYgaGFu
ZGxlLCBSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlm
aWVyLCBTaG91bGRGbHVzaENvbnRleHQgZmx1c2hDb250ZXh0KQordm9pZCBSZW1vdGVSZW5kZXJp
bmdCYWNrZW5kOjphcHBseURpc3BsYXlMaXN0c0Zyb21IYW5kbGUoSW1hZ2VCdWZmZXImIGRlc3Rp
bmF0aW9uLCBEaXNwbGF5TGlzdFJlYWRlckhhbmRsZSYgaGFuZGxlLCBzaXplX3QgaW5pdGlhbE9m
ZnNldCkKIHsKLSAgICBWZWN0b3I8UmVmPFNoYXJlZE1lbW9yeT4+IHJlbW92ZWRJdGVtQnVmZmVy
czsKLSAgICBhdXRvIGRpc3BsYXlMaXN0ID0gaGFuZGxlLmNyZWF0ZURpc3BsYXlMaXN0KFsmXSAo
RGlzcGxheUxpc3Q6Okl0ZW1CdWZmZXJJZGVudGlmaWVyIGlkZW50aWZpZXIpIC0+IHVpbnQ4X3Qq
IHsKLSAgICAgICAgaWYgKGF1dG8gc2hhcmVkTWVtb3J5ID0gbV9zaGFyZWRJdGVtQnVmZmVycy50
YWtlKGlkZW50aWZpZXIpKSB7Ci0gICAgICAgICAgICByZW1vdmVkSXRlbUJ1ZmZlcnMuYXBwZW5k
KCpzaGFyZWRNZW1vcnkpOwotICAgICAgICAgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8dWlu
dDhfdCo+KHNoYXJlZE1lbW9yeS0+ZGF0YSgpKTsKKyAgICBhdXRvIGhhbmRsZVByb3RlY3RvciA9
IG1ha2VSZWYoaGFuZGxlKTsKKworICAgIHNpemVfdCBvZmZzZXQgPSBpbml0aWFsT2Zmc2V0Owor
ICAgIHNpemVfdCBzaXplVG9SZWFkID0gMDsKKworICAgIGRvIHsKKyAgICAgICAgc2l6ZVRvUmVh
ZCA9IGhhbmRsZS51bnJlYWRCeXRlcygpOworICAgIH0gd2hpbGUgKCFzaXplVG9SZWFkKTsKKwor
ICAgIHdoaWxlIChzaXplVG9SZWFkKSB7CisgICAgICAgIGF1dG8gZGlzcGxheUxpc3QgPSBoYW5k
bGUuZGlzcGxheUxpc3RGb3JSZWFkaW5nKG9mZnNldCwgc2l6ZVRvUmVhZCwgKnRoaXMpOworICAg
ICAgICBpZiAoVU5MSUtFTFkoIWRpc3BsYXlMaXN0KSkgeworICAgICAgICAgICAgLy8gRklYTUU6
IEFkZCBhIG1lc3NhZ2UgY2hlY2sgdG8gdGVybWluYXRlIHRoZSB3ZWIgcHJvY2Vzcy4KKyAgICAg
ICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAg
ICB9CisKKyAgICAgICAgZGVzdGluYXRpb24uc3VibWl0RGlzcGxheUxpc3QoKmRpc3BsYXlMaXN0
KTsKKworICAgICAgICBDaGVja2VkU2l6ZSBjaGVja2VkT2Zmc2V0ID0gb2Zmc2V0OworICAgICAg
ICBjaGVja2VkT2Zmc2V0ICs9IHNpemVUb1JlYWQ7CisgICAgICAgIGlmIChVTkxJS0VMWShjaGVj
a2VkT2Zmc2V0Lmhhc092ZXJmbG93ZWQoKSkpIHsKKyAgICAgICAgICAgIC8vIEZJWE1FOiBBZGQg
YSBtZXNzYWdlIGNoZWNrIHRvIHRlcm1pbmF0ZSB0aGUgd2ViIHByb2Nlc3MuCisgICAgICAgICAg
ICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQor
CisgICAgICAgIG9mZnNldCA9IGNoZWNrZWRPZmZzZXQudW5zYWZlR2V0KCk7CisKKyAgICAgICAg
aWYgKFVOTElLRUxZKG9mZnNldCA+IGhhbmRsZS5zaGFyZWRNZW1vcnkoKS5zaXplKCkpKSB7Cisg
ICAgICAgICAgICAvLyBGSVhNRTogQWRkIGEgbWVzc2FnZSBjaGVjayB0byB0ZXJtaW5hdGUgdGhl
IHdlYiBwcm9jZXNzLgorICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAg
ICAgICByZXR1cm47CiAgICAgICAgIH0KLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgfSk7
CiAKLSAgICBpZiAoIWRpc3BsYXlMaXN0KSB7CisgICAgICAgIHNpemVUb1JlYWQgPSBoYW5kbGUu
YWR2YW5jZShzaXplVG9SZWFkKTsKKyAgICB9Cit9CisKK3ZvaWQgUmVtb3RlUmVuZGVyaW5nQmFj
a2VuZDo6d2FrZVVwQW5kQXBwbHlEaXNwbGF5TGlzdChEaXNwbGF5TGlzdDo6SXRlbUJ1ZmZlcklk
ZW50aWZpZXIgaW5pdGlhbElkZW50aWZpZXIsIHVpbnQ2NF90IGluaXRpYWxPZmZzZXQsIFJlbmRl
cmluZ1Jlc291cmNlSWRlbnRpZmllciBkZXN0aW5hdGlvbkJ1ZmZlcklkZW50aWZpZXIpCit7Cisg
ICAgYXV0byBpbWFnZUJ1ZmZlciA9IG1fcmVtb3RlUmVzb3VyY2VDYWNoZS5jYWNoZWRJbWFnZUJ1
ZmZlcihkZXN0aW5hdGlvbkJ1ZmZlcklkZW50aWZpZXIpOworICAgIGlmIChVTkxJS0VMWSghaW1h
Z2VCdWZmZXIpKSB7CiAgICAgICAgIC8vIEZJWE1FOiBBZGQgYSBtZXNzYWdlIGNoZWNrIHRvIHRl
cm1pbmF0ZSB0aGUgd2ViIHByb2Nlc3MuCisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwog
ICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgYXV0byBpbWFnZUJ1ZmZlciA9IG1fcmVtb3Rl
UmVzb3VyY2VDYWNoZS5jYWNoZWRJbWFnZUJ1ZmZlcihyZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZp
ZXIpOwotICAgIGlmICghaW1hZ2VCdWZmZXIpIHsKKyAgICBhdXRvIGluaXRpYWxIYW5kbGUgPSBt
X3NoYXJlZERpc3BsYXlMaXN0SGFuZGxlcy5nZXQoaW5pdGlhbElkZW50aWZpZXIpOworICAgIGlm
IChVTkxJS0VMWSghaW5pdGlhbEhhbmRsZSkpIHsKICAgICAgICAgLy8gRklYTUU6IEFkZCBhIG1l
c3NhZ2UgY2hlY2sgdG8gdGVybWluYXRlIHRoZSB3ZWIgcHJvY2Vzcy4KKyAgICAgICAgQVNTRVJU
X05PVF9SRUFDSEVEKCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBkaXNwbGF5TGlz
dC0+c2V0SXRlbUJ1ZmZlckNsaWVudCh0aGlzKTsKLSAgICBpbWFnZUJ1ZmZlci0+c3VibWl0RGlz
cGxheUxpc3QoKmRpc3BsYXlMaXN0KTsKKyAgICBhcHBseURpc3BsYXlMaXN0c0Zyb21IYW5kbGUo
KmltYWdlQnVmZmVyLCAqaW5pdGlhbEhhbmRsZSwgaW5pdGlhbE9mZnNldCk7CiAKLSAgICBpZiAo
Zmx1c2hDb250ZXh0ID09IFNob3VsZEZsdXNoQ29udGV4dDo6WWVzKQotICAgICAgICBpbWFnZUJ1
ZmZlci0+Zmx1c2hDb250ZXh0KCk7Ci19Ci0KLXZvaWQgUmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6
c3VibWl0RGlzcGxheUxpc3QoY29uc3QgU2hhcmVkRGlzcGxheUxpc3RIYW5kbGUmIGhhbmRsZSwg
UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyIHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcikK
LXsKLSAgICBhcHBseURpc3BsYXlMaXN0KGhhbmRsZSwgcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlm
aWVyLCBTaG91bGRGbHVzaENvbnRleHQ6Ok5vKTsKKyAgICB3aGlsZSAobV9uZXh0SXRlbUJ1ZmZl
clRvUmVhZCkgeworICAgICAgICBhdXRvIG5leHRIYW5kbGUgPSBtX3NoYXJlZERpc3BsYXlMaXN0
SGFuZGxlcy5nZXQobV9uZXh0SXRlbUJ1ZmZlclRvUmVhZCk7CisgICAgICAgIGlmICghbmV4dEhh
bmRsZSkgeworICAgICAgICAgICAgLy8gSWYgdGhlIGhhbmRsZSBpZGVudGlmaWVyIGlzIGN1cnJl
bnRseSB1bmtub3duLCB3YWl0IHVudGlsIHRoZSBHUFUgcHJvY2VzcyByZWNlaXZlcyBhbgorICAg
ICAgICAgICAgLy8gSVBDIG1lc3NhZ2Ugd2l0aCBhIHNoYXJlZCBtZW1vcnkgaGFuZGxlIHRvIHRo
ZSBuZXh0IGl0ZW0gYnVmZmVyLgorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAg
ICAgLy8gT3RoZXJ3aXNlLCBjb250aW51ZSByZWFkaW5nIHRoZSBuZXh0IGRpc3BsYXkgbGlzdCBp
dGVtIGJ1ZmZlciBmcm9tIHRoZSBzdGFydC4KKyAgICAgICAgbV9uZXh0SXRlbUJ1ZmZlclRvUmVh
ZCA9IHsgfTsKKyAgICAgICAgYXBwbHlEaXNwbGF5TGlzdHNGcm9tSGFuZGxlKCppbWFnZUJ1ZmZl
ciwgKm5leHRIYW5kbGUsIFNoYXJlZERpc3BsYXlMaXN0SGFuZGxlOjpyZXNlcnZlZENhcGFjaXR5
QXRTdGFydCk7CisgICAgfQogfQogCi12b2lkIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OmZsdXNo
RGlzcGxheUxpc3RBbmRDb21taXQoY29uc3QgU2hhcmVkRGlzcGxheUxpc3RIYW5kbGUmIGhhbmRs
ZSwgRGlzcGxheUxpc3Q6OkZsdXNoSWRlbnRpZmllciBmbHVzaElkZW50aWZpZXIsIFJlbmRlcmlu
Z1Jlc291cmNlSWRlbnRpZmllciByZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpCit2b2lkIFJl
bW90ZVJlbmRlcmluZ0JhY2tlbmQ6OnNldE5leHRJdGVtQnVmZmVyVG9SZWFkKERpc3BsYXlMaXN0
OjpJdGVtQnVmZmVySWRlbnRpZmllciBpZGVudGlmaWVyKQogewotICAgIGFwcGx5RGlzcGxheUxp
c3QoaGFuZGxlLCByZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIsIFNob3VsZEZsdXNoQ29udGV4
dDo6WWVzKTsKLSAgICBmbHVzaERpc3BsYXlMaXN0V2FzQ29tbWl0dGVkKGZsdXNoSWRlbnRpZmll
ciwgcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKTsKKyAgICBpZiAoVU5MSUtFTFkobV9uZXh0
SXRlbUJ1ZmZlclRvUmVhZCkpIHsKKyAgICAgICAgLy8gRklYTUU6IEFkZCBhIG1lc3NhZ2UgY2hl
Y2sgdG8gdGVybWluYXRlIHRoZSB3ZWIgcHJvY2Vzcy4KKyAgICAgICAgQVNTRVJUX05PVF9SRUFD
SEVEKCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgbV9uZXh0SXRlbUJ1ZmZlclRvUmVh
ZCA9IGlkZW50aWZpZXI7CiB9CiAKIHZvaWQgUmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6Z2V0SW1h
Z2VEYXRhKEFscGhhUHJlbXVsdGlwbGljYXRpb24gb3V0cHV0Rm9ybWF0LCBJbnRSZWN0IHNyY1Jl
Y3QsIFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciByZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZp
ZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoSVBDOjpJbWFnZURhdGFSZWZlcmVuY2UmJik+JiYg
Y29tcGxldGlvbkhhbmRsZXIpCkBAIC0xNzcsMTAgKzIyMSwyMSBAQCB2b2lkIFJlbW90ZVJlbmRl
cmluZ0JhY2tlbmQ6OnJlbGVhc2VSZW1vdGVSZXNvdXJjZShSZW5kZXJpbmdSZXNvdXJjZUlkZW50
aWZpZXIgcgogICAgIG1fcmVtb3RlUmVzb3VyY2VDYWNoZS5yZWxlYXNlUmVtb3RlUmVzb3VyY2Uo
cmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKTsKIH0KIAotdm9pZCBSZW1vdGVSZW5kZXJpbmdC
YWNrZW5kOjpkaWRDcmVhdGVTaGFyZWRJdGVtRGF0YShEaXNwbGF5TGlzdDo6SXRlbUJ1ZmZlcklk
ZW50aWZpZXIgaWRlbnRpZmllciwgY29uc3QgU2hhcmVkTWVtb3J5OjpJUENIYW5kbGUmIGhhbmRs
ZSkKK3ZvaWQgUmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6ZGlkQ3JlYXRlU2hhcmVkRGlzcGxheUxp
c3RIYW5kbGUoRGlzcGxheUxpc3Q6Okl0ZW1CdWZmZXJJZGVudGlmaWVyIGlkZW50aWZpZXIsIGNv
bnN0IFNoYXJlZE1lbW9yeTo6SVBDSGFuZGxlJiBoYW5kbGUsIFJlbmRlcmluZ1Jlc291cmNlSWRl
bnRpZmllciBkZXN0aW5hdGlvbkJ1ZmZlcklkZW50aWZpZXIpCiB7Ci0gICAgaWYgKGF1dG8gc2hh
cmVkTWVtb3J5ID0gU2hhcmVkTWVtb3J5OjptYXAoaGFuZGxlLmhhbmRsZSwgU2hhcmVkTWVtb3J5
OjpQcm90ZWN0aW9uOjpSZWFkT25seSkpCi0gICAgICAgIG1fc2hhcmVkSXRlbUJ1ZmZlcnMuc2V0
KGlkZW50aWZpZXIsIFdURk1vdmUoc2hhcmVkTWVtb3J5KSk7CisgICAgaWYgKFVOTElLRUxZKG1f
c2hhcmVkRGlzcGxheUxpc3RIYW5kbGVzLmNvbnRhaW5zKGlkZW50aWZpZXIpKSkgeworICAgICAg
ICAvLyBGSVhNRTogQWRkIGEgbWVzc2FnZSBjaGVjayB0byB0ZXJtaW5hdGUgdGhlIHdlYiBwcm9j
ZXNzLgorICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgcmV0dXJuOworICAg
IH0KKworICAgIGlmIChhdXRvIHNoYXJlZE1lbW9yeSA9IFNoYXJlZE1lbW9yeTo6bWFwKGhhbmRs
ZS5oYW5kbGUsIFNoYXJlZE1lbW9yeTo6UHJvdGVjdGlvbjo6UmVhZFdyaXRlKSkKKyAgICAgICAg
bV9zaGFyZWREaXNwbGF5TGlzdEhhbmRsZXMuc2V0KGlkZW50aWZpZXIsIERpc3BsYXlMaXN0UmVh
ZGVySGFuZGxlOjpjcmVhdGUoaWRlbnRpZmllciwgc2hhcmVkTWVtb3J5LnJlbGVhc2VOb25OdWxs
KCkpKTsKKworICAgIGlmIChtX25leHRJdGVtQnVmZmVyVG9SZWFkID09IGlkZW50aWZpZXIpIHsK
KyAgICAgICAgbV9uZXh0SXRlbUJ1ZmZlclRvUmVhZCA9IHsgfTsKKyAgICAgICAgd2FrZVVwQW5k
QXBwbHlEaXNwbGF5TGlzdChpZGVudGlmaWVyLCBTaGFyZWREaXNwbGF5TGlzdEhhbmRsZTo6cmVz
ZXJ2ZWRDYXBhY2l0eUF0U3RhcnQsIGRlc3RpbmF0aW9uQnVmZmVySWRlbnRpZmllcik7CisgICAg
fQogfQogCiBPcHRpb25hbDxEaXNwbGF5TGlzdDo6SXRlbUhhbmRsZT4gV0FSTl9VTlVTRURfUkVU
VVJOIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OmRlY29kZUl0ZW0oY29uc3QgdWludDhfdCogZGF0
YSwgc2l6ZV90IGxlbmd0aCwgRGlzcGxheUxpc3Q6Okl0ZW1UeXBlIHR5cGUsIHVpbnQ4X3QqIGhh
bmRsZUxvY2F0aW9uKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBo
aWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQuaCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9n
cmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kLmgKaW5kZXggN2FjOTYyMDEwM2U1N2MwN2Ji
MmVlZTMzZWJlZmIyYzQ1ZjAwN2RkMS4uYjM2YjlkZDYwNjRlZTVhNTE2M2M2OGU0MTk0NzYzMWZl
MDkxMzEzMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1Jl
bW90ZVJlbmRlcmluZ0JhY2tlbmQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3Jh
cGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5oCkBAIC0zNCw3ICszNCw2IEBACiAjaW5jbHVk
ZSAiTWVzc2FnZVNlbmRlci5oIgogI2luY2x1ZGUgIlJlbW90ZVJlc291cmNlQ2FjaGUuaCIKICNp
bmNsdWRlICJSZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllci5oIgotI2luY2x1ZGUgIlNoYXJlZERp
c3BsYXlMaXN0SGFuZGxlLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9Db2xvclNwYWNlLmg+CiAjaW5j
bHVkZSA8V2ViQ29yZS9EaXNwbGF5TGlzdC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRGlzcGxheUxp
c3RJdGVtcy5oPgpAQCAtNTIsNiArNTEsNyBAQCBlbnVtIGNsYXNzIFJlbmRlcmluZ01vZGUgOiBi
b29sOwogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAorY2xhc3MgRGlzcGxheUxpc3RSZWFkZXJIYW5k
bGU7CiBjbGFzcyBHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzOwogCiBjbGFzcyBSZW1vdGVSZW5k
ZXJpbmdCYWNrZW5kCkBAIC03MiwxMiArNzIsMTEgQEAgcHVibGljOgogICAgIHZvaWQgaW1hZ2VC
dWZmZXJCYWNrZW5kV2FzQ3JlYXRlZChjb25zdCBXZWJDb3JlOjpGbG9hdFNpemUmIGxvZ2ljYWxT
aXplLCBjb25zdCBXZWJDb3JlOjpJbnRTaXplJiBiYWNrZW5kU2l6ZSwgZmxvYXQgcmVzb2x1dGlv
blNjYWxlLCBXZWJDb3JlOjpDb2xvclNwYWNlLCBJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGUsIFdl
YkNvcmU6OlJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcik7CiAgICAgdm9pZCBmbHVzaERpc3Bs
YXlMaXN0V2FzQ29tbWl0dGVkKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpGbHVzaElkZW50aWZpZXIs
IFdlYkNvcmU6OlJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcik7CiAKKyAgICB2b2lkIHNldE5l
eHRJdGVtQnVmZmVyVG9SZWFkKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtQnVmZmVySWRlbnRp
Zmllcik7CisKIHByaXZhdGU6CiAgICAgUmVtb3RlUmVuZGVyaW5nQmFja2VuZChHUFVDb25uZWN0
aW9uVG9XZWJQcm9jZXNzJiwgUmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXIpOwogCi0gICAgZW51
bSBjbGFzcyBTaG91bGRGbHVzaENvbnRleHQgOiBib29sIHsgTm8sIFllcyB9OwotICAgIHZvaWQg
YXBwbHlEaXNwbGF5TGlzdChjb25zdCBTaGFyZWREaXNwbGF5TGlzdEhhbmRsZSYsIFdlYkNvcmU6
OlJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciwgU2hvdWxkRmx1c2hDb250ZXh0KTsKLQogICAg
IE9wdGlvbmFsPFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtSGFuZGxlPiBXQVJOX1VOVVNFRF9S
RVRVUk4gZGVjb2RlSXRlbShjb25zdCB1aW50OF90KiBkYXRhLCBzaXplX3QgbGVuZ3RoLCBXZWJD
b3JlOjpEaXNwbGF5TGlzdDo6SXRlbVR5cGUsIHVpbnQ4X3QqIGhhbmRsZUxvY2F0aW9uKSBvdmVy
cmlkZTsKIAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+CkBAIC05Miw2ICs5MSw4IEBAIHByaXZh
dGU6CiAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CiAgICAgfQogCisgICAgdm9pZCBhcHBs
eURpc3BsYXlMaXN0c0Zyb21IYW5kbGUoV2ViQ29yZTo6SW1hZ2VCdWZmZXImIGRlc3RpbmF0aW9u
LCBEaXNwbGF5TGlzdFJlYWRlckhhbmRsZSYsIHNpemVfdCBvZmZzZXQpOworCiAgICAgLy8gSVBD
OjpNZXNzYWdlU2VuZGVyLgogICAgIElQQzo6Q29ubmVjdGlvbiogbWVzc2FnZVNlbmRlckNvbm5l
Y3Rpb24oKSBjb25zdCBvdmVycmlkZTsKICAgICB1aW50NjRfdCBtZXNzYWdlU2VuZGVyRGVzdGlu
YXRpb25JRCgpIGNvbnN0IG92ZXJyaWRlOwpAQCAtMTAyLDE2ICsxMDMsMTYgQEAgcHJpdmF0ZToK
IAogICAgIC8vIE1lc3NhZ2VzIHRvIGJlIHJlY2VpdmVkLgogICAgIHZvaWQgY3JlYXRlSW1hZ2VC
dWZmZXIoY29uc3QgV2ViQ29yZTo6RmxvYXRTaXplJiBsb2dpY2FsU2l6ZSwgV2ViQ29yZTo6UmVu
ZGVyaW5nTW9kZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBXZWJDb3JlOjpDb2xvclNwYWNlLCBX
ZWJDb3JlOjpSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpOwotICAgIHZvaWQgc3VibWl0RGlz
cGxheUxpc3QoY29uc3QgU2hhcmVkRGlzcGxheUxpc3RIYW5kbGUmLCBXZWJDb3JlOjpSZW5kZXJp
bmdSZXNvdXJjZUlkZW50aWZpZXIpOwotICAgIHZvaWQgZmx1c2hEaXNwbGF5TGlzdEFuZENvbW1p
dChjb25zdCBTaGFyZWREaXNwbGF5TGlzdEhhbmRsZSYsIFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpG
bHVzaElkZW50aWZpZXIsIFdlYkNvcmU6OlJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcik7Cisg
ICAgdm9pZCB3YWtlVXBBbmRBcHBseURpc3BsYXlMaXN0KFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJ
dGVtQnVmZmVySWRlbnRpZmllciBpbml0aWFsSWRlbnRpZmllciwgdWludDY0X3QgaW5pdGlhbE9m
ZnNldCwgV2ViQ29yZTo6UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyIGRlc3RpbmF0aW9uQnVm
ZmVySWRlbnRpZmllcik7CiAgICAgdm9pZCBnZXRJbWFnZURhdGEoV2ViQ29yZTo6QWxwaGFQcmVt
dWx0aXBsaWNhdGlvbiBvdXRwdXRGb3JtYXQsIFdlYkNvcmU6OkludFJlY3Qgc3JjUmVjdCwgV2Vi
Q29yZTo6UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KElQQzo6SW1hZ2VEYXRhUmVmZXJlbmNlJiYpPiYmKTsKICAgICB2b2lkIHJlbGVhc2VSZW1vdGVS
ZXNvdXJjZShXZWJDb3JlOjpSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpOwotICAgIHZvaWQg
ZGlkQ3JlYXRlU2hhcmVkSXRlbURhdGEoV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1CdWZmZXJJ
ZGVudGlmaWVyLCBjb25zdCBTaGFyZWRNZW1vcnk6OklQQ0hhbmRsZSYpOworICAgIHZvaWQgZGlk
Q3JlYXRlU2hhcmVkRGlzcGxheUxpc3RIYW5kbGUoV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1C
dWZmZXJJZGVudGlmaWVyLCBjb25zdCBTaGFyZWRNZW1vcnk6OklQQ0hhbmRsZSYsIFdlYkNvcmU6
OlJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciBkZXN0aW5hdGlvbkJ1ZmZlcklkZW50aWZpZXIp
OwogCiAgICAgUmVtb3RlUmVzb3VyY2VDYWNoZSBtX3JlbW90ZVJlc291cmNlQ2FjaGU7CiAgICAg
V2Vha1B0cjxHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzPiBtX2dwdUNvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3M7CiAgICAgUmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXIgbV9yZW5kZXJpbmdCYWNrZW5k
SWRlbnRpZmllcjsKLSAgICBIYXNoTWFwPFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtQnVmZmVy
SWRlbnRpZmllciwgUmVmUHRyPFNoYXJlZE1lbW9yeT4+IG1fc2hhcmVkSXRlbUJ1ZmZlcnM7Cisg
ICAgSGFzaE1hcDxXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbUJ1ZmZlcklkZW50aWZpZXIsIFJl
ZlB0cjxEaXNwbGF5TGlzdFJlYWRlckhhbmRsZT4+IG1fc2hhcmVkRGlzcGxheUxpc3RIYW5kbGVz
OworICAgIFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtQnVmZmVySWRlbnRpZmllciBtX25leHRJ
dGVtQnVmZmVyVG9SZWFkOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2Vu
ZC5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVS
ZW5kZXJpbmdCYWNrZW5kLm1lc3NhZ2VzLmluCmluZGV4IGY1NWIwMjZiZGI1ZTYzYTE0Y2YzNjIx
NGE4M2U4YmJlODg2MzFhMWIuLjZmMmUyYWJkZjkyNmJjZDRhMDRjMjM1NThlNjViOTk2YTVhMDYw
ODIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVS
ZW5kZXJpbmdCYWNrZW5kLm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vz
cy9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kLm1lc3NhZ2VzLmluCkBAIC0yNCwxMCAr
MjQsOSBAQAogCiBtZXNzYWdlcyAtPiBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kIE5vdFJlZkNvdW50
ZWQgewogICAgIENyZWF0ZUltYWdlQnVmZmVyKFdlYkNvcmU6OkZsb2F0U2l6ZSBsb2dpY2FsU2l6
ZSwgV2ViQ29yZTo6UmVuZGVyaW5nTW9kZSByZW5kZXJpbmdNb2RlLCBmbG9hdCByZXNvbHV0aW9u
U2NhbGUsIFdlYkNvcmU6OkNvbG9yU3BhY2UgY29sb3JTcGFjZSwgV2ViQ29yZTo6UmVuZGVyaW5n
UmVzb3VyY2VJZGVudGlmaWVyIHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcikKLSAgICBTdWJt
aXREaXNwbGF5TGlzdChXZWJLaXQ6OlNoYXJlZERpc3BsYXlMaXN0SGFuZGxlIGRpc3BsYXlMaXN0
LCBXZWJDb3JlOjpSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgcmVuZGVyaW5nUmVzb3VyY2VJ
ZGVudGlmaWVyKQotICAgIEZsdXNoRGlzcGxheUxpc3RBbmRDb21taXQoV2ViS2l0OjpTaGFyZWRE
aXNwbGF5TGlzdEhhbmRsZSBkaXNwbGF5TGlzdCwgV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkZsdXNo
SWRlbnRpZmllciBmbHVzaElkZW50aWZpZXIsIFdlYkNvcmU6OlJlbmRlcmluZ1Jlc291cmNlSWRl
bnRpZmllciByZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpCisgICAgV2FrZVVwQW5kQXBwbHlE
aXNwbGF5TGlzdChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbUJ1ZmZlcklkZW50aWZpZXIgaW5p
dGlhbElkZW50aWZpZXIsIHVpbnQ2NF90IGluaXRpYWxPZmZzZXQsIFdlYkNvcmU6OlJlbmRlcmlu
Z1Jlc291cmNlSWRlbnRpZmllciBkZXN0aW5hdGlvbkJ1ZmZlcklkZW50aWZpZXIpCiAgICAgR2V0
SW1hZ2VEYXRhKGVudW06dWludDhfdCBXZWJDb3JlOjpBbHBoYVByZW11bHRpcGxpY2F0aW9uIG91
dHB1dEZvcm1hdCwgV2ViQ29yZTo6SW50UmVjdCBzcmNSZWN0LCBXZWJDb3JlOjpSZW5kZXJpbmdS
ZXNvdXJjZUlkZW50aWZpZXIgcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKSAtPiAoSVBDOjpJ
bWFnZURhdGFSZWZlcmVuY2UgaW1hZ2VEYXRhKSBTeW5jaHJvbm91cwotICAgIERpZENyZWF0ZVNo
YXJlZEl0ZW1EYXRhKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtQnVmZmVySWRlbnRpZmllciBp
ZGVudGlmaWVyLCBXZWJLaXQ6OlNoYXJlZE1lbW9yeTo6SVBDSGFuZGxlIGhhbmRsZSkKKyAgICBE
aWRDcmVhdGVTaGFyZWREaXNwbGF5TGlzdEhhbmRsZShXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRl
bUJ1ZmZlcklkZW50aWZpZXIgaWRlbnRpZmllciwgV2ViS2l0OjpTaGFyZWRNZW1vcnk6OklQQ0hh
bmRsZSBoYW5kbGUsIFdlYkNvcmU6OlJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciBkZXN0aW5h
dGlvbkJ1ZmZlcklkZW50aWZpZXIpCiAgICAgUmVsZWFzZVJlbW90ZVJlc291cmNlKFdlYkNvcmU6
OlJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciByZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIp
CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1NoYXJlZERpc3BsYXlMaXN0
SGFuZGxlLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1NoYXJlZERpc3BsYXlMaXN0SGFuZGxl
LmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMWFhNzRkNjE1YWJkM2Y0YTMxODYy
NTJmZjBmZGNiODcxZTcwZmE1MC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9TaGFyZWREaXNwbGF5TGlzdEhhbmRsZS5j
cHAKKysrIC9kZXYvbnVsbApAQCAtMSw1MyArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAy
MDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMg
YGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUg
ImNvbmZpZy5oIgotI2luY2x1ZGUgIlNoYXJlZERpc3BsYXlMaXN0SGFuZGxlLmgiCi0KLW5hbWVz
cGFjZSBXZWJLaXQgewotdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7Ci0KLVNoYXJlZERpc3BsYXlM
aXN0SGFuZGxlOjpTaGFyZWREaXNwbGF5TGlzdEhhbmRsZShjb25zdCBEaXNwbGF5TGlzdDo6RGlz
cGxheUxpc3QmIGRpc3BsYXlMaXN0KQotewotICAgIGRpc3BsYXlMaXN0LmZvckVhY2hJdGVtQnVm
ZmVyKFsmXSAoYXV0byYgaGFuZGxlKSB7Ci0gICAgICAgIG1fYnVmZmVycy5hcHBlbmQoeyBoYW5k
bGUuaWRlbnRpZmllciwgaGFuZGxlLmNhcGFjaXR5IH0pOwotICAgIH0pOwotfQotCi1zdGQ6OnVu
aXF1ZV9wdHI8RGlzcGxheUxpc3Q6OkRpc3BsYXlMaXN0PiBTaGFyZWREaXNwbGF5TGlzdEhhbmRs
ZTo6Y3JlYXRlRGlzcGxheUxpc3QoSXRlbUJ1ZmZlclByb3ZpZGVyJiYgYnVmZmVyUHJvdmlkZXIp
IGNvbnN0Ci17Ci0gICAgRGlzcGxheUxpc3Q6Okl0ZW1CdWZmZXJIYW5kbGVzIGhhbmRsZXM7Ci0g
ICAgaGFuZGxlcy5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KG1fYnVmZmVycy5zaXplKCkpOwotICAg
IGZvciAoYXV0byYgW2lkZW50aWZpZXIsIGNhcGFjaXR5XSA6IG1fYnVmZmVycykgewotICAgICAg
ICBhdXRvKiBkYXRhID0gYnVmZmVyUHJvdmlkZXIoaWRlbnRpZmllcik7Ci0gICAgICAgIGlmICgh
ZGF0YSkKLSAgICAgICAgICAgIHJldHVybiBudWxscHRyOwotCi0gICAgICAgIGhhbmRsZXMudW5j
aGVja2VkQXBwZW5kKHsgaWRlbnRpZmllciwgZGF0YSwgY2FwYWNpdHkgfSk7Ci0gICAgfQotICAg
IHJldHVybiBtYWtlVW5pcXVlPERpc3BsYXlMaXN0OjpEaXNwbGF5TGlzdD4oV1RGTW92ZShoYW5k
bGVzKSk7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9TaGFyZWQvU2hhcmVkRGlzcGxheUxpc3RIYW5kbGUuaCBiL1NvdXJjZS9XZWJLaXQvU2hh
cmVkL1NoYXJlZERpc3BsYXlMaXN0SGFuZGxlLmgKaW5kZXggZDE3NWUxMTRmMjNiYzhmYjhlNTdj
ZDkwZjY0YTMzYmUyNjJlMWYzMS4uOTEwNmU5MDExNTFiZjI4NDRjOTAxMmM2NjI4YjNmYjMxYmRl
MDQ5NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvU2hhcmVkRGlzcGxheUxpc3RI
YW5kbGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9TaGFyZWREaXNwbGF5TGlzdEhhbmRs
ZS5oCkBAIC0yNSw0MiArMjUsNzYgQEAKIAogI3ByYWdtYSBvbmNlCiAKKyNpbmNsdWRlICJTaGFy
ZWRNZW1vcnkuaCIKICNpbmNsdWRlIDxXZWJDb3JlL0Rpc3BsYXlMaXN0Lmg+CisjaW5jbHVkZSA8
d3RmL0F0b21pY3MuaD4KKyNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgorI2luY2x1ZGUgPHd0
Zi9UaHJlYWRpbmcuaD4KIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKLWNsYXNzIFNoYXJlZERpc3Bs
YXlMaXN0SGFuZGxlIHsKK2NsYXNzIFNoYXJlZERpc3BsYXlMaXN0SGFuZGxlIDogcHVibGljIFJl
ZkNvdW50ZWQ8U2hhcmVkRGlzcGxheUxpc3RIYW5kbGU+IHsKIHB1YmxpYzoKLSAgICB1c2luZyBJ
dGVtQnVmZmVyUHJvdmlkZXIgPSBGdW5jdGlvbjx1aW50OF90KihXZWJDb3JlOjpEaXNwbGF5TGlz
dDo6SXRlbUJ1ZmZlcklkZW50aWZpZXIpPjsKKyAgICB2aXJ0dWFsIH5TaGFyZWREaXNwbGF5TGlz
dEhhbmRsZSgpID0gZGVmYXVsdDsKIAotICAgIFNoYXJlZERpc3BsYXlMaXN0SGFuZGxlKGNvbnN0
IFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEaXNwbGF5TGlzdCYpOwotICAgIHN0ZDo6dW5pcXVlX3B0
cjxXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RGlzcGxheUxpc3Q+IGNyZWF0ZURpc3BsYXlMaXN0KEl0
ZW1CdWZmZXJQcm92aWRlciYmKSBjb25zdDsKKyAgICBzdGF0aWMgY29uc3RleHByIGF1dG8gcmVz
ZXJ2ZWRDYXBhY2l0eUF0U3RhcnQgPSAyICogc2l6ZW9mKHVpbnQ2NF90KTsKIAotICAgIHRlbXBs
YXRlPGNsYXNzIEVuY29kZXI+IHZvaWQgZW5jb2RlKEVuY29kZXImKSBjb25zdDsKLSAgICB0ZW1w
bGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGF0aWMgT3B0aW9uYWw8U2hhcmVkRGlzcGxheUxpc3RIYW5k
bGU+IGRlY29kZShEZWNvZGVyJik7CisgICAgU2hhcmVkTWVtb3J5JiBzaGFyZWRNZW1vcnkoKSB7
IHJldHVybiBtX3NoYXJlZE1lbW9yeS5nZXQoKTsgfQorICAgIGNvbnN0IFNoYXJlZE1lbW9yeSYg
c2hhcmVkTWVtb3J5KCkgY29uc3QgeyByZXR1cm4gbV9zaGFyZWRNZW1vcnkuZ2V0KCk7IH0KIAot
cHJpdmF0ZToKLSAgICBTaGFyZWREaXNwbGF5TGlzdEhhbmRsZShWZWN0b3I8c3RkOjpwYWlyPFdl
YkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtQnVmZmVySWRlbnRpZmllciwgc2l6ZV90Pj4mJiBidWZm
ZXJzKQotICAgICAgICA6IG1fYnVmZmVycyhXVEZNb3ZlKGJ1ZmZlcnMpKQorICAgIFdlYkNvcmU6
OkRpc3BsYXlMaXN0OjpJdGVtQnVmZmVySWRlbnRpZmllciBpZGVudGlmaWVyKCkgY29uc3QgeyBy
ZXR1cm4gbV9pZGVudGlmaWVyOyB9CisgICAgdWludDhfdCogZGF0YSgpIGNvbnN0IHsgcmV0dXJu
IHJlaW50ZXJwcmV0X2Nhc3Q8dWludDhfdCo+KHNoYXJlZE1lbW9yeSgpLmRhdGEoKSk7IH0KKwor
ICAgIHVpbnQ2NF90IHVucmVhZEJ5dGVzKCkKICAgICB7CisgICAgICAgIGF1dG8gbG9ja2VyID0g
U2hhcmVkRGlzcGxheUxpc3RIYW5kbGU6OkxvY2sgeyAqdGhpcyB9OworICAgICAgICByZXR1cm4g
aGVhZGVyKCkudW5yZWFkQnl0ZXM7CiAgICAgfQogCi0gICAgVmVjdG9yPHN0ZDo6cGFpcjxXZWJD
b3JlOjpEaXNwbGF5TGlzdDo6SXRlbUJ1ZmZlcklkZW50aWZpZXIsIHNpemVfdD4+IG1fYnVmZmVy
czsKLX07CisgICAgdmlydHVhbCBzaXplX3QgYWR2YW5jZShzaXplX3QgYW1vdW50KSA9IDA7CiAK
LXRlbXBsYXRlPGNsYXNzIEVuY29kZXI+IHZvaWQgU2hhcmVkRGlzcGxheUxpc3RIYW5kbGU6OmVu
Y29kZShFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAotewotICAgIGVuY29kZXIgPDwgbV9idWZmZXJz
OwotfQorcHJvdGVjdGVkOgorICAgIGNsYXNzIExvY2sgeworICAgIHB1YmxpYzoKKyAgICAgICAg
TG9jayhTaGFyZWREaXNwbGF5TGlzdEhhbmRsZSYgaGFuZGxlKQorICAgICAgICAgICAgOiBtX2hh
bmRsZShoYW5kbGUpCisgICAgICAgIHsKKyAgICAgICAgICAgIGF1dG8mIGF0b21pY1ZhbHVlID0g
bV9oYW5kbGUuaGVhZGVyKCkubG9jazsKKyAgICAgICAgICAgIHdoaWxlICh0cnVlKSB7CisgICAg
ICAgICAgICAgICAgLy8gRklYTUU6IFdlIG5lZWQgdG8gYXZvaWQgd2FpdGluZyBmb3JldmVyIGlu
IHRoZSBjYXNlIHdoZXJlIHRoZSB3ZWIgY29udGVudCBwcm9jZXNzCisgICAgICAgICAgICAgICAg
Ly8gaG9sZHMgb24gdG8gdGhlIGxvY2sgaW5kZWZpbml0ZWx5IChvciBjcmFzaGVzIHdoaWxlIGhv
bGRpbmcgdGhlIGxvY2spLgorICAgICAgICAgICAgICAgIHVpbnQ2NF90IHVubG9ja2VkID0gMDsK
KyAgICAgICAgICAgICAgICBpZiAoYXRvbWljVmFsdWUuY29tcGFyZUV4Y2hhbmdlV2Vhayh1bmxv
Y2tlZCwgMSkpCisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIFRo
cmVhZDo6eWllbGQoKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQogCi10ZW1wbGF0ZTxjbGFz
cyBEZWNvZGVyPiBPcHRpb25hbDxTaGFyZWREaXNwbGF5TGlzdEhhbmRsZT4gU2hhcmVkRGlzcGxh
eUxpc3RIYW5kbGU6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQotewotICAgIE9wdGlvbmFsPFZl
Y3RvcjxzdGQ6OnBhaXI8V2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1CdWZmZXJJZGVudGlmaWVy
LCBzaXplX3Q+Pj4gYnVmZmVyczsKLSAgICBkZWNvZGVyID4+IGJ1ZmZlcnM7Ci0gICAgaWYgKCFi
dWZmZXJzKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICB+TG9jaygpCisg
ICAgICAgIHsKKyAgICAgICAgICAgIG1faGFuZGxlLmhlYWRlcigpLmxvY2suc3RvcmUoMCk7Cisg
ICAgICAgIH0KIAotICAgIHJldHVybiB7eyBXVEZNb3ZlKCpidWZmZXJzKSB9fTsKLX0KKyAgICBw
cml2YXRlOgorICAgICAgICBTaGFyZWREaXNwbGF5TGlzdEhhbmRsZSYgbV9oYW5kbGU7CisgICAg
fTsKKworICAgIFNoYXJlZERpc3BsYXlMaXN0SGFuZGxlKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJ
dGVtQnVmZmVySWRlbnRpZmllciBpZGVudGlmaWVyLCBSZWY8U2hhcmVkTWVtb3J5PiYmIHNoYXJl
ZE1lbW9yeSkKKyAgICAgICAgOiBtX2lkZW50aWZpZXIoaWRlbnRpZmllcikKKyAgICAgICAgLCBt
X3NoYXJlZE1lbW9yeShXVEZNb3ZlKHNoYXJlZE1lbW9yeSkpCisgICAgeworICAgIH0KKworICAg
IHN0cnVjdCBEaXNwbGF5TGlzdFNoYXJlZE1lbW9yeUhlYWRlciB7CisgICAgICAgIEF0b21pYzx1
aW50NjRfdD4gbG9jazsKKyAgICAgICAgdWludDY0X3QgdW5yZWFkQnl0ZXM7CisgICAgfTsKKwor
ICAgIERpc3BsYXlMaXN0U2hhcmVkTWVtb3J5SGVhZGVyJiBoZWFkZXIoKSB7IHJldHVybiAqcmVp
bnRlcnByZXRfY2FzdDxEaXNwbGF5TGlzdFNoYXJlZE1lbW9yeUhlYWRlcio+KGRhdGEoKSk7IH0K
KworcHJpdmF0ZToKKyAgICBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbUJ1ZmZlcklkZW50aWZp
ZXIgbV9pZGVudGlmaWVyOworICAgIFJlZjxTaGFyZWRNZW1vcnk+IG1fc2hhcmVkTWVtb3J5Owor
fTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1Nv
dXJjZXMudHh0IGIvU291cmNlL1dlYktpdC9Tb3VyY2VzLnR4dAppbmRleCA4M2QyODBjNzVlZjVm
NWJiMGEyZWI2ZDExYWE4YzBmYTkxOWI3NGQwLi4yNDVmZGIyMWY5NTI5OThhMzlkYjhhMjE5MmM4
YzU3MmM4OTEwNjJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NvdXJjZXMudHh0CisrKyBi
L1NvdXJjZS9XZWJLaXQvU291cmNlcy50eHQKQEAgLTI0LDYgKzI0LDcgQEAKIEdQVVByb2Nlc3Mv
R1BVUHJvY2Vzcy5jcHAKIEdQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAK
IEdQVVByb2Nlc3MvR1BVUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5jcHAKK0dQVVByb2Nlc3Mv
Z3JhcGhpY3MvRGlzcGxheUxpc3RSZWFkZXJIYW5kbGUuY3BwCiBHUFVQcm9jZXNzL2dyYXBoaWNz
L1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQuY3BwCiBHUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJl
c291cmNlQ2FjaGUuY3BwCiBHUFVQcm9jZXNzL21lZGlhL1JlbW90ZUF1ZGlvU2Vzc2lvblByb3h5
LmNwcApAQCAtMTczLDcgKzE3NCw2IEBAIFNoYXJlZC9TZXJ2aWNlV29ya2VySW5pdGlhbGl6YXRp
b25EYXRhLmNwcAogU2hhcmVkL1Nlc3Npb25TdGF0ZS5jcHAKIFNoYXJlZC9TaGFyZWFibGVCaXRt
YXAuY3BwIEBuby11bmlmeQogU2hhcmVkL1NoYXJlYWJsZVJlc291cmNlLmNwcAotU2hhcmVkL1No
YXJlZERpc3BsYXlMaXN0SGFuZGxlLmNwcAogU2hhcmVkL1NoYXJlZFN0cmluZ0hhc2hTdG9yZS5j
cHAKIFNoYXJlZC9TaGFyZWRTdHJpbmdIYXNoVGFibGVSZWFkT25seS5jcHAKIFNoYXJlZC9TaGFy
ZWRTdHJpbmdIYXNoVGFibGUuY3BwCkBAIC01NjAsNiArNTYwLDcgQEAgV2ViUHJvY2Vzcy9NZWRp
YVN0cmVhbS9NZWRpYURldmljZVNhbmRib3hFeHRlbnNpb25zLmNwcAogV2ViUHJvY2Vzcy9NZWRp
YVN0cmVhbS9Vc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXIuY3BwCiAKIFdlYlByb2Nl
c3MvR1BVL0dQVVByb2Nlc3NDb25uZWN0aW9uLmNwcAorV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3Mv
RGlzcGxheUxpc3RXcml0ZXJIYW5kbGUuY3BwCiBXZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9JbWFn
ZUJ1ZmZlclNoYXJlYWJsZUJpdG1hcEJhY2tlbmQuY3BwCiBXZWJQcm9jZXNzL0dQVS9ncmFwaGlj
cy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkuY3BwCiBXZWJQcm9jZXNzL0dQVS9ncmFwaGlj
cy9SZW1vdGVSZXNvdXJjZUNhY2hlUHJveHkuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYktpdC9XZWJLaXQu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBjMDI3NDk0YjczYWNjZWM1ZWZkODFjNjk0
ZDNhODUzYjRlZGVmMGNhLi4wZWU5OTcxMDE5NjAzNmIzZmExYmZlMzEzMTUzYjg5ZjI4ODg3ZDM5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oK
QEAgLTE4NzEsNiArMTg3MSw4IEBACiAJCUU1QkVGNjgyMjEzMEM0ODAwMEYzMTExMSAvKiBXZWJE
YXRhTGlzdFN1Z2dlc3Rpb25zRHJvcGRvd25JT1MuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEU1QkVGNjgwMjEzMEM0N0YwMEYzMTExMSAvKiBXZWJEYXRh
TGlzdFN1Z2dlc3Rpb25zRHJvcGRvd25JT1MuaCAqLzsgfTsKIAkJRTVDQjA3REMyMEUxNjc4RjAw
MjJDMTgzIC8qIFdLRm9ybUNvbG9yQ29udHJvbC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gRTVDQjA3REEyMEUxNjc4RjAwMjJDMTgzIC8qIFdLRm9ybUNv
bG9yQ29udHJvbC5oICovOyB9OwogCQlFRDgyQTdGMjEyOEM2RkFGMDA0NDc3QjMgLyogV0tCdW5k
bGVQYWdlT3ZlcmxheS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gMUEyMkYwRkYxMjg5RkNEOTAwODVFNzRGIC8qIFdLQnVuZGxlUGFnZU92ZXJsYXkuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQlGNDA5NENC
RDI1NTMwNTNEMDAzRDczRTMgLyogRGlzcGxheUxpc3RSZWFkZXJIYW5kbGUuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY0MDk0Q0JCMjU1MzA0QUYwMDNE
NzNFMyAvKiBEaXNwbGF5TGlzdFJlYWRlckhhbmRsZS5oICovOyB9OworCQlGNDA5NENCRTI1NTMw
NTQwMDAzRDczRTMgLyogRGlzcGxheUxpc3RXcml0ZXJIYW5kbGUuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY0MDk0Q0I5MjU1MzA0N0UwMDNENzNFMyAv
KiBEaXNwbGF5TGlzdFdyaXRlckhhbmRsZS5oICovOyB9OwogCQlGNDA5QkExODFFNkU2NEJDMDA5
REEyOEUgLyogV0tEcmFnRGVzdGluYXRpb25BY3Rpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY0MDlCQTE3MUU2RTY0QjMwMDlEQTI4RSAvKiBXS0Ry
YWdEZXN0aW5hdGlvbkFjdGlvbi5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CiAJCUY0MkQ2MzQxMjJBMEVGREYwMEQyRkIzQSAvKiBXZWJBdXRvY29ycmVj
dGlvbkRhdGEuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEY0MkQ2MzNGMjJBMEVGRDMwMEQyRkIzQSAvKiBXZWJBdXRvY29ycmVjdGlvbkRhdGEuaCAqLzsg
fTsKIAkJRjQzMEU5NDIyMjQ3MzM1RjAwNUZFMDUzIC8qIFdlYnNpdGVNZXRhVmlld3BvcnRQb2xp
Y3kuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY0MzBF
OTQxMjI0NzMyQTkwMDVGRTA1MyAvKiBXZWJzaXRlTWV0YVZpZXdwb3J0UG9saWN5LmggKi87IH07
CkBAIC01NDcwLDYgKzU0NzIsMTAgQEAKIAkJRUNBNjgwRDMxRTY5MDRCNTAwNzMxRDIwIC8qIEV4
dHJhUHJpdmF0ZVN5bWJvbHNGb3JUQVBJLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IEV4dHJhUHJpdmF0ZVN5bWJvbHNGb3JUQVBJLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCUVDQkZDMURCMUU2QTRENjYwMDAzMDBDNyAvKiBFeHRyYVB1YmxpY1N5bWJvbHNGb3JU
QVBJLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEV4dHJhUHVibGljU3ltYm9sc0ZvclRBUEkuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRjAzNjk3ODcxNUY0QkYwNTAwQzNBODBFIC8qIFdlYkNv
bG9yUGlja2VyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdlYkNv
bG9yUGlja2VyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRjQwOTRDQjkyNTUz
MDQ3RTAwM0Q3M0UzIC8qIERpc3BsYXlMaXN0V3JpdGVySGFuZGxlLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IERpc3BsYXlMaXN0V3JpdGVySGFuZGxlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CUY0MDk0Q0JBMjU1MzA0N0UwMDNENzNFMyAvKiBEaXNwbGF5TGlzdFdyaXRlckhhbmRsZS5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBEaXNwbGF5TGlzdFdyaXRlckhhbmRsZS5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCUY0MDk0Q0JCMjU1MzA0QUYwMDNENzNFMyAvKiBEaXNwbGF5
TGlzdFJlYWRlckhhbmRsZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBEaXNwbGF5TGlzdFJlYWRlckhhbmRs
ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlGNDA5NENCQzI1NTMwNEFGMDAzRDcz
RTMgLyogRGlzcGxheUxpc3RSZWFkZXJIYW5kbGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRGlz
cGxheUxpc3RSZWFkZXJIYW5kbGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlG
NDA5QkExNzFFNkU2NEIzMDA5REEyOEUgLyogV0tEcmFnRGVzdGluYXRpb25BY3Rpb24uaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0tEcmFnRGVzdGluYXRpb25BY3Rpb24uaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRjQwRDFCNjgyMjBCREMwRjAwQjQ5QTAxIC8q
IFdlYkF1dG9jb3JyZWN0aW9uQ29udGV4dC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBXZWJBdXRvY29ycmVj
dGlvbkNvbnRleHQuaDsgcGF0aCA9IGlvcy9XZWJBdXRvY29ycmVjdGlvbkNvbnRleHQuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRjQxMDU2NjEyMTMwNjk5QTAwOTIyODFEIC8qIEFQ
SUF0dGFjaG1lbnRDb2NvYS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IEFQSUF0dGFjaG1lbnRD
b2NvYS5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTU0OTIsNyArNTQ5OCw2IEBA
CiAJCUY0OTZBNDJGMUY1OEEyNzIwMDRDMTc1NyAvKiBEcmFnRHJvcEludGVyYWN0aW9uU3RhdGUu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBuYW1lID0gRHJhZ0Ryb3BJbnRlcmFjdGlvblN0YXRlLmg7IHBhdGggPSBpb3Mv
RHJhZ0Ryb3BJbnRlcmFjdGlvblN0YXRlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CUY0OTZBNDMwMUY1OEEyNzIwMDRDMTc1NyAvKiBEcmFnRHJvcEludGVyYWN0aW9uU3RhdGUubW0g
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5vYmpjcHA7IG5hbWUgPSBEcmFnRHJvcEludGVyYWN0aW9uU3RhdGUubW07IHBhdGgg
PSBpb3MvRHJhZ0Ryb3BJbnRlcmFjdGlvblN0YXRlLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQlGNEE2RDZCQjI1NENBM0U5MDBCNjVGQUEgLyogU2hhcmVkRGlzcGxheUxpc3RIYW5k
bGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gU2hhcmVkRGlzcGxheUxpc3RIYW5kbGUuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKLQkJRjRBNkQ2QkQyNTRDQTUyMjAwQjY1RkFBIC8qIFNoYXJlZERp
c3BsYXlMaXN0SGFuZGxlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNoYXJlZERpc3BsYXlMaXN0
SGFuZGxlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRjRBQzY1NUUyMkEzMTQw
RTAwQTA1NjA3IC8qIFdlYlByZWZlcmVuY2VzRGVmYXVsdFZhbHVlc0lPUy5tbSAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgbmFtZSA9IFdlYlByZWZlcmVuY2VzRGVmYXVsdFZhbHVl
c0lPUy5tbTsgcGF0aCA9IGlvcy9XZWJQcmVmZXJlbmNlc0RlZmF1bHRWYWx1ZXNJT1MubW07IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUY0QjM3OEQwMjFEREJCQUIwMDk1QTM3OCAvKiBX
ZWJVbmRvU3RlcElELmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYlVuZG9TdGVwSUQuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRjRDQjA5RTQyMjVENUEwMzAwODkxNDg3IC8qIFdlYnNpdGVN
ZWRpYVNvdXJjZVBvbGljeS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJzaXRlTWVkaWFTb3VyY2VQb2xp
Y3kuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTYyMDAsNyArNjIwNSw2IEBACiAJ
CQkJMUE2NDIwRTMxMkRDRTJGRjAwQ0FBRTJDIC8qIFNoYXJlYWJsZUJpdG1hcC5oICovLAogCQkJ
CTUxMjE3NDVFMTY0QzIwRTMwMDM3QTVDMSAvKiBTaGFyZWFibGVSZXNvdXJjZS5jcHAgKi8sCiAJ
CQkJNTEyMTc0NUYxNjRDMjBFMzAwMzdBNUMxIC8qIFNoYXJlYWJsZVJlc291cmNlLmggKi8sCi0J
CQkJRjRBNkQ2QkQyNTRDQTUyMjAwQjY1RkFBIC8qIFNoYXJlZERpc3BsYXlMaXN0SGFuZGxlLmNw
cCAqLywKIAkJCQlGNEE2RDZCQjI1NENBM0U5MDBCNjVGQUEgLyogU2hhcmVkRGlzcGxheUxpc3RI
YW5kbGUuaCAqLywKIAkJCQk4MzEzRjdFQTFGN0RBRTA0MDBCOTQ0RUIgLyogU2hhcmVkU3RyaW5n
SGFzaFN0b3JlLmNwcCAqLywKIAkJCQk4MzEzRjdFOTFGN0RBRTAzMDBCOTQ0RUIgLyogU2hhcmVk
U3RyaW5nSGFzaFN0b3JlLmggKi8sCkBAIC04MTc1LDYgKzgxNzksOCBAQAogCQkJaXNhID0gUEJY
R3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKIAkJCQk3MjdBN0YzMzI0MDc4NTI3MDA0RDI5MzEgLyog
Y29jb2EgKi8sCisJCQkJRjQwOTRDQkEyNTUzMDQ3RTAwM0Q3M0UzIC8qIERpc3BsYXlMaXN0V3Jp
dGVySGFuZGxlLmNwcCAqLywKKwkJCQlGNDA5NENCOTI1NTMwNDdFMDAzRDczRTMgLyogRGlzcGxh
eUxpc3RXcml0ZXJIYW5kbGUuaCAqLywKIAkJCQk3MjdBN0YzOTI0MDc4OEYxMDA0RDI5MzEgLyog
SW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxlLmggKi8sCiAJCQkJNzI3QTdGMzcyNDA3ODhGMDAwNEQy
OTMxIC8qIEltYWdlQnVmZmVyU2hhcmVhYmxlQml0bWFwQmFja2VuZC5jcHAgKi8sCiAJCQkJNzI3
QTdGMzYyNDA3ODhGMDAwNEQyOTMxIC8qIEltYWdlQnVmZmVyU2hhcmVhYmxlQml0bWFwQmFja2Vu
ZC5oICovLApAQCAtODE5NCw2ICs4MjAwLDggQEAKIAkJNTUwNjQwQTEyNDA3MUEyOTAwQUFFMDQ1
IC8qIGdyYXBoaWNzICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgK
KwkJCQlGNDA5NENCQzI1NTMwNEFGMDAzRDczRTMgLyogRGlzcGxheUxpc3RSZWFkZXJIYW5kbGUu
Y3BwICovLAorCQkJCUY0MDk0Q0JCMjU1MzA0QUYwMDNENzNFMyAvKiBEaXNwbGF5TGlzdFJlYWRl
ckhhbmRsZS5oICovLAogCQkJCTU1QUQwOTQzMjQwOEEwRTYwMERFNEQyRiAvKiBQbGF0Zm9ybVJl
bW90ZUltYWdlQnVmZmVyLmggKi8sCiAJCQkJNTVBRDA5NDIyNDA4QTAyRTAwREU0RDJGIC8qIFJl
bW90ZUltYWdlQnVmZmVyLmggKi8sCiAJCQkJNTUwNjQwQTIyNDA3MUE2MTAwQUFFMDQ1IC8qIFJl
bW90ZVJlbmRlcmluZ0JhY2tlbmQuY3BwICovLApAQCAtMTEwMzUsNiArMTEwNDMsOCBAQAogCQkJ
CTgzODkxQjZDMUE2OEMzMEIwMDMwRjM4NiAvKiBEaWFnbm9zdGljTG9nZ2luZ0NsaWVudC5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJQzE4MTczNjEyMDU4NDI0NzAwREZEQTY1IC8qIERpc3BsYXlMaW5r
LmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjE4OUNBQzI0NzQ5RjJGMDBFNThEODEgLyogRGlzcGxh
eUxpbmtPYnNlcnZlcklELmggaW4gSGVhZGVycyAqLywKKwkJCQlGNDA5NENCRDI1NTMwNTNEMDAz
RDczRTMgLyogRGlzcGxheUxpc3RSZWFkZXJIYW5kbGUuaCBpbiBIZWFkZXJzICovLAorCQkJCUY0
MDk0Q0JFMjU1MzA1NDAwMDNENzNFMyAvKiBEaXNwbGF5TGlzdFdyaXRlckhhbmRsZS5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJNUMxNDI3MDIxQzIzRjg0QzAwRDQxMTgzIC8qIERvd25sb2FkLmggaW4g
SGVhZGVycyAqLywKIAkJCQk1QzE0MjcwNTFDMjNGODRDMDBENDExODMgLyogRG93bmxvYWRJRC5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJNUMxNDI3MDcxQzIzRjg0QzAwRDQxMTgzIC8qIERvd25sb2Fk
TWFuYWdlci5oIGluIEhlYWRlcnMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvR1BVL2dyYXBoaWNzL0Rpc3BsYXlMaXN0V3JpdGVySGFuZGxlLmNwcCBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvRGlzcGxheUxpc3RXcml0ZXJIYW5kbGUuY3Bw
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLmI1YjdjMDgwMjNkMzU3OGRhNDY1NGQ1MTJhNWY4ZDVlYTM1YjJiOTAKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL0Rp
c3BsYXlMaXN0V3JpdGVySGFuZGxlLmNwcApAQCAtMCwwICsxLDgzIEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05U
UklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1Ig
SVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
I2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkRpc3BsYXlMaXN0V3JpdGVySGFuZGxlLmgi
CisKKyNpbmNsdWRlIDx3dGYvQ2hlY2tlZEFyaXRobWV0aWMuaD4KKworbmFtZXNwYWNlIFdlYktp
dCB7Cit1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKKworc2l6ZV90IERpc3BsYXlMaXN0V3JpdGVy
SGFuZGxlOjphZHZhbmNlKHNpemVfdCBhbW91bnQpCit7CisgICAgQ2hlY2tlZFNpemUgY2hlY2tl
ZFdyaXRhYmxlT2Zmc2V0ID0gbV93cml0YWJsZU9mZnNldDsKKyAgICBjaGVja2VkV3JpdGFibGVP
ZmZzZXQgKz0gYW1vdW50OworICAgIGlmIChVTkxJS0VMWShjaGVja2VkV3JpdGFibGVPZmZzZXQu
aGFzT3ZlcmZsb3dlZCgpKSkKKyAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsK
KworICAgIGF1dG8gbG9ja2VyID0gU2hhcmVkRGlzcGxheUxpc3RIYW5kbGU6OkxvY2sgeyAqdGhp
cyB9OworICAgIENoZWNrZWRTaXplIGNoZWNrZWRVbnJlYWRCeXRlcyA9IGhlYWRlcigpLnVucmVh
ZEJ5dGVzOworICAgIGNoZWNrZWRVbnJlYWRCeXRlcyArPSBhbW91bnQ7CisgICAgaWYgKFVOTElL
RUxZKGNoZWNrZWRVbnJlYWRCeXRlcy5oYXNPdmVyZmxvd2VkKCkpKQorICAgICAgICBSRUxFQVNF
X0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworCisgICAgbV93cml0YWJsZU9mZnNldCA9IGNoZWNrZWRX
cml0YWJsZU9mZnNldC51bnNhZmVHZXQoKTsKKyAgICBoZWFkZXIoKS51bnJlYWRCeXRlcyA9IGNo
ZWNrZWRVbnJlYWRCeXRlcy51bnNhZmVHZXQoKTsKKyAgICByZXR1cm4gY2hlY2tlZFVucmVhZEJ5
dGVzLnVuc2FmZUdldCgpOworfQorCitzaXplX3QgRGlzcGxheUxpc3RXcml0ZXJIYW5kbGU6OmF2
YWlsYWJsZUNhcGFjaXR5KCkgY29uc3QKK3sKKyAgICBpZiAoVU5MSUtFTFkoc2hhcmVkTWVtb3J5
KCkuc2l6ZSgpIDwgd3JpdGFibGVPZmZzZXQoKSkpCisgICAgICAgIFJFTEVBU0VfQVNTRVJUX05P
VF9SRUFDSEVEKCk7CisKKyAgICByZXR1cm4gc2hhcmVkTWVtb3J5KCkuc2l6ZSgpIC0gd3JpdGFi
bGVPZmZzZXQoKTsKK30KKworRGlzcGxheUxpc3Q6Okl0ZW1CdWZmZXJIYW5kbGUgRGlzcGxheUxp
c3RXcml0ZXJIYW5kbGU6OmNyZWF0ZUhhbmRsZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIHsKKyAg
ICAgICAgaWRlbnRpZmllcigpLAorICAgICAgICBkYXRhKCkgKyB3cml0YWJsZU9mZnNldCgpLAor
ICAgICAgICBhdmFpbGFibGVDYXBhY2l0eSgpCisgICAgfTsKK30KKworYm9vbCBEaXNwbGF5TGlz
dFdyaXRlckhhbmRsZTo6cmVzZXRXcml0YWJsZU9mZnNldElmUG9zc2libGUoKQoreworICAgIGlm
IChtX3dyaXRhYmxlT2Zmc2V0IDw9IFNoYXJlZERpc3BsYXlMaXN0SGFuZGxlOjpyZXNlcnZlZENh
cGFjaXR5QXRTdGFydCkgeworICAgICAgICBSRUxFQVNFX0FTU0VSVChtX3dyaXRhYmxlT2Zmc2V0
ID09IFNoYXJlZERpc3BsYXlMaXN0SGFuZGxlOjpyZXNlcnZlZENhcGFjaXR5QXRTdGFydCk7Cisg
ICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKworICAgIGlmICh1bnJlYWRCeXRlcygpKQorICAg
ICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBtX3dyaXRhYmxlT2Zmc2V0ID0gU2hhcmVkRGlzcGxh
eUxpc3RIYW5kbGU6OnJlc2VydmVkQ2FwYWNpdHlBdFN0YXJ0OworICAgIHJldHVybiB0cnVlOwor
fQorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9HUFUvZ3JhcGhpY3MvRGlzcGxheUxpc3RXcml0ZXJIYW5kbGUuaCBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvRGlzcGxheUxpc3RXcml0ZXJIYW5kbGUuaApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi43NWY2NTA4NGQwMGY4OTExN2QwYTFlMDY1MDI0YWVkOTMyNTEzM2ZmCi0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9EaXNw
bGF5TGlzdFdyaXRlckhhbmRsZS5oCkBAIC0wLDAgKzEsNTkgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJV
VE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMg
Q09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJh
Z21hIG9uY2UKKworI2luY2x1ZGUgIlNoYXJlZERpc3BsYXlMaXN0SGFuZGxlLmgiCisjaW5jbHVk
ZSA8d3RmL0Zhc3RNYWxsb2MuaD4KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIERpc3Bs
YXlMaXN0V3JpdGVySGFuZGxlIDogcHVibGljIFNoYXJlZERpc3BsYXlMaXN0SGFuZGxlIHsKKyAg
ICBXVEZfTUFLRV9OT05DT1BZQUJMRShEaXNwbGF5TGlzdFdyaXRlckhhbmRsZSk7IFdURl9NQUtF
X0ZBU1RfQUxMT0NBVEVEOworcHVibGljOgorICAgIHN0YXRpYyBSZWY8RGlzcGxheUxpc3RXcml0
ZXJIYW5kbGU+IGNyZWF0ZShXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbUJ1ZmZlcklkZW50aWZp
ZXIgaWRlbnRpZmllciwgUmVmPFNoYXJlZE1lbW9yeT4mJiBzaGFyZWRNZW1vcnkpCisgICAgewor
ICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBEaXNwbGF5TGlzdFdyaXRlckhhbmRsZShpZGVu
dGlmaWVyLCBXVEZNb3ZlKHNoYXJlZE1lbW9yeSkpKTsKKyAgICB9CisKKyAgICBzaXplX3Qgd3Jp
dGFibGVPZmZzZXQoKSBjb25zdCB7IHJldHVybiBtX3dyaXRhYmxlT2Zmc2V0OyB9CisgICAgc2l6
ZV90IGF2YWlsYWJsZUNhcGFjaXR5KCkgY29uc3Q7CisKKyAgICBib29sIHJlc2V0V3JpdGFibGVP
ZmZzZXRJZlBvc3NpYmxlKCk7CisKKyAgICBzaXplX3QgYWR2YW5jZShzaXplX3QgYW1vdW50KSBv
dmVycmlkZTsKKyAgICBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbUJ1ZmZlckhhbmRsZSBjcmVh
dGVIYW5kbGUoKSBjb25zdDsKKworcHJpdmF0ZToKKyAgICBEaXNwbGF5TGlzdFdyaXRlckhhbmRs
ZShXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbUJ1ZmZlcklkZW50aWZpZXIgaWRlbnRpZmllciwg
UmVmPFNoYXJlZE1lbW9yeT4mJiBzaGFyZWRNZW1vcnkpCisgICAgICAgIDogU2hhcmVkRGlzcGxh
eUxpc3RIYW5kbGUoaWRlbnRpZmllciwgV1RGTW92ZShzaGFyZWRNZW1vcnkpKQorICAgICAgICAs
IG1fd3JpdGFibGVPZmZzZXQoU2hhcmVkRGlzcGxheUxpc3RIYW5kbGU6OnJlc2VydmVkQ2FwYWNp
dHlBdFN0YXJ0KQorICAgIHsKKyAgICB9CisKKyAgICBzaXplX3QgbV93cml0YWJsZU9mZnNldCB7
IDAgfTsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVJbWFnZUJ1ZmZlclByb3h5LmggYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUltYWdlQnVmZmVyUHJv
eHkuaAppbmRleCA1OTg1N2ZmMDdhNWFjMmY0YjMyYzU2NjMyNTE0YjQ1ZGUxMDE5N2I4Li4wMWU1
M2UxNWM0YjFkMWY1MGFmZDcwYmRjYzliMTY4NDQ5NmU1ZDYzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUltYWdlQnVmZmVyUHJveHkuaAor
KysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUltYWdlQnVm
ZmVyUHJveHkuaApAQCAtMzQsNiArMzQsNyBAQAogI2luY2x1ZGUgPFdlYkNvcmUvRGlzcGxheUxp
c3RJbWFnZUJ1ZmZlci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRGlzcGxheUxpc3RJdGVtcy5oPgog
I2luY2x1ZGUgPFdlYkNvcmUvRGlzcGxheUxpc3RSZWNvcmRlci5oPgorI2luY2x1ZGUgPHd0Zi9T
eXN0ZW1UcmFjaW5nLmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCkBAIC0xMzksNiArMTQwLDcg
QEAgcHJvdGVjdGVkOgogCiAgICAgdm9pZCBmbHVzaERyYXdpbmdDb250ZXh0KCkgb3ZlcnJpZGUK
ICAgICB7CisgICAgICAgIFRyYWNlU2NvcGUgdHJhY2luZ1Njb3BlKEZsdXNoUmVtb3RlSW1hZ2VC
dWZmZXJTdGFydCwgRmx1c2hSZW1vdGVJbWFnZUJ1ZmZlckVuZCk7CiAgICAgICAgIGZsdXNoRHJh
d2luZ0NvbnRleHRBbmRDb21taXQoKTsKICAgICAgICAgdGltZW91dFdhaXRGb3JGbHVzaERpc3Bs
YXlMaXN0V2FzQ29tbWl0dGVkKCk7CiAgICAgfQpAQCAtMTUyLDggKzE1NCw5IEBAIHByb3RlY3Rl
ZDoKICAgICAgICAgaWYgKGRpc3BsYXlMaXN0LmlzRW1wdHkoKSkKICAgICAgICAgICAgIHJldHVy
bjsKIAotICAgICAgICBUcmFjZVNjb3BlIHRyYWNpbmdTY29wZShGbHVzaFJlbW90ZUltYWdlQnVm
ZmVyU3RhcnQsIEZsdXNoUmVtb3RlSW1hZ2VCdWZmZXJFbmQsIDEpOwotICAgICAgICBtX3NlbnRG
bHVzaElkZW50aWZpZXIgPSBtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS0+Zmx1c2hEaXNw
bGF5TGlzdEFuZENvbW1pdChkaXNwbGF5TGlzdCwgbV9yZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZp
ZXIpOworICAgICAgICBtX3NlbnRGbHVzaElkZW50aWZpZXIgPSBXZWJDb3JlOjpEaXNwbGF5TGlz
dDo6Rmx1c2hJZGVudGlmaWVyOjpnZW5lcmF0ZSgpOworICAgICAgICBkaXNwbGF5TGlzdC50ZW1w
bGF0ZSBhcHBlbmQ8V2ViQ29yZTo6RGlzcGxheUxpc3Q6OkZsdXNoQ29udGV4dD4obV9zZW50Rmx1
c2hJZGVudGlmaWVyKTsKKyAgICAgICAgbV9yZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHktPnN1
Ym1pdERpc3BsYXlMaXN0KGRpc3BsYXlMaXN0LCBtX3JlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmll
cik7CiAgICAgICAgIG1faXRlbUNvdW50SW5DdXJyZW50RGlzcGxheUxpc3QgPSAwOwogICAgICAg
ICBkaXNwbGF5TGlzdC5jbGVhcigpOwogICAgIH0KQEAgLTE2Myw3ICsxNjYsNiBAQCBwcm90ZWN0
ZWQ6CiAgICAgICAgIGlmICghbV9yZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkgfHwgZGlzcGxh
eUxpc3QuaXNFbXB0eSgpKQogICAgICAgICAgICAgcmV0dXJuOwogCi0gICAgICAgIFRyYWNlU2Nv
cGUgdHJhY2luZ1Njb3BlKEZsdXNoUmVtb3RlSW1hZ2VCdWZmZXJTdGFydCwgRmx1c2hSZW1vdGVJ
bWFnZUJ1ZmZlckVuZCk7CiAgICAgICAgIG1fcmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5LT5z
dWJtaXREaXNwbGF5TGlzdChkaXNwbGF5TGlzdCwgbV9yZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZp
ZXIpOwogICAgIH0KIApAQCAtMTgyLDcgKzE4NCw3IEBAIHByb3RlY3RlZDoKICAgICBXZWJDb3Jl
OjpEaXNwbGF5TGlzdDo6SXRlbUJ1ZmZlckhhbmRsZSBjcmVhdGVJdGVtQnVmZmVyKHNpemVfdCBj
YXBhY2l0eSkgb3ZlcnJpZGUKICAgICB7CiAgICAgICAgIGlmIChtX3JlbW90ZVJlbmRlcmluZ0Jh
Y2tlbmRQcm94eSkKLSAgICAgICAgICAgIHJldHVybiBtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQ
cm94eS0+Y3JlYXRlSXRlbUJ1ZmZlcihjYXBhY2l0eSk7CisgICAgICAgICAgICByZXR1cm4gbV9y
ZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHktPmNyZWF0ZUl0ZW1CdWZmZXIoY2FwYWNpdHksIG1f
cmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKTsKIAogICAgICAgICBBU1NFUlRfTk9UX1JFQUNI
RUQoKTsKICAgICAgICAgcmV0dXJuIHsgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5LmNwcCBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2Vu
ZFByb3h5LmNwcAppbmRleCA4ZDg2MTViOGE5NmM3NDQ3MGIwOTQzN2Q4Y2Q3YzdhMTY1YmM2NWRh
Li5iMWMwM2IzYWRhODc0ODQyZGMxNzMwM2RjYTQxOTkwOTNiMDUzOGZhIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tl
bmRQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9S
ZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkuY3BwCkBAIC0yOCwxMyArMjgsMTMgQEAKIAogI2lm
IEVOQUJMRShHUFVfUFJPQ0VTUykKIAorI2luY2x1ZGUgIkRpc3BsYXlMaXN0V3JpdGVySGFuZGxl
LmgiCiAjaW5jbHVkZSAiR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oIgogI2luY2x1ZGUgIkdQ
VVByb2Nlc3NDb25uZWN0aW9uLmgiCiAjaW5jbHVkZSAiSW1hZ2VEYXRhUmVmZXJlbmNlLmgiCiAj
aW5jbHVkZSAiUGxhdGZvcm1SZW1vdGVJbWFnZUJ1ZmZlclByb3h5LmgiCiAjaW5jbHVkZSAiUmVt
b3RlUmVuZGVyaW5nQmFja2VuZE1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiUmVtb3RlUmVuZGVyaW5n
QmFja2VuZFByb3h5TWVzc2FnZXMuaCIKLSNpbmNsdWRlICJTaGFyZWREaXNwbGF5TGlzdEhhbmRs
ZS5oIgogI2luY2x1ZGUgIlNoYXJlZE1lbW9yeS5oIgogI2luY2x1ZGUgIldlYlByb2Nlc3MuaCIK
IApAQCAtMTE1LDE4ICsxMTUsMjggQEAgUmVmUHRyPEltYWdlRGF0YT4gUmVtb3RlUmVuZGVyaW5n
QmFja2VuZFByb3h5OjpnZXRJbWFnZURhdGEoQWxwaGFQcmVtdWx0aXBsaWNhdGkKICAgICByZXR1
cm4gaW1hZ2VEYXRhUmVmZXJlbmNlLmJ1ZmZlcigpOwogfQogCi12b2lkIFJlbW90ZVJlbmRlcmlu
Z0JhY2tlbmRQcm94eTo6c3VibWl0RGlzcGxheUxpc3QoY29uc3QgRGlzcGxheUxpc3Q6OkRpc3Bs
YXlMaXN0JiBkaXNwbGF5TGlzdCwgUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyIHJlbmRlcmlu
Z1Jlc291cmNlSWRlbnRpZmllcikKK3ZvaWQgUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5Ojpz
dWJtaXREaXNwbGF5TGlzdChjb25zdCBEaXNwbGF5TGlzdDo6RGlzcGxheUxpc3QmIGRpc3BsYXlM
aXN0LCBSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgZGVzdGluYXRpb25CdWZmZXJJZGVudGlm
aWVyKQogewotICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OlN1Ym1p
dERpc3BsYXlMaXN0KHsgZGlzcGxheUxpc3QgfSwgcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVy
KSwgbV9yZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllcik7Ci0gICAgbV9zaGFyZWRJdGVtQnVmZmVy
cy5jbGVhcigpOwotfQorICAgIE9wdGlvbmFsPHN0ZDo6cGFpcjxEaXNwbGF5TGlzdDo6SXRlbUJ1
ZmZlcklkZW50aWZpZXIsIHNpemVfdD4+IGlkZW50aWZpZXJBbmRPZmZzZXRGb3JXYWtlVXBNZXNz
YWdlOworICAgIGJvb2wgaXNGaXJzdEhhbmRsZSA9IHRydWU7CiAKLURpc3BsYXlMaXN0OjpGbHVz
aElkZW50aWZpZXIgUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5OjpmbHVzaERpc3BsYXlMaXN0
QW5kQ29tbWl0KGNvbnN0IERpc3BsYXlMaXN0OjpEaXNwbGF5TGlzdCYgZGlzcGxheUxpc3QsIFJl
bmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciByZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpCi17
Ci0gICAgYXV0byBzZW50Rmx1c2hJZGVudGlmaWVyID0gRGlzcGxheUxpc3Q6OkZsdXNoSWRlbnRp
Zmllcjo6Z2VuZXJhdGUoKTsKLSAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVSZW5kZXJpbmdCYWNr
ZW5kOjpGbHVzaERpc3BsYXlMaXN0QW5kQ29tbWl0KHsgZGlzcGxheUxpc3QgfSwgc2VudEZsdXNo
SWRlbnRpZmllciwgcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKSwgbV9yZW5kZXJpbmdCYWNr
ZW5kSWRlbnRpZmllcik7Ci0gICAgbV9zaGFyZWRJdGVtQnVmZmVycy5jbGVhcigpOwotICAgIHJl
dHVybiBzZW50Rmx1c2hJZGVudGlmaWVyOworICAgIGRpc3BsYXlMaXN0LmZvckVhY2hJdGVtQnVm
ZmVyKFsmXSAoYXV0byYgaGFuZGxlKSB7CisgICAgICAgIG1faWRlbnRpZmllcnNPZkhhbmRsZXNB
dmFpbGFibGVGb3JXcml0aW5nLmFkZChoYW5kbGUuaWRlbnRpZmllcik7CisKKyAgICAgICAgYXV0
byogc2hhcmVkSGFuZGxlID0gbV9zaGFyZWREaXNwbGF5TGlzdEhhbmRsZXMuZ2V0KGhhbmRsZS5p
ZGVudGlmaWVyKTsKKyAgICAgICAgUkVMRUFTRV9BU1NFUlRfV0lUSF9NRVNTQUdFKHNoYXJlZEhh
bmRsZSwgIiVzIGZhaWxlZCB0byBmaW5kIHNoYXJlZCBkaXNwbGF5IGxpc3QiLCBfX1BSRVRUWV9G
VU5DVElPTl9fKTsKKworICAgICAgICBib29sIHVucmVhZENvdW50V2FzRW1wdHkgPSBzaGFyZWRI
YW5kbGUtPmFkdmFuY2UoaGFuZGxlLmNhcGFjaXR5KSA9PSBoYW5kbGUuY2FwYWNpdHk7CisgICAg
ICAgIGlmIChpc0ZpcnN0SGFuZGxlICYmIHVucmVhZENvdW50V2FzRW1wdHkpCisgICAgICAgICAg
ICBpZGVudGlmaWVyQW5kT2Zmc2V0Rm9yV2FrZVVwTWVzc2FnZSA9IHt7IGhhbmRsZS5pZGVudGlm
aWVyLCBoYW5kbGUuZGF0YSAtIHNoYXJlZEhhbmRsZS0+ZGF0YSgpIH19OworCisgICAgICAgIGlz
Rmlyc3RIYW5kbGUgPSBmYWxzZTsKKyAgICB9KTsKKworICAgIGlmIChpZGVudGlmaWVyQW5kT2Zm
c2V0Rm9yV2FrZVVwTWVzc2FnZSkgeworICAgICAgICBhdXRvIFtpZGVudGlmaWVyLCBvZmZzZXRd
ID0gKmlkZW50aWZpZXJBbmRPZmZzZXRGb3JXYWtlVXBNZXNzYWdlOworICAgICAgICBzZW5kKE1l
c3NhZ2VzOjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpXYWtlVXBBbmRBcHBseURpc3BsYXlMaXN0
KGlkZW50aWZpZXIsIG9mZnNldCwgZGVzdGluYXRpb25CdWZmZXJJZGVudGlmaWVyKSwgbV9yZW5k
ZXJpbmdCYWNrZW5kSWRlbnRpZmllcik7CisgICAgfQogfQogCiB2b2lkIFJlbW90ZVJlbmRlcmlu
Z0JhY2tlbmRQcm94eTo6cmVsZWFzZVJlbW90ZVJlc291cmNlKFJlbmRlcmluZ1Jlc291cmNlSWRl
bnRpZmllciByZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpCkBAIC0xNTksMjEgKzE2OSw1NiBA
QCB2b2lkIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eTo6Zmx1c2hEaXNwbGF5TGlzdFdhc0Nv
bW1pdHRlZChEaXNwbGF5TGlzdDo6Rmx1cwogICAgICAgICBkb3duY2FzdDxVbmFjY2VsZXJhdGVk
UmVtb3RlSW1hZ2VCdWZmZXJQcm94eT4oKmltYWdlQnVmZmVyKS5jb21taXRGbHVzaERpc3BsYXlM
aXN0KGZsdXNoSWRlbnRpZmllcik7CiB9CiAKLURpc3BsYXlMaXN0OjpJdGVtQnVmZmVySGFuZGxl
IFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eTo6Y3JlYXRlSXRlbUJ1ZmZlcihzaXplX3QgY2Fw
YWNpdHkpCit2b2lkIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eTo6dXBkYXRlUmV1c2FibGVI
YW5kbGVzKCkKIHsKKyAgICBmb3IgKGF1dG8gaWRlbnRpZmllciA6IG1faWRlbnRpZmllcnNPZkhh
bmRsZXNBdmFpbGFibGVGb3JXcml0aW5nKSB7CisgICAgICAgIGF1dG8qIGhhbmRsZSA9IG1fc2hh
cmVkRGlzcGxheUxpc3RIYW5kbGVzLmdldChpZGVudGlmaWVyKTsKKyAgICAgICAgaWYgKCFoYW5k
bGUtPnJlc2V0V3JpdGFibGVPZmZzZXRJZlBvc3NpYmxlKCkpCisgICAgICAgICAgICBjb250aW51
ZTsKKworICAgICAgICBpZiAobV9pZGVudGlmaWVyc09mUmV1c2FibGVIYW5kbGVzLmNvbnRhaW5z
KGlkZW50aWZpZXIpKQorICAgICAgICAgICAgY29udGludWU7CisKKyAgICAgICAgbV9pZGVudGlm
aWVyc09mUmV1c2FibGVIYW5kbGVzLmFwcGVuZChpZGVudGlmaWVyKTsKKyAgICB9Cit9CisKK0Rp
c3BsYXlMaXN0OjpJdGVtQnVmZmVySGFuZGxlIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eTo6
Y3JlYXRlSXRlbUJ1ZmZlcihzaXplX3QgY2FwYWNpdHksIFJlbmRlcmluZ1Jlc291cmNlSWRlbnRp
ZmllciBkZXN0aW5hdGlvbkJ1ZmZlcklkZW50aWZpZXIpCit7CisgICAgdXBkYXRlUmV1c2FibGVI
YW5kbGVzKCk7CisKKyAgICB3aGlsZSAoIW1faWRlbnRpZmllcnNPZlJldXNhYmxlSGFuZGxlcy5p
c0VtcHR5KCkpIHsKKyAgICAgICAgYXV0byBpZGVudGlmaWVyID0gbV9pZGVudGlmaWVyc09mUmV1
c2FibGVIYW5kbGVzLmZpcnN0KCk7CisgICAgICAgIGF1dG8qIHJldXNhYmxlSGFuZGxlID0gbV9z
aGFyZWREaXNwbGF5TGlzdEhhbmRsZXMuZ2V0KGlkZW50aWZpZXIpOworICAgICAgICBSRUxFQVNF
X0FTU0VSVF9XSVRIX01FU1NBR0UocmV1c2FibGVIYW5kbGUsICIlcyBmYWlsZWQgdG8gZmluZCBz
aGFyZWQgZGlzcGxheSBsaXN0IiwgX19QUkVUVFlfRlVOQ1RJT05fXyk7CisKKyAgICAgICAgaWYg
KG1faWRlbnRpZmllcnNPZkhhbmRsZXNBdmFpbGFibGVGb3JXcml0aW5nLmNvbnRhaW5zKGlkZW50
aWZpZXIpICYmIHJldXNhYmxlSGFuZGxlLT5hdmFpbGFibGVDYXBhY2l0eSgpID49IGNhcGFjaXR5
KSB7CisgICAgICAgICAgICBtX2lkZW50aWZpZXJzT2ZIYW5kbGVzQXZhaWxhYmxlRm9yV3JpdGlu
Zy5yZW1vdmUoaWRlbnRpZmllcik7CisgICAgICAgICAgICByZXR1cm4gcmV1c2FibGVIYW5kbGUt
PmNyZWF0ZUhhbmRsZSgpOworICAgICAgICB9CisKKyAgICAgICAgbV9pZGVudGlmaWVyc09mUmV1
c2FibGVIYW5kbGVzLnJlbW92ZUZpcnN0KCk7CisgICAgfQorCiAgICAgc3RhdGljIGNvbnN0ZXhw
ciBzaXplX3QgZGVmYXVsdFNoYXJlZEl0ZW1CdWZmZXJTaXplID0gMSA8PCAxNjsKIAotICAgIGF1
dG8gc2hhcmVkTWVtb3J5ID0gU2hhcmVkTWVtb3J5OjphbGxvY2F0ZShzdGQ6Om1heChkZWZhdWx0
U2hhcmVkSXRlbUJ1ZmZlclNpemUsIGNhcGFjaXR5KSk7CisgICAgYXV0byBzaGFyZWRNZW1vcnkg
PSBTaGFyZWRNZW1vcnk6OmFsbG9jYXRlKHN0ZDo6bWF4KGRlZmF1bHRTaGFyZWRJdGVtQnVmZmVy
U2l6ZSwgY2FwYWNpdHkgKyBTaGFyZWREaXNwbGF5TGlzdEhhbmRsZTo6cmVzZXJ2ZWRDYXBhY2l0
eUF0U3RhcnQpKTsKICAgICBpZiAoIXNoYXJlZE1lbW9yeSkKICAgICAgICAgcmV0dXJuIHsgfTsK
IAotICAgIGF1dG8gaWRlbnRpZmllciA9IERpc3BsYXlMaXN0OjpJdGVtQnVmZmVySWRlbnRpZmll
cjo6Z2VuZXJhdGUoKTsKICAgICBTaGFyZWRNZW1vcnk6OkhhbmRsZSBzaGFyZWRNZW1vcnlIYW5k
bGU7Ci0gICAgc2hhcmVkTWVtb3J5LT5jcmVhdGVIYW5kbGUoc2hhcmVkTWVtb3J5SGFuZGxlLCBT
aGFyZWRNZW1vcnk6OlByb3RlY3Rpb246OlJlYWRPbmx5KTsKLSAgICBzZW5kKE1lc3NhZ2VzOjpS
ZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpEaWRDcmVhdGVTaGFyZWRJdGVtRGF0YShpZGVudGlmaWVy
LCB7IFdURk1vdmUoc2hhcmVkTWVtb3J5SGFuZGxlKSwgc2hhcmVkTWVtb3J5LT5zaXplKCkgfSks
IG1fcmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXIpOwotICAgIG1fc2hhcmVkSXRlbUJ1ZmZlcnMu
c2V0KGlkZW50aWZpZXIsIHNoYXJlZE1lbW9yeS5jb3B5UmVmKCkpOworICAgIHNoYXJlZE1lbW9y
eS0+Y3JlYXRlSGFuZGxlKHNoYXJlZE1lbW9yeUhhbmRsZSwgU2hhcmVkTWVtb3J5OjpQcm90ZWN0
aW9uOjpSZWFkV3JpdGUpOworCisgICAgYXV0byBpZGVudGlmaWVyID0gRGlzcGxheUxpc3Q6Okl0
ZW1CdWZmZXJJZGVudGlmaWVyOjpnZW5lcmF0ZSgpOworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90
ZVJlbmRlcmluZ0JhY2tlbmQ6OkRpZENyZWF0ZVNoYXJlZERpc3BsYXlMaXN0SGFuZGxlKGlkZW50
aWZpZXIsIHsgV1RGTW92ZShzaGFyZWRNZW1vcnlIYW5kbGUpLCBzaGFyZWRNZW1vcnktPnNpemUo
KSB9LCBkZXN0aW5hdGlvbkJ1ZmZlcklkZW50aWZpZXIpLCBtX3JlbmRlcmluZ0JhY2tlbmRJZGVu
dGlmaWVyKTsKKworICAgIGF1dG8gbmV3SGFuZGxlID0gRGlzcGxheUxpc3RXcml0ZXJIYW5kbGU6
OmNyZWF0ZShpZGVudGlmaWVyLCBzaGFyZWRNZW1vcnkucmVsZWFzZU5vbk51bGwoKSk7CisgICAg
YXV0byBkaXNwbGF5TGlzdEhhbmRsZSA9IG5ld0hhbmRsZS0+Y3JlYXRlSGFuZGxlKCk7CisKKyAg
ICBtX2lkZW50aWZpZXJzT2ZSZXVzYWJsZUhhbmRsZXMuYXBwZW5kKGlkZW50aWZpZXIpOworICAg
IG1fc2hhcmVkRGlzcGxheUxpc3RIYW5kbGVzLnNldChpZGVudGlmaWVyLCBXVEZNb3ZlKG5ld0hh
bmRsZSkpOwogCi0gICAgcmV0dXJuIHsgaWRlbnRpZmllciwgcmVpbnRlcnByZXRfY2FzdDx1aW50
OF90Kj4oc2hhcmVkTWVtb3J5LT5kYXRhKCkpLCBzaGFyZWRNZW1vcnktPnNpemUoKSB9OworICAg
IHJldHVybiBkaXNwbGF5TGlzdEhhbmRsZTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZVJl
bmRlcmluZ0JhY2tlbmRQcm94eS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFw
aGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkuaAppbmRleCBhNTQyYzgzMzVlMGU1MzNl
MDUxM2U1NzY0MjYyNDVlYmI3NjQxY2Y5Li5hYmE5NjJlNDA4OTM4Y2YwZmIyZTM0ZDViYTA4MDNh
MmUwY2E0NzI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBo
aWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5LmgKQEAgLTM0
LDYgKzM0LDcgQEAKICNpbmNsdWRlICJSZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllci5oIgogI2lu
Y2x1ZGUgPFdlYkNvcmUvRGlzcGxheUxpc3QuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1JlbmRlcmlu
Z1Jlc291cmNlSWRlbnRpZmllci5oPgorI2luY2x1ZGUgPHd0Zi9EZXF1ZS5oPgogI2luY2x1ZGUg
PHd0Zi9XZWFrUHRyLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTUwLDYgKzUxLDggQEAg
ZW51bSBjbGFzcyBSZW5kZXJpbmdNb2RlIDogYm9vbDsKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAK
K2NsYXNzIERpc3BsYXlMaXN0V3JpdGVySGFuZGxlOworCiBjbGFzcyBSZW1vdGVSZW5kZXJpbmdC
YWNrZW5kUHJveHkKICAgICA6IHB1YmxpYyBJUEM6Ok1lc3NhZ2VTZW5kZXIKICAgICAsIHByaXZh
dGUgSVBDOjpNZXNzYWdlUmVjZWl2ZXIKQEAgLTYwLDcgKzYzLDcgQEAgcHVibGljOgogICAgIH5S
ZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkoKTsKIAogICAgIFJlbW90ZVJlc291cmNlQ2FjaGVQ
cm94eSYgcmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5KCkgeyByZXR1cm4gbV9yZW1vdGVSZXNvdXJj
ZUNhY2hlUHJveHk7IH0KLSAgICBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbUJ1ZmZlckhhbmRs
ZSBjcmVhdGVJdGVtQnVmZmVyKHNpemVfdCk7CisgICAgV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0
ZW1CdWZmZXJIYW5kbGUgY3JlYXRlSXRlbUJ1ZmZlcihzaXplX3QgY2FwYWNpdHksIFdlYkNvcmU6
OlJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciBkZXN0aW5hdGlvbkJ1ZmZlcklkZW50aWZpZXIp
OwogCiAgICAgLy8gSVBDOjpNZXNzYWdlU2VuZGVyLgogICAgIElQQzo6Q29ubmVjdGlvbiogbWVz
c2FnZVNlbmRlckNvbm5lY3Rpb24oKSBjb25zdCBvdmVycmlkZTsKQEAgLTcyLDcgKzc1LDcgQEAg
cHVibGljOgogICAgIC8vIE1lc3NhZ2VzIHRvIGJlIHNlbnQuCiAgICAgUmVmUHRyPFdlYkNvcmU6
OkltYWdlQnVmZmVyPiBjcmVhdGVJbWFnZUJ1ZmZlcihjb25zdCBXZWJDb3JlOjpGbG9hdFNpemUm
LCBXZWJDb3JlOjpSZW5kZXJpbmdNb2RlLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIFdlYkNvcmU6
OkNvbG9yU3BhY2UpOwogICAgIFJlZlB0cjxXZWJDb3JlOjpJbWFnZURhdGE+IGdldEltYWdlRGF0
YShXZWJDb3JlOjpBbHBoYVByZW11bHRpcGxpY2F0aW9uIG91dHB1dEZvcm1hdCwgY29uc3QgV2Vi
Q29yZTo6SW50UmVjdCYgc3JjUmVjdCwgV2ViQ29yZTo6UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlm
aWVyKTsKLSAgICB2b2lkIHN1Ym1pdERpc3BsYXlMaXN0KGNvbnN0IFdlYkNvcmU6OkRpc3BsYXlM
aXN0OjpEaXNwbGF5TGlzdCYsIFdlYkNvcmU6OlJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcik7
CisgICAgdm9pZCBzdWJtaXREaXNwbGF5TGlzdChjb25zdCBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6
RGlzcGxheUxpc3QmLCBXZWJDb3JlOjpSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgZGVzdGlu
YXRpb25CdWZmZXJJZGVudGlmaWVyKTsKICAgICBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6Rmx1c2hJ
ZGVudGlmaWVyIGZsdXNoRGlzcGxheUxpc3RBbmRDb21taXQoY29uc3QgV2ViQ29yZTo6RGlzcGxh
eUxpc3Q6OkRpc3BsYXlMaXN0JiwgV2ViQ29yZTo6UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVy
KTsKICAgICB2b2lkIHJlbGVhc2VSZW1vdGVSZXNvdXJjZShXZWJDb3JlOjpSZW5kZXJpbmdSZXNv
dXJjZUlkZW50aWZpZXIpOwogCkBAIC04MiwxMiArODUsMTYgQEAgcHVibGljOgogcHJpdmF0ZToK
ICAgICBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkoKTsKIAorICAgIHZvaWQgdXBkYXRlUmV1
c2FibGVIYW5kbGVzKCk7CisKICAgICAvLyBNZXNzYWdlcyB0byBiZSByZWNlaXZlZC4KICAgICB2
b2lkIGltYWdlQnVmZmVyQmFja2VuZFdhc0NyZWF0ZWQoY29uc3QgV2ViQ29yZTo6RmxvYXRTaXpl
JiBsb2dpY2FsU2l6ZSwgY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYgYmFja2VuZFNpemUsIGZsb2F0
IHJlc29sdXRpb25TY2FsZSwgV2ViQ29yZTo6Q29sb3JTcGFjZSwgSW1hZ2VCdWZmZXJCYWNrZW5k
SGFuZGxlLCBXZWJDb3JlOjpSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpOwogICAgIHZvaWQg
Zmx1c2hEaXNwbGF5TGlzdFdhc0NvbW1pdHRlZChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6Rmx1c2hJ
ZGVudGlmaWVyLCBXZWJDb3JlOjpSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpOwogCiAgICAg
UmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5IG1fcmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5OwotICAg
IEhhc2hNYXA8V2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1CdWZmZXJJZGVudGlmaWVyLCBSZWZQ
dHI8U2hhcmVkTWVtb3J5Pj4gbV9zaGFyZWRJdGVtQnVmZmVyczsKKyAgICBIYXNoTWFwPFdlYkNv
cmU6OkRpc3BsYXlMaXN0OjpJdGVtQnVmZmVySWRlbnRpZmllciwgUmVmUHRyPERpc3BsYXlMaXN0
V3JpdGVySGFuZGxlPj4gbV9zaGFyZWREaXNwbGF5TGlzdEhhbmRsZXM7CisgICAgRGVxdWU8V2Vi
Q29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1CdWZmZXJJZGVudGlmaWVyPiBtX2lkZW50aWZpZXJzT2ZS
ZXVzYWJsZUhhbmRsZXM7CisgICAgSGFzaFNldDxXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbUJ1
ZmZlcklkZW50aWZpZXI+IG1faWRlbnRpZmllcnNPZkhhbmRsZXNBdmFpbGFibGVGb3JXcml0aW5n
OwogICAgIFJlbmRlcmluZ0JhY2tlbmRJZGVudGlmaWVyIG1fcmVuZGVyaW5nQmFja2VuZElkZW50
aWZpZXIgeyBSZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllcjo6Z2VuZXJhdGUoKSB9OwogfTsKIAo=
</data>

          </attachment>
      

    </bug>

</bugzilla>