<?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>217566</bug_id>
          
          <creation_ts>2020-10-10 21:55:09 -0700</creation_ts>
          <short_desc>[GPU Process][Resource caching 4/7]: Implement DisplayList::DrawImageBuffer item</short_desc>
          <delta_ts>2020-11-02 22:08:58 -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>Layout and Rendering</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=218324</see_also>
          <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>217558</dependson>
          <blocked>217342</blocked>
    
    <blocked>217573</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Said Abou-Hallawa">sabouhallawa</reporter>
          <assigned_to name="Said Abou-Hallawa">sabouhallawa</assigned_to>
          <cc>annulen</cc>
    
    <cc>bfulgham</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>glenn</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>jer.noble</cc>
    
    <cc>mmaxfield</cc>
    
    <cc>philipj</cc>
    
    <cc>ryuan.choi</cc>
    
    <cc>sergio</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>wenson_hsieh</cc>
    
    <cc>zalan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1696575</commentid>
    <comment_count>0</comment_count>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2020-10-10 21:55:09 -0700</bug_when>
    <thetext>For in-process drawing there is no need to record drawing an ImageBuffer to a GraphicsContext. The current implementation creates a NativeImage from the ImageBuffer and draw this NativeImage to the GraphicsContext. So we end up recording a DrawNativeImage item instead. But for remote drawing, drawing a RemoteImageBuffer is an expensive operation unless creating the NativeImage and drawing it to the remote client is moved to the GPU Process. To do that, we need to record the RemoteResourceIdentifier of the ImageBuffer and send it to the GPU Process.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1696576</commentid>
    <comment_count>1</comment_count>
      <attachid>411031</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2020-10-10 21:57:38 -0700</bug_when>
    <thetext>Created attachment 411031
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1696584</commentid>
    <comment_count>2</comment_count>
      <attachid>411032</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2020-10-10 22:40:40 -0700</bug_when>
    <thetext>Created attachment 411032
Patch for review</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1696914</commentid>
    <comment_count>3</comment_count>
      <attachid>411032</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2020-10-12 10:36:54 -0700</bug_when>
    <thetext>Comment on attachment 411032
Patch for review

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

&gt; Source/WebCore/ChangeLog:8
&gt; +        The sequence in the Web Process is the following:

I&apos;m a bit confused by what you&apos;re enabling in this patch. Is this an ImageBuffer whose contents are a display list? Didn&apos;t Wenson already do something like that?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1697000</commentid>
    <comment_count>4</comment_count>
      <attachid>411032</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2020-10-12 13:45:31 -0700</bug_when>
    <thetext>Comment on attachment 411032
Patch for review

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

&gt;&gt; Source/WebCore/ChangeLog:8
&gt;&gt; +        The sequence in the Web Process is the following:
&gt; 
&gt; I&apos;m a bit confused by what you&apos;re enabling in this patch. Is this an ImageBuffer whose contents are a display list? Didn&apos;t Wenson already do something like that?

I am fixing the scenario:

&lt;body&gt;
    &lt;script&gt;
        const canvas1 = document.createElement(&quot;canvas&quot;);
        canvas1.width = 100;
        canvas1.height = 100;
  
        const ctx1 = canvas1.getContext(&apos;2d&apos;);
        ctx1.fillStyle = &quot;green&quot;;
        ctx1.fillRect(0, 0, 100, 100);

        const canvas2 = document.createElement(&quot;canvas&quot;); 
        canvas2.style.cssText = &quot;width: 200px; height: 200px; border: 1px solid red&quot;;
        canvas2.width = 200;
        canvas2.height = 200;
        document.body.appendChild(canvas2);

        const ctx2 = canvas2.getContext(&apos;2d&apos;);
        ctx2.drawImage(canvas1, 50, 50, 100, 100);
    &lt;/script&gt;
&lt;/body&gt;

The current implementation draws a canvas into another canvas by the following steps:

1. GraphicsContext::drawImageBuffer() asks the RemoteImageBuffer to draw itself into a NativeImage. Then its draws this NativeImage to the context of the RemoteImageBuffer.
2. GraphicsContext::drawNativeImage() records a DrawNativeImage(). The NativeImage will be encoded to a ShareableBitmap and it will be sent to GPU when encoding the DisplayList.
3. The GPU Process decodes the ShareableBitmap into a NativeImage.
4. DrawNativeImage is replayed back and the nativeImage is drawn to the backend of RemoteImageBufferProxy.

With this patch this is what is going to happen:

1. GraphicsContext::drawImageBuffer() will ask DisplayList::Recorder if it can record the DrawImageBuffer which will ask its delegate. The delegate in this case is RemoteImageBuffer. RemoteImageBuffer will ask the RemoteResourceCache through the RemoteRenderingBackend. If the ImageBuffer is remote, it will record the DrawImageBuffer with the RemoteResourceIdentifier.
2. When replaying back DrawImageBuffer in GPU process, the DisplayList::replayer will ask its delegate which is RemoteImageBufferProxy. RemoteImageBufferProxy::apply() will delegate the call to RemoteResourceCacheProxy through the RemoteRenderingBackendProxy. RemoteResourceCacheProxy will resolve the RemoteResourceIdentifier to an ImageBuffer and calls GraphicsContext::drawImageBuffer()
3. GraphicsContext::drawImageBuffer() will make ImageBuffer draw itself into a NativeImage and call GraphicsContext::drawNativeImage()
4. GraphicsContext::drawNativeImage() will draw the NativeImage to the context of the backend.

So with patch, no NativeImage encoding/decoding is involved. And more importantly no access to the backend of the RemoteImageBuffer happens in the Web Process.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1697027</commentid>
    <comment_count>5</comment_count>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2020-10-12 14:23:24 -0700</bug_when>
    <thetext>(In reply to Simon Fraser (smfr) from comment #3)
&gt; Comment on attachment 411032 [details]
&gt; Patch for review
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=411032&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/ChangeLog:8
&gt; &gt; +        The sequence in the Web Process is the following:
&gt; 
&gt; I&apos;m a bit confused by what you&apos;re enabling in this patch. Is this an
&gt; ImageBuffer whose contents are a display list? Didn&apos;t Wenson already do
&gt; something like that?

If you&apos;re referring to the ClipToImageBuffer bug, we fixed that by adding a ClipToDrawingCommands command instead and having the call site use that (i.e. refactor the code so that the call site does its drawing on a separate compatible GraphicsContext, created by the GraphicsContext).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1699054</commentid>
    <comment_count>6</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2020-10-17 21:56:18 -0700</bug_when>
    <thetext>&lt;rdar://problem/70413918&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1699994</commentid>
    <comment_count>7</comment_count>
      <attachid>411934</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2020-10-20 16:22:17 -0700</bug_when>
    <thetext>Created attachment 411934
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1700035</commentid>
    <comment_count>8</comment_count>
      <attachid>411947</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2020-10-20 18:37:20 -0700</bug_when>
    <thetext>Created attachment 411947
Patch for review</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1701790</commentid>
    <comment_count>9</comment_count>
      <attachid>412398</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2020-10-27 00:44:53 -0700</bug_when>
    <thetext>Created attachment 412398
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1701800</commentid>
    <comment_count>10</comment_count>
      <attachid>412403</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2020-10-27 02:00:59 -0700</bug_when>
    <thetext>Created attachment 412403
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1701944</commentid>
    <comment_count>11</comment_count>
      <attachid>412403</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2020-10-27 10:15:31 -0700</bug_when>
    <thetext>Comment on attachment 412403
Patch

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

&gt; Source/WebKit/WebProcess/GPU/graphics/RemoteResourceCacheProxy.h:62
&gt; +    RemoteResourceClientsHashMap m_lockedRemoteResourceForRemoteClients;
&gt; +    RemoteResourceClientsHashMap m_pendingUnlockRemoteResourceForRemoteClients;

Don&apos;t these need to be counted, since a single item could be referenced by multiple clients?

Can we simplify to avoid the need for &quot;locked&quot; and &quot;pending unlock&quot;?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1702006</commentid>
    <comment_count>12</comment_count>
      <attachid>412403</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2020-10-27 11:43:25 -0700</bug_when>
    <thetext>Comment on attachment 412403
Patch

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

&gt;&gt; Source/WebKit/WebProcess/GPU/graphics/RemoteResourceCacheProxy.h:62
&gt;&gt; +    RemoteResourceClientsHashMap m_pendingUnlockRemoteResourceForRemoteClients;
&gt; 
&gt; Don&apos;t these need to be counted, since a single item could be referenced by multiple clients?
&gt; 
&gt; Can we simplify to avoid the need for &quot;locked&quot; and &quot;pending unlock&quot;?

These are HashMaps from a RenderingResourceIdentifier to a HashSet&lt;RenderingResourceIdentifier&gt;. So it is one-to-many relationship: resource -&gt; clients. Every time a resource is referenced by a remote client, the RenderingResourceIdentifier of the remote client is added to the HashSet of this resource. The resource is released when its HashSet is empty.

Please see the GraphicsContext::drawConsumingImageBuffer() above. If an source ImageBuffer is drawing-consuming into a destination ImageBuffer, the source ImageBuffer will be deleted before the destination ImageBuffer flushes its DrawingContext. For the drawConsumingImageBuffer() scenario this is what happens.

1. bufferDest.context().drawConsumingImageBuffer(WTFMove(bufferSrc)...) is called.
2. DisplayList::Recorder::drawImageBuffer() gets called which calls lockRemoteImageBuffer() of its delegate.
3. RemoteImageBufferProxy::lockRemoteImageBuffer() gets called because it&apos;s a DisplayList::Recorder::Delegate.
4. RemoteResourceCacheProxy::lockRemoteImageBufferForRemoteClient() gets called.
5. The relationship bufferSrc -&gt; bufferDest is added to m_lockedRemoteResourceForRemoteClients.
6. A DrawImageBuffer item is created and GraphicsContext::drawConsumingImageBuffer() exists.
7. The destructor of RemoteImageBufferProxy for bufferSrc is called.
8. RemoteResourceCacheProxy::releaseImageBuffer() gets called.
9. RemoteResourceCacheProxy::releaseRemoteResource() is called which realizes that the resource is locked.
10. So it moves the entry of bufferSrc from m_lockedRemoteResourceForRemoteClients to m_pendingUnlockRemoteResourceForRemoteClients.
11. Eventually RemoteImageBufferProxy::flushDrawingContext() is called for destBuffer.
12.RemoteResourceCacheProxy::unlockRemoteResourcesForRemoteClient() is called. The entry of the RenderingResourceIdentifier of bufferDest is removed from m_lockedRemoteResourceForRemoteClients and m_pendingUnlockRemoteResourceForRemoteClients.
13. All the entries in m_pendingUnlockRemoteResourceForRemoteClients whose HashSets are empty will be released from the GPU.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1702037</commentid>
    <comment_count>13</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2020-10-27 12:53:27 -0700</bug_when>
    <thetext>Committed r269065: &lt;https://trac.webkit.org/changeset/269065&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 412403.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1703812</commentid>
    <comment_count>14</comment_count>
      <attachid>412403</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2020-11-02 22:07:25 -0800</bug_when>
    <thetext>Comment on attachment 412403
Patch

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

&gt; Source/WebKit/WebProcess/GPU/graphics/RemoteResourceCacheProxy.cpp:71
&gt; +    lockRemoteResourceForRemoteClient(imageBuffer.renderingResourceIdentifier(), remoteClientIdentifier);

I don&apos;t quite understand how this works. The destructor of the ImageBuffer (presumably the RemoteImageBufferProxy subclass) sends the ReleaseRemoteResource message, but this lock operation doesn&apos;t retain the ImageBuffer. Doesn&apos;t this mean that the ImageBuffer could be deleted from the GPU Process before the GPU Process receives the DrawImageBuffer DL item?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1703813</commentid>
    <comment_count>15</comment_count>
      <attachid>412403</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2020-11-02 22:08:58 -0800</bug_when>
    <thetext>Comment on attachment 412403
Patch

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

&gt;&gt; Source/WebKit/WebProcess/GPU/graphics/RemoteResourceCacheProxy.cpp:71
&gt;&gt; +    lockRemoteResourceForRemoteClient(imageBuffer.renderingResourceIdentifier(), remoteClientIdentifier);
&gt; 
&gt; I don&apos;t quite understand how this works. The destructor of the ImageBuffer (presumably the RemoteImageBufferProxy subclass) sends the ReleaseRemoteResource message, but this lock operation doesn&apos;t retain the ImageBuffer. Doesn&apos;t this mean that the ImageBuffer could be deleted from the GPU Process before the GPU Process receives the DrawImageBuffer DL item?

Oh, never mind, you explain this in https://bugs.webkit.org/show_bug.cgi?id=217566#c12.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>411031</attachid>
            <date>2020-10-10 21:57:38 -0700</date>
            <delta_ts>2020-10-20 16:22:14 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-217566-20201010215738.patch</filename>
            <type>text/plain</type>
            <size>134818</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY4MzAzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOTMxYWE4Njk0MDM0ZjFl
ZDg1MGRmZjdlYzFlNmViYThkZTNiNGJiZS4uZmNjODQ4OTUyMDViNDZhOTRmM2Q3YzZlMDdlYTc1
OWE1ZTU3Y2ZhYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDgyIEBACisyMDIwLTEwLTEwICBTYWlk
IEFib3UtSGFsbGF3YSAgPHNhYm91aGFsbGF3YUBhcHBsZS5jb20+CisKKyAgICAgICAgW0dQVSBQ
cm9jZXNzXSBJbXBsZW1lbnQgRGlzcGxheUxpc3Q6OkRyYXdJbWFnZUJ1ZmZlciBpdGVtCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTc1NjYKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL0dyYXBoaWNzQ29udGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0Nv
bnRleHQ6OmRyYXdJbWFnZUJ1ZmZlcik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvR3Jh
cGhpY3NDb250ZXh0SW1wbC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dy
YXBoaWNzQ29udGV4dEltcGxDYWlyby5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0Nv
bnRleHRJbXBsQ2Fpcm86OmRyYXdJbWFnZUJ1ZmZlcik6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0SW1wbENhaXJvLmg6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0Lmg6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0RHJhd2luZ0NvbnRleHQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRyYXdpbmdDb250ZXh0OjpEcmF3aW5nQ29u
dGV4dCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlM
aXN0RHJhd2luZ0NvbnRleHQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEcmF3
aW5nQ29udGV4dDo6RHJhd2luZ0NvbnRleHQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEltYWdlQnVmZmVyLmg6CisgICAgICAgIChXZWJDb3Jl
OjpEaXNwbGF5TGlzdDo6SW1hZ2VCdWZmZXI6OkltYWdlQnVmZmVyKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtcy5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbTo6c2l6ZUluQnl0ZXMpOgorICAgICAgICAoV2Vi
Q29yZTo6RGlzcGxheUxpc3Q6OkRyYXdJbWFnZUJ1ZmZlcjo6RHJhd0ltYWdlQnVmZmVyKToKKyAg
ICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEcmF3SW1hZ2VCdWZmZXI6OmFwcGx5IGNvbnN0
KToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpvcGVyYXRvcjw8KToKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtcy5oOgorICAg
ICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRyYXdJbWFnZUJ1ZmZlcjo6Y3JlYXRlKToKKyAg
ICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEcmF3SW1hZ2VCdWZmZXI6OnJlbW90ZVJlc291
cmNlSWRlbnRpZmllciBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RHJh
d0ltYWdlQnVmZmVyOjpzb3VyY2UgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxp
c3Q6OkRyYXdJbWFnZUJ1ZmZlcjo6ZGVzdGluYXRpb25SZWN0IGNvbnN0KToKKyAgICAgICAgKFdl
YkNvcmU6OkRpc3BsYXlMaXN0OjpEcmF3SW1hZ2VCdWZmZXI6Om9wdGlvbnMgY29uc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRyYXdJbWFnZUJ1ZmZlcjo6ZW5jb2RlIGNvbnN0
KToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEcmF3SW1hZ2VCdWZmZXI6OmRlY29k
ZSk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbTo6ZW5jb2RlIGNvbnN0KToK
KyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtOjpkZWNvZGUpOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF4TGlzdFJlY29yZGVyLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpSZWNvcmRlcjo6UmVjb3JkZXIpOgorICAg
ICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OlJlY29yZGVyOjpwdXRJbWFnZURhdGEpOgorICAg
ICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OlJlY29yZGVyOjp3aWxsQXBwZW5kSXRlbSk6Cisg
ICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6UmVjb3JkZXI6OmRyYXdJbWFnZUJ1ZmZlcik6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVj
b3JkZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpSZWNvcmRlcjo6RGVsZWdh
dGU6On5EZWxlZ2F0ZSk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6UmVjb3JkZXI6
OkRlbGVnYXRlOjpjcmVhdGVEcmF3SW1hZ2VCdWZmZXJJdGVtKToKKyAgICAgICAgKFdlYkNvcmU6
OkRpc3BsYXlMaXN0OjpSZWNvcmRlcjo6T2JzZXJ2ZXI6On5PYnNlcnZlcik6IERlbGV0ZWQuCisg
ICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6UmVjb3JkZXI6Ok9ic2VydmVyOjp3aWxsQXBw
ZW5kSXRlbSk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS9j
YWlyby9OaWNvc2lhQ2Fpcm9PcGVyYXRpb25SZWNvcmRlci5jcHA6CisgICAgICAgIChOaWNvc2lh
OjpDYWlyb09wZXJhdGlvblJlY29yZGVyOjpkcmF3SW1hZ2VCdWZmZXIpOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL25pY29zaWEvY2Fpcm8vTmljb3NpYUNhaXJvT3BlcmF0aW9uUmVjb3Jk
ZXIuaDoKKworMjAyMC0xMC0wOSAgU2FpZCBBYm91LUhhbGxhd2EgIDxzYWJvdWhhbGxhd2FAYXBw
bGUuY29tPgorCisgICAgICAgIFtHUFUgUHJvY2Vzc10gSW50cm9kdWNlIFJlbW90ZVJlc291cmNl
Q2FjaGVQcm94eSB0byBtYW5hZ2UgdGhlIHJlc291cmNlcyBpbiB0aGUgR1BVIFByb2Nlc3MKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxNzU1NAorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBhIG5ldyB2
aXJ0dWFsIG1ldGhvZHMgdG8gSW1hZ2VCdWZmZXIgd2hpY2ggdXNlZCB0byBiZSBhIHZpcnR1YWwg
bWV0aG9kCisgICAgICAgIG9mIFJlbW90ZUltYWdlQnVmZmVyTWVzc2FnZUhhbmRsZXJQcm94eS4g
VGhpcyBtZXRob2QgaXMgYWxyZWFkeSBvdmVycmlkZGVuCisgICAgICAgIGJ5IFJlbW90ZUltYWdl
QnVmZmVyUHJveHkgYW5kIGlzIGNhbGxlZCBieSBSZW1vdGVSZXNvdXJjZUNhY2hlUHJveHkuIEJ1
dAorICAgICAgICBSZW1vdGVSZXNvdXJjZUNhY2hlUHJveHkga2VlcHMgYSBIYXNoTWFwIG9mIElt
YWdlQnVmZmVycy4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyLmg6
CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlcjo6Zmx1c2hEcmF3aW5nQ29udGV4dCk6CisK
KzIwMjAtMTAtMDkgIFNhaWQgQWJvdS1IYWxsYXdhICA8c2Fib3VoYWxsYXdhQGFwcGxlLmNvbT4K
KworICAgICAgICBbR1BVIFByb2Nlc3NdOiBSZXBsYWNlICJJbWFnZUJ1ZmZlcklkZW50aWZpZXIi
IGJ5IGEgZ2VuZXJpYyBpZGVudGlmaWVyIG5hbWVkICJSZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIi
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTc1NTAK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBSZW1vdGVS
ZXNvdXJjZUlkZW50aWZpZXIgd2lsbCBiZSB1c2VkIGluIFdlYkNvcmUgd2hlbiByZWNvcmRpbmcg
ZHJhd2luZworICAgICAgICBhIHJlbW90ZSBJbWFnZUJ1ZmZlciB0byBhbm90aGVyIHJlbW90ZSBJ
bWFnZUJ1ZmZlci4gRXZlbnR1YWxseSBpdCB3aWxsCisgICAgICAgIGJlIHVzZWQgZHJhd2luZyBh
IHJlbW90ZSBOYXRpdmVJbWFnZSB0byBhIHJlbW90ZSBJbWFnZUJ1ZmZlciBvciBET00gbGF5ZXIu
CisKKyAgICAgICAgKiBIZWFkZXJzLmNtYWtlOgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9SZW1vdGVSZXNv
dXJjZUlkZW50aWZpZXIuaDogQWRkZWQuCisKIDIwMjAtMTAtMDkgIE15bGVzIEMuIE1heGZpZWxk
ICA8bW1heGZpZWxkQGFwcGxlLmNvbT4KIAogICAgICAgICBbR1BVIFByb2Nlc3NdIE1lY2hhbmlj
YWwgY2xlYW51cCBpbiBEaXNwbGF5TGlzdFJlY29yZGVyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGE1YmEzNDdiMWEx
ZmZmMjkxZGVhODQxMjNjMDQ2NmU5YTBlNjQ3OGUuLmZmOWRhMzI2NTY1MzFlYTM5MjM2YjhhYzZh
ZDU4YzA4M2I0MjgwMzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjA3IEBACisyMDIwLTEwLTEwICBT
YWlkIEFib3UtSGFsbGF3YSAgPHNhYm91aGFsbGF3YUBhcHBsZS5jb20+CisKKyAgICAgICAgW0dQ
VSBQcm9jZXNzXSBJbXBsZW1lbnQgRGlzcGxheUxpc3Q6OkRyYXdJbWFnZUJ1ZmZlciBpdGVtCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTc1NjYKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIEdQVVByb2Nl
c3MvZ3JhcGhpY3MvUmVtb3RlSW1hZ2VCdWZmZXJQcm94eS5oOgorICAgICAgICAoV2ViS2l0OjpS
ZW1vdGVJbWFnZUJ1ZmZlclByb3h5OjphcHBseSk6CisgICAgICAgICogR1BVUHJvY2Vzcy9ncmFw
aGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpS
ZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHk6OmFwcGx5UmVzb3VyY2VJdGVtKToKKyAgICAgICAg
KiBHUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS5oOgorICAg
ICAgICAqIEdQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5LmNwcDoK
KyAgICAgICAgKFdlYktpdDo6UmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5OjpSZW1vdGVSZXNvdXJj
ZUNhY2hlUHJveHkpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVSZXNvdXJjZUNhY2hlUHJveHk6
OmRyYXdJbWFnZUJ1ZmZlckl0ZW0gY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVSZXNv
dXJjZUNhY2hlUHJveHk6OmFwcGx5UmVzb3VyY2VJdGVtIGNvbnN0KToKKyAgICAgICAgKiBHUFVQ
cm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlc291cmNlQ2FjaGVQcm94eS5oOgorICAgICAgICAqIFdl
YlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUltYWdlQnVmZmVyLmg6CisgICAgICAgIChXZWJL
aXQ6OlJlbW90ZUltYWdlQnVmZmVyOjp+UmVtb3RlSW1hZ2VCdWZmZXIpOgorICAgICAgICAqIFdl
YlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQuY3BwOgorICAgICAg
ICAoV2ViS2l0OjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpjcmVhdGVEcmF3SW1hZ2VCdWZmZXJJ
dGVtKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVSZXNvdXJjZUNh
Y2hlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlUmVzb3VyY2VDYWNoZTo6Y3JlYXRlRHJh
d0ltYWdlQnVmZmVySXRlbSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVt
b3RlUmVzb3VyY2VDYWNoZS5oOgorCisyMDIwLTEwLTEwICBTYWlkIEFib3UtSGFsbGF3YSAgPHNh
Ym91aGFsbGF3YUBhcHBsZS5jb20+CisKKyAgICAgICAgW0dQVSBQcm9jZXNzXSBJbnRyb2R1Y2Ug
UmVtb3RlUmVzb3VyY2VDYWNoZSB0byBtYW5hZ2UgdGhlIHJlbW90ZSByZXNvdXJjZXMgaW4gV2Vi
IFByb2Nlc3MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTIxNzU1OAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IFJlbW90ZVJlc291cmNlQ2FjaGUgd2lsbCBiZSByZXNwb25zaWJsZSBmb3IgbWFuYWdpbmcgdGhl
IHJlbW90ZSByZXNvdXJjZXMKKyAgICAgICAgaW5jbHVkaW5nIHRoZWlyIGFjdHVhbCBsaWZlIGN5
Y2xlIGluIHRoZSBXZWIgUHJvY2VzcyBzaWRlLiBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kCisgICAg
ICAgIHdpbGwgYmUgcmVzcG9uc2libGUgb25seSBmb3IgdGhlIElQQyBjb21tdW5pY2F0aW9ucyB3
aXRoIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS4KKyAgICAgICAgSXQgd2lsbCBkZWxlZ2F0
ZSBhbGwgdGhlIHJlc291cmNlIG1hbmFnZW1lbnQgdG8gaXRzIFJlbW90ZVJlc291cmNlQ2FjaGUu
CisKKyAgICAgICAgQmVjYXVzZSBSZW1vdGVJbWFnZUJ1ZmZlciBkb2VzIHRoZSBjb21tdW5pY2F0
aW9uIGJldHdlZW4gV2ViQ29yZSBhbmQgR1BVCisgICAgICAgIFByb2Nlc3MsIFJlbW90ZVJlc291
cmNlQ2FjaGUgd2lsbCBrZWVwIHR3byBIYXNoTWFwcyB0byBlYXNlIHRoZSBtYXBwaW5nCisgICAg
ICAgIGluIGJvdGggZGlyZWN0aW9uczoKKworICAgICAgICAtLSBtX3JlbW90ZUltYWdlQnVmZmVy
SGFzaE1hcCBtYXBzIEltYWdlQnVmZmVyKiAtPiBSZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIKKyAg
ICAgICAgLS0gbV9yZW1vdGVJbWFnZUJ1ZmZlck1lc3NhZ2VIYW5kbGVySGFzaE1hcCBtYXBzIFJl
bW90ZVJlc291cmNlSWRlbnRpZmllcgorICAgICAgICAgICAtPiBSZW1vdGVJbWFnZUJ1ZmZlck1l
c3NhZ2VIYW5kbGVyKgorCisgICAgICAgIFRvIGtlZXAgdHJhY2sgb2YgdGhlIHJlc291cmNlIHJl
ZmVyZW5jaW5nLCBSZW1vdGVSZXNvdXJjZUNhY2hlIHVzZXMgYW5vdGhlciAKKyAgICAgICAgbWFw
IHdoaWNoIHJlbGF0ZXMgYSByZW1vdGUgcmVzb3VyY2Ugd2l0aCB0aGUgc2V0IG9mIHJlbW90ZSBk
cmF3aW5nIGNsaWVudHMuCisgICAgICAgIAorICAgICAgICAtLSBtX3JlbW90ZVJlc291cmNlQ2xp
ZW50c0hhc2hNYXAgbWFwcyBSZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIgLT4KKyAgICAgICAgICAg
SGFzaFNldDxSZW1vdGVSZXNvdXJjZUlkZW50aWZpZXI+CisKKyAgICAgICAgVGhlIHJlbW90ZSBy
ZXNvdXJjZSBoYXMgc3RheSBhbGl2ZSB0aWxsIHRoZWlyIGNsaWVudHMgcmVwbGF5ZWQgYmFjayB0
aGVpcgorICAgICAgICBEaXNwbGF5TGlzdDo6SXRlbXMgd2hpY2ggcmVmZXJlbmNlIHRoZXNlIHJl
c291cmNlcy4gT25jZSBSZW1vdGVSZXNvdXJjZUNhY2hlCisgICAgICAgIGlzIHJlcXVlc3RlZCB0
byByZWxlYXNlIGEgcmVtb3RlIHJlc291cmNlIGJ1dCBpdCBmaW5kcyB0aGlzIHJlc291cmNlIGlz
CisgICAgICAgIHJlZmVyZW5jZWQgYnkgYSBzZXQgb2YgcmVtb3RlIGRyYXdpbmcgY2xpZW50cywg
aXQgbW92ZXMgdGhlIGVudHJ5IG9mIHRoaXMKKyAgICAgICAgcmVzb3VyY2UgZnJvbSBtX3JlbW90
ZVJlc291cmNlQ2xpZW50c0hhc2hNYXAgdG8gYW5vdGhlciBIYXNoTWFwIG5hbWVkOgorCisgICAg
ICAgIC0tIG1fcmVtb3RlUmVzb3VyY2VDbGllbnRzUGVuZGluZ1JlbGVhc2VIYXNoTWFwIG1hcHMg
UmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyCisgICAgICAgICAgIC0+IEhhc2hTZXQ8UmVtb3RlUmVz
b3VyY2VJZGVudGlmaWVyPgorCisgICAgICAgIFdoZW4gYW4gZW50cnkgZm9yIGEgcmVtb3RlIHJl
c291cmNlIGV4aXN0cyBpbiBtX3JlbW90ZVJlc291cmNlQ2xpZW50c1BlbmRpbmdSZWxlYXNlSGFz
aE1hcCAKKyAgICAgICAgYW5kIG5vIHJlbW90ZSBjbGllbnQgcmVmZXJlbmNlcyBpdCBhbnltb3Jl
LCBSZW1vdGVSZXNvdXJjZUNhY2hlIHdpbGwgdGVsbCAKKyAgICAgICAgR1BVIFByb2Nlc3MgdG8g
cmVsZWFzZSBpdHMgcmVtb3RlIHJlc291cmNlIGFzIHdlbGwuCisKKyAgICAgICAgKiBTb3VyY2Vz
LnR4dDoKKyAgICAgICAgKiBXZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAg
ICAgKiBXZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVJbWFnZUJ1ZmZlci5oOgorICAgICAg
ICAoV2ViS2l0OjpSZW1vdGVJbWFnZUJ1ZmZlcjo6flJlbW90ZUltYWdlQnVmZmVyKToKKyAgICAg
ICAgKFdlYktpdDo6UmVtb3RlSW1hZ2VCdWZmZXI6OnJlbW90ZVJlc291cmNlSWRlbnRpZmllciBj
b25zdCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUltYWdlQnVmZmVyOjpSZW1vdGVJbWFnZUJ1
ZmZlcik6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlSW1hZ2VCdWZm
ZXJNZXNzYWdlSGFuZGxlci5jcHA6IFJlbW92ZWQuCisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUv
Z3JhcGhpY3MvUmVtb3RlSW1hZ2VCdWZmZXJNZXNzYWdlSGFuZGxlci5oOgorICAgICAgICAoV2Vi
S2l0OjpSZW1vdGVJbWFnZUJ1ZmZlck1lc3NhZ2VIYW5kbGVyOjpjb21taXRGbHVzaENvbnRleHQp
OgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVJbWFnZUJ1ZmZlck1lc3NhZ2VIYW5kbGVyOjppbWFn
ZUJ1ZmZlcklkZW50aWZpZXIgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoKTogRGVsZXRlZC4K
KyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5k
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6Y3JlYXRlSW1h
Z2VCdWZmZXIpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpyZWxl
YXNlSW1hZ2VCdWZmZXIpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5k
OjpyZWxlYXNlUmVtb3RlQ2xpZW50KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlUmVuZGVyaW5n
QmFja2VuZDo6cmVtb3RlQ3JlYXRlSW1hZ2VCdWZmZXIpOgorICAgICAgICAoV2ViS2l0OjpSZW1v
dGVSZW5kZXJpbmdCYWNrZW5kOjpyZW1vdGVHZXRJbWFnZURhdGEpOgorICAgICAgICAoV2ViS2l0
OjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpyZW1vdGVGbHVzaERyYXdpbmdDb250ZXh0KToKKyAg
ICAgICAgKFdlYktpdDo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6cmVtb3RlRmx1c2hEcmF3aW5n
Q29udGV4dEFuZENvbW1pdCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVJlbmRlcmluZ0JhY2tl
bmQ6OnJlbW90ZVJlbGVhc2VSZW1vdGVSZXNvdXJjZSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90
ZVJlbmRlcmluZ0JhY2tlbmQ6OmNyZWF0ZUltYWdlQnVmZmVyQmFja2VuZCk6CisgICAgICAgIChX
ZWJLaXQ6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OmNvbW1pdEltYWdlQnVmZmVyRmx1c2hDb250
ZXh0KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdC
YWNrZW5kLmg6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OnJlbmRl
cmluZ0JhY2tlbmRJZGVudGlmaWVyIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBXZWJQcm9j
ZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVSZXNvdXJjZUNhY2hlLmNwcDogQWRkZWQuCisgICAgICAg
IChXZWJLaXQ6OlJlbW90ZVJlc291cmNlQ2FjaGU6OlJlbW90ZVJlc291cmNlQ2FjaGUpOgorICAg
ICAgICAoV2ViS2l0OjpSZW1vdGVSZXNvdXJjZUNhY2hlOjpjcmVhdGVJbWFnZUJ1ZmZlcik6Cisg
ICAgICAgIChXZWJLaXQ6OlJlbW90ZVJlc291cmNlQ2FjaGU6OmNyZWF0ZUltYWdlQnVmZmVyQmFj
a2VuZCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVJlc291cmNlQ2FjaGU6OmNvbW1pdEltYWdl
QnVmZmVyRmx1c2hDb250ZXh0KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlUmVzb3VyY2VDYWNo
ZTo6cmVsZWFzZUltYWdlQnVmZmVyKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlUmVzb3VyY2VD
YWNoZTo6ZmluZEltYWdlQnVmZmVyRm9yQ2xpZW50KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3Rl
UmVzb3VyY2VDYWNoZTo6YWRkUmVtb3RlQ2xpZW50KToKKyAgICAgICAgTGlua3MgYSByZW1vdGUg
cmVzb3VyY2Ugd2l0aCBhIGRyYXdpbmcgcmVtb3RlIGNsaWVudC4KKworICAgICAgICAoV2ViS2l0
OjpSZW1vdGVSZXNvdXJjZUNhY2hlOjpyZWxlYXNlUmVtb3RlUmVzb3VyY2VQZW5kaW5nUmVtb3Zl
Q2xpZW50cyk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVJlc291cmNlQ2FjaGU6OnJlbW92ZVJl
bW90ZUNsaWVudCk6CisgICAgICAgIFJlbW92ZSBhbGwgdGhlIGVudHJpZXMgd2hpY2ggaW5jbHVk
ZXMgYSBjZXJ0YWluIHJlbW90ZSBjbGllbnQuCisKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlUmVz
b3VyY2VDYWNoZTo6cmVsZWFzZVJlbW90ZUNsaWVudCk6CisgICAgICAgIEEgcmVtb3RlIGNsaWVu
dCBoYXMgZG9uZSBmbHVzaGluZyBpdHMgRHJhd2luZ0NvbnRleHQuIEl0J3MgdGltZSB0byBib29r
LQorICAgICAgICBrZWVwIHRoZSByZXNvdXJjZSByZWZlcmVuY2luZyBhbmQgc3luYyB1cCB3aXRo
IHRoZSBHUFUgc2lkZSBpZiBpdCBoYXMgdG8KKyAgICAgICAgcmVsZWFzZSBzb21lIG9mIHRoZSBy
ZW1vdGUgcmVzb3VyY2VzLgorCisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVt
b3RlUmVzb3VyY2VDYWNoZS5oOiBBZGRlZC4KKyAgICAgICAgKiBXZWJQcm9jZXNzL0dhbWVwYWQv
V2ViR2FtZXBhZFByb3ZpZGVyLmNwcDoKKworMjAyMC0xMC0wOSAgU2FpZCBBYm91LUhhbGxhd2Eg
IDxzYWJvdWhhbGxhd2FAYXBwbGUuY29tPgorCisgICAgICAgIFtHUFUgUHJvY2Vzc10gSW50cm9k
dWNlIFJlbW90ZVJlc291cmNlQ2FjaGVQcm94eSB0byBtYW5hZ2UgdGhlIHJlc291cmNlcyBpbiB0
aGUgR1BVIFByb2Nlc3MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTIxNzU1NAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIFJlbW90ZVJlc291cmNlQ2FjaGVQcm94eSB3aWxsIGJlIHJlc3BvbnNpYmxlIGZvciBt
YW5hZ2luZyB0aGUgcmVtb3RlIHJlc291cmNlcworICAgICAgICBpbmNsdWRpbmcgdGhlaXIgYWN0
dWFsIGxpZmUgY3ljbGUuIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eSB3aWxsIGJlIAorICAg
ICAgICByZXNwb25zaWJsZSBmb3IgdGhlIElQQyBjb21tdW5pY2F0aW9ucyB3aXRoIFJlbW90ZVJl
bmRlcmluZ0JhY2tlbmQuIEl0IHdpbGwKKyAgICAgICAgZGVsZWdhdGUgYWxsIHRoZSByZXNvdXJj
ZSBtYW5hZ2VtZW50IHRvIGl0cyBSZW1vdGVSZXNvdXJjZUNhY2hlUHJveHkuCisKKyAgICAgICAg
V2UgY2FuIGdldCByaWQgb2YgUmVtb3RlSW1hZ2VCdWZmZXJNZXNzYWdlSGFuZGxlclByb3h5IGJl
Y2F1c2UgYWxsIGl0IGRvZXMKKyAgICAgICAgaXMgc2VuZGluZyBtZXNzYWdlcyB0byBXZWJQcm9j
ZXNzLiBSZW1vdmluZyBpdCB3aWxsIHNpbXBsaWZ5IHRoZSBpbnRlcmZhY2UKKyAgICAgICAgb2Yg
UmVtb3RlSW1hZ2VCdWZmZXJQcm94eS4gU2VuZGluZyB0aGUgbWVzc2FnZXMgd2lsbCBiZSBtb3Zl
ZCB0bworICAgICAgICBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkuCisKKyAgICAgICAgKiBH
UFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUltYWdlQnVmZmVyTWVzc2FnZUhhbmRsZXJQcm94eS5j
cHA6IFJlbW92ZWQuCisgICAgICAgICogR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVJbWFnZUJ1
ZmZlck1lc3NhZ2VIYW5kbGVyUHJveHkuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBHUFVQcm9jZXNz
L2dyYXBoaWNzL1JlbW90ZUltYWdlQnVmZmVyUHJveHkuaDoKKyAgICAgICAgKFdlYktpdDo6UmVt
b3RlSW1hZ2VCdWZmZXJQcm94eTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlSW1h
Z2VCdWZmZXJQcm94eTo6UmVtb3RlSW1hZ2VCdWZmZXJQcm94eSk6CisgICAgICAgIChXZWJLaXQ6
OlJlbW90ZUltYWdlQnVmZmVyUHJveHk6OmFwcGx5KToKKyAgICAgICAgKiBHUFVQcm9jZXNzL2dy
YXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6
OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eTo6Z3B1Q29ubmVjdGlvblRvV2ViUHJvY2VzcyBj
b25zdCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eTo6cmVt
b3RlQ3JlYXRlSW1hZ2VCdWZmZXJCYWNrZW5kKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlUmVu
ZGVyaW5nQmFja2VuZFByb3h5OjpjcmVhdGVJbWFnZUJ1ZmZlcik6CisgICAgICAgIChXZWJLaXQ6
OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eTo6Zmx1c2hJbWFnZUJ1ZmZlckRyYXdpbmdDb250
ZXh0KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5OjpmbHVz
aEltYWdlQnVmZmVyRHJhd2luZ0NvbnRleHRBbmRDb21taXQpOgorICAgICAgICAoV2ViS2l0OjpS
ZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHk6OmdldEltYWdlRGF0YSk6CisgICAgICAgIChXZWJL
aXQ6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eTo6cmVsZWFzZVJlbW90ZVJlc291cmNlKToK
KyAgICAgICAgKFdlYktpdDo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5OjpyZWxlYXNlSW1h
Z2VCdWZmZXIpOiBEZWxldGVkLgorICAgICAgICAqIEdQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3Rl
UmVuZGVyaW5nQmFja2VuZFByb3h5Lmg6CisgICAgICAgICogR1BVUHJvY2Vzcy9ncmFwaGljcy9S
ZW1vdGVSZXNvdXJjZUNhY2hlUHJveHkuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6UmVt
b3RlUmVzb3VyY2VDYWNoZVByb3h5OjpSZW1vdGVSZXNvdXJjZUNhY2hlUHJveHkpOgorICAgICAg
ICAoV2ViS2l0OjpSZW1vdGVSZXNvdXJjZUNhY2hlUHJveHk6OmNyZWF0ZUltYWdlQnVmZmVyKToK
KyAgICAgICAgKFdlYktpdDo6UmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5OjpmbHVzaERyYXdpbmdD
b250ZXh0KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5OjpmbHVz
aERyYXdpbmdDb250ZXh0QW5kQ29tbWl0KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlUmVzb3Vy
Y2VDYWNoZVByb3h5OjpnZXRJbWFnZURhdGEgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpSZW1v
dGVSZXNvdXJjZUNhY2hlUHJveHk6OnJlbGVhc2VSZW1vdGVSZXNvdXJjZSk6CisgICAgICAgICog
R1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZXNvdXJjZUNhY2hlUHJveHkuaDogQWRkZWQuCisg
ICAgICAgICogR1BVUHJvY2Vzcy93ZWJydGMvUmVtb3RlTWVkaWFSZWNvcmRlci5jcHA6CisgICAg
ICAgICogR1BVUHJvY2Vzcy93ZWJydGMvUmVtb3RlU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyTWFu
YWdlci5jcHA6CisgICAgICAgICogU291cmNlcy50eHQ6CisgICAgICAgICogV2ViS2l0Lnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2o6CisKKzIwMjAtMTAtMDkgIFNhaWQgQWJvdS1IYWxsYXdhICA8
c2Fib3VoYWxsYXdhQGFwcGxlLmNvbT4KKworICAgICAgICBbR1BVIFByb2Nlc3NdOiBSZXBsYWNl
ICJJbWFnZUJ1ZmZlcklkZW50aWZpZXIiIGJ5IGEgZ2VuZXJpYyBpZGVudGlmaWVyIG5hbWVkICJS
ZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIiCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0yMTc1NTAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBHUFUgUHJvY2VzcyBuZWVkcyBhIHVuaXZlcnNhbCBpZGVudGlmaWVy
IGZvciBkcmF3aW5nIGNhY2hlZCByZXNvdXJjZXMgYW5kIAorICAgICAgICBkcmF3aW5nIGJ1ZmZl
cnMgYW5kIGxheWVycy4gVGhlIG1lYW5pbmcgb2YgUmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyIHdp
bGwKKyAgICAgICAgZGVwZW5kIG9uIHRoZSBjb250ZXh0IGl0IGlzIHVzZWQgaW4uCisKKyAgICAg
ICAgKiBHUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUltYWdlQnVmZmVyTWVzc2FnZUhhbmRsZXJQ
cm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUltYWdlQnVmZmVyTWVzc2FnZUhhbmRs
ZXJQcm94eTo6UmVtb3RlSW1hZ2VCdWZmZXJNZXNzYWdlSGFuZGxlclByb3h5KToKKyAgICAgICAg
KFdlYktpdDo6UmVtb3RlSW1hZ2VCdWZmZXJNZXNzYWdlSGFuZGxlclByb3h5OjpjcmVhdGVCYWNr
ZW5kKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlSW1hZ2VCdWZmZXJNZXNzYWdlSGFuZGxlclBy
b3h5Ojpjb21taXRGbHVzaENvbnRleHQpOgorICAgICAgICAqIEdQVVByb2Nlc3MvZ3JhcGhpY3Mv
UmVtb3RlSW1hZ2VCdWZmZXJNZXNzYWdlSGFuZGxlclByb3h5Lmg6CisgICAgICAgICogR1BVUHJv
Y2Vzcy9ncmFwaGljcy9SZW1vdGVJbWFnZUJ1ZmZlclByb3h5Lmg6CisgICAgICAgIChXZWJLaXQ6
OlJlbW90ZUltYWdlQnVmZmVyUHJveHk6OmNyZWF0ZSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90
ZUltYWdlQnVmZmVyUHJveHk6OlJlbW90ZUltYWdlQnVmZmVyUHJveHkpOgorICAgICAgICAqIEdQ
VVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5LmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5OjpjcmVhdGVJbWFnZUJ1ZmZl
cik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eTo6cmVsZWFz
ZVJlbW90ZVJlc291cmNlKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlUmVuZGVyaW5nQmFja2Vu
ZFByb3h5OjpnZXRJbWFnZURhdGEpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVSZW5kZXJpbmdC
YWNrZW5kUHJveHk6OmZsdXNoSW1hZ2VCdWZmZXJEcmF3aW5nQ29udGV4dCk6CisgICAgICAgIChX
ZWJLaXQ6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eTo6Zmx1c2hJbWFnZUJ1ZmZlckRyYXdp
bmdDb250ZXh0QW5kQ29tbWl0KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlUmVuZGVyaW5nQmFj
a2VuZFByb3h5OjpyZWxlYXNlSW1hZ2VCdWZmZXIpOiBEZWxldGVkLgorICAgICAgICAqIEdQVVBy
b2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5Lmg6CisgICAgICAgICog
R1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkubWVzc2FnZXMu
aW46CisgICAgICAgICogU2NyaXB0cy93ZWJraXQvbWVzc2FnZXMucHk6CisgICAgICAgICogV2Vi
S2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUv
Z3JhcGhpY3MvUmVtb3RlSW1hZ2VCdWZmZXJNZXNzYWdlSGFuZGxlci5jcHA6CisgICAgICAgIChX
ZWJLaXQ6OlJlbW90ZUltYWdlQnVmZmVyTWVzc2FnZUhhbmRsZXI6OlJlbW90ZUltYWdlQnVmZmVy
TWVzc2FnZUhhbmRsZXIpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVJbWFnZUJ1ZmZlck1lc3Nh
Z2VIYW5kbGVyOjp+UmVtb3RlSW1hZ2VCdWZmZXJNZXNzYWdlSGFuZGxlcik6CisgICAgICAgIChX
ZWJLaXQ6OlJlbW90ZUltYWdlQnVmZmVyTWVzc2FnZUhhbmRsZXI6OmdldEltYWdlRGF0YSBjb25z
dCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUltYWdlQnVmZmVyTWVzc2FnZUhhbmRsZXI6OmZs
dXNoRHJhd2luZ0NvbnRleHQpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVJbWFnZUJ1ZmZlck1l
c3NhZ2VIYW5kbGVyOjpmbHVzaERyYXdpbmdDb250ZXh0QW5kV2FpdENvbW1pdCk6CisgICAgICAg
ICogV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlSW1hZ2VCdWZmZXJNZXNzYWdlSGFuZGxl
ci5oOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVJbWFnZUJ1ZmZlck1lc3NhZ2VIYW5kbGVyOjpy
ZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVJ
bWFnZUJ1ZmZlck1lc3NhZ2VIYW5kbGVyOjppbWFnZUJ1ZmZlcklkZW50aWZpZXIgY29uc3QpOiBE
ZWxldGVkLgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmlu
Z0JhY2tlbmQuY3BwOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpj
cmVhdGVJbWFnZUJ1ZmZlcik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVJlbmRlcmluZ0JhY2tl
bmQ6OnJlbGVhc2VSZW1vdGVSZXNvdXJjZSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVJlbmRl
cmluZ0JhY2tlbmQ6OmNyZWF0ZUltYWdlQnVmZmVyQmFja2VuZCk6CisgICAgICAgIChXZWJLaXQ6
OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OmNvbW1pdEltYWdlQnVmZmVyRmx1c2hDb250ZXh0KToK
KyAgICAgICAgKFdlYktpdDo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6cmVsZWFzZUltYWdlQnVm
ZmVyKTogRGVsZXRlZC4KKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVS
ZW5kZXJpbmdCYWNrZW5kLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVt
b3RlUmVuZGVyaW5nQmFja2VuZC5tZXNzYWdlcy5pbjoKKwogMjAyMC0xMC0wOSAgV2Vuc29uIEhz
aWVoICA8d2Vuc29uX2hzaWVoQGFwcGxlLmNvbT4KIAogICAgICAgICBbR1BVIFByb2Nlc3NdIEFk
ZCBhZGRpdGlvbmFsIHN1cHBvcnQgZm9yIHBhaW50aW5nIHZpZGVvIGVsZW1lbnRzIHRvIDJEIGNv
bnRleHRzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtlIGIvU291cmNl
L1dlYkNvcmUvSGVhZGVycy5jbWFrZQppbmRleCBhODQ3YjA1YWI0NGU1Y2Q0YTcwNmJlMzA4Yzhi
NjQ1YjUyNTQwMGZlLi5hZDE2MGFlMGY1MThlZjRmNzE2YzYwZDQ4ODMxYTg1ZWJmN2E0MzUzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtlCisrKyBiL1NvdXJjZS9XZWJD
b3JlL0hlYWRlcnMuY21ha2UKQEAgLTEyMDcsNiArMTIwNyw3IEBAIHNldChXZWJDb3JlX1BSSVZB
VEVfRlJBTUVXT1JLX0hFQURFUlMKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9QbGF0Zm9ybVRleHRU
cmFjay5oCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvUGxhdGZvcm1UaW1lUmFuZ2VzLmgKICAgICBw
bGF0Zm9ybS9ncmFwaGljcy9SZWdpb24uaAorICAgIHBsYXRmb3JtL2dyYXBoaWNzL1JlbW90ZVJl
c291cmNlSWRlbnRpZmllci5oCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvUmVtb3RlVmlkZW9TYW1w
bGUuaAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL1JlbmRlcmluZ01vZGUuaAogICAgIHBsYXRmb3Jt
L2dyYXBoaWNzL1JvdW5kZWRSZWN0LmgKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNv
cmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCA3ZDYxZTA1YjM1NzczMDRjMTgzYzUwM2Y4MzFl
Yzg5NDEwMTAwMDIxLi4zODU4ZTFjMzJlOWQwZTI3ZGU5YjNlMzdiNjg4OTgxNDk0OTg5ZGY3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
CkBAIC0yMTYxLDYgKzIxNjEsNyBAQAogCQk3MjdBN0YzQTI0MDc4Qjg0MDA0RDI5MzEgLyogSW1h
Z2VCdWZmZXJJT1N1cmZhY2VCYWNrZW5kLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA3MkJBQzNBQjIzRTFFNTQ0MDA4RDc0MUMgLyogSW1hZ2VCdWZmZXJJ
T1N1cmZhY2VCYWNrZW5kLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKIAkJNzI5OUJDNjcyM0Q2QTUzMjAwQ0M2ODgzIC8qIEFscGhhUHJlbXVsdGlwbGlj
YXRpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDcy
OTlCQzY0MjNENjg2QTYwMENDNjg4MyAvKiBBbHBoYVByZW11bHRpcGxpY2F0aW9uLmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNzI5OUJDNjgyM0Q2
QTUzRTAwQ0M2ODgzIC8qIFJlbmRlcmluZ01vZGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDcyOTlCQzY2MjNENjg2QzYwMENDNjg4MyAvKiBSZW5kZXJp
bmdNb2RlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
KwkJNzI5RDA1MzAyNTMxNDI0MzAwNDIyMDk4IC8qIFJlbW90ZVJlc291cmNlSWRlbnRpZmllci5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzI5RDA1MkUy
NTMxM0UyNjAwNDIyMDk4IC8qIFJlbW90ZVJlc291cmNlSWRlbnRpZmllci5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTcyQTczQkVGMjQ1QTNGOTAw
MDFDOUQwMyAvKiBBbmltYXRpb25GcmFtZVJhdGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDcyMkE4MTVDMjM4RkQ1MDUwMEMwMDU4MyAvKiBBbmltYXRp
b25GcmFtZVJhdGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OwogCQk3MkJBQzNBRTIzRTFGMEIwMDA4RDc0MUMgLyogSW1hZ2VCdWZmZXJCYWNrZW5kLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3MkJBQzNBNTIz
RTE3MzI4MDA4RDc0MUMgLyogSW1hZ2VCdWZmZXJCYWNrZW5kLmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNzU1M0NGRTgxMDhGNDczRjAwRUEyODFF
IC8qIFRpbWVsaW5lUmVjb3JkRmFjdG9yeS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNzU1M0NGRTYxMDhGNDczRjAwRUEyODFFIC8qIFRpbWVsaW5lUmVj
b3JkRmFjdG9yeS5oICovOyB9OwpAQCAtOTkyMyw2ICs5OTI0LDcgQEAKIAkJNzI3QUZFRDMxQTJF
QTZBMDAwMDQ0MkU4IC8qIEVYVHNSR0IuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IEVYVHNS
R0IuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3Mjk5QkM2NDIzRDY4NkE2MDBD
QzY4ODMgLyogQWxwaGFQcmVtdWx0aXBsaWNhdGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBbHBoYVBy
ZW11bHRpcGxpY2F0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTcyOTlCQzY2
MjNENjg2QzYwMENDNjg4MyAvKiBSZW5kZXJpbmdNb2RlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlbmRl
cmluZ01vZGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNzI5RDA1MkUyNTMxM0Uy
NjAwNDIyMDk4IC8qIFJlbW90ZVJlc291cmNlSWRlbnRpZmllci5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBS
ZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
NzJCQUMzQTQyM0UxNzMyNzAwOEQ3NDFDIC8qIEltYWdlQnVmZmVyQmFja2VuZC5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBJbWFnZUJ1ZmZlckJhY2tlbmQuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3MkJBQzNBNTIzRTE3MzI4MDA4RDc0MUMgLyog
SW1hZ2VCdWZmZXJCYWNrZW5kLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IElt
YWdlQnVmZmVyQmFja2VuZC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3MkJBQzNB
NjIzRTE3MzI4MDA4RDc0MUMgLyogUGxhdGZvcm1JbWFnZUJ1ZmZlci5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBQbGF0Zm9ybUltYWdlQnVmZmVyLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CkBAIC0yNjIzOSw2ICsyNjI0MSw3IEBACiAJCQkJMDc0RTgyQjkxOEE2OUYw
RTAwN0VGNTRDIC8qIFBsYXRmb3JtVGltZVJhbmdlcy5oICovLAogCQkJCUJDQUI0MTdGMTNFMzU2
RTgwMEQ4QUFGMyAvKiBSZWdpb24uY3BwICovLAogCQkJCUJDQUI0MTgwMTNFMzU2RTgwMEQ4QUFG
MyAvKiBSZWdpb24uaCAqLywKKwkJCQk3MjlEMDUyRTI1MzEzRTI2MDA0MjIwOTggLyogUmVtb3Rl
UmVzb3VyY2VJZGVudGlmaWVyLmggKi8sCiAJCQkJMDczQTE1NTEyMTc3QTM5ODAwRUEwOEYyIC8q
IFJlbW90ZVZpZGVvU2FtcGxlLmNwcCAqLywKIAkJCQkwNzNBMTU1MzIxNzdBMzlBMDBFQTA4RjIg
LyogUmVtb3RlVmlkZW9TYW1wbGUuaCAqLywKIAkJCQk3Mjk5QkM2NjIzRDY4NkM2MDBDQzY4ODMg
LyogUmVuZGVyaW5nTW9kZS5oICovLApAQCAtMzM1NDEsNiArMzM1NDQsNyBAQAogCQkJCTQ2Qjk1
MTlBMjA3RDYzNTQwMEE3RDJERCAvKiBSZW1vdGVGcmFtZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
Q0RDMzEyRTkyMkZDRDdDMDAwMTIwNEVDIC8qIFJlbW90ZVBsYXliYWNrLmggaW4gSGVhZGVycyAq
LywKIAkJCQlDREMzMTJFQjIyRkNEN0M5MDAxMjA0RUMgLyogUmVtb3RlUGxheWJhY2tBdmFpbGFi
aWxpdHlDYWxsYmFjay5oIGluIEhlYWRlcnMgKi8sCisJCQkJNzI5RDA1MzAyNTMxNDI0MzAwNDIy
MDk4IC8qIFJlbW90ZVJlc291cmNlSWRlbnRpZmllci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMDcz
QTE1NTQyMTc3QTQyNjAwRUEwOEYyIC8qIFJlbW90ZVZpZGVvU2FtcGxlLmggaW4gSGVhZGVycyAq
LywKIAkJCQlEMDZDMEQ4RjBDRkQxMTQ2MDA2NUY0M0YgLyogUmVtb3ZlRm9ybWF0Q29tbWFuZC5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJOTMzMDlFMDUwOTlFNjQ5MjAwNTZFNTgxIC8qIFJlbW92ZU5v
ZGVDb21tYW5kLmggaW4gSGVhZGVycyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuY3BwCmluZGV4IDU1NWNjNjY0NTcwYTM0YmVh
OTk1ZGVjY2Q1MmFjODYxZjVmZTMxNDQuLjdiNDViMzRmNjU3MWI0ZTI4MzFlMDNjYTNhYTk1MTQw
ZDEyMDYwMzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dy
YXBoaWNzQ29udGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
R3JhcGhpY3NDb250ZXh0LmNwcApAQCAtNzk5LDYgKzc5OSw5IEBAIHZvaWQgR3JhcGhpY3NDb250
ZXh0OjpkcmF3SW1hZ2VCdWZmZXIoSW1hZ2VCdWZmZXImIGltYWdlLCBjb25zdCBGbG9hdFJlY3Qm
IGRlc3RpCiAgICAgaWYgKHBhaW50aW5nRGlzYWJsZWQoKSkKICAgICAgICAgcmV0dXJuOwogCisg
ICAgaWYgKG1faW1wbCAmJiBtX2ltcGwtPmRyYXdJbWFnZUJ1ZmZlcihpbWFnZSwgZGVzdGluYXRp
b24sIHNvdXJjZSwgb3B0aW9ucykpCisgICAgICAgIHJldHVybjsKKwogICAgIEludGVycG9sYXRp
b25RdWFsaXR5TWFpbnRhaW5lciBpbnRlcnBvbGF0aW9uUXVhbGl0eUZvclRoaXNTY29wZSgqdGhp
cywgb3B0aW9ucy5pbnRlcnBvbGF0aW9uUXVhbGl0eSgpKTsKICAgICBpbWFnZS5kcmF3KCp0aGlz
LCBkZXN0aW5hdGlvbiwgc291cmNlLCBvcHRpb25zKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dEltcGwuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dEltcGwuaAppbmRleCAzZDUw
NzViY2VkY2JmNTAyODcxY2Q1NTA5MzVmNTFhYzhkYjJmNTVjLi4wNDA5MjBhOGNmZGM4YWQ1Nzdi
ODdjMjEzNWRkNmFiOGU5ZjY2NDBlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHRJbXBsLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0SW1wbC5oCkBAIC03NSw2ICs3NSw3IEBAIHB1
YmxpYzoKICNpZiBVU0UoQ0cpIHx8IFVTRShDQUlSTykgfHwgVVNFKERJUkVDVDJEKQogICAgIHZp
cnR1YWwgdm9pZCBkcmF3TmF0aXZlSW1hZ2UoY29uc3QgTmF0aXZlSW1hZ2VQdHImLCBjb25zdCBG
bG9hdFNpemUmIHNlbGZTaXplLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9h
dFJlY3QmIHNyY1JlY3QsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJikgPSAwOwogI2VuZGlm
CisgICAgdmlydHVhbCBib29sIGRyYXdJbWFnZUJ1ZmZlcihJbWFnZUJ1ZmZlciYsIGNvbnN0IEZs
b2F0UmVjdCYgZGVzdGluYXRpb24sIGNvbnN0IEZsb2F0UmVjdCYgc291cmNlLCBjb25zdCBJbWFn
ZVBhaW50aW5nT3B0aW9ucyYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZHJhd1BhdHRlcm4oSW1h
Z2UmLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3Qs
IGNvbnN0IEFmZmluZVRyYW5zZm9ybSYsIGNvbnN0IEZsb2F0UG9pbnQmIHBoYXNlLCBjb25zdCBG
bG9hdFNpemUmIHNwYWNpbmcsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJikgPSAwOwogCiAg
ICAgdmlydHVhbCB2b2lkIGRyYXdSZWN0KGNvbnN0IEZsb2F0UmVjdCYsIGZsb2F0IGJvcmRlclRo
aWNrbmVzcykgPSAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvSW1hZ2VCdWZmZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdl
QnVmZmVyLmgKaW5kZXggZDE0NjQ5MmM0YThkZjkzNWNhZjk0YjlmYjk1NTkwOWFhZDFjYmFmMC4u
ZGJlMDI1ZWU5ZTFhNDQwZjAyZWE5NjY0YTM0Zjk4YTBmNmM1MWEwOCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXIuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlci5oCkBAIC0zMyw2ICszMyw3IEBA
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIG5hbWVzcGFjZSBEaXNwbGF5TGlzdCB7CitjbGFzcyBE
aXNwbGF5TGlzdDsKIGNsYXNzIERyYXdpbmdDb250ZXh0OwogfQogCkBAIC02NCw2ICs2NSw3IEBA
IHB1YmxpYzoKIAogICAgIHZpcnR1YWwgRGlzcGxheUxpc3Q6OkRyYXdpbmdDb250ZXh0KiBkcmF3
aW5nQ29udGV4dCgpIHsgcmV0dXJuIG51bGxwdHI7IH0KICAgICB2aXJ0dWFsIHZvaWQgZmx1c2hE
cmF3aW5nQ29udGV4dCgpIHsgfQorICAgIHZpcnR1YWwgdm9pZCBmbHVzaERyYXdpbmdDb250ZXh0
KGNvbnN0IERpc3BsYXlMaXN0OjpEaXNwbGF5TGlzdCYpIHsgfQogCiAgICAgdmlydHVhbCBBZmZp
bmVUcmFuc2Zvcm0gYmFzZVRyYW5zZm9ybSgpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIEludFNp
emUgbG9naWNhbFNpemUoKSBjb25zdCA9IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9SZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIuaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL1JlbW90ZVJlc291cmNlSWRlbnRpZmllci5oCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjJhZjU0MmRmZWM4NDdhYmMzNzFhYTJmMWU4ZTRiOGRkOWZiMTEwZTUKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9SZW1vdGVSZXNvdXJjZUlk
ZW50aWZpZXIuaApAQCAtMCwwICsxLDM5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJ
UycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9S
UworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwor
ICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisg
KiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisK
KyNpZiBFTkFCTEUoR1BVX1BST0NFU1MpCisKKyNpbmNsdWRlIDx3dGYvT2JqZWN0SWRlbnRpZmll
ci5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2VudW0gUmVtb3RlUmVzb3VyY2VJZGVudGlm
aWVyVHlwZSB7IH07Cit1c2luZyBSZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIgPSBPYmplY3RJZGVu
dGlmaWVyPFJlbW90ZVJlc291cmNlSWRlbnRpZmllclR5cGU+OworCit9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoR1BVX1BST0NFU1MpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRleHRJbXBsQ2Fp
cm8uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3ND
b250ZXh0SW1wbENhaXJvLmNwcAppbmRleCBiNjViNGQ2NDQwNmJlYjc2YzQwOWQzZThjNjU0OTc1
Y2E5ZjdlYjYzLi4wNDg2NDI4NTFmOWQ3YjhjMzlmMWRjOTg1MzQ4M2QwYjY4ZWE1ZGI3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0Nv
bnRleHRJbXBsQ2Fpcm8uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NhaXJvL0dyYXBoaWNzQ29udGV4dEltcGxDYWlyby5jcHAKQEAgLTI4Niw2ICsyODYsMTIgQEAg
dm9pZCBHcmFwaGljc0NvbnRleHRJbXBsQ2Fpcm86OmRyYXdOYXRpdmVJbWFnZShjb25zdCBOYXRp
dmVJbWFnZVB0ciYgaW1hZ2UsIGNvbnMKICAgICBDYWlybzo6ZHJhd05hdGl2ZUltYWdlKG1fcGxh
dGZvcm1Db250ZXh0LCBpbWFnZS5nZXQoKSwgZGVzdFJlY3QsIHNyY1JlY3QsIHsgb3B0aW9ucywg
c3RhdGUuaW1hZ2VJbnRlcnBvbGF0aW9uUXVhbGl0eSB9LCBzdGF0ZS5hbHBoYSwgQ2Fpcm86OlNo
YWRvd1N0YXRlKHN0YXRlKSk7CiB9CiAKK2Jvb2wgR3JhcGhpY3NDb250ZXh0SW1wbENhaXJvOjpk
cmF3SW1hZ2VCdWZmZXIoSW1hZ2VCdWZmZXImLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBGbG9h
dFJlY3QmLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYpCit7CisgICAgLy8gRklYTUU6IE5v
dCBpbXBsZW1lbnRlZC4KKyAgICByZXR1cm4gZmFsc2U7Cit9CisKIHZvaWQgR3JhcGhpY3NDb250
ZXh0SW1wbENhaXJvOjpkcmF3UGF0dGVybihJbWFnZSYgaW1hZ2UsIGNvbnN0IEZsb2F0UmVjdCYg
ZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgdGlsZVJlY3QsIGNvbnN0IEFmZmluZVRyYW5zZm9y
bSYgcGF0dGVyblRyYW5zZm9ybSwgY29uc3QgRmxvYXRQb2ludCYgcGhhc2UsIGNvbnN0IEZsb2F0
U2l6ZSYsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBvcHRpb25zKQogewogICAgIGlmIChh
dXRvIHN1cmZhY2UgPSBpbWFnZS5uYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZSgpKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250
ZXh0SW1wbENhaXJvLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9H
cmFwaGljc0NvbnRleHRJbXBsQ2Fpcm8uaAppbmRleCBlNWUyMDc0OGM2ZDc2MjBmMTBjZjIxNTY2
MjhlZjdlMGJlNjAxYzdiLi5kMzBiZjg2OWQ3NDYyZWY4OWU0Y2ExOGExNGYwMTI2ZmJhNjE5Nzgz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFw
aGljc0NvbnRleHRJbXBsQ2Fpcm8uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jYWlyby9HcmFwaGljc0NvbnRleHRJbXBsQ2Fpcm8uaApAQCAtNzQsNyArNzQsOSBAQCBw
dWJsaWM6CiAgICAgSW1hZ2VEcmF3UmVzdWx0IGRyYXdJbWFnZShJbWFnZSYsIGNvbnN0IEZsb2F0
UmVjdCYsIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJikgb3Zl
cnJpZGU7CiAgICAgSW1hZ2VEcmF3UmVzdWx0IGRyYXdUaWxlZEltYWdlKEltYWdlJiwgY29uc3Qg
RmxvYXRSZWN0JiwgY29uc3QgRmxvYXRQb2ludCYsIGNvbnN0IEZsb2F0U2l6ZSYsIGNvbnN0IEZs
b2F0U2l6ZSYsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJikgb3ZlcnJpZGU7CiAgICAgSW1h
Z2VEcmF3UmVzdWx0IGRyYXdUaWxlZEltYWdlKEltYWdlJiwgY29uc3QgRmxvYXRSZWN0JiwgY29u
c3QgRmxvYXRSZWN0JiwgY29uc3QgRmxvYXRTaXplJiwgSW1hZ2U6OlRpbGVSdWxlLCBJbWFnZTo6
VGlsZVJ1bGUsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJikgb3ZlcnJpZGU7CisKICAgICB2
b2lkIGRyYXdOYXRpdmVJbWFnZShjb25zdCBOYXRpdmVJbWFnZVB0ciYsIGNvbnN0IEZsb2F0U2l6
ZSYsIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IEltYWdlUGFpbnRp
bmdPcHRpb25zJikgb3ZlcnJpZGU7CisgICAgYm9vbCBkcmF3SW1hZ2VCdWZmZXIoSW1hZ2VCdWZm
ZXImLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBJbWFnZVBhaW50
aW5nT3B0aW9ucyYpIG92ZXJyaWRlOwogICAgIHZvaWQgZHJhd1BhdHRlcm4oSW1hZ2UmLCBjb25z
dCBGbG9hdFJlY3QmLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mLCBj
b25zdCBGbG9hdFBvaW50JiwgY29uc3QgRmxvYXRTaXplJiwgY29uc3QgSW1hZ2VQYWludGluZ09w
dGlvbnMmKSBvdmVycmlkZTsKIAogICAgIHZvaWQgZHJhd1JlY3QoY29uc3QgRmxvYXRSZWN0Jiwg
ZmxvYXQpIG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3QuaAppbmRleCBhNjM4MzY5MjFkOGRm
Y2ExNjYzOGJkODZhYTkzM2VmYTdlMjY0ZDgxLi5jZjg3ZjFhNzAwYTdiNjg3OGFiOGZhM2I5NzEw
MzlmMWQzMGQ5NDM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3QuaApAQCAtNjQsNiArNjQsOSBAQCBl
bnVtIGNsYXNzIEl0ZW1UeXBlIDogdWludDhfdCB7CiAgICAgRHJhd1RpbGVkU2NhbGVkSW1hZ2Us
CiAjaWYgVVNFKENHKSB8fCBVU0UoQ0FJUk8pIHx8IFVTRShESVJFQ1QyRCkKICAgICBEcmF3TmF0
aXZlSW1hZ2UsCisjZW5kaWYKKyNpZiBFTkFCTEUoR1BVX1BST0NFU1MpCisgICAgRHJhd0ltYWdl
QnVmZmVyLAogI2VuZGlmCiAgICAgRHJhd1BhdHRlcm4sCiAgICAgRHJhd1JlY3QsCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxh
eUxpc3REcmF3aW5nQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3REcmF3aW5nQ29udGV4dC5jcHAKaW5kZXggMjNjYzA3
ZThhZTQ0MmJkY2VhMGQzNjc0YTVhODU1MWM2NWNmZGM4Ny4uZDQ2MTdkMzUxNmY0ZjNlNTFkNzVk
NjQ0MzRhNmEzOTQ1N2EwMDAxZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0RHJhd2luZ0NvbnRleHQuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlz
dERyYXdpbmdDb250ZXh0LmNwcApAQCAtMzMsOSArMzMsOSBAQAogbmFtZXNwYWNlIFdlYkNvcmUg
ewogbmFtZXNwYWNlIERpc3BsYXlMaXN0IHsKIAotRHJhd2luZ0NvbnRleHQ6OkRyYXdpbmdDb250
ZXh0KGNvbnN0IEZsb2F0U2l6ZSYgbG9naWNhbFNpemUsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYg
aW5pdGlhbENUTSwgUmVjb3JkZXI6Ok9ic2VydmVyKiBvYnNlcnZlcikKK0RyYXdpbmdDb250ZXh0
OjpEcmF3aW5nQ29udGV4dChjb25zdCBGbG9hdFNpemUmIGxvZ2ljYWxTaXplLCBjb25zdCBBZmZp
bmVUcmFuc2Zvcm0mIGluaXRpYWxDVE0sIFJlY29yZGVyOjpEZWxlZ2F0ZSogZGVsZWdhdGUpCiAg
ICAgOiBtX2NvbnRleHQoWyZdKEdyYXBoaWNzQ29udGV4dCYgZGlzcGxheUxpc3RDb250ZXh0KSB7
Ci0gICAgICAgIHJldHVybiBtYWtlVW5pcXVlPFJlY29yZGVyPihkaXNwbGF5TGlzdENvbnRleHQs
IG1fZGlzcGxheUxpc3QsIEdyYXBoaWNzQ29udGV4dFN0YXRlKCksIEZsb2F0UmVjdCh7IH0sIGxv
Z2ljYWxTaXplKSwgaW5pdGlhbENUTSwgb2JzZXJ2ZXIpOworICAgICAgICByZXR1cm4gbWFrZVVu
aXF1ZTxSZWNvcmRlcj4oZGlzcGxheUxpc3RDb250ZXh0LCBtX2Rpc3BsYXlMaXN0LCBHcmFwaGlj
c0NvbnRleHRTdGF0ZSgpLCBGbG9hdFJlY3QoeyB9LCBsb2dpY2FsU2l6ZSksIGluaXRpYWxDVE0s
IGRlbGVnYXRlKTsKICAgICB9KQogewogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0RHJhd2luZ0NvbnRleHQuaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlz
dERyYXdpbmdDb250ZXh0LmgKaW5kZXggN2I2NzNmMzJhZDgxNWE1MDA4MWI3ZTdhYjEwODEzMTcx
N2ZkZTU0My4uMjJlZDI1NmU4MGFkMjkzYTA1MjA2OWI3NDMwODhhMTM1MWY0N2NjMCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3Bs
YXlMaXN0RHJhd2luZ0NvbnRleHQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3REcmF3aW5nQ29udGV4dC5oCkBAIC0zNSw3ICsz
NSw3IEBAIG5hbWVzcGFjZSBEaXNwbGF5TGlzdCB7CiBjbGFzcyBEcmF3aW5nQ29udGV4dCB7CiAg
ICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6Ci0gICAgV0VCQ09SRV9FWFBPUlQg
RHJhd2luZ0NvbnRleHQoY29uc3QgRmxvYXRTaXplJiBsb2dpY2FsU2l6ZSwgY29uc3QgQWZmaW5l
VHJhbnNmb3JtJiBpbml0aWFsQ1RNID0geyB9LCBSZWNvcmRlcjo6T2JzZXJ2ZXIqID0gbnVsbHB0
cik7CisgICAgV0VCQ09SRV9FWFBPUlQgRHJhd2luZ0NvbnRleHQoY29uc3QgRmxvYXRTaXplJiBs
b2dpY2FsU2l6ZSwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBpbml0aWFsQ1RNID0geyB9LCBSZWNv
cmRlcjo6RGVsZWdhdGUqID0gbnVsbHB0cik7CiAKICAgICBHcmFwaGljc0NvbnRleHQmIGNvbnRl
eHQoKSBjb25zdCB7IHJldHVybiBjb25zdF9jYXN0PERyYXdpbmdDb250ZXh0Jj4oKnRoaXMpLm1f
Y29udGV4dDsgfQogICAgIFdFQkNPUkVfRVhQT1JUIFJlY29yZGVyJiByZWNvcmRlcigpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rp
c3BsYXlMaXN0SW1hZ2VCdWZmZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEltYWdlQnVmZmVyLmgKaW5kZXggNmZkOTEyZGZiOGZl
MTFjMDk4ZGQ2MTI2YThjODc4YWM2YmE3YWUwMi4uMzI1OTllMDYyZDdjZjU5ZDFkYzJlYWQwMWU3
NjBkNjZlM2Y3ZWMzYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SW1hZ2VCdWZmZXIuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJbWFnZUJ1ZmZl
ci5oCkBAIC0zMiw3ICszMiw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIG5hbWVzcGFjZSBEaXNw
bGF5TGlzdCB7CiAKIHRlbXBsYXRlPHR5cGVuYW1lIEJhY2tlbmRUeXBlPgotY2xhc3MgSW1hZ2VC
dWZmZXIgOiBwdWJsaWMgQ29uY3JldGVJbWFnZUJ1ZmZlcjxCYWNrZW5kVHlwZT4sIHB1YmxpYyBS
ZWNvcmRlcjo6T2JzZXJ2ZXIgeworY2xhc3MgSW1hZ2VCdWZmZXIgOiBwdWJsaWMgQ29uY3JldGVJ
bWFnZUJ1ZmZlcjxCYWNrZW5kVHlwZT4gewogICAgIHVzaW5nIEJhc2VDb25jcmV0ZUltYWdlQnVm
ZmVyID0gQ29uY3JldGVJbWFnZUJ1ZmZlcjxCYWNrZW5kVHlwZT47CiAKIHB1YmxpYzoKQEAgLTQ4
LDEyICs0OCwxMiBAQCBwdWJsaWM6CiAKICAgICBJbWFnZUJ1ZmZlcihzdGQ6OnVuaXF1ZV9wdHI8
QmFja2VuZFR5cGU+JiYgZGF0YUJhY2tlbmQsIGNvbnN0IEZsb2F0U2l6ZSYgc2l6ZSkKICAgICAg
ICAgOiBCYXNlQ29uY3JldGVJbWFnZUJ1ZmZlcihXVEZNb3ZlKGRhdGFCYWNrZW5kKSkKLSAgICAg
ICAgLCBtX2RyYXdpbmdDb250ZXh0KHNpemUsIGluaXRpYWxEcmF3aW5nQ29udGV4dENUTShzaXpl
KSwgdGhpcykKKyAgICAgICAgLCBtX2RyYXdpbmdDb250ZXh0KHNpemUsIGluaXRpYWxEcmF3aW5n
Q29udGV4dENUTShzaXplKSkKICAgICB7CiAgICAgfQogCi0gICAgSW1hZ2VCdWZmZXIoY29uc3Qg
RmxvYXRTaXplJiBzaXplKQotICAgICAgICA6IG1fZHJhd2luZ0NvbnRleHQoc2l6ZSwgaW5pdGlh
bERyYXdpbmdDb250ZXh0Q1RNKHNpemUpLCB0aGlzKQorICAgIEltYWdlQnVmZmVyKGNvbnN0IEZs
b2F0U2l6ZSYgc2l6ZSwgUmVjb3JkZXI6OkRlbGVnYXRlKiBkZWxlZ2F0ZSA9IG51bGxwdHIpCisg
ICAgICAgIDogbV9kcmF3aW5nQ29udGV4dChzaXplLCBpbml0aWFsRHJhd2luZ0NvbnRleHRDVE0o
c2l6ZSksIGRlbGVnYXRlKQogICAgIHsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1zLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlz
dEl0ZW1zLmNwcAppbmRleCAxOGQ3MGNmYmQyNDA5ODU4Njg0NDlmYjM1OWE5Zjg1ZWJkZmQzNjM2
Li4yNzllZTYxMjg2MjUyY2VlYzY4MDZkYWUyMWQyM2NhNjQyNDE5YzM2IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJ
dGVtcy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxp
c3RzL0Rpc3BsYXlMaXN0SXRlbXMuY3BwCkBAIC0zMCw3ICszMCw2IEBACiAjaW5jbHVkZSAiRm9u
dENhc2NhZGUuaCIKICNpbmNsdWRlICJJbWFnZURhdGEuaCIKICNpbmNsdWRlICJNZWRpYVBsYXll
ci5oIgotI2luY2x1ZGUgIlNoYXJlZEJ1ZmZlci5oIgogI2luY2x1ZGUgPHd0Zi90ZXh0L1RleHRT
dHJlYW0uaD4KIAogI2lmIFVTRShDRykKQEAgLTEwOSw2ICsxMDgsMTAgQEAgc2l6ZV90IEl0ZW06
OnNpemVJbkJ5dGVzKGNvbnN0IEl0ZW0mIGl0ZW0pCiAjaWYgVVNFKENHKSB8fCBVU0UoQ0FJUk8p
CiAgICAgY2FzZSBJdGVtVHlwZTo6RHJhd05hdGl2ZUltYWdlOgogICAgICAgICByZXR1cm4gc2l6
ZW9mKGRvd25jYXN0PERyYXdOYXRpdmVJbWFnZT4oaXRlbSkpOworI2VuZGlmCisjaWYgRU5BQkxF
KEdQVV9QUk9DRVNTKQorICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdJbWFnZUJ1ZmZlcjoKKyAgICAg
ICAgcmV0dXJuIHNpemVvZihkb3duY2FzdDxEcmF3SW1hZ2VCdWZmZXI+KGl0ZW0pKTsKICNlbmRp
ZgogICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdQYXR0ZXJuOgogICAgICAgICByZXR1cm4gc2l6ZW9m
KGRvd25jYXN0PERyYXdQYXR0ZXJuPihpdGVtKSk7CkBAIC03NDEsNiArNzQ0LDM0IEBAIHN0YXRp
YyBUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mIHRzLCBjb25zdCBEcmF3TmF0aXZl
SW1hZ2UmIGl0ZW0pCiB9CiAjZW5kaWYKIAorI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykKK0RyYXdJ
bWFnZUJ1ZmZlcjo6RHJhd0ltYWdlQnVmZmVyKFJlbW90ZVJlc291cmNlSWRlbnRpZmllciByZW1v
dGVSZXNvdXJjZUlkZW50aWZpZXIsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZs
b2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmIG9wdGlvbnMpCisg
ICAgOiBEcmF3aW5nSXRlbShJdGVtVHlwZTo6RHJhd0ltYWdlQnVmZmVyKQorICAgICwgbV9yZW1v
dGVSZXNvdXJjZUlkZW50aWZpZXIocmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyKQorICAgICwgbV9k
ZXN0aW5hdGlvblJlY3QoZGVzdFJlY3QpCisgICAgLCBtX3NyY1JlY3Qoc3JjUmVjdCkKKyAgICAs
IG1fb3B0aW9ucyhvcHRpb25zKQoreworfQorCitEcmF3SW1hZ2VCdWZmZXI6On5EcmF3SW1hZ2VC
dWZmZXIoKSA9IGRlZmF1bHQ7CisKK3ZvaWQgRHJhd0ltYWdlQnVmZmVyOjphcHBseShHcmFwaGlj
c0NvbnRleHQmKSBjb25zdAoreworICAgIC8vIFNob3VsZCBiZSBoYW5kbGVkIGJ5IHRoZSBkZWxl
Z2F0ZS4KKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKK30KKworc3RhdGljIFRleHRTdHJlYW0m
IG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYgdHMsIGNvbnN0IERyYXdJbWFnZUJ1ZmZlciYgaXRlbSkK
K3sKKyAgICB0cyA8PCBzdGF0aWNfY2FzdDxjb25zdCBEcmF3aW5nSXRlbSY+KGl0ZW0pOworICAg
IHRzLmR1bXBQcm9wZXJ0eSgicmVtb3RlLXJlc291cmNlLWlkZW50aWZpZXIiLCBpdGVtLnJlbW90
ZVJlc291cmNlSWRlbnRpZmllcigpKTsKKyAgICB0cy5kdW1wUHJvcGVydHkoInNvdXJjZS1yZWN0
IiwgaXRlbS5zb3VyY2UoKSk7CisgICAgdHMuZHVtcFByb3BlcnR5KCJkZXN0LXJlY3QiLCBpdGVt
LmRlc3RpbmF0aW9uUmVjdCgpKTsKKyAgICByZXR1cm4gdHM7Cit9CisjZW5kaWYKKwogRHJhd1Bh
dHRlcm46OkRyYXdQYXR0ZXJuKEltYWdlJiBpbWFnZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVj
dCwgY29uc3QgRmxvYXRSZWN0JiB0aWxlUmVjdCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBwYXR0
ZXJuVHJhbnNmb3JtLCBjb25zdCBGbG9hdFBvaW50JiBwaGFzZSwgY29uc3QgRmxvYXRTaXplJiBz
cGFjaW5nLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgb3B0aW9ucykKICAgICA6IERyYXdp
bmdJdGVtKEl0ZW1UeXBlOjpEcmF3UGF0dGVybikKICAgICAsIG1faW1hZ2UoaW1hZ2UpCkBAIC0x
NDcxLDYgKzE1MDIsOSBAQCBzdGF0aWMgVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFt
JiB0cywgY29uc3QgSXRlbVR5cGUmIHR5cGUpCiAgICAgY2FzZSBJdGVtVHlwZTo6RHJhd1RpbGVk
U2NhbGVkSW1hZ2U6IHRzIDw8ICJkcmF3LXRpbGVkLXNjYWxlZC1pbWFnZSI7IGJyZWFrOwogI2lm
IFVTRShDRykgfHwgVVNFKENBSVJPKQogICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdOYXRpdmVJbWFn
ZTogdHMgPDwgImRyYXctbmF0aXZlLWltYWdlIjsgYnJlYWs7CisjZW5kaWYKKyNpZiBFTkFCTEUo
R1BVX1BST0NFU1MpCisgICAgY2FzZSBJdGVtVHlwZTo6RHJhd0ltYWdlQnVmZmVyOiB0cyA8PCAi
ZHJhdy1pbWFnZS1idWZmZXIiOyBicmVhazsKICNlbmRpZgogICAgIGNhc2UgSXRlbVR5cGU6OkRy
YXdQYXR0ZXJuOiB0cyA8PCAiZHJhdy1wYXR0ZXJuIjsgYnJlYWs7CiAgICAgY2FzZSBJdGVtVHlw
ZTo6RHJhd1JlY3Q6IHRzIDw8ICJkcmF3LXJlY3QiOyBicmVhazsKQEAgLTE1NzUsNiArMTYwOSwx
MSBAQCBUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mIHRzLCBjb25zdCBJdGVtJiBp
dGVtKQogICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdOYXRpdmVJbWFnZToKICAgICAgICAgdHMgPDwg
ZG93bmNhc3Q8RHJhd05hdGl2ZUltYWdlPihpdGVtKTsKICAgICAgICAgYnJlYWs7CisjZW5kaWYK
KyNpZiBFTkFCTEUoR1BVX1BST0NFU1MpCisgICAgY2FzZSBJdGVtVHlwZTo6RHJhd0ltYWdlQnVm
ZmVyOgorICAgICAgICB0cyA8PCBkb3duY2FzdDxEcmF3SW1hZ2VCdWZmZXI+KGl0ZW0pOworICAg
ICAgICBicmVhazsKICNlbmRpZgogICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdQYXR0ZXJuOgogICAg
ICAgICB0cyA8PCBkb3duY2FzdDxEcmF3UGF0dGVybj4oaXRlbSk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVt
cy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3Bs
YXlMaXN0SXRlbXMuaAppbmRleCBjYjY4NGQyM2NlNzViNGZhYjllYzQxMzE2MjdhY2QzMmQ2MjRh
ZWRiLi4yMTQyODMxM2MzZTI4MGUwNmY2Y2FmYWFiN2Y2NjZiNzk3YWQ4NTY5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxp
c3RJdGVtcy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXls
aXN0cy9EaXNwbGF5TGlzdEl0ZW1zLmgKQEAgLTM1LDYgKzM1LDcgQEAKICNpbmNsdWRlICJJbWFn
ZURhdGEuaCIKICNpbmNsdWRlICJNZWRpYVBsYXllcklkZW50aWZpZXIuaCIKICNpbmNsdWRlICJQ
YXR0ZXJuLmgiCisjaW5jbHVkZSAiUmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyLmgiCiAjaW5jbHVk
ZSAiU2hhcmVkQnVmZmVyLmgiCiAjaW5jbHVkZSA8d3RmL1R5cGVDYXN0cy5oPgogCkBAIC0xNTE2
LDYgKzE1MTcsNzMgQEAgT3B0aW9uYWw8UmVmPERyYXdOYXRpdmVJbWFnZT4+IERyYXdOYXRpdmVJ
bWFnZTo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCiB9CiAjZW5kaWYKIAorI2lmIEVOQUJMRShH
UFVfUFJPQ0VTUykKK2NsYXNzIERyYXdJbWFnZUJ1ZmZlciA6IHB1YmxpYyBEcmF3aW5nSXRlbSB7
CitwdWJsaWM6CisgICAgc3RhdGljIFJlZjxEcmF3SW1hZ2VCdWZmZXI+IGNyZWF0ZShSZW1vdGVS
ZXNvdXJjZUlkZW50aWZpZXIgcmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyLCBjb25zdCBGbG9hdFJl
Y3QmIGRlc3RpbmF0aW9uLCBjb25zdCBGbG9hdFJlY3QmIHNvdXJjZSwgY29uc3QgSW1hZ2VQYWlu
dGluZ09wdGlvbnMmIG9wdGlvbnMpCisgICAgeworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5l
dyBEcmF3SW1hZ2VCdWZmZXIocmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyLCBkZXN0aW5hdGlvbiwg
c291cmNlLCBvcHRpb25zKSk7CisgICAgfQorCisgICAgV0VCQ09SRV9FWFBPUlQgdmlydHVhbCB+
RHJhd0ltYWdlQnVmZmVyKCk7CisKKyAgICBSZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIgcmVtb3Rl
UmVzb3VyY2VJZGVudGlmaWVyKCkgY29uc3QgeyByZXR1cm4gbV9yZW1vdGVSZXNvdXJjZUlkZW50
aWZpZXI7IH0KKyAgICBGbG9hdFJlY3Qgc291cmNlKCkgY29uc3QgeyByZXR1cm4gbV9zcmNSZWN0
OyB9CisgICAgRmxvYXRSZWN0IGRlc3RpbmF0aW9uUmVjdCgpIGNvbnN0IHsgcmV0dXJuIG1fZGVz
dGluYXRpb25SZWN0OyB9CisgICAgSW1hZ2VQYWludGluZ09wdGlvbnMgb3B0aW9ucygpIGNvbnN0
IHsgcmV0dXJuIG1fb3B0aW9uczsgfQorCisgICAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4gdm9p
ZCBlbmNvZGUoRW5jb2RlciYpIGNvbnN0OworICAgIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+IHN0
YXRpYyBPcHRpb25hbDxSZWY8RHJhd0ltYWdlQnVmZmVyPj4gZGVjb2RlKERlY29kZXImKTsKKwor
cHJpdmF0ZToKKyAgICBXRUJDT1JFX0VYUE9SVCBEcmF3SW1hZ2VCdWZmZXIoUmVtb3RlUmVzb3Vy
Y2VJZGVudGlmaWVyLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RpbmF0aW9uLCBjb25zdCBGbG9hdFJl
Y3QmIHNvdXJjZSwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmKTsKKworICAgIHZvaWQgYXBw
bHkoR3JhcGhpY3NDb250ZXh0JikgY29uc3Qgb3ZlcnJpZGU7CisKKyAgICBPcHRpb25hbDxGbG9h
dFJlY3Q+IGxvY2FsQm91bmRzKGNvbnN0IEdyYXBoaWNzQ29udGV4dCYpIGNvbnN0IG92ZXJyaWRl
IHsgcmV0dXJuIG1fZGVzdGluYXRpb25SZWN0OyB9CisKKyAgICBSZW1vdGVSZXNvdXJjZUlkZW50
aWZpZXIgbV9yZW1vdGVSZXNvdXJjZUlkZW50aWZpZXI7CisgICAgRmxvYXRSZWN0IG1fZGVzdGlu
YXRpb25SZWN0OworICAgIEZsb2F0UmVjdCBtX3NyY1JlY3Q7CisgICAgSW1hZ2VQYWludGluZ09w
dGlvbnMgbV9vcHRpb25zOworfTsKKwordGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4KK3ZvaWQgRHJh
d0ltYWdlQnVmZmVyOjplbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QKK3sKKyAgICBlbmNv
ZGVyIDw8IG1fcmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyOworICAgIGVuY29kZXIgPDwgbV9kZXN0
aW5hdGlvblJlY3Q7CisgICAgZW5jb2RlciA8PCBtX3NyY1JlY3Q7CisgICAgZW5jb2RlciA8PCBt
X29wdGlvbnM7Cit9CisKK3RlbXBsYXRlPGNsYXNzIERlY29kZXI+CitPcHRpb25hbDxSZWY8RHJh
d0ltYWdlQnVmZmVyPj4gRHJhd0ltYWdlQnVmZmVyOjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikK
K3sKKyAgICBPcHRpb25hbDxSZW1vdGVSZXNvdXJjZUlkZW50aWZpZXI+IHJlbW90ZVJlc291cmNl
SWRlbnRpZmllcjsKKyAgICBkZWNvZGVyID4+IHJlbW90ZVJlc291cmNlSWRlbnRpZmllcjsKKyAg
ICBpZiAoIXJlbW90ZVJlc291cmNlSWRlbnRpZmllcikKKyAgICAgICAgcmV0dXJuIFdURjo6bnVs
bG9wdDsKKworICAgIE9wdGlvbmFsPEZsb2F0UmVjdD4gZGVzdGluYXRpb247CisgICAgZGVjb2Rl
ciA+PiBkZXN0aW5hdGlvbjsKKyAgICBpZiAoIWRlc3RpbmF0aW9uKQorICAgICAgICByZXR1cm4g
V1RGOjpudWxsb3B0OworCisgICAgT3B0aW9uYWw8RmxvYXRSZWN0PiBzb3VyY2U7CisgICAgZGVj
b2RlciA+PiBzb3VyY2U7CisgICAgaWYgKCFzb3VyY2UpCisgICAgICAgIHJldHVybiBXVEY6Om51
bGxvcHQ7CisKKyAgICBPcHRpb25hbDxJbWFnZVBhaW50aW5nT3B0aW9ucz4gb3B0aW9uczsKKyAg
ICBkZWNvZGVyID4+IG9wdGlvbnM7CisgICAgaWYgKCFvcHRpb25zKQorICAgICAgICByZXR1cm4g
V1RGOjpudWxsb3B0OworCisgICAgcmV0dXJuIERyYXdJbWFnZUJ1ZmZlcjo6Y3JlYXRlKCpyZW1v
dGVSZXNvdXJjZUlkZW50aWZpZXIsICpkZXN0aW5hdGlvbiwgKnNvdXJjZSwgKm9wdGlvbnMpOwor
fQorI2VuZGlmIC8vIEVOQUJMRShHUFVfUFJPQ0VTUykKKwogY2xhc3MgRHJhd1BhdHRlcm4gOiBw
dWJsaWMgRHJhd2luZ0l0ZW0gewogcHVibGljOgogICAgIHN0YXRpYyBSZWY8RHJhd1BhdHRlcm4+
IGNyZWF0ZShJbWFnZSYgaW1hZ2UsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZs
b2F0UmVjdCYgdGlsZVJlY3QsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgcGF0dGVyblRyYW5zZm9y
bSwgY29uc3QgRmxvYXRQb2ludCYgcGhhc2UsIGNvbnN0IEZsb2F0U2l6ZSYgc3BhY2luZywgY29u
c3QgSW1hZ2VQYWludGluZ09wdGlvbnMmIG9wdGlvbnMpCkBAIC0yOTc3LDYgKzMwNDUsMTEgQEAg
dm9pZCBJdGVtOjplbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QKICAgICBjYXNlIEl0ZW1U
eXBlOjpEcmF3TmF0aXZlSW1hZ2U6CiAgICAgICAgIGVuY29kZXIgPDwgZG93bmNhc3Q8RHJhd05h
dGl2ZUltYWdlPigqdGhpcyk7CiAgICAgICAgIGJyZWFrOworI2VuZGlmCisjaWYgRU5BQkxFKEdQ
VV9QUk9DRVNTKQorICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdJbWFnZUJ1ZmZlcjoKKyAgICAgICAg
ZW5jb2RlciA8PCBkb3duY2FzdDxEcmF3SW1hZ2VCdWZmZXI+KCp0aGlzKTsKKyAgICAgICAgYnJl
YWs7CiAjZW5kaWYKICAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3UGF0dGVybjoKICAgICAgICAgZW5j
b2RlciA8PCBkb3duY2FzdDxEcmF3UGF0dGVybj4oKnRoaXMpOwpAQCAtMzE2OSw2ICszMjQyLDEy
IEBAIE9wdGlvbmFsPFJlZjxJdGVtPj4gSXRlbTo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCiAg
ICAgICAgIGlmIChhdXRvIGl0ZW0gPSBEcmF3TmF0aXZlSW1hZ2U6OmRlY29kZShkZWNvZGVyKSkK
ICAgICAgICAgICAgIHJldHVybiBzdGF0aWNfcmVmZXJlbmNlX2Nhc3Q8SXRlbT4oV1RGTW92ZSgq
aXRlbSkpOwogICAgICAgICBicmVhazsKKyNlbmRpZgorI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykK
KyAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3SW1hZ2VCdWZmZXI6CisgICAgICAgIGlmIChhdXRvIGl0
ZW0gPSBEcmF3SW1hZ2VCdWZmZXI6OmRlY29kZShkZWNvZGVyKSkKKyAgICAgICAgICAgIHJldHVy
biBzdGF0aWNfcmVmZXJlbmNlX2Nhc3Q8SXRlbT4oV1RGTW92ZSgqaXRlbSkpOworICAgICAgICBi
cmVhazsKICNlbmRpZgogICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdQYXR0ZXJuOgogICAgICAgICBp
ZiAoYXV0byBpdGVtID0gRHJhd1BhdHRlcm46OmRlY29kZShkZWNvZGVyKSkKQEAgLTMzMjksNiAr
MzQwOCw5IEBAIFNQRUNJQUxJWkVfVFlQRV9UUkFJVFNfRElTUExBWUxJU1RfSVRFTShEcmF3VGls
ZWRTY2FsZWRJbWFnZSkKICNpZiBVU0UoQ0cpIHx8IFVTRShDQUlSTykKIFNQRUNJQUxJWkVfVFlQ
RV9UUkFJVFNfRElTUExBWUxJU1RfSVRFTShEcmF3TmF0aXZlSW1hZ2UpCiAjZW5kaWYKKyNpZiBF
TkFCTEUoR1BVX1BST0NFU1MpCitTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0RJU1BMQVlMSVNUX0lU
RU0oRHJhd0ltYWdlQnVmZmVyKQorI2VuZGlmCiBTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0RJU1BM
QVlMSVNUX0lURU0oRHJhd1BhdHRlcm4pCiBTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0RJU1BMQVlM
SVNUX0lURU0oRHJhd1JlY3QpCiBTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0RJU1BMQVlMSVNUX0lU
RU0oRHJhd0xpbmUpCkBAIC0zMzkwLDYgKzM0NzIsOSBAQCB0ZW1wbGF0ZTw+IHN0cnVjdCBFbnVt
VHJhaXRzPFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtVHlwZT4gewogICAgIFdlYkNvcmU6OkRp
c3BsYXlMaXN0OjpJdGVtVHlwZTo6RHJhd1RpbGVkU2NhbGVkSW1hZ2UsCiAjaWYgVVNFKENHKSB8
fCBVU0UoQ0FJUk8pIHx8IFVTRShESVJFQ1QyRCkKICAgICBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6
SXRlbVR5cGU6OkRyYXdOYXRpdmVJbWFnZSwKKyNlbmRpZgorI2lmIEVOQUJMRShHUFVfUFJPQ0VT
UykKKyAgICBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OkRyYXdJbWFnZUJ1ZmZlciwK
ICNlbmRpZgogICAgIFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtVHlwZTo6RHJhd1BhdHRlcm4s
CiAgICAgV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpEcmF3UmVjdCwKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5
TGlzdFJlY29yZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3Bs
YXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVyLmNwcAppbmRleCBkZDM1ZWYxYTI4YTkwNzFkYWVm
OWEwYThkNzdkOTg0MDFlYTA4MDFkLi5hNjRhNDQ3YTRlNjc5ZmM2ZGZjYjZkYzg1ZWZmMmFjMTQ0
YzhiYjVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNw
bGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIuY3BwCkBAIC0z
NywxMCArMzcsMTAgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIG5hbWVzcGFjZSBEaXNwbGF5TGlz
dCB7CiAKLVJlY29yZGVyOjpSZWNvcmRlcihHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIERpc3Bs
YXlMaXN0JiBkaXNwbGF5TGlzdCwgY29uc3QgR3JhcGhpY3NDb250ZXh0U3RhdGUmIHN0YXRlLCBj
b25zdCBGbG9hdFJlY3QmIGluaXRpYWxDbGlwLCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIGluaXRp
YWxDVE0sIE9ic2VydmVyKiBvYnNlcnZlcikKK1JlY29yZGVyOjpSZWNvcmRlcihHcmFwaGljc0Nv
bnRleHQmIGNvbnRleHQsIERpc3BsYXlMaXN0JiBkaXNwbGF5TGlzdCwgY29uc3QgR3JhcGhpY3ND
b250ZXh0U3RhdGUmIHN0YXRlLCBjb25zdCBGbG9hdFJlY3QmIGluaXRpYWxDbGlwLCBjb25zdCBB
ZmZpbmVUcmFuc2Zvcm0mIGluaXRpYWxDVE0sIERlbGVnYXRlKiBkZWxlZ2F0ZSkKICAgICA6IEdy
YXBoaWNzQ29udGV4dEltcGwoY29udGV4dCwgaW5pdGlhbENsaXAsIEFmZmluZVRyYW5zZm9ybSgp
KQogICAgICwgbV9kaXNwbGF5TGlzdChkaXNwbGF5TGlzdCkKLSAgICAsIG1fb2JzZXJ2ZXIob2Jz
ZXJ2ZXIpCisgICAgLCBtX2RlbGVnYXRlKGRlbGVnYXRlKQogewogICAgIExPR19XSVRIX1NUUkVB
TShEaXNwbGF5TGlzdHMsIHN0cmVhbSA8PCAiXG5SZWNvcmRpbmcgd2l0aCBjbGlwICIgPDwgaW5p
dGlhbENsaXApOwogICAgIG1fc3RhdGVTdGFjay5hcHBlbmQoeyBzdGF0ZSwgaW5pdGlhbENUTSwg
aW5pdGlhbENsaXAgfSk7CkBAIC01MiwxNSArNTIsMTUgQEAgUmVjb3JkZXI6On5SZWNvcmRlcigp
CiAgICAgTE9HKERpc3BsYXlMaXN0cywgIlJlY29yZGVkIGRpc3BsYXkgbGlzdDpcbiVzIiwgbV9k
aXNwbGF5TGlzdC5kZXNjcmlwdGlvbigpLmRhdGEoKSk7CiB9CiAKLXZvaWQgUmVjb3JkZXI6OnB1
dEltYWdlRGF0YShXZWJDb3JlOjpBbHBoYVByZW11bHRpcGxpY2F0aW9uIGlucHV0Rm9ybWF0LCBj
b25zdCBXZWJDb3JlOjpJbWFnZURhdGEmIGltYWdlRGF0YSwgY29uc3QgV2ViQ29yZTo6SW50UmVj
dCYgc3JjUmVjdCwgY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmIGRlc3RQb2ludCwgV2ViQ29yZTo6
QWxwaGFQcmVtdWx0aXBsaWNhdGlvbiBkZXN0Rm9ybWF0KQordm9pZCBSZWNvcmRlcjo6cHV0SW1h
Z2VEYXRhKEFscGhhUHJlbXVsdGlwbGljYXRpb24gaW5wdXRGb3JtYXQsIGNvbnN0IEltYWdlRGF0
YSYgaW1hZ2VEYXRhLCBjb25zdCBJbnRSZWN0JiBzcmNSZWN0LCBjb25zdCBJbnRQb2ludCYgZGVz
dFBvaW50LCBBbHBoYVByZW11bHRpcGxpY2F0aW9uIGRlc3RGb3JtYXQpCiB7Ci0gICAgYXBwZW5k
SXRlbShXZWJDb3JlOjpEaXNwbGF5TGlzdDo6UHV0SW1hZ2VEYXRhOjpjcmVhdGUoaW5wdXRGb3Jt
YXQsIGltYWdlRGF0YSwgc3JjUmVjdCwgZGVzdFBvaW50LCBkZXN0Rm9ybWF0KSk7CisgICAgYXBw
ZW5kSXRlbShQdXRJbWFnZURhdGE6OmNyZWF0ZShpbnB1dEZvcm1hdCwgaW1hZ2VEYXRhLCBzcmNS
ZWN0LCBkZXN0UG9pbnQsIGRlc3RGb3JtYXQpKTsKIH0KIAogdm9pZCBSZWNvcmRlcjo6d2lsbEFw
cGVuZEl0ZW0oY29uc3QgSXRlbSYgaXRlbSkKIHsKLSAgICBpZiAobV9vYnNlcnZlcikKLSAgICAg
ICAgbV9vYnNlcnZlci0+d2lsbEFwcGVuZEl0ZW0oaXRlbSk7CisgICAgaWYgKG1fZGVsZWdhdGUp
CisgICAgICAgIG1fZGVsZWdhdGUtPndpbGxBcHBlbmRJdGVtKGl0ZW0pOwogCiAgICAgaWYgKGl0
ZW0uaXNEcmF3aW5nSXRlbSgpCiAjaWYgVVNFKENHKQpAQCAtMTM5LDYgKzEzOSwxOSBAQCB2b2lk
IFJlY29yZGVyOjpkcmF3TmF0aXZlSW1hZ2UoY29uc3QgTmF0aXZlSW1hZ2VQdHImIGltYWdlLCBj
b25zdCBGbG9hdFNpemUmIGltYQogfQogI2VuZGlmCiAKK2Jvb2wgUmVjb3JkZXI6OmRyYXdJbWFn
ZUJ1ZmZlcihJbWFnZUJ1ZmZlciYgaW1hZ2UsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdGluYXRpb24s
IGNvbnN0IEZsb2F0UmVjdCYgc291cmNlLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgb3B0
aW9ucykKK3sKKyAgICBpZiAoIW1fZGVsZWdhdGUpCisgICAgICAgIHJldHVybiBmYWxzZTsKKwor
ICAgIGlmIChhdXRvIGl0ZW0gPSBtX2RlbGVnYXRlLT5jcmVhdGVEcmF3SW1hZ2VCdWZmZXJJdGVt
KGltYWdlLCBkZXN0aW5hdGlvbiwgc291cmNlLCBvcHRpb25zKSkgeworICAgICAgICBhcHBlbmRJ
dGVtQW5kVXBkYXRlRXh0ZW50KHN0YXRpY19yZWZlcmVuY2VfY2FzdDxEcmF3aW5nSXRlbT4oaXRl
bS5yZWxlYXNlTm9uTnVsbCgpKSk7CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKworICAg
IHJldHVybiBmYWxzZTsKK30KKwogdm9pZCBSZWNvcmRlcjo6ZHJhd1BhdHRlcm4oSW1hZ2UmIGlt
YWdlLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHRpbGVSZWN0
LCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIHBhdHRlcm5UcmFuc2Zvcm0sIGNvbnN0IEZsb2F0UG9p
bnQmIHBoYXNlLCBjb25zdCBGbG9hdFNpemUmIHNwYWNpbmcsIGNvbnN0IEltYWdlUGFpbnRpbmdP
cHRpb25zJiBvcHRpb25zKQogewogICAgIGFwcGVuZEl0ZW1BbmRVcGRhdGVFeHRlbnQoRHJhd1Bh
dHRlcm46OmNyZWF0ZShpbWFnZSwgZGVzdFJlY3QsIHRpbGVSZWN0LCBwYXR0ZXJuVHJhbnNmb3Jt
LCBwaGFzZSwgc3BhY2luZywgb3B0aW9ucykpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJl
Y29yZGVyLmgKaW5kZXggOWVlMWQzOTM4ZjIzMmYzZjE4ZDk3OGFmNzE4NzAxZDhiZTQ2MzA3Mi4u
ZTYwNGQ3Y2ZlOTlkMDE0YzIwY2JjYmYyMmMwMzRlYmJlODUxMzVhOSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVj
b3JkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlz
dHMvRGlzcGxheUxpc3RSZWNvcmRlci5oCkBAIC0yOCw2ICsyOCw3IEBACiAjaW5jbHVkZSAiRGlz
cGxheUxpc3QuaCIKICNpbmNsdWRlICJHcmFwaGljc0NvbnRleHRJbXBsLmgiCiAjaW5jbHVkZSAi
SW1hZ2UuaCIgLy8gRm9yIEltYWdlOjpUaWxlUnVsZS4KKyNpbmNsdWRlICJSZW1vdGVSZXNvdXJj
ZUlkZW50aWZpZXIuaCIKICNpbmNsdWRlICJUZXh0RmxhZ3MuaCIKICNpbmNsdWRlIDx3dGYvTm9u
Y29weWFibGUuaD4KIApAQCAtNTMsOCArNTQsOCBAQCBjbGFzcyBSZWNvcmRlciA6IHB1YmxpYyBH
cmFwaGljc0NvbnRleHRJbXBsIHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKICAgICBX
VEZfTUFLRV9OT05DT1BZQUJMRShSZWNvcmRlcik7CiBwdWJsaWM6Ci0gICAgY2xhc3MgT2JzZXJ2
ZXI7Ci0gICAgV0VCQ09SRV9FWFBPUlQgUmVjb3JkZXIoR3JhcGhpY3NDb250ZXh0JiwgRGlzcGxh
eUxpc3QmLCBjb25zdCBHcmFwaGljc0NvbnRleHRTdGF0ZSYsIGNvbnN0IEZsb2F0UmVjdCYgaW5p
dGlhbENsaXAsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYsIE9ic2VydmVyKiA9IG51bGxwdHIpOwor
ICAgIGNsYXNzIERlbGVnYXRlOworICAgIFdFQkNPUkVfRVhQT1JUIFJlY29yZGVyKEdyYXBoaWNz
Q29udGV4dCYsIERpc3BsYXlMaXN0JiwgY29uc3QgR3JhcGhpY3NDb250ZXh0U3RhdGUmLCBjb25z
dCBGbG9hdFJlY3QmIGluaXRpYWxDbGlwLCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mLCBEZWxlZ2F0
ZSogPSBudWxscHRyKTsKICAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIH5SZWNvcmRlcigpOwog
CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBwdXRJbWFnZURhdGEoQWxwaGFQcmVtdWx0aXBsaWNh
dGlvbiBpbnB1dEZvcm1hdCwgY29uc3QgSW1hZ2VEYXRhJiwgY29uc3QgSW50UmVjdCYgc3JjUmVj
dCwgY29uc3QgSW50UG9pbnQmIGRlc3RQb2ludCwgQWxwaGFQcmVtdWx0aXBsaWNhdGlvbiBkZXN0
Rm9ybWF0KTsKQEAgLTYzLDkgKzY0LDEwIEBAIHB1YmxpYzoKIAogICAgIHZvaWQgYXBwZW5kSXRl
bUFuZFVwZGF0ZUV4dGVudChSZWY8RHJhd2luZ0l0ZW0+JiYpOwogCi0gICAgY2xhc3MgT2JzZXJ2
ZXIgeworICAgIGNsYXNzIERlbGVnYXRlIHsKICAgICBwdWJsaWM6Ci0gICAgICAgIHZpcnR1YWwg
fk9ic2VydmVyKCkgeyB9CisgICAgICAgIHZpcnR1YWwgfkRlbGVnYXRlKCkgeyB9CisgICAgICAg
IHZpcnR1YWwgUmVmUHRyPEl0ZW0+IGNyZWF0ZURyYXdJbWFnZUJ1ZmZlckl0ZW0oSW1hZ2VCdWZm
ZXImLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBJbWFnZVBhaW50
aW5nT3B0aW9ucyYpIHsgcmV0dXJuIG51bGxwdHI7IH0KICAgICAgICAgdmlydHVhbCB2b2lkIHdp
bGxBcHBlbmRJdGVtKGNvbnN0IEl0ZW0mKSB7IH07CiAgICAgfTsKIApAQCAtMTA3LDYgKzEwOSw3
IEBAIHByaXZhdGU6CiAjaWYgVVNFKENHKSB8fCBVU0UoQ0FJUk8pIHx8IFVTRShESVJFQ1QyRCkK
ICAgICB2b2lkIGRyYXdOYXRpdmVJbWFnZShjb25zdCBOYXRpdmVJbWFnZVB0ciYsIGNvbnN0IEZs
b2F0U2l6ZSYgc2VsZlNpemUsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0
UmVjdCYgc3JjUmVjdCwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmKSBvdmVycmlkZTsKICNl
bmRpZgorICAgIGJvb2wgZHJhd0ltYWdlQnVmZmVyKEltYWdlQnVmZmVyJiwgY29uc3QgRmxvYXRS
ZWN0JiBkZXN0aW5hdGlvbiwgY29uc3QgRmxvYXRSZWN0JiBzb3VyY2UsIGNvbnN0IEltYWdlUGFp
bnRpbmdPcHRpb25zJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBkcmF3UGF0dGVybihJbWFnZSYsIGNv
bnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3Qg
QWZmaW5lVHJhbnNmb3JtJiwgY29uc3QgRmxvYXRQb2ludCYgcGhhc2UsIGNvbnN0IEZsb2F0U2l6
ZSYgc3BhY2luZywgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmKSBvdmVycmlkZTsKIAogICAg
IHZvaWQgZHJhd1JlY3QoY29uc3QgRmxvYXRSZWN0JiwgZmxvYXQgYm9yZGVyVGhpY2tuZXNzKSBv
dmVycmlkZTsKQEAgLTE4OCw3ICsxOTEsNyBAQCBwcml2YXRlOgogICAgIENvbnRleHRTdGF0ZSYg
Y3VycmVudFN0YXRlKCk7CiAKICAgICBEaXNwbGF5TGlzdCYgbV9kaXNwbGF5TGlzdDsKLSAgICBP
YnNlcnZlciogbV9vYnNlcnZlcjsKKyAgICBEZWxlZ2F0ZSogbV9kZWxlZ2F0ZTsKIAogICAgIFZl
Y3RvcjxDb250ZXh0U3RhdGUsIDMyPiBtX3N0YXRlU3RhY2s7CiB9OwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS9jYWlyby9OaWNvc2lhQ2Fpcm9P
cGVyYXRpb25SZWNvcmRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9u
aWNvc2lhL2NhaXJvL05pY29zaWFDYWlyb09wZXJhdGlvblJlY29yZGVyLmNwcAppbmRleCAzMDRm
YWNiYWIxNTIxNzkxZGFhODZkYjE1MzE3NTNlMzg2NzEwODRkLi40ZTI0ZWViYWRiNjU4N2JhYzYy
YTFmMTVkNTFmNmY4NzZjZGJiNDhlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9uaWNvc2lhL2NhaXJvL05pY29zaWFDYWlyb09wZXJhdGlvblJlY29yZGVyLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lhL2NhaXJvL05p
Y29zaWFDYWlyb09wZXJhdGlvblJlY29yZGVyLmNwcApAQCAtNTcwLDYgKzU3MCwxMiBAQCB2b2lk
IENhaXJvT3BlcmF0aW9uUmVjb3JkZXI6OmRyYXdOYXRpdmVJbWFnZShjb25zdCBOYXRpdmVJbWFn
ZVB0ciYgaW1hZ2UsIGNvbnN0CiAgICAgYXBwZW5kKGNyZWF0ZUNvbW1hbmQ8RHJhd05hdGl2ZUlt
YWdlPihSZWZQdHI8Y2Fpcm9fc3VyZmFjZV90PihpbWFnZS5nZXQoKSksIGRlc3RSZWN0LCBzcmNS
ZWN0LCBJbWFnZVBhaW50aW5nT3B0aW9ucyhvcHRpb25zLCBzdGF0ZS5pbWFnZUludGVycG9sYXRp
b25RdWFsaXR5KSwgc3RhdGUuYWxwaGEsIENhaXJvOjpTaGFkb3dTdGF0ZShzdGF0ZSkpKTsKIH0K
IAorYm9vbCBDYWlyb09wZXJhdGlvblJlY29yZGVyOjpkcmF3SW1hZ2VCdWZmZXIoSW1hZ2VCdWZm
ZXImLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBJbWFnZVBhaW50
aW5nT3B0aW9ucyYpCit7CisgICAgLy8gRklYTUU6IE5vdCBpbXBsZW1lbnRlZC4KKyAgICByZXR1
cm4gZmFsc2U7Cit9CisKIHZvaWQgQ2Fpcm9PcGVyYXRpb25SZWNvcmRlcjo6ZHJhd1BhdHRlcm4o
SW1hZ2UmIGltYWdlLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3Qm
IHRpbGVSZWN0LCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIHBhdHRlcm5UcmFuc2Zvcm0sIGNvbnN0
IEZsb2F0UG9pbnQmIHBoYXNlLCBjb25zdCBGbG9hdFNpemUmIHNwYWNpbmcsIGNvbnN0IEltYWdl
UGFpbnRpbmdPcHRpb25zJiBvcHRpb25zKQogewogICAgIHN0cnVjdCBEcmF3UGF0dGVybiBmaW5h
bCA6IFBhaW50aW5nT3BlcmF0aW9uLCBPcGVyYXRpb25EYXRhPFJlZlB0cjxjYWlyb19zdXJmYWNl
X3Q+LCBJbnRTaXplLCBGbG9hdFJlY3QsIEZsb2F0UmVjdCwgQWZmaW5lVHJhbnNmb3JtLCBGbG9h
dFBvaW50LCBJbWFnZVBhaW50aW5nT3B0aW9ucz4gewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS9jYWlyby9OaWNvc2lhQ2Fpcm9PcGVyYXRpb25S
ZWNvcmRlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS9jYWly
by9OaWNvc2lhQ2Fpcm9PcGVyYXRpb25SZWNvcmRlci5oCmluZGV4IDU3MmZmMjE2NmY2ZTk3M2E3
NjNiNjdjYjZiYjk2ZjQzZjI2YThkNTAuLjM4MDkzZDQxMzViNGQ3YjY1MTFhMTYwODdhZmYxM2Y2
MDNlZDEzYmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL25p
Y29zaWEvY2Fpcm8vTmljb3NpYUNhaXJvT3BlcmF0aW9uUmVjb3JkZXIuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lhL2NhaXJvL05pY29zaWFDYWlyb09wZXJh
dGlvblJlY29yZGVyLmgKQEAgLTY3LDYgKzY3LDggQEAgcHJpdmF0ZToKICAgICBXZWJDb3JlOjpJ
bWFnZURyYXdSZXN1bHQgZHJhd0ltYWdlKFdlYkNvcmU6OkltYWdlJiwgY29uc3QgV2ViQ29yZTo6
RmxvYXRSZWN0JiwgY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0JiwgY29uc3QgV2ViQ29yZTo6SW1h
Z2VQYWludGluZ09wdGlvbnMmKSBvdmVycmlkZTsKICAgICBXZWJDb3JlOjpJbWFnZURyYXdSZXN1
bHQgZHJhd1RpbGVkSW1hZ2UoV2ViQ29yZTo6SW1hZ2UmLCBjb25zdCBXZWJDb3JlOjpGbG9hdFJl
Y3QmLCBjb25zdCBXZWJDb3JlOjpGbG9hdFBvaW50JiwgY29uc3QgV2ViQ29yZTo6RmxvYXRTaXpl
JiwgY29uc3QgV2ViQ29yZTo6RmxvYXRTaXplJiwgY29uc3QgV2ViQ29yZTo6SW1hZ2VQYWludGlu
Z09wdGlvbnMmKSBvdmVycmlkZTsKICAgICBXZWJDb3JlOjpJbWFnZURyYXdSZXN1bHQgZHJhd1Rp
bGVkSW1hZ2UoV2ViQ29yZTo6SW1hZ2UmLCBjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmLCBjb25z
dCBXZWJDb3JlOjpGbG9hdFJlY3QmLCBjb25zdCBXZWJDb3JlOjpGbG9hdFNpemUmLCBXZWJDb3Jl
OjpJbWFnZTo6VGlsZVJ1bGUsIFdlYkNvcmU6OkltYWdlOjpUaWxlUnVsZSwgY29uc3QgV2ViQ29y
ZTo6SW1hZ2VQYWludGluZ09wdGlvbnMmKSBvdmVycmlkZTsKKworICAgIGJvb2wgZHJhd0ltYWdl
QnVmZmVyKFdlYkNvcmU6OkltYWdlQnVmZmVyJiwgY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0JiBk
ZXN0aW5hdGlvbiwgY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0JiBzb3VyY2UsIGNvbnN0IFdlYkNv
cmU6OkltYWdlUGFpbnRpbmdPcHRpb25zJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBkcmF3TmF0aXZl
SW1hZ2UoY29uc3QgV2ViQ29yZTo6TmF0aXZlSW1hZ2VQdHImLCBjb25zdCBXZWJDb3JlOjpGbG9h
dFNpemUmLCBjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmLCBjb25zdCBXZWJDb3JlOjpGbG9hdFJl
Y3QmLCBjb25zdCBXZWJDb3JlOjpJbWFnZVBhaW50aW5nT3B0aW9ucyYpIG92ZXJyaWRlOwogICAg
IHZvaWQgZHJhd1BhdHRlcm4oV2ViQ29yZTo6SW1hZ2UmLCBjb25zdCBXZWJDb3JlOjpGbG9hdFJl
Y3QmLCBjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmLCBjb25zdCBXZWJDb3JlOjpBZmZpbmVUcmFu
c2Zvcm0mLCBjb25zdCBXZWJDb3JlOjpGbG9hdFBvaW50JiwgY29uc3QgV2ViQ29yZTo6RmxvYXRT
aXplJiwgY29uc3QgV2ViQ29yZTo6SW1hZ2VQYWludGluZ09wdGlvbnMmKSBvdmVycmlkZTsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUltYWdl
QnVmZmVyTWVzc2FnZUhhbmRsZXJQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mv
Z3JhcGhpY3MvUmVtb3RlSW1hZ2VCdWZmZXJNZXNzYWdlSGFuZGxlclByb3h5LmNwcApkZWxldGVk
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggM2UyNDdhN2FkNGNkMjk1MzhlNGVhZjQwYmQ4MDM2OTY4
NjAwOGI4Ni4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9T
b3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlSW1hZ2VCdWZmZXJNZXNzYWdl
SGFuZGxlclByb3h5LmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDU1ICswLDAgQEAKLS8qCi0gKiBD
b3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgot
ICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkK
LSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAq
LwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiUmVtb3RlSW1hZ2VCdWZmZXJNZXNz
YWdlSGFuZGxlclByb3h5LmgiCi0KLSNpZiBFTkFCTEUoR1BVX1BST0NFU1MpCi0KLSNpbmNsdWRl
ICJSZW1vdGVSZW5kZXJpbmdCYWNrZW5kTWVzc2FnZXMuaCIKLSNpbmNsdWRlICJSZW1vdGVSZW5k
ZXJpbmdCYWNrZW5kUHJveHkuaCIKLQotbmFtZXNwYWNlIFdlYktpdCB7Ci11c2luZyBuYW1lc3Bh
Y2UgV2ViQ29yZTsKLQotUmVtb3RlSW1hZ2VCdWZmZXJNZXNzYWdlSGFuZGxlclByb3h5OjpSZW1v
dGVJbWFnZUJ1ZmZlck1lc3NhZ2VIYW5kbGVyUHJveHkoUmVtb3RlUmVuZGVyaW5nQmFja2VuZFBy
b3h5JiByZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHksIEltYWdlQnVmZmVySWRlbnRpZmllciBp
bWFnZUJ1ZmZlcklkZW50aWZpZXIpCi0gICAgOiBtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94
eShyZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkpCi0gICAgLCBtX2ltYWdlQnVmZmVySWRlbnRp
ZmllcihpbWFnZUJ1ZmZlcklkZW50aWZpZXIpCi17Ci19Ci0KLXZvaWQgUmVtb3RlSW1hZ2VCdWZm
ZXJNZXNzYWdlSGFuZGxlclByb3h5OjpjcmVhdGVCYWNrZW5kKGNvbnN0IEZsb2F0U2l6ZSYgbG9n
aWNhbFNpemUsIGNvbnN0IEludFNpemUmIGJhY2tlbmRTaXplLCBmbG9hdCByZXNvbHV0aW9uU2Nh
bGUsIENvbG9yU3BhY2UgY29sb3JTcGFjZSwgSW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxlIGhhbmRs
ZSkKLXsKLSAgICBtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS5zZW5kKE1lc3NhZ2VzOjpS
ZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpDcmVhdGVJbWFnZUJ1ZmZlckJhY2tlbmQobG9naWNhbFNp
emUsIGJhY2tlbmRTaXplLCByZXNvbHV0aW9uU2NhbGUsIGNvbG9yU3BhY2UsIFdURk1vdmUoaGFu
ZGxlKSwgbV9pbWFnZUJ1ZmZlcklkZW50aWZpZXIpLCBtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQ
cm94eS5yZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllcigpKTsKLX0KLQotdm9pZCBSZW1vdGVJbWFn
ZUJ1ZmZlck1lc3NhZ2VIYW5kbGVyUHJveHk6OmNvbW1pdEZsdXNoQ29udGV4dChJbWFnZUJ1ZmZl
ckZsdXNoSWRlbnRpZmllciBmbHVzaElkZW50aWZpZXIpCi17Ci0gICAgbV9yZW1vdGVSZW5kZXJp
bmdCYWNrZW5kUHJveHkuc2VuZChNZXNzYWdlczo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6Q29t
bWl0SW1hZ2VCdWZmZXJGbHVzaENvbnRleHQoZmx1c2hJZGVudGlmaWVyLCBtX2ltYWdlQnVmZmVy
SWRlbnRpZmllciksIG1fcmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5LnJlbmRlcmluZ0JhY2tl
bmRJZGVudGlmaWVyKCkpOwotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJLaXQKLQotI2VuZGlmIC8v
IEVOQUJMRShHUFVfUFJPQ0VTUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vz
cy9ncmFwaGljcy9SZW1vdGVJbWFnZUJ1ZmZlck1lc3NhZ2VIYW5kbGVyUHJveHkuaCBiL1NvdXJj
ZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVJbWFnZUJ1ZmZlck1lc3NhZ2VIYW5k
bGVyUHJveHkuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTRkMDVlYWVmNTQ5NDE2
ZmRiNjQyNTk1MmUwYjRjZjNhYTIwNWVjMi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3Rl
SW1hZ2VCdWZmZXJNZXNzYWdlSGFuZGxlclByb3h5LmgKKysrIC9kZXYvbnVsbApAQCAtMSw3MSAr
MCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0g
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
LSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0g
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNw
cmFnbWEgb25jZQotCi0jaWYgRU5BQkxFKEdQVV9QUk9DRVNTKQotCi0jaW5jbHVkZSAiSW1hZ2VC
dWZmZXJCYWNrZW5kSGFuZGxlLmgiCi0jaW5jbHVkZSAiSW1hZ2VCdWZmZXJGbHVzaElkZW50aWZp
ZXIuaCIKLSNpbmNsdWRlICJJbWFnZUJ1ZmZlcklkZW50aWZpZXIuaCIKLSNpbmNsdWRlIDxXZWJD
b3JlL0NvbG9yU3BhY2UuaD4KLSNpbmNsdWRlIDxXZWJDb3JlL0Rpc3BsYXlMaXN0Lmg+Ci0jaW5j
bHVkZSA8V2ViQ29yZS9GbG9hdFNpemUuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotZW51bSBj
bGFzcyBBbHBoYVByZW11bHRpcGxpY2F0aW9uIDogdWludDhfdDsKLWNsYXNzIEltYWdlRGF0YTsK
LX0KLQotbmFtZXNwYWNlIFdlYktpdCB7Ci0KLWNsYXNzIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQ
cm94eTsKLQotY2xhc3MgUmVtb3RlSW1hZ2VCdWZmZXJNZXNzYWdlSGFuZGxlclByb3h5IHsKLXB1
YmxpYzoKLSAgICB2aXJ0dWFsIH5SZW1vdGVJbWFnZUJ1ZmZlck1lc3NhZ2VIYW5kbGVyUHJveHko
KSA9IGRlZmF1bHQ7Ci0KLSAgICAvLyBNZXNzYWdlcyB0byBiZSByZWNlaXZlZC4gU2VlIFJlbW90
ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS5tZXNzYWdlcy5pbi4KLSAgICB2aXJ0dWFsIHZvaWQgZmx1
c2hEcmF3aW5nQ29udGV4dChjb25zdCBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RGlzcGxheUxpc3Qm
KSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGZsdXNoRHJhd2luZ0NvbnRleHRBbmRDb21taXQoY29u
c3QgV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRpc3BsYXlMaXN0JiwgSW1hZ2VCdWZmZXJGbHVzaElk
ZW50aWZpZXIpID0gMDsKLSAgICB2aXJ0dWFsIFJlZlB0cjxXZWJDb3JlOjpJbWFnZURhdGE+IGdl
dEltYWdlRGF0YShXZWJDb3JlOjpBbHBoYVByZW11bHRpcGxpY2F0aW9uIG91dHB1dEZvcm1hdCwg
Y29uc3QgV2ViQ29yZTo6SW50UmVjdCYgc3JjUmVjdCkgY29uc3QgPSAwOwotCi1wcm90ZWN0ZWQ6
Ci0gICAgUmVtb3RlSW1hZ2VCdWZmZXJNZXNzYWdlSGFuZGxlclByb3h5KFJlbW90ZVJlbmRlcmlu
Z0JhY2tlbmRQcm94eSYsIEltYWdlQnVmZmVySWRlbnRpZmllcik7Ci0KLSAgICAvLyBNZXNzYWdl
cyB0byBiZSBzZW50LiBTZWUgUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5tZXNzYWdlcy5pbi4KLSAg
ICB2b2lkIGNyZWF0ZUJhY2tlbmQoY29uc3QgV2ViQ29yZTo6RmxvYXRTaXplJiBsb2dpY2FsU2l6
ZSwgY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYgYmFja2VuZFNpemUsIGZsb2F0IHJlc29sdXRpb25T
Y2FsZSwgV2ViQ29yZTo6Q29sb3JTcGFjZSwgSW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxlKTsKLSAg
ICB2b2lkIGNvbW1pdEZsdXNoQ29udGV4dChJbWFnZUJ1ZmZlckZsdXNoSWRlbnRpZmllcik7Ci0K
LSAgICBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkmIGJhY2tlbmQoKSB7IHJldHVybiBtX3Jl
bW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eTsgfQotCi1wcml2YXRlOgotICAgIFJlbW90ZVJlbmRl
cmluZ0JhY2tlbmRQcm94eSYgbV9yZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHk7Ci0gICAgSW1h
Z2VCdWZmZXJJZGVudGlmaWVyIG1faW1hZ2VCdWZmZXJJZGVudGlmaWVyOwotfTsKLQotfSAvLyBu
YW1lc3BhY2UgV2ViS2l0Ci0KLSNlbmRpZiAvLyBFTkFCTEUoR1BVX1BST0NFU1MpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlSW1hZ2VCdWZmZXJQ
cm94eS5oIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUltYWdlQnVm
ZmVyUHJveHkuaAppbmRleCA3NzIxY2NlODQ1NjI2OWFlZjkwMjBiOGJkODk2NWRkMzViNzIyZGRj
Li4xZDFiNWVlOGZjZjA3ZWZjMzI5ZDc5ODFmM2IwYTFhYzJlZmJlNzFjIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlSW1hZ2VCdWZmZXJQcm94eS5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVJbWFnZUJ1ZmZl
clByb3h5LmgKQEAgLTI4LDI5ICsyOCwyOSBAQAogI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykKIAog
I2luY2x1ZGUgIkdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaCIKLSNpbmNsdWRlICJSZW1vdGVJ
bWFnZUJ1ZmZlck1lc3NhZ2VIYW5kbGVyUHJveHkuaCIKICNpbmNsdWRlIDxXZWJDb3JlL0NvbmNy
ZXRlSW1hZ2VCdWZmZXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0Rpc3BsYXlMaXN0UmVwbGF5ZXIu
aD4KIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKIHRlbXBsYXRlPHR5cGVuYW1lIEJhY2tlbmRUeXBl
PgotY2xhc3MgUmVtb3RlSW1hZ2VCdWZmZXJQcm94eSA6IHB1YmxpYyBXZWJDb3JlOjpDb25jcmV0
ZUltYWdlQnVmZmVyPEJhY2tlbmRUeXBlPiwgcHVibGljIFJlbW90ZUltYWdlQnVmZmVyTWVzc2Fn
ZUhhbmRsZXJQcm94eSwgcHVibGljIFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpSZXBsYXllcjo6RGVs
ZWdhdGUgeworY2xhc3MgUmVtb3RlSW1hZ2VCdWZmZXJQcm94eSA6IHB1YmxpYyBXZWJDb3JlOjpD
b25jcmV0ZUltYWdlQnVmZmVyPEJhY2tlbmRUeXBlPiwgcHVibGljIFdlYkNvcmU6OkRpc3BsYXlM
aXN0OjpSZXBsYXllcjo6RGVsZWdhdGUgewogICAgIHVzaW5nIEJhc2VDb25jcmV0ZUltYWdlQnVm
ZmVyID0gV2ViQ29yZTo6Q29uY3JldGVJbWFnZUJ1ZmZlcjxCYWNrZW5kVHlwZT47CiAgICAgdXNp
bmcgQmFzZUNvbmNyZXRlSW1hZ2VCdWZmZXI6OmNvbnRleHQ7CiAgICAgdXNpbmcgQmFzZUNvbmNy
ZXRlSW1hZ2VCdWZmZXI6Om1fYmFja2VuZDsKKyAgICB1c2luZyBCYXNlQ29uY3JldGVJbWFnZUJ1
ZmZlcjo6cHV0SW1hZ2VEYXRhOwogCiBwdWJsaWM6Ci0gICAgc3RhdGljIGF1dG8gY3JlYXRlKGNv
bnN0IFdlYkNvcmU6OkZsb2F0U2l6ZSYgc2l6ZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBXZWJD
b3JlOjpDb2xvclNwYWNlIGNvbG9yU3BhY2UsIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eSYg
cmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5LCBJbWFnZUJ1ZmZlcklkZW50aWZpZXIgaW1hZ2VC
dWZmZXJJZGVudGlmaWVyKQorICAgIHN0YXRpYyBhdXRvIGNyZWF0ZShjb25zdCBXZWJDb3JlOjpG
bG9hdFNpemUmIHNpemUsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwgV2ViQ29yZTo6Q29sb3JTcGFj
ZSBjb2xvclNwYWNlLCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkmIHJlbW90ZVJlbmRlcmlu
Z0JhY2tlbmRQcm94eSwgV2ViQ29yZTo6UmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyIHJlbW90ZVJl
c291cmNlSWRlbnRpZmllcikKICAgICB7Ci0gICAgICAgIHJldHVybiBCYXNlQ29uY3JldGVJbWFn
ZUJ1ZmZlcjo6dGVtcGxhdGUgY3JlYXRlPFJlbW90ZUltYWdlQnVmZmVyUHJveHk+KHNpemUsIHJl
c29sdXRpb25TY2FsZSwgY29sb3JTcGFjZSwgbnVsbHB0ciwgcmVtb3RlUmVuZGVyaW5nQmFja2Vu
ZFByb3h5LCBpbWFnZUJ1ZmZlcklkZW50aWZpZXIpOworICAgICAgICByZXR1cm4gQmFzZUNvbmNy
ZXRlSW1hZ2VCdWZmZXI6OnRlbXBsYXRlIGNyZWF0ZTxSZW1vdGVJbWFnZUJ1ZmZlclByb3h5Pihz
aXplLCByZXNvbHV0aW9uU2NhbGUsIGNvbG9yU3BhY2UsIG51bGxwdHIsIHJlbW90ZVJlbmRlcmlu
Z0JhY2tlbmRQcm94eSwgcmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyKTsKICAgICB9CiAKLSAgICBS
ZW1vdGVJbWFnZUJ1ZmZlclByb3h5KHN0ZDo6dW5pcXVlX3B0cjxCYWNrZW5kVHlwZT4mJiBiYWNr
ZW5kLCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkmIHJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQ
cm94eSwgSW1hZ2VCdWZmZXJJZGVudGlmaWVyIGltYWdlQnVmZmVySWRlbnRpZmllcikKKyAgICBS
ZW1vdGVJbWFnZUJ1ZmZlclByb3h5KHN0ZDo6dW5pcXVlX3B0cjxCYWNrZW5kVHlwZT4mJiBiYWNr
ZW5kLCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkmIHJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQ
cm94eSwgV2ViQ29yZTo6UmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyIHJlbW90ZVJlc291cmNlSWRl
bnRpZmllcikKICAgICAgICAgOiBCYXNlQ29uY3JldGVJbWFnZUJ1ZmZlcihXVEZNb3ZlKGJhY2tl
bmQpKQotICAgICAgICAsIFJlbW90ZUltYWdlQnVmZmVyTWVzc2FnZUhhbmRsZXJQcm94eShyZW1v
dGVSZW5kZXJpbmdCYWNrZW5kUHJveHksIGltYWdlQnVmZmVySWRlbnRpZmllcikKKyAgICAgICAg
LCBtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eShyZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJv
eHkpCiAgICAgewotICAgICAgICBjcmVhdGVCYWNrZW5kKG1fYmFja2VuZC0+bG9naWNhbFNpemUo
KSwgbV9iYWNrZW5kLT5iYWNrZW5kU2l6ZSgpLCBtX2JhY2tlbmQtPnJlc29sdXRpb25TY2FsZSgp
LCBtX2JhY2tlbmQtPmNvbG9yU3BhY2UoKSwgbV9iYWNrZW5kLT5jcmVhdGVJbWFnZUJ1ZmZlckJh
Y2tlbmRIYW5kbGUoKSk7CisgICAgICAgIG1fcmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5LnJl
bW90ZUNyZWF0ZUltYWdlQnVmZmVyQmFja2VuZChtX2JhY2tlbmQtPmxvZ2ljYWxTaXplKCksIG1f
YmFja2VuZC0+YmFja2VuZFNpemUoKSwgbV9iYWNrZW5kLT5yZXNvbHV0aW9uU2NhbGUoKSwgbV9i
YWNrZW5kLT5jb2xvclNwYWNlKCksIG1fYmFja2VuZC0+Y3JlYXRlSW1hZ2VCdWZmZXJCYWNrZW5k
SGFuZGxlKCksIHJlbW90ZVJlc291cmNlSWRlbnRpZmllcik7CiAgICAgfQogCiAgICAgflJlbW90
ZUltYWdlQnVmZmVyUHJveHkoKQpAQCAtNjIsOSArNjIsNiBAQCBwdWJsaWM6CiAgICAgfQogCiBw
cml2YXRlOgotICAgIHVzaW5nIEJhc2VDb25jcmV0ZUltYWdlQnVmZmVyOjpmbHVzaERyYXdpbmdD
b250ZXh0OwotICAgIHVzaW5nIEJhc2VDb25jcmV0ZUltYWdlQnVmZmVyOjpwdXRJbWFnZURhdGE7
Ci0KICAgICB2b2lkIGZsdXNoRHJhd2luZ0NvbnRleHQoY29uc3QgV2ViQ29yZTo6RGlzcGxheUxp
c3Q6OkRpc3BsYXlMaXN0JiBkaXNwbGF5TGlzdCkgb3ZlcnJpZGUKICAgICB7CiAgICAgICAgIGlm
IChkaXNwbGF5TGlzdC5pdGVtQ291bnQoKSkgewpAQCAtNzMsMTggKzcwLDYgQEAgcHJpdmF0ZToK
ICAgICAgICAgfQogICAgIH0KIAotICAgIHZvaWQgZmx1c2hEcmF3aW5nQ29udGV4dEFuZENvbW1p
dChjb25zdCBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RGlzcGxheUxpc3QmIGRpc3BsYXlMaXN0LCBJ
bWFnZUJ1ZmZlckZsdXNoSWRlbnRpZmllciBmbHVzaElkZW50aWZpZXIpIG92ZXJyaWRlCi0gICAg
ewotICAgICAgICBmbHVzaERyYXdpbmdDb250ZXh0KGRpc3BsYXlMaXN0KTsKLSAgICAgICAgbV9i
YWNrZW5kLT5mbHVzaENvbnRleHQoKTsKLSAgICAgICAgY29tbWl0Rmx1c2hDb250ZXh0KGZsdXNo
SWRlbnRpZmllcik7Ci0gICAgfQotCi0gICAgUmVmUHRyPFdlYkNvcmU6OkltYWdlRGF0YT4gZ2V0
SW1hZ2VEYXRhKFdlYkNvcmU6OkFscGhhUHJlbXVsdGlwbGljYXRpb24gb3V0cHV0Rm9ybWF0LCBj
b25zdCBXZWJDb3JlOjpJbnRSZWN0JiBzcmNSZWN0KSBjb25zdCBvdmVycmlkZQotICAgIHsKLSAg
ICAgICAgcmV0dXJuIEJhc2VDb25jcmV0ZUltYWdlQnVmZmVyOjpnZXRJbWFnZURhdGEob3V0cHV0
Rm9ybWF0LCBzcmNSZWN0KTsKLSAgICB9Ci0KICAgICBib29sIGFwcGx5KFdlYkNvcmU6OkRpc3Bs
YXlMaXN0OjpJdGVtJiBpdGVtLCBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQmIGNvbnRleHQpIG92
ZXJyaWRlCiAgICAgewogICAgICAgICBpZiAoaXRlbS50eXBlKCkgPT0gV2ViQ29yZTo6RGlzcGxh
eUxpc3Q6Okl0ZW1UeXBlOjpQdXRJbWFnZURhdGEpIHsKQEAgLTk4LDEyICs4MywxMiBAQCBwcml2
YXRlOgogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgIH0KIAotICAgICAgICByZXR1
cm4gZmFsc2U7CisgICAgICAgIHJldHVybiBtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS5h
cHBseVJlc291cmNlSXRlbShpdGVtLCBjb250ZXh0KTsKICAgICB9CiAKICAgICB2b2lkIGFwcGx5
KFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpQYWludEZyYW1lRm9yTWVkaWEmIGl0ZW0sIFdlYkNvcmU6
OkdyYXBoaWNzQ29udGV4dCYgY29udGV4dCkKICAgICB7Ci0gICAgICAgIGF1dG8gcHJvY2VzcyA9
IGJhY2tlbmQoKS5ncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzKCk7CisgICAgICAgIGF1dG8gcHJv
Y2VzcyA9IG1fcmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5LmdwdUNvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3MoKTsKICAgICAgICAgaWYgKCFwcm9jZXNzKQogICAgICAgICAgICAgcmV0dXJuOwogCkBA
IC0xMTcsNiArMTAyLDggQEAgcHJpdmF0ZToKIAogICAgICAgICBjb250ZXh0LnBhaW50RnJhbWVG
b3JNZWRpYSgqcGxheWVyLCBpdGVtLmRlc3RpbmF0aW9uKCkpOwogICAgIH0KKworICAgIFJlbW90
ZVJlbmRlcmluZ0JhY2tlbmRQcm94eSYgbV9yZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHk7CiB9
OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BV
UHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkuY3BwIGIvU291cmNl
L1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS5j
cHAKaW5kZXggNzUzYTVjOGJhOTdmZTcyMDgzMTA1OGU4NGM1Y2Q4M2I0YjE3NTU3OS4uY2EzMjYy
NDMyMTc3MDU5ZmJjZjU0MmYxMWIwMzY2Mjk3OGJiZWVlYSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0Jh
Y2tlbmRQcm94eS5jcHAKQEAgLTI5LDcgKzI5LDcgQEAKICNpZiBFTkFCTEUoR1BVX1BST0NFU1Mp
CiAKICNpbmNsdWRlICJHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgiCi0jaW5jbHVkZSAiUGxh
dGZvcm1SZW1vdGVJbWFnZUJ1ZmZlclByb3h5LmgiCisjaW5jbHVkZSAiUmVtb3RlUmVuZGVyaW5n
QmFja2VuZE1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5
TWVzc2FnZXMuaCIKIAogbmFtZXNwYWNlIFdlYktpdCB7CkBAIC01NCw2ICs1NCwxMSBAQCBSZW1v
dGVSZW5kZXJpbmdCYWNrZW5kUHJveHk6On5SZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkoKQog
ICAgICAgICBncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLT5tZXNzYWdlUmVjZWl2ZXJNYXAoKS5y
ZW1vdmVNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94
eTo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBtX3JlbmRlcmluZ0JhY2tlbmRJZGVudGlmaWVyLnRv
VUludDY0KCkpOwogfQogCitHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzKiBSZW1vdGVSZW5kZXJp
bmdCYWNrZW5kUHJveHk6OmdwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MoKSBjb25zdAoreworICAg
IHJldHVybiBtX2dwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuZ2V0KCk7Cit9CisKIElQQzo6Q29u
bmVjdGlvbiogUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5OjptZXNzYWdlU2VuZGVyQ29ubmVj
dGlvbigpIGNvbnN0CiB7CiAgICAgaWYgKGF1dG8qIGdwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3Mg
PSBtX2dwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuZ2V0KCkpCkBAIC02Niw2NCArNzEsNDEgQEAg
dWludDY0X3QgUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5OjptZXNzYWdlU2VuZGVyRGVzdGlu
YXRpb25JRCgpIGNvbnN0CiAgICAgcmV0dXJuIG1fcmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXIu
dG9VSW50NjQoKTsKIH0KIAotdm9pZCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHk6OmNyZWF0
ZUltYWdlQnVmZmVyKGNvbnN0IEZsb2F0U2l6ZSYgbG9naWNhbFNpemUsIFJlbmRlcmluZ01vZGUg
cmVuZGVyaW5nTW9kZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBDb2xvclNwYWNlIGNvbG9yU3Bh
Y2UsIEltYWdlQnVmZmVySWRlbnRpZmllciBpbWFnZUJ1ZmZlcklkZW50aWZpZXIpCitib29sIFJl
bW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eTo6YXBwbHlSZXNvdXJjZUl0ZW0oRGlzcGxheUxpc3Q6
Okl0ZW0mIGl0ZW0sIEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCkKIHsKLSAgICBhdXRvKiBncHVD
b25uZWN0aW9uVG9XZWJQcm9jZXNzID0gbV9ncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmdldCgp
OwotICAgIGlmICghZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2VzcykKLSAgICAgICAgcmV0dXJuOwot
Ci0gICAgaWYgKG1faW1hZ2VCdWZmZXJNZXNzYWdlSGFuZGxlck1hcC5jb250YWlucyhpbWFnZUJ1
ZmZlcklkZW50aWZpZXIpKSB7Ci0gICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAg
ICByZXR1cm47Ci0gICAgfQotCi0gICAgaWYgKHJlbmRlcmluZ01vZGUgPT0gUmVuZGVyaW5nTW9k
ZTo6UmVtb3RlQWNjZWxlcmF0ZWQpIHsKLSAgICAgICAgaWYgKGF1dG8gaW1hZ2VCdWZmZXIgPSBB
Y2NlbGVyYXRlZFJlbW90ZUltYWdlQnVmZmVyUHJveHk6OmNyZWF0ZShsb2dpY2FsU2l6ZSwgcmVz
b2x1dGlvblNjYWxlLCBjb2xvclNwYWNlLCAqdGhpcywgaW1hZ2VCdWZmZXJJZGVudGlmaWVyKSkg
ewotICAgICAgICAgICAgbV9pbWFnZUJ1ZmZlck1lc3NhZ2VIYW5kbGVyTWFwLmFkZChpbWFnZUJ1
ZmZlcklkZW50aWZpZXIsIFdURk1vdmUoaW1hZ2VCdWZmZXIpKTsKLSAgICAgICAgICAgIHJldHVy
bjsKLSAgICAgICAgfQotICAgIH0KLQotICAgIGlmIChyZW5kZXJpbmdNb2RlID09IFJlbmRlcmlu
Z01vZGU6OlJlbW90ZUFjY2VsZXJhdGVkIHx8IHJlbmRlcmluZ01vZGUgPT0gUmVuZGVyaW5nTW9k
ZTo6UmVtb3RlVW5hY2NlbGVyYXRlZCkgewotICAgICAgICBpZiAoYXV0byBpbWFnZUJ1ZmZlciA9
IFVuYWNjZWxlcmF0ZWRSZW1vdGVJbWFnZUJ1ZmZlclByb3h5OjpjcmVhdGUobG9naWNhbFNpemUs
IHJlc29sdXRpb25TY2FsZSwgY29sb3JTcGFjZSwgKnRoaXMsIGltYWdlQnVmZmVySWRlbnRpZmll
cikpIHsKLSAgICAgICAgICAgIG1faW1hZ2VCdWZmZXJNZXNzYWdlSGFuZGxlck1hcC5hZGQoaW1h
Z2VCdWZmZXJJZGVudGlmaWVyLCBXVEZNb3ZlKGltYWdlQnVmZmVyKSk7Ci0gICAgICAgICAgICBy
ZXR1cm47Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAg
ICByZXR1cm4gbV9yZW1vdGVSZXNvdXJjZUNhY2hlUHJveHkuYXBwbHlSZXNvdXJjZUl0ZW0oaXRl
bSwgY29udGV4dCk7CiB9CiAKLXZvaWQgUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5OjpyZWxl
YXNlSW1hZ2VCdWZmZXIoSW1hZ2VCdWZmZXJJZGVudGlmaWVyIGltYWdlQnVmZmVySWRlbnRpZmll
cikKK3ZvaWQgUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5OjpyZW1vdGVDcmVhdGVJbWFnZUJ1
ZmZlckJhY2tlbmQoY29uc3QgRmxvYXRTaXplJiBsb2dpY2FsU2l6ZSwgY29uc3QgSW50U2l6ZSYg
YmFja2VuZFNpemUsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwgQ29sb3JTcGFjZSBjb2xvclNwYWNl
LCBJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGUgaGFuZGxlLCBSZW1vdGVSZXNvdXJjZUlkZW50aWZp
ZXIgcmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyKQogewotICAgIC8vIENyZWF0ZUltYWdlQnVmZmVy
IG1lc3NhZ2Ugc2hvdWxkIGhhdmUgYmVlbiByZWNlaXZlZCBiZWZvcmUgdGhpcyBvbmUuCi0gICAg
Ym9vbCBmb3VuZCA9IG1faW1hZ2VCdWZmZXJNZXNzYWdlSGFuZGxlck1hcC5yZW1vdmUoaW1hZ2VC
dWZmZXJJZGVudGlmaWVyKTsKLSAgICBBU1NFUlRfVU5VU0VEKGZvdW5kLCBmb3VuZCk7CisgICAg
c2VuZChNZXNzYWdlczo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6Q3JlYXRlSW1hZ2VCdWZmZXJC
YWNrZW5kKGxvZ2ljYWxTaXplLCBiYWNrZW5kU2l6ZSwgcmVzb2x1dGlvblNjYWxlLCBjb2xvclNw
YWNlLCBXVEZNb3ZlKGhhbmRsZSksIHJlbW90ZVJlc291cmNlSWRlbnRpZmllciksIG1fcmVuZGVy
aW5nQmFja2VuZElkZW50aWZpZXIpOwogfQogCi12b2lkIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQ
cm94eTo6Z2V0SW1hZ2VEYXRhKFdlYkNvcmU6OkFscGhhUHJlbXVsdGlwbGljYXRpb24gb3V0cHV0
Rm9ybWF0LCBXZWJDb3JlOjpJbnRSZWN0IHNyY1JlY3QsIEltYWdlQnVmZmVySWRlbnRpZmllciBp
bWFnZUJ1ZmZlcklkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoSVBDOjpJbWFnZURh
dGFSZWZlcmVuY2UmJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIFJlbW90ZVJlbmRlcmlu
Z0JhY2tlbmRQcm94eTo6Y3JlYXRlSW1hZ2VCdWZmZXIoY29uc3QgRmxvYXRTaXplJiBsb2dpY2Fs
U2l6ZSwgUmVuZGVyaW5nTW9kZSByZW5kZXJpbmdNb2RlLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUs
IENvbG9yU3BhY2UgY29sb3JTcGFjZSwgV2ViQ29yZTo6UmVtb3RlUmVzb3VyY2VJZGVudGlmaWVy
IHJlbW90ZVJlc291cmNlSWRlbnRpZmllcikKIHsKLSAgICBpZiAoYXV0byBpbWFnZUJ1ZmZlciA9
IG1faW1hZ2VCdWZmZXJNZXNzYWdlSGFuZGxlck1hcC5nZXQoaW1hZ2VCdWZmZXJJZGVudGlmaWVy
KSkgewotICAgICAgICBhdXRvIGltYWdlRGF0YSA9IGltYWdlQnVmZmVyLT5nZXRJbWFnZURhdGEo
b3V0cHV0Rm9ybWF0LCBzcmNSZWN0KTsKLSAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoSVBDOjpJ
bWFnZURhdGFSZWZlcmVuY2UoV1RGTW92ZShpbWFnZURhdGEpKSk7Ci0gICAgfQorICAgIG1fcmVt
b3RlUmVzb3VyY2VDYWNoZVByb3h5LmNyZWF0ZUltYWdlQnVmZmVyKGxvZ2ljYWxTaXplLCByZW5k
ZXJpbmdNb2RlLCByZXNvbHV0aW9uU2NhbGUsIGNvbG9yU3BhY2UsIHJlbW90ZVJlc291cmNlSWRl
bnRpZmllcik7CiB9CiAKLXZvaWQgUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5OjpmbHVzaElt
YWdlQnVmZmVyRHJhd2luZ0NvbnRleHQoY29uc3QgV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRpc3Bs
YXlMaXN0JiBkaXNwbGF5TGlzdCwgSW1hZ2VCdWZmZXJJZGVudGlmaWVyIGltYWdlQnVmZmVySWRl
bnRpZmllcikKK3ZvaWQgUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5OjpmbHVzaEltYWdlQnVm
ZmVyRHJhd2luZ0NvbnRleHQoY29uc3QgV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRpc3BsYXlMaXN0
JiBkaXNwbGF5TGlzdCwgUmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyIHJlbW90ZVJlc291cmNlSWRl
bnRpZmllcikKIHsKLSAgICBpZiAoYXV0byBpbWFnZUJ1ZmZlciA9IG1faW1hZ2VCdWZmZXJNZXNz
YWdlSGFuZGxlck1hcC5nZXQoaW1hZ2VCdWZmZXJJZGVudGlmaWVyKSkKLSAgICAgICAgaW1hZ2VC
dWZmZXItPmZsdXNoRHJhd2luZ0NvbnRleHQoZGlzcGxheUxpc3QpOworICAgIG1fcmVtb3RlUmVz
b3VyY2VDYWNoZVByb3h5LmZsdXNoRHJhd2luZ0NvbnRleHQoZGlzcGxheUxpc3QsIHJlbW90ZVJl
c291cmNlSWRlbnRpZmllcik7CiB9CiAKLXZvaWQgUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5
OjpmbHVzaEltYWdlQnVmZmVyRHJhd2luZ0NvbnRleHRBbmRDb21taXQoY29uc3QgV2ViQ29yZTo6
RGlzcGxheUxpc3Q6OkRpc3BsYXlMaXN0JiBkaXNwbGF5TGlzdCwgSW1hZ2VCdWZmZXJGbHVzaElk
ZW50aWZpZXIgZmx1c2hJZGVudGlmaWVyLCBJbWFnZUJ1ZmZlcklkZW50aWZpZXIgaW1hZ2VCdWZm
ZXJJZGVudGlmaWVyKQordm9pZCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHk6OmZsdXNoSW1h
Z2VCdWZmZXJEcmF3aW5nQ29udGV4dEFuZENvbW1pdChjb25zdCBXZWJDb3JlOjpEaXNwbGF5TGlz
dDo6RGlzcGxheUxpc3QmIGRpc3BsYXlMaXN0LCBJbWFnZUJ1ZmZlckZsdXNoSWRlbnRpZmllciBm
bHVzaElkZW50aWZpZXIsIFJlbW90ZVJlc291cmNlSWRlbnRpZmllciByZW1vdGVSZXNvdXJjZUlk
ZW50aWZpZXIpCiB7Ci0gICAgaWYgKGF1dG8gaW1hZ2VCdWZmZXIgPSBtX2ltYWdlQnVmZmVyTWVz
c2FnZUhhbmRsZXJNYXAuZ2V0KGltYWdlQnVmZmVySWRlbnRpZmllcikpCi0gICAgICAgIGltYWdl
QnVmZmVyLT5mbHVzaERyYXdpbmdDb250ZXh0QW5kQ29tbWl0KGRpc3BsYXlMaXN0LCBmbHVzaElk
ZW50aWZpZXIpOworICAgIG1fcmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5LmZsdXNoRHJhd2luZ0Nv
bnRleHRBbmRDb21taXQoZGlzcGxheUxpc3QsIHJlbW90ZVJlc291cmNlSWRlbnRpZmllcik7Cisg
ICAgc2VuZChNZXNzYWdlczo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6Q29tbWl0SW1hZ2VCdWZm
ZXJGbHVzaENvbnRleHQoZmx1c2hJZGVudGlmaWVyLCByZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIp
LCBtX3JlbmRlcmluZ0JhY2tlbmRJZGVudGlmaWVyKTsKIH0KIAotR1BVQ29ubmVjdGlvblRvV2Vi
UHJvY2VzcyogUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5OjpncHVDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzKCkgY29uc3QKK3ZvaWQgUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5OjpnZXRJbWFn
ZURhdGEoV2ViQ29yZTo6QWxwaGFQcmVtdWx0aXBsaWNhdGlvbiBvdXRwdXRGb3JtYXQsIFdlYkNv
cmU6OkludFJlY3Qgc3JjUmVjdCwgUmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyIHJlbW90ZVJlc291
cmNlSWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChJUEM6OkltYWdlRGF0YVJlZmVy
ZW5jZSYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKLSAgICByZXR1cm4gbV9ncHVDb25uZWN0
aW9uVG9XZWJQcm9jZXNzLmdldCgpOworICAgIGF1dG8gaW1hZ2VEYXRhID0gbV9yZW1vdGVSZXNv
dXJjZUNhY2hlUHJveHkuZ2V0SW1hZ2VEYXRhKG91dHB1dEZvcm1hdCwgc3JjUmVjdCwgcmVtb3Rl
UmVzb3VyY2VJZGVudGlmaWVyKTsKKyAgICBjb21wbGV0aW9uSGFuZGxlcihJUEM6OkltYWdlRGF0
YVJlZmVyZW5jZShXVEZNb3ZlKGltYWdlRGF0YSkpKTsKK30KKwordm9pZCBSZW1vdGVSZW5kZXJp
bmdCYWNrZW5kUHJveHk6OnJlbGVhc2VSZW1vdGVSZXNvdXJjZShSZW1vdGVSZXNvdXJjZUlkZW50
aWZpZXIgcmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyKQoreworICAgIG1fcmVtb3RlUmVzb3VyY2VD
YWNoZVByb3h5LnJlbGVhc2VSZW1vdGVSZXNvdXJjZShyZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIp
OwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
R1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkuaCBiL1NvdXJj
ZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHku
aAppbmRleCBhMDk1MmJhZmIzYzE1MzJkN2RjOTkwMDZlYjQwZjMxYmY5MWQyNTNiLi45ZjY4ZjJi
NDczN2VkMzRkZjE5NjgyOTRlYTAzNzAwZmE3YzU3MDE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5LmgKKysr
IGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tl
bmRQcm94eS5oCkBAIC0yOCwyNCArMjgsMjQgQEAKICNpZiBFTkFCTEUoR1BVX1BST0NFU1MpCiAK
ICNpbmNsdWRlICJDb25uZWN0aW9uLmgiCisjaW5jbHVkZSAiSW1hZ2VCdWZmZXJCYWNrZW5kSGFu
ZGxlLmgiCiAjaW5jbHVkZSAiSW1hZ2VCdWZmZXJGbHVzaElkZW50aWZpZXIuaCIKLSNpbmNsdWRl
ICJJbWFnZUJ1ZmZlcklkZW50aWZpZXIuaCIKICNpbmNsdWRlICJJbWFnZURhdGFSZWZlcmVuY2Uu
aCIKICNpbmNsdWRlICJNZXNzYWdlUmVjZWl2ZXIuaCIKICNpbmNsdWRlICJNZXNzYWdlU2VuZGVy
LmgiCi0jaW5jbHVkZSAiUmVtb3RlSW1hZ2VCdWZmZXJNZXNzYWdlSGFuZGxlclByb3h5LmgiCisj
aW5jbHVkZSAiUmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5LmgiCiAjaW5jbHVkZSAiUmVuZGVyaW5n
QmFja2VuZElkZW50aWZpZXIuaCIKICNpbmNsdWRlIDxXZWJDb3JlL0NvbG9yU3BhY2UuaD4KICNp
bmNsdWRlIDxXZWJDb3JlL0Rpc3BsYXlMaXN0SXRlbXMuaD4KLSNpbmNsdWRlIDxXZWJDb3JlL0Zs
b2F0U2l6ZS5oPgotI2luY2x1ZGUgPFdlYkNvcmUvUmVuZGVyaW5nTW9kZS5oPgotI2luY2x1ZGUg
PHd0Zi9IYXNoTWFwLmg+CiAjaW5jbHVkZSA8d3RmL1dlYWtQdHIuaD4KIAogbmFtZXNwYWNlIFdl
YkNvcmUgewogbmFtZXNwYWNlIERpc3BsYXlMaXN0IHsKIGNsYXNzIERpc3BsYXlMaXN0OwogfQor
Y2xhc3MgRmxvYXRTaXplOworZW51bSBjbGFzcyBDb2xvclNwYWNlIDogdWludDhfdDsKK2VudW0g
Y2xhc3MgUmVuZGVyaW5nTW9kZSA6IHVpbnQ4X3Q7CiB9CiAKIG5hbWVzcGFjZSBXZWJLaXQgewpA
QCAtNTksOCArNTksMTEgQEAgcHVibGljOgogICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8UmVt
b3RlUmVuZGVyaW5nQmFja2VuZFByb3h5PiBjcmVhdGUoR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vz
cyYsIFJlbmRlcmluZ0JhY2tlbmRJZGVudGlmaWVyKTsKICAgICB2aXJ0dWFsIH5SZW1vdGVSZW5k
ZXJpbmdCYWNrZW5kUHJveHkoKTsKIAotICAgIFJlbmRlcmluZ0JhY2tlbmRJZGVudGlmaWVyIHJl
bmRlcmluZ0JhY2tlbmRJZGVudGlmaWVyKCkgY29uc3QgeyByZXR1cm4gbV9yZW5kZXJpbmdCYWNr
ZW5kSWRlbnRpZmllcjsgfQogICAgIEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MqIGdwdUNvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3MoKSBjb25zdDsKKyAgICBib29sIGFwcGx5UmVzb3VyY2VJdGVtKFdl
YkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtJiwgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0Jik7CisK
KyAgICAvLyBNZXNzYWdlcyB0byBiZSBzZW50LgorICAgIHZvaWQgcmVtb3RlQ3JlYXRlSW1hZ2VC
dWZmZXJCYWNrZW5kKGNvbnN0IFdlYkNvcmU6OkZsb2F0U2l6ZSYgbG9naWNhbFNpemUsIGNvbnN0
IFdlYkNvcmU6OkludFNpemUmIGJhY2tlbmRTaXplLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIFdl
YkNvcmU6OkNvbG9yU3BhY2UsIEltYWdlQnVmZmVyQmFja2VuZEhhbmRsZSwgV2ViQ29yZTo6UmVt
b3RlUmVzb3VyY2VJZGVudGlmaWVyKTsKIAogcHJpdmF0ZToKICAgICBSZW1vdGVSZW5kZXJpbmdC
YWNrZW5kUHJveHkoR1BVQ29ubmVjdGlvblRvV2ViUHJvY2VzcyYsIFJlbmRlcmluZ0JhY2tlbmRJ
ZGVudGlmaWVyKTsKQEAgLTc0LDE0ICs3NywxMyBAQCBwcml2YXRlOgogICAgIHZvaWQgZGlkUmVj
ZWl2ZVN5bmNNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYsIHN0ZDo6dW5p
cXVlX3B0cjxJUEM6OkVuY29kZXI+Jikgb3ZlcnJpZGU7CiAKICAgICAvLyBNZXNzYWdlcyB0byBi
ZSByZWNlaXZlZC4KLSAgICB2b2lkIGNyZWF0ZUltYWdlQnVmZmVyKGNvbnN0IFdlYkNvcmU6OkZs
b2F0U2l6ZSYgbG9naWNhbFNpemUsIFdlYkNvcmU6OlJlbmRlcmluZ01vZGUsIGZsb2F0IHJlc29s
dXRpb25TY2FsZSwgV2ViQ29yZTo6Q29sb3JTcGFjZSwgSW1hZ2VCdWZmZXJJZGVudGlmaWVyKTsK
LSAgICB2b2lkIHJlbGVhc2VJbWFnZUJ1ZmZlcihJbWFnZUJ1ZmZlcklkZW50aWZpZXIpOwotICAg
IHZvaWQgZmx1c2hJbWFnZUJ1ZmZlckRyYXdpbmdDb250ZXh0KGNvbnN0IFdlYkNvcmU6OkRpc3Bs
YXlMaXN0OjpEaXNwbGF5TGlzdCYsIEltYWdlQnVmZmVySWRlbnRpZmllcik7Ci0gICAgdm9pZCBm
bHVzaEltYWdlQnVmZmVyRHJhd2luZ0NvbnRleHRBbmRDb21taXQoY29uc3QgV2ViQ29yZTo6RGlz
cGxheUxpc3Q6OkRpc3BsYXlMaXN0JiwgSW1hZ2VCdWZmZXJGbHVzaElkZW50aWZpZXIsIEltYWdl
QnVmZmVySWRlbnRpZmllcik7Ci0gICAgdm9pZCBnZXRJbWFnZURhdGEoV2ViQ29yZTo6QWxwaGFQ
cmVtdWx0aXBsaWNhdGlvbiBvdXRwdXRGb3JtYXQsIFdlYkNvcmU6OkludFJlY3Qgc3JjUmVjdCwg
SW1hZ2VCdWZmZXJJZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKElQQzo6SW1hZ2VE
YXRhUmVmZXJlbmNlJiYpPiYmKTsKLQotICAgIHVzaW5nIEltYWdlQnVmZmVyTWVzc2FnZUhhbmRs
ZXJNYXAgPSBIYXNoTWFwPEltYWdlQnVmZmVySWRlbnRpZmllciwgc3RkOjp1bmlxdWVfcHRyPFJl
bW90ZUltYWdlQnVmZmVyTWVzc2FnZUhhbmRsZXJQcm94eT4+OwotICAgIEltYWdlQnVmZmVyTWVz
c2FnZUhhbmRsZXJNYXAgbV9pbWFnZUJ1ZmZlck1lc3NhZ2VIYW5kbGVyTWFwOworICAgIHZvaWQg
Y3JlYXRlSW1hZ2VCdWZmZXIoY29uc3QgV2ViQ29yZTo6RmxvYXRTaXplJiBsb2dpY2FsU2l6ZSwg
V2ViQ29yZTo6UmVuZGVyaW5nTW9kZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBXZWJDb3JlOjpD
b2xvclNwYWNlLCBXZWJDb3JlOjpSZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIpOworICAgIHZvaWQg
Zmx1c2hJbWFnZUJ1ZmZlckRyYXdpbmdDb250ZXh0KGNvbnN0IFdlYkNvcmU6OkRpc3BsYXlMaXN0
OjpEaXNwbGF5TGlzdCYsIFdlYkNvcmU6OlJlbW90ZVJlc291cmNlSWRlbnRpZmllcik7CisgICAg
dm9pZCBmbHVzaEltYWdlQnVmZmVyRHJhd2luZ0NvbnRleHRBbmRDb21taXQoY29uc3QgV2ViQ29y
ZTo6RGlzcGxheUxpc3Q6OkRpc3BsYXlMaXN0JiwgSW1hZ2VCdWZmZXJGbHVzaElkZW50aWZpZXIs
IFdlYkNvcmU6OlJlbW90ZVJlc291cmNlSWRlbnRpZmllcik7CisgICAgdm9pZCBnZXRJbWFnZURh
dGEoV2ViQ29yZTo6QWxwaGFQcmVtdWx0aXBsaWNhdGlvbiBvdXRwdXRGb3JtYXQsIFdlYkNvcmU6
OkludFJlY3Qgc3JjUmVjdCwgV2ViQ29yZTo6UmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyLCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKElQQzo6SW1hZ2VEYXRhUmVmZXJlbmNlJiYpPiYmKTsKKyAgICB2
b2lkIHJlbGVhc2VSZW1vdGVSZXNvdXJjZShXZWJDb3JlOjpSZW1vdGVSZXNvdXJjZUlkZW50aWZp
ZXIpOworCisgICAgUmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5IG1fcmVtb3RlUmVzb3VyY2VDYWNo
ZVByb3h5IHsgKnRoaXMgfTsKICAgICBXZWFrUHRyPEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M+
IG1fZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2VzczsKICAgICBSZW5kZXJpbmdCYWNrZW5kSWRlbnRp
ZmllciBtX3JlbmRlcmluZ0JhY2tlbmRJZGVudGlmaWVyOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHku
bWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVu
ZGVyaW5nQmFja2VuZFByb3h5Lm1lc3NhZ2VzLmluCmluZGV4IDc5OGM4YjRlZGI1N2Y1YWQwODJi
YTgxYzEwMDhiMGRjZGVmZGYxOGEuLjI2Y2YxMzYxZmRhYjBlYjBkM2ZhZjc3ZTVmN2QyZDFjNTZm
OTQwYjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1v
dGVSZW5kZXJpbmdCYWNrZW5kUHJveHkubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9H
UFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS5tZXNzYWdlcy5p
bgpAQCAtMjMsMTEgKzIzLDExIEBACiAjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKQogCiBtZXNzYWdl
cyAtPiBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkgTm90UmVmQ291bnRlZCB7Ci0gICAgdm9p
ZCBDcmVhdGVJbWFnZUJ1ZmZlcihXZWJDb3JlOjpGbG9hdFNpemUgbG9naWNhbFNpemUsIFdlYkNv
cmU6OlJlbmRlcmluZ01vZGUgcmVuZGVyaW5nTW9kZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBX
ZWJDb3JlOjpDb2xvclNwYWNlIGNvbG9yU3BhY2UsIFdlYktpdDo6SW1hZ2VCdWZmZXJJZGVudGlm
aWVyIGltYWdlQnVmZmVySWRlbnRpZmllcikKLSAgICB2b2lkIFJlbGVhc2VJbWFnZUJ1ZmZlcihX
ZWJLaXQ6OkltYWdlQnVmZmVySWRlbnRpZmllciBpbWFnZUJ1ZmZlcklkZW50aWZpZXIpCi0gICAg
dm9pZCBGbHVzaEltYWdlQnVmZmVyRHJhd2luZ0NvbnRleHQoV2ViQ29yZTo6RGlzcGxheUxpc3Q6
OkRpc3BsYXlMaXN0IGRpc3BsYXlMaXN0LCBXZWJLaXQ6OkltYWdlQnVmZmVySWRlbnRpZmllciBp
bWFnZUJ1ZmZlcklkZW50aWZpZXIpCi0gICAgdm9pZCBGbHVzaEltYWdlQnVmZmVyRHJhd2luZ0Nv
bnRleHRBbmRDb21taXQoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRpc3BsYXlMaXN0IGRpc3BsYXlM
aXN0LCBXZWJLaXQ6OkltYWdlQnVmZmVyRmx1c2hJZGVudGlmaWVyIGZsdXNoSWRlbnRpZmllciwg
V2ViS2l0OjpJbWFnZUJ1ZmZlcklkZW50aWZpZXIgaW1hZ2VCdWZmZXJJZGVudGlmaWVyKQotICAg
IEdldEltYWdlRGF0YShlbnVtOnVpbnQ4X3QgV2ViQ29yZTo6QWxwaGFQcmVtdWx0aXBsaWNhdGlv
biBvdXRwdXRGb3JtYXQsIFdlYkNvcmU6OkludFJlY3Qgc3JjUmVjdCwgV2ViS2l0OjpJbWFnZUJ1
ZmZlcklkZW50aWZpZXIgaW1hZ2VCdWZmZXJJZGVudGlmaWVyKSAtPiAoSVBDOjpJbWFnZURhdGFS
ZWZlcmVuY2UgaW1hZ2VEYXRhKSBTeW5jaHJvbm91cworICAgIHZvaWQgQ3JlYXRlSW1hZ2VCdWZm
ZXIoV2ViQ29yZTo6RmxvYXRTaXplIGxvZ2ljYWxTaXplLCBXZWJDb3JlOjpSZW5kZXJpbmdNb2Rl
IHJlbmRlcmluZ01vZGUsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwgV2ViQ29yZTo6Q29sb3JTcGFj
ZSBjb2xvclNwYWNlLCBXZWJDb3JlOjpSZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIgcmVtb3RlUmVz
b3VyY2VJZGVudGlmaWVyKQorICAgIHZvaWQgRmx1c2hJbWFnZUJ1ZmZlckRyYXdpbmdDb250ZXh0
KFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEaXNwbGF5TGlzdCBkaXNwbGF5TGlzdCwgV2ViQ29yZTo6
UmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyIHJlbW90ZVJlc291cmNlSWRlbnRpZmllcikKKyAgICB2
b2lkIEZsdXNoSW1hZ2VCdWZmZXJEcmF3aW5nQ29udGV4dEFuZENvbW1pdChXZWJDb3JlOjpEaXNw
bGF5TGlzdDo6RGlzcGxheUxpc3QgZGlzcGxheUxpc3QsIFdlYktpdDo6SW1hZ2VCdWZmZXJGbHVz
aElkZW50aWZpZXIgZmx1c2hJZGVudGlmaWVyLCBXZWJDb3JlOjpSZW1vdGVSZXNvdXJjZUlkZW50
aWZpZXIgcmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyKQorICAgIEdldEltYWdlRGF0YShlbnVtOnVp
bnQ4X3QgV2ViQ29yZTo6QWxwaGFQcmVtdWx0aXBsaWNhdGlvbiBvdXRwdXRGb3JtYXQsIFdlYkNv
cmU6OkludFJlY3Qgc3JjUmVjdCwgV2ViQ29yZTo6UmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyIHJl
bW90ZVJlc291cmNlSWRlbnRpZmllcikgLT4gKElQQzo6SW1hZ2VEYXRhUmVmZXJlbmNlIGltYWdl
RGF0YSkgU3luY2hyb25vdXMKKyAgICB2b2lkIFJlbGVhc2VSZW1vdGVSZXNvdXJjZShXZWJDb3Jl
OjpSZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIgcmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyKQogfQog
CiAjZW5kaWYgLy8gRU5BQkxFKEdQVV9QUk9DRVNTKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlc291cmNlQ2FjaGVQcm94eS5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5LmNw
cApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi45ZTliODRjNjcwZTliODRhMjU1MjhjY2RiZWJjNzMxOGZhODQ1NDczCi0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90
ZVJlc291cmNlQ2FjaGVQcm94eS5jcHAKQEAgLTAsMCArMSwxMTcgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRS
SUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJ
VFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj
aW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiUmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5Lmgi
CisKKyNpZiBFTkFCTEUoR1BVX1BST0NFU1MpCisKKyNpbmNsdWRlICJQbGF0Zm9ybVJlbW90ZUlt
YWdlQnVmZmVyUHJveHkuaCIKKworbmFtZXNwYWNlIFdlYktpdCB7Cit1c2luZyBuYW1lc3BhY2Ug
V2ViQ29yZTsKKworUmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5OjpSZW1vdGVSZXNvdXJjZUNhY2hl
UHJveHkoUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5JiByZW1vdGVSZW5kZXJpbmdCYWNrZW5k
UHJveHkpCisgICAgOiBtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eShyZW1vdGVSZW5kZXJp
bmdCYWNrZW5kUHJveHkpCit7Cit9CisKK3ZvaWQgUmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5Ojpj
cmVhdGVJbWFnZUJ1ZmZlcihjb25zdCBGbG9hdFNpemUmIGxvZ2ljYWxTaXplLCBSZW5kZXJpbmdN
b2RlIHJlbmRlcmluZ01vZGUsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwgQ29sb3JTcGFjZSBjb2xv
clNwYWNlLCBSZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIgcmVtb3RlUmVzb3VyY2VJZGVudGlmaWVy
KQoreworICAgIGlmIChtX3JlbW90ZUltYWdlQnVmZmVySGFzaE1hcC5jb250YWlucyhyZW1vdGVS
ZXNvdXJjZUlkZW50aWZpZXIpKSB7CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAg
ICAgICByZXR1cm47CisgICAgfQorCisgICAgc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6OkltYWdl
QnVmZmVyPiBpbWFnZTsKKworICAgIGlmIChyZW5kZXJpbmdNb2RlID09IFJlbmRlcmluZ01vZGU6
OlJlbW90ZUFjY2VsZXJhdGVkKQorICAgICAgICBpbWFnZSA9IEFjY2VsZXJhdGVkUmVtb3RlSW1h
Z2VCdWZmZXJQcm94eTo6Y3JlYXRlKGxvZ2ljYWxTaXplLCByZXNvbHV0aW9uU2NhbGUsIGNvbG9y
U3BhY2UsIG1fcmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5LCByZW1vdGVSZXNvdXJjZUlkZW50
aWZpZXIpOworCisgICAgaWYgKCFpbWFnZSB8fCByZW5kZXJpbmdNb2RlID09IFJlbmRlcmluZ01v
ZGU6OlJlbW90ZVVuYWNjZWxlcmF0ZWQpCisgICAgICAgIGltYWdlID0gVW5hY2NlbGVyYXRlZFJl
bW90ZUltYWdlQnVmZmVyUHJveHk6OmNyZWF0ZShsb2dpY2FsU2l6ZSwgcmVzb2x1dGlvblNjYWxl
LCBjb2xvclNwYWNlLCBtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eSwgcmVtb3RlUmVzb3Vy
Y2VJZGVudGlmaWVyKTsKKworICAgIGlmIChpbWFnZSkgeworICAgICAgICBtX3JlbW90ZUltYWdl
QnVmZmVySGFzaE1hcC5hZGQocmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyLCBXVEZNb3ZlKGltYWdl
KSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsK
K30KKworSW1hZ2VCdWZmZXIqIFJlbW90ZVJlc291cmNlQ2FjaGVQcm94eTo6Zmx1c2hEcmF3aW5n
Q29udGV4dChjb25zdCBEaXNwbGF5TGlzdDo6RGlzcGxheUxpc3QmIGRpc3BsYXlMaXN0LCBSZW1v
dGVSZXNvdXJjZUlkZW50aWZpZXIgcmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyKQoreworICAgIGlm
IChhdXRvIGltYWdlID0gbV9yZW1vdGVJbWFnZUJ1ZmZlckhhc2hNYXAuZ2V0KHJlbW90ZVJlc291
cmNlSWRlbnRpZmllcikpIHsKKyAgICAgICAgaW1hZ2UtPmZsdXNoRHJhd2luZ0NvbnRleHQoZGlz
cGxheUxpc3QpOworICAgICAgICByZXR1cm4gaW1hZ2U7CisgICAgfQorICAgIHJldHVybiBudWxs
cHRyOworfQorCitJbWFnZUJ1ZmZlciogUmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5OjpmbHVzaERy
YXdpbmdDb250ZXh0QW5kQ29tbWl0KGNvbnN0IERpc3BsYXlMaXN0OjpEaXNwbGF5TGlzdCYgZGlz
cGxheUxpc3QsIFJlbW90ZVJlc291cmNlSWRlbnRpZmllciByZW1vdGVSZXNvdXJjZUlkZW50aWZp
ZXIpCit7CisgICAgaWYgKGF1dG8gaW1hZ2UgPSBmbHVzaERyYXdpbmdDb250ZXh0KGRpc3BsYXlM
aXN0LCByZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIpKSB7CisgICAgICAgIGltYWdlLT5mbHVzaENv
bnRleHQoKTsKKyAgICAgICAgcmV0dXJuIGltYWdlOworICAgIH0KKyAgICByZXR1cm4gbnVsbHB0
cjsKK30KKworUmVmUHRyPEltYWdlRGF0YT4gUmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5OjpnZXRJ
bWFnZURhdGEoQWxwaGFQcmVtdWx0aXBsaWNhdGlvbiBvdXRwdXRGb3JtYXQsIGNvbnN0IEludFJl
Y3QmIHNyY1JlY3QsIFJlbW90ZVJlc291cmNlSWRlbnRpZmllciByZW1vdGVSZXNvdXJjZUlkZW50
aWZpZXIpIGNvbnN0Cit7CisgICAgaWYgKGF1dG8gaW1hZ2UgPSBtX3JlbW90ZUltYWdlQnVmZmVy
SGFzaE1hcC5nZXQocmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyKSkKKyAgICAgICAgcmV0dXJuIGlt
YWdlLT5nZXRJbWFnZURhdGEob3V0cHV0Rm9ybWF0LCBzcmNSZWN0KTsKKyAgICByZXR1cm4gbnVs
bHB0cjsKK30KKworYm9vbCBSZW1vdGVSZXNvdXJjZUNhY2hlUHJveHk6OmRyYXdJbWFnZUJ1ZmZl
ckl0ZW0oY29uc3QgRGlzcGxheUxpc3Q6Okl0ZW0mIGl0ZW0sIEdyYXBoaWNzQ29udGV4dCYgY29u
dGV4dCkgY29uc3QKK3sKKyAgICBhdXRvJiBkcmF3SXRlbSA9IHN0YXRpY19jYXN0PGNvbnN0IERp
c3BsYXlMaXN0OjpEcmF3SW1hZ2VCdWZmZXImPihpdGVtKTsKKyAgICBhdXRvIGltYWdlID0gbV9y
ZW1vdGVJbWFnZUJ1ZmZlckhhc2hNYXAuZ2V0KGRyYXdJdGVtLnJlbW90ZVJlc291cmNlSWRlbnRp
ZmllcigpKTsKKyAgICBpZiAoIWltYWdlKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBp
bWFnZS0+ZHJhdyhjb250ZXh0LCBkcmF3SXRlbS5kZXN0aW5hdGlvblJlY3QoKSwgZHJhd0l0ZW0u
c291cmNlKCksIGRyYXdJdGVtLm9wdGlvbnMoKSk7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK2Jv
b2wgUmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5OjphcHBseVJlc291cmNlSXRlbShjb25zdCBEaXNw
bGF5TGlzdDo6SXRlbSYgaXRlbSwgR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0KSBjb25zdAorewor
ICAgIGlmIChpdGVtLnR5cGUoKSA9PSBEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OkRyYXdJbWFnZUJ1
ZmZlcikKKyAgICAgICAgcmV0dXJuIGRyYXdJbWFnZUJ1ZmZlckl0ZW0oaXRlbSwgY29udGV4dCk7
CisgICAgcmV0dXJuIGZhbHNlOworfQorCit2b2lkIFJlbW90ZVJlc291cmNlQ2FjaGVQcm94eTo6
cmVsZWFzZVJlbW90ZVJlc291cmNlKFJlbW90ZVJlc291cmNlSWRlbnRpZmllciByZW1vdGVSZXNv
dXJjZUlkZW50aWZpZXIpCit7CisgICAgaWYgKG1fcmVtb3RlSW1hZ2VCdWZmZXJIYXNoTWFwLnJl
bW92ZShyZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIpKQorICAgICAgICByZXR1cm47CisgICAgLy8g
Q2FjaGluZyB0aGUgcmVtb3RlIHJlc291cmNlIHNob3VsZCBoYXZlIGhhcHBlbmVkIGJlZm9yZSBy
ZWxlYXNpbmcgaXQuCisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Cit9CisKK30gLy8gbmFtZXNw
YWNlIFdlYktpdAorCisjZW5kaWYgLy8gRU5BQkxFKEdQVV9QUk9DRVNTKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlc291cmNlQ2FjaGVQcm94
eS5oIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlc291cmNlQ2Fj
aGVQcm94eS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjJjNTMwMWQwMmVlZTg1ZWFiZTFlOTdlMWQwNWNlZmMzYTM3
NTA3M2UKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhp
Y3MvUmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5LmgKQEAgLTAsMCArMSw2OCBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElT
JycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAq
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lm
IEVOQUJMRShHUFVfUFJPQ0VTUykKKworI2luY2x1ZGUgPFdlYkNvcmUvUmVtb3RlUmVzb3VyY2VJ
ZGVudGlmaWVyLmg+CisjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KKworbmFtZXNwYWNlIFdlYkNv
cmUgeworbmFtZXNwYWNlIERpc3BsYXlMaXN0IHsKK2NsYXNzIERpc3BsYXlMaXN0OworY2xhc3Mg
SXRlbTsKK30KK30KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIFJlbW90ZVJlbmRlcmlu
Z0JhY2tlbmRQcm94eTsKKworY2xhc3MgUmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5IHsKK3B1Ymxp
YzoKKyAgICBSZW1vdGVSZXNvdXJjZUNhY2hlUHJveHkoUmVtb3RlUmVuZGVyaW5nQmFja2VuZFBy
b3h5Jik7CisKKyAgICB2b2lkIGNyZWF0ZUltYWdlQnVmZmVyKGNvbnN0IFdlYkNvcmU6OkZsb2F0
U2l6ZSYgbG9naWNhbFNpemUsIFdlYkNvcmU6OlJlbmRlcmluZ01vZGUsIGZsb2F0IHJlc29sdXRp
b25TY2FsZSwgV2ViQ29yZTo6Q29sb3JTcGFjZSwgV2ViQ29yZTo6UmVtb3RlUmVzb3VyY2VJZGVu
dGlmaWVyKTsKKyAgICBXZWJDb3JlOjpJbWFnZUJ1ZmZlciogZmx1c2hEcmF3aW5nQ29udGV4dChj
b25zdCBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RGlzcGxheUxpc3QmLCBXZWJDb3JlOjpSZW1vdGVS
ZXNvdXJjZUlkZW50aWZpZXIpOworICAgIFdlYkNvcmU6OkltYWdlQnVmZmVyKiBmbHVzaERyYXdp
bmdDb250ZXh0QW5kQ29tbWl0KGNvbnN0IFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEaXNwbGF5TGlz
dCYsIFdlYkNvcmU6OlJlbW90ZVJlc291cmNlSWRlbnRpZmllcik7CisgICAgUmVmUHRyPFdlYkNv
cmU6OkltYWdlRGF0YT4gZ2V0SW1hZ2VEYXRhKFdlYkNvcmU6OkFscGhhUHJlbXVsdGlwbGljYXRp
b24gb3V0cHV0Rm9ybWF0LCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiBzcmNSZWN0LCBXZWJDb3Jl
OjpSZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIpIGNvbnN0OworCisgICAgYm9vbCBhcHBseVJlc291
cmNlSXRlbShjb25zdCBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbSYsIFdlYkNvcmU6OkdyYXBo
aWNzQ29udGV4dCYpIGNvbnN0OworCisgICAgdm9pZCByZWxlYXNlUmVtb3RlUmVzb3VyY2UoV2Vi
Q29yZTo6UmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyKTsKKworcHJpdmF0ZToKKyAgICB1c2luZyBS
ZW1vdGVJbWFnZUJ1ZmZlckhhc2hNYXAgPSBIYXNoTWFwPFdlYkNvcmU6OlJlbW90ZVJlc291cmNl
SWRlbnRpZmllciwgc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6OkltYWdlQnVmZmVyPj47CisKKyAg
ICBib29sIGRyYXdJbWFnZUJ1ZmZlckl0ZW0oY29uc3QgV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0
ZW0mLCBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQmKSBjb25zdDsKKworICAgIFJlbW90ZUltYWdl
QnVmZmVySGFzaE1hcCBtX3JlbW90ZUltYWdlQnVmZmVySGFzaE1hcDsKKyAgICBSZW1vdGVSZW5k
ZXJpbmdCYWNrZW5kUHJveHkmIG1fcmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5OworfTsKKwor
fSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBFTkFCTEUoR1BVX1BST0NFU1MpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZU1lZGlhUmVj
b3JkZXIuY3BwIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVNZWRpYVJl
Y29yZGVyLmNwcAppbmRleCA0MDE3YTJhOGYyMmNlY2VjYzIxNTFhMzBhMzI3OGZmOTA2ZWFmMzJh
Li42NzQ4ZDFmNWQ4MDBkOTU3NGYyMzgwNzViMTg5MGI0ZTRhY2VlOTE0IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZU1lZGlhUmVjb3JkZXIuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy93ZWJydGMvUmVtb3RlTWVkaWFSZWNvcmRlci5j
cHAKQEAgLTI5LDYgKzI5LDcgQEAKICNpZiBQTEFURk9STShDT0NPQSkgJiYgRU5BQkxFKEdQVV9Q
Uk9DRVNTKSAmJiBFTkFCTEUoTUVESUFfU1RSRUFNKSAmJiBIQVZFKEFWQVNTRVRXUklURVJERUxF
R0FURSkKIAogI2luY2x1ZGUgIkNvbm5lY3Rpb24uaCIKKyNpbmNsdWRlICJHUFVDb25uZWN0aW9u
VG9XZWJQcm9jZXNzLmgiCiAjaW5jbHVkZSAiU2hhcmVkUmluZ0J1ZmZlclN0b3JhZ2UuaCIKICNp
bmNsdWRlIDxXZWJDb3JlL0NBUmluZ0J1ZmZlci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvSW1hZ2VU
cmFuc2ZlclNlc3Npb25WVC5oPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNz
L3dlYnJ0Yy9SZW1vdGVTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXJNYW5hZ2VyLmNwcCBiL1NvdXJj
ZS9XZWJLaXQvR1BVUHJvY2Vzcy93ZWJydGMvUmVtb3RlU2FtcGxlQnVmZmVyRGlzcGxheUxheWVy
TWFuYWdlci5jcHAKaW5kZXggOTc3ZjkzZmY1YzNjMmI4MTc4NDZjOWE5YTc1NTE3ODljOGVmZTA1
Yy4uNjFiODkwZGM3ODY3YzMzYjAwNWYyMmU5M2JiMWFmNDdkZGQzYjE3YyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9HUFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVTYW1wbGVCdWZmZXJEaXNwbGF5
TGF5ZXJNYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRjL1Jl
bW90ZVNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllck1hbmFnZXIuY3BwCkBAIC0zMCw2ICszMCw3IEBA
CiAKICNpbmNsdWRlICJEZWNvZGVyLmgiCiAjaW5jbHVkZSAiR1BVQ29ubmVjdGlvblRvV2ViUHJv
Y2Vzcy5oIgorI2luY2x1ZGUgIkdQVVByb2Nlc3MuaCIKICNpbmNsdWRlICJSZW1vdGVTYW1wbGVC
dWZmZXJEaXNwbGF5TGF5ZXIuaCIKICNpbmNsdWRlICJSZW1vdGVTYW1wbGVCdWZmZXJEaXNwbGF5
TGF5ZXJNYW5hZ2VyTWVzc2FnZXMuaCIKICNpbmNsdWRlICJSZW1vdGVTYW1wbGVCdWZmZXJEaXNw
bGF5TGF5ZXJNZXNzYWdlcy5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TY3JpcHRzL3dl
YmtpdC9tZXNzYWdlcy5weSBiL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvbWVzc2FnZXMu
cHkKaW5kZXggZmFjZDJmN2FmYjVhMzkyZWUyMDk2N2E3NmZkNDFlMTRkZmIxNTBiOS4uODU5Y2M3
NTY5ZTkyZDE2NDU1NWQ2OTgwOTcyMjAwYmFiOWJkNTkwNiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9TY3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5weQorKysgYi9Tb3VyY2UvV2ViS2l0L1Njcmlw
dHMvd2Via2l0L21lc3NhZ2VzLnB5CkBAIC0yMjIsNiArMjIyLDcgQEAgZGVmIHR5cGVzX3RoYXRf
Y2Fubm90X2JlX2ZvcndhcmRfZGVjbGFyZWQoKToKICAgICAgICAgJ1dlYkNvcmU6OlBvaW50ZXJJ
RCcsCiAgICAgICAgICdXZWJDb3JlOjpQcm9jZXNzSWRlbnRpZmllcicsCiAgICAgICAgICdXZWJD
b3JlOjpSZWFsdGltZU1lZGlhU291cmNlSWRlbnRpZmllcicsCisgICAgICAgICdXZWJDb3JlOjpS
ZW1vdGVSZXNvdXJjZUlkZW50aWZpZXInLAogICAgICAgICAnV2ViQ29yZTo6UmVuZGVyaW5nTW9k
ZScsCiAgICAgICAgICdXZWJDb3JlOjpTZXJ2aWNlV29ya2VySWRlbnRpZmllcicsCiAgICAgICAg
ICdXZWJDb3JlOjpTZXJ2aWNlV29ya2VySm9iSWRlbnRpZmllcicsCkBAIC0yNDAsNyArMjQxLDYg
QEAgZGVmIHR5cGVzX3RoYXRfY2Fubm90X2JlX2ZvcndhcmRfZGVjbGFyZWQoKToKICAgICAgICAg
J1dlYktpdDo6R2VvbG9jYXRpb25JZGVudGlmaWVyJywKICAgICAgICAgJ1dlYktpdDo6SW1hZ2VC
dWZmZXJCYWNrZW5kSGFuZGxlJywKICAgICAgICAgJ1dlYktpdDo6SW1hZ2VCdWZmZXJGbHVzaElk
ZW50aWZpZXInLAotICAgICAgICAnV2ViS2l0OjpJbWFnZUJ1ZmZlcklkZW50aWZpZXInLAogICAg
ICAgICAnV2ViS2l0OjpMYXllckhvc3RpbmdDb250ZXh0SUQnLAogICAgICAgICAnV2ViS2l0OjpM
ZWdhY3lDdXN0b21Qcm90b2NvbElEJywKICAgICAgICAgJ1dlYktpdDo6TGliV2ViUlRDUmVzb2x2
ZXJJZGVudGlmaWVyJywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU291cmNlcy50eHQgYi9T
b3VyY2UvV2ViS2l0L1NvdXJjZXMudHh0CmluZGV4IGRhZjVmYjczMTNiZGQ5ODA2OGRlZGQzOWNi
YWM0ZGZiZTkzNzdjYTguLjhlM2IyYWZmY2EwMDM0YjMyNmRhOWIyMTk4Yzg1Nzk3NGUwNDkxNGMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU291cmNlcy50eHQKKysrIGIvU291cmNlL1dlYktp
dC9Tb3VyY2VzLnR4dApAQCAtMjQsOCArMjQsOCBAQAogR1BVUHJvY2Vzcy9HUFVQcm9jZXNzLmNw
cAogR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcAogR1BVUHJvY2Vzcy9H
UFVQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcAotR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1v
dGVJbWFnZUJ1ZmZlck1lc3NhZ2VIYW5kbGVyUHJveHkuY3BwCiBHUFVQcm9jZXNzL2dyYXBoaWNz
L1JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS5jcHAKK0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVt
b3RlUmVzb3VyY2VDYWNoZVByb3h5LmNwcAogR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVBdWRpb1Nl
c3Npb25Qcm94eS5jcHAKIEdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQXVkaW9TZXNzaW9uUHJveHlN
YW5hZ2VyLmNwcAogR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVBdWRpb1RyYWNrUHJveHkuY3BwCkBA
IC01NTIsOCArNTUyLDggQEAgV2ViUHJvY2Vzcy9NZWRpYVN0cmVhbS9Vc2VyTWVkaWFQZXJtaXNz
aW9uUmVxdWVzdE1hbmFnZXIuY3BwCiAKIFdlYlByb2Nlc3MvR1BVL0dQVVByb2Nlc3NDb25uZWN0
aW9uLmNwcAogV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvSW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRt
YXBCYWNrZW5kLmNwcAotV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlSW1hZ2VCdWZmZXJN
ZXNzYWdlSGFuZGxlci5jcHAKIFdlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmlu
Z0JhY2tlbmQuY3BwCitXZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVSZXNvdXJjZUNhY2hl
LmNwcAogV2ViUHJvY2Vzcy9HUFUvbWVkaWEvQXVkaW9UcmFja1ByaXZhdGVSZW1vdGUuY3BwCiBX
ZWJQcm9jZXNzL0dQVS9tZWRpYS9NZWRpYVBsYXllclByaXZhdGVSZW1vdGUuY3BwCiBXZWJQcm9j
ZXNzL0dQVS9tZWRpYS9SZW1vdGVBdWRpb0Rlc3RpbmF0aW9uUHJveHkuY3BwCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNl
L1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCA5ODQzNGNiYWMw
YzJmNjFhMmQ2ZTI4MDcxNmVjZDcyODgyODg5MjgyLi4yYThjNDJhNWFiZTQxNWJmOWQxMWM3YjBi
M2VmNzE4ODAyYjIwYzBmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oKQEAgLTM4ODksNyArMzg4OSw2IEBACiAJCTU1MDY0MEEyMjQwNzFBNjEw
MEFBRTA0NSAvKiBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5LmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJNTUwNjQwQTMyNDA3MUE2MTAwQUFFMDQ1IC8qIFJlbW90ZVJlbmRlcmluZ0Jh
Y2tlbmRQcm94eS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHku
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTUwNjQwQTQyNDA3MUMyMTAwQUFFMDQ1
IC8qIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS5tZXNzYWdlcy5pbiAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRl
eHQ7IHBhdGggPSBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkubWVzc2FnZXMuaW47IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTU1MDY0MEE1MjQwNzFDQzAwMEFBRTA0NSAvKiBJbWFn
ZUJ1ZmZlcklkZW50aWZpZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSW1hZ2VCdWZmZXJJZGVudGlmaWVy
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTU1QUQwOTQyMjQwOEEwMkUwMERFNEQy
RiAvKiBSZW1vdGVJbWFnZUJ1ZmZlclByb3h5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlbW90ZUltYWdl
QnVmZmVyUHJveHkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTVBRDA5NDMyNDA4
QTBFNjAwREU0RDJGIC8qIFBsYXRmb3JtUmVtb3RlSW1hZ2VCdWZmZXJQcm94eS5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBQbGF0Zm9ybVJlbW90ZUltYWdlQnVmZmVyUHJveHkuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJNTVBRDA5NDQyNDA4QUJCMzAwREU0RDJGIC8qIEltYWdlQnVmZmVyRmx1
c2hJZGVudGlmaWVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEltYWdlQnVmZmVyRmx1c2hJZGVudGlmaWVy
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC00MTc4LDEwICs0MTc3LDcgQEAKIAkJ
NzFBNjc2QTUyMkM2MjMxODAwN0Q2Mjk1IC8qIFdLVG91Y2hBY3Rpb25HZXN0dXJlUmVjb2duaXpl
ci5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgbmFtZSA9IFdLVG91Y2hBY3Rp
b25HZXN0dXJlUmVjb2duaXplci5tbTsgcGF0aCA9IGlvcy9XS1RvdWNoQWN0aW9uR2VzdHVyZVJl
Y29nbml6ZXIubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTcxRkI4MTBBMjI2MDYy
N0EwMDMyMzY3NyAvKiBXZWJzaXRlU2ltdWxhdGVkTW91c2VFdmVudHNEaXNwYXRjaFBvbGljeS5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJzaXRlU2ltdWxhdGVkTW91c2VF
dmVudHNEaXNwYXRjaFBvbGljeS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3MjI3
ODAwQjI0MDhCRDdEMDA3RDM3NkIgLyogUGxhdGZvcm1SZW1vdGVJbWFnZUJ1ZmZlci5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBQbGF0Zm9ybVJlbW90ZUltYWdlQnVmZmVyLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07Ci0JCTcyMjc4MDBDMjQwOTdBMDIwMDdEMzc2QiAvKiBSZW1vdGVJbWFnZUJ1ZmZl
ck1lc3NhZ2VIYW5kbGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJlbW90ZUltYWdlQnVmZmVy
TWVzc2FnZUhhbmRsZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3MjI3ODAw
RDI0MDk3QTAyMDA3RDM3NkIgLyogUmVtb3RlSW1hZ2VCdWZmZXJNZXNzYWdlSGFuZGxlci5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBSZW1vdGVJbWFnZUJ1ZmZlck1lc3NhZ2VIYW5kbGVyLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTcyMjc4MDExMjQwOTkwNkUwMDdEMzc2QiAvKiBSZW1vdGVJ
bWFnZUJ1ZmZlck1lc3NhZ2VIYW5kbGVyUHJveHkuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUmVt
b3RlSW1hZ2VCdWZmZXJNZXNzYWdlSGFuZGxlclByb3h5LmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKLQkJNzIyNzgwMTIyNDA5OTA2RTAwN0QzNzZCIC8qIFJlbW90ZUltYWdlQnVmZmVy
TWVzc2FnZUhhbmRsZXJQcm94eS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZW1vdGVJbWFnZUJ1ZmZlck1l
c3NhZ2VIYW5kbGVyUHJveHkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzI3QTdG
MzQyNDA3ODU3RDAwNEQyOTMxIC8qIEltYWdlQnVmZmVyU2hhcmVhYmxlSU9TdXJmYWNlQmFja2Vu
ZC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBJbWFnZUJ1ZmZlclNo
YXJlYWJsZUlPU3VyZmFjZUJhY2tlbmQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk3MjdBN0YzNTI0MDc4NTdGMDA0RDI5MzEgLyogSW1hZ2VCdWZmZXJTaGFyZWFibGVJT1N1cmZh
Y2VCYWNrZW5kLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEltYWdlQnVmZmVy
U2hhcmVhYmxlSU9TdXJmYWNlQmFja2VuZC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk3MjdBN0YzNjI0MDc4OEYwMDA0RDI5MzEgLyogSW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRtYXBC
YWNrZW5kLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEltYWdlQnVmZmVyU2hh
cmVhYmxlQml0bWFwQmFja2VuZC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNDE5
MSw2ICs0MTg3LDEwIEBACiAJCTcyN0E3RjQ5MjQwOEFFRTYwMDREMjkzMSAvKiBSZW1vdGVJbWFn
ZUJ1ZmZlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZW1vdGVJbWFnZUJ1ZmZlci5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk3MjhFODZFRjE3OTUxODhDMDA4Nzg3OUUgLyogV2ViQ29sb3JQ
aWNrZXJNYWMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViQ29sb3JQaWNr
ZXJNYWMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzI4RTg2RjAxNzk1MTg4QzAw
ODc4NzlFIC8qIFdlYkNvbG9yUGlja2VyTWFjLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
b2JqY3BwOyBwYXRoID0gV2ViQ29sb3JQaWNrZXJNYWMubW07IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCTcyOUQwNTMyMjUzMTRGRUYwMDQyMjA5OCAvKiBSZW1vdGVSZXNvdXJjZUNhY2hl
UHJveHkuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5LmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNzI5RDA1MzMyNTMxNEZFRjAwNDIyMDk4
IC8qIFJlbW90ZVJlc291cmNlQ2FjaGVQcm94eS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZW1vdGVSZXNv
dXJjZUNhY2hlUHJveHkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNzI5RDA1MzUy
NTMxNzNDQzAwNDIyMDk4IC8qIFJlbW90ZVJlc291cmNlQ2FjaGUuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gUmVtb3RlUmVzb3VyY2VDYWNoZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCTcyOUQwNTM2MjUzMTczQ0MwMDQyMjA5OCAvKiBSZW1vdGVSZXNvdXJjZUNhY2hlLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IFJlbW90ZVJlc291cmNlQ2FjaGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJNzVBOEQyQzQxODdDQ0Y5RjAwQzM5QzlFIC8qIFdLV2Vic2l0ZURhdGFTdG9yZS5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXS1dlYnNpdGVEYXRhU3RvcmUuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzVBOEQyQzUxODdDQ0Y5RjAwQzM5QzlFIC8q
IFdLV2Vic2l0ZURhdGFTdG9yZS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsg
cGF0aCA9IFdLV2Vic2l0ZURhdGFTdG9yZS5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJNzVBOEQyRDQxODdEMUMwMTAwQzM5QzlFIC8qIFdLV2Vic2l0ZURhdGFTdG9yZUludGVybmFs
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdLV2Vic2l0ZURhdGFTdG9yZUlu
dGVybmFsLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC04MDc2LDE3ICs4MDc2LDE3
IEBACiAJCQkJNzI3QTdGMzMyNDA3ODUyNzAwNEQyOTMxIC8qIGNvY29hICovLAogCQkJCTcyN0E3
RjM5MjQwNzg4RjEwMDREMjkzMSAvKiBJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGUuaCAqLywKIAkJ
CQk1NUFEMDk0NDI0MDhBQkIzMDBERTREMkYgLyogSW1hZ2VCdWZmZXJGbHVzaElkZW50aWZpZXIu
aCAqLywKLQkJCQk1NTA2NDBBNTI0MDcxQ0MwMDBBQUUwNDUgLyogSW1hZ2VCdWZmZXJJZGVudGlm
aWVyLmggKi8sCiAJCQkJNzI3QTdGMzcyNDA3ODhGMDAwNEQyOTMxIC8qIEltYWdlQnVmZmVyU2hh
cmVhYmxlQml0bWFwQmFja2VuZC5jcHAgKi8sCiAJCQkJNzI3QTdGMzYyNDA3ODhGMDAwNEQyOTMx
IC8qIEltYWdlQnVmZmVyU2hhcmVhYmxlQml0bWFwQmFja2VuZC5oICovLAogCQkJCTcyN0E3RjM4
MjQwNzg4RjAwMDREMjkzMSAvKiBQbGF0Zm9ybUltYWdlQnVmZmVyU2hhcmVhYmxlQmFja2VuZC5o
ICovLAogCQkJCTcyMjc4MDBCMjQwOEJEN0QwMDdEMzc2QiAvKiBQbGF0Zm9ybVJlbW90ZUltYWdl
QnVmZmVyLmggKi8sCiAJCQkJNzI3QTdGNDkyNDA4QUVFNjAwNEQyOTMxIC8qIFJlbW90ZUltYWdl
QnVmZmVyLmggKi8sCi0JCQkJNzIyNzgwMEMyNDA5N0EwMjAwN0QzNzZCIC8qIFJlbW90ZUltYWdl
QnVmZmVyTWVzc2FnZUhhbmRsZXIuY3BwICovLAogCQkJCTcyMjc4MDBEMjQwOTdBMDIwMDdEMzc2
QiAvKiBSZW1vdGVJbWFnZUJ1ZmZlck1lc3NhZ2VIYW5kbGVyLmggKi8sCiAJCQkJNTUwNjQwOUQy
NDA3MTYwOTAwQUFFMDQ1IC8qIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQuY3BwICovLAogCQkJCTU1
MDY0MDlFMjQwNzE2MDkwMEFBRTA0NSAvKiBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kLmggKi8sCiAJ
CQkJNTUwNjQwQTAyNDA3MTlFMTAwQUFFMDQ1IC8qIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQubWVz
c2FnZXMuaW4gKi8sCisJCQkJNzI5RDA1MzUyNTMxNzNDQzAwNDIyMDk4IC8qIFJlbW90ZVJlc291
cmNlQ2FjaGUuY3BwICovLAorCQkJCTcyOUQwNTM2MjUzMTczQ0MwMDQyMjA5OCAvKiBSZW1vdGVS
ZXNvdXJjZUNhY2hlLmggKi8sCiAJCQkJNTUwNjQwOUYyNDA3MTk2QTAwQUFFMDQ1IC8qIFJlbmRl
cmluZ0JhY2tlbmRJZGVudGlmaWVyLmggKi8sCiAJCQkpOwogCQkJcGF0aCA9IGdyYXBoaWNzOwpA
QCAtODA5NiwxMiArODA5NiwxMiBAQAogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9
ICgKIAkJCQk1NUFEMDk0MzI0MDhBMEU2MDBERTREMkYgLyogUGxhdGZvcm1SZW1vdGVJbWFnZUJ1
ZmZlclByb3h5LmggKi8sCi0JCQkJNzIyNzgwMTEyNDA5OTA2RTAwN0QzNzZCIC8qIFJlbW90ZUlt
YWdlQnVmZmVyTWVzc2FnZUhhbmRsZXJQcm94eS5jcHAgKi8sCi0JCQkJNzIyNzgwMTIyNDA5OTA2
RTAwN0QzNzZCIC8qIFJlbW90ZUltYWdlQnVmZmVyTWVzc2FnZUhhbmRsZXJQcm94eS5oICovLAog
CQkJCTU1QUQwOTQyMjQwOEEwMkUwMERFNEQyRiAvKiBSZW1vdGVJbWFnZUJ1ZmZlclByb3h5Lmgg
Ki8sCiAJCQkJNTUwNjQwQTIyNDA3MUE2MTAwQUFFMDQ1IC8qIFJlbW90ZVJlbmRlcmluZ0JhY2tl
bmRQcm94eS5jcHAgKi8sCiAJCQkJNTUwNjQwQTMyNDA3MUE2MTAwQUFFMDQ1IC8qIFJlbW90ZVJl
bmRlcmluZ0JhY2tlbmRQcm94eS5oICovLAogCQkJCTU1MDY0MEE0MjQwNzFDMjEwMEFBRTA0NSAv
KiBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkubWVzc2FnZXMuaW4gKi8sCisJCQkJNzI5RDA1
MzIyNTMxNEZFRjAwNDIyMDk4IC8qIFJlbW90ZVJlc291cmNlQ2FjaGVQcm94eS5jcHAgKi8sCisJ
CQkJNzI5RDA1MzMyNTMxNEZFRjAwNDIyMDk4IC8qIFJlbW90ZVJlc291cmNlQ2FjaGVQcm94eS5o
ICovLAogCQkJKTsKIAkJCXBhdGggPSBncmFwaGljczsKIAkJCXNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL0lt
YWdlQnVmZmVySWRlbnRpZmllci5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFw
aGljcy9JbWFnZUJ1ZmZlcklkZW50aWZpZXIuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggOWExYmM5YWU4N2RjOGQ3MjQyOGEwYjgwOWNhZDBkODBhNGNkMWNiOS4uMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvR1BVL2dyYXBoaWNzL0ltYWdlQnVmZmVySWRlbnRpZmllci5oCisrKyAvZGV2L251bGwKQEAg
LTEsMzkgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBt
ZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaWYgRU5BQkxFKEdQ
VV9QUk9DRVNTKQotCi0jaW5jbHVkZSA8d3RmL09iamVjdElkZW50aWZpZXIuaD4KLQotbmFtZXNw
YWNlIFdlYktpdCB7Ci0KLWVudW0gSW1hZ2VCdWZmZXJJZGVudGlmaWVyVHlwZSB7IH07Ci11c2lu
ZyBJbWFnZUJ1ZmZlcklkZW50aWZpZXIgPSBPYmplY3RJZGVudGlmaWVyPEltYWdlQnVmZmVySWRl
bnRpZmllclR5cGU+OwotCi19IC8vIG5hbWVzcGFjZSBXZWJLaXQKLQotI2VuZGlmIC8vIEVOQUJM
RShHUFVfUFJPQ0VTUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUv
Z3JhcGhpY3MvUmVtb3RlSW1hZ2VCdWZmZXIuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9H
UFUvZ3JhcGhpY3MvUmVtb3RlSW1hZ2VCdWZmZXIuaAppbmRleCBlODQ5MTY2NDUxNDU5NjI4N2Vm
MmM3OGY5MDc2ZTFkNDM4MjE5MWYyLi4wOGExZGVhZWEwYTY0MGY0NzI3NTc4YmU4MzM3MjczOTQ1
MjdiNTg0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNz
L1JlbW90ZUltYWdlQnVmZmVyLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9n
cmFwaGljcy9SZW1vdGVJbWFnZUJ1ZmZlci5oCkBAIC0zNyw3ICszNyw3IEBAIG5hbWVzcGFjZSBX
ZWJLaXQgewogY2xhc3MgUmVtb3RlUmVuZGVyaW5nQmFja2VuZDsKIAogdGVtcGxhdGU8dHlwZW5h
bWUgQmFja2VuZFR5cGU+Ci1jbGFzcyBSZW1vdGVJbWFnZUJ1ZmZlciA6IHB1YmxpYyBXZWJDb3Jl
OjpEaXNwbGF5TGlzdDo6SW1hZ2VCdWZmZXI8QmFja2VuZFR5cGU+LCBwdWJsaWMgUmVtb3RlSW1h
Z2VCdWZmZXJNZXNzYWdlSGFuZGxlciB7CitjbGFzcyBSZW1vdGVJbWFnZUJ1ZmZlciA6IHB1Ymxp
YyBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SW1hZ2VCdWZmZXI8QmFja2VuZFR5cGU+LCBwdWJsaWMg
UmVtb3RlSW1hZ2VCdWZmZXJNZXNzYWdlSGFuZGxlciwgcHVibGljIFdlYkNvcmU6OkRpc3BsYXlM
aXN0OjpSZWNvcmRlcjo6RGVsZWdhdGUgewogICAgIHVzaW5nIEJhc2VEaXNwbGF5TGlzdEltYWdl
QnVmZmVyID0gV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkltYWdlQnVmZmVyPEJhY2tlbmRUeXBlPjsK
ICAgICB1c2luZyBCYXNlRGlzcGxheUxpc3RJbWFnZUJ1ZmZlcjo6bV9iYWNrZW5kOwogICAgIHVz
aW5nIEJhc2VEaXNwbGF5TGlzdEltYWdlQnVmZmVyOjptX2RyYXdpbmdDb250ZXh0OwpAQCAtNTMs
MTQgKzUzLDIwIEBAIHB1YmxpYzoKIAogICAgIH5SZW1vdGVJbWFnZUJ1ZmZlcigpCiAgICAgewor
ICAgICAgICBpZiAoIW1fcmVtb3RlUmVuZGVyaW5nQmFja2VuZCkKKyAgICAgICAgICAgIHJldHVy
bjsKICAgICAgICAgZmx1c2hEcmF3aW5nQ29udGV4dCgpOworICAgICAgICBtX3JlbW90ZVJlbmRl
cmluZ0JhY2tlbmQtPnJlbGVhc2VJbWFnZUJ1ZmZlcigqdGhpcyk7CiAgICAgfQogCisgICAgV2Vi
Q29yZTo6UmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyIHJlbW90ZVJlc291cmNlSWRlbnRpZmllcigp
IGNvbnN0IHsgcmV0dXJuIG1fcmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyOyB9CisKIHByb3RlY3Rl
ZDoKICAgICBSZW1vdGVJbWFnZUJ1ZmZlcihjb25zdCBXZWJDb3JlOjpGbG9hdFNpemUmIHNpemUs
IFdlYkNvcmU6OlJlbmRlcmluZ01vZGUgcmVuZGVyaW5nTW9kZSwgZmxvYXQgcmVzb2x1dGlvblNj
YWxlLCBXZWJDb3JlOjpDb2xvclNwYWNlIGNvbG9yU3BhY2UsIFJlbW90ZVJlbmRlcmluZ0JhY2tl
bmQmIHJlbW90ZVJlbmRlcmluZ0JhY2tlbmQpCi0gICAgICAgIDogQmFzZURpc3BsYXlMaXN0SW1h
Z2VCdWZmZXIoc2l6ZSkKLSAgICAgICAgLCBSZW1vdGVJbWFnZUJ1ZmZlck1lc3NhZ2VIYW5kbGVy
KHNpemUsIHJlbmRlcmluZ01vZGUsIHJlc29sdXRpb25TY2FsZSwgY29sb3JTcGFjZSwgcmVtb3Rl
UmVuZGVyaW5nQmFja2VuZCkKKyAgICAgICAgOiBCYXNlRGlzcGxheUxpc3RJbWFnZUJ1ZmZlcihz
aXplLCB0aGlzKQorICAgICAgICAsIG1fcmVtb3RlUmVuZGVyaW5nQmFja2VuZChtYWtlV2Vha1B0
cihyZW1vdGVSZW5kZXJpbmdCYWNrZW5kKSkKICAgICB7CisgICAgICAgIG1fcmVtb3RlUmVzb3Vy
Y2VJZGVudGlmaWVyID0gbV9yZW1vdGVSZW5kZXJpbmdCYWNrZW5kLT5yZW1vdGVDcmVhdGVJbWFn
ZUJ1ZmZlcihzaXplLCByZW5kZXJpbmdNb2RlLCByZXNvbHV0aW9uU2NhbGUsIGNvbG9yU3BhY2Up
OwogICAgIH0KIAogICAgIHZvaWQgY3JlYXRlQmFja2VuZChjb25zdCBXZWJDb3JlOjpGbG9hdFNp
emUmIGxvZ2ljYWxTaXplLCBjb25zdCBXZWJDb3JlOjpJbnRTaXplJiBiYWNrZW5kU2l6ZSwgZmxv
YXQgcmVzb2x1dGlvblNjYWxlLCBXZWJDb3JlOjpDb2xvclNwYWNlIGNvbG9yU3BhY2UsIEltYWdl
QnVmZmVyQmFja2VuZEhhbmRsZSBoYW5kbGUpIG92ZXJyaWRlCkBAIC02OSwyMiArNzUsNTAgQEAg
cHJvdGVjdGVkOgogICAgICAgICBtX2JhY2tlbmQgPSBCYWNrZW5kVHlwZTo6Y3JlYXRlKGxvZ2lj
YWxTaXplLCBiYWNrZW5kU2l6ZSwgcmVzb2x1dGlvblNjYWxlLCBjb2xvclNwYWNlLCBXVEZNb3Zl
KGhhbmRsZSkpOwogICAgIH0KICAgICAKLSAgICBib29sIGlzQmFja2VuZENyZWF0ZWQoKSBjb25z
dCBvdmVycmlkZSB7IHJldHVybiBtX2JhY2tlbmQuZ2V0KCk7IH0KLQogICAgIEJhY2tlbmRUeXBl
KiBlbnN1cmVCYWNrZW5kQ3JlYXRlZCgpIGNvbnN0IG92ZXJyaWRlCiAgICAgewotICAgICAgICBp
ZiAoIW1fYmFja2VuZCkKLSAgICAgICAgICAgIGNvbnN0X2Nhc3Q8UmVtb3RlSW1hZ2VCdWZmZXIm
PigqdGhpcykuUmVtb3RlSW1hZ2VCdWZmZXJNZXNzYWdlSGFuZGxlcjo6d2FpdEZvckNyZWF0ZUlt
YWdlQnVmZmVyQmFja2VuZCgpOworICAgICAgICBpZiAoIW1fYmFja2VuZCAmJiBtX3JlbW90ZVJl
bmRlcmluZ0JhY2tlbmQpCisgICAgICAgICAgICBtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmQtPndh
aXRGb3JDcmVhdGVJbWFnZUJ1ZmZlckJhY2tlbmQoKTsKICAgICAgICAgcmV0dXJuIG1fYmFja2Vu
ZC5nZXQoKTsKICAgICB9CiAKKyAgICB2b2lkIGZsdXNoQ29udGV4dCgpIG92ZXJyaWRlCisgICAg
eworICAgICAgICBmbHVzaERyYXdpbmdDb250ZXh0KCk7CisgICAgICAgIG1fYmFja2VuZC0+Zmx1
c2hDb250ZXh0KCk7CisgICAgfQorCisgICAgdm9pZCBmbHVzaERyYXdpbmdDb250ZXh0KCkgb3Zl
cnJpZGUKKyAgICB7CisgICAgICAgIGF1dG8mIGRpc3BsYXlMaXN0ID0gbV9kcmF3aW5nQ29udGV4
dC5kaXNwbGF5TGlzdCgpOworICAgICAgICBpZiAoIWRpc3BsYXlMaXN0Lml0ZW1Db3VudCgpIHx8
ICFtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmQpCisgICAgICAgICAgICByZXR1cm47CisgICAgICAg
IG1fc2VudEZsdXNoSWRlbnRpZmllciA9IG1fcmVtb3RlUmVuZGVyaW5nQmFja2VuZC0+cmVtb3Rl
Rmx1c2hEcmF3aW5nQ29udGV4dEFuZENvbW1pdChkaXNwbGF5TGlzdCwgbV9yZW1vdGVSZXNvdXJj
ZUlkZW50aWZpZXIpOworICAgICAgICBtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmQtPndhaXRGb3JD
b21taXRJbWFnZUJ1ZmZlckZsdXNoQ29udGV4dCgpOworICAgICAgICBtX3JlbW90ZVJlbmRlcmlu
Z0JhY2tlbmQtPnJlbGVhc2VSZW1vdGVDbGllbnQobV9yZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIp
OworICAgICAgICBkaXNwbGF5TGlzdC5jbGVhcigpOworICAgIH0KKworICAgIHZvaWQgZmx1c2hE
cmF3aW5nQ29udGV4dChjb25zdCBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RGlzcGxheUxpc3QmIGRp
c3BsYXlMaXN0KSBvdmVycmlkZQorICAgIHsKKyAgICAgICAgaWYgKCFkaXNwbGF5TGlzdC5pdGVt
Q291bnQoKSB8fCAhbV9yZW1vdGVSZW5kZXJpbmdCYWNrZW5kKQorICAgICAgICAgICAgcmV0dXJu
OworICAgICAgICBtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmQtPnJlbW90ZUZsdXNoRHJhd2luZ0Nv
bnRleHQoZGlzcGxheUxpc3QsIG1fcmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyKTsKKyAgICB9Cisg
ICAgCiAgICAgUmVmUHRyPFdlYkNvcmU6OkltYWdlRGF0YT4gZ2V0SW1hZ2VEYXRhKFdlYkNvcmU6
OkFscGhhUHJlbXVsdGlwbGljYXRpb24gb3V0cHV0Rm9ybWF0LCBjb25zdCBXZWJDb3JlOjpJbnRS
ZWN0JiBzcmNSZWN0KSBjb25zdCBvdmVycmlkZQogICAgIHsKKyAgICAgICAgaWYgKCFtX3JlbW90
ZVJlbmRlcmluZ0JhY2tlbmQpCisgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKwogICAgICAg
ICBhdXRvJiBkaXNwbGF5TGlzdCA9IGNvbnN0X2Nhc3Q8UmVtb3RlSW1hZ2VCdWZmZXIqPih0aGlz
KS0+bV9kcmF3aW5nQ29udGV4dC5kaXNwbGF5TGlzdCgpOwotICAgICAgICBjb25zdF9jYXN0PFJl
bW90ZUltYWdlQnVmZmVyKj4odGhpcyktPlJlbW90ZUltYWdlQnVmZmVyTWVzc2FnZUhhbmRsZXI6
OmZsdXNoRHJhd2luZ0NvbnRleHQoZGlzcGxheUxpc3QpOwotICAgICAgICBhdXRvIHJlc3VsdCA9
IGNvbnN0X2Nhc3Q8UmVtb3RlSW1hZ2VCdWZmZXIqPih0aGlzKS0+UmVtb3RlSW1hZ2VCdWZmZXJN
ZXNzYWdlSGFuZGxlcjo6Z2V0SW1hZ2VEYXRhKG91dHB1dEZvcm1hdCwgc3JjUmVjdCk7CisgICAg
ICAgIGlmIChkaXNwbGF5TGlzdC5pdGVtQ291bnQoKSkgeworICAgICAgICAgICAgY29uc3RfY2Fz
dDxSZW1vdGVJbWFnZUJ1ZmZlcio+KHRoaXMpLT5mbHVzaERyYXdpbmdDb250ZXh0KGRpc3BsYXlM
aXN0KTsKKyAgICAgICAgICAgIGRpc3BsYXlMaXN0LmNsZWFyKCk7CisgICAgICAgIH0KKwogICAg
ICAgICAvLyBnZXRJbWFnZURhdGEgaXMgc3luY2hyb25vdXMsIHdoaWNoIG1lYW5zIHdlJ3ZlIGFs
cmVhZHkgcmVjZWl2ZWQgdGhlIENvbW1pdEltYWdlQnVmZmVyRmx1c2hDb250ZXh0IG1lc3NhZ2Uu
Ci0gICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgICAgIHJldHVybiBtX3JlbW90ZVJlbmRlcmlu
Z0JhY2tlbmQtPnJlbW90ZUdldEltYWdlRGF0YShvdXRwdXRGb3JtYXQsIHNyY1JlY3QsIG1fcmVt
b3RlUmVzb3VyY2VJZGVudGlmaWVyKTsKICAgICB9CiAKICAgICB2b2lkIHB1dEltYWdlRGF0YShX
ZWJDb3JlOjpBbHBoYVByZW11bHRpcGxpY2F0aW9uIGlucHV0Rm9ybWF0LCBjb25zdCBXZWJDb3Jl
OjpJbWFnZURhdGEmIGltYWdlRGF0YSwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYgc3JjUmVjdCwg
Y29uc3QgV2ViQ29yZTo6SW50UG9pbnQmIGRlc3RQb2ludCA9IHsgfSwgV2ViQ29yZTo6QWxwaGFQ
cmVtdWx0aXBsaWNhdGlvbiBkZXN0Rm9ybWF0ID0gV2ViQ29yZTo6QWxwaGFQcmVtdWx0aXBsaWNh
dGlvbjo6UHJlbXVsdGlwbGllZCkgb3ZlcnJpZGUKQEAgLTk1LDI2ICsxMjksMjUgQEAgcHJvdGVj
dGVkOgogICAgICAgICBtX2RyYXdpbmdDb250ZXh0LnJlY29yZGVyKCkucHV0SW1hZ2VEYXRhKGlu
cHV0Rm9ybWF0LCBpbWFnZURhdGEsIHNyY1JlY3QsIGRlc3RQb2ludCwgZGVzdEZvcm1hdCk7CiAg
ICAgfQogCi0gICAgdm9pZCBmbHVzaENvbnRleHQoKSBvdmVycmlkZQorICAgIFJlZlB0cjxXZWJD
b3JlOjpEaXNwbGF5TGlzdDo6SXRlbT4gY3JlYXRlRHJhd0ltYWdlQnVmZmVySXRlbShXZWJDb3Jl
OjpJbWFnZUJ1ZmZlciYgaW1hZ2UsIGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYgZGVzdFJlY3Qs
IGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgV2ViQ29yZTo6SW1hZ2VQ
YWludGluZ09wdGlvbnMmIG9wdGlvbnMpIG92ZXJyaWRlCiAgICAgewotICAgICAgICBmbHVzaERy
YXdpbmdDb250ZXh0KCk7Ci0gICAgICAgIG1fYmFja2VuZC0+Zmx1c2hDb250ZXh0KCk7CisgICAg
ICAgIGlmICghbV9yZW1vdGVSZW5kZXJpbmdCYWNrZW5kKQorICAgICAgICAgICAgcmV0dXJuIG51
bGxwdHI7CisgICAgICAgIHJldHVybiBtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmQtPmNyZWF0ZURy
YXdJbWFnZUJ1ZmZlckl0ZW0oaW1hZ2UsIGRlc3RSZWN0LCBzcmNSZWN0LCBvcHRpb25zLCBtX3Jl
bW90ZVJlc291cmNlSWRlbnRpZmllcik7CiAgICAgfQogCi0gICAgdm9pZCBmbHVzaERyYXdpbmdD
b250ZXh0KCkgb3ZlcnJpZGUKLSAgICB7Ci0gICAgICAgIGF1dG8mIGRpc3BsYXlMaXN0ID0gbV9k
cmF3aW5nQ29udGV4dC5kaXNwbGF5TGlzdCgpOwotICAgICAgICBpZiAoZGlzcGxheUxpc3QuaXRl
bUNvdW50KCkpCi0gICAgICAgICAgICBSZW1vdGVJbWFnZUJ1ZmZlck1lc3NhZ2VIYW5kbGVyOjpm
bHVzaERyYXdpbmdDb250ZXh0QW5kV2FpdENvbW1pdChkaXNwbGF5TGlzdCk7Ci0gICAgfQotICAg
IAogICAgIHZvaWQgd2lsbEFwcGVuZEl0ZW0oY29uc3QgV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0
ZW0mKSBvdmVycmlkZQogICAgIHsKICAgICAgICAgY29uc3RleHByIHNpemVfdCBEaXNwbGF5TGlz
dEJhdGNoU2l6ZSA9IDUxMjsKICAgICAgICAgYXV0byYgZGlzcGxheUxpc3QgPSBtX2RyYXdpbmdD
b250ZXh0LmRpc3BsYXlMaXN0KCk7Ci0gICAgICAgIGlmIChkaXNwbGF5TGlzdC5pdGVtQ291bnQo
KSA+PSBEaXNwbGF5TGlzdEJhdGNoU2l6ZSkKLSAgICAgICAgICAgIFJlbW90ZUltYWdlQnVmZmVy
TWVzc2FnZUhhbmRsZXI6OmZsdXNoRHJhd2luZ0NvbnRleHQoZGlzcGxheUxpc3QpOworICAgICAg
ICBpZiAoZGlzcGxheUxpc3QuaXRlbUNvdW50KCkgPCBEaXNwbGF5TGlzdEJhdGNoU2l6ZSB8fCAh
bV9yZW1vdGVSZW5kZXJpbmdCYWNrZW5kKQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICBm
bHVzaERyYXdpbmdDb250ZXh0KGRpc3BsYXlMaXN0KTsKKyAgICAgICAgZGlzcGxheUxpc3QuY2xl
YXIoKTsKICAgICB9CisKKyAgICBXZWFrUHRyPFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ+IG1fcmVt
b3RlUmVuZGVyaW5nQmFja2VuZDsKKyAgICBXZWJDb3JlOjpSZW1vdGVSZXNvdXJjZUlkZW50aWZp
ZXIgbV9yZW1vdGVSZXNvdXJjZUlkZW50aWZpZXI7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJL
aXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVt
b3RlSW1hZ2VCdWZmZXJNZXNzYWdlSGFuZGxlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvR1BVL2dyYXBoaWNzL1JlbW90ZUltYWdlQnVmZmVyTWVzc2FnZUhhbmRsZXIuY3BwCmRlbGV0
ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3NzE1MGM3YjA3OTNhZmU5YWM1YzgzYTlhYzc0NmJh
MzE4ZTUxYjhmLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlSW1hZ2VCdWZmZXJN
ZXNzYWdlSGFuZGxlci5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSw5OSArMCwwIEBACi0vKgotICog
Q29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0g
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElU
UyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YK
LSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
Ci0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0g
Ki8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIlJlbW90ZUltYWdlQnVmZmVyTWVz
c2FnZUhhbmRsZXIuaCIKLQotI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykKLQotI2luY2x1ZGUgIklt
YWdlRGF0YVJlZmVyZW5jZS5oIgotI2luY2x1ZGUgIlJlbW90ZVJlbmRlcmluZ0JhY2tlbmQuaCIK
LSNpbmNsdWRlICJSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHlNZXNzYWdlcy5oIgotI2luY2x1
ZGUgPFdlYkNvcmUvRGlzcGxheUxpc3RJdGVtcy5oPgotCi1uYW1lc3BhY2UgV2ViS2l0IHsKLXVz
aW5nIG5hbWVzcGFjZSBXZWJDb3JlOwotCi1SZW1vdGVJbWFnZUJ1ZmZlck1lc3NhZ2VIYW5kbGVy
OjpSZW1vdGVJbWFnZUJ1ZmZlck1lc3NhZ2VIYW5kbGVyKGNvbnN0IEZsb2F0U2l6ZSYgc2l6ZSwg
UmVuZGVyaW5nTW9kZSByZW5kZXJpbmdNb2RlLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIENvbG9y
U3BhY2UgY29sb3JTcGFjZSwgUmVtb3RlUmVuZGVyaW5nQmFja2VuZCYgcmVtb3RlUmVuZGVyaW5n
QmFja2VuZCkKLSAgICA6IG1fcmVtb3RlUmVuZGVyaW5nQmFja2VuZChtYWtlV2Vha1B0cihyZW1v
dGVSZW5kZXJpbmdCYWNrZW5kKSkKLXsKLSAgICAvLyBDcmVhdGUgdGhlIFJlbW90ZUltYWdlQnVm
ZmVyUHJveHkuCi0gICAgbV9yZW1vdGVSZW5kZXJpbmdCYWNrZW5kLT5zZW5kKE1lc3NhZ2VzOjpS
ZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHk6OkNyZWF0ZUltYWdlQnVmZmVyKHNpemUsIHJlbmRl
cmluZ01vZGUsIHJlc29sdXRpb25TY2FsZSwgY29sb3JTcGFjZSwgbV9pbWFnZUJ1ZmZlcklkZW50
aWZpZXIpLCBtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmQtPnJlbmRlcmluZ0JhY2tlbmRJZGVudGlm
aWVyKCkpOwotfQotCi1SZW1vdGVJbWFnZUJ1ZmZlck1lc3NhZ2VIYW5kbGVyOjp+UmVtb3RlSW1h
Z2VCdWZmZXJNZXNzYWdlSGFuZGxlcigpCi17Ci0gICAgLy8gUmVsZWFzZSB0aGUgUmVtb3RlSW1h
Z2VCdWZmZXJQcm94eS4KLSAgICBpZiAoIW1fcmVtb3RlUmVuZGVyaW5nQmFja2VuZCkKLSAgICAg
ICAgcmV0dXJuOwotICAgIG1fcmVtb3RlUmVuZGVyaW5nQmFja2VuZC0+c2VuZChNZXNzYWdlczo6
UmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5OjpSZWxlYXNlSW1hZ2VCdWZmZXIobV9pbWFnZUJ1
ZmZlcklkZW50aWZpZXIpLCBtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmQtPnJlbmRlcmluZ0JhY2tl
bmRJZGVudGlmaWVyKCkpOwotfQotCi1SZWZQdHI8SW1hZ2VEYXRhPiBSZW1vdGVJbWFnZUJ1ZmZl
ck1lc3NhZ2VIYW5kbGVyOjpnZXRJbWFnZURhdGEoQWxwaGFQcmVtdWx0aXBsaWNhdGlvbiBvdXRw
dXRGb3JtYXQsIGNvbnN0IEludFJlY3QmIHNyY1JlY3QpIGNvbnN0Ci17Ci0gICAgSVBDOjpJbWFn
ZURhdGFSZWZlcmVuY2UgaW1hZ2VEYXRhUmVmZXJlbmNlOwotICAgIG1fcmVtb3RlUmVuZGVyaW5n
QmFja2VuZC0+c2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eTo6
R2V0SW1hZ2VEYXRhKG91dHB1dEZvcm1hdCwgc3JjUmVjdCwgbV9pbWFnZUJ1ZmZlcklkZW50aWZp
ZXIpLCBNZXNzYWdlczo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5OjpHZXRJbWFnZURhdGE6
OlJlcGx5KGltYWdlRGF0YVJlZmVyZW5jZSksIG1fcmVtb3RlUmVuZGVyaW5nQmFja2VuZC0+cmVu
ZGVyaW5nQmFja2VuZElkZW50aWZpZXIoKSwgMV9zKTsKLSAgICByZXR1cm4gaW1hZ2VEYXRhUmVm
ZXJlbmNlLmJ1ZmZlcigpOwotfQotCi12b2lkIFJlbW90ZUltYWdlQnVmZmVyTWVzc2FnZUhhbmRs
ZXI6OndhaXRGb3JDcmVhdGVJbWFnZUJ1ZmZlckJhY2tlbmQoKQotewotICAgIGlmIChtX3JlbW90
ZVJlbmRlcmluZ0JhY2tlbmQgJiYgIWlzQmFja2VuZENyZWF0ZWQoKSkKLSAgICAgICAgbV9yZW1v
dGVSZW5kZXJpbmdCYWNrZW5kLT53YWl0Rm9yQ3JlYXRlSW1hZ2VCdWZmZXJCYWNrZW5kKCk7Ci19
Ci0KLXZvaWQgUmVtb3RlSW1hZ2VCdWZmZXJNZXNzYWdlSGFuZGxlcjo6d2FpdEZvckNvbW1pdElt
YWdlQnVmZmVyRmx1c2hDb250ZXh0KCkKLXsKLSAgICBpZiAobV9yZW1vdGVSZW5kZXJpbmdCYWNr
ZW5kICYmIGlzUGVuZGluZ0ZsdXNoKCkpCi0gICAgICAgIG1fcmVtb3RlUmVuZGVyaW5nQmFja2Vu
ZC0+d2FpdEZvckNvbW1pdEltYWdlQnVmZmVyRmx1c2hDb250ZXh0KCk7Ci19Ci0KLXZvaWQgUmVt
b3RlSW1hZ2VCdWZmZXJNZXNzYWdlSGFuZGxlcjo6Zmx1c2hEcmF3aW5nQ29udGV4dChXZWJDb3Jl
OjpEaXNwbGF5TGlzdDo6RGlzcGxheUxpc3QmIGRpc3BsYXlMaXN0KQotewotICAgIGlmICghbV9y
ZW1vdGVSZW5kZXJpbmdCYWNrZW5kKQotICAgICAgICByZXR1cm47Ci0gICAgCi0gICAgbV9yZW1v
dGVSZW5kZXJpbmdCYWNrZW5kLT5zZW5kKE1lc3NhZ2VzOjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5k
UHJveHk6OkZsdXNoSW1hZ2VCdWZmZXJEcmF3aW5nQ29udGV4dChkaXNwbGF5TGlzdCwgbV9pbWFn
ZUJ1ZmZlcklkZW50aWZpZXIpLCBtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmQtPnJlbmRlcmluZ0Jh
Y2tlbmRJZGVudGlmaWVyKCkpOwotICAgIGRpc3BsYXlMaXN0LmNsZWFyKCk7Ci19Ci0KLXZvaWQg
UmVtb3RlSW1hZ2VCdWZmZXJNZXNzYWdlSGFuZGxlcjo6Zmx1c2hEcmF3aW5nQ29udGV4dEFuZFdh
aXRDb21taXQoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRpc3BsYXlMaXN0JiBkaXNwbGF5TGlzdCkK
LXsKLSAgICBpZiAoIW1fcmVtb3RlUmVuZGVyaW5nQmFja2VuZCkKLSAgICAgICAgcmV0dXJuOwot
ICAgIG1fc2VudEZsdXNoSWRlbnRpZmllciA9IEltYWdlQnVmZmVyRmx1c2hJZGVudGlmaWVyOjpn
ZW5lcmF0ZSgpOwotICAgIG1fcmVtb3RlUmVuZGVyaW5nQmFja2VuZC0+c2VuZChNZXNzYWdlczo6
UmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5OjpGbHVzaEltYWdlQnVmZmVyRHJhd2luZ0NvbnRl
eHRBbmRDb21taXQoZGlzcGxheUxpc3QsIG1fc2VudEZsdXNoSWRlbnRpZmllciwgbV9pbWFnZUJ1
ZmZlcklkZW50aWZpZXIpLCBtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmQtPnJlbmRlcmluZ0JhY2tl
bmRJZGVudGlmaWVyKCkpOwotICAgIGRpc3BsYXlMaXN0LmNsZWFyKCk7Ci0gICAgd2FpdEZvckNv
bW1pdEltYWdlQnVmZmVyRmx1c2hDb250ZXh0KCk7Ci19Ci0KLXZvaWQgUmVtb3RlSW1hZ2VCdWZm
ZXJNZXNzYWdlSGFuZGxlcjo6Y29tbWl0Rmx1c2hDb250ZXh0KEltYWdlQnVmZmVyRmx1c2hJZGVu
dGlmaWVyIGZsdXNoSWRlbnRpZmllcikKLXsKLSAgICBtX3JlY2VpdmVkRmx1c2hJZGVudGlmaWVy
ID0gZmx1c2hJZGVudGlmaWVyOwotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJLaXQKLQotI2VuZGlm
IC8vIEVOQUJMRShHUFVfUFJPQ0VTUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlSW1hZ2VCdWZmZXJNZXNzYWdlSGFuZGxlci5oIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVJbWFnZUJ1ZmZlck1lc3Nh
Z2VIYW5kbGVyLmgKaW5kZXggNjIwNDE4ZDc4YzI3ZjI4YzU3NDkwMmMyZTFiYTlhMjM3MTc1MTdi
OS4uNjFkZDU4Y2U1MmZkY2VkNGYxODRhZjBlYTY3OTdiMjY2Mjc1YTI0MyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVJbWFnZUJ1ZmZlck1l
c3NhZ2VIYW5kbGVyLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGlj
cy9SZW1vdGVJbWFnZUJ1ZmZlck1lc3NhZ2VIYW5kbGVyLmgKQEAgLTI5LDUwICsyOSwzMSBAQAog
CiAjaW5jbHVkZSAiSW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxlLmgiCiAjaW5jbHVkZSAiSW1hZ2VC
dWZmZXJGbHVzaElkZW50aWZpZXIuaCIKLSNpbmNsdWRlICJJbWFnZUJ1ZmZlcklkZW50aWZpZXIu
aCIKLSNpbmNsdWRlIDxXZWJDb3JlL0NvbG9yU3BhY2UuaD4KLSNpbmNsdWRlIDxXZWJDb3JlL0Rp
c3BsYXlMaXN0Lmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9GbG9hdFNpemUuaD4KLSNpbmNsdWRlIDxX
ZWJDb3JlL1JlbmRlcmluZ01vZGUuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1JlbW90ZVJlc291cmNl
SWRlbnRpZmllci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CitjbGFzcyBGbG9hdFNpemU7CiBj
bGFzcyBJbWFnZURhdGE7CiBlbnVtIGNsYXNzIEFscGhhUHJlbXVsdGlwbGljYXRpb24gOiB1aW50
OF90OworZW51bSBjbGFzcyBDb2xvclNwYWNlIDogdWludDhfdDsKIH0KIAogbmFtZXNwYWNlIFdl
YktpdCB7CiAKLWNsYXNzIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ7Ci0KIGNsYXNzIFJlbW90ZUlt
YWdlQnVmZmVyTWVzc2FnZUhhbmRsZXIgewogcHVibGljOgotICAgIHZpcnR1YWwgflJlbW90ZUlt
YWdlQnVmZmVyTWVzc2FnZUhhbmRsZXIoKTsKLQotICAgIEltYWdlQnVmZmVySWRlbnRpZmllciBp
bWFnZUJ1ZmZlcklkZW50aWZpZXIoKSBjb25zdCB7IHJldHVybiBtX2ltYWdlQnVmZmVySWRlbnRp
ZmllcjsgfQotCiAgICAgLy8gTWVzc2FnZXMgdG8gYmUgcmVjZWl2ZWQuIFNlZSBSZW1vdGVSZW5k
ZXJpbmdCYWNrZW5kLm1lc3NhZ2VzLmluLgogICAgIHZpcnR1YWwgdm9pZCBjcmVhdGVCYWNrZW5k
KGNvbnN0IFdlYkNvcmU6OkZsb2F0U2l6ZSYgbG9naWNhbFNpemUsIGNvbnN0IFdlYkNvcmU6Oklu
dFNpemUmIGJhY2tlbmRTaXplLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIFdlYkNvcmU6OkNvbG9y
U3BhY2UsIEltYWdlQnVmZmVyQmFja2VuZEhhbmRsZSkgPSAwOwogCi0gICAgdm9pZCBjb21taXRG
bHVzaENvbnRleHQoSW1hZ2VCdWZmZXJGbHVzaElkZW50aWZpZXIpOwotCi1wcm90ZWN0ZWQ6Ci0g
ICAgUmVtb3RlSW1hZ2VCdWZmZXJNZXNzYWdlSGFuZGxlcihjb25zdCBXZWJDb3JlOjpGbG9hdFNp
emUmLCBXZWJDb3JlOjpSZW5kZXJpbmdNb2RlLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIFdlYkNv
cmU6OkNvbG9yU3BhY2UsIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQmKTsKLQotICAgIHZpcnR1YWwg
Ym9vbCBpc0JhY2tlbmRDcmVhdGVkKCkgY29uc3QgPSAwOwogICAgIGJvb2wgaXNQZW5kaW5nRmx1
c2goKSBjb25zdCB7IHJldHVybiBtX3NlbnRGbHVzaElkZW50aWZpZXIgIT0gbV9yZWNlaXZlZEZs
dXNoSWRlbnRpZmllcjsgfQogCi0gICAgUmVmUHRyPFdlYkNvcmU6OkltYWdlRGF0YT4gZ2V0SW1h
Z2VEYXRhKFdlYkNvcmU6OkFscGhhUHJlbXVsdGlwbGljYXRpb24gb3V0cHV0Rm9ybWF0LCBjb25z
dCBXZWJDb3JlOjpJbnRSZWN0JiBzcmNSZWN0KSBjb25zdDsKLQotICAgIHZvaWQgd2FpdEZvckNy
ZWF0ZUltYWdlQnVmZmVyQmFja2VuZCgpOwotICAgIHZvaWQgd2FpdEZvckNvbW1pdEltYWdlQnVm
ZmVyRmx1c2hDb250ZXh0KCk7CisgICAgdm9pZCBjb21taXRGbHVzaENvbnRleHQoSW1hZ2VCdWZm
ZXJGbHVzaElkZW50aWZpZXIgZmx1c2hJZGVudGlmaWVyKQorICAgIHsKKyAgICAgICAgbV9yZWNl
aXZlZEZsdXNoSWRlbnRpZmllciA9IGZsdXNoSWRlbnRpZmllcjsKKyAgICB9CiAKLSAgICAvLyBN
ZXNzYWdlcyB0byBiZSBzZW50LiBTZWUgUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5Lm1lc3Nh
Z2VzLmluLgotICAgIHZvaWQgZmx1c2hEcmF3aW5nQ29udGV4dChXZWJDb3JlOjpEaXNwbGF5TGlz
dDo6RGlzcGxheUxpc3QmKTsKLSAgICB2b2lkIGZsdXNoRHJhd2luZ0NvbnRleHRBbmRXYWl0Q29t
bWl0KFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEaXNwbGF5TGlzdCYpOwotCi1wcml2YXRlOgotICAg
IFdlYWtQdHI8UmVtb3RlUmVuZGVyaW5nQmFja2VuZD4gbV9yZW1vdGVSZW5kZXJpbmdCYWNrZW5k
OwotICAgIEltYWdlQnVmZmVySWRlbnRpZmllciBtX2ltYWdlQnVmZmVySWRlbnRpZmllciB7IElt
YWdlQnVmZmVySWRlbnRpZmllcjo6Z2VuZXJhdGUoKSB9OworcHJvdGVjdGVkOgorICAgIHZpcnR1
YWwgflJlbW90ZUltYWdlQnVmZmVyTWVzc2FnZUhhbmRsZXIoKSA9IGRlZmF1bHQ7CiAKICAgICBJ
bWFnZUJ1ZmZlckZsdXNoSWRlbnRpZmllciBtX3NlbnRGbHVzaElkZW50aWZpZXI7CiAgICAgSW1h
Z2VCdWZmZXJGbHVzaElkZW50aWZpZXIgbV9yZWNlaXZlZEZsdXNoSWRlbnRpZmllcjsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlUmVuZGVy
aW5nQmFja2VuZC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1Jl
bW90ZVJlbmRlcmluZ0JhY2tlbmQuY3BwCmluZGV4IDk5NTM0MTc4N2VkYTIwYTU1NGU0ZDY3YmE1
M2RjNjk4YTUzNzBjYzAuLjFhMDRhOWU0NWE5ZGUwZWQ4YmQ1YjNkMzg0MzAzMTZhZDBlM2Y4NGYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3Rl
UmVuZGVyaW5nQmFja2VuZC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9n
cmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kLmNwcApAQCAtODgsMzggKzg4LDYzIEBAIGJv
b2wgUmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6d2FpdEZvckNvbW1pdEltYWdlQnVmZmVyRmx1c2hD
b250ZXh0KCkKIAogc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyPiBSZW1vdGVSZW5kZXJpbmdC
YWNrZW5kOjpjcmVhdGVJbWFnZUJ1ZmZlcihjb25zdCBGbG9hdFNpemUmIHNpemUsIFNob3VsZEFj
Y2VsZXJhdGUgc2hvdWxkQWNjZWxlcmF0ZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBDb2xvclNw
YWNlIGNvbG9yU3BhY2UpCiB7Ci0gICAgaWYgKHNob3VsZEFjY2VsZXJhdGUgPT0gU2hvdWxkQWNj
ZWxlcmF0ZTo6WWVzKSB7Ci0gICAgICAgIGlmIChhdXRvIGltYWdlQnVmZmVyID0gQWNjZWxlcmF0
ZWRSZW1vdGVJbWFnZUJ1ZmZlcjo6Y3JlYXRlKHNpemUsIFJlbmRlcmluZ01vZGU6OlJlbW90ZUFj
Y2VsZXJhdGVkLCByZXNvbHV0aW9uU2NhbGUsIGNvbG9yU3BhY2UsICp0aGlzKSkgewotICAgICAg
ICAgICAgbV9pbWFnZUJ1ZmZlck1lc3NhZ2VIYW5kbGVyTWFwLmFkZChpbWFnZUJ1ZmZlci0+aW1h
Z2VCdWZmZXJJZGVudGlmaWVyKCksIGltYWdlQnVmZmVyLmdldCgpKTsKLSAgICAgICAgICAgIHJl
dHVybiBpbWFnZUJ1ZmZlcjsKLSAgICAgICAgfQotICAgIH0KKyAgICByZXR1cm4gbV9yZW1vdGVS
ZXNvdXJjZUNhY2hlLmNyZWF0ZUltYWdlQnVmZmVyKHNpemUsIHNob3VsZEFjY2VsZXJhdGUsIHJl
c29sdXRpb25TY2FsZSwgY29sb3JTcGFjZSk7Cit9CisKK3ZvaWQgUmVtb3RlUmVuZGVyaW5nQmFj
a2VuZDo6cmVsZWFzZUltYWdlQnVmZmVyKEltYWdlQnVmZmVyJiBpbWFnZSkKK3sKKyAgICBtX3Jl
bW90ZVJlc291cmNlQ2FjaGUucmVsZWFzZUltYWdlQnVmZmVyKGltYWdlKTsKK30KKworUmVmUHRy
PERpc3BsYXlMaXN0OjpJdGVtPiBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpjcmVhdGVEcmF3SW1h
Z2VCdWZmZXJJdGVtKEltYWdlQnVmZmVyJiBpbWFnZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVj
dCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYg
b3B0aW9ucywgUmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyIHJlbW90ZUNsaWVudElkZW50aWZpZXIp
Cit7CisgICAgcmV0dXJuIG1fcmVtb3RlUmVzb3VyY2VDYWNoZS5jcmVhdGVEcmF3SW1hZ2VCdWZm
ZXJJdGVtKGltYWdlLCBkZXN0UmVjdCwgc3JjUmVjdCwgb3B0aW9ucywgcmVtb3RlQ2xpZW50SWRl
bnRpZmllcik7Cit9CiAKLSAgICBpZiAoYXV0byBpbWFnZUJ1ZmZlciA9IFVuYWNjZWxlcmF0ZWRS
ZW1vdGVJbWFnZUJ1ZmZlcjo6Y3JlYXRlKHNpemUsIFJlbmRlcmluZ01vZGU6OlJlbW90ZVVuYWNj
ZWxlcmF0ZWQsIHJlc29sdXRpb25TY2FsZSwgY29sb3JTcGFjZSwgKnRoaXMpKSB7Ci0gICAgICAg
IG1faW1hZ2VCdWZmZXJNZXNzYWdlSGFuZGxlck1hcC5hZGQoaW1hZ2VCdWZmZXItPmltYWdlQnVm
ZmVySWRlbnRpZmllcigpLCBpbWFnZUJ1ZmZlci5nZXQoKSk7Ci0gICAgICAgIHJldHVybiBpbWFn
ZUJ1ZmZlcjsKLSAgICB9Cit2b2lkIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OnJlbGVhc2VSZW1v
dGVDbGllbnQoUmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyIHJlbW90ZUNsaWVudElkZW50aWZpZXIp
Cit7CisgICAgbV9yZW1vdGVSZXNvdXJjZUNhY2hlLnJlbGVhc2VSZW1vdGVDbGllbnQocmVtb3Rl
Q2xpZW50SWRlbnRpZmllcik7Cit9CiAKLSAgICByZXR1cm4gbnVsbHB0cjsKK1JlbW90ZVJlc291
cmNlSWRlbnRpZmllciBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpyZW1vdGVDcmVhdGVJbWFnZUJ1
ZmZlcihjb25zdCBGbG9hdFNpemUmIHNpemUsIFJlbmRlcmluZ01vZGUgcmVuZGVyaW5nTW9kZSwg
ZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBDb2xvclNwYWNlIGNvbG9yU3BhY2UpCit7CisgICAgUmVt
b3RlUmVzb3VyY2VJZGVudGlmaWVyIHJlbW90ZVJlc291cmNlSWRlbnRpZmllciA9IFJlbW90ZVJl
c291cmNlSWRlbnRpZmllcjo6Z2VuZXJhdGUoKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVS
ZW5kZXJpbmdCYWNrZW5kUHJveHk6OkNyZWF0ZUltYWdlQnVmZmVyKHNpemUsIHJlbmRlcmluZ01v
ZGUsIHJlc29sdXRpb25TY2FsZSwgY29sb3JTcGFjZSwgcmVtb3RlUmVzb3VyY2VJZGVudGlmaWVy
KSwgbV9yZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllcik7CisgICAgcmV0dXJuIHJlbW90ZVJlc291
cmNlSWRlbnRpZmllcjsKK30KKworUmVmUHRyPEltYWdlRGF0YT4gUmVtb3RlUmVuZGVyaW5nQmFj
a2VuZDo6cmVtb3RlR2V0SW1hZ2VEYXRhKEFscGhhUHJlbXVsdGlwbGljYXRpb24gb3V0cHV0Rm9y
bWF0LCBjb25zdCBJbnRSZWN0JiBzcmNSZWN0LCBSZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIgcmVt
b3RlUmVzb3VyY2VJZGVudGlmaWVyKQoreworICAgIElQQzo6SW1hZ2VEYXRhUmVmZXJlbmNlIGlt
YWdlRGF0YVJlZmVyZW5jZTsKKyAgICBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlUmVuZGVyaW5n
QmFja2VuZFByb3h5OjpHZXRJbWFnZURhdGEob3V0cHV0Rm9ybWF0LCBzcmNSZWN0LCByZW1vdGVS
ZXNvdXJjZUlkZW50aWZpZXIpLCBNZXNzYWdlczo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5
OjpHZXRJbWFnZURhdGE6OlJlcGx5KGltYWdlRGF0YVJlZmVyZW5jZSksIG1fcmVuZGVyaW5nQmFj
a2VuZElkZW50aWZpZXIsIDFfcyk7CisgICAgcmV0dXJuIGltYWdlRGF0YVJlZmVyZW5jZS5idWZm
ZXIoKTsKK30KKwordm9pZCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpyZW1vdGVGbHVzaERyYXdp
bmdDb250ZXh0KGNvbnN0IERpc3BsYXlMaXN0OjpEaXNwbGF5TGlzdCYgZGlzcGxheUxpc3QsIFJl
bW90ZVJlc291cmNlSWRlbnRpZmllciByZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIpCit7CisgICAg
c2VuZChNZXNzYWdlczo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5OjpGbHVzaEltYWdlQnVm
ZmVyRHJhd2luZ0NvbnRleHQoZGlzcGxheUxpc3QsIHJlbW90ZVJlc291cmNlSWRlbnRpZmllciks
IG1fcmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXIpOworfQorCitJbWFnZUJ1ZmZlckZsdXNoSWRl
bnRpZmllciBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpyZW1vdGVGbHVzaERyYXdpbmdDb250ZXh0
QW5kQ29tbWl0KGNvbnN0IERpc3BsYXlMaXN0OjpEaXNwbGF5TGlzdCYgZGlzcGxheUxpc3QsIFJl
bW90ZVJlc291cmNlSWRlbnRpZmllciByZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIpCit7CisgICAg
SW1hZ2VCdWZmZXJGbHVzaElkZW50aWZpZXIgc2VudEZsdXNoSWRlbnRpZmllciA9IEltYWdlQnVm
ZmVyRmx1c2hJZGVudGlmaWVyOjpnZW5lcmF0ZSgpOworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90
ZVJlbmRlcmluZ0JhY2tlbmRQcm94eTo6Rmx1c2hJbWFnZUJ1ZmZlckRyYXdpbmdDb250ZXh0QW5k
Q29tbWl0KGRpc3BsYXlMaXN0LCBzZW50Rmx1c2hJZGVudGlmaWVyLCByZW1vdGVSZXNvdXJjZUlk
ZW50aWZpZXIpLCBtX3JlbmRlcmluZ0JhY2tlbmRJZGVudGlmaWVyKTsKKyAgICByZXR1cm4gc2Vu
dEZsdXNoSWRlbnRpZmllcjsKIH0KIAotdm9pZCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpyZWxl
YXNlSW1hZ2VCdWZmZXIoSW1hZ2VCdWZmZXJJZGVudGlmaWVyIGltYWdlQnVmZmVySWRlbnRpZmll
cikKK3ZvaWQgUmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6cmVtb3RlUmVsZWFzZVJlbW90ZVJlc291
cmNlKFJlbW90ZVJlc291cmNlSWRlbnRpZmllciByZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIpCiB7
Ci0gICAgLy8gQ3JlYXRlSW1hZ2VCdWZmZXIgbWVzc2FnZSBzaG91bGQgaGF2ZSBiZWVuIHJlY2Vp
dmVkIGJlZm9yZSB0aGlzIG9uZS4KLSAgICBib29sIGZvdW5kID0gbV9pbWFnZUJ1ZmZlck1lc3Nh
Z2VIYW5kbGVyTWFwLnJlbW92ZShpbWFnZUJ1ZmZlcklkZW50aWZpZXIpOwotICAgIEFTU0VSVF9V
TlVTRUQoZm91bmQsIGZvdW5kKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVSZW5kZXJpbmdC
YWNrZW5kUHJveHk6OlJlbGVhc2VSZW1vdGVSZXNvdXJjZShyZW1vdGVSZXNvdXJjZUlkZW50aWZp
ZXIpLCBtX3JlbmRlcmluZ0JhY2tlbmRJZGVudGlmaWVyKTsKIH0KIAotdm9pZCBSZW1vdGVSZW5k
ZXJpbmdCYWNrZW5kOjpjcmVhdGVJbWFnZUJ1ZmZlckJhY2tlbmQoY29uc3QgRmxvYXRTaXplJiBs
b2dpY2FsU2l6ZSwgY29uc3QgSW50U2l6ZSYgYmFja2VuZFNpemUsIGZsb2F0IHJlc29sdXRpb25T
Y2FsZSwgQ29sb3JTcGFjZSBjb2xvclNwYWNlLCBJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGUgaGFu
ZGxlLCBJbWFnZUJ1ZmZlcklkZW50aWZpZXIgaW1hZ2VCdWZmZXJJZGVudGlmaWVyKQordm9pZCBS
ZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpjcmVhdGVJbWFnZUJ1ZmZlckJhY2tlbmQoY29uc3QgRmxv
YXRTaXplJiBsb2dpY2FsU2l6ZSwgY29uc3QgSW50U2l6ZSYgYmFja2VuZFNpemUsIGZsb2F0IHJl
c29sdXRpb25TY2FsZSwgQ29sb3JTcGFjZSBjb2xvclNwYWNlLCBJbWFnZUJ1ZmZlckJhY2tlbmRI
YW5kbGUgaGFuZGxlLCBSZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIgcmVtb3RlUmVzb3VyY2VJZGVu
dGlmaWVyKQogewotICAgIGlmIChhdXRvIGltYWdlQnVmZmVyID0gbV9pbWFnZUJ1ZmZlck1lc3Nh
Z2VIYW5kbGVyTWFwLmdldChpbWFnZUJ1ZmZlcklkZW50aWZpZXIpKQotICAgICAgICBpbWFnZUJ1
ZmZlci0+Y3JlYXRlQmFja2VuZChsb2dpY2FsU2l6ZSwgYmFja2VuZFNpemUsIHJlc29sdXRpb25T
Y2FsZSwgY29sb3JTcGFjZSwgV1RGTW92ZShoYW5kbGUpKTsKKyAgICBtX3JlbW90ZVJlc291cmNl
Q2FjaGUuY3JlYXRlSW1hZ2VCdWZmZXJCYWNrZW5kKGxvZ2ljYWxTaXplLCBiYWNrZW5kU2l6ZSwg
cmVzb2x1dGlvblNjYWxlLCBjb2xvclNwYWNlLCBXVEZNb3ZlKGhhbmRsZSksIHJlbW90ZVJlc291
cmNlSWRlbnRpZmllcik7CiB9CiAKLXZvaWQgUmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6Y29tbWl0
SW1hZ2VCdWZmZXJGbHVzaENvbnRleHQoSW1hZ2VCdWZmZXJGbHVzaElkZW50aWZpZXIgZmx1c2hJ
ZGVudGlmaWVyLCBJbWFnZUJ1ZmZlcklkZW50aWZpZXIgaW1hZ2VCdWZmZXJJZGVudGlmaWVyKQor
dm9pZCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpjb21taXRJbWFnZUJ1ZmZlckZsdXNoQ29udGV4
dChJbWFnZUJ1ZmZlckZsdXNoSWRlbnRpZmllciBmbHVzaElkZW50aWZpZXIsIFJlbW90ZVJlc291
cmNlSWRlbnRpZmllciByZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIpCiB7Ci0gICAgaWYgKGF1dG8g
aW1hZ2VCdWZmZXIgPSBtX2ltYWdlQnVmZmVyTWVzc2FnZUhhbmRsZXJNYXAuZ2V0KGltYWdlQnVm
ZmVySWRlbnRpZmllcikpCi0gICAgICAgIGltYWdlQnVmZmVyLT5jb21taXRGbHVzaENvbnRleHQo
Zmx1c2hJZGVudGlmaWVyKTsKKyAgICBtX3JlbW90ZVJlc291cmNlQ2FjaGUuY29tbWl0SW1hZ2VC
dWZmZXJGbHVzaENvbnRleHQoZmx1c2hJZGVudGlmaWVyLCByZW1vdGVSZXNvdXJjZUlkZW50aWZp
ZXIpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5oIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5k
LmgKaW5kZXggZjQ5NjE1OGU3ZDQwZWViMDVhYzM5NDM0YWYyNDYzM2JhYmM3ZjBlZi4uOTZlZmU3
Yzc1NGZmN2NlMDY0OTM3ZmIzYmU3MDU4M2RlNzdkZjc5ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kLmgKKysr
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdC
YWNrZW5kLmgKQEAgLTI5LDE4ICsyOSwyNCBAQAogCiAjaW5jbHVkZSAiSW1hZ2VCdWZmZXJCYWNr
ZW5kSGFuZGxlLmgiCiAjaW5jbHVkZSAiSW1hZ2VCdWZmZXJGbHVzaElkZW50aWZpZXIuaCIKLSNp
bmNsdWRlICJJbWFnZUJ1ZmZlcklkZW50aWZpZXIuaCIKICNpbmNsdWRlICJNZXNzYWdlUmVjZWl2
ZXIuaCIKICNpbmNsdWRlICJNZXNzYWdlU2VuZGVyLmgiCiAjaW5jbHVkZSAiUmVtb3RlSW1hZ2VC
dWZmZXJNZXNzYWdlSGFuZGxlci5oIgorI2luY2x1ZGUgIlJlbW90ZVJlc291cmNlQ2FjaGUuaCIK
ICNpbmNsdWRlICJSZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllci5oIgotI2luY2x1ZGUgPFdlYkNv
cmUvQ29sb3JTcGFjZS5oPgotI2luY2x1ZGUgPFdlYkNvcmUvRGlzcGxheUxpc3QuaD4KLSNpbmNs
dWRlIDxXZWJDb3JlL0Zsb2F0U2l6ZS5oPgotI2luY2x1ZGUgPFdlYkNvcmUvUmVuZGVyaW5nTW9k
ZS5oPgotI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9SZW1vdGVS
ZXNvdXJjZUlkZW50aWZpZXIuaD4KICNpbmNsdWRlIDx3dGYvV2Vha1B0ci5oPgogCituYW1lc3Bh
Y2UgV2ViQ29yZSB7CituYW1lc3BhY2UgRGlzcGxheUxpc3QgeworY2xhc3MgRGlzcGxheUxpc3Q7
CitjbGFzcyBJdGVtOworfQorY2xhc3MgRmxvYXRTaXplOworZW51bSBjbGFzcyBDb2xvclNwYWNl
IDogdWludDhfdDsKK2VudW0gY2xhc3MgUmVuZGVyaW5nTW9kZSA6IHVpbnQ4X3Q7Cit9CisKIG5h
bWVzcGFjZSBXZWJLaXQgewogCiBjbGFzcyBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kCkBAIC01Miw4
ICs1OCw2IEBAIHB1YmxpYzoKIAogICAgIH5SZW1vdGVSZW5kZXJpbmdCYWNrZW5kKCk7CiAKLSAg
ICBSZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllciByZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllcigp
IGNvbnN0IHsgcmV0dXJuIG1fcmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXI7IH0KLQogICAgIC8v
IElQQzo6TWVzc2FnZVNlbmRlci4KICAgICBJUEM6OkNvbm5lY3Rpb24qIG1lc3NhZ2VTZW5kZXJD
b25uZWN0aW9uKCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgdWludDY0X3QgbWVzc2FnZVNlbmRlckRl
c3RpbmF0aW9uSUQoKSBjb25zdCBvdmVycmlkZTsKQEAgLTYxLDIxICs2NSwzMCBAQCBwdWJsaWM6
CiAgICAgLy8gSVBDOjpNZXNzYWdlUmVjZWl2ZXIKICAgICB2b2lkIGRpZFJlY2VpdmVNZXNzYWdl
KElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYpIG92ZXJyaWRlOwogCi0gICAgc3RkOjp1
bmlxdWVfcHRyPFdlYkNvcmU6OkltYWdlQnVmZmVyPiBjcmVhdGVJbWFnZUJ1ZmZlcihjb25zdCBX
ZWJDb3JlOjpGbG9hdFNpemUmLCBXZWJDb3JlOjpTaG91bGRBY2NlbGVyYXRlLCBmbG9hdCByZXNv
bHV0aW9uU2NhbGUsIFdlYkNvcmU6OkNvbG9yU3BhY2UpOwotICAgIHZvaWQgcmVsZWFzZUltYWdl
QnVmZmVyKEltYWdlQnVmZmVySWRlbnRpZmllcik7Ci0KICAgICBib29sIHdhaXRGb3JDcmVhdGVJ
bWFnZUJ1ZmZlckJhY2tlbmQoKTsKICAgICBib29sIHdhaXRGb3JDb21taXRJbWFnZUJ1ZmZlckZs
dXNoQ29udGV4dCgpOworICAgICAgICAKKyAgICAvLyBSZXNvdWNlIGNhY2hlLgorICAgIHN0ZDo6
dW5pcXVlX3B0cjxXZWJDb3JlOjpJbWFnZUJ1ZmZlcj4gY3JlYXRlSW1hZ2VCdWZmZXIoY29uc3Qg
V2ViQ29yZTo6RmxvYXRTaXplJiwgV2ViQ29yZTo6U2hvdWxkQWNjZWxlcmF0ZSwgZmxvYXQgcmVz
b2x1dGlvblNjYWxlLCBXZWJDb3JlOjpDb2xvclNwYWNlKTsKKyAgICB2b2lkIHJlbGVhc2VJbWFn
ZUJ1ZmZlcihXZWJDb3JlOjpJbWFnZUJ1ZmZlciYpOworICAgIFJlZlB0cjxXZWJDb3JlOjpEaXNw
bGF5TGlzdDo6SXRlbT4gY3JlYXRlRHJhd0ltYWdlQnVmZmVySXRlbShXZWJDb3JlOjpJbWFnZUJ1
ZmZlciYsIGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IFdlYkNvcmU6
OkZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgV2ViQ29yZTo6SW1hZ2VQYWludGluZ09wdGlvbnMm
LCBXZWJDb3JlOjpSZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIpOworICAgIHZvaWQgcmVsZWFzZVJl
bW90ZUNsaWVudChXZWJDb3JlOjpSZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIpOworCisgICAgLy8g
TWVzc2FnZXMgdG8gYmUgc2VudC4KKyAgICBXZWJDb3JlOjpSZW1vdGVSZXNvdXJjZUlkZW50aWZp
ZXIgcmVtb3RlQ3JlYXRlSW1hZ2VCdWZmZXIoY29uc3QgV2ViQ29yZTo6RmxvYXRTaXplJiwgV2Vi
Q29yZTo6UmVuZGVyaW5nTW9kZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBXZWJDb3JlOjpDb2xv
clNwYWNlKTsKKyAgICBSZWZQdHI8V2ViQ29yZTo6SW1hZ2VEYXRhPiByZW1vdGVHZXRJbWFnZURh
dGEoV2ViQ29yZTo6QWxwaGFQcmVtdWx0aXBsaWNhdGlvbiBvdXRwdXRGb3JtYXQsIGNvbnN0IFdl
YkNvcmU6OkludFJlY3QmIHNyY1JlY3QsIFdlYkNvcmU6OlJlbW90ZVJlc291cmNlSWRlbnRpZmll
cik7CisgICAgdm9pZCByZW1vdGVGbHVzaERyYXdpbmdDb250ZXh0KGNvbnN0IFdlYkNvcmU6OkRp
c3BsYXlMaXN0OjpEaXNwbGF5TGlzdCYsIFdlYkNvcmU6OlJlbW90ZVJlc291cmNlSWRlbnRpZmll
cik7CisgICAgSW1hZ2VCdWZmZXJGbHVzaElkZW50aWZpZXIgcmVtb3RlRmx1c2hEcmF3aW5nQ29u
dGV4dEFuZENvbW1pdChjb25zdCBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RGlzcGxheUxpc3QmLCBX
ZWJDb3JlOjpSZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIpOworICAgIHZvaWQgcmVtb3RlUmVsZWFz
ZVJlbW90ZVJlc291cmNlKFdlYkNvcmU6OlJlbW90ZVJlc291cmNlSWRlbnRpZmllcik7CiAKIHBy
aXZhdGU6CiAgICAgUmVtb3RlUmVuZGVyaW5nQmFja2VuZCgpOwogCiAgICAgLy8gTWVzc2FnZXMg
dG8gYmUgcmVjZWl2ZWQuCi0gICAgdm9pZCBjcmVhdGVJbWFnZUJ1ZmZlckJhY2tlbmQoY29uc3Qg
V2ViQ29yZTo6RmxvYXRTaXplJiBsb2dpY2FsU2l6ZSwgY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYg
YmFja2VuZFNpemUsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwgV2ViQ29yZTo6Q29sb3JTcGFjZSwg
SW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxlLCBJbWFnZUJ1ZmZlcklkZW50aWZpZXIpOwotICAgIHZv
aWQgY29tbWl0SW1hZ2VCdWZmZXJGbHVzaENvbnRleHQoSW1hZ2VCdWZmZXJGbHVzaElkZW50aWZp
ZXIsIEltYWdlQnVmZmVySWRlbnRpZmllcik7CisgICAgdm9pZCBjcmVhdGVJbWFnZUJ1ZmZlckJh
Y2tlbmQoY29uc3QgV2ViQ29yZTo6RmxvYXRTaXplJiBsb2dpY2FsU2l6ZSwgY29uc3QgV2ViQ29y
ZTo6SW50U2l6ZSYgYmFja2VuZFNpemUsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwgV2ViQ29yZTo6
Q29sb3JTcGFjZSwgSW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxlLCBXZWJDb3JlOjpSZW1vdGVSZXNv
dXJjZUlkZW50aWZpZXIpOworICAgIHZvaWQgY29tbWl0SW1hZ2VCdWZmZXJGbHVzaENvbnRleHQo
SW1hZ2VCdWZmZXJGbHVzaElkZW50aWZpZXIsIFdlYkNvcmU6OlJlbW90ZVJlc291cmNlSWRlbnRp
Zmllcik7CiAKLSAgICB1c2luZyBJbWFnZUJ1ZmZlck1lc3NhZ2VIYW5kbGVyTWFwID0gSGFzaE1h
cDxJbWFnZUJ1ZmZlcklkZW50aWZpZXIsIFJlbW90ZUltYWdlQnVmZmVyTWVzc2FnZUhhbmRsZXIq
PjsKLSAgICBJbWFnZUJ1ZmZlck1lc3NhZ2VIYW5kbGVyTWFwIG1faW1hZ2VCdWZmZXJNZXNzYWdl
SGFuZGxlck1hcDsKKyAgICBSZW1vdGVSZXNvdXJjZUNhY2hlIG1fcmVtb3RlUmVzb3VyY2VDYWNo
ZSB7ICp0aGlzIH07CiAgICAgUmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXIgbV9yZW5kZXJpbmdC
YWNrZW5kSWRlbnRpZmllciB7IFJlbmRlcmluZ0JhY2tlbmRJZGVudGlmaWVyOjpnZW5lcmF0ZSgp
IH07CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBo
aWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQubWVzc2FnZXMuaW4K
aW5kZXggMTJhN2JmOGRhNGM4MjU3MGJjYTM2YTEzNWZkNzFhZjI1ODhiNjRkNS4uMmMwZjdlOGEx
MjAzZjI2ODY1MmEwMGZjMWY3YjE3ZGE1OTlkMmFhOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kLm1lc3NhZ2Vz
LmluCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlUmVu
ZGVyaW5nQmFja2VuZC5tZXNzYWdlcy5pbgpAQCAtMjMsOCArMjMsOCBAQAogI2lmIEVOQUJMRShH
UFVfUFJPQ0VTUykKIAogbWVzc2FnZXMgLT4gUmVtb3RlUmVuZGVyaW5nQmFja2VuZCBOb3RSZWZD
b3VudGVkIHsKLSAgICB2b2lkIENyZWF0ZUltYWdlQnVmZmVyQmFja2VuZChXZWJDb3JlOjpGbG9h
dFNpemUgbG9naWNhbFNpemUsIFdlYkNvcmU6OkludFNpemUgYmFja2VuZFNpemUsIGZsb2F0IHJl
c29sdXRpb25TY2FsZSwgV2ViQ29yZTo6Q29sb3JTcGFjZSBjb2xvclNwYWNlLCBXZWJLaXQ6Oklt
YWdlQnVmZmVyQmFja2VuZEhhbmRsZSBoYW5kbGUsIFdlYktpdDo6SW1hZ2VCdWZmZXJJZGVudGlm
aWVyIGltYWdlQnVmZmVySWRlbnRpZmllcikKLSAgICB2b2lkIENvbW1pdEltYWdlQnVmZmVyRmx1
c2hDb250ZXh0KFdlYktpdDo6SW1hZ2VCdWZmZXJGbHVzaElkZW50aWZpZXIgZmx1c2hJZGVudGlm
aWVyLCBXZWJLaXQ6OkltYWdlQnVmZmVySWRlbnRpZmllciBpbWFnZUJ1ZmZlcklkZW50aWZpZXIp
CisgICAgdm9pZCBDcmVhdGVJbWFnZUJ1ZmZlckJhY2tlbmQoV2ViQ29yZTo6RmxvYXRTaXplIGxv
Z2ljYWxTaXplLCBXZWJDb3JlOjpJbnRTaXplIGJhY2tlbmRTaXplLCBmbG9hdCByZXNvbHV0aW9u
U2NhbGUsIFdlYkNvcmU6OkNvbG9yU3BhY2UgY29sb3JTcGFjZSwgV2ViS2l0OjpJbWFnZUJ1ZmZl
ckJhY2tlbmRIYW5kbGUgaGFuZGxlLCBXZWJDb3JlOjpSZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIg
cmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyKQorICAgIHZvaWQgQ29tbWl0SW1hZ2VCdWZmZXJGbHVz
aENvbnRleHQoV2ViS2l0OjpJbWFnZUJ1ZmZlckZsdXNoSWRlbnRpZmllciBmbHVzaElkZW50aWZp
ZXIsIFdlYkNvcmU6OlJlbW90ZVJlc291cmNlSWRlbnRpZmllciByZW1vdGVSZXNvdXJjZUlkZW50
aWZpZXIpCiB9CiAKICNlbmRpZiAvLyBFTkFCTEUoR1BVX1BST0NFU1MpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZVJlc291cmNlQ2FjaGUu
Y3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVSZXNvdXJj
ZUNhY2hlLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wYTg2YzE3ZTNhZWE4YWMyNDJmZGM5NGQ3MmFlMDNjNDQy
ZGU5N2MzCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9n
cmFwaGljcy9SZW1vdGVSZXNvdXJjZUNhY2hlLmNwcApAQCAtMCwwICsxLDE2NyBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJ
VFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
CisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJSZW1vdGVSZXNvdXJjZUNhY2hl
LmgiCisKKyNpZiBFTkFCTEUoR1BVX1BST0NFU1MpCisKKyNpbmNsdWRlICJQbGF0Zm9ybVJlbW90
ZUltYWdlQnVmZmVyLmgiCisjaW5jbHVkZSAiUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5oIgorI2lu
Y2x1ZGUgIlJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eU1lc3NhZ2VzLmgiCisjaW5jbHVkZSAi
V2ViUGFnZS5oIgorI2luY2x1ZGUgPFdlYkNvcmUvQ2FjaGVkSW1hZ2UuaD4KKyNpbmNsdWRlIDxX
ZWJDb3JlL1NldHRpbmdzLmg+CisKK25hbWVzcGFjZSBXZWJLaXQgewordXNpbmcgbmFtZXNwYWNl
IFdlYkNvcmU7CisKK1JlbW90ZVJlc291cmNlQ2FjaGU6OlJlbW90ZVJlc291cmNlQ2FjaGUoUmVt
b3RlUmVuZGVyaW5nQmFja2VuZCYgcmVtb3RlUmVuZGVyaW5nQmFja2VuZCkKKyAgICA6IG1fcmVt
b3RlUmVuZGVyaW5nQmFja2VuZChyZW1vdGVSZW5kZXJpbmdCYWNrZW5kKQoreworfQorCitzdGQ6
OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXI+IFJlbW90ZVJlc291cmNlQ2FjaGU6OmNyZWF0ZUltYWdl
QnVmZmVyKGNvbnN0IEZsb2F0U2l6ZSYgc2l6ZSwgU2hvdWxkQWNjZWxlcmF0ZSBzaG91bGRBY2Nl
bGVyYXRlLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIENvbG9yU3BhY2UgY29sb3JTcGFjZSkKK3sK
KyAgICBpZiAoc2hvdWxkQWNjZWxlcmF0ZSA9PSBTaG91bGRBY2NlbGVyYXRlOjpZZXMpIHsKKyAg
ICAgICAgaWYgKGF1dG8gaW1hZ2VCdWZmZXIgPSBBY2NlbGVyYXRlZFJlbW90ZUltYWdlQnVmZmVy
OjpjcmVhdGUoc2l6ZSwgUmVuZGVyaW5nTW9kZTo6UmVtb3RlQWNjZWxlcmF0ZWQsIHJlc29sdXRp
b25TY2FsZSwgY29sb3JTcGFjZSwgbV9yZW1vdGVSZW5kZXJpbmdCYWNrZW5kKSkgeworICAgICAg
ICAgICAgbV9yZW1vdGVJbWFnZUJ1ZmZlckhhc2hNYXAuYWRkKGltYWdlQnVmZmVyLmdldCgpLCBp
bWFnZUJ1ZmZlci0+cmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyKCkpOworICAgICAgICAgICAgbV9y
ZW1vdGVJbWFnZUJ1ZmZlck1lc3NhZ2VIYW5kbGVySGFzaE1hcC5hZGQoaW1hZ2VCdWZmZXItPnJl
bW90ZVJlc291cmNlSWRlbnRpZmllcigpLCBpbWFnZUJ1ZmZlci5nZXQoKSk7CisgICAgICAgICAg
ICByZXR1cm4gaW1hZ2VCdWZmZXI7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBpZiAoYXV0byBp
bWFnZUJ1ZmZlciA9IFVuYWNjZWxlcmF0ZWRSZW1vdGVJbWFnZUJ1ZmZlcjo6Y3JlYXRlKHNpemUs
IFJlbmRlcmluZ01vZGU6OlJlbW90ZVVuYWNjZWxlcmF0ZWQsIHJlc29sdXRpb25TY2FsZSwgY29s
b3JTcGFjZSwgbV9yZW1vdGVSZW5kZXJpbmdCYWNrZW5kKSkgeworICAgICAgICBtX3JlbW90ZUlt
YWdlQnVmZmVySGFzaE1hcC5hZGQoaW1hZ2VCdWZmZXIuZ2V0KCksIGltYWdlQnVmZmVyLT5yZW1v
dGVSZXNvdXJjZUlkZW50aWZpZXIoKSk7CisgICAgICAgIG1fcmVtb3RlSW1hZ2VCdWZmZXJNZXNz
YWdlSGFuZGxlckhhc2hNYXAuYWRkKGltYWdlQnVmZmVyLT5yZW1vdGVSZXNvdXJjZUlkZW50aWZp
ZXIoKSwgaW1hZ2VCdWZmZXIuZ2V0KCkpOworICAgICAgICByZXR1cm4gaW1hZ2VCdWZmZXI7Cisg
ICAgfQorCisgICAgcmV0dXJuIG51bGxwdHI7Cit9CisKK3ZvaWQgUmVtb3RlUmVzb3VyY2VDYWNo
ZTo6Y3JlYXRlSW1hZ2VCdWZmZXJCYWNrZW5kKGNvbnN0IEZsb2F0U2l6ZSYgbG9naWNhbFNpemUs
IGNvbnN0IEludFNpemUmIGJhY2tlbmRTaXplLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIENvbG9y
U3BhY2UgY29sb3JTcGFjZSwgSW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxlIGhhbmRsZSwgUmVtb3Rl
UmVzb3VyY2VJZGVudGlmaWVyIHJlbW90ZVJlc291cmNlSWRlbnRpZmllcikKK3sKKyAgICBpZiAo
YXV0byBpbWFnZUJ1ZmZlciA9IG1fcmVtb3RlSW1hZ2VCdWZmZXJNZXNzYWdlSGFuZGxlckhhc2hN
YXAuZ2V0KHJlbW90ZVJlc291cmNlSWRlbnRpZmllcikpCisgICAgICAgIGltYWdlQnVmZmVyLT5j
cmVhdGVCYWNrZW5kKGxvZ2ljYWxTaXplLCBiYWNrZW5kU2l6ZSwgcmVzb2x1dGlvblNjYWxlLCBj
b2xvclNwYWNlLCBXVEZNb3ZlKGhhbmRsZSkpOworfQorCit2b2lkIFJlbW90ZVJlc291cmNlQ2Fj
aGU6OmNvbW1pdEltYWdlQnVmZmVyRmx1c2hDb250ZXh0KEltYWdlQnVmZmVyRmx1c2hJZGVudGlm
aWVyIGZsdXNoSWRlbnRpZmllciwgUmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyIHJlbW90ZVJlc291
cmNlSWRlbnRpZmllcikKK3sKKyAgICBpZiAoYXV0byBpbWFnZUJ1ZmZlciA9IG1fcmVtb3RlSW1h
Z2VCdWZmZXJNZXNzYWdlSGFuZGxlckhhc2hNYXAuZ2V0KHJlbW90ZVJlc291cmNlSWRlbnRpZmll
cikpCisgICAgICAgIGltYWdlQnVmZmVyLT5jb21taXRGbHVzaENvbnRleHQoZmx1c2hJZGVudGlm
aWVyKTsKK30KKworUmVmUHRyPFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtPiBSZW1vdGVSZXNv
dXJjZUNhY2hlOjpjcmVhdGVEcmF3SW1hZ2VCdWZmZXJJdGVtKFdlYkNvcmU6OkltYWdlQnVmZmVy
JiBpbWFnZSwgY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgV2ViQ29y
ZTo6RmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBXZWJDb3JlOjpJbWFnZVBhaW50aW5nT3B0aW9u
cyYgb3B0aW9ucywgUmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyIHJlbW90ZUNsaWVudElkZW50aWZp
ZXIpCit7CisgICAgYXV0byByZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIgPSBmaW5kSW1hZ2VCdWZm
ZXJGb3JDbGllbnQoaW1hZ2UsIHJlbW90ZUNsaWVudElkZW50aWZpZXIpOworICAgIGlmICghcmVt
b3RlUmVzb3VyY2VJZGVudGlmaWVyKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAvLyBG
bHVzaCB0aGUgRHJhd2luZ0NvbnRleHQgb2YgdGhlIHNvdXJjZSBJbWFnZUJ1ZmZlciBzbyB0aGlz
IEltYWdlQnVmZmVyIGdldHMgYW4gdXBkYXRlZCBpbWFnZS4KKyAgICBpbWFnZS5mbHVzaERyYXdp
bmdDb250ZXh0KCk7CisgICAgcmV0dXJuIFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEcmF3SW1hZ2VC
dWZmZXI6OmNyZWF0ZShyZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIsIGRlc3RSZWN0LCBzcmNSZWN0
LCBvcHRpb25zKTsKK30KKworUmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyIFJlbW90ZVJlc291cmNl
Q2FjaGU6OnJlbGVhc2VJbWFnZUJ1ZmZlcihJbWFnZUJ1ZmZlciYgaW1hZ2UpCit7CisgICAgLy8g
UmVtb3ZlIHRoZSByZXNvdXJjZSBmcm9tIHRoZSBjYWNoZS4KKyAgICBhdXRvIHJlbW90ZVJlc291
cmNlSWRlbnRpZmllciA9IG1fcmVtb3RlSW1hZ2VCdWZmZXJIYXNoTWFwLnRha2UoJmltYWdlKTsK
KyAgICBBU1NFUlQocmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyKTsKKworICAgIC8vIGNyZWF0ZUlt
YWdlQnVmZmVyIHNob3VsZCBoYXZlIGJlZW4gcmV0dXJuZWQgdGhpcyBJbWFnZUJ1ZmZlciBiZWZv
cmUuCisgICAgYm9vbCBmb3VuZCA9IG1fcmVtb3RlSW1hZ2VCdWZmZXJNZXNzYWdlSGFuZGxlckhh
c2hNYXAucmVtb3ZlKHJlbW90ZVJlc291cmNlSWRlbnRpZmllcik7CisgICAgQVNTRVJUX1VOVVNF
RChmb3VuZCwgZm91bmQpOworCisgICAgLy8gVGVsbCB0aGUgR1BVIHByb2Nlc3MgdG8gcmVtb3Zl
IHRoaXMgcmVzb3VyY2UgdW5sZXNzIGl0J3MgcGVuZGluZyByZXBsYXlpbmcgYmFjay4KKyAgICBy
ZWxlYXNlUmVtb3RlUmVzb3VyY2VQZW5kaW5nUmVtb3ZlQ2xpZW50cyhyZW1vdGVSZXNvdXJjZUlk
ZW50aWZpZXIpOworICAgIHJldHVybiByZW1vdGVSZXNvdXJjZUlkZW50aWZpZXI7Cit9CisKK1Jl
bW90ZVJlc291cmNlSWRlbnRpZmllciBSZW1vdGVSZXNvdXJjZUNhY2hlOjpmaW5kSW1hZ2VCdWZm
ZXJGb3JDbGllbnQoSW1hZ2VCdWZmZXImIGltYWdlLCBSZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIg
cmVtb3RlQ2xpZW50SWRlbnRpZmllcikKK3sKKyAgICBhdXRvIHJlbW90ZVJlc291cmNlSWRlbnRp
ZmllciA9IG1fcmVtb3RlSW1hZ2VCdWZmZXJIYXNoTWFwLmdldCgmaW1hZ2UpOworICAgIGFkZFJl
bW90ZUNsaWVudChyZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIsIHJlbW90ZUNsaWVudElkZW50aWZp
ZXIpOworICAgIHJldHVybiByZW1vdGVSZXNvdXJjZUlkZW50aWZpZXI7Cit9CisKK3ZvaWQgUmVt
b3RlUmVzb3VyY2VDYWNoZTo6YWRkUmVtb3RlQ2xpZW50KFJlbW90ZVJlc291cmNlSWRlbnRpZmll
ciByZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIsIFJlbW90ZVJlc291cmNlSWRlbnRpZmllciByZW1v
dGVDbGllbnRJZGVudGlmaWVyKQoreworICAgIGlmICghcmVtb3RlUmVzb3VyY2VJZGVudGlmaWVy
KQorICAgICAgICByZXR1cm47CisKKyAgICAvLyBBZGQgdGhlICJyZXNvdXJjZSAtPiBjbGllbnQi
IGRlcGVuZGVuY3kgaW4gbV9yZW1vdGVSZXNvdXJjZUNsaWVudHNIYXNoTWFwLgorICAgIGF1dG8m
IGNsaWVudHMgPSBtX3JlbW90ZVJlc291cmNlQ2xpZW50c0hhc2hNYXAuZW5zdXJlKHJlbW90ZVJl
c291cmNlSWRlbnRpZmllciwgWyZdIHsKKyAgICAgICAgcmV0dXJuIFJlbW90ZUNsaWVudHNIYXNo
U2V0KCk7CisgICAgfSkuaXRlcmF0b3ItPnZhbHVlOworCisgICAgY2xpZW50cy5hZGQocmVtb3Rl
Q2xpZW50SWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlUmVzb3VyY2VDYWNoZTo6cmVsZWFz
ZVJlbW90ZVJlc291cmNlUGVuZGluZ1JlbW92ZUNsaWVudHMoUmVtb3RlUmVzb3VyY2VJZGVudGlm
aWVyIHJlbW90ZVJlc291cmNlSWRlbnRpZmllcikKK3sKKyAgICBBU1NFUlQoIW1fcmVtb3RlUmVz
b3VyY2VDbGllbnRzUGVuZGluZ1JlbGVhc2VIYXNoTWFwLmNvbnRhaW5zKHJlbW90ZVJlc291cmNl
SWRlbnRpZmllcikpOworCisgICAgLy8gSWYgd2UgaGF2ZSByZWNvcmRlZCB0aGUgcmVzb3VyY2Ug
LT4gY2xpZW50IGRlcGVuZGVuY3kgYmVmb3JlIGluIG1fcmVtb3RlUmVzb3VyY2VDbGllbnRzSGFz
aE1hcCwgbW92ZSB0aGlzCisgICAgLy8gZGVwZW5kZW5jeSB0byBtX3JlbW90ZVJlc291cmNlQ2xp
ZW50c1BlbmRpbmdSZWxlYXNlSGFzaE1hcC4gT3RoZXJ3aXNlIHJlbW92ZSB0aGUgcmVzb3VyY2Ug
ZnJvbSB0aGUgY2FjaGUuCisgICAgaWYgKG1fcmVtb3RlUmVzb3VyY2VDbGllbnRzSGFzaE1hcC5j
b250YWlucyhyZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIpKQorICAgICAgICBtX3JlbW90ZVJlc291
cmNlQ2xpZW50c1BlbmRpbmdSZWxlYXNlSGFzaE1hcC5hZGQocmVtb3RlUmVzb3VyY2VJZGVudGlm
aWVyLCBtX3JlbW90ZVJlc291cmNlQ2xpZW50c0hhc2hNYXAudGFrZShyZW1vdGVSZXNvdXJjZUlk
ZW50aWZpZXIpKTsKKyAgICBlbHNlCisgICAgICAgIG1fcmVtb3RlUmVuZGVyaW5nQmFja2VuZC5y
ZW1vdGVSZWxlYXNlUmVtb3RlUmVzb3VyY2UocmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyKTsKK30K
KworVmVjdG9yPFJlbW90ZVJlc291cmNlSWRlbnRpZmllcj4gUmVtb3RlUmVzb3VyY2VDYWNoZTo6
cmVtb3ZlUmVtb3RlQ2xpZW50KFJlbW90ZVJlc291cmNlQ2xpZW50c0hhc2hNYXAmIHJlbW90ZVJl
c291cmNlQ2xpZW50c0hhc2hNYXAsIFJlbW90ZVJlc291cmNlSWRlbnRpZmllciByZW1vdGVDbGll
bnRJZGVudGlmaWVyKQoreworICAgIFZlY3RvcjxSZW1vdGVSZXNvdXJjZUlkZW50aWZpZXI+IHJl
bW90ZVJlc291cmNlQ2xpZW50c1RvQmVSZW1vdmVkOworCisgICAgLy8gUmVtb3ZlIGFsbCB0aGUg
cmVzb3VyY2UgLT4gY2xpZW50IGRlcGVuZGVuY2llcyBmcm9tIHJlbW90ZVJlc291cmNlQ2xpZW50
c0hhc2hNYXAuCisgICAgZm9yIChhdXRvJiBwYWlyIDogcmVtb3RlUmVzb3VyY2VDbGllbnRzSGFz
aE1hcCkgeworICAgICAgICBwYWlyLnZhbHVlLnJlbW92ZShyZW1vdGVDbGllbnRJZGVudGlmaWVy
KTsKKyAgICAgICAgaWYgKHBhaXIudmFsdWUuaXNFbXB0eSgpKQorICAgICAgICAgICAgcmVtb3Rl
UmVzb3VyY2VDbGllbnRzVG9CZVJlbW92ZWQuYXBwZW5kKHBhaXIua2V5KTsKKyAgICB9CisKKyAg
ICAvLyBSZXR1cm4gYSBsaXN0IG9mIHRoZSB1bnJlZmVyZW5jZWQgcmVzb3VyY2VzLgorICAgIHJl
dHVybiByZW1vdGVSZXNvdXJjZUNsaWVudHNUb0JlUmVtb3ZlZDsKK30KKwordm9pZCBSZW1vdGVS
ZXNvdXJjZUNhY2hlOjpyZWxlYXNlUmVtb3RlQ2xpZW50KFJlbW90ZVJlc291cmNlSWRlbnRpZmll
ciByZW1vdGVDbGllbnRJZGVudGlmaWVyKQoreworICAgIC8vIFJlbW92ZSBhbGwgdGhlIHJlc291
cmNlIC0+IGNsaWVudCBkZXBlbmRlbmNpZXMgZnJvbSBtX3JlbW90ZVJlc291cmNlQ2xpZW50c0hh
c2hNYXAuCisgICAgZm9yIChhdXRvIHJlbW90ZVJlc291cmNlSWRlbnRpZmllciA6IHJlbW92ZVJl
bW90ZUNsaWVudChtX3JlbW90ZVJlc291cmNlQ2xpZW50c0hhc2hNYXAsIHJlbW90ZUNsaWVudElk
ZW50aWZpZXIpKQorICAgICAgICBtX3JlbW90ZVJlc291cmNlQ2xpZW50c0hhc2hNYXAucmVtb3Zl
KHJlbW90ZVJlc291cmNlSWRlbnRpZmllcik7CisKKyAgICAvLyBSZW1vdmUgYWxsIHRoZSByZXNv
dXJjZSAtPiBjbGllbnQgZGVwZW5kZW5jaWVzIGZyb20gbV9yZW1vdGVSZXNvdXJjZUNsaWVudHNQ
ZW5kaW5nUmVsZWFzZUhhc2hNYXAuCisgICAgZm9yIChhdXRvIHJlbW90ZVJlc291cmNlSWRlbnRp
ZmllciA6IHJlbW92ZVJlbW90ZUNsaWVudChtX3JlbW90ZVJlc291cmNlQ2xpZW50c1BlbmRpbmdS
ZWxlYXNlSGFzaE1hcCwgcmVtb3RlQ2xpZW50SWRlbnRpZmllcikpIHsKKyAgICAgICAgLy8gUmVt
b3ZlIHRoZSB1bnJlZmVyZW5jZWQgcmVzb3VyY2VzIGZyb20gbV9yZW1vdGVSZXNvdXJjZUNsaWVu
dHNQZW5kaW5nUmVsZWFzZUhhc2hNYXAuCisgICAgICAgIG1fcmVtb3RlUmVzb3VyY2VDbGllbnRz
UGVuZGluZ1JlbGVhc2VIYXNoTWFwLnJlbW92ZShyZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIpOwor
CisgICAgICAgIC8vIFRlbGwgdGhlIEdQVSBwcm9jZXNzIHRvIHJlbW92ZSB0aGlzIHJlc291cmNl
LgorICAgICAgICBtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmQucmVtb3RlUmVsZWFzZVJlbW90ZVJl
c291cmNlKHJlbW90ZVJlc291cmNlSWRlbnRpZmllcik7CisgICAgfQorfQorCit9IC8vIG5hbWVz
cGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIEVOQUJMRShHUFVfUFJPQ0VTUykKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlUmVzb3VyY2VDYWNo
ZS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVSZXNvdXJj
ZUNhY2hlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uYjQ4YTk1NGQ4ZGM5YjViNjgzYWEwNjg2NzNjMWU2ZjhjMTFi
ZDdkZAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3Jh
cGhpY3MvUmVtb3RlUmVzb3VyY2VDYWNoZS5oCkBAIC0wLDAgKzEsODYgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycn
IEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwK
KyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBF
TkFCTEUoR1BVX1BST0NFU1MpCisKKyNpbmNsdWRlICJJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGUu
aCIKKyNpbmNsdWRlICJJbWFnZUJ1ZmZlckZsdXNoSWRlbnRpZmllci5oIgorI2luY2x1ZGUgPFdl
YkNvcmUvSW1hZ2VCdWZmZXIuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1JlbW90ZVJlc291cmNlSWRl
bnRpZmllci5oPgorI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CisjaW5jbHVkZSA8d3RmL0hhc2hT
ZXQuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworbmFtZXNwYWNlIERpc3BsYXlMaXN0IHsKK2Ns
YXNzIEl0ZW07Cit9CitlbnVtIGNsYXNzIENvbG9yU3BhY2UgOiB1aW50OF90OworY2xhc3MgQ29s
b3I7CitjbGFzcyBGbG9hdFJlY3Q7CitjbGFzcyBGbG9hdFNpemU7Cit9CisKK25hbWVzcGFjZSBX
ZWJLaXQgeworCitjbGFzcyBSZW1vdGVJbWFnZUJ1ZmZlck1lc3NhZ2VIYW5kbGVyOworY2xhc3Mg
UmVtb3RlUmVuZGVyaW5nQmFja2VuZDsKKworY2xhc3MgUmVtb3RlUmVzb3VyY2VDYWNoZSB7Citw
dWJsaWM6CisgICAgUmVtb3RlUmVzb3VyY2VDYWNoZShSZW1vdGVSZW5kZXJpbmdCYWNrZW5kJik7
CisKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6SW1hZ2VCdWZmZXI+IGNyZWF0ZUltYWdl
QnVmZmVyKGNvbnN0IFdlYkNvcmU6OkZsb2F0U2l6ZSYsIFdlYkNvcmU6OlNob3VsZEFjY2VsZXJh
dGUsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwgV2ViQ29yZTo6Q29sb3JTcGFjZSk7CisgICAgdm9p
ZCBjcmVhdGVJbWFnZUJ1ZmZlckJhY2tlbmQoY29uc3QgV2ViQ29yZTo6RmxvYXRTaXplJiBsb2dp
Y2FsU2l6ZSwgY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYgYmFja2VuZFNpemUsIGZsb2F0IHJlc29s
dXRpb25TY2FsZSwgV2ViQ29yZTo6Q29sb3JTcGFjZSwgSW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxl
LCBXZWJDb3JlOjpSZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIpOworICAgIHZvaWQgY29tbWl0SW1h
Z2VCdWZmZXJGbHVzaENvbnRleHQoSW1hZ2VCdWZmZXJGbHVzaElkZW50aWZpZXIsIFdlYkNvcmU6
OlJlbW90ZVJlc291cmNlSWRlbnRpZmllcik7CisKKyAgICBSZWZQdHI8V2ViQ29yZTo6RGlzcGxh
eUxpc3Q6Okl0ZW0+IGNyZWF0ZURyYXdJbWFnZUJ1ZmZlckl0ZW0oV2ViQ29yZTo6SW1hZ2VCdWZm
ZXImLCBjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBXZWJDb3JlOjpG
bG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IFdlYkNvcmU6OkltYWdlUGFpbnRpbmdPcHRpb25zJiwg
V2ViQ29yZTo6UmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyKTsKKworICAgIFdlYkNvcmU6OlJlbW90
ZVJlc291cmNlSWRlbnRpZmllciByZWxlYXNlSW1hZ2VCdWZmZXIoV2ViQ29yZTo6SW1hZ2VCdWZm
ZXImKTsKKyAgICB2b2lkIHJlbGVhc2VSZW1vdGVDbGllbnQoV2ViQ29yZTo6UmVtb3RlUmVzb3Vy
Y2VJZGVudGlmaWVyIHJlbW90ZUNsaWVudElkZW50aWZpZXIpOworCitwcml2YXRlOgorICAgIHVz
aW5nIFJlbW90ZUNsaWVudHNIYXNoU2V0ID0gSGFzaFNldDxXZWJDb3JlOjpSZW1vdGVSZXNvdXJj
ZUlkZW50aWZpZXI+OworICAgIHVzaW5nIFJlbW90ZUltYWdlQnVmZmVySGFzaE1hcCA9IEhhc2hN
YXA8V2ViQ29yZTo6SW1hZ2VCdWZmZXIqLCBXZWJDb3JlOjpSZW1vdGVSZXNvdXJjZUlkZW50aWZp
ZXI+OworICAgIHVzaW5nIFJlbW90ZVJlc291cmNlQ2xpZW50c0hhc2hNYXAgPSBIYXNoTWFwPFdl
YkNvcmU6OlJlbW90ZVJlc291cmNlSWRlbnRpZmllciwgUmVtb3RlQ2xpZW50c0hhc2hTZXQ+Owor
ICAgIHVzaW5nIFJlbW90ZUltYWdlQnVmZmVyTWVzc2FnZUhhbmRsZXJIYXNoTWFwID0gSGFzaE1h
cDxXZWJDb3JlOjpSZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIsIFJlbW90ZUltYWdlQnVmZmVyTWVz
c2FnZUhhbmRsZXIqPjsKKworICAgIFdlYkNvcmU6OlJlbW90ZVJlc291cmNlSWRlbnRpZmllciBm
aW5kSW1hZ2VCdWZmZXJGb3JDbGllbnQoV2ViQ29yZTo6SW1hZ2VCdWZmZXImLCBXZWJDb3JlOjpS
ZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIpOworCisgICAgdm9pZCBhZGRSZW1vdGVDbGllbnQoV2Vi
Q29yZTo6UmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyLCBXZWJDb3JlOjpSZW1vdGVSZXNvdXJjZUlk
ZW50aWZpZXIgcmVtb3RlQ2xpZW50SWRlbnRpZmllcik7CisgICAgVmVjdG9yPFdlYkNvcmU6OlJl
bW90ZVJlc291cmNlSWRlbnRpZmllcj4gcmVtb3ZlUmVtb3RlQ2xpZW50KFJlbW90ZVJlc291cmNl
Q2xpZW50c0hhc2hNYXAmLCBXZWJDb3JlOjpSZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIgcmVtb3Rl
Q2xpZW50SWRlbnRpZmllcik7CisgICAgdm9pZCByZWxlYXNlUmVtb3RlUmVzb3VyY2VQZW5kaW5n
UmVtb3ZlQ2xpZW50cyhXZWJDb3JlOjpSZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIpOworCisgICAg
UmVtb3RlSW1hZ2VCdWZmZXJIYXNoTWFwIG1fcmVtb3RlSW1hZ2VCdWZmZXJIYXNoTWFwOworICAg
IFJlbW90ZVJlc291cmNlQ2xpZW50c0hhc2hNYXAgbV9yZW1vdGVSZXNvdXJjZUNsaWVudHNIYXNo
TWFwOworICAgIFJlbW90ZVJlc291cmNlQ2xpZW50c0hhc2hNYXAgbV9yZW1vdGVSZXNvdXJjZUNs
aWVudHNQZW5kaW5nUmVsZWFzZUhhc2hNYXA7CisgICAgUmVtb3RlSW1hZ2VCdWZmZXJNZXNzYWdl
SGFuZGxlckhhc2hNYXAgbV9yZW1vdGVJbWFnZUJ1ZmZlck1lc3NhZ2VIYW5kbGVySGFzaE1hcDsK
KyAgICBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kJiBtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmQ7Cit9
OworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIEVOQUJMRShHUFVfUFJPQ0VT
UykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HYW1lcGFkL1dlYkdhbWVw
YWRQcm92aWRlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR2FtZXBhZC9XZWJHYW1l
cGFkUHJvdmlkZXIuY3BwCmluZGV4IDFhZTUxNTcyNTM2MWQyMjgyMTkxNGFlZDBmMjhiYjE2ZTc2
MzU4ZmYuLjMwMDUwYWMwN2RjOWFkNWM4M2YzZGUyODMyOTA2YTk4NzQxMGQzZjggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HYW1lcGFkL1dlYkdhbWVwYWRQcm92aWRlci5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dhbWVwYWQvV2ViR2FtZXBhZFByb3Zp
ZGVyLmNwcApAQCAtMjksNiArMjksNyBAQAogI2lmIEVOQUJMRShHQU1FUEFEKQogCiAjaW5jbHVk
ZSAiR2FtZXBhZERhdGEuaCIKKyNpbmNsdWRlICJMb2dnaW5nLmgiCiAjaW5jbHVkZSAiV2ViR2Ft
ZXBhZC5oIgogI2luY2x1ZGUgIldlYlByb2Nlc3MuaCIKICNpbmNsdWRlICJXZWJQcm9jZXNzUG9v
bE1lc3NhZ2VzLmgiCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>411032</attachid>
            <date>2020-10-10 22:40:40 -0700</date>
            <delta_ts>2020-10-20 16:22:15 -0700</delta_ts>
            <desc>Patch for review</desc>
            <filename>resource-cache-4.patch</filename>
            <type>text/plain</type>
            <size>40935</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCA2MmZiMWYwYjJmMzkuLmFhMzhkMTQwYjM3OSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAt
MSwzICsxLDg1IEBACisyMDIwLTEwLTEwICBTYWlkIEFib3UtSGFsbGF3YSAgPHNhYm91aGFsbGF3
YUBhcHBsZS5jb20+CisKKyAgICAgICAgW0dQVSBQcm9jZXNzXSBJbXBsZW1lbnQgRGlzcGxheUxp
c3Q6OkRyYXdJbWFnZUJ1ZmZlciBpdGVtCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0yMTc1NjYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBUaGUgc2VxdWVuY2UgaW4gdGhlIFdlYiBQcm9jZXNzIGlzIHRoZSBm
b2xsb3dpbmc6CisKKyAgICAgICAgLS0gR3JhcGhpY3NDb250ZXh0OjpkcmF3SW1hZ2VCdWZmZXIo
KSB1c2VzIERpc3BsYXlMaXN0OjpSZWNvcmRlciB0byBjaGVjaworICAgICAgICAgICB3aGV0aGVy
IGl0IGlzIGFwcHJvcHJpYXRlIHRvIGNyZWF0ZSBEcmF3SW1hZ2VCdWZmZXIgaXRlbSBvciBub3Qu
CisKKyAgICAgICAgLS0gRGlzcGxheUxpc3Q6OlJlY29yZGVyOjpkcmF3SW1hZ2VCdWZmZXIoKSB1
c2VzIHRoZSBkZWxlZ2F0ZSB0byB0byBjcmVhdGUKKyAgICAgICAgICAgdGhlIERyYXdJbWFnZUJ1
ZmZlciBpdGVtLgorCisgICAgICAgIC0tIFNpbmNlIFJlbW90ZUltYWdlQnVmZmVyIGluaGVyaXRz
IERpc3BsYXlMaXN0OjpSZWNvcmRlcjo6RGVsZWdhdGUsIAorICAgICAgICAgICBSZW1vdGVJbWFn
ZUJ1ZmZlcjo6Y3JlYXRlRHJhd0ltYWdlQnVmZmVySXRlbSgpIHdpbGwgYmUgY2FsbGVkLgorCisg
ICAgICAgIC0tIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OmNyZWF0ZURyYXdJbWFnZUJ1ZmZlckl0
ZW0oKSB3aWxsIGJlIGNhbGxlZCBuZXh0CisgICAgICAgICAgIHdoaWNoIHdpbGwgY2FsbCBSZW1v
dGVSZXNvdXJjZUNhY2hlOjpjcmVhdGVEcmF3SW1hZ2VCdWZmZXJJdGVtKCkuCisKKyAgICAgICAg
LS0gUmVtb3RlUmVzb3VyY2VDYWNoZTo6Y3JlYXRlRHJhd0ltYWdlQnVmZmVySXRlbSgpIGNoZWNr
cyBpdHMgSGFzaE1hcAorICAgICAgICAgICB1c2luZyB0aGUgSW1hZ2VCdWZmZXIqIHRvIGZpbmQg
dGhlIGNvcnJlc3BvbmRpbmcgUmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyLgorICAgICAgICAgICBJ
ZiBpdCBmaW5kcyBpdCwgaXQgd2lsbCBjcmVhdGUgdGhlIERyYXdJbWFnZUJ1ZmZlciBpdGVtLgor
CisgICAgICAgIFRoZSBzZXF1ZW5jZSBpbiB0aGUgR1BVIFByb2Nlc3MgaXMgdGhlIGZvbGxvd2lu
ZzoKKworICAgICAgICAtLSBXaGVuIHJlcGxheWluZyBiYWNrIHRoZSBEaXNwbGF5TGlzdCwgRGlz
cGxheUxpc3Q6OlJlcGxheWVyIHdpbGwgY2FsbAorICAgICAgICAgICBpdHMgZGVsZWdhdGUgdG8g
Y2hlY2sgaWYgaXQgd2FudHMgdG8gYXBwbHkgdGhlIERyYXdJbWFnZUJ1ZmZlci4KKworICAgICAg
ICAtLSBCZWNhdXNlIFJlbW90ZUltYWdlQnVmZmVyUHJveHkgaW5oZXJpdHMgRGlzcGxheUxpc3Q6
OlJlcGxheWVyOjpEZWxlZ2F0ZSwKKyAgICAgICAgICAgUmVtb3RlSW1hZ2VCdWZmZXJQcm94eTo6
YXBwbHkoKSB3aWxsIGJlIGNhbGxlZC4KKworICAgICAgICAtLSBSZW1vdGVJbWFnZUJ1ZmZlclBy
b3h5IHdpbGwgY2FsbCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHk6OmFwcGx5UmVzb3VyY2VJ
dGVtKCkKKyAgICAgICAgICAgd2hpY2ggd2lsbCBwYXNzIGl0IHRvIGl0cyBSZW1vdGVSZXNvdXJj
ZUNhY2hlUHJveHkuCisKKyAgICAgICAgLS0gUmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5OjphcHBs
eVJlc291cmNlSXRlbSgpIHdpbGwgc2VhcmNoIGZvciBhCisgICAgICAgICAgIFJlbW90ZUltYWdl
QnVmZmVyIHdob3NlIFJlbW90ZVJlc291cmNlSWRlbnRpZmllciBtYXRjaGVzIHRoZSBvbmUgaW4K
KyAgICAgICAgICAgRHJhd0ltYWdlQnVmZmVyLiBBbmQgdGhlcmUgaXMgb25lLCBpdCB3aWxsIGRy
YXdzIHRvIEdyYXBoaWNzQ29udGV4dC4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dy
YXBoaWNzQ29udGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OmRy
YXdJbWFnZUJ1ZmZlcik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250
ZXh0SW1wbC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29u
dGV4dEltcGxDYWlyby5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRJbXBs
Q2Fpcm86OmRyYXdJbWFnZUJ1ZmZlcik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2Fp
cm8vR3JhcGhpY3NDb250ZXh0SW1wbENhaXJvLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0Lmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0RHJhd2luZ0NvbnRleHQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRyYXdpbmdDb250ZXh0OjpEcmF3aW5nQ29udGV4dCk6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0RHJhd2lu
Z0NvbnRleHQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEcmF3aW5nQ29udGV4
dDo6RHJhd2luZ0NvbnRleHQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXls
aXN0cy9EaXNwbGF5TGlzdEltYWdlQnVmZmVyLmg6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5
TGlzdDo6SW1hZ2VCdWZmZXI6OkltYWdlQnVmZmVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtcy5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpEaXNwbGF5TGlzdDo6SXRlbTo6c2l6ZUluQnl0ZXMpOgorICAgICAgICAoV2ViQ29yZTo6RGlz
cGxheUxpc3Q6OkRyYXdJbWFnZUJ1ZmZlcjo6RHJhd0ltYWdlQnVmZmVyKToKKyAgICAgICAgKFdl
YkNvcmU6OkRpc3BsYXlMaXN0OjpEcmF3SW1hZ2VCdWZmZXI6OmFwcGx5IGNvbnN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpvcGVyYXRvcjw8KToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtcy5oOgorICAgICAgICAoV2Vi
Q29yZTo6RGlzcGxheUxpc3Q6OkRyYXdJbWFnZUJ1ZmZlcjo6Y3JlYXRlKToKKyAgICAgICAgKFdl
YkNvcmU6OkRpc3BsYXlMaXN0OjpEcmF3SW1hZ2VCdWZmZXI6OnJlbW90ZVJlc291cmNlSWRlbnRp
ZmllciBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RHJhd0ltYWdlQnVm
ZmVyOjpzb3VyY2UgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRyYXdJ
bWFnZUJ1ZmZlcjo6ZGVzdGluYXRpb25SZWN0IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkRp
c3BsYXlMaXN0OjpEcmF3SW1hZ2VCdWZmZXI6Om9wdGlvbnMgY29uc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6RGlzcGxheUxpc3Q6OkRyYXdJbWFnZUJ1ZmZlcjo6ZW5jb2RlIGNvbnN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEcmF3SW1hZ2VCdWZmZXI6OmRlY29kZSk6CisgICAg
ICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbTo6ZW5jb2RlIGNvbnN0KToKKyAgICAgICAg
KFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtOjpkZWNvZGUpOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF4TGlzdFJlY29yZGVyLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpSZWNvcmRlcjo6UmVjb3JkZXIpOgorICAgICAgICAoV2Vi
Q29yZTo6RGlzcGxheUxpc3Q6OlJlY29yZGVyOjpwdXRJbWFnZURhdGEpOgorICAgICAgICAoV2Vi
Q29yZTo6RGlzcGxheUxpc3Q6OlJlY29yZGVyOjp3aWxsQXBwZW5kSXRlbSk6CisgICAgICAgIChX
ZWJDb3JlOjpEaXNwbGF5TGlzdDo6UmVjb3JkZXI6OmRyYXdJbWFnZUJ1ZmZlcik6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIuaDoK
KyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpSZWNvcmRlcjo6RGVsZWdhdGU6On5EZWxl
Z2F0ZSk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6UmVjb3JkZXI6OkRlbGVnYXRl
OjpjcmVhdGVEcmF3SW1hZ2VCdWZmZXJJdGVtKToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlM
aXN0OjpSZWNvcmRlcjo6T2JzZXJ2ZXI6On5PYnNlcnZlcik6IERlbGV0ZWQuCisgICAgICAgIChX
ZWJDb3JlOjpEaXNwbGF5TGlzdDo6UmVjb3JkZXI6Ok9ic2VydmVyOjp3aWxsQXBwZW5kSXRlbSk6
IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS9jYWlyby9OaWNv
c2lhQ2Fpcm9PcGVyYXRpb25SZWNvcmRlci5jcHA6CisgICAgICAgIChOaWNvc2lhOjpDYWlyb09w
ZXJhdGlvblJlY29yZGVyOjpkcmF3SW1hZ2VCdWZmZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL25pY29zaWEvY2Fpcm8vTmljb3NpYUNhaXJvT3BlcmF0aW9uUmVjb3JkZXIuaDoKKwog
MjAyMC0xMC0wOSAgU2FpZCBBYm91LUhhbGxhd2EgIDxzYWJvdWhhbGxhd2FAYXBwbGUuY29tPgog
CiAgICAgICAgIFtHUFUgUHJvY2Vzc10gSW50cm9kdWNlIFJlbW90ZVJlc291cmNlQ2FjaGVQcm94
eSB0byBtYW5hZ2UgdGhlIHJlc291cmNlcyBpbiB0aGUgR1BVIFByb2Nlc3MKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuY3BwCmluZGV4
IDU1NWNjNjY0NTcwYS4uN2I0NWIzNGY2NTcxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5jcHAKQEAgLTc5OSw2ICs3OTksOSBA
QCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6ZHJhd0ltYWdlQnVmZmVyKEltYWdlQnVmZmVyJiBpbWFn
ZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0aQogICAgIGlmIChwYWludGluZ0Rpc2FibGVkKCkpCiAg
ICAgICAgIHJldHVybjsKIAorICAgIGlmIChtX2ltcGwgJiYgbV9pbXBsLT5kcmF3SW1hZ2VCdWZm
ZXIoaW1hZ2UsIGRlc3RpbmF0aW9uLCBzb3VyY2UsIG9wdGlvbnMpKQorICAgICAgICByZXR1cm47
CisKICAgICBJbnRlcnBvbGF0aW9uUXVhbGl0eU1haW50YWluZXIgaW50ZXJwb2xhdGlvblF1YWxp
dHlGb3JUaGlzU2NvcGUoKnRoaXMsIG9wdGlvbnMuaW50ZXJwb2xhdGlvblF1YWxpdHkoKSk7CiAg
ICAgaW1hZ2UuZHJhdygqdGhpcywgZGVzdGluYXRpb24sIHNvdXJjZSwgb3B0aW9ucyk7CiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRl
eHRJbXBsLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRl
eHRJbXBsLmgKaW5kZXggM2Q1MDc1YmNlZGNiLi4wNDA5MjBhOGNmZGMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dEltcGwuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHRJbXBsLmgK
QEAgLTc1LDYgKzc1LDcgQEAgcHVibGljOgogI2lmIFVTRShDRykgfHwgVVNFKENBSVJPKSB8fCBV
U0UoRElSRUNUMkQpCiAgICAgdmlydHVhbCB2b2lkIGRyYXdOYXRpdmVJbWFnZShjb25zdCBOYXRp
dmVJbWFnZVB0ciYsIGNvbnN0IEZsb2F0U2l6ZSYgc2VsZlNpemUsIGNvbnN0IEZsb2F0UmVjdCYg
ZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgSW1hZ2VQYWludGluZ09w
dGlvbnMmKSA9IDA7CiAjZW5kaWYKKyAgICB2aXJ0dWFsIGJvb2wgZHJhd0ltYWdlQnVmZmVyKElt
YWdlQnVmZmVyJiwgY29uc3QgRmxvYXRSZWN0JiBkZXN0aW5hdGlvbiwgY29uc3QgRmxvYXRSZWN0
JiBzb3VyY2UsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJikgPSAwOwogICAgIHZpcnR1YWwg
dm9pZCBkcmF3UGF0dGVybihJbWFnZSYsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0
IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiwgY29uc3QgRmxvYXRQ
b2ludCYgcGhhc2UsIGNvbnN0IEZsb2F0U2l6ZSYgc3BhY2luZywgY29uc3QgSW1hZ2VQYWludGlu
Z09wdGlvbnMmKSA9IDA7CiAKICAgICB2aXJ0dWFsIHZvaWQgZHJhd1JlY3QoY29uc3QgRmxvYXRS
ZWN0JiwgZmxvYXQgYm9yZGVyVGhpY2tuZXNzKSA9IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRleHRJbXBsQ2Fpcm8uY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0
SW1wbENhaXJvLmNwcAppbmRleCBiNjViNGQ2NDQwNmIuLjA0ODY0Mjg1MWY5ZCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0
SW1wbENhaXJvLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWly
by9HcmFwaGljc0NvbnRleHRJbXBsQ2Fpcm8uY3BwCkBAIC0yODYsNiArMjg2LDEyIEBAIHZvaWQg
R3JhcGhpY3NDb250ZXh0SW1wbENhaXJvOjpkcmF3TmF0aXZlSW1hZ2UoY29uc3QgTmF0aXZlSW1h
Z2VQdHImIGltYWdlLCBjb25zCiAgICAgQ2Fpcm86OmRyYXdOYXRpdmVJbWFnZShtX3BsYXRmb3Jt
Q29udGV4dCwgaW1hZ2UuZ2V0KCksIGRlc3RSZWN0LCBzcmNSZWN0LCB7IG9wdGlvbnMsIHN0YXRl
LmltYWdlSW50ZXJwb2xhdGlvblF1YWxpdHkgfSwgc3RhdGUuYWxwaGEsIENhaXJvOjpTaGFkb3dT
dGF0ZShzdGF0ZSkpOwogfQogCitib29sIEdyYXBoaWNzQ29udGV4dEltcGxDYWlybzo6ZHJhd0lt
YWdlQnVmZmVyKEltYWdlQnVmZmVyJiwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgRmxvYXRSZWN0
JiwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmKQoreworICAgIC8vIEZJWE1FOiBOb3QgaW1w
bGVtZW50ZWQuCisgICAgcmV0dXJuIGZhbHNlOworfQorCiB2b2lkIEdyYXBoaWNzQ29udGV4dElt
cGxDYWlybzo6ZHJhd1BhdHRlcm4oSW1hZ2UmIGltYWdlLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RS
ZWN0LCBjb25zdCBGbG9hdFJlY3QmIHRpbGVSZWN0LCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIHBh
dHRlcm5UcmFuc2Zvcm0sIGNvbnN0IEZsb2F0UG9pbnQmIHBoYXNlLCBjb25zdCBGbG9hdFNpemUm
LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgb3B0aW9ucykKIHsKICAgICBpZiAoYXV0byBz
dXJmYWNlID0gaW1hZ2UubmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUoKSkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dElt
cGxDYWlyby5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhp
Y3NDb250ZXh0SW1wbENhaXJvLmgKaW5kZXggZTVlMjA3NDhjNmQ3Li5kMzBiZjg2OWQ3NDYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNz
Q29udGV4dEltcGxDYWlyby5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NhaXJvL0dyYXBoaWNzQ29udGV4dEltcGxDYWlyby5oCkBAIC03NCw3ICs3NCw5IEBAIHB1Ymxp
YzoKICAgICBJbWFnZURyYXdSZXN1bHQgZHJhd0ltYWdlKEltYWdlJiwgY29uc3QgRmxvYXRSZWN0
JiwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmKSBvdmVycmlk
ZTsKICAgICBJbWFnZURyYXdSZXN1bHQgZHJhd1RpbGVkSW1hZ2UoSW1hZ2UmLCBjb25zdCBGbG9h
dFJlY3QmLCBjb25zdCBGbG9hdFBvaW50JiwgY29uc3QgRmxvYXRTaXplJiwgY29uc3QgRmxvYXRT
aXplJiwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmKSBvdmVycmlkZTsKICAgICBJbWFnZURy
YXdSZXN1bHQgZHJhd1RpbGVkSW1hZ2UoSW1hZ2UmLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBG
bG9hdFJlY3QmLCBjb25zdCBGbG9hdFNpemUmLCBJbWFnZTo6VGlsZVJ1bGUsIEltYWdlOjpUaWxl
UnVsZSwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmKSBvdmVycmlkZTsKKwogICAgIHZvaWQg
ZHJhd05hdGl2ZUltYWdlKGNvbnN0IE5hdGl2ZUltYWdlUHRyJiwgY29uc3QgRmxvYXRTaXplJiwg
Y29uc3QgRmxvYXRSZWN0JiwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgSW1hZ2VQYWludGluZ09w
dGlvbnMmKSBvdmVycmlkZTsKKyAgICBib29sIGRyYXdJbWFnZUJ1ZmZlcihJbWFnZUJ1ZmZlciYs
IGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IEltYWdlUGFpbnRpbmdP
cHRpb25zJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBkcmF3UGF0dGVybihJbWFnZSYsIGNvbnN0IEZs
b2F0UmVjdCYsIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYsIGNvbnN0
IEZsb2F0UG9pbnQmLCBjb25zdCBGbG9hdFNpemUmLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9u
cyYpIG92ZXJyaWRlOwogCiAgICAgdm9pZCBkcmF3UmVjdChjb25zdCBGbG9hdFJlY3QmLCBmbG9h
dCkgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3QuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdC5oCmluZGV4IGE2MzgzNjkyMWQ4ZC4uY2Y4
N2YxYTcwMGE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9k
aXNwbGF5bGlzdHMvRGlzcGxheUxpc3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3QuaApAQCAtNjQsNiArNjQsOSBAQCBlbnVt
IGNsYXNzIEl0ZW1UeXBlIDogdWludDhfdCB7CiAgICAgRHJhd1RpbGVkU2NhbGVkSW1hZ2UsCiAj
aWYgVVNFKENHKSB8fCBVU0UoQ0FJUk8pIHx8IFVTRShESVJFQ1QyRCkKICAgICBEcmF3TmF0aXZl
SW1hZ2UsCisjZW5kaWYKKyNpZiBFTkFCTEUoR1BVX1BST0NFU1MpCisgICAgRHJhd0ltYWdlQnVm
ZmVyLAogI2VuZGlmCiAgICAgRHJhd1BhdHRlcm4sCiAgICAgRHJhd1JlY3QsCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxp
c3REcmF3aW5nQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9k
aXNwbGF5bGlzdHMvRGlzcGxheUxpc3REcmF3aW5nQ29udGV4dC5jcHAKaW5kZXggMjNjYzA3ZThh
ZTQ0Li5kNDYxN2QzNTE2ZjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdERyYXdpbmdDb250ZXh0LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RE
cmF3aW5nQ29udGV4dC5jcHAKQEAgLTMzLDkgKzMzLDkgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IG5hbWVzcGFjZSBEaXNwbGF5TGlzdCB7CiAKLURyYXdpbmdDb250ZXh0OjpEcmF3aW5nQ29udGV4
dChjb25zdCBGbG9hdFNpemUmIGxvZ2ljYWxTaXplLCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIGlu
aXRpYWxDVE0sIFJlY29yZGVyOjpPYnNlcnZlciogb2JzZXJ2ZXIpCitEcmF3aW5nQ29udGV4dDo6
RHJhd2luZ0NvbnRleHQoY29uc3QgRmxvYXRTaXplJiBsb2dpY2FsU2l6ZSwgY29uc3QgQWZmaW5l
VHJhbnNmb3JtJiBpbml0aWFsQ1RNLCBSZWNvcmRlcjo6RGVsZWdhdGUqIGRlbGVnYXRlKQogICAg
IDogbV9jb250ZXh0KFsmXShHcmFwaGljc0NvbnRleHQmIGRpc3BsYXlMaXN0Q29udGV4dCkgewot
ICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxSZWNvcmRlcj4oZGlzcGxheUxpc3RDb250ZXh0LCBt
X2Rpc3BsYXlMaXN0LCBHcmFwaGljc0NvbnRleHRTdGF0ZSgpLCBGbG9hdFJlY3QoeyB9LCBsb2dp
Y2FsU2l6ZSksIGluaXRpYWxDVE0sIG9ic2VydmVyKTsKKyAgICAgICAgcmV0dXJuIG1ha2VVbmlx
dWU8UmVjb3JkZXI+KGRpc3BsYXlMaXN0Q29udGV4dCwgbV9kaXNwbGF5TGlzdCwgR3JhcGhpY3ND
b250ZXh0U3RhdGUoKSwgRmxvYXRSZWN0KHsgfSwgbG9naWNhbFNpemUpLCBpbml0aWFsQ1RNLCBk
ZWxlZ2F0ZSk7CiAgICAgfSkKIHsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdERyYXdpbmdDb250ZXh0LmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RE
cmF3aW5nQ29udGV4dC5oCmluZGV4IDdiNjczZjMyYWQ4MS4uMjJlZDI1NmU4MGFkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxh
eUxpc3REcmF3aW5nQ29udGV4dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdERyYXdpbmdDb250ZXh0LmgKQEAgLTM1LDcgKzM1
LDcgQEAgbmFtZXNwYWNlIERpc3BsYXlMaXN0IHsKIGNsYXNzIERyYXdpbmdDb250ZXh0IHsKICAg
ICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKLSAgICBXRUJDT1JFX0VYUE9SVCBE
cmF3aW5nQ29udGV4dChjb25zdCBGbG9hdFNpemUmIGxvZ2ljYWxTaXplLCBjb25zdCBBZmZpbmVU
cmFuc2Zvcm0mIGluaXRpYWxDVE0gPSB7IH0sIFJlY29yZGVyOjpPYnNlcnZlciogPSBudWxscHRy
KTsKKyAgICBXRUJDT1JFX0VYUE9SVCBEcmF3aW5nQ29udGV4dChjb25zdCBGbG9hdFNpemUmIGxv
Z2ljYWxTaXplLCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIGluaXRpYWxDVE0gPSB7IH0sIFJlY29y
ZGVyOjpEZWxlZ2F0ZSogPSBudWxscHRyKTsKIAogICAgIEdyYXBoaWNzQ29udGV4dCYgY29udGV4
dCgpIGNvbnN0IHsgcmV0dXJuIGNvbnN0X2Nhc3Q8RHJhd2luZ0NvbnRleHQmPigqdGhpcykubV9j
b250ZXh0OyB9CiAgICAgV0VCQ09SRV9FWFBPUlQgUmVjb3JkZXImIHJlY29yZGVyKCk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlz
cGxheUxpc3RJbWFnZUJ1ZmZlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
ZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SW1hZ2VCdWZmZXIuaAppbmRleCA2ZmQ5MTJkZmI4ZmUu
LjMyNTk5ZTA2MmQ3YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SW1hZ2VCdWZmZXIuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJbWFnZUJ1ZmZl
ci5oCkBAIC0zMiw3ICszMiw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIG5hbWVzcGFjZSBEaXNw
bGF5TGlzdCB7CiAKIHRlbXBsYXRlPHR5cGVuYW1lIEJhY2tlbmRUeXBlPgotY2xhc3MgSW1hZ2VC
dWZmZXIgOiBwdWJsaWMgQ29uY3JldGVJbWFnZUJ1ZmZlcjxCYWNrZW5kVHlwZT4sIHB1YmxpYyBS
ZWNvcmRlcjo6T2JzZXJ2ZXIgeworY2xhc3MgSW1hZ2VCdWZmZXIgOiBwdWJsaWMgQ29uY3JldGVJ
bWFnZUJ1ZmZlcjxCYWNrZW5kVHlwZT4gewogICAgIHVzaW5nIEJhc2VDb25jcmV0ZUltYWdlQnVm
ZmVyID0gQ29uY3JldGVJbWFnZUJ1ZmZlcjxCYWNrZW5kVHlwZT47CiAKIHB1YmxpYzoKQEAgLTQ4
LDEyICs0OCwxMiBAQCBwdWJsaWM6CiAKICAgICBJbWFnZUJ1ZmZlcihzdGQ6OnVuaXF1ZV9wdHI8
QmFja2VuZFR5cGU+JiYgZGF0YUJhY2tlbmQsIGNvbnN0IEZsb2F0U2l6ZSYgc2l6ZSkKICAgICAg
ICAgOiBCYXNlQ29uY3JldGVJbWFnZUJ1ZmZlcihXVEZNb3ZlKGRhdGFCYWNrZW5kKSkKLSAgICAg
ICAgLCBtX2RyYXdpbmdDb250ZXh0KHNpemUsIGluaXRpYWxEcmF3aW5nQ29udGV4dENUTShzaXpl
KSwgdGhpcykKKyAgICAgICAgLCBtX2RyYXdpbmdDb250ZXh0KHNpemUsIGluaXRpYWxEcmF3aW5n
Q29udGV4dENUTShzaXplKSkKICAgICB7CiAgICAgfQogCi0gICAgSW1hZ2VCdWZmZXIoY29uc3Qg
RmxvYXRTaXplJiBzaXplKQotICAgICAgICA6IG1fZHJhd2luZ0NvbnRleHQoc2l6ZSwgaW5pdGlh
bERyYXdpbmdDb250ZXh0Q1RNKHNpemUpLCB0aGlzKQorICAgIEltYWdlQnVmZmVyKGNvbnN0IEZs
b2F0U2l6ZSYgc2l6ZSwgUmVjb3JkZXI6OkRlbGVnYXRlKiBkZWxlZ2F0ZSA9IG51bGxwdHIpCisg
ICAgICAgIDogbV9kcmF3aW5nQ29udGV4dChzaXplLCBpbml0aWFsRHJhd2luZ0NvbnRleHRDVE0o
c2l6ZSksIGRlbGVnYXRlKQogICAgIHsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1zLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlz
dEl0ZW1zLmNwcAppbmRleCAxOGQ3MGNmYmQyNDAuLjI3OWVlNjEyODYyNSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0
SXRlbXMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXls
aXN0cy9EaXNwbGF5TGlzdEl0ZW1zLmNwcApAQCAtMzAsNyArMzAsNiBAQAogI2luY2x1ZGUgIkZv
bnRDYXNjYWRlLmgiCiAjaW5jbHVkZSAiSW1hZ2VEYXRhLmgiCiAjaW5jbHVkZSAiTWVkaWFQbGF5
ZXIuaCIKLSNpbmNsdWRlICJTaGFyZWRCdWZmZXIuaCIKICNpbmNsdWRlIDx3dGYvdGV4dC9UZXh0
U3RyZWFtLmg+CiAKICNpZiBVU0UoQ0cpCkBAIC0xMDksNiArMTA4LDEwIEBAIHNpemVfdCBJdGVt
OjpzaXplSW5CeXRlcyhjb25zdCBJdGVtJiBpdGVtKQogI2lmIFVTRShDRykgfHwgVVNFKENBSVJP
KQogICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdOYXRpdmVJbWFnZToKICAgICAgICAgcmV0dXJuIHNp
emVvZihkb3duY2FzdDxEcmF3TmF0aXZlSW1hZ2U+KGl0ZW0pKTsKKyNlbmRpZgorI2lmIEVOQUJM
RShHUFVfUFJPQ0VTUykKKyAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3SW1hZ2VCdWZmZXI6CisgICAg
ICAgIHJldHVybiBzaXplb2YoZG93bmNhc3Q8RHJhd0ltYWdlQnVmZmVyPihpdGVtKSk7CiAjZW5k
aWYKICAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3UGF0dGVybjoKICAgICAgICAgcmV0dXJuIHNpemVv
Zihkb3duY2FzdDxEcmF3UGF0dGVybj4oaXRlbSkpOwpAQCAtNzQxLDYgKzc0NCwzNCBAQCBzdGF0
aWMgVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiB0cywgY29uc3QgRHJhd05hdGl2
ZUltYWdlJiBpdGVtKQogfQogI2VuZGlmCiAKKyNpZiBFTkFCTEUoR1BVX1BST0NFU1MpCitEcmF3
SW1hZ2VCdWZmZXI6OkRyYXdJbWFnZUJ1ZmZlcihSZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIgcmVt
b3RlUmVzb3VyY2VJZGVudGlmaWVyLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBG
bG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBvcHRpb25zKQor
ICAgIDogRHJhd2luZ0l0ZW0oSXRlbVR5cGU6OkRyYXdJbWFnZUJ1ZmZlcikKKyAgICAsIG1fcmVt
b3RlUmVzb3VyY2VJZGVudGlmaWVyKHJlbW90ZVJlc291cmNlSWRlbnRpZmllcikKKyAgICAsIG1f
ZGVzdGluYXRpb25SZWN0KGRlc3RSZWN0KQorICAgICwgbV9zcmNSZWN0KHNyY1JlY3QpCisgICAg
LCBtX29wdGlvbnMob3B0aW9ucykKK3sKK30KKworRHJhd0ltYWdlQnVmZmVyOjp+RHJhd0ltYWdl
QnVmZmVyKCkgPSBkZWZhdWx0OworCit2b2lkIERyYXdJbWFnZUJ1ZmZlcjo6YXBwbHkoR3JhcGhp
Y3NDb250ZXh0JikgY29uc3QKK3sKKyAgICAvLyBTaG91bGQgYmUgaGFuZGxlZCBieSB0aGUgZGVs
ZWdhdGUuCisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Cit9CisKK3N0YXRpYyBUZXh0U3RyZWFt
JiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mIHRzLCBjb25zdCBEcmF3SW1hZ2VCdWZmZXImIGl0ZW0p
Cit7CisgICAgdHMgPDwgc3RhdGljX2Nhc3Q8Y29uc3QgRHJhd2luZ0l0ZW0mPihpdGVtKTsKKyAg
ICB0cy5kdW1wUHJvcGVydHkoInJlbW90ZS1yZXNvdXJjZS1pZGVudGlmaWVyIiwgaXRlbS5yZW1v
dGVSZXNvdXJjZUlkZW50aWZpZXIoKSk7CisgICAgdHMuZHVtcFByb3BlcnR5KCJzb3VyY2UtcmVj
dCIsIGl0ZW0uc291cmNlKCkpOworICAgIHRzLmR1bXBQcm9wZXJ0eSgiZGVzdC1yZWN0IiwgaXRl
bS5kZXN0aW5hdGlvblJlY3QoKSk7CisgICAgcmV0dXJuIHRzOworfQorI2VuZGlmCisKIERyYXdQ
YXR0ZXJuOjpEcmF3UGF0dGVybihJbWFnZSYgaW1hZ2UsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJl
Y3QsIGNvbnN0IEZsb2F0UmVjdCYgdGlsZVJlY3QsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgcGF0
dGVyblRyYW5zZm9ybSwgY29uc3QgRmxvYXRQb2ludCYgcGhhc2UsIGNvbnN0IEZsb2F0U2l6ZSYg
c3BhY2luZywgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmIG9wdGlvbnMpCiAgICAgOiBEcmF3
aW5nSXRlbShJdGVtVHlwZTo6RHJhd1BhdHRlcm4pCiAgICAgLCBtX2ltYWdlKGltYWdlKQpAQCAt
MTQ3MSw2ICsxNTAyLDkgQEAgc3RhdGljIFRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVh
bSYgdHMsIGNvbnN0IEl0ZW1UeXBlJiB0eXBlKQogICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdUaWxl
ZFNjYWxlZEltYWdlOiB0cyA8PCAiZHJhdy10aWxlZC1zY2FsZWQtaW1hZ2UiOyBicmVhazsKICNp
ZiBVU0UoQ0cpIHx8IFVTRShDQUlSTykKICAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3TmF0aXZlSW1h
Z2U6IHRzIDw8ICJkcmF3LW5hdGl2ZS1pbWFnZSI7IGJyZWFrOworI2VuZGlmCisjaWYgRU5BQkxF
KEdQVV9QUk9DRVNTKQorICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdJbWFnZUJ1ZmZlcjogdHMgPDwg
ImRyYXctaW1hZ2UtYnVmZmVyIjsgYnJlYWs7CiAjZW5kaWYKICAgICBjYXNlIEl0ZW1UeXBlOjpE
cmF3UGF0dGVybjogdHMgPDwgImRyYXctcGF0dGVybiI7IGJyZWFrOwogICAgIGNhc2UgSXRlbVR5
cGU6OkRyYXdSZWN0OiB0cyA8PCAiZHJhdy1yZWN0IjsgYnJlYWs7CkBAIC0xNTc1LDYgKzE2MDks
MTEgQEAgVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiB0cywgY29uc3QgSXRlbSYg
aXRlbSkKICAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3TmF0aXZlSW1hZ2U6CiAgICAgICAgIHRzIDw8
IGRvd25jYXN0PERyYXdOYXRpdmVJbWFnZT4oaXRlbSk7CiAgICAgICAgIGJyZWFrOworI2VuZGlm
CisjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKQorICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdJbWFnZUJ1
ZmZlcjoKKyAgICAgICAgdHMgPDwgZG93bmNhc3Q8RHJhd0ltYWdlQnVmZmVyPihpdGVtKTsKKyAg
ICAgICAgYnJlYWs7CiAjZW5kaWYKICAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3UGF0dGVybjoKICAg
ICAgICAgdHMgPDwgZG93bmNhc3Q8RHJhd1BhdHRlcm4+KGl0ZW0pOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRl
bXMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNw
bGF5TGlzdEl0ZW1zLmgKaW5kZXggY2I2ODRkMjNjZTc1Li4yMTQyODMxM2MzZTIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5
TGlzdEl0ZW1zLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxh
eWxpc3RzL0Rpc3BsYXlMaXN0SXRlbXMuaApAQCAtMzUsNiArMzUsNyBAQAogI2luY2x1ZGUgIklt
YWdlRGF0YS5oIgogI2luY2x1ZGUgIk1lZGlhUGxheWVySWRlbnRpZmllci5oIgogI2luY2x1ZGUg
IlBhdHRlcm4uaCIKKyNpbmNsdWRlICJSZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIuaCIKICNpbmNs
dWRlICJTaGFyZWRCdWZmZXIuaCIKICNpbmNsdWRlIDx3dGYvVHlwZUNhc3RzLmg+CiAKQEAgLTE1
MTYsNiArMTUxNyw3MyBAQCBPcHRpb25hbDxSZWY8RHJhd05hdGl2ZUltYWdlPj4gRHJhd05hdGl2
ZUltYWdlOjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKIH0KICNlbmRpZgogCisjaWYgRU5BQkxF
KEdQVV9QUk9DRVNTKQorY2xhc3MgRHJhd0ltYWdlQnVmZmVyIDogcHVibGljIERyYXdpbmdJdGVt
IHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUmVmPERyYXdJbWFnZUJ1ZmZlcj4gY3JlYXRlKFJlbW90
ZVJlc291cmNlSWRlbnRpZmllciByZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIsIGNvbnN0IEZsb2F0
UmVjdCYgZGVzdGluYXRpb24sIGNvbnN0IEZsb2F0UmVjdCYgc291cmNlLCBjb25zdCBJbWFnZVBh
aW50aW5nT3B0aW9ucyYgb3B0aW9ucykKKyAgICB7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigq
bmV3IERyYXdJbWFnZUJ1ZmZlcihyZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIsIGRlc3RpbmF0aW9u
LCBzb3VyY2UsIG9wdGlvbnMpKTsKKyAgICB9CisKKyAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFs
IH5EcmF3SW1hZ2VCdWZmZXIoKTsKKworICAgIFJlbW90ZVJlc291cmNlSWRlbnRpZmllciByZW1v
dGVSZXNvdXJjZUlkZW50aWZpZXIoKSBjb25zdCB7IHJldHVybiBtX3JlbW90ZVJlc291cmNlSWRl
bnRpZmllcjsgfQorICAgIEZsb2F0UmVjdCBzb3VyY2UoKSBjb25zdCB7IHJldHVybiBtX3NyY1Jl
Y3Q7IH0KKyAgICBGbG9hdFJlY3QgZGVzdGluYXRpb25SZWN0KCkgY29uc3QgeyByZXR1cm4gbV9k
ZXN0aW5hdGlvblJlY3Q7IH0KKyAgICBJbWFnZVBhaW50aW5nT3B0aW9ucyBvcHRpb25zKCkgY29u
c3QgeyByZXR1cm4gbV9vcHRpb25zOyB9CisKKyAgICB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPiB2
b2lkIGVuY29kZShFbmNvZGVyJikgY29uc3Q7CisgICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4g
c3RhdGljIE9wdGlvbmFsPFJlZjxEcmF3SW1hZ2VCdWZmZXI+PiBkZWNvZGUoRGVjb2RlciYpOwor
Citwcml2YXRlOgorICAgIFdFQkNPUkVfRVhQT1JUIERyYXdJbWFnZUJ1ZmZlcihSZW1vdGVSZXNv
dXJjZUlkZW50aWZpZXIsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdGluYXRpb24sIGNvbnN0IEZsb2F0
UmVjdCYgc291cmNlLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYpOworCisgICAgdm9pZCBh
cHBseShHcmFwaGljc0NvbnRleHQmKSBjb25zdCBvdmVycmlkZTsKKworICAgIE9wdGlvbmFsPEZs
b2F0UmVjdD4gbG9jYWxCb3VuZHMoY29uc3QgR3JhcGhpY3NDb250ZXh0JikgY29uc3Qgb3ZlcnJp
ZGUgeyByZXR1cm4gbV9kZXN0aW5hdGlvblJlY3Q7IH0KKworICAgIFJlbW90ZVJlc291cmNlSWRl
bnRpZmllciBtX3JlbW90ZVJlc291cmNlSWRlbnRpZmllcjsKKyAgICBGbG9hdFJlY3QgbV9kZXN0
aW5hdGlvblJlY3Q7CisgICAgRmxvYXRSZWN0IG1fc3JjUmVjdDsKKyAgICBJbWFnZVBhaW50aW5n
T3B0aW9ucyBtX29wdGlvbnM7Cit9OworCit0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPgordm9pZCBE
cmF3SW1hZ2VCdWZmZXI6OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAoreworICAgIGVu
Y29kZXIgPDwgbV9yZW1vdGVSZXNvdXJjZUlkZW50aWZpZXI7CisgICAgZW5jb2RlciA8PCBtX2Rl
c3RpbmF0aW9uUmVjdDsKKyAgICBlbmNvZGVyIDw8IG1fc3JjUmVjdDsKKyAgICBlbmNvZGVyIDw8
IG1fb3B0aW9uczsKK30KKwordGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4KK09wdGlvbmFsPFJlZjxE
cmF3SW1hZ2VCdWZmZXI+PiBEcmF3SW1hZ2VCdWZmZXI6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVy
KQoreworICAgIE9wdGlvbmFsPFJlbW90ZVJlc291cmNlSWRlbnRpZmllcj4gcmVtb3RlUmVzb3Vy
Y2VJZGVudGlmaWVyOworICAgIGRlY29kZXIgPj4gcmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyOwor
ICAgIGlmICghcmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyKQorICAgICAgICByZXR1cm4gV1RGOjpu
dWxsb3B0OworCisgICAgT3B0aW9uYWw8RmxvYXRSZWN0PiBkZXN0aW5hdGlvbjsKKyAgICBkZWNv
ZGVyID4+IGRlc3RpbmF0aW9uOworICAgIGlmICghZGVzdGluYXRpb24pCisgICAgICAgIHJldHVy
biBXVEY6Om51bGxvcHQ7CisKKyAgICBPcHRpb25hbDxGbG9hdFJlY3Q+IHNvdXJjZTsKKyAgICBk
ZWNvZGVyID4+IHNvdXJjZTsKKyAgICBpZiAoIXNvdXJjZSkKKyAgICAgICAgcmV0dXJuIFdURjo6
bnVsbG9wdDsKKworICAgIE9wdGlvbmFsPEltYWdlUGFpbnRpbmdPcHRpb25zPiBvcHRpb25zOwor
ICAgIGRlY29kZXIgPj4gb3B0aW9uczsKKyAgICBpZiAoIW9wdGlvbnMpCisgICAgICAgIHJldHVy
biBXVEY6Om51bGxvcHQ7CisKKyAgICByZXR1cm4gRHJhd0ltYWdlQnVmZmVyOjpjcmVhdGUoKnJl
bW90ZVJlc291cmNlSWRlbnRpZmllciwgKmRlc3RpbmF0aW9uLCAqc291cmNlLCAqb3B0aW9ucyk7
Cit9CisjZW5kaWYgLy8gRU5BQkxFKEdQVV9QUk9DRVNTKQorCiBjbGFzcyBEcmF3UGF0dGVybiA6
IHB1YmxpYyBEcmF3aW5nSXRlbSB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFJlZjxEcmF3UGF0dGVy
bj4gY3JlYXRlKEltYWdlJiBpbWFnZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3Qg
RmxvYXRSZWN0JiB0aWxlUmVjdCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBwYXR0ZXJuVHJhbnNm
b3JtLCBjb25zdCBGbG9hdFBvaW50JiBwaGFzZSwgY29uc3QgRmxvYXRTaXplJiBzcGFjaW5nLCBj
b25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgb3B0aW9ucykKQEAgLTI5NzcsNiArMzA0NSwxMSBA
QCB2b2lkIEl0ZW06OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAogICAgIGNhc2UgSXRl
bVR5cGU6OkRyYXdOYXRpdmVJbWFnZToKICAgICAgICAgZW5jb2RlciA8PCBkb3duY2FzdDxEcmF3
TmF0aXZlSW1hZ2U+KCp0aGlzKTsKICAgICAgICAgYnJlYWs7CisjZW5kaWYKKyNpZiBFTkFCTEUo
R1BVX1BST0NFU1MpCisgICAgY2FzZSBJdGVtVHlwZTo6RHJhd0ltYWdlQnVmZmVyOgorICAgICAg
ICBlbmNvZGVyIDw8IGRvd25jYXN0PERyYXdJbWFnZUJ1ZmZlcj4oKnRoaXMpOworICAgICAgICBi
cmVhazsKICNlbmRpZgogICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdQYXR0ZXJuOgogICAgICAgICBl
bmNvZGVyIDw8IGRvd25jYXN0PERyYXdQYXR0ZXJuPigqdGhpcyk7CkBAIC0zMTY5LDYgKzMyNDIs
MTIgQEAgT3B0aW9uYWw8UmVmPEl0ZW0+PiBJdGVtOjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikK
ICAgICAgICAgaWYgKGF1dG8gaXRlbSA9IERyYXdOYXRpdmVJbWFnZTo6ZGVjb2RlKGRlY29kZXIp
KQogICAgICAgICAgICAgcmV0dXJuIHN0YXRpY19yZWZlcmVuY2VfY2FzdDxJdGVtPihXVEZNb3Zl
KCppdGVtKSk7CiAgICAgICAgIGJyZWFrOworI2VuZGlmCisjaWYgRU5BQkxFKEdQVV9QUk9DRVNT
KQorICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdJbWFnZUJ1ZmZlcjoKKyAgICAgICAgaWYgKGF1dG8g
aXRlbSA9IERyYXdJbWFnZUJ1ZmZlcjo6ZGVjb2RlKGRlY29kZXIpKQorICAgICAgICAgICAgcmV0
dXJuIHN0YXRpY19yZWZlcmVuY2VfY2FzdDxJdGVtPihXVEZNb3ZlKCppdGVtKSk7CisgICAgICAg
IGJyZWFrOwogI2VuZGlmCiAgICAgY2FzZSBJdGVtVHlwZTo6RHJhd1BhdHRlcm46CiAgICAgICAg
IGlmIChhdXRvIGl0ZW0gPSBEcmF3UGF0dGVybjo6ZGVjb2RlKGRlY29kZXIpKQpAQCAtMzMyOSw2
ICszNDA4LDkgQEAgU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19ESVNQTEFZTElTVF9JVEVNKERyYXdU
aWxlZFNjYWxlZEltYWdlKQogI2lmIFVTRShDRykgfHwgVVNFKENBSVJPKQogU1BFQ0lBTElaRV9U
WVBFX1RSQUlUU19ESVNQTEFZTElTVF9JVEVNKERyYXdOYXRpdmVJbWFnZSkKICNlbmRpZgorI2lm
IEVOQUJMRShHUFVfUFJPQ0VTUykKK1NQRUNJQUxJWkVfVFlQRV9UUkFJVFNfRElTUExBWUxJU1Rf
SVRFTShEcmF3SW1hZ2VCdWZmZXIpCisjZW5kaWYKIFNQRUNJQUxJWkVfVFlQRV9UUkFJVFNfRElT
UExBWUxJU1RfSVRFTShEcmF3UGF0dGVybikKIFNQRUNJQUxJWkVfVFlQRV9UUkFJVFNfRElTUExB
WUxJU1RfSVRFTShEcmF3UmVjdCkKIFNQRUNJQUxJWkVfVFlQRV9UUkFJVFNfRElTUExBWUxJU1Rf
SVRFTShEcmF3TGluZSkKQEAgLTMzOTAsNiArMzQ3Miw5IEBAIHRlbXBsYXRlPD4gc3RydWN0IEVu
dW1UcmFpdHM8V2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1UeXBlPiB7CiAgICAgV2ViQ29yZTo6
RGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpEcmF3VGlsZWRTY2FsZWRJbWFnZSwKICNpZiBVU0UoQ0cp
IHx8IFVTRShDQUlSTykgfHwgVVNFKERJUkVDVDJEKQogICAgIFdlYkNvcmU6OkRpc3BsYXlMaXN0
OjpJdGVtVHlwZTo6RHJhd05hdGl2ZUltYWdlLAorI2VuZGlmCisjaWYgRU5BQkxFKEdQVV9QUk9D
RVNTKQorICAgIFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtVHlwZTo6RHJhd0ltYWdlQnVmZmVy
LAogI2VuZGlmCiAgICAgV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpEcmF3UGF0dGVy
biwKICAgICBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OkRyYXdSZWN0LApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3Bs
YXlMaXN0UmVjb3JkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlz
cGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIuY3BwCmluZGV4IGRkMzVlZjFhMjhhOS4uYTY0
YTQ0N2E0ZTY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9k
aXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIuY3BwCkBA
IC0zNywxMCArMzcsMTAgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIG5hbWVzcGFjZSBEaXNwbGF5
TGlzdCB7CiAKLVJlY29yZGVyOjpSZWNvcmRlcihHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIERp
c3BsYXlMaXN0JiBkaXNwbGF5TGlzdCwgY29uc3QgR3JhcGhpY3NDb250ZXh0U3RhdGUmIHN0YXRl
LCBjb25zdCBGbG9hdFJlY3QmIGluaXRpYWxDbGlwLCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIGlu
aXRpYWxDVE0sIE9ic2VydmVyKiBvYnNlcnZlcikKK1JlY29yZGVyOjpSZWNvcmRlcihHcmFwaGlj
c0NvbnRleHQmIGNvbnRleHQsIERpc3BsYXlMaXN0JiBkaXNwbGF5TGlzdCwgY29uc3QgR3JhcGhp
Y3NDb250ZXh0U3RhdGUmIHN0YXRlLCBjb25zdCBGbG9hdFJlY3QmIGluaXRpYWxDbGlwLCBjb25z
dCBBZmZpbmVUcmFuc2Zvcm0mIGluaXRpYWxDVE0sIERlbGVnYXRlKiBkZWxlZ2F0ZSkKICAgICA6
IEdyYXBoaWNzQ29udGV4dEltcGwoY29udGV4dCwgaW5pdGlhbENsaXAsIEFmZmluZVRyYW5zZm9y
bSgpKQogICAgICwgbV9kaXNwbGF5TGlzdChkaXNwbGF5TGlzdCkKLSAgICAsIG1fb2JzZXJ2ZXIo
b2JzZXJ2ZXIpCisgICAgLCBtX2RlbGVnYXRlKGRlbGVnYXRlKQogewogICAgIExPR19XSVRIX1NU
UkVBTShEaXNwbGF5TGlzdHMsIHN0cmVhbSA8PCAiXG5SZWNvcmRpbmcgd2l0aCBjbGlwICIgPDwg
aW5pdGlhbENsaXApOwogICAgIG1fc3RhdGVTdGFjay5hcHBlbmQoeyBzdGF0ZSwgaW5pdGlhbENU
TSwgaW5pdGlhbENsaXAgfSk7CkBAIC01MiwxNSArNTIsMTUgQEAgUmVjb3JkZXI6On5SZWNvcmRl
cigpCiAgICAgTE9HKERpc3BsYXlMaXN0cywgIlJlY29yZGVkIGRpc3BsYXkgbGlzdDpcbiVzIiwg
bV9kaXNwbGF5TGlzdC5kZXNjcmlwdGlvbigpLmRhdGEoKSk7CiB9CiAKLXZvaWQgUmVjb3JkZXI6
OnB1dEltYWdlRGF0YShXZWJDb3JlOjpBbHBoYVByZW11bHRpcGxpY2F0aW9uIGlucHV0Rm9ybWF0
LCBjb25zdCBXZWJDb3JlOjpJbWFnZURhdGEmIGltYWdlRGF0YSwgY29uc3QgV2ViQ29yZTo6SW50
UmVjdCYgc3JjUmVjdCwgY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmIGRlc3RQb2ludCwgV2ViQ29y
ZTo6QWxwaGFQcmVtdWx0aXBsaWNhdGlvbiBkZXN0Rm9ybWF0KQordm9pZCBSZWNvcmRlcjo6cHV0
SW1hZ2VEYXRhKEFscGhhUHJlbXVsdGlwbGljYXRpb24gaW5wdXRGb3JtYXQsIGNvbnN0IEltYWdl
RGF0YSYgaW1hZ2VEYXRhLCBjb25zdCBJbnRSZWN0JiBzcmNSZWN0LCBjb25zdCBJbnRQb2ludCYg
ZGVzdFBvaW50LCBBbHBoYVByZW11bHRpcGxpY2F0aW9uIGRlc3RGb3JtYXQpCiB7Ci0gICAgYXBw
ZW5kSXRlbShXZWJDb3JlOjpEaXNwbGF5TGlzdDo6UHV0SW1hZ2VEYXRhOjpjcmVhdGUoaW5wdXRG
b3JtYXQsIGltYWdlRGF0YSwgc3JjUmVjdCwgZGVzdFBvaW50LCBkZXN0Rm9ybWF0KSk7CisgICAg
YXBwZW5kSXRlbShQdXRJbWFnZURhdGE6OmNyZWF0ZShpbnB1dEZvcm1hdCwgaW1hZ2VEYXRhLCBz
cmNSZWN0LCBkZXN0UG9pbnQsIGRlc3RGb3JtYXQpKTsKIH0KIAogdm9pZCBSZWNvcmRlcjo6d2ls
bEFwcGVuZEl0ZW0oY29uc3QgSXRlbSYgaXRlbSkKIHsKLSAgICBpZiAobV9vYnNlcnZlcikKLSAg
ICAgICAgbV9vYnNlcnZlci0+d2lsbEFwcGVuZEl0ZW0oaXRlbSk7CisgICAgaWYgKG1fZGVsZWdh
dGUpCisgICAgICAgIG1fZGVsZWdhdGUtPndpbGxBcHBlbmRJdGVtKGl0ZW0pOwogCiAgICAgaWYg
KGl0ZW0uaXNEcmF3aW5nSXRlbSgpCiAjaWYgVVNFKENHKQpAQCAtMTM5LDYgKzEzOSwxOSBAQCB2
b2lkIFJlY29yZGVyOjpkcmF3TmF0aXZlSW1hZ2UoY29uc3QgTmF0aXZlSW1hZ2VQdHImIGltYWdl
LCBjb25zdCBGbG9hdFNpemUmIGltYQogfQogI2VuZGlmCiAKK2Jvb2wgUmVjb3JkZXI6OmRyYXdJ
bWFnZUJ1ZmZlcihJbWFnZUJ1ZmZlciYgaW1hZ2UsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdGluYXRp
b24sIGNvbnN0IEZsb2F0UmVjdCYgc291cmNlLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYg
b3B0aW9ucykKK3sKKyAgICBpZiAoIW1fZGVsZWdhdGUpCisgICAgICAgIHJldHVybiBmYWxzZTsK
KworICAgIGlmIChhdXRvIGl0ZW0gPSBtX2RlbGVnYXRlLT5jcmVhdGVEcmF3SW1hZ2VCdWZmZXJJ
dGVtKGltYWdlLCBkZXN0aW5hdGlvbiwgc291cmNlLCBvcHRpb25zKSkgeworICAgICAgICBhcHBl
bmRJdGVtQW5kVXBkYXRlRXh0ZW50KHN0YXRpY19yZWZlcmVuY2VfY2FzdDxEcmF3aW5nSXRlbT4o
aXRlbS5yZWxlYXNlTm9uTnVsbCgpKSk7CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKwor
ICAgIHJldHVybiBmYWxzZTsKK30KKwogdm9pZCBSZWNvcmRlcjo6ZHJhd1BhdHRlcm4oSW1hZ2Um
IGltYWdlLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHRpbGVS
ZWN0LCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIHBhdHRlcm5UcmFuc2Zvcm0sIGNvbnN0IEZsb2F0
UG9pbnQmIHBoYXNlLCBjb25zdCBGbG9hdFNpemUmIHNwYWNpbmcsIGNvbnN0IEltYWdlUGFpbnRp
bmdPcHRpb25zJiBvcHRpb25zKQogewogICAgIGFwcGVuZEl0ZW1BbmRVcGRhdGVFeHRlbnQoRHJh
d1BhdHRlcm46OmNyZWF0ZShpbWFnZSwgZGVzdFJlY3QsIHRpbGVSZWN0LCBwYXR0ZXJuVHJhbnNm
b3JtLCBwaGFzZSwgc3BhY2luZywgb3B0aW9ucykpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIuaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlz
dFJlY29yZGVyLmgKaW5kZXggOWVlMWQzOTM4ZjIzLi5lNjA0ZDdjZmU5OWQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlz
dFJlY29yZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxh
eWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIuaApAQCAtMjgsNiArMjgsNyBAQAogI2luY2x1ZGUg
IkRpc3BsYXlMaXN0LmgiCiAjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0SW1wbC5oIgogI2luY2x1
ZGUgIkltYWdlLmgiIC8vIEZvciBJbWFnZTo6VGlsZVJ1bGUuCisjaW5jbHVkZSAiUmVtb3RlUmVz
b3VyY2VJZGVudGlmaWVyLmgiCiAjaW5jbHVkZSAiVGV4dEZsYWdzLmgiCiAjaW5jbHVkZSA8d3Rm
L05vbmNvcHlhYmxlLmg+CiAKQEAgLTUzLDggKzU0LDggQEAgY2xhc3MgUmVjb3JkZXIgOiBwdWJs
aWMgR3JhcGhpY3NDb250ZXh0SW1wbCB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiAg
ICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoUmVjb3JkZXIpOwogcHVibGljOgotICAgIGNsYXNzIE9i
c2VydmVyOwotICAgIFdFQkNPUkVfRVhQT1JUIFJlY29yZGVyKEdyYXBoaWNzQ29udGV4dCYsIERp
c3BsYXlMaXN0JiwgY29uc3QgR3JhcGhpY3NDb250ZXh0U3RhdGUmLCBjb25zdCBGbG9hdFJlY3Qm
IGluaXRpYWxDbGlwLCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mLCBPYnNlcnZlciogPSBudWxscHRy
KTsKKyAgICBjbGFzcyBEZWxlZ2F0ZTsKKyAgICBXRUJDT1JFX0VYUE9SVCBSZWNvcmRlcihHcmFw
aGljc0NvbnRleHQmLCBEaXNwbGF5TGlzdCYsIGNvbnN0IEdyYXBoaWNzQ29udGV4dFN0YXRlJiwg
Y29uc3QgRmxvYXRSZWN0JiBpbml0aWFsQ2xpcCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiwgRGVs
ZWdhdGUqID0gbnVsbHB0cik7CiAgICAgV0VCQ09SRV9FWFBPUlQgdmlydHVhbCB+UmVjb3JkZXIo
KTsKIAogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgcHV0SW1hZ2VEYXRhKEFscGhhUHJlbXVsdGlw
bGljYXRpb24gaW5wdXRGb3JtYXQsIGNvbnN0IEltYWdlRGF0YSYsIGNvbnN0IEludFJlY3QmIHNy
Y1JlY3QsIGNvbnN0IEludFBvaW50JiBkZXN0UG9pbnQsIEFscGhhUHJlbXVsdGlwbGljYXRpb24g
ZGVzdEZvcm1hdCk7CkBAIC02Myw5ICs2NCwxMCBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGFwcGVu
ZEl0ZW1BbmRVcGRhdGVFeHRlbnQoUmVmPERyYXdpbmdJdGVtPiYmKTsKIAotICAgIGNsYXNzIE9i
c2VydmVyIHsKKyAgICBjbGFzcyBEZWxlZ2F0ZSB7CiAgICAgcHVibGljOgotICAgICAgICB2aXJ0
dWFsIH5PYnNlcnZlcigpIHsgfQorICAgICAgICB2aXJ0dWFsIH5EZWxlZ2F0ZSgpIHsgfQorICAg
ICAgICB2aXJ0dWFsIFJlZlB0cjxJdGVtPiBjcmVhdGVEcmF3SW1hZ2VCdWZmZXJJdGVtKEltYWdl
QnVmZmVyJiwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgSW1hZ2VQ
YWludGluZ09wdGlvbnMmKSB7IHJldHVybiBudWxscHRyOyB9CiAgICAgICAgIHZpcnR1YWwgdm9p
ZCB3aWxsQXBwZW5kSXRlbShjb25zdCBJdGVtJikgeyB9OwogICAgIH07CiAKQEAgLTEwNyw2ICsx
MDksNyBAQCBwcml2YXRlOgogI2lmIFVTRShDRykgfHwgVVNFKENBSVJPKSB8fCBVU0UoRElSRUNU
MkQpCiAgICAgdm9pZCBkcmF3TmF0aXZlSW1hZ2UoY29uc3QgTmF0aXZlSW1hZ2VQdHImLCBjb25z
dCBGbG9hdFNpemUmIHNlbGZTaXplLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBG
bG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJikgb3ZlcnJpZGU7
CiAjZW5kaWYKKyAgICBib29sIGRyYXdJbWFnZUJ1ZmZlcihJbWFnZUJ1ZmZlciYsIGNvbnN0IEZs
b2F0UmVjdCYgZGVzdGluYXRpb24sIGNvbnN0IEZsb2F0UmVjdCYgc291cmNlLCBjb25zdCBJbWFn
ZVBhaW50aW5nT3B0aW9ucyYpIG92ZXJyaWRlOwogICAgIHZvaWQgZHJhd1BhdHRlcm4oSW1hZ2Um
LCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNv
bnN0IEFmZmluZVRyYW5zZm9ybSYsIGNvbnN0IEZsb2F0UG9pbnQmIHBoYXNlLCBjb25zdCBGbG9h
dFNpemUmIHNwYWNpbmcsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJikgb3ZlcnJpZGU7CiAK
ICAgICB2b2lkIGRyYXdSZWN0KGNvbnN0IEZsb2F0UmVjdCYsIGZsb2F0IGJvcmRlclRoaWNrbmVz
cykgb3ZlcnJpZGU7CkBAIC0xODgsNyArMTkxLDcgQEAgcHJpdmF0ZToKICAgICBDb250ZXh0U3Rh
dGUmIGN1cnJlbnRTdGF0ZSgpOwogCiAgICAgRGlzcGxheUxpc3QmIG1fZGlzcGxheUxpc3Q7Ci0g
ICAgT2JzZXJ2ZXIqIG1fb2JzZXJ2ZXI7CisgICAgRGVsZWdhdGUqIG1fZGVsZWdhdGU7CiAKICAg
ICBWZWN0b3I8Q29udGV4dFN0YXRlLCAzMj4gbV9zdGF0ZVN0YWNrOwogfTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvY2Fpcm8vTmljb3NpYUNh
aXJvT3BlcmF0aW9uUmVjb3JkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3Mvbmljb3NpYS9jYWlyby9OaWNvc2lhQ2Fpcm9PcGVyYXRpb25SZWNvcmRlci5jcHAKaW5kZXgg
MzA0ZmFjYmFiMTUyLi40ZTI0ZWViYWRiNjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL25pY29zaWEvY2Fpcm8vTmljb3NpYUNhaXJvT3BlcmF0aW9uUmVjb3Jk
ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvY2Fp
cm8vTmljb3NpYUNhaXJvT3BlcmF0aW9uUmVjb3JkZXIuY3BwCkBAIC01NzAsNiArNTcwLDEyIEBA
IHZvaWQgQ2Fpcm9PcGVyYXRpb25SZWNvcmRlcjo6ZHJhd05hdGl2ZUltYWdlKGNvbnN0IE5hdGl2
ZUltYWdlUHRyJiBpbWFnZSwgY29uc3QKICAgICBhcHBlbmQoY3JlYXRlQ29tbWFuZDxEcmF3TmF0
aXZlSW1hZ2U+KFJlZlB0cjxjYWlyb19zdXJmYWNlX3Q+KGltYWdlLmdldCgpKSwgZGVzdFJlY3Qs
IHNyY1JlY3QsIEltYWdlUGFpbnRpbmdPcHRpb25zKG9wdGlvbnMsIHN0YXRlLmltYWdlSW50ZXJw
b2xhdGlvblF1YWxpdHkpLCBzdGF0ZS5hbHBoYSwgQ2Fpcm86OlNoYWRvd1N0YXRlKHN0YXRlKSkp
OwogfQogCitib29sIENhaXJvT3BlcmF0aW9uUmVjb3JkZXI6OmRyYXdJbWFnZUJ1ZmZlcihJbWFn
ZUJ1ZmZlciYsIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IEltYWdl
UGFpbnRpbmdPcHRpb25zJikKK3sKKyAgICAvLyBGSVhNRTogTm90IGltcGxlbWVudGVkLgorICAg
IHJldHVybiBmYWxzZTsKK30KKwogdm9pZCBDYWlyb09wZXJhdGlvblJlY29yZGVyOjpkcmF3UGF0
dGVybihJbWFnZSYgaW1hZ2UsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0
UmVjdCYgdGlsZVJlY3QsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgcGF0dGVyblRyYW5zZm9ybSwg
Y29uc3QgRmxvYXRQb2ludCYgcGhhc2UsIGNvbnN0IEZsb2F0U2l6ZSYgc3BhY2luZywgY29uc3Qg
SW1hZ2VQYWludGluZ09wdGlvbnMmIG9wdGlvbnMpCiB7CiAgICAgc3RydWN0IERyYXdQYXR0ZXJu
IGZpbmFsIDogUGFpbnRpbmdPcGVyYXRpb24sIE9wZXJhdGlvbkRhdGE8UmVmUHRyPGNhaXJvX3N1
cmZhY2VfdD4sIEludFNpemUsIEZsb2F0UmVjdCwgRmxvYXRSZWN0LCBBZmZpbmVUcmFuc2Zvcm0s
IEZsb2F0UG9pbnQsIEltYWdlUGFpbnRpbmdPcHRpb25zPiB7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lhL2NhaXJvL05pY29zaWFDYWlyb09wZXJh
dGlvblJlY29yZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lh
L2NhaXJvL05pY29zaWFDYWlyb09wZXJhdGlvblJlY29yZGVyLmgKaW5kZXggNTcyZmYyMTY2ZjZl
Li4zODA5M2Q0MTM1YjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL25pY29zaWEvY2Fpcm8vTmljb3NpYUNhaXJvT3BlcmF0aW9uUmVjb3JkZXIuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lhL2NhaXJvL05pY29zaWFDYWly
b09wZXJhdGlvblJlY29yZGVyLmgKQEAgLTY3LDYgKzY3LDggQEAgcHJpdmF0ZToKICAgICBXZWJD
b3JlOjpJbWFnZURyYXdSZXN1bHQgZHJhd0ltYWdlKFdlYkNvcmU6OkltYWdlJiwgY29uc3QgV2Vi
Q29yZTo6RmxvYXRSZWN0JiwgY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0JiwgY29uc3QgV2ViQ29y
ZTo6SW1hZ2VQYWludGluZ09wdGlvbnMmKSBvdmVycmlkZTsKICAgICBXZWJDb3JlOjpJbWFnZURy
YXdSZXN1bHQgZHJhd1RpbGVkSW1hZ2UoV2ViQ29yZTo6SW1hZ2UmLCBjb25zdCBXZWJDb3JlOjpG
bG9hdFJlY3QmLCBjb25zdCBXZWJDb3JlOjpGbG9hdFBvaW50JiwgY29uc3QgV2ViQ29yZTo6Rmxv
YXRTaXplJiwgY29uc3QgV2ViQ29yZTo6RmxvYXRTaXplJiwgY29uc3QgV2ViQ29yZTo6SW1hZ2VQ
YWludGluZ09wdGlvbnMmKSBvdmVycmlkZTsKICAgICBXZWJDb3JlOjpJbWFnZURyYXdSZXN1bHQg
ZHJhd1RpbGVkSW1hZ2UoV2ViQ29yZTo6SW1hZ2UmLCBjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3Qm
LCBjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmLCBjb25zdCBXZWJDb3JlOjpGbG9hdFNpemUmLCBX
ZWJDb3JlOjpJbWFnZTo6VGlsZVJ1bGUsIFdlYkNvcmU6OkltYWdlOjpUaWxlUnVsZSwgY29uc3Qg
V2ViQ29yZTo6SW1hZ2VQYWludGluZ09wdGlvbnMmKSBvdmVycmlkZTsKKworICAgIGJvb2wgZHJh
d0ltYWdlQnVmZmVyKFdlYkNvcmU6OkltYWdlQnVmZmVyJiwgY29uc3QgV2ViQ29yZTo6RmxvYXRS
ZWN0JiBkZXN0aW5hdGlvbiwgY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0JiBzb3VyY2UsIGNvbnN0
IFdlYkNvcmU6OkltYWdlUGFpbnRpbmdPcHRpb25zJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBkcmF3
TmF0aXZlSW1hZ2UoY29uc3QgV2ViQ29yZTo6TmF0aXZlSW1hZ2VQdHImLCBjb25zdCBXZWJDb3Jl
OjpGbG9hdFNpemUmLCBjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmLCBjb25zdCBXZWJDb3JlOjpG
bG9hdFJlY3QmLCBjb25zdCBXZWJDb3JlOjpJbWFnZVBhaW50aW5nT3B0aW9ucyYpIG92ZXJyaWRl
OwogICAgIHZvaWQgZHJhd1BhdHRlcm4oV2ViQ29yZTo6SW1hZ2UmLCBjb25zdCBXZWJDb3JlOjpG
bG9hdFJlY3QmLCBjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmLCBjb25zdCBXZWJDb3JlOjpBZmZp
bmVUcmFuc2Zvcm0mLCBjb25zdCBXZWJDb3JlOjpGbG9hdFBvaW50JiwgY29uc3QgV2ViQ29yZTo6
RmxvYXRTaXplJiwgY29uc3QgV2ViQ29yZTo6SW1hZ2VQYWludGluZ09wdGlvbnMmKSBvdmVycmlk
ZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0
L0NoYW5nZUxvZwppbmRleCA4MDMyZDA3NWQ2NjMuLmZmOWRhMzI2NTY1MyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAg
LTEsMyArMSwyOCBAQAorMjAyMC0xMC0xMCAgU2FpZCBBYm91LUhhbGxhd2EgIDxzYWJvdWhhbGxh
d2FAYXBwbGUuY29tPgorCisgICAgICAgIFtHUFUgUHJvY2Vzc10gSW1wbGVtZW50IERpc3BsYXlM
aXN0OjpEcmF3SW1hZ2VCdWZmZXIgaXRlbQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MjE3NTY2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgKiBHUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUltYWdlQnVmZmVy
UHJveHkuaDoKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlSW1hZ2VCdWZmZXJQcm94eTo6YXBwbHkp
OgorICAgICAgICAqIEdQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZFBy
b3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5Ojph
cHBseVJlc291cmNlSXRlbSk6CisgICAgICAgICogR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVS
ZW5kZXJpbmdCYWNrZW5kUHJveHkuaDoKKyAgICAgICAgKiBHUFVQcm9jZXNzL2dyYXBoaWNzL1Jl
bW90ZVJlc291cmNlQ2FjaGVQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVJlc291
cmNlQ2FjaGVQcm94eTo6UmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5KToKKyAgICAgICAgKFdlYktp
dDo6UmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5OjpkcmF3SW1hZ2VCdWZmZXJJdGVtIGNvbnN0KToK
KyAgICAgICAgKFdlYktpdDo6UmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5OjphcHBseVJlc291cmNl
SXRlbSBjb25zdCk6CisgICAgICAgICogR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZXNvdXJj
ZUNhY2hlUHJveHkuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVJ
bWFnZUJ1ZmZlci5oOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVJbWFnZUJ1ZmZlcjo6flJlbW90
ZUltYWdlQnVmZmVyKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVS
ZW5kZXJpbmdCYWNrZW5kLmNwcDoKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlUmVuZGVyaW5nQmFj
a2VuZDo6Y3JlYXRlRHJhd0ltYWdlQnVmZmVySXRlbSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9H
UFUvZ3JhcGhpY3MvUmVtb3RlUmVzb3VyY2VDYWNoZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlJl
bW90ZVJlc291cmNlQ2FjaGU6OmNyZWF0ZURyYXdJbWFnZUJ1ZmZlckl0ZW0pOgorICAgICAgICAq
IFdlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZVJlc291cmNlQ2FjaGUuaDoKKwogMjAyMC0x
MC0xMCAgU2FpZCBBYm91LUhhbGxhd2EgIDxzYWJvdWhhbGxhd2FAYXBwbGUuY29tPgogCiAgICAg
ICAgIFtHUFUgUHJvY2Vzc10gSW50cm9kdWNlIFJlbW90ZVJlc291cmNlQ2FjaGUgdG8gbWFuYWdl
IHRoZSByZW1vdGUgcmVzb3VyY2VzIGluIFdlYiBQcm9jZXNzCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlSW1hZ2VCdWZmZXJQcm94eS5oIGIvU291
cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUltYWdlQnVmZmVyUHJveHkuaApp
bmRleCA2MTQ1ODZjYTU3ZTAuLjFkMWI1ZWU4ZmNmMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUltYWdlQnVmZmVyUHJveHkuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlSW1hZ2VCdWZmZXJQcm94eS5oCkBA
IC04Myw3ICs4Myw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAg
ICAgfQogCi0gICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgcmV0dXJuIG1fcmVtb3RlUmVu
ZGVyaW5nQmFja2VuZFByb3h5LmFwcGx5UmVzb3VyY2VJdGVtKGl0ZW0sIGNvbnRleHQpOwogICAg
IH0KIAogICAgIHZvaWQgYXBwbHkoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OlBhaW50RnJhbWVGb3JN
ZWRpYSYgaXRlbSwgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0JiBjb250ZXh0KQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tl
bmRQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVu
ZGVyaW5nQmFja2VuZFByb3h5LmNwcAppbmRleCAyNWQ0NTMxMGE5ZDkuLmNhMzI2MjQzMjE3NyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRl
cmluZ0JhY2tlbmRQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBo
aWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS5jcHAKQEAgLTcxLDYgKzcxLDExIEBAIHVp
bnQ2NF90IFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eTo6bWVzc2FnZVNlbmRlckRlc3RpbmF0
aW9uSUQoKSBjb25zdAogICAgIHJldHVybiBtX3JlbmRlcmluZ0JhY2tlbmRJZGVudGlmaWVyLnRv
VUludDY0KCk7CiB9CiAKK2Jvb2wgUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5OjphcHBseVJl
c291cmNlSXRlbShEaXNwbGF5TGlzdDo6SXRlbSYgaXRlbSwgR3JhcGhpY3NDb250ZXh0JiBjb250
ZXh0KQoreworICAgIHJldHVybiBtX3JlbW90ZVJlc291cmNlQ2FjaGVQcm94eS5hcHBseVJlc291
cmNlSXRlbShpdGVtLCBjb250ZXh0KTsKK30KKwogdm9pZCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5k
UHJveHk6OnJlbW90ZUNyZWF0ZUltYWdlQnVmZmVyQmFja2VuZChjb25zdCBGbG9hdFNpemUmIGxv
Z2ljYWxTaXplLCBjb25zdCBJbnRTaXplJiBiYWNrZW5kU2l6ZSwgZmxvYXQgcmVzb2x1dGlvblNj
YWxlLCBDb2xvclNwYWNlIGNvbG9yU3BhY2UsIEltYWdlQnVmZmVyQmFja2VuZEhhbmRsZSBoYW5k
bGUsIFJlbW90ZVJlc291cmNlSWRlbnRpZmllciByZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIpCiB7
CiAgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6Q3JlYXRlSW1hZ2VC
dWZmZXJCYWNrZW5kKGxvZ2ljYWxTaXplLCBiYWNrZW5kU2l6ZSwgcmVzb2x1dGlvblNjYWxlLCBj
b2xvclNwYWNlLCBXVEZNb3ZlKGhhbmRsZSksIHJlbW90ZVJlc291cmNlSWRlbnRpZmllciksIG1f
cmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9H
UFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlc291cmNlQ2FjaGVQcm94eS5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5LmNwcApp
bmRleCA5Y2YyMDM5YjgxZGEuLjllOWI4NGM2NzBlOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlc291cmNlQ2FjaGVQcm94eS5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlc291cmNlQ2FjaGVQcm94
eS5jcHAKQEAgLTg2LDYgKzg2LDI0IEBAIFJlZlB0cjxJbWFnZURhdGE+IFJlbW90ZVJlc291cmNl
Q2FjaGVQcm94eTo6Z2V0SW1hZ2VEYXRhKEFscGhhUHJlbXVsdGlwbGljYXRpb24KICAgICByZXR1
cm4gbnVsbHB0cjsKIH0KIAorYm9vbCBSZW1vdGVSZXNvdXJjZUNhY2hlUHJveHk6OmRyYXdJbWFn
ZUJ1ZmZlckl0ZW0oY29uc3QgRGlzcGxheUxpc3Q6Okl0ZW0mIGl0ZW0sIEdyYXBoaWNzQ29udGV4
dCYgY29udGV4dCkgY29uc3QKK3sKKyAgICBhdXRvJiBkcmF3SXRlbSA9IHN0YXRpY19jYXN0PGNv
bnN0IERpc3BsYXlMaXN0OjpEcmF3SW1hZ2VCdWZmZXImPihpdGVtKTsKKyAgICBhdXRvIGltYWdl
ID0gbV9yZW1vdGVJbWFnZUJ1ZmZlckhhc2hNYXAuZ2V0KGRyYXdJdGVtLnJlbW90ZVJlc291cmNl
SWRlbnRpZmllcigpKTsKKyAgICBpZiAoIWltYWdlKQorICAgICAgICByZXR1cm4gZmFsc2U7CisK
KyAgICBpbWFnZS0+ZHJhdyhjb250ZXh0LCBkcmF3SXRlbS5kZXN0aW5hdGlvblJlY3QoKSwgZHJh
d0l0ZW0uc291cmNlKCksIGRyYXdJdGVtLm9wdGlvbnMoKSk7CisgICAgcmV0dXJuIHRydWU7Cit9
CisKK2Jvb2wgUmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5OjphcHBseVJlc291cmNlSXRlbShjb25z
dCBEaXNwbGF5TGlzdDo6SXRlbSYgaXRlbSwgR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0KSBjb25z
dAoreworICAgIGlmIChpdGVtLnR5cGUoKSA9PSBEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OkRyYXdJ
bWFnZUJ1ZmZlcikKKyAgICAgICAgcmV0dXJuIGRyYXdJbWFnZUJ1ZmZlckl0ZW0oaXRlbSwgY29u
dGV4dCk7CisgICAgcmV0dXJuIGZhbHNlOworfQorCiB2b2lkIFJlbW90ZVJlc291cmNlQ2FjaGVQ
cm94eTo6cmVsZWFzZVJlbW90ZVJlc291cmNlKFJlbW90ZVJlc291cmNlSWRlbnRpZmllciByZW1v
dGVSZXNvdXJjZUlkZW50aWZpZXIpCiB7CiAgICAgaWYgKG1fcmVtb3RlSW1hZ2VCdWZmZXJIYXNo
TWFwLnJlbW92ZShyZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIpKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlc291cmNlQ2FjaGVQcm94eS5oIGIv
U291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlc291cmNlQ2FjaGVQcm94
eS5oCmluZGV4IGM3ODg2MWVjMTc0Ny4uMmM1MzAxZDAyZWVlIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5LmgKKysr
IGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlc291cmNlQ2FjaGVQ
cm94eS5oCkBAIC01MCwxMSArNTAsMTUgQEAgcHVibGljOgogICAgIFdlYkNvcmU6OkltYWdlQnVm
ZmVyKiBmbHVzaERyYXdpbmdDb250ZXh0QW5kQ29tbWl0KGNvbnN0IFdlYkNvcmU6OkRpc3BsYXlM
aXN0OjpEaXNwbGF5TGlzdCYsIFdlYkNvcmU6OlJlbW90ZVJlc291cmNlSWRlbnRpZmllcik7CiAg
ICAgUmVmUHRyPFdlYkNvcmU6OkltYWdlRGF0YT4gZ2V0SW1hZ2VEYXRhKFdlYkNvcmU6OkFscGhh
UHJlbXVsdGlwbGljYXRpb24gb3V0cHV0Rm9ybWF0LCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiBz
cmNSZWN0LCBXZWJDb3JlOjpSZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIpIGNvbnN0OwogCisgICAg
Ym9vbCBhcHBseVJlc291cmNlSXRlbShjb25zdCBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbSYs
IFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dCYpIGNvbnN0OworCiAgICAgdm9pZCByZWxlYXNlUmVt
b3RlUmVzb3VyY2UoV2ViQ29yZTo6UmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyKTsKIAogcHJpdmF0
ZToKICAgICB1c2luZyBSZW1vdGVJbWFnZUJ1ZmZlckhhc2hNYXAgPSBIYXNoTWFwPFdlYkNvcmU6
OlJlbW90ZVJlc291cmNlSWRlbnRpZmllciwgc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6OkltYWdl
QnVmZmVyPj47CiAKKyAgICBib29sIGRyYXdJbWFnZUJ1ZmZlckl0ZW0oY29uc3QgV2ViQ29yZTo6
RGlzcGxheUxpc3Q6Okl0ZW0mLCBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQmKSBjb25zdDsKKwog
ICAgIFJlbW90ZUltYWdlQnVmZmVySGFzaE1hcCBtX3JlbW90ZUltYWdlQnVmZmVySGFzaE1hcDsK
ICAgICBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkmIG1fcmVtb3RlUmVuZGVyaW5nQmFja2Vu
ZFByb3h5OwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3Jh
cGhpY3MvUmVtb3RlSW1hZ2VCdWZmZXIuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUv
Z3JhcGhpY3MvUmVtb3RlSW1hZ2VCdWZmZXIuaAppbmRleCBhZmEwNmY4NGZlZWQuLjA4YTFkZWFl
YTBhNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9S
ZW1vdGVJbWFnZUJ1ZmZlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3Jh
cGhpY3MvUmVtb3RlSW1hZ2VCdWZmZXIuaApAQCAtMzcsNyArMzcsNyBAQCBuYW1lc3BhY2UgV2Vi
S2l0IHsKIGNsYXNzIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ7CiAKIHRlbXBsYXRlPHR5cGVuYW1l
IEJhY2tlbmRUeXBlPgotY2xhc3MgUmVtb3RlSW1hZ2VCdWZmZXIgOiBwdWJsaWMgV2ViQ29yZTo6
RGlzcGxheUxpc3Q6OkltYWdlQnVmZmVyPEJhY2tlbmRUeXBlPiwgcHVibGljIFJlbW90ZUltYWdl
QnVmZmVyTWVzc2FnZUhhbmRsZXIgeworY2xhc3MgUmVtb3RlSW1hZ2VCdWZmZXIgOiBwdWJsaWMg
V2ViQ29yZTo6RGlzcGxheUxpc3Q6OkltYWdlQnVmZmVyPEJhY2tlbmRUeXBlPiwgcHVibGljIFJl
bW90ZUltYWdlQnVmZmVyTWVzc2FnZUhhbmRsZXIsIHB1YmxpYyBXZWJDb3JlOjpEaXNwbGF5TGlz
dDo6UmVjb3JkZXI6OkRlbGVnYXRlIHsKICAgICB1c2luZyBCYXNlRGlzcGxheUxpc3RJbWFnZUJ1
ZmZlciA9IFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJbWFnZUJ1ZmZlcjxCYWNrZW5kVHlwZT47CiAg
ICAgdXNpbmcgQmFzZURpc3BsYXlMaXN0SW1hZ2VCdWZmZXI6Om1fYmFja2VuZDsKICAgICB1c2lu
ZyBCYXNlRGlzcGxheUxpc3RJbWFnZUJ1ZmZlcjo6bV9kcmF3aW5nQ29udGV4dDsKQEAgLTU2LDEz
ICs1NiwxNCBAQCBwdWJsaWM6CiAgICAgICAgIGlmICghbV9yZW1vdGVSZW5kZXJpbmdCYWNrZW5k
KQogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICBmbHVzaERyYXdpbmdDb250ZXh0KCk7Cisg
ICAgICAgIG1fcmVtb3RlUmVuZGVyaW5nQmFja2VuZC0+cmVsZWFzZUltYWdlQnVmZmVyKCp0aGlz
KTsKICAgICB9CiAKICAgICBXZWJDb3JlOjpSZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIgcmVtb3Rl
UmVzb3VyY2VJZGVudGlmaWVyKCkgY29uc3QgeyByZXR1cm4gbV9yZW1vdGVSZXNvdXJjZUlkZW50
aWZpZXI7IH0KIAogcHJvdGVjdGVkOgogICAgIFJlbW90ZUltYWdlQnVmZmVyKGNvbnN0IFdlYkNv
cmU6OkZsb2F0U2l6ZSYgc2l6ZSwgV2ViQ29yZTo6UmVuZGVyaW5nTW9kZSByZW5kZXJpbmdNb2Rl
LCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIFdlYkNvcmU6OkNvbG9yU3BhY2UgY29sb3JTcGFjZSwg
UmVtb3RlUmVuZGVyaW5nQmFja2VuZCYgcmVtb3RlUmVuZGVyaW5nQmFja2VuZCkKLSAgICAgICAg
OiBCYXNlRGlzcGxheUxpc3RJbWFnZUJ1ZmZlcihzaXplKQorICAgICAgICA6IEJhc2VEaXNwbGF5
TGlzdEltYWdlQnVmZmVyKHNpemUsIHRoaXMpCiAgICAgICAgICwgbV9yZW1vdGVSZW5kZXJpbmdC
YWNrZW5kKG1ha2VXZWFrUHRyKHJlbW90ZVJlbmRlcmluZ0JhY2tlbmQpKQogICAgIHsKICAgICAg
ICAgbV9yZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIgPSBtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmQt
PnJlbW90ZUNyZWF0ZUltYWdlQnVmZmVyKHNpemUsIHJlbmRlcmluZ01vZGUsIHJlc29sdXRpb25T
Y2FsZSwgY29sb3JTcGFjZSk7CkBAIC0xMjgsNiArMTI5LDEzIEBAIHByb3RlY3RlZDoKICAgICAg
ICAgbV9kcmF3aW5nQ29udGV4dC5yZWNvcmRlcigpLnB1dEltYWdlRGF0YShpbnB1dEZvcm1hdCwg
aW1hZ2VEYXRhLCBzcmNSZWN0LCBkZXN0UG9pbnQsIGRlc3RGb3JtYXQpOwogICAgIH0KIAorICAg
IFJlZlB0cjxXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbT4gY3JlYXRlRHJhd0ltYWdlQnVmZmVy
SXRlbShXZWJDb3JlOjpJbWFnZUJ1ZmZlciYgaW1hZ2UsIGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVj
dCYgZGVzdFJlY3QsIGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgV2Vi
Q29yZTo6SW1hZ2VQYWludGluZ09wdGlvbnMmIG9wdGlvbnMpIG92ZXJyaWRlCisgICAgeworICAg
ICAgICBpZiAoIW1fcmVtb3RlUmVuZGVyaW5nQmFja2VuZCkKKyAgICAgICAgICAgIHJldHVybiBu
dWxscHRyOworICAgICAgICByZXR1cm4gbV9yZW1vdGVSZW5kZXJpbmdCYWNrZW5kLT5jcmVhdGVE
cmF3SW1hZ2VCdWZmZXJJdGVtKGltYWdlLCBkZXN0UmVjdCwgc3JjUmVjdCwgb3B0aW9ucywgbV9y
ZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIpOworICAgIH0KKwogICAgIHZvaWQgd2lsbEFwcGVuZEl0
ZW0oY29uc3QgV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW0mKSBvdmVycmlkZQogICAgIHsKICAg
ICAgICAgY29uc3RleHByIHNpemVfdCBEaXNwbGF5TGlzdEJhdGNoU2l6ZSA9IDUxMjsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlUmVuZGVy
aW5nQmFja2VuZC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1Jl
bW90ZVJlbmRlcmluZ0JhY2tlbmQuY3BwCmluZGV4IGM0OThjZmEwZDYxMi4uMWEwNGE5ZTQ1YTlk
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90
ZVJlbmRlcmluZ0JhY2tlbmQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUv
Z3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5jcHAKQEAgLTk2LDYgKzk2LDExIEBAIHZv
aWQgUmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6cmVsZWFzZUltYWdlQnVmZmVyKEltYWdlQnVmZmVy
JiBpbWFnZSkKICAgICBtX3JlbW90ZVJlc291cmNlQ2FjaGUucmVsZWFzZUltYWdlQnVmZmVyKGlt
YWdlKTsKIH0KIAorUmVmUHRyPERpc3BsYXlMaXN0OjpJdGVtPiBSZW1vdGVSZW5kZXJpbmdCYWNr
ZW5kOjpjcmVhdGVEcmF3SW1hZ2VCdWZmZXJJdGVtKEltYWdlQnVmZmVyJiBpbWFnZSwgY29uc3Qg
RmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBJbWFn
ZVBhaW50aW5nT3B0aW9ucyYgb3B0aW9ucywgUmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyIHJlbW90
ZUNsaWVudElkZW50aWZpZXIpCit7CisgICAgcmV0dXJuIG1fcmVtb3RlUmVzb3VyY2VDYWNoZS5j
cmVhdGVEcmF3SW1hZ2VCdWZmZXJJdGVtKGltYWdlLCBkZXN0UmVjdCwgc3JjUmVjdCwgb3B0aW9u
cywgcmVtb3RlQ2xpZW50SWRlbnRpZmllcik7Cit9CisKIHZvaWQgUmVtb3RlUmVuZGVyaW5nQmFj
a2VuZDo6cmVsZWFzZVJlbW90ZUNsaWVudChSZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIgcmVtb3Rl
Q2xpZW50SWRlbnRpZmllcikKIHsKICAgICBtX3JlbW90ZVJlc291cmNlQ2FjaGUucmVsZWFzZVJl
bW90ZUNsaWVudChyZW1vdGVDbGllbnRJZGVudGlmaWVyKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlUmVzb3VyY2VDYWNoZS5jcHAgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZVJlc291cmNlQ2FjaGUu
Y3BwCmluZGV4IDg1YmYyN2YzZjAyYi4uMGE4NmMxN2UzYWVhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZVJlc291cmNlQ2FjaGUuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlUmVzb3VyY2VD
YWNoZS5jcHAKQEAgLTc0LDYgKzc0LDE2IEBAIHZvaWQgUmVtb3RlUmVzb3VyY2VDYWNoZTo6Y29t
bWl0SW1hZ2VCdWZmZXJGbHVzaENvbnRleHQoSW1hZ2VCdWZmZXJGbHVzaElkZW50aWZpCiAgICAg
ICAgIGltYWdlQnVmZmVyLT5jb21taXRGbHVzaENvbnRleHQoZmx1c2hJZGVudGlmaWVyKTsKIH0K
IAorUmVmUHRyPFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtPiBSZW1vdGVSZXNvdXJjZUNhY2hl
OjpjcmVhdGVEcmF3SW1hZ2VCdWZmZXJJdGVtKFdlYkNvcmU6OkltYWdlQnVmZmVyJiBpbWFnZSwg
Y29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgV2ViQ29yZTo6RmxvYXRS
ZWN0JiBzcmNSZWN0LCBjb25zdCBXZWJDb3JlOjpJbWFnZVBhaW50aW5nT3B0aW9ucyYgb3B0aW9u
cywgUmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyIHJlbW90ZUNsaWVudElkZW50aWZpZXIpCit7Cisg
ICAgYXV0byByZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIgPSBmaW5kSW1hZ2VCdWZmZXJGb3JDbGll
bnQoaW1hZ2UsIHJlbW90ZUNsaWVudElkZW50aWZpZXIpOworICAgIGlmICghcmVtb3RlUmVzb3Vy
Y2VJZGVudGlmaWVyKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAvLyBGbHVzaCB0aGUg
RHJhd2luZ0NvbnRleHQgb2YgdGhlIHNvdXJjZSBJbWFnZUJ1ZmZlciBzbyB0aGlzIEltYWdlQnVm
ZmVyIGdldHMgYW4gdXBkYXRlZCBpbWFnZS4KKyAgICBpbWFnZS5mbHVzaERyYXdpbmdDb250ZXh0
KCk7CisgICAgcmV0dXJuIFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEcmF3SW1hZ2VCdWZmZXI6OmNy
ZWF0ZShyZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIsIGRlc3RSZWN0LCBzcmNSZWN0LCBvcHRpb25z
KTsKK30KKwogUmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyIFJlbW90ZVJlc291cmNlQ2FjaGU6OnJl
bGVhc2VJbWFnZUJ1ZmZlcihJbWFnZUJ1ZmZlciYgaW1hZ2UpCiB7CiAgICAgLy8gUmVtb3ZlIHRo
ZSByZXNvdXJjZSBmcm9tIHRoZSBjYWNoZS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlUmVzb3VyY2VDYWNoZS5oIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVSZXNvdXJjZUNhY2hlLmgKaW5kZXggMmMy
Y2RlMWQyNTBlLi5iNDhhOTU0ZDhkYzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlUmVzb3VyY2VDYWNoZS5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlUmVzb3VyY2VDYWNoZS5oCkBAIC01Nyw2
ICs1Nyw4IEBAIHB1YmxpYzoKICAgICB2b2lkIGNyZWF0ZUltYWdlQnVmZmVyQmFja2VuZChjb25z
dCBXZWJDb3JlOjpGbG9hdFNpemUmIGxvZ2ljYWxTaXplLCBjb25zdCBXZWJDb3JlOjpJbnRTaXpl
JiBiYWNrZW5kU2l6ZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBXZWJDb3JlOjpDb2xvclNwYWNl
LCBJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGUsIFdlYkNvcmU6OlJlbW90ZVJlc291cmNlSWRlbnRp
Zmllcik7CiAgICAgdm9pZCBjb21taXRJbWFnZUJ1ZmZlckZsdXNoQ29udGV4dChJbWFnZUJ1ZmZl
ckZsdXNoSWRlbnRpZmllciwgV2ViQ29yZTo6UmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyKTsKIAor
ICAgIFJlZlB0cjxXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbT4gY3JlYXRlRHJhd0ltYWdlQnVm
ZmVySXRlbShXZWJDb3JlOjpJbWFnZUJ1ZmZlciYsIGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYg
ZGVzdFJlY3QsIGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgV2ViQ29y
ZTo6SW1hZ2VQYWludGluZ09wdGlvbnMmLCBXZWJDb3JlOjpSZW1vdGVSZXNvdXJjZUlkZW50aWZp
ZXIpOworCiAgICAgV2ViQ29yZTo6UmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyIHJlbGVhc2VJbWFn
ZUJ1ZmZlcihXZWJDb3JlOjpJbWFnZUJ1ZmZlciYpOwogICAgIHZvaWQgcmVsZWFzZVJlbW90ZUNs
aWVudChXZWJDb3JlOjpSZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIgcmVtb3RlQ2xpZW50SWRlbnRp
Zmllcik7CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>411934</attachid>
            <date>2020-10-20 16:22:17 -0700</date>
            <delta_ts>2020-10-27 00:44:49 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-217566-20201020162216.patch</filename>
            <type>text/plain</type>
            <size>87186</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY4NzExCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMGZhZWI5MTE3ZGQ4MWFj
OTVmMmUwZDBiY2VkZmU3OThlZTM5NzVkMS4uOTYyNmYxZGU1NzE2NDYxZjM4ZGQ5NGY5ZmRkYjg2
NWEzZGRhMTUyYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDg4IEBACisyMDIwLTEwLTIwICBTYWlk
IEFib3UtSGFsbGF3YSAgPHNhaWRAYXBwbGUuY29tPgorCisgICAgICAgIFtHUFUgUHJvY2Vzc106
IEltcGxlbWVudCBEaXNwbGF5TGlzdDo6RHJhd0ltYWdlQnVmZmVyIGl0ZW0KKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxNzU2NgorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCB0aGUgRHJhd0ltYWdlQnVm
ZmVyIERpc3BsYXlMaXN0IGl0ZW0uIEl0IHdpbGwgYmUgdXNlZCBvbmx5IGZvciBHUFUKKyAgICAg
ICAgcmVuZGVyaW5nLiBUaGUgcmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyIG9mIHRoZSBzb3VyY2Ug
SW1hZ2VCdWZmZXIgd2lsbAorICAgICAgICBiZSByZWNvcmRlZC4gRm9yIGRldGFpbHMgb24gaG93
IGRyYXdpbmcgYW4gSW1hZ2VCdWZmZXIgdG8gYW5vdGhlciAKKyAgICAgICAgSW1hZ2VCdWZmZXIg
d29ya3Mgc2VlIHRoZSBXZWJLaXQgQ2hhbmdlTG9nLgorCisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvR3JhcGhpY3NDb250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29u
dGV4dDo6ZHJhd0ltYWdlQnVmZmVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9HcmFw
aGljc0NvbnRleHRJbXBsLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3Jh
cGhpY3NDb250ZXh0SW1wbENhaXJvLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29u
dGV4dEltcGxDYWlybzo6ZHJhd0ltYWdlQnVmZmVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9jYWlyby9HcmFwaGljc0NvbnRleHRJbXBsQ2Fpcm8uaDoKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3QuaDoKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtcy5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbTo6c2l6ZUluQnl0ZXMpOgorICAgICAgICAoV2ViQ29y
ZTo6RGlzcGxheUxpc3Q6OkRyYXdJbWFnZUJ1ZmZlcjo6RHJhd0ltYWdlQnVmZmVyKToKKyAgICAg
ICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEcmF3SW1hZ2VCdWZmZXI6OmFwcGx5IGNvbnN0KToK
KyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpvcGVyYXRvcjw8KToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtcy5oOgorICAgICAg
ICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRyYXdJbWFnZUJ1ZmZlcjo6Y3JlYXRlKToKKyAgICAg
ICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEcmF3SW1hZ2VCdWZmZXI6OnJlbW90ZVJlc291cmNl
SWRlbnRpZmllciBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RHJhd0lt
YWdlQnVmZmVyOjpzb3VyY2UgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6
OkRyYXdJbWFnZUJ1ZmZlcjo6ZGVzdGluYXRpb25SZWN0IGNvbnN0KToKKyAgICAgICAgKFdlYkNv
cmU6OkRpc3BsYXlMaXN0OjpEcmF3SW1hZ2VCdWZmZXI6Om9wdGlvbnMgY29uc3QpOgorICAgICAg
ICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRyYXdJbWFnZUJ1ZmZlcjo6ZW5jb2RlIGNvbnN0KToK
KyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEcmF3SW1hZ2VCdWZmZXI6OmRlY29kZSk6
CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbTo6ZW5jb2RlIGNvbnN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtOjpkZWNvZGUpOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVyLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpSZWNvcmRlcjo6UmVjb3JkZXIpOgorICAgICAg
ICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OlJlY29yZGVyOjpkcmF3SW1hZ2VCdWZmZXIpOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVy
Lmg6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6UmVjb3JkZXI6OkRlbGVnYXRlOjps
b2NrUmVtb3RlSW1hZ2VCdWZmZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL25pY29z
aWEvY2Fpcm8vTmljb3NpYUNhaXJvT3BlcmF0aW9uUmVjb3JkZXIuY3BwOgorICAgICAgICAoTmlj
b3NpYTo6Q2Fpcm9PcGVyYXRpb25SZWNvcmRlcjo6ZHJhd0ltYWdlQnVmZmVyKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lhL2NhaXJvL05pY29zaWFDYWlyb09wZXJhdGlvblJl
Y29yZGVyLmg6CisKKzIwMjAtMTAtMTkgIFNhaWQgQWJvdS1IYWxsYXdhICA8c2Fib3VoYWxsYXdh
QGFwcGxlLmNvbT4KKworICAgICAgICBbR1BVIFByb2Nlc3NdOiBJbnRyb2R1Y2UgUmVtb3RlUmVz
b3VyY2VDYWNoZVByb3h5IHRvIG1hbmFnZSB0aGUgcmVtb3RlIHJlc291cmNlcyBpbiBXZWIgUHJv
Y2VzcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE3
NTU4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUmVu
YW1lIFJlY29yZGVyOjpPYnNlcnZlciB0byBSZWNvcmRlcjo6RGVsZWdhdGUgYmVjYXVzZSBpdCB3
aWxsIGJlIHJlc3BvbnNpYmxlCisgICAgICAgIGZvciBjcmVhdGluZyBEaXNwbGF5TGlzdEl0ZW1z
IGluIGZ1dHVyZSBwYXRjaGVzLiBTbyBpdCB3aWxsIG5vdCBiZSBqdXN0CisgICAgICAgIGFuIG9i
c2VydmVyLiBBbHNvIGRvIG5vdCBtYWtlIERpc3BsYXlMaXN0OjpJbWFnZUJ1ZmZlciBhIHN1cGVy
Y2xhc3Mgb2YgaXQuCisgICAgICAgIFJlbW90ZUltYWdlQnVmZmVyUHJveHksIHdoaWNoIGlzIGEg
c3VwZXJjbGFzcyBvZiBEaXNwbGF5TGlzdDo6SW1hZ2VCdWZmZXIsCisgICAgICAgIHdpbGwgYmUg
dGhlIHN1cGVyY2xhc3Mgb2YgUmVjb3JkZXI6OkRlbGVnYXRlLgorCisgICAgICAgIE1ha2UgSW1h
Z2VCdWZmZXJCYWNrZW5kOjppc0FjY2VsZXJhdGVkIGEgc3RhdGljIG1lbWJlciBpbnN0ZWFkIG9m
IGEgdmlydHVhbAorICAgICAgICBtZXRob2QuIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eSB3
b3VsZCB3YW50IHRvIGtub3cgd2hldGhlciB0aGUgYmFja2VuZAorICAgICAgICBvZiBhbiBJbWFn
ZUJ1ZmZlciBpc0FjY2VsZXJhdGVkIG9yIG5vdCB3aXRob3V0IGhhdmluZyB0byBjcmVhdGUgaXQu
CisgICAgICAgIEltYWdlQnVmZmVyQmFja2VuZDo6aXNBY2NlbGVyYXRlZCB3aWxsIGJlIHNldCB0
byBmYWxzZSBhbmQKKyAgICAgICAgSW1hZ2VCdWZmZXJJT1N1cmZhY2VCYWNrZW5kOjppc0FjY2Vs
ZXJhdGVkIHdpbGwgYmUgc2V0IHRvIHRydWUuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9Db25jcmV0ZUltYWdlQnVmZmVyLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvSW1h
Z2VCdWZmZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlQnVmZmVyOjpyZW1vdGVSZXNvdXJj
ZUlkZW50aWZpZXIgY29uc3QpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVm
ZmVyQmFja2VuZC5oOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXJCYWNrZW5kOjppc0Fj
Y2VsZXJhdGVkIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9S
ZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9j
Zy9JbWFnZUJ1ZmZlcklPU3VyZmFjZUJhY2tlbmQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW1h
Z2VCdWZmZXJJT1N1cmZhY2VCYWNrZW5kOjppc0FjY2VsZXJhdGVkIGNvbnN0KTogRGVsZXRlZC4K
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlcklPU3VyZmFjZUJhY2tl
bmQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxp
c3REcmF3aW5nQ29udGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RHJh
d2luZ0NvbnRleHQ6OkRyYXdpbmdDb250ZXh0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3REcmF3aW5nQ29udGV4dC5oOgorICAgICAgICAoV2Vi
Q29yZTo6RGlzcGxheUxpc3Q6OkRyYXdpbmdDb250ZXh0OjpEcmF3aW5nQ29udGV4dCk6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SW1hZ2VCdWZm
ZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJbWFnZUJ1ZmZlcjo6SW1hZ2VC
dWZmZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5
TGlzdFJlY29yZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpSZWNvcmRl
cjo6UmVjb3JkZXIpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OlJlY29yZGVyOjp3
aWxsQXBwZW5kSXRlbSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3Rz
L0Rpc3BsYXlMaXN0UmVjb3JkZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpS
ZWNvcmRlcjo6RGVsZWdhdGU6On5EZWxlZ2F0ZSk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5
TGlzdDo6UmVjb3JkZXI6Ok9ic2VydmVyOjp+T2JzZXJ2ZXIpOiBEZWxldGVkLgorICAgICAgICAo
V2ViQ29yZTo6RGlzcGxheUxpc3Q6OlJlY29yZGVyOjpPYnNlcnZlcjo6d2lsbEFwcGVuZEl0ZW0p
OiBEZWxldGVkLgorCiAyMDIwLTEwLTE5ICBBbGV4ZXkgU2h2YXlrYSAgPHNodmFpa2FsZXNoQGdt
YWlsLmNvbT4KIAogICAgICAgICBbV2ViSURMXSAlSW50ZXJmYWNlJS5wcm90b3R5cGUuY29uc3Ry
dWN0b3Igc2hvdWxkIGJlIGRlZmluZWQgb24gW1tTZXRdXSByZWNlaXZlcgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCBk
N2Q2ODRiY2MwZDc2YjE3MzM3ODA5MmEyNzk3N2VkMjdlMGI3NzE2Li43NDc4YzBhNWY2MWQwNGY2
NzY2NWNjYWYzZjM5MTI4ZmFkZTkyNTUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5n
ZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDEwNCBAQAorMjAy
MC0xMC0yMCAgU2FpZCBBYm91LUhhbGxhd2EgIDxzYWlkQGFwcGxlLmNvbT4KKworICAgICAgICBb
R1BVIFByb2Nlc3NdOiBJbXBsZW1lbnQgRGlzcGxheUxpc3Q6OkRyYXdJbWFnZUJ1ZmZlciBpdGVt
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTc1NjYK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGUgc2Vx
dWVuY2UgaW4gdGhlIFdlYiBQcm9jZXNzIGlzIHRoZSBmb2xsb3dpbmc6CisKKyAgICAgICAgLS0g
R3JhcGhpY3NDb250ZXh0OjpkcmF3SW1hZ2VCdWZmZXIoKSB1c2VzIERpc3BsYXlMaXN0OjpSZWNv
cmRlciB0byBjaGVjaworICAgICAgICAgICB3aGV0aGVyIGl0IGlzIGFwcHJvcHJpYXRlIHRvIGNy
ZWF0ZSBhIERyYXdJbWFnZUJ1ZmZlciBpdGVtIG9yIG5vdC4KKworICAgICAgICAtLSBEaXNwbGF5
TGlzdDo6UmVjb3JkZXI6OmRyYXdJbWFnZUJ1ZmZlcigpIHVzZXMgdGhlIGRlbGVnYXRlIHRvIHNl
ZSBpZgorICAgICAgICAgICB0aGUgSW1hZ2VCdWZmZXIgaXMgcmVtb3RlIG9yIG5vdCBhbmQgd2hl
dGhlciBpdCBjYW4gYmUgbG9ja2VkIHRpbGwgCisgICAgICAgICAgIHJlcGxheWluZyBiYWNrIHRo
ZSBEaXNwbGF5TGlzdCBpbiB0aGUgR1BVIHNpZGUuIAorCisgICAgICAgIC0tIFJlbW90ZUltYWdl
QnVmZmVyUHJveHkgaW5oZXJpdHMgRGlzcGxheUxpc3Q6OlJlY29yZGVyOjpEZWxlZ2F0ZS4gU28g
aXRzCisgICAgICAgICAgIGxvY2tSZW1vdGVJbWFnZUJ1ZmZlcigpIGlzIGNhbGxlZC4KKworICAg
ICAgICAtLSBJZiB0aGUgSW1hZ2VCdWZmZXIgY2FuIGJlIGxvY2tlZCwgYSBEcmF3SW1hZ2VCdWZm
ZXJJdGVtIGlzIGNyZWF0ZWQgd2l0aAorICAgICAgICAgICB0aGUgSW1hZ2VCdWZmZXI6OnJlbW90
ZVJlc291cmNlSWRlbnRpZmllcigpLgorCisgICAgICAgIFRoZSBzZXF1ZW5jZSBpbiB0aGUgR1BV
IFByb2Nlc3MgaXMgdGhlIGZvbGxvd2luZzoKKworICAgICAgICAtLSBXaGVuIHJlcGxheWluZyBi
YWNrIHRoZSBEaXNwbGF5TGlzdCwgRGlzcGxheUxpc3Q6OlJlcGxheWVyIHdpbGwgY2FsbAorICAg
ICAgICAgICBpdHMgZGVsZWdhdGUgdG8gY2hlY2sgaWYgaXQgd2FudHMgdG8gYXBwbHkgdGhlIERy
YXdJbWFnZUJ1ZmZlci4KKworICAgICAgICAtLSBCZWNhdXNlIFJlbW90ZUltYWdlQnVmZmVyIGlu
aGVyaXRzIERpc3BsYXlMaXN0OjpSZXBsYXllcjo6RGVsZWdhdGUsCisgICAgICAgICAgIFJlbW90
ZUltYWdlQnVmZmVyOjphcHBseSgpIHdpbGwgYmUgY2FsbGVkLgorCisgICAgICAgIC0tIFJlbW90
ZUltYWdlQnVmZmVyIHdpbGwgY2FsbCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjphcHBseVJlc291
cmNlSXRlbSgpCisgICAgICAgICAgIHdoaWNoIHdpbGwgY2hlY2sgd2hldGhlciB0aGUgaXRlbSdz
IHJlbW90ZVJlc291cmNlSWRlbnRpZmllciBpcyBvbmUgb2YgCisgICAgICAgICAgIHRoZSBJbWFn
ZUJ1ZmZlcnMgaW4gaXRzIFJlbW90ZVJlc291cmNlQ2FjaGUgb3Igbm90LgorCisgICAgICAgIC0t
IElmIHRoZXJlIGlzIGEgY2FjaGVkIEltYWdlQnVmZmVyLCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5k
OjphcHBseVJlc291cmNlSXRlbSgpCisgICAgICAgICAgIHdpbGwgZHJhdyB0byBHcmFwaGljc0Nv
bnRleHQuCisKKyAgICAgICAgKiBHUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUltYWdlQnVmZmVy
Lmg6CisgICAgICAgICogR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5k
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6YXBwbHlSZXNv
dXJjZUl0ZW0pOgorICAgICAgICAqIEdQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5n
QmFja2VuZC5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUltYWdl
QnVmZmVyUHJveHkuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVS
ZXNvdXJjZUNhY2hlUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVSZXNvdXJjZUNh
Y2hlUHJveHk6OnJlbGVhc2VJbWFnZUJ1ZmZlcik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVJl
c291cmNlQ2FjaGVQcm94eTo6bG9ja1JlbW90ZUltYWdlQnVmZmVyRm9yUmVtb3RlQ2xpZW50KToK
KyAgICAgICAgKFdlYktpdDo6UmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5Ojpsb2NrUmVtb3RlUmVz
b3VyY2VGb3JSZW1vdGVDbGllbnQpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVSZXNvdXJjZUNh
Y2hlUHJveHk6OnJlbGVhc2VSZW1vdGVSZXNvdXJjZSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90
ZVJlc291cmNlQ2FjaGVQcm94eTo6dW5sb2NrUmVtb3RlUmVzb3VyY2VzRm9yUmVtb3RlQ2xpZW50
KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVSZXNvdXJjZUNhY2hl
UHJveHkuaDoKKworMjAyMC0xMC0xOSAgU2FpZCBBYm91LUhhbGxhd2EgIDxzYWJvdWhhbGxhd2FA
YXBwbGUuY29tPgorCisgICAgICAgIFtHUFUgUHJvY2Vzc106IEludHJvZHVjZSBSZW1vdGVSZXNv
dXJjZUNhY2hlUHJveHkgdG8gbWFuYWdlIHRoZSByZW1vdGUgcmVzb3VyY2VzIGluIFdlYiBQcm9j
ZXNzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTc1
NTgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBSZW1v
dmUgUmVtb3RlSW1hZ2VCdWZmZXJNZXNzYWdlSGFuZGxlclByb3h5IGFuZCBtb3ZlIHNlbmRpbmcg
dGhlIG1lc3NhZ2VzCisgICAgICAgIHRvIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS4KKwor
ICAgICAgICBUbyBhbGxvdyBjYXN0aW5nIEltYWdlQnVmZmVyIHRvIFJlbW90ZUltYWdlQnVmZmVy
UHJveHksIGEgbmV3IG1ldGhvZCBuYW1lZAorICAgICAgICByZW1vdGVSZXNvdXJjZUlkZW50aWZp
ZXIoKSBpcyBhZGRlZCB0byBJYW1nZUJ1ZmZlciBhbmQgaXQgaXMgb25seSBvdmVycmlkZGVuCisg
ICAgICAgIGJ5IFJlbW90ZUltYWdlQnVmZmVyUHJveHkuIFRoaXMgbWV0aG9kIGlzIHVzZWQgaW4g
U1BFQ0lBTElaRV9UWVBFX1RSQUlUUworICAgICAgICBtYWNyb3MgYWxvbmcgd2l0aCBJYW1nZUJ1
ZmZlcjo6aXNBY2NlbGVyYXRlZCgpLgorCisgICAgICAgIEludHJvZHVjZSBSZW1vdGVSZXNvdXJj
ZUNhY2hlUHJveHkgd2hpY2ggd2lsbCBtYW5hZ2UgY2FjaGluZyBhbmQgcmVsZWFzaW5nCisgICAg
ICAgIHRoZSBSZW1vdGVJbWFnZUJ1ZmZlclByb3h5LiBDYWNoaW5nIE5hdGl2ZUltYWdlIHdpbGwg
YmUgYWRkZWQgdG8gaXQgaW4KKyAgICAgICAgZnV0dXJlIHBhdGNoZXMuIE1vcmUgYWJvdXQgY29u
dHJvbGxpbmcgdGhlIGxpZmUgY3ljbGVzIG9mIHJlbW90ZSByZXNvdXJjZXMgCisgICAgICAgIHdp
bGwgYmUgYWRkZWQgd2l0aCBzdXBwb3J0aW5nIGRyYXdpbmcgcmVtb3RlIHJlc291cmNlcyB0byBy
ZW1vdGUgY2xpZW50LgorCisgICAgICAgICogU291cmNlcy50eHQ6CisgICAgICAgICogV2ViS2l0
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvZ3Jh
cGhpY3MvUGxhdGZvcm1SZW1vdGVJbWFnZUJ1ZmZlclByb3h5Lmg6CisgICAgICAgIChpc1R5cGUp
OgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUltYWdlQnVmZmVyTWVz
c2FnZUhhbmRsZXJQcm94eS5jcHA6IFJlbW92ZWQuCisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUv
Z3JhcGhpY3MvUmVtb3RlSW1hZ2VCdWZmZXJNZXNzYWdlSGFuZGxlclByb3h5Lmg6IFJlbW92ZWQu
CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlSW1hZ2VCdWZmZXJQcm94
eS5oOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVJbWFnZUJ1ZmZlclByb3h5OjpjcmVhdGUpOgor
ICAgICAgICAoV2ViS2l0OjpSZW1vdGVJbWFnZUJ1ZmZlclByb3h5Ojp+UmVtb3RlSW1hZ2VCdWZm
ZXJQcm94eSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUltYWdlQnVmZmVyUHJveHk6OmNyZWF0
ZUJhY2tlbmQpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVJbWFnZUJ1ZmZlclByb3h5Ojpjb21t
aXRGbHVzaERpc3BsYXlMaXN0KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlSW1hZ2VCdWZmZXJQ
cm94eTo6UmVtb3RlSW1hZ2VCdWZmZXJQcm94eSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUlt
YWdlQnVmZmVyUHJveHk6OmlzUGVuZGluZ0ZsdXNoIGNvbnN0KToKKyAgICAgICAgKiBXZWJQcm9j
ZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkuY3BwOgorICAgICAg
ICAoV2ViS2l0OjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHk6OmNyZWF0ZUltYWdlQnVmZmVy
KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5OjpnZXRJbWFn
ZURhdGEpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHk6OmZs
dXNoRGlzcGxheUxpc3QpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5k
UHJveHk6OmZsdXNoRGlzcGxheUxpc3RBbmRDb21taXQpOgorICAgICAgICAoV2ViS2l0OjpSZW1v
dGVSZW5kZXJpbmdCYWNrZW5kUHJveHk6OnJlbGVhc2VSZW1vdGVSZXNvdXJjZSk6CisgICAgICAg
IChXZWJLaXQ6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eTo6aW1hZ2VCdWZmZXJCYWNrZW5k
V2FzQ3JlYXRlZCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94
eTo6Zmx1c2hEaXNwbGF5TGlzdFdhc0NvbW1pdHRlZCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9H
UFUvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5Lmg6CisgICAgICAgIChXZWJL
aXQ6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eTo6cmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5
KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5OjpyZW5kZXJp
bmdCYWNrZW5kSWRlbnRpZmllciBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogV2ViUHJvY2Vz
cy9HUFUvZ3JhcGhpY3MvUmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5LmNwcDogQ29waWVkIGZyb20g
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUmVtb3RlUmVzb3VyY2VJZGVudGlmaWVy
LmguCisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVJlc291cmNlQ2FjaGVQcm94eTo6UmVtb3RlUmVz
b3VyY2VDYWNoZVByb3h5KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlUmVzb3VyY2VDYWNoZVBy
b3h5OjpjYWNoZUltYWdlQnVmZmVyKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlUmVzb3VyY2VD
YWNoZVByb3h5OjpjYWNoZWRJbWFnZUJ1ZmZlcik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVJl
c291cmNlQ2FjaGVQcm94eTo6cmVsZWFzZUltYWdlQnVmZmVyKToKKyAgICAgICAgKiBXZWJQcm9j
ZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVSZXNvdXJjZUNhY2hlUHJveHkuaDogQ29waWVkIGZyb20g
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9QbGF0Zm9ybVJlbW90ZUltYWdl
QnVmZmVyUHJveHkuaC4KKwogMjAyMC0xMC0xOSAgUGVuZyBMaXUgIDxwZW5nLmxpdTZAYXBwbGUu
Y29tPgogCiAgICAgICAgIFR3byBmZWF0dXJlIGZsYWcgbmFtZXMgYXJlIGluY29ycmVjdApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29uY3JldGVJbWFnZUJ1
ZmZlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29uY3JldGVJbWFnZUJ1
ZmZlci5oCmluZGV4IGM2YzE5ZTEyODlmNDhiMDIwZWE3OGJjZTM5ZDEwNmMzZGI5M2IwN2QuLjg2
OTczOTVmYTRjOGQwODUxYzdiNzc5MDQwNmU2MWM5MThmY2VhNTAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbmNyZXRlSW1hZ2VCdWZmZXIuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db25jcmV0ZUltYWdlQnVmZmVyLmgKQEAg
LTUwLDEzICs1MCw4IEBAIHB1YmxpYzoKICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwogICAg
ICAgICByZXR1cm4gc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyVHlwZT4obmV3IEltYWdlQnVm
ZmVyVHlwZShXVEZNb3ZlKGJhY2tlbmQpLCBzdGQ6OmZvcndhcmQ8QXJndW1lbnRzPihhcmd1bWVu
dHMpLi4uKSk7CiAgICAgfQotICAgIAotICAgIGJvb2wgaXNBY2NlbGVyYXRlZCgpIGNvbnN0IG92
ZXJyaWRlCi0gICAgewotICAgICAgICBpZiAoYXV0byogYmFja2VuZCA9IGVuc3VyZUJhY2tlbmRD
cmVhdGVkKCkpCi0gICAgICAgICAgICByZXR1cm4gYmFja2VuZC0+aXNBY2NlbGVyYXRlZCgpOwot
ICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQorCisgICAgYm9vbCBpc0FjY2VsZXJhdGVkKCkg
Y29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gQmFja2VuZFR5cGU6OmlzQWNjZWxlcmF0ZWQ7IH0KIAog
cHJvdGVjdGVkOgogICAgIENvbmNyZXRlSW1hZ2VCdWZmZXIoc3RkOjp1bmlxdWVfcHRyPEJhY2tl
bmRUeXBlPiYmIGJhY2tlbmQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9HcmFwaGljc0NvbnRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvR3JhcGhpY3NDb250ZXh0LmNwcAppbmRleCAwZGMwNTU3YjBkNGYwNzJlZGI5OGJjNThj
MTI5YjQyMWE4MDhmMDZkLi4yMTBiYmFjMzI3MTUyMzAwMzE5MjgwOTM4MTUzZDE2MmE3MzljMmQz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0Nv
bnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNz
Q29udGV4dC5jcHAKQEAgLTgxMiw2ICs4MTIsOSBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6ZHJh
d0ltYWdlQnVmZmVyKEltYWdlQnVmZmVyJiBpbWFnZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0aQog
ICAgIGlmIChwYWludGluZ0Rpc2FibGVkKCkpCiAgICAgICAgIHJldHVybjsKIAorICAgIGlmICht
X2ltcGwgJiYgbV9pbXBsLT5kcmF3SW1hZ2VCdWZmZXIoaW1hZ2UsIGRlc3RpbmF0aW9uLCBzb3Vy
Y2UsIG9wdGlvbnMpKQorICAgICAgICByZXR1cm47CisKICAgICBJbnRlcnBvbGF0aW9uUXVhbGl0
eU1haW50YWluZXIgaW50ZXJwb2xhdGlvblF1YWxpdHlGb3JUaGlzU2NvcGUoKnRoaXMsIG9wdGlv
bnMuaW50ZXJwb2xhdGlvblF1YWxpdHkoKSk7CiAgICAgaW1hZ2UuZHJhdygqdGhpcywgZGVzdGlu
YXRpb24sIHNvdXJjZSwgb3B0aW9ucyk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHRJbXBsLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHRJbXBsLmgKaW5kZXggYzJjYWZlMzM2Y2M1
Njk5NWRjNDBkZWQ0MDE2N2U2ODNiNDJhNTdmNy4uMzUzNmQyZjNiNzNjZDQ4OGU5OGVjMmU5ZmRl
MjQ4ZjgyMzhjMzljZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvR3JhcGhpY3NDb250ZXh0SW1wbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0dyYXBoaWNzQ29udGV4dEltcGwuaApAQCAtNzMsNiArNzMsNyBAQCBwdWJsaWM6CiAg
ICAgdmlydHVhbCBJbWFnZURyYXdSZXN1bHQgZHJhd1RpbGVkSW1hZ2UoSW1hZ2UmLCBjb25zdCBG
bG9hdFJlY3QmIGRlc3RpbmF0aW9uLCBjb25zdCBGbG9hdFBvaW50JiBzb3VyY2UsIGNvbnN0IEZs
b2F0U2l6ZSYgdGlsZVNpemUsIGNvbnN0IEZsb2F0U2l6ZSYgc3BhY2luZywgY29uc3QgSW1hZ2VQ
YWludGluZ09wdGlvbnMmKSA9IDA7CiAgICAgdmlydHVhbCBJbWFnZURyYXdSZXN1bHQgZHJhd1Rp
bGVkSW1hZ2UoSW1hZ2UmLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RpbmF0aW9uLCBjb25zdCBGbG9h
dFJlY3QmIHNvdXJjZSwgY29uc3QgRmxvYXRTaXplJiB0aWxlU2NhbGVGYWN0b3IsIEltYWdlOjpU
aWxlUnVsZSBoUnVsZSwgSW1hZ2U6OlRpbGVSdWxlIHZSdWxlLCBjb25zdCBJbWFnZVBhaW50aW5n
T3B0aW9ucyYpID0gMDsKIAorICAgIHZpcnR1YWwgYm9vbCBkcmF3SW1hZ2VCdWZmZXIoSW1hZ2VC
dWZmZXImLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RpbmF0aW9uLCBjb25zdCBGbG9hdFJlY3QmIHNv
dXJjZSwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmKSA9IDA7CiAgICAgdmlydHVhbCB2b2lk
IGRyYXdOYXRpdmVJbWFnZShjb25zdCBOYXRpdmVJbWFnZVB0ciYsIGNvbnN0IEZsb2F0U2l6ZSYg
c2VsZlNpemUsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3Jj
UmVjdCwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmKSA9IDA7CiAgICAgdmlydHVhbCB2b2lk
IGRyYXdQYXR0ZXJuKEltYWdlJiwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxv
YXRSZWN0JiBzcmNSZWN0LCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mLCBjb25zdCBGbG9hdFBvaW50
JiBwaGFzZSwgY29uc3QgRmxvYXRTaXplJiBzcGFjaW5nLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0
aW9ucyYpID0gMDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvSW1hZ2VCdWZmZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdl
QnVmZmVyLmgKaW5kZXggMGFlOWZjYmQwNTg4ZDRjNGUxZWY1YWYzY2M3ZjEyYjYxMmJmNzhkYS4u
OGI5NGY5MWQ5YmE5MTQ2MjQ0ZjAxYjcwM2NiMzQ3YThhOWQ3ZDE5OCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXIuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlci5oCkBAIC0yOCw2ICsyOCw3IEBA
CiAjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgIkltYWdlQnVmZmVyQmFja2VuZC5oIgorI2luY2x1
ZGUgIlJlbW90ZVJlc291cmNlSWRlbnRpZmllci5oIgogI2luY2x1ZGUgIlJlbmRlcmluZ01vZGUu
aCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtNjAsNiArNjEsOSBAQCBwdWJsaWM6CiAgICAg
CiAgICAgV0VCQ09SRV9FWFBPUlQgdmlydHVhbCB+SW1hZ2VCdWZmZXIoKSA9IGRlZmF1bHQ7CiAK
KyAgICB2aXJ0dWFsIGJvb2wgaXNBY2NlbGVyYXRlZCgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFs
IFJlbW90ZVJlc291cmNlSWRlbnRpZmllciByZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIoKSBjb25z
dCB7IHJldHVybiB7IH07IH0KKyAgICAKICAgICB2aXJ0dWFsIEdyYXBoaWNzQ29udGV4dCYgY29u
dGV4dCgpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZmx1c2hDb250ZXh0KCkgPSAwOwog
CkBAIC0xMDQsOCArMTA4LDYgQEAgcHVibGljOgogICAgIHZpcnR1YWwgYm9vbCBjb3B5VG9QbGF0
Zm9ybVRleHR1cmUoR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wmLCBHQ0dMZW51bSwgUGxhdGZvcm1H
TE9iamVjdCwgR0NHTGVudW0sIGJvb2wsIGJvb2wpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIFBs
YXRmb3JtTGF5ZXIqIHBsYXRmb3JtTGF5ZXIoKSBjb25zdCA9IDA7CiAgICAgCi0gICAgdmlydHVh
bCBib29sIGlzQWNjZWxlcmF0ZWQoKSBjb25zdCA9IDA7Ci0KIHByb3RlY3RlZDoKICAgICBJbWFn
ZUJ1ZmZlcigpID0gZGVmYXVsdDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXJCYWNrZW5kLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9JbWFnZUJ1ZmZlckJhY2tlbmQuaAppbmRleCA1OGZjMTQ4MzZkOTJhYTIwMDE5
ZjIwZmVlZGM1NTcxZTlhYjVlOTVjLi5jYjU4NzI1NjdmMDg4M2I1YmQwMmUwZWVjYjhjZWZkYmU3
MTBhOGVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFn
ZUJ1ZmZlckJhY2tlbmQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9J
bWFnZUJ1ZmZlckJhY2tlbmQuaApAQCAtMTAxLDcgKzEwMSw3IEBAIHB1YmxpYzoKICAgICB2aXJ0
dWFsIGJvb2wgY29weVRvUGxhdGZvcm1UZXh0dXJlKEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMJiwg
R0NHTGVudW0sIFBsYXRmb3JtR0xPYmplY3QsIEdDR0xlbnVtLCBib29sLCBib29sKSBjb25zdCB7
IHJldHVybiBmYWxzZTsgfQogICAgIAogICAgIHN0YXRpYyBjb25zdGV4cHIgYm9vbCBpc09yaWdp
bkF0VXBwZXJMZWZ0Q29ybmVyID0gZmFsc2U7Ci0gICAgdmlydHVhbCBib29sIGlzQWNjZWxlcmF0
ZWQoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQorICAgIHN0YXRpYyBjb25zdGV4cHIgYm9vbCBp
c0FjY2VsZXJhdGVkID0gZmFsc2U7CiAKIHByb3RlY3RlZDoKICAgICBXRUJDT1JFX0VYUE9SVCBJ
bWFnZUJ1ZmZlckJhY2tlbmQoY29uc3QgRmxvYXRTaXplJiBsb2dpY2FsU2l6ZSwgY29uc3QgSW50
U2l6ZSYgYmFja2VuZFNpemUsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwgQ29sb3JTcGFjZSk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9SZW1vdGVSZXNvdXJj
ZUlkZW50aWZpZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1JlbW90ZVJl
c291cmNlSWRlbnRpZmllci5oCmluZGV4IDJhZjU0MmRmZWM4NDdhYmMzNzFhYTJmMWU4ZTRiOGRk
OWZiMTEwZTUuLjY2OTBiZWNkYzhiNGFhZTg1MjRiM2Y2ODEwZmI5MjY0Yzg1YzQ5OWMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1JlbW90ZVJlc291cmNlSWRl
bnRpZmllci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1JlbW90ZVJl
c291cmNlSWRlbnRpZmllci5oCkBAIC0yNSw4ICsyNSw2IEBACiAKICNwcmFnbWEgb25jZQogCi0j
aWYgRU5BQkxFKEdQVV9QUk9DRVNTKQotCiAjaW5jbHVkZSA8d3RmL09iamVjdElkZW50aWZpZXIu
aD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtMzUsNSArMzMsMyBAQCBlbnVtIFJlbW90ZVJl
c291cmNlSWRlbnRpZmllclR5cGUgeyB9OwogdXNpbmcgUmVtb3RlUmVzb3VyY2VJZGVudGlmaWVy
ID0gT2JqZWN0SWRlbnRpZmllcjxSZW1vdGVSZXNvdXJjZUlkZW50aWZpZXJUeXBlPjsKIAogfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gRU5BQkxFKEdQVV9QUk9DRVNTKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3ND
b250ZXh0SW1wbENhaXJvLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nh
aXJvL0dyYXBoaWNzQ29udGV4dEltcGxDYWlyby5jcHAKaW5kZXggYjY1YjRkNjQ0MDZiZWI3NmM0
MDlkM2U4YzY1NDk3NWNhOWY3ZWI2My4uOGVmNGY3ODZiNzI0OTE0MjQ1NmVmZjFmMGFkODIxNmNj
OTA1NTM2NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fp
cm8vR3JhcGhpY3NDb250ZXh0SW1wbENhaXJvLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRleHRJbXBsQ2Fpcm8uY3BwCkBAIC0yNzks
NiArMjc5LDEyIEBAIEltYWdlRHJhd1Jlc3VsdCBHcmFwaGljc0NvbnRleHRJbXBsQ2Fpcm86OmRy
YXdUaWxlZEltYWdlKEltYWdlJiBpbWFnZSwgY29uc3QgRmxvCiAgICAgcmV0dXJuIEdyYXBoaWNz
Q29udGV4dEltcGw6OmRyYXdUaWxlZEltYWdlSW1wbChncmFwaGljc0NvbnRleHQoKSwgaW1hZ2Us
IGRlc3RpbmF0aW9uLCBzb3VyY2UsIHRpbGVTY2FsZUZhY3RvciwgaFJ1bGUsIHZSdWxlLCBpbWFn
ZVBhaW50aW5nT3B0aW9ucyk7CiB9CiAKK2Jvb2wgR3JhcGhpY3NDb250ZXh0SW1wbENhaXJvOjpk
cmF3SW1hZ2VCdWZmZXIoSW1hZ2VCdWZmZXImLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBGbG9h
dFJlY3QmLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYpCit7CisgICAgLy8gRklYTUU6IE5v
dCBpbXBsZW1lbnRlZC4KKyAgICByZXR1cm4gZmFsc2U7Cit9CisKIHZvaWQgR3JhcGhpY3NDb250
ZXh0SW1wbENhaXJvOjpkcmF3TmF0aXZlSW1hZ2UoY29uc3QgTmF0aXZlSW1hZ2VQdHImIGltYWdl
LCBjb25zdCBGbG9hdFNpemUmIGltYWdlU2l6ZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwg
Y29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgb3B0
aW9ucykKIHsKICAgICBVTlVTRURfUEFSQU0oaW1hZ2VTaXplKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dEltcGxDYWly
by5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250
ZXh0SW1wbENhaXJvLmgKaW5kZXggZTVlMjA3NDhjNmQ3NjIwZjEwY2YyMTU2NjI4ZWY3ZTBiZTYw
MWM3Yi4uMjg1OGZjMjJmYzFmYjk5MjYyYjQ2MDU0YWM0NmY5MmI2Y2U5ZjBkMiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0
SW1wbENhaXJvLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8v
R3JhcGhpY3NDb250ZXh0SW1wbENhaXJvLmgKQEAgLTc0LDYgKzc0LDggQEAgcHVibGljOgogICAg
IEltYWdlRHJhd1Jlc3VsdCBkcmF3SW1hZ2UoSW1hZ2UmLCBjb25zdCBGbG9hdFJlY3QmLCBjb25z
dCBGbG9hdFJlY3QmLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYpIG92ZXJyaWRlOwogICAg
IEltYWdlRHJhd1Jlc3VsdCBkcmF3VGlsZWRJbWFnZShJbWFnZSYsIGNvbnN0IEZsb2F0UmVjdCYs
IGNvbnN0IEZsb2F0UG9pbnQmLCBjb25zdCBGbG9hdFNpemUmLCBjb25zdCBGbG9hdFNpemUmLCBj
b25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYpIG92ZXJyaWRlOwogICAgIEltYWdlRHJhd1Jlc3Vs
dCBkcmF3VGlsZWRJbWFnZShJbWFnZSYsIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IEZsb2F0UmVj
dCYsIGNvbnN0IEZsb2F0U2l6ZSYsIEltYWdlOjpUaWxlUnVsZSwgSW1hZ2U6OlRpbGVSdWxlLCBj
b25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYpIG92ZXJyaWRlOworCisgICAgYm9vbCBkcmF3SW1h
Z2VCdWZmZXIoSW1hZ2VCdWZmZXImLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBGbG9hdFJlY3Qm
LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYpIG92ZXJyaWRlOwogICAgIHZvaWQgZHJhd05h
dGl2ZUltYWdlKGNvbnN0IE5hdGl2ZUltYWdlUHRyJiwgY29uc3QgRmxvYXRTaXplJiwgY29uc3Qg
RmxvYXRSZWN0JiwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMm
KSBvdmVycmlkZTsKICAgICB2b2lkIGRyYXdQYXR0ZXJuKEltYWdlJiwgY29uc3QgRmxvYXRSZWN0
JiwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiwgY29uc3QgRmxvYXRQ
b2ludCYsIGNvbnN0IEZsb2F0U2l6ZSYsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJikgb3Zl
cnJpZGU7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nn
L0ltYWdlQnVmZmVySU9TdXJmYWNlQmFja2VuZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlcklPU3VyZmFjZUJhY2tlbmQuY3BwCmluZGV4IGM4MDY1
YTllYzI1MTQ2NDRmNzQwNWY5YTU0MTNmNjIyMzU2MjcxNTQuLmRiYzNiN2ViOGIzZDFhZDg4ZDBh
YjNmMGVlZjkwYTdjOGQ4NWUwMzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVySU9TdXJmYWNlQmFja2VuZC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJJT1N1cmZhY2VCYWNrZW5k
LmNwcApAQCAtMTkwLDExICsxOTAsNiBAQCBJT1N1cmZhY2UqIEltYWdlQnVmZmVySU9TdXJmYWNl
QmFja2VuZDo6c3VyZmFjZSgpCiAgICAgcmV0dXJuIG1fc3VyZmFjZS5nZXQoKTsKIH0KIAotYm9v
bCBJbWFnZUJ1ZmZlcklPU3VyZmFjZUJhY2tlbmQ6OmlzQWNjZWxlcmF0ZWQoKSBjb25zdAotewot
ICAgIHJldHVybiB0cnVlOwotfQotCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAv
LyBIQVZFKElPU1VSRkFDRSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NnL0ltYWdlQnVmZmVySU9TdXJmYWNlQmFja2VuZC5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJJT1N1cmZhY2VCYWNrZW5kLmgKaW5kZXgg
MjQxOGYxZDQ1ZDUzZDQ1OTMzYjM5MDRhMjg4YzYxMDFmMTRiY2MzMS4uMzIzMDk0ZWE3OTVjNWQy
NDgzYzg4NDQwMzEyNGE5MDQwY2M3NDBmYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJJT1N1cmZhY2VCYWNrZW5kLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJJT1N1cmZhY2VCYWNr
ZW5kLmgKQEAgLTYyLDkgKzYyLDkgQEAgcHVibGljOgogICAgIFJlZlB0cjxJbWFnZURhdGE+IGdl
dEltYWdlRGF0YShBbHBoYVByZW11bHRpcGxpY2F0aW9uIG91dHB1dEZvcm1hdCwgY29uc3QgSW50
UmVjdCYpIGNvbnN0IG92ZXJyaWRlOwogICAgIHZvaWQgcHV0SW1hZ2VEYXRhKEFscGhhUHJlbXVs
dGlwbGljYXRpb24gaW5wdXRGb3JtYXQsIGNvbnN0IEltYWdlRGF0YSYsIGNvbnN0IEludFJlY3Qm
IHNyY1JlY3QsIGNvbnN0IEludFBvaW50JiBkZXN0UG9pbnQsIEFscGhhUHJlbXVsdGlwbGljYXRp
b24gZGVzdEZvcm1hdCkgb3ZlcnJpZGU7CiAgICAgSU9TdXJmYWNlKiBzdXJmYWNlKCk7Ci0gICAg
Ym9vbCBpc0FjY2VsZXJhdGVkKCkgY29uc3Qgb3ZlcnJpZGU7CiAKICAgICBzdGF0aWMgY29uc3Rl
eHByIGJvb2wgaXNPcmlnaW5BdFVwcGVyTGVmdENvcm5lciA9IHRydWU7CisgICAgc3RhdGljIGNv
bnN0ZXhwciBib29sIGlzQWNjZWxlcmF0ZWQgPSB0cnVlOwogCiBwcm90ZWN0ZWQ6CiAgICAgc3Rh
dGljIFJldGFpblB0cjxDR0NvbG9yU3BhY2VSZWY+IGNvbnRleHRDb2xvclNwYWNlKGNvbnN0IEdy
YXBoaWNzQ29udGV4dCYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3QuaAppbmRleCA1MDZkYWJhYjBiOGI0
YjczMTQ3NmJkZjlmMzA5NTY3MmI5MTJlZjE5Li4zMjJlY2MxYzFjNDE1Y2VmMDU5ZmNjZmJhZjUw
OGY5M2E1OTIxMmFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3QuaApAQCAtNjQsNiArNjQsNyBAQCBl
bnVtIGNsYXNzIEl0ZW1UeXBlIDogdWludDhfdCB7CiAgICAgRHJhd0ltYWdlLAogICAgIERyYXdU
aWxlZEltYWdlLAogICAgIERyYXdUaWxlZFNjYWxlZEltYWdlLAorICAgIERyYXdJbWFnZUJ1ZmZl
ciwKICAgICBEcmF3TmF0aXZlSW1hZ2UsCiAgICAgRHJhd1BhdHRlcm4sCiAgICAgRHJhd1JlY3Qs
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlz
dHMvRGlzcGxheUxpc3REcmF3aW5nQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3REcmF3aW5nQ29udGV4dC5jcHAKaW5k
ZXggMjNjYzA3ZThhZTQ0MmJkY2VhMGQzNjc0YTVhODU1MWM2NWNmZGM4Ny4uZDQ2MTdkMzUxNmY0
ZjNlNTFkNzVkNjQ0MzRhNmEzOTQ1N2EwMDAxZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0RHJhd2luZ0NvbnRleHQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9E
aXNwbGF5TGlzdERyYXdpbmdDb250ZXh0LmNwcApAQCAtMzMsOSArMzMsOSBAQAogbmFtZXNwYWNl
IFdlYkNvcmUgewogbmFtZXNwYWNlIERpc3BsYXlMaXN0IHsKIAotRHJhd2luZ0NvbnRleHQ6OkRy
YXdpbmdDb250ZXh0KGNvbnN0IEZsb2F0U2l6ZSYgbG9naWNhbFNpemUsIGNvbnN0IEFmZmluZVRy
YW5zZm9ybSYgaW5pdGlhbENUTSwgUmVjb3JkZXI6Ok9ic2VydmVyKiBvYnNlcnZlcikKK0RyYXdp
bmdDb250ZXh0OjpEcmF3aW5nQ29udGV4dChjb25zdCBGbG9hdFNpemUmIGxvZ2ljYWxTaXplLCBj
b25zdCBBZmZpbmVUcmFuc2Zvcm0mIGluaXRpYWxDVE0sIFJlY29yZGVyOjpEZWxlZ2F0ZSogZGVs
ZWdhdGUpCiAgICAgOiBtX2NvbnRleHQoWyZdKEdyYXBoaWNzQ29udGV4dCYgZGlzcGxheUxpc3RD
b250ZXh0KSB7Ci0gICAgICAgIHJldHVybiBtYWtlVW5pcXVlPFJlY29yZGVyPihkaXNwbGF5TGlz
dENvbnRleHQsIG1fZGlzcGxheUxpc3QsIEdyYXBoaWNzQ29udGV4dFN0YXRlKCksIEZsb2F0UmVj
dCh7IH0sIGxvZ2ljYWxTaXplKSwgaW5pdGlhbENUTSwgb2JzZXJ2ZXIpOworICAgICAgICByZXR1
cm4gbWFrZVVuaXF1ZTxSZWNvcmRlcj4oZGlzcGxheUxpc3RDb250ZXh0LCBtX2Rpc3BsYXlMaXN0
LCBHcmFwaGljc0NvbnRleHRTdGF0ZSgpLCBGbG9hdFJlY3QoeyB9LCBsb2dpY2FsU2l6ZSksIGlu
aXRpYWxDVE0sIGRlbGVnYXRlKTsKICAgICB9KQogewogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0RHJhd2luZ0Nv
bnRleHQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9E
aXNwbGF5TGlzdERyYXdpbmdDb250ZXh0LmgKaW5kZXggN2I2NzNmMzJhZDgxNWE1MDA4MWI3ZTdh
YjEwODEzMTcxN2ZkZTU0My4uMjJlZDI1NmU4MGFkMjkzYTA1MjA2OWI3NDMwODhhMTM1MWY0N2Nj
MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxp
c3RzL0Rpc3BsYXlMaXN0RHJhd2luZ0NvbnRleHQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3REcmF3aW5nQ29udGV4dC5oCkBA
IC0zNSw3ICszNSw3IEBAIG5hbWVzcGFjZSBEaXNwbGF5TGlzdCB7CiBjbGFzcyBEcmF3aW5nQ29u
dGV4dCB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6Ci0gICAgV0VCQ09S
RV9FWFBPUlQgRHJhd2luZ0NvbnRleHQoY29uc3QgRmxvYXRTaXplJiBsb2dpY2FsU2l6ZSwgY29u
c3QgQWZmaW5lVHJhbnNmb3JtJiBpbml0aWFsQ1RNID0geyB9LCBSZWNvcmRlcjo6T2JzZXJ2ZXIq
ID0gbnVsbHB0cik7CisgICAgV0VCQ09SRV9FWFBPUlQgRHJhd2luZ0NvbnRleHQoY29uc3QgRmxv
YXRTaXplJiBsb2dpY2FsU2l6ZSwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBpbml0aWFsQ1RNID0g
eyB9LCBSZWNvcmRlcjo6RGVsZWdhdGUqID0gbnVsbHB0cik7CiAKICAgICBHcmFwaGljc0NvbnRl
eHQmIGNvbnRleHQoKSBjb25zdCB7IHJldHVybiBjb25zdF9jYXN0PERyYXdpbmdDb250ZXh0Jj4o
KnRoaXMpLm1fY29udGV4dDsgfQogICAgIFdFQkNPUkVfRVhQT1JUIFJlY29yZGVyJiByZWNvcmRl
cigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxh
eWxpc3RzL0Rpc3BsYXlMaXN0SW1hZ2VCdWZmZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEltYWdlQnVmZmVyLmgKaW5kZXggNmZk
OTEyZGZiOGZlMTFjMDk4ZGQ2MTI2YThjODc4YWM2YmE3YWUwMi4uMzI1OTllMDYyZDdjZjU5ZDFk
YzJlYWQwMWU3NjBkNjZlM2Y3ZWMzYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SW1hZ2VCdWZmZXIuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJ
bWFnZUJ1ZmZlci5oCkBAIC0zMiw3ICszMiw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIG5hbWVz
cGFjZSBEaXNwbGF5TGlzdCB7CiAKIHRlbXBsYXRlPHR5cGVuYW1lIEJhY2tlbmRUeXBlPgotY2xh
c3MgSW1hZ2VCdWZmZXIgOiBwdWJsaWMgQ29uY3JldGVJbWFnZUJ1ZmZlcjxCYWNrZW5kVHlwZT4s
IHB1YmxpYyBSZWNvcmRlcjo6T2JzZXJ2ZXIgeworY2xhc3MgSW1hZ2VCdWZmZXIgOiBwdWJsaWMg
Q29uY3JldGVJbWFnZUJ1ZmZlcjxCYWNrZW5kVHlwZT4gewogICAgIHVzaW5nIEJhc2VDb25jcmV0
ZUltYWdlQnVmZmVyID0gQ29uY3JldGVJbWFnZUJ1ZmZlcjxCYWNrZW5kVHlwZT47CiAKIHB1Ymxp
YzoKQEAgLTQ4LDEyICs0OCwxMiBAQCBwdWJsaWM6CiAKICAgICBJbWFnZUJ1ZmZlcihzdGQ6OnVu
aXF1ZV9wdHI8QmFja2VuZFR5cGU+JiYgZGF0YUJhY2tlbmQsIGNvbnN0IEZsb2F0U2l6ZSYgc2l6
ZSkKICAgICAgICAgOiBCYXNlQ29uY3JldGVJbWFnZUJ1ZmZlcihXVEZNb3ZlKGRhdGFCYWNrZW5k
KSkKLSAgICAgICAgLCBtX2RyYXdpbmdDb250ZXh0KHNpemUsIGluaXRpYWxEcmF3aW5nQ29udGV4
dENUTShzaXplKSwgdGhpcykKKyAgICAgICAgLCBtX2RyYXdpbmdDb250ZXh0KHNpemUsIGluaXRp
YWxEcmF3aW5nQ29udGV4dENUTShzaXplKSkKICAgICB7CiAgICAgfQogCi0gICAgSW1hZ2VCdWZm
ZXIoY29uc3QgRmxvYXRTaXplJiBzaXplKQotICAgICAgICA6IG1fZHJhd2luZ0NvbnRleHQoc2l6
ZSwgaW5pdGlhbERyYXdpbmdDb250ZXh0Q1RNKHNpemUpLCB0aGlzKQorICAgIEltYWdlQnVmZmVy
KGNvbnN0IEZsb2F0U2l6ZSYgc2l6ZSwgUmVjb3JkZXI6OkRlbGVnYXRlKiBkZWxlZ2F0ZSA9IG51
bGxwdHIpCisgICAgICAgIDogbV9kcmF3aW5nQ29udGV4dChzaXplLCBpbml0aWFsRHJhd2luZ0Nv
bnRleHRDVE0oc2l6ZSksIGRlbGVnYXRlKQogICAgIHsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0
ZW1zLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9E
aXNwbGF5TGlzdEl0ZW1zLmNwcAppbmRleCA4ZDhiMjgxOTM4NzVjMzE2NmY4MWVkMDhlM2Q5Mjk5
NjFmN2I4NzE2Li5jZjg4OTIxMjU2MTBhOGUzZmIxMjI2YjI0YWFmMjk3MmRiYjMyNDA1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlz
cGxheUxpc3RJdGVtcy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
ZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbXMuY3BwCkBAIC0xMTAsNiArMTEwLDggQEAgc2l6
ZV90IEl0ZW06OnNpemVJbkJ5dGVzKGNvbnN0IEl0ZW0mIGl0ZW0pCiAgICAgICAgIHJldHVybiBz
aXplb2YoZG93bmNhc3Q8RHJhd1RpbGVkSW1hZ2U+KGl0ZW0pKTsKICAgICBjYXNlIEl0ZW1UeXBl
OjpEcmF3VGlsZWRTY2FsZWRJbWFnZToKICAgICAgICAgcmV0dXJuIHNpemVvZihkb3duY2FzdDxE
cmF3VGlsZWRTY2FsZWRJbWFnZT4oaXRlbSkpOworICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdJbWFn
ZUJ1ZmZlcjoKKyAgICAgICAgcmV0dXJuIHNpemVvZihkb3duY2FzdDxEcmF3SW1hZ2VCdWZmZXI+
KGl0ZW0pKTsKICAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3TmF0aXZlSW1hZ2U6CiAgICAgICAgIHJl
dHVybiBzaXplb2YoZG93bmNhc3Q8RHJhd05hdGl2ZUltYWdlPihpdGVtKSk7CiAgICAgY2FzZSBJ
dGVtVHlwZTo6RHJhd1BhdHRlcm46CkBAIC03MzgsNiArNzQwLDMyIEBAIHN0YXRpYyBUZXh0U3Ry
ZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mIHRzLCBjb25zdCBEcmF3VGlsZWRTY2FsZWRJbWFn
ZSYgaXRlbSkKICAgICByZXR1cm4gdHM7CiB9CiAKK0RyYXdJbWFnZUJ1ZmZlcjo6RHJhd0ltYWdl
QnVmZmVyKFJlbW90ZVJlc291cmNlSWRlbnRpZmllciByZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIs
IGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29u
c3QgSW1hZ2VQYWludGluZ09wdGlvbnMmIG9wdGlvbnMpCisgICAgOiBEcmF3aW5nSXRlbShJdGVt
VHlwZTo6RHJhd0ltYWdlQnVmZmVyKQorICAgICwgbV9yZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIo
cmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyKQorICAgICwgbV9kZXN0aW5hdGlvblJlY3QoZGVzdFJl
Y3QpCisgICAgLCBtX3NyY1JlY3Qoc3JjUmVjdCkKKyAgICAsIG1fb3B0aW9ucyhvcHRpb25zKQor
eworfQorCitEcmF3SW1hZ2VCdWZmZXI6On5EcmF3SW1hZ2VCdWZmZXIoKSA9IGRlZmF1bHQ7CisK
K3ZvaWQgRHJhd0ltYWdlQnVmZmVyOjphcHBseShHcmFwaGljc0NvbnRleHQmKSBjb25zdAorewor
ICAgIC8vIFNob3VsZCBiZSBoYW5kbGVkIGJ5IHRoZSBkZWxlZ2F0ZS4KKyAgICBBU1NFUlRfTk9U
X1JFQUNIRUQoKTsKK30KKworc3RhdGljIFRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVh
bSYgdHMsIGNvbnN0IERyYXdJbWFnZUJ1ZmZlciYgaXRlbSkKK3sKKyAgICB0cyA8PCBzdGF0aWNf
Y2FzdDxjb25zdCBEcmF3aW5nSXRlbSY+KGl0ZW0pOworICAgIHRzLmR1bXBQcm9wZXJ0eSgicmVt
b3RlLXJlc291cmNlLWlkZW50aWZpZXIiLCBpdGVtLnJlbW90ZVJlc291cmNlSWRlbnRpZmllcigp
KTsKKyAgICB0cy5kdW1wUHJvcGVydHkoInNvdXJjZS1yZWN0IiwgaXRlbS5zb3VyY2UoKSk7Cisg
ICAgdHMuZHVtcFByb3BlcnR5KCJkZXN0LXJlY3QiLCBpdGVtLmRlc3RpbmF0aW9uUmVjdCgpKTsK
KyAgICByZXR1cm4gdHM7Cit9CisKIERyYXdOYXRpdmVJbWFnZTo6RHJhd05hdGl2ZUltYWdlKGNv
bnN0IE5hdGl2ZUltYWdlUHRyJiBpbWFnZSwgY29uc3QgRmxvYXRTaXplJiBpbWFnZVNpemUsIGNv
bnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3Qg
SW1hZ2VQYWludGluZ09wdGlvbnMmIG9wdGlvbnMpCiAgICAgOiBEcmF3aW5nSXRlbShJdGVtVHlw
ZTo6RHJhd05hdGl2ZUltYWdlKQogICAgICwgbV9pbWFnZShpbWFnZSkKQEAgLTE0OTYsNiArMTUy
NCw3IEBAIHN0YXRpYyBUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mIHRzLCBjb25z
dCBJdGVtVHlwZSYgdHlwZSkKICAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3SW1hZ2U6IHRzIDw8ICJk
cmF3LWltYWdlIjsgYnJlYWs7CiAgICAgY2FzZSBJdGVtVHlwZTo6RHJhd1RpbGVkSW1hZ2U6IHRz
IDw8ICJkcmF3LXRpbGVkLWltYWdlIjsgYnJlYWs7CiAgICAgY2FzZSBJdGVtVHlwZTo6RHJhd1Rp
bGVkU2NhbGVkSW1hZ2U6IHRzIDw8ICJkcmF3LXRpbGVkLXNjYWxlZC1pbWFnZSI7IGJyZWFrOwor
ICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdJbWFnZUJ1ZmZlcjogdHMgPDwgImRyYXctaW1hZ2UtYnVm
ZmVyIjsgYnJlYWs7CiAgICAgY2FzZSBJdGVtVHlwZTo6RHJhd05hdGl2ZUltYWdlOiB0cyA8PCAi
ZHJhdy1uYXRpdmUtaW1hZ2UiOyBicmVhazsKICAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3UGF0dGVy
bjogdHMgPDwgImRyYXctcGF0dGVybiI7IGJyZWFrOwogICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdS
ZWN0OiB0cyA8PCAiZHJhdy1yZWN0IjsgYnJlYWs7CkBAIC0xNjAyLDYgKzE2MzEsOSBAQCBUZXh0
U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mIHRzLCBjb25zdCBJdGVtJiBpdGVtKQogICAg
IGNhc2UgSXRlbVR5cGU6OkRyYXdUaWxlZFNjYWxlZEltYWdlOgogICAgICAgICB0cyA8PCBkb3du
Y2FzdDxEcmF3VGlsZWRTY2FsZWRJbWFnZT4oaXRlbSk7CiAgICAgICAgIGJyZWFrOworICAgIGNh
c2UgSXRlbVR5cGU6OkRyYXdJbWFnZUJ1ZmZlcjoKKyAgICAgICAgdHMgPDwgZG93bmNhc3Q8RHJh
d0ltYWdlQnVmZmVyPihpdGVtKTsKKyAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBJdGVtVHlwZTo6
RHJhd05hdGl2ZUltYWdlOgogICAgICAgICB0cyA8PCBkb3duY2FzdDxEcmF3TmF0aXZlSW1hZ2U+
KGl0ZW0pOwogICAgICAgICBicmVhazsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1zLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtcy5oCmlu
ZGV4IGQ0Y2E5OGU2NDg0NTFiMjZjYmY2NDk4MzViMWRhMmYzYzIzYjRhZmYuLjZjM2VjMjgyNTA1
ZTVjMzA2ZjExMDAxN2JlMjc2ZDYwOTUwZmU2ZDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1zLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0
SXRlbXMuaApAQCAtMzUsNiArMzUsNyBAQAogI2luY2x1ZGUgIkltYWdlRGF0YS5oIgogI2luY2x1
ZGUgIk1lZGlhUGxheWVySWRlbnRpZmllci5oIgogI2luY2x1ZGUgIlBhdHRlcm4uaCIKKyNpbmNs
dWRlICJSZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIuaCIKICNpbmNsdWRlICJTaGFyZWRCdWZmZXIu
aCIKICNpbmNsdWRlIDx3dGYvVHlwZUNhc3RzLmg+CiAKQEAgLTE1MzMsNiArMTUzNCw3MSBAQCBP
cHRpb25hbDxSZWY8RHJhd1RpbGVkU2NhbGVkSW1hZ2U+PiBEcmF3VGlsZWRTY2FsZWRJbWFnZTo6
ZGVjb2RlKERlY29kZXImIGRlY29kZQogICAgIHJldHVybiBEcmF3VGlsZWRTY2FsZWRJbWFnZTo6
Y3JlYXRlKCppbWFnZUhhbmRsZS0+aW1hZ2UsICpkZXN0aW5hdGlvbiwgKnNvdXJjZSwgKnRpbGVT
Y2FsZUZhY3RvciwgaFJ1bGUsIHZSdWxlLCAqaW1hZ2VQYWludGluZ09wdGlvbnMpOwogfQogCitj
bGFzcyBEcmF3SW1hZ2VCdWZmZXIgOiBwdWJsaWMgRHJhd2luZ0l0ZW0geworcHVibGljOgorICAg
IHN0YXRpYyBSZWY8RHJhd0ltYWdlQnVmZmVyPiBjcmVhdGUoUmVtb3RlUmVzb3VyY2VJZGVudGlm
aWVyIHJlbW90ZVJlc291cmNlSWRlbnRpZmllciwgY29uc3QgRmxvYXRSZWN0JiBkZXN0aW5hdGlv
biwgY29uc3QgRmxvYXRSZWN0JiBzb3VyY2UsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBv
cHRpb25zKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRHJhd0ltYWdlQnVm
ZmVyKHJlbW90ZVJlc291cmNlSWRlbnRpZmllciwgZGVzdGluYXRpb24sIHNvdXJjZSwgb3B0aW9u
cykpOworICAgIH0KKworICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwgfkRyYXdJbWFnZUJ1ZmZl
cigpOworCisgICAgUmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyIHJlbW90ZVJlc291cmNlSWRlbnRp
ZmllcigpIGNvbnN0IHsgcmV0dXJuIG1fcmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyOyB9CisgICAg
RmxvYXRSZWN0IHNvdXJjZSgpIGNvbnN0IHsgcmV0dXJuIG1fc3JjUmVjdDsgfQorICAgIEZsb2F0
UmVjdCBkZXN0aW5hdGlvblJlY3QoKSBjb25zdCB7IHJldHVybiBtX2Rlc3RpbmF0aW9uUmVjdDsg
fQorICAgIEltYWdlUGFpbnRpbmdPcHRpb25zIG9wdGlvbnMoKSBjb25zdCB7IHJldHVybiBtX29w
dGlvbnM7IH0KKworICAgIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+IHZvaWQgZW5jb2RlKEVuY29k
ZXImKSBjb25zdDsKKyAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGF0aWMgT3B0aW9uYWw8
UmVmPERyYXdJbWFnZUJ1ZmZlcj4+IGRlY29kZShEZWNvZGVyJik7CisKK3ByaXZhdGU6CisgICAg
V0VCQ09SRV9FWFBPUlQgRHJhd0ltYWdlQnVmZmVyKFJlbW90ZVJlc291cmNlSWRlbnRpZmllciwg
Y29uc3QgRmxvYXRSZWN0JiBkZXN0aW5hdGlvbiwgY29uc3QgRmxvYXRSZWN0JiBzb3VyY2UsIGNv
bnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJik7CisKKyAgICB2b2lkIGFwcGx5KEdyYXBoaWNzQ29u
dGV4dCYpIGNvbnN0IG92ZXJyaWRlOworCisgICAgT3B0aW9uYWw8RmxvYXRSZWN0PiBsb2NhbEJv
dW5kcyhjb25zdCBHcmFwaGljc0NvbnRleHQmKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX2Rl
c3RpbmF0aW9uUmVjdDsgfQorCisgICAgUmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyIG1fcmVtb3Rl
UmVzb3VyY2VJZGVudGlmaWVyOworICAgIEZsb2F0UmVjdCBtX2Rlc3RpbmF0aW9uUmVjdDsKKyAg
ICBGbG9hdFJlY3QgbV9zcmNSZWN0OworICAgIEltYWdlUGFpbnRpbmdPcHRpb25zIG1fb3B0aW9u
czsKK307CisKK3RlbXBsYXRlPGNsYXNzIEVuY29kZXI+Cit2b2lkIERyYXdJbWFnZUJ1ZmZlcjo6
ZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0Cit7CisgICAgZW5jb2RlciA8PCBtX3JlbW90
ZVJlc291cmNlSWRlbnRpZmllcjsKKyAgICBlbmNvZGVyIDw8IG1fZGVzdGluYXRpb25SZWN0Owor
ICAgIGVuY29kZXIgPDwgbV9zcmNSZWN0OworICAgIGVuY29kZXIgPDwgbV9vcHRpb25zOworfQor
Cit0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPgorT3B0aW9uYWw8UmVmPERyYXdJbWFnZUJ1ZmZlcj4+
IERyYXdJbWFnZUJ1ZmZlcjo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCit7CisgICAgT3B0aW9u
YWw8UmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyPiByZW1vdGVSZXNvdXJjZUlkZW50aWZpZXI7Cisg
ICAgZGVjb2RlciA+PiByZW1vdGVSZXNvdXJjZUlkZW50aWZpZXI7CisgICAgaWYgKCFyZW1vdGVS
ZXNvdXJjZUlkZW50aWZpZXIpCisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisKKyAgICBP
cHRpb25hbDxGbG9hdFJlY3Q+IGRlc3RpbmF0aW9uOworICAgIGRlY29kZXIgPj4gZGVzdGluYXRp
b247CisgICAgaWYgKCFkZXN0aW5hdGlvbikKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsK
KworICAgIE9wdGlvbmFsPEZsb2F0UmVjdD4gc291cmNlOworICAgIGRlY29kZXIgPj4gc291cmNl
OworICAgIGlmICghc291cmNlKQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworCisgICAg
T3B0aW9uYWw8SW1hZ2VQYWludGluZ09wdGlvbnM+IG9wdGlvbnM7CisgICAgZGVjb2RlciA+PiBv
cHRpb25zOworICAgIGlmICghb3B0aW9ucykKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsK
KworICAgIHJldHVybiBEcmF3SW1hZ2VCdWZmZXI6OmNyZWF0ZSgqcmVtb3RlUmVzb3VyY2VJZGVu
dGlmaWVyLCAqZGVzdGluYXRpb24sICpzb3VyY2UsICpvcHRpb25zKTsKK30KKwogY2xhc3MgRHJh
d05hdGl2ZUltYWdlIDogcHVibGljIERyYXdpbmdJdGVtIHsKIHB1YmxpYzoKICAgICBzdGF0aWMg
UmVmPERyYXdOYXRpdmVJbWFnZT4gY3JlYXRlKGNvbnN0IE5hdGl2ZUltYWdlUHRyJiBpbWFnZSwg
Y29uc3QgRmxvYXRTaXplJiBpbWFnZVNpemUsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNv
bnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmIG9wdGlv
bnMpCkBAIC0zMDY2LDYgKzMxMzIsOSBAQCB2b2lkIEl0ZW06OmVuY29kZShFbmNvZGVyJiBlbmNv
ZGVyKSBjb25zdAogICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdUaWxlZFNjYWxlZEltYWdlOgogICAg
ICAgICBlbmNvZGVyIDw8IGRvd25jYXN0PERyYXdUaWxlZFNjYWxlZEltYWdlPigqdGhpcyk7CiAg
ICAgICAgIGJyZWFrOworICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdJbWFnZUJ1ZmZlcjoKKyAgICAg
ICAgZW5jb2RlciA8PCBkb3duY2FzdDxEcmF3SW1hZ2VCdWZmZXI+KCp0aGlzKTsKKyAgICAgICAg
YnJlYWs7CiAgICAgY2FzZSBJdGVtVHlwZTo6RHJhd05hdGl2ZUltYWdlOgogICAgICAgICBlbmNv
ZGVyIDw8IGRvd25jYXN0PERyYXdOYXRpdmVJbWFnZT4oKnRoaXMpOwogICAgICAgICBicmVhazsK
QEAgLTMyNjMsNiArMzMzMiwxMCBAQCBPcHRpb25hbDxSZWY8SXRlbT4+IEl0ZW06OmRlY29kZShE
ZWNvZGVyJiBkZWNvZGVyKQogICAgICAgICBpZiAoYXV0byBpdGVtID0gRHJhd1RpbGVkU2NhbGVk
SW1hZ2U6OmRlY29kZShkZWNvZGVyKSkKICAgICAgICAgICAgIHJldHVybiBzdGF0aWNfcmVmZXJl
bmNlX2Nhc3Q8SXRlbT4oV1RGTW92ZSgqaXRlbSkpOwogICAgICAgICBicmVhazsKKyAgICBjYXNl
IEl0ZW1UeXBlOjpEcmF3SW1hZ2VCdWZmZXI6CisgICAgICAgIGlmIChhdXRvIGl0ZW0gPSBEcmF3
SW1hZ2VCdWZmZXI6OmRlY29kZShkZWNvZGVyKSkKKyAgICAgICAgICAgIHJldHVybiBzdGF0aWNf
cmVmZXJlbmNlX2Nhc3Q8SXRlbT4oV1RGTW92ZSgqaXRlbSkpOworICAgICAgICBicmVhazsKICAg
ICBjYXNlIEl0ZW1UeXBlOjpEcmF3TmF0aXZlSW1hZ2U6CiAgICAgICAgIGlmIChhdXRvIGl0ZW0g
PSBEcmF3TmF0aXZlSW1hZ2U6OmRlY29kZShkZWNvZGVyKSkKICAgICAgICAgICAgIHJldHVybiBz
dGF0aWNfcmVmZXJlbmNlX2Nhc3Q8SXRlbT4oV1RGTW92ZSgqaXRlbSkpOwpAQCAtMzQyNSw2ICsz
NDk4LDcgQEAgU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19ESVNQTEFZTElTVF9JVEVNKERyYXdHbHlw
aHMpCiBTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0RJU1BMQVlMSVNUX0lURU0oRHJhd0ltYWdlKQog
U1BFQ0lBTElaRV9UWVBFX1RSQUlUU19ESVNQTEFZTElTVF9JVEVNKERyYXdUaWxlZEltYWdlKQog
U1BFQ0lBTElaRV9UWVBFX1RSQUlUU19ESVNQTEFZTElTVF9JVEVNKERyYXdUaWxlZFNjYWxlZElt
YWdlKQorU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19ESVNQTEFZTElTVF9JVEVNKERyYXdJbWFnZUJ1
ZmZlcikKIFNQRUNJQUxJWkVfVFlQRV9UUkFJVFNfRElTUExBWUxJU1RfSVRFTShEcmF3TmF0aXZl
SW1hZ2UpCiBTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0RJU1BMQVlMSVNUX0lURU0oRHJhd1BhdHRl
cm4pCiBTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0RJU1BMQVlMSVNUX0lURU0oRHJhd1JlY3QpCkBA
IC0zNDg3LDYgKzM1NjEsNyBAQCB0ZW1wbGF0ZTw+IHN0cnVjdCBFbnVtVHJhaXRzPFdlYkNvcmU6
OkRpc3BsYXlMaXN0OjpJdGVtVHlwZT4gewogICAgIFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVt
VHlwZTo6RHJhd0ltYWdlLAogICAgIFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtVHlwZTo6RHJh
d1RpbGVkSW1hZ2UsCiAgICAgV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpEcmF3VGls
ZWRTY2FsZWRJbWFnZSwKKyAgICBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OkRyYXdJ
bWFnZUJ1ZmZlciwKICAgICBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OkRyYXdOYXRp
dmVJbWFnZSwKICAgICBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OkRyYXdQYXR0ZXJu
LAogICAgIFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtVHlwZTo6RHJhd1JlY3QsCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxh
eUxpc3RSZWNvcmRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNw
bGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlci5jcHAKaW5kZXggNjhkMmY2ODA1MTVlYWU1NThh
MGQ0ZmJlZjZhYjFhMjdlMGEwOWViNC4uOGI3MWE2NTViMmUyMzM3ZDhlYzJkMDc0ZGI1ZmNhYTNl
ZDY4OTI5NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlz
cGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVyLmNwcApAQCAt
MzAsNiArMzAsNyBAQAogI2luY2x1ZGUgIkRpc3BsYXlMaXN0RHJhd2luZ0NvbnRleHQuaCIKICNp
bmNsdWRlICJEaXNwbGF5TGlzdEl0ZW1zLmgiCiAjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0Lmgi
CisjaW5jbHVkZSAiSW1hZ2VCdWZmZXIuaCIKICNpbmNsdWRlICJMb2dnaW5nLmgiCiAjaW5jbHVk
ZSA8d3RmL01hdGhFeHRyYXMuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9UZXh0U3RyZWFtLmg+CkBA
IC0zNywxMCArMzgsMTAgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIG5hbWVzcGFjZSBEaXNwbGF5
TGlzdCB7CiAKLVJlY29yZGVyOjpSZWNvcmRlcihHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIERp
c3BsYXlMaXN0JiBkaXNwbGF5TGlzdCwgY29uc3QgR3JhcGhpY3NDb250ZXh0U3RhdGUmIHN0YXRl
LCBjb25zdCBGbG9hdFJlY3QmIGluaXRpYWxDbGlwLCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIGlu
aXRpYWxDVE0sIE9ic2VydmVyKiBvYnNlcnZlcikKK1JlY29yZGVyOjpSZWNvcmRlcihHcmFwaGlj
c0NvbnRleHQmIGNvbnRleHQsIERpc3BsYXlMaXN0JiBkaXNwbGF5TGlzdCwgY29uc3QgR3JhcGhp
Y3NDb250ZXh0U3RhdGUmIHN0YXRlLCBjb25zdCBGbG9hdFJlY3QmIGluaXRpYWxDbGlwLCBjb25z
dCBBZmZpbmVUcmFuc2Zvcm0mIGluaXRpYWxDVE0sIERlbGVnYXRlKiBkZWxlZ2F0ZSkKICAgICA6
IEdyYXBoaWNzQ29udGV4dEltcGwoY29udGV4dCwgaW5pdGlhbENsaXAsIEFmZmluZVRyYW5zZm9y
bSgpKQogICAgICwgbV9kaXNwbGF5TGlzdChkaXNwbGF5TGlzdCkKLSAgICAsIG1fb2JzZXJ2ZXIo
b2JzZXJ2ZXIpCisgICAgLCBtX2RlbGVnYXRlKGRlbGVnYXRlKQogewogICAgIExPR19XSVRIX1NU
UkVBTShEaXNwbGF5TGlzdHMsIHN0cmVhbSA8PCAiXG5SZWNvcmRpbmcgd2l0aCBjbGlwICIgPDwg
aW5pdGlhbENsaXApOwogICAgIG1fc3RhdGVTdGFjay5hcHBlbmQoeyBzdGF0ZSwgaW5pdGlhbENU
TSwgaW5pdGlhbENsaXAgfSk7CkBAIC05Myw4ICs5NCw4IEBAIHN0YXRpYyBSZWY8SXRlbT4gY3Jl
YXRlU3RhdGVDaGFuZ2VJdGVtKGNvbnN0IEdyYXBoaWNzQ29udGV4dFN0YXRlQ2hhbmdlJiBjaGFu
Z2VzCiAKIHZvaWQgUmVjb3JkZXI6OndpbGxBcHBlbmRJdGVtKGNvbnN0IEl0ZW0mIGl0ZW0pCiB7
Ci0gICAgaWYgKG1fb2JzZXJ2ZXIpCi0gICAgICAgIG1fb2JzZXJ2ZXItPndpbGxBcHBlbmRJdGVt
KGl0ZW0pOworICAgIGlmIChtX2RlbGVnYXRlKQorICAgICAgICBtX2RlbGVnYXRlLT53aWxsQXBw
ZW5kSXRlbShpdGVtKTsKIAogICAgIGlmIChpdGVtLmlzRHJhd2luZ0l0ZW0oKQogI2lmIFVTRShD
RykKQEAgLTE2Niw2ICsxNjcsMTUgQEAgSW1hZ2VEcmF3UmVzdWx0IFJlY29yZGVyOjpkcmF3VGls
ZWRJbWFnZShJbWFnZSYgaW1hZ2UsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdGluYXQKICAgICByZXR1
cm4gSW1hZ2VEcmF3UmVzdWx0OjpEaWRSZWNvcmQ7CiB9CiAKK2Jvb2wgUmVjb3JkZXI6OmRyYXdJ
bWFnZUJ1ZmZlcihXZWJDb3JlOjpJbWFnZUJ1ZmZlciYgaW1hZ2VCdWZmZXIsIGNvbnN0IEZsb2F0
UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgSW1hZ2VQYWlu
dGluZ09wdGlvbnMmIG9wdGlvbnMpCit7CisgICAgaWYgKCFtX2RlbGVnYXRlIHx8ICFtX2RlbGVn
YXRlLT5sb2NrUmVtb3RlSW1hZ2VCdWZmZXIoaW1hZ2VCdWZmZXIpKQorICAgICAgICByZXR1cm4g
ZmFsc2U7CisKKyAgICBhcHBlbmRJdGVtQW5kVXBkYXRlRXh0ZW50KERyYXdJbWFnZUJ1ZmZlcjo6
Y3JlYXRlKGltYWdlQnVmZmVyLnJlbW90ZVJlc291cmNlSWRlbnRpZmllcigpLCBkZXN0UmVjdCwg
c3JjUmVjdCwgb3B0aW9ucykpOworICAgIHJldHVybiB0cnVlOworfQorCiB2b2lkIFJlY29yZGVy
OjpkcmF3TmF0aXZlSW1hZ2UoY29uc3QgTmF0aXZlSW1hZ2VQdHImIGltYWdlLCBjb25zdCBGbG9h
dFNpemUmIGltYWdlU2l6ZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRS
ZWN0JiBzcmNSZWN0LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgb3B0aW9ucykKIHsKICAg
ICBhcHBlbmRJdGVtQW5kVXBkYXRlRXh0ZW50KERyYXdOYXRpdmVJbWFnZTo6Y3JlYXRlKGltYWdl
LCBpbWFnZVNpemUsIGRlc3RSZWN0LCBzcmNSZWN0LCBvcHRpb25zKSk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RS
ZWNvcmRlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3Rz
L0Rpc3BsYXlMaXN0UmVjb3JkZXIuaAppbmRleCAxYjI0YzI2YzY3Mjg4ZjgxNzI3M2EyZDJhZWYy
YjRiYzk2ZTM1Yzc1Li45MjNjNTQ4ODU3MjlmYjUzNzc2ZGFkYWQ5YTY4YmQ1MTMyODdiMzEyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMv
RGlzcGxheUxpc3RSZWNvcmRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVyLmgKQEAgLTUzLDggKzUzLDggQEAg
Y2xhc3MgUmVjb3JkZXIgOiBwdWJsaWMgR3JhcGhpY3NDb250ZXh0SW1wbCB7CiAgICAgV1RGX01B
S0VfRkFTVF9BTExPQ0FURUQ7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoUmVjb3JkZXIpOwog
cHVibGljOgotICAgIGNsYXNzIE9ic2VydmVyOwotICAgIFdFQkNPUkVfRVhQT1JUIFJlY29yZGVy
KEdyYXBoaWNzQ29udGV4dCYsIERpc3BsYXlMaXN0JiwgY29uc3QgR3JhcGhpY3NDb250ZXh0U3Rh
dGUmLCBjb25zdCBGbG9hdFJlY3QmIGluaXRpYWxDbGlwLCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0m
LCBPYnNlcnZlciogPSBudWxscHRyKTsKKyAgICBjbGFzcyBEZWxlZ2F0ZTsKKyAgICBXRUJDT1JF
X0VYUE9SVCBSZWNvcmRlcihHcmFwaGljc0NvbnRleHQmLCBEaXNwbGF5TGlzdCYsIGNvbnN0IEdy
YXBoaWNzQ29udGV4dFN0YXRlJiwgY29uc3QgRmxvYXRSZWN0JiBpbml0aWFsQ2xpcCwgY29uc3Qg
QWZmaW5lVHJhbnNmb3JtJiwgRGVsZWdhdGUqID0gbnVsbHB0cik7CiAgICAgV0VCQ09SRV9FWFBP
UlQgdmlydHVhbCB+UmVjb3JkZXIoKTsKIAogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgcHV0SW1h
Z2VEYXRhKEFscGhhUHJlbXVsdGlwbGljYXRpb24gaW5wdXRGb3JtYXQsIGNvbnN0IEltYWdlRGF0
YSYsIGNvbnN0IEludFJlY3QmIHNyY1JlY3QsIGNvbnN0IEludFBvaW50JiBkZXN0UG9pbnQsIEFs
cGhhUHJlbXVsdGlwbGljYXRpb24gZGVzdEZvcm1hdCk7CkBAIC02MywxMCArNjMsMTEgQEAgcHVi
bGljOgogCiAgICAgdm9pZCBhcHBlbmRJdGVtQW5kVXBkYXRlRXh0ZW50KFJlZjxEcmF3aW5nSXRl
bT4mJik7CiAKLSAgICBjbGFzcyBPYnNlcnZlciB7CisgICAgY2xhc3MgRGVsZWdhdGUgewogICAg
IHB1YmxpYzoKLSAgICAgICAgdmlydHVhbCB+T2JzZXJ2ZXIoKSB7IH0KKyAgICAgICAgdmlydHVh
bCB+RGVsZWdhdGUoKSB7IH0KICAgICAgICAgdmlydHVhbCB2b2lkIHdpbGxBcHBlbmRJdGVtKGNv
bnN0IEl0ZW0mKSB7IH07CisgICAgICAgIHZpcnR1YWwgYm9vbCBsb2NrUmVtb3RlSW1hZ2VCdWZm
ZXIoV2ViQ29yZTo6SW1hZ2VCdWZmZXImKSB7IHJldHVybiBmYWxzZTsgfQogICAgIH07CiAKIHBy
aXZhdGU6CkBAIC0xMDUsNiArMTA2LDcgQEAgcHJpdmF0ZToKICAgICBJbWFnZURyYXdSZXN1bHQg
ZHJhd1RpbGVkSW1hZ2UoSW1hZ2UmLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RpbmF0aW9uLCBjb25z
dCBGbG9hdFBvaW50JiBzb3VyY2UsIGNvbnN0IEZsb2F0U2l6ZSYgdGlsZVNpemUsIGNvbnN0IEZs
b2F0U2l6ZSYgc3BhY2luZywgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmKSBvdmVycmlkZTsK
ICAgICBJbWFnZURyYXdSZXN1bHQgZHJhd1RpbGVkSW1hZ2UoSW1hZ2UmLCBjb25zdCBGbG9hdFJl
Y3QmIGRlc3RpbmF0aW9uLCBjb25zdCBGbG9hdFJlY3QmIHNvdXJjZSwgY29uc3QgRmxvYXRTaXpl
JiB0aWxlU2NhbGVGYWN0b3IsIEltYWdlOjpUaWxlUnVsZSBoUnVsZSwgSW1hZ2U6OlRpbGVSdWxl
IHZSdWxlLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYpIG92ZXJyaWRlOwogCisgICAgYm9v
bCBkcmF3SW1hZ2VCdWZmZXIoV2ViQ29yZTo6SW1hZ2VCdWZmZXImLCBjb25zdCBGbG9hdFJlY3Qm
IGRlc3RpbmF0aW9uLCBjb25zdCBGbG9hdFJlY3QmIHNvdXJjZSwgY29uc3QgSW1hZ2VQYWludGlu
Z09wdGlvbnMmKSBvdmVycmlkZTsKICAgICB2b2lkIGRyYXdOYXRpdmVJbWFnZShjb25zdCBOYXRp
dmVJbWFnZVB0ciYsIGNvbnN0IEZsb2F0U2l6ZSYgc2VsZlNpemUsIGNvbnN0IEZsb2F0UmVjdCYg
ZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgSW1hZ2VQYWludGluZ09w
dGlvbnMmKSBvdmVycmlkZTsKICAgICB2b2lkIGRyYXdQYXR0ZXJuKEltYWdlJiwgY29uc3QgRmxv
YXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBBZmZpbmVU
cmFuc2Zvcm0mLCBjb25zdCBGbG9hdFBvaW50JiBwaGFzZSwgY29uc3QgRmxvYXRTaXplJiBzcGFj
aW5nLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYpIG92ZXJyaWRlOwogCkBAIC0xODcsNyAr
MTg5LDcgQEAgcHJpdmF0ZToKICAgICBDb250ZXh0U3RhdGUmIGN1cnJlbnRTdGF0ZSgpOwogCiAg
ICAgRGlzcGxheUxpc3QmIG1fZGlzcGxheUxpc3Q7Ci0gICAgT2JzZXJ2ZXIqIG1fb2JzZXJ2ZXI7
CisgICAgRGVsZWdhdGUqIG1fZGVsZWdhdGU7CiAKICAgICBWZWN0b3I8Q29udGV4dFN0YXRlLCAz
Mj4gbV9zdGF0ZVN0YWNrOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL25pY29zaWEvY2Fpcm8vTmljb3NpYUNhaXJvT3BlcmF0aW9uUmVjb3JkZXIuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS9jYWlyby9OaWNvc2lh
Q2Fpcm9PcGVyYXRpb25SZWNvcmRlci5jcHAKaW5kZXggMzA0ZmFjYmFiMTUyMTc5MWRhYTg2ZGIx
NTMxNzUzZTM4NjcxMDg0ZC4uYTJjOWUwOTNmYzE0YmE1YzFlODI5YzRiMjRlMTY1NDAwMzdhNDQ1
NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS9j
YWlyby9OaWNvc2lhQ2Fpcm9PcGVyYXRpb25SZWNvcmRlci5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS9jYWlyby9OaWNvc2lhQ2Fpcm9PcGVyYXRpb25S
ZWNvcmRlci5jcHAKQEAgLTU0OSw2ICs1NDksMTIgQEAgSW1hZ2VEcmF3UmVzdWx0IENhaXJvT3Bl
cmF0aW9uUmVjb3JkZXI6OmRyYXdUaWxlZEltYWdlKEltYWdlJiBpbWFnZSwgY29uc3QgRmxvYXQK
ICAgICByZXR1cm4gR3JhcGhpY3NDb250ZXh0SW1wbDo6ZHJhd1RpbGVkSW1hZ2VJbXBsKGdyYXBo
aWNzQ29udGV4dCgpLCBpbWFnZSwgZGVzdGluYXRpb24sIHNvdXJjZSwgdGlsZVNjYWxlRmFjdG9y
LCBoUnVsZSwgdlJ1bGUsIGltYWdlUGFpbnRpbmdPcHRpb25zKTsKIH0KIAorYm9vbCBDYWlyb09w
ZXJhdGlvblJlY29yZGVyOjpkcmF3SW1hZ2VCdWZmZXIoSW1hZ2VCdWZmZXImLCBjb25zdCBGbG9h
dFJlY3QmLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYpCit7
CisgICAgLy8gRklYTUU6IE5vdCBpbXBsZW1lbnRlZC4KKyAgICByZXR1cm4gZmFsc2U7Cit9CisK
IHZvaWQgQ2Fpcm9PcGVyYXRpb25SZWNvcmRlcjo6ZHJhd05hdGl2ZUltYWdlKGNvbnN0IE5hdGl2
ZUltYWdlUHRyJiBpbWFnZSwgY29uc3QgRmxvYXRTaXplJiBpbWFnZVNpemUsIGNvbnN0IEZsb2F0
UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgSW1hZ2VQYWlu
dGluZ09wdGlvbnMmIG9wdGlvbnMpCiB7CiAgICAgc3RydWN0IERyYXdOYXRpdmVJbWFnZSBmaW5h
bCA6IFBhaW50aW5nT3BlcmF0aW9uLCBPcGVyYXRpb25EYXRhPFJlZlB0cjxjYWlyb19zdXJmYWNl
X3Q+LCBGbG9hdFJlY3QsIEZsb2F0UmVjdCwgSW1hZ2VQYWludGluZ09wdGlvbnMsIGZsb2F0LCBD
YWlybzo6U2hhZG93U3RhdGU+IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL25pY29zaWEvY2Fpcm8vTmljb3NpYUNhaXJvT3BlcmF0aW9uUmVjb3JkZXIuaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvY2Fpcm8vTmljb3NpYUNh
aXJvT3BlcmF0aW9uUmVjb3JkZXIuaAppbmRleCA1NzJmZjIxNjZmNmU5NzNhNzYzYjY3Y2I2YmI5
NmY0M2YyNmE4ZDUwLi4zODA5M2Q0MTM1YjRkN2I2NTExYTE2MDg3YWZmMTNmNjAzZWQxM2JhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lhL2NhaXJv
L05pY29zaWFDYWlyb09wZXJhdGlvblJlY29yZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS9jYWlyby9OaWNvc2lhQ2Fpcm9PcGVyYXRpb25SZWNvcmRl
ci5oCkBAIC02Nyw2ICs2Nyw4IEBAIHByaXZhdGU6CiAgICAgV2ViQ29yZTo6SW1hZ2VEcmF3UmVz
dWx0IGRyYXdJbWFnZShXZWJDb3JlOjpJbWFnZSYsIGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYs
IGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYsIGNvbnN0IFdlYkNvcmU6OkltYWdlUGFpbnRpbmdP
cHRpb25zJikgb3ZlcnJpZGU7CiAgICAgV2ViQ29yZTo6SW1hZ2VEcmF3UmVzdWx0IGRyYXdUaWxl
ZEltYWdlKFdlYkNvcmU6OkltYWdlJiwgY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0JiwgY29uc3Qg
V2ViQ29yZTo6RmxvYXRQb2ludCYsIGNvbnN0IFdlYkNvcmU6OkZsb2F0U2l6ZSYsIGNvbnN0IFdl
YkNvcmU6OkZsb2F0U2l6ZSYsIGNvbnN0IFdlYkNvcmU6OkltYWdlUGFpbnRpbmdPcHRpb25zJikg
b3ZlcnJpZGU7CiAgICAgV2ViQ29yZTo6SW1hZ2VEcmF3UmVzdWx0IGRyYXdUaWxlZEltYWdlKFdl
YkNvcmU6OkltYWdlJiwgY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0JiwgY29uc3QgV2ViQ29yZTo6
RmxvYXRSZWN0JiwgY29uc3QgV2ViQ29yZTo6RmxvYXRTaXplJiwgV2ViQ29yZTo6SW1hZ2U6OlRp
bGVSdWxlLCBXZWJDb3JlOjpJbWFnZTo6VGlsZVJ1bGUsIGNvbnN0IFdlYkNvcmU6OkltYWdlUGFp
bnRpbmdPcHRpb25zJikgb3ZlcnJpZGU7CisKKyAgICBib29sIGRyYXdJbWFnZUJ1ZmZlcihXZWJD
b3JlOjpJbWFnZUJ1ZmZlciYsIGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYgZGVzdGluYXRpb24s
IGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYgc291cmNlLCBjb25zdCBXZWJDb3JlOjpJbWFnZVBh
aW50aW5nT3B0aW9ucyYpIG92ZXJyaWRlOwogICAgIHZvaWQgZHJhd05hdGl2ZUltYWdlKGNvbnN0
IFdlYkNvcmU6Ok5hdGl2ZUltYWdlUHRyJiwgY29uc3QgV2ViQ29yZTo6RmxvYXRTaXplJiwgY29u
c3QgV2ViQ29yZTo6RmxvYXRSZWN0JiwgY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0JiwgY29uc3Qg
V2ViQ29yZTo6SW1hZ2VQYWludGluZ09wdGlvbnMmKSBvdmVycmlkZTsKICAgICB2b2lkIGRyYXdQ
YXR0ZXJuKFdlYkNvcmU6OkltYWdlJiwgY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0JiwgY29uc3Qg
V2ViQ29yZTo6RmxvYXRSZWN0JiwgY29uc3QgV2ViQ29yZTo6QWZmaW5lVHJhbnNmb3JtJiwgY29u
c3QgV2ViQ29yZTo6RmxvYXRQb2ludCYsIGNvbnN0IFdlYkNvcmU6OkZsb2F0U2l6ZSYsIGNvbnN0
IFdlYkNvcmU6OkltYWdlUGFpbnRpbmdPcHRpb25zJikgb3ZlcnJpZGU7CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVJbWFnZUJ1ZmZlci5oIGIv
U291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUltYWdlQnVmZmVyLmgKaW5k
ZXggNzhkODJmOGM0NGJjMzdkMjEzYTgwODg0YWJlODRmY2YwMmEwNGYyYi4uZTI2ODM2MmE1MTRi
ZmIwZDkzMGRmMjRjMjdmYWI5ODk4NjdmOWJlMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9H
UFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUltYWdlQnVmZmVyLmgKKysrIGIvU291cmNlL1dlYktp
dC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUltYWdlQnVmZmVyLmgKQEAgLTgzLDcgKzgzLDcg
QEAgcHJpdmF0ZToKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICB9CiAKLSAgICAg
ICAgcmV0dXJuIGZhbHNlOworICAgICAgICByZXR1cm4gbV9yZW1vdGVSZW5kZXJpbmdCYWNrZW5k
LmFwcGx5UmVzb3VyY2VJdGVtKGl0ZW0sIGNvbnRleHQpOwogICAgIH0KIAogICAgIHZvaWQgYXBw
bHkoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OlBhaW50RnJhbWVGb3JNZWRpYSYgaXRlbSwgV2ViQ29y
ZTo6R3JhcGhpY3NDb250ZXh0JiBjb250ZXh0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9H
UFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQuY3BwIGIvU291cmNlL1dl
YktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQuY3BwCmluZGV4
IDFlZjI4ZWUyZjI1MjFkY2E1NTRmNDgwNTAyZjcyNzRjOWNjMjliMzguLjY1MzkxMmFlNGFmODI3
NTM2NjdmOTM4OWU0YjU3NDgzMzJkMTZlMjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BV
UHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5jcHAKQEAg
LTcyLDYgKzcyLDE4IEBAIHVpbnQ2NF90IFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6Om1lc3NhZ2VT
ZW5kZXJEZXN0aW5hdGlvbklEKCkgY29uc3QKICAgICByZXR1cm4gbV9yZW5kZXJpbmdCYWNrZW5k
SWRlbnRpZmllci50b1VJbnQ2NCgpOwogfQogCitib29sIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6
OmFwcGx5UmVzb3VyY2VJdGVtKGNvbnN0IERpc3BsYXlMaXN0OjpJdGVtJiBpdGVtLCBHcmFwaGlj
c0NvbnRleHQmIGNvbnRleHQpCit7CisgICAgaWYgKGl0ZW0udHlwZSgpID09IERpc3BsYXlMaXN0
OjpJdGVtVHlwZTo6RHJhd0ltYWdlQnVmZmVyKSB7CisgICAgICAgIGF1dG8mIGRyYXdJdGVtID0g
c3RhdGljX2Nhc3Q8Y29uc3QgRGlzcGxheUxpc3Q6OkRyYXdJbWFnZUJ1ZmZlciY+KGl0ZW0pOwor
ICAgICAgICBpZiAoYXV0byBpbWFnZUJ1ZmZlciA9IG1fcmVtb3RlUmVzb3VyY2VDYWNoZS5jYWNo
ZWRJbWFnZUJ1ZmZlcihkcmF3SXRlbS5yZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIoKSkpIHsKKyAg
ICAgICAgICAgIGltYWdlQnVmZmVyLT5kcmF3KGNvbnRleHQsIGRyYXdJdGVtLmRlc3RpbmF0aW9u
UmVjdCgpLCBkcmF3SXRlbS5zb3VyY2UoKSwgZHJhd0l0ZW0ub3B0aW9ucygpKTsKKyAgICAgICAg
ICAgIHJldHVybiB0cnVlOworICAgICAgICB9CisgICAgfQorICAgIHJldHVybiBmYWxzZTsKK30K
Kwogdm9pZCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjppbWFnZUJ1ZmZlckJhY2tlbmRXYXNDcmVh
dGVkKGNvbnN0IEZsb2F0U2l6ZSYgbG9naWNhbFNpemUsIGNvbnN0IEludFNpemUmIGJhY2tlbmRT
aXplLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIENvbG9yU3BhY2UgY29sb3JTcGFjZSwgSW1hZ2VC
dWZmZXJCYWNrZW5kSGFuZGxlIGhhbmRsZSwgUmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyIHJlbW90
ZVJlc291cmNlSWRlbnRpZmllcikKIHsKICAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVSZW5kZXJp
bmdCYWNrZW5kUHJveHk6OkltYWdlQnVmZmVyQmFja2VuZFdhc0NyZWF0ZWQobG9naWNhbFNpemUs
IGJhY2tlbmRTaXplLCByZXNvbHV0aW9uU2NhbGUsIGNvbG9yU3BhY2UsIFdURk1vdmUoaGFuZGxl
KSwgcmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyKSwgbV9yZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmll
cik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3Rl
UmVuZGVyaW5nQmFja2VuZC5oIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1Jl
bW90ZVJlbmRlcmluZ0JhY2tlbmQuaAppbmRleCBlZmZiYTQ0OWIxODhlYTJiNTRkMzYyYzJhYzU0
YzI4ZmMwY2NiM2VkLi44MTg3NGZhZTY1ZDI2MTgyYTgwMTI0NDM3MmVmY2IwNmYxODlmZDA4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVy
aW5nQmFja2VuZC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1v
dGVSZW5kZXJpbmdCYWNrZW5kLmgKQEAgLTQyLDYgKzQyLDcgQEAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIG5hbWVzcGFjZSBEaXNwbGF5TGlzdCB7CiBjbGFzcyBEaXNwbGF5TGlzdDsKK2NsYXNzIEl0
ZW07CiB9CiBjbGFzcyBGbG9hdFNpemU7CiBlbnVtIGNsYXNzIENvbG9yU3BhY2UgOiB1aW50OF90
OwpAQCAtNjEsNiArNjIsOSBAQCBwdWJsaWM6CiAKICAgICBHUFVDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzKiBncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzKCkgY29uc3Q7CiAKKyAgICAvLyBSZW5kZXJp
bmcgb3BlcmF0aW9ucy4KKyAgICBib29sIGFwcGx5UmVzb3VyY2VJdGVtKGNvbnN0IFdlYkNvcmU6
OkRpc3BsYXlMaXN0OjpJdGVtJiwgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0Jik7CisKICAgICAv
LyBNZXNzYWdlcyB0byBiZSBzZW50LgogICAgIHZvaWQgaW1hZ2VCdWZmZXJCYWNrZW5kV2FzQ3Jl
YXRlZChjb25zdCBXZWJDb3JlOjpGbG9hdFNpemUmIGxvZ2ljYWxTaXplLCBjb25zdCBXZWJDb3Jl
OjpJbnRTaXplJiBiYWNrZW5kU2l6ZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBXZWJDb3JlOjpD
b2xvclNwYWNlLCBJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGUsIFdlYkNvcmU6OlJlbW90ZVJlc291
cmNlSWRlbnRpZmllcik7CiAgICAgdm9pZCBmbHVzaERpc3BsYXlMaXN0V2FzQ29tbWl0dGVkKERp
c3BsYXlMaXN0Rmx1c2hJZGVudGlmaWVyLCBXZWJDb3JlOjpSZW1vdGVSZXNvdXJjZUlkZW50aWZp
ZXIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9Tb3VyY2VzLnR4dCBiL1NvdXJjZS9XZWJL
aXQvU291cmNlcy50eHQKaW5kZXggNzk2ZGI2OTk2ZWVkZmU1YjdlOTI4MDAxMzcyMDU0Y2Y2OWMz
ODA0Ni4uN2EzYjIzMDBiN2MzNjg5MGZmYzI1M2JiYTA1NTRhZjIwMzYyZjVkNSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9Tb3VyY2VzLnR4dAorKysgYi9Tb3VyY2UvV2ViS2l0L1NvdXJjZXMu
dHh0CkBAIC01NTcsOCArNTU3LDggQEAgV2ViUHJvY2Vzcy9NZWRpYVN0cmVhbS9Vc2VyTWVkaWFQ
ZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXIuY3BwCiAKIFdlYlByb2Nlc3MvR1BVL0dQVVByb2Nlc3ND
b25uZWN0aW9uLmNwcAogV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvSW1hZ2VCdWZmZXJTaGFyZWFi
bGVCaXRtYXBCYWNrZW5kLmNwcAotV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlSW1hZ2VC
dWZmZXJNZXNzYWdlSGFuZGxlclByb3h5LmNwcAogV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVt
b3RlUmVuZGVyaW5nQmFja2VuZFByb3h5LmNwcAorV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVt
b3RlUmVzb3VyY2VDYWNoZVByb3h5LmNwcAogV2ViUHJvY2Vzcy9HUFUvbWVkaWEvQXVkaW9UcmFj
a1ByaXZhdGVSZW1vdGUuY3BwCiBXZWJQcm9jZXNzL0dQVS9tZWRpYS9NZWRpYVBsYXllclByaXZh
dGVSZW1vdGUuY3BwCiBXZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVBdWRpb0Rlc3RpbmF0aW9u
UHJveHkuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qIGIvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagppbmRleCA2YmQ5YWM0NWYzMWFjNDNjMmZjMDk2NGFmNWZkZGU0YTc4ZTY4NDg3Li43NDg2
OTAzNDg4Y2E2M2ExNTRhMWU5YzAxNmU1OGZjYzhlOGJlYTg5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJL
aXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTQyMjQsOCArNDIyNCw2IEBA
CiAJCTcxQTY3NkE1MjJDNjIzMTgwMDdENjI5NSAvKiBXS1RvdWNoQWN0aW9uR2VzdHVyZVJlY29n
bml6ZXIubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IG5hbWUgPSBXS1RvdWNo
QWN0aW9uR2VzdHVyZVJlY29nbml6ZXIubW07IHBhdGggPSBpb3MvV0tUb3VjaEFjdGlvbkdlc3R1
cmVSZWNvZ25pemVyLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3MUZCODEwQTIy
NjA2MjdBMDAzMjM2NzcgLyogV2Vic2l0ZVNpbXVsYXRlZE1vdXNlRXZlbnRzRGlzcGF0Y2hQb2xp
Y3kuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2Vic2l0ZVNpbXVsYXRlZE1v
dXNlRXZlbnRzRGlzcGF0Y2hQb2xpY3kuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
NzIyNzgwMEIyNDA4QkQ3RDAwN0QzNzZCIC8qIFBsYXRmb3JtUmVtb3RlSW1hZ2VCdWZmZXJQcm94
eS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBQbGF0Zm9ybVJlbW90ZUltYWdlQnVmZmVyUHJveHkuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNzIyNzgwMEMyNDA5N0EwMjAwN0QzNzZCIC8qIFJl
bW90ZUltYWdlQnVmZmVyTWVzc2FnZUhhbmRsZXJQcm94eS5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBSZW1vdGVJbWFnZUJ1ZmZlck1lc3NhZ2VIYW5kbGVyUHJveHkuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwotCQk3MjI3ODAwRDI0MDk3QTAyMDA3RDM3NkIgLyogUmVtb3RlSW1hZ2VC
dWZmZXJNZXNzYWdlSGFuZGxlclByb3h5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlbW90ZUltYWdlQnVm
ZmVyTWVzc2FnZUhhbmRsZXJQcm94eS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3
MjZENTZERDI1M0E2NDgxMDAwMkVGOTAgLyogUmVtb3RlUmVzb3VyY2VDYWNoZS5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBSZW1vdGVSZXNvdXJjZUNhY2hlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJNzI2RDU2REUyNTNBNjQ4MTAwMDJFRjkwIC8qIFJlbW90ZVJlc291cmNlQ2Fj
aGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gUmVtb3RlUmVzb3VyY2VDYWNoZS5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk3MjdBN0YzNDI0MDc4NTdEMDA0RDI5MzEgLyogSW1hZ2VCdWZmZXJT
aGFyZWFibGVJT1N1cmZhY2VCYWNrZW5kLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IEltYWdlQnVmZmVyU2hhcmVhYmxlSU9TdXJmYWNlQmFja2VuZC5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC00MjM3LDYgKzQyMzUsOCBAQAogCQk3MjdBN0Y0OTI0
MDhBRUU2MDA0RDI5MzEgLyogUmVtb3RlSW1hZ2VCdWZmZXJQcm94eS5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBSZW1vdGVJbWFnZUJ1ZmZlclByb3h5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTcyOEU4NkVGMTc5NTE4OEMwMDg3ODc5RSAvKiBXZWJDb2xvclBpY2tlck1hYy5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJDb2xvclBpY2tlck1hYy5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk3MjhFODZGMDE3OTUxODhDMDA4Nzg3OUUgLyogV2ViQ29sb3JQ
aWNrZXJNYWMubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBXZWJD
b2xvclBpY2tlck1hYy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNzJCNTMxNTcy
NTNDMUU0RDAwNDkyOTVBIC8qIFJlbW90ZVJlc291cmNlQ2FjaGVQcm94eS5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBSZW1vdGVSZXNvdXJjZUNhY2hlUHJveHkuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQk3MkI1MzE1ODI1M0MxRTREMDA0OTI5NUEgLyogUmVtb3RlUmVzb3VyY2VD
YWNoZVByb3h5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlbW90ZVJlc291cmNlQ2FjaGVQcm94eS5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3NUE4RDJDNDE4N0NDRjlGMDBDMzlDOUUgLyog
V0tXZWJzaXRlRGF0YVN0b3JlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdL
V2Vic2l0ZURhdGFTdG9yZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3NUE4RDJD
NTE4N0NDRjlGMDBDMzlDOUUgLyogV0tXZWJzaXRlRGF0YVN0b3JlLm1tICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gV0tXZWJzaXRlRGF0YVN0b3JlLm1tOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk3NUE4RDJENDE4N0QxQzAxMDBDMzlDOUUgLyogV0tXZWJz
aXRlRGF0YVN0b3JlSW50ZXJuYWwuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
V0tXZWJzaXRlRGF0YVN0b3JlSW50ZXJuYWwuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
QEAgLTgxMzgsMTIgKzgxMzgsMTIgQEAKIAkJCQk3MjdBN0YzNjI0MDc4OEYwMDA0RDI5MzEgLyog
SW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRtYXBCYWNrZW5kLmggKi8sCiAJCQkJNzI3QTdGMzgyNDA3
ODhGMDAwNEQyOTMxIC8qIFBsYXRmb3JtSW1hZ2VCdWZmZXJTaGFyZWFibGVCYWNrZW5kLmggKi8s
CiAJCQkJNzIyNzgwMEIyNDA4QkQ3RDAwN0QzNzZCIC8qIFBsYXRmb3JtUmVtb3RlSW1hZ2VCdWZm
ZXJQcm94eS5oICovLAotCQkJCTcyMjc4MDBDMjQwOTdBMDIwMDdEMzc2QiAvKiBSZW1vdGVJbWFn
ZUJ1ZmZlck1lc3NhZ2VIYW5kbGVyUHJveHkuY3BwICovLAotCQkJCTcyMjc4MDBEMjQwOTdBMDIw
MDdEMzc2QiAvKiBSZW1vdGVJbWFnZUJ1ZmZlck1lc3NhZ2VIYW5kbGVyUHJveHkuaCAqLywKIAkJ
CQk3MjdBN0Y0OTI0MDhBRUU2MDA0RDI5MzEgLyogUmVtb3RlSW1hZ2VCdWZmZXJQcm94eS5oICov
LAogCQkJCTU1MDY0MDlEMjQwNzE2MDkwMEFBRTA0NSAvKiBSZW1vdGVSZW5kZXJpbmdCYWNrZW5k
UHJveHkuY3BwICovLAogCQkJCTU1MDY0MDlFMjQwNzE2MDkwMEFBRTA0NSAvKiBSZW1vdGVSZW5k
ZXJpbmdCYWNrZW5kUHJveHkuaCAqLywKIAkJCQk1NTA2NDBBMDI0MDcxOUUxMDBBQUUwNDUgLyog
UmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5Lm1lc3NhZ2VzLmluICovLAorCQkJCTcyQjUzMTU3
MjUzQzFFNEQwMDQ5Mjk1QSAvKiBSZW1vdGVSZXNvdXJjZUNhY2hlUHJveHkuY3BwICovLAorCQkJ
CTcyQjUzMTU4MjUzQzFFNEQwMDQ5Mjk1QSAvKiBSZW1vdGVSZXNvdXJjZUNhY2hlUHJveHkuaCAq
LywKIAkJCQk1NTA2NDA5RjI0MDcxOTZBMDBBQUUwNDUgLyogUmVuZGVyaW5nQmFja2VuZElkZW50
aWZpZXIuaCAqLywKIAkJCSk7CiAJCQlwYXRoID0gZ3JhcGhpY3M7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1BsYXRmb3JtUmVtb3RlSW1hZ2VCdWZm
ZXJQcm94eS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9QbGF0Zm9y
bVJlbW90ZUltYWdlQnVmZmVyUHJveHkuaAppbmRleCA5YWZmMDg4ZTM3Y2E3NmE3Zjg2NGFlN2U0
MmJiYjcwMDRmMWYxNTIzLi4wMDA2MGVjMTAxYzI1NGUyYjU4YTc2NDZhNGE0MjRmM2QwMjQ0OWUz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1BsYXRm
b3JtUmVtb3RlSW1hZ2VCdWZmZXJQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9HUFUvZ3JhcGhpY3MvUGxhdGZvcm1SZW1vdGVJbWFnZUJ1ZmZlclByb3h5LmgKQEAgLTM3LDQg
KzM3LDE0IEBAIHVzaW5nIEFjY2VsZXJhdGVkUmVtb3RlSW1hZ2VCdWZmZXJQcm94eSA9IFJlbW90
ZUltYWdlQnVmZmVyUHJveHk8QWNjZWxlcmF0ZWRJbWFnCiAKIH0gLy8gbmFtZXNwYWNlIFdlYktp
dAogCitTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0JFR0lOKFdlYktpdDo6VW5hY2NlbGVyYXRlZFJl
bW90ZUltYWdlQnVmZmVyUHJveHkpCisgICAgc3RhdGljIGJvb2wgaXNUeXBlKGNvbnN0IFdlYkNv
cmU6OkltYWdlQnVmZmVyJiBpbWFnZUJ1ZmZlcikgeyByZXR1cm4gaW1hZ2VCdWZmZXIucmVtb3Rl
UmVzb3VyY2VJZGVudGlmaWVyKCkgJiYgIWltYWdlQnVmZmVyLmlzQWNjZWxlcmF0ZWQoKTsgfQor
U1BFQ0lBTElaRV9UWVBFX1RSQUlUU19FTkQoKQorCisjaWYgSEFWRShJT1NVUkZBQ0UpCitTUEVD
SUFMSVpFX1RZUEVfVFJBSVRTX0JFR0lOKFdlYktpdDo6QWNjZWxlcmF0ZWRSZW1vdGVJbWFnZUJ1
ZmZlclByb3h5KQorICAgIHN0YXRpYyBib29sIGlzVHlwZShjb25zdCBXZWJDb3JlOjpJbWFnZUJ1
ZmZlciYgaW1hZ2VCdWZmZXIpIHsgcmV0dXJuIGltYWdlQnVmZmVyLnJlbW90ZVJlc291cmNlSWRl
bnRpZmllcigpICYmIGltYWdlQnVmZmVyLmlzQWNjZWxlcmF0ZWQoKTsgfQorU1BFQ0lBTElaRV9U
WVBFX1RSQUlUU19FTkQoKQorI2VuZGlmCisKICNlbmRpZiAvLyBFTkFCTEUoR1BVX1BST0NFU1Mp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90
ZUltYWdlQnVmZmVyTWVzc2FnZUhhbmRsZXJQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUltYWdlQnVmZmVyTWVzc2FnZUhhbmRsZXJQcm94eS5j
cHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGU5NTYyYTM2OGU2OWU0MjMwZTcyNjJj
MjYzNmRmMjg2ZDc0NmVhYzUuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVJbWFn
ZUJ1ZmZlck1lc3NhZ2VIYW5kbGVyUHJveHkuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsMTAzICsw
LDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0g
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAot
ICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0g
KiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICog
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiUmVtb3Rl
SW1hZ2VCdWZmZXJNZXNzYWdlSGFuZGxlclByb3h5LmgiCi0KLSNpZiBFTkFCTEUoR1BVX1BST0NF
U1MpCi0KLSNpbmNsdWRlICJJbWFnZURhdGFSZWZlcmVuY2UuaCIKLSNpbmNsdWRlICJSZW1vdGVS
ZW5kZXJpbmdCYWNrZW5kTWVzc2FnZXMuaCIKLSNpbmNsdWRlICJSZW1vdGVSZW5kZXJpbmdCYWNr
ZW5kUHJveHkuaCIKLSNpbmNsdWRlIDxXZWJDb3JlL0Rpc3BsYXlMaXN0SXRlbXMuaD4KLSNpbmNs
dWRlIDx3dGYvU3lzdGVtVHJhY2luZy5oPgotCi1uYW1lc3BhY2UgV2ViS2l0IHsKLXVzaW5nIG5h
bWVzcGFjZSBXZWJDb3JlOwotCi1SZW1vdGVJbWFnZUJ1ZmZlck1lc3NhZ2VIYW5kbGVyUHJveHk6
OlJlbW90ZUltYWdlQnVmZmVyTWVzc2FnZUhhbmRsZXJQcm94eShjb25zdCBGbG9hdFNpemUmIHNp
emUsIFJlbmRlcmluZ01vZGUgcmVuZGVyaW5nTW9kZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBD
b2xvclNwYWNlIGNvbG9yU3BhY2UsIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eSYgcmVtb3Rl
UmVuZGVyaW5nQmFja2VuZFByb3h5KQotICAgIDogbV9yZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJv
eHkobWFrZVdlYWtQdHIocmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5KSkKLXsKLSAgICAvLyBD
cmVhdGUgdGhlIFJlbW90ZUltYWdlQnVmZmVyUHJveHkuCi0gICAgbV9yZW1vdGVSZW5kZXJpbmdC
YWNrZW5kUHJveHktPnNlbmQoTWVzc2FnZXM6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OkNyZWF0
ZUltYWdlQnVmZmVyKHNpemUsIHJlbmRlcmluZ01vZGUsIHJlc29sdXRpb25TY2FsZSwgY29sb3JT
cGFjZSwgbV9yZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIpLCBtX3JlbW90ZVJlbmRlcmluZ0JhY2tl
bmRQcm94eS0+cmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXIoKSk7Ci19Ci0KLVJlbW90ZUltYWdl
QnVmZmVyTWVzc2FnZUhhbmRsZXJQcm94eTo6flJlbW90ZUltYWdlQnVmZmVyTWVzc2FnZUhhbmRs
ZXJQcm94eSgpCi17Ci0gICAgLy8gUmVsZWFzZSB0aGUgUmVtb3RlSW1hZ2VCdWZmZXJQcm94eS4K
LSAgICBpZiAoIW1fcmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5KQotICAgICAgICByZXR1cm47
Ci0gICAgbV9yZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHktPnNlbmQoTWVzc2FnZXM6OlJlbW90
ZVJlbmRlcmluZ0JhY2tlbmQ6OlJlbGVhc2VSZW1vdGVSZXNvdXJjZShtX3JlbW90ZVJlc291cmNl
SWRlbnRpZmllciksIG1fcmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5LT5yZW5kZXJpbmdCYWNr
ZW5kSWRlbnRpZmllcigpKTsKLX0KLQotUmVmUHRyPEltYWdlRGF0YT4gUmVtb3RlSW1hZ2VCdWZm
ZXJNZXNzYWdlSGFuZGxlclByb3h5OjpnZXRJbWFnZURhdGEoQWxwaGFQcmVtdWx0aXBsaWNhdGlv
biBvdXRwdXRGb3JtYXQsIGNvbnN0IEludFJlY3QmIHNyY1JlY3QpIGNvbnN0Ci17Ci0gICAgSVBD
OjpJbWFnZURhdGFSZWZlcmVuY2UgaW1hZ2VEYXRhUmVmZXJlbmNlOwotICAgIG1fcmVtb3RlUmVu
ZGVyaW5nQmFja2VuZFByb3h5LT5zZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlUmVuZGVyaW5nQmFj
a2VuZDo6R2V0SW1hZ2VEYXRhKG91dHB1dEZvcm1hdCwgc3JjUmVjdCwgbV9yZW1vdGVSZXNvdXJj
ZUlkZW50aWZpZXIpLCBNZXNzYWdlczo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6R2V0SW1hZ2VE
YXRhOjpSZXBseShpbWFnZURhdGFSZWZlcmVuY2UpLCBtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQ
cm94eS0+cmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXIoKSwgMV9zKTsKLSAgICByZXR1cm4gaW1h
Z2VEYXRhUmVmZXJlbmNlLmJ1ZmZlcigpOwotfQotCi12b2lkIFJlbW90ZUltYWdlQnVmZmVyTWVz
c2FnZUhhbmRsZXJQcm94eTo6d2FpdEZvckltYWdlQnVmZmVyQmFja2VuZFdhc0NyZWF0ZWQoKQot
ewotICAgIGlmIChtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eSAmJiAhaXNCYWNrZW5kQ3Jl
YXRlZCgpKQotICAgICAgICBtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS0+d2FpdEZvcklt
YWdlQnVmZmVyQmFja2VuZFdhc0NyZWF0ZWQoKTsKLX0KLQotdm9pZCBSZW1vdGVJbWFnZUJ1ZmZl
ck1lc3NhZ2VIYW5kbGVyUHJveHk6OndhaXRGb3JGbHVzaERpc3BsYXlMaXN0V2FzQ29tbWl0dGVk
KCkKLXsKLSAgICBpZiAobV9yZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkgJiYgaXNQZW5kaW5n
Rmx1c2goKSkKLSAgICAgICAgbV9yZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHktPndhaXRGb3JG
bHVzaERpc3BsYXlMaXN0V2FzQ29tbWl0dGVkKCk7Ci19Ci0KLXZvaWQgUmVtb3RlSW1hZ2VCdWZm
ZXJNZXNzYWdlSGFuZGxlclByb3h5OjpmbHVzaERpc3BsYXlMaXN0KFdlYkNvcmU6OkRpc3BsYXlM
aXN0OjpEaXNwbGF5TGlzdCYgZGlzcGxheUxpc3QpCi17Ci0gICAgaWYgKCFtX3JlbW90ZVJlbmRl
cmluZ0JhY2tlbmRQcm94eSkKLSAgICAgICAgcmV0dXJuOwotICAgIAotICAgIFRyYWNlU2NvcGUg
dHJhY2luZ1Njb3BlKEZsdXNoUmVtb3RlSW1hZ2VCdWZmZXJTdGFydCwgRmx1c2hSZW1vdGVJbWFn
ZUJ1ZmZlckVuZCk7Ci0gICAgbV9yZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHktPnNlbmQoTWVz
c2FnZXM6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OkZsdXNoRGlzcGxheUxpc3QoZGlzcGxheUxp
c3QsIG1fcmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyKSwgbV9yZW1vdGVSZW5kZXJpbmdCYWNrZW5k
UHJveHktPnJlbmRlcmluZ0JhY2tlbmRJZGVudGlmaWVyKCkpOwotICAgIGRpc3BsYXlMaXN0LmNs
ZWFyKCk7Ci19Ci0KLXZvaWQgUmVtb3RlSW1hZ2VCdWZmZXJNZXNzYWdlSGFuZGxlclByb3h5Ojpm
bHVzaERpc3BsYXlMaXN0QW5kV2FpdENvbW1pdChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RGlzcGxh
eUxpc3QmIGRpc3BsYXlMaXN0KQotewotICAgIGlmICghbV9yZW1vdGVSZW5kZXJpbmdCYWNrZW5k
UHJveHkpCi0gICAgICAgIHJldHVybjsKLQotICAgIFRyYWNlU2NvcGUgdHJhY2luZ1Njb3BlKEZs
dXNoUmVtb3RlSW1hZ2VCdWZmZXJTdGFydCwgRmx1c2hSZW1vdGVJbWFnZUJ1ZmZlckVuZCwgMSk7
Ci0gICAgbV9zZW50Rmx1c2hJZGVudGlmaWVyID0gRGlzcGxheUxpc3RGbHVzaElkZW50aWZpZXI6
OmdlbmVyYXRlKCk7Ci0gICAgbV9yZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHktPnNlbmQoTWVz
c2FnZXM6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OkZsdXNoRGlzcGxheUxpc3RBbmRDb21taXQo
ZGlzcGxheUxpc3QsIG1fc2VudEZsdXNoSWRlbnRpZmllciwgbV9yZW1vdGVSZXNvdXJjZUlkZW50
aWZpZXIpLCBtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS0+cmVuZGVyaW5nQmFja2VuZElk
ZW50aWZpZXIoKSk7Ci0gICAgZGlzcGxheUxpc3QuY2xlYXIoKTsKLSAgICB3YWl0Rm9yRmx1c2hE
aXNwbGF5TGlzdFdhc0NvbW1pdHRlZCgpOwotfQotCi12b2lkIFJlbW90ZUltYWdlQnVmZmVyTWVz
c2FnZUhhbmRsZXJQcm94eTo6Y29tbWl0Rmx1c2hDb250ZXh0KERpc3BsYXlMaXN0Rmx1c2hJZGVu
dGlmaWVyIGZsdXNoSWRlbnRpZmllcikKLXsKLSAgICBtX3JlY2VpdmVkRmx1c2hJZGVudGlmaWVy
ID0gZmx1c2hJZGVudGlmaWVyOwotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJLaXQKLQotI2VuZGlm
IC8vIEVOQUJMRShHUFVfUFJPQ0VTUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlSW1hZ2VCdWZmZXJNZXNzYWdlSGFuZGxlclByb3h5Lmgg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUltYWdlQnVmZmVy
TWVzc2FnZUhhbmRsZXJQcm94eS5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiOWEw
MjZhODEyOTg3OTZlN2JkMzVmYTk2ZWVlOTA0ZGU0YmZiNWZkLi4wMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUv
Z3JhcGhpY3MvUmVtb3RlSW1hZ2VCdWZmZXJNZXNzYWdlSGFuZGxlclByb3h5LmgKKysrIC9kZXYv
bnVsbApAQCAtMSw4MyArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIElu
Yy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
LSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQot
ICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaWYgRU5BQkxFKEdQVV9QUk9DRVNTKQotCi0j
aW5jbHVkZSAiRGlzcGxheUxpc3RGbHVzaElkZW50aWZpZXIuaCIKLSNpbmNsdWRlICJJbWFnZUJ1
ZmZlckJhY2tlbmRIYW5kbGUuaCIKLSNpbmNsdWRlIDxXZWJDb3JlL0NvbG9yU3BhY2UuaD4KLSNp
bmNsdWRlIDxXZWJDb3JlL0Rpc3BsYXlMaXN0Lmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9GbG9hdFNp
emUuaD4KLSNpbmNsdWRlIDxXZWJDb3JlL1JlbW90ZVJlc291cmNlSWRlbnRpZmllci5oPgotI2lu
Y2x1ZGUgPFdlYkNvcmUvUmVuZGVyaW5nTW9kZS5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci1j
bGFzcyBJbWFnZURhdGE7Ci1lbnVtIGNsYXNzIEFscGhhUHJlbXVsdGlwbGljYXRpb24gOiB1aW50
OF90OwotfQotCi1uYW1lc3BhY2UgV2ViS2l0IHsKLQotY2xhc3MgUmVtb3RlUmVuZGVyaW5nQmFj
a2VuZFByb3h5OwotCi1jbGFzcyBSZW1vdGVJbWFnZUJ1ZmZlck1lc3NhZ2VIYW5kbGVyUHJveHkg
ewotcHVibGljOgotICAgIHZpcnR1YWwgflJlbW90ZUltYWdlQnVmZmVyTWVzc2FnZUhhbmRsZXJQ
cm94eSgpOwotCi0gICAgV2ViQ29yZTo6UmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyIHJlbW90ZVJl
c291cmNlSWRlbnRpZmllcigpIGNvbnN0IHsgcmV0dXJuIG1fcmVtb3RlUmVzb3VyY2VJZGVudGlm
aWVyOyB9Ci0KLSAgICAvLyBNZXNzYWdlcyB0byBiZSByZWNlaXZlZC4gU2VlIFJlbW90ZVJlbmRl
cmluZ0JhY2tlbmQubWVzc2FnZXMuaW4uCi0gICAgdmlydHVhbCB2b2lkIGNyZWF0ZUJhY2tlbmQo
Y29uc3QgV2ViQ29yZTo6RmxvYXRTaXplJiBsb2dpY2FsU2l6ZSwgY29uc3QgV2ViQ29yZTo6SW50
U2l6ZSYgYmFja2VuZFNpemUsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwgV2ViQ29yZTo6Q29sb3JT
cGFjZSwgSW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxlKSA9IDA7Ci0KLSAgICB2b2lkIGNvbW1pdEZs
dXNoQ29udGV4dChEaXNwbGF5TGlzdEZsdXNoSWRlbnRpZmllcik7Ci0KLXByb3RlY3RlZDoKLSAg
ICBSZW1vdGVJbWFnZUJ1ZmZlck1lc3NhZ2VIYW5kbGVyUHJveHkoY29uc3QgV2ViQ29yZTo6Rmxv
YXRTaXplJiwgV2ViQ29yZTo6UmVuZGVyaW5nTW9kZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBX
ZWJDb3JlOjpDb2xvclNwYWNlLCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkmKTsKLQotICAg
IHZpcnR1YWwgYm9vbCBpc0JhY2tlbmRDcmVhdGVkKCkgY29uc3QgPSAwOwotICAgIGJvb2wgaXNQ
ZW5kaW5nRmx1c2goKSBjb25zdCB7IHJldHVybiBtX3NlbnRGbHVzaElkZW50aWZpZXIgIT0gbV9y
ZWNlaXZlZEZsdXNoSWRlbnRpZmllcjsgfQotCi0gICAgUmVmUHRyPFdlYkNvcmU6OkltYWdlRGF0
YT4gZ2V0SW1hZ2VEYXRhKFdlYkNvcmU6OkFscGhhUHJlbXVsdGlwbGljYXRpb24gb3V0cHV0Rm9y
bWF0LCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiBzcmNSZWN0KSBjb25zdDsKLQotICAgIHZvaWQg
d2FpdEZvckltYWdlQnVmZmVyQmFja2VuZFdhc0NyZWF0ZWQoKTsKLSAgICB2b2lkIHdhaXRGb3JG
bHVzaERpc3BsYXlMaXN0V2FzQ29tbWl0dGVkKCk7Ci0KLSAgICAvLyBNZXNzYWdlcyB0byBiZSBz
ZW50LiBTZWUgUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5Lm1lc3NhZ2VzLmluLgotICAgIHZv
aWQgZmx1c2hEaXNwbGF5TGlzdChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RGlzcGxheUxpc3QmKTsK
LSAgICB2b2lkIGZsdXNoRGlzcGxheUxpc3RBbmRXYWl0Q29tbWl0KFdlYkNvcmU6OkRpc3BsYXlM
aXN0OjpEaXNwbGF5TGlzdCYpOwotCi1wcml2YXRlOgotICAgIFdlYWtQdHI8UmVtb3RlUmVuZGVy
aW5nQmFja2VuZFByb3h5PiBtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eTsKLSAgICBXZWJD
b3JlOjpSZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIgbV9yZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIg
eyBXZWJDb3JlOjpSZW1vdGVSZXNvdXJjZUlkZW50aWZpZXI6OmdlbmVyYXRlKCkgfTsKLQotICAg
IERpc3BsYXlMaXN0Rmx1c2hJZGVudGlmaWVyIG1fc2VudEZsdXNoSWRlbnRpZmllcjsKLSAgICBE
aXNwbGF5TGlzdEZsdXNoSWRlbnRpZmllciBtX3JlY2VpdmVkRmx1c2hJZGVudGlmaWVyOwotfTsK
LQotfSAvLyBuYW1lc3BhY2UgV2ViS2l0Ci0KLSNlbmRpZiAvLyBFTkFCTEUoR1BVX1BST0NFU1Mp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90
ZUltYWdlQnVmZmVyUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhp
Y3MvUmVtb3RlSW1hZ2VCdWZmZXJQcm94eS5oCmluZGV4IDIwZmJmODFjOTgyNTUyZWY3NmJiNmNk
MTVkYzNhMWU5ZDM4ODBlYzMuLmUwZDJmZjdkMWE2NmExY2U1MmEzNTFmMTZmODQ1NWRhNzg5M2Qw
YzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVt
b3RlSW1hZ2VCdWZmZXJQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUv
Z3JhcGhpY3MvUmVtb3RlSW1hZ2VCdWZmZXJQcm94eS5oCkBAIC0yNyw3ICsyNyw2IEBACiAKICNp
ZiBFTkFCTEUoR1BVX1BST0NFU1MpCiAKLSNpbmNsdWRlICJSZW1vdGVJbWFnZUJ1ZmZlck1lc3Nh
Z2VIYW5kbGVyUHJveHkuaCIKICNpbmNsdWRlIDxXZWJDb3JlL0Rpc3BsYXlMaXN0SW1hZ2VCdWZm
ZXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0Rpc3BsYXlMaXN0SXRlbXMuaD4KICNpbmNsdWRlIDxX
ZWJDb3JlL0Rpc3BsYXlMaXN0UmVjb3JkZXIuaD4KQEAgLTM3LDU0ICszNiw3MSBAQCBuYW1lc3Bh
Y2UgV2ViS2l0IHsKIGNsYXNzIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ7CiAKIHRlbXBsYXRlPHR5
cGVuYW1lIEJhY2tlbmRUeXBlPgotY2xhc3MgUmVtb3RlSW1hZ2VCdWZmZXJQcm94eSA6IHB1Ymxp
YyBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SW1hZ2VCdWZmZXI8QmFja2VuZFR5cGU+LCBwdWJsaWMg
UmVtb3RlSW1hZ2VCdWZmZXJNZXNzYWdlSGFuZGxlclByb3h5IHsKK2NsYXNzIFJlbW90ZUltYWdl
QnVmZmVyUHJveHkgOiBwdWJsaWMgV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkltYWdlQnVmZmVyPEJh
Y2tlbmRUeXBlPiwgcHVibGljIFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpSZWNvcmRlcjo6RGVsZWdh
dGUgewogICAgIHVzaW5nIEJhc2VEaXNwbGF5TGlzdEltYWdlQnVmZmVyID0gV2ViQ29yZTo6RGlz
cGxheUxpc3Q6OkltYWdlQnVmZmVyPEJhY2tlbmRUeXBlPjsKICAgICB1c2luZyBCYXNlRGlzcGxh
eUxpc3RJbWFnZUJ1ZmZlcjo6bV9iYWNrZW5kOwogICAgIHVzaW5nIEJhc2VEaXNwbGF5TGlzdElt
YWdlQnVmZmVyOjptX2RyYXdpbmdDb250ZXh0OwogCiBwdWJsaWM6Ci0gICAgc3RhdGljIHN0ZDo6
dW5pcXVlX3B0cjxSZW1vdGVJbWFnZUJ1ZmZlclByb3h5PiBjcmVhdGUoY29uc3QgV2ViQ29yZTo6
RmxvYXRTaXplJiBzaXplLCBXZWJDb3JlOjpSZW5kZXJpbmdNb2RlIHJlbmRlcmluZ01vZGUsIGZs
b2F0IHJlc29sdXRpb25TY2FsZSwgV2ViQ29yZTo6Q29sb3JTcGFjZSBjb2xvclNwYWNlLCBSZW1v
dGVSZW5kZXJpbmdCYWNrZW5kUHJveHkmIHJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eSkKKyAg
ICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPFJlbW90ZUltYWdlQnVmZmVyUHJveHk+IGNyZWF0ZShj
b25zdCBXZWJDb3JlOjpGbG9hdFNpemUmIHNpemUsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwgUmVt
b3RlUmVuZGVyaW5nQmFja2VuZFByb3h5JiByZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkpCiAg
ICAgewogICAgICAgICBpZiAoQmFja2VuZFR5cGU6OmNhbGN1bGF0ZUJhY2tlbmRTaXplKHNpemUs
IHJlc29sdXRpb25TY2FsZSkuaXNFbXB0eSgpKQogICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7
CiAKLSAgICAgICAgcmV0dXJuIHN0ZDo6dW5pcXVlX3B0cjxSZW1vdGVJbWFnZUJ1ZmZlclByb3h5
PihuZXcgUmVtb3RlSW1hZ2VCdWZmZXJQcm94eShzaXplLCByZW5kZXJpbmdNb2RlLCByZXNvbHV0
aW9uU2NhbGUsIGNvbG9yU3BhY2UsIHJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eSkpOworICAg
ICAgICByZXR1cm4gc3RkOjp1bmlxdWVfcHRyPFJlbW90ZUltYWdlQnVmZmVyUHJveHk+KG5ldyBS
ZW1vdGVJbWFnZUJ1ZmZlclByb3h5KHNpemUsIHJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eSkp
OwogICAgIH0KIAogICAgIH5SZW1vdGVJbWFnZUJ1ZmZlclByb3h5KCkKICAgICB7CisgICAgICAg
IGlmICghbV9yZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkpCisgICAgICAgICAgICByZXR1cm47
CiAgICAgICAgIGZsdXNoRHJhd2luZ0NvbnRleHQoKTsKKyAgICAgICAgbV9yZW1vdGVSZW5kZXJp
bmdCYWNrZW5kUHJveHktPnJlbW90ZVJlc291cmNlQ2FjaGVQcm94eSgpLnJlbGVhc2VJbWFnZUJ1
ZmZlcihtX3JlbW90ZVJlc291cmNlSWRlbnRpZmllcik7CiAgICAgfQogCi1wcm90ZWN0ZWQ6Ci0g
ICAgUmVtb3RlSW1hZ2VCdWZmZXJQcm94eShjb25zdCBXZWJDb3JlOjpGbG9hdFNpemUmIHNpemUs
IFdlYkNvcmU6OlJlbmRlcmluZ01vZGUgcmVuZGVyaW5nTW9kZSwgZmxvYXQgcmVzb2x1dGlvblNj
YWxlLCBXZWJDb3JlOjpDb2xvclNwYWNlIGNvbG9yU3BhY2UsIFJlbW90ZVJlbmRlcmluZ0JhY2tl
bmRQcm94eSYgcmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5KQotICAgICAgICA6IEJhc2VEaXNw
bGF5TGlzdEltYWdlQnVmZmVyKHNpemUpCi0gICAgICAgICwgUmVtb3RlSW1hZ2VCdWZmZXJNZXNz
YWdlSGFuZGxlclByb3h5KHNpemUsIHJlbmRlcmluZ01vZGUsIHJlc29sdXRpb25TY2FsZSwgY29s
b3JTcGFjZSwgcmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5KQotICAgIHsKLSAgICB9CisgICAg
V2ViQ29yZTo6UmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyIHJlbW90ZVJlc291cmNlSWRlbnRpZmll
cigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1fcmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyOyB9
CiAKLSAgICB2b2lkIGNyZWF0ZUJhY2tlbmQoY29uc3QgV2ViQ29yZTo6RmxvYXRTaXplJiBsb2dp
Y2FsU2l6ZSwgY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYgYmFja2VuZFNpemUsIGZsb2F0IHJlc29s
dXRpb25TY2FsZSwgV2ViQ29yZTo6Q29sb3JTcGFjZSBjb2xvclNwYWNlLCBJbWFnZUJ1ZmZlckJh
Y2tlbmRIYW5kbGUgaGFuZGxlKSBvdmVycmlkZQorICAgIHZvaWQgY3JlYXRlQmFja2VuZChjb25z
dCBXZWJDb3JlOjpGbG9hdFNpemUmIGxvZ2ljYWxTaXplLCBjb25zdCBXZWJDb3JlOjpJbnRTaXpl
JiBiYWNrZW5kU2l6ZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBXZWJDb3JlOjpDb2xvclNwYWNl
IGNvbG9yU3BhY2UsIEltYWdlQnVmZmVyQmFja2VuZEhhbmRsZSBoYW5kbGUpCiAgICAgewogICAg
ICAgICBBU1NFUlQoIW1fYmFja2VuZCk7CiAgICAgICAgIG1fYmFja2VuZCA9IEJhY2tlbmRUeXBl
OjpjcmVhdGUobG9naWNhbFNpemUsIGJhY2tlbmRTaXplLCByZXNvbHV0aW9uU2NhbGUsIGNvbG9y
U3BhY2UsIFdURk1vdmUoaGFuZGxlKSk7CiAgICAgfQotICAgIAotICAgIGJvb2wgaXNCYWNrZW5k
Q3JlYXRlZCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1fYmFja2VuZC5nZXQoKTsgfQorCisg
ICAgdm9pZCBjb21taXRGbHVzaERpc3BsYXlMaXN0KERpc3BsYXlMaXN0Rmx1c2hJZGVudGlmaWVy
IGZsdXNoSWRlbnRpZmllcikKKyAgICB7CisgICAgICAgIG1fcmVjZWl2ZWRGbHVzaElkZW50aWZp
ZXIgPSBmbHVzaElkZW50aWZpZXI7CisgICAgfQorCitwcm90ZWN0ZWQ6CisgICAgUmVtb3RlSW1h
Z2VCdWZmZXJQcm94eShjb25zdCBXZWJDb3JlOjpGbG9hdFNpemUmIHNpemUsIFJlbW90ZVJlbmRl
cmluZ0JhY2tlbmRQcm94eSYgcmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5KQorICAgICAgICA6
IEJhc2VEaXNwbGF5TGlzdEltYWdlQnVmZmVyKHNpemUsIHRoaXMpCisgICAgICAgICwgbV9yZW1v
dGVSZW5kZXJpbmdCYWNrZW5kUHJveHkobWFrZVdlYWtQdHIocmVtb3RlUmVuZGVyaW5nQmFja2Vu
ZFByb3h5KSkKKyAgICB7CisgICAgICAgIEFTU0VSVChtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQ
cm94eSk7CisgICAgfQorCisgICAgYm9vbCBpc1BlbmRpbmdGbHVzaCgpIGNvbnN0IHsgcmV0dXJu
IG1fc2VudEZsdXNoSWRlbnRpZmllciAhPSBtX3JlY2VpdmVkRmx1c2hJZGVudGlmaWVyOyB9CiAK
ICAgICBCYWNrZW5kVHlwZSogZW5zdXJlQmFja2VuZENyZWF0ZWQoKSBjb25zdCBvdmVycmlkZQog
ICAgIHsKLSAgICAgICAgaWYgKCFtX2JhY2tlbmQpCi0gICAgICAgICAgICBjb25zdF9jYXN0PFJl
bW90ZUltYWdlQnVmZmVyUHJveHkmPigqdGhpcykuUmVtb3RlSW1hZ2VCdWZmZXJNZXNzYWdlSGFu
ZGxlclByb3h5Ojp3YWl0Rm9ySW1hZ2VCdWZmZXJCYWNrZW5kV2FzQ3JlYXRlZCgpOworICAgICAg
ICBpZiAoIW1fYmFja2VuZCAmJiBtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eSkKKyAgICAg
ICAgICAgIG1fcmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5LT53YWl0Rm9ySW1hZ2VCdWZmZXJC
YWNrZW5kV2FzQ3JlYXRlZCgpOwogICAgICAgICByZXR1cm4gbV9iYWNrZW5kLmdldCgpOwogICAg
IH0KIAogICAgIFJlZlB0cjxXZWJDb3JlOjpJbWFnZURhdGE+IGdldEltYWdlRGF0YShXZWJDb3Jl
OjpBbHBoYVByZW11bHRpcGxpY2F0aW9uIG91dHB1dEZvcm1hdCwgY29uc3QgV2ViQ29yZTo6SW50
UmVjdCYgc3JjUmVjdCkgY29uc3Qgb3ZlcnJpZGUKICAgICB7CisgICAgICAgIGlmICghbV9yZW1v
dGVSZW5kZXJpbmdCYWNrZW5kUHJveHkpCisgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKwog
ICAgICAgICBhdXRvJiBkaXNwbGF5TGlzdCA9IGNvbnN0X2Nhc3Q8UmVtb3RlSW1hZ2VCdWZmZXJQ
cm94eSo+KHRoaXMpLT5tX2RyYXdpbmdDb250ZXh0LmRpc3BsYXlMaXN0KCk7Ci0gICAgICAgIGNv
bnN0X2Nhc3Q8UmVtb3RlSW1hZ2VCdWZmZXJQcm94eSo+KHRoaXMpLT5SZW1vdGVJbWFnZUJ1ZmZl
ck1lc3NhZ2VIYW5kbGVyUHJveHk6OmZsdXNoRGlzcGxheUxpc3QoZGlzcGxheUxpc3QpOwotICAg
ICAgICBhdXRvIHJlc3VsdCA9IGNvbnN0X2Nhc3Q8UmVtb3RlSW1hZ2VCdWZmZXJQcm94eSo+KHRo
aXMpLT5SZW1vdGVJbWFnZUJ1ZmZlck1lc3NhZ2VIYW5kbGVyUHJveHk6OmdldEltYWdlRGF0YShv
dXRwdXRGb3JtYXQsIHNyY1JlY3QpOworICAgICAgICBpZiAoZGlzcGxheUxpc3QuaXRlbUNvdW50
KCkpIHsKKyAgICAgICAgICAgIGNvbnN0X2Nhc3Q8UmVtb3RlSW1hZ2VCdWZmZXJQcm94eSY+KCp0
aGlzKS5mbHVzaERpc3BsYXlMaXN0KGRpc3BsYXlMaXN0KTsKKyAgICAgICAgICAgIGRpc3BsYXlM
aXN0LmNsZWFyKCk7CisgICAgICAgIH0KKwogICAgICAgICAvLyBnZXRJbWFnZURhdGEgaXMgc3lu
Y2hyb25vdXMsIHdoaWNoIG1lYW5zIHdlJ3ZlIGFscmVhZHkgcmVjZWl2ZWQgdGhlIENvbW1pdElt
YWdlQnVmZmVyRmx1c2hDb250ZXh0IG1lc3NhZ2UuCi0gICAgICAgIHJldHVybiByZXN1bHQ7Cisg
ICAgICAgIHJldHVybiBtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS0+Z2V0SW1hZ2VEYXRh
KG91dHB1dEZvcm1hdCwgc3JjUmVjdCwgbV9yZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIpOwogICAg
IH0KIAogICAgIHZvaWQgcHV0SW1hZ2VEYXRhKFdlYkNvcmU6OkFscGhhUHJlbXVsdGlwbGljYXRp
b24gaW5wdXRGb3JtYXQsIGNvbnN0IFdlYkNvcmU6OkltYWdlRGF0YSYgaW1hZ2VEYXRhLCBjb25z
dCBXZWJDb3JlOjpJbnRSZWN0JiBzcmNSZWN0LCBjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYgZGVz
dFBvaW50ID0geyB9LCBXZWJDb3JlOjpBbHBoYVByZW11bHRpcGxpY2F0aW9uIGRlc3RGb3JtYXQg
PSBXZWJDb3JlOjpBbHBoYVByZW11bHRpcGxpY2F0aW9uOjpQcmVtdWx0aXBsaWVkKSBvdmVycmlk
ZQpAQCAtMTA0LDE3ICsxMjAsNTMgQEAgcHJvdGVjdGVkOgogICAgIHZvaWQgZmx1c2hEcmF3aW5n
Q29udGV4dCgpIG92ZXJyaWRlCiAgICAgewogICAgICAgICBhdXRvJiBkaXNwbGF5TGlzdCA9IG1f
ZHJhd2luZ0NvbnRleHQuZGlzcGxheUxpc3QoKTsKLSAgICAgICAgaWYgKGRpc3BsYXlMaXN0Lml0
ZW1Db3VudCgpKQotICAgICAgICAgICAgUmVtb3RlSW1hZ2VCdWZmZXJNZXNzYWdlSGFuZGxlclBy
b3h5OjpmbHVzaERpc3BsYXlMaXN0QW5kV2FpdENvbW1pdChkaXNwbGF5TGlzdCk7CisgICAgICAg
IGlmICghZGlzcGxheUxpc3QuaXRlbUNvdW50KCkgfHwgIW1fcmVtb3RlUmVuZGVyaW5nQmFja2Vu
ZFByb3h5KQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIFRyYWNlU2NvcGUgdHJhY2lu
Z1Njb3BlKEZsdXNoUmVtb3RlSW1hZ2VCdWZmZXJTdGFydCwgRmx1c2hSZW1vdGVJbWFnZUJ1ZmZl
ckVuZCwgMSk7CisgICAgICAgIG1fc2VudEZsdXNoSWRlbnRpZmllciA9IG1fcmVtb3RlUmVuZGVy
aW5nQmFja2VuZFByb3h5LT5mbHVzaERpc3BsYXlMaXN0QW5kQ29tbWl0KGRpc3BsYXlMaXN0LCBt
X3JlbW90ZVJlc291cmNlSWRlbnRpZmllcik7CisKKyAgICAgICAgLy8gV2FpdCBmb3Igb3VyIERp
c3BsYXlMaXN0IHRvIGJlIGZsdXNoZWQgYnV0IGRvIG5vdCBoYW5nLgorICAgICAgICBzdGF0aWMg
Y29uc3RleHByIHVuc2lnbmVkIG1heFdhaXRpbmdGbHVzaCA9IDM7CisgICAgICAgIGZvciAodW5z
aWduZWQgbnVtV2FpdGluZ0ZsdXNoID0gMDsgbnVtV2FpdGluZ0ZsdXNoIDwgbWF4V2FpdGluZ0Zs
dXNoICYmIGlzUGVuZGluZ0ZsdXNoKCk7ICsrbnVtV2FpdGluZ0ZsdXNoKQorICAgICAgICAgICAg
bV9yZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHktPndhaXRGb3JGbHVzaERpc3BsYXlMaXN0V2Fz
Q29tbWl0dGVkKCk7CisKKyAgICAgICAgbV9yZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHktPnJl
bW90ZVJlc291cmNlQ2FjaGVQcm94eSgpLnVubG9ja1JlbW90ZVJlc291cmNlc0ZvclJlbW90ZUNs
aWVudChtX3JlbW90ZVJlc291cmNlSWRlbnRpZmllcik7CisgICAgICAgIGRpc3BsYXlMaXN0LmNs
ZWFyKCk7CisgICAgfQorCisgICAgdm9pZCBmbHVzaERpc3BsYXlMaXN0KGNvbnN0IFdlYkNvcmU6
OkRpc3BsYXlMaXN0OjpEaXNwbGF5TGlzdCYgZGlzcGxheUxpc3QpIG92ZXJyaWRlCisgICAgewor
ICAgICAgICBpZiAoIWRpc3BsYXlMaXN0Lml0ZW1Db3VudCgpIHx8ICFtX3JlbW90ZVJlbmRlcmlu
Z0JhY2tlbmRQcm94eSkKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICBUcmFjZVNjb3Bl
IHRyYWNpbmdTY29wZShGbHVzaFJlbW90ZUltYWdlQnVmZmVyU3RhcnQsIEZsdXNoUmVtb3RlSW1h
Z2VCdWZmZXJFbmQpOworICAgICAgICBtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS0+Zmx1
c2hEaXNwbGF5TGlzdChkaXNwbGF5TGlzdCwgbV9yZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIpOwor
ICAgICAgICBtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS0+cmVtb3RlUmVzb3VyY2VDYWNo
ZVByb3h5KCkudW5sb2NrUmVtb3RlUmVzb3VyY2VzRm9yUmVtb3RlQ2xpZW50KG1fcmVtb3RlUmVz
b3VyY2VJZGVudGlmaWVyKTsKICAgICB9Ci0gICAgCisKICAgICB2b2lkIHdpbGxBcHBlbmRJdGVt
KGNvbnN0IFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtJikgb3ZlcnJpZGUKICAgICB7CiAgICAg
ICAgIGNvbnN0ZXhwciBzaXplX3QgRGlzcGxheUxpc3RCYXRjaFNpemUgPSA1MTI7CiAgICAgICAg
IGF1dG8mIGRpc3BsYXlMaXN0ID0gbV9kcmF3aW5nQ29udGV4dC5kaXNwbGF5TGlzdCgpOwotICAg
ICAgICBpZiAoZGlzcGxheUxpc3QuaXRlbUNvdW50KCkgPj0gRGlzcGxheUxpc3RCYXRjaFNpemUp
Ci0gICAgICAgICAgICBSZW1vdGVJbWFnZUJ1ZmZlck1lc3NhZ2VIYW5kbGVyUHJveHk6OmZsdXNo
RGlzcGxheUxpc3QoZGlzcGxheUxpc3QpOworICAgICAgICBpZiAoZGlzcGxheUxpc3QuaXRlbUNv
dW50KCkgPCBEaXNwbGF5TGlzdEJhdGNoU2l6ZSB8fCAhbV9yZW1vdGVSZW5kZXJpbmdCYWNrZW5k
UHJveHkpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgZmx1c2hEaXNwbGF5TGlzdChk
aXNwbGF5TGlzdCk7CisgICAgICAgIGRpc3BsYXlMaXN0LmNsZWFyKCk7CisgICAgfQorCisgICAg
Ym9vbCBsb2NrUmVtb3RlSW1hZ2VCdWZmZXIoV2ViQ29yZTo6SW1hZ2VCdWZmZXImIGltYWdlQnVm
ZmVyKSBvdmVycmlkZQorICAgIHsKKyAgICAgICAgaWYgKCFtX3JlbW90ZVJlbmRlcmluZ0JhY2tl
bmRQcm94eSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgcmV0dXJuIG1fcmVt
b3RlUmVuZGVyaW5nQmFja2VuZFByb3h5LT5yZW1vdGVSZXNvdXJjZUNhY2hlUHJveHkoKS5sb2Nr
UmVtb3RlSW1hZ2VCdWZmZXJGb3JSZW1vdGVDbGllbnQoaW1hZ2VCdWZmZXIsIG1fcmVtb3RlUmVz
b3VyY2VJZGVudGlmaWVyKTsKICAgICB9CisKKyAgICBEaXNwbGF5TGlzdEZsdXNoSWRlbnRpZmll
ciBtX3NlbnRGbHVzaElkZW50aWZpZXI7CisgICAgRGlzcGxheUxpc3RGbHVzaElkZW50aWZpZXIg
bV9yZWNlaXZlZEZsdXNoSWRlbnRpZmllcjsKKyAgICBXZWJDb3JlOjpSZW1vdGVSZXNvdXJjZUlk
ZW50aWZpZXIgbV9yZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIgeyBXZWJDb3JlOjpSZW1vdGVSZXNv
dXJjZUlkZW50aWZpZXI6OmdlbmVyYXRlKCkgfTsKKyAgICBXZWFrUHRyPFJlbW90ZVJlbmRlcmlu
Z0JhY2tlbmRQcm94eT4gbV9yZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHk7CiB9OwogCiB9IC8v
IG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9H
UFUvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5LmNwcCBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5LmNw
cAppbmRleCBiMTQ2MWI0ODIxNDhkMmI3NWI0MGYwOThkOTQwY2RlMTBhYjRmZmNlLi41ZDRlMDgy
MGUwOWE1MTRmOWJmZTUzOGVhMjhhZmYyZTg5ZTgyYzczIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVSZW5k
ZXJpbmdCYWNrZW5kUHJveHkuY3BwCkBAIC0zMCw2ICszMCw3IEBACiAKICNpbmNsdWRlICJHUFVD
b25uZWN0aW9uVG9XZWJQcm9jZXNzLmgiCiAjaW5jbHVkZSAiR1BVUHJvY2Vzc0Nvbm5lY3Rpb24u
aCIKKyNpbmNsdWRlICJJbWFnZURhdGFSZWZlcmVuY2UuaCIKICNpbmNsdWRlICJQbGF0Zm9ybVJl
bW90ZUltYWdlQnVmZmVyUHJveHkuaCIKICNpbmNsdWRlICJSZW1vdGVSZW5kZXJpbmdCYWNrZW5k
TWVzc2FnZXMuaCIKICNpbmNsdWRlICJSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHlNZXNzYWdl
cy5oIgpAQCAtODgsMzggKzg5LDc1IEBAIGJvb2wgUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5
Ojp3YWl0Rm9yRmx1c2hEaXNwbGF5TGlzdFdhc0NvbW1pdHRlZCgpCiAKIHN0ZDo6dW5pcXVlX3B0
cjxJbWFnZUJ1ZmZlcj4gUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5OjpjcmVhdGVJbWFnZUJ1
ZmZlcihjb25zdCBGbG9hdFNpemUmIHNpemUsIFNob3VsZEFjY2VsZXJhdGUgc2hvdWxkQWNjZWxl
cmF0ZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBDb2xvclNwYWNlIGNvbG9yU3BhY2UpCiB7Cisg
ICAgUmVuZGVyaW5nTW9kZSByZW5kZXJpbmdNb2RlOworICAgIHN0ZDo6dW5pcXVlX3B0cjxXZWJD
b3JlOjpJbWFnZUJ1ZmZlcj4gaW1hZ2VCdWZmZXI7CisKICAgICBpZiAoc2hvdWxkQWNjZWxlcmF0
ZSA9PSBTaG91bGRBY2NlbGVyYXRlOjpZZXMpIHsKLSAgICAgICAgaWYgKGF1dG8gaW1hZ2VCdWZm
ZXIgPSBBY2NlbGVyYXRlZFJlbW90ZUltYWdlQnVmZmVyUHJveHk6OmNyZWF0ZShzaXplLCBSZW5k
ZXJpbmdNb2RlOjpSZW1vdGVBY2NlbGVyYXRlZCwgcmVzb2x1dGlvblNjYWxlLCBjb2xvclNwYWNl
LCAqdGhpcykpIHsKLSAgICAgICAgICAgIG1faW1hZ2VCdWZmZXJNZXNzYWdlSGFuZGxlck1hcC5h
ZGQoaW1hZ2VCdWZmZXItPnJlbW90ZVJlc291cmNlSWRlbnRpZmllcigpLCBpbWFnZUJ1ZmZlci5n
ZXQoKSk7Ci0gICAgICAgICAgICByZXR1cm4gaW1hZ2VCdWZmZXI7Ci0gICAgICAgIH0KKyAgICAg
ICAgcmVuZGVyaW5nTW9kZSA9IFJlbmRlcmluZ01vZGU6OlJlbW90ZUFjY2VsZXJhdGVkOworICAg
ICAgICBpbWFnZUJ1ZmZlciA9IEFjY2VsZXJhdGVkUmVtb3RlSW1hZ2VCdWZmZXJQcm94eTo6Y3Jl
YXRlKHNpemUsIHJlc29sdXRpb25TY2FsZSwgKnRoaXMpOworICAgIH0KKworICAgIGlmICghaW1h
Z2VCdWZmZXIpIHsKKyAgICAgICAgcmVuZGVyaW5nTW9kZSA9IFJlbmRlcmluZ01vZGU6OlJlbW90
ZVVuYWNjZWxlcmF0ZWQ7CisgICAgICAgIGltYWdlQnVmZmVyID0gVW5hY2NlbGVyYXRlZFJlbW90
ZUltYWdlQnVmZmVyUHJveHk6OmNyZWF0ZShzaXplLCByZXNvbHV0aW9uU2NhbGUsICp0aGlzKTsK
ICAgICB9CiAKLSAgICBpZiAoYXV0byBpbWFnZUJ1ZmZlciA9IFVuYWNjZWxlcmF0ZWRSZW1vdGVJ
bWFnZUJ1ZmZlclByb3h5OjpjcmVhdGUoc2l6ZSwgUmVuZGVyaW5nTW9kZTo6UmVtb3RlVW5hY2Nl
bGVyYXRlZCwgcmVzb2x1dGlvblNjYWxlLCBjb2xvclNwYWNlLCAqdGhpcykpIHsKLSAgICAgICAg
bV9pbWFnZUJ1ZmZlck1lc3NhZ2VIYW5kbGVyTWFwLmFkZChpbWFnZUJ1ZmZlci0+cmVtb3RlUmVz
b3VyY2VJZGVudGlmaWVyKCksIGltYWdlQnVmZmVyLmdldCgpKTsKKyAgICBpZiAoaW1hZ2VCdWZm
ZXIpIHsKKyAgICAgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6Q3Jl
YXRlSW1hZ2VCdWZmZXIoc2l6ZSwgcmVuZGVyaW5nTW9kZSwgcmVzb2x1dGlvblNjYWxlLCBjb2xv
clNwYWNlLCBpbWFnZUJ1ZmZlci0+cmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyKCkpLCBtX3JlbmRl
cmluZ0JhY2tlbmRJZGVudGlmaWVyKTsKKyAgICAgICAgbV9yZW1vdGVSZXNvdXJjZUNhY2hlUHJv
eHkuY2FjaGVJbWFnZUJ1ZmZlcihpbWFnZUJ1ZmZlci0+cmVtb3RlUmVzb3VyY2VJZGVudGlmaWVy
KCksIGltYWdlQnVmZmVyLmdldCgpKTsKICAgICAgICAgcmV0dXJuIGltYWdlQnVmZmVyOwogICAg
IH0KIAorICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgIHJldHVybiBudWxscHRyOwogfQog
CitSZWZQdHI8SW1hZ2VEYXRhPiBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHk6OmdldEltYWdl
RGF0YShBbHBoYVByZW11bHRpcGxpY2F0aW9uIG91dHB1dEZvcm1hdCwgY29uc3QgSW50UmVjdCYg
c3JjUmVjdCwgUmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyIHJlbW90ZVJlc291cmNlSWRlbnRpZmll
cikKK3sKKyAgICBJUEM6OkltYWdlRGF0YVJlZmVyZW5jZSBpbWFnZURhdGFSZWZlcmVuY2U7Cisg
ICAgc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OkdldEltYWdlRGF0
YShvdXRwdXRGb3JtYXQsIHNyY1JlY3QsIHJlbW90ZVJlc291cmNlSWRlbnRpZmllciksIE1lc3Nh
Z2VzOjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpHZXRJbWFnZURhdGE6OlJlcGx5KGltYWdlRGF0
YVJlZmVyZW5jZSksIG1fcmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXIsIDFfcyk7CisgICAgcmV0
dXJuIGltYWdlRGF0YVJlZmVyZW5jZS5idWZmZXIoKTsKK30KKwordm9pZCBSZW1vdGVSZW5kZXJp
bmdCYWNrZW5kUHJveHk6OmZsdXNoRGlzcGxheUxpc3QoY29uc3QgRGlzcGxheUxpc3Q6OkRpc3Bs
YXlMaXN0JiBkaXNwbGF5TGlzdCwgUmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyIHJlbW90ZVJlc291
cmNlSWRlbnRpZmllcikKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVSZW5kZXJpbmdCYWNr
ZW5kOjpGbHVzaERpc3BsYXlMaXN0KGRpc3BsYXlMaXN0LCByZW1vdGVSZXNvdXJjZUlkZW50aWZp
ZXIpLCBtX3JlbmRlcmluZ0JhY2tlbmRJZGVudGlmaWVyKTsKK30KKworRGlzcGxheUxpc3RGbHVz
aElkZW50aWZpZXIgUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5OjpmbHVzaERpc3BsYXlMaXN0
QW5kQ29tbWl0KGNvbnN0IERpc3BsYXlMaXN0OjpEaXNwbGF5TGlzdCYgZGlzcGxheUxpc3QsIFJl
bW90ZVJlc291cmNlSWRlbnRpZmllciByZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIpCit7CisgICAg
RGlzcGxheUxpc3RGbHVzaElkZW50aWZpZXIgc2VudEZsdXNoSWRlbnRpZmllciA9IERpc3BsYXlM
aXN0Rmx1c2hJZGVudGlmaWVyOjpnZW5lcmF0ZSgpOworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90
ZVJlbmRlcmluZ0JhY2tlbmQ6OkZsdXNoRGlzcGxheUxpc3RBbmRDb21taXQoZGlzcGxheUxpc3Qs
IHNlbnRGbHVzaElkZW50aWZpZXIsIHJlbW90ZVJlc291cmNlSWRlbnRpZmllciksIG1fcmVuZGVy
aW5nQmFja2VuZElkZW50aWZpZXIpOworICAgIHJldHVybiBzZW50Rmx1c2hJZGVudGlmaWVyOwor
fQorCiB2b2lkIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eTo6cmVsZWFzZVJlbW90ZVJlc291
cmNlKFJlbW90ZVJlc291cmNlSWRlbnRpZmllciByZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIpCiB7
Ci0gICAgLy8gQ3JlYXRlSW1hZ2VCdWZmZXIgbWVzc2FnZSBzaG91bGQgaGF2ZSBiZWVuIHJlY2Vp
dmVkIGJlZm9yZSB0aGlzIG9uZS4KLSAgICBib29sIGZvdW5kID0gbV9pbWFnZUJ1ZmZlck1lc3Nh
Z2VIYW5kbGVyTWFwLnJlbW92ZShyZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIpOwotICAgIEFTU0VS
VF9VTlVTRUQoZm91bmQsIGZvdW5kKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVSZW5kZXJp
bmdCYWNrZW5kOjpSZWxlYXNlUmVtb3RlUmVzb3VyY2UocmVtb3RlUmVzb3VyY2VJZGVudGlmaWVy
KSwgbV9yZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllcik7CiB9CiAKIHZvaWQgUmVtb3RlUmVuZGVy
aW5nQmFja2VuZFByb3h5OjppbWFnZUJ1ZmZlckJhY2tlbmRXYXNDcmVhdGVkKGNvbnN0IEZsb2F0
U2l6ZSYgbG9naWNhbFNpemUsIGNvbnN0IEludFNpemUmIGJhY2tlbmRTaXplLCBmbG9hdCByZXNv
bHV0aW9uU2NhbGUsIENvbG9yU3BhY2UgY29sb3JTcGFjZSwgSW1hZ2VCdWZmZXJCYWNrZW5kSGFu
ZGxlIGhhbmRsZSwgUmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyIHJlbW90ZVJlc291cmNlSWRlbnRp
ZmllcikKIHsKLSAgICBpZiAoYXV0byBpbWFnZUJ1ZmZlciA9IG1faW1hZ2VCdWZmZXJNZXNzYWdl
SGFuZGxlck1hcC5nZXQocmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyKSkKLSAgICAgICAgaW1hZ2VC
dWZmZXItPmNyZWF0ZUJhY2tlbmQobG9naWNhbFNpemUsIGJhY2tlbmRTaXplLCByZXNvbHV0aW9u
U2NhbGUsIGNvbG9yU3BhY2UsIFdURk1vdmUoaGFuZGxlKSk7CisgICAgYXV0byBpbWFnZUJ1ZmZl
ciA9IG1fcmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5LmNhY2hlZEltYWdlQnVmZmVyKHJlbW90ZVJl
c291cmNlSWRlbnRpZmllcik7CisgICAgaWYgKCFpbWFnZUJ1ZmZlcikKKyAgICAgICAgcmV0dXJu
OworICAgIAorICAgIGlmIChpbWFnZUJ1ZmZlci0+aXNBY2NlbGVyYXRlZCgpKQorICAgICAgICBk
b3duY2FzdDxBY2NlbGVyYXRlZFJlbW90ZUltYWdlQnVmZmVyUHJveHk+KCppbWFnZUJ1ZmZlciku
Y3JlYXRlQmFja2VuZChsb2dpY2FsU2l6ZSwgYmFja2VuZFNpemUsIHJlc29sdXRpb25TY2FsZSwg
Y29sb3JTcGFjZSwgV1RGTW92ZShoYW5kbGUpKTsKKyAgICBlbHNlCisgICAgICAgIGRvd25jYXN0
PFVuYWNjZWxlcmF0ZWRSZW1vdGVJbWFnZUJ1ZmZlclByb3h5PigqaW1hZ2VCdWZmZXIpLmNyZWF0
ZUJhY2tlbmQobG9naWNhbFNpemUsIGJhY2tlbmRTaXplLCByZXNvbHV0aW9uU2NhbGUsIGNvbG9y
U3BhY2UsIFdURk1vdmUoaGFuZGxlKSk7CiB9CiAKIHZvaWQgUmVtb3RlUmVuZGVyaW5nQmFja2Vu
ZFByb3h5OjpmbHVzaERpc3BsYXlMaXN0V2FzQ29tbWl0dGVkKERpc3BsYXlMaXN0Rmx1c2hJZGVu
dGlmaWVyIGZsdXNoSWRlbnRpZmllciwgUmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyIHJlbW90ZVJl
c291cmNlSWRlbnRpZmllcikKIHsKLSAgICBpZiAoYXV0byBpbWFnZUJ1ZmZlciA9IG1faW1hZ2VC
dWZmZXJNZXNzYWdlSGFuZGxlck1hcC5nZXQocmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyKSkKLSAg
ICAgICAgaW1hZ2VCdWZmZXItPmNvbW1pdEZsdXNoQ29udGV4dChmbHVzaElkZW50aWZpZXIpOwor
ICAgIGF1dG8gaW1hZ2VCdWZmZXIgPSBtX3JlbW90ZVJlc291cmNlQ2FjaGVQcm94eS5jYWNoZWRJ
bWFnZUJ1ZmZlcihyZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIpOworICAgIGlmICghaW1hZ2VCdWZm
ZXIpCisgICAgICAgIHJldHVybjsKKworICAgIGlmIChpbWFnZUJ1ZmZlci0+aXNBY2NlbGVyYXRl
ZCgpKQorICAgICAgICBkb3duY2FzdDxBY2NlbGVyYXRlZFJlbW90ZUltYWdlQnVmZmVyUHJveHk+
KCppbWFnZUJ1ZmZlcikuY29tbWl0Rmx1c2hEaXNwbGF5TGlzdChmbHVzaElkZW50aWZpZXIpOwor
ICAgIGVsc2UKKyAgICAgICAgZG93bmNhc3Q8VW5hY2NlbGVyYXRlZFJlbW90ZUltYWdlQnVmZmVy
UHJveHk+KCppbWFnZUJ1ZmZlcikuY29tbWl0Rmx1c2hEaXNwbGF5TGlzdChmbHVzaElkZW50aWZp
ZXIpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5Lmgg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0Jh
Y2tlbmRQcm94eS5oCmluZGV4IDlkMjkwMDIzZDQ5NzIxZWFkNmNiOTg3OTlkMjZmNWE4ZDBlZDRk
YmUuLjNmZTUxYzVkYTk1ZTM3NTAzZDdkYmRiNDVlYjg2OTdjZDQyNjNmNzIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFj
a2VuZFByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9S
ZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkuaApAQCAtMzEsMTYgKzMxLDI0IEBACiAjaW5jbHVk
ZSAiSW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxlLmgiCiAjaW5jbHVkZSAiTWVzc2FnZVJlY2VpdmVy
LmgiCiAjaW5jbHVkZSAiTWVzc2FnZVNlbmRlci5oIgotI2luY2x1ZGUgIlJlbW90ZUltYWdlQnVm
ZmVyTWVzc2FnZUhhbmRsZXJQcm94eS5oIgorI2luY2x1ZGUgIlJlbW90ZVJlc291cmNlQ2FjaGVQ
cm94eS5oIgogI2luY2x1ZGUgIlJlbmRlcmluZ0JhY2tlbmRJZGVudGlmaWVyLmgiCi0jaW5jbHVk
ZSA8V2ViQ29yZS9Db2xvclNwYWNlLmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9EaXNwbGF5TGlzdC5o
PgotI2luY2x1ZGUgPFdlYkNvcmUvRmxvYXRTaXplLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9SZW1v
dGVSZXNvdXJjZUlkZW50aWZpZXIuaD4KLSNpbmNsdWRlIDxXZWJDb3JlL1JlbmRlcmluZ01vZGUu
aD4KLSNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0Zi9XZWFrUHRyLmg+CiAK
K25hbWVzcGFjZSBXZWJDb3JlIHsKK25hbWVzcGFjZSBEaXNwbGF5TGlzdCB7CitjbGFzcyBEaXNw
bGF5TGlzdDsKK2NsYXNzIEl0ZW07Cit9CitjbGFzcyBGbG9hdFNpemU7CitjbGFzcyBJbWFnZURh
dGE7CitlbnVtIGNsYXNzIEFscGhhUHJlbXVsdGlwbGljYXRpb24gOiB1aW50OF90OworZW51bSBj
bGFzcyBDb2xvclNwYWNlIDogdWludDhfdDsKK2VudW0gY2xhc3MgUmVuZGVyaW5nTW9kZSA6IHVp
bnQ4X3Q7CitlbnVtIGNsYXNzIFNob3VsZEFjY2VsZXJhdGUgOiBib29sOworfQorCiBuYW1lc3Bh
Y2UgV2ViS2l0IHsKIAogY2xhc3MgUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5CkBAIC01Miw3
ICs2MCw3IEBAIHB1YmxpYzoKIAogICAgIH5SZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkoKTsK
IAotICAgIFJlbmRlcmluZ0JhY2tlbmRJZGVudGlmaWVyIHJlbmRlcmluZ0JhY2tlbmRJZGVudGlm
aWVyKCkgY29uc3QgeyByZXR1cm4gbV9yZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllcjsgfQorICAg
IFJlbW90ZVJlc291cmNlQ2FjaGVQcm94eSYgcmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5KCkgeyBy
ZXR1cm4gbV9yZW1vdGVSZXNvdXJjZUNhY2hlUHJveHk7IH0KIAogICAgIC8vIElQQzo6TWVzc2Fn
ZVNlbmRlci4KICAgICBJUEM6OkNvbm5lY3Rpb24qIG1lc3NhZ2VTZW5kZXJDb25uZWN0aW9uKCkg
Y29uc3Qgb3ZlcnJpZGU7CkBAIC02MSw3ICs2OSwxMSBAQCBwdWJsaWM6CiAgICAgLy8gSVBDOjpN
ZXNzYWdlUmVjZWl2ZXIKICAgICB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlv
biYsIElQQzo6RGVjb2RlciYpIG92ZXJyaWRlOwogCisgICAgLy8gTWVzc2FnZXMgdG8gYmUgc2Vu
dC4KICAgICBzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6SW1hZ2VCdWZmZXI+IGNyZWF0ZUltYWdl
QnVmZmVyKGNvbnN0IFdlYkNvcmU6OkZsb2F0U2l6ZSYsIFdlYkNvcmU6OlNob3VsZEFjY2VsZXJh
dGUsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwgV2ViQ29yZTo6Q29sb3JTcGFjZSk7CisgICAgUmVm
UHRyPFdlYkNvcmU6OkltYWdlRGF0YT4gZ2V0SW1hZ2VEYXRhKFdlYkNvcmU6OkFscGhhUHJlbXVs
dGlwbGljYXRpb24gb3V0cHV0Rm9ybWF0LCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiBzcmNSZWN0
LCBXZWJDb3JlOjpSZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIpOworICAgIHZvaWQgZmx1c2hEaXNw
bGF5TGlzdChjb25zdCBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RGlzcGxheUxpc3QmLCBXZWJDb3Jl
OjpSZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIpOworICAgIERpc3BsYXlMaXN0Rmx1c2hJZGVudGlm
aWVyIGZsdXNoRGlzcGxheUxpc3RBbmRDb21taXQoY29uc3QgV2ViQ29yZTo6RGlzcGxheUxpc3Q6
OkRpc3BsYXlMaXN0JiwgV2ViQ29yZTo6UmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyKTsKICAgICB2
b2lkIHJlbGVhc2VSZW1vdGVSZXNvdXJjZShXZWJDb3JlOjpSZW1vdGVSZXNvdXJjZUlkZW50aWZp
ZXIpOwogCiAgICAgYm9vbCB3YWl0Rm9ySW1hZ2VCdWZmZXJCYWNrZW5kV2FzQ3JlYXRlZCgpOwpA
QCAtNzQsOCArODYsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgaW1hZ2VCdWZmZXJCYWNrZW5kV2Fz
Q3JlYXRlZChjb25zdCBXZWJDb3JlOjpGbG9hdFNpemUmIGxvZ2ljYWxTaXplLCBjb25zdCBXZWJD
b3JlOjpJbnRTaXplJiBiYWNrZW5kU2l6ZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBXZWJDb3Jl
OjpDb2xvclNwYWNlLCBJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGUsIFdlYkNvcmU6OlJlbW90ZVJl
c291cmNlSWRlbnRpZmllcik7CiAgICAgdm9pZCBmbHVzaERpc3BsYXlMaXN0V2FzQ29tbWl0dGVk
KERpc3BsYXlMaXN0Rmx1c2hJZGVudGlmaWVyLCBXZWJDb3JlOjpSZW1vdGVSZXNvdXJjZUlkZW50
aWZpZXIpOwogCi0gICAgdXNpbmcgSW1hZ2VCdWZmZXJNZXNzYWdlSGFuZGxlck1hcCA9IEhhc2hN
YXA8V2ViQ29yZTo6UmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyLCBSZW1vdGVJbWFnZUJ1ZmZlck1l
c3NhZ2VIYW5kbGVyUHJveHkqPjsKLSAgICBJbWFnZUJ1ZmZlck1lc3NhZ2VIYW5kbGVyTWFwIG1f
aW1hZ2VCdWZmZXJNZXNzYWdlSGFuZGxlck1hcDsKKyAgICBSZW1vdGVSZXNvdXJjZUNhY2hlUHJv
eHkgbV9yZW1vdGVSZXNvdXJjZUNhY2hlUHJveHkgeyAqdGhpcyB9OwogICAgIFJlbmRlcmluZ0Jh
Y2tlbmRJZGVudGlmaWVyIG1fcmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXIgeyBSZW5kZXJpbmdC
YWNrZW5kSWRlbnRpZmllcjo6Z2VuZXJhdGUoKSB9OwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVSZXNvdXJjZUNhY2hlUHJveHku
Y3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVSZXNvdXJj
ZUNhY2hlUHJveHkuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmY0MGY0MTk3NDExMTBiOWM1ODdkMDVmMGIyNTg2
MjFkZGY4MmMyNTcKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
R1BVL2dyYXBoaWNzL1JlbW90ZVJlc291cmNlQ2FjaGVQcm94eS5jcHAKQEAgLTAsMCArMSwxMjkg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiUmVtb3RlUmVz
b3VyY2VDYWNoZVByb3h5LmgiCisKKyNpZiBFTkFCTEUoR1BVX1BST0NFU1MpCisKKyNpbmNsdWRl
ICJSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkuaCIKKworbmFtZXNwYWNlIFdlYktpdCB7Cit1
c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKKworUmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5OjpSZW1v
dGVSZXNvdXJjZUNhY2hlUHJveHkoUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5JiByZW1vdGVS
ZW5kZXJpbmdCYWNrZW5kUHJveHkpCisgICAgOiBtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94
eShyZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkpCit7Cit9CisKK3ZvaWQgUmVtb3RlUmVzb3Vy
Y2VDYWNoZVByb3h5OjpjYWNoZUltYWdlQnVmZmVyKFJlbW90ZVJlc291cmNlSWRlbnRpZmllciBp
ZGVudGlmaWVyLCBXZWJDb3JlOjpJbWFnZUJ1ZmZlciogaW1hZ2VCdWZmZXIpCit7CisgICAgYXV0
byBhZGRSZXN1bHQgPSBtX2ltYWdlQnVmZmVycy5hZGQoaWRlbnRpZmllciwgaW1hZ2VCdWZmZXIp
OworICAgIEFTU0VSVF9VTlVTRUQoYWRkUmVzdWx0LCBhZGRSZXN1bHQuaXNOZXdFbnRyeSk7Cit9
CisKK0ltYWdlQnVmZmVyKiBSZW1vdGVSZXNvdXJjZUNhY2hlUHJveHk6OmNhY2hlZEltYWdlQnVm
ZmVyKFJlbW90ZVJlc291cmNlSWRlbnRpZmllciBpZGVudGlmaWVyKQoreworICAgIHJldHVybiBt
X2ltYWdlQnVmZmVycy5nZXQoaWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlUmVzb3VyY2VD
YWNoZVByb3h5OjpyZWxlYXNlSW1hZ2VCdWZmZXIoUmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyIHJl
bW90ZVJlc291cmNlSWRlbnRpZmllcikKK3sKKyAgICBib29sIGZvdW5kID0gbV9pbWFnZUJ1ZmZl
cnMucmVtb3ZlKHJlbW90ZVJlc291cmNlSWRlbnRpZmllcik7CisgICAgQVNTRVJUX1VOVVNFRChm
b3VuZCwgZm91bmQpOworCisgICAgLy8gVGVsbCB0aGUgR1BVIHByb2Nlc3MgdG8gcmVtb3ZlIHRo
aXMgcmVzb3VyY2UgdW5sZXNzIGl0J3MgcGVuZGluZyByZXBsYXlpbmcgYmFjay4KKyAgICByZWxl
YXNlUmVtb3RlUmVzb3VyY2UocmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyKTsKK30KKworYm9vbCBS
ZW1vdGVSZXNvdXJjZUNhY2hlUHJveHk6OmxvY2tSZW1vdGVJbWFnZUJ1ZmZlckZvclJlbW90ZUNs
aWVudChJbWFnZUJ1ZmZlciYgaW1hZ2VCdWZmZXIsIFJlbW90ZVJlc291cmNlSWRlbnRpZmllciBy
ZW1vdGVDbGllbnRJZGVudGlmaWVyKQoreworICAgIGlmICghaW1hZ2VCdWZmZXIucmVtb3RlUmVz
b3VyY2VJZGVudGlmaWVyKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAKKyAgICBpZiAo
Y2FjaGVkSW1hZ2VCdWZmZXIoaW1hZ2VCdWZmZXIucmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyKCkp
ICE9ICZpbWFnZUJ1ZmZlcikgeworICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAg
ICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIGxvY2tSZW1vdGVSZXNvdXJjZUZvclJlbW90
ZUNsaWVudChpbWFnZUJ1ZmZlci5yZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIoKSwgcmVtb3RlQ2xp
ZW50SWRlbnRpZmllcik7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK3ZvaWQgUmVtb3RlUmVzb3Vy
Y2VDYWNoZVByb3h5Ojpsb2NrUmVtb3RlUmVzb3VyY2VGb3JSZW1vdGVDbGllbnQoUmVtb3RlUmVz
b3VyY2VJZGVudGlmaWVyIHJlbW90ZVJlc291cmNlSWRlbnRpZmllciwgUmVtb3RlUmVzb3VyY2VJ
ZGVudGlmaWVyIHJlbW90ZUNsaWVudElkZW50aWZpZXIpCit7CisgICAgLy8gQWRkIHRoZSAicmVz
b3VyY2UgLT4gY2xpZW50IiBkZXBlbmRlbmN5IGluIG1fbG9ja2VkUmVtb3RlUmVzb3VyY2VGb3JS
ZW1vdGVDbGllbnRzLgorICAgIGF1dG8mIGNsaWVudHMgPSBtX2xvY2tlZFJlbW90ZVJlc291cmNl
Rm9yUmVtb3RlQ2xpZW50cy5lbnN1cmUocmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyLCBbJl0gewor
ICAgICAgICByZXR1cm4gUmVtb3RlQ2xpZW50c0hhc2hTZXQoKTsKKyAgICB9KS5pdGVyYXRvci0+
dmFsdWU7CisKKyAgICBjbGllbnRzLmFkZChyZW1vdGVDbGllbnRJZGVudGlmaWVyKTsKK30KKwor
dm9pZCBSZW1vdGVSZXNvdXJjZUNhY2hlUHJveHk6OnJlbGVhc2VSZW1vdGVSZXNvdXJjZShSZW1v
dGVSZXNvdXJjZUlkZW50aWZpZXIgcmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyKQoreworICAgIEFT
U0VSVCghbV9wZW5kaW5nVW5sb2NrUmVtb3RlUmVzb3VyY2VGb3JSZW1vdGVDbGllbnRzLmNvbnRh
aW5zKHJlbW90ZVJlc291cmNlSWRlbnRpZmllcikpOworCisgICAgLy8gSWYgd2UgaGF2ZSByZWNv
cmRlZCByZXNvdXJjZSAtPiBjbGllbnQgZGVwZW5kZW5jeSBiZWZvcmUgaW4gbV9sb2NrZWRSZW1v
dGVSZXNvdXJjZUZvclJlbW90ZUNsaWVudHMsIG1vdmUgdGhpcworICAgIC8vIGRlcGVuZGVuY3kg
dG8gbV9wZW5kaW5nVW5sb2NrUmVtb3RlUmVzb3VyY2VGb3JSZW1vdGVDbGllbnRzLiBPdGhlcndp
c2UgcmVtb3ZlIHRoZSByZXNvdXJjZSBpbiB0aGUgR1BVIFByb2Nlc3MuCisgICAgaWYgKG1fbG9j
a2VkUmVtb3RlUmVzb3VyY2VGb3JSZW1vdGVDbGllbnRzLmNvbnRhaW5zKHJlbW90ZVJlc291cmNl
SWRlbnRpZmllcikpCisgICAgICAgIG1fcGVuZGluZ1VubG9ja1JlbW90ZVJlc291cmNlRm9yUmVt
b3RlQ2xpZW50cy5hZGQocmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyLCBtX2xvY2tlZFJlbW90ZVJl
c291cmNlRm9yUmVtb3RlQ2xpZW50cy50YWtlKHJlbW90ZVJlc291cmNlSWRlbnRpZmllcikpOwor
ICAgIGVsc2UKKyAgICAgICAgbV9yZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkucmVsZWFzZVJl
bW90ZVJlc291cmNlKHJlbW90ZVJlc291cmNlSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3Rl
UmVzb3VyY2VDYWNoZVByb3h5Ojp1bmxvY2tSZW1vdGVSZXNvdXJjZXNGb3JSZW1vdGVDbGllbnQo
UmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyIHJlbW90ZUNsaWVudElkZW50aWZpZXIpCit7CisgICAg
YXV0byByZW1vdmVSZW1vdGVDbGllbnQgPSBbJl0oUmVtb3RlUmVzb3VyY2VDbGllbnRzSGFzaE1h
cCYgcmVtb3RlUmVzb3VyY2VGb3JSZW1vdGVDbGllbnRzLCBSZW1vdGVSZXNvdXJjZUlkZW50aWZp
ZXIgcmVtb3RlQ2xpZW50SWRlbnRpZmllcikgeworICAgICAgICBWZWN0b3I8UmVtb3RlUmVzb3Vy
Y2VJZGVudGlmaWVyPiByZW1vdGVSZXNvdXJjZUNsaWVudHNUb0JlUmVtb3ZlZDsKKworICAgICAg
ICAvLyBSZW1vdmUgYWxsIHRoZSByZXNvdXJjZSAtPiBjbGllbnQgZGVwZW5kZW5jaWVzIGZyb20g
cmVtb3RlUmVzb3VyY2VDbGllbnRzSGFzaE1hcC4KKyAgICAgICAgZm9yIChhdXRvJiBwYWlyIDog
cmVtb3RlUmVzb3VyY2VGb3JSZW1vdGVDbGllbnRzKSB7CisgICAgICAgICAgICBwYWlyLnZhbHVl
LnJlbW92ZShyZW1vdGVDbGllbnRJZGVudGlmaWVyKTsKKyAgICAgICAgICAgIGlmIChwYWlyLnZh
bHVlLmlzRW1wdHkoKSkKKyAgICAgICAgICAgICAgICByZW1vdGVSZXNvdXJjZUNsaWVudHNUb0Jl
UmVtb3ZlZC5hcHBlbmQocGFpci5rZXkpOworICAgICAgICB9CisKKyAgICAgICAgLy8gUmV0dXJu
IGEgbGlzdCBvZiB0aGUgdW5yZWZlcmVuY2VkIHJlc291cmNlcy4KKyAgICAgICAgcmV0dXJuIHJl
bW90ZVJlc291cmNlQ2xpZW50c1RvQmVSZW1vdmVkOworICAgIH07CisKKyAgICAvLyBSZW1vdmUg
YWxsIHRoZSByZXNvdXJjZSAtPiBjbGllbnQgZGVwZW5kZW5jaWVzIGZyb20gbV9sb2NrZWRSZW1v
dGVSZXNvdXJjZUZvclJlbW90ZUNsaWVudHMuCisgICAgZm9yIChhdXRvIHJlbW90ZVJlc291cmNl
SWRlbnRpZmllciA6IHJlbW92ZVJlbW90ZUNsaWVudChtX2xvY2tlZFJlbW90ZVJlc291cmNlRm9y
UmVtb3RlQ2xpZW50cywgcmVtb3RlQ2xpZW50SWRlbnRpZmllcikpCisgICAgICAgIG1fbG9ja2Vk
UmVtb3RlUmVzb3VyY2VGb3JSZW1vdGVDbGllbnRzLnJlbW92ZShyZW1vdGVSZXNvdXJjZUlkZW50
aWZpZXIpOworCisgICAgLy8gUmVtb3ZlIGFsbCB0aGUgcmVzb3VyY2UgLT4gY2xpZW50IGRlcGVu
ZGVuY2llcyBmcm9tIG1fcGVuZGluZ1VubG9ja1JlbW90ZVJlc291cmNlRm9yUmVtb3RlQ2xpZW50
cy4KKyAgICBmb3IgKGF1dG8gcmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyIDogcmVtb3ZlUmVtb3Rl
Q2xpZW50KG1fcGVuZGluZ1VubG9ja1JlbW90ZVJlc291cmNlRm9yUmVtb3RlQ2xpZW50cywgcmVt
b3RlQ2xpZW50SWRlbnRpZmllcikpIHsKKyAgICAgICAgLy8gUmVtb3ZlIHRoZSB1bnJlZmVyZW5j
ZWQgcmVzb3VyY2VzIGZyb20gbV9yZW1vdGVSZXNvdXJjZUNsaWVudHNQZW5kaW5nUmVsZWFzZUhh
c2hNYXAuCisgICAgICAgIG1fcGVuZGluZ1VubG9ja1JlbW90ZVJlc291cmNlRm9yUmVtb3RlQ2xp
ZW50cy5yZW1vdmUocmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyKTsKKworICAgICAgICAvLyBUZWxs
IHRoZSBHUFUgcHJvY2VzcyB0byByZW1vdmUgdGhpcyByZXNvdXJjZS4KKyAgICAgICAgbV9yZW1v
dGVSZW5kZXJpbmdCYWNrZW5kUHJveHkucmVsZWFzZVJlbW90ZVJlc291cmNlKHJlbW90ZVJlc291
cmNlSWRlbnRpZmllcik7CisgICAgfQorfQorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2Vu
ZGlmIC8vIEVOQUJMRShHUFVfUFJPQ0VTUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5LmggYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZVJlc291cmNlQ2FjaGVQcm94eS5o
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjQ3OGU0Yjk5M2Q3NzVjZDhkNjAyYWFmOTQ3MTM5ODhkNTgzZWY0YTAKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1Jl
bW90ZVJlc291cmNlQ2FjaGVQcm94eS5oCkBAIC0wLDAgKzEsNjggQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMjAgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFO
RCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAq
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFC
TEUoR1BVX1BST0NFU1MpCisKKyNpbmNsdWRlIDxXZWJDb3JlL1JlbW90ZVJlc291cmNlSWRlbnRp
Zmllci5oPgorI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsK
K2NsYXNzIEltYWdlQnVmZmVyOworfQorCituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3MgUmVt
b3RlUmVuZGVyaW5nQmFja2VuZFByb3h5OworCitjbGFzcyBSZW1vdGVSZXNvdXJjZUNhY2hlUHJv
eHkgeworcHVibGljOgorICAgIFJlbW90ZVJlc291cmNlQ2FjaGVQcm94eShSZW1vdGVSZW5kZXJp
bmdCYWNrZW5kUHJveHkmKTsKKworICAgIHZvaWQgY2FjaGVJbWFnZUJ1ZmZlcihXZWJDb3JlOjpS
ZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIsIFdlYkNvcmU6OkltYWdlQnVmZmVyKik7CisgICAgV2Vi
Q29yZTo6SW1hZ2VCdWZmZXIqIGNhY2hlZEltYWdlQnVmZmVyKFdlYkNvcmU6OlJlbW90ZVJlc291
cmNlSWRlbnRpZmllcik7CisgICAgdm9pZCByZWxlYXNlSW1hZ2VCdWZmZXIoV2ViQ29yZTo6UmVt
b3RlUmVzb3VyY2VJZGVudGlmaWVyKTsKKworICAgIGJvb2wgbG9ja1JlbW90ZUltYWdlQnVmZmVy
Rm9yUmVtb3RlQ2xpZW50KFdlYkNvcmU6OkltYWdlQnVmZmVyJiwgV2ViQ29yZTo6UmVtb3RlUmVz
b3VyY2VJZGVudGlmaWVyIHJlbW90ZUNsaWVudElkZW50aWZpZXIpOworICAgIHZvaWQgdW5sb2Nr
UmVtb3RlUmVzb3VyY2VzRm9yUmVtb3RlQ2xpZW50KFdlYkNvcmU6OlJlbW90ZVJlc291cmNlSWRl
bnRpZmllciByZW1vdGVDbGllbnRJZGVudGlmaWVyKTsKKyAgICAKK3ByaXZhdGU6CisgICAgdXNp
bmcgUmVtb3RlQ2xpZW50c0hhc2hTZXQgPSBIYXNoU2V0PFdlYkNvcmU6OlJlbW90ZVJlc291cmNl
SWRlbnRpZmllcj47CisgICAgdXNpbmcgUmVtb3RlUmVzb3VyY2VDbGllbnRzSGFzaE1hcCA9IEhh
c2hNYXA8V2ViQ29yZTo6UmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyLCBSZW1vdGVDbGllbnRzSGFz
aFNldD47CisgICAgdXNpbmcgUmVtb3RlSW1hZ2VCdWZmZXJQcm94eUhhc2hNYXAgPSBIYXNoTWFw
PFdlYkNvcmU6OlJlbW90ZVJlc291cmNlSWRlbnRpZmllciwgV2ViQ29yZTo6SW1hZ2VCdWZmZXIq
PjsKKworICAgIHZvaWQgbG9ja1JlbW90ZVJlc291cmNlRm9yUmVtb3RlQ2xpZW50KFdlYkNvcmU6
OlJlbW90ZVJlc291cmNlSWRlbnRpZmllciwgV2ViQ29yZTo6UmVtb3RlUmVzb3VyY2VJZGVudGlm
aWVyIHJlbW90ZUNsaWVudElkZW50aWZpZXIpOworICAgIHZvaWQgcmVsZWFzZVJlbW90ZVJlc291
cmNlKFdlYkNvcmU6OlJlbW90ZVJlc291cmNlSWRlbnRpZmllcik7CisKKyAgICBSZW1vdGVJbWFn
ZUJ1ZmZlclByb3h5SGFzaE1hcCBtX2ltYWdlQnVmZmVyczsKKyAgICBSZW1vdGVSZXNvdXJjZUNs
aWVudHNIYXNoTWFwIG1fbG9ja2VkUmVtb3RlUmVzb3VyY2VGb3JSZW1vdGVDbGllbnRzOworICAg
IFJlbW90ZVJlc291cmNlQ2xpZW50c0hhc2hNYXAgbV9wZW5kaW5nVW5sb2NrUmVtb3RlUmVzb3Vy
Y2VGb3JSZW1vdGVDbGllbnRzOworICAgIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eSYgbV9y
ZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHk7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQK
KworI2VuZGlmIC8vIEVOQUJMRShHUFVfUFJPQ0VTUykK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>411947</attachid>
            <date>2020-10-20 18:37:20 -0700</date>
            <delta_ts>2020-10-27 00:44:51 -0700</delta_ts>
            <desc>Patch for review</desc>
            <filename>217566.patch</filename>
            <type>text/plain</type>
            <size>35048</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCA3YWZhZjkzNGEwZjEuLjk2MjZmMWRlNTcxNiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAt
MSwzICsxLDQ2IEBACisyMDIwLTEwLTIwICBTYWlkIEFib3UtSGFsbGF3YSAgPHNhaWRAYXBwbGUu
Y29tPgorCisgICAgICAgIFtHUFUgUHJvY2Vzc106IEltcGxlbWVudCBEaXNwbGF5TGlzdDo6RHJh
d0ltYWdlQnVmZmVyIGl0ZW0KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTIxNzU2NgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIEFkZCB0aGUgRHJhd0ltYWdlQnVmZmVyIERpc3BsYXlMaXN0IGl0ZW0uIEl0IHdp
bGwgYmUgdXNlZCBvbmx5IGZvciBHUFUKKyAgICAgICAgcmVuZGVyaW5nLiBUaGUgcmVtb3RlUmVz
b3VyY2VJZGVudGlmaWVyIG9mIHRoZSBzb3VyY2UgSW1hZ2VCdWZmZXIgd2lsbAorICAgICAgICBi
ZSByZWNvcmRlZC4gRm9yIGRldGFpbHMgb24gaG93IGRyYXdpbmcgYW4gSW1hZ2VCdWZmZXIgdG8g
YW5vdGhlciAKKyAgICAgICAgSW1hZ2VCdWZmZXIgd29ya3Mgc2VlIHRoZSBXZWJLaXQgQ2hhbmdl
TG9nLgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6ZHJhd0ltYWdlQnVmZmVyKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHRJbXBsLmg6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0SW1wbENhaXJvLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEltcGxDYWlybzo6ZHJhd0ltYWdlQnVm
ZmVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRleHRJ
bXBsQ2Fpcm8uaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlz
cGxheUxpc3QuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlz
cGxheUxpc3RJdGVtcy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbTo6
c2l6ZUluQnl0ZXMpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRyYXdJbWFnZUJ1
ZmZlcjo6RHJhd0ltYWdlQnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpE
cmF3SW1hZ2VCdWZmZXI6OmFwcGx5IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlM
aXN0OjpvcGVyYXRvcjw8KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlz
dHMvRGlzcGxheUxpc3RJdGVtcy5oOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRy
YXdJbWFnZUJ1ZmZlcjo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpE
cmF3SW1hZ2VCdWZmZXI6OnJlbW90ZVJlc291cmNlSWRlbnRpZmllciBjb25zdCk6CisgICAgICAg
IChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RHJhd0ltYWdlQnVmZmVyOjpzb3VyY2UgY29uc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRyYXdJbWFnZUJ1ZmZlcjo6ZGVzdGluYXRp
b25SZWN0IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEcmF3SW1hZ2VC
dWZmZXI6Om9wdGlvbnMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRy
YXdJbWFnZUJ1ZmZlcjo6ZW5jb2RlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlM
aXN0OjpEcmF3SW1hZ2VCdWZmZXI6OmRlY29kZSk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5
TGlzdDo6SXRlbTo6ZW5jb2RlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0
OjpJdGVtOjpkZWNvZGUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0
cy9EaXNwbGF5TGlzdFJlY29yZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0
OjpSZWNvcmRlcjo6UmVjb3JkZXIpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OlJl
Y29yZGVyOjpkcmF3SW1hZ2VCdWZmZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Rp
c3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVyLmg6CisgICAgICAgIChXZWJDb3JlOjpEaXNw
bGF5TGlzdDo6UmVjb3JkZXI6OkRlbGVnYXRlOjpsb2NrUmVtb3RlSW1hZ2VCdWZmZXIpOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvY2Fpcm8vTmljb3NpYUNhaXJvT3BlcmF0
aW9uUmVjb3JkZXIuY3BwOgorICAgICAgICAoTmljb3NpYTo6Q2Fpcm9PcGVyYXRpb25SZWNvcmRl
cjo6ZHJhd0ltYWdlQnVmZmVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lh
L2NhaXJvL05pY29zaWFDYWlyb09wZXJhdGlvblJlY29yZGVyLmg6CisKIDIwMjAtMTAtMTkgIFNh
aWQgQWJvdS1IYWxsYXdhICA8c2Fib3VoYWxsYXdhQGFwcGxlLmNvbT4KIAogICAgICAgICBbR1BV
IFByb2Nlc3NdOiBJbnRyb2R1Y2UgUmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5IHRvIG1hbmFnZSB0
aGUgcmVtb3RlIHJlc291cmNlcyBpbiBXZWIgUHJvY2VzcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5jcHAKaW5kZXggMGRjMDU1N2Iw
ZDRmLi4yMTBiYmFjMzI3MTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0dyYXBoaWNzQ29udGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmNwcApAQCAtODEyLDYgKzgxMiw5IEBAIHZvaWQgR3Jh
cGhpY3NDb250ZXh0OjpkcmF3SW1hZ2VCdWZmZXIoSW1hZ2VCdWZmZXImIGltYWdlLCBjb25zdCBG
bG9hdFJlY3QmIGRlc3RpCiAgICAgaWYgKHBhaW50aW5nRGlzYWJsZWQoKSkKICAgICAgICAgcmV0
dXJuOwogCisgICAgaWYgKG1faW1wbCAmJiBtX2ltcGwtPmRyYXdJbWFnZUJ1ZmZlcihpbWFnZSwg
ZGVzdGluYXRpb24sIHNvdXJjZSwgb3B0aW9ucykpCisgICAgICAgIHJldHVybjsKKwogICAgIElu
dGVycG9sYXRpb25RdWFsaXR5TWFpbnRhaW5lciBpbnRlcnBvbGF0aW9uUXVhbGl0eUZvclRoaXNT
Y29wZSgqdGhpcywgb3B0aW9ucy5pbnRlcnBvbGF0aW9uUXVhbGl0eSgpKTsKICAgICBpbWFnZS5k
cmF3KCp0aGlzLCBkZXN0aW5hdGlvbiwgc291cmNlLCBvcHRpb25zKTsKIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dEltcGwuaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dEltcGwuaApp
bmRleCBjMmNhZmUzMzZjYzUuLjM1MzZkMmYzYjczYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0SW1wbC5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dEltcGwuaApAQCAtNzMsNiAr
NzMsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBJbWFnZURyYXdSZXN1bHQgZHJhd1RpbGVkSW1h
Z2UoSW1hZ2UmLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RpbmF0aW9uLCBjb25zdCBGbG9hdFBvaW50
JiBzb3VyY2UsIGNvbnN0IEZsb2F0U2l6ZSYgdGlsZVNpemUsIGNvbnN0IEZsb2F0U2l6ZSYgc3Bh
Y2luZywgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmKSA9IDA7CiAgICAgdmlydHVhbCBJbWFn
ZURyYXdSZXN1bHQgZHJhd1RpbGVkSW1hZ2UoSW1hZ2UmLCBjb25zdCBGbG9hdFJlY3QmIGRlc3Rp
bmF0aW9uLCBjb25zdCBGbG9hdFJlY3QmIHNvdXJjZSwgY29uc3QgRmxvYXRTaXplJiB0aWxlU2Nh
bGVGYWN0b3IsIEltYWdlOjpUaWxlUnVsZSBoUnVsZSwgSW1hZ2U6OlRpbGVSdWxlIHZSdWxlLCBj
b25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYpID0gMDsKIAorICAgIHZpcnR1YWwgYm9vbCBkcmF3
SW1hZ2VCdWZmZXIoSW1hZ2VCdWZmZXImLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RpbmF0aW9uLCBj
b25zdCBGbG9hdFJlY3QmIHNvdXJjZSwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmKSA9IDA7
CiAgICAgdmlydHVhbCB2b2lkIGRyYXdOYXRpdmVJbWFnZShjb25zdCBOYXRpdmVJbWFnZVB0ciYs
IGNvbnN0IEZsb2F0U2l6ZSYgc2VsZlNpemUsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNv
bnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmKSA9IDA7
CiAgICAgdmlydHVhbCB2b2lkIGRyYXdQYXR0ZXJuKEltYWdlJiwgY29uc3QgRmxvYXRSZWN0JiBk
ZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0m
LCBjb25zdCBGbG9hdFBvaW50JiBwaGFzZSwgY29uc3QgRmxvYXRTaXplJiBzcGFjaW5nLCBjb25z
dCBJbWFnZVBhaW50aW5nT3B0aW9ucyYpID0gMDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0SW1wbENhaXJvLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dElt
cGxDYWlyby5jcHAKaW5kZXggYjY1YjRkNjQ0MDZiLi44ZWY0Zjc4NmI3MjQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dElt
cGxDYWlyby5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8v
R3JhcGhpY3NDb250ZXh0SW1wbENhaXJvLmNwcApAQCAtMjc5LDYgKzI3OSwxMiBAQCBJbWFnZURy
YXdSZXN1bHQgR3JhcGhpY3NDb250ZXh0SW1wbENhaXJvOjpkcmF3VGlsZWRJbWFnZShJbWFnZSYg
aW1hZ2UsIGNvbnN0IEZsbwogICAgIHJldHVybiBHcmFwaGljc0NvbnRleHRJbXBsOjpkcmF3VGls
ZWRJbWFnZUltcGwoZ3JhcGhpY3NDb250ZXh0KCksIGltYWdlLCBkZXN0aW5hdGlvbiwgc291cmNl
LCB0aWxlU2NhbGVGYWN0b3IsIGhSdWxlLCB2UnVsZSwgaW1hZ2VQYWludGluZ09wdGlvbnMpOwog
fQogCitib29sIEdyYXBoaWNzQ29udGV4dEltcGxDYWlybzo6ZHJhd0ltYWdlQnVmZmVyKEltYWdl
QnVmZmVyJiwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgSW1hZ2VQ
YWludGluZ09wdGlvbnMmKQoreworICAgIC8vIEZJWE1FOiBOb3QgaW1wbGVtZW50ZWQuCisgICAg
cmV0dXJuIGZhbHNlOworfQorCiB2b2lkIEdyYXBoaWNzQ29udGV4dEltcGxDYWlybzo6ZHJhd05h
dGl2ZUltYWdlKGNvbnN0IE5hdGl2ZUltYWdlUHRyJiBpbWFnZSwgY29uc3QgRmxvYXRTaXplJiBp
bWFnZVNpemUsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3Jj
UmVjdCwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmIG9wdGlvbnMpCiB7CiAgICAgVU5VU0VE
X1BBUkFNKGltYWdlU2l6ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRleHRJbXBsQ2Fpcm8uaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dEltcGxDYWlyby5oCmluZGV4
IGU1ZTIwNzQ4YzZkNy4uMjg1OGZjMjJmYzFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRleHRJbXBsQ2Fpcm8uaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRleHRJbXBs
Q2Fpcm8uaApAQCAtNzQsNiArNzQsOCBAQCBwdWJsaWM6CiAgICAgSW1hZ2VEcmF3UmVzdWx0IGRy
YXdJbWFnZShJbWFnZSYsIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0
IEltYWdlUGFpbnRpbmdPcHRpb25zJikgb3ZlcnJpZGU7CiAgICAgSW1hZ2VEcmF3UmVzdWx0IGRy
YXdUaWxlZEltYWdlKEltYWdlJiwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgRmxvYXRQb2ludCYs
IGNvbnN0IEZsb2F0U2l6ZSYsIGNvbnN0IEZsb2F0U2l6ZSYsIGNvbnN0IEltYWdlUGFpbnRpbmdP
cHRpb25zJikgb3ZlcnJpZGU7CiAgICAgSW1hZ2VEcmF3UmVzdWx0IGRyYXdUaWxlZEltYWdlKElt
YWdlJiwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgRmxvYXRTaXpl
JiwgSW1hZ2U6OlRpbGVSdWxlLCBJbWFnZTo6VGlsZVJ1bGUsIGNvbnN0IEltYWdlUGFpbnRpbmdP
cHRpb25zJikgb3ZlcnJpZGU7CisKKyAgICBib29sIGRyYXdJbWFnZUJ1ZmZlcihJbWFnZUJ1ZmZl
ciYsIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IEltYWdlUGFpbnRp
bmdPcHRpb25zJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBkcmF3TmF0aXZlSW1hZ2UoY29uc3QgTmF0
aXZlSW1hZ2VQdHImLCBjb25zdCBGbG9hdFNpemUmLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBG
bG9hdFJlY3QmLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYpIG92ZXJyaWRlOwogICAgIHZv
aWQgZHJhd1BhdHRlcm4oSW1hZ2UmLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBGbG9hdFJlY3Qm
LCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mLCBjb25zdCBGbG9hdFBvaW50JiwgY29uc3QgRmxvYXRT
aXplJiwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmKSBvdmVycmlkZTsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlM
aXN0LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlz
cGxheUxpc3QuaAppbmRleCA1MDZkYWJhYjBiOGIuLjMyMmVjYzFjMWM0MSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rp
c3BsYXlMaXN0LmgKQEAgLTY0LDYgKzY0LDcgQEAgZW51bSBjbGFzcyBJdGVtVHlwZSA6IHVpbnQ4
X3QgewogICAgIERyYXdJbWFnZSwKICAgICBEcmF3VGlsZWRJbWFnZSwKICAgICBEcmF3VGlsZWRT
Y2FsZWRJbWFnZSwKKyAgICBEcmF3SW1hZ2VCdWZmZXIsCiAgICAgRHJhd05hdGl2ZUltYWdlLAog
ICAgIERyYXdQYXR0ZXJuLAogICAgIERyYXdSZWN0LApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbXMuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0
SXRlbXMuY3BwCmluZGV4IDhkOGIyODE5Mzg3NS4uY2Y4ODkyMTI1NjEwIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJ
dGVtcy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxp
c3RzL0Rpc3BsYXlMaXN0SXRlbXMuY3BwCkBAIC0xMTAsNiArMTEwLDggQEAgc2l6ZV90IEl0ZW06
OnNpemVJbkJ5dGVzKGNvbnN0IEl0ZW0mIGl0ZW0pCiAgICAgICAgIHJldHVybiBzaXplb2YoZG93
bmNhc3Q8RHJhd1RpbGVkSW1hZ2U+KGl0ZW0pKTsKICAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3VGls
ZWRTY2FsZWRJbWFnZToKICAgICAgICAgcmV0dXJuIHNpemVvZihkb3duY2FzdDxEcmF3VGlsZWRT
Y2FsZWRJbWFnZT4oaXRlbSkpOworICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdJbWFnZUJ1ZmZlcjoK
KyAgICAgICAgcmV0dXJuIHNpemVvZihkb3duY2FzdDxEcmF3SW1hZ2VCdWZmZXI+KGl0ZW0pKTsK
ICAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3TmF0aXZlSW1hZ2U6CiAgICAgICAgIHJldHVybiBzaXpl
b2YoZG93bmNhc3Q8RHJhd05hdGl2ZUltYWdlPihpdGVtKSk7CiAgICAgY2FzZSBJdGVtVHlwZTo6
RHJhd1BhdHRlcm46CkBAIC03MzgsNiArNzQwLDMyIEBAIHN0YXRpYyBUZXh0U3RyZWFtJiBvcGVy
YXRvcjw8KFRleHRTdHJlYW0mIHRzLCBjb25zdCBEcmF3VGlsZWRTY2FsZWRJbWFnZSYgaXRlbSkK
ICAgICByZXR1cm4gdHM7CiB9CiAKK0RyYXdJbWFnZUJ1ZmZlcjo6RHJhd0ltYWdlQnVmZmVyKFJl
bW90ZVJlc291cmNlSWRlbnRpZmllciByZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIsIGNvbnN0IEZs
b2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgSW1hZ2VQ
YWludGluZ09wdGlvbnMmIG9wdGlvbnMpCisgICAgOiBEcmF3aW5nSXRlbShJdGVtVHlwZTo6RHJh
d0ltYWdlQnVmZmVyKQorICAgICwgbV9yZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIocmVtb3RlUmVz
b3VyY2VJZGVudGlmaWVyKQorICAgICwgbV9kZXN0aW5hdGlvblJlY3QoZGVzdFJlY3QpCisgICAg
LCBtX3NyY1JlY3Qoc3JjUmVjdCkKKyAgICAsIG1fb3B0aW9ucyhvcHRpb25zKQoreworfQorCitE
cmF3SW1hZ2VCdWZmZXI6On5EcmF3SW1hZ2VCdWZmZXIoKSA9IGRlZmF1bHQ7CisKK3ZvaWQgRHJh
d0ltYWdlQnVmZmVyOjphcHBseShHcmFwaGljc0NvbnRleHQmKSBjb25zdAoreworICAgIC8vIFNo
b3VsZCBiZSBoYW5kbGVkIGJ5IHRoZSBkZWxlZ2F0ZS4KKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQo
KTsKK30KKworc3RhdGljIFRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYgdHMsIGNv
bnN0IERyYXdJbWFnZUJ1ZmZlciYgaXRlbSkKK3sKKyAgICB0cyA8PCBzdGF0aWNfY2FzdDxjb25z
dCBEcmF3aW5nSXRlbSY+KGl0ZW0pOworICAgIHRzLmR1bXBQcm9wZXJ0eSgicmVtb3RlLXJlc291
cmNlLWlkZW50aWZpZXIiLCBpdGVtLnJlbW90ZVJlc291cmNlSWRlbnRpZmllcigpKTsKKyAgICB0
cy5kdW1wUHJvcGVydHkoInNvdXJjZS1yZWN0IiwgaXRlbS5zb3VyY2UoKSk7CisgICAgdHMuZHVt
cFByb3BlcnR5KCJkZXN0LXJlY3QiLCBpdGVtLmRlc3RpbmF0aW9uUmVjdCgpKTsKKyAgICByZXR1
cm4gdHM7Cit9CisKIERyYXdOYXRpdmVJbWFnZTo6RHJhd05hdGl2ZUltYWdlKGNvbnN0IE5hdGl2
ZUltYWdlUHRyJiBpbWFnZSwgY29uc3QgRmxvYXRTaXplJiBpbWFnZVNpemUsIGNvbnN0IEZsb2F0
UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgSW1hZ2VQYWlu
dGluZ09wdGlvbnMmIG9wdGlvbnMpCiAgICAgOiBEcmF3aW5nSXRlbShJdGVtVHlwZTo6RHJhd05h
dGl2ZUltYWdlKQogICAgICwgbV9pbWFnZShpbWFnZSkKQEAgLTE0OTYsNiArMTUyNCw3IEBAIHN0
YXRpYyBUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mIHRzLCBjb25zdCBJdGVtVHlw
ZSYgdHlwZSkKICAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3SW1hZ2U6IHRzIDw8ICJkcmF3LWltYWdl
IjsgYnJlYWs7CiAgICAgY2FzZSBJdGVtVHlwZTo6RHJhd1RpbGVkSW1hZ2U6IHRzIDw8ICJkcmF3
LXRpbGVkLWltYWdlIjsgYnJlYWs7CiAgICAgY2FzZSBJdGVtVHlwZTo6RHJhd1RpbGVkU2NhbGVk
SW1hZ2U6IHRzIDw8ICJkcmF3LXRpbGVkLXNjYWxlZC1pbWFnZSI7IGJyZWFrOworICAgIGNhc2Ug
SXRlbVR5cGU6OkRyYXdJbWFnZUJ1ZmZlcjogdHMgPDwgImRyYXctaW1hZ2UtYnVmZmVyIjsgYnJl
YWs7CiAgICAgY2FzZSBJdGVtVHlwZTo6RHJhd05hdGl2ZUltYWdlOiB0cyA8PCAiZHJhdy1uYXRp
dmUtaW1hZ2UiOyBicmVhazsKICAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3UGF0dGVybjogdHMgPDwg
ImRyYXctcGF0dGVybiI7IGJyZWFrOwogICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdSZWN0OiB0cyA8
PCAiZHJhdy1yZWN0IjsgYnJlYWs7CkBAIC0xNjAyLDYgKzE2MzEsOSBAQCBUZXh0U3RyZWFtJiBv
cGVyYXRvcjw8KFRleHRTdHJlYW0mIHRzLCBjb25zdCBJdGVtJiBpdGVtKQogICAgIGNhc2UgSXRl
bVR5cGU6OkRyYXdUaWxlZFNjYWxlZEltYWdlOgogICAgICAgICB0cyA8PCBkb3duY2FzdDxEcmF3
VGlsZWRTY2FsZWRJbWFnZT4oaXRlbSk7CiAgICAgICAgIGJyZWFrOworICAgIGNhc2UgSXRlbVR5
cGU6OkRyYXdJbWFnZUJ1ZmZlcjoKKyAgICAgICAgdHMgPDwgZG93bmNhc3Q8RHJhd0ltYWdlQnVm
ZmVyPihpdGVtKTsKKyAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBJdGVtVHlwZTo6RHJhd05hdGl2
ZUltYWdlOgogICAgICAgICB0cyA8PCBkb3duY2FzdDxEcmF3TmF0aXZlSW1hZ2U+KGl0ZW0pOwog
ICAgICAgICBicmVhazsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1zLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtcy5oCmluZGV4IGQ0Y2E5
OGU2NDg0NS4uNmMzZWMyODI1MDVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtcy5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1zLmgK
QEAgLTM1LDYgKzM1LDcgQEAKICNpbmNsdWRlICJJbWFnZURhdGEuaCIKICNpbmNsdWRlICJNZWRp
YVBsYXllcklkZW50aWZpZXIuaCIKICNpbmNsdWRlICJQYXR0ZXJuLmgiCisjaW5jbHVkZSAiUmVt
b3RlUmVzb3VyY2VJZGVudGlmaWVyLmgiCiAjaW5jbHVkZSAiU2hhcmVkQnVmZmVyLmgiCiAjaW5j
bHVkZSA8d3RmL1R5cGVDYXN0cy5oPgogCkBAIC0xNTMzLDYgKzE1MzQsNzEgQEAgT3B0aW9uYWw8
UmVmPERyYXdUaWxlZFNjYWxlZEltYWdlPj4gRHJhd1RpbGVkU2NhbGVkSW1hZ2U6OmRlY29kZShE
ZWNvZGVyJiBkZWNvZGUKICAgICByZXR1cm4gRHJhd1RpbGVkU2NhbGVkSW1hZ2U6OmNyZWF0ZSgq
aW1hZ2VIYW5kbGUtPmltYWdlLCAqZGVzdGluYXRpb24sICpzb3VyY2UsICp0aWxlU2NhbGVGYWN0
b3IsIGhSdWxlLCB2UnVsZSwgKmltYWdlUGFpbnRpbmdPcHRpb25zKTsKIH0KIAorY2xhc3MgRHJh
d0ltYWdlQnVmZmVyIDogcHVibGljIERyYXdpbmdJdGVtIHsKK3B1YmxpYzoKKyAgICBzdGF0aWMg
UmVmPERyYXdJbWFnZUJ1ZmZlcj4gY3JlYXRlKFJlbW90ZVJlc291cmNlSWRlbnRpZmllciByZW1v
dGVSZXNvdXJjZUlkZW50aWZpZXIsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdGluYXRpb24sIGNvbnN0
IEZsb2F0UmVjdCYgc291cmNlLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgb3B0aW9ucykK
KyAgICB7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IERyYXdJbWFnZUJ1ZmZlcihyZW1v
dGVSZXNvdXJjZUlkZW50aWZpZXIsIGRlc3RpbmF0aW9uLCBzb3VyY2UsIG9wdGlvbnMpKTsKKyAg
ICB9CisKKyAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIH5EcmF3SW1hZ2VCdWZmZXIoKTsKKwor
ICAgIFJlbW90ZVJlc291cmNlSWRlbnRpZmllciByZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIoKSBj
b25zdCB7IHJldHVybiBtX3JlbW90ZVJlc291cmNlSWRlbnRpZmllcjsgfQorICAgIEZsb2F0UmVj
dCBzb3VyY2UoKSBjb25zdCB7IHJldHVybiBtX3NyY1JlY3Q7IH0KKyAgICBGbG9hdFJlY3QgZGVz
dGluYXRpb25SZWN0KCkgY29uc3QgeyByZXR1cm4gbV9kZXN0aW5hdGlvblJlY3Q7IH0KKyAgICBJ
bWFnZVBhaW50aW5nT3B0aW9ucyBvcHRpb25zKCkgY29uc3QgeyByZXR1cm4gbV9vcHRpb25zOyB9
CisKKyAgICB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPiB2b2lkIGVuY29kZShFbmNvZGVyJikgY29u
c3Q7CisgICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIE9wdGlvbmFsPFJlZjxEcmF3
SW1hZ2VCdWZmZXI+PiBkZWNvZGUoRGVjb2RlciYpOworCitwcml2YXRlOgorICAgIFdFQkNPUkVf
RVhQT1JUIERyYXdJbWFnZUJ1ZmZlcihSZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIsIGNvbnN0IEZs
b2F0UmVjdCYgZGVzdGluYXRpb24sIGNvbnN0IEZsb2F0UmVjdCYgc291cmNlLCBjb25zdCBJbWFn
ZVBhaW50aW5nT3B0aW9ucyYpOworCisgICAgdm9pZCBhcHBseShHcmFwaGljc0NvbnRleHQmKSBj
b25zdCBvdmVycmlkZTsKKworICAgIE9wdGlvbmFsPEZsb2F0UmVjdD4gbG9jYWxCb3VuZHMoY29u
c3QgR3JhcGhpY3NDb250ZXh0JikgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9kZXN0aW5hdGlv
blJlY3Q7IH0KKworICAgIFJlbW90ZVJlc291cmNlSWRlbnRpZmllciBtX3JlbW90ZVJlc291cmNl
SWRlbnRpZmllcjsKKyAgICBGbG9hdFJlY3QgbV9kZXN0aW5hdGlvblJlY3Q7CisgICAgRmxvYXRS
ZWN0IG1fc3JjUmVjdDsKKyAgICBJbWFnZVBhaW50aW5nT3B0aW9ucyBtX29wdGlvbnM7Cit9Owor
Cit0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPgordm9pZCBEcmF3SW1hZ2VCdWZmZXI6OmVuY29kZShF
bmNvZGVyJiBlbmNvZGVyKSBjb25zdAoreworICAgIGVuY29kZXIgPDwgbV9yZW1vdGVSZXNvdXJj
ZUlkZW50aWZpZXI7CisgICAgZW5jb2RlciA8PCBtX2Rlc3RpbmF0aW9uUmVjdDsKKyAgICBlbmNv
ZGVyIDw8IG1fc3JjUmVjdDsKKyAgICBlbmNvZGVyIDw8IG1fb3B0aW9uczsKK30KKwordGVtcGxh
dGU8Y2xhc3MgRGVjb2Rlcj4KK09wdGlvbmFsPFJlZjxEcmF3SW1hZ2VCdWZmZXI+PiBEcmF3SW1h
Z2VCdWZmZXI6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQoreworICAgIE9wdGlvbmFsPFJlbW90
ZVJlc291cmNlSWRlbnRpZmllcj4gcmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyOworICAgIGRlY29k
ZXIgPj4gcmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyOworICAgIGlmICghcmVtb3RlUmVzb3VyY2VJ
ZGVudGlmaWVyKQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworCisgICAgT3B0aW9uYWw8
RmxvYXRSZWN0PiBkZXN0aW5hdGlvbjsKKyAgICBkZWNvZGVyID4+IGRlc3RpbmF0aW9uOworICAg
IGlmICghZGVzdGluYXRpb24pCisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisKKyAgICBP
cHRpb25hbDxGbG9hdFJlY3Q+IHNvdXJjZTsKKyAgICBkZWNvZGVyID4+IHNvdXJjZTsKKyAgICBp
ZiAoIXNvdXJjZSkKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKworICAgIE9wdGlvbmFs
PEltYWdlUGFpbnRpbmdPcHRpb25zPiBvcHRpb25zOworICAgIGRlY29kZXIgPj4gb3B0aW9uczsK
KyAgICBpZiAoIW9wdGlvbnMpCisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisKKyAgICBy
ZXR1cm4gRHJhd0ltYWdlQnVmZmVyOjpjcmVhdGUoKnJlbW90ZVJlc291cmNlSWRlbnRpZmllciwg
KmRlc3RpbmF0aW9uLCAqc291cmNlLCAqb3B0aW9ucyk7Cit9CisKIGNsYXNzIERyYXdOYXRpdmVJ
bWFnZSA6IHB1YmxpYyBEcmF3aW5nSXRlbSB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFJlZjxEcmF3
TmF0aXZlSW1hZ2U+IGNyZWF0ZShjb25zdCBOYXRpdmVJbWFnZVB0ciYgaW1hZ2UsIGNvbnN0IEZs
b2F0U2l6ZSYgaW1hZ2VTaXplLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9h
dFJlY3QmIHNyY1JlY3QsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBvcHRpb25zKQpAQCAt
MzA2Niw2ICszMTMyLDkgQEAgdm9pZCBJdGVtOjplbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29u
c3QKICAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3VGlsZWRTY2FsZWRJbWFnZToKICAgICAgICAgZW5j
b2RlciA8PCBkb3duY2FzdDxEcmF3VGlsZWRTY2FsZWRJbWFnZT4oKnRoaXMpOwogICAgICAgICBi
cmVhazsKKyAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3SW1hZ2VCdWZmZXI6CisgICAgICAgIGVuY29k
ZXIgPDwgZG93bmNhc3Q8RHJhd0ltYWdlQnVmZmVyPigqdGhpcyk7CisgICAgICAgIGJyZWFrOwog
ICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdOYXRpdmVJbWFnZToKICAgICAgICAgZW5jb2RlciA8PCBk
b3duY2FzdDxEcmF3TmF0aXZlSW1hZ2U+KCp0aGlzKTsKICAgICAgICAgYnJlYWs7CkBAIC0zMjYz
LDYgKzMzMzIsMTAgQEAgT3B0aW9uYWw8UmVmPEl0ZW0+PiBJdGVtOjpkZWNvZGUoRGVjb2RlciYg
ZGVjb2RlcikKICAgICAgICAgaWYgKGF1dG8gaXRlbSA9IERyYXdUaWxlZFNjYWxlZEltYWdlOjpk
ZWNvZGUoZGVjb2RlcikpCiAgICAgICAgICAgICByZXR1cm4gc3RhdGljX3JlZmVyZW5jZV9jYXN0
PEl0ZW0+KFdURk1vdmUoKml0ZW0pKTsKICAgICAgICAgYnJlYWs7CisgICAgY2FzZSBJdGVtVHlw
ZTo6RHJhd0ltYWdlQnVmZmVyOgorICAgICAgICBpZiAoYXV0byBpdGVtID0gRHJhd0ltYWdlQnVm
ZmVyOjpkZWNvZGUoZGVjb2RlcikpCisgICAgICAgICAgICByZXR1cm4gc3RhdGljX3JlZmVyZW5j
ZV9jYXN0PEl0ZW0+KFdURk1vdmUoKml0ZW0pKTsKKyAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBJ
dGVtVHlwZTo6RHJhd05hdGl2ZUltYWdlOgogICAgICAgICBpZiAoYXV0byBpdGVtID0gRHJhd05h
dGl2ZUltYWdlOjpkZWNvZGUoZGVjb2RlcikpCiAgICAgICAgICAgICByZXR1cm4gc3RhdGljX3Jl
ZmVyZW5jZV9jYXN0PEl0ZW0+KFdURk1vdmUoKml0ZW0pKTsKQEAgLTM0MjUsNiArMzQ5OCw3IEBA
IFNQRUNJQUxJWkVfVFlQRV9UUkFJVFNfRElTUExBWUxJU1RfSVRFTShEcmF3R2x5cGhzKQogU1BF
Q0lBTElaRV9UWVBFX1RSQUlUU19ESVNQTEFZTElTVF9JVEVNKERyYXdJbWFnZSkKIFNQRUNJQUxJ
WkVfVFlQRV9UUkFJVFNfRElTUExBWUxJU1RfSVRFTShEcmF3VGlsZWRJbWFnZSkKIFNQRUNJQUxJ
WkVfVFlQRV9UUkFJVFNfRElTUExBWUxJU1RfSVRFTShEcmF3VGlsZWRTY2FsZWRJbWFnZSkKK1NQ
RUNJQUxJWkVfVFlQRV9UUkFJVFNfRElTUExBWUxJU1RfSVRFTShEcmF3SW1hZ2VCdWZmZXIpCiBT
UEVDSUFMSVpFX1RZUEVfVFJBSVRTX0RJU1BMQVlMSVNUX0lURU0oRHJhd05hdGl2ZUltYWdlKQog
U1BFQ0lBTElaRV9UWVBFX1RSQUlUU19ESVNQTEFZTElTVF9JVEVNKERyYXdQYXR0ZXJuKQogU1BF
Q0lBTElaRV9UWVBFX1RSQUlUU19ESVNQTEFZTElTVF9JVEVNKERyYXdSZWN0KQpAQCAtMzQ4Nyw2
ICszNTYxLDcgQEAgdGVtcGxhdGU8PiBzdHJ1Y3QgRW51bVRyYWl0czxXZWJDb3JlOjpEaXNwbGF5
TGlzdDo6SXRlbVR5cGU+IHsKICAgICBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OkRy
YXdJbWFnZSwKICAgICBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OkRyYXdUaWxlZElt
YWdlLAogICAgIFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtVHlwZTo6RHJhd1RpbGVkU2NhbGVk
SW1hZ2UsCisgICAgV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpEcmF3SW1hZ2VCdWZm
ZXIsCiAgICAgV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpEcmF3TmF0aXZlSW1hZ2Us
CiAgICAgV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpEcmF3UGF0dGVybiwKICAgICBX
ZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OkRyYXdSZWN0LApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVj
b3JkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3Rz
L0Rpc3BsYXlMaXN0UmVjb3JkZXIuY3BwCmluZGV4IDFlMWU5MWFhMDg0Yi4uOGI3MWE2NTViMmUy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlz
dHMvRGlzcGxheUxpc3RSZWNvcmRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIuY3BwCkBAIC0zMCw2ICsz
MCw3IEBACiAjaW5jbHVkZSAiRGlzcGxheUxpc3REcmF3aW5nQ29udGV4dC5oIgogI2luY2x1ZGUg
IkRpc3BsYXlMaXN0SXRlbXMuaCIKICNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQuaCIKKyNpbmNs
dWRlICJJbWFnZUJ1ZmZlci5oIgogI2luY2x1ZGUgIkxvZ2dpbmcuaCIKICNpbmNsdWRlIDx3dGYv
TWF0aEV4dHJhcy5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1RleHRTdHJlYW0uaD4KQEAgLTE2Niw2
ICsxNjcsMTUgQEAgSW1hZ2VEcmF3UmVzdWx0IFJlY29yZGVyOjpkcmF3VGlsZWRJbWFnZShJbWFn
ZSYgaW1hZ2UsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdGluYXQKICAgICByZXR1cm4gSW1hZ2VEcmF3
UmVzdWx0OjpEaWRSZWNvcmQ7CiB9CiAKK2Jvb2wgUmVjb3JkZXI6OmRyYXdJbWFnZUJ1ZmZlcihX
ZWJDb3JlOjpJbWFnZUJ1ZmZlciYgaW1hZ2VCdWZmZXIsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJl
Y3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMm
IG9wdGlvbnMpCit7CisgICAgaWYgKCFtX2RlbGVnYXRlIHx8ICFtX2RlbGVnYXRlLT5sb2NrUmVt
b3RlSW1hZ2VCdWZmZXIoaW1hZ2VCdWZmZXIpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAg
ICBhcHBlbmRJdGVtQW5kVXBkYXRlRXh0ZW50KERyYXdJbWFnZUJ1ZmZlcjo6Y3JlYXRlKGltYWdl
QnVmZmVyLnJlbW90ZVJlc291cmNlSWRlbnRpZmllcigpLCBkZXN0UmVjdCwgc3JjUmVjdCwgb3B0
aW9ucykpOworICAgIHJldHVybiB0cnVlOworfQorCiB2b2lkIFJlY29yZGVyOjpkcmF3TmF0aXZl
SW1hZ2UoY29uc3QgTmF0aXZlSW1hZ2VQdHImIGltYWdlLCBjb25zdCBGbG9hdFNpemUmIGltYWdl
U2l6ZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0
LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgb3B0aW9ucykKIHsKICAgICBhcHBlbmRJdGVt
QW5kVXBkYXRlRXh0ZW50KERyYXdOYXRpdmVJbWFnZTo6Y3JlYXRlKGltYWdlLCBpbWFnZVNpemUs
IGRlc3RSZWN0LCBzcmNSZWN0LCBvcHRpb25zKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlci5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0
UmVjb3JkZXIuaAppbmRleCA2YTI3NzE4OTdlZDIuLjkyM2M1NDg4NTcyOSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0
UmVjb3JkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5
bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlci5oCkBAIC02Nyw2ICs2Nyw3IEBAIHB1YmxpYzoKICAg
ICBwdWJsaWM6CiAgICAgICAgIHZpcnR1YWwgfkRlbGVnYXRlKCkgeyB9CiAgICAgICAgIHZpcnR1
YWwgdm9pZCB3aWxsQXBwZW5kSXRlbShjb25zdCBJdGVtJikgeyB9OworICAgICAgICB2aXJ0dWFs
IGJvb2wgbG9ja1JlbW90ZUltYWdlQnVmZmVyKFdlYkNvcmU6OkltYWdlQnVmZmVyJikgeyByZXR1
cm4gZmFsc2U7IH0KICAgICB9OwogCiBwcml2YXRlOgpAQCAtMTA1LDYgKzEwNiw3IEBAIHByaXZh
dGU6CiAgICAgSW1hZ2VEcmF3UmVzdWx0IGRyYXdUaWxlZEltYWdlKEltYWdlJiwgY29uc3QgRmxv
YXRSZWN0JiBkZXN0aW5hdGlvbiwgY29uc3QgRmxvYXRQb2ludCYgc291cmNlLCBjb25zdCBGbG9h
dFNpemUmIHRpbGVTaXplLCBjb25zdCBGbG9hdFNpemUmIHNwYWNpbmcsIGNvbnN0IEltYWdlUGFp
bnRpbmdPcHRpb25zJikgb3ZlcnJpZGU7CiAgICAgSW1hZ2VEcmF3UmVzdWx0IGRyYXdUaWxlZElt
YWdlKEltYWdlJiwgY29uc3QgRmxvYXRSZWN0JiBkZXN0aW5hdGlvbiwgY29uc3QgRmxvYXRSZWN0
JiBzb3VyY2UsIGNvbnN0IEZsb2F0U2l6ZSYgdGlsZVNjYWxlRmFjdG9yLCBJbWFnZTo6VGlsZVJ1
bGUgaFJ1bGUsIEltYWdlOjpUaWxlUnVsZSB2UnVsZSwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlv
bnMmKSBvdmVycmlkZTsKIAorICAgIGJvb2wgZHJhd0ltYWdlQnVmZmVyKFdlYkNvcmU6OkltYWdl
QnVmZmVyJiwgY29uc3QgRmxvYXRSZWN0JiBkZXN0aW5hdGlvbiwgY29uc3QgRmxvYXRSZWN0JiBz
b3VyY2UsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBk
cmF3TmF0aXZlSW1hZ2UoY29uc3QgTmF0aXZlSW1hZ2VQdHImLCBjb25zdCBGbG9hdFNpemUmIHNl
bGZTaXplLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1Jl
Y3QsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBkcmF3
UGF0dGVybihJbWFnZSYsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVj
dCYgc3JjUmVjdCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiwgY29uc3QgRmxvYXRQb2ludCYgcGhh
c2UsIGNvbnN0IEZsb2F0U2l6ZSYgc3BhY2luZywgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMm
KSBvdmVycmlkZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3Mvbmljb3NpYS9jYWlyby9OaWNvc2lhQ2Fpcm9PcGVyYXRpb25SZWNvcmRlci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lhL2NhaXJvL05pY29zaWFDYWlyb09w
ZXJhdGlvblJlY29yZGVyLmNwcAppbmRleCAzMDRmYWNiYWIxNTIuLmEyYzllMDkzZmMxNCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS9jYWlyby9O
aWNvc2lhQ2Fpcm9PcGVyYXRpb25SZWNvcmRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS9jYWlyby9OaWNvc2lhQ2Fpcm9PcGVyYXRpb25SZWNvcmRl
ci5jcHAKQEAgLTU0OSw2ICs1NDksMTIgQEAgSW1hZ2VEcmF3UmVzdWx0IENhaXJvT3BlcmF0aW9u
UmVjb3JkZXI6OmRyYXdUaWxlZEltYWdlKEltYWdlJiBpbWFnZSwgY29uc3QgRmxvYXQKICAgICBy
ZXR1cm4gR3JhcGhpY3NDb250ZXh0SW1wbDo6ZHJhd1RpbGVkSW1hZ2VJbXBsKGdyYXBoaWNzQ29u
dGV4dCgpLCBpbWFnZSwgZGVzdGluYXRpb24sIHNvdXJjZSwgdGlsZVNjYWxlRmFjdG9yLCBoUnVs
ZSwgdlJ1bGUsIGltYWdlUGFpbnRpbmdPcHRpb25zKTsKIH0KIAorYm9vbCBDYWlyb09wZXJhdGlv
blJlY29yZGVyOjpkcmF3SW1hZ2VCdWZmZXIoSW1hZ2VCdWZmZXImLCBjb25zdCBGbG9hdFJlY3Qm
LCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYpCit7CisgICAg
Ly8gRklYTUU6IE5vdCBpbXBsZW1lbnRlZC4KKyAgICByZXR1cm4gZmFsc2U7Cit9CisKIHZvaWQg
Q2Fpcm9PcGVyYXRpb25SZWNvcmRlcjo6ZHJhd05hdGl2ZUltYWdlKGNvbnN0IE5hdGl2ZUltYWdl
UHRyJiBpbWFnZSwgY29uc3QgRmxvYXRTaXplJiBpbWFnZVNpemUsIGNvbnN0IEZsb2F0UmVjdCYg
ZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgSW1hZ2VQYWludGluZ09w
dGlvbnMmIG9wdGlvbnMpCiB7CiAgICAgc3RydWN0IERyYXdOYXRpdmVJbWFnZSBmaW5hbCA6IFBh
aW50aW5nT3BlcmF0aW9uLCBPcGVyYXRpb25EYXRhPFJlZlB0cjxjYWlyb19zdXJmYWNlX3Q+LCBG
bG9hdFJlY3QsIEZsb2F0UmVjdCwgSW1hZ2VQYWludGluZ09wdGlvbnMsIGZsb2F0LCBDYWlybzo6
U2hhZG93U3RhdGU+IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL25pY29zaWEvY2Fpcm8vTmljb3NpYUNhaXJvT3BlcmF0aW9uUmVjb3JkZXIuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvY2Fpcm8vTmljb3NpYUNhaXJvT3Bl
cmF0aW9uUmVjb3JkZXIuaAppbmRleCA1NzJmZjIxNjZmNmUuLjM4MDkzZDQxMzViNCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS9jYWlyby9OaWNv
c2lhQ2Fpcm9PcGVyYXRpb25SZWNvcmRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL25pY29zaWEvY2Fpcm8vTmljb3NpYUNhaXJvT3BlcmF0aW9uUmVjb3JkZXIuaApA
QCAtNjcsNiArNjcsOCBAQCBwcml2YXRlOgogICAgIFdlYkNvcmU6OkltYWdlRHJhd1Jlc3VsdCBk
cmF3SW1hZ2UoV2ViQ29yZTo6SW1hZ2UmLCBjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmLCBjb25z
dCBXZWJDb3JlOjpGbG9hdFJlY3QmLCBjb25zdCBXZWJDb3JlOjpJbWFnZVBhaW50aW5nT3B0aW9u
cyYpIG92ZXJyaWRlOwogICAgIFdlYkNvcmU6OkltYWdlRHJhd1Jlc3VsdCBkcmF3VGlsZWRJbWFn
ZShXZWJDb3JlOjpJbWFnZSYsIGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYsIGNvbnN0IFdlYkNv
cmU6OkZsb2F0UG9pbnQmLCBjb25zdCBXZWJDb3JlOjpGbG9hdFNpemUmLCBjb25zdCBXZWJDb3Jl
OjpGbG9hdFNpemUmLCBjb25zdCBXZWJDb3JlOjpJbWFnZVBhaW50aW5nT3B0aW9ucyYpIG92ZXJy
aWRlOwogICAgIFdlYkNvcmU6OkltYWdlRHJhd1Jlc3VsdCBkcmF3VGlsZWRJbWFnZShXZWJDb3Jl
OjpJbWFnZSYsIGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYsIGNvbnN0IFdlYkNvcmU6OkZsb2F0
UmVjdCYsIGNvbnN0IFdlYkNvcmU6OkZsb2F0U2l6ZSYsIFdlYkNvcmU6OkltYWdlOjpUaWxlUnVs
ZSwgV2ViQ29yZTo6SW1hZ2U6OlRpbGVSdWxlLCBjb25zdCBXZWJDb3JlOjpJbWFnZVBhaW50aW5n
T3B0aW9ucyYpIG92ZXJyaWRlOworCisgICAgYm9vbCBkcmF3SW1hZ2VCdWZmZXIoV2ViQ29yZTo6
SW1hZ2VCdWZmZXImLCBjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmIGRlc3RpbmF0aW9uLCBjb25z
dCBXZWJDb3JlOjpGbG9hdFJlY3QmIHNvdXJjZSwgY29uc3QgV2ViQ29yZTo6SW1hZ2VQYWludGlu
Z09wdGlvbnMmKSBvdmVycmlkZTsKICAgICB2b2lkIGRyYXdOYXRpdmVJbWFnZShjb25zdCBXZWJD
b3JlOjpOYXRpdmVJbWFnZVB0ciYsIGNvbnN0IFdlYkNvcmU6OkZsb2F0U2l6ZSYsIGNvbnN0IFdl
YkNvcmU6OkZsb2F0UmVjdCYsIGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYsIGNvbnN0IFdlYkNv
cmU6OkltYWdlUGFpbnRpbmdPcHRpb25zJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBkcmF3UGF0dGVy
bihXZWJDb3JlOjpJbWFnZSYsIGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYsIGNvbnN0IFdlYkNv
cmU6OkZsb2F0UmVjdCYsIGNvbnN0IFdlYkNvcmU6OkFmZmluZVRyYW5zZm9ybSYsIGNvbnN0IFdl
YkNvcmU6OkZsb2F0UG9pbnQmLCBjb25zdCBXZWJDb3JlOjpGbG9hdFNpemUmLCBjb25zdCBXZWJD
b3JlOjpJbWFnZVBhaW50aW5nT3B0aW9ucyYpIG92ZXJyaWRlOwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDhiNTcy
NWNhOGVlMC4uNzQ3OGMwYTVmNjFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxv
ZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDUzIEBACisyMDIwLTEw
LTIwICBTYWlkIEFib3UtSGFsbGF3YSAgPHNhaWRAYXBwbGUuY29tPgorCisgICAgICAgIFtHUFUg
UHJvY2Vzc106IEltcGxlbWVudCBEaXNwbGF5TGlzdDo6RHJhd0ltYWdlQnVmZmVyIGl0ZW0KKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxNzU2NgorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoZSBzZXF1ZW5j
ZSBpbiB0aGUgV2ViIFByb2Nlc3MgaXMgdGhlIGZvbGxvd2luZzoKKworICAgICAgICAtLSBHcmFw
aGljc0NvbnRleHQ6OmRyYXdJbWFnZUJ1ZmZlcigpIHVzZXMgRGlzcGxheUxpc3Q6OlJlY29yZGVy
IHRvIGNoZWNrCisgICAgICAgICAgIHdoZXRoZXIgaXQgaXMgYXBwcm9wcmlhdGUgdG8gY3JlYXRl
IGEgRHJhd0ltYWdlQnVmZmVyIGl0ZW0gb3Igbm90LgorCisgICAgICAgIC0tIERpc3BsYXlMaXN0
OjpSZWNvcmRlcjo6ZHJhd0ltYWdlQnVmZmVyKCkgdXNlcyB0aGUgZGVsZWdhdGUgdG8gc2VlIGlm
CisgICAgICAgICAgIHRoZSBJbWFnZUJ1ZmZlciBpcyByZW1vdGUgb3Igbm90IGFuZCB3aGV0aGVy
IGl0IGNhbiBiZSBsb2NrZWQgdGlsbCAKKyAgICAgICAgICAgcmVwbGF5aW5nIGJhY2sgdGhlIERp
c3BsYXlMaXN0IGluIHRoZSBHUFUgc2lkZS4gCisKKyAgICAgICAgLS0gUmVtb3RlSW1hZ2VCdWZm
ZXJQcm94eSBpbmhlcml0cyBEaXNwbGF5TGlzdDo6UmVjb3JkZXI6OkRlbGVnYXRlLiBTbyBpdHMK
KyAgICAgICAgICAgbG9ja1JlbW90ZUltYWdlQnVmZmVyKCkgaXMgY2FsbGVkLgorCisgICAgICAg
IC0tIElmIHRoZSBJbWFnZUJ1ZmZlciBjYW4gYmUgbG9ja2VkLCBhIERyYXdJbWFnZUJ1ZmZlckl0
ZW0gaXMgY3JlYXRlZCB3aXRoCisgICAgICAgICAgIHRoZSBJbWFnZUJ1ZmZlcjo6cmVtb3RlUmVz
b3VyY2VJZGVudGlmaWVyKCkuCisKKyAgICAgICAgVGhlIHNlcXVlbmNlIGluIHRoZSBHUFUgUHJv
Y2VzcyBpcyB0aGUgZm9sbG93aW5nOgorCisgICAgICAgIC0tIFdoZW4gcmVwbGF5aW5nIGJhY2sg
dGhlIERpc3BsYXlMaXN0LCBEaXNwbGF5TGlzdDo6UmVwbGF5ZXIgd2lsbCBjYWxsCisgICAgICAg
ICAgIGl0cyBkZWxlZ2F0ZSB0byBjaGVjayBpZiBpdCB3YW50cyB0byBhcHBseSB0aGUgRHJhd0lt
YWdlQnVmZmVyLgorCisgICAgICAgIC0tIEJlY2F1c2UgUmVtb3RlSW1hZ2VCdWZmZXIgaW5oZXJp
dHMgRGlzcGxheUxpc3Q6OlJlcGxheWVyOjpEZWxlZ2F0ZSwKKyAgICAgICAgICAgUmVtb3RlSW1h
Z2VCdWZmZXI6OmFwcGx5KCkgd2lsbCBiZSBjYWxsZWQuCisKKyAgICAgICAgLS0gUmVtb3RlSW1h
Z2VCdWZmZXIgd2lsbCBjYWxsIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OmFwcGx5UmVzb3VyY2VJ
dGVtKCkKKyAgICAgICAgICAgd2hpY2ggd2lsbCBjaGVjayB3aGV0aGVyIHRoZSBpdGVtJ3MgcmVt
b3RlUmVzb3VyY2VJZGVudGlmaWVyIGlzIG9uZSBvZiAKKyAgICAgICAgICAgdGhlIEltYWdlQnVm
ZmVycyBpbiBpdHMgUmVtb3RlUmVzb3VyY2VDYWNoZSBvciBub3QuCisKKyAgICAgICAgLS0gSWYg
dGhlcmUgaXMgYSBjYWNoZWQgSW1hZ2VCdWZmZXIsIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OmFw
cGx5UmVzb3VyY2VJdGVtKCkKKyAgICAgICAgICAgd2lsbCBkcmF3IHRvIEdyYXBoaWNzQ29udGV4
dC4KKworICAgICAgICAqIEdQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlSW1hZ2VCdWZmZXIuaDoK
KyAgICAgICAgKiBHUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQuY3Bw
OgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjphcHBseVJlc291cmNl
SXRlbSk6CisgICAgICAgICogR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNr
ZW5kLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlSW1hZ2VCdWZm
ZXJQcm94eS5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZVJlc291
cmNlQ2FjaGVQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVJlc291cmNlQ2FjaGVQ
cm94eTo6cmVsZWFzZUltYWdlQnVmZmVyKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlUmVzb3Vy
Y2VDYWNoZVByb3h5Ojpsb2NrUmVtb3RlSW1hZ2VCdWZmZXJGb3JSZW1vdGVDbGllbnQpOgorICAg
ICAgICAoV2ViS2l0OjpSZW1vdGVSZXNvdXJjZUNhY2hlUHJveHk6OmxvY2tSZW1vdGVSZXNvdXJj
ZUZvclJlbW90ZUNsaWVudCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVJlc291cmNlQ2FjaGVQ
cm94eTo6cmVsZWFzZVJlbW90ZVJlc291cmNlKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlUmVz
b3VyY2VDYWNoZVByb3h5Ojp1bmxvY2tSZW1vdGVSZXNvdXJjZXNGb3JSZW1vdGVDbGllbnQpOgor
ICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZVJlc291cmNlQ2FjaGVQcm94
eS5oOgorCiAyMDIwLTEwLTE5ICBTYWlkIEFib3UtSGFsbGF3YSAgPHNhYm91aGFsbGF3YUBhcHBs
ZS5jb20+CiAKICAgICAgICAgW0dQVSBQcm9jZXNzXTogSW50cm9kdWNlIFJlbW90ZVJlc291cmNl
Q2FjaGVQcm94eSB0byBtYW5hZ2UgdGhlIHJlbW90ZSByZXNvdXJjZXMgaW4gV2ViIFByb2Nlc3MK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVJbWFn
ZUJ1ZmZlci5oIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUltYWdl
QnVmZmVyLmgKaW5kZXggNzhkODJmOGM0NGJjLi5lMjY4MzYyYTUxNGIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVJbWFnZUJ1ZmZlci5oCisrKyBi
L1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVJbWFnZUJ1ZmZlci5oCkBA
IC04Myw3ICs4Myw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAg
ICAgfQogCi0gICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgcmV0dXJuIG1fcmVtb3RlUmVu
ZGVyaW5nQmFja2VuZC5hcHBseVJlc291cmNlSXRlbShpdGVtLCBjb250ZXh0KTsKICAgICB9CiAK
ICAgICB2b2lkIGFwcGx5KFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpQYWludEZyYW1lRm9yTWVkaWEm
IGl0ZW0sIFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dCYgY29udGV4dCkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kLmNw
cCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNr
ZW5kLmNwcAppbmRleCAxZWYyOGVlMmYyNTIuLjY1MzkxMmFlNGFmOCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdC
YWNrZW5kLmNwcApAQCAtNzIsNiArNzIsMTggQEAgdWludDY0X3QgUmVtb3RlUmVuZGVyaW5nQmFj
a2VuZDo6bWVzc2FnZVNlbmRlckRlc3RpbmF0aW9uSUQoKSBjb25zdAogICAgIHJldHVybiBtX3Jl
bmRlcmluZ0JhY2tlbmRJZGVudGlmaWVyLnRvVUludDY0KCk7CiB9CiAKK2Jvb2wgUmVtb3RlUmVu
ZGVyaW5nQmFja2VuZDo6YXBwbHlSZXNvdXJjZUl0ZW0oY29uc3QgRGlzcGxheUxpc3Q6Okl0ZW0m
IGl0ZW0sIEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCkKK3sKKyAgICBpZiAoaXRlbS50eXBlKCkg
PT0gRGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpEcmF3SW1hZ2VCdWZmZXIpIHsKKyAgICAgICAgYXV0
byYgZHJhd0l0ZW0gPSBzdGF0aWNfY2FzdDxjb25zdCBEaXNwbGF5TGlzdDo6RHJhd0ltYWdlQnVm
ZmVyJj4oaXRlbSk7CisgICAgICAgIGlmIChhdXRvIGltYWdlQnVmZmVyID0gbV9yZW1vdGVSZXNv
dXJjZUNhY2hlLmNhY2hlZEltYWdlQnVmZmVyKGRyYXdJdGVtLnJlbW90ZVJlc291cmNlSWRlbnRp
ZmllcigpKSkgeworICAgICAgICAgICAgaW1hZ2VCdWZmZXItPmRyYXcoY29udGV4dCwgZHJhd0l0
ZW0uZGVzdGluYXRpb25SZWN0KCksIGRyYXdJdGVtLnNvdXJjZSgpLCBkcmF3SXRlbS5vcHRpb25z
KCkpOworICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIH0KKyAgICB9CisgICAgcmV0
dXJuIGZhbHNlOworfQorCiB2b2lkIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OmltYWdlQnVmZmVy
QmFja2VuZFdhc0NyZWF0ZWQoY29uc3QgRmxvYXRTaXplJiBsb2dpY2FsU2l6ZSwgY29uc3QgSW50
U2l6ZSYgYmFja2VuZFNpemUsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwgQ29sb3JTcGFjZSBjb2xv
clNwYWNlLCBJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGUgaGFuZGxlLCBSZW1vdGVSZXNvdXJjZUlk
ZW50aWZpZXIgcmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyKQogewogICAgIHNlbmQoTWVzc2FnZXM6
OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eTo6SW1hZ2VCdWZmZXJCYWNrZW5kV2FzQ3JlYXRl
ZChsb2dpY2FsU2l6ZSwgYmFja2VuZFNpemUsIHJlc29sdXRpb25TY2FsZSwgY29sb3JTcGFjZSwg
V1RGTW92ZShoYW5kbGUpLCByZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIpLCBtX3JlbmRlcmluZ0Jh
Y2tlbmRJZGVudGlmaWVyKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9n
cmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kLmggYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nl
c3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5oCmluZGV4IGVmZmJhNDQ5YjE4OC4u
ODE4NzRmYWU2NWQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhp
Y3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vz
cy9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kLmgKQEAgLTQyLDYgKzQyLDcgQEAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIG5hbWVzcGFjZSBEaXNwbGF5TGlzdCB7CiBjbGFzcyBEaXNwbGF5
TGlzdDsKK2NsYXNzIEl0ZW07CiB9CiBjbGFzcyBGbG9hdFNpemU7CiBlbnVtIGNsYXNzIENvbG9y
U3BhY2UgOiB1aW50OF90OwpAQCAtNjEsNiArNjIsOSBAQCBwdWJsaWM6CiAKICAgICBHUFVDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzKiBncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzKCkgY29uc3Q7CiAK
KyAgICAvLyBSZW5kZXJpbmcgb3BlcmF0aW9ucy4KKyAgICBib29sIGFwcGx5UmVzb3VyY2VJdGVt
KGNvbnN0IFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtJiwgV2ViQ29yZTo6R3JhcGhpY3NDb250
ZXh0Jik7CisKICAgICAvLyBNZXNzYWdlcyB0byBiZSBzZW50LgogICAgIHZvaWQgaW1hZ2VCdWZm
ZXJCYWNrZW5kV2FzQ3JlYXRlZChjb25zdCBXZWJDb3JlOjpGbG9hdFNpemUmIGxvZ2ljYWxTaXpl
LCBjb25zdCBXZWJDb3JlOjpJbnRTaXplJiBiYWNrZW5kU2l6ZSwgZmxvYXQgcmVzb2x1dGlvblNj
YWxlLCBXZWJDb3JlOjpDb2xvclNwYWNlLCBJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGUsIFdlYkNv
cmU6OlJlbW90ZVJlc291cmNlSWRlbnRpZmllcik7CiAgICAgdm9pZCBmbHVzaERpc3BsYXlMaXN0
V2FzQ29tbWl0dGVkKERpc3BsYXlMaXN0Rmx1c2hJZGVudGlmaWVyLCBXZWJDb3JlOjpSZW1vdGVS
ZXNvdXJjZUlkZW50aWZpZXIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L0dQVS9ncmFwaGljcy9SZW1vdGVJbWFnZUJ1ZmZlclByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUltYWdlQnVmZmVyUHJveHkuaAppbmRleCAyNzlh
NzkyYTAyZGMuLmUwZDJmZjdkMWE2NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVJbWFnZUJ1ZmZlclByb3h5LmgKKysrIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVJbWFnZUJ1ZmZlclByb3h5LmgKQEAg
LTEzMSw2ICsxMzEsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgICAgIGZvciAodW5zaWduZWQgbnVtV2Fp
dGluZ0ZsdXNoID0gMDsgbnVtV2FpdGluZ0ZsdXNoIDwgbWF4V2FpdGluZ0ZsdXNoICYmIGlzUGVu
ZGluZ0ZsdXNoKCk7ICsrbnVtV2FpdGluZ0ZsdXNoKQogICAgICAgICAgICAgbV9yZW1vdGVSZW5k
ZXJpbmdCYWNrZW5kUHJveHktPndhaXRGb3JGbHVzaERpc3BsYXlMaXN0V2FzQ29tbWl0dGVkKCk7
CiAKKyAgICAgICAgbV9yZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHktPnJlbW90ZVJlc291cmNl
Q2FjaGVQcm94eSgpLnVubG9ja1JlbW90ZVJlc291cmNlc0ZvclJlbW90ZUNsaWVudChtX3JlbW90
ZVJlc291cmNlSWRlbnRpZmllcik7CiAgICAgICAgIGRpc3BsYXlMaXN0LmNsZWFyKCk7CiAgICAg
fQogCkBAIC0xNDEsNiArMTQyLDcgQEAgcHJvdGVjdGVkOgogCiAgICAgICAgIFRyYWNlU2NvcGUg
dHJhY2luZ1Njb3BlKEZsdXNoUmVtb3RlSW1hZ2VCdWZmZXJTdGFydCwgRmx1c2hSZW1vdGVJbWFn
ZUJ1ZmZlckVuZCk7CiAgICAgICAgIG1fcmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5LT5mbHVz
aERpc3BsYXlMaXN0KGRpc3BsYXlMaXN0LCBtX3JlbW90ZVJlc291cmNlSWRlbnRpZmllcik7Cisg
ICAgICAgIG1fcmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5LT5yZW1vdGVSZXNvdXJjZUNhY2hl
UHJveHkoKS51bmxvY2tSZW1vdGVSZXNvdXJjZXNGb3JSZW1vdGVDbGllbnQobV9yZW1vdGVSZXNv
dXJjZUlkZW50aWZpZXIpOwogICAgIH0KIAogICAgIHZvaWQgd2lsbEFwcGVuZEl0ZW0oY29uc3Qg
V2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW0mKSBvdmVycmlkZQpAQCAtMTUzLDcgKzE1NSwxNCBA
QCBwcm90ZWN0ZWQ6CiAgICAgICAgIGZsdXNoRGlzcGxheUxpc3QoZGlzcGxheUxpc3QpOwogICAg
ICAgICBkaXNwbGF5TGlzdC5jbGVhcigpOwogICAgIH0KLSAgICAKKworICAgIGJvb2wgbG9ja1Jl
bW90ZUltYWdlQnVmZmVyKFdlYkNvcmU6OkltYWdlQnVmZmVyJiBpbWFnZUJ1ZmZlcikgb3ZlcnJp
ZGUKKyAgICB7CisgICAgICAgIGlmICghbV9yZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkpCisg
ICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIHJldHVybiBtX3JlbW90ZVJlbmRlcmlu
Z0JhY2tlbmRQcm94eS0+cmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5KCkubG9ja1JlbW90ZUltYWdl
QnVmZmVyRm9yUmVtb3RlQ2xpZW50KGltYWdlQnVmZmVyLCBtX3JlbW90ZVJlc291cmNlSWRlbnRp
Zmllcik7CisgICAgfQorCiAgICAgRGlzcGxheUxpc3RGbHVzaElkZW50aWZpZXIgbV9zZW50Rmx1
c2hJZGVudGlmaWVyOwogICAgIERpc3BsYXlMaXN0Rmx1c2hJZGVudGlmaWVyIG1fcmVjZWl2ZWRG
bHVzaElkZW50aWZpZXI7CiAgICAgV2ViQ29yZTo6UmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyIG1f
cmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyIHsgV2ViQ29yZTo6UmVtb3RlUmVzb3VyY2VJZGVudGlm
aWVyOjpnZW5lcmF0ZSgpIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
R1BVL2dyYXBoaWNzL1JlbW90ZVJlc291cmNlQ2FjaGVQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZVJlc291cmNlQ2FjaGVQcm94eS5jcHAKaW5k
ZXggOGVhNjg0YmJiM2U2Li5mNDBmNDE5NzQxMTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5LmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZVJlc291cmNlQ2Fj
aGVQcm94eS5jcHAKQEAgLTQ5LDExICs0OSw3OSBAQCBJbWFnZUJ1ZmZlciogUmVtb3RlUmVzb3Vy
Y2VDYWNoZVByb3h5OjpjYWNoZWRJbWFnZUJ1ZmZlcihSZW1vdGVSZXNvdXJjZUlkZW50aWZpZQog
ICAgIHJldHVybiBtX2ltYWdlQnVmZmVycy5nZXQoaWRlbnRpZmllcik7CiB9CiAKLXZvaWQgUmVt
b3RlUmVzb3VyY2VDYWNoZVByb3h5OjpyZWxlYXNlSW1hZ2VCdWZmZXIoUmVtb3RlUmVzb3VyY2VJ
ZGVudGlmaWVyIGlkZW50aWZpZXIpCit2b2lkIFJlbW90ZVJlc291cmNlQ2FjaGVQcm94eTo6cmVs
ZWFzZUltYWdlQnVmZmVyKFJlbW90ZVJlc291cmNlSWRlbnRpZmllciByZW1vdGVSZXNvdXJjZUlk
ZW50aWZpZXIpCiB7Ci0gICAgYm9vbCBmb3VuZCA9IG1faW1hZ2VCdWZmZXJzLnJlbW92ZShpZGVu
dGlmaWVyKTsKKyAgICBib29sIGZvdW5kID0gbV9pbWFnZUJ1ZmZlcnMucmVtb3ZlKHJlbW90ZVJl
c291cmNlSWRlbnRpZmllcik7CiAgICAgQVNTRVJUX1VOVVNFRChmb3VuZCwgZm91bmQpOwotICAg
IG1fcmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5LnJlbGVhc2VSZW1vdGVSZXNvdXJjZShpZGVu
dGlmaWVyKTsKKworICAgIC8vIFRlbGwgdGhlIEdQVSBwcm9jZXNzIHRvIHJlbW92ZSB0aGlzIHJl
c291cmNlIHVubGVzcyBpdCdzIHBlbmRpbmcgcmVwbGF5aW5nIGJhY2suCisgICAgcmVsZWFzZVJl
bW90ZVJlc291cmNlKHJlbW90ZVJlc291cmNlSWRlbnRpZmllcik7Cit9CisKK2Jvb2wgUmVtb3Rl
UmVzb3VyY2VDYWNoZVByb3h5Ojpsb2NrUmVtb3RlSW1hZ2VCdWZmZXJGb3JSZW1vdGVDbGllbnQo
SW1hZ2VCdWZmZXImIGltYWdlQnVmZmVyLCBSZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIgcmVtb3Rl
Q2xpZW50SWRlbnRpZmllcikKK3sKKyAgICBpZiAoIWltYWdlQnVmZmVyLnJlbW90ZVJlc291cmNl
SWRlbnRpZmllcigpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgCisgICAgaWYgKGNhY2hl
ZEltYWdlQnVmZmVyKGltYWdlQnVmZmVyLnJlbW90ZVJlc291cmNlSWRlbnRpZmllcigpKSAhPSAm
aW1hZ2VCdWZmZXIpIHsKKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIHJl
dHVybiBmYWxzZTsKKyAgICB9CisKKyAgICBsb2NrUmVtb3RlUmVzb3VyY2VGb3JSZW1vdGVDbGll
bnQoaW1hZ2VCdWZmZXIucmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyKCksIHJlbW90ZUNsaWVudElk
ZW50aWZpZXIpOworICAgIHJldHVybiB0cnVlOworfQorCit2b2lkIFJlbW90ZVJlc291cmNlQ2Fj
aGVQcm94eTo6bG9ja1JlbW90ZVJlc291cmNlRm9yUmVtb3RlQ2xpZW50KFJlbW90ZVJlc291cmNl
SWRlbnRpZmllciByZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIsIFJlbW90ZVJlc291cmNlSWRlbnRp
ZmllciByZW1vdGVDbGllbnRJZGVudGlmaWVyKQoreworICAgIC8vIEFkZCB0aGUgInJlc291cmNl
IC0+IGNsaWVudCIgZGVwZW5kZW5jeSBpbiBtX2xvY2tlZFJlbW90ZVJlc291cmNlRm9yUmVtb3Rl
Q2xpZW50cy4KKyAgICBhdXRvJiBjbGllbnRzID0gbV9sb2NrZWRSZW1vdGVSZXNvdXJjZUZvclJl
bW90ZUNsaWVudHMuZW5zdXJlKHJlbW90ZVJlc291cmNlSWRlbnRpZmllciwgWyZdIHsKKyAgICAg
ICAgcmV0dXJuIFJlbW90ZUNsaWVudHNIYXNoU2V0KCk7CisgICAgfSkuaXRlcmF0b3ItPnZhbHVl
OworCisgICAgY2xpZW50cy5hZGQocmVtb3RlQ2xpZW50SWRlbnRpZmllcik7Cit9CisKK3ZvaWQg
UmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5OjpyZWxlYXNlUmVtb3RlUmVzb3VyY2UoUmVtb3RlUmVz
b3VyY2VJZGVudGlmaWVyIHJlbW90ZVJlc291cmNlSWRlbnRpZmllcikKK3sKKyAgICBBU1NFUlQo
IW1fcGVuZGluZ1VubG9ja1JlbW90ZVJlc291cmNlRm9yUmVtb3RlQ2xpZW50cy5jb250YWlucyhy
ZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIpKTsKKworICAgIC8vIElmIHdlIGhhdmUgcmVjb3JkZWQg
cmVzb3VyY2UgLT4gY2xpZW50IGRlcGVuZGVuY3kgYmVmb3JlIGluIG1fbG9ja2VkUmVtb3RlUmVz
b3VyY2VGb3JSZW1vdGVDbGllbnRzLCBtb3ZlIHRoaXMKKyAgICAvLyBkZXBlbmRlbmN5IHRvIG1f
cGVuZGluZ1VubG9ja1JlbW90ZVJlc291cmNlRm9yUmVtb3RlQ2xpZW50cy4gT3RoZXJ3aXNlIHJl
bW92ZSB0aGUgcmVzb3VyY2UgaW4gdGhlIEdQVSBQcm9jZXNzLgorICAgIGlmIChtX2xvY2tlZFJl
bW90ZVJlc291cmNlRm9yUmVtb3RlQ2xpZW50cy5jb250YWlucyhyZW1vdGVSZXNvdXJjZUlkZW50
aWZpZXIpKQorICAgICAgICBtX3BlbmRpbmdVbmxvY2tSZW1vdGVSZXNvdXJjZUZvclJlbW90ZUNs
aWVudHMuYWRkKHJlbW90ZVJlc291cmNlSWRlbnRpZmllciwgbV9sb2NrZWRSZW1vdGVSZXNvdXJj
ZUZvclJlbW90ZUNsaWVudHMudGFrZShyZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIpKTsKKyAgICBl
bHNlCisgICAgICAgIG1fcmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5LnJlbGVhc2VSZW1vdGVS
ZXNvdXJjZShyZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZVJlc291
cmNlQ2FjaGVQcm94eTo6dW5sb2NrUmVtb3RlUmVzb3VyY2VzRm9yUmVtb3RlQ2xpZW50KFJlbW90
ZVJlc291cmNlSWRlbnRpZmllciByZW1vdGVDbGllbnRJZGVudGlmaWVyKQoreworICAgIGF1dG8g
cmVtb3ZlUmVtb3RlQ2xpZW50ID0gWyZdKFJlbW90ZVJlc291cmNlQ2xpZW50c0hhc2hNYXAmIHJl
bW90ZVJlc291cmNlRm9yUmVtb3RlQ2xpZW50cywgUmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyIHJl
bW90ZUNsaWVudElkZW50aWZpZXIpIHsKKyAgICAgICAgVmVjdG9yPFJlbW90ZVJlc291cmNlSWRl
bnRpZmllcj4gcmVtb3RlUmVzb3VyY2VDbGllbnRzVG9CZVJlbW92ZWQ7CisKKyAgICAgICAgLy8g
UmVtb3ZlIGFsbCB0aGUgcmVzb3VyY2UgLT4gY2xpZW50IGRlcGVuZGVuY2llcyBmcm9tIHJlbW90
ZVJlc291cmNlQ2xpZW50c0hhc2hNYXAuCisgICAgICAgIGZvciAoYXV0byYgcGFpciA6IHJlbW90
ZVJlc291cmNlRm9yUmVtb3RlQ2xpZW50cykgeworICAgICAgICAgICAgcGFpci52YWx1ZS5yZW1v
dmUocmVtb3RlQ2xpZW50SWRlbnRpZmllcik7CisgICAgICAgICAgICBpZiAocGFpci52YWx1ZS5p
c0VtcHR5KCkpCisgICAgICAgICAgICAgICAgcmVtb3RlUmVzb3VyY2VDbGllbnRzVG9CZVJlbW92
ZWQuYXBwZW5kKHBhaXIua2V5KTsKKyAgICAgICAgfQorCisgICAgICAgIC8vIFJldHVybiBhIGxp
c3Qgb2YgdGhlIHVucmVmZXJlbmNlZCByZXNvdXJjZXMuCisgICAgICAgIHJldHVybiByZW1vdGVS
ZXNvdXJjZUNsaWVudHNUb0JlUmVtb3ZlZDsKKyAgICB9OworCisgICAgLy8gUmVtb3ZlIGFsbCB0
aGUgcmVzb3VyY2UgLT4gY2xpZW50IGRlcGVuZGVuY2llcyBmcm9tIG1fbG9ja2VkUmVtb3RlUmVz
b3VyY2VGb3JSZW1vdGVDbGllbnRzLgorICAgIGZvciAoYXV0byByZW1vdGVSZXNvdXJjZUlkZW50
aWZpZXIgOiByZW1vdmVSZW1vdGVDbGllbnQobV9sb2NrZWRSZW1vdGVSZXNvdXJjZUZvclJlbW90
ZUNsaWVudHMsIHJlbW90ZUNsaWVudElkZW50aWZpZXIpKQorICAgICAgICBtX2xvY2tlZFJlbW90
ZVJlc291cmNlRm9yUmVtb3RlQ2xpZW50cy5yZW1vdmUocmVtb3RlUmVzb3VyY2VJZGVudGlmaWVy
KTsKKworICAgIC8vIFJlbW92ZSBhbGwgdGhlIHJlc291cmNlIC0+IGNsaWVudCBkZXBlbmRlbmNp
ZXMgZnJvbSBtX3BlbmRpbmdVbmxvY2tSZW1vdGVSZXNvdXJjZUZvclJlbW90ZUNsaWVudHMuCisg
ICAgZm9yIChhdXRvIHJlbW90ZVJlc291cmNlSWRlbnRpZmllciA6IHJlbW92ZVJlbW90ZUNsaWVu
dChtX3BlbmRpbmdVbmxvY2tSZW1vdGVSZXNvdXJjZUZvclJlbW90ZUNsaWVudHMsIHJlbW90ZUNs
aWVudElkZW50aWZpZXIpKSB7CisgICAgICAgIC8vIFJlbW92ZSB0aGUgdW5yZWZlcmVuY2VkIHJl
c291cmNlcyBmcm9tIG1fcmVtb3RlUmVzb3VyY2VDbGllbnRzUGVuZGluZ1JlbGVhc2VIYXNoTWFw
LgorICAgICAgICBtX3BlbmRpbmdVbmxvY2tSZW1vdGVSZXNvdXJjZUZvclJlbW90ZUNsaWVudHMu
cmVtb3ZlKHJlbW90ZVJlc291cmNlSWRlbnRpZmllcik7CisKKyAgICAgICAgLy8gVGVsbCB0aGUg
R1BVIHByb2Nlc3MgdG8gcmVtb3ZlIHRoaXMgcmVzb3VyY2UuCisgICAgICAgIG1fcmVtb3RlUmVu
ZGVyaW5nQmFja2VuZFByb3h5LnJlbGVhc2VSZW1vdGVSZXNvdXJjZShyZW1vdGVSZXNvdXJjZUlk
ZW50aWZpZXIpOworICAgIH0KIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZVJlc291cmNlQ2Fj
aGVQcm94eS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVS
ZXNvdXJjZUNhY2hlUHJveHkuaAppbmRleCA2YTA4MTVjODUyNWEuLjQ3OGU0Yjk5M2Q3NyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVSZXNv
dXJjZUNhY2hlUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBo
aWNzL1JlbW90ZVJlc291cmNlQ2FjaGVQcm94eS5oCkBAIC00NiwxMCArNDYsMjAgQEAgcHVibGlj
OgogICAgIFdlYkNvcmU6OkltYWdlQnVmZmVyKiBjYWNoZWRJbWFnZUJ1ZmZlcihXZWJDb3JlOjpS
ZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIpOwogICAgIHZvaWQgcmVsZWFzZUltYWdlQnVmZmVyKFdl
YkNvcmU6OlJlbW90ZVJlc291cmNlSWRlbnRpZmllcik7CiAKKyAgICBib29sIGxvY2tSZW1vdGVJ
bWFnZUJ1ZmZlckZvclJlbW90ZUNsaWVudChXZWJDb3JlOjpJbWFnZUJ1ZmZlciYsIFdlYkNvcmU6
OlJlbW90ZVJlc291cmNlSWRlbnRpZmllciByZW1vdGVDbGllbnRJZGVudGlmaWVyKTsKKyAgICB2
b2lkIHVubG9ja1JlbW90ZVJlc291cmNlc0ZvclJlbW90ZUNsaWVudChXZWJDb3JlOjpSZW1vdGVS
ZXNvdXJjZUlkZW50aWZpZXIgcmVtb3RlQ2xpZW50SWRlbnRpZmllcik7CisgICAgCiBwcml2YXRl
OgorICAgIHVzaW5nIFJlbW90ZUNsaWVudHNIYXNoU2V0ID0gSGFzaFNldDxXZWJDb3JlOjpSZW1v
dGVSZXNvdXJjZUlkZW50aWZpZXI+OworICAgIHVzaW5nIFJlbW90ZVJlc291cmNlQ2xpZW50c0hh
c2hNYXAgPSBIYXNoTWFwPFdlYkNvcmU6OlJlbW90ZVJlc291cmNlSWRlbnRpZmllciwgUmVtb3Rl
Q2xpZW50c0hhc2hTZXQ+OwogICAgIHVzaW5nIFJlbW90ZUltYWdlQnVmZmVyUHJveHlIYXNoTWFw
ID0gSGFzaE1hcDxXZWJDb3JlOjpSZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIsIFdlYkNvcmU6Oklt
YWdlQnVmZmVyKj47Ci0gICAgCisKKyAgICB2b2lkIGxvY2tSZW1vdGVSZXNvdXJjZUZvclJlbW90
ZUNsaWVudChXZWJDb3JlOjpSZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIsIFdlYkNvcmU6OlJlbW90
ZVJlc291cmNlSWRlbnRpZmllciByZW1vdGVDbGllbnRJZGVudGlmaWVyKTsKKyAgICB2b2lkIHJl
bGVhc2VSZW1vdGVSZXNvdXJjZShXZWJDb3JlOjpSZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIpOwor
CiAgICAgUmVtb3RlSW1hZ2VCdWZmZXJQcm94eUhhc2hNYXAgbV9pbWFnZUJ1ZmZlcnM7CisgICAg
UmVtb3RlUmVzb3VyY2VDbGllbnRzSGFzaE1hcCBtX2xvY2tlZFJlbW90ZVJlc291cmNlRm9yUmVt
b3RlQ2xpZW50czsKKyAgICBSZW1vdGVSZXNvdXJjZUNsaWVudHNIYXNoTWFwIG1fcGVuZGluZ1Vu
bG9ja1JlbW90ZVJlc291cmNlRm9yUmVtb3RlQ2xpZW50czsKICAgICBSZW1vdGVSZW5kZXJpbmdC
YWNrZW5kUHJveHkmIG1fcmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5OwogfTsKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>412398</attachid>
            <date>2020-10-27 00:44:53 -0700</date>
            <delta_ts>2020-10-27 02:00:57 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-217566-20201027004452.patch</filename>
            <type>text/plain</type>
            <size>38328</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY5MDIyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjI2MTAyOTAyZmNlOWJl
NWFmNTVhMTdlZWUyMDQ0ZTBhM2EzMzFkZS4uYjdmNTc4ZTI0OTMwYjQxMmY0ZmE1NTY3YzI1NzIw
YTUxN2Y5MmIzZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ2IEBACisyMDIwLTEwLTI3ICBTYWlk
IEFib3UtSGFsbGF3YSAgPHNhYm91aGFsbGF3YUBhcHBsZS5jb20+CisKKyAgICAgICAgW0dQVSBQ
cm9jZXNzXTogSW1wbGVtZW50IERpc3BsYXlMaXN0OjpEcmF3SW1hZ2VCdWZmZXIgaXRlbQorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE3NTY2CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIHRoZSBEcmF3
SW1hZ2VCdWZmZXIgRGlzcGxheUxpc3QgaXRlbS4gSXQgd2lsbCBiZSB1c2VkIG9ubHkgZm9yIEdQ
VQorICAgICAgICByZW5kZXJpbmcuIFRoZSByZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgb2Yg
dGhlIHNvdXJjZSBJbWFnZUJ1ZmZlcgorICAgICAgICB3aWxsIGJlIHJlY29yZGVkLiBGb3IgZGV0
YWlscyBvbiBob3cgZHJhd2luZyBhbiBJbWFnZUJ1ZmZlciB0byBhbm90aGVyIAorICAgICAgICBJ
bWFnZUJ1ZmZlciB3b3JrcyBzZWUgdGhlIFdlYktpdCBDaGFuZ2VMb2cuCisKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
R3JhcGhpY3NDb250ZXh0OjpkcmF3SW1hZ2VCdWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6R3Jh
cGhpY3NDb250ZXh0OjpkcmF3Q29uc3VtaW5nSW1hZ2VCdWZmZXIpOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dEltcGwuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRleHRJbXBsQ2Fpcm8uY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6R3JhcGhpY3NDb250ZXh0SW1wbENhaXJvOjpkcmF3SW1hZ2VCdWZmZXIpOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dEltcGxDYWlyby5oOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdC5oOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1z
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtOjpzaXplSW5CeXRlcyk6
CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RHJhd0ltYWdlQnVmZmVyOjpEcmF3SW1h
Z2VCdWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRyYXdJbWFnZUJ1ZmZl
cjo6YXBwbHkgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6Om9wZXJhdG9y
PDwpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlz
dEl0ZW1zLmg6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RHJhd0ltYWdlQnVmZmVy
OjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRyYXdJbWFnZUJ1ZmZl
cjo6cmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6
OkRpc3BsYXlMaXN0OjpEcmF3SW1hZ2VCdWZmZXI6OnNvdXJjZSBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpEaXNwbGF5TGlzdDo6RHJhd0ltYWdlQnVmZmVyOjpkZXN0aW5hdGlvblJlY3QgY29u
c3QpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRyYXdJbWFnZUJ1ZmZlcjo6b3B0
aW9ucyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RHJhd0ltYWdlQnVm
ZmVyOjplbmNvZGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRyYXdJ
bWFnZUJ1ZmZlcjo6ZGVjb2RlKToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVt
OjplbmNvZGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW06OmRl
Y29kZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlM
aXN0UmVjb3JkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OlJlY29yZGVy
OjpkcmF3SW1hZ2VCdWZmZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXls
aXN0cy9EaXNwbGF5TGlzdFJlY29yZGVyLmg6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlz
dDo6UmVjb3JkZXI6OkRlbGVnYXRlOjpsb2NrUmVtb3RlSW1hZ2VCdWZmZXIpOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvY2Fpcm8vTmljb3NpYUNhaXJvT3BlcmF0aW9uUmVj
b3JkZXIuY3BwOgorICAgICAgICAoTmljb3NpYTo6Q2Fpcm9PcGVyYXRpb25SZWNvcmRlcjo6ZHJh
d0ltYWdlQnVmZmVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lhL2NhaXJv
L05pY29zaWFDYWlyb09wZXJhdGlvblJlY29yZGVyLmg6CisKIDIwMjAtMTAtMjYgIFNhaWQgQWJv
dS1IYWxsYXdhICA8c2Fib3VoYWxsYXdhQGFwcGxlLmNvbT4KIAogICAgICAgICBbR1BVIFByb2Nl
c3NdOiBJbnRyb2R1Y2UgUmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5IHRvIG1hbmFnZSB0aGUgcmVt
b3RlIHJlc291cmNlcyBpbiBXZWIgUHJvY2VzcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCBiY2Y5NDZjZWMyMzRlMzlm
YzUwNmFlMDc0MTIyMTc5NDM0NmE3NDZhLi4wYTA0N2NjNTY2ZWEwM2JkZmViMTFmYmUxNzcwYjhl
OGNmZDAxNTM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3Vy
Y2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDU3IEBACisyMDIwLTEwLTI3ICBTYWlkIEFi
b3UtSGFsbGF3YSAgPHNhYm91aGFsbGF3YUBhcHBsZS5jb20+CisKKyAgICAgICAgW0dQVSBQcm9j
ZXNzXTogSW1wbGVtZW50IERpc3BsYXlMaXN0OjpEcmF3SW1hZ2VCdWZmZXIgaXRlbQorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE3NTY2CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhlIHNlcXVlbmNlIGlu
IHRoZSBXZWIgUHJvY2VzcyBpcyB0aGUgZm9sbG93aW5nOgorCisgICAgICAgIC0tIEdyYXBoaWNz
Q29udGV4dDo6ZHJhd0ltYWdlQnVmZmVyKCkgdXNlcyBEaXNwbGF5TGlzdDo6UmVjb3JkZXIgdG8g
Y2hlY2sKKyAgICAgICAgICAgd2hldGhlciBpdCBpcyBhcHByb3ByaWF0ZSB0byBjcmVhdGUgYSBE
cmF3SW1hZ2VCdWZmZXIgaXRlbSBvciBub3QuCisKKyAgICAgICAgLS0gRGlzcGxheUxpc3Q6OlJl
Y29yZGVyOjpkcmF3SW1hZ2VCdWZmZXIoKSB1c2VzIHRoZSBkZWxlZ2F0ZSB0byBzZWUgaWYKKyAg
ICAgICAgICAgdGhlIEltYWdlQnVmZmVyIGlzIHJlbW90ZSBvciBub3QgYW5kIHdoZXRoZXIgaXQg
Y2FuIGJlIGxvY2tlZCB0aWxsIAorICAgICAgICAgICByZXBsYXlpbmcgYmFjayB0aGUgRGlzcGxh
eUxpc3QgaW4gdGhlIEdQVSBzaWRlLiAKKworICAgICAgICAtLSBSZW1vdGVJbWFnZUJ1ZmZlclBy
b3h5IGluaGVyaXRzIERpc3BsYXlMaXN0OjpSZWNvcmRlcjo6RGVsZWdhdGUuIFNvCisgICAgICAg
ICAgIGl0cyBsb2NrUmVtb3RlSW1hZ2VCdWZmZXIoKSBpcyBjYWxsZWQuCisKKyAgICAgICAgLS0g
SWYgdGhlIEltYWdlQnVmZmVyIGNhbiBiZSBsb2NrZWQsIGEgRHJhd0ltYWdlQnVmZmVySXRlbSBp
cyBjcmVhdGVkIHdpdGgKKyAgICAgICAgICAgdGhlIEltYWdlQnVmZmVyOjpyZW5kZXJpbmdSZXNv
dXJjZUlkZW50aWZpZXIoKS4KKworICAgICAgICBUaGUgc2VxdWVuY2UgaW4gdGhlIEdQVSBQcm9j
ZXNzIGlzIHRoZSBmb2xsb3dpbmc6CisKKyAgICAgICAgLS0gV2hlbiByZXBsYXlpbmcgYmFjayB0
aGUgRGlzcGxheUxpc3QsIERpc3BsYXlMaXN0OjpSZXBsYXllciB3aWxsIGNhbGwKKyAgICAgICAg
ICAgaXRzIGRlbGVnYXRlIHRvIGNoZWNrIGlmIGl0IHdhbnRzIHRvIGFwcGx5IHRoZSBEcmF3SW1h
Z2VCdWZmZXIuCisKKyAgICAgICAgLS0gQmVjYXVzZSBSZW1vdGVJbWFnZUJ1ZmZlciBpbmhlcml0
cyBEaXNwbGF5TGlzdDo6UmVwbGF5ZXI6OkRlbGVnYXRlLAorICAgICAgICAgICBSZW1vdGVJbWFn
ZUJ1ZmZlcjo6YXBwbHkoKSB3aWxsIGJlIGNhbGxlZC4KKworICAgICAgICAtLSBSZW1vdGVJbWFn
ZUJ1ZmZlciB3aWxsIGNhbGwgUmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6YXBwbHlSZXNvdXJjZUl0
ZW0oKQorICAgICAgICAgICB3aGljaCB3aWxsIGNoZWNrIHdoZXRoZXIgdGhlIGl0ZW0ncyByZW5k
ZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgaXMgb25lCisgICAgICAgICAgIG9mIHRoZSBJbWFnZUJ1
ZmZlcnMgaW4gaXRzIFJlbW90ZVJlc291cmNlQ2FjaGUgb3Igbm90LgorCisgICAgICAgIC0tIElm
IHRoZXJlIGlzIGEgY2FjaGVkIEltYWdlQnVmZmVyLCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjph
cHBseVJlc291cmNlSXRlbSgpCisgICAgICAgICAgIHdpbGwgZHJhdyBpdCBpbiB0aGUgR3JhcGhp
Y3NDb250ZXh0LgorCisgICAgICAgICogR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVJbWFnZUJ1
ZmZlci5oOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVJbWFnZUJ1ZmZlcjo6YXBwbHkpOiBEZWxl
dGVkLgorICAgICAgICAqIEdQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2Vu
ZC5jcHA6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OmFwcGx5UmVz
b3VyY2VJdGVtKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6YXBw
bHlNZWRpYUl0ZW0pOgorICAgICAgICAqIEdQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVy
aW5nQmFja2VuZC5oOgorICAgICAgICAqIEdQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVzb3Vy
Y2VDYWNoZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVJlc291cmNlQ2FjaGU6OmNhY2hl
ZEltYWdlQnVmZmVyKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVJ
bWFnZUJ1ZmZlclByb3h5Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVt
b3RlUmVzb3VyY2VDYWNoZVByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlUmVzb3Vy
Y2VDYWNoZVByb3h5OjpyZWxlYXNlSW1hZ2VCdWZmZXIpOgorICAgICAgICAoV2ViS2l0OjpSZW1v
dGVSZXNvdXJjZUNhY2hlUHJveHk6OmxvY2tSZW1vdGVJbWFnZUJ1ZmZlckZvclJlbW90ZUNsaWVu
dCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVJlc291cmNlQ2FjaGVQcm94eTo6bG9ja1JlbW90
ZVJlc291cmNlRm9yUmVtb3RlQ2xpZW50KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlUmVzb3Vy
Y2VDYWNoZVByb3h5OjpyZWxlYXNlUmVtb3RlUmVzb3VyY2UpOgorICAgICAgICAoV2ViS2l0OjpS
ZW1vdGVSZXNvdXJjZUNhY2hlUHJveHk6OnVubG9ja1JlbW90ZVJlc291cmNlc0ZvclJlbW90ZUNs
aWVudCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlUmVzb3VyY2VD
YWNoZVByb3h5Lmg6CisKIDIwMjAtMTAtMjYgIFNhaWQgQWJvdS1IYWxsYXdhICA8c2Fib3VoYWxs
YXdhQGFwcGxlLmNvbT4KIAogICAgICAgICBbR1BVIFByb2Nlc3NdOiBJbnRyb2R1Y2UgUmVtb3Rl
UmVzb3VyY2VDYWNoZVByb3h5IHRvIG1hbmFnZSB0aGUgcmVtb3RlIHJlc291cmNlcyBpbiBXZWIg
UHJvY2VzcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3Jh
cGhpY3NDb250ZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBo
aWNzQ29udGV4dC5jcHAKaW5kZXggMGRjMDU1N2IwZDRmMDcyZWRiOThiYzU4YzEyOWI0MjFhODA4
ZjA2ZC4uMWMwMDg5ZGVkMGVlNzUxM2MxOGY5NGQzMmZhMzc1ZGVlNjhmZjkyZSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuY3Bw
CkBAIC04MTIsNiArODEyLDkgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OmRyYXdJbWFnZUJ1ZmZl
cihJbWFnZUJ1ZmZlciYgaW1hZ2UsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdGkKICAgICBpZiAocGFp
bnRpbmdEaXNhYmxlZCgpKQogICAgICAgICByZXR1cm47CiAKKyAgICBpZiAobV9pbXBsICYmIG1f
aW1wbC0+ZHJhd0ltYWdlQnVmZmVyKGltYWdlLCBkZXN0aW5hdGlvbiwgc291cmNlLCBvcHRpb25z
KSkKKyAgICAgICAgcmV0dXJuOworCiAgICAgSW50ZXJwb2xhdGlvblF1YWxpdHlNYWludGFpbmVy
IGludGVycG9sYXRpb25RdWFsaXR5Rm9yVGhpc1Njb3BlKCp0aGlzLCBvcHRpb25zLmludGVycG9s
YXRpb25RdWFsaXR5KCkpOwogICAgIGltYWdlLmRyYXcoKnRoaXMsIGRlc3RpbmF0aW9uLCBzb3Vy
Y2UsIG9wdGlvbnMpOwogfQpAQCAtODM2LDcgKzgzOSwxMCBAQCB2b2lkIEdyYXBoaWNzQ29udGV4
dDo6ZHJhd0NvbnN1bWluZ0ltYWdlQnVmZmVyKHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlcj4g
aW1hZwogewogICAgIGlmIChwYWludGluZ0Rpc2FibGVkKCkgfHwgIWltYWdlKQogICAgICAgICBy
ZXR1cm47Ci0gICAgCisKKyAgICBpZiAobV9pbXBsICYmIG1faW1wbC0+ZHJhd0ltYWdlQnVmZmVy
KCppbWFnZSwgZGVzdGluYXRpb24sIHNvdXJjZSwgb3B0aW9ucykpCisgICAgICAgIHJldHVybjsK
KwogICAgIEludGVycG9sYXRpb25RdWFsaXR5TWFpbnRhaW5lciBpbnRlcnBvbGF0aW9uUXVhbGl0
eUZvclRoaXNTY29wZSgqdGhpcywgb3B0aW9ucy5pbnRlcnBvbGF0aW9uUXVhbGl0eSgpKTsKICAg
ICBJbWFnZUJ1ZmZlcjo6ZHJhd0NvbnN1bWluZyhXVEZNb3ZlKGltYWdlKSwgKnRoaXMsIGRlc3Rp
bmF0aW9uLCBzb3VyY2UsIG9wdGlvbnMpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0SW1wbC5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0SW1wbC5oCmluZGV4IGMyY2FmZTMzNmNj
NTY5OTVkYzQwZGVkNDAxNjdlNjgzYjQyYTU3ZjcuLjM1MzZkMmYzYjczY2Q0ODhlOThlYzJlOWZk
ZTI0OGY4MjM4YzM5Y2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0dyYXBoaWNzQ29udGV4dEltcGwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9HcmFwaGljc0NvbnRleHRJbXBsLmgKQEAgLTczLDYgKzczLDcgQEAgcHVibGljOgog
ICAgIHZpcnR1YWwgSW1hZ2VEcmF3UmVzdWx0IGRyYXdUaWxlZEltYWdlKEltYWdlJiwgY29uc3Qg
RmxvYXRSZWN0JiBkZXN0aW5hdGlvbiwgY29uc3QgRmxvYXRQb2ludCYgc291cmNlLCBjb25zdCBG
bG9hdFNpemUmIHRpbGVTaXplLCBjb25zdCBGbG9hdFNpemUmIHNwYWNpbmcsIGNvbnN0IEltYWdl
UGFpbnRpbmdPcHRpb25zJikgPSAwOwogICAgIHZpcnR1YWwgSW1hZ2VEcmF3UmVzdWx0IGRyYXdU
aWxlZEltYWdlKEltYWdlJiwgY29uc3QgRmxvYXRSZWN0JiBkZXN0aW5hdGlvbiwgY29uc3QgRmxv
YXRSZWN0JiBzb3VyY2UsIGNvbnN0IEZsb2F0U2l6ZSYgdGlsZVNjYWxlRmFjdG9yLCBJbWFnZTo6
VGlsZVJ1bGUgaFJ1bGUsIEltYWdlOjpUaWxlUnVsZSB2UnVsZSwgY29uc3QgSW1hZ2VQYWludGlu
Z09wdGlvbnMmKSA9IDA7CiAKKyAgICB2aXJ0dWFsIGJvb2wgZHJhd0ltYWdlQnVmZmVyKEltYWdl
QnVmZmVyJiwgY29uc3QgRmxvYXRSZWN0JiBkZXN0aW5hdGlvbiwgY29uc3QgRmxvYXRSZWN0JiBz
b3VyY2UsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJikgPSAwOwogICAgIHZpcnR1YWwgdm9p
ZCBkcmF3TmF0aXZlSW1hZ2UoY29uc3QgTmF0aXZlSW1hZ2VQdHImLCBjb25zdCBGbG9hdFNpemUm
IHNlbGZTaXplLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNy
Y1JlY3QsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJikgPSAwOwogICAgIHZpcnR1YWwgdm9p
ZCBkcmF3UGF0dGVybihJbWFnZSYsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZs
b2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiwgY29uc3QgRmxvYXRQb2lu
dCYgcGhhc2UsIGNvbnN0IEZsb2F0U2l6ZSYgc3BhY2luZywgY29uc3QgSW1hZ2VQYWludGluZ09w
dGlvbnMmKSA9IDA7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dEltcGxDYWlyby5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRleHRJbXBsQ2Fpcm8uY3BwCmluZGV4
IGI2NWI0ZDY0NDA2YmViNzZjNDA5ZDNlOGM2NTQ5NzVjYTlmN2ViNjMuLjhlZjRmNzg2YjcyNDkx
NDI0NTZlZmYxZjBhZDgyMTZjYzkwNTUzNjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dEltcGxDYWlyby5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0SW1w
bENhaXJvLmNwcApAQCAtMjc5LDYgKzI3OSwxMiBAQCBJbWFnZURyYXdSZXN1bHQgR3JhcGhpY3ND
b250ZXh0SW1wbENhaXJvOjpkcmF3VGlsZWRJbWFnZShJbWFnZSYgaW1hZ2UsIGNvbnN0IEZsbwog
ICAgIHJldHVybiBHcmFwaGljc0NvbnRleHRJbXBsOjpkcmF3VGlsZWRJbWFnZUltcGwoZ3JhcGhp
Y3NDb250ZXh0KCksIGltYWdlLCBkZXN0aW5hdGlvbiwgc291cmNlLCB0aWxlU2NhbGVGYWN0b3Is
IGhSdWxlLCB2UnVsZSwgaW1hZ2VQYWludGluZ09wdGlvbnMpOwogfQogCitib29sIEdyYXBoaWNz
Q29udGV4dEltcGxDYWlybzo6ZHJhd0ltYWdlQnVmZmVyKEltYWdlQnVmZmVyJiwgY29uc3QgRmxv
YXRSZWN0JiwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmKQor
eworICAgIC8vIEZJWE1FOiBOb3QgaW1wbGVtZW50ZWQuCisgICAgcmV0dXJuIGZhbHNlOworfQor
CiB2b2lkIEdyYXBoaWNzQ29udGV4dEltcGxDYWlybzo6ZHJhd05hdGl2ZUltYWdlKGNvbnN0IE5h
dGl2ZUltYWdlUHRyJiBpbWFnZSwgY29uc3QgRmxvYXRTaXplJiBpbWFnZVNpemUsIGNvbnN0IEZs
b2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgSW1hZ2VQ
YWludGluZ09wdGlvbnMmIG9wdGlvbnMpCiB7CiAgICAgVU5VU0VEX1BBUkFNKGltYWdlU2l6ZSk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFw
aGljc0NvbnRleHRJbXBsQ2Fpcm8uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NhaXJvL0dyYXBoaWNzQ29udGV4dEltcGxDYWlyby5oCmluZGV4IGU1ZTIwNzQ4YzZkNzYyMGYx
MGNmMjE1NjYyOGVmN2UwYmU2MDFjN2IuLjFjODI3MTMwYzJhNWZlMjhmNzUzNWUxOTQ1YTMzZGM5
Njg2MjA1MTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nh
aXJvL0dyYXBoaWNzQ29udGV4dEltcGxDYWlyby5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dEltcGxDYWlyby5oCkBAIC03NCw2ICs3
NCw4IEBAIHB1YmxpYzoKICAgICBJbWFnZURyYXdSZXN1bHQgZHJhd0ltYWdlKEltYWdlJiwgY29u
c3QgRmxvYXRSZWN0JiwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlv
bnMmKSBvdmVycmlkZTsKICAgICBJbWFnZURyYXdSZXN1bHQgZHJhd1RpbGVkSW1hZ2UoSW1hZ2Um
LCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBGbG9hdFBvaW50JiwgY29uc3QgRmxvYXRTaXplJiwg
Y29uc3QgRmxvYXRTaXplJiwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmKSBvdmVycmlkZTsK
ICAgICBJbWFnZURyYXdSZXN1bHQgZHJhd1RpbGVkSW1hZ2UoSW1hZ2UmLCBjb25zdCBGbG9hdFJl
Y3QmLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBGbG9hdFNpemUmLCBJbWFnZTo6VGlsZVJ1bGUs
IEltYWdlOjpUaWxlUnVsZSwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmKSBvdmVycmlkZTsK
KyAgICAKKyAgICBib29sIGRyYXdJbWFnZUJ1ZmZlcihJbWFnZUJ1ZmZlciYsIGNvbnN0IEZsb2F0
UmVjdCYsIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJikgb3Zl
cnJpZGU7CiAgICAgdm9pZCBkcmF3TmF0aXZlSW1hZ2UoY29uc3QgTmF0aXZlSW1hZ2VQdHImLCBj
b25zdCBGbG9hdFNpemUmLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBGbG9hdFJlY3QmLCBjb25z
dCBJbWFnZVBhaW50aW5nT3B0aW9ucyYpIG92ZXJyaWRlOwogICAgIHZvaWQgZHJhd1BhdHRlcm4o
SW1hZ2UmLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBBZmZpbmVU
cmFuc2Zvcm0mLCBjb25zdCBGbG9hdFBvaW50JiwgY29uc3QgRmxvYXRTaXplJiwgY29uc3QgSW1h
Z2VQYWludGluZ09wdGlvbnMmKSBvdmVycmlkZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0LmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3QuaAppbmRl
eCA1MDZkYWJhYjBiOGI0YjczMTQ3NmJkZjlmMzA5NTY3MmI5MTJlZjE5Li4zMjJlY2MxYzFjNDE1
Y2VmMDU5ZmNjZmJhZjUwOGY5M2E1OTIxMmFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3QuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3QuaApAQCAt
NjQsNiArNjQsNyBAQCBlbnVtIGNsYXNzIEl0ZW1UeXBlIDogdWludDhfdCB7CiAgICAgRHJhd0lt
YWdlLAogICAgIERyYXdUaWxlZEltYWdlLAogICAgIERyYXdUaWxlZFNjYWxlZEltYWdlLAorICAg
IERyYXdJbWFnZUJ1ZmZlciwKICAgICBEcmF3TmF0aXZlSW1hZ2UsCiAgICAgRHJhd1BhdHRlcm4s
CiAgICAgRHJhd1JlY3QsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtcy5jcHAKaW5kZXgg
OGQ4YjI4MTkzODc1YzMxNjZmODFlZDA4ZTNkOTI5OTYxZjdiODcxNi4uMjQ4ZTBmOWY2OWEzMzBj
ZDlmZGM4NTJmMTA4ZDg4MDliZTY2YzIzNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbXMuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0
ZW1zLmNwcApAQCAtMTEwLDYgKzExMCw4IEBAIHNpemVfdCBJdGVtOjpzaXplSW5CeXRlcyhjb25z
dCBJdGVtJiBpdGVtKQogICAgICAgICByZXR1cm4gc2l6ZW9mKGRvd25jYXN0PERyYXdUaWxlZElt
YWdlPihpdGVtKSk7CiAgICAgY2FzZSBJdGVtVHlwZTo6RHJhd1RpbGVkU2NhbGVkSW1hZ2U6CiAg
ICAgICAgIHJldHVybiBzaXplb2YoZG93bmNhc3Q8RHJhd1RpbGVkU2NhbGVkSW1hZ2U+KGl0ZW0p
KTsKKyAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3SW1hZ2VCdWZmZXI6CisgICAgICAgIHJldHVybiBz
aXplb2YoZG93bmNhc3Q8RHJhd0ltYWdlQnVmZmVyPihpdGVtKSk7CiAgICAgY2FzZSBJdGVtVHlw
ZTo6RHJhd05hdGl2ZUltYWdlOgogICAgICAgICByZXR1cm4gc2l6ZW9mKGRvd25jYXN0PERyYXdO
YXRpdmVJbWFnZT4oaXRlbSkpOwogICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdQYXR0ZXJuOgpAQCAt
NzM4LDYgKzc0MCwzMiBAQCBzdGF0aWMgVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFt
JiB0cywgY29uc3QgRHJhd1RpbGVkU2NhbGVkSW1hZ2UmIGl0ZW0pCiAgICAgcmV0dXJuIHRzOwog
fQogCitEcmF3SW1hZ2VCdWZmZXI6OkRyYXdJbWFnZUJ1ZmZlcihSZW5kZXJpbmdSZXNvdXJjZUlk
ZW50aWZpZXIgcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyLCBjb25zdCBGbG9hdFJlY3QmIGRl
c3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRp
b25zJiBvcHRpb25zKQorICAgIDogRHJhd2luZ0l0ZW0oSXRlbVR5cGU6OkRyYXdJbWFnZUJ1ZmZl
cikKKyAgICAsIG1fcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKHJlbmRlcmluZ1Jlc291cmNl
SWRlbnRpZmllcikKKyAgICAsIG1fZGVzdGluYXRpb25SZWN0KGRlc3RSZWN0KQorICAgICwgbV9z
cmNSZWN0KHNyY1JlY3QpCisgICAgLCBtX29wdGlvbnMob3B0aW9ucykKK3sKK30KKworRHJhd0lt
YWdlQnVmZmVyOjp+RHJhd0ltYWdlQnVmZmVyKCkgPSBkZWZhdWx0OworCit2b2lkIERyYXdJbWFn
ZUJ1ZmZlcjo6YXBwbHkoR3JhcGhpY3NDb250ZXh0JikgY29uc3QKK3sKKyAgICAvLyBTaG91bGQg
YmUgaGFuZGxlZCBieSB0aGUgZGVsZWdhdGUuCisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Cit9
CisKK3N0YXRpYyBUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mIHRzLCBjb25zdCBE
cmF3SW1hZ2VCdWZmZXImIGl0ZW0pCit7CisgICAgdHMgPDwgc3RhdGljX2Nhc3Q8Y29uc3QgRHJh
d2luZ0l0ZW0mPihpdGVtKTsKKyAgICB0cy5kdW1wUHJvcGVydHkoInJlbW90ZS1yZXNvdXJjZS1p
ZGVudGlmaWVyIiwgaXRlbS5yZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIoKSk7CisgICAgdHMu
ZHVtcFByb3BlcnR5KCJzb3VyY2UtcmVjdCIsIGl0ZW0uc291cmNlKCkpOworICAgIHRzLmR1bXBQ
cm9wZXJ0eSgiZGVzdC1yZWN0IiwgaXRlbS5kZXN0aW5hdGlvblJlY3QoKSk7CisgICAgcmV0dXJu
IHRzOworfQorCiBEcmF3TmF0aXZlSW1hZ2U6OkRyYXdOYXRpdmVJbWFnZShjb25zdCBOYXRpdmVJ
bWFnZVB0ciYgaW1hZ2UsIGNvbnN0IEZsb2F0U2l6ZSYgaW1hZ2VTaXplLCBjb25zdCBGbG9hdFJl
Y3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEltYWdlUGFpbnRp
bmdPcHRpb25zJiBvcHRpb25zKQogICAgIDogRHJhd2luZ0l0ZW0oSXRlbVR5cGU6OkRyYXdOYXRp
dmVJbWFnZSkKICAgICAsIG1faW1hZ2UoaW1hZ2UpCkBAIC0xNDk2LDYgKzE1MjQsNyBAQCBzdGF0
aWMgVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiB0cywgY29uc3QgSXRlbVR5cGUm
IHR5cGUpCiAgICAgY2FzZSBJdGVtVHlwZTo6RHJhd0ltYWdlOiB0cyA8PCAiZHJhdy1pbWFnZSI7
IGJyZWFrOwogICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdUaWxlZEltYWdlOiB0cyA8PCAiZHJhdy10
aWxlZC1pbWFnZSI7IGJyZWFrOwogICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdUaWxlZFNjYWxlZElt
YWdlOiB0cyA8PCAiZHJhdy10aWxlZC1zY2FsZWQtaW1hZ2UiOyBicmVhazsKKyAgICBjYXNlIEl0
ZW1UeXBlOjpEcmF3SW1hZ2VCdWZmZXI6IHRzIDw8ICJkcmF3LWltYWdlLWJ1ZmZlciI7IGJyZWFr
OwogICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdOYXRpdmVJbWFnZTogdHMgPDwgImRyYXctbmF0aXZl
LWltYWdlIjsgYnJlYWs7CiAgICAgY2FzZSBJdGVtVHlwZTo6RHJhd1BhdHRlcm46IHRzIDw8ICJk
cmF3LXBhdHRlcm4iOyBicmVhazsKICAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3UmVjdDogdHMgPDwg
ImRyYXctcmVjdCI7IGJyZWFrOwpAQCAtMTYwMiw2ICsxNjMxLDkgQEAgVGV4dFN0cmVhbSYgb3Bl
cmF0b3I8PChUZXh0U3RyZWFtJiB0cywgY29uc3QgSXRlbSYgaXRlbSkKICAgICBjYXNlIEl0ZW1U
eXBlOjpEcmF3VGlsZWRTY2FsZWRJbWFnZToKICAgICAgICAgdHMgPDwgZG93bmNhc3Q8RHJhd1Rp
bGVkU2NhbGVkSW1hZ2U+KGl0ZW0pOwogICAgICAgICBicmVhazsKKyAgICBjYXNlIEl0ZW1UeXBl
OjpEcmF3SW1hZ2VCdWZmZXI6CisgICAgICAgIHRzIDw8IGRvd25jYXN0PERyYXdJbWFnZUJ1ZmZl
cj4oaXRlbSk7CisgICAgICAgIGJyZWFrOwogICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdOYXRpdmVJ
bWFnZToKICAgICAgICAgdHMgPDwgZG93bmNhc3Q8RHJhd05hdGl2ZUltYWdlPihpdGVtKTsKICAg
ICAgICAgYnJlYWs7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtcy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbXMuaAppbmRleCBkNGNhOThl
NjQ4NDUxYjI2Y2JmNjQ5ODM1YjFkYTJmM2MyM2I0YWZmLi45NDY3YmU5YTk2ZTI4ZTUxMDRmYjYx
M2U1ZDVkNjg2ZjQ3MDZmOTk4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtcy5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1zLmgKQEAg
LTM1LDYgKzM1LDcgQEAKICNpbmNsdWRlICJJbWFnZURhdGEuaCIKICNpbmNsdWRlICJNZWRpYVBs
YXllcklkZW50aWZpZXIuaCIKICNpbmNsdWRlICJQYXR0ZXJuLmgiCisjaW5jbHVkZSAiUmVuZGVy
aW5nUmVzb3VyY2VJZGVudGlmaWVyLmgiCiAjaW5jbHVkZSAiU2hhcmVkQnVmZmVyLmgiCiAjaW5j
bHVkZSA8d3RmL1R5cGVDYXN0cy5oPgogCkBAIC0xNTMzLDYgKzE1MzQsNzEgQEAgT3B0aW9uYWw8
UmVmPERyYXdUaWxlZFNjYWxlZEltYWdlPj4gRHJhd1RpbGVkU2NhbGVkSW1hZ2U6OmRlY29kZShE
ZWNvZGVyJiBkZWNvZGUKICAgICByZXR1cm4gRHJhd1RpbGVkU2NhbGVkSW1hZ2U6OmNyZWF0ZSgq
aW1hZ2VIYW5kbGUtPmltYWdlLCAqZGVzdGluYXRpb24sICpzb3VyY2UsICp0aWxlU2NhbGVGYWN0
b3IsIGhSdWxlLCB2UnVsZSwgKmltYWdlUGFpbnRpbmdPcHRpb25zKTsKIH0KIAorY2xhc3MgRHJh
d0ltYWdlQnVmZmVyIDogcHVibGljIERyYXdpbmdJdGVtIHsKK3B1YmxpYzoKKyAgICBzdGF0aWMg
UmVmPERyYXdJbWFnZUJ1ZmZlcj4gY3JlYXRlKFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciBy
ZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdGluYXRpb24s
IGNvbnN0IEZsb2F0UmVjdCYgc291cmNlLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgb3B0
aW9ucykKKyAgICB7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IERyYXdJbWFnZUJ1ZmZl
cihyZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIsIGRlc3RpbmF0aW9uLCBzb3VyY2UsIG9wdGlv
bnMpKTsKKyAgICB9CisKKyAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIH5EcmF3SW1hZ2VCdWZm
ZXIoKTsKKworICAgIFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciByZW5kZXJpbmdSZXNvdXJj
ZUlkZW50aWZpZXIoKSBjb25zdCB7IHJldHVybiBtX3JlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmll
cjsgfQorICAgIEZsb2F0UmVjdCBzb3VyY2UoKSBjb25zdCB7IHJldHVybiBtX3NyY1JlY3Q7IH0K
KyAgICBGbG9hdFJlY3QgZGVzdGluYXRpb25SZWN0KCkgY29uc3QgeyByZXR1cm4gbV9kZXN0aW5h
dGlvblJlY3Q7IH0KKyAgICBJbWFnZVBhaW50aW5nT3B0aW9ucyBvcHRpb25zKCkgY29uc3QgeyBy
ZXR1cm4gbV9vcHRpb25zOyB9CisKKyAgICB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPiB2b2lkIGVu
Y29kZShFbmNvZGVyJikgY29uc3Q7CisgICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGlj
IE9wdGlvbmFsPFJlZjxEcmF3SW1hZ2VCdWZmZXI+PiBkZWNvZGUoRGVjb2RlciYpOworCitwcml2
YXRlOgorICAgIFdFQkNPUkVfRVhQT1JUIERyYXdJbWFnZUJ1ZmZlcihSZW5kZXJpbmdSZXNvdXJj
ZUlkZW50aWZpZXIsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdGluYXRpb24sIGNvbnN0IEZsb2F0UmVj
dCYgc291cmNlLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYpOworCisgICAgdm9pZCBhcHBs
eShHcmFwaGljc0NvbnRleHQmKSBjb25zdCBvdmVycmlkZTsKKworICAgIE9wdGlvbmFsPEZsb2F0
UmVjdD4gbG9jYWxCb3VuZHMoY29uc3QgR3JhcGhpY3NDb250ZXh0JikgY29uc3Qgb3ZlcnJpZGUg
eyByZXR1cm4gbV9kZXN0aW5hdGlvblJlY3Q7IH0KKworICAgIFJlbmRlcmluZ1Jlc291cmNlSWRl
bnRpZmllciBtX3JlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcjsKKyAgICBGbG9hdFJlY3QgbV9k
ZXN0aW5hdGlvblJlY3Q7CisgICAgRmxvYXRSZWN0IG1fc3JjUmVjdDsKKyAgICBJbWFnZVBhaW50
aW5nT3B0aW9ucyBtX29wdGlvbnM7Cit9OworCit0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPgordm9p
ZCBEcmF3SW1hZ2VCdWZmZXI6OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAoreworICAg
IGVuY29kZXIgPDwgbV9yZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXI7CisgICAgZW5jb2RlciA8
PCBtX2Rlc3RpbmF0aW9uUmVjdDsKKyAgICBlbmNvZGVyIDw8IG1fc3JjUmVjdDsKKyAgICBlbmNv
ZGVyIDw8IG1fb3B0aW9uczsKK30KKwordGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4KK09wdGlvbmFs
PFJlZjxEcmF3SW1hZ2VCdWZmZXI+PiBEcmF3SW1hZ2VCdWZmZXI6OmRlY29kZShEZWNvZGVyJiBk
ZWNvZGVyKQoreworICAgIE9wdGlvbmFsPFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcj4gcmVu
ZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyOworICAgIGRlY29kZXIgPj4gcmVuZGVyaW5nUmVzb3Vy
Y2VJZGVudGlmaWVyOworICAgIGlmICghcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKQorICAg
ICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworCisgICAgT3B0aW9uYWw8RmxvYXRSZWN0PiBkZXN0
aW5hdGlvbjsKKyAgICBkZWNvZGVyID4+IGRlc3RpbmF0aW9uOworICAgIGlmICghZGVzdGluYXRp
b24pCisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisKKyAgICBPcHRpb25hbDxGbG9hdFJl
Y3Q+IHNvdXJjZTsKKyAgICBkZWNvZGVyID4+IHNvdXJjZTsKKyAgICBpZiAoIXNvdXJjZSkKKyAg
ICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKworICAgIE9wdGlvbmFsPEltYWdlUGFpbnRpbmdP
cHRpb25zPiBvcHRpb25zOworICAgIGRlY29kZXIgPj4gb3B0aW9uczsKKyAgICBpZiAoIW9wdGlv
bnMpCisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisKKyAgICByZXR1cm4gRHJhd0ltYWdl
QnVmZmVyOjpjcmVhdGUoKnJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciwgKmRlc3RpbmF0aW9u
LCAqc291cmNlLCAqb3B0aW9ucyk7Cit9CisKIGNsYXNzIERyYXdOYXRpdmVJbWFnZSA6IHB1Ymxp
YyBEcmF3aW5nSXRlbSB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFJlZjxEcmF3TmF0aXZlSW1hZ2U+
IGNyZWF0ZShjb25zdCBOYXRpdmVJbWFnZVB0ciYgaW1hZ2UsIGNvbnN0IEZsb2F0U2l6ZSYgaW1h
Z2VTaXplLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1Jl
Y3QsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBvcHRpb25zKQpAQCAtMzA2Niw2ICszMTMy
LDkgQEAgdm9pZCBJdGVtOjplbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QKICAgICBjYXNl
IEl0ZW1UeXBlOjpEcmF3VGlsZWRTY2FsZWRJbWFnZToKICAgICAgICAgZW5jb2RlciA8PCBkb3du
Y2FzdDxEcmF3VGlsZWRTY2FsZWRJbWFnZT4oKnRoaXMpOwogICAgICAgICBicmVhazsKKyAgICBj
YXNlIEl0ZW1UeXBlOjpEcmF3SW1hZ2VCdWZmZXI6CisgICAgICAgIGVuY29kZXIgPDwgZG93bmNh
c3Q8RHJhd0ltYWdlQnVmZmVyPigqdGhpcyk7CisgICAgICAgIGJyZWFrOwogICAgIGNhc2UgSXRl
bVR5cGU6OkRyYXdOYXRpdmVJbWFnZToKICAgICAgICAgZW5jb2RlciA8PCBkb3duY2FzdDxEcmF3
TmF0aXZlSW1hZ2U+KCp0aGlzKTsKICAgICAgICAgYnJlYWs7CkBAIC0zMjYzLDYgKzMzMzIsMTAg
QEAgT3B0aW9uYWw8UmVmPEl0ZW0+PiBJdGVtOjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKICAg
ICAgICAgaWYgKGF1dG8gaXRlbSA9IERyYXdUaWxlZFNjYWxlZEltYWdlOjpkZWNvZGUoZGVjb2Rl
cikpCiAgICAgICAgICAgICByZXR1cm4gc3RhdGljX3JlZmVyZW5jZV9jYXN0PEl0ZW0+KFdURk1v
dmUoKml0ZW0pKTsKICAgICAgICAgYnJlYWs7CisgICAgY2FzZSBJdGVtVHlwZTo6RHJhd0ltYWdl
QnVmZmVyOgorICAgICAgICBpZiAoYXV0byBpdGVtID0gRHJhd0ltYWdlQnVmZmVyOjpkZWNvZGUo
ZGVjb2RlcikpCisgICAgICAgICAgICByZXR1cm4gc3RhdGljX3JlZmVyZW5jZV9jYXN0PEl0ZW0+
KFdURk1vdmUoKml0ZW0pKTsKKyAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBJdGVtVHlwZTo6RHJh
d05hdGl2ZUltYWdlOgogICAgICAgICBpZiAoYXV0byBpdGVtID0gRHJhd05hdGl2ZUltYWdlOjpk
ZWNvZGUoZGVjb2RlcikpCiAgICAgICAgICAgICByZXR1cm4gc3RhdGljX3JlZmVyZW5jZV9jYXN0
PEl0ZW0+KFdURk1vdmUoKml0ZW0pKTsKQEAgLTM0MjUsNiArMzQ5OCw3IEBAIFNQRUNJQUxJWkVf
VFlQRV9UUkFJVFNfRElTUExBWUxJU1RfSVRFTShEcmF3R2x5cGhzKQogU1BFQ0lBTElaRV9UWVBF
X1RSQUlUU19ESVNQTEFZTElTVF9JVEVNKERyYXdJbWFnZSkKIFNQRUNJQUxJWkVfVFlQRV9UUkFJ
VFNfRElTUExBWUxJU1RfSVRFTShEcmF3VGlsZWRJbWFnZSkKIFNQRUNJQUxJWkVfVFlQRV9UUkFJ
VFNfRElTUExBWUxJU1RfSVRFTShEcmF3VGlsZWRTY2FsZWRJbWFnZSkKK1NQRUNJQUxJWkVfVFlQ
RV9UUkFJVFNfRElTUExBWUxJU1RfSVRFTShEcmF3SW1hZ2VCdWZmZXIpCiBTUEVDSUFMSVpFX1RZ
UEVfVFJBSVRTX0RJU1BMQVlMSVNUX0lURU0oRHJhd05hdGl2ZUltYWdlKQogU1BFQ0lBTElaRV9U
WVBFX1RSQUlUU19ESVNQTEFZTElTVF9JVEVNKERyYXdQYXR0ZXJuKQogU1BFQ0lBTElaRV9UWVBF
X1RSQUlUU19ESVNQTEFZTElTVF9JVEVNKERyYXdSZWN0KQpAQCAtMzQ4Nyw2ICszNTYxLDcgQEAg
dGVtcGxhdGU8PiBzdHJ1Y3QgRW51bVRyYWl0czxXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbVR5
cGU+IHsKICAgICBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OkRyYXdJbWFnZSwKICAg
ICBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OkRyYXdUaWxlZEltYWdlLAogICAgIFdl
YkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtVHlwZTo6RHJhd1RpbGVkU2NhbGVkSW1hZ2UsCisgICAg
V2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpEcmF3SW1hZ2VCdWZmZXIsCiAgICAgV2Vi
Q29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpEcmF3TmF0aXZlSW1hZ2UsCiAgICAgV2ViQ29y
ZTo6RGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpEcmF3UGF0dGVybiwKICAgICBXZWJDb3JlOjpEaXNw
bGF5TGlzdDo6SXRlbVR5cGU6OkRyYXdSZWN0LApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0
UmVjb3JkZXIuY3BwCmluZGV4IDFlMWU5MWFhMDg0Yjk2ZTZlYjI2NWMxZjgwZmYyZjhlNTFmZjFm
ZTcuLjZlMGI1MTZkNDRlODRjNDgzYzE5MTRhZTc3YjM1NjRlMmQyNjg1NmYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlz
dFJlY29yZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNw
bGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlci5jcHAKQEAgLTMwLDYgKzMwLDcgQEAKICNpbmNs
dWRlICJEaXNwbGF5TGlzdERyYXdpbmdDb250ZXh0LmgiCiAjaW5jbHVkZSAiRGlzcGxheUxpc3RJ
dGVtcy5oIgogI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dC5oIgorI2luY2x1ZGUgIkltYWdlQnVm
ZmVyLmgiCiAjaW5jbHVkZSAiTG9nZ2luZy5oIgogI2luY2x1ZGUgPHd0Zi9NYXRoRXh0cmFzLmg+
CiAjaW5jbHVkZSA8d3RmL3RleHQvVGV4dFN0cmVhbS5oPgpAQCAtMTY2LDYgKzE2NywxNSBAQCBJ
bWFnZURyYXdSZXN1bHQgUmVjb3JkZXI6OmRyYXdUaWxlZEltYWdlKEltYWdlJiBpbWFnZSwgY29u
c3QgRmxvYXRSZWN0JiBkZXN0aW5hdAogICAgIHJldHVybiBJbWFnZURyYXdSZXN1bHQ6OkRpZFJl
Y29yZDsKIH0KIAorYm9vbCBSZWNvcmRlcjo6ZHJhd0ltYWdlQnVmZmVyKFdlYkNvcmU6OkltYWdl
QnVmZmVyJiBpbWFnZUJ1ZmZlciwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxv
YXRSZWN0JiBzcmNSZWN0LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgb3B0aW9ucykKK3sK
KyAgICBpZiAoIW1fZGVsZWdhdGUgfHwgIW1fZGVsZWdhdGUtPmxvY2tSZW1vdGVJbWFnZUJ1ZmZl
cihpbWFnZUJ1ZmZlcikpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGFwcGVuZEl0ZW1B
bmRVcGRhdGVFeHRlbnQoRHJhd0ltYWdlQnVmZmVyOjpjcmVhdGUoaW1hZ2VCdWZmZXIucmVuZGVy
aW5nUmVzb3VyY2VJZGVudGlmaWVyKCksIGRlc3RSZWN0LCBzcmNSZWN0LCBvcHRpb25zKSk7Cisg
ICAgcmV0dXJuIHRydWU7Cit9CisKIHZvaWQgUmVjb3JkZXI6OmRyYXdOYXRpdmVJbWFnZShjb25z
dCBOYXRpdmVJbWFnZVB0ciYgaW1hZ2UsIGNvbnN0IEZsb2F0U2l6ZSYgaW1hZ2VTaXplLCBjb25z
dCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IElt
YWdlUGFpbnRpbmdPcHRpb25zJiBvcHRpb25zKQogewogICAgIGFwcGVuZEl0ZW1BbmRVcGRhdGVF
eHRlbnQoRHJhd05hdGl2ZUltYWdlOjpjcmVhdGUoaW1hZ2UsIGltYWdlU2l6ZSwgZGVzdFJlY3Qs
IHNyY1JlY3QsIG9wdGlvbnMpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVyLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlci5o
CmluZGV4IDZhMjc3MTg5N2VkMjNlNjkwNTZmYWVhOGY1ZTUzMzk4YTVmOGM4YzkuLmZjMTBmN2Nh
ODFiNzdjY2FmZjkxNTFiZDE2ZGE3NDM2ZjNjODQyZjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVyLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3Bs
YXlMaXN0UmVjb3JkZXIuaApAQCAtNjYsNiArNjYsNyBAQCBwdWJsaWM6CiAgICAgY2xhc3MgRGVs
ZWdhdGUgewogICAgIHB1YmxpYzoKICAgICAgICAgdmlydHVhbCB+RGVsZWdhdGUoKSB7IH0KKyAg
ICAgICAgdmlydHVhbCBib29sIGxvY2tSZW1vdGVJbWFnZUJ1ZmZlcihXZWJDb3JlOjpJbWFnZUJ1
ZmZlciYpIHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgICAgIHZpcnR1YWwgdm9pZCB3aWxsQXBwZW5k
SXRlbShjb25zdCBJdGVtJikgeyB9OwogICAgIH07CiAKQEAgLTEwNSw2ICsxMDYsNyBAQCBwcml2
YXRlOgogICAgIEltYWdlRHJhd1Jlc3VsdCBkcmF3VGlsZWRJbWFnZShJbWFnZSYsIGNvbnN0IEZs
b2F0UmVjdCYgZGVzdGluYXRpb24sIGNvbnN0IEZsb2F0UG9pbnQmIHNvdXJjZSwgY29uc3QgRmxv
YXRTaXplJiB0aWxlU2l6ZSwgY29uc3QgRmxvYXRTaXplJiBzcGFjaW5nLCBjb25zdCBJbWFnZVBh
aW50aW5nT3B0aW9ucyYpIG92ZXJyaWRlOwogICAgIEltYWdlRHJhd1Jlc3VsdCBkcmF3VGlsZWRJ
bWFnZShJbWFnZSYsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdGluYXRpb24sIGNvbnN0IEZsb2F0UmVj
dCYgc291cmNlLCBjb25zdCBGbG9hdFNpemUmIHRpbGVTY2FsZUZhY3RvciwgSW1hZ2U6OlRpbGVS
dWxlIGhSdWxlLCBJbWFnZTo6VGlsZVJ1bGUgdlJ1bGUsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRp
b25zJikgb3ZlcnJpZGU7CiAKKyAgICBib29sIGRyYXdJbWFnZUJ1ZmZlcihXZWJDb3JlOjpJbWFn
ZUJ1ZmZlciYsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdGluYXRpb24sIGNvbnN0IEZsb2F0UmVjdCYg
c291cmNlLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYpIG92ZXJyaWRlOwogICAgIHZvaWQg
ZHJhd05hdGl2ZUltYWdlKGNvbnN0IE5hdGl2ZUltYWdlUHRyJiwgY29uc3QgRmxvYXRTaXplJiBz
ZWxmU2l6ZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNS
ZWN0LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYpIG92ZXJyaWRlOwogICAgIHZvaWQgZHJh
d1BhdHRlcm4oSW1hZ2UmLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJl
Y3QmIHNyY1JlY3QsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYsIGNvbnN0IEZsb2F0UG9pbnQmIHBo
YXNlLCBjb25zdCBGbG9hdFNpemUmIHNwYWNpbmcsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25z
Jikgb3ZlcnJpZGU7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL25pY29zaWEvY2Fpcm8vTmljb3NpYUNhaXJvT3BlcmF0aW9uUmVjb3JkZXIuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS9jYWlyby9OaWNvc2lhQ2Fpcm9P
cGVyYXRpb25SZWNvcmRlci5jcHAKaW5kZXggMzA0ZmFjYmFiMTUyMTc5MWRhYTg2ZGIxNTMxNzUz
ZTM4NjcxMDg0ZC4uYTJjOWUwOTNmYzE0YmE1YzFlODI5YzRiMjRlMTY1NDAwMzdhNDQ1NSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS9jYWlyby9O
aWNvc2lhQ2Fpcm9PcGVyYXRpb25SZWNvcmRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS9jYWlyby9OaWNvc2lhQ2Fpcm9PcGVyYXRpb25SZWNvcmRl
ci5jcHAKQEAgLTU0OSw2ICs1NDksMTIgQEAgSW1hZ2VEcmF3UmVzdWx0IENhaXJvT3BlcmF0aW9u
UmVjb3JkZXI6OmRyYXdUaWxlZEltYWdlKEltYWdlJiBpbWFnZSwgY29uc3QgRmxvYXQKICAgICBy
ZXR1cm4gR3JhcGhpY3NDb250ZXh0SW1wbDo6ZHJhd1RpbGVkSW1hZ2VJbXBsKGdyYXBoaWNzQ29u
dGV4dCgpLCBpbWFnZSwgZGVzdGluYXRpb24sIHNvdXJjZSwgdGlsZVNjYWxlRmFjdG9yLCBoUnVs
ZSwgdlJ1bGUsIGltYWdlUGFpbnRpbmdPcHRpb25zKTsKIH0KIAorYm9vbCBDYWlyb09wZXJhdGlv
blJlY29yZGVyOjpkcmF3SW1hZ2VCdWZmZXIoSW1hZ2VCdWZmZXImLCBjb25zdCBGbG9hdFJlY3Qm
LCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYpCit7CisgICAg
Ly8gRklYTUU6IE5vdCBpbXBsZW1lbnRlZC4KKyAgICByZXR1cm4gZmFsc2U7Cit9CisKIHZvaWQg
Q2Fpcm9PcGVyYXRpb25SZWNvcmRlcjo6ZHJhd05hdGl2ZUltYWdlKGNvbnN0IE5hdGl2ZUltYWdl
UHRyJiBpbWFnZSwgY29uc3QgRmxvYXRTaXplJiBpbWFnZVNpemUsIGNvbnN0IEZsb2F0UmVjdCYg
ZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgSW1hZ2VQYWludGluZ09w
dGlvbnMmIG9wdGlvbnMpCiB7CiAgICAgc3RydWN0IERyYXdOYXRpdmVJbWFnZSBmaW5hbCA6IFBh
aW50aW5nT3BlcmF0aW9uLCBPcGVyYXRpb25EYXRhPFJlZlB0cjxjYWlyb19zdXJmYWNlX3Q+LCBG
bG9hdFJlY3QsIEZsb2F0UmVjdCwgSW1hZ2VQYWludGluZ09wdGlvbnMsIGZsb2F0LCBDYWlybzo6
U2hhZG93U3RhdGU+IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL25pY29zaWEvY2Fpcm8vTmljb3NpYUNhaXJvT3BlcmF0aW9uUmVjb3JkZXIuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvY2Fpcm8vTmljb3NpYUNhaXJvT3Bl
cmF0aW9uUmVjb3JkZXIuaAppbmRleCA1NzJmZjIxNjZmNmU5NzNhNzYzYjY3Y2I2YmI5NmY0M2Yy
NmE4ZDUwLi4zODA5M2Q0MTM1YjRkN2I2NTExYTE2MDg3YWZmMTNmNjAzZWQxM2JhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lhL2NhaXJvL05pY29z
aWFDYWlyb09wZXJhdGlvblJlY29yZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3Mvbmljb3NpYS9jYWlyby9OaWNvc2lhQ2Fpcm9PcGVyYXRpb25SZWNvcmRlci5oCkBA
IC02Nyw2ICs2Nyw4IEBAIHByaXZhdGU6CiAgICAgV2ViQ29yZTo6SW1hZ2VEcmF3UmVzdWx0IGRy
YXdJbWFnZShXZWJDb3JlOjpJbWFnZSYsIGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYsIGNvbnN0
IFdlYkNvcmU6OkZsb2F0UmVjdCYsIGNvbnN0IFdlYkNvcmU6OkltYWdlUGFpbnRpbmdPcHRpb25z
Jikgb3ZlcnJpZGU7CiAgICAgV2ViQ29yZTo6SW1hZ2VEcmF3UmVzdWx0IGRyYXdUaWxlZEltYWdl
KFdlYkNvcmU6OkltYWdlJiwgY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0JiwgY29uc3QgV2ViQ29y
ZTo6RmxvYXRQb2ludCYsIGNvbnN0IFdlYkNvcmU6OkZsb2F0U2l6ZSYsIGNvbnN0IFdlYkNvcmU6
OkZsb2F0U2l6ZSYsIGNvbnN0IFdlYkNvcmU6OkltYWdlUGFpbnRpbmdPcHRpb25zJikgb3ZlcnJp
ZGU7CiAgICAgV2ViQ29yZTo6SW1hZ2VEcmF3UmVzdWx0IGRyYXdUaWxlZEltYWdlKFdlYkNvcmU6
OkltYWdlJiwgY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0JiwgY29uc3QgV2ViQ29yZTo6RmxvYXRS
ZWN0JiwgY29uc3QgV2ViQ29yZTo6RmxvYXRTaXplJiwgV2ViQ29yZTo6SW1hZ2U6OlRpbGVSdWxl
LCBXZWJDb3JlOjpJbWFnZTo6VGlsZVJ1bGUsIGNvbnN0IFdlYkNvcmU6OkltYWdlUGFpbnRpbmdP
cHRpb25zJikgb3ZlcnJpZGU7CisKKyAgICBib29sIGRyYXdJbWFnZUJ1ZmZlcihXZWJDb3JlOjpJ
bWFnZUJ1ZmZlciYsIGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYgZGVzdGluYXRpb24sIGNvbnN0
IFdlYkNvcmU6OkZsb2F0UmVjdCYgc291cmNlLCBjb25zdCBXZWJDb3JlOjpJbWFnZVBhaW50aW5n
T3B0aW9ucyYpIG92ZXJyaWRlOwogICAgIHZvaWQgZHJhd05hdGl2ZUltYWdlKGNvbnN0IFdlYkNv
cmU6Ok5hdGl2ZUltYWdlUHRyJiwgY29uc3QgV2ViQ29yZTo6RmxvYXRTaXplJiwgY29uc3QgV2Vi
Q29yZTo6RmxvYXRSZWN0JiwgY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0JiwgY29uc3QgV2ViQ29y
ZTo6SW1hZ2VQYWludGluZ09wdGlvbnMmKSBvdmVycmlkZTsKICAgICB2b2lkIGRyYXdQYXR0ZXJu
KFdlYkNvcmU6OkltYWdlJiwgY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0JiwgY29uc3QgV2ViQ29y
ZTo6RmxvYXRSZWN0JiwgY29uc3QgV2ViQ29yZTo6QWZmaW5lVHJhbnNmb3JtJiwgY29uc3QgV2Vi
Q29yZTo6RmxvYXRQb2ludCYsIGNvbnN0IFdlYkNvcmU6OkZsb2F0U2l6ZSYsIGNvbnN0IFdlYkNv
cmU6OkltYWdlUGFpbnRpbmdPcHRpb25zJikgb3ZlcnJpZGU7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVJbWFnZUJ1ZmZlci5oIGIvU291cmNl
L1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUltYWdlQnVmZmVyLmgKaW5kZXggNTE4
ODg0YzhkMzg4NmQwZDQwZTA4ZDJmYzUxMmRlYzQzMTUzOGJhYS4uY2VkMWNhOTBmY2I4ZTJhODdm
ZTQzNGJiYjk3N2FlYTUwNmU5YzY1YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9j
ZXNzL2dyYXBoaWNzL1JlbW90ZUltYWdlQnVmZmVyLmgKKysrIGIvU291cmNlL1dlYktpdC9HUFVQ
cm9jZXNzL2dyYXBoaWNzL1JlbW90ZUltYWdlQnVmZmVyLmgKQEAgLTc4LDMxICs3OCwxMiBAQCBw
cml2YXRlOgogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgIH0KIAotICAgICAgICBp
ZiAoaXRlbS50eXBlKCkgPT0gV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpQYWludEZy
YW1lRm9yTWVkaWEpIHsKLSAgICAgICAgICAgIGFwcGx5KHN0YXRpY19jYXN0PFdlYkNvcmU6OkRp
c3BsYXlMaXN0OjpQYWludEZyYW1lRm9yTWVkaWEmPihpdGVtKSwgY29udGV4dCk7CisgICAgICAg
IGlmIChtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmQuYXBwbHlSZXNvdXJjZUl0ZW0oaXRlbSwgY29u
dGV4dCkpCiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgfQogCi0gICAgICAgIHJl
dHVybiBmYWxzZTsKKyAgICAgICAgcmV0dXJuIG1fcmVtb3RlUmVuZGVyaW5nQmFja2VuZC5hcHBs
eU1lZGlhSXRlbShpdGVtLCBjb250ZXh0KTsKICAgICB9CiAKLSAgICB2b2lkIGFwcGx5KFdlYkNv
cmU6OkRpc3BsYXlMaXN0OjpQYWludEZyYW1lRm9yTWVkaWEmIGl0ZW0sIFdlYkNvcmU6OkdyYXBo
aWNzQ29udGV4dCYgY29udGV4dCkKLSAgICB7Ci0gICAgICAgIGF1dG8gcHJvY2VzcyA9IG1fcmVt
b3RlUmVuZGVyaW5nQmFja2VuZC5ncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzKCk7Ci0gICAgICAg
IGlmICghcHJvY2VzcykKLSAgICAgICAgICAgIHJldHVybjsKLQotICAgICAgICBhdXRvIHBsYXll
clByb3h5ID0gcHJvY2Vzcy0+cmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHkoKS5nZXRQcm94
eShpdGVtLmlkZW50aWZpZXIoKSk7Ci0gICAgICAgIGlmICghcGxheWVyUHJveHkpCi0gICAgICAg
ICAgICByZXR1cm47Ci0KLSAgICAgICAgYXV0byBwbGF5ZXIgPSBwbGF5ZXJQcm94eS0+bWVkaWFQ
bGF5ZXIoKTsKLSAgICAgICAgaWYgKCFwbGF5ZXIpCi0gICAgICAgICAgICByZXR1cm47Ci0KLSAg
ICAgICAgY29udGV4dC5wYWludEZyYW1lRm9yTWVkaWEoKnBsYXllciwgaXRlbS5kZXN0aW5hdGlv
bigpKTsKLSAgICB9Ci0gICAgCiAgICAgUmVtb3RlUmVuZGVyaW5nQmFja2VuZCYgbV9yZW1vdGVS
ZW5kZXJpbmdCYWNrZW5kOwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9j
ZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQuY3BwIGIvU291cmNlL1dlYktpdC9H
UFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQuY3BwCmluZGV4IDg0YjVm
ZDY2MTZiMWVmYTkzMTAzNzQ5MTE3YzA4OTg0NjcyYWZlM2QuLjE1MzJkZTQ1NDk0NDI1MWRmY2U5
NDY2MGRkNTg1NWZmMzYyNjRkZDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vz
cy9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5jcHAKQEAgLTcyLDYg
KzcyLDQ0IEBAIHVpbnQ2NF90IFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6Om1lc3NhZ2VTZW5kZXJE
ZXN0aW5hdGlvbklEKCkgY29uc3QKICAgICByZXR1cm4gbV9yZW5kZXJpbmdCYWNrZW5kSWRlbnRp
Zmllci50b1VJbnQ2NCgpOwogfQogCitib29sIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OmFwcGx5
UmVzb3VyY2VJdGVtKGNvbnN0IERpc3BsYXlMaXN0OjpJdGVtJiBpdGVtLCBHcmFwaGljc0NvbnRl
eHQmIGNvbnRleHQpCit7CisgICAgaWYgKGl0ZW0udHlwZSgpID09IERpc3BsYXlMaXN0OjpJdGVt
VHlwZTo6RHJhd0ltYWdlQnVmZmVyKSB7CisgICAgICAgIGF1dG8mIGRyYXdJdGVtID0gc3RhdGlj
X2Nhc3Q8Y29uc3QgRGlzcGxheUxpc3Q6OkRyYXdJbWFnZUJ1ZmZlciY+KGl0ZW0pOworICAgICAg
ICBhdXRvIGltYWdlQnVmZmVyID0gbV9yZW1vdGVSZXNvdXJjZUNhY2hlLmNhY2hlZEltYWdlQnVm
ZmVyKGRyYXdJdGVtLnJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcigpKTsKKyAgICAgICAgaWYg
KCFpbWFnZUJ1ZmZlcikKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgICAgICBpbWFn
ZUJ1ZmZlci0+ZHJhdyhjb250ZXh0LCBkcmF3SXRlbS5kZXN0aW5hdGlvblJlY3QoKSwgZHJhd0l0
ZW0uc291cmNlKCksIGRyYXdJdGVtLm9wdGlvbnMoKSk7CisgICAgICAgIHJldHVybiB0cnVlOwor
ICAgIH0KKworICAgIHJldHVybiBmYWxzZTsKK30KKworYm9vbCBSZW1vdGVSZW5kZXJpbmdCYWNr
ZW5kOjphcHBseU1lZGlhSXRlbShjb25zdCBEaXNwbGF5TGlzdDo6SXRlbSYgaXRlbSwgR3JhcGhp
Y3NDb250ZXh0JiBjb250ZXh0KQoreworICAgIGlmIChpdGVtLnR5cGUoKSAhPSBXZWJDb3JlOjpE
aXNwbGF5TGlzdDo6SXRlbVR5cGU6OlBhaW50RnJhbWVGb3JNZWRpYSkKKyAgICAgICAgcmV0dXJu
IGZhbHNlOworCisgICAgYXV0byYgbWVkaWFJdGVtID0gc3RhdGljX2Nhc3Q8Y29uc3QgRGlzcGxh
eUxpc3Q6OlBhaW50RnJhbWVGb3JNZWRpYSY+KGl0ZW0pOworCisgICAgYXV0byBwcm9jZXNzID0g
Z3B1Q29ubmVjdGlvblRvV2ViUHJvY2VzcygpOworICAgIGlmICghcHJvY2VzcykKKyAgICAgICAg
cmV0dXJuIGZhbHNlOworCisgICAgYXV0byBwbGF5ZXJQcm94eSA9IHByb2Nlc3MtPnJlbW90ZU1l
ZGlhUGxheWVyTWFuYWdlclByb3h5KCkuZ2V0UHJveHkobWVkaWFJdGVtLmlkZW50aWZpZXIoKSk7
CisgICAgaWYgKCFwbGF5ZXJQcm94eSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgYXV0
byBwbGF5ZXIgPSBwbGF5ZXJQcm94eS0+bWVkaWFQbGF5ZXIoKTsKKyAgICBpZiAoIXBsYXllcikK
KyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgY29udGV4dC5wYWludEZyYW1lRm9yTWVkaWEo
KnBsYXllciwgbWVkaWFJdGVtLmRlc3RpbmF0aW9uKCkpOworICAgIHJldHVybiB0cnVlOworfQor
CiB2b2lkIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OmltYWdlQnVmZmVyQmFja2VuZFdhc0NyZWF0
ZWQoY29uc3QgRmxvYXRTaXplJiBsb2dpY2FsU2l6ZSwgY29uc3QgSW50U2l6ZSYgYmFja2VuZFNp
emUsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwgQ29sb3JTcGFjZSBjb2xvclNwYWNlLCBJbWFnZUJ1
ZmZlckJhY2tlbmRIYW5kbGUgaGFuZGxlLCBSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgcmVu
ZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKQogewogICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZVJl
bmRlcmluZ0JhY2tlbmRQcm94eTo6SW1hZ2VCdWZmZXJCYWNrZW5kV2FzQ3JlYXRlZChsb2dpY2Fs
U2l6ZSwgYmFja2VuZFNpemUsIHJlc29sdXRpb25TY2FsZSwgY29sb3JTcGFjZSwgV1RGTW92ZSho
YW5kbGUpLCByZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpLCBtX3JlbmRlcmluZ0JhY2tlbmRJ
ZGVudGlmaWVyKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGlj
cy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kLmggYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3Jh
cGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5oCmluZGV4IDUyN2RhYWI2ZjYwZTBlMjBmYTBj
ZDRkMzBhYjgwNDI5Nzg5NDIzOTguLmQwYWFlM2NjMjA0NTA2OTZhODlmOTVhNWYwNjdkZmVmYzZl
M2VlZmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1v
dGVSZW5kZXJpbmdCYWNrZW5kLmgKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBo
aWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQuaApAQCAtNDIsNiArNDIsNyBAQAogbmFtZXNwYWNl
IFdlYkNvcmUgewogbmFtZXNwYWNlIERpc3BsYXlMaXN0IHsKIGNsYXNzIERpc3BsYXlMaXN0Owor
Y2xhc3MgSXRlbTsKIH0KIGNsYXNzIEZsb2F0U2l6ZTsKIGVudW0gY2xhc3MgQ29sb3JTcGFjZSA6
IHVpbnQ4X3Q7CkBAIC02MSw2ICs2MiwxMCBAQCBwdWJsaWM6CiAKICAgICBHUFVDb25uZWN0aW9u
VG9XZWJQcm9jZXNzKiBncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzKCkgY29uc3Q7CiAKKyAgICAv
LyBSZW5kZXJpbmcgb3BlcmF0aW9ucy4KKyAgICBib29sIGFwcGx5UmVzb3VyY2VJdGVtKGNvbnN0
IFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtJiwgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0Jik7
CisgICAgYm9vbCBhcHBseU1lZGlhSXRlbShjb25zdCBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRl
bSYsIFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dCYpOworCiAgICAgLy8gTWVzc2FnZXMgdG8gYmUg
c2VudC4KICAgICB2b2lkIGltYWdlQnVmZmVyQmFja2VuZFdhc0NyZWF0ZWQoY29uc3QgV2ViQ29y
ZTo6RmxvYXRTaXplJiBsb2dpY2FsU2l6ZSwgY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYgYmFja2Vu
ZFNpemUsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwgV2ViQ29yZTo6Q29sb3JTcGFjZSwgSW1hZ2VC
dWZmZXJCYWNrZW5kSGFuZGxlLCBXZWJDb3JlOjpSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIp
OwogICAgIHZvaWQgZmx1c2hEaXNwbGF5TGlzdFdhc0NvbW1pdHRlZChEaXNwbGF5TGlzdEZsdXNo
SWRlbnRpZmllciwgV2ViQ29yZTo6UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZXNvdXJjZUNh
Y2hlLmNwcCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZXNvdXJj
ZUNhY2hlLmNwcAppbmRleCA1MTRhMTRlNzViNmZhMWVkMjUwZDhlZGJkOTBkM2YxNTVlMmI5MTU0
Li4yMjgyMDY4NjY0ZjcyMDA2YTVlZjY0NDdiMTExNzM0ZGUzM2YxNTZlIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVzb3VyY2VDYWNoZS5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlc291cmNlQ2Fj
aGUuY3BwCkBAIC0zNyw3ICszNyw3IEBAIHZvaWQgUmVtb3RlUmVzb3VyY2VDYWNoZTo6Y2FjaGVJ
bWFnZUJ1ZmZlcihSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgcmVuZGVyaW5nCiAgICAgQVNT
RVJUX1VOVVNFRChhZGRSZXN1bHQsIGFkZFJlc3VsdC5pc05ld0VudHJ5KTsKIH0KIAotV2ViQ29y
ZTo6SW1hZ2VCdWZmZXIqIFJlbW90ZVJlc291cmNlQ2FjaGU6OmNhY2hlZEltYWdlQnVmZmVyKFJl
bmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciByZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpCitJ
bWFnZUJ1ZmZlciogUmVtb3RlUmVzb3VyY2VDYWNoZTo6Y2FjaGVkSW1hZ2VCdWZmZXIoUmVuZGVy
aW5nUmVzb3VyY2VJZGVudGlmaWVyIHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcikKIHsKICAg
ICByZXR1cm4gbV9pbWFnZUJ1ZmZlcnMuZ2V0KHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcik7
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1Jl
bW90ZUltYWdlQnVmZmVyUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3Jh
cGhpY3MvUmVtb3RlSW1hZ2VCdWZmZXJQcm94eS5oCmluZGV4IDE0OTc0NzQyZWQ3N2U2MGEzNThj
NTZlYTczNWRkODRjOTk0NzQwZTkuLjgxZWYyYzUzZDA0MTExOWE2ZDE4OWM2ZTI4ZmM5NGIyOWQ0
YjdlY2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3Mv
UmVtb3RlSW1hZ2VCdWZmZXJQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9H
UFUvZ3JhcGhpY3MvUmVtb3RlSW1hZ2VCdWZmZXJQcm94eS5oCkBAIC0xNTcsNiArMTU3LDEzIEBA
IHByb3RlY3RlZDoKICAgICAgICAgbV9yZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHktPmZsdXNo
RGlzcGxheUxpc3QoZGlzcGxheUxpc3QsIG1fcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKTsK
ICAgICB9CiAKKyAgICBib29sIGxvY2tSZW1vdGVJbWFnZUJ1ZmZlcihXZWJDb3JlOjpJbWFnZUJ1
ZmZlciYgaW1hZ2VCdWZmZXIpIG92ZXJyaWRlCisgICAgeworICAgICAgICBpZiAoIW1fcmVtb3Rl
UmVuZGVyaW5nQmFja2VuZFByb3h5KQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAg
ICByZXR1cm4gbV9yZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHktPnJlbW90ZVJlc291cmNlQ2Fj
aGVQcm94eSgpLmxvY2tSZW1vdGVJbWFnZUJ1ZmZlckZvclJlbW90ZUNsaWVudChpbWFnZUJ1ZmZl
ciwgbV9yZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpOworICAgIH0KKwogICAgIHZvaWQgd2ls
bEFwcGVuZEl0ZW0oY29uc3QgV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW0mKSBvdmVycmlkZQog
ICAgIHsKICAgICAgICAgY29uc3RleHByIHNpemVfdCBEaXNwbGF5TGlzdEJhdGNoU2l6ZSA9IDUx
MjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVt
b3RlUmVzb3VyY2VDYWNoZVByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUv
Z3JhcGhpY3MvUmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5LmNwcAppbmRleCAxZWQ3ZTZiZGQxYmZj
NDNjYjY4N2EzMzc1OGEwZjE1MWYyZmZhNTBlLi4zZjVhNzNiZWMzYmYyODZlNTI5ODFkZTQ4Yjkw
YzMxZDAxOWQ4YzNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dy
YXBoaWNzL1JlbW90ZVJlc291cmNlQ2FjaGVQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVSZXNvdXJjZUNhY2hlUHJveHkuY3BwCkBAIC01
Myw3ICs1Myw3NSBAQCB2b2lkIFJlbW90ZVJlc291cmNlQ2FjaGVQcm94eTo6cmVsZWFzZUltYWdl
QnVmZmVyKFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciByZQogewogICAgIGJvb2wgZm91bmQg
PSBtX2ltYWdlQnVmZmVycy5yZW1vdmUocmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKTsKICAg
ICBBU1NFUlRfVU5VU0VEKGZvdW5kLCBmb3VuZCk7Ci0gICAgbV9yZW1vdGVSZW5kZXJpbmdCYWNr
ZW5kUHJveHkucmVsZWFzZVJlbW90ZVJlc291cmNlKHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmll
cik7CisKKyAgICAvLyBUZWxsIHRoZSBHUFUgcHJvY2VzcyB0byByZW1vdmUgdGhpcyByZXNvdXJj
ZSB1bmxlc3MgaXQncyBwZW5kaW5nIHJlcGxheWluZyBiYWNrLgorICAgIHJlbGVhc2VSZW1vdGVS
ZXNvdXJjZShyZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpOworfQorCitib29sIFJlbW90ZVJl
c291cmNlQ2FjaGVQcm94eTo6bG9ja1JlbW90ZUltYWdlQnVmZmVyRm9yUmVtb3RlQ2xpZW50KElt
YWdlQnVmZmVyJiBpbWFnZUJ1ZmZlciwgUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyIHJlbW90
ZUNsaWVudElkZW50aWZpZXIpCit7CisgICAgaWYgKCFpbWFnZUJ1ZmZlci5yZW5kZXJpbmdSZXNv
dXJjZUlkZW50aWZpZXIoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgaWYgKGNhY2hl
ZEltYWdlQnVmZmVyKGltYWdlQnVmZmVyLnJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcigpKSAh
PSAmaW1hZ2VCdWZmZXIpIHsKKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAg
IHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICBsb2NrUmVtb3RlUmVzb3VyY2VGb3JSZW1vdGVD
bGllbnQoaW1hZ2VCdWZmZXIucmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKCksIHJlbW90ZUNs
aWVudElkZW50aWZpZXIpOworICAgIHJldHVybiB0cnVlOworfQorCit2b2lkIFJlbW90ZVJlc291
cmNlQ2FjaGVQcm94eTo6bG9ja1JlbW90ZVJlc291cmNlRm9yUmVtb3RlQ2xpZW50KFJlbmRlcmlu
Z1Jlc291cmNlSWRlbnRpZmllciByZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIsIFJlbmRlcmlu
Z1Jlc291cmNlSWRlbnRpZmllciByZW1vdGVDbGllbnRJZGVudGlmaWVyKQoreworICAgIC8vIEFk
ZCB0aGUgInJlc291cmNlIC0+IGNsaWVudCIgZGVwZW5kZW5jeSBpbiBtX2xvY2tlZFJlbW90ZVJl
c291cmNlRm9yUmVtb3RlQ2xpZW50cy4KKyAgICBhdXRvJiBjbGllbnRzID0gbV9sb2NrZWRSZW1v
dGVSZXNvdXJjZUZvclJlbW90ZUNsaWVudHMuZW5zdXJlKHJlbmRlcmluZ1Jlc291cmNlSWRlbnRp
ZmllciwgWyZdIHsKKyAgICAgICAgcmV0dXJuIFJlbW90ZUNsaWVudHNIYXNoU2V0KCk7CisgICAg
fSkuaXRlcmF0b3ItPnZhbHVlOworCisgICAgY2xpZW50cy5hZGQocmVtb3RlQ2xpZW50SWRlbnRp
Zmllcik7Cit9CisKK3ZvaWQgUmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5OjpyZWxlYXNlUmVtb3Rl
UmVzb3VyY2UoUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyIHJlbmRlcmluZ1Jlc291cmNlSWRl
bnRpZmllcikKK3sKKyAgICBBU1NFUlQoIW1fcGVuZGluZ1VubG9ja1JlbW90ZVJlc291cmNlRm9y
UmVtb3RlQ2xpZW50cy5jb250YWlucyhyZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpKTsKKwor
ICAgIC8vIElmIHdlIGhhdmUgcmVjb3JkZWQgcmVzb3VyY2UgLT4gY2xpZW50IGRlcGVuZGVuY3kg
YmVmb3JlIGluIG1fbG9ja2VkUmVtb3RlUmVzb3VyY2VGb3JSZW1vdGVDbGllbnRzLCBtb3ZlIHRo
aXMKKyAgICAvLyBkZXBlbmRlbmN5IHRvIG1fcGVuZGluZ1VubG9ja1JlbW90ZVJlc291cmNlRm9y
UmVtb3RlQ2xpZW50cy4gT3RoZXJ3aXNlIHJlbW92ZSB0aGUgcmVzb3VyY2UgaW4gdGhlIEdQVSBQ
cm9jZXNzLgorICAgIGlmIChtX2xvY2tlZFJlbW90ZVJlc291cmNlRm9yUmVtb3RlQ2xpZW50cy5j
b250YWlucyhyZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpKQorICAgICAgICBtX3BlbmRpbmdV
bmxvY2tSZW1vdGVSZXNvdXJjZUZvclJlbW90ZUNsaWVudHMuYWRkKHJlbmRlcmluZ1Jlc291cmNl
SWRlbnRpZmllciwgbV9sb2NrZWRSZW1vdGVSZXNvdXJjZUZvclJlbW90ZUNsaWVudHMudGFrZShy
ZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpKTsKKyAgICBlbHNlCisgICAgICAgIG1fcmVtb3Rl
UmVuZGVyaW5nQmFja2VuZFByb3h5LnJlbGVhc2VSZW1vdGVSZXNvdXJjZShyZW5kZXJpbmdSZXNv
dXJjZUlkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZVJlc291cmNlQ2FjaGVQcm94eTo6dW5s
b2NrUmVtb3RlUmVzb3VyY2VzRm9yUmVtb3RlQ2xpZW50KFJlbmRlcmluZ1Jlc291cmNlSWRlbnRp
ZmllciByZW1vdGVDbGllbnRJZGVudGlmaWVyKQoreworICAgIGF1dG8gcmVtb3ZlUmVtb3RlQ2xp
ZW50ID0gWyZdKFJlbW90ZVJlc291cmNlQ2xpZW50c0hhc2hNYXAmIHJlbW90ZVJlc291cmNlRm9y
UmVtb3RlQ2xpZW50cywgUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyIHJlbW90ZUNsaWVudElk
ZW50aWZpZXIpIHsKKyAgICAgICAgVmVjdG9yPFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcj4g
cmVtb3RlUmVzb3VyY2VDbGllbnRzVG9CZVJlbW92ZWQ7CisKKyAgICAgICAgLy8gUmVtb3ZlIGFs
bCB0aGUgcmVzb3VyY2UgLT4gY2xpZW50IGRlcGVuZGVuY2llcyBmcm9tIHJlbW90ZVJlc291cmNl
Q2xpZW50c0hhc2hNYXAuCisgICAgICAgIGZvciAoYXV0byYgcGFpciA6IHJlbW90ZVJlc291cmNl
Rm9yUmVtb3RlQ2xpZW50cykgeworICAgICAgICAgICAgcGFpci52YWx1ZS5yZW1vdmUocmVtb3Rl
Q2xpZW50SWRlbnRpZmllcik7CisgICAgICAgICAgICBpZiAocGFpci52YWx1ZS5pc0VtcHR5KCkp
CisgICAgICAgICAgICAgICAgcmVtb3RlUmVzb3VyY2VDbGllbnRzVG9CZVJlbW92ZWQuYXBwZW5k
KHBhaXIua2V5KTsKKyAgICAgICAgfQorCisgICAgICAgIC8vIFJldHVybiBhIGxpc3Qgb2YgdGhl
IHVucmVmZXJlbmNlZCByZXNvdXJjZXMuCisgICAgICAgIHJldHVybiByZW1vdGVSZXNvdXJjZUNs
aWVudHNUb0JlUmVtb3ZlZDsKKyAgICB9OworCisgICAgLy8gUmVtb3ZlIGFsbCB0aGUgcmVzb3Vy
Y2UgLT4gY2xpZW50IGRlcGVuZGVuY2llcyBmcm9tIG1fbG9ja2VkUmVtb3RlUmVzb3VyY2VGb3JS
ZW1vdGVDbGllbnRzLgorICAgIGZvciAoYXV0byByZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIg
OiByZW1vdmVSZW1vdGVDbGllbnQobV9sb2NrZWRSZW1vdGVSZXNvdXJjZUZvclJlbW90ZUNsaWVu
dHMsIHJlbW90ZUNsaWVudElkZW50aWZpZXIpKQorICAgICAgICBtX2xvY2tlZFJlbW90ZVJlc291
cmNlRm9yUmVtb3RlQ2xpZW50cy5yZW1vdmUocmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKTsK
KworICAgIC8vIFJlbW92ZSBhbGwgdGhlIHJlc291cmNlIC0+IGNsaWVudCBkZXBlbmRlbmNpZXMg
ZnJvbSBtX3BlbmRpbmdVbmxvY2tSZW1vdGVSZXNvdXJjZUZvclJlbW90ZUNsaWVudHMuCisgICAg
Zm9yIChhdXRvIHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciA6IHJlbW92ZVJlbW90ZUNsaWVu
dChtX3BlbmRpbmdVbmxvY2tSZW1vdGVSZXNvdXJjZUZvclJlbW90ZUNsaWVudHMsIHJlbW90ZUNs
aWVudElkZW50aWZpZXIpKSB7CisgICAgICAgIC8vIFJlbW92ZSB0aGUgdW5yZWZlcmVuY2VkIHJl
c291cmNlcyBmcm9tIG1fcmVtb3RlUmVzb3VyY2VDbGllbnRzUGVuZGluZ1JlbGVhc2VIYXNoTWFw
LgorICAgICAgICBtX3BlbmRpbmdVbmxvY2tSZW1vdGVSZXNvdXJjZUZvclJlbW90ZUNsaWVudHMu
cmVtb3ZlKHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcik7CisKKyAgICAgICAgLy8gVGVsbCB0
aGUgR1BVIHByb2Nlc3MgdG8gcmVtb3ZlIHRoaXMgcmVzb3VyY2UuCisgICAgICAgIG1fcmVtb3Rl
UmVuZGVyaW5nQmFja2VuZFByb3h5LnJlbGVhc2VSZW1vdGVSZXNvdXJjZShyZW5kZXJpbmdSZXNv
dXJjZUlkZW50aWZpZXIpOworICAgIH0KIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZVJlc291
cmNlQ2FjaGVQcm94eS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9S
ZW1vdGVSZXNvdXJjZUNhY2hlUHJveHkuaAppbmRleCAyMzk2OGY2YWZhZGYzY2NmOTdhYjkyMTNi
MzExYmRmYTA0Mzg2MGZmLi5lODZiZTdkZWIwOTJiYThmMTNiN2RiNTVhZWU4NzgwMmM3OGRkNDhj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90
ZVJlc291cmNlQ2FjaGVQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUv
Z3JhcGhpY3MvUmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5LmgKQEAgLTQ2LDEwICs0NiwyMCBAQCBw
dWJsaWM6CiAgICAgV2ViQ29yZTo6SW1hZ2VCdWZmZXIqIGNhY2hlZEltYWdlQnVmZmVyKFdlYkNv
cmU6OlJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcik7CiAgICAgdm9pZCByZWxlYXNlSW1hZ2VC
dWZmZXIoV2ViQ29yZTo6UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKTsKIAorICAgIGJvb2wg
bG9ja1JlbW90ZUltYWdlQnVmZmVyRm9yUmVtb3RlQ2xpZW50KFdlYkNvcmU6OkltYWdlQnVmZmVy
JiwgV2ViQ29yZTo6UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyIHJlbW90ZUNsaWVudElkZW50
aWZpZXIpOworICAgIHZvaWQgdW5sb2NrUmVtb3RlUmVzb3VyY2VzRm9yUmVtb3RlQ2xpZW50KFdl
YkNvcmU6OlJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciByZW1vdGVDbGllbnRJZGVudGlmaWVy
KTsKKwogcHJpdmF0ZToKKyAgICB1c2luZyBSZW1vdGVDbGllbnRzSGFzaFNldCA9IEhhc2hTZXQ8
V2ViQ29yZTo6UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyPjsKKyAgICB1c2luZyBSZW1vdGVS
ZXNvdXJjZUNsaWVudHNIYXNoTWFwID0gSGFzaE1hcDxXZWJDb3JlOjpSZW5kZXJpbmdSZXNvdXJj
ZUlkZW50aWZpZXIsIFJlbW90ZUNsaWVudHNIYXNoU2V0PjsKICAgICB1c2luZyBSZW1vdGVJbWFn
ZUJ1ZmZlclByb3h5SGFzaE1hcCA9IEhhc2hNYXA8V2ViQ29yZTo6UmVuZGVyaW5nUmVzb3VyY2VJ
ZGVudGlmaWVyLCBXZWJDb3JlOjpJbWFnZUJ1ZmZlcio+OwotICAgIAorCisgICAgdm9pZCBsb2Nr
UmVtb3RlUmVzb3VyY2VGb3JSZW1vdGVDbGllbnQoV2ViQ29yZTo6UmVuZGVyaW5nUmVzb3VyY2VJ
ZGVudGlmaWVyLCBXZWJDb3JlOjpSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgcmVtb3RlQ2xp
ZW50SWRlbnRpZmllcik7CisgICAgdm9pZCByZWxlYXNlUmVtb3RlUmVzb3VyY2UoV2ViQ29yZTo6
UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKTsKKwogICAgIFJlbW90ZUltYWdlQnVmZmVyUHJv
eHlIYXNoTWFwIG1faW1hZ2VCdWZmZXJzOworICAgIFJlbW90ZVJlc291cmNlQ2xpZW50c0hhc2hN
YXAgbV9sb2NrZWRSZW1vdGVSZXNvdXJjZUZvclJlbW90ZUNsaWVudHM7CisgICAgUmVtb3RlUmVz
b3VyY2VDbGllbnRzSGFzaE1hcCBtX3BlbmRpbmdVbmxvY2tSZW1vdGVSZXNvdXJjZUZvclJlbW90
ZUNsaWVudHM7CiAgICAgUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5JiBtX3JlbW90ZVJlbmRl
cmluZ0JhY2tlbmRQcm94eTsKIH07CiAK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>412403</attachid>
            <date>2020-10-27 02:00:59 -0700</date>
            <delta_ts>2020-10-27 12:53:28 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-217566-20201027020059.patch</filename>
            <type>text/plain</type>
            <size>38931</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY5MDIyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjI2MTAyOTAyZmNlOWJl
NWFmNTVhMTdlZWUyMDQ0ZTBhM2EzMzFkZS4uYjdmNTc4ZTI0OTMwYjQxMmY0ZmE1NTY3YzI1NzIw
YTUxN2Y5MmIzZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ2IEBACisyMDIwLTEwLTI3ICBTYWlk
IEFib3UtSGFsbGF3YSAgPHNhYm91aGFsbGF3YUBhcHBsZS5jb20+CisKKyAgICAgICAgW0dQVSBQ
cm9jZXNzXTogSW1wbGVtZW50IERpc3BsYXlMaXN0OjpEcmF3SW1hZ2VCdWZmZXIgaXRlbQorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE3NTY2CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIHRoZSBEcmF3
SW1hZ2VCdWZmZXIgRGlzcGxheUxpc3QgaXRlbS4gSXQgd2lsbCBiZSB1c2VkIG9ubHkgZm9yIEdQ
VQorICAgICAgICByZW5kZXJpbmcuIFRoZSByZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgb2Yg
dGhlIHNvdXJjZSBJbWFnZUJ1ZmZlcgorICAgICAgICB3aWxsIGJlIHJlY29yZGVkLiBGb3IgZGV0
YWlscyBvbiBob3cgZHJhd2luZyBhbiBJbWFnZUJ1ZmZlciB0byBhbm90aGVyIAorICAgICAgICBJ
bWFnZUJ1ZmZlciB3b3JrcyBzZWUgdGhlIFdlYktpdCBDaGFuZ2VMb2cuCisKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
R3JhcGhpY3NDb250ZXh0OjpkcmF3SW1hZ2VCdWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6R3Jh
cGhpY3NDb250ZXh0OjpkcmF3Q29uc3VtaW5nSW1hZ2VCdWZmZXIpOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dEltcGwuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRleHRJbXBsQ2Fpcm8uY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6R3JhcGhpY3NDb250ZXh0SW1wbENhaXJvOjpkcmF3SW1hZ2VCdWZmZXIpOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dEltcGxDYWlyby5oOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdC5oOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1z
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtOjpzaXplSW5CeXRlcyk6
CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RHJhd0ltYWdlQnVmZmVyOjpEcmF3SW1h
Z2VCdWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRyYXdJbWFnZUJ1ZmZl
cjo6YXBwbHkgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6Om9wZXJhdG9y
PDwpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlz
dEl0ZW1zLmg6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RHJhd0ltYWdlQnVmZmVy
OjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRyYXdJbWFnZUJ1ZmZl
cjo6cmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6
OkRpc3BsYXlMaXN0OjpEcmF3SW1hZ2VCdWZmZXI6OnNvdXJjZSBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpEaXNwbGF5TGlzdDo6RHJhd0ltYWdlQnVmZmVyOjpkZXN0aW5hdGlvblJlY3QgY29u
c3QpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRyYXdJbWFnZUJ1ZmZlcjo6b3B0
aW9ucyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RHJhd0ltYWdlQnVm
ZmVyOjplbmNvZGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRyYXdJ
bWFnZUJ1ZmZlcjo6ZGVjb2RlKToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVt
OjplbmNvZGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW06OmRl
Y29kZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlM
aXN0UmVjb3JkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OlJlY29yZGVy
OjpkcmF3SW1hZ2VCdWZmZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXls
aXN0cy9EaXNwbGF5TGlzdFJlY29yZGVyLmg6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlz
dDo6UmVjb3JkZXI6OkRlbGVnYXRlOjpsb2NrUmVtb3RlSW1hZ2VCdWZmZXIpOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvY2Fpcm8vTmljb3NpYUNhaXJvT3BlcmF0aW9uUmVj
b3JkZXIuY3BwOgorICAgICAgICAoTmljb3NpYTo6Q2Fpcm9PcGVyYXRpb25SZWNvcmRlcjo6ZHJh
d0ltYWdlQnVmZmVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lhL2NhaXJv
L05pY29zaWFDYWlyb09wZXJhdGlvblJlY29yZGVyLmg6CisKIDIwMjAtMTAtMjYgIFNhaWQgQWJv
dS1IYWxsYXdhICA8c2Fib3VoYWxsYXdhQGFwcGxlLmNvbT4KIAogICAgICAgICBbR1BVIFByb2Nl
c3NdOiBJbnRyb2R1Y2UgUmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5IHRvIG1hbmFnZSB0aGUgcmVt
b3RlIHJlc291cmNlcyBpbiBXZWIgUHJvY2VzcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCBiY2Y5NDZjZWMyMzRlMzlm
YzUwNmFlMDc0MTIyMTc5NDM0NmE3NDZhLi4wYTA0N2NjNTY2ZWEwM2JkZmViMTFmYmUxNzcwYjhl
OGNmZDAxNTM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3Vy
Y2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDU3IEBACisyMDIwLTEwLTI3ICBTYWlkIEFi
b3UtSGFsbGF3YSAgPHNhYm91aGFsbGF3YUBhcHBsZS5jb20+CisKKyAgICAgICAgW0dQVSBQcm9j
ZXNzXTogSW1wbGVtZW50IERpc3BsYXlMaXN0OjpEcmF3SW1hZ2VCdWZmZXIgaXRlbQorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE3NTY2CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhlIHNlcXVlbmNlIGlu
IHRoZSBXZWIgUHJvY2VzcyBpcyB0aGUgZm9sbG93aW5nOgorCisgICAgICAgIC0tIEdyYXBoaWNz
Q29udGV4dDo6ZHJhd0ltYWdlQnVmZmVyKCkgdXNlcyBEaXNwbGF5TGlzdDo6UmVjb3JkZXIgdG8g
Y2hlY2sKKyAgICAgICAgICAgd2hldGhlciBpdCBpcyBhcHByb3ByaWF0ZSB0byBjcmVhdGUgYSBE
cmF3SW1hZ2VCdWZmZXIgaXRlbSBvciBub3QuCisKKyAgICAgICAgLS0gRGlzcGxheUxpc3Q6OlJl
Y29yZGVyOjpkcmF3SW1hZ2VCdWZmZXIoKSB1c2VzIHRoZSBkZWxlZ2F0ZSB0byBzZWUgaWYKKyAg
ICAgICAgICAgdGhlIEltYWdlQnVmZmVyIGlzIHJlbW90ZSBvciBub3QgYW5kIHdoZXRoZXIgaXQg
Y2FuIGJlIGxvY2tlZCB0aWxsIAorICAgICAgICAgICByZXBsYXlpbmcgYmFjayB0aGUgRGlzcGxh
eUxpc3QgaW4gdGhlIEdQVSBzaWRlLiAKKworICAgICAgICAtLSBSZW1vdGVJbWFnZUJ1ZmZlclBy
b3h5IGluaGVyaXRzIERpc3BsYXlMaXN0OjpSZWNvcmRlcjo6RGVsZWdhdGUuIFNvCisgICAgICAg
ICAgIGl0cyBsb2NrUmVtb3RlSW1hZ2VCdWZmZXIoKSBpcyBjYWxsZWQuCisKKyAgICAgICAgLS0g
SWYgdGhlIEltYWdlQnVmZmVyIGNhbiBiZSBsb2NrZWQsIGEgRHJhd0ltYWdlQnVmZmVySXRlbSBp
cyBjcmVhdGVkIHdpdGgKKyAgICAgICAgICAgdGhlIEltYWdlQnVmZmVyOjpyZW5kZXJpbmdSZXNv
dXJjZUlkZW50aWZpZXIoKS4KKworICAgICAgICBUaGUgc2VxdWVuY2UgaW4gdGhlIEdQVSBQcm9j
ZXNzIGlzIHRoZSBmb2xsb3dpbmc6CisKKyAgICAgICAgLS0gV2hlbiByZXBsYXlpbmcgYmFjayB0
aGUgRGlzcGxheUxpc3QsIERpc3BsYXlMaXN0OjpSZXBsYXllciB3aWxsIGNhbGwKKyAgICAgICAg
ICAgaXRzIGRlbGVnYXRlIHRvIGNoZWNrIGlmIGl0IHdhbnRzIHRvIGFwcGx5IHRoZSBEcmF3SW1h
Z2VCdWZmZXIuCisKKyAgICAgICAgLS0gQmVjYXVzZSBSZW1vdGVJbWFnZUJ1ZmZlciBpbmhlcml0
cyBEaXNwbGF5TGlzdDo6UmVwbGF5ZXI6OkRlbGVnYXRlLAorICAgICAgICAgICBSZW1vdGVJbWFn
ZUJ1ZmZlcjo6YXBwbHkoKSB3aWxsIGJlIGNhbGxlZC4KKworICAgICAgICAtLSBSZW1vdGVJbWFn
ZUJ1ZmZlciB3aWxsIGNhbGwgUmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6YXBwbHlSZXNvdXJjZUl0
ZW0oKQorICAgICAgICAgICB3aGljaCB3aWxsIGNoZWNrIHdoZXRoZXIgdGhlIGl0ZW0ncyByZW5k
ZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgaXMgb25lCisgICAgICAgICAgIG9mIHRoZSBJbWFnZUJ1
ZmZlcnMgaW4gaXRzIFJlbW90ZVJlc291cmNlQ2FjaGUgb3Igbm90LgorCisgICAgICAgIC0tIElm
IHRoZXJlIGlzIGEgY2FjaGVkIEltYWdlQnVmZmVyLCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjph
cHBseVJlc291cmNlSXRlbSgpCisgICAgICAgICAgIHdpbGwgZHJhdyBpdCBpbiB0aGUgR3JhcGhp
Y3NDb250ZXh0LgorCisgICAgICAgICogR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVJbWFnZUJ1
ZmZlci5oOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVJbWFnZUJ1ZmZlcjo6YXBwbHkpOiBEZWxl
dGVkLgorICAgICAgICAqIEdQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2Vu
ZC5jcHA6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OmFwcGx5UmVz
b3VyY2VJdGVtKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6YXBw
bHlNZWRpYUl0ZW0pOgorICAgICAgICAqIEdQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVy
aW5nQmFja2VuZC5oOgorICAgICAgICAqIEdQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVzb3Vy
Y2VDYWNoZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVJlc291cmNlQ2FjaGU6OmNhY2hl
ZEltYWdlQnVmZmVyKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVJ
bWFnZUJ1ZmZlclByb3h5Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVt
b3RlUmVzb3VyY2VDYWNoZVByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlUmVzb3Vy
Y2VDYWNoZVByb3h5OjpyZWxlYXNlSW1hZ2VCdWZmZXIpOgorICAgICAgICAoV2ViS2l0OjpSZW1v
dGVSZXNvdXJjZUNhY2hlUHJveHk6OmxvY2tSZW1vdGVJbWFnZUJ1ZmZlckZvclJlbW90ZUNsaWVu
dCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVJlc291cmNlQ2FjaGVQcm94eTo6bG9ja1JlbW90
ZVJlc291cmNlRm9yUmVtb3RlQ2xpZW50KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlUmVzb3Vy
Y2VDYWNoZVByb3h5OjpyZWxlYXNlUmVtb3RlUmVzb3VyY2UpOgorICAgICAgICAoV2ViS2l0OjpS
ZW1vdGVSZXNvdXJjZUNhY2hlUHJveHk6OnVubG9ja1JlbW90ZVJlc291cmNlc0ZvclJlbW90ZUNs
aWVudCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlUmVzb3VyY2VD
YWNoZVByb3h5Lmg6CisKIDIwMjAtMTAtMjYgIFNhaWQgQWJvdS1IYWxsYXdhICA8c2Fib3VoYWxs
YXdhQGFwcGxlLmNvbT4KIAogICAgICAgICBbR1BVIFByb2Nlc3NdOiBJbnRyb2R1Y2UgUmVtb3Rl
UmVzb3VyY2VDYWNoZVByb3h5IHRvIG1hbmFnZSB0aGUgcmVtb3RlIHJlc291cmNlcyBpbiBXZWIg
UHJvY2VzcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3Jh
cGhpY3NDb250ZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBo
aWNzQ29udGV4dC5jcHAKaW5kZXggMGRjMDU1N2IwZDRmMDcyZWRiOThiYzU4YzEyOWI0MjFhODA4
ZjA2ZC4uMWMwMDg5ZGVkMGVlNzUxM2MxOGY5NGQzMmZhMzc1ZGVlNjhmZjkyZSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuY3Bw
CkBAIC04MTIsNiArODEyLDkgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OmRyYXdJbWFnZUJ1ZmZl
cihJbWFnZUJ1ZmZlciYgaW1hZ2UsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdGkKICAgICBpZiAocGFp
bnRpbmdEaXNhYmxlZCgpKQogICAgICAgICByZXR1cm47CiAKKyAgICBpZiAobV9pbXBsICYmIG1f
aW1wbC0+ZHJhd0ltYWdlQnVmZmVyKGltYWdlLCBkZXN0aW5hdGlvbiwgc291cmNlLCBvcHRpb25z
KSkKKyAgICAgICAgcmV0dXJuOworCiAgICAgSW50ZXJwb2xhdGlvblF1YWxpdHlNYWludGFpbmVy
IGludGVycG9sYXRpb25RdWFsaXR5Rm9yVGhpc1Njb3BlKCp0aGlzLCBvcHRpb25zLmludGVycG9s
YXRpb25RdWFsaXR5KCkpOwogICAgIGltYWdlLmRyYXcoKnRoaXMsIGRlc3RpbmF0aW9uLCBzb3Vy
Y2UsIG9wdGlvbnMpOwogfQpAQCAtODM2LDcgKzgzOSwxMCBAQCB2b2lkIEdyYXBoaWNzQ29udGV4
dDo6ZHJhd0NvbnN1bWluZ0ltYWdlQnVmZmVyKHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlcj4g
aW1hZwogewogICAgIGlmIChwYWludGluZ0Rpc2FibGVkKCkgfHwgIWltYWdlKQogICAgICAgICBy
ZXR1cm47Ci0gICAgCisKKyAgICBpZiAobV9pbXBsICYmIG1faW1wbC0+ZHJhd0ltYWdlQnVmZmVy
KCppbWFnZSwgZGVzdGluYXRpb24sIHNvdXJjZSwgb3B0aW9ucykpCisgICAgICAgIHJldHVybjsK
KwogICAgIEludGVycG9sYXRpb25RdWFsaXR5TWFpbnRhaW5lciBpbnRlcnBvbGF0aW9uUXVhbGl0
eUZvclRoaXNTY29wZSgqdGhpcywgb3B0aW9ucy5pbnRlcnBvbGF0aW9uUXVhbGl0eSgpKTsKICAg
ICBJbWFnZUJ1ZmZlcjo6ZHJhd0NvbnN1bWluZyhXVEZNb3ZlKGltYWdlKSwgKnRoaXMsIGRlc3Rp
bmF0aW9uLCBzb3VyY2UsIG9wdGlvbnMpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0SW1wbC5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0SW1wbC5oCmluZGV4IGMyY2FmZTMzNmNj
NTY5OTVkYzQwZGVkNDAxNjdlNjgzYjQyYTU3ZjcuLjM1MzZkMmYzYjczY2Q0ODhlOThlYzJlOWZk
ZTI0OGY4MjM4YzM5Y2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0dyYXBoaWNzQ29udGV4dEltcGwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9HcmFwaGljc0NvbnRleHRJbXBsLmgKQEAgLTczLDYgKzczLDcgQEAgcHVibGljOgog
ICAgIHZpcnR1YWwgSW1hZ2VEcmF3UmVzdWx0IGRyYXdUaWxlZEltYWdlKEltYWdlJiwgY29uc3Qg
RmxvYXRSZWN0JiBkZXN0aW5hdGlvbiwgY29uc3QgRmxvYXRQb2ludCYgc291cmNlLCBjb25zdCBG
bG9hdFNpemUmIHRpbGVTaXplLCBjb25zdCBGbG9hdFNpemUmIHNwYWNpbmcsIGNvbnN0IEltYWdl
UGFpbnRpbmdPcHRpb25zJikgPSAwOwogICAgIHZpcnR1YWwgSW1hZ2VEcmF3UmVzdWx0IGRyYXdU
aWxlZEltYWdlKEltYWdlJiwgY29uc3QgRmxvYXRSZWN0JiBkZXN0aW5hdGlvbiwgY29uc3QgRmxv
YXRSZWN0JiBzb3VyY2UsIGNvbnN0IEZsb2F0U2l6ZSYgdGlsZVNjYWxlRmFjdG9yLCBJbWFnZTo6
VGlsZVJ1bGUgaFJ1bGUsIEltYWdlOjpUaWxlUnVsZSB2UnVsZSwgY29uc3QgSW1hZ2VQYWludGlu
Z09wdGlvbnMmKSA9IDA7CiAKKyAgICB2aXJ0dWFsIGJvb2wgZHJhd0ltYWdlQnVmZmVyKEltYWdl
QnVmZmVyJiwgY29uc3QgRmxvYXRSZWN0JiBkZXN0aW5hdGlvbiwgY29uc3QgRmxvYXRSZWN0JiBz
b3VyY2UsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJikgPSAwOwogICAgIHZpcnR1YWwgdm9p
ZCBkcmF3TmF0aXZlSW1hZ2UoY29uc3QgTmF0aXZlSW1hZ2VQdHImLCBjb25zdCBGbG9hdFNpemUm
IHNlbGZTaXplLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNy
Y1JlY3QsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJikgPSAwOwogICAgIHZpcnR1YWwgdm9p
ZCBkcmF3UGF0dGVybihJbWFnZSYsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZs
b2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiwgY29uc3QgRmxvYXRQb2lu
dCYgcGhhc2UsIGNvbnN0IEZsb2F0U2l6ZSYgc3BhY2luZywgY29uc3QgSW1hZ2VQYWludGluZ09w
dGlvbnMmKSA9IDA7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dEltcGxDYWlyby5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRleHRJbXBsQ2Fpcm8uY3BwCmluZGV4
IGI2NWI0ZDY0NDA2YmViNzZjNDA5ZDNlOGM2NTQ5NzVjYTlmN2ViNjMuLjhlZjRmNzg2YjcyNDkx
NDI0NTZlZmYxZjBhZDgyMTZjYzkwNTUzNjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dEltcGxDYWlyby5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0SW1w
bENhaXJvLmNwcApAQCAtMjc5LDYgKzI3OSwxMiBAQCBJbWFnZURyYXdSZXN1bHQgR3JhcGhpY3ND
b250ZXh0SW1wbENhaXJvOjpkcmF3VGlsZWRJbWFnZShJbWFnZSYgaW1hZ2UsIGNvbnN0IEZsbwog
ICAgIHJldHVybiBHcmFwaGljc0NvbnRleHRJbXBsOjpkcmF3VGlsZWRJbWFnZUltcGwoZ3JhcGhp
Y3NDb250ZXh0KCksIGltYWdlLCBkZXN0aW5hdGlvbiwgc291cmNlLCB0aWxlU2NhbGVGYWN0b3Is
IGhSdWxlLCB2UnVsZSwgaW1hZ2VQYWludGluZ09wdGlvbnMpOwogfQogCitib29sIEdyYXBoaWNz
Q29udGV4dEltcGxDYWlybzo6ZHJhd0ltYWdlQnVmZmVyKEltYWdlQnVmZmVyJiwgY29uc3QgRmxv
YXRSZWN0JiwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmKQor
eworICAgIC8vIEZJWE1FOiBOb3QgaW1wbGVtZW50ZWQuCisgICAgcmV0dXJuIGZhbHNlOworfQor
CiB2b2lkIEdyYXBoaWNzQ29udGV4dEltcGxDYWlybzo6ZHJhd05hdGl2ZUltYWdlKGNvbnN0IE5h
dGl2ZUltYWdlUHRyJiBpbWFnZSwgY29uc3QgRmxvYXRTaXplJiBpbWFnZVNpemUsIGNvbnN0IEZs
b2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgSW1hZ2VQ
YWludGluZ09wdGlvbnMmIG9wdGlvbnMpCiB7CiAgICAgVU5VU0VEX1BBUkFNKGltYWdlU2l6ZSk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFw
aGljc0NvbnRleHRJbXBsQ2Fpcm8uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NhaXJvL0dyYXBoaWNzQ29udGV4dEltcGxDYWlyby5oCmluZGV4IGU1ZTIwNzQ4YzZkNzYyMGYx
MGNmMjE1NjYyOGVmN2UwYmU2MDFjN2IuLjFjODI3MTMwYzJhNWZlMjhmNzUzNWUxOTQ1YTMzZGM5
Njg2MjA1MTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nh
aXJvL0dyYXBoaWNzQ29udGV4dEltcGxDYWlyby5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dEltcGxDYWlyby5oCkBAIC03NCw2ICs3
NCw4IEBAIHB1YmxpYzoKICAgICBJbWFnZURyYXdSZXN1bHQgZHJhd0ltYWdlKEltYWdlJiwgY29u
c3QgRmxvYXRSZWN0JiwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlv
bnMmKSBvdmVycmlkZTsKICAgICBJbWFnZURyYXdSZXN1bHQgZHJhd1RpbGVkSW1hZ2UoSW1hZ2Um
LCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBGbG9hdFBvaW50JiwgY29uc3QgRmxvYXRTaXplJiwg
Y29uc3QgRmxvYXRTaXplJiwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmKSBvdmVycmlkZTsK
ICAgICBJbWFnZURyYXdSZXN1bHQgZHJhd1RpbGVkSW1hZ2UoSW1hZ2UmLCBjb25zdCBGbG9hdFJl
Y3QmLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBGbG9hdFNpemUmLCBJbWFnZTo6VGlsZVJ1bGUs
IEltYWdlOjpUaWxlUnVsZSwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmKSBvdmVycmlkZTsK
KyAgICAKKyAgICBib29sIGRyYXdJbWFnZUJ1ZmZlcihJbWFnZUJ1ZmZlciYsIGNvbnN0IEZsb2F0
UmVjdCYsIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJikgb3Zl
cnJpZGU7CiAgICAgdm9pZCBkcmF3TmF0aXZlSW1hZ2UoY29uc3QgTmF0aXZlSW1hZ2VQdHImLCBj
b25zdCBGbG9hdFNpemUmLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBGbG9hdFJlY3QmLCBjb25z
dCBJbWFnZVBhaW50aW5nT3B0aW9ucyYpIG92ZXJyaWRlOwogICAgIHZvaWQgZHJhd1BhdHRlcm4o
SW1hZ2UmLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBBZmZpbmVU
cmFuc2Zvcm0mLCBjb25zdCBGbG9hdFBvaW50JiwgY29uc3QgRmxvYXRTaXplJiwgY29uc3QgSW1h
Z2VQYWludGluZ09wdGlvbnMmKSBvdmVycmlkZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0LmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3QuaAppbmRl
eCA1MDZkYWJhYjBiOGI0YjczMTQ3NmJkZjlmMzA5NTY3MmI5MTJlZjE5Li4zMjJlY2MxYzFjNDE1
Y2VmMDU5ZmNjZmJhZjUwOGY5M2E1OTIxMmFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3QuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3QuaApAQCAt
NjQsNiArNjQsNyBAQCBlbnVtIGNsYXNzIEl0ZW1UeXBlIDogdWludDhfdCB7CiAgICAgRHJhd0lt
YWdlLAogICAgIERyYXdUaWxlZEltYWdlLAogICAgIERyYXdUaWxlZFNjYWxlZEltYWdlLAorICAg
IERyYXdJbWFnZUJ1ZmZlciwKICAgICBEcmF3TmF0aXZlSW1hZ2UsCiAgICAgRHJhd1BhdHRlcm4s
CiAgICAgRHJhd1JlY3QsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtcy5jcHAKaW5kZXgg
OGQ4YjI4MTkzODc1YzMxNjZmODFlZDA4ZTNkOTI5OTYxZjdiODcxNi4uMjQ4ZTBmOWY2OWEzMzBj
ZDlmZGM4NTJmMTA4ZDg4MDliZTY2YzIzNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbXMuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0
ZW1zLmNwcApAQCAtMTEwLDYgKzExMCw4IEBAIHNpemVfdCBJdGVtOjpzaXplSW5CeXRlcyhjb25z
dCBJdGVtJiBpdGVtKQogICAgICAgICByZXR1cm4gc2l6ZW9mKGRvd25jYXN0PERyYXdUaWxlZElt
YWdlPihpdGVtKSk7CiAgICAgY2FzZSBJdGVtVHlwZTo6RHJhd1RpbGVkU2NhbGVkSW1hZ2U6CiAg
ICAgICAgIHJldHVybiBzaXplb2YoZG93bmNhc3Q8RHJhd1RpbGVkU2NhbGVkSW1hZ2U+KGl0ZW0p
KTsKKyAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3SW1hZ2VCdWZmZXI6CisgICAgICAgIHJldHVybiBz
aXplb2YoZG93bmNhc3Q8RHJhd0ltYWdlQnVmZmVyPihpdGVtKSk7CiAgICAgY2FzZSBJdGVtVHlw
ZTo6RHJhd05hdGl2ZUltYWdlOgogICAgICAgICByZXR1cm4gc2l6ZW9mKGRvd25jYXN0PERyYXdO
YXRpdmVJbWFnZT4oaXRlbSkpOwogICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdQYXR0ZXJuOgpAQCAt
NzM4LDYgKzc0MCwzMiBAQCBzdGF0aWMgVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFt
JiB0cywgY29uc3QgRHJhd1RpbGVkU2NhbGVkSW1hZ2UmIGl0ZW0pCiAgICAgcmV0dXJuIHRzOwog
fQogCitEcmF3SW1hZ2VCdWZmZXI6OkRyYXdJbWFnZUJ1ZmZlcihSZW5kZXJpbmdSZXNvdXJjZUlk
ZW50aWZpZXIgcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyLCBjb25zdCBGbG9hdFJlY3QmIGRl
c3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRp
b25zJiBvcHRpb25zKQorICAgIDogRHJhd2luZ0l0ZW0oSXRlbVR5cGU6OkRyYXdJbWFnZUJ1ZmZl
cikKKyAgICAsIG1fcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKHJlbmRlcmluZ1Jlc291cmNl
SWRlbnRpZmllcikKKyAgICAsIG1fZGVzdGluYXRpb25SZWN0KGRlc3RSZWN0KQorICAgICwgbV9z
cmNSZWN0KHNyY1JlY3QpCisgICAgLCBtX29wdGlvbnMob3B0aW9ucykKK3sKK30KKworRHJhd0lt
YWdlQnVmZmVyOjp+RHJhd0ltYWdlQnVmZmVyKCkgPSBkZWZhdWx0OworCit2b2lkIERyYXdJbWFn
ZUJ1ZmZlcjo6YXBwbHkoR3JhcGhpY3NDb250ZXh0JikgY29uc3QKK3sKKyAgICAvLyBTaG91bGQg
YmUgaGFuZGxlZCBieSB0aGUgZGVsZWdhdGUuCisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Cit9
CisKK3N0YXRpYyBUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mIHRzLCBjb25zdCBE
cmF3SW1hZ2VCdWZmZXImIGl0ZW0pCit7CisgICAgdHMgPDwgc3RhdGljX2Nhc3Q8Y29uc3QgRHJh
d2luZ0l0ZW0mPihpdGVtKTsKKyAgICB0cy5kdW1wUHJvcGVydHkoInJlbW90ZS1yZXNvdXJjZS1p
ZGVudGlmaWVyIiwgaXRlbS5yZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIoKSk7CisgICAgdHMu
ZHVtcFByb3BlcnR5KCJzb3VyY2UtcmVjdCIsIGl0ZW0uc291cmNlKCkpOworICAgIHRzLmR1bXBQ
cm9wZXJ0eSgiZGVzdC1yZWN0IiwgaXRlbS5kZXN0aW5hdGlvblJlY3QoKSk7CisgICAgcmV0dXJu
IHRzOworfQorCiBEcmF3TmF0aXZlSW1hZ2U6OkRyYXdOYXRpdmVJbWFnZShjb25zdCBOYXRpdmVJ
bWFnZVB0ciYgaW1hZ2UsIGNvbnN0IEZsb2F0U2l6ZSYgaW1hZ2VTaXplLCBjb25zdCBGbG9hdFJl
Y3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEltYWdlUGFpbnRp
bmdPcHRpb25zJiBvcHRpb25zKQogICAgIDogRHJhd2luZ0l0ZW0oSXRlbVR5cGU6OkRyYXdOYXRp
dmVJbWFnZSkKICAgICAsIG1faW1hZ2UoaW1hZ2UpCkBAIC0xNDk2LDYgKzE1MjQsNyBAQCBzdGF0
aWMgVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiB0cywgY29uc3QgSXRlbVR5cGUm
IHR5cGUpCiAgICAgY2FzZSBJdGVtVHlwZTo6RHJhd0ltYWdlOiB0cyA8PCAiZHJhdy1pbWFnZSI7
IGJyZWFrOwogICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdUaWxlZEltYWdlOiB0cyA8PCAiZHJhdy10
aWxlZC1pbWFnZSI7IGJyZWFrOwogICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdUaWxlZFNjYWxlZElt
YWdlOiB0cyA8PCAiZHJhdy10aWxlZC1zY2FsZWQtaW1hZ2UiOyBicmVhazsKKyAgICBjYXNlIEl0
ZW1UeXBlOjpEcmF3SW1hZ2VCdWZmZXI6IHRzIDw8ICJkcmF3LWltYWdlLWJ1ZmZlciI7IGJyZWFr
OwogICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdOYXRpdmVJbWFnZTogdHMgPDwgImRyYXctbmF0aXZl
LWltYWdlIjsgYnJlYWs7CiAgICAgY2FzZSBJdGVtVHlwZTo6RHJhd1BhdHRlcm46IHRzIDw8ICJk
cmF3LXBhdHRlcm4iOyBicmVhazsKICAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3UmVjdDogdHMgPDwg
ImRyYXctcmVjdCI7IGJyZWFrOwpAQCAtMTYwMiw2ICsxNjMxLDkgQEAgVGV4dFN0cmVhbSYgb3Bl
cmF0b3I8PChUZXh0U3RyZWFtJiB0cywgY29uc3QgSXRlbSYgaXRlbSkKICAgICBjYXNlIEl0ZW1U
eXBlOjpEcmF3VGlsZWRTY2FsZWRJbWFnZToKICAgICAgICAgdHMgPDwgZG93bmNhc3Q8RHJhd1Rp
bGVkU2NhbGVkSW1hZ2U+KGl0ZW0pOwogICAgICAgICBicmVhazsKKyAgICBjYXNlIEl0ZW1UeXBl
OjpEcmF3SW1hZ2VCdWZmZXI6CisgICAgICAgIHRzIDw8IGRvd25jYXN0PERyYXdJbWFnZUJ1ZmZl
cj4oaXRlbSk7CisgICAgICAgIGJyZWFrOwogICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdOYXRpdmVJ
bWFnZToKICAgICAgICAgdHMgPDwgZG93bmNhc3Q8RHJhd05hdGl2ZUltYWdlPihpdGVtKTsKICAg
ICAgICAgYnJlYWs7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtcy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbXMuaAppbmRleCBkNGNhOThl
NjQ4NDUxYjI2Y2JmNjQ5ODM1YjFkYTJmM2MyM2I0YWZmLi45NDY3YmU5YTk2ZTI4ZTUxMDRmYjYx
M2U1ZDVkNjg2ZjQ3MDZmOTk4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtcy5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1zLmgKQEAg
LTM1LDYgKzM1LDcgQEAKICNpbmNsdWRlICJJbWFnZURhdGEuaCIKICNpbmNsdWRlICJNZWRpYVBs
YXllcklkZW50aWZpZXIuaCIKICNpbmNsdWRlICJQYXR0ZXJuLmgiCisjaW5jbHVkZSAiUmVuZGVy
aW5nUmVzb3VyY2VJZGVudGlmaWVyLmgiCiAjaW5jbHVkZSAiU2hhcmVkQnVmZmVyLmgiCiAjaW5j
bHVkZSA8d3RmL1R5cGVDYXN0cy5oPgogCkBAIC0xNTMzLDYgKzE1MzQsNzEgQEAgT3B0aW9uYWw8
UmVmPERyYXdUaWxlZFNjYWxlZEltYWdlPj4gRHJhd1RpbGVkU2NhbGVkSW1hZ2U6OmRlY29kZShE
ZWNvZGVyJiBkZWNvZGUKICAgICByZXR1cm4gRHJhd1RpbGVkU2NhbGVkSW1hZ2U6OmNyZWF0ZSgq
aW1hZ2VIYW5kbGUtPmltYWdlLCAqZGVzdGluYXRpb24sICpzb3VyY2UsICp0aWxlU2NhbGVGYWN0
b3IsIGhSdWxlLCB2UnVsZSwgKmltYWdlUGFpbnRpbmdPcHRpb25zKTsKIH0KIAorY2xhc3MgRHJh
d0ltYWdlQnVmZmVyIDogcHVibGljIERyYXdpbmdJdGVtIHsKK3B1YmxpYzoKKyAgICBzdGF0aWMg
UmVmPERyYXdJbWFnZUJ1ZmZlcj4gY3JlYXRlKFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciBy
ZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdGluYXRpb24s
IGNvbnN0IEZsb2F0UmVjdCYgc291cmNlLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgb3B0
aW9ucykKKyAgICB7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IERyYXdJbWFnZUJ1ZmZl
cihyZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIsIGRlc3RpbmF0aW9uLCBzb3VyY2UsIG9wdGlv
bnMpKTsKKyAgICB9CisKKyAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIH5EcmF3SW1hZ2VCdWZm
ZXIoKTsKKworICAgIFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciByZW5kZXJpbmdSZXNvdXJj
ZUlkZW50aWZpZXIoKSBjb25zdCB7IHJldHVybiBtX3JlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmll
cjsgfQorICAgIEZsb2F0UmVjdCBzb3VyY2UoKSBjb25zdCB7IHJldHVybiBtX3NyY1JlY3Q7IH0K
KyAgICBGbG9hdFJlY3QgZGVzdGluYXRpb25SZWN0KCkgY29uc3QgeyByZXR1cm4gbV9kZXN0aW5h
dGlvblJlY3Q7IH0KKyAgICBJbWFnZVBhaW50aW5nT3B0aW9ucyBvcHRpb25zKCkgY29uc3QgeyBy
ZXR1cm4gbV9vcHRpb25zOyB9CisKKyAgICB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPiB2b2lkIGVu
Y29kZShFbmNvZGVyJikgY29uc3Q7CisgICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGlj
IE9wdGlvbmFsPFJlZjxEcmF3SW1hZ2VCdWZmZXI+PiBkZWNvZGUoRGVjb2RlciYpOworCitwcml2
YXRlOgorICAgIFdFQkNPUkVfRVhQT1JUIERyYXdJbWFnZUJ1ZmZlcihSZW5kZXJpbmdSZXNvdXJj
ZUlkZW50aWZpZXIsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdGluYXRpb24sIGNvbnN0IEZsb2F0UmVj
dCYgc291cmNlLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYpOworCisgICAgdm9pZCBhcHBs
eShHcmFwaGljc0NvbnRleHQmKSBjb25zdCBvdmVycmlkZTsKKworICAgIE9wdGlvbmFsPEZsb2F0
UmVjdD4gbG9jYWxCb3VuZHMoY29uc3QgR3JhcGhpY3NDb250ZXh0JikgY29uc3Qgb3ZlcnJpZGUg
eyByZXR1cm4gbV9kZXN0aW5hdGlvblJlY3Q7IH0KKworICAgIFJlbmRlcmluZ1Jlc291cmNlSWRl
bnRpZmllciBtX3JlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcjsKKyAgICBGbG9hdFJlY3QgbV9k
ZXN0aW5hdGlvblJlY3Q7CisgICAgRmxvYXRSZWN0IG1fc3JjUmVjdDsKKyAgICBJbWFnZVBhaW50
aW5nT3B0aW9ucyBtX29wdGlvbnM7Cit9OworCit0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPgordm9p
ZCBEcmF3SW1hZ2VCdWZmZXI6OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAoreworICAg
IGVuY29kZXIgPDwgbV9yZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXI7CisgICAgZW5jb2RlciA8
PCBtX2Rlc3RpbmF0aW9uUmVjdDsKKyAgICBlbmNvZGVyIDw8IG1fc3JjUmVjdDsKKyAgICBlbmNv
ZGVyIDw8IG1fb3B0aW9uczsKK30KKwordGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4KK09wdGlvbmFs
PFJlZjxEcmF3SW1hZ2VCdWZmZXI+PiBEcmF3SW1hZ2VCdWZmZXI6OmRlY29kZShEZWNvZGVyJiBk
ZWNvZGVyKQoreworICAgIE9wdGlvbmFsPFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcj4gcmVu
ZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyOworICAgIGRlY29kZXIgPj4gcmVuZGVyaW5nUmVzb3Vy
Y2VJZGVudGlmaWVyOworICAgIGlmICghcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKQorICAg
ICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworCisgICAgT3B0aW9uYWw8RmxvYXRSZWN0PiBkZXN0
aW5hdGlvbjsKKyAgICBkZWNvZGVyID4+IGRlc3RpbmF0aW9uOworICAgIGlmICghZGVzdGluYXRp
b24pCisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisKKyAgICBPcHRpb25hbDxGbG9hdFJl
Y3Q+IHNvdXJjZTsKKyAgICBkZWNvZGVyID4+IHNvdXJjZTsKKyAgICBpZiAoIXNvdXJjZSkKKyAg
ICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKworICAgIE9wdGlvbmFsPEltYWdlUGFpbnRpbmdP
cHRpb25zPiBvcHRpb25zOworICAgIGRlY29kZXIgPj4gb3B0aW9uczsKKyAgICBpZiAoIW9wdGlv
bnMpCisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisKKyAgICByZXR1cm4gRHJhd0ltYWdl
QnVmZmVyOjpjcmVhdGUoKnJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciwgKmRlc3RpbmF0aW9u
LCAqc291cmNlLCAqb3B0aW9ucyk7Cit9CisKIGNsYXNzIERyYXdOYXRpdmVJbWFnZSA6IHB1Ymxp
YyBEcmF3aW5nSXRlbSB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFJlZjxEcmF3TmF0aXZlSW1hZ2U+
IGNyZWF0ZShjb25zdCBOYXRpdmVJbWFnZVB0ciYgaW1hZ2UsIGNvbnN0IEZsb2F0U2l6ZSYgaW1h
Z2VTaXplLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1Jl
Y3QsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBvcHRpb25zKQpAQCAtMzA2Niw2ICszMTMy
LDkgQEAgdm9pZCBJdGVtOjplbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QKICAgICBjYXNl
IEl0ZW1UeXBlOjpEcmF3VGlsZWRTY2FsZWRJbWFnZToKICAgICAgICAgZW5jb2RlciA8PCBkb3du
Y2FzdDxEcmF3VGlsZWRTY2FsZWRJbWFnZT4oKnRoaXMpOwogICAgICAgICBicmVhazsKKyAgICBj
YXNlIEl0ZW1UeXBlOjpEcmF3SW1hZ2VCdWZmZXI6CisgICAgICAgIGVuY29kZXIgPDwgZG93bmNh
c3Q8RHJhd0ltYWdlQnVmZmVyPigqdGhpcyk7CisgICAgICAgIGJyZWFrOwogICAgIGNhc2UgSXRl
bVR5cGU6OkRyYXdOYXRpdmVJbWFnZToKICAgICAgICAgZW5jb2RlciA8PCBkb3duY2FzdDxEcmF3
TmF0aXZlSW1hZ2U+KCp0aGlzKTsKICAgICAgICAgYnJlYWs7CkBAIC0zMjYzLDYgKzMzMzIsMTAg
QEAgT3B0aW9uYWw8UmVmPEl0ZW0+PiBJdGVtOjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKICAg
ICAgICAgaWYgKGF1dG8gaXRlbSA9IERyYXdUaWxlZFNjYWxlZEltYWdlOjpkZWNvZGUoZGVjb2Rl
cikpCiAgICAgICAgICAgICByZXR1cm4gc3RhdGljX3JlZmVyZW5jZV9jYXN0PEl0ZW0+KFdURk1v
dmUoKml0ZW0pKTsKICAgICAgICAgYnJlYWs7CisgICAgY2FzZSBJdGVtVHlwZTo6RHJhd0ltYWdl
QnVmZmVyOgorICAgICAgICBpZiAoYXV0byBpdGVtID0gRHJhd0ltYWdlQnVmZmVyOjpkZWNvZGUo
ZGVjb2RlcikpCisgICAgICAgICAgICByZXR1cm4gc3RhdGljX3JlZmVyZW5jZV9jYXN0PEl0ZW0+
KFdURk1vdmUoKml0ZW0pKTsKKyAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBJdGVtVHlwZTo6RHJh
d05hdGl2ZUltYWdlOgogICAgICAgICBpZiAoYXV0byBpdGVtID0gRHJhd05hdGl2ZUltYWdlOjpk
ZWNvZGUoZGVjb2RlcikpCiAgICAgICAgICAgICByZXR1cm4gc3RhdGljX3JlZmVyZW5jZV9jYXN0
PEl0ZW0+KFdURk1vdmUoKml0ZW0pKTsKQEAgLTM0MjUsNiArMzQ5OCw3IEBAIFNQRUNJQUxJWkVf
VFlQRV9UUkFJVFNfRElTUExBWUxJU1RfSVRFTShEcmF3R2x5cGhzKQogU1BFQ0lBTElaRV9UWVBF
X1RSQUlUU19ESVNQTEFZTElTVF9JVEVNKERyYXdJbWFnZSkKIFNQRUNJQUxJWkVfVFlQRV9UUkFJ
VFNfRElTUExBWUxJU1RfSVRFTShEcmF3VGlsZWRJbWFnZSkKIFNQRUNJQUxJWkVfVFlQRV9UUkFJ
VFNfRElTUExBWUxJU1RfSVRFTShEcmF3VGlsZWRTY2FsZWRJbWFnZSkKK1NQRUNJQUxJWkVfVFlQ
RV9UUkFJVFNfRElTUExBWUxJU1RfSVRFTShEcmF3SW1hZ2VCdWZmZXIpCiBTUEVDSUFMSVpFX1RZ
UEVfVFJBSVRTX0RJU1BMQVlMSVNUX0lURU0oRHJhd05hdGl2ZUltYWdlKQogU1BFQ0lBTElaRV9U
WVBFX1RSQUlUU19ESVNQTEFZTElTVF9JVEVNKERyYXdQYXR0ZXJuKQogU1BFQ0lBTElaRV9UWVBF
X1RSQUlUU19ESVNQTEFZTElTVF9JVEVNKERyYXdSZWN0KQpAQCAtMzQ4Nyw2ICszNTYxLDcgQEAg
dGVtcGxhdGU8PiBzdHJ1Y3QgRW51bVRyYWl0czxXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbVR5
cGU+IHsKICAgICBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OkRyYXdJbWFnZSwKICAg
ICBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OkRyYXdUaWxlZEltYWdlLAogICAgIFdl
YkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtVHlwZTo6RHJhd1RpbGVkU2NhbGVkSW1hZ2UsCisgICAg
V2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpEcmF3SW1hZ2VCdWZmZXIsCiAgICAgV2Vi
Q29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpEcmF3TmF0aXZlSW1hZ2UsCiAgICAgV2ViQ29y
ZTo6RGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpEcmF3UGF0dGVybiwKICAgICBXZWJDb3JlOjpEaXNw
bGF5TGlzdDo6SXRlbVR5cGU6OkRyYXdSZWN0LApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0
UmVjb3JkZXIuY3BwCmluZGV4IDFlMWU5MWFhMDg0Yjk2ZTZlYjI2NWMxZjgwZmYyZjhlNTFmZjFm
ZTcuLjZlMGI1MTZkNDRlODRjNDgzYzE5MTRhZTc3YjM1NjRlMmQyNjg1NmYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlz
dFJlY29yZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNw
bGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlci5jcHAKQEAgLTMwLDYgKzMwLDcgQEAKICNpbmNs
dWRlICJEaXNwbGF5TGlzdERyYXdpbmdDb250ZXh0LmgiCiAjaW5jbHVkZSAiRGlzcGxheUxpc3RJ
dGVtcy5oIgogI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dC5oIgorI2luY2x1ZGUgIkltYWdlQnVm
ZmVyLmgiCiAjaW5jbHVkZSAiTG9nZ2luZy5oIgogI2luY2x1ZGUgPHd0Zi9NYXRoRXh0cmFzLmg+
CiAjaW5jbHVkZSA8d3RmL3RleHQvVGV4dFN0cmVhbS5oPgpAQCAtMTY2LDYgKzE2NywxNSBAQCBJ
bWFnZURyYXdSZXN1bHQgUmVjb3JkZXI6OmRyYXdUaWxlZEltYWdlKEltYWdlJiBpbWFnZSwgY29u
c3QgRmxvYXRSZWN0JiBkZXN0aW5hdAogICAgIHJldHVybiBJbWFnZURyYXdSZXN1bHQ6OkRpZFJl
Y29yZDsKIH0KIAorYm9vbCBSZWNvcmRlcjo6ZHJhd0ltYWdlQnVmZmVyKFdlYkNvcmU6OkltYWdl
QnVmZmVyJiBpbWFnZUJ1ZmZlciwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxv
YXRSZWN0JiBzcmNSZWN0LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgb3B0aW9ucykKK3sK
KyAgICBpZiAoIW1fZGVsZWdhdGUgfHwgIW1fZGVsZWdhdGUtPmxvY2tSZW1vdGVJbWFnZUJ1ZmZl
cihpbWFnZUJ1ZmZlcikpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGFwcGVuZEl0ZW1B
bmRVcGRhdGVFeHRlbnQoRHJhd0ltYWdlQnVmZmVyOjpjcmVhdGUoaW1hZ2VCdWZmZXIucmVuZGVy
aW5nUmVzb3VyY2VJZGVudGlmaWVyKCksIGRlc3RSZWN0LCBzcmNSZWN0LCBvcHRpb25zKSk7Cisg
ICAgcmV0dXJuIHRydWU7Cit9CisKIHZvaWQgUmVjb3JkZXI6OmRyYXdOYXRpdmVJbWFnZShjb25z
dCBOYXRpdmVJbWFnZVB0ciYgaW1hZ2UsIGNvbnN0IEZsb2F0U2l6ZSYgaW1hZ2VTaXplLCBjb25z
dCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IElt
YWdlUGFpbnRpbmdPcHRpb25zJiBvcHRpb25zKQogewogICAgIGFwcGVuZEl0ZW1BbmRVcGRhdGVF
eHRlbnQoRHJhd05hdGl2ZUltYWdlOjpjcmVhdGUoaW1hZ2UsIGltYWdlU2l6ZSwgZGVzdFJlY3Qs
IHNyY1JlY3QsIG9wdGlvbnMpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVyLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlci5o
CmluZGV4IDZhMjc3MTg5N2VkMjNlNjkwNTZmYWVhOGY1ZTUzMzk4YTVmOGM4YzkuLmZjMTBmN2Nh
ODFiNzdjY2FmZjkxNTFiZDE2ZGE3NDM2ZjNjODQyZjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVyLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3Bs
YXlMaXN0UmVjb3JkZXIuaApAQCAtNjYsNiArNjYsNyBAQCBwdWJsaWM6CiAgICAgY2xhc3MgRGVs
ZWdhdGUgewogICAgIHB1YmxpYzoKICAgICAgICAgdmlydHVhbCB+RGVsZWdhdGUoKSB7IH0KKyAg
ICAgICAgdmlydHVhbCBib29sIGxvY2tSZW1vdGVJbWFnZUJ1ZmZlcihXZWJDb3JlOjpJbWFnZUJ1
ZmZlciYpIHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgICAgIHZpcnR1YWwgdm9pZCB3aWxsQXBwZW5k
SXRlbShjb25zdCBJdGVtJikgeyB9OwogICAgIH07CiAKQEAgLTEwNSw2ICsxMDYsNyBAQCBwcml2
YXRlOgogICAgIEltYWdlRHJhd1Jlc3VsdCBkcmF3VGlsZWRJbWFnZShJbWFnZSYsIGNvbnN0IEZs
b2F0UmVjdCYgZGVzdGluYXRpb24sIGNvbnN0IEZsb2F0UG9pbnQmIHNvdXJjZSwgY29uc3QgRmxv
YXRTaXplJiB0aWxlU2l6ZSwgY29uc3QgRmxvYXRTaXplJiBzcGFjaW5nLCBjb25zdCBJbWFnZVBh
aW50aW5nT3B0aW9ucyYpIG92ZXJyaWRlOwogICAgIEltYWdlRHJhd1Jlc3VsdCBkcmF3VGlsZWRJ
bWFnZShJbWFnZSYsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdGluYXRpb24sIGNvbnN0IEZsb2F0UmVj
dCYgc291cmNlLCBjb25zdCBGbG9hdFNpemUmIHRpbGVTY2FsZUZhY3RvciwgSW1hZ2U6OlRpbGVS
dWxlIGhSdWxlLCBJbWFnZTo6VGlsZVJ1bGUgdlJ1bGUsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRp
b25zJikgb3ZlcnJpZGU7CiAKKyAgICBib29sIGRyYXdJbWFnZUJ1ZmZlcihXZWJDb3JlOjpJbWFn
ZUJ1ZmZlciYsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdGluYXRpb24sIGNvbnN0IEZsb2F0UmVjdCYg
c291cmNlLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYpIG92ZXJyaWRlOwogICAgIHZvaWQg
ZHJhd05hdGl2ZUltYWdlKGNvbnN0IE5hdGl2ZUltYWdlUHRyJiwgY29uc3QgRmxvYXRTaXplJiBz
ZWxmU2l6ZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNS
ZWN0LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYpIG92ZXJyaWRlOwogICAgIHZvaWQgZHJh
d1BhdHRlcm4oSW1hZ2UmLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJl
Y3QmIHNyY1JlY3QsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYsIGNvbnN0IEZsb2F0UG9pbnQmIHBo
YXNlLCBjb25zdCBGbG9hdFNpemUmIHNwYWNpbmcsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25z
Jikgb3ZlcnJpZGU7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL25pY29zaWEvY2Fpcm8vTmljb3NpYUNhaXJvT3BlcmF0aW9uUmVjb3JkZXIuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS9jYWlyby9OaWNvc2lhQ2Fpcm9P
cGVyYXRpb25SZWNvcmRlci5jcHAKaW5kZXggMzA0ZmFjYmFiMTUyMTc5MWRhYTg2ZGIxNTMxNzUz
ZTM4NjcxMDg0ZC4uYTJjOWUwOTNmYzE0YmE1YzFlODI5YzRiMjRlMTY1NDAwMzdhNDQ1NSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS9jYWlyby9O
aWNvc2lhQ2Fpcm9PcGVyYXRpb25SZWNvcmRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS9jYWlyby9OaWNvc2lhQ2Fpcm9PcGVyYXRpb25SZWNvcmRl
ci5jcHAKQEAgLTU0OSw2ICs1NDksMTIgQEAgSW1hZ2VEcmF3UmVzdWx0IENhaXJvT3BlcmF0aW9u
UmVjb3JkZXI6OmRyYXdUaWxlZEltYWdlKEltYWdlJiBpbWFnZSwgY29uc3QgRmxvYXQKICAgICBy
ZXR1cm4gR3JhcGhpY3NDb250ZXh0SW1wbDo6ZHJhd1RpbGVkSW1hZ2VJbXBsKGdyYXBoaWNzQ29u
dGV4dCgpLCBpbWFnZSwgZGVzdGluYXRpb24sIHNvdXJjZSwgdGlsZVNjYWxlRmFjdG9yLCBoUnVs
ZSwgdlJ1bGUsIGltYWdlUGFpbnRpbmdPcHRpb25zKTsKIH0KIAorYm9vbCBDYWlyb09wZXJhdGlv
blJlY29yZGVyOjpkcmF3SW1hZ2VCdWZmZXIoSW1hZ2VCdWZmZXImLCBjb25zdCBGbG9hdFJlY3Qm
LCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYpCit7CisgICAg
Ly8gRklYTUU6IE5vdCBpbXBsZW1lbnRlZC4KKyAgICByZXR1cm4gZmFsc2U7Cit9CisKIHZvaWQg
Q2Fpcm9PcGVyYXRpb25SZWNvcmRlcjo6ZHJhd05hdGl2ZUltYWdlKGNvbnN0IE5hdGl2ZUltYWdl
UHRyJiBpbWFnZSwgY29uc3QgRmxvYXRTaXplJiBpbWFnZVNpemUsIGNvbnN0IEZsb2F0UmVjdCYg
ZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgSW1hZ2VQYWludGluZ09w
dGlvbnMmIG9wdGlvbnMpCiB7CiAgICAgc3RydWN0IERyYXdOYXRpdmVJbWFnZSBmaW5hbCA6IFBh
aW50aW5nT3BlcmF0aW9uLCBPcGVyYXRpb25EYXRhPFJlZlB0cjxjYWlyb19zdXJmYWNlX3Q+LCBG
bG9hdFJlY3QsIEZsb2F0UmVjdCwgSW1hZ2VQYWludGluZ09wdGlvbnMsIGZsb2F0LCBDYWlybzo6
U2hhZG93U3RhdGU+IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL25pY29zaWEvY2Fpcm8vTmljb3NpYUNhaXJvT3BlcmF0aW9uUmVjb3JkZXIuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvY2Fpcm8vTmljb3NpYUNhaXJvT3Bl
cmF0aW9uUmVjb3JkZXIuaAppbmRleCA1NzJmZjIxNjZmNmU5NzNhNzYzYjY3Y2I2YmI5NmY0M2Yy
NmE4ZDUwLi4zODA5M2Q0MTM1YjRkN2I2NTExYTE2MDg3YWZmMTNmNjAzZWQxM2JhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lhL2NhaXJvL05pY29z
aWFDYWlyb09wZXJhdGlvblJlY29yZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3Mvbmljb3NpYS9jYWlyby9OaWNvc2lhQ2Fpcm9PcGVyYXRpb25SZWNvcmRlci5oCkBA
IC02Nyw2ICs2Nyw4IEBAIHByaXZhdGU6CiAgICAgV2ViQ29yZTo6SW1hZ2VEcmF3UmVzdWx0IGRy
YXdJbWFnZShXZWJDb3JlOjpJbWFnZSYsIGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYsIGNvbnN0
IFdlYkNvcmU6OkZsb2F0UmVjdCYsIGNvbnN0IFdlYkNvcmU6OkltYWdlUGFpbnRpbmdPcHRpb25z
Jikgb3ZlcnJpZGU7CiAgICAgV2ViQ29yZTo6SW1hZ2VEcmF3UmVzdWx0IGRyYXdUaWxlZEltYWdl
KFdlYkNvcmU6OkltYWdlJiwgY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0JiwgY29uc3QgV2ViQ29y
ZTo6RmxvYXRQb2ludCYsIGNvbnN0IFdlYkNvcmU6OkZsb2F0U2l6ZSYsIGNvbnN0IFdlYkNvcmU6
OkZsb2F0U2l6ZSYsIGNvbnN0IFdlYkNvcmU6OkltYWdlUGFpbnRpbmdPcHRpb25zJikgb3ZlcnJp
ZGU7CiAgICAgV2ViQ29yZTo6SW1hZ2VEcmF3UmVzdWx0IGRyYXdUaWxlZEltYWdlKFdlYkNvcmU6
OkltYWdlJiwgY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0JiwgY29uc3QgV2ViQ29yZTo6RmxvYXRS
ZWN0JiwgY29uc3QgV2ViQ29yZTo6RmxvYXRTaXplJiwgV2ViQ29yZTo6SW1hZ2U6OlRpbGVSdWxl
LCBXZWJDb3JlOjpJbWFnZTo6VGlsZVJ1bGUsIGNvbnN0IFdlYkNvcmU6OkltYWdlUGFpbnRpbmdP
cHRpb25zJikgb3ZlcnJpZGU7CisKKyAgICBib29sIGRyYXdJbWFnZUJ1ZmZlcihXZWJDb3JlOjpJ
bWFnZUJ1ZmZlciYsIGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYgZGVzdGluYXRpb24sIGNvbnN0
IFdlYkNvcmU6OkZsb2F0UmVjdCYgc291cmNlLCBjb25zdCBXZWJDb3JlOjpJbWFnZVBhaW50aW5n
T3B0aW9ucyYpIG92ZXJyaWRlOwogICAgIHZvaWQgZHJhd05hdGl2ZUltYWdlKGNvbnN0IFdlYkNv
cmU6Ok5hdGl2ZUltYWdlUHRyJiwgY29uc3QgV2ViQ29yZTo6RmxvYXRTaXplJiwgY29uc3QgV2Vi
Q29yZTo6RmxvYXRSZWN0JiwgY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0JiwgY29uc3QgV2ViQ29y
ZTo6SW1hZ2VQYWludGluZ09wdGlvbnMmKSBvdmVycmlkZTsKICAgICB2b2lkIGRyYXdQYXR0ZXJu
KFdlYkNvcmU6OkltYWdlJiwgY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0JiwgY29uc3QgV2ViQ29y
ZTo6RmxvYXRSZWN0JiwgY29uc3QgV2ViQ29yZTo6QWZmaW5lVHJhbnNmb3JtJiwgY29uc3QgV2Vi
Q29yZTo6RmxvYXRQb2ludCYsIGNvbnN0IFdlYkNvcmU6OkZsb2F0U2l6ZSYsIGNvbnN0IFdlYkNv
cmU6OkltYWdlUGFpbnRpbmdPcHRpb25zJikgb3ZlcnJpZGU7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVJbWFnZUJ1ZmZlci5oIGIvU291cmNl
L1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUltYWdlQnVmZmVyLmgKaW5kZXggNTE4
ODg0YzhkMzg4NmQwZDQwZTA4ZDJmYzUxMmRlYzQzMTUzOGJhYS4uY2VkMWNhOTBmY2I4ZTJhODdm
ZTQzNGJiYjk3N2FlYTUwNmU5YzY1YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9j
ZXNzL2dyYXBoaWNzL1JlbW90ZUltYWdlQnVmZmVyLmgKKysrIGIvU291cmNlL1dlYktpdC9HUFVQ
cm9jZXNzL2dyYXBoaWNzL1JlbW90ZUltYWdlQnVmZmVyLmgKQEAgLTc4LDMxICs3OCwxMiBAQCBw
cml2YXRlOgogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgIH0KIAotICAgICAgICBp
ZiAoaXRlbS50eXBlKCkgPT0gV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpQYWludEZy
YW1lRm9yTWVkaWEpIHsKLSAgICAgICAgICAgIGFwcGx5KHN0YXRpY19jYXN0PFdlYkNvcmU6OkRp
c3BsYXlMaXN0OjpQYWludEZyYW1lRm9yTWVkaWEmPihpdGVtKSwgY29udGV4dCk7CisgICAgICAg
IGlmIChtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmQuYXBwbHlSZXNvdXJjZUl0ZW0oaXRlbSwgY29u
dGV4dCkpCiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgfQogCi0gICAgICAgIHJl
dHVybiBmYWxzZTsKKyAgICAgICAgcmV0dXJuIG1fcmVtb3RlUmVuZGVyaW5nQmFja2VuZC5hcHBs
eU1lZGlhSXRlbShpdGVtLCBjb250ZXh0KTsKICAgICB9CiAKLSAgICB2b2lkIGFwcGx5KFdlYkNv
cmU6OkRpc3BsYXlMaXN0OjpQYWludEZyYW1lRm9yTWVkaWEmIGl0ZW0sIFdlYkNvcmU6OkdyYXBo
aWNzQ29udGV4dCYgY29udGV4dCkKLSAgICB7Ci0gICAgICAgIGF1dG8gcHJvY2VzcyA9IG1fcmVt
b3RlUmVuZGVyaW5nQmFja2VuZC5ncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzKCk7Ci0gICAgICAg
IGlmICghcHJvY2VzcykKLSAgICAgICAgICAgIHJldHVybjsKLQotICAgICAgICBhdXRvIHBsYXll
clByb3h5ID0gcHJvY2Vzcy0+cmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHkoKS5nZXRQcm94
eShpdGVtLmlkZW50aWZpZXIoKSk7Ci0gICAgICAgIGlmICghcGxheWVyUHJveHkpCi0gICAgICAg
ICAgICByZXR1cm47Ci0KLSAgICAgICAgYXV0byBwbGF5ZXIgPSBwbGF5ZXJQcm94eS0+bWVkaWFQ
bGF5ZXIoKTsKLSAgICAgICAgaWYgKCFwbGF5ZXIpCi0gICAgICAgICAgICByZXR1cm47Ci0KLSAg
ICAgICAgY29udGV4dC5wYWludEZyYW1lRm9yTWVkaWEoKnBsYXllciwgaXRlbS5kZXN0aW5hdGlv
bigpKTsKLSAgICB9Ci0gICAgCiAgICAgUmVtb3RlUmVuZGVyaW5nQmFja2VuZCYgbV9yZW1vdGVS
ZW5kZXJpbmdCYWNrZW5kOwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9j
ZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQuY3BwIGIvU291cmNlL1dlYktpdC9H
UFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQuY3BwCmluZGV4IDg0YjVm
ZDY2MTZiMWVmYTkzMTAzNzQ5MTE3YzA4OTg0NjcyYWZlM2QuLjE1MzJkZTQ1NDk0NDI1MWRmY2U5
NDY2MGRkNTg1NWZmMzYyNjRkZDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vz
cy9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5jcHAKQEAgLTcyLDYg
KzcyLDQ0IEBAIHVpbnQ2NF90IFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6Om1lc3NhZ2VTZW5kZXJE
ZXN0aW5hdGlvbklEKCkgY29uc3QKICAgICByZXR1cm4gbV9yZW5kZXJpbmdCYWNrZW5kSWRlbnRp
Zmllci50b1VJbnQ2NCgpOwogfQogCitib29sIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OmFwcGx5
UmVzb3VyY2VJdGVtKGNvbnN0IERpc3BsYXlMaXN0OjpJdGVtJiBpdGVtLCBHcmFwaGljc0NvbnRl
eHQmIGNvbnRleHQpCit7CisgICAgaWYgKGl0ZW0udHlwZSgpID09IERpc3BsYXlMaXN0OjpJdGVt
VHlwZTo6RHJhd0ltYWdlQnVmZmVyKSB7CisgICAgICAgIGF1dG8mIGRyYXdJdGVtID0gc3RhdGlj
X2Nhc3Q8Y29uc3QgRGlzcGxheUxpc3Q6OkRyYXdJbWFnZUJ1ZmZlciY+KGl0ZW0pOworICAgICAg
ICBhdXRvIGltYWdlQnVmZmVyID0gbV9yZW1vdGVSZXNvdXJjZUNhY2hlLmNhY2hlZEltYWdlQnVm
ZmVyKGRyYXdJdGVtLnJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcigpKTsKKyAgICAgICAgaWYg
KCFpbWFnZUJ1ZmZlcikKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgICAgICBpbWFn
ZUJ1ZmZlci0+ZHJhdyhjb250ZXh0LCBkcmF3SXRlbS5kZXN0aW5hdGlvblJlY3QoKSwgZHJhd0l0
ZW0uc291cmNlKCksIGRyYXdJdGVtLm9wdGlvbnMoKSk7CisgICAgICAgIHJldHVybiB0cnVlOwor
ICAgIH0KKworICAgIHJldHVybiBmYWxzZTsKK30KKworYm9vbCBSZW1vdGVSZW5kZXJpbmdCYWNr
ZW5kOjphcHBseU1lZGlhSXRlbShjb25zdCBEaXNwbGF5TGlzdDo6SXRlbSYgaXRlbSwgR3JhcGhp
Y3NDb250ZXh0JiBjb250ZXh0KQoreworICAgIGlmIChpdGVtLnR5cGUoKSAhPSBXZWJDb3JlOjpE
aXNwbGF5TGlzdDo6SXRlbVR5cGU6OlBhaW50RnJhbWVGb3JNZWRpYSkKKyAgICAgICAgcmV0dXJu
IGZhbHNlOworCisgICAgYXV0byYgbWVkaWFJdGVtID0gc3RhdGljX2Nhc3Q8Y29uc3QgRGlzcGxh
eUxpc3Q6OlBhaW50RnJhbWVGb3JNZWRpYSY+KGl0ZW0pOworCisgICAgYXV0byBwcm9jZXNzID0g
Z3B1Q29ubmVjdGlvblRvV2ViUHJvY2VzcygpOworICAgIGlmICghcHJvY2VzcykKKyAgICAgICAg
cmV0dXJuIGZhbHNlOworCisgICAgYXV0byBwbGF5ZXJQcm94eSA9IHByb2Nlc3MtPnJlbW90ZU1l
ZGlhUGxheWVyTWFuYWdlclByb3h5KCkuZ2V0UHJveHkobWVkaWFJdGVtLmlkZW50aWZpZXIoKSk7
CisgICAgaWYgKCFwbGF5ZXJQcm94eSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgYXV0
byBwbGF5ZXIgPSBwbGF5ZXJQcm94eS0+bWVkaWFQbGF5ZXIoKTsKKyAgICBpZiAoIXBsYXllcikK
KyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgY29udGV4dC5wYWludEZyYW1lRm9yTWVkaWEo
KnBsYXllciwgbWVkaWFJdGVtLmRlc3RpbmF0aW9uKCkpOworICAgIHJldHVybiB0cnVlOworfQor
CiB2b2lkIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OmltYWdlQnVmZmVyQmFja2VuZFdhc0NyZWF0
ZWQoY29uc3QgRmxvYXRTaXplJiBsb2dpY2FsU2l6ZSwgY29uc3QgSW50U2l6ZSYgYmFja2VuZFNp
emUsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwgQ29sb3JTcGFjZSBjb2xvclNwYWNlLCBJbWFnZUJ1
ZmZlckJhY2tlbmRIYW5kbGUgaGFuZGxlLCBSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgcmVu
ZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKQogewogICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZVJl
bmRlcmluZ0JhY2tlbmRQcm94eTo6SW1hZ2VCdWZmZXJCYWNrZW5kV2FzQ3JlYXRlZChsb2dpY2Fs
U2l6ZSwgYmFja2VuZFNpemUsIHJlc29sdXRpb25TY2FsZSwgY29sb3JTcGFjZSwgV1RGTW92ZSho
YW5kbGUpLCByZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpLCBtX3JlbmRlcmluZ0JhY2tlbmRJ
ZGVudGlmaWVyKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGlj
cy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kLmggYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3Jh
cGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5oCmluZGV4IDUyN2RhYWI2ZjYwZTBlMjBmYTBj
ZDRkMzBhYjgwNDI5Nzg5NDIzOTguLmQwYWFlM2NjMjA0NTA2OTZhODlmOTVhNWYwNjdkZmVmYzZl
M2VlZmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1v
dGVSZW5kZXJpbmdCYWNrZW5kLmgKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBo
aWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQuaApAQCAtNDIsNiArNDIsNyBAQAogbmFtZXNwYWNl
IFdlYkNvcmUgewogbmFtZXNwYWNlIERpc3BsYXlMaXN0IHsKIGNsYXNzIERpc3BsYXlMaXN0Owor
Y2xhc3MgSXRlbTsKIH0KIGNsYXNzIEZsb2F0U2l6ZTsKIGVudW0gY2xhc3MgQ29sb3JTcGFjZSA6
IHVpbnQ4X3Q7CkBAIC02MSw2ICs2MiwxMCBAQCBwdWJsaWM6CiAKICAgICBHUFVDb25uZWN0aW9u
VG9XZWJQcm9jZXNzKiBncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzKCkgY29uc3Q7CiAKKyAgICAv
LyBSZW5kZXJpbmcgb3BlcmF0aW9ucy4KKyAgICBib29sIGFwcGx5UmVzb3VyY2VJdGVtKGNvbnN0
IFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtJiwgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0Jik7
CisgICAgYm9vbCBhcHBseU1lZGlhSXRlbShjb25zdCBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRl
bSYsIFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dCYpOworCiAgICAgLy8gTWVzc2FnZXMgdG8gYmUg
c2VudC4KICAgICB2b2lkIGltYWdlQnVmZmVyQmFja2VuZFdhc0NyZWF0ZWQoY29uc3QgV2ViQ29y
ZTo6RmxvYXRTaXplJiBsb2dpY2FsU2l6ZSwgY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYgYmFja2Vu
ZFNpemUsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwgV2ViQ29yZTo6Q29sb3JTcGFjZSwgSW1hZ2VC
dWZmZXJCYWNrZW5kSGFuZGxlLCBXZWJDb3JlOjpSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIp
OwogICAgIHZvaWQgZmx1c2hEaXNwbGF5TGlzdFdhc0NvbW1pdHRlZChEaXNwbGF5TGlzdEZsdXNo
SWRlbnRpZmllciwgV2ViQ29yZTo6UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZXNvdXJjZUNh
Y2hlLmNwcCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZXNvdXJj
ZUNhY2hlLmNwcAppbmRleCA1MTRhMTRlNzViNmZhMWVkMjUwZDhlZGJkOTBkM2YxNTVlMmI5MTU0
Li4yMjgyMDY4NjY0ZjcyMDA2YTVlZjY0NDdiMTExNzM0ZGUzM2YxNTZlIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVzb3VyY2VDYWNoZS5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlc291cmNlQ2Fj
aGUuY3BwCkBAIC0zNyw3ICszNyw3IEBAIHZvaWQgUmVtb3RlUmVzb3VyY2VDYWNoZTo6Y2FjaGVJ
bWFnZUJ1ZmZlcihSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgcmVuZGVyaW5nCiAgICAgQVNT
RVJUX1VOVVNFRChhZGRSZXN1bHQsIGFkZFJlc3VsdC5pc05ld0VudHJ5KTsKIH0KIAotV2ViQ29y
ZTo6SW1hZ2VCdWZmZXIqIFJlbW90ZVJlc291cmNlQ2FjaGU6OmNhY2hlZEltYWdlQnVmZmVyKFJl
bmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciByZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpCitJ
bWFnZUJ1ZmZlciogUmVtb3RlUmVzb3VyY2VDYWNoZTo6Y2FjaGVkSW1hZ2VCdWZmZXIoUmVuZGVy
aW5nUmVzb3VyY2VJZGVudGlmaWVyIHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcikKIHsKICAg
ICByZXR1cm4gbV9pbWFnZUJ1ZmZlcnMuZ2V0KHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcik7
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1Jl
bW90ZUltYWdlQnVmZmVyUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3Jh
cGhpY3MvUmVtb3RlSW1hZ2VCdWZmZXJQcm94eS5oCmluZGV4IDE0OTc0NzQyZWQ3N2U2MGEzNThj
NTZlYTczNWRkODRjOTk0NzQwZTkuLjZiYTg1MDZjZmQyYTBjZmUyYTQ2MDY1OGNhMWMxNTU3NDEw
OGQ2ZDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3Mv
UmVtb3RlSW1hZ2VCdWZmZXJQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9H
UFUvZ3JhcGhpY3MvUmVtb3RlSW1hZ2VCdWZmZXJQcm94eS5oCkBAIC0xNDUsNiArMTQ1LDcgQEAg
cHJvdGVjdGVkOgogCiAgICAgICAgIFRyYWNlU2NvcGUgdHJhY2luZ1Njb3BlKEZsdXNoUmVtb3Rl
SW1hZ2VCdWZmZXJTdGFydCwgRmx1c2hSZW1vdGVJbWFnZUJ1ZmZlckVuZCwgMSk7CiAgICAgICAg
IG1fc2VudEZsdXNoSWRlbnRpZmllciA9IG1fcmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5LT5m
bHVzaERpc3BsYXlMaXN0QW5kQ29tbWl0KGRpc3BsYXlMaXN0LCBtX3JlbmRlcmluZ1Jlc291cmNl
SWRlbnRpZmllcik7CisgICAgICAgIG1fcmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5LT5yZW1v
dGVSZXNvdXJjZUNhY2hlUHJveHkoKS51bmxvY2tSZW1vdGVSZXNvdXJjZXNGb3JSZW1vdGVDbGll
bnQobV9yZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpOwogICAgICAgICBkaXNwbGF5TGlzdC5j
bGVhcigpOwogICAgIH0KIApAQCAtMTU1LDYgKzE1NiwxNCBAQCBwcm90ZWN0ZWQ6CiAKICAgICAg
ICAgVHJhY2VTY29wZSB0cmFjaW5nU2NvcGUoRmx1c2hSZW1vdGVJbWFnZUJ1ZmZlclN0YXJ0LCBG
bHVzaFJlbW90ZUltYWdlQnVmZmVyRW5kKTsKICAgICAgICAgbV9yZW1vdGVSZW5kZXJpbmdCYWNr
ZW5kUHJveHktPmZsdXNoRGlzcGxheUxpc3QoZGlzcGxheUxpc3QsIG1fcmVuZGVyaW5nUmVzb3Vy
Y2VJZGVudGlmaWVyKTsKKyAgICAgICAgbV9yZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHktPnJl
bW90ZVJlc291cmNlQ2FjaGVQcm94eSgpLnVubG9ja1JlbW90ZVJlc291cmNlc0ZvclJlbW90ZUNs
aWVudChtX3JlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcik7CisgICAgfQorCisgICAgYm9vbCBs
b2NrUmVtb3RlSW1hZ2VCdWZmZXIoV2ViQ29yZTo6SW1hZ2VCdWZmZXImIGltYWdlQnVmZmVyKSBv
dmVycmlkZQorICAgIHsKKyAgICAgICAgaWYgKCFtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94
eSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgcmV0dXJuIG1fcmVtb3RlUmVu
ZGVyaW5nQmFja2VuZFByb3h5LT5yZW1vdGVSZXNvdXJjZUNhY2hlUHJveHkoKS5sb2NrUmVtb3Rl
SW1hZ2VCdWZmZXJGb3JSZW1vdGVDbGllbnQoaW1hZ2VCdWZmZXIsIG1fcmVuZGVyaW5nUmVzb3Vy
Y2VJZGVudGlmaWVyKTsKICAgICB9CiAKICAgICB2b2lkIHdpbGxBcHBlbmRJdGVtKGNvbnN0IFdl
YkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtJikgb3ZlcnJpZGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5LmNw
cCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlUmVzb3VyY2VD
YWNoZVByb3h5LmNwcAppbmRleCAxZWQ3ZTZiZGQxYmZjNDNjYjY4N2EzMzc1OGEwZjE1MWYyZmZh
NTBlLi4zZjVhNzNiZWMzYmYyODZlNTI5ODFkZTQ4YjkwYzMxZDAxOWQ4YzNkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZVJlc291cmNlQ2Fj
aGVQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9S
ZW1vdGVSZXNvdXJjZUNhY2hlUHJveHkuY3BwCkBAIC01Myw3ICs1Myw3NSBAQCB2b2lkIFJlbW90
ZVJlc291cmNlQ2FjaGVQcm94eTo6cmVsZWFzZUltYWdlQnVmZmVyKFJlbmRlcmluZ1Jlc291cmNl
SWRlbnRpZmllciByZQogewogICAgIGJvb2wgZm91bmQgPSBtX2ltYWdlQnVmZmVycy5yZW1vdmUo
cmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKTsKICAgICBBU1NFUlRfVU5VU0VEKGZvdW5kLCBm
b3VuZCk7Ci0gICAgbV9yZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkucmVsZWFzZVJlbW90ZVJl
c291cmNlKHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcik7CisKKyAgICAvLyBUZWxsIHRoZSBH
UFUgcHJvY2VzcyB0byByZW1vdmUgdGhpcyByZXNvdXJjZSB1bmxlc3MgaXQncyBwZW5kaW5nIHJl
cGxheWluZyBiYWNrLgorICAgIHJlbGVhc2VSZW1vdGVSZXNvdXJjZShyZW5kZXJpbmdSZXNvdXJj
ZUlkZW50aWZpZXIpOworfQorCitib29sIFJlbW90ZVJlc291cmNlQ2FjaGVQcm94eTo6bG9ja1Jl
bW90ZUltYWdlQnVmZmVyRm9yUmVtb3RlQ2xpZW50KEltYWdlQnVmZmVyJiBpbWFnZUJ1ZmZlciwg
UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyIHJlbW90ZUNsaWVudElkZW50aWZpZXIpCit7Cisg
ICAgaWYgKCFpbWFnZUJ1ZmZlci5yZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIoKSkKKyAgICAg
ICAgcmV0dXJuIGZhbHNlOworCisgICAgaWYgKGNhY2hlZEltYWdlQnVmZmVyKGltYWdlQnVmZmVy
LnJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcigpKSAhPSAmaW1hZ2VCdWZmZXIpIHsKKyAgICAg
ICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisK
KyAgICBsb2NrUmVtb3RlUmVzb3VyY2VGb3JSZW1vdGVDbGllbnQoaW1hZ2VCdWZmZXIucmVuZGVy
aW5nUmVzb3VyY2VJZGVudGlmaWVyKCksIHJlbW90ZUNsaWVudElkZW50aWZpZXIpOworICAgIHJl
dHVybiB0cnVlOworfQorCit2b2lkIFJlbW90ZVJlc291cmNlQ2FjaGVQcm94eTo6bG9ja1JlbW90
ZVJlc291cmNlRm9yUmVtb3RlQ2xpZW50KFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciByZW5k
ZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIsIFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciByZW1v
dGVDbGllbnRJZGVudGlmaWVyKQoreworICAgIC8vIEFkZCB0aGUgInJlc291cmNlIC0+IGNsaWVu
dCIgZGVwZW5kZW5jeSBpbiBtX2xvY2tlZFJlbW90ZVJlc291cmNlRm9yUmVtb3RlQ2xpZW50cy4K
KyAgICBhdXRvJiBjbGllbnRzID0gbV9sb2NrZWRSZW1vdGVSZXNvdXJjZUZvclJlbW90ZUNsaWVu
dHMuZW5zdXJlKHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciwgWyZdIHsKKyAgICAgICAgcmV0
dXJuIFJlbW90ZUNsaWVudHNIYXNoU2V0KCk7CisgICAgfSkuaXRlcmF0b3ItPnZhbHVlOworCisg
ICAgY2xpZW50cy5hZGQocmVtb3RlQ2xpZW50SWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3Rl
UmVzb3VyY2VDYWNoZVByb3h5OjpyZWxlYXNlUmVtb3RlUmVzb3VyY2UoUmVuZGVyaW5nUmVzb3Vy
Y2VJZGVudGlmaWVyIHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcikKK3sKKyAgICBBU1NFUlQo
IW1fcGVuZGluZ1VubG9ja1JlbW90ZVJlc291cmNlRm9yUmVtb3RlQ2xpZW50cy5jb250YWlucyhy
ZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpKTsKKworICAgIC8vIElmIHdlIGhhdmUgcmVjb3Jk
ZWQgcmVzb3VyY2UgLT4gY2xpZW50IGRlcGVuZGVuY3kgYmVmb3JlIGluIG1fbG9ja2VkUmVtb3Rl
UmVzb3VyY2VGb3JSZW1vdGVDbGllbnRzLCBtb3ZlIHRoaXMKKyAgICAvLyBkZXBlbmRlbmN5IHRv
IG1fcGVuZGluZ1VubG9ja1JlbW90ZVJlc291cmNlRm9yUmVtb3RlQ2xpZW50cy4gT3RoZXJ3aXNl
IHJlbW92ZSB0aGUgcmVzb3VyY2UgaW4gdGhlIEdQVSBQcm9jZXNzLgorICAgIGlmIChtX2xvY2tl
ZFJlbW90ZVJlc291cmNlRm9yUmVtb3RlQ2xpZW50cy5jb250YWlucyhyZW5kZXJpbmdSZXNvdXJj
ZUlkZW50aWZpZXIpKQorICAgICAgICBtX3BlbmRpbmdVbmxvY2tSZW1vdGVSZXNvdXJjZUZvclJl
bW90ZUNsaWVudHMuYWRkKHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciwgbV9sb2NrZWRSZW1v
dGVSZXNvdXJjZUZvclJlbW90ZUNsaWVudHMudGFrZShyZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZp
ZXIpKTsKKyAgICBlbHNlCisgICAgICAgIG1fcmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5LnJl
bGVhc2VSZW1vdGVSZXNvdXJjZShyZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpOworfQorCit2
b2lkIFJlbW90ZVJlc291cmNlQ2FjaGVQcm94eTo6dW5sb2NrUmVtb3RlUmVzb3VyY2VzRm9yUmVt
b3RlQ2xpZW50KFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciByZW1vdGVDbGllbnRJZGVudGlm
aWVyKQoreworICAgIGF1dG8gcmVtb3ZlUmVtb3RlQ2xpZW50ID0gWyZdKFJlbW90ZVJlc291cmNl
Q2xpZW50c0hhc2hNYXAmIHJlbW90ZVJlc291cmNlRm9yUmVtb3RlQ2xpZW50cywgUmVuZGVyaW5n
UmVzb3VyY2VJZGVudGlmaWVyIHJlbW90ZUNsaWVudElkZW50aWZpZXIpIHsKKyAgICAgICAgVmVj
dG9yPFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcj4gcmVtb3RlUmVzb3VyY2VDbGllbnRzVG9C
ZVJlbW92ZWQ7CisKKyAgICAgICAgLy8gUmVtb3ZlIGFsbCB0aGUgcmVzb3VyY2UgLT4gY2xpZW50
IGRlcGVuZGVuY2llcyBmcm9tIHJlbW90ZVJlc291cmNlQ2xpZW50c0hhc2hNYXAuCisgICAgICAg
IGZvciAoYXV0byYgcGFpciA6IHJlbW90ZVJlc291cmNlRm9yUmVtb3RlQ2xpZW50cykgeworICAg
ICAgICAgICAgcGFpci52YWx1ZS5yZW1vdmUocmVtb3RlQ2xpZW50SWRlbnRpZmllcik7CisgICAg
ICAgICAgICBpZiAocGFpci52YWx1ZS5pc0VtcHR5KCkpCisgICAgICAgICAgICAgICAgcmVtb3Rl
UmVzb3VyY2VDbGllbnRzVG9CZVJlbW92ZWQuYXBwZW5kKHBhaXIua2V5KTsKKyAgICAgICAgfQor
CisgICAgICAgIC8vIFJldHVybiBhIGxpc3Qgb2YgdGhlIHVucmVmZXJlbmNlZCByZXNvdXJjZXMu
CisgICAgICAgIHJldHVybiByZW1vdGVSZXNvdXJjZUNsaWVudHNUb0JlUmVtb3ZlZDsKKyAgICB9
OworCisgICAgLy8gUmVtb3ZlIGFsbCB0aGUgcmVzb3VyY2UgLT4gY2xpZW50IGRlcGVuZGVuY2ll
cyBmcm9tIG1fbG9ja2VkUmVtb3RlUmVzb3VyY2VGb3JSZW1vdGVDbGllbnRzLgorICAgIGZvciAo
YXV0byByZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgOiByZW1vdmVSZW1vdGVDbGllbnQobV9s
b2NrZWRSZW1vdGVSZXNvdXJjZUZvclJlbW90ZUNsaWVudHMsIHJlbW90ZUNsaWVudElkZW50aWZp
ZXIpKQorICAgICAgICBtX2xvY2tlZFJlbW90ZVJlc291cmNlRm9yUmVtb3RlQ2xpZW50cy5yZW1v
dmUocmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKTsKKworICAgIC8vIFJlbW92ZSBhbGwgdGhl
IHJlc291cmNlIC0+IGNsaWVudCBkZXBlbmRlbmNpZXMgZnJvbSBtX3BlbmRpbmdVbmxvY2tSZW1v
dGVSZXNvdXJjZUZvclJlbW90ZUNsaWVudHMuCisgICAgZm9yIChhdXRvIHJlbmRlcmluZ1Jlc291
cmNlSWRlbnRpZmllciA6IHJlbW92ZVJlbW90ZUNsaWVudChtX3BlbmRpbmdVbmxvY2tSZW1vdGVS
ZXNvdXJjZUZvclJlbW90ZUNsaWVudHMsIHJlbW90ZUNsaWVudElkZW50aWZpZXIpKSB7CisgICAg
ICAgIC8vIFJlbW92ZSB0aGUgdW5yZWZlcmVuY2VkIHJlc291cmNlcyBmcm9tIG1fcmVtb3RlUmVz
b3VyY2VDbGllbnRzUGVuZGluZ1JlbGVhc2VIYXNoTWFwLgorICAgICAgICBtX3BlbmRpbmdVbmxv
Y2tSZW1vdGVSZXNvdXJjZUZvclJlbW90ZUNsaWVudHMucmVtb3ZlKHJlbmRlcmluZ1Jlc291cmNl
SWRlbnRpZmllcik7CisKKyAgICAgICAgLy8gVGVsbCB0aGUgR1BVIHByb2Nlc3MgdG8gcmVtb3Zl
IHRoaXMgcmVzb3VyY2UuCisgICAgICAgIG1fcmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5LnJl
bGVhc2VSZW1vdGVSZXNvdXJjZShyZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpOworICAgIH0K
IH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZVJlc291cmNlQ2FjaGVQcm94eS5oIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVSZXNvdXJjZUNhY2hlUHJveHku
aAppbmRleCAyMzk2OGY2YWZhZGYzY2NmOTdhYjkyMTNiMzExYmRmYTA0Mzg2MGZmLi5lODZiZTdk
ZWIwOTJiYThmMTNiN2RiNTVhZWU4NzgwMmM3OGRkNDhjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZVJlc291cmNlQ2FjaGVQcm94eS5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlUmVzb3VyY2VD
YWNoZVByb3h5LmgKQEAgLTQ2LDEwICs0NiwyMCBAQCBwdWJsaWM6CiAgICAgV2ViQ29yZTo6SW1h
Z2VCdWZmZXIqIGNhY2hlZEltYWdlQnVmZmVyKFdlYkNvcmU6OlJlbmRlcmluZ1Jlc291cmNlSWRl
bnRpZmllcik7CiAgICAgdm9pZCByZWxlYXNlSW1hZ2VCdWZmZXIoV2ViQ29yZTo6UmVuZGVyaW5n
UmVzb3VyY2VJZGVudGlmaWVyKTsKIAorICAgIGJvb2wgbG9ja1JlbW90ZUltYWdlQnVmZmVyRm9y
UmVtb3RlQ2xpZW50KFdlYkNvcmU6OkltYWdlQnVmZmVyJiwgV2ViQ29yZTo6UmVuZGVyaW5nUmVz
b3VyY2VJZGVudGlmaWVyIHJlbW90ZUNsaWVudElkZW50aWZpZXIpOworICAgIHZvaWQgdW5sb2Nr
UmVtb3RlUmVzb3VyY2VzRm9yUmVtb3RlQ2xpZW50KFdlYkNvcmU6OlJlbmRlcmluZ1Jlc291cmNl
SWRlbnRpZmllciByZW1vdGVDbGllbnRJZGVudGlmaWVyKTsKKwogcHJpdmF0ZToKKyAgICB1c2lu
ZyBSZW1vdGVDbGllbnRzSGFzaFNldCA9IEhhc2hTZXQ8V2ViQ29yZTo6UmVuZGVyaW5nUmVzb3Vy
Y2VJZGVudGlmaWVyPjsKKyAgICB1c2luZyBSZW1vdGVSZXNvdXJjZUNsaWVudHNIYXNoTWFwID0g
SGFzaE1hcDxXZWJDb3JlOjpSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIsIFJlbW90ZUNsaWVu
dHNIYXNoU2V0PjsKICAgICB1c2luZyBSZW1vdGVJbWFnZUJ1ZmZlclByb3h5SGFzaE1hcCA9IEhh
c2hNYXA8V2ViQ29yZTo6UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyLCBXZWJDb3JlOjpJbWFn
ZUJ1ZmZlcio+OwotICAgIAorCisgICAgdm9pZCBsb2NrUmVtb3RlUmVzb3VyY2VGb3JSZW1vdGVD
bGllbnQoV2ViQ29yZTo6UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyLCBXZWJDb3JlOjpSZW5k
ZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgcmVtb3RlQ2xpZW50SWRlbnRpZmllcik7CisgICAgdm9p
ZCByZWxlYXNlUmVtb3RlUmVzb3VyY2UoV2ViQ29yZTo6UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlm
aWVyKTsKKwogICAgIFJlbW90ZUltYWdlQnVmZmVyUHJveHlIYXNoTWFwIG1faW1hZ2VCdWZmZXJz
OworICAgIFJlbW90ZVJlc291cmNlQ2xpZW50c0hhc2hNYXAgbV9sb2NrZWRSZW1vdGVSZXNvdXJj
ZUZvclJlbW90ZUNsaWVudHM7CisgICAgUmVtb3RlUmVzb3VyY2VDbGllbnRzSGFzaE1hcCBtX3Bl
bmRpbmdVbmxvY2tSZW1vdGVSZXNvdXJjZUZvclJlbW90ZUNsaWVudHM7CiAgICAgUmVtb3RlUmVu
ZGVyaW5nQmFja2VuZFByb3h5JiBtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eTsKIH07CiAK
</data>

          </attachment>
      

    </bug>

</bugzilla>