<?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>175832</bug_id>
          
          <creation_ts>2017-08-22 10:49:22 -0700</creation_ts>
          <short_desc>Introduce a new CompletionHandler type and use it for NetworkDataTaskClient&apos;s completion handlers to help catch bugs</short_desc>
          <delta_ts>2017-08-22 22:02:45 -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>WebKit2</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=175179</see_also>
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>175872</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Chris Dumez">cdumez</reporter>
          <assigned_to name="Chris Dumez">cdumez</assigned_to>
          <cc>achristensen</cc>
    
    <cc>beidson</cc>
    
    <cc>benjamin</cc>
    
    <cc>buildbot</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>commit-queue</cc>
    
    <cc>dbates</cc>
    
    <cc>ggaren</cc>
    
    <cc>kling</cc>
    
    <cc>sam</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>youennf</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1341108</commentid>
    <comment_count>0</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-08-22 10:49:22 -0700</bug_when>
    <thetext>Make NetworkDataTaskClient completion handlers less error prone by introducing a wrapper for them. This wrapper makes sure that:
1. The completion handler is always called
2. The completion handler is only called once

We&apos;ve been caught by this several times in the past and it causes hard to diagnose issues such as memory leaks and network load hangs.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1341116</commentid>
    <comment_count>1</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2017-08-22 10:51:25 -0700</bug_when>
    <thetext>We should do this for a lot of things.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1341118</commentid>
    <comment_count>2</comment_count>
      <attachid>318768</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-08-22 10:52:22 -0700</bug_when>
    <thetext>Created attachment 318768
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1341120</commentid>
    <comment_count>3</comment_count>
      <attachid>318768</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2017-08-22 10:58:11 -0700</bug_when>
    <thetext>Comment on attachment 318768
Patch

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

I think we should solve this problem instead by just making a wrapper of WTF::Function that counts how many times it&apos;s called in a debug build and asserts that it is called exactly once before it is destroyed

&gt; Source/WebKit/NetworkProcess/NetworkDataTask.h:66
&gt; +    NetworkCompletionHandler(HandlerType&amp;&amp; handler, WTF::Function&lt;void(HandlerType&amp;)&gt;&amp;&amp; defaultHandler)

This is strange.

&gt; Source/WebKit/NetworkProcess/PingLoad.cpp:-108
&gt; -        completionHandler({ });

I think we should keep these in.

&gt; Source/WebKit/NetworkProcess/capture/NetworkDataTaskReplay.cpp:206
&gt; +    RedirectCompletionHandler handler = makeRedirectCompletionHandler([this, protectedThis = makeRef(*this)] (const WebCore::ResourceRequest&amp; updatedRequest) {

auto redirectCompletionHandler</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1341124</commentid>
    <comment_count>4</comment_count>
      <attachid>318768</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-08-22 11:01:17 -0700</bug_when>
    <thetext>Comment on attachment 318768
Patch

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

&gt; Source/WebKit/NetworkProcess/NetworkLoad.cpp:-138
&gt; -    if (m_redirectCompletionHandler)

You really think we should keep these? This is super ugly. Adding assertion will not necessarily help in edge / rare cases because they will not be hit and we will not find the bugs. I&apos;d rather make this less error prone.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1341125</commentid>
    <comment_count>5</comment_count>
      <attachid>318768</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-08-22 11:02:40 -0700</bug_when>
    <thetext>Comment on attachment 318768
Patch

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

&gt;&gt; Source/WebKit/NetworkProcess/NetworkDataTask.h:66
&gt;&gt; +    NetworkCompletionHandler(HandlerType&amp;&amp; handler, WTF::Function&lt;void(HandlerType&amp;)&gt;&amp;&amp; defaultHandler)
&gt; 
&gt; This is strange.

Maybe we can clarify the naming but I think it makes sense to have a completion handler with default handling if the client does not call it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1341137</commentid>
    <comment_count>6</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-08-22 11:11:44 -0700</bug_when>
    <thetext>(In reply to Chris Dumez from comment #4)
&gt; Comment on attachment 318768 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=318768&amp;action=review
&gt; 
&gt; &gt; Source/WebKit/NetworkProcess/NetworkLoad.cpp:-138
&gt; &gt; -    if (m_redirectCompletionHandler)
&gt; 
&gt; You really think we should keep these? This is super ugly. Adding assertion
&gt; will not necessarily help in edge / rare cases because they will not be hit
&gt; and we will not find the bugs. I&apos;d rather make this less error prone.

To be clear, these completion handlers happen in case of redirects and authentication which are not common cases. It is very easy to introduce a bug where the redirect / authentication handlers do not call the completion handler, especially in specific error handling code path. Those do not have good test coverage and are not easy to test for. Therefore, I think merely adding assertion is not going to be sufficient to find bugs. Also, this leads to some ugly code where you have to make sure you call completion handler in class destructors.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1341298</commentid>
    <comment_count>7</comment_count>
      <attachid>318809</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-08-22 15:23:00 -0700</bug_when>
    <thetext>Created attachment 318809
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1341373</commentid>
    <comment_count>8</comment_count>
      <attachid>318809</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-08-22 17:09:43 -0700</bug_when>
    <thetext>Comment on attachment 318809
Patch

Clearing flags on attachment: 318809

Committed r221059: &lt;http://trac.webkit.org/changeset/221059&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1341374</commentid>
    <comment_count>9</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-08-22 17:09:45 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1341375</commentid>
    <comment_count>10</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2017-08-22 17:10:33 -0700</bug_when>
    <thetext>&lt;rdar://problem/34025346&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1341435</commentid>
    <comment_count>11</comment_count>
      <attachid>318809</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2017-08-22 20:24:24 -0700</bug_when>
    <thetext>Comment on attachment 318809
Patch

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

&gt; Source/WebKit/NetworkProcess/NetworkDataTask.cpp:106
&gt; +            completionHandler({ });

This will pass PolicyAction::PolicyUse to the completion handler. Is this intentional?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1341443</commentid>
    <comment_count>12</comment_count>
      <attachid>318809</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-08-22 21:02:22 -0700</bug_when>
    <thetext>Comment on attachment 318809
Patch

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

&gt;&gt; Source/WebKit/NetworkProcess/NetworkDataTask.cpp:106
&gt;&gt; +            completionHandler({ });
&gt; 
&gt; This will pass PolicyAction::PolicyUse to the completion handler. Is this intentional?

Good catch. This is not intentional. I&apos;ll follow-up.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1341453</commentid>
    <comment_count>13</comment_count>
      <attachid>318809</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2017-08-22 22:02:45 -0700</bug_when>
    <thetext>Comment on attachment 318809
Patch

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

&gt;&gt;&gt; Source/WebKit/NetworkProcess/NetworkDataTask.cpp:106
&gt;&gt;&gt; +            completionHandler({ });
&gt;&gt; 
&gt;&gt; This will pass PolicyAction::PolicyUse to the completion handler. Is this intentional?
&gt; 
&gt; Good catch. This is not intentional. I&apos;ll follow-up.

What about the ordering of calling the completion handler with respect to calling cancel()? Is it acceptable to call the completion handler first?</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>318768</attachid>
            <date>2017-08-22 10:52:22 -0700</date>
            <delta_ts>2017-08-22 15:22:58 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-175832-20170822105221.patch</filename>
            <type>text/plain</type>
            <size>12604</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjIxMDE5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDg2MGViMzljNDgzZjI1ZTdm
ZDY0NGE5YzlkYWQzYTYwNGY1MTc5NmEuLjBmYWI4OGQ3OWZiY2IxMTc0MTIwNjNjMDBkNzI1YzI1
Y2IyZWViNzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzYgQEAKKzIwMTctMDgtMjIgIENocmlzIER1
bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKworICAgICAgICBNYWtlIE5ldHdvcmtEYXRhVGFza0Ns
aWVudCBjb21wbGV0aW9uIGhhbmRsZXJzIGxlc3MgZXJyb3IgcHJvbmUgYnkgaW50cm9kdWNpbmcg
YSB3cmFwcGVyIGZvciB0aGVtCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xNzU4MzIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBNYWtlIE5ldHdvcmtEYXRhVGFza0NsaWVudCBjb21wbGV0aW9uIGhhbmRsZXJz
IGxlc3MgZXJyb3IgcHJvbmUgYnkgaW50cm9kdWNpbmcgYSB3cmFwcGVyIGZvciB0aGVtLgorICAg
ICAgICBUaGlzIHdyYXBwZXIgbWFrZXMgc3VyZSB0aGF0OgorICAgICAgICAxLiBUaGUgY29tcGxl
dGlvbiBoYW5kbGVyIGlzIGFsd2F5cyBjYWxsZWQKKyAgICAgICAgMi4gVGhlIGNvbXBsZXRpb24g
aGFuZGxlciBpcyBvbmx5IGNhbGxlZCBvbmNlCisKKyAgICAgICAgV2UndmUgYmVlbiBjYXVnaHQg
YnkgdGhpcyBzZXZlcmFsIHRpbWVzIGluIHRoZSBwYXN0IGFuZCBpdCBjYXVzZXMgaGFyZCB0byBk
aWFnbm9zZSBpc3N1ZXMgc3VjaCBhcworICAgICAgICBtZW1vcnkgbGVha3MgYW5kIG5ldHdvcmsg
bG9hZCBoYW5ncy4KKworICAgICAgICBGb3Igbm93LCBJIGhhdmUgb25seSBwb3J0ZWQgUmVkaXJl
Y3RDb21wbGV0aW9uSGFuZGxlci4gSSdsbCBwb3J0IHRoZSBvdGhlciBvbmVzIGluIGEgZm9sbG93
LXVwLgorCisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya0RhdGFUYXNrLmg6CisgICAg
ICAgIChXZWJLaXQ6Ok5ldHdvcmtDb21wbGV0aW9uSGFuZGxlcjxPdXQpOgorICAgICAgICAoV2Vi
S2l0OjptYWtlUmVkaXJlY3RDb21wbGV0aW9uSGFuZGxlcik6CisgICAgICAgICogTmV0d29ya1By
b2Nlc3MvTmV0d29ya0xvYWQuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrTG9hZDo6fk5l
dHdvcmtMb2FkKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0xvYWQ6OmNvbnRpbnVlV2lsbFNl
bmRSZXF1ZXN0KToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9QaW5nTG9hZC5jcHA6CisgICAg
ICAgIChXZWJLaXQ6OlBpbmdMb2FkOjp+UGluZ0xvYWQpOgorICAgICAgICAoV2ViS2l0OjpQaW5n
TG9hZDo6d2lsbFBlcmZvcm1IVFRQUmVkaXJlY3Rpb24pOgorICAgICAgICAoV2ViS2l0OjpQaW5n
TG9hZDo6cHJlZmxpZ2h0U3VjY2Vzcyk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvY2FwdHVy
ZS9OZXR3b3JrRGF0YVRhc2tSZXBsYXkuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ2Fw
dHVyZTo6TmV0d29ya0RhdGFUYXNrUmVwbGF5OjpyZXBsYXlSZWRpcmVjdFJlY2VpdmVkKToKKyAg
ICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrU2Vzc2lvbkNvY29hLm1tOgorICAg
ICAgICAoLVtXS05ldHdvcmtTZXNzaW9uRGVsZWdhdGUgVVJMU2Vzc2lvbjp0YXNrOndpbGxQZXJm
b3JtSFRUUFJlZGlyZWN0aW9uOm5ld1JlcXVlc3Q6Y29tcGxldGlvbkhhbmRsZXI6XSk6CisgICAg
ICAgICgtW1dLTmV0d29ya1Nlc3Npb25EZWxlZ2F0ZSBVUkxTZXNzaW9uOnRhc2s6X3NjaGVtZVVw
Z3JhZGVkOmNvbXBsZXRpb25IYW5kbGVyOl0pOgorCiAyMDE3LTA4LTIyICBCcmVudCBGdWxnaGFt
ICA8YmZ1bGdoYW1AYXBwbGUuY29tPiBhbmQgUHJhbmphbCBKdW1kZSAgPHBqdW1kZUBhcHBsZS5j
b20+CiAKICAgICAgICAgRGlzYWJsZSBhY2Nlc3MgdG8gc2VjdXJlIGNvb2tpZXMgaWYgYW4gSFRU
UFMgc2l0ZSBsb2FkcyBtaXhlZCBjb250ZW50CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL05ldHdvcmtEYXRhVGFzay5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9OZXR3b3JrRGF0YVRhc2suaAppbmRleCBlZGEzMzVlNWYzNDljOTljOGRkZjQwMDhlNjZh
NWY1NTM2ODFiNGIxLi5iNzkyODNlYjQwMjUyNzM1NTNmYWQ4MmQ4ZTIxMTQwMDFhMTVmOTM0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtEYXRhVGFzay5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0RhdGFUYXNrLmgKQEAg
LTU0LDcgKzU0LDY0IEBAIGNsYXNzIE5ldHdvcmtTZXNzaW9uOwogY2xhc3MgUGVuZGluZ0Rvd25s
b2FkOwogZW51bSBjbGFzcyBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZURpc3Bvc2l0aW9uOwogCi10
eXBlZGVmIEZ1bmN0aW9uPHZvaWQoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0Jik+IFJl
ZGlyZWN0Q29tcGxldGlvbkhhbmRsZXI7CisvLyBXcmFwcGVyIGZvciBuZXR3b3JraW5nIGNvbXBs
ZXRpb24gaGFuZGxlcnMgdGhhdCBtYWtlIHN1cmUgdGhhdDoKKy8vIDEuIFRoZSB1bmRlcmx5aW5n
IGhhbmRsZXIgaXMgYWx3YXlzIGNhbGxlZC4KKy8vIDIuIFRoZSB1bmRlcmx5aW5nIGhhbmRsZXIg
aXMgb25seSBjYWxsZWQgb25jZQordGVtcGxhdGU8dHlwZW5hbWU+IGNsYXNzIE5ldHdvcmtDb21w
bGV0aW9uSGFuZGxlcjsKK3RlbXBsYXRlPHR5cGVuYW1lIE91dCwgdHlwZW5hbWUuLi4gSW4+IGNs
YXNzIE5ldHdvcmtDb21wbGV0aW9uSGFuZGxlcjxPdXQoSW4uLi4pPiB7CitwdWJsaWM6CisgICAg
dXNpbmcgSGFuZGxlclR5cGUgPSBXVEY6OkZ1bmN0aW9uPE91dChJbi4uLik+OworCisgICAgTmV0
d29ya0NvbXBsZXRpb25IYW5kbGVyKCkgPSBkZWZhdWx0OworICAgIE5ldHdvcmtDb21wbGV0aW9u
SGFuZGxlcihIYW5kbGVyVHlwZSYmIGhhbmRsZXIsIFdURjo6RnVuY3Rpb248dm9pZChIYW5kbGVy
VHlwZSYpPiYmIGRlZmF1bHRIYW5kbGVyKQorICAgICAgICA6IG1faGFuZGxlcihXVEZNb3ZlKGhh
bmRsZXIpKQorICAgICAgICAsIG1fZGVmYXVsdEhhbmRsZXIoV1RGTW92ZShkZWZhdWx0SGFuZGxl
cikpCisgICAgeworICAgIH0KKworICAgIH5OZXR3b3JrQ29tcGxldGlvbkhhbmRsZXIoKQorICAg
IHsKKyAgICAgICAgaWYgKG1fZGVmYXVsdEhhbmRsZXIpCisgICAgICAgICAgICBtX2RlZmF1bHRI
YW5kbGVyKG1faGFuZGxlcik7CisgICAgfQorCisgICAgTmV0d29ya0NvbXBsZXRpb25IYW5kbGVy
KE5ldHdvcmtDb21wbGV0aW9uSGFuZGxlciYmKSA9IGRlZmF1bHQ7CisgICAgTmV0d29ya0NvbXBs
ZXRpb25IYW5kbGVyJiBvcGVyYXRvcj0oTmV0d29ya0NvbXBsZXRpb25IYW5kbGVyJiYgb3RoZXIp
CisgICAgeworICAgICAgICBpZiAobV9kZWZhdWx0SGFuZGxlcikKKyAgICAgICAgICAgIG1fZGVm
YXVsdEhhbmRsZXIobV9oYW5kbGVyKTsKKworICAgICAgICBtX2hhbmRsZXIgPSBXVEZNb3ZlKG90
aGVyLm1faGFuZGxlcik7CisgICAgICAgIG1fZGVmYXVsdEhhbmRsZXIgPSBXVEZNb3ZlKG90aGVy
Lm1fZGVmYXVsdEhhbmRsZXIpOworICAgICAgICByZXR1cm4gKnRoaXM7CisgICAgfQorCisgICAg
T3V0IG9wZXJhdG9yKCkoSW4uLi4gaW4pCisgICAgeworICAgICAgICBhdXRvIGhhbmRsZXIgPSBX
VEZNb3ZlKG1faGFuZGxlcik7CisgICAgICAgIG1fZGVmYXVsdEhhbmRsZXIgPSBudWxscHRyOwor
ICAgICAgICByZXR1cm4gaGFuZGxlcihzdGQ6OmZvcndhcmQ8SW4+KGluKS4uLik7CisgICAgfQor
CisgICAgZXhwbGljaXQgb3BlcmF0b3IgYm9vbCgpIGNvbnN0IHsgcmV0dXJuICEhbV9oYW5kbGVy
OyB9CisKK3ByaXZhdGU6CisgICAgSGFuZGxlclR5cGUgbV9oYW5kbGVyOworICAgIFdURjo6RnVu
Y3Rpb248dm9pZChIYW5kbGVyVHlwZSYpPiBtX2RlZmF1bHRIYW5kbGVyOworfTsKKwordXNpbmcg
UmVkaXJlY3RDb21wbGV0aW9uSGFuZGxlciA9IE5ldHdvcmtDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYpPjsKK2lubGluZSBSZWRpcmVjdENvbXBs
ZXRpb25IYW5kbGVyIG1ha2VSZWRpcmVjdENvbXBsZXRpb25IYW5kbGVyKFdURjo6RnVuY3Rpb248
dm9pZChjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmKT4mJiBoYW5kbGVyKQoreworICAg
IHJldHVybiB7CisgICAgICAgIFdURk1vdmUoaGFuZGxlciksCisgICAgICAgIFtdKGF1dG8mIHdy
YXBwZWRIYW5kbGVyKSB7CisgICAgICAgICAgICB3cmFwcGVkSGFuZGxlcih7IH0pOworICAgICAg
ICB9CisgICAgfTsKK30KKworLy8gRklYTUU6IFVzZSBOZXR3b3JrQ29tcGxldGlvbkhhbmRsZXI8
PiBpbnN0ZWFkIG9mIEZ1bmN0aW9uPD4uCiB0eXBlZGVmIEZ1bmN0aW9uPHZvaWQoQXV0aGVudGlj
YXRpb25DaGFsbGVuZ2VEaXNwb3NpdGlvbiwgY29uc3QgV2ViQ29yZTo6Q3JlZGVudGlhbCYpPiBD
aGFsbGVuZ2VDb21wbGV0aW9uSGFuZGxlcjsKIHR5cGVkZWYgRnVuY3Rpb248dm9pZChXZWJDb3Jl
OjpQb2xpY3lBY3Rpb24pPiBSZXNwb25zZUNvbXBsZXRpb25IYW5kbGVyOwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtMb2FkLmNwcCBiL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWQuY3BwCmluZGV4IDRkMTA3NWNlOGEyOWEx
NGEwOTE5OGM2NmEyMjIwMzhiY2U4YmQ3NTAuLjU0Nzc4NTM2ZWI1MGIzZDE0MmZkNjZkZjU3Y2Nm
MmQxM2U4NTZhOTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0
d29ya0xvYWQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xv
YWQuY3BwCkBAIC0xMzUsOCArMTM1LDYgQEAgTmV0d29ya0xvYWQ6On5OZXR3b3JrTG9hZCgpCiAj
aWYgVVNFKE5FVFdPUktfU0VTU0lPTikKICAgICBpZiAobV9yZXNwb25zZUNvbXBsZXRpb25IYW5k
bGVyKQogICAgICAgICBtX3Jlc3BvbnNlQ29tcGxldGlvbkhhbmRsZXIoUG9saWN5SWdub3JlKTsK
LSAgICBpZiAobV9yZWRpcmVjdENvbXBsZXRpb25IYW5kbGVyKQotICAgICAgICBtX3JlZGlyZWN0
Q29tcGxldGlvbkhhbmRsZXIoeyB9KTsKICNpZiBVU0UoUFJPVEVDVElPTl9TUEFDRV9BVVRIX0NB
TExCQUNLKQogICAgIGlmIChtX2NoYWxsZW5nZUNvbXBsZXRpb25IYW5kbGVyKQogICAgICAgICBt
X2NoYWxsZW5nZUNvbXBsZXRpb25IYW5kbGVyKEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlRGlzcG9z
aXRpb246OkNhbmNlbCwgeyB9KTsKQEAgLTE5OSw3ICsxOTcsNyBAQCB2b2lkIE5ldHdvcmtMb2Fk
Ojpjb250aW51ZVdpbGxTZW5kUmVxdWVzdChXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiBuZXdS
ZXF1ZXN0KQogI2VuZGlmCiAKICNpZiBVU0UoTkVUV09SS19TRVNTSU9OKQotICAgIGF1dG8gcmVk
aXJlY3RDb21wbGV0aW9uSGFuZGxlciA9IHN0ZDo6ZXhjaGFuZ2UobV9yZWRpcmVjdENvbXBsZXRp
b25IYW5kbGVyLCBudWxscHRyKTsKKyAgICBhdXRvIHJlZGlyZWN0Q29tcGxldGlvbkhhbmRsZXIg
PSBXVEZNb3ZlKG1fcmVkaXJlY3RDb21wbGV0aW9uSGFuZGxlcik7CiAgICAgQVNTRVJUKHJlZGly
ZWN0Q29tcGxldGlvbkhhbmRsZXIpOwogICAgIGlmIChtX2N1cnJlbnRSZXF1ZXN0LmlzTnVsbCgp
KSB7CiAgICAgICAgIE5ldHdvcmtMb2FkTWV0cmljcyBlbXB0eU1ldHJpY3M7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1BpbmdMb2FkLmNwcCBiL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvUGluZ0xvYWQuY3BwCmluZGV4IGRiNjhhMDg5YWVkNGRmNGM0ZDk4
NWZjMzY2MmY0OTk2ZmFmZmVlNGIuLmMyMGZiY2NkMWQ3Mjg1MWViZjVmZWIxMGI3NjVkYWFhY2M1
YTMzODYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUGluZ0xvYWQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUGluZ0xvYWQuY3BwCkBAIC02
OCw5ICs2OCw2IEBAIFBpbmdMb2FkOjpQaW5nTG9hZChOZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1l
dGVycyYmIHBhcmFtZXRlcnMsIEhUVFBIZWFkZXJNYXAmJiBvCiAKIFBpbmdMb2FkOjp+UGluZ0xv
YWQoKQogewotICAgIGlmIChtX3JlZGlyZWN0SGFuZGxlcikKLSAgICAgICAgbV9yZWRpcmVjdEhh
bmRsZXIoeyB9KTsKLQogICAgIGlmIChtX3Rhc2spIHsKICAgICAgICAgQVNTRVJUKG1fdGFzay0+
Y2xpZW50KCkgPT0gdGhpcyk7CiAgICAgICAgIG1fdGFzay0+Y2xlYXJDbGllbnQoKTsKQEAgLTEw
NSw3ICsxMDIsNiBAQCB2b2lkIFBpbmdMb2FkOjp3aWxsUGVyZm9ybUhUVFBSZWRpcmVjdGlvbihS
ZXNvdXJjZVJlc3BvbnNlJiYgcmVkaXJlY3RSZXNwb25zZSwgUgogewogICAgIFJFTEVBU0VfTE9H
X0lGX0FMTE9XRUQoIndpbGxQZXJmb3JtSFRUUFJlZGlyZWN0aW9uIC0gc2hvdWxkRm9sbG93UmVk
aXJlY3RzPyAlZCIsIG1fcGFyYW1ldGVycy5zaG91bGRGb2xsb3dSZWRpcmVjdHMpOwogICAgIGlm
ICghbV9wYXJhbWV0ZXJzLnNob3VsZEZvbGxvd1JlZGlyZWN0cykgewotICAgICAgICBjb21wbGV0
aW9uSGFuZGxlcih7IH0pOwogICAgICAgICBkaWRGaW5pc2goUmVzb3VyY2VFcnJvciB7IFN0cmlu
ZygpLCAwLCBjdXJyZW50UmVxdWVzdCgpLnVybCgpLCBBU0NJSUxpdGVyYWwoIk5vdCBhbGxvd2Vk
IHRvIGZvbGxvdyByZWRpcmVjdHMiKSwgUmVzb3VyY2VFcnJvcjo6VHlwZTo6QWNjZXNzQ29udHJv
bCB9KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAgLTExNCw3ICsxMTAsNiBAQCB2b2lkIFBp
bmdMb2FkOjp3aWxsUGVyZm9ybUhUVFBSZWRpcmVjdGlvbihSZXNvdXJjZVJlc3BvbnNlJiYgcmVk
aXJlY3RSZXNwb25zZSwgUgogICAgIGlmIChwcm9jZXNzQ29udGVudEV4dGVuc2lvblJ1bGVzRm9y
TG9hZChyZXF1ZXN0KSkgewogICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCJ3aWxsUGVy
Zm9ybUhUVFBSZWRpcmVjdGlvbiAtIFJlZGlyZWN0IHdhcyBibG9ja2VkIGJ5IGNvbnRlbnQgZXh0
ZW5zaW9ucyIpOwogICAgICAgICBtX2xhc3RSZWRpcmVjdGlvblJlcXVlc3QgPSByZXF1ZXN0Owot
ICAgICAgICBjb21wbGV0aW9uSGFuZGxlcih7IH0pOwogICAgICAgICBkaWRGaW5pc2goUmVzb3Vy
Y2VFcnJvciB7IFN0cmluZygpLCAwLCBjdXJyZW50UmVxdWVzdCgpLnVybCgpLCBBU0NJSUxpdGVy
YWwoIkJsb2NrZWQgYnkgY29udGVudCBleHRlbnNpb24iKSwgUmVzb3VyY2VFcnJvcjo6VHlwZTo6
QWNjZXNzQ29udHJvbCB9KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAgLTEyNSw3ICsxMjAs
NiBAQCB2b2lkIFBpbmdMb2FkOjp3aWxsUGVyZm9ybUhUVFBSZWRpcmVjdGlvbihSZXNvdXJjZVJl
c3BvbnNlJiYgcmVkaXJlY3RSZXNwb25zZSwgUgogICAgIGlmIChhdXRvKiBjb250ZW50U2VjdXJp
dHlQb2xpY3kgPSB0aGlzLT5jb250ZW50U2VjdXJpdHlQb2xpY3koKSkgewogICAgICAgICBpZiAo
IWNvbnRlbnRTZWN1cml0eVBvbGljeS0+YWxsb3dDb25uZWN0VG9Tb3VyY2UocmVxdWVzdC51cmwo
KSwgcmVkaXJlY3RSZXNwb25zZS5pc051bGwoKSA/IENvbnRlbnRTZWN1cml0eVBvbGljeTo6UmVk
aXJlY3RSZXNwb25zZVJlY2VpdmVkOjpObyA6IENvbnRlbnRTZWN1cml0eVBvbGljeTo6UmVkaXJl
Y3RSZXNwb25zZVJlY2VpdmVkOjpZZXMpKSB7CiAgICAgICAgICAgICBSRUxFQVNFX0xPR19JRl9B
TExPV0VEKCJ3aWxsUGVyZm9ybUhUVFBSZWRpcmVjdGlvbiAtIFJlZGlyZWN0IHdhcyBibG9ja2Vk
IGJ5IENTUCIpOwotICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoeyB9KTsKICAgICAgICAg
ICAgIGRpZEZpbmlzaChSZXNvdXJjZUVycm9yIHsgU3RyaW5nKCksIDAsIGN1cnJlbnRSZXF1ZXN0
KCkudXJsKCksIEFTQ0lJTGl0ZXJhbCgiQmxvY2tlZCBieSBDb250ZW50IFNlY3VyaXR5IFBvbGlj
eSIpLCBSZXNvdXJjZUVycm9yOjpUeXBlOjpBY2Nlc3NDb250cm9sIH0pOwogICAgICAgICAgICAg
cmV0dXJuOwogICAgICAgICB9CkBAIC0zMDMsNyArMjk3LDcgQEAgdm9pZCBQaW5nTG9hZDo6cHJl
ZmxpZ2h0U3VjY2VzcyhSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0KQogICAgIFJlc291cmNlUmVx
dWVzdCBhY3R1YWxSZXF1ZXN0ID0gV1RGTW92ZShyZXF1ZXN0KTsKICAgICB1cGRhdGVSZXF1ZXN0
Rm9yQWNjZXNzQ29udHJvbChhY3R1YWxSZXF1ZXN0LCBzZWN1cml0eU9yaWdpbigpLCBtX3BhcmFt
ZXRlcnMuYWxsb3dTdG9yZWRDcmVkZW50aWFscyk7CiAKLSAgICBpZiAoYXV0byByZWRpcmVjdEhh
bmRsZXIgPSBzdGQ6OmV4Y2hhbmdlKG1fcmVkaXJlY3RIYW5kbGVyLCBudWxscHRyKSkKKyAgICBp
ZiAoYXV0byByZWRpcmVjdEhhbmRsZXIgPSBXVEZNb3ZlKG1fcmVkaXJlY3RIYW5kbGVyKSkKICAg
ICAgICAgcmVkaXJlY3RIYW5kbGVyKFdURk1vdmUoYWN0dWFsUmVxdWVzdCkpOwogICAgIGVsc2UK
ICAgICAgICAgbG9hZFJlcXVlc3QoV1RGTW92ZShhY3R1YWxSZXF1ZXN0KSk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhcHR1cmUvTmV0d29ya0RhdGFUYXNrUmVw
bGF5LmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FwdHVyZS9OZXR3b3JrRGF0
YVRhc2tSZXBsYXkuY3BwCmluZGV4IDMwZDczMDI1Mjc5Mjk2NDQ0NDllMDhkMzliNmMwNDA4MGM1
NDc1NmQuLjQyNTNiYzI5ZmVlZDlhMTRmZDU5MmJlYzRkM2IzNzQ3MDU4ZDBiMGMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FwdHVyZS9OZXR3b3JrRGF0YVRhc2tS
ZXBsYXkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FwdHVyZS9OZXR3
b3JrRGF0YVRhc2tSZXBsYXkuY3BwCkBAIC0yMDMsMTIgKzIwMywxMyBAQCB2b2lkIE5ldHdvcmtE
YXRhVGFza1JlcGxheTo6cmVwbGF5UmVkaXJlY3RSZWNlaXZlZChjb25zdCBSZWRpcmVjdFJlY2Vp
dmVkRXZlbnQmCiAgICAgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0IHJlY2VpdmVkUmVxdWVzdCA9
IGV2ZW50LnJlcXVlc3Q7CiAKICAgICBBU1NFUlQobV9jbGllbnQpOwotICAgIG1fY2xpZW50LT53
aWxsUGVyZm9ybUhUVFBSZWRpcmVjdGlvbihXVEZNb3ZlKHJlY2VpdmVkUmVzcG9uc2UpLCBXVEZN
b3ZlKHJlY2VpdmVkUmVxdWVzdCksIFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhp
cyldIChjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIHVwZGF0ZWRSZXF1ZXN0KSB7Cisg
ICAgUmVkaXJlY3RDb21wbGV0aW9uSGFuZGxlciBoYW5kbGVyID0gbWFrZVJlZGlyZWN0Q29tcGxl
dGlvbkhhbmRsZXIoW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKV0gKGNvbnN0
IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgdXBkYXRlZFJlcXVlc3QpIHsKICAgICAgICAgREVC
VUdfTE9HKCJyZXBsYXlSZWRpcmVjdFJlY2VpdmVkIGNhbGxiYWNrOiBVUkwgPSAiIFNUUklOR19T
UEVDSUZJRVIsIERFQlVHX1NUUihtX2ZpcnN0UmVxdWVzdC51cmwoKS5zdHJpbmcoKSkpOwogCiAg
ICAgICAgIG1fY3VycmVudFJlcXVlc3QgPSB1cGRhdGVkUmVxdWVzdDsKICAgICAgICAgZW5xdWV1
ZUV2ZW50SGFuZGxlcigpOwogICAgIH0pOworICAgIG1fY2xpZW50LT53aWxsUGVyZm9ybUhUVFBS
ZWRpcmVjdGlvbihXVEZNb3ZlKHJlY2VpdmVkUmVzcG9uc2UpLCBXVEZNb3ZlKHJlY2VpdmVkUmVx
dWVzdCksIFdURk1vdmUoaGFuZGxlcikpOwogfQogCiB2b2lkIE5ldHdvcmtEYXRhVGFza1JlcGxh
eTo6cmVwbGF5UmVkaXJlY3RTZW50KGNvbnN0IFJlZGlyZWN0U2VudEV2ZW50JiBldmVudCkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya1Nlc3Np
b25Db2NvYS5tbSBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya1Nl
c3Npb25Db2NvYS5tbQppbmRleCA4NzU0ODIxNzM2NjE0MjIxY2Q1NTBlYTNmYWI1MjFkMzM0OTcx
ZDZiLi41ZGQxZTY2NDg3ZmZhOTBmMDY0Mjk1MWE1NjM5YmViYjc5MmI2NmFmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtTZXNzaW9uQ29jb2Eu
bW0KKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrU2Vzc2lv
bkNvY29hLm1tCkBAIC0xNjUsNyArMTY1LDcgQEAgc3RhdGljIFdlYkNvcmU6Ok5ldHdvcmtMb2Fk
UHJpb3JpdHkgdG9OZXR3b3JrTG9hZFByaW9yaXR5KGZsb2F0IHByaW9yaXR5KQogCiAgICAgaWYg
KGF1dG8qIG5ldHdvcmtEYXRhVGFzayA9IFtzZWxmIGV4aXN0aW5nVGFzazp0YXNrXSkgewogICAg
ICAgICBhdXRvIGNvbXBsZXRpb25IYW5kbGVyQ29weSA9IEJsb2NrX2NvcHkoY29tcGxldGlvbkhh
bmRsZXIpOwotICAgICAgICBuZXR3b3JrRGF0YVRhc2stPndpbGxQZXJmb3JtSFRUUFJlZGlyZWN0
aW9uKHJlc3BvbnNlLCByZXF1ZXN0LCBbY29tcGxldGlvbkhhbmRsZXJDb3B5LCB0YXNrSWRlbnRp
Zmllcl0oYXV0byYgcmVxdWVzdCkgeworICAgICAgICBuZXR3b3JrRGF0YVRhc2stPndpbGxQZXJm
b3JtSFRUUFJlZGlyZWN0aW9uKHJlc3BvbnNlLCByZXF1ZXN0LCBtYWtlUmVkaXJlY3RDb21wbGV0
aW9uSGFuZGxlcihbY29tcGxldGlvbkhhbmRsZXJDb3B5LCB0YXNrSWRlbnRpZmllcl0oYXV0byYg
cmVxdWVzdCkgewogI2lmICFMT0dfRElTQUJMRUQKICAgICAgICAgICAgIExPRyhOZXR3b3JrU2Vz
c2lvbiwgIiVsbHUgd2lsbFBlcmZvcm1IVFRQUmVkaXJlY3Rpb24gY29tcGxldGlvbkhhbmRsZXIg
KCVzKSIsIHRhc2tJZGVudGlmaWVyLCByZXF1ZXN0LnVybCgpLnN0cmluZygpLnV0ZjgoKS5kYXRh
KCkpOwogI2Vsc2UKQEAgLTE3Myw3ICsxNzMsNyBAQCBzdGF0aWMgV2ViQ29yZTo6TmV0d29ya0xv
YWRQcmlvcml0eSB0b05ldHdvcmtMb2FkUHJpb3JpdHkoZmxvYXQgcHJpb3JpdHkpCiAjZW5kaWYK
ICAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyQ29weShyZXF1ZXN0Lm5zVVJMUmVxdWVzdChX
ZWJDb3JlOjpVcGRhdGVIVFRQQm9keSkpOwogICAgICAgICAgICAgQmxvY2tfcmVsZWFzZShjb21w
bGV0aW9uSGFuZGxlckNvcHkpOwotICAgICAgICB9KTsKKyAgICAgICAgfSkpOwogICAgIH0gZWxz
ZSB7CiAgICAgICAgIExPRyhOZXR3b3JrU2Vzc2lvbiwgIiVsbHUgd2lsbFBlcmZvcm1IVFRQUmVk
aXJlY3Rpb24gY29tcGxldGlvbkhhbmRsZXIgKG5pbCkiLCB0YXNrSWRlbnRpZmllcik7CiAgICAg
ICAgIGNvbXBsZXRpb25IYW5kbGVyKG5pbCk7CkBAIC0xODcsNyArMTg3LDcgQEAgc3RhdGljIFdl
YkNvcmU6Ok5ldHdvcmtMb2FkUHJpb3JpdHkgdG9OZXR3b3JrTG9hZFByaW9yaXR5KGZsb2F0IHBy
aW9yaXR5KQogICAgIAogICAgIGlmIChhdXRvKiBuZXR3b3JrRGF0YVRhc2sgPSBbc2VsZiBleGlz
dGluZ1Rhc2s6dGFza10pIHsKICAgICAgICAgYXV0byBjb21wbGV0aW9uSGFuZGxlckNvcHkgPSBC
bG9ja19jb3B5KGNvbXBsZXRpb25IYW5kbGVyKTsKLSAgICAgICAgbmV0d29ya0RhdGFUYXNrLT53
aWxsUGVyZm9ybUhUVFBSZWRpcmVjdGlvbihXZWJDb3JlOjpzeW50aGVzaXplUmVkaXJlY3RSZXNw
b25zZUlmTmVjZXNzYXJ5KFt0YXNrIGN1cnJlbnRSZXF1ZXN0XSwgcmVxdWVzdCwgbmlsKSwgcmVx
dWVzdCwgW2NvbXBsZXRpb25IYW5kbGVyQ29weSwgdGFza0lkZW50aWZpZXJdKGF1dG8mIHJlcXVl
c3QpIHsKKyAgICAgICAgbmV0d29ya0RhdGFUYXNrLT53aWxsUGVyZm9ybUhUVFBSZWRpcmVjdGlv
bihXZWJDb3JlOjpzeW50aGVzaXplUmVkaXJlY3RSZXNwb25zZUlmTmVjZXNzYXJ5KFt0YXNrIGN1
cnJlbnRSZXF1ZXN0XSwgcmVxdWVzdCwgbmlsKSwgcmVxdWVzdCwgbWFrZVJlZGlyZWN0Q29tcGxl
dGlvbkhhbmRsZXIoW2NvbXBsZXRpb25IYW5kbGVyQ29weSwgdGFza0lkZW50aWZpZXJdKGF1dG8m
IHJlcXVlc3QpIHsKICNpZiAhTE9HX0RJU0FCTEVECiAgICAgICAgICAgICBMT0coTmV0d29ya1Nl
c3Npb24sICIlbGx1IF9zY2hlbWVVcGdyYWRlZCBjb21wbGV0aW9uSGFuZGxlciAoJXMpIiwgdGFz
a0lkZW50aWZpZXIsIHJlcXVlc3QudXJsKCkuc3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CiAjZWxz
ZQpAQCAtMTk1LDcgKzE5NSw3IEBAIHN0YXRpYyBXZWJDb3JlOjpOZXR3b3JrTG9hZFByaW9yaXR5
IHRvTmV0d29ya0xvYWRQcmlvcml0eShmbG9hdCBwcmlvcml0eSkKICNlbmRpZgogICAgICAgICAg
ICAgY29tcGxldGlvbkhhbmRsZXJDb3B5KHJlcXVlc3QubnNVUkxSZXF1ZXN0KFdlYkNvcmU6OlVw
ZGF0ZUhUVFBCb2R5KSk7CiAgICAgICAgICAgICBCbG9ja19yZWxlYXNlKGNvbXBsZXRpb25IYW5k
bGVyQ29weSk7Ci0gICAgICAgIH0pOworICAgICAgICB9KSk7CiAgICAgfSBlbHNlIHsKICAgICAg
ICAgTE9HKE5ldHdvcmtTZXNzaW9uLCAiJWxsdSBfc2NoZW1lVXBncmFkZWQgY29tcGxldGlvbkhh
bmRsZXIgKG5pbCkiLCB0YXNrSWRlbnRpZmllcik7CiAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVy
KG5pbCk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>318809</attachid>
            <date>2017-08-22 15:23:00 -0700</date>
            <delta_ts>2017-08-22 17:09:43 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-175832-20170822152259.patch</filename>
            <type>text/plain</type>
            <size>20207</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjIxMDQ0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IGU2ZGI5ZjdiMmM4MmZlM2MxZDYyOGIz
YWJmYmY4YTAyNTU4NWU0MzQuLmI3ZmJlMzMwYThkMGMyMzY4YjhiNmM4MTgzNTQ3NDQ3YzA5YmY3
NWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAKKzIwMTctMDgtMjIgIENocmlzIER1bWV6ICA8Y2R1bWV6
QGFwcGxlLmNvbT4KKworICAgICAgICBJbnRyb2R1Y2UgYSBuZXcgQ29tcGxldGlvbkhhbmRsZXIg
dHlwZSBhbmQgdXNlIGl0IGZvciBOZXR3b3JrRGF0YVRhc2tDbGllbnQncyBjb21wbGV0aW9uIGhh
bmRsZXJzIHRvIGhlbHAgY2F0Y2ggYnVncworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTc1ODMyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgSW50cm9kdWNlIGEgbmV3IENvbXBsZXRpb25IYW5kbGVyIHR5cGUg
d2hpY2ggd3JhcHMgYSBXVEY6OkZ1bmN0aW9uIGFuZCBlbnN1cmVzIHZpYSBhc3NlcnRpb25zCisg
ICAgICAgIHRoYXQgdGhlIGZ1bmN0aW9uIGlzIGFsd2F5cyBjYWxsZWQgb25jZSBhbmQgb25seSBv
bmNlLgorCisgICAgICAgICogV1RGLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAg
ICogd3RmL0NvbXBsZXRpb25IYW5kbGVyLmg6IEFkZGVkLgorICAgICAgICAoV1RGOjpDb21wbGV0
aW9uSGFuZGxlcjxPdXQpOgorCiAyMDE3LTA4LTIyICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlz
dGVuc2VuQHdlYmtpdC5vcmc+CiAKICAgICAgICAgRml4IFdpbmRvd3MgYnVpbGQgYWZ0ZXIgcjIy
MTAxNy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktp
dC9DaGFuZ2VMb2cKaW5kZXggMDE3YzU3MDNmMmE1NGNmZWE0NDk0ZWVjNTI0OWZhNDVkMjcyNjVl
OC4uYTM4OWFiMzY1ZDgzZmUyNDE1MzAyMWNhOTc5MTdkODhlNjcyZWRjYSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAg
LTEsMyArMSwyNiBAQAorMjAxNy0wOC0yMiAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29t
PgorCisgICAgICAgIEludHJvZHVjZSBhIG5ldyBDb21wbGV0aW9uSGFuZGxlciB0eXBlIGFuZCB1
c2UgaXQgZm9yIE5ldHdvcmtEYXRhVGFza0NsaWVudCdzIGNvbXBsZXRpb24gaGFuZGxlcnMgdG8g
aGVscCBjYXRjaCBidWdzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xNzU4MzIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBVc2UgbmV3IENvbXBsZXRpb25IYW5kbGVyIHR5cGUgZm9yIE5ldHdvcmtEYXRhVGFz
a0NsaWVudCdzIGNvbXBsZXRpb24gaGFuZGxlcnMgdG8gaGVscCBjYXRjaCBidWdzLgorICAgICAg
ICBJdCBhY3R1YWxseSBhbHJlYWR5IGZvdW5kIGEgYnVnIGluIG91ciBIVFRQIDAuOSBlcnJvciBo
YW5kbGluZyB3aGljaCBpcyBmaXhlZCBpbiB0aGlzIHBhdGNoCisgICAgICAgIGFzIHdlbGwuCisK
KyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrRGF0YVRhc2suY3BwOgorICAgICAgICAo
V2ViS2l0OjpOZXR3b3JrRGF0YVRhc2s6OmRpZFJlY2VpdmVSZXNwb25zZSk6CisgICAgICAgICog
TmV0d29ya1Byb2Nlc3MvTmV0d29ya0RhdGFUYXNrLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nl
c3MvY29jb2EvTmV0d29ya0RhdGFUYXNrQ29jb2EuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vz
cy9jb2NvYS9OZXR3b3JrRGF0YVRhc2tDb2NvYS5tbToKKyAgICAgICAgKFdlYktpdDo6TmV0d29y
a0RhdGFUYXNrQ29jb2E6OnRyeVBhc3N3b3JkQmFzZWRBdXRoZW50aWNhdGlvbik6CisgICAgICAg
ICogU2hhcmVkL0F1dGhlbnRpY2F0aW9uL0F1dGhlbnRpY2F0aW9uTWFuYWdlci5jcHA6CisgICAg
ICAgIChXZWJLaXQ6OkF1dGhlbnRpY2F0aW9uTWFuYWdlcjo6dHJ5VXNlQ2VydGlmaWNhdGVJbmZv
Rm9yQ2hhbGxlbmdlKToKKyAgICAgICAgKiBTaGFyZWQvQXV0aGVudGljYXRpb24vQXV0aGVudGlj
YXRpb25NYW5hZ2VyLmg6CisgICAgICAgICogU2hhcmVkL0F1dGhlbnRpY2F0aW9uL21hYy9BdXRo
ZW50aWNhdGlvbk1hbmFnZXIubWFjLm1tOgorICAgICAgICAoV2ViS2l0OjpBdXRoZW50aWNhdGlv
bk1hbmFnZXI6OnRyeVVzZUNlcnRpZmljYXRlSW5mb0ZvckNoYWxsZW5nZSk6CisKIDIwMTctMDgt
MjIgIFJ5YW4gSGFkZGFkICA8cnlhbmhhZGRhZEBhcHBsZS5jb20+CiAKICAgICAgICAgVW5yZXZp
ZXdlZCwgcm9sbGluZyBvdXQgcjIyMTAyNy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvV1RGLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV1RGL1dURi54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qCmluZGV4IDQzMTdiNDUyZGNhYjk3MTJmYmM0YWQ1M2YyY2Q4NWVmODA4NmNmNzgu
LjA1MjY5NTE0MTYwMjhlOTI1YTM3ODQ1OGFmMWQ1OTllOWVmMTM3OGUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XVEYvV1RGLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dURi9X
VEYueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMjk4LDYgKzI5OCw3IEBACiAJCTMxM0VE
RUM5Nzc4RTQ5QzlCRUE5MUNGQyAvKiBTdGFja1RyYWNlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IFN0YWNrVHJhY2UuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQkzN0M3Q0MyOTFFQTQwQTczMDA3QkQ5NTYgLyogV2Vha0xpbmtpbmcuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2Vha0xpbmtpbmcuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJNDMwQjQ3ODcxQUFBQUMxQTAwMTIyM0RBIC8qIFN0cmluZ0NvbW1vbi5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTdHJpbmdDb21tb24uaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDZCQTlFQUIxRjRDRDYxRTAwOUEyQkJDIC8qIENvbXBs
ZXRpb25IYW5kbGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENvbXBsZXRp
b25IYW5kbGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxM0UxNzBBMUNEN0Q1
QkYwMEUzNjUwQiAvKiBMb2dnaW5nQWNjdW11bGF0b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gTG9nZ2luZ0FjY3VtdWxhdG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTUxNUY3OTRCMUNGQzlGNEEwMENDRUQ5MyAvKiBDcm9zc1RocmVhZENvcGllci5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBDcm9zc1RocmVhZENvcGllci5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxNUY3OTRDMUNGQzlGNEEwMENDRUQ5
MyAvKiBDcm9zc1RocmVhZENvcGllci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBDcm9zc1RocmVhZENvcGllci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNzU5
LDYgKzc2MCw3IEBACiAJCQkJMEY4RjJCOEYxNzJFMDBGMDAwN0RCREE1IC8qIENvbXBpbGF0aW9u
VGhyZWFkLmNwcCAqLywKIAkJCQkwRjhGMkI5MDE3MkUwMEYwMDA3REJEQTUgLyogQ29tcGlsYXRp
b25UaHJlYWQuaCAqLywKIAkJCQlBOEE0NzI3MDE1MUE4MjVBMDA0MTIzRkYgLyogQ29tcGlsZXIu
aCAqLywKKwkJCQk0NkJBOUVBQjFGNENENjFFMDA5QTJCQkMgLyogQ29tcGxldGlvbkhhbmRsZXIu
aCAqLywKIAkJCQkwRkRCNjk4RDFCN0M2NDNBMDAwQzEwNzggLyogQ29uZGl0aW9uLmggKi8sCiAJ
CQkJRTM4QzQxMjYxRUI0RTA2ODAwNDI5NTdEIC8qIENQVVRpbWUuY3BwICovLAogCQkJCUUzOEM0
MTI3MUVCNEUwNjgwMDQyOTU3RCAvKiBDUFVUaW1lLmggKi8sCkBAIC04NDEsOCArODQzLDggQEAK
IAkJCQkwRkY0QjRDNDFFODg5MzlDMDBEQkJFODYgLyogTGl2ZW5lc3MuaCAqLywKIAkJCQkwRkUx
NjQ2ODFCNkZGQzk2MDA0MDBFN0MgLyogTG9jay5jcHAgKi8sCiAJCQkJMEZFMTY0NjkxQjZGRkM5
NjAwNDAwRTdDIC8qIExvY2suaCAqLywKLQkJCQkwRjMxREQ3MDFGMTMwOEJDMDA3MkVCNEEgLyog
TG9ja0FsZ29yaXRobUlubGluZXMuaCAqLywKIAkJCQkwRjBGQ0RERDFERDE2N0Y5MDBDQ0FCNTMg
LyogTG9ja0FsZ29yaXRobS5oICovLAorCQkJCTBGMzFERDcwMUYxMzA4QkMwMDcyRUI0QSAvKiBM
b2NrQWxnb3JpdGhtSW5saW5lcy5oICovLAogCQkJCTBGNjBGMzJEMURGQ0JEMUIwMDQxNkQ2QyAv
KiBMb2NrZWRQcmludFN0cmVhbS5jcHAgKi8sCiAJCQkJMEY2MEYzMkUxREZDQkQxQjAwNDE2RDZD
IC8qIExvY2tlZFByaW50U3RyZWFtLmggKi8sCiAJCQkJQThBNDcyQzMxNTFBODI1QTAwNDEyM0ZG
IC8qIExvY2tlci5oICovLApAQCAtMTMxNiwxNiArMTMxOCwxMyBAQAogCQkJCUE4QTQ3M0E4MTUx
QTgyNUIwMDQxMjNGRiAvKiBiaWdudW0tZHRvYS5jYyBpbiBTb3VyY2VzICovLAogCQkJCUE4QTQ3
M0FBMTUxQTgyNUIwMDQxMjNGRiAvKiBiaWdudW0uY2MgaW4gU291cmNlcyAqLywKIAkJCQlBOEE0
NzQ1MTE1MUE4MjVCMDA0MTIzRkYgLyogQmluYXJ5U2VtYXBob3JlLmNwcCBpbiBTb3VyY2VzICov
LAotCQkJCTUxRjE3NTJEMUYzRDQ4NjAwMEM3NDk1MCAvKiBQZXJzaXN0ZW50RW5jb2Rlci5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQlBOEE0NzM4QjE1MUE4MjVCMDA0MTIzRkYgLyogQml0VmVjdG9y
LmNwcCBpbiBTb3VyY2VzICovLAotCQkJCUEzRTRERDkzMUYzQTgwMzQwMERFRDBCNCAvKiBUZXh0
U3RyZWFtLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCURDRUUyMjAxMUNFQTc1NTEwMDBDMjM5NiAv
KiBCbG9ja09iakNFeGNlcHRpb25zLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJQThBNDczQUMxNTFB
ODI1QjAwNDEyM0ZGIC8qIGNhY2hlZC1wb3dlcnMuY2MgaW4gU291cmNlcyAqLywKIAkJCQkwRjY2
QjI4QTFEQzk3QkFCMDA0QTFEM0YgLyogQ2xvY2tUeXBlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CUE4QTQ3NDYwMTUxQTgyNUIwMDQxMjNGRiAvKiBDb2xsYXRvckRlZmF1bHQuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJQThBNDc0NjMxNTFBODI1QjAwNDEyM0ZGIC8qIENvbGxhdG9ySUNVLmNwcCBp
biBTb3VyY2VzICovLAogCQkJCTBGOEYyQjkyMTcyRTAxMDMwMDdEQkRBNSAvKiBDb21waWxhdGlv
blRocmVhZC5jcHAgaW4gU291cmNlcyAqLywKLQkJCQk1MUYxNzUyQzFGM0Q0ODYwMDBDNzQ5NTAg
LyogUGVyc2lzdGVudERlY29kZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRTM4QzQxMjgxRUI0
RTA2ODAwNDI5NTdEIC8qIENQVVRpbWUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRTM4QzQxMjUx
RUI0RTA0QzAwNDI5NTdEIC8qIENQVVRpbWVDb2NvYS5tbSBpbiBTb3VyY2VzICovLAogCQkJCTUx
NUY3OTRFMUNGQzlGNEEwMENDRUQ5MyAvKiBDcm9zc1RocmVhZENvcGllci5jcHAgaW4gU291cmNl
cyAqLywKQEAgLTEzNDAsMTkgKzEzMzksMTggQEAKIAkJCQlBOEE0NzNBRTE1MUE4MjVCMDA0MTIz
RkYgLyogZGl5LWZwLmNjIGluIFNvdXJjZXMgKi8sCiAJCQkJQThBNDczQjAxNTFBODI1QjAwNDEy
M0ZGIC8qIGRvdWJsZS1jb252ZXJzaW9uLmNjIGluIFNvdXJjZXMgKi8sCiAJCQkJQThBNDczQkEx
NTFBODI1QjAwNDEyM0ZGIC8qIGR0b2EuY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJNTFGMTc1MkIx
RjNENDg2MDAwQzc0OTUwIC8qIFBlcnNpc3RlbnRDb2RlcnMuY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJQThBNDczQjMxNTFBODI1QjAwNDEyM0ZGIC8qIGZhc3QtZHRvYS5jYyBpbiBTb3VyY2VzICov
LAogCQkJCTBGN0M1RkI2MUQ4ODVDRjIwMDQ0RjVFMiAvKiBGYXN0Qml0VmVjdG9yLmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCUE4QTQ3M0MzMTUxQTgyNUIwMDQxMjNGRiAvKiBGYXN0TWFsbG9jLmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCTBGOUQzMzYwMTY1REJBNzMwMDVBRDM4NyAvKiBGaWxlUHJp
bnRTdHJlYW0uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQThBNDczQjUxNTFBODI1QjAwNDEyM0ZG
IC8qIGZpeGVkLWR0b2EuY2MgaW4gU291cmNlcyAqLywKIAkJCQkxQTFEOEI5RTE3MzE4Nzk4MDAx
NDFEQTQgLyogRnVuY3Rpb25EaXNwYXRjaGVyLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTBGNUJG
MTc2MUYyM0Q0OUEwMDI5RDkxRCAvKiBHaWdhY2FnZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkw
RjMwQkE5MDFFNzg3MDhFMDAyQ0E4NDcgLyogR2xvYmFsVmVyc2lvbi5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQkyQ0NEODkyQTE1QzAzOTAyMDAyODUwODMgLyogR3JlZ29yaWFuRGF0ZVRpbWUuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJQThBNDczRDgxNTFBODI1QjAwNDEyM0ZGIC8qIEhhc2hUYWJs
ZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRkUxNjQ2QTFCNkZGQzk2MDA0MDBFN0MgLyogTG9j
ay5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjYwRjMyRjFERkNCRDFCMDA0MTZENkMgLyogTG9j
a2VkUHJpbnRTdHJlYW0uY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJMEZFQzNDNUUxRjM2OEE5NzAw
RjU5QjZDIC8qIFJlYWRXcml0ZUxvY2suY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNTM1MzRGMkEx
RUMwRTEwRTAwMTQxQjJGIC8qIE1hY2hFeGNlcHRpb25zLmRlZnMgaW4gU291cmNlcyAqLywKIAkJ
CQlBOEE0NzNFNTE1MUE4MjVCMDA0MTIzRkYgLyogTWFpblRocmVhZC5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQlBOEE0NzNFNDE1MUE4MjVCMDA0MTIzRkYgLyogTWFpblRocmVhZE1hYy5tbSBpbiBT
b3VyY2VzICovLApAQCAtMTM2OSwxMSArMTM2NywxNSBAQAogCQkJCUE4QTQ3NDAyMTUxQTgyNUIw
MDQxMjNGRiAvKiBQYWdlQmxvY2suY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEZGRjE5REMxQkIz
MzRFQjAwODg2RDkxIC8qIFBhcmFsbGVsSGVscGVyUG9vbC5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQkwRjgyNEE2ODFCNzQ0M0EwMDAyRTM0NUQgLyogUGFya2luZ0xvdC5jcHAgaW4gU291cmNlcyAq
LywKKwkJCQk1MUYxNzUyQjFGM0Q0ODYwMDBDNzQ5NTAgLyogUGVyc2lzdGVudENvZGVycy5jcHAg
aW4gU291cmNlcyAqLywKKwkJCQk1MUYxNzUyQzFGM0Q0ODYwMDBDNzQ5NTAgLyogUGVyc2lzdGVu
dERlY29kZXIuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJNTFGMTc1MkQxRjNENDg2MDAwQzc0OTUw
IC8qIFBlcnNpc3RlbnRFbmNvZGVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCURDRUUyMjAzMUNF
QTc1NTEwMDBDMjM5NiAvKiBQbGF0Zm9ybVVzZXJQcmVmZXJyZWRMYW5ndWFnZXNNYWMubW0gaW4g
U291cmNlcyAqLywKIAkJCQkwRjlEMzM2MjE2NURCQTczMDA1QUQzODcgLyogUHJpbnRTdHJlYW0u
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMTQzRjYxMUYxNTY1RjBGOTAwREI1MTRBIC8qIFJBTVNp
emUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTNCNzI1RUM5ODc0NDZBRDkzRjFBNDQwIC8qIFJh
bmRvbURldmljZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBOEE0NzQxNDE1MUE4MjVCMDA0MTIz
RkYgLyogUmFuZG9tTnVtYmVyLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTBGRUMzQzVFMUYzNjhB
OTcwMEY1OUI2QyAvKiBSZWFkV3JpdGVMb2NrLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE4QTQ3
NDFBMTUxQTgyNUIwMDQxMjNGRiAvKiBSZWZDb3VudGVkTGVha0NvdW50ZXIuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJMkNERUQwRjMxODExNUM4NTAwNERCQTcwIC8qIFJ1bkxvb3AuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJMkNERUQwRUYxODExNUMzODAwNERCQTcwIC8qIFJ1bkxvb3BDRi5jcHAg
aW4gU291cmNlcyAqLywKQEAgLTEzOTMsNyArMTM5NSw2IEBACiAJCQkJQThBNDc0NDAxNTFBODI1
QjAwNDEyM0ZGIC8qIFN0cmluZ0ltcGwuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTVCQTE1RkMx
ODI0MzVBNjAwQTgyRTY5IC8qIFN0cmluZ0ltcGxDRi5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlB
NUJBMTVGNTE4MjQzNDgwMDBBODJFNjkgLyogU3RyaW5nSW1wbE1hYy5tbSBpbiBTb3VyY2VzICov
LAotCQkJCTBGNUJGMTc2MUYyM0Q0OUEwMDI5RDkxRCAvKiBHaWdhY2FnZS5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQlBNUJBMTVGMzE4MjQzM0E5MDBBODJFNjkgLyogU3RyaW5nTWFjLm1tIGluIFNv
dXJjZXMgKi8sCiAJCQkJMEZEREJGQTcxNjY2REZBMzAwQzU1RkVGIC8qIFN0cmluZ1ByaW50U3Ry
ZWFtLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTkzRjE5OTNFMTlENzk1OEQwMEMyMzkwQiAvKiBT
dHJpbmdWaWV3LmNwcCBpbiBTb3VyY2VzICovLApAQCAtMTQwNCw5ICsxNDA1LDEwIEBACiAJCQkJ
NzBBOTkzRkUxQUQ3MTUxMzAwRkE2MTVCIC8qIFN5bWJvbFJlZ2lzdHJ5LmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCTFDMTgxQzdGMUQzMDc4REEwMEY1RkExNiAvKiBUZXh0QnJlYWtJdGVyYXRvci5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQkxQzE4MUM5NjFEMzA4MDBBMDBGNUZBMTYgLyogVGV4dEJy
ZWFrSXRlcmF0b3JJbnRlcm5hbElDVU1hYy5tbSBpbiBTb3VyY2VzICovLAorCQkJCUEzRTRERDkz
MUYzQTgwMzQwMERFRDBCNCAvKiBUZXh0U3RyZWFtLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUUz
MTFGQjE3MUYwQTU2OEIwMDNDMDhERSAvKiBUaHJlYWRHcm91cC5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQlBOEE0NzQ0QTE1MUE4MjVCMDA0MTIzRkYgLyogVGhyZWFkaW5nLmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCUE4QTQ3NDRFMTUxQTgyNUIwMDQxMjNGRiAvKiBUaHJlYWRpbmdQdGhyZWFkcy5j
cHAgaW4gU291cmNlcyAqLywKLQkJCQlFMzExRkIxNzFGMEE1NjhCMDAzQzA4REUgLyogVGhyZWFk
R3JvdXAuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNTMxMUJENUMxRUE4MjJGOTAwNTI1MjgxIC8q
IFRocmVhZE1lc3NhZ2UuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEY2NkIyOTAxREM5N0JBQjAw
NEExRDNGIC8qIFRpbWVXaXRoRHluYW1pY0Nsb2NrVHlwZS5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQkxQzE4MUM4RjFEMzA3QUI4MDBGNUZBMTYgLyogVVRleHRQcm92aWRlci5jcHAgaW4gU291cmNl
cyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL0NvbXBsZXRpb25IYW5kbGVyLmggYi9T
b3VyY2UvV1RGL3d0Zi9Db21wbGV0aW9uSGFuZGxlci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjM2YjFjYjY2ZmY1
Y2M2ZjNmODJhZDYzYWE0NTU2YzhkMjg5YTcwYzkKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
V1RGL3d0Zi9Db21wbGV0aW9uSGFuZGxlci5oCkBAIC0wLDAgKzEsNjkgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENP
TlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICog
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAq
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIkZ1bmN0aW9uLmgiCisKK25hbWVzcGFjZSBXVEYg
eworCit0ZW1wbGF0ZTx0eXBlbmFtZT4gY2xhc3MgQ29tcGxldGlvbkhhbmRsZXI7CisKKy8vIFdy
YXBzIGEgV1RGOjpGdW5jdGlvbiB0byBtYWtlIHN1cmUgaXQgaXMgYWx3YXlzIGNhbGxlZCBvbmNl
IGFuZCBvbmx5IG9uY2UuCit0ZW1wbGF0ZSA8dHlwZW5hbWUgT3V0LCB0eXBlbmFtZS4uLiBJbj4K
K2NsYXNzIENvbXBsZXRpb25IYW5kbGVyPE91dChJbi4uLik+IHsKK3B1YmxpYzoKKyAgICBDb21w
bGV0aW9uSGFuZGxlcigpID0gZGVmYXVsdDsKKworICAgIHRlbXBsYXRlPHR5cGVuYW1lIENhbGxh
YmxlVHlwZSwgY2xhc3MgPSB0eXBlbmFtZSBzdGQ6OmVuYWJsZV9pZjxzdGQ6OmlzX3J2YWx1ZV9y
ZWZlcmVuY2U8Q2FsbGFibGVUeXBlJiY+Ojp2YWx1ZT46OnR5cGU+CisgICAgQ29tcGxldGlvbkhh
bmRsZXIoQ2FsbGFibGVUeXBlJiYgY2FsbGFibGUpCisgICAgICAgIDogbV9mdW5jdGlvbihXVEZN
b3ZlKGNhbGxhYmxlKSkKKyAgICB7CisgICAgfQorCisgICAgQ29tcGxldGlvbkhhbmRsZXIoQ29t
cGxldGlvbkhhbmRsZXImJikgPSBkZWZhdWx0OworICAgIENvbXBsZXRpb25IYW5kbGVyJiBvcGVy
YXRvcj0oQ29tcGxldGlvbkhhbmRsZXImJikgPSBkZWZhdWx0OworCisgICAgfkNvbXBsZXRpb25I
YW5kbGVyKCkKKyAgICB7CisgICAgICAgIEFTU0VSVF9XSVRIX01FU1NBR0UoIW1fZnVuY3Rpb24s
ICJDb21wbGV0aW9uIGhhbmRsZXIgc2hvdWxkIGFsd2F5cyBiZSBjYWxsZWQiKTsKKyAgICB9CisK
KyAgICBleHBsaWNpdCBvcGVyYXRvciBib29sKCkgY29uc3QgeyByZXR1cm4gISFtX2Z1bmN0aW9u
OyB9CisKKyAgICBPdXQgb3BlcmF0b3IoKShJbi4uLiBpbikKKyAgICB7CisgICAgICAgIEFTU0VS
VF9XSVRIX01FU1NBR0UobV9mdW5jdGlvbiwgIkNvbXBsZXRpb24gaGFuZGxlciBzaG91bGQgbm90
IGJlIGNhbGxlZCBtb3JlIHRoYW4gb25jZSIpOworICAgICAgICBhdXRvIGZ1bmN0aW9uID0gV1RG
TW92ZShtX2Z1bmN0aW9uKTsKKyAgICAgICAgcmV0dXJuIGZ1bmN0aW9uKHN0ZDo6Zm9yd2FyZDxJ
bj4oaW4pLi4uKTsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgV1RGOjpGdW5jdGlvbjxPdXQoSW4u
Li4pPiBtX2Z1bmN0aW9uOworfTsKKworfSAvLyBuYW1lc3BhY2UgV1RGCisKK3VzaW5nIFdURjo6
Q29tcGxldGlvbkhhbmRsZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL05ldHdvcmtEYXRhVGFzay5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05l
dHdvcmtEYXRhVGFzay5jcHAKaW5kZXggYTliMThiODM5MDVkMDE4MmQxZDI5MWZlNDk5ZGU4ZmJi
MjkwODEwOS4uYTAzM2RjNGE0OGVjZGRjNGUyM2VmNDc2YThhZTMxOWFkYTY3NjI1NSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrRGF0YVRhc2suY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0RhdGFUYXNrLmNwcApAQCAt
MTAzLDYgKzEwMyw3IEBAIHZvaWQgTmV0d29ya0RhdGFUYXNrOjpkaWRSZWNlaXZlUmVzcG9uc2Uo
UmVzb3VyY2VSZXNwb25zZSYmIHJlc3BvbnNlLCBSZXNwb25zZUNvCiAgICAgICAgIGF1dG8gdXJs
ID0gcmVzcG9uc2UudXJsKCk7CiAgICAgICAgIHN0ZDo6b3B0aW9uYWw8dWludDE2X3Q+IHBvcnQg
PSB1cmwucG9ydCgpOwogICAgICAgICBpZiAocG9ydCAmJiAhaXNEZWZhdWx0UG9ydEZvclByb3Rv
Y29sKHBvcnQudmFsdWUoKSwgdXJsLnByb3RvY29sKCkpKSB7CisgICAgICAgICAgICBjb21wbGV0
aW9uSGFuZGxlcih7IH0pOwogICAgICAgICAgICAgY2FuY2VsKCk7CiAgICAgICAgICAgICBtX2Ns
aWVudC0+ZGlkQ29tcGxldGVXaXRoRXJyb3IoeyBTdHJpbmcoKSwgMCwgdXJsLCAiQ2FuY2VsbGVk
IGxvYWQgZnJvbSAnIiArIHVybC5zdHJpbmdDZW50ZXJFbGxpcHNpemVkVG9MZW5ndGgoKSArICIn
IGJlY2F1c2UgaXQgaXMgdXNpbmcgSFRUUC8wLjkuIiB9KTsKICAgICAgICAgICAgIHJldHVybjsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0RhdGFUYXNr
LmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtEYXRhVGFzay5oCmluZGV4
IGVkYTMzNWU1ZjM0OWM5OWM4ZGRmNDAwOGU2NmE1ZjU1MzY4MWI0YjEuLjZhN2RmOTA2YjkzYzI4
YmE3YTMyMzI5MmI3N2IzYWQxMTE3YzU5ZmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvTmV0d29ya0RhdGFUYXNrLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9OZXR3b3JrRGF0YVRhc2suaApAQCAtMzYsNyArMzYsNyBAQAogI2luY2x1ZGUgPFdl
YkNvcmUvUmVzb3VyY2VMb2FkZXJPcHRpb25zLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9SZXNvdXJj
ZVJlcXVlc3QuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1RpbWVyLmg+Ci0jaW5jbHVkZSA8d3RmL0Z1
bmN0aW9uLmg+CisjaW5jbHVkZSA8d3RmL0NvbXBsZXRpb25IYW5kbGVyLmg+CiAjaW5jbHVkZSA8
d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTU0LDkgKzU0
LDkgQEAgY2xhc3MgTmV0d29ya1Nlc3Npb247CiBjbGFzcyBQZW5kaW5nRG93bmxvYWQ7CiBlbnVt
IGNsYXNzIEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlRGlzcG9zaXRpb247CiAKLXR5cGVkZWYgRnVu
Y3Rpb248dm9pZChjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmKT4gUmVkaXJlY3RDb21w
bGV0aW9uSGFuZGxlcjsKLXR5cGVkZWYgRnVuY3Rpb248dm9pZChBdXRoZW50aWNhdGlvbkNoYWxs
ZW5nZURpc3Bvc2l0aW9uLCBjb25zdCBXZWJDb3JlOjpDcmVkZW50aWFsJik+IENoYWxsZW5nZUNv
bXBsZXRpb25IYW5kbGVyOwotdHlwZWRlZiBGdW5jdGlvbjx2b2lkKFdlYkNvcmU6OlBvbGljeUFj
dGlvbik+IFJlc3BvbnNlQ29tcGxldGlvbkhhbmRsZXI7Cit1c2luZyBSZWRpcmVjdENvbXBsZXRp
b25IYW5kbGVyID0gQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBXZWJDb3JlOjpSZXNvdXJj
ZVJlcXVlc3QmKT47Cit1c2luZyBDaGFsbGVuZ2VDb21wbGV0aW9uSGFuZGxlciA9IENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoQXV0aGVudGljYXRpb25DaGFsbGVuZ2VEaXNwb3NpdGlvbiwgY29uc3Qg
V2ViQ29yZTo6Q3JlZGVudGlhbCYpPjsKK3VzaW5nIFJlc3BvbnNlQ29tcGxldGlvbkhhbmRsZXIg
PSBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFdlYkNvcmU6OlBvbGljeUFjdGlvbik+OwogCiBjbGFz
cyBOZXR3b3JrRGF0YVRhc2tDbGllbnQgewogcHVibGljOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrRGF0YVRhc2tDb2NvYS5oIGIvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrRGF0YVRhc2tDb2NvYS5oCmluZGV4
IGNlYjU5NjNlZDc5ODA1ODU0MDZiM2JhOWVmNjRjNDdiZThmY2EzZDkuLmRmYWY2NmQzOGY0YWJh
MTMyNzMwYjg3NTJlOGJiZTNhODgyNDU4YjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya0RhdGFUYXNrQ29jb2EuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtEYXRhVGFza0NvY29hLmgKQEAgLTczLDcg
KzczLDcgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICBOZXR3b3JrRGF0YVRhc2tDb2NvYShOZXR3
b3JrU2Vzc2lvbiYsIE5ldHdvcmtEYXRhVGFza0NsaWVudCYsIGNvbnN0IFdlYkNvcmU6OlJlc291
cmNlUmVxdWVzdCYsIFdlYkNvcmU6OlN0b3JlZENyZWRlbnRpYWxzLCBXZWJDb3JlOjpDb250ZW50
U25pZmZpbmdQb2xpY3ksIGJvb2wgc2hvdWxkQ2xlYXJSZWZlcnJlck9uSFRUUFNUb0hUVFBSZWRp
cmVjdCk7CiAKLSAgICBib29sIHRyeVBhc3N3b3JkQmFzZWRBdXRoZW50aWNhdGlvbihjb25zdCBX
ZWJDb3JlOjpBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYsIGNvbnN0IENoYWxsZW5nZUNvbXBsZXRp
b25IYW5kbGVyJik7CisgICAgYm9vbCB0cnlQYXNzd29yZEJhc2VkQXV0aGVudGljYXRpb24oY29u
c3QgV2ViQ29yZTo6QXV0aGVudGljYXRpb25DaGFsbGVuZ2UmLCBDaGFsbGVuZ2VDb21wbGV0aW9u
SGFuZGxlciYpOwogCiAgICAgUmVmUHRyPFNhbmRib3hFeHRlbnNpb24+IG1fc2FuZGJveEV4dGVu
c2lvbjsKICAgICBSZXRhaW5QdHI8TlNVUkxTZXNzaW9uRGF0YVRhc2s+IG1fdGFzazsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya0RhdGFUYXNr
Q29jb2EubW0gYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtEYXRh
VGFza0NvY29hLm1tCmluZGV4IGI2OWJmMDhkMzdkMzVkMTEzN2JmY2YxMzBlYzhlYmZmYjhjZjlk
NWUuLmRiMzNkYTJkMmZmODkwY2FlMDdiOTUyZjJjNDgxMjM4MTY3NzhiOGMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya0RhdGFUYXNrQ29jb2Eu
bW0KKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrRGF0YVRh
c2tDb2NvYS5tbQpAQCAtMjU0LDcgKzI1NCw3IEBAIHZvaWQgTmV0d29ya0RhdGFUYXNrQ29jb2E6
OnNldFBlbmRpbmdEb3dubG9hZExvY2F0aW9uKGNvbnN0IFdURjo6U3RyaW5nJiBmaWxlbmFtCiAg
ICAgICAgIFdlYkNvcmU6OmRlbGV0ZUZpbGUoZmlsZW5hbWUpOwogfQogCi1ib29sIE5ldHdvcmtE
YXRhVGFza0NvY29hOjp0cnlQYXNzd29yZEJhc2VkQXV0aGVudGljYXRpb24oY29uc3QgV2ViQ29y
ZTo6QXV0aGVudGljYXRpb25DaGFsbGVuZ2UmIGNoYWxsZW5nZSwgY29uc3QgQ2hhbGxlbmdlQ29t
cGxldGlvbkhhbmRsZXImIGNvbXBsZXRpb25IYW5kbGVyKQorYm9vbCBOZXR3b3JrRGF0YVRhc2tD
b2NvYTo6dHJ5UGFzc3dvcmRCYXNlZEF1dGhlbnRpY2F0aW9uKGNvbnN0IFdlYkNvcmU6OkF1dGhl
bnRpY2F0aW9uQ2hhbGxlbmdlJiBjaGFsbGVuZ2UsIENoYWxsZW5nZUNvbXBsZXRpb25IYW5kbGVy
JiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBpZiAoIWNoYWxsZW5nZS5wcm90ZWN0aW9uU3Bh
Y2UoKS5pc1Bhc3N3b3JkQmFzZWQoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9TaGFyZWQvQXV0aGVudGljYXRpb24vQXV0aGVudGljYXRpb25NYW5h
Z2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0F1dGhlbnRpY2F0aW9uL0F1dGhlbnRpY2F0
aW9uTWFuYWdlci5jcHAKaW5kZXggN2RmNzIzMTkzZjYxNzc2NjJjNzNjY2MyOTg5Mzc0NzhjZjQz
NGQ3ZS4uOTQxYjc2YTlkNDU0ZGQ0OTc2NTRmOGM3NDc0OGY4YWUwYTFjZmU1NiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9TaGFyZWQvQXV0aGVudGljYXRpb24vQXV0aGVudGljYXRpb25NYW5h
Z2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BdXRoZW50aWNhdGlvbi9BdXRoZW50
aWNhdGlvbk1hbmFnZXIuY3BwCkBAIC0xODksNyArMTg5LDcgQEAgdm9pZCBBdXRoZW50aWNhdGlv
bk1hbmFnZXI6OmRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZShEb3dubG9hZCYgZG93
bmxvYWQKIAogLy8gQ3VycmVudGx5LCBvbmx5IE1hYyBrbm93cyBob3cgdG8gcmVzcG9uZCB0byBh
dXRoZW50aWNhdGlvbiBjaGFsbGVuZ2VzIHdpdGggY2VydGlmaWNhdGUgaW5mby4KICNpZiAhSEFW
RShTRUNfSURFTlRJVFkpCi1ib29sIEF1dGhlbnRpY2F0aW9uTWFuYWdlcjo6dHJ5VXNlQ2VydGlm
aWNhdGVJbmZvRm9yQ2hhbGxlbmdlKGNvbnN0IFdlYkNvcmU6OkF1dGhlbnRpY2F0aW9uQ2hhbGxl
bmdlJiwgY29uc3QgQ2VydGlmaWNhdGVJbmZvJiwgY29uc3QgQ2hhbGxlbmdlQ29tcGxldGlvbkhh
bmRsZXImKQorYm9vbCBBdXRoZW50aWNhdGlvbk1hbmFnZXI6OnRyeVVzZUNlcnRpZmljYXRlSW5m
b0ZvckNoYWxsZW5nZShjb25zdCBXZWJDb3JlOjpBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYsIGNv
bnN0IENlcnRpZmljYXRlSW5mbyYsIENoYWxsZW5nZUNvbXBsZXRpb25IYW5kbGVyJikKIHsKICAg
ICByZXR1cm4gZmFsc2U7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BdXRo
ZW50aWNhdGlvbi9BdXRoZW50aWNhdGlvbk1hbmFnZXIuaCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L0F1dGhlbnRpY2F0aW9uL0F1dGhlbnRpY2F0aW9uTWFuYWdlci5oCmluZGV4IDM2MzZmZjFmNDMw
Y2EyMjEwNWFiMzM0NjdjYmMwZTFmYzJlMjQwYzUuLjZjNDljYzdiYzE1ODYzZDU3ODI3NTM3NjJm
NzQwMzRhODdhNmJjYTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0F1dGhlbnRp
Y2F0aW9uL0F1dGhlbnRpY2F0aW9uTWFuYWdlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L0F1dGhlbnRpY2F0aW9uL0F1dGhlbnRpY2F0aW9uTWFuYWdlci5oCkBAIC0zMCw4ICszMCw4IEBA
CiAjaW5jbHVkZSAiTmV0d29ya1Byb2Nlc3NTdXBwbGVtZW50LmgiCiAjaW5jbHVkZSAiV2ViUHJv
Y2Vzc1N1cHBsZW1lbnQuaCIKICNpbmNsdWRlIDxXZWJDb3JlL0F1dGhlbnRpY2F0aW9uQ2hhbGxl
bmdlLmg+CisjaW5jbHVkZSA8d3RmL0NvbXBsZXRpb25IYW5kbGVyLmg+CiAjaW5jbHVkZSA8d3Rm
L0ZvcndhcmQuaD4KLSNpbmNsdWRlIDx3dGYvRnVuY3Rpb24uaD4KICNpbmNsdWRlIDx3dGYvSGFz
aE1hcC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC01NCw3ICs1NCw3IEBAIGVudW0gY2xh
c3MgQXV0aGVudGljYXRpb25DaGFsbGVuZ2VEaXNwb3NpdGlvbiB7CiAgICAgQ2FuY2VsLAogICAg
IFJlamVjdFByb3RlY3Rpb25TcGFjZQogfTsKLXR5cGVkZWYgRnVuY3Rpb248dm9pZChBdXRoZW50
aWNhdGlvbkNoYWxsZW5nZURpc3Bvc2l0aW9uLCBjb25zdCBXZWJDb3JlOjpDcmVkZW50aWFsJik+
IENoYWxsZW5nZUNvbXBsZXRpb25IYW5kbGVyOwordXNpbmcgQ2hhbGxlbmdlQ29tcGxldGlvbkhh
bmRsZXIgPSBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlRGlz
cG9zaXRpb24sIGNvbnN0IFdlYkNvcmU6OkNyZWRlbnRpYWwmKT47CiAKIGNsYXNzIEF1dGhlbnRp
Y2F0aW9uTWFuYWdlciA6IHB1YmxpYyBXZWJQcm9jZXNzU3VwcGxlbWVudCwgcHVibGljIE5ldHdv
cmtQcm9jZXNzU3VwcGxlbWVudCwgcHVibGljIElQQzo6TWVzc2FnZVJlY2VpdmVyIHsKICAgICBX
VEZfTUFLRV9OT05DT1BZQUJMRShBdXRoZW50aWNhdGlvbk1hbmFnZXIpOwpAQCAtMTA1LDcgKzEw
NSw3IEBAIHByaXZhdGU6CiAgICAgLy8gSVBDOjpNZXNzYWdlUmVjZWl2ZXIKICAgICB2b2lkIGRp
ZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYpIG92ZXJyaWRl
OwogCi0gICAgYm9vbCB0cnlVc2VDZXJ0aWZpY2F0ZUluZm9Gb3JDaGFsbGVuZ2UoY29uc3QgV2Vi
Q29yZTo6QXV0aGVudGljYXRpb25DaGFsbGVuZ2UmLCBjb25zdCBXZWJDb3JlOjpDZXJ0aWZpY2F0
ZUluZm8mLCBjb25zdCBDaGFsbGVuZ2VDb21wbGV0aW9uSGFuZGxlciYpOworICAgIGJvb2wgdHJ5
VXNlQ2VydGlmaWNhdGVJbmZvRm9yQ2hhbGxlbmdlKGNvbnN0IFdlYkNvcmU6OkF1dGhlbnRpY2F0
aW9uQ2hhbGxlbmdlJiwgY29uc3QgV2ViQ29yZTo6Q2VydGlmaWNhdGVJbmZvJiwgQ2hhbGxlbmdl
Q29tcGxldGlvbkhhbmRsZXImKTsKIAogICAgIHVpbnQ2NF90IGFkZENoYWxsZW5nZVRvQ2hhbGxl
bmdlTWFwKENoYWxsZW5nZSYmKTsKICAgICBib29sIHNob3VsZENvYWxlc2NlQ2hhbGxlbmdlKHVp
bnQ2NF90IHBhZ2VJRCwgdWludDY0X3QgY2hhbGxlbmdlSUQsIGNvbnN0IFdlYkNvcmU6OkF1dGhl
bnRpY2F0aW9uQ2hhbGxlbmdlJikgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1No
YXJlZC9BdXRoZW50aWNhdGlvbi9tYWMvQXV0aGVudGljYXRpb25NYW5hZ2VyLm1hYy5tbSBiL1Nv
dXJjZS9XZWJLaXQvU2hhcmVkL0F1dGhlbnRpY2F0aW9uL21hYy9BdXRoZW50aWNhdGlvbk1hbmFn
ZXIubWFjLm1tCmluZGV4IDYzOTgwMDc3OTAyYTY5ZDRiMzEzZTEyNTFiNmU0YmY3NTkyMjhiYmYu
LjQ1NThjMmU3MTYzMjdjZjQwNzliNjAxODVkMDVjNDJhY2RkNjBhMDkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvU2hhcmVkL0F1dGhlbnRpY2F0aW9uL21hYy9BdXRoZW50aWNhdGlvbk1hbmFn
ZXIubWFjLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0F1dGhlbnRpY2F0aW9uL21hYy9B
dXRoZW50aWNhdGlvbk1hbmFnZXIubWFjLm1tCkBAIC02OSw3ICs2OSw3IEBAIHN0YXRpYyBOU0Fy
cmF5ICpjaGFpbihjb25zdCBDZXJ0aWZpY2F0ZUluZm8mIGNlcnRpZmljYXRlSW5mbykKIH0KIAog
Ly8gRklYTUU6IFRoaXMgZnVuY3Rpb24gY3JlYXRlcyBhbiBpZGVudGl0eSBmcm9tIGEgY2VydGlm
aWNhdGUsIHdoaWNoIHNob3VsZCBub3QgYmUgbmVlZGVkLiBXZSBzaG91bGQgcGFzcyBhbiBpZGVu
dGl0eSBvdmVyIElQQyAoYXMgd2UgZG8gb24gaU9TKS4KLWJvb2wgQXV0aGVudGljYXRpb25NYW5h
Z2VyOjp0cnlVc2VDZXJ0aWZpY2F0ZUluZm9Gb3JDaGFsbGVuZ2UoY29uc3QgQXV0aGVudGljYXRp
b25DaGFsbGVuZ2UmIGNoYWxsZW5nZSwgY29uc3QgQ2VydGlmaWNhdGVJbmZvJiBjZXJ0aWZpY2F0
ZUluZm8sIGNvbnN0IENoYWxsZW5nZUNvbXBsZXRpb25IYW5kbGVyJiBjb21wbGV0aW9uSGFuZGxl
cikKK2Jvb2wgQXV0aGVudGljYXRpb25NYW5hZ2VyOjp0cnlVc2VDZXJ0aWZpY2F0ZUluZm9Gb3JD
aGFsbGVuZ2UoY29uc3QgQXV0aGVudGljYXRpb25DaGFsbGVuZ2UmIGNoYWxsZW5nZSwgY29uc3Qg
Q2VydGlmaWNhdGVJbmZvJiBjZXJ0aWZpY2F0ZUluZm8sIENoYWxsZW5nZUNvbXBsZXRpb25IYW5k
bGVyJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBpZiAoY2VydGlmaWNhdGVJbmZvLmlzRW1w
dHkoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwo=
</data>

          </attachment>
      

    </bug>

</bugzilla>