<?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>233363</bug_id>
          
          <creation_ts>2021-11-19 06:16:34 -0800</creation_ts>
          <short_desc>Remove unnecessary flattening of SharedBuffer when sending them over IPC</short_desc>
          <delta_ts>2021-11-25 17:37:33 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Page Loading</component>
          <version>Other</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=233030</see_also>
    
    <see_also>https://bugs.webkit.org/show_bug.cgi?id=233401</see_also>
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Jean-Yves Avenard [:jya]">jean-yves.avenard</reporter>
          <assigned_to name="Jean-Yves Avenard [:jya]">jean-yves.avenard</assigned_to>
          <cc>beidson</cc>
    
    <cc>sam</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1816829</commentid>
    <comment_count>0</comment_count>
    <who name="Jean-Yves Avenard [:jya]">jean-yves.avenard</who>
    <bug_when>2021-11-19 06:16:34 -0800</bug_when>
    <thetext>In a few places in the code, a pattern to send a SharedBuffer across IPC doing like so:

```
        RefPtr&lt;SharedBuffer&gt; buffer = cachedImage-&gt;resourceBuffer();
        if (!buffer)
            return;
        uint64_t bufferSize = buffer-&gt;size();
        RefPtr&lt;SharedMemory&gt; sharedMemoryBuffer = SharedMemory::allocate(bufferSize);
        memcpy(sharedMemoryBuffer-&gt;data(), buffer-&gt;data(), bufferSize);
        SharedMemory::Handle handle;
        sharedMemoryBuffer-&gt;createHandle(handle, SharedMemory::Protection::ReadOnly);
        send(Messages::WebPageProxy::SaveImageToLibrary(SharedMemory::IPCHandle { WTFMove(handle), bufferSize }));
```

SharedBuffer::data() will silently flatten the Sharedbuffer if made of multiple segments, which includes a new memory allocation and a copy.

When the above could be done like so:
```
        RefPtr&lt;SharedBuffer&gt; buffer = cachedImage-&gt;resourceBuffer();
        if (!buffer)
            return;
        auto sharedMemoryBuffer = SharedMemory::copyBuffer(*buffer);
        SharedMemory::Handle handle;
        sharedMemoryBuffer-&gt;createHandle(handle, SharedMemory::Protection::ReadOnly);
        send(Messages::WebPageProxy::SaveImageToLibrary(SharedMemory::IPCHandle { WTFMove(handle), buffer-&gt;size() }));
```

the call SharedMemory::copyBuffer will achieve the same as above, but without the preliminary flattening of the SharedBuffer, eliminating a memory allocation and a copy.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1816835</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-11-19 06:38:43 -0800</bug_when>
    <thetext>&lt;rdar://problem/85600684&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1816842</commentid>
    <comment_count>2</comment_count>
      <attachid>444814</attachid>
    <who name="Jean-Yves Avenard [:jya]">jean-yves.avenard</who>
    <bug_when>2021-11-19 06:49:24 -0800</bug_when>
    <thetext>Created attachment 444814
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1816993</commentid>
    <comment_count>3</comment_count>
      <attachid>444854</attachid>
    <who name="Jean-Yves Avenard [:jya]">jean-yves.avenard</who>
    <bug_when>2021-11-19 14:08:26 -0800</bug_when>
    <thetext>Created attachment 444854
Patch

Ref&lt;T&gt; doesn&apos;t support indirection operator</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1817122</commentid>
    <comment_count>4</comment_count>
      <attachid>444854</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2021-11-20 09:49:05 -0800</bug_when>
    <thetext>Comment on attachment 444854
Patch

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

&gt; Source/WebKit/WebProcess/Plugins/PDF/PDFPlugin.mm:2668
&gt;              auto buffer = SharedBuffer::create(data);
&gt; +            auto sharedMemory = SharedMemory::copyBuffer(buffer.get());
&gt; +            if (!sharedMemory)
&gt; +                continue;

Would be nice to avoid the SharedBuffer allocation here also at some point by adding something like a SharedMemory::copyBuffer() that took a Span.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1817146</commentid>
    <comment_count>5</comment_count>
      <attachid>444854</attachid>
    <who name="Jean-Yves Avenard [:jya]">jean-yves.avenard</who>
    <bug_when>2021-11-20 15:10:01 -0800</bug_when>
    <thetext>Comment on attachment 444854
Patch

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

&gt;&gt; Source/WebKit/WebProcess/Plugins/PDF/PDFPlugin.mm:2668
&gt;&gt; +                continue;
&gt; 
&gt; Would be nice to avoid the SharedBuffer allocation here also at some point by adding something like a SharedMemory::copyBuffer() that took a Span.

data is a NSData, the SharedBuffer here creates a DataSegment that keeps a ref to the NSData; so there&apos;s no copy ; it works in practice like a span.

in bug 230329; we added the ability to append to a SharedBuffer a DataSegment::Provider which is a struct providing two methods: size() and data()</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1817149</commentid>
    <comment_count>6</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-11-20 15:22:02 -0800</bug_when>
    <thetext>Committed r286097 (244484@main): &lt;https://commits.webkit.org/244484@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 444854.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1817869</commentid>
    <comment_count>7</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2021-11-25 17:37:33 -0800</bug_when>
    <thetext>(In reply to Jean-Yves Avenard [:jya] from comment #5)
&gt; Comment on attachment 444854 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=444854&amp;action=review
&gt; 
&gt; &gt;&gt; Source/WebKit/WebProcess/Plugins/PDF/PDFPlugin.mm:2668
&gt; &gt;&gt; +                continue;
&gt; &gt; 
&gt; &gt; Would be nice to avoid the SharedBuffer allocation here also at some point by adding something like a SharedMemory::copyBuffer() that took a Span.
&gt; 
&gt; data is a NSData, the SharedBuffer here creates a DataSegment that keeps a
&gt; ref to the NSData; so there&apos;s no copy ; it works in practice like a span.
&gt; 
&gt; in bug 230329; we added the ability to append to a SharedBuffer a
&gt; DataSegment::Provider which is a struct providing two methods: size() and
&gt; data()

I wasn&apos;t worried about a copy, just trying to avoid an extra allocation of the SharedBuffer itself.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>444814</attachid>
            <date>2021-11-19 06:49:24 -0800</date>
            <delta_ts>2021-11-19 14:08:21 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-233363-20211120014922.patch</filename>
            <type>text/plain</type>
            <size>12025</size>
            <attacher name="Jean-Yves Avenard [:jya]">jean-yves.avenard</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg2MDQ0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGNhN2RiYzNhYmJmZTFlODg2
ODhkYzFlZTVjYzc1OWUwNTk1NGVlNjkuLjQ0N2RjOWY1M2RlODk5NDYxYjU2NDM0Mzc2YmEzYTM1
NjcwZWQwZmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzggQEAKKzIwMjEtMTEtMTkgIEplYW4tWXZl
cyBBdmVuYXJkICA8anlhQGFwcGxlLmNvbT4KKworICAgICAgICBSZW1vdmUgdW5uZWNlc3Nhcnkg
ZmxhdHRlbmluZyBvZiBTaGFyZWRCdWZmZXIgd2hlbiBzZW5kaW5nIHRoZW0gb3ZlciBJUEMKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMzM2MworICAg
ICAgICByZGFyOi8vODU2MDA2ODQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBJbiBzZXZlcmFsIHBsYWNlcywgYSBTaGFyZWRNZW1vcnkgd2FzIGFsbG9j
YXRlZCBmb2xsb3dlZCBieSBhIGNvcHkuIFRvIHBlcmZvcm0KKyAgICAgICAgdGhpcyBjb3B5LCB0
aGUgU2hhcmVkQnVmZmVyIHdhcyBmbGF0dGVuZWQgd2hpY2ggY291bGQgaW52b2x2ZSBhIG1lbW9y
eSBhbGxvY2F0aW9uCisgICAgICAgIGZvbGxvd2VkIGJ5IGEgY29weSBvZiBhbGwgc2VnbWVudHMg
aW50byB0aGUgZmluYWwgdmVjdG9yLgorICAgICAgICBXZSBpbnN0ZWFkIG1ha2UgdXNlIG9mIFNo
YXJlZEJ1ZmZlcjo6Y29weUJ1ZmZlciBjb252ZW5pZW5jZSBtZXRob2Qgd2hpY2ggd2lsbCBzaW1w
bHkKKyAgICAgICAgY29weSB0aGUgaW5kaXZpZHVhbCBzZWdtZW50IGludG8gdGhlIG5ld2x5IGFs
bG9jYXRlZCBTaGFyZWRNZW1vcnkuCisKKyAgICAgICAgTm8gY2hhbmdlIGluIHVzZXIgb2JzZXJ2
YWJsZSBiZWhhdmlvdXIuCisKKyAgICAgICAgRmx5LWJ5IGZpeDogU2hhcmVkTWVtb3J5OjphbGxv
Y2F0ZSBpcyBmYWxsaWJsZTsgZmV3IGluc3RhbmNlcyBkaWRuJ3QgY2hlY2sgdGhlCisgICAgICAg
IHJldHVybmVkIHZhbHVlLiBTbyB0ZXN0IHRoYXQgaXQgc3VjY2VlZGVkIGFuZCBwcmV2ZW50IGEg
Y3Jhc2ggKG51bGwgZGVyZWYpCisKKyAgICAgICAgKiBTaGFyZWQvV2ViSGl0VGVzdFJlc3VsdERh
dGEuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJIaXRUZXN0UmVzdWx0RGF0YTo6V2ViSGl0VGVz
dFJlc3VsdERhdGEpOgorICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9XZWJQYXN0ZWJvYXJkUHJv
eHlDb2NvYS5tbToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFzdGVib2FyZFByb3h5OjpnZXRQYXN0
ZWJvYXJkQnVmZmVyRm9yVHlwZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhc3RlYm9hcmRQcm94
eTo6cmVhZEJ1ZmZlckZyb21QYXN0ZWJvYXJkKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdp
bnMvUERGL1BERlBsdWdpbi5tbToKKyAgICAgICAgKFdlYktpdDo6UERGUGx1Z2luOjp3cml0ZUl0
ZW1zVG9QYXN0ZWJvYXJkKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dl
YlBsYXRmb3JtU3RyYXRlZ2llcy5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBsYXRmb3JtU3Ry
YXRlZ2llczo6c2V0QnVmZmVyRm9yVHlwZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3Jl
U3VwcG9ydC9tYWMvV2ViRHJhZ0NsaWVudE1hYy5tbToKKyAgICAgICAgKFdlYktpdDo6V2ViRHJh
Z0NsaWVudDo6ZGVjbGFyZUFuZFdyaXRlRHJhZ0ltYWdlKToKKyAgICAgICAgKiBXZWJQcm9jZXNz
L1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW06CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnBl
cmZvcm1BY3Rpb25PbkVsZW1lbnQpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9tYWMv
V2ViUGFnZU1hYy5tbToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6Z2V0RGF0YVNlbGVjdGlv
bkZvclBhc3RlYm9hcmQpOgorCiAyMDIxLTExLTE4ICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlz
dGVuc2VuQHdlYmtpdC5vcmc+CiAKICAgICAgICAgQWxsb3cgYWxsIHJlZGlyZWN0IHNjaGVtZXMg
d2hlbiBjb21waWxpbmcgYSBjb250ZW50IHJ1bGUgbGlzdApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9TaGFyZWQvV2ViSGl0VGVzdFJlc3VsdERhdGEuY3BwIGIvU291cmNlL1dlYktpdC9TaGFy
ZWQvV2ViSGl0VGVzdFJlc3VsdERhdGEuY3BwCmluZGV4IDE1MjI5OWE2YjM0NzVhMzNjNTdiZDJk
ZGUwOTVjNjY4ODA3YWQ1ZjcuLmNmMmU0ZDVmOTNmZDJkOTQ2YmFiZmY5M2VlYTNlOWU4NjBhZWJi
ZjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkhpdFRlc3RSZXN1bHREYXRh
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJIaXRUZXN0UmVzdWx0RGF0YS5jcHAK
QEAgLTg3LDggKzg3LDcgQEAgV2ViSGl0VGVzdFJlc3VsdERhdGE6OldlYkhpdFRlc3RSZXN1bHRE
YXRhKGNvbnN0IFdlYkNvcmU6OkhpdFRlc3RSZXN1bHQmIGhpdFRlc3QKICAgICBpZiAoSW1hZ2Uq
IGltYWdlID0gaGl0VGVzdFJlc3VsdC5pbWFnZSgpKSB7CiAgICAgICAgIFJlZlB0cjxTaGFyZWRC
dWZmZXI+IGJ1ZmZlciA9IGltYWdlLT5kYXRhKCk7CiAgICAgICAgIGlmIChidWZmZXIpIHsKLSAg
ICAgICAgICAgIGltYWdlU2hhcmVkTWVtb3J5ID0gV2ViS2l0OjpTaGFyZWRNZW1vcnk6OmFsbG9j
YXRlKGJ1ZmZlci0+c2l6ZSgpKTsKLSAgICAgICAgICAgIG1lbWNweShpbWFnZVNoYXJlZE1lbW9y
eS0+ZGF0YSgpLCBidWZmZXItPmRhdGEoKSwgYnVmZmVyLT5zaXplKCkpOworICAgICAgICAgICAg
aW1hZ2VTaGFyZWRNZW1vcnkgPSBXZWJLaXQ6OlNoYXJlZE1lbW9yeTo6Y29weUJ1ZmZlcigqYnVm
ZmVyKTsKICAgICAgICAgICAgIGltYWdlU2l6ZSA9IGJ1ZmZlci0+c2l6ZSgpOwogICAgICAgICB9
CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViUGFz
dGVib2FyZFByb3h5Q29jb2EubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJQ
YXN0ZWJvYXJkUHJveHlDb2NvYS5tbQppbmRleCBiYWQxYWY4MmFiYWMxNmFmNWZmYmZiOWU5Y2Fj
OWYyNmY3NWVmMjZiLi4xNzQ3MGM2MmM3MjBkZGU4MmI3OTE1YjdiM2I1ODIwMjNlYjUxZWM3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJQYXN0ZWJvYXJkUHJv
eHlDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJQYXN0ZWJv
YXJkUHJveHlDb2NvYS5tbQpAQCAtMjMzLDEwICsyMzMsOSBAQCB2b2lkIFdlYlBhc3RlYm9hcmRQ
cm94eTo6Z2V0UGFzdGVib2FyZEJ1ZmZlckZvclR5cGUoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0
aW9uLAogICAgICAgICB1aW50NjRfdCBzaXplID0gYnVmZmVyLT5zaXplKCk7CiAgICAgICAgIGlm
ICghc2l6ZSkKICAgICAgICAgICAgIHJldHVybiBjb21wbGV0aW9uSGFuZGxlcih7IH0pOwotICAg
ICAgICBSZWZQdHI8U2hhcmVkTWVtb3J5PiBzaGFyZWRNZW1vcnlCdWZmZXIgPSBTaGFyZWRNZW1v
cnk6OmFsbG9jYXRlKHNpemUpOworICAgICAgICBhdXRvIHNoYXJlZE1lbW9yeUJ1ZmZlciA9IFNo
YXJlZE1lbW9yeTo6Y29weUJ1ZmZlcigqYnVmZmVyKTsKICAgICAgICAgaWYgKCFzaGFyZWRNZW1v
cnlCdWZmZXIpCiAgICAgICAgICAgICByZXR1cm4gY29tcGxldGlvbkhhbmRsZXIoeyB9KTsKLSAg
ICAgICAgbWVtY3B5KHNoYXJlZE1lbW9yeUJ1ZmZlci0+ZGF0YSgpLCBidWZmZXItPmRhdGEoKSwg
c2l6ZSk7CiAgICAgICAgIFNoYXJlZE1lbW9yeTo6SGFuZGxlIGhhbmRsZTsKICAgICAgICAgaWYg
KCFzaGFyZWRNZW1vcnlCdWZmZXItPmNyZWF0ZUhhbmRsZShoYW5kbGUsIFNoYXJlZE1lbW9yeTo6
UHJvdGVjdGlvbjo6UmVhZE9ubHkpKQogICAgICAgICAgICAgcmV0dXJuIGNvbXBsZXRpb25IYW5k
bGVyKHsgfSk7CkBAIC01NTYsMTAgKzU1NSw5IEBAIHZvaWQgV2ViUGFzdGVib2FyZFByb3h5Ojpy
ZWFkQnVmZmVyRnJvbVBhc3RlYm9hcmQoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBzCiAg
ICAgICAgIHVpbnQ2NF90IHNpemUgPSBidWZmZXItPnNpemUoKTsKICAgICAgICAgaWYgKCFzaXpl
KQogICAgICAgICAgICAgcmV0dXJuIGNvbXBsZXRpb25IYW5kbGVyKHsgfSk7Ci0gICAgICAgIFJl
ZlB0cjxTaGFyZWRNZW1vcnk+IHNoYXJlZE1lbW9yeUJ1ZmZlciA9IFNoYXJlZE1lbW9yeTo6YWxs
b2NhdGUoc2l6ZSk7CisgICAgICAgIGF1dG8gc2hhcmVkTWVtb3J5QnVmZmVyID0gU2hhcmVkTWVt
b3J5Ojpjb3B5QnVmZmVyKCpidWZmZXIpOwogICAgICAgICBpZiAoIXNoYXJlZE1lbW9yeUJ1ZmZl
cikKICAgICAgICAgICAgIHJldHVybiBjb21wbGV0aW9uSGFuZGxlcih7IH0pOwotICAgICAgICBt
ZW1jcHkoc2hhcmVkTWVtb3J5QnVmZmVyLT5kYXRhKCksIGJ1ZmZlci0+ZGF0YSgpLCBzaXplKTsK
ICAgICAgICAgU2hhcmVkTWVtb3J5OjpIYW5kbGUgaGFuZGxlOwogICAgICAgICBpZiAoIXNoYXJl
ZE1lbW9yeUJ1ZmZlci0+Y3JlYXRlSGFuZGxlKGhhbmRsZSwgU2hhcmVkTWVtb3J5OjpQcm90ZWN0
aW9uOjpSZWFkT25seSkpCiAgICAgICAgICAgICByZXR1cm4gY29tcGxldGlvbkhhbmRsZXIoeyB9
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQ
bHVnaW4ubW0gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2lu
Lm1tCmluZGV4IDIyOWQ2MmQyZjBkMjBlODk0MTcyZTI0MWZiYjE3ZjYxYTNkZTM0ZjYuLjk1YWNl
YTVjYjQyMDhkMDcwZWI4NzJkOTVhMDljZmJkMjBkNmZhOWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW4ubW0KKysrIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpbi5tbQpAQCAtMjY2Myw5ICsyNjYz
LDEwIEBAIHZvaWQgUERGUGx1Z2luOjp3cml0ZUl0ZW1zVG9QYXN0ZWJvYXJkKE5TU3RyaW5nICpw
YXN0ZWJvYXJkTmFtZSwgTlNBcnJheSAqaXRlbXMsCiAgICAgICAgICAgICB3ZWJQcm9jZXNzLnBh
cmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmRTeW5jKE1lc3NhZ2VzOjpXZWJQYXN0ZWJvYXJk
UHJveHk6OlNldFBhc3RlYm9hcmRTdHJpbmdGb3JUeXBlKHBhc3RlYm9hcmROYW1lLCB0eXBlLCBw
bGFpblRleHRTdHJpbmcuZ2V0KCksIHBhZ2VJZGVudGlmaWVyKSwgTWVzc2FnZXM6OldlYlBhc3Rl
Ym9hcmRQcm94eTo6U2V0UGFzdGVib2FyZFN0cmluZ0ZvclR5cGU6OlJlcGx5KG5ld0NoYW5nZUNv
dW50KSwgMCk7CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICBhdXRvIGJ1ZmZlciA9IFNo
YXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEpOworICAgICAgICAgICAgYXV0byBzaGFyZWRNZW1vcnkg
PSBTaGFyZWRNZW1vcnk6OmNvcHlCdWZmZXIoKmJ1ZmZlcik7CisgICAgICAgICAgICBpZiAoIXNo
YXJlZE1lbW9yeSkKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgIFNoYXJl
ZE1lbW9yeTo6SGFuZGxlIGhhbmRsZTsKLSAgICAgICAgICAgIGF1dG8gc2hhcmVkTWVtb3J5ID0g
U2hhcmVkTWVtb3J5OjphbGxvY2F0ZShidWZmZXItPnNpemUoKSk7Ci0gICAgICAgICAgICBtZW1j
cHkoc2hhcmVkTWVtb3J5LT5kYXRhKCksIGJ1ZmZlci0+ZGF0YSgpLCBidWZmZXItPnNpemUoKSk7
CiAgICAgICAgICAgICBzaGFyZWRNZW1vcnktPmNyZWF0ZUhhbmRsZShoYW5kbGUsIFNoYXJlZE1l
bW9yeTo6UHJvdGVjdGlvbjo6UmVhZE9ubHkpOwogICAgICAgICAgICAgd2ViUHJvY2Vzcy5wYXJl
bnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kU3luYyhNZXNzYWdlczo6V2ViUGFzdGVib2FyZFBy
b3h5OjpTZXRQYXN0ZWJvYXJkQnVmZmVyRm9yVHlwZShwYXN0ZWJvYXJkTmFtZSwgdHlwZSwgU2hh
cmVkTWVtb3J5OjpJUENIYW5kbGUgeyBXVEZNb3ZlKGhhbmRsZSksIGJ1ZmZlci0+c2l6ZSgpIH0s
IHBhZ2VJZGVudGlmaWVyKSwgTWVzc2FnZXM6OldlYlBhc3RlYm9hcmRQcm94eTo6U2V0UGFzdGVi
b2FyZEJ1ZmZlckZvclR5cGU6OlJlcGx5KG5ld0NoYW5nZUNvdW50KSwgMCk7CiAgICAgICAgIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQ
bGF0Zm9ybVN0cmF0ZWdpZXMuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVT
dXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5jcHAKaW5kZXggYTJiZWU2Y2Q4MmM2ZjM2OTEy
OTAzNWExY2FjZWQ0ZTE4NGFmODljZS4uNWQwNWMwZWFiNzZiNjJiNGY4MzZjODU4MjIxZmVhNDQ3
MmUwNTU2ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBw
b3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5jcHAKQEAgLTIxMSwxMyAr
MjExLDExIEBAIGludDY0X3QgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpzZXRCdWZmZXJGb3JUeXBl
KFNoYXJlZEJ1ZmZlciogYnVmZmVyLCBjb25zdCBTdHJpCiB7CiAgICAgU2hhcmVkTWVtb3J5OjpI
YW5kbGUgaGFuZGxlOwogICAgIGlmIChidWZmZXIgJiYgYnVmZmVyLT5zaXplKCkpIHsKLSAgICAg
ICAgUmVmUHRyPFNoYXJlZE1lbW9yeT4gc2hhcmVkTWVtb3J5QnVmZmVyID0gU2hhcmVkTWVtb3J5
OjphbGxvY2F0ZShidWZmZXItPnNpemUoKSk7CisgICAgICAgIGF1dG8gc2hhcmVkTWVtb3J5QnVm
ZmVyID0gU2hhcmVkTWVtb3J5Ojpjb3B5QnVmZmVyKCpidWZmZXIpOwogICAgICAgICAvLyBGSVhN
RTogTnVsbCBjaGVjayBwcmV2ZW50cyBjcmFzaGluZywgYnV0IGl0IGlzIG5vdCBncmVhdCB0aGF0
IHdlIHdpbGwgaGF2ZSBlbXB0eSBwYXN0ZWJvYXJkIGNvbnRlbnQgZm9yIHRoaXMgdHlwZSwKICAg
ICAgICAgLy8gYmVjYXVzZSB3ZSd2ZSBhbHJlYWR5IHNldCB0aGUgdHlwZXMuCi0gICAgICAgIGlm
IChzaGFyZWRNZW1vcnlCdWZmZXIpIHsKLSAgICAgICAgICAgIG1lbWNweShzaGFyZWRNZW1vcnlC
dWZmZXItPmRhdGEoKSwgYnVmZmVyLT5kYXRhKCksIGJ1ZmZlci0+c2l6ZSgpKTsKKyAgICAgICAg
aWYgKHNoYXJlZE1lbW9yeUJ1ZmZlcikKICAgICAgICAgICAgIHNoYXJlZE1lbW9yeUJ1ZmZlci0+
Y3JlYXRlSGFuZGxlKGhhbmRsZSwgU2hhcmVkTWVtb3J5OjpQcm90ZWN0aW9uOjpSZWFkT25seSk7
Ci0gICAgICAgIH0KICAgICB9CiAgICAgaW50NjRfdCBuZXdDaGFuZ2VDb3VudCB7IDAgfTsKICAg
ICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5k
U3luYyhNZXNzYWdlczo6V2ViUGFzdGVib2FyZFByb3h5OjpTZXRQYXN0ZWJvYXJkQnVmZmVyRm9y
VHlwZShwYXN0ZWJvYXJkTmFtZSwgcGFzdGVib2FyZFR5cGUsIFNoYXJlZE1lbW9yeTo6SVBDSGFu
ZGxlIHsgV1RGTW92ZShoYW5kbGUpLCBidWZmZXIgPyBidWZmZXItPnNpemUoKSA6IDAgfSwgcGFn
ZUlkZW50aWZpZXIoY29udGV4dCkpLCBNZXNzYWdlczo6V2ViUGFzdGVib2FyZFByb3h5OjpTZXRQ
YXN0ZWJvYXJkQnVmZmVyRm9yVHlwZTo6UmVwbHkobmV3Q2hhbmdlQ291bnQpLCAwKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9tYWMvV2ViRHJh
Z0NsaWVudE1hYy5tbSBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9t
YWMvV2ViRHJhZ0NsaWVudE1hYy5tbQppbmRleCA4MDg2MzE4ZTk4OWM0NzljM2VlYmRiMTNhMzNi
MDg5MWUwZmJmNGFhLi41NGFkOWMyZWYwNTM1NWJlYmUzZmEwNjA3ZWExYzdjOGRkNjFjODM0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvbWFjL1dl
YkRyYWdDbGllbnRNYWMubW0KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVT
dXBwb3J0L21hYy9XZWJEcmFnQ2xpZW50TWFjLm1tCkBAIC0xNTIsMTIgKzE1MiwxMSBAQCB2b2lk
IFdlYkRyYWdDbGllbnQ6OmRlY2xhcmVBbmRXcml0ZURyYWdJbWFnZShjb25zdCBTdHJpbmcmIHBh
c3RlYm9hcmROYW1lLCBFbGVtZQogICAgIAogICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGltYWdl
QnVmZmVyID0gaW1hZ2UtPmltYWdlKCktPmRhdGEoKTsKICAgICBzaXplX3QgaW1hZ2VTaXplID0g
aW1hZ2VCdWZmZXItPnNpemUoKTsKLSAgICBTaGFyZWRNZW1vcnk6OkhhbmRsZSBpbWFnZUhhbmRs
ZTsKLSAgICAKLSAgICBSZWZQdHI8U2hhcmVkTWVtb3J5PiBzaGFyZWRNZW1vcnlCdWZmZXIgPSBT
aGFyZWRNZW1vcnk6OmFsbG9jYXRlKGltYWdlQnVmZmVyLT5zaXplKCkpOworCisgICAgYXV0byBz
aGFyZWRNZW1vcnlCdWZmZXIgPSBTaGFyZWRNZW1vcnk6OmNvcHlCdWZmZXIoKmltYWdlQnVmZmVy
KTsKICAgICBpZiAoIXNoYXJlZE1lbW9yeUJ1ZmZlcikKICAgICAgICAgcmV0dXJuOwotICAgIG1l
bWNweShzaGFyZWRNZW1vcnlCdWZmZXItPmRhdGEoKSwgaW1hZ2VCdWZmZXItPmRhdGEoKSwgaW1h
Z2VTaXplKTsKKyAgICBTaGFyZWRNZW1vcnk6OkhhbmRsZSBpbWFnZUhhbmRsZTsKICAgICBzaGFy
ZWRNZW1vcnlCdWZmZXItPmNyZWF0ZUhhbmRsZShpbWFnZUhhbmRsZSwgU2hhcmVkTWVtb3J5OjpQ
cm90ZWN0aW9uOjpSZWFkT25seSk7CiAgICAgCiAgICAgUmV0YWluUHRyPENGRGF0YVJlZj4gZGF0
YSA9IGFyY2hpdmUgPyBhcmNoaXZlLT5yYXdEYXRhUmVwcmVzZW50YXRpb24oKSA6IDA7CkBAIC0x
NjUsMTEgKzE2NCwxMCBAQCB2b2lkIFdlYkRyYWdDbGllbnQ6OmRlY2xhcmVBbmRXcml0ZURyYWdJ
bWFnZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBFbGVtZQogICAgIHNpemVfdCBhcmNo
aXZlU2l6ZSA9IDA7CiAgICAgaWYgKGRhdGEpIHsKICAgICAgICAgYXV0byBhcmNoaXZlQnVmZmVy
ID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKF9fYnJpZGdlIE5TRGF0YSAqKWRhdGEuZ2V0KCkpOwot
ICAgICAgICBSZWZQdHI8U2hhcmVkTWVtb3J5PiBhcmNoaXZlU2hhcmVkTWVtb3J5QnVmZmVyID0g
U2hhcmVkTWVtb3J5OjphbGxvY2F0ZShhcmNoaXZlQnVmZmVyLT5zaXplKCkpOworICAgICAgICBh
dXRvIGFyY2hpdmVTaGFyZWRNZW1vcnlCdWZmZXIgPSBTaGFyZWRNZW1vcnk6OmNvcHlCdWZmZXIo
KmFyY2hpdmVCdWZmZXIpOwogICAgICAgICBpZiAoIWFyY2hpdmVTaGFyZWRNZW1vcnlCdWZmZXIp
CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIGFyY2hpdmVTaXplID0gYXJjaGl2ZUJ1ZmZl
ci0+c2l6ZSgpOwotICAgICAgICBtZW1jcHkoYXJjaGl2ZVNoYXJlZE1lbW9yeUJ1ZmZlci0+ZGF0
YSgpLCBhcmNoaXZlQnVmZmVyLT5kYXRhKCksIGFyY2hpdmVTaXplKTsKICAgICAgICAgYXJjaGl2
ZVNoYXJlZE1lbW9yeUJ1ZmZlci0+Y3JlYXRlSGFuZGxlKGFyY2hpdmVIYW5kbGUsIFNoYXJlZE1l
bW9yeTo6UHJvdGVjdGlvbjo6UmVhZE9ubHkpOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW0gYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbQppbmRleCAyMjM5ZWNjNTM1
MTgwNzUwNTE1ZDBlNGY0ZjAzYTdiNzVkMTg1YjgxLi44NmUwNGM1OTYwMmQzMzVlZDcyYTFjMjFh
OTkwYWQzZTNkNzY3Njg1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
UGFnZS9pb3MvV2ViUGFnZUlPUy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
UGFnZS9pb3MvV2ViUGFnZUlPUy5tbQpAQCAtMzIyMCwxMiArMzIyMCwxMiBAQCB2b2lkIFdlYlBh
Z2U6OnBlcmZvcm1BY3Rpb25PbkVsZW1lbnQodWludDMyX3QgYWN0aW9uKQogICAgICAgICBSZWZQ
dHI8U2hhcmVkQnVmZmVyPiBidWZmZXIgPSBjYWNoZWRJbWFnZS0+cmVzb3VyY2VCdWZmZXIoKTsK
ICAgICAgICAgaWYgKCFidWZmZXIpCiAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIHVpbnQ2
NF90IGJ1ZmZlclNpemUgPSBidWZmZXItPnNpemUoKTsKLSAgICAgICAgUmVmUHRyPFNoYXJlZE1l
bW9yeT4gc2hhcmVkTWVtb3J5QnVmZmVyID0gU2hhcmVkTWVtb3J5OjphbGxvY2F0ZShidWZmZXJT
aXplKTsKLSAgICAgICAgbWVtY3B5KHNoYXJlZE1lbW9yeUJ1ZmZlci0+ZGF0YSgpLCBidWZmZXIt
PmRhdGEoKSwgYnVmZmVyU2l6ZSk7CisgICAgICAgIGF1dG8gc2hhcmVkTWVtb3J5QnVmZmVyID0g
U2hhcmVkTWVtb3J5Ojpjb3B5QnVmZmVyKCpidWZmZXIpOworICAgICAgICBpZiAoIXNoYXJlZE1l
bW9yeUJ1ZmZlcikKKyAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgU2hhcmVkTWVtb3J5OjpI
YW5kbGUgaGFuZGxlOwogICAgICAgICBzaGFyZWRNZW1vcnlCdWZmZXItPmNyZWF0ZUhhbmRsZSho
YW5kbGUsIFNoYXJlZE1lbW9yeTo6UHJvdGVjdGlvbjo6UmVhZE9ubHkpOwotICAgICAgICBzZW5k
KE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OlNhdmVJbWFnZVRvTGlicmFyeShTaGFyZWRNZW1vcnk6
OklQQ0hhbmRsZSB7IFdURk1vdmUoaGFuZGxlKSwgYnVmZmVyU2l6ZSB9KSk7CisgICAgICAgIHNl
bmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6U2F2ZUltYWdlVG9MaWJyYXJ5KFNoYXJlZE1lbW9y
eTo6SVBDSGFuZGxlIHsgV1RGTW92ZShoYW5kbGUpLCBidWZmZXItPnNpemUoKSB9KSk7CiAgICAg
fQogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMv
V2ViUGFnZU1hYy5tbSBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9XZWJQ
YWdlTWFjLm1tCmluZGV4IDVkOTc0ZGNiYzI4OWM0YmU1YTcwN2E0OGU5YzgzMDUzNjA2ZDdjZTIu
LmQ0MTI4MmZjNWRjNjNjMzE3ZTU0YjgyNjBjNTdlMzQ0Y2EzNmUzMDkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9XZWJQYWdlTWFjLm1tCisrKyBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9XZWJQYWdlTWFjLm1tCkBAIC01Njks
MTIgKzU2OSwxMiBAQCB2b2lkIFdlYlBhZ2U6OmdldERhdGFTZWxlY3Rpb25Gb3JQYXN0ZWJvYXJk
KGNvbnN0IFN0cmluZyBwYXN0ZWJvYXJkVHlwZSwgQ29tcGxldAogICAgIFJlZlB0cjxTaGFyZWRC
dWZmZXI+IGJ1ZmZlciA9IGZyYW1lLmVkaXRvcigpLmRhdGFTZWxlY3Rpb25Gb3JQYXN0ZWJvYXJk
KHBhc3RlYm9hcmRUeXBlKTsKICAgICBpZiAoIWJ1ZmZlcikKICAgICAgICAgcmV0dXJuIGNvbXBs
ZXRpb25IYW5kbGVyKHsgfSk7Ci0gICAgdWludDY0X3Qgc2l6ZSA9IGJ1ZmZlci0+c2l6ZSgpOwot
ICAgIFJlZlB0cjxTaGFyZWRNZW1vcnk+IHNoYXJlZE1lbW9yeUJ1ZmZlciA9IFNoYXJlZE1lbW9y
eTo6YWxsb2NhdGUoc2l6ZSk7Ci0gICAgbWVtY3B5KHNoYXJlZE1lbW9yeUJ1ZmZlci0+ZGF0YSgp
LCBidWZmZXItPmRhdGEoKSwgc2l6ZSk7CisgICAgYXV0byBzaGFyZWRNZW1vcnlCdWZmZXIgPSBT
aGFyZWRNZW1vcnk6OmNvcHlCdWZmZXIoKmJ1ZmZlcik7CisgICAgaWYgKCFzaGFyZWRNZW1vcnlC
dWZmZXIpCisgICAgICAgIHJldHVybiBjb21wbGV0aW9uSGFuZGxlcih7IH0pOwogICAgIFNoYXJl
ZE1lbW9yeTo6SGFuZGxlIGhhbmRsZTsKICAgICBzaGFyZWRNZW1vcnlCdWZmZXItPmNyZWF0ZUhh
bmRsZShoYW5kbGUsIFNoYXJlZE1lbW9yeTo6UHJvdGVjdGlvbjo6UmVhZE9ubHkpOwotICAgIGNv
bXBsZXRpb25IYW5kbGVyKFNoYXJlZE1lbW9yeTo6SVBDSGFuZGxlIHsgV1RGTW92ZShoYW5kbGUp
LCBzaXplIH0pOworICAgIGNvbXBsZXRpb25IYW5kbGVyKFNoYXJlZE1lbW9yeTo6SVBDSGFuZGxl
IHsgV1RGTW92ZShoYW5kbGUpLCBidWZmZXItPnNpemUoKSB9KTsKIH0KIAogV0tBY2Nlc3NpYmls
aXR5V2ViUGFnZU9iamVjdCogV2ViUGFnZTo6YWNjZXNzaWJpbGl0eVJlbW90ZU9iamVjdCgpCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>444854</attachid>
            <date>2021-11-19 14:08:26 -0800</date>
            <delta_ts>2021-11-20 15:22:03 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-233363-20211120090824.patch</filename>
            <type>text/plain</type>
            <size>12035</size>
            <attacher name="Jean-Yves Avenard [:jya]">jean-yves.avenard</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg2MDQ0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGNhN2RiYzNhYmJmZTFlODg2
ODhkYzFlZTVjYzc1OWUwNTk1NGVlNjkuLjQ0N2RjOWY1M2RlODk5NDYxYjU2NDM0Mzc2YmEzYTM1
NjcwZWQwZmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzggQEAKKzIwMjEtMTEtMTkgIEplYW4tWXZl
cyBBdmVuYXJkICA8anlhQGFwcGxlLmNvbT4KKworICAgICAgICBSZW1vdmUgdW5uZWNlc3Nhcnkg
ZmxhdHRlbmluZyBvZiBTaGFyZWRCdWZmZXIgd2hlbiBzZW5kaW5nIHRoZW0gb3ZlciBJUEMKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMzM2MworICAg
ICAgICByZGFyOi8vODU2MDA2ODQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBJbiBzZXZlcmFsIHBsYWNlcywgYSBTaGFyZWRNZW1vcnkgd2FzIGFsbG9j
YXRlZCBmb2xsb3dlZCBieSBhIGNvcHkuIFRvIHBlcmZvcm0KKyAgICAgICAgdGhpcyBjb3B5LCB0
aGUgU2hhcmVkQnVmZmVyIHdhcyBmbGF0dGVuZWQgd2hpY2ggY291bGQgaW52b2x2ZSBhIG1lbW9y
eSBhbGxvY2F0aW9uCisgICAgICAgIGZvbGxvd2VkIGJ5IGEgY29weSBvZiBhbGwgc2VnbWVudHMg
aW50byB0aGUgZmluYWwgdmVjdG9yLgorICAgICAgICBXZSBpbnN0ZWFkIG1ha2UgdXNlIG9mIFNo
YXJlZEJ1ZmZlcjo6Y29weUJ1ZmZlciBjb252ZW5pZW5jZSBtZXRob2Qgd2hpY2ggd2lsbCBzaW1w
bHkKKyAgICAgICAgY29weSB0aGUgaW5kaXZpZHVhbCBzZWdtZW50IGludG8gdGhlIG5ld2x5IGFs
bG9jYXRlZCBTaGFyZWRNZW1vcnkuCisKKyAgICAgICAgTm8gY2hhbmdlIGluIHVzZXIgb2JzZXJ2
YWJsZSBiZWhhdmlvdXIuCisKKyAgICAgICAgRmx5LWJ5IGZpeDogU2hhcmVkTWVtb3J5OjphbGxv
Y2F0ZSBpcyBmYWxsaWJsZTsgZmV3IGluc3RhbmNlcyBkaWRuJ3QgY2hlY2sgdGhlCisgICAgICAg
IHJldHVybmVkIHZhbHVlLiBTbyB0ZXN0IHRoYXQgaXQgc3VjY2VlZGVkIGFuZCBwcmV2ZW50IGEg
Y3Jhc2ggKG51bGwgZGVyZWYpCisKKyAgICAgICAgKiBTaGFyZWQvV2ViSGl0VGVzdFJlc3VsdERh
dGEuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJIaXRUZXN0UmVzdWx0RGF0YTo6V2ViSGl0VGVz
dFJlc3VsdERhdGEpOgorICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9XZWJQYXN0ZWJvYXJkUHJv
eHlDb2NvYS5tbToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFzdGVib2FyZFByb3h5OjpnZXRQYXN0
ZWJvYXJkQnVmZmVyRm9yVHlwZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhc3RlYm9hcmRQcm94
eTo6cmVhZEJ1ZmZlckZyb21QYXN0ZWJvYXJkKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdp
bnMvUERGL1BERlBsdWdpbi5tbToKKyAgICAgICAgKFdlYktpdDo6UERGUGx1Z2luOjp3cml0ZUl0
ZW1zVG9QYXN0ZWJvYXJkKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dl
YlBsYXRmb3JtU3RyYXRlZ2llcy5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBsYXRmb3JtU3Ry
YXRlZ2llczo6c2V0QnVmZmVyRm9yVHlwZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3Jl
U3VwcG9ydC9tYWMvV2ViRHJhZ0NsaWVudE1hYy5tbToKKyAgICAgICAgKFdlYktpdDo6V2ViRHJh
Z0NsaWVudDo6ZGVjbGFyZUFuZFdyaXRlRHJhZ0ltYWdlKToKKyAgICAgICAgKiBXZWJQcm9jZXNz
L1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW06CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnBl
cmZvcm1BY3Rpb25PbkVsZW1lbnQpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9tYWMv
V2ViUGFnZU1hYy5tbToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6Z2V0RGF0YVNlbGVjdGlv
bkZvclBhc3RlYm9hcmQpOgorCiAyMDIxLTExLTE4ICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlz
dGVuc2VuQHdlYmtpdC5vcmc+CiAKICAgICAgICAgQWxsb3cgYWxsIHJlZGlyZWN0IHNjaGVtZXMg
d2hlbiBjb21waWxpbmcgYSBjb250ZW50IHJ1bGUgbGlzdApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9TaGFyZWQvV2ViSGl0VGVzdFJlc3VsdERhdGEuY3BwIGIvU291cmNlL1dlYktpdC9TaGFy
ZWQvV2ViSGl0VGVzdFJlc3VsdERhdGEuY3BwCmluZGV4IDE1MjI5OWE2YjM0NzVhMzNjNTdiZDJk
ZGUwOTVjNjY4ODA3YWQ1ZjcuLmNmMmU0ZDVmOTNmZDJkOTQ2YmFiZmY5M2VlYTNlOWU4NjBhZWJi
ZjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkhpdFRlc3RSZXN1bHREYXRh
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJIaXRUZXN0UmVzdWx0RGF0YS5jcHAK
QEAgLTg3LDggKzg3LDcgQEAgV2ViSGl0VGVzdFJlc3VsdERhdGE6OldlYkhpdFRlc3RSZXN1bHRE
YXRhKGNvbnN0IFdlYkNvcmU6OkhpdFRlc3RSZXN1bHQmIGhpdFRlc3QKICAgICBpZiAoSW1hZ2Uq
IGltYWdlID0gaGl0VGVzdFJlc3VsdC5pbWFnZSgpKSB7CiAgICAgICAgIFJlZlB0cjxTaGFyZWRC
dWZmZXI+IGJ1ZmZlciA9IGltYWdlLT5kYXRhKCk7CiAgICAgICAgIGlmIChidWZmZXIpIHsKLSAg
ICAgICAgICAgIGltYWdlU2hhcmVkTWVtb3J5ID0gV2ViS2l0OjpTaGFyZWRNZW1vcnk6OmFsbG9j
YXRlKGJ1ZmZlci0+c2l6ZSgpKTsKLSAgICAgICAgICAgIG1lbWNweShpbWFnZVNoYXJlZE1lbW9y
eS0+ZGF0YSgpLCBidWZmZXItPmRhdGEoKSwgYnVmZmVyLT5zaXplKCkpOworICAgICAgICAgICAg
aW1hZ2VTaGFyZWRNZW1vcnkgPSBXZWJLaXQ6OlNoYXJlZE1lbW9yeTo6Y29weUJ1ZmZlcigqYnVm
ZmVyKTsKICAgICAgICAgICAgIGltYWdlU2l6ZSA9IGJ1ZmZlci0+c2l6ZSgpOwogICAgICAgICB9
CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViUGFz
dGVib2FyZFByb3h5Q29jb2EubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJQ
YXN0ZWJvYXJkUHJveHlDb2NvYS5tbQppbmRleCBiYWQxYWY4MmFiYWMxNmFmNWZmYmZiOWU5Y2Fj
OWYyNmY3NWVmMjZiLi4xNzQ3MGM2MmM3MjBkZGU4MmI3OTE1YjdiM2I1ODIwMjNlYjUxZWM3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJQYXN0ZWJvYXJkUHJv
eHlDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJQYXN0ZWJv
YXJkUHJveHlDb2NvYS5tbQpAQCAtMjMzLDEwICsyMzMsOSBAQCB2b2lkIFdlYlBhc3RlYm9hcmRQ
cm94eTo6Z2V0UGFzdGVib2FyZEJ1ZmZlckZvclR5cGUoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0
aW9uLAogICAgICAgICB1aW50NjRfdCBzaXplID0gYnVmZmVyLT5zaXplKCk7CiAgICAgICAgIGlm
ICghc2l6ZSkKICAgICAgICAgICAgIHJldHVybiBjb21wbGV0aW9uSGFuZGxlcih7IH0pOwotICAg
ICAgICBSZWZQdHI8U2hhcmVkTWVtb3J5PiBzaGFyZWRNZW1vcnlCdWZmZXIgPSBTaGFyZWRNZW1v
cnk6OmFsbG9jYXRlKHNpemUpOworICAgICAgICBhdXRvIHNoYXJlZE1lbW9yeUJ1ZmZlciA9IFNo
YXJlZE1lbW9yeTo6Y29weUJ1ZmZlcigqYnVmZmVyKTsKICAgICAgICAgaWYgKCFzaGFyZWRNZW1v
cnlCdWZmZXIpCiAgICAgICAgICAgICByZXR1cm4gY29tcGxldGlvbkhhbmRsZXIoeyB9KTsKLSAg
ICAgICAgbWVtY3B5KHNoYXJlZE1lbW9yeUJ1ZmZlci0+ZGF0YSgpLCBidWZmZXItPmRhdGEoKSwg
c2l6ZSk7CiAgICAgICAgIFNoYXJlZE1lbW9yeTo6SGFuZGxlIGhhbmRsZTsKICAgICAgICAgaWYg
KCFzaGFyZWRNZW1vcnlCdWZmZXItPmNyZWF0ZUhhbmRsZShoYW5kbGUsIFNoYXJlZE1lbW9yeTo6
UHJvdGVjdGlvbjo6UmVhZE9ubHkpKQogICAgICAgICAgICAgcmV0dXJuIGNvbXBsZXRpb25IYW5k
bGVyKHsgfSk7CkBAIC01NTYsMTAgKzU1NSw5IEBAIHZvaWQgV2ViUGFzdGVib2FyZFByb3h5Ojpy
ZWFkQnVmZmVyRnJvbVBhc3RlYm9hcmQoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBzCiAg
ICAgICAgIHVpbnQ2NF90IHNpemUgPSBidWZmZXItPnNpemUoKTsKICAgICAgICAgaWYgKCFzaXpl
KQogICAgICAgICAgICAgcmV0dXJuIGNvbXBsZXRpb25IYW5kbGVyKHsgfSk7Ci0gICAgICAgIFJl
ZlB0cjxTaGFyZWRNZW1vcnk+IHNoYXJlZE1lbW9yeUJ1ZmZlciA9IFNoYXJlZE1lbW9yeTo6YWxs
b2NhdGUoc2l6ZSk7CisgICAgICAgIGF1dG8gc2hhcmVkTWVtb3J5QnVmZmVyID0gU2hhcmVkTWVt
b3J5Ojpjb3B5QnVmZmVyKCpidWZmZXIpOwogICAgICAgICBpZiAoIXNoYXJlZE1lbW9yeUJ1ZmZl
cikKICAgICAgICAgICAgIHJldHVybiBjb21wbGV0aW9uSGFuZGxlcih7IH0pOwotICAgICAgICBt
ZW1jcHkoc2hhcmVkTWVtb3J5QnVmZmVyLT5kYXRhKCksIGJ1ZmZlci0+ZGF0YSgpLCBzaXplKTsK
ICAgICAgICAgU2hhcmVkTWVtb3J5OjpIYW5kbGUgaGFuZGxlOwogICAgICAgICBpZiAoIXNoYXJl
ZE1lbW9yeUJ1ZmZlci0+Y3JlYXRlSGFuZGxlKGhhbmRsZSwgU2hhcmVkTWVtb3J5OjpQcm90ZWN0
aW9uOjpSZWFkT25seSkpCiAgICAgICAgICAgICByZXR1cm4gY29tcGxldGlvbkhhbmRsZXIoeyB9
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQ
bHVnaW4ubW0gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2lu
Lm1tCmluZGV4IDIyOWQ2MmQyZjBkMjBlODk0MTcyZTI0MWZiYjE3ZjYxYTNkZTM0ZjYuLmQyM2Fi
YjllNjUxMWIxM2JiZDUyM2FmNDUxZjQ0MTc4NzNhNmMxZTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW4ubW0KKysrIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpbi5tbQpAQCAtMjY2Myw5ICsyNjYz
LDEwIEBAIHZvaWQgUERGUGx1Z2luOjp3cml0ZUl0ZW1zVG9QYXN0ZWJvYXJkKE5TU3RyaW5nICpw
YXN0ZWJvYXJkTmFtZSwgTlNBcnJheSAqaXRlbXMsCiAgICAgICAgICAgICB3ZWJQcm9jZXNzLnBh
cmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmRTeW5jKE1lc3NhZ2VzOjpXZWJQYXN0ZWJvYXJk
UHJveHk6OlNldFBhc3RlYm9hcmRTdHJpbmdGb3JUeXBlKHBhc3RlYm9hcmROYW1lLCB0eXBlLCBw
bGFpblRleHRTdHJpbmcuZ2V0KCksIHBhZ2VJZGVudGlmaWVyKSwgTWVzc2FnZXM6OldlYlBhc3Rl
Ym9hcmRQcm94eTo6U2V0UGFzdGVib2FyZFN0cmluZ0ZvclR5cGU6OlJlcGx5KG5ld0NoYW5nZUNv
dW50KSwgMCk7CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICBhdXRvIGJ1ZmZlciA9IFNo
YXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEpOworICAgICAgICAgICAgYXV0byBzaGFyZWRNZW1vcnkg
PSBTaGFyZWRNZW1vcnk6OmNvcHlCdWZmZXIoYnVmZmVyLmdldCgpKTsKKyAgICAgICAgICAgIGlm
ICghc2hhcmVkTWVtb3J5KQorICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAg
U2hhcmVkTWVtb3J5OjpIYW5kbGUgaGFuZGxlOwotICAgICAgICAgICAgYXV0byBzaGFyZWRNZW1v
cnkgPSBTaGFyZWRNZW1vcnk6OmFsbG9jYXRlKGJ1ZmZlci0+c2l6ZSgpKTsKLSAgICAgICAgICAg
IG1lbWNweShzaGFyZWRNZW1vcnktPmRhdGEoKSwgYnVmZmVyLT5kYXRhKCksIGJ1ZmZlci0+c2l6
ZSgpKTsKICAgICAgICAgICAgIHNoYXJlZE1lbW9yeS0+Y3JlYXRlSGFuZGxlKGhhbmRsZSwgU2hh
cmVkTWVtb3J5OjpQcm90ZWN0aW9uOjpSZWFkT25seSk7CiAgICAgICAgICAgICB3ZWJQcm9jZXNz
LnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmRTeW5jKE1lc3NhZ2VzOjpXZWJQYXN0ZWJv
YXJkUHJveHk6OlNldFBhc3RlYm9hcmRCdWZmZXJGb3JUeXBlKHBhc3RlYm9hcmROYW1lLCB0eXBl
LCBTaGFyZWRNZW1vcnk6OklQQ0hhbmRsZSB7IFdURk1vdmUoaGFuZGxlKSwgYnVmZmVyLT5zaXpl
KCkgfSwgcGFnZUlkZW50aWZpZXIpLCBNZXNzYWdlczo6V2ViUGFzdGVib2FyZFByb3h5OjpTZXRQ
YXN0ZWJvYXJkQnVmZmVyRm9yVHlwZTo6UmVwbHkobmV3Q2hhbmdlQ291bnQpLCAwKTsKICAgICAg
ICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0
L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
Q29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmNwcAppbmRleCBhMmJlZTZjZDgyYzZm
MzY5MTI5MDM1YTFjYWNlZDRlMTg0YWY4OWNlLi41ZDA1YzBlYWI3NmI2MmI0ZjgzNmM4NTgyMjFm
ZWE0NDcyZTA1NTZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29y
ZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmNwcApAQCAtMjEx
LDEzICsyMTEsMTEgQEAgaW50NjRfdCBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OnNldEJ1ZmZlckZv
clR5cGUoU2hhcmVkQnVmZmVyKiBidWZmZXIsIGNvbnN0IFN0cmkKIHsKICAgICBTaGFyZWRNZW1v
cnk6OkhhbmRsZSBoYW5kbGU7CiAgICAgaWYgKGJ1ZmZlciAmJiBidWZmZXItPnNpemUoKSkgewot
ICAgICAgICBSZWZQdHI8U2hhcmVkTWVtb3J5PiBzaGFyZWRNZW1vcnlCdWZmZXIgPSBTaGFyZWRN
ZW1vcnk6OmFsbG9jYXRlKGJ1ZmZlci0+c2l6ZSgpKTsKKyAgICAgICAgYXV0byBzaGFyZWRNZW1v
cnlCdWZmZXIgPSBTaGFyZWRNZW1vcnk6OmNvcHlCdWZmZXIoKmJ1ZmZlcik7CiAgICAgICAgIC8v
IEZJWE1FOiBOdWxsIGNoZWNrIHByZXZlbnRzIGNyYXNoaW5nLCBidXQgaXQgaXMgbm90IGdyZWF0
IHRoYXQgd2Ugd2lsbCBoYXZlIGVtcHR5IHBhc3RlYm9hcmQgY29udGVudCBmb3IgdGhpcyB0eXBl
LAogICAgICAgICAvLyBiZWNhdXNlIHdlJ3ZlIGFscmVhZHkgc2V0IHRoZSB0eXBlcy4KLSAgICAg
ICAgaWYgKHNoYXJlZE1lbW9yeUJ1ZmZlcikgewotICAgICAgICAgICAgbWVtY3B5KHNoYXJlZE1l
bW9yeUJ1ZmZlci0+ZGF0YSgpLCBidWZmZXItPmRhdGEoKSwgYnVmZmVyLT5zaXplKCkpOworICAg
ICAgICBpZiAoc2hhcmVkTWVtb3J5QnVmZmVyKQogICAgICAgICAgICAgc2hhcmVkTWVtb3J5QnVm
ZmVyLT5jcmVhdGVIYW5kbGUoaGFuZGxlLCBTaGFyZWRNZW1vcnk6OlByb3RlY3Rpb246OlJlYWRP
bmx5KTsKLSAgICAgICAgfQogICAgIH0KICAgICBpbnQ2NF90IG5ld0NoYW5nZUNvdW50IHsgMCB9
OwogICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCkt
PnNlbmRTeW5jKE1lc3NhZ2VzOjpXZWJQYXN0ZWJvYXJkUHJveHk6OlNldFBhc3RlYm9hcmRCdWZm
ZXJGb3JUeXBlKHBhc3RlYm9hcmROYW1lLCBwYXN0ZWJvYXJkVHlwZSwgU2hhcmVkTWVtb3J5OjpJ
UENIYW5kbGUgeyBXVEZNb3ZlKGhhbmRsZSksIGJ1ZmZlciA/IGJ1ZmZlci0+c2l6ZSgpIDogMCB9
LCBwYWdlSWRlbnRpZmllcihjb250ZXh0KSksIE1lc3NhZ2VzOjpXZWJQYXN0ZWJvYXJkUHJveHk6
OlNldFBhc3RlYm9hcmRCdWZmZXJGb3JUeXBlOjpSZXBseShuZXdDaGFuZ2VDb3VudCksIDApOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L21hYy9X
ZWJEcmFnQ2xpZW50TWFjLm1tIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBw
b3J0L21hYy9XZWJEcmFnQ2xpZW50TWFjLm1tCmluZGV4IDgwODYzMThlOTg5YzQ3OWMzZWViZGIx
M2EzM2IwODkxZTBmYmY0YWEuLmE2NGM2YThiM2M2OTVlMTczMzY0MzM2YmNiMGY2OGRiZGQ5YzJk
MjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9t
YWMvV2ViRHJhZ0NsaWVudE1hYy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
Q29yZVN1cHBvcnQvbWFjL1dlYkRyYWdDbGllbnRNYWMubW0KQEAgLTE1MiwxMiArMTUyLDExIEBA
IHZvaWQgV2ViRHJhZ0NsaWVudDo6ZGVjbGFyZUFuZFdyaXRlRHJhZ0ltYWdlKGNvbnN0IFN0cmlu
ZyYgcGFzdGVib2FyZE5hbWUsIEVsZW1lCiAgICAgCiAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4g
aW1hZ2VCdWZmZXIgPSBpbWFnZS0+aW1hZ2UoKS0+ZGF0YSgpOwogICAgIHNpemVfdCBpbWFnZVNp
emUgPSBpbWFnZUJ1ZmZlci0+c2l6ZSgpOwotICAgIFNoYXJlZE1lbW9yeTo6SGFuZGxlIGltYWdl
SGFuZGxlOwotICAgIAotICAgIFJlZlB0cjxTaGFyZWRNZW1vcnk+IHNoYXJlZE1lbW9yeUJ1ZmZl
ciA9IFNoYXJlZE1lbW9yeTo6YWxsb2NhdGUoaW1hZ2VCdWZmZXItPnNpemUoKSk7CisKKyAgICBh
dXRvIHNoYXJlZE1lbW9yeUJ1ZmZlciA9IFNoYXJlZE1lbW9yeTo6Y29weUJ1ZmZlcigqaW1hZ2VC
dWZmZXIpOwogICAgIGlmICghc2hhcmVkTWVtb3J5QnVmZmVyKQogICAgICAgICByZXR1cm47Ci0g
ICAgbWVtY3B5KHNoYXJlZE1lbW9yeUJ1ZmZlci0+ZGF0YSgpLCBpbWFnZUJ1ZmZlci0+ZGF0YSgp
LCBpbWFnZVNpemUpOworICAgIFNoYXJlZE1lbW9yeTo6SGFuZGxlIGltYWdlSGFuZGxlOwogICAg
IHNoYXJlZE1lbW9yeUJ1ZmZlci0+Y3JlYXRlSGFuZGxlKGltYWdlSGFuZGxlLCBTaGFyZWRNZW1v
cnk6OlByb3RlY3Rpb246OlJlYWRPbmx5KTsKICAgICAKICAgICBSZXRhaW5QdHI8Q0ZEYXRhUmVm
PiBkYXRhID0gYXJjaGl2ZSA/IGFyY2hpdmUtPnJhd0RhdGFSZXByZXNlbnRhdGlvbigpIDogMDsK
QEAgLTE2NSwxMSArMTY0LDEwIEBAIHZvaWQgV2ViRHJhZ0NsaWVudDo6ZGVjbGFyZUFuZFdyaXRl
RHJhZ0ltYWdlKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIEVsZW1lCiAgICAgc2l6ZV90
IGFyY2hpdmVTaXplID0gMDsKICAgICBpZiAoZGF0YSkgewogICAgICAgICBhdXRvIGFyY2hpdmVC
dWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgoX19icmlkZ2UgTlNEYXRhICopZGF0YS5nZXQo
KSk7Ci0gICAgICAgIFJlZlB0cjxTaGFyZWRNZW1vcnk+IGFyY2hpdmVTaGFyZWRNZW1vcnlCdWZm
ZXIgPSBTaGFyZWRNZW1vcnk6OmFsbG9jYXRlKGFyY2hpdmVCdWZmZXItPnNpemUoKSk7CisgICAg
ICAgIGF1dG8gYXJjaGl2ZVNoYXJlZE1lbW9yeUJ1ZmZlciA9IFNoYXJlZE1lbW9yeTo6Y29weUJ1
ZmZlcihhcmNoaXZlQnVmZmVyLmdldCgpKTsKICAgICAgICAgaWYgKCFhcmNoaXZlU2hhcmVkTWVt
b3J5QnVmZmVyKQogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICBhcmNoaXZlU2l6ZSA9IGFy
Y2hpdmVCdWZmZXItPnNpemUoKTsKLSAgICAgICAgbWVtY3B5KGFyY2hpdmVTaGFyZWRNZW1vcnlC
dWZmZXItPmRhdGEoKSwgYXJjaGl2ZUJ1ZmZlci0+ZGF0YSgpLCBhcmNoaXZlU2l6ZSk7CiAgICAg
ICAgIGFyY2hpdmVTaGFyZWRNZW1vcnlCdWZmZXItPmNyZWF0ZUhhbmRsZShhcmNoaXZlSGFuZGxl
LCBTaGFyZWRNZW1vcnk6OlByb3RlY3Rpb246OlJlYWRPbmx5KTsKICAgICB9CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW0KaW5kZXgg
MjIzOWVjYzUzNTE4MDc1MDUxNWQwZTRmNGYwM2E3Yjc1ZDE4NWI4MS4uODZlMDRjNTk2MDJkMzM1
ZWQ3MmExYzIxYTk5MGFkM2UzZDc2NzY4NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW0KKysrIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW0KQEAgLTMyMjAsMTIgKzMyMjAsMTIgQEAg
dm9pZCBXZWJQYWdlOjpwZXJmb3JtQWN0aW9uT25FbGVtZW50KHVpbnQzMl90IGFjdGlvbikKICAg
ICAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gY2FjaGVkSW1hZ2UtPnJlc291cmNl
QnVmZmVyKCk7CiAgICAgICAgIGlmICghYnVmZmVyKQogICAgICAgICAgICAgcmV0dXJuOwotICAg
ICAgICB1aW50NjRfdCBidWZmZXJTaXplID0gYnVmZmVyLT5zaXplKCk7Ci0gICAgICAgIFJlZlB0
cjxTaGFyZWRNZW1vcnk+IHNoYXJlZE1lbW9yeUJ1ZmZlciA9IFNoYXJlZE1lbW9yeTo6YWxsb2Nh
dGUoYnVmZmVyU2l6ZSk7Ci0gICAgICAgIG1lbWNweShzaGFyZWRNZW1vcnlCdWZmZXItPmRhdGEo
KSwgYnVmZmVyLT5kYXRhKCksIGJ1ZmZlclNpemUpOworICAgICAgICBhdXRvIHNoYXJlZE1lbW9y
eUJ1ZmZlciA9IFNoYXJlZE1lbW9yeTo6Y29weUJ1ZmZlcigqYnVmZmVyKTsKKyAgICAgICAgaWYg
KCFzaGFyZWRNZW1vcnlCdWZmZXIpCisgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIFNoYXJl
ZE1lbW9yeTo6SGFuZGxlIGhhbmRsZTsKICAgICAgICAgc2hhcmVkTWVtb3J5QnVmZmVyLT5jcmVh
dGVIYW5kbGUoaGFuZGxlLCBTaGFyZWRNZW1vcnk6OlByb3RlY3Rpb246OlJlYWRPbmx5KTsKLSAg
ICAgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpTYXZlSW1hZ2VUb0xpYnJhcnkoU2hh
cmVkTWVtb3J5OjpJUENIYW5kbGUgeyBXVEZNb3ZlKGhhbmRsZSksIGJ1ZmZlclNpemUgfSkpOwor
ICAgICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OlNhdmVJbWFnZVRvTGlicmFyeShT
aGFyZWRNZW1vcnk6OklQQ0hhbmRsZSB7IFdURk1vdmUoaGFuZGxlKSwgYnVmZmVyLT5zaXplKCkg
fSkpOwogICAgIH0KIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YlBhZ2UvbWFjL1dlYlBhZ2VNYWMubW0gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFn
ZS9tYWMvV2ViUGFnZU1hYy5tbQppbmRleCA1ZDk3NGRjYmMyODljNGJlNWE3MDdhNDhlOWM4MzA1
MzYwNmQ3Y2UyLi5kNDEyODJmYzVkYzYzYzMxN2U1NGI4MjYwYzU3ZTM0NGNhMzZlMzA5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvV2ViUGFnZU1hYy5t
bQorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvV2ViUGFnZU1hYy5t
bQpAQCAtNTY5LDEyICs1NjksMTIgQEAgdm9pZCBXZWJQYWdlOjpnZXREYXRhU2VsZWN0aW9uRm9y
UGFzdGVib2FyZChjb25zdCBTdHJpbmcgcGFzdGVib2FyZFR5cGUsIENvbXBsZXQKICAgICBSZWZQ
dHI8U2hhcmVkQnVmZmVyPiBidWZmZXIgPSBmcmFtZS5lZGl0b3IoKS5kYXRhU2VsZWN0aW9uRm9y
UGFzdGVib2FyZChwYXN0ZWJvYXJkVHlwZSk7CiAgICAgaWYgKCFidWZmZXIpCiAgICAgICAgIHJl
dHVybiBjb21wbGV0aW9uSGFuZGxlcih7IH0pOwotICAgIHVpbnQ2NF90IHNpemUgPSBidWZmZXIt
PnNpemUoKTsKLSAgICBSZWZQdHI8U2hhcmVkTWVtb3J5PiBzaGFyZWRNZW1vcnlCdWZmZXIgPSBT
aGFyZWRNZW1vcnk6OmFsbG9jYXRlKHNpemUpOwotICAgIG1lbWNweShzaGFyZWRNZW1vcnlCdWZm
ZXItPmRhdGEoKSwgYnVmZmVyLT5kYXRhKCksIHNpemUpOworICAgIGF1dG8gc2hhcmVkTWVtb3J5
QnVmZmVyID0gU2hhcmVkTWVtb3J5Ojpjb3B5QnVmZmVyKCpidWZmZXIpOworICAgIGlmICghc2hh
cmVkTWVtb3J5QnVmZmVyKQorICAgICAgICByZXR1cm4gY29tcGxldGlvbkhhbmRsZXIoeyB9KTsK
ICAgICBTaGFyZWRNZW1vcnk6OkhhbmRsZSBoYW5kbGU7CiAgICAgc2hhcmVkTWVtb3J5QnVmZmVy
LT5jcmVhdGVIYW5kbGUoaGFuZGxlLCBTaGFyZWRNZW1vcnk6OlByb3RlY3Rpb246OlJlYWRPbmx5
KTsKLSAgICBjb21wbGV0aW9uSGFuZGxlcihTaGFyZWRNZW1vcnk6OklQQ0hhbmRsZSB7IFdURk1v
dmUoaGFuZGxlKSwgc2l6ZSB9KTsKKyAgICBjb21wbGV0aW9uSGFuZGxlcihTaGFyZWRNZW1vcnk6
OklQQ0hhbmRsZSB7IFdURk1vdmUoaGFuZGxlKSwgYnVmZmVyLT5zaXplKCkgfSk7CiB9CiAKIFdL
QWNjZXNzaWJpbGl0eVdlYlBhZ2VPYmplY3QqIFdlYlBhZ2U6OmFjY2Vzc2liaWxpdHlSZW1vdGVP
YmplY3QoKQo=
</data>

          </attachment>
      

    </bug>

</bugzilla>