<?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>233598</bug_id>
          
          <creation_ts>2021-11-29 14:27:12 -0800</creation_ts>
          <short_desc>SharedBuffer should use WTF::FileSystem when creating from a file</short_desc>
          <delta_ts>2021-12-11 19:05:49 -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>Platform</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Don Olmstead">don.olmstead</reporter>
          <assigned_to name="Don Olmstead">don.olmstead</assigned_to>
          <cc>achristensen</cc>
    
    <cc>annulen</cc>
    
    <cc>cdumez</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>ryuan.choi</cc>
    
    <cc>sergio</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1818480</commentid>
    <comment_count>0</comment_count>
    <who name="Don Olmstead">don.olmstead</who>
    <bug_when>2021-11-29 14:27:12 -0800</bug_when>
    <thetext>All the implementations are roughly the same and could just be abstracted using that instead.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1818494</commentid>
    <comment_count>1</comment_count>
      <attachid>445350</attachid>
    <who name="Don Olmstead">don.olmstead</who>
    <bug_when>2021-11-29 14:53:16 -0800</bug_when>
    <thetext>Created attachment 445350
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1818500</commentid>
    <comment_count>2</comment_count>
      <attachid>445350</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2021-11-29 15:13:36 -0800</bug_when>
    <thetext>Comment on attachment 445350
Patch

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

&gt; Source/WebCore/platform/SharedBuffer.cpp:174
&gt; +#if !PLATFORM(COCOA)

Why not cocoa?

&gt; Source/WebCore/platform/SharedBuffer.cpp:196
&gt; +    while ((bytesRead = FileSystem::readFromFile(fileHandle, buffer.data() + totalBytesRead, bytesToRead.value() - totalBytesRead)) &gt; 0)

This is most like the existing posix implementation.  The glib and Windows (and Cocoa) implementations use system functions that do the reading for you.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1818791</commentid>
    <comment_count>3</comment_count>
      <attachid>445350</attachid>
    <who name="Don Olmstead">don.olmstead</who>
    <bug_when>2021-11-30 09:52:33 -0800</bug_when>
    <thetext>Comment on attachment 445350
Patch

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

&gt;&gt; Source/WebCore/platform/SharedBuffer.cpp:174
&gt;&gt; +#if !PLATFORM(COCOA)
&gt; 
&gt; Why not cocoa?

The Cocoa code just had an ObjC function to read an entire file into NSData so its code was more straightforward.

I could remove that if its preferable.

&gt;&gt; Source/WebCore/platform/SharedBuffer.cpp:196
&gt;&gt; +    while ((bytesRead = FileSystem::readFromFile(fileHandle, buffer.data() + totalBytesRead, bytesToRead.value() - totalBytesRead)) &gt; 0)
&gt; 
&gt; This is most like the existing posix implementation.  The glib and Windows (and Cocoa) implementations use system functions that do the reading for you.

The glib variant does call a different function, g_file_get_contents instead of g_input_stream_read, but the Windows still calls ReadFile under the covers and POSIX still calls read.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1818920</commentid>
    <comment_count>4</comment_count>
      <attachid>445350</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2021-11-30 13:43:23 -0800</bug_when>
    <thetext>Comment on attachment 445350
Patch

Before this change, Cocoa Windows and Glib all do one function call to read something with known size and Posix calls read inside a loop.  After this change, everything except Cocoa calls read inside a loop.  I don&apos;t think that&apos;s an improvement.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1820772</commentid>
    <comment_count>5</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-12-06 14:28:38 -0800</bug_when>
    <thetext>&lt;rdar://problem/86123732&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1823272</commentid>
    <comment_count>6</comment_count>
      <attachid>446911</attachid>
    <who name="Don Olmstead">don.olmstead</who>
    <bug_when>2021-12-11 15:34:50 -0800</bug_when>
    <thetext>Created attachment 446911
Keep Cocoa and Glib specific function</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1823273</commentid>
    <comment_count>7</comment_count>
      <attachid>446912</attachid>
    <who name="Don Olmstead">don.olmstead</who>
    <bug_when>2021-12-11 15:37:52 -0800</bug_when>
    <thetext>Created attachment 446912
No platform specific implementation</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1823274</commentid>
    <comment_count>8</comment_count>
    <who name="Don Olmstead">don.olmstead</who>
    <bug_when>2021-12-11 15:38:44 -0800</bug_when>
    <thetext>Please let me know which option you prefer Alex and I&apos;ll turn that into the proper patch for it now that FileSystem::readEntireFile is implemented.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1823275</commentid>
    <comment_count>9</comment_count>
      <attachid>446912</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-12-11 15:53:45 -0800</bug_when>
    <thetext>Comment on attachment 446912
No platform specific implementation

I personally like this approach better. We should try and avoid platform-specific code unless there is a clear reason otherwise. I looked at the Cocoa implementation and it is not clear to me that it is any better. I think we should give this a try.

Note that there is a tiny risk that the Cocoa implementation is more performant for some reason (hard to say). If we notice it does regress something though, we can always add it back (like we did for some lower-level FileSystem functions).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1823284</commentid>
    <comment_count>10</comment_count>
      <attachid>446915</attachid>
    <who name="Don Olmstead">don.olmstead</who>
    <bug_when>2021-12-11 17:25:09 -0800</bug_when>
    <thetext>Created attachment 446915
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1823285</commentid>
    <comment_count>11</comment_count>
      <attachid>446915</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-12-11 17:27:37 -0800</bug_when>
    <thetext>Comment on attachment 446915
Patch

r=me assuming the bots are happy</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1823289</commentid>
    <comment_count>12</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-12-11 19:05:45 -0800</bug_when>
    <thetext>Committed r286922 (245148@main): &lt;https://commits.webkit.org/245148@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 446915.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>445350</attachid>
            <date>2021-11-29 14:53:16 -0800</date>
            <delta_ts>2021-12-11 15:34:50 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-233598.diff</filename>
            <type>text/plain</type>
            <size>11449</size>
            <attacher name="Don Olmstead">don.olmstead</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCAyZGY5YjQ1ZGU5NzYuLjQyNjgzY2Y1ZjBhMiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAt
MSwzICsxLDI2IEBACisyMDIxLTExLTI5ICBEb24gT2xtc3RlYWQgIDxkb24ub2xtc3RlYWRAc29u
eS5jb20+CisKKyAgICAgICAgU2hhcmVkQnVmZmVyOjpjcmVhdGVGcm9tUmVhZGluZ0ZpbGUgc2hv
dWxkIHVzZSBXVEY6OkZpbGVTeXN0ZW0KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTIzMzU5OAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIFNoYXJlIHRoZSBpbXBsZW1lbnRhdGlvbiBvZiBTaGFyZWRCdWZmZTo6
Y3JlYXRlRnJvbVJlYWRpbmdGaWxlIGJldHdlZW4gbm9uLWNvY29hIHBvcnRzIGJ5CisgICAgICAg
IHVzaW5nIHRoZSBXVEY6OkZpbGVTeXN0ZW0gYWJzdHJhY3Rpb25zLiBUaGUgaW1wbGVtZW50YXRp
b24gbWF0Y2hlcyB0aGUgb25lIGZyb20gUE9TSVggYnV0CisgICAgICAgIHVzZXMgV1RGOjpGaWxl
U3lzdGVtIGZ1bmN0aW9ucyByYXRoZXIgdGhhbiBQT1NJWC4KKworICAgICAgICBObyBuZXcgdGVz
dHMsIGNvdmVyZWQgYnkgZXhpc3RpbmcgdGVzdHMuCisKKyAgICAgICAgKiBQbGF0Zm9ybUZUVy5j
bWFrZToKKyAgICAgICAgKiBQbGF0Zm9ybVBsYXlTdGF0aW9uLmNtYWtlOgorICAgICAgICAqIFBs
YXRmb3JtV2luLmNtYWtlOgorICAgICAgICAqIHBsYXRmb3JtL1NoYXJlZEJ1ZmZlci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OmNyZWF0ZUZyb21SZWFkaW5nRmlsZSk6Cisg
ICAgICAgICogcGxhdGZvcm0vZ2xpYi9TaGFyZWRCdWZmZXJHbGliLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlNoYXJlZEJ1ZmZlcjo6Y3JlYXRlRnJvbVJlYWRpbmdGaWxlKTogRGVsZXRlZC4KKyAg
ICAgICAgKiBwbGF0Zm9ybS9wb3NpeC9TaGFyZWRCdWZmZXJQT1NJWC5jcHA6IFJlbW92ZWQuCisg
ICAgICAgICogcGxhdGZvcm0vd2luL1NoYXJlZEJ1ZmZlcldpbi5jcHA6IFJlbW92ZWQuCisKIDIw
MjEtMTEtMjkgIENocmlzIEZsZWl6YWNoICA8Y2ZsZWl6YWNoQGFwcGxlLmNvbT4KIAogICAgICAg
ICBBWDogVW5pZnkgc3BlZWNoIHN5bnRoZXNpemVyIHBsYXRmb3JtIHVzYWdlIGZvciBNYWMvaU9T
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybUZUVy5jbWFrZSBiL1NvdXJjZS9X
ZWJDb3JlL1BsYXRmb3JtRlRXLmNtYWtlCmluZGV4IDg2N2QyNTM2MTMwNy4uNTk3NjYzZmVhNmQy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybUZUVy5jbWFrZQorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9QbGF0Zm9ybUZUVy5jbWFrZQpAQCAtMTI0LDcgKzEyNCw2IEBAIGxpc3QoQVBQ
RU5EIFdlYkNvcmVfU09VUkNFUwogICAgIHBsYXRmb3JtL3dpbi9TY3JvbGxiYXJUaGVtZVdpbi5j
cHAKICAgICBwbGF0Zm9ybS93aW4vU2VhcmNoUG9wdXBNZW51REIuY3BwCiAgICAgcGxhdGZvcm0v
d2luL1NlYXJjaFBvcHVwTWVudVdpbi5jcHAKLSAgICBwbGF0Zm9ybS93aW4vU2hhcmVkQnVmZmVy
V2luLmNwcAogICAgIHBsYXRmb3JtL3dpbi9TdHJ1Y3R1cmVkRXhjZXB0aW9uSGFuZGxlclN1cHBy
ZXNzb3IuY3BwCiAgICAgcGxhdGZvcm0vd2luL1N5c3RlbUluZm8uY3BwCiAgICAgcGxhdGZvcm0v
d2luL1VzZXJBZ2VudFdpbi5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3Jt
UGxheVN0YXRpb24uY21ha2UgYi9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybVBsYXlTdGF0aW9uLmNt
YWtlCmluZGV4IGIwMzhiZmNiMzVjZi4uMjg0ODIwMmE2OWYzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9QbGF0Zm9ybVBsYXlTdGF0aW9uLmNtYWtlCisrKyBiL1NvdXJjZS9XZWJDb3JlL1Bs
YXRmb3JtUGxheVN0YXRpb24uY21ha2UKQEAgLTU4LDggKzU4LDYgQEAgbGlzdChBUFBFTkQgV2Vi
Q29yZV9TT1VSQ0VTCiAgICAgcGxhdGZvcm0vcGxheXN0YXRpb24vVXNlckFnZW50UGxheVN0YXRp
b24uY3BwCiAgICAgcGxhdGZvcm0vcGxheXN0YXRpb24vV2lkZ2V0UGxheVN0YXRpb24uY3BwCiAK
LSAgICBwbGF0Zm9ybS9wb3NpeC9TaGFyZWRCdWZmZXJQT1NJWC5jcHAKLQogICAgIHBsYXRmb3Jt
L3RleHQvSHlwaGVuYXRpb24uY3BwCiAgICAgcGxhdGZvcm0vdGV4dC9Mb2NhbGVJQ1UuY3BwCiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtV2luLmNtYWtlIGIvU291cmNlL1dl
YkNvcmUvUGxhdGZvcm1XaW4uY21ha2UKaW5kZXggYjIyMGFmMjBiZDNiLi4yYzExNzFlM2Q3NmUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtV2luLmNtYWtlCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL1BsYXRmb3JtV2luLmNtYWtlCkBAIC04OCw3ICs4OCw2IEBAIGxpc3QoQVBQRU5E
IFdlYkNvcmVfU09VUkNFUwogICAgIHBsYXRmb3JtL3dpbi9TY3JvbGxiYXJUaGVtZVdpbi5jcHAK
ICAgICBwbGF0Zm9ybS93aW4vU2VhcmNoUG9wdXBNZW51REIuY3BwCiAgICAgcGxhdGZvcm0vd2lu
L1NlYXJjaFBvcHVwTWVudVdpbi5jcHAKLSAgICBwbGF0Zm9ybS93aW4vU2hhcmVkQnVmZmVyV2lu
LmNwcAogICAgIHBsYXRmb3JtL3dpbi9TeXN0ZW1JbmZvLmNwcAogICAgIHBsYXRmb3JtL3dpbi9V
c2VyQWdlbnRXaW4uY3BwCiAgICAgcGxhdGZvcm0vd2luL1dDRGF0YU9iamVjdC5jcHAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlci5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXIuY3BwCmluZGV4IGQ4ZTY4ZTMzNzc4MS4uYjdj
ODVkM2IyOGEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZm
ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlci5jcHAKQEAg
LTE3MSw2ICsxNzEsNDAgQEAgY29uc3QgU2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudFZlY3RvckVu
dHJ5KiBTaGFyZWRCdWZmZXI6OmdldFNlZ21lbnRGb3JQb3NpdGlvbigKICAgICByZXR1cm4gZWxl
bWVudDsKIH0KIAorI2lmICFQTEFURk9STShDT0NPQSkKK1JlZlB0cjxTaGFyZWRCdWZmZXI+IFNo
YXJlZEJ1ZmZlcjo6Y3JlYXRlRnJvbVJlYWRpbmdGaWxlKGNvbnN0IFN0cmluZyYgZmlsZVBhdGgp
Cit7CisgICAgaWYgKGZpbGVQYXRoLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7
CisKKyAgICBhdXRvIGZpbGVuYW1lID0gU3RyaW5nOjpmcm9tVVRGOChGaWxlU3lzdGVtOjpmaWxl
U3lzdGVtUmVwcmVzZW50YXRpb24oZmlsZVBhdGgpKTsKKworICAgIGF1dG8gZmlsZUhhbmRsZSA9
IEZpbGVTeXN0ZW06Om9wZW5GaWxlKGZpbGVuYW1lLCBGaWxlU3lzdGVtOjpGaWxlT3Blbk1vZGU6
OlJlYWQpOworICAgIGlmIChmaWxlSGFuZGxlID09IEZpbGVTeXN0ZW06OmludmFsaWRQbGF0Zm9y
bUZpbGVIYW5kbGUpCisgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgYXV0byBieXRlc1Rv
UmVhZCA9IEZpbGVTeXN0ZW06OmZpbGVTaXplKGZpbGVIYW5kbGUpOworICAgIGlmIChieXRlc1Rv
UmVhZCA9PSBzdGQ6Om51bGxvcHQpIHsKKyAgICAgICAgRmlsZVN5c3RlbTo6Y2xvc2VGaWxlKGZp
bGVIYW5kbGUpOworICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICB9CisKKyAgICBWZWN0b3I8
dWludDhfdD4gYnVmZmVyKGJ5dGVzVG9SZWFkLnZhbHVlKCkpOworICAgIHVpbnQ2NF90IHRvdGFs
Qnl0ZXNSZWFkID0gMDsKKyAgICBpbnQgYnl0ZXNSZWFkOworCisgICAgd2hpbGUgKChieXRlc1Jl
YWQgPSBGaWxlU3lzdGVtOjpyZWFkRnJvbUZpbGUoZmlsZUhhbmRsZSwgYnVmZmVyLmRhdGEoKSAr
IHRvdGFsQnl0ZXNSZWFkLCBieXRlc1RvUmVhZC52YWx1ZSgpIC0gdG90YWxCeXRlc1JlYWQpKSA+
IDApCisgICAgICAgIHRvdGFsQnl0ZXNSZWFkICs9IGJ5dGVzUmVhZDsKKworICAgIEZpbGVTeXN0
ZW06OmNsb3NlRmlsZShmaWxlSGFuZGxlKTsKKworICAgIGlmICh0b3RhbEJ5dGVzUmVhZCAhPSBi
eXRlc1RvUmVhZC52YWx1ZSgpKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIHJldHVy
biBTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKGJ1ZmZlcikpOworfQorI2VuZGlmIC8vICFQ
TEFURk9STShDT0NPQSkKKwogU3RyaW5nIFNoYXJlZEJ1ZmZlcjo6dG9IZXhTdHJpbmcoKSBjb25z
dAogewogICAgIFN0cmluZ0J1aWxkZXIgc3RyaW5nQnVpbGRlcjsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dsaWIvU2hhcmVkQnVmZmVyR2xpYi5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9nbGliL1NoYXJlZEJ1ZmZlckdsaWIuY3BwCmluZGV4IDhhOGMxMGI3MDI0
Yy4uMmRiYTAxOTUyOWE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nbGli
L1NoYXJlZEJ1ZmZlckdsaWIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dsaWIv
U2hhcmVkQnVmZmVyR2xpYi5jcHAKQEAgLTQ3LDIxICs0Nyw0IEBAIEdSZWZQdHI8R0J5dGVzPiBT
aGFyZWRCdWZmZXI6OmNyZWF0ZUdCeXRlcygpIGNvbnN0CiAgICAgcmV0dXJuIGJ5dGVzOwogfQog
Ci1SZWZQdHI8U2hhcmVkQnVmZmVyPiBTaGFyZWRCdWZmZXI6OmNyZWF0ZUZyb21SZWFkaW5nRmls
ZShjb25zdCBTdHJpbmcmIGZpbGVQYXRoKQotewotICAgIGlmIChmaWxlUGF0aC5pc0VtcHR5KCkp
Ci0gICAgICAgIHJldHVybiBudWxscHRyOwotCi0gICAgQ1N0cmluZyBmaWxlbmFtZSA9IEZpbGVT
eXN0ZW06OmZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihmaWxlUGF0aCk7Ci0gICAgR1VuaXF1ZU91
dFB0cjxnY2hhcj4gY29udGVudHM7Ci0gICAgZ3NpemUgc2l6ZTsKLSAgICBHVW5pcXVlT3V0UHRy
PEdFcnJvcj4gZXJyb3I7Ci0gICAgaWYgKCFnX2ZpbGVfZ2V0X2NvbnRlbnRzKGZpbGVuYW1lLmRh
dGEoKSwgJmNvbnRlbnRzLm91dFB0cigpLCAmc2l6ZSwgJmVycm9yLm91dFB0cigpKSkgewotICAg
ICAgICBMT0dfRVJST1IoIkZhaWxlZCB0byBmdWxseSByZWFkIGNvbnRlbnRzIG9mIGZpbGUgJXMg
LSAlcyIsIEZpbGVTeXN0ZW06OmZpbGVuYW1lRm9yRGlzcGxheShmaWxlUGF0aCkudXRmOCgpLmRh
dGEoKSwgZXJyb3ItPm1lc3NhZ2UpOwotICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICB9Ci0K
LSAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoY29udGVudHMuZ2V0KCksIHNpemUpOwot
fQotCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9wb3NpeC9TaGFyZWRCdWZmZXJQT1NJWC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9wb3NpeC9TaGFyZWRCdWZmZXJQT1NJWC5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IGM5MjhiNjM3MzQ1MC4uMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL3Bvc2l4L1NoYXJlZEJ1ZmZlclBPU0lYLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDc0
ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTAgQ29tcGFueSAxMDAsIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJl
IG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgot
ICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0g
Ki8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIlNoYXJlZEJ1ZmZlci5oIgotCi0j
aW5jbHVkZSA8ZmNudGwuaD4KLSNpbmNsdWRlIDxzeXMvc3RhdC5oPgotI2luY2x1ZGUgPHVuaXN0
ZC5oPgotI2luY2x1ZGUgPHd0Zi9GaWxlU3lzdGVtLmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQvQ1N0
cmluZy5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLVJlZlB0cjxTaGFyZWRCdWZmZXI+IFNo
YXJlZEJ1ZmZlcjo6Y3JlYXRlRnJvbVJlYWRpbmdGaWxlKGNvbnN0IFN0cmluZyYgZmlsZVBhdGgp
Ci17Ci0gICAgaWYgKGZpbGVQYXRoLmlzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7
Ci0KLSAgICBDU3RyaW5nIGZpbGVuYW1lID0gRmlsZVN5c3RlbTo6ZmlsZVN5c3RlbVJlcHJlc2Vu
dGF0aW9uKGZpbGVQYXRoKTsKLSAgICBpbnQgZmQgPSBvcGVuKGZpbGVuYW1lLmRhdGEoKSwgT19S
RE9OTFkpOwotICAgIGlmIChmZCA9PSAtMSkKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0KLSAg
ICBzdHJ1Y3Qgc3RhdCBmaWxlU3RhdDsKLSAgICBpZiAoZnN0YXQoZmQsICZmaWxlU3RhdCkpIHsK
LSAgICAgICAgY2xvc2UoZmQpOwotICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICB9Ci0KLSAg
ICBzaXplX3QgYnl0ZXNUb1JlYWQ7Ci0gICAgaWYgKCFXVEY6OmNvbnZlcnRTYWZlbHkoZmlsZVN0
YXQuc3Rfc2l6ZSwgYnl0ZXNUb1JlYWQpKSB7Ci0gICAgICAgIGNsb3NlKGZkKTsKLSAgICAgICAg
cmV0dXJuIG51bGxwdHI7Ci0gICAgfQotCi0gICAgVmVjdG9yPHVpbnQ4X3Q+IGJ1ZmZlcihieXRl
c1RvUmVhZCk7Ci0KLSAgICBzaXplX3QgdG90YWxCeXRlc1JlYWQgPSAwOwotICAgIHNzaXplX3Qg
Ynl0ZXNSZWFkOwotICAgIHdoaWxlICgoYnl0ZXNSZWFkID0gcmVhZChmZCwgYnVmZmVyLmRhdGEo
KSArIHRvdGFsQnl0ZXNSZWFkLCBieXRlc1RvUmVhZCAtIHRvdGFsQnl0ZXNSZWFkKSkgPiAwKQot
ICAgICAgICB0b3RhbEJ5dGVzUmVhZCArPSBieXRlc1JlYWQ7Ci0KLSAgICBjbG9zZShmZCk7Ci0K
LSAgICBpZiAodG90YWxCeXRlc1JlYWQgIT0gYnl0ZXNUb1JlYWQpCi0gICAgICAgIHJldHVybiBu
dWxscHRyOwotCi0gICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUoYnVmZmVy
KSk7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL3dpbi9TaGFyZWRCdWZmZXJXaW4uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vd2luL1NoYXJlZEJ1ZmZlcldpbi5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDg5Y2Y2YTBiYjY1OC4uMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL3dpbi9TaGFyZWRCdWZmZXJXaW4uY3BwCisrKyAvZGV2L251bGwKQEAgLTEsNjYgKzAsMCBA
QAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAwNyBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgotICogQ29weXJpZ2h0IChDKSAyMDEwIFBhdHJpY2sgR2Fuc3RlcmVyIDxwYXJvZ2FAcGFy
b2dhLmNvbT4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQot
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KLSAqIDMuICBOZWl0aGVyIHRoZSBuYW1lIG9mIEFwcGxlIEluYy4g
KCJBcHBsZSIpIG5vciB0aGUgbmFtZXMgb2YKLSAqICAgICBpdHMgY29udHJpYnV0b3JzIG1heSBi
ZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkCi0gKiAgICAgZnJv
bSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9u
LiAKLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJ
UycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0g
KiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5o
IgotI2luY2x1ZGUgIlNoYXJlZEJ1ZmZlci5oIgotI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcu
aD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiBTaGFyZWRC
dWZmZXI6OmNyZWF0ZUZyb21SZWFkaW5nRmlsZShjb25zdCBTdHJpbmcmIGZpbGVQYXRoKQotewot
ICAgIGlmIChmaWxlUGF0aC5pc0VtcHR5KCkpCi0gICAgICAgIHJldHVybiBudWxscHRyOwotCi0g
ICAgU3RyaW5nIG51bGxpZmllZFBhdGggPSBmaWxlUGF0aDsKLSAgICBIQU5ETEUgZmlsZUhhbmRs
ZSA9IENyZWF0ZUZpbGVXKG51bGxpZmllZFBhdGgud2lkZUNoYXJhY3RlcnMoKS5kYXRhKCksIEdF
TkVSSUNfUkVBRCwgRklMRV9TSEFSRV9SRUFELCAwLCBPUEVOX0VYSVNUSU5HLCBGSUxFX0FUVFJJ
QlVURV9OT1JNQUwsIDApOwotICAgIGlmIChmaWxlSGFuZGxlID09IElOVkFMSURfSEFORExFX1ZB
TFVFKSB7Ci0gICAgICAgIExPR19FUlJPUigiRmFpbGVkIHRvIG9wZW4gZmlsZSAlcyB0byBjcmVh
dGUgc2hhcmVkIGJ1ZmZlciwgR2V0TGFzdEVycm9yKCkgPSAldSIsIGZpbGVQYXRoLmFzY2lpKCku
ZGF0YSgpLCBHZXRMYXN0RXJyb3IoKSk7Ci0gICAgICAgIHJldHVybiBudWxscHRyOwotICAgIH0K
LQotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHJlc3VsdDsKLSAgICBEV09SRCBieXRlc1RvUmVh
ZCA9IEdldEZpbGVTaXplKGZpbGVIYW5kbGUsIDApOwotICAgIERXT1JEIGxhc3RFcnJvciA9IEdl
dExhc3RFcnJvcigpOwotCi0gICAgaWYgKGJ5dGVzVG9SZWFkICE9IElOVkFMSURfRklMRV9TSVpF
IHx8IGxhc3RFcnJvciA9PSBOT19FUlJPUikgewotICAgICAgICBWZWN0b3I8dWludDhfdD4gYnVm
ZmVyKGJ5dGVzVG9SZWFkKTsKLSAgICAgICAgRFdPUkQgYnl0ZXNSZWFkOwotICAgICAgICBpZiAo
UmVhZEZpbGUoZmlsZUhhbmRsZSwgYnVmZmVyLmRhdGEoKSwgYnl0ZXNUb1JlYWQsICZieXRlc1Jl
YWQsIDApICYmIGJ5dGVzVG9SZWFkID09IGJ5dGVzUmVhZCkKLSAgICAgICAgICAgIHJlc3VsdCA9
IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUoYnVmZmVyKSk7Ci0gICAgICAgIGVsc2UKLSAg
ICAgICAgICAgIExPR19FUlJPUigiRmFpbGVkIHRvIGZ1bGx5IHJlYWQgY29udGVudHMgb2YgZmls
ZSAlcywgR2V0TGFzdEVycm9yKCkgPSAldSIsIGZpbGVQYXRoLmFzY2lpKCkuZGF0YSgpLCBHZXRM
YXN0RXJyb3IoKSk7Ci0gICAgfSBlbHNlCi0gICAgICAgIExPR19FUlJPUigiRmFpbGVkIHRvIGdl
dCBmaWxlc2l6ZSBvZiBmaWxlICVzLCBHZXRMYXN0RXJyb3IoKSA9ICV1IiwgZmlsZVBhdGguYXNj
aWkoKS5kYXRhKCksIGxhc3RFcnJvcik7Ci0KLSAgICBDbG9zZUhhbmRsZShmaWxlSGFuZGxlKTsK
LSAgICByZXR1cm4gcmVzdWx0OwotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCg==
</data>
<flag name="review"
          id="470503"
          type_id="1"
          status="-"
          setter="achristensen"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>446911</attachid>
            <date>2021-12-11 15:34:50 -0800</date>
            <delta_ts>2021-12-11 17:25:09 -0800</delta_ts>
            <desc>Keep Cocoa and Glib specific function</desc>
            <filename>bug-233598-no-glib-cocoa.diff</filename>
            <type>text/plain</type>
            <size>8493</size>
            <attacher name="Don Olmstead">don.olmstead</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtRlRXLmNtYWtlIGIvU291cmNlL1dl
YkNvcmUvUGxhdGZvcm1GVFcuY21ha2UKaW5kZXggODY3ZDI1MzYxMzA3Li41OTc2NjNmZWE2ZDIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtRlRXLmNtYWtlCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL1BsYXRmb3JtRlRXLmNtYWtlCkBAIC0xMjQsNyArMTI0LDYgQEAgbGlzdChBUFBF
TkQgV2ViQ29yZV9TT1VSQ0VTCiAgICAgcGxhdGZvcm0vd2luL1Njcm9sbGJhclRoZW1lV2luLmNw
cAogICAgIHBsYXRmb3JtL3dpbi9TZWFyY2hQb3B1cE1lbnVEQi5jcHAKICAgICBwbGF0Zm9ybS93
aW4vU2VhcmNoUG9wdXBNZW51V2luLmNwcAotICAgIHBsYXRmb3JtL3dpbi9TaGFyZWRCdWZmZXJX
aW4uY3BwCiAgICAgcGxhdGZvcm0vd2luL1N0cnVjdHVyZWRFeGNlcHRpb25IYW5kbGVyU3VwcHJl
c3Nvci5jcHAKICAgICBwbGF0Zm9ybS93aW4vU3lzdGVtSW5mby5jcHAKICAgICBwbGF0Zm9ybS93
aW4vVXNlckFnZW50V2luLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1Q
bGF5U3RhdGlvbi5jbWFrZSBiL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtUGxheVN0YXRpb24uY21h
a2UKaW5kZXggYjAzOGJmY2IzNWNmLi4yODQ4MjAyYTY5ZjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL1BsYXRmb3JtUGxheVN0YXRpb24uY21ha2UKKysrIGIvU291cmNlL1dlYkNvcmUvUGxh
dGZvcm1QbGF5U3RhdGlvbi5jbWFrZQpAQCAtNTgsOCArNTgsNiBAQCBsaXN0KEFQUEVORCBXZWJD
b3JlX1NPVVJDRVMKICAgICBwbGF0Zm9ybS9wbGF5c3RhdGlvbi9Vc2VyQWdlbnRQbGF5U3RhdGlv
bi5jcHAKICAgICBwbGF0Zm9ybS9wbGF5c3RhdGlvbi9XaWRnZXRQbGF5U3RhdGlvbi5jcHAKIAot
ICAgIHBsYXRmb3JtL3Bvc2l4L1NoYXJlZEJ1ZmZlclBPU0lYLmNwcAotCiAgICAgcGxhdGZvcm0v
dGV4dC9IeXBoZW5hdGlvbi5jcHAKICAgICBwbGF0Zm9ybS90ZXh0L0xvY2FsZUlDVS5jcHAKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1XaW4uY21ha2UgYi9Tb3VyY2UvV2Vi
Q29yZS9QbGF0Zm9ybVdpbi5jbWFrZQppbmRleCBiMjIwYWYyMGJkM2IuLjJjMTE3MWUzZDc2ZSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1XaW4uY21ha2UKKysrIGIvU291cmNl
L1dlYkNvcmUvUGxhdGZvcm1XaW4uY21ha2UKQEAgLTg4LDcgKzg4LDYgQEAgbGlzdChBUFBFTkQg
V2ViQ29yZV9TT1VSQ0VTCiAgICAgcGxhdGZvcm0vd2luL1Njcm9sbGJhclRoZW1lV2luLmNwcAog
ICAgIHBsYXRmb3JtL3dpbi9TZWFyY2hQb3B1cE1lbnVEQi5jcHAKICAgICBwbGF0Zm9ybS93aW4v
U2VhcmNoUG9wdXBNZW51V2luLmNwcAotICAgIHBsYXRmb3JtL3dpbi9TaGFyZWRCdWZmZXJXaW4u
Y3BwCiAgICAgcGxhdGZvcm0vd2luL1N5c3RlbUluZm8uY3BwCiAgICAgcGxhdGZvcm0vd2luL1Vz
ZXJBZ2VudFdpbi5jcHAKICAgICBwbGF0Zm9ybS93aW4vV0NEYXRhT2JqZWN0LmNwcApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlci5jcHAKaW5kZXggZDhlNjhlMzM3NzgxLi5iNTk4
MWU5NjY2ZDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZl
ci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmNwcApAQCAt
MTYwLDYgKzE2MCwxNyBAQCBTaGFyZWRCdWZmZXJEYXRhVmlldyBTaGFyZWRCdWZmZXI6OmdldFNv
bWVEYXRhKHNpemVfdCBwb3NpdGlvbikgY29uc3QKICAgICByZXR1cm4geyBlbGVtZW50LT5zZWdt
ZW50LmNvcHlSZWYoKSwgcG9zaXRpb24gLSBlbGVtZW50LT5iZWdpblBvc2l0aW9uIH07CiB9CiAK
KyNpZiAhUExBVEZPUk0oTUFDKSAmJiAhVVNFKEdMSUIpCitSZWZQdHI8U2hhcmVkQnVmZmVyPiBT
aGFyZWRCdWZmZXI6OmNyZWF0ZUZyb21SZWFkaW5nRmlsZShjb25zdCBTdHJpbmcmIGZpbGVQYXRo
KQoreworICAgIGF1dG8gYnVmZmVyID0gRmlsZVN5c3RlbTo6cmVhZEVudGlyZUZpbGUoZmlsZVBh
dGgpOworICAgIGlmICghYnVmZmVyKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIHJl
dHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKCpidWZmZXIpKTsKK30KKyNlbmRpZgor
CiBjb25zdCBTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50VmVjdG9yRW50cnkqIFNoYXJlZEJ1ZmZl
cjo6Z2V0U2VnbWVudEZvclBvc2l0aW9uKHNpemVfdCBwb3NpdGlvbikgY29uc3QKIHsKICAgICBS
RUxFQVNFX0FTU0VSVChwb3NpdGlvbiA8IG1fc2l6ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9wb3NpeC9TaGFyZWRCdWZmZXJQT1NJWC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9wb3NpeC9TaGFyZWRCdWZmZXJQT1NJWC5jcHAKZGVsZXRlZCBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDBmYjQ1MDA3MmZhMS4uMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL3Bvc2l4L1NoYXJlZEJ1ZmZlclBPU0lYLmNwcAorKysgL2Rldi9udWxsCkBA
IC0xLDc0ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTAgQ29tcGFueSAxMDAsIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwot
ICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0g
KiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIlNoYXJlZEJ1ZmZlci5o
IgotCi0jaW5jbHVkZSA8ZmNudGwuaD4KLSNpbmNsdWRlIDxzeXMvc3RhdC5oPgotI2luY2x1ZGUg
PHVuaXN0ZC5oPgotI2luY2x1ZGUgPHd0Zi9GaWxlU3lzdGVtLmg+Ci0jaW5jbHVkZSA8d3RmL3Rl
eHQvQ1N0cmluZy5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLVJlZlB0cjxTaGFyZWRCdWZm
ZXI+IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlRnJvbVJlYWRpbmdGaWxlKGNvbnN0IFN0cmluZyYgZmls
ZVBhdGgpCi17Ci0gICAgaWYgKGZpbGVQYXRoLmlzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJuIG51
bGxwdHI7Ci0KLSAgICBDU3RyaW5nIGZpbGVuYW1lID0gRmlsZVN5c3RlbTo6ZmlsZVN5c3RlbVJl
cHJlc2VudGF0aW9uKGZpbGVQYXRoKTsKLSAgICBpbnQgZmQgPSBvcGVuKGZpbGVuYW1lLmRhdGEo
KSwgT19SRE9OTFkpOwotICAgIGlmIChmZCA9PSAtMSkKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7
Ci0KLSAgICBzdHJ1Y3Qgc3RhdCBmaWxlU3RhdDsKLSAgICBpZiAoZnN0YXQoZmQsICZmaWxlU3Rh
dCkpIHsKLSAgICAgICAgY2xvc2UoZmQpOwotICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICB9
Ci0KLSAgICBzaXplX3QgYnl0ZXNUb1JlYWQ7Ci0gICAgaWYgKCFXVEY6OmNvbnZlcnRTYWZlbHko
ZmlsZVN0YXQuc3Rfc2l6ZSwgYnl0ZXNUb1JlYWQpKSB7Ci0gICAgICAgIGNsb3NlKGZkKTsKLSAg
ICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgfQotCi0gICAgVmVjdG9yPHVpbnQ4X3Q+IGJ1ZmZl
cihieXRlc1RvUmVhZCk7Ci0KLSAgICBzaXplX3QgdG90YWxCeXRlc1JlYWQgPSAwOwotICAgIHNz
aXplX3QgYnl0ZXNSZWFkOwotICAgIHdoaWxlICgoYnl0ZXNSZWFkID0gOjpyZWFkKGZkLCBidWZm
ZXIuZGF0YSgpICsgdG90YWxCeXRlc1JlYWQsIGJ5dGVzVG9SZWFkIC0gdG90YWxCeXRlc1JlYWQp
KSA+IDApCi0gICAgICAgIHRvdGFsQnl0ZXNSZWFkICs9IGJ5dGVzUmVhZDsKLQotICAgIGNsb3Nl
KGZkKTsKLQotICAgIGlmICh0b3RhbEJ5dGVzUmVhZCAhPSBieXRlc1RvUmVhZCkKLSAgICAgICAg
cmV0dXJuIG51bGxwdHI7Ci0KLSAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92
ZShidWZmZXIpKTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1NoYXJlZEJ1ZmZlcldpbi5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS93aW4vU2hhcmVkQnVmZmVyV2luLmNwcApkZWxldGVkIGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggODljZjZhMGJiNjU4Li4wMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vd2luL1NoYXJlZEJ1ZmZlcldpbi5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSw2
NiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDA3IEFwcGxlIEluYy4gIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTAgUGF0cmljayBHYW5zdGVyZXIgPHBh
cm9nYUBwYXJvZ2EuY29tPgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUg
bWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICogMy4gIE5laXRoZXIgdGhlIG5hbWUgb2YgQXBw
bGUgSW5jLiAoIkFwcGxlIikgbm9yIHRoZSBuYW1lcyBvZgotICogICAgIGl0cyBjb250cmlidXRv
cnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQKLSAq
ICAgICBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBl
cm1pc3Npb24uIAotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKLSAqIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0g
KiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAi
Y29uZmlnLmgiCi0jaW5jbHVkZSAiU2hhcmVkQnVmZmVyLmgiCi0jaW5jbHVkZSA8d3RmL3RleHQv
Q1N0cmluZy5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLVJlZlB0cjxTaGFyZWRCdWZmZXI+
IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlRnJvbVJlYWRpbmdGaWxlKGNvbnN0IFN0cmluZyYgZmlsZVBh
dGgpCi17Ci0gICAgaWYgKGZpbGVQYXRoLmlzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJuIG51bGxw
dHI7Ci0KLSAgICBTdHJpbmcgbnVsbGlmaWVkUGF0aCA9IGZpbGVQYXRoOwotICAgIEhBTkRMRSBm
aWxlSGFuZGxlID0gQ3JlYXRlRmlsZVcobnVsbGlmaWVkUGF0aC53aWRlQ2hhcmFjdGVycygpLmRh
dGEoKSwgR0VORVJJQ19SRUFELCBGSUxFX1NIQVJFX1JFQUQsIDAsIE9QRU5fRVhJU1RJTkcsIEZJ
TEVfQVRUUklCVVRFX05PUk1BTCwgMCk7Ci0gICAgaWYgKGZpbGVIYW5kbGUgPT0gSU5WQUxJRF9I
QU5ETEVfVkFMVUUpIHsKLSAgICAgICAgTE9HX0VSUk9SKCJGYWlsZWQgdG8gb3BlbiBmaWxlICVz
IHRvIGNyZWF0ZSBzaGFyZWQgYnVmZmVyLCBHZXRMYXN0RXJyb3IoKSA9ICV1IiwgZmlsZVBhdGgu
YXNjaWkoKS5kYXRhKCksIEdldExhc3RFcnJvcigpKTsKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7
Ci0gICAgfQotCi0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gcmVzdWx0OwotICAgIERXT1JEIGJ5
dGVzVG9SZWFkID0gR2V0RmlsZVNpemUoZmlsZUhhbmRsZSwgMCk7Ci0gICAgRFdPUkQgbGFzdEVy
cm9yID0gR2V0TGFzdEVycm9yKCk7Ci0KLSAgICBpZiAoYnl0ZXNUb1JlYWQgIT0gSU5WQUxJRF9G
SUxFX1NJWkUgfHwgbGFzdEVycm9yID09IE5PX0VSUk9SKSB7Ci0gICAgICAgIFZlY3Rvcjx1aW50
OF90PiBidWZmZXIoYnl0ZXNUb1JlYWQpOwotICAgICAgICBEV09SRCBieXRlc1JlYWQ7Ci0gICAg
ICAgIGlmIChSZWFkRmlsZShmaWxlSGFuZGxlLCBidWZmZXIuZGF0YSgpLCBieXRlc1RvUmVhZCwg
JmJ5dGVzUmVhZCwgMCkgJiYgYnl0ZXNUb1JlYWQgPT0gYnl0ZXNSZWFkKQotICAgICAgICAgICAg
cmVzdWx0ID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZShidWZmZXIpKTsKLSAgICAgICAg
ZWxzZQotICAgICAgICAgICAgTE9HX0VSUk9SKCJGYWlsZWQgdG8gZnVsbHkgcmVhZCBjb250ZW50
cyBvZiBmaWxlICVzLCBHZXRMYXN0RXJyb3IoKSA9ICV1IiwgZmlsZVBhdGguYXNjaWkoKS5kYXRh
KCksIEdldExhc3RFcnJvcigpKTsKLSAgICB9IGVsc2UKLSAgICAgICAgTE9HX0VSUk9SKCJGYWls
ZWQgdG8gZ2V0IGZpbGVzaXplIG9mIGZpbGUgJXMsIEdldExhc3RFcnJvcigpID0gJXUiLCBmaWxl
UGF0aC5hc2NpaSgpLmRhdGEoKSwgbGFzdEVycm9yKTsKLQotICAgIENsb3NlSGFuZGxlKGZpbGVI
YW5kbGUpOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
</data>
<flag name="commit-queue"
          id="472426"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>446912</attachid>
            <date>2021-12-11 15:37:52 -0800</date>
            <delta_ts>2021-12-11 17:25:09 -0800</delta_ts>
            <desc>No platform specific implementation</desc>
            <filename>bug-233598-no-platform-specific.diff</filename>
            <type>text/plain</type>
            <size>10660</size>
            <attacher name="Don Olmstead">don.olmstead</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtRlRXLmNtYWtlIGIvU291cmNlL1dl
YkNvcmUvUGxhdGZvcm1GVFcuY21ha2UKaW5kZXggODY3ZDI1MzYxMzA3Li41OTc2NjNmZWE2ZDIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtRlRXLmNtYWtlCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL1BsYXRmb3JtRlRXLmNtYWtlCkBAIC0xMjQsNyArMTI0LDYgQEAgbGlzdChBUFBF
TkQgV2ViQ29yZV9TT1VSQ0VTCiAgICAgcGxhdGZvcm0vd2luL1Njcm9sbGJhclRoZW1lV2luLmNw
cAogICAgIHBsYXRmb3JtL3dpbi9TZWFyY2hQb3B1cE1lbnVEQi5jcHAKICAgICBwbGF0Zm9ybS93
aW4vU2VhcmNoUG9wdXBNZW51V2luLmNwcAotICAgIHBsYXRmb3JtL3dpbi9TaGFyZWRCdWZmZXJX
aW4uY3BwCiAgICAgcGxhdGZvcm0vd2luL1N0cnVjdHVyZWRFeGNlcHRpb25IYW5kbGVyU3VwcHJl
c3Nvci5jcHAKICAgICBwbGF0Zm9ybS93aW4vU3lzdGVtSW5mby5jcHAKICAgICBwbGF0Zm9ybS93
aW4vVXNlckFnZW50V2luLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1Q
bGF5U3RhdGlvbi5jbWFrZSBiL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtUGxheVN0YXRpb24uY21h
a2UKaW5kZXggYjAzOGJmY2IzNWNmLi4yODQ4MjAyYTY5ZjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL1BsYXRmb3JtUGxheVN0YXRpb24uY21ha2UKKysrIGIvU291cmNlL1dlYkNvcmUvUGxh
dGZvcm1QbGF5U3RhdGlvbi5jbWFrZQpAQCAtNTgsOCArNTgsNiBAQCBsaXN0KEFQUEVORCBXZWJD
b3JlX1NPVVJDRVMKICAgICBwbGF0Zm9ybS9wbGF5c3RhdGlvbi9Vc2VyQWdlbnRQbGF5U3RhdGlv
bi5jcHAKICAgICBwbGF0Zm9ybS9wbGF5c3RhdGlvbi9XaWRnZXRQbGF5U3RhdGlvbi5jcHAKIAot
ICAgIHBsYXRmb3JtL3Bvc2l4L1NoYXJlZEJ1ZmZlclBPU0lYLmNwcAotCiAgICAgcGxhdGZvcm0v
dGV4dC9IeXBoZW5hdGlvbi5jcHAKICAgICBwbGF0Zm9ybS90ZXh0L0xvY2FsZUlDVS5jcHAKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1XaW4uY21ha2UgYi9Tb3VyY2UvV2Vi
Q29yZS9QbGF0Zm9ybVdpbi5jbWFrZQppbmRleCBiMjIwYWYyMGJkM2IuLjJjMTE3MWUzZDc2ZSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1XaW4uY21ha2UKKysrIGIvU291cmNl
L1dlYkNvcmUvUGxhdGZvcm1XaW4uY21ha2UKQEAgLTg4LDcgKzg4LDYgQEAgbGlzdChBUFBFTkQg
V2ViQ29yZV9TT1VSQ0VTCiAgICAgcGxhdGZvcm0vd2luL1Njcm9sbGJhclRoZW1lV2luLmNwcAog
ICAgIHBsYXRmb3JtL3dpbi9TZWFyY2hQb3B1cE1lbnVEQi5jcHAKICAgICBwbGF0Zm9ybS93aW4v
U2VhcmNoUG9wdXBNZW51V2luLmNwcAotICAgIHBsYXRmb3JtL3dpbi9TaGFyZWRCdWZmZXJXaW4u
Y3BwCiAgICAgcGxhdGZvcm0vd2luL1N5c3RlbUluZm8uY3BwCiAgICAgcGxhdGZvcm0vd2luL1Vz
ZXJBZ2VudFdpbi5jcHAKICAgICBwbGF0Zm9ybS93aW4vV0NEYXRhT2JqZWN0LmNwcApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlci5jcHAKaW5kZXggZDhlNjhlMzM3NzgxLi4wMmVh
M2VhODljMjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZl
ci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmNwcApAQCAt
ODUsNyArODUsMTIgQEAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gU2hhcmVkQnVmZmVyOjpjcmVhdGVX
aXRoQ29udGVudHNPZkZpbGUoY29uc3QgU3RyaW5nJiBmaWxlUGEKICAgICAgICAgaWYgKG1hcHBp
bmdTdWNjZXNzKQogICAgICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBTaGFyZWRCdWZmZXIo
V1RGTW92ZShtYXBwZWRGaWxlRGF0YSkpKTsKICAgICB9Ci0gICAgcmV0dXJuIFNoYXJlZEJ1ZmZl
cjo6Y3JlYXRlRnJvbVJlYWRpbmdGaWxlKGZpbGVQYXRoKTsKKworICAgIGF1dG8gYnVmZmVyID0g
RmlsZVN5c3RlbTo6cmVhZEVudGlyZUZpbGUoZmlsZVBhdGgpOworICAgIGlmICghYnVmZmVyKQor
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0
ZShXVEZNb3ZlKCpidWZmZXIpKTsKIH0KIAogUmVmPFNoYXJlZEJ1ZmZlcj4gU2hhcmVkQnVmZmVy
OjpjcmVhdGUoVmVjdG9yPHVpbnQ4X3Q+JiYgdmVjdG9yKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9T
aGFyZWRCdWZmZXIuaAppbmRleCBmMjNmNWQ2OWFkMzIuLmU5YzhlZDA4OTJkMSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmgKQEAgLTI0OCw4ICsyNDgsNiBAQCBwcml2YXRl
OgogCiAgICAgY29uc3QgRGF0YVNlZ21lbnRWZWN0b3JFbnRyeSogZ2V0U2VnbWVudEZvclBvc2l0
aW9uKHNpemVfdCBwb3NpdGl0aW9uKSBjb25zdDsKIAotICAgIHN0YXRpYyBSZWZQdHI8U2hhcmVk
QnVmZmVyPiBjcmVhdGVGcm9tUmVhZGluZ0ZpbGUoY29uc3QgU3RyaW5nJiBmaWxlUGF0aCk7Ci0K
ICAgICBzaXplX3QgbV9zaXplIHsgMCB9OwogICAgIG11dGFibGUgRGF0YVNlZ21lbnRWZWN0b3Ig
bV9zZWdtZW50czsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2Ev
U2hhcmVkQnVmZmVyQ29jb2EubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9TaGFy
ZWRCdWZmZXJDb2NvYS5tbQppbmRleCA5ZWUwYzBiNTVkNzkuLmVlN2JkNGIzZmRiZiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvU2hhcmVkQnVmZmVyQ29jb2EubW0K
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvU2hhcmVkQnVmZmVyQ29jb2EubW0K
QEAgLTExMiwxMyArMTEyLDYgQEAgUmV0YWluUHRyPENGRGF0YVJlZj4gU2hhcmVkQnVmZmVyOjpj
cmVhdGVDRkRhdGEoKSBjb25zdAogICAgIHJldHVybiBicmlkZ2VfY2FzdChtX3NlZ21lbnRzWzBd
LnNlZ21lbnQtPmNyZWF0ZU5TRGF0YSgpKTsKIH0KIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gU2hh
cmVkQnVmZmVyOjpjcmVhdGVGcm9tUmVhZGluZ0ZpbGUoY29uc3QgU3RyaW5nJiBmaWxlUGF0aCkK
LXsKLSAgICBpZiAoYXV0byByZXNvdXJjZURhdGEgPSBbTlNEYXRhIGRhdGFXaXRoQ29udGVudHNP
ZkZpbGU6ZmlsZVBhdGhdKQotICAgICAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUocmVz
b3VyY2VEYXRhKTsKLSAgICByZXR1cm4gbnVsbHB0cjsKLX0KLQogUmV0YWluUHRyPE5TQXJyYXk+
IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlTlNEYXRhQXJyYXkoKSBjb25zdAogewogICAgIHJldHVybiBj
cmVhdGVOU0FycmF5KG1fc2VnbWVudHMsIFtdIChhdXRvJiBzZWdtZW50KSB7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nbGliL1NoYXJlZEJ1ZmZlckdsaWIuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2xpYi9TaGFyZWRCdWZmZXJHbGliLmNwcAppbmRleCA4YThj
MTBiNzAyNGMuLjJkYmEwMTk1MjlhNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ2xpYi9TaGFyZWRCdWZmZXJHbGliLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9nbGliL1NoYXJlZEJ1ZmZlckdsaWIuY3BwCkBAIC00NywyMSArNDcsNCBAQCBHUmVmUHRyPEdC
eXRlcz4gU2hhcmVkQnVmZmVyOjpjcmVhdGVHQnl0ZXMoKSBjb25zdAogICAgIHJldHVybiBieXRl
czsKIH0KIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gU2hhcmVkQnVmZmVyOjpjcmVhdGVGcm9tUmVh
ZGluZ0ZpbGUoY29uc3QgU3RyaW5nJiBmaWxlUGF0aCkKLXsKLSAgICBpZiAoZmlsZVBhdGguaXNF
bXB0eSgpKQotICAgICAgICByZXR1cm4gbnVsbHB0cjsKLQotICAgIENTdHJpbmcgZmlsZW5hbWUg
PSBGaWxlU3lzdGVtOjpmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oZmlsZVBhdGgpOwotICAgIEdV
bmlxdWVPdXRQdHI8Z2NoYXI+IGNvbnRlbnRzOwotICAgIGdzaXplIHNpemU7Ci0gICAgR1VuaXF1
ZU91dFB0cjxHRXJyb3I+IGVycm9yOwotICAgIGlmICghZ19maWxlX2dldF9jb250ZW50cyhmaWxl
bmFtZS5kYXRhKCksICZjb250ZW50cy5vdXRQdHIoKSwgJnNpemUsICZlcnJvci5vdXRQdHIoKSkp
IHsKLSAgICAgICAgTE9HX0VSUk9SKCJGYWlsZWQgdG8gZnVsbHkgcmVhZCBjb250ZW50cyBvZiBm
aWxlICVzIC0gJXMiLCBGaWxlU3lzdGVtOjpmaWxlbmFtZUZvckRpc3BsYXkoZmlsZVBhdGgpLnV0
ZjgoKS5kYXRhKCksIGVycm9yLT5tZXNzYWdlKTsKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0g
ICAgfQotCi0gICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGNvbnRlbnRzLmdldCgpLCBz
aXplKTsKLX0KLQogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vcG9zaXgvU2hhcmVkQnVmZmVyUE9TSVguY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vcG9zaXgvU2hhcmVkQnVmZmVyUE9TSVguY3BwCmRlbGV0ZWQgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwZmI0NTAwNzJmYTEuLjAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9wb3NpeC9TaGFyZWRCdWZmZXJQT1NJWC5jcHAKKysrIC9kZXYvbnVsbApA
QCAtMSw3NCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEwIENvbXBhbnkgMTAwLCBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
LSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQot
ICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJTaGFyZWRCdWZmZXIu
aCIKLQotI2luY2x1ZGUgPGZjbnRsLmg+Ci0jaW5jbHVkZSA8c3lzL3N0YXQuaD4KLSNpbmNsdWRl
IDx1bmlzdGQuaD4KLSNpbmNsdWRlIDx3dGYvRmlsZVN5c3RlbS5oPgotI2luY2x1ZGUgPHd0Zi90
ZXh0L0NTdHJpbmcuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1SZWZQdHI8U2hhcmVkQnVm
ZmVyPiBTaGFyZWRCdWZmZXI6OmNyZWF0ZUZyb21SZWFkaW5nRmlsZShjb25zdCBTdHJpbmcmIGZp
bGVQYXRoKQotewotICAgIGlmIChmaWxlUGF0aC5pc0VtcHR5KCkpCi0gICAgICAgIHJldHVybiBu
dWxscHRyOwotCi0gICAgQ1N0cmluZyBmaWxlbmFtZSA9IEZpbGVTeXN0ZW06OmZpbGVTeXN0ZW1S
ZXByZXNlbnRhdGlvbihmaWxlUGF0aCk7Ci0gICAgaW50IGZkID0gb3BlbihmaWxlbmFtZS5kYXRh
KCksIE9fUkRPTkxZKTsKLSAgICBpZiAoZmQgPT0gLTEpCi0gICAgICAgIHJldHVybiBudWxscHRy
OwotCi0gICAgc3RydWN0IHN0YXQgZmlsZVN0YXQ7Ci0gICAgaWYgKGZzdGF0KGZkLCAmZmlsZVN0
YXQpKSB7Ci0gICAgICAgIGNsb3NlKGZkKTsKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAg
fQotCi0gICAgc2l6ZV90IGJ5dGVzVG9SZWFkOwotICAgIGlmICghV1RGOjpjb252ZXJ0U2FmZWx5
KGZpbGVTdGF0LnN0X3NpemUsIGJ5dGVzVG9SZWFkKSkgewotICAgICAgICBjbG9zZShmZCk7Ci0g
ICAgICAgIHJldHVybiBudWxscHRyOwotICAgIH0KLQotICAgIFZlY3Rvcjx1aW50OF90PiBidWZm
ZXIoYnl0ZXNUb1JlYWQpOwotCi0gICAgc2l6ZV90IHRvdGFsQnl0ZXNSZWFkID0gMDsKLSAgICBz
c2l6ZV90IGJ5dGVzUmVhZDsKLSAgICB3aGlsZSAoKGJ5dGVzUmVhZCA9IDo6cmVhZChmZCwgYnVm
ZmVyLmRhdGEoKSArIHRvdGFsQnl0ZXNSZWFkLCBieXRlc1RvUmVhZCAtIHRvdGFsQnl0ZXNSZWFk
KSkgPiAwKQotICAgICAgICB0b3RhbEJ5dGVzUmVhZCArPSBieXRlc1JlYWQ7Ci0KLSAgICBjbG9z
ZShmZCk7Ci0KLSAgICBpZiAodG90YWxCeXRlc1JlYWQgIT0gYnl0ZXNUb1JlYWQpCi0gICAgICAg
IHJldHVybiBudWxscHRyOwotCi0gICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1v
dmUoYnVmZmVyKSk7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9TaGFyZWRCdWZmZXJXaW4uY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vd2luL1NoYXJlZEJ1ZmZlcldpbi5jcHAKZGVsZXRlZCBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDg5Y2Y2YTBiYjY1OC4uMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL3dpbi9TaGFyZWRCdWZmZXJXaW4uY3BwCisrKyAvZGV2L251bGwKQEAgLTEs
NjYgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAwNyBBcHBsZSBJbmMuICBBbGwgcmln
aHRzIHJlc2VydmVkLgotICogQ29weXJpZ2h0IChDKSAyMDEwIFBhdHJpY2sgR2Fuc3RlcmVyIDxw
YXJvZ2FAcGFyb2dhLmNvbT4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJl
IG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqIDMuICBOZWl0aGVyIHRoZSBuYW1lIG9mIEFw
cGxlIEluYy4gKCJBcHBsZSIpIG5vciB0aGUgbmFtZXMgb2YKLSAqICAgICBpdHMgY29udHJpYnV0
b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkCi0g
KiAgICAgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBw
ZXJtaXNzaW9uLiAKLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQot
ICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUg
ImNvbmZpZy5oIgotI2luY2x1ZGUgIlNoYXJlZEJ1ZmZlci5oIgotI2luY2x1ZGUgPHd0Zi90ZXh0
L0NTdHJpbmcuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1SZWZQdHI8U2hhcmVkQnVmZmVy
PiBTaGFyZWRCdWZmZXI6OmNyZWF0ZUZyb21SZWFkaW5nRmlsZShjb25zdCBTdHJpbmcmIGZpbGVQ
YXRoKQotewotICAgIGlmIChmaWxlUGF0aC5pc0VtcHR5KCkpCi0gICAgICAgIHJldHVybiBudWxs
cHRyOwotCi0gICAgU3RyaW5nIG51bGxpZmllZFBhdGggPSBmaWxlUGF0aDsKLSAgICBIQU5ETEUg
ZmlsZUhhbmRsZSA9IENyZWF0ZUZpbGVXKG51bGxpZmllZFBhdGgud2lkZUNoYXJhY3RlcnMoKS5k
YXRhKCksIEdFTkVSSUNfUkVBRCwgRklMRV9TSEFSRV9SRUFELCAwLCBPUEVOX0VYSVNUSU5HLCBG
SUxFX0FUVFJJQlVURV9OT1JNQUwsIDApOwotICAgIGlmIChmaWxlSGFuZGxlID09IElOVkFMSURf
SEFORExFX1ZBTFVFKSB7Ci0gICAgICAgIExPR19FUlJPUigiRmFpbGVkIHRvIG9wZW4gZmlsZSAl
cyB0byBjcmVhdGUgc2hhcmVkIGJ1ZmZlciwgR2V0TGFzdEVycm9yKCkgPSAldSIsIGZpbGVQYXRo
LmFzY2lpKCkuZGF0YSgpLCBHZXRMYXN0RXJyb3IoKSk7Ci0gICAgICAgIHJldHVybiBudWxscHRy
OwotICAgIH0KLQotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHJlc3VsdDsKLSAgICBEV09SRCBi
eXRlc1RvUmVhZCA9IEdldEZpbGVTaXplKGZpbGVIYW5kbGUsIDApOwotICAgIERXT1JEIGxhc3RF
cnJvciA9IEdldExhc3RFcnJvcigpOwotCi0gICAgaWYgKGJ5dGVzVG9SZWFkICE9IElOVkFMSURf
RklMRV9TSVpFIHx8IGxhc3RFcnJvciA9PSBOT19FUlJPUikgewotICAgICAgICBWZWN0b3I8dWlu
dDhfdD4gYnVmZmVyKGJ5dGVzVG9SZWFkKTsKLSAgICAgICAgRFdPUkQgYnl0ZXNSZWFkOwotICAg
ICAgICBpZiAoUmVhZEZpbGUoZmlsZUhhbmRsZSwgYnVmZmVyLmRhdGEoKSwgYnl0ZXNUb1JlYWQs
ICZieXRlc1JlYWQsIDApICYmIGJ5dGVzVG9SZWFkID09IGJ5dGVzUmVhZCkKLSAgICAgICAgICAg
IHJlc3VsdCA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUoYnVmZmVyKSk7Ci0gICAgICAg
IGVsc2UKLSAgICAgICAgICAgIExPR19FUlJPUigiRmFpbGVkIHRvIGZ1bGx5IHJlYWQgY29udGVu
dHMgb2YgZmlsZSAlcywgR2V0TGFzdEVycm9yKCkgPSAldSIsIGZpbGVQYXRoLmFzY2lpKCkuZGF0
YSgpLCBHZXRMYXN0RXJyb3IoKSk7Ci0gICAgfSBlbHNlCi0gICAgICAgIExPR19FUlJPUigiRmFp
bGVkIHRvIGdldCBmaWxlc2l6ZSBvZiBmaWxlICVzLCBHZXRMYXN0RXJyb3IoKSA9ICV1IiwgZmls
ZVBhdGguYXNjaWkoKS5kYXRhKCksIGxhc3RFcnJvcik7Ci0KLSAgICBDbG9zZUhhbmRsZShmaWxl
SGFuZGxlKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>446915</attachid>
            <date>2021-12-11 17:25:09 -0800</date>
            <delta_ts>2021-12-11 19:05:47 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-233598.diff</filename>
            <type>text/plain</type>
            <size>12115</size>
            <attacher name="Don Olmstead">don.olmstead</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCA0M2Q2NzE3ZGRmZmMuLjE2MjRiMzRkNDdlYyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAt
MSwzICsxLDI5IEBACisyMDIxLTEyLTExICBEb24gT2xtc3RlYWQgIDxkb24ub2xtc3RlYWRAc29u
eS5jb20+CisKKyAgICAgICAgU2hhcmVkQnVmZmVyIHNob3VsZCB1c2UgV1RGOjpGaWxlU3lzdGVt
IHdoZW4gY3JlYXRpbmcgZnJvbSBhIGZpbGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTIzMzU5OAorICAgICAgICA8cmRhcjovL3Byb2JsZW0vODYxMjM3
MzI+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUmVt
b3ZlIHBsYXRmb3JtIHNwZWNpZmljIGltcGxlbWVudGF0aW9ucyBvZiBTaGFyZWRCdWZmZXI6OmNy
ZWF0ZUZyb21SZWFkaW5nRmlsZSBhbmQgdXNlCisgICAgICAgIEZpbGVTeXN0ZW06OnJlYWRFbnRp
cmVGaWxlIGluc3RlYWQgd2hlbiBjcmVhdGluZyBhIFNoYXJlZEJ1ZmZlciBmcm9tIGEgZmlsZS4g
VGhlIGZ1bmN0aW9uCisgICAgICAgIHdhcyBvbmx5IHVzZWQgd2l0aGluIFNoYXJlZEJ1ZmZlcjo6
Y3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxlIHNvIHRoZSBpbXBsZW1lbnRhdGlvbiBpcyBqdXN0Cisg
ICAgICAgIG1vdmVkIGludG8gdGhhdCBmdW5jdGlvbi4KKworICAgICAgICAqIFBsYXRmb3JtRlRX
LmNtYWtlOgorICAgICAgICAqIFBsYXRmb3JtUGxheVN0YXRpb24uY21ha2U6CisgICAgICAgICog
UGxhdGZvcm1XaW4uY21ha2U6CisgICAgICAgICogcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxl
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9TaGFyZWRCdWZmZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9y
bS9jb2NvYS9TaGFyZWRCdWZmZXJDb2NvYS5tbToKKyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZEJ1
ZmZlcjo6Y3JlYXRlRnJvbVJlYWRpbmdGaWxlKTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9y
bS9nbGliL1NoYXJlZEJ1ZmZlckdsaWIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQnVm
ZmVyOjpjcmVhdGVGcm9tUmVhZGluZ0ZpbGUpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3Jt
L3Bvc2l4L1NoYXJlZEJ1ZmZlclBPU0lYLmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBwbGF0Zm9y
bS93aW4vU2hhcmVkQnVmZmVyV2luLmNwcDogUmVtb3ZlZC4KKwogMjAyMS0xMi0xMSAgRG9uIE9s
bXN0ZWFkICA8ZG9uLm9sbXN0ZWFkQHNvbnkuY29tPgogCiAgICAgICAgIEFkZCBhIHN0ZDo6bnVs
bHB0cl90IGNvbnN0cnVjdG9yIGZvciBSZWZQdHIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L1BsYXRmb3JtRlRXLmNtYWtlIGIvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1GVFcuY21ha2UKaW5k
ZXggODY3ZDI1MzYxMzA3Li41OTc2NjNmZWE2ZDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L1BsYXRmb3JtRlRXLmNtYWtlCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtRlRXLmNtYWtl
CkBAIC0xMjQsNyArMTI0LDYgQEAgbGlzdChBUFBFTkQgV2ViQ29yZV9TT1VSQ0VTCiAgICAgcGxh
dGZvcm0vd2luL1Njcm9sbGJhclRoZW1lV2luLmNwcAogICAgIHBsYXRmb3JtL3dpbi9TZWFyY2hQ
b3B1cE1lbnVEQi5jcHAKICAgICBwbGF0Zm9ybS93aW4vU2VhcmNoUG9wdXBNZW51V2luLmNwcAot
ICAgIHBsYXRmb3JtL3dpbi9TaGFyZWRCdWZmZXJXaW4uY3BwCiAgICAgcGxhdGZvcm0vd2luL1N0
cnVjdHVyZWRFeGNlcHRpb25IYW5kbGVyU3VwcHJlc3Nvci5jcHAKICAgICBwbGF0Zm9ybS93aW4v
U3lzdGVtSW5mby5jcHAKICAgICBwbGF0Zm9ybS93aW4vVXNlckFnZW50V2luLmNwcApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1QbGF5U3RhdGlvbi5jbWFrZSBiL1NvdXJjZS9X
ZWJDb3JlL1BsYXRmb3JtUGxheVN0YXRpb24uY21ha2UKaW5kZXggYjAzOGJmY2IzNWNmLi4yODQ4
MjAyYTY5ZjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtUGxheVN0YXRpb24u
Y21ha2UKKysrIGIvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1QbGF5U3RhdGlvbi5jbWFrZQpAQCAt
NTgsOCArNTgsNiBAQCBsaXN0KEFQUEVORCBXZWJDb3JlX1NPVVJDRVMKICAgICBwbGF0Zm9ybS9w
bGF5c3RhdGlvbi9Vc2VyQWdlbnRQbGF5U3RhdGlvbi5jcHAKICAgICBwbGF0Zm9ybS9wbGF5c3Rh
dGlvbi9XaWRnZXRQbGF5U3RhdGlvbi5jcHAKIAotICAgIHBsYXRmb3JtL3Bvc2l4L1NoYXJlZEJ1
ZmZlclBPU0lYLmNwcAotCiAgICAgcGxhdGZvcm0vdGV4dC9IeXBoZW5hdGlvbi5jcHAKICAgICBw
bGF0Zm9ybS90ZXh0L0xvY2FsZUlDVS5jcHAKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
UGxhdGZvcm1XaW4uY21ha2UgYi9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybVdpbi5jbWFrZQppbmRl
eCBiMjIwYWYyMGJkM2IuLjJjMTE3MWUzZDc2ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
UGxhdGZvcm1XaW4uY21ha2UKKysrIGIvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1XaW4uY21ha2UK
QEAgLTg4LDcgKzg4LDYgQEAgbGlzdChBUFBFTkQgV2ViQ29yZV9TT1VSQ0VTCiAgICAgcGxhdGZv
cm0vd2luL1Njcm9sbGJhclRoZW1lV2luLmNwcAogICAgIHBsYXRmb3JtL3dpbi9TZWFyY2hQb3B1
cE1lbnVEQi5jcHAKICAgICBwbGF0Zm9ybS93aW4vU2VhcmNoUG9wdXBNZW51V2luLmNwcAotICAg
IHBsYXRmb3JtL3dpbi9TaGFyZWRCdWZmZXJXaW4uY3BwCiAgICAgcGxhdGZvcm0vd2luL1N5c3Rl
bUluZm8uY3BwCiAgICAgcGxhdGZvcm0vd2luL1VzZXJBZ2VudFdpbi5jcHAKICAgICBwbGF0Zm9y
bS93aW4vV0NEYXRhT2JqZWN0LmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vU2hhcmVkQnVmZmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZl
ci5jcHAKaW5kZXggZDhlNjhlMzM3NzgxLi4wMmVhM2VhODljMjYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vU2hhcmVkQnVmZmVyLmNwcApAQCAtODUsNyArODUsMTIgQEAgUmVmUHRyPFNoYXJl
ZEJ1ZmZlcj4gU2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUoY29uc3QgU3Ry
aW5nJiBmaWxlUGEKICAgICAgICAgaWYgKG1hcHBpbmdTdWNjZXNzKQogICAgICAgICAgICAgcmV0
dXJuIGFkb3B0UmVmKG5ldyBTaGFyZWRCdWZmZXIoV1RGTW92ZShtYXBwZWRGaWxlRGF0YSkpKTsK
ICAgICB9Ci0gICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlRnJvbVJlYWRpbmdGaWxlKGZp
bGVQYXRoKTsKKworICAgIGF1dG8gYnVmZmVyID0gRmlsZVN5c3RlbTo6cmVhZEVudGlyZUZpbGUo
ZmlsZVBhdGgpOworICAgIGlmICghYnVmZmVyKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKwor
ICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKCpidWZmZXIpKTsKIH0KIAog
UmVmPFNoYXJlZEJ1ZmZlcj4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoVmVjdG9yPHVpbnQ4X3Q+JiYg
dmVjdG9yKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVy
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXIuaAppbmRleCBmMjNmNWQ2
OWFkMzIuLmU5YzhlZDA4OTJkMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
U2hhcmVkQnVmZmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVy
LmgKQEAgLTI0OCw4ICsyNDgsNiBAQCBwcml2YXRlOgogCiAgICAgY29uc3QgRGF0YVNlZ21lbnRW
ZWN0b3JFbnRyeSogZ2V0U2VnbWVudEZvclBvc2l0aW9uKHNpemVfdCBwb3NpdGl0aW9uKSBjb25z
dDsKIAotICAgIHN0YXRpYyBSZWZQdHI8U2hhcmVkQnVmZmVyPiBjcmVhdGVGcm9tUmVhZGluZ0Zp
bGUoY29uc3QgU3RyaW5nJiBmaWxlUGF0aCk7Ci0KICAgICBzaXplX3QgbV9zaXplIHsgMCB9Owog
ICAgIG11dGFibGUgRGF0YVNlZ21lbnRWZWN0b3IgbV9zZWdtZW50czsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvU2hhcmVkQnVmZmVyQ29jb2EubW0gYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9TaGFyZWRCdWZmZXJDb2NvYS5tbQppbmRleCA5ZWUw
YzBiNTVkNzkuLmVlN2JkNGIzZmRiZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vY29jb2EvU2hhcmVkQnVmZmVyQ29jb2EubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vY29jb2EvU2hhcmVkQnVmZmVyQ29jb2EubW0KQEAgLTExMiwxMyArMTEyLDYgQEAgUmV0YWlu
UHRyPENGRGF0YVJlZj4gU2hhcmVkQnVmZmVyOjpjcmVhdGVDRkRhdGEoKSBjb25zdAogICAgIHJl
dHVybiBicmlkZ2VfY2FzdChtX3NlZ21lbnRzWzBdLnNlZ21lbnQtPmNyZWF0ZU5TRGF0YSgpKTsK
IH0KIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gU2hhcmVkQnVmZmVyOjpjcmVhdGVGcm9tUmVhZGlu
Z0ZpbGUoY29uc3QgU3RyaW5nJiBmaWxlUGF0aCkKLXsKLSAgICBpZiAoYXV0byByZXNvdXJjZURh
dGEgPSBbTlNEYXRhIGRhdGFXaXRoQ29udGVudHNPZkZpbGU6ZmlsZVBhdGhdKQotICAgICAgICBy
ZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUocmVzb3VyY2VEYXRhKTsKLSAgICByZXR1cm4gbnVs
bHB0cjsKLX0KLQogUmV0YWluUHRyPE5TQXJyYXk+IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlTlNEYXRh
QXJyYXkoKSBjb25zdAogewogICAgIHJldHVybiBjcmVhdGVOU0FycmF5KG1fc2VnbWVudHMsIFtd
IChhdXRvJiBzZWdtZW50KSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
bGliL1NoYXJlZEJ1ZmZlckdsaWIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2xpYi9T
aGFyZWRCdWZmZXJHbGliLmNwcAppbmRleCA4YThjMTBiNzAyNGMuLjJkYmEwMTk1MjlhNyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2xpYi9TaGFyZWRCdWZmZXJHbGliLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nbGliL1NoYXJlZEJ1ZmZlckdsaWIuY3Bw
CkBAIC00NywyMSArNDcsNCBAQCBHUmVmUHRyPEdCeXRlcz4gU2hhcmVkQnVmZmVyOjpjcmVhdGVH
Qnl0ZXMoKSBjb25zdAogICAgIHJldHVybiBieXRlczsKIH0KIAotUmVmUHRyPFNoYXJlZEJ1ZmZl
cj4gU2hhcmVkQnVmZmVyOjpjcmVhdGVGcm9tUmVhZGluZ0ZpbGUoY29uc3QgU3RyaW5nJiBmaWxl
UGF0aCkKLXsKLSAgICBpZiAoZmlsZVBhdGguaXNFbXB0eSgpKQotICAgICAgICByZXR1cm4gbnVs
bHB0cjsKLQotICAgIENTdHJpbmcgZmlsZW5hbWUgPSBGaWxlU3lzdGVtOjpmaWxlU3lzdGVtUmVw
cmVzZW50YXRpb24oZmlsZVBhdGgpOwotICAgIEdVbmlxdWVPdXRQdHI8Z2NoYXI+IGNvbnRlbnRz
OwotICAgIGdzaXplIHNpemU7Ci0gICAgR1VuaXF1ZU91dFB0cjxHRXJyb3I+IGVycm9yOwotICAg
IGlmICghZ19maWxlX2dldF9jb250ZW50cyhmaWxlbmFtZS5kYXRhKCksICZjb250ZW50cy5vdXRQ
dHIoKSwgJnNpemUsICZlcnJvci5vdXRQdHIoKSkpIHsKLSAgICAgICAgTE9HX0VSUk9SKCJGYWls
ZWQgdG8gZnVsbHkgcmVhZCBjb250ZW50cyBvZiBmaWxlICVzIC0gJXMiLCBGaWxlU3lzdGVtOjpm
aWxlbmFtZUZvckRpc3BsYXkoZmlsZVBhdGgpLnV0ZjgoKS5kYXRhKCksIGVycm9yLT5tZXNzYWdl
KTsKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgfQotCi0gICAgcmV0dXJuIFNoYXJlZEJ1
ZmZlcjo6Y3JlYXRlKGNvbnRlbnRzLmdldCgpLCBzaXplKTsKLX0KLQogfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vcG9zaXgvU2hhcmVk
QnVmZmVyUE9TSVguY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vcG9zaXgvU2hhcmVkQnVm
ZmVyUE9TSVguY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwZmI0NTAwNzJmYTEu
LjAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9wb3NpeC9TaGFyZWRC
dWZmZXJQT1NJWC5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSw3NCArMCwwIEBACi0vKgotICogQ29w
eXJpZ2h0IChDKSAyMDEwIENvbXBhbnkgMTAwLCBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0g
KgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAot
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBg
QVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25m
aWcuaCIKLSNpbmNsdWRlICJTaGFyZWRCdWZmZXIuaCIKLQotI2luY2x1ZGUgPGZjbnRsLmg+Ci0j
aW5jbHVkZSA8c3lzL3N0YXQuaD4KLSNpbmNsdWRlIDx1bmlzdGQuaD4KLSNpbmNsdWRlIDx3dGYv
RmlsZVN5c3RlbS5oPgotI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KLQotbmFtZXNwYWNl
IFdlYkNvcmUgewotCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiBTaGFyZWRCdWZmZXI6OmNyZWF0ZUZy
b21SZWFkaW5nRmlsZShjb25zdCBTdHJpbmcmIGZpbGVQYXRoKQotewotICAgIGlmIChmaWxlUGF0
aC5pc0VtcHR5KCkpCi0gICAgICAgIHJldHVybiBudWxscHRyOwotCi0gICAgQ1N0cmluZyBmaWxl
bmFtZSA9IEZpbGVTeXN0ZW06OmZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihmaWxlUGF0aCk7Ci0g
ICAgaW50IGZkID0gb3BlbihmaWxlbmFtZS5kYXRhKCksIE9fUkRPTkxZKTsKLSAgICBpZiAoZmQg
PT0gLTEpCi0gICAgICAgIHJldHVybiBudWxscHRyOwotCi0gICAgc3RydWN0IHN0YXQgZmlsZVN0
YXQ7Ci0gICAgaWYgKGZzdGF0KGZkLCAmZmlsZVN0YXQpKSB7Ci0gICAgICAgIGNsb3NlKGZkKTsK
LSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgfQotCi0gICAgc2l6ZV90IGJ5dGVzVG9SZWFk
OwotICAgIGlmICghV1RGOjpjb252ZXJ0U2FmZWx5KGZpbGVTdGF0LnN0X3NpemUsIGJ5dGVzVG9S
ZWFkKSkgewotICAgICAgICBjbG9zZShmZCk7Ci0gICAgICAgIHJldHVybiBudWxscHRyOwotICAg
IH0KLQotICAgIFZlY3Rvcjx1aW50OF90PiBidWZmZXIoYnl0ZXNUb1JlYWQpOwotCi0gICAgc2l6
ZV90IHRvdGFsQnl0ZXNSZWFkID0gMDsKLSAgICBzc2l6ZV90IGJ5dGVzUmVhZDsKLSAgICB3aGls
ZSAoKGJ5dGVzUmVhZCA9IDo6cmVhZChmZCwgYnVmZmVyLmRhdGEoKSArIHRvdGFsQnl0ZXNSZWFk
LCBieXRlc1RvUmVhZCAtIHRvdGFsQnl0ZXNSZWFkKSkgPiAwKQotICAgICAgICB0b3RhbEJ5dGVz
UmVhZCArPSBieXRlc1JlYWQ7Ci0KLSAgICBjbG9zZShmZCk7Ci0KLSAgICBpZiAodG90YWxCeXRl
c1JlYWQgIT0gYnl0ZXNUb1JlYWQpCi0gICAgICAgIHJldHVybiBudWxscHRyOwotCi0gICAgcmV0
dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUoYnVmZmVyKSk7Ci19Ci0KLX0gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9T
aGFyZWRCdWZmZXJXaW4uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1NoYXJlZEJ1
ZmZlcldpbi5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDg5Y2Y2YTBiYjY1OC4u
MDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9TaGFyZWRCdWZm
ZXJXaW4uY3BwCisrKyAvZGV2L251bGwKQEAgLTEsNjYgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdo
dCAoQykgMjAwNyBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgotICogQ29weXJpZ2h0
IChDKSAyMDEwIFBhdHJpY2sgR2Fuc3RlcmVyIDxwYXJvZ2FAcGFyb2dhLmNvbT4KLSAqCi0gKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
LSAqIDMuICBOZWl0aGVyIHRoZSBuYW1lIG9mIEFwcGxlIEluYy4gKCJBcHBsZSIpIG5vciB0aGUg
bmFtZXMgb2YKLSAqICAgICBpdHMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ug
b3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkCi0gKiAgICAgZnJvbSB0aGlzIHNvZnR3YXJlIHdp
dGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLiAKLSAqCi0gKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
LSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAq
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIlNoYXJl
ZEJ1ZmZlci5oIgotI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KLQotbmFtZXNwYWNlIFdl
YkNvcmUgewotCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiBTaGFyZWRCdWZmZXI6OmNyZWF0ZUZyb21S
ZWFkaW5nRmlsZShjb25zdCBTdHJpbmcmIGZpbGVQYXRoKQotewotICAgIGlmIChmaWxlUGF0aC5p
c0VtcHR5KCkpCi0gICAgICAgIHJldHVybiBudWxscHRyOwotCi0gICAgU3RyaW5nIG51bGxpZmll
ZFBhdGggPSBmaWxlUGF0aDsKLSAgICBIQU5ETEUgZmlsZUhhbmRsZSA9IENyZWF0ZUZpbGVXKG51
bGxpZmllZFBhdGgud2lkZUNoYXJhY3RlcnMoKS5kYXRhKCksIEdFTkVSSUNfUkVBRCwgRklMRV9T
SEFSRV9SRUFELCAwLCBPUEVOX0VYSVNUSU5HLCBGSUxFX0FUVFJJQlVURV9OT1JNQUwsIDApOwot
ICAgIGlmIChmaWxlSGFuZGxlID09IElOVkFMSURfSEFORExFX1ZBTFVFKSB7Ci0gICAgICAgIExP
R19FUlJPUigiRmFpbGVkIHRvIG9wZW4gZmlsZSAlcyB0byBjcmVhdGUgc2hhcmVkIGJ1ZmZlciwg
R2V0TGFzdEVycm9yKCkgPSAldSIsIGZpbGVQYXRoLmFzY2lpKCkuZGF0YSgpLCBHZXRMYXN0RXJy
b3IoKSk7Ci0gICAgICAgIHJldHVybiBudWxscHRyOwotICAgIH0KLQotICAgIFJlZlB0cjxTaGFy
ZWRCdWZmZXI+IHJlc3VsdDsKLSAgICBEV09SRCBieXRlc1RvUmVhZCA9IEdldEZpbGVTaXplKGZp
bGVIYW5kbGUsIDApOwotICAgIERXT1JEIGxhc3RFcnJvciA9IEdldExhc3RFcnJvcigpOwotCi0g
ICAgaWYgKGJ5dGVzVG9SZWFkICE9IElOVkFMSURfRklMRV9TSVpFIHx8IGxhc3RFcnJvciA9PSBO
T19FUlJPUikgewotICAgICAgICBWZWN0b3I8dWludDhfdD4gYnVmZmVyKGJ5dGVzVG9SZWFkKTsK
LSAgICAgICAgRFdPUkQgYnl0ZXNSZWFkOwotICAgICAgICBpZiAoUmVhZEZpbGUoZmlsZUhhbmRs
ZSwgYnVmZmVyLmRhdGEoKSwgYnl0ZXNUb1JlYWQsICZieXRlc1JlYWQsIDApICYmIGJ5dGVzVG9S
ZWFkID09IGJ5dGVzUmVhZCkKLSAgICAgICAgICAgIHJlc3VsdCA9IFNoYXJlZEJ1ZmZlcjo6Y3Jl
YXRlKFdURk1vdmUoYnVmZmVyKSk7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIExPR19FUlJP
UigiRmFpbGVkIHRvIGZ1bGx5IHJlYWQgY29udGVudHMgb2YgZmlsZSAlcywgR2V0TGFzdEVycm9y
KCkgPSAldSIsIGZpbGVQYXRoLmFzY2lpKCkuZGF0YSgpLCBHZXRMYXN0RXJyb3IoKSk7Ci0gICAg
fSBlbHNlCi0gICAgICAgIExPR19FUlJPUigiRmFpbGVkIHRvIGdldCBmaWxlc2l6ZSBvZiBmaWxl
ICVzLCBHZXRMYXN0RXJyb3IoKSA9ICV1IiwgZmlsZVBhdGguYXNjaWkoKS5kYXRhKCksIGxhc3RF
cnJvcik7Ci0KLSAgICBDbG9zZUhhbmRsZShmaWxlSGFuZGxlKTsKLSAgICByZXR1cm4gcmVzdWx0
OwotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>