<?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>177934</bug_id>
          
          <creation_ts>2017-10-05 05:44:32 -0700</creation_ts>
          <short_desc>[SOUP] Add support for preconnect</short_desc>
          <delta_ts>2021-04-22 15:56:23 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKitGTK</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=224955</see_also>
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Miguel Gomez">magomez</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>annulen</cc>
    
    <cc>bugs-noreply</cc>
    
    <cc>cdumez</cc>
    
    <cc>cgarcia</cc>
    
    <cc>csaavedra</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>pgriffis</cc>
    
    <cc>ryuan.choi</cc>
    
    <cc>sergio</cc>
    
    <cc>svillar</cc>
    
    <cc>zan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1356994</commentid>
    <comment_count>0</comment_count>
    <who name="Miguel Gomez">magomez</who>
    <bug_when>2017-10-05 05:44:32 -0700</bug_when>
    <thetext>http/tests/preconnect/link-rel-preconnect-http.html [ Timeout ]
http/tests/preconnect/link-rel-preconnect-https.html [ Timeout ]
fast/dom/HTMLLinkElement/preconnect-support.html [ Failure ]</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1405113</commentid>
    <comment_count>1</comment_count>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2018-03-09 01:10:19 -0800</bug_when>
    <thetext>Related failure, since introduced in r229308:
http/tests/preconnect/link-header-rel-preconnect-http.html

https://trac.webkit.org/changeset/229308/webkit</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1686541</commentid>
    <comment_count>2</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2020-09-08 06:53:22 -0700</bug_when>
    <thetext>See https://w3c.github.io/resource-hints/#preconnect</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1686542</commentid>
    <comment_count>3</comment_count>
      <attachid>408225</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2020-09-08 06:55:44 -0700</bug_when>
    <thetext>Created attachment 408225
WIP patch

This is WIP only because it requires new libsoup API, see https://gitlab.gnome.org/GNOME/libsoup/-/merge_requests/136</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1686981</commentid>
    <comment_count>4</comment_count>
      <attachid>408225</attachid>
    <who name="Sergio Villar Senin">svillar</who>
    <bug_when>2020-09-09 08:58:40 -0700</bug_when>
    <thetext>Comment on attachment 408225
WIP patch

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

&gt; Source/WebKit/NetworkProcess/soup/NetworkDataTaskSoup.cpp:482
&gt; +    auto error = SoupNetworkSession::checkTLSErrors(m_currentRequest.url(), certificate, tlsErrors);

Why this?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1686986</commentid>
    <comment_count>5</comment_count>
      <attachid>408225</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2020-09-09 09:05:25 -0700</bug_when>
    <thetext>Comment on attachment 408225
WIP patch

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

&gt;&gt; Source/WebKit/NetworkProcess/soup/NetworkDataTaskSoup.cpp:482
&gt;&gt; +    auto error = SoupNetworkSession::checkTLSErrors(m_currentRequest.url(), certificate, tlsErrors);
&gt; 
&gt; Why this?

Because in case of preconnect we don&apos;t have a m_soupRequest. I can check m_shouldPreconnectOnly, but using m_currentRequest is just simpler and should work in both cases.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1752234</commentid>
    <comment_count>6</comment_count>
      <attachid>426541</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2021-04-20 05:49:12 -0700</bug_when>
    <thetext>Created attachment 426541
Patch

This is now possible with soup3</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1753113</commentid>
    <comment_count>7</comment_count>
      <attachid>408225</attachid>
    <who name="Sergio Villar Senin">svillar</who>
    <bug_when>2021-04-22 05:05:07 -0700</bug_when>
    <thetext>Comment on attachment 408225
WIP patch

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

&gt; Source/WebKit/NetworkProcess/soup/NetworkDataTaskSoup.cpp:247
&gt; +        soup_session_preconnect_async(soupSession, soupURI.get(), m_cancellable.get(),

This would require guarding with ENABLE(SERVER_PRECONNECT), actually the whole if block (otherwise weird things could happen).

I haven&apos;t checked the caller but I&apos;ll assume that parameters.shouldPreconnectOnly is properly guarded client side by ENABLE(SERVER_PRECONNECT) and could never be ::Yes if not enabled.

&gt; Source/WebKit/NetworkProcess/soup/NetworkDataTaskSoup.cpp:250
&gt; +                if (task.state() == State::Canceling || task.state() == State::Completed || !task.m_client)

Consider refactoring the condition to a method as it&apos;ll be used  in preconnectCallback too.

&gt; Source/WebKit/NetworkProcess/soup/NetworkDataTaskSoup.cpp:341
&gt; +}

What about using scopes for the clearRequest()? Something like

auto clearRequestOnExit = makeScopeExit([task]() { task-&gt;clearRequest(); }

My only doubt is which is executed first the RefPtr::deref of protectedThis or the scope exit. Maybe it&apos;s safer to do it as you did then...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1753114</commentid>
    <comment_count>8</comment_count>
    <who name="Sergio Villar Senin">svillar</who>
    <bug_when>2021-04-22 05:06:37 -0700</bug_when>
    <thetext>(In reply to Sergio Villar Senin from comment #7)
&gt; Comment on attachment 408225 [details]
&gt; WIP patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=408225&amp;action=review
&gt; 
&gt; &gt; Source/WebKit/NetworkProcess/soup/NetworkDataTaskSoup.cpp:247
&gt; &gt; +        soup_session_preconnect_async(soupSession, soupURI.get(), m_cancellable.get(),
&gt; 
&gt; This would require guarding with ENABLE(SERVER_PRECONNECT), actually the
&gt; whole if block (otherwise weird things could happen).
&gt; 
&gt; I haven&apos;t checked the caller but I&apos;ll assume that
&gt; parameters.shouldPreconnectOnly is properly guarded client side by
&gt; ENABLE(SERVER_PRECONNECT) and could never be ::Yes if not enabled.
&gt; 
&gt; &gt; Source/WebKit/NetworkProcess/soup/NetworkDataTaskSoup.cpp:250
&gt; &gt; +                if (task.state() == State::Canceling || task.state() == State::Completed || !task.m_client)
&gt; 
&gt; Consider refactoring the condition to a method as it&apos;ll be used  in
&gt; preconnectCallback too.
&gt; 
&gt; &gt; Source/WebKit/NetworkProcess/soup/NetworkDataTaskSoup.cpp:341
&gt; &gt; +}
&gt; 
&gt; What about using scopes for the clearRequest()? Something like
&gt; 
&gt; auto clearRequestOnExit = makeScopeExit([task]() { task-&gt;clearRequest(); }
&gt; 
&gt; My only doubt is which is executed first the RefPtr::deref of protectedThis
&gt; or the scope exit. Maybe it&apos;s safer to do it as you did then...

Sorry I was reviewing the old one. Forget about this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1753115</commentid>
    <comment_count>9</comment_count>
      <attachid>426541</attachid>
    <who name="Sergio Villar Senin">svillar</who>
    <bug_when>2021-04-22 05:13:32 -0700</bug_when>
    <thetext>Comment on attachment 426541
Patch

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

&gt; Source/WebKit/NetworkProcess/soup/NetworkDataTaskSoup.cpp:256
&gt; +#if !USE(SOUP2)

What about &amp;&amp; ENABLE(SERVER_PRECONNECT) ?

&gt; Source/WebKit/NetworkProcess/soup/NetworkDataTaskSoup.cpp:463
&gt; +#if !USE(SOUP2)

Ditto

&gt; Source/WebKit/NetworkProcess/soup/NetworkDataTaskSoup.cpp:478
&gt; +}

I&apos;d suggest using makeScopeExit for the clearRequest() call. However I am not sure whether the RefPtr::deref is executed after it so we can leave it as it just in case.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1753117</commentid>
    <comment_count>10</comment_count>
      <attachid>426541</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2021-04-22 05:17:41 -0700</bug_when>
    <thetext>Comment on attachment 426541
Patch

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

&gt;&gt; Source/WebKit/NetworkProcess/soup/NetworkDataTaskSoup.cpp:256
&gt;&gt; +#if !USE(SOUP2)
&gt; 
&gt; What about &amp;&amp; ENABLE(SERVER_PRECONNECT) ?

SERVER_PRECONNECT is enabled unconditionally when building with soup3

&gt;&gt; Source/WebKit/NetworkProcess/soup/NetworkDataTaskSoup.cpp:478
&gt;&gt; +}
&gt; 
&gt; I&apos;d suggest using makeScopeExit for the clearRequest() call. However I am not sure whether the RefPtr::deref is executed after it so we can leave it as it just in case.

clearRequest should happen before the dispatchDidCompleteWithError.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1753118</commentid>
    <comment_count>11</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2021-04-22 05:18:56 -0700</bug_when>
    <thetext>Committed r276432 (236895@main): &lt;https://commits.webkit.org/236895@main&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>408225</attachid>
            <date>2020-09-08 06:55:44 -0700</date>
            <delta_ts>2021-04-20 05:49:12 -0700</delta_ts>
            <desc>WIP patch</desc>
            <filename>wk2-preconnect.diff</filename>
            <type>text/plain</type>
            <size>15231</size>
            <attacher name="Carlos Garcia Campos">cgarcia</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2d0ay9UZXN0RXhwZWN0YXRpb25zIGIv
TGF5b3V0VGVzdHMvcGxhdGZvcm0vZ3RrL1Rlc3RFeHBlY3RhdGlvbnMKaW5kZXggMjEyODYyZWMw
OGMzLi5lYmYxN2Q3Zjc5NzggMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2d0ay9U
ZXN0RXhwZWN0YXRpb25zCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2d0ay9UZXN0RXhwZWN0
YXRpb25zCkBAIC0yMzIwLDkgKzIzMjAsNiBAQCB3ZWJraXQub3JnL2IvMTc0NDU5IGZhc3QvaW1h
Z2VzL2FzeW5jLWltYWdlLWJvZHktYmFja2dyb3VuZC1pbWFnZS5odG1sIFsgVGltZW91dAogd2Vi
a2l0Lm9yZy9iLzE3NDQ1OSBmYXN0L2ltYWdlcy9zcHJpdGUtc2hlZXQtaW1hZ2UtZHJhdy5odG1s
IFsgVGltZW91dCBdCiB3ZWJraXQub3JnL2IvMTc0NDU5IGZhc3QvaW1hZ2VzL2FzeW5jLWltYWdl
LW11bHRpcGxlLWNsaWVudHMtcmVwYWludC5odG1sIFsgVGltZW91dCBdCiAKLXdlYmtpdC5vcmcv
Yi8xNzc5MzQgaHR0cC90ZXN0cy9wcmVjb25uZWN0L2xpbmstcmVsLXByZWNvbm5lY3QtaHR0cC5o
dG1sIFsgVGltZW91dCBdCi13ZWJraXQub3JnL2IvMTc3OTM0IGh0dHAvdGVzdHMvcHJlY29ubmVj
dC9saW5rLXJlbC1wcmVjb25uZWN0LWh0dHBzLmh0bWwgWyBUaW1lb3V0IF0KLQogd2Via2l0Lm9y
Zy9iLzE3OTI1OCBmYXN0L2NhbnZhcy93ZWJnbC90ZXhJbWFnZTJELW1zZS1mbGlwWS1mYWxzZS5o
dG1sIFsgVGltZW91dCBdCiB3ZWJraXQub3JnL2IvMTc5MjU4IGZhc3QvY2FudmFzL3dlYmdsL3Rl
eEltYWdlMkQtbXNlLWZsaXBZLXRydWUuaHRtbCBbIFRpbWVvdXQgXQogCkBAIC0zMTIxLDkgKzMx
MTgsNiBAQCB3ZWJraXQub3JnL2IvMTc2NjQ5IGZhc3QvdGV4dC9pbnRlcm5hdGlvbmFsL3N5bnRo
ZXNpemVkLWl0YWxpYy12ZXJ0aWNhbC5odG1sIFsgSQogd2Via2l0Lm9yZy9iLzE3NzI5NCBwbGF0
Zm9ybS9ndGsvZm9udHMvZm9udGNvbmZpZy1hbGlhc2luZy1zZXR0aW5ncy5odG1sIFsgRmFpbHVy
ZSBdCiB3ZWJraXQub3JnL2IvMTc3Mjk0IGZhc3QvdGV4dC9maXR6cGF0cmljay1jb21iaW5hdGlv
bi5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCiAKLXdlYmtpdC5vcmcvYi8xNzc5MzQgZmFzdC9k
b20vSFRNTExpbmtFbGVtZW50L3ByZWNvbm5lY3Qtc3VwcG9ydC5odG1sIFsgRmFpbHVyZSBdCi13
ZWJraXQub3JnL2IvMTc3OTM0IGh0dHAvdGVzdHMvcHJlY29ubmVjdC9saW5rLWhlYWRlci1yZWwt
cHJlY29ubmVjdC1odHRwLmh0bWwgWyBGYWlsdXJlIF0KLQogd2Via2l0Lm9yZy9iLzE3NzkzNiBm
YXN0L3RleHQvYWxsLXNtYWxsLWNhcHMtd2hpdGVzcGFjZS5odG1sIFsgSW1hZ2VPbmx5RmFpbHVy
ZSBdCiB3ZWJraXQub3JnL2IvMTc3OTM2IGZhc3QvdGV4dC9yZWdpb25hbC1pbmRpY2F0b3Itc3lt
b2Jscy5odG1sIFsgRmFpbHVyZSBdCiB3ZWJraXQub3JnL2IvMTc3OTM2IGZhc3QvdGV4dC9zZWxl
Y3Rpb24taW4taW5pdGlhbC1hZHZhbmNlLXJlZ2lvbi5odG1sIFsgRmFpbHVyZSBdCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS93cGUvVGVzdEV4cGVjdGF0aW9ucyBiL0xheW91dFRl
c3RzL3BsYXRmb3JtL3dwZS9UZXN0RXhwZWN0YXRpb25zCmluZGV4IDU4MGVhOTcwYmZiNS4uMjMz
MjY2M2M3ZmFlIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS93cGUvVGVzdEV4cGVj
dGF0aW9ucworKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS93cGUvVGVzdEV4cGVjdGF0aW9ucwpA
QCAtMTY2Niw4ICsxNjY2LDYgQEAgd2Via2l0Lm9yZy9iLzE4NzYwMSBmdWxsc2NyZWVuL2Z1bGwt
c2NyZWVuLWxheWVyLWR1bXAuaHRtbCBbIEZhaWx1cmUgXQogCiB3ZWJraXQub3JnL2IvMTg4NDMz
IHN2Zy9jdXN0b20vaHJlZi1zdmctbmFtZXNwYWNlLXN0YXRpYy5zdmcgWyBJbWFnZU9ubHlGYWls
dXJlIF0KIAotd2Via2l0Lm9yZy9iLzE3NzkzNCBmYXN0L2RvbS9IVE1MTGlua0VsZW1lbnQvcHJl
Y29ubmVjdC1zdXBwb3J0Lmh0bWwgWyBGYWlsdXJlIF0KLQogd2Via2l0Lm9yZy9iLzEzMTkzNCBm
YXN0L2RvbS9XaW5kb3cvbW96aWxsYS1mb2N1cy1ibHVyLmh0bWwgWyBGYWlsdXJlIF0KIAogd2Vi
a2l0Lm9yZy9iLzE4ODUwNSBmYXN0L2RvbS9ob3Jpem9udGFsLXNjcm9sbGJhci1pbi1ydGwuaHRt
bCBbIEZhaWx1cmUgXQpAQCAtMTk4NCwxMCArMTk4Miw2IEBAIHdlYmtpdC5vcmcvYi8xMzEzNDcg
aHR0cC90ZXN0cy9sb2FkaW5nL2hpZHBpLXByZWxvYWQtcGljdHVyZS1zaXplcy5odG1sIFsgRmFp
bHVyCiB3ZWJraXQub3JnL2IvODU5NjkgaHR0cC90ZXN0cy9sb2FkaW5nL3Bvc3QtaW4taWZyYW1l
LXdpdGgtYmFjay1uYXZpZ2F0aW9uLmh0bWwgWyBGYWlsdXJlIF0KIHdlYmtpdC5vcmcvYi8xNDQ1
NzUgaHR0cC90ZXN0cy9sb2FkaW5nL3Byb21vdGUtaW1nLXByZWxvYWQtcHJpb3JpdHkuaHRtbCBb
IEZhaWx1cmUgXQogCi13ZWJraXQub3JnL2IvMTc3OTM0IGh0dHAvdGVzdHMvcHJlY29ubmVjdC9s
aW5rLXJlbC1wcmVjb25uZWN0LWh0dHAuaHRtbCBbIFRpbWVvdXQgXQotd2Via2l0Lm9yZy9iLzE3
NzkzNCBodHRwL3Rlc3RzL3ByZWNvbm5lY3QvbGluay1yZWwtcHJlY29ubmVjdC1odHRwcy5odG1s
IFsgVGltZW91dCBdCi13ZWJraXQub3JnL2IvMTc3OTM0IGh0dHAvdGVzdHMvcHJlY29ubmVjdC9s
aW5rLWhlYWRlci1yZWwtcHJlY29ubmVjdC1odHRwLmh0bWwgWyBGYWlsdXJlIF0KLQogd2Via2l0
Lm9yZy9iLzIxMjE1NSBpbXBvcnRlZC9tb3ppbGxhL3N2Zy9ibGVuZC1vdmVybGF5LnN2ZyBbIElt
YWdlT25seUZhaWx1cmUgXQogd2Via2l0Lm9yZy9iLzIxMjE1NSBpbXBvcnRlZC9tb3ppbGxhL3N2
Zy9keW5hbWljLXNtYWxsLW9iamVjdC1zY2FsZWQtdXAtMDEuc3ZnIFsgSW1hZ2VPbmx5RmFpbHVy
ZSBdCiB3ZWJraXQub3JnL2IvMjEyMTU1IGltcG9ydGVkL21vemlsbGEvc3ZnL3BhdHRlcm4tc2Nh
bGUtMDFhLnN2ZyBbIEltYWdlT25seUZhaWx1cmUgXQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrRGF0YVRhc2suY3BwIGIvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9OZXR3b3JrRGF0YVRhc2suY3BwCmluZGV4IDc0MzY2YTFiZDA2ZC4uY2Q0ZWUy
ZjZlNDM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtE
YXRhVGFzay5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrRGF0
YVRhc2suY3BwCkBAIC01Nyw3ICs1Nyw3IEBAIFJlZjxOZXR3b3JrRGF0YVRhc2s+IE5ldHdvcmtE
YXRhVGFzazo6Y3JlYXRlKE5ldHdvcmtTZXNzaW9uJiBzZXNzaW9uLCBOZXR3b3JrRGF0CiAgICAg
cmV0dXJuIE5ldHdvcmtEYXRhVGFza0NvY29hOjpjcmVhdGUoc2Vzc2lvbiwgY2xpZW50LCBwYXJh
bWV0ZXJzLnJlcXVlc3QsIHBhcmFtZXRlcnMud2ViRnJhbWVJRCwgcGFyYW1ldGVycy53ZWJQYWdl
SUQsIHBhcmFtZXRlcnMuc3RvcmVkQ3JlZGVudGlhbHNQb2xpY3ksIHBhcmFtZXRlcnMuY29udGVu
dFNuaWZmaW5nUG9saWN5LCBwYXJhbWV0ZXJzLmNvbnRlbnRFbmNvZGluZ1NuaWZmaW5nUG9saWN5
LCBwYXJhbWV0ZXJzLnNob3VsZENsZWFyUmVmZXJyZXJPbkhUVFBTVG9IVFRQUmVkaXJlY3QsIHBh
cmFtZXRlcnMuc2hvdWxkUHJlY29ubmVjdE9ubHksIHBhcmFtZXRlcnMuaXNNYWluRnJhbWVOYXZp
Z2F0aW9uLCBwYXJhbWV0ZXJzLmlzTWFpblJlc291cmNlTmF2aWdhdGlvbkZvckFueUZyYW1lLCBw
YXJhbWV0ZXJzLm5ldHdvcmtBY3Rpdml0eVRyYWNrZXIsIHBhcmFtZXRlcnMuaXNOYXZpZ2F0aW5n
VG9BcHBCb3VuZERvbWFpbiwgcGFyYW1ldGVycy5zaG91bGRSZWxheFRoaXJkUGFydHlDb29raWVC
bG9ja2luZyk7CiAjZW5kaWYKICNpZiBVU0UoU09VUCkKLSAgICByZXR1cm4gTmV0d29ya0RhdGFU
YXNrU291cDo6Y3JlYXRlKHNlc3Npb24sIGNsaWVudCwgcGFyYW1ldGVycy5yZXF1ZXN0LCBwYXJh
bWV0ZXJzLndlYkZyYW1lSUQsIHBhcmFtZXRlcnMud2ViUGFnZUlELCBwYXJhbWV0ZXJzLnN0b3Jl
ZENyZWRlbnRpYWxzUG9saWN5LCBwYXJhbWV0ZXJzLmNvbnRlbnRTbmlmZmluZ1BvbGljeSwgcGFy
YW1ldGVycy5jb250ZW50RW5jb2RpbmdTbmlmZmluZ1BvbGljeSwgcGFyYW1ldGVycy5zaG91bGRD
bGVhclJlZmVycmVyT25IVFRQU1RvSFRUUFJlZGlyZWN0LCBwYXJhbWV0ZXJzLmlzTWFpbkZyYW1l
TmF2aWdhdGlvbik7CisgICAgcmV0dXJuIE5ldHdvcmtEYXRhVGFza1NvdXA6OmNyZWF0ZShzZXNz
aW9uLCBjbGllbnQsIHBhcmFtZXRlcnMucmVxdWVzdCwgcGFyYW1ldGVycy53ZWJGcmFtZUlELCBw
YXJhbWV0ZXJzLndlYlBhZ2VJRCwgcGFyYW1ldGVycy5zdG9yZWRDcmVkZW50aWFsc1BvbGljeSwg
cGFyYW1ldGVycy5jb250ZW50U25pZmZpbmdQb2xpY3ksIHBhcmFtZXRlcnMuY29udGVudEVuY29k
aW5nU25pZmZpbmdQb2xpY3ksIHBhcmFtZXRlcnMuc2hvdWxkQ2xlYXJSZWZlcnJlck9uSFRUUFNU
b0hUVFBSZWRpcmVjdCwgcGFyYW1ldGVycy5zaG91bGRQcmVjb25uZWN0T25seSwgcGFyYW1ldGVy
cy5pc01haW5GcmFtZU5hdmlnYXRpb24pOwogI2VuZGlmCiAjaWYgVVNFKENVUkwpCiAgICAgcmV0
dXJuIE5ldHdvcmtEYXRhVGFza0N1cmw6OmNyZWF0ZShzZXNzaW9uLCBjbGllbnQsIHBhcmFtZXRl
cnMucmVxdWVzdCwgcGFyYW1ldGVycy53ZWJGcmFtZUlELCBwYXJhbWV0ZXJzLndlYlBhZ2VJRCwg
cGFyYW1ldGVycy5zdG9yZWRDcmVkZW50aWFsc1BvbGljeSwgcGFyYW1ldGVycy5jb250ZW50U25p
ZmZpbmdQb2xpY3ksIHBhcmFtZXRlcnMuY29udGVudEVuY29kaW5nU25pZmZpbmdQb2xpY3ksIHBh
cmFtZXRlcnMuc2hvdWxkQ2xlYXJSZWZlcnJlck9uSFRUUFNUb0hUVFBSZWRpcmVjdCwgcGFyYW1l
dGVycy5pc01haW5GcmFtZU5hdmlnYXRpb24sIHBhcmFtZXRlcnMuc2hvdWxkUmVsYXhUaGlyZFBh
cnR5Q29va2llQmxvY2tpbmcpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9zb3VwL05ldHdvcmtEYXRhVGFza1NvdXAuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9zb3VwL05ldHdvcmtEYXRhVGFza1NvdXAuY3BwCmluZGV4IGJhYTY3ODMyYjU5ZS4u
MzE5ODYyOWI5NzBiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3Nv
dXAvTmV0d29ya0RhdGFUYXNrU291cC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9zb3VwL05ldHdvcmtEYXRhVGFza1NvdXAuY3BwCkBAIC01MSwxMSArNTEsMTIgQEAgdXNp
bmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKIHN0YXRpYyBjb25zdCBzaXplX3QgZ0RlZmF1bHRSZWFk
QnVmZmVyU2l6ZSA9IDgxOTI7CiAKLU5ldHdvcmtEYXRhVGFza1NvdXA6Ok5ldHdvcmtEYXRhVGFz
a1NvdXAoTmV0d29ya1Nlc3Npb24mIHNlc3Npb24sIE5ldHdvcmtEYXRhVGFza0NsaWVudCYgY2xp
ZW50LCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3RXaXRoQ3JlZGVudGlhbHMsIEZyYW1l
SWRlbnRpZmllciBmcmFtZUlELCBQYWdlSWRlbnRpZmllciBwYWdlSUQsIFN0b3JlZENyZWRlbnRp
YWxzUG9saWN5IHN0b3JlZENyZWRlbnRpYWxzUG9saWN5LCBDb250ZW50U25pZmZpbmdQb2xpY3kg
c2hvdWxkQ29udGVudFNuaWZmLCBXZWJDb3JlOjpDb250ZW50RW5jb2RpbmdTbmlmZmluZ1BvbGlj
eSwgYm9vbCBzaG91bGRDbGVhclJlZmVycmVyT25IVFRQU1RvSFRUUFJlZGlyZWN0LCBib29sIGRh
dGFUYXNrSXNGb3JNYWluRnJhbWVOYXZpZ2F0aW9uKQorTmV0d29ya0RhdGFUYXNrU291cDo6TmV0
d29ya0RhdGFUYXNrU291cChOZXR3b3JrU2Vzc2lvbiYgc2Vzc2lvbiwgTmV0d29ya0RhdGFUYXNr
Q2xpZW50JiBjbGllbnQsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdFdpdGhDcmVkZW50
aWFscywgRnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIFBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgU3Rv
cmVkQ3JlZGVudGlhbHNQb2xpY3kgc3RvcmVkQ3JlZGVudGlhbHNQb2xpY3ksIENvbnRlbnRTbmlm
ZmluZ1BvbGljeSBzaG91bGRDb250ZW50U25pZmYsIFdlYkNvcmU6OkNvbnRlbnRFbmNvZGluZ1Nu
aWZmaW5nUG9saWN5LCBib29sIHNob3VsZENsZWFyUmVmZXJyZXJPbkhUVFBTVG9IVFRQUmVkaXJl
Y3QsIFByZWNvbm5lY3RPbmx5IHNob3VsZFByZWNvbm5lY3RPbmx5LCBib29sIGRhdGFUYXNrSXNG
b3JNYWluRnJhbWVOYXZpZ2F0aW9uKQogICAgIDogTmV0d29ya0RhdGFUYXNrKHNlc3Npb24sIGNs
aWVudCwgcmVxdWVzdFdpdGhDcmVkZW50aWFscywgc3RvcmVkQ3JlZGVudGlhbHNQb2xpY3ksIHNo
b3VsZENsZWFyUmVmZXJyZXJPbkhUVFBTVG9IVFRQUmVkaXJlY3QsIGRhdGFUYXNrSXNGb3JNYWlu
RnJhbWVOYXZpZ2F0aW9uKQogICAgICwgbV9mcmFtZUlEKGZyYW1lSUQpCiAgICAgLCBtX3BhZ2VJ
RChwYWdlSUQpCiAgICAgLCBtX3Nob3VsZENvbnRlbnRTbmlmZihzaG91bGRDb250ZW50U25pZmYp
CisgICAgLCBtX3Nob3VsZFByZWNvbm5lY3RPbmx5KHNob3VsZFByZWNvbm5lY3RPbmx5KQogICAg
ICwgbV90aW1lb3V0U291cmNlKFJ1bkxvb3A6Om1haW4oKSwgdGhpcywgJk5ldHdvcmtEYXRhVGFz
a1NvdXA6OnRpbWVvdXRGaXJlZCkKIHsKICAgICBtX3Nlc3Npb24tPnJlZ2lzdGVyTmV0d29ya0Rh
dGFUYXNrKCp0aGlzKTsKQEAgLTExNCw2ICsxMTUsOSBAQCB2b2lkIE5ldHdvcmtEYXRhVGFza1Nv
dXA6OmNyZWF0ZVJlcXVlc3QoUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgV2FzQmxvY2tpbmdD
bwogICAgICAgICByZXR1cm47CiAgICAgfQogCisgICAgaWYgKG1fc2hvdWxkUHJlY29ubmVjdE9u
bHkgPT0gUHJlY29ubmVjdE9ubHk6OlllcykKKyAgICAgICAgcmV0dXJuOworCiAgICAgR1JlZlB0
cjxTb3VwUmVxdWVzdD4gc291cFJlcXVlc3QgPSBhZG9wdEdSZWYoc291cF9zZXNzaW9uX3JlcXVl
c3RfdXJpKHN0YXRpY19jYXN0PE5ldHdvcmtTZXNzaW9uU291cCY+KCptX3Nlc3Npb24pLnNvdXBT
ZXNzaW9uKCksIHNvdXBVUkkuZ2V0KCksIG51bGxwdHIpKTsKICAgICBpZiAoIXNvdXBSZXF1ZXN0
KSB7CiAgICAgICAgIHNjaGVkdWxlRmFpbHVyZShJbnZhbGlkVVJMRmFpbHVyZSk7CkBAIC0yMzQs
NiArMjM4LDI0IEBAIHZvaWQgTmV0d29ya0RhdGFUYXNrU291cDo6cmVzdW1lKCkKICAgICBzdGFy
dFRpbWVvdXQoKTsKIAogICAgIFJlZlB0cjxOZXR3b3JrRGF0YVRhc2tTb3VwPiBwcm90ZWN0ZWRU
aGlzKHRoaXMpOworICAgIGlmIChtX3Nob3VsZFByZWNvbm5lY3RPbmx5ID09IFByZWNvbm5lY3RP
bmx5OjpZZXMpIHsKKyAgICAgICAgR1VuaXF1ZVB0cjxTb3VwVVJJPiBzb3VwVVJJID0gbV9jdXJy
ZW50UmVxdWVzdC5jcmVhdGVTb3VwVVJJKCk7CisgICAgICAgIEFTU0VSVChzb3VwVVJJKTsKKwor
ICAgICAgICBhdXRvKiBzb3VwU2Vzc2lvbiA9IHN0YXRpY19jYXN0PE5ldHdvcmtTZXNzaW9uU291
cCY+KCptX3Nlc3Npb24pLnNvdXBTZXNzaW9uKCk7CisgICAgICAgIG1fY2FuY2VsbGFibGUgPSBh
ZG9wdEdSZWYoZ19jYW5jZWxsYWJsZV9uZXcoKSk7CisgICAgICAgIHNvdXBfc2Vzc2lvbl9wcmVj
b25uZWN0X2FzeW5jKHNvdXBTZXNzaW9uLCBzb3VwVVJJLmdldCgpLCBtX2NhbmNlbGxhYmxlLmdl
dCgpLAorICAgICAgICAgICAgW10oU291cFNlc3Npb24qLCBHU29ja2V0Q2xpZW50RXZlbnQgZXZl
bnQsIEdJT1N0cmVhbSogc3RyZWFtLCBncG9pbnRlciB1c2VyRGF0YSkgeworICAgICAgICAgICAg
ICAgIGF1dG8mIHRhc2sgPSAqc3RhdGljX2Nhc3Q8TmV0d29ya0RhdGFUYXNrU291cCo+KHVzZXJE
YXRhKTsKKyAgICAgICAgICAgICAgICBpZiAodGFzay5zdGF0ZSgpID09IFN0YXRlOjpDYW5jZWxp
bmcgfHwgdGFzay5zdGF0ZSgpID09IFN0YXRlOjpDb21wbGV0ZWQgfHwgIXRhc2subV9jbGllbnQp
CisgICAgICAgICAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICAgICAgICAgIHRhc2submV0
d29ya0V2ZW50KGV2ZW50LCBzdHJlYW0pOworICAgICAgICAgICAgfSwKKyAgICAgICAgICAgIHJl
aW50ZXJwcmV0X2Nhc3Q8R0FzeW5jUmVhZHlDYWxsYmFjaz4ocHJlY29ubmVjdENhbGxiYWNrKSwg
cHJvdGVjdGVkVGhpcy5sZWFrUmVmKCkpOworICAgICAgICByZXR1cm47CisgICAgfQorCiAgICAg
aWYgKG1fc291cFJlcXVlc3QgJiYgIW1fY2FuY2VsbGFibGUpIHsKICAgICAgICAgbV9jYW5jZWxs
YWJsZSA9IGFkb3B0R1JlZihnX2NhbmNlbGxhYmxlX25ldygpKTsKICAgICAgICAgc291cF9yZXF1
ZXN0X3NlbmRfYXN5bmMobV9zb3VwUmVxdWVzdC5nZXQoKSwgbV9jYW5jZWxsYWJsZS5nZXQoKSwg
cmVpbnRlcnByZXRfY2FzdDxHQXN5bmNSZWFkeUNhbGxiYWNrPihzZW5kUmVxdWVzdENhbGxiYWNr
KSwgcHJvdGVjdGVkVGhpcy5sZWFrUmVmKCkpOwpAQCAtMzAzLDYgKzMyNSwyMSBAQCB2b2lkIE5l
dHdvcmtEYXRhVGFza1NvdXA6OnN0b3BUaW1lb3V0KCkKICAgICBtX3RpbWVvdXRTb3VyY2Uuc3Rv
cCgpOwogfQogCit2b2lkIE5ldHdvcmtEYXRhVGFza1NvdXA6OnByZWNvbm5lY3RDYWxsYmFjayhT
b3VwU2Vzc2lvbiogc2Vzc2lvbiwgR0FzeW5jUmVzdWx0KiByZXN1bHQsIE5ldHdvcmtEYXRhVGFz
a1NvdXAqIHRhc2spCit7CisgICAgUmVmUHRyPE5ldHdvcmtEYXRhVGFza1NvdXA+IHByb3RlY3Rl
ZFRoaXMgPSBhZG9wdFJlZih0YXNrKTsKKyAgICBpZiAodGFzay0+c3RhdGUoKSA9PSBTdGF0ZTo6
Q2FuY2VsaW5nIHx8IHRhc2stPnN0YXRlKCkgPT0gU3RhdGU6OkNvbXBsZXRlZCB8fCAhdGFzay0+
bV9jbGllbnQpIHsKKyAgICAgICAgdGFzay0+Y2xlYXJSZXF1ZXN0KCk7CisgICAgICAgIHJldHVy
bjsKKyAgICB9CisKKyAgICBHVW5pcXVlT3V0UHRyPEdFcnJvcj4gZXJyb3I7CisgICAgc291cF9z
ZXNzaW9uX3ByZWNvbm5lY3RfZmluaXNoKHNlc3Npb24sIHJlc3VsdCwgJmVycm9yLm91dFB0cigp
KTsKKyAgICBSZXNvdXJjZUVycm9yIHJlc291cmNlRXJyb3IgPSBlcnJvciA/IFJlc291cmNlRXJy
b3IoZ19xdWFya190b19zdHJpbmcoZXJyb3ItPmRvbWFpbiksIGVycm9yLT5jb2RlLCB0YXNrLT5t
X2N1cnJlbnRSZXF1ZXN0LnVybCgpLCBTdHJpbmc6OmZyb21VVEY4KGVycm9yLT5tZXNzYWdlKSkg
OiBSZXNvdXJjZUVycm9yKCk7CisgICAgdGFzay0+Y2xlYXJSZXF1ZXN0KCk7CisgICAgdGFzay0+
ZGlzcGF0Y2hEaWRDb21wbGV0ZVdpdGhFcnJvcihyZXNvdXJjZUVycm9yKTsKK30KKwogdm9pZCBO
ZXR3b3JrRGF0YVRhc2tTb3VwOjpzZW5kUmVxdWVzdENhbGxiYWNrKFNvdXBSZXF1ZXN0KiBzb3Vw
UmVxdWVzdCwgR0FzeW5jUmVzdWx0KiByZXN1bHQsIE5ldHdvcmtEYXRhVGFza1NvdXAqIHRhc2sp
CiB7CiAgICAgUmVmUHRyPE5ldHdvcmtEYXRhVGFza1NvdXA+IHByb3RlY3RlZFRoaXMgPSBhZG9w
dFJlZih0YXNrKTsKQEAgLTQ0Miw5ICs0NzksNyBAQCBnYm9vbGVhbiBOZXR3b3JrRGF0YVRhc2tT
b3VwOjp0bHNDb25uZWN0aW9uQWNjZXB0Q2VydGlmaWNhdGVDYWxsYmFjayhHVGxzQ29ubmVjdAog
CiBib29sIE5ldHdvcmtEYXRhVGFza1NvdXA6OnRsc0Nvbm5lY3Rpb25BY2NlcHRDZXJ0aWZpY2F0
ZShHVGxzQ2VydGlmaWNhdGUqIGNlcnRpZmljYXRlLCBHVGxzQ2VydGlmaWNhdGVGbGFncyB0bHNF
cnJvcnMpCiB7Ci0gICAgQVNTRVJUKG1fc291cFJlcXVlc3QpOwotICAgIFVSTCB1cmwgPSBzb3Vw
VVJJVG9VUkwoc291cF9yZXF1ZXN0X2dldF91cmkobV9zb3VwUmVxdWVzdC5nZXQoKSkpOwotICAg
IGF1dG8gZXJyb3IgPSBTb3VwTmV0d29ya1Nlc3Npb246OmNoZWNrVExTRXJyb3JzKHVybCwgY2Vy
dGlmaWNhdGUsIHRsc0Vycm9ycyk7CisgICAgYXV0byBlcnJvciA9IFNvdXBOZXR3b3JrU2Vzc2lv
bjo6Y2hlY2tUTFNFcnJvcnMobV9jdXJyZW50UmVxdWVzdC51cmwoKSwgY2VydGlmaWNhdGUsIHRs
c0Vycm9ycyk7CiAgICAgaWYgKCFlcnJvcikKICAgICAgICAgcmV0dXJuIHRydWU7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc291cC9OZXR3b3JrRGF0YVRhc2tT
b3VwLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3NvdXAvTmV0d29ya0RhdGFUYXNr
U291cC5oCmluZGV4IDFjYTQ1MDdjYWRhNS4uM2E3YzZlYjAxYTQ0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3NvdXAvTmV0d29ya0RhdGFUYXNrU291cC5oCisrKyBi
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc291cC9OZXR3b3JrRGF0YVRhc2tTb3VwLmgK
QEAgLTI2LDYgKzI2LDcgQEAKICNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSAiTmV0d29ya0RhdGFU
YXNrLmgiCisjaW5jbHVkZSAiTmV0d29ya0xvYWRQYXJhbWV0ZXJzLmgiCiAjaW5jbHVkZSA8V2Vi
Q29yZS9GcmFtZUlkZW50aWZpZXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL05ldHdvcmtMb2FkTWV0
cmljcy5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUGFnZUlkZW50aWZpZXIuaD4KQEAgLTM4LDE1ICsz
OSwxNSBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIAogY2xhc3MgTmV0d29ya0RhdGFUYXNrU291cCBm
aW5hbCA6IHB1YmxpYyBOZXR3b3JrRGF0YVRhc2sgewogcHVibGljOgotICAgIHN0YXRpYyBSZWY8
TmV0d29ya0RhdGFUYXNrPiBjcmVhdGUoTmV0d29ya1Nlc3Npb24mIHNlc3Npb24sIE5ldHdvcmtE
YXRhVGFza0NsaWVudCYgY2xpZW50LCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIHJl
cXVlc3QsIFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBXZWJDb3JlOjpQYWdlSWRl
bnRpZmllciBwYWdlSUQsIFdlYkNvcmU6OlN0b3JlZENyZWRlbnRpYWxzUG9saWN5IHN0b3JlZENy
ZWRlbnRpYWxzUG9saWN5LCBXZWJDb3JlOjpDb250ZW50U25pZmZpbmdQb2xpY3kgc2hvdWxkQ29u
dGVudFNuaWZmLCBXZWJDb3JlOjpDb250ZW50RW5jb2RpbmdTbmlmZmluZ1BvbGljeSBzaG91bGRD
b250ZW50RW5jb2RpbmdTbmlmZiwgYm9vbCBzaG91bGRDbGVhclJlZmVycmVyT25IVFRQU1RvSFRU
UFJlZGlyZWN0LCBib29sIGRhdGFUYXNrSXNGb3JNYWluRnJhbWVOYXZpZ2F0aW9uKQorICAgIHN0
YXRpYyBSZWY8TmV0d29ya0RhdGFUYXNrPiBjcmVhdGUoTmV0d29ya1Nlc3Npb24mIHNlc3Npb24s
IE5ldHdvcmtEYXRhVGFza0NsaWVudCYgY2xpZW50LCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJl
cXVlc3QmIHJlcXVlc3QsIFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBXZWJDb3Jl
OjpQYWdlSWRlbnRpZmllciBwYWdlSUQsIFdlYkNvcmU6OlN0b3JlZENyZWRlbnRpYWxzUG9saWN5
IHN0b3JlZENyZWRlbnRpYWxzUG9saWN5LCBXZWJDb3JlOjpDb250ZW50U25pZmZpbmdQb2xpY3kg
c2hvdWxkQ29udGVudFNuaWZmLCBXZWJDb3JlOjpDb250ZW50RW5jb2RpbmdTbmlmZmluZ1BvbGlj
eSBzaG91bGRDb250ZW50RW5jb2RpbmdTbmlmZiwgYm9vbCBzaG91bGRDbGVhclJlZmVycmVyT25I
VFRQU1RvSFRUUFJlZGlyZWN0LCBQcmVjb25uZWN0T25seSBzaG91bGRQcmVjb25uZWN0T25seSwg
Ym9vbCBkYXRhVGFza0lzRm9yTWFpbkZyYW1lTmF2aWdhdGlvbikKICAgICB7Ci0gICAgICAgIHJl
dHVybiBhZG9wdFJlZigqbmV3IE5ldHdvcmtEYXRhVGFza1NvdXAoc2Vzc2lvbiwgY2xpZW50LCBy
ZXF1ZXN0LCBmcmFtZUlELCBwYWdlSUQsIHN0b3JlZENyZWRlbnRpYWxzUG9saWN5LCBzaG91bGRD
b250ZW50U25pZmYsIHNob3VsZENvbnRlbnRFbmNvZGluZ1NuaWZmLCBzaG91bGRDbGVhclJlZmVy
cmVyT25IVFRQU1RvSFRUUFJlZGlyZWN0LCBkYXRhVGFza0lzRm9yTWFpbkZyYW1lTmF2aWdhdGlv
bikpOworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBOZXR3b3JrRGF0YVRhc2tTb3VwKHNl
c3Npb24sIGNsaWVudCwgcmVxdWVzdCwgZnJhbWVJRCwgcGFnZUlELCBzdG9yZWRDcmVkZW50aWFs
c1BvbGljeSwgc2hvdWxkQ29udGVudFNuaWZmLCBzaG91bGRDb250ZW50RW5jb2RpbmdTbmlmZiwg
c2hvdWxkQ2xlYXJSZWZlcnJlck9uSFRUUFNUb0hUVFBSZWRpcmVjdCwgc2hvdWxkUHJlY29ubmVj
dE9ubHksIGRhdGFUYXNrSXNGb3JNYWluRnJhbWVOYXZpZ2F0aW9uKSk7CiAgICAgfQogCiAgICAg
fk5ldHdvcmtEYXRhVGFza1NvdXAoKTsKIAogcHJpdmF0ZToKLSAgICBOZXR3b3JrRGF0YVRhc2tT
b3VwKE5ldHdvcmtTZXNzaW9uJiwgTmV0d29ya0RhdGFUYXNrQ2xpZW50JiwgY29uc3QgV2ViQ29y
ZTo6UmVzb3VyY2VSZXF1ZXN0JiwgV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyLCBXZWJDb3JlOjpQ
YWdlSWRlbnRpZmllciwgV2ViQ29yZTo6U3RvcmVkQ3JlZGVudGlhbHNQb2xpY3ksIFdlYkNvcmU6
OkNvbnRlbnRTbmlmZmluZ1BvbGljeSwgV2ViQ29yZTo6Q29udGVudEVuY29kaW5nU25pZmZpbmdQ
b2xpY3ksIGJvb2wgc2hvdWxkQ2xlYXJSZWZlcnJlck9uSFRUUFNUb0hUVFBSZWRpcmVjdCwgYm9v
bCBkYXRhVGFza0lzRm9yTWFpbkZyYW1lTmF2aWdhdGlvbik7CisgICAgTmV0d29ya0RhdGFUYXNr
U291cChOZXR3b3JrU2Vzc2lvbiYsIE5ldHdvcmtEYXRhVGFza0NsaWVudCYsIGNvbnN0IFdlYkNv
cmU6OlJlc291cmNlUmVxdWVzdCYsIFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciwgV2ViQ29yZTo6
UGFnZUlkZW50aWZpZXIsIFdlYkNvcmU6OlN0b3JlZENyZWRlbnRpYWxzUG9saWN5LCBXZWJDb3Jl
OjpDb250ZW50U25pZmZpbmdQb2xpY3ksIFdlYkNvcmU6OkNvbnRlbnRFbmNvZGluZ1NuaWZmaW5n
UG9saWN5LCBib29sIHNob3VsZENsZWFyUmVmZXJyZXJPbkhUVFBTVG9IVFRQUmVkaXJlY3QsIFBy
ZWNvbm5lY3RPbmx5IHNob3VsZFByZWNvbm5lY3RPbmx5LCBib29sIGRhdGFUYXNrSXNGb3JNYWlu
RnJhbWVOYXZpZ2F0aW9uKTsKIAogICAgIHZvaWQgY2FuY2VsKCkgb3ZlcnJpZGU7CiAgICAgdm9p
ZCByZXN1bWUoKSBvdmVycmlkZTsKQEAgLTYzLDYgKzY0LDcgQEAgcHJpdmF0ZToKICAgICBlbnVt
IGNsYXNzIFdhc0Jsb2NraW5nQ29va2llcyB7IE5vLCBZZXMgfTsKICAgICB2b2lkIGNyZWF0ZVJl
cXVlc3QoV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIFdhc0Jsb2NraW5nQ29va2llcyk7CiAg
ICAgdm9pZCBjbGVhclJlcXVlc3QoKTsKKyAgICBzdGF0aWMgdm9pZCBwcmVjb25uZWN0Q2FsbGJh
Y2soU291cFNlc3Npb24qLCBHQXN5bmNSZXN1bHQqLCBOZXR3b3JrRGF0YVRhc2tTb3VwKik7CiAg
ICAgc3RhdGljIHZvaWQgc2VuZFJlcXVlc3RDYWxsYmFjayhTb3VwUmVxdWVzdCosIEdBc3luY1Jl
c3VsdCosIE5ldHdvcmtEYXRhVGFza1NvdXAqKTsKICAgICB2b2lkIGRpZFNlbmRSZXF1ZXN0KEdS
ZWZQdHI8R0lucHV0U3RyZWFtPiYmKTsKICAgICB2b2lkIGRpc3BhdGNoRGlkUmVjZWl2ZVJlc3Bv
bnNlKCk7CkBAIC0xMzAsNiArMTMyLDcgQEAgcHJpdmF0ZToKICAgICBXZWJDb3JlOjpQYWdlSWRl
bnRpZmllciBtX3BhZ2VJRDsKICAgICBTdGF0ZSBtX3N0YXRlIHsgU3RhdGU6OlN1c3BlbmRlZCB9
OwogICAgIFdlYkNvcmU6OkNvbnRlbnRTbmlmZmluZ1BvbGljeSBtX3Nob3VsZENvbnRlbnRTbmlm
ZjsKKyAgICBQcmVjb25uZWN0T25seSBtX3Nob3VsZFByZWNvbm5lY3RPbmx5IHsgUHJlY29ubmVj
dE9ubHk6Ok5vIH07CiAgICAgR1JlZlB0cjxTb3VwUmVxdWVzdD4gbV9zb3VwUmVxdWVzdDsKICAg
ICBHUmVmUHRyPFNvdXBNZXNzYWdlPiBtX3NvdXBNZXNzYWdlOwogICAgIEdSZWZQdHI8R0lucHV0
U3RyZWFtPiBtX2lucHV0U3RyZWFtOwpkaWZmIC0tZ2l0IGEvU291cmNlL2NtYWtlL09wdGlvbnNH
VEsuY21ha2UgYi9Tb3VyY2UvY21ha2UvT3B0aW9uc0dUSy5jbWFrZQppbmRleCA3NGYwYzllOGM3
NmQuLjA5ZWE3MzczZTRjMiAxMDA2NDQKLS0tIGEvU291cmNlL2NtYWtlL09wdGlvbnNHVEsuY21h
a2UKKysrIGIvU291cmNlL2NtYWtlL09wdGlvbnNHVEsuY21ha2UKQEAgLTE0OCw2ICsxNDgsMTEg
QEAgaWYgKCgiJHtQQ19DQUlST19WRVJTSU9OfSIgVkVSU0lPTl9HUkVBVEVSICIxLjE2LjAiIE9S
ICIke1BDX0NBSVJPX1ZFUlNJT059IiBTVFIKICAgICBXRUJLSVRfT1BUSU9OX0RFRkFVTFRfUE9S
VF9WQUxVRShFTkFCTEVfVkFSSUFUSU9OX0ZPTlRTIFBSSVZBVEUgT04pCiBlbmRpZiAoKQogCisj
IEVuYWJsZSBwcmVjb25uZWN0IHdoZW4gbGlic291cCA+PSAyLjczLjAuCitpZiAoIiR7UENfTElC
U09VUF9WRVJTSU9OfSIgVkVSU0lPTl9HUkVBVEVSICIyLjczLjAiIE9SICIke1BDX0xJQlNPVVBf
VkVSU0lPTn0iIFNUUkVRVUFMICIyLjczLjAiKQorICAgIFdFQktJVF9PUFRJT05fREVGQVVMVF9Q
T1JUX1ZBTFVFKEVOQUJMRV9TRVJWRVJfUFJFQ09OTkVDVCBQUklWQVRFIE9OKQorZW5kaWYgKCkK
KwogIyBQdWJsaWMgb3B0aW9ucyBzaGFyZWQgd2l0aCBvdGhlciBXZWJLaXQgcG9ydHMuIERvIG5v
dCBhZGQgYW55IG9wdGlvbnMgaGVyZQogIyB3aXRob3V0IGFwcHJvdmFsIGZyb20gYSBHVEsgcmV2
aWV3ZXIuIFRoZXJlIG11c3QgYmUgc3Ryb25nIHJlYXNvbiB0byBzdXBwb3J0CiAjIGNoYW5naW5n
IHRoZSB2YWx1ZSBvZiB0aGUgb3B0aW9uLgpkaWZmIC0tZ2l0IGEvU291cmNlL2NtYWtlL09wdGlv
bnNXUEUuY21ha2UgYi9Tb3VyY2UvY21ha2UvT3B0aW9uc1dQRS5jbWFrZQppbmRleCBjYzNhNDI5
MGViMjQuLmJhZjZlNGQ4MjQyYiAxMDA2NDQKLS0tIGEvU291cmNlL2NtYWtlL09wdGlvbnNXUEUu
Y21ha2UKKysrIGIvU291cmNlL2NtYWtlL09wdGlvbnNXUEUuY21ha2UKQEAgLTEyMCw2ICsxMjAs
MTEgQEAgaWYgKCgiJHtQQ19DQUlST19WRVJTSU9OfSIgVkVSU0lPTl9HUkVBVEVSICIxLjE2LjAi
IE9SICIke1BDX0NBSVJPX1ZFUlNJT059IiBTVFIKICAgICBXRUJLSVRfT1BUSU9OX0RFRkFVTFRf
UE9SVF9WQUxVRShFTkFCTEVfVkFSSUFUSU9OX0ZPTlRTIFBSSVZBVEUgT04pCiBlbmRpZiAoKQog
CisjIEVuYWJsZSBwcmVjb25uZWN0IHdoZW4gbGlic291cCA+PSAyLjczLjAuCitpZiAoIiR7UENf
TElCU09VUF9WRVJTSU9OfSIgVkVSU0lPTl9HUkVBVEVSICIyLjczLjAiIE9SICIke1BDX0xJQlNP
VVBfVkVSU0lPTn0iIFNUUkVRVUFMICIyLjczLjAiKQorICAgIFdFQktJVF9PUFRJT05fREVGQVVM
VF9QT1JUX1ZBTFVFKEVOQUJMRV9TRVJWRVJfUFJFQ09OTkVDVCBQUklWQVRFIE9OKQorZW5kaWYg
KCkKKwogV0VCS0lUX09QVElPTl9ERVBFTkQoVVNFX0dTVFJFQU1FUl9IT0xFUFVOQ0ggRU5BQkxF
X1ZJREVPKQogV0VCS0lUX09QVElPTl9ERVBFTkQoVVNFX0VYVEVSTkFMX0hPTEVQVU5DSCBFTkFC
TEVfVklERU8pCiAK
</data>
<flag name="review"
          id="423720"
          type_id="1"
          status="+"
          setter="svillar"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>426541</attachid>
            <date>2021-04-20 05:49:12 -0700</date>
            <delta_ts>2021-04-22 05:13:32 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>wk2-preconnect.diff</filename>
            <type>text/plain</type>
            <size>15199</size>
            <attacher name="Carlos Garcia Campos">cgarcia</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0NoYW5nZUxvZyBiL0NoYW5nZUxvZwppbmRleCA2ZGQ0MGM1MTgxYzguLjM1
NDJhMDAwNmViMSAxMDA2NDQKLS0tIGEvQ2hhbmdlTG9nCisrKyBiL0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDE1IEBACisyMDIxLTA0LTIwICBDYXJsb3MgR2FyY2lhIENhbXBvcyAgPGNnYXJjaWFAaWdh
bGlhLmNvbT4KKworICAgICAgICBbU09VUF0gQWRkIHN1cHBvcnQgZm9yIHByZWNvbm5lY3QKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3NzkzNAorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEVuYWJsZSBzZXJ2
ZXIgcHJlY29ubmVjdCBzdXBwb3J0IHdoZW4gYnVpbGRpbmcgd2l0aCBsaWJzb3VwMy4KKworICAg
ICAgICAqIFNvdXJjZS9jbWFrZS9PcHRpb25zR1RLLmNtYWtlOgorICAgICAgICAqIFNvdXJjZS9j
bWFrZS9PcHRpb25zV1BFLmNtYWtlOgorCiAyMDIxLTA0LTIwICBDYXJsb3MgR2FyY2lhIENhbXBv
cyAgPGNnYXJjaWFAaWdhbGlhLmNvbT4KIAogICAgICAgICBbV1BFXSBTd2l0Y2ggdG8gbGlic291
cDMgYnkgZGVmYXVsdApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0
VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDg5NTE4MGJkYzM3My4uODdlMTNmYTA1ZWNkIDEwMDY0NAot
LS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMTQgQEAKKzIwMjEtMDQtMjAgIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNp
YUBpZ2FsaWEuY29tPgorCisgICAgICAgIFtTT1VQXSBBZGQgc3VwcG9ydCBmb3IgcHJlY29ubmVj
dAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc3OTM0
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUmVtb3Zl
IGV4cGVjdGF0aW9ucyBmb3IgdGVzdHMgdGhhdCBhcmUgbm93IHBhc3NpbmcuCisKKyAgICAgICAg
KiBwbGF0Zm9ybS9nbGliL1Rlc3RFeHBlY3RhdGlvbnM6CisKIDIwMjEtMDQtMjAgIFRpbSBOZ3V5
ZW4gIDxudGltQGFwcGxlLmNvbT4KIAogICAgICAgICBJbXBsZW1lbnQgQ1NTIGRpc3BsYXkgcHJv
cGVydHkgMi12YWx1ZSBzeW50YXgKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2ds
aWIvVGVzdEV4cGVjdGF0aW9ucyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2dsaWIvVGVzdEV4cGVj
dGF0aW9ucwppbmRleCA1YTM0MjJjNzBjMjAuLmU4MWQ4MzkzMmI4NiAxMDA2NDQKLS0tIGEvTGF5
b3V0VGVzdHMvcGxhdGZvcm0vZ2xpYi9UZXN0RXhwZWN0YXRpb25zCisrKyBiL0xheW91dFRlc3Rz
L3BsYXRmb3JtL2dsaWIvVGVzdEV4cGVjdGF0aW9ucwpAQCAtMjAwMiwxMCArMjAwMiw2IEBAIHdl
YmtpdC5vcmcvYi8xNzY2NDggc3ZnL3RyYW5zZm9ybXMvdHJhbnNmb3JtZWQtdGV4dC1maWxsLWdy
YWRpZW50Lmh0bWwgWyBJbWFnZU9uCiB3ZWJraXQub3JnL2IvMTc2NjQ5IGZhc3QvdGV4dC9pbnRl
cm5hdGlvbmFsL3N5bnRoZXNpemVkLWl0YWxpYy12ZXJ0aWNhbC5odG1sIFsgSW1hZ2VPbmx5RmFp
bHVyZSBdCiB3ZWJraXQub3JnL2IvMTc3Mjk0IGZhc3QvdGV4dC9maXR6cGF0cmljay1jb21iaW5h
dGlvbi5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCiB3ZWJraXQub3JnL2IvMTc3NTMzIHdlYnJ0
Yy92aWRlby1pbnRlcnJ1cHRpb24uaHRtbAotd2Via2l0Lm9yZy9iLzE3NzkzNCBmYXN0L2RvbS9I
VE1MTGlua0VsZW1lbnQvcHJlY29ubmVjdC1zdXBwb3J0Lmh0bWwgWyBGYWlsdXJlIF0KLXdlYmtp
dC5vcmcvYi8xNzc5MzQgaHR0cC90ZXN0cy9wcmVjb25uZWN0L2xpbmstaGVhZGVyLXJlbC1wcmVj
b25uZWN0LWh0dHAuaHRtbCBbIEZhaWx1cmUgXQotd2Via2l0Lm9yZy9iLzE3NzkzNCBodHRwL3Rl
c3RzL3ByZWNvbm5lY3QvbGluay1yZWwtcHJlY29ubmVjdC1odHRwLmh0bWwgWyBUaW1lb3V0IF0K
LXdlYmtpdC5vcmcvYi8xNzc5MzQgaHR0cC90ZXN0cy9wcmVjb25uZWN0L2xpbmstcmVsLXByZWNv
bm5lY3QtaHR0cHMuaHRtbCBbIFRpbWVvdXQgXQogd2Via2l0Lm9yZy9iLzE3NzkzNiBmYXN0L3Rl
eHQvYWxsLXNtYWxsLWNhcHMtd2hpdGVzcGFjZS5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCiB3
ZWJraXQub3JnL2IvMTc3OTM2IGZhc3QvdGV4dC9yZWdpb25hbC1pbmRpY2F0b3Itc3ltb2Jscy5o
dG1sIFsgRmFpbHVyZSBdCiB3ZWJraXQub3JnL2IvMTc3OTM2IGZhc3QvdGV4dC9zZWxlY3Rpb24t
aW4taW5pdGlhbC1hZHZhbmNlLXJlZ2lvbi5odG1sIFsgRmFpbHVyZSBdCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDVi
ZWNiZmZlNzRkNC4uMjE2MTcxZGJkZDNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5n
ZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDIxIEBACisyMDIx
LTA0LTIwICBDYXJsb3MgR2FyY2lhIENhbXBvcyAgPGNnYXJjaWFAaWdhbGlhLmNvbT4KKworICAg
ICAgICBbU09VUF0gQWRkIHN1cHBvcnQgZm9yIHByZWNvbm5lY3QKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3NzkzNAorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFVzZSBuZXcgbGlic291cCBBUEkgdG8gaW1w
bGVtZW50IHByZWNvbm5lY3Qgc3VwcG9ydC4KKworICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05l
dHdvcmtEYXRhVGFzay5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtEYXRhVGFzazo6Y3Jl
YXRlKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9zb3VwL05ldHdvcmtEYXRhVGFza1NvdXAu
Y3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrRGF0YVRhc2tTb3VwOjpOZXR3b3JrRGF0YVRh
c2tTb3VwKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0RhdGFUYXNrU291cDo6Y3JlYXRlUmVx
dWVzdCk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtEYXRhVGFza1NvdXA6OnJlc3VtZSk6Cisg
ICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtEYXRhVGFza1NvdXA6OnByZWNvbm5lY3RDYWxsYmFjayk6
CisgICAgICAgICogTmV0d29ya1Byb2Nlc3Mvc291cC9OZXR3b3JrRGF0YVRhc2tTb3VwLmg6CisK
IDIwMjEtMDQtMjAgIEtpbW1vIEtpbm51bmVuICA8a2tpbm51bmVuQGFwcGxlLmNvbT4KIAogICAg
ICAgICBSRUdSRVNTSU9OKHIyMjQ1MTYpOiBSZW1vdGUgV2ViR0wgQ29udGV4dCBpcyBub3QgY3Jl
YXRlIGR1ZSB0byBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kIG5vdCBiZWluZyBjcmVhdGVkCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtEYXRhVGFzay5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtEYXRhVGFzay5jcHAKaW5kZXgg
MWRlZWFjNTM0ZTRmLi4xYzkwNWQ5YTkzNTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvTmV0d29ya0RhdGFUYXNrLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL05ldHdvcmtEYXRhVGFzay5jcHAKQEAgLTU3LDcgKzU3LDcgQEAgUmVmPE5ldHdv
cmtEYXRhVGFzaz4gTmV0d29ya0RhdGFUYXNrOjpjcmVhdGUoTmV0d29ya1Nlc3Npb24mIHNlc3Np
b24sIE5ldHdvcmtEYXQKICAgICByZXR1cm4gTmV0d29ya0RhdGFUYXNrQ29jb2E6OmNyZWF0ZShz
ZXNzaW9uLCBjbGllbnQsIHBhcmFtZXRlcnMucmVxdWVzdCwgcGFyYW1ldGVycy53ZWJGcmFtZUlE
LCBwYXJhbWV0ZXJzLndlYlBhZ2VJRCwgcGFyYW1ldGVycy53ZWJQYWdlUHJveHlJRCwgIHBhcmFt
ZXRlcnMuc3RvcmVkQ3JlZGVudGlhbHNQb2xpY3ksIHBhcmFtZXRlcnMuY29udGVudFNuaWZmaW5n
UG9saWN5LCBwYXJhbWV0ZXJzLmNvbnRlbnRFbmNvZGluZ1NuaWZmaW5nUG9saWN5LCBwYXJhbWV0
ZXJzLnNob3VsZENsZWFyUmVmZXJyZXJPbkhUVFBTVG9IVFRQUmVkaXJlY3QsIHBhcmFtZXRlcnMu
c2hvdWxkUHJlY29ubmVjdE9ubHksIHBhcmFtZXRlcnMuaXNNYWluRnJhbWVOYXZpZ2F0aW9uLCBw
YXJhbWV0ZXJzLmlzTWFpblJlc291cmNlTmF2aWdhdGlvbkZvckFueUZyYW1lLCBwYXJhbWV0ZXJz
Lm5ldHdvcmtBY3Rpdml0eVRyYWNrZXIsIHBhcmFtZXRlcnMuaXNOYXZpZ2F0aW5nVG9BcHBCb3Vu
ZERvbWFpbiwgcGFyYW1ldGVycy5zaG91bGRSZWxheFRoaXJkUGFydHlDb29raWVCbG9ja2luZywg
cGFyYW1ldGVycy5wY21EYXRhQ2FycmllZCk7CiAjZW5kaWYKICNpZiBVU0UoU09VUCkKLSAgICBy
ZXR1cm4gTmV0d29ya0RhdGFUYXNrU291cDo6Y3JlYXRlKHNlc3Npb24sIGNsaWVudCwgcGFyYW1l
dGVycy5yZXF1ZXN0LCBwYXJhbWV0ZXJzLndlYkZyYW1lSUQsIHBhcmFtZXRlcnMud2ViUGFnZUlE
LCBwYXJhbWV0ZXJzLnN0b3JlZENyZWRlbnRpYWxzUG9saWN5LCBwYXJhbWV0ZXJzLmNvbnRlbnRT
bmlmZmluZ1BvbGljeSwgcGFyYW1ldGVycy5jb250ZW50RW5jb2RpbmdTbmlmZmluZ1BvbGljeSwg
cGFyYW1ldGVycy5zaG91bGRDbGVhclJlZmVycmVyT25IVFRQU1RvSFRUUFJlZGlyZWN0LCBwYXJh
bWV0ZXJzLmlzTWFpbkZyYW1lTmF2aWdhdGlvbik7CisgICAgcmV0dXJuIE5ldHdvcmtEYXRhVGFz
a1NvdXA6OmNyZWF0ZShzZXNzaW9uLCBjbGllbnQsIHBhcmFtZXRlcnMucmVxdWVzdCwgcGFyYW1l
dGVycy53ZWJGcmFtZUlELCBwYXJhbWV0ZXJzLndlYlBhZ2VJRCwgcGFyYW1ldGVycy5zdG9yZWRD
cmVkZW50aWFsc1BvbGljeSwgcGFyYW1ldGVycy5jb250ZW50U25pZmZpbmdQb2xpY3ksIHBhcmFt
ZXRlcnMuY29udGVudEVuY29kaW5nU25pZmZpbmdQb2xpY3ksIHBhcmFtZXRlcnMuc2hvdWxkQ2xl
YXJSZWZlcnJlck9uSFRUUFNUb0hUVFBSZWRpcmVjdCwgcGFyYW1ldGVycy5zaG91bGRQcmVjb25u
ZWN0T25seSwgcGFyYW1ldGVycy5pc01haW5GcmFtZU5hdmlnYXRpb24pOwogI2VuZGlmCiAjaWYg
VVNFKENVUkwpCiAgICAgcmV0dXJuIE5ldHdvcmtEYXRhVGFza0N1cmw6OmNyZWF0ZShzZXNzaW9u
LCBjbGllbnQsIHBhcmFtZXRlcnMucmVxdWVzdCwgcGFyYW1ldGVycy53ZWJGcmFtZUlELCBwYXJh
bWV0ZXJzLndlYlBhZ2VJRCwgcGFyYW1ldGVycy5zdG9yZWRDcmVkZW50aWFsc1BvbGljeSwgcGFy
YW1ldGVycy5jb250ZW50U25pZmZpbmdQb2xpY3ksIHBhcmFtZXRlcnMuY29udGVudEVuY29kaW5n
U25pZmZpbmdQb2xpY3ksIHBhcmFtZXRlcnMuc2hvdWxkQ2xlYXJSZWZlcnJlck9uSFRUUFNUb0hU
VFBSZWRpcmVjdCwgcGFyYW1ldGVycy5pc01haW5GcmFtZU5hdmlnYXRpb24sIHBhcmFtZXRlcnMu
c2hvdWxkUmVsYXhUaGlyZFBhcnR5Q29va2llQmxvY2tpbmcpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zb3VwL05ldHdvcmtEYXRhVGFza1NvdXAuY3BwIGIvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zb3VwL05ldHdvcmtEYXRhVGFza1NvdXAuY3BwCmlu
ZGV4IDBkNjkwYmViNzdhOC4uZWNjOTZiYTFiZWRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL3NvdXAvTmV0d29ya0RhdGFUYXNrU291cC5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zb3VwL05ldHdvcmtEYXRhVGFza1NvdXAuY3BwCkBAIC01
MywxMSArNTMsMTIgQEAgdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKIHN0YXRpYyBjb25zdCBz
aXplX3QgZ0RlZmF1bHRSZWFkQnVmZmVyU2l6ZSA9IDgxOTI7CiAKLU5ldHdvcmtEYXRhVGFza1Nv
dXA6Ok5ldHdvcmtEYXRhVGFza1NvdXAoTmV0d29ya1Nlc3Npb24mIHNlc3Npb24sIE5ldHdvcmtE
YXRhVGFza0NsaWVudCYgY2xpZW50LCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3RXaXRo
Q3JlZGVudGlhbHMsIEZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBQYWdlSWRlbnRpZmllciBwYWdl
SUQsIFN0b3JlZENyZWRlbnRpYWxzUG9saWN5IHN0b3JlZENyZWRlbnRpYWxzUG9saWN5LCBDb250
ZW50U25pZmZpbmdQb2xpY3kgc2hvdWxkQ29udGVudFNuaWZmLCBXZWJDb3JlOjpDb250ZW50RW5j
b2RpbmdTbmlmZmluZ1BvbGljeSwgYm9vbCBzaG91bGRDbGVhclJlZmVycmVyT25IVFRQU1RvSFRU
UFJlZGlyZWN0LCBib29sIGRhdGFUYXNrSXNGb3JNYWluRnJhbWVOYXZpZ2F0aW9uKQorTmV0d29y
a0RhdGFUYXNrU291cDo6TmV0d29ya0RhdGFUYXNrU291cChOZXR3b3JrU2Vzc2lvbiYgc2Vzc2lv
biwgTmV0d29ya0RhdGFUYXNrQ2xpZW50JiBjbGllbnQsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYg
cmVxdWVzdFdpdGhDcmVkZW50aWFscywgRnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIFBhZ2VJZGVu
dGlmaWVyIHBhZ2VJRCwgU3RvcmVkQ3JlZGVudGlhbHNQb2xpY3kgc3RvcmVkQ3JlZGVudGlhbHNQ
b2xpY3ksIENvbnRlbnRTbmlmZmluZ1BvbGljeSBzaG91bGRDb250ZW50U25pZmYsIFdlYkNvcmU6
OkNvbnRlbnRFbmNvZGluZ1NuaWZmaW5nUG9saWN5LCBib29sIHNob3VsZENsZWFyUmVmZXJyZXJP
bkhUVFBTVG9IVFRQUmVkaXJlY3QsIFByZWNvbm5lY3RPbmx5IHNob3VsZFByZWNvbm5lY3RPbmx5
LCBib29sIGRhdGFUYXNrSXNGb3JNYWluRnJhbWVOYXZpZ2F0aW9uKQogICAgIDogTmV0d29ya0Rh
dGFUYXNrKHNlc3Npb24sIGNsaWVudCwgcmVxdWVzdFdpdGhDcmVkZW50aWFscywgc3RvcmVkQ3Jl
ZGVudGlhbHNQb2xpY3ksIHNob3VsZENsZWFyUmVmZXJyZXJPbkhUVFBTVG9IVFRQUmVkaXJlY3Qs
IGRhdGFUYXNrSXNGb3JNYWluRnJhbWVOYXZpZ2F0aW9uKQogICAgICwgbV9mcmFtZUlEKGZyYW1l
SUQpCiAgICAgLCBtX3BhZ2VJRChwYWdlSUQpCiAgICAgLCBtX3Nob3VsZENvbnRlbnRTbmlmZihz
aG91bGRDb250ZW50U25pZmYpCisgICAgLCBtX3Nob3VsZFByZWNvbm5lY3RPbmx5KHNob3VsZFBy
ZWNvbm5lY3RPbmx5KQogICAgICwgbV90aW1lb3V0U291cmNlKFJ1bkxvb3A6Om1haW4oKSwgdGhp
cywgJk5ldHdvcmtEYXRhVGFza1NvdXA6OnRpbWVvdXRGaXJlZCkKIHsKICAgICBtX3Nlc3Npb24t
PnJlZ2lzdGVyTmV0d29ya0RhdGFUYXNrKCp0aGlzKTsKQEAgLTEzMCw2ICsxMzEsMTMgQEAgdm9p
ZCBOZXR3b3JrRGF0YVRhc2tTb3VwOjpjcmVhdGVSZXF1ZXN0KFJlc291cmNlUmVxdWVzdCYmIHJl
cXVlc3QsIFdhc0Jsb2NraW5nQ28KICAgICAgICAgcmV0dXJuOwogICAgIH0KIAorICAgIGlmICht
X3Nob3VsZFByZWNvbm5lY3RPbmx5ID09IFByZWNvbm5lY3RPbmx5OjpZZXMpIHsKKyNpZiAhVVNF
KFNPVVAyKQorICAgICAgICBnX3NpZ25hbF9jb25uZWN0KG1fc291cE1lc3NhZ2UuZ2V0KCksICJh
Y2NlcHQtY2VydGlmaWNhdGUiLCBHX0NBTExCQUNLKGFjY2VwdENlcnRpZmljYXRlQ2FsbGJhY2sp
LCB0aGlzKTsKKyNlbmRpZgorICAgICAgICByZXR1cm47CisgICAgfQorCiAgICAgdW5zaWduZWQg
bWVzc2FnZUZsYWdzID0gU09VUF9NRVNTQUdFX05PX1JFRElSRUNUOwogICAgIGlmIChtX3Nob3Vs
ZENvbnRlbnRTbmlmZiA9PSBDb250ZW50U25pZmZpbmdQb2xpY3k6OkRvTm90U25pZmZDb250ZW50
KQogICAgICAgICBzb3VwX21lc3NhZ2VfZGlzYWJsZV9mZWF0dXJlKG1fc291cE1lc3NhZ2UuZ2V0
KCksIFNPVVBfVFlQRV9DT05URU5UX1NOSUZGRVIpOwpAQCAtMjQ0LDExICsyNTIsMjAgQEAgdm9p
ZCBOZXR3b3JrRGF0YVRhc2tTb3VwOjpyZXN1bWUoKQogICAgIFJlZlB0cjxOZXR3b3JrRGF0YVRh
c2tTb3VwPiBwcm90ZWN0ZWRUaGlzKHRoaXMpOwogICAgIGlmIChtX3NvdXBNZXNzYWdlICYmICFt
X2NhbmNlbGxhYmxlKSB7CiAgICAgICAgIG1fY2FuY2VsbGFibGUgPSBhZG9wdEdSZWYoZ19jYW5j
ZWxsYWJsZV9uZXcoKSk7Ci0gICAgICAgIC8vIFdlIG5lZWQgdG8gcHJvdGVjdCBjYW5jZWxsYWJs
ZSBoZXJlLCBiZWNhdXNlIHNvdXBfc2Vzc2lvbl9zZW5kX2FzeW5jIHVzZXMgaXQgYWZ0ZXIgZW1p
dHRpbmcgU291cFNlc3Npb246OnJlcXVlc3QtcXVldWVkLCBhbmQgd2UKLSAgICAgICAgLy8gbWln
aHQgY2FuY2VsIHRoZSBvcGVyYXRpb24gaW4gYSBmZWF0dXJlIGNhbGxiYWNrIGVtaXR0ZWQgb24g
cmVxdWVzdC1xdWV1ZWQsIGZvciBleGFtcGxlIGhzdHMtZW5mb3JjZWQuCi0gICAgICAgIEdSZWZQ
dHI8R0NhbmNlbGxhYmxlPiBwcm90ZWN0Q2FuY2VsbGFibGUobV9jYW5jZWxsYWJsZSk7Ci0gICAg
ICAgIHNvdXBfc2Vzc2lvbl9zZW5kX2FzeW5jKHN0YXRpY19jYXN0PE5ldHdvcmtTZXNzaW9uU291
cCY+KCptX3Nlc3Npb24pLnNvdXBTZXNzaW9uKCksIG1fc291cE1lc3NhZ2UuZ2V0KCksIFJ1bkxv
b3BTb3VyY2VQcmlvcml0eTo6QXN5bmNJT05ldHdvcmssIG1fY2FuY2VsbGFibGUuZ2V0KCksCi0g
ICAgICAgICAgICByZWludGVycHJldF9jYXN0PEdBc3luY1JlYWR5Q2FsbGJhY2s+KHNlbmRSZXF1
ZXN0Q2FsbGJhY2spLCBuZXcgU2VuZFJlcXVlc3REYXRhKHsgbV9zb3VwTWVzc2FnZSwgV1RGTW92
ZShwcm90ZWN0ZWRUaGlzKSB9KSk7CisgICAgICAgIGlmIChtX3Nob3VsZFByZWNvbm5lY3RPbmx5
ID09IFByZWNvbm5lY3RPbmx5OjpZZXMpIHsKKyNpZiAhVVNFKFNPVVAyKQorICAgICAgICAgICAg
c291cF9zZXNzaW9uX3ByZWNvbm5lY3RfYXN5bmMoc3RhdGljX2Nhc3Q8TmV0d29ya1Nlc3Npb25T
b3VwJj4oKm1fc2Vzc2lvbikuc291cFNlc3Npb24oKSwgbV9zb3VwTWVzc2FnZS5nZXQoKSwgUnVu
TG9vcFNvdXJjZVByaW9yaXR5OjpBc3luY0lPTmV0d29yaywgbV9jYW5jZWxsYWJsZS5nZXQoKSwK
KyAgICAgICAgICAgICAgICByZWludGVycHJldF9jYXN0PEdBc3luY1JlYWR5Q2FsbGJhY2s+KHBy
ZWNvbm5lY3RDYWxsYmFjayksIHByb3RlY3RlZFRoaXMubGVha1JlZigpKTsKKyNlbHNlCisgICAg
ICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworI2VuZGlmCisgICAgICAgIH0g
ZWxzZSB7CisgICAgICAgICAgICAvLyBXZSBuZWVkIHRvIHByb3RlY3QgY2FuY2VsbGFibGUgaGVy
ZSwgYmVjYXVzZSBzb3VwX3Nlc3Npb25fc2VuZF9hc3luYyB1c2VzIGl0IGFmdGVyIGVtaXR0aW5n
IFNvdXBTZXNzaW9uOjpyZXF1ZXN0LXF1ZXVlZCwgYW5kIHdlCisgICAgICAgICAgICAvLyBtaWdo
dCBjYW5jZWwgdGhlIG9wZXJhdGlvbiBpbiBhIGZlYXR1cmUgY2FsbGJhY2sgZW1pdHRlZCBvbiBy
ZXF1ZXN0LXF1ZXVlZCwgZm9yIGV4YW1wbGUgaHN0cy1lbmZvcmNlZC4KKyAgICAgICAgICAgIEdS
ZWZQdHI8R0NhbmNlbGxhYmxlPiBwcm90ZWN0Q2FuY2VsbGFibGUobV9jYW5jZWxsYWJsZSk7Cisg
ICAgICAgICAgICBzb3VwX3Nlc3Npb25fc2VuZF9hc3luYyhzdGF0aWNfY2FzdDxOZXR3b3JrU2Vz
c2lvblNvdXAmPigqbV9zZXNzaW9uKS5zb3VwU2Vzc2lvbigpLCBtX3NvdXBNZXNzYWdlLmdldCgp
LCBSdW5Mb29wU291cmNlUHJpb3JpdHk6OkFzeW5jSU9OZXR3b3JrLCBtX2NhbmNlbGxhYmxlLmdl
dCgpLAorICAgICAgICAgICAgICAgIHJlaW50ZXJwcmV0X2Nhc3Q8R0FzeW5jUmVhZHlDYWxsYmFj
az4oc2VuZFJlcXVlc3RDYWxsYmFjayksIG5ldyBTZW5kUmVxdWVzdERhdGEoeyBtX3NvdXBNZXNz
YWdlLCBXVEZNb3ZlKHByb3RlY3RlZFRoaXMpIH0pKTsKKyAgICAgICAgfQogICAgICAgICByZXR1
cm47CiAgICAgfQogCkBAIC00NDMsNiArNDYwLDI0IEBAIHZvaWQgTmV0d29ya0RhdGFUYXNrU291
cDo6ZGlzcGF0Y2hEaWRSZWNlaXZlUmVzcG9uc2UoKQogICAgIH0pOwogfQogCisjaWYgIVVTRShT
T1VQMikKK3ZvaWQgTmV0d29ya0RhdGFUYXNrU291cDo6cHJlY29ubmVjdENhbGxiYWNrKFNvdXBT
ZXNzaW9uKiBzZXNzaW9uLCBHQXN5bmNSZXN1bHQqIHJlc3VsdCwgTmV0d29ya0RhdGFUYXNrU291
cCogdGFzaykKK3sKKyAgICBSZWZQdHI8TmV0d29ya0RhdGFUYXNrU291cD4gcHJvdGVjdGVkVGhp
cyA9IGFkb3B0UmVmKHRhc2spOworICAgIGlmICh0YXNrLT5zdGF0ZSgpID09IFN0YXRlOjpDYW5j
ZWxpbmcgfHwgdGFzay0+c3RhdGUoKSA9PSBTdGF0ZTo6Q29tcGxldGVkIHx8ICF0YXNrLT5tX2Ns
aWVudCkgeworICAgICAgICB0YXNrLT5jbGVhclJlcXVlc3QoKTsKKyAgICAgICAgcmV0dXJuOwor
ICAgIH0KKworICAgIFJlc291cmNlRXJyb3IgcmVzb3VyY2VFcnJvcjsKKyAgICBHVW5pcXVlT3V0
UHRyPEdFcnJvcj4gZXJyb3I7CisgICAgaWYgKCFzb3VwX3Nlc3Npb25fcHJlY29ubmVjdF9maW5p
c2goc2Vzc2lvbiwgcmVzdWx0LCAmZXJyb3Iub3V0UHRyKCkpKQorICAgICAgICByZXNvdXJjZUVy
cm9yID0gUmVzb3VyY2VFcnJvcjo6Z2VuZXJpY0dFcnJvcih0YXNrLT5tX2N1cnJlbnRSZXF1ZXN0
LnVybCgpLCBlcnJvci5nZXQoKSk7CisgICAgdGFzay0+Y2xlYXJSZXF1ZXN0KCk7CisgICAgdGFz
ay0+ZGlzcGF0Y2hEaWRDb21wbGV0ZVdpdGhFcnJvcihyZXNvdXJjZUVycm9yKTsKK30KKyNlbmRp
ZgorCiB2b2lkIE5ldHdvcmtEYXRhVGFza1NvdXA6OmRpc3BhdGNoRGlkQ29tcGxldGVXaXRoRXJy
b3IoY29uc3QgUmVzb3VyY2VFcnJvciYgZXJyb3IpCiB7CiAgICAgbV9uZXR3b3JrTG9hZE1ldHJp
Y3MucmVzcG9uc2VFbmQgPSBNb25vdG9uaWNUaW1lOjpub3coKS5zZWNvbmRzU2luY2VFcG9jaCgp
IC0gbV9uZXR3b3JrTG9hZE1ldHJpY3MuZmV0Y2hTdGFydDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc291cC9OZXR3b3JrRGF0YVRhc2tTb3VwLmggYi9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL3NvdXAvTmV0d29ya0RhdGFUYXNrU291cC5oCmluZGV4IDFh
OTZmYjA0OTFiOC4uZmJlOGQzNDRjYmVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL3NvdXAvTmV0d29ya0RhdGFUYXNrU291cC5oCisrKyBiL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3Mvc291cC9OZXR3b3JrRGF0YVRhc2tTb3VwLmgKQEAgLTI2LDYgKzI2LDcg
QEAKICNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSAiTmV0d29ya0RhdGFUYXNrLmgiCisjaW5jbHVk
ZSAiTmV0d29ya0xvYWRQYXJhbWV0ZXJzLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9EYXRhVVJMRGVj
b2Rlci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRnJhbWVJZGVudGlmaWVyLmg+CiAjaW5jbHVkZSA8
V2ViQ29yZS9OZXR3b3JrTG9hZE1ldHJpY3MuaD4KQEAgLTQwLDE1ICs0MSwxNSBAQCBuYW1lc3Bh
Y2UgV2ViS2l0IHsKIAogY2xhc3MgTmV0d29ya0RhdGFUYXNrU291cCBmaW5hbCA6IHB1YmxpYyBO
ZXR3b3JrRGF0YVRhc2sgewogcHVibGljOgotICAgIHN0YXRpYyBSZWY8TmV0d29ya0RhdGFUYXNr
PiBjcmVhdGUoTmV0d29ya1Nlc3Npb24mIHNlc3Npb24sIE5ldHdvcmtEYXRhVGFza0NsaWVudCYg
Y2xpZW50LCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIFdlYkNvcmU6
OkZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciBwYWdlSUQs
IFdlYkNvcmU6OlN0b3JlZENyZWRlbnRpYWxzUG9saWN5IHN0b3JlZENyZWRlbnRpYWxzUG9saWN5
LCBXZWJDb3JlOjpDb250ZW50U25pZmZpbmdQb2xpY3kgc2hvdWxkQ29udGVudFNuaWZmLCBXZWJD
b3JlOjpDb250ZW50RW5jb2RpbmdTbmlmZmluZ1BvbGljeSBzaG91bGRDb250ZW50RW5jb2RpbmdT
bmlmZiwgYm9vbCBzaG91bGRDbGVhclJlZmVycmVyT25IVFRQU1RvSFRUUFJlZGlyZWN0LCBib29s
IGRhdGFUYXNrSXNGb3JNYWluRnJhbWVOYXZpZ2F0aW9uKQorICAgIHN0YXRpYyBSZWY8TmV0d29y
a0RhdGFUYXNrPiBjcmVhdGUoTmV0d29ya1Nlc3Npb24mIHNlc3Npb24sIE5ldHdvcmtEYXRhVGFz
a0NsaWVudCYgY2xpZW50LCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3Qs
IFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBXZWJDb3JlOjpQYWdlSWRlbnRpZmll
ciBwYWdlSUQsIFdlYkNvcmU6OlN0b3JlZENyZWRlbnRpYWxzUG9saWN5IHN0b3JlZENyZWRlbnRp
YWxzUG9saWN5LCBXZWJDb3JlOjpDb250ZW50U25pZmZpbmdQb2xpY3kgc2hvdWxkQ29udGVudFNu
aWZmLCBXZWJDb3JlOjpDb250ZW50RW5jb2RpbmdTbmlmZmluZ1BvbGljeSBzaG91bGRDb250ZW50
RW5jb2RpbmdTbmlmZiwgYm9vbCBzaG91bGRDbGVhclJlZmVycmVyT25IVFRQU1RvSFRUUFJlZGly
ZWN0LCBQcmVjb25uZWN0T25seSBzaG91bGRQcmVjb25uZWN0T25seSwgYm9vbCBkYXRhVGFza0lz
Rm9yTWFpbkZyYW1lTmF2aWdhdGlvbikKICAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZigq
bmV3IE5ldHdvcmtEYXRhVGFza1NvdXAoc2Vzc2lvbiwgY2xpZW50LCByZXF1ZXN0LCBmcmFtZUlE
LCBwYWdlSUQsIHN0b3JlZENyZWRlbnRpYWxzUG9saWN5LCBzaG91bGRDb250ZW50U25pZmYsIHNo
b3VsZENvbnRlbnRFbmNvZGluZ1NuaWZmLCBzaG91bGRDbGVhclJlZmVycmVyT25IVFRQU1RvSFRU
UFJlZGlyZWN0LCBkYXRhVGFza0lzRm9yTWFpbkZyYW1lTmF2aWdhdGlvbikpOworICAgICAgICBy
ZXR1cm4gYWRvcHRSZWYoKm5ldyBOZXR3b3JrRGF0YVRhc2tTb3VwKHNlc3Npb24sIGNsaWVudCwg
cmVxdWVzdCwgZnJhbWVJRCwgcGFnZUlELCBzdG9yZWRDcmVkZW50aWFsc1BvbGljeSwgc2hvdWxk
Q29udGVudFNuaWZmLCBzaG91bGRDb250ZW50RW5jb2RpbmdTbmlmZiwgc2hvdWxkQ2xlYXJSZWZl
cnJlck9uSFRUUFNUb0hUVFBSZWRpcmVjdCwgc2hvdWxkUHJlY29ubmVjdE9ubHksIGRhdGFUYXNr
SXNGb3JNYWluRnJhbWVOYXZpZ2F0aW9uKSk7CiAgICAgfQogCiAgICAgfk5ldHdvcmtEYXRhVGFz
a1NvdXAoKTsKIAogcHJpdmF0ZToKLSAgICBOZXR3b3JrRGF0YVRhc2tTb3VwKE5ldHdvcmtTZXNz
aW9uJiwgTmV0d29ya0RhdGFUYXNrQ2xpZW50JiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1
ZXN0JiwgV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyLCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciwg
V2ViQ29yZTo6U3RvcmVkQ3JlZGVudGlhbHNQb2xpY3ksIFdlYkNvcmU6OkNvbnRlbnRTbmlmZmlu
Z1BvbGljeSwgV2ViQ29yZTo6Q29udGVudEVuY29kaW5nU25pZmZpbmdQb2xpY3ksIGJvb2wgc2hv
dWxkQ2xlYXJSZWZlcnJlck9uSFRUUFNUb0hUVFBSZWRpcmVjdCwgYm9vbCBkYXRhVGFza0lzRm9y
TWFpbkZyYW1lTmF2aWdhdGlvbik7CisgICAgTmV0d29ya0RhdGFUYXNrU291cChOZXR3b3JrU2Vz
c2lvbiYsIE5ldHdvcmtEYXRhVGFza0NsaWVudCYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVx
dWVzdCYsIFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciwgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIs
IFdlYkNvcmU6OlN0b3JlZENyZWRlbnRpYWxzUG9saWN5LCBXZWJDb3JlOjpDb250ZW50U25pZmZp
bmdQb2xpY3ksIFdlYkNvcmU6OkNvbnRlbnRFbmNvZGluZ1NuaWZmaW5nUG9saWN5LCBib29sIHNo
b3VsZENsZWFyUmVmZXJyZXJPbkhUVFBTVG9IVFRQUmVkaXJlY3QsIFByZWNvbm5lY3RPbmx5IHNo
b3VsZFByZWNvbm5lY3RPbmx5LCBib29sIGRhdGFUYXNrSXNGb3JNYWluRnJhbWVOYXZpZ2F0aW9u
KTsKIAogICAgIHZvaWQgY2FuY2VsKCkgb3ZlcnJpZGU7CiAgICAgdm9pZCByZXN1bWUoKSBvdmVy
cmlkZTsKQEAgLTc2LDYgKzc3LDEwIEBAIHByaXZhdGU6CiAgICAgdm9pZCBkaXNwYXRjaERpZFJl
Y2VpdmVSZXNwb25zZSgpOwogICAgIHZvaWQgZGlzcGF0Y2hEaWRDb21wbGV0ZVdpdGhFcnJvcihj
b25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJik7CiAKKyNpZiAhVVNFKFNPVVAyKQorICAgIHN0
YXRpYyB2b2lkIHByZWNvbm5lY3RDYWxsYmFjayhTb3VwU2Vzc2lvbiosIEdBc3luY1Jlc3VsdCos
IE5ldHdvcmtEYXRhVGFza1NvdXAqKTsKKyNlbmRpZgorCiAjaWYgVVNFKFNPVVAyKQogICAgIHN0
YXRpYyBnYm9vbGVhbiB0bHNDb25uZWN0aW9uQWNjZXB0Q2VydGlmaWNhdGVDYWxsYmFjayhHVGxz
Q29ubmVjdGlvbiosIEdUbHNDZXJ0aWZpY2F0ZSosIEdUbHNDZXJ0aWZpY2F0ZUZsYWdzLCBOZXR3
b3JrRGF0YVRhc2tTb3VwKik7CiAjZWxzZQpAQCAtMTY1LDYgKzE3MCw3IEBAIHByaXZhdGU6CiAg
ICAgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgbV9wYWdlSUQ7CiAgICAgU3RhdGUgbV9zdGF0ZSB7
IFN0YXRlOjpTdXNwZW5kZWQgfTsKICAgICBXZWJDb3JlOjpDb250ZW50U25pZmZpbmdQb2xpY3kg
bV9zaG91bGRDb250ZW50U25pZmY7CisgICAgUHJlY29ubmVjdE9ubHkgbV9zaG91bGRQcmVjb25u
ZWN0T25seSB7IFByZWNvbm5lY3RPbmx5OjpObyB9OwogICAgIEdSZWZQdHI8U291cE1lc3NhZ2U+
IG1fc291cE1lc3NhZ2U7CiAgICAgR1JlZlB0cjxHRmlsZT4gbV9maWxlOwogICAgIEdSZWZQdHI8
R0lucHV0U3RyZWFtPiBtX2lucHV0U3RyZWFtOwpkaWZmIC0tZ2l0IGEvU291cmNlL2NtYWtlL09w
dGlvbnNHVEsuY21ha2UgYi9Tb3VyY2UvY21ha2UvT3B0aW9uc0dUSy5jbWFrZQppbmRleCAyMDZl
ZjAwZjdlZWMuLjE3NmU3NjQ2ZjI1ZCAxMDA2NDQKLS0tIGEvU291cmNlL2NtYWtlL09wdGlvbnNH
VEsuY21ha2UKKysrIGIvU291cmNlL2NtYWtlL09wdGlvbnNHVEsuY21ha2UKQEAgLTIwNiw2ICsy
MDYsNyBAQCBpZiAoVVNFX1NPVVAyKQogZWxzZSAoKQogICAgIHNldChTT1VQX01JTklNVU1fVkVS
U0lPTiAyLjk5LjMpCiAgICAgc2V0KFNPVVBfQVBJX1ZFUlNJT04gMy4wKQorICAgIHNldChFTkFC
TEVfU0VSVkVSX1BSRUNPTk5FQ1QgT04pCiBlbmRpZiAoKQogZmluZF9wYWNrYWdlKExpYlNvdXAg
JHtTT1VQX01JTklNVU1fVkVSU0lPTn0gUkVRVUlSRUQpCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9j
bWFrZS9PcHRpb25zV1BFLmNtYWtlIGIvU291cmNlL2NtYWtlL09wdGlvbnNXUEUuY21ha2UKaW5k
ZXggZTBmZTZlMmVhM2ZjLi5lZjUxZmE0ZWFiNjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9jbWFrZS9P
cHRpb25zV1BFLmNtYWtlCisrKyBiL1NvdXJjZS9jbWFrZS9PcHRpb25zV1BFLmNtYWtlCkBAIC0x
MjgsNiArMTI4LDcgQEAgZWxzZSAoKQogICAgIHNldChXUEVfQVBJX1ZFUlNJT04gMS4xKQogICAg
ICMgTm8gQVBJIGNoYW5nZXMgaW4gMS4xLCBzbyBrZWVwIHVzaW5nIHRoZSBzYW1lIEFQSSBkb2N1
bWVudGF0aW9uLgogICAgIHNldChXUEVfQVBJX0RPQ19WRVJTSU9OIDEuMCkKKyAgICBzZXQoRU5B
QkxFX1NFUlZFUl9QUkVDT05ORUNUIE9OKQogZW5kaWYgKCkKIGZpbmRfcGFja2FnZShMaWJTb3Vw
ICR7U09VUF9NSU5JTVVNX1ZFUlNJT059IFJFUVVJUkVEKQogCg==
</data>
<flag name="review"
          id="446849"
          type_id="1"
          status="+"
          setter="svillar"
    />
          </attachment>
      

    </bug>

</bugzilla>