<?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>219097</bug_id>
          
          <creation_ts>2020-11-18 10:54:26 -0800</creation_ts>
          <short_desc>The web process should be killed after failing to decode display list items in the GPU process</short_desc>
          <delta_ts>2021-01-22 18:13:29 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKit2</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>219067</dependson>
    
    <dependson>220710</dependson>
    
    <dependson>220867</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Wenson Hsieh">wenson_hsieh</reporter>
          <assigned_to name="Wenson Hsieh">wenson_hsieh</assigned_to>
          <cc>cdumez</cc>
    
    <cc>ggaren</cc>
    
    <cc>rniwa</cc>
    
    <cc>sabouhallawa</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>thorton</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>youennf</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1708679</commentid>
    <comment_count>0</comment_count>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2020-11-18 10:54:26 -0800</bug_when>
    <thetext>&lt;rdar://problem/71546526&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1721334</commentid>
    <comment_count>1</comment_count>
      <attachid>418085</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2021-01-21 14:14:19 -0800</bug_when>
    <thetext>Created attachment 418085
Depends on #220710</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1721714</commentid>
    <comment_count>2</comment_count>
      <attachid>418180</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2021-01-22 14:31:51 -0800</bug_when>
    <thetext>Created attachment 418180
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1721719</commentid>
    <comment_count>3</comment_count>
      <attachid>418180</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2021-01-22 14:36:16 -0800</bug_when>
    <thetext>Comment on attachment 418180
Patch

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

&gt; Source/WebKit/GPUProcess/graphics/RemoteRenderingBackend.cpp:272
&gt; +    callOnMainRunLoop([this, protectedThis = makeRef(*this), messageName = *m_currentMessageName] () mutable {

Is it OK that this is asynchronous? If the GPU Process is compromised, does this leave a window of vulnerability before this gets back to the originating web content process?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1721722</commentid>
    <comment_count>4</comment_count>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2021-01-22 14:44:16 -0800</bug_when>
    <thetext>(In reply to Simon Fraser (smfr) from comment #3)
&gt; Comment on attachment 418180 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=418180&amp;action=review
&gt; 
&gt; &gt; Source/WebKit/GPUProcess/graphics/RemoteRenderingBackend.cpp:272
&gt; &gt; +    callOnMainRunLoop([this, protectedThis = makeRef(*this), messageName = *m_currentMessageName] () mutable {
&gt; 
&gt; Is it OK that this is asynchronous? If the GPU Process is compromised, does
&gt; this leave a window of vulnerability before this gets back to the
&gt; originating web content process?

My understanding was that there would be a &quot;window of vulnerability&quot; in any case, since we need to call out to the parent process connection (i.e. UI process) from the UI process to do the killing.

But also, in the case where the GPU Process is compromised, would the attacker just be able to avoid this logic altogether? (My understanding was that the GPU Process, by design, isn&apos;t supposed to be compromised; otherwise, we end up with the same security pitfalls as we have now with just the web content process).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1721727</commentid>
    <comment_count>5</comment_count>
      <attachid>418180</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-01-22 14:50:16 -0800</bug_when>
    <thetext>Comment on attachment 418180
Patch

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

Overall, I am not a fan of this patch. I think it adds quite a bit of complexity and does not look nice.

My proposal would be whenever we get an unexpected value from the WebProcess, call a macro that does:
    RELEASE_LOG_FAULT(xxx);
    m_gpuConnectionToWebProcess-&gt;gpuProcess().parentProcessConnection()-&gt;send(Messages::GPUProcessProxy::TerminateWebProcess(m_webProcessIdentifier), 0);

xxx being a parameter passed to the macro that is a clear message of what was wrong.

&gt; Source/WebKit/GPUProcess/graphics/RemoteRenderingBackend.cpp:407
&gt; +    SetForScope setCurrentMessageName(m_currentMessageName, IPC::MessageName::RemoteRenderingBackend_DidCreateSharedDisplayListHandle);

This looks really ugly and it is very unfortunate people will have to remember to do this every time they add a new IPC.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1721730</commentid>
    <comment_count>6</comment_count>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2021-01-22 14:57:04 -0800</bug_when>
    <thetext>(In reply to Chris Dumez from comment #5)
&gt; Comment on attachment 418180 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=418180&amp;action=review
&gt; 
&gt; Overall, I am not a fan of this patch. I think it adds quite a bit of
&gt; complexity and does not look nice.
&gt; 
&gt; My proposal would be whenever we get an unexpected value from the
&gt; WebProcess, call a macro that does:
&gt;     RELEASE_LOG_FAULT(xxx);
&gt;    
&gt; m_gpuConnectionToWebProcess-&gt;gpuProcess().parentProcessConnection()-
&gt; &gt;send(Messages::GPUProcessProxy::TerminateWebProcess(m_webProcessIdentifier),
&gt; 0);
&gt; 
&gt; xxx being a parameter passed to the macro that is a clear message of what
&gt; was wrong.
&gt; 
&gt; &gt; Source/WebKit/GPUProcess/graphics/RemoteRenderingBackend.cpp:407
&gt; &gt; +    SetForScope setCurrentMessageName(m_currentMessageName, IPC::MessageName::RemoteRenderingBackend_DidCreateSharedDisplayListHandle);
&gt; 
&gt; This looks really ugly and it is very unfortunate people will have to
&gt; remember to do this every time they add a new IPC.

That&apos;s a really good point — splitting the logging out from the WP termination message would make this patch a lot less messy. I&apos;ll give this a try.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1721777</commentid>
    <comment_count>7</comment_count>
      <attachid>418197</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2021-01-22 16:27:47 -0800</bug_when>
    <thetext>Created attachment 418197
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1721782</commentid>
    <comment_count>8</comment_count>
      <attachid>418197</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-01-22 16:30:43 -0800</bug_when>
    <thetext>Comment on attachment 418197
Patch

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

Much nicer IMO

&gt; Source/WebKit/GPUProcess/graphics/RemoteRenderingBackend.cpp:49
&gt; +    m_gpuConnectionToWebProcess-&gt;gpuProcess().parentProcessConnection()-&gt;send(Messages::GPUProcessProxy::TerminateWebProcess(m_gpuConnectionToWebProcess-&gt;webProcessIdentifier()), 0);

We may want to add a terminateWebProcess() function to GPUConnectionToWebProcess to not have to duplicate this logic in 2 places.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1721786</commentid>
    <comment_count>9</comment_count>
      <attachid>418197</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2021-01-22 16:47:41 -0800</bug_when>
    <thetext>Comment on attachment 418197
Patch

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

&gt;&gt; Source/WebKit/GPUProcess/graphics/RemoteRenderingBackend.cpp:49
&gt;&gt; +    m_gpuConnectionToWebProcess-&gt;gpuProcess().parentProcessConnection()-&gt;send(Messages::GPUProcessProxy::TerminateWebProcess(m_gpuConnectionToWebProcess-&gt;webProcessIdentifier()), 0);
&gt; 
&gt; We may want to add a terminateWebProcess() function to GPUConnectionToWebProcess to not have to duplicate this logic in 2 places.

Sounds good! Pulled out the logic into a helper method:

void GPUConnectionToWebProcess::terminateWebProcess()
{
    gpuProcess().parentProcessConnection()-&gt;send(Messages::GPUProcessProxy::TerminateWebProcess(m_webProcessIdentifier), 0);
}</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1721787</commentid>
    <comment_count>10</comment_count>
      <attachid>418200</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2021-01-22 16:53:57 -0800</bug_when>
    <thetext>Created attachment 418200
For landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1721800</commentid>
    <comment_count>11</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-01-22 18:13:23 -0800</bug_when>
    <thetext>Committed r271772: &lt;https://trac.webkit.org/changeset/271772&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 418200.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>418085</attachid>
            <date>2021-01-21 14:14:19 -0800</date>
            <delta_ts>2021-01-22 14:31:49 -0800</delta_ts>
            <desc>Depends on #220710</desc>
            <filename>bug-219097-20210121141418.patch</filename>
            <type>text/plain</type>
            <size>39412</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcxNjkxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggODYxYjMwNGU0MTUxMDk5
Y2I1MGE1NzBjMzc5NTY4ZWE4NzdlMzFkNi4uZjcwZjg2YmJkOTAyYTUxYmFmNzYwNjBiYWU5ODQ0
NDc3MmEyODAwNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQxIEBACisyMDIxLTAxLTIxICBXZW5z
b24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAgICAgIFRoZSB3ZWIgcHJv
Y2VzcyBzaG91bGQgYmUga2lsbGVkIGFmdGVyIGZhaWxpbmcgdG8gZGVjb2RlIGRpc3BsYXkgbGlz
dCBpdGVtcyBpbiB0aGUgR1BVIHByb2Nlc3MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTIxOTA5NworICAgICAgICA8cmRhcjovL3Byb2JsZW0vNzE1NDY1
MjY+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTWFr
ZSB0aGUgYERpc3BsYXlMaXN0YCBpdGVtIGl0ZXJhdG9yIGVtaXQgYE9wdGlvbmFsPEl0ZW1IYW5k
bGU+YCBpbnN0ZWFkIG9mIGp1c3QgYEl0ZW1IYW5kbGVgOyBpbiB0aGUgY2FzZSBvZgorICAgICAg
ICBjbGllbnQgZGVjb2Rpbmcgb3IgaXRlbSB2YWxpZGF0aW9uIGZhaWx1cmVzIChzZWUgIzIyMDcx
MCksIHRoaXMgaXRlbSBoYW5kbGUgd2lsbCBiZSBgV1RGOjpudWxsb3B0YC4gVGhlIGRpc3BsYXkK
KyAgICAgICAgbGlzdCByZXBsYXllciB3aWxsIHRoZW4gaGFuZGxlIHRoaXMgYnkgaGFsdGluZyBy
ZXBsYXkgd2l0aCBgU3RvcFJlcGxheVJlYXNvbjo6SW52YWxpZEl0ZW1gLgorCisgICAgICAgIFRl
c3Q6ICAgRGlzcGxheUxpc3RUZXN0cy5JbmxpbmVJdGVtVmFsaWRhdGlvbkZhaWx1cmUKKyAgICAg
ICAgICAgICAgICBEaXNwbGF5TGlzdFRlc3RzLk91dE9mTGluZUl0ZW1EZWNvZGluZ0ZhaWx1cmUK
KworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RGlzcGxheUxpc3Q6OmFzVGV4dCBj
b25zdCk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RGlzcGxheUxpc3Q6OmR1bXAg
Y29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRpc3BsYXlMaXN0OjppdGVy
YXRvcjo6YXRFbmQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRpc3Bs
YXlMaXN0OjppdGVyYXRvcjo6dXBkYXRlQ3VycmVudEl0ZW0pOgorCisgICAgICAgIEFkZCBhbiBg
bV9pc1ZhbGlkYCBmbGFnLiBUaGlzIGZsYWcgaXMgc2V0IHRvIGB0cnVlYCBpbml0aWFsbHksIGFu
ZCBpcyBvbmx5IHNldCB0byBgZmFsc2VgIHdoZW4gd2UgZW5jb3VudGVyIGFuCisgICAgICAgIGl0
ZW0gdGhhdCBpcyBlaXRoZXIgaW52YWxpZCBvciB1bmFibGUgdG8gYmUgZGVjb2RlZC4gQWRkaXRp
b25hbGx5LCByZW1vdmUgcmVsZWFzZSBhc3NlcnRpb25zIGFuZCB0aGUgRklYTUVzCisgICAgICAg
IHJlZ2FyZGluZyBoYW5kbGluZyBpdGVtIGRlY29kaW5nIGZhaWx1cmVzLgorCisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0Lmg6CisgICAgICAgIChX
ZWJDb3JlOjpEaXNwbGF5TGlzdDo6RGlzcGxheUxpc3Q6Oml0ZXJhdG9yOjpvcGVyYXRvciogY29u
c3QpOgorCisgICAgICAgIElmIHRoZSBgbV9pc1ZhbGlkYCBmbGFnIGFib3ZlIGlzIHNldCwgcmV0
dXJuIGBXVEY6Om51bGxvcHRgIGZvciB0aGUgaXRlbSBoYW5kbGUuCisKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZXBsYXllci5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6UmVwbGF5ZXI6OnJlcGxheSk6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVwbGF5ZXIuaDoKKwor
ICAgICAgICBSZW5hbWUgYERlY29kaW5nRmFpbHVyZWAgdG8gYEludmFsaWRJdGVtYCwgc2luY2Ug
aXQgbm93IGFwcGxpZXMgdG8gYm90aCBpdGVtcyB0aGF0IGFyZSBpbnZhbGlkIChlLmcuIGNvbnRh
aW4KKyAgICAgICAgaWRlbnRpZmllciB2YWx1ZXMgb2YgMCB3aGVuIHRoZXkgc2hvdWxkbid0KSBh
cyB3ZWxsIGFzIGl0ZW1zIHRoYXQgZmFpbCBkZWNvZGluZyAod2hpY2gsIGluIHRoZSBjYXNlIG9m
IHRoZSBHUFUKKyAgICAgICAgcHJvY2VzcywgY29ycmVzcG9uZHMgdG8gSVBDIGRlY29kaW5nIGZh
aWx1cmVzKS4KKwogMjAyMS0wMS0yMSAgWW91ZW5uIEZhYmxldCAgPHlvdWVubkBhcHBsZS5jb20+
CiAKICAgICAgICAgVmFsaWRhdGUgSXRlbUhhbmRsZXMgd2hlbiBkZWNvZGluZyB0aGVtIGluIEdQ
VVByb2Nlc3MKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dl
YktpdC9DaGFuZ2VMb2cKaW5kZXggMGFhYzI1NmZkODA4ZGE0NWFkMjUxNWZkMTM2OTZiZjJhMmQ4
YTEwNi4uMzYxZTBjZTJiMTU0Mjc0NjFjN2ViYWY3Njg1ZmUyNTM0ZmYzYTNkYSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cK
QEAgLTEsMyArMSwzOCBAQAorMjAyMS0wMS0yMSAgV2Vuc29uIEhzaWVoICA8d2Vuc29uX2hzaWVo
QGFwcGxlLmNvbT4KKworICAgICAgICBUaGUgd2ViIHByb2Nlc3Mgc2hvdWxkIGJlIGtpbGxlZCBh
ZnRlciBmYWlsaW5nIHRvIGRlY29kZSBkaXNwbGF5IGxpc3QgaXRlbXMgaW4gdGhlIEdQVSBwcm9j
ZXNzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTkw
OTcKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzcxNTQ2NTI2PgorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEhhbmRsZSBgU3RvcFJlcGxheVJlYXNvbjo6
SW52YWxpZEl0ZW1gIGJ5IGtpbGxpbmcgdGhlIHdlYiBwcm9jZXNzIHZpYSBNRVNTQUdFX0NIRUNL
LiBTZWUgYmVsb3cgKGFuZAorICAgICAgICBXZWJDb3JlL0NoYW5nZUxvZykgZm9yIG1vcmUgZGV0
YWlscy4KKworICAgICAgICAqIEdQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFj
a2VuZC5jcHA6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OmNyZWF0
ZUltYWdlQnVmZmVyKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6
bmV4dERlc3RpbmF0aW9uSW1hZ2VCdWZmZXJBZnRlckFwcGx5aW5nRGlzcGxheUxpc3RzKToKKwor
ICAgICAgICBSZXBsYWNlIGEgbnVtYmVyIEZJWE1FcyB0aHJvdWdob3V0IHRoZXNlIElQQyBtZXNz
YWdlIGhhbmRsZXJzIHdpdGggYE1FU1NBR0VfQ0hFQ0tgcy4gQWRkaXRpb25hbGx5LCBhZGQgYSBu
ZXcKKyAgICAgICAgYE1FU1NBR0VfQ0hFQ0tgIGZvciB0aGUgY2FzZSB3aGVyZSB3ZSBzdG9wcGVk
IHJlcGxheSBlYXJseSBkdWUgdG8gYSBjb3JydXB0ZWQgb3IgaW52YWxpZCBkaXNwbGF5IGxpc3Qg
aXRlbS4KKworICAgICAgICAoV2ViS2l0OjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjp3YWtlVXBB
bmRBcHBseURpc3BsYXlMaXN0KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlUmVuZGVyaW5nQmFj
a2VuZDo6c2V0TmV4dEl0ZW1CdWZmZXJUb1JlYWQpOgorCisgICAgICAgIFNpbXBseSByZW1vdmUg
dGhlIEZJWE1FIGFuZCBlYXJseSByZXR1cm4gaGVyZTsgdGhpcyBjYW4gb25seSBoYXBwZW4gaW4g
dGhlIGNhc2Ugd2hlcmUgYSBjb21wcm9taXNlZCB3ZWIgY29udGVudAorICAgICAgICBwcm9jZXNz
IGF0dGVtcHRzIHRvIGFwcGVuZCByZWR1bmRhbnQgaXRlbSBidWZmZXIgY2hhbmdlIGl0ZW1zLiBI
b3dldmVyLCBkb2luZyBzbyB3aWxsIGVpdGhlciBiZSAoMSkgaGFybWxlc3MsCisgICAgICAgIHNp
bmNlIHRoZSBwZW5kaW5nIGl0ZW0gYnVmZmVyIGluZm9ybWF0aW9uIHdpbGwganVzdCBiZSBvdmVy
d3JpdHRlbiwgb3IgKDIpIHJlc3VsdCBpbiBoaXR0aW5nIGEgTUVTU0FHRV9DSEVDSworICAgICAg
ICB3aGVuIGRlY29kaW5nIGl0ZW1zIGlmIHdlIHRyeSB0byBleGVjdXRlIHRoZSBjb250ZW50cyBv
ZiBhbm90aGVyIGl0ZW0gYnVmZmVyIHRoYXQgaGFzIG5vdCBiZWVuIHdyaXR0ZW4gdG8uCisKKyAg
ICAgICAgKFdlYktpdDo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6Y2FjaGVOYXRpdmVJbWFnZSk6
CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OmNhY2hlRm9udCk6Cisg
ICAgICAgIChXZWJLaXQ6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OmRpZENyZWF0ZVNoYXJlZERp
c3BsYXlMaXN0SGFuZGxlKToKKyAgICAgICAgKiBHUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJl
bmRlcmluZ0JhY2tlbmQuaDoKKyAgICAgICAgKiBHUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJl
bmRlcmluZ0JhY2tlbmQubWVzc2FnZXMuaW46CisKKyAgICAgICAgTWFyayBhbGwgb2YgdGhlc2Ug
YXMgYFdhbnRzQ29ubmVjdGlvbmAsIHNvIHRoYXQgd2UgY2FuIHVzZSB0aGUgYElQQzo6Q29ubmVj
dGlvbmAgb2JqZWN0IHRvIHBlcmZvcm0gbWVzc2FnZQorICAgICAgICBjaGVja2luZyB1cG9uIHZh
cmlvdXMgZmFpbHVyZXMgYWJvdmUuCisKIDIwMjEtMDEtMjEgIEFkaXR5YSBLZWVydGhpICA8YWtl
ZXJ0aGlAYXBwbGUuY29tPgogCiAgICAgICAgIFttYWNPU10gVGl0bGViYXIgc2VwYXJhdG9yIGRv
ZXNuJ3Qgc2hvdyB3aGVuIFdLV2ViVmlldyBpcyBzY3JvbGxlZApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlz
dC5jcHAKaW5kZXggOTgxYTA5N2RlOTFmY2RiOWM0MTQwNjI0Y2JkM2MxMGUzYjQzNDRiMC4uNmZm
NTZiNjJjZGIxOWIzMGE1NmI0NzdjZjRhM2E5M2YyMTRkYjlmNyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxh
eUxpc3QuY3BwCkBAIC0xMTUsMTIgKzExNSwxMiBAQCBTdHJpbmcgRGlzcGxheUxpc3Q6OmFzVGV4
dChBc1RleHRGbGFncyBmbGFncykgY29uc3QKIHsKICAgICBUZXh0U3RyZWFtIHN0cmVhbShUZXh0
U3RyZWFtOjpMaW5lTW9kZTo6TXVsdGlwbGVMaW5lLCBUZXh0U3RyZWFtOjpGb3JtYXR0aW5nOjpT
VkdTdHlsZVJlY3QpOwogICAgIGZvciAoYXV0byBbaXRlbSwgZXh0ZW50LCBpdGVtU2l6ZUluQnVm
ZmVyXSA6ICp0aGlzKSB7Ci0gICAgICAgIGlmICghc2hvdWxkRHVtcEZvckZsYWdzKGZsYWdzLCBp
dGVtKSkKKyAgICAgICAgaWYgKCFzaG91bGREdW1wRm9yRmxhZ3MoZmxhZ3MsICppdGVtKSkKICAg
ICAgICAgICAgIGNvbnRpbnVlOwogCiAgICAgICAgIFRleHRTdHJlYW06Okdyb3VwU2NvcGUgZ3Jv
dXAoc3RyZWFtKTsKICAgICAgICAgc3RyZWFtIDw8IGl0ZW07Ci0gICAgICAgIGlmIChpdGVtLmlz
RHJhd2luZ0l0ZW0oKSkKKyAgICAgICAgaWYgKGl0ZW0tPmlzRHJhd2luZ0l0ZW0oKSkKICAgICAg
ICAgICAgIHN0cmVhbSA8PCAiIGV4dGVudCAiIDw8IGV4dGVudDsKICAgICB9CiAgICAgcmV0dXJu
IHN0cmVhbS5yZWxlYXNlKCk7CkBAIC0xMzQsNyArMTM0LDcgQEAgdm9pZCBEaXNwbGF5TGlzdDo6
ZHVtcChUZXh0U3RyZWFtJiB0cykgY29uc3QKICAgICBmb3IgKGF1dG8gW2l0ZW0sIGV4dGVudCwg
aXRlbVNpemVJbkJ1ZmZlcl0gOiAqdGhpcykgewogICAgICAgICBUZXh0U3RyZWFtOjpHcm91cFNj
b3BlIGdyb3VwKHRzKTsKICAgICAgICAgdHMgPDwgaXRlbTsKLSAgICAgICAgaWYgKGl0ZW0uaXNE
cmF3aW5nSXRlbSgpKQorICAgICAgICBpZiAoaXRlbS0+aXNEcmF3aW5nSXRlbSgpKQogICAgICAg
ICAgICAgdHMgPDwgIiBleHRlbnQgIiA8PCBleHRlbnQ7CiAgICAgfQogICAgIHRzLnN0YXJ0R3Jv
dXAoKTsKQEAgLTMyMiw3ICszMjIsNyBAQCB2b2lkIERpc3BsYXlMaXN0OjphcHBlbmQoSXRlbUhh
bmRsZSBpdGVtKQogCiBib29sIERpc3BsYXlMaXN0OjppdGVyYXRvcjo6YXRFbmQoKSBjb25zdAog
ewotICAgIGlmIChtX2Rpc3BsYXlMaXN0LmlzRW1wdHkoKSkKKyAgICBpZiAobV9kaXNwbGF5TGlz
dC5pc0VtcHR5KCkgfHwgIW1faXNWYWxpZCkKICAgICAgICAgcmV0dXJuIHRydWU7CiAKICAgICBh
dXRvJiBpdGVtcyA9ICptX2Rpc3BsYXlMaXN0Lm1faXRlbXM7CkBAIC0zNTIsMTkgKzM1MiwxNiBA
QCB2b2lkIERpc3BsYXlMaXN0OjppdGVyYXRvcjo6dXBkYXRlQ3VycmVudEl0ZW0oKQogICAgICAg
ICBhdXRvIGRhdGFMZW5ndGggPSByZWludGVycHJldF9jYXN0PHVpbnQ2NF90Kj4obV9jdXJzb3Ip
WzFdOwogICAgICAgICBhdXRvKiBzdGFydE9mRGF0YSA9IG1fY3Vyc29yICsgMiAqIHNpemVvZih1
aW50NjRfdCk7CiAgICAgICAgIGF1dG8gZGVjb2RlZEl0ZW1IYW5kbGUgPSBjbGllbnQtPmRlY29k
ZUl0ZW0oc3RhcnRPZkRhdGEsIGRhdGFMZW5ndGgsIGl0ZW1UeXBlLCBtX2N1cnJlbnRCdWZmZXJG
b3JJdGVtKTsKLSAgICAgICAgaWYgKCFkZWNvZGVkSXRlbUhhbmRsZSkgewotICAgICAgICAgICAg
Ly8gRklYTUU6IEluc3RlYWQgb2YgY3Jhc2hpbmcsIHRoaXMgbmVlZHMgdG8gZmFpbCBncmFjZWZ1
bGx5IGFuZCBpbmZvcm0gdGhlIGNhbGxlci4KLSAgICAgICAgICAgIC8vIEZvciB0aGUgdGltZSBi
ZWluZywgdGhpcyBhc3NlcnRpb24gbWFrZXMgYnVncyBpbiBpdGVtIGJ1ZmZlciBlbmNvZGluZyBs
b2dpYyBlYXNpZXIKLSAgICAgICAgICAgIC8vIHRvIGNhdGNoIGJ5IGF2b2lkaW5nIG15c3Rlcmlv
dXMgb3V0LW9mLWJvdW5kcyByZWFkcyBhbmQgaW5jb3JyZWN0bHkgYWxpZ25lZCBpdGVtcwotICAg
ICAgICAgICAgLy8gZG93biB0aGUgbGluZS4KLSAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05P
VF9SRUFDSEVEKCk7CisgICAgICAgIGlmIChVTkxJS0VMWSghZGVjb2RlZEl0ZW1IYW5kbGUpKSB7
CisgICAgICAgICAgICBtX2lzVmFsaWQgPSBmYWxzZTsKKyAgICAgICAgICAgIHJldHVybjsKICAg
ICAgICAgfQogICAgICAgICBtX2N1cnJlbnRCdWZmZXJGb3JJdGVtWzBdID0gc3RhdGljX2Nhc3Q8
dWludDhfdD4oaXRlbVR5cGUpOwogICAgICAgICBtX2N1cnJlbnRJdGVtU2l6ZUluQnVmZmVyID0g
MiAqIHNpemVvZih1aW50NjRfdCkgKyByb3VuZFVwVG9NdWx0aXBsZU9mKGFsaWdub2YodWludDY0
X3QpLCBkYXRhTGVuZ3RoKTsKICAgICB9IGVsc2UgewotICAgICAgICBpZiAoIUl0ZW1IYW5kbGUg
eyBtX2N1cnNvciB9LmRlY29kZUludG8oeyBtX2N1cnJlbnRCdWZmZXJGb3JJdGVtIH0pKSB7Ci0g
ICAgICAgICAgICAvLyBGSVhNRTogSW5zdGVhZCBvZiBjcmFzaGluZywgdGhpcyBuZWVkcyB0byBm
YWlsIGdyYWNlZnVsbHkgYW5kIGluZm9ybSB0aGUgY2FsbGVyLgotICAgICAgICAgICAgUkVMRUFT
RV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgaWYgKFVOTElLRUxZKCFJdGVtSGFuZGxl
IHsgbV9jdXJzb3IgfS5kZWNvZGVJbnRvKHsgbV9jdXJyZW50QnVmZmVyRm9ySXRlbSB9KSkpIHsK
KyAgICAgICAgICAgIG1faXNWYWxpZCA9IGZhbHNlOworICAgICAgICAgICAgcmV0dXJuOwogICAg
ICAgICB9CiAgICAgICAgIG1fY3VycmVudEl0ZW1TaXplSW5CdWZmZXIgPSBwYWRkZWRTaXplT2ZU
eXBlQW5kSXRlbTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3QuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdC5oCmluZGV4IGE5MDJmMzgzNDEz
NjFmZThmNTc1YzBlODQ0MWEyZWFlMWU5Yjg5NTUuLjkyMDllN2VlZDJmNjRlYjBiMDgyYTFjMDQz
OWRmMDcyM2UyNzU3ZGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdC5oCkBAIC0xMTgsNyArMTE4LDcg
QEAgcHVibGljOgogICAgICAgICB2b2lkIG9wZXJhdG9yKysoKSB7IGFkdmFuY2UoKTsgfQogCiAg
ICAgICAgIHN0cnVjdCBWYWx1ZSB7Ci0gICAgICAgICAgICBJdGVtSGFuZGxlIGl0ZW07CisgICAg
ICAgICAgICBPcHRpb25hbDxJdGVtSGFuZGxlPiBpdGVtOwogICAgICAgICAgICAgT3B0aW9uYWw8
RmxvYXRSZWN0PiBleHRlbnQ7CiAgICAgICAgICAgICBzaXplX3QgaXRlbVNpemVJbkJ1ZmZlciB7
IDAgfTsKICAgICAgICAgfTsKQEAgLTEyNiw5ICsxMjYsOSBAQCBwdWJsaWM6CiAgICAgICAgIFZh
bHVlIG9wZXJhdG9yKigpIGNvbnN0CiAgICAgICAgIHsKICAgICAgICAgICAgIHJldHVybiB7Ci0g
ICAgICAgICAgICAgICAgSXRlbUhhbmRsZSB7IG1fY3VycmVudEJ1ZmZlckZvckl0ZW0gfSwKKyAg
ICAgICAgICAgICAgICBtX2lzVmFsaWQgPyBPcHRpb25hbDxJdGVtSGFuZGxlPiB7eyBtX2N1cnJl
bnRCdWZmZXJGb3JJdGVtIH19IDogV1RGOjpudWxsb3B0LAogICAgICAgICAgICAgICAgIG1fY3Vy
cmVudEV4dGVudCwKLSAgICAgICAgICAgICAgICBtX2N1cnJlbnRJdGVtU2l6ZUluQnVmZmVyCisg
ICAgICAgICAgICAgICAgbV9jdXJyZW50SXRlbVNpemVJbkJ1ZmZlciwKICAgICAgICAgICAgIH07
CiAgICAgICAgIH0KIApAQCAtMTUyLDYgKzE1Miw3IEBAIHB1YmxpYzoKICAgICAgICAgdWludDhf
dCogbV9jdXJyZW50QnVmZmVyRm9ySXRlbSB7IG51bGxwdHIgfTsKICAgICAgICAgT3B0aW9uYWw8
RmxvYXRSZWN0PiBtX2N1cnJlbnRFeHRlbnQ7CiAgICAgICAgIHNpemVfdCBtX2N1cnJlbnRJdGVt
U2l6ZUluQnVmZmVyIHsgMCB9OworICAgICAgICBib29sIG1faXNWYWxpZCB7IHRydWUgfTsKICAg
ICB9OwogCiAgICAgaXRlcmF0b3IgYmVnaW4oKSBjb25zdCB7IHJldHVybiB7ICp0aGlzIH07IH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0
cy9EaXNwbGF5TGlzdFJlcGxheWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlcGxheWVyLmNwcAppbmRleCA0MmUxNDEyZTU0
ODQ2YjBhMmJkODQ1NjNlYmFmNjI5NjhhNTUzYjdjLi4zMjVkYjk3MzllOWZjZjIxMzFlOTE0ZTZh
ZTVjODVhODJlYmFlMWM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZXBsYXllci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVwbGF5ZXIu
Y3BwCkBAIC0xNDEsMTYgKzE0MSwyMSBAQCBSZXBsYXlSZXN1bHQgUmVwbGF5ZXI6OnJlcGxheShj
b25zdCBGbG9hdFJlY3QmIGluaXRpYWxDbGlwLCBib29sIHRyYWNrUmVwbGF5TGlzdAogICAgICAg
ICAgICAgY29udGludWU7CiAgICAgICAgIH0KIAorICAgICAgICBpZiAoIWl0ZW0pIHsKKyAgICAg
ICAgICAgIHJlc3VsdC5yZWFzb25Gb3JTdG9wcGluZyA9IFN0b3BSZXBsYXlSZWFzb246OkludmFs
aWRJdGVtOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKwogICAgICAgICBMT0dfV0lU
SF9TVFJFQU0oRGlzcGxheUxpc3RzLCBzdHJlYW0gPDwgImFwcGx5aW5nICIgPDwgaSsrIDw8ICIg
IiA8PCBpdGVtKTsKIAotICAgICAgICBpZiAoaXRlbS5pczxNZXRhQ29tbWFuZENoYW5nZURlc3Rp
bmF0aW9uSW1hZ2VCdWZmZXI+KCkpIHsKKyAgICAgICAgaWYgKGl0ZW0tPmlzPE1ldGFDb21tYW5k
Q2hhbmdlRGVzdGluYXRpb25JbWFnZUJ1ZmZlcj4oKSkgewogICAgICAgICAgICAgcmVzdWx0Lm51
bWJlck9mQnl0ZXNSZWFkICs9IGl0ZW1TaXplSW5CdWZmZXI7CiAgICAgICAgICAgICByZXN1bHQu
cmVhc29uRm9yU3RvcHBpbmcgPSBTdG9wUmVwbGF5UmVhc29uOjpDaGFuZ2VEZXN0aW5hdGlvbklt
YWdlQnVmZmVyOwotICAgICAgICAgICAgcmVzdWx0Lm5leHREZXN0aW5hdGlvbkltYWdlQnVmZmVy
ID0gaXRlbS5nZXQ8TWV0YUNvbW1hbmRDaGFuZ2VEZXN0aW5hdGlvbkltYWdlQnVmZmVyPigpLmlk
ZW50aWZpZXIoKTsKKyAgICAgICAgICAgIHJlc3VsdC5uZXh0RGVzdGluYXRpb25JbWFnZUJ1ZmZl
ciA9IGl0ZW0tPmdldDxNZXRhQ29tbWFuZENoYW5nZURlc3RpbmF0aW9uSW1hZ2VCdWZmZXI+KCku
aWRlbnRpZmllcigpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KIAotICAgICAgICBp
ZiAoYXV0byBbcmVhc29uRm9yU3RvcHBpbmcsIG1pc3NpbmdDYWNoZWRSZXNvdXJjZUlkZW50aWZp
ZXJdID0gYXBwbHlJdGVtKGl0ZW0pOyByZWFzb25Gb3JTdG9wcGluZykgeworICAgICAgICBpZiAo
YXV0byBbcmVhc29uRm9yU3RvcHBpbmcsIG1pc3NpbmdDYWNoZWRSZXNvdXJjZUlkZW50aWZpZXJd
ID0gYXBwbHlJdGVtKCppdGVtKTsgcmVhc29uRm9yU3RvcHBpbmcpIHsKICAgICAgICAgICAgIHJl
c3VsdC5yZWFzb25Gb3JTdG9wcGluZyA9ICpyZWFzb25Gb3JTdG9wcGluZzsKICAgICAgICAgICAg
IHJlc3VsdC5taXNzaW5nQ2FjaGVkUmVzb3VyY2VJZGVudGlmaWVyID0gV1RGTW92ZShtaXNzaW5n
Q2FjaGVkUmVzb3VyY2VJZGVudGlmaWVyKTsKICAgICAgICAgICAgIGJyZWFrOwpAQCAtMTU5LDgg
KzE2NCw4IEBAIFJlcGxheVJlc3VsdCBSZXBsYXllcjo6cmVwbGF5KGNvbnN0IEZsb2F0UmVjdCYg
aW5pdGlhbENsaXAsIGJvb2wgdHJhY2tSZXBsYXlMaXN0CiAgICAgICAgIHJlc3VsdC5udW1iZXJP
ZkJ5dGVzUmVhZCArPSBpdGVtU2l6ZUluQnVmZmVyOwogCiAgICAgICAgIGlmIChVTkxJS0VMWSh0
cmFja1JlcGxheUxpc3QpKSB7Ci0gICAgICAgICAgICByZXBsYXlMaXN0LT5hcHBlbmQoaXRlbSk7
Ci0gICAgICAgICAgICBpZiAoaXRlbS5pc0RyYXdpbmdJdGVtKCkpCisgICAgICAgICAgICByZXBs
YXlMaXN0LT5hcHBlbmQoKml0ZW0pOworICAgICAgICAgICAgaWYgKGl0ZW0tPmlzRHJhd2luZ0l0
ZW0oKSkKICAgICAgICAgICAgICAgICByZXBsYXlMaXN0LT5hZGREcmF3aW5nSXRlbUV4dGVudChX
VEZNb3ZlKGV4dGVudCkpOwogICAgICAgICB9CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVwbGF5ZXIu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5
TGlzdFJlcGxheWVyLmgKaW5kZXggZDQxNGE2ZmEwNTAyZTE2Zjc3OWZiYTYyZDIyNDE5NjM0MjNl
YjBhZi4uZDJkZTBiNmZlNWU4YTFkMGM2YmYxZTkxMWM2NjcyZmQ0YWI2NmFkNCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlM
aXN0UmVwbGF5ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNw
bGF5bGlzdHMvRGlzcGxheUxpc3RSZXBsYXllci5oCkBAIC00Miw3ICs0Miw3IEBAIGVudW0gY2xh
c3MgU3RvcFJlcGxheVJlYXNvbiA6IHVpbnQ4X3QgewogICAgIFJlcGxheWVkQWxsSXRlbXMsCiAg
ICAgTWlzc2luZ0NhY2hlZFJlc291cmNlLAogICAgIENoYW5nZURlc3RpbmF0aW9uSW1hZ2VCdWZm
ZXIsCi0gICAgRGVjb2RpbmdGYWlsdXJlIC8vIEZJWE1FOiBQcm9wYWdhdGUgZGVjb2RpbmcgZXJy
b3JzIHRvIGRpc3BsYXkgbGlzdCByZXBsYXkgY2xpZW50cyB0aHJvdWdoIHRoaXMgZW51bSBhcyB3
ZWxsLgorICAgIEludmFsaWRJdGVtCiB9OwogCiBzdHJ1Y3QgUmVwbGF5UmVzdWx0IHsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdC
YWNrZW5kLmNwcCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5k
ZXJpbmdCYWNrZW5kLmNwcAppbmRleCAxY2I1MGUzN2I2MGFmMDQwNDZmMDc2ZTM5NmM4MjgxMzA1
NjU5NTZkLi4yODZkYzRjZTdiNzA0YWI2MDU1YjI3YzdlMTAxMjVhYjk1MDMzNGMyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFj
a2VuZC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJl
bmRlcmluZ0JhY2tlbmQuY3BwCkBAIC00NCw2ICs0NCw5IEBACiAjaW5jbHVkZSA8d3RmL2NvY29h
L01hY2hTZW1hcGhvcmUuaD4KICNlbmRpZgogCisjZGVmaW5lIE1FU1NBR0VfQ0hFQ0soYXNzZXJ0
aW9uKSBNRVNTQUdFX0NIRUNLX0JBU0UoYXNzZXJ0aW9uLCAoJmNvbm5lY3Rpb24pKQorI2RlZmlu
ZSBNRVNTQUdFX0NIRUNLX1dJVEhfUkVUVVJOX1ZBTFVFKGFzc2VydGlvbiwgcmV0dXJuVmFsdWUp
IE1FU1NBR0VfQ0hFQ0tfV0lUSF9SRVRVUk5fVkFMVUVfQkFTRShhc3NlcnRpb24sICgmY29ubmVj
dGlvbiksIHJldHVyblZhbHVlKQorCiBuYW1lc3BhY2UgV2ViS2l0IHsKIHVzaW5nIG5hbWVzcGFj
ZSBXZWJDb3JlOwogCkBAIC0xMTUsNyArMTE4LDcgQEAgdm9pZCBSZW1vdGVSZW5kZXJpbmdCYWNr
ZW5kOjpkaWRGbHVzaChEaXNwbGF5TGlzdDo6Rmx1c2hJZGVudGlmaWVyIGZsdXNoSWRlbnRpZmkK
ICAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHk6OkRpZEZsdXNo
KGZsdXNoSWRlbnRpZmllciwgcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKSwgbV9yZW5kZXJp
bmdCYWNrZW5kSWRlbnRpZmllcik7CiB9CiAKLXZvaWQgUmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6
Y3JlYXRlSW1hZ2VCdWZmZXIoY29uc3QgRmxvYXRTaXplJiBsb2dpY2FsU2l6ZSwgUmVuZGVyaW5n
TW9kZSByZW5kZXJpbmdNb2RlLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIENvbG9yU3BhY2UgY29s
b3JTcGFjZSwgUGl4ZWxGb3JtYXQgcGl4ZWxGb3JtYXQsIFJlbmRlcmluZ1Jlc291cmNlSWRlbnRp
ZmllciByZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpCit2b2lkIFJlbW90ZVJlbmRlcmluZ0Jh
Y2tlbmQ6OmNyZWF0ZUltYWdlQnVmZmVyKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgY29u
c3QgRmxvYXRTaXplJiBsb2dpY2FsU2l6ZSwgUmVuZGVyaW5nTW9kZSByZW5kZXJpbmdNb2RlLCBm
bG9hdCByZXNvbHV0aW9uU2NhbGUsIENvbG9yU3BhY2UgY29sb3JTcGFjZSwgUGl4ZWxGb3JtYXQg
cGl4ZWxGb3JtYXQsIFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciByZW5kZXJpbmdSZXNvdXJj
ZUlkZW50aWZpZXIpCiB7CiAgICAgQVNTRVJUKCFSdW5Mb29wOjppc01haW4oKSk7CiAgICAgQVNT
RVJUKHJlbmRlcmluZ01vZGUgPT0gUmVuZGVyaW5nTW9kZTo6QWNjZWxlcmF0ZWQgfHwgcmVuZGVy
aW5nTW9kZSA9PSBSZW5kZXJpbmdNb2RlOjpVbmFjY2VsZXJhdGVkKTsKQEAgLTEzNiw3ICsxMzks
NyBAQCB2b2lkIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OmNyZWF0ZUltYWdlQnVmZmVyKGNvbnN0
IEZsb2F0U2l6ZSYgbG9naWNhbFNpemUsIFJlbgogICAgIG1fcmVtb3RlUmVzb3VyY2VDYWNoZS5j
YWNoZUltYWdlQnVmZmVyKG1ha2VSZWYoKmltYWdlQnVmZmVyKSk7CiAKICAgICBpZiAobV9wZW5k
aW5nV2FrZXVwSW5mbyAmJiBtX3BlbmRpbmdXYWtldXBJbmZvLT5zaG91bGRQZXJmb3JtV2FrZXVw
KHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcikpCi0gICAgICAgIHdha2VVcEFuZEFwcGx5RGlz
cGxheUxpc3Qoc3RkOjpleGNoYW5nZShtX3BlbmRpbmdXYWtldXBJbmZvLCBXVEY6Om51bGxvcHQp
LT5hcmd1bWVudHMpOworICAgICAgICB3YWtlVXBBbmRBcHBseURpc3BsYXlMaXN0KGNvbm5lY3Rp
b24sIHN0ZDo6ZXhjaGFuZ2UobV9wZW5kaW5nV2FrZXVwSW5mbywgV1RGOjpudWxsb3B0KS0+YXJn
dW1lbnRzKTsKIH0KIAogRGlzcGxheUxpc3Q6OlJlcGxheVJlc3VsdCBSZW1vdGVSZW5kZXJpbmdC
YWNrZW5kOjpzdWJtaXQoY29uc3QgRGlzcGxheUxpc3Q6OkRpc3BsYXlMaXN0JiBkaXNwbGF5TGlz
dCwgSW1hZ2VCdWZmZXImIGRlc3RpbmF0aW9uKQpAQCAtMTYwLDcgKzE2Myw3IEBAIERpc3BsYXlM
aXN0OjpSZXBsYXlSZXN1bHQgUmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6c3VibWl0KGNvbnN0IERp
c3BsYXlMaXN0OjpEaXNwCiAgICAgfS5yZXBsYXkoKTsKIH0KIAotUmVmUHRyPEltYWdlQnVmZmVy
PiBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpuZXh0RGVzdGluYXRpb25JbWFnZUJ1ZmZlckFmdGVy
QXBwbHlpbmdEaXNwbGF5TGlzdHMoSW1hZ2VCdWZmZXImIGluaXRpYWxEZXN0aW5hdGlvbiwgc2l6
ZV90IGluaXRpYWxPZmZzZXQsIERpc3BsYXlMaXN0UmVhZGVySGFuZGxlJiBoYW5kbGUsIEdQVVBy
b2Nlc3NXYWtldXBSZWFzb24gcmVhc29uKQorUmVmUHRyPEltYWdlQnVmZmVyPiBSZW1vdGVSZW5k
ZXJpbmdCYWNrZW5kOjpuZXh0RGVzdGluYXRpb25JbWFnZUJ1ZmZlckFmdGVyQXBwbHlpbmdEaXNw
bGF5TGlzdHMoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBJbWFnZUJ1ZmZlciYgaW5pdGlh
bERlc3RpbmF0aW9uLCBzaXplX3QgaW5pdGlhbE9mZnNldCwgRGlzcGxheUxpc3RSZWFkZXJIYW5k
bGUmIGhhbmRsZSwgR1BVUHJvY2Vzc1dha2V1cFJlYXNvbiByZWFzb24pCiB7CiAgICAgYXV0byBk
ZXN0aW5hdGlvbiA9IG1ha2VSZWZQdHIoaW5pdGlhbERlc3RpbmF0aW9uKTsKICAgICBhdXRvIGhh
bmRsZVByb3RlY3RvciA9IG1ha2VSZWYoaGFuZGxlKTsKQEAgLTE3MywzMCArMTc2LDE4IEBAIFJl
ZlB0cjxJbWFnZUJ1ZmZlcj4gUmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6bmV4dERlc3RpbmF0aW9u
SW1hZ2VCdWZmZXJBZnRlckFwcGx5CiAKICAgICB3aGlsZSAoZGVzdGluYXRpb24pIHsKICAgICAg
ICAgYXV0byBkaXNwbGF5TGlzdCA9IGhhbmRsZS5kaXNwbGF5TGlzdEZvclJlYWRpbmcob2Zmc2V0
LCBzaXplVG9SZWFkLCAqdGhpcyk7Ci0gICAgICAgIGlmIChVTkxJS0VMWSghZGlzcGxheUxpc3Qp
KSB7Ci0gICAgICAgICAgICAvLyBGSVhNRTogQWRkIGEgbWVzc2FnZSBjaGVjayB0byB0ZXJtaW5h
dGUgdGhlIHdlYiBwcm9jZXNzLgotICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0g
ICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQorICAgICAgICBNRVNTQUdFX0NIRUNLX1dJVEhf
UkVUVVJOX1ZBTFVFKGRpc3BsYXlMaXN0LCBudWxscHRyKTsKIAogICAgICAgICBhdXRvIHJlc3Vs
dCA9IHN1Ym1pdCgqZGlzcGxheUxpc3QsICpkZXN0aW5hdGlvbik7CiAgICAgICAgIHNpemVUb1Jl
YWQgPSBoYW5kbGUuYWR2YW5jZShyZXN1bHQubnVtYmVyT2ZCeXRlc1JlYWQpOworICAgICAgICBN
RVNTQUdFX0NIRUNLX1dJVEhfUkVUVVJOX1ZBTFVFKHJlc3VsdC5yZWFzb25Gb3JTdG9wcGluZyAh
PSBEaXNwbGF5TGlzdDo6U3RvcFJlcGxheVJlYXNvbjo6SW52YWxpZEl0ZW0sIG51bGxwdHIpOwog
CiAgICAgICAgIENoZWNrZWRTaXplIGNoZWNrZWRPZmZzZXQgPSBvZmZzZXQ7CiAgICAgICAgIGNo
ZWNrZWRPZmZzZXQgKz0gcmVzdWx0Lm51bWJlck9mQnl0ZXNSZWFkOwotICAgICAgICBpZiAoVU5M
SUtFTFkoY2hlY2tlZE9mZnNldC5oYXNPdmVyZmxvd2VkKCkpKSB7Ci0gICAgICAgICAgICAvLyBG
SVhNRTogQWRkIGEgbWVzc2FnZSBjaGVjayB0byB0ZXJtaW5hdGUgdGhlIHdlYiBwcm9jZXNzLgot
ICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgICAgICAgICBicmVhazsKLSAg
ICAgICAgfQorICAgICAgICBNRVNTQUdFX0NIRUNLX1dJVEhfUkVUVVJOX1ZBTFVFKCFjaGVja2Vk
T2Zmc2V0Lmhhc092ZXJmbG93ZWQoKSwgbnVsbHB0cik7CiAKICAgICAgICAgb2Zmc2V0ID0gY2hl
Y2tlZE9mZnNldC51bnNhZmVHZXQoKTsKLQotICAgICAgICBpZiAoVU5MSUtFTFkob2Zmc2V0ID4g
aGFuZGxlLnNoYXJlZE1lbW9yeSgpLnNpemUoKSkpIHsKLSAgICAgICAgICAgIC8vIEZJWE1FOiBB
ZGQgYSBtZXNzYWdlIGNoZWNrIHRvIHRlcm1pbmF0ZSB0aGUgd2ViIHByb2Nlc3MuCi0gICAgICAg
ICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9
CisgICAgICAgIE1FU1NBR0VfQ0hFQ0tfV0lUSF9SRVRVUk5fVkFMVUUob2Zmc2V0IDw9IGhhbmRs
ZS5zaGFyZWRNZW1vcnkoKS5zaXplKCksIG51bGxwdHIpOwogCiAgICAgICAgIGlmIChyZXN1bHQu
cmVhc29uRm9yU3RvcHBpbmcgPT0gRGlzcGxheUxpc3Q6OlN0b3BSZXBsYXlSZWFzb246OkNoYW5n
ZURlc3RpbmF0aW9uSW1hZ2VCdWZmZXIpIHsKICAgICAgICAgICAgIGRlc3RpbmF0aW9uID0gbWFr
ZVJlZlB0cihtX3JlbW90ZVJlc291cmNlQ2FjaGUuY2FjaGVkSW1hZ2VCdWZmZXIoKnJlc3VsdC5u
ZXh0RGVzdGluYXRpb25JbWFnZUJ1ZmZlcikpOwpAQCAtMjMyLDI2ICsyMjMsMTMgQEAgUmVmUHRy
PEltYWdlQnVmZmVyPiBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpuZXh0RGVzdGluYXRpb25JbWFn
ZUJ1ZmZlckFmdGVyQXBwbHkKICAgICAgICAgICAgICAgICBicmVhazsKIAogICAgICAgICAgICAg
c2l6ZVRvUmVhZCA9IGhhbmRsZS51bnJlYWRCeXRlcygpOwotICAgICAgICAgICAgaWYgKFVOTElL
RUxZKCFzaXplVG9SZWFkKSkgewotICAgICAgICAgICAgICAgIC8vIEZJWE1FOiBBZGQgYSBtZXNz
YWdlIGNoZWNrIHRvIHRlcm1pbmF0ZSB0aGUgd2ViIHByb2Nlc3MuCi0gICAgICAgICAgICAgICAg
QVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAg
ICB9CisgICAgICAgICAgICBNRVNTQUdFX0NIRUNLX1dJVEhfUkVUVVJOX1ZBTFVFKHNpemVUb1Jl
YWQsIG51bGxwdHIpOwogCiAgICAgICAgICAgICBhdXRvIG5ld0Rlc3RpbmF0aW9uSWRlbnRpZmll
ciA9IG1ha2VPYmplY3RJZGVudGlmaWVyPFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllclR5cGU+
KHJlc3VtZVJlYWRpbmdJbmZvLT5kZXN0aW5hdGlvbik7Ci0gICAgICAgICAgICBpZiAoVU5MSUtF
TFkoIW5ld0Rlc3RpbmF0aW9uSWRlbnRpZmllcikpIHsKLSAgICAgICAgICAgICAgICAvLyBGSVhN
RTogQWRkIGEgbWVzc2FnZSBjaGVjayB0byB0ZXJtaW5hdGUgdGhlIHdlYiBwcm9jZXNzLgotICAg
ICAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICAgICAgICAgIGJyZWFr
OwotICAgICAgICAgICAgfQorICAgICAgICAgICAgTUVTU0FHRV9DSEVDS19XSVRIX1JFVFVSTl9W
QUxVRShuZXdEZXN0aW5hdGlvbklkZW50aWZpZXIsIG51bGxwdHIpOwogCiAgICAgICAgICAgICBk
ZXN0aW5hdGlvbiA9IG1ha2VSZWZQdHIobV9yZW1vdGVSZXNvdXJjZUNhY2hlLmNhY2hlZEltYWdl
QnVmZmVyKG5ld0Rlc3RpbmF0aW9uSWRlbnRpZmllcikpOwotCi0gICAgICAgICAgICBpZiAoVU5M
SUtFTFkoIWRlc3RpbmF0aW9uKSkgewotICAgICAgICAgICAgICAgIC8vIEZJWE1FOiBBZGQgYSBt
ZXNzYWdlIGNoZWNrIHRvIHRlcm1pbmF0ZSB0aGUgd2ViIHByb2Nlc3MuCi0gICAgICAgICAgICAg
ICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAg
ICAgICB9CisgICAgICAgICAgICBNRVNTQUdFX0NIRUNLX1dJVEhfUkVUVVJOX1ZBTFVFKGRlc3Rp
bmF0aW9uLCBudWxscHRyKTsKIAogICAgICAgICAgICAgb2Zmc2V0ID0gcmVzdW1lUmVhZGluZ0lu
Zm8tPm9mZnNldDsKIApAQCAtMjY2LDMwICsyNDQsMjAgQEAgUmVmUHRyPEltYWdlQnVmZmVyPiBS
ZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpuZXh0RGVzdGluYXRpb25JbWFnZUJ1ZmZlckFmdGVyQXBw
bHkKICAgICByZXR1cm4gZGVzdGluYXRpb247CiB9CiAKLXZvaWQgUmVtb3RlUmVuZGVyaW5nQmFj
a2VuZDo6d2FrZVVwQW5kQXBwbHlEaXNwbGF5TGlzdChjb25zdCBHUFVQcm9jZXNzV2FrZXVwTWVz
c2FnZUFyZ3VtZW50cyYgYXJndW1lbnRzKQordm9pZCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjp3
YWtlVXBBbmRBcHBseURpc3BsYXlMaXN0KElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgY29u
c3QgR1BVUHJvY2Vzc1dha2V1cE1lc3NhZ2VBcmd1bWVudHMmIGFyZ3VtZW50cykKIHsKICAgICBB
U1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsKIAogICAgIFRyYWNlU2NvcGUgdHJhY2luZ1Njb3Bl
KFdha2VVcEFuZEFwcGx5RGlzcGxheUxpc3RTdGFydCwgV2FrZVVwQW5kQXBwbHlEaXNwbGF5TGlz
dEVuZCk7CiAgICAgYXV0byBkZXN0aW5hdGlvbkltYWdlQnVmZmVyID0gbWFrZVJlZlB0cihtX3Jl
bW90ZVJlc291cmNlQ2FjaGUuY2FjaGVkSW1hZ2VCdWZmZXIoYXJndW1lbnRzLmRlc3RpbmF0aW9u
SW1hZ2VCdWZmZXJJZGVudGlmaWVyKSk7Ci0gICAgaWYgKFVOTElLRUxZKCFkZXN0aW5hdGlvbklt
YWdlQnVmZmVyKSkgewotICAgICAgICAvLyBGSVhNRTogQWRkIGEgbWVzc2FnZSBjaGVjayB0byB0
ZXJtaW5hdGUgdGhlIHdlYiBwcm9jZXNzLgotICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsK
LSAgICAgICAgcmV0dXJuOwotICAgIH0KKyAgICBNRVNTQUdFX0NIRUNLKGRlc3RpbmF0aW9uSW1h
Z2VCdWZmZXIpOwogCiAgICAgYXV0byBpbml0aWFsSGFuZGxlID0gbV9zaGFyZWREaXNwbGF5TGlz
dEhhbmRsZXMuZ2V0KGFyZ3VtZW50cy5pdGVtQnVmZmVySWRlbnRpZmllcik7Ci0gICAgaWYgKFVO
TElLRUxZKCFpbml0aWFsSGFuZGxlKSkgewotICAgICAgICAvLyBGSVhNRTogQWRkIGEgbWVzc2Fn
ZSBjaGVjayB0byB0ZXJtaW5hdGUgdGhlIHdlYiBwcm9jZXNzLgotICAgICAgICBBU1NFUlRfTk9U
X1JFQUNIRUQoKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KKyAgICBNRVNTQUdFX0NIRUNLKGlu
aXRpYWxIYW5kbGUpOwogCi0gICAgZGVzdGluYXRpb25JbWFnZUJ1ZmZlciA9IG5leHREZXN0aW5h
dGlvbkltYWdlQnVmZmVyQWZ0ZXJBcHBseWluZ0Rpc3BsYXlMaXN0cygqZGVzdGluYXRpb25JbWFn
ZUJ1ZmZlciwgYXJndW1lbnRzLm9mZnNldCwgKmluaXRpYWxIYW5kbGUsIGFyZ3VtZW50cy5yZWFz
b24pOwotICAgIGlmICghZGVzdGluYXRpb25JbWFnZUJ1ZmZlcikgewotICAgICAgICBSRUxFQVNF
X0FTU0VSVChtX3BlbmRpbmdXYWtldXBJbmZvKTsKKyAgICBkZXN0aW5hdGlvbkltYWdlQnVmZmVy
ID0gbmV4dERlc3RpbmF0aW9uSW1hZ2VCdWZmZXJBZnRlckFwcGx5aW5nRGlzcGxheUxpc3RzKGNv
bm5lY3Rpb24sICpkZXN0aW5hdGlvbkltYWdlQnVmZmVyLCBhcmd1bWVudHMub2Zmc2V0LCAqaW5p
dGlhbEhhbmRsZSwgYXJndW1lbnRzLnJlYXNvbik7CisgICAgaWYgKCFkZXN0aW5hdGlvbkltYWdl
QnVmZmVyKQogICAgICAgICByZXR1cm47Ci0gICAgfQogCiAgICAgd2hpbGUgKG1fcGVuZGluZ1dh
a2V1cEluZm8pIHsKICAgICAgICAgaWYgKG1fcGVuZGluZ1dha2V1cEluZm8tPm1pc3NpbmdDYWNo
ZWRSZXNvdXJjZUlkZW50aWZpZXIpCkBAIC0zMDQsMjEgKzI3MiwxNCBAQCB2b2lkIFJlbW90ZVJl
bmRlcmluZ0JhY2tlbmQ6Ondha2VVcEFuZEFwcGx5RGlzcGxheUxpc3QoY29uc3QgR1BVUHJvY2Vz
c1dha2V1cE1lcwogCiAgICAgICAgIC8vIE90aGVyd2lzZSwgY29udGludWUgcmVhZGluZyB0aGUg
bmV4dCBkaXNwbGF5IGxpc3QgaXRlbSBidWZmZXIgZnJvbSB0aGUgc3RhcnQuCiAgICAgICAgIGF1
dG8gYXJndW1lbnRzID0gc3RkOjpleGNoYW5nZShtX3BlbmRpbmdXYWtldXBJbmZvLCBXVEY6Om51
bGxvcHQpLT5hcmd1bWVudHM7Ci0gICAgICAgIGRlc3RpbmF0aW9uSW1hZ2VCdWZmZXIgPSBuZXh0
RGVzdGluYXRpb25JbWFnZUJ1ZmZlckFmdGVyQXBwbHlpbmdEaXNwbGF5TGlzdHMoKmRlc3RpbmF0
aW9uSW1hZ2VCdWZmZXIsIGFyZ3VtZW50cy5vZmZzZXQsICpuZXh0SGFuZGxlLCBhcmd1bWVudHMu
cmVhc29uKTsKLSAgICAgICAgaWYgKCFkZXN0aW5hdGlvbkltYWdlQnVmZmVyKSB7Ci0gICAgICAg
ICAgICBSRUxFQVNFX0FTU0VSVChtX3BlbmRpbmdXYWtldXBJbmZvKTsKKyAgICAgICAgZGVzdGlu
YXRpb25JbWFnZUJ1ZmZlciA9IG5leHREZXN0aW5hdGlvbkltYWdlQnVmZmVyQWZ0ZXJBcHBseWlu
Z0Rpc3BsYXlMaXN0cyhjb25uZWN0aW9uLCAqZGVzdGluYXRpb25JbWFnZUJ1ZmZlciwgYXJndW1l
bnRzLm9mZnNldCwgKm5leHRIYW5kbGUsIGFyZ3VtZW50cy5yZWFzb24pOworICAgICAgICBpZiAo
IWRlc3RpbmF0aW9uSW1hZ2VCdWZmZXIpCiAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQog
ICAgIH0KIH0KIAogdm9pZCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpzZXROZXh0SXRlbUJ1ZmZl
clRvUmVhZChEaXNwbGF5TGlzdDo6SXRlbUJ1ZmZlcklkZW50aWZpZXIgaWRlbnRpZmllciwgV2Vi
Q29yZTo6UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyIGRlc3RpbmF0aW9uSWRlbnRpZmllcikK
IHsKLSAgICBpZiAoVU5MSUtFTFkobV9wZW5kaW5nV2FrZXVwSW5mbykpIHsKLSAgICAgICAgLy8g
RklYTUU6IEFkZCBhIG1lc3NhZ2UgY2hlY2sgdG8gdGVybWluYXRlIHRoZSB3ZWIgcHJvY2Vzcy4K
LSAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9CiAg
ICAgbV9wZW5kaW5nV2FrZXVwSW5mbyA9IHt7eyBpZGVudGlmaWVyLCBTaGFyZWREaXNwbGF5TGlz
dEhhbmRsZTo6aGVhZGVyU2l6ZSgpLCBkZXN0aW5hdGlvbklkZW50aWZpZXIsIEdQVVByb2Nlc3NX
YWtldXBSZWFzb246OlVuc3BlY2lmaWVkIH0sIFdURjo6bnVsbG9wdCB9fTsKIH0KIApAQCAtMzYy
LDcgKzMyMyw3IEBAIHZvaWQgUmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6Z2V0QkdSQURhdGFGb3JJ
bWFnZUJ1ZmZlcihXZWJDb3JlOjpSZW5kZXJpbmdSZXNvdXJjCiAgICAgY29tcGxldGlvbkhhbmRs
ZXIoV1RGTW92ZShkYXRhKSk7CiB9CiAKLXZvaWQgUmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6Y2Fj
aGVOYXRpdmVJbWFnZShjb25zdCBTaGFyZWFibGVCaXRtYXA6OkhhbmRsZSYgaGFuZGxlLCBSZW5k
ZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKQordm9p
ZCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpjYWNoZU5hdGl2ZUltYWdlKElQQzo6Q29ubmVjdGlv
biYgY29ubmVjdGlvbiwgY29uc3QgU2hhcmVhYmxlQml0bWFwOjpIYW5kbGUmIGhhbmRsZSwgUmVu
ZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyIHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcikKIHsK
ICAgICBBU1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsKIApAQCAtMzc3LDE3ICszMzgsMTcgQEAg
dm9pZCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpjYWNoZU5hdGl2ZUltYWdlKGNvbnN0IFNoYXJl
YWJsZUJpdG1hcDo6SGFuZGxlJiBoYW4KICAgICBtX3JlbW90ZVJlc291cmNlQ2FjaGUuY2FjaGVO
YXRpdmVJbWFnZShtYWtlUmVmKCppbWFnZSkpOwogCiAgICAgaWYgKG1fcGVuZGluZ1dha2V1cElu
Zm8gJiYgbV9wZW5kaW5nV2FrZXVwSW5mby0+c2hvdWxkUGVyZm9ybVdha2V1cChyZW5kZXJpbmdS
ZXNvdXJjZUlkZW50aWZpZXIpKQotICAgICAgICB3YWtlVXBBbmRBcHBseURpc3BsYXlMaXN0KHN0
ZDo6ZXhjaGFuZ2UobV9wZW5kaW5nV2FrZXVwSW5mbywgV1RGOjpudWxsb3B0KS0+YXJndW1lbnRz
KTsKKyAgICAgICAgd2FrZVVwQW5kQXBwbHlEaXNwbGF5TGlzdChjb25uZWN0aW9uLCBzdGQ6OmV4
Y2hhbmdlKG1fcGVuZGluZ1dha2V1cEluZm8sIFdURjo6bnVsbG9wdCktPmFyZ3VtZW50cyk7CiB9
CiAKLXZvaWQgUmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6Y2FjaGVGb250KFJlZjxGb250PiYmIGZv
bnQpCit2b2lkIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OmNhY2hlRm9udChJUEM6OkNvbm5lY3Rp
b24mIGNvbm5lY3Rpb24sIFJlZjxGb250PiYmIGZvbnQpCiB7CiAgICAgQVNTRVJUKCFSdW5Mb29w
Ojppc01haW4oKSk7CiAKICAgICBhdXRvIGlkZW50aWZpZXIgPSBmb250LT5yZW5kZXJpbmdSZXNv
dXJjZUlkZW50aWZpZXIoKTsKICAgICBtX3JlbW90ZVJlc291cmNlQ2FjaGUuY2FjaGVGb250KFdU
Rk1vdmUoZm9udCkpOwogICAgIGlmIChtX3BlbmRpbmdXYWtldXBJbmZvICYmIG1fcGVuZGluZ1dh
a2V1cEluZm8tPnNob3VsZFBlcmZvcm1XYWtldXAoaWRlbnRpZmllcikpCi0gICAgICAgIHdha2VV
cEFuZEFwcGx5RGlzcGxheUxpc3Qoc3RkOjpleGNoYW5nZShtX3BlbmRpbmdXYWtldXBJbmZvLCBX
VEY6Om51bGxvcHQpLT5hcmd1bWVudHMpOworICAgICAgICB3YWtlVXBBbmRBcHBseURpc3BsYXlM
aXN0KGNvbm5lY3Rpb24sIHN0ZDo6ZXhjaGFuZ2UobV9wZW5kaW5nV2FrZXVwSW5mbywgV1RGOjpu
dWxsb3B0KS0+YXJndW1lbnRzKTsKIH0KIAogdm9pZCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpk
ZWxldGVBbGxGb250cygpCkBAIC00MDIsMjEgKzM2MywxNiBAQCB2b2lkIFJlbW90ZVJlbmRlcmlu
Z0JhY2tlbmQ6OnJlbGVhc2VSZW1vdGVSZXNvdXJjZShSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZp
ZXIgcgogICAgIG1fcmVtb3RlUmVzb3VyY2VDYWNoZS5yZWxlYXNlUmVtb3RlUmVzb3VyY2UocmVu
ZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKTsKIH0KIAotdm9pZCBSZW1vdGVSZW5kZXJpbmdCYWNr
ZW5kOjpkaWRDcmVhdGVTaGFyZWREaXNwbGF5TGlzdEhhbmRsZShEaXNwbGF5TGlzdDo6SXRlbUJ1
ZmZlcklkZW50aWZpZXIgaWRlbnRpZmllciwgY29uc3QgU2hhcmVkTWVtb3J5OjpJUENIYW5kbGUm
IGhhbmRsZSwgUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyIGRlc3RpbmF0aW9uQnVmZmVySWRl
bnRpZmllcikKK3ZvaWQgUmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6ZGlkQ3JlYXRlU2hhcmVkRGlz
cGxheUxpc3RIYW5kbGUoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBEaXNwbGF5TGlzdDo6
SXRlbUJ1ZmZlcklkZW50aWZpZXIgaWRlbnRpZmllciwgY29uc3QgU2hhcmVkTWVtb3J5OjpJUENI
YW5kbGUmIGhhbmRsZSwgUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyIGRlc3RpbmF0aW9uQnVm
ZmVySWRlbnRpZmllcikKIHsKICAgICBBU1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsKLQotICAg
IGlmIChVTkxJS0VMWShtX3NoYXJlZERpc3BsYXlMaXN0SGFuZGxlcy5jb250YWlucyhpZGVudGlm
aWVyKSkpIHsKLSAgICAgICAgLy8gRklYTUU6IEFkZCBhIG1lc3NhZ2UgY2hlY2sgdG8gdGVybWlu
YXRlIHRoZSB3ZWIgcHJvY2Vzcy4KLSAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAg
ICAgIHJldHVybjsKLSAgICB9CisgICAgTUVTU0FHRV9DSEVDSyghbV9zaGFyZWREaXNwbGF5TGlz
dEhhbmRsZXMuY29udGFpbnMoaWRlbnRpZmllcikpOwogCiAgICAgaWYgKGF1dG8gc2hhcmVkTWVt
b3J5ID0gU2hhcmVkTWVtb3J5OjptYXAoaGFuZGxlLmhhbmRsZSwgU2hhcmVkTWVtb3J5OjpQcm90
ZWN0aW9uOjpSZWFkV3JpdGUpKQogICAgICAgICBtX3NoYXJlZERpc3BsYXlMaXN0SGFuZGxlcy5z
ZXQoaWRlbnRpZmllciwgRGlzcGxheUxpc3RSZWFkZXJIYW5kbGU6OmNyZWF0ZShpZGVudGlmaWVy
LCBzaGFyZWRNZW1vcnkucmVsZWFzZU5vbk51bGwoKSkpOwogCiAgICAgaWYgKG1fcGVuZGluZ1dh
a2V1cEluZm8gJiYgbV9wZW5kaW5nV2FrZXVwSW5mby0+c2hvdWxkUGVyZm9ybVdha2V1cChpZGVu
dGlmaWVyKSkKLSAgICAgICAgd2FrZVVwQW5kQXBwbHlEaXNwbGF5TGlzdChzdGQ6OmV4Y2hhbmdl
KG1fcGVuZGluZ1dha2V1cEluZm8sIFdURjo6bnVsbG9wdCktPmFyZ3VtZW50cyk7CisgICAgICAg
IHdha2VVcEFuZEFwcGx5RGlzcGxheUxpc3QoY29ubmVjdGlvbiwgc3RkOjpleGNoYW5nZShtX3Bl
bmRpbmdXYWtldXBJbmZvLCBXVEY6Om51bGxvcHQpLT5hcmd1bWVudHMpOwogfQogCiBPcHRpb25h
bDxEaXNwbGF5TGlzdDo6SXRlbUhhbmRsZT4gV0FSTl9VTlVTRURfUkVUVVJOIFJlbW90ZVJlbmRl
cmluZ0JhY2tlbmQ6OmRlY29kZUl0ZW0oY29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90IGxlbmd0
aCwgRGlzcGxheUxpc3Q6Okl0ZW1UeXBlIHR5cGUsIHVpbnQ4X3QqIGhhbmRsZUxvY2F0aW9uKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRl
cmluZ0JhY2tlbmQuaCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVS
ZW5kZXJpbmdCYWNrZW5kLmgKaW5kZXggZTYzODk5MDNiNjUwYmE4ZDk3M2RhZjliM2RjY2E2NDUz
NTZmNDVmOC4uOTIzNTU3YzBhODBjZmEyNGFlMmViMzRhMTg1ZDBmZDRlM2VlNThkOSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0Jh
Y2tlbmQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVu
ZGVyaW5nQmFja2VuZC5oCkBAIC0xMDMsNyArMTAzLDcgQEAgcHJpdmF0ZToKICAgICB9CiAKICAg
ICBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6UmVwbGF5UmVzdWx0IHN1Ym1pdChjb25zdCBXZWJDb3Jl
OjpEaXNwbGF5TGlzdDo6RGlzcGxheUxpc3QmLCBXZWJDb3JlOjpJbWFnZUJ1ZmZlciYgZGVzdGlu
YXRpb24pOwotICAgIFJlZlB0cjxXZWJDb3JlOjpJbWFnZUJ1ZmZlcj4gbmV4dERlc3RpbmF0aW9u
SW1hZ2VCdWZmZXJBZnRlckFwcGx5aW5nRGlzcGxheUxpc3RzKFdlYkNvcmU6OkltYWdlQnVmZmVy
JiBpbml0aWFsRGVzdGluYXRpb24sIHNpemVfdCBpbml0aWFsT2Zmc2V0LCBEaXNwbGF5TGlzdFJl
YWRlckhhbmRsZSYsIEdQVVByb2Nlc3NXYWtldXBSZWFzb24pOworICAgIFJlZlB0cjxXZWJDb3Jl
OjpJbWFnZUJ1ZmZlcj4gbmV4dERlc3RpbmF0aW9uSW1hZ2VCdWZmZXJBZnRlckFwcGx5aW5nRGlz
cGxheUxpc3RzKElQQzo6Q29ubmVjdGlvbiYsIFdlYkNvcmU6OkltYWdlQnVmZmVyJiBpbml0aWFs
RGVzdGluYXRpb24sIHNpemVfdCBpbml0aWFsT2Zmc2V0LCBEaXNwbGF5TGlzdFJlYWRlckhhbmRs
ZSYsIEdQVVByb2Nlc3NXYWtldXBSZWFzb24pOwogCiAgICAgLy8gSVBDOjpNZXNzYWdlU2VuZGVy
LgogICAgIElQQzo6Q29ubmVjdGlvbiogbWVzc2FnZVNlbmRlckNvbm5lY3Rpb24oKSBjb25zdCBv
dmVycmlkZTsKQEAgLTExNCwxNyArMTE0LDE3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBkaWRSZWNl
aXZlU3luY01lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJiwgc3RkOjp1bmlx
dWVfcHRyPElQQzo6RW5jb2Rlcj4mKSBvdmVycmlkZTsKIAogICAgIC8vIE1lc3NhZ2VzIHRvIGJl
IHJlY2VpdmVkLgotICAgIHZvaWQgY3JlYXRlSW1hZ2VCdWZmZXIoY29uc3QgV2ViQ29yZTo6Rmxv
YXRTaXplJiBsb2dpY2FsU2l6ZSwgV2ViQ29yZTo6UmVuZGVyaW5nTW9kZSwgZmxvYXQgcmVzb2x1
dGlvblNjYWxlLCBXZWJDb3JlOjpDb2xvclNwYWNlLCBXZWJDb3JlOjpQaXhlbEZvcm1hdCwgV2Vi
Q29yZTo6UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKTsKLSAgICB2b2lkIHdha2VVcEFuZEFw
cGx5RGlzcGxheUxpc3QoY29uc3QgR1BVUHJvY2Vzc1dha2V1cE1lc3NhZ2VBcmd1bWVudHMmKTsK
KyAgICB2b2lkIGNyZWF0ZUltYWdlQnVmZmVyKElQQzo6Q29ubmVjdGlvbiYsIGNvbnN0IFdlYkNv
cmU6OkZsb2F0U2l6ZSYgbG9naWNhbFNpemUsIFdlYkNvcmU6OlJlbmRlcmluZ01vZGUsIGZsb2F0
IHJlc29sdXRpb25TY2FsZSwgV2ViQ29yZTo6Q29sb3JTcGFjZSwgV2ViQ29yZTo6UGl4ZWxGb3Jt
YXQsIFdlYkNvcmU6OlJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcik7CisgICAgdm9pZCB3YWtl
VXBBbmRBcHBseURpc3BsYXlMaXN0KElQQzo6Q29ubmVjdGlvbiYsIGNvbnN0IEdQVVByb2Nlc3NX
YWtldXBNZXNzYWdlQXJndW1lbnRzJik7CiAgICAgdm9pZCBnZXRJbWFnZURhdGEoV2ViQ29yZTo6
QWxwaGFQcmVtdWx0aXBsaWNhdGlvbiBvdXRwdXRGb3JtYXQsIFdlYkNvcmU6OkludFJlY3Qgc3Jj
UmVjdCwgV2ViQ29yZTo6UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyLCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKElQQzo6SW1hZ2VEYXRhUmVmZXJlbmNlJiYpPiYmKTsKICAgICB2b2lkIGdldERh
dGFVUkxGb3JJbWFnZUJ1ZmZlcihjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBPcHRpb25hbDxkb3Vi
bGU+IHF1YWxpdHksIFdlYkNvcmU6OlByZXNlcnZlUmVzb2x1dGlvbiwgV2ViQ29yZTo6UmVuZGVy
aW5nUmVzb3VyY2VJZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFN0cmluZyYmKT4m
Jik7CiAgICAgdm9pZCBnZXREYXRhRm9ySW1hZ2VCdWZmZXIoY29uc3QgU3RyaW5nJiBtaW1lVHlw
ZSwgT3B0aW9uYWw8ZG91YmxlPiBxdWFsaXR5LCBXZWJDb3JlOjpSZW5kZXJpbmdSZXNvdXJjZUlk
ZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoVmVjdG9yPHVpbnQ4X3Q+JiYpPiYmKTsK
ICAgICB2b2lkIGdldEJHUkFEYXRhRm9ySW1hZ2VCdWZmZXIoV2ViQ29yZTo6UmVuZGVyaW5nUmVz
b3VyY2VJZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFZlY3Rvcjx1aW50OF90PiYm
KT4mJik7Ci0gICAgdm9pZCBjYWNoZU5hdGl2ZUltYWdlKGNvbnN0IFNoYXJlYWJsZUJpdG1hcDo6
SGFuZGxlJiwgV2ViQ29yZTo6UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKTsKLSAgICB2b2lk
IGNhY2hlRm9udChSZWY8V2ViQ29yZTo6Rm9udD4mJik7CisgICAgdm9pZCBjYWNoZU5hdGl2ZUlt
YWdlKElQQzo6Q29ubmVjdGlvbiYsIGNvbnN0IFNoYXJlYWJsZUJpdG1hcDo6SGFuZGxlJiwgV2Vi
Q29yZTo6UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKTsKKyAgICB2b2lkIGNhY2hlRm9udChJ
UEM6OkNvbm5lY3Rpb24mLCBSZWY8V2ViQ29yZTo6Rm9udD4mJik7CiAgICAgdm9pZCBkZWxldGVB
bGxGb250cygpOwogICAgIHZvaWQgcmVsZWFzZVJlbW90ZVJlc291cmNlKFdlYkNvcmU6OlJlbmRl
cmluZ1Jlc291cmNlSWRlbnRpZmllcik7Ci0gICAgdm9pZCBkaWRDcmVhdGVTaGFyZWREaXNwbGF5
TGlzdEhhbmRsZShXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbUJ1ZmZlcklkZW50aWZpZXIsIGNv
bnN0IFNoYXJlZE1lbW9yeTo6SVBDSGFuZGxlJiwgV2ViQ29yZTo6UmVuZGVyaW5nUmVzb3VyY2VJ
ZGVudGlmaWVyIGRlc3RpbmF0aW9uQnVmZmVySWRlbnRpZmllcik7CisgICAgdm9pZCBkaWRDcmVh
dGVTaGFyZWREaXNwbGF5TGlzdEhhbmRsZShJUEM6OkNvbm5lY3Rpb24mLCBXZWJDb3JlOjpEaXNw
bGF5TGlzdDo6SXRlbUJ1ZmZlcklkZW50aWZpZXIsIGNvbnN0IFNoYXJlZE1lbW9yeTo6SVBDSGFu
ZGxlJiwgV2ViQ29yZTo6UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyIGRlc3RpbmF0aW9uQnVm
ZmVySWRlbnRpZmllcik7CiAKICAgICBzdHJ1Y3QgUGVuZGluZ1dha2V1cEluZm9ybWF0aW9uIHsK
ICAgICAgICAgR1BVUHJvY2Vzc1dha2V1cE1lc3NhZ2VBcmd1bWVudHMgYXJndW1lbnRzOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmlu
Z0JhY2tlbmQubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3Mv
UmVtb3RlUmVuZGVyaW5nQmFja2VuZC5tZXNzYWdlcy5pbgppbmRleCA3ZDY1Y2U5MDljNTgyMGY0
NmIwMWU2YmRlZWNkZWFhNzMzNmFhZjI4Li5hZmFmODgwZWIwNDcyZTNjMmUzY2NkYmE1MjIwOGM5
OWFlY2RlMjljIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3Mv
UmVtb3RlUmVuZGVyaW5nQmFja2VuZC5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L0dQ
VVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5tZXNzYWdlcy5pbgpAQCAt
MjMsMTYgKzIzLDE2IEBACiAjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKQogCiBtZXNzYWdlcyAtPiBS
ZW1vdGVSZW5kZXJpbmdCYWNrZW5kIHsKLSAgICBDcmVhdGVJbWFnZUJ1ZmZlcihXZWJDb3JlOjpG
bG9hdFNpemUgbG9naWNhbFNpemUsIFdlYkNvcmU6OlJlbmRlcmluZ01vZGUgcmVuZGVyaW5nTW9k
ZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBXZWJDb3JlOjpDb2xvclNwYWNlIGNvbG9yU3BhY2Us
IGVudW06dWludDhfdCBXZWJDb3JlOjpQaXhlbEZvcm1hdCBwaXhlbEZvcm1hdCwgV2ViQ29yZTo6
UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyIHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcikK
LSAgICBXYWtlVXBBbmRBcHBseURpc3BsYXlMaXN0KHN0cnVjdCBXZWJLaXQ6OkdQVVByb2Nlc3NX
YWtldXBNZXNzYWdlQXJndW1lbnRzIGFyZ3VtZW50cykKKyAgICBDcmVhdGVJbWFnZUJ1ZmZlcihX
ZWJDb3JlOjpGbG9hdFNpemUgbG9naWNhbFNpemUsIFdlYkNvcmU6OlJlbmRlcmluZ01vZGUgcmVu
ZGVyaW5nTW9kZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBXZWJDb3JlOjpDb2xvclNwYWNlIGNv
bG9yU3BhY2UsIGVudW06dWludDhfdCBXZWJDb3JlOjpQaXhlbEZvcm1hdCBwaXhlbEZvcm1hdCwg
V2ViQ29yZTo6UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyIHJlbmRlcmluZ1Jlc291cmNlSWRl
bnRpZmllcikgV2FudHNDb25uZWN0aW9uCisgICAgV2FrZVVwQW5kQXBwbHlEaXNwbGF5TGlzdChz
dHJ1Y3QgV2ViS2l0OjpHUFVQcm9jZXNzV2FrZXVwTWVzc2FnZUFyZ3VtZW50cyBhcmd1bWVudHMp
IFdhbnRzQ29ubmVjdGlvbgogICAgIEdldEltYWdlRGF0YShlbnVtOnVpbnQ4X3QgV2ViQ29yZTo6
QWxwaGFQcmVtdWx0aXBsaWNhdGlvbiBvdXRwdXRGb3JtYXQsIFdlYkNvcmU6OkludFJlY3Qgc3Jj
UmVjdCwgV2ViQ29yZTo6UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyIHJlbmRlcmluZ1Jlc291
cmNlSWRlbnRpZmllcikgLT4gKElQQzo6SW1hZ2VEYXRhUmVmZXJlbmNlIGltYWdlRGF0YSkgU3lu
Y2hyb25vdXMKICAgICBHZXREYXRhVVJMRm9ySW1hZ2VCdWZmZXIoU3RyaW5nIG1pbWVUeXBlLCBP
cHRpb25hbDxkb3VibGU+IHF1YWxpdHksIGVudW06dWludDhfdCBXZWJDb3JlOjpQcmVzZXJ2ZVJl
c29sdXRpb24gcHJlc2VydmVSZXNvbHV0aW9uLCBXZWJDb3JlOjpSZW5kZXJpbmdSZXNvdXJjZUlk
ZW50aWZpZXIgcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKSAtPiAoU3RyaW5nIHVybFN0cmlu
ZykgU3luY2hyb25vdXMKICAgICBHZXREYXRhRm9ySW1hZ2VCdWZmZXIoU3RyaW5nIG1pbWVUeXBl
LCBPcHRpb25hbDxkb3VibGU+IHF1YWxpdHksIFdlYkNvcmU6OlJlbmRlcmluZ1Jlc291cmNlSWRl
bnRpZmllciByZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpIC0+IChWZWN0b3I8dWludDhfdD4g
ZGF0YSkgU3luY2hyb25vdXMKICAgICBHZXRCR1JBRGF0YUZvckltYWdlQnVmZmVyKFdlYkNvcmU6
OlJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciByZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIp
IC0+IChWZWN0b3I8dWludDhfdD4gZGF0YSkgU3luY2hyb25vdXMKLSAgICBDYWNoZU5hdGl2ZUlt
YWdlKFdlYktpdDo6U2hhcmVhYmxlQml0bWFwOjpIYW5kbGUgaGFuZGxlLCBXZWJDb3JlOjpSZW5k
ZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKQotICAg
IENhY2hlRm9udChJUEM6OkZvbnRSZWZlcmVuY2UgZm9udCkKKyAgICBDYWNoZU5hdGl2ZUltYWdl
KFdlYktpdDo6U2hhcmVhYmxlQml0bWFwOjpIYW5kbGUgaGFuZGxlLCBXZWJDb3JlOjpSZW5kZXJp
bmdSZXNvdXJjZUlkZW50aWZpZXIgcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKSBXYW50c0Nv
bm5lY3Rpb24KKyAgICBDYWNoZUZvbnQoSVBDOjpGb250UmVmZXJlbmNlIGZvbnQpIFdhbnRzQ29u
bmVjdGlvbgogICAgIERlbGV0ZUFsbEZvbnRzKCkKLSAgICBEaWRDcmVhdGVTaGFyZWREaXNwbGF5
TGlzdEhhbmRsZShXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbUJ1ZmZlcklkZW50aWZpZXIgaWRl
bnRpZmllciwgV2ViS2l0OjpTaGFyZWRNZW1vcnk6OklQQ0hhbmRsZSBoYW5kbGUsIFdlYkNvcmU6
OlJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciBkZXN0aW5hdGlvbkJ1ZmZlcklkZW50aWZpZXIp
CisgICAgRGlkQ3JlYXRlU2hhcmVkRGlzcGxheUxpc3RIYW5kbGUoV2ViQ29yZTo6RGlzcGxheUxp
c3Q6Okl0ZW1CdWZmZXJJZGVudGlmaWVyIGlkZW50aWZpZXIsIFdlYktpdDo6U2hhcmVkTWVtb3J5
OjpJUENIYW5kbGUgaGFuZGxlLCBXZWJDb3JlOjpSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIg
ZGVzdGluYXRpb25CdWZmZXJJZGVudGlmaWVyKSBXYW50c0Nvbm5lY3Rpb24KICAgICBSZWxlYXNl
UmVtb3RlUmVzb3VyY2UoV2ViQ29yZTo6UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyIHJlbmRl
cmluZ1Jlc291cmNlSWRlbnRpZmllcikKIH0KIApkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9n
IGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IDg0MzI5ODdmNzRiZGFiMjVmMzA1YWMyMTYyYmQ1ZTc5
NjAwZDIzZGQuLmM5NTVhMjAxNzE2NDJhYmY1NTdjODkzOWQ0YTI0NDIxNTc5MGVmZDAgMTAwNjQ0
Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwx
OSBAQAorMjAyMS0wMS0yMSAgV2Vuc29uIEhzaWVoICA8d2Vuc29uX2hzaWVoQGFwcGxlLmNvbT4K
KworICAgICAgICBUaGUgd2ViIHByb2Nlc3Mgc2hvdWxkIGJlIGtpbGxlZCBhZnRlciBmYWlsaW5n
IHRvIGRlY29kZSBkaXNwbGF5IGxpc3QgaXRlbXMgaW4gdGhlIEdQVSBwcm9jZXNzCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTkwOTcKKyAgICAgICAg
PHJkYXI6Ly9wcm9ibGVtLzcxNTQ2NTI2PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL0Rpc3BsYXlM
aXN0VGVzdHMuY3BwOgorCisgICAgICAgIEFkanVzdCBhIGZldyBBUEkgdGVzdHMsIHNpbmNlIHRo
ZSBpdGVtIGhhbmRsZSBpbiB0aGUgYERpc3BsYXlMaXN0YCBpdGVyYXRvciBpcyBub3cgb3B0aW9u
YWwuCisKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvY2cvRGlzcGxheUxp
c3RUZXN0c0NHLmNwcDoKKworICAgICAgICBBZGQgYSBjb3VwbGUgb2YgbmV3IEFQSSB0ZXN0cyB0
byBleGVyY2lzZSBkaXNwbGF5IGxpc3QgaXRlbSBkZWNvZGluZyBhbmQgdmFsaWRhdGlvbiBmYWls
dXJlcy4KKwogMjAyMS0wMS0yMSAgQWRpdHlhIEtlZXJ0aGkgIDxha2VlcnRoaUBhcHBsZS5jb20+
CiAKICAgICAgICAgW21hY09TXSBUaXRsZWJhciBzZXBhcmF0b3IgZG9lc24ndCBzaG93IHdoZW4g
V0tXZWJWaWV3IGlzIHNjcm9sbGVkCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RzL1dlYkNvcmUvRGlzcGxheUxpc3RUZXN0cy5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RzL1dlYkNvcmUvRGlzcGxheUxpc3RUZXN0cy5jcHAKaW5kZXggZjcwMGM1NjI5ZjYwNmU1YzI2
ZGYxNmIyMGJiMWRlYTk1NGU4MDdhNS4uZTg3MTdjNzkxNDBiZGVhNGI1ZjUzNTVmMDE2OTA4OWU2
MDA4NjczMyAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL0Rp
c3BsYXlMaXN0VGVzdHMuY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29y
ZS9EaXNwbGF5TGlzdFRlc3RzLmNwcApAQCAtNzksNDEgKzc5LDQxIEBAIFRFU1QoRGlzcGxheUxp
c3RUZXN0cywgQXBwZW5kSXRlbXMpCiAKICAgICBib29sIG9ic2VydmVkVW5leHBlY3RlZEl0ZW0g
PSBmYWxzZTsKICAgICBmb3IgKGF1dG8gW2hhbmRsZSwgZXh0ZW50LCBzaXplXSA6IGxpc3QpIHsK
LSAgICAgICAgc3dpdGNoIChoYW5kbGUudHlwZSgpKSB7CisgICAgICAgIHN3aXRjaCAoaGFuZGxl
LT50eXBlKCkpIHsKICAgICAgICAgY2FzZSBJdGVtVHlwZTo6U2V0U3Ryb2tlVGhpY2tuZXNzOiB7
Ci0gICAgICAgICAgICBFWFBFQ1RfRkFMU0UoaGFuZGxlLmlzRHJhd2luZ0l0ZW0oKSk7Ci0gICAg
ICAgICAgICBFWFBFQ1RfVFJVRShoYW5kbGUuaXM8U2V0U3Ryb2tlVGhpY2tuZXNzPigpKTsKLSAg
ICAgICAgICAgIGF1dG8mIGl0ZW0gPSBoYW5kbGUuZ2V0PFNldFN0cm9rZVRoaWNrbmVzcz4oKTsK
KyAgICAgICAgICAgIEVYUEVDVF9GQUxTRShoYW5kbGUtPmlzRHJhd2luZ0l0ZW0oKSk7CisgICAg
ICAgICAgICBFWFBFQ1RfVFJVRShoYW5kbGUtPmlzPFNldFN0cm9rZVRoaWNrbmVzcz4oKSk7Cisg
ICAgICAgICAgICBhdXRvJiBpdGVtID0gaGFuZGxlLT5nZXQ8U2V0U3Ryb2tlVGhpY2tuZXNzPigp
OwogICAgICAgICAgICAgRVhQRUNUX0VRKGl0ZW0udGhpY2tuZXNzKCksIDEuNSk7CiAgICAgICAg
ICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICBjYXNlIEl0ZW1UeXBlOjpGaWxsUGF0aDog
ewotICAgICAgICAgICAgRVhQRUNUX1RSVUUoaGFuZGxlLmlzRHJhd2luZ0l0ZW0oKSk7Ci0gICAg
ICAgICAgICBFWFBFQ1RfVFJVRShoYW5kbGUuaXM8RmlsbFBhdGg+KCkpOwotICAgICAgICAgICAg
YXV0byYgaXRlbSA9IGhhbmRsZS5nZXQ8RmlsbFBhdGg+KCk7CisgICAgICAgICAgICBFWFBFQ1Rf
VFJVRShoYW5kbGUtPmlzRHJhd2luZ0l0ZW0oKSk7CisgICAgICAgICAgICBFWFBFQ1RfVFJVRSho
YW5kbGUtPmlzPEZpbGxQYXRoPigpKTsKKyAgICAgICAgICAgIGF1dG8mIGl0ZW0gPSBoYW5kbGUt
PmdldDxGaWxsUGF0aD4oKTsKICAgICAgICAgICAgIEVYUEVDVF9FUShpdGVtLnBhdGgoKS5wbGF0
Zm9ybVBhdGgoKSwgcGF0aC5wbGF0Zm9ybVBhdGgoKSk7CiAgICAgICAgICAgICBicmVhazsKICAg
ICAgICAgfQogICAgICAgICBjYXNlIEl0ZW1UeXBlOjpGaWxsUmVjdFdpdGhHcmFkaWVudDogewot
ICAgICAgICAgICAgRVhQRUNUX1RSVUUoaGFuZGxlLmlzRHJhd2luZ0l0ZW0oKSk7Ci0gICAgICAg
ICAgICBFWFBFQ1RfVFJVRShoYW5kbGUuaXM8RmlsbFJlY3RXaXRoR3JhZGllbnQ+KCkpOwotICAg
ICAgICAgICAgYXV0byYgaXRlbSA9IGhhbmRsZS5nZXQ8RmlsbFJlY3RXaXRoR3JhZGllbnQ+KCk7
CisgICAgICAgICAgICBFWFBFQ1RfVFJVRShoYW5kbGUtPmlzRHJhd2luZ0l0ZW0oKSk7CisgICAg
ICAgICAgICBFWFBFQ1RfVFJVRShoYW5kbGUtPmlzPEZpbGxSZWN0V2l0aEdyYWRpZW50PigpKTsK
KyAgICAgICAgICAgIGF1dG8mIGl0ZW0gPSBoYW5kbGUtPmdldDxGaWxsUmVjdFdpdGhHcmFkaWVu
dD4oKTsKICAgICAgICAgICAgIEVYUEVDVF9FUShpdGVtLnJlY3QoKSwgRmxvYXRSZWN0KDEuLCAx
LiwgMTAuLCAxMC4pKTsKICAgICAgICAgICAgIEVYUEVDVF9FUSgmaXRlbS5ncmFkaWVudCgpLCBn
cmFkaWVudC5wdHIoKSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICBj
YXNlIEl0ZW1UeXBlOjpTZXRJbmxpbmVGaWxsQ29sb3I6IHsKLSAgICAgICAgICAgIEVYUEVDVF9G
QUxTRShoYW5kbGUuaXNEcmF3aW5nSXRlbSgpKTsKLSAgICAgICAgICAgIEVYUEVDVF9UUlVFKGhh
bmRsZS5pczxTZXRJbmxpbmVGaWxsQ29sb3I+KCkpOwotICAgICAgICAgICAgYXV0byYgaXRlbSA9
IGhhbmRsZS5nZXQ8U2V0SW5saW5lRmlsbENvbG9yPigpOworICAgICAgICAgICAgRVhQRUNUX0ZB
TFNFKGhhbmRsZS0+aXNEcmF3aW5nSXRlbSgpKTsKKyAgICAgICAgICAgIEVYUEVDVF9UUlVFKGhh
bmRsZS0+aXM8U2V0SW5saW5lRmlsbENvbG9yPigpKTsKKyAgICAgICAgICAgIGF1dG8mIGl0ZW0g
PSBoYW5kbGUtPmdldDxTZXRJbmxpbmVGaWxsQ29sb3I+KCk7CiAgICAgICAgICAgICBFWFBFQ1Rf
RVEoaXRlbS5jb2xvcigpLCBDb2xvcjo6cmVkKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAg
ICB9CiAjaWYgRU5BQkxFKElOTElORV9QQVRIX0RBVEEpCiAgICAgICAgIGNhc2UgSXRlbVR5cGU6
OlN0cm9rZUlubGluZVBhdGg6IHsKLSAgICAgICAgICAgIEVYUEVDVF9UUlVFKGhhbmRsZS5pc0Ry
YXdpbmdJdGVtKCkpOwotICAgICAgICAgICAgRVhQRUNUX1RSVUUoaGFuZGxlLmlzPFN0cm9rZUlu
bGluZVBhdGg+KCkpOwotICAgICAgICAgICAgYXV0byYgaXRlbSA9IGhhbmRsZS5nZXQ8U3Ryb2tl
SW5saW5lUGF0aD4oKTsKKyAgICAgICAgICAgIEVYUEVDVF9UUlVFKGhhbmRsZS0+aXNEcmF3aW5n
SXRlbSgpKTsKKyAgICAgICAgICAgIEVYUEVDVF9UUlVFKGhhbmRsZS0+aXM8U3Ryb2tlSW5saW5l
UGF0aD4oKSk7CisgICAgICAgICAgICBhdXRvJiBpdGVtID0gaGFuZGxlLT5nZXQ8U3Ryb2tlSW5s
aW5lUGF0aD4oKTsKICAgICAgICAgICAgIGNvbnN0IGF1dG8gcGF0aCA9IGl0ZW0ucGF0aCgpOwog
ICAgICAgICAgICAgYXV0byYgbGluZSA9IHBhdGguaW5saW5lRGF0YTxMaW5lRGF0YT4oKTsKICAg
ICAgICAgICAgIEVYUEVDVF9FUShsaW5lLnN0YXJ0LCBGbG9hdFBvaW50KDAsIDApKTsKQEAgLTE0
OCwxMCArMTQ4LDEwIEBAIFRFU1QoRGlzcGxheUxpc3RUZXN0cywgQXBwZW5kSXRlbXMpCiAgICAg
bGlzdC5hcHBlbmQ8RmlsbFJlY3RXaXRoQ29sb3I+KEZsb2F0UmVjdCB7IDAsIDAsIDEwMCwgMTAw
IH0sIENvbG9yOjpibGFjayk7CiAKICAgICBmb3IgKGF1dG8gW2hhbmRsZSwgZXh0ZW50LCBzaXpl
XSA6IGxpc3QpIHsKLSAgICAgICAgRVhQRUNUX0VRKGhhbmRsZS50eXBlKCksIEl0ZW1UeXBlOjpG
aWxsUmVjdFdpdGhDb2xvcik7Ci0gICAgICAgIEVYUEVDVF9UUlVFKGhhbmRsZS5pczxGaWxsUmVj
dFdpdGhDb2xvcj4oKSk7CisgICAgICAgIEVYUEVDVF9FUShoYW5kbGUtPnR5cGUoKSwgSXRlbVR5
cGU6OkZpbGxSZWN0V2l0aENvbG9yKTsKKyAgICAgICAgRVhQRUNUX1RSVUUoaGFuZGxlLT5pczxG
aWxsUmVjdFdpdGhDb2xvcj4oKSk7CiAKLSAgICAgICAgYXV0byYgaXRlbSA9IGhhbmRsZS5nZXQ8
RmlsbFJlY3RXaXRoQ29sb3I+KCk7CisgICAgICAgIGF1dG8mIGl0ZW0gPSBoYW5kbGUtPmdldDxG
aWxsUmVjdFdpdGhDb2xvcj4oKTsKICAgICAgICAgRVhQRUNUX0VRKGl0ZW0uY29sb3IoKS5hc0lu
bGluZSgpLCBDb2xvcjo6YmxhY2spOwogICAgICAgICBFWFBFQ1RfRVEoaXRlbS5yZWN0KCksIEZs
b2F0UmVjdCgwLCAwLCAxMDAsIDEwMCkpOwogICAgIH0KQEAgLTIyNiw3ICsyMjYsNyBAQCBURVNU
KERpc3BsYXlMaXN0VGVzdHMsIEl0ZW1CdWZmZXJDbGllbnQpCiAKICAgICBWZWN0b3I8SXRlbVR5
cGU+IGl0ZW1UeXBlczsKICAgICBmb3IgKGF1dG8gW2hhbmRsZSwgZXh0ZW50LCBzaXplXSA6IHNo
YWxsb3dDb3B5KQotICAgICAgICBpdGVtVHlwZXMuYXBwZW5kKGhhbmRsZS50eXBlKCkpOworICAg
ICAgICBpdGVtVHlwZXMuYXBwZW5kKGhhbmRsZS0+dHlwZSgpKTsKIAogICAgIEVYUEVDVF9GQUxT
RShzaGFsbG93Q29weS5pc0VtcHR5KCkpOwogICAgIEVYUEVDVF9FUShpdGVtVHlwZXMuc2l6ZSgp
LCA0VSk7CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvY2cv
RGlzcGxheUxpc3RUZXN0c0NHLmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29y
ZS9jZy9EaXNwbGF5TGlzdFRlc3RzQ0cuY3BwCmluZGV4IGQ5YzgzMzE0Y2FjMTU1NWQxODJjOTdj
ZmI2YWMxYWVlOGIxN2ZjZWMuLmI5ZDRkMTM2NjRlYTg3N2JjOWYyYmYxN2ZmNTE4MmExMGI3NDhh
Y2YgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9jZy9EaXNw
bGF5TGlzdFRlc3RzQ0cuY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29y
ZS9jZy9EaXNwbGF5TGlzdFRlc3RzQ0cuY3BwCkBAIC0zNywxMSArMzcsMTMgQEAgdXNpbmcgbmFt
ZXNwYWNlIFdlYkNvcmU7CiB1c2luZyBEaXNwbGF5TGlzdDo6RGlzcGxheUxpc3Q7CiB1c2luZyBu
YW1lc3BhY2UgRGlzcGxheUxpc3Q7CiAKK2NvbnN0ZXhwciBzaXplX3QgZ2xvYmFsSXRlbUJ1ZmZl
ckNhcGFjaXR5ID0gMSA8PCAxMjsKK3N0YXRpYyB1aW50OF90IGdsb2JhbEl0ZW1CdWZmZXJbZ2xv
YmFsSXRlbUJ1ZmZlckNhcGFjaXR5XTsKK3N0YXRpYyBjb25zdGV4cHIgQ0dGbG9hdCBjb250ZXh0
V2lkdGggPSAxMDA7CitzdGF0aWMgY29uc3RleHByIENHRmxvYXQgY29udGV4dEhlaWdodCA9IDEw
MDsKKwogVEVTVChEaXNwbGF5TGlzdFRlc3RzLCBSZXBsYXlXaXRoTWlzc2luZ1Jlc291cmNlKQog
ewotICAgIGNvbnN0ZXhwciBDR0Zsb2F0IGNvbnRleHRXaWR0aCA9IDEwMDsKLSAgICBjb25zdGV4
cHIgQ0dGbG9hdCBjb250ZXh0SGVpZ2h0ID0gMTAwOwotCiAgICAgRmxvYXRSZWN0IGNvbnRleHRC
b3VuZHMgeyAwLCAwLCBjb250ZXh0V2lkdGgsIGNvbnRleHRIZWlnaHQgfTsKIAogICAgIGF1dG8g
Y29sb3JTcGFjZSA9IGFkb3B0Q0YoQ0dDb2xvclNwYWNlQ3JlYXRlV2l0aE5hbWUoa0NHQ29sb3JT
cGFjZVNSR0IpKTsKQEAgLTc5LDYgKzgxLDc5IEBAIFRFU1QoRGlzcGxheUxpc3RUZXN0cywgUmVw
bGF5V2l0aE1pc3NpbmdSZXNvdXJjZSkKICAgICB9CiB9CiAKK1RFU1QoRGlzcGxheUxpc3RUZXN0
cywgT3V0T2ZMaW5lSXRlbURlY29kaW5nRmFpbHVyZSkKK3sKKyAgICBzdGF0aWMgSXRlbUJ1ZmZl
cklkZW50aWZpZXIgZ2xvYmFsQnVmZmVySWRlbnRpZmllciA9IEl0ZW1CdWZmZXJJZGVudGlmaWVy
OjpnZW5lcmF0ZSgpOworCisgICAgY2xhc3MgUmVhZGluZ0NsaWVudCA6IHB1YmxpYyBJdGVtQnVm
ZmVyUmVhZGluZ0NsaWVudCB7CisgICAgcHJpdmF0ZToKKyAgICAgICAgT3B0aW9uYWw8SXRlbUhh
bmRsZT4gV0FSTl9VTlVTRURfUkVUVVJOIGRlY29kZUl0ZW0oY29uc3QgdWludDhfdCosIHNpemVf
dCwgSXRlbVR5cGUgdHlwZSwgdWludDhfdCopIGZpbmFsCisgICAgICAgIHsKKyAgICAgICAgICAg
IEVYUEVDVF9FUSh0eXBlLCBJdGVtVHlwZTo6RmlsbFBhdGgpOworICAgICAgICAgICAgcmV0dXJu
IFdURjo6bnVsbG9wdDsKKyAgICAgICAgfQorICAgIH07CisKKyAgICBjbGFzcyBXcml0aW5nQ2xp
ZW50IDogcHVibGljIEl0ZW1CdWZmZXJXcml0aW5nQ2xpZW50IHsKKyAgICBwcml2YXRlOgorICAg
ICAgICBJdGVtQnVmZmVySGFuZGxlIGNyZWF0ZUl0ZW1CdWZmZXIoc2l6ZV90IGNhcGFjaXR5KSBm
aW5hbAorICAgICAgICB7CisgICAgICAgICAgICBFWFBFQ1RfTFQoY2FwYWNpdHksIGdsb2JhbEl0
ZW1CdWZmZXJDYXBhY2l0eSk7CisgICAgICAgICAgICByZXR1cm4geyBnbG9iYWxCdWZmZXJJZGVu
dGlmaWVyLCBnbG9iYWxJdGVtQnVmZmVyLCBnbG9iYWxJdGVtQnVmZmVyQ2FwYWNpdHkgfTsKKyAg
ICAgICAgfQorCisgICAgICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGVuY29kZUl0ZW0oSXRlbUhh
bmRsZSkgY29uc3QgZmluYWwgeyByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsgfQorICAg
ICAgICB2b2lkIGRpZEFwcGVuZERhdGEoY29uc3QgSXRlbUJ1ZmZlckhhbmRsZSYsIHNpemVfdCwg
RGlkQ2hhbmdlSXRlbUJ1ZmZlcikgZmluYWwgeyB9CisgICAgfTsKKworICAgIEZsb2F0UmVjdCBj
b250ZXh0Qm91bmRzIHsgMCwgMCwgY29udGV4dFdpZHRoLCBjb250ZXh0SGVpZ2h0IH07CisKKyAg
ICBhdXRvIGNvbG9yU3BhY2UgPSBhZG9wdENGKENHQ29sb3JTcGFjZUNyZWF0ZVdpdGhOYW1lKGtD
R0NvbG9yU3BhY2VTUkdCKSk7CisgICAgYXV0byBjZ0NvbnRleHQgPSBhZG9wdENGKENHQml0bWFw
Q29udGV4dENyZWF0ZShudWxscHRyLCBjb250ZXh0V2lkdGgsIGNvbnRleHRIZWlnaHQsIDgsIDQg
KiBjb250ZXh0V2lkdGgsIGNvbG9yU3BhY2UuZ2V0KCksIGtDR0ltYWdlQWxwaGFQcmVtdWx0aXBs
aWVkTGFzdCkpOworICAgIEdyYXBoaWNzQ29udGV4dCBjb250ZXh0IHsgY2dDb250ZXh0LmdldCgp
IH07CisKKyAgICBEaXNwbGF5TGlzdCBsaXN0OworICAgIFdyaXRpbmdDbGllbnQgd3JpdGVyOwor
ICAgIGxpc3Quc2V0SXRlbUJ1ZmZlckNsaWVudCgmd3JpdGVyKTsKKworICAgIFBhdGggcGF0aDsK
KyAgICBwYXRoLm1vdmVUbyh7IDEwLiwgMTAuIH0pOworICAgIHBhdGguYWRkTGluZVRvKHsgNTAu
LCA1MC4gfSk7CisgICAgcGF0aC5hZGRMaW5lVG8oeyAxMC4sIDEwLiB9KTsKKyAgICBsaXN0LmFw
cGVuZDxTZXRJbmxpbmVTdHJva2VDb2xvcj4oQ29sb3I6OmJsdWUpOworICAgIGxpc3QuYXBwZW5k
PEZpbGxQYXRoPihXVEZNb3ZlKHBhdGgpKTsKKworICAgIERpc3BsYXlMaXN0IHNoYWxsb3dDb3B5
IHt7IEl0ZW1CdWZmZXJIYW5kbGUgeyBnbG9iYWxCdWZmZXJJZGVudGlmaWVyLCBnbG9iYWxJdGVt
QnVmZmVyLCBsaXN0LnNpemVJbkJ5dGVzKCkgfSB9fTsKKyAgICBSZWFkaW5nQ2xpZW50IHJlYWRl
cjsKKyAgICBzaGFsbG93Q29weS5zZXRJdGVtQnVmZmVyQ2xpZW50KCZyZWFkZXIpOworCisgICAg
UmVwbGF5ZXIgcmVwbGF5ZXIgeyBjb250ZXh0LCBsaXN0IH07CisgICAgYXV0byByZXN1bHQgPSBy
ZXBsYXllci5yZXBsYXkoKTsKKyAgICBFWFBFQ1RfR1QocmVzdWx0Lm51bWJlck9mQnl0ZXNSZWFk
LCAwVSk7CisgICAgRVhQRUNUX0VRKHJlc3VsdC5uZXh0RGVzdGluYXRpb25JbWFnZUJ1ZmZlciwg
V1RGOjpudWxsb3B0KTsKKyAgICBFWFBFQ1RfRVEocmVzdWx0Lm1pc3NpbmdDYWNoZWRSZXNvdXJj
ZUlkZW50aWZpZXIsIFdURjo6bnVsbG9wdCk7CisgICAgRVhQRUNUX0VRKHJlc3VsdC5yZWFzb25G
b3JTdG9wcGluZywgU3RvcFJlcGxheVJlYXNvbjo6SW52YWxpZEl0ZW0pOworfQorCitURVNUKERp
c3BsYXlMaXN0VGVzdHMsIElubGluZUl0ZW1WYWxpZGF0aW9uRmFpbHVyZSkKK3sKKyAgICBGbG9h
dFJlY3QgY29udGV4dEJvdW5kcyB7IDAsIDAsIGNvbnRleHRXaWR0aCwgY29udGV4dEhlaWdodCB9
OworCisgICAgYXV0byBjb2xvclNwYWNlID0gYWRvcHRDRihDR0NvbG9yU3BhY2VDcmVhdGVXaXRo
TmFtZShrQ0dDb2xvclNwYWNlU1JHQikpOworICAgIGF1dG8gY2dDb250ZXh0ID0gYWRvcHRDRihD
R0JpdG1hcENvbnRleHRDcmVhdGUobnVsbHB0ciwgY29udGV4dFdpZHRoLCBjb250ZXh0SGVpZ2h0
LCA4LCA0ICogY29udGV4dFdpZHRoLCBjb2xvclNwYWNlLmdldCgpLCBrQ0dJbWFnZUFscGhhUHJl
bXVsdGlwbGllZExhc3QpKTsKKyAgICBHcmFwaGljc0NvbnRleHQgY29udGV4dCB7IGNnQ29udGV4
dC5nZXQoKSB9OworCisgICAgRGlzcGxheUxpc3QgbGlzdDsKKyAgICBsaXN0LmFwcGVuZDxGbHVz
aENvbnRleHQ+KEZsdXNoSWRlbnRpZmllciB7IH0pOworCisgICAgUmVwbGF5ZXIgcmVwbGF5ZXIg
eyBjb250ZXh0LCBsaXN0IH07CisgICAgYXV0byByZXN1bHQgPSByZXBsYXllci5yZXBsYXkoKTsK
KyAgICBFWFBFQ1RfRVEocmVzdWx0Lm51bWJlck9mQnl0ZXNSZWFkLCAwVSk7CisgICAgRVhQRUNU
X0VRKHJlc3VsdC5uZXh0RGVzdGluYXRpb25JbWFnZUJ1ZmZlciwgV1RGOjpudWxsb3B0KTsKKyAg
ICBFWFBFQ1RfRVEocmVzdWx0Lm1pc3NpbmdDYWNoZWRSZXNvdXJjZUlkZW50aWZpZXIsIFdURjo6
bnVsbG9wdCk7CisgICAgRVhQRUNUX0VRKHJlc3VsdC5yZWFzb25Gb3JTdG9wcGluZywgU3RvcFJl
cGxheVJlYXNvbjo6SW52YWxpZEl0ZW0pOworfQorCiB9IC8vIG5hbWVzcGFjZSBUZXN0V2ViS2l0
QVBJCiAKICNlbmRpZiAvLyBVU0UoQ0cpCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>418180</attachid>
            <date>2021-01-22 14:31:51 -0800</date>
            <delta_ts>2021-01-22 14:57:15 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-219097-20210122143150.patch</filename>
            <type>text/plain</type>
            <size>18828</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcxNzU3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGM2MDllOTc5OThjMTdhZmE2
MzdiNWMxMzUxZWYzYjI0ZTAxNGJjOTQuLjhhOWY4MWRiZTJhNjliMWFhN2E0Y2I2N2VkMDFhYmU2
Y2MwY2Q1NWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTQgQEAKKzIwMjEtMDEtMjIgIFdlbnNvbiBI
c2llaCAgPHdlbnNvbl9oc2llaEBhcHBsZS5jb20+CisKKyAgICAgICAgVGhlIHdlYiBwcm9jZXNz
IHNob3VsZCBiZSBraWxsZWQgYWZ0ZXIgZmFpbGluZyB0byBkZWNvZGUgZGlzcGxheSBsaXN0IGl0
ZW1zIGluIHRoZSBHUFUgcHJvY2VzcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MjE5MDk3CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS83MTU0NjUyNj4K
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBIYW5kbGUg
YFN0b3BSZXBsYXlSZWFzb246OkludmFsaWRJdGVtYCBieSB0ZXJtaW5hdGluZyB0aGUgd2ViIHBy
b2Nlc3MgdmlhIE1FU1NBR0VfQ0hFQ0suIFNlZSBiZWxvdyBmb3IgbW9yZQorICAgICAgICBkZXRh
aWxzLgorCisgICAgICAgICogR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNw
cDoKKyAgICAgICAgKFdlYktpdDo6R1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6ZGlkUmVjZWl2
ZUludmFsaWRNZXNzYWdlKToKKworICAgICAgICBBZGQgYSAobm9uLXByaXZhdGUpIGhlbHBlciBt
ZXRob2Qgc28gdGhhdCBgUmVtb3RlUmVuZGVyaW5nQmFja2VuZGAgY2FuIG5vdGlmeSB0aGUgR1BV
IHByb2Nlc3Mtc2lkZSBjb25uZWN0aW9uCisgICAgICAgIG9iamVjdCB3aGVuIGl0IG5lZWRzIHRv
IHRlcm1pbmF0ZSB0aGUgd2ViIHByb2Nlc3MuCisKKyAgICAgICAgKiBHUFVQcm9jZXNzL0dQVUNv
bm5lY3Rpb25Ub1dlYlByb2Nlc3MuaDoKKyAgICAgICAgKiBHUFVQcm9jZXNzL2dyYXBoaWNzL1Jl
bW90ZVJlbmRlcmluZ0JhY2tlbmQuY3BwOgorCisgICAgICAgIEFkZCBtYWNybyBkZWZpbml0aW9u
cyBmb3IgYE1FU1NBR0VfQ0hFQ0tgIGFuZCBgTUVTU0FHRV9DSEVDS19XSVRIX1JFVFVSTl9WQUxV
RWAuIFNpbmNlIHRoZSBtZXRob2RzIG9uCisgICAgICAgIGBSZW1vdGVSZW5kZXJpbmdCYWNrZW5k
YCB0aGF0IHRyaWdnZXIgbWVzc2FnZSBjaGVja3MgYWxsIHJ1biBvbiBhIGJhY2tncm91bmQgcXVl
dWUsIHRoZSBub3JtYWwgKG1haW4tdGhyZWFkKSB3YXkKKyAgICAgICAgb2YgZGVmaW5pbmcgdGhl
c2UgbWFjcm9zIChgTUVTU0FHRV9DSEVDS19XSVRIX1JFVFVSTl9WQUxVRV9CQVNFYCBhbmQgYE1F
U1NBR0VfQ0hFQ0tfQkFTRWApIGRvbid0IHdvcmsuIFdlCisgICAgICAgIGluc3RlYWQgaW50cm9k
dWNlIGEgbmV3IGhlbHBlciBtZXRob2QsIGBkaXNwYXRjaERpZFJlY2VpdmVJbnZhbGlkTWVzc2Fn
ZU9uTWFpblJ1bkxvb3BgLCB0aGF0IGJvdW5jZXMgYmFjayB0byB0aGUKKyAgICAgICAgbWFpbiB0
aHJlYWQgdG8gcGVyZm9ybSB0aGUgYWN0dWFsIG1lc3NhZ2UgY2hlY2ssIGFuZCBkZWZpbmUgdGhl
c2UgbWFjcm9zIHRvIGNhbGwgdGhpcyBoZWxwZXIgbWV0aG9kIGluc3RlYWQgb2YKKyAgICAgICAg
YENvbm5lY3Rpb246Om1hcmtDdXJyZW50bHlEaXNwYXRjaGVkTWVzc2FnZUFzSW52YWxpZCgpYC4K
KworICAgICAgICAoV2ViS2l0OjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpjcmVhdGVJbWFnZUJ1
ZmZlcik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6Om5leHREZXN0
aW5hdGlvbkltYWdlQnVmZmVyQWZ0ZXJBcHBseWluZ0Rpc3BsYXlMaXN0cyk6CisKKyAgICAgICAg
UmVwbGFjZSBhIG51bWJlciBGSVhNRXMgdGhyb3VnaG91dCB0aGVzZSBJUEMgbWVzc2FnZSBoYW5k
bGVycyB3aXRoIGBNRVNTQUdFX0NIRUNLYHMuIEFkZGl0aW9uYWxseSwgYWRkIGEgbmV3CisgICAg
ICAgIGBNRVNTQUdFX0NIRUNLYCBmb3IgdGhlIGNhc2Ugd2hlcmUgd2Ugc3RvcHBlZCByZXBsYXkg
ZWFybHkgZHVlIHRvIGEgY29ycnVwdGVkIG9yIGludmFsaWQgZGlzcGxheSBsaXN0IGl0ZW0uCisK
KyAgICAgICAgKFdlYktpdDo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6ZGlzcGF0Y2hEaWRSZWNl
aXZlSW52YWxpZE1lc3NhZ2VPbk1haW5SdW5Mb29wKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3Rl
UmVuZGVyaW5nQmFja2VuZDo6d2FrZVVwQW5kQXBwbHlEaXNwbGF5TGlzdCk6CisgICAgICAgIChX
ZWJLaXQ6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6Ondha2VVcEFuZEFwcGx5RGlzcGxheUxpc3RJ
bnRlcm5hbCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OnNldE5l
eHRJdGVtQnVmZmVyVG9SZWFkKToKKworICAgICAgICBTaW1wbHkgcmVtb3ZlIHRoZSBGSVhNRSBh
bmQgZWFybHkgcmV0dXJuIGhlcmU7IHRoaXMgY2FuIG9ubHkgaGFwcGVuIGluIHRoZSBjYXNlIHdo
ZXJlIGEgY29tcHJvbWlzZWQgd2ViIGNvbnRlbnQKKyAgICAgICAgcHJvY2VzcyBhdHRlbXB0cyB0
byBhcHBlbmQgcmVkdW5kYW50IGl0ZW0gYnVmZmVyIGNoYW5nZSBpdGVtcy4gSG93ZXZlciwgZG9p
bmcgc28gd2lsbCBlaXRoZXIgYmUgKDEpIGhhcm1sZXNzLAorICAgICAgICBzaW5jZSB0aGUgcGVu
ZGluZyBpdGVtIGJ1ZmZlciBpbmZvcm1hdGlvbiB3aWxsIGp1c3QgYmUgb3ZlcndyaXR0ZW4sIG9y
ICgyKSByZXN1bHQgaW4gaGl0dGluZyBhIE1FU1NBR0VfQ0hFQ0sKKyAgICAgICAgd2hlbiBkZWNv
ZGluZyBpdGVtcyBpZiB3ZSB0cnkgdG8gZXhlY3V0ZSB0aGUgY29udGVudHMgb2YgYW5vdGhlciBp
dGVtIGJ1ZmZlciB0aGF0IGhhcyBub3QgYmVlbiB3cml0dGVuIHRvLgorCisgICAgICAgIChXZWJL
aXQ6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OmNhY2hlTmF0aXZlSW1hZ2UpOgorICAgICAgICAo
V2ViS2l0OjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpjYWNoZUZvbnQpOgorICAgICAgICAoV2Vi
S2l0OjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpkaWRDcmVhdGVTaGFyZWREaXNwbGF5TGlzdEhh
bmRsZSk6CisgICAgICAgICogR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNr
ZW5kLmg6CisKKyAgICAgICAgS2VlcCB0cmFjayBvZiB0aGUgSVBDIG1lc3NhZ2UgbmFtZSB0aGF0
IGlzIGN1cnJlbnRseSBiZWluZyBoYW5kbGVkLCBzbyB0aGF0IHdlIGNhbiBjYWxsCisgICAgICAg
IGBHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpkaWRSZWNlaXZlSW52YWxpZE1lc3NhZ2UoKWAg
d2l0aCB0aGlzIG1lc3NhZ2UgbmFtZS4KKwogMjAyMS0wMS0yMiAgSmlld2VuIFRhbiAgPGppZXdl
bl90YW5AYXBwbGUuY29tPgogCiAgICAgICAgIFtXZWJBdXRobl0gTm8gZXJyb3IgaXMgdmlzaWJs
ZSBhZnRlciB1c2VyIGVudGVycyB0aGUgaW5jb3JyZWN0IFBJTgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9HUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwIGIvU291cmNl
L1dlYktpdC9HUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwCmluZGV4IDAz
NTI5YjRiNjk4NjI3MjZlMmI2ZWRhNjIyOGE1NmE1MGNkMDBhOTUuLjgwMGM4NTc2ZDc5YzY1OWI5
YjA3YTllNDM0M2UyNjg2ZTVhMzg2M2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJv
Y2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQ
VVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAKQEAgLTIyMSw3ICsyMjEsNyBA
QCBMb2dnZXImIEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmxvZ2dlcigpCiAgICAgcmV0dXJu
ICptX2xvZ2dlcjsKIH0KIAotdm9pZCBHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpkaWRSZWNl
aXZlSW52YWxpZE1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBJUEM6Ok1lc3Nh
Z2VOYW1lIG1lc3NhZ2VOYW1lKQordm9pZCBHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpkaWRS
ZWNlaXZlSW52YWxpZE1lc3NhZ2UoSVBDOjpNZXNzYWdlTmFtZSBtZXNzYWdlTmFtZSkKIHsKICAg
ICBSRUxFQVNFX0xPR19GQVVMVChJUEMsICJSZWNlaXZlZCBhbiBpbnZhbGlkIG1lc3NhZ2UgJyUi
IFBVQkxJQ19MT0dfU1RSSU5HICInIGZyb20gV2ViQ29udGVudCBwcm9jZXNzICUiIFBSSXU2NCAi
LCByZXF1ZXN0aW5nIGZvciBpdCB0byBiZSB0ZXJtaW5hdGVkLiIsIGRlc2NyaXB0aW9uKG1lc3Nh
Z2VOYW1lKSwgbV93ZWJQcm9jZXNzSWRlbnRpZmllci50b1VJbnQ2NCgpKTsKICAgICBncHVQcm9j
ZXNzKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6R1BVUHJvY2Vz
c1Byb3h5OjpUZXJtaW5hdGVXZWJQcm9jZXNzKG1fd2ViUHJvY2Vzc0lkZW50aWZpZXIpLCAwKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzLmggYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJv
Y2Vzcy5oCmluZGV4IDUxZmNjN2YwNWI5OTZjMjI2MDAwMWYxMTdmNjJmNDdhZjdkMmIzMDcuLmZh
MTJhOTY5NDRiZTgzZWIyODk2ODBlYjJhMGRiYTdkODI2ZmQ4MzkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgKKysrIGIvU291
cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaApAQCAtMTEy
LDYgKzExMiw4IEBAIHB1YmxpYzoKICAgICBSZW1vdGVBdWRpb1Nlc3Npb25Qcm94eU1hbmFnZXIm
IGF1ZGlvU2Vzc2lvbk1hbmFnZXIoKTsKICNlbmRpZgogCisgICAgdm9pZCBkaWRSZWNlaXZlSW52
YWxpZE1lc3NhZ2UoSVBDOjpNZXNzYWdlTmFtZSk7CisKIHByaXZhdGU6CiAgICAgR1BVQ29ubmVj
dGlvblRvV2ViUHJvY2VzcyhHUFVQcm9jZXNzJiwgV2ViQ29yZTo6UHJvY2Vzc0lkZW50aWZpZXIs
IElQQzo6Q29ubmVjdGlvbjo6SWRlbnRpZmllciwgUEFMOjpTZXNzaW9uSUQpOwogCkBAIC0xNTMs
NyArMTU1LDcgQEAgcHJpdmF0ZToKIAogICAgIC8vIElQQzo6Q29ubmVjdGlvbjo6Q2xpZW50CiAg
ICAgdm9pZCBkaWRDbG9zZShJUEM6OkNvbm5lY3Rpb24mKSBmaW5hbDsKLSAgICB2b2lkIGRpZFJl
Y2VpdmVJbnZhbGlkTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6Ok1lc3NhZ2VOYW1lKSBm
aW5hbDsKKyAgICB2b2lkIGRpZFJlY2VpdmVJbnZhbGlkTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24m
LCBJUEM6Ok1lc3NhZ2VOYW1lIG1lc3NhZ2UpIGZpbmFsIHsgZGlkUmVjZWl2ZUludmFsaWRNZXNz
YWdlKG1lc3NhZ2UpOyB9CiAgICAgdm9pZCBkaWRSZWNlaXZlTWVzc2FnZShJUEM6OkNvbm5lY3Rp
b24mLCBJUEM6OkRlY29kZXImKSBmaW5hbDsKICAgICB2b2lkIGRpZFJlY2VpdmVTeW5jTWVzc2Fn
ZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImLCBzdGQ6OnVuaXF1ZV9wdHI8SVBDOjpF
bmNvZGVyPiYpIGZpbmFsOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mv
Z3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5jcHAgYi9Tb3VyY2UvV2ViS2l0L0dQVVBy
b2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5jcHAKaW5kZXggMWNiNTBlMzdi
NjBhZjA0MDQ2ZjA3NmUzOTZjODI4MTMwNTY1OTU2ZC4uOGFiZWU4MWMyMTVjZmZjZWYzMDI2NTEz
Y2I0ZjY3OWE3ZGY1OWYyMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dy
YXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BV
UHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kLmNwcApAQCAtMzAsNiArMzAs
NyBAQAogCiAjaW5jbHVkZSAiRGlzcGxheUxpc3RSZWFkZXJIYW5kbGUuaCIKICNpbmNsdWRlICJH
UFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgiCisjaW5jbHVkZSAiTWVzc2FnZU5hbWVzLmgiCiAj
aW5jbHVkZSAiUGxhdGZvcm1SZW1vdGVJbWFnZUJ1ZmZlci5oIgogI2luY2x1ZGUgIlJlbW90ZU1l
ZGlhUGxheWVyTWFuYWdlclByb3h5LmgiCiAjaW5jbHVkZSAiUmVtb3RlTWVkaWFQbGF5ZXJQcm94
eS5oIgpAQCAtMzcsNiArMzgsNyBAQAogI2luY2x1ZGUgIlJlbW90ZVJlbmRlcmluZ0JhY2tlbmRN
ZXNzYWdlcy5oIgogI2luY2x1ZGUgIlJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eU1lc3NhZ2Vz
LmgiCiAjaW5jbHVkZSA8d3RmL0NoZWNrZWRBcml0aG1ldGljLmg+CisjaW5jbHVkZSA8d3RmL1Nl
dEZvclNjb3BlLmg+CiAjaW5jbHVkZSA8d3RmL1N5c3RlbVRyYWNpbmcuaD4KICNpbmNsdWRlIDx3
dGYvV29ya1F1ZXVlLmg+CiAKQEAgLTQ0LDYgKzQ2LDIwIEBACiAjaW5jbHVkZSA8d3RmL2NvY29h
L01hY2hTZW1hcGhvcmUuaD4KICNlbmRpZgogCisjZGVmaW5lIE1FU1NBR0VfQ0hFQ0soYXNzZXJ0
aW9uKSBkbyB7IFwKKyAgICBpZiAoVU5MSUtFTFkoIShhc3NlcnRpb24pKSkgeyBcCisgICAgICAg
IGRpc3BhdGNoRGlkUmVjZWl2ZUludmFsaWRNZXNzYWdlT25NYWluUnVuTG9vcCgpOyBcCisgICAg
ICAgIHJldHVybjsgXAorICAgIH0gXAorfSB3aGlsZSAoMCkKKworI2RlZmluZSBNRVNTQUdFX0NI
RUNLX1dJVEhfUkVUVVJOX1ZBTFVFKGFzc2VydGlvbiwgcmV0dXJuVmFsdWUpIGRvIHsgXAorICAg
IGlmIChVTkxJS0VMWSghKGFzc2VydGlvbikpKSB7IFwKKyAgICAgICAgZGlzcGF0Y2hEaWRSZWNl
aXZlSW52YWxpZE1lc3NhZ2VPbk1haW5SdW5Mb29wKCk7IFwKKyAgICAgICAgcmV0dXJuIChyZXR1
cm5WYWx1ZSk7IFwKKyAgICB9IFwKK30gd2hpbGUgKDApCisKIG5hbWVzcGFjZSBXZWJLaXQgewog
dXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKQEAgLTExNyw2ICsxMzMsNyBAQCB2b2lkIFJlbW90
ZVJlbmRlcmluZ0JhY2tlbmQ6OmRpZEZsdXNoKERpc3BsYXlMaXN0OjpGbHVzaElkZW50aWZpZXIg
Zmx1c2hJZGVudGlmaQogCiB2b2lkIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OmNyZWF0ZUltYWdl
QnVmZmVyKGNvbnN0IEZsb2F0U2l6ZSYgbG9naWNhbFNpemUsIFJlbmRlcmluZ01vZGUgcmVuZGVy
aW5nTW9kZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBDb2xvclNwYWNlIGNvbG9yU3BhY2UsIFBp
eGVsRm9ybWF0IHBpeGVsRm9ybWF0LCBSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgcmVuZGVy
aW5nUmVzb3VyY2VJZGVudGlmaWVyKQogeworICAgIFNldEZvclNjb3BlIHNldEN1cnJlbnRNZXNz
YWdlTmFtZShtX2N1cnJlbnRNZXNzYWdlTmFtZSwgSVBDOjpNZXNzYWdlTmFtZTo6UmVtb3RlUmVu
ZGVyaW5nQmFja2VuZF9DcmVhdGVJbWFnZUJ1ZmZlcik7CiAgICAgQVNTRVJUKCFSdW5Mb29wOjpp
c01haW4oKSk7CiAgICAgQVNTRVJUKHJlbmRlcmluZ01vZGUgPT0gUmVuZGVyaW5nTW9kZTo6QWNj
ZWxlcmF0ZWQgfHwgcmVuZGVyaW5nTW9kZSA9PSBSZW5kZXJpbmdNb2RlOjpVbmFjY2VsZXJhdGVk
KTsKIApAQCAtMTM2LDcgKzE1Myw3IEBAIHZvaWQgUmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6Y3Jl
YXRlSW1hZ2VCdWZmZXIoY29uc3QgRmxvYXRTaXplJiBsb2dpY2FsU2l6ZSwgUmVuCiAgICAgbV9y
ZW1vdGVSZXNvdXJjZUNhY2hlLmNhY2hlSW1hZ2VCdWZmZXIobWFrZVJlZigqaW1hZ2VCdWZmZXIp
KTsKIAogICAgIGlmIChtX3BlbmRpbmdXYWtldXBJbmZvICYmIG1fcGVuZGluZ1dha2V1cEluZm8t
PnNob3VsZFBlcmZvcm1XYWtldXAocmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKSkKLSAgICAg
ICAgd2FrZVVwQW5kQXBwbHlEaXNwbGF5TGlzdChzdGQ6OmV4Y2hhbmdlKG1fcGVuZGluZ1dha2V1
cEluZm8sIFdURjo6bnVsbG9wdCktPmFyZ3VtZW50cyk7CisgICAgICAgIHdha2VVcEFuZEFwcGx5
RGlzcGxheUxpc3RJbnRlcm5hbChzdGQ6OmV4Y2hhbmdlKG1fcGVuZGluZ1dha2V1cEluZm8sIFdU
Rjo6bnVsbG9wdCktPmFyZ3VtZW50cyk7CiB9CiAKIERpc3BsYXlMaXN0OjpSZXBsYXlSZXN1bHQg
UmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6c3VibWl0KGNvbnN0IERpc3BsYXlMaXN0OjpEaXNwbGF5
TGlzdCYgZGlzcGxheUxpc3QsIEltYWdlQnVmZmVyJiBkZXN0aW5hdGlvbikKQEAgLTE3MywzMCAr
MTkwLDE4IEBAIFJlZlB0cjxJbWFnZUJ1ZmZlcj4gUmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6bmV4
dERlc3RpbmF0aW9uSW1hZ2VCdWZmZXJBZnRlckFwcGx5CiAKICAgICB3aGlsZSAoZGVzdGluYXRp
b24pIHsKICAgICAgICAgYXV0byBkaXNwbGF5TGlzdCA9IGhhbmRsZS5kaXNwbGF5TGlzdEZvclJl
YWRpbmcob2Zmc2V0LCBzaXplVG9SZWFkLCAqdGhpcyk7Ci0gICAgICAgIGlmIChVTkxJS0VMWSgh
ZGlzcGxheUxpc3QpKSB7Ci0gICAgICAgICAgICAvLyBGSVhNRTogQWRkIGEgbWVzc2FnZSBjaGVj
ayB0byB0ZXJtaW5hdGUgdGhlIHdlYiBwcm9jZXNzLgotICAgICAgICAgICAgQVNTRVJUX05PVF9S
RUFDSEVEKCk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQorICAgICAgICBNRVNTQUdF
X0NIRUNLX1dJVEhfUkVUVVJOX1ZBTFVFKGRpc3BsYXlMaXN0LCBudWxscHRyKTsKIAogICAgICAg
ICBhdXRvIHJlc3VsdCA9IHN1Ym1pdCgqZGlzcGxheUxpc3QsICpkZXN0aW5hdGlvbik7CiAgICAg
ICAgIHNpemVUb1JlYWQgPSBoYW5kbGUuYWR2YW5jZShyZXN1bHQubnVtYmVyT2ZCeXRlc1JlYWQp
OworICAgICAgICBNRVNTQUdFX0NIRUNLX1dJVEhfUkVUVVJOX1ZBTFVFKHJlc3VsdC5yZWFzb25G
b3JTdG9wcGluZyAhPSBEaXNwbGF5TGlzdDo6U3RvcFJlcGxheVJlYXNvbjo6SW52YWxpZEl0ZW0s
IG51bGxwdHIpOwogCiAgICAgICAgIENoZWNrZWRTaXplIGNoZWNrZWRPZmZzZXQgPSBvZmZzZXQ7
CiAgICAgICAgIGNoZWNrZWRPZmZzZXQgKz0gcmVzdWx0Lm51bWJlck9mQnl0ZXNSZWFkOwotICAg
ICAgICBpZiAoVU5MSUtFTFkoY2hlY2tlZE9mZnNldC5oYXNPdmVyZmxvd2VkKCkpKSB7Ci0gICAg
ICAgICAgICAvLyBGSVhNRTogQWRkIGEgbWVzc2FnZSBjaGVjayB0byB0ZXJtaW5hdGUgdGhlIHdl
YiBwcm9jZXNzLgotICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgICAgICAg
ICBicmVhazsKLSAgICAgICAgfQorICAgICAgICBNRVNTQUdFX0NIRUNLX1dJVEhfUkVUVVJOX1ZB
TFVFKCFjaGVja2VkT2Zmc2V0Lmhhc092ZXJmbG93ZWQoKSwgbnVsbHB0cik7CiAKICAgICAgICAg
b2Zmc2V0ID0gY2hlY2tlZE9mZnNldC51bnNhZmVHZXQoKTsKLQotICAgICAgICBpZiAoVU5MSUtF
TFkob2Zmc2V0ID4gaGFuZGxlLnNoYXJlZE1lbW9yeSgpLnNpemUoKSkpIHsKLSAgICAgICAgICAg
IC8vIEZJWE1FOiBBZGQgYSBtZXNzYWdlIGNoZWNrIHRvIHRlcm1pbmF0ZSB0aGUgd2ViIHByb2Nl
c3MuCi0gICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgICAgIGJyZWFr
OwotICAgICAgICB9CisgICAgICAgIE1FU1NBR0VfQ0hFQ0tfV0lUSF9SRVRVUk5fVkFMVUUob2Zm
c2V0IDw9IGhhbmRsZS5zaGFyZWRNZW1vcnkoKS5zaXplKCksIG51bGxwdHIpOwogCiAgICAgICAg
IGlmIChyZXN1bHQucmVhc29uRm9yU3RvcHBpbmcgPT0gRGlzcGxheUxpc3Q6OlN0b3BSZXBsYXlS
ZWFzb246OkNoYW5nZURlc3RpbmF0aW9uSW1hZ2VCdWZmZXIpIHsKICAgICAgICAgICAgIGRlc3Rp
bmF0aW9uID0gbWFrZVJlZlB0cihtX3JlbW90ZVJlc291cmNlQ2FjaGUuY2FjaGVkSW1hZ2VCdWZm
ZXIoKnJlc3VsdC5uZXh0RGVzdGluYXRpb25JbWFnZUJ1ZmZlcikpOwpAQCAtMjMyLDI2ICsyMzcs
MTMgQEAgUmVmUHRyPEltYWdlQnVmZmVyPiBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpuZXh0RGVz
dGluYXRpb25JbWFnZUJ1ZmZlckFmdGVyQXBwbHkKICAgICAgICAgICAgICAgICBicmVhazsKIAog
ICAgICAgICAgICAgc2l6ZVRvUmVhZCA9IGhhbmRsZS51bnJlYWRCeXRlcygpOwotICAgICAgICAg
ICAgaWYgKFVOTElLRUxZKCFzaXplVG9SZWFkKSkgewotICAgICAgICAgICAgICAgIC8vIEZJWE1F
OiBBZGQgYSBtZXNzYWdlIGNoZWNrIHRvIHRlcm1pbmF0ZSB0aGUgd2ViIHByb2Nlc3MuCi0gICAg
ICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgICAgICAgICAgICAgYnJlYWs7
Ci0gICAgICAgICAgICB9CisgICAgICAgICAgICBNRVNTQUdFX0NIRUNLX1dJVEhfUkVUVVJOX1ZB
TFVFKHNpemVUb1JlYWQsIG51bGxwdHIpOwogCiAgICAgICAgICAgICBhdXRvIG5ld0Rlc3RpbmF0
aW9uSWRlbnRpZmllciA9IG1ha2VPYmplY3RJZGVudGlmaWVyPFJlbmRlcmluZ1Jlc291cmNlSWRl
bnRpZmllclR5cGU+KHJlc3VtZVJlYWRpbmdJbmZvLT5kZXN0aW5hdGlvbik7Ci0gICAgICAgICAg
ICBpZiAoVU5MSUtFTFkoIW5ld0Rlc3RpbmF0aW9uSWRlbnRpZmllcikpIHsKLSAgICAgICAgICAg
ICAgICAvLyBGSVhNRTogQWRkIGEgbWVzc2FnZSBjaGVjayB0byB0ZXJtaW5hdGUgdGhlIHdlYiBw
cm9jZXNzLgotICAgICAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICAg
ICAgICAgIGJyZWFrOwotICAgICAgICAgICAgfQorICAgICAgICAgICAgTUVTU0FHRV9DSEVDS19X
SVRIX1JFVFVSTl9WQUxVRShuZXdEZXN0aW5hdGlvbklkZW50aWZpZXIsIG51bGxwdHIpOwogCiAg
ICAgICAgICAgICBkZXN0aW5hdGlvbiA9IG1ha2VSZWZQdHIobV9yZW1vdGVSZXNvdXJjZUNhY2hl
LmNhY2hlZEltYWdlQnVmZmVyKG5ld0Rlc3RpbmF0aW9uSWRlbnRpZmllcikpOwotCi0gICAgICAg
ICAgICBpZiAoVU5MSUtFTFkoIWRlc3RpbmF0aW9uKSkgewotICAgICAgICAgICAgICAgIC8vIEZJ
WE1FOiBBZGQgYSBtZXNzYWdlIGNoZWNrIHRvIHRlcm1pbmF0ZSB0aGUgd2ViIHByb2Nlc3MuCi0g
ICAgICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgICAgICAgICAgICAgYnJl
YWs7Ci0gICAgICAgICAgICB9CisgICAgICAgICAgICBNRVNTQUdFX0NIRUNLX1dJVEhfUkVUVVJO
X1ZBTFVFKGRlc3RpbmF0aW9uLCBudWxscHRyKTsKIAogICAgICAgICAgICAgb2Zmc2V0ID0gcmVz
dW1lUmVhZGluZ0luZm8tPm9mZnNldDsKIApAQCAtMjY2LDMwICsyNTgsNDMgQEAgUmVmUHRyPElt
YWdlQnVmZmVyPiBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpuZXh0RGVzdGluYXRpb25JbWFnZUJ1
ZmZlckFmdGVyQXBwbHkKICAgICByZXR1cm4gZGVzdGluYXRpb247CiB9CiAKK3ZvaWQgUmVtb3Rl
UmVuZGVyaW5nQmFja2VuZDo6ZGlzcGF0Y2hEaWRSZWNlaXZlSW52YWxpZE1lc3NhZ2VPbk1haW5S
dW5Mb29wKCkKK3sKKyAgICBpZiAoIW1fY3VycmVudE1lc3NhZ2VOYW1lKSB7CisgICAgICAgIEFT
U0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgaWYgKG1f
aXNEaXNwYXRjaGluZ0RpZFJlY2VpdmVJbnZhbGlkTWVzc2FnZSkKKyAgICAgICAgcmV0dXJuOwor
CisgICAgbV9pc0Rpc3BhdGNoaW5nRGlkUmVjZWl2ZUludmFsaWRNZXNzYWdlID0gdHJ1ZTsKKyAg
ICBjYWxsT25NYWluUnVuTG9vcChbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMp
LCBtZXNzYWdlTmFtZSA9ICptX2N1cnJlbnRNZXNzYWdlTmFtZV0gKCkgbXV0YWJsZSB7CisgICAg
ICAgIG1fZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2Vzcy0+ZGlkUmVjZWl2ZUludmFsaWRNZXNzYWdl
KG1lc3NhZ2VOYW1lKTsKKyAgICAgICAgbV9pc0Rpc3BhdGNoaW5nRGlkUmVjZWl2ZUludmFsaWRN
ZXNzYWdlID0gZmFsc2U7CisgICAgfSk7Cit9CisKIHZvaWQgUmVtb3RlUmVuZGVyaW5nQmFja2Vu
ZDo6d2FrZVVwQW5kQXBwbHlEaXNwbGF5TGlzdChjb25zdCBHUFVQcm9jZXNzV2FrZXVwTWVzc2Fn
ZUFyZ3VtZW50cyYgYXJndW1lbnRzKQoreworICAgIFNldEZvclNjb3BlIHNldEN1cnJlbnRNZXNz
YWdlTmFtZShtX2N1cnJlbnRNZXNzYWdlTmFtZSwgSVBDOjpNZXNzYWdlTmFtZTo6UmVtb3RlUmVu
ZGVyaW5nQmFja2VuZF9XYWtlVXBBbmRBcHBseURpc3BsYXlMaXN0KTsKKyAgICB3YWtlVXBBbmRB
cHBseURpc3BsYXlMaXN0SW50ZXJuYWwoYXJndW1lbnRzKTsKK30KKwordm9pZCBSZW1vdGVSZW5k
ZXJpbmdCYWNrZW5kOjp3YWtlVXBBbmRBcHBseURpc3BsYXlMaXN0SW50ZXJuYWwoY29uc3QgR1BV
UHJvY2Vzc1dha2V1cE1lc3NhZ2VBcmd1bWVudHMmIGFyZ3VtZW50cykKIHsKICAgICBBU1NFUlQo
IVJ1bkxvb3A6OmlzTWFpbigpKTsKIAogICAgIFRyYWNlU2NvcGUgdHJhY2luZ1Njb3BlKFdha2VV
cEFuZEFwcGx5RGlzcGxheUxpc3RTdGFydCwgV2FrZVVwQW5kQXBwbHlEaXNwbGF5TGlzdEVuZCk7
CiAgICAgYXV0byBkZXN0aW5hdGlvbkltYWdlQnVmZmVyID0gbWFrZVJlZlB0cihtX3JlbW90ZVJl
c291cmNlQ2FjaGUuY2FjaGVkSW1hZ2VCdWZmZXIoYXJndW1lbnRzLmRlc3RpbmF0aW9uSW1hZ2VC
dWZmZXJJZGVudGlmaWVyKSk7Ci0gICAgaWYgKFVOTElLRUxZKCFkZXN0aW5hdGlvbkltYWdlQnVm
ZmVyKSkgewotICAgICAgICAvLyBGSVhNRTogQWRkIGEgbWVzc2FnZSBjaGVjayB0byB0ZXJtaW5h
dGUgdGhlIHdlYiBwcm9jZXNzLgotICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAg
ICAgcmV0dXJuOwotICAgIH0KKyAgICBNRVNTQUdFX0NIRUNLKGRlc3RpbmF0aW9uSW1hZ2VCdWZm
ZXIpOwogCiAgICAgYXV0byBpbml0aWFsSGFuZGxlID0gbV9zaGFyZWREaXNwbGF5TGlzdEhhbmRs
ZXMuZ2V0KGFyZ3VtZW50cy5pdGVtQnVmZmVySWRlbnRpZmllcik7Ci0gICAgaWYgKFVOTElLRUxZ
KCFpbml0aWFsSGFuZGxlKSkgewotICAgICAgICAvLyBGSVhNRTogQWRkIGEgbWVzc2FnZSBjaGVj
ayB0byB0ZXJtaW5hdGUgdGhlIHdlYiBwcm9jZXNzLgotICAgICAgICBBU1NFUlRfTk9UX1JFQUNI
RUQoKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KKyAgICBNRVNTQUdFX0NIRUNLKGluaXRpYWxI
YW5kbGUpOwogCiAgICAgZGVzdGluYXRpb25JbWFnZUJ1ZmZlciA9IG5leHREZXN0aW5hdGlvbklt
YWdlQnVmZmVyQWZ0ZXJBcHBseWluZ0Rpc3BsYXlMaXN0cygqZGVzdGluYXRpb25JbWFnZUJ1ZmZl
ciwgYXJndW1lbnRzLm9mZnNldCwgKmluaXRpYWxIYW5kbGUsIGFyZ3VtZW50cy5yZWFzb24pOwot
ICAgIGlmICghZGVzdGluYXRpb25JbWFnZUJ1ZmZlcikgewotICAgICAgICBSRUxFQVNFX0FTU0VS
VChtX3BlbmRpbmdXYWtldXBJbmZvKTsKKyAgICBpZiAoIWRlc3RpbmF0aW9uSW1hZ2VCdWZmZXIp
CiAgICAgICAgIHJldHVybjsKLSAgICB9CiAKICAgICB3aGlsZSAobV9wZW5kaW5nV2FrZXVwSW5m
bykgewogICAgICAgICBpZiAobV9wZW5kaW5nV2FrZXVwSW5mby0+bWlzc2luZ0NhY2hlZFJlc291
cmNlSWRlbnRpZmllcikKQEAgLTMwNSwyMCArMzEwLDEzIEBAIHZvaWQgUmVtb3RlUmVuZGVyaW5n
QmFja2VuZDo6d2FrZVVwQW5kQXBwbHlEaXNwbGF5TGlzdChjb25zdCBHUFVQcm9jZXNzV2FrZXVw
TWVzCiAgICAgICAgIC8vIE90aGVyd2lzZSwgY29udGludWUgcmVhZGluZyB0aGUgbmV4dCBkaXNw
bGF5IGxpc3QgaXRlbSBidWZmZXIgZnJvbSB0aGUgc3RhcnQuCiAgICAgICAgIGF1dG8gYXJndW1l
bnRzID0gc3RkOjpleGNoYW5nZShtX3BlbmRpbmdXYWtldXBJbmZvLCBXVEY6Om51bGxvcHQpLT5h
cmd1bWVudHM7CiAgICAgICAgIGRlc3RpbmF0aW9uSW1hZ2VCdWZmZXIgPSBuZXh0RGVzdGluYXRp
b25JbWFnZUJ1ZmZlckFmdGVyQXBwbHlpbmdEaXNwbGF5TGlzdHMoKmRlc3RpbmF0aW9uSW1hZ2VC
dWZmZXIsIGFyZ3VtZW50cy5vZmZzZXQsICpuZXh0SGFuZGxlLCBhcmd1bWVudHMucmVhc29uKTsK
LSAgICAgICAgaWYgKCFkZXN0aW5hdGlvbkltYWdlQnVmZmVyKSB7Ci0gICAgICAgICAgICBSRUxF
QVNFX0FTU0VSVChtX3BlbmRpbmdXYWtldXBJbmZvKTsKKyAgICAgICAgaWYgKCFkZXN0aW5hdGlv
bkltYWdlQnVmZmVyKQogICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KICAgICB9CiB9CiAK
IHZvaWQgUmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6c2V0TmV4dEl0ZW1CdWZmZXJUb1JlYWQoRGlz
cGxheUxpc3Q6Okl0ZW1CdWZmZXJJZGVudGlmaWVyIGlkZW50aWZpZXIsIFdlYkNvcmU6OlJlbmRl
cmluZ1Jlc291cmNlSWRlbnRpZmllciBkZXN0aW5hdGlvbklkZW50aWZpZXIpCiB7Ci0gICAgaWYg
KFVOTElLRUxZKG1fcGVuZGluZ1dha2V1cEluZm8pKSB7Ci0gICAgICAgIC8vIEZJWE1FOiBBZGQg
YSBtZXNzYWdlIGNoZWNrIHRvIHRlcm1pbmF0ZSB0aGUgd2ViIHByb2Nlc3MuCi0gICAgICAgIEFT
U0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICByZXR1cm47Ci0gICAgfQogICAgIG1fcGVuZGlu
Z1dha2V1cEluZm8gPSB7e3sgaWRlbnRpZmllciwgU2hhcmVkRGlzcGxheUxpc3RIYW5kbGU6Omhl
YWRlclNpemUoKSwgZGVzdGluYXRpb25JZGVudGlmaWVyLCBHUFVQcm9jZXNzV2FrZXVwUmVhc29u
OjpVbnNwZWNpZmllZCB9LCBXVEY6Om51bGxvcHQgfX07CiB9CiAKQEAgLTM2NCw2ICszNjIsNyBA
QCB2b2lkIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OmdldEJHUkFEYXRhRm9ySW1hZ2VCdWZmZXIo
V2ViQ29yZTo6UmVuZGVyaW5nUmVzb3VyYwogCiB2b2lkIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6
OmNhY2hlTmF0aXZlSW1hZ2UoY29uc3QgU2hhcmVhYmxlQml0bWFwOjpIYW5kbGUmIGhhbmRsZSwg
UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyIHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcikK
IHsKKyAgICBTZXRGb3JTY29wZSBzZXRDdXJyZW50TWVzc2FnZU5hbWUobV9jdXJyZW50TWVzc2Fn
ZU5hbWUsIElQQzo6TWVzc2FnZU5hbWU6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmRfQ2FjaGVOYXRp
dmVJbWFnZSk7CiAgICAgQVNTRVJUKCFSdW5Mb29wOjppc01haW4oKSk7CiAKICAgICBhdXRvIGJp
dG1hcCA9IFNoYXJlYWJsZUJpdG1hcDo6Y3JlYXRlKGhhbmRsZSk7CkBAIC0zNzcsMTcgKzM3Niwx
OCBAQCB2b2lkIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OmNhY2hlTmF0aXZlSW1hZ2UoY29uc3Qg
U2hhcmVhYmxlQml0bWFwOjpIYW5kbGUmIGhhbgogICAgIG1fcmVtb3RlUmVzb3VyY2VDYWNoZS5j
YWNoZU5hdGl2ZUltYWdlKG1ha2VSZWYoKmltYWdlKSk7CiAKICAgICBpZiAobV9wZW5kaW5nV2Fr
ZXVwSW5mbyAmJiBtX3BlbmRpbmdXYWtldXBJbmZvLT5zaG91bGRQZXJmb3JtV2FrZXVwKHJlbmRl
cmluZ1Jlc291cmNlSWRlbnRpZmllcikpCi0gICAgICAgIHdha2VVcEFuZEFwcGx5RGlzcGxheUxp
c3Qoc3RkOjpleGNoYW5nZShtX3BlbmRpbmdXYWtldXBJbmZvLCBXVEY6Om51bGxvcHQpLT5hcmd1
bWVudHMpOworICAgICAgICB3YWtlVXBBbmRBcHBseURpc3BsYXlMaXN0SW50ZXJuYWwoc3RkOjpl
eGNoYW5nZShtX3BlbmRpbmdXYWtldXBJbmZvLCBXVEY6Om51bGxvcHQpLT5hcmd1bWVudHMpOwog
fQogCiB2b2lkIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OmNhY2hlRm9udChSZWY8Rm9udD4mJiBm
b250KQogeworICAgIFNldEZvclNjb3BlIHNldEN1cnJlbnRNZXNzYWdlTmFtZShtX2N1cnJlbnRN
ZXNzYWdlTmFtZSwgSVBDOjpNZXNzYWdlTmFtZTo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZF9DYWNo
ZUZvbnQpOwogICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOwogCiAgICAgYXV0byBpZGVu
dGlmaWVyID0gZm9udC0+cmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKCk7CiAgICAgbV9yZW1v
dGVSZXNvdXJjZUNhY2hlLmNhY2hlRm9udChXVEZNb3ZlKGZvbnQpKTsKICAgICBpZiAobV9wZW5k
aW5nV2FrZXVwSW5mbyAmJiBtX3BlbmRpbmdXYWtldXBJbmZvLT5zaG91bGRQZXJmb3JtV2FrZXVw
KGlkZW50aWZpZXIpKQotICAgICAgICB3YWtlVXBBbmRBcHBseURpc3BsYXlMaXN0KHN0ZDo6ZXhj
aGFuZ2UobV9wZW5kaW5nV2FrZXVwSW5mbywgV1RGOjpudWxsb3B0KS0+YXJndW1lbnRzKTsKKyAg
ICAgICAgd2FrZVVwQW5kQXBwbHlEaXNwbGF5TGlzdEludGVybmFsKHN0ZDo6ZXhjaGFuZ2UobV9w
ZW5kaW5nV2FrZXVwSW5mbywgV1RGOjpudWxsb3B0KS0+YXJndW1lbnRzKTsKIH0KIAogdm9pZCBS
ZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpkZWxldGVBbGxGb250cygpCkBAIC00MDQsMTkgKzQwNCwx
NiBAQCB2b2lkIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OnJlbGVhc2VSZW1vdGVSZXNvdXJjZShS
ZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgcgogCiB2b2lkIFJlbW90ZVJlbmRlcmluZ0JhY2tl
bmQ6OmRpZENyZWF0ZVNoYXJlZERpc3BsYXlMaXN0SGFuZGxlKERpc3BsYXlMaXN0OjpJdGVtQnVm
ZmVySWRlbnRpZmllciBpZGVudGlmaWVyLCBjb25zdCBTaGFyZWRNZW1vcnk6OklQQ0hhbmRsZSYg
aGFuZGxlLCBSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgZGVzdGluYXRpb25CdWZmZXJJZGVu
dGlmaWVyKQogewotICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOworICAgIFNldEZvclNj
b3BlIHNldEN1cnJlbnRNZXNzYWdlTmFtZShtX2N1cnJlbnRNZXNzYWdlTmFtZSwgSVBDOjpNZXNz
YWdlTmFtZTo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZF9EaWRDcmVhdGVTaGFyZWREaXNwbGF5TGlz
dEhhbmRsZSk7CiAKLSAgICBpZiAoVU5MSUtFTFkobV9zaGFyZWREaXNwbGF5TGlzdEhhbmRsZXMu
Y29udGFpbnMoaWRlbnRpZmllcikpKSB7Ci0gICAgICAgIC8vIEZJWE1FOiBBZGQgYSBtZXNzYWdl
IGNoZWNrIHRvIHRlcm1pbmF0ZSB0aGUgd2ViIHByb2Nlc3MuCi0gICAgICAgIEFTU0VSVF9OT1Rf
UkVBQ0hFRCgpOwotICAgICAgICByZXR1cm47Ci0gICAgfQorICAgIEFTU0VSVCghUnVuTG9vcDo6
aXNNYWluKCkpOworICAgIE1FU1NBR0VfQ0hFQ0soIW1fc2hhcmVkRGlzcGxheUxpc3RIYW5kbGVz
LmNvbnRhaW5zKGlkZW50aWZpZXIpKTsKIAogICAgIGlmIChhdXRvIHNoYXJlZE1lbW9yeSA9IFNo
YXJlZE1lbW9yeTo6bWFwKGhhbmRsZS5oYW5kbGUsIFNoYXJlZE1lbW9yeTo6UHJvdGVjdGlvbjo6
UmVhZFdyaXRlKSkKICAgICAgICAgbV9zaGFyZWREaXNwbGF5TGlzdEhhbmRsZXMuc2V0KGlkZW50
aWZpZXIsIERpc3BsYXlMaXN0UmVhZGVySGFuZGxlOjpjcmVhdGUoaWRlbnRpZmllciwgc2hhcmVk
TWVtb3J5LnJlbGVhc2VOb25OdWxsKCkpKTsKIAogICAgIGlmIChtX3BlbmRpbmdXYWtldXBJbmZv
ICYmIG1fcGVuZGluZ1dha2V1cEluZm8tPnNob3VsZFBlcmZvcm1XYWtldXAoaWRlbnRpZmllcikp
Ci0gICAgICAgIHdha2VVcEFuZEFwcGx5RGlzcGxheUxpc3Qoc3RkOjpleGNoYW5nZShtX3BlbmRp
bmdXYWtldXBJbmZvLCBXVEY6Om51bGxvcHQpLT5hcmd1bWVudHMpOworICAgICAgICB3YWtlVXBB
bmRBcHBseURpc3BsYXlMaXN0SW50ZXJuYWwoc3RkOjpleGNoYW5nZShtX3BlbmRpbmdXYWtldXBJ
bmZvLCBXVEY6Om51bGxvcHQpLT5hcmd1bWVudHMpOwogfQogCiBPcHRpb25hbDxEaXNwbGF5TGlz
dDo6SXRlbUhhbmRsZT4gV0FSTl9VTlVTRURfUkVUVVJOIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6
OmRlY29kZUl0ZW0oY29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90IGxlbmd0aCwgRGlzcGxheUxp
c3Q6Okl0ZW1UeXBlIHR5cGUsIHVpbnQ4X3QqIGhhbmRsZUxvY2F0aW9uKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQu
aCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNr
ZW5kLmgKaW5kZXggZTYzODk5MDNiNjUwYmE4ZDk3M2RhZjliM2RjY2E2NDUzNTZmNDVmOC4uMTE4
NjliYjY5ZmVkYmEyMTJmYWJmNDZlZjMyZjAwNzBkZDg3ZThiOCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2Vu
ZC5oCkBAIC0xMDQsNiArMTA0LDggQEAgcHJpdmF0ZToKIAogICAgIFdlYkNvcmU6OkRpc3BsYXlM
aXN0OjpSZXBsYXlSZXN1bHQgc3VibWl0KGNvbnN0IFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEaXNw
bGF5TGlzdCYsIFdlYkNvcmU6OkltYWdlQnVmZmVyJiBkZXN0aW5hdGlvbik7CiAgICAgUmVmUHRy
PFdlYkNvcmU6OkltYWdlQnVmZmVyPiBuZXh0RGVzdGluYXRpb25JbWFnZUJ1ZmZlckFmdGVyQXBw
bHlpbmdEaXNwbGF5TGlzdHMoV2ViQ29yZTo6SW1hZ2VCdWZmZXImIGluaXRpYWxEZXN0aW5hdGlv
biwgc2l6ZV90IGluaXRpYWxPZmZzZXQsIERpc3BsYXlMaXN0UmVhZGVySGFuZGxlJiwgR1BVUHJv
Y2Vzc1dha2V1cFJlYXNvbik7CisgICAgdm9pZCB3YWtlVXBBbmRBcHBseURpc3BsYXlMaXN0SW50
ZXJuYWwoY29uc3QgR1BVUHJvY2Vzc1dha2V1cE1lc3NhZ2VBcmd1bWVudHMmKTsKKyAgICB2b2lk
IGRpc3BhdGNoRGlkUmVjZWl2ZUludmFsaWRNZXNzYWdlT25NYWluUnVuTG9vcCgpOwogCiAgICAg
Ly8gSVBDOjpNZXNzYWdlU2VuZGVyLgogICAgIElQQzo6Q29ubmVjdGlvbiogbWVzc2FnZVNlbmRl
ckNvbm5lY3Rpb24oKSBjb25zdCBvdmVycmlkZTsKQEAgLTE1MSw2ICsxNTMsOCBAQCBwcml2YXRl
OgogI2lmIFBMQVRGT1JNKENPQ09BKQogICAgIHN0ZDo6dW5pcXVlX3B0cjxXVEY6Ok1hY2hTZW1h
cGhvcmU+IG1fcmVzdW1lRGlzcGxheUxpc3RTZW1hcGhvcmU7CiAjZW5kaWYKKyAgICBPcHRpb25h
bDxJUEM6Ok1lc3NhZ2VOYW1lPiBtX2N1cnJlbnRNZXNzYWdlTmFtZTsKKyAgICBib29sIG1faXNE
aXNwYXRjaGluZ0RpZFJlY2VpdmVJbnZhbGlkTWVzc2FnZSB7IGZhbHNlIH07CiB9OwogCiB9IC8v
IG5hbWVzcGFjZSBXZWJLaXQK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>418197</attachid>
            <date>2021-01-22 16:27:47 -0800</date>
            <delta_ts>2021-01-22 16:30:43 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-219097-20210122162747.patch</filename>
            <type>text/plain</type>
            <size>10558</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcxNzU3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGM2MDllOTc5OThjMTdhZmE2
MzdiNWMxMzUxZWYzYjI0ZTAxNGJjOTQuLjgxZmE4MGNkZjBjNjM2ZWViODE4YmVjZGNjODM3NTZk
ZDk3NDhkYTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzkgQEAKKzIwMjEtMDEtMjIgIFdlbnNvbiBI
c2llaCAgPHdlbnNvbl9oc2llaEBhcHBsZS5jb20+CisKKyAgICAgICAgVGhlIHdlYiBwcm9jZXNz
IHNob3VsZCBiZSBraWxsZWQgYWZ0ZXIgZmFpbGluZyB0byBkZWNvZGUgZGlzcGxheSBsaXN0IGl0
ZW1zIGluIHRoZSBHUFUgcHJvY2VzcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MjE5MDk3CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS83MTU0NjUyNj4K
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBIYW5kbGUg
YFN0b3BSZXBsYXlSZWFzb246OkludmFsaWRJdGVtYCBieSB0ZXJtaW5hdGluZyB0aGUgd2ViIHBy
b2Nlc3MgdmlhIE1FU1NBR0VfQ0hFQ0suIFNlZSBiZWxvdyBmb3IgbW9yZQorICAgICAgICBkZXRh
aWxzLgorCisgICAgICAgICogR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmg6
CisgICAgICAgICogR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kLmNw
cDoKKworICAgICAgICBBZGQgbWFjcm8gZGVmaW5pdGlvbnMgZm9yIGBNRVNTQUdFX0NIRUNLYCBh
bmQgYE1FU1NBR0VfQ0hFQ0tfV0lUSF9SRVRVUk5fVkFMVUVgLiBTaW5jZSB0aGUgbWV0aG9kcyBv
bgorICAgICAgICBgUmVtb3RlUmVuZGVyaW5nQmFja2VuZGAgdGhhdCB0cmlnZ2VyIG1lc3NhZ2Ug
Y2hlY2tzIGFsbCBydW4gb24gYSBiYWNrZ3JvdW5kIHF1ZXVlLCB0aGUgbm9ybWFsIChtYWluLXRo
cmVhZCkgd2F5CisgICAgICAgIG9mIGRlZmluaW5nIHRoZXNlIG1hY3JvcyAoYE1FU1NBR0VfQ0hF
Q0tfV0lUSF9SRVRVUk5fVkFMVUVfQkFTRWAgYW5kIGBNRVNTQUdFX0NIRUNLX0JBU0VgKSBkb24n
dCB3b3JrLiBXZQorICAgICAgICBpbnN0ZWFkIGNhbGwgaW50byB0aGUgR1BVIHRvIHdlYiBwcm9j
ZXNzIGNvbm5lY3Rpb24gb2JqZWN0IGRpcmVjdGx5IHRvIHNlbmQgYSBgVGVybWluYXRlV2ViUHJv
Y2Vzc2AgbWVzc2FnZSB0bworICAgICAgICB0aGUgcGFyZW50IChVSSkgcHJvY2VzcywgYW5kIGFk
ZGl0aW9uYWxseSBsb2cgYSBnaXZlbiBmYWlsdXJlIG1lc3NhZ2UuCisKKyAgICAgICAgKFdlYktp
dDo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6bmV4dERlc3RpbmF0aW9uSW1hZ2VCdWZmZXJBZnRl
ckFwcGx5aW5nRGlzcGxheUxpc3RzKToKKworICAgICAgICBSZXBsYWNlIGEgbnVtYmVyIEZJWE1F
cyB0aHJvdWdob3V0IHRoZXNlIElQQyBtZXNzYWdlIGhhbmRsZXJzIHdpdGggYE1FU1NBR0VfQ0hF
Q0tgcy4gQWRkaXRpb25hbGx5LCBhZGQgYSBuZXcKKyAgICAgICAgYE1FU1NBR0VfQ0hFQ0tgIGZv
ciB0aGUgY2FzZSB3aGVyZSB3ZSBzdG9wcGVkIHJlcGxheSBlYXJseSBkdWUgdG8gYSBjb3JydXB0
ZWQgb3IgaW52YWxpZCBkaXNwbGF5IGxpc3QgaXRlbS4KKworICAgICAgICAoV2ViS2l0OjpSZW1v
dGVSZW5kZXJpbmdCYWNrZW5kOjp3YWtlVXBBbmRBcHBseURpc3BsYXlMaXN0KToKKyAgICAgICAg
KFdlYktpdDo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6c2V0TmV4dEl0ZW1CdWZmZXJUb1JlYWQp
OgorCisgICAgICAgIFNpbXBseSByZW1vdmUgdGhlIEZJWE1FIGFuZCBlYXJseSByZXR1cm4gaGVy
ZTsgdGhpcyBjYW4gb25seSBoYXBwZW4gaW4gdGhlIGNhc2Ugd2hlcmUgYSBjb21wcm9taXNlZCB3
ZWIgY29udGVudAorICAgICAgICBwcm9jZXNzIGF0dGVtcHRzIHRvIGFwcGVuZCByZWR1bmRhbnQg
aXRlbSBidWZmZXIgY2hhbmdlIGl0ZW1zLiBIb3dldmVyLCBkb2luZyBzbyB3aWxsIGVpdGhlciBi
ZSAoMSkgaGFybWxlc3MsCisgICAgICAgIHNpbmNlIHRoZSBwZW5kaW5nIGl0ZW0gYnVmZmVyIGlu
Zm9ybWF0aW9uIHdpbGwganVzdCBiZSBvdmVyd3JpdHRlbiwgb3IgKDIpIHJlc3VsdCBpbiBoaXR0
aW5nIGEgTUVTU0FHRV9DSEVDSworICAgICAgICB3aGVuIGRlY29kaW5nIGl0ZW1zIGlmIHdlIHRy
eSB0byBleGVjdXRlIHRoZSBjb250ZW50cyBvZiBhbm90aGVyIGl0ZW0gYnVmZmVyIHRoYXQgaGFz
IG5vdCBiZWVuIHdyaXR0ZW4gdG8uCisKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlUmVuZGVyaW5n
QmFja2VuZDo6ZGlkQ3JlYXRlU2hhcmVkRGlzcGxheUxpc3RIYW5kbGUpOgorICAgICAgICAqIEdQ
VVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5oOgorCiAyMDIxLTAxLTIy
ICBKaWV3ZW4gVGFuICA8amlld2VuX3RhbkBhcHBsZS5jb20+CiAKICAgICAgICAgW1dlYkF1dGhu
XSBObyBlcnJvciBpcyB2aXNpYmxlIGFmdGVyIHVzZXIgZW50ZXJzIHRoZSBpbmNvcnJlY3QgUElO
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVu
ZGVyaW5nQmFja2VuZC5jcHAgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVt
b3RlUmVuZGVyaW5nQmFja2VuZC5jcHAKaW5kZXggMWNiNTBlMzdiNjBhZjA0MDQ2ZjA3NmUzOTZj
ODI4MTMwNTY1OTU2ZC4uZjIzNDlmODUyYjRmZjcyOWY2YTczZGZmNGZkYThkZjUxNjI5NDA3MyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRl
cmluZ0JhY2tlbmQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9S
ZW1vdGVSZW5kZXJpbmdCYWNrZW5kLmNwcApAQCAtNDQsNiArNDQsMjQgQEAKICNpbmNsdWRlIDx3
dGYvY29jb2EvTWFjaFNlbWFwaG9yZS5oPgogI2VuZGlmCiAKKyNkZWZpbmUgVEVSTUlOQVRFX1dF
Ql9QUk9DRVNTX1dJVEhfTUVTU0FHRShtZXNzYWdlKSBcCisgICAgUkVMRUFTRV9MT0dfRkFVTFQo
SVBDLCAiUmVxdWVzdGluZyB0ZXJtaW5hdGlvbiBvZiB3ZWIgcHJvY2VzcyAlIiBQUkl1NjQgIiBm
b3IgcmVhc29uOiAlIiBQVUJMSUNfTE9HX1NUUklORywgbV9ncHVDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzLT53ZWJQcm9jZXNzSWRlbnRpZmllcigpLnRvVUludDY0KCksICNtZXNzYWdlKTsgXAorICAg
IG1fZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2Vzcy0+Z3B1UHJvY2VzcygpLnBhcmVudFByb2Nlc3ND
b25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OkdQVVByb2Nlc3NQcm94eTo6VGVybWluYXRlV2Vi
UHJvY2VzcyhtX2dwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MtPndlYlByb2Nlc3NJZGVudGlmaWVy
KCkpLCAwKTsKKworI2RlZmluZSBNRVNTQUdFX0NIRUNLKGFzc2VydGlvbiwgbWVzc2FnZSkgZG8g
eyBcCisgICAgaWYgKFVOTElLRUxZKCEoYXNzZXJ0aW9uKSkpIHsgXAorICAgICAgICBURVJNSU5B
VEVfV0VCX1BST0NFU1NfV0lUSF9NRVNTQUdFKG1lc3NhZ2UpOyBcCisgICAgICAgIHJldHVybjsg
XAorICAgIH0gXAorfSB3aGlsZSAoMCkKKworI2RlZmluZSBNRVNTQUdFX0NIRUNLX1dJVEhfUkVU
VVJOX1ZBTFVFKGFzc2VydGlvbiwgcmV0dXJuVmFsdWUsIG1lc3NhZ2UpIGRvIHsgXAorICAgIGlm
IChVTkxJS0VMWSghKGFzc2VydGlvbikpKSB7IFwKKyAgICAgICAgVEVSTUlOQVRFX1dFQl9QUk9D
RVNTX1dJVEhfTUVTU0FHRShtZXNzYWdlKTsgXAorICAgICAgICByZXR1cm4gKHJldHVyblZhbHVl
KTsgXAorICAgIH0gXAorfSB3aGlsZSAoMCkKKwogbmFtZXNwYWNlIFdlYktpdCB7CiB1c2luZyBu
YW1lc3BhY2UgV2ViQ29yZTsKIApAQCAtMTczLDMwICsxOTEsMTggQEAgUmVmUHRyPEltYWdlQnVm
ZmVyPiBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpuZXh0RGVzdGluYXRpb25JbWFnZUJ1ZmZlckFm
dGVyQXBwbHkKIAogICAgIHdoaWxlIChkZXN0aW5hdGlvbikgewogICAgICAgICBhdXRvIGRpc3Bs
YXlMaXN0ID0gaGFuZGxlLmRpc3BsYXlMaXN0Rm9yUmVhZGluZyhvZmZzZXQsIHNpemVUb1JlYWQs
ICp0aGlzKTsKLSAgICAgICAgaWYgKFVOTElLRUxZKCFkaXNwbGF5TGlzdCkpIHsKLSAgICAgICAg
ICAgIC8vIEZJWE1FOiBBZGQgYSBtZXNzYWdlIGNoZWNrIHRvIHRlcm1pbmF0ZSB0aGUgd2ViIHBy
b2Nlc3MuCi0gICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgICAgIGJy
ZWFrOwotICAgICAgICB9CisgICAgICAgIE1FU1NBR0VfQ0hFQ0tfV0lUSF9SRVRVUk5fVkFMVUUo
ZGlzcGxheUxpc3QsIG51bGxwdHIsICJGYWlsZWQgdG8gbWFwIGRpc3BsYXkgbGlzdCBmcm9tIHNo
YXJlZCBtZW1vcnkiKTsKIAogICAgICAgICBhdXRvIHJlc3VsdCA9IHN1Ym1pdCgqZGlzcGxheUxp
c3QsICpkZXN0aW5hdGlvbik7CiAgICAgICAgIHNpemVUb1JlYWQgPSBoYW5kbGUuYWR2YW5jZShy
ZXN1bHQubnVtYmVyT2ZCeXRlc1JlYWQpOworICAgICAgICBNRVNTQUdFX0NIRUNLX1dJVEhfUkVU
VVJOX1ZBTFVFKHJlc3VsdC5yZWFzb25Gb3JTdG9wcGluZyAhPSBEaXNwbGF5TGlzdDo6U3RvcFJl
cGxheVJlYXNvbjo6SW52YWxpZEl0ZW0sIG51bGxwdHIsICJEZXRlY3RlZCBpbnZhbGlkIGRpc3Bs
YXkgbGlzdCBpdGVtIik7CiAKICAgICAgICAgQ2hlY2tlZFNpemUgY2hlY2tlZE9mZnNldCA9IG9m
ZnNldDsKICAgICAgICAgY2hlY2tlZE9mZnNldCArPSByZXN1bHQubnVtYmVyT2ZCeXRlc1JlYWQ7
Ci0gICAgICAgIGlmIChVTkxJS0VMWShjaGVja2VkT2Zmc2V0Lmhhc092ZXJmbG93ZWQoKSkpIHsK
LSAgICAgICAgICAgIC8vIEZJWE1FOiBBZGQgYSBtZXNzYWdlIGNoZWNrIHRvIHRlcm1pbmF0ZSB0
aGUgd2ViIHByb2Nlc3MuCi0gICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAg
ICAgICAgIGJyZWFrOwotICAgICAgICB9CisgICAgICAgIE1FU1NBR0VfQ0hFQ0tfV0lUSF9SRVRV
Uk5fVkFMVUUoIWNoZWNrZWRPZmZzZXQuaGFzT3ZlcmZsb3dlZCgpLCBudWxscHRyLCAiT3ZlcmZs
b3dlZCB3aGVuIGFkdmFuY2luZyBzaGFyZWQgZGlzcGxheSBsaXN0IGhhbmRsZSBvZmZzZXQiKTsK
IAogICAgICAgICBvZmZzZXQgPSBjaGVja2VkT2Zmc2V0LnVuc2FmZUdldCgpOwotCi0gICAgICAg
IGlmIChVTkxJS0VMWShvZmZzZXQgPiBoYW5kbGUuc2hhcmVkTWVtb3J5KCkuc2l6ZSgpKSkgewot
ICAgICAgICAgICAgLy8gRklYTUU6IEFkZCBhIG1lc3NhZ2UgY2hlY2sgdG8gdGVybWluYXRlIHRo
ZSB3ZWIgcHJvY2Vzcy4KLSAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAg
ICAgICAgYnJlYWs7Ci0gICAgICAgIH0KKyAgICAgICAgTUVTU0FHRV9DSEVDS19XSVRIX1JFVFVS
Tl9WQUxVRShvZmZzZXQgPD0gaGFuZGxlLnNoYXJlZE1lbW9yeSgpLnNpemUoKSwgbnVsbHB0ciwg
Ik91dC1vZi1ib3VuZHMgb2Zmc2V0IGludG8gc2hhcmVkIGRpc3BsYXkgbGlzdCBoYW5kbGUiKTsK
IAogICAgICAgICBpZiAocmVzdWx0LnJlYXNvbkZvclN0b3BwaW5nID09IERpc3BsYXlMaXN0OjpT
dG9wUmVwbGF5UmVhc29uOjpDaGFuZ2VEZXN0aW5hdGlvbkltYWdlQnVmZmVyKSB7CiAgICAgICAg
ICAgICBkZXN0aW5hdGlvbiA9IG1ha2VSZWZQdHIobV9yZW1vdGVSZXNvdXJjZUNhY2hlLmNhY2hl
ZEltYWdlQnVmZmVyKCpyZXN1bHQubmV4dERlc3RpbmF0aW9uSW1hZ2VCdWZmZXIpKTsKQEAgLTIz
MiwyNiArMjM4LDEzIEBAIFJlZlB0cjxJbWFnZUJ1ZmZlcj4gUmVtb3RlUmVuZGVyaW5nQmFja2Vu
ZDo6bmV4dERlc3RpbmF0aW9uSW1hZ2VCdWZmZXJBZnRlckFwcGx5CiAgICAgICAgICAgICAgICAg
YnJlYWs7CiAKICAgICAgICAgICAgIHNpemVUb1JlYWQgPSBoYW5kbGUudW5yZWFkQnl0ZXMoKTsK
LSAgICAgICAgICAgIGlmIChVTkxJS0VMWSghc2l6ZVRvUmVhZCkpIHsKLSAgICAgICAgICAgICAg
ICAvLyBGSVhNRTogQWRkIGEgbWVzc2FnZSBjaGVjayB0byB0ZXJtaW5hdGUgdGhlIHdlYiBwcm9j
ZXNzLgotICAgICAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICAgICAg
ICAgIGJyZWFrOwotICAgICAgICAgICAgfQorICAgICAgICAgICAgTUVTU0FHRV9DSEVDS19XSVRI
X1JFVFVSTl9WQUxVRShzaXplVG9SZWFkLCBudWxscHRyLCAiTm8gdW5yZWFkIGJ5dGVzIHdoZW4g
cmVzdW1pbmcgZGlzcGxheSBsaXN0IHByb2Nlc3NpbmciKTsKIAogICAgICAgICAgICAgYXV0byBu
ZXdEZXN0aW5hdGlvbklkZW50aWZpZXIgPSBtYWtlT2JqZWN0SWRlbnRpZmllcjxSZW5kZXJpbmdS
ZXNvdXJjZUlkZW50aWZpZXJUeXBlPihyZXN1bWVSZWFkaW5nSW5mby0+ZGVzdGluYXRpb24pOwot
ICAgICAgICAgICAgaWYgKFVOTElLRUxZKCFuZXdEZXN0aW5hdGlvbklkZW50aWZpZXIpKSB7Ci0g
ICAgICAgICAgICAgICAgLy8gRklYTUU6IEFkZCBhIG1lc3NhZ2UgY2hlY2sgdG8gdGVybWluYXRl
IHRoZSB3ZWIgcHJvY2Vzcy4KLSAgICAgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsK
LSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIH0KKyAgICAgICAgICAgIE1FU1NB
R0VfQ0hFQ0tfV0lUSF9SRVRVUk5fVkFMVUUobmV3RGVzdGluYXRpb25JZGVudGlmaWVyLCBudWxs
cHRyLCAiSW52YWxpZCBpbWFnZSBidWZmZXIgZGVzdGluYXRpb24gd2hlbiByZXN1bWluZyBkaXNw
bGF5IGxpc3QgcHJvY2Vzc2luZyIpOwogCiAgICAgICAgICAgICBkZXN0aW5hdGlvbiA9IG1ha2VS
ZWZQdHIobV9yZW1vdGVSZXNvdXJjZUNhY2hlLmNhY2hlZEltYWdlQnVmZmVyKG5ld0Rlc3RpbmF0
aW9uSWRlbnRpZmllcikpOwotCi0gICAgICAgICAgICBpZiAoVU5MSUtFTFkoIWRlc3RpbmF0aW9u
KSkgewotICAgICAgICAgICAgICAgIC8vIEZJWE1FOiBBZGQgYSBtZXNzYWdlIGNoZWNrIHRvIHRl
cm1pbmF0ZSB0aGUgd2ViIHByb2Nlc3MuCi0gICAgICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFD
SEVEKCk7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICB9CisgICAgICAgICAg
ICBNRVNTQUdFX0NIRUNLX1dJVEhfUkVUVVJOX1ZBTFVFKGRlc3RpbmF0aW9uLCBudWxscHRyLCAi
TWlzc2luZyBpbWFnZSBidWZmZXIgZGVzdGluYXRpb24gd2hlbiByZXN1bWluZyBkaXNwbGF5IGxp
c3QgcHJvY2Vzc2luZyIpOwogCiAgICAgICAgICAgICBvZmZzZXQgPSByZXN1bWVSZWFkaW5nSW5m
by0+b2Zmc2V0OwogCkBAIC0yNzIsMjQgKzI2NSwxNCBAQCB2b2lkIFJlbW90ZVJlbmRlcmluZ0Jh
Y2tlbmQ6Ondha2VVcEFuZEFwcGx5RGlzcGxheUxpc3QoY29uc3QgR1BVUHJvY2Vzc1dha2V1cE1l
cwogCiAgICAgVHJhY2VTY29wZSB0cmFjaW5nU2NvcGUoV2FrZVVwQW5kQXBwbHlEaXNwbGF5TGlz
dFN0YXJ0LCBXYWtlVXBBbmRBcHBseURpc3BsYXlMaXN0RW5kKTsKICAgICBhdXRvIGRlc3RpbmF0
aW9uSW1hZ2VCdWZmZXIgPSBtYWtlUmVmUHRyKG1fcmVtb3RlUmVzb3VyY2VDYWNoZS5jYWNoZWRJ
bWFnZUJ1ZmZlcihhcmd1bWVudHMuZGVzdGluYXRpb25JbWFnZUJ1ZmZlcklkZW50aWZpZXIpKTsK
LSAgICBpZiAoVU5MSUtFTFkoIWRlc3RpbmF0aW9uSW1hZ2VCdWZmZXIpKSB7Ci0gICAgICAgIC8v
IEZJWE1FOiBBZGQgYSBtZXNzYWdlIGNoZWNrIHRvIHRlcm1pbmF0ZSB0aGUgd2ViIHByb2Nlc3Mu
Ci0gICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICByZXR1cm47Ci0gICAgfQor
ICAgIE1FU1NBR0VfQ0hFQ0soZGVzdGluYXRpb25JbWFnZUJ1ZmZlciwgIk1pc3NpbmcgZGVzdGlu
YXRpb24gaW1hZ2UgYnVmZmVyIik7CiAKICAgICBhdXRvIGluaXRpYWxIYW5kbGUgPSBtX3NoYXJl
ZERpc3BsYXlMaXN0SGFuZGxlcy5nZXQoYXJndW1lbnRzLml0ZW1CdWZmZXJJZGVudGlmaWVyKTsK
LSAgICBpZiAoVU5MSUtFTFkoIWluaXRpYWxIYW5kbGUpKSB7Ci0gICAgICAgIC8vIEZJWE1FOiBB
ZGQgYSBtZXNzYWdlIGNoZWNrIHRvIHRlcm1pbmF0ZSB0aGUgd2ViIHByb2Nlc3MuCi0gICAgICAg
IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICByZXR1cm47Ci0gICAgfQorICAgIE1FU1NB
R0VfQ0hFQ0soaW5pdGlhbEhhbmRsZSwgIk1pc3NpbmcgaW5pdGlhbCBzaGFyZWQgZGlzcGxheSBs
aXN0IGhhbmRsZSIpOwogCiAgICAgZGVzdGluYXRpb25JbWFnZUJ1ZmZlciA9IG5leHREZXN0aW5h
dGlvbkltYWdlQnVmZmVyQWZ0ZXJBcHBseWluZ0Rpc3BsYXlMaXN0cygqZGVzdGluYXRpb25JbWFn
ZUJ1ZmZlciwgYXJndW1lbnRzLm9mZnNldCwgKmluaXRpYWxIYW5kbGUsIGFyZ3VtZW50cy5yZWFz
b24pOwotICAgIGlmICghZGVzdGluYXRpb25JbWFnZUJ1ZmZlcikgewotICAgICAgICBSRUxFQVNF
X0FTU0VSVChtX3BlbmRpbmdXYWtldXBJbmZvKTsKKyAgICBpZiAoIWRlc3RpbmF0aW9uSW1hZ2VC
dWZmZXIpCiAgICAgICAgIHJldHVybjsKLSAgICB9CiAKICAgICB3aGlsZSAobV9wZW5kaW5nV2Fr
ZXVwSW5mbykgewogICAgICAgICBpZiAobV9wZW5kaW5nV2FrZXVwSW5mby0+bWlzc2luZ0NhY2hl
ZFJlc291cmNlSWRlbnRpZmllcikKQEAgLTMwNSwyMCArMjg4LDEzIEBAIHZvaWQgUmVtb3RlUmVu
ZGVyaW5nQmFja2VuZDo6d2FrZVVwQW5kQXBwbHlEaXNwbGF5TGlzdChjb25zdCBHUFVQcm9jZXNz
V2FrZXVwTWVzCiAgICAgICAgIC8vIE90aGVyd2lzZSwgY29udGludWUgcmVhZGluZyB0aGUgbmV4
dCBkaXNwbGF5IGxpc3QgaXRlbSBidWZmZXIgZnJvbSB0aGUgc3RhcnQuCiAgICAgICAgIGF1dG8g
YXJndW1lbnRzID0gc3RkOjpleGNoYW5nZShtX3BlbmRpbmdXYWtldXBJbmZvLCBXVEY6Om51bGxv
cHQpLT5hcmd1bWVudHM7CiAgICAgICAgIGRlc3RpbmF0aW9uSW1hZ2VCdWZmZXIgPSBuZXh0RGVz
dGluYXRpb25JbWFnZUJ1ZmZlckFmdGVyQXBwbHlpbmdEaXNwbGF5TGlzdHMoKmRlc3RpbmF0aW9u
SW1hZ2VCdWZmZXIsIGFyZ3VtZW50cy5vZmZzZXQsICpuZXh0SGFuZGxlLCBhcmd1bWVudHMucmVh
c29uKTsKLSAgICAgICAgaWYgKCFkZXN0aW5hdGlvbkltYWdlQnVmZmVyKSB7Ci0gICAgICAgICAg
ICBSRUxFQVNFX0FTU0VSVChtX3BlbmRpbmdXYWtldXBJbmZvKTsKKyAgICAgICAgaWYgKCFkZXN0
aW5hdGlvbkltYWdlQnVmZmVyKQogICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KICAgICB9
CiB9CiAKIHZvaWQgUmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6c2V0TmV4dEl0ZW1CdWZmZXJUb1Jl
YWQoRGlzcGxheUxpc3Q6Okl0ZW1CdWZmZXJJZGVudGlmaWVyIGlkZW50aWZpZXIsIFdlYkNvcmU6
OlJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciBkZXN0aW5hdGlvbklkZW50aWZpZXIpCiB7Ci0g
ICAgaWYgKFVOTElLRUxZKG1fcGVuZGluZ1dha2V1cEluZm8pKSB7Ci0gICAgICAgIC8vIEZJWE1F
OiBBZGQgYSBtZXNzYWdlIGNoZWNrIHRvIHRlcm1pbmF0ZSB0aGUgd2ViIHByb2Nlc3MuCi0gICAg
ICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICByZXR1cm47Ci0gICAgfQogICAgIG1f
cGVuZGluZ1dha2V1cEluZm8gPSB7e3sgaWRlbnRpZmllciwgU2hhcmVkRGlzcGxheUxpc3RIYW5k
bGU6OmhlYWRlclNpemUoKSwgZGVzdGluYXRpb25JZGVudGlmaWVyLCBHUFVQcm9jZXNzV2FrZXVw
UmVhc29uOjpVbnNwZWNpZmllZCB9LCBXVEY6Om51bGxvcHQgfX07CiB9CiAKQEAgLTQwNSwxMiAr
MzgxLDcgQEAgdm9pZCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpyZWxlYXNlUmVtb3RlUmVzb3Vy
Y2UoUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyIHIKIHZvaWQgUmVtb3RlUmVuZGVyaW5nQmFj
a2VuZDo6ZGlkQ3JlYXRlU2hhcmVkRGlzcGxheUxpc3RIYW5kbGUoRGlzcGxheUxpc3Q6Okl0ZW1C
dWZmZXJJZGVudGlmaWVyIGlkZW50aWZpZXIsIGNvbnN0IFNoYXJlZE1lbW9yeTo6SVBDSGFuZGxl
JiBoYW5kbGUsIFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciBkZXN0aW5hdGlvbkJ1ZmZlcklk
ZW50aWZpZXIpCiB7CiAgICAgQVNTRVJUKCFSdW5Mb29wOjppc01haW4oKSk7Ci0KLSAgICBpZiAo
VU5MSUtFTFkobV9zaGFyZWREaXNwbGF5TGlzdEhhbmRsZXMuY29udGFpbnMoaWRlbnRpZmllcikp
KSB7Ci0gICAgICAgIC8vIEZJWE1FOiBBZGQgYSBtZXNzYWdlIGNoZWNrIHRvIHRlcm1pbmF0ZSB0
aGUgd2ViIHByb2Nlc3MuCi0gICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICBy
ZXR1cm47Ci0gICAgfQorICAgIE1FU1NBR0VfQ0hFQ0soIW1fc2hhcmVkRGlzcGxheUxpc3RIYW5k
bGVzLmNvbnRhaW5zKGlkZW50aWZpZXIpLCAiRHVwbGljYXRlIHNoYXJlZCBkaXNwbGF5IGxpc3Qg
aGFuZGxlIik7CiAKICAgICBpZiAoYXV0byBzaGFyZWRNZW1vcnkgPSBTaGFyZWRNZW1vcnk6Om1h
cChoYW5kbGUuaGFuZGxlLCBTaGFyZWRNZW1vcnk6OlByb3RlY3Rpb246OlJlYWRXcml0ZSkpCiAg
ICAgICAgIG1fc2hhcmVkRGlzcGxheUxpc3RIYW5kbGVzLnNldChpZGVudGlmaWVyLCBEaXNwbGF5
TGlzdFJlYWRlckhhbmRsZTo6Y3JlYXRlKGlkZW50aWZpZXIsIHNoYXJlZE1lbW9yeS5yZWxlYXNl
Tm9uTnVsbCgpKSk7Cg==
</data>
<flag name="review"
          id="436100"
          type_id="1"
          status="+"
          setter="cdumez"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>418200</attachid>
            <date>2021-01-22 16:53:57 -0800</date>
            <delta_ts>2021-01-22 18:13:26 -0800</delta_ts>
            <desc>For landing</desc>
            <filename>bug-219097-20210122165357.patch</filename>
            <type>text/plain</type>
            <size>12451</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcxNzU3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGM2MDllOTc5OThjMTdhZmE2
MzdiNWMxMzUxZWYzYjI0ZTAxNGJjOTQuLmQ2ZmVjYzJlYTBiNWJmYWRhYjFlZDVhMWE3ZTFkY2Nl
ODdiZmY5ZTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDcgQEAKKzIwMjEtMDEtMjIgIFdlbnNvbiBI
c2llaCAgPHdlbnNvbl9oc2llaEBhcHBsZS5jb20+CisKKyAgICAgICAgVGhlIHdlYiBwcm9jZXNz
IHNob3VsZCBiZSBraWxsZWQgYWZ0ZXIgZmFpbGluZyB0byBkZWNvZGUgZGlzcGxheSBsaXN0IGl0
ZW1zIGluIHRoZSBHUFUgcHJvY2VzcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MjE5MDk3CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS83MTU0NjUyNj4K
KworICAgICAgICBSZXZpZXdlZCBieSBDaHJpcyBEdW1lei4KKworICAgICAgICBIYW5kbGUgYFN0
b3BSZXBsYXlSZWFzb246OkludmFsaWRJdGVtYCBieSB0ZXJtaW5hdGluZyB0aGUgd2ViIHByb2Nl
c3MgdmlhIE1FU1NBR0VfQ0hFQ0suIFNlZSBiZWxvdyBmb3IgbW9yZQorICAgICAgICBkZXRhaWxz
LgorCisgICAgICAgICogR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcDoK
KyAgICAgICAgKFdlYktpdDo6R1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6ZGlkUmVjZWl2ZUlu
dmFsaWRNZXNzYWdlKToKKyAgICAgICAgKFdlYktpdDo6R1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vz
czo6dGVybWluYXRlV2ViUHJvY2Vzcyk6CisgICAgICAgICogR1BVUHJvY2Vzcy9HUFVDb25uZWN0
aW9uVG9XZWJQcm9jZXNzLmg6CisKKyAgICAgICAgUHVsbCBsb2dpYyBmb3IgdGVybWluYXRpbmcg
dGhlIHdlYiBwcm9jZXNzIG91dCBpbnRvIGEgc2VwYXJhdGUgaGVscGVyIG1ldGhvZCBvbiBgR1BV
Q29ubmVjdGlvblRvV2ViUHJvY2Vzc2AsIGFuZAorICAgICAgICB1c2UgdGhpcyBoZWxwZXIgaW4g
YEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmRpZFJlY2VpdmVJbnZhbGlkTWVzc2FnZWAsIGFz
IHdlbGwgYXMgaW4gYFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRgCisgICAgICAgIGJlbG93LgorCisg
ICAgICAgICogR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kLmNwcDoK
KworICAgICAgICBBZGQgbWFjcm8gZGVmaW5pdGlvbnMgZm9yIGBNRVNTQUdFX0NIRUNLYCBhbmQg
YE1FU1NBR0VfQ0hFQ0tfV0lUSF9SRVRVUk5fVkFMVUVgLiBTaW5jZSB0aGUgbWV0aG9kcyBvbgor
ICAgICAgICBgUmVtb3RlUmVuZGVyaW5nQmFja2VuZGAgdGhhdCB0cmlnZ2VyIG1lc3NhZ2UgY2hl
Y2tzIGFsbCBydW4gb24gYSBiYWNrZ3JvdW5kIHF1ZXVlLCB0aGUgbm9ybWFsIChtYWluLXRocmVh
ZCkgd2F5CisgICAgICAgIG9mIGRlZmluaW5nIHRoZXNlIG1hY3JvcyAoYE1FU1NBR0VfQ0hFQ0tf
V0lUSF9SRVRVUk5fVkFMVUVfQkFTRWAgYW5kIGBNRVNTQUdFX0NIRUNLX0JBU0VgKSBkb24ndCB3
b3JrLiBXZQorICAgICAgICBpbnN0ZWFkIGNhbGwgaW50byB0aGUgR1BVIHRvIHdlYiBwcm9jZXNz
IGNvbm5lY3Rpb24gb2JqZWN0IGRpcmVjdGx5IHRvIHNlbmQgYSBgVGVybWluYXRlV2ViUHJvY2Vz
c2AgbWVzc2FnZSB0bworICAgICAgICB0aGUgcGFyZW50IChVSSkgcHJvY2VzcywgYW5kIGFkZGl0
aW9uYWxseSBsb2cgYSBnaXZlbiBmYWlsdXJlIG1lc3NhZ2UuCisKKyAgICAgICAgKFdlYktpdDo6
UmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6bmV4dERlc3RpbmF0aW9uSW1hZ2VCdWZmZXJBZnRlckFw
cGx5aW5nRGlzcGxheUxpc3RzKToKKworICAgICAgICBSZXBsYWNlIGEgbnVtYmVyIEZJWE1FcyB0
aHJvdWdob3V0IHRoZXNlIElQQyBtZXNzYWdlIGhhbmRsZXJzIHdpdGggYE1FU1NBR0VfQ0hFQ0tg
cy4gQWRkaXRpb25hbGx5LCBhZGQgYSBuZXcKKyAgICAgICAgYE1FU1NBR0VfQ0hFQ0tgIGZvciB0
aGUgY2FzZSB3aGVyZSB3ZSBzdG9wcGVkIHJlcGxheSBlYXJseSBkdWUgdG8gYSBjb3JydXB0ZWQg
b3IgaW52YWxpZCBkaXNwbGF5IGxpc3QgaXRlbS4KKworICAgICAgICAoV2ViS2l0OjpSZW1vdGVS
ZW5kZXJpbmdCYWNrZW5kOjp3YWtlVXBBbmRBcHBseURpc3BsYXlMaXN0KToKKyAgICAgICAgKFdl
YktpdDo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6c2V0TmV4dEl0ZW1CdWZmZXJUb1JlYWQpOgor
CisgICAgICAgIFNpbXBseSByZW1vdmUgdGhlIEZJWE1FIGFuZCBlYXJseSByZXR1cm4gaGVyZTsg
dGhpcyBjYW4gb25seSBoYXBwZW4gaW4gdGhlIGNhc2Ugd2hlcmUgYSBjb21wcm9taXNlZCB3ZWIg
Y29udGVudAorICAgICAgICBwcm9jZXNzIGF0dGVtcHRzIHRvIGFwcGVuZCByZWR1bmRhbnQgaXRl
bSBidWZmZXIgY2hhbmdlIGl0ZW1zLiBIb3dldmVyLCBkb2luZyBzbyB3aWxsIGVpdGhlciBiZSAo
MSkgaGFybWxlc3MsCisgICAgICAgIHNpbmNlIHRoZSBwZW5kaW5nIGl0ZW0gYnVmZmVyIGluZm9y
bWF0aW9uIHdpbGwganVzdCBiZSBvdmVyd3JpdHRlbiwgb3IgKDIpIHJlc3VsdCBpbiBoaXR0aW5n
IGEgTUVTU0FHRV9DSEVDSworICAgICAgICB3aGVuIGRlY29kaW5nIGl0ZW1zIGlmIHdlIHRyeSB0
byBleGVjdXRlIHRoZSBjb250ZW50cyBvZiBhbm90aGVyIGl0ZW0gYnVmZmVyIHRoYXQgaGFzIG5v
dCBiZWVuIHdyaXR0ZW4gdG8uCisKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlUmVuZGVyaW5nQmFj
a2VuZDo6ZGlkQ3JlYXRlU2hhcmVkRGlzcGxheUxpc3RIYW5kbGUpOgorICAgICAgICAqIEdQVVBy
b2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5oOgorCiAyMDIxLTAxLTIyICBK
aWV3ZW4gVGFuICA8amlld2VuX3RhbkBhcHBsZS5jb20+CiAKICAgICAgICAgW1dlYkF1dGhuXSBO
byBlcnJvciBpcyB2aXNpYmxlIGFmdGVyIHVzZXIgZW50ZXJzIHRoZSBpbmNvcnJlY3QgUElOCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJv
Y2Vzcy5jcHAgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJv
Y2Vzcy5jcHAKaW5kZXggMDM1MjliNGI2OTg2MjcyNmUyYjZlZGE2MjI4YTU2YTUwY2QwMGE5NS4u
OTAwNTY2OTRhNTMwMGRjM2E4YmZkZDFlZTMwZWMxNmJkOGViZGVhOCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcApA
QCAtMjI0LDYgKzIyNCwxMSBAQCBMb2dnZXImIEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6Omxv
Z2dlcigpCiB2b2lkIEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmRpZFJlY2VpdmVJbnZhbGlk
TWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIElQQzo6TWVzc2FnZU5hbWUgbWVz
c2FnZU5hbWUpCiB7CiAgICAgUkVMRUFTRV9MT0dfRkFVTFQoSVBDLCAiUmVjZWl2ZWQgYW4gaW52
YWxpZCBtZXNzYWdlICclIiBQVUJMSUNfTE9HX1NUUklORyAiJyBmcm9tIFdlYkNvbnRlbnQgcHJv
Y2VzcyAlIiBQUkl1NjQgIiwgcmVxdWVzdGluZyBmb3IgaXQgdG8gYmUgdGVybWluYXRlZC4iLCBk
ZXNjcmlwdGlvbihtZXNzYWdlTmFtZSksIG1fd2ViUHJvY2Vzc0lkZW50aWZpZXIudG9VSW50NjQo
KSk7CisgICAgdGVybWluYXRlV2ViUHJvY2VzcygpOworfQorCit2b2lkIEdQVUNvbm5lY3Rpb25U
b1dlYlByb2Nlc3M6OnRlcm1pbmF0ZVdlYlByb2Nlc3MoKQorewogICAgIGdwdVByb2Nlc3MoKS5w
YXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpHUFVQcm9jZXNzUHJveHk6
OlRlcm1pbmF0ZVdlYlByb2Nlc3MobV93ZWJQcm9jZXNzSWRlbnRpZmllciksIDApOwogfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJv
Y2Vzcy5oIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nl
c3MuaAppbmRleCA1MWZjYzdmMDViOTk2YzIyNjAwMDFmMTE3ZjYyZjQ3YWY3ZDJiMzA3Li40NDE4
Y2E2YWVhMmE0MDhlMzc3NTM4OTBlMWQzMGRkZWM3NmVjN2NhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L0dQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgKQEAgLTExMiw2
ICsxMTIsOCBAQCBwdWJsaWM6CiAgICAgUmVtb3RlQXVkaW9TZXNzaW9uUHJveHlNYW5hZ2VyJiBh
dWRpb1Nlc3Npb25NYW5hZ2VyKCk7CiAjZW5kaWYKIAorICAgIHZvaWQgdGVybWluYXRlV2ViUHJv
Y2VzcygpOworCiBwcml2YXRlOgogICAgIEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MoR1BVUHJv
Y2VzcyYsIFdlYkNvcmU6OlByb2Nlc3NJZGVudGlmaWVyLCBJUEM6OkNvbm5lY3Rpb246OklkZW50
aWZpZXIsIFBBTDo6U2Vzc2lvbklEKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQ
cm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQuY3BwIGIvU291cmNlL1dlYktp
dC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQuY3BwCmluZGV4IDFj
YjUwZTM3YjYwYWYwNDA0NmYwNzZlMzk2YzgyODEzMDU2NTk1NmQuLjM3MjA3ZDdmYzc4MGJmYjNh
NGJkN2MxYjRkY2MwZTY0ODU1ZDU1ZTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJv
Y2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5jcHAKQEAgLTQ0
LDYgKzQ0LDI0IEBACiAjaW5jbHVkZSA8d3RmL2NvY29hL01hY2hTZW1hcGhvcmUuaD4KICNlbmRp
ZgogCisjZGVmaW5lIFRFUk1JTkFURV9XRUJfUFJPQ0VTU19XSVRIX01FU1NBR0UobWVzc2FnZSkg
XAorICAgIFJFTEVBU0VfTE9HX0ZBVUxUKElQQywgIlJlcXVlc3RpbmcgdGVybWluYXRpb24gb2Yg
d2ViIHByb2Nlc3MgJSIgUFJJdTY0ICIgZm9yIHJlYXNvbjogJSIgUFVCTElDX0xPR19TVFJJTkcs
IG1fZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2Vzcy0+d2ViUHJvY2Vzc0lkZW50aWZpZXIoKS50b1VJ
bnQ2NCgpLCAjbWVzc2FnZSk7IFwKKyAgICBtX2dwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MtPnRl
cm1pbmF0ZVdlYlByb2Nlc3MoKTsKKworI2RlZmluZSBNRVNTQUdFX0NIRUNLKGFzc2VydGlvbiwg
bWVzc2FnZSkgZG8geyBcCisgICAgaWYgKFVOTElLRUxZKCEoYXNzZXJ0aW9uKSkpIHsgXAorICAg
ICAgICBURVJNSU5BVEVfV0VCX1BST0NFU1NfV0lUSF9NRVNTQUdFKG1lc3NhZ2UpOyBcCisgICAg
ICAgIHJldHVybjsgXAorICAgIH0gXAorfSB3aGlsZSAoMCkKKworI2RlZmluZSBNRVNTQUdFX0NI
RUNLX1dJVEhfUkVUVVJOX1ZBTFVFKGFzc2VydGlvbiwgcmV0dXJuVmFsdWUsIG1lc3NhZ2UpIGRv
IHsgXAorICAgIGlmIChVTkxJS0VMWSghKGFzc2VydGlvbikpKSB7IFwKKyAgICAgICAgVEVSTUlO
QVRFX1dFQl9QUk9DRVNTX1dJVEhfTUVTU0FHRShtZXNzYWdlKTsgXAorICAgICAgICByZXR1cm4g
KHJldHVyblZhbHVlKTsgXAorICAgIH0gXAorfSB3aGlsZSAoMCkKKwogbmFtZXNwYWNlIFdlYktp
dCB7CiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIApAQCAtMTczLDMwICsxOTEsMTggQEAgUmVm
UHRyPEltYWdlQnVmZmVyPiBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpuZXh0RGVzdGluYXRpb25J
bWFnZUJ1ZmZlckFmdGVyQXBwbHkKIAogICAgIHdoaWxlIChkZXN0aW5hdGlvbikgewogICAgICAg
ICBhdXRvIGRpc3BsYXlMaXN0ID0gaGFuZGxlLmRpc3BsYXlMaXN0Rm9yUmVhZGluZyhvZmZzZXQs
IHNpemVUb1JlYWQsICp0aGlzKTsKLSAgICAgICAgaWYgKFVOTElLRUxZKCFkaXNwbGF5TGlzdCkp
IHsKLSAgICAgICAgICAgIC8vIEZJWE1FOiBBZGQgYSBtZXNzYWdlIGNoZWNrIHRvIHRlcm1pbmF0
ZSB0aGUgd2ViIHByb2Nlc3MuCi0gICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAg
ICAgICAgICAgIGJyZWFrOwotICAgICAgICB9CisgICAgICAgIE1FU1NBR0VfQ0hFQ0tfV0lUSF9S
RVRVUk5fVkFMVUUoZGlzcGxheUxpc3QsIG51bGxwdHIsICJGYWlsZWQgdG8gbWFwIGRpc3BsYXkg
bGlzdCBmcm9tIHNoYXJlZCBtZW1vcnkiKTsKIAogICAgICAgICBhdXRvIHJlc3VsdCA9IHN1Ym1p
dCgqZGlzcGxheUxpc3QsICpkZXN0aW5hdGlvbik7CiAgICAgICAgIHNpemVUb1JlYWQgPSBoYW5k
bGUuYWR2YW5jZShyZXN1bHQubnVtYmVyT2ZCeXRlc1JlYWQpOworICAgICAgICBNRVNTQUdFX0NI
RUNLX1dJVEhfUkVUVVJOX1ZBTFVFKHJlc3VsdC5yZWFzb25Gb3JTdG9wcGluZyAhPSBEaXNwbGF5
TGlzdDo6U3RvcFJlcGxheVJlYXNvbjo6SW52YWxpZEl0ZW0sIG51bGxwdHIsICJEZXRlY3RlZCBp
bnZhbGlkIGRpc3BsYXkgbGlzdCBpdGVtIik7CiAKICAgICAgICAgQ2hlY2tlZFNpemUgY2hlY2tl
ZE9mZnNldCA9IG9mZnNldDsKICAgICAgICAgY2hlY2tlZE9mZnNldCArPSByZXN1bHQubnVtYmVy
T2ZCeXRlc1JlYWQ7Ci0gICAgICAgIGlmIChVTkxJS0VMWShjaGVja2VkT2Zmc2V0Lmhhc092ZXJm
bG93ZWQoKSkpIHsKLSAgICAgICAgICAgIC8vIEZJWE1FOiBBZGQgYSBtZXNzYWdlIGNoZWNrIHRv
IHRlcm1pbmF0ZSB0aGUgd2ViIHByb2Nlc3MuCi0gICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNI
RUQoKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9CisgICAgICAgIE1FU1NBR0VfQ0hF
Q0tfV0lUSF9SRVRVUk5fVkFMVUUoIWNoZWNrZWRPZmZzZXQuaGFzT3ZlcmZsb3dlZCgpLCBudWxs
cHRyLCAiT3ZlcmZsb3dlZCB3aGVuIGFkdmFuY2luZyBzaGFyZWQgZGlzcGxheSBsaXN0IGhhbmRs
ZSBvZmZzZXQiKTsKIAogICAgICAgICBvZmZzZXQgPSBjaGVja2VkT2Zmc2V0LnVuc2FmZUdldCgp
OwotCi0gICAgICAgIGlmIChVTkxJS0VMWShvZmZzZXQgPiBoYW5kbGUuc2hhcmVkTWVtb3J5KCku
c2l6ZSgpKSkgewotICAgICAgICAgICAgLy8gRklYTUU6IEFkZCBhIG1lc3NhZ2UgY2hlY2sgdG8g
dGVybWluYXRlIHRoZSB3ZWIgcHJvY2Vzcy4KLSAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hF
RCgpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KKyAgICAgICAgTUVTU0FHRV9DSEVD
S19XSVRIX1JFVFVSTl9WQUxVRShvZmZzZXQgPD0gaGFuZGxlLnNoYXJlZE1lbW9yeSgpLnNpemUo
KSwgbnVsbHB0ciwgIk91dC1vZi1ib3VuZHMgb2Zmc2V0IGludG8gc2hhcmVkIGRpc3BsYXkgbGlz
dCBoYW5kbGUiKTsKIAogICAgICAgICBpZiAocmVzdWx0LnJlYXNvbkZvclN0b3BwaW5nID09IERp
c3BsYXlMaXN0OjpTdG9wUmVwbGF5UmVhc29uOjpDaGFuZ2VEZXN0aW5hdGlvbkltYWdlQnVmZmVy
KSB7CiAgICAgICAgICAgICBkZXN0aW5hdGlvbiA9IG1ha2VSZWZQdHIobV9yZW1vdGVSZXNvdXJj
ZUNhY2hlLmNhY2hlZEltYWdlQnVmZmVyKCpyZXN1bHQubmV4dERlc3RpbmF0aW9uSW1hZ2VCdWZm
ZXIpKTsKQEAgLTIzMiwyNiArMjM4LDEzIEBAIFJlZlB0cjxJbWFnZUJ1ZmZlcj4gUmVtb3RlUmVu
ZGVyaW5nQmFja2VuZDo6bmV4dERlc3RpbmF0aW9uSW1hZ2VCdWZmZXJBZnRlckFwcGx5CiAgICAg
ICAgICAgICAgICAgYnJlYWs7CiAKICAgICAgICAgICAgIHNpemVUb1JlYWQgPSBoYW5kbGUudW5y
ZWFkQnl0ZXMoKTsKLSAgICAgICAgICAgIGlmIChVTkxJS0VMWSghc2l6ZVRvUmVhZCkpIHsKLSAg
ICAgICAgICAgICAgICAvLyBGSVhNRTogQWRkIGEgbWVzc2FnZSBjaGVjayB0byB0ZXJtaW5hdGUg
dGhlIHdlYiBwcm9jZXNzLgotICAgICAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwot
ICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgfQorICAgICAgICAgICAgTUVTU0FH
RV9DSEVDS19XSVRIX1JFVFVSTl9WQUxVRShzaXplVG9SZWFkLCBudWxscHRyLCAiTm8gdW5yZWFk
IGJ5dGVzIHdoZW4gcmVzdW1pbmcgZGlzcGxheSBsaXN0IHByb2Nlc3NpbmciKTsKIAogICAgICAg
ICAgICAgYXV0byBuZXdEZXN0aW5hdGlvbklkZW50aWZpZXIgPSBtYWtlT2JqZWN0SWRlbnRpZmll
cjxSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXJUeXBlPihyZXN1bWVSZWFkaW5nSW5mby0+ZGVz
dGluYXRpb24pOwotICAgICAgICAgICAgaWYgKFVOTElLRUxZKCFuZXdEZXN0aW5hdGlvbklkZW50
aWZpZXIpKSB7Ci0gICAgICAgICAgICAgICAgLy8gRklYTUU6IEFkZCBhIG1lc3NhZ2UgY2hlY2sg
dG8gdGVybWluYXRlIHRoZSB3ZWIgcHJvY2Vzcy4KLSAgICAgICAgICAgICAgICBBU1NFUlRfTk9U
X1JFQUNIRUQoKTsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIH0KKyAgICAg
ICAgICAgIE1FU1NBR0VfQ0hFQ0tfV0lUSF9SRVRVUk5fVkFMVUUobmV3RGVzdGluYXRpb25JZGVu
dGlmaWVyLCBudWxscHRyLCAiSW52YWxpZCBpbWFnZSBidWZmZXIgZGVzdGluYXRpb24gd2hlbiBy
ZXN1bWluZyBkaXNwbGF5IGxpc3QgcHJvY2Vzc2luZyIpOwogCiAgICAgICAgICAgICBkZXN0aW5h
dGlvbiA9IG1ha2VSZWZQdHIobV9yZW1vdGVSZXNvdXJjZUNhY2hlLmNhY2hlZEltYWdlQnVmZmVy
KG5ld0Rlc3RpbmF0aW9uSWRlbnRpZmllcikpOwotCi0gICAgICAgICAgICBpZiAoVU5MSUtFTFko
IWRlc3RpbmF0aW9uKSkgewotICAgICAgICAgICAgICAgIC8vIEZJWE1FOiBBZGQgYSBtZXNzYWdl
IGNoZWNrIHRvIHRlcm1pbmF0ZSB0aGUgd2ViIHByb2Nlc3MuCi0gICAgICAgICAgICAgICAgQVNT
RVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICB9
CisgICAgICAgICAgICBNRVNTQUdFX0NIRUNLX1dJVEhfUkVUVVJOX1ZBTFVFKGRlc3RpbmF0aW9u
LCBudWxscHRyLCAiTWlzc2luZyBpbWFnZSBidWZmZXIgZGVzdGluYXRpb24gd2hlbiByZXN1bWlu
ZyBkaXNwbGF5IGxpc3QgcHJvY2Vzc2luZyIpOwogCiAgICAgICAgICAgICBvZmZzZXQgPSByZXN1
bWVSZWFkaW5nSW5mby0+b2Zmc2V0OwogCkBAIC0yNzIsMjQgKzI2NSwxNCBAQCB2b2lkIFJlbW90
ZVJlbmRlcmluZ0JhY2tlbmQ6Ondha2VVcEFuZEFwcGx5RGlzcGxheUxpc3QoY29uc3QgR1BVUHJv
Y2Vzc1dha2V1cE1lcwogCiAgICAgVHJhY2VTY29wZSB0cmFjaW5nU2NvcGUoV2FrZVVwQW5kQXBw
bHlEaXNwbGF5TGlzdFN0YXJ0LCBXYWtlVXBBbmRBcHBseURpc3BsYXlMaXN0RW5kKTsKICAgICBh
dXRvIGRlc3RpbmF0aW9uSW1hZ2VCdWZmZXIgPSBtYWtlUmVmUHRyKG1fcmVtb3RlUmVzb3VyY2VD
YWNoZS5jYWNoZWRJbWFnZUJ1ZmZlcihhcmd1bWVudHMuZGVzdGluYXRpb25JbWFnZUJ1ZmZlcklk
ZW50aWZpZXIpKTsKLSAgICBpZiAoVU5MSUtFTFkoIWRlc3RpbmF0aW9uSW1hZ2VCdWZmZXIpKSB7
Ci0gICAgICAgIC8vIEZJWE1FOiBBZGQgYSBtZXNzYWdlIGNoZWNrIHRvIHRlcm1pbmF0ZSB0aGUg
d2ViIHByb2Nlc3MuCi0gICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICByZXR1
cm47Ci0gICAgfQorICAgIE1FU1NBR0VfQ0hFQ0soZGVzdGluYXRpb25JbWFnZUJ1ZmZlciwgIk1p
c3NpbmcgZGVzdGluYXRpb24gaW1hZ2UgYnVmZmVyIik7CiAKICAgICBhdXRvIGluaXRpYWxIYW5k
bGUgPSBtX3NoYXJlZERpc3BsYXlMaXN0SGFuZGxlcy5nZXQoYXJndW1lbnRzLml0ZW1CdWZmZXJJ
ZGVudGlmaWVyKTsKLSAgICBpZiAoVU5MSUtFTFkoIWluaXRpYWxIYW5kbGUpKSB7Ci0gICAgICAg
IC8vIEZJWE1FOiBBZGQgYSBtZXNzYWdlIGNoZWNrIHRvIHRlcm1pbmF0ZSB0aGUgd2ViIHByb2Nl
c3MuCi0gICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICByZXR1cm47Ci0gICAg
fQorICAgIE1FU1NBR0VfQ0hFQ0soaW5pdGlhbEhhbmRsZSwgIk1pc3NpbmcgaW5pdGlhbCBzaGFy
ZWQgZGlzcGxheSBsaXN0IGhhbmRsZSIpOwogCiAgICAgZGVzdGluYXRpb25JbWFnZUJ1ZmZlciA9
IG5leHREZXN0aW5hdGlvbkltYWdlQnVmZmVyQWZ0ZXJBcHBseWluZ0Rpc3BsYXlMaXN0cygqZGVz
dGluYXRpb25JbWFnZUJ1ZmZlciwgYXJndW1lbnRzLm9mZnNldCwgKmluaXRpYWxIYW5kbGUsIGFy
Z3VtZW50cy5yZWFzb24pOwotICAgIGlmICghZGVzdGluYXRpb25JbWFnZUJ1ZmZlcikgewotICAg
ICAgICBSRUxFQVNFX0FTU0VSVChtX3BlbmRpbmdXYWtldXBJbmZvKTsKKyAgICBpZiAoIWRlc3Rp
bmF0aW9uSW1hZ2VCdWZmZXIpCiAgICAgICAgIHJldHVybjsKLSAgICB9CiAKICAgICB3aGlsZSAo
bV9wZW5kaW5nV2FrZXVwSW5mbykgewogICAgICAgICBpZiAobV9wZW5kaW5nV2FrZXVwSW5mby0+
bWlzc2luZ0NhY2hlZFJlc291cmNlSWRlbnRpZmllcikKQEAgLTMwNSwyMCArMjg4LDEzIEBAIHZv
aWQgUmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6d2FrZVVwQW5kQXBwbHlEaXNwbGF5TGlzdChjb25z
dCBHUFVQcm9jZXNzV2FrZXVwTWVzCiAgICAgICAgIC8vIE90aGVyd2lzZSwgY29udGludWUgcmVh
ZGluZyB0aGUgbmV4dCBkaXNwbGF5IGxpc3QgaXRlbSBidWZmZXIgZnJvbSB0aGUgc3RhcnQuCiAg
ICAgICAgIGF1dG8gYXJndW1lbnRzID0gc3RkOjpleGNoYW5nZShtX3BlbmRpbmdXYWtldXBJbmZv
LCBXVEY6Om51bGxvcHQpLT5hcmd1bWVudHM7CiAgICAgICAgIGRlc3RpbmF0aW9uSW1hZ2VCdWZm
ZXIgPSBuZXh0RGVzdGluYXRpb25JbWFnZUJ1ZmZlckFmdGVyQXBwbHlpbmdEaXNwbGF5TGlzdHMo
KmRlc3RpbmF0aW9uSW1hZ2VCdWZmZXIsIGFyZ3VtZW50cy5vZmZzZXQsICpuZXh0SGFuZGxlLCBh
cmd1bWVudHMucmVhc29uKTsKLSAgICAgICAgaWYgKCFkZXN0aW5hdGlvbkltYWdlQnVmZmVyKSB7
Ci0gICAgICAgICAgICBSRUxFQVNFX0FTU0VSVChtX3BlbmRpbmdXYWtldXBJbmZvKTsKKyAgICAg
ICAgaWYgKCFkZXN0aW5hdGlvbkltYWdlQnVmZmVyKQogICAgICAgICAgICAgYnJlYWs7Ci0gICAg
ICAgIH0KICAgICB9CiB9CiAKIHZvaWQgUmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6c2V0TmV4dEl0
ZW1CdWZmZXJUb1JlYWQoRGlzcGxheUxpc3Q6Okl0ZW1CdWZmZXJJZGVudGlmaWVyIGlkZW50aWZp
ZXIsIFdlYkNvcmU6OlJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciBkZXN0aW5hdGlvbklkZW50
aWZpZXIpCiB7Ci0gICAgaWYgKFVOTElLRUxZKG1fcGVuZGluZ1dha2V1cEluZm8pKSB7Ci0gICAg
ICAgIC8vIEZJWE1FOiBBZGQgYSBtZXNzYWdlIGNoZWNrIHRvIHRlcm1pbmF0ZSB0aGUgd2ViIHBy
b2Nlc3MuCi0gICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICByZXR1cm47Ci0g
ICAgfQogICAgIG1fcGVuZGluZ1dha2V1cEluZm8gPSB7e3sgaWRlbnRpZmllciwgU2hhcmVkRGlz
cGxheUxpc3RIYW5kbGU6OmhlYWRlclNpemUoKSwgZGVzdGluYXRpb25JZGVudGlmaWVyLCBHUFVQ
cm9jZXNzV2FrZXVwUmVhc29uOjpVbnNwZWNpZmllZCB9LCBXVEY6Om51bGxvcHQgfX07CiB9CiAK
QEAgLTQwNSwxMiArMzgxLDcgQEAgdm9pZCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpyZWxlYXNl
UmVtb3RlUmVzb3VyY2UoUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyIHIKIHZvaWQgUmVtb3Rl
UmVuZGVyaW5nQmFja2VuZDo6ZGlkQ3JlYXRlU2hhcmVkRGlzcGxheUxpc3RIYW5kbGUoRGlzcGxh
eUxpc3Q6Okl0ZW1CdWZmZXJJZGVudGlmaWVyIGlkZW50aWZpZXIsIGNvbnN0IFNoYXJlZE1lbW9y
eTo6SVBDSGFuZGxlJiBoYW5kbGUsIFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciBkZXN0aW5h
dGlvbkJ1ZmZlcklkZW50aWZpZXIpCiB7CiAgICAgQVNTRVJUKCFSdW5Mb29wOjppc01haW4oKSk7
Ci0KLSAgICBpZiAoVU5MSUtFTFkobV9zaGFyZWREaXNwbGF5TGlzdEhhbmRsZXMuY29udGFpbnMo
aWRlbnRpZmllcikpKSB7Ci0gICAgICAgIC8vIEZJWE1FOiBBZGQgYSBtZXNzYWdlIGNoZWNrIHRv
IHRlcm1pbmF0ZSB0aGUgd2ViIHByb2Nlc3MuCi0gICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgp
OwotICAgICAgICByZXR1cm47Ci0gICAgfQorICAgIE1FU1NBR0VfQ0hFQ0soIW1fc2hhcmVkRGlz
cGxheUxpc3RIYW5kbGVzLmNvbnRhaW5zKGlkZW50aWZpZXIpLCAiRHVwbGljYXRlIHNoYXJlZCBk
aXNwbGF5IGxpc3QgaGFuZGxlIik7CiAKICAgICBpZiAoYXV0byBzaGFyZWRNZW1vcnkgPSBTaGFy
ZWRNZW1vcnk6Om1hcChoYW5kbGUuaGFuZGxlLCBTaGFyZWRNZW1vcnk6OlByb3RlY3Rpb246OlJl
YWRXcml0ZSkpCiAgICAgICAgIG1fc2hhcmVkRGlzcGxheUxpc3RIYW5kbGVzLnNldChpZGVudGlm
aWVyLCBEaXNwbGF5TGlzdFJlYWRlckhhbmRsZTo6Y3JlYXRlKGlkZW50aWZpZXIsIHNoYXJlZE1l
bW9yeS5yZWxlYXNlTm9uTnVsbCgpKSk7Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>