<?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>220476</bug_id>
          
          <creation_ts>2021-01-08 12:52:27 -0800</creation_ts>
          <short_desc>[GPUProcess] Move DOM / Canvas rendering off the main thread in the GPUProcess</short_desc>
          <delta_ts>2021-03-11 08:55:38 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKit2</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=223033</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>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Chris Dumez">cdumez</reporter>
          <assigned_to name="Chris Dumez">cdumez</assigned_to>
          <cc>benjamin</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>ggaren</cc>
    
    <cc>glenn</cc>
    
    <cc>jer.noble</cc>
    
    <cc>philipj</cc>
    
    <cc>sergio</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>thorton</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>wenson_hsieh</cc>
    
    <cc>youennf</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1718404</commentid>
    <comment_count>0</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-01-08 12:52:27 -0800</bug_when>
    <thetext>Move DOM / Canvas rendering off the main thread in the GPUProcess.

I am still waiting on A/B perf testing from the bots, but local testing seems to show this is likely perf-neutral:

===
* Rendering off the main thread:
146.87 +/- 9%
149.21 +/- 4%

* Rendering on main thread:
148.29 +/- 2%
145.89 +/- 8%
===

The good news though is that this architecture would allow us to block the thread on a semaphore more aggressively when waiting for new DisplayList entries. We currently are not able to be as aggressive as we&apos;d like because we&apos;d block the main thread.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1718407</commentid>
    <comment_count>1</comment_count>
      <attachid>417293</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-01-08 13:00:44 -0800</bug_when>
    <thetext>Created attachment 417293
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1718429</commentid>
    <comment_count>2</comment_count>
      <attachid>417293</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2021-01-08 13:53:18 -0800</bug_when>
    <thetext>Comment on attachment 417293
Patch

Does this move all ImageBuffer IPC receiving onto a single thread that&apos;s not the main thread?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1718432</commentid>
    <comment_count>3</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-01-08 13:57:43 -0800</bug_when>
    <thetext>(In reply to Simon Fraser (smfr) from comment #2)
&gt; Comment on attachment 417293 [details]
&gt; Patch
&gt; 
&gt; Does this move all ImageBuffer IPC receiving onto a single thread that&apos;s not
&gt; the main thread?

It moves all *RemoteRenderingBackend* IPC receiving to a *serial workqueue* that&apos;s not the main thread. This means all the following IPC messages:
    CreateImageBuffer(WebCore::FloatSize logicalSize, WebCore::RenderingMode renderingMode, float resolutionScale, WebCore::ColorSpace colorSpace, enum:uint8_t WebCore::PixelFormat pixelFormat, WebCore::RenderingResourceIdentifier renderingResourceIdentifier)
    WakeUpAndApplyDisplayList(struct WebKit::GPUProcessWakeupMessageArguments arguments)
    GetImageData(enum:uint8_t WebCore::AlphaPremultiplication outputFormat, WebCore::IntRect srcRect, WebCore::RenderingResourceIdentifier renderingResourceIdentifier) -&gt; (IPC::ImageDataReference imageData) Synchronous
    GetDataURLForImageBuffer(String mimeType, Optional&lt;double&gt; quality, enum:uint8_t WebCore::PreserveResolution preserveResolution, WebCore::RenderingResourceIdentifier renderingResourceIdentifier) -&gt; (String urlString) Synchronous
    GetDataForImageBuffer(String mimeType, Optional&lt;double&gt; quality, WebCore::RenderingResourceIdentifier renderingResourceIdentifier) -&gt; (Vector&lt;uint8_t&gt; data) Synchronous
    GetBGRADataForImageBuffer(WebCore::RenderingResourceIdentifier renderingResourceIdentifier) -&gt; (Vector&lt;uint8_t&gt; data) Synchronous
    CacheNativeImage(WebKit::ShareableBitmap::Handle handle, WebCore::RenderingResourceIdentifier renderingResourceIdentifier)
    CacheFont(IPC::FontReference font)
    DeleteAllFonts()
    DidCreateSharedDisplayListHandle(WebCore::DisplayList::ItemBufferIdentifier identifier, WebKit::SharedMemory::IPCHandle handle, WebCore::RenderingResourceIdentifier destinationBufferIdentifier)
    ReleaseRemoteResource(WebCore::RenderingResourceIdentifier renderingResourceIdentifier)


I am not sure what you mean my ImageBuffer IPC. I don&apos;t know see a messages.in file corresponding to ImageBuffer specifically.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1718435</commentid>
    <comment_count>4</comment_count>
    <who name="Tim Horton">thorton</who>
    <bug_when>2021-01-08 13:58:57 -0800</bug_when>
    <thetext>
RemoteRenderingBackend is the IPC proxy through which ImageBuffer work flows</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1718510</commentid>
    <comment_count>5</comment_count>
      <attachid>417320</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-01-08 17:07:27 -0800</bug_when>
    <thetext>Created attachment 417320
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1718687</commentid>
    <comment_count>6</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-01-11 08:25:03 -0800</bug_when>
    <thetext>A/B testing came back. The current iteration of the patch seems to be a close to 1% regression on MotionMark unfortunately.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1718875</commentid>
    <comment_count>7</comment_count>
      <attachid>417422</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-01-11 17:28:11 -0800</bug_when>
    <thetext>Created attachment 417422
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1719180</commentid>
    <comment_count>8</comment_count>
      <attachid>417500</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-01-12 17:00:35 -0800</bug_when>
    <thetext>Created attachment 417500
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1719207</commentid>
    <comment_count>9</comment_count>
      <attachid>417508</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-01-12 22:12:16 -0800</bug_when>
    <thetext>Created attachment 417508
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1719439</commentid>
    <comment_count>10</comment_count>
      <attachid>417567</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-01-13 14:42:10 -0800</bug_when>
    <thetext>Created attachment 417567
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1719443</commentid>
    <comment_count>11</comment_count>
      <attachid>417568</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-01-13 14:54:26 -0800</bug_when>
    <thetext>Created attachment 417568
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1719486</commentid>
    <comment_count>12</comment_count>
      <attachid>417581</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-01-13 16:42:06 -0800</bug_when>
    <thetext>Created attachment 417581
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1719892</commentid>
    <comment_count>13</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-01-15 08:55:33 -0800</bug_when>
    <thetext>Ping review?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1719960</commentid>
    <comment_count>14</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-01-15 12:53:21 -0800</bug_when>
    <thetext>&lt;rdar://problem/73260041&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1719963</commentid>
    <comment_count>15</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-01-15 13:01:02 -0800</bug_when>
    <thetext>Tools/Scripts/svn-apply failed to apply attachment 417581 to trunk.
Please resolve the conflicts and upload a new patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1719968</commentid>
    <comment_count>16</comment_count>
      <attachid>417726</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-01-15 13:06:37 -0800</bug_when>
    <thetext>Created attachment 417726
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1719993</commentid>
    <comment_count>17</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-01-15 13:51:57 -0800</bug_when>
    <thetext>Committed r271533: &lt;https://trac.webkit.org/changeset/271533&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 417726.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1720338</commentid>
    <comment_count>18</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2021-01-18 07:07:50 -0800</bug_when>
    <thetext>With this patch, RemoteRenderingBackend::cacheNativeImage is called in a background thread. This can call ShareableBitmap::createGraphicsContext which has an assertion to be called in main thread.
This reproduces for me by running webrtc/video.html with GPU process enabled in WTR/debug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1720493</commentid>
    <comment_count>19</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2021-01-19 01:51:14 -0800</bug_when>
    <thetext>(In reply to youenn fablet from comment #18)
&gt; With this patch, RemoteRenderingBackend::cacheNativeImage is called in a
&gt; background thread. This can call ShareableBitmap::createGraphicsContext
&gt; which has an assertion to be called in main thread.
&gt; This reproduces for me by running webrtc/video.html with GPU process enabled
&gt; in WTR/debug.

https://build.webkit.org/results/Apple-Catalina-Debug-WK2-GPUProcess-Tests/r271596%20(5773)/results.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1720541</commentid>
    <comment_count>20</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-01-19 09:05:31 -0800</bug_when>
    <thetext>(In reply to youenn fablet from comment #18)
&gt; With this patch, RemoteRenderingBackend::cacheNativeImage is called in a
&gt; background thread. This can call ShareableBitmap::createGraphicsContext
&gt; which has an assertion to be called in main thread.
&gt; This reproduces for me by running webrtc/video.html with GPU process enabled
&gt; in WTR/debug.

Ok, will look now. Thanks.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1720542</commentid>
    <comment_count>21</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-01-19 09:11:18 -0800</bug_when>
    <thetext>(In reply to Chris Dumez from comment #20)
&gt; (In reply to youenn fablet from comment #18)
&gt; &gt; With this patch, RemoteRenderingBackend::cacheNativeImage is called in a
&gt; &gt; background thread. This can call ShareableBitmap::createGraphicsContext
&gt; &gt; which has an assertion to be called in main thread.
&gt; &gt; This reproduces for me by running webrtc/video.html with GPU process enabled
&gt; &gt; in WTR/debug.
&gt; 
&gt; Ok, will look now. Thanks.

Follow-up in &lt;https://trac.webkit.org/changeset/271601&gt;.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>417293</attachid>
            <date>2021-01-08 13:00:44 -0800</date>
            <delta_ts>2021-01-08 17:07:25 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-220476-20210108130043.patch</filename>
            <type>text/plain</type>
            <size>25430</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcxMjk2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMTBiNTRlOWExMTc2YjQ5
MGVjYTI2N2NjMDg0NmQ1NGYzYTAyYTU5Ny4uOTg2M2E4NmNkMjZiZjA5ODgzOWEwM2FlNmViNWIz
ZTEwYTU1YmY3OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM4IEBACisyMDIxLTAxLTA4ICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgW0dQVVByb2Nlc3NdIE1vdmUg
RE9NIC8gQ2FudmFzIHJlbmRlcmluZyBvZmYgdGhlIG1haW4gdGhyZWFkIGluIHRoZSBHUFVQcm9j
ZXNzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjA0
NzYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBNYWtl
IHNvbWUgY2FjaGVzIHRocmVhZC1zYWZlIG5vdyB0aGF0IHdlIGRvIHJlbmRlcmluZyBvZmYgdGhl
IG1haW4gdGhyZWFkIGluCisgICAgICAgIHRoZSBHUFVQcm9jZXNzLgorCisgICAgICAgIE5vIG5l
dyB0ZXN0cywgY292ZXJlZCBieSBleGlzdGluZyB0ZXN0cy4KKworICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL0ltYWdlQnVmZmVyLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvU2hh
ZG93Qmx1ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTY3JhdGNoQnVmZmVyOjpTY3JhdGNoQnVm
ZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcmF0Y2hCdWZmZXI6OmdldFNjcmF0Y2hCdWZmZXIp
OgorICAgICAgICAoV2ViQ29yZTo6U2NyYXRjaEJ1ZmZlcjo6c2V0Q2FjaGVkU2hhZG93VmFsdWVz
KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcmF0Y2hCdWZmZXI6OnNldENhY2hlZEluc2V0U2hhZG93
VmFsdWVzKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcmF0Y2hCdWZmZXI6OnNjaGVkdWxlU2NyYXRj
aEJ1ZmZlclB1cmdlKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcmF0Y2hCdWZmZXI6OnB1cmdlVGlt
ZXJGaXJlZCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JhdGNoQnVmZmVyOjpjbGVhclNjcmF0Y2hC
dWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6U2NyYXRjaEJ1ZmZlcjo6c2luZ2xldG9uKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlclV0aWxpdGllc0NHLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OnV0aUZyb21JbWFnZUJ1ZmZlck1JTUVUeXBlKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9TdWJpbWFnZUNhY2hlV2l0aFRpbWVyLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlN1YmltYWdlQ2FjaGVXaXRoVGltZXI6OlN1YmltYWdlQ2FjaGVXaXRoVGlt
ZXIpOgorICAgICAgICAoV2ViQ29yZTo6U3ViaW1hZ2VDYWNoZVdpdGhUaW1lcjo6cHJ1bmVDYWNo
ZVRpbWVyRmlyZWQpOgorICAgICAgICAoV2ViQ29yZTo6U3ViaW1hZ2VDYWNoZVdpdGhUaW1lcjo6
c3ViaW1hZ2UpOgorICAgICAgICAoV2ViQ29yZTo6U3ViaW1hZ2VDYWNoZVdpdGhUaW1lcjo6Y2xl
YXJJbWFnZUFuZFN1YmltYWdlcyk6CisgICAgICAgIChXZWJDb3JlOjpTdWJpbWFnZUNhY2hlV2l0
aFRpbWVyOjpjbGVhckFsbCk6CisgICAgICAgIChXZWJDb3JlOjpTdWJpbWFnZUNhY2hlV2l0aFRp
bWVyOjpzdWJpbWFnZUNhY2hlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9TdWJp
bWFnZUNhY2hlV2l0aFRpbWVyLmg6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9tYWMvVVRJ
VXRpbGl0aWVzLm1tOgorICAgICAgICAoV2ViQ29yZTo6VVRJRnJvbU1JTUVUeXBlKToKKwogMjAy
MS0wMS0wOCAgWW91ZW5uIEZhYmxldCAgPHlvdWVubkBhcHBsZS5jb20+CiAKICAgICAgICAgUGFp
bnRGcmFtZUZvck1lZGlhIGhhcyBhIG51bGwgaWRlbnRpZmllciB3aGVuIG1lZGlhIHBsYXllciBp
cyBhIG1lZGlhIHN0cmVhbSB0cmFjayB2aWRlbyBwbGF5ZXIKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggOWM2YzBlNGJl
NTgwZmQwYzQ1NWI5NTgyZmVlMDEwYzkyNDQyN2Q0ZS4uMzBlMTFlYTk0MTc4ZDNiZDNmMTEwYjdk
NTYyNTlhM2Q1NWIzZGU3MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysr
IGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSw0NSBAQAorMjAyMS0wMS0wOCAg
Q2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIFtHUFVQcm9jZXNzXSBN
b3ZlIERPTSAvIENhbnZhcyByZW5kZXJpbmcgb2ZmIHRoZSBtYWluIHRocmVhZCBpbiB0aGUgR1BV
UHJvY2VzcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MjIwNDc2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
TW92ZSBET00gLyBDYW52YXMgcmVuZGVyaW5nIG9mZiB0aGUgbWFpbiB0aHJlYWQgKGFuZCBvbiBh
IGhpZ2gtcHJpb3JpdHkgc2VyaWFsIFdvcmtRdWV1ZSkgaW4gdGhlCisgICAgICAgIEdQVVByb2Nl
c3MgYnkgbWFraW5nIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQgYSBXb3JrUXVldWVNZXNzYWdlUmVj
ZWl2ZXIuCisKKyAgICAgICAgTG9jYWwgdGVzdGluZyBzZWVtcyB0byBpbmRpY2F0ZSB0aGF0IHRo
aXMgY2hhbmdlIGlzIHBlcmYtbmV1dHJhbCAoSSBoYXZlIHNjaGVkdWxlZCBBL0IgdGVzdGluZyBv
bgorICAgICAgICB0aGUgYm90cyB0byBjb25maXJtKS4gSSB0aGluayB0aGlzIGlzIGdvb2QgbmV3
cyBzaW5jZSBJIGJlbGlldmUgdGhpcyBuZXcgYXJjaGl0ZWN0dXJlIHdpbGwgZ2l2ZQorICAgICAg
ICB1cyBtb3JlIG9wdGltaXphdGlvbiBvcHBvcnR1bml0aWVzIGluIHRoZSBmdXR1cmUuIEZvciBl
eGFtcGxlLCB3ZSB3b3VsZCBiZSBhYmxlIHRvIG1vcmUKKyAgICAgICAgYWdncmVzc2l2ZWx5IHdh
aXQgb24gdGhlIGNyb3NzLXByb2Nlc3Mgc2VtYXBob3JlIHdoZW4gd2FpdGluZyBmb3IgbmV3IERp
c3BsYXlMaXN0IGVudHJpZXMgd2l0aG91dAorICAgICAgICB3b3JyeWluZyBhYm91dCBibG9ja2lu
ZyB0aGUgbWFpbiB0aHJlYWQuCisKKyAgICAgICAgTm90ZSB0aGF0IGluIHRoaXMgcGF0Y2gsIGFs
bCByZW5kZXJpbmcgaGFwcGVuIG9uIHRoZSBzYW1lIHNlcmlhbCBXb3JrUXVldWUuIFRoZXJlIGlz
IGEgc2luZ2xlCisgICAgICAgIFdvcmtRdWV1ZSBmb3IgYWxsIFJlbW90ZVJlbmRlcmluZ0JhY2tl
bmQgb2JqZWN0cywgcmF0aGVyIHRoYW4gYSBXb3JrUXVldWUgcGVyIFJlbW90ZVJlbmRlcmluZ0Jh
Y2tlbmQKKyAgICAgICAgb2JqZWN0LiBXZSBtYXkgd2FudCB0byBjaGFuZ2UgdGhpcyBpbiB0aGUg
ZnV0dXJlLiBIb3dldmVyLCBJIHRoaW5rIHRoaXMgcGF0Y2ggdGFrZXMgdXMgaW4gdGhlIHJpZ2h0
CisgICAgICAgIGRpcmVjdGlvbiBhbmQgaXMgbGVzcyBsaWtlbHkgdG8gaW50cm9kdWNlIHRocmVh
ZC1zYWZldHkgYnVncy4KKworICAgICAgICBJIGhhdmUgcnVuIGxheW91dCB0ZXN0cyBpbiBEZWJ1
ZyBvbiBib3RoIG1hY09TICYgaU9TIHdpdGggdGhlIEdQVVByb2Nlc3MgZW5hYmxlZCBhbmQgSSBi
ZWxpZXZlIEkKKyAgICAgICAgaGF2ZSBmaXhlZCBhbGwgdGhlIGNyYXNoZXMgdGhhdCB3ZXJlIGRp
c2NvdmVyZWQuCisKKyAgICAgICAgKiBHUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nl
c3MuaDoKKyAgICAgICAgKiBHUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tl
bmQuY3BwOgorICAgICAgICAoV2ViS2l0OjpyZW5kZXJpbmdXb3JrUXVldWUpOgorICAgICAgICAo
V2ViS2l0OjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpjcmVhdGUpOgorICAgICAgICAoV2ViS2l0
OjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kKToKKyAgICAg
ICAgKFdlYktpdDo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6flJlbW90ZVJlbmRlcmluZ0JhY2tl
bmQpOgorICAgICAgICAqIEdQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2Vu
ZC5oOgorICAgICAgICAqIEdQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2Vu
ZC5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBQbGF0Zm9ybS9TaGFyZWRNZW1vcnkuaDoKKyAgICAg
ICAgKiBTaGFyZWQvU2hhcmVhYmxlQml0bWFwLmNwcDoKKyAgICAgICAgKFdlYktpdDo6U2hhcmVh
YmxlQml0bWFwOjpTaGFyZWFibGVCaXRtYXApOgorICAgICAgICAoV2ViS2l0OjpTaGFyZWFibGVC
aXRtYXA6On5TaGFyZWFibGVCaXRtYXApOgorICAgICAgICAqIFNoYXJlZC9TaGFyZWFibGVCaXRt
YXAuaDoKKyAgICAgICAgKiBTaGFyZWQvY2cvU2hhcmVhYmxlQml0bWFwQ0cuY3BwOgorICAgICAg
ICAoV2ViS2l0OjpTaGFyZWFibGVCaXRtYXA6OmNyZWF0ZUdyYXBoaWNzQ29udGV4dCk6CisgICAg
ICAgIChXZWJLaXQ6OlNoYXJlYWJsZUJpdG1hcDo6cmVsZWFzZUJpdG1hcENvbnRleHREYXRhKToK
KyAgICAgICAgKFdlYktpdDo6U2hhcmVhYmxlQml0bWFwOjpyZWxlYXNlRGF0YVByb3ZpZGVyRGF0
YSk6CisKIDIwMjEtMDEtMDggIFlvdWVubiBGYWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgogCiAg
ICAgICAgIFNlcnZpY2UgV29ya2VyIGlzIG5vIGxvbmdlciBpbnNwZWN0YWJsZQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXIuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyLmgKaW5kZXggNDI1YTMyZWE0
NDljMGVkNTIyNmNjNTg5N2Q5Y2MxNmI3ODYyMGZkYi4uMzZkNzRjYTM5ZGUxN2NkMDNjMTNiYjc1
ZTRkNWUzODQ4YzMzZWNmZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvSW1hZ2VCdWZmZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9JbWFnZUJ1ZmZlci5oCkBAIC00Miw3ICs0Miw3IEBAIGNsYXNzIERyYXdpbmdDb250ZXh0Owog
c3RydWN0IEl0ZW1CdWZmZXJIYW5kbGU7CiB9CiAKLWNsYXNzIEltYWdlQnVmZmVyIDogcHVibGlj
IFJlZkNvdW50ZWQ8SW1hZ2VCdWZmZXI+LCBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8SW1hZ2VCdWZm
ZXI+IHsKK2NsYXNzIEltYWdlQnVmZmVyIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPElt
YWdlQnVmZmVyPiwgcHVibGljIENhbk1ha2VXZWFrUHRyPEltYWdlQnVmZmVyPiB7CiBwdWJsaWM6
CiAgICAgLy8gV2lsbCByZXR1cm4gYSBudWxsIHBvaW50ZXIgb24gYWxsb2NhdGlvbiBmYWlsdXJl
LgogICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWZQdHI8SW1hZ2VCdWZmZXI+IGNyZWF0ZShj
b25zdCBGbG9hdFNpemUmLCBSZW5kZXJpbmdNb2RlLCBTaG91bGRVc2VEaXNwbGF5TGlzdCwgUmVu
ZGVyaW5nUHVycG9zZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlID0gMSwgQ29sb3JTcGFjZSA9IENv
bG9yU3BhY2U6OlNSR0IsIFBpeGVsRm9ybWF0ID0gUGl4ZWxGb3JtYXQ6OkJHUkE4LCBjb25zdCBI
b3N0V2luZG93KiA9IG51bGxwdHIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvU2hhZG93Qmx1ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9TaGFkb3dCbHVyLmNwcAppbmRleCA4MzM4OWJhNjgwNTYzNzdmOTlmMGY1YTFjZDMwN2Jm
NmNmOTFkODJhLi45ODQ5Y2IyZjBjZDNjZWM1MDQwMzcyMWU2ZmYxZTBmZWU3ZGQyYWJjIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9TaGFkb3dCbHVyLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9TaGFkb3dCbHVyLmNwcApAQCAt
MzYsOSArMzYsMTEgQEAKICNpbmNsdWRlICJJbWFnZUJ1ZmZlci5oIgogI2luY2x1ZGUgIkltYWdl
RGF0YS5oIgogI2luY2x1ZGUgIlRpbWVyLmgiCisjaW5jbHVkZSA8d3RmL0xvY2suaD4KICNpbmNs
dWRlIDx3dGYvTWF0aEV4dHJhcy5oPgogI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgog
I2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgorI2luY2x1ZGUgPHd0Zi9SdW5Mb29wLmg+CiAj
aW5jbHVkZSA8d3RmL1Njb3BlLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTYxLDcgKzYz
LDcgQEAgY2xhc3MgU2NyYXRjaEJ1ZmZlciB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7
CiBwdWJsaWM6CiAgICAgU2NyYXRjaEJ1ZmZlcigpCi0gICAgICAgIDogbV9wdXJnZVRpbWVyKCp0
aGlzLCAmU2NyYXRjaEJ1ZmZlcjo6Y2xlYXJTY3JhdGNoQnVmZmVyKQorICAgICAgICA6IG1fcHVy
Z2VUaW1lcihSdW5Mb29wOjptYWluKCksIHRoaXMsICZTY3JhdGNoQnVmZmVyOjpwdXJnZVRpbWVy
RmlyZWQpCiAgICAgICAgICwgbV9sYXN0V2FzSW5zZXQoZmFsc2UpCiAjaWYgQVNTRVJUX0VOQUJM
RUQKICAgICAgICAgLCBtX2J1ZmZlckluVXNlKGZhbHNlKQpAQCAtNzEsNiArNzMsOCBAQCBwdWJs
aWM6CiAKICAgICBJbWFnZUJ1ZmZlciogZ2V0U2NyYXRjaEJ1ZmZlcihjb25zdCBJbnRTaXplJiBz
aXplKQogICAgIHsKKyAgICAgICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhtX2xvY2spOworCiAg
ICAgICAgIEFTU0VSVCghbV9idWZmZXJJblVzZSk7CiAjaWYgQVNTRVJUX0VOQUJMRUQKICAgICAg
ICAgbV9idWZmZXJJblVzZSA9IHRydWU7CkBAIC05MSw2ICs5NSw3IEBAIHB1YmxpYzoKIAogICAg
IGJvb2wgc2V0Q2FjaGVkU2hhZG93VmFsdWVzKGNvbnN0IEZsb2F0U2l6ZSYgcmFkaXVzLCBjb25z
dCBDb2xvciYgY29sb3IsIGNvbnN0IEZsb2F0UmVjdCYgc2hhZG93UmVjdCwgY29uc3QgRmxvYXRS
b3VuZGVkUmVjdDo6UmFkaWkmIHJhZGlpLCBjb25zdCBGbG9hdFNpemUmIGxheWVyU2l6ZSkKICAg
ICB7CisgICAgICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2sobV9sb2NrKTsKICAgICAgICAgaWYg
KCFtX2xhc3RXYXNJbnNldCAmJiBtX2xhc3RSYWRpdXMgPT0gcmFkaXVzICYmIG1fbGFzdENvbG9y
ID09IGNvbG9yICYmIG1fbGFzdFNoYWRvd1JlY3QgPT0gc2hhZG93UmVjdCAmJiAgbV9sYXN0UmFk
aWkgPT0gcmFkaWkgJiYgbV9sYXN0TGF5ZXJTaXplID09IGxheWVyU2l6ZSkKICAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKIApAQCAtMTA2LDYgKzExMSw3IEBAIHB1YmxpYzoKIAogICAgIGJvb2wg
c2V0Q2FjaGVkSW5zZXRTaGFkb3dWYWx1ZXMoY29uc3QgRmxvYXRTaXplJiByYWRpdXMsIGNvbnN0
IENvbG9yJiBjb2xvciwgY29uc3QgRmxvYXRSZWN0JiBib3VuZHMsIGNvbnN0IEZsb2F0UmVjdCYg
c2hhZG93UmVjdCwgY29uc3QgRmxvYXRSb3VuZGVkUmVjdDo6UmFkaWkmIHJhZGlpKQogICAgIHsK
KyAgICAgICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhtX2xvY2spOwogICAgICAgICBpZiAobV9s
YXN0V2FzSW5zZXQgJiYgbV9sYXN0UmFkaXVzID09IHJhZGl1cyAmJiBtX2xhc3RDb2xvciA9PSBj
b2xvciAmJiBtX2xhc3RJbnNldEJvdW5kcyA9PSBib3VuZHMgJiYgc2hhZG93UmVjdCA9PSBtX2xh
c3RTaGFkb3dSZWN0ICYmIHJhZGlpID09IG1fbGFzdFJhZGlpKQogICAgICAgICAgICAgcmV0dXJu
IGZhbHNlOwogCkBAIC0xMjEsNiArMTI3LDcgQEAgcHVibGljOgogCiAgICAgdm9pZCBzY2hlZHVs
ZVNjcmF0Y2hCdWZmZXJQdXJnZSgpCiAgICAgeworICAgICAgICBhdXRvIGxvY2tlciA9IGhvbGRM
b2NrKG1fbG9jayk7CiAjaWYgQVNTRVJUX0VOQUJMRUQKICAgICAgICAgbV9idWZmZXJJblVzZSA9
IGZhbHNlOwogI2VuZGlmCkBAIC0xMzQsMTUgKzE0MSwyMyBAQCBwdWJsaWM6CiAgICAgc3RhdGlj
IFNjcmF0Y2hCdWZmZXImIHNpbmdsZXRvbigpOwogCiBwcml2YXRlOgorICAgIHZvaWQgcHVyZ2VU
aW1lckZpcmVkKCkKKyAgICB7CisgICAgICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2sobV9sb2Nr
KTsKKyAgICAgICAgY2xlYXJTY3JhdGNoQnVmZmVyKCk7CisgICAgfQorCiAgICAgdm9pZCBjbGVh
clNjcmF0Y2hCdWZmZXIoKQogICAgIHsKKyAgICAgICAgQVNTRVJUKG1fbG9jay5pc0hlbGQoKSk7
CiAgICAgICAgIG1faW1hZ2VCdWZmZXIgPSBudWxscHRyOwogICAgICAgICBtX2xhc3RSYWRpdXMg
PSBGbG9hdFNpemUoKTsKICAgICAgICAgbV9sYXN0TGF5ZXJTaXplID0gRmxvYXRTaXplKCk7CiAg
ICAgfQogCisgICAgTG9jayBtX2xvY2s7CiAgICAgUmVmUHRyPEltYWdlQnVmZmVyPiBtX2ltYWdl
QnVmZmVyOwotICAgIFRpbWVyIG1fcHVyZ2VUaW1lcjsKKyAgICBSdW5Mb29wOjpUaW1lcjxTY3Jh
dGNoQnVmZmVyPiBtX3B1cmdlVGltZXI7CiAKICAgICBGbG9hdFJlY3QgbV9sYXN0SW5zZXRCb3Vu
ZHM7CiAgICAgRmxvYXRSZWN0IG1fbGFzdFNoYWRvd1JlY3Q7CkBAIC0xNTksNyArMTc0LDEyIEBA
IHByaXZhdGU6CiAKIFNjcmF0Y2hCdWZmZXImIFNjcmF0Y2hCdWZmZXI6OnNpbmdsZXRvbigpCiB7
Ci0gICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFNjcmF0Y2hCdWZmZXI+IHNjcmF0Y2hCdWZmZXI7
CisgICAgc3RhdGljIExhenlOZXZlckRlc3Ryb3llZDxTY3JhdGNoQnVmZmVyPiBzY3JhdGNoQnVm
ZmVyOworICAgIHN0YXRpYyBzdGQ6Om9uY2VfZmxhZyBvbmNlRmxhZzsKKyAgICBzdGQ6OmNhbGxf
b25jZShvbmNlRmxhZywgW10geworICAgICAgICBzY3JhdGNoQnVmZmVyLmNvbnN0cnVjdCgpOwor
ICAgIH0pOworCiAgICAgcmV0dXJuIHNjcmF0Y2hCdWZmZXI7CiB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVyVXRpbGl0aWVzQ0cu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJVdGls
aXRpZXNDRy5jcHAKaW5kZXggYjM3N2YwNDgzMmM5N2E1NjJjYzZkYTQyYTY4MDM3OWQxMTg2YTQz
Zi4uZjE0NmYzNTczZjFmZWY5NWQ3OTM3MGU2ZWVmNWM2ZmIyYTc5Y2E5YyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJVdGlsaXRpZXND
Ry5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZm
ZXJVdGlsaXRpZXNDRy5jcHAKQEAgLTY5LDEyICs2OSwxNiBAQCBBTExPV19ERVBSRUNBVEVEX0RF
Q0xBUkFUSU9OU19CRUdJTgogI2lmIFBMQVRGT1JNKE1BQykKICAgICByZXR1cm4gVVRJRnJvbU1J
TUVUeXBlKG1pbWVUeXBlKS5jcmVhdGVDRlN0cmluZygpOwogI2Vsc2UKLSAgICBBU1NFUlQoaXNN
YWluVGhyZWFkKCkpOyAvLyBJdCBpcyB1bmNsZWFyIGlmIENGU1RSIGlzIHRocmVhZHNhZmUuCi0K
ICAgICAvLyBGSVhNRTogQWRkIFdpbmRvd3Mgc3VwcG9ydCBmb3IgYWxsIHRoZSBzdXBwb3J0ZWQg
VVRJcyB3aGVuIGEgd2F5IHRvIGNvbnZlcnQgZnJvbSBNSU1FVHlwZSB0byBVVEkgcmVsaWFibHkg
aXMgZm91bmQuCiAgICAgLy8gRm9yIG5vdywgb25seSBzdXBwb3J0IFBORywgSlBFRywgYW5kIEdJ
Ri4gU2VlIDxyZGFyOi8vcHJvYmxlbS82MDk1Mjg2Pi4KLSAgICBzdGF0aWMgY29uc3QgQ0ZTdHJp
bmdSZWYga1VUVHlwZVBORyA9IENGU1RSKCJwdWJsaWMucG5nIik7Ci0gICAgc3RhdGljIGNvbnN0
IENGU3RyaW5nUmVmIGtVVFR5cGVHSUYgPSBDRlNUUigiY29tLmNvbXB1c2VydmUuZ2lmIik7Cisg
ICAgc3RhdGljIENGU3RyaW5nUmVmIGtVVFR5cGVQTkc7CisgICAgc3RhdGljIENGU3RyaW5nUmVm
IGtVVFR5cGVHSUY7CisKKyAgICBzdGF0aWMgc3RkOjpvbmNlX2ZsYWcgb25jZUtleTsKKyAgICBz
dGQ6OmNhbGxfb25jZShvbmNlS2V5LCBbJl0geworICAgICAgICBrVVRUeXBlUE5HID0gQ0ZTVFIo
InB1YmxpYy5wbmciKTsKKyAgICAgICAga1VUVHlwZUdJRiA9IENGU1RSKCJjb20uY29tcHVzZXJ2
ZS5naWYiKTsKKyAgICB9KTsKIAogICAgIGlmIChlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2Fz
ZShtaW1lVHlwZSwgImltYWdlL3BuZyIpKQogICAgICAgICByZXR1cm4ga1VUVHlwZVBORzsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL1N1YmltYWdlQ2Fj
aGVXaXRoVGltZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvU3Vi
aW1hZ2VDYWNoZVdpdGhUaW1lci5jcHAKaW5kZXggYjA3MDI2ODU2ZDUzZjFiNjNhYTg4ODVmYjFl
NDExMzMwMzdjZmVjMy4uZjNjNWFmN2E2ZGU1OWVlYjRjYzQxZmY2OWUyM2FhMDUxZWRiZTVhOSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvU3ViaW1hZ2VD
YWNoZVdpdGhUaW1lci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2cvU3ViaW1hZ2VDYWNoZVdpdGhUaW1lci5jcHAKQEAgLTgzLDEyICs4MywxMyBAQCBzdHJ1Y3Qg
U3ViaW1hZ2VDYWNoZUFkZGVyIHsKIH07CiAKIFN1YmltYWdlQ2FjaGVXaXRoVGltZXI6OlN1Ymlt
YWdlQ2FjaGVXaXRoVGltZXIoKQotICAgIDogbV90aW1lcigqdGhpcywgJlN1YmltYWdlQ2FjaGVX
aXRoVGltZXI6OnBydW5lQ2FjaGVUaW1lckZpcmVkKQorICAgIDogbV90aW1lcihSdW5Mb29wOjpt
YWluKCksIHRoaXMsICZTdWJpbWFnZUNhY2hlV2l0aFRpbWVyOjpwcnVuZUNhY2hlVGltZXJGaXJl
ZCkKIHsKIH0KIAogdm9pZCBTdWJpbWFnZUNhY2hlV2l0aFRpbWVyOjpwcnVuZUNhY2hlVGltZXJG
aXJlZCgpCiB7CisgICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhtX2xvY2spOwogICAgIHBydW5l
KCk7CiAgICAgaWYgKG1fY2FjaGUuaXNFbXB0eSgpKSB7CiAgICAgICAgIEFTU0VSVChtX2ltYWdl
Q291bnRzLmlzRW1wdHkoKSk7CkBAIC0xMTUsNiArMTE2LDcgQEAgdm9pZCBTdWJpbWFnZUNhY2hl
V2l0aFRpbWVyOjpwcnVuZSgpCiAKIFJldGFpblB0cjxDR0ltYWdlUmVmPiBTdWJpbWFnZUNhY2hl
V2l0aFRpbWVyOjpzdWJpbWFnZShDR0ltYWdlUmVmIGltYWdlLCBjb25zdCBGbG9hdFJlY3QmIHJl
Y3QpCiB7CisgICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhtX2xvY2spOwogICAgIGlmICghbV90
aW1lci5pc0FjdGl2ZSgpKQogICAgICAgICBtX3RpbWVyLnN0YXJ0UmVwZWF0aW5nKHN1YmltYWdl
Q2FjaGVQcnVuZURlbGF5KTsKIApAQCAtMTM1LDYgKzEzNyw3IEBAIFJldGFpblB0cjxDR0ltYWdl
UmVmPiBTdWJpbWFnZUNhY2hlV2l0aFRpbWVyOjpzdWJpbWFnZShDR0ltYWdlUmVmIGltYWdlLCBj
b25zdCBGCiAKIHZvaWQgU3ViaW1hZ2VDYWNoZVdpdGhUaW1lcjo6Y2xlYXJJbWFnZUFuZFN1Ymlt
YWdlcyhDR0ltYWdlUmVmIGltYWdlKQogeworICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2sobV9s
b2NrKTsKICAgICBpZiAobV9pbWFnZUNvdW50cy5jb250YWlucyhpbWFnZSkpIHsKICAgICAgICAg
VmVjdG9yPFN1YmltYWdlQ2FjaGVFbnRyeT4gdG9CZVJlbW92ZWQ7CiAgICAgICAgIGZvciAoY29u
c3QgYXV0byYgZW50cnkgOiBtX2NhY2hlKSB7CkBAIC0xNTEsMTQgKzE1NCwxNyBAQCB2b2lkIFN1
YmltYWdlQ2FjaGVXaXRoVGltZXI6OmNsZWFySW1hZ2VBbmRTdWJpbWFnZXMoQ0dJbWFnZVJlZiBp
bWFnZSkKIAogdm9pZCBTdWJpbWFnZUNhY2hlV2l0aFRpbWVyOjpjbGVhckFsbCgpCiB7CisgICAg
YXV0byBsb2NrZXIgPSBob2xkTG9jayhtX2xvY2spOwogICAgIG1faW1hZ2VDb3VudHMuY2xlYXIo
KTsKICAgICBtX2NhY2hlLmNsZWFyKCk7CiB9CiAKIFN1YmltYWdlQ2FjaGVXaXRoVGltZXImIFN1
YmltYWdlQ2FjaGVXaXRoVGltZXI6OnN1YmltYWdlQ2FjaGUoKQogewotICAgIGlmICghc19jYWNo
ZSkKKyAgICBzdGF0aWMgc3RkOjpvbmNlX2ZsYWcgb25jZUtleTsKKyAgICBzdGQ6OmNhbGxfb25j
ZShvbmNlS2V5LCBbJl0gewogICAgICAgICBzX2NhY2hlID0gbmV3IFN1YmltYWdlQ2FjaGVXaXRo
VGltZXI7CisgICAgfSk7CiAgICAgcmV0dXJuICpzX2NhY2hlOwogfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9TdWJpbWFnZUNhY2hlV2l0aFRpbWVy
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9TdWJpbWFnZUNhY2hlV2l0
aFRpbWVyLmgKaW5kZXggODI3NGJjMjQwZWQ4ZmE1ZWIxMjQwMDBjMmIyZDhhOTI1NzhiOTI5Yi4u
NWJmMDVkNGUxNDBlZTYyYjMzMjFlNGRiZWY1MWRhYzFkMWIzNGQ5OSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvU3ViaW1hZ2VDYWNoZVdpdGhUaW1lci5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL1N1YmltYWdlQ2FjaGVX
aXRoVGltZXIuaApAQCAtMzIsNyArMzIsOSBAQAogI2luY2x1ZGUgPHd0Zi9IYXNoQ291bnRlZFNl
dC5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hUcmFpdHMu
aD4KKyNpbmNsdWRlIDx3dGYvTG9jay5oPgogI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KKyNp
bmNsdWRlIDx3dGYvUnVuTG9vcC5oPgogCiAjZGVmaW5lIENBQ0hFX1NVQklNQUdFUyAxCiAKQEAg
LTk1LDkgKzk3LDEwIEBAIHByaXZhdGU6CiAgICAgdm9pZCBwcnVuZSgpOwogICAgIHZvaWQgY2xl
YXJBbGwoKTsKIAorICAgIExvY2sgbV9sb2NrOwogICAgIEhhc2hDb3VudGVkU2V0PENHSW1hZ2VS
ZWY+IG1faW1hZ2VDb3VudHM7CiAgICAgU3ViaW1hZ2VDYWNoZUhhc2hTZXQgbV9jYWNoZTsKLSAg
ICBUaW1lciBtX3RpbWVyOworICAgIFJ1bkxvb3A6OlRpbWVyPFN1YmltYWdlQ2FjaGVXaXRoVGlt
ZXI+IG1fdGltZXI7CiAKICAgICBzdGF0aWMgU3ViaW1hZ2VDYWNoZVdpdGhUaW1lciYgc3ViaW1h
Z2VDYWNoZSgpOwogICAgIHN0YXRpYyBib29sIHN1YmltYWdlQ2FjaGVFeGlzdHMoKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL1VUSVV0aWxpdGllcy5t
bSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL1VUSVV0aWxpdGllcy5tbQpp
bmRleCA3YTdhMzEwN2JlNzljNDgyNGNlZmUyZTBhYzNlMzU0NjdjOWVhMTY4Li5lMDY3ZWUyMmIx
YWVmNzYzYTI2MDdiMmZiMWVmOTZhNDE4OGY4YWQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9VVElVdGlsaXRpZXMubW0KKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9tYWMvVVRJVXRpbGl0aWVzLm1tCkBAIC0yNiw2ICsyNiw3IEBA
CiAjaW1wb3J0ICJjb25maWcuaCIKICNpbXBvcnQgIlVUSVV0aWxpdGllcy5oIgogCisjaW1wb3J0
IDx3dGYvTG9jay5oPgogI2ltcG9ydCA8d3RmL01haW5UaHJlYWQuaD4KICNpbXBvcnQgPHd0Zi9U
aW55TFJVQ2FjaGUuaD4KICNpbXBvcnQgPHd0Zi90ZXh0L1N0cmluZ0hhc2guaD4KQEAgLTEzMyw4
ICsxMzQsOSBAQCBzdGF0aWMgVGlueUxSVUNhY2hlPFN0cmluZywgU3RyaW5nLCAxNiwgVVRJRnJv
bU1JTUVUeXBlQ2FjaGVQb2xpY3k+JiBjYWNoZVVUSUZybwogCiBTdHJpbmcgVVRJRnJvbU1JTUVU
eXBlKGNvbnN0IFN0cmluZyYgbWltZVR5cGUpCiB7Ci0gICAgQVNTRVJUKGlzTWFpblRocmVhZCgp
KTsKLSAgICByZXR1cm4gY2FjaGVVVElGcm9tTWltZVR5cGUoKS5nZXQobWltZVR5cGUpOworICAg
IHN0YXRpYyBMb2NrIGxvY2s7CisgICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhsb2NrKTsKKyAg
ICByZXR1cm4gY2FjaGVVVElGcm9tTWltZVR5cGUoKS5nZXQobWltZVR5cGUpLmlzb2xhdGVkQ29w
eSgpOwogfQogCiBib29sIGlzRGVjbGFyZWRVVEkoY29uc3QgU3RyaW5nJiBVVEkpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5o
IGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaApp
bmRleCAxZjc4NTU1ZTJiNzM5OWU3MjBiNTRkOWNmYWVjYzMzOTg5NmE3MmFjLi40YmJlYTMyZTgx
YzhlM2MyZDYzYTgwY2U0OWIwMTk3MGFkM2M1MzAyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L0dQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgKQEAgLTM4LDcgKzM4LDcg
QEAKICNpbmNsdWRlIDxXZWJDb3JlL1Byb2Nlc3NJZGVudGlmaWVyLmg+CiAjaW5jbHVkZSA8cGFs
L1Nlc3Npb25JRC5oPgogI2luY2x1ZGUgPHd0Zi9Mb2dnZXIuaD4KLSNpbmNsdWRlIDx3dGYvUmVm
Q291bnRlZC5oPgorI2luY2x1ZGUgPHd0Zi9UaHJlYWRTYWZlUmVmQ291bnRlZC5oPgogCiAjaWYg
RU5BQkxFKFdFQkdMKQogI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllci5oIgpA
QCAtNjgsNyArNjgsNyBAQCBzdHJ1Y3QgUmVtb3RlQXVkaW9TZXNzaW9uQ29uZmlndXJhdGlvbjsK
IHN0cnVjdCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kQ3JlYXRpb25QYXJhbWV0ZXJzOwogCiBjbGFz
cyBHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzCi0gICAgOiBwdWJsaWMgUmVmQ291bnRlZDxHUFVD
b25uZWN0aW9uVG9XZWJQcm9jZXNzPgorICAgIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVk
PEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MsIFdURjo6RGVzdHJ1Y3Rpb25UaHJlYWQ6Ok1haW4+
CiAgICAgLCBwdWJsaWMgV2ViQ29yZTo6Tm93UGxheWluZ01hbmFnZXI6OkNsaWVudAogICAgICwg
SVBDOjpDb25uZWN0aW9uOjpDbGllbnQgewogcHVibGljOgpAQCAtMTkyLDcgKzE5Miw3IEBAIHBy
aXZhdGU6CiAgICAgYm9vbCBtX2FsbG93c0Rpc3BsYXlDYXB0dXJlIHsgZmFsc2UgfTsKICNlbmRp
ZgogCi0gICAgdXNpbmcgUmVtb3RlUmVuZGVyaW5nQmFja2VuZE1hcCA9IEhhc2hNYXA8UmVuZGVy
aW5nQmFja2VuZElkZW50aWZpZXIsIHN0ZDo6dW5pcXVlX3B0cjxSZW1vdGVSZW5kZXJpbmdCYWNr
ZW5kPj47CisgICAgdXNpbmcgUmVtb3RlUmVuZGVyaW5nQmFja2VuZE1hcCA9IEhhc2hNYXA8UmVu
ZGVyaW5nQmFja2VuZElkZW50aWZpZXIsIFJlZlB0cjxSZW1vdGVSZW5kZXJpbmdCYWNrZW5kPj47
CiAgICAgUmVtb3RlUmVuZGVyaW5nQmFja2VuZE1hcCBtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmRN
YXA7CiAjaWYgRU5BQkxFKFdFQkdMKQogICAgIHVzaW5nIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
TWFwID0gSGFzaE1hcDxHcmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIHN0ZDo6dW5pcXVlX3B0
cjxSZW1vdGVHcmFwaGljc0NvbnRleHRHTD4+OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9H
UFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQuY3BwIGIvU291cmNlL1dl
YktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQuY3BwCmluZGV4
IDQ4N2IxMzVhODg5MjdkMjI5MzkzMDc0OTAyNGQ2NTZjYzA1MDRmNTUuLjFiZDc5NjgwZWUyZDYw
MWJmZDc3NjRjOTFkODU3NDJiMjE2YzAwNTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BV
UHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5jcHAKQEAg
LTM4LDYgKzM4LDcgQEAKICNpbmNsdWRlICJSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHlNZXNz
YWdlcy5oIgogI2luY2x1ZGUgPHd0Zi9DaGVja2VkQXJpdGhtZXRpYy5oPgogI2luY2x1ZGUgPHd0
Zi9TeXN0ZW1UcmFjaW5nLmg+CisjaW5jbHVkZSA8d3RmL1dvcmtRdWV1ZS5oPgogCiAjaWYgUExB
VEZPUk0oQ09DT0EpCiAjaW5jbHVkZSA8d3RmL2NvY29hL01hY2hTZW1hcGhvcmUuaD4KQEAgLTQ2
LDI2ICs0NywzMiBAQAogbmFtZXNwYWNlIFdlYktpdCB7CiB1c2luZyBuYW1lc3BhY2UgV2ViQ29y
ZTsKIAotc3RkOjp1bmlxdWVfcHRyPFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ+IFJlbW90ZVJlbmRl
cmluZ0JhY2tlbmQ6OmNyZWF0ZShHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzJiBncHVDb25uZWN0
aW9uVG9XZWJQcm9jZXNzLCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kQ3JlYXRpb25QYXJhbWV0ZXJz
JiYgcGFyYW1ldGVycykKK3N0YXRpYyBXb3JrUXVldWUmIHJlbmRlcmluZ1dvcmtRdWV1ZSgpCiB7
Ci0gICAgcmV0dXJuIHN0ZDo6dW5pcXVlX3B0cjxSZW1vdGVSZW5kZXJpbmdCYWNrZW5kPihuZXcg
UmVtb3RlUmVuZGVyaW5nQmFja2VuZChncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLCBXVEZNb3Zl
KHBhcmFtZXRlcnMpKSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFJlZjxXb3JrUXVldWU+
PiB3b3JrUXVldWUgPSBXb3JrUXVldWU6OmNyZWF0ZSgiUmVtb3RlUmVuZGVyaW5nQmFja2VuZCB3
b3JrIHF1ZXVlIiwgV29ya1F1ZXVlOjpUeXBlOjpTZXJpYWwsIFdvcmtRdWV1ZTo6UU9TOjpVc2Vy
SW50ZXJhY3RpdmUpOworICAgIHJldHVybiB3b3JrUXVldWUuZ2V0KCk7Cit9CisKK1JlZjxSZW1v
dGVSZW5kZXJpbmdCYWNrZW5kPiBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpjcmVhdGUoR1BVQ29u
bmVjdGlvblRvV2ViUHJvY2VzcyYgZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2VzcywgUmVtb3RlUmVu
ZGVyaW5nQmFja2VuZENyZWF0aW9uUGFyYW1ldGVycyYmIHBhcmFtZXRlcnMpCit7CisgICAgcmV0
dXJuIGFkb3B0UmVmKCpuZXcgUmVtb3RlUmVuZGVyaW5nQmFja2VuZChncHVDb25uZWN0aW9uVG9X
ZWJQcm9jZXNzLCBXVEZNb3ZlKHBhcmFtZXRlcnMpKSk7CiB9CiAKIFJlbW90ZVJlbmRlcmluZ0Jh
Y2tlbmQ6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmQoR1BVQ29ubmVjdGlvblRvV2ViUHJvY2VzcyYg
Z3B1Q29ubmVjdGlvblRvV2ViUHJvY2VzcywgUmVtb3RlUmVuZGVyaW5nQmFja2VuZENyZWF0aW9u
UGFyYW1ldGVycyYmIHBhcmFtZXRlcnMpCi0gICAgOiBtX2dwdUNvbm5lY3Rpb25Ub1dlYlByb2Nl
c3MobWFrZVdlYWtQdHIoZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2VzcykpCisgICAgOiBtX2dwdUNv
bm5lY3Rpb25Ub1dlYlByb2Nlc3MoJmdwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MpCiAgICAgLCBt
X3JlbmRlcmluZ0JhY2tlbmRJZGVudGlmaWVyKHBhcmFtZXRlcnMuaWRlbnRpZmllcikKICNpZiBQ
TEFURk9STShDT0NPQSkKICAgICAsIG1fcmVzdW1lRGlzcGxheUxpc3RTZW1hcGhvcmUobWFrZVVu
aXF1ZTxNYWNoU2VtYXBob3JlPihXVEZNb3ZlKHBhcmFtZXRlcnMuc2VuZFJpZ2h0Rm9yUmVzdW1l
RGlzcGxheUxpc3RTZW1hcGhvcmUpKSkKICNlbmRpZgogewogICAgIGlmIChhdXRvKiBncHVDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzID0gbV9ncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmdldCgpKQot
ICAgICAgICBncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLT5tZXNzYWdlUmVjZWl2ZXJNYXAoKS5h
ZGRNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6Om1lc3Nh
Z2VSZWNlaXZlck5hbWUoKSwgbV9yZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllci50b1VJbnQ2NCgp
LCAqdGhpcyk7CisgICAgICAgIGdwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MtPmNvbm5lY3Rpb24o
KS5hZGRXb3JrUXVldWVNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OlJlbW90ZVJlbmRlcmluZ0Jh
Y2tlbmQ6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgcmVuZGVyaW5nV29ya1F1ZXVlKCksIHRoaXMs
IG1fcmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXIudG9VSW50NjQoKSk7CiB9CiAKIFJlbW90ZVJl
bmRlcmluZ0JhY2tlbmQ6On5SZW1vdGVSZW5kZXJpbmdCYWNrZW5kKCkKIHsKICAgICBpZiAoYXV0
byogZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2VzcyA9IG1fZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2Vz
cy5nZXQoKSkKLSAgICAgICAgZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2Vzcy0+bWVzc2FnZVJlY2Vp
dmVyTWFwKCkucmVtb3ZlTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpSZW1vdGVSZW5kZXJpbmdC
YWNrZW5kOjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIG1fcmVuZGVyaW5nQmFja2VuZElkZW50aWZp
ZXIudG9VSW50NjQoKSk7CisgICAgICAgIGdwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MtPmNvbm5l
Y3Rpb24oKS5yZW1vdmVXb3JrUXVldWVNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OlJlbW90ZVJl
bmRlcmluZ0JhY2tlbmQ6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgbV9yZW5kZXJpbmdCYWNrZW5k
SWRlbnRpZmllci50b1VJbnQ2NCgpKTsKIH0KIAogR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcyog
UmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6Z3B1Q29ubmVjdGlvblRvV2ViUHJvY2VzcygpIGNvbnN0
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVu
ZGVyaW5nQmFja2VuZC5oIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90
ZVJlbmRlcmluZ0JhY2tlbmQuaAppbmRleCBiYzEyOGYxNmJiMzc1NDY0NTQyM2ZlMmJkMmIwOTk4
MjAzYWYxNjMwLi5kMDA0Y2VkZjk1ZTYzNTMzYmFkN2U2MjM5Yzc4ZmRiZDM1MGE2M2Q2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5n
QmFja2VuZC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVS
ZW5kZXJpbmdCYWNrZW5kLmgKQEAgLTY2LDEwICs2NiwxMCBAQCBzdHJ1Y3QgUmVtb3RlUmVuZGVy
aW5nQmFja2VuZENyZWF0aW9uUGFyYW1ldGVyczsKIAogY2xhc3MgUmVtb3RlUmVuZGVyaW5nQmFj
a2VuZAogICAgIDogcHVibGljIElQQzo6TWVzc2FnZVNlbmRlcgotICAgICwgcHJpdmF0ZSBJUEM6
Ok1lc3NhZ2VSZWNlaXZlcgorICAgICwgcHVibGljIElQQzo6Q29ubmVjdGlvbjo6V29ya1F1ZXVl
TWVzc2FnZVJlY2VpdmVyCiAgICAgLCBwdWJsaWMgV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1C
dWZmZXJSZWFkaW5nQ2xpZW50IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRy
PFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ+IGNyZWF0ZShHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNz
JiwgUmVtb3RlUmVuZGVyaW5nQmFja2VuZENyZWF0aW9uUGFyYW1ldGVycyYmKTsKKyAgICBzdGF0
aWMgUmVmPFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ+IGNyZWF0ZShHUFVDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzJiwgUmVtb3RlUmVuZGVyaW5nQmFja2VuZENyZWF0aW9uUGFyYW1ldGVycyYmKTsKICAg
ICB2aXJ0dWFsIH5SZW1vdGVSZW5kZXJpbmdCYWNrZW5kKCk7CiAKICAgICBHUFVDb25uZWN0aW9u
VG9XZWJQcm9jZXNzKiBncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzKCkgY29uc3Q7CkBAIC0xNDIs
NyArMTQyLDcgQEAgcHJpdmF0ZToKICAgICB9OwogCiAgICAgUmVtb3RlUmVzb3VyY2VDYWNoZSBt
X3JlbW90ZVJlc291cmNlQ2FjaGU7Ci0gICAgV2Vha1B0cjxHUFVDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzPiBtX2dwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M7CisgICAgUmVmUHRyPEdQVUNvbm5lY3Rp
b25Ub1dlYlByb2Nlc3M+IG1fZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2VzczsKICAgICBSZW5kZXJp
bmdCYWNrZW5kSWRlbnRpZmllciBtX3JlbmRlcmluZ0JhY2tlbmRJZGVudGlmaWVyOwogICAgIEhh
c2hNYXA8V2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1CdWZmZXJJZGVudGlmaWVyLCBSZWZQdHI8
RGlzcGxheUxpc3RSZWFkZXJIYW5kbGU+PiBtX3NoYXJlZERpc3BsYXlMaXN0SGFuZGxlczsKICAg
ICBPcHRpb25hbDxQZW5kaW5nV2FrZXVwSW5mb3JtYXRpb24+IG1fcGVuZGluZ1dha2V1cEluZm87
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVu
ZGVyaW5nQmFja2VuZC5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFw
aGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kLm1lc3NhZ2VzLmluCmluZGV4IDIwMmMyMGE5YzY1
MDEzMDkxMTNkOTA2ODNjZjAwOWI4ODNiZDAwMWYuLjdkNjVjZTkwOWM1ODIwZjQ2YjAxZTZiZGVl
Y2RlYWE3MzM2YWFmMjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFw
aGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kLm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJL
aXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kLm1lc3NhZ2VzLmlu
CkBAIC0yMiw3ICsyMiw3IEBACiAKICNpZiBFTkFCTEUoR1BVX1BST0NFU1MpCiAKLW1lc3NhZ2Vz
IC0+IFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQgTm90UmVmQ291bnRlZCB7CittZXNzYWdlcyAtPiBS
ZW1vdGVSZW5kZXJpbmdCYWNrZW5kIHsKICAgICBDcmVhdGVJbWFnZUJ1ZmZlcihXZWJDb3JlOjpG
bG9hdFNpemUgbG9naWNhbFNpemUsIFdlYkNvcmU6OlJlbmRlcmluZ01vZGUgcmVuZGVyaW5nTW9k
ZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBXZWJDb3JlOjpDb2xvclNwYWNlIGNvbG9yU3BhY2Us
IGVudW06dWludDhfdCBXZWJDb3JlOjpQaXhlbEZvcm1hdCBwaXhlbEZvcm1hdCwgV2ViQ29yZTo6
UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyIHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcikK
ICAgICBXYWtlVXBBbmRBcHBseURpc3BsYXlMaXN0KHN0cnVjdCBXZWJLaXQ6OkdQVVByb2Nlc3NX
YWtldXBNZXNzYWdlQXJndW1lbnRzIGFyZ3VtZW50cykKICAgICBHZXRJbWFnZURhdGEoZW51bTp1
aW50OF90IFdlYkNvcmU6OkFscGhhUHJlbXVsdGlwbGljYXRpb24gb3V0cHV0Rm9ybWF0LCBXZWJD
b3JlOjpJbnRSZWN0IHNyY1JlY3QsIFdlYkNvcmU6OlJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmll
ciByZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpIC0+IChJUEM6OkltYWdlRGF0YVJlZmVyZW5j
ZSBpbWFnZURhdGEpIFN5bmNocm9ub3VzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRm
b3JtL1NoYXJlZE1lbW9yeS5oIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9TaGFyZWRNZW1vcnku
aAppbmRleCBhMDg1NDZiNzY1NjA0NTYxNDVkODUwNGQ5MzhmMDNlN2Y4MWI0MGQwLi4wMzQ1YTI1
ZTczNDRhM2I3YjVjMTE2MjhjODdkN2E5ZTg1NmQ4NDEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1BsYXRmb3JtL1NoYXJlZE1lbW9yeS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0v
U2hhcmVkTWVtb3J5LmgKQEAgLTI4LDcgKzI4LDcgQEAKIAogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJk
Lmg+CiAjaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+Ci0jaW5jbHVkZSA8d3RmL1JlZkNvdW50
ZWQuaD4KKyNpbmNsdWRlIDx3dGYvVGhyZWFkU2FmZVJlZkNvdW50ZWQuaD4KIAogI2lmIFVTRShV
TklYX0RPTUFJTl9TT0NLRVRTKQogI2luY2x1ZGUgIkF0dGFjaG1lbnQuaCIKQEAgLTU2LDcgKzU2
LDcgQEAgY2xhc3MgTWFjaFNlbmRSaWdodDsKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKLWNsYXNz
IFNoYXJlZE1lbW9yeSA6IHB1YmxpYyBSZWZDb3VudGVkPFNoYXJlZE1lbW9yeT4geworY2xhc3Mg
U2hhcmVkTWVtb3J5IDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPFNoYXJlZE1lbW9yeT4g
ewogcHVibGljOgogICAgIGVudW0gY2xhc3MgUHJvdGVjdGlvbiB7CiAgICAgICAgIFJlYWRPbmx5
LApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvU2hhcmVhYmxlQml0bWFwLmNwcCBi
L1NvdXJjZS9XZWJLaXQvU2hhcmVkL1NoYXJlYWJsZUJpdG1hcC5jcHAKaW5kZXggODQ0ODg3YmJj
M2IxYjNhNDMzODQxMmU5NDNjOWQ2OTJjYjFiNjJiMC4uYjEwZDVhNjNjMWE1NDg0ZWEyZDFmMzdi
OTVkZDU1NWQzOWUwMzkzOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvU2hhcmVh
YmxlQml0bWFwLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9TaGFyZWFibGVCaXRtYXAu
Y3BwCkBAIC0xNzIsNyArMTcyLDYgQEAgU2hhcmVhYmxlQml0bWFwOjpTaGFyZWFibGVCaXRtYXAo
Y29uc3QgSW50U2l6ZSYgc2l6ZSwgQ29uZmlndXJhdGlvbiBjb25maWd1cmF0aW8KICAgICAsIG1f
Y29uZmlndXJhdGlvbihjb25maWd1cmF0aW9uKQogICAgICwgbV9kYXRhKGRhdGEpCiB7Ci0gICAg
QVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKIH0KIAogU2hhcmVhYmxlQml0bWFwOjpTaGFyZWFi
bGVCaXRtYXAoY29uc3QgSW50U2l6ZSYgc2l6ZSwgQ29uZmlndXJhdGlvbiBjb25maWd1cmF0aW9u
LCBSZWZQdHI8U2hhcmVkTWVtb3J5PiBzaGFyZWRNZW1vcnkpCkBAIC0xODEsOCArMTgwLDYgQEAg
U2hhcmVhYmxlQml0bWFwOjpTaGFyZWFibGVCaXRtYXAoY29uc3QgSW50U2l6ZSYgc2l6ZSwgQ29u
ZmlndXJhdGlvbiBjb25maWd1cmF0aW8KICAgICAsIG1fc2hhcmVkTWVtb3J5KHNoYXJlZE1lbW9y
eSkKICAgICAsIG1fZGF0YShudWxscHRyKQogewotICAgIEFTU0VSVChSdW5Mb29wOjppc01haW4o
KSk7Ci0KICNpZiBVU0UoRElSRUNUMkQpCiAgICAgY3JlYXRlU2hhcmVkUmVzb3VyY2UoKTsKICNl
bmRpZgpAQCAtMTkwLDggKzE4Nyw2IEBAIFNoYXJlYWJsZUJpdG1hcDo6U2hhcmVhYmxlQml0bWFw
KGNvbnN0IEludFNpemUmIHNpemUsIENvbmZpZ3VyYXRpb24gY29uZmlndXJhdGlvCiAKIFNoYXJl
YWJsZUJpdG1hcDo6flNoYXJlYWJsZUJpdG1hcCgpCiB7Ci0gICAgQVNTRVJUKFJ1bkxvb3A6Omlz
TWFpbigpKTsKLQogICAgIGlmICghaXNCYWNrZWRCeVNoYXJlZE1lbW9yeSgpKQogICAgICAgICBT
aGFyZWFibGVCaXRtYXBNYWxsb2M6OmZyZWUobV9kYXRhKTsKICNpZiBVU0UoRElSRUNUMkQpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9TaGFyZWFibGVCaXRtYXAuaCBiL1NvdXJj
ZS9XZWJLaXQvU2hhcmVkL1NoYXJlYWJsZUJpdG1hcC5oCmluZGV4IDNhMWZhZDJjNzliY2UxYzdl
NWExYTNhNzJlNjQwMmI4ZmJiMTg1NWYuLmNlYzViNTkzYzVmYThjYzg4Yjg1NjRiMDE2MGI0N2U5
ZTMzMTQwYTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1NoYXJlYWJsZUJpdG1h
cC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1NoYXJlYWJsZUJpdG1hcC5oCkBAIC0yOCw4
ICsyOCw4IEBACiAjaW5jbHVkZSAiU2hhcmVkTWVtb3J5LmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9J
bnRSZWN0Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9QbGF0Zm9ybUltYWdlLmg+Ci0jaW5jbHVkZSA8
d3RmL1JlZkNvdW50ZWQuaD4KICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CisjaW5jbHVkZSA8d3Rm
L1RocmVhZFNhZmVSZWZDb3VudGVkLmg+CiAKICNpZiBVU0UoQ0cpCiAjaW5jbHVkZSAiQ29sb3JT
cGFjZURhdGEuaCIKQEAgLTUyLDcgKzUyLDcgQEAgY2xhc3MgR3JhcGhpY3NDb250ZXh0OwogCiBu
YW1lc3BhY2UgV2ViS2l0IHsKICAgICAKLWNsYXNzIFNoYXJlYWJsZUJpdG1hcCA6IHB1YmxpYyBS
ZWZDb3VudGVkPFNoYXJlYWJsZUJpdG1hcD4geworY2xhc3MgU2hhcmVhYmxlQml0bWFwIDogcHVi
bGljIFRocmVhZFNhZmVSZWZDb3VudGVkPFNoYXJlYWJsZUJpdG1hcD4gewogcHVibGljOgogICAg
IHN0cnVjdCBDb25maWd1cmF0aW9uIHsKICAgICAgICAgYm9vbCBpc09wYXF1ZSB7IGZhbHNlIH07
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9jZy9TaGFyZWFibGVCaXRtYXBDRy5j
cHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9jZy9TaGFyZWFibGVCaXRtYXBDRy5jcHAKaW5kZXgg
MzY1MzQ4MjBhZjVhMjI4M2M2ZTZhMDZlNzQzMzE3N2I5MDNkZTBhMS4uOGY5Y2Q1OTQzNmNhMTZh
NjdjMzAxYjc1NDc2MDU5Nzg3NjhhNDQzYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFy
ZWQvY2cvU2hhcmVhYmxlQml0bWFwQ0cuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL2Nn
L1NoYXJlYWJsZUJpdG1hcENHLmNwcApAQCAtODcsNyArODcsNiBAQCB1bnNpZ25lZCBTaGFyZWFi
bGVCaXRtYXA6OmNhbGN1bGF0ZUJ5dGVzUGVyUGl4ZWwoY29uc3QgQ29uZmlndXJhdGlvbiYgY29u
ZmlndXJhdAogCiBzdGQ6OnVuaXF1ZV9wdHI8R3JhcGhpY3NDb250ZXh0PiBTaGFyZWFibGVCaXRt
YXA6OmNyZWF0ZUdyYXBoaWNzQ29udGV4dCgpCiB7Ci0gICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFp
bigpKTsKICAgICByZWYoKTsgLy8gQmFsYW5jZWQgYnkgZGVyZWYgaW4gcmVsZWFzZUJpdG1hcENv
bnRleHREYXRhLgogCiAgICAgdW5zaWduZWQgYnl0ZXNQZXJQaXhlbCA9IGNhbGN1bGF0ZUJ5dGVz
UGVyUGl4ZWwobV9jb25maWd1cmF0aW9uKTsKQEAgLTE1NywxMyArMTU2LDYgQEAgUmV0YWluUHRy
PENHSW1hZ2VSZWY+IFNoYXJlYWJsZUJpdG1hcDo6Y3JlYXRlQ0dJbWFnZShDR0RhdGFQcm92aWRl
clJlZiBkYXRhUHJvdmkKIAogdm9pZCBTaGFyZWFibGVCaXRtYXA6OnJlbGVhc2VCaXRtYXBDb250
ZXh0RGF0YSh2b2lkKiB0eXBlbGVzc0JpdG1hcCwgdm9pZCogdHlwZWxlc3NEYXRhKQogewotICAg
IGlmICghUnVuTG9vcDo6aXNNYWluKCkpIHsKLSAgICAgICAgUnVuTG9vcDo6bWFpbigpLmRpc3Bh
dGNoKFt0eXBlbGVzc0JpdG1hcCwgdHlwZWxlc3NEYXRhXSB7Ci0gICAgICAgICAgICByZWxlYXNl
Qml0bWFwQ29udGV4dERhdGEodHlwZWxlc3NCaXRtYXAsIHR5cGVsZXNzRGF0YSk7Ci0gICAgICAg
IH0pOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCiAgICAgU2hhcmVhYmxlQml0bWFwKiBiaXRt
YXAgPSBzdGF0aWNfY2FzdDxTaGFyZWFibGVCaXRtYXAqPih0eXBlbGVzc0JpdG1hcCk7CiAgICAg
QVNTRVJUX1VOVVNFRCh0eXBlbGVzc0RhdGEsIGJpdG1hcC0+ZGF0YSgpID09IHR5cGVsZXNzRGF0
YSk7CiAgICAgYml0bWFwLT5kZXJlZigpOyAvLyBCYWxhbmNlZCBieSByZWYgaW4gY3JlYXRlR3Jh
cGhpY3NDb250ZXh0LgpAQCAtMTcxLDEzICsxNjMsNiBAQCB2b2lkIFNoYXJlYWJsZUJpdG1hcDo6
cmVsZWFzZUJpdG1hcENvbnRleHREYXRhKHZvaWQqIHR5cGVsZXNzQml0bWFwLCB2b2lkKiB0eXBl
bAogCiB2b2lkIFNoYXJlYWJsZUJpdG1hcDo6cmVsZWFzZURhdGFQcm92aWRlckRhdGEodm9pZCog
dHlwZWxlc3NCaXRtYXAsIGNvbnN0IHZvaWQqIHR5cGVsZXNzRGF0YSwgc2l6ZV90KQogewotICAg
IGlmICghUnVuTG9vcDo6aXNNYWluKCkpIHsKLSAgICAgICAgUnVuTG9vcDo6bWFpbigpLmRpc3Bh
dGNoKFt0eXBlbGVzc0JpdG1hcCwgdHlwZWxlc3NEYXRhXSB7Ci0gICAgICAgICAgICByZWxlYXNl
RGF0YVByb3ZpZGVyRGF0YSh0eXBlbGVzc0JpdG1hcCwgdHlwZWxlc3NEYXRhLCAwKTsKLSAgICAg
ICAgfSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KICAgICBTaGFyZWFibGVCaXRtYXAqIGJp
dG1hcCA9IHN0YXRpY19jYXN0PFNoYXJlYWJsZUJpdG1hcCo+KHR5cGVsZXNzQml0bWFwKTsKICAg
ICBBU1NFUlRfVU5VU0VEKHR5cGVsZXNzRGF0YSwgYml0bWFwLT5kYXRhKCkgPT0gdHlwZWxlc3NE
YXRhKTsKICAgICBiaXRtYXAtPmRlcmVmKCk7IC8vIEJhbGFuY2VkIGJ5IHJlZiBpbiBjcmVhdGVD
R0ltYWdlLgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>417320</attachid>
            <date>2021-01-08 17:07:27 -0800</date>
            <delta_ts>2021-01-11 16:24:41 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-220476-20210108170727.patch</filename>
            <type>text/plain</type>
            <size>25048</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcxMzE5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZGI2Zjg1Yjk3YWFiNTY3
NzkxYTdmZGQ3MzFiYTdlOGViYzE5ZmJhYy4uYzQ5MjI1NjA2ODI4OWJhY2UwOTkxZGUwODE5MDA5
MDQ1MDY4NzAxNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM4IEBACisyMDIxLTAxLTA4ICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgW0dQVVByb2Nlc3NdIE1vdmUg
RE9NIC8gQ2FudmFzIHJlbmRlcmluZyBvZmYgdGhlIG1haW4gdGhyZWFkIGluIHRoZSBHUFVQcm9j
ZXNzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjA0
NzYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBNYWtl
IHNvbWUgY2FjaGVzIHRocmVhZC1zYWZlIG5vdyB0aGF0IHdlIGRvIHJlbmRlcmluZyBvZmYgdGhl
IG1haW4gdGhyZWFkIGluCisgICAgICAgIHRoZSBHUFVQcm9jZXNzLgorCisgICAgICAgIE5vIG5l
dyB0ZXN0cywgY292ZXJlZCBieSBleGlzdGluZyB0ZXN0cy4KKworICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL0ltYWdlQnVmZmVyLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvU2hh
ZG93Qmx1ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTY3JhdGNoQnVmZmVyOjpTY3JhdGNoQnVm
ZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcmF0Y2hCdWZmZXI6OmdldFNjcmF0Y2hCdWZmZXIp
OgorICAgICAgICAoV2ViQ29yZTo6U2NyYXRjaEJ1ZmZlcjo6c2V0Q2FjaGVkU2hhZG93VmFsdWVz
KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcmF0Y2hCdWZmZXI6OnNldENhY2hlZEluc2V0U2hhZG93
VmFsdWVzKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcmF0Y2hCdWZmZXI6OnNjaGVkdWxlU2NyYXRj
aEJ1ZmZlclB1cmdlKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcmF0Y2hCdWZmZXI6OnB1cmdlVGlt
ZXJGaXJlZCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JhdGNoQnVmZmVyOjpjbGVhclNjcmF0Y2hC
dWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6U2NyYXRjaEJ1ZmZlcjo6c2luZ2xldG9uKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlclV0aWxpdGllc0NHLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OnV0aUZyb21JbWFnZUJ1ZmZlck1JTUVUeXBlKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9TdWJpbWFnZUNhY2hlV2l0aFRpbWVyLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlN1YmltYWdlQ2FjaGVXaXRoVGltZXI6OlN1YmltYWdlQ2FjaGVXaXRoVGlt
ZXIpOgorICAgICAgICAoV2ViQ29yZTo6U3ViaW1hZ2VDYWNoZVdpdGhUaW1lcjo6cHJ1bmVDYWNo
ZVRpbWVyRmlyZWQpOgorICAgICAgICAoV2ViQ29yZTo6U3ViaW1hZ2VDYWNoZVdpdGhUaW1lcjo6
c3ViaW1hZ2UpOgorICAgICAgICAoV2ViQ29yZTo6U3ViaW1hZ2VDYWNoZVdpdGhUaW1lcjo6Y2xl
YXJJbWFnZUFuZFN1YmltYWdlcyk6CisgICAgICAgIChXZWJDb3JlOjpTdWJpbWFnZUNhY2hlV2l0
aFRpbWVyOjpjbGVhckFsbCk6CisgICAgICAgIChXZWJDb3JlOjpTdWJpbWFnZUNhY2hlV2l0aFRp
bWVyOjpzdWJpbWFnZUNhY2hlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9TdWJp
bWFnZUNhY2hlV2l0aFRpbWVyLmg6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9tYWMvVVRJ
VXRpbGl0aWVzLm1tOgorICAgICAgICAoV2ViQ29yZTo6VVRJRnJvbU1JTUVUeXBlKToKKwogMjAy
MS0wMS0wOCAgUGhpbGlwcGUgTm9ybWFuZCAgPHBub3JtYW5kQGlnYWxpYS5jb20+CiAKICAgICAg
ICAgW0dTdHJlYW1lcl0gUGxheWVyIGF1ZGlvIHNpbmsgbmVlZHMgdG8gYmUgaW5pdGlhbGl6ZWQg
ZWFybGllcgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2Vi
S2l0L0NoYW5nZUxvZwppbmRleCAwZWVmNjRmN2YzYjMzNTJmNzAwZTkwNDg4Njg2ZTAyMDhhYzM4
ZjMwLi4zYjU0YzJmYmU3MmZhMmI0MmJlNDEzNjVjMWE1ODNmNWRhNWRiNmIzIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpA
QCAtMSwzICsxLDQxIEBACisyMDIxLTAxLTA4ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5j
b20+CisKKyAgICAgICAgW0dQVVByb2Nlc3NdIE1vdmUgRE9NIC8gQ2FudmFzIHJlbmRlcmluZyBv
ZmYgdGhlIG1haW4gdGhyZWFkIGluIHRoZSBHUFVQcm9jZXNzCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjA0NzYKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBNb3ZlIERPTSAvIENhbnZhcyByZW5kZXJpbmcg
b2ZmIHRoZSBtYWluIHRocmVhZCAoYW5kIG9uIGEgaGlnaC1wcmlvcml0eSBzZXJpYWwgV29ya1F1
ZXVlKSBpbiB0aGUKKyAgICAgICAgR1BVUHJvY2VzcyBieSBtYWtpbmcgUmVtb3RlUmVuZGVyaW5n
QmFja2VuZCBhIFdvcmtRdWV1ZU1lc3NhZ2VSZWNlaXZlci4gVGhlcmUgaXMgYSBzZXJpYWwgV29y
a1F1ZXVlCisgICAgICAgIHBlciBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kLCB3aGljaCBtZWFucyBl
YWNoIFdlYlBhZ2UgZ2V0cyBpdHMgb3duIFdvcmtRdWV1ZS4KKworICAgICAgICBMb2NhbCB0ZXN0
aW5nIHNlZW1zIHRvIGluZGljYXRlIHRoYXQgdGhpcyBjaGFuZ2UgaXMgcGVyZi1uZXV0cmFsIChJ
IGhhdmUgc2NoZWR1bGVkIEEvQiB0ZXN0aW5nIG9uCisgICAgICAgIHRoZSBib3RzIHRvIGNvbmZp
cm0pLiBJIHRoaW5rIHRoaXMgaXMgZ29vZCBuZXdzIHNpbmNlIEkgYmVsaWV2ZSB0aGlzIG5ldyBh
cmNoaXRlY3R1cmUgd2lsbCBnaXZlCisgICAgICAgIHVzIG1vcmUgb3B0aW1pemF0aW9uIG9wcG9y
dHVuaXRpZXMgaW4gdGhlIGZ1dHVyZS4gRm9yIGV4YW1wbGUsIHdlIHdvdWxkIGJlIGFibGUgdG8g
bW9yZQorICAgICAgICBhZ2dyZXNzaXZlbHkgd2FpdCBvbiB0aGUgY3Jvc3MtcHJvY2VzcyBzZW1h
cGhvcmUgd2hlbiB3YWl0aW5nIGZvciBuZXcgRGlzcGxheUxpc3QgZW50cmllcyB3aXRob3V0Cisg
ICAgICAgIHdvcnJ5aW5nIGFib3V0IGJsb2NraW5nIHRoZSBtYWluIHRocmVhZC4KKworICAgICAg
ICBJIGhhdmUgcnVuIGxheW91dCB0ZXN0cyBpbiBEZWJ1ZyBvbiBib3RoIG1hY09TICYgaU9TIHdp
dGggdGhlIEdQVVByb2Nlc3MgZW5hYmxlZCBhbmQgSSBiZWxpZXZlIEkKKyAgICAgICAgaGF2ZSBm
aXhlZCBhbGwgdGhlIGNyYXNoZXMgdGhhdCB3ZXJlIGRpc2NvdmVyZWQuCisKKyAgICAgICAgKiBH
UFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaDoKKyAgICAgICAgKiBHUFVQcm9j
ZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQuY3BwOgorICAgICAgICAoV2ViS2l0
OjpyZW5kZXJpbmdXb3JrUXVldWUpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVSZW5kZXJpbmdC
YWNrZW5kOjpjcmVhdGUpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5k
OjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlUmVuZGVy
aW5nQmFja2VuZDo6flJlbW90ZVJlbmRlcmluZ0JhY2tlbmQpOgorICAgICAgICAqIEdQVVByb2Nl
c3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5oOgorICAgICAgICAqIEdQVVByb2Nl
c3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5tZXNzYWdlcy5pbjoKKyAgICAgICAg
KiBQbGF0Zm9ybS9TaGFyZWRNZW1vcnkuaDoKKyAgICAgICAgKiBTaGFyZWQvU2hhcmVhYmxlQml0
bWFwLmNwcDoKKyAgICAgICAgKFdlYktpdDo6U2hhcmVhYmxlQml0bWFwOjpTaGFyZWFibGVCaXRt
YXApOgorICAgICAgICAoV2ViS2l0OjpTaGFyZWFibGVCaXRtYXA6On5TaGFyZWFibGVCaXRtYXAp
OgorICAgICAgICAqIFNoYXJlZC9TaGFyZWFibGVCaXRtYXAuaDoKKyAgICAgICAgKiBTaGFyZWQv
Y2cvU2hhcmVhYmxlQml0bWFwQ0cuY3BwOgorICAgICAgICAoV2ViS2l0OjpTaGFyZWFibGVCaXRt
YXA6OmNyZWF0ZUdyYXBoaWNzQ29udGV4dCk6CisgICAgICAgIChXZWJLaXQ6OlNoYXJlYWJsZUJp
dG1hcDo6cmVsZWFzZUJpdG1hcENvbnRleHREYXRhKToKKyAgICAgICAgKFdlYktpdDo6U2hhcmVh
YmxlQml0bWFwOjpyZWxlYXNlRGF0YVByb3ZpZGVyRGF0YSk6CisKIDIwMjEtMDEtMDggIEppZXdl
biBUYW4gIDxqaWV3ZW5fdGFuQGFwcGxlLmNvbT4KIAogICAgICAgICBbV2ViQXV0aG5dIEFkb3B0
IG5ldyBVSSBmb3IgdGhlIHVwZGF0ZSBmbG93CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvSW1hZ2VCdWZmZXIuaAppbmRleCA0MjVhMzJlYTQ0OWMwZWQ1MjI2Y2M1ODk3ZDlj
YzE2Yjc4NjIwZmRiLi4zNmQ3NGNhMzlkZTE3Y2QwM2MxM2JiNzVlNGQ1ZTM4NDhjMzNlY2ZlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlci5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyLmgKQEAg
LTQyLDcgKzQyLDcgQEAgY2xhc3MgRHJhd2luZ0NvbnRleHQ7CiBzdHJ1Y3QgSXRlbUJ1ZmZlckhh
bmRsZTsKIH0KIAotY2xhc3MgSW1hZ2VCdWZmZXIgOiBwdWJsaWMgUmVmQ291bnRlZDxJbWFnZUJ1
ZmZlcj4sIHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxJbWFnZUJ1ZmZlcj4geworY2xhc3MgSW1hZ2VC
dWZmZXIgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8SW1hZ2VCdWZmZXI+LCBwdWJsaWMg
Q2FuTWFrZVdlYWtQdHI8SW1hZ2VCdWZmZXI+IHsKIHB1YmxpYzoKICAgICAvLyBXaWxsIHJldHVy
biBhIG51bGwgcG9pbnRlciBvbiBhbGxvY2F0aW9uIGZhaWx1cmUuCiAgICAgV0VCQ09SRV9FWFBP
UlQgc3RhdGljIFJlZlB0cjxJbWFnZUJ1ZmZlcj4gY3JlYXRlKGNvbnN0IEZsb2F0U2l6ZSYsIFJl
bmRlcmluZ01vZGUsIFNob3VsZFVzZURpc3BsYXlMaXN0LCBSZW5kZXJpbmdQdXJwb3NlLCBmbG9h
dCByZXNvbHV0aW9uU2NhbGUgPSAxLCBDb2xvclNwYWNlID0gQ29sb3JTcGFjZTo6U1JHQiwgUGl4
ZWxGb3JtYXQgPSBQaXhlbEZvcm1hdDo6QkdSQTgsIGNvbnN0IEhvc3RXaW5kb3cqID0gbnVsbHB0
cik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9TaGFkb3dC
bHVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1NoYWRvd0JsdXIuY3Bw
CmluZGV4IDgzMzg5YmE2ODA1NjM3N2Y5OWYwZjVhMWNkMzA3YmY2Y2Y5MWQ4MmEuLjk4NDljYjJm
MGNkM2NlYzUwNDAzNzIxZTZmZjFlMGZlZTdkZDJhYmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL1NoYWRvd0JsdXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL1NoYWRvd0JsdXIuY3BwCkBAIC0zNiw5ICszNiwxMSBAQAogI2lu
Y2x1ZGUgIkltYWdlQnVmZmVyLmgiCiAjaW5jbHVkZSAiSW1hZ2VEYXRhLmgiCiAjaW5jbHVkZSAi
VGltZXIuaCIKKyNpbmNsdWRlIDx3dGYvTG9jay5oPgogI2luY2x1ZGUgPHd0Zi9NYXRoRXh0cmFz
Lmg+CiAjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CiAjaW5jbHVkZSA8d3RmL05vbmNv
cHlhYmxlLmg+CisjaW5jbHVkZSA8d3RmL1J1bkxvb3AuaD4KICNpbmNsdWRlIDx3dGYvU2NvcGUu
aD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtNjEsNyArNjMsNyBAQCBjbGFzcyBTY3JhdGNo
QnVmZmVyIHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBTY3Jh
dGNoQnVmZmVyKCkKLSAgICAgICAgOiBtX3B1cmdlVGltZXIoKnRoaXMsICZTY3JhdGNoQnVmZmVy
OjpjbGVhclNjcmF0Y2hCdWZmZXIpCisgICAgICAgIDogbV9wdXJnZVRpbWVyKFJ1bkxvb3A6Om1h
aW4oKSwgdGhpcywgJlNjcmF0Y2hCdWZmZXI6OnB1cmdlVGltZXJGaXJlZCkKICAgICAgICAgLCBt
X2xhc3RXYXNJbnNldChmYWxzZSkKICNpZiBBU1NFUlRfRU5BQkxFRAogICAgICAgICAsIG1fYnVm
ZmVySW5Vc2UoZmFsc2UpCkBAIC03MSw2ICs3Myw4IEBAIHB1YmxpYzoKIAogICAgIEltYWdlQnVm
ZmVyKiBnZXRTY3JhdGNoQnVmZmVyKGNvbnN0IEludFNpemUmIHNpemUpCiAgICAgeworICAgICAg
ICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKG1fbG9jayk7CisKICAgICAgICAgQVNTRVJUKCFtX2J1
ZmZlckluVXNlKTsKICNpZiBBU1NFUlRfRU5BQkxFRAogICAgICAgICBtX2J1ZmZlckluVXNlID0g
dHJ1ZTsKQEAgLTkxLDYgKzk1LDcgQEAgcHVibGljOgogCiAgICAgYm9vbCBzZXRDYWNoZWRTaGFk
b3dWYWx1ZXMoY29uc3QgRmxvYXRTaXplJiByYWRpdXMsIGNvbnN0IENvbG9yJiBjb2xvciwgY29u
c3QgRmxvYXRSZWN0JiBzaGFkb3dSZWN0LCBjb25zdCBGbG9hdFJvdW5kZWRSZWN0OjpSYWRpaSYg
cmFkaWksIGNvbnN0IEZsb2F0U2l6ZSYgbGF5ZXJTaXplKQogICAgIHsKKyAgICAgICAgYXV0byBs
b2NrZXIgPSBob2xkTG9jayhtX2xvY2spOwogICAgICAgICBpZiAoIW1fbGFzdFdhc0luc2V0ICYm
IG1fbGFzdFJhZGl1cyA9PSByYWRpdXMgJiYgbV9sYXN0Q29sb3IgPT0gY29sb3IgJiYgbV9sYXN0
U2hhZG93UmVjdCA9PSBzaGFkb3dSZWN0ICYmICBtX2xhc3RSYWRpaSA9PSByYWRpaSAmJiBtX2xh
c3RMYXllclNpemUgPT0gbGF5ZXJTaXplKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogCkBA
IC0xMDYsNiArMTExLDcgQEAgcHVibGljOgogCiAgICAgYm9vbCBzZXRDYWNoZWRJbnNldFNoYWRv
d1ZhbHVlcyhjb25zdCBGbG9hdFNpemUmIHJhZGl1cywgY29uc3QgQ29sb3ImIGNvbG9yLCBjb25z
dCBGbG9hdFJlY3QmIGJvdW5kcywgY29uc3QgRmxvYXRSZWN0JiBzaGFkb3dSZWN0LCBjb25zdCBG
bG9hdFJvdW5kZWRSZWN0OjpSYWRpaSYgcmFkaWkpCiAgICAgeworICAgICAgICBhdXRvIGxvY2tl
ciA9IGhvbGRMb2NrKG1fbG9jayk7CiAgICAgICAgIGlmIChtX2xhc3RXYXNJbnNldCAmJiBtX2xh
c3RSYWRpdXMgPT0gcmFkaXVzICYmIG1fbGFzdENvbG9yID09IGNvbG9yICYmIG1fbGFzdEluc2V0
Qm91bmRzID09IGJvdW5kcyAmJiBzaGFkb3dSZWN0ID09IG1fbGFzdFNoYWRvd1JlY3QgJiYgcmFk
aWkgPT0gbV9sYXN0UmFkaWkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAKQEAgLTEyMSw2
ICsxMjcsNyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHNjaGVkdWxlU2NyYXRjaEJ1ZmZlclB1cmdl
KCkKICAgICB7CisgICAgICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2sobV9sb2NrKTsKICNpZiBB
U1NFUlRfRU5BQkxFRAogICAgICAgICBtX2J1ZmZlckluVXNlID0gZmFsc2U7CiAjZW5kaWYKQEAg
LTEzNCwxNSArMTQxLDIzIEBAIHB1YmxpYzoKICAgICBzdGF0aWMgU2NyYXRjaEJ1ZmZlciYgc2lu
Z2xldG9uKCk7CiAKIHByaXZhdGU6CisgICAgdm9pZCBwdXJnZVRpbWVyRmlyZWQoKQorICAgIHsK
KyAgICAgICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhtX2xvY2spOworICAgICAgICBjbGVhclNj
cmF0Y2hCdWZmZXIoKTsKKyAgICB9CisKICAgICB2b2lkIGNsZWFyU2NyYXRjaEJ1ZmZlcigpCiAg
ICAgeworICAgICAgICBBU1NFUlQobV9sb2NrLmlzSGVsZCgpKTsKICAgICAgICAgbV9pbWFnZUJ1
ZmZlciA9IG51bGxwdHI7CiAgICAgICAgIG1fbGFzdFJhZGl1cyA9IEZsb2F0U2l6ZSgpOwogICAg
ICAgICBtX2xhc3RMYXllclNpemUgPSBGbG9hdFNpemUoKTsKICAgICB9CiAKKyAgICBMb2NrIG1f
bG9jazsKICAgICBSZWZQdHI8SW1hZ2VCdWZmZXI+IG1faW1hZ2VCdWZmZXI7Ci0gICAgVGltZXIg
bV9wdXJnZVRpbWVyOworICAgIFJ1bkxvb3A6OlRpbWVyPFNjcmF0Y2hCdWZmZXI+IG1fcHVyZ2VU
aW1lcjsKIAogICAgIEZsb2F0UmVjdCBtX2xhc3RJbnNldEJvdW5kczsKICAgICBGbG9hdFJlY3Qg
bV9sYXN0U2hhZG93UmVjdDsKQEAgLTE1OSw3ICsxNzQsMTIgQEAgcHJpdmF0ZToKIAogU2NyYXRj
aEJ1ZmZlciYgU2NyYXRjaEJ1ZmZlcjo6c2luZ2xldG9uKCkKIHsKLSAgICBzdGF0aWMgTmV2ZXJE
ZXN0cm95ZWQ8U2NyYXRjaEJ1ZmZlcj4gc2NyYXRjaEJ1ZmZlcjsKKyAgICBzdGF0aWMgTGF6eU5l
dmVyRGVzdHJveWVkPFNjcmF0Y2hCdWZmZXI+IHNjcmF0Y2hCdWZmZXI7CisgICAgc3RhdGljIHN0
ZDo6b25jZV9mbGFnIG9uY2VGbGFnOworICAgIHN0ZDo6Y2FsbF9vbmNlKG9uY2VGbGFnLCBbXSB7
CisgICAgICAgIHNjcmF0Y2hCdWZmZXIuY29uc3RydWN0KCk7CisgICAgfSk7CisKICAgICByZXR1
cm4gc2NyYXRjaEJ1ZmZlcjsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJVdGlsaXRpZXNDRy5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlclV0aWxpdGllc0NHLmNwcAppbmRleCBi
Mzc3ZjA0ODMyYzk3YTU2MmNjNmRhNDJhNjgwMzc5ZDExODZhNDNmLi5mMTQ2ZjM1NzNmMWZlZjk1
ZDc5MzcwZTZlZWY1YzZmYjJhNzljYTljIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlclV0aWxpdGllc0NHLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlclV0aWxpdGllc0NHLmNwcApA
QCAtNjksMTIgKzY5LDE2IEBAIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0JFR0lOCiAj
aWYgUExBVEZPUk0oTUFDKQogICAgIHJldHVybiBVVElGcm9tTUlNRVR5cGUobWltZVR5cGUpLmNy
ZWF0ZUNGU3RyaW5nKCk7CiAjZWxzZQotICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7IC8vIEl0
IGlzIHVuY2xlYXIgaWYgQ0ZTVFIgaXMgdGhyZWFkc2FmZS4KLQogICAgIC8vIEZJWE1FOiBBZGQg
V2luZG93cyBzdXBwb3J0IGZvciBhbGwgdGhlIHN1cHBvcnRlZCBVVElzIHdoZW4gYSB3YXkgdG8g
Y29udmVydCBmcm9tIE1JTUVUeXBlIHRvIFVUSSByZWxpYWJseSBpcyBmb3VuZC4KICAgICAvLyBG
b3Igbm93LCBvbmx5IHN1cHBvcnQgUE5HLCBKUEVHLCBhbmQgR0lGLiBTZWUgPHJkYXI6Ly9wcm9i
bGVtLzYwOTUyODY+LgotICAgIHN0YXRpYyBjb25zdCBDRlN0cmluZ1JlZiBrVVRUeXBlUE5HID0g
Q0ZTVFIoInB1YmxpYy5wbmciKTsKLSAgICBzdGF0aWMgY29uc3QgQ0ZTdHJpbmdSZWYga1VUVHlw
ZUdJRiA9IENGU1RSKCJjb20uY29tcHVzZXJ2ZS5naWYiKTsKKyAgICBzdGF0aWMgQ0ZTdHJpbmdS
ZWYga1VUVHlwZVBORzsKKyAgICBzdGF0aWMgQ0ZTdHJpbmdSZWYga1VUVHlwZUdJRjsKKworICAg
IHN0YXRpYyBzdGQ6Om9uY2VfZmxhZyBvbmNlS2V5OworICAgIHN0ZDo6Y2FsbF9vbmNlKG9uY2VL
ZXksIFsmXSB7CisgICAgICAgIGtVVFR5cGVQTkcgPSBDRlNUUigicHVibGljLnBuZyIpOworICAg
ICAgICBrVVRUeXBlR0lGID0gQ0ZTVFIoImNvbS5jb21wdXNlcnZlLmdpZiIpOworICAgIH0pOwog
CiAgICAgaWYgKGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKG1pbWVUeXBlLCAiaW1hZ2Uv
cG5nIikpCiAgICAgICAgIHJldHVybiBrVVRUeXBlUE5HOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvU3ViaW1hZ2VDYWNoZVdpdGhUaW1lci5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9TdWJpbWFnZUNhY2hlV2l0aFRpbWVy
LmNwcAppbmRleCBiMDcwMjY4NTZkNTNmMWI2M2FhODg4NWZiMWU0MTEzMzAzN2NmZWMzLi5mM2M1
YWY3YTZkZTU5ZWViNGNjNDFmZjY5ZTIzYWEwNTFlZGJlNWE5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9TdWJpbWFnZUNhY2hlV2l0aFRpbWVyLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9TdWJpbWFnZUNhY2hlV2l0
aFRpbWVyLmNwcApAQCAtODMsMTIgKzgzLDEzIEBAIHN0cnVjdCBTdWJpbWFnZUNhY2hlQWRkZXIg
ewogfTsKIAogU3ViaW1hZ2VDYWNoZVdpdGhUaW1lcjo6U3ViaW1hZ2VDYWNoZVdpdGhUaW1lcigp
Ci0gICAgOiBtX3RpbWVyKCp0aGlzLCAmU3ViaW1hZ2VDYWNoZVdpdGhUaW1lcjo6cHJ1bmVDYWNo
ZVRpbWVyRmlyZWQpCisgICAgOiBtX3RpbWVyKFJ1bkxvb3A6Om1haW4oKSwgdGhpcywgJlN1Ymlt
YWdlQ2FjaGVXaXRoVGltZXI6OnBydW5lQ2FjaGVUaW1lckZpcmVkKQogewogfQogCiB2b2lkIFN1
YmltYWdlQ2FjaGVXaXRoVGltZXI6OnBydW5lQ2FjaGVUaW1lckZpcmVkKCkKIHsKKyAgICBhdXRv
IGxvY2tlciA9IGhvbGRMb2NrKG1fbG9jayk7CiAgICAgcHJ1bmUoKTsKICAgICBpZiAobV9jYWNo
ZS5pc0VtcHR5KCkpIHsKICAgICAgICAgQVNTRVJUKG1faW1hZ2VDb3VudHMuaXNFbXB0eSgpKTsK
QEAgLTExNSw2ICsxMTYsNyBAQCB2b2lkIFN1YmltYWdlQ2FjaGVXaXRoVGltZXI6OnBydW5lKCkK
IAogUmV0YWluUHRyPENHSW1hZ2VSZWY+IFN1YmltYWdlQ2FjaGVXaXRoVGltZXI6OnN1YmltYWdl
KENHSW1hZ2VSZWYgaW1hZ2UsIGNvbnN0IEZsb2F0UmVjdCYgcmVjdCkKIHsKKyAgICBhdXRvIGxv
Y2tlciA9IGhvbGRMb2NrKG1fbG9jayk7CiAgICAgaWYgKCFtX3RpbWVyLmlzQWN0aXZlKCkpCiAg
ICAgICAgIG1fdGltZXIuc3RhcnRSZXBlYXRpbmcoc3ViaW1hZ2VDYWNoZVBydW5lRGVsYXkpOwog
CkBAIC0xMzUsNiArMTM3LDcgQEAgUmV0YWluUHRyPENHSW1hZ2VSZWY+IFN1YmltYWdlQ2FjaGVX
aXRoVGltZXI6OnN1YmltYWdlKENHSW1hZ2VSZWYgaW1hZ2UsIGNvbnN0IEYKIAogdm9pZCBTdWJp
bWFnZUNhY2hlV2l0aFRpbWVyOjpjbGVhckltYWdlQW5kU3ViaW1hZ2VzKENHSW1hZ2VSZWYgaW1h
Z2UpCiB7CisgICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhtX2xvY2spOwogICAgIGlmIChtX2lt
YWdlQ291bnRzLmNvbnRhaW5zKGltYWdlKSkgewogICAgICAgICBWZWN0b3I8U3ViaW1hZ2VDYWNo
ZUVudHJ5PiB0b0JlUmVtb3ZlZDsKICAgICAgICAgZm9yIChjb25zdCBhdXRvJiBlbnRyeSA6IG1f
Y2FjaGUpIHsKQEAgLTE1MSwxNCArMTU0LDE3IEBAIHZvaWQgU3ViaW1hZ2VDYWNoZVdpdGhUaW1l
cjo6Y2xlYXJJbWFnZUFuZFN1YmltYWdlcyhDR0ltYWdlUmVmIGltYWdlKQogCiB2b2lkIFN1Ymlt
YWdlQ2FjaGVXaXRoVGltZXI6OmNsZWFyQWxsKCkKIHsKKyAgICBhdXRvIGxvY2tlciA9IGhvbGRM
b2NrKG1fbG9jayk7CiAgICAgbV9pbWFnZUNvdW50cy5jbGVhcigpOwogICAgIG1fY2FjaGUuY2xl
YXIoKTsKIH0KIAogU3ViaW1hZ2VDYWNoZVdpdGhUaW1lciYgU3ViaW1hZ2VDYWNoZVdpdGhUaW1l
cjo6c3ViaW1hZ2VDYWNoZSgpCiB7Ci0gICAgaWYgKCFzX2NhY2hlKQorICAgIHN0YXRpYyBzdGQ6
Om9uY2VfZmxhZyBvbmNlS2V5OworICAgIHN0ZDo6Y2FsbF9vbmNlKG9uY2VLZXksIFsmXSB7CiAg
ICAgICAgIHNfY2FjaGUgPSBuZXcgU3ViaW1hZ2VDYWNoZVdpdGhUaW1lcjsKKyAgICB9KTsKICAg
ICByZXR1cm4gKnNfY2FjaGU7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NnL1N1YmltYWdlQ2FjaGVXaXRoVGltZXIuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NnL1N1YmltYWdlQ2FjaGVXaXRoVGltZXIuaAppbmRleCA4Mjc0
YmMyNDBlZDhmYTVlYjEyNDAwMGMyYjJkOGE5MjU3OGI5MjliLi41YmYwNWQ0ZTE0MGVlNjJiMzMy
MWU0ZGJlZjUxZGFjMWQxYjM0ZDk5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jZy9TdWJpbWFnZUNhY2hlV2l0aFRpbWVyLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvU3ViaW1hZ2VDYWNoZVdpdGhUaW1lci5oCkBAIC0zMiw3
ICszMiw5IEBACiAjaW5jbHVkZSA8d3RmL0hhc2hDb3VudGVkU2V0Lmg+CiAjaW5jbHVkZSA8d3Rm
L0hhc2hTZXQuaD4KICNpbmNsdWRlIDx3dGYvSGFzaFRyYWl0cy5oPgorI2luY2x1ZGUgPHd0Zi9M
b2NrLmg+CiAjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgorI2luY2x1ZGUgPHd0Zi9SdW5Mb29w
Lmg+CiAKICNkZWZpbmUgQ0FDSEVfU1VCSU1BR0VTIDEKIApAQCAtOTUsOSArOTcsMTAgQEAgcHJp
dmF0ZToKICAgICB2b2lkIHBydW5lKCk7CiAgICAgdm9pZCBjbGVhckFsbCgpOwogCisgICAgTG9j
ayBtX2xvY2s7CiAgICAgSGFzaENvdW50ZWRTZXQ8Q0dJbWFnZVJlZj4gbV9pbWFnZUNvdW50czsK
ICAgICBTdWJpbWFnZUNhY2hlSGFzaFNldCBtX2NhY2hlOwotICAgIFRpbWVyIG1fdGltZXI7Cisg
ICAgUnVuTG9vcDo6VGltZXI8U3ViaW1hZ2VDYWNoZVdpdGhUaW1lcj4gbV90aW1lcjsKIAogICAg
IHN0YXRpYyBTdWJpbWFnZUNhY2hlV2l0aFRpbWVyJiBzdWJpbWFnZUNhY2hlKCk7CiAgICAgc3Rh
dGljIGJvb2wgc3ViaW1hZ2VDYWNoZUV4aXN0cygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9tYWMvVVRJVXRpbGl0aWVzLm1tIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9tYWMvVVRJVXRpbGl0aWVzLm1tCmluZGV4IDdhN2EzMTA3YmU3OWM0
ODI0Y2VmZTJlMGFjM2UzNTQ2N2M5ZWExNjguLmUwNjdlZTIyYjFhZWY3NjNhMjYwN2IyZmIxZWY5
NmE0MTg4ZjhhZDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
bWFjL1VUSVV0aWxpdGllcy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L21hYy9VVElVdGlsaXRpZXMubW0KQEAgLTI2LDYgKzI2LDcgQEAKICNpbXBvcnQgImNvbmZpZy5o
IgogI2ltcG9ydCAiVVRJVXRpbGl0aWVzLmgiCiAKKyNpbXBvcnQgPHd0Zi9Mb2NrLmg+CiAjaW1w
b3J0IDx3dGYvTWFpblRocmVhZC5oPgogI2ltcG9ydCA8d3RmL1RpbnlMUlVDYWNoZS5oPgogI2lt
cG9ydCA8d3RmL3RleHQvU3RyaW5nSGFzaC5oPgpAQCAtMTMzLDggKzEzNCw5IEBAIHN0YXRpYyBU
aW55TFJVQ2FjaGU8U3RyaW5nLCBTdHJpbmcsIDE2LCBVVElGcm9tTUlNRVR5cGVDYWNoZVBvbGlj
eT4mIGNhY2hlVVRJRnJvCiAKIFN0cmluZyBVVElGcm9tTUlNRVR5cGUoY29uc3QgU3RyaW5nJiBt
aW1lVHlwZSkKIHsKLSAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwotICAgIHJldHVybiBjYWNo
ZVVUSUZyb21NaW1lVHlwZSgpLmdldChtaW1lVHlwZSk7CisgICAgc3RhdGljIExvY2sgbG9jazsK
KyAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKGxvY2spOworICAgIHJldHVybiBjYWNoZVVUSUZy
b21NaW1lVHlwZSgpLmdldChtaW1lVHlwZSkuaXNvbGF0ZWRDb3B5KCk7CiB9CiAKIGJvb2wgaXNE
ZWNsYXJlZFVUSShjb25zdCBTdHJpbmcmIFVUSSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
R1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmggYi9Tb3VyY2UvV2ViS2l0L0dQ
VVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oCmluZGV4IDFmNzg1NTVlMmI3Mzk5
ZTcyMGI1NGQ5Y2ZhZWNjMzM5ODk2YTcyYWMuLjRiYmVhMzJlODFjOGUzYzJkNjNhODBjZTQ5YjAx
OTcwYWQzYzUzMDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzLmgKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQVUNv
bm5lY3Rpb25Ub1dlYlByb2Nlc3MuaApAQCAtMzgsNyArMzgsNyBAQAogI2luY2x1ZGUgPFdlYkNv
cmUvUHJvY2Vzc0lkZW50aWZpZXIuaD4KICNpbmNsdWRlIDxwYWwvU2Vzc2lvbklELmg+CiAjaW5j
bHVkZSA8d3RmL0xvZ2dlci5oPgotI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CisjaW5jbHVk
ZSA8d3RmL1RocmVhZFNhZmVSZWZDb3VudGVkLmg+CiAKICNpZiBFTkFCTEUoV0VCR0wpCiAjaW5j
bHVkZSAiR3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLmgiCkBAIC02OCw3ICs2OCw3IEBAIHN0
cnVjdCBSZW1vdGVBdWRpb1Nlc3Npb25Db25maWd1cmF0aW9uOwogc3RydWN0IFJlbW90ZVJlbmRl
cmluZ0JhY2tlbmRDcmVhdGlvblBhcmFtZXRlcnM7CiAKIGNsYXNzIEdQVUNvbm5lY3Rpb25Ub1dl
YlByb2Nlc3MKLSAgICA6IHB1YmxpYyBSZWZDb3VudGVkPEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nl
c3M+CisgICAgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8R1BVQ29ubmVjdGlvblRvV2Vi
UHJvY2VzcywgV1RGOjpEZXN0cnVjdGlvblRocmVhZDo6TWFpbj4KICAgICAsIHB1YmxpYyBXZWJD
b3JlOjpOb3dQbGF5aW5nTWFuYWdlcjo6Q2xpZW50CiAgICAgLCBJUEM6OkNvbm5lY3Rpb246OkNs
aWVudCB7CiBwdWJsaWM6CkBAIC0xOTIsNyArMTkyLDcgQEAgcHJpdmF0ZToKICAgICBib29sIG1f
YWxsb3dzRGlzcGxheUNhcHR1cmUgeyBmYWxzZSB9OwogI2VuZGlmCiAKLSAgICB1c2luZyBSZW1v
dGVSZW5kZXJpbmdCYWNrZW5kTWFwID0gSGFzaE1hcDxSZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmll
ciwgc3RkOjp1bmlxdWVfcHRyPFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ+PjsKKyAgICB1c2luZyBS
ZW1vdGVSZW5kZXJpbmdCYWNrZW5kTWFwID0gSGFzaE1hcDxSZW5kZXJpbmdCYWNrZW5kSWRlbnRp
ZmllciwgUmVmUHRyPFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ+PjsKICAgICBSZW1vdGVSZW5kZXJp
bmdCYWNrZW5kTWFwIG1fcmVtb3RlUmVuZGVyaW5nQmFja2VuZE1hcDsKICNpZiBFTkFCTEUoV0VC
R0wpCiAgICAgdXNpbmcgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xNYXAgPSBIYXNoTWFwPEdyYXBo
aWNzQ29udGV4dEdMSWRlbnRpZmllciwgc3RkOjp1bmlxdWVfcHRyPFJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMPj47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3Mv
UmVtb3RlUmVuZGVyaW5nQmFja2VuZC5jcHAgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3Jh
cGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5jcHAKaW5kZXggNDg3YjEzNWE4ODkyN2QyMjkz
OTMwNzQ5MDI0ZDY1NmNjMDUwNGY1NS4uZWUwMjI1OGZlNGM0YTJlNzI3MzUwYmQ2YzNhZWJkYjlk
ZDIyODJkMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1Jl
bW90ZVJlbmRlcmluZ0JhY2tlbmQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9n
cmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kLmNwcApAQCAtMzgsNiArMzgsNyBAQAogI2lu
Y2x1ZGUgIlJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eU1lc3NhZ2VzLmgiCiAjaW5jbHVkZSA8
d3RmL0NoZWNrZWRBcml0aG1ldGljLmg+CiAjaW5jbHVkZSA8d3RmL1N5c3RlbVRyYWNpbmcuaD4K
KyNpbmNsdWRlIDx3dGYvV29ya1F1ZXVlLmg+CiAKICNpZiBQTEFURk9STShDT0NPQSkKICNpbmNs
dWRlIDx3dGYvY29jb2EvTWFjaFNlbWFwaG9yZS5oPgpAQCAtNDYsMjYgKzQ3LDI3IEBACiBuYW1l
c3BhY2UgV2ViS2l0IHsKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCi1zdGQ6OnVuaXF1ZV9w
dHI8UmVtb3RlUmVuZGVyaW5nQmFja2VuZD4gUmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6Y3JlYXRl
KEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MmIGdwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MsIFJl
bW90ZVJlbmRlcmluZ0JhY2tlbmRDcmVhdGlvblBhcmFtZXRlcnMmJiBwYXJhbWV0ZXJzKQorUmVm
PFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ+IFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OmNyZWF0ZShH
UFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzJiBncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLCBSZW1v
dGVSZW5kZXJpbmdCYWNrZW5kQ3JlYXRpb25QYXJhbWV0ZXJzJiYgcGFyYW1ldGVycykKIHsKLSAg
ICByZXR1cm4gc3RkOjp1bmlxdWVfcHRyPFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ+KG5ldyBSZW1v
dGVSZW5kZXJpbmdCYWNrZW5kKGdwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MsIFdURk1vdmUocGFy
YW1ldGVycykpKTsKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBSZW1vdGVSZW5kZXJpbmdCYWNr
ZW5kKGdwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MsIFdURk1vdmUocGFyYW1ldGVycykpKTsKIH0K
IAogUmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZChHUFVDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzJiBncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLCBSZW1vdGVSZW5k
ZXJpbmdCYWNrZW5kQ3JlYXRpb25QYXJhbWV0ZXJzJiYgcGFyYW1ldGVycykKLSAgICA6IG1fZ3B1
Q29ubmVjdGlvblRvV2ViUHJvY2VzcyhtYWtlV2Vha1B0cihncHVDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzKSkKKyAgICA6IG1fd29ya1F1ZXVlKFdvcmtRdWV1ZTo6Y3JlYXRlKCJSZW1vdGVSZW5kZXJp
bmdCYWNrZW5kIHdvcmsgcXVldWUiLCBXb3JrUXVldWU6OlR5cGU6OlNlcmlhbCwgV29ya1F1ZXVl
OjpRT1M6OlVzZXJJbnRlcmFjdGl2ZSkpCisgICAgLCBtX2dwdUNvbm5lY3Rpb25Ub1dlYlByb2Nl
c3MoJmdwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MpCiAgICAgLCBtX3JlbmRlcmluZ0JhY2tlbmRJ
ZGVudGlmaWVyKHBhcmFtZXRlcnMuaWRlbnRpZmllcikKICNpZiBQTEFURk9STShDT0NPQSkKICAg
ICAsIG1fcmVzdW1lRGlzcGxheUxpc3RTZW1hcGhvcmUobWFrZVVuaXF1ZTxNYWNoU2VtYXBob3Jl
PihXVEZNb3ZlKHBhcmFtZXRlcnMuc2VuZFJpZ2h0Rm9yUmVzdW1lRGlzcGxheUxpc3RTZW1hcGhv
cmUpKSkKICNlbmRpZgogewogICAgIGlmIChhdXRvKiBncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNz
ID0gbV9ncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmdldCgpKQotICAgICAgICBncHVDb25uZWN0
aW9uVG9XZWJQcm9jZXNzLT5tZXNzYWdlUmVjZWl2ZXJNYXAoKS5hZGRNZXNzYWdlUmVjZWl2ZXIo
TWVzc2FnZXM6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwg
bV9yZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllci50b1VJbnQ2NCgpLCAqdGhpcyk7CisgICAgICAg
IGdwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MtPmNvbm5lY3Rpb24oKS5hZGRXb3JrUXVldWVNZXNz
YWdlUmVjZWl2ZXIoTWVzc2FnZXM6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6Om1lc3NhZ2VSZWNl
aXZlck5hbWUoKSwgbV93b3JrUXVldWUsIHRoaXMsIG1fcmVuZGVyaW5nQmFja2VuZElkZW50aWZp
ZXIudG9VSW50NjQoKSk7CiB9CiAKIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6On5SZW1vdGVSZW5k
ZXJpbmdCYWNrZW5kKCkKIHsKICAgICBpZiAoYXV0byogZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2Vz
cyA9IG1fZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2Vzcy5nZXQoKSkKLSAgICAgICAgZ3B1Q29ubmVj
dGlvblRvV2ViUHJvY2Vzcy0+bWVzc2FnZVJlY2VpdmVyTWFwKCkucmVtb3ZlTWVzc2FnZVJlY2Vp
dmVyKE1lc3NhZ2VzOjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjptZXNzYWdlUmVjZWl2ZXJOYW1l
KCksIG1fcmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXIudG9VSW50NjQoKSk7CisgICAgICAgIGdw
dUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MtPmNvbm5lY3Rpb24oKS5yZW1vdmVXb3JrUXVldWVNZXNz
YWdlUmVjZWl2ZXIoTWVzc2FnZXM6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6Om1lc3NhZ2VSZWNl
aXZlck5hbWUoKSwgbV9yZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllci50b1VJbnQ2NCgpKTsKIH0K
IAogR1BVQ29ubmVjdGlvblRvV2ViUHJvY2VzcyogUmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6Z3B1
Q29ubmVjdGlvblRvV2ViUHJvY2VzcygpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5oIGIvU291cmNlL1dl
YktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQuaAppbmRleCBi
YzEyOGYxNmJiMzc1NDY0NTQyM2ZlMmJkMmIwOTk4MjAzYWYxNjMwLi45ZjZlOGM4MzI2YTdhNmQy
YjdhMTc3OTE2YWY3ZTAxYWQ4NzM3M2VjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVBy
b2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kLmgKQEAgLTY2LDEw
ICs2NiwxMCBAQCBzdHJ1Y3QgUmVtb3RlUmVuZGVyaW5nQmFja2VuZENyZWF0aW9uUGFyYW1ldGVy
czsKIAogY2xhc3MgUmVtb3RlUmVuZGVyaW5nQmFja2VuZAogICAgIDogcHVibGljIElQQzo6TWVz
c2FnZVNlbmRlcgotICAgICwgcHJpdmF0ZSBJUEM6Ok1lc3NhZ2VSZWNlaXZlcgorICAgICwgcHVi
bGljIElQQzo6Q29ubmVjdGlvbjo6V29ya1F1ZXVlTWVzc2FnZVJlY2VpdmVyCiAgICAgLCBwdWJs
aWMgV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1CdWZmZXJSZWFkaW5nQ2xpZW50IHsKIHB1Ymxp
YzoKLSAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ+IGNy
ZWF0ZShHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzJiwgUmVtb3RlUmVuZGVyaW5nQmFja2VuZENy
ZWF0aW9uUGFyYW1ldGVycyYmKTsKKyAgICBzdGF0aWMgUmVmPFJlbW90ZVJlbmRlcmluZ0JhY2tl
bmQ+IGNyZWF0ZShHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzJiwgUmVtb3RlUmVuZGVyaW5nQmFj
a2VuZENyZWF0aW9uUGFyYW1ldGVycyYmKTsKICAgICB2aXJ0dWFsIH5SZW1vdGVSZW5kZXJpbmdC
YWNrZW5kKCk7CiAKICAgICBHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzKiBncHVDb25uZWN0aW9u
VG9XZWJQcm9jZXNzKCkgY29uc3Q7CkBAIC0xNDEsOCArMTQxLDkgQEAgcHJpdmF0ZToKICAgICAg
ICAgfQogICAgIH07CiAKKyAgICBSZWY8V29ya1F1ZXVlPiBtX3dvcmtRdWV1ZTsKICAgICBSZW1v
dGVSZXNvdXJjZUNhY2hlIG1fcmVtb3RlUmVzb3VyY2VDYWNoZTsKLSAgICBXZWFrUHRyPEdQVUNv
bm5lY3Rpb25Ub1dlYlByb2Nlc3M+IG1fZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2VzczsKKyAgICBS
ZWZQdHI8R1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcz4gbV9ncHVDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzOwogICAgIFJlbmRlcmluZ0JhY2tlbmRJZGVudGlmaWVyIG1fcmVuZGVyaW5nQmFja2VuZElk
ZW50aWZpZXI7CiAgICAgSGFzaE1hcDxXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbUJ1ZmZlcklk
ZW50aWZpZXIsIFJlZlB0cjxEaXNwbGF5TGlzdFJlYWRlckhhbmRsZT4+IG1fc2hhcmVkRGlzcGxh
eUxpc3RIYW5kbGVzOwogICAgIE9wdGlvbmFsPFBlbmRpbmdXYWtldXBJbmZvcm1hdGlvbj4gbV9w
ZW5kaW5nV2FrZXVwSW5mbzsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9n
cmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktp
dC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQubWVzc2FnZXMuaW4K
aW5kZXggMjAyYzIwYTljNjUwMTMwOTExM2Q5MDY4M2NmMDA5Yjg4M2JkMDAxZi4uN2Q2NWNlOTA5
YzU4MjBmNDZiMDFlNmJkZWVjZGVhYTczMzZhYWYyOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQubWVzc2FnZXMuaW4K
KysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0Jh
Y2tlbmQubWVzc2FnZXMuaW4KQEAgLTIyLDcgKzIyLDcgQEAKIAogI2lmIEVOQUJMRShHUFVfUFJP
Q0VTUykKIAotbWVzc2FnZXMgLT4gUmVtb3RlUmVuZGVyaW5nQmFja2VuZCBOb3RSZWZDb3VudGVk
IHsKK21lc3NhZ2VzIC0+IFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQgewogICAgIENyZWF0ZUltYWdl
QnVmZmVyKFdlYkNvcmU6OkZsb2F0U2l6ZSBsb2dpY2FsU2l6ZSwgV2ViQ29yZTo6UmVuZGVyaW5n
TW9kZSByZW5kZXJpbmdNb2RlLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIFdlYkNvcmU6OkNvbG9y
U3BhY2UgY29sb3JTcGFjZSwgZW51bTp1aW50OF90IFdlYkNvcmU6OlBpeGVsRm9ybWF0IHBpeGVs
Rm9ybWF0LCBXZWJDb3JlOjpSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgcmVuZGVyaW5nUmVz
b3VyY2VJZGVudGlmaWVyKQogICAgIFdha2VVcEFuZEFwcGx5RGlzcGxheUxpc3Qoc3RydWN0IFdl
YktpdDo6R1BVUHJvY2Vzc1dha2V1cE1lc3NhZ2VBcmd1bWVudHMgYXJndW1lbnRzKQogICAgIEdl
dEltYWdlRGF0YShlbnVtOnVpbnQ4X3QgV2ViQ29yZTo6QWxwaGFQcmVtdWx0aXBsaWNhdGlvbiBv
dXRwdXRGb3JtYXQsIFdlYkNvcmU6OkludFJlY3Qgc3JjUmVjdCwgV2ViQ29yZTo6UmVuZGVyaW5n
UmVzb3VyY2VJZGVudGlmaWVyIHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcikgLT4gKElQQzo6
SW1hZ2VEYXRhUmVmZXJlbmNlIGltYWdlRGF0YSkgU3luY2hyb25vdXMKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvUGxhdGZvcm0vU2hhcmVkTWVtb3J5LmggYi9Tb3VyY2UvV2ViS2l0L1BsYXRm
b3JtL1NoYXJlZE1lbW9yeS5oCmluZGV4IGEwODU0NmI3NjU2MDQ1NjE0NWQ4NTA0ZDkzOGYwM2U3
ZjgxYjQwZDAuLjAzNDVhMjVlNzM0NGEzYjdiNWMxMTYyOGM4N2Q3YTllODU2ZDg0MTMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vU2hhcmVkTWVtb3J5LmgKKysrIGIvU291cmNl
L1dlYktpdC9QbGF0Zm9ybS9TaGFyZWRNZW1vcnkuaApAQCAtMjgsNyArMjgsNyBAQAogCiAjaW5j
bHVkZSA8d3RmL0ZvcndhcmQuaD4KICNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KLSNpbmNs
dWRlIDx3dGYvUmVmQ291bnRlZC5oPgorI2luY2x1ZGUgPHd0Zi9UaHJlYWRTYWZlUmVmQ291bnRl
ZC5oPgogCiAjaWYgVVNFKFVOSVhfRE9NQUlOX1NPQ0tFVFMpCiAjaW5jbHVkZSAiQXR0YWNobWVu
dC5oIgpAQCAtNTYsNyArNTYsNyBAQCBjbGFzcyBNYWNoU2VuZFJpZ2h0OwogCiBuYW1lc3BhY2Ug
V2ViS2l0IHsKIAotY2xhc3MgU2hhcmVkTWVtb3J5IDogcHVibGljIFJlZkNvdW50ZWQ8U2hhcmVk
TWVtb3J5PiB7CitjbGFzcyBTaGFyZWRNZW1vcnkgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50
ZWQ8U2hhcmVkTWVtb3J5PiB7CiBwdWJsaWM6CiAgICAgZW51bSBjbGFzcyBQcm90ZWN0aW9uIHsK
ICAgICAgICAgUmVhZE9ubHksCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9TaGFy
ZWFibGVCaXRtYXAuY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvU2hhcmVhYmxlQml0bWFwLmNw
cAppbmRleCA4NDQ4ODdiYmMzYjFiM2E0MzM4NDEyZTk0M2M5ZDY5MmNiMWI2MmIwLi5iMTBkNWE2
M2MxYTU0ODRlYTJkMWYzN2I5NWRkNTU1ZDM5ZTAzOTM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1NoYXJlZC9TaGFyZWFibGVCaXRtYXAuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L1NoYXJlYWJsZUJpdG1hcC5jcHAKQEAgLTE3Miw3ICsxNzIsNiBAQCBTaGFyZWFibGVCaXRtYXA6
OlNoYXJlYWJsZUJpdG1hcChjb25zdCBJbnRTaXplJiBzaXplLCBDb25maWd1cmF0aW9uIGNvbmZp
Z3VyYXRpbwogICAgICwgbV9jb25maWd1cmF0aW9uKGNvbmZpZ3VyYXRpb24pCiAgICAgLCBtX2Rh
dGEoZGF0YSkKIHsKLSAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOwogfQogCiBTaGFyZWFi
bGVCaXRtYXA6OlNoYXJlYWJsZUJpdG1hcChjb25zdCBJbnRTaXplJiBzaXplLCBDb25maWd1cmF0
aW9uIGNvbmZpZ3VyYXRpb24sIFJlZlB0cjxTaGFyZWRNZW1vcnk+IHNoYXJlZE1lbW9yeSkKQEAg
LTE4MSw4ICsxODAsNiBAQCBTaGFyZWFibGVCaXRtYXA6OlNoYXJlYWJsZUJpdG1hcChjb25zdCBJ
bnRTaXplJiBzaXplLCBDb25maWd1cmF0aW9uIGNvbmZpZ3VyYXRpbwogICAgICwgbV9zaGFyZWRN
ZW1vcnkoc2hhcmVkTWVtb3J5KQogICAgICwgbV9kYXRhKG51bGxwdHIpCiB7Ci0gICAgQVNTRVJU
KFJ1bkxvb3A6OmlzTWFpbigpKTsKLQogI2lmIFVTRShESVJFQ1QyRCkKICAgICBjcmVhdGVTaGFy
ZWRSZXNvdXJjZSgpOwogI2VuZGlmCkBAIC0xOTAsOCArMTg3LDYgQEAgU2hhcmVhYmxlQml0bWFw
OjpTaGFyZWFibGVCaXRtYXAoY29uc3QgSW50U2l6ZSYgc2l6ZSwgQ29uZmlndXJhdGlvbiBjb25m
aWd1cmF0aW8KIAogU2hhcmVhYmxlQml0bWFwOjp+U2hhcmVhYmxlQml0bWFwKCkKIHsKLSAgICBB
U1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOwotCiAgICAgaWYgKCFpc0JhY2tlZEJ5U2hhcmVkTWVt
b3J5KCkpCiAgICAgICAgIFNoYXJlYWJsZUJpdG1hcE1hbGxvYzo6ZnJlZShtX2RhdGEpOwogI2lm
IFVTRShESVJFQ1QyRCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1NoYXJlYWJs
ZUJpdG1hcC5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQvU2hhcmVhYmxlQml0bWFwLmgKaW5kZXgg
M2ExZmFkMmM3OWJjZTFjN2U1YTFhM2E3MmU2NDAyYjhmYmIxODU1Zi4uY2VjNWI1OTNjNWZhOGNj
ODhiODU2NGIwMTYwYjQ3ZTllMzMxNDBhMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFy
ZWQvU2hhcmVhYmxlQml0bWFwLmgKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvU2hhcmVhYmxl
Qml0bWFwLmgKQEAgLTI4LDggKzI4LDggQEAKICNpbmNsdWRlICJTaGFyZWRNZW1vcnkuaCIKICNp
bmNsdWRlIDxXZWJDb3JlL0ludFJlY3QuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1BsYXRmb3JtSW1h
Z2UuaD4KLSNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIu
aD4KKyNpbmNsdWRlIDx3dGYvVGhyZWFkU2FmZVJlZkNvdW50ZWQuaD4KIAogI2lmIFVTRShDRykK
ICNpbmNsdWRlICJDb2xvclNwYWNlRGF0YS5oIgpAQCAtNTIsNyArNTIsNyBAQCBjbGFzcyBHcmFw
aGljc0NvbnRleHQ7CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogICAgIAotY2xhc3MgU2hhcmVhYmxl
Qml0bWFwIDogcHVibGljIFJlZkNvdW50ZWQ8U2hhcmVhYmxlQml0bWFwPiB7CitjbGFzcyBTaGFy
ZWFibGVCaXRtYXAgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8U2hhcmVhYmxlQml0bWFw
PiB7CiBwdWJsaWM6CiAgICAgc3RydWN0IENvbmZpZ3VyYXRpb24gewogICAgICAgICBib29sIGlz
T3BhcXVlIHsgZmFsc2UgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL2NnL1No
YXJlYWJsZUJpdG1hcENHLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL2NnL1NoYXJlYWJsZUJp
dG1hcENHLmNwcAppbmRleCAzNjUzNDgyMGFmNWEyMjgzYzZlNmEwNmU3NDMzMTc3YjkwM2RlMGEx
Li44ZjljZDU5NDM2Y2ExNmE2N2MzMDFiNzU0NzYwNTk3ODc2OGE0NDNhIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9jZy9TaGFyZWFibGVCaXRtYXBDRy5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9TaGFyZWQvY2cvU2hhcmVhYmxlQml0bWFwQ0cuY3BwCkBAIC04Nyw3ICs4Nyw2IEBA
IHVuc2lnbmVkIFNoYXJlYWJsZUJpdG1hcDo6Y2FsY3VsYXRlQnl0ZXNQZXJQaXhlbChjb25zdCBD
b25maWd1cmF0aW9uJiBjb25maWd1cmF0CiAKIHN0ZDo6dW5pcXVlX3B0cjxHcmFwaGljc0NvbnRl
eHQ+IFNoYXJlYWJsZUJpdG1hcDo6Y3JlYXRlR3JhcGhpY3NDb250ZXh0KCkKIHsKLSAgICBBU1NF
UlQoUnVuTG9vcDo6aXNNYWluKCkpOwogICAgIHJlZigpOyAvLyBCYWxhbmNlZCBieSBkZXJlZiBp
biByZWxlYXNlQml0bWFwQ29udGV4dERhdGEuCiAKICAgICB1bnNpZ25lZCBieXRlc1BlclBpeGVs
ID0gY2FsY3VsYXRlQnl0ZXNQZXJQaXhlbChtX2NvbmZpZ3VyYXRpb24pOwpAQCAtMTU3LDEzICsx
NTYsNiBAQCBSZXRhaW5QdHI8Q0dJbWFnZVJlZj4gU2hhcmVhYmxlQml0bWFwOjpjcmVhdGVDR0lt
YWdlKENHRGF0YVByb3ZpZGVyUmVmIGRhdGFQcm92aQogCiB2b2lkIFNoYXJlYWJsZUJpdG1hcDo6
cmVsZWFzZUJpdG1hcENvbnRleHREYXRhKHZvaWQqIHR5cGVsZXNzQml0bWFwLCB2b2lkKiB0eXBl
bGVzc0RhdGEpCiB7Ci0gICAgaWYgKCFSdW5Mb29wOjppc01haW4oKSkgewotICAgICAgICBSdW5M
b29wOjptYWluKCkuZGlzcGF0Y2goW3R5cGVsZXNzQml0bWFwLCB0eXBlbGVzc0RhdGFdIHsKLSAg
ICAgICAgICAgIHJlbGVhc2VCaXRtYXBDb250ZXh0RGF0YSh0eXBlbGVzc0JpdG1hcCwgdHlwZWxl
c3NEYXRhKTsKLSAgICAgICAgfSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KICAgICBTaGFy
ZWFibGVCaXRtYXAqIGJpdG1hcCA9IHN0YXRpY19jYXN0PFNoYXJlYWJsZUJpdG1hcCo+KHR5cGVs
ZXNzQml0bWFwKTsKICAgICBBU1NFUlRfVU5VU0VEKHR5cGVsZXNzRGF0YSwgYml0bWFwLT5kYXRh
KCkgPT0gdHlwZWxlc3NEYXRhKTsKICAgICBiaXRtYXAtPmRlcmVmKCk7IC8vIEJhbGFuY2VkIGJ5
IHJlZiBpbiBjcmVhdGVHcmFwaGljc0NvbnRleHQuCkBAIC0xNzEsMTMgKzE2Myw2IEBAIHZvaWQg
U2hhcmVhYmxlQml0bWFwOjpyZWxlYXNlQml0bWFwQ29udGV4dERhdGEodm9pZCogdHlwZWxlc3NC
aXRtYXAsIHZvaWQqIHR5cGVsCiAKIHZvaWQgU2hhcmVhYmxlQml0bWFwOjpyZWxlYXNlRGF0YVBy
b3ZpZGVyRGF0YSh2b2lkKiB0eXBlbGVzc0JpdG1hcCwgY29uc3Qgdm9pZCogdHlwZWxlc3NEYXRh
LCBzaXplX3QpCiB7Ci0gICAgaWYgKCFSdW5Mb29wOjppc01haW4oKSkgewotICAgICAgICBSdW5M
b29wOjptYWluKCkuZGlzcGF0Y2goW3R5cGVsZXNzQml0bWFwLCB0eXBlbGVzc0RhdGFdIHsKLSAg
ICAgICAgICAgIHJlbGVhc2VEYXRhUHJvdmlkZXJEYXRhKHR5cGVsZXNzQml0bWFwLCB0eXBlbGVz
c0RhdGEsIDApOwotICAgICAgICB9KTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQogICAgIFNo
YXJlYWJsZUJpdG1hcCogYml0bWFwID0gc3RhdGljX2Nhc3Q8U2hhcmVhYmxlQml0bWFwKj4odHlw
ZWxlc3NCaXRtYXApOwogICAgIEFTU0VSVF9VTlVTRUQodHlwZWxlc3NEYXRhLCBiaXRtYXAtPmRh
dGEoKSA9PSB0eXBlbGVzc0RhdGEpOwogICAgIGJpdG1hcC0+ZGVyZWYoKTsgLy8gQmFsYW5jZWQg
YnkgcmVmIGluIGNyZWF0ZUNHSW1hZ2UuCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>417422</attachid>
            <date>2021-01-11 17:28:11 -0800</date>
            <delta_ts>2021-01-12 17:00:32 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-220476-20210111172810.patch</filename>
            <type>text/plain</type>
            <size>35528</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcxMzE5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZGI2Zjg1Yjk3YWFiNTY3
NzkxYTdmZGQ3MzFiYTdlOGViYzE5ZmJhYy4uYzQ5MjI1NjA2ODI4OWJhY2UwOTkxZGUwODE5MDA5
MDQ1MDY4NzAxNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM4IEBACisyMDIxLTAxLTA4ICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgW0dQVVByb2Nlc3NdIE1vdmUg
RE9NIC8gQ2FudmFzIHJlbmRlcmluZyBvZmYgdGhlIG1haW4gdGhyZWFkIGluIHRoZSBHUFVQcm9j
ZXNzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjA0
NzYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBNYWtl
IHNvbWUgY2FjaGVzIHRocmVhZC1zYWZlIG5vdyB0aGF0IHdlIGRvIHJlbmRlcmluZyBvZmYgdGhl
IG1haW4gdGhyZWFkIGluCisgICAgICAgIHRoZSBHUFVQcm9jZXNzLgorCisgICAgICAgIE5vIG5l
dyB0ZXN0cywgY292ZXJlZCBieSBleGlzdGluZyB0ZXN0cy4KKworICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL0ltYWdlQnVmZmVyLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvU2hh
ZG93Qmx1ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTY3JhdGNoQnVmZmVyOjpTY3JhdGNoQnVm
ZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcmF0Y2hCdWZmZXI6OmdldFNjcmF0Y2hCdWZmZXIp
OgorICAgICAgICAoV2ViQ29yZTo6U2NyYXRjaEJ1ZmZlcjo6c2V0Q2FjaGVkU2hhZG93VmFsdWVz
KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcmF0Y2hCdWZmZXI6OnNldENhY2hlZEluc2V0U2hhZG93
VmFsdWVzKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcmF0Y2hCdWZmZXI6OnNjaGVkdWxlU2NyYXRj
aEJ1ZmZlclB1cmdlKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcmF0Y2hCdWZmZXI6OnB1cmdlVGlt
ZXJGaXJlZCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JhdGNoQnVmZmVyOjpjbGVhclNjcmF0Y2hC
dWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6U2NyYXRjaEJ1ZmZlcjo6c2luZ2xldG9uKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlclV0aWxpdGllc0NHLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OnV0aUZyb21JbWFnZUJ1ZmZlck1JTUVUeXBlKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9TdWJpbWFnZUNhY2hlV2l0aFRpbWVyLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlN1YmltYWdlQ2FjaGVXaXRoVGltZXI6OlN1YmltYWdlQ2FjaGVXaXRoVGlt
ZXIpOgorICAgICAgICAoV2ViQ29yZTo6U3ViaW1hZ2VDYWNoZVdpdGhUaW1lcjo6cHJ1bmVDYWNo
ZVRpbWVyRmlyZWQpOgorICAgICAgICAoV2ViQ29yZTo6U3ViaW1hZ2VDYWNoZVdpdGhUaW1lcjo6
c3ViaW1hZ2UpOgorICAgICAgICAoV2ViQ29yZTo6U3ViaW1hZ2VDYWNoZVdpdGhUaW1lcjo6Y2xl
YXJJbWFnZUFuZFN1YmltYWdlcyk6CisgICAgICAgIChXZWJDb3JlOjpTdWJpbWFnZUNhY2hlV2l0
aFRpbWVyOjpjbGVhckFsbCk6CisgICAgICAgIChXZWJDb3JlOjpTdWJpbWFnZUNhY2hlV2l0aFRp
bWVyOjpzdWJpbWFnZUNhY2hlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9TdWJp
bWFnZUNhY2hlV2l0aFRpbWVyLmg6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9tYWMvVVRJ
VXRpbGl0aWVzLm1tOgorICAgICAgICAoV2ViQ29yZTo6VVRJRnJvbU1JTUVUeXBlKToKKwogMjAy
MS0wMS0wOCAgUGhpbGlwcGUgTm9ybWFuZCAgPHBub3JtYW5kQGlnYWxpYS5jb20+CiAKICAgICAg
ICAgW0dTdHJlYW1lcl0gUGxheWVyIGF1ZGlvIHNpbmsgbmVlZHMgdG8gYmUgaW5pdGlhbGl6ZWQg
ZWFybGllcgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2Vi
S2l0L0NoYW5nZUxvZwppbmRleCAwZWVmNjRmN2YzYjMzNTJmNzAwZTkwNDg4Njg2ZTAyMDhhYzM4
ZjMwLi4zYjU0YzJmYmU3MmZhMmI0MmJlNDEzNjVjMWE1ODNmNWRhNWRiNmIzIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpA
QCAtMSwzICsxLDQxIEBACisyMDIxLTAxLTA4ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5j
b20+CisKKyAgICAgICAgW0dQVVByb2Nlc3NdIE1vdmUgRE9NIC8gQ2FudmFzIHJlbmRlcmluZyBv
ZmYgdGhlIG1haW4gdGhyZWFkIGluIHRoZSBHUFVQcm9jZXNzCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjA0NzYKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBNb3ZlIERPTSAvIENhbnZhcyByZW5kZXJpbmcg
b2ZmIHRoZSBtYWluIHRocmVhZCAoYW5kIG9uIGEgaGlnaC1wcmlvcml0eSBzZXJpYWwgV29ya1F1
ZXVlKSBpbiB0aGUKKyAgICAgICAgR1BVUHJvY2VzcyBieSBtYWtpbmcgUmVtb3RlUmVuZGVyaW5n
QmFja2VuZCBhIFdvcmtRdWV1ZU1lc3NhZ2VSZWNlaXZlci4gVGhlcmUgaXMgYSBzZXJpYWwgV29y
a1F1ZXVlCisgICAgICAgIHBlciBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kLCB3aGljaCBtZWFucyBl
YWNoIFdlYlBhZ2UgZ2V0cyBpdHMgb3duIFdvcmtRdWV1ZS4KKworICAgICAgICBMb2NhbCB0ZXN0
aW5nIHNlZW1zIHRvIGluZGljYXRlIHRoYXQgdGhpcyBjaGFuZ2UgaXMgcGVyZi1uZXV0cmFsIChJ
IGhhdmUgc2NoZWR1bGVkIEEvQiB0ZXN0aW5nIG9uCisgICAgICAgIHRoZSBib3RzIHRvIGNvbmZp
cm0pLiBJIHRoaW5rIHRoaXMgaXMgZ29vZCBuZXdzIHNpbmNlIEkgYmVsaWV2ZSB0aGlzIG5ldyBh
cmNoaXRlY3R1cmUgd2lsbCBnaXZlCisgICAgICAgIHVzIG1vcmUgb3B0aW1pemF0aW9uIG9wcG9y
dHVuaXRpZXMgaW4gdGhlIGZ1dHVyZS4gRm9yIGV4YW1wbGUsIHdlIHdvdWxkIGJlIGFibGUgdG8g
bW9yZQorICAgICAgICBhZ2dyZXNzaXZlbHkgd2FpdCBvbiB0aGUgY3Jvc3MtcHJvY2VzcyBzZW1h
cGhvcmUgd2hlbiB3YWl0aW5nIGZvciBuZXcgRGlzcGxheUxpc3QgZW50cmllcyB3aXRob3V0Cisg
ICAgICAgIHdvcnJ5aW5nIGFib3V0IGJsb2NraW5nIHRoZSBtYWluIHRocmVhZC4KKworICAgICAg
ICBJIGhhdmUgcnVuIGxheW91dCB0ZXN0cyBpbiBEZWJ1ZyBvbiBib3RoIG1hY09TICYgaU9TIHdp
dGggdGhlIEdQVVByb2Nlc3MgZW5hYmxlZCBhbmQgSSBiZWxpZXZlIEkKKyAgICAgICAgaGF2ZSBm
aXhlZCBhbGwgdGhlIGNyYXNoZXMgdGhhdCB3ZXJlIGRpc2NvdmVyZWQuCisKKyAgICAgICAgKiBH
UFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaDoKKyAgICAgICAgKiBHUFVQcm9j
ZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQuY3BwOgorICAgICAgICAoV2ViS2l0
OjpyZW5kZXJpbmdXb3JrUXVldWUpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVSZW5kZXJpbmdC
YWNrZW5kOjpjcmVhdGUpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5k
OjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlUmVuZGVy
aW5nQmFja2VuZDo6flJlbW90ZVJlbmRlcmluZ0JhY2tlbmQpOgorICAgICAgICAqIEdQVVByb2Nl
c3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5oOgorICAgICAgICAqIEdQVVByb2Nl
c3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5tZXNzYWdlcy5pbjoKKyAgICAgICAg
KiBQbGF0Zm9ybS9TaGFyZWRNZW1vcnkuaDoKKyAgICAgICAgKiBTaGFyZWQvU2hhcmVhYmxlQml0
bWFwLmNwcDoKKyAgICAgICAgKFdlYktpdDo6U2hhcmVhYmxlQml0bWFwOjpTaGFyZWFibGVCaXRt
YXApOgorICAgICAgICAoV2ViS2l0OjpTaGFyZWFibGVCaXRtYXA6On5TaGFyZWFibGVCaXRtYXAp
OgorICAgICAgICAqIFNoYXJlZC9TaGFyZWFibGVCaXRtYXAuaDoKKyAgICAgICAgKiBTaGFyZWQv
Y2cvU2hhcmVhYmxlQml0bWFwQ0cuY3BwOgorICAgICAgICAoV2ViS2l0OjpTaGFyZWFibGVCaXRt
YXA6OmNyZWF0ZUdyYXBoaWNzQ29udGV4dCk6CisgICAgICAgIChXZWJLaXQ6OlNoYXJlYWJsZUJp
dG1hcDo6cmVsZWFzZUJpdG1hcENvbnRleHREYXRhKToKKyAgICAgICAgKFdlYktpdDo6U2hhcmVh
YmxlQml0bWFwOjpyZWxlYXNlRGF0YVByb3ZpZGVyRGF0YSk6CisKIDIwMjEtMDEtMDggIEppZXdl
biBUYW4gIDxqaWV3ZW5fdGFuQGFwcGxlLmNvbT4KIAogICAgICAgICBbV2ViQXV0aG5dIEFkb3B0
IG5ldyBVSSBmb3IgdGhlIHVwZGF0ZSBmbG93CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9U
aW55TFJVQ2FjaGUuaCBiL1NvdXJjZS9XVEYvd3RmL1RpbnlMUlVDYWNoZS5oCmluZGV4IGQ4YmM3
YjgxMzExOTllMDNhMWZkODdhNjRmNTcxNDI3OGYzODM5N2MuLjkwM2U1YmJhNzM4MWQ4MzRlNzMz
NGQ5MWNmYmE5YWU0ODcxMDUxMmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL1RpbnlMUlVD
YWNoZS5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL1RpbnlMUlVDYWNoZS5oCkBAIC0zNSw2ICszNSw3
IEBAIHN0cnVjdCBUaW55TFJVQ2FjaGVQb2xpY3kgewogICAgIHN0YXRpYyBib29sIGlzS2V5TnVs
bChjb25zdCBLZXlUeXBlJikgeyByZXR1cm4gZmFsc2U7IH0KICAgICBzdGF0aWMgVmFsdWVUeXBl
IGNyZWF0ZVZhbHVlRm9yTnVsbEtleSgpIHsgcmV0dXJuIHsgfTsgfQogICAgIHN0YXRpYyBWYWx1
ZVR5cGUgY3JlYXRlVmFsdWVGb3JLZXkoY29uc3QgS2V5VHlwZSYpIHsgcmV0dXJuIHsgfTsgfQor
ICAgIHN0YXRpYyBLZXlUeXBlIGNyZWF0ZUtleUZvclN0b3JhZ2UoY29uc3QgS2V5VHlwZSYga2V5
KSB7IHJldHVybiBrZXk7IH0KIH07CiAKIHRlbXBsYXRlPHR5cGVuYW1lIEtleVR5cGUsIHR5cGVu
YW1lIFZhbHVlVHlwZSwgc2l6ZV90IGNhcGFjaXR5ID0gNCwgdHlwZW5hbWUgUG9saWN5ID0gVGlu
eUxSVUNhY2hlUG9saWN5PEtleVR5cGUsIFZhbHVlVHlwZT4+CkBAIC02Niw3ICs2Nyw3IEBAIHB1
YmxpYzoKICAgICAgICAgaWYgKG1fY2FjaGUuc2l6ZSgpID09IGNhcGFjaXR5KQogICAgICAgICAg
ICAgbV9jYWNoZS5yZW1vdmUoMCk7CiAKLSAgICAgICAgbV9jYWNoZS5hcHBlbmQoc3RkOjptYWtl
X3BhaXIoa2V5LCBQb2xpY3k6OmNyZWF0ZVZhbHVlRm9yS2V5KGtleSkpKTsKKyAgICAgICAgbV9j
YWNoZS5hcHBlbmQoc3RkOjptYWtlX3BhaXIoUG9saWN5OjpjcmVhdGVLZXlGb3JTdG9yYWdlKGtl
eSksIFBvbGljeTo6Y3JlYXRlVmFsdWVGb3JLZXkoa2V5KSkpOwogICAgICAgICByZXR1cm4gbV9j
YWNoZS5sYXN0KCkuc2Vjb25kOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0ltYWdlQnVmZmVyLmgKaW5kZXggNDI1YTMyZWE0NDljMGVkNTIyNmNjNTg5N2Q5
Y2MxNmI3ODYyMGZkYi4uMzZkNzRjYTM5ZGUxN2NkMDNjMTNiYjc1ZTRkNWUzODQ4YzMzZWNmZSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXIu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlci5oCkBA
IC00Miw3ICs0Miw3IEBAIGNsYXNzIERyYXdpbmdDb250ZXh0Owogc3RydWN0IEl0ZW1CdWZmZXJI
YW5kbGU7CiB9CiAKLWNsYXNzIEltYWdlQnVmZmVyIDogcHVibGljIFJlZkNvdW50ZWQ8SW1hZ2VC
dWZmZXI+LCBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8SW1hZ2VCdWZmZXI+IHsKK2NsYXNzIEltYWdl
QnVmZmVyIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPEltYWdlQnVmZmVyPiwgcHVibGlj
IENhbk1ha2VXZWFrUHRyPEltYWdlQnVmZmVyPiB7CiBwdWJsaWM6CiAgICAgLy8gV2lsbCByZXR1
cm4gYSBudWxsIHBvaW50ZXIgb24gYWxsb2NhdGlvbiBmYWlsdXJlLgogICAgIFdFQkNPUkVfRVhQ
T1JUIHN0YXRpYyBSZWZQdHI8SW1hZ2VCdWZmZXI+IGNyZWF0ZShjb25zdCBGbG9hdFNpemUmLCBS
ZW5kZXJpbmdNb2RlLCBTaG91bGRVc2VEaXNwbGF5TGlzdCwgUmVuZGVyaW5nUHVycG9zZSwgZmxv
YXQgcmVzb2x1dGlvblNjYWxlID0gMSwgQ29sb3JTcGFjZSA9IENvbG9yU3BhY2U6OlNSR0IsIFBp
eGVsRm9ybWF0ID0gUGl4ZWxGb3JtYXQ6OkJHUkE4LCBjb25zdCBIb3N0V2luZG93KiA9IG51bGxw
dHIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvU2hhZG93
Qmx1ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9TaGFkb3dCbHVyLmNw
cAppbmRleCA4MzM4OWJhNjgwNTYzNzdmOTlmMGY1YTFjZDMwN2JmNmNmOTFkODJhLi5hYzE0NmQ5
OTU3MDk1YjI3ZmJkNzgwNzExZWM4YjkwNzI1YTJmYmVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9TaGFkb3dCbHVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9TaGFkb3dCbHVyLmNwcApAQCAtMzYsOSArMzYsMTEgQEAKICNp
bmNsdWRlICJJbWFnZUJ1ZmZlci5oIgogI2luY2x1ZGUgIkltYWdlRGF0YS5oIgogI2luY2x1ZGUg
IlRpbWVyLmgiCisjaW5jbHVkZSA8d3RmL0xvY2suaD4KICNpbmNsdWRlIDx3dGYvTWF0aEV4dHJh
cy5oPgogI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgogI2luY2x1ZGUgPHd0Zi9Ob25j
b3B5YWJsZS5oPgorI2luY2x1ZGUgPHd0Zi9SdW5Mb29wLmg+CiAjaW5jbHVkZSA8d3RmL1Njb3Bl
Lmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTYxLDIzICs2MywyMSBAQCBjbGFzcyBTY3Jh
dGNoQnVmZmVyIHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBT
Y3JhdGNoQnVmZmVyKCkKLSAgICAgICAgOiBtX3B1cmdlVGltZXIoKnRoaXMsICZTY3JhdGNoQnVm
ZmVyOjpjbGVhclNjcmF0Y2hCdWZmZXIpCi0gICAgICAgICwgbV9sYXN0V2FzSW5zZXQoZmFsc2Up
Ci0jaWYgQVNTRVJUX0VOQUJMRUQKLSAgICAgICAgLCBtX2J1ZmZlckluVXNlKGZhbHNlKQotI2Vu
ZGlmCisgICAgICAgIDogbV9wdXJnZVRpbWVyKFJ1bkxvb3A6Om1haW4oKSwgdGhpcywgJlNjcmF0
Y2hCdWZmZXI6OnB1cmdlVGltZXJGaXJlZCkKICAgICB7CiAgICAgfQogCi0gICAgSW1hZ2VCdWZm
ZXIqIGdldFNjcmF0Y2hCdWZmZXIoY29uc3QgSW50U2l6ZSYgc2l6ZSkKKyAgICBSZWZQdHI8SW1h
Z2VCdWZmZXI+IGdldFNjcmF0Y2hCdWZmZXIoY29uc3QgSW50U2l6ZSYgc2l6ZSkKICAgICB7Ci0g
ICAgICAgIEFTU0VSVCghbV9idWZmZXJJblVzZSk7Ci0jaWYgQVNTRVJUX0VOQUJMRUQKLSAgICAg
ICAgbV9idWZmZXJJblVzZSA9IHRydWU7Ci0jZW5kaWYKKyAgICAgICAgQVNTRVJUKGxvY2soKS5p
c0hlbGQoKSk7CisgICAgICAgIGF1dG8gcmVsZWFzZUxheWVySW1hZ2UgPSBtYWtlU2NvcGVFeGl0
KFt0aGlzXSB7CisgICAgICAgICAgICBpZiAobV9pbWFnZUJ1ZmZlcikKKyAgICAgICAgICAgICAg
ICBzY2hlZHVsZVNjcmF0Y2hCdWZmZXJQdXJnZSgpOworICAgICAgICB9KTsKKwogICAgICAgICAv
LyBXZSBkbyBub3QgbmVlZCB0byByZWNyZWF0ZSB0aGUgYnVmZmVyIGlmIHRoZSBjdXJyZW50IGJ1
ZmZlciBpcyBsYXJnZSBlbm91Z2guCiAgICAgICAgIGlmIChtX2ltYWdlQnVmZmVyICYmIG1faW1h
Z2VCdWZmZXItPmxvZ2ljYWxTaXplKCkud2lkdGgoKSA+PSBzaXplLndpZHRoKCkgJiYgbV9pbWFn
ZUJ1ZmZlci0+bG9naWNhbFNpemUoKS5oZWlnaHQoKSA+PSBzaXplLmhlaWdodCgpKQotICAgICAg
ICAgICAgcmV0dXJuIG1faW1hZ2VCdWZmZXIuZ2V0KCk7CisgICAgICAgICAgICByZXR1cm4gbV9p
bWFnZUJ1ZmZlcjsKIAogICAgICAgICAvLyBSb3VuZCB0byB0aGUgbmVhcmVzdCAzMiBwaXhlbHMg
c28gd2UgZG8gbm90IGdyb3cgdGhlIGJ1ZmZlciBmb3Igc2ltaWxhciBzaXplZCByZXF1ZXN0cy4K
ICAgICAgICAgSW50U2l6ZSByb3VuZGVkU2l6ZShyb3VuZFVwVG9NdWx0aXBsZU9mMzIoc2l6ZS53
aWR0aCgpKSwgcm91bmRVcFRvTXVsdGlwbGVPZjMyKHNpemUuaGVpZ2h0KCkpKTsKQEAgLTg2LDEx
ICs4NiwxMiBAQCBwdWJsaWM6CiAKICAgICAgICAgLy8gU2hhZG93Qmx1ciBpcyBub3QgdXNlZCB3
aXRoIGFjY2VsZXJhdGVkIGRyYXdpbmcsIHNvIGl0J3MgT0sgdG8gbWFrZSBhbiB1bmNvbmRpdGlv
bmFsbHkgdW5hY2NlbGVyYXRlZCBidWZmZXIuCiAgICAgICAgIG1faW1hZ2VCdWZmZXIgPSBJbWFn
ZUJ1ZmZlcjo6Y3JlYXRlKHJvdW5kZWRTaXplLCBSZW5kZXJpbmdNb2RlOjpVbmFjY2VsZXJhdGVk
LCAxKTsKLSAgICAgICAgcmV0dXJuIG1faW1hZ2VCdWZmZXIuZ2V0KCk7CisgICAgICAgIHJldHVy
biBtX2ltYWdlQnVmZmVyOwogICAgIH0KIAogICAgIGJvb2wgc2V0Q2FjaGVkU2hhZG93VmFsdWVz
KGNvbnN0IEZsb2F0U2l6ZSYgcmFkaXVzLCBjb25zdCBDb2xvciYgY29sb3IsIGNvbnN0IEZsb2F0
UmVjdCYgc2hhZG93UmVjdCwgY29uc3QgRmxvYXRSb3VuZGVkUmVjdDo6UmFkaWkmIHJhZGlpLCBj
b25zdCBGbG9hdFNpemUmIGxheWVyU2l6ZSkKICAgICB7CisgICAgICAgIEFTU0VSVChsb2NrKCku
aXNIZWxkKCkpOwogICAgICAgICBpZiAoIW1fbGFzdFdhc0luc2V0ICYmIG1fbGFzdFJhZGl1cyA9
PSByYWRpdXMgJiYgbV9sYXN0Q29sb3IgPT0gY29sb3IgJiYgbV9sYXN0U2hhZG93UmVjdCA9PSBz
aGFkb3dSZWN0ICYmICBtX2xhc3RSYWRpaSA9PSByYWRpaSAmJiBtX2xhc3RMYXllclNpemUgPT0g
bGF5ZXJTaXplKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogCkBAIC0xMDYsNiArMTA3LDcg
QEAgcHVibGljOgogCiAgICAgYm9vbCBzZXRDYWNoZWRJbnNldFNoYWRvd1ZhbHVlcyhjb25zdCBG
bG9hdFNpemUmIHJhZGl1cywgY29uc3QgQ29sb3ImIGNvbG9yLCBjb25zdCBGbG9hdFJlY3QmIGJv
dW5kcywgY29uc3QgRmxvYXRSZWN0JiBzaGFkb3dSZWN0LCBjb25zdCBGbG9hdFJvdW5kZWRSZWN0
OjpSYWRpaSYgcmFkaWkpCiAgICAgeworICAgICAgICBBU1NFUlQobG9jaygpLmlzSGVsZCgpKTsK
ICAgICAgICAgaWYgKG1fbGFzdFdhc0luc2V0ICYmIG1fbGFzdFJhZGl1cyA9PSByYWRpdXMgJiYg
bV9sYXN0Q29sb3IgPT0gY29sb3IgJiYgbV9sYXN0SW5zZXRCb3VuZHMgPT0gYm91bmRzICYmIHNo
YWRvd1JlY3QgPT0gbV9sYXN0U2hhZG93UmVjdCAmJiByYWRpaSA9PSBtX2xhc3RSYWRpaSkKICAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKIApAQCAtMTE5LDUwICsxMjEsNTcgQEAgcHVibGljOgog
ICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAKKyAgICBzdGF0aWMgU2NyYXRjaEJ1ZmZlciYg
c2luZ2xldG9uKCk7CisgICAgc3RhdGljIExvY2smIGxvY2soKTsKKworcHJpdmF0ZToKICAgICB2
b2lkIHNjaGVkdWxlU2NyYXRjaEJ1ZmZlclB1cmdlKCkKICAgICB7Ci0jaWYgQVNTRVJUX0VOQUJM
RUQKLSAgICAgICAgbV9idWZmZXJJblVzZSA9IGZhbHNlOwotI2VuZGlmCi0gICAgICAgIGlmICht
X3B1cmdlVGltZXIuaXNBY3RpdmUoKSkKLSAgICAgICAgICAgIG1fcHVyZ2VUaW1lci5zdG9wKCk7
Ci0KKyAgICAgICAgQVNTRVJUKGxvY2soKS5pc0hlbGQoKSk7CiAgICAgICAgIGNvbnN0IFNlY29u
ZHMgc2NyYXRjaEJ1ZmZlclB1cmdlSW50ZXJ2YWwgeyAyX3MgfTsKICAgICAgICAgbV9wdXJnZVRp
bWVyLnN0YXJ0T25lU2hvdChzY3JhdGNoQnVmZmVyUHVyZ2VJbnRlcnZhbCk7CiAgICAgfQogCi0g
ICAgc3RhdGljIFNjcmF0Y2hCdWZmZXImIHNpbmdsZXRvbigpOworICAgIHZvaWQgcHVyZ2VUaW1l
ckZpcmVkKCkKKyAgICB7CisgICAgICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisgICAgICAg
IGlmIChhdXRvIGxvY2tlciA9IHRyeUhvbGRMb2NrKGxvY2soKSkpCisgICAgICAgICAgICBjbGVh
clNjcmF0Y2hCdWZmZXIoKTsKKyAgICB9CiAKLXByaXZhdGU6CiAgICAgdm9pZCBjbGVhclNjcmF0
Y2hCdWZmZXIoKQogICAgIHsKKyAgICAgICAgQVNTRVJUKGxvY2soKS5pc0hlbGQoKSk7CiAgICAg
ICAgIG1faW1hZ2VCdWZmZXIgPSBudWxscHRyOwogICAgICAgICBtX2xhc3RSYWRpdXMgPSBGbG9h
dFNpemUoKTsKICAgICAgICAgbV9sYXN0TGF5ZXJTaXplID0gRmxvYXRTaXplKCk7CiAgICAgfQog
CiAgICAgUmVmUHRyPEltYWdlQnVmZmVyPiBtX2ltYWdlQnVmZmVyOwotICAgIFRpbWVyIG1fcHVy
Z2VUaW1lcjsKKyAgICBSdW5Mb29wOjpUaW1lcjxTY3JhdGNoQnVmZmVyPiBtX3B1cmdlVGltZXI7
CiAKICAgICBGbG9hdFJlY3QgbV9sYXN0SW5zZXRCb3VuZHM7CiAgICAgRmxvYXRSZWN0IG1fbGFz
dFNoYWRvd1JlY3Q7CiAgICAgRmxvYXRSb3VuZGVkUmVjdDo6UmFkaWkgbV9sYXN0UmFkaWk7CiAg
ICAgQ29sb3IgbV9sYXN0Q29sb3I7CiAgICAgRmxvYXRTaXplIG1fbGFzdFJhZGl1czsKLSAgICBi
b29sIG1fbGFzdFdhc0luc2V0OworICAgIGJvb2wgbV9sYXN0V2FzSW5zZXQgeyBmYWxzZSB9Owog
ICAgIEZsb2F0U2l6ZSBtX2xhc3RMYXllclNpemU7Ci0KLSNpZiBBU1NFUlRfRU5BQkxFRAotICAg
IGJvb2wgbV9idWZmZXJJblVzZTsKLSNlbmRpZgogfTsKIAogU2NyYXRjaEJ1ZmZlciYgU2NyYXRj
aEJ1ZmZlcjo6c2luZ2xldG9uKCkKIHsKKyAgICBBU1NFUlQobG9jaygpLmlzSGVsZCgpKTsKICAg
ICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8U2NyYXRjaEJ1ZmZlcj4gc2NyYXRjaEJ1ZmZlcjsKICAg
ICByZXR1cm4gc2NyYXRjaEJ1ZmZlcjsKIH0KIAorTG9jayYgU2NyYXRjaEJ1ZmZlcjo6bG9jaygp
Cit7CisgICAgc3RhdGljIExvY2sgbG9jazsKKyAgICByZXR1cm4gbG9jazsKK30KKwogc3RhdGlj
IGZsb2F0IHJhZGl1c1RvTGVnYWN5UmFkaXVzKGZsb2F0IHJhZGl1cykKIHsKICAgICByZXR1cm4g
cmFkaXVzID4gOCA/IDggKyA0ICogc3FydCgocmFkaXVzIC0gOCkgLyAyKSA6IHJhZGl1czsKQEAg
LTY4MywyNiArNjkyLDMyIEBAIHZvaWQgU2hhZG93Qmx1cjo6ZHJhd0luc2V0U2hhZG93V2l0aG91
dFRpbGluZyhjb25zdCBBZmZpbmVUcmFuc2Zvcm0mLCBjb25zdCBGbG9hCiAKIHZvaWQgU2hhZG93
Qmx1cjo6ZHJhd1JlY3RTaGFkb3dXaXRoVGlsaW5nKGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgdHJh
bnNmb3JtLCBjb25zdCBGbG9hdFJvdW5kZWRSZWN0JiBzaGFkb3dlZFJlY3QsIGNvbnN0IEludFNp
emUmIHRlbXBsYXRlU2l6ZSwgY29uc3QgSW50U2l6ZSYgZWRnZVNpemUsIGNvbnN0IERyYXdJbWFn
ZUNhbGxiYWNrJiBkcmF3SW1hZ2UsIGNvbnN0IEZpbGxSZWN0Q2FsbGJhY2smIGZpbGxSZWN0LCBj
b25zdCBMYXllckltYWdlUHJvcGVydGllcyYgbGF5ZXJJbWFnZVByb3BlcnRpZXMpCiB7CisgICAg
UmVmUHRyPEltYWdlQnVmZmVyPiBsYXllckltYWdlQnVmZmVyOwogI2lmIFVTRShDRykKLSAgICBh
dXRvKiBsYXllckltYWdlID0gU2NyYXRjaEJ1ZmZlcjo6c2luZ2xldG9uKCkuZ2V0U2NyYXRjaEJ1
ZmZlcih0ZW1wbGF0ZVNpemUpOwotICAgIGF1dG8gcmVsZWFzZUxheWVySW1hZ2UgPSBtYWtlU2Nv
cGVFeGl0KFtdIHsKLSAgICAgICAgU2NyYXRjaEJ1ZmZlcjo6c2luZ2xldG9uKCkuc2NoZWR1bGVT
Y3JhdGNoQnVmZmVyUHVyZ2UoKTsKLSAgICB9KTsKKyAgICBhdXRvIGxvY2tlciA9IHRyeUhvbGRM
b2NrKFNjcmF0Y2hCdWZmZXI6OmxvY2soKSk7CisgICAgaWYgKGxvY2tlcikgeworICAgICAgICBs
YXllckltYWdlQnVmZmVyID0gU2NyYXRjaEJ1ZmZlcjo6c2luZ2xldG9uKCkuZ2V0U2NyYXRjaEJ1
ZmZlcih0ZW1wbGF0ZVNpemUpOworICAgICAgICBpZiAoIWxheWVySW1hZ2VCdWZmZXIpCisgICAg
ICAgICAgICByZXR1cm47CisgICAgfQogI2Vsc2UKICAgICBVTlVTRURfUEFSQU0obGF5ZXJJbWFn
ZVByb3BlcnRpZXMpOwotICAgIGF1dG8gbGF5ZXJJbWFnZUJ1ZmZlciA9IEltYWdlQnVmZmVyOjpj
cmVhdGUodGVtcGxhdGVTaXplLCBSZW5kZXJpbmdNb2RlOjpVbmFjY2VsZXJhdGVkLCAxKTsKLSAg
ICBhdXRvKiBsYXllckltYWdlID0gbGF5ZXJJbWFnZUJ1ZmZlci5nZXQoKTsKICNlbmRpZgogCi0g
ICAgaWYgKCFsYXllckltYWdlKQotICAgICAgICByZXR1cm47CisgICAgaWYgKCFsYXllckltYWdl
QnVmZmVyKSB7CisgICAgICAgIGxheWVySW1hZ2VCdWZmZXIgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRl
KHRlbXBsYXRlU2l6ZSwgUmVuZGVyaW5nTW9kZTo6VW5hY2NlbGVyYXRlZCwgMSk7CisgICAgICAg
IGlmICghbGF5ZXJJbWFnZUJ1ZmZlcikKKyAgICAgICAgICAgIHJldHVybjsKKyAgICB9CisgICAg
YXV0byogbGF5ZXJJbWFnZSA9IGxheWVySW1hZ2VCdWZmZXIuZ2V0KCk7CiAKICAgICBGbG9hdFJl
Y3QgdGVtcGxhdGVTaGFkb3cgPSBGbG9hdFJlY3QoZWRnZVNpemUud2lkdGgoKSwgZWRnZVNpemUu
aGVpZ2h0KCksIHRlbXBsYXRlU2l6ZS53aWR0aCgpIC0gMiAqIGVkZ2VTaXplLndpZHRoKCksIHRl
bXBsYXRlU2l6ZS5oZWlnaHQoKSAtIDIgKiBlZGdlU2l6ZS5oZWlnaHQoKSk7CiAKICAgICBib29s
IHJlZHJhd05lZWRlZCA9IHRydWU7CiAjaWYgVVNFKENHKQogICAgIC8vIE9ubHkgcmVkcmF3IGlu
IHRoZSBzY3JhdGNoIGJ1ZmZlciBpZiBpdHMgY2FjaGVkIGNvbnRlbnRzIGRvbid0IG1hdGNoIG91
ciBuZWVkcwotICAgIHJlZHJhd05lZWRlZCA9IFNjcmF0Y2hCdWZmZXI6OnNpbmdsZXRvbigpLnNl
dENhY2hlZFNoYWRvd1ZhbHVlcyhtX2JsdXJSYWRpdXMsIG1fY29sb3IsIHRlbXBsYXRlU2hhZG93
LCBzaGFkb3dlZFJlY3QucmFkaWkoKSwgbGF5ZXJJbWFnZVByb3BlcnRpZXMubGF5ZXJTaXplKTsK
KyAgICBpZiAobG9ja2VyKQorICAgICAgICByZWRyYXdOZWVkZWQgPSBTY3JhdGNoQnVmZmVyOjpz
aW5nbGV0b24oKS5zZXRDYWNoZWRTaGFkb3dWYWx1ZXMobV9ibHVyUmFkaXVzLCBtX2NvbG9yLCB0
ZW1wbGF0ZVNoYWRvdywgc2hhZG93ZWRSZWN0LnJhZGlpKCksIGxheWVySW1hZ2VQcm9wZXJ0aWVz
LmxheWVyU2l6ZSk7CiAjZW5kaWYKIAogICAgIGlmIChyZWRyYXdOZWVkZWQpIHsKQEAgLTczNywx
OCArNzUyLDIyIEBAIHZvaWQgU2hhZG93Qmx1cjo6ZHJhd1JlY3RTaGFkb3dXaXRoVGlsaW5nKGNv
bnN0IEFmZmluZVRyYW5zZm9ybSYgdHJhbnNmb3JtLCBjb25zCiAKIHZvaWQgU2hhZG93Qmx1cjo6
ZHJhd0luc2V0U2hhZG93V2l0aFRpbGluZyhjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIHRyYW5zZm9y
bSwgY29uc3QgRmxvYXRSZWN0JiBmdWxsUmVjdCwgY29uc3QgRmxvYXRSb3VuZGVkUmVjdCYgaG9s
ZVJlY3QsIGNvbnN0IEludFNpemUmIHRlbXBsYXRlU2l6ZSwgY29uc3QgSW50U2l6ZSYgZWRnZVNp
emUsIGNvbnN0IERyYXdJbWFnZUNhbGxiYWNrJiBkcmF3SW1hZ2UsIGNvbnN0IEZpbGxSZWN0V2l0
aEhvbGVDYWxsYmFjayYgZmlsbFJlY3RXaXRoSG9sZSkKIHsKKyAgICBSZWZQdHI8SW1hZ2VCdWZm
ZXI+IGxheWVySW1hZ2VCdWZmZXI7CiAjaWYgVVNFKENHKQotICAgIGF1dG8qIGxheWVySW1hZ2Ug
PSBTY3JhdGNoQnVmZmVyOjpzaW5nbGV0b24oKS5nZXRTY3JhdGNoQnVmZmVyKHRlbXBsYXRlU2l6
ZSk7Ci0gICAgYXV0byByZWxlYXNlTGF5ZXJJbWFnZSA9IG1ha2VTY29wZUV4aXQoW10gewotICAg
ICAgICBTY3JhdGNoQnVmZmVyOjpzaW5nbGV0b24oKS5zY2hlZHVsZVNjcmF0Y2hCdWZmZXJQdXJn
ZSgpOwotICAgIH0pOwotI2Vsc2UKLSAgICBhdXRvIGxheWVySW1hZ2VCdWZmZXIgPSBJbWFnZUJ1
ZmZlcjo6Y3JlYXRlKHRlbXBsYXRlU2l6ZSwgUmVuZGVyaW5nTW9kZTo6VW5hY2NlbGVyYXRlZCwg
MSk7Ci0gICAgYXV0byogbGF5ZXJJbWFnZSA9IGxheWVySW1hZ2VCdWZmZXIuZ2V0KCk7CisgICAg
YXV0byBsb2NrZXIgPSB0cnlIb2xkTG9jayhTY3JhdGNoQnVmZmVyOjpsb2NrKCkpOworICAgIGlm
IChsb2NrZXIpIHsKKyAgICAgICAgbGF5ZXJJbWFnZUJ1ZmZlciA9IFNjcmF0Y2hCdWZmZXI6OnNp
bmdsZXRvbigpLmdldFNjcmF0Y2hCdWZmZXIodGVtcGxhdGVTaXplKTsKKyAgICAgICAgaWYgKCFs
YXllckltYWdlQnVmZmVyKQorICAgICAgICAgICAgcmV0dXJuOworICAgIH0KICNlbmRpZgogCi0g
ICAgaWYgKCFsYXllckltYWdlKQotICAgICAgICByZXR1cm47CisgICAgaWYgKCFsYXllckltYWdl
QnVmZmVyKSB7CisgICAgICAgIGxheWVySW1hZ2VCdWZmZXIgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRl
KHRlbXBsYXRlU2l6ZSwgUmVuZGVyaW5nTW9kZTo6VW5hY2NlbGVyYXRlZCwgMSk7CisgICAgICAg
IGlmICghbGF5ZXJJbWFnZUJ1ZmZlcikKKyAgICAgICAgICAgIHJldHVybjsKKyAgICB9CisgICAg
YXV0byogbGF5ZXJJbWFnZSA9IGxheWVySW1hZ2VCdWZmZXIuZ2V0KCk7CiAKICAgICAvLyBEcmF3
IHRoZSByZWN0YW5nbGUgd2l0aCBob2xlLgogICAgIEZsb2F0UmVjdCB0ZW1wbGF0ZUJvdW5kcygw
LCAwLCB0ZW1wbGF0ZVNpemUud2lkdGgoKSwgdGVtcGxhdGVTaXplLmhlaWdodCgpKTsKQEAgLTc1
Nyw3ICs3NzYsOCBAQCB2b2lkIFNoYWRvd0JsdXI6OmRyYXdJbnNldFNoYWRvd1dpdGhUaWxpbmco
Y29uc3QgQWZmaW5lVHJhbnNmb3JtJiB0cmFuc2Zvcm0sIGNvbgogICAgIGJvb2wgcmVkcmF3TmVl
ZGVkID0gdHJ1ZTsKICNpZiBVU0UoQ0cpCiAgICAgLy8gT25seSByZWRyYXcgaW4gdGhlIHNjcmF0
Y2ggYnVmZmVyIGlmIGl0cyBjYWNoZWQgY29udGVudHMgZG9uJ3QgbWF0Y2ggb3VyIG5lZWRzCi0g
ICAgcmVkcmF3TmVlZGVkID0gU2NyYXRjaEJ1ZmZlcjo6c2luZ2xldG9uKCkuc2V0Q2FjaGVkSW5z
ZXRTaGFkb3dWYWx1ZXMobV9ibHVyUmFkaXVzLCBtX2NvbG9yLCB0ZW1wbGF0ZUJvdW5kcywgdGVt
cGxhdGVIb2xlLCBob2xlUmVjdC5yYWRpaSgpKTsKKyAgICBpZiAobG9ja2VyKQorICAgICAgICBy
ZWRyYXdOZWVkZWQgPSBTY3JhdGNoQnVmZmVyOjpzaW5nbGV0b24oKS5zZXRDYWNoZWRJbnNldFNo
YWRvd1ZhbHVlcyhtX2JsdXJSYWRpdXMsIG1fY29sb3IsIHRlbXBsYXRlQm91bmRzLCB0ZW1wbGF0
ZUhvbGUsIGhvbGVSZWN0LnJhZGlpKCkpOwogI2VuZGlmCiAKICAgICBpZiAocmVkcmF3TmVlZGVk
KSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFn
ZUJ1ZmZlclV0aWxpdGllc0NHLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NnL0ltYWdlQnVmZmVyVXRpbGl0aWVzQ0cuY3BwCmluZGV4IGIzNzdmMDQ4MzJjOTdhNTYyY2M2
ZGE0MmE2ODAzNzlkMTE4NmE0M2YuLmYxNDZmMzU3M2YxZmVmOTVkNzkzNzBlNmVlZjVjNmZiMmE3
OWNhOWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0lt
YWdlQnVmZmVyVXRpbGl0aWVzQ0cuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NnL0ltYWdlQnVmZmVyVXRpbGl0aWVzQ0cuY3BwCkBAIC02OSwxMiArNjksMTYgQEAg
QUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfQkVHSU4KICNpZiBQTEFURk9STShNQUMpCiAg
ICAgcmV0dXJuIFVUSUZyb21NSU1FVHlwZShtaW1lVHlwZSkuY3JlYXRlQ0ZTdHJpbmcoKTsKICNl
bHNlCi0gICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsgLy8gSXQgaXMgdW5jbGVhciBpZiBDRlNU
UiBpcyB0aHJlYWRzYWZlLgotCiAgICAgLy8gRklYTUU6IEFkZCBXaW5kb3dzIHN1cHBvcnQgZm9y
IGFsbCB0aGUgc3VwcG9ydGVkIFVUSXMgd2hlbiBhIHdheSB0byBjb252ZXJ0IGZyb20gTUlNRVR5
cGUgdG8gVVRJIHJlbGlhYmx5IGlzIGZvdW5kLgogICAgIC8vIEZvciBub3csIG9ubHkgc3VwcG9y
dCBQTkcsIEpQRUcsIGFuZCBHSUYuIFNlZSA8cmRhcjovL3Byb2JsZW0vNjA5NTI4Nj4uCi0gICAg
c3RhdGljIGNvbnN0IENGU3RyaW5nUmVmIGtVVFR5cGVQTkcgPSBDRlNUUigicHVibGljLnBuZyIp
OwotICAgIHN0YXRpYyBjb25zdCBDRlN0cmluZ1JlZiBrVVRUeXBlR0lGID0gQ0ZTVFIoImNvbS5j
b21wdXNlcnZlLmdpZiIpOworICAgIHN0YXRpYyBDRlN0cmluZ1JlZiBrVVRUeXBlUE5HOworICAg
IHN0YXRpYyBDRlN0cmluZ1JlZiBrVVRUeXBlR0lGOworCisgICAgc3RhdGljIHN0ZDo6b25jZV9m
bGFnIG9uY2VLZXk7CisgICAgc3RkOjpjYWxsX29uY2Uob25jZUtleSwgWyZdIHsKKyAgICAgICAg
a1VUVHlwZVBORyA9IENGU1RSKCJwdWJsaWMucG5nIik7CisgICAgICAgIGtVVFR5cGVHSUYgPSBD
RlNUUigiY29tLmNvbXB1c2VydmUuZ2lmIik7CisgICAgfSk7CiAKICAgICBpZiAoZXF1YWxMZXR0
ZXJzSWdub3JpbmdBU0NJSUNhc2UobWltZVR5cGUsICJpbWFnZS9wbmciKSkKICAgICAgICAgcmV0
dXJuIGtVVFR5cGVQTkc7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jZy9TdWJpbWFnZUNhY2hlV2l0aFRpbWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NnL1N1YmltYWdlQ2FjaGVXaXRoVGltZXIuY3BwCmluZGV4IGIwNzAyNjg1
NmQ1M2YxYjYzYWE4ODg1ZmIxZTQxMTMzMDM3Y2ZlYzMuLmYzYzVhZjdhNmRlNTllZWI0Y2M0MWZm
NjllMjNhYTA1MWVkYmU1YTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NnL1N1YmltYWdlQ2FjaGVXaXRoVGltZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NnL1N1YmltYWdlQ2FjaGVXaXRoVGltZXIuY3BwCkBAIC04Mywx
MiArODMsMTMgQEAgc3RydWN0IFN1YmltYWdlQ2FjaGVBZGRlciB7CiB9OwogCiBTdWJpbWFnZUNh
Y2hlV2l0aFRpbWVyOjpTdWJpbWFnZUNhY2hlV2l0aFRpbWVyKCkKLSAgICA6IG1fdGltZXIoKnRo
aXMsICZTdWJpbWFnZUNhY2hlV2l0aFRpbWVyOjpwcnVuZUNhY2hlVGltZXJGaXJlZCkKKyAgICA6
IG1fdGltZXIoUnVuTG9vcDo6bWFpbigpLCB0aGlzLCAmU3ViaW1hZ2VDYWNoZVdpdGhUaW1lcjo6
cHJ1bmVDYWNoZVRpbWVyRmlyZWQpCiB7CiB9CiAKIHZvaWQgU3ViaW1hZ2VDYWNoZVdpdGhUaW1l
cjo6cHJ1bmVDYWNoZVRpbWVyRmlyZWQoKQogeworICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2so
bV9sb2NrKTsKICAgICBwcnVuZSgpOwogICAgIGlmIChtX2NhY2hlLmlzRW1wdHkoKSkgewogICAg
ICAgICBBU1NFUlQobV9pbWFnZUNvdW50cy5pc0VtcHR5KCkpOwpAQCAtMTE1LDYgKzExNiw3IEBA
IHZvaWQgU3ViaW1hZ2VDYWNoZVdpdGhUaW1lcjo6cHJ1bmUoKQogCiBSZXRhaW5QdHI8Q0dJbWFn
ZVJlZj4gU3ViaW1hZ2VDYWNoZVdpdGhUaW1lcjo6c3ViaW1hZ2UoQ0dJbWFnZVJlZiBpbWFnZSwg
Y29uc3QgRmxvYXRSZWN0JiByZWN0KQogeworICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2sobV9s
b2NrKTsKICAgICBpZiAoIW1fdGltZXIuaXNBY3RpdmUoKSkKICAgICAgICAgbV90aW1lci5zdGFy
dFJlcGVhdGluZyhzdWJpbWFnZUNhY2hlUHJ1bmVEZWxheSk7CiAKQEAgLTEzNSw2ICsxMzcsNyBA
QCBSZXRhaW5QdHI8Q0dJbWFnZVJlZj4gU3ViaW1hZ2VDYWNoZVdpdGhUaW1lcjo6c3ViaW1hZ2Uo
Q0dJbWFnZVJlZiBpbWFnZSwgY29uc3QgRgogCiB2b2lkIFN1YmltYWdlQ2FjaGVXaXRoVGltZXI6
OmNsZWFySW1hZ2VBbmRTdWJpbWFnZXMoQ0dJbWFnZVJlZiBpbWFnZSkKIHsKKyAgICBhdXRvIGxv
Y2tlciA9IGhvbGRMb2NrKG1fbG9jayk7CiAgICAgaWYgKG1faW1hZ2VDb3VudHMuY29udGFpbnMo
aW1hZ2UpKSB7CiAgICAgICAgIFZlY3RvcjxTdWJpbWFnZUNhY2hlRW50cnk+IHRvQmVSZW1vdmVk
OwogICAgICAgICBmb3IgKGNvbnN0IGF1dG8mIGVudHJ5IDogbV9jYWNoZSkgewpAQCAtMTUxLDE0
ICsxNTQsMTcgQEAgdm9pZCBTdWJpbWFnZUNhY2hlV2l0aFRpbWVyOjpjbGVhckltYWdlQW5kU3Vi
aW1hZ2VzKENHSW1hZ2VSZWYgaW1hZ2UpCiAKIHZvaWQgU3ViaW1hZ2VDYWNoZVdpdGhUaW1lcjo6
Y2xlYXJBbGwoKQogeworICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2sobV9sb2NrKTsKICAgICBt
X2ltYWdlQ291bnRzLmNsZWFyKCk7CiAgICAgbV9jYWNoZS5jbGVhcigpOwogfQogCiBTdWJpbWFn
ZUNhY2hlV2l0aFRpbWVyJiBTdWJpbWFnZUNhY2hlV2l0aFRpbWVyOjpzdWJpbWFnZUNhY2hlKCkK
IHsKLSAgICBpZiAoIXNfY2FjaGUpCisgICAgc3RhdGljIHN0ZDo6b25jZV9mbGFnIG9uY2VLZXk7
CisgICAgc3RkOjpjYWxsX29uY2Uob25jZUtleSwgWyZdIHsKICAgICAgICAgc19jYWNoZSA9IG5l
dyBTdWJpbWFnZUNhY2hlV2l0aFRpbWVyOworICAgIH0pOwogICAgIHJldHVybiAqc19jYWNoZTsK
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvU3Vi
aW1hZ2VDYWNoZVdpdGhUaW1lci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2cvU3ViaW1hZ2VDYWNoZVdpdGhUaW1lci5oCmluZGV4IDgyNzRiYzI0MGVkOGZhNWViMTI0MDAw
YzJiMmQ4YTkyNTc4YjkyOWIuLjViZjA1ZDRlMTQwZWU2MmIzMzIxZTRkYmVmNTFkYWMxZDFiMzRk
OTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL1N1Ymlt
YWdlQ2FjaGVXaXRoVGltZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jZy9TdWJpbWFnZUNhY2hlV2l0aFRpbWVyLmgKQEAgLTMyLDcgKzMyLDkgQEAKICNpbmNsdWRl
IDx3dGYvSGFzaENvdW50ZWRTZXQuaD4KICNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgogI2luY2x1
ZGUgPHd0Zi9IYXNoVHJhaXRzLmg+CisjaW5jbHVkZSA8d3RmL0xvY2suaD4KICNpbmNsdWRlIDx3
dGYvUmV0YWluUHRyLmg+CisjaW5jbHVkZSA8d3RmL1J1bkxvb3AuaD4KIAogI2RlZmluZSBDQUNI
RV9TVUJJTUFHRVMgMQogCkBAIC05NSw5ICs5NywxMCBAQCBwcml2YXRlOgogICAgIHZvaWQgcHJ1
bmUoKTsKICAgICB2b2lkIGNsZWFyQWxsKCk7CiAKKyAgICBMb2NrIG1fbG9jazsKICAgICBIYXNo
Q291bnRlZFNldDxDR0ltYWdlUmVmPiBtX2ltYWdlQ291bnRzOwogICAgIFN1YmltYWdlQ2FjaGVI
YXNoU2V0IG1fY2FjaGU7Ci0gICAgVGltZXIgbV90aW1lcjsKKyAgICBSdW5Mb29wOjpUaW1lcjxT
dWJpbWFnZUNhY2hlV2l0aFRpbWVyPiBtX3RpbWVyOwogCiAgICAgc3RhdGljIFN1YmltYWdlQ2Fj
aGVXaXRoVGltZXImIHN1YmltYWdlQ2FjaGUoKTsKICAgICBzdGF0aWMgYm9vbCBzdWJpbWFnZUNh
Y2hlRXhpc3RzKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L21hYy9VVElVdGlsaXRpZXMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21h
Yy9VVElVdGlsaXRpZXMubW0KaW5kZXggN2E3YTMxMDdiZTc5YzQ4MjRjZWZlMmUwYWMzZTM1NDY3
YzllYTE2OC4uNzBiNDM5M2M2MzYzNzE5NmY5OGMwNjMyZmFiNjExNWQ3OGE4MWJjYyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvVVRJVXRpbGl0aWVzLm1t
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL1VUSVV0aWxpdGllcy5t
bQpAQCAtMjYsNiArMjYsNyBAQAogI2ltcG9ydCAiY29uZmlnLmgiCiAjaW1wb3J0ICJVVElVdGls
aXRpZXMuaCIKIAorI2ltcG9ydCA8d3RmL0xvY2suaD4KICNpbXBvcnQgPHd0Zi9NYWluVGhyZWFk
Lmg+CiAjaW1wb3J0IDx3dGYvVGlueUxSVUNhY2hlLmg+CiAjaW1wb3J0IDx3dGYvdGV4dC9TdHJp
bmdIYXNoLmg+CkBAIC04NCw1NyArODUsNTIgQEAgQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElP
TlNfRU5ECiAgICAgcmV0dXJuIGVtcHR5U3RyaW5nKCk7CiB9CiAKLXN0YXRpYyBTdHJpbmcgVVRJ
RnJvbVVua25vd25NSU1FVHlwZShjb25zdCBTdHJpbmcmIG1pbWVUeXBlKQorc3RhdGljIENGU3Ry
aW5nUmVmIFVUSUZyb21Vbmtub3duTUlNRVR5cGUoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSkKIHsK
ICAgICBzdGF0aWMgY29uc3QgYXV0byBtYXAgPSBtYWtlTmV2ZXJEZXN0cm95ZWQoW10gewotICAg
ICAgICBzdHJ1Y3QgVHlwZUV4dGVuc2lvblBhaXIgewotICAgICAgICAgICAgQVNDSUlMaXRlcmFs
IHR5cGU7Ci0gICAgICAgICAgICBBU0NJSUxpdGVyYWwgdXRpOwotICAgICAgICB9OwotCi0gICAg
ICAgIHN0YXRpYyBjb25zdCBUeXBlRXh0ZW5zaW9uUGFpciBwYWlyc1tdID0gewotICAgICAgICAg
ICAgeyAibW9kZWwvdm5kLnVzZHoremlwIl9zLCAiY29tLnBpeGFyLnVuaXZlcnNhbC1zY2VuZS1k
ZXNjcmlwdGlvbi1tb2JpbGUiX3MgfSwKLSAgICAgICAgICAgIHsgIm1vZGVsL3VzZCJfcywgImNv
bS5waXhhci51bml2ZXJzYWwtc2NlbmUtZGVzY3JpcHRpb24tbW9iaWxlIl9zIH0sCi0gICAgICAg
ICAgICB7ICJtb2RlbC92bmQucGl4YXIudXNkIl9zLCAiY29tLnBpeGFyLnVuaXZlcnNhbC1zY2Vu
ZS1kZXNjcmlwdGlvbi1tb2JpbGUiX3MgfSwKLSAgICAgICAgICAgIHsgIm1vZGVsL3ZuZC5yZWFs
aXR5Il9zLCAiY29tLmFwcGxlLnJlYWxpdHkiX3MgfQotICAgICAgICB9OwotCi0gICAgICAgIEhh
c2hNYXA8U3RyaW5nLCBTdHJpbmcsIEFTQ0lJQ2FzZUluc2Vuc2l0aXZlSGFzaD4gbWFwOwotICAg
ICAgICBmb3IgKGF1dG8mIHBhaXIgOiBwYWlycykKLSAgICAgICAgICAgIG1hcC5hZGQocGFpci50
eXBlLCBwYWlyLnV0aSk7CisgICAgICAgIEhhc2hNYXA8U3RyaW5nLCBDRlN0cmluZ1JlZiwgQVND
SUlDYXNlSW5zZW5zaXRpdmVIYXNoPiBtYXA7CisgICAgICAgIGF1dG8gcGl4YXJNSU1FVHlwZSA9
IENGU1RSKCJjb20ucGl4YXIudW5pdmVyc2FsLXNjZW5lLWRlc2NyaXB0aW9uLW1vYmlsZSIpOwor
ICAgICAgICBtYXAuYWRkKCJtb2RlbC92bmQudXNkeit6aXAiX3MsIHBpeGFyTUlNRVR5cGUpOwor
ICAgICAgICBtYXAuYWRkKCJtb2RlbC91c2QiX3MsIHBpeGFyTUlNRVR5cGUpOworICAgICAgICBt
YXAuYWRkKCJtb2RlbC92bmQucGl4YXIudXNkIl9zLCBwaXhhck1JTUVUeXBlKTsKKyAgICAgICAg
bWFwLmFkZCgibW9kZWwvdm5kLnVzZHoremlwIl9zLCBDRlNUUigiY29tLmFwcGxlLnJlYWxpdHki
KSk7CiAgICAgICAgIHJldHVybiBtYXA7CiAgICAgfSgpKTsKIAorICAgIHN0YXRpYyBjb25zdCBD
RlN0cmluZ1JlZiBlbXB0eUNGU3RyaW5nID0gQ0ZTVFIoIiIpOwogICAgIGF1dG8gbWFwRW50cnkg
PSBtYXAuZ2V0KCkuZmluZChtaW1lVHlwZSk7CiAgICAgaWYgKG1hcEVudHJ5ID09IG1hcC5nZXQo
KS5lbmQoKSkKLSAgICAgICAgcmV0dXJuIGVtcHR5U3RyaW5nKCk7CisgICAgICAgIHJldHVybiBl
bXB0eUNGU3RyaW5nOwogCiAgICAgcmV0dXJuIG1hcEVudHJ5LT52YWx1ZTsKIH0KIAotc3RydWN0
IFVUSUZyb21NSU1FVHlwZUNhY2hlUG9saWN5IDogVGlueUxSVUNhY2hlUG9saWN5PFN0cmluZywg
U3RyaW5nPiB7CitzdHJ1Y3QgVVRJRnJvbU1JTUVUeXBlQ2FjaGVQb2xpY3kgOiBUaW55TFJVQ2Fj
aGVQb2xpY3k8U3RyaW5nLCBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+PiB7CiBwdWJsaWM6Ci0gICAg
c3RhdGljIFN0cmluZyBjcmVhdGVWYWx1ZUZvcktleShjb25zdCBTdHJpbmcmIG1pbWVUeXBlKQor
ICAgIHN0YXRpYyBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IGNyZWF0ZVZhbHVlRm9yS2V5KGNvbnN0
IFN0cmluZyYgbWltZVR5cGUpCiAgICAgewogQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNf
QkVHSU4KICAgICAgICAgYXV0byB0eXBlID0gYWRvcHRDRihVVFR5cGVDcmVhdGVQcmVmZXJyZWRJ
ZGVudGlmaWVyRm9yVGFnKGtVVFRhZ0NsYXNzTUlNRVR5cGUsIG1pbWVUeXBlLmNyZWF0ZUNGU3Ry
aW5nKCkuZ2V0KCksIDApKTsKIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0VORAogICAg
ICAgICBpZiAodHlwZSkKLSAgICAgICAgICAgIHJldHVybiB0eXBlLmdldCgpOworICAgICAgICAg
ICAgcmV0dXJuIHR5cGU7CiAgICAgICAgIHJldHVybiBVVElGcm9tVW5rbm93bk1JTUVUeXBlKG1p
bWVUeXBlKTsKICAgICB9CisKKyAgICBzdGF0aWMgU3RyaW5nIGNyZWF0ZUtleUZvclN0b3JhZ2Uo
Y29uc3QgU3RyaW5nJiBrZXkpIHsgcmV0dXJuIGtleS5pc29sYXRlZENvcHkoKTsgfQogfTsKIAot
c3RhdGljIFRpbnlMUlVDYWNoZTxTdHJpbmcsIFN0cmluZywgMTYsIFVUSUZyb21NSU1FVHlwZUNh
Y2hlUG9saWN5PiYgY2FjaGVVVElGcm9tTWltZVR5cGUoKQorc3RhdGljIFRpbnlMUlVDYWNoZTxT
dHJpbmcsIFJldGFpblB0cjxDRlN0cmluZ1JlZj4sIDE2LCBVVElGcm9tTUlNRVR5cGVDYWNoZVBv
bGljeT4mIGNhY2hlVVRJRnJvbU1pbWVUeXBlKCkKIHsKLSAgICBzdGF0aWMgTmV2ZXJEZXN0cm95
ZWQ8VGlueUxSVUNhY2hlPFN0cmluZywgU3RyaW5nLCAxNiwgVVRJRnJvbU1JTUVUeXBlQ2FjaGVQ
b2xpY3k+PiBjYWNoZTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8VGlueUxSVUNhY2hlPFN0
cmluZywgUmV0YWluUHRyPENGU3RyaW5nUmVmPiwgMTYsIFVUSUZyb21NSU1FVHlwZUNhY2hlUG9s
aWN5Pj4gY2FjaGU7CiAgICAgcmV0dXJuIGNhY2hlOwogfQogCiBTdHJpbmcgVVRJRnJvbU1JTUVU
eXBlKGNvbnN0IFN0cmluZyYgbWltZVR5cGUpCiB7Ci0gICAgQVNTRVJUKGlzTWFpblRocmVhZCgp
KTsKLSAgICByZXR1cm4gY2FjaGVVVElGcm9tTWltZVR5cGUoKS5nZXQobWltZVR5cGUpOworICAg
IHN0YXRpYyBMb2NrIGxvY2s7CisgICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhsb2NrKTsKKyAg
ICByZXR1cm4gY2FjaGVVVElGcm9tTWltZVR5cGUoKS5nZXQobWltZVR5cGUpLmdldCgpOwogfQog
CiBib29sIGlzRGVjbGFyZWRVVEkoY29uc3QgU3RyaW5nJiBVVEkpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L2NmL0h5cGhlbmF0aW9uQ0YuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vdGV4dC9jZi9IeXBoZW5hdGlvbkNGLmNwcAppbmRleCAzZDAyZjI4ZjY4
NWQ0Mzc4NGQzOTQ2OTVmY2JlMjRmOWU3NjI5MThhLi42NjY5NmU0Yjc0MDM1OGMyNWYyMmNiYmFl
ZGIwMTg1ZTRhZTRmODNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0
L2NmL0h5cGhlbmF0aW9uQ0YuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQv
Y2YvSHlwaGVuYXRpb25DRi5jcHAKQEAgLTYzLDYgKzYzLDggQEAgcHVibGljOgogCiAgICAgICAg
IHJldHVybiBDRlN0cmluZ0lzSHlwaGVuYXRpb25BdmFpbGFibGVGb3JMb2NhbGUobG9jYWxlLmdl
dCgpKSA/IGxvY2FsZSA6IG51bGxwdHI7CiAgICAgfQorCisgICAgc3RhdGljIEF0b21TdHJpbmcg
Y3JlYXRlS2V5Rm9yU3RvcmFnZShjb25zdCBBdG9tU3RyaW5nJiBrZXkpIHsgcmV0dXJuIGtleTsg
fQogfTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9oeXBo
ZW4vSHlwaGVuYXRpb25MaWJIeXBoZW4uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4
dC9oeXBoZW4vSHlwaGVuYXRpb25MaWJIeXBoZW4uY3BwCmluZGV4IGYzMzU5ZDgwNzAyMmY1NDg5
YzY4ZjlhY2Y4MTZhNjcwNDJhNTNkNjIuLjdmNzMzMDFkYTAwMzEwN2U5MzlkZmI4NmIzNjg5MzU0
YzlkOTQzNTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvaHlwaGVu
L0h5cGhlbmF0aW9uTGliSHlwaGVuLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90
ZXh0L2h5cGhlbi9IeXBoZW5hdGlvbkxpYkh5cGhlbi5jcHAKQEAgLTI0MSw2ICsyNDEsOCBAQCBw
dWJsaWM6CiAgICAgewogICAgICAgICByZXR1cm4gV2ViQ29yZTo6SHlwaGVuYXRpb25EaWN0aW9u
YXJ5OjpjcmVhdGUoRmlsZVN5c3RlbTo6ZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKGRpY3Rpb25h
cnlQYXRoLnN0cmluZygpKSk7CiAgICAgfQorCisgICAgc3RhdGljIEF0b21TdHJpbmcgY3JlYXRl
S2V5Rm9yU3RvcmFnZShjb25zdCBBdG9tU3RyaW5nJiBrZXkpIHsgcmV0dXJuIGtleTsgfQogfTsK
IAogfSAvLyBuYW1lc3BhY2UgV1RGCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nl
c3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNz
L0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaAppbmRleCAxZjc4NTU1ZTJiNzM5OWU3MjBiNTRk
OWNmYWVjYzMzOTg5NmE3MmFjLi40YmJlYTMyZTgxYzhlM2MyZDYzYTgwY2U0OWIwMTk3MGFkM2M1
MzAyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRv
V2ViUHJvY2Vzcy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9u
VG9XZWJQcm9jZXNzLmgKQEAgLTM4LDcgKzM4LDcgQEAKICNpbmNsdWRlIDxXZWJDb3JlL1Byb2Nl
c3NJZGVudGlmaWVyLmg+CiAjaW5jbHVkZSA8cGFsL1Nlc3Npb25JRC5oPgogI2luY2x1ZGUgPHd0
Zi9Mb2dnZXIuaD4KLSNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgorI2luY2x1ZGUgPHd0Zi9U
aHJlYWRTYWZlUmVmQ291bnRlZC5oPgogCiAjaWYgRU5BQkxFKFdFQkdMKQogI2luY2x1ZGUgIkdy
YXBoaWNzQ29udGV4dEdMSWRlbnRpZmllci5oIgpAQCAtNjgsNyArNjgsNyBAQCBzdHJ1Y3QgUmVt
b3RlQXVkaW9TZXNzaW9uQ29uZmlndXJhdGlvbjsKIHN0cnVjdCBSZW1vdGVSZW5kZXJpbmdCYWNr
ZW5kQ3JlYXRpb25QYXJhbWV0ZXJzOwogCiBjbGFzcyBHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNz
Ci0gICAgOiBwdWJsaWMgUmVmQ291bnRlZDxHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzPgorICAg
IDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3Ms
IFdURjo6RGVzdHJ1Y3Rpb25UaHJlYWQ6Ok1haW4+CiAgICAgLCBwdWJsaWMgV2ViQ29yZTo6Tm93
UGxheWluZ01hbmFnZXI6OkNsaWVudAogICAgICwgSVBDOjpDb25uZWN0aW9uOjpDbGllbnQgewog
cHVibGljOgpAQCAtMTkyLDcgKzE5Miw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX2FsbG93c0Rp
c3BsYXlDYXB0dXJlIHsgZmFsc2UgfTsKICNlbmRpZgogCi0gICAgdXNpbmcgUmVtb3RlUmVuZGVy
aW5nQmFja2VuZE1hcCA9IEhhc2hNYXA8UmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXIsIHN0ZDo6
dW5pcXVlX3B0cjxSZW1vdGVSZW5kZXJpbmdCYWNrZW5kPj47CisgICAgdXNpbmcgUmVtb3RlUmVu
ZGVyaW5nQmFja2VuZE1hcCA9IEhhc2hNYXA8UmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXIsIFJl
ZlB0cjxSZW1vdGVSZW5kZXJpbmdCYWNrZW5kPj47CiAgICAgUmVtb3RlUmVuZGVyaW5nQmFja2Vu
ZE1hcCBtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmRNYXA7CiAjaWYgRU5BQkxFKFdFQkdMKQogICAg
IHVzaW5nIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMTWFwID0gSGFzaE1hcDxHcmFwaGljc0NvbnRl
eHRHTElkZW50aWZpZXIsIHN0ZDo6dW5pcXVlX3B0cjxSZW1vdGVHcmFwaGljc0NvbnRleHRHTD4+
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJl
bmRlcmluZ0JhY2tlbmQuY3BwIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1Jl
bW90ZVJlbmRlcmluZ0JhY2tlbmQuY3BwCmluZGV4IDQ4N2IxMzVhODg5MjdkMjI5MzkzMDc0OTAy
NGQ2NTZjYzA1MDRmNTUuLmVlMDIyNThmZTRjNGEyZTcyNzM1MGJkNmMzYWViZGI5ZGQyMjgyZDAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5k
ZXJpbmdCYWNrZW5kLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3Mv
UmVtb3RlUmVuZGVyaW5nQmFja2VuZC5jcHAKQEAgLTM4LDYgKzM4LDcgQEAKICNpbmNsdWRlICJS
ZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHlNZXNzYWdlcy5oIgogI2luY2x1ZGUgPHd0Zi9DaGVj
a2VkQXJpdGhtZXRpYy5oPgogI2luY2x1ZGUgPHd0Zi9TeXN0ZW1UcmFjaW5nLmg+CisjaW5jbHVk
ZSA8d3RmL1dvcmtRdWV1ZS5oPgogCiAjaWYgUExBVEZPUk0oQ09DT0EpCiAjaW5jbHVkZSA8d3Rm
L2NvY29hL01hY2hTZW1hcGhvcmUuaD4KQEAgLTQ2LDI2ICs0NywyNyBAQAogbmFtZXNwYWNlIFdl
YktpdCB7CiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAotc3RkOjp1bmlxdWVfcHRyPFJlbW90
ZVJlbmRlcmluZ0JhY2tlbmQ+IFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OmNyZWF0ZShHUFVDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzJiBncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLCBSZW1vdGVSZW5k
ZXJpbmdCYWNrZW5kQ3JlYXRpb25QYXJhbWV0ZXJzJiYgcGFyYW1ldGVycykKK1JlZjxSZW1vdGVS
ZW5kZXJpbmdCYWNrZW5kPiBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpjcmVhdGUoR1BVQ29ubmVj
dGlvblRvV2ViUHJvY2VzcyYgZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2VzcywgUmVtb3RlUmVuZGVy
aW5nQmFja2VuZENyZWF0aW9uUGFyYW1ldGVycyYmIHBhcmFtZXRlcnMpCiB7Ci0gICAgcmV0dXJu
IHN0ZDo6dW5pcXVlX3B0cjxSZW1vdGVSZW5kZXJpbmdCYWNrZW5kPihuZXcgUmVtb3RlUmVuZGVy
aW5nQmFja2VuZChncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLCBXVEZNb3ZlKHBhcmFtZXRlcnMp
KSk7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgUmVtb3RlUmVuZGVyaW5nQmFja2VuZChncHVD
b25uZWN0aW9uVG9XZWJQcm9jZXNzLCBXVEZNb3ZlKHBhcmFtZXRlcnMpKSk7CiB9CiAKIFJlbW90
ZVJlbmRlcmluZ0JhY2tlbmQ6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmQoR1BVQ29ubmVjdGlvblRv
V2ViUHJvY2VzcyYgZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2VzcywgUmVtb3RlUmVuZGVyaW5nQmFj
a2VuZENyZWF0aW9uUGFyYW1ldGVycyYmIHBhcmFtZXRlcnMpCi0gICAgOiBtX2dwdUNvbm5lY3Rp
b25Ub1dlYlByb2Nlc3MobWFrZVdlYWtQdHIoZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2VzcykpCisg
ICAgOiBtX3dvcmtRdWV1ZShXb3JrUXVldWU6OmNyZWF0ZSgiUmVtb3RlUmVuZGVyaW5nQmFja2Vu
ZCB3b3JrIHF1ZXVlIiwgV29ya1F1ZXVlOjpUeXBlOjpTZXJpYWwsIFdvcmtRdWV1ZTo6UU9TOjpV
c2VySW50ZXJhY3RpdmUpKQorICAgICwgbV9ncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzKCZncHVD
b25uZWN0aW9uVG9XZWJQcm9jZXNzKQogICAgICwgbV9yZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmll
cihwYXJhbWV0ZXJzLmlkZW50aWZpZXIpCiAjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgLCBtX3Jl
c3VtZURpc3BsYXlMaXN0U2VtYXBob3JlKG1ha2VVbmlxdWU8TWFjaFNlbWFwaG9yZT4oV1RGTW92
ZShwYXJhbWV0ZXJzLnNlbmRSaWdodEZvclJlc3VtZURpc3BsYXlMaXN0U2VtYXBob3JlKSkpCiAj
ZW5kaWYKIHsKICAgICBpZiAoYXV0byogZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2VzcyA9IG1fZ3B1
Q29ubmVjdGlvblRvV2ViUHJvY2Vzcy5nZXQoKSkKLSAgICAgICAgZ3B1Q29ubmVjdGlvblRvV2Vi
UHJvY2Vzcy0+bWVzc2FnZVJlY2VpdmVyTWFwKCkuYWRkTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2Vz
OjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIG1fcmVuZGVy
aW5nQmFja2VuZElkZW50aWZpZXIudG9VSW50NjQoKSwgKnRoaXMpOworICAgICAgICBncHVDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzLT5jb25uZWN0aW9uKCkuYWRkV29ya1F1ZXVlTWVzc2FnZVJlY2Vp
dmVyKE1lc3NhZ2VzOjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjptZXNzYWdlUmVjZWl2ZXJOYW1l
KCksIG1fd29ya1F1ZXVlLCB0aGlzLCBtX3JlbmRlcmluZ0JhY2tlbmRJZGVudGlmaWVyLnRvVUlu
dDY0KCkpOwogfQogCiBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjp+UmVtb3RlUmVuZGVyaW5nQmFj
a2VuZCgpCiB7CiAgICAgaWYgKGF1dG8qIGdwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MgPSBtX2dw
dUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuZ2V0KCkpCi0gICAgICAgIGdwdUNvbm5lY3Rpb25Ub1dl
YlByb2Nlc3MtPm1lc3NhZ2VSZWNlaXZlck1hcCgpLnJlbW92ZU1lc3NhZ2VSZWNlaXZlcihNZXNz
YWdlczo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBtX3Jl
bmRlcmluZ0JhY2tlbmRJZGVudGlmaWVyLnRvVUludDY0KCkpOworICAgICAgICBncHVDb25uZWN0
aW9uVG9XZWJQcm9jZXNzLT5jb25uZWN0aW9uKCkucmVtb3ZlV29ya1F1ZXVlTWVzc2FnZVJlY2Vp
dmVyKE1lc3NhZ2VzOjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjptZXNzYWdlUmVjZWl2ZXJOYW1l
KCksIG1fcmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXIudG9VSW50NjQoKSk7CiB9CiAKIEdQVUNv
bm5lY3Rpb25Ub1dlYlByb2Nlc3MqIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OmdwdUNvbm5lY3Rp
b25Ub1dlYlByb2Nlc3MoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9j
ZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQuaCBiL1NvdXJjZS9XZWJLaXQvR1BV
UHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kLmgKaW5kZXggYmMxMjhmMTZi
YjM3NTQ2NDU0MjNmZTJiZDJiMDk5ODIwM2FmMTYzMC4uOWY2ZThjODMyNmE3YTZkMmI3YTE3Nzkx
NmFmN2UwMWFkODczNzNlYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dy
YXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVBy
b2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5oCkBAIC02NiwxMCArNjYsMTAg
QEAgc3RydWN0IFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRDcmVhdGlvblBhcmFtZXRlcnM7CiAKIGNs
YXNzIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQKICAgICA6IHB1YmxpYyBJUEM6Ok1lc3NhZ2VTZW5k
ZXIKLSAgICAsIHByaXZhdGUgSVBDOjpNZXNzYWdlUmVjZWl2ZXIKKyAgICAsIHB1YmxpYyBJUEM6
OkNvbm5lY3Rpb246OldvcmtRdWV1ZU1lc3NhZ2VSZWNlaXZlcgogICAgICwgcHVibGljIFdlYkNv
cmU6OkRpc3BsYXlMaXN0OjpJdGVtQnVmZmVyUmVhZGluZ0NsaWVudCB7CiBwdWJsaWM6Ci0gICAg
c3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxSZW1vdGVSZW5kZXJpbmdCYWNrZW5kPiBjcmVhdGUoR1BV
Q29ubmVjdGlvblRvV2ViUHJvY2VzcyYsIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRDcmVhdGlvblBh
cmFtZXRlcnMmJik7CisgICAgc3RhdGljIFJlZjxSZW1vdGVSZW5kZXJpbmdCYWNrZW5kPiBjcmVh
dGUoR1BVQ29ubmVjdGlvblRvV2ViUHJvY2VzcyYsIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRDcmVh
dGlvblBhcmFtZXRlcnMmJik7CiAgICAgdmlydHVhbCB+UmVtb3RlUmVuZGVyaW5nQmFja2VuZCgp
OwogCiAgICAgR1BVQ29ubmVjdGlvblRvV2ViUHJvY2VzcyogZ3B1Q29ubmVjdGlvblRvV2ViUHJv
Y2VzcygpIGNvbnN0OwpAQCAtMTQxLDggKzE0MSw5IEBAIHByaXZhdGU6CiAgICAgICAgIH0KICAg
ICB9OwogCisgICAgUmVmPFdvcmtRdWV1ZT4gbV93b3JrUXVldWU7CiAgICAgUmVtb3RlUmVzb3Vy
Y2VDYWNoZSBtX3JlbW90ZVJlc291cmNlQ2FjaGU7Ci0gICAgV2Vha1B0cjxHUFVDb25uZWN0aW9u
VG9XZWJQcm9jZXNzPiBtX2dwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M7CisgICAgUmVmUHRyPEdQ
VUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M+IG1fZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2VzczsKICAg
ICBSZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllciBtX3JlbmRlcmluZ0JhY2tlbmRJZGVudGlmaWVy
OwogICAgIEhhc2hNYXA8V2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1CdWZmZXJJZGVudGlmaWVy
LCBSZWZQdHI8RGlzcGxheUxpc3RSZWFkZXJIYW5kbGU+PiBtX3NoYXJlZERpc3BsYXlMaXN0SGFu
ZGxlczsKICAgICBPcHRpb25hbDxQZW5kaW5nV2FrZXVwSW5mb3JtYXRpb24+IG1fcGVuZGluZ1dh
a2V1cEluZm87CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3Mv
UmVtb3RlUmVuZGVyaW5nQmFja2VuZC5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvR1BVUHJv
Y2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kLm1lc3NhZ2VzLmluCmluZGV4IDIw
MmMyMGE5YzY1MDEzMDkxMTNkOTA2ODNjZjAwOWI4ODNiZDAwMWYuLjdkNjVjZTkwOWM1ODIwZjQ2
YjAxZTZiZGVlY2RlYWE3MzM2YWFmMjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJv
Y2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kLm1lc3NhZ2VzLmluCisrKyBiL1Nv
dXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kLm1l
c3NhZ2VzLmluCkBAIC0yMiw3ICsyMiw3IEBACiAKICNpZiBFTkFCTEUoR1BVX1BST0NFU1MpCiAK
LW1lc3NhZ2VzIC0+IFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQgTm90UmVmQ291bnRlZCB7CittZXNz
YWdlcyAtPiBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kIHsKICAgICBDcmVhdGVJbWFnZUJ1ZmZlcihX
ZWJDb3JlOjpGbG9hdFNpemUgbG9naWNhbFNpemUsIFdlYkNvcmU6OlJlbmRlcmluZ01vZGUgcmVu
ZGVyaW5nTW9kZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBXZWJDb3JlOjpDb2xvclNwYWNlIGNv
bG9yU3BhY2UsIGVudW06dWludDhfdCBXZWJDb3JlOjpQaXhlbEZvcm1hdCBwaXhlbEZvcm1hdCwg
V2ViQ29yZTo6UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyIHJlbmRlcmluZ1Jlc291cmNlSWRl
bnRpZmllcikKICAgICBXYWtlVXBBbmRBcHBseURpc3BsYXlMaXN0KHN0cnVjdCBXZWJLaXQ6OkdQ
VVByb2Nlc3NXYWtldXBNZXNzYWdlQXJndW1lbnRzIGFyZ3VtZW50cykKICAgICBHZXRJbWFnZURh
dGEoZW51bTp1aW50OF90IFdlYkNvcmU6OkFscGhhUHJlbXVsdGlwbGljYXRpb24gb3V0cHV0Rm9y
bWF0LCBXZWJDb3JlOjpJbnRSZWN0IHNyY1JlY3QsIFdlYkNvcmU6OlJlbmRlcmluZ1Jlc291cmNl
SWRlbnRpZmllciByZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpIC0+IChJUEM6OkltYWdlRGF0
YVJlZmVyZW5jZSBpbWFnZURhdGEpIFN5bmNocm9ub3VzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1BsYXRmb3JtL1NoYXJlZE1lbW9yeS5oIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9TaGFy
ZWRNZW1vcnkuaAppbmRleCBhMDg1NDZiNzY1NjA0NTYxNDVkODUwNGQ5MzhmMDNlN2Y4MWI0MGQw
Li4wMzQ1YTI1ZTczNDRhM2I3YjVjMTE2MjhjODdkN2E5ZTg1NmQ4NDEzIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1BsYXRmb3JtL1NoYXJlZE1lbW9yeS5oCisrKyBiL1NvdXJjZS9XZWJLaXQv
UGxhdGZvcm0vU2hhcmVkTWVtb3J5LmgKQEAgLTI4LDcgKzI4LDcgQEAKIAogI2luY2x1ZGUgPHd0
Zi9Gb3J3YXJkLmg+CiAjaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+Ci0jaW5jbHVkZSA8d3Rm
L1JlZkNvdW50ZWQuaD4KKyNpbmNsdWRlIDx3dGYvVGhyZWFkU2FmZVJlZkNvdW50ZWQuaD4KIAog
I2lmIFVTRShVTklYX0RPTUFJTl9TT0NLRVRTKQogI2luY2x1ZGUgIkF0dGFjaG1lbnQuaCIKQEAg
LTU2LDcgKzU2LDcgQEAgY2xhc3MgTWFjaFNlbmRSaWdodDsKIAogbmFtZXNwYWNlIFdlYktpdCB7
CiAKLWNsYXNzIFNoYXJlZE1lbW9yeSA6IHB1YmxpYyBSZWZDb3VudGVkPFNoYXJlZE1lbW9yeT4g
eworY2xhc3MgU2hhcmVkTWVtb3J5IDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPFNoYXJl
ZE1lbW9yeT4gewogcHVibGljOgogICAgIGVudW0gY2xhc3MgUHJvdGVjdGlvbiB7CiAgICAgICAg
IFJlYWRPbmx5LApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvU2hhcmVhYmxlQml0
bWFwLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1NoYXJlYWJsZUJpdG1hcC5jcHAKaW5kZXgg
ODQ0ODg3YmJjM2IxYjNhNDMzODQxMmU5NDNjOWQ2OTJjYjFiNjJiMC4uYjEwZDVhNjNjMWE1NDg0
ZWEyZDFmMzdiOTVkZDU1NWQzOWUwMzkzOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFy
ZWQvU2hhcmVhYmxlQml0bWFwLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9TaGFyZWFi
bGVCaXRtYXAuY3BwCkBAIC0xNzIsNyArMTcyLDYgQEAgU2hhcmVhYmxlQml0bWFwOjpTaGFyZWFi
bGVCaXRtYXAoY29uc3QgSW50U2l6ZSYgc2l6ZSwgQ29uZmlndXJhdGlvbiBjb25maWd1cmF0aW8K
ICAgICAsIG1fY29uZmlndXJhdGlvbihjb25maWd1cmF0aW9uKQogICAgICwgbV9kYXRhKGRhdGEp
CiB7Ci0gICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKIH0KIAogU2hhcmVhYmxlQml0bWFw
OjpTaGFyZWFibGVCaXRtYXAoY29uc3QgSW50U2l6ZSYgc2l6ZSwgQ29uZmlndXJhdGlvbiBjb25m
aWd1cmF0aW9uLCBSZWZQdHI8U2hhcmVkTWVtb3J5PiBzaGFyZWRNZW1vcnkpCkBAIC0xODEsOCAr
MTgwLDYgQEAgU2hhcmVhYmxlQml0bWFwOjpTaGFyZWFibGVCaXRtYXAoY29uc3QgSW50U2l6ZSYg
c2l6ZSwgQ29uZmlndXJhdGlvbiBjb25maWd1cmF0aW8KICAgICAsIG1fc2hhcmVkTWVtb3J5KHNo
YXJlZE1lbW9yeSkKICAgICAsIG1fZGF0YShudWxscHRyKQogewotICAgIEFTU0VSVChSdW5Mb29w
Ojppc01haW4oKSk7Ci0KICNpZiBVU0UoRElSRUNUMkQpCiAgICAgY3JlYXRlU2hhcmVkUmVzb3Vy
Y2UoKTsKICNlbmRpZgpAQCAtMTkwLDggKzE4Nyw2IEBAIFNoYXJlYWJsZUJpdG1hcDo6U2hhcmVh
YmxlQml0bWFwKGNvbnN0IEludFNpemUmIHNpemUsIENvbmZpZ3VyYXRpb24gY29uZmlndXJhdGlv
CiAKIFNoYXJlYWJsZUJpdG1hcDo6flNoYXJlYWJsZUJpdG1hcCgpCiB7Ci0gICAgQVNTRVJUKFJ1
bkxvb3A6OmlzTWFpbigpKTsKLQogICAgIGlmICghaXNCYWNrZWRCeVNoYXJlZE1lbW9yeSgpKQog
ICAgICAgICBTaGFyZWFibGVCaXRtYXBNYWxsb2M6OmZyZWUobV9kYXRhKTsKICNpZiBVU0UoRElS
RUNUMkQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9TaGFyZWFibGVCaXRtYXAu
aCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1NoYXJlYWJsZUJpdG1hcC5oCmluZGV4IDNhMWZhZDJj
NzliY2UxYzdlNWExYTNhNzJlNjQwMmI4ZmJiMTg1NWYuLmNlYzViNTkzYzVmYThjYzg4Yjg1NjRi
MDE2MGI0N2U5ZTMzMTQwYTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1NoYXJl
YWJsZUJpdG1hcC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1NoYXJlYWJsZUJpdG1hcC5o
CkBAIC0yOCw4ICsyOCw4IEBACiAjaW5jbHVkZSAiU2hhcmVkTWVtb3J5LmgiCiAjaW5jbHVkZSA8
V2ViQ29yZS9JbnRSZWN0Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9QbGF0Zm9ybUltYWdlLmg+Ci0j
aW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CisjaW5j
bHVkZSA8d3RmL1RocmVhZFNhZmVSZWZDb3VudGVkLmg+CiAKICNpZiBVU0UoQ0cpCiAjaW5jbHVk
ZSAiQ29sb3JTcGFjZURhdGEuaCIKQEAgLTUyLDcgKzUyLDcgQEAgY2xhc3MgR3JhcGhpY3NDb250
ZXh0OwogCiBuYW1lc3BhY2UgV2ViS2l0IHsKICAgICAKLWNsYXNzIFNoYXJlYWJsZUJpdG1hcCA6
IHB1YmxpYyBSZWZDb3VudGVkPFNoYXJlYWJsZUJpdG1hcD4geworY2xhc3MgU2hhcmVhYmxlQml0
bWFwIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPFNoYXJlYWJsZUJpdG1hcD4gewogcHVi
bGljOgogICAgIHN0cnVjdCBDb25maWd1cmF0aW9uIHsKICAgICAgICAgYm9vbCBpc09wYXF1ZSB7
IGZhbHNlIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9jZy9TaGFyZWFibGVC
aXRtYXBDRy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9jZy9TaGFyZWFibGVCaXRtYXBDRy5j
cHAKaW5kZXggMzY1MzQ4MjBhZjVhMjI4M2M2ZTZhMDZlNzQzMzE3N2I5MDNkZTBhMS4uOGY5Y2Q1
OTQzNmNhMTZhNjdjMzAxYjc1NDc2MDU5Nzg3NjhhNDQzYSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9TaGFyZWQvY2cvU2hhcmVhYmxlQml0bWFwQ0cuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL2NnL1NoYXJlYWJsZUJpdG1hcENHLmNwcApAQCAtODcsNyArODcsNiBAQCB1bnNpZ25l
ZCBTaGFyZWFibGVCaXRtYXA6OmNhbGN1bGF0ZUJ5dGVzUGVyUGl4ZWwoY29uc3QgQ29uZmlndXJh
dGlvbiYgY29uZmlndXJhdAogCiBzdGQ6OnVuaXF1ZV9wdHI8R3JhcGhpY3NDb250ZXh0PiBTaGFy
ZWFibGVCaXRtYXA6OmNyZWF0ZUdyYXBoaWNzQ29udGV4dCgpCiB7Ci0gICAgQVNTRVJUKFJ1bkxv
b3A6OmlzTWFpbigpKTsKICAgICByZWYoKTsgLy8gQmFsYW5jZWQgYnkgZGVyZWYgaW4gcmVsZWFz
ZUJpdG1hcENvbnRleHREYXRhLgogCiAgICAgdW5zaWduZWQgYnl0ZXNQZXJQaXhlbCA9IGNhbGN1
bGF0ZUJ5dGVzUGVyUGl4ZWwobV9jb25maWd1cmF0aW9uKTsKQEAgLTE1NywxMyArMTU2LDYgQEAg
UmV0YWluUHRyPENHSW1hZ2VSZWY+IFNoYXJlYWJsZUJpdG1hcDo6Y3JlYXRlQ0dJbWFnZShDR0Rh
dGFQcm92aWRlclJlZiBkYXRhUHJvdmkKIAogdm9pZCBTaGFyZWFibGVCaXRtYXA6OnJlbGVhc2VC
aXRtYXBDb250ZXh0RGF0YSh2b2lkKiB0eXBlbGVzc0JpdG1hcCwgdm9pZCogdHlwZWxlc3NEYXRh
KQogewotICAgIGlmICghUnVuTG9vcDo6aXNNYWluKCkpIHsKLSAgICAgICAgUnVuTG9vcDo6bWFp
bigpLmRpc3BhdGNoKFt0eXBlbGVzc0JpdG1hcCwgdHlwZWxlc3NEYXRhXSB7Ci0gICAgICAgICAg
ICByZWxlYXNlQml0bWFwQ29udGV4dERhdGEodHlwZWxlc3NCaXRtYXAsIHR5cGVsZXNzRGF0YSk7
Ci0gICAgICAgIH0pOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCiAgICAgU2hhcmVhYmxlQml0
bWFwKiBiaXRtYXAgPSBzdGF0aWNfY2FzdDxTaGFyZWFibGVCaXRtYXAqPih0eXBlbGVzc0JpdG1h
cCk7CiAgICAgQVNTRVJUX1VOVVNFRCh0eXBlbGVzc0RhdGEsIGJpdG1hcC0+ZGF0YSgpID09IHR5
cGVsZXNzRGF0YSk7CiAgICAgYml0bWFwLT5kZXJlZigpOyAvLyBCYWxhbmNlZCBieSByZWYgaW4g
Y3JlYXRlR3JhcGhpY3NDb250ZXh0LgpAQCAtMTcxLDEzICsxNjMsNiBAQCB2b2lkIFNoYXJlYWJs
ZUJpdG1hcDo6cmVsZWFzZUJpdG1hcENvbnRleHREYXRhKHZvaWQqIHR5cGVsZXNzQml0bWFwLCB2
b2lkKiB0eXBlbAogCiB2b2lkIFNoYXJlYWJsZUJpdG1hcDo6cmVsZWFzZURhdGFQcm92aWRlckRh
dGEodm9pZCogdHlwZWxlc3NCaXRtYXAsIGNvbnN0IHZvaWQqIHR5cGVsZXNzRGF0YSwgc2l6ZV90
KQogewotICAgIGlmICghUnVuTG9vcDo6aXNNYWluKCkpIHsKLSAgICAgICAgUnVuTG9vcDo6bWFp
bigpLmRpc3BhdGNoKFt0eXBlbGVzc0JpdG1hcCwgdHlwZWxlc3NEYXRhXSB7Ci0gICAgICAgICAg
ICByZWxlYXNlRGF0YVByb3ZpZGVyRGF0YSh0eXBlbGVzc0JpdG1hcCwgdHlwZWxlc3NEYXRhLCAw
KTsKLSAgICAgICAgfSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KICAgICBTaGFyZWFibGVC
aXRtYXAqIGJpdG1hcCA9IHN0YXRpY19jYXN0PFNoYXJlYWJsZUJpdG1hcCo+KHR5cGVsZXNzQml0
bWFwKTsKICAgICBBU1NFUlRfVU5VU0VEKHR5cGVsZXNzRGF0YSwgYml0bWFwLT5kYXRhKCkgPT0g
dHlwZWxlc3NEYXRhKTsKICAgICBiaXRtYXAtPmRlcmVmKCk7IC8vIEJhbGFuY2VkIGJ5IHJlZiBp
biBjcmVhdGVDR0ltYWdlLgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>417500</attachid>
            <date>2021-01-12 17:00:35 -0800</date>
            <delta_ts>2021-01-12 22:12:14 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-220476-20210112170034.patch</filename>
            <type>text/plain</type>
            <size>40925</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcxNDE2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNDUyNmI2MjRiOWRkOGFh
ODk0MGM2NDQxODZhNzQyM2MwNDE5MTg0NS4uMDQ4ODk3ZjczNjBmZWIxOTE5MzZmYzdiZDdlMTk4
ZDExNTFlNDMyNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM4IEBACisyMDIxLTAxLTA4ICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgW0dQVVByb2Nlc3NdIE1vdmUg
RE9NIC8gQ2FudmFzIHJlbmRlcmluZyBvZmYgdGhlIG1haW4gdGhyZWFkIGluIHRoZSBHUFVQcm9j
ZXNzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjA0
NzYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBNYWtl
IHNvbWUgY2FjaGVzIHRocmVhZC1zYWZlIG5vdyB0aGF0IHdlIGRvIHJlbmRlcmluZyBvZmYgdGhl
IG1haW4gdGhyZWFkIGluCisgICAgICAgIHRoZSBHUFVQcm9jZXNzLgorCisgICAgICAgIE5vIG5l
dyB0ZXN0cywgY292ZXJlZCBieSBleGlzdGluZyB0ZXN0cy4KKworICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL0ltYWdlQnVmZmVyLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvU2hh
ZG93Qmx1ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTY3JhdGNoQnVmZmVyOjpTY3JhdGNoQnVm
ZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcmF0Y2hCdWZmZXI6OmdldFNjcmF0Y2hCdWZmZXIp
OgorICAgICAgICAoV2ViQ29yZTo6U2NyYXRjaEJ1ZmZlcjo6c2V0Q2FjaGVkU2hhZG93VmFsdWVz
KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcmF0Y2hCdWZmZXI6OnNldENhY2hlZEluc2V0U2hhZG93
VmFsdWVzKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcmF0Y2hCdWZmZXI6OnNjaGVkdWxlU2NyYXRj
aEJ1ZmZlclB1cmdlKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcmF0Y2hCdWZmZXI6OnB1cmdlVGlt
ZXJGaXJlZCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JhdGNoQnVmZmVyOjpjbGVhclNjcmF0Y2hC
dWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6U2NyYXRjaEJ1ZmZlcjo6c2luZ2xldG9uKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlclV0aWxpdGllc0NHLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OnV0aUZyb21JbWFnZUJ1ZmZlck1JTUVUeXBlKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9TdWJpbWFnZUNhY2hlV2l0aFRpbWVyLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlN1YmltYWdlQ2FjaGVXaXRoVGltZXI6OlN1YmltYWdlQ2FjaGVXaXRoVGlt
ZXIpOgorICAgICAgICAoV2ViQ29yZTo6U3ViaW1hZ2VDYWNoZVdpdGhUaW1lcjo6cHJ1bmVDYWNo
ZVRpbWVyRmlyZWQpOgorICAgICAgICAoV2ViQ29yZTo6U3ViaW1hZ2VDYWNoZVdpdGhUaW1lcjo6
c3ViaW1hZ2UpOgorICAgICAgICAoV2ViQ29yZTo6U3ViaW1hZ2VDYWNoZVdpdGhUaW1lcjo6Y2xl
YXJJbWFnZUFuZFN1YmltYWdlcyk6CisgICAgICAgIChXZWJDb3JlOjpTdWJpbWFnZUNhY2hlV2l0
aFRpbWVyOjpjbGVhckFsbCk6CisgICAgICAgIChXZWJDb3JlOjpTdWJpbWFnZUNhY2hlV2l0aFRp
bWVyOjpzdWJpbWFnZUNhY2hlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9TdWJp
bWFnZUNhY2hlV2l0aFRpbWVyLmg6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9tYWMvVVRJ
VXRpbGl0aWVzLm1tOgorICAgICAgICAoV2ViQ29yZTo6VVRJRnJvbU1JTUVUeXBlKToKKwogMjAy
MS0wMS0xMiAgQ2hyaXMgRmxlaXphY2ggIDxjZmxlaXphY2hAYXBwbGUuY29tPgogCiAgICAgICAg
IEFYOiBJbXBsZW1lbnQgYXJpYS1icmFpbGxlbGFiZWwgYW5kIGFyaWEtYnJhaWxsZXJvbGVkZXNj
cmlwdGlvbgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2Vi
S2l0L0NoYW5nZUxvZwppbmRleCBhODdjMWYzYWNhMTZlNzRlNTU5N2IyN2JkMTE2ZGMyNzQ0MGM3
YzI4Li44OTJjMjM0MjJmOWE5ZTJhZjQ5NWYxNmU0ZmYzNDVkZDliOGE0MDYwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpA
QCAtMSwzICsxLDQxIEBACisyMDIxLTAxLTA4ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5j
b20+CisKKyAgICAgICAgW0dQVVByb2Nlc3NdIE1vdmUgRE9NIC8gQ2FudmFzIHJlbmRlcmluZyBv
ZmYgdGhlIG1haW4gdGhyZWFkIGluIHRoZSBHUFVQcm9jZXNzCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjA0NzYKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBNb3ZlIERPTSAvIENhbnZhcyByZW5kZXJpbmcg
b2ZmIHRoZSBtYWluIHRocmVhZCAoYW5kIG9uIGEgaGlnaC1wcmlvcml0eSBzZXJpYWwgV29ya1F1
ZXVlKSBpbiB0aGUKKyAgICAgICAgR1BVUHJvY2VzcyBieSBtYWtpbmcgUmVtb3RlUmVuZGVyaW5n
QmFja2VuZCBhIFdvcmtRdWV1ZU1lc3NhZ2VSZWNlaXZlci4gVGhlcmUgaXMgYSBzZXJpYWwgV29y
a1F1ZXVlCisgICAgICAgIHBlciBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kLCB3aGljaCBtZWFucyBl
YWNoIFdlYlBhZ2UgZ2V0cyBpdHMgb3duIFdvcmtRdWV1ZS4KKworICAgICAgICBMb2NhbCB0ZXN0
aW5nIHNlZW1zIHRvIGluZGljYXRlIHRoYXQgdGhpcyBjaGFuZ2UgaXMgcGVyZi1uZXV0cmFsIChJ
IGhhdmUgc2NoZWR1bGVkIEEvQiB0ZXN0aW5nIG9uCisgICAgICAgIHRoZSBib3RzIHRvIGNvbmZp
cm0pLiBJIHRoaW5rIHRoaXMgaXMgZ29vZCBuZXdzIHNpbmNlIEkgYmVsaWV2ZSB0aGlzIG5ldyBh
cmNoaXRlY3R1cmUgd2lsbCBnaXZlCisgICAgICAgIHVzIG1vcmUgb3B0aW1pemF0aW9uIG9wcG9y
dHVuaXRpZXMgaW4gdGhlIGZ1dHVyZS4gRm9yIGV4YW1wbGUsIHdlIHdvdWxkIGJlIGFibGUgdG8g
bW9yZQorICAgICAgICBhZ2dyZXNzaXZlbHkgd2FpdCBvbiB0aGUgY3Jvc3MtcHJvY2VzcyBzZW1h
cGhvcmUgd2hlbiB3YWl0aW5nIGZvciBuZXcgRGlzcGxheUxpc3QgZW50cmllcyB3aXRob3V0Cisg
ICAgICAgIHdvcnJ5aW5nIGFib3V0IGJsb2NraW5nIHRoZSBtYWluIHRocmVhZC4KKworICAgICAg
ICBJIGhhdmUgcnVuIGxheW91dCB0ZXN0cyBpbiBEZWJ1ZyBvbiBib3RoIG1hY09TICYgaU9TIHdp
dGggdGhlIEdQVVByb2Nlc3MgZW5hYmxlZCBhbmQgSSBiZWxpZXZlIEkKKyAgICAgICAgaGF2ZSBm
aXhlZCBhbGwgdGhlIGNyYXNoZXMgdGhhdCB3ZXJlIGRpc2NvdmVyZWQuCisKKyAgICAgICAgKiBH
UFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaDoKKyAgICAgICAgKiBHUFVQcm9j
ZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQuY3BwOgorICAgICAgICAoV2ViS2l0
OjpyZW5kZXJpbmdXb3JrUXVldWUpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVSZW5kZXJpbmdC
YWNrZW5kOjpjcmVhdGUpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5k
OjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlUmVuZGVy
aW5nQmFja2VuZDo6flJlbW90ZVJlbmRlcmluZ0JhY2tlbmQpOgorICAgICAgICAqIEdQVVByb2Nl
c3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5oOgorICAgICAgICAqIEdQVVByb2Nl
c3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5tZXNzYWdlcy5pbjoKKyAgICAgICAg
KiBQbGF0Zm9ybS9TaGFyZWRNZW1vcnkuaDoKKyAgICAgICAgKiBTaGFyZWQvU2hhcmVhYmxlQml0
bWFwLmNwcDoKKyAgICAgICAgKFdlYktpdDo6U2hhcmVhYmxlQml0bWFwOjpTaGFyZWFibGVCaXRt
YXApOgorICAgICAgICAoV2ViS2l0OjpTaGFyZWFibGVCaXRtYXA6On5TaGFyZWFibGVCaXRtYXAp
OgorICAgICAgICAqIFNoYXJlZC9TaGFyZWFibGVCaXRtYXAuaDoKKyAgICAgICAgKiBTaGFyZWQv
Y2cvU2hhcmVhYmxlQml0bWFwQ0cuY3BwOgorICAgICAgICAoV2ViS2l0OjpTaGFyZWFibGVCaXRt
YXA6OmNyZWF0ZUdyYXBoaWNzQ29udGV4dCk6CisgICAgICAgIChXZWJLaXQ6OlNoYXJlYWJsZUJp
dG1hcDo6cmVsZWFzZUJpdG1hcENvbnRleHREYXRhKToKKyAgICAgICAgKFdlYktpdDo6U2hhcmVh
YmxlQml0bWFwOjpyZWxlYXNlRGF0YVByb3ZpZGVyRGF0YSk6CisKIDIwMjEtMDEtMTIgIERvbiBP
bG1zdGVhZCAgPGRvbi5vbG1zdGVhZEBzb255LmNvbT4KIAogICAgICAgICBOb24tdW5pZmllZCBi
dWlsZCBmaXhlcyBtaWQgSmFudWFyeSAyMDIxIGVkaXRpb24KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
VEYvd3RmL1RpbnlMUlVDYWNoZS5oIGIvU291cmNlL1dURi93dGYvVGlueUxSVUNhY2hlLmgKaW5k
ZXggZDhiYzdiODEzMTE5OWUwM2ExZmQ4N2E2NGY1NzE0Mjc4ZjM4Mzk3Yy4uOTAzZTViYmE3Mzgx
ZDgzNGU3MzM0ZDkxY2ZiYTlhZTQ4NzEwNTEyZSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYv
VGlueUxSVUNhY2hlLmgKKysrIGIvU291cmNlL1dURi93dGYvVGlueUxSVUNhY2hlLmgKQEAgLTM1
LDYgKzM1LDcgQEAgc3RydWN0IFRpbnlMUlVDYWNoZVBvbGljeSB7CiAgICAgc3RhdGljIGJvb2wg
aXNLZXlOdWxsKGNvbnN0IEtleVR5cGUmKSB7IHJldHVybiBmYWxzZTsgfQogICAgIHN0YXRpYyBW
YWx1ZVR5cGUgY3JlYXRlVmFsdWVGb3JOdWxsS2V5KCkgeyByZXR1cm4geyB9OyB9CiAgICAgc3Rh
dGljIFZhbHVlVHlwZSBjcmVhdGVWYWx1ZUZvcktleShjb25zdCBLZXlUeXBlJikgeyByZXR1cm4g
eyB9OyB9CisgICAgc3RhdGljIEtleVR5cGUgY3JlYXRlS2V5Rm9yU3RvcmFnZShjb25zdCBLZXlU
eXBlJiBrZXkpIHsgcmV0dXJuIGtleTsgfQogfTsKIAogdGVtcGxhdGU8dHlwZW5hbWUgS2V5VHlw
ZSwgdHlwZW5hbWUgVmFsdWVUeXBlLCBzaXplX3QgY2FwYWNpdHkgPSA0LCB0eXBlbmFtZSBQb2xp
Y3kgPSBUaW55TFJVQ2FjaGVQb2xpY3k8S2V5VHlwZSwgVmFsdWVUeXBlPj4KQEAgLTY2LDcgKzY3
LDcgQEAgcHVibGljOgogICAgICAgICBpZiAobV9jYWNoZS5zaXplKCkgPT0gY2FwYWNpdHkpCiAg
ICAgICAgICAgICBtX2NhY2hlLnJlbW92ZSgwKTsKIAotICAgICAgICBtX2NhY2hlLmFwcGVuZChz
dGQ6Om1ha2VfcGFpcihrZXksIFBvbGljeTo6Y3JlYXRlVmFsdWVGb3JLZXkoa2V5KSkpOworICAg
ICAgICBtX2NhY2hlLmFwcGVuZChzdGQ6Om1ha2VfcGFpcihQb2xpY3k6OmNyZWF0ZUtleUZvclN0
b3JhZ2Uoa2V5KSwgUG9saWN5OjpjcmVhdGVWYWx1ZUZvcktleShrZXkpKSk7CiAgICAgICAgIHJl
dHVybiBtX2NhY2hlLmxhc3QoKS5zZWNvbmQ7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlci5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXIuaAppbmRleCA0MjVhMzJlYTQ0OWMwZWQ1MjI2
Y2M1ODk3ZDljYzE2Yjc4NjIwZmRiLi4zNmQ3NGNhMzlkZTE3Y2QwM2MxM2JiNzVlNGQ1ZTM4NDhj
MzNlY2ZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFn
ZUJ1ZmZlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVm
ZmVyLmgKQEAgLTQyLDcgKzQyLDcgQEAgY2xhc3MgRHJhd2luZ0NvbnRleHQ7CiBzdHJ1Y3QgSXRl
bUJ1ZmZlckhhbmRsZTsKIH0KIAotY2xhc3MgSW1hZ2VCdWZmZXIgOiBwdWJsaWMgUmVmQ291bnRl
ZDxJbWFnZUJ1ZmZlcj4sIHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxJbWFnZUJ1ZmZlcj4geworY2xh
c3MgSW1hZ2VCdWZmZXIgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8SW1hZ2VCdWZmZXI+
LCBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8SW1hZ2VCdWZmZXI+IHsKIHB1YmxpYzoKICAgICAvLyBX
aWxsIHJldHVybiBhIG51bGwgcG9pbnRlciBvbiBhbGxvY2F0aW9uIGZhaWx1cmUuCiAgICAgV0VC
Q09SRV9FWFBPUlQgc3RhdGljIFJlZlB0cjxJbWFnZUJ1ZmZlcj4gY3JlYXRlKGNvbnN0IEZsb2F0
U2l6ZSYsIFJlbmRlcmluZ01vZGUsIFNob3VsZFVzZURpc3BsYXlMaXN0LCBSZW5kZXJpbmdQdXJw
b3NlLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUgPSAxLCBDb2xvclNwYWNlID0gQ29sb3JTcGFjZTo6
U1JHQiwgUGl4ZWxGb3JtYXQgPSBQaXhlbEZvcm1hdDo6QkdSQTgsIGNvbnN0IEhvc3RXaW5kb3cq
ID0gbnVsbHB0cik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9TaGFkb3dCbHVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1NoYWRv
d0JsdXIuY3BwCmluZGV4IDgzMzg5YmE2ODA1NjM3N2Y5OWYwZjVhMWNkMzA3YmY2Y2Y5MWQ4MmEu
LmFjMTQ2ZDk5NTcwOTViMjdmYmQ3ODA3MTFlYzhiOTA3MjVhMmZiZWYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1NoYWRvd0JsdXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1NoYWRvd0JsdXIuY3BwCkBAIC0zNiw5ICszNiwx
MSBAQAogI2luY2x1ZGUgIkltYWdlQnVmZmVyLmgiCiAjaW5jbHVkZSAiSW1hZ2VEYXRhLmgiCiAj
aW5jbHVkZSAiVGltZXIuaCIKKyNpbmNsdWRlIDx3dGYvTG9jay5oPgogI2luY2x1ZGUgPHd0Zi9N
YXRoRXh0cmFzLmg+CiAjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CiAjaW5jbHVkZSA8
d3RmL05vbmNvcHlhYmxlLmg+CisjaW5jbHVkZSA8d3RmL1J1bkxvb3AuaD4KICNpbmNsdWRlIDx3
dGYvU2NvcGUuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtNjEsMjMgKzYzLDIxIEBAIGNs
YXNzIFNjcmF0Y2hCdWZmZXIgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGlj
OgogICAgIFNjcmF0Y2hCdWZmZXIoKQotICAgICAgICA6IG1fcHVyZ2VUaW1lcigqdGhpcywgJlNj
cmF0Y2hCdWZmZXI6OmNsZWFyU2NyYXRjaEJ1ZmZlcikKLSAgICAgICAgLCBtX2xhc3RXYXNJbnNl
dChmYWxzZSkKLSNpZiBBU1NFUlRfRU5BQkxFRAotICAgICAgICAsIG1fYnVmZmVySW5Vc2UoZmFs
c2UpCi0jZW5kaWYKKyAgICAgICAgOiBtX3B1cmdlVGltZXIoUnVuTG9vcDo6bWFpbigpLCB0aGlz
LCAmU2NyYXRjaEJ1ZmZlcjo6cHVyZ2VUaW1lckZpcmVkKQogICAgIHsKICAgICB9CiAKLSAgICBJ
bWFnZUJ1ZmZlciogZ2V0U2NyYXRjaEJ1ZmZlcihjb25zdCBJbnRTaXplJiBzaXplKQorICAgIFJl
ZlB0cjxJbWFnZUJ1ZmZlcj4gZ2V0U2NyYXRjaEJ1ZmZlcihjb25zdCBJbnRTaXplJiBzaXplKQog
ICAgIHsKLSAgICAgICAgQVNTRVJUKCFtX2J1ZmZlckluVXNlKTsKLSNpZiBBU1NFUlRfRU5BQkxF
RAotICAgICAgICBtX2J1ZmZlckluVXNlID0gdHJ1ZTsKLSNlbmRpZgorICAgICAgICBBU1NFUlQo
bG9jaygpLmlzSGVsZCgpKTsKKyAgICAgICAgYXV0byByZWxlYXNlTGF5ZXJJbWFnZSA9IG1ha2VT
Y29wZUV4aXQoW3RoaXNdIHsKKyAgICAgICAgICAgIGlmIChtX2ltYWdlQnVmZmVyKQorICAgICAg
ICAgICAgICAgIHNjaGVkdWxlU2NyYXRjaEJ1ZmZlclB1cmdlKCk7CisgICAgICAgIH0pOworCiAg
ICAgICAgIC8vIFdlIGRvIG5vdCBuZWVkIHRvIHJlY3JlYXRlIHRoZSBidWZmZXIgaWYgdGhlIGN1
cnJlbnQgYnVmZmVyIGlzIGxhcmdlIGVub3VnaC4KICAgICAgICAgaWYgKG1faW1hZ2VCdWZmZXIg
JiYgbV9pbWFnZUJ1ZmZlci0+bG9naWNhbFNpemUoKS53aWR0aCgpID49IHNpemUud2lkdGgoKSAm
JiBtX2ltYWdlQnVmZmVyLT5sb2dpY2FsU2l6ZSgpLmhlaWdodCgpID49IHNpemUuaGVpZ2h0KCkp
Ci0gICAgICAgICAgICByZXR1cm4gbV9pbWFnZUJ1ZmZlci5nZXQoKTsKKyAgICAgICAgICAgIHJl
dHVybiBtX2ltYWdlQnVmZmVyOwogCiAgICAgICAgIC8vIFJvdW5kIHRvIHRoZSBuZWFyZXN0IDMy
IHBpeGVscyBzbyB3ZSBkbyBub3QgZ3JvdyB0aGUgYnVmZmVyIGZvciBzaW1pbGFyIHNpemVkIHJl
cXVlc3RzLgogICAgICAgICBJbnRTaXplIHJvdW5kZWRTaXplKHJvdW5kVXBUb011bHRpcGxlT2Yz
MihzaXplLndpZHRoKCkpLCByb3VuZFVwVG9NdWx0aXBsZU9mMzIoc2l6ZS5oZWlnaHQoKSkpOwpA
QCAtODYsMTEgKzg2LDEyIEBAIHB1YmxpYzoKIAogICAgICAgICAvLyBTaGFkb3dCbHVyIGlzIG5v
dCB1c2VkIHdpdGggYWNjZWxlcmF0ZWQgZHJhd2luZywgc28gaXQncyBPSyB0byBtYWtlIGFuIHVu
Y29uZGl0aW9uYWxseSB1bmFjY2VsZXJhdGVkIGJ1ZmZlci4KICAgICAgICAgbV9pbWFnZUJ1ZmZl
ciA9IEltYWdlQnVmZmVyOjpjcmVhdGUocm91bmRlZFNpemUsIFJlbmRlcmluZ01vZGU6OlVuYWNj
ZWxlcmF0ZWQsIDEpOwotICAgICAgICByZXR1cm4gbV9pbWFnZUJ1ZmZlci5nZXQoKTsKKyAgICAg
ICAgcmV0dXJuIG1faW1hZ2VCdWZmZXI7CiAgICAgfQogCiAgICAgYm9vbCBzZXRDYWNoZWRTaGFk
b3dWYWx1ZXMoY29uc3QgRmxvYXRTaXplJiByYWRpdXMsIGNvbnN0IENvbG9yJiBjb2xvciwgY29u
c3QgRmxvYXRSZWN0JiBzaGFkb3dSZWN0LCBjb25zdCBGbG9hdFJvdW5kZWRSZWN0OjpSYWRpaSYg
cmFkaWksIGNvbnN0IEZsb2F0U2l6ZSYgbGF5ZXJTaXplKQogICAgIHsKKyAgICAgICAgQVNTRVJU
KGxvY2soKS5pc0hlbGQoKSk7CiAgICAgICAgIGlmICghbV9sYXN0V2FzSW5zZXQgJiYgbV9sYXN0
UmFkaXVzID09IHJhZGl1cyAmJiBtX2xhc3RDb2xvciA9PSBjb2xvciAmJiBtX2xhc3RTaGFkb3dS
ZWN0ID09IHNoYWRvd1JlY3QgJiYgIG1fbGFzdFJhZGlpID09IHJhZGlpICYmIG1fbGFzdExheWVy
U2l6ZSA9PSBsYXllclNpemUpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAKQEAgLTEwNiw2
ICsxMDcsNyBAQCBwdWJsaWM6CiAKICAgICBib29sIHNldENhY2hlZEluc2V0U2hhZG93VmFsdWVz
KGNvbnN0IEZsb2F0U2l6ZSYgcmFkaXVzLCBjb25zdCBDb2xvciYgY29sb3IsIGNvbnN0IEZsb2F0
UmVjdCYgYm91bmRzLCBjb25zdCBGbG9hdFJlY3QmIHNoYWRvd1JlY3QsIGNvbnN0IEZsb2F0Um91
bmRlZFJlY3Q6OlJhZGlpJiByYWRpaSkKICAgICB7CisgICAgICAgIEFTU0VSVChsb2NrKCkuaXNI
ZWxkKCkpOwogICAgICAgICBpZiAobV9sYXN0V2FzSW5zZXQgJiYgbV9sYXN0UmFkaXVzID09IHJh
ZGl1cyAmJiBtX2xhc3RDb2xvciA9PSBjb2xvciAmJiBtX2xhc3RJbnNldEJvdW5kcyA9PSBib3Vu
ZHMgJiYgc2hhZG93UmVjdCA9PSBtX2xhc3RTaGFkb3dSZWN0ICYmIHJhZGlpID09IG1fbGFzdFJh
ZGlpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogCkBAIC0xMTksNTAgKzEyMSw1NyBAQCBw
dWJsaWM6CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KIAorICAgIHN0YXRpYyBTY3JhdGNo
QnVmZmVyJiBzaW5nbGV0b24oKTsKKyAgICBzdGF0aWMgTG9jayYgbG9jaygpOworCitwcml2YXRl
OgogICAgIHZvaWQgc2NoZWR1bGVTY3JhdGNoQnVmZmVyUHVyZ2UoKQogICAgIHsKLSNpZiBBU1NF
UlRfRU5BQkxFRAotICAgICAgICBtX2J1ZmZlckluVXNlID0gZmFsc2U7Ci0jZW5kaWYKLSAgICAg
ICAgaWYgKG1fcHVyZ2VUaW1lci5pc0FjdGl2ZSgpKQotICAgICAgICAgICAgbV9wdXJnZVRpbWVy
LnN0b3AoKTsKLQorICAgICAgICBBU1NFUlQobG9jaygpLmlzSGVsZCgpKTsKICAgICAgICAgY29u
c3QgU2Vjb25kcyBzY3JhdGNoQnVmZmVyUHVyZ2VJbnRlcnZhbCB7IDJfcyB9OwogICAgICAgICBt
X3B1cmdlVGltZXIuc3RhcnRPbmVTaG90KHNjcmF0Y2hCdWZmZXJQdXJnZUludGVydmFsKTsKICAg
ICB9CiAKLSAgICBzdGF0aWMgU2NyYXRjaEJ1ZmZlciYgc2luZ2xldG9uKCk7CisgICAgdm9pZCBw
dXJnZVRpbWVyRmlyZWQoKQorICAgIHsKKyAgICAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsK
KyAgICAgICAgaWYgKGF1dG8gbG9ja2VyID0gdHJ5SG9sZExvY2sobG9jaygpKSkKKyAgICAgICAg
ICAgIGNsZWFyU2NyYXRjaEJ1ZmZlcigpOworICAgIH0KIAotcHJpdmF0ZToKICAgICB2b2lkIGNs
ZWFyU2NyYXRjaEJ1ZmZlcigpCiAgICAgeworICAgICAgICBBU1NFUlQobG9jaygpLmlzSGVsZCgp
KTsKICAgICAgICAgbV9pbWFnZUJ1ZmZlciA9IG51bGxwdHI7CiAgICAgICAgIG1fbGFzdFJhZGl1
cyA9IEZsb2F0U2l6ZSgpOwogICAgICAgICBtX2xhc3RMYXllclNpemUgPSBGbG9hdFNpemUoKTsK
ICAgICB9CiAKICAgICBSZWZQdHI8SW1hZ2VCdWZmZXI+IG1faW1hZ2VCdWZmZXI7Ci0gICAgVGlt
ZXIgbV9wdXJnZVRpbWVyOworICAgIFJ1bkxvb3A6OlRpbWVyPFNjcmF0Y2hCdWZmZXI+IG1fcHVy
Z2VUaW1lcjsKIAogICAgIEZsb2F0UmVjdCBtX2xhc3RJbnNldEJvdW5kczsKICAgICBGbG9hdFJl
Y3QgbV9sYXN0U2hhZG93UmVjdDsKICAgICBGbG9hdFJvdW5kZWRSZWN0OjpSYWRpaSBtX2xhc3RS
YWRpaTsKICAgICBDb2xvciBtX2xhc3RDb2xvcjsKICAgICBGbG9hdFNpemUgbV9sYXN0UmFkaXVz
OwotICAgIGJvb2wgbV9sYXN0V2FzSW5zZXQ7CisgICAgYm9vbCBtX2xhc3RXYXNJbnNldCB7IGZh
bHNlIH07CiAgICAgRmxvYXRTaXplIG1fbGFzdExheWVyU2l6ZTsKLQotI2lmIEFTU0VSVF9FTkFC
TEVECi0gICAgYm9vbCBtX2J1ZmZlckluVXNlOwotI2VuZGlmCiB9OwogCiBTY3JhdGNoQnVmZmVy
JiBTY3JhdGNoQnVmZmVyOjpzaW5nbGV0b24oKQogeworICAgIEFTU0VSVChsb2NrKCkuaXNIZWxk
KCkpOwogICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxTY3JhdGNoQnVmZmVyPiBzY3JhdGNoQnVm
ZmVyOwogICAgIHJldHVybiBzY3JhdGNoQnVmZmVyOwogfQogCitMb2NrJiBTY3JhdGNoQnVmZmVy
Ojpsb2NrKCkKK3sKKyAgICBzdGF0aWMgTG9jayBsb2NrOworICAgIHJldHVybiBsb2NrOworfQor
CiBzdGF0aWMgZmxvYXQgcmFkaXVzVG9MZWdhY3lSYWRpdXMoZmxvYXQgcmFkaXVzKQogewogICAg
IHJldHVybiByYWRpdXMgPiA4ID8gOCArIDQgKiBzcXJ0KChyYWRpdXMgLSA4KSAvIDIpIDogcmFk
aXVzOwpAQCAtNjgzLDI2ICs2OTIsMzIgQEAgdm9pZCBTaGFkb3dCbHVyOjpkcmF3SW5zZXRTaGFk
b3dXaXRob3V0VGlsaW5nKGNvbnN0IEFmZmluZVRyYW5zZm9ybSYsIGNvbnN0IEZsb2EKIAogdm9p
ZCBTaGFkb3dCbHVyOjpkcmF3UmVjdFNoYWRvd1dpdGhUaWxpbmcoY29uc3QgQWZmaW5lVHJhbnNm
b3JtJiB0cmFuc2Zvcm0sIGNvbnN0IEZsb2F0Um91bmRlZFJlY3QmIHNoYWRvd2VkUmVjdCwgY29u
c3QgSW50U2l6ZSYgdGVtcGxhdGVTaXplLCBjb25zdCBJbnRTaXplJiBlZGdlU2l6ZSwgY29uc3Qg
RHJhd0ltYWdlQ2FsbGJhY2smIGRyYXdJbWFnZSwgY29uc3QgRmlsbFJlY3RDYWxsYmFjayYgZmls
bFJlY3QsIGNvbnN0IExheWVySW1hZ2VQcm9wZXJ0aWVzJiBsYXllckltYWdlUHJvcGVydGllcykK
IHsKKyAgICBSZWZQdHI8SW1hZ2VCdWZmZXI+IGxheWVySW1hZ2VCdWZmZXI7CiAjaWYgVVNFKENH
KQotICAgIGF1dG8qIGxheWVySW1hZ2UgPSBTY3JhdGNoQnVmZmVyOjpzaW5nbGV0b24oKS5nZXRT
Y3JhdGNoQnVmZmVyKHRlbXBsYXRlU2l6ZSk7Ci0gICAgYXV0byByZWxlYXNlTGF5ZXJJbWFnZSA9
IG1ha2VTY29wZUV4aXQoW10gewotICAgICAgICBTY3JhdGNoQnVmZmVyOjpzaW5nbGV0b24oKS5z
Y2hlZHVsZVNjcmF0Y2hCdWZmZXJQdXJnZSgpOwotICAgIH0pOworICAgIGF1dG8gbG9ja2VyID0g
dHJ5SG9sZExvY2soU2NyYXRjaEJ1ZmZlcjo6bG9jaygpKTsKKyAgICBpZiAobG9ja2VyKSB7Cisg
ICAgICAgIGxheWVySW1hZ2VCdWZmZXIgPSBTY3JhdGNoQnVmZmVyOjpzaW5nbGV0b24oKS5nZXRT
Y3JhdGNoQnVmZmVyKHRlbXBsYXRlU2l6ZSk7CisgICAgICAgIGlmICghbGF5ZXJJbWFnZUJ1ZmZl
cikKKyAgICAgICAgICAgIHJldHVybjsKKyAgICB9CiAjZWxzZQogICAgIFVOVVNFRF9QQVJBTShs
YXllckltYWdlUHJvcGVydGllcyk7Ci0gICAgYXV0byBsYXllckltYWdlQnVmZmVyID0gSW1hZ2VC
dWZmZXI6OmNyZWF0ZSh0ZW1wbGF0ZVNpemUsIFJlbmRlcmluZ01vZGU6OlVuYWNjZWxlcmF0ZWQs
IDEpOwotICAgIGF1dG8qIGxheWVySW1hZ2UgPSBsYXllckltYWdlQnVmZmVyLmdldCgpOwogI2Vu
ZGlmCiAKLSAgICBpZiAoIWxheWVySW1hZ2UpCi0gICAgICAgIHJldHVybjsKKyAgICBpZiAoIWxh
eWVySW1hZ2VCdWZmZXIpIHsKKyAgICAgICAgbGF5ZXJJbWFnZUJ1ZmZlciA9IEltYWdlQnVmZmVy
OjpjcmVhdGUodGVtcGxhdGVTaXplLCBSZW5kZXJpbmdNb2RlOjpVbmFjY2VsZXJhdGVkLCAxKTsK
KyAgICAgICAgaWYgKCFsYXllckltYWdlQnVmZmVyKQorICAgICAgICAgICAgcmV0dXJuOworICAg
IH0KKyAgICBhdXRvKiBsYXllckltYWdlID0gbGF5ZXJJbWFnZUJ1ZmZlci5nZXQoKTsKIAogICAg
IEZsb2F0UmVjdCB0ZW1wbGF0ZVNoYWRvdyA9IEZsb2F0UmVjdChlZGdlU2l6ZS53aWR0aCgpLCBl
ZGdlU2l6ZS5oZWlnaHQoKSwgdGVtcGxhdGVTaXplLndpZHRoKCkgLSAyICogZWRnZVNpemUud2lk
dGgoKSwgdGVtcGxhdGVTaXplLmhlaWdodCgpIC0gMiAqIGVkZ2VTaXplLmhlaWdodCgpKTsKIAog
ICAgIGJvb2wgcmVkcmF3TmVlZGVkID0gdHJ1ZTsKICNpZiBVU0UoQ0cpCiAgICAgLy8gT25seSBy
ZWRyYXcgaW4gdGhlIHNjcmF0Y2ggYnVmZmVyIGlmIGl0cyBjYWNoZWQgY29udGVudHMgZG9uJ3Qg
bWF0Y2ggb3VyIG5lZWRzCi0gICAgcmVkcmF3TmVlZGVkID0gU2NyYXRjaEJ1ZmZlcjo6c2luZ2xl
dG9uKCkuc2V0Q2FjaGVkU2hhZG93VmFsdWVzKG1fYmx1clJhZGl1cywgbV9jb2xvciwgdGVtcGxh
dGVTaGFkb3csIHNoYWRvd2VkUmVjdC5yYWRpaSgpLCBsYXllckltYWdlUHJvcGVydGllcy5sYXll
clNpemUpOworICAgIGlmIChsb2NrZXIpCisgICAgICAgIHJlZHJhd05lZWRlZCA9IFNjcmF0Y2hC
dWZmZXI6OnNpbmdsZXRvbigpLnNldENhY2hlZFNoYWRvd1ZhbHVlcyhtX2JsdXJSYWRpdXMsIG1f
Y29sb3IsIHRlbXBsYXRlU2hhZG93LCBzaGFkb3dlZFJlY3QucmFkaWkoKSwgbGF5ZXJJbWFnZVBy
b3BlcnRpZXMubGF5ZXJTaXplKTsKICNlbmRpZgogCiAgICAgaWYgKHJlZHJhd05lZWRlZCkgewpA
QCAtNzM3LDE4ICs3NTIsMjIgQEAgdm9pZCBTaGFkb3dCbHVyOjpkcmF3UmVjdFNoYWRvd1dpdGhU
aWxpbmcoY29uc3QgQWZmaW5lVHJhbnNmb3JtJiB0cmFuc2Zvcm0sIGNvbnMKIAogdm9pZCBTaGFk
b3dCbHVyOjpkcmF3SW5zZXRTaGFkb3dXaXRoVGlsaW5nKGNvbnN0IEFmZmluZVRyYW5zZm9ybSYg
dHJhbnNmb3JtLCBjb25zdCBGbG9hdFJlY3QmIGZ1bGxSZWN0LCBjb25zdCBGbG9hdFJvdW5kZWRS
ZWN0JiBob2xlUmVjdCwgY29uc3QgSW50U2l6ZSYgdGVtcGxhdGVTaXplLCBjb25zdCBJbnRTaXpl
JiBlZGdlU2l6ZSwgY29uc3QgRHJhd0ltYWdlQ2FsbGJhY2smIGRyYXdJbWFnZSwgY29uc3QgRmls
bFJlY3RXaXRoSG9sZUNhbGxiYWNrJiBmaWxsUmVjdFdpdGhIb2xlKQogeworICAgIFJlZlB0cjxJ
bWFnZUJ1ZmZlcj4gbGF5ZXJJbWFnZUJ1ZmZlcjsKICNpZiBVU0UoQ0cpCi0gICAgYXV0byogbGF5
ZXJJbWFnZSA9IFNjcmF0Y2hCdWZmZXI6OnNpbmdsZXRvbigpLmdldFNjcmF0Y2hCdWZmZXIodGVt
cGxhdGVTaXplKTsKLSAgICBhdXRvIHJlbGVhc2VMYXllckltYWdlID0gbWFrZVNjb3BlRXhpdChb
XSB7Ci0gICAgICAgIFNjcmF0Y2hCdWZmZXI6OnNpbmdsZXRvbigpLnNjaGVkdWxlU2NyYXRjaEJ1
ZmZlclB1cmdlKCk7Ci0gICAgfSk7Ci0jZWxzZQotICAgIGF1dG8gbGF5ZXJJbWFnZUJ1ZmZlciA9
IEltYWdlQnVmZmVyOjpjcmVhdGUodGVtcGxhdGVTaXplLCBSZW5kZXJpbmdNb2RlOjpVbmFjY2Vs
ZXJhdGVkLCAxKTsKLSAgICBhdXRvKiBsYXllckltYWdlID0gbGF5ZXJJbWFnZUJ1ZmZlci5nZXQo
KTsKKyAgICBhdXRvIGxvY2tlciA9IHRyeUhvbGRMb2NrKFNjcmF0Y2hCdWZmZXI6OmxvY2soKSk7
CisgICAgaWYgKGxvY2tlcikgeworICAgICAgICBsYXllckltYWdlQnVmZmVyID0gU2NyYXRjaEJ1
ZmZlcjo6c2luZ2xldG9uKCkuZ2V0U2NyYXRjaEJ1ZmZlcih0ZW1wbGF0ZVNpemUpOworICAgICAg
ICBpZiAoIWxheWVySW1hZ2VCdWZmZXIpCisgICAgICAgICAgICByZXR1cm47CisgICAgfQogI2Vu
ZGlmCiAKLSAgICBpZiAoIWxheWVySW1hZ2UpCi0gICAgICAgIHJldHVybjsKKyAgICBpZiAoIWxh
eWVySW1hZ2VCdWZmZXIpIHsKKyAgICAgICAgbGF5ZXJJbWFnZUJ1ZmZlciA9IEltYWdlQnVmZmVy
OjpjcmVhdGUodGVtcGxhdGVTaXplLCBSZW5kZXJpbmdNb2RlOjpVbmFjY2VsZXJhdGVkLCAxKTsK
KyAgICAgICAgaWYgKCFsYXllckltYWdlQnVmZmVyKQorICAgICAgICAgICAgcmV0dXJuOworICAg
IH0KKyAgICBhdXRvKiBsYXllckltYWdlID0gbGF5ZXJJbWFnZUJ1ZmZlci5nZXQoKTsKIAogICAg
IC8vIERyYXcgdGhlIHJlY3RhbmdsZSB3aXRoIGhvbGUuCiAgICAgRmxvYXRSZWN0IHRlbXBsYXRl
Qm91bmRzKDAsIDAsIHRlbXBsYXRlU2l6ZS53aWR0aCgpLCB0ZW1wbGF0ZVNpemUuaGVpZ2h0KCkp
OwpAQCAtNzU3LDcgKzc3Niw4IEBAIHZvaWQgU2hhZG93Qmx1cjo6ZHJhd0luc2V0U2hhZG93V2l0
aFRpbGluZyhjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIHRyYW5zZm9ybSwgY29uCiAgICAgYm9vbCBy
ZWRyYXdOZWVkZWQgPSB0cnVlOwogI2lmIFVTRShDRykKICAgICAvLyBPbmx5IHJlZHJhdyBpbiB0
aGUgc2NyYXRjaCBidWZmZXIgaWYgaXRzIGNhY2hlZCBjb250ZW50cyBkb24ndCBtYXRjaCBvdXIg
bmVlZHMKLSAgICByZWRyYXdOZWVkZWQgPSBTY3JhdGNoQnVmZmVyOjpzaW5nbGV0b24oKS5zZXRD
YWNoZWRJbnNldFNoYWRvd1ZhbHVlcyhtX2JsdXJSYWRpdXMsIG1fY29sb3IsIHRlbXBsYXRlQm91
bmRzLCB0ZW1wbGF0ZUhvbGUsIGhvbGVSZWN0LnJhZGlpKCkpOworICAgIGlmIChsb2NrZXIpCisg
ICAgICAgIHJlZHJhd05lZWRlZCA9IFNjcmF0Y2hCdWZmZXI6OnNpbmdsZXRvbigpLnNldENhY2hl
ZEluc2V0U2hhZG93VmFsdWVzKG1fYmx1clJhZGl1cywgbV9jb2xvciwgdGVtcGxhdGVCb3VuZHMs
IHRlbXBsYXRlSG9sZSwgaG9sZVJlY3QucmFkaWkoKSk7CiAjZW5kaWYKIAogICAgIGlmIChyZWRy
YXdOZWVkZWQpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NnL0ltYWdlQnVmZmVyVXRpbGl0aWVzQ0cuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJVdGlsaXRpZXNDRy5jcHAKaW5kZXggYjM3N2YwNDgzMmM5
N2E1NjJjYzZkYTQyYTY4MDM3OWQxMTg2YTQzZi4uZjE0NmYzNTczZjFmZWY5NWQ3OTM3MGU2ZWVm
NWM2ZmIyYTc5Y2E5YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2cvSW1hZ2VCdWZmZXJVdGlsaXRpZXNDRy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJVdGlsaXRpZXNDRy5jcHAKQEAgLTY5LDEyICs2
OSwxNiBAQCBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19CRUdJTgogI2lmIFBMQVRGT1JN
KE1BQykKICAgICByZXR1cm4gVVRJRnJvbU1JTUVUeXBlKG1pbWVUeXBlKS5jcmVhdGVDRlN0cmlu
ZygpOwogI2Vsc2UKLSAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOyAvLyBJdCBpcyB1bmNsZWFy
IGlmIENGU1RSIGlzIHRocmVhZHNhZmUuCi0KICAgICAvLyBGSVhNRTogQWRkIFdpbmRvd3Mgc3Vw
cG9ydCBmb3IgYWxsIHRoZSBzdXBwb3J0ZWQgVVRJcyB3aGVuIGEgd2F5IHRvIGNvbnZlcnQgZnJv
bSBNSU1FVHlwZSB0byBVVEkgcmVsaWFibHkgaXMgZm91bmQuCiAgICAgLy8gRm9yIG5vdywgb25s
eSBzdXBwb3J0IFBORywgSlBFRywgYW5kIEdJRi4gU2VlIDxyZGFyOi8vcHJvYmxlbS82MDk1Mjg2
Pi4KLSAgICBzdGF0aWMgY29uc3QgQ0ZTdHJpbmdSZWYga1VUVHlwZVBORyA9IENGU1RSKCJwdWJs
aWMucG5nIik7Ci0gICAgc3RhdGljIGNvbnN0IENGU3RyaW5nUmVmIGtVVFR5cGVHSUYgPSBDRlNU
UigiY29tLmNvbXB1c2VydmUuZ2lmIik7CisgICAgc3RhdGljIENGU3RyaW5nUmVmIGtVVFR5cGVQ
Tkc7CisgICAgc3RhdGljIENGU3RyaW5nUmVmIGtVVFR5cGVHSUY7CisKKyAgICBzdGF0aWMgc3Rk
OjpvbmNlX2ZsYWcgb25jZUtleTsKKyAgICBzdGQ6OmNhbGxfb25jZShvbmNlS2V5LCBbJl0gewor
ICAgICAgICBrVVRUeXBlUE5HID0gQ0ZTVFIoInB1YmxpYy5wbmciKTsKKyAgICAgICAga1VUVHlw
ZUdJRiA9IENGU1RSKCJjb20uY29tcHVzZXJ2ZS5naWYiKTsKKyAgICB9KTsKIAogICAgIGlmIChl
cXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShtaW1lVHlwZSwgImltYWdlL3BuZyIpKQogICAg
ICAgICByZXR1cm4ga1VUVHlwZVBORzsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NnL1N1YmltYWdlQ2FjaGVXaXRoVGltZXIuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvU3ViaW1hZ2VDYWNoZVdpdGhUaW1lci5jcHAKaW5kZXgg
YjA3MDI2ODU2ZDUzZjFiNjNhYTg4ODVmYjFlNDExMzMwMzdjZmVjMy4uZjNjNWFmN2E2ZGU1OWVl
YjRjYzQxZmY2OWUyM2FhMDUxZWRiZTVhOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2cvU3ViaW1hZ2VDYWNoZVdpdGhUaW1lci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvU3ViaW1hZ2VDYWNoZVdpdGhUaW1lci5jcHAK
QEAgLTgzLDEyICs4MywxMyBAQCBzdHJ1Y3QgU3ViaW1hZ2VDYWNoZUFkZGVyIHsKIH07CiAKIFN1
YmltYWdlQ2FjaGVXaXRoVGltZXI6OlN1YmltYWdlQ2FjaGVXaXRoVGltZXIoKQotICAgIDogbV90
aW1lcigqdGhpcywgJlN1YmltYWdlQ2FjaGVXaXRoVGltZXI6OnBydW5lQ2FjaGVUaW1lckZpcmVk
KQorICAgIDogbV90aW1lcihSdW5Mb29wOjptYWluKCksIHRoaXMsICZTdWJpbWFnZUNhY2hlV2l0
aFRpbWVyOjpwcnVuZUNhY2hlVGltZXJGaXJlZCkKIHsKIH0KIAogdm9pZCBTdWJpbWFnZUNhY2hl
V2l0aFRpbWVyOjpwcnVuZUNhY2hlVGltZXJGaXJlZCgpCiB7CisgICAgYXV0byBsb2NrZXIgPSBo
b2xkTG9jayhtX2xvY2spOwogICAgIHBydW5lKCk7CiAgICAgaWYgKG1fY2FjaGUuaXNFbXB0eSgp
KSB7CiAgICAgICAgIEFTU0VSVChtX2ltYWdlQ291bnRzLmlzRW1wdHkoKSk7CkBAIC0xMTUsNiAr
MTE2LDcgQEAgdm9pZCBTdWJpbWFnZUNhY2hlV2l0aFRpbWVyOjpwcnVuZSgpCiAKIFJldGFpblB0
cjxDR0ltYWdlUmVmPiBTdWJpbWFnZUNhY2hlV2l0aFRpbWVyOjpzdWJpbWFnZShDR0ltYWdlUmVm
IGltYWdlLCBjb25zdCBGbG9hdFJlY3QmIHJlY3QpCiB7CisgICAgYXV0byBsb2NrZXIgPSBob2xk
TG9jayhtX2xvY2spOwogICAgIGlmICghbV90aW1lci5pc0FjdGl2ZSgpKQogICAgICAgICBtX3Rp
bWVyLnN0YXJ0UmVwZWF0aW5nKHN1YmltYWdlQ2FjaGVQcnVuZURlbGF5KTsKIApAQCAtMTM1LDYg
KzEzNyw3IEBAIFJldGFpblB0cjxDR0ltYWdlUmVmPiBTdWJpbWFnZUNhY2hlV2l0aFRpbWVyOjpz
dWJpbWFnZShDR0ltYWdlUmVmIGltYWdlLCBjb25zdCBGCiAKIHZvaWQgU3ViaW1hZ2VDYWNoZVdp
dGhUaW1lcjo6Y2xlYXJJbWFnZUFuZFN1YmltYWdlcyhDR0ltYWdlUmVmIGltYWdlKQogeworICAg
IGF1dG8gbG9ja2VyID0gaG9sZExvY2sobV9sb2NrKTsKICAgICBpZiAobV9pbWFnZUNvdW50cy5j
b250YWlucyhpbWFnZSkpIHsKICAgICAgICAgVmVjdG9yPFN1YmltYWdlQ2FjaGVFbnRyeT4gdG9C
ZVJlbW92ZWQ7CiAgICAgICAgIGZvciAoY29uc3QgYXV0byYgZW50cnkgOiBtX2NhY2hlKSB7CkBA
IC0xNTEsMTQgKzE1NCwxNyBAQCB2b2lkIFN1YmltYWdlQ2FjaGVXaXRoVGltZXI6OmNsZWFySW1h
Z2VBbmRTdWJpbWFnZXMoQ0dJbWFnZVJlZiBpbWFnZSkKIAogdm9pZCBTdWJpbWFnZUNhY2hlV2l0
aFRpbWVyOjpjbGVhckFsbCgpCiB7CisgICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhtX2xvY2sp
OwogICAgIG1faW1hZ2VDb3VudHMuY2xlYXIoKTsKICAgICBtX2NhY2hlLmNsZWFyKCk7CiB9CiAK
IFN1YmltYWdlQ2FjaGVXaXRoVGltZXImIFN1YmltYWdlQ2FjaGVXaXRoVGltZXI6OnN1YmltYWdl
Q2FjaGUoKQogewotICAgIGlmICghc19jYWNoZSkKKyAgICBzdGF0aWMgc3RkOjpvbmNlX2ZsYWcg
b25jZUtleTsKKyAgICBzdGQ6OmNhbGxfb25jZShvbmNlS2V5LCBbJl0gewogICAgICAgICBzX2Nh
Y2hlID0gbmV3IFN1YmltYWdlQ2FjaGVXaXRoVGltZXI7CisgICAgfSk7CiAgICAgcmV0dXJuICpz
X2NhY2hlOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jZy9TdWJpbWFnZUNhY2hlV2l0aFRpbWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jZy9TdWJpbWFnZUNhY2hlV2l0aFRpbWVyLmgKaW5kZXggODI3NGJjMjQwZWQ4ZmE1
ZWIxMjQwMDBjMmIyZDhhOTI1NzhiOTI5Yi4uNWJmMDVkNGUxNDBlZTYyYjMzMjFlNGRiZWY1MWRh
YzFkMWIzNGQ5OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2cvU3ViaW1hZ2VDYWNoZVdpdGhUaW1lci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NnL1N1YmltYWdlQ2FjaGVXaXRoVGltZXIuaApAQCAtMzIsNyArMzIsOSBAQAog
I2luY2x1ZGUgPHd0Zi9IYXNoQ291bnRlZFNldC5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+
CiAjaW5jbHVkZSA8d3RmL0hhc2hUcmFpdHMuaD4KKyNpbmNsdWRlIDx3dGYvTG9jay5oPgogI2lu
Y2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KKyNpbmNsdWRlIDx3dGYvUnVuTG9vcC5oPgogCiAjZGVm
aW5lIENBQ0hFX1NVQklNQUdFUyAxCiAKQEAgLTk1LDkgKzk3LDEwIEBAIHByaXZhdGU6CiAgICAg
dm9pZCBwcnVuZSgpOwogICAgIHZvaWQgY2xlYXJBbGwoKTsKIAorICAgIExvY2sgbV9sb2NrOwog
ICAgIEhhc2hDb3VudGVkU2V0PENHSW1hZ2VSZWY+IG1faW1hZ2VDb3VudHM7CiAgICAgU3ViaW1h
Z2VDYWNoZUhhc2hTZXQgbV9jYWNoZTsKLSAgICBUaW1lciBtX3RpbWVyOworICAgIFJ1bkxvb3A6
OlRpbWVyPFN1YmltYWdlQ2FjaGVXaXRoVGltZXI+IG1fdGltZXI7CiAKICAgICBzdGF0aWMgU3Vi
aW1hZ2VDYWNoZVdpdGhUaW1lciYgc3ViaW1hZ2VDYWNoZSgpOwogICAgIHN0YXRpYyBib29sIHN1
YmltYWdlQ2FjaGVFeGlzdHMoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvbWFjL1VUSVV0aWxpdGllcy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvbWFjL1VUSVV0aWxpdGllcy5tbQppbmRleCA3YTdhMzEwN2JlNzljNDgyNGNlZmUyZTBh
YzNlMzU0NjdjOWVhMTY4Li43MGI0MzkzYzYzNjM3MTk2Zjk4YzA2MzJmYWI2MTE1ZDc4YTgxYmNj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9VVElVdGls
aXRpZXMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvVVRJVXRp
bGl0aWVzLm1tCkBAIC0yNiw2ICsyNiw3IEBACiAjaW1wb3J0ICJjb25maWcuaCIKICNpbXBvcnQg
IlVUSVV0aWxpdGllcy5oIgogCisjaW1wb3J0IDx3dGYvTG9jay5oPgogI2ltcG9ydCA8d3RmL01h
aW5UaHJlYWQuaD4KICNpbXBvcnQgPHd0Zi9UaW55TFJVQ2FjaGUuaD4KICNpbXBvcnQgPHd0Zi90
ZXh0L1N0cmluZ0hhc2guaD4KQEAgLTg0LDU3ICs4NSw1MiBAQCBBTExPV19ERVBSRUNBVEVEX0RF
Q0xBUkFUSU9OU19FTkQKICAgICByZXR1cm4gZW1wdHlTdHJpbmcoKTsKIH0KIAotc3RhdGljIFN0
cmluZyBVVElGcm9tVW5rbm93bk1JTUVUeXBlKGNvbnN0IFN0cmluZyYgbWltZVR5cGUpCitzdGF0
aWMgQ0ZTdHJpbmdSZWYgVVRJRnJvbVVua25vd25NSU1FVHlwZShjb25zdCBTdHJpbmcmIG1pbWVU
eXBlKQogewogICAgIHN0YXRpYyBjb25zdCBhdXRvIG1hcCA9IG1ha2VOZXZlckRlc3Ryb3llZChb
XSB7Ci0gICAgICAgIHN0cnVjdCBUeXBlRXh0ZW5zaW9uUGFpciB7Ci0gICAgICAgICAgICBBU0NJ
SUxpdGVyYWwgdHlwZTsKLSAgICAgICAgICAgIEFTQ0lJTGl0ZXJhbCB1dGk7Ci0gICAgICAgIH07
Ci0KLSAgICAgICAgc3RhdGljIGNvbnN0IFR5cGVFeHRlbnNpb25QYWlyIHBhaXJzW10gPSB7Ci0g
ICAgICAgICAgICB7ICJtb2RlbC92bmQudXNkeit6aXAiX3MsICJjb20ucGl4YXIudW5pdmVyc2Fs
LXNjZW5lLWRlc2NyaXB0aW9uLW1vYmlsZSJfcyB9LAotICAgICAgICAgICAgeyAibW9kZWwvdXNk
Il9zLCAiY29tLnBpeGFyLnVuaXZlcnNhbC1zY2VuZS1kZXNjcmlwdGlvbi1tb2JpbGUiX3MgfSwK
LSAgICAgICAgICAgIHsgIm1vZGVsL3ZuZC5waXhhci51c2QiX3MsICJjb20ucGl4YXIudW5pdmVy
c2FsLXNjZW5lLWRlc2NyaXB0aW9uLW1vYmlsZSJfcyB9LAotICAgICAgICAgICAgeyAibW9kZWwv
dm5kLnJlYWxpdHkiX3MsICJjb20uYXBwbGUucmVhbGl0eSJfcyB9Ci0gICAgICAgIH07Ci0KLSAg
ICAgICAgSGFzaE1hcDxTdHJpbmcsIFN0cmluZywgQVNDSUlDYXNlSW5zZW5zaXRpdmVIYXNoPiBt
YXA7Ci0gICAgICAgIGZvciAoYXV0byYgcGFpciA6IHBhaXJzKQotICAgICAgICAgICAgbWFwLmFk
ZChwYWlyLnR5cGUsIHBhaXIudXRpKTsKKyAgICAgICAgSGFzaE1hcDxTdHJpbmcsIENGU3RyaW5n
UmVmLCBBU0NJSUNhc2VJbnNlbnNpdGl2ZUhhc2g+IG1hcDsKKyAgICAgICAgYXV0byBwaXhhck1J
TUVUeXBlID0gQ0ZTVFIoImNvbS5waXhhci51bml2ZXJzYWwtc2NlbmUtZGVzY3JpcHRpb24tbW9i
aWxlIik7CisgICAgICAgIG1hcC5hZGQoIm1vZGVsL3ZuZC51c2R6K3ppcCJfcywgcGl4YXJNSU1F
VHlwZSk7CisgICAgICAgIG1hcC5hZGQoIm1vZGVsL3VzZCJfcywgcGl4YXJNSU1FVHlwZSk7Cisg
ICAgICAgIG1hcC5hZGQoIm1vZGVsL3ZuZC5waXhhci51c2QiX3MsIHBpeGFyTUlNRVR5cGUpOwor
ICAgICAgICBtYXAuYWRkKCJtb2RlbC92bmQudXNkeit6aXAiX3MsIENGU1RSKCJjb20uYXBwbGUu
cmVhbGl0eSIpKTsKICAgICAgICAgcmV0dXJuIG1hcDsKICAgICB9KCkpOwogCisgICAgc3RhdGlj
IGNvbnN0IENGU3RyaW5nUmVmIGVtcHR5Q0ZTdHJpbmcgPSBDRlNUUigiIik7CiAgICAgYXV0byBt
YXBFbnRyeSA9IG1hcC5nZXQoKS5maW5kKG1pbWVUeXBlKTsKICAgICBpZiAobWFwRW50cnkgPT0g
bWFwLmdldCgpLmVuZCgpKQotICAgICAgICByZXR1cm4gZW1wdHlTdHJpbmcoKTsKKyAgICAgICAg
cmV0dXJuIGVtcHR5Q0ZTdHJpbmc7CiAKICAgICByZXR1cm4gbWFwRW50cnktPnZhbHVlOwogfQog
Ci1zdHJ1Y3QgVVRJRnJvbU1JTUVUeXBlQ2FjaGVQb2xpY3kgOiBUaW55TFJVQ2FjaGVQb2xpY3k8
U3RyaW5nLCBTdHJpbmc+IHsKK3N0cnVjdCBVVElGcm9tTUlNRVR5cGVDYWNoZVBvbGljeSA6IFRp
bnlMUlVDYWNoZVBvbGljeTxTdHJpbmcsIFJldGFpblB0cjxDRlN0cmluZ1JlZj4+IHsKIHB1Ymxp
YzoKLSAgICBzdGF0aWMgU3RyaW5nIGNyZWF0ZVZhbHVlRm9yS2V5KGNvbnN0IFN0cmluZyYgbWlt
ZVR5cGUpCisgICAgc3RhdGljIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gY3JlYXRlVmFsdWVGb3JL
ZXkoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSkKICAgICB7CiBBTExPV19ERVBSRUNBVEVEX0RFQ0xB
UkFUSU9OU19CRUdJTgogICAgICAgICBhdXRvIHR5cGUgPSBhZG9wdENGKFVUVHlwZUNyZWF0ZVBy
ZWZlcnJlZElkZW50aWZpZXJGb3JUYWcoa1VUVGFnQ2xhc3NNSU1FVHlwZSwgbWltZVR5cGUuY3Jl
YXRlQ0ZTdHJpbmcoKS5nZXQoKSwgMCkpOwogQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNf
RU5ECiAgICAgICAgIGlmICh0eXBlKQotICAgICAgICAgICAgcmV0dXJuIHR5cGUuZ2V0KCk7Cisg
ICAgICAgICAgICByZXR1cm4gdHlwZTsKICAgICAgICAgcmV0dXJuIFVUSUZyb21Vbmtub3duTUlN
RVR5cGUobWltZVR5cGUpOwogICAgIH0KKworICAgIHN0YXRpYyBTdHJpbmcgY3JlYXRlS2V5Rm9y
U3RvcmFnZShjb25zdCBTdHJpbmcmIGtleSkgeyByZXR1cm4ga2V5Lmlzb2xhdGVkQ29weSgpOyB9
CiB9OwogCi1zdGF0aWMgVGlueUxSVUNhY2hlPFN0cmluZywgU3RyaW5nLCAxNiwgVVRJRnJvbU1J
TUVUeXBlQ2FjaGVQb2xpY3k+JiBjYWNoZVVUSUZyb21NaW1lVHlwZSgpCitzdGF0aWMgVGlueUxS
VUNhY2hlPFN0cmluZywgUmV0YWluUHRyPENGU3RyaW5nUmVmPiwgMTYsIFVUSUZyb21NSU1FVHlw
ZUNhY2hlUG9saWN5PiYgY2FjaGVVVElGcm9tTWltZVR5cGUoKQogewotICAgIHN0YXRpYyBOZXZl
ckRlc3Ryb3llZDxUaW55TFJVQ2FjaGU8U3RyaW5nLCBTdHJpbmcsIDE2LCBVVElGcm9tTUlNRVR5
cGVDYWNoZVBvbGljeT4+IGNhY2hlOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxUaW55TFJV
Q2FjaGU8U3RyaW5nLCBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+LCAxNiwgVVRJRnJvbU1JTUVUeXBl
Q2FjaGVQb2xpY3k+PiBjYWNoZTsKICAgICByZXR1cm4gY2FjaGU7CiB9CiAKIFN0cmluZyBVVElG
cm9tTUlNRVR5cGUoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSkKIHsKLSAgICBBU1NFUlQoaXNNYWlu
VGhyZWFkKCkpOwotICAgIHJldHVybiBjYWNoZVVUSUZyb21NaW1lVHlwZSgpLmdldChtaW1lVHlw
ZSk7CisgICAgc3RhdGljIExvY2sgbG9jazsKKyAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKGxv
Y2spOworICAgIHJldHVybiBjYWNoZVVUSUZyb21NaW1lVHlwZSgpLmdldChtaW1lVHlwZSkuZ2V0
KCk7CiB9CiAKIGJvb2wgaXNEZWNsYXJlZFVUSShjb25zdCBTdHJpbmcmIFVUSSkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvY2YvSHlwaGVuYXRpb25DRi5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L2NmL0h5cGhlbmF0aW9uQ0YuY3BwCmluZGV4IDNk
MDJmMjhmNjg1ZDQzNzg0ZDM5NDY5NWZjYmUyNGY5ZTc2MjkxOGEuLjY2Njk2ZTRiNzQwMzU4YzI1
ZjIyY2JiYWVkYjAxODVlNGFlNGY4M2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL3RleHQvY2YvSHlwaGVuYXRpb25DRi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vdGV4dC9jZi9IeXBoZW5hdGlvbkNGLmNwcApAQCAtNjMsNiArNjMsOCBAQCBwdWJsaWM6CiAK
ICAgICAgICAgcmV0dXJuIENGU3RyaW5nSXNIeXBoZW5hdGlvbkF2YWlsYWJsZUZvckxvY2FsZShs
b2NhbGUuZ2V0KCkpID8gbG9jYWxlIDogbnVsbHB0cjsKICAgICB9CisKKyAgICBzdGF0aWMgQXRv
bVN0cmluZyBjcmVhdGVLZXlGb3JTdG9yYWdlKGNvbnN0IEF0b21TdHJpbmcmIGtleSkgeyByZXR1
cm4ga2V5OyB9CiB9OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90
ZXh0L2h5cGhlbi9IeXBoZW5hdGlvbkxpYkh5cGhlbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS90ZXh0L2h5cGhlbi9IeXBoZW5hdGlvbkxpYkh5cGhlbi5jcHAKaW5kZXggZjMzNTlkODA3
MDIyZjU0ODljNjhmOWFjZjgxNmE2NzA0MmE1M2Q2Mi4uN2Y3MzMwMWRhMDAzMTA3ZTkzOWRmYjg2
YjM2ODkzNTRjOWQ5NDM1MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4
dC9oeXBoZW4vSHlwaGVuYXRpb25MaWJIeXBoZW4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL3RleHQvaHlwaGVuL0h5cGhlbmF0aW9uTGliSHlwaGVuLmNwcApAQCAtMjQxLDYgKzI0
MSw4IEBAIHB1YmxpYzoKICAgICB7CiAgICAgICAgIHJldHVybiBXZWJDb3JlOjpIeXBoZW5hdGlv
bkRpY3Rpb25hcnk6OmNyZWF0ZShGaWxlU3lzdGVtOjpmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24o
ZGljdGlvbmFyeVBhdGguc3RyaW5nKCkpKTsKICAgICB9CisKKyAgICBzdGF0aWMgQXRvbVN0cmlu
ZyBjcmVhdGVLZXlGb3JTdG9yYWdlKGNvbnN0IEF0b21TdHJpbmcmIGtleSkgeyByZXR1cm4ga2V5
OyB9CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXVEYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
R1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcCBiL1NvdXJjZS9XZWJLaXQv
R1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcAppbmRleCA0MWFlMGExMzE0
OGFhNmE2Y2M0YmJiODZiODliYmFlNjY0MDFhMTYwLi4xNGMyNjVkZDlkZTY1MjU2MGQwNzE3YmM3
Y2ZmOTA3ZDcwM2ZmY2FiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BV
Q29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNz
L0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwCkBAIC0yMDIsOCArMjAyLDEyIEBAIHZvaWQg
R1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6ZGlkQ2xvc2UoSVBDOjpDb25uZWN0aW9uJiBjb25u
ZWN0aW9uKQogICAgIH0KICNlbmRpZgogCisgICAgLy8gUmVtb3RlUmVuZGVyaW5nQmFja2VuZCBv
YmplY3RzIHJlZiB0aGVpciBHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzIHNvIHdlIG5lZWQgdG8g
bWFrZSBzdXJlCisgICAgLy8gd2UgY2xlYXIgR1BVQ29ubmVjdGlvblRvV2ViUHJvY2VzcyBoZXJl
IHRvIGJyZWFrIHRoZSByZWZlcmVuY2UgY3ljbGUuCisgICAgbV9yZW1vdGVSZW5kZXJpbmdCYWNr
ZW5kTWFwLmNsZWFyKCk7CisKICAgICBncHVQcm9jZXNzKCkuY29ubmVjdGlvblRvV2ViUHJvY2Vz
c0Nsb3NlZChjb25uZWN0aW9uKTsKLSAgICBncHVQcm9jZXNzKCkucmVtb3ZlR1BVQ29ubmVjdGlv
blRvV2ViUHJvY2VzcygqdGhpcyk7CisgICAgZ3B1UHJvY2VzcygpLnJlbW92ZUdQVUNvbm5lY3Rp
b25Ub1dlYlByb2Nlc3MoKnRoaXMpOyAvLyBNYXkgZGVzdHJveSB8dGhpc3wuCiB9CiAKIExvZ2dl
ciYgR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6bG9nZ2VyKCkKQEAgLTI5Miw3ICsyOTYsNyBA
QCBSZW1vdGVBdWRpb1Nlc3Npb25Qcm94eSYgR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6YXVk
aW9TZXNzaW9uUHJveHkoKQogdm9pZCBHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpjcmVhdGVS
ZW5kZXJpbmdCYWNrZW5kKFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRDcmVhdGlvblBhcmFtZXRlcnMm
JiBwYXJhbWV0ZXJzKQogewogICAgIGF1dG8gYWRkUmVzdWx0ID0gbV9yZW1vdGVSZW5kZXJpbmdC
YWNrZW5kTWFwLmVuc3VyZShwYXJhbWV0ZXJzLmlkZW50aWZpZXIsIFsmXSgpIHsKLSAgICAgICAg
cmV0dXJuIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OmNyZWF0ZSgqdGhpcywgV1RGTW92ZShwYXJh
bWV0ZXJzKSk7CisgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPFJlbW90ZVJlbmRlcmluZ0JhY2tl
bmRXcmFwcGVyPihSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpjcmVhdGUoKnRoaXMsIFdURk1vdmUo
cGFyYW1ldGVycykpKTsKICAgICB9KTsKICAgICBBU1NFUlRfVU5VU0VEKGFkZFJlc3VsdCwgYWRk
UmVzdWx0LmlzTmV3RW50cnkpOwogfQpAQCAtMzAzLDYgKzMwNywxNiBAQCB2b2lkIEdQVUNvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3M6OnJlbGVhc2VSZW5kZXJpbmdCYWNrZW5kKFJlbmRlcmluZ0JhY2tl
bmRJZGVudGlmaQogICAgIEFTU0VSVF9VTlVTRUQoZm91bmQsIGZvdW5kKTsKIH0KIAorR1BVQ29u
bmVjdGlvblRvV2ViUHJvY2Vzczo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZFdyYXBwZXI6OlJlbW90
ZVJlbmRlcmluZ0JhY2tlbmRXcmFwcGVyKFJlZjxSZW1vdGVSZW5kZXJpbmdCYWNrZW5kPiYmIHJl
bW90ZVJlbmRlcmluZ0JhY2tlbmQpCisgICAgOiBtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmQoV1RG
TW92ZShyZW1vdGVSZW5kZXJpbmdCYWNrZW5kKSkKK3sKK30KKworR1BVQ29ubmVjdGlvblRvV2Vi
UHJvY2Vzczo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZFdyYXBwZXI6On5SZW1vdGVSZW5kZXJpbmdC
YWNrZW5kV3JhcHBlcigpCit7CisgICAgbV9yZW1vdGVSZW5kZXJpbmdCYWNrZW5kLT5kaXNjb25u
ZWN0KCk7Cit9CisKICNpZiBFTkFCTEUoV0VCR0wpCiB2b2lkIEdQVUNvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3M6OmNyZWF0ZUdyYXBoaWNzQ29udGV4dEdMKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdM
QXR0cmlidXRlcyBhdHRyaWJ1dGVzLCBHcmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIgZ3JhcGhp
Y3NDb250ZXh0R0xJZGVudGlmaWVyKQogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQ
cm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJv
Y2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgKaW5kZXggMWY3ODU1NWUyYjczOTllNzIw
YjU0ZDljZmFlY2MzMzk4OTZhNzJhYy4uN2M4ZDJhNDBiMDMyMzc1YzYxMGVmY2UyMjY1ZDE4YTY0
MjI1MzI1NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQVUNvbm5lY3Rp
b25Ub1dlYlByb2Nlc3MuaAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BVQ29ubmVj
dGlvblRvV2ViUHJvY2Vzcy5oCkBAIC0zOCw3ICszOCw3IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9Q
cm9jZXNzSWRlbnRpZmllci5oPgogI2luY2x1ZGUgPHBhbC9TZXNzaW9uSUQuaD4KICNpbmNsdWRl
IDx3dGYvTG9nZ2VyLmg+Ci0jaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KKyNpbmNsdWRlIDx3
dGYvVGhyZWFkU2FmZVJlZkNvdW50ZWQuaD4KIAogI2lmIEVOQUJMRShXRUJHTCkKICNpbmNsdWRl
ICJHcmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIuaCIKQEAgLTY4LDcgKzY4LDcgQEAgc3RydWN0
IFJlbW90ZUF1ZGlvU2Vzc2lvbkNvbmZpZ3VyYXRpb247CiBzdHJ1Y3QgUmVtb3RlUmVuZGVyaW5n
QmFja2VuZENyZWF0aW9uUGFyYW1ldGVyczsKIAogY2xhc3MgR1BVQ29ubmVjdGlvblRvV2ViUHJv
Y2VzcwotICAgIDogcHVibGljIFJlZkNvdW50ZWQ8R1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcz4K
KyAgICA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxHUFVDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzLCBXVEY6OkRlc3RydWN0aW9uVGhyZWFkOjpNYWluPgogICAgICwgcHVibGljIFdlYkNvcmU6
Ok5vd1BsYXlpbmdNYW5hZ2VyOjpDbGllbnQKICAgICAsIElQQzo6Q29ubmVjdGlvbjo6Q2xpZW50
IHsKIHB1YmxpYzoKQEAgLTE5Miw3ICsxOTIsMTcgQEAgcHJpdmF0ZToKICAgICBib29sIG1fYWxs
b3dzRGlzcGxheUNhcHR1cmUgeyBmYWxzZSB9OwogI2VuZGlmCiAKLSAgICB1c2luZyBSZW1vdGVS
ZW5kZXJpbmdCYWNrZW5kTWFwID0gSGFzaE1hcDxSZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllciwg
c3RkOjp1bmlxdWVfcHRyPFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ+PjsKKyAgICBjbGFzcyBSZW1v
dGVSZW5kZXJpbmdCYWNrZW5kV3JhcHBlciB7CisgICAgICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NB
VEVEOworICAgIHB1YmxpYzoKKyAgICAgICAgUmVtb3RlUmVuZGVyaW5nQmFja2VuZFdyYXBwZXIo
UmVmPFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ+JiYpOworICAgICAgICB+UmVtb3RlUmVuZGVyaW5n
QmFja2VuZFdyYXBwZXIoKTsKKworICAgIHByaXZhdGU6CisgICAgICAgIFJlZjxSZW1vdGVSZW5k
ZXJpbmdCYWNrZW5kPiBtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmQ7CisgICAgfTsKKworICAgIHVz
aW5nIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRNYXAgPSBIYXNoTWFwPFJlbmRlcmluZ0JhY2tlbmRJ
ZGVudGlmaWVyLCBzdGQ6OnVuaXF1ZV9wdHI8UmVtb3RlUmVuZGVyaW5nQmFja2VuZFdyYXBwZXI+
PjsKICAgICBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kTWFwIG1fcmVtb3RlUmVuZGVyaW5nQmFja2Vu
ZE1hcDsKICNpZiBFTkFCTEUoV0VCR0wpCiAgICAgdXNpbmcgUmVtb3RlR3JhcGhpY3NDb250ZXh0
R0xNYXAgPSBIYXNoTWFwPEdyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgc3RkOjp1bmlxdWVf
cHRyPFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMPj47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5jcHAKaW5k
ZXggNDg3YjEzNWE4ODkyN2QyMjkzOTMwNzQ5MDI0ZDY1NmNjMDUwNGY1NS4uNTU3NDIwN2E2ODg0
YzgwMTUyZjllYjA1OTE4ZjQ5NDI1MTM1ZTIwZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9H
UFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kLmNwcApA
QCAtMzgsNiArMzgsNyBAQAogI2luY2x1ZGUgIlJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eU1l
c3NhZ2VzLmgiCiAjaW5jbHVkZSA8d3RmL0NoZWNrZWRBcml0aG1ldGljLmg+CiAjaW5jbHVkZSA8
d3RmL1N5c3RlbVRyYWNpbmcuaD4KKyNpbmNsdWRlIDx3dGYvV29ya1F1ZXVlLmg+CiAKICNpZiBQ
TEFURk9STShDT0NPQSkKICNpbmNsdWRlIDx3dGYvY29jb2EvTWFjaFNlbWFwaG9yZS5oPgpAQCAt
NDYsMzUgKzQ3LDQ0IEBACiBuYW1lc3BhY2UgV2ViS2l0IHsKIHVzaW5nIG5hbWVzcGFjZSBXZWJD
b3JlOwogCi1zdGQ6OnVuaXF1ZV9wdHI8UmVtb3RlUmVuZGVyaW5nQmFja2VuZD4gUmVtb3RlUmVu
ZGVyaW5nQmFja2VuZDo6Y3JlYXRlKEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MmIGdwdUNvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3MsIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRDcmVhdGlvblBhcmFtZXRl
cnMmJiBwYXJhbWV0ZXJzKQorUmVmPFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ+IFJlbW90ZVJlbmRl
cmluZ0JhY2tlbmQ6OmNyZWF0ZShHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzJiBncHVDb25uZWN0
aW9uVG9XZWJQcm9jZXNzLCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kQ3JlYXRpb25QYXJhbWV0ZXJz
JiYgcGFyYW1ldGVycykKIHsKLSAgICByZXR1cm4gc3RkOjp1bmlxdWVfcHRyPFJlbW90ZVJlbmRl
cmluZ0JhY2tlbmQ+KG5ldyBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kKGdwdUNvbm5lY3Rpb25Ub1dl
YlByb2Nlc3MsIFdURk1vdmUocGFyYW1ldGVycykpKTsKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5l
dyBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kKGdwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MsIFdURk1v
dmUocGFyYW1ldGVycykpKTsKIH0KIAogUmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6UmVtb3RlUmVu
ZGVyaW5nQmFja2VuZChHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzJiBncHVDb25uZWN0aW9uVG9X
ZWJQcm9jZXNzLCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kQ3JlYXRpb25QYXJhbWV0ZXJzJiYgcGFy
YW1ldGVycykKLSAgICA6IG1fZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2VzcyhtYWtlV2Vha1B0cihn
cHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzKSkKKyAgICA6IG1fd29ya1F1ZXVlKFdvcmtRdWV1ZTo6
Y3JlYXRlKCJSZW1vdGVSZW5kZXJpbmdCYWNrZW5kIHdvcmsgcXVldWUiLCBXb3JrUXVldWU6OlR5
cGU6OlNlcmlhbCwgV29ya1F1ZXVlOjpRT1M6OlVzZXJJbnRlcmFjdGl2ZSkpCisgICAgLCBtX2dw
dUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MoJmdwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MpCiAgICAg
LCBtX3JlbmRlcmluZ0JhY2tlbmRJZGVudGlmaWVyKHBhcmFtZXRlcnMuaWRlbnRpZmllcikKICNp
ZiBQTEFURk9STShDT0NPQSkKICAgICAsIG1fcmVzdW1lRGlzcGxheUxpc3RTZW1hcGhvcmUobWFr
ZVVuaXF1ZTxNYWNoU2VtYXBob3JlPihXVEZNb3ZlKHBhcmFtZXRlcnMuc2VuZFJpZ2h0Rm9yUmVz
dW1lRGlzcGxheUxpc3RTZW1hcGhvcmUpKSkKICNlbmRpZgogewotICAgIGlmIChhdXRvKiBncHVD
b25uZWN0aW9uVG9XZWJQcm9jZXNzID0gbV9ncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmdldCgp
KQotICAgICAgICBncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLT5tZXNzYWdlUmVjZWl2ZXJNYXAo
KS5hZGRNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6Om1l
c3NhZ2VSZWNlaXZlck5hbWUoKSwgbV9yZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllci50b1VJbnQ2
NCgpLCAqdGhpcyk7CisgICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKKyAgICBncHVDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzLmNvbm5lY3Rpb24oKS5hZGRXb3JrUXVldWVNZXNzYWdlUmVjZWl2
ZXIoTWVzc2FnZXM6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6Om1lc3NhZ2VSZWNlaXZlck5hbWUo
KSwgbV93b3JrUXVldWUsIHRoaXMsIG1fcmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXIudG9VSW50
NjQoKSk7CiB9CiAKIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6On5SZW1vdGVSZW5kZXJpbmdCYWNr
ZW5kKCkKIHsKLSAgICBpZiAoYXV0byogZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2VzcyA9IG1fZ3B1
Q29ubmVjdGlvblRvV2ViUHJvY2Vzcy5nZXQoKSkKLSAgICAgICAgZ3B1Q29ubmVjdGlvblRvV2Vi
UHJvY2Vzcy0+bWVzc2FnZVJlY2VpdmVyTWFwKCkucmVtb3ZlTWVzc2FnZVJlY2VpdmVyKE1lc3Nh
Z2VzOjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIG1fcmVu
ZGVyaW5nQmFja2VuZElkZW50aWZpZXIudG9VSW50NjQoKSk7CisjaWYgQVNTRVJUX0VOQUJMRUQK
KyAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKG1fZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2Vzc0xv
Y2spOworICAgIEFTU0VSVCghbV9ncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzKTsKKyNlbmRpZgog
fQogCi1HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzKiBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpn
cHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzKCkgY29uc3QKK3ZvaWQgUmVtb3RlUmVuZGVyaW5nQmFj
a2VuZDo6ZGlzY29ubmVjdCgpCiB7Ci0gICAgcmV0dXJuIG1fZ3B1Q29ubmVjdGlvblRvV2ViUHJv
Y2Vzcy5nZXQoKTsKKyAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOworICAgIGF1dG8gbG9j
a2VyID0gaG9sZExvY2sobV9ncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzTG9jayk7CisgICAgQVNT
RVJUKG1fZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2Vzcyk7CisgICAgLy8gVGhlIFJlbW90ZVJlbmRl
cmluZ0JhY2tlbmQgZGVzdHJ1Y3RvciB3b24ndCBiZSBjYWxsZWQgdW50aWwgZGlzY29ubmVjdCgp
IGlzIGNhbGxlZCBhbmQgd2UgdW5yZWdpc3RlciBvdXJzZWx2ZXMgYXMgYSBXb3JrUXVldWVNZXNz
YWdlUmVjZWl2ZXIgYmVjYXVzZQorICAgIC8vIHRoZSBJUEM6OkNvbm5lY3Rpb24gcmVmcyBpdHMg
V29ya1F1ZXVlTWVzc2FnZVJlY2VpdmVycy4KKyAgICBzdGQ6OmV4Y2hhbmdlKG1fZ3B1Q29ubmVj
dGlvblRvV2ViUHJvY2VzcywgbnVsbHB0ciktPmNvbm5lY3Rpb24oKS5yZW1vdmVXb3JrUXVldWVN
ZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6Om1lc3NhZ2VS
ZWNlaXZlck5hbWUoKSwgbV9yZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllci50b1VJbnQ2NCgpKTsK
IH0KIAogSVBDOjpDb25uZWN0aW9uKiBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjptZXNzYWdlU2Vu
ZGVyQ29ubmVjdGlvbigpIGNvbnN0CiB7CisgICAgQVNTRVJUKG1fZ3B1Q29ubmVjdGlvblRvV2Vi
UHJvY2Vzc0xvY2suaXNIZWxkKCkpOwogICAgIGlmIChhdXRvKiBncHVDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzID0gbV9ncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmdldCgpKQogICAgICAgICByZXR1
cm4gJmdwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MtPmNvbm5lY3Rpb24oKTsKICAgICByZXR1cm4g
bnVsbHB0cjsKQEAgLTkxLDcgKzEwMSwxMSBAQCBib29sIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6
OmFwcGx5TWVkaWFJdGVtKERpc3BsYXlMaXN0OjpJdGVtSGFuZGxlIGl0ZW0sIEdyYXBoaQogICAg
ICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBhdXRvJiBtZWRpYUl0ZW0gPSBpdGVtLmdldDxEaXNw
bGF5TGlzdDo6UGFpbnRGcmFtZUZvck1lZGlhPigpOwotICAgIGF1dG8gcHJvY2VzcyA9IGdwdUNv
bm5lY3Rpb25Ub1dlYlByb2Nlc3MoKTsKKyAgICBSZWZQdHI8R1BVQ29ubmVjdGlvblRvV2ViUHJv
Y2Vzcz4gcHJvY2VzczsKKyAgICB7CisgICAgICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2sobV9n
cHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzTG9jayk7CisgICAgICAgIHByb2Nlc3MgPSBtX2dwdUNv
bm5lY3Rpb25Ub1dlYlByb2Nlc3M7CisgICAgfQogICAgIGlmICghcHJvY2VzcykKICAgICAgICAg
cmV0dXJuIGZhbHNlOwogCkBAIC0xMDksMTEgKzEyMywxOSBAQCBib29sIFJlbW90ZVJlbmRlcmlu
Z0JhY2tlbmQ6OmFwcGx5TWVkaWFJdGVtKERpc3BsYXlMaXN0OjpJdGVtSGFuZGxlIGl0ZW0sIEdy
YXBoaQogCiB2b2lkIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OmRpZENyZWF0ZUltYWdlQnVmZmVy
QmFja2VuZChJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGUgaGFuZGxlLCBSZW5kZXJpbmdSZXNvdXJj
ZUlkZW50aWZpZXIgcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKQogeworICAgIGF1dG8gbG9j
a2VyID0gaG9sZExvY2sobV9ncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzTG9jayk7CisgICAgaWYg
KCFtX2dwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MpCisgICAgICAgIHJldHVybjsKKwogICAgIHNl
bmQoTWVzc2FnZXM6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eTo6RGlkQ3JlYXRlSW1hZ2VC
dWZmZXJCYWNrZW5kKFdURk1vdmUoaGFuZGxlKSwgcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVy
KSwgbV9yZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllcik7CiB9CiAKIHZvaWQgUmVtb3RlUmVuZGVy
aW5nQmFja2VuZDo6ZGlkRmx1c2goRGlzcGxheUxpc3Q6OkZsdXNoSWRlbnRpZmllciBmbHVzaElk
ZW50aWZpZXIsIFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciByZW5kZXJpbmdSZXNvdXJjZUlk
ZW50aWZpZXIpCiB7CisgICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhtX2dwdUNvbm5lY3Rpb25U
b1dlYlByb2Nlc3NMb2NrKTsKKyAgICBpZiAoIW1fZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2VzcykK
KyAgICAgICAgcmV0dXJuOworCiAgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlUmVuZGVyaW5nQmFj
a2VuZFByb3h5OjpEaWRGbHVzaChmbHVzaElkZW50aWZpZXIsIHJlbmRlcmluZ1Jlc291cmNlSWRl
bnRpZmllciksIG1fcmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXIpOwogfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2Vu
ZC5oIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0Jh
Y2tlbmQuaAppbmRleCBiYzEyOGYxNmJiMzc1NDY0NTQyM2ZlMmJkMmIwOTk4MjAzYWYxNjMwLi45
ZDQ4Zjk2MjdjNzhkMTIxOWI5NmQ5OTVhODU0ZDkwYjMwMjc1YzM2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNr
ZW5kLmgKQEAgLTY1LDE0ICs2NSwxMyBAQCBjbGFzcyBHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNz
Owogc3RydWN0IFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRDcmVhdGlvblBhcmFtZXRlcnM7CiAKIGNs
YXNzIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQKLSAgICA6IHB1YmxpYyBJUEM6Ok1lc3NhZ2VTZW5k
ZXIKLSAgICAsIHByaXZhdGUgSVBDOjpNZXNzYWdlUmVjZWl2ZXIKLSAgICAsIHB1YmxpYyBXZWJD
b3JlOjpEaXNwbGF5TGlzdDo6SXRlbUJ1ZmZlclJlYWRpbmdDbGllbnQgeworICAgIDogcHVibGlj
IElQQzo6Q29ubmVjdGlvbjo6V29ya1F1ZXVlTWVzc2FnZVJlY2VpdmVyCisgICAgLCBwdWJsaWMg
V2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1CdWZmZXJSZWFkaW5nQ2xpZW50CisgICAgLCBwcml2
YXRlIElQQzo6TWVzc2FnZVNlbmRlciB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIHN0ZDo6dW5pcXVl
X3B0cjxSZW1vdGVSZW5kZXJpbmdCYWNrZW5kPiBjcmVhdGUoR1BVQ29ubmVjdGlvblRvV2ViUHJv
Y2VzcyYsIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRDcmVhdGlvblBhcmFtZXRlcnMmJik7CisgICAg
c3RhdGljIFJlZjxSZW1vdGVSZW5kZXJpbmdCYWNrZW5kPiBjcmVhdGUoR1BVQ29ubmVjdGlvblRv
V2ViUHJvY2VzcyYsIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRDcmVhdGlvblBhcmFtZXRlcnMmJik7
CiAgICAgdmlydHVhbCB+UmVtb3RlUmVuZGVyaW5nQmFja2VuZCgpOwogCi0gICAgR1BVQ29ubmVj
dGlvblRvV2ViUHJvY2VzcyogZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2VzcygpIGNvbnN0OwogICAg
IFJlbW90ZVJlc291cmNlQ2FjaGUmIHJlbW90ZVJlc291cmNlQ2FjaGUoKSB7IHJldHVybiBtX3Jl
bW90ZVJlc291cmNlQ2FjaGU7IH0KIAogICAgIC8vIFJlbmRlcmluZyBvcGVyYXRpb25zLgpAQCAt
ODQsNiArODMsOCBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHNldE5leHRJdGVtQnVmZmVyVG9SZWFk
KFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtQnVmZmVySWRlbnRpZmllciwgV2ViQ29yZTo6UmVu
ZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyIGRlc3RpbmF0aW9uKTsKIAorICAgIHZvaWQgZGlzY29u
bmVjdCgpOworCiBwcml2YXRlOgogICAgIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQoR1BVQ29ubmVj
dGlvblRvV2ViUHJvY2VzcyYsIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRDcmVhdGlvblBhcmFtZXRl
cnMmJik7CiAKQEAgLTE0MSw4ICsxNDIsMTAgQEAgcHJpdmF0ZToKICAgICAgICAgfQogICAgIH07
CiAKKyAgICBSZWY8V29ya1F1ZXVlPiBtX3dvcmtRdWV1ZTsKICAgICBSZW1vdGVSZXNvdXJjZUNh
Y2hlIG1fcmVtb3RlUmVzb3VyY2VDYWNoZTsKLSAgICBXZWFrUHRyPEdQVUNvbm5lY3Rpb25Ub1dl
YlByb2Nlc3M+IG1fZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2VzczsKKyAgICBMb2NrIG1fZ3B1Q29u
bmVjdGlvblRvV2ViUHJvY2Vzc0xvY2s7CisgICAgUmVmUHRyPEdQVUNvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3M+IG1fZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2VzczsKICAgICBSZW5kZXJpbmdCYWNrZW5k
SWRlbnRpZmllciBtX3JlbmRlcmluZ0JhY2tlbmRJZGVudGlmaWVyOwogICAgIEhhc2hNYXA8V2Vi
Q29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1CdWZmZXJJZGVudGlmaWVyLCBSZWZQdHI8RGlzcGxheUxp
c3RSZWFkZXJIYW5kbGU+PiBtX3NoYXJlZERpc3BsYXlMaXN0SGFuZGxlczsKICAgICBPcHRpb25h
bDxQZW5kaW5nV2FrZXVwSW5mb3JtYXRpb24+IG1fcGVuZGluZ1dha2V1cEluZm87CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFj
a2VuZC5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1v
dGVSZW5kZXJpbmdCYWNrZW5kLm1lc3NhZ2VzLmluCmluZGV4IDIwMmMyMGE5YzY1MDEzMDkxMTNk
OTA2ODNjZjAwOWI4ODNiZDAwMWYuLjdkNjVjZTkwOWM1ODIwZjQ2YjAxZTZiZGVlY2RlYWE3MzM2
YWFmMjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1v
dGVSZW5kZXJpbmdCYWNrZW5kLm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJv
Y2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kLm1lc3NhZ2VzLmluCkBAIC0yMiw3
ICsyMiw3IEBACiAKICNpZiBFTkFCTEUoR1BVX1BST0NFU1MpCiAKLW1lc3NhZ2VzIC0+IFJlbW90
ZVJlbmRlcmluZ0JhY2tlbmQgTm90UmVmQ291bnRlZCB7CittZXNzYWdlcyAtPiBSZW1vdGVSZW5k
ZXJpbmdCYWNrZW5kIHsKICAgICBDcmVhdGVJbWFnZUJ1ZmZlcihXZWJDb3JlOjpGbG9hdFNpemUg
bG9naWNhbFNpemUsIFdlYkNvcmU6OlJlbmRlcmluZ01vZGUgcmVuZGVyaW5nTW9kZSwgZmxvYXQg
cmVzb2x1dGlvblNjYWxlLCBXZWJDb3JlOjpDb2xvclNwYWNlIGNvbG9yU3BhY2UsIGVudW06dWlu
dDhfdCBXZWJDb3JlOjpQaXhlbEZvcm1hdCBwaXhlbEZvcm1hdCwgV2ViQ29yZTo6UmVuZGVyaW5n
UmVzb3VyY2VJZGVudGlmaWVyIHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcikKICAgICBXYWtl
VXBBbmRBcHBseURpc3BsYXlMaXN0KHN0cnVjdCBXZWJLaXQ6OkdQVVByb2Nlc3NXYWtldXBNZXNz
YWdlQXJndW1lbnRzIGFyZ3VtZW50cykKICAgICBHZXRJbWFnZURhdGEoZW51bTp1aW50OF90IFdl
YkNvcmU6OkFscGhhUHJlbXVsdGlwbGljYXRpb24gb3V0cHV0Rm9ybWF0LCBXZWJDb3JlOjpJbnRS
ZWN0IHNyY1JlY3QsIFdlYkNvcmU6OlJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciByZW5kZXJp
bmdSZXNvdXJjZUlkZW50aWZpZXIpIC0+IChJUEM6OkltYWdlRGF0YVJlZmVyZW5jZSBpbWFnZURh
dGEpIFN5bmNocm9ub3VzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL1NoYXJl
ZE1lbW9yeS5oIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9TaGFyZWRNZW1vcnkuaAppbmRleCBh
MDg1NDZiNzY1NjA0NTYxNDVkODUwNGQ5MzhmMDNlN2Y4MWI0MGQwLi4wMzQ1YTI1ZTczNDRhM2I3
YjVjMTE2MjhjODdkN2E5ZTg1NmQ4NDEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRm
b3JtL1NoYXJlZE1lbW9yeS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vU2hhcmVkTWVt
b3J5LmgKQEAgLTI4LDcgKzI4LDcgQEAKIAogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAjaW5j
bHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+Ci0jaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KKyNp
bmNsdWRlIDx3dGYvVGhyZWFkU2FmZVJlZkNvdW50ZWQuaD4KIAogI2lmIFVTRShVTklYX0RPTUFJ
Tl9TT0NLRVRTKQogI2luY2x1ZGUgIkF0dGFjaG1lbnQuaCIKQEAgLTU2LDcgKzU2LDcgQEAgY2xh
c3MgTWFjaFNlbmRSaWdodDsKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKLWNsYXNzIFNoYXJlZE1l
bW9yeSA6IHB1YmxpYyBSZWZDb3VudGVkPFNoYXJlZE1lbW9yeT4geworY2xhc3MgU2hhcmVkTWVt
b3J5IDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPFNoYXJlZE1lbW9yeT4gewogcHVibGlj
OgogICAgIGVudW0gY2xhc3MgUHJvdGVjdGlvbiB7CiAgICAgICAgIFJlYWRPbmx5LApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvU2hhcmVhYmxlQml0bWFwLmNwcCBiL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL1NoYXJlYWJsZUJpdG1hcC5jcHAKaW5kZXggODQ0ODg3YmJjM2IxYjNhNDMz
ODQxMmU5NDNjOWQ2OTJjYjFiNjJiMC4uYjEwZDVhNjNjMWE1NDg0ZWEyZDFmMzdiOTVkZDU1NWQz
OWUwMzkzOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvU2hhcmVhYmxlQml0bWFw
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9TaGFyZWFibGVCaXRtYXAuY3BwCkBAIC0x
NzIsNyArMTcyLDYgQEAgU2hhcmVhYmxlQml0bWFwOjpTaGFyZWFibGVCaXRtYXAoY29uc3QgSW50
U2l6ZSYgc2l6ZSwgQ29uZmlndXJhdGlvbiBjb25maWd1cmF0aW8KICAgICAsIG1fY29uZmlndXJh
dGlvbihjb25maWd1cmF0aW9uKQogICAgICwgbV9kYXRhKGRhdGEpCiB7Ci0gICAgQVNTRVJUKFJ1
bkxvb3A6OmlzTWFpbigpKTsKIH0KIAogU2hhcmVhYmxlQml0bWFwOjpTaGFyZWFibGVCaXRtYXAo
Y29uc3QgSW50U2l6ZSYgc2l6ZSwgQ29uZmlndXJhdGlvbiBjb25maWd1cmF0aW9uLCBSZWZQdHI8
U2hhcmVkTWVtb3J5PiBzaGFyZWRNZW1vcnkpCkBAIC0xODEsOCArMTgwLDYgQEAgU2hhcmVhYmxl
Qml0bWFwOjpTaGFyZWFibGVCaXRtYXAoY29uc3QgSW50U2l6ZSYgc2l6ZSwgQ29uZmlndXJhdGlv
biBjb25maWd1cmF0aW8KICAgICAsIG1fc2hhcmVkTWVtb3J5KHNoYXJlZE1lbW9yeSkKICAgICAs
IG1fZGF0YShudWxscHRyKQogewotICAgIEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7Ci0KICNp
ZiBVU0UoRElSRUNUMkQpCiAgICAgY3JlYXRlU2hhcmVkUmVzb3VyY2UoKTsKICNlbmRpZgpAQCAt
MTkwLDggKzE4Nyw2IEBAIFNoYXJlYWJsZUJpdG1hcDo6U2hhcmVhYmxlQml0bWFwKGNvbnN0IElu
dFNpemUmIHNpemUsIENvbmZpZ3VyYXRpb24gY29uZmlndXJhdGlvCiAKIFNoYXJlYWJsZUJpdG1h
cDo6flNoYXJlYWJsZUJpdG1hcCgpCiB7Ci0gICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsK
LQogICAgIGlmICghaXNCYWNrZWRCeVNoYXJlZE1lbW9yeSgpKQogICAgICAgICBTaGFyZWFibGVC
aXRtYXBNYWxsb2M6OmZyZWUobV9kYXRhKTsKICNpZiBVU0UoRElSRUNUMkQpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9TaGFyZWFibGVCaXRtYXAuaCBiL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL1NoYXJlYWJsZUJpdG1hcC5oCmluZGV4IDNhMWZhZDJjNzliY2UxYzdlNWExYTNhNzJl
NjQwMmI4ZmJiMTg1NWYuLmNlYzViNTkzYzVmYThjYzg4Yjg1NjRiMDE2MGI0N2U5ZTMzMTQwYTMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1NoYXJlYWJsZUJpdG1hcC5oCisrKyBi
L1NvdXJjZS9XZWJLaXQvU2hhcmVkL1NoYXJlYWJsZUJpdG1hcC5oCkBAIC0yOCw4ICsyOCw4IEBA
CiAjaW5jbHVkZSAiU2hhcmVkTWVtb3J5LmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9JbnRSZWN0Lmg+
CiAjaW5jbHVkZSA8V2ViQ29yZS9QbGF0Zm9ybUltYWdlLmg+Ci0jaW5jbHVkZSA8d3RmL1JlZkNv
dW50ZWQuaD4KICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CisjaW5jbHVkZSA8d3RmL1RocmVhZFNh
ZmVSZWZDb3VudGVkLmg+CiAKICNpZiBVU0UoQ0cpCiAjaW5jbHVkZSAiQ29sb3JTcGFjZURhdGEu
aCIKQEAgLTUyLDcgKzUyLDcgQEAgY2xhc3MgR3JhcGhpY3NDb250ZXh0OwogCiBuYW1lc3BhY2Ug
V2ViS2l0IHsKICAgICAKLWNsYXNzIFNoYXJlYWJsZUJpdG1hcCA6IHB1YmxpYyBSZWZDb3VudGVk
PFNoYXJlYWJsZUJpdG1hcD4geworY2xhc3MgU2hhcmVhYmxlQml0bWFwIDogcHVibGljIFRocmVh
ZFNhZmVSZWZDb3VudGVkPFNoYXJlYWJsZUJpdG1hcD4gewogcHVibGljOgogICAgIHN0cnVjdCBD
b25maWd1cmF0aW9uIHsKICAgICAgICAgYm9vbCBpc09wYXF1ZSB7IGZhbHNlIH07CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9jZy9TaGFyZWFibGVCaXRtYXBDRy5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9jZy9TaGFyZWFibGVCaXRtYXBDRy5jcHAKaW5kZXggMzY1MzQ4MjBh
ZjVhMjI4M2M2ZTZhMDZlNzQzMzE3N2I5MDNkZTBhMS4uOGY5Y2Q1OTQzNmNhMTZhNjdjMzAxYjc1
NDc2MDU5Nzg3NjhhNDQzYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvY2cvU2hh
cmVhYmxlQml0bWFwQ0cuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL2NnL1NoYXJlYWJs
ZUJpdG1hcENHLmNwcApAQCAtODcsNyArODcsNiBAQCB1bnNpZ25lZCBTaGFyZWFibGVCaXRtYXA6
OmNhbGN1bGF0ZUJ5dGVzUGVyUGl4ZWwoY29uc3QgQ29uZmlndXJhdGlvbiYgY29uZmlndXJhdAog
CiBzdGQ6OnVuaXF1ZV9wdHI8R3JhcGhpY3NDb250ZXh0PiBTaGFyZWFibGVCaXRtYXA6OmNyZWF0
ZUdyYXBoaWNzQ29udGV4dCgpCiB7Ci0gICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKICAg
ICByZWYoKTsgLy8gQmFsYW5jZWQgYnkgZGVyZWYgaW4gcmVsZWFzZUJpdG1hcENvbnRleHREYXRh
LgogCiAgICAgdW5zaWduZWQgYnl0ZXNQZXJQaXhlbCA9IGNhbGN1bGF0ZUJ5dGVzUGVyUGl4ZWwo
bV9jb25maWd1cmF0aW9uKTsKQEAgLTE1NywxMyArMTU2LDYgQEAgUmV0YWluUHRyPENHSW1hZ2VS
ZWY+IFNoYXJlYWJsZUJpdG1hcDo6Y3JlYXRlQ0dJbWFnZShDR0RhdGFQcm92aWRlclJlZiBkYXRh
UHJvdmkKIAogdm9pZCBTaGFyZWFibGVCaXRtYXA6OnJlbGVhc2VCaXRtYXBDb250ZXh0RGF0YSh2
b2lkKiB0eXBlbGVzc0JpdG1hcCwgdm9pZCogdHlwZWxlc3NEYXRhKQogewotICAgIGlmICghUnVu
TG9vcDo6aXNNYWluKCkpIHsKLSAgICAgICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFt0eXBl
bGVzc0JpdG1hcCwgdHlwZWxlc3NEYXRhXSB7Ci0gICAgICAgICAgICByZWxlYXNlQml0bWFwQ29u
dGV4dERhdGEodHlwZWxlc3NCaXRtYXAsIHR5cGVsZXNzRGF0YSk7Ci0gICAgICAgIH0pOwotICAg
ICAgICByZXR1cm47Ci0gICAgfQotCiAgICAgU2hhcmVhYmxlQml0bWFwKiBiaXRtYXAgPSBzdGF0
aWNfY2FzdDxTaGFyZWFibGVCaXRtYXAqPih0eXBlbGVzc0JpdG1hcCk7CiAgICAgQVNTRVJUX1VO
VVNFRCh0eXBlbGVzc0RhdGEsIGJpdG1hcC0+ZGF0YSgpID09IHR5cGVsZXNzRGF0YSk7CiAgICAg
Yml0bWFwLT5kZXJlZigpOyAvLyBCYWxhbmNlZCBieSByZWYgaW4gY3JlYXRlR3JhcGhpY3NDb250
ZXh0LgpAQCAtMTcxLDEzICsxNjMsNiBAQCB2b2lkIFNoYXJlYWJsZUJpdG1hcDo6cmVsZWFzZUJp
dG1hcENvbnRleHREYXRhKHZvaWQqIHR5cGVsZXNzQml0bWFwLCB2b2lkKiB0eXBlbAogCiB2b2lk
IFNoYXJlYWJsZUJpdG1hcDo6cmVsZWFzZURhdGFQcm92aWRlckRhdGEodm9pZCogdHlwZWxlc3NC
aXRtYXAsIGNvbnN0IHZvaWQqIHR5cGVsZXNzRGF0YSwgc2l6ZV90KQogewotICAgIGlmICghUnVu
TG9vcDo6aXNNYWluKCkpIHsKLSAgICAgICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFt0eXBl
bGVzc0JpdG1hcCwgdHlwZWxlc3NEYXRhXSB7Ci0gICAgICAgICAgICByZWxlYXNlRGF0YVByb3Zp
ZGVyRGF0YSh0eXBlbGVzc0JpdG1hcCwgdHlwZWxlc3NEYXRhLCAwKTsKLSAgICAgICAgfSk7Ci0g
ICAgICAgIHJldHVybjsKLSAgICB9Ci0KICAgICBTaGFyZWFibGVCaXRtYXAqIGJpdG1hcCA9IHN0
YXRpY19jYXN0PFNoYXJlYWJsZUJpdG1hcCo+KHR5cGVsZXNzQml0bWFwKTsKICAgICBBU1NFUlRf
VU5VU0VEKHR5cGVsZXNzRGF0YSwgYml0bWFwLT5kYXRhKCkgPT0gdHlwZWxlc3NEYXRhKTsKICAg
ICBiaXRtYXAtPmRlcmVmKCk7IC8vIEJhbGFuY2VkIGJ5IHJlZiBpbiBjcmVhdGVDR0ltYWdlLgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>417508</attachid>
            <date>2021-01-12 22:12:16 -0800</date>
            <delta_ts>2021-01-13 14:42:07 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-220476-20210112221215.patch</filename>
            <type>text/plain</type>
            <size>41119</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcxNDE2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNDUyNmI2MjRiOWRkOGFh
ODk0MGM2NDQxODZhNzQyM2MwNDE5MTg0NS4uMDQ4ODk3ZjczNjBmZWIxOTE5MzZmYzdiZDdlMTk4
ZDExNTFlNDMyNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM4IEBACisyMDIxLTAxLTA4ICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgW0dQVVByb2Nlc3NdIE1vdmUg
RE9NIC8gQ2FudmFzIHJlbmRlcmluZyBvZmYgdGhlIG1haW4gdGhyZWFkIGluIHRoZSBHUFVQcm9j
ZXNzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjA0
NzYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBNYWtl
IHNvbWUgY2FjaGVzIHRocmVhZC1zYWZlIG5vdyB0aGF0IHdlIGRvIHJlbmRlcmluZyBvZmYgdGhl
IG1haW4gdGhyZWFkIGluCisgICAgICAgIHRoZSBHUFVQcm9jZXNzLgorCisgICAgICAgIE5vIG5l
dyB0ZXN0cywgY292ZXJlZCBieSBleGlzdGluZyB0ZXN0cy4KKworICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL0ltYWdlQnVmZmVyLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvU2hh
ZG93Qmx1ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTY3JhdGNoQnVmZmVyOjpTY3JhdGNoQnVm
ZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcmF0Y2hCdWZmZXI6OmdldFNjcmF0Y2hCdWZmZXIp
OgorICAgICAgICAoV2ViQ29yZTo6U2NyYXRjaEJ1ZmZlcjo6c2V0Q2FjaGVkU2hhZG93VmFsdWVz
KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcmF0Y2hCdWZmZXI6OnNldENhY2hlZEluc2V0U2hhZG93
VmFsdWVzKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcmF0Y2hCdWZmZXI6OnNjaGVkdWxlU2NyYXRj
aEJ1ZmZlclB1cmdlKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcmF0Y2hCdWZmZXI6OnB1cmdlVGlt
ZXJGaXJlZCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JhdGNoQnVmZmVyOjpjbGVhclNjcmF0Y2hC
dWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6U2NyYXRjaEJ1ZmZlcjo6c2luZ2xldG9uKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlclV0aWxpdGllc0NHLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OnV0aUZyb21JbWFnZUJ1ZmZlck1JTUVUeXBlKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9TdWJpbWFnZUNhY2hlV2l0aFRpbWVyLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlN1YmltYWdlQ2FjaGVXaXRoVGltZXI6OlN1YmltYWdlQ2FjaGVXaXRoVGlt
ZXIpOgorICAgICAgICAoV2ViQ29yZTo6U3ViaW1hZ2VDYWNoZVdpdGhUaW1lcjo6cHJ1bmVDYWNo
ZVRpbWVyRmlyZWQpOgorICAgICAgICAoV2ViQ29yZTo6U3ViaW1hZ2VDYWNoZVdpdGhUaW1lcjo6
c3ViaW1hZ2UpOgorICAgICAgICAoV2ViQ29yZTo6U3ViaW1hZ2VDYWNoZVdpdGhUaW1lcjo6Y2xl
YXJJbWFnZUFuZFN1YmltYWdlcyk6CisgICAgICAgIChXZWJDb3JlOjpTdWJpbWFnZUNhY2hlV2l0
aFRpbWVyOjpjbGVhckFsbCk6CisgICAgICAgIChXZWJDb3JlOjpTdWJpbWFnZUNhY2hlV2l0aFRp
bWVyOjpzdWJpbWFnZUNhY2hlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9TdWJp
bWFnZUNhY2hlV2l0aFRpbWVyLmg6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9tYWMvVVRJ
VXRpbGl0aWVzLm1tOgorICAgICAgICAoV2ViQ29yZTo6VVRJRnJvbU1JTUVUeXBlKToKKwogMjAy
MS0wMS0xMiAgQ2hyaXMgRmxlaXphY2ggIDxjZmxlaXphY2hAYXBwbGUuY29tPgogCiAgICAgICAg
IEFYOiBJbXBsZW1lbnQgYXJpYS1icmFpbGxlbGFiZWwgYW5kIGFyaWEtYnJhaWxsZXJvbGVkZXNj
cmlwdGlvbgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2Vi
S2l0L0NoYW5nZUxvZwppbmRleCBhODdjMWYzYWNhMTZlNzRlNTU5N2IyN2JkMTE2ZGMyNzQ0MGM3
YzI4Li44OTJjMjM0MjJmOWE5ZTJhZjQ5NWYxNmU0ZmYzNDVkZDliOGE0MDYwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpA
QCAtMSwzICsxLDQxIEBACisyMDIxLTAxLTA4ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5j
b20+CisKKyAgICAgICAgW0dQVVByb2Nlc3NdIE1vdmUgRE9NIC8gQ2FudmFzIHJlbmRlcmluZyBv
ZmYgdGhlIG1haW4gdGhyZWFkIGluIHRoZSBHUFVQcm9jZXNzCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjA0NzYKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBNb3ZlIERPTSAvIENhbnZhcyByZW5kZXJpbmcg
b2ZmIHRoZSBtYWluIHRocmVhZCAoYW5kIG9uIGEgaGlnaC1wcmlvcml0eSBzZXJpYWwgV29ya1F1
ZXVlKSBpbiB0aGUKKyAgICAgICAgR1BVUHJvY2VzcyBieSBtYWtpbmcgUmVtb3RlUmVuZGVyaW5n
QmFja2VuZCBhIFdvcmtRdWV1ZU1lc3NhZ2VSZWNlaXZlci4gVGhlcmUgaXMgYSBzZXJpYWwgV29y
a1F1ZXVlCisgICAgICAgIHBlciBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kLCB3aGljaCBtZWFucyBl
YWNoIFdlYlBhZ2UgZ2V0cyBpdHMgb3duIFdvcmtRdWV1ZS4KKworICAgICAgICBMb2NhbCB0ZXN0
aW5nIHNlZW1zIHRvIGluZGljYXRlIHRoYXQgdGhpcyBjaGFuZ2UgaXMgcGVyZi1uZXV0cmFsIChJ
IGhhdmUgc2NoZWR1bGVkIEEvQiB0ZXN0aW5nIG9uCisgICAgICAgIHRoZSBib3RzIHRvIGNvbmZp
cm0pLiBJIHRoaW5rIHRoaXMgaXMgZ29vZCBuZXdzIHNpbmNlIEkgYmVsaWV2ZSB0aGlzIG5ldyBh
cmNoaXRlY3R1cmUgd2lsbCBnaXZlCisgICAgICAgIHVzIG1vcmUgb3B0aW1pemF0aW9uIG9wcG9y
dHVuaXRpZXMgaW4gdGhlIGZ1dHVyZS4gRm9yIGV4YW1wbGUsIHdlIHdvdWxkIGJlIGFibGUgdG8g
bW9yZQorICAgICAgICBhZ2dyZXNzaXZlbHkgd2FpdCBvbiB0aGUgY3Jvc3MtcHJvY2VzcyBzZW1h
cGhvcmUgd2hlbiB3YWl0aW5nIGZvciBuZXcgRGlzcGxheUxpc3QgZW50cmllcyB3aXRob3V0Cisg
ICAgICAgIHdvcnJ5aW5nIGFib3V0IGJsb2NraW5nIHRoZSBtYWluIHRocmVhZC4KKworICAgICAg
ICBJIGhhdmUgcnVuIGxheW91dCB0ZXN0cyBpbiBEZWJ1ZyBvbiBib3RoIG1hY09TICYgaU9TIHdp
dGggdGhlIEdQVVByb2Nlc3MgZW5hYmxlZCBhbmQgSSBiZWxpZXZlIEkKKyAgICAgICAgaGF2ZSBm
aXhlZCBhbGwgdGhlIGNyYXNoZXMgdGhhdCB3ZXJlIGRpc2NvdmVyZWQuCisKKyAgICAgICAgKiBH
UFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaDoKKyAgICAgICAgKiBHUFVQcm9j
ZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQuY3BwOgorICAgICAgICAoV2ViS2l0
OjpyZW5kZXJpbmdXb3JrUXVldWUpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVSZW5kZXJpbmdC
YWNrZW5kOjpjcmVhdGUpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5k
OjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlUmVuZGVy
aW5nQmFja2VuZDo6flJlbW90ZVJlbmRlcmluZ0JhY2tlbmQpOgorICAgICAgICAqIEdQVVByb2Nl
c3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5oOgorICAgICAgICAqIEdQVVByb2Nl
c3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5tZXNzYWdlcy5pbjoKKyAgICAgICAg
KiBQbGF0Zm9ybS9TaGFyZWRNZW1vcnkuaDoKKyAgICAgICAgKiBTaGFyZWQvU2hhcmVhYmxlQml0
bWFwLmNwcDoKKyAgICAgICAgKFdlYktpdDo6U2hhcmVhYmxlQml0bWFwOjpTaGFyZWFibGVCaXRt
YXApOgorICAgICAgICAoV2ViS2l0OjpTaGFyZWFibGVCaXRtYXA6On5TaGFyZWFibGVCaXRtYXAp
OgorICAgICAgICAqIFNoYXJlZC9TaGFyZWFibGVCaXRtYXAuaDoKKyAgICAgICAgKiBTaGFyZWQv
Y2cvU2hhcmVhYmxlQml0bWFwQ0cuY3BwOgorICAgICAgICAoV2ViS2l0OjpTaGFyZWFibGVCaXRt
YXA6OmNyZWF0ZUdyYXBoaWNzQ29udGV4dCk6CisgICAgICAgIChXZWJLaXQ6OlNoYXJlYWJsZUJp
dG1hcDo6cmVsZWFzZUJpdG1hcENvbnRleHREYXRhKToKKyAgICAgICAgKFdlYktpdDo6U2hhcmVh
YmxlQml0bWFwOjpyZWxlYXNlRGF0YVByb3ZpZGVyRGF0YSk6CisKIDIwMjEtMDEtMTIgIERvbiBP
bG1zdGVhZCAgPGRvbi5vbG1zdGVhZEBzb255LmNvbT4KIAogICAgICAgICBOb24tdW5pZmllZCBi
dWlsZCBmaXhlcyBtaWQgSmFudWFyeSAyMDIxIGVkaXRpb24KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
VEYvd3RmL1RpbnlMUlVDYWNoZS5oIGIvU291cmNlL1dURi93dGYvVGlueUxSVUNhY2hlLmgKaW5k
ZXggZDhiYzdiODEzMTE5OWUwM2ExZmQ4N2E2NGY1NzE0Mjc4ZjM4Mzk3Yy4uOTAzZTViYmE3Mzgx
ZDgzNGU3MzM0ZDkxY2ZiYTlhZTQ4NzEwNTEyZSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYv
VGlueUxSVUNhY2hlLmgKKysrIGIvU291cmNlL1dURi93dGYvVGlueUxSVUNhY2hlLmgKQEAgLTM1
LDYgKzM1LDcgQEAgc3RydWN0IFRpbnlMUlVDYWNoZVBvbGljeSB7CiAgICAgc3RhdGljIGJvb2wg
aXNLZXlOdWxsKGNvbnN0IEtleVR5cGUmKSB7IHJldHVybiBmYWxzZTsgfQogICAgIHN0YXRpYyBW
YWx1ZVR5cGUgY3JlYXRlVmFsdWVGb3JOdWxsS2V5KCkgeyByZXR1cm4geyB9OyB9CiAgICAgc3Rh
dGljIFZhbHVlVHlwZSBjcmVhdGVWYWx1ZUZvcktleShjb25zdCBLZXlUeXBlJikgeyByZXR1cm4g
eyB9OyB9CisgICAgc3RhdGljIEtleVR5cGUgY3JlYXRlS2V5Rm9yU3RvcmFnZShjb25zdCBLZXlU
eXBlJiBrZXkpIHsgcmV0dXJuIGtleTsgfQogfTsKIAogdGVtcGxhdGU8dHlwZW5hbWUgS2V5VHlw
ZSwgdHlwZW5hbWUgVmFsdWVUeXBlLCBzaXplX3QgY2FwYWNpdHkgPSA0LCB0eXBlbmFtZSBQb2xp
Y3kgPSBUaW55TFJVQ2FjaGVQb2xpY3k8S2V5VHlwZSwgVmFsdWVUeXBlPj4KQEAgLTY2LDcgKzY3
LDcgQEAgcHVibGljOgogICAgICAgICBpZiAobV9jYWNoZS5zaXplKCkgPT0gY2FwYWNpdHkpCiAg
ICAgICAgICAgICBtX2NhY2hlLnJlbW92ZSgwKTsKIAotICAgICAgICBtX2NhY2hlLmFwcGVuZChz
dGQ6Om1ha2VfcGFpcihrZXksIFBvbGljeTo6Y3JlYXRlVmFsdWVGb3JLZXkoa2V5KSkpOworICAg
ICAgICBtX2NhY2hlLmFwcGVuZChzdGQ6Om1ha2VfcGFpcihQb2xpY3k6OmNyZWF0ZUtleUZvclN0
b3JhZ2Uoa2V5KSwgUG9saWN5OjpjcmVhdGVWYWx1ZUZvcktleShrZXkpKSk7CiAgICAgICAgIHJl
dHVybiBtX2NhY2hlLmxhc3QoKS5zZWNvbmQ7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlci5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXIuaAppbmRleCA0MjVhMzJlYTQ0OWMwZWQ1MjI2
Y2M1ODk3ZDljYzE2Yjc4NjIwZmRiLi4zNmQ3NGNhMzlkZTE3Y2QwM2MxM2JiNzVlNGQ1ZTM4NDhj
MzNlY2ZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFn
ZUJ1ZmZlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVm
ZmVyLmgKQEAgLTQyLDcgKzQyLDcgQEAgY2xhc3MgRHJhd2luZ0NvbnRleHQ7CiBzdHJ1Y3QgSXRl
bUJ1ZmZlckhhbmRsZTsKIH0KIAotY2xhc3MgSW1hZ2VCdWZmZXIgOiBwdWJsaWMgUmVmQ291bnRl
ZDxJbWFnZUJ1ZmZlcj4sIHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxJbWFnZUJ1ZmZlcj4geworY2xh
c3MgSW1hZ2VCdWZmZXIgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8SW1hZ2VCdWZmZXI+
LCBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8SW1hZ2VCdWZmZXI+IHsKIHB1YmxpYzoKICAgICAvLyBX
aWxsIHJldHVybiBhIG51bGwgcG9pbnRlciBvbiBhbGxvY2F0aW9uIGZhaWx1cmUuCiAgICAgV0VC
Q09SRV9FWFBPUlQgc3RhdGljIFJlZlB0cjxJbWFnZUJ1ZmZlcj4gY3JlYXRlKGNvbnN0IEZsb2F0
U2l6ZSYsIFJlbmRlcmluZ01vZGUsIFNob3VsZFVzZURpc3BsYXlMaXN0LCBSZW5kZXJpbmdQdXJw
b3NlLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUgPSAxLCBDb2xvclNwYWNlID0gQ29sb3JTcGFjZTo6
U1JHQiwgUGl4ZWxGb3JtYXQgPSBQaXhlbEZvcm1hdDo6QkdSQTgsIGNvbnN0IEhvc3RXaW5kb3cq
ID0gbnVsbHB0cik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9TaGFkb3dCbHVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1NoYWRv
d0JsdXIuY3BwCmluZGV4IDgzMzg5YmE2ODA1NjM3N2Y5OWYwZjVhMWNkMzA3YmY2Y2Y5MWQ4MmEu
LmFjMTQ2ZDk5NTcwOTViMjdmYmQ3ODA3MTFlYzhiOTA3MjVhMmZiZWYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1NoYWRvd0JsdXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1NoYWRvd0JsdXIuY3BwCkBAIC0zNiw5ICszNiwx
MSBAQAogI2luY2x1ZGUgIkltYWdlQnVmZmVyLmgiCiAjaW5jbHVkZSAiSW1hZ2VEYXRhLmgiCiAj
aW5jbHVkZSAiVGltZXIuaCIKKyNpbmNsdWRlIDx3dGYvTG9jay5oPgogI2luY2x1ZGUgPHd0Zi9N
YXRoRXh0cmFzLmg+CiAjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CiAjaW5jbHVkZSA8
d3RmL05vbmNvcHlhYmxlLmg+CisjaW5jbHVkZSA8d3RmL1J1bkxvb3AuaD4KICNpbmNsdWRlIDx3
dGYvU2NvcGUuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtNjEsMjMgKzYzLDIxIEBAIGNs
YXNzIFNjcmF0Y2hCdWZmZXIgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGlj
OgogICAgIFNjcmF0Y2hCdWZmZXIoKQotICAgICAgICA6IG1fcHVyZ2VUaW1lcigqdGhpcywgJlNj
cmF0Y2hCdWZmZXI6OmNsZWFyU2NyYXRjaEJ1ZmZlcikKLSAgICAgICAgLCBtX2xhc3RXYXNJbnNl
dChmYWxzZSkKLSNpZiBBU1NFUlRfRU5BQkxFRAotICAgICAgICAsIG1fYnVmZmVySW5Vc2UoZmFs
c2UpCi0jZW5kaWYKKyAgICAgICAgOiBtX3B1cmdlVGltZXIoUnVuTG9vcDo6bWFpbigpLCB0aGlz
LCAmU2NyYXRjaEJ1ZmZlcjo6cHVyZ2VUaW1lckZpcmVkKQogICAgIHsKICAgICB9CiAKLSAgICBJ
bWFnZUJ1ZmZlciogZ2V0U2NyYXRjaEJ1ZmZlcihjb25zdCBJbnRTaXplJiBzaXplKQorICAgIFJl
ZlB0cjxJbWFnZUJ1ZmZlcj4gZ2V0U2NyYXRjaEJ1ZmZlcihjb25zdCBJbnRTaXplJiBzaXplKQog
ICAgIHsKLSAgICAgICAgQVNTRVJUKCFtX2J1ZmZlckluVXNlKTsKLSNpZiBBU1NFUlRfRU5BQkxF
RAotICAgICAgICBtX2J1ZmZlckluVXNlID0gdHJ1ZTsKLSNlbmRpZgorICAgICAgICBBU1NFUlQo
bG9jaygpLmlzSGVsZCgpKTsKKyAgICAgICAgYXV0byByZWxlYXNlTGF5ZXJJbWFnZSA9IG1ha2VT
Y29wZUV4aXQoW3RoaXNdIHsKKyAgICAgICAgICAgIGlmIChtX2ltYWdlQnVmZmVyKQorICAgICAg
ICAgICAgICAgIHNjaGVkdWxlU2NyYXRjaEJ1ZmZlclB1cmdlKCk7CisgICAgICAgIH0pOworCiAg
ICAgICAgIC8vIFdlIGRvIG5vdCBuZWVkIHRvIHJlY3JlYXRlIHRoZSBidWZmZXIgaWYgdGhlIGN1
cnJlbnQgYnVmZmVyIGlzIGxhcmdlIGVub3VnaC4KICAgICAgICAgaWYgKG1faW1hZ2VCdWZmZXIg
JiYgbV9pbWFnZUJ1ZmZlci0+bG9naWNhbFNpemUoKS53aWR0aCgpID49IHNpemUud2lkdGgoKSAm
JiBtX2ltYWdlQnVmZmVyLT5sb2dpY2FsU2l6ZSgpLmhlaWdodCgpID49IHNpemUuaGVpZ2h0KCkp
Ci0gICAgICAgICAgICByZXR1cm4gbV9pbWFnZUJ1ZmZlci5nZXQoKTsKKyAgICAgICAgICAgIHJl
dHVybiBtX2ltYWdlQnVmZmVyOwogCiAgICAgICAgIC8vIFJvdW5kIHRvIHRoZSBuZWFyZXN0IDMy
IHBpeGVscyBzbyB3ZSBkbyBub3QgZ3JvdyB0aGUgYnVmZmVyIGZvciBzaW1pbGFyIHNpemVkIHJl
cXVlc3RzLgogICAgICAgICBJbnRTaXplIHJvdW5kZWRTaXplKHJvdW5kVXBUb011bHRpcGxlT2Yz
MihzaXplLndpZHRoKCkpLCByb3VuZFVwVG9NdWx0aXBsZU9mMzIoc2l6ZS5oZWlnaHQoKSkpOwpA
QCAtODYsMTEgKzg2LDEyIEBAIHB1YmxpYzoKIAogICAgICAgICAvLyBTaGFkb3dCbHVyIGlzIG5v
dCB1c2VkIHdpdGggYWNjZWxlcmF0ZWQgZHJhd2luZywgc28gaXQncyBPSyB0byBtYWtlIGFuIHVu
Y29uZGl0aW9uYWxseSB1bmFjY2VsZXJhdGVkIGJ1ZmZlci4KICAgICAgICAgbV9pbWFnZUJ1ZmZl
ciA9IEltYWdlQnVmZmVyOjpjcmVhdGUocm91bmRlZFNpemUsIFJlbmRlcmluZ01vZGU6OlVuYWNj
ZWxlcmF0ZWQsIDEpOwotICAgICAgICByZXR1cm4gbV9pbWFnZUJ1ZmZlci5nZXQoKTsKKyAgICAg
ICAgcmV0dXJuIG1faW1hZ2VCdWZmZXI7CiAgICAgfQogCiAgICAgYm9vbCBzZXRDYWNoZWRTaGFk
b3dWYWx1ZXMoY29uc3QgRmxvYXRTaXplJiByYWRpdXMsIGNvbnN0IENvbG9yJiBjb2xvciwgY29u
c3QgRmxvYXRSZWN0JiBzaGFkb3dSZWN0LCBjb25zdCBGbG9hdFJvdW5kZWRSZWN0OjpSYWRpaSYg
cmFkaWksIGNvbnN0IEZsb2F0U2l6ZSYgbGF5ZXJTaXplKQogICAgIHsKKyAgICAgICAgQVNTRVJU
KGxvY2soKS5pc0hlbGQoKSk7CiAgICAgICAgIGlmICghbV9sYXN0V2FzSW5zZXQgJiYgbV9sYXN0
UmFkaXVzID09IHJhZGl1cyAmJiBtX2xhc3RDb2xvciA9PSBjb2xvciAmJiBtX2xhc3RTaGFkb3dS
ZWN0ID09IHNoYWRvd1JlY3QgJiYgIG1fbGFzdFJhZGlpID09IHJhZGlpICYmIG1fbGFzdExheWVy
U2l6ZSA9PSBsYXllclNpemUpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAKQEAgLTEwNiw2
ICsxMDcsNyBAQCBwdWJsaWM6CiAKICAgICBib29sIHNldENhY2hlZEluc2V0U2hhZG93VmFsdWVz
KGNvbnN0IEZsb2F0U2l6ZSYgcmFkaXVzLCBjb25zdCBDb2xvciYgY29sb3IsIGNvbnN0IEZsb2F0
UmVjdCYgYm91bmRzLCBjb25zdCBGbG9hdFJlY3QmIHNoYWRvd1JlY3QsIGNvbnN0IEZsb2F0Um91
bmRlZFJlY3Q6OlJhZGlpJiByYWRpaSkKICAgICB7CisgICAgICAgIEFTU0VSVChsb2NrKCkuaXNI
ZWxkKCkpOwogICAgICAgICBpZiAobV9sYXN0V2FzSW5zZXQgJiYgbV9sYXN0UmFkaXVzID09IHJh
ZGl1cyAmJiBtX2xhc3RDb2xvciA9PSBjb2xvciAmJiBtX2xhc3RJbnNldEJvdW5kcyA9PSBib3Vu
ZHMgJiYgc2hhZG93UmVjdCA9PSBtX2xhc3RTaGFkb3dSZWN0ICYmIHJhZGlpID09IG1fbGFzdFJh
ZGlpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogCkBAIC0xMTksNTAgKzEyMSw1NyBAQCBw
dWJsaWM6CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KIAorICAgIHN0YXRpYyBTY3JhdGNo
QnVmZmVyJiBzaW5nbGV0b24oKTsKKyAgICBzdGF0aWMgTG9jayYgbG9jaygpOworCitwcml2YXRl
OgogICAgIHZvaWQgc2NoZWR1bGVTY3JhdGNoQnVmZmVyUHVyZ2UoKQogICAgIHsKLSNpZiBBU1NF
UlRfRU5BQkxFRAotICAgICAgICBtX2J1ZmZlckluVXNlID0gZmFsc2U7Ci0jZW5kaWYKLSAgICAg
ICAgaWYgKG1fcHVyZ2VUaW1lci5pc0FjdGl2ZSgpKQotICAgICAgICAgICAgbV9wdXJnZVRpbWVy
LnN0b3AoKTsKLQorICAgICAgICBBU1NFUlQobG9jaygpLmlzSGVsZCgpKTsKICAgICAgICAgY29u
c3QgU2Vjb25kcyBzY3JhdGNoQnVmZmVyUHVyZ2VJbnRlcnZhbCB7IDJfcyB9OwogICAgICAgICBt
X3B1cmdlVGltZXIuc3RhcnRPbmVTaG90KHNjcmF0Y2hCdWZmZXJQdXJnZUludGVydmFsKTsKICAg
ICB9CiAKLSAgICBzdGF0aWMgU2NyYXRjaEJ1ZmZlciYgc2luZ2xldG9uKCk7CisgICAgdm9pZCBw
dXJnZVRpbWVyRmlyZWQoKQorICAgIHsKKyAgICAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsK
KyAgICAgICAgaWYgKGF1dG8gbG9ja2VyID0gdHJ5SG9sZExvY2sobG9jaygpKSkKKyAgICAgICAg
ICAgIGNsZWFyU2NyYXRjaEJ1ZmZlcigpOworICAgIH0KIAotcHJpdmF0ZToKICAgICB2b2lkIGNs
ZWFyU2NyYXRjaEJ1ZmZlcigpCiAgICAgeworICAgICAgICBBU1NFUlQobG9jaygpLmlzSGVsZCgp
KTsKICAgICAgICAgbV9pbWFnZUJ1ZmZlciA9IG51bGxwdHI7CiAgICAgICAgIG1fbGFzdFJhZGl1
cyA9IEZsb2F0U2l6ZSgpOwogICAgICAgICBtX2xhc3RMYXllclNpemUgPSBGbG9hdFNpemUoKTsK
ICAgICB9CiAKICAgICBSZWZQdHI8SW1hZ2VCdWZmZXI+IG1faW1hZ2VCdWZmZXI7Ci0gICAgVGlt
ZXIgbV9wdXJnZVRpbWVyOworICAgIFJ1bkxvb3A6OlRpbWVyPFNjcmF0Y2hCdWZmZXI+IG1fcHVy
Z2VUaW1lcjsKIAogICAgIEZsb2F0UmVjdCBtX2xhc3RJbnNldEJvdW5kczsKICAgICBGbG9hdFJl
Y3QgbV9sYXN0U2hhZG93UmVjdDsKICAgICBGbG9hdFJvdW5kZWRSZWN0OjpSYWRpaSBtX2xhc3RS
YWRpaTsKICAgICBDb2xvciBtX2xhc3RDb2xvcjsKICAgICBGbG9hdFNpemUgbV9sYXN0UmFkaXVz
OwotICAgIGJvb2wgbV9sYXN0V2FzSW5zZXQ7CisgICAgYm9vbCBtX2xhc3RXYXNJbnNldCB7IGZh
bHNlIH07CiAgICAgRmxvYXRTaXplIG1fbGFzdExheWVyU2l6ZTsKLQotI2lmIEFTU0VSVF9FTkFC
TEVECi0gICAgYm9vbCBtX2J1ZmZlckluVXNlOwotI2VuZGlmCiB9OwogCiBTY3JhdGNoQnVmZmVy
JiBTY3JhdGNoQnVmZmVyOjpzaW5nbGV0b24oKQogeworICAgIEFTU0VSVChsb2NrKCkuaXNIZWxk
KCkpOwogICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxTY3JhdGNoQnVmZmVyPiBzY3JhdGNoQnVm
ZmVyOwogICAgIHJldHVybiBzY3JhdGNoQnVmZmVyOwogfQogCitMb2NrJiBTY3JhdGNoQnVmZmVy
Ojpsb2NrKCkKK3sKKyAgICBzdGF0aWMgTG9jayBsb2NrOworICAgIHJldHVybiBsb2NrOworfQor
CiBzdGF0aWMgZmxvYXQgcmFkaXVzVG9MZWdhY3lSYWRpdXMoZmxvYXQgcmFkaXVzKQogewogICAg
IHJldHVybiByYWRpdXMgPiA4ID8gOCArIDQgKiBzcXJ0KChyYWRpdXMgLSA4KSAvIDIpIDogcmFk
aXVzOwpAQCAtNjgzLDI2ICs2OTIsMzIgQEAgdm9pZCBTaGFkb3dCbHVyOjpkcmF3SW5zZXRTaGFk
b3dXaXRob3V0VGlsaW5nKGNvbnN0IEFmZmluZVRyYW5zZm9ybSYsIGNvbnN0IEZsb2EKIAogdm9p
ZCBTaGFkb3dCbHVyOjpkcmF3UmVjdFNoYWRvd1dpdGhUaWxpbmcoY29uc3QgQWZmaW5lVHJhbnNm
b3JtJiB0cmFuc2Zvcm0sIGNvbnN0IEZsb2F0Um91bmRlZFJlY3QmIHNoYWRvd2VkUmVjdCwgY29u
c3QgSW50U2l6ZSYgdGVtcGxhdGVTaXplLCBjb25zdCBJbnRTaXplJiBlZGdlU2l6ZSwgY29uc3Qg
RHJhd0ltYWdlQ2FsbGJhY2smIGRyYXdJbWFnZSwgY29uc3QgRmlsbFJlY3RDYWxsYmFjayYgZmls
bFJlY3QsIGNvbnN0IExheWVySW1hZ2VQcm9wZXJ0aWVzJiBsYXllckltYWdlUHJvcGVydGllcykK
IHsKKyAgICBSZWZQdHI8SW1hZ2VCdWZmZXI+IGxheWVySW1hZ2VCdWZmZXI7CiAjaWYgVVNFKENH
KQotICAgIGF1dG8qIGxheWVySW1hZ2UgPSBTY3JhdGNoQnVmZmVyOjpzaW5nbGV0b24oKS5nZXRT
Y3JhdGNoQnVmZmVyKHRlbXBsYXRlU2l6ZSk7Ci0gICAgYXV0byByZWxlYXNlTGF5ZXJJbWFnZSA9
IG1ha2VTY29wZUV4aXQoW10gewotICAgICAgICBTY3JhdGNoQnVmZmVyOjpzaW5nbGV0b24oKS5z
Y2hlZHVsZVNjcmF0Y2hCdWZmZXJQdXJnZSgpOwotICAgIH0pOworICAgIGF1dG8gbG9ja2VyID0g
dHJ5SG9sZExvY2soU2NyYXRjaEJ1ZmZlcjo6bG9jaygpKTsKKyAgICBpZiAobG9ja2VyKSB7Cisg
ICAgICAgIGxheWVySW1hZ2VCdWZmZXIgPSBTY3JhdGNoQnVmZmVyOjpzaW5nbGV0b24oKS5nZXRT
Y3JhdGNoQnVmZmVyKHRlbXBsYXRlU2l6ZSk7CisgICAgICAgIGlmICghbGF5ZXJJbWFnZUJ1ZmZl
cikKKyAgICAgICAgICAgIHJldHVybjsKKyAgICB9CiAjZWxzZQogICAgIFVOVVNFRF9QQVJBTShs
YXllckltYWdlUHJvcGVydGllcyk7Ci0gICAgYXV0byBsYXllckltYWdlQnVmZmVyID0gSW1hZ2VC
dWZmZXI6OmNyZWF0ZSh0ZW1wbGF0ZVNpemUsIFJlbmRlcmluZ01vZGU6OlVuYWNjZWxlcmF0ZWQs
IDEpOwotICAgIGF1dG8qIGxheWVySW1hZ2UgPSBsYXllckltYWdlQnVmZmVyLmdldCgpOwogI2Vu
ZGlmCiAKLSAgICBpZiAoIWxheWVySW1hZ2UpCi0gICAgICAgIHJldHVybjsKKyAgICBpZiAoIWxh
eWVySW1hZ2VCdWZmZXIpIHsKKyAgICAgICAgbGF5ZXJJbWFnZUJ1ZmZlciA9IEltYWdlQnVmZmVy
OjpjcmVhdGUodGVtcGxhdGVTaXplLCBSZW5kZXJpbmdNb2RlOjpVbmFjY2VsZXJhdGVkLCAxKTsK
KyAgICAgICAgaWYgKCFsYXllckltYWdlQnVmZmVyKQorICAgICAgICAgICAgcmV0dXJuOworICAg
IH0KKyAgICBhdXRvKiBsYXllckltYWdlID0gbGF5ZXJJbWFnZUJ1ZmZlci5nZXQoKTsKIAogICAg
IEZsb2F0UmVjdCB0ZW1wbGF0ZVNoYWRvdyA9IEZsb2F0UmVjdChlZGdlU2l6ZS53aWR0aCgpLCBl
ZGdlU2l6ZS5oZWlnaHQoKSwgdGVtcGxhdGVTaXplLndpZHRoKCkgLSAyICogZWRnZVNpemUud2lk
dGgoKSwgdGVtcGxhdGVTaXplLmhlaWdodCgpIC0gMiAqIGVkZ2VTaXplLmhlaWdodCgpKTsKIAog
ICAgIGJvb2wgcmVkcmF3TmVlZGVkID0gdHJ1ZTsKICNpZiBVU0UoQ0cpCiAgICAgLy8gT25seSBy
ZWRyYXcgaW4gdGhlIHNjcmF0Y2ggYnVmZmVyIGlmIGl0cyBjYWNoZWQgY29udGVudHMgZG9uJ3Qg
bWF0Y2ggb3VyIG5lZWRzCi0gICAgcmVkcmF3TmVlZGVkID0gU2NyYXRjaEJ1ZmZlcjo6c2luZ2xl
dG9uKCkuc2V0Q2FjaGVkU2hhZG93VmFsdWVzKG1fYmx1clJhZGl1cywgbV9jb2xvciwgdGVtcGxh
dGVTaGFkb3csIHNoYWRvd2VkUmVjdC5yYWRpaSgpLCBsYXllckltYWdlUHJvcGVydGllcy5sYXll
clNpemUpOworICAgIGlmIChsb2NrZXIpCisgICAgICAgIHJlZHJhd05lZWRlZCA9IFNjcmF0Y2hC
dWZmZXI6OnNpbmdsZXRvbigpLnNldENhY2hlZFNoYWRvd1ZhbHVlcyhtX2JsdXJSYWRpdXMsIG1f
Y29sb3IsIHRlbXBsYXRlU2hhZG93LCBzaGFkb3dlZFJlY3QucmFkaWkoKSwgbGF5ZXJJbWFnZVBy
b3BlcnRpZXMubGF5ZXJTaXplKTsKICNlbmRpZgogCiAgICAgaWYgKHJlZHJhd05lZWRlZCkgewpA
QCAtNzM3LDE4ICs3NTIsMjIgQEAgdm9pZCBTaGFkb3dCbHVyOjpkcmF3UmVjdFNoYWRvd1dpdGhU
aWxpbmcoY29uc3QgQWZmaW5lVHJhbnNmb3JtJiB0cmFuc2Zvcm0sIGNvbnMKIAogdm9pZCBTaGFk
b3dCbHVyOjpkcmF3SW5zZXRTaGFkb3dXaXRoVGlsaW5nKGNvbnN0IEFmZmluZVRyYW5zZm9ybSYg
dHJhbnNmb3JtLCBjb25zdCBGbG9hdFJlY3QmIGZ1bGxSZWN0LCBjb25zdCBGbG9hdFJvdW5kZWRS
ZWN0JiBob2xlUmVjdCwgY29uc3QgSW50U2l6ZSYgdGVtcGxhdGVTaXplLCBjb25zdCBJbnRTaXpl
JiBlZGdlU2l6ZSwgY29uc3QgRHJhd0ltYWdlQ2FsbGJhY2smIGRyYXdJbWFnZSwgY29uc3QgRmls
bFJlY3RXaXRoSG9sZUNhbGxiYWNrJiBmaWxsUmVjdFdpdGhIb2xlKQogeworICAgIFJlZlB0cjxJ
bWFnZUJ1ZmZlcj4gbGF5ZXJJbWFnZUJ1ZmZlcjsKICNpZiBVU0UoQ0cpCi0gICAgYXV0byogbGF5
ZXJJbWFnZSA9IFNjcmF0Y2hCdWZmZXI6OnNpbmdsZXRvbigpLmdldFNjcmF0Y2hCdWZmZXIodGVt
cGxhdGVTaXplKTsKLSAgICBhdXRvIHJlbGVhc2VMYXllckltYWdlID0gbWFrZVNjb3BlRXhpdChb
XSB7Ci0gICAgICAgIFNjcmF0Y2hCdWZmZXI6OnNpbmdsZXRvbigpLnNjaGVkdWxlU2NyYXRjaEJ1
ZmZlclB1cmdlKCk7Ci0gICAgfSk7Ci0jZWxzZQotICAgIGF1dG8gbGF5ZXJJbWFnZUJ1ZmZlciA9
IEltYWdlQnVmZmVyOjpjcmVhdGUodGVtcGxhdGVTaXplLCBSZW5kZXJpbmdNb2RlOjpVbmFjY2Vs
ZXJhdGVkLCAxKTsKLSAgICBhdXRvKiBsYXllckltYWdlID0gbGF5ZXJJbWFnZUJ1ZmZlci5nZXQo
KTsKKyAgICBhdXRvIGxvY2tlciA9IHRyeUhvbGRMb2NrKFNjcmF0Y2hCdWZmZXI6OmxvY2soKSk7
CisgICAgaWYgKGxvY2tlcikgeworICAgICAgICBsYXllckltYWdlQnVmZmVyID0gU2NyYXRjaEJ1
ZmZlcjo6c2luZ2xldG9uKCkuZ2V0U2NyYXRjaEJ1ZmZlcih0ZW1wbGF0ZVNpemUpOworICAgICAg
ICBpZiAoIWxheWVySW1hZ2VCdWZmZXIpCisgICAgICAgICAgICByZXR1cm47CisgICAgfQogI2Vu
ZGlmCiAKLSAgICBpZiAoIWxheWVySW1hZ2UpCi0gICAgICAgIHJldHVybjsKKyAgICBpZiAoIWxh
eWVySW1hZ2VCdWZmZXIpIHsKKyAgICAgICAgbGF5ZXJJbWFnZUJ1ZmZlciA9IEltYWdlQnVmZmVy
OjpjcmVhdGUodGVtcGxhdGVTaXplLCBSZW5kZXJpbmdNb2RlOjpVbmFjY2VsZXJhdGVkLCAxKTsK
KyAgICAgICAgaWYgKCFsYXllckltYWdlQnVmZmVyKQorICAgICAgICAgICAgcmV0dXJuOworICAg
IH0KKyAgICBhdXRvKiBsYXllckltYWdlID0gbGF5ZXJJbWFnZUJ1ZmZlci5nZXQoKTsKIAogICAg
IC8vIERyYXcgdGhlIHJlY3RhbmdsZSB3aXRoIGhvbGUuCiAgICAgRmxvYXRSZWN0IHRlbXBsYXRl
Qm91bmRzKDAsIDAsIHRlbXBsYXRlU2l6ZS53aWR0aCgpLCB0ZW1wbGF0ZVNpemUuaGVpZ2h0KCkp
OwpAQCAtNzU3LDcgKzc3Niw4IEBAIHZvaWQgU2hhZG93Qmx1cjo6ZHJhd0luc2V0U2hhZG93V2l0
aFRpbGluZyhjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIHRyYW5zZm9ybSwgY29uCiAgICAgYm9vbCBy
ZWRyYXdOZWVkZWQgPSB0cnVlOwogI2lmIFVTRShDRykKICAgICAvLyBPbmx5IHJlZHJhdyBpbiB0
aGUgc2NyYXRjaCBidWZmZXIgaWYgaXRzIGNhY2hlZCBjb250ZW50cyBkb24ndCBtYXRjaCBvdXIg
bmVlZHMKLSAgICByZWRyYXdOZWVkZWQgPSBTY3JhdGNoQnVmZmVyOjpzaW5nbGV0b24oKS5zZXRD
YWNoZWRJbnNldFNoYWRvd1ZhbHVlcyhtX2JsdXJSYWRpdXMsIG1fY29sb3IsIHRlbXBsYXRlQm91
bmRzLCB0ZW1wbGF0ZUhvbGUsIGhvbGVSZWN0LnJhZGlpKCkpOworICAgIGlmIChsb2NrZXIpCisg
ICAgICAgIHJlZHJhd05lZWRlZCA9IFNjcmF0Y2hCdWZmZXI6OnNpbmdsZXRvbigpLnNldENhY2hl
ZEluc2V0U2hhZG93VmFsdWVzKG1fYmx1clJhZGl1cywgbV9jb2xvciwgdGVtcGxhdGVCb3VuZHMs
IHRlbXBsYXRlSG9sZSwgaG9sZVJlY3QucmFkaWkoKSk7CiAjZW5kaWYKIAogICAgIGlmIChyZWRy
YXdOZWVkZWQpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NnL0ltYWdlQnVmZmVyVXRpbGl0aWVzQ0cuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJVdGlsaXRpZXNDRy5jcHAKaW5kZXggYjM3N2YwNDgzMmM5
N2E1NjJjYzZkYTQyYTY4MDM3OWQxMTg2YTQzZi4uZjE0NmYzNTczZjFmZWY5NWQ3OTM3MGU2ZWVm
NWM2ZmIyYTc5Y2E5YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2cvSW1hZ2VCdWZmZXJVdGlsaXRpZXNDRy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJVdGlsaXRpZXNDRy5jcHAKQEAgLTY5LDEyICs2
OSwxNiBAQCBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19CRUdJTgogI2lmIFBMQVRGT1JN
KE1BQykKICAgICByZXR1cm4gVVRJRnJvbU1JTUVUeXBlKG1pbWVUeXBlKS5jcmVhdGVDRlN0cmlu
ZygpOwogI2Vsc2UKLSAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOyAvLyBJdCBpcyB1bmNsZWFy
IGlmIENGU1RSIGlzIHRocmVhZHNhZmUuCi0KICAgICAvLyBGSVhNRTogQWRkIFdpbmRvd3Mgc3Vw
cG9ydCBmb3IgYWxsIHRoZSBzdXBwb3J0ZWQgVVRJcyB3aGVuIGEgd2F5IHRvIGNvbnZlcnQgZnJv
bSBNSU1FVHlwZSB0byBVVEkgcmVsaWFibHkgaXMgZm91bmQuCiAgICAgLy8gRm9yIG5vdywgb25s
eSBzdXBwb3J0IFBORywgSlBFRywgYW5kIEdJRi4gU2VlIDxyZGFyOi8vcHJvYmxlbS82MDk1Mjg2
Pi4KLSAgICBzdGF0aWMgY29uc3QgQ0ZTdHJpbmdSZWYga1VUVHlwZVBORyA9IENGU1RSKCJwdWJs
aWMucG5nIik7Ci0gICAgc3RhdGljIGNvbnN0IENGU3RyaW5nUmVmIGtVVFR5cGVHSUYgPSBDRlNU
UigiY29tLmNvbXB1c2VydmUuZ2lmIik7CisgICAgc3RhdGljIENGU3RyaW5nUmVmIGtVVFR5cGVQ
Tkc7CisgICAgc3RhdGljIENGU3RyaW5nUmVmIGtVVFR5cGVHSUY7CisKKyAgICBzdGF0aWMgc3Rk
OjpvbmNlX2ZsYWcgb25jZUtleTsKKyAgICBzdGQ6OmNhbGxfb25jZShvbmNlS2V5LCBbJl0gewor
ICAgICAgICBrVVRUeXBlUE5HID0gQ0ZTVFIoInB1YmxpYy5wbmciKTsKKyAgICAgICAga1VUVHlw
ZUdJRiA9IENGU1RSKCJjb20uY29tcHVzZXJ2ZS5naWYiKTsKKyAgICB9KTsKIAogICAgIGlmIChl
cXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShtaW1lVHlwZSwgImltYWdlL3BuZyIpKQogICAg
ICAgICByZXR1cm4ga1VUVHlwZVBORzsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NnL1N1YmltYWdlQ2FjaGVXaXRoVGltZXIuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvU3ViaW1hZ2VDYWNoZVdpdGhUaW1lci5jcHAKaW5kZXgg
YjA3MDI2ODU2ZDUzZjFiNjNhYTg4ODVmYjFlNDExMzMwMzdjZmVjMy4uZjNjNWFmN2E2ZGU1OWVl
YjRjYzQxZmY2OWUyM2FhMDUxZWRiZTVhOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2cvU3ViaW1hZ2VDYWNoZVdpdGhUaW1lci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvU3ViaW1hZ2VDYWNoZVdpdGhUaW1lci5jcHAK
QEAgLTgzLDEyICs4MywxMyBAQCBzdHJ1Y3QgU3ViaW1hZ2VDYWNoZUFkZGVyIHsKIH07CiAKIFN1
YmltYWdlQ2FjaGVXaXRoVGltZXI6OlN1YmltYWdlQ2FjaGVXaXRoVGltZXIoKQotICAgIDogbV90
aW1lcigqdGhpcywgJlN1YmltYWdlQ2FjaGVXaXRoVGltZXI6OnBydW5lQ2FjaGVUaW1lckZpcmVk
KQorICAgIDogbV90aW1lcihSdW5Mb29wOjptYWluKCksIHRoaXMsICZTdWJpbWFnZUNhY2hlV2l0
aFRpbWVyOjpwcnVuZUNhY2hlVGltZXJGaXJlZCkKIHsKIH0KIAogdm9pZCBTdWJpbWFnZUNhY2hl
V2l0aFRpbWVyOjpwcnVuZUNhY2hlVGltZXJGaXJlZCgpCiB7CisgICAgYXV0byBsb2NrZXIgPSBo
b2xkTG9jayhtX2xvY2spOwogICAgIHBydW5lKCk7CiAgICAgaWYgKG1fY2FjaGUuaXNFbXB0eSgp
KSB7CiAgICAgICAgIEFTU0VSVChtX2ltYWdlQ291bnRzLmlzRW1wdHkoKSk7CkBAIC0xMTUsNiAr
MTE2LDcgQEAgdm9pZCBTdWJpbWFnZUNhY2hlV2l0aFRpbWVyOjpwcnVuZSgpCiAKIFJldGFpblB0
cjxDR0ltYWdlUmVmPiBTdWJpbWFnZUNhY2hlV2l0aFRpbWVyOjpzdWJpbWFnZShDR0ltYWdlUmVm
IGltYWdlLCBjb25zdCBGbG9hdFJlY3QmIHJlY3QpCiB7CisgICAgYXV0byBsb2NrZXIgPSBob2xk
TG9jayhtX2xvY2spOwogICAgIGlmICghbV90aW1lci5pc0FjdGl2ZSgpKQogICAgICAgICBtX3Rp
bWVyLnN0YXJ0UmVwZWF0aW5nKHN1YmltYWdlQ2FjaGVQcnVuZURlbGF5KTsKIApAQCAtMTM1LDYg
KzEzNyw3IEBAIFJldGFpblB0cjxDR0ltYWdlUmVmPiBTdWJpbWFnZUNhY2hlV2l0aFRpbWVyOjpz
dWJpbWFnZShDR0ltYWdlUmVmIGltYWdlLCBjb25zdCBGCiAKIHZvaWQgU3ViaW1hZ2VDYWNoZVdp
dGhUaW1lcjo6Y2xlYXJJbWFnZUFuZFN1YmltYWdlcyhDR0ltYWdlUmVmIGltYWdlKQogeworICAg
IGF1dG8gbG9ja2VyID0gaG9sZExvY2sobV9sb2NrKTsKICAgICBpZiAobV9pbWFnZUNvdW50cy5j
b250YWlucyhpbWFnZSkpIHsKICAgICAgICAgVmVjdG9yPFN1YmltYWdlQ2FjaGVFbnRyeT4gdG9C
ZVJlbW92ZWQ7CiAgICAgICAgIGZvciAoY29uc3QgYXV0byYgZW50cnkgOiBtX2NhY2hlKSB7CkBA
IC0xNTEsMTQgKzE1NCwxNyBAQCB2b2lkIFN1YmltYWdlQ2FjaGVXaXRoVGltZXI6OmNsZWFySW1h
Z2VBbmRTdWJpbWFnZXMoQ0dJbWFnZVJlZiBpbWFnZSkKIAogdm9pZCBTdWJpbWFnZUNhY2hlV2l0
aFRpbWVyOjpjbGVhckFsbCgpCiB7CisgICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhtX2xvY2sp
OwogICAgIG1faW1hZ2VDb3VudHMuY2xlYXIoKTsKICAgICBtX2NhY2hlLmNsZWFyKCk7CiB9CiAK
IFN1YmltYWdlQ2FjaGVXaXRoVGltZXImIFN1YmltYWdlQ2FjaGVXaXRoVGltZXI6OnN1YmltYWdl
Q2FjaGUoKQogewotICAgIGlmICghc19jYWNoZSkKKyAgICBzdGF0aWMgc3RkOjpvbmNlX2ZsYWcg
b25jZUtleTsKKyAgICBzdGQ6OmNhbGxfb25jZShvbmNlS2V5LCBbJl0gewogICAgICAgICBzX2Nh
Y2hlID0gbmV3IFN1YmltYWdlQ2FjaGVXaXRoVGltZXI7CisgICAgfSk7CiAgICAgcmV0dXJuICpz
X2NhY2hlOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jZy9TdWJpbWFnZUNhY2hlV2l0aFRpbWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jZy9TdWJpbWFnZUNhY2hlV2l0aFRpbWVyLmgKaW5kZXggODI3NGJjMjQwZWQ4ZmE1
ZWIxMjQwMDBjMmIyZDhhOTI1NzhiOTI5Yi4uNWJmMDVkNGUxNDBlZTYyYjMzMjFlNGRiZWY1MWRh
YzFkMWIzNGQ5OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2cvU3ViaW1hZ2VDYWNoZVdpdGhUaW1lci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NnL1N1YmltYWdlQ2FjaGVXaXRoVGltZXIuaApAQCAtMzIsNyArMzIsOSBAQAog
I2luY2x1ZGUgPHd0Zi9IYXNoQ291bnRlZFNldC5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+
CiAjaW5jbHVkZSA8d3RmL0hhc2hUcmFpdHMuaD4KKyNpbmNsdWRlIDx3dGYvTG9jay5oPgogI2lu
Y2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KKyNpbmNsdWRlIDx3dGYvUnVuTG9vcC5oPgogCiAjZGVm
aW5lIENBQ0hFX1NVQklNQUdFUyAxCiAKQEAgLTk1LDkgKzk3LDEwIEBAIHByaXZhdGU6CiAgICAg
dm9pZCBwcnVuZSgpOwogICAgIHZvaWQgY2xlYXJBbGwoKTsKIAorICAgIExvY2sgbV9sb2NrOwog
ICAgIEhhc2hDb3VudGVkU2V0PENHSW1hZ2VSZWY+IG1faW1hZ2VDb3VudHM7CiAgICAgU3ViaW1h
Z2VDYWNoZUhhc2hTZXQgbV9jYWNoZTsKLSAgICBUaW1lciBtX3RpbWVyOworICAgIFJ1bkxvb3A6
OlRpbWVyPFN1YmltYWdlQ2FjaGVXaXRoVGltZXI+IG1fdGltZXI7CiAKICAgICBzdGF0aWMgU3Vi
aW1hZ2VDYWNoZVdpdGhUaW1lciYgc3ViaW1hZ2VDYWNoZSgpOwogICAgIHN0YXRpYyBib29sIHN1
YmltYWdlQ2FjaGVFeGlzdHMoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvbWFjL1VUSVV0aWxpdGllcy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvbWFjL1VUSVV0aWxpdGllcy5tbQppbmRleCA3YTdhMzEwN2JlNzljNDgyNGNlZmUyZTBh
YzNlMzU0NjdjOWVhMTY4Li43MGI0MzkzYzYzNjM3MTk2Zjk4YzA2MzJmYWI2MTE1ZDc4YTgxYmNj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9VVElVdGls
aXRpZXMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvVVRJVXRp
bGl0aWVzLm1tCkBAIC0yNiw2ICsyNiw3IEBACiAjaW1wb3J0ICJjb25maWcuaCIKICNpbXBvcnQg
IlVUSVV0aWxpdGllcy5oIgogCisjaW1wb3J0IDx3dGYvTG9jay5oPgogI2ltcG9ydCA8d3RmL01h
aW5UaHJlYWQuaD4KICNpbXBvcnQgPHd0Zi9UaW55TFJVQ2FjaGUuaD4KICNpbXBvcnQgPHd0Zi90
ZXh0L1N0cmluZ0hhc2guaD4KQEAgLTg0LDU3ICs4NSw1MiBAQCBBTExPV19ERVBSRUNBVEVEX0RF
Q0xBUkFUSU9OU19FTkQKICAgICByZXR1cm4gZW1wdHlTdHJpbmcoKTsKIH0KIAotc3RhdGljIFN0
cmluZyBVVElGcm9tVW5rbm93bk1JTUVUeXBlKGNvbnN0IFN0cmluZyYgbWltZVR5cGUpCitzdGF0
aWMgQ0ZTdHJpbmdSZWYgVVRJRnJvbVVua25vd25NSU1FVHlwZShjb25zdCBTdHJpbmcmIG1pbWVU
eXBlKQogewogICAgIHN0YXRpYyBjb25zdCBhdXRvIG1hcCA9IG1ha2VOZXZlckRlc3Ryb3llZChb
XSB7Ci0gICAgICAgIHN0cnVjdCBUeXBlRXh0ZW5zaW9uUGFpciB7Ci0gICAgICAgICAgICBBU0NJ
SUxpdGVyYWwgdHlwZTsKLSAgICAgICAgICAgIEFTQ0lJTGl0ZXJhbCB1dGk7Ci0gICAgICAgIH07
Ci0KLSAgICAgICAgc3RhdGljIGNvbnN0IFR5cGVFeHRlbnNpb25QYWlyIHBhaXJzW10gPSB7Ci0g
ICAgICAgICAgICB7ICJtb2RlbC92bmQudXNkeit6aXAiX3MsICJjb20ucGl4YXIudW5pdmVyc2Fs
LXNjZW5lLWRlc2NyaXB0aW9uLW1vYmlsZSJfcyB9LAotICAgICAgICAgICAgeyAibW9kZWwvdXNk
Il9zLCAiY29tLnBpeGFyLnVuaXZlcnNhbC1zY2VuZS1kZXNjcmlwdGlvbi1tb2JpbGUiX3MgfSwK
LSAgICAgICAgICAgIHsgIm1vZGVsL3ZuZC5waXhhci51c2QiX3MsICJjb20ucGl4YXIudW5pdmVy
c2FsLXNjZW5lLWRlc2NyaXB0aW9uLW1vYmlsZSJfcyB9LAotICAgICAgICAgICAgeyAibW9kZWwv
dm5kLnJlYWxpdHkiX3MsICJjb20uYXBwbGUucmVhbGl0eSJfcyB9Ci0gICAgICAgIH07Ci0KLSAg
ICAgICAgSGFzaE1hcDxTdHJpbmcsIFN0cmluZywgQVNDSUlDYXNlSW5zZW5zaXRpdmVIYXNoPiBt
YXA7Ci0gICAgICAgIGZvciAoYXV0byYgcGFpciA6IHBhaXJzKQotICAgICAgICAgICAgbWFwLmFk
ZChwYWlyLnR5cGUsIHBhaXIudXRpKTsKKyAgICAgICAgSGFzaE1hcDxTdHJpbmcsIENGU3RyaW5n
UmVmLCBBU0NJSUNhc2VJbnNlbnNpdGl2ZUhhc2g+IG1hcDsKKyAgICAgICAgYXV0byBwaXhhck1J
TUVUeXBlID0gQ0ZTVFIoImNvbS5waXhhci51bml2ZXJzYWwtc2NlbmUtZGVzY3JpcHRpb24tbW9i
aWxlIik7CisgICAgICAgIG1hcC5hZGQoIm1vZGVsL3ZuZC51c2R6K3ppcCJfcywgcGl4YXJNSU1F
VHlwZSk7CisgICAgICAgIG1hcC5hZGQoIm1vZGVsL3VzZCJfcywgcGl4YXJNSU1FVHlwZSk7Cisg
ICAgICAgIG1hcC5hZGQoIm1vZGVsL3ZuZC5waXhhci51c2QiX3MsIHBpeGFyTUlNRVR5cGUpOwor
ICAgICAgICBtYXAuYWRkKCJtb2RlbC92bmQudXNkeit6aXAiX3MsIENGU1RSKCJjb20uYXBwbGUu
cmVhbGl0eSIpKTsKICAgICAgICAgcmV0dXJuIG1hcDsKICAgICB9KCkpOwogCisgICAgc3RhdGlj
IGNvbnN0IENGU3RyaW5nUmVmIGVtcHR5Q0ZTdHJpbmcgPSBDRlNUUigiIik7CiAgICAgYXV0byBt
YXBFbnRyeSA9IG1hcC5nZXQoKS5maW5kKG1pbWVUeXBlKTsKICAgICBpZiAobWFwRW50cnkgPT0g
bWFwLmdldCgpLmVuZCgpKQotICAgICAgICByZXR1cm4gZW1wdHlTdHJpbmcoKTsKKyAgICAgICAg
cmV0dXJuIGVtcHR5Q0ZTdHJpbmc7CiAKICAgICByZXR1cm4gbWFwRW50cnktPnZhbHVlOwogfQog
Ci1zdHJ1Y3QgVVRJRnJvbU1JTUVUeXBlQ2FjaGVQb2xpY3kgOiBUaW55TFJVQ2FjaGVQb2xpY3k8
U3RyaW5nLCBTdHJpbmc+IHsKK3N0cnVjdCBVVElGcm9tTUlNRVR5cGVDYWNoZVBvbGljeSA6IFRp
bnlMUlVDYWNoZVBvbGljeTxTdHJpbmcsIFJldGFpblB0cjxDRlN0cmluZ1JlZj4+IHsKIHB1Ymxp
YzoKLSAgICBzdGF0aWMgU3RyaW5nIGNyZWF0ZVZhbHVlRm9yS2V5KGNvbnN0IFN0cmluZyYgbWlt
ZVR5cGUpCisgICAgc3RhdGljIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gY3JlYXRlVmFsdWVGb3JL
ZXkoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSkKICAgICB7CiBBTExPV19ERVBSRUNBVEVEX0RFQ0xB
UkFUSU9OU19CRUdJTgogICAgICAgICBhdXRvIHR5cGUgPSBhZG9wdENGKFVUVHlwZUNyZWF0ZVBy
ZWZlcnJlZElkZW50aWZpZXJGb3JUYWcoa1VUVGFnQ2xhc3NNSU1FVHlwZSwgbWltZVR5cGUuY3Jl
YXRlQ0ZTdHJpbmcoKS5nZXQoKSwgMCkpOwogQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNf
RU5ECiAgICAgICAgIGlmICh0eXBlKQotICAgICAgICAgICAgcmV0dXJuIHR5cGUuZ2V0KCk7Cisg
ICAgICAgICAgICByZXR1cm4gdHlwZTsKICAgICAgICAgcmV0dXJuIFVUSUZyb21Vbmtub3duTUlN
RVR5cGUobWltZVR5cGUpOwogICAgIH0KKworICAgIHN0YXRpYyBTdHJpbmcgY3JlYXRlS2V5Rm9y
U3RvcmFnZShjb25zdCBTdHJpbmcmIGtleSkgeyByZXR1cm4ga2V5Lmlzb2xhdGVkQ29weSgpOyB9
CiB9OwogCi1zdGF0aWMgVGlueUxSVUNhY2hlPFN0cmluZywgU3RyaW5nLCAxNiwgVVRJRnJvbU1J
TUVUeXBlQ2FjaGVQb2xpY3k+JiBjYWNoZVVUSUZyb21NaW1lVHlwZSgpCitzdGF0aWMgVGlueUxS
VUNhY2hlPFN0cmluZywgUmV0YWluUHRyPENGU3RyaW5nUmVmPiwgMTYsIFVUSUZyb21NSU1FVHlw
ZUNhY2hlUG9saWN5PiYgY2FjaGVVVElGcm9tTWltZVR5cGUoKQogewotICAgIHN0YXRpYyBOZXZl
ckRlc3Ryb3llZDxUaW55TFJVQ2FjaGU8U3RyaW5nLCBTdHJpbmcsIDE2LCBVVElGcm9tTUlNRVR5
cGVDYWNoZVBvbGljeT4+IGNhY2hlOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxUaW55TFJV
Q2FjaGU8U3RyaW5nLCBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+LCAxNiwgVVRJRnJvbU1JTUVUeXBl
Q2FjaGVQb2xpY3k+PiBjYWNoZTsKICAgICByZXR1cm4gY2FjaGU7CiB9CiAKIFN0cmluZyBVVElG
cm9tTUlNRVR5cGUoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSkKIHsKLSAgICBBU1NFUlQoaXNNYWlu
VGhyZWFkKCkpOwotICAgIHJldHVybiBjYWNoZVVUSUZyb21NaW1lVHlwZSgpLmdldChtaW1lVHlw
ZSk7CisgICAgc3RhdGljIExvY2sgbG9jazsKKyAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKGxv
Y2spOworICAgIHJldHVybiBjYWNoZVVUSUZyb21NaW1lVHlwZSgpLmdldChtaW1lVHlwZSkuZ2V0
KCk7CiB9CiAKIGJvb2wgaXNEZWNsYXJlZFVUSShjb25zdCBTdHJpbmcmIFVUSSkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvY2YvSHlwaGVuYXRpb25DRi5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L2NmL0h5cGhlbmF0aW9uQ0YuY3BwCmluZGV4IDNk
MDJmMjhmNjg1ZDQzNzg0ZDM5NDY5NWZjYmUyNGY5ZTc2MjkxOGEuLjY2Njk2ZTRiNzQwMzU4YzI1
ZjIyY2JiYWVkYjAxODVlNGFlNGY4M2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL3RleHQvY2YvSHlwaGVuYXRpb25DRi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vdGV4dC9jZi9IeXBoZW5hdGlvbkNGLmNwcApAQCAtNjMsNiArNjMsOCBAQCBwdWJsaWM6CiAK
ICAgICAgICAgcmV0dXJuIENGU3RyaW5nSXNIeXBoZW5hdGlvbkF2YWlsYWJsZUZvckxvY2FsZShs
b2NhbGUuZ2V0KCkpID8gbG9jYWxlIDogbnVsbHB0cjsKICAgICB9CisKKyAgICBzdGF0aWMgQXRv
bVN0cmluZyBjcmVhdGVLZXlGb3JTdG9yYWdlKGNvbnN0IEF0b21TdHJpbmcmIGtleSkgeyByZXR1
cm4ga2V5OyB9CiB9OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90
ZXh0L2h5cGhlbi9IeXBoZW5hdGlvbkxpYkh5cGhlbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS90ZXh0L2h5cGhlbi9IeXBoZW5hdGlvbkxpYkh5cGhlbi5jcHAKaW5kZXggZjMzNTlkODA3
MDIyZjU0ODljNjhmOWFjZjgxNmE2NzA0MmE1M2Q2Mi4uN2Y3MzMwMWRhMDAzMTA3ZTkzOWRmYjg2
YjM2ODkzNTRjOWQ5NDM1MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4
dC9oeXBoZW4vSHlwaGVuYXRpb25MaWJIeXBoZW4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL3RleHQvaHlwaGVuL0h5cGhlbmF0aW9uTGliSHlwaGVuLmNwcApAQCAtMjQxLDYgKzI0
MSw4IEBAIHB1YmxpYzoKICAgICB7CiAgICAgICAgIHJldHVybiBXZWJDb3JlOjpIeXBoZW5hdGlv
bkRpY3Rpb25hcnk6OmNyZWF0ZShGaWxlU3lzdGVtOjpmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24o
ZGljdGlvbmFyeVBhdGguc3RyaW5nKCkpKTsKICAgICB9CisKKyAgICBzdGF0aWMgQXRvbVN0cmlu
ZyBjcmVhdGVLZXlGb3JTdG9yYWdlKGNvbnN0IEF0b21TdHJpbmcmIGtleSkgeyByZXR1cm4ga2V5
OyB9CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXVEYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
R1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcCBiL1NvdXJjZS9XZWJLaXQv
R1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcAppbmRleCA0MWFlMGExMzE0
OGFhNmE2Y2M0YmJiODZiODliYmFlNjY0MDFhMTYwLi4xNGMyNjVkZDlkZTY1MjU2MGQwNzE3YmM3
Y2ZmOTA3ZDcwM2ZmY2FiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BV
Q29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNz
L0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwCkBAIC0yMDIsOCArMjAyLDEyIEBAIHZvaWQg
R1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6ZGlkQ2xvc2UoSVBDOjpDb25uZWN0aW9uJiBjb25u
ZWN0aW9uKQogICAgIH0KICNlbmRpZgogCisgICAgLy8gUmVtb3RlUmVuZGVyaW5nQmFja2VuZCBv
YmplY3RzIHJlZiB0aGVpciBHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzIHNvIHdlIG5lZWQgdG8g
bWFrZSBzdXJlCisgICAgLy8gd2UgY2xlYXIgR1BVQ29ubmVjdGlvblRvV2ViUHJvY2VzcyBoZXJl
IHRvIGJyZWFrIHRoZSByZWZlcmVuY2UgY3ljbGUuCisgICAgbV9yZW1vdGVSZW5kZXJpbmdCYWNr
ZW5kTWFwLmNsZWFyKCk7CisKICAgICBncHVQcm9jZXNzKCkuY29ubmVjdGlvblRvV2ViUHJvY2Vz
c0Nsb3NlZChjb25uZWN0aW9uKTsKLSAgICBncHVQcm9jZXNzKCkucmVtb3ZlR1BVQ29ubmVjdGlv
blRvV2ViUHJvY2VzcygqdGhpcyk7CisgICAgZ3B1UHJvY2VzcygpLnJlbW92ZUdQVUNvbm5lY3Rp
b25Ub1dlYlByb2Nlc3MoKnRoaXMpOyAvLyBNYXkgZGVzdHJveSB8dGhpc3wuCiB9CiAKIExvZ2dl
ciYgR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6bG9nZ2VyKCkKQEAgLTI5Miw3ICsyOTYsNyBA
QCBSZW1vdGVBdWRpb1Nlc3Npb25Qcm94eSYgR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6YXVk
aW9TZXNzaW9uUHJveHkoKQogdm9pZCBHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpjcmVhdGVS
ZW5kZXJpbmdCYWNrZW5kKFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRDcmVhdGlvblBhcmFtZXRlcnMm
JiBwYXJhbWV0ZXJzKQogewogICAgIGF1dG8gYWRkUmVzdWx0ID0gbV9yZW1vdGVSZW5kZXJpbmdC
YWNrZW5kTWFwLmVuc3VyZShwYXJhbWV0ZXJzLmlkZW50aWZpZXIsIFsmXSgpIHsKLSAgICAgICAg
cmV0dXJuIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OmNyZWF0ZSgqdGhpcywgV1RGTW92ZShwYXJh
bWV0ZXJzKSk7CisgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPFJlbW90ZVJlbmRlcmluZ0JhY2tl
bmRXcmFwcGVyPihSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpjcmVhdGUoKnRoaXMsIFdURk1vdmUo
cGFyYW1ldGVycykpKTsKICAgICB9KTsKICAgICBBU1NFUlRfVU5VU0VEKGFkZFJlc3VsdCwgYWRk
UmVzdWx0LmlzTmV3RW50cnkpOwogfQpAQCAtMzAzLDYgKzMwNywxNiBAQCB2b2lkIEdQVUNvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3M6OnJlbGVhc2VSZW5kZXJpbmdCYWNrZW5kKFJlbmRlcmluZ0JhY2tl
bmRJZGVudGlmaQogICAgIEFTU0VSVF9VTlVTRUQoZm91bmQsIGZvdW5kKTsKIH0KIAorR1BVQ29u
bmVjdGlvblRvV2ViUHJvY2Vzczo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZFdyYXBwZXI6OlJlbW90
ZVJlbmRlcmluZ0JhY2tlbmRXcmFwcGVyKFJlZjxSZW1vdGVSZW5kZXJpbmdCYWNrZW5kPiYmIHJl
bW90ZVJlbmRlcmluZ0JhY2tlbmQpCisgICAgOiBtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmQoV1RG
TW92ZShyZW1vdGVSZW5kZXJpbmdCYWNrZW5kKSkKK3sKK30KKworR1BVQ29ubmVjdGlvblRvV2Vi
UHJvY2Vzczo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZFdyYXBwZXI6On5SZW1vdGVSZW5kZXJpbmdC
YWNrZW5kV3JhcHBlcigpCit7CisgICAgbV9yZW1vdGVSZW5kZXJpbmdCYWNrZW5kLT5kaXNjb25u
ZWN0KCk7Cit9CisKICNpZiBFTkFCTEUoV0VCR0wpCiB2b2lkIEdQVUNvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3M6OmNyZWF0ZUdyYXBoaWNzQ29udGV4dEdMKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdM
QXR0cmlidXRlcyBhdHRyaWJ1dGVzLCBHcmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIgZ3JhcGhp
Y3NDb250ZXh0R0xJZGVudGlmaWVyKQogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQ
cm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJv
Y2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgKaW5kZXggMWY3ODU1NWUyYjczOTllNzIw
YjU0ZDljZmFlY2MzMzk4OTZhNzJhYy4uN2M4ZDJhNDBiMDMyMzc1YzYxMGVmY2UyMjY1ZDE4YTY0
MjI1MzI1NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQVUNvbm5lY3Rp
b25Ub1dlYlByb2Nlc3MuaAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BVQ29ubmVj
dGlvblRvV2ViUHJvY2Vzcy5oCkBAIC0zOCw3ICszOCw3IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9Q
cm9jZXNzSWRlbnRpZmllci5oPgogI2luY2x1ZGUgPHBhbC9TZXNzaW9uSUQuaD4KICNpbmNsdWRl
IDx3dGYvTG9nZ2VyLmg+Ci0jaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KKyNpbmNsdWRlIDx3
dGYvVGhyZWFkU2FmZVJlZkNvdW50ZWQuaD4KIAogI2lmIEVOQUJMRShXRUJHTCkKICNpbmNsdWRl
ICJHcmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIuaCIKQEAgLTY4LDcgKzY4LDcgQEAgc3RydWN0
IFJlbW90ZUF1ZGlvU2Vzc2lvbkNvbmZpZ3VyYXRpb247CiBzdHJ1Y3QgUmVtb3RlUmVuZGVyaW5n
QmFja2VuZENyZWF0aW9uUGFyYW1ldGVyczsKIAogY2xhc3MgR1BVQ29ubmVjdGlvblRvV2ViUHJv
Y2VzcwotICAgIDogcHVibGljIFJlZkNvdW50ZWQ8R1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcz4K
KyAgICA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxHUFVDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzLCBXVEY6OkRlc3RydWN0aW9uVGhyZWFkOjpNYWluPgogICAgICwgcHVibGljIFdlYkNvcmU6
Ok5vd1BsYXlpbmdNYW5hZ2VyOjpDbGllbnQKICAgICAsIElQQzo6Q29ubmVjdGlvbjo6Q2xpZW50
IHsKIHB1YmxpYzoKQEAgLTE5Miw3ICsxOTIsMTcgQEAgcHJpdmF0ZToKICAgICBib29sIG1fYWxs
b3dzRGlzcGxheUNhcHR1cmUgeyBmYWxzZSB9OwogI2VuZGlmCiAKLSAgICB1c2luZyBSZW1vdGVS
ZW5kZXJpbmdCYWNrZW5kTWFwID0gSGFzaE1hcDxSZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllciwg
c3RkOjp1bmlxdWVfcHRyPFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ+PjsKKyAgICBjbGFzcyBSZW1v
dGVSZW5kZXJpbmdCYWNrZW5kV3JhcHBlciB7CisgICAgICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NB
VEVEOworICAgIHB1YmxpYzoKKyAgICAgICAgUmVtb3RlUmVuZGVyaW5nQmFja2VuZFdyYXBwZXIo
UmVmPFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ+JiYpOworICAgICAgICB+UmVtb3RlUmVuZGVyaW5n
QmFja2VuZFdyYXBwZXIoKTsKKworICAgIHByaXZhdGU6CisgICAgICAgIFJlZjxSZW1vdGVSZW5k
ZXJpbmdCYWNrZW5kPiBtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmQ7CisgICAgfTsKKworICAgIHVz
aW5nIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRNYXAgPSBIYXNoTWFwPFJlbmRlcmluZ0JhY2tlbmRJ
ZGVudGlmaWVyLCBzdGQ6OnVuaXF1ZV9wdHI8UmVtb3RlUmVuZGVyaW5nQmFja2VuZFdyYXBwZXI+
PjsKICAgICBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kTWFwIG1fcmVtb3RlUmVuZGVyaW5nQmFja2Vu
ZE1hcDsKICNpZiBFTkFCTEUoV0VCR0wpCiAgICAgdXNpbmcgUmVtb3RlR3JhcGhpY3NDb250ZXh0
R0xNYXAgPSBIYXNoTWFwPEdyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgc3RkOjp1bmlxdWVf
cHRyPFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMPj47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5jcHAKaW5k
ZXggNDg3YjEzNWE4ODkyN2QyMjkzOTMwNzQ5MDI0ZDY1NmNjMDUwNGY1NS4uZmJiMTZiM2UwNTBj
ZTViMWZiZDNiYjk0OTFhZTA0OGNmZTNhY2FkMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9H
UFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kLmNwcApA
QCAtMzgsNiArMzgsNyBAQAogI2luY2x1ZGUgIlJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eU1l
c3NhZ2VzLmgiCiAjaW5jbHVkZSA8d3RmL0NoZWNrZWRBcml0aG1ldGljLmg+CiAjaW5jbHVkZSA8
d3RmL1N5c3RlbVRyYWNpbmcuaD4KKyNpbmNsdWRlIDx3dGYvV29ya1F1ZXVlLmg+CiAKICNpZiBQ
TEFURk9STShDT0NPQSkKICNpbmNsdWRlIDx3dGYvY29jb2EvTWFjaFNlbWFwaG9yZS5oPgpAQCAt
NDYsMzUgKzQ3LDQ2IEBACiBuYW1lc3BhY2UgV2ViS2l0IHsKIHVzaW5nIG5hbWVzcGFjZSBXZWJD
b3JlOwogCi1zdGQ6OnVuaXF1ZV9wdHI8UmVtb3RlUmVuZGVyaW5nQmFja2VuZD4gUmVtb3RlUmVu
ZGVyaW5nQmFja2VuZDo6Y3JlYXRlKEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MmIGdwdUNvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3MsIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRDcmVhdGlvblBhcmFtZXRl
cnMmJiBwYXJhbWV0ZXJzKQorUmVmPFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ+IFJlbW90ZVJlbmRl
cmluZ0JhY2tlbmQ6OmNyZWF0ZShHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzJiBncHVDb25uZWN0
aW9uVG9XZWJQcm9jZXNzLCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kQ3JlYXRpb25QYXJhbWV0ZXJz
JiYgcGFyYW1ldGVycykKIHsKLSAgICByZXR1cm4gc3RkOjp1bmlxdWVfcHRyPFJlbW90ZVJlbmRl
cmluZ0JhY2tlbmQ+KG5ldyBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kKGdwdUNvbm5lY3Rpb25Ub1dl
YlByb2Nlc3MsIFdURk1vdmUocGFyYW1ldGVycykpKTsKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5l
dyBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kKGdwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MsIFdURk1v
dmUocGFyYW1ldGVycykpKTsKIH0KIAogUmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6UmVtb3RlUmVu
ZGVyaW5nQmFja2VuZChHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzJiBncHVDb25uZWN0aW9uVG9X
ZWJQcm9jZXNzLCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kQ3JlYXRpb25QYXJhbWV0ZXJzJiYgcGFy
YW1ldGVycykKLSAgICA6IG1fZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2VzcyhtYWtlV2Vha1B0cihn
cHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzKSkKKyAgICA6IG1fd29ya1F1ZXVlKFdvcmtRdWV1ZTo6
Y3JlYXRlKCJSZW1vdGVSZW5kZXJpbmdCYWNrZW5kIHdvcmsgcXVldWUiLCBXb3JrUXVldWU6OlR5
cGU6OlNlcmlhbCwgV29ya1F1ZXVlOjpRT1M6OlVzZXJJbnRlcmFjdGl2ZSkpCisgICAgLCBtX2dw
dUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MoJmdwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MpCiAgICAg
LCBtX3JlbmRlcmluZ0JhY2tlbmRJZGVudGlmaWVyKHBhcmFtZXRlcnMuaWRlbnRpZmllcikKICNp
ZiBQTEFURk9STShDT0NPQSkKICAgICAsIG1fcmVzdW1lRGlzcGxheUxpc3RTZW1hcGhvcmUobWFr
ZVVuaXF1ZTxNYWNoU2VtYXBob3JlPihXVEZNb3ZlKHBhcmFtZXRlcnMuc2VuZFJpZ2h0Rm9yUmVz
dW1lRGlzcGxheUxpc3RTZW1hcGhvcmUpKSkKICNlbmRpZgogewotICAgIGlmIChhdXRvKiBncHVD
b25uZWN0aW9uVG9XZWJQcm9jZXNzID0gbV9ncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmdldCgp
KQotICAgICAgICBncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLT5tZXNzYWdlUmVjZWl2ZXJNYXAo
KS5hZGRNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6Om1l
c3NhZ2VSZWNlaXZlck5hbWUoKSwgbV9yZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllci50b1VJbnQ2
NCgpLCAqdGhpcyk7CisgICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKKyAgICBncHVDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzLmNvbm5lY3Rpb24oKS5hZGRXb3JrUXVldWVNZXNzYWdlUmVjZWl2
ZXIoTWVzc2FnZXM6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6Om1lc3NhZ2VSZWNlaXZlck5hbWUo
KSwgbV93b3JrUXVldWUsIHRoaXMsIG1fcmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXIudG9VSW50
NjQoKSk7CiB9CiAKIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6On5SZW1vdGVSZW5kZXJpbmdCYWNr
ZW5kKCkKIHsKLSAgICBpZiAoYXV0byogZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2VzcyA9IG1fZ3B1
Q29ubmVjdGlvblRvV2ViUHJvY2Vzcy5nZXQoKSkKLSAgICAgICAgZ3B1Q29ubmVjdGlvblRvV2Vi
UHJvY2Vzcy0+bWVzc2FnZVJlY2VpdmVyTWFwKCkucmVtb3ZlTWVzc2FnZVJlY2VpdmVyKE1lc3Nh
Z2VzOjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIG1fcmVu
ZGVyaW5nQmFja2VuZElkZW50aWZpZXIudG9VSW50NjQoKSk7CisjaWYgQVNTRVJUX0VOQUJMRUQK
KyAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKG1fZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2Vzc0xv
Y2spOworICAgIEFTU0VSVCghbV9ncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzKTsKKyNlbmRpZgor
ICAgIC8vIE1ha2Ugc3VyZSB3ZSBkZXN0cm95IHRoZSBSZXNvdXJjZUNhY2hlIG9uIHRoZSBXb3Jr
UXVldWUgc2luY2UgaXQgZ2V0cyBwb3B1bGF0ZWQgb24gdGhlIFdvcmtRdWV1ZS4KKyAgICBtX3dv
cmtRdWV1ZS0+ZGlzcGF0Y2goW3JlbW90ZVJlc291cmNlQ2FjaGUgPSBXVEZNb3ZlKG1fcmVtb3Rl
UmVzb3VyY2VDYWNoZSldIHsgfSk7CiB9CiAKLUdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MqIFJl
bW90ZVJlbmRlcmluZ0JhY2tlbmQ6OmdwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MoKSBjb25zdAor
dm9pZCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpkaXNjb25uZWN0KCkKIHsKLSAgICByZXR1cm4g
bV9ncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmdldCgpOworICAgIEFTU0VSVChSdW5Mb29wOjpp
c01haW4oKSk7CisgICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhtX2dwdUNvbm5lY3Rpb25Ub1dl
YlByb2Nlc3NMb2NrKTsKKyAgICBBU1NFUlQobV9ncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzKTsK
KyAgICAvLyBUaGUgUmVtb3RlUmVuZGVyaW5nQmFja2VuZCBkZXN0cnVjdG9yIHdvbid0IGJlIGNh
bGxlZCB1bnRpbCBkaXNjb25uZWN0KCkgaXMgY2FsbGVkIGFuZCB3ZSB1bnJlZ2lzdGVyIG91cnNl
bHZlcyBhcyBhIFdvcmtRdWV1ZU1lc3NhZ2VSZWNlaXZlciBiZWNhdXNlCisgICAgLy8gdGhlIElQ
Qzo6Q29ubmVjdGlvbiByZWZzIGl0cyBXb3JrUXVldWVNZXNzYWdlUmVjZWl2ZXJzLgorICAgIHN0
ZDo6ZXhjaGFuZ2UobV9ncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLCBudWxscHRyKS0+Y29ubmVj
dGlvbigpLnJlbW92ZVdvcmtRdWV1ZU1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6UmVtb3RlUmVu
ZGVyaW5nQmFja2VuZDo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBtX3JlbmRlcmluZ0JhY2tlbmRJ
ZGVudGlmaWVyLnRvVUludDY0KCkpOwogfQogCiBJUEM6OkNvbm5lY3Rpb24qIFJlbW90ZVJlbmRl
cmluZ0JhY2tlbmQ6Om1lc3NhZ2VTZW5kZXJDb25uZWN0aW9uKCkgY29uc3QKIHsKKyAgICBBU1NF
UlQobV9ncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzTG9jay5pc0hlbGQoKSk7CiAgICAgaWYgKGF1
dG8qIGdwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MgPSBtX2dwdUNvbm5lY3Rpb25Ub1dlYlByb2Nl
c3MuZ2V0KCkpCiAgICAgICAgIHJldHVybiAmZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2Vzcy0+Y29u
bmVjdGlvbigpOwogICAgIHJldHVybiBudWxscHRyOwpAQCAtOTEsNyArMTAzLDExIEBAIGJvb2wg
UmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6YXBwbHlNZWRpYUl0ZW0oRGlzcGxheUxpc3Q6Okl0ZW1I
YW5kbGUgaXRlbSwgR3JhcGhpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIGF1dG8mIG1l
ZGlhSXRlbSA9IGl0ZW0uZ2V0PERpc3BsYXlMaXN0OjpQYWludEZyYW1lRm9yTWVkaWE+KCk7Ci0g
ICAgYXV0byBwcm9jZXNzID0gZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2VzcygpOworICAgIFJlZlB0
cjxHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzPiBwcm9jZXNzOworICAgIHsKKyAgICAgICAgYXV0
byBsb2NrZXIgPSBob2xkTG9jayhtX2dwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3NMb2NrKTsKKyAg
ICAgICAgcHJvY2VzcyA9IG1fZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2VzczsKKyAgICB9CiAgICAg
aWYgKCFwcm9jZXNzKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKQEAgLTEwOSwxMSArMTI1LDE5
IEBAIGJvb2wgUmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6YXBwbHlNZWRpYUl0ZW0oRGlzcGxheUxp
c3Q6Okl0ZW1IYW5kbGUgaXRlbSwgR3JhcGhpCiAKIHZvaWQgUmVtb3RlUmVuZGVyaW5nQmFja2Vu
ZDo6ZGlkQ3JlYXRlSW1hZ2VCdWZmZXJCYWNrZW5kKEltYWdlQnVmZmVyQmFja2VuZEhhbmRsZSBo
YW5kbGUsIFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciByZW5kZXJpbmdSZXNvdXJjZUlkZW50
aWZpZXIpCiB7CisgICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhtX2dwdUNvbm5lY3Rpb25Ub1dl
YlByb2Nlc3NMb2NrKTsKKyAgICBpZiAoIW1fZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2VzcykKKyAg
ICAgICAgcmV0dXJuOworCiAgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlUmVuZGVyaW5nQmFja2Vu
ZFByb3h5OjpEaWRDcmVhdGVJbWFnZUJ1ZmZlckJhY2tlbmQoV1RGTW92ZShoYW5kbGUpLCByZW5k
ZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpLCBtX3JlbmRlcmluZ0JhY2tlbmRJZGVudGlmaWVyKTsK
IH0KIAogdm9pZCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpkaWRGbHVzaChEaXNwbGF5TGlzdDo6
Rmx1c2hJZGVudGlmaWVyIGZsdXNoSWRlbnRpZmllciwgUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlm
aWVyIHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcikKIHsKKyAgICBhdXRvIGxvY2tlciA9IGhv
bGRMb2NrKG1fZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2Vzc0xvY2spOworICAgIGlmICghbV9ncHVD
b25uZWN0aW9uVG9XZWJQcm9jZXNzKQorICAgICAgICByZXR1cm47CisKICAgICBzZW5kKE1lc3Nh
Z2VzOjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHk6OkRpZEZsdXNoKGZsdXNoSWRlbnRpZmll
ciwgcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKSwgbV9yZW5kZXJpbmdCYWNrZW5kSWRlbnRp
Zmllcik7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGlj
cy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kLmggYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3Jh
cGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5oCmluZGV4IGJjMTI4ZjE2YmIzNzU0NjQ1NDIz
ZmUyYmQyYjA5OTgyMDNhZjE2MzAuLjlkNDhmOTYyN2M3OGQxMjE5Yjk2ZDk5NWE4NTRkOTBiMzAy
NzVjMzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1v
dGVSZW5kZXJpbmdCYWNrZW5kLmgKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBo
aWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQuaApAQCAtNjUsMTQgKzY1LDEzIEBAIGNsYXNzIEdQ
VUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M7CiBzdHJ1Y3QgUmVtb3RlUmVuZGVyaW5nQmFja2VuZENy
ZWF0aW9uUGFyYW1ldGVyczsKIAogY2xhc3MgUmVtb3RlUmVuZGVyaW5nQmFja2VuZAotICAgIDog
cHVibGljIElQQzo6TWVzc2FnZVNlbmRlcgotICAgICwgcHJpdmF0ZSBJUEM6Ok1lc3NhZ2VSZWNl
aXZlcgotICAgICwgcHVibGljIFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtQnVmZmVyUmVhZGlu
Z0NsaWVudCB7CisgICAgOiBwdWJsaWMgSVBDOjpDb25uZWN0aW9uOjpXb3JrUXVldWVNZXNzYWdl
UmVjZWl2ZXIKKyAgICAsIHB1YmxpYyBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbUJ1ZmZlclJl
YWRpbmdDbGllbnQKKyAgICAsIHByaXZhdGUgSVBDOjpNZXNzYWdlU2VuZGVyIHsKIHB1YmxpYzoK
LSAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ+IGNyZWF0
ZShHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzJiwgUmVtb3RlUmVuZGVyaW5nQmFja2VuZENyZWF0
aW9uUGFyYW1ldGVycyYmKTsKKyAgICBzdGF0aWMgUmVmPFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ+
IGNyZWF0ZShHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzJiwgUmVtb3RlUmVuZGVyaW5nQmFja2Vu
ZENyZWF0aW9uUGFyYW1ldGVycyYmKTsKICAgICB2aXJ0dWFsIH5SZW1vdGVSZW5kZXJpbmdCYWNr
ZW5kKCk7CiAKLSAgICBHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzKiBncHVDb25uZWN0aW9uVG9X
ZWJQcm9jZXNzKCkgY29uc3Q7CiAgICAgUmVtb3RlUmVzb3VyY2VDYWNoZSYgcmVtb3RlUmVzb3Vy
Y2VDYWNoZSgpIHsgcmV0dXJuIG1fcmVtb3RlUmVzb3VyY2VDYWNoZTsgfQogCiAgICAgLy8gUmVu
ZGVyaW5nIG9wZXJhdGlvbnMuCkBAIC04NCw2ICs4Myw4IEBAIHB1YmxpYzoKIAogICAgIHZvaWQg
c2V0TmV4dEl0ZW1CdWZmZXJUb1JlYWQoV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1CdWZmZXJJ
ZGVudGlmaWVyLCBXZWJDb3JlOjpSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgZGVzdGluYXRp
b24pOwogCisgICAgdm9pZCBkaXNjb25uZWN0KCk7CisKIHByaXZhdGU6CiAgICAgUmVtb3RlUmVu
ZGVyaW5nQmFja2VuZChHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzJiwgUmVtb3RlUmVuZGVyaW5n
QmFja2VuZENyZWF0aW9uUGFyYW1ldGVycyYmKTsKIApAQCAtMTQxLDggKzE0MiwxMCBAQCBwcml2
YXRlOgogICAgICAgICB9CiAgICAgfTsKIAorICAgIFJlZjxXb3JrUXVldWU+IG1fd29ya1F1ZXVl
OwogICAgIFJlbW90ZVJlc291cmNlQ2FjaGUgbV9yZW1vdGVSZXNvdXJjZUNhY2hlOwotICAgIFdl
YWtQdHI8R1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcz4gbV9ncHVDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzOworICAgIExvY2sgbV9ncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzTG9jazsKKyAgICBSZWZQ
dHI8R1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcz4gbV9ncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNz
OwogICAgIFJlbmRlcmluZ0JhY2tlbmRJZGVudGlmaWVyIG1fcmVuZGVyaW5nQmFja2VuZElkZW50
aWZpZXI7CiAgICAgSGFzaE1hcDxXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbUJ1ZmZlcklkZW50
aWZpZXIsIFJlZlB0cjxEaXNwbGF5TGlzdFJlYWRlckhhbmRsZT4+IG1fc2hhcmVkRGlzcGxheUxp
c3RIYW5kbGVzOwogICAgIE9wdGlvbmFsPFBlbmRpbmdXYWtldXBJbmZvcm1hdGlvbj4gbV9wZW5k
aW5nV2FrZXVwSW5mbzsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFw
aGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9H
UFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQubWVzc2FnZXMuaW4KaW5k
ZXggMjAyYzIwYTljNjUwMTMwOTExM2Q5MDY4M2NmMDA5Yjg4M2JkMDAxZi4uN2Q2NWNlOTA5YzU4
MjBmNDZiMDFlNmJkZWVjZGVhYTczMzZhYWYyOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9H
UFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQubWVzc2FnZXMuaW4KKysr
IGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tl
bmQubWVzc2FnZXMuaW4KQEAgLTIyLDcgKzIyLDcgQEAKIAogI2lmIEVOQUJMRShHUFVfUFJPQ0VT
UykKIAotbWVzc2FnZXMgLT4gUmVtb3RlUmVuZGVyaW5nQmFja2VuZCBOb3RSZWZDb3VudGVkIHsK
K21lc3NhZ2VzIC0+IFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQgewogICAgIENyZWF0ZUltYWdlQnVm
ZmVyKFdlYkNvcmU6OkZsb2F0U2l6ZSBsb2dpY2FsU2l6ZSwgV2ViQ29yZTo6UmVuZGVyaW5nTW9k
ZSByZW5kZXJpbmdNb2RlLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIFdlYkNvcmU6OkNvbG9yU3Bh
Y2UgY29sb3JTcGFjZSwgZW51bTp1aW50OF90IFdlYkNvcmU6OlBpeGVsRm9ybWF0IHBpeGVsRm9y
bWF0LCBXZWJDb3JlOjpSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgcmVuZGVyaW5nUmVzb3Vy
Y2VJZGVudGlmaWVyKQogICAgIFdha2VVcEFuZEFwcGx5RGlzcGxheUxpc3Qoc3RydWN0IFdlYktp
dDo6R1BVUHJvY2Vzc1dha2V1cE1lc3NhZ2VBcmd1bWVudHMgYXJndW1lbnRzKQogICAgIEdldElt
YWdlRGF0YShlbnVtOnVpbnQ4X3QgV2ViQ29yZTo6QWxwaGFQcmVtdWx0aXBsaWNhdGlvbiBvdXRw
dXRGb3JtYXQsIFdlYkNvcmU6OkludFJlY3Qgc3JjUmVjdCwgV2ViQ29yZTo6UmVuZGVyaW5nUmVz
b3VyY2VJZGVudGlmaWVyIHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcikgLT4gKElQQzo6SW1h
Z2VEYXRhUmVmZXJlbmNlIGltYWdlRGF0YSkgU3luY2hyb25vdXMKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvUGxhdGZvcm0vU2hhcmVkTWVtb3J5LmggYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3Jt
L1NoYXJlZE1lbW9yeS5oCmluZGV4IGEwODU0NmI3NjU2MDQ1NjE0NWQ4NTA0ZDkzOGYwM2U3Zjgx
YjQwZDAuLjAzNDVhMjVlNzM0NGEzYjdiNWMxMTYyOGM4N2Q3YTllODU2ZDg0MTMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vU2hhcmVkTWVtb3J5LmgKKysrIGIvU291cmNlL1dl
YktpdC9QbGF0Zm9ybS9TaGFyZWRNZW1vcnkuaApAQCAtMjgsNyArMjgsNyBAQAogCiAjaW5jbHVk
ZSA8d3RmL0ZvcndhcmQuaD4KICNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KLSNpbmNsdWRl
IDx3dGYvUmVmQ291bnRlZC5oPgorI2luY2x1ZGUgPHd0Zi9UaHJlYWRTYWZlUmVmQ291bnRlZC5o
PgogCiAjaWYgVVNFKFVOSVhfRE9NQUlOX1NPQ0tFVFMpCiAjaW5jbHVkZSAiQXR0YWNobWVudC5o
IgpAQCAtNTYsNyArNTYsNyBAQCBjbGFzcyBNYWNoU2VuZFJpZ2h0OwogCiBuYW1lc3BhY2UgV2Vi
S2l0IHsKIAotY2xhc3MgU2hhcmVkTWVtb3J5IDogcHVibGljIFJlZkNvdW50ZWQ8U2hhcmVkTWVt
b3J5PiB7CitjbGFzcyBTaGFyZWRNZW1vcnkgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8
U2hhcmVkTWVtb3J5PiB7CiBwdWJsaWM6CiAgICAgZW51bSBjbGFzcyBQcm90ZWN0aW9uIHsKICAg
ICAgICAgUmVhZE9ubHksCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9TaGFyZWFi
bGVCaXRtYXAuY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvU2hhcmVhYmxlQml0bWFwLmNwcApp
bmRleCA4NDQ4ODdiYmMzYjFiM2E0MzM4NDEyZTk0M2M5ZDY5MmNiMWI2MmIwLi5iMTBkNWE2M2Mx
YTU0ODRlYTJkMWYzN2I5NWRkNTU1ZDM5ZTAzOTM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1NoYXJlZC9TaGFyZWFibGVCaXRtYXAuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1No
YXJlYWJsZUJpdG1hcC5jcHAKQEAgLTE3Miw3ICsxNzIsNiBAQCBTaGFyZWFibGVCaXRtYXA6OlNo
YXJlYWJsZUJpdG1hcChjb25zdCBJbnRTaXplJiBzaXplLCBDb25maWd1cmF0aW9uIGNvbmZpZ3Vy
YXRpbwogICAgICwgbV9jb25maWd1cmF0aW9uKGNvbmZpZ3VyYXRpb24pCiAgICAgLCBtX2RhdGEo
ZGF0YSkKIHsKLSAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOwogfQogCiBTaGFyZWFibGVC
aXRtYXA6OlNoYXJlYWJsZUJpdG1hcChjb25zdCBJbnRTaXplJiBzaXplLCBDb25maWd1cmF0aW9u
IGNvbmZpZ3VyYXRpb24sIFJlZlB0cjxTaGFyZWRNZW1vcnk+IHNoYXJlZE1lbW9yeSkKQEAgLTE4
MSw4ICsxODAsNiBAQCBTaGFyZWFibGVCaXRtYXA6OlNoYXJlYWJsZUJpdG1hcChjb25zdCBJbnRT
aXplJiBzaXplLCBDb25maWd1cmF0aW9uIGNvbmZpZ3VyYXRpbwogICAgICwgbV9zaGFyZWRNZW1v
cnkoc2hhcmVkTWVtb3J5KQogICAgICwgbV9kYXRhKG51bGxwdHIpCiB7Ci0gICAgQVNTRVJUKFJ1
bkxvb3A6OmlzTWFpbigpKTsKLQogI2lmIFVTRShESVJFQ1QyRCkKICAgICBjcmVhdGVTaGFyZWRS
ZXNvdXJjZSgpOwogI2VuZGlmCkBAIC0xOTAsOCArMTg3LDYgQEAgU2hhcmVhYmxlQml0bWFwOjpT
aGFyZWFibGVCaXRtYXAoY29uc3QgSW50U2l6ZSYgc2l6ZSwgQ29uZmlndXJhdGlvbiBjb25maWd1
cmF0aW8KIAogU2hhcmVhYmxlQml0bWFwOjp+U2hhcmVhYmxlQml0bWFwKCkKIHsKLSAgICBBU1NF
UlQoUnVuTG9vcDo6aXNNYWluKCkpOwotCiAgICAgaWYgKCFpc0JhY2tlZEJ5U2hhcmVkTWVtb3J5
KCkpCiAgICAgICAgIFNoYXJlYWJsZUJpdG1hcE1hbGxvYzo6ZnJlZShtX2RhdGEpOwogI2lmIFVT
RShESVJFQ1QyRCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1NoYXJlYWJsZUJp
dG1hcC5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQvU2hhcmVhYmxlQml0bWFwLmgKaW5kZXggM2Ex
ZmFkMmM3OWJjZTFjN2U1YTFhM2E3MmU2NDAyYjhmYmIxODU1Zi4uY2VjNWI1OTNjNWZhOGNjODhi
ODU2NGIwMTYwYjQ3ZTllMzMxNDBhMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQv
U2hhcmVhYmxlQml0bWFwLmgKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvU2hhcmVhYmxlQml0
bWFwLmgKQEAgLTI4LDggKzI4LDggQEAKICNpbmNsdWRlICJTaGFyZWRNZW1vcnkuaCIKICNpbmNs
dWRlIDxXZWJDb3JlL0ludFJlY3QuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1BsYXRmb3JtSW1hZ2Uu
aD4KLSNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4K
KyNpbmNsdWRlIDx3dGYvVGhyZWFkU2FmZVJlZkNvdW50ZWQuaD4KIAogI2lmIFVTRShDRykKICNp
bmNsdWRlICJDb2xvclNwYWNlRGF0YS5oIgpAQCAtNTIsNyArNTIsNyBAQCBjbGFzcyBHcmFwaGlj
c0NvbnRleHQ7CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogICAgIAotY2xhc3MgU2hhcmVhYmxlQml0
bWFwIDogcHVibGljIFJlZkNvdW50ZWQ8U2hhcmVhYmxlQml0bWFwPiB7CitjbGFzcyBTaGFyZWFi
bGVCaXRtYXAgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8U2hhcmVhYmxlQml0bWFwPiB7
CiBwdWJsaWM6CiAgICAgc3RydWN0IENvbmZpZ3VyYXRpb24gewogICAgICAgICBib29sIGlzT3Bh
cXVlIHsgZmFsc2UgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL2NnL1NoYXJl
YWJsZUJpdG1hcENHLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL2NnL1NoYXJlYWJsZUJpdG1h
cENHLmNwcAppbmRleCAzNjUzNDgyMGFmNWEyMjgzYzZlNmEwNmU3NDMzMTc3YjkwM2RlMGExLi44
ZjljZDU5NDM2Y2ExNmE2N2MzMDFiNzU0NzYwNTk3ODc2OGE0NDNhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9jZy9TaGFyZWFibGVCaXRtYXBDRy5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9TaGFyZWQvY2cvU2hhcmVhYmxlQml0bWFwQ0cuY3BwCkBAIC04Nyw3ICs4Nyw2IEBAIHVu
c2lnbmVkIFNoYXJlYWJsZUJpdG1hcDo6Y2FsY3VsYXRlQnl0ZXNQZXJQaXhlbChjb25zdCBDb25m
aWd1cmF0aW9uJiBjb25maWd1cmF0CiAKIHN0ZDo6dW5pcXVlX3B0cjxHcmFwaGljc0NvbnRleHQ+
IFNoYXJlYWJsZUJpdG1hcDo6Y3JlYXRlR3JhcGhpY3NDb250ZXh0KCkKIHsKLSAgICBBU1NFUlQo
UnVuTG9vcDo6aXNNYWluKCkpOwogICAgIHJlZigpOyAvLyBCYWxhbmNlZCBieSBkZXJlZiBpbiBy
ZWxlYXNlQml0bWFwQ29udGV4dERhdGEuCiAKICAgICB1bnNpZ25lZCBieXRlc1BlclBpeGVsID0g
Y2FsY3VsYXRlQnl0ZXNQZXJQaXhlbChtX2NvbmZpZ3VyYXRpb24pOwpAQCAtMTU3LDEzICsxNTYs
NiBAQCBSZXRhaW5QdHI8Q0dJbWFnZVJlZj4gU2hhcmVhYmxlQml0bWFwOjpjcmVhdGVDR0ltYWdl
KENHRGF0YVByb3ZpZGVyUmVmIGRhdGFQcm92aQogCiB2b2lkIFNoYXJlYWJsZUJpdG1hcDo6cmVs
ZWFzZUJpdG1hcENvbnRleHREYXRhKHZvaWQqIHR5cGVsZXNzQml0bWFwLCB2b2lkKiB0eXBlbGVz
c0RhdGEpCiB7Ci0gICAgaWYgKCFSdW5Mb29wOjppc01haW4oKSkgewotICAgICAgICBSdW5Mb29w
OjptYWluKCkuZGlzcGF0Y2goW3R5cGVsZXNzQml0bWFwLCB0eXBlbGVzc0RhdGFdIHsKLSAgICAg
ICAgICAgIHJlbGVhc2VCaXRtYXBDb250ZXh0RGF0YSh0eXBlbGVzc0JpdG1hcCwgdHlwZWxlc3NE
YXRhKTsKLSAgICAgICAgfSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KICAgICBTaGFyZWFi
bGVCaXRtYXAqIGJpdG1hcCA9IHN0YXRpY19jYXN0PFNoYXJlYWJsZUJpdG1hcCo+KHR5cGVsZXNz
Qml0bWFwKTsKICAgICBBU1NFUlRfVU5VU0VEKHR5cGVsZXNzRGF0YSwgYml0bWFwLT5kYXRhKCkg
PT0gdHlwZWxlc3NEYXRhKTsKICAgICBiaXRtYXAtPmRlcmVmKCk7IC8vIEJhbGFuY2VkIGJ5IHJl
ZiBpbiBjcmVhdGVHcmFwaGljc0NvbnRleHQuCkBAIC0xNzEsMTMgKzE2Myw2IEBAIHZvaWQgU2hh
cmVhYmxlQml0bWFwOjpyZWxlYXNlQml0bWFwQ29udGV4dERhdGEodm9pZCogdHlwZWxlc3NCaXRt
YXAsIHZvaWQqIHR5cGVsCiAKIHZvaWQgU2hhcmVhYmxlQml0bWFwOjpyZWxlYXNlRGF0YVByb3Zp
ZGVyRGF0YSh2b2lkKiB0eXBlbGVzc0JpdG1hcCwgY29uc3Qgdm9pZCogdHlwZWxlc3NEYXRhLCBz
aXplX3QpCiB7Ci0gICAgaWYgKCFSdW5Mb29wOjppc01haW4oKSkgewotICAgICAgICBSdW5Mb29w
OjptYWluKCkuZGlzcGF0Y2goW3R5cGVsZXNzQml0bWFwLCB0eXBlbGVzc0RhdGFdIHsKLSAgICAg
ICAgICAgIHJlbGVhc2VEYXRhUHJvdmlkZXJEYXRhKHR5cGVsZXNzQml0bWFwLCB0eXBlbGVzc0Rh
dGEsIDApOwotICAgICAgICB9KTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQogICAgIFNoYXJl
YWJsZUJpdG1hcCogYml0bWFwID0gc3RhdGljX2Nhc3Q8U2hhcmVhYmxlQml0bWFwKj4odHlwZWxl
c3NCaXRtYXApOwogICAgIEFTU0VSVF9VTlVTRUQodHlwZWxlc3NEYXRhLCBiaXRtYXAtPmRhdGEo
KSA9PSB0eXBlbGVzc0RhdGEpOwogICAgIGJpdG1hcC0+ZGVyZWYoKTsgLy8gQmFsYW5jZWQgYnkg
cmVmIGluIGNyZWF0ZUNHSW1hZ2UuCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>417567</attachid>
            <date>2021-01-13 14:42:10 -0800</date>
            <delta_ts>2021-01-13 14:54:24 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-220476-20210113144209.patch</filename>
            <type>text/plain</type>
            <size>56261</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcxNDM5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IGM1N2I2NTZkYWIwOGY4ZWU1NGJhZTVk
NjM3MjUxMTlkMTBhY2M0M2IuLjQ3NzQ4MjQ0ZWFhZGFlODEzZTY5NDVlYjM0ZTAzYTYyNDRhMmI3
NGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTggQEAKKzIwMjEtMDEtMTMgIENocmlzIER1bWV6ICA8Y2R1bWV6
QGFwcGxlLmNvbT4KKworICAgICAgICBbR1BVUHJvY2Vzc10gTW92ZSBET00gLyBDYW52YXMgcmVu
ZGVyaW5nIG9mZiB0aGUgbWFpbiB0aHJlYWQgaW4gdGhlIEdQVVByb2Nlc3MKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyMDQ3NgorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCB0cmFpdCBmdW5jdGlvbiB0
aGF0IGdldHMgY2FsbGVkIFRpbnlMUlVDYWNoZSB0byBjb252ZXJ0IHRoZSBrZXkgYmVmb3JlIHN0
b3JpbmcKKyAgICAgICAgaXQuIEl0IGlzIHVzZWZ1bCBmb3IgY2xpZW50cyB0aGF0IG5lZWQgdG8g
Y2FsbCBpc29sYXRlZENvcHkoKSBvbiB0aGUga2V5IFN0cmluZyBiZWZvcmUKKyAgICAgICAgc3Rv
cmluZyBpdC4KKworICAgICAgICAqIHd0Zi9UaW55TFJVQ2FjaGUuaDoKKyAgICAgICAgKFdURjo6
VGlueUxSVUNhY2hlUG9saWN5OjpjcmVhdGVLZXlGb3JTdG9yYWdlKToKKyAgICAgICAgKFdURjo6
VGlueUxSVUNhY2hlOjpnZXQpOgorCiAyMDIxLTAxLTExICBLaW1tbyBLaW5udW5lbiAgPGtraW5u
dW5lbkBhcHBsZS5jb20+CiAKICAgICAgICAgV2ViS2l0OjpJUEM6OkVuY29kZXIgbmVlZHMgZGVm
aW5pdGlvbnMgb2YgYWxsIGN1c3RvbSBlbnVtIHZhbHVlcyBhdCB0aGUgRW5jb2RlciBkZWZpbml0
aW9uIHRpbWUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9X
ZWJDb3JlL0NoYW5nZUxvZwppbmRleCA1ZTlmZjM4MTc0ODkxYzJkMzRiYTA3MWNjOWQ2ZTQzMGU4
NDhiMTljLi5mNGExMzg4NzVmOTdjMmE4MGRkMjQ1ZjVkZTg1OWY1YzRlZTBhYzIwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCkBAIC0xLDMgKzEsNDkgQEAKKzIwMjEtMDEtMTMgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFw
cGxlLmNvbT4KKworICAgICAgICBbR1BVUHJvY2Vzc10gTW92ZSBET00gLyBDYW52YXMgcmVuZGVy
aW5nIG9mZiB0aGUgbWFpbiB0aHJlYWQgaW4gdGhlIEdQVVByb2Nlc3MKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyMDQ3NgorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE1ha2Ugc29tZSBjYWNoZXMgdGhyZWFk
LXNhZmUgbm93IHRoYXQgd2UgZG8gcmVuZGVyaW5nIG9mZiB0aGUgbWFpbiB0aHJlYWQgaW4KKyAg
ICAgICAgdGhlIEdQVVByb2Nlc3MuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLCBjb3ZlcmVkIGJ5
IGV4aXN0aW5nIHRlc3RzLgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZm
ZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5oOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL1NoYWRvd0JsdXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
U2NyYXRjaEJ1ZmZlcjo6U2NyYXRjaEJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpTY3JhdGNo
QnVmZmVyOjpnZXRTY3JhdGNoQnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcmF0Y2hCdWZm
ZXI6OnNldENhY2hlZFNoYWRvd1ZhbHVlcyk6CisgICAgICAgIChXZWJDb3JlOjpTY3JhdGNoQnVm
ZmVyOjpzZXRDYWNoZWRJbnNldFNoYWRvd1ZhbHVlcyk6CisgICAgICAgIChXZWJDb3JlOjpTY3Jh
dGNoQnVmZmVyOjpzY2hlZHVsZVNjcmF0Y2hCdWZmZXJQdXJnZSk6CisgICAgICAgIChXZWJDb3Jl
OjpTY3JhdGNoQnVmZmVyOjpwdXJnZVRpbWVyRmlyZWQpOgorICAgICAgICAoV2ViQ29yZTo6U2Ny
YXRjaEJ1ZmZlcjo6Y2xlYXJTY3JhdGNoQnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcmF0
Y2hCdWZmZXI6OnNpbmdsZXRvbik6CisgICAgICAgIChXZWJDb3JlOjpTY3JhdGNoQnVmZmVyOjps
b2NrKToKKyAgICAgICAgKFdlYkNvcmU6OlNoYWRvd0JsdXI6OmRyYXdSZWN0U2hhZG93V2l0aFRp
bGluZyk6CisgICAgICAgIChXZWJDb3JlOjpTaGFkb3dCbHVyOjpkcmF3SW5zZXRTaGFkb3dXaXRo
VGlsaW5nKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlclV0aWxp
dGllc0NHLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnV0aUZyb21JbWFnZUJ1ZmZlck1JTUVUeXBl
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9TdWJpbWFnZUNhY2hlV2l0aFRpbWVy
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlN1YmltYWdlQ2FjaGVXaXRoVGltZXI6OlN1YmltYWdl
Q2FjaGVXaXRoVGltZXIpOgorICAgICAgICAoV2ViQ29yZTo6U3ViaW1hZ2VDYWNoZVdpdGhUaW1l
cjo6cHJ1bmVDYWNoZVRpbWVyRmlyZWQpOgorICAgICAgICAoV2ViQ29yZTo6U3ViaW1hZ2VDYWNo
ZVdpdGhUaW1lcjo6c3ViaW1hZ2UpOgorICAgICAgICAoV2ViQ29yZTo6U3ViaW1hZ2VDYWNoZVdp
dGhUaW1lcjo6Y2xlYXJJbWFnZUFuZFN1YmltYWdlcyk6CisgICAgICAgIChXZWJDb3JlOjpTdWJp
bWFnZUNhY2hlV2l0aFRpbWVyOjpjbGVhckFsbCk6CisgICAgICAgIChXZWJDb3JlOjpTdWJpbWFn
ZUNhY2hlV2l0aFRpbWVyOjpzdWJpbWFnZUNhY2hlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9jZy9TdWJpbWFnZUNhY2hlV2l0aFRpbWVyLmg6CisgICAgICAgICogcGxhdGZvcm0vbmV0
d29yay9tYWMvVVRJVXRpbGl0aWVzLm1tOgorICAgICAgICAoV2ViQ29yZTo6VVRJRnJvbVVua25v
d25NSU1FVHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpVVElGcm9tTUlNRVR5cGVDYWNoZVBvbGlj
eTo6Y3JlYXRlVmFsdWVGb3JLZXkpOgorICAgICAgICAoV2ViQ29yZTo6VVRJRnJvbU1JTUVUeXBl
Q2FjaGVQb2xpY3k6OmNyZWF0ZUtleUZvclN0b3JhZ2UpOgorICAgICAgICAoV2ViQ29yZTo6Y2Fj
aGVVVElGcm9tTWltZVR5cGUpOgorICAgICAgICAoV2ViQ29yZTo6VVRJRnJvbU1JTUVUeXBlKToK
KyAgICAgICAgKiBwbGF0Zm9ybS90ZXh0L2NmL0h5cGhlbmF0aW9uQ0YuY3BwOgorICAgICAgICAq
IHBsYXRmb3JtL3RleHQvaHlwaGVuL0h5cGhlbmF0aW9uTGliSHlwaGVuLmNwcDoKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyMDQ3NgorCiAyMDIxLTAx
LTEzICBNYXJ0aW4gUm9iaW5zb24gIDxtcm9iaW5zb25AaWdhbGlhLmNvbT4KIAogICAgICAgICBT
Y3JvbGwtc25hcCBwb2ludHMgc2hvdWxkIGJlIHRyaWdnZXJlZCBkdXJpbmcgcHJvZ3JhbW1hdGlj
IHNjcm9sbApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2Vi
S2l0L0NoYW5nZUxvZwppbmRleCA2OTA5ZDE5NDAwNDU5MzQzMWM4MTlkYjYyNjBkNWZjNWNiMGJh
NGViLi45Nzk0OTY5NDUxM2E3NjZmMDdlOTAzNTFlN2RhMTc5ZmMzMzQwNWViIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpA
QCAtMSwzICsxLDcwIEBACisyMDIxLTAxLTEzICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5j
b20+CisKKyAgICAgICAgW0dQVVByb2Nlc3NdIE1vdmUgRE9NIC8gQ2FudmFzIHJlbmRlcmluZyBv
ZmYgdGhlIG1haW4gdGhyZWFkIGluIHRoZSBHUFVQcm9jZXNzCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjA0NzYKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBNb3ZlIERPTSAvIENhbnZhcyByZW5kZXJpbmcg
b2ZmIHRoZSBtYWluIHRocmVhZCAoYW5kIG9uIGEgaGlnaC1wcmlvcml0eSBzZXJpYWwgV29ya1F1
ZXVlKSBpbiB0aGUKKyAgICAgICAgR1BVUHJvY2VzcyBieSBtYWtpbmcgUmVtb3RlUmVuZGVyaW5n
QmFja2VuZCBhIFdvcmtRdWV1ZU1lc3NhZ2VSZWNlaXZlci4gVGhlcmUgaXMgYSBzZXJpYWwgV29y
a1F1ZXVlCisgICAgICAgIHBlciBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kLCB3aGljaCBtZWFucyBl
YWNoIFdlYlBhZ2UgZ2V0cyBpdHMgb3duIFdvcmtRdWV1ZS4KKworICAgICAgICBMb2NhbCB0ZXN0
aW5nIHNlZW1zIHRvIGluZGljYXRlIHRoYXQgdGhpcyBjaGFuZ2UgaXMgcGVyZi1uZXV0cmFsIChJ
IGhhdmUgc2NoZWR1bGVkIEEvQiB0ZXN0aW5nIG9uCisgICAgICAgIHRoZSBib3RzIHRvIGNvbmZp
cm0pLiBJIHRoaW5rIHRoaXMgaXMgZ29vZCBuZXdzIHNpbmNlIEkgYmVsaWV2ZSB0aGlzIG5ldyBh
cmNoaXRlY3R1cmUgd2lsbCBnaXZlCisgICAgICAgIHVzIG1vcmUgb3B0aW1pemF0aW9uIG9wcG9y
dHVuaXRpZXMgaW4gdGhlIGZ1dHVyZS4gRm9yIGV4YW1wbGUsIHdlIHdvdWxkIGJlIGFibGUgdG8g
bW9yZQorICAgICAgICBhZ2dyZXNzaXZlbHkgd2FpdCBvbiB0aGUgY3Jvc3MtcHJvY2VzcyBzZW1h
cGhvcmUgd2hlbiB3YWl0aW5nIGZvciBuZXcgRGlzcGxheUxpc3QgZW50cmllcyB3aXRob3V0Cisg
ICAgICAgIHdvcnJ5aW5nIGFib3V0IGJsb2NraW5nIHRoZSBtYWluIHRocmVhZC4KKworICAgICAg
ICBJIGhhdmUgcnVuIGxheW91dCB0ZXN0cyBpbiBEZWJ1ZyBvbiBib3RoIG1hY09TICYgaU9TIHdp
dGggdGhlIEdQVVByb2Nlc3MgZW5hYmxlZCBhbmQgSSBiZWxpZXZlIEkKKyAgICAgICAgaGF2ZSBm
aXhlZCBhbGwgdGhlIGNyYXNoZXMgdGhhdCB3ZXJlIGRpc2NvdmVyZWQuCisKKyAgICAgICAgKiBH
UFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwOgorICAgICAgICAoV2ViS2l0
OjpHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzKToK
KyAgICAgICAgKFdlYktpdDo6R1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6ZGlkQ2xvc2UpOgor
ICAgICAgICAoV2ViS2l0OjpHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpjcmVhdGVSZW5kZXJp
bmdCYWNrZW5kKToKKyAgICAgICAgKFdlYktpdDo6R1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6
UmVtb3RlUmVuZGVyaW5nQmFja2VuZFdyYXBwZXI6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmRXcmFw
cGVyKToKKyAgICAgICAgKFdlYktpdDo6R1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6UmVtb3Rl
UmVuZGVyaW5nQmFja2VuZFdyYXBwZXI6On5SZW1vdGVSZW5kZXJpbmdCYWNrZW5kV3JhcHBlcik6
CisgICAgICAgICogR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmg6CisgICAg
ICAgIChXZWJLaXQ6OkdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnJlbW90ZU1lZGlhUGxheWVy
TWFuYWdlclByb3h5KToKKyAgICAgICAgKiBHUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRl
cmluZ0JhY2tlbmQuY3BwOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5k
OjpjcmVhdGUpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpSZW1v
dGVSZW5kZXJpbmdCYWNrZW5kKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlUmVuZGVyaW5nQmFj
a2VuZDo6flJlbW90ZVJlbmRlcmluZ0JhY2tlbmQpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVS
ZW5kZXJpbmdCYWNrZW5kOjpkaXNjb25uZWN0KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlUmVu
ZGVyaW5nQmFja2VuZDo6bWVzc2FnZVNlbmRlckNvbm5lY3Rpb24gY29uc3QpOgorICAgICAgICAo
V2ViS2l0OjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjphcHBseU1lZGlhSXRlbSk6CisgICAgICAg
IChXZWJLaXQ6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OmNyZWF0ZUltYWdlQnVmZmVyKToKKyAg
ICAgICAgKFdlYktpdDo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6d2FrZVVwQW5kQXBwbHlEaXNw
bGF5TGlzdCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OmdldElt
YWdlRGF0YSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OmdldERh
dGFVUkxGb3JJbWFnZUJ1ZmZlcik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVJlbmRlcmluZ0Jh
Y2tlbmQ6OmdldERhdGFGb3JJbWFnZUJ1ZmZlcik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVJl
bmRlcmluZ0JhY2tlbmQ6OmdldEJHUkFEYXRhRm9ySW1hZ2VCdWZmZXIpOgorICAgICAgICAoV2Vi
S2l0OjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpjYWNoZU5hdGl2ZUltYWdlKToKKyAgICAgICAg
KFdlYktpdDo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6Y2FjaGVGb250KToKKyAgICAgICAgKFdl
YktpdDo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6ZGVsZXRlQWxsRm9udHMpOgorICAgICAgICAo
V2ViS2l0OjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpyZWxlYXNlUmVtb3RlUmVzb3VyY2UpOgor
ICAgICAgICAoV2ViS2l0OjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpkaWRDcmVhdGVTaGFyZWRE
aXNwbGF5TGlzdEhhbmRsZSk6CisgICAgICAgICogR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVS
ZW5kZXJpbmdCYWNrZW5kLmg6CisgICAgICAgICogR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVS
ZW5kZXJpbmdCYWNrZW5kLm1lc3NhZ2VzLmluOgorICAgICAgICAqIEdQVVByb2Nlc3MvbWVkaWEv
UmVtb3RlTGVnYWN5Q0RNUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVMZWdhY3lD
RE1Qcm94eTo6Y2RtTWVkaWFQbGF5ZXIgY29uc3QpOgorICAgICAgICAqIEdQVVByb2Nlc3MvbWVk
aWEvUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpS
ZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eTo6Y3JlYXRlTWVkaWFQbGF5ZXIpOgorICAgICAg
ICAoV2ViS2l0OjpSZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eTo6ZGVsZXRlTWVkaWFQbGF5
ZXIpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eTo6ZGlk
UmVjZWl2ZVBsYXllck1lc3NhZ2UpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVNZWRpYVBsYXll
ck1hbmFnZXJQcm94eTo6ZGlkUmVjZWl2ZVN5bmNQbGF5ZXJNZXNzYWdlKToKKyAgICAgICAgKFdl
YktpdDo6UmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHk6Om1lZGlhUGxheWVyKToKKyAgICAg
ICAgKiBHUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5Lmg6Cisg
ICAgICAgICogUGxhdGZvcm0vU2hhcmVkTWVtb3J5Lmg6CisgICAgICAgICogU2hhcmVkL1NoYXJl
YWJsZUJpdG1hcC5jcHA6CisgICAgICAgIChXZWJLaXQ6OlNoYXJlYWJsZUJpdG1hcDo6U2hhcmVh
YmxlQml0bWFwKToKKyAgICAgICAgKFdlYktpdDo6U2hhcmVhYmxlQml0bWFwOjp+U2hhcmVhYmxl
Qml0bWFwKToKKyAgICAgICAgKiBTaGFyZWQvU2hhcmVhYmxlQml0bWFwLmg6CisgICAgICAgICog
U2hhcmVkL2NnL1NoYXJlYWJsZUJpdG1hcENHLmNwcDoKKyAgICAgICAgKFdlYktpdDo6U2hhcmVh
YmxlQml0bWFwOjpjcmVhdGVHcmFwaGljc0NvbnRleHQpOgorICAgICAgICAoV2ViS2l0OjpTaGFy
ZWFibGVCaXRtYXA6OnJlbGVhc2VCaXRtYXBDb250ZXh0RGF0YSk6CisgICAgICAgIChXZWJLaXQ6
OlNoYXJlYWJsZUJpdG1hcDo6cmVsZWFzZURhdGFQcm92aWRlckRhdGEpOgorCiAyMDIxLTAxLTEy
ICBCSiBCdXJnICA8YmJ1cmdAYXBwbGUuY29tPgogCiAgICAgICAgIFtDb2NvYV0gV2ViIEluc3Bl
Y3RvcjogbW92ZSBicm93c2VyIGRvbWFpbiBhY3RpdmF0aW9uIG1ldGhvZHMgYmFjayB0byBXS1dl
YlZpZXcgYW5kIFVJRGVsZWdhdGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL1RpbnlMUlVD
YWNoZS5oIGIvU291cmNlL1dURi93dGYvVGlueUxSVUNhY2hlLmgKaW5kZXggZDhiYzdiODEzMTE5
OWUwM2ExZmQ4N2E2NGY1NzE0Mjc4ZjM4Mzk3Yy4uOTAzZTViYmE3MzgxZDgzNGU3MzM0ZDkxY2Zi
YTlhZTQ4NzEwNTEyZSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvVGlueUxSVUNhY2hlLmgK
KysrIGIvU291cmNlL1dURi93dGYvVGlueUxSVUNhY2hlLmgKQEAgLTM1LDYgKzM1LDcgQEAgc3Ry
dWN0IFRpbnlMUlVDYWNoZVBvbGljeSB7CiAgICAgc3RhdGljIGJvb2wgaXNLZXlOdWxsKGNvbnN0
IEtleVR5cGUmKSB7IHJldHVybiBmYWxzZTsgfQogICAgIHN0YXRpYyBWYWx1ZVR5cGUgY3JlYXRl
VmFsdWVGb3JOdWxsS2V5KCkgeyByZXR1cm4geyB9OyB9CiAgICAgc3RhdGljIFZhbHVlVHlwZSBj
cmVhdGVWYWx1ZUZvcktleShjb25zdCBLZXlUeXBlJikgeyByZXR1cm4geyB9OyB9CisgICAgc3Rh
dGljIEtleVR5cGUgY3JlYXRlS2V5Rm9yU3RvcmFnZShjb25zdCBLZXlUeXBlJiBrZXkpIHsgcmV0
dXJuIGtleTsgfQogfTsKIAogdGVtcGxhdGU8dHlwZW5hbWUgS2V5VHlwZSwgdHlwZW5hbWUgVmFs
dWVUeXBlLCBzaXplX3QgY2FwYWNpdHkgPSA0LCB0eXBlbmFtZSBQb2xpY3kgPSBUaW55TFJVQ2Fj
aGVQb2xpY3k8S2V5VHlwZSwgVmFsdWVUeXBlPj4KQEAgLTY2LDcgKzY3LDcgQEAgcHVibGljOgog
ICAgICAgICBpZiAobV9jYWNoZS5zaXplKCkgPT0gY2FwYWNpdHkpCiAgICAgICAgICAgICBtX2Nh
Y2hlLnJlbW92ZSgwKTsKIAotICAgICAgICBtX2NhY2hlLmFwcGVuZChzdGQ6Om1ha2VfcGFpcihr
ZXksIFBvbGljeTo6Y3JlYXRlVmFsdWVGb3JLZXkoa2V5KSkpOworICAgICAgICBtX2NhY2hlLmFw
cGVuZChzdGQ6Om1ha2VfcGFpcihQb2xpY3k6OmNyZWF0ZUtleUZvclN0b3JhZ2Uoa2V5KSwgUG9s
aWN5OjpjcmVhdGVWYWx1ZUZvcktleShrZXkpKSk7CiAgICAgICAgIHJldHVybiBtX2NhY2hlLmxh
c3QoKS5zZWNvbmQ7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9JbWFnZUJ1ZmZlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvSW1hZ2VCdWZmZXIuaAppbmRleCA0MjVhMzJlYTQ0OWMwZWQ1MjI2Y2M1ODk3ZDljYzE2Yjc4
NjIwZmRiLi4zNmQ3NGNhMzlkZTE3Y2QwM2MxM2JiNzVlNGQ1ZTM4NDhjMzNlY2ZlIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlci5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyLmgKQEAgLTQyLDcg
KzQyLDcgQEAgY2xhc3MgRHJhd2luZ0NvbnRleHQ7CiBzdHJ1Y3QgSXRlbUJ1ZmZlckhhbmRsZTsK
IH0KIAotY2xhc3MgSW1hZ2VCdWZmZXIgOiBwdWJsaWMgUmVmQ291bnRlZDxJbWFnZUJ1ZmZlcj4s
IHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxJbWFnZUJ1ZmZlcj4geworY2xhc3MgSW1hZ2VCdWZmZXIg
OiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8SW1hZ2VCdWZmZXI+LCBwdWJsaWMgQ2FuTWFr
ZVdlYWtQdHI8SW1hZ2VCdWZmZXI+IHsKIHB1YmxpYzoKICAgICAvLyBXaWxsIHJldHVybiBhIG51
bGwgcG9pbnRlciBvbiBhbGxvY2F0aW9uIGZhaWx1cmUuCiAgICAgV0VCQ09SRV9FWFBPUlQgc3Rh
dGljIFJlZlB0cjxJbWFnZUJ1ZmZlcj4gY3JlYXRlKGNvbnN0IEZsb2F0U2l6ZSYsIFJlbmRlcmlu
Z01vZGUsIFNob3VsZFVzZURpc3BsYXlMaXN0LCBSZW5kZXJpbmdQdXJwb3NlLCBmbG9hdCByZXNv
bHV0aW9uU2NhbGUgPSAxLCBDb2xvclNwYWNlID0gQ29sb3JTcGFjZTo6U1JHQiwgUGl4ZWxGb3Jt
YXQgPSBQaXhlbEZvcm1hdDo6QkdSQTgsIGNvbnN0IEhvc3RXaW5kb3cqID0gbnVsbHB0cik7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuaAppbmRleCA4
N2EzZWM3MWRiYWMxZDYzNDI3NGY5YThkMzg0MWJjNWFmNDJlZWU2Li4yNmM3NjMxOTg0OTIyOWYw
YzFhNTQyMTJlYzk2MjExYWViYjRlYmRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL01lZGlhUGxheWVyLmgKQEAgLTUxLDYgKzUxLDcgQEAKICNpbmNsdWRlIDx3dGYv
SGFzaFNldC5oPgogI2luY2x1ZGUgPHd0Zi9Mb2dnZXIuaD4KICNpbmNsdWRlIDx3dGYvTWVkaWFU
aW1lLmg+CisjaW5jbHVkZSA8d3RmL1RocmVhZFNhZmVSZWZDb3VudGVkLmg+CiAjaW5jbHVkZSA8
d3RmL1dhbGxUaW1lLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nSGFzaC5oPgogCkBAIC0y
ODIsNyArMjgzLDcgQEAgcHVibGljOgogI2VuZGlmCiB9OwogCi1jbGFzcyBXRUJDT1JFX0VYUE9S
VCBNZWRpYVBsYXllciA6IHB1YmxpYyBNZWRpYVBsYXllckVudW1zLCBwdWJsaWMgUmVmQ291bnRl
ZDxNZWRpYVBsYXllcj4geworY2xhc3MgV0VCQ09SRV9FWFBPUlQgTWVkaWFQbGF5ZXIgOiBwdWJs
aWMgTWVkaWFQbGF5ZXJFbnVtcywgcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPE1lZGlhUGxh
eWVyLCBXVEY6OkRlc3RydWN0aW9uVGhyZWFkOjpNYWluPiB7CiAgICAgV1RGX01BS0VfTk9OQ09Q
WUFCTEUoTWVkaWFQbGF5ZXIpOyBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAg
ICBzdGF0aWMgUmVmPE1lZGlhUGxheWVyPiBjcmVhdGUoTWVkaWFQbGF5ZXJDbGllbnQmKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1NoYWRvd0JsdXIuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvU2hhZG93Qmx1ci5jcHAKaW5kZXgg
ODMzODliYTY4MDU2Mzc3Zjk5ZjBmNWExY2QzMDdiZjZjZjkxZDgyYS4uYWMxNDZkOTk1NzA5NWIy
N2ZiZDc4MDcxMWVjOGI5MDcyNWEyZmJlZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvU2hhZG93Qmx1ci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvU2hhZG93Qmx1ci5jcHAKQEAgLTM2LDkgKzM2LDExIEBACiAjaW5jbHVkZSAi
SW1hZ2VCdWZmZXIuaCIKICNpbmNsdWRlICJJbWFnZURhdGEuaCIKICNpbmNsdWRlICJUaW1lci5o
IgorI2luY2x1ZGUgPHd0Zi9Mb2NrLmg+CiAjaW5jbHVkZSA8d3RmL01hdGhFeHRyYXMuaD4KICNp
bmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KICNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUu
aD4KKyNpbmNsdWRlIDx3dGYvUnVuTG9vcC5oPgogI2luY2x1ZGUgPHd0Zi9TY29wZS5oPgogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CkBAIC02MSwyMyArNjMsMjEgQEAgY2xhc3MgU2NyYXRjaEJ1ZmZl
ciB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgU2NyYXRjaEJ1
ZmZlcigpCi0gICAgICAgIDogbV9wdXJnZVRpbWVyKCp0aGlzLCAmU2NyYXRjaEJ1ZmZlcjo6Y2xl
YXJTY3JhdGNoQnVmZmVyKQotICAgICAgICAsIG1fbGFzdFdhc0luc2V0KGZhbHNlKQotI2lmIEFT
U0VSVF9FTkFCTEVECi0gICAgICAgICwgbV9idWZmZXJJblVzZShmYWxzZSkKLSNlbmRpZgorICAg
ICAgICA6IG1fcHVyZ2VUaW1lcihSdW5Mb29wOjptYWluKCksIHRoaXMsICZTY3JhdGNoQnVmZmVy
OjpwdXJnZVRpbWVyRmlyZWQpCiAgICAgewogICAgIH0KIAotICAgIEltYWdlQnVmZmVyKiBnZXRT
Y3JhdGNoQnVmZmVyKGNvbnN0IEludFNpemUmIHNpemUpCisgICAgUmVmUHRyPEltYWdlQnVmZmVy
PiBnZXRTY3JhdGNoQnVmZmVyKGNvbnN0IEludFNpemUmIHNpemUpCiAgICAgewotICAgICAgICBB
U1NFUlQoIW1fYnVmZmVySW5Vc2UpOwotI2lmIEFTU0VSVF9FTkFCTEVECi0gICAgICAgIG1fYnVm
ZmVySW5Vc2UgPSB0cnVlOwotI2VuZGlmCisgICAgICAgIEFTU0VSVChsb2NrKCkuaXNIZWxkKCkp
OworICAgICAgICBhdXRvIHJlbGVhc2VMYXllckltYWdlID0gbWFrZVNjb3BlRXhpdChbdGhpc10g
eworICAgICAgICAgICAgaWYgKG1faW1hZ2VCdWZmZXIpCisgICAgICAgICAgICAgICAgc2NoZWR1
bGVTY3JhdGNoQnVmZmVyUHVyZ2UoKTsKKyAgICAgICAgfSk7CisKICAgICAgICAgLy8gV2UgZG8g
bm90IG5lZWQgdG8gcmVjcmVhdGUgdGhlIGJ1ZmZlciBpZiB0aGUgY3VycmVudCBidWZmZXIgaXMg
bGFyZ2UgZW5vdWdoLgogICAgICAgICBpZiAobV9pbWFnZUJ1ZmZlciAmJiBtX2ltYWdlQnVmZmVy
LT5sb2dpY2FsU2l6ZSgpLndpZHRoKCkgPj0gc2l6ZS53aWR0aCgpICYmIG1faW1hZ2VCdWZmZXIt
PmxvZ2ljYWxTaXplKCkuaGVpZ2h0KCkgPj0gc2l6ZS5oZWlnaHQoKSkKLSAgICAgICAgICAgIHJl
dHVybiBtX2ltYWdlQnVmZmVyLmdldCgpOworICAgICAgICAgICAgcmV0dXJuIG1faW1hZ2VCdWZm
ZXI7CiAKICAgICAgICAgLy8gUm91bmQgdG8gdGhlIG5lYXJlc3QgMzIgcGl4ZWxzIHNvIHdlIGRv
IG5vdCBncm93IHRoZSBidWZmZXIgZm9yIHNpbWlsYXIgc2l6ZWQgcmVxdWVzdHMuCiAgICAgICAg
IEludFNpemUgcm91bmRlZFNpemUocm91bmRVcFRvTXVsdGlwbGVPZjMyKHNpemUud2lkdGgoKSks
IHJvdW5kVXBUb011bHRpcGxlT2YzMihzaXplLmhlaWdodCgpKSk7CkBAIC04NiwxMSArODYsMTIg
QEAgcHVibGljOgogCiAgICAgICAgIC8vIFNoYWRvd0JsdXIgaXMgbm90IHVzZWQgd2l0aCBhY2Nl
bGVyYXRlZCBkcmF3aW5nLCBzbyBpdCdzIE9LIHRvIG1ha2UgYW4gdW5jb25kaXRpb25hbGx5IHVu
YWNjZWxlcmF0ZWQgYnVmZmVyLgogICAgICAgICBtX2ltYWdlQnVmZmVyID0gSW1hZ2VCdWZmZXI6
OmNyZWF0ZShyb3VuZGVkU2l6ZSwgUmVuZGVyaW5nTW9kZTo6VW5hY2NlbGVyYXRlZCwgMSk7Ci0g
ICAgICAgIHJldHVybiBtX2ltYWdlQnVmZmVyLmdldCgpOworICAgICAgICByZXR1cm4gbV9pbWFn
ZUJ1ZmZlcjsKICAgICB9CiAKICAgICBib29sIHNldENhY2hlZFNoYWRvd1ZhbHVlcyhjb25zdCBG
bG9hdFNpemUmIHJhZGl1cywgY29uc3QgQ29sb3ImIGNvbG9yLCBjb25zdCBGbG9hdFJlY3QmIHNo
YWRvd1JlY3QsIGNvbnN0IEZsb2F0Um91bmRlZFJlY3Q6OlJhZGlpJiByYWRpaSwgY29uc3QgRmxv
YXRTaXplJiBsYXllclNpemUpCiAgICAgeworICAgICAgICBBU1NFUlQobG9jaygpLmlzSGVsZCgp
KTsKICAgICAgICAgaWYgKCFtX2xhc3RXYXNJbnNldCAmJiBtX2xhc3RSYWRpdXMgPT0gcmFkaXVz
ICYmIG1fbGFzdENvbG9yID09IGNvbG9yICYmIG1fbGFzdFNoYWRvd1JlY3QgPT0gc2hhZG93UmVj
dCAmJiAgbV9sYXN0UmFkaWkgPT0gcmFkaWkgJiYgbV9sYXN0TGF5ZXJTaXplID09IGxheWVyU2l6
ZSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKIApAQCAtMTA2LDYgKzEwNyw3IEBAIHB1Ymxp
YzoKIAogICAgIGJvb2wgc2V0Q2FjaGVkSW5zZXRTaGFkb3dWYWx1ZXMoY29uc3QgRmxvYXRTaXpl
JiByYWRpdXMsIGNvbnN0IENvbG9yJiBjb2xvciwgY29uc3QgRmxvYXRSZWN0JiBib3VuZHMsIGNv
bnN0IEZsb2F0UmVjdCYgc2hhZG93UmVjdCwgY29uc3QgRmxvYXRSb3VuZGVkUmVjdDo6UmFkaWkm
IHJhZGlpKQogICAgIHsKKyAgICAgICAgQVNTRVJUKGxvY2soKS5pc0hlbGQoKSk7CiAgICAgICAg
IGlmIChtX2xhc3RXYXNJbnNldCAmJiBtX2xhc3RSYWRpdXMgPT0gcmFkaXVzICYmIG1fbGFzdENv
bG9yID09IGNvbG9yICYmIG1fbGFzdEluc2V0Qm91bmRzID09IGJvdW5kcyAmJiBzaGFkb3dSZWN0
ID09IG1fbGFzdFNoYWRvd1JlY3QgJiYgcmFkaWkgPT0gbV9sYXN0UmFkaWkpCiAgICAgICAgICAg
ICByZXR1cm4gZmFsc2U7CiAKQEAgLTExOSw1MCArMTIxLDU3IEBAIHB1YmxpYzoKICAgICAgICAg
cmV0dXJuIHRydWU7CiAgICAgfQogCisgICAgc3RhdGljIFNjcmF0Y2hCdWZmZXImIHNpbmdsZXRv
bigpOworICAgIHN0YXRpYyBMb2NrJiBsb2NrKCk7CisKK3ByaXZhdGU6CiAgICAgdm9pZCBzY2hl
ZHVsZVNjcmF0Y2hCdWZmZXJQdXJnZSgpCiAgICAgewotI2lmIEFTU0VSVF9FTkFCTEVECi0gICAg
ICAgIG1fYnVmZmVySW5Vc2UgPSBmYWxzZTsKLSNlbmRpZgotICAgICAgICBpZiAobV9wdXJnZVRp
bWVyLmlzQWN0aXZlKCkpCi0gICAgICAgICAgICBtX3B1cmdlVGltZXIuc3RvcCgpOwotCisgICAg
ICAgIEFTU0VSVChsb2NrKCkuaXNIZWxkKCkpOwogICAgICAgICBjb25zdCBTZWNvbmRzIHNjcmF0
Y2hCdWZmZXJQdXJnZUludGVydmFsIHsgMl9zIH07CiAgICAgICAgIG1fcHVyZ2VUaW1lci5zdGFy
dE9uZVNob3Qoc2NyYXRjaEJ1ZmZlclB1cmdlSW50ZXJ2YWwpOwogICAgIH0KIAotICAgIHN0YXRp
YyBTY3JhdGNoQnVmZmVyJiBzaW5nbGV0b24oKTsKKyAgICB2b2lkIHB1cmdlVGltZXJGaXJlZCgp
CisgICAgeworICAgICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworICAgICAgICBpZiAoYXV0
byBsb2NrZXIgPSB0cnlIb2xkTG9jayhsb2NrKCkpKQorICAgICAgICAgICAgY2xlYXJTY3JhdGNo
QnVmZmVyKCk7CisgICAgfQogCi1wcml2YXRlOgogICAgIHZvaWQgY2xlYXJTY3JhdGNoQnVmZmVy
KCkKICAgICB7CisgICAgICAgIEFTU0VSVChsb2NrKCkuaXNIZWxkKCkpOwogICAgICAgICBtX2lt
YWdlQnVmZmVyID0gbnVsbHB0cjsKICAgICAgICAgbV9sYXN0UmFkaXVzID0gRmxvYXRTaXplKCk7
CiAgICAgICAgIG1fbGFzdExheWVyU2l6ZSA9IEZsb2F0U2l6ZSgpOwogICAgIH0KIAogICAgIFJl
ZlB0cjxJbWFnZUJ1ZmZlcj4gbV9pbWFnZUJ1ZmZlcjsKLSAgICBUaW1lciBtX3B1cmdlVGltZXI7
CisgICAgUnVuTG9vcDo6VGltZXI8U2NyYXRjaEJ1ZmZlcj4gbV9wdXJnZVRpbWVyOwogCiAgICAg
RmxvYXRSZWN0IG1fbGFzdEluc2V0Qm91bmRzOwogICAgIEZsb2F0UmVjdCBtX2xhc3RTaGFkb3dS
ZWN0OwogICAgIEZsb2F0Um91bmRlZFJlY3Q6OlJhZGlpIG1fbGFzdFJhZGlpOwogICAgIENvbG9y
IG1fbGFzdENvbG9yOwogICAgIEZsb2F0U2l6ZSBtX2xhc3RSYWRpdXM7Ci0gICAgYm9vbCBtX2xh
c3RXYXNJbnNldDsKKyAgICBib29sIG1fbGFzdFdhc0luc2V0IHsgZmFsc2UgfTsKICAgICBGbG9h
dFNpemUgbV9sYXN0TGF5ZXJTaXplOwotCi0jaWYgQVNTRVJUX0VOQUJMRUQKLSAgICBib29sIG1f
YnVmZmVySW5Vc2U7Ci0jZW5kaWYKIH07CiAKIFNjcmF0Y2hCdWZmZXImIFNjcmF0Y2hCdWZmZXI6
OnNpbmdsZXRvbigpCiB7CisgICAgQVNTRVJUKGxvY2soKS5pc0hlbGQoKSk7CiAgICAgc3RhdGlj
IE5ldmVyRGVzdHJveWVkPFNjcmF0Y2hCdWZmZXI+IHNjcmF0Y2hCdWZmZXI7CiAgICAgcmV0dXJu
IHNjcmF0Y2hCdWZmZXI7CiB9CiAKK0xvY2smIFNjcmF0Y2hCdWZmZXI6OmxvY2soKQoreworICAg
IHN0YXRpYyBMb2NrIGxvY2s7CisgICAgcmV0dXJuIGxvY2s7Cit9CisKIHN0YXRpYyBmbG9hdCBy
YWRpdXNUb0xlZ2FjeVJhZGl1cyhmbG9hdCByYWRpdXMpCiB7CiAgICAgcmV0dXJuIHJhZGl1cyA+
IDggPyA4ICsgNCAqIHNxcnQoKHJhZGl1cyAtIDgpIC8gMikgOiByYWRpdXM7CkBAIC02ODMsMjYg
KzY5MiwzMiBAQCB2b2lkIFNoYWRvd0JsdXI6OmRyYXdJbnNldFNoYWRvd1dpdGhvdXRUaWxpbmco
Y29uc3QgQWZmaW5lVHJhbnNmb3JtJiwgY29uc3QgRmxvYQogCiB2b2lkIFNoYWRvd0JsdXI6OmRy
YXdSZWN0U2hhZG93V2l0aFRpbGluZyhjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIHRyYW5zZm9ybSwg
Y29uc3QgRmxvYXRSb3VuZGVkUmVjdCYgc2hhZG93ZWRSZWN0LCBjb25zdCBJbnRTaXplJiB0ZW1w
bGF0ZVNpemUsIGNvbnN0IEludFNpemUmIGVkZ2VTaXplLCBjb25zdCBEcmF3SW1hZ2VDYWxsYmFj
ayYgZHJhd0ltYWdlLCBjb25zdCBGaWxsUmVjdENhbGxiYWNrJiBmaWxsUmVjdCwgY29uc3QgTGF5
ZXJJbWFnZVByb3BlcnRpZXMmIGxheWVySW1hZ2VQcm9wZXJ0aWVzKQogeworICAgIFJlZlB0cjxJ
bWFnZUJ1ZmZlcj4gbGF5ZXJJbWFnZUJ1ZmZlcjsKICNpZiBVU0UoQ0cpCi0gICAgYXV0byogbGF5
ZXJJbWFnZSA9IFNjcmF0Y2hCdWZmZXI6OnNpbmdsZXRvbigpLmdldFNjcmF0Y2hCdWZmZXIodGVt
cGxhdGVTaXplKTsKLSAgICBhdXRvIHJlbGVhc2VMYXllckltYWdlID0gbWFrZVNjb3BlRXhpdChb
XSB7Ci0gICAgICAgIFNjcmF0Y2hCdWZmZXI6OnNpbmdsZXRvbigpLnNjaGVkdWxlU2NyYXRjaEJ1
ZmZlclB1cmdlKCk7Ci0gICAgfSk7CisgICAgYXV0byBsb2NrZXIgPSB0cnlIb2xkTG9jayhTY3Jh
dGNoQnVmZmVyOjpsb2NrKCkpOworICAgIGlmIChsb2NrZXIpIHsKKyAgICAgICAgbGF5ZXJJbWFn
ZUJ1ZmZlciA9IFNjcmF0Y2hCdWZmZXI6OnNpbmdsZXRvbigpLmdldFNjcmF0Y2hCdWZmZXIodGVt
cGxhdGVTaXplKTsKKyAgICAgICAgaWYgKCFsYXllckltYWdlQnVmZmVyKQorICAgICAgICAgICAg
cmV0dXJuOworICAgIH0KICNlbHNlCiAgICAgVU5VU0VEX1BBUkFNKGxheWVySW1hZ2VQcm9wZXJ0
aWVzKTsKLSAgICBhdXRvIGxheWVySW1hZ2VCdWZmZXIgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKHRl
bXBsYXRlU2l6ZSwgUmVuZGVyaW5nTW9kZTo6VW5hY2NlbGVyYXRlZCwgMSk7Ci0gICAgYXV0byog
bGF5ZXJJbWFnZSA9IGxheWVySW1hZ2VCdWZmZXIuZ2V0KCk7CiAjZW5kaWYKIAotICAgIGlmICgh
bGF5ZXJJbWFnZSkKLSAgICAgICAgcmV0dXJuOworICAgIGlmICghbGF5ZXJJbWFnZUJ1ZmZlcikg
eworICAgICAgICBsYXllckltYWdlQnVmZmVyID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZSh0ZW1wbGF0
ZVNpemUsIFJlbmRlcmluZ01vZGU6OlVuYWNjZWxlcmF0ZWQsIDEpOworICAgICAgICBpZiAoIWxh
eWVySW1hZ2VCdWZmZXIpCisgICAgICAgICAgICByZXR1cm47CisgICAgfQorICAgIGF1dG8qIGxh
eWVySW1hZ2UgPSBsYXllckltYWdlQnVmZmVyLmdldCgpOwogCiAgICAgRmxvYXRSZWN0IHRlbXBs
YXRlU2hhZG93ID0gRmxvYXRSZWN0KGVkZ2VTaXplLndpZHRoKCksIGVkZ2VTaXplLmhlaWdodCgp
LCB0ZW1wbGF0ZVNpemUud2lkdGgoKSAtIDIgKiBlZGdlU2l6ZS53aWR0aCgpLCB0ZW1wbGF0ZVNp
emUuaGVpZ2h0KCkgLSAyICogZWRnZVNpemUuaGVpZ2h0KCkpOwogCiAgICAgYm9vbCByZWRyYXdO
ZWVkZWQgPSB0cnVlOwogI2lmIFVTRShDRykKICAgICAvLyBPbmx5IHJlZHJhdyBpbiB0aGUgc2Ny
YXRjaCBidWZmZXIgaWYgaXRzIGNhY2hlZCBjb250ZW50cyBkb24ndCBtYXRjaCBvdXIgbmVlZHMK
LSAgICByZWRyYXdOZWVkZWQgPSBTY3JhdGNoQnVmZmVyOjpzaW5nbGV0b24oKS5zZXRDYWNoZWRT
aGFkb3dWYWx1ZXMobV9ibHVyUmFkaXVzLCBtX2NvbG9yLCB0ZW1wbGF0ZVNoYWRvdywgc2hhZG93
ZWRSZWN0LnJhZGlpKCksIGxheWVySW1hZ2VQcm9wZXJ0aWVzLmxheWVyU2l6ZSk7CisgICAgaWYg
KGxvY2tlcikKKyAgICAgICAgcmVkcmF3TmVlZGVkID0gU2NyYXRjaEJ1ZmZlcjo6c2luZ2xldG9u
KCkuc2V0Q2FjaGVkU2hhZG93VmFsdWVzKG1fYmx1clJhZGl1cywgbV9jb2xvciwgdGVtcGxhdGVT
aGFkb3csIHNoYWRvd2VkUmVjdC5yYWRpaSgpLCBsYXllckltYWdlUHJvcGVydGllcy5sYXllclNp
emUpOwogI2VuZGlmCiAKICAgICBpZiAocmVkcmF3TmVlZGVkKSB7CkBAIC03MzcsMTggKzc1Miwy
MiBAQCB2b2lkIFNoYWRvd0JsdXI6OmRyYXdSZWN0U2hhZG93V2l0aFRpbGluZyhjb25zdCBBZmZp
bmVUcmFuc2Zvcm0mIHRyYW5zZm9ybSwgY29ucwogCiB2b2lkIFNoYWRvd0JsdXI6OmRyYXdJbnNl
dFNoYWRvd1dpdGhUaWxpbmcoY29uc3QgQWZmaW5lVHJhbnNmb3JtJiB0cmFuc2Zvcm0sIGNvbnN0
IEZsb2F0UmVjdCYgZnVsbFJlY3QsIGNvbnN0IEZsb2F0Um91bmRlZFJlY3QmIGhvbGVSZWN0LCBj
b25zdCBJbnRTaXplJiB0ZW1wbGF0ZVNpemUsIGNvbnN0IEludFNpemUmIGVkZ2VTaXplLCBjb25z
dCBEcmF3SW1hZ2VDYWxsYmFjayYgZHJhd0ltYWdlLCBjb25zdCBGaWxsUmVjdFdpdGhIb2xlQ2Fs
bGJhY2smIGZpbGxSZWN0V2l0aEhvbGUpCiB7CisgICAgUmVmUHRyPEltYWdlQnVmZmVyPiBsYXll
ckltYWdlQnVmZmVyOwogI2lmIFVTRShDRykKLSAgICBhdXRvKiBsYXllckltYWdlID0gU2NyYXRj
aEJ1ZmZlcjo6c2luZ2xldG9uKCkuZ2V0U2NyYXRjaEJ1ZmZlcih0ZW1wbGF0ZVNpemUpOwotICAg
IGF1dG8gcmVsZWFzZUxheWVySW1hZ2UgPSBtYWtlU2NvcGVFeGl0KFtdIHsKLSAgICAgICAgU2Ny
YXRjaEJ1ZmZlcjo6c2luZ2xldG9uKCkuc2NoZWR1bGVTY3JhdGNoQnVmZmVyUHVyZ2UoKTsKLSAg
ICB9KTsKLSNlbHNlCi0gICAgYXV0byBsYXllckltYWdlQnVmZmVyID0gSW1hZ2VCdWZmZXI6OmNy
ZWF0ZSh0ZW1wbGF0ZVNpemUsIFJlbmRlcmluZ01vZGU6OlVuYWNjZWxlcmF0ZWQsIDEpOwotICAg
IGF1dG8qIGxheWVySW1hZ2UgPSBsYXllckltYWdlQnVmZmVyLmdldCgpOworICAgIGF1dG8gbG9j
a2VyID0gdHJ5SG9sZExvY2soU2NyYXRjaEJ1ZmZlcjo6bG9jaygpKTsKKyAgICBpZiAobG9ja2Vy
KSB7CisgICAgICAgIGxheWVySW1hZ2VCdWZmZXIgPSBTY3JhdGNoQnVmZmVyOjpzaW5nbGV0b24o
KS5nZXRTY3JhdGNoQnVmZmVyKHRlbXBsYXRlU2l6ZSk7CisgICAgICAgIGlmICghbGF5ZXJJbWFn
ZUJ1ZmZlcikKKyAgICAgICAgICAgIHJldHVybjsKKyAgICB9CiAjZW5kaWYKIAotICAgIGlmICgh
bGF5ZXJJbWFnZSkKLSAgICAgICAgcmV0dXJuOworICAgIGlmICghbGF5ZXJJbWFnZUJ1ZmZlcikg
eworICAgICAgICBsYXllckltYWdlQnVmZmVyID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZSh0ZW1wbGF0
ZVNpemUsIFJlbmRlcmluZ01vZGU6OlVuYWNjZWxlcmF0ZWQsIDEpOworICAgICAgICBpZiAoIWxh
eWVySW1hZ2VCdWZmZXIpCisgICAgICAgICAgICByZXR1cm47CisgICAgfQorICAgIGF1dG8qIGxh
eWVySW1hZ2UgPSBsYXllckltYWdlQnVmZmVyLmdldCgpOwogCiAgICAgLy8gRHJhdyB0aGUgcmVj
dGFuZ2xlIHdpdGggaG9sZS4KICAgICBGbG9hdFJlY3QgdGVtcGxhdGVCb3VuZHMoMCwgMCwgdGVt
cGxhdGVTaXplLndpZHRoKCksIHRlbXBsYXRlU2l6ZS5oZWlnaHQoKSk7CkBAIC03NTcsNyArNzc2
LDggQEAgdm9pZCBTaGFkb3dCbHVyOjpkcmF3SW5zZXRTaGFkb3dXaXRoVGlsaW5nKGNvbnN0IEFm
ZmluZVRyYW5zZm9ybSYgdHJhbnNmb3JtLCBjb24KICAgICBib29sIHJlZHJhd05lZWRlZCA9IHRy
dWU7CiAjaWYgVVNFKENHKQogICAgIC8vIE9ubHkgcmVkcmF3IGluIHRoZSBzY3JhdGNoIGJ1ZmZl
ciBpZiBpdHMgY2FjaGVkIGNvbnRlbnRzIGRvbid0IG1hdGNoIG91ciBuZWVkcwotICAgIHJlZHJh
d05lZWRlZCA9IFNjcmF0Y2hCdWZmZXI6OnNpbmdsZXRvbigpLnNldENhY2hlZEluc2V0U2hhZG93
VmFsdWVzKG1fYmx1clJhZGl1cywgbV9jb2xvciwgdGVtcGxhdGVCb3VuZHMsIHRlbXBsYXRlSG9s
ZSwgaG9sZVJlY3QucmFkaWkoKSk7CisgICAgaWYgKGxvY2tlcikKKyAgICAgICAgcmVkcmF3TmVl
ZGVkID0gU2NyYXRjaEJ1ZmZlcjo6c2luZ2xldG9uKCkuc2V0Q2FjaGVkSW5zZXRTaGFkb3dWYWx1
ZXMobV9ibHVyUmFkaXVzLCBtX2NvbG9yLCB0ZW1wbGF0ZUJvdW5kcywgdGVtcGxhdGVIb2xlLCBo
b2xlUmVjdC5yYWRpaSgpKTsKICNlbmRpZgogCiAgICAgaWYgKHJlZHJhd05lZWRlZCkgewpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJV
dGlsaXRpZXNDRy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFn
ZUJ1ZmZlclV0aWxpdGllc0NHLmNwcAppbmRleCBiMzc3ZjA0ODMyYzk3YTU2MmNjNmRhNDJhNjgw
Mzc5ZDExODZhNDNmLi5mMTQ2ZjM1NzNmMWZlZjk1ZDc5MzcwZTZlZWY1YzZmYjJhNzljYTljIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZl
clV0aWxpdGllc0NHLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
Zy9JbWFnZUJ1ZmZlclV0aWxpdGllc0NHLmNwcApAQCAtNjksMTIgKzY5LDE2IEBAIEFMTE9XX0RF
UFJFQ0FURURfREVDTEFSQVRJT05TX0JFR0lOCiAjaWYgUExBVEZPUk0oTUFDKQogICAgIHJldHVy
biBVVElGcm9tTUlNRVR5cGUobWltZVR5cGUpLmNyZWF0ZUNGU3RyaW5nKCk7CiAjZWxzZQotICAg
IEFTU0VSVChpc01haW5UaHJlYWQoKSk7IC8vIEl0IGlzIHVuY2xlYXIgaWYgQ0ZTVFIgaXMgdGhy
ZWFkc2FmZS4KLQogICAgIC8vIEZJWE1FOiBBZGQgV2luZG93cyBzdXBwb3J0IGZvciBhbGwgdGhl
IHN1cHBvcnRlZCBVVElzIHdoZW4gYSB3YXkgdG8gY29udmVydCBmcm9tIE1JTUVUeXBlIHRvIFVU
SSByZWxpYWJseSBpcyBmb3VuZC4KICAgICAvLyBGb3Igbm93LCBvbmx5IHN1cHBvcnQgUE5HLCBK
UEVHLCBhbmQgR0lGLiBTZWUgPHJkYXI6Ly9wcm9ibGVtLzYwOTUyODY+LgotICAgIHN0YXRpYyBj
b25zdCBDRlN0cmluZ1JlZiBrVVRUeXBlUE5HID0gQ0ZTVFIoInB1YmxpYy5wbmciKTsKLSAgICBz
dGF0aWMgY29uc3QgQ0ZTdHJpbmdSZWYga1VUVHlwZUdJRiA9IENGU1RSKCJjb20uY29tcHVzZXJ2
ZS5naWYiKTsKKyAgICBzdGF0aWMgQ0ZTdHJpbmdSZWYga1VUVHlwZVBORzsKKyAgICBzdGF0aWMg
Q0ZTdHJpbmdSZWYga1VUVHlwZUdJRjsKKworICAgIHN0YXRpYyBzdGQ6Om9uY2VfZmxhZyBvbmNl
S2V5OworICAgIHN0ZDo6Y2FsbF9vbmNlKG9uY2VLZXksIFsmXSB7CisgICAgICAgIGtVVFR5cGVQ
TkcgPSBDRlNUUigicHVibGljLnBuZyIpOworICAgICAgICBrVVRUeXBlR0lGID0gQ0ZTVFIoImNv
bS5jb21wdXNlcnZlLmdpZiIpOworICAgIH0pOwogCiAgICAgaWYgKGVxdWFsTGV0dGVyc0lnbm9y
aW5nQVNDSUlDYXNlKG1pbWVUeXBlLCAiaW1hZ2UvcG5nIikpCiAgICAgICAgIHJldHVybiBrVVRU
eXBlUE5HOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cv
U3ViaW1hZ2VDYWNoZVdpdGhUaW1lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jZy9TdWJpbWFnZUNhY2hlV2l0aFRpbWVyLmNwcAppbmRleCBiMDcwMjY4NTZkNTNmMWI2
M2FhODg4NWZiMWU0MTEzMzAzN2NmZWMzLi5mM2M1YWY3YTZkZTU5ZWViNGNjNDFmZjY5ZTIzYWEw
NTFlZGJlNWE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
Zy9TdWJpbWFnZUNhY2hlV2l0aFRpbWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jZy9TdWJpbWFnZUNhY2hlV2l0aFRpbWVyLmNwcApAQCAtODMsMTIgKzgzLDEz
IEBAIHN0cnVjdCBTdWJpbWFnZUNhY2hlQWRkZXIgewogfTsKIAogU3ViaW1hZ2VDYWNoZVdpdGhU
aW1lcjo6U3ViaW1hZ2VDYWNoZVdpdGhUaW1lcigpCi0gICAgOiBtX3RpbWVyKCp0aGlzLCAmU3Vi
aW1hZ2VDYWNoZVdpdGhUaW1lcjo6cHJ1bmVDYWNoZVRpbWVyRmlyZWQpCisgICAgOiBtX3RpbWVy
KFJ1bkxvb3A6Om1haW4oKSwgdGhpcywgJlN1YmltYWdlQ2FjaGVXaXRoVGltZXI6OnBydW5lQ2Fj
aGVUaW1lckZpcmVkKQogewogfQogCiB2b2lkIFN1YmltYWdlQ2FjaGVXaXRoVGltZXI6OnBydW5l
Q2FjaGVUaW1lckZpcmVkKCkKIHsKKyAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKG1fbG9jayk7
CiAgICAgcHJ1bmUoKTsKICAgICBpZiAobV9jYWNoZS5pc0VtcHR5KCkpIHsKICAgICAgICAgQVNT
RVJUKG1faW1hZ2VDb3VudHMuaXNFbXB0eSgpKTsKQEAgLTExNSw2ICsxMTYsNyBAQCB2b2lkIFN1
YmltYWdlQ2FjaGVXaXRoVGltZXI6OnBydW5lKCkKIAogUmV0YWluUHRyPENHSW1hZ2VSZWY+IFN1
YmltYWdlQ2FjaGVXaXRoVGltZXI6OnN1YmltYWdlKENHSW1hZ2VSZWYgaW1hZ2UsIGNvbnN0IEZs
b2F0UmVjdCYgcmVjdCkKIHsKKyAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKG1fbG9jayk7CiAg
ICAgaWYgKCFtX3RpbWVyLmlzQWN0aXZlKCkpCiAgICAgICAgIG1fdGltZXIuc3RhcnRSZXBlYXRp
bmcoc3ViaW1hZ2VDYWNoZVBydW5lRGVsYXkpOwogCkBAIC0xMzUsNiArMTM3LDcgQEAgUmV0YWlu
UHRyPENHSW1hZ2VSZWY+IFN1YmltYWdlQ2FjaGVXaXRoVGltZXI6OnN1YmltYWdlKENHSW1hZ2VS
ZWYgaW1hZ2UsIGNvbnN0IEYKIAogdm9pZCBTdWJpbWFnZUNhY2hlV2l0aFRpbWVyOjpjbGVhcklt
YWdlQW5kU3ViaW1hZ2VzKENHSW1hZ2VSZWYgaW1hZ2UpCiB7CisgICAgYXV0byBsb2NrZXIgPSBo
b2xkTG9jayhtX2xvY2spOwogICAgIGlmIChtX2ltYWdlQ291bnRzLmNvbnRhaW5zKGltYWdlKSkg
ewogICAgICAgICBWZWN0b3I8U3ViaW1hZ2VDYWNoZUVudHJ5PiB0b0JlUmVtb3ZlZDsKICAgICAg
ICAgZm9yIChjb25zdCBhdXRvJiBlbnRyeSA6IG1fY2FjaGUpIHsKQEAgLTE1MSwxNCArMTU0LDE3
IEBAIHZvaWQgU3ViaW1hZ2VDYWNoZVdpdGhUaW1lcjo6Y2xlYXJJbWFnZUFuZFN1YmltYWdlcyhD
R0ltYWdlUmVmIGltYWdlKQogCiB2b2lkIFN1YmltYWdlQ2FjaGVXaXRoVGltZXI6OmNsZWFyQWxs
KCkKIHsKKyAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKG1fbG9jayk7CiAgICAgbV9pbWFnZUNv
dW50cy5jbGVhcigpOwogICAgIG1fY2FjaGUuY2xlYXIoKTsKIH0KIAogU3ViaW1hZ2VDYWNoZVdp
dGhUaW1lciYgU3ViaW1hZ2VDYWNoZVdpdGhUaW1lcjo6c3ViaW1hZ2VDYWNoZSgpCiB7Ci0gICAg
aWYgKCFzX2NhY2hlKQorICAgIHN0YXRpYyBzdGQ6Om9uY2VfZmxhZyBvbmNlS2V5OworICAgIHN0
ZDo6Y2FsbF9vbmNlKG9uY2VLZXksIFsmXSB7CiAgICAgICAgIHNfY2FjaGUgPSBuZXcgU3ViaW1h
Z2VDYWNoZVdpdGhUaW1lcjsKKyAgICB9KTsKICAgICByZXR1cm4gKnNfY2FjaGU7CiB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL1N1YmltYWdlQ2Fj
aGVXaXRoVGltZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL1N1Ymlt
YWdlQ2FjaGVXaXRoVGltZXIuaAppbmRleCA4Mjc0YmMyNDBlZDhmYTVlYjEyNDAwMGMyYjJkOGE5
MjU3OGI5MjliLi41YmYwNWQ0ZTE0MGVlNjJiMzMyMWU0ZGJlZjUxZGFjMWQxYjM0ZDk5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9TdWJpbWFnZUNhY2hl
V2l0aFRpbWVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvU3Vi
aW1hZ2VDYWNoZVdpdGhUaW1lci5oCkBAIC0zMiw3ICszMiw5IEBACiAjaW5jbHVkZSA8d3RmL0hh
c2hDb3VudGVkU2V0Lmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KICNpbmNsdWRlIDx3dGYv
SGFzaFRyYWl0cy5oPgorI2luY2x1ZGUgPHd0Zi9Mb2NrLmg+CiAjaW5jbHVkZSA8d3RmL1JldGFp
blB0ci5oPgorI2luY2x1ZGUgPHd0Zi9SdW5Mb29wLmg+CiAKICNkZWZpbmUgQ0FDSEVfU1VCSU1B
R0VTIDEKIApAQCAtOTUsOSArOTcsMTAgQEAgcHJpdmF0ZToKICAgICB2b2lkIHBydW5lKCk7CiAg
ICAgdm9pZCBjbGVhckFsbCgpOwogCisgICAgTG9jayBtX2xvY2s7CiAgICAgSGFzaENvdW50ZWRT
ZXQ8Q0dJbWFnZVJlZj4gbV9pbWFnZUNvdW50czsKICAgICBTdWJpbWFnZUNhY2hlSGFzaFNldCBt
X2NhY2hlOwotICAgIFRpbWVyIG1fdGltZXI7CisgICAgUnVuTG9vcDo6VGltZXI8U3ViaW1hZ2VD
YWNoZVdpdGhUaW1lcj4gbV90aW1lcjsKIAogICAgIHN0YXRpYyBTdWJpbWFnZUNhY2hlV2l0aFRp
bWVyJiBzdWJpbWFnZUNhY2hlKCk7CiAgICAgc3RhdGljIGJvb2wgc3ViaW1hZ2VDYWNoZUV4aXN0
cygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvVVRJ
VXRpbGl0aWVzLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvVVRJVXRp
bGl0aWVzLm1tCmluZGV4IDdhN2EzMTA3YmU3OWM0ODI0Y2VmZTJlMGFjM2UzNTQ2N2M5ZWExNjgu
LjcwYjQzOTNjNjM2MzcxOTZmOThjMDYzMmZhYjYxMTVkNzhhODFiY2MgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL1VUSVV0aWxpdGllcy5tbQorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9VVElVdGlsaXRpZXMubW0KQEAgLTI2
LDYgKzI2LDcgQEAKICNpbXBvcnQgImNvbmZpZy5oIgogI2ltcG9ydCAiVVRJVXRpbGl0aWVzLmgi
CiAKKyNpbXBvcnQgPHd0Zi9Mb2NrLmg+CiAjaW1wb3J0IDx3dGYvTWFpblRocmVhZC5oPgogI2lt
cG9ydCA8d3RmL1RpbnlMUlVDYWNoZS5oPgogI2ltcG9ydCA8d3RmL3RleHQvU3RyaW5nSGFzaC5o
PgpAQCAtODQsNTcgKzg1LDUyIEBAIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0VORAog
ICAgIHJldHVybiBlbXB0eVN0cmluZygpOwogfQogCi1zdGF0aWMgU3RyaW5nIFVUSUZyb21Vbmtu
b3duTUlNRVR5cGUoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSkKK3N0YXRpYyBDRlN0cmluZ1JlZiBV
VElGcm9tVW5rbm93bk1JTUVUeXBlKGNvbnN0IFN0cmluZyYgbWltZVR5cGUpCiB7CiAgICAgc3Rh
dGljIGNvbnN0IGF1dG8gbWFwID0gbWFrZU5ldmVyRGVzdHJveWVkKFtdIHsKLSAgICAgICAgc3Ry
dWN0IFR5cGVFeHRlbnNpb25QYWlyIHsKLSAgICAgICAgICAgIEFTQ0lJTGl0ZXJhbCB0eXBlOwot
ICAgICAgICAgICAgQVNDSUlMaXRlcmFsIHV0aTsKLSAgICAgICAgfTsKLQotICAgICAgICBzdGF0
aWMgY29uc3QgVHlwZUV4dGVuc2lvblBhaXIgcGFpcnNbXSA9IHsKLSAgICAgICAgICAgIHsgIm1v
ZGVsL3ZuZC51c2R6K3ppcCJfcywgImNvbS5waXhhci51bml2ZXJzYWwtc2NlbmUtZGVzY3JpcHRp
b24tbW9iaWxlIl9zIH0sCi0gICAgICAgICAgICB7ICJtb2RlbC91c2QiX3MsICJjb20ucGl4YXIu
dW5pdmVyc2FsLXNjZW5lLWRlc2NyaXB0aW9uLW1vYmlsZSJfcyB9LAotICAgICAgICAgICAgeyAi
bW9kZWwvdm5kLnBpeGFyLnVzZCJfcywgImNvbS5waXhhci51bml2ZXJzYWwtc2NlbmUtZGVzY3Jp
cHRpb24tbW9iaWxlIl9zIH0sCi0gICAgICAgICAgICB7ICJtb2RlbC92bmQucmVhbGl0eSJfcywg
ImNvbS5hcHBsZS5yZWFsaXR5Il9zIH0KLSAgICAgICAgfTsKLQotICAgICAgICBIYXNoTWFwPFN0
cmluZywgU3RyaW5nLCBBU0NJSUNhc2VJbnNlbnNpdGl2ZUhhc2g+IG1hcDsKLSAgICAgICAgZm9y
IChhdXRvJiBwYWlyIDogcGFpcnMpCi0gICAgICAgICAgICBtYXAuYWRkKHBhaXIudHlwZSwgcGFp
ci51dGkpOworICAgICAgICBIYXNoTWFwPFN0cmluZywgQ0ZTdHJpbmdSZWYsIEFTQ0lJQ2FzZUlu
c2Vuc2l0aXZlSGFzaD4gbWFwOworICAgICAgICBhdXRvIHBpeGFyTUlNRVR5cGUgPSBDRlNUUigi
Y29tLnBpeGFyLnVuaXZlcnNhbC1zY2VuZS1kZXNjcmlwdGlvbi1tb2JpbGUiKTsKKyAgICAgICAg
bWFwLmFkZCgibW9kZWwvdm5kLnVzZHoremlwIl9zLCBwaXhhck1JTUVUeXBlKTsKKyAgICAgICAg
bWFwLmFkZCgibW9kZWwvdXNkIl9zLCBwaXhhck1JTUVUeXBlKTsKKyAgICAgICAgbWFwLmFkZCgi
bW9kZWwvdm5kLnBpeGFyLnVzZCJfcywgcGl4YXJNSU1FVHlwZSk7CisgICAgICAgIG1hcC5hZGQo
Im1vZGVsL3ZuZC51c2R6K3ppcCJfcywgQ0ZTVFIoImNvbS5hcHBsZS5yZWFsaXR5IikpOwogICAg
ICAgICByZXR1cm4gbWFwOwogICAgIH0oKSk7CiAKKyAgICBzdGF0aWMgY29uc3QgQ0ZTdHJpbmdS
ZWYgZW1wdHlDRlN0cmluZyA9IENGU1RSKCIiKTsKICAgICBhdXRvIG1hcEVudHJ5ID0gbWFwLmdl
dCgpLmZpbmQobWltZVR5cGUpOwogICAgIGlmIChtYXBFbnRyeSA9PSBtYXAuZ2V0KCkuZW5kKCkp
Ci0gICAgICAgIHJldHVybiBlbXB0eVN0cmluZygpOworICAgICAgICByZXR1cm4gZW1wdHlDRlN0
cmluZzsKIAogICAgIHJldHVybiBtYXBFbnRyeS0+dmFsdWU7CiB9CiAKLXN0cnVjdCBVVElGcm9t
TUlNRVR5cGVDYWNoZVBvbGljeSA6IFRpbnlMUlVDYWNoZVBvbGljeTxTdHJpbmcsIFN0cmluZz4g
eworc3RydWN0IFVUSUZyb21NSU1FVHlwZUNhY2hlUG9saWN5IDogVGlueUxSVUNhY2hlUG9saWN5
PFN0cmluZywgUmV0YWluUHRyPENGU3RyaW5nUmVmPj4gewogcHVibGljOgotICAgIHN0YXRpYyBT
dHJpbmcgY3JlYXRlVmFsdWVGb3JLZXkoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSkKKyAgICBzdGF0
aWMgUmV0YWluUHRyPENGU3RyaW5nUmVmPiBjcmVhdGVWYWx1ZUZvcktleShjb25zdCBTdHJpbmcm
IG1pbWVUeXBlKQogICAgIHsKIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0JFR0lOCiAg
ICAgICAgIGF1dG8gdHlwZSA9IGFkb3B0Q0YoVVRUeXBlQ3JlYXRlUHJlZmVycmVkSWRlbnRpZmll
ckZvclRhZyhrVVRUYWdDbGFzc01JTUVUeXBlLCBtaW1lVHlwZS5jcmVhdGVDRlN0cmluZygpLmdl
dCgpLCAwKSk7CiBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19FTkQKICAgICAgICAgaWYg
KHR5cGUpCi0gICAgICAgICAgICByZXR1cm4gdHlwZS5nZXQoKTsKKyAgICAgICAgICAgIHJldHVy
biB0eXBlOwogICAgICAgICByZXR1cm4gVVRJRnJvbVVua25vd25NSU1FVHlwZShtaW1lVHlwZSk7
CiAgICAgfQorCisgICAgc3RhdGljIFN0cmluZyBjcmVhdGVLZXlGb3JTdG9yYWdlKGNvbnN0IFN0
cmluZyYga2V5KSB7IHJldHVybiBrZXkuaXNvbGF0ZWRDb3B5KCk7IH0KIH07CiAKLXN0YXRpYyBU
aW55TFJVQ2FjaGU8U3RyaW5nLCBTdHJpbmcsIDE2LCBVVElGcm9tTUlNRVR5cGVDYWNoZVBvbGlj
eT4mIGNhY2hlVVRJRnJvbU1pbWVUeXBlKCkKK3N0YXRpYyBUaW55TFJVQ2FjaGU8U3RyaW5nLCBS
ZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+LCAxNiwgVVRJRnJvbU1JTUVUeXBlQ2FjaGVQb2xpY3k+JiBj
YWNoZVVUSUZyb21NaW1lVHlwZSgpCiB7Ci0gICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFRpbnlM
UlVDYWNoZTxTdHJpbmcsIFN0cmluZywgMTYsIFVUSUZyb21NSU1FVHlwZUNhY2hlUG9saWN5Pj4g
Y2FjaGU7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFRpbnlMUlVDYWNoZTxTdHJpbmcsIFJl
dGFpblB0cjxDRlN0cmluZ1JlZj4sIDE2LCBVVElGcm9tTUlNRVR5cGVDYWNoZVBvbGljeT4+IGNh
Y2hlOwogICAgIHJldHVybiBjYWNoZTsKIH0KIAogU3RyaW5nIFVUSUZyb21NSU1FVHlwZShjb25z
dCBTdHJpbmcmIG1pbWVUeXBlKQogewotICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7Ci0gICAg
cmV0dXJuIGNhY2hlVVRJRnJvbU1pbWVUeXBlKCkuZ2V0KG1pbWVUeXBlKTsKKyAgICBzdGF0aWMg
TG9jayBsb2NrOworICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2sobG9jayk7CisgICAgcmV0dXJu
IGNhY2hlVVRJRnJvbU1pbWVUeXBlKCkuZ2V0KG1pbWVUeXBlKS5nZXQoKTsKIH0KIAogYm9vbCBp
c0RlY2xhcmVkVVRJKGNvbnN0IFN0cmluZyYgVVRJKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vdGV4dC9jZi9IeXBoZW5hdGlvbkNGLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL3RleHQvY2YvSHlwaGVuYXRpb25DRi5jcHAKaW5kZXggM2QwMmYyOGY2ODVkNDM3ODRk
Mzk0Njk1ZmNiZTI0ZjllNzYyOTE4YS4uNjY2OTZlNGI3NDAzNThjMjVmMjJjYmJhZWRiMDE4NWU0
YWU0ZjgzYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9jZi9IeXBo
ZW5hdGlvbkNGLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L2NmL0h5cGhl
bmF0aW9uQ0YuY3BwCkBAIC02Myw2ICs2Myw4IEBAIHB1YmxpYzoKIAogICAgICAgICByZXR1cm4g
Q0ZTdHJpbmdJc0h5cGhlbmF0aW9uQXZhaWxhYmxlRm9yTG9jYWxlKGxvY2FsZS5nZXQoKSkgPyBs
b2NhbGUgOiBudWxscHRyOwogICAgIH0KKworICAgIHN0YXRpYyBBdG9tU3RyaW5nIGNyZWF0ZUtl
eUZvclN0b3JhZ2UoY29uc3QgQXRvbVN0cmluZyYga2V5KSB7IHJldHVybiBrZXk7IH0KIH07CiB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvaHlwaGVuL0h5cGhl
bmF0aW9uTGliSHlwaGVuLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvaHlwaGVu
L0h5cGhlbmF0aW9uTGliSHlwaGVuLmNwcAppbmRleCBmMzM1OWQ4MDcwMjJmNTQ4OWM2OGY5YWNm
ODE2YTY3MDQyYTUzZDYyLi43ZjczMzAxZGEwMDMxMDdlOTM5ZGZiODZiMzY4OTM1NGM5ZDk0MzUw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L2h5cGhlbi9IeXBoZW5h
dGlvbkxpYkh5cGhlbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9oeXBo
ZW4vSHlwaGVuYXRpb25MaWJIeXBoZW4uY3BwCkBAIC0yNDEsNiArMjQxLDggQEAgcHVibGljOgog
ICAgIHsKICAgICAgICAgcmV0dXJuIFdlYkNvcmU6Okh5cGhlbmF0aW9uRGljdGlvbmFyeTo6Y3Jl
YXRlKEZpbGVTeXN0ZW06OmZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihkaWN0aW9uYXJ5UGF0aC5z
dHJpbmcoKSkpOwogICAgIH0KKworICAgIHN0YXRpYyBBdG9tU3RyaW5nIGNyZWF0ZUtleUZvclN0
b3JhZ2UoY29uc3QgQXRvbVN0cmluZyYga2V5KSB7IHJldHVybiBrZXk7IH0KIH07CiAKIH0gLy8g
bmFtZXNwYWNlIFdURgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQVUNv
bm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQVUNv
bm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwCmluZGV4IDQxYWUwYTEzMTQ4YWE2YTZjYzRiYmI4NmI4
OWJiYWU2NjQwMWExNjAuLjAzNTI5YjRiNjk4NjI3MjZlMmI2ZWRhNjIyOGE1NmE1MGNkMDBhOTUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRv
V2ViUHJvY2Vzcy5jcHAKQEAgLTE2NSw2ICsxNjUsNyBAQCBHUFVDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzOjpHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzKEdQVVByb2Nlc3MmIGdwdVByb2Nlc3MsIFdl
YgogICAgIDogbV9jb25uZWN0aW9uKElQQzo6Q29ubmVjdGlvbjo6Y3JlYXRlU2VydmVyQ29ubmVj
dGlvbihjb25uZWN0aW9uSWRlbnRpZmllciwgKnRoaXMpKQogICAgICwgbV9ncHVQcm9jZXNzKGdw
dVByb2Nlc3MpCiAgICAgLCBtX3dlYlByb2Nlc3NJZGVudGlmaWVyKHdlYlByb2Nlc3NJZGVudGlm
aWVyKQorICAgICwgbV9yZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eShtYWtlVW5pcXVlPFJl
bW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5PigqdGhpcykpCiAgICAgLCBtX3Nlc3Npb25JRChz
ZXNzaW9uSUQpCiAjaWYgUExBVEZPUk0oQ09DT0EpICYmIFVTRShMSUJXRUJSVEMpCiAgICAgLCBt
X2xpYldlYlJUQ0NvZGVjc1Byb3h5KExpYldlYlJUQ0NvZGVjc1Byb3h5OjpjcmVhdGUoKnRoaXMp
KQpAQCAtMjAyLDggKzIwMywxMiBAQCB2b2lkIEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmRp
ZENsb3NlKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbikKICAgICB9CiAjZW5kaWYKIAorICAg
IC8vIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQgb2JqZWN0cyByZWYgdGhlaXIgR1BVQ29ubmVjdGlv
blRvV2ViUHJvY2VzcyBzbyB3ZSBuZWVkIHRvIG1ha2Ugc3VyZQorICAgIC8vIHRvIGJyZWFrIHRo
ZSByZWZlcmVuY2UgY3ljbGUgYnkgZGVzdHJveWluZyB0aGVtLgorICAgIG1fcmVtb3RlUmVuZGVy
aW5nQmFja2VuZE1hcC5jbGVhcigpOworCiAgICAgZ3B1UHJvY2VzcygpLmNvbm5lY3Rpb25Ub1dl
YlByb2Nlc3NDbG9zZWQoY29ubmVjdGlvbik7Ci0gICAgZ3B1UHJvY2VzcygpLnJlbW92ZUdQVUNv
bm5lY3Rpb25Ub1dlYlByb2Nlc3MoKnRoaXMpOworICAgIGdwdVByb2Nlc3MoKS5yZW1vdmVHUFVD
b25uZWN0aW9uVG9XZWJQcm9jZXNzKCp0aGlzKTsgLy8gTWF5IGRlc3Ryb3kgfHRoaXN8LgogfQog
CiBMb2dnZXImIEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmxvZ2dlcigpCkBAIC0yNDAsMTQg
KzI0NSw2IEBAIFJlbW90ZU1lZGlhUmVzb3VyY2VNYW5hZ2VyJiBHUFVDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzOjpyZW1vdGVNZWRpYVJlc291cmNlTWFuYWdlCiAgICAgcmV0dXJuICptX3JlbW90ZU1l
ZGlhUmVzb3VyY2VNYW5hZ2VyOwogfQogCi1SZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eSYg
R1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6cmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHko
KQotewotICAgIGlmICghbV9yZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eSkKLSAgICAgICAg
bV9yZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eSA9IG1ha2VVbmlxdWU8UmVtb3RlTWVkaWFQ
bGF5ZXJNYW5hZ2VyUHJveHk+KCp0aGlzKTsKLQotICAgIHJldHVybiAqbV9yZW1vdGVNZWRpYVBs
YXllck1hbmFnZXJQcm94eTsKLX0KLQogI2lmIFBMQVRGT1JNKENPQ09BKSAmJiBFTkFCTEUoTUVE
SUFfU1RSRUFNKQogVXNlck1lZGlhQ2FwdHVyZU1hbmFnZXJQcm94eSYgR1BVQ29ubmVjdGlvblRv
V2ViUHJvY2Vzczo6dXNlck1lZGlhQ2FwdHVyZU1hbmFnZXJQcm94eSgpCiB7CkBAIC0yOTIsNyAr
Mjg5LDcgQEAgUmVtb3RlQXVkaW9TZXNzaW9uUHJveHkmIEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nl
c3M6OmF1ZGlvU2Vzc2lvblByb3h5KCkKIHZvaWQgR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6
Y3JlYXRlUmVuZGVyaW5nQmFja2VuZChSZW1vdGVSZW5kZXJpbmdCYWNrZW5kQ3JlYXRpb25QYXJh
bWV0ZXJzJiYgcGFyYW1ldGVycykKIHsKICAgICBhdXRvIGFkZFJlc3VsdCA9IG1fcmVtb3RlUmVu
ZGVyaW5nQmFja2VuZE1hcC5lbnN1cmUocGFyYW1ldGVycy5pZGVudGlmaWVyLCBbJl0oKSB7Ci0g
ICAgICAgIHJldHVybiBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpjcmVhdGUoKnRoaXMsIFdURk1v
dmUocGFyYW1ldGVycykpOworICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxSZW1vdGVSZW5kZXJp
bmdCYWNrZW5kV3JhcHBlcj4oUmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6Y3JlYXRlKCp0aGlzLCBX
VEZNb3ZlKHBhcmFtZXRlcnMpKSk7CiAgICAgfSk7CiAgICAgQVNTRVJUX1VOVVNFRChhZGRSZXN1
bHQsIGFkZFJlc3VsdC5pc05ld0VudHJ5KTsKIH0KQEAgLTMwMyw2ICszMDAsMTYgQEAgdm9pZCBH
UFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpyZWxlYXNlUmVuZGVyaW5nQmFja2VuZChSZW5kZXJp
bmdCYWNrZW5kSWRlbnRpZmkKICAgICBBU1NFUlRfVU5VU0VEKGZvdW5kLCBmb3VuZCk7CiB9CiAK
K0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmRXcmFwcGVy
OjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kV3JhcHBlcihSZWY8UmVtb3RlUmVuZGVyaW5nQmFja2Vu
ZD4mJiByZW1vdGVSZW5kZXJpbmdCYWNrZW5kKQorICAgIDogbV9yZW1vdGVSZW5kZXJpbmdCYWNr
ZW5kKFdURk1vdmUocmVtb3RlUmVuZGVyaW5nQmFja2VuZCkpCit7Cit9CisKK0dQVUNvbm5lY3Rp
b25Ub1dlYlByb2Nlc3M6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmRXcmFwcGVyOjp+UmVtb3RlUmVu
ZGVyaW5nQmFja2VuZFdyYXBwZXIoKQoreworICAgIG1fcmVtb3RlUmVuZGVyaW5nQmFja2VuZC0+
ZGlzY29ubmVjdCgpOworfQorCiAjaWYgRU5BQkxFKFdFQkdMKQogdm9pZCBHUFVDb25uZWN0aW9u
VG9XZWJQcm9jZXNzOjpjcmVhdGVHcmFwaGljc0NvbnRleHRHTChXZWJDb3JlOjpHcmFwaGljc0Nv
bnRleHRHTEF0dHJpYnV0ZXMgYXR0cmlidXRlcywgR3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVy
IGdyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcikKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmggYi9Tb3VyY2UvV2ViS2l0
L0dQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oCmluZGV4IDFmNzg1NTVlMmI3
Mzk5ZTcyMGI1NGQ5Y2ZhZWNjMzM5ODk2YTcyYWMuLjUxZmNjN2YwNWI5OTZjMjI2MDAwMWYxMTdm
NjJmNDdhZjdkMmIzMDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVD
b25uZWN0aW9uVG9XZWJQcm9jZXNzLmgKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQ
VUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaApAQCAtMzgsNyArMzgsNyBAQAogI2luY2x1ZGUgPFdl
YkNvcmUvUHJvY2Vzc0lkZW50aWZpZXIuaD4KICNpbmNsdWRlIDxwYWwvU2Vzc2lvbklELmg+CiAj
aW5jbHVkZSA8d3RmL0xvZ2dlci5oPgotI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CisjaW5j
bHVkZSA8d3RmL1RocmVhZFNhZmVSZWZDb3VudGVkLmg+CiAKICNpZiBFTkFCTEUoV0VCR0wpCiAj
aW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLmgiCkBAIC02OCw3ICs2OCw3IEBA
IHN0cnVjdCBSZW1vdGVBdWRpb1Nlc3Npb25Db25maWd1cmF0aW9uOwogc3RydWN0IFJlbW90ZVJl
bmRlcmluZ0JhY2tlbmRDcmVhdGlvblBhcmFtZXRlcnM7CiAKIGNsYXNzIEdQVUNvbm5lY3Rpb25U
b1dlYlByb2Nlc3MKLSAgICA6IHB1YmxpYyBSZWZDb3VudGVkPEdQVUNvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3M+CisgICAgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8R1BVQ29ubmVjdGlvblRv
V2ViUHJvY2VzcywgV1RGOjpEZXN0cnVjdGlvblRocmVhZDo6TWFpbj4KICAgICAsIHB1YmxpYyBX
ZWJDb3JlOjpOb3dQbGF5aW5nTWFuYWdlcjo6Q2xpZW50CiAgICAgLCBJUEM6OkNvbm5lY3Rpb246
OkNsaWVudCB7CiBwdWJsaWM6CkBAIC0xMDYsNyArMTA2LDcgQEAgcHVibGljOgogI2lmIEVOQUJM
RShHUFVfUFJPQ0VTUykKICAgICBSZW1vdGVNZWRpYUVuZ2luZUNvbmZpZ3VyYXRpb25GYWN0b3J5
UHJveHkmIG1lZGlhRW5naW5lQ29uZmlndXJhdGlvbkZhY3RvcnlQcm94eSgpOwogI2VuZGlmCi0g
ICAgUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHkmIHJlbW90ZU1lZGlhUGxheWVyTWFuYWdl
clByb3h5KCk7CisgICAgUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHkmIHJlbW90ZU1lZGlh
UGxheWVyTWFuYWdlclByb3h5KCkgeyByZXR1cm4gKm1fcmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2Vy
UHJveHk7IH0KIAogI2lmIFVTRShBVURJT19TRVNTSU9OKQogICAgIFJlbW90ZUF1ZGlvU2Vzc2lv
blByb3h5TWFuYWdlciYgYXVkaW9TZXNzaW9uTWFuYWdlcigpOwpAQCAtMTkyLDcgKzE5MiwxNyBA
QCBwcml2YXRlOgogICAgIGJvb2wgbV9hbGxvd3NEaXNwbGF5Q2FwdHVyZSB7IGZhbHNlIH07CiAj
ZW5kaWYKIAotICAgIHVzaW5nIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRNYXAgPSBIYXNoTWFwPFJl
bmRlcmluZ0JhY2tlbmRJZGVudGlmaWVyLCBzdGQ6OnVuaXF1ZV9wdHI8UmVtb3RlUmVuZGVyaW5n
QmFja2VuZD4+OworICAgIGNsYXNzIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRXcmFwcGVyIHsKKyAg
ICAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CisgICAgcHVibGljOgorICAgICAgICBSZW1v
dGVSZW5kZXJpbmdCYWNrZW5kV3JhcHBlcihSZWY8UmVtb3RlUmVuZGVyaW5nQmFja2VuZD4mJik7
CisgICAgICAgIH5SZW1vdGVSZW5kZXJpbmdCYWNrZW5kV3JhcHBlcigpOworCisgICAgcHJpdmF0
ZToKKyAgICAgICAgUmVmPFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ+IG1fcmVtb3RlUmVuZGVyaW5n
QmFja2VuZDsKKyAgICB9OworCisgICAgdXNpbmcgUmVtb3RlUmVuZGVyaW5nQmFja2VuZE1hcCA9
IEhhc2hNYXA8UmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXIsIHN0ZDo6dW5pcXVlX3B0cjxSZW1v
dGVSZW5kZXJpbmdCYWNrZW5kV3JhcHBlcj4+OwogICAgIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRN
YXAgbV9yZW1vdGVSZW5kZXJpbmdCYWNrZW5kTWFwOwogI2lmIEVOQUJMRShXRUJHTCkKICAgICB1
c2luZyBSZW1vdGVHcmFwaGljc0NvbnRleHRHTE1hcCA9IEhhc2hNYXA8R3JhcGhpY3NDb250ZXh0
R0xJZGVudGlmaWVyLCBzdGQ6OnVuaXF1ZV9wdHI8UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w+PjsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5k
ZXJpbmdCYWNrZW5kLmNwcCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1v
dGVSZW5kZXJpbmdCYWNrZW5kLmNwcAppbmRleCA0ODdiMTM1YTg4OTI3ZDIyOTM5MzA3NDkwMjRk
NjU2Y2MwNTA0ZjU1Li4xY2I1MGUzN2I2MGFmMDQwNDZmMDc2ZTM5NmM4MjgxMzA1NjU5NTZkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVy
aW5nQmFja2VuZC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1Jl
bW90ZVJlbmRlcmluZ0JhY2tlbmQuY3BwCkBAIC0zOCw2ICszOCw3IEBACiAjaW5jbHVkZSAiUmVt
b3RlUmVuZGVyaW5nQmFja2VuZFByb3h5TWVzc2FnZXMuaCIKICNpbmNsdWRlIDx3dGYvQ2hlY2tl
ZEFyaXRobWV0aWMuaD4KICNpbmNsdWRlIDx3dGYvU3lzdGVtVHJhY2luZy5oPgorI2luY2x1ZGUg
PHd0Zi9Xb3JrUXVldWUuaD4KIAogI2lmIFBMQVRGT1JNKENPQ09BKQogI2luY2x1ZGUgPHd0Zi9j
b2NvYS9NYWNoU2VtYXBob3JlLmg+CkBAIC00NiwzOCArNDcsNDEgQEAKIG5hbWVzcGFjZSBXZWJL
aXQgewogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKLXN0ZDo6dW5pcXVlX3B0cjxSZW1vdGVS
ZW5kZXJpbmdCYWNrZW5kPiBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpjcmVhdGUoR1BVQ29ubmVj
dGlvblRvV2ViUHJvY2VzcyYgZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2VzcywgUmVtb3RlUmVuZGVy
aW5nQmFja2VuZENyZWF0aW9uUGFyYW1ldGVycyYmIHBhcmFtZXRlcnMpCitSZWY8UmVtb3RlUmVu
ZGVyaW5nQmFja2VuZD4gUmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6Y3JlYXRlKEdQVUNvbm5lY3Rp
b25Ub1dlYlByb2Nlc3MmIGdwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MsIFJlbW90ZVJlbmRlcmlu
Z0JhY2tlbmRDcmVhdGlvblBhcmFtZXRlcnMmJiBwYXJhbWV0ZXJzKQogewotICAgIHJldHVybiBz
dGQ6OnVuaXF1ZV9wdHI8UmVtb3RlUmVuZGVyaW5nQmFja2VuZD4obmV3IFJlbW90ZVJlbmRlcmlu
Z0JhY2tlbmQoZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2VzcywgV1RGTW92ZShwYXJhbWV0ZXJzKSkp
OworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQoZ3B1Q29u
bmVjdGlvblRvV2ViUHJvY2VzcywgV1RGTW92ZShwYXJhbWV0ZXJzKSkpOwogfQogCiBSZW1vdGVS
ZW5kZXJpbmdCYWNrZW5kOjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kKEdQVUNvbm5lY3Rpb25Ub1dl
YlByb2Nlc3MmIGdwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MsIFJlbW90ZVJlbmRlcmluZ0JhY2tl
bmRDcmVhdGlvblBhcmFtZXRlcnMmJiBwYXJhbWV0ZXJzKQotICAgIDogbV9ncHVDb25uZWN0aW9u
VG9XZWJQcm9jZXNzKG1ha2VXZWFrUHRyKGdwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MpKQorICAg
IDogbV93b3JrUXVldWUoV29ya1F1ZXVlOjpjcmVhdGUoIlJlbW90ZVJlbmRlcmluZ0JhY2tlbmQg
d29yayBxdWV1ZSIsIFdvcmtRdWV1ZTo6VHlwZTo6U2VyaWFsLCBXb3JrUXVldWU6OlFPUzo6VXNl
ckludGVyYWN0aXZlKSkKKyAgICAsIG1fZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2VzcyhncHVDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzKQogICAgICwgbV9yZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllcihw
YXJhbWV0ZXJzLmlkZW50aWZpZXIpCiAjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgLCBtX3Jlc3Vt
ZURpc3BsYXlMaXN0U2VtYXBob3JlKG1ha2VVbmlxdWU8TWFjaFNlbWFwaG9yZT4oV1RGTW92ZShw
YXJhbWV0ZXJzLnNlbmRSaWdodEZvclJlc3VtZURpc3BsYXlMaXN0U2VtYXBob3JlKSkpCiAjZW5k
aWYKIHsKLSAgICBpZiAoYXV0byogZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2VzcyA9IG1fZ3B1Q29u
bmVjdGlvblRvV2ViUHJvY2Vzcy5nZXQoKSkKLSAgICAgICAgZ3B1Q29ubmVjdGlvblRvV2ViUHJv
Y2Vzcy0+bWVzc2FnZVJlY2VpdmVyTWFwKCkuYWRkTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpS
ZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIG1fcmVuZGVyaW5n
QmFja2VuZElkZW50aWZpZXIudG9VSW50NjQoKSwgKnRoaXMpOworICAgIEFTU0VSVChSdW5Mb29w
Ojppc01haW4oKSk7CisgICAgZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jb25uZWN0aW9uKCku
YWRkV29ya1F1ZXVlTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpSZW1vdGVSZW5kZXJpbmdCYWNr
ZW5kOjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIG1fd29ya1F1ZXVlLCB0aGlzLCBtX3JlbmRlcmlu
Z0JhY2tlbmRJZGVudGlmaWVyLnRvVUludDY0KCkpOwogfQogCiBSZW1vdGVSZW5kZXJpbmdCYWNr
ZW5kOjp+UmVtb3RlUmVuZGVyaW5nQmFja2VuZCgpCiB7Ci0gICAgaWYgKGF1dG8qIGdwdUNvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3MgPSBtX2dwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuZ2V0KCkpCi0g
ICAgICAgIGdwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MtPm1lc3NhZ2VSZWNlaXZlck1hcCgpLnJl
bW92ZU1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6bWVz
c2FnZVJlY2VpdmVyTmFtZSgpLCBtX3JlbmRlcmluZ0JhY2tlbmRJZGVudGlmaWVyLnRvVUludDY0
KCkpOworICAgIC8vIE1ha2Ugc3VyZSB3ZSBkZXN0cm95IHRoZSBSZXNvdXJjZUNhY2hlIG9uIHRo
ZSBXb3JrUXVldWUgc2luY2UgaXQgZ2V0cyBwb3B1bGF0ZWQgb24gdGhlIFdvcmtRdWV1ZS4KKyAg
ICBtX3dvcmtRdWV1ZS0+ZGlzcGF0Y2goW3JlbW90ZVJlc291cmNlQ2FjaGUgPSBXVEZNb3ZlKG1f
cmVtb3RlUmVzb3VyY2VDYWNoZSldIHsgfSk7CiB9CiAKLUdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nl
c3MqIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OmdwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MoKSBj
b25zdAordm9pZCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpkaXNjb25uZWN0KCkKIHsKLSAgICBy
ZXR1cm4gbV9ncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmdldCgpOworICAgIEFTU0VSVChSdW5M
b29wOjppc01haW4oKSk7CisKKyAgICAvLyBUaGUgUmVtb3RlUmVuZGVyaW5nQmFja2VuZCBkZXN0
cnVjdG9yIHdvbid0IGJlIGNhbGxlZCB1bnRpbCBkaXNjb25uZWN0KCkgaXMgY2FsbGVkIGFuZCB3
ZSB1bnJlZ2lzdGVyIG91cnNlbHZlcyBhcyBhIFdvcmtRdWV1ZU1lc3NhZ2VSZWNlaXZlciBiZWNh
dXNlCisgICAgLy8gdGhlIElQQzo6Q29ubmVjdGlvbiByZWZzIGl0cyBXb3JrUXVldWVNZXNzYWdl
UmVjZWl2ZXJzLgorICAgIG1fZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2Vzcy0+Y29ubmVjdGlvbigp
LnJlbW92ZVdvcmtRdWV1ZU1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6UmVtb3RlUmVuZGVyaW5n
QmFja2VuZDo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBtX3JlbmRlcmluZ0JhY2tlbmRJZGVudGlm
aWVyLnRvVUludDY0KCkpOwogfQogCiBJUEM6OkNvbm5lY3Rpb24qIFJlbW90ZVJlbmRlcmluZ0Jh
Y2tlbmQ6Om1lc3NhZ2VTZW5kZXJDb25uZWN0aW9uKCkgY29uc3QKIHsKLSAgICBpZiAoYXV0byog
Z3B1Q29ubmVjdGlvblRvV2ViUHJvY2VzcyA9IG1fZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2Vzcy5n
ZXQoKSkKLSAgICAgICAgcmV0dXJuICZncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLT5jb25uZWN0
aW9uKCk7Ci0gICAgcmV0dXJuIG51bGxwdHI7CisgICAgcmV0dXJuICZtX2dwdUNvbm5lY3Rpb25U
b1dlYlByb2Nlc3MtPmNvbm5lY3Rpb24oKTsKIH0KIAogdWludDY0X3QgUmVtb3RlUmVuZGVyaW5n
QmFja2VuZDo6bWVzc2FnZVNlbmRlckRlc3RpbmF0aW9uSUQoKSBjb25zdApAQCAtODcsMTkgKzkx
LDEzIEBAIHVpbnQ2NF90IFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6Om1lc3NhZ2VTZW5kZXJEZXN0
aW5hdGlvbklEKCkgY29uc3QKIAogYm9vbCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjphcHBseU1l
ZGlhSXRlbShEaXNwbGF5TGlzdDo6SXRlbUhhbmRsZSBpdGVtLCBHcmFwaGljc0NvbnRleHQmIGNv
bnRleHQpCiB7CisgICAgQVNTRVJUKCFSdW5Mb29wOjppc01haW4oKSk7CisKICAgICBpZiAoIWl0
ZW0uaXM8RGlzcGxheUxpc3Q6OlBhaW50RnJhbWVGb3JNZWRpYT4oKSkKICAgICAgICAgcmV0dXJu
IGZhbHNlOwogCiAgICAgYXV0byYgbWVkaWFJdGVtID0gaXRlbS5nZXQ8RGlzcGxheUxpc3Q6OlBh
aW50RnJhbWVGb3JNZWRpYT4oKTsKLSAgICBhdXRvIHByb2Nlc3MgPSBncHVDb25uZWN0aW9uVG9X
ZWJQcm9jZXNzKCk7Ci0gICAgaWYgKCFwcm9jZXNzKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0K
LSAgICBhdXRvIHBsYXllclByb3h5ID0gcHJvY2Vzcy0+cmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2Vy
UHJveHkoKS5nZXRQcm94eShtZWRpYUl0ZW0uaWRlbnRpZmllcigpKTsKLSAgICBpZiAoIXBsYXll
clByb3h5KQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBhdXRvIHBsYXllciA9IHBsYXll
clByb3h5LT5tZWRpYVBsYXllcigpOworICAgIGF1dG8gcGxheWVyID0gbV9ncHVDb25uZWN0aW9u
VG9XZWJQcm9jZXNzLT5yZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eSgpLm1lZGlhUGxheWVy
KG1lZGlhSXRlbS5pZGVudGlmaWVyKCkpOwogICAgIGlmICghcGxheWVyKQogICAgICAgICByZXR1
cm4gZmFsc2U7CiAKQEAgLTExOSw2ICsxMTcsNyBAQCB2b2lkIFJlbW90ZVJlbmRlcmluZ0JhY2tl
bmQ6OmRpZEZsdXNoKERpc3BsYXlMaXN0OjpGbHVzaElkZW50aWZpZXIgZmx1c2hJZGVudGlmaQog
CiB2b2lkIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OmNyZWF0ZUltYWdlQnVmZmVyKGNvbnN0IEZs
b2F0U2l6ZSYgbG9naWNhbFNpemUsIFJlbmRlcmluZ01vZGUgcmVuZGVyaW5nTW9kZSwgZmxvYXQg
cmVzb2x1dGlvblNjYWxlLCBDb2xvclNwYWNlIGNvbG9yU3BhY2UsIFBpeGVsRm9ybWF0IHBpeGVs
Rm9ybWF0LCBSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgcmVuZGVyaW5nUmVzb3VyY2VJZGVu
dGlmaWVyKQogeworICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOwogICAgIEFTU0VSVChy
ZW5kZXJpbmdNb2RlID09IFJlbmRlcmluZ01vZGU6OkFjY2VsZXJhdGVkIHx8IHJlbmRlcmluZ01v
ZGUgPT0gUmVuZGVyaW5nTW9kZTo6VW5hY2NlbGVyYXRlZCk7CiAKICAgICBSZWZQdHI8SW1hZ2VC
dWZmZXI+IGltYWdlQnVmZmVyOwpAQCAtMjY5LDYgKzI2OCw4IEBAIFJlZlB0cjxJbWFnZUJ1ZmZl
cj4gUmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6bmV4dERlc3RpbmF0aW9uSW1hZ2VCdWZmZXJBZnRl
ckFwcGx5CiAKIHZvaWQgUmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6d2FrZVVwQW5kQXBwbHlEaXNw
bGF5TGlzdChjb25zdCBHUFVQcm9jZXNzV2FrZXVwTWVzc2FnZUFyZ3VtZW50cyYgYXJndW1lbnRz
KQogeworICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOworCiAgICAgVHJhY2VTY29wZSB0
cmFjaW5nU2NvcGUoV2FrZVVwQW5kQXBwbHlEaXNwbGF5TGlzdFN0YXJ0LCBXYWtlVXBBbmRBcHBs
eURpc3BsYXlMaXN0RW5kKTsKICAgICBhdXRvIGRlc3RpbmF0aW9uSW1hZ2VCdWZmZXIgPSBtYWtl
UmVmUHRyKG1fcmVtb3RlUmVzb3VyY2VDYWNoZS5jYWNoZWRJbWFnZUJ1ZmZlcihhcmd1bWVudHMu
ZGVzdGluYXRpb25JbWFnZUJ1ZmZlcklkZW50aWZpZXIpKTsKICAgICBpZiAoVU5MSUtFTFkoIWRl
c3RpbmF0aW9uSW1hZ2VCdWZmZXIpKSB7CkBAIC0zMjMsNiArMzI0LDggQEAgdm9pZCBSZW1vdGVS
ZW5kZXJpbmdCYWNrZW5kOjpzZXROZXh0SXRlbUJ1ZmZlclRvUmVhZChEaXNwbGF5TGlzdDo6SXRl
bUJ1ZmZlcklkZW4KIAogdm9pZCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpnZXRJbWFnZURhdGEo
QWxwaGFQcmVtdWx0aXBsaWNhdGlvbiBvdXRwdXRGb3JtYXQsIEludFJlY3Qgc3JjUmVjdCwgUmVu
ZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyIHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciwgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZChJUEM6OkltYWdlRGF0YVJlZmVyZW5jZSYmKT4mJiBjb21wbGV0
aW9uSGFuZGxlcikKIHsKKyAgICBBU1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsKKwogICAgIFJl
ZlB0cjxJbWFnZURhdGE+IGltYWdlRGF0YTsKICAgICBpZiAoYXV0byBpbWFnZUJ1ZmZlciA9IG1f
cmVtb3RlUmVzb3VyY2VDYWNoZS5jYWNoZWRJbWFnZUJ1ZmZlcihyZW5kZXJpbmdSZXNvdXJjZUlk
ZW50aWZpZXIpKQogICAgICAgICBpbWFnZURhdGEgPSBpbWFnZUJ1ZmZlci0+Z2V0SW1hZ2VEYXRh
KG91dHB1dEZvcm1hdCwgc3JjUmVjdCk7CkBAIC0zMzEsNiArMzM0LDggQEAgdm9pZCBSZW1vdGVS
ZW5kZXJpbmdCYWNrZW5kOjpnZXRJbWFnZURhdGEoQWxwaGFQcmVtdWx0aXBsaWNhdGlvbiBvdXRw
dXRGb3JtYXQsIEkKIAogdm9pZCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpnZXREYXRhVVJMRm9y
SW1hZ2VCdWZmZXIoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgT3B0aW9uYWw8ZG91YmxlPiBxdWFs
aXR5LCBXZWJDb3JlOjpQcmVzZXJ2ZVJlc29sdXRpb24gcHJlc2VydmVSZXNvbHV0aW9uLCBXZWJD
b3JlOjpSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlm
aWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFN0cmluZyYmKT4mJiBjb21wbGV0aW9uSGFuZGxl
cikKIHsKKyAgICBBU1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsKKwogICAgIFN0cmluZyB1cmxT
dHJpbmc7CiAgICAgaWYgKGF1dG8gaW1hZ2VCdWZmZXIgPSBtX3JlbW90ZVJlc291cmNlQ2FjaGUu
Y2FjaGVkSW1hZ2VCdWZmZXIocmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKSkKICAgICAgICAg
dXJsU3RyaW5nID0gaW1hZ2VCdWZmZXItPnRvRGF0YVVSTChtaW1lVHlwZSwgcXVhbGl0eSwgcHJl
c2VydmVSZXNvbHV0aW9uKTsKQEAgLTMzOSw2ICszNDQsOCBAQCB2b2lkIFJlbW90ZVJlbmRlcmlu
Z0JhY2tlbmQ6OmdldERhdGFVUkxGb3JJbWFnZUJ1ZmZlcihjb25zdCBTdHJpbmcmIG1pbWVUeXBl
LCBPcAogCiB2b2lkIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OmdldERhdGFGb3JJbWFnZUJ1ZmZl
cihjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBPcHRpb25hbDxkb3VibGU+IHF1YWxpdHksIFdlYkNv
cmU6OlJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciByZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZp
ZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoVmVjdG9yPHVpbnQ4X3Q+JiYpPiYmIGNvbXBsZXRp
b25IYW5kbGVyKQogeworICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOworCiAgICAgVmVj
dG9yPHVpbnQ4X3Q+IGRhdGE7CiAgICAgaWYgKGF1dG8gaW1hZ2VCdWZmZXIgPSBtX3JlbW90ZVJl
c291cmNlQ2FjaGUuY2FjaGVkSW1hZ2VCdWZmZXIocmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVy
KSkKICAgICAgICAgZGF0YSA9IGltYWdlQnVmZmVyLT50b0RhdGEobWltZVR5cGUsIHF1YWxpdHkp
OwpAQCAtMzQ3LDYgKzM1NCw4IEBAIHZvaWQgUmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6Z2V0RGF0
YUZvckltYWdlQnVmZmVyKGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIE9wdGlvCiAKIHZvaWQgUmVt
b3RlUmVuZGVyaW5nQmFja2VuZDo6Z2V0QkdSQURhdGFGb3JJbWFnZUJ1ZmZlcihXZWJDb3JlOjpS
ZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyLCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKFZlY3Rvcjx1aW50OF90PiYmKT4mJiBjb21wbGV0aW9uSGFu
ZGxlcikKIHsKKyAgICBBU1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsKKwogICAgIFZlY3Rvcjx1
aW50OF90PiBkYXRhOwogICAgIGlmIChhdXRvIGltYWdlQnVmZmVyID0gbV9yZW1vdGVSZXNvdXJj
ZUNhY2hlLmNhY2hlZEltYWdlQnVmZmVyKHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcikpCiAg
ICAgICAgIGRhdGEgPSBpbWFnZUJ1ZmZlci0+dG9CR1JBRGF0YSgpOwpAQCAtMzU1LDYgKzM2NCw4
IEBAIHZvaWQgUmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6Z2V0QkdSQURhdGFGb3JJbWFnZUJ1ZmZl
cihXZWJDb3JlOjpSZW5kZXJpbmdSZXNvdXJjCiAKIHZvaWQgUmVtb3RlUmVuZGVyaW5nQmFja2Vu
ZDo6Y2FjaGVOYXRpdmVJbWFnZShjb25zdCBTaGFyZWFibGVCaXRtYXA6OkhhbmRsZSYgaGFuZGxl
LCBSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVy
KQogeworICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOworCiAgICAgYXV0byBiaXRtYXAg
PSBTaGFyZWFibGVCaXRtYXA6OmNyZWF0ZShoYW5kbGUpOwogICAgIGlmICghYml0bWFwKQogICAg
ICAgICByZXR1cm47CkBAIC0zNzEsNiArMzgyLDggQEAgdm9pZCBSZW1vdGVSZW5kZXJpbmdCYWNr
ZW5kOjpjYWNoZU5hdGl2ZUltYWdlKGNvbnN0IFNoYXJlYWJsZUJpdG1hcDo6SGFuZGxlJiBoYW4K
IAogdm9pZCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpjYWNoZUZvbnQoUmVmPEZvbnQ+JiYgZm9u
dCkKIHsKKyAgICBBU1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsKKwogICAgIGF1dG8gaWRlbnRp
ZmllciA9IGZvbnQtPnJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcigpOwogICAgIG1fcmVtb3Rl
UmVzb3VyY2VDYWNoZS5jYWNoZUZvbnQoV1RGTW92ZShmb250KSk7CiAgICAgaWYgKG1fcGVuZGlu
Z1dha2V1cEluZm8gJiYgbV9wZW5kaW5nV2FrZXVwSW5mby0+c2hvdWxkUGVyZm9ybVdha2V1cChp
ZGVudGlmaWVyKSkKQEAgLTM3OSwxNiArMzkyLDIwIEBAIHZvaWQgUmVtb3RlUmVuZGVyaW5nQmFj
a2VuZDo6Y2FjaGVGb250KFJlZjxGb250PiYmIGZvbnQpCiAKIHZvaWQgUmVtb3RlUmVuZGVyaW5n
QmFja2VuZDo6ZGVsZXRlQWxsRm9udHMoKQogeworICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWlu
KCkpOwogICAgIG1fcmVtb3RlUmVzb3VyY2VDYWNoZS5kZWxldGVBbGxGb250cygpOwogfQogCiB2
b2lkIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OnJlbGVhc2VSZW1vdGVSZXNvdXJjZShSZW5kZXJp
bmdSZXNvdXJjZUlkZW50aWZpZXIgcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKQogeworICAg
IEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOwogICAgIG1fcmVtb3RlUmVzb3VyY2VDYWNoZS5y
ZWxlYXNlUmVtb3RlUmVzb3VyY2UocmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKTsKIH0KIAog
dm9pZCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpkaWRDcmVhdGVTaGFyZWREaXNwbGF5TGlzdEhh
bmRsZShEaXNwbGF5TGlzdDo6SXRlbUJ1ZmZlcklkZW50aWZpZXIgaWRlbnRpZmllciwgY29uc3Qg
U2hhcmVkTWVtb3J5OjpJUENIYW5kbGUmIGhhbmRsZSwgUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlm
aWVyIGRlc3RpbmF0aW9uQnVmZmVySWRlbnRpZmllcikKIHsKKyAgICBBU1NFUlQoIVJ1bkxvb3A6
OmlzTWFpbigpKTsKKwogICAgIGlmIChVTkxJS0VMWShtX3NoYXJlZERpc3BsYXlMaXN0SGFuZGxl
cy5jb250YWlucyhpZGVudGlmaWVyKSkpIHsKICAgICAgICAgLy8gRklYTUU6IEFkZCBhIG1lc3Nh
Z2UgY2hlY2sgdG8gdGVybWluYXRlIHRoZSB3ZWIgcHJvY2Vzcy4KICAgICAgICAgQVNTRVJUX05P
VF9SRUFDSEVEKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhp
Y3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5oIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dy
YXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQuaAppbmRleCBiYzEyOGYxNmJiMzc1NDY0NTQy
M2ZlMmJkMmIwOTk4MjAzYWYxNjMwLi5lNTdmNDE2YWM4Y2YzZTlhZWU1ZDRiYTE3Y2YzMDllM2I2
NzMyOTI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVt
b3RlUmVuZGVyaW5nQmFja2VuZC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFw
aGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kLmgKQEAgLTY1LDE0ICs2NSwxMyBAQCBjbGFzcyBH
UFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzOwogc3RydWN0IFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRD
cmVhdGlvblBhcmFtZXRlcnM7CiAKIGNsYXNzIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQKLSAgICA6
IHB1YmxpYyBJUEM6Ok1lc3NhZ2VTZW5kZXIKLSAgICAsIHByaXZhdGUgSVBDOjpNZXNzYWdlUmVj
ZWl2ZXIKLSAgICAsIHB1YmxpYyBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbUJ1ZmZlclJlYWRp
bmdDbGllbnQgeworICAgIDogcHVibGljIElQQzo6Q29ubmVjdGlvbjo6V29ya1F1ZXVlTWVzc2Fn
ZVJlY2VpdmVyCisgICAgLCBwdWJsaWMgV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1CdWZmZXJS
ZWFkaW5nQ2xpZW50CisgICAgLCBwcml2YXRlIElQQzo6TWVzc2FnZVNlbmRlciB7CiBwdWJsaWM6
Ci0gICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxSZW1vdGVSZW5kZXJpbmdCYWNrZW5kPiBjcmVh
dGUoR1BVQ29ubmVjdGlvblRvV2ViUHJvY2VzcyYsIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRDcmVh
dGlvblBhcmFtZXRlcnMmJik7CisgICAgc3RhdGljIFJlZjxSZW1vdGVSZW5kZXJpbmdCYWNrZW5k
PiBjcmVhdGUoR1BVQ29ubmVjdGlvblRvV2ViUHJvY2VzcyYsIFJlbW90ZVJlbmRlcmluZ0JhY2tl
bmRDcmVhdGlvblBhcmFtZXRlcnMmJik7CiAgICAgdmlydHVhbCB+UmVtb3RlUmVuZGVyaW5nQmFj
a2VuZCgpOwogCi0gICAgR1BVQ29ubmVjdGlvblRvV2ViUHJvY2VzcyogZ3B1Q29ubmVjdGlvblRv
V2ViUHJvY2VzcygpIGNvbnN0OwogICAgIFJlbW90ZVJlc291cmNlQ2FjaGUmIHJlbW90ZVJlc291
cmNlQ2FjaGUoKSB7IHJldHVybiBtX3JlbW90ZVJlc291cmNlQ2FjaGU7IH0KIAogICAgIC8vIFJl
bmRlcmluZyBvcGVyYXRpb25zLgpAQCAtODQsNiArODMsOCBAQCBwdWJsaWM6CiAKICAgICB2b2lk
IHNldE5leHRJdGVtQnVmZmVyVG9SZWFkKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtQnVmZmVy
SWRlbnRpZmllciwgV2ViQ29yZTo6UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyIGRlc3RpbmF0
aW9uKTsKIAorICAgIHZvaWQgZGlzY29ubmVjdCgpOworCiBwcml2YXRlOgogICAgIFJlbW90ZVJl
bmRlcmluZ0JhY2tlbmQoR1BVQ29ubmVjdGlvblRvV2ViUHJvY2VzcyYsIFJlbW90ZVJlbmRlcmlu
Z0JhY2tlbmRDcmVhdGlvblBhcmFtZXRlcnMmJik7CiAKQEAgLTE0MSw4ICsxNDIsOSBAQCBwcml2
YXRlOgogICAgICAgICB9CiAgICAgfTsKIAorICAgIFJlZjxXb3JrUXVldWU+IG1fd29ya1F1ZXVl
OwogICAgIFJlbW90ZVJlc291cmNlQ2FjaGUgbV9yZW1vdGVSZXNvdXJjZUNhY2hlOwotICAgIFdl
YWtQdHI8R1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcz4gbV9ncHVDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzOworICAgIFJlZjxHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzPiBtX2dwdUNvbm5lY3Rpb25U
b1dlYlByb2Nlc3M7CiAgICAgUmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXIgbV9yZW5kZXJpbmdC
YWNrZW5kSWRlbnRpZmllcjsKICAgICBIYXNoTWFwPFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVt
QnVmZmVySWRlbnRpZmllciwgUmVmUHRyPERpc3BsYXlMaXN0UmVhZGVySGFuZGxlPj4gbV9zaGFy
ZWREaXNwbGF5TGlzdEhhbmRsZXM7CiAgICAgT3B0aW9uYWw8UGVuZGluZ1dha2V1cEluZm9ybWF0
aW9uPiBtX3BlbmRpbmdXYWtldXBJbmZvOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQ
cm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQubWVzc2FnZXMuaW4gYi9Tb3Vy
Y2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5tZXNz
YWdlcy5pbgppbmRleCAyMDJjMjBhOWM2NTAxMzA5MTEzZDkwNjgzY2YwMDliODgzYmQwMDFmLi43
ZDY1Y2U5MDljNTgyMGY0NmIwMWU2YmRlZWNkZWFhNzMzNmFhZjI4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5tZXNz
YWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVu
ZGVyaW5nQmFja2VuZC5tZXNzYWdlcy5pbgpAQCAtMjIsNyArMjIsNyBAQAogCiAjaWYgRU5BQkxF
KEdQVV9QUk9DRVNTKQogCi1tZXNzYWdlcyAtPiBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kIE5vdFJl
ZkNvdW50ZWQgeworbWVzc2FnZXMgLT4gUmVtb3RlUmVuZGVyaW5nQmFja2VuZCB7CiAgICAgQ3Jl
YXRlSW1hZ2VCdWZmZXIoV2ViQ29yZTo6RmxvYXRTaXplIGxvZ2ljYWxTaXplLCBXZWJDb3JlOjpS
ZW5kZXJpbmdNb2RlIHJlbmRlcmluZ01vZGUsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwgV2ViQ29y
ZTo6Q29sb3JTcGFjZSBjb2xvclNwYWNlLCBlbnVtOnVpbnQ4X3QgV2ViQ29yZTo6UGl4ZWxGb3Jt
YXQgcGl4ZWxGb3JtYXQsIFdlYkNvcmU6OlJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciByZW5k
ZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpCiAgICAgV2FrZVVwQW5kQXBwbHlEaXNwbGF5TGlzdChz
dHJ1Y3QgV2ViS2l0OjpHUFVQcm9jZXNzV2FrZXVwTWVzc2FnZUFyZ3VtZW50cyBhcmd1bWVudHMp
CiAgICAgR2V0SW1hZ2VEYXRhKGVudW06dWludDhfdCBXZWJDb3JlOjpBbHBoYVByZW11bHRpcGxp
Y2F0aW9uIG91dHB1dEZvcm1hdCwgV2ViQ29yZTo6SW50UmVjdCBzcmNSZWN0LCBXZWJDb3JlOjpS
ZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKSAt
PiAoSVBDOjpJbWFnZURhdGFSZWZlcmVuY2UgaW1hZ2VEYXRhKSBTeW5jaHJvbm91cwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUxlZ2FjeUNETVByb3h5
LmNwcCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVMZWdhY3lDRE1Qcm94
eS5jcHAKaW5kZXggOGYwMTE5ZWRmZTFkNmU5MzI0MzAwNWIzNDQxMjViMjRlYWI5MWUzMC4uODBj
OTM3NGU5NzA1OWVlMTM5NTU1ZWIwNjUyMTk0ODI5NjIwMWQ5MyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUxlZ2FjeUNETVByb3h5LmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTGVnYWN5Q0RNUHJveHkuY3BwCkBA
IC04NywxMSArODcsNyBAQCBSZWZQdHI8TWVkaWFQbGF5ZXI+IFJlbW90ZUxlZ2FjeUNETVByb3h5
OjpjZG1NZWRpYVBsYXllcihjb25zdCBMZWdhY3lDRE0qKSBjb25zdAogICAgIGlmICghbV9wbGF5
ZXJJZCB8fCAhbV9mYWN0b3J5KQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIGF1dG8g
cHJveHkgPSBtX2ZhY3RvcnktPmdwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MoKS5yZW1vdGVNZWRp
YVBsYXllck1hbmFnZXJQcm94eSgpLmdldFByb3h5KG1fcGxheWVySWQpOwotICAgIGlmICghcHJv
eHkpCi0gICAgICAgIHJldHVybiBudWxscHRyOwotCi0gICAgcmV0dXJuIHByb3h5LT5tZWRpYVBs
YXllcigpOworICAgIHJldHVybiBtX2ZhY3RvcnktPmdwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3Mo
KS5yZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eSgpLm1lZGlhUGxheWVyKG1fcGxheWVySWQp
OwogfQogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVt
b3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNz
L21lZGlhL1JlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5LmNwcAppbmRleCBjMDI1MzM1ZGNh
Mzg1OWQ2ZDY0MTM0NjAwNjA2N2I2YTk1ZTRjNjZmLi45OWEwMjAzMGM5NGVmZDFlZjEzOTk1ZTAw
NGMxODZhYjhkMzM1OGI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVk
aWEvUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
R1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eS5jcHAKQEAgLTYx
LDEyICs2MSwxNiBAQCBSZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eTo6flJlbW90ZU1lZGlh
UGxheWVyTWFuYWdlclByb3h5KCkKIAogdm9pZCBSZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94
eTo6Y3JlYXRlTWVkaWFQbGF5ZXIoTWVkaWFQbGF5ZXJJZGVudGlmaWVyIGlkZW50aWZpZXIsIE1l
ZGlhUGxheWVyRW51bXM6Ok1lZGlhRW5naW5lSWRlbnRpZmllciBlbmdpbmVJZGVudGlmaWVyLCBS
ZW1vdGVNZWRpYVBsYXllclByb3h5Q29uZmlndXJhdGlvbiYmIHByb3h5Q29uZmlndXJhdGlvbiwg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChSZW1vdGVNZWRpYVBsYXllckNvbmZpZ3VyYXRpb24mKT4m
JiBjb21wbGV0aW9uSGFuZGxlcikKIHsKKyAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOwor
CisgICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhtX3Byb3hpZXNMb2NrKTsKICAgICBBU1NFUlQo
IW1fcHJveGllcy5jb250YWlucyhpZGVudGlmaWVyKSk7CiAKICAgICBSZW1vdGVNZWRpYVBsYXll
ckNvbmZpZ3VyYXRpb24gcGxheWVyQ29uZmlndXJhdGlvbjsKIAogICAgIGF1dG8gcHJveHkgPSBt
YWtlVW5pcXVlPFJlbW90ZU1lZGlhUGxheWVyUHJveHk+KCp0aGlzLCBpZGVudGlmaWVyLCBtX2dw
dUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY29ubmVjdGlvbigpLCBlbmdpbmVJZGVudGlmaWVyLCBX
VEZNb3ZlKHByb3h5Q29uZmlndXJhdGlvbikpOwogICAgIHByb3h5LT5nZXRDb25maWd1cmF0aW9u
KHBsYXllckNvbmZpZ3VyYXRpb24pOworCiAgICAgbV9wcm94aWVzLmFkZChpZGVudGlmaWVyLCBX
VEZNb3ZlKHByb3h5KSk7CiAKICAgICBjb21wbGV0aW9uSGFuZGxlcihwbGF5ZXJDb25maWd1cmF0
aW9uKTsKQEAgLTc0LDYgKzc4LDggQEAgdm9pZCBSZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94
eTo6Y3JlYXRlTWVkaWFQbGF5ZXIoTWVkaWFQbGF5ZXJJZGVudGlmaWVyIGlkZW4KIAogdm9pZCBS
ZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eTo6ZGVsZXRlTWVkaWFQbGF5ZXIoTWVkaWFQbGF5
ZXJJZGVudGlmaWVyIGlkZW50aWZpZXIpCiB7CisgICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigp
KTsKKyAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKG1fcHJveGllc0xvY2spOwogICAgIGlmIChh
dXRvIHByb3h5ID0gbV9wcm94aWVzLnRha2UoaWRlbnRpZmllcikpCiAgICAgICAgIHByb3h5LT5p
bnZhbGlkYXRlKCk7CiB9CkBAIC0xNjgsMjEgKzE3NCwyNSBAQCB2b2lkIFJlbW90ZU1lZGlhUGxh
eWVyTWFuYWdlclByb3h5OjpzdXBwb3J0c0tleVN5c3RlbShNZWRpYVBsYXllckVudW1zOjpNZWRp
YUVuZwogCiB2b2lkIFJlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5OjpkaWRSZWNlaXZlUGxh
eWVyTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIElQQzo6RGVjb2RlciYgZGVj
b2RlcikKIHsKKyAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOwogICAgIGlmIChhdXRvKiBw
bGF5ZXIgPSBtX3Byb3hpZXMuZ2V0KG1ha2VPYmplY3RJZGVudGlmaWVyPE1lZGlhUGxheWVySWRl
bnRpZmllclR5cGU+KGRlY29kZXIuZGVzdGluYXRpb25JRCgpKSkpCiAgICAgICAgIHBsYXllci0+
ZGlkUmVjZWl2ZU1lc3NhZ2UoY29ubmVjdGlvbiwgZGVjb2Rlcik7CiB9CiAKIHZvaWQgUmVtb3Rl
TWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHk6OmRpZFJlY2VpdmVTeW5jUGxheWVyTWVzc2FnZShJUEM6
OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIElQQzo6RGVjb2RlciYgZGVjb2Rlciwgc3RkOjp1bmlx
dWVfcHRyPElQQzo6RW5jb2Rlcj4mIGVuY29kZXIpCiB7CisgICAgQVNTRVJUKFJ1bkxvb3A6Omlz
TWFpbigpKTsKICAgICBpZiAoYXV0byogcGxheWVyID0gbV9wcm94aWVzLmdldChtYWtlT2JqZWN0
SWRlbnRpZmllcjxNZWRpYVBsYXllcklkZW50aWZpZXJUeXBlPihkZWNvZGVyLmRlc3RpbmF0aW9u
SUQoKSkpKQogICAgICAgICBwbGF5ZXItPmRpZFJlY2VpdmVTeW5jTWVzc2FnZShjb25uZWN0aW9u
LCBkZWNvZGVyLCBlbmNvZGVyKTsKIH0KIAotUmVtb3RlTWVkaWFQbGF5ZXJQcm94eSogUmVtb3Rl
TWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHk6OmdldFByb3h5KGNvbnN0IE1lZGlhUGxheWVySWRlbnRp
ZmllciYgaWRlbnRpZmllcikKKy8vIE1heSBnZXQgY2FsbGVkIG9uIGEgYmFja2dyb3VuZCB0aHJl
YWQuCitSZWZQdHI8TWVkaWFQbGF5ZXI+IFJlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5Ojpt
ZWRpYVBsYXllcihjb25zdCBNZWRpYVBsYXllcklkZW50aWZpZXImIGlkZW50aWZpZXIpCiB7Cisg
ICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhtX3Byb3hpZXNMb2NrKTsKICAgICBhdXRvIHJlc3Vs
dHMgPSBtX3Byb3hpZXMuZmluZChpZGVudGlmaWVyKTsKICAgICBpZiAocmVzdWx0cyAhPSBtX3By
b3hpZXMuZW5kKCkpCi0gICAgICAgIHJldHVybiByZXN1bHRzLT52YWx1ZS5nZXQoKTsKKyAgICAg
ICAgcmV0dXJuIHJlc3VsdHMtPnZhbHVlLT5tZWRpYVBsYXllcigpOwogICAgIHJldHVybiBudWxs
cHRyOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVt
b3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9t
ZWRpYS9SZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eS5oCmluZGV4IGI1YjEzMzYxNDY5Yjdk
ZGIzYzQxMmI1MzQ0NjY1OTNiMjFiYWRjNjUuLjIzN2FmOWI2ODAxMGM2MjQyOTY4ZWZkMGU0MGI1
NGQ0OGQwZjQ1MDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9S
ZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJv
Y2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eS5oCkBAIC0zMyw2ICszMyw3
IEBACiAjaW5jbHVkZSAiVHJhY2tQcml2YXRlUmVtb3RlSWRlbnRpZmllci5oIgogI2luY2x1ZGUg
PFdlYkNvcmUvTWVkaWFQbGF5ZXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL01lZGlhUGxheWVySWRl
bnRpZmllci5oPgorI2luY2x1ZGUgPHd0Zi9Mb2NrLmg+CiAjaW5jbHVkZSA8d3RmL0xvZ2dlckhl
bHBlci5oPgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKQEAgLTY4LDcgKzY5LDcgQEAgcHVibGljOgog
ICAgIFdURkxvZ0NoYW5uZWwmIGxvZ0NoYW5uZWwoKSBjb25zdCBmaW5hbDsKICNlbmRpZgogCi0g
ICAgUmVtb3RlTWVkaWFQbGF5ZXJQcm94eSogZ2V0UHJveHkoY29uc3QgV2ViQ29yZTo6TWVkaWFQ
bGF5ZXJJZGVudGlmaWVyJik7CisgICAgUmVmUHRyPFdlYkNvcmU6Ok1lZGlhUGxheWVyPiBtZWRp
YVBsYXllcihjb25zdCBXZWJDb3JlOjpNZWRpYVBsYXllcklkZW50aWZpZXImKTsKIAogcHJpdmF0
ZToKICAgICAvLyBJUEM6Ok1lc3NhZ2VSZWNlaXZlcgpAQCAtODYsNiArODcsNyBAQCBwcml2YXRl
OgogICAgIHZvaWQgY2xlYXJNZWRpYUNhY2hlRm9yT3JpZ2lucyhXZWJDb3JlOjpNZWRpYVBsYXll
ckVudW1zOjpNZWRpYUVuZ2luZUlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYmLCBWZWN0b3I8V2Vi
Q29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhPiYmKTsKICAgICB2b2lkIHN1cHBvcnRzS2V5U3lzdGVt
KFdlYkNvcmU6Ok1lZGlhUGxheWVyRW51bXM6Ok1lZGlhRW5naW5lSWRlbnRpZmllciwgY29uc3Qg
U3RyaW5nJiYsIGNvbnN0IFN0cmluZyYmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYm
KTsKIAorICAgIExvY2sgbV9wcm94aWVzTG9jazsKICAgICBIYXNoTWFwPFdlYkNvcmU6Ok1lZGlh
UGxheWVySWRlbnRpZmllciwgc3RkOjp1bmlxdWVfcHRyPFJlbW90ZU1lZGlhUGxheWVyUHJveHk+
PiBtX3Byb3hpZXM7CiAgICAgR1BVQ29ubmVjdGlvblRvV2ViUHJvY2VzcyYgbV9ncHVDb25uZWN0
aW9uVG9XZWJQcm9jZXNzOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL1No
YXJlZE1lbW9yeS5oIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9TaGFyZWRNZW1vcnkuaAppbmRl
eCBhMDg1NDZiNzY1NjA0NTYxNDVkODUwNGQ5MzhmMDNlN2Y4MWI0MGQwLi4wMzQ1YTI1ZTczNDRh
M2I3YjVjMTE2MjhjODdkN2E5ZTg1NmQ4NDEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1Bs
YXRmb3JtL1NoYXJlZE1lbW9yeS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vU2hhcmVk
TWVtb3J5LmgKQEAgLTI4LDcgKzI4LDcgQEAKIAogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAj
aW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+Ci0jaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4K
KyNpbmNsdWRlIDx3dGYvVGhyZWFkU2FmZVJlZkNvdW50ZWQuaD4KIAogI2lmIFVTRShVTklYX0RP
TUFJTl9TT0NLRVRTKQogI2luY2x1ZGUgIkF0dGFjaG1lbnQuaCIKQEAgLTU2LDcgKzU2LDcgQEAg
Y2xhc3MgTWFjaFNlbmRSaWdodDsKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKLWNsYXNzIFNoYXJl
ZE1lbW9yeSA6IHB1YmxpYyBSZWZDb3VudGVkPFNoYXJlZE1lbW9yeT4geworY2xhc3MgU2hhcmVk
TWVtb3J5IDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPFNoYXJlZE1lbW9yeT4gewogcHVi
bGljOgogICAgIGVudW0gY2xhc3MgUHJvdGVjdGlvbiB7CiAgICAgICAgIFJlYWRPbmx5LApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvU2hhcmVhYmxlQml0bWFwLmNwcCBiL1NvdXJj
ZS9XZWJLaXQvU2hhcmVkL1NoYXJlYWJsZUJpdG1hcC5jcHAKaW5kZXggODQ0ODg3YmJjM2IxYjNh
NDMzODQxMmU5NDNjOWQ2OTJjYjFiNjJiMC4uYjEwZDVhNjNjMWE1NDg0ZWEyZDFmMzdiOTVkZDU1
NWQzOWUwMzkzOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvU2hhcmVhYmxlQml0
bWFwLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9TaGFyZWFibGVCaXRtYXAuY3BwCkBA
IC0xNzIsNyArMTcyLDYgQEAgU2hhcmVhYmxlQml0bWFwOjpTaGFyZWFibGVCaXRtYXAoY29uc3Qg
SW50U2l6ZSYgc2l6ZSwgQ29uZmlndXJhdGlvbiBjb25maWd1cmF0aW8KICAgICAsIG1fY29uZmln
dXJhdGlvbihjb25maWd1cmF0aW9uKQogICAgICwgbV9kYXRhKGRhdGEpCiB7Ci0gICAgQVNTRVJU
KFJ1bkxvb3A6OmlzTWFpbigpKTsKIH0KIAogU2hhcmVhYmxlQml0bWFwOjpTaGFyZWFibGVCaXRt
YXAoY29uc3QgSW50U2l6ZSYgc2l6ZSwgQ29uZmlndXJhdGlvbiBjb25maWd1cmF0aW9uLCBSZWZQ
dHI8U2hhcmVkTWVtb3J5PiBzaGFyZWRNZW1vcnkpCkBAIC0xODEsOCArMTgwLDYgQEAgU2hhcmVh
YmxlQml0bWFwOjpTaGFyZWFibGVCaXRtYXAoY29uc3QgSW50U2l6ZSYgc2l6ZSwgQ29uZmlndXJh
dGlvbiBjb25maWd1cmF0aW8KICAgICAsIG1fc2hhcmVkTWVtb3J5KHNoYXJlZE1lbW9yeSkKICAg
ICAsIG1fZGF0YShudWxscHRyKQogewotICAgIEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7Ci0K
ICNpZiBVU0UoRElSRUNUMkQpCiAgICAgY3JlYXRlU2hhcmVkUmVzb3VyY2UoKTsKICNlbmRpZgpA
QCAtMTkwLDggKzE4Nyw2IEBAIFNoYXJlYWJsZUJpdG1hcDo6U2hhcmVhYmxlQml0bWFwKGNvbnN0
IEludFNpemUmIHNpemUsIENvbmZpZ3VyYXRpb24gY29uZmlndXJhdGlvCiAKIFNoYXJlYWJsZUJp
dG1hcDo6flNoYXJlYWJsZUJpdG1hcCgpCiB7Ci0gICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigp
KTsKLQogICAgIGlmICghaXNCYWNrZWRCeVNoYXJlZE1lbW9yeSgpKQogICAgICAgICBTaGFyZWFi
bGVCaXRtYXBNYWxsb2M6OmZyZWUobV9kYXRhKTsKICNpZiBVU0UoRElSRUNUMkQpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9TaGFyZWFibGVCaXRtYXAuaCBiL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL1NoYXJlYWJsZUJpdG1hcC5oCmluZGV4IDNhMWZhZDJjNzliY2UxYzdlNWExYTNh
NzJlNjQwMmI4ZmJiMTg1NWYuLmNlYzViNTkzYzVmYThjYzg4Yjg1NjRiMDE2MGI0N2U5ZTMzMTQw
YTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1NoYXJlYWJsZUJpdG1hcC5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1NoYXJlYWJsZUJpdG1hcC5oCkBAIC0yOCw4ICsyOCw4
IEBACiAjaW5jbHVkZSAiU2hhcmVkTWVtb3J5LmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9JbnRSZWN0
Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9QbGF0Zm9ybUltYWdlLmg+Ci0jaW5jbHVkZSA8d3RmL1Jl
ZkNvdW50ZWQuaD4KICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CisjaW5jbHVkZSA8d3RmL1RocmVh
ZFNhZmVSZWZDb3VudGVkLmg+CiAKICNpZiBVU0UoQ0cpCiAjaW5jbHVkZSAiQ29sb3JTcGFjZURh
dGEuaCIKQEAgLTUyLDcgKzUyLDcgQEAgY2xhc3MgR3JhcGhpY3NDb250ZXh0OwogCiBuYW1lc3Bh
Y2UgV2ViS2l0IHsKICAgICAKLWNsYXNzIFNoYXJlYWJsZUJpdG1hcCA6IHB1YmxpYyBSZWZDb3Vu
dGVkPFNoYXJlYWJsZUJpdG1hcD4geworY2xhc3MgU2hhcmVhYmxlQml0bWFwIDogcHVibGljIFRo
cmVhZFNhZmVSZWZDb3VudGVkPFNoYXJlYWJsZUJpdG1hcD4gewogcHVibGljOgogICAgIHN0cnVj
dCBDb25maWd1cmF0aW9uIHsKICAgICAgICAgYm9vbCBpc09wYXF1ZSB7IGZhbHNlIH07CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9jZy9TaGFyZWFibGVCaXRtYXBDRy5jcHAgYi9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9jZy9TaGFyZWFibGVCaXRtYXBDRy5jcHAKaW5kZXggMzY1MzQ4
MjBhZjVhMjI4M2M2ZTZhMDZlNzQzMzE3N2I5MDNkZTBhMS4uOGY5Y2Q1OTQzNmNhMTZhNjdjMzAx
Yjc1NDc2MDU5Nzg3NjhhNDQzYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvY2cv
U2hhcmVhYmxlQml0bWFwQ0cuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL2NnL1NoYXJl
YWJsZUJpdG1hcENHLmNwcApAQCAtODcsNyArODcsNiBAQCB1bnNpZ25lZCBTaGFyZWFibGVCaXRt
YXA6OmNhbGN1bGF0ZUJ5dGVzUGVyUGl4ZWwoY29uc3QgQ29uZmlndXJhdGlvbiYgY29uZmlndXJh
dAogCiBzdGQ6OnVuaXF1ZV9wdHI8R3JhcGhpY3NDb250ZXh0PiBTaGFyZWFibGVCaXRtYXA6OmNy
ZWF0ZUdyYXBoaWNzQ29udGV4dCgpCiB7Ci0gICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsK
ICAgICByZWYoKTsgLy8gQmFsYW5jZWQgYnkgZGVyZWYgaW4gcmVsZWFzZUJpdG1hcENvbnRleHRE
YXRhLgogCiAgICAgdW5zaWduZWQgYnl0ZXNQZXJQaXhlbCA9IGNhbGN1bGF0ZUJ5dGVzUGVyUGl4
ZWwobV9jb25maWd1cmF0aW9uKTsKQEAgLTE1NywxMyArMTU2LDYgQEAgUmV0YWluUHRyPENHSW1h
Z2VSZWY+IFNoYXJlYWJsZUJpdG1hcDo6Y3JlYXRlQ0dJbWFnZShDR0RhdGFQcm92aWRlclJlZiBk
YXRhUHJvdmkKIAogdm9pZCBTaGFyZWFibGVCaXRtYXA6OnJlbGVhc2VCaXRtYXBDb250ZXh0RGF0
YSh2b2lkKiB0eXBlbGVzc0JpdG1hcCwgdm9pZCogdHlwZWxlc3NEYXRhKQogewotICAgIGlmICgh
UnVuTG9vcDo6aXNNYWluKCkpIHsKLSAgICAgICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFt0
eXBlbGVzc0JpdG1hcCwgdHlwZWxlc3NEYXRhXSB7Ci0gICAgICAgICAgICByZWxlYXNlQml0bWFw
Q29udGV4dERhdGEodHlwZWxlc3NCaXRtYXAsIHR5cGVsZXNzRGF0YSk7Ci0gICAgICAgIH0pOwot
ICAgICAgICByZXR1cm47Ci0gICAgfQotCiAgICAgU2hhcmVhYmxlQml0bWFwKiBiaXRtYXAgPSBz
dGF0aWNfY2FzdDxTaGFyZWFibGVCaXRtYXAqPih0eXBlbGVzc0JpdG1hcCk7CiAgICAgQVNTRVJU
X1VOVVNFRCh0eXBlbGVzc0RhdGEsIGJpdG1hcC0+ZGF0YSgpID09IHR5cGVsZXNzRGF0YSk7CiAg
ICAgYml0bWFwLT5kZXJlZigpOyAvLyBCYWxhbmNlZCBieSByZWYgaW4gY3JlYXRlR3JhcGhpY3ND
b250ZXh0LgpAQCAtMTcxLDEzICsxNjMsNiBAQCB2b2lkIFNoYXJlYWJsZUJpdG1hcDo6cmVsZWFz
ZUJpdG1hcENvbnRleHREYXRhKHZvaWQqIHR5cGVsZXNzQml0bWFwLCB2b2lkKiB0eXBlbAogCiB2
b2lkIFNoYXJlYWJsZUJpdG1hcDo6cmVsZWFzZURhdGFQcm92aWRlckRhdGEodm9pZCogdHlwZWxl
c3NCaXRtYXAsIGNvbnN0IHZvaWQqIHR5cGVsZXNzRGF0YSwgc2l6ZV90KQogewotICAgIGlmICgh
UnVuTG9vcDo6aXNNYWluKCkpIHsKLSAgICAgICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFt0
eXBlbGVzc0JpdG1hcCwgdHlwZWxlc3NEYXRhXSB7Ci0gICAgICAgICAgICByZWxlYXNlRGF0YVBy
b3ZpZGVyRGF0YSh0eXBlbGVzc0JpdG1hcCwgdHlwZWxlc3NEYXRhLCAwKTsKLSAgICAgICAgfSk7
Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KICAgICBTaGFyZWFibGVCaXRtYXAqIGJpdG1hcCA9
IHN0YXRpY19jYXN0PFNoYXJlYWJsZUJpdG1hcCo+KHR5cGVsZXNzQml0bWFwKTsKICAgICBBU1NF
UlRfVU5VU0VEKHR5cGVsZXNzRGF0YSwgYml0bWFwLT5kYXRhKCkgPT0gdHlwZWxlc3NEYXRhKTsK
ICAgICBiaXRtYXAtPmRlcmVmKCk7IC8vIEJhbGFuY2VkIGJ5IHJlZiBpbiBjcmVhdGVDR0ltYWdl
Lgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>417568</attachid>
            <date>2021-01-13 14:54:26 -0800</date>
            <delta_ts>2021-01-13 16:42:03 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-220476-20210113145426.patch</filename>
            <type>text/plain</type>
            <size>55885</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcxNDM5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IGM1N2I2NTZkYWIwOGY4ZWU1NGJhZTVk
NjM3MjUxMTlkMTBhY2M0M2IuLjQ3NzQ4MjQ0ZWFhZGFlODEzZTY5NDVlYjM0ZTAzYTYyNDRhMmI3
NGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTggQEAKKzIwMjEtMDEtMTMgIENocmlzIER1bWV6ICA8Y2R1bWV6
QGFwcGxlLmNvbT4KKworICAgICAgICBbR1BVUHJvY2Vzc10gTW92ZSBET00gLyBDYW52YXMgcmVu
ZGVyaW5nIG9mZiB0aGUgbWFpbiB0aHJlYWQgaW4gdGhlIEdQVVByb2Nlc3MKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyMDQ3NgorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCB0cmFpdCBmdW5jdGlvbiB0
aGF0IGdldHMgY2FsbGVkIFRpbnlMUlVDYWNoZSB0byBjb252ZXJ0IHRoZSBrZXkgYmVmb3JlIHN0
b3JpbmcKKyAgICAgICAgaXQuIEl0IGlzIHVzZWZ1bCBmb3IgY2xpZW50cyB0aGF0IG5lZWQgdG8g
Y2FsbCBpc29sYXRlZENvcHkoKSBvbiB0aGUga2V5IFN0cmluZyBiZWZvcmUKKyAgICAgICAgc3Rv
cmluZyBpdC4KKworICAgICAgICAqIHd0Zi9UaW55TFJVQ2FjaGUuaDoKKyAgICAgICAgKFdURjo6
VGlueUxSVUNhY2hlUG9saWN5OjpjcmVhdGVLZXlGb3JTdG9yYWdlKToKKyAgICAgICAgKFdURjo6
VGlueUxSVUNhY2hlOjpnZXQpOgorCiAyMDIxLTAxLTExICBLaW1tbyBLaW5udW5lbiAgPGtraW5u
dW5lbkBhcHBsZS5jb20+CiAKICAgICAgICAgV2ViS2l0OjpJUEM6OkVuY29kZXIgbmVlZHMgZGVm
aW5pdGlvbnMgb2YgYWxsIGN1c3RvbSBlbnVtIHZhbHVlcyBhdCB0aGUgRW5jb2RlciBkZWZpbml0
aW9uIHRpbWUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9X
ZWJDb3JlL0NoYW5nZUxvZwppbmRleCA1ZTlmZjM4MTc0ODkxYzJkMzRiYTA3MWNjOWQ2ZTQzMGU4
NDhiMTljLi5mNGExMzg4NzVmOTdjMmE4MGRkMjQ1ZjVkZTg1OWY1YzRlZTBhYzIwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCkBAIC0xLDMgKzEsNDkgQEAKKzIwMjEtMDEtMTMgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFw
cGxlLmNvbT4KKworICAgICAgICBbR1BVUHJvY2Vzc10gTW92ZSBET00gLyBDYW52YXMgcmVuZGVy
aW5nIG9mZiB0aGUgbWFpbiB0aHJlYWQgaW4gdGhlIEdQVVByb2Nlc3MKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyMDQ3NgorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE1ha2Ugc29tZSBjYWNoZXMgdGhyZWFk
LXNhZmUgbm93IHRoYXQgd2UgZG8gcmVuZGVyaW5nIG9mZiB0aGUgbWFpbiB0aHJlYWQgaW4KKyAg
ICAgICAgdGhlIEdQVVByb2Nlc3MuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLCBjb3ZlcmVkIGJ5
IGV4aXN0aW5nIHRlc3RzLgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZm
ZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5oOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL1NoYWRvd0JsdXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
U2NyYXRjaEJ1ZmZlcjo6U2NyYXRjaEJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpTY3JhdGNo
QnVmZmVyOjpnZXRTY3JhdGNoQnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcmF0Y2hCdWZm
ZXI6OnNldENhY2hlZFNoYWRvd1ZhbHVlcyk6CisgICAgICAgIChXZWJDb3JlOjpTY3JhdGNoQnVm
ZmVyOjpzZXRDYWNoZWRJbnNldFNoYWRvd1ZhbHVlcyk6CisgICAgICAgIChXZWJDb3JlOjpTY3Jh
dGNoQnVmZmVyOjpzY2hlZHVsZVNjcmF0Y2hCdWZmZXJQdXJnZSk6CisgICAgICAgIChXZWJDb3Jl
OjpTY3JhdGNoQnVmZmVyOjpwdXJnZVRpbWVyRmlyZWQpOgorICAgICAgICAoV2ViQ29yZTo6U2Ny
YXRjaEJ1ZmZlcjo6Y2xlYXJTY3JhdGNoQnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcmF0
Y2hCdWZmZXI6OnNpbmdsZXRvbik6CisgICAgICAgIChXZWJDb3JlOjpTY3JhdGNoQnVmZmVyOjps
b2NrKToKKyAgICAgICAgKFdlYkNvcmU6OlNoYWRvd0JsdXI6OmRyYXdSZWN0U2hhZG93V2l0aFRp
bGluZyk6CisgICAgICAgIChXZWJDb3JlOjpTaGFkb3dCbHVyOjpkcmF3SW5zZXRTaGFkb3dXaXRo
VGlsaW5nKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlclV0aWxp
dGllc0NHLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnV0aUZyb21JbWFnZUJ1ZmZlck1JTUVUeXBl
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9TdWJpbWFnZUNhY2hlV2l0aFRpbWVy
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlN1YmltYWdlQ2FjaGVXaXRoVGltZXI6OlN1YmltYWdl
Q2FjaGVXaXRoVGltZXIpOgorICAgICAgICAoV2ViQ29yZTo6U3ViaW1hZ2VDYWNoZVdpdGhUaW1l
cjo6cHJ1bmVDYWNoZVRpbWVyRmlyZWQpOgorICAgICAgICAoV2ViQ29yZTo6U3ViaW1hZ2VDYWNo
ZVdpdGhUaW1lcjo6c3ViaW1hZ2UpOgorICAgICAgICAoV2ViQ29yZTo6U3ViaW1hZ2VDYWNoZVdp
dGhUaW1lcjo6Y2xlYXJJbWFnZUFuZFN1YmltYWdlcyk6CisgICAgICAgIChXZWJDb3JlOjpTdWJp
bWFnZUNhY2hlV2l0aFRpbWVyOjpjbGVhckFsbCk6CisgICAgICAgIChXZWJDb3JlOjpTdWJpbWFn
ZUNhY2hlV2l0aFRpbWVyOjpzdWJpbWFnZUNhY2hlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9jZy9TdWJpbWFnZUNhY2hlV2l0aFRpbWVyLmg6CisgICAgICAgICogcGxhdGZvcm0vbmV0
d29yay9tYWMvVVRJVXRpbGl0aWVzLm1tOgorICAgICAgICAoV2ViQ29yZTo6VVRJRnJvbVVua25v
d25NSU1FVHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpVVElGcm9tTUlNRVR5cGVDYWNoZVBvbGlj
eTo6Y3JlYXRlVmFsdWVGb3JLZXkpOgorICAgICAgICAoV2ViQ29yZTo6VVRJRnJvbU1JTUVUeXBl
Q2FjaGVQb2xpY3k6OmNyZWF0ZUtleUZvclN0b3JhZ2UpOgorICAgICAgICAoV2ViQ29yZTo6Y2Fj
aGVVVElGcm9tTWltZVR5cGUpOgorICAgICAgICAoV2ViQ29yZTo6VVRJRnJvbU1JTUVUeXBlKToK
KyAgICAgICAgKiBwbGF0Zm9ybS90ZXh0L2NmL0h5cGhlbmF0aW9uQ0YuY3BwOgorICAgICAgICAq
IHBsYXRmb3JtL3RleHQvaHlwaGVuL0h5cGhlbmF0aW9uTGliSHlwaGVuLmNwcDoKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyMDQ3NgorCiAyMDIxLTAx
LTEzICBNYXJ0aW4gUm9iaW5zb24gIDxtcm9iaW5zb25AaWdhbGlhLmNvbT4KIAogICAgICAgICBT
Y3JvbGwtc25hcCBwb2ludHMgc2hvdWxkIGJlIHRyaWdnZXJlZCBkdXJpbmcgcHJvZ3JhbW1hdGlj
IHNjcm9sbApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2Vi
S2l0L0NoYW5nZUxvZwppbmRleCA2OTA5ZDE5NDAwNDU5MzQzMWM4MTlkYjYyNjBkNWZjNWNiMGJh
NGViLi45Nzk0OTY5NDUxM2E3NjZmMDdlOTAzNTFlN2RhMTc5ZmMzMzQwNWViIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpA
QCAtMSwzICsxLDcwIEBACisyMDIxLTAxLTEzICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5j
b20+CisKKyAgICAgICAgW0dQVVByb2Nlc3NdIE1vdmUgRE9NIC8gQ2FudmFzIHJlbmRlcmluZyBv
ZmYgdGhlIG1haW4gdGhyZWFkIGluIHRoZSBHUFVQcm9jZXNzCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjA0NzYKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBNb3ZlIERPTSAvIENhbnZhcyByZW5kZXJpbmcg
b2ZmIHRoZSBtYWluIHRocmVhZCAoYW5kIG9uIGEgaGlnaC1wcmlvcml0eSBzZXJpYWwgV29ya1F1
ZXVlKSBpbiB0aGUKKyAgICAgICAgR1BVUHJvY2VzcyBieSBtYWtpbmcgUmVtb3RlUmVuZGVyaW5n
QmFja2VuZCBhIFdvcmtRdWV1ZU1lc3NhZ2VSZWNlaXZlci4gVGhlcmUgaXMgYSBzZXJpYWwgV29y
a1F1ZXVlCisgICAgICAgIHBlciBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kLCB3aGljaCBtZWFucyBl
YWNoIFdlYlBhZ2UgZ2V0cyBpdHMgb3duIFdvcmtRdWV1ZS4KKworICAgICAgICBMb2NhbCB0ZXN0
aW5nIHNlZW1zIHRvIGluZGljYXRlIHRoYXQgdGhpcyBjaGFuZ2UgaXMgcGVyZi1uZXV0cmFsIChJ
IGhhdmUgc2NoZWR1bGVkIEEvQiB0ZXN0aW5nIG9uCisgICAgICAgIHRoZSBib3RzIHRvIGNvbmZp
cm0pLiBJIHRoaW5rIHRoaXMgaXMgZ29vZCBuZXdzIHNpbmNlIEkgYmVsaWV2ZSB0aGlzIG5ldyBh
cmNoaXRlY3R1cmUgd2lsbCBnaXZlCisgICAgICAgIHVzIG1vcmUgb3B0aW1pemF0aW9uIG9wcG9y
dHVuaXRpZXMgaW4gdGhlIGZ1dHVyZS4gRm9yIGV4YW1wbGUsIHdlIHdvdWxkIGJlIGFibGUgdG8g
bW9yZQorICAgICAgICBhZ2dyZXNzaXZlbHkgd2FpdCBvbiB0aGUgY3Jvc3MtcHJvY2VzcyBzZW1h
cGhvcmUgd2hlbiB3YWl0aW5nIGZvciBuZXcgRGlzcGxheUxpc3QgZW50cmllcyB3aXRob3V0Cisg
ICAgICAgIHdvcnJ5aW5nIGFib3V0IGJsb2NraW5nIHRoZSBtYWluIHRocmVhZC4KKworICAgICAg
ICBJIGhhdmUgcnVuIGxheW91dCB0ZXN0cyBpbiBEZWJ1ZyBvbiBib3RoIG1hY09TICYgaU9TIHdp
dGggdGhlIEdQVVByb2Nlc3MgZW5hYmxlZCBhbmQgSSBiZWxpZXZlIEkKKyAgICAgICAgaGF2ZSBm
aXhlZCBhbGwgdGhlIGNyYXNoZXMgdGhhdCB3ZXJlIGRpc2NvdmVyZWQuCisKKyAgICAgICAgKiBH
UFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwOgorICAgICAgICAoV2ViS2l0
OjpHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzKToK
KyAgICAgICAgKFdlYktpdDo6R1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6ZGlkQ2xvc2UpOgor
ICAgICAgICAoV2ViS2l0OjpHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpjcmVhdGVSZW5kZXJp
bmdCYWNrZW5kKToKKyAgICAgICAgKFdlYktpdDo6R1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6
UmVtb3RlUmVuZGVyaW5nQmFja2VuZFdyYXBwZXI6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmRXcmFw
cGVyKToKKyAgICAgICAgKFdlYktpdDo6R1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6UmVtb3Rl
UmVuZGVyaW5nQmFja2VuZFdyYXBwZXI6On5SZW1vdGVSZW5kZXJpbmdCYWNrZW5kV3JhcHBlcik6
CisgICAgICAgICogR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmg6CisgICAg
ICAgIChXZWJLaXQ6OkdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnJlbW90ZU1lZGlhUGxheWVy
TWFuYWdlclByb3h5KToKKyAgICAgICAgKiBHUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRl
cmluZ0JhY2tlbmQuY3BwOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5k
OjpjcmVhdGUpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpSZW1v
dGVSZW5kZXJpbmdCYWNrZW5kKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlUmVuZGVyaW5nQmFj
a2VuZDo6flJlbW90ZVJlbmRlcmluZ0JhY2tlbmQpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVS
ZW5kZXJpbmdCYWNrZW5kOjpkaXNjb25uZWN0KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlUmVu
ZGVyaW5nQmFja2VuZDo6bWVzc2FnZVNlbmRlckNvbm5lY3Rpb24gY29uc3QpOgorICAgICAgICAo
V2ViS2l0OjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjphcHBseU1lZGlhSXRlbSk6CisgICAgICAg
IChXZWJLaXQ6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OmNyZWF0ZUltYWdlQnVmZmVyKToKKyAg
ICAgICAgKFdlYktpdDo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6d2FrZVVwQW5kQXBwbHlEaXNw
bGF5TGlzdCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OmdldElt
YWdlRGF0YSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OmdldERh
dGFVUkxGb3JJbWFnZUJ1ZmZlcik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVJlbmRlcmluZ0Jh
Y2tlbmQ6OmdldERhdGFGb3JJbWFnZUJ1ZmZlcik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVJl
bmRlcmluZ0JhY2tlbmQ6OmdldEJHUkFEYXRhRm9ySW1hZ2VCdWZmZXIpOgorICAgICAgICAoV2Vi
S2l0OjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpjYWNoZU5hdGl2ZUltYWdlKToKKyAgICAgICAg
KFdlYktpdDo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6Y2FjaGVGb250KToKKyAgICAgICAgKFdl
YktpdDo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6ZGVsZXRlQWxsRm9udHMpOgorICAgICAgICAo
V2ViS2l0OjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpyZWxlYXNlUmVtb3RlUmVzb3VyY2UpOgor
ICAgICAgICAoV2ViS2l0OjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpkaWRDcmVhdGVTaGFyZWRE
aXNwbGF5TGlzdEhhbmRsZSk6CisgICAgICAgICogR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVS
ZW5kZXJpbmdCYWNrZW5kLmg6CisgICAgICAgICogR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVS
ZW5kZXJpbmdCYWNrZW5kLm1lc3NhZ2VzLmluOgorICAgICAgICAqIEdQVVByb2Nlc3MvbWVkaWEv
UmVtb3RlTGVnYWN5Q0RNUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVMZWdhY3lD
RE1Qcm94eTo6Y2RtTWVkaWFQbGF5ZXIgY29uc3QpOgorICAgICAgICAqIEdQVVByb2Nlc3MvbWVk
aWEvUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpS
ZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eTo6Y3JlYXRlTWVkaWFQbGF5ZXIpOgorICAgICAg
ICAoV2ViS2l0OjpSZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eTo6ZGVsZXRlTWVkaWFQbGF5
ZXIpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eTo6ZGlk
UmVjZWl2ZVBsYXllck1lc3NhZ2UpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVNZWRpYVBsYXll
ck1hbmFnZXJQcm94eTo6ZGlkUmVjZWl2ZVN5bmNQbGF5ZXJNZXNzYWdlKToKKyAgICAgICAgKFdl
YktpdDo6UmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHk6Om1lZGlhUGxheWVyKToKKyAgICAg
ICAgKiBHUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5Lmg6Cisg
ICAgICAgICogUGxhdGZvcm0vU2hhcmVkTWVtb3J5Lmg6CisgICAgICAgICogU2hhcmVkL1NoYXJl
YWJsZUJpdG1hcC5jcHA6CisgICAgICAgIChXZWJLaXQ6OlNoYXJlYWJsZUJpdG1hcDo6U2hhcmVh
YmxlQml0bWFwKToKKyAgICAgICAgKFdlYktpdDo6U2hhcmVhYmxlQml0bWFwOjp+U2hhcmVhYmxl
Qml0bWFwKToKKyAgICAgICAgKiBTaGFyZWQvU2hhcmVhYmxlQml0bWFwLmg6CisgICAgICAgICog
U2hhcmVkL2NnL1NoYXJlYWJsZUJpdG1hcENHLmNwcDoKKyAgICAgICAgKFdlYktpdDo6U2hhcmVh
YmxlQml0bWFwOjpjcmVhdGVHcmFwaGljc0NvbnRleHQpOgorICAgICAgICAoV2ViS2l0OjpTaGFy
ZWFibGVCaXRtYXA6OnJlbGVhc2VCaXRtYXBDb250ZXh0RGF0YSk6CisgICAgICAgIChXZWJLaXQ6
OlNoYXJlYWJsZUJpdG1hcDo6cmVsZWFzZURhdGFQcm92aWRlckRhdGEpOgorCiAyMDIxLTAxLTEy
ICBCSiBCdXJnICA8YmJ1cmdAYXBwbGUuY29tPgogCiAgICAgICAgIFtDb2NvYV0gV2ViIEluc3Bl
Y3RvcjogbW92ZSBicm93c2VyIGRvbWFpbiBhY3RpdmF0aW9uIG1ldGhvZHMgYmFjayB0byBXS1dl
YlZpZXcgYW5kIFVJRGVsZWdhdGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL1RpbnlMUlVD
YWNoZS5oIGIvU291cmNlL1dURi93dGYvVGlueUxSVUNhY2hlLmgKaW5kZXggZDhiYzdiODEzMTE5
OWUwM2ExZmQ4N2E2NGY1NzE0Mjc4ZjM4Mzk3Yy4uOTAzZTViYmE3MzgxZDgzNGU3MzM0ZDkxY2Zi
YTlhZTQ4NzEwNTEyZSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvVGlueUxSVUNhY2hlLmgK
KysrIGIvU291cmNlL1dURi93dGYvVGlueUxSVUNhY2hlLmgKQEAgLTM1LDYgKzM1LDcgQEAgc3Ry
dWN0IFRpbnlMUlVDYWNoZVBvbGljeSB7CiAgICAgc3RhdGljIGJvb2wgaXNLZXlOdWxsKGNvbnN0
IEtleVR5cGUmKSB7IHJldHVybiBmYWxzZTsgfQogICAgIHN0YXRpYyBWYWx1ZVR5cGUgY3JlYXRl
VmFsdWVGb3JOdWxsS2V5KCkgeyByZXR1cm4geyB9OyB9CiAgICAgc3RhdGljIFZhbHVlVHlwZSBj
cmVhdGVWYWx1ZUZvcktleShjb25zdCBLZXlUeXBlJikgeyByZXR1cm4geyB9OyB9CisgICAgc3Rh
dGljIEtleVR5cGUgY3JlYXRlS2V5Rm9yU3RvcmFnZShjb25zdCBLZXlUeXBlJiBrZXkpIHsgcmV0
dXJuIGtleTsgfQogfTsKIAogdGVtcGxhdGU8dHlwZW5hbWUgS2V5VHlwZSwgdHlwZW5hbWUgVmFs
dWVUeXBlLCBzaXplX3QgY2FwYWNpdHkgPSA0LCB0eXBlbmFtZSBQb2xpY3kgPSBUaW55TFJVQ2Fj
aGVQb2xpY3k8S2V5VHlwZSwgVmFsdWVUeXBlPj4KQEAgLTY2LDcgKzY3LDcgQEAgcHVibGljOgog
ICAgICAgICBpZiAobV9jYWNoZS5zaXplKCkgPT0gY2FwYWNpdHkpCiAgICAgICAgICAgICBtX2Nh
Y2hlLnJlbW92ZSgwKTsKIAotICAgICAgICBtX2NhY2hlLmFwcGVuZChzdGQ6Om1ha2VfcGFpcihr
ZXksIFBvbGljeTo6Y3JlYXRlVmFsdWVGb3JLZXkoa2V5KSkpOworICAgICAgICBtX2NhY2hlLmFw
cGVuZChzdGQ6Om1ha2VfcGFpcihQb2xpY3k6OmNyZWF0ZUtleUZvclN0b3JhZ2Uoa2V5KSwgUG9s
aWN5OjpjcmVhdGVWYWx1ZUZvcktleShrZXkpKSk7CiAgICAgICAgIHJldHVybiBtX2NhY2hlLmxh
c3QoKS5zZWNvbmQ7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9JbWFnZUJ1ZmZlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvSW1hZ2VCdWZmZXIuaAppbmRleCA0MjVhMzJlYTQ0OWMwZWQ1MjI2Y2M1ODk3ZDljYzE2Yjc4
NjIwZmRiLi4zNmQ3NGNhMzlkZTE3Y2QwM2MxM2JiNzVlNGQ1ZTM4NDhjMzNlY2ZlIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlci5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyLmgKQEAgLTQyLDcg
KzQyLDcgQEAgY2xhc3MgRHJhd2luZ0NvbnRleHQ7CiBzdHJ1Y3QgSXRlbUJ1ZmZlckhhbmRsZTsK
IH0KIAotY2xhc3MgSW1hZ2VCdWZmZXIgOiBwdWJsaWMgUmVmQ291bnRlZDxJbWFnZUJ1ZmZlcj4s
IHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxJbWFnZUJ1ZmZlcj4geworY2xhc3MgSW1hZ2VCdWZmZXIg
OiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8SW1hZ2VCdWZmZXI+LCBwdWJsaWMgQ2FuTWFr
ZVdlYWtQdHI8SW1hZ2VCdWZmZXI+IHsKIHB1YmxpYzoKICAgICAvLyBXaWxsIHJldHVybiBhIG51
bGwgcG9pbnRlciBvbiBhbGxvY2F0aW9uIGZhaWx1cmUuCiAgICAgV0VCQ09SRV9FWFBPUlQgc3Rh
dGljIFJlZlB0cjxJbWFnZUJ1ZmZlcj4gY3JlYXRlKGNvbnN0IEZsb2F0U2l6ZSYsIFJlbmRlcmlu
Z01vZGUsIFNob3VsZFVzZURpc3BsYXlMaXN0LCBSZW5kZXJpbmdQdXJwb3NlLCBmbG9hdCByZXNv
bHV0aW9uU2NhbGUgPSAxLCBDb2xvclNwYWNlID0gQ29sb3JTcGFjZTo6U1JHQiwgUGl4ZWxGb3Jt
YXQgPSBQaXhlbEZvcm1hdDo6QkdSQTgsIGNvbnN0IEhvc3RXaW5kb3cqID0gbnVsbHB0cik7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuaAppbmRleCA4
N2EzZWM3MWRiYWMxZDYzNDI3NGY5YThkMzg0MWJjNWFmNDJlZWU2Li4yNmM3NjMxOTg0OTIyOWYw
YzFhNTQyMTJlYzk2MjExYWViYjRlYmRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL01lZGlhUGxheWVyLmgKQEAgLTUxLDYgKzUxLDcgQEAKICNpbmNsdWRlIDx3dGYv
SGFzaFNldC5oPgogI2luY2x1ZGUgPHd0Zi9Mb2dnZXIuaD4KICNpbmNsdWRlIDx3dGYvTWVkaWFU
aW1lLmg+CisjaW5jbHVkZSA8d3RmL1RocmVhZFNhZmVSZWZDb3VudGVkLmg+CiAjaW5jbHVkZSA8
d3RmL1dhbGxUaW1lLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nSGFzaC5oPgogCkBAIC0y
ODIsNyArMjgzLDcgQEAgcHVibGljOgogI2VuZGlmCiB9OwogCi1jbGFzcyBXRUJDT1JFX0VYUE9S
VCBNZWRpYVBsYXllciA6IHB1YmxpYyBNZWRpYVBsYXllckVudW1zLCBwdWJsaWMgUmVmQ291bnRl
ZDxNZWRpYVBsYXllcj4geworY2xhc3MgV0VCQ09SRV9FWFBPUlQgTWVkaWFQbGF5ZXIgOiBwdWJs
aWMgTWVkaWFQbGF5ZXJFbnVtcywgcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPE1lZGlhUGxh
eWVyLCBXVEY6OkRlc3RydWN0aW9uVGhyZWFkOjpNYWluPiB7CiAgICAgV1RGX01BS0VfTk9OQ09Q
WUFCTEUoTWVkaWFQbGF5ZXIpOyBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAg
ICBzdGF0aWMgUmVmPE1lZGlhUGxheWVyPiBjcmVhdGUoTWVkaWFQbGF5ZXJDbGllbnQmKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1NoYWRvd0JsdXIuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvU2hhZG93Qmx1ci5jcHAKaW5kZXgg
ODMzODliYTY4MDU2Mzc3Zjk5ZjBmNWExY2QzMDdiZjZjZjkxZDgyYS4uYWMxNDZkOTk1NzA5NWIy
N2ZiZDc4MDcxMWVjOGI5MDcyNWEyZmJlZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvU2hhZG93Qmx1ci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvU2hhZG93Qmx1ci5jcHAKQEAgLTM2LDkgKzM2LDExIEBACiAjaW5jbHVkZSAi
SW1hZ2VCdWZmZXIuaCIKICNpbmNsdWRlICJJbWFnZURhdGEuaCIKICNpbmNsdWRlICJUaW1lci5o
IgorI2luY2x1ZGUgPHd0Zi9Mb2NrLmg+CiAjaW5jbHVkZSA8d3RmL01hdGhFeHRyYXMuaD4KICNp
bmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KICNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUu
aD4KKyNpbmNsdWRlIDx3dGYvUnVuTG9vcC5oPgogI2luY2x1ZGUgPHd0Zi9TY29wZS5oPgogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CkBAIC02MSwyMyArNjMsMjEgQEAgY2xhc3MgU2NyYXRjaEJ1ZmZl
ciB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgU2NyYXRjaEJ1
ZmZlcigpCi0gICAgICAgIDogbV9wdXJnZVRpbWVyKCp0aGlzLCAmU2NyYXRjaEJ1ZmZlcjo6Y2xl
YXJTY3JhdGNoQnVmZmVyKQotICAgICAgICAsIG1fbGFzdFdhc0luc2V0KGZhbHNlKQotI2lmIEFT
U0VSVF9FTkFCTEVECi0gICAgICAgICwgbV9idWZmZXJJblVzZShmYWxzZSkKLSNlbmRpZgorICAg
ICAgICA6IG1fcHVyZ2VUaW1lcihSdW5Mb29wOjptYWluKCksIHRoaXMsICZTY3JhdGNoQnVmZmVy
OjpwdXJnZVRpbWVyRmlyZWQpCiAgICAgewogICAgIH0KIAotICAgIEltYWdlQnVmZmVyKiBnZXRT
Y3JhdGNoQnVmZmVyKGNvbnN0IEludFNpemUmIHNpemUpCisgICAgUmVmUHRyPEltYWdlQnVmZmVy
PiBnZXRTY3JhdGNoQnVmZmVyKGNvbnN0IEludFNpemUmIHNpemUpCiAgICAgewotICAgICAgICBB
U1NFUlQoIW1fYnVmZmVySW5Vc2UpOwotI2lmIEFTU0VSVF9FTkFCTEVECi0gICAgICAgIG1fYnVm
ZmVySW5Vc2UgPSB0cnVlOwotI2VuZGlmCisgICAgICAgIEFTU0VSVChsb2NrKCkuaXNIZWxkKCkp
OworICAgICAgICBhdXRvIHJlbGVhc2VMYXllckltYWdlID0gbWFrZVNjb3BlRXhpdChbdGhpc10g
eworICAgICAgICAgICAgaWYgKG1faW1hZ2VCdWZmZXIpCisgICAgICAgICAgICAgICAgc2NoZWR1
bGVTY3JhdGNoQnVmZmVyUHVyZ2UoKTsKKyAgICAgICAgfSk7CisKICAgICAgICAgLy8gV2UgZG8g
bm90IG5lZWQgdG8gcmVjcmVhdGUgdGhlIGJ1ZmZlciBpZiB0aGUgY3VycmVudCBidWZmZXIgaXMg
bGFyZ2UgZW5vdWdoLgogICAgICAgICBpZiAobV9pbWFnZUJ1ZmZlciAmJiBtX2ltYWdlQnVmZmVy
LT5sb2dpY2FsU2l6ZSgpLndpZHRoKCkgPj0gc2l6ZS53aWR0aCgpICYmIG1faW1hZ2VCdWZmZXIt
PmxvZ2ljYWxTaXplKCkuaGVpZ2h0KCkgPj0gc2l6ZS5oZWlnaHQoKSkKLSAgICAgICAgICAgIHJl
dHVybiBtX2ltYWdlQnVmZmVyLmdldCgpOworICAgICAgICAgICAgcmV0dXJuIG1faW1hZ2VCdWZm
ZXI7CiAKICAgICAgICAgLy8gUm91bmQgdG8gdGhlIG5lYXJlc3QgMzIgcGl4ZWxzIHNvIHdlIGRv
IG5vdCBncm93IHRoZSBidWZmZXIgZm9yIHNpbWlsYXIgc2l6ZWQgcmVxdWVzdHMuCiAgICAgICAg
IEludFNpemUgcm91bmRlZFNpemUocm91bmRVcFRvTXVsdGlwbGVPZjMyKHNpemUud2lkdGgoKSks
IHJvdW5kVXBUb011bHRpcGxlT2YzMihzaXplLmhlaWdodCgpKSk7CkBAIC04NiwxMSArODYsMTIg
QEAgcHVibGljOgogCiAgICAgICAgIC8vIFNoYWRvd0JsdXIgaXMgbm90IHVzZWQgd2l0aCBhY2Nl
bGVyYXRlZCBkcmF3aW5nLCBzbyBpdCdzIE9LIHRvIG1ha2UgYW4gdW5jb25kaXRpb25hbGx5IHVu
YWNjZWxlcmF0ZWQgYnVmZmVyLgogICAgICAgICBtX2ltYWdlQnVmZmVyID0gSW1hZ2VCdWZmZXI6
OmNyZWF0ZShyb3VuZGVkU2l6ZSwgUmVuZGVyaW5nTW9kZTo6VW5hY2NlbGVyYXRlZCwgMSk7Ci0g
ICAgICAgIHJldHVybiBtX2ltYWdlQnVmZmVyLmdldCgpOworICAgICAgICByZXR1cm4gbV9pbWFn
ZUJ1ZmZlcjsKICAgICB9CiAKICAgICBib29sIHNldENhY2hlZFNoYWRvd1ZhbHVlcyhjb25zdCBG
bG9hdFNpemUmIHJhZGl1cywgY29uc3QgQ29sb3ImIGNvbG9yLCBjb25zdCBGbG9hdFJlY3QmIHNo
YWRvd1JlY3QsIGNvbnN0IEZsb2F0Um91bmRlZFJlY3Q6OlJhZGlpJiByYWRpaSwgY29uc3QgRmxv
YXRTaXplJiBsYXllclNpemUpCiAgICAgeworICAgICAgICBBU1NFUlQobG9jaygpLmlzSGVsZCgp
KTsKICAgICAgICAgaWYgKCFtX2xhc3RXYXNJbnNldCAmJiBtX2xhc3RSYWRpdXMgPT0gcmFkaXVz
ICYmIG1fbGFzdENvbG9yID09IGNvbG9yICYmIG1fbGFzdFNoYWRvd1JlY3QgPT0gc2hhZG93UmVj
dCAmJiAgbV9sYXN0UmFkaWkgPT0gcmFkaWkgJiYgbV9sYXN0TGF5ZXJTaXplID09IGxheWVyU2l6
ZSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKIApAQCAtMTA2LDYgKzEwNyw3IEBAIHB1Ymxp
YzoKIAogICAgIGJvb2wgc2V0Q2FjaGVkSW5zZXRTaGFkb3dWYWx1ZXMoY29uc3QgRmxvYXRTaXpl
JiByYWRpdXMsIGNvbnN0IENvbG9yJiBjb2xvciwgY29uc3QgRmxvYXRSZWN0JiBib3VuZHMsIGNv
bnN0IEZsb2F0UmVjdCYgc2hhZG93UmVjdCwgY29uc3QgRmxvYXRSb3VuZGVkUmVjdDo6UmFkaWkm
IHJhZGlpKQogICAgIHsKKyAgICAgICAgQVNTRVJUKGxvY2soKS5pc0hlbGQoKSk7CiAgICAgICAg
IGlmIChtX2xhc3RXYXNJbnNldCAmJiBtX2xhc3RSYWRpdXMgPT0gcmFkaXVzICYmIG1fbGFzdENv
bG9yID09IGNvbG9yICYmIG1fbGFzdEluc2V0Qm91bmRzID09IGJvdW5kcyAmJiBzaGFkb3dSZWN0
ID09IG1fbGFzdFNoYWRvd1JlY3QgJiYgcmFkaWkgPT0gbV9sYXN0UmFkaWkpCiAgICAgICAgICAg
ICByZXR1cm4gZmFsc2U7CiAKQEAgLTExOSw1MCArMTIxLDU3IEBAIHB1YmxpYzoKICAgICAgICAg
cmV0dXJuIHRydWU7CiAgICAgfQogCisgICAgc3RhdGljIFNjcmF0Y2hCdWZmZXImIHNpbmdsZXRv
bigpOworICAgIHN0YXRpYyBMb2NrJiBsb2NrKCk7CisKK3ByaXZhdGU6CiAgICAgdm9pZCBzY2hl
ZHVsZVNjcmF0Y2hCdWZmZXJQdXJnZSgpCiAgICAgewotI2lmIEFTU0VSVF9FTkFCTEVECi0gICAg
ICAgIG1fYnVmZmVySW5Vc2UgPSBmYWxzZTsKLSNlbmRpZgotICAgICAgICBpZiAobV9wdXJnZVRp
bWVyLmlzQWN0aXZlKCkpCi0gICAgICAgICAgICBtX3B1cmdlVGltZXIuc3RvcCgpOwotCisgICAg
ICAgIEFTU0VSVChsb2NrKCkuaXNIZWxkKCkpOwogICAgICAgICBjb25zdCBTZWNvbmRzIHNjcmF0
Y2hCdWZmZXJQdXJnZUludGVydmFsIHsgMl9zIH07CiAgICAgICAgIG1fcHVyZ2VUaW1lci5zdGFy
dE9uZVNob3Qoc2NyYXRjaEJ1ZmZlclB1cmdlSW50ZXJ2YWwpOwogICAgIH0KIAotICAgIHN0YXRp
YyBTY3JhdGNoQnVmZmVyJiBzaW5nbGV0b24oKTsKKyAgICB2b2lkIHB1cmdlVGltZXJGaXJlZCgp
CisgICAgeworICAgICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworICAgICAgICBpZiAoYXV0
byBsb2NrZXIgPSB0cnlIb2xkTG9jayhsb2NrKCkpKQorICAgICAgICAgICAgY2xlYXJTY3JhdGNo
QnVmZmVyKCk7CisgICAgfQogCi1wcml2YXRlOgogICAgIHZvaWQgY2xlYXJTY3JhdGNoQnVmZmVy
KCkKICAgICB7CisgICAgICAgIEFTU0VSVChsb2NrKCkuaXNIZWxkKCkpOwogICAgICAgICBtX2lt
YWdlQnVmZmVyID0gbnVsbHB0cjsKICAgICAgICAgbV9sYXN0UmFkaXVzID0gRmxvYXRTaXplKCk7
CiAgICAgICAgIG1fbGFzdExheWVyU2l6ZSA9IEZsb2F0U2l6ZSgpOwogICAgIH0KIAogICAgIFJl
ZlB0cjxJbWFnZUJ1ZmZlcj4gbV9pbWFnZUJ1ZmZlcjsKLSAgICBUaW1lciBtX3B1cmdlVGltZXI7
CisgICAgUnVuTG9vcDo6VGltZXI8U2NyYXRjaEJ1ZmZlcj4gbV9wdXJnZVRpbWVyOwogCiAgICAg
RmxvYXRSZWN0IG1fbGFzdEluc2V0Qm91bmRzOwogICAgIEZsb2F0UmVjdCBtX2xhc3RTaGFkb3dS
ZWN0OwogICAgIEZsb2F0Um91bmRlZFJlY3Q6OlJhZGlpIG1fbGFzdFJhZGlpOwogICAgIENvbG9y
IG1fbGFzdENvbG9yOwogICAgIEZsb2F0U2l6ZSBtX2xhc3RSYWRpdXM7Ci0gICAgYm9vbCBtX2xh
c3RXYXNJbnNldDsKKyAgICBib29sIG1fbGFzdFdhc0luc2V0IHsgZmFsc2UgfTsKICAgICBGbG9h
dFNpemUgbV9sYXN0TGF5ZXJTaXplOwotCi0jaWYgQVNTRVJUX0VOQUJMRUQKLSAgICBib29sIG1f
YnVmZmVySW5Vc2U7Ci0jZW5kaWYKIH07CiAKIFNjcmF0Y2hCdWZmZXImIFNjcmF0Y2hCdWZmZXI6
OnNpbmdsZXRvbigpCiB7CisgICAgQVNTRVJUKGxvY2soKS5pc0hlbGQoKSk7CiAgICAgc3RhdGlj
IE5ldmVyRGVzdHJveWVkPFNjcmF0Y2hCdWZmZXI+IHNjcmF0Y2hCdWZmZXI7CiAgICAgcmV0dXJu
IHNjcmF0Y2hCdWZmZXI7CiB9CiAKK0xvY2smIFNjcmF0Y2hCdWZmZXI6OmxvY2soKQoreworICAg
IHN0YXRpYyBMb2NrIGxvY2s7CisgICAgcmV0dXJuIGxvY2s7Cit9CisKIHN0YXRpYyBmbG9hdCBy
YWRpdXNUb0xlZ2FjeVJhZGl1cyhmbG9hdCByYWRpdXMpCiB7CiAgICAgcmV0dXJuIHJhZGl1cyA+
IDggPyA4ICsgNCAqIHNxcnQoKHJhZGl1cyAtIDgpIC8gMikgOiByYWRpdXM7CkBAIC02ODMsMjYg
KzY5MiwzMiBAQCB2b2lkIFNoYWRvd0JsdXI6OmRyYXdJbnNldFNoYWRvd1dpdGhvdXRUaWxpbmco
Y29uc3QgQWZmaW5lVHJhbnNmb3JtJiwgY29uc3QgRmxvYQogCiB2b2lkIFNoYWRvd0JsdXI6OmRy
YXdSZWN0U2hhZG93V2l0aFRpbGluZyhjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIHRyYW5zZm9ybSwg
Y29uc3QgRmxvYXRSb3VuZGVkUmVjdCYgc2hhZG93ZWRSZWN0LCBjb25zdCBJbnRTaXplJiB0ZW1w
bGF0ZVNpemUsIGNvbnN0IEludFNpemUmIGVkZ2VTaXplLCBjb25zdCBEcmF3SW1hZ2VDYWxsYmFj
ayYgZHJhd0ltYWdlLCBjb25zdCBGaWxsUmVjdENhbGxiYWNrJiBmaWxsUmVjdCwgY29uc3QgTGF5
ZXJJbWFnZVByb3BlcnRpZXMmIGxheWVySW1hZ2VQcm9wZXJ0aWVzKQogeworICAgIFJlZlB0cjxJ
bWFnZUJ1ZmZlcj4gbGF5ZXJJbWFnZUJ1ZmZlcjsKICNpZiBVU0UoQ0cpCi0gICAgYXV0byogbGF5
ZXJJbWFnZSA9IFNjcmF0Y2hCdWZmZXI6OnNpbmdsZXRvbigpLmdldFNjcmF0Y2hCdWZmZXIodGVt
cGxhdGVTaXplKTsKLSAgICBhdXRvIHJlbGVhc2VMYXllckltYWdlID0gbWFrZVNjb3BlRXhpdChb
XSB7Ci0gICAgICAgIFNjcmF0Y2hCdWZmZXI6OnNpbmdsZXRvbigpLnNjaGVkdWxlU2NyYXRjaEJ1
ZmZlclB1cmdlKCk7Ci0gICAgfSk7CisgICAgYXV0byBsb2NrZXIgPSB0cnlIb2xkTG9jayhTY3Jh
dGNoQnVmZmVyOjpsb2NrKCkpOworICAgIGlmIChsb2NrZXIpIHsKKyAgICAgICAgbGF5ZXJJbWFn
ZUJ1ZmZlciA9IFNjcmF0Y2hCdWZmZXI6OnNpbmdsZXRvbigpLmdldFNjcmF0Y2hCdWZmZXIodGVt
cGxhdGVTaXplKTsKKyAgICAgICAgaWYgKCFsYXllckltYWdlQnVmZmVyKQorICAgICAgICAgICAg
cmV0dXJuOworICAgIH0KICNlbHNlCiAgICAgVU5VU0VEX1BBUkFNKGxheWVySW1hZ2VQcm9wZXJ0
aWVzKTsKLSAgICBhdXRvIGxheWVySW1hZ2VCdWZmZXIgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKHRl
bXBsYXRlU2l6ZSwgUmVuZGVyaW5nTW9kZTo6VW5hY2NlbGVyYXRlZCwgMSk7Ci0gICAgYXV0byog
bGF5ZXJJbWFnZSA9IGxheWVySW1hZ2VCdWZmZXIuZ2V0KCk7CiAjZW5kaWYKIAotICAgIGlmICgh
bGF5ZXJJbWFnZSkKLSAgICAgICAgcmV0dXJuOworICAgIGlmICghbGF5ZXJJbWFnZUJ1ZmZlcikg
eworICAgICAgICBsYXllckltYWdlQnVmZmVyID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZSh0ZW1wbGF0
ZVNpemUsIFJlbmRlcmluZ01vZGU6OlVuYWNjZWxlcmF0ZWQsIDEpOworICAgICAgICBpZiAoIWxh
eWVySW1hZ2VCdWZmZXIpCisgICAgICAgICAgICByZXR1cm47CisgICAgfQorICAgIGF1dG8qIGxh
eWVySW1hZ2UgPSBsYXllckltYWdlQnVmZmVyLmdldCgpOwogCiAgICAgRmxvYXRSZWN0IHRlbXBs
YXRlU2hhZG93ID0gRmxvYXRSZWN0KGVkZ2VTaXplLndpZHRoKCksIGVkZ2VTaXplLmhlaWdodCgp
LCB0ZW1wbGF0ZVNpemUud2lkdGgoKSAtIDIgKiBlZGdlU2l6ZS53aWR0aCgpLCB0ZW1wbGF0ZVNp
emUuaGVpZ2h0KCkgLSAyICogZWRnZVNpemUuaGVpZ2h0KCkpOwogCiAgICAgYm9vbCByZWRyYXdO
ZWVkZWQgPSB0cnVlOwogI2lmIFVTRShDRykKICAgICAvLyBPbmx5IHJlZHJhdyBpbiB0aGUgc2Ny
YXRjaCBidWZmZXIgaWYgaXRzIGNhY2hlZCBjb250ZW50cyBkb24ndCBtYXRjaCBvdXIgbmVlZHMK
LSAgICByZWRyYXdOZWVkZWQgPSBTY3JhdGNoQnVmZmVyOjpzaW5nbGV0b24oKS5zZXRDYWNoZWRT
aGFkb3dWYWx1ZXMobV9ibHVyUmFkaXVzLCBtX2NvbG9yLCB0ZW1wbGF0ZVNoYWRvdywgc2hhZG93
ZWRSZWN0LnJhZGlpKCksIGxheWVySW1hZ2VQcm9wZXJ0aWVzLmxheWVyU2l6ZSk7CisgICAgaWYg
KGxvY2tlcikKKyAgICAgICAgcmVkcmF3TmVlZGVkID0gU2NyYXRjaEJ1ZmZlcjo6c2luZ2xldG9u
KCkuc2V0Q2FjaGVkU2hhZG93VmFsdWVzKG1fYmx1clJhZGl1cywgbV9jb2xvciwgdGVtcGxhdGVT
aGFkb3csIHNoYWRvd2VkUmVjdC5yYWRpaSgpLCBsYXllckltYWdlUHJvcGVydGllcy5sYXllclNp
emUpOwogI2VuZGlmCiAKICAgICBpZiAocmVkcmF3TmVlZGVkKSB7CkBAIC03MzcsMTggKzc1Miwy
MiBAQCB2b2lkIFNoYWRvd0JsdXI6OmRyYXdSZWN0U2hhZG93V2l0aFRpbGluZyhjb25zdCBBZmZp
bmVUcmFuc2Zvcm0mIHRyYW5zZm9ybSwgY29ucwogCiB2b2lkIFNoYWRvd0JsdXI6OmRyYXdJbnNl
dFNoYWRvd1dpdGhUaWxpbmcoY29uc3QgQWZmaW5lVHJhbnNmb3JtJiB0cmFuc2Zvcm0sIGNvbnN0
IEZsb2F0UmVjdCYgZnVsbFJlY3QsIGNvbnN0IEZsb2F0Um91bmRlZFJlY3QmIGhvbGVSZWN0LCBj
b25zdCBJbnRTaXplJiB0ZW1wbGF0ZVNpemUsIGNvbnN0IEludFNpemUmIGVkZ2VTaXplLCBjb25z
dCBEcmF3SW1hZ2VDYWxsYmFjayYgZHJhd0ltYWdlLCBjb25zdCBGaWxsUmVjdFdpdGhIb2xlQ2Fs
bGJhY2smIGZpbGxSZWN0V2l0aEhvbGUpCiB7CisgICAgUmVmUHRyPEltYWdlQnVmZmVyPiBsYXll
ckltYWdlQnVmZmVyOwogI2lmIFVTRShDRykKLSAgICBhdXRvKiBsYXllckltYWdlID0gU2NyYXRj
aEJ1ZmZlcjo6c2luZ2xldG9uKCkuZ2V0U2NyYXRjaEJ1ZmZlcih0ZW1wbGF0ZVNpemUpOwotICAg
IGF1dG8gcmVsZWFzZUxheWVySW1hZ2UgPSBtYWtlU2NvcGVFeGl0KFtdIHsKLSAgICAgICAgU2Ny
YXRjaEJ1ZmZlcjo6c2luZ2xldG9uKCkuc2NoZWR1bGVTY3JhdGNoQnVmZmVyUHVyZ2UoKTsKLSAg
ICB9KTsKLSNlbHNlCi0gICAgYXV0byBsYXllckltYWdlQnVmZmVyID0gSW1hZ2VCdWZmZXI6OmNy
ZWF0ZSh0ZW1wbGF0ZVNpemUsIFJlbmRlcmluZ01vZGU6OlVuYWNjZWxlcmF0ZWQsIDEpOwotICAg
IGF1dG8qIGxheWVySW1hZ2UgPSBsYXllckltYWdlQnVmZmVyLmdldCgpOworICAgIGF1dG8gbG9j
a2VyID0gdHJ5SG9sZExvY2soU2NyYXRjaEJ1ZmZlcjo6bG9jaygpKTsKKyAgICBpZiAobG9ja2Vy
KSB7CisgICAgICAgIGxheWVySW1hZ2VCdWZmZXIgPSBTY3JhdGNoQnVmZmVyOjpzaW5nbGV0b24o
KS5nZXRTY3JhdGNoQnVmZmVyKHRlbXBsYXRlU2l6ZSk7CisgICAgICAgIGlmICghbGF5ZXJJbWFn
ZUJ1ZmZlcikKKyAgICAgICAgICAgIHJldHVybjsKKyAgICB9CiAjZW5kaWYKIAotICAgIGlmICgh
bGF5ZXJJbWFnZSkKLSAgICAgICAgcmV0dXJuOworICAgIGlmICghbGF5ZXJJbWFnZUJ1ZmZlcikg
eworICAgICAgICBsYXllckltYWdlQnVmZmVyID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZSh0ZW1wbGF0
ZVNpemUsIFJlbmRlcmluZ01vZGU6OlVuYWNjZWxlcmF0ZWQsIDEpOworICAgICAgICBpZiAoIWxh
eWVySW1hZ2VCdWZmZXIpCisgICAgICAgICAgICByZXR1cm47CisgICAgfQorICAgIGF1dG8qIGxh
eWVySW1hZ2UgPSBsYXllckltYWdlQnVmZmVyLmdldCgpOwogCiAgICAgLy8gRHJhdyB0aGUgcmVj
dGFuZ2xlIHdpdGggaG9sZS4KICAgICBGbG9hdFJlY3QgdGVtcGxhdGVCb3VuZHMoMCwgMCwgdGVt
cGxhdGVTaXplLndpZHRoKCksIHRlbXBsYXRlU2l6ZS5oZWlnaHQoKSk7CkBAIC03NTcsNyArNzc2
LDggQEAgdm9pZCBTaGFkb3dCbHVyOjpkcmF3SW5zZXRTaGFkb3dXaXRoVGlsaW5nKGNvbnN0IEFm
ZmluZVRyYW5zZm9ybSYgdHJhbnNmb3JtLCBjb24KICAgICBib29sIHJlZHJhd05lZWRlZCA9IHRy
dWU7CiAjaWYgVVNFKENHKQogICAgIC8vIE9ubHkgcmVkcmF3IGluIHRoZSBzY3JhdGNoIGJ1ZmZl
ciBpZiBpdHMgY2FjaGVkIGNvbnRlbnRzIGRvbid0IG1hdGNoIG91ciBuZWVkcwotICAgIHJlZHJh
d05lZWRlZCA9IFNjcmF0Y2hCdWZmZXI6OnNpbmdsZXRvbigpLnNldENhY2hlZEluc2V0U2hhZG93
VmFsdWVzKG1fYmx1clJhZGl1cywgbV9jb2xvciwgdGVtcGxhdGVCb3VuZHMsIHRlbXBsYXRlSG9s
ZSwgaG9sZVJlY3QucmFkaWkoKSk7CisgICAgaWYgKGxvY2tlcikKKyAgICAgICAgcmVkcmF3TmVl
ZGVkID0gU2NyYXRjaEJ1ZmZlcjo6c2luZ2xldG9uKCkuc2V0Q2FjaGVkSW5zZXRTaGFkb3dWYWx1
ZXMobV9ibHVyUmFkaXVzLCBtX2NvbG9yLCB0ZW1wbGF0ZUJvdW5kcywgdGVtcGxhdGVIb2xlLCBo
b2xlUmVjdC5yYWRpaSgpKTsKICNlbmRpZgogCiAgICAgaWYgKHJlZHJhd05lZWRlZCkgewpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJV
dGlsaXRpZXNDRy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFn
ZUJ1ZmZlclV0aWxpdGllc0NHLmNwcAppbmRleCBiMzc3ZjA0ODMyYzk3YTU2MmNjNmRhNDJhNjgw
Mzc5ZDExODZhNDNmLi5mMTQ2ZjM1NzNmMWZlZjk1ZDc5MzcwZTZlZWY1YzZmYjJhNzljYTljIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZl
clV0aWxpdGllc0NHLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
Zy9JbWFnZUJ1ZmZlclV0aWxpdGllc0NHLmNwcApAQCAtNjksMTIgKzY5LDE2IEBAIEFMTE9XX0RF
UFJFQ0FURURfREVDTEFSQVRJT05TX0JFR0lOCiAjaWYgUExBVEZPUk0oTUFDKQogICAgIHJldHVy
biBVVElGcm9tTUlNRVR5cGUobWltZVR5cGUpLmNyZWF0ZUNGU3RyaW5nKCk7CiAjZWxzZQotICAg
IEFTU0VSVChpc01haW5UaHJlYWQoKSk7IC8vIEl0IGlzIHVuY2xlYXIgaWYgQ0ZTVFIgaXMgdGhy
ZWFkc2FmZS4KLQogICAgIC8vIEZJWE1FOiBBZGQgV2luZG93cyBzdXBwb3J0IGZvciBhbGwgdGhl
IHN1cHBvcnRlZCBVVElzIHdoZW4gYSB3YXkgdG8gY29udmVydCBmcm9tIE1JTUVUeXBlIHRvIFVU
SSByZWxpYWJseSBpcyBmb3VuZC4KICAgICAvLyBGb3Igbm93LCBvbmx5IHN1cHBvcnQgUE5HLCBK
UEVHLCBhbmQgR0lGLiBTZWUgPHJkYXI6Ly9wcm9ibGVtLzYwOTUyODY+LgotICAgIHN0YXRpYyBj
b25zdCBDRlN0cmluZ1JlZiBrVVRUeXBlUE5HID0gQ0ZTVFIoInB1YmxpYy5wbmciKTsKLSAgICBz
dGF0aWMgY29uc3QgQ0ZTdHJpbmdSZWYga1VUVHlwZUdJRiA9IENGU1RSKCJjb20uY29tcHVzZXJ2
ZS5naWYiKTsKKyAgICBzdGF0aWMgQ0ZTdHJpbmdSZWYga1VUVHlwZVBORzsKKyAgICBzdGF0aWMg
Q0ZTdHJpbmdSZWYga1VUVHlwZUdJRjsKKworICAgIHN0YXRpYyBzdGQ6Om9uY2VfZmxhZyBvbmNl
S2V5OworICAgIHN0ZDo6Y2FsbF9vbmNlKG9uY2VLZXksIFsmXSB7CisgICAgICAgIGtVVFR5cGVQ
TkcgPSBDRlNUUigicHVibGljLnBuZyIpOworICAgICAgICBrVVRUeXBlR0lGID0gQ0ZTVFIoImNv
bS5jb21wdXNlcnZlLmdpZiIpOworICAgIH0pOwogCiAgICAgaWYgKGVxdWFsTGV0dGVyc0lnbm9y
aW5nQVNDSUlDYXNlKG1pbWVUeXBlLCAiaW1hZ2UvcG5nIikpCiAgICAgICAgIHJldHVybiBrVVRU
eXBlUE5HOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cv
U3ViaW1hZ2VDYWNoZVdpdGhUaW1lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jZy9TdWJpbWFnZUNhY2hlV2l0aFRpbWVyLmNwcAppbmRleCBiMDcwMjY4NTZkNTNmMWI2
M2FhODg4NWZiMWU0MTEzMzAzN2NmZWMzLi5mM2M1YWY3YTZkZTU5ZWViNGNjNDFmZjY5ZTIzYWEw
NTFlZGJlNWE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
Zy9TdWJpbWFnZUNhY2hlV2l0aFRpbWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jZy9TdWJpbWFnZUNhY2hlV2l0aFRpbWVyLmNwcApAQCAtODMsMTIgKzgzLDEz
IEBAIHN0cnVjdCBTdWJpbWFnZUNhY2hlQWRkZXIgewogfTsKIAogU3ViaW1hZ2VDYWNoZVdpdGhU
aW1lcjo6U3ViaW1hZ2VDYWNoZVdpdGhUaW1lcigpCi0gICAgOiBtX3RpbWVyKCp0aGlzLCAmU3Vi
aW1hZ2VDYWNoZVdpdGhUaW1lcjo6cHJ1bmVDYWNoZVRpbWVyRmlyZWQpCisgICAgOiBtX3RpbWVy
KFJ1bkxvb3A6Om1haW4oKSwgdGhpcywgJlN1YmltYWdlQ2FjaGVXaXRoVGltZXI6OnBydW5lQ2Fj
aGVUaW1lckZpcmVkKQogewogfQogCiB2b2lkIFN1YmltYWdlQ2FjaGVXaXRoVGltZXI6OnBydW5l
Q2FjaGVUaW1lckZpcmVkKCkKIHsKKyAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKG1fbG9jayk7
CiAgICAgcHJ1bmUoKTsKICAgICBpZiAobV9jYWNoZS5pc0VtcHR5KCkpIHsKICAgICAgICAgQVNT
RVJUKG1faW1hZ2VDb3VudHMuaXNFbXB0eSgpKTsKQEAgLTExNSw2ICsxMTYsNyBAQCB2b2lkIFN1
YmltYWdlQ2FjaGVXaXRoVGltZXI6OnBydW5lKCkKIAogUmV0YWluUHRyPENHSW1hZ2VSZWY+IFN1
YmltYWdlQ2FjaGVXaXRoVGltZXI6OnN1YmltYWdlKENHSW1hZ2VSZWYgaW1hZ2UsIGNvbnN0IEZs
b2F0UmVjdCYgcmVjdCkKIHsKKyAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKG1fbG9jayk7CiAg
ICAgaWYgKCFtX3RpbWVyLmlzQWN0aXZlKCkpCiAgICAgICAgIG1fdGltZXIuc3RhcnRSZXBlYXRp
bmcoc3ViaW1hZ2VDYWNoZVBydW5lRGVsYXkpOwogCkBAIC0xMzUsNiArMTM3LDcgQEAgUmV0YWlu
UHRyPENHSW1hZ2VSZWY+IFN1YmltYWdlQ2FjaGVXaXRoVGltZXI6OnN1YmltYWdlKENHSW1hZ2VS
ZWYgaW1hZ2UsIGNvbnN0IEYKIAogdm9pZCBTdWJpbWFnZUNhY2hlV2l0aFRpbWVyOjpjbGVhcklt
YWdlQW5kU3ViaW1hZ2VzKENHSW1hZ2VSZWYgaW1hZ2UpCiB7CisgICAgYXV0byBsb2NrZXIgPSBo
b2xkTG9jayhtX2xvY2spOwogICAgIGlmIChtX2ltYWdlQ291bnRzLmNvbnRhaW5zKGltYWdlKSkg
ewogICAgICAgICBWZWN0b3I8U3ViaW1hZ2VDYWNoZUVudHJ5PiB0b0JlUmVtb3ZlZDsKICAgICAg
ICAgZm9yIChjb25zdCBhdXRvJiBlbnRyeSA6IG1fY2FjaGUpIHsKQEAgLTE1MSwxNCArMTU0LDE3
IEBAIHZvaWQgU3ViaW1hZ2VDYWNoZVdpdGhUaW1lcjo6Y2xlYXJJbWFnZUFuZFN1YmltYWdlcyhD
R0ltYWdlUmVmIGltYWdlKQogCiB2b2lkIFN1YmltYWdlQ2FjaGVXaXRoVGltZXI6OmNsZWFyQWxs
KCkKIHsKKyAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKG1fbG9jayk7CiAgICAgbV9pbWFnZUNv
dW50cy5jbGVhcigpOwogICAgIG1fY2FjaGUuY2xlYXIoKTsKIH0KIAogU3ViaW1hZ2VDYWNoZVdp
dGhUaW1lciYgU3ViaW1hZ2VDYWNoZVdpdGhUaW1lcjo6c3ViaW1hZ2VDYWNoZSgpCiB7Ci0gICAg
aWYgKCFzX2NhY2hlKQorICAgIHN0YXRpYyBzdGQ6Om9uY2VfZmxhZyBvbmNlS2V5OworICAgIHN0
ZDo6Y2FsbF9vbmNlKG9uY2VLZXksIFsmXSB7CiAgICAgICAgIHNfY2FjaGUgPSBuZXcgU3ViaW1h
Z2VDYWNoZVdpdGhUaW1lcjsKKyAgICB9KTsKICAgICByZXR1cm4gKnNfY2FjaGU7CiB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL1N1YmltYWdlQ2Fj
aGVXaXRoVGltZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL1N1Ymlt
YWdlQ2FjaGVXaXRoVGltZXIuaAppbmRleCA4Mjc0YmMyNDBlZDhmYTVlYjEyNDAwMGMyYjJkOGE5
MjU3OGI5MjliLi41YmYwNWQ0ZTE0MGVlNjJiMzMyMWU0ZGJlZjUxZGFjMWQxYjM0ZDk5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9TdWJpbWFnZUNhY2hl
V2l0aFRpbWVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvU3Vi
aW1hZ2VDYWNoZVdpdGhUaW1lci5oCkBAIC0zMiw3ICszMiw5IEBACiAjaW5jbHVkZSA8d3RmL0hh
c2hDb3VudGVkU2V0Lmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KICNpbmNsdWRlIDx3dGYv
SGFzaFRyYWl0cy5oPgorI2luY2x1ZGUgPHd0Zi9Mb2NrLmg+CiAjaW5jbHVkZSA8d3RmL1JldGFp
blB0ci5oPgorI2luY2x1ZGUgPHd0Zi9SdW5Mb29wLmg+CiAKICNkZWZpbmUgQ0FDSEVfU1VCSU1B
R0VTIDEKIApAQCAtOTUsOSArOTcsMTAgQEAgcHJpdmF0ZToKICAgICB2b2lkIHBydW5lKCk7CiAg
ICAgdm9pZCBjbGVhckFsbCgpOwogCisgICAgTG9jayBtX2xvY2s7CiAgICAgSGFzaENvdW50ZWRT
ZXQ8Q0dJbWFnZVJlZj4gbV9pbWFnZUNvdW50czsKICAgICBTdWJpbWFnZUNhY2hlSGFzaFNldCBt
X2NhY2hlOwotICAgIFRpbWVyIG1fdGltZXI7CisgICAgUnVuTG9vcDo6VGltZXI8U3ViaW1hZ2VD
YWNoZVdpdGhUaW1lcj4gbV90aW1lcjsKIAogICAgIHN0YXRpYyBTdWJpbWFnZUNhY2hlV2l0aFRp
bWVyJiBzdWJpbWFnZUNhY2hlKCk7CiAgICAgc3RhdGljIGJvb2wgc3ViaW1hZ2VDYWNoZUV4aXN0
cygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvVVRJ
VXRpbGl0aWVzLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvVVRJVXRp
bGl0aWVzLm1tCmluZGV4IDdhN2EzMTA3YmU3OWM0ODI0Y2VmZTJlMGFjM2UzNTQ2N2M5ZWExNjgu
LjcwYjQzOTNjNjM2MzcxOTZmOThjMDYzMmZhYjYxMTVkNzhhODFiY2MgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL1VUSVV0aWxpdGllcy5tbQorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9VVElVdGlsaXRpZXMubW0KQEAgLTI2
LDYgKzI2LDcgQEAKICNpbXBvcnQgImNvbmZpZy5oIgogI2ltcG9ydCAiVVRJVXRpbGl0aWVzLmgi
CiAKKyNpbXBvcnQgPHd0Zi9Mb2NrLmg+CiAjaW1wb3J0IDx3dGYvTWFpblRocmVhZC5oPgogI2lt
cG9ydCA8d3RmL1RpbnlMUlVDYWNoZS5oPgogI2ltcG9ydCA8d3RmL3RleHQvU3RyaW5nSGFzaC5o
PgpAQCAtODQsNTcgKzg1LDUyIEBAIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0VORAog
ICAgIHJldHVybiBlbXB0eVN0cmluZygpOwogfQogCi1zdGF0aWMgU3RyaW5nIFVUSUZyb21Vbmtu
b3duTUlNRVR5cGUoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSkKK3N0YXRpYyBDRlN0cmluZ1JlZiBV
VElGcm9tVW5rbm93bk1JTUVUeXBlKGNvbnN0IFN0cmluZyYgbWltZVR5cGUpCiB7CiAgICAgc3Rh
dGljIGNvbnN0IGF1dG8gbWFwID0gbWFrZU5ldmVyRGVzdHJveWVkKFtdIHsKLSAgICAgICAgc3Ry
dWN0IFR5cGVFeHRlbnNpb25QYWlyIHsKLSAgICAgICAgICAgIEFTQ0lJTGl0ZXJhbCB0eXBlOwot
ICAgICAgICAgICAgQVNDSUlMaXRlcmFsIHV0aTsKLSAgICAgICAgfTsKLQotICAgICAgICBzdGF0
aWMgY29uc3QgVHlwZUV4dGVuc2lvblBhaXIgcGFpcnNbXSA9IHsKLSAgICAgICAgICAgIHsgIm1v
ZGVsL3ZuZC51c2R6K3ppcCJfcywgImNvbS5waXhhci51bml2ZXJzYWwtc2NlbmUtZGVzY3JpcHRp
b24tbW9iaWxlIl9zIH0sCi0gICAgICAgICAgICB7ICJtb2RlbC91c2QiX3MsICJjb20ucGl4YXIu
dW5pdmVyc2FsLXNjZW5lLWRlc2NyaXB0aW9uLW1vYmlsZSJfcyB9LAotICAgICAgICAgICAgeyAi
bW9kZWwvdm5kLnBpeGFyLnVzZCJfcywgImNvbS5waXhhci51bml2ZXJzYWwtc2NlbmUtZGVzY3Jp
cHRpb24tbW9iaWxlIl9zIH0sCi0gICAgICAgICAgICB7ICJtb2RlbC92bmQucmVhbGl0eSJfcywg
ImNvbS5hcHBsZS5yZWFsaXR5Il9zIH0KLSAgICAgICAgfTsKLQotICAgICAgICBIYXNoTWFwPFN0
cmluZywgU3RyaW5nLCBBU0NJSUNhc2VJbnNlbnNpdGl2ZUhhc2g+IG1hcDsKLSAgICAgICAgZm9y
IChhdXRvJiBwYWlyIDogcGFpcnMpCi0gICAgICAgICAgICBtYXAuYWRkKHBhaXIudHlwZSwgcGFp
ci51dGkpOworICAgICAgICBIYXNoTWFwPFN0cmluZywgQ0ZTdHJpbmdSZWYsIEFTQ0lJQ2FzZUlu
c2Vuc2l0aXZlSGFzaD4gbWFwOworICAgICAgICBhdXRvIHBpeGFyTUlNRVR5cGUgPSBDRlNUUigi
Y29tLnBpeGFyLnVuaXZlcnNhbC1zY2VuZS1kZXNjcmlwdGlvbi1tb2JpbGUiKTsKKyAgICAgICAg
bWFwLmFkZCgibW9kZWwvdm5kLnVzZHoremlwIl9zLCBwaXhhck1JTUVUeXBlKTsKKyAgICAgICAg
bWFwLmFkZCgibW9kZWwvdXNkIl9zLCBwaXhhck1JTUVUeXBlKTsKKyAgICAgICAgbWFwLmFkZCgi
bW9kZWwvdm5kLnBpeGFyLnVzZCJfcywgcGl4YXJNSU1FVHlwZSk7CisgICAgICAgIG1hcC5hZGQo
Im1vZGVsL3ZuZC51c2R6K3ppcCJfcywgQ0ZTVFIoImNvbS5hcHBsZS5yZWFsaXR5IikpOwogICAg
ICAgICByZXR1cm4gbWFwOwogICAgIH0oKSk7CiAKKyAgICBzdGF0aWMgY29uc3QgQ0ZTdHJpbmdS
ZWYgZW1wdHlDRlN0cmluZyA9IENGU1RSKCIiKTsKICAgICBhdXRvIG1hcEVudHJ5ID0gbWFwLmdl
dCgpLmZpbmQobWltZVR5cGUpOwogICAgIGlmIChtYXBFbnRyeSA9PSBtYXAuZ2V0KCkuZW5kKCkp
Ci0gICAgICAgIHJldHVybiBlbXB0eVN0cmluZygpOworICAgICAgICByZXR1cm4gZW1wdHlDRlN0
cmluZzsKIAogICAgIHJldHVybiBtYXBFbnRyeS0+dmFsdWU7CiB9CiAKLXN0cnVjdCBVVElGcm9t
TUlNRVR5cGVDYWNoZVBvbGljeSA6IFRpbnlMUlVDYWNoZVBvbGljeTxTdHJpbmcsIFN0cmluZz4g
eworc3RydWN0IFVUSUZyb21NSU1FVHlwZUNhY2hlUG9saWN5IDogVGlueUxSVUNhY2hlUG9saWN5
PFN0cmluZywgUmV0YWluUHRyPENGU3RyaW5nUmVmPj4gewogcHVibGljOgotICAgIHN0YXRpYyBT
dHJpbmcgY3JlYXRlVmFsdWVGb3JLZXkoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSkKKyAgICBzdGF0
aWMgUmV0YWluUHRyPENGU3RyaW5nUmVmPiBjcmVhdGVWYWx1ZUZvcktleShjb25zdCBTdHJpbmcm
IG1pbWVUeXBlKQogICAgIHsKIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0JFR0lOCiAg
ICAgICAgIGF1dG8gdHlwZSA9IGFkb3B0Q0YoVVRUeXBlQ3JlYXRlUHJlZmVycmVkSWRlbnRpZmll
ckZvclRhZyhrVVRUYWdDbGFzc01JTUVUeXBlLCBtaW1lVHlwZS5jcmVhdGVDRlN0cmluZygpLmdl
dCgpLCAwKSk7CiBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19FTkQKICAgICAgICAgaWYg
KHR5cGUpCi0gICAgICAgICAgICByZXR1cm4gdHlwZS5nZXQoKTsKKyAgICAgICAgICAgIHJldHVy
biB0eXBlOwogICAgICAgICByZXR1cm4gVVRJRnJvbVVua25vd25NSU1FVHlwZShtaW1lVHlwZSk7
CiAgICAgfQorCisgICAgc3RhdGljIFN0cmluZyBjcmVhdGVLZXlGb3JTdG9yYWdlKGNvbnN0IFN0
cmluZyYga2V5KSB7IHJldHVybiBrZXkuaXNvbGF0ZWRDb3B5KCk7IH0KIH07CiAKLXN0YXRpYyBU
aW55TFJVQ2FjaGU8U3RyaW5nLCBTdHJpbmcsIDE2LCBVVElGcm9tTUlNRVR5cGVDYWNoZVBvbGlj
eT4mIGNhY2hlVVRJRnJvbU1pbWVUeXBlKCkKK3N0YXRpYyBUaW55TFJVQ2FjaGU8U3RyaW5nLCBS
ZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+LCAxNiwgVVRJRnJvbU1JTUVUeXBlQ2FjaGVQb2xpY3k+JiBj
YWNoZVVUSUZyb21NaW1lVHlwZSgpCiB7Ci0gICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFRpbnlM
UlVDYWNoZTxTdHJpbmcsIFN0cmluZywgMTYsIFVUSUZyb21NSU1FVHlwZUNhY2hlUG9saWN5Pj4g
Y2FjaGU7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFRpbnlMUlVDYWNoZTxTdHJpbmcsIFJl
dGFpblB0cjxDRlN0cmluZ1JlZj4sIDE2LCBVVElGcm9tTUlNRVR5cGVDYWNoZVBvbGljeT4+IGNh
Y2hlOwogICAgIHJldHVybiBjYWNoZTsKIH0KIAogU3RyaW5nIFVUSUZyb21NSU1FVHlwZShjb25z
dCBTdHJpbmcmIG1pbWVUeXBlKQogewotICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7Ci0gICAg
cmV0dXJuIGNhY2hlVVRJRnJvbU1pbWVUeXBlKCkuZ2V0KG1pbWVUeXBlKTsKKyAgICBzdGF0aWMg
TG9jayBsb2NrOworICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2sobG9jayk7CisgICAgcmV0dXJu
IGNhY2hlVVRJRnJvbU1pbWVUeXBlKCkuZ2V0KG1pbWVUeXBlKS5nZXQoKTsKIH0KIAogYm9vbCBp
c0RlY2xhcmVkVVRJKGNvbnN0IFN0cmluZyYgVVRJKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vdGV4dC9jZi9IeXBoZW5hdGlvbkNGLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL3RleHQvY2YvSHlwaGVuYXRpb25DRi5jcHAKaW5kZXggM2QwMmYyOGY2ODVkNDM3ODRk
Mzk0Njk1ZmNiZTI0ZjllNzYyOTE4YS4uNjY2OTZlNGI3NDAzNThjMjVmMjJjYmJhZWRiMDE4NWU0
YWU0ZjgzYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9jZi9IeXBo
ZW5hdGlvbkNGLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L2NmL0h5cGhl
bmF0aW9uQ0YuY3BwCkBAIC02Myw2ICs2Myw4IEBAIHB1YmxpYzoKIAogICAgICAgICByZXR1cm4g
Q0ZTdHJpbmdJc0h5cGhlbmF0aW9uQXZhaWxhYmxlRm9yTG9jYWxlKGxvY2FsZS5nZXQoKSkgPyBs
b2NhbGUgOiBudWxscHRyOwogICAgIH0KKworICAgIHN0YXRpYyBBdG9tU3RyaW5nIGNyZWF0ZUtl
eUZvclN0b3JhZ2UoY29uc3QgQXRvbVN0cmluZyYga2V5KSB7IHJldHVybiBrZXk7IH0KIH07CiB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvaHlwaGVuL0h5cGhl
bmF0aW9uTGliSHlwaGVuLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvaHlwaGVu
L0h5cGhlbmF0aW9uTGliSHlwaGVuLmNwcAppbmRleCBmMzM1OWQ4MDcwMjJmNTQ4OWM2OGY5YWNm
ODE2YTY3MDQyYTUzZDYyLi43ZjczMzAxZGEwMDMxMDdlOTM5ZGZiODZiMzY4OTM1NGM5ZDk0MzUw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L2h5cGhlbi9IeXBoZW5h
dGlvbkxpYkh5cGhlbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9oeXBo
ZW4vSHlwaGVuYXRpb25MaWJIeXBoZW4uY3BwCkBAIC0yNDEsNiArMjQxLDggQEAgcHVibGljOgog
ICAgIHsKICAgICAgICAgcmV0dXJuIFdlYkNvcmU6Okh5cGhlbmF0aW9uRGljdGlvbmFyeTo6Y3Jl
YXRlKEZpbGVTeXN0ZW06OmZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihkaWN0aW9uYXJ5UGF0aC5z
dHJpbmcoKSkpOwogICAgIH0KKworICAgIHN0YXRpYyBBdG9tU3RyaW5nIGNyZWF0ZUtleUZvclN0
b3JhZ2UoY29uc3QgQXRvbVN0cmluZyYga2V5KSB7IHJldHVybiBrZXk7IH0KIH07CiAKIH0gLy8g
bmFtZXNwYWNlIFdURgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQVUNv
bm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQVUNv
bm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwCmluZGV4IDQxYWUwYTEzMTQ4YWE2YTZjYzRiYmI4NmI4
OWJiYWU2NjQwMWExNjAuLjAzNTI5YjRiNjk4NjI3MjZlMmI2ZWRhNjIyOGE1NmE1MGNkMDBhOTUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRv
V2ViUHJvY2Vzcy5jcHAKQEAgLTE2NSw2ICsxNjUsNyBAQCBHUFVDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzOjpHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzKEdQVVByb2Nlc3MmIGdwdVByb2Nlc3MsIFdl
YgogICAgIDogbV9jb25uZWN0aW9uKElQQzo6Q29ubmVjdGlvbjo6Y3JlYXRlU2VydmVyQ29ubmVj
dGlvbihjb25uZWN0aW9uSWRlbnRpZmllciwgKnRoaXMpKQogICAgICwgbV9ncHVQcm9jZXNzKGdw
dVByb2Nlc3MpCiAgICAgLCBtX3dlYlByb2Nlc3NJZGVudGlmaWVyKHdlYlByb2Nlc3NJZGVudGlm
aWVyKQorICAgICwgbV9yZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eShtYWtlVW5pcXVlPFJl
bW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5PigqdGhpcykpCiAgICAgLCBtX3Nlc3Npb25JRChz
ZXNzaW9uSUQpCiAjaWYgUExBVEZPUk0oQ09DT0EpICYmIFVTRShMSUJXRUJSVEMpCiAgICAgLCBt
X2xpYldlYlJUQ0NvZGVjc1Byb3h5KExpYldlYlJUQ0NvZGVjc1Byb3h5OjpjcmVhdGUoKnRoaXMp
KQpAQCAtMjAyLDggKzIwMywxMiBAQCB2b2lkIEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmRp
ZENsb3NlKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbikKICAgICB9CiAjZW5kaWYKIAorICAg
IC8vIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQgb2JqZWN0cyByZWYgdGhlaXIgR1BVQ29ubmVjdGlv
blRvV2ViUHJvY2VzcyBzbyB3ZSBuZWVkIHRvIG1ha2Ugc3VyZQorICAgIC8vIHRvIGJyZWFrIHRo
ZSByZWZlcmVuY2UgY3ljbGUgYnkgZGVzdHJveWluZyB0aGVtLgorICAgIG1fcmVtb3RlUmVuZGVy
aW5nQmFja2VuZE1hcC5jbGVhcigpOworCiAgICAgZ3B1UHJvY2VzcygpLmNvbm5lY3Rpb25Ub1dl
YlByb2Nlc3NDbG9zZWQoY29ubmVjdGlvbik7Ci0gICAgZ3B1UHJvY2VzcygpLnJlbW92ZUdQVUNv
bm5lY3Rpb25Ub1dlYlByb2Nlc3MoKnRoaXMpOworICAgIGdwdVByb2Nlc3MoKS5yZW1vdmVHUFVD
b25uZWN0aW9uVG9XZWJQcm9jZXNzKCp0aGlzKTsgLy8gTWF5IGRlc3Ryb3kgfHRoaXN8LgogfQog
CiBMb2dnZXImIEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmxvZ2dlcigpCkBAIC0yNDAsMTQg
KzI0NSw2IEBAIFJlbW90ZU1lZGlhUmVzb3VyY2VNYW5hZ2VyJiBHUFVDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzOjpyZW1vdGVNZWRpYVJlc291cmNlTWFuYWdlCiAgICAgcmV0dXJuICptX3JlbW90ZU1l
ZGlhUmVzb3VyY2VNYW5hZ2VyOwogfQogCi1SZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eSYg
R1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6cmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHko
KQotewotICAgIGlmICghbV9yZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eSkKLSAgICAgICAg
bV9yZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eSA9IG1ha2VVbmlxdWU8UmVtb3RlTWVkaWFQ
bGF5ZXJNYW5hZ2VyUHJveHk+KCp0aGlzKTsKLQotICAgIHJldHVybiAqbV9yZW1vdGVNZWRpYVBs
YXllck1hbmFnZXJQcm94eTsKLX0KLQogI2lmIFBMQVRGT1JNKENPQ09BKSAmJiBFTkFCTEUoTUVE
SUFfU1RSRUFNKQogVXNlck1lZGlhQ2FwdHVyZU1hbmFnZXJQcm94eSYgR1BVQ29ubmVjdGlvblRv
V2ViUHJvY2Vzczo6dXNlck1lZGlhQ2FwdHVyZU1hbmFnZXJQcm94eSgpCiB7CkBAIC0yOTIsNyAr
Mjg5LDcgQEAgUmVtb3RlQXVkaW9TZXNzaW9uUHJveHkmIEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nl
c3M6OmF1ZGlvU2Vzc2lvblByb3h5KCkKIHZvaWQgR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6
Y3JlYXRlUmVuZGVyaW5nQmFja2VuZChSZW1vdGVSZW5kZXJpbmdCYWNrZW5kQ3JlYXRpb25QYXJh
bWV0ZXJzJiYgcGFyYW1ldGVycykKIHsKICAgICBhdXRvIGFkZFJlc3VsdCA9IG1fcmVtb3RlUmVu
ZGVyaW5nQmFja2VuZE1hcC5lbnN1cmUocGFyYW1ldGVycy5pZGVudGlmaWVyLCBbJl0oKSB7Ci0g
ICAgICAgIHJldHVybiBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpjcmVhdGUoKnRoaXMsIFdURk1v
dmUocGFyYW1ldGVycykpOworICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxSZW1vdGVSZW5kZXJp
bmdCYWNrZW5kV3JhcHBlcj4oUmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6Y3JlYXRlKCp0aGlzLCBX
VEZNb3ZlKHBhcmFtZXRlcnMpKSk7CiAgICAgfSk7CiAgICAgQVNTRVJUX1VOVVNFRChhZGRSZXN1
bHQsIGFkZFJlc3VsdC5pc05ld0VudHJ5KTsKIH0KQEAgLTMwMyw2ICszMDAsMTYgQEAgdm9pZCBH
UFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpyZWxlYXNlUmVuZGVyaW5nQmFja2VuZChSZW5kZXJp
bmdCYWNrZW5kSWRlbnRpZmkKICAgICBBU1NFUlRfVU5VU0VEKGZvdW5kLCBmb3VuZCk7CiB9CiAK
K0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmRXcmFwcGVy
OjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kV3JhcHBlcihSZWY8UmVtb3RlUmVuZGVyaW5nQmFja2Vu
ZD4mJiByZW1vdGVSZW5kZXJpbmdCYWNrZW5kKQorICAgIDogbV9yZW1vdGVSZW5kZXJpbmdCYWNr
ZW5kKFdURk1vdmUocmVtb3RlUmVuZGVyaW5nQmFja2VuZCkpCit7Cit9CisKK0dQVUNvbm5lY3Rp
b25Ub1dlYlByb2Nlc3M6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmRXcmFwcGVyOjp+UmVtb3RlUmVu
ZGVyaW5nQmFja2VuZFdyYXBwZXIoKQoreworICAgIG1fcmVtb3RlUmVuZGVyaW5nQmFja2VuZC0+
ZGlzY29ubmVjdCgpOworfQorCiAjaWYgRU5BQkxFKFdFQkdMKQogdm9pZCBHUFVDb25uZWN0aW9u
VG9XZWJQcm9jZXNzOjpjcmVhdGVHcmFwaGljc0NvbnRleHRHTChXZWJDb3JlOjpHcmFwaGljc0Nv
bnRleHRHTEF0dHJpYnV0ZXMgYXR0cmlidXRlcywgR3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVy
IGdyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcikKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmggYi9Tb3VyY2UvV2ViS2l0
L0dQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oCmluZGV4IDFmNzg1NTVlMmI3
Mzk5ZTcyMGI1NGQ5Y2ZhZWNjMzM5ODk2YTcyYWMuLjUxZmNjN2YwNWI5OTZjMjI2MDAwMWYxMTdm
NjJmNDdhZjdkMmIzMDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVD
b25uZWN0aW9uVG9XZWJQcm9jZXNzLmgKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQ
VUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaApAQCAtMzgsNyArMzgsNyBAQAogI2luY2x1ZGUgPFdl
YkNvcmUvUHJvY2Vzc0lkZW50aWZpZXIuaD4KICNpbmNsdWRlIDxwYWwvU2Vzc2lvbklELmg+CiAj
aW5jbHVkZSA8d3RmL0xvZ2dlci5oPgotI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CisjaW5j
bHVkZSA8d3RmL1RocmVhZFNhZmVSZWZDb3VudGVkLmg+CiAKICNpZiBFTkFCTEUoV0VCR0wpCiAj
aW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLmgiCkBAIC02OCw3ICs2OCw3IEBA
IHN0cnVjdCBSZW1vdGVBdWRpb1Nlc3Npb25Db25maWd1cmF0aW9uOwogc3RydWN0IFJlbW90ZVJl
bmRlcmluZ0JhY2tlbmRDcmVhdGlvblBhcmFtZXRlcnM7CiAKIGNsYXNzIEdQVUNvbm5lY3Rpb25U
b1dlYlByb2Nlc3MKLSAgICA6IHB1YmxpYyBSZWZDb3VudGVkPEdQVUNvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3M+CisgICAgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8R1BVQ29ubmVjdGlvblRv
V2ViUHJvY2VzcywgV1RGOjpEZXN0cnVjdGlvblRocmVhZDo6TWFpbj4KICAgICAsIHB1YmxpYyBX
ZWJDb3JlOjpOb3dQbGF5aW5nTWFuYWdlcjo6Q2xpZW50CiAgICAgLCBJUEM6OkNvbm5lY3Rpb246
OkNsaWVudCB7CiBwdWJsaWM6CkBAIC0xMDYsNyArMTA2LDcgQEAgcHVibGljOgogI2lmIEVOQUJM
RShHUFVfUFJPQ0VTUykKICAgICBSZW1vdGVNZWRpYUVuZ2luZUNvbmZpZ3VyYXRpb25GYWN0b3J5
UHJveHkmIG1lZGlhRW5naW5lQ29uZmlndXJhdGlvbkZhY3RvcnlQcm94eSgpOwogI2VuZGlmCi0g
ICAgUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHkmIHJlbW90ZU1lZGlhUGxheWVyTWFuYWdl
clByb3h5KCk7CisgICAgUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHkmIHJlbW90ZU1lZGlh
UGxheWVyTWFuYWdlclByb3h5KCkgeyByZXR1cm4gKm1fcmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2Vy
UHJveHk7IH0KIAogI2lmIFVTRShBVURJT19TRVNTSU9OKQogICAgIFJlbW90ZUF1ZGlvU2Vzc2lv
blByb3h5TWFuYWdlciYgYXVkaW9TZXNzaW9uTWFuYWdlcigpOwpAQCAtMTkyLDcgKzE5MiwxNyBA
QCBwcml2YXRlOgogICAgIGJvb2wgbV9hbGxvd3NEaXNwbGF5Q2FwdHVyZSB7IGZhbHNlIH07CiAj
ZW5kaWYKIAotICAgIHVzaW5nIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRNYXAgPSBIYXNoTWFwPFJl
bmRlcmluZ0JhY2tlbmRJZGVudGlmaWVyLCBzdGQ6OnVuaXF1ZV9wdHI8UmVtb3RlUmVuZGVyaW5n
QmFja2VuZD4+OworICAgIGNsYXNzIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRXcmFwcGVyIHsKKyAg
ICAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CisgICAgcHVibGljOgorICAgICAgICBSZW1v
dGVSZW5kZXJpbmdCYWNrZW5kV3JhcHBlcihSZWY8UmVtb3RlUmVuZGVyaW5nQmFja2VuZD4mJik7
CisgICAgICAgIH5SZW1vdGVSZW5kZXJpbmdCYWNrZW5kV3JhcHBlcigpOworCisgICAgcHJpdmF0
ZToKKyAgICAgICAgUmVmPFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ+IG1fcmVtb3RlUmVuZGVyaW5n
QmFja2VuZDsKKyAgICB9OworCisgICAgdXNpbmcgUmVtb3RlUmVuZGVyaW5nQmFja2VuZE1hcCA9
IEhhc2hNYXA8UmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXIsIHN0ZDo6dW5pcXVlX3B0cjxSZW1v
dGVSZW5kZXJpbmdCYWNrZW5kV3JhcHBlcj4+OwogICAgIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRN
YXAgbV9yZW1vdGVSZW5kZXJpbmdCYWNrZW5kTWFwOwogI2lmIEVOQUJMRShXRUJHTCkKICAgICB1
c2luZyBSZW1vdGVHcmFwaGljc0NvbnRleHRHTE1hcCA9IEhhc2hNYXA8R3JhcGhpY3NDb250ZXh0
R0xJZGVudGlmaWVyLCBzdGQ6OnVuaXF1ZV9wdHI8UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w+PjsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5k
ZXJpbmdCYWNrZW5kLmNwcCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1v
dGVSZW5kZXJpbmdCYWNrZW5kLmNwcAppbmRleCA0ODdiMTM1YTg4OTI3ZDIyOTM5MzA3NDkwMjRk
NjU2Y2MwNTA0ZjU1Li4xY2I1MGUzN2I2MGFmMDQwNDZmMDc2ZTM5NmM4MjgxMzA1NjU5NTZkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVy
aW5nQmFja2VuZC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1Jl
bW90ZVJlbmRlcmluZ0JhY2tlbmQuY3BwCkBAIC0zOCw2ICszOCw3IEBACiAjaW5jbHVkZSAiUmVt
b3RlUmVuZGVyaW5nQmFja2VuZFByb3h5TWVzc2FnZXMuaCIKICNpbmNsdWRlIDx3dGYvQ2hlY2tl
ZEFyaXRobWV0aWMuaD4KICNpbmNsdWRlIDx3dGYvU3lzdGVtVHJhY2luZy5oPgorI2luY2x1ZGUg
PHd0Zi9Xb3JrUXVldWUuaD4KIAogI2lmIFBMQVRGT1JNKENPQ09BKQogI2luY2x1ZGUgPHd0Zi9j
b2NvYS9NYWNoU2VtYXBob3JlLmg+CkBAIC00NiwzOCArNDcsNDEgQEAKIG5hbWVzcGFjZSBXZWJL
aXQgewogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKLXN0ZDo6dW5pcXVlX3B0cjxSZW1vdGVS
ZW5kZXJpbmdCYWNrZW5kPiBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpjcmVhdGUoR1BVQ29ubmVj
dGlvblRvV2ViUHJvY2VzcyYgZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2VzcywgUmVtb3RlUmVuZGVy
aW5nQmFja2VuZENyZWF0aW9uUGFyYW1ldGVycyYmIHBhcmFtZXRlcnMpCitSZWY8UmVtb3RlUmVu
ZGVyaW5nQmFja2VuZD4gUmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6Y3JlYXRlKEdQVUNvbm5lY3Rp
b25Ub1dlYlByb2Nlc3MmIGdwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MsIFJlbW90ZVJlbmRlcmlu
Z0JhY2tlbmRDcmVhdGlvblBhcmFtZXRlcnMmJiBwYXJhbWV0ZXJzKQogewotICAgIHJldHVybiBz
dGQ6OnVuaXF1ZV9wdHI8UmVtb3RlUmVuZGVyaW5nQmFja2VuZD4obmV3IFJlbW90ZVJlbmRlcmlu
Z0JhY2tlbmQoZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2VzcywgV1RGTW92ZShwYXJhbWV0ZXJzKSkp
OworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQoZ3B1Q29u
bmVjdGlvblRvV2ViUHJvY2VzcywgV1RGTW92ZShwYXJhbWV0ZXJzKSkpOwogfQogCiBSZW1vdGVS
ZW5kZXJpbmdCYWNrZW5kOjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kKEdQVUNvbm5lY3Rpb25Ub1dl
YlByb2Nlc3MmIGdwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MsIFJlbW90ZVJlbmRlcmluZ0JhY2tl
bmRDcmVhdGlvblBhcmFtZXRlcnMmJiBwYXJhbWV0ZXJzKQotICAgIDogbV9ncHVDb25uZWN0aW9u
VG9XZWJQcm9jZXNzKG1ha2VXZWFrUHRyKGdwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MpKQorICAg
IDogbV93b3JrUXVldWUoV29ya1F1ZXVlOjpjcmVhdGUoIlJlbW90ZVJlbmRlcmluZ0JhY2tlbmQg
d29yayBxdWV1ZSIsIFdvcmtRdWV1ZTo6VHlwZTo6U2VyaWFsLCBXb3JrUXVldWU6OlFPUzo6VXNl
ckludGVyYWN0aXZlKSkKKyAgICAsIG1fZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2VzcyhncHVDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzKQogICAgICwgbV9yZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllcihw
YXJhbWV0ZXJzLmlkZW50aWZpZXIpCiAjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgLCBtX3Jlc3Vt
ZURpc3BsYXlMaXN0U2VtYXBob3JlKG1ha2VVbmlxdWU8TWFjaFNlbWFwaG9yZT4oV1RGTW92ZShw
YXJhbWV0ZXJzLnNlbmRSaWdodEZvclJlc3VtZURpc3BsYXlMaXN0U2VtYXBob3JlKSkpCiAjZW5k
aWYKIHsKLSAgICBpZiAoYXV0byogZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2VzcyA9IG1fZ3B1Q29u
bmVjdGlvblRvV2ViUHJvY2Vzcy5nZXQoKSkKLSAgICAgICAgZ3B1Q29ubmVjdGlvblRvV2ViUHJv
Y2Vzcy0+bWVzc2FnZVJlY2VpdmVyTWFwKCkuYWRkTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpS
ZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIG1fcmVuZGVyaW5n
QmFja2VuZElkZW50aWZpZXIudG9VSW50NjQoKSwgKnRoaXMpOworICAgIEFTU0VSVChSdW5Mb29w
Ojppc01haW4oKSk7CisgICAgZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jb25uZWN0aW9uKCku
YWRkV29ya1F1ZXVlTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpSZW1vdGVSZW5kZXJpbmdCYWNr
ZW5kOjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIG1fd29ya1F1ZXVlLCB0aGlzLCBtX3JlbmRlcmlu
Z0JhY2tlbmRJZGVudGlmaWVyLnRvVUludDY0KCkpOwogfQogCiBSZW1vdGVSZW5kZXJpbmdCYWNr
ZW5kOjp+UmVtb3RlUmVuZGVyaW5nQmFja2VuZCgpCiB7Ci0gICAgaWYgKGF1dG8qIGdwdUNvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3MgPSBtX2dwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuZ2V0KCkpCi0g
ICAgICAgIGdwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MtPm1lc3NhZ2VSZWNlaXZlck1hcCgpLnJl
bW92ZU1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6bWVz
c2FnZVJlY2VpdmVyTmFtZSgpLCBtX3JlbmRlcmluZ0JhY2tlbmRJZGVudGlmaWVyLnRvVUludDY0
KCkpOworICAgIC8vIE1ha2Ugc3VyZSB3ZSBkZXN0cm95IHRoZSBSZXNvdXJjZUNhY2hlIG9uIHRo
ZSBXb3JrUXVldWUgc2luY2UgaXQgZ2V0cyBwb3B1bGF0ZWQgb24gdGhlIFdvcmtRdWV1ZS4KKyAg
ICBtX3dvcmtRdWV1ZS0+ZGlzcGF0Y2goW3JlbW90ZVJlc291cmNlQ2FjaGUgPSBXVEZNb3ZlKG1f
cmVtb3RlUmVzb3VyY2VDYWNoZSldIHsgfSk7CiB9CiAKLUdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nl
c3MqIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OmdwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MoKSBj
b25zdAordm9pZCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpkaXNjb25uZWN0KCkKIHsKLSAgICBy
ZXR1cm4gbV9ncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmdldCgpOworICAgIEFTU0VSVChSdW5M
b29wOjppc01haW4oKSk7CisKKyAgICAvLyBUaGUgUmVtb3RlUmVuZGVyaW5nQmFja2VuZCBkZXN0
cnVjdG9yIHdvbid0IGJlIGNhbGxlZCB1bnRpbCBkaXNjb25uZWN0KCkgaXMgY2FsbGVkIGFuZCB3
ZSB1bnJlZ2lzdGVyIG91cnNlbHZlcyBhcyBhIFdvcmtRdWV1ZU1lc3NhZ2VSZWNlaXZlciBiZWNh
dXNlCisgICAgLy8gdGhlIElQQzo6Q29ubmVjdGlvbiByZWZzIGl0cyBXb3JrUXVldWVNZXNzYWdl
UmVjZWl2ZXJzLgorICAgIG1fZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2Vzcy0+Y29ubmVjdGlvbigp
LnJlbW92ZVdvcmtRdWV1ZU1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6UmVtb3RlUmVuZGVyaW5n
QmFja2VuZDo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBtX3JlbmRlcmluZ0JhY2tlbmRJZGVudGlm
aWVyLnRvVUludDY0KCkpOwogfQogCiBJUEM6OkNvbm5lY3Rpb24qIFJlbW90ZVJlbmRlcmluZ0Jh
Y2tlbmQ6Om1lc3NhZ2VTZW5kZXJDb25uZWN0aW9uKCkgY29uc3QKIHsKLSAgICBpZiAoYXV0byog
Z3B1Q29ubmVjdGlvblRvV2ViUHJvY2VzcyA9IG1fZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2Vzcy5n
ZXQoKSkKLSAgICAgICAgcmV0dXJuICZncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLT5jb25uZWN0
aW9uKCk7Ci0gICAgcmV0dXJuIG51bGxwdHI7CisgICAgcmV0dXJuICZtX2dwdUNvbm5lY3Rpb25U
b1dlYlByb2Nlc3MtPmNvbm5lY3Rpb24oKTsKIH0KIAogdWludDY0X3QgUmVtb3RlUmVuZGVyaW5n
QmFja2VuZDo6bWVzc2FnZVNlbmRlckRlc3RpbmF0aW9uSUQoKSBjb25zdApAQCAtODcsMTkgKzkx
LDEzIEBAIHVpbnQ2NF90IFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6Om1lc3NhZ2VTZW5kZXJEZXN0
aW5hdGlvbklEKCkgY29uc3QKIAogYm9vbCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjphcHBseU1l
ZGlhSXRlbShEaXNwbGF5TGlzdDo6SXRlbUhhbmRsZSBpdGVtLCBHcmFwaGljc0NvbnRleHQmIGNv
bnRleHQpCiB7CisgICAgQVNTRVJUKCFSdW5Mb29wOjppc01haW4oKSk7CisKICAgICBpZiAoIWl0
ZW0uaXM8RGlzcGxheUxpc3Q6OlBhaW50RnJhbWVGb3JNZWRpYT4oKSkKICAgICAgICAgcmV0dXJu
IGZhbHNlOwogCiAgICAgYXV0byYgbWVkaWFJdGVtID0gaXRlbS5nZXQ8RGlzcGxheUxpc3Q6OlBh
aW50RnJhbWVGb3JNZWRpYT4oKTsKLSAgICBhdXRvIHByb2Nlc3MgPSBncHVDb25uZWN0aW9uVG9X
ZWJQcm9jZXNzKCk7Ci0gICAgaWYgKCFwcm9jZXNzKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0K
LSAgICBhdXRvIHBsYXllclByb3h5ID0gcHJvY2Vzcy0+cmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2Vy
UHJveHkoKS5nZXRQcm94eShtZWRpYUl0ZW0uaWRlbnRpZmllcigpKTsKLSAgICBpZiAoIXBsYXll
clByb3h5KQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBhdXRvIHBsYXllciA9IHBsYXll
clByb3h5LT5tZWRpYVBsYXllcigpOworICAgIGF1dG8gcGxheWVyID0gbV9ncHVDb25uZWN0aW9u
VG9XZWJQcm9jZXNzLT5yZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eSgpLm1lZGlhUGxheWVy
KG1lZGlhSXRlbS5pZGVudGlmaWVyKCkpOwogICAgIGlmICghcGxheWVyKQogICAgICAgICByZXR1
cm4gZmFsc2U7CiAKQEAgLTExOSw2ICsxMTcsNyBAQCB2b2lkIFJlbW90ZVJlbmRlcmluZ0JhY2tl
bmQ6OmRpZEZsdXNoKERpc3BsYXlMaXN0OjpGbHVzaElkZW50aWZpZXIgZmx1c2hJZGVudGlmaQog
CiB2b2lkIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OmNyZWF0ZUltYWdlQnVmZmVyKGNvbnN0IEZs
b2F0U2l6ZSYgbG9naWNhbFNpemUsIFJlbmRlcmluZ01vZGUgcmVuZGVyaW5nTW9kZSwgZmxvYXQg
cmVzb2x1dGlvblNjYWxlLCBDb2xvclNwYWNlIGNvbG9yU3BhY2UsIFBpeGVsRm9ybWF0IHBpeGVs
Rm9ybWF0LCBSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgcmVuZGVyaW5nUmVzb3VyY2VJZGVu
dGlmaWVyKQogeworICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOwogICAgIEFTU0VSVChy
ZW5kZXJpbmdNb2RlID09IFJlbmRlcmluZ01vZGU6OkFjY2VsZXJhdGVkIHx8IHJlbmRlcmluZ01v
ZGUgPT0gUmVuZGVyaW5nTW9kZTo6VW5hY2NlbGVyYXRlZCk7CiAKICAgICBSZWZQdHI8SW1hZ2VC
dWZmZXI+IGltYWdlQnVmZmVyOwpAQCAtMjY5LDYgKzI2OCw4IEBAIFJlZlB0cjxJbWFnZUJ1ZmZl
cj4gUmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6bmV4dERlc3RpbmF0aW9uSW1hZ2VCdWZmZXJBZnRl
ckFwcGx5CiAKIHZvaWQgUmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6d2FrZVVwQW5kQXBwbHlEaXNw
bGF5TGlzdChjb25zdCBHUFVQcm9jZXNzV2FrZXVwTWVzc2FnZUFyZ3VtZW50cyYgYXJndW1lbnRz
KQogeworICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOworCiAgICAgVHJhY2VTY29wZSB0
cmFjaW5nU2NvcGUoV2FrZVVwQW5kQXBwbHlEaXNwbGF5TGlzdFN0YXJ0LCBXYWtlVXBBbmRBcHBs
eURpc3BsYXlMaXN0RW5kKTsKICAgICBhdXRvIGRlc3RpbmF0aW9uSW1hZ2VCdWZmZXIgPSBtYWtl
UmVmUHRyKG1fcmVtb3RlUmVzb3VyY2VDYWNoZS5jYWNoZWRJbWFnZUJ1ZmZlcihhcmd1bWVudHMu
ZGVzdGluYXRpb25JbWFnZUJ1ZmZlcklkZW50aWZpZXIpKTsKICAgICBpZiAoVU5MSUtFTFkoIWRl
c3RpbmF0aW9uSW1hZ2VCdWZmZXIpKSB7CkBAIC0zMjMsNiArMzI0LDggQEAgdm9pZCBSZW1vdGVS
ZW5kZXJpbmdCYWNrZW5kOjpzZXROZXh0SXRlbUJ1ZmZlclRvUmVhZChEaXNwbGF5TGlzdDo6SXRl
bUJ1ZmZlcklkZW4KIAogdm9pZCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpnZXRJbWFnZURhdGEo
QWxwaGFQcmVtdWx0aXBsaWNhdGlvbiBvdXRwdXRGb3JtYXQsIEludFJlY3Qgc3JjUmVjdCwgUmVu
ZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyIHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciwgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZChJUEM6OkltYWdlRGF0YVJlZmVyZW5jZSYmKT4mJiBjb21wbGV0
aW9uSGFuZGxlcikKIHsKKyAgICBBU1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsKKwogICAgIFJl
ZlB0cjxJbWFnZURhdGE+IGltYWdlRGF0YTsKICAgICBpZiAoYXV0byBpbWFnZUJ1ZmZlciA9IG1f
cmVtb3RlUmVzb3VyY2VDYWNoZS5jYWNoZWRJbWFnZUJ1ZmZlcihyZW5kZXJpbmdSZXNvdXJjZUlk
ZW50aWZpZXIpKQogICAgICAgICBpbWFnZURhdGEgPSBpbWFnZUJ1ZmZlci0+Z2V0SW1hZ2VEYXRh
KG91dHB1dEZvcm1hdCwgc3JjUmVjdCk7CkBAIC0zMzEsNiArMzM0LDggQEAgdm9pZCBSZW1vdGVS
ZW5kZXJpbmdCYWNrZW5kOjpnZXRJbWFnZURhdGEoQWxwaGFQcmVtdWx0aXBsaWNhdGlvbiBvdXRw
dXRGb3JtYXQsIEkKIAogdm9pZCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpnZXREYXRhVVJMRm9y
SW1hZ2VCdWZmZXIoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgT3B0aW9uYWw8ZG91YmxlPiBxdWFs
aXR5LCBXZWJDb3JlOjpQcmVzZXJ2ZVJlc29sdXRpb24gcHJlc2VydmVSZXNvbHV0aW9uLCBXZWJD
b3JlOjpSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlm
aWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFN0cmluZyYmKT4mJiBjb21wbGV0aW9uSGFuZGxl
cikKIHsKKyAgICBBU1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsKKwogICAgIFN0cmluZyB1cmxT
dHJpbmc7CiAgICAgaWYgKGF1dG8gaW1hZ2VCdWZmZXIgPSBtX3JlbW90ZVJlc291cmNlQ2FjaGUu
Y2FjaGVkSW1hZ2VCdWZmZXIocmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKSkKICAgICAgICAg
dXJsU3RyaW5nID0gaW1hZ2VCdWZmZXItPnRvRGF0YVVSTChtaW1lVHlwZSwgcXVhbGl0eSwgcHJl
c2VydmVSZXNvbHV0aW9uKTsKQEAgLTMzOSw2ICszNDQsOCBAQCB2b2lkIFJlbW90ZVJlbmRlcmlu
Z0JhY2tlbmQ6OmdldERhdGFVUkxGb3JJbWFnZUJ1ZmZlcihjb25zdCBTdHJpbmcmIG1pbWVUeXBl
LCBPcAogCiB2b2lkIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OmdldERhdGFGb3JJbWFnZUJ1ZmZl
cihjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBPcHRpb25hbDxkb3VibGU+IHF1YWxpdHksIFdlYkNv
cmU6OlJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciByZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZp
ZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoVmVjdG9yPHVpbnQ4X3Q+JiYpPiYmIGNvbXBsZXRp
b25IYW5kbGVyKQogeworICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOworCiAgICAgVmVj
dG9yPHVpbnQ4X3Q+IGRhdGE7CiAgICAgaWYgKGF1dG8gaW1hZ2VCdWZmZXIgPSBtX3JlbW90ZVJl
c291cmNlQ2FjaGUuY2FjaGVkSW1hZ2VCdWZmZXIocmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVy
KSkKICAgICAgICAgZGF0YSA9IGltYWdlQnVmZmVyLT50b0RhdGEobWltZVR5cGUsIHF1YWxpdHkp
OwpAQCAtMzQ3LDYgKzM1NCw4IEBAIHZvaWQgUmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6Z2V0RGF0
YUZvckltYWdlQnVmZmVyKGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIE9wdGlvCiAKIHZvaWQgUmVt
b3RlUmVuZGVyaW5nQmFja2VuZDo6Z2V0QkdSQURhdGFGb3JJbWFnZUJ1ZmZlcihXZWJDb3JlOjpS
ZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyLCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKFZlY3Rvcjx1aW50OF90PiYmKT4mJiBjb21wbGV0aW9uSGFu
ZGxlcikKIHsKKyAgICBBU1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsKKwogICAgIFZlY3Rvcjx1
aW50OF90PiBkYXRhOwogICAgIGlmIChhdXRvIGltYWdlQnVmZmVyID0gbV9yZW1vdGVSZXNvdXJj
ZUNhY2hlLmNhY2hlZEltYWdlQnVmZmVyKHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcikpCiAg
ICAgICAgIGRhdGEgPSBpbWFnZUJ1ZmZlci0+dG9CR1JBRGF0YSgpOwpAQCAtMzU1LDYgKzM2NCw4
IEBAIHZvaWQgUmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6Z2V0QkdSQURhdGFGb3JJbWFnZUJ1ZmZl
cihXZWJDb3JlOjpSZW5kZXJpbmdSZXNvdXJjCiAKIHZvaWQgUmVtb3RlUmVuZGVyaW5nQmFja2Vu
ZDo6Y2FjaGVOYXRpdmVJbWFnZShjb25zdCBTaGFyZWFibGVCaXRtYXA6OkhhbmRsZSYgaGFuZGxl
LCBSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVy
KQogeworICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOworCiAgICAgYXV0byBiaXRtYXAg
PSBTaGFyZWFibGVCaXRtYXA6OmNyZWF0ZShoYW5kbGUpOwogICAgIGlmICghYml0bWFwKQogICAg
ICAgICByZXR1cm47CkBAIC0zNzEsNiArMzgyLDggQEAgdm9pZCBSZW1vdGVSZW5kZXJpbmdCYWNr
ZW5kOjpjYWNoZU5hdGl2ZUltYWdlKGNvbnN0IFNoYXJlYWJsZUJpdG1hcDo6SGFuZGxlJiBoYW4K
IAogdm9pZCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpjYWNoZUZvbnQoUmVmPEZvbnQ+JiYgZm9u
dCkKIHsKKyAgICBBU1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsKKwogICAgIGF1dG8gaWRlbnRp
ZmllciA9IGZvbnQtPnJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcigpOwogICAgIG1fcmVtb3Rl
UmVzb3VyY2VDYWNoZS5jYWNoZUZvbnQoV1RGTW92ZShmb250KSk7CiAgICAgaWYgKG1fcGVuZGlu
Z1dha2V1cEluZm8gJiYgbV9wZW5kaW5nV2FrZXVwSW5mby0+c2hvdWxkUGVyZm9ybVdha2V1cChp
ZGVudGlmaWVyKSkKQEAgLTM3OSwxNiArMzkyLDIwIEBAIHZvaWQgUmVtb3RlUmVuZGVyaW5nQmFj
a2VuZDo6Y2FjaGVGb250KFJlZjxGb250PiYmIGZvbnQpCiAKIHZvaWQgUmVtb3RlUmVuZGVyaW5n
QmFja2VuZDo6ZGVsZXRlQWxsRm9udHMoKQogeworICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWlu
KCkpOwogICAgIG1fcmVtb3RlUmVzb3VyY2VDYWNoZS5kZWxldGVBbGxGb250cygpOwogfQogCiB2
b2lkIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OnJlbGVhc2VSZW1vdGVSZXNvdXJjZShSZW5kZXJp
bmdSZXNvdXJjZUlkZW50aWZpZXIgcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKQogeworICAg
IEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOwogICAgIG1fcmVtb3RlUmVzb3VyY2VDYWNoZS5y
ZWxlYXNlUmVtb3RlUmVzb3VyY2UocmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKTsKIH0KIAog
dm9pZCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpkaWRDcmVhdGVTaGFyZWREaXNwbGF5TGlzdEhh
bmRsZShEaXNwbGF5TGlzdDo6SXRlbUJ1ZmZlcklkZW50aWZpZXIgaWRlbnRpZmllciwgY29uc3Qg
U2hhcmVkTWVtb3J5OjpJUENIYW5kbGUmIGhhbmRsZSwgUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlm
aWVyIGRlc3RpbmF0aW9uQnVmZmVySWRlbnRpZmllcikKIHsKKyAgICBBU1NFUlQoIVJ1bkxvb3A6
OmlzTWFpbigpKTsKKwogICAgIGlmIChVTkxJS0VMWShtX3NoYXJlZERpc3BsYXlMaXN0SGFuZGxl
cy5jb250YWlucyhpZGVudGlmaWVyKSkpIHsKICAgICAgICAgLy8gRklYTUU6IEFkZCBhIG1lc3Nh
Z2UgY2hlY2sgdG8gdGVybWluYXRlIHRoZSB3ZWIgcHJvY2Vzcy4KICAgICAgICAgQVNTRVJUX05P
VF9SRUFDSEVEKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhp
Y3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5oIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dy
YXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQuaAppbmRleCBiYzEyOGYxNmJiMzc1NDY0NTQy
M2ZlMmJkMmIwOTk4MjAzYWYxNjMwLi5lNjM4OTkwM2I2NTBiYThkOTczZGFmOWIzZGNjYTY0NTM1
NmY0NWY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVt
b3RlUmVuZGVyaW5nQmFja2VuZC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFw
aGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kLmgKQEAgLTY1LDE0ICs2NSwxMyBAQCBjbGFzcyBH
UFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzOwogc3RydWN0IFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRD
cmVhdGlvblBhcmFtZXRlcnM7CiAKIGNsYXNzIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQKLSAgICA6
IHB1YmxpYyBJUEM6Ok1lc3NhZ2VTZW5kZXIKLSAgICAsIHByaXZhdGUgSVBDOjpNZXNzYWdlUmVj
ZWl2ZXIKKyAgICA6IHByaXZhdGUgSVBDOjpNZXNzYWdlU2VuZGVyCisgICAgLCBwdWJsaWMgSVBD
OjpDb25uZWN0aW9uOjpXb3JrUXVldWVNZXNzYWdlUmVjZWl2ZXIKICAgICAsIHB1YmxpYyBXZWJD
b3JlOjpEaXNwbGF5TGlzdDo6SXRlbUJ1ZmZlclJlYWRpbmdDbGllbnQgewogcHVibGljOgotICAg
IHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8UmVtb3RlUmVuZGVyaW5nQmFja2VuZD4gY3JlYXRlKEdQ
VUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MmLCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kQ3JlYXRpb25Q
YXJhbWV0ZXJzJiYpOworICAgIHN0YXRpYyBSZWY8UmVtb3RlUmVuZGVyaW5nQmFja2VuZD4gY3Jl
YXRlKEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MmLCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kQ3Jl
YXRpb25QYXJhbWV0ZXJzJiYpOwogICAgIHZpcnR1YWwgflJlbW90ZVJlbmRlcmluZ0JhY2tlbmQo
KTsKIAotICAgIEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MqIGdwdUNvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3MoKSBjb25zdDsKICAgICBSZW1vdGVSZXNvdXJjZUNhY2hlJiByZW1vdGVSZXNvdXJjZUNh
Y2hlKCkgeyByZXR1cm4gbV9yZW1vdGVSZXNvdXJjZUNhY2hlOyB9CiAKICAgICAvLyBSZW5kZXJp
bmcgb3BlcmF0aW9ucy4KQEAgLTg0LDYgKzgzLDggQEAgcHVibGljOgogCiAgICAgdm9pZCBzZXRO
ZXh0SXRlbUJ1ZmZlclRvUmVhZChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbUJ1ZmZlcklkZW50
aWZpZXIsIFdlYkNvcmU6OlJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciBkZXN0aW5hdGlvbik7
CiAKKyAgICB2b2lkIGRpc2Nvbm5lY3QoKTsKKwogcHJpdmF0ZToKICAgICBSZW1vdGVSZW5kZXJp
bmdCYWNrZW5kKEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MmLCBSZW1vdGVSZW5kZXJpbmdCYWNr
ZW5kQ3JlYXRpb25QYXJhbWV0ZXJzJiYpOwogCkBAIC0xNDEsOCArMTQyLDkgQEAgcHJpdmF0ZToK
ICAgICAgICAgfQogICAgIH07CiAKKyAgICBSZWY8V29ya1F1ZXVlPiBtX3dvcmtRdWV1ZTsKICAg
ICBSZW1vdGVSZXNvdXJjZUNhY2hlIG1fcmVtb3RlUmVzb3VyY2VDYWNoZTsKLSAgICBXZWFrUHRy
PEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M+IG1fZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2VzczsK
KyAgICBSZWY8R1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcz4gbV9ncHVDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzOwogICAgIFJlbmRlcmluZ0JhY2tlbmRJZGVudGlmaWVyIG1fcmVuZGVyaW5nQmFja2Vu
ZElkZW50aWZpZXI7CiAgICAgSGFzaE1hcDxXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbUJ1ZmZl
cklkZW50aWZpZXIsIFJlZlB0cjxEaXNwbGF5TGlzdFJlYWRlckhhbmRsZT4+IG1fc2hhcmVkRGlz
cGxheUxpc3RIYW5kbGVzOwogICAgIE9wdGlvbmFsPFBlbmRpbmdXYWtldXBJbmZvcm1hdGlvbj4g
bV9wZW5kaW5nV2FrZXVwSW5mbzsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vz
cy9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kLm1lc3NhZ2VzLmluIGIvU291cmNlL1dl
YktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQubWVzc2FnZXMu
aW4KaW5kZXggMjAyYzIwYTljNjUwMTMwOTExM2Q5MDY4M2NmMDA5Yjg4M2JkMDAxZi4uN2Q2NWNl
OTA5YzU4MjBmNDZiMDFlNmJkZWVjZGVhYTczMzZhYWYyOCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQubWVzc2FnZXMu
aW4KKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmlu
Z0JhY2tlbmQubWVzc2FnZXMuaW4KQEAgLTIyLDcgKzIyLDcgQEAKIAogI2lmIEVOQUJMRShHUFVf
UFJPQ0VTUykKIAotbWVzc2FnZXMgLT4gUmVtb3RlUmVuZGVyaW5nQmFja2VuZCBOb3RSZWZDb3Vu
dGVkIHsKK21lc3NhZ2VzIC0+IFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQgewogICAgIENyZWF0ZUlt
YWdlQnVmZmVyKFdlYkNvcmU6OkZsb2F0U2l6ZSBsb2dpY2FsU2l6ZSwgV2ViQ29yZTo6UmVuZGVy
aW5nTW9kZSByZW5kZXJpbmdNb2RlLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIFdlYkNvcmU6OkNv
bG9yU3BhY2UgY29sb3JTcGFjZSwgZW51bTp1aW50OF90IFdlYkNvcmU6OlBpeGVsRm9ybWF0IHBp
eGVsRm9ybWF0LCBXZWJDb3JlOjpSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgcmVuZGVyaW5n
UmVzb3VyY2VJZGVudGlmaWVyKQogICAgIFdha2VVcEFuZEFwcGx5RGlzcGxheUxpc3Qoc3RydWN0
IFdlYktpdDo6R1BVUHJvY2Vzc1dha2V1cE1lc3NhZ2VBcmd1bWVudHMgYXJndW1lbnRzKQogICAg
IEdldEltYWdlRGF0YShlbnVtOnVpbnQ4X3QgV2ViQ29yZTo6QWxwaGFQcmVtdWx0aXBsaWNhdGlv
biBvdXRwdXRGb3JtYXQsIFdlYkNvcmU6OkludFJlY3Qgc3JjUmVjdCwgV2ViQ29yZTo6UmVuZGVy
aW5nUmVzb3VyY2VJZGVudGlmaWVyIHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcikgLT4gKElQ
Qzo6SW1hZ2VEYXRhUmVmZXJlbmNlIGltYWdlRGF0YSkgU3luY2hyb25vdXMKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVMZWdhY3lDRE1Qcm94eS5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTGVnYWN5Q0RNUHJveHkuY3Bw
CmluZGV4IDhmMDExOWVkZmUxZDZlOTMyNDMwMDViMzQ0MTI1YjI0ZWFiOTFlMzAuLjgwYzkzNzRl
OTcwNTllZTEzOTU1NWViMDY1MjE5NDgyOTYyMDFkOTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVMZWdhY3lDRE1Qcm94eS5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUxlZ2FjeUNETVByb3h5LmNwcApAQCAtODcs
MTEgKzg3LDcgQEAgUmVmUHRyPE1lZGlhUGxheWVyPiBSZW1vdGVMZWdhY3lDRE1Qcm94eTo6Y2Rt
TWVkaWFQbGF5ZXIoY29uc3QgTGVnYWN5Q0RNKikgY29uc3QKICAgICBpZiAoIW1fcGxheWVySWQg
fHwgIW1fZmFjdG9yeSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICBhdXRvIHByb3h5
ID0gbV9mYWN0b3J5LT5ncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzKCkucmVtb3RlTWVkaWFQbGF5
ZXJNYW5hZ2VyUHJveHkoKS5nZXRQcm94eShtX3BsYXllcklkKTsKLSAgICBpZiAoIXByb3h5KQot
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKLQotICAgIHJldHVybiBwcm94eS0+bWVkaWFQbGF5ZXIo
KTsKKyAgICByZXR1cm4gbV9mYWN0b3J5LT5ncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzKCkucmVt
b3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHkoKS5tZWRpYVBsYXllcihtX3BsYXllcklkKTsKIH0K
IAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1l
ZGlhUGxheWVyTWFuYWdlclByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRp
YS9SZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eS5jcHAKaW5kZXggYzAyNTMzNWRjYTM4NTlk
NmQ2NDEzNDYwMDYwNjdiNmE5NWU0YzY2Zi4uZmEyNGEyYWFiZTI0NWI5MDNhODk3ODAzMTU5YzVm
M2ZmYTkzN2ZkZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1Jl
bW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVBy
b2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHkuY3BwCkBAIC02MSw2ICs2
MSw5IEBAIFJlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5Ojp+UmVtb3RlTWVkaWFQbGF5ZXJN
YW5hZ2VyUHJveHkoKQogCiB2b2lkIFJlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5OjpjcmVh
dGVNZWRpYVBsYXllcihNZWRpYVBsYXllcklkZW50aWZpZXIgaWRlbnRpZmllciwgTWVkaWFQbGF5
ZXJFbnVtczo6TWVkaWFFbmdpbmVJZGVudGlmaWVyIGVuZ2luZUlkZW50aWZpZXIsIFJlbW90ZU1l
ZGlhUGxheWVyUHJveHlDb25maWd1cmF0aW9uJiYgcHJveHlDb25maWd1cmF0aW9uLCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKFJlbW90ZU1lZGlhUGxheWVyQ29uZmlndXJhdGlvbiYpPiYmIGNvbXBs
ZXRpb25IYW5kbGVyKQogeworICAgIEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7CisKKyAgICBh
dXRvIGxvY2tlciA9IGhvbGRMb2NrKG1fcHJveGllc0xvY2spOwogICAgIEFTU0VSVCghbV9wcm94
aWVzLmNvbnRhaW5zKGlkZW50aWZpZXIpKTsKIAogICAgIFJlbW90ZU1lZGlhUGxheWVyQ29uZmln
dXJhdGlvbiBwbGF5ZXJDb25maWd1cmF0aW9uOwpAQCAtNzQsNiArNzcsOCBAQCB2b2lkIFJlbW90
ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5OjpjcmVhdGVNZWRpYVBsYXllcihNZWRpYVBsYXllcklk
ZW50aWZpZXIgaWRlbgogCiB2b2lkIFJlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5OjpkZWxl
dGVNZWRpYVBsYXllcihNZWRpYVBsYXllcklkZW50aWZpZXIgaWRlbnRpZmllcikKIHsKKyAgICBB
U1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOworICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2sobV9w
cm94aWVzTG9jayk7CiAgICAgaWYgKGF1dG8gcHJveHkgPSBtX3Byb3hpZXMudGFrZShpZGVudGlm
aWVyKSkKICAgICAgICAgcHJveHktPmludmFsaWRhdGUoKTsKIH0KQEAgLTE2OCwyMSArMTczLDI1
IEBAIHZvaWQgUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHk6OnN1cHBvcnRzS2V5U3lzdGVt
KE1lZGlhUGxheWVyRW51bXM6Ok1lZGlhRW5nCiAKIHZvaWQgUmVtb3RlTWVkaWFQbGF5ZXJNYW5h
Z2VyUHJveHk6OmRpZFJlY2VpdmVQbGF5ZXJNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYgY29ubmVj
dGlvbiwgSVBDOjpEZWNvZGVyJiBkZWNvZGVyKQogeworICAgIEFTU0VSVChSdW5Mb29wOjppc01h
aW4oKSk7CiAgICAgaWYgKGF1dG8qIHBsYXllciA9IG1fcHJveGllcy5nZXQobWFrZU9iamVjdElk
ZW50aWZpZXI8TWVkaWFQbGF5ZXJJZGVudGlmaWVyVHlwZT4oZGVjb2Rlci5kZXN0aW5hdGlvbklE
KCkpKSkKICAgICAgICAgcGxheWVyLT5kaWRSZWNlaXZlTWVzc2FnZShjb25uZWN0aW9uLCBkZWNv
ZGVyKTsKIH0KIAogdm9pZCBSZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eTo6ZGlkUmVjZWl2
ZVN5bmNQbGF5ZXJNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgSVBDOjpEZWNv
ZGVyJiBkZWNvZGVyLCBzdGQ6OnVuaXF1ZV9wdHI8SVBDOjpFbmNvZGVyPiYgZW5jb2RlcikKIHsK
KyAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOwogICAgIGlmIChhdXRvKiBwbGF5ZXIgPSBt
X3Byb3hpZXMuZ2V0KG1ha2VPYmplY3RJZGVudGlmaWVyPE1lZGlhUGxheWVySWRlbnRpZmllclR5
cGU+KGRlY29kZXIuZGVzdGluYXRpb25JRCgpKSkpCiAgICAgICAgIHBsYXllci0+ZGlkUmVjZWl2
ZVN5bmNNZXNzYWdlKGNvbm5lY3Rpb24sIGRlY29kZXIsIGVuY29kZXIpOwogfQogCi1SZW1vdGVN
ZWRpYVBsYXllclByb3h5KiBSZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eTo6Z2V0UHJveHko
Y29uc3QgTWVkaWFQbGF5ZXJJZGVudGlmaWVyJiBpZGVudGlmaWVyKQorLy8gTWF5IGdldCBjYWxs
ZWQgb24gYSBiYWNrZ3JvdW5kIHRocmVhZC4KK1JlZlB0cjxNZWRpYVBsYXllcj4gUmVtb3RlTWVk
aWFQbGF5ZXJNYW5hZ2VyUHJveHk6Om1lZGlhUGxheWVyKGNvbnN0IE1lZGlhUGxheWVySWRlbnRp
ZmllciYgaWRlbnRpZmllcikKIHsKKyAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKG1fcHJveGll
c0xvY2spOwogICAgIGF1dG8gcmVzdWx0cyA9IG1fcHJveGllcy5maW5kKGlkZW50aWZpZXIpOwog
ICAgIGlmIChyZXN1bHRzICE9IG1fcHJveGllcy5lbmQoKSkKLSAgICAgICAgcmV0dXJuIHJlc3Vs
dHMtPnZhbHVlLmdldCgpOworICAgICAgICByZXR1cm4gcmVzdWx0cy0+dmFsdWUtPm1lZGlhUGxh
eWVyKCk7CiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eS5oIGIvU291
cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5
LmgKaW5kZXggYjViMTMzNjE0NjliN2RkYjNjNDEyYjUzNDQ2NjU5M2IyMWJhZGM2NS4uMjM3YWY5
YjY4MDEwYzYyNDI5NjhlZmQwZTQwYjU0ZDQ4ZDBmNDUwOSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5LmgKKysr
IGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyTWFuYWdl
clByb3h5LmgKQEAgLTMzLDYgKzMzLDcgQEAKICNpbmNsdWRlICJUcmFja1ByaXZhdGVSZW1vdGVJ
ZGVudGlmaWVyLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9NZWRpYVBsYXllci5oPgogI2luY2x1ZGUg
PFdlYkNvcmUvTWVkaWFQbGF5ZXJJZGVudGlmaWVyLmg+CisjaW5jbHVkZSA8d3RmL0xvY2suaD4K
ICNpbmNsdWRlIDx3dGYvTG9nZ2VySGVscGVyLmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQgewpAQCAt
NjgsNyArNjksNyBAQCBwdWJsaWM6CiAgICAgV1RGTG9nQ2hhbm5lbCYgbG9nQ2hhbm5lbCgpIGNv
bnN0IGZpbmFsOwogI2VuZGlmCiAKLSAgICBSZW1vdGVNZWRpYVBsYXllclByb3h5KiBnZXRQcm94
eShjb25zdCBXZWJDb3JlOjpNZWRpYVBsYXllcklkZW50aWZpZXImKTsKKyAgICBSZWZQdHI8V2Vi
Q29yZTo6TWVkaWFQbGF5ZXI+IG1lZGlhUGxheWVyKGNvbnN0IFdlYkNvcmU6Ok1lZGlhUGxheWVy
SWRlbnRpZmllciYpOwogCiBwcml2YXRlOgogICAgIC8vIElQQzo6TWVzc2FnZVJlY2VpdmVyCkBA
IC04Niw2ICs4Nyw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBjbGVhck1lZGlhQ2FjaGVGb3JPcmln
aW5zKFdlYkNvcmU6Ok1lZGlhUGxheWVyRW51bXM6Ok1lZGlhRW5naW5lSWRlbnRpZmllciwgY29u
c3QgU3RyaW5nJiYsIFZlY3RvcjxXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGE+JiYpOwogICAg
IHZvaWQgc3VwcG9ydHNLZXlTeXN0ZW0oV2ViQ29yZTo6TWVkaWFQbGF5ZXJFbnVtczo6TWVkaWFF
bmdpbmVJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmJiwgY29uc3QgU3RyaW5nJiYsIENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpOwogCisgICAgTG9jayBtX3Byb3hpZXNMb2NrOwogICAg
IEhhc2hNYXA8V2ViQ29yZTo6TWVkaWFQbGF5ZXJJZGVudGlmaWVyLCBzdGQ6OnVuaXF1ZV9wdHI8
UmVtb3RlTWVkaWFQbGF5ZXJQcm94eT4+IG1fcHJveGllczsKICAgICBHUFVDb25uZWN0aW9uVG9X
ZWJQcm9jZXNzJiBtX2dwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvUGxhdGZvcm0vU2hhcmVkTWVtb3J5LmggYi9Tb3VyY2UvV2ViS2l0L1BsYXRm
b3JtL1NoYXJlZE1lbW9yeS5oCmluZGV4IGEwODU0NmI3NjU2MDQ1NjE0NWQ4NTA0ZDkzOGYwM2U3
ZjgxYjQwZDAuLjAzNDVhMjVlNzM0NGEzYjdiNWMxMTYyOGM4N2Q3YTllODU2ZDg0MTMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vU2hhcmVkTWVtb3J5LmgKKysrIGIvU291cmNl
L1dlYktpdC9QbGF0Zm9ybS9TaGFyZWRNZW1vcnkuaApAQCAtMjgsNyArMjgsNyBAQAogCiAjaW5j
bHVkZSA8d3RmL0ZvcndhcmQuaD4KICNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KLSNpbmNs
dWRlIDx3dGYvUmVmQ291bnRlZC5oPgorI2luY2x1ZGUgPHd0Zi9UaHJlYWRTYWZlUmVmQ291bnRl
ZC5oPgogCiAjaWYgVVNFKFVOSVhfRE9NQUlOX1NPQ0tFVFMpCiAjaW5jbHVkZSAiQXR0YWNobWVu
dC5oIgpAQCAtNTYsNyArNTYsNyBAQCBjbGFzcyBNYWNoU2VuZFJpZ2h0OwogCiBuYW1lc3BhY2Ug
V2ViS2l0IHsKIAotY2xhc3MgU2hhcmVkTWVtb3J5IDogcHVibGljIFJlZkNvdW50ZWQ8U2hhcmVk
TWVtb3J5PiB7CitjbGFzcyBTaGFyZWRNZW1vcnkgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50
ZWQ8U2hhcmVkTWVtb3J5PiB7CiBwdWJsaWM6CiAgICAgZW51bSBjbGFzcyBQcm90ZWN0aW9uIHsK
ICAgICAgICAgUmVhZE9ubHksCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9TaGFy
ZWFibGVCaXRtYXAuY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvU2hhcmVhYmxlQml0bWFwLmNw
cAppbmRleCA4NDQ4ODdiYmMzYjFiM2E0MzM4NDEyZTk0M2M5ZDY5MmNiMWI2MmIwLi5iMTBkNWE2
M2MxYTU0ODRlYTJkMWYzN2I5NWRkNTU1ZDM5ZTAzOTM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1NoYXJlZC9TaGFyZWFibGVCaXRtYXAuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L1NoYXJlYWJsZUJpdG1hcC5jcHAKQEAgLTE3Miw3ICsxNzIsNiBAQCBTaGFyZWFibGVCaXRtYXA6
OlNoYXJlYWJsZUJpdG1hcChjb25zdCBJbnRTaXplJiBzaXplLCBDb25maWd1cmF0aW9uIGNvbmZp
Z3VyYXRpbwogICAgICwgbV9jb25maWd1cmF0aW9uKGNvbmZpZ3VyYXRpb24pCiAgICAgLCBtX2Rh
dGEoZGF0YSkKIHsKLSAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOwogfQogCiBTaGFyZWFi
bGVCaXRtYXA6OlNoYXJlYWJsZUJpdG1hcChjb25zdCBJbnRTaXplJiBzaXplLCBDb25maWd1cmF0
aW9uIGNvbmZpZ3VyYXRpb24sIFJlZlB0cjxTaGFyZWRNZW1vcnk+IHNoYXJlZE1lbW9yeSkKQEAg
LTE4MSw4ICsxODAsNiBAQCBTaGFyZWFibGVCaXRtYXA6OlNoYXJlYWJsZUJpdG1hcChjb25zdCBJ
bnRTaXplJiBzaXplLCBDb25maWd1cmF0aW9uIGNvbmZpZ3VyYXRpbwogICAgICwgbV9zaGFyZWRN
ZW1vcnkoc2hhcmVkTWVtb3J5KQogICAgICwgbV9kYXRhKG51bGxwdHIpCiB7Ci0gICAgQVNTRVJU
KFJ1bkxvb3A6OmlzTWFpbigpKTsKLQogI2lmIFVTRShESVJFQ1QyRCkKICAgICBjcmVhdGVTaGFy
ZWRSZXNvdXJjZSgpOwogI2VuZGlmCkBAIC0xOTAsOCArMTg3LDYgQEAgU2hhcmVhYmxlQml0bWFw
OjpTaGFyZWFibGVCaXRtYXAoY29uc3QgSW50U2l6ZSYgc2l6ZSwgQ29uZmlndXJhdGlvbiBjb25m
aWd1cmF0aW8KIAogU2hhcmVhYmxlQml0bWFwOjp+U2hhcmVhYmxlQml0bWFwKCkKIHsKLSAgICBB
U1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOwotCiAgICAgaWYgKCFpc0JhY2tlZEJ5U2hhcmVkTWVt
b3J5KCkpCiAgICAgICAgIFNoYXJlYWJsZUJpdG1hcE1hbGxvYzo6ZnJlZShtX2RhdGEpOwogI2lm
IFVTRShESVJFQ1QyRCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1NoYXJlYWJs
ZUJpdG1hcC5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQvU2hhcmVhYmxlQml0bWFwLmgKaW5kZXgg
M2ExZmFkMmM3OWJjZTFjN2U1YTFhM2E3MmU2NDAyYjhmYmIxODU1Zi4uY2VjNWI1OTNjNWZhOGNj
ODhiODU2NGIwMTYwYjQ3ZTllMzMxNDBhMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFy
ZWQvU2hhcmVhYmxlQml0bWFwLmgKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvU2hhcmVhYmxl
Qml0bWFwLmgKQEAgLTI4LDggKzI4LDggQEAKICNpbmNsdWRlICJTaGFyZWRNZW1vcnkuaCIKICNp
bmNsdWRlIDxXZWJDb3JlL0ludFJlY3QuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1BsYXRmb3JtSW1h
Z2UuaD4KLSNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIu
aD4KKyNpbmNsdWRlIDx3dGYvVGhyZWFkU2FmZVJlZkNvdW50ZWQuaD4KIAogI2lmIFVTRShDRykK
ICNpbmNsdWRlICJDb2xvclNwYWNlRGF0YS5oIgpAQCAtNTIsNyArNTIsNyBAQCBjbGFzcyBHcmFw
aGljc0NvbnRleHQ7CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogICAgIAotY2xhc3MgU2hhcmVhYmxl
Qml0bWFwIDogcHVibGljIFJlZkNvdW50ZWQ8U2hhcmVhYmxlQml0bWFwPiB7CitjbGFzcyBTaGFy
ZWFibGVCaXRtYXAgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8U2hhcmVhYmxlQml0bWFw
PiB7CiBwdWJsaWM6CiAgICAgc3RydWN0IENvbmZpZ3VyYXRpb24gewogICAgICAgICBib29sIGlz
T3BhcXVlIHsgZmFsc2UgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL2NnL1No
YXJlYWJsZUJpdG1hcENHLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL2NnL1NoYXJlYWJsZUJp
dG1hcENHLmNwcAppbmRleCAzNjUzNDgyMGFmNWEyMjgzYzZlNmEwNmU3NDMzMTc3YjkwM2RlMGEx
Li44ZjljZDU5NDM2Y2ExNmE2N2MzMDFiNzU0NzYwNTk3ODc2OGE0NDNhIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9jZy9TaGFyZWFibGVCaXRtYXBDRy5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9TaGFyZWQvY2cvU2hhcmVhYmxlQml0bWFwQ0cuY3BwCkBAIC04Nyw3ICs4Nyw2IEBA
IHVuc2lnbmVkIFNoYXJlYWJsZUJpdG1hcDo6Y2FsY3VsYXRlQnl0ZXNQZXJQaXhlbChjb25zdCBD
b25maWd1cmF0aW9uJiBjb25maWd1cmF0CiAKIHN0ZDo6dW5pcXVlX3B0cjxHcmFwaGljc0NvbnRl
eHQ+IFNoYXJlYWJsZUJpdG1hcDo6Y3JlYXRlR3JhcGhpY3NDb250ZXh0KCkKIHsKLSAgICBBU1NF
UlQoUnVuTG9vcDo6aXNNYWluKCkpOwogICAgIHJlZigpOyAvLyBCYWxhbmNlZCBieSBkZXJlZiBp
biByZWxlYXNlQml0bWFwQ29udGV4dERhdGEuCiAKICAgICB1bnNpZ25lZCBieXRlc1BlclBpeGVs
ID0gY2FsY3VsYXRlQnl0ZXNQZXJQaXhlbChtX2NvbmZpZ3VyYXRpb24pOwpAQCAtMTU3LDEzICsx
NTYsNiBAQCBSZXRhaW5QdHI8Q0dJbWFnZVJlZj4gU2hhcmVhYmxlQml0bWFwOjpjcmVhdGVDR0lt
YWdlKENHRGF0YVByb3ZpZGVyUmVmIGRhdGFQcm92aQogCiB2b2lkIFNoYXJlYWJsZUJpdG1hcDo6
cmVsZWFzZUJpdG1hcENvbnRleHREYXRhKHZvaWQqIHR5cGVsZXNzQml0bWFwLCB2b2lkKiB0eXBl
bGVzc0RhdGEpCiB7Ci0gICAgaWYgKCFSdW5Mb29wOjppc01haW4oKSkgewotICAgICAgICBSdW5M
b29wOjptYWluKCkuZGlzcGF0Y2goW3R5cGVsZXNzQml0bWFwLCB0eXBlbGVzc0RhdGFdIHsKLSAg
ICAgICAgICAgIHJlbGVhc2VCaXRtYXBDb250ZXh0RGF0YSh0eXBlbGVzc0JpdG1hcCwgdHlwZWxl
c3NEYXRhKTsKLSAgICAgICAgfSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KICAgICBTaGFy
ZWFibGVCaXRtYXAqIGJpdG1hcCA9IHN0YXRpY19jYXN0PFNoYXJlYWJsZUJpdG1hcCo+KHR5cGVs
ZXNzQml0bWFwKTsKICAgICBBU1NFUlRfVU5VU0VEKHR5cGVsZXNzRGF0YSwgYml0bWFwLT5kYXRh
KCkgPT0gdHlwZWxlc3NEYXRhKTsKICAgICBiaXRtYXAtPmRlcmVmKCk7IC8vIEJhbGFuY2VkIGJ5
IHJlZiBpbiBjcmVhdGVHcmFwaGljc0NvbnRleHQuCkBAIC0xNzEsMTMgKzE2Myw2IEBAIHZvaWQg
U2hhcmVhYmxlQml0bWFwOjpyZWxlYXNlQml0bWFwQ29udGV4dERhdGEodm9pZCogdHlwZWxlc3NC
aXRtYXAsIHZvaWQqIHR5cGVsCiAKIHZvaWQgU2hhcmVhYmxlQml0bWFwOjpyZWxlYXNlRGF0YVBy
b3ZpZGVyRGF0YSh2b2lkKiB0eXBlbGVzc0JpdG1hcCwgY29uc3Qgdm9pZCogdHlwZWxlc3NEYXRh
LCBzaXplX3QpCiB7Ci0gICAgaWYgKCFSdW5Mb29wOjppc01haW4oKSkgewotICAgICAgICBSdW5M
b29wOjptYWluKCkuZGlzcGF0Y2goW3R5cGVsZXNzQml0bWFwLCB0eXBlbGVzc0RhdGFdIHsKLSAg
ICAgICAgICAgIHJlbGVhc2VEYXRhUHJvdmlkZXJEYXRhKHR5cGVsZXNzQml0bWFwLCB0eXBlbGVz
c0RhdGEsIDApOwotICAgICAgICB9KTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQogICAgIFNo
YXJlYWJsZUJpdG1hcCogYml0bWFwID0gc3RhdGljX2Nhc3Q8U2hhcmVhYmxlQml0bWFwKj4odHlw
ZWxlc3NCaXRtYXApOwogICAgIEFTU0VSVF9VTlVTRUQodHlwZWxlc3NEYXRhLCBiaXRtYXAtPmRh
dGEoKSA9PSB0eXBlbGVzc0RhdGEpOwogICAgIGJpdG1hcC0+ZGVyZWYoKTsgLy8gQmFsYW5jZWQg
YnkgcmVmIGluIGNyZWF0ZUNHSW1hZ2UuCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>417581</attachid>
            <date>2021-01-13 16:42:06 -0800</date>
            <delta_ts>2021-01-15 13:06:34 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-220476-20210113164205.patch</filename>
            <type>text/plain</type>
            <size>55856</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcxNDYxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IGM1N2I2NTZkYWIwOGY4ZWU1NGJhZTVk
NjM3MjUxMTlkMTBhY2M0M2IuLjQ3NzQ4MjQ0ZWFhZGFlODEzZTY5NDVlYjM0ZTAzYTYyNDRhMmI3
NGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTggQEAKKzIwMjEtMDEtMTMgIENocmlzIER1bWV6ICA8Y2R1bWV6
QGFwcGxlLmNvbT4KKworICAgICAgICBbR1BVUHJvY2Vzc10gTW92ZSBET00gLyBDYW52YXMgcmVu
ZGVyaW5nIG9mZiB0aGUgbWFpbiB0aHJlYWQgaW4gdGhlIEdQVVByb2Nlc3MKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyMDQ3NgorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCB0cmFpdCBmdW5jdGlvbiB0
aGF0IGdldHMgY2FsbGVkIFRpbnlMUlVDYWNoZSB0byBjb252ZXJ0IHRoZSBrZXkgYmVmb3JlIHN0
b3JpbmcKKyAgICAgICAgaXQuIEl0IGlzIHVzZWZ1bCBmb3IgY2xpZW50cyB0aGF0IG5lZWQgdG8g
Y2FsbCBpc29sYXRlZENvcHkoKSBvbiB0aGUga2V5IFN0cmluZyBiZWZvcmUKKyAgICAgICAgc3Rv
cmluZyBpdC4KKworICAgICAgICAqIHd0Zi9UaW55TFJVQ2FjaGUuaDoKKyAgICAgICAgKFdURjo6
VGlueUxSVUNhY2hlUG9saWN5OjpjcmVhdGVLZXlGb3JTdG9yYWdlKToKKyAgICAgICAgKFdURjo6
VGlueUxSVUNhY2hlOjpnZXQpOgorCiAyMDIxLTAxLTExICBLaW1tbyBLaW5udW5lbiAgPGtraW5u
dW5lbkBhcHBsZS5jb20+CiAKICAgICAgICAgV2ViS2l0OjpJUEM6OkVuY29kZXIgbmVlZHMgZGVm
aW5pdGlvbnMgb2YgYWxsIGN1c3RvbSBlbnVtIHZhbHVlcyBhdCB0aGUgRW5jb2RlciBkZWZpbml0
aW9uIHRpbWUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9X
ZWJDb3JlL0NoYW5nZUxvZwppbmRleCBhMWVmZjg1OTczYWZkMzFjMmQ4ODY5ZjkxYmY3OTAxODBh
ZmY5ZjIwLi43OTZiOTE0YWJjODJhMzM1YmYzZjhlZjU1MGQzNjVlM2Q5ZjJlYTA0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCkBAIC0xLDMgKzEsNDkgQEAKKzIwMjEtMDEtMTMgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFw
cGxlLmNvbT4KKworICAgICAgICBbR1BVUHJvY2Vzc10gTW92ZSBET00gLyBDYW52YXMgcmVuZGVy
aW5nIG9mZiB0aGUgbWFpbiB0aHJlYWQgaW4gdGhlIEdQVVByb2Nlc3MKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyMDQ3NgorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE1ha2Ugc29tZSBjYWNoZXMgdGhyZWFk
LXNhZmUgbm93IHRoYXQgd2UgZG8gcmVuZGVyaW5nIG9mZiB0aGUgbWFpbiB0aHJlYWQgaW4KKyAg
ICAgICAgdGhlIEdQVVByb2Nlc3MuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLCBjb3ZlcmVkIGJ5
IGV4aXN0aW5nIHRlc3RzLgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZm
ZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5oOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL1NoYWRvd0JsdXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
U2NyYXRjaEJ1ZmZlcjo6U2NyYXRjaEJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpTY3JhdGNo
QnVmZmVyOjpnZXRTY3JhdGNoQnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcmF0Y2hCdWZm
ZXI6OnNldENhY2hlZFNoYWRvd1ZhbHVlcyk6CisgICAgICAgIChXZWJDb3JlOjpTY3JhdGNoQnVm
ZmVyOjpzZXRDYWNoZWRJbnNldFNoYWRvd1ZhbHVlcyk6CisgICAgICAgIChXZWJDb3JlOjpTY3Jh
dGNoQnVmZmVyOjpzY2hlZHVsZVNjcmF0Y2hCdWZmZXJQdXJnZSk6CisgICAgICAgIChXZWJDb3Jl
OjpTY3JhdGNoQnVmZmVyOjpwdXJnZVRpbWVyRmlyZWQpOgorICAgICAgICAoV2ViQ29yZTo6U2Ny
YXRjaEJ1ZmZlcjo6Y2xlYXJTY3JhdGNoQnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcmF0
Y2hCdWZmZXI6OnNpbmdsZXRvbik6CisgICAgICAgIChXZWJDb3JlOjpTY3JhdGNoQnVmZmVyOjps
b2NrKToKKyAgICAgICAgKFdlYkNvcmU6OlNoYWRvd0JsdXI6OmRyYXdSZWN0U2hhZG93V2l0aFRp
bGluZyk6CisgICAgICAgIChXZWJDb3JlOjpTaGFkb3dCbHVyOjpkcmF3SW5zZXRTaGFkb3dXaXRo
VGlsaW5nKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlclV0aWxp
dGllc0NHLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnV0aUZyb21JbWFnZUJ1ZmZlck1JTUVUeXBl
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9TdWJpbWFnZUNhY2hlV2l0aFRpbWVy
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlN1YmltYWdlQ2FjaGVXaXRoVGltZXI6OlN1YmltYWdl
Q2FjaGVXaXRoVGltZXIpOgorICAgICAgICAoV2ViQ29yZTo6U3ViaW1hZ2VDYWNoZVdpdGhUaW1l
cjo6cHJ1bmVDYWNoZVRpbWVyRmlyZWQpOgorICAgICAgICAoV2ViQ29yZTo6U3ViaW1hZ2VDYWNo
ZVdpdGhUaW1lcjo6c3ViaW1hZ2UpOgorICAgICAgICAoV2ViQ29yZTo6U3ViaW1hZ2VDYWNoZVdp
dGhUaW1lcjo6Y2xlYXJJbWFnZUFuZFN1YmltYWdlcyk6CisgICAgICAgIChXZWJDb3JlOjpTdWJp
bWFnZUNhY2hlV2l0aFRpbWVyOjpjbGVhckFsbCk6CisgICAgICAgIChXZWJDb3JlOjpTdWJpbWFn
ZUNhY2hlV2l0aFRpbWVyOjpzdWJpbWFnZUNhY2hlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9jZy9TdWJpbWFnZUNhY2hlV2l0aFRpbWVyLmg6CisgICAgICAgICogcGxhdGZvcm0vbmV0
d29yay9tYWMvVVRJVXRpbGl0aWVzLm1tOgorICAgICAgICAoV2ViQ29yZTo6VVRJRnJvbVVua25v
d25NSU1FVHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpVVElGcm9tTUlNRVR5cGVDYWNoZVBvbGlj
eTo6Y3JlYXRlVmFsdWVGb3JLZXkpOgorICAgICAgICAoV2ViQ29yZTo6VVRJRnJvbU1JTUVUeXBl
Q2FjaGVQb2xpY3k6OmNyZWF0ZUtleUZvclN0b3JhZ2UpOgorICAgICAgICAoV2ViQ29yZTo6Y2Fj
aGVVVElGcm9tTWltZVR5cGUpOgorICAgICAgICAoV2ViQ29yZTo6VVRJRnJvbU1JTUVUeXBlKToK
KyAgICAgICAgKiBwbGF0Zm9ybS90ZXh0L2NmL0h5cGhlbmF0aW9uQ0YuY3BwOgorICAgICAgICAq
IHBsYXRmb3JtL3RleHQvaHlwaGVuL0h5cGhlbmF0aW9uTGliSHlwaGVuLmNwcDoKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyMDQ3NgorCiAyMDIxLTAx
LTEzICBXZW5zb24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgogCiAgICAgICAgIFtt
YWNPU10gIkNvcnJlY3QgU3BlbGxpbmcgQXV0b21hdGljYWxseSIgbWVudSBpdGVtcyBhcmUgaW5j
b25zaXN0ZW50IHdoZW4gYXV0b2NvcnJlY3Q9Im9mZiIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggNTIzYWU4MzEyN2Iz
YWFmYTM4ZWQ3ZGY4ZjNjNTQxZmM4YWQyNWFmMS4uMGViNTZkNjMyN2ZkMjE1NjJlN2Q1NjUwNzI0
YjAwMGRlZWUwOWQ5YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIv
U291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSw2OSBAQAorMjAyMS0wMS0xMyAgQ2hy
aXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIFtHUFVQcm9jZXNzXSBNb3Zl
IERPTSAvIENhbnZhcyByZW5kZXJpbmcgb2ZmIHRoZSBtYWluIHRocmVhZCBpbiB0aGUgR1BVUHJv
Y2VzcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjIw
NDc2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTW92
ZSBET00gLyBDYW52YXMgcmVuZGVyaW5nIG9mZiB0aGUgbWFpbiB0aHJlYWQgKGFuZCBvbiBhIGhp
Z2gtcHJpb3JpdHkgc2VyaWFsIFdvcmtRdWV1ZSkgaW4gdGhlCisgICAgICAgIEdQVVByb2Nlc3Mg
YnkgbWFraW5nIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQgYSBXb3JrUXVldWVNZXNzYWdlUmVjZWl2
ZXIuIFRoZXJlIGlzIGEgc2VyaWFsIFdvcmtRdWV1ZQorICAgICAgICBwZXIgUmVtb3RlUmVuZGVy
aW5nQmFja2VuZCwgd2hpY2ggbWVhbnMgZWFjaCBXZWJQYWdlIGdldHMgaXRzIG93biBXb3JrUXVl
dWUuCisKKyAgICAgICAgQS9CIHRlc3Rpbmcgc2hvd3MgdGhpcyBtb3N0bHkgcGVyZi1uZXV0cmFs
IChjb3VsZCBiZSBhIHNsaWdodCBwcm9ncmVzc2lvbiBvbiBzb21lIGhhcmR3YXJlKS4gSSBiZWxp
ZXZlCisgICAgICAgIHRoaXMgbmV3IGFyY2hpdGVjdHVyZSBzaG91bGQgYWxzbyBnaXZlIHVzIG1v
cmUgb3B0aW1pemF0aW9uIG9wcG9ydHVuaXRpZXMgaW4gdGhlIGZ1dHVyZS4gRm9yIGV4YW1wbGUs
CisgICAgICAgIHdlIG1heSBiZSBhYmxlIHRvIG1vcmUgYWdncmVzc2l2ZWx5IHdhaXQgb24gdGhl
IGNyb3NzLXByb2Nlc3Mgc2VtYXBob3JlIHdoZW4gd2FpdGluZyBmb3IgbmV3IERpc3BsYXlMaXN0
CisgICAgICAgIGVudHJpZXMgd2l0aG91dCB3b3JyeWluZyBhYm91dCBibG9ja2luZyB0aGUgbWFp
biB0aHJlYWQuCisKKyAgICAgICAgSSBoYXZlIHJ1biBsYXlvdXQgdGVzdHMgaW4gRGVidWcgb24g
Ym90aCBtYWNPUyAmIGlPUyB3aXRoIHRoZSBHUFVQcm9jZXNzIGVuYWJsZWQgYW5kIEkgYmVsaWV2
ZSBJCisgICAgICAgIGhhdmUgZml4ZWQgYWxsIHRoZSBjcmFzaGVzIHRoYXQgd2VyZSBkaXNjb3Zl
cmVkLgorCisgICAgICAgICogR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNw
cDoKKyAgICAgICAgKFdlYktpdDo6R1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6R1BVQ29ubmVj
dGlvblRvV2ViUHJvY2Vzcyk6CisgICAgICAgIChXZWJLaXQ6OkdQVUNvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3M6OmRpZENsb3NlKToKKyAgICAgICAgKFdlYktpdDo6R1BVQ29ubmVjdGlvblRvV2ViUHJv
Y2Vzczo6Y3JlYXRlUmVuZGVyaW5nQmFja2VuZCk6CisgICAgICAgIChXZWJLaXQ6OkdQVUNvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3M6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmRXcmFwcGVyOjpSZW1vdGVS
ZW5kZXJpbmdCYWNrZW5kV3JhcHBlcik6CisgICAgICAgIChXZWJLaXQ6OkdQVUNvbm5lY3Rpb25U
b1dlYlByb2Nlc3M6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmRXcmFwcGVyOjp+UmVtb3RlUmVuZGVy
aW5nQmFja2VuZFdyYXBwZXIpOgorICAgICAgICAqIEdQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRv
V2ViUHJvY2Vzcy5oOgorICAgICAgICAoV2ViS2l0OjpHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNz
OjpyZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eSk6CisgICAgICAgICogR1BVUHJvY2Vzcy9n
cmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kLmNwcDoKKyAgICAgICAgKFdlYktpdDo6UmVt
b3RlUmVuZGVyaW5nQmFja2VuZDo6Y3JlYXRlKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlUmVu
ZGVyaW5nQmFja2VuZDo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZCk6CisgICAgICAgIChXZWJLaXQ6
OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6On5SZW1vdGVSZW5kZXJpbmdCYWNrZW5kKToKKyAgICAg
ICAgKFdlYktpdDo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6ZGlzY29ubmVjdCk6CisgICAgICAg
IChXZWJLaXQ6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6Om1lc3NhZ2VTZW5kZXJDb25uZWN0aW9u
IGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6YXBwbHlN
ZWRpYUl0ZW0pOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpjcmVh
dGVJbWFnZUJ1ZmZlcik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6
Ondha2VVcEFuZEFwcGx5RGlzcGxheUxpc3QpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVSZW5k
ZXJpbmdCYWNrZW5kOjpnZXRJbWFnZURhdGEpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVSZW5k
ZXJpbmdCYWNrZW5kOjpnZXREYXRhVVJMRm9ySW1hZ2VCdWZmZXIpOgorICAgICAgICAoV2ViS2l0
OjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpnZXREYXRhRm9ySW1hZ2VCdWZmZXIpOgorICAgICAg
ICAoV2ViS2l0OjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpnZXRCR1JBRGF0YUZvckltYWdlQnVm
ZmVyKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6Y2FjaGVOYXRp
dmVJbWFnZSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OmNhY2hl
Rm9udCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OmRlbGV0ZUFs
bEZvbnRzKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6cmVsZWFz
ZVJlbW90ZVJlc291cmNlKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlUmVuZGVyaW5nQmFja2Vu
ZDo6ZGlkQ3JlYXRlU2hhcmVkRGlzcGxheUxpc3RIYW5kbGUpOgorICAgICAgICAqIEdQVVByb2Nl
c3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5oOgorICAgICAgICAqIEdQVVByb2Nl
c3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5tZXNzYWdlcy5pbjoKKyAgICAgICAg
KiBHUFVQcm9jZXNzL21lZGlhL1JlbW90ZUxlZ2FjeUNETVByb3h5LmNwcDoKKyAgICAgICAgKFdl
YktpdDo6UmVtb3RlTGVnYWN5Q0RNUHJveHk6OmNkbU1lZGlhUGxheWVyIGNvbnN0KToKKyAgICAg
ICAgKiBHUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5LmNwcDoK
KyAgICAgICAgKFdlYktpdDo6UmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHk6OmNyZWF0ZU1l
ZGlhUGxheWVyKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJv
eHk6OmRlbGV0ZU1lZGlhUGxheWVyKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTWVkaWFQbGF5
ZXJNYW5hZ2VyUHJveHk6OmRpZFJlY2VpdmVQbGF5ZXJNZXNzYWdlKToKKyAgICAgICAgKFdlYktp
dDo6UmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHk6OmRpZFJlY2VpdmVTeW5jUGxheWVyTWVz
c2FnZSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5Ojpt
ZWRpYVBsYXllcik6CisgICAgICAgICogR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVBsYXll
ck1hbmFnZXJQcm94eS5oOgorICAgICAgICAqIFBsYXRmb3JtL1NoYXJlZE1lbW9yeS5oOgorICAg
ICAgICAqIFNoYXJlZC9TaGFyZWFibGVCaXRtYXAuY3BwOgorICAgICAgICAoV2ViS2l0OjpTaGFy
ZWFibGVCaXRtYXA6OlNoYXJlYWJsZUJpdG1hcCk6CisgICAgICAgIChXZWJLaXQ6OlNoYXJlYWJs
ZUJpdG1hcDo6flNoYXJlYWJsZUJpdG1hcCk6CisgICAgICAgICogU2hhcmVkL1NoYXJlYWJsZUJp
dG1hcC5oOgorICAgICAgICAqIFNoYXJlZC9jZy9TaGFyZWFibGVCaXRtYXBDRy5jcHA6CisgICAg
ICAgIChXZWJLaXQ6OlNoYXJlYWJsZUJpdG1hcDo6Y3JlYXRlR3JhcGhpY3NDb250ZXh0KToKKyAg
ICAgICAgKFdlYktpdDo6U2hhcmVhYmxlQml0bWFwOjpyZWxlYXNlQml0bWFwQ29udGV4dERhdGEp
OgorICAgICAgICAoV2ViS2l0OjpTaGFyZWFibGVCaXRtYXA6OnJlbGVhc2VEYXRhUHJvdmlkZXJE
YXRhKToKKwogMjAyMS0wMS0xMyAgV2Vuc29uIEhzaWVoICA8d2Vuc29uX2hzaWVoQGFwcGxlLmNv
bT4KIAogICAgICAgICBbbWFjT1NdICJDb3JyZWN0IFNwZWxsaW5nIEF1dG9tYXRpY2FsbHkiIG1l
bnUgaXRlbXMgYXJlIGluY29uc2lzdGVudCB3aGVuIGF1dG9jb3JyZWN0PSJvZmYiCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV1RGL3d0Zi9UaW55TFJVQ2FjaGUuaCBiL1NvdXJjZS9XVEYvd3RmL1RpbnlM
UlVDYWNoZS5oCmluZGV4IGQ4YmM3YjgxMzExOTllMDNhMWZkODdhNjRmNTcxNDI3OGYzODM5N2Mu
LjkwM2U1YmJhNzM4MWQ4MzRlNzMzNGQ5MWNmYmE5YWU0ODcxMDUxMmUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XVEYvd3RmL1RpbnlMUlVDYWNoZS5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL1RpbnlMUlVD
YWNoZS5oCkBAIC0zNSw2ICszNSw3IEBAIHN0cnVjdCBUaW55TFJVQ2FjaGVQb2xpY3kgewogICAg
IHN0YXRpYyBib29sIGlzS2V5TnVsbChjb25zdCBLZXlUeXBlJikgeyByZXR1cm4gZmFsc2U7IH0K
ICAgICBzdGF0aWMgVmFsdWVUeXBlIGNyZWF0ZVZhbHVlRm9yTnVsbEtleSgpIHsgcmV0dXJuIHsg
fTsgfQogICAgIHN0YXRpYyBWYWx1ZVR5cGUgY3JlYXRlVmFsdWVGb3JLZXkoY29uc3QgS2V5VHlw
ZSYpIHsgcmV0dXJuIHsgfTsgfQorICAgIHN0YXRpYyBLZXlUeXBlIGNyZWF0ZUtleUZvclN0b3Jh
Z2UoY29uc3QgS2V5VHlwZSYga2V5KSB7IHJldHVybiBrZXk7IH0KIH07CiAKIHRlbXBsYXRlPHR5
cGVuYW1lIEtleVR5cGUsIHR5cGVuYW1lIFZhbHVlVHlwZSwgc2l6ZV90IGNhcGFjaXR5ID0gNCwg
dHlwZW5hbWUgUG9saWN5ID0gVGlueUxSVUNhY2hlUG9saWN5PEtleVR5cGUsIFZhbHVlVHlwZT4+
CkBAIC02Niw3ICs2Nyw3IEBAIHB1YmxpYzoKICAgICAgICAgaWYgKG1fY2FjaGUuc2l6ZSgpID09
IGNhcGFjaXR5KQogICAgICAgICAgICAgbV9jYWNoZS5yZW1vdmUoMCk7CiAKLSAgICAgICAgbV9j
YWNoZS5hcHBlbmQoc3RkOjptYWtlX3BhaXIoa2V5LCBQb2xpY3k6OmNyZWF0ZVZhbHVlRm9yS2V5
KGtleSkpKTsKKyAgICAgICAgbV9jYWNoZS5hcHBlbmQoc3RkOjptYWtlX3BhaXIoUG9saWN5Ojpj
cmVhdGVLZXlGb3JTdG9yYWdlKGtleSksIFBvbGljeTo6Y3JlYXRlVmFsdWVGb3JLZXkoa2V5KSkp
OwogICAgICAgICByZXR1cm4gbV9jYWNoZS5sYXN0KCkuc2Vjb25kOwogICAgIH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXIuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyLmgKaW5kZXggNDI1YTMy
ZWE0NDljMGVkNTIyNmNjNTg5N2Q5Y2MxNmI3ODYyMGZkYi4uMzZkNzRjYTM5ZGUxN2NkMDNjMTNi
Yjc1ZTRkNWUzODQ4YzMzZWNmZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvSW1hZ2VCdWZmZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9JbWFnZUJ1ZmZlci5oCkBAIC00Miw3ICs0Miw3IEBAIGNsYXNzIERyYXdpbmdDb250ZXh0
Owogc3RydWN0IEl0ZW1CdWZmZXJIYW5kbGU7CiB9CiAKLWNsYXNzIEltYWdlQnVmZmVyIDogcHVi
bGljIFJlZkNvdW50ZWQ8SW1hZ2VCdWZmZXI+LCBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8SW1hZ2VC
dWZmZXI+IHsKK2NsYXNzIEltYWdlQnVmZmVyIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVk
PEltYWdlQnVmZmVyPiwgcHVibGljIENhbk1ha2VXZWFrUHRyPEltYWdlQnVmZmVyPiB7CiBwdWJs
aWM6CiAgICAgLy8gV2lsbCByZXR1cm4gYSBudWxsIHBvaW50ZXIgb24gYWxsb2NhdGlvbiBmYWls
dXJlLgogICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWZQdHI8SW1hZ2VCdWZmZXI+IGNyZWF0
ZShjb25zdCBGbG9hdFNpemUmLCBSZW5kZXJpbmdNb2RlLCBTaG91bGRVc2VEaXNwbGF5TGlzdCwg
UmVuZGVyaW5nUHVycG9zZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlID0gMSwgQ29sb3JTcGFjZSA9
IENvbG9yU3BhY2U6OlNSR0IsIFBpeGVsRm9ybWF0ID0gUGl4ZWxGb3JtYXQ6OkJHUkE4LCBjb25z
dCBIb3N0V2luZG93KiA9IG51bGxwdHIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL01lZGlhUGxheWVyLmgKaW5kZXggODdhM2VjNzFkYmFjMWQ2MzQyNzRmOWE4ZDM4NDFi
YzVhZjQyZWVlNi4uMjZjNzYzMTk4NDkyMjlmMGMxYTU0MjEyZWM5NjIxMWFlYmI0ZWJkZSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5oCkBAIC01
MSw2ICs1MSw3IEBACiAjaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KICNpbmNsdWRlIDx3dGYvTG9n
Z2VyLmg+CiAjaW5jbHVkZSA8d3RmL01lZGlhVGltZS5oPgorI2luY2x1ZGUgPHd0Zi9UaHJlYWRT
YWZlUmVmQ291bnRlZC5oPgogI2luY2x1ZGUgPHd0Zi9XYWxsVGltZS5oPgogI2luY2x1ZGUgPHd0
Zi90ZXh0L1N0cmluZ0hhc2guaD4KIApAQCAtMjgyLDcgKzI4Myw3IEBAIHB1YmxpYzoKICNlbmRp
ZgogfTsKIAotY2xhc3MgV0VCQ09SRV9FWFBPUlQgTWVkaWFQbGF5ZXIgOiBwdWJsaWMgTWVkaWFQ
bGF5ZXJFbnVtcywgcHVibGljIFJlZkNvdW50ZWQ8TWVkaWFQbGF5ZXI+IHsKK2NsYXNzIFdFQkNP
UkVfRVhQT1JUIE1lZGlhUGxheWVyIDogcHVibGljIE1lZGlhUGxheWVyRW51bXMsIHB1YmxpYyBU
aHJlYWRTYWZlUmVmQ291bnRlZDxNZWRpYVBsYXllciwgV1RGOjpEZXN0cnVjdGlvblRocmVhZDo6
TWFpbj4gewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKE1lZGlhUGxheWVyKTsgV1RGX01BS0Vf
RkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgc3RhdGljIFJlZjxNZWRpYVBsYXllcj4gY3Jl
YXRlKE1lZGlhUGxheWVyQ2xpZW50Jik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9TaGFkb3dCbHVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL1NoYWRvd0JsdXIuY3BwCmluZGV4IDgzMzg5YmE2ODA1NjM3N2Y5OWYwZjVhMWNkMzA3
YmY2Y2Y5MWQ4MmEuLmFjMTQ2ZDk5NTcwOTViMjdmYmQ3ODA3MTFlYzhiOTA3MjVhMmZiZWYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1NoYWRvd0JsdXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1NoYWRvd0JsdXIuY3BwCkBA
IC0zNiw5ICszNiwxMSBAQAogI2luY2x1ZGUgIkltYWdlQnVmZmVyLmgiCiAjaW5jbHVkZSAiSW1h
Z2VEYXRhLmgiCiAjaW5jbHVkZSAiVGltZXIuaCIKKyNpbmNsdWRlIDx3dGYvTG9jay5oPgogI2lu
Y2x1ZGUgPHd0Zi9NYXRoRXh0cmFzLmg+CiAjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+
CiAjaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+CisjaW5jbHVkZSA8d3RmL1J1bkxvb3AuaD4K
ICNpbmNsdWRlIDx3dGYvU2NvcGUuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtNjEsMjMg
KzYzLDIxIEBAIGNsYXNzIFNjcmF0Y2hCdWZmZXIgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NB
VEVEOwogcHVibGljOgogICAgIFNjcmF0Y2hCdWZmZXIoKQotICAgICAgICA6IG1fcHVyZ2VUaW1l
cigqdGhpcywgJlNjcmF0Y2hCdWZmZXI6OmNsZWFyU2NyYXRjaEJ1ZmZlcikKLSAgICAgICAgLCBt
X2xhc3RXYXNJbnNldChmYWxzZSkKLSNpZiBBU1NFUlRfRU5BQkxFRAotICAgICAgICAsIG1fYnVm
ZmVySW5Vc2UoZmFsc2UpCi0jZW5kaWYKKyAgICAgICAgOiBtX3B1cmdlVGltZXIoUnVuTG9vcDo6
bWFpbigpLCB0aGlzLCAmU2NyYXRjaEJ1ZmZlcjo6cHVyZ2VUaW1lckZpcmVkKQogICAgIHsKICAg
ICB9CiAKLSAgICBJbWFnZUJ1ZmZlciogZ2V0U2NyYXRjaEJ1ZmZlcihjb25zdCBJbnRTaXplJiBz
aXplKQorICAgIFJlZlB0cjxJbWFnZUJ1ZmZlcj4gZ2V0U2NyYXRjaEJ1ZmZlcihjb25zdCBJbnRT
aXplJiBzaXplKQogICAgIHsKLSAgICAgICAgQVNTRVJUKCFtX2J1ZmZlckluVXNlKTsKLSNpZiBB
U1NFUlRfRU5BQkxFRAotICAgICAgICBtX2J1ZmZlckluVXNlID0gdHJ1ZTsKLSNlbmRpZgorICAg
ICAgICBBU1NFUlQobG9jaygpLmlzSGVsZCgpKTsKKyAgICAgICAgYXV0byByZWxlYXNlTGF5ZXJJ
bWFnZSA9IG1ha2VTY29wZUV4aXQoW3RoaXNdIHsKKyAgICAgICAgICAgIGlmIChtX2ltYWdlQnVm
ZmVyKQorICAgICAgICAgICAgICAgIHNjaGVkdWxlU2NyYXRjaEJ1ZmZlclB1cmdlKCk7CisgICAg
ICAgIH0pOworCiAgICAgICAgIC8vIFdlIGRvIG5vdCBuZWVkIHRvIHJlY3JlYXRlIHRoZSBidWZm
ZXIgaWYgdGhlIGN1cnJlbnQgYnVmZmVyIGlzIGxhcmdlIGVub3VnaC4KICAgICAgICAgaWYgKG1f
aW1hZ2VCdWZmZXIgJiYgbV9pbWFnZUJ1ZmZlci0+bG9naWNhbFNpemUoKS53aWR0aCgpID49IHNp
emUud2lkdGgoKSAmJiBtX2ltYWdlQnVmZmVyLT5sb2dpY2FsU2l6ZSgpLmhlaWdodCgpID49IHNp
emUuaGVpZ2h0KCkpCi0gICAgICAgICAgICByZXR1cm4gbV9pbWFnZUJ1ZmZlci5nZXQoKTsKKyAg
ICAgICAgICAgIHJldHVybiBtX2ltYWdlQnVmZmVyOwogCiAgICAgICAgIC8vIFJvdW5kIHRvIHRo
ZSBuZWFyZXN0IDMyIHBpeGVscyBzbyB3ZSBkbyBub3QgZ3JvdyB0aGUgYnVmZmVyIGZvciBzaW1p
bGFyIHNpemVkIHJlcXVlc3RzLgogICAgICAgICBJbnRTaXplIHJvdW5kZWRTaXplKHJvdW5kVXBU
b011bHRpcGxlT2YzMihzaXplLndpZHRoKCkpLCByb3VuZFVwVG9NdWx0aXBsZU9mMzIoc2l6ZS5o
ZWlnaHQoKSkpOwpAQCAtODYsMTEgKzg2LDEyIEBAIHB1YmxpYzoKIAogICAgICAgICAvLyBTaGFk
b3dCbHVyIGlzIG5vdCB1c2VkIHdpdGggYWNjZWxlcmF0ZWQgZHJhd2luZywgc28gaXQncyBPSyB0
byBtYWtlIGFuIHVuY29uZGl0aW9uYWxseSB1bmFjY2VsZXJhdGVkIGJ1ZmZlci4KICAgICAgICAg
bV9pbWFnZUJ1ZmZlciA9IEltYWdlQnVmZmVyOjpjcmVhdGUocm91bmRlZFNpemUsIFJlbmRlcmlu
Z01vZGU6OlVuYWNjZWxlcmF0ZWQsIDEpOwotICAgICAgICByZXR1cm4gbV9pbWFnZUJ1ZmZlci5n
ZXQoKTsKKyAgICAgICAgcmV0dXJuIG1faW1hZ2VCdWZmZXI7CiAgICAgfQogCiAgICAgYm9vbCBz
ZXRDYWNoZWRTaGFkb3dWYWx1ZXMoY29uc3QgRmxvYXRTaXplJiByYWRpdXMsIGNvbnN0IENvbG9y
JiBjb2xvciwgY29uc3QgRmxvYXRSZWN0JiBzaGFkb3dSZWN0LCBjb25zdCBGbG9hdFJvdW5kZWRS
ZWN0OjpSYWRpaSYgcmFkaWksIGNvbnN0IEZsb2F0U2l6ZSYgbGF5ZXJTaXplKQogICAgIHsKKyAg
ICAgICAgQVNTRVJUKGxvY2soKS5pc0hlbGQoKSk7CiAgICAgICAgIGlmICghbV9sYXN0V2FzSW5z
ZXQgJiYgbV9sYXN0UmFkaXVzID09IHJhZGl1cyAmJiBtX2xhc3RDb2xvciA9PSBjb2xvciAmJiBt
X2xhc3RTaGFkb3dSZWN0ID09IHNoYWRvd1JlY3QgJiYgIG1fbGFzdFJhZGlpID09IHJhZGlpICYm
IG1fbGFzdExheWVyU2l6ZSA9PSBsYXllclNpemUpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7
CiAKQEAgLTEwNiw2ICsxMDcsNyBAQCBwdWJsaWM6CiAKICAgICBib29sIHNldENhY2hlZEluc2V0
U2hhZG93VmFsdWVzKGNvbnN0IEZsb2F0U2l6ZSYgcmFkaXVzLCBjb25zdCBDb2xvciYgY29sb3Is
IGNvbnN0IEZsb2F0UmVjdCYgYm91bmRzLCBjb25zdCBGbG9hdFJlY3QmIHNoYWRvd1JlY3QsIGNv
bnN0IEZsb2F0Um91bmRlZFJlY3Q6OlJhZGlpJiByYWRpaSkKICAgICB7CisgICAgICAgIEFTU0VS
VChsb2NrKCkuaXNIZWxkKCkpOwogICAgICAgICBpZiAobV9sYXN0V2FzSW5zZXQgJiYgbV9sYXN0
UmFkaXVzID09IHJhZGl1cyAmJiBtX2xhc3RDb2xvciA9PSBjb2xvciAmJiBtX2xhc3RJbnNldEJv
dW5kcyA9PSBib3VuZHMgJiYgc2hhZG93UmVjdCA9PSBtX2xhc3RTaGFkb3dSZWN0ICYmIHJhZGlp
ID09IG1fbGFzdFJhZGlpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogCkBAIC0xMTksNTAg
KzEyMSw1NyBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KIAorICAgIHN0
YXRpYyBTY3JhdGNoQnVmZmVyJiBzaW5nbGV0b24oKTsKKyAgICBzdGF0aWMgTG9jayYgbG9jaygp
OworCitwcml2YXRlOgogICAgIHZvaWQgc2NoZWR1bGVTY3JhdGNoQnVmZmVyUHVyZ2UoKQogICAg
IHsKLSNpZiBBU1NFUlRfRU5BQkxFRAotICAgICAgICBtX2J1ZmZlckluVXNlID0gZmFsc2U7Ci0j
ZW5kaWYKLSAgICAgICAgaWYgKG1fcHVyZ2VUaW1lci5pc0FjdGl2ZSgpKQotICAgICAgICAgICAg
bV9wdXJnZVRpbWVyLnN0b3AoKTsKLQorICAgICAgICBBU1NFUlQobG9jaygpLmlzSGVsZCgpKTsK
ICAgICAgICAgY29uc3QgU2Vjb25kcyBzY3JhdGNoQnVmZmVyUHVyZ2VJbnRlcnZhbCB7IDJfcyB9
OwogICAgICAgICBtX3B1cmdlVGltZXIuc3RhcnRPbmVTaG90KHNjcmF0Y2hCdWZmZXJQdXJnZUlu
dGVydmFsKTsKICAgICB9CiAKLSAgICBzdGF0aWMgU2NyYXRjaEJ1ZmZlciYgc2luZ2xldG9uKCk7
CisgICAgdm9pZCBwdXJnZVRpbWVyRmlyZWQoKQorICAgIHsKKyAgICAgICAgQVNTRVJUKGlzTWFp
blRocmVhZCgpKTsKKyAgICAgICAgaWYgKGF1dG8gbG9ja2VyID0gdHJ5SG9sZExvY2sobG9jaygp
KSkKKyAgICAgICAgICAgIGNsZWFyU2NyYXRjaEJ1ZmZlcigpOworICAgIH0KIAotcHJpdmF0ZToK
ICAgICB2b2lkIGNsZWFyU2NyYXRjaEJ1ZmZlcigpCiAgICAgeworICAgICAgICBBU1NFUlQobG9j
aygpLmlzSGVsZCgpKTsKICAgICAgICAgbV9pbWFnZUJ1ZmZlciA9IG51bGxwdHI7CiAgICAgICAg
IG1fbGFzdFJhZGl1cyA9IEZsb2F0U2l6ZSgpOwogICAgICAgICBtX2xhc3RMYXllclNpemUgPSBG
bG9hdFNpemUoKTsKICAgICB9CiAKICAgICBSZWZQdHI8SW1hZ2VCdWZmZXI+IG1faW1hZ2VCdWZm
ZXI7Ci0gICAgVGltZXIgbV9wdXJnZVRpbWVyOworICAgIFJ1bkxvb3A6OlRpbWVyPFNjcmF0Y2hC
dWZmZXI+IG1fcHVyZ2VUaW1lcjsKIAogICAgIEZsb2F0UmVjdCBtX2xhc3RJbnNldEJvdW5kczsK
ICAgICBGbG9hdFJlY3QgbV9sYXN0U2hhZG93UmVjdDsKICAgICBGbG9hdFJvdW5kZWRSZWN0OjpS
YWRpaSBtX2xhc3RSYWRpaTsKICAgICBDb2xvciBtX2xhc3RDb2xvcjsKICAgICBGbG9hdFNpemUg
bV9sYXN0UmFkaXVzOwotICAgIGJvb2wgbV9sYXN0V2FzSW5zZXQ7CisgICAgYm9vbCBtX2xhc3RX
YXNJbnNldCB7IGZhbHNlIH07CiAgICAgRmxvYXRTaXplIG1fbGFzdExheWVyU2l6ZTsKLQotI2lm
IEFTU0VSVF9FTkFCTEVECi0gICAgYm9vbCBtX2J1ZmZlckluVXNlOwotI2VuZGlmCiB9OwogCiBT
Y3JhdGNoQnVmZmVyJiBTY3JhdGNoQnVmZmVyOjpzaW5nbGV0b24oKQogeworICAgIEFTU0VSVChs
b2NrKCkuaXNIZWxkKCkpOwogICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxTY3JhdGNoQnVmZmVy
PiBzY3JhdGNoQnVmZmVyOwogICAgIHJldHVybiBzY3JhdGNoQnVmZmVyOwogfQogCitMb2NrJiBT
Y3JhdGNoQnVmZmVyOjpsb2NrKCkKK3sKKyAgICBzdGF0aWMgTG9jayBsb2NrOworICAgIHJldHVy
biBsb2NrOworfQorCiBzdGF0aWMgZmxvYXQgcmFkaXVzVG9MZWdhY3lSYWRpdXMoZmxvYXQgcmFk
aXVzKQogewogICAgIHJldHVybiByYWRpdXMgPiA4ID8gOCArIDQgKiBzcXJ0KChyYWRpdXMgLSA4
KSAvIDIpIDogcmFkaXVzOwpAQCAtNjgzLDI2ICs2OTIsMzIgQEAgdm9pZCBTaGFkb3dCbHVyOjpk
cmF3SW5zZXRTaGFkb3dXaXRob3V0VGlsaW5nKGNvbnN0IEFmZmluZVRyYW5zZm9ybSYsIGNvbnN0
IEZsb2EKIAogdm9pZCBTaGFkb3dCbHVyOjpkcmF3UmVjdFNoYWRvd1dpdGhUaWxpbmcoY29uc3Qg
QWZmaW5lVHJhbnNmb3JtJiB0cmFuc2Zvcm0sIGNvbnN0IEZsb2F0Um91bmRlZFJlY3QmIHNoYWRv
d2VkUmVjdCwgY29uc3QgSW50U2l6ZSYgdGVtcGxhdGVTaXplLCBjb25zdCBJbnRTaXplJiBlZGdl
U2l6ZSwgY29uc3QgRHJhd0ltYWdlQ2FsbGJhY2smIGRyYXdJbWFnZSwgY29uc3QgRmlsbFJlY3RD
YWxsYmFjayYgZmlsbFJlY3QsIGNvbnN0IExheWVySW1hZ2VQcm9wZXJ0aWVzJiBsYXllckltYWdl
UHJvcGVydGllcykKIHsKKyAgICBSZWZQdHI8SW1hZ2VCdWZmZXI+IGxheWVySW1hZ2VCdWZmZXI7
CiAjaWYgVVNFKENHKQotICAgIGF1dG8qIGxheWVySW1hZ2UgPSBTY3JhdGNoQnVmZmVyOjpzaW5n
bGV0b24oKS5nZXRTY3JhdGNoQnVmZmVyKHRlbXBsYXRlU2l6ZSk7Ci0gICAgYXV0byByZWxlYXNl
TGF5ZXJJbWFnZSA9IG1ha2VTY29wZUV4aXQoW10gewotICAgICAgICBTY3JhdGNoQnVmZmVyOjpz
aW5nbGV0b24oKS5zY2hlZHVsZVNjcmF0Y2hCdWZmZXJQdXJnZSgpOwotICAgIH0pOworICAgIGF1
dG8gbG9ja2VyID0gdHJ5SG9sZExvY2soU2NyYXRjaEJ1ZmZlcjo6bG9jaygpKTsKKyAgICBpZiAo
bG9ja2VyKSB7CisgICAgICAgIGxheWVySW1hZ2VCdWZmZXIgPSBTY3JhdGNoQnVmZmVyOjpzaW5n
bGV0b24oKS5nZXRTY3JhdGNoQnVmZmVyKHRlbXBsYXRlU2l6ZSk7CisgICAgICAgIGlmICghbGF5
ZXJJbWFnZUJ1ZmZlcikKKyAgICAgICAgICAgIHJldHVybjsKKyAgICB9CiAjZWxzZQogICAgIFVO
VVNFRF9QQVJBTShsYXllckltYWdlUHJvcGVydGllcyk7Ci0gICAgYXV0byBsYXllckltYWdlQnVm
ZmVyID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZSh0ZW1wbGF0ZVNpemUsIFJlbmRlcmluZ01vZGU6OlVu
YWNjZWxlcmF0ZWQsIDEpOwotICAgIGF1dG8qIGxheWVySW1hZ2UgPSBsYXllckltYWdlQnVmZmVy
LmdldCgpOwogI2VuZGlmCiAKLSAgICBpZiAoIWxheWVySW1hZ2UpCi0gICAgICAgIHJldHVybjsK
KyAgICBpZiAoIWxheWVySW1hZ2VCdWZmZXIpIHsKKyAgICAgICAgbGF5ZXJJbWFnZUJ1ZmZlciA9
IEltYWdlQnVmZmVyOjpjcmVhdGUodGVtcGxhdGVTaXplLCBSZW5kZXJpbmdNb2RlOjpVbmFjY2Vs
ZXJhdGVkLCAxKTsKKyAgICAgICAgaWYgKCFsYXllckltYWdlQnVmZmVyKQorICAgICAgICAgICAg
cmV0dXJuOworICAgIH0KKyAgICBhdXRvKiBsYXllckltYWdlID0gbGF5ZXJJbWFnZUJ1ZmZlci5n
ZXQoKTsKIAogICAgIEZsb2F0UmVjdCB0ZW1wbGF0ZVNoYWRvdyA9IEZsb2F0UmVjdChlZGdlU2l6
ZS53aWR0aCgpLCBlZGdlU2l6ZS5oZWlnaHQoKSwgdGVtcGxhdGVTaXplLndpZHRoKCkgLSAyICog
ZWRnZVNpemUud2lkdGgoKSwgdGVtcGxhdGVTaXplLmhlaWdodCgpIC0gMiAqIGVkZ2VTaXplLmhl
aWdodCgpKTsKIAogICAgIGJvb2wgcmVkcmF3TmVlZGVkID0gdHJ1ZTsKICNpZiBVU0UoQ0cpCiAg
ICAgLy8gT25seSByZWRyYXcgaW4gdGhlIHNjcmF0Y2ggYnVmZmVyIGlmIGl0cyBjYWNoZWQgY29u
dGVudHMgZG9uJ3QgbWF0Y2ggb3VyIG5lZWRzCi0gICAgcmVkcmF3TmVlZGVkID0gU2NyYXRjaEJ1
ZmZlcjo6c2luZ2xldG9uKCkuc2V0Q2FjaGVkU2hhZG93VmFsdWVzKG1fYmx1clJhZGl1cywgbV9j
b2xvciwgdGVtcGxhdGVTaGFkb3csIHNoYWRvd2VkUmVjdC5yYWRpaSgpLCBsYXllckltYWdlUHJv
cGVydGllcy5sYXllclNpemUpOworICAgIGlmIChsb2NrZXIpCisgICAgICAgIHJlZHJhd05lZWRl
ZCA9IFNjcmF0Y2hCdWZmZXI6OnNpbmdsZXRvbigpLnNldENhY2hlZFNoYWRvd1ZhbHVlcyhtX2Js
dXJSYWRpdXMsIG1fY29sb3IsIHRlbXBsYXRlU2hhZG93LCBzaGFkb3dlZFJlY3QucmFkaWkoKSwg
bGF5ZXJJbWFnZVByb3BlcnRpZXMubGF5ZXJTaXplKTsKICNlbmRpZgogCiAgICAgaWYgKHJlZHJh
d05lZWRlZCkgewpAQCAtNzM3LDE4ICs3NTIsMjIgQEAgdm9pZCBTaGFkb3dCbHVyOjpkcmF3UmVj
dFNoYWRvd1dpdGhUaWxpbmcoY29uc3QgQWZmaW5lVHJhbnNmb3JtJiB0cmFuc2Zvcm0sIGNvbnMK
IAogdm9pZCBTaGFkb3dCbHVyOjpkcmF3SW5zZXRTaGFkb3dXaXRoVGlsaW5nKGNvbnN0IEFmZmlu
ZVRyYW5zZm9ybSYgdHJhbnNmb3JtLCBjb25zdCBGbG9hdFJlY3QmIGZ1bGxSZWN0LCBjb25zdCBG
bG9hdFJvdW5kZWRSZWN0JiBob2xlUmVjdCwgY29uc3QgSW50U2l6ZSYgdGVtcGxhdGVTaXplLCBj
b25zdCBJbnRTaXplJiBlZGdlU2l6ZSwgY29uc3QgRHJhd0ltYWdlQ2FsbGJhY2smIGRyYXdJbWFn
ZSwgY29uc3QgRmlsbFJlY3RXaXRoSG9sZUNhbGxiYWNrJiBmaWxsUmVjdFdpdGhIb2xlKQogewor
ICAgIFJlZlB0cjxJbWFnZUJ1ZmZlcj4gbGF5ZXJJbWFnZUJ1ZmZlcjsKICNpZiBVU0UoQ0cpCi0g
ICAgYXV0byogbGF5ZXJJbWFnZSA9IFNjcmF0Y2hCdWZmZXI6OnNpbmdsZXRvbigpLmdldFNjcmF0
Y2hCdWZmZXIodGVtcGxhdGVTaXplKTsKLSAgICBhdXRvIHJlbGVhc2VMYXllckltYWdlID0gbWFr
ZVNjb3BlRXhpdChbXSB7Ci0gICAgICAgIFNjcmF0Y2hCdWZmZXI6OnNpbmdsZXRvbigpLnNjaGVk
dWxlU2NyYXRjaEJ1ZmZlclB1cmdlKCk7Ci0gICAgfSk7Ci0jZWxzZQotICAgIGF1dG8gbGF5ZXJJ
bWFnZUJ1ZmZlciA9IEltYWdlQnVmZmVyOjpjcmVhdGUodGVtcGxhdGVTaXplLCBSZW5kZXJpbmdN
b2RlOjpVbmFjY2VsZXJhdGVkLCAxKTsKLSAgICBhdXRvKiBsYXllckltYWdlID0gbGF5ZXJJbWFn
ZUJ1ZmZlci5nZXQoKTsKKyAgICBhdXRvIGxvY2tlciA9IHRyeUhvbGRMb2NrKFNjcmF0Y2hCdWZm
ZXI6OmxvY2soKSk7CisgICAgaWYgKGxvY2tlcikgeworICAgICAgICBsYXllckltYWdlQnVmZmVy
ID0gU2NyYXRjaEJ1ZmZlcjo6c2luZ2xldG9uKCkuZ2V0U2NyYXRjaEJ1ZmZlcih0ZW1wbGF0ZVNp
emUpOworICAgICAgICBpZiAoIWxheWVySW1hZ2VCdWZmZXIpCisgICAgICAgICAgICByZXR1cm47
CisgICAgfQogI2VuZGlmCiAKLSAgICBpZiAoIWxheWVySW1hZ2UpCi0gICAgICAgIHJldHVybjsK
KyAgICBpZiAoIWxheWVySW1hZ2VCdWZmZXIpIHsKKyAgICAgICAgbGF5ZXJJbWFnZUJ1ZmZlciA9
IEltYWdlQnVmZmVyOjpjcmVhdGUodGVtcGxhdGVTaXplLCBSZW5kZXJpbmdNb2RlOjpVbmFjY2Vs
ZXJhdGVkLCAxKTsKKyAgICAgICAgaWYgKCFsYXllckltYWdlQnVmZmVyKQorICAgICAgICAgICAg
cmV0dXJuOworICAgIH0KKyAgICBhdXRvKiBsYXllckltYWdlID0gbGF5ZXJJbWFnZUJ1ZmZlci5n
ZXQoKTsKIAogICAgIC8vIERyYXcgdGhlIHJlY3RhbmdsZSB3aXRoIGhvbGUuCiAgICAgRmxvYXRS
ZWN0IHRlbXBsYXRlQm91bmRzKDAsIDAsIHRlbXBsYXRlU2l6ZS53aWR0aCgpLCB0ZW1wbGF0ZVNp
emUuaGVpZ2h0KCkpOwpAQCAtNzU3LDcgKzc3Niw4IEBAIHZvaWQgU2hhZG93Qmx1cjo6ZHJhd0lu
c2V0U2hhZG93V2l0aFRpbGluZyhjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIHRyYW5zZm9ybSwgY29u
CiAgICAgYm9vbCByZWRyYXdOZWVkZWQgPSB0cnVlOwogI2lmIFVTRShDRykKICAgICAvLyBPbmx5
IHJlZHJhdyBpbiB0aGUgc2NyYXRjaCBidWZmZXIgaWYgaXRzIGNhY2hlZCBjb250ZW50cyBkb24n
dCBtYXRjaCBvdXIgbmVlZHMKLSAgICByZWRyYXdOZWVkZWQgPSBTY3JhdGNoQnVmZmVyOjpzaW5n
bGV0b24oKS5zZXRDYWNoZWRJbnNldFNoYWRvd1ZhbHVlcyhtX2JsdXJSYWRpdXMsIG1fY29sb3Is
IHRlbXBsYXRlQm91bmRzLCB0ZW1wbGF0ZUhvbGUsIGhvbGVSZWN0LnJhZGlpKCkpOworICAgIGlm
IChsb2NrZXIpCisgICAgICAgIHJlZHJhd05lZWRlZCA9IFNjcmF0Y2hCdWZmZXI6OnNpbmdsZXRv
bigpLnNldENhY2hlZEluc2V0U2hhZG93VmFsdWVzKG1fYmx1clJhZGl1cywgbV9jb2xvciwgdGVt
cGxhdGVCb3VuZHMsIHRlbXBsYXRlSG9sZSwgaG9sZVJlY3QucmFkaWkoKSk7CiAjZW5kaWYKIAog
ICAgIGlmIChyZWRyYXdOZWVkZWQpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVyVXRpbGl0aWVzQ0cuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJVdGlsaXRpZXNDRy5jcHAKaW5kZXgg
YjM3N2YwNDgzMmM5N2E1NjJjYzZkYTQyYTY4MDM3OWQxMTg2YTQzZi4uZjE0NmYzNTczZjFmZWY5
NWQ3OTM3MGU2ZWVmNWM2ZmIyYTc5Y2E5YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJVdGlsaXRpZXNDRy5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJVdGlsaXRpZXNDRy5jcHAK
QEAgLTY5LDEyICs2OSwxNiBAQCBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19CRUdJTgog
I2lmIFBMQVRGT1JNKE1BQykKICAgICByZXR1cm4gVVRJRnJvbU1JTUVUeXBlKG1pbWVUeXBlKS5j
cmVhdGVDRlN0cmluZygpOwogI2Vsc2UKLSAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOyAvLyBJ
dCBpcyB1bmNsZWFyIGlmIENGU1RSIGlzIHRocmVhZHNhZmUuCi0KICAgICAvLyBGSVhNRTogQWRk
IFdpbmRvd3Mgc3VwcG9ydCBmb3IgYWxsIHRoZSBzdXBwb3J0ZWQgVVRJcyB3aGVuIGEgd2F5IHRv
IGNvbnZlcnQgZnJvbSBNSU1FVHlwZSB0byBVVEkgcmVsaWFibHkgaXMgZm91bmQuCiAgICAgLy8g
Rm9yIG5vdywgb25seSBzdXBwb3J0IFBORywgSlBFRywgYW5kIEdJRi4gU2VlIDxyZGFyOi8vcHJv
YmxlbS82MDk1Mjg2Pi4KLSAgICBzdGF0aWMgY29uc3QgQ0ZTdHJpbmdSZWYga1VUVHlwZVBORyA9
IENGU1RSKCJwdWJsaWMucG5nIik7Ci0gICAgc3RhdGljIGNvbnN0IENGU3RyaW5nUmVmIGtVVFR5
cGVHSUYgPSBDRlNUUigiY29tLmNvbXB1c2VydmUuZ2lmIik7CisgICAgc3RhdGljIENGU3RyaW5n
UmVmIGtVVFR5cGVQTkc7CisgICAgc3RhdGljIENGU3RyaW5nUmVmIGtVVFR5cGVHSUY7CisKKyAg
ICBzdGF0aWMgc3RkOjpvbmNlX2ZsYWcgb25jZUtleTsKKyAgICBzdGQ6OmNhbGxfb25jZShvbmNl
S2V5LCBbJl0geworICAgICAgICBrVVRUeXBlUE5HID0gQ0ZTVFIoInB1YmxpYy5wbmciKTsKKyAg
ICAgICAga1VUVHlwZUdJRiA9IENGU1RSKCJjb20uY29tcHVzZXJ2ZS5naWYiKTsKKyAgICB9KTsK
IAogICAgIGlmIChlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShtaW1lVHlwZSwgImltYWdl
L3BuZyIpKQogICAgICAgICByZXR1cm4ga1VUVHlwZVBORzsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL1N1YmltYWdlQ2FjaGVXaXRoVGltZXIuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvU3ViaW1hZ2VDYWNoZVdpdGhUaW1l
ci5jcHAKaW5kZXggYjA3MDI2ODU2ZDUzZjFiNjNhYTg4ODVmYjFlNDExMzMwMzdjZmVjMy4uZjNj
NWFmN2E2ZGU1OWVlYjRjYzQxZmY2OWUyM2FhMDUxZWRiZTVhOSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvU3ViaW1hZ2VDYWNoZVdpdGhUaW1lci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvU3ViaW1hZ2VDYWNoZVdp
dGhUaW1lci5jcHAKQEAgLTgzLDEyICs4MywxMyBAQCBzdHJ1Y3QgU3ViaW1hZ2VDYWNoZUFkZGVy
IHsKIH07CiAKIFN1YmltYWdlQ2FjaGVXaXRoVGltZXI6OlN1YmltYWdlQ2FjaGVXaXRoVGltZXIo
KQotICAgIDogbV90aW1lcigqdGhpcywgJlN1YmltYWdlQ2FjaGVXaXRoVGltZXI6OnBydW5lQ2Fj
aGVUaW1lckZpcmVkKQorICAgIDogbV90aW1lcihSdW5Mb29wOjptYWluKCksIHRoaXMsICZTdWJp
bWFnZUNhY2hlV2l0aFRpbWVyOjpwcnVuZUNhY2hlVGltZXJGaXJlZCkKIHsKIH0KIAogdm9pZCBT
dWJpbWFnZUNhY2hlV2l0aFRpbWVyOjpwcnVuZUNhY2hlVGltZXJGaXJlZCgpCiB7CisgICAgYXV0
byBsb2NrZXIgPSBob2xkTG9jayhtX2xvY2spOwogICAgIHBydW5lKCk7CiAgICAgaWYgKG1fY2Fj
aGUuaXNFbXB0eSgpKSB7CiAgICAgICAgIEFTU0VSVChtX2ltYWdlQ291bnRzLmlzRW1wdHkoKSk7
CkBAIC0xMTUsNiArMTE2LDcgQEAgdm9pZCBTdWJpbWFnZUNhY2hlV2l0aFRpbWVyOjpwcnVuZSgp
CiAKIFJldGFpblB0cjxDR0ltYWdlUmVmPiBTdWJpbWFnZUNhY2hlV2l0aFRpbWVyOjpzdWJpbWFn
ZShDR0ltYWdlUmVmIGltYWdlLCBjb25zdCBGbG9hdFJlY3QmIHJlY3QpCiB7CisgICAgYXV0byBs
b2NrZXIgPSBob2xkTG9jayhtX2xvY2spOwogICAgIGlmICghbV90aW1lci5pc0FjdGl2ZSgpKQog
ICAgICAgICBtX3RpbWVyLnN0YXJ0UmVwZWF0aW5nKHN1YmltYWdlQ2FjaGVQcnVuZURlbGF5KTsK
IApAQCAtMTM1LDYgKzEzNyw3IEBAIFJldGFpblB0cjxDR0ltYWdlUmVmPiBTdWJpbWFnZUNhY2hl
V2l0aFRpbWVyOjpzdWJpbWFnZShDR0ltYWdlUmVmIGltYWdlLCBjb25zdCBGCiAKIHZvaWQgU3Vi
aW1hZ2VDYWNoZVdpdGhUaW1lcjo6Y2xlYXJJbWFnZUFuZFN1YmltYWdlcyhDR0ltYWdlUmVmIGlt
YWdlKQogeworICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2sobV9sb2NrKTsKICAgICBpZiAobV9p
bWFnZUNvdW50cy5jb250YWlucyhpbWFnZSkpIHsKICAgICAgICAgVmVjdG9yPFN1YmltYWdlQ2Fj
aGVFbnRyeT4gdG9CZVJlbW92ZWQ7CiAgICAgICAgIGZvciAoY29uc3QgYXV0byYgZW50cnkgOiBt
X2NhY2hlKSB7CkBAIC0xNTEsMTQgKzE1NCwxNyBAQCB2b2lkIFN1YmltYWdlQ2FjaGVXaXRoVGlt
ZXI6OmNsZWFySW1hZ2VBbmRTdWJpbWFnZXMoQ0dJbWFnZVJlZiBpbWFnZSkKIAogdm9pZCBTdWJp
bWFnZUNhY2hlV2l0aFRpbWVyOjpjbGVhckFsbCgpCiB7CisgICAgYXV0byBsb2NrZXIgPSBob2xk
TG9jayhtX2xvY2spOwogICAgIG1faW1hZ2VDb3VudHMuY2xlYXIoKTsKICAgICBtX2NhY2hlLmNs
ZWFyKCk7CiB9CiAKIFN1YmltYWdlQ2FjaGVXaXRoVGltZXImIFN1YmltYWdlQ2FjaGVXaXRoVGlt
ZXI6OnN1YmltYWdlQ2FjaGUoKQogewotICAgIGlmICghc19jYWNoZSkKKyAgICBzdGF0aWMgc3Rk
OjpvbmNlX2ZsYWcgb25jZUtleTsKKyAgICBzdGQ6OmNhbGxfb25jZShvbmNlS2V5LCBbJl0gewog
ICAgICAgICBzX2NhY2hlID0gbmV3IFN1YmltYWdlQ2FjaGVXaXRoVGltZXI7CisgICAgfSk7CiAg
ICAgcmV0dXJuICpzX2NhY2hlOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jZy9TdWJpbWFnZUNhY2hlV2l0aFRpbWVyLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9TdWJpbWFnZUNhY2hlV2l0aFRpbWVyLmgKaW5kZXggODI3
NGJjMjQwZWQ4ZmE1ZWIxMjQwMDBjMmIyZDhhOTI1NzhiOTI5Yi4uNWJmMDVkNGUxNDBlZTYyYjMz
MjFlNGRiZWY1MWRhYzFkMWIzNGQ5OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2cvU3ViaW1hZ2VDYWNoZVdpdGhUaW1lci5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL1N1YmltYWdlQ2FjaGVXaXRoVGltZXIuaApAQCAtMzIs
NyArMzIsOSBAQAogI2luY2x1ZGUgPHd0Zi9IYXNoQ291bnRlZFNldC5oPgogI2luY2x1ZGUgPHd0
Zi9IYXNoU2V0Lmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hUcmFpdHMuaD4KKyNpbmNsdWRlIDx3dGYv
TG9jay5oPgogI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KKyNpbmNsdWRlIDx3dGYvUnVuTG9v
cC5oPgogCiAjZGVmaW5lIENBQ0hFX1NVQklNQUdFUyAxCiAKQEAgLTk1LDkgKzk3LDEwIEBAIHBy
aXZhdGU6CiAgICAgdm9pZCBwcnVuZSgpOwogICAgIHZvaWQgY2xlYXJBbGwoKTsKIAorICAgIExv
Y2sgbV9sb2NrOwogICAgIEhhc2hDb3VudGVkU2V0PENHSW1hZ2VSZWY+IG1faW1hZ2VDb3VudHM7
CiAgICAgU3ViaW1hZ2VDYWNoZUhhc2hTZXQgbV9jYWNoZTsKLSAgICBUaW1lciBtX3RpbWVyOwor
ICAgIFJ1bkxvb3A6OlRpbWVyPFN1YmltYWdlQ2FjaGVXaXRoVGltZXI+IG1fdGltZXI7CiAKICAg
ICBzdGF0aWMgU3ViaW1hZ2VDYWNoZVdpdGhUaW1lciYgc3ViaW1hZ2VDYWNoZSgpOwogICAgIHN0
YXRpYyBib29sIHN1YmltYWdlQ2FjaGVFeGlzdHMoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL1VUSVV0aWxpdGllcy5tbSBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvbWFjL1VUSVV0aWxpdGllcy5tbQppbmRleCA3YTdhMzEwN2JlNzlj
NDgyNGNlZmUyZTBhYzNlMzU0NjdjOWVhMTY4Li43MGI0MzkzYzYzNjM3MTk2Zjk4YzA2MzJmYWI2
MTE1ZDc4YTgxYmNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L21hYy9VVElVdGlsaXRpZXMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9tYWMvVVRJVXRpbGl0aWVzLm1tCkBAIC0yNiw2ICsyNiw3IEBACiAjaW1wb3J0ICJjb25maWcu
aCIKICNpbXBvcnQgIlVUSVV0aWxpdGllcy5oIgogCisjaW1wb3J0IDx3dGYvTG9jay5oPgogI2lt
cG9ydCA8d3RmL01haW5UaHJlYWQuaD4KICNpbXBvcnQgPHd0Zi9UaW55TFJVQ2FjaGUuaD4KICNp
bXBvcnQgPHd0Zi90ZXh0L1N0cmluZ0hhc2guaD4KQEAgLTg0LDU3ICs4NSw1MiBAQCBBTExPV19E
RVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19FTkQKICAgICByZXR1cm4gZW1wdHlTdHJpbmcoKTsKIH0K
IAotc3RhdGljIFN0cmluZyBVVElGcm9tVW5rbm93bk1JTUVUeXBlKGNvbnN0IFN0cmluZyYgbWlt
ZVR5cGUpCitzdGF0aWMgQ0ZTdHJpbmdSZWYgVVRJRnJvbVVua25vd25NSU1FVHlwZShjb25zdCBT
dHJpbmcmIG1pbWVUeXBlKQogewogICAgIHN0YXRpYyBjb25zdCBhdXRvIG1hcCA9IG1ha2VOZXZl
ckRlc3Ryb3llZChbXSB7Ci0gICAgICAgIHN0cnVjdCBUeXBlRXh0ZW5zaW9uUGFpciB7Ci0gICAg
ICAgICAgICBBU0NJSUxpdGVyYWwgdHlwZTsKLSAgICAgICAgICAgIEFTQ0lJTGl0ZXJhbCB1dGk7
Ci0gICAgICAgIH07Ci0KLSAgICAgICAgc3RhdGljIGNvbnN0IFR5cGVFeHRlbnNpb25QYWlyIHBh
aXJzW10gPSB7Ci0gICAgICAgICAgICB7ICJtb2RlbC92bmQudXNkeit6aXAiX3MsICJjb20ucGl4
YXIudW5pdmVyc2FsLXNjZW5lLWRlc2NyaXB0aW9uLW1vYmlsZSJfcyB9LAotICAgICAgICAgICAg
eyAibW9kZWwvdXNkIl9zLCAiY29tLnBpeGFyLnVuaXZlcnNhbC1zY2VuZS1kZXNjcmlwdGlvbi1t
b2JpbGUiX3MgfSwKLSAgICAgICAgICAgIHsgIm1vZGVsL3ZuZC5waXhhci51c2QiX3MsICJjb20u
cGl4YXIudW5pdmVyc2FsLXNjZW5lLWRlc2NyaXB0aW9uLW1vYmlsZSJfcyB9LAotICAgICAgICAg
ICAgeyAibW9kZWwvdm5kLnJlYWxpdHkiX3MsICJjb20uYXBwbGUucmVhbGl0eSJfcyB9Ci0gICAg
ICAgIH07Ci0KLSAgICAgICAgSGFzaE1hcDxTdHJpbmcsIFN0cmluZywgQVNDSUlDYXNlSW5zZW5z
aXRpdmVIYXNoPiBtYXA7Ci0gICAgICAgIGZvciAoYXV0byYgcGFpciA6IHBhaXJzKQotICAgICAg
ICAgICAgbWFwLmFkZChwYWlyLnR5cGUsIHBhaXIudXRpKTsKKyAgICAgICAgSGFzaE1hcDxTdHJp
bmcsIENGU3RyaW5nUmVmLCBBU0NJSUNhc2VJbnNlbnNpdGl2ZUhhc2g+IG1hcDsKKyAgICAgICAg
YXV0byBwaXhhck1JTUVUeXBlID0gQ0ZTVFIoImNvbS5waXhhci51bml2ZXJzYWwtc2NlbmUtZGVz
Y3JpcHRpb24tbW9iaWxlIik7CisgICAgICAgIG1hcC5hZGQoIm1vZGVsL3ZuZC51c2R6K3ppcCJf
cywgcGl4YXJNSU1FVHlwZSk7CisgICAgICAgIG1hcC5hZGQoIm1vZGVsL3VzZCJfcywgcGl4YXJN
SU1FVHlwZSk7CisgICAgICAgIG1hcC5hZGQoIm1vZGVsL3ZuZC5waXhhci51c2QiX3MsIHBpeGFy
TUlNRVR5cGUpOworICAgICAgICBtYXAuYWRkKCJtb2RlbC92bmQudXNkeit6aXAiX3MsIENGU1RS
KCJjb20uYXBwbGUucmVhbGl0eSIpKTsKICAgICAgICAgcmV0dXJuIG1hcDsKICAgICB9KCkpOwog
CisgICAgc3RhdGljIGNvbnN0IENGU3RyaW5nUmVmIGVtcHR5Q0ZTdHJpbmcgPSBDRlNUUigiIik7
CiAgICAgYXV0byBtYXBFbnRyeSA9IG1hcC5nZXQoKS5maW5kKG1pbWVUeXBlKTsKICAgICBpZiAo
bWFwRW50cnkgPT0gbWFwLmdldCgpLmVuZCgpKQotICAgICAgICByZXR1cm4gZW1wdHlTdHJpbmco
KTsKKyAgICAgICAgcmV0dXJuIGVtcHR5Q0ZTdHJpbmc7CiAKICAgICByZXR1cm4gbWFwRW50cnkt
PnZhbHVlOwogfQogCi1zdHJ1Y3QgVVRJRnJvbU1JTUVUeXBlQ2FjaGVQb2xpY3kgOiBUaW55TFJV
Q2FjaGVQb2xpY3k8U3RyaW5nLCBTdHJpbmc+IHsKK3N0cnVjdCBVVElGcm9tTUlNRVR5cGVDYWNo
ZVBvbGljeSA6IFRpbnlMUlVDYWNoZVBvbGljeTxTdHJpbmcsIFJldGFpblB0cjxDRlN0cmluZ1Jl
Zj4+IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgU3RyaW5nIGNyZWF0ZVZhbHVlRm9yS2V5KGNvbnN0
IFN0cmluZyYgbWltZVR5cGUpCisgICAgc3RhdGljIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gY3Jl
YXRlVmFsdWVGb3JLZXkoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSkKICAgICB7CiBBTExPV19ERVBS
RUNBVEVEX0RFQ0xBUkFUSU9OU19CRUdJTgogICAgICAgICBhdXRvIHR5cGUgPSBhZG9wdENGKFVU
VHlwZUNyZWF0ZVByZWZlcnJlZElkZW50aWZpZXJGb3JUYWcoa1VUVGFnQ2xhc3NNSU1FVHlwZSwg
bWltZVR5cGUuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSwgMCkpOwogQUxMT1dfREVQUkVDQVRFRF9E
RUNMQVJBVElPTlNfRU5ECiAgICAgICAgIGlmICh0eXBlKQotICAgICAgICAgICAgcmV0dXJuIHR5
cGUuZ2V0KCk7CisgICAgICAgICAgICByZXR1cm4gdHlwZTsKICAgICAgICAgcmV0dXJuIFVUSUZy
b21Vbmtub3duTUlNRVR5cGUobWltZVR5cGUpOwogICAgIH0KKworICAgIHN0YXRpYyBTdHJpbmcg
Y3JlYXRlS2V5Rm9yU3RvcmFnZShjb25zdCBTdHJpbmcmIGtleSkgeyByZXR1cm4ga2V5Lmlzb2xh
dGVkQ29weSgpOyB9CiB9OwogCi1zdGF0aWMgVGlueUxSVUNhY2hlPFN0cmluZywgU3RyaW5nLCAx
NiwgVVRJRnJvbU1JTUVUeXBlQ2FjaGVQb2xpY3k+JiBjYWNoZVVUSUZyb21NaW1lVHlwZSgpCitz
dGF0aWMgVGlueUxSVUNhY2hlPFN0cmluZywgUmV0YWluUHRyPENGU3RyaW5nUmVmPiwgMTYsIFVU
SUZyb21NSU1FVHlwZUNhY2hlUG9saWN5PiYgY2FjaGVVVElGcm9tTWltZVR5cGUoKQogewotICAg
IHN0YXRpYyBOZXZlckRlc3Ryb3llZDxUaW55TFJVQ2FjaGU8U3RyaW5nLCBTdHJpbmcsIDE2LCBV
VElGcm9tTUlNRVR5cGVDYWNoZVBvbGljeT4+IGNhY2hlOworICAgIHN0YXRpYyBOZXZlckRlc3Ry
b3llZDxUaW55TFJVQ2FjaGU8U3RyaW5nLCBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+LCAxNiwgVVRJ
RnJvbU1JTUVUeXBlQ2FjaGVQb2xpY3k+PiBjYWNoZTsKICAgICByZXR1cm4gY2FjaGU7CiB9CiAK
IFN0cmluZyBVVElGcm9tTUlNRVR5cGUoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSkKIHsKLSAgICBB
U1NFUlQoaXNNYWluVGhyZWFkKCkpOwotICAgIHJldHVybiBjYWNoZVVUSUZyb21NaW1lVHlwZSgp
LmdldChtaW1lVHlwZSk7CisgICAgc3RhdGljIExvY2sgbG9jazsKKyAgICBhdXRvIGxvY2tlciA9
IGhvbGRMb2NrKGxvY2spOworICAgIHJldHVybiBjYWNoZVVUSUZyb21NaW1lVHlwZSgpLmdldCht
aW1lVHlwZSkuZ2V0KCk7CiB9CiAKIGJvb2wgaXNEZWNsYXJlZFVUSShjb25zdCBTdHJpbmcmIFVU
SSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvY2YvSHlwaGVuYXRp
b25DRi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L2NmL0h5cGhlbmF0aW9uQ0Yu
Y3BwCmluZGV4IDNkMDJmMjhmNjg1ZDQzNzg0ZDM5NDY5NWZjYmUyNGY5ZTc2MjkxOGEuLjY2Njk2
ZTRiNzQwMzU4YzI1ZjIyY2JiYWVkYjAxODVlNGFlNGY4M2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL3RleHQvY2YvSHlwaGVuYXRpb25DRi5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vdGV4dC9jZi9IeXBoZW5hdGlvbkNGLmNwcApAQCAtNjMsNiArNjMsOCBA
QCBwdWJsaWM6CiAKICAgICAgICAgcmV0dXJuIENGU3RyaW5nSXNIeXBoZW5hdGlvbkF2YWlsYWJs
ZUZvckxvY2FsZShsb2NhbGUuZ2V0KCkpID8gbG9jYWxlIDogbnVsbHB0cjsKICAgICB9CisKKyAg
ICBzdGF0aWMgQXRvbVN0cmluZyBjcmVhdGVLZXlGb3JTdG9yYWdlKGNvbnN0IEF0b21TdHJpbmcm
IGtleSkgeyByZXR1cm4ga2V5OyB9CiB9OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS90ZXh0L2h5cGhlbi9IeXBoZW5hdGlvbkxpYkh5cGhlbi5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS90ZXh0L2h5cGhlbi9IeXBoZW5hdGlvbkxpYkh5cGhlbi5jcHAKaW5k
ZXggZjMzNTlkODA3MDIyZjU0ODljNjhmOWFjZjgxNmE2NzA0MmE1M2Q2Mi4uN2Y3MzMwMWRhMDAz
MTA3ZTkzOWRmYjg2YjM2ODkzNTRjOWQ5NDM1MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vdGV4dC9oeXBoZW4vSHlwaGVuYXRpb25MaWJIeXBoZW4uY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvaHlwaGVuL0h5cGhlbmF0aW9uTGliSHlwaGVuLmNwcApA
QCAtMjQxLDYgKzI0MSw4IEBAIHB1YmxpYzoKICAgICB7CiAgICAgICAgIHJldHVybiBXZWJDb3Jl
OjpIeXBoZW5hdGlvbkRpY3Rpb25hcnk6OmNyZWF0ZShGaWxlU3lzdGVtOjpmaWxlU3lzdGVtUmVw
cmVzZW50YXRpb24oZGljdGlvbmFyeVBhdGguc3RyaW5nKCkpKTsKICAgICB9CisKKyAgICBzdGF0
aWMgQXRvbVN0cmluZyBjcmVhdGVLZXlGb3JTdG9yYWdlKGNvbnN0IEF0b21TdHJpbmcmIGtleSkg
eyByZXR1cm4ga2V5OyB9CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXVEYKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcCBiL1Nv
dXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcAppbmRl
eCA0MWFlMGExMzE0OGFhNmE2Y2M0YmJiODZiODliYmFlNjY0MDFhMTYwLi4wMzUyOWI0YjY5ODYy
NzI2ZTJiNmVkYTYyMjhhNTZhNTBjZDAwYTk1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQ
VVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9HUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwCkBAIC0xNjUsNiArMTY1
LDcgQEAgR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6R1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vz
cyhHUFVQcm9jZXNzJiBncHVQcm9jZXNzLCBXZWIKICAgICA6IG1fY29ubmVjdGlvbihJUEM6OkNv
bm5lY3Rpb246OmNyZWF0ZVNlcnZlckNvbm5lY3Rpb24oY29ubmVjdGlvbklkZW50aWZpZXIsICp0
aGlzKSkKICAgICAsIG1fZ3B1UHJvY2VzcyhncHVQcm9jZXNzKQogICAgICwgbV93ZWJQcm9jZXNz
SWRlbnRpZmllcih3ZWJQcm9jZXNzSWRlbnRpZmllcikKKyAgICAsIG1fcmVtb3RlTWVkaWFQbGF5
ZXJNYW5hZ2VyUHJveHkobWFrZVVuaXF1ZTxSZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eT4o
KnRoaXMpKQogICAgICwgbV9zZXNzaW9uSUQoc2Vzc2lvbklEKQogI2lmIFBMQVRGT1JNKENPQ09B
KSAmJiBVU0UoTElCV0VCUlRDKQogICAgICwgbV9saWJXZWJSVENDb2RlY3NQcm94eShMaWJXZWJS
VENDb2RlY3NQcm94eTo6Y3JlYXRlKCp0aGlzKSkKQEAgLTIwMiw4ICsyMDMsMTIgQEAgdm9pZCBH
UFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpkaWRDbG9zZShJUEM6OkNvbm5lY3Rpb24mIGNvbm5l
Y3Rpb24pCiAgICAgfQogI2VuZGlmCiAKKyAgICAvLyBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kIG9i
amVjdHMgcmVmIHRoZWlyIEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3Mgc28gd2UgbmVlZCB0byBt
YWtlIHN1cmUKKyAgICAvLyB0byBicmVhayB0aGUgcmVmZXJlbmNlIGN5Y2xlIGJ5IGRlc3Ryb3lp
bmcgdGhlbS4KKyAgICBtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmRNYXAuY2xlYXIoKTsKKwogICAg
IGdwdVByb2Nlc3MoKS5jb25uZWN0aW9uVG9XZWJQcm9jZXNzQ2xvc2VkKGNvbm5lY3Rpb24pOwot
ICAgIGdwdVByb2Nlc3MoKS5yZW1vdmVHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzKCp0aGlzKTsK
KyAgICBncHVQcm9jZXNzKCkucmVtb3ZlR1BVQ29ubmVjdGlvblRvV2ViUHJvY2VzcygqdGhpcyk7
IC8vIE1heSBkZXN0cm95IHx0aGlzfC4KIH0KIAogTG9nZ2VyJiBHUFVDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzOjpsb2dnZXIoKQpAQCAtMjQwLDE0ICsyNDUsNiBAQCBSZW1vdGVNZWRpYVJlc291cmNl
TWFuYWdlciYgR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6cmVtb3RlTWVkaWFSZXNvdXJjZU1h
bmFnZQogICAgIHJldHVybiAqbV9yZW1vdGVNZWRpYVJlc291cmNlTWFuYWdlcjsKIH0KIAotUmVt
b3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHkmIEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnJl
bW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5KCkKLXsKLSAgICBpZiAoIW1fcmVtb3RlTWVkaWFQ
bGF5ZXJNYW5hZ2VyUHJveHkpCi0gICAgICAgIG1fcmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJv
eHkgPSBtYWtlVW5pcXVlPFJlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5PigqdGhpcyk7Ci0K
LSAgICByZXR1cm4gKm1fcmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHk7Ci19Ci0KICNpZiBQ
TEFURk9STShDT0NPQSkgJiYgRU5BQkxFKE1FRElBX1NUUkVBTSkKIFVzZXJNZWRpYUNhcHR1cmVN
YW5hZ2VyUHJveHkmIEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnVzZXJNZWRpYUNhcHR1cmVN
YW5hZ2VyUHJveHkoKQogewpAQCAtMjkyLDcgKzI4OSw3IEBAIFJlbW90ZUF1ZGlvU2Vzc2lvblBy
b3h5JiBHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjphdWRpb1Nlc3Npb25Qcm94eSgpCiB2b2lk
IEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmNyZWF0ZVJlbmRlcmluZ0JhY2tlbmQoUmVtb3Rl
UmVuZGVyaW5nQmFja2VuZENyZWF0aW9uUGFyYW1ldGVycyYmIHBhcmFtZXRlcnMpCiB7CiAgICAg
YXV0byBhZGRSZXN1bHQgPSBtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmRNYXAuZW5zdXJlKHBhcmFt
ZXRlcnMuaWRlbnRpZmllciwgWyZdKCkgewotICAgICAgICByZXR1cm4gUmVtb3RlUmVuZGVyaW5n
QmFja2VuZDo6Y3JlYXRlKCp0aGlzLCBXVEZNb3ZlKHBhcmFtZXRlcnMpKTsKKyAgICAgICAgcmV0
dXJuIG1ha2VVbmlxdWU8UmVtb3RlUmVuZGVyaW5nQmFja2VuZFdyYXBwZXI+KFJlbW90ZVJlbmRl
cmluZ0JhY2tlbmQ6OmNyZWF0ZSgqdGhpcywgV1RGTW92ZShwYXJhbWV0ZXJzKSkpOwogICAgIH0p
OwogICAgIEFTU0VSVF9VTlVTRUQoYWRkUmVzdWx0LCBhZGRSZXN1bHQuaXNOZXdFbnRyeSk7CiB9
CkBAIC0zMDMsNiArMzAwLDE2IEBAIHZvaWQgR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6cmVs
ZWFzZVJlbmRlcmluZ0JhY2tlbmQoUmVuZGVyaW5nQmFja2VuZElkZW50aWZpCiAgICAgQVNTRVJU
X1VOVVNFRChmb3VuZCwgZm91bmQpOwogfQogCitHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpS
ZW1vdGVSZW5kZXJpbmdCYWNrZW5kV3JhcHBlcjo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZFdyYXBw
ZXIoUmVmPFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ+JiYgcmVtb3RlUmVuZGVyaW5nQmFja2VuZCkK
KyAgICA6IG1fcmVtb3RlUmVuZGVyaW5nQmFja2VuZChXVEZNb3ZlKHJlbW90ZVJlbmRlcmluZ0Jh
Y2tlbmQpKQoreworfQorCitHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpSZW1vdGVSZW5kZXJp
bmdCYWNrZW5kV3JhcHBlcjo6flJlbW90ZVJlbmRlcmluZ0JhY2tlbmRXcmFwcGVyKCkKK3sKKyAg
ICBtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmQtPmRpc2Nvbm5lY3QoKTsKK30KKwogI2lmIEVOQUJM
RShXRUJHTCkKIHZvaWQgR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6Y3JlYXRlR3JhcGhpY3ND
b250ZXh0R0woV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzIGF0dHJpYnV0ZXMs
IEdyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciBncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIp
CiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRv
V2ViUHJvY2Vzcy5oIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dl
YlByb2Nlc3MuaAppbmRleCAxZjc4NTU1ZTJiNzM5OWU3MjBiNTRkOWNmYWVjYzMzOTg5NmE3MmFj
Li41MWZjYzdmMDViOTk2YzIyNjAwMDFmMTE3ZjYyZjQ3YWY3ZDJiMzA3IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oCisrKyBi
L1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgKQEAg
LTM4LDcgKzM4LDcgQEAKICNpbmNsdWRlIDxXZWJDb3JlL1Byb2Nlc3NJZGVudGlmaWVyLmg+CiAj
aW5jbHVkZSA8cGFsL1Nlc3Npb25JRC5oPgogI2luY2x1ZGUgPHd0Zi9Mb2dnZXIuaD4KLSNpbmNs
dWRlIDx3dGYvUmVmQ291bnRlZC5oPgorI2luY2x1ZGUgPHd0Zi9UaHJlYWRTYWZlUmVmQ291bnRl
ZC5oPgogCiAjaWYgRU5BQkxFKFdFQkdMKQogI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dEdMSWRl
bnRpZmllci5oIgpAQCAtNjgsNyArNjgsNyBAQCBzdHJ1Y3QgUmVtb3RlQXVkaW9TZXNzaW9uQ29u
ZmlndXJhdGlvbjsKIHN0cnVjdCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kQ3JlYXRpb25QYXJhbWV0
ZXJzOwogCiBjbGFzcyBHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzCi0gICAgOiBwdWJsaWMgUmVm
Q291bnRlZDxHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzPgorICAgIDogcHVibGljIFRocmVhZFNh
ZmVSZWZDb3VudGVkPEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MsIFdURjo6RGVzdHJ1Y3Rpb25U
aHJlYWQ6Ok1haW4+CiAgICAgLCBwdWJsaWMgV2ViQ29yZTo6Tm93UGxheWluZ01hbmFnZXI6OkNs
aWVudAogICAgICwgSVBDOjpDb25uZWN0aW9uOjpDbGllbnQgewogcHVibGljOgpAQCAtMTA2LDcg
KzEwNiw3IEBAIHB1YmxpYzoKICNpZiBFTkFCTEUoR1BVX1BST0NFU1MpCiAgICAgUmVtb3RlTWVk
aWFFbmdpbmVDb25maWd1cmF0aW9uRmFjdG9yeVByb3h5JiBtZWRpYUVuZ2luZUNvbmZpZ3VyYXRp
b25GYWN0b3J5UHJveHkoKTsKICNlbmRpZgotICAgIFJlbW90ZU1lZGlhUGxheWVyTWFuYWdlclBy
b3h5JiByZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eSgpOworICAgIFJlbW90ZU1lZGlhUGxh
eWVyTWFuYWdlclByb3h5JiByZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eSgpIHsgcmV0dXJu
ICptX3JlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5OyB9CiAKICNpZiBVU0UoQVVESU9fU0VT
U0lPTikKICAgICBSZW1vdGVBdWRpb1Nlc3Npb25Qcm94eU1hbmFnZXImIGF1ZGlvU2Vzc2lvbk1h
bmFnZXIoKTsKQEAgLTE5Miw3ICsxOTIsMTcgQEAgcHJpdmF0ZToKICAgICBib29sIG1fYWxsb3dz
RGlzcGxheUNhcHR1cmUgeyBmYWxzZSB9OwogI2VuZGlmCiAKLSAgICB1c2luZyBSZW1vdGVSZW5k
ZXJpbmdCYWNrZW5kTWFwID0gSGFzaE1hcDxSZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllciwgc3Rk
Ojp1bmlxdWVfcHRyPFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ+PjsKKyAgICBjbGFzcyBSZW1vdGVS
ZW5kZXJpbmdCYWNrZW5kV3JhcHBlciB7CisgICAgICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVE
OworICAgIHB1YmxpYzoKKyAgICAgICAgUmVtb3RlUmVuZGVyaW5nQmFja2VuZFdyYXBwZXIoUmVm
PFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ+JiYpOworICAgICAgICB+UmVtb3RlUmVuZGVyaW5nQmFj
a2VuZFdyYXBwZXIoKTsKKworICAgIHByaXZhdGU6CisgICAgICAgIFJlZjxSZW1vdGVSZW5kZXJp
bmdCYWNrZW5kPiBtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmQ7CisgICAgfTsKKworICAgIHVzaW5n
IFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRNYXAgPSBIYXNoTWFwPFJlbmRlcmluZ0JhY2tlbmRJZGVu
dGlmaWVyLCBzdGQ6OnVuaXF1ZV9wdHI8UmVtb3RlUmVuZGVyaW5nQmFja2VuZFdyYXBwZXI+PjsK
ICAgICBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kTWFwIG1fcmVtb3RlUmVuZGVyaW5nQmFja2VuZE1h
cDsKICNpZiBFTkFCTEUoV0VCR0wpCiAgICAgdXNpbmcgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xN
YXAgPSBIYXNoTWFwPEdyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgc3RkOjp1bmlxdWVfcHRy
PFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMPj47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQ
VVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5jcHAKaW5kZXgg
NDg3YjEzNWE4ODkyN2QyMjkzOTMwNzQ5MDI0ZDY1NmNjMDUwNGY1NS4uMWNiNTBlMzdiNjBhZjA0
MDQ2ZjA3NmUzOTZjODI4MTMwNTY1OTU2ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQ
cm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kLmNwcApAQCAt
MzgsNiArMzgsNyBAQAogI2luY2x1ZGUgIlJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eU1lc3Nh
Z2VzLmgiCiAjaW5jbHVkZSA8d3RmL0NoZWNrZWRBcml0aG1ldGljLmg+CiAjaW5jbHVkZSA8d3Rm
L1N5c3RlbVRyYWNpbmcuaD4KKyNpbmNsdWRlIDx3dGYvV29ya1F1ZXVlLmg+CiAKICNpZiBQTEFU
Rk9STShDT0NPQSkKICNpbmNsdWRlIDx3dGYvY29jb2EvTWFjaFNlbWFwaG9yZS5oPgpAQCAtNDYs
MzggKzQ3LDQxIEBACiBuYW1lc3BhY2UgV2ViS2l0IHsKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3Jl
OwogCi1zdGQ6OnVuaXF1ZV9wdHI8UmVtb3RlUmVuZGVyaW5nQmFja2VuZD4gUmVtb3RlUmVuZGVy
aW5nQmFja2VuZDo6Y3JlYXRlKEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MmIGdwdUNvbm5lY3Rp
b25Ub1dlYlByb2Nlc3MsIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRDcmVhdGlvblBhcmFtZXRlcnMm
JiBwYXJhbWV0ZXJzKQorUmVmPFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ+IFJlbW90ZVJlbmRlcmlu
Z0JhY2tlbmQ6OmNyZWF0ZShHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzJiBncHVDb25uZWN0aW9u
VG9XZWJQcm9jZXNzLCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kQ3JlYXRpb25QYXJhbWV0ZXJzJiYg
cGFyYW1ldGVycykKIHsKLSAgICByZXR1cm4gc3RkOjp1bmlxdWVfcHRyPFJlbW90ZVJlbmRlcmlu
Z0JhY2tlbmQ+KG5ldyBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kKGdwdUNvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3MsIFdURk1vdmUocGFyYW1ldGVycykpKTsKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBS
ZW1vdGVSZW5kZXJpbmdCYWNrZW5kKGdwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MsIFdURk1vdmUo
cGFyYW1ldGVycykpKTsKIH0KIAogUmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6UmVtb3RlUmVuZGVy
aW5nQmFja2VuZChHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzJiBncHVDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzLCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kQ3JlYXRpb25QYXJhbWV0ZXJzJiYgcGFyYW1l
dGVycykKLSAgICA6IG1fZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2VzcyhtYWtlV2Vha1B0cihncHVD
b25uZWN0aW9uVG9XZWJQcm9jZXNzKSkKKyAgICA6IG1fd29ya1F1ZXVlKFdvcmtRdWV1ZTo6Y3Jl
YXRlKCJSZW1vdGVSZW5kZXJpbmdCYWNrZW5kIHdvcmsgcXVldWUiLCBXb3JrUXVldWU6OlR5cGU6
OlNlcmlhbCwgV29ya1F1ZXVlOjpRT1M6OlVzZXJJbnRlcmFjdGl2ZSkpCisgICAgLCBtX2dwdUNv
bm5lY3Rpb25Ub1dlYlByb2Nlc3MoZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2VzcykKICAgICAsIG1f
cmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXIocGFyYW1ldGVycy5pZGVudGlmaWVyKQogI2lmIFBM
QVRGT1JNKENPQ09BKQogICAgICwgbV9yZXN1bWVEaXNwbGF5TGlzdFNlbWFwaG9yZShtYWtlVW5p
cXVlPE1hY2hTZW1hcGhvcmU+KFdURk1vdmUocGFyYW1ldGVycy5zZW5kUmlnaHRGb3JSZXN1bWVE
aXNwbGF5TGlzdFNlbWFwaG9yZSkpKQogI2VuZGlmCiB7Ci0gICAgaWYgKGF1dG8qIGdwdUNvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3MgPSBtX2dwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuZ2V0KCkpCi0g
ICAgICAgIGdwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MtPm1lc3NhZ2VSZWNlaXZlck1hcCgpLmFk
ZE1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6bWVzc2Fn
ZVJlY2VpdmVyTmFtZSgpLCBtX3JlbmRlcmluZ0JhY2tlbmRJZGVudGlmaWVyLnRvVUludDY0KCks
ICp0aGlzKTsKKyAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOworICAgIGdwdUNvbm5lY3Rp
b25Ub1dlYlByb2Nlc3MuY29ubmVjdGlvbigpLmFkZFdvcmtRdWV1ZU1lc3NhZ2VSZWNlaXZlcihN
ZXNzYWdlczo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBt
X3dvcmtRdWV1ZSwgdGhpcywgbV9yZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllci50b1VJbnQ2NCgp
KTsKIH0KIAogUmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6flJlbW90ZVJlbmRlcmluZ0JhY2tlbmQo
KQogewotICAgIGlmIChhdXRvKiBncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzID0gbV9ncHVDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzLmdldCgpKQotICAgICAgICBncHVDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzLT5tZXNzYWdlUmVjZWl2ZXJNYXAoKS5yZW1vdmVNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6
OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgbV9yZW5kZXJp
bmdCYWNrZW5kSWRlbnRpZmllci50b1VJbnQ2NCgpKTsKKyAgICAvLyBNYWtlIHN1cmUgd2UgZGVz
dHJveSB0aGUgUmVzb3VyY2VDYWNoZSBvbiB0aGUgV29ya1F1ZXVlIHNpbmNlIGl0IGdldHMgcG9w
dWxhdGVkIG9uIHRoZSBXb3JrUXVldWUuCisgICAgbV93b3JrUXVldWUtPmRpc3BhdGNoKFtyZW1v
dGVSZXNvdXJjZUNhY2hlID0gV1RGTW92ZShtX3JlbW90ZVJlc291cmNlQ2FjaGUpXSB7IH0pOwog
fQogCi1HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzKiBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpn
cHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzKCkgY29uc3QKK3ZvaWQgUmVtb3RlUmVuZGVyaW5nQmFj
a2VuZDo6ZGlzY29ubmVjdCgpCiB7Ci0gICAgcmV0dXJuIG1fZ3B1Q29ubmVjdGlvblRvV2ViUHJv
Y2Vzcy5nZXQoKTsKKyAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOworCisgICAgLy8gVGhl
IFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQgZGVzdHJ1Y3RvciB3b24ndCBiZSBjYWxsZWQgdW50aWwg
ZGlzY29ubmVjdCgpIGlzIGNhbGxlZCBhbmQgd2UgdW5yZWdpc3RlciBvdXJzZWx2ZXMgYXMgYSBX
b3JrUXVldWVNZXNzYWdlUmVjZWl2ZXIgYmVjYXVzZQorICAgIC8vIHRoZSBJUEM6OkNvbm5lY3Rp
b24gcmVmcyBpdHMgV29ya1F1ZXVlTWVzc2FnZVJlY2VpdmVycy4KKyAgICBtX2dwdUNvbm5lY3Rp
b25Ub1dlYlByb2Nlc3MtPmNvbm5lY3Rpb24oKS5yZW1vdmVXb3JrUXVldWVNZXNzYWdlUmVjZWl2
ZXIoTWVzc2FnZXM6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6Om1lc3NhZ2VSZWNlaXZlck5hbWUo
KSwgbV9yZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllci50b1VJbnQ2NCgpKTsKIH0KIAogSVBDOjpD
b25uZWN0aW9uKiBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjptZXNzYWdlU2VuZGVyQ29ubmVjdGlv
bigpIGNvbnN0CiB7Ci0gICAgaWYgKGF1dG8qIGdwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MgPSBt
X2dwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuZ2V0KCkpCi0gICAgICAgIHJldHVybiAmZ3B1Q29u
bmVjdGlvblRvV2ViUHJvY2Vzcy0+Y29ubmVjdGlvbigpOwotICAgIHJldHVybiBudWxscHRyOwor
ICAgIHJldHVybiAmbV9ncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLT5jb25uZWN0aW9uKCk7CiB9
CiAKIHVpbnQ2NF90IFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6Om1lc3NhZ2VTZW5kZXJEZXN0aW5h
dGlvbklEKCkgY29uc3QKQEAgLTg3LDE5ICs5MSwxMyBAQCB1aW50NjRfdCBSZW1vdGVSZW5kZXJp
bmdCYWNrZW5kOjptZXNzYWdlU2VuZGVyRGVzdGluYXRpb25JRCgpIGNvbnN0CiAKIGJvb2wgUmVt
b3RlUmVuZGVyaW5nQmFja2VuZDo6YXBwbHlNZWRpYUl0ZW0oRGlzcGxheUxpc3Q6Okl0ZW1IYW5k
bGUgaXRlbSwgR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0KQogeworICAgIEFTU0VSVCghUnVuTG9v
cDo6aXNNYWluKCkpOworCiAgICAgaWYgKCFpdGVtLmlzPERpc3BsYXlMaXN0OjpQYWludEZyYW1l
Rm9yTWVkaWE+KCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIGF1dG8mIG1lZGlhSXRl
bSA9IGl0ZW0uZ2V0PERpc3BsYXlMaXN0OjpQYWludEZyYW1lRm9yTWVkaWE+KCk7Ci0gICAgYXV0
byBwcm9jZXNzID0gZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2VzcygpOwotICAgIGlmICghcHJvY2Vz
cykKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgYXV0byBwbGF5ZXJQcm94eSA9IHByb2Nl
c3MtPnJlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5KCkuZ2V0UHJveHkobWVkaWFJdGVtLmlk
ZW50aWZpZXIoKSk7Ci0gICAgaWYgKCFwbGF5ZXJQcm94eSkKLSAgICAgICAgcmV0dXJuIGZhbHNl
OwotCi0gICAgYXV0byBwbGF5ZXIgPSBwbGF5ZXJQcm94eS0+bWVkaWFQbGF5ZXIoKTsKKyAgICBh
dXRvIHBsYXllciA9IG1fZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2Vzcy0+cmVtb3RlTWVkaWFQbGF5
ZXJNYW5hZ2VyUHJveHkoKS5tZWRpYVBsYXllcihtZWRpYUl0ZW0uaWRlbnRpZmllcigpKTsKICAg
ICBpZiAoIXBsYXllcikKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCkBAIC0xMTksNiArMTE3LDcg
QEAgdm9pZCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpkaWRGbHVzaChEaXNwbGF5TGlzdDo6Rmx1
c2hJZGVudGlmaWVyIGZsdXNoSWRlbnRpZmkKIAogdm9pZCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5k
OjpjcmVhdGVJbWFnZUJ1ZmZlcihjb25zdCBGbG9hdFNpemUmIGxvZ2ljYWxTaXplLCBSZW5kZXJp
bmdNb2RlIHJlbmRlcmluZ01vZGUsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwgQ29sb3JTcGFjZSBj
b2xvclNwYWNlLCBQaXhlbEZvcm1hdCBwaXhlbEZvcm1hdCwgUmVuZGVyaW5nUmVzb3VyY2VJZGVu
dGlmaWVyIHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcikKIHsKKyAgICBBU1NFUlQoIVJ1bkxv
b3A6OmlzTWFpbigpKTsKICAgICBBU1NFUlQocmVuZGVyaW5nTW9kZSA9PSBSZW5kZXJpbmdNb2Rl
OjpBY2NlbGVyYXRlZCB8fCByZW5kZXJpbmdNb2RlID09IFJlbmRlcmluZ01vZGU6OlVuYWNjZWxl
cmF0ZWQpOwogCiAgICAgUmVmUHRyPEltYWdlQnVmZmVyPiBpbWFnZUJ1ZmZlcjsKQEAgLTI2OSw2
ICsyNjgsOCBAQCBSZWZQdHI8SW1hZ2VCdWZmZXI+IFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6Om5l
eHREZXN0aW5hdGlvbkltYWdlQnVmZmVyQWZ0ZXJBcHBseQogCiB2b2lkIFJlbW90ZVJlbmRlcmlu
Z0JhY2tlbmQ6Ondha2VVcEFuZEFwcGx5RGlzcGxheUxpc3QoY29uc3QgR1BVUHJvY2Vzc1dha2V1
cE1lc3NhZ2VBcmd1bWVudHMmIGFyZ3VtZW50cykKIHsKKyAgICBBU1NFUlQoIVJ1bkxvb3A6Omlz
TWFpbigpKTsKKwogICAgIFRyYWNlU2NvcGUgdHJhY2luZ1Njb3BlKFdha2VVcEFuZEFwcGx5RGlz
cGxheUxpc3RTdGFydCwgV2FrZVVwQW5kQXBwbHlEaXNwbGF5TGlzdEVuZCk7CiAgICAgYXV0byBk
ZXN0aW5hdGlvbkltYWdlQnVmZmVyID0gbWFrZVJlZlB0cihtX3JlbW90ZVJlc291cmNlQ2FjaGUu
Y2FjaGVkSW1hZ2VCdWZmZXIoYXJndW1lbnRzLmRlc3RpbmF0aW9uSW1hZ2VCdWZmZXJJZGVudGlm
aWVyKSk7CiAgICAgaWYgKFVOTElLRUxZKCFkZXN0aW5hdGlvbkltYWdlQnVmZmVyKSkgewpAQCAt
MzIzLDYgKzMyNCw4IEBAIHZvaWQgUmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6c2V0TmV4dEl0ZW1C
dWZmZXJUb1JlYWQoRGlzcGxheUxpc3Q6Okl0ZW1CdWZmZXJJZGVuCiAKIHZvaWQgUmVtb3RlUmVu
ZGVyaW5nQmFja2VuZDo6Z2V0SW1hZ2VEYXRhKEFscGhhUHJlbXVsdGlwbGljYXRpb24gb3V0cHV0
Rm9ybWF0LCBJbnRSZWN0IHNyY1JlY3QsIFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciByZW5k
ZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoSVBDOjpJbWFn
ZURhdGFSZWZlcmVuY2UmJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CisgICAgQVNTRVJUKCFS
dW5Mb29wOjppc01haW4oKSk7CisKICAgICBSZWZQdHI8SW1hZ2VEYXRhPiBpbWFnZURhdGE7CiAg
ICAgaWYgKGF1dG8gaW1hZ2VCdWZmZXIgPSBtX3JlbW90ZVJlc291cmNlQ2FjaGUuY2FjaGVkSW1h
Z2VCdWZmZXIocmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKSkKICAgICAgICAgaW1hZ2VEYXRh
ID0gaW1hZ2VCdWZmZXItPmdldEltYWdlRGF0YShvdXRwdXRGb3JtYXQsIHNyY1JlY3QpOwpAQCAt
MzMxLDYgKzMzNCw4IEBAIHZvaWQgUmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6Z2V0SW1hZ2VEYXRh
KEFscGhhUHJlbXVsdGlwbGljYXRpb24gb3V0cHV0Rm9ybWF0LCBJCiAKIHZvaWQgUmVtb3RlUmVu
ZGVyaW5nQmFja2VuZDo6Z2V0RGF0YVVSTEZvckltYWdlQnVmZmVyKGNvbnN0IFN0cmluZyYgbWlt
ZVR5cGUsIE9wdGlvbmFsPGRvdWJsZT4gcXVhbGl0eSwgV2ViQ29yZTo6UHJlc2VydmVSZXNvbHV0
aW9uIHByZXNlcnZlUmVzb2x1dGlvbiwgV2ViQ29yZTo6UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlm
aWVyIHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChT
dHJpbmcmJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CisgICAgQVNTRVJUKCFSdW5Mb29wOjpp
c01haW4oKSk7CisKICAgICBTdHJpbmcgdXJsU3RyaW5nOwogICAgIGlmIChhdXRvIGltYWdlQnVm
ZmVyID0gbV9yZW1vdGVSZXNvdXJjZUNhY2hlLmNhY2hlZEltYWdlQnVmZmVyKHJlbmRlcmluZ1Jl
c291cmNlSWRlbnRpZmllcikpCiAgICAgICAgIHVybFN0cmluZyA9IGltYWdlQnVmZmVyLT50b0Rh
dGFVUkwobWltZVR5cGUsIHF1YWxpdHksIHByZXNlcnZlUmVzb2x1dGlvbik7CkBAIC0zMzksNiAr
MzQ0LDggQEAgdm9pZCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpnZXREYXRhVVJMRm9ySW1hZ2VC
dWZmZXIoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgT3AKIAogdm9pZCBSZW1vdGVSZW5kZXJpbmdC
YWNrZW5kOjpnZXREYXRhRm9ySW1hZ2VCdWZmZXIoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgT3B0
aW9uYWw8ZG91YmxlPiBxdWFsaXR5LCBXZWJDb3JlOjpSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZp
ZXIgcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFZl
Y3Rvcjx1aW50OF90PiYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKKyAgICBBU1NFUlQoIVJ1
bkxvb3A6OmlzTWFpbigpKTsKKwogICAgIFZlY3Rvcjx1aW50OF90PiBkYXRhOwogICAgIGlmIChh
dXRvIGltYWdlQnVmZmVyID0gbV9yZW1vdGVSZXNvdXJjZUNhY2hlLmNhY2hlZEltYWdlQnVmZmVy
KHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcikpCiAgICAgICAgIGRhdGEgPSBpbWFnZUJ1ZmZl
ci0+dG9EYXRhKG1pbWVUeXBlLCBxdWFsaXR5KTsKQEAgLTM0Nyw2ICszNTQsOCBAQCB2b2lkIFJl
bW90ZVJlbmRlcmluZ0JhY2tlbmQ6OmdldERhdGFGb3JJbWFnZUJ1ZmZlcihjb25zdCBTdHJpbmcm
IG1pbWVUeXBlLCBPcHRpbwogCiB2b2lkIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OmdldEJHUkFE
YXRhRm9ySW1hZ2VCdWZmZXIoV2ViQ29yZTo6UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyIHJl
bmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChWZWN0b3I8
dWludDhfdD4mJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CisgICAgQVNTRVJUKCFSdW5Mb29w
Ojppc01haW4oKSk7CisKICAgICBWZWN0b3I8dWludDhfdD4gZGF0YTsKICAgICBpZiAoYXV0byBp
bWFnZUJ1ZmZlciA9IG1fcmVtb3RlUmVzb3VyY2VDYWNoZS5jYWNoZWRJbWFnZUJ1ZmZlcihyZW5k
ZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpKQogICAgICAgICBkYXRhID0gaW1hZ2VCdWZmZXItPnRv
QkdSQURhdGEoKTsKQEAgLTM1NSw2ICszNjQsOCBAQCB2b2lkIFJlbW90ZVJlbmRlcmluZ0JhY2tl
bmQ6OmdldEJHUkFEYXRhRm9ySW1hZ2VCdWZmZXIoV2ViQ29yZTo6UmVuZGVyaW5nUmVzb3VyYwog
CiB2b2lkIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OmNhY2hlTmF0aXZlSW1hZ2UoY29uc3QgU2hh
cmVhYmxlQml0bWFwOjpIYW5kbGUmIGhhbmRsZSwgUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVy
IHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcikKIHsKKyAgICBBU1NFUlQoIVJ1bkxvb3A6Omlz
TWFpbigpKTsKKwogICAgIGF1dG8gYml0bWFwID0gU2hhcmVhYmxlQml0bWFwOjpjcmVhdGUoaGFu
ZGxlKTsKICAgICBpZiAoIWJpdG1hcCkKICAgICAgICAgcmV0dXJuOwpAQCAtMzcxLDYgKzM4Miw4
IEBAIHZvaWQgUmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6Y2FjaGVOYXRpdmVJbWFnZShjb25zdCBT
aGFyZWFibGVCaXRtYXA6OkhhbmRsZSYgaGFuCiAKIHZvaWQgUmVtb3RlUmVuZGVyaW5nQmFja2Vu
ZDo6Y2FjaGVGb250KFJlZjxGb250PiYmIGZvbnQpCiB7CisgICAgQVNTRVJUKCFSdW5Mb29wOjpp
c01haW4oKSk7CisKICAgICBhdXRvIGlkZW50aWZpZXIgPSBmb250LT5yZW5kZXJpbmdSZXNvdXJj
ZUlkZW50aWZpZXIoKTsKICAgICBtX3JlbW90ZVJlc291cmNlQ2FjaGUuY2FjaGVGb250KFdURk1v
dmUoZm9udCkpOwogICAgIGlmIChtX3BlbmRpbmdXYWtldXBJbmZvICYmIG1fcGVuZGluZ1dha2V1
cEluZm8tPnNob3VsZFBlcmZvcm1XYWtldXAoaWRlbnRpZmllcikpCkBAIC0zNzksMTYgKzM5Miwy
MCBAQCB2b2lkIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OmNhY2hlRm9udChSZWY8Rm9udD4mJiBm
b250KQogCiB2b2lkIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OmRlbGV0ZUFsbEZvbnRzKCkKIHsK
KyAgICBBU1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsKICAgICBtX3JlbW90ZVJlc291cmNlQ2Fj
aGUuZGVsZXRlQWxsRm9udHMoKTsKIH0KIAogdm9pZCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpy
ZWxlYXNlUmVtb3RlUmVzb3VyY2UoUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyIHJlbmRlcmlu
Z1Jlc291cmNlSWRlbnRpZmllcikKIHsKKyAgICBBU1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsK
ICAgICBtX3JlbW90ZVJlc291cmNlQ2FjaGUucmVsZWFzZVJlbW90ZVJlc291cmNlKHJlbmRlcmlu
Z1Jlc291cmNlSWRlbnRpZmllcik7CiB9CiAKIHZvaWQgUmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6
ZGlkQ3JlYXRlU2hhcmVkRGlzcGxheUxpc3RIYW5kbGUoRGlzcGxheUxpc3Q6Okl0ZW1CdWZmZXJJ
ZGVudGlmaWVyIGlkZW50aWZpZXIsIGNvbnN0IFNoYXJlZE1lbW9yeTo6SVBDSGFuZGxlJiBoYW5k
bGUsIFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciBkZXN0aW5hdGlvbkJ1ZmZlcklkZW50aWZp
ZXIpCiB7CisgICAgQVNTRVJUKCFSdW5Mb29wOjppc01haW4oKSk7CisKICAgICBpZiAoVU5MSUtF
TFkobV9zaGFyZWREaXNwbGF5TGlzdEhhbmRsZXMuY29udGFpbnMoaWRlbnRpZmllcikpKSB7CiAg
ICAgICAgIC8vIEZJWE1FOiBBZGQgYSBtZXNzYWdlIGNoZWNrIHRvIHRlcm1pbmF0ZSB0aGUgd2Vi
IHByb2Nlc3MuCiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQuaCBi
L1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5k
LmgKaW5kZXggYmMxMjhmMTZiYjM3NTQ2NDU0MjNmZTJiZDJiMDk5ODIwM2FmMTYzMC4uZTYzODk5
MDNiNjUwYmE4ZDk3M2RhZjliM2RjY2E2NDUzNTZmNDVmOCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQuaAorKysgYi9T
b3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5o
CkBAIC02NSwxNCArNjUsMTMgQEAgY2xhc3MgR1BVQ29ubmVjdGlvblRvV2ViUHJvY2VzczsKIHN0
cnVjdCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kQ3JlYXRpb25QYXJhbWV0ZXJzOwogCiBjbGFzcyBS
ZW1vdGVSZW5kZXJpbmdCYWNrZW5kCi0gICAgOiBwdWJsaWMgSVBDOjpNZXNzYWdlU2VuZGVyCi0g
ICAgLCBwcml2YXRlIElQQzo6TWVzc2FnZVJlY2VpdmVyCisgICAgOiBwcml2YXRlIElQQzo6TWVz
c2FnZVNlbmRlcgorICAgICwgcHVibGljIElQQzo6Q29ubmVjdGlvbjo6V29ya1F1ZXVlTWVzc2Fn
ZVJlY2VpdmVyCiAgICAgLCBwdWJsaWMgV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1CdWZmZXJS
ZWFkaW5nQ2xpZW50IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPFJlbW90
ZVJlbmRlcmluZ0JhY2tlbmQ+IGNyZWF0ZShHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzJiwgUmVt
b3RlUmVuZGVyaW5nQmFja2VuZENyZWF0aW9uUGFyYW1ldGVycyYmKTsKKyAgICBzdGF0aWMgUmVm
PFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ+IGNyZWF0ZShHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNz
JiwgUmVtb3RlUmVuZGVyaW5nQmFja2VuZENyZWF0aW9uUGFyYW1ldGVycyYmKTsKICAgICB2aXJ0
dWFsIH5SZW1vdGVSZW5kZXJpbmdCYWNrZW5kKCk7CiAKLSAgICBHUFVDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzKiBncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzKCkgY29uc3Q7CiAgICAgUmVtb3RlUmVz
b3VyY2VDYWNoZSYgcmVtb3RlUmVzb3VyY2VDYWNoZSgpIHsgcmV0dXJuIG1fcmVtb3RlUmVzb3Vy
Y2VDYWNoZTsgfQogCiAgICAgLy8gUmVuZGVyaW5nIG9wZXJhdGlvbnMuCkBAIC04NCw2ICs4Myw4
IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgc2V0TmV4dEl0ZW1CdWZmZXJUb1JlYWQoV2ViQ29yZTo6
RGlzcGxheUxpc3Q6Okl0ZW1CdWZmZXJJZGVudGlmaWVyLCBXZWJDb3JlOjpSZW5kZXJpbmdSZXNv
dXJjZUlkZW50aWZpZXIgZGVzdGluYXRpb24pOwogCisgICAgdm9pZCBkaXNjb25uZWN0KCk7CisK
IHByaXZhdGU6CiAgICAgUmVtb3RlUmVuZGVyaW5nQmFja2VuZChHUFVDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzJiwgUmVtb3RlUmVuZGVyaW5nQmFja2VuZENyZWF0aW9uUGFyYW1ldGVycyYmKTsKIApA
QCAtMTQxLDggKzE0Miw5IEBAIHByaXZhdGU6CiAgICAgICAgIH0KICAgICB9OwogCisgICAgUmVm
PFdvcmtRdWV1ZT4gbV93b3JrUXVldWU7CiAgICAgUmVtb3RlUmVzb3VyY2VDYWNoZSBtX3JlbW90
ZVJlc291cmNlQ2FjaGU7Ci0gICAgV2Vha1B0cjxHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzPiBt
X2dwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M7CisgICAgUmVmPEdQVUNvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3M+IG1fZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2VzczsKICAgICBSZW5kZXJpbmdCYWNrZW5k
SWRlbnRpZmllciBtX3JlbmRlcmluZ0JhY2tlbmRJZGVudGlmaWVyOwogICAgIEhhc2hNYXA8V2Vi
Q29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1CdWZmZXJJZGVudGlmaWVyLCBSZWZQdHI8RGlzcGxheUxp
c3RSZWFkZXJIYW5kbGU+PiBtX3NoYXJlZERpc3BsYXlMaXN0SGFuZGxlczsKICAgICBPcHRpb25h
bDxQZW5kaW5nV2FrZXVwSW5mb3JtYXRpb24+IG1fcGVuZGluZ1dha2V1cEluZm87CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFj
a2VuZC5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1v
dGVSZW5kZXJpbmdCYWNrZW5kLm1lc3NhZ2VzLmluCmluZGV4IDIwMmMyMGE5YzY1MDEzMDkxMTNk
OTA2ODNjZjAwOWI4ODNiZDAwMWYuLjdkNjVjZTkwOWM1ODIwZjQ2YjAxZTZiZGVlY2RlYWE3MzM2
YWFmMjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1v
dGVSZW5kZXJpbmdCYWNrZW5kLm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJv
Y2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kLm1lc3NhZ2VzLmluCkBAIC0yMiw3
ICsyMiw3IEBACiAKICNpZiBFTkFCTEUoR1BVX1BST0NFU1MpCiAKLW1lc3NhZ2VzIC0+IFJlbW90
ZVJlbmRlcmluZ0JhY2tlbmQgTm90UmVmQ291bnRlZCB7CittZXNzYWdlcyAtPiBSZW1vdGVSZW5k
ZXJpbmdCYWNrZW5kIHsKICAgICBDcmVhdGVJbWFnZUJ1ZmZlcihXZWJDb3JlOjpGbG9hdFNpemUg
bG9naWNhbFNpemUsIFdlYkNvcmU6OlJlbmRlcmluZ01vZGUgcmVuZGVyaW5nTW9kZSwgZmxvYXQg
cmVzb2x1dGlvblNjYWxlLCBXZWJDb3JlOjpDb2xvclNwYWNlIGNvbG9yU3BhY2UsIGVudW06dWlu
dDhfdCBXZWJDb3JlOjpQaXhlbEZvcm1hdCBwaXhlbEZvcm1hdCwgV2ViQ29yZTo6UmVuZGVyaW5n
UmVzb3VyY2VJZGVudGlmaWVyIHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcikKICAgICBXYWtl
VXBBbmRBcHBseURpc3BsYXlMaXN0KHN0cnVjdCBXZWJLaXQ6OkdQVVByb2Nlc3NXYWtldXBNZXNz
YWdlQXJndW1lbnRzIGFyZ3VtZW50cykKICAgICBHZXRJbWFnZURhdGEoZW51bTp1aW50OF90IFdl
YkNvcmU6OkFscGhhUHJlbXVsdGlwbGljYXRpb24gb3V0cHV0Rm9ybWF0LCBXZWJDb3JlOjpJbnRS
ZWN0IHNyY1JlY3QsIFdlYkNvcmU6OlJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciByZW5kZXJp
bmdSZXNvdXJjZUlkZW50aWZpZXIpIC0+IChJUEM6OkltYWdlRGF0YVJlZmVyZW5jZSBpbWFnZURh
dGEpIFN5bmNocm9ub3VzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVk
aWEvUmVtb3RlTGVnYWN5Q0RNUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21l
ZGlhL1JlbW90ZUxlZ2FjeUNETVByb3h5LmNwcAppbmRleCA4ZjAxMTllZGZlMWQ2ZTkzMjQzMDA1
YjM0NDEyNWIyNGVhYjkxZTMwLi44MGM5Mzc0ZTk3MDU5ZWUxMzk1NTVlYjA2NTIxOTQ4Mjk2MjAx
ZDkzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTGVn
YWN5Q0RNUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1v
dGVMZWdhY3lDRE1Qcm94eS5jcHAKQEAgLTg3LDExICs4Nyw3IEBAIFJlZlB0cjxNZWRpYVBsYXll
cj4gUmVtb3RlTGVnYWN5Q0RNUHJveHk6OmNkbU1lZGlhUGxheWVyKGNvbnN0IExlZ2FjeUNETSop
IGNvbnN0CiAgICAgaWYgKCFtX3BsYXllcklkIHx8ICFtX2ZhY3RvcnkpCiAgICAgICAgIHJldHVy
biBudWxscHRyOwogCi0gICAgYXV0byBwcm94eSA9IG1fZmFjdG9yeS0+Z3B1Q29ubmVjdGlvblRv
V2ViUHJvY2VzcygpLnJlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5KCkuZ2V0UHJveHkobV9w
bGF5ZXJJZCk7Ci0gICAgaWYgKCFwcm94eSkKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0KLSAg
ICByZXR1cm4gcHJveHktPm1lZGlhUGxheWVyKCk7CisgICAgcmV0dXJuIG1fZmFjdG9yeS0+Z3B1
Q29ubmVjdGlvblRvV2ViUHJvY2VzcygpLnJlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5KCku
bWVkaWFQbGF5ZXIobV9wbGF5ZXJJZCk7CiB9CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eS5jcHAgYi9T
b3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJv
eHkuY3BwCmluZGV4IGMwMjUzMzVkY2EzODU5ZDZkNjQxMzQ2MDA2MDY3YjZhOTVlNGM2NmYuLmZh
MjRhMmFhYmUyNDViOTAzYTg5NzgwMzE1OWM1ZjNmZmE5MzdmZGQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eS5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUGxheWVy
TWFuYWdlclByb3h5LmNwcApAQCAtNjEsNiArNjEsOSBAQCBSZW1vdGVNZWRpYVBsYXllck1hbmFn
ZXJQcm94eTo6flJlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5KCkKIAogdm9pZCBSZW1vdGVN
ZWRpYVBsYXllck1hbmFnZXJQcm94eTo6Y3JlYXRlTWVkaWFQbGF5ZXIoTWVkaWFQbGF5ZXJJZGVu
dGlmaWVyIGlkZW50aWZpZXIsIE1lZGlhUGxheWVyRW51bXM6Ok1lZGlhRW5naW5lSWRlbnRpZmll
ciBlbmdpbmVJZGVudGlmaWVyLCBSZW1vdGVNZWRpYVBsYXllclByb3h5Q29uZmlndXJhdGlvbiYm
IHByb3h5Q29uZmlndXJhdGlvbiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChSZW1vdGVNZWRpYVBs
YXllckNvbmZpZ3VyYXRpb24mKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKKyAgICBBU1NFUlQo
UnVuTG9vcDo6aXNNYWluKCkpOworCisgICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhtX3Byb3hp
ZXNMb2NrKTsKICAgICBBU1NFUlQoIW1fcHJveGllcy5jb250YWlucyhpZGVudGlmaWVyKSk7CiAK
ICAgICBSZW1vdGVNZWRpYVBsYXllckNvbmZpZ3VyYXRpb24gcGxheWVyQ29uZmlndXJhdGlvbjsK
QEAgLTc0LDYgKzc3LDggQEAgdm9pZCBSZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eTo6Y3Jl
YXRlTWVkaWFQbGF5ZXIoTWVkaWFQbGF5ZXJJZGVudGlmaWVyIGlkZW4KIAogdm9pZCBSZW1vdGVN
ZWRpYVBsYXllck1hbmFnZXJQcm94eTo6ZGVsZXRlTWVkaWFQbGF5ZXIoTWVkaWFQbGF5ZXJJZGVu
dGlmaWVyIGlkZW50aWZpZXIpCiB7CisgICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKKyAg
ICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKG1fcHJveGllc0xvY2spOwogICAgIGlmIChhdXRvIHBy
b3h5ID0gbV9wcm94aWVzLnRha2UoaWRlbnRpZmllcikpCiAgICAgICAgIHByb3h5LT5pbnZhbGlk
YXRlKCk7CiB9CkBAIC0xNjgsMjEgKzE3MywyNSBAQCB2b2lkIFJlbW90ZU1lZGlhUGxheWVyTWFu
YWdlclByb3h5OjpzdXBwb3J0c0tleVN5c3RlbShNZWRpYVBsYXllckVudW1zOjpNZWRpYUVuZwog
CiB2b2lkIFJlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5OjpkaWRSZWNlaXZlUGxheWVyTWVz
c2FnZShJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIElQQzo6RGVjb2RlciYgZGVjb2RlcikK
IHsKKyAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOwogICAgIGlmIChhdXRvKiBwbGF5ZXIg
PSBtX3Byb3hpZXMuZ2V0KG1ha2VPYmplY3RJZGVudGlmaWVyPE1lZGlhUGxheWVySWRlbnRpZmll
clR5cGU+KGRlY29kZXIuZGVzdGluYXRpb25JRCgpKSkpCiAgICAgICAgIHBsYXllci0+ZGlkUmVj
ZWl2ZU1lc3NhZ2UoY29ubmVjdGlvbiwgZGVjb2Rlcik7CiB9CiAKIHZvaWQgUmVtb3RlTWVkaWFQ
bGF5ZXJNYW5hZ2VyUHJveHk6OmRpZFJlY2VpdmVTeW5jUGxheWVyTWVzc2FnZShJUEM6OkNvbm5l
Y3Rpb24mIGNvbm5lY3Rpb24sIElQQzo6RGVjb2RlciYgZGVjb2Rlciwgc3RkOjp1bmlxdWVfcHRy
PElQQzo6RW5jb2Rlcj4mIGVuY29kZXIpCiB7CisgICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigp
KTsKICAgICBpZiAoYXV0byogcGxheWVyID0gbV9wcm94aWVzLmdldChtYWtlT2JqZWN0SWRlbnRp
ZmllcjxNZWRpYVBsYXllcklkZW50aWZpZXJUeXBlPihkZWNvZGVyLmRlc3RpbmF0aW9uSUQoKSkp
KQogICAgICAgICBwbGF5ZXItPmRpZFJlY2VpdmVTeW5jTWVzc2FnZShjb25uZWN0aW9uLCBkZWNv
ZGVyLCBlbmNvZGVyKTsKIH0KIAotUmVtb3RlTWVkaWFQbGF5ZXJQcm94eSogUmVtb3RlTWVkaWFQ
bGF5ZXJNYW5hZ2VyUHJveHk6OmdldFByb3h5KGNvbnN0IE1lZGlhUGxheWVySWRlbnRpZmllciYg
aWRlbnRpZmllcikKKy8vIE1heSBnZXQgY2FsbGVkIG9uIGEgYmFja2dyb3VuZCB0aHJlYWQuCitS
ZWZQdHI8TWVkaWFQbGF5ZXI+IFJlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5OjptZWRpYVBs
YXllcihjb25zdCBNZWRpYVBsYXllcklkZW50aWZpZXImIGlkZW50aWZpZXIpCiB7CisgICAgYXV0
byBsb2NrZXIgPSBob2xkTG9jayhtX3Byb3hpZXNMb2NrKTsKICAgICBhdXRvIHJlc3VsdHMgPSBt
X3Byb3hpZXMuZmluZChpZGVudGlmaWVyKTsKICAgICBpZiAocmVzdWx0cyAhPSBtX3Byb3hpZXMu
ZW5kKCkpCi0gICAgICAgIHJldHVybiByZXN1bHRzLT52YWx1ZS5nZXQoKTsKKyAgICAgICAgcmV0
dXJuIHJlc3VsdHMtPnZhbHVlLT5tZWRpYVBsYXllcigpOwogICAgIHJldHVybiBudWxscHRyOwog
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVk
aWFQbGF5ZXJNYW5hZ2VyUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9S
ZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eS5oCmluZGV4IGI1YjEzMzYxNDY5YjdkZGIzYzQx
MmI1MzQ0NjY1OTNiMjFiYWRjNjUuLjIzN2FmOWI2ODAxMGM2MjQyOTY4ZWZkMGU0MGI1NGQ0OGQw
ZjQ1MDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVN
ZWRpYVBsYXllck1hbmFnZXJQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9t
ZWRpYS9SZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eS5oCkBAIC0zMyw2ICszMyw3IEBACiAj
aW5jbHVkZSAiVHJhY2tQcml2YXRlUmVtb3RlSWRlbnRpZmllci5oIgogI2luY2x1ZGUgPFdlYkNv
cmUvTWVkaWFQbGF5ZXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL01lZGlhUGxheWVySWRlbnRpZmll
ci5oPgorI2luY2x1ZGUgPHd0Zi9Mb2NrLmg+CiAjaW5jbHVkZSA8d3RmL0xvZ2dlckhlbHBlci5o
PgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKQEAgLTY4LDcgKzY5LDcgQEAgcHVibGljOgogICAgIFdU
RkxvZ0NoYW5uZWwmIGxvZ0NoYW5uZWwoKSBjb25zdCBmaW5hbDsKICNlbmRpZgogCi0gICAgUmVt
b3RlTWVkaWFQbGF5ZXJQcm94eSogZ2V0UHJveHkoY29uc3QgV2ViQ29yZTo6TWVkaWFQbGF5ZXJJ
ZGVudGlmaWVyJik7CisgICAgUmVmUHRyPFdlYkNvcmU6Ok1lZGlhUGxheWVyPiBtZWRpYVBsYXll
cihjb25zdCBXZWJDb3JlOjpNZWRpYVBsYXllcklkZW50aWZpZXImKTsKIAogcHJpdmF0ZToKICAg
ICAvLyBJUEM6Ok1lc3NhZ2VSZWNlaXZlcgpAQCAtODYsNiArODcsNyBAQCBwcml2YXRlOgogICAg
IHZvaWQgY2xlYXJNZWRpYUNhY2hlRm9yT3JpZ2lucyhXZWJDb3JlOjpNZWRpYVBsYXllckVudW1z
OjpNZWRpYUVuZ2luZUlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYmLCBWZWN0b3I8V2ViQ29yZTo6
U2VjdXJpdHlPcmlnaW5EYXRhPiYmKTsKICAgICB2b2lkIHN1cHBvcnRzS2V5U3lzdGVtKFdlYkNv
cmU6Ok1lZGlhUGxheWVyRW51bXM6Ok1lZGlhRW5naW5lSWRlbnRpZmllciwgY29uc3QgU3RyaW5n
JiYsIGNvbnN0IFN0cmluZyYmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKTsKIAor
ICAgIExvY2sgbV9wcm94aWVzTG9jazsKICAgICBIYXNoTWFwPFdlYkNvcmU6Ok1lZGlhUGxheWVy
SWRlbnRpZmllciwgc3RkOjp1bmlxdWVfcHRyPFJlbW90ZU1lZGlhUGxheWVyUHJveHk+PiBtX3By
b3hpZXM7CiAgICAgR1BVQ29ubmVjdGlvblRvV2ViUHJvY2VzcyYgbV9ncHVDb25uZWN0aW9uVG9X
ZWJQcm9jZXNzOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL1NoYXJlZE1l
bW9yeS5oIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9TaGFyZWRNZW1vcnkuaAppbmRleCBhMDg1
NDZiNzY1NjA0NTYxNDVkODUwNGQ5MzhmMDNlN2Y4MWI0MGQwLi4wMzQ1YTI1ZTczNDRhM2I3YjVj
MTE2MjhjODdkN2E5ZTg1NmQ4NDEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3Jt
L1NoYXJlZE1lbW9yeS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vU2hhcmVkTWVtb3J5
LmgKQEAgLTI4LDcgKzI4LDcgQEAKIAogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAjaW5jbHVk
ZSA8d3RmL05vbmNvcHlhYmxlLmg+Ci0jaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KKyNpbmNs
dWRlIDx3dGYvVGhyZWFkU2FmZVJlZkNvdW50ZWQuaD4KIAogI2lmIFVTRShVTklYX0RPTUFJTl9T
T0NLRVRTKQogI2luY2x1ZGUgIkF0dGFjaG1lbnQuaCIKQEAgLTU2LDcgKzU2LDcgQEAgY2xhc3Mg
TWFjaFNlbmRSaWdodDsKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKLWNsYXNzIFNoYXJlZE1lbW9y
eSA6IHB1YmxpYyBSZWZDb3VudGVkPFNoYXJlZE1lbW9yeT4geworY2xhc3MgU2hhcmVkTWVtb3J5
IDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPFNoYXJlZE1lbW9yeT4gewogcHVibGljOgog
ICAgIGVudW0gY2xhc3MgUHJvdGVjdGlvbiB7CiAgICAgICAgIFJlYWRPbmx5LApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9TaGFyZWQvU2hhcmVhYmxlQml0bWFwLmNwcCBiL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL1NoYXJlYWJsZUJpdG1hcC5jcHAKaW5kZXggODQ0ODg3YmJjM2IxYjNhNDMzODQx
MmU5NDNjOWQ2OTJjYjFiNjJiMC4uYjEwZDVhNjNjMWE1NDg0ZWEyZDFmMzdiOTVkZDU1NWQzOWUw
MzkzOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvU2hhcmVhYmxlQml0bWFwLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9TaGFyZWFibGVCaXRtYXAuY3BwCkBAIC0xNzIs
NyArMTcyLDYgQEAgU2hhcmVhYmxlQml0bWFwOjpTaGFyZWFibGVCaXRtYXAoY29uc3QgSW50U2l6
ZSYgc2l6ZSwgQ29uZmlndXJhdGlvbiBjb25maWd1cmF0aW8KICAgICAsIG1fY29uZmlndXJhdGlv
bihjb25maWd1cmF0aW9uKQogICAgICwgbV9kYXRhKGRhdGEpCiB7Ci0gICAgQVNTRVJUKFJ1bkxv
b3A6OmlzTWFpbigpKTsKIH0KIAogU2hhcmVhYmxlQml0bWFwOjpTaGFyZWFibGVCaXRtYXAoY29u
c3QgSW50U2l6ZSYgc2l6ZSwgQ29uZmlndXJhdGlvbiBjb25maWd1cmF0aW9uLCBSZWZQdHI8U2hh
cmVkTWVtb3J5PiBzaGFyZWRNZW1vcnkpCkBAIC0xODEsOCArMTgwLDYgQEAgU2hhcmVhYmxlQml0
bWFwOjpTaGFyZWFibGVCaXRtYXAoY29uc3QgSW50U2l6ZSYgc2l6ZSwgQ29uZmlndXJhdGlvbiBj
b25maWd1cmF0aW8KICAgICAsIG1fc2hhcmVkTWVtb3J5KHNoYXJlZE1lbW9yeSkKICAgICAsIG1f
ZGF0YShudWxscHRyKQogewotICAgIEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7Ci0KICNpZiBV
U0UoRElSRUNUMkQpCiAgICAgY3JlYXRlU2hhcmVkUmVzb3VyY2UoKTsKICNlbmRpZgpAQCAtMTkw
LDggKzE4Nyw2IEBAIFNoYXJlYWJsZUJpdG1hcDo6U2hhcmVhYmxlQml0bWFwKGNvbnN0IEludFNp
emUmIHNpemUsIENvbmZpZ3VyYXRpb24gY29uZmlndXJhdGlvCiAKIFNoYXJlYWJsZUJpdG1hcDo6
flNoYXJlYWJsZUJpdG1hcCgpCiB7Ci0gICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKLQog
ICAgIGlmICghaXNCYWNrZWRCeVNoYXJlZE1lbW9yeSgpKQogICAgICAgICBTaGFyZWFibGVCaXRt
YXBNYWxsb2M6OmZyZWUobV9kYXRhKTsKICNpZiBVU0UoRElSRUNUMkQpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9TaGFyZWFibGVCaXRtYXAuaCBiL1NvdXJjZS9XZWJLaXQvU2hh
cmVkL1NoYXJlYWJsZUJpdG1hcC5oCmluZGV4IDNhMWZhZDJjNzliY2UxYzdlNWExYTNhNzJlNjQw
MmI4ZmJiMTg1NWYuLmNlYzViNTkzYzVmYThjYzg4Yjg1NjRiMDE2MGI0N2U5ZTMzMTQwYTMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1NoYXJlYWJsZUJpdG1hcC5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvU2hhcmVkL1NoYXJlYWJsZUJpdG1hcC5oCkBAIC0yOCw4ICsyOCw4IEBACiAj
aW5jbHVkZSAiU2hhcmVkTWVtb3J5LmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9JbnRSZWN0Lmg+CiAj
aW5jbHVkZSA8V2ViQ29yZS9QbGF0Zm9ybUltYWdlLmg+Ci0jaW5jbHVkZSA8d3RmL1JlZkNvdW50
ZWQuaD4KICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CisjaW5jbHVkZSA8d3RmL1RocmVhZFNhZmVS
ZWZDb3VudGVkLmg+CiAKICNpZiBVU0UoQ0cpCiAjaW5jbHVkZSAiQ29sb3JTcGFjZURhdGEuaCIK
QEAgLTUyLDcgKzUyLDcgQEAgY2xhc3MgR3JhcGhpY3NDb250ZXh0OwogCiBuYW1lc3BhY2UgV2Vi
S2l0IHsKICAgICAKLWNsYXNzIFNoYXJlYWJsZUJpdG1hcCA6IHB1YmxpYyBSZWZDb3VudGVkPFNo
YXJlYWJsZUJpdG1hcD4geworY2xhc3MgU2hhcmVhYmxlQml0bWFwIDogcHVibGljIFRocmVhZFNh
ZmVSZWZDb3VudGVkPFNoYXJlYWJsZUJpdG1hcD4gewogcHVibGljOgogICAgIHN0cnVjdCBDb25m
aWd1cmF0aW9uIHsKICAgICAgICAgYm9vbCBpc09wYXF1ZSB7IGZhbHNlIH07CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9jZy9TaGFyZWFibGVCaXRtYXBDRy5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9jZy9TaGFyZWFibGVCaXRtYXBDRy5jcHAKaW5kZXggMzY1MzQ4MjBhZjVh
MjI4M2M2ZTZhMDZlNzQzMzE3N2I5MDNkZTBhMS4uOGY5Y2Q1OTQzNmNhMTZhNjdjMzAxYjc1NDc2
MDU5Nzg3NjhhNDQzYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvY2cvU2hhcmVh
YmxlQml0bWFwQ0cuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL2NnL1NoYXJlYWJsZUJp
dG1hcENHLmNwcApAQCAtODcsNyArODcsNiBAQCB1bnNpZ25lZCBTaGFyZWFibGVCaXRtYXA6OmNh
bGN1bGF0ZUJ5dGVzUGVyUGl4ZWwoY29uc3QgQ29uZmlndXJhdGlvbiYgY29uZmlndXJhdAogCiBz
dGQ6OnVuaXF1ZV9wdHI8R3JhcGhpY3NDb250ZXh0PiBTaGFyZWFibGVCaXRtYXA6OmNyZWF0ZUdy
YXBoaWNzQ29udGV4dCgpCiB7Ci0gICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKICAgICBy
ZWYoKTsgLy8gQmFsYW5jZWQgYnkgZGVyZWYgaW4gcmVsZWFzZUJpdG1hcENvbnRleHREYXRhLgog
CiAgICAgdW5zaWduZWQgYnl0ZXNQZXJQaXhlbCA9IGNhbGN1bGF0ZUJ5dGVzUGVyUGl4ZWwobV9j
b25maWd1cmF0aW9uKTsKQEAgLTE1NywxMyArMTU2LDYgQEAgUmV0YWluUHRyPENHSW1hZ2VSZWY+
IFNoYXJlYWJsZUJpdG1hcDo6Y3JlYXRlQ0dJbWFnZShDR0RhdGFQcm92aWRlclJlZiBkYXRhUHJv
dmkKIAogdm9pZCBTaGFyZWFibGVCaXRtYXA6OnJlbGVhc2VCaXRtYXBDb250ZXh0RGF0YSh2b2lk
KiB0eXBlbGVzc0JpdG1hcCwgdm9pZCogdHlwZWxlc3NEYXRhKQogewotICAgIGlmICghUnVuTG9v
cDo6aXNNYWluKCkpIHsKLSAgICAgICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFt0eXBlbGVz
c0JpdG1hcCwgdHlwZWxlc3NEYXRhXSB7Ci0gICAgICAgICAgICByZWxlYXNlQml0bWFwQ29udGV4
dERhdGEodHlwZWxlc3NCaXRtYXAsIHR5cGVsZXNzRGF0YSk7Ci0gICAgICAgIH0pOwotICAgICAg
ICByZXR1cm47Ci0gICAgfQotCiAgICAgU2hhcmVhYmxlQml0bWFwKiBiaXRtYXAgPSBzdGF0aWNf
Y2FzdDxTaGFyZWFibGVCaXRtYXAqPih0eXBlbGVzc0JpdG1hcCk7CiAgICAgQVNTRVJUX1VOVVNF
RCh0eXBlbGVzc0RhdGEsIGJpdG1hcC0+ZGF0YSgpID09IHR5cGVsZXNzRGF0YSk7CiAgICAgYml0
bWFwLT5kZXJlZigpOyAvLyBCYWxhbmNlZCBieSByZWYgaW4gY3JlYXRlR3JhcGhpY3NDb250ZXh0
LgpAQCAtMTcxLDEzICsxNjMsNiBAQCB2b2lkIFNoYXJlYWJsZUJpdG1hcDo6cmVsZWFzZUJpdG1h
cENvbnRleHREYXRhKHZvaWQqIHR5cGVsZXNzQml0bWFwLCB2b2lkKiB0eXBlbAogCiB2b2lkIFNo
YXJlYWJsZUJpdG1hcDo6cmVsZWFzZURhdGFQcm92aWRlckRhdGEodm9pZCogdHlwZWxlc3NCaXRt
YXAsIGNvbnN0IHZvaWQqIHR5cGVsZXNzRGF0YSwgc2l6ZV90KQogewotICAgIGlmICghUnVuTG9v
cDo6aXNNYWluKCkpIHsKLSAgICAgICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFt0eXBlbGVz
c0JpdG1hcCwgdHlwZWxlc3NEYXRhXSB7Ci0gICAgICAgICAgICByZWxlYXNlRGF0YVByb3ZpZGVy
RGF0YSh0eXBlbGVzc0JpdG1hcCwgdHlwZWxlc3NEYXRhLCAwKTsKLSAgICAgICAgfSk7Ci0gICAg
ICAgIHJldHVybjsKLSAgICB9Ci0KICAgICBTaGFyZWFibGVCaXRtYXAqIGJpdG1hcCA9IHN0YXRp
Y19jYXN0PFNoYXJlYWJsZUJpdG1hcCo+KHR5cGVsZXNzQml0bWFwKTsKICAgICBBU1NFUlRfVU5V
U0VEKHR5cGVsZXNzRGF0YSwgYml0bWFwLT5kYXRhKCkgPT0gdHlwZWxlc3NEYXRhKTsKICAgICBi
aXRtYXAtPmRlcmVmKCk7IC8vIEJhbGFuY2VkIGJ5IHJlZiBpbiBjcmVhdGVDR0ltYWdlLgo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>417726</attachid>
            <date>2021-01-15 13:06:37 -0800</date>
            <delta_ts>2021-01-15 13:51:59 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-220476-20210115130636.patch</filename>
            <type>text/plain</type>
            <size>55381</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcxNTMyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDQzNDlmZWJiZDM3MGM5Mjc2N2E4ZWQ1
MzEwYTkzN2M1MTdjZjVkOTAuLjI1MDlkYTcxOGMzOGVmNDAzM2U5ZTFiY2YyOGJmMmMxNWQzMjdl
YWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTggQEAKKzIwMjEtMDEtMTMgIENocmlzIER1bWV6ICA8Y2R1bWV6
QGFwcGxlLmNvbT4KKworICAgICAgICBbR1BVUHJvY2Vzc10gTW92ZSBET00gLyBDYW52YXMgcmVu
ZGVyaW5nIG9mZiB0aGUgbWFpbiB0aHJlYWQgaW4gdGhlIEdQVVByb2Nlc3MKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyMDQ3NgorCisgICAgICAgIFJl
dmlld2VkIGJ5IFNpbW9uIEZyYXNlci4KKworICAgICAgICBBZGQgdHJhaXQgZnVuY3Rpb24gdGhh
dCBnZXRzIGNhbGxlZCBUaW55TFJVQ2FjaGUgdG8gY29udmVydCB0aGUga2V5IGJlZm9yZSBzdG9y
aW5nCisgICAgICAgIGl0LiBJdCBpcyB1c2VmdWwgZm9yIGNsaWVudHMgdGhhdCBuZWVkIHRvIGNh
bGwgaXNvbGF0ZWRDb3B5KCkgb24gdGhlIGtleSBTdHJpbmcgYmVmb3JlCisgICAgICAgIHN0b3Jp
bmcgaXQuCisKKyAgICAgICAgKiB3dGYvVGlueUxSVUNhY2hlLmg6CisgICAgICAgIChXVEY6OlRp
bnlMUlVDYWNoZVBvbGljeTo6Y3JlYXRlS2V5Rm9yU3RvcmFnZSk6CisgICAgICAgIChXVEY6OlRp
bnlMUlVDYWNoZTo6Z2V0KToKKwogMjAyMS0wMS0xNCAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJp
c3RlbnNlbkB3ZWJraXQub3JnPgogCiAgICAgICAgIEFkZCBkb3RsZXNzIGogYW5kIHNtYWxsIE4g
dG8gdW5pY29kZSBsb29rYWxpa2UgY2hhcmFjdGVyIGxpc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBjMmIxNWVj
YmMxNThiZjk5MDE1YjdmMzBlZjZiZjBjY2U0MDcwZTU5Li4wNGIzM2FiNjk0NDVhNzhjYTRjMmQ2
YTdmMDNhYjI2MzY4ZTFmZjkwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cK
KysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDkgQEAKKzIwMjEtMDEt
MTMgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKworICAgICAgICBbR1BVUHJvY2Vz
c10gTW92ZSBET00gLyBDYW52YXMgcmVuZGVyaW5nIG9mZiB0aGUgbWFpbiB0aHJlYWQgaW4gdGhl
IEdQVVByb2Nlc3MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTIyMDQ3NgorCisgICAgICAgIFJldmlld2VkIGJ5IFNpbW9uIEZyYXNlci4KKworICAgICAg
ICBNYWtlIHNvbWUgY2FjaGVzIHRocmVhZC1zYWZlIG5vdyB0aGF0IHdlIGRvIHJlbmRlcmluZyBv
ZmYgdGhlIG1haW4gdGhyZWFkIGluCisgICAgICAgIHRoZSBHUFVQcm9jZXNzLgorCisgICAgICAg
IE5vIG5ldyB0ZXN0cywgY292ZXJlZCBieSBleGlzdGluZyB0ZXN0cy4KKworICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvTWVkaWFQbGF5ZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9TaGFkb3dCbHVy
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcmF0Y2hCdWZmZXI6OlNjcmF0Y2hCdWZmZXIpOgor
ICAgICAgICAoV2ViQ29yZTo6U2NyYXRjaEJ1ZmZlcjo6Z2V0U2NyYXRjaEJ1ZmZlcik6CisgICAg
ICAgIChXZWJDb3JlOjpTY3JhdGNoQnVmZmVyOjpzZXRDYWNoZWRTaGFkb3dWYWx1ZXMpOgorICAg
ICAgICAoV2ViQ29yZTo6U2NyYXRjaEJ1ZmZlcjo6c2V0Q2FjaGVkSW5zZXRTaGFkb3dWYWx1ZXMp
OgorICAgICAgICAoV2ViQ29yZTo6U2NyYXRjaEJ1ZmZlcjo6c2NoZWR1bGVTY3JhdGNoQnVmZmVy
UHVyZ2UpOgorICAgICAgICAoV2ViQ29yZTo6U2NyYXRjaEJ1ZmZlcjo6cHVyZ2VUaW1lckZpcmVk
KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcmF0Y2hCdWZmZXI6OmNsZWFyU2NyYXRjaEJ1ZmZlcik6
CisgICAgICAgIChXZWJDb3JlOjpTY3JhdGNoQnVmZmVyOjpzaW5nbGV0b24pOgorICAgICAgICAo
V2ViQ29yZTo6U2NyYXRjaEJ1ZmZlcjo6bG9jayk6CisgICAgICAgIChXZWJDb3JlOjpTaGFkb3dC
bHVyOjpkcmF3UmVjdFNoYWRvd1dpdGhUaWxpbmcpOgorICAgICAgICAoV2ViQ29yZTo6U2hhZG93
Qmx1cjo6ZHJhd0luc2V0U2hhZG93V2l0aFRpbGluZyk6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvY2cvSW1hZ2VCdWZmZXJVdGlsaXRpZXNDRy5jcHA6CisgICAgICAgIChXZWJDb3JlOjp1
dGlGcm9tSW1hZ2VCdWZmZXJNSU1FVHlwZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2cvU3ViaW1hZ2VDYWNoZVdpdGhUaW1lci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTdWJpbWFn
ZUNhY2hlV2l0aFRpbWVyOjpTdWJpbWFnZUNhY2hlV2l0aFRpbWVyKToKKyAgICAgICAgKFdlYkNv
cmU6OlN1YmltYWdlQ2FjaGVXaXRoVGltZXI6OnBydW5lQ2FjaGVUaW1lckZpcmVkKToKKyAgICAg
ICAgKFdlYkNvcmU6OlN1YmltYWdlQ2FjaGVXaXRoVGltZXI6OnN1YmltYWdlKToKKyAgICAgICAg
KFdlYkNvcmU6OlN1YmltYWdlQ2FjaGVXaXRoVGltZXI6OmNsZWFySW1hZ2VBbmRTdWJpbWFnZXMp
OgorICAgICAgICAoV2ViQ29yZTo6U3ViaW1hZ2VDYWNoZVdpdGhUaW1lcjo6Y2xlYXJBbGwpOgor
ICAgICAgICAoV2ViQ29yZTo6U3ViaW1hZ2VDYWNoZVdpdGhUaW1lcjo6c3ViaW1hZ2VDYWNoZSk6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvU3ViaW1hZ2VDYWNoZVdpdGhUaW1lci5o
OgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvbWFjL1VUSVV0aWxpdGllcy5tbToKKyAgICAg
ICAgKFdlYkNvcmU6OlVUSUZyb21Vbmtub3duTUlNRVR5cGUpOgorICAgICAgICAoV2ViQ29yZTo6
VVRJRnJvbU1JTUVUeXBlQ2FjaGVQb2xpY3k6OmNyZWF0ZVZhbHVlRm9yS2V5KToKKyAgICAgICAg
KFdlYkNvcmU6OlVUSUZyb21NSU1FVHlwZUNhY2hlUG9saWN5OjpjcmVhdGVLZXlGb3JTdG9yYWdl
KToKKyAgICAgICAgKFdlYkNvcmU6OmNhY2hlVVRJRnJvbU1pbWVUeXBlKToKKyAgICAgICAgKFdl
YkNvcmU6OlVUSUZyb21NSU1FVHlwZSk6CisgICAgICAgICogcGxhdGZvcm0vdGV4dC9jZi9IeXBo
ZW5hdGlvbkNGLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS90ZXh0L2h5cGhlbi9IeXBoZW5hdGlv
bkxpYkh5cGhlbi5jcHA6CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0yMjA0NzYKKwogMjAyMS0wMS0xNSAgSmVyIE5vYmxlICA8amVyLm5vYmxlQGFwcGxl
LmNvbT4KIAogICAgICAgICBQbGF5YmFjayBmYWlscyBhdCBtYXJrZXR3YXRjaC5jb20KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cK
aW5kZXggNTU2YzA1ZGU0ZjdmZTY1ZjQwN2ZmODhiYWRkYWYwNmQ5ZDZjYzE2Mi4uMTBjMDFjMjFi
ZTA2M2U2NmIzNGRlYzdjNzY5Y2I2OTUyYzI4NGM3YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSw2OSBA
QAorMjAyMS0wMS0xMyAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAg
IFtHUFVQcm9jZXNzXSBNb3ZlIERPTSAvIENhbnZhcyByZW5kZXJpbmcgb2ZmIHRoZSBtYWluIHRo
cmVhZCBpbiB0aGUgR1BVUHJvY2VzcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MjIwNDc2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgU2ltb24gRnJhc2Vy
LgorCisgICAgICAgIE1vdmUgRE9NIC8gQ2FudmFzIHJlbmRlcmluZyBvZmYgdGhlIG1haW4gdGhy
ZWFkIChhbmQgb24gYSBoaWdoLXByaW9yaXR5IHNlcmlhbCBXb3JrUXVldWUpIGluIHRoZQorICAg
ICAgICBHUFVQcm9jZXNzIGJ5IG1ha2luZyBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kIGEgV29ya1F1
ZXVlTWVzc2FnZVJlY2VpdmVyLiBUaGVyZSBpcyBhIHNlcmlhbCBXb3JrUXVldWUKKyAgICAgICAg
cGVyIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQsIHdoaWNoIG1lYW5zIGVhY2ggV2ViUGFnZSBnZXRz
IGl0cyBvd24gV29ya1F1ZXVlLgorCisgICAgICAgIEEvQiB0ZXN0aW5nIHNob3dzIHRoaXMgbW9z
dGx5IHBlcmYtbmV1dHJhbCAoY291bGQgYmUgYSBzbGlnaHQgcHJvZ3Jlc3Npb24gb24gc29tZSBo
YXJkd2FyZSkuIEkgYmVsaWV2ZQorICAgICAgICB0aGlzIG5ldyBhcmNoaXRlY3R1cmUgc2hvdWxk
IGFsc28gZ2l2ZSB1cyBtb3JlIG9wdGltaXphdGlvbiBvcHBvcnR1bml0aWVzIGluIHRoZSBmdXR1
cmUuIEZvciBleGFtcGxlLAorICAgICAgICB3ZSBtYXkgYmUgYWJsZSB0byBtb3JlIGFnZ3Jlc3Np
dmVseSB3YWl0IG9uIHRoZSBjcm9zcy1wcm9jZXNzIHNlbWFwaG9yZSB3aGVuIHdhaXRpbmcgZm9y
IG5ldyBEaXNwbGF5TGlzdAorICAgICAgICBlbnRyaWVzIHdpdGhvdXQgd29ycnlpbmcgYWJvdXQg
YmxvY2tpbmcgdGhlIG1haW4gdGhyZWFkLgorCisgICAgICAgIEkgaGF2ZSBydW4gbGF5b3V0IHRl
c3RzIGluIERlYnVnIG9uIGJvdGggbWFjT1MgJiBpT1Mgd2l0aCB0aGUgR1BVUHJvY2VzcyBlbmFi
bGVkIGFuZCBJIGJlbGlldmUgSQorICAgICAgICBoYXZlIGZpeGVkIGFsbCB0aGUgY3Jhc2hlcyB0
aGF0IHdlcmUgZGlzY292ZXJlZC4KKworICAgICAgICAqIEdQVVByb2Nlc3MvR1BVQ29ubmVjdGlv
blRvV2ViUHJvY2Vzcy5jcHA6CisgICAgICAgIChXZWJLaXQ6OkdQVUNvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3M6OkdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MpOgorICAgICAgICAoV2ViS2l0OjpHUFVD
b25uZWN0aW9uVG9XZWJQcm9jZXNzOjpkaWRDbG9zZSk6CisgICAgICAgIChXZWJLaXQ6OkdQVUNv
bm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmNyZWF0ZVJlbmRlcmluZ0JhY2tlbmQpOgorICAgICAgICAo
V2ViS2l0OjpHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5k
V3JhcHBlcjo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZFdyYXBwZXIpOgorICAgICAgICAoV2ViS2l0
OjpHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kV3JhcHBl
cjo6flJlbW90ZVJlbmRlcmluZ0JhY2tlbmRXcmFwcGVyKToKKyAgICAgICAgKiBHUFVQcm9jZXNz
L0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaDoKKyAgICAgICAgKFdlYktpdDo6R1BVQ29ubmVj
dGlvblRvV2ViUHJvY2Vzczo6cmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHkpOgorICAgICAg
ICAqIEdQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5jcHA6CisgICAg
ICAgIChXZWJLaXQ6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OmNyZWF0ZSk6CisgICAgICAgIChX
ZWJLaXQ6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmQpOgor
ICAgICAgICAoV2ViS2l0OjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjp+UmVtb3RlUmVuZGVyaW5n
QmFja2VuZCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OmRpc2Nv
bm5lY3QpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjptZXNzYWdl
U2VuZGVyQ29ubmVjdGlvbiBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVJlbmRlcmlu
Z0JhY2tlbmQ6OmFwcGx5TWVkaWFJdGVtKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlUmVuZGVy
aW5nQmFja2VuZDo6Y3JlYXRlSW1hZ2VCdWZmZXIpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVS
ZW5kZXJpbmdCYWNrZW5kOjp3YWtlVXBBbmRBcHBseURpc3BsYXlMaXN0KToKKyAgICAgICAgKFdl
YktpdDo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6Z2V0SW1hZ2VEYXRhKToKKyAgICAgICAgKFdl
YktpdDo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6Z2V0RGF0YVVSTEZvckltYWdlQnVmZmVyKToK
KyAgICAgICAgKFdlYktpdDo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6Z2V0RGF0YUZvckltYWdl
QnVmZmVyKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6Z2V0QkdS
QURhdGFGb3JJbWFnZUJ1ZmZlcik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVJlbmRlcmluZ0Jh
Y2tlbmQ6OmNhY2hlTmF0aXZlSW1hZ2UpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVSZW5kZXJp
bmdCYWNrZW5kOjpjYWNoZUZvbnQpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVSZW5kZXJpbmdC
YWNrZW5kOjpkZWxldGVBbGxGb250cyk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVJlbmRlcmlu
Z0JhY2tlbmQ6OnJlbGVhc2VSZW1vdGVSZXNvdXJjZSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90
ZVJlbmRlcmluZ0JhY2tlbmQ6OmRpZENyZWF0ZVNoYXJlZERpc3BsYXlMaXN0SGFuZGxlKToKKyAg
ICAgICAgKiBHUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQuaDoKKyAg
ICAgICAgKiBHUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQubWVzc2Fn
ZXMuaW46CisgICAgICAgICogR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVMZWdhY3lDRE1Qcm94eS5j
cHA6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUxlZ2FjeUNETVByb3h5OjpjZG1NZWRpYVBsYXll
ciBjb25zdCk6CisgICAgICAgICogR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVBsYXllck1h
bmFnZXJQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZU1lZGlhUGxheWVyTWFuYWdl
clByb3h5OjpjcmVhdGVNZWRpYVBsYXllcik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZU1lZGlh
UGxheWVyTWFuYWdlclByb3h5OjpkZWxldGVNZWRpYVBsYXllcik6CisgICAgICAgIChXZWJLaXQ6
OlJlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5OjpkaWRSZWNlaXZlUGxheWVyTWVzc2FnZSk6
CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5OjpkaWRSZWNl
aXZlU3luY1BsYXllck1lc3NhZ2UpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVNZWRpYVBsYXll
ck1hbmFnZXJQcm94eTo6bWVkaWFQbGF5ZXIpOgorICAgICAgICAqIEdQVVByb2Nlc3MvbWVkaWEv
UmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHkuaDoKKyAgICAgICAgKiBQbGF0Zm9ybS9TaGFy
ZWRNZW1vcnkuaDoKKyAgICAgICAgKiBTaGFyZWQvU2hhcmVhYmxlQml0bWFwLmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6U2hhcmVhYmxlQml0bWFwOjpTaGFyZWFibGVCaXRtYXApOgorICAgICAgICAo
V2ViS2l0OjpTaGFyZWFibGVCaXRtYXA6On5TaGFyZWFibGVCaXRtYXApOgorICAgICAgICAqIFNo
YXJlZC9TaGFyZWFibGVCaXRtYXAuaDoKKyAgICAgICAgKiBTaGFyZWQvY2cvU2hhcmVhYmxlQml0
bWFwQ0cuY3BwOgorICAgICAgICAoV2ViS2l0OjpTaGFyZWFibGVCaXRtYXA6OmNyZWF0ZUdyYXBo
aWNzQ29udGV4dCk6CisgICAgICAgIChXZWJLaXQ6OlNoYXJlYWJsZUJpdG1hcDo6cmVsZWFzZUJp
dG1hcENvbnRleHREYXRhKToKKyAgICAgICAgKFdlYktpdDo6U2hhcmVhYmxlQml0bWFwOjpyZWxl
YXNlRGF0YVByb3ZpZGVyRGF0YSk6CisKIDIwMjEtMDEtMTUgIEFsZXggQ2hyaXN0ZW5zZW4gIDxh
Y2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KIAogICAgICAgICBSZW1vdmUgbm9uLWluY2x1c2l2ZWx5
IG5hbWVkIFdLQnJvd3NpbmdDb250ZXh0R3JvdXAgU1BJCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RG
L3d0Zi9UaW55TFJVQ2FjaGUuaCBiL1NvdXJjZS9XVEYvd3RmL1RpbnlMUlVDYWNoZS5oCmluZGV4
IGQ4YmM3YjgxMzExOTllMDNhMWZkODdhNjRmNTcxNDI3OGYzODM5N2MuLjkwM2U1YmJhNzM4MWQ4
MzRlNzMzNGQ5MWNmYmE5YWU0ODcxMDUxMmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL1Rp
bnlMUlVDYWNoZS5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL1RpbnlMUlVDYWNoZS5oCkBAIC0zNSw2
ICszNSw3IEBAIHN0cnVjdCBUaW55TFJVQ2FjaGVQb2xpY3kgewogICAgIHN0YXRpYyBib29sIGlz
S2V5TnVsbChjb25zdCBLZXlUeXBlJikgeyByZXR1cm4gZmFsc2U7IH0KICAgICBzdGF0aWMgVmFs
dWVUeXBlIGNyZWF0ZVZhbHVlRm9yTnVsbEtleSgpIHsgcmV0dXJuIHsgfTsgfQogICAgIHN0YXRp
YyBWYWx1ZVR5cGUgY3JlYXRlVmFsdWVGb3JLZXkoY29uc3QgS2V5VHlwZSYpIHsgcmV0dXJuIHsg
fTsgfQorICAgIHN0YXRpYyBLZXlUeXBlIGNyZWF0ZUtleUZvclN0b3JhZ2UoY29uc3QgS2V5VHlw
ZSYga2V5KSB7IHJldHVybiBrZXk7IH0KIH07CiAKIHRlbXBsYXRlPHR5cGVuYW1lIEtleVR5cGUs
IHR5cGVuYW1lIFZhbHVlVHlwZSwgc2l6ZV90IGNhcGFjaXR5ID0gNCwgdHlwZW5hbWUgUG9saWN5
ID0gVGlueUxSVUNhY2hlUG9saWN5PEtleVR5cGUsIFZhbHVlVHlwZT4+CkBAIC02Niw3ICs2Nyw3
IEBAIHB1YmxpYzoKICAgICAgICAgaWYgKG1fY2FjaGUuc2l6ZSgpID09IGNhcGFjaXR5KQogICAg
ICAgICAgICAgbV9jYWNoZS5yZW1vdmUoMCk7CiAKLSAgICAgICAgbV9jYWNoZS5hcHBlbmQoc3Rk
OjptYWtlX3BhaXIoa2V5LCBQb2xpY3k6OmNyZWF0ZVZhbHVlRm9yS2V5KGtleSkpKTsKKyAgICAg
ICAgbV9jYWNoZS5hcHBlbmQoc3RkOjptYWtlX3BhaXIoUG9saWN5OjpjcmVhdGVLZXlGb3JTdG9y
YWdlKGtleSksIFBvbGljeTo6Y3JlYXRlVmFsdWVGb3JLZXkoa2V5KSkpOwogICAgICAgICByZXR1
cm4gbV9jYWNoZS5sYXN0KCkuc2Vjb25kOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyLmgKaW5kZXggNDI1YTMyZWE0NDljMGVkNTIyNmNj
NTg5N2Q5Y2MxNmI3ODYyMGZkYi4uMzZkNzRjYTM5ZGUxN2NkMDNjMTNiYjc1ZTRkNWUzODQ4YzMz
ZWNmZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VC
dWZmZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZl
ci5oCkBAIC00Miw3ICs0Miw3IEBAIGNsYXNzIERyYXdpbmdDb250ZXh0Owogc3RydWN0IEl0ZW1C
dWZmZXJIYW5kbGU7CiB9CiAKLWNsYXNzIEltYWdlQnVmZmVyIDogcHVibGljIFJlZkNvdW50ZWQ8
SW1hZ2VCdWZmZXI+LCBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8SW1hZ2VCdWZmZXI+IHsKK2NsYXNz
IEltYWdlQnVmZmVyIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPEltYWdlQnVmZmVyPiwg
cHVibGljIENhbk1ha2VXZWFrUHRyPEltYWdlQnVmZmVyPiB7CiBwdWJsaWM6CiAgICAgLy8gV2ls
bCByZXR1cm4gYSBudWxsIHBvaW50ZXIgb24gYWxsb2NhdGlvbiBmYWlsdXJlLgogICAgIFdFQkNP
UkVfRVhQT1JUIHN0YXRpYyBSZWZQdHI8SW1hZ2VCdWZmZXI+IGNyZWF0ZShjb25zdCBGbG9hdFNp
emUmLCBSZW5kZXJpbmdNb2RlLCBTaG91bGRVc2VEaXNwbGF5TGlzdCwgUmVuZGVyaW5nUHVycG9z
ZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlID0gMSwgQ29sb3JTcGFjZSA9IENvbG9yU3BhY2U6OlNS
R0IsIFBpeGVsRm9ybWF0ID0gUGl4ZWxGb3JtYXQ6OkJHUkE4LCBjb25zdCBIb3N0V2luZG93KiA9
IG51bGxwdHIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
TWVkaWFQbGF5ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxh
eWVyLmgKaW5kZXggODdhM2VjNzFkYmFjMWQ2MzQyNzRmOWE4ZDM4NDFiYzVhZjQyZWVlNi4uMjZj
NzYzMTk4NDkyMjlmMGMxYTU0MjEyZWM5NjIxMWFlYmI0ZWJkZSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5oCkBAIC01MSw2ICs1MSw3IEBACiAj
aW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KICNpbmNsdWRlIDx3dGYvTG9nZ2VyLmg+CiAjaW5jbHVk
ZSA8d3RmL01lZGlhVGltZS5oPgorI2luY2x1ZGUgPHd0Zi9UaHJlYWRTYWZlUmVmQ291bnRlZC5o
PgogI2luY2x1ZGUgPHd0Zi9XYWxsVGltZS5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0hh
c2guaD4KIApAQCAtMjgyLDcgKzI4Myw3IEBAIHB1YmxpYzoKICNlbmRpZgogfTsKIAotY2xhc3Mg
V0VCQ09SRV9FWFBPUlQgTWVkaWFQbGF5ZXIgOiBwdWJsaWMgTWVkaWFQbGF5ZXJFbnVtcywgcHVi
bGljIFJlZkNvdW50ZWQ8TWVkaWFQbGF5ZXI+IHsKK2NsYXNzIFdFQkNPUkVfRVhQT1JUIE1lZGlh
UGxheWVyIDogcHVibGljIE1lZGlhUGxheWVyRW51bXMsIHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291
bnRlZDxNZWRpYVBsYXllciwgV1RGOjpEZXN0cnVjdGlvblRocmVhZDo6TWFpbj4gewogICAgIFdU
Rl9NQUtFX05PTkNPUFlBQkxFKE1lZGlhUGxheWVyKTsgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7
CiBwdWJsaWM6CiAgICAgc3RhdGljIFJlZjxNZWRpYVBsYXllcj4gY3JlYXRlKE1lZGlhUGxheWVy
Q2xpZW50Jik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9T
aGFkb3dCbHVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1NoYWRvd0Js
dXIuY3BwCmluZGV4IDgzMzg5YmE2ODA1NjM3N2Y5OWYwZjVhMWNkMzA3YmY2Y2Y5MWQ4MmEuLmFj
MTQ2ZDk5NTcwOTViMjdmYmQ3ODA3MTFlYzhiOTA3MjVhMmZiZWYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1NoYWRvd0JsdXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1NoYWRvd0JsdXIuY3BwCkBAIC0zNiw5ICszNiwxMSBA
QAogI2luY2x1ZGUgIkltYWdlQnVmZmVyLmgiCiAjaW5jbHVkZSAiSW1hZ2VEYXRhLmgiCiAjaW5j
bHVkZSAiVGltZXIuaCIKKyNpbmNsdWRlIDx3dGYvTG9jay5oPgogI2luY2x1ZGUgPHd0Zi9NYXRo
RXh0cmFzLmg+CiAjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CiAjaW5jbHVkZSA8d3Rm
L05vbmNvcHlhYmxlLmg+CisjaW5jbHVkZSA8d3RmL1J1bkxvb3AuaD4KICNpbmNsdWRlIDx3dGYv
U2NvcGUuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtNjEsMjMgKzYzLDIxIEBAIGNsYXNz
IFNjcmF0Y2hCdWZmZXIgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgog
ICAgIFNjcmF0Y2hCdWZmZXIoKQotICAgICAgICA6IG1fcHVyZ2VUaW1lcigqdGhpcywgJlNjcmF0
Y2hCdWZmZXI6OmNsZWFyU2NyYXRjaEJ1ZmZlcikKLSAgICAgICAgLCBtX2xhc3RXYXNJbnNldChm
YWxzZSkKLSNpZiBBU1NFUlRfRU5BQkxFRAotICAgICAgICAsIG1fYnVmZmVySW5Vc2UoZmFsc2Up
Ci0jZW5kaWYKKyAgICAgICAgOiBtX3B1cmdlVGltZXIoUnVuTG9vcDo6bWFpbigpLCB0aGlzLCAm
U2NyYXRjaEJ1ZmZlcjo6cHVyZ2VUaW1lckZpcmVkKQogICAgIHsKICAgICB9CiAKLSAgICBJbWFn
ZUJ1ZmZlciogZ2V0U2NyYXRjaEJ1ZmZlcihjb25zdCBJbnRTaXplJiBzaXplKQorICAgIFJlZlB0
cjxJbWFnZUJ1ZmZlcj4gZ2V0U2NyYXRjaEJ1ZmZlcihjb25zdCBJbnRTaXplJiBzaXplKQogICAg
IHsKLSAgICAgICAgQVNTRVJUKCFtX2J1ZmZlckluVXNlKTsKLSNpZiBBU1NFUlRfRU5BQkxFRAot
ICAgICAgICBtX2J1ZmZlckluVXNlID0gdHJ1ZTsKLSNlbmRpZgorICAgICAgICBBU1NFUlQobG9j
aygpLmlzSGVsZCgpKTsKKyAgICAgICAgYXV0byByZWxlYXNlTGF5ZXJJbWFnZSA9IG1ha2VTY29w
ZUV4aXQoW3RoaXNdIHsKKyAgICAgICAgICAgIGlmIChtX2ltYWdlQnVmZmVyKQorICAgICAgICAg
ICAgICAgIHNjaGVkdWxlU2NyYXRjaEJ1ZmZlclB1cmdlKCk7CisgICAgICAgIH0pOworCiAgICAg
ICAgIC8vIFdlIGRvIG5vdCBuZWVkIHRvIHJlY3JlYXRlIHRoZSBidWZmZXIgaWYgdGhlIGN1cnJl
bnQgYnVmZmVyIGlzIGxhcmdlIGVub3VnaC4KICAgICAgICAgaWYgKG1faW1hZ2VCdWZmZXIgJiYg
bV9pbWFnZUJ1ZmZlci0+bG9naWNhbFNpemUoKS53aWR0aCgpID49IHNpemUud2lkdGgoKSAmJiBt
X2ltYWdlQnVmZmVyLT5sb2dpY2FsU2l6ZSgpLmhlaWdodCgpID49IHNpemUuaGVpZ2h0KCkpCi0g
ICAgICAgICAgICByZXR1cm4gbV9pbWFnZUJ1ZmZlci5nZXQoKTsKKyAgICAgICAgICAgIHJldHVy
biBtX2ltYWdlQnVmZmVyOwogCiAgICAgICAgIC8vIFJvdW5kIHRvIHRoZSBuZWFyZXN0IDMyIHBp
eGVscyBzbyB3ZSBkbyBub3QgZ3JvdyB0aGUgYnVmZmVyIGZvciBzaW1pbGFyIHNpemVkIHJlcXVl
c3RzLgogICAgICAgICBJbnRTaXplIHJvdW5kZWRTaXplKHJvdW5kVXBUb011bHRpcGxlT2YzMihz
aXplLndpZHRoKCkpLCByb3VuZFVwVG9NdWx0aXBsZU9mMzIoc2l6ZS5oZWlnaHQoKSkpOwpAQCAt
ODYsMTEgKzg2LDEyIEBAIHB1YmxpYzoKIAogICAgICAgICAvLyBTaGFkb3dCbHVyIGlzIG5vdCB1
c2VkIHdpdGggYWNjZWxlcmF0ZWQgZHJhd2luZywgc28gaXQncyBPSyB0byBtYWtlIGFuIHVuY29u
ZGl0aW9uYWxseSB1bmFjY2VsZXJhdGVkIGJ1ZmZlci4KICAgICAgICAgbV9pbWFnZUJ1ZmZlciA9
IEltYWdlQnVmZmVyOjpjcmVhdGUocm91bmRlZFNpemUsIFJlbmRlcmluZ01vZGU6OlVuYWNjZWxl
cmF0ZWQsIDEpOwotICAgICAgICByZXR1cm4gbV9pbWFnZUJ1ZmZlci5nZXQoKTsKKyAgICAgICAg
cmV0dXJuIG1faW1hZ2VCdWZmZXI7CiAgICAgfQogCiAgICAgYm9vbCBzZXRDYWNoZWRTaGFkb3dW
YWx1ZXMoY29uc3QgRmxvYXRTaXplJiByYWRpdXMsIGNvbnN0IENvbG9yJiBjb2xvciwgY29uc3Qg
RmxvYXRSZWN0JiBzaGFkb3dSZWN0LCBjb25zdCBGbG9hdFJvdW5kZWRSZWN0OjpSYWRpaSYgcmFk
aWksIGNvbnN0IEZsb2F0U2l6ZSYgbGF5ZXJTaXplKQogICAgIHsKKyAgICAgICAgQVNTRVJUKGxv
Y2soKS5pc0hlbGQoKSk7CiAgICAgICAgIGlmICghbV9sYXN0V2FzSW5zZXQgJiYgbV9sYXN0UmFk
aXVzID09IHJhZGl1cyAmJiBtX2xhc3RDb2xvciA9PSBjb2xvciAmJiBtX2xhc3RTaGFkb3dSZWN0
ID09IHNoYWRvd1JlY3QgJiYgIG1fbGFzdFJhZGlpID09IHJhZGlpICYmIG1fbGFzdExheWVyU2l6
ZSA9PSBsYXllclNpemUpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAKQEAgLTEwNiw2ICsx
MDcsNyBAQCBwdWJsaWM6CiAKICAgICBib29sIHNldENhY2hlZEluc2V0U2hhZG93VmFsdWVzKGNv
bnN0IEZsb2F0U2l6ZSYgcmFkaXVzLCBjb25zdCBDb2xvciYgY29sb3IsIGNvbnN0IEZsb2F0UmVj
dCYgYm91bmRzLCBjb25zdCBGbG9hdFJlY3QmIHNoYWRvd1JlY3QsIGNvbnN0IEZsb2F0Um91bmRl
ZFJlY3Q6OlJhZGlpJiByYWRpaSkKICAgICB7CisgICAgICAgIEFTU0VSVChsb2NrKCkuaXNIZWxk
KCkpOwogICAgICAgICBpZiAobV9sYXN0V2FzSW5zZXQgJiYgbV9sYXN0UmFkaXVzID09IHJhZGl1
cyAmJiBtX2xhc3RDb2xvciA9PSBjb2xvciAmJiBtX2xhc3RJbnNldEJvdW5kcyA9PSBib3VuZHMg
JiYgc2hhZG93UmVjdCA9PSBtX2xhc3RTaGFkb3dSZWN0ICYmIHJhZGlpID09IG1fbGFzdFJhZGlp
KQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogCkBAIC0xMTksNTAgKzEyMSw1NyBAQCBwdWJs
aWM6CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KIAorICAgIHN0YXRpYyBTY3JhdGNoQnVm
ZmVyJiBzaW5nbGV0b24oKTsKKyAgICBzdGF0aWMgTG9jayYgbG9jaygpOworCitwcml2YXRlOgog
ICAgIHZvaWQgc2NoZWR1bGVTY3JhdGNoQnVmZmVyUHVyZ2UoKQogICAgIHsKLSNpZiBBU1NFUlRf
RU5BQkxFRAotICAgICAgICBtX2J1ZmZlckluVXNlID0gZmFsc2U7Ci0jZW5kaWYKLSAgICAgICAg
aWYgKG1fcHVyZ2VUaW1lci5pc0FjdGl2ZSgpKQotICAgICAgICAgICAgbV9wdXJnZVRpbWVyLnN0
b3AoKTsKLQorICAgICAgICBBU1NFUlQobG9jaygpLmlzSGVsZCgpKTsKICAgICAgICAgY29uc3Qg
U2Vjb25kcyBzY3JhdGNoQnVmZmVyUHVyZ2VJbnRlcnZhbCB7IDJfcyB9OwogICAgICAgICBtX3B1
cmdlVGltZXIuc3RhcnRPbmVTaG90KHNjcmF0Y2hCdWZmZXJQdXJnZUludGVydmFsKTsKICAgICB9
CiAKLSAgICBzdGF0aWMgU2NyYXRjaEJ1ZmZlciYgc2luZ2xldG9uKCk7CisgICAgdm9pZCBwdXJn
ZVRpbWVyRmlyZWQoKQorICAgIHsKKyAgICAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKyAg
ICAgICAgaWYgKGF1dG8gbG9ja2VyID0gdHJ5SG9sZExvY2sobG9jaygpKSkKKyAgICAgICAgICAg
IGNsZWFyU2NyYXRjaEJ1ZmZlcigpOworICAgIH0KIAotcHJpdmF0ZToKICAgICB2b2lkIGNsZWFy
U2NyYXRjaEJ1ZmZlcigpCiAgICAgeworICAgICAgICBBU1NFUlQobG9jaygpLmlzSGVsZCgpKTsK
ICAgICAgICAgbV9pbWFnZUJ1ZmZlciA9IG51bGxwdHI7CiAgICAgICAgIG1fbGFzdFJhZGl1cyA9
IEZsb2F0U2l6ZSgpOwogICAgICAgICBtX2xhc3RMYXllclNpemUgPSBGbG9hdFNpemUoKTsKICAg
ICB9CiAKICAgICBSZWZQdHI8SW1hZ2VCdWZmZXI+IG1faW1hZ2VCdWZmZXI7Ci0gICAgVGltZXIg
bV9wdXJnZVRpbWVyOworICAgIFJ1bkxvb3A6OlRpbWVyPFNjcmF0Y2hCdWZmZXI+IG1fcHVyZ2VU
aW1lcjsKIAogICAgIEZsb2F0UmVjdCBtX2xhc3RJbnNldEJvdW5kczsKICAgICBGbG9hdFJlY3Qg
bV9sYXN0U2hhZG93UmVjdDsKICAgICBGbG9hdFJvdW5kZWRSZWN0OjpSYWRpaSBtX2xhc3RSYWRp
aTsKICAgICBDb2xvciBtX2xhc3RDb2xvcjsKICAgICBGbG9hdFNpemUgbV9sYXN0UmFkaXVzOwot
ICAgIGJvb2wgbV9sYXN0V2FzSW5zZXQ7CisgICAgYm9vbCBtX2xhc3RXYXNJbnNldCB7IGZhbHNl
IH07CiAgICAgRmxvYXRTaXplIG1fbGFzdExheWVyU2l6ZTsKLQotI2lmIEFTU0VSVF9FTkFCTEVE
Ci0gICAgYm9vbCBtX2J1ZmZlckluVXNlOwotI2VuZGlmCiB9OwogCiBTY3JhdGNoQnVmZmVyJiBT
Y3JhdGNoQnVmZmVyOjpzaW5nbGV0b24oKQogeworICAgIEFTU0VSVChsb2NrKCkuaXNIZWxkKCkp
OwogICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxTY3JhdGNoQnVmZmVyPiBzY3JhdGNoQnVmZmVy
OwogICAgIHJldHVybiBzY3JhdGNoQnVmZmVyOwogfQogCitMb2NrJiBTY3JhdGNoQnVmZmVyOjps
b2NrKCkKK3sKKyAgICBzdGF0aWMgTG9jayBsb2NrOworICAgIHJldHVybiBsb2NrOworfQorCiBz
dGF0aWMgZmxvYXQgcmFkaXVzVG9MZWdhY3lSYWRpdXMoZmxvYXQgcmFkaXVzKQogewogICAgIHJl
dHVybiByYWRpdXMgPiA4ID8gOCArIDQgKiBzcXJ0KChyYWRpdXMgLSA4KSAvIDIpIDogcmFkaXVz
OwpAQCAtNjgzLDI2ICs2OTIsMzIgQEAgdm9pZCBTaGFkb3dCbHVyOjpkcmF3SW5zZXRTaGFkb3dX
aXRob3V0VGlsaW5nKGNvbnN0IEFmZmluZVRyYW5zZm9ybSYsIGNvbnN0IEZsb2EKIAogdm9pZCBT
aGFkb3dCbHVyOjpkcmF3UmVjdFNoYWRvd1dpdGhUaWxpbmcoY29uc3QgQWZmaW5lVHJhbnNmb3Jt
JiB0cmFuc2Zvcm0sIGNvbnN0IEZsb2F0Um91bmRlZFJlY3QmIHNoYWRvd2VkUmVjdCwgY29uc3Qg
SW50U2l6ZSYgdGVtcGxhdGVTaXplLCBjb25zdCBJbnRTaXplJiBlZGdlU2l6ZSwgY29uc3QgRHJh
d0ltYWdlQ2FsbGJhY2smIGRyYXdJbWFnZSwgY29uc3QgRmlsbFJlY3RDYWxsYmFjayYgZmlsbFJl
Y3QsIGNvbnN0IExheWVySW1hZ2VQcm9wZXJ0aWVzJiBsYXllckltYWdlUHJvcGVydGllcykKIHsK
KyAgICBSZWZQdHI8SW1hZ2VCdWZmZXI+IGxheWVySW1hZ2VCdWZmZXI7CiAjaWYgVVNFKENHKQot
ICAgIGF1dG8qIGxheWVySW1hZ2UgPSBTY3JhdGNoQnVmZmVyOjpzaW5nbGV0b24oKS5nZXRTY3Jh
dGNoQnVmZmVyKHRlbXBsYXRlU2l6ZSk7Ci0gICAgYXV0byByZWxlYXNlTGF5ZXJJbWFnZSA9IG1h
a2VTY29wZUV4aXQoW10gewotICAgICAgICBTY3JhdGNoQnVmZmVyOjpzaW5nbGV0b24oKS5zY2hl
ZHVsZVNjcmF0Y2hCdWZmZXJQdXJnZSgpOwotICAgIH0pOworICAgIGF1dG8gbG9ja2VyID0gdHJ5
SG9sZExvY2soU2NyYXRjaEJ1ZmZlcjo6bG9jaygpKTsKKyAgICBpZiAobG9ja2VyKSB7CisgICAg
ICAgIGxheWVySW1hZ2VCdWZmZXIgPSBTY3JhdGNoQnVmZmVyOjpzaW5nbGV0b24oKS5nZXRTY3Jh
dGNoQnVmZmVyKHRlbXBsYXRlU2l6ZSk7CisgICAgICAgIGlmICghbGF5ZXJJbWFnZUJ1ZmZlcikK
KyAgICAgICAgICAgIHJldHVybjsKKyAgICB9CiAjZWxzZQogICAgIFVOVVNFRF9QQVJBTShsYXll
ckltYWdlUHJvcGVydGllcyk7Ci0gICAgYXV0byBsYXllckltYWdlQnVmZmVyID0gSW1hZ2VCdWZm
ZXI6OmNyZWF0ZSh0ZW1wbGF0ZVNpemUsIFJlbmRlcmluZ01vZGU6OlVuYWNjZWxlcmF0ZWQsIDEp
OwotICAgIGF1dG8qIGxheWVySW1hZ2UgPSBsYXllckltYWdlQnVmZmVyLmdldCgpOwogI2VuZGlm
CiAKLSAgICBpZiAoIWxheWVySW1hZ2UpCi0gICAgICAgIHJldHVybjsKKyAgICBpZiAoIWxheWVy
SW1hZ2VCdWZmZXIpIHsKKyAgICAgICAgbGF5ZXJJbWFnZUJ1ZmZlciA9IEltYWdlQnVmZmVyOjpj
cmVhdGUodGVtcGxhdGVTaXplLCBSZW5kZXJpbmdNb2RlOjpVbmFjY2VsZXJhdGVkLCAxKTsKKyAg
ICAgICAgaWYgKCFsYXllckltYWdlQnVmZmVyKQorICAgICAgICAgICAgcmV0dXJuOworICAgIH0K
KyAgICBhdXRvKiBsYXllckltYWdlID0gbGF5ZXJJbWFnZUJ1ZmZlci5nZXQoKTsKIAogICAgIEZs
b2F0UmVjdCB0ZW1wbGF0ZVNoYWRvdyA9IEZsb2F0UmVjdChlZGdlU2l6ZS53aWR0aCgpLCBlZGdl
U2l6ZS5oZWlnaHQoKSwgdGVtcGxhdGVTaXplLndpZHRoKCkgLSAyICogZWRnZVNpemUud2lkdGgo
KSwgdGVtcGxhdGVTaXplLmhlaWdodCgpIC0gMiAqIGVkZ2VTaXplLmhlaWdodCgpKTsKIAogICAg
IGJvb2wgcmVkcmF3TmVlZGVkID0gdHJ1ZTsKICNpZiBVU0UoQ0cpCiAgICAgLy8gT25seSByZWRy
YXcgaW4gdGhlIHNjcmF0Y2ggYnVmZmVyIGlmIGl0cyBjYWNoZWQgY29udGVudHMgZG9uJ3QgbWF0
Y2ggb3VyIG5lZWRzCi0gICAgcmVkcmF3TmVlZGVkID0gU2NyYXRjaEJ1ZmZlcjo6c2luZ2xldG9u
KCkuc2V0Q2FjaGVkU2hhZG93VmFsdWVzKG1fYmx1clJhZGl1cywgbV9jb2xvciwgdGVtcGxhdGVT
aGFkb3csIHNoYWRvd2VkUmVjdC5yYWRpaSgpLCBsYXllckltYWdlUHJvcGVydGllcy5sYXllclNp
emUpOworICAgIGlmIChsb2NrZXIpCisgICAgICAgIHJlZHJhd05lZWRlZCA9IFNjcmF0Y2hCdWZm
ZXI6OnNpbmdsZXRvbigpLnNldENhY2hlZFNoYWRvd1ZhbHVlcyhtX2JsdXJSYWRpdXMsIG1fY29s
b3IsIHRlbXBsYXRlU2hhZG93LCBzaGFkb3dlZFJlY3QucmFkaWkoKSwgbGF5ZXJJbWFnZVByb3Bl
cnRpZXMubGF5ZXJTaXplKTsKICNlbmRpZgogCiAgICAgaWYgKHJlZHJhd05lZWRlZCkgewpAQCAt
NzM3LDE4ICs3NTIsMjIgQEAgdm9pZCBTaGFkb3dCbHVyOjpkcmF3UmVjdFNoYWRvd1dpdGhUaWxp
bmcoY29uc3QgQWZmaW5lVHJhbnNmb3JtJiB0cmFuc2Zvcm0sIGNvbnMKIAogdm9pZCBTaGFkb3dC
bHVyOjpkcmF3SW5zZXRTaGFkb3dXaXRoVGlsaW5nKGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgdHJh
bnNmb3JtLCBjb25zdCBGbG9hdFJlY3QmIGZ1bGxSZWN0LCBjb25zdCBGbG9hdFJvdW5kZWRSZWN0
JiBob2xlUmVjdCwgY29uc3QgSW50U2l6ZSYgdGVtcGxhdGVTaXplLCBjb25zdCBJbnRTaXplJiBl
ZGdlU2l6ZSwgY29uc3QgRHJhd0ltYWdlQ2FsbGJhY2smIGRyYXdJbWFnZSwgY29uc3QgRmlsbFJl
Y3RXaXRoSG9sZUNhbGxiYWNrJiBmaWxsUmVjdFdpdGhIb2xlKQogeworICAgIFJlZlB0cjxJbWFn
ZUJ1ZmZlcj4gbGF5ZXJJbWFnZUJ1ZmZlcjsKICNpZiBVU0UoQ0cpCi0gICAgYXV0byogbGF5ZXJJ
bWFnZSA9IFNjcmF0Y2hCdWZmZXI6OnNpbmdsZXRvbigpLmdldFNjcmF0Y2hCdWZmZXIodGVtcGxh
dGVTaXplKTsKLSAgICBhdXRvIHJlbGVhc2VMYXllckltYWdlID0gbWFrZVNjb3BlRXhpdChbXSB7
Ci0gICAgICAgIFNjcmF0Y2hCdWZmZXI6OnNpbmdsZXRvbigpLnNjaGVkdWxlU2NyYXRjaEJ1ZmZl
clB1cmdlKCk7Ci0gICAgfSk7Ci0jZWxzZQotICAgIGF1dG8gbGF5ZXJJbWFnZUJ1ZmZlciA9IElt
YWdlQnVmZmVyOjpjcmVhdGUodGVtcGxhdGVTaXplLCBSZW5kZXJpbmdNb2RlOjpVbmFjY2VsZXJh
dGVkLCAxKTsKLSAgICBhdXRvKiBsYXllckltYWdlID0gbGF5ZXJJbWFnZUJ1ZmZlci5nZXQoKTsK
KyAgICBhdXRvIGxvY2tlciA9IHRyeUhvbGRMb2NrKFNjcmF0Y2hCdWZmZXI6OmxvY2soKSk7Cisg
ICAgaWYgKGxvY2tlcikgeworICAgICAgICBsYXllckltYWdlQnVmZmVyID0gU2NyYXRjaEJ1ZmZl
cjo6c2luZ2xldG9uKCkuZ2V0U2NyYXRjaEJ1ZmZlcih0ZW1wbGF0ZVNpemUpOworICAgICAgICBp
ZiAoIWxheWVySW1hZ2VCdWZmZXIpCisgICAgICAgICAgICByZXR1cm47CisgICAgfQogI2VuZGlm
CiAKLSAgICBpZiAoIWxheWVySW1hZ2UpCi0gICAgICAgIHJldHVybjsKKyAgICBpZiAoIWxheWVy
SW1hZ2VCdWZmZXIpIHsKKyAgICAgICAgbGF5ZXJJbWFnZUJ1ZmZlciA9IEltYWdlQnVmZmVyOjpj
cmVhdGUodGVtcGxhdGVTaXplLCBSZW5kZXJpbmdNb2RlOjpVbmFjY2VsZXJhdGVkLCAxKTsKKyAg
ICAgICAgaWYgKCFsYXllckltYWdlQnVmZmVyKQorICAgICAgICAgICAgcmV0dXJuOworICAgIH0K
KyAgICBhdXRvKiBsYXllckltYWdlID0gbGF5ZXJJbWFnZUJ1ZmZlci5nZXQoKTsKIAogICAgIC8v
IERyYXcgdGhlIHJlY3RhbmdsZSB3aXRoIGhvbGUuCiAgICAgRmxvYXRSZWN0IHRlbXBsYXRlQm91
bmRzKDAsIDAsIHRlbXBsYXRlU2l6ZS53aWR0aCgpLCB0ZW1wbGF0ZVNpemUuaGVpZ2h0KCkpOwpA
QCAtNzU3LDcgKzc3Niw4IEBAIHZvaWQgU2hhZG93Qmx1cjo6ZHJhd0luc2V0U2hhZG93V2l0aFRp
bGluZyhjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIHRyYW5zZm9ybSwgY29uCiAgICAgYm9vbCByZWRy
YXdOZWVkZWQgPSB0cnVlOwogI2lmIFVTRShDRykKICAgICAvLyBPbmx5IHJlZHJhdyBpbiB0aGUg
c2NyYXRjaCBidWZmZXIgaWYgaXRzIGNhY2hlZCBjb250ZW50cyBkb24ndCBtYXRjaCBvdXIgbmVl
ZHMKLSAgICByZWRyYXdOZWVkZWQgPSBTY3JhdGNoQnVmZmVyOjpzaW5nbGV0b24oKS5zZXRDYWNo
ZWRJbnNldFNoYWRvd1ZhbHVlcyhtX2JsdXJSYWRpdXMsIG1fY29sb3IsIHRlbXBsYXRlQm91bmRz
LCB0ZW1wbGF0ZUhvbGUsIGhvbGVSZWN0LnJhZGlpKCkpOworICAgIGlmIChsb2NrZXIpCisgICAg
ICAgIHJlZHJhd05lZWRlZCA9IFNjcmF0Y2hCdWZmZXI6OnNpbmdsZXRvbigpLnNldENhY2hlZElu
c2V0U2hhZG93VmFsdWVzKG1fYmx1clJhZGl1cywgbV9jb2xvciwgdGVtcGxhdGVCb3VuZHMsIHRl
bXBsYXRlSG9sZSwgaG9sZVJlY3QucmFkaWkoKSk7CiAjZW5kaWYKIAogICAgIGlmIChyZWRyYXdO
ZWVkZWQpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nn
L0ltYWdlQnVmZmVyVXRpbGl0aWVzQ0cuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2cvSW1hZ2VCdWZmZXJVdGlsaXRpZXNDRy5jcHAKaW5kZXggYjM3N2YwNDgzMmM5N2E1
NjJjYzZkYTQyYTY4MDM3OWQxMTg2YTQzZi4uZjE0NmYzNTczZjFmZWY5NWQ3OTM3MGU2ZWVmNWM2
ZmIyYTc5Y2E5YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2cvSW1hZ2VCdWZmZXJVdGlsaXRpZXNDRy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJVdGlsaXRpZXNDRy5jcHAKQEAgLTY5LDEyICs2OSwx
NiBAQCBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19CRUdJTgogI2lmIFBMQVRGT1JNKE1B
QykKICAgICByZXR1cm4gVVRJRnJvbU1JTUVUeXBlKG1pbWVUeXBlKS5jcmVhdGVDRlN0cmluZygp
OwogI2Vsc2UKLSAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOyAvLyBJdCBpcyB1bmNsZWFyIGlm
IENGU1RSIGlzIHRocmVhZHNhZmUuCi0KICAgICAvLyBGSVhNRTogQWRkIFdpbmRvd3Mgc3VwcG9y
dCBmb3IgYWxsIHRoZSBzdXBwb3J0ZWQgVVRJcyB3aGVuIGEgd2F5IHRvIGNvbnZlcnQgZnJvbSBN
SU1FVHlwZSB0byBVVEkgcmVsaWFibHkgaXMgZm91bmQuCiAgICAgLy8gRm9yIG5vdywgb25seSBz
dXBwb3J0IFBORywgSlBFRywgYW5kIEdJRi4gU2VlIDxyZGFyOi8vcHJvYmxlbS82MDk1Mjg2Pi4K
LSAgICBzdGF0aWMgY29uc3QgQ0ZTdHJpbmdSZWYga1VUVHlwZVBORyA9IENGU1RSKCJwdWJsaWMu
cG5nIik7Ci0gICAgc3RhdGljIGNvbnN0IENGU3RyaW5nUmVmIGtVVFR5cGVHSUYgPSBDRlNUUigi
Y29tLmNvbXB1c2VydmUuZ2lmIik7CisgICAgc3RhdGljIENGU3RyaW5nUmVmIGtVVFR5cGVQTkc7
CisgICAgc3RhdGljIENGU3RyaW5nUmVmIGtVVFR5cGVHSUY7CisKKyAgICBzdGF0aWMgc3RkOjpv
bmNlX2ZsYWcgb25jZUtleTsKKyAgICBzdGQ6OmNhbGxfb25jZShvbmNlS2V5LCBbJl0geworICAg
ICAgICBrVVRUeXBlUE5HID0gQ0ZTVFIoInB1YmxpYy5wbmciKTsKKyAgICAgICAga1VUVHlwZUdJ
RiA9IENGU1RSKCJjb20uY29tcHVzZXJ2ZS5naWYiKTsKKyAgICB9KTsKIAogICAgIGlmIChlcXVh
bExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShtaW1lVHlwZSwgImltYWdlL3BuZyIpKQogICAgICAg
ICByZXR1cm4ga1VUVHlwZVBORzsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NnL1N1YmltYWdlQ2FjaGVXaXRoVGltZXIuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2cvU3ViaW1hZ2VDYWNoZVdpdGhUaW1lci5jcHAKaW5kZXggYjA3
MDI2ODU2ZDUzZjFiNjNhYTg4ODVmYjFlNDExMzMwMzdjZmVjMy4uZjNjNWFmN2E2ZGU1OWVlYjRj
YzQxZmY2OWUyM2FhMDUxZWRiZTVhOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2cvU3ViaW1hZ2VDYWNoZVdpdGhUaW1lci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvU3ViaW1hZ2VDYWNoZVdpdGhUaW1lci5jcHAKQEAg
LTgzLDEyICs4MywxMyBAQCBzdHJ1Y3QgU3ViaW1hZ2VDYWNoZUFkZGVyIHsKIH07CiAKIFN1Ymlt
YWdlQ2FjaGVXaXRoVGltZXI6OlN1YmltYWdlQ2FjaGVXaXRoVGltZXIoKQotICAgIDogbV90aW1l
cigqdGhpcywgJlN1YmltYWdlQ2FjaGVXaXRoVGltZXI6OnBydW5lQ2FjaGVUaW1lckZpcmVkKQor
ICAgIDogbV90aW1lcihSdW5Mb29wOjptYWluKCksIHRoaXMsICZTdWJpbWFnZUNhY2hlV2l0aFRp
bWVyOjpwcnVuZUNhY2hlVGltZXJGaXJlZCkKIHsKIH0KIAogdm9pZCBTdWJpbWFnZUNhY2hlV2l0
aFRpbWVyOjpwcnVuZUNhY2hlVGltZXJGaXJlZCgpCiB7CisgICAgYXV0byBsb2NrZXIgPSBob2xk
TG9jayhtX2xvY2spOwogICAgIHBydW5lKCk7CiAgICAgaWYgKG1fY2FjaGUuaXNFbXB0eSgpKSB7
CiAgICAgICAgIEFTU0VSVChtX2ltYWdlQ291bnRzLmlzRW1wdHkoKSk7CkBAIC0xMTUsNiArMTE2
LDcgQEAgdm9pZCBTdWJpbWFnZUNhY2hlV2l0aFRpbWVyOjpwcnVuZSgpCiAKIFJldGFpblB0cjxD
R0ltYWdlUmVmPiBTdWJpbWFnZUNhY2hlV2l0aFRpbWVyOjpzdWJpbWFnZShDR0ltYWdlUmVmIGlt
YWdlLCBjb25zdCBGbG9hdFJlY3QmIHJlY3QpCiB7CisgICAgYXV0byBsb2NrZXIgPSBob2xkTG9j
ayhtX2xvY2spOwogICAgIGlmICghbV90aW1lci5pc0FjdGl2ZSgpKQogICAgICAgICBtX3RpbWVy
LnN0YXJ0UmVwZWF0aW5nKHN1YmltYWdlQ2FjaGVQcnVuZURlbGF5KTsKIApAQCAtMTM1LDYgKzEz
Nyw3IEBAIFJldGFpblB0cjxDR0ltYWdlUmVmPiBTdWJpbWFnZUNhY2hlV2l0aFRpbWVyOjpzdWJp
bWFnZShDR0ltYWdlUmVmIGltYWdlLCBjb25zdCBGCiAKIHZvaWQgU3ViaW1hZ2VDYWNoZVdpdGhU
aW1lcjo6Y2xlYXJJbWFnZUFuZFN1YmltYWdlcyhDR0ltYWdlUmVmIGltYWdlKQogeworICAgIGF1
dG8gbG9ja2VyID0gaG9sZExvY2sobV9sb2NrKTsKICAgICBpZiAobV9pbWFnZUNvdW50cy5jb250
YWlucyhpbWFnZSkpIHsKICAgICAgICAgVmVjdG9yPFN1YmltYWdlQ2FjaGVFbnRyeT4gdG9CZVJl
bW92ZWQ7CiAgICAgICAgIGZvciAoY29uc3QgYXV0byYgZW50cnkgOiBtX2NhY2hlKSB7CkBAIC0x
NTEsMTQgKzE1NCwxNyBAQCB2b2lkIFN1YmltYWdlQ2FjaGVXaXRoVGltZXI6OmNsZWFySW1hZ2VB
bmRTdWJpbWFnZXMoQ0dJbWFnZVJlZiBpbWFnZSkKIAogdm9pZCBTdWJpbWFnZUNhY2hlV2l0aFRp
bWVyOjpjbGVhckFsbCgpCiB7CisgICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhtX2xvY2spOwog
ICAgIG1faW1hZ2VDb3VudHMuY2xlYXIoKTsKICAgICBtX2NhY2hlLmNsZWFyKCk7CiB9CiAKIFN1
YmltYWdlQ2FjaGVXaXRoVGltZXImIFN1YmltYWdlQ2FjaGVXaXRoVGltZXI6OnN1YmltYWdlQ2Fj
aGUoKQogewotICAgIGlmICghc19jYWNoZSkKKyAgICBzdGF0aWMgc3RkOjpvbmNlX2ZsYWcgb25j
ZUtleTsKKyAgICBzdGQ6OmNhbGxfb25jZShvbmNlS2V5LCBbJl0gewogICAgICAgICBzX2NhY2hl
ID0gbmV3IFN1YmltYWdlQ2FjaGVXaXRoVGltZXI7CisgICAgfSk7CiAgICAgcmV0dXJuICpzX2Nh
Y2hlOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
Zy9TdWJpbWFnZUNhY2hlV2l0aFRpbWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jZy9TdWJpbWFnZUNhY2hlV2l0aFRpbWVyLmgKaW5kZXggODI3NGJjMjQwZWQ4ZmE1ZWIx
MjQwMDBjMmIyZDhhOTI1NzhiOTI5Yi4uNWJmMDVkNGUxNDBlZTYyYjMzMjFlNGRiZWY1MWRhYzFk
MWIzNGQ5OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cv
U3ViaW1hZ2VDYWNoZVdpdGhUaW1lci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NnL1N1YmltYWdlQ2FjaGVXaXRoVGltZXIuaApAQCAtMzIsNyArMzIsOSBAQAogI2lu
Y2x1ZGUgPHd0Zi9IYXNoQ291bnRlZFNldC5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CiAj
aW5jbHVkZSA8d3RmL0hhc2hUcmFpdHMuaD4KKyNpbmNsdWRlIDx3dGYvTG9jay5oPgogI2luY2x1
ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KKyNpbmNsdWRlIDx3dGYvUnVuTG9vcC5oPgogCiAjZGVmaW5l
IENBQ0hFX1NVQklNQUdFUyAxCiAKQEAgLTk1LDkgKzk3LDEwIEBAIHByaXZhdGU6CiAgICAgdm9p
ZCBwcnVuZSgpOwogICAgIHZvaWQgY2xlYXJBbGwoKTsKIAorICAgIExvY2sgbV9sb2NrOwogICAg
IEhhc2hDb3VudGVkU2V0PENHSW1hZ2VSZWY+IG1faW1hZ2VDb3VudHM7CiAgICAgU3ViaW1hZ2VD
YWNoZUhhc2hTZXQgbV9jYWNoZTsKLSAgICBUaW1lciBtX3RpbWVyOworICAgIFJ1bkxvb3A6OlRp
bWVyPFN1YmltYWdlQ2FjaGVXaXRoVGltZXI+IG1fdGltZXI7CiAKICAgICBzdGF0aWMgU3ViaW1h
Z2VDYWNoZVdpdGhUaW1lciYgc3ViaW1hZ2VDYWNoZSgpOwogICAgIHN0YXRpYyBib29sIHN1Ymlt
YWdlQ2FjaGVFeGlzdHMoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvbWFjL1VUSVV0aWxpdGllcy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvbWFjL1VUSVV0aWxpdGllcy5tbQppbmRleCA3YTdhMzEwN2JlNzljNDgyNGNlZmUyZTBhYzNl
MzU0NjdjOWVhMTY4Li43MGI0MzkzYzYzNjM3MTk2Zjk4YzA2MzJmYWI2MTE1ZDc4YTgxYmNjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9VVElVdGlsaXRp
ZXMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvVVRJVXRpbGl0
aWVzLm1tCkBAIC0yNiw2ICsyNiw3IEBACiAjaW1wb3J0ICJjb25maWcuaCIKICNpbXBvcnQgIlVU
SVV0aWxpdGllcy5oIgogCisjaW1wb3J0IDx3dGYvTG9jay5oPgogI2ltcG9ydCA8d3RmL01haW5U
aHJlYWQuaD4KICNpbXBvcnQgPHd0Zi9UaW55TFJVQ2FjaGUuaD4KICNpbXBvcnQgPHd0Zi90ZXh0
L1N0cmluZ0hhc2guaD4KQEAgLTg0LDU3ICs4NSw1MiBAQCBBTExPV19ERVBSRUNBVEVEX0RFQ0xB
UkFUSU9OU19FTkQKICAgICByZXR1cm4gZW1wdHlTdHJpbmcoKTsKIH0KIAotc3RhdGljIFN0cmlu
ZyBVVElGcm9tVW5rbm93bk1JTUVUeXBlKGNvbnN0IFN0cmluZyYgbWltZVR5cGUpCitzdGF0aWMg
Q0ZTdHJpbmdSZWYgVVRJRnJvbVVua25vd25NSU1FVHlwZShjb25zdCBTdHJpbmcmIG1pbWVUeXBl
KQogewogICAgIHN0YXRpYyBjb25zdCBhdXRvIG1hcCA9IG1ha2VOZXZlckRlc3Ryb3llZChbXSB7
Ci0gICAgICAgIHN0cnVjdCBUeXBlRXh0ZW5zaW9uUGFpciB7Ci0gICAgICAgICAgICBBU0NJSUxp
dGVyYWwgdHlwZTsKLSAgICAgICAgICAgIEFTQ0lJTGl0ZXJhbCB1dGk7Ci0gICAgICAgIH07Ci0K
LSAgICAgICAgc3RhdGljIGNvbnN0IFR5cGVFeHRlbnNpb25QYWlyIHBhaXJzW10gPSB7Ci0gICAg
ICAgICAgICB7ICJtb2RlbC92bmQudXNkeit6aXAiX3MsICJjb20ucGl4YXIudW5pdmVyc2FsLXNj
ZW5lLWRlc2NyaXB0aW9uLW1vYmlsZSJfcyB9LAotICAgICAgICAgICAgeyAibW9kZWwvdXNkIl9z
LCAiY29tLnBpeGFyLnVuaXZlcnNhbC1zY2VuZS1kZXNjcmlwdGlvbi1tb2JpbGUiX3MgfSwKLSAg
ICAgICAgICAgIHsgIm1vZGVsL3ZuZC5waXhhci51c2QiX3MsICJjb20ucGl4YXIudW5pdmVyc2Fs
LXNjZW5lLWRlc2NyaXB0aW9uLW1vYmlsZSJfcyB9LAotICAgICAgICAgICAgeyAibW9kZWwvdm5k
LnJlYWxpdHkiX3MsICJjb20uYXBwbGUucmVhbGl0eSJfcyB9Ci0gICAgICAgIH07Ci0KLSAgICAg
ICAgSGFzaE1hcDxTdHJpbmcsIFN0cmluZywgQVNDSUlDYXNlSW5zZW5zaXRpdmVIYXNoPiBtYXA7
Ci0gICAgICAgIGZvciAoYXV0byYgcGFpciA6IHBhaXJzKQotICAgICAgICAgICAgbWFwLmFkZChw
YWlyLnR5cGUsIHBhaXIudXRpKTsKKyAgICAgICAgSGFzaE1hcDxTdHJpbmcsIENGU3RyaW5nUmVm
LCBBU0NJSUNhc2VJbnNlbnNpdGl2ZUhhc2g+IG1hcDsKKyAgICAgICAgYXV0byBwaXhhck1JTUVU
eXBlID0gQ0ZTVFIoImNvbS5waXhhci51bml2ZXJzYWwtc2NlbmUtZGVzY3JpcHRpb24tbW9iaWxl
Iik7CisgICAgICAgIG1hcC5hZGQoIm1vZGVsL3ZuZC51c2R6K3ppcCJfcywgcGl4YXJNSU1FVHlw
ZSk7CisgICAgICAgIG1hcC5hZGQoIm1vZGVsL3VzZCJfcywgcGl4YXJNSU1FVHlwZSk7CisgICAg
ICAgIG1hcC5hZGQoIm1vZGVsL3ZuZC5waXhhci51c2QiX3MsIHBpeGFyTUlNRVR5cGUpOworICAg
ICAgICBtYXAuYWRkKCJtb2RlbC92bmQudXNkeit6aXAiX3MsIENGU1RSKCJjb20uYXBwbGUucmVh
bGl0eSIpKTsKICAgICAgICAgcmV0dXJuIG1hcDsKICAgICB9KCkpOwogCisgICAgc3RhdGljIGNv
bnN0IENGU3RyaW5nUmVmIGVtcHR5Q0ZTdHJpbmcgPSBDRlNUUigiIik7CiAgICAgYXV0byBtYXBF
bnRyeSA9IG1hcC5nZXQoKS5maW5kKG1pbWVUeXBlKTsKICAgICBpZiAobWFwRW50cnkgPT0gbWFw
LmdldCgpLmVuZCgpKQotICAgICAgICByZXR1cm4gZW1wdHlTdHJpbmcoKTsKKyAgICAgICAgcmV0
dXJuIGVtcHR5Q0ZTdHJpbmc7CiAKICAgICByZXR1cm4gbWFwRW50cnktPnZhbHVlOwogfQogCi1z
dHJ1Y3QgVVRJRnJvbU1JTUVUeXBlQ2FjaGVQb2xpY3kgOiBUaW55TFJVQ2FjaGVQb2xpY3k8U3Ry
aW5nLCBTdHJpbmc+IHsKK3N0cnVjdCBVVElGcm9tTUlNRVR5cGVDYWNoZVBvbGljeSA6IFRpbnlM
UlVDYWNoZVBvbGljeTxTdHJpbmcsIFJldGFpblB0cjxDRlN0cmluZ1JlZj4+IHsKIHB1YmxpYzoK
LSAgICBzdGF0aWMgU3RyaW5nIGNyZWF0ZVZhbHVlRm9yS2V5KGNvbnN0IFN0cmluZyYgbWltZVR5
cGUpCisgICAgc3RhdGljIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gY3JlYXRlVmFsdWVGb3JLZXko
Y29uc3QgU3RyaW5nJiBtaW1lVHlwZSkKICAgICB7CiBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFU
SU9OU19CRUdJTgogICAgICAgICBhdXRvIHR5cGUgPSBhZG9wdENGKFVUVHlwZUNyZWF0ZVByZWZl
cnJlZElkZW50aWZpZXJGb3JUYWcoa1VUVGFnQ2xhc3NNSU1FVHlwZSwgbWltZVR5cGUuY3JlYXRl
Q0ZTdHJpbmcoKS5nZXQoKSwgMCkpOwogQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfRU5E
CiAgICAgICAgIGlmICh0eXBlKQotICAgICAgICAgICAgcmV0dXJuIHR5cGUuZ2V0KCk7CisgICAg
ICAgICAgICByZXR1cm4gdHlwZTsKICAgICAgICAgcmV0dXJuIFVUSUZyb21Vbmtub3duTUlNRVR5
cGUobWltZVR5cGUpOwogICAgIH0KKworICAgIHN0YXRpYyBTdHJpbmcgY3JlYXRlS2V5Rm9yU3Rv
cmFnZShjb25zdCBTdHJpbmcmIGtleSkgeyByZXR1cm4ga2V5Lmlzb2xhdGVkQ29weSgpOyB9CiB9
OwogCi1zdGF0aWMgVGlueUxSVUNhY2hlPFN0cmluZywgU3RyaW5nLCAxNiwgVVRJRnJvbU1JTUVU
eXBlQ2FjaGVQb2xpY3k+JiBjYWNoZVVUSUZyb21NaW1lVHlwZSgpCitzdGF0aWMgVGlueUxSVUNh
Y2hlPFN0cmluZywgUmV0YWluUHRyPENGU3RyaW5nUmVmPiwgMTYsIFVUSUZyb21NSU1FVHlwZUNh
Y2hlUG9saWN5PiYgY2FjaGVVVElGcm9tTWltZVR5cGUoKQogewotICAgIHN0YXRpYyBOZXZlckRl
c3Ryb3llZDxUaW55TFJVQ2FjaGU8U3RyaW5nLCBTdHJpbmcsIDE2LCBVVElGcm9tTUlNRVR5cGVD
YWNoZVBvbGljeT4+IGNhY2hlOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxUaW55TFJVQ2Fj
aGU8U3RyaW5nLCBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+LCAxNiwgVVRJRnJvbU1JTUVUeXBlQ2Fj
aGVQb2xpY3k+PiBjYWNoZTsKICAgICByZXR1cm4gY2FjaGU7CiB9CiAKIFN0cmluZyBVVElGcm9t
TUlNRVR5cGUoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSkKIHsKLSAgICBBU1NFUlQoaXNNYWluVGhy
ZWFkKCkpOwotICAgIHJldHVybiBjYWNoZVVUSUZyb21NaW1lVHlwZSgpLmdldChtaW1lVHlwZSk7
CisgICAgc3RhdGljIExvY2sgbG9jazsKKyAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKGxvY2sp
OworICAgIHJldHVybiBjYWNoZVVUSUZyb21NaW1lVHlwZSgpLmdldChtaW1lVHlwZSkuZ2V0KCk7
CiB9CiAKIGJvb2wgaXNEZWNsYXJlZFVUSShjb25zdCBTdHJpbmcmIFVUSSkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvY2YvSHlwaGVuYXRpb25DRi5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L2NmL0h5cGhlbmF0aW9uQ0YuY3BwCmluZGV4IDNkMDJm
MjhmNjg1ZDQzNzg0ZDM5NDY5NWZjYmUyNGY5ZTc2MjkxOGEuLjY2Njk2ZTRiNzQwMzU4YzI1ZjIy
Y2JiYWVkYjAxODVlNGFlNGY4M2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L3RleHQvY2YvSHlwaGVuYXRpb25DRi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
dGV4dC9jZi9IeXBoZW5hdGlvbkNGLmNwcApAQCAtNjMsNiArNjMsOCBAQCBwdWJsaWM6CiAKICAg
ICAgICAgcmV0dXJuIENGU3RyaW5nSXNIeXBoZW5hdGlvbkF2YWlsYWJsZUZvckxvY2FsZShsb2Nh
bGUuZ2V0KCkpID8gbG9jYWxlIDogbnVsbHB0cjsKICAgICB9CisKKyAgICBzdGF0aWMgQXRvbVN0
cmluZyBjcmVhdGVLZXlGb3JTdG9yYWdlKGNvbnN0IEF0b21TdHJpbmcmIGtleSkgeyByZXR1cm4g
a2V5OyB9CiB9OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0
L2h5cGhlbi9IeXBoZW5hdGlvbkxpYkh5cGhlbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS90ZXh0L2h5cGhlbi9IeXBoZW5hdGlvbkxpYkh5cGhlbi5jcHAKaW5kZXggZjMzNTlkODA3MDIy
ZjU0ODljNjhmOWFjZjgxNmE2NzA0MmE1M2Q2Mi4uN2Y3MzMwMWRhMDAzMTA3ZTkzOWRmYjg2YjM2
ODkzNTRjOWQ5NDM1MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9o
eXBoZW4vSHlwaGVuYXRpb25MaWJIeXBoZW4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL3RleHQvaHlwaGVuL0h5cGhlbmF0aW9uTGliSHlwaGVuLmNwcApAQCAtMjQxLDYgKzI0MSw4
IEBAIHB1YmxpYzoKICAgICB7CiAgICAgICAgIHJldHVybiBXZWJDb3JlOjpIeXBoZW5hdGlvbkRp
Y3Rpb25hcnk6OmNyZWF0ZShGaWxlU3lzdGVtOjpmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oZGlj
dGlvbmFyeVBhdGguc3RyaW5nKCkpKTsKICAgICB9CisKKyAgICBzdGF0aWMgQXRvbVN0cmluZyBj
cmVhdGVLZXlGb3JTdG9yYWdlKGNvbnN0IEF0b21TdHJpbmcmIGtleSkgeyByZXR1cm4ga2V5OyB9
CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXVEYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BV
UHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcCBiL1NvdXJjZS9XZWJLaXQvR1BV
UHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcAppbmRleCA0MWFlMGExMzE0OGFh
NmE2Y2M0YmJiODZiODliYmFlNjY0MDFhMTYwLi4wMzUyOWI0YjY5ODYyNzI2ZTJiNmVkYTYyMjhh
NTZhNTBjZDAwYTk1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BVQ29u
bmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQ
VUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwCkBAIC0xNjUsNiArMTY1LDcgQEAgR1BVQ29ubmVj
dGlvblRvV2ViUHJvY2Vzczo6R1BVQ29ubmVjdGlvblRvV2ViUHJvY2VzcyhHUFVQcm9jZXNzJiBn
cHVQcm9jZXNzLCBXZWIKICAgICA6IG1fY29ubmVjdGlvbihJUEM6OkNvbm5lY3Rpb246OmNyZWF0
ZVNlcnZlckNvbm5lY3Rpb24oY29ubmVjdGlvbklkZW50aWZpZXIsICp0aGlzKSkKICAgICAsIG1f
Z3B1UHJvY2VzcyhncHVQcm9jZXNzKQogICAgICwgbV93ZWJQcm9jZXNzSWRlbnRpZmllcih3ZWJQ
cm9jZXNzSWRlbnRpZmllcikKKyAgICAsIG1fcmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHko
bWFrZVVuaXF1ZTxSZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eT4oKnRoaXMpKQogICAgICwg
bV9zZXNzaW9uSUQoc2Vzc2lvbklEKQogI2lmIFBMQVRGT1JNKENPQ09BKSAmJiBVU0UoTElCV0VC
UlRDKQogICAgICwgbV9saWJXZWJSVENDb2RlY3NQcm94eShMaWJXZWJSVENDb2RlY3NQcm94eTo6
Y3JlYXRlKCp0aGlzKSkKQEAgLTIwMiw4ICsyMDMsMTIgQEAgdm9pZCBHUFVDb25uZWN0aW9uVG9X
ZWJQcm9jZXNzOjpkaWRDbG9zZShJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24pCiAgICAgfQog
I2VuZGlmCiAKKyAgICAvLyBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kIG9iamVjdHMgcmVmIHRoZWly
IEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3Mgc28gd2UgbmVlZCB0byBtYWtlIHN1cmUKKyAgICAv
LyB0byBicmVhayB0aGUgcmVmZXJlbmNlIGN5Y2xlIGJ5IGRlc3Ryb3lpbmcgdGhlbS4KKyAgICBt
X3JlbW90ZVJlbmRlcmluZ0JhY2tlbmRNYXAuY2xlYXIoKTsKKwogICAgIGdwdVByb2Nlc3MoKS5j
b25uZWN0aW9uVG9XZWJQcm9jZXNzQ2xvc2VkKGNvbm5lY3Rpb24pOwotICAgIGdwdVByb2Nlc3Mo
KS5yZW1vdmVHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzKCp0aGlzKTsKKyAgICBncHVQcm9jZXNz
KCkucmVtb3ZlR1BVQ29ubmVjdGlvblRvV2ViUHJvY2VzcygqdGhpcyk7IC8vIE1heSBkZXN0cm95
IHx0aGlzfC4KIH0KIAogTG9nZ2VyJiBHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpsb2dnZXIo
KQpAQCAtMjQwLDE0ICsyNDUsNiBAQCBSZW1vdGVNZWRpYVJlc291cmNlTWFuYWdlciYgR1BVQ29u
bmVjdGlvblRvV2ViUHJvY2Vzczo6cmVtb3RlTWVkaWFSZXNvdXJjZU1hbmFnZQogICAgIHJldHVy
biAqbV9yZW1vdGVNZWRpYVJlc291cmNlTWFuYWdlcjsKIH0KIAotUmVtb3RlTWVkaWFQbGF5ZXJN
YW5hZ2VyUHJveHkmIEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnJlbW90ZU1lZGlhUGxheWVy
TWFuYWdlclByb3h5KCkKLXsKLSAgICBpZiAoIW1fcmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJv
eHkpCi0gICAgICAgIG1fcmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHkgPSBtYWtlVW5pcXVl
PFJlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5PigqdGhpcyk7Ci0KLSAgICByZXR1cm4gKm1f
cmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHk7Ci19Ci0KICNpZiBQTEFURk9STShDT0NPQSkg
JiYgRU5BQkxFKE1FRElBX1NUUkVBTSkKIFVzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyUHJveHkmIEdQ
VUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnVzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyUHJveHkoKQog
ewpAQCAtMjkyLDcgKzI4OSw3IEBAIFJlbW90ZUF1ZGlvU2Vzc2lvblByb3h5JiBHUFVDb25uZWN0
aW9uVG9XZWJQcm9jZXNzOjphdWRpb1Nlc3Npb25Qcm94eSgpCiB2b2lkIEdQVUNvbm5lY3Rpb25U
b1dlYlByb2Nlc3M6OmNyZWF0ZVJlbmRlcmluZ0JhY2tlbmQoUmVtb3RlUmVuZGVyaW5nQmFja2Vu
ZENyZWF0aW9uUGFyYW1ldGVycyYmIHBhcmFtZXRlcnMpCiB7CiAgICAgYXV0byBhZGRSZXN1bHQg
PSBtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmRNYXAuZW5zdXJlKHBhcmFtZXRlcnMuaWRlbnRpZmll
ciwgWyZdKCkgewotICAgICAgICByZXR1cm4gUmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6Y3JlYXRl
KCp0aGlzLCBXVEZNb3ZlKHBhcmFtZXRlcnMpKTsKKyAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8
UmVtb3RlUmVuZGVyaW5nQmFja2VuZFdyYXBwZXI+KFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OmNy
ZWF0ZSgqdGhpcywgV1RGTW92ZShwYXJhbWV0ZXJzKSkpOwogICAgIH0pOwogICAgIEFTU0VSVF9V
TlVTRUQoYWRkUmVzdWx0LCBhZGRSZXN1bHQuaXNOZXdFbnRyeSk7CiB9CkBAIC0zMDMsNiArMzAw
LDE2IEBAIHZvaWQgR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6cmVsZWFzZVJlbmRlcmluZ0Jh
Y2tlbmQoUmVuZGVyaW5nQmFja2VuZElkZW50aWZpCiAgICAgQVNTRVJUX1VOVVNFRChmb3VuZCwg
Zm91bmQpOwogfQogCitHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpSZW1vdGVSZW5kZXJpbmdC
YWNrZW5kV3JhcHBlcjo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZFdyYXBwZXIoUmVmPFJlbW90ZVJl
bmRlcmluZ0JhY2tlbmQ+JiYgcmVtb3RlUmVuZGVyaW5nQmFja2VuZCkKKyAgICA6IG1fcmVtb3Rl
UmVuZGVyaW5nQmFja2VuZChXVEZNb3ZlKHJlbW90ZVJlbmRlcmluZ0JhY2tlbmQpKQoreworfQor
CitHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kV3JhcHBl
cjo6flJlbW90ZVJlbmRlcmluZ0JhY2tlbmRXcmFwcGVyKCkKK3sKKyAgICBtX3JlbW90ZVJlbmRl
cmluZ0JhY2tlbmQtPmRpc2Nvbm5lY3QoKTsKK30KKwogI2lmIEVOQUJMRShXRUJHTCkKIHZvaWQg
R1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6Y3JlYXRlR3JhcGhpY3NDb250ZXh0R0woV2ViQ29y
ZTo6R3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzIGF0dHJpYnV0ZXMsIEdyYXBoaWNzQ29udGV4
dEdMSWRlbnRpZmllciBncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpCiB7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oIGIv
U291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaAppbmRl
eCAxZjc4NTU1ZTJiNzM5OWU3MjBiNTRkOWNmYWVjYzMzOTg5NmE3MmFjLi41MWZjYzdmMDViOTk2
YzIyNjAwMDFmMTE3ZjYyZjQ3YWY3ZDJiMzA3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQ
VVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oCisrKyBiL1NvdXJjZS9XZWJLaXQv
R1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgKQEAgLTM4LDcgKzM4LDcgQEAK
ICNpbmNsdWRlIDxXZWJDb3JlL1Byb2Nlc3NJZGVudGlmaWVyLmg+CiAjaW5jbHVkZSA8cGFsL1Nl
c3Npb25JRC5oPgogI2luY2x1ZGUgPHd0Zi9Mb2dnZXIuaD4KLSNpbmNsdWRlIDx3dGYvUmVmQ291
bnRlZC5oPgorI2luY2x1ZGUgPHd0Zi9UaHJlYWRTYWZlUmVmQ291bnRlZC5oPgogCiAjaWYgRU5B
QkxFKFdFQkdMKQogI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllci5oIgpAQCAt
NjgsNyArNjgsNyBAQCBzdHJ1Y3QgUmVtb3RlQXVkaW9TZXNzaW9uQ29uZmlndXJhdGlvbjsKIHN0
cnVjdCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kQ3JlYXRpb25QYXJhbWV0ZXJzOwogCiBjbGFzcyBH
UFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzCi0gICAgOiBwdWJsaWMgUmVmQ291bnRlZDxHUFVDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzPgorICAgIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPEdQ
VUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MsIFdURjo6RGVzdHJ1Y3Rpb25UaHJlYWQ6Ok1haW4+CiAg
ICAgLCBwdWJsaWMgV2ViQ29yZTo6Tm93UGxheWluZ01hbmFnZXI6OkNsaWVudAogICAgICwgSVBD
OjpDb25uZWN0aW9uOjpDbGllbnQgewogcHVibGljOgpAQCAtMTA2LDcgKzEwNiw3IEBAIHB1Ymxp
YzoKICNpZiBFTkFCTEUoR1BVX1BST0NFU1MpCiAgICAgUmVtb3RlTWVkaWFFbmdpbmVDb25maWd1
cmF0aW9uRmFjdG9yeVByb3h5JiBtZWRpYUVuZ2luZUNvbmZpZ3VyYXRpb25GYWN0b3J5UHJveHko
KTsKICNlbmRpZgotICAgIFJlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5JiByZW1vdGVNZWRp
YVBsYXllck1hbmFnZXJQcm94eSgpOworICAgIFJlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5
JiByZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eSgpIHsgcmV0dXJuICptX3JlbW90ZU1lZGlh
UGxheWVyTWFuYWdlclByb3h5OyB9CiAKICNpZiBVU0UoQVVESU9fU0VTU0lPTikKICAgICBSZW1v
dGVBdWRpb1Nlc3Npb25Qcm94eU1hbmFnZXImIGF1ZGlvU2Vzc2lvbk1hbmFnZXIoKTsKQEAgLTE5
Miw3ICsxOTIsMTcgQEAgcHJpdmF0ZToKICAgICBib29sIG1fYWxsb3dzRGlzcGxheUNhcHR1cmUg
eyBmYWxzZSB9OwogI2VuZGlmCiAKLSAgICB1c2luZyBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kTWFw
ID0gSGFzaE1hcDxSZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllciwgc3RkOjp1bmlxdWVfcHRyPFJl
bW90ZVJlbmRlcmluZ0JhY2tlbmQ+PjsKKyAgICBjbGFzcyBSZW1vdGVSZW5kZXJpbmdCYWNrZW5k
V3JhcHBlciB7CisgICAgICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOworICAgIHB1YmxpYzoK
KyAgICAgICAgUmVtb3RlUmVuZGVyaW5nQmFja2VuZFdyYXBwZXIoUmVmPFJlbW90ZVJlbmRlcmlu
Z0JhY2tlbmQ+JiYpOworICAgICAgICB+UmVtb3RlUmVuZGVyaW5nQmFja2VuZFdyYXBwZXIoKTsK
KworICAgIHByaXZhdGU6CisgICAgICAgIFJlZjxSZW1vdGVSZW5kZXJpbmdCYWNrZW5kPiBtX3Jl
bW90ZVJlbmRlcmluZ0JhY2tlbmQ7CisgICAgfTsKKworICAgIHVzaW5nIFJlbW90ZVJlbmRlcmlu
Z0JhY2tlbmRNYXAgPSBIYXNoTWFwPFJlbmRlcmluZ0JhY2tlbmRJZGVudGlmaWVyLCBzdGQ6OnVu
aXF1ZV9wdHI8UmVtb3RlUmVuZGVyaW5nQmFja2VuZFdyYXBwZXI+PjsKICAgICBSZW1vdGVSZW5k
ZXJpbmdCYWNrZW5kTWFwIG1fcmVtb3RlUmVuZGVyaW5nQmFja2VuZE1hcDsKICNpZiBFTkFCTEUo
V0VCR0wpCiAgICAgdXNpbmcgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xNYXAgPSBIYXNoTWFwPEdy
YXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgc3RkOjp1bmlxdWVfcHRyPFJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMPj47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhp
Y3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5jcHAgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mv
Z3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5jcHAKaW5kZXggNDg3YjEzNWE4ODkyN2Qy
MjkzOTMwNzQ5MDI0ZDY1NmNjMDUwNGY1NS4uMWNiNTBlMzdiNjBhZjA0MDQ2ZjA3NmUzOTZjODI4
MTMwNTY1OTU2ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNz
L1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vz
cy9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kLmNwcApAQCAtMzgsNiArMzgsNyBAQAog
I2luY2x1ZGUgIlJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eU1lc3NhZ2VzLmgiCiAjaW5jbHVk
ZSA8d3RmL0NoZWNrZWRBcml0aG1ldGljLmg+CiAjaW5jbHVkZSA8d3RmL1N5c3RlbVRyYWNpbmcu
aD4KKyNpbmNsdWRlIDx3dGYvV29ya1F1ZXVlLmg+CiAKICNpZiBQTEFURk9STShDT0NPQSkKICNp
bmNsdWRlIDx3dGYvY29jb2EvTWFjaFNlbWFwaG9yZS5oPgpAQCAtNDYsMzggKzQ3LDQxIEBACiBu
YW1lc3BhY2UgV2ViS2l0IHsKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCi1zdGQ6OnVuaXF1
ZV9wdHI8UmVtb3RlUmVuZGVyaW5nQmFja2VuZD4gUmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6Y3Jl
YXRlKEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MmIGdwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3Ms
IFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRDcmVhdGlvblBhcmFtZXRlcnMmJiBwYXJhbWV0ZXJzKQor
UmVmPFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ+IFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OmNyZWF0
ZShHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzJiBncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLCBS
ZW1vdGVSZW5kZXJpbmdCYWNrZW5kQ3JlYXRpb25QYXJhbWV0ZXJzJiYgcGFyYW1ldGVycykKIHsK
LSAgICByZXR1cm4gc3RkOjp1bmlxdWVfcHRyPFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ+KG5ldyBS
ZW1vdGVSZW5kZXJpbmdCYWNrZW5kKGdwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MsIFdURk1vdmUo
cGFyYW1ldGVycykpKTsKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBSZW1vdGVSZW5kZXJpbmdC
YWNrZW5kKGdwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MsIFdURk1vdmUocGFyYW1ldGVycykpKTsK
IH0KIAogUmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZChHUFVD
b25uZWN0aW9uVG9XZWJQcm9jZXNzJiBncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLCBSZW1vdGVS
ZW5kZXJpbmdCYWNrZW5kQ3JlYXRpb25QYXJhbWV0ZXJzJiYgcGFyYW1ldGVycykKLSAgICA6IG1f
Z3B1Q29ubmVjdGlvblRvV2ViUHJvY2VzcyhtYWtlV2Vha1B0cihncHVDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzKSkKKyAgICA6IG1fd29ya1F1ZXVlKFdvcmtRdWV1ZTo6Y3JlYXRlKCJSZW1vdGVSZW5k
ZXJpbmdCYWNrZW5kIHdvcmsgcXVldWUiLCBXb3JrUXVldWU6OlR5cGU6OlNlcmlhbCwgV29ya1F1
ZXVlOjpRT1M6OlVzZXJJbnRlcmFjdGl2ZSkpCisgICAgLCBtX2dwdUNvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3MoZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2VzcykKICAgICAsIG1fcmVuZGVyaW5nQmFja2Vu
ZElkZW50aWZpZXIocGFyYW1ldGVycy5pZGVudGlmaWVyKQogI2lmIFBMQVRGT1JNKENPQ09BKQog
ICAgICwgbV9yZXN1bWVEaXNwbGF5TGlzdFNlbWFwaG9yZShtYWtlVW5pcXVlPE1hY2hTZW1hcGhv
cmU+KFdURk1vdmUocGFyYW1ldGVycy5zZW5kUmlnaHRGb3JSZXN1bWVEaXNwbGF5TGlzdFNlbWFw
aG9yZSkpKQogI2VuZGlmCiB7Ci0gICAgaWYgKGF1dG8qIGdwdUNvbm5lY3Rpb25Ub1dlYlByb2Nl
c3MgPSBtX2dwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuZ2V0KCkpCi0gICAgICAgIGdwdUNvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3MtPm1lc3NhZ2VSZWNlaXZlck1hcCgpLmFkZE1lc3NhZ2VSZWNlaXZl
cihNZXNzYWdlczo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6bWVzc2FnZVJlY2VpdmVyTmFtZSgp
LCBtX3JlbmRlcmluZ0JhY2tlbmRJZGVudGlmaWVyLnRvVUludDY0KCksICp0aGlzKTsKKyAgICBB
U1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOworICAgIGdwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3Mu
Y29ubmVjdGlvbigpLmFkZFdvcmtRdWV1ZU1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6UmVtb3Rl
UmVuZGVyaW5nQmFja2VuZDo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBtX3dvcmtRdWV1ZSwgdGhp
cywgbV9yZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllci50b1VJbnQ2NCgpKTsKIH0KIAogUmVtb3Rl
UmVuZGVyaW5nQmFja2VuZDo6flJlbW90ZVJlbmRlcmluZ0JhY2tlbmQoKQogewotICAgIGlmIChh
dXRvKiBncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzID0gbV9ncHVDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzLmdldCgpKQotICAgICAgICBncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLT5tZXNzYWdlUmVj
ZWl2ZXJNYXAoKS5yZW1vdmVNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OlJlbW90ZVJlbmRlcmlu
Z0JhY2tlbmQ6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgbV9yZW5kZXJpbmdCYWNrZW5kSWRlbnRp
Zmllci50b1VJbnQ2NCgpKTsKKyAgICAvLyBNYWtlIHN1cmUgd2UgZGVzdHJveSB0aGUgUmVzb3Vy
Y2VDYWNoZSBvbiB0aGUgV29ya1F1ZXVlIHNpbmNlIGl0IGdldHMgcG9wdWxhdGVkIG9uIHRoZSBX
b3JrUXVldWUuCisgICAgbV93b3JrUXVldWUtPmRpc3BhdGNoKFtyZW1vdGVSZXNvdXJjZUNhY2hl
ID0gV1RGTW92ZShtX3JlbW90ZVJlc291cmNlQ2FjaGUpXSB7IH0pOwogfQogCi1HUFVDb25uZWN0
aW9uVG9XZWJQcm9jZXNzKiBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpncHVDb25uZWN0aW9uVG9X
ZWJQcm9jZXNzKCkgY29uc3QKK3ZvaWQgUmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6ZGlzY29ubmVj
dCgpCiB7Ci0gICAgcmV0dXJuIG1fZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2Vzcy5nZXQoKTsKKyAg
ICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOworCisgICAgLy8gVGhlIFJlbW90ZVJlbmRlcmlu
Z0JhY2tlbmQgZGVzdHJ1Y3RvciB3b24ndCBiZSBjYWxsZWQgdW50aWwgZGlzY29ubmVjdCgpIGlz
IGNhbGxlZCBhbmQgd2UgdW5yZWdpc3RlciBvdXJzZWx2ZXMgYXMgYSBXb3JrUXVldWVNZXNzYWdl
UmVjZWl2ZXIgYmVjYXVzZQorICAgIC8vIHRoZSBJUEM6OkNvbm5lY3Rpb24gcmVmcyBpdHMgV29y
a1F1ZXVlTWVzc2FnZVJlY2VpdmVycy4KKyAgICBtX2dwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3Mt
PmNvbm5lY3Rpb24oKS5yZW1vdmVXb3JrUXVldWVNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OlJl
bW90ZVJlbmRlcmluZ0JhY2tlbmQ6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgbV9yZW5kZXJpbmdC
YWNrZW5kSWRlbnRpZmllci50b1VJbnQ2NCgpKTsKIH0KIAogSVBDOjpDb25uZWN0aW9uKiBSZW1v
dGVSZW5kZXJpbmdCYWNrZW5kOjptZXNzYWdlU2VuZGVyQ29ubmVjdGlvbigpIGNvbnN0CiB7Ci0g
ICAgaWYgKGF1dG8qIGdwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MgPSBtX2dwdUNvbm5lY3Rpb25U
b1dlYlByb2Nlc3MuZ2V0KCkpCi0gICAgICAgIHJldHVybiAmZ3B1Q29ubmVjdGlvblRvV2ViUHJv
Y2Vzcy0+Y29ubmVjdGlvbigpOwotICAgIHJldHVybiBudWxscHRyOworICAgIHJldHVybiAmbV9n
cHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLT5jb25uZWN0aW9uKCk7CiB9CiAKIHVpbnQ2NF90IFJl
bW90ZVJlbmRlcmluZ0JhY2tlbmQ6Om1lc3NhZ2VTZW5kZXJEZXN0aW5hdGlvbklEKCkgY29uc3QK
QEAgLTg3LDE5ICs5MSwxMyBAQCB1aW50NjRfdCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjptZXNz
YWdlU2VuZGVyRGVzdGluYXRpb25JRCgpIGNvbnN0CiAKIGJvb2wgUmVtb3RlUmVuZGVyaW5nQmFj
a2VuZDo6YXBwbHlNZWRpYUl0ZW0oRGlzcGxheUxpc3Q6Okl0ZW1IYW5kbGUgaXRlbSwgR3JhcGhp
Y3NDb250ZXh0JiBjb250ZXh0KQogeworICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOwor
CiAgICAgaWYgKCFpdGVtLmlzPERpc3BsYXlMaXN0OjpQYWludEZyYW1lRm9yTWVkaWE+KCkpCiAg
ICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIGF1dG8mIG1lZGlhSXRlbSA9IGl0ZW0uZ2V0PERp
c3BsYXlMaXN0OjpQYWludEZyYW1lRm9yTWVkaWE+KCk7Ci0gICAgYXV0byBwcm9jZXNzID0gZ3B1
Q29ubmVjdGlvblRvV2ViUHJvY2VzcygpOwotICAgIGlmICghcHJvY2VzcykKLSAgICAgICAgcmV0
dXJuIGZhbHNlOwotCi0gICAgYXV0byBwbGF5ZXJQcm94eSA9IHByb2Nlc3MtPnJlbW90ZU1lZGlh
UGxheWVyTWFuYWdlclByb3h5KCkuZ2V0UHJveHkobWVkaWFJdGVtLmlkZW50aWZpZXIoKSk7Ci0g
ICAgaWYgKCFwbGF5ZXJQcm94eSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgYXV0byBw
bGF5ZXIgPSBwbGF5ZXJQcm94eS0+bWVkaWFQbGF5ZXIoKTsKKyAgICBhdXRvIHBsYXllciA9IG1f
Z3B1Q29ubmVjdGlvblRvV2ViUHJvY2Vzcy0+cmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHko
KS5tZWRpYVBsYXllcihtZWRpYUl0ZW0uaWRlbnRpZmllcigpKTsKICAgICBpZiAoIXBsYXllcikK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogCkBAIC0xMTksNiArMTE3LDcgQEAgdm9pZCBSZW1vdGVS
ZW5kZXJpbmdCYWNrZW5kOjpkaWRGbHVzaChEaXNwbGF5TGlzdDo6Rmx1c2hJZGVudGlmaWVyIGZs
dXNoSWRlbnRpZmkKIAogdm9pZCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpjcmVhdGVJbWFnZUJ1
ZmZlcihjb25zdCBGbG9hdFNpemUmIGxvZ2ljYWxTaXplLCBSZW5kZXJpbmdNb2RlIHJlbmRlcmlu
Z01vZGUsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwgQ29sb3JTcGFjZSBjb2xvclNwYWNlLCBQaXhl
bEZvcm1hdCBwaXhlbEZvcm1hdCwgUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyIHJlbmRlcmlu
Z1Jlc291cmNlSWRlbnRpZmllcikKIHsKKyAgICBBU1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsK
ICAgICBBU1NFUlQocmVuZGVyaW5nTW9kZSA9PSBSZW5kZXJpbmdNb2RlOjpBY2NlbGVyYXRlZCB8
fCByZW5kZXJpbmdNb2RlID09IFJlbmRlcmluZ01vZGU6OlVuYWNjZWxlcmF0ZWQpOwogCiAgICAg
UmVmUHRyPEltYWdlQnVmZmVyPiBpbWFnZUJ1ZmZlcjsKQEAgLTI2OSw2ICsyNjgsOCBAQCBSZWZQ
dHI8SW1hZ2VCdWZmZXI+IFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6Om5leHREZXN0aW5hdGlvbklt
YWdlQnVmZmVyQWZ0ZXJBcHBseQogCiB2b2lkIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6Ondha2VV
cEFuZEFwcGx5RGlzcGxheUxpc3QoY29uc3QgR1BVUHJvY2Vzc1dha2V1cE1lc3NhZ2VBcmd1bWVu
dHMmIGFyZ3VtZW50cykKIHsKKyAgICBBU1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsKKwogICAg
IFRyYWNlU2NvcGUgdHJhY2luZ1Njb3BlKFdha2VVcEFuZEFwcGx5RGlzcGxheUxpc3RTdGFydCwg
V2FrZVVwQW5kQXBwbHlEaXNwbGF5TGlzdEVuZCk7CiAgICAgYXV0byBkZXN0aW5hdGlvbkltYWdl
QnVmZmVyID0gbWFrZVJlZlB0cihtX3JlbW90ZVJlc291cmNlQ2FjaGUuY2FjaGVkSW1hZ2VCdWZm
ZXIoYXJndW1lbnRzLmRlc3RpbmF0aW9uSW1hZ2VCdWZmZXJJZGVudGlmaWVyKSk7CiAgICAgaWYg
KFVOTElLRUxZKCFkZXN0aW5hdGlvbkltYWdlQnVmZmVyKSkgewpAQCAtMzIzLDYgKzMyNCw4IEBA
IHZvaWQgUmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6c2V0TmV4dEl0ZW1CdWZmZXJUb1JlYWQoRGlz
cGxheUxpc3Q6Okl0ZW1CdWZmZXJJZGVuCiAKIHZvaWQgUmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6
Z2V0SW1hZ2VEYXRhKEFscGhhUHJlbXVsdGlwbGljYXRpb24gb3V0cHV0Rm9ybWF0LCBJbnRSZWN0
IHNyY1JlY3QsIFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciByZW5kZXJpbmdSZXNvdXJjZUlk
ZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoSVBDOjpJbWFnZURhdGFSZWZlcmVuY2Um
Jik+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CisgICAgQVNTRVJUKCFSdW5Mb29wOjppc01haW4o
KSk7CisKICAgICBSZWZQdHI8SW1hZ2VEYXRhPiBpbWFnZURhdGE7CiAgICAgaWYgKGF1dG8gaW1h
Z2VCdWZmZXIgPSBtX3JlbW90ZVJlc291cmNlQ2FjaGUuY2FjaGVkSW1hZ2VCdWZmZXIocmVuZGVy
aW5nUmVzb3VyY2VJZGVudGlmaWVyKSkKICAgICAgICAgaW1hZ2VEYXRhID0gaW1hZ2VCdWZmZXIt
PmdldEltYWdlRGF0YShvdXRwdXRGb3JtYXQsIHNyY1JlY3QpOwpAQCAtMzMxLDYgKzMzNCw4IEBA
IHZvaWQgUmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6Z2V0SW1hZ2VEYXRhKEFscGhhUHJlbXVsdGlw
bGljYXRpb24gb3V0cHV0Rm9ybWF0LCBJCiAKIHZvaWQgUmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6
Z2V0RGF0YVVSTEZvckltYWdlQnVmZmVyKGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIE9wdGlvbmFs
PGRvdWJsZT4gcXVhbGl0eSwgV2ViQ29yZTo6UHJlc2VydmVSZXNvbHV0aW9uIHByZXNlcnZlUmVz
b2x1dGlvbiwgV2ViQ29yZTo6UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyIHJlbmRlcmluZ1Jl
c291cmNlSWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChTdHJpbmcmJik+JiYgY29t
cGxldGlvbkhhbmRsZXIpCiB7CisgICAgQVNTRVJUKCFSdW5Mb29wOjppc01haW4oKSk7CisKICAg
ICBTdHJpbmcgdXJsU3RyaW5nOwogICAgIGlmIChhdXRvIGltYWdlQnVmZmVyID0gbV9yZW1vdGVS
ZXNvdXJjZUNhY2hlLmNhY2hlZEltYWdlQnVmZmVyKHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmll
cikpCiAgICAgICAgIHVybFN0cmluZyA9IGltYWdlQnVmZmVyLT50b0RhdGFVUkwobWltZVR5cGUs
IHF1YWxpdHksIHByZXNlcnZlUmVzb2x1dGlvbik7CkBAIC0zMzksNiArMzQ0LDggQEAgdm9pZCBS
ZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpnZXREYXRhVVJMRm9ySW1hZ2VCdWZmZXIoY29uc3QgU3Ry
aW5nJiBtaW1lVHlwZSwgT3AKIAogdm9pZCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpnZXREYXRh
Rm9ySW1hZ2VCdWZmZXIoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgT3B0aW9uYWw8ZG91YmxlPiBx
dWFsaXR5LCBXZWJDb3JlOjpSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgcmVuZGVyaW5nUmVz
b3VyY2VJZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFZlY3Rvcjx1aW50OF90PiYm
KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKKyAgICBBU1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigp
KTsKKwogICAgIFZlY3Rvcjx1aW50OF90PiBkYXRhOwogICAgIGlmIChhdXRvIGltYWdlQnVmZmVy
ID0gbV9yZW1vdGVSZXNvdXJjZUNhY2hlLmNhY2hlZEltYWdlQnVmZmVyKHJlbmRlcmluZ1Jlc291
cmNlSWRlbnRpZmllcikpCiAgICAgICAgIGRhdGEgPSBpbWFnZUJ1ZmZlci0+dG9EYXRhKG1pbWVU
eXBlLCBxdWFsaXR5KTsKQEAgLTM0Nyw2ICszNTQsOCBAQCB2b2lkIFJlbW90ZVJlbmRlcmluZ0Jh
Y2tlbmQ6OmdldERhdGFGb3JJbWFnZUJ1ZmZlcihjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBPcHRp
bwogCiB2b2lkIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OmdldEJHUkFEYXRhRm9ySW1hZ2VCdWZm
ZXIoV2ViQ29yZTo6UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyIHJlbmRlcmluZ1Jlc291cmNl
SWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChWZWN0b3I8dWludDhfdD4mJik+JiYg
Y29tcGxldGlvbkhhbmRsZXIpCiB7CisgICAgQVNTRVJUKCFSdW5Mb29wOjppc01haW4oKSk7CisK
ICAgICBWZWN0b3I8dWludDhfdD4gZGF0YTsKICAgICBpZiAoYXV0byBpbWFnZUJ1ZmZlciA9IG1f
cmVtb3RlUmVzb3VyY2VDYWNoZS5jYWNoZWRJbWFnZUJ1ZmZlcihyZW5kZXJpbmdSZXNvdXJjZUlk
ZW50aWZpZXIpKQogICAgICAgICBkYXRhID0gaW1hZ2VCdWZmZXItPnRvQkdSQURhdGEoKTsKQEAg
LTM1NSw2ICszNjQsOCBAQCB2b2lkIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OmdldEJHUkFEYXRh
Rm9ySW1hZ2VCdWZmZXIoV2ViQ29yZTo6UmVuZGVyaW5nUmVzb3VyYwogCiB2b2lkIFJlbW90ZVJl
bmRlcmluZ0JhY2tlbmQ6OmNhY2hlTmF0aXZlSW1hZ2UoY29uc3QgU2hhcmVhYmxlQml0bWFwOjpI
YW5kbGUmIGhhbmRsZSwgUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyIHJlbmRlcmluZ1Jlc291
cmNlSWRlbnRpZmllcikKIHsKKyAgICBBU1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsKKwogICAg
IGF1dG8gYml0bWFwID0gU2hhcmVhYmxlQml0bWFwOjpjcmVhdGUoaGFuZGxlKTsKICAgICBpZiAo
IWJpdG1hcCkKICAgICAgICAgcmV0dXJuOwpAQCAtMzcxLDYgKzM4Miw4IEBAIHZvaWQgUmVtb3Rl
UmVuZGVyaW5nQmFja2VuZDo6Y2FjaGVOYXRpdmVJbWFnZShjb25zdCBTaGFyZWFibGVCaXRtYXA6
OkhhbmRsZSYgaGFuCiAKIHZvaWQgUmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6Y2FjaGVGb250KFJl
ZjxGb250PiYmIGZvbnQpCiB7CisgICAgQVNTRVJUKCFSdW5Mb29wOjppc01haW4oKSk7CisKICAg
ICBhdXRvIGlkZW50aWZpZXIgPSBmb250LT5yZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIoKTsK
ICAgICBtX3JlbW90ZVJlc291cmNlQ2FjaGUuY2FjaGVGb250KFdURk1vdmUoZm9udCkpOwogICAg
IGlmIChtX3BlbmRpbmdXYWtldXBJbmZvICYmIG1fcGVuZGluZ1dha2V1cEluZm8tPnNob3VsZFBl
cmZvcm1XYWtldXAoaWRlbnRpZmllcikpCkBAIC0zNzksMTYgKzM5MiwyMCBAQCB2b2lkIFJlbW90
ZVJlbmRlcmluZ0JhY2tlbmQ6OmNhY2hlRm9udChSZWY8Rm9udD4mJiBmb250KQogCiB2b2lkIFJl
bW90ZVJlbmRlcmluZ0JhY2tlbmQ6OmRlbGV0ZUFsbEZvbnRzKCkKIHsKKyAgICBBU1NFUlQoIVJ1
bkxvb3A6OmlzTWFpbigpKTsKICAgICBtX3JlbW90ZVJlc291cmNlQ2FjaGUuZGVsZXRlQWxsRm9u
dHMoKTsKIH0KIAogdm9pZCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpyZWxlYXNlUmVtb3RlUmVz
b3VyY2UoUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyIHJlbmRlcmluZ1Jlc291cmNlSWRlbnRp
ZmllcikKIHsKKyAgICBBU1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsKICAgICBtX3JlbW90ZVJl
c291cmNlQ2FjaGUucmVsZWFzZVJlbW90ZVJlc291cmNlKHJlbmRlcmluZ1Jlc291cmNlSWRlbnRp
Zmllcik7CiB9CiAKIHZvaWQgUmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6ZGlkQ3JlYXRlU2hhcmVk
RGlzcGxheUxpc3RIYW5kbGUoRGlzcGxheUxpc3Q6Okl0ZW1CdWZmZXJJZGVudGlmaWVyIGlkZW50
aWZpZXIsIGNvbnN0IFNoYXJlZE1lbW9yeTo6SVBDSGFuZGxlJiBoYW5kbGUsIFJlbmRlcmluZ1Jl
c291cmNlSWRlbnRpZmllciBkZXN0aW5hdGlvbkJ1ZmZlcklkZW50aWZpZXIpCiB7CisgICAgQVNT
RVJUKCFSdW5Mb29wOjppc01haW4oKSk7CisKICAgICBpZiAoVU5MSUtFTFkobV9zaGFyZWREaXNw
bGF5TGlzdEhhbmRsZXMuY29udGFpbnMoaWRlbnRpZmllcikpKSB7CiAgICAgICAgIC8vIEZJWE1F
OiBBZGQgYSBtZXNzYWdlIGNoZWNrIHRvIHRlcm1pbmF0ZSB0aGUgd2ViIHByb2Nlc3MuCiAgICAg
ICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQ
cm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQuaCBiL1NvdXJjZS9XZWJLaXQv
R1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kLmgKaW5kZXggYmMxMjhm
MTZiYjM3NTQ2NDU0MjNmZTJiZDJiMDk5ODIwM2FmMTYzMC4uZTYzODk5MDNiNjUwYmE4ZDk3M2Rh
ZjliM2RjY2E2NDUzNTZmNDVmOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNz
L2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQ
VVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5oCkBAIC02NSwxNCArNjUs
MTMgQEAgY2xhc3MgR1BVQ29ubmVjdGlvblRvV2ViUHJvY2VzczsKIHN0cnVjdCBSZW1vdGVSZW5k
ZXJpbmdCYWNrZW5kQ3JlYXRpb25QYXJhbWV0ZXJzOwogCiBjbGFzcyBSZW1vdGVSZW5kZXJpbmdC
YWNrZW5kCi0gICAgOiBwdWJsaWMgSVBDOjpNZXNzYWdlU2VuZGVyCi0gICAgLCBwcml2YXRlIElQ
Qzo6TWVzc2FnZVJlY2VpdmVyCisgICAgOiBwcml2YXRlIElQQzo6TWVzc2FnZVNlbmRlcgorICAg
ICwgcHVibGljIElQQzo6Q29ubmVjdGlvbjo6V29ya1F1ZXVlTWVzc2FnZVJlY2VpdmVyCiAgICAg
LCBwdWJsaWMgV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1CdWZmZXJSZWFkaW5nQ2xpZW50IHsK
IHB1YmxpYzoKLSAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPFJlbW90ZVJlbmRlcmluZ0JhY2tl
bmQ+IGNyZWF0ZShHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzJiwgUmVtb3RlUmVuZGVyaW5nQmFj
a2VuZENyZWF0aW9uUGFyYW1ldGVycyYmKTsKKyAgICBzdGF0aWMgUmVmPFJlbW90ZVJlbmRlcmlu
Z0JhY2tlbmQ+IGNyZWF0ZShHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzJiwgUmVtb3RlUmVuZGVy
aW5nQmFja2VuZENyZWF0aW9uUGFyYW1ldGVycyYmKTsKICAgICB2aXJ0dWFsIH5SZW1vdGVSZW5k
ZXJpbmdCYWNrZW5kKCk7CiAKLSAgICBHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzKiBncHVDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzKCkgY29uc3Q7CiAgICAgUmVtb3RlUmVzb3VyY2VDYWNoZSYgcmVt
b3RlUmVzb3VyY2VDYWNoZSgpIHsgcmV0dXJuIG1fcmVtb3RlUmVzb3VyY2VDYWNoZTsgfQogCiAg
ICAgLy8gUmVuZGVyaW5nIG9wZXJhdGlvbnMuCkBAIC04NCw2ICs4Myw4IEBAIHB1YmxpYzoKIAog
ICAgIHZvaWQgc2V0TmV4dEl0ZW1CdWZmZXJUb1JlYWQoV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0
ZW1CdWZmZXJJZGVudGlmaWVyLCBXZWJDb3JlOjpSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIg
ZGVzdGluYXRpb24pOwogCisgICAgdm9pZCBkaXNjb25uZWN0KCk7CisKIHByaXZhdGU6CiAgICAg
UmVtb3RlUmVuZGVyaW5nQmFja2VuZChHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzJiwgUmVtb3Rl
UmVuZGVyaW5nQmFja2VuZENyZWF0aW9uUGFyYW1ldGVycyYmKTsKIApAQCAtMTQxLDggKzE0Miw5
IEBAIHByaXZhdGU6CiAgICAgICAgIH0KICAgICB9OwogCisgICAgUmVmPFdvcmtRdWV1ZT4gbV93
b3JrUXVldWU7CiAgICAgUmVtb3RlUmVzb3VyY2VDYWNoZSBtX3JlbW90ZVJlc291cmNlQ2FjaGU7
Ci0gICAgV2Vha1B0cjxHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzPiBtX2dwdUNvbm5lY3Rpb25U
b1dlYlByb2Nlc3M7CisgICAgUmVmPEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M+IG1fZ3B1Q29u
bmVjdGlvblRvV2ViUHJvY2VzczsKICAgICBSZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllciBtX3Jl
bmRlcmluZ0JhY2tlbmRJZGVudGlmaWVyOwogICAgIEhhc2hNYXA8V2ViQ29yZTo6RGlzcGxheUxp
c3Q6Okl0ZW1CdWZmZXJJZGVudGlmaWVyLCBSZWZQdHI8RGlzcGxheUxpc3RSZWFkZXJIYW5kbGU+
PiBtX3NoYXJlZERpc3BsYXlMaXN0SGFuZGxlczsKICAgICBPcHRpb25hbDxQZW5kaW5nV2FrZXVw
SW5mb3JtYXRpb24+IG1fcGVuZGluZ1dha2V1cEluZm87CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5tZXNzYWdlcy5p
biBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNr
ZW5kLm1lc3NhZ2VzLmluCmluZGV4IDIwMmMyMGE5YzY1MDEzMDkxMTNkOTA2ODNjZjAwOWI4ODNi
ZDAwMWYuLjdkNjVjZTkwOWM1ODIwZjQ2YjAxZTZiZGVlY2RlYWE3MzM2YWFmMjggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNr
ZW5kLm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9S
ZW1vdGVSZW5kZXJpbmdCYWNrZW5kLm1lc3NhZ2VzLmluCkBAIC0yMiw3ICsyMiw3IEBACiAKICNp
ZiBFTkFCTEUoR1BVX1BST0NFU1MpCiAKLW1lc3NhZ2VzIC0+IFJlbW90ZVJlbmRlcmluZ0JhY2tl
bmQgTm90UmVmQ291bnRlZCB7CittZXNzYWdlcyAtPiBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kIHsK
ICAgICBDcmVhdGVJbWFnZUJ1ZmZlcihXZWJDb3JlOjpGbG9hdFNpemUgbG9naWNhbFNpemUsIFdl
YkNvcmU6OlJlbmRlcmluZ01vZGUgcmVuZGVyaW5nTW9kZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxl
LCBXZWJDb3JlOjpDb2xvclNwYWNlIGNvbG9yU3BhY2UsIGVudW06dWludDhfdCBXZWJDb3JlOjpQ
aXhlbEZvcm1hdCBwaXhlbEZvcm1hdCwgV2ViQ29yZTo6UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlm
aWVyIHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcikKICAgICBXYWtlVXBBbmRBcHBseURpc3Bs
YXlMaXN0KHN0cnVjdCBXZWJLaXQ6OkdQVVByb2Nlc3NXYWtldXBNZXNzYWdlQXJndW1lbnRzIGFy
Z3VtZW50cykKICAgICBHZXRJbWFnZURhdGEoZW51bTp1aW50OF90IFdlYkNvcmU6OkFscGhhUHJl
bXVsdGlwbGljYXRpb24gb3V0cHV0Rm9ybWF0LCBXZWJDb3JlOjpJbnRSZWN0IHNyY1JlY3QsIFdl
YkNvcmU6OlJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciByZW5kZXJpbmdSZXNvdXJjZUlkZW50
aWZpZXIpIC0+IChJUEM6OkltYWdlRGF0YVJlZmVyZW5jZSBpbWFnZURhdGEpIFN5bmNocm9ub3Vz
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTGVnYWN5
Q0RNUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUxlZ2Fj
eUNETVByb3h5LmNwcAppbmRleCA4ZjAxMTllZGZlMWQ2ZTkzMjQzMDA1YjM0NDEyNWIyNGVhYjkx
ZTMwLi44MGM5Mzc0ZTk3MDU5ZWUxMzk1NTVlYjA2NTIxOTQ4Mjk2MjAxZDkzIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTGVnYWN5Q0RNUHJveHkuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVMZWdhY3lDRE1Qcm94
eS5jcHAKQEAgLTg3LDExICs4Nyw3IEBAIFJlZlB0cjxNZWRpYVBsYXllcj4gUmVtb3RlTGVnYWN5
Q0RNUHJveHk6OmNkbU1lZGlhUGxheWVyKGNvbnN0IExlZ2FjeUNETSopIGNvbnN0CiAgICAgaWYg
KCFtX3BsYXllcklkIHx8ICFtX2ZhY3RvcnkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0g
ICAgYXV0byBwcm94eSA9IG1fZmFjdG9yeS0+Z3B1Q29ubmVjdGlvblRvV2ViUHJvY2VzcygpLnJl
bW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5KCkuZ2V0UHJveHkobV9wbGF5ZXJJZCk7Ci0gICAg
aWYgKCFwcm94eSkKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0KLSAgICByZXR1cm4gcHJveHkt
Pm1lZGlhUGxheWVyKCk7CisgICAgcmV0dXJuIG1fZmFjdG9yeS0+Z3B1Q29ubmVjdGlvblRvV2Vi
UHJvY2VzcygpLnJlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5KCkubWVkaWFQbGF5ZXIobV9w
bGF5ZXJJZCk7CiB9CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9t
ZWRpYS9SZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L0dQ
VVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHkuY3BwCmluZGV4IGMw
MjUzMzVkY2EzODU5ZDZkNjQxMzQ2MDA2MDY3YjZhOTVlNGM2NmYuLmZhMjRhMmFhYmUyNDViOTAz
YTg5NzgwMzE1OWM1ZjNmZmE5MzdmZGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJv
Y2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eS5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5LmNw
cApAQCAtNjEsNiArNjEsOSBAQCBSZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eTo6flJlbW90
ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5KCkKIAogdm9pZCBSZW1vdGVNZWRpYVBsYXllck1hbmFn
ZXJQcm94eTo6Y3JlYXRlTWVkaWFQbGF5ZXIoTWVkaWFQbGF5ZXJJZGVudGlmaWVyIGlkZW50aWZp
ZXIsIE1lZGlhUGxheWVyRW51bXM6Ok1lZGlhRW5naW5lSWRlbnRpZmllciBlbmdpbmVJZGVudGlm
aWVyLCBSZW1vdGVNZWRpYVBsYXllclByb3h5Q29uZmlndXJhdGlvbiYmIHByb3h5Q29uZmlndXJh
dGlvbiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChSZW1vdGVNZWRpYVBsYXllckNvbmZpZ3VyYXRp
b24mKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKKyAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWlu
KCkpOworCisgICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhtX3Byb3hpZXNMb2NrKTsKICAgICBB
U1NFUlQoIW1fcHJveGllcy5jb250YWlucyhpZGVudGlmaWVyKSk7CiAKICAgICBSZW1vdGVNZWRp
YVBsYXllckNvbmZpZ3VyYXRpb24gcGxheWVyQ29uZmlndXJhdGlvbjsKQEAgLTc0LDYgKzc3LDgg
QEAgdm9pZCBSZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eTo6Y3JlYXRlTWVkaWFQbGF5ZXIo
TWVkaWFQbGF5ZXJJZGVudGlmaWVyIGlkZW4KIAogdm9pZCBSZW1vdGVNZWRpYVBsYXllck1hbmFn
ZXJQcm94eTo6ZGVsZXRlTWVkaWFQbGF5ZXIoTWVkaWFQbGF5ZXJJZGVudGlmaWVyIGlkZW50aWZp
ZXIpCiB7CisgICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKKyAgICBhdXRvIGxvY2tlciA9
IGhvbGRMb2NrKG1fcHJveGllc0xvY2spOwogICAgIGlmIChhdXRvIHByb3h5ID0gbV9wcm94aWVz
LnRha2UoaWRlbnRpZmllcikpCiAgICAgICAgIHByb3h5LT5pbnZhbGlkYXRlKCk7CiB9CkBAIC0x
NjgsMjEgKzE3MywyNSBAQCB2b2lkIFJlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5OjpzdXBw
b3J0c0tleVN5c3RlbShNZWRpYVBsYXllckVudW1zOjpNZWRpYUVuZwogCiB2b2lkIFJlbW90ZU1l
ZGlhUGxheWVyTWFuYWdlclByb3h5OjpkaWRSZWNlaXZlUGxheWVyTWVzc2FnZShJUEM6OkNvbm5l
Y3Rpb24mIGNvbm5lY3Rpb24sIElQQzo6RGVjb2RlciYgZGVjb2RlcikKIHsKKyAgICBBU1NFUlQo
UnVuTG9vcDo6aXNNYWluKCkpOwogICAgIGlmIChhdXRvKiBwbGF5ZXIgPSBtX3Byb3hpZXMuZ2V0
KG1ha2VPYmplY3RJZGVudGlmaWVyPE1lZGlhUGxheWVySWRlbnRpZmllclR5cGU+KGRlY29kZXIu
ZGVzdGluYXRpb25JRCgpKSkpCiAgICAgICAgIHBsYXllci0+ZGlkUmVjZWl2ZU1lc3NhZ2UoY29u
bmVjdGlvbiwgZGVjb2Rlcik7CiB9CiAKIHZvaWQgUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJv
eHk6OmRpZFJlY2VpdmVTeW5jUGxheWVyTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rp
b24sIElQQzo6RGVjb2RlciYgZGVjb2Rlciwgc3RkOjp1bmlxdWVfcHRyPElQQzo6RW5jb2Rlcj4m
IGVuY29kZXIpCiB7CisgICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKICAgICBpZiAoYXV0
byogcGxheWVyID0gbV9wcm94aWVzLmdldChtYWtlT2JqZWN0SWRlbnRpZmllcjxNZWRpYVBsYXll
cklkZW50aWZpZXJUeXBlPihkZWNvZGVyLmRlc3RpbmF0aW9uSUQoKSkpKQogICAgICAgICBwbGF5
ZXItPmRpZFJlY2VpdmVTeW5jTWVzc2FnZShjb25uZWN0aW9uLCBkZWNvZGVyLCBlbmNvZGVyKTsK
IH0KIAotUmVtb3RlTWVkaWFQbGF5ZXJQcm94eSogUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJv
eHk6OmdldFByb3h5KGNvbnN0IE1lZGlhUGxheWVySWRlbnRpZmllciYgaWRlbnRpZmllcikKKy8v
IE1heSBnZXQgY2FsbGVkIG9uIGEgYmFja2dyb3VuZCB0aHJlYWQuCitSZWZQdHI8TWVkaWFQbGF5
ZXI+IFJlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5OjptZWRpYVBsYXllcihjb25zdCBNZWRp
YVBsYXllcklkZW50aWZpZXImIGlkZW50aWZpZXIpCiB7CisgICAgYXV0byBsb2NrZXIgPSBob2xk
TG9jayhtX3Byb3hpZXNMb2NrKTsKICAgICBhdXRvIHJlc3VsdHMgPSBtX3Byb3hpZXMuZmluZChp
ZGVudGlmaWVyKTsKICAgICBpZiAocmVzdWx0cyAhPSBtX3Byb3hpZXMuZW5kKCkpCi0gICAgICAg
IHJldHVybiByZXN1bHRzLT52YWx1ZS5nZXQoKTsKKyAgICAgICAgcmV0dXJuIHJlc3VsdHMtPnZh
bHVlLT5tZWRpYVBsYXllcigpOwogICAgIHJldHVybiBudWxscHRyOwogfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2Vy
UHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVBsYXll
ck1hbmFnZXJQcm94eS5oCmluZGV4IGI1YjEzMzYxNDY5YjdkZGIzYzQxMmI1MzQ0NjY1OTNiMjFi
YWRjNjUuLjIzN2FmOWI2ODAxMGM2MjQyOTY4ZWZkMGU0MGI1NGQ0OGQwZjQ1MDkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVBsYXllck1hbmFn
ZXJQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRp
YVBsYXllck1hbmFnZXJQcm94eS5oCkBAIC0zMyw2ICszMyw3IEBACiAjaW5jbHVkZSAiVHJhY2tQ
cml2YXRlUmVtb3RlSWRlbnRpZmllci5oIgogI2luY2x1ZGUgPFdlYkNvcmUvTWVkaWFQbGF5ZXIu
aD4KICNpbmNsdWRlIDxXZWJDb3JlL01lZGlhUGxheWVySWRlbnRpZmllci5oPgorI2luY2x1ZGUg
PHd0Zi9Mb2NrLmg+CiAjaW5jbHVkZSA8d3RmL0xvZ2dlckhlbHBlci5oPgogCiBuYW1lc3BhY2Ug
V2ViS2l0IHsKQEAgLTY4LDcgKzY5LDcgQEAgcHVibGljOgogICAgIFdURkxvZ0NoYW5uZWwmIGxv
Z0NoYW5uZWwoKSBjb25zdCBmaW5hbDsKICNlbmRpZgogCi0gICAgUmVtb3RlTWVkaWFQbGF5ZXJQ
cm94eSogZ2V0UHJveHkoY29uc3QgV2ViQ29yZTo6TWVkaWFQbGF5ZXJJZGVudGlmaWVyJik7Cisg
ICAgUmVmUHRyPFdlYkNvcmU6Ok1lZGlhUGxheWVyPiBtZWRpYVBsYXllcihjb25zdCBXZWJDb3Jl
OjpNZWRpYVBsYXllcklkZW50aWZpZXImKTsKIAogcHJpdmF0ZToKICAgICAvLyBJUEM6Ok1lc3Nh
Z2VSZWNlaXZlcgpAQCAtODYsNiArODcsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgY2xlYXJNZWRp
YUNhY2hlRm9yT3JpZ2lucyhXZWJDb3JlOjpNZWRpYVBsYXllckVudW1zOjpNZWRpYUVuZ2luZUlk
ZW50aWZpZXIsIGNvbnN0IFN0cmluZyYmLCBWZWN0b3I8V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5E
YXRhPiYmKTsKICAgICB2b2lkIHN1cHBvcnRzS2V5U3lzdGVtKFdlYkNvcmU6Ok1lZGlhUGxheWVy
RW51bXM6Ok1lZGlhRW5naW5lSWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiYsIGNvbnN0IFN0cmlu
ZyYmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKTsKIAorICAgIExvY2sgbV9wcm94
aWVzTG9jazsKICAgICBIYXNoTWFwPFdlYkNvcmU6Ok1lZGlhUGxheWVySWRlbnRpZmllciwgc3Rk
Ojp1bmlxdWVfcHRyPFJlbW90ZU1lZGlhUGxheWVyUHJveHk+PiBtX3Byb3hpZXM7CiAgICAgR1BV
Q29ubmVjdGlvblRvV2ViUHJvY2VzcyYgbV9ncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzOwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL1NoYXJlZE1lbW9yeS5oIGIvU291cmNl
L1dlYktpdC9QbGF0Zm9ybS9TaGFyZWRNZW1vcnkuaAppbmRleCBhMDg1NDZiNzY1NjA0NTYxNDVk
ODUwNGQ5MzhmMDNlN2Y4MWI0MGQwLi4wMzQ1YTI1ZTczNDRhM2I3YjVjMTE2MjhjODdkN2E5ZTg1
NmQ4NDEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL1NoYXJlZE1lbW9yeS5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vU2hhcmVkTWVtb3J5LmgKQEAgLTI4LDcgKzI4
LDcgQEAKIAogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAjaW5jbHVkZSA8d3RmL05vbmNvcHlh
YmxlLmg+Ci0jaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KKyNpbmNsdWRlIDx3dGYvVGhyZWFk
U2FmZVJlZkNvdW50ZWQuaD4KIAogI2lmIFVTRShVTklYX0RPTUFJTl9TT0NLRVRTKQogI2luY2x1
ZGUgIkF0dGFjaG1lbnQuaCIKQEAgLTU2LDcgKzU2LDcgQEAgY2xhc3MgTWFjaFNlbmRSaWdodDsK
IAogbmFtZXNwYWNlIFdlYktpdCB7CiAKLWNsYXNzIFNoYXJlZE1lbW9yeSA6IHB1YmxpYyBSZWZD
b3VudGVkPFNoYXJlZE1lbW9yeT4geworY2xhc3MgU2hhcmVkTWVtb3J5IDogcHVibGljIFRocmVh
ZFNhZmVSZWZDb3VudGVkPFNoYXJlZE1lbW9yeT4gewogcHVibGljOgogICAgIGVudW0gY2xhc3Mg
UHJvdGVjdGlvbiB7CiAgICAgICAgIFJlYWRPbmx5LApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9TaGFyZWQvU2hhcmVhYmxlQml0bWFwLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1NoYXJl
YWJsZUJpdG1hcC5jcHAKaW5kZXggODQ0ODg3YmJjM2IxYjNhNDMzODQxMmU5NDNjOWQ2OTJjYjFi
NjJiMC4uYjEwZDVhNjNjMWE1NDg0ZWEyZDFmMzdiOTVkZDU1NWQzOWUwMzkzOCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9TaGFyZWQvU2hhcmVhYmxlQml0bWFwLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9TaGFyZWFibGVCaXRtYXAuY3BwCkBAIC0xNzIsNyArMTcyLDYgQEAgU2hh
cmVhYmxlQml0bWFwOjpTaGFyZWFibGVCaXRtYXAoY29uc3QgSW50U2l6ZSYgc2l6ZSwgQ29uZmln
dXJhdGlvbiBjb25maWd1cmF0aW8KICAgICAsIG1fY29uZmlndXJhdGlvbihjb25maWd1cmF0aW9u
KQogICAgICwgbV9kYXRhKGRhdGEpCiB7Ci0gICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsK
IH0KIAogU2hhcmVhYmxlQml0bWFwOjpTaGFyZWFibGVCaXRtYXAoY29uc3QgSW50U2l6ZSYgc2l6
ZSwgQ29uZmlndXJhdGlvbiBjb25maWd1cmF0aW9uLCBSZWZQdHI8U2hhcmVkTWVtb3J5PiBzaGFy
ZWRNZW1vcnkpCkBAIC0xODEsOCArMTgwLDYgQEAgU2hhcmVhYmxlQml0bWFwOjpTaGFyZWFibGVC
aXRtYXAoY29uc3QgSW50U2l6ZSYgc2l6ZSwgQ29uZmlndXJhdGlvbiBjb25maWd1cmF0aW8KICAg
ICAsIG1fc2hhcmVkTWVtb3J5KHNoYXJlZE1lbW9yeSkKICAgICAsIG1fZGF0YShudWxscHRyKQog
ewotICAgIEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7Ci0KICNpZiBVU0UoRElSRUNUMkQpCiAg
ICAgY3JlYXRlU2hhcmVkUmVzb3VyY2UoKTsKICNlbmRpZgpAQCAtMTkwLDggKzE4Nyw2IEBAIFNo
YXJlYWJsZUJpdG1hcDo6U2hhcmVhYmxlQml0bWFwKGNvbnN0IEludFNpemUmIHNpemUsIENvbmZp
Z3VyYXRpb24gY29uZmlndXJhdGlvCiAKIFNoYXJlYWJsZUJpdG1hcDo6flNoYXJlYWJsZUJpdG1h
cCgpCiB7Ci0gICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKLQogICAgIGlmICghaXNCYWNr
ZWRCeVNoYXJlZE1lbW9yeSgpKQogICAgICAgICBTaGFyZWFibGVCaXRtYXBNYWxsb2M6OmZyZWUo
bV9kYXRhKTsKICNpZiBVU0UoRElSRUNUMkQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1No
YXJlZC9TaGFyZWFibGVCaXRtYXAuaCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1NoYXJlYWJsZUJp
dG1hcC5oCmluZGV4IGMyZGFiZjZhZjYwZGY2ZTBmZGJmOTFlNmViZGNmYjc5MjVlM2NmNWQuLmE2
ZDIyOWE0MjQ3ODljOTE4ODFhMTM5NDdlNTAwYzczYTE3MmU0ZDYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvU2hhcmVkL1NoYXJlYWJsZUJpdG1hcC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hh
cmVkL1NoYXJlYWJsZUJpdG1hcC5oCkBAIC0yOCw4ICsyOCw4IEBACiAjaW5jbHVkZSAiU2hhcmVk
TWVtb3J5LmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9JbnRSZWN0Lmg+CiAjaW5jbHVkZSA8V2ViQ29y
ZS9QbGF0Zm9ybUltYWdlLmg+Ci0jaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KICNpbmNsdWRl
IDx3dGYvUmVmUHRyLmg+CisjaW5jbHVkZSA8d3RmL1RocmVhZFNhZmVSZWZDb3VudGVkLmg+CiAK
ICNpZiBVU0UoQ0cpCiAjaW5jbHVkZSAiQ29sb3JTcGFjZURhdGEuaCIKQEAgLTUyLDcgKzUyLDcg
QEAgY2xhc3MgR3JhcGhpY3NDb250ZXh0OwogCiBuYW1lc3BhY2UgV2ViS2l0IHsKICAgICAKLWNs
YXNzIFNoYXJlYWJsZUJpdG1hcCA6IHB1YmxpYyBSZWZDb3VudGVkPFNoYXJlYWJsZUJpdG1hcD4g
eworY2xhc3MgU2hhcmVhYmxlQml0bWFwIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPFNo
YXJlYWJsZUJpdG1hcD4gewogcHVibGljOgogICAgIHN0cnVjdCBDb25maWd1cmF0aW9uIHsKICAg
ICAgICAgYm9vbCBpc09wYXF1ZSB7IGZhbHNlIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1NoYXJlZC9jZy9TaGFyZWFibGVCaXRtYXBDRy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9j
Zy9TaGFyZWFibGVCaXRtYXBDRy5jcHAKaW5kZXggOTM4NWViM2U4Y2RhMzQxNjQyYzJlNzlkOWE3
NTAxOWVjNTcwN2I3NS4uZjg4ODAyZDgzMTIzM2I3N2U1MTI5ZDcxNGQyZTBmZGE3Mjg3ODE4ZCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvY2cvU2hhcmVhYmxlQml0bWFwQ0cuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL2NnL1NoYXJlYWJsZUJpdG1hcENHLmNwcApAQCAt
MTcxLDEzICsxNzEsNiBAQCBSZXRhaW5QdHI8Q0dJbWFnZVJlZj4gU2hhcmVhYmxlQml0bWFwOjpj
cmVhdGVDR0ltYWdlKENHRGF0YVByb3ZpZGVyUmVmIGRhdGFQcm92aQogCiB2b2lkIFNoYXJlYWJs
ZUJpdG1hcDo6cmVsZWFzZUJpdG1hcENvbnRleHREYXRhKHZvaWQqIHR5cGVsZXNzQml0bWFwLCB2
b2lkKiB0eXBlbGVzc0RhdGEpCiB7Ci0gICAgaWYgKCFSdW5Mb29wOjppc01haW4oKSkgewotICAg
ICAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW3R5cGVsZXNzQml0bWFwLCB0eXBlbGVzc0Rh
dGFdIHsKLSAgICAgICAgICAgIHJlbGVhc2VCaXRtYXBDb250ZXh0RGF0YSh0eXBlbGVzc0JpdG1h
cCwgdHlwZWxlc3NEYXRhKTsKLSAgICAgICAgfSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0K
ICAgICBTaGFyZWFibGVCaXRtYXAqIGJpdG1hcCA9IHN0YXRpY19jYXN0PFNoYXJlYWJsZUJpdG1h
cCo+KHR5cGVsZXNzQml0bWFwKTsKICAgICBBU1NFUlRfVU5VU0VEKHR5cGVsZXNzRGF0YSwgYml0
bWFwLT5kYXRhKCkgPT0gdHlwZWxlc3NEYXRhKTsKICAgICBiaXRtYXAtPmRlcmVmKCk7IC8vIEJh
bGFuY2VkIGJ5IHJlZiBpbiBjcmVhdGVHcmFwaGljc0NvbnRleHQuCkBAIC0xODUsMTMgKzE3OCw2
IEBAIHZvaWQgU2hhcmVhYmxlQml0bWFwOjpyZWxlYXNlQml0bWFwQ29udGV4dERhdGEodm9pZCog
dHlwZWxlc3NCaXRtYXAsIHZvaWQqIHR5cGVsCiAKIHZvaWQgU2hhcmVhYmxlQml0bWFwOjpyZWxl
YXNlRGF0YVByb3ZpZGVyRGF0YSh2b2lkKiB0eXBlbGVzc0JpdG1hcCwgY29uc3Qgdm9pZCogdHlw
ZWxlc3NEYXRhLCBzaXplX3QpCiB7Ci0gICAgaWYgKCFSdW5Mb29wOjppc01haW4oKSkgewotICAg
ICAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW3R5cGVsZXNzQml0bWFwLCB0eXBlbGVzc0Rh
dGFdIHsKLSAgICAgICAgICAgIHJlbGVhc2VEYXRhUHJvdmlkZXJEYXRhKHR5cGVsZXNzQml0bWFw
LCB0eXBlbGVzc0RhdGEsIDApOwotICAgICAgICB9KTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0K
LQogICAgIFNoYXJlYWJsZUJpdG1hcCogYml0bWFwID0gc3RhdGljX2Nhc3Q8U2hhcmVhYmxlQml0
bWFwKj4odHlwZWxlc3NCaXRtYXApOwogICAgIEFTU0VSVF9VTlVTRUQodHlwZWxlc3NEYXRhLCBi
aXRtYXAtPmRhdGEoKSA9PSB0eXBlbGVzc0RhdGEpOwogICAgIGJpdG1hcC0+ZGVyZWYoKTsgLy8g
QmFsYW5jZWQgYnkgcmVmIGluIGNyZWF0ZUNHSW1hZ2UuCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>