<?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>212265</bug_id>
          
          <creation_ts>2020-05-22 10:10:06 -0700</creation_ts>
          <short_desc>Extended Color Cleanup: Make alpha premultiplication code more consistent and clear regarding what works with extended colors</short_desc>
          <delta_ts>2020-05-22 13:17:15 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</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>
          
          <blocked>212184</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Sam Weinig">sam</reporter>
          <assigned_to name="Sam Weinig">sam</assigned_to>
          <cc>cmarcelo</cc>
    
    <cc>darin</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>glenn</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>luiz</cc>
    
    <cc>macpherson</cc>
    
    <cc>menard</cc>
    
    <cc>noam</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1655344</commentid>
    <comment_count>0</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2020-05-22 10:10:06 -0700</bug_when>
    <thetext>Extended Color Cleanup: Make alpha premultiplication code more consistent and clear regarding what works with extended colors</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1655354</commentid>
    <comment_count>1</comment_count>
      <attachid>400055</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2020-05-22 10:36:14 -0700</bug_when>
    <thetext>Created attachment 400055
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1655388</commentid>
    <comment_count>2</comment_count>
      <attachid>400055</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2020-05-22 12:08:30 -0700</bug_when>
    <thetext>Comment on attachment 400055
Patch

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

&gt; Source/WebCore/platform/graphics/ColorUtilities.h:194
&gt; +WEBCORE_EXPORT FloatComponents premultiplyAlpha(const FloatComponents&amp; sRGBCompontents);

Maybe just premultiplied()? &quot;premultiply&quot; sounds like it&apos;s in-place, and the &quot;alpha&quot; is a given.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1655398</commentid>
    <comment_count>3</comment_count>
      <attachid>400065</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2020-05-22 12:39:57 -0700</bug_when>
    <thetext>Created attachment 400065
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1655410</commentid>
    <comment_count>4</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2020-05-22 13:16:25 -0700</bug_when>
    <thetext>Committed r262070: &lt;https://trac.webkit.org/changeset/262070&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 400065.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1655411</commentid>
    <comment_count>5</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2020-05-22 13:17:15 -0700</bug_when>
    <thetext>&lt;rdar://problem/63551635&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>400055</attachid>
            <date>2020-05-22 10:36:14 -0700</date>
            <delta_ts>2020-05-22 12:39:55 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-212265-20200522103614.patch</filename>
            <type>text/plain</type>
            <size>17148</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI2MjA2MSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDU4IEBACisyMDIwLTA1LTIyICBTYW0gV2Vp
bmlnICA8d2VpbmlnQGFwcGxlLmNvbT4KKworICAgICAgICBFeHRlbmRlZCBDb2xvciBDbGVhbnVw
OiBNYWtlIGFscGhhIHByZW11bHRpcGxpY2F0aW9uIGNvZGUgbW9yZSBjb25zaXN0ZW50IGFuZCBj
bGVhciByZWdhcmRpbmcgd2hhdCB3b3JrcyB3aXRoIGV4dGVuZGVkIGNvbG9ycworICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjEyMjY1CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgLSBBZGRzIHByZW11bHRpcGx5
QWxwaGEoY29uc3QgRmxvYXRDb21wb25lbnRzJikgdG8gZG8gcHJlbXV0aXBsaWNhdGlvbiBkaXJl
Y3RseSBvbiBGbG9hdENvbXBvbmVudHMKKyAgICAgICAgICByYXRoZXIgdGhhbiBkb2luZyBpdCBv
biB0aGUgaW50cyBhbmQgbG9zaW5nIHByZWNpc2lvbi4KKyAgICAgICAgLSBNYWtlcyBub24tRmxv
YXRDb21wb25lbnQgYWxwaGEgcHJlbXVsdGlwbGljYXRpb24gYWxsIHRha2UgcGxhY2Ugb25seSBm
b3IgU2ltcGxlQ29sb3JzIGFzIHRoYXQKKyAgICAgICAgICBpcyB3aGF0IGNhbGxlcnMgbmVlZC4g
VGhlIGV4aXN0aW5nIHByZW11bGl0cGxpY2F0aW9uIGZvciBFeHRlbmRlZENvbG9ycyBpbiBibGVu
ZCgpIHdhcyBpbmNvcnJlY3QKKyAgICAgICAgICBhcyBpdCBuZXZlciBkaWQgYSBjb252ZXJzaW9u
IHRvIHNSR0IuCisgICAgICAgIC0gQWRkcyBuZXcgdG9TUkdCQVNpbXBsZUNvbG9yTG9zc3koKSAo
dG8gY29tcGxlbWVudCB0b1NSR0JBQ29tcG9uZW50c0xvc3N5KCkpLiBXaWxsIG1ha2UgaXQgZWFz
eQorICAgICAgICAgIHRvIGZpbmQgYWxsIHRoZSBjb252ZXJzaW9ucyBpbiB0aGUgZnV0dXJlLgor
ICAgICAgICAtIEJyb2tlIG5vbi1wcmVtdWx0aXBseWluZyBibGVuZCgpIG91dCBvZiBibGVuZCgp
IChyZW1vdmluZyBwYXJhbWV0ZXIpIGFuZCBtYWRlIGEgbmV3IGJsZW5kV2l0aG91dFByZW11bHRp
cGx5KCkKKyAgICAgICAgICBmdW5jdGlvbiBmb3IgaXQgKG5vIGNhbGxlcnMgbmVlZGVkIHRvIG1h
a2UgdGhpcyBkZWNpc2lvbiBkeW5hbWljYWxseSkuCisKKyAgICAgICAgKiBjc3MvQ1NTR3JhZGll
bnRWYWx1ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NHcmFkaWVudFZhbHVlOjpjb21wdXRl
U3RvcHMpOgorICAgICAgICBVc2UgYmxlbmRXaXRob3V0UHJlbXVsdGlwbHkoKSBleHBsaWNpdGx5
LgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3IuaDoKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9Db2xvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjptYWtlUHJlbXVsdGlw
bGllZFJHQkEpOiBSZW5hbWVkIGZyb20gcHJlbXVsdGlwbGllZEFSR0JGcm9tQ29sb3IgYW5kIG5v
dyBvbmx5IG9wZXJhdGVzIG9uIFNpbXBsZUNvbG9ycy4KKyAgICAgICAgKFdlYkNvcmU6Om1ha2VV
blByZW11bHRpcGxpZWRSR0JBKTogUmVuYW1lZCBmcm9tIGNvbG9yRnJvbVByZW11bHRpcGxpZWRB
UkdCIGFuZCBub3cgb25seSBvcGVyYXRlcyBvbiBTaW1wbGVDb2xvcnMuCisgICAgICAgIChXZWJD
b3JlOjpjb2xvckZyb21QcmVtdWx0aXBsaWVkQVJHQik6IERlbGV0ZWQuCisgICAgICAgIChXZWJD
b3JlOjpwcmVtdWx0aXBsaWVkQVJHQkZyb21Db2xvcik6IERlbGV0ZWQuCisKKyAgICAgICAgKFdl
YkNvcmU6OkNvbG9yOjp0b1NSR0JBU2ltcGxlQ29sb3JMb3NzeSBjb25zdCk6CisgICAgICAgIEFk
ZGVkLiBVc2VmdWwgZm9yIGZpbmRpbmcgYWxsIG5vbi1jb2xvcnNwYWNlIHByZXNlcnZpbmcgdXNl
cnMgb2YgdGhlIGNvbG9yIGNoYW5uZWxzLiAKKworICAgICAgICAoV2ViQ29yZTo6YmxlbmQpOgor
ICAgICAgICAoV2ViQ29yZTo6YmxlbmRXaXRob3V0UHJlbXVsdGlwbHkpOgorICAgICAgICBTcGxp
dCB0aGVzZSBvdXQgZnJvbSBlYWNoIG90aGVyLiBNYWRlIGJsZW5kKCkgdXNlIHRvU1JHQkFTaW1w
bGVDb2xvckxvc3N5KCkgYW5kIGRvIGFsbAorICAgICAgICBvcGVyYXRpb25zIG9uIFNpbXBsZUNv
bG9ycyBkaXJlY3RseS4gVGhlIG9sZCBjb2RlIHRoYXQgcHJlcG9ydGVkIHRvIHdvcmsgd2l0aCBl
eHRlbmRlZAorICAgICAgICBjb2xvcnMgd2FzIG5vbnNlbnNlIGFzIGl0IGRpZG4ndCBhY3R1YWxs
eSB0YWtlIHRoZSBjb2xvcnNwYWNlcyBpbnRvIGFjY291bnQsIGp1c3QgZ3JhYmJlZAorICAgICAg
ICB0aGUgY2hhbm5lbHMgcmVnYXJkbGVzcyBvZiBzcGFjZS4gIAorICAgICAgICAKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFnZUJ1ZmZlckNhaXJvSW1hZ2VTdXJmYWNlQmFj
a2VuZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlckNhaXJvSW1hZ2VTdXJmYWNl
QmFja2VuZDo6cGxhdGZvcm1UcmFuc2Zvcm1Db2xvclNwYWNlKToKKyAgICAgICAgQWRvcHQgdXBk
YXRlIHByZW11bGl0aXBsaWNhdGlvbiBuYW1lcyBhbmQgc3RheSBpbiBTaW1wbGVDb2xvciBmb3Ig
ZW50aXJlIGNvbnZlcnNpb24uCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9O
YXRpdmVJbWFnZUNhaXJvLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Om5hdGl2ZUltYWdlU2luZ2xl
UGl4ZWxTb2xpZENvbG9yKToKKyAgICAgICAgQWRvcHQgdXBkYXRlIHByZW11bGl0aXBsaWNhdGlv
biBuYW1lcy4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0NvbG9yVXRpbGl0aWVzLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OnByZW11bHRpcGx5QWxwaGEpOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL0NvbG9yVXRpbGl0aWVzLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvdGV4bWFwL1RleHR1cmVNYXBwZXJHTC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUZXh0dXJl
TWFwcGVyR0w6OmRyYXdCb3JkZXIpOgorICAgICAgICAoV2ViQ29yZTo6cHJlcGFyZUZpbHRlclBy
b2dyYW0pOgorICAgICAgICAoV2ViQ29yZTo6VGV4dHVyZU1hcHBlckdMOjpkcmF3U29saWRDb2xv
cik6CisgICAgICAgIEFkZCBhbmQgYWRvcHQgcHJlbXVsdGlwbHlBbHBoYShjb25zdCBGbG9hdENv
bXBvbmVudHMmKS4KKwogMjAyMC0wNS0yMiAgT3Jpb2wgQnJ1ZmF1ICA8b2JydWZhdUBpZ2FsaWEu
Y29tPgogCiAgICAgICAgIERvbid0IHB1dCBvdXQtb2YtZmxvdyBib3hlcyBpbiBhbm9ueW1vdXMg
ZmxleC9ncmlkIGl0ZW1zCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTR3JhZGllbnRWYWx1
ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvY3NzL0NTU0dyYWRpZW50VmFsdWUu
Y3BwCShyZXZpc2lvbiAyNjIwNTgpCisrKyBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTR3JhZGllbnRW
YWx1ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ4Myw3ICs0ODMsNyBAQCBHcmFkaWVudDo6Q29s
b3JTdG9wVmVjdG9yIENTU0dyYWRpZW50VmFsCiAgICAgICAgICAgICBmbG9hdCByZWxhdGl2ZU9m
ZnNldCA9ICgqbmV3U3RvcHNbeV0ub2Zmc2V0IC0gb2Zmc2V0MSkgLyAob2Zmc2V0MiAtIG9mZnNl
dDEpOwogICAgICAgICAgICAgZmxvYXQgbXVsdGlwbGllciA9IHN0ZDo6cG93KHJlbGF0aXZlT2Zm
c2V0LCBzdGQ6OmxvZyguNWYpIC8gc3RkOjpsb2cobWlkcG9pbnQpKTsKICAgICAgICAgICAgIC8v
IEZJWE1FOiBXaHkgbm90IHByZW11bHRpcGx5IGhlcmU/Ci0gICAgICAgICAgICBuZXdTdG9wc1t5
XS5jb2xvciA9IGJsZW5kKGNvbG9yMSwgY29sb3IyLCBtdWx0aXBsaWVyLCBmYWxzZSAvKiBkbyBu
b3QgcHJlbXVsdGlwbHkgKi8pOworICAgICAgICAgICAgbmV3U3RvcHNbeV0uY29sb3IgPSBibGVu
ZFdpdGhvdXRQcmVtdWx0aXBseShjb2xvcjEsIGNvbG9yMiwgbXVsdGlwbGllcik7CiAgICAgICAg
IH0KIAogICAgICAgICBzdG9wcy5yZW1vdmUoeCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9Db2xvci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvQ29sb3IuY3BwCShyZXZpc2lvbiAyNjIwNTgpCisrKyBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db2xvci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU1LDEx
ICs1NSwyNSBAQCBSR0JBMzIgbWFrZVByZW11bHRpcGxpZWRSR0JBKGludCByLCBpbnQgCiAgICAg
cmV0dXJuIG1ha2VSR0JBKHByZW11bHRpcGxpZWRDaGFubmVsKHIsIGEsIGNlaWxpbmcpLCBwcmVt
dWx0aXBsaWVkQ2hhbm5lbChnLCBhLCBjZWlsaW5nKSwgcHJlbXVsdGlwbGllZENoYW5uZWwoYiwg
YSwgY2VpbGluZyksIGEpOwogfQogCitSR0JBMzIgbWFrZVByZW11bHRpcGxpZWRSR0JBKFJHQkEz
MiBwaXhlbENvbG9yKQoreworICAgIGlmIChwaXhlbENvbG9yLmlzT3BhcXVlKCkpCisgICAgICAg
IHJldHVybiBwaXhlbENvbG9yOworICAgIHJldHVybiBtYWtlUHJlbXVsdGlwbGllZFJHQkEocGl4
ZWxDb2xvci5yZWRDb21wb25lbnQoKSwgcGl4ZWxDb2xvci5ncmVlbkNvbXBvbmVudCgpLCBwaXhl
bENvbG9yLmJsdWVDb21wb25lbnQoKSwgcGl4ZWxDb2xvci5hbHBoYUNvbXBvbmVudCgpKTsKK30K
KwogUkdCQTMyIG1ha2VVblByZW11bHRpcGxpZWRSR0JBKGludCByLCBpbnQgZywgaW50IGIsIGlu
dCBhKQogewogICAgIHJldHVybiBtYWtlUkdCQSh1bnByZW11bHRpcGxpZWRDaGFubmVsKHIsIGEp
LCB1bnByZW11bHRpcGxpZWRDaGFubmVsKGcsIGEpLCB1bnByZW11bHRpcGxpZWRDaGFubmVsKGIs
IGEpLCBhKTsKIH0KIAorUkdCQTMyIG1ha2VVblByZW11bHRpcGxpZWRSR0JBKFJHQkEzMiBwaXhl
bENvbG9yKQoreworICAgIGlmIChwaXhlbENvbG9yLmlzVmlzaWJsZSgpICYmICFwaXhlbENvbG9y
LmlzT3BhcXVlKCkpCisgICAgICAgIHJldHVybiBtYWtlVW5QcmVtdWx0aXBsaWVkUkdCQShwaXhl
bENvbG9yLnJlZENvbXBvbmVudCgpLCBwaXhlbENvbG9yLmdyZWVuQ29tcG9uZW50KCksIHBpeGVs
Q29sb3IuYmx1ZUNvbXBvbmVudCgpLCBwaXhlbENvbG9yLmFscGhhQ29tcG9uZW50KCkpOworICAg
IHJldHVybiBwaXhlbENvbG9yOworfQorCiBzdGF0aWMgaW50IGNvbG9yRmxvYXRUb1JHQkFCeXRl
KGZsb2F0IGYpCiB7CiAgICAgLy8gV2UgdXNlIGxyb3VuZGYgYW5kIDI1NSBpbnN0ZWFkIG9mIG5l
eHRhZnRlcmYoMjU2LCAwKSB0byBtYXRjaCBDRydzIHJvdW5kaW5nCkBAIC00OTYsNiArNTEwLDE1
IEBAIHN0ZDo6cGFpcjxDb2xvclNwYWNlLCBGbG9hdENvbXBvbmVudHM+IEMKICAgICByZXR1cm4g
eyBDb2xvclNwYWNlOjpTUkdCLCBGbG9hdENvbXBvbmVudHMgeyByZWQoKSAvIDI1NS4wZiwgZ3Jl
ZW4oKSAvIDI1NS4wZiwgYmx1ZSgpIC8gMjU1LjBmLCAgYWxwaGEoKSAvIDI1NS4wZiB9IH07CiB9
CiAKK1NpbXBsZUNvbG9yIENvbG9yOjp0b1NSR0JBU2ltcGxlQ29sb3JMb3NzeSgpIGNvbnN0Cit7
CisgICAgaWYgKCFpc0V4dGVuZGVkKCkpCisgICAgICAgIHJldHVybiByZ2IoKTsKKworICAgIGF1
dG8gW3IsIGcsIGIsIGFdID0gdG9TUkdCQUNvbXBvbmVudHNMb3NzeSgpOworICAgIHJldHVybiBt
YWtlUkdCQTMyRnJvbUZsb2F0cyhyLCBnLCBiLCBhKTsKK30KKwogRmxvYXRDb21wb25lbnRzIENv
bG9yOjp0b1NSR0JBQ29tcG9uZW50c0xvc3N5KCkgY29uc3QKIHsKICAgICBhdXRvIFtjb2xvclNw
YWNlLCBjb21wb25lbnRzXSA9IGNvbG9yU3BhY2VBbmRDb21wb25lbnRzKCk7CkBAIC01MTEsMjcg
KzUzNCw2IEBAIEZsb2F0Q29tcG9uZW50cyBDb2xvcjo6dG9TUkdCQUNvbXBvbmVudHMKICAgICBy
ZXR1cm4geyB9OwogfQogCi1Db2xvciBjb2xvckZyb21QcmVtdWx0aXBsaWVkQVJHQihSR0JBMzIg
cGl4ZWxDb2xvcikKLXsKLSAgICBpZiAocGl4ZWxDb2xvci5pc1Zpc2libGUoKSAmJiAhcGl4ZWxD
b2xvci5pc09wYXF1ZSgpKQotICAgICAgICByZXR1cm4gbWFrZVVuUHJlbXVsdGlwbGllZFJHQkEo
cGl4ZWxDb2xvci5yZWRDb21wb25lbnQoKSwgcGl4ZWxDb2xvci5ncmVlbkNvbXBvbmVudCgpLCBw
aXhlbENvbG9yLmJsdWVDb21wb25lbnQoKSwgcGl4ZWxDb2xvci5hbHBoYUNvbXBvbmVudCgpKTsK
LSAgICByZXR1cm4gcGl4ZWxDb2xvcjsKLX0KLQotUkdCQTMyIHByZW11bHRpcGxpZWRBUkdCRnJv
bUNvbG9yKGNvbnN0IENvbG9yJiBjb2xvcikKLXsKLSAgICBpZiAoY29sb3IuaXNPcGFxdWUoKSkg
ewotICAgICAgICBpZiAoY29sb3IuaXNFeHRlbmRlZCgpKQotICAgICAgICAgICAgcmV0dXJuIG1h
a2VSR0IoY29sb3IuYXNFeHRlbmRlZCgpLnJlZCgpICogMjU1LCBjb2xvci5hc0V4dGVuZGVkKCku
Z3JlZW4oKSAqIDI1NSwgY29sb3IuYXNFeHRlbmRlZCgpLmJsdWUoKSAqIDI1NSk7Ci0gICAgICAg
IHJldHVybiBjb2xvci5yZ2IoKTsKLSAgICB9Ci0KLSAgICBpZiAoY29sb3IuaXNFeHRlbmRlZCgp
KQotICAgICAgICByZXR1cm4gbWFrZVByZW11bHRpcGxpZWRSR0JBKGNvbG9yLmFzRXh0ZW5kZWQo
KS5yZWQoKSAqIDI1NSwgY29sb3IuYXNFeHRlbmRlZCgpLmdyZWVuKCkgKiAyNTUsIGNvbG9yLmFz
RXh0ZW5kZWQoKS5ibHVlKCkgKiAyNTUsIGNvbG9yLmFzRXh0ZW5kZWQoKS5hbHBoYSgpICogMjU1
KTsKLQotICAgIHJldHVybiBtYWtlUHJlbXVsdGlwbGllZFJHQkEoY29sb3IucmVkKCksIGNvbG9y
LmdyZWVuKCksIGNvbG9yLmJsdWUoKSwgY29sb3IuYWxwaGEoKSk7Ci19Ci0KIGJvb2wgZXh0ZW5k
ZWRDb2xvcnNFcXVhbChjb25zdCBDb2xvciYgYSwgY29uc3QgQ29sb3ImIGIpCiB7CiAgICAgaWYg
KGEuaXNFeHRlbmRlZCgpICYmIGIuaXNFeHRlbmRlZCgpKQpAQCAtNTQxLDMwICs1NDMsNDMgQEAg
Ym9vbCBleHRlbmRlZENvbG9yc0VxdWFsKGNvbnN0IENvbG9yJiBhLAogICAgIHJldHVybiBmYWxz
ZTsKIH0KIAotQ29sb3IgYmxlbmQoY29uc3QgQ29sb3ImIGZyb20sIGNvbnN0IENvbG9yJiB0bywg
ZG91YmxlIHByb2dyZXNzLCBib29sIGJsZW5kUHJlbXVsdGlwbGllZCkKK0NvbG9yIGJsZW5kKGNv
bnN0IENvbG9yJiBmcm9tLCBjb25zdCBDb2xvciYgdG8sIGRvdWJsZSBwcm9ncmVzcykKIHsKICAg
ICAvLyBGSVhNRTogRXh0ZW5kZWRDb2xvciAtIG5lZWRzIHRvIGhhbmRsZSBjb2xvciBzcGFjZXMu
CiAgICAgLy8gV2UgbmVlZCB0byBwcmVzZXJ2ZSB0aGUgc3RhdGUgb2YgdGhlIHZhbGlkIGZsYWcg
YXQgdGhlIGVuZCBvZiB0aGUgYW5pbWF0aW9uCiAgICAgaWYgKHByb2dyZXNzID09IDEgJiYgIXRv
LmlzVmFsaWQoKSkKICAgICAgICAgcmV0dXJuIENvbG9yKCk7CiAKLSAgICBpZiAoYmxlbmRQcmVt
dWx0aXBsaWVkKSB7Ci0gICAgICAgIC8vIFNpbmNlIHByZW11bHRpcGxpZWRBUkdCRnJvbUNvbG9y
KCkgYmFpbHMgb24gemVybyBhbHBoYSwgc3BlY2lhbC1jYXNlIHRoYXQuCi0gICAgICAgIENvbG9y
IHByZW11bHRGcm9tID0gZnJvbS5hbHBoYSgpID8gcHJlbXVsdGlwbGllZEFSR0JGcm9tQ29sb3Io
ZnJvbSkgOiBDb2xvcjo6dHJhbnNwYXJlbnQ7Ci0gICAgICAgIENvbG9yIHByZW11bHRUbyA9IHRv
LmFscGhhKCkgPyBwcmVtdWx0aXBsaWVkQVJHQkZyb21Db2xvcih0bykgOiBDb2xvcjo6dHJhbnNw
YXJlbnQ7Ci0KLSAgICAgICAgQ29sb3IgcHJlbXVsdEJsZW5kZWQoYmxlbmQocHJlbXVsdEZyb20u
cmVkKCksIHByZW11bHRUby5yZWQoKSwgcHJvZ3Jlc3MpLAotICAgICAgICAgICAgYmxlbmQocHJl
bXVsdEZyb20uZ3JlZW4oKSwgcHJlbXVsdFRvLmdyZWVuKCksIHByb2dyZXNzKSwKLSAgICAgICAg
ICAgIGJsZW5kKHByZW11bHRGcm9tLmJsdWUoKSwgcHJlbXVsdFRvLmJsdWUoKSwgcHJvZ3Jlc3Mp
LAotICAgICAgICAgICAgYmxlbmQocHJlbXVsdEZyb20uYWxwaGEoKSwgcHJlbXVsdFRvLmFscGhh
KCksIHByb2dyZXNzKSk7Ci0KLSAgICAgICAgcmV0dXJuIENvbG9yKGNvbG9yRnJvbVByZW11bHRp
cGxpZWRBUkdCKHByZW11bHRCbGVuZGVkLnJnYigpKSk7Ci0gICAgfQotCi0gICAgcmV0dXJuIENv
bG9yKGJsZW5kKGZyb20ucmVkKCksIHRvLnJlZCgpLCBwcm9ncmVzcyksCi0gICAgICAgIGJsZW5k
KGZyb20uZ3JlZW4oKSwgdG8uZ3JlZW4oKSwgcHJvZ3Jlc3MpLAotICAgICAgICBibGVuZChmcm9t
LmJsdWUoKSwgdG8uYmx1ZSgpLCBwcm9ncmVzcyksCi0gICAgICAgIGJsZW5kKGZyb20uYWxwaGEo
KSwgdG8uYWxwaGEoKSwgcHJvZ3Jlc3MpKTsKKyAgICAvLyBTaW5jZSBtYWtlUHJlbXVsdGlwbGll
ZFJHQkEoKSBiYWlscyBvbiB6ZXJvIGFscGhhLCBzcGVjaWFsLWNhc2UgdGhhdC4KKyAgICBhdXRv
IHByZW11bHRGcm9tID0gZnJvbS5hbHBoYSgpID8gbWFrZVByZW11bHRpcGxpZWRSR0JBKGZyb20u
dG9TUkdCQVNpbXBsZUNvbG9yTG9zc3koKSkgOiBDb2xvcjo6dHJhbnNwYXJlbnQ7CisgICAgYXV0
byBwcmVtdWx0VG8gPSB0by5hbHBoYSgpID8gbWFrZVByZW11bHRpcGxpZWRSR0JBKHRvLnRvU1JH
QkFTaW1wbGVDb2xvckxvc3N5KCkpIDogQ29sb3I6OnRyYW5zcGFyZW50OworCisgICAgUkdCQTMy
IHByZW11bHRCbGVuZGVkID0gbWFrZVJHQkEoCisgICAgICAgIFdlYkNvcmU6OmJsZW5kKHByZW11
bHRGcm9tLnJlZENvbXBvbmVudCgpLCBwcmVtdWx0VG8ucmVkQ29tcG9uZW50KCksIHByb2dyZXNz
KSwKKyAgICAgICAgV2ViQ29yZTo6YmxlbmQocHJlbXVsdEZyb20uZ3JlZW5Db21wb25lbnQoKSwg
cHJlbXVsdFRvLmdyZWVuQ29tcG9uZW50KCksIHByb2dyZXNzKSwKKyAgICAgICAgV2ViQ29yZTo6
YmxlbmQocHJlbXVsdEZyb20uYmx1ZUNvbXBvbmVudCgpLCBwcmVtdWx0VG8uYmx1ZUNvbXBvbmVu
dCgpLCBwcm9ncmVzcyksCisgICAgICAgIFdlYkNvcmU6OmJsZW5kKHByZW11bHRGcm9tLmFscGhh
Q29tcG9uZW50KCksIHByZW11bHRUby5hbHBoYUNvbXBvbmVudCgpLCBwcm9ncmVzcykKKyAgICAp
OworCisgICAgcmV0dXJuIG1ha2VVblByZW11bHRpcGxpZWRSR0JBKHByZW11bHRCbGVuZGVkKTsK
K30KKworQ29sb3IgYmxlbmRXaXRob3V0UHJlbXVsdGlwbHkoY29uc3QgQ29sb3ImIGZyb20sIGNv
bnN0IENvbG9yJiB0bywgZG91YmxlIHByb2dyZXNzKQoreworICAgIC8vIEZJWE1FOiBFeHRlbmRl
ZENvbG9yIC0gbmVlZHMgdG8gaGFuZGxlIGNvbG9yIHNwYWNlcy4KKyAgICAvLyBXZSBuZWVkIHRv
IHByZXNlcnZlIHRoZSBzdGF0ZSBvZiB0aGUgdmFsaWQgZmxhZyBhdCB0aGUgZW5kIG9mIHRoZSBh
bmltYXRpb24KKyAgICBpZiAocHJvZ3Jlc3MgPT0gMSAmJiAhdG8uaXNWYWxpZCgpKQorICAgICAg
ICByZXR1cm4geyB9OworCisgICAgYXV0byBmcm9tU1JHQiA9IGZyb20udG9TUkdCQVNpbXBsZUNv
bG9yTG9zc3koKTsKKyAgICBhdXRvIHRvU1JHQiA9IGZyb20udG9TUkdCQVNpbXBsZUNvbG9yTG9z
c3koKTsKKworICAgIHJldHVybiB7CisgICAgICAgIFdlYkNvcmU6OmJsZW5kKGZyb21TUkdCLnJl
ZENvbXBvbmVudCgpLCB0b1NSR0IucmVkQ29tcG9uZW50KCksIHByb2dyZXNzKSwKKyAgICAgICAg
V2ViQ29yZTo6YmxlbmQoZnJvbVNSR0IuZ3JlZW5Db21wb25lbnQoKSwgdG9TUkdCLmdyZWVuQ29t
cG9uZW50KCksIHByb2dyZXNzKSwKKyAgICAgICAgV2ViQ29yZTo6YmxlbmQoZnJvbVNSR0IuYmx1
ZUNvbXBvbmVudCgpLCB0b1NSR0IuYmx1ZUNvbXBvbmVudCgpLCBwcm9ncmVzcyksCisgICAgICAg
IFdlYkNvcmU6OmJsZW5kKGZyb21TUkdCLmFscGhhQ29tcG9uZW50KCksIHRvU1JHQi5hbHBoYUNv
bXBvbmVudCgpLCBwcm9ncmVzcykKKyAgICB9OwogfQogCiB2b2lkIENvbG9yOjp0YWdBc1ZhbGlk
KCkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbG9yLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3IuaAkocmV2aXNp
b24gMjYyMDU4KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3IuaAko
d29ya2luZyBjb3B5KQpAQCAtOTAsNyArOTAsOSBAQCBjb25zdGV4cHIgUkdCQTMyIG1ha2VSR0Io
aW50IHIsIGludCBnLCBpCiBjb25zdGV4cHIgUkdCQTMyIG1ha2VSR0JBKGludCByLCBpbnQgZywg
aW50IGIsIGludCBhKTsKIAogUkdCQTMyIG1ha2VQcmVtdWx0aXBsaWVkUkdCQShpbnQgciwgaW50
IGcsIGludCBiLCBpbnQgYSwgYm9vbCBjZWlsaW5nID0gdHJ1ZSk7CitSR0JBMzIgbWFrZVByZW11
bHRpcGxpZWRSR0JBKFJHQkEzMik7CiBSR0JBMzIgbWFrZVVuUHJlbXVsdGlwbGllZFJHQkEoaW50
IHIsIGludCBnLCBpbnQgYiwgaW50IGEpOworUkdCQTMyIG1ha2VVblByZW11bHRpcGxpZWRSR0JB
KFJHQkEzMik7CiAKIFdFQkNPUkVfRVhQT1JUIFJHQkEzMiBtYWtlUkdCQTMyRnJvbUZsb2F0cyhm
bG9hdCByLCBmbG9hdCBnLCBmbG9hdCBiLCBmbG9hdCBhKTsKIFdFQkNPUkVfRVhQT1JUIFJHQkEz
MiBtYWtlUkdCQUZyb21IU0xBKGZsb2F0IGgsIGZsb2F0IHMsIGZsb2F0IGwsIGZsb2F0IGEpOwpA
QCAtMjA3LDYgKzIwOSw5IEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCBzdGQ6OnBhaXI8
Q29sb3JTcGFjZSwgRmxvYXRDb21wb25lbnRzPiBjb2xvclNwYWNlQW5kQ29tcG9uZW50cygpIGNv
bnN0OwogCiAgICAgLy8gVGhpcyB3aWxsIGNvbnZlcnQgbm9uLXNSR0IgY29sb3JzcGFjZSBjb2xv
cnMgaW50byBzUkdCLgorICAgIFdFQkNPUkVfRVhQT1JUIFNpbXBsZUNvbG9yIHRvU1JHQkFTaW1w
bGVDb2xvckxvc3N5KCkgY29uc3Q7CisKKyAgICAvLyBUaGlzIHdpbGwgY29udmVydCBub24tc1JH
QiBjb2xvcnNwYWNlIGNvbG9ycyBpbnRvIHNSR0IuCiAgICAgV0VCQ09SRV9FWFBPUlQgRmxvYXRD
b21wb25lbnRzIHRvU1JHQkFDb21wb25lbnRzTG9zc3koKSBjb25zdDsKIAogICAgIENvbG9yIGxp
Z2h0KCkgY29uc3Q7CkBAIC0zMTcsMTIgKzMyMiwxMSBAQCBwcml2YXRlOgogYm9vbCBvcGVyYXRv
cj09KGNvbnN0IENvbG9yJiwgY29uc3QgQ29sb3ImKTsKIGJvb2wgb3BlcmF0b3IhPShjb25zdCBD
b2xvciYsIGNvbnN0IENvbG9yJik7CiAKLUNvbG9yIGNvbG9yRnJvbVByZW11bHRpcGxpZWRBUkdC
KFJHQkEzMik7Ci1SR0JBMzIgcHJlbXVsdGlwbGllZEFSR0JGcm9tQ29sb3IoY29uc3QgQ29sb3Im
KTsKIC8vIE9uZSBvciBib3RoIG11c3QgYmUgZXh0ZW5kZWQgY29sb3JzLgogV0VCQ09SRV9FWFBP
UlQgYm9vbCBleHRlbmRlZENvbG9yc0VxdWFsKGNvbnN0IENvbG9yJiwgY29uc3QgQ29sb3ImKTsK
IAotQ29sb3IgYmxlbmQoY29uc3QgQ29sb3ImIGZyb20sIGNvbnN0IENvbG9yJiB0bywgZG91Ymxl
IHByb2dyZXNzLCBib29sIGJsZW5kUHJlbXVsdGlwbGllZCA9IHRydWUpOworQ29sb3IgYmxlbmQo
Y29uc3QgQ29sb3ImIGZyb20sIGNvbnN0IENvbG9yJiB0bywgZG91YmxlIHByb2dyZXNzKTsKK0Nv
bG9yIGJsZW5kV2l0aG91dFByZW11bHRpcGx5KGNvbnN0IENvbG9yJiBmcm9tLCBjb25zdCBDb2xv
ciYgdG8sIGRvdWJsZSBwcm9ncmVzcyk7CiAKIGludCBkaWZmZXJlbmNlU3F1YXJlZChjb25zdCBD
b2xvciYsIGNvbnN0IENvbG9yJik7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0NvbG9yVXRpbGl0aWVzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9Db2xvclV0aWxpdGllcy5jcHAJKHJldmlzaW9uIDI2MjA1OCkKKysr
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbG9yVXRpbGl0aWVzLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMjgzLDYgKzI4MywxNyBAQCBGbG9hdENvbXBvbmVudHMgaHNsVG9TUkdC
KGNvbnN0IEZsb2F0Q29tCiAgICAgfTsKIH0KIAorRmxvYXRDb21wb25lbnRzIHByZW11bHRpcGx5
QWxwaGEoY29uc3QgRmxvYXRDb21wb25lbnRzJiBzUkdCQ29tcG9uZW50cykKK3sKKyAgICBhdXRv
IFtyLCBnLCBiLCBhXSA9IHNSR0JDb21wb25lbnRzOworICAgIHJldHVybiB7CisgICAgICAgIHIg
KiBhLAorICAgICAgICBnICogYSwKKyAgICAgICAgYiAqIGEsCisgICAgICAgIGEKKyAgICB9Owor
fQorCiBDb2xvck1hdHJpeDo6Q29sb3JNYXRyaXgoKQogewogICAgIG1ha2VJZGVudGl0eSgpOwpJ
bmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3JVdGlsaXRpZXMuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db2xvclV0aWxp
dGllcy5oCShyZXZpc2lvbiAyNjIwNTgpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9Db2xvclV0aWxpdGllcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0xOTEsNiArMTkxLDggQEAg
ZmxvYXQgbGlnaHRuZXNzKGNvbnN0IEZsb2F0Q29tcG9uZW50cyYgcwogZmxvYXQgbHVtaW5hbmNl
KGNvbnN0IEZsb2F0Q29tcG9uZW50cyYgc1JHQkNvbXBvbnRlbnRzKTsKIGZsb2F0IGNvbnRyYXN0
UmF0aW8oY29uc3QgRmxvYXRDb21wb25lbnRzJiwgY29uc3QgRmxvYXRDb21wb25lbnRzJik7CiAK
K1dFQkNPUkVfRVhQT1JUIEZsb2F0Q29tcG9uZW50cyBwcmVtdWx0aXBseUFscGhhKGNvbnN0IEZs
b2F0Q29tcG9uZW50cyYgc1JHQkNvbXBvbnRlbnRzKTsKKwogY2xhc3MgQ29sb3JNYXRyaXggewog
cHVibGljOgogICAgIHN0YXRpYyBDb2xvck1hdHJpeCBncmF5c2NhbGVNYXRyaXgoZmxvYXQpOwpJ
bmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VCdWZmZXJD
YWlyb0ltYWdlU3VyZmFjZUJhY2tlbmQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ltYWdlQnVmZmVyQ2Fpcm9JbWFnZVN1cmZhY2VCYWNr
ZW5kLmNwcAkocmV2aXNpb24gMjYyMDU4KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2Fpcm8vSW1hZ2VCdWZmZXJDYWlyb0ltYWdlU3VyZmFjZUJhY2tlbmQuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC04MCw5ICs4MCw5IEBAIHZvaWQgSW1hZ2VCdWZmZXJDYWlyb0ltYWdlU3Vy
ZmFjZUJhY2tlbmQKICAgICAgICAgdW5zaWduZWQqIHJvdyA9IHJlaW50ZXJwcmV0X2Nhc3RfcHRy
PHVuc2lnbmVkKj4oZGF0YVNyYyArIHN0cmlkZSAqIHkpOwogICAgICAgICBmb3IgKGludCB4ID0g
MDsgeCA8IG1fbG9naWNhbFNpemUud2lkdGgoKTsgeCsrKSB7CiAgICAgICAgICAgICB1bnNpZ25l
ZCogcGl4ZWwgPSByb3cgKyB4OwotICAgICAgICAgICAgQ29sb3IgcGl4ZWxDb2xvciA9IGNvbG9y
RnJvbVByZW11bHRpcGxpZWRBUkdCKCpwaXhlbCk7Ci0gICAgICAgICAgICBwaXhlbENvbG9yID0g
Q29sb3IobG9va1VwVGFibGVbcGl4ZWxDb2xvci5yZWQoKV0sIGxvb2tVcFRhYmxlW3BpeGVsQ29s
b3IuZ3JlZW4oKV0sIGxvb2tVcFRhYmxlW3BpeGVsQ29sb3IuYmx1ZSgpXSwgcGl4ZWxDb2xvci5h
bHBoYSgpKTsKLSAgICAgICAgICAgICpwaXhlbCA9IHByZW11bHRpcGxpZWRBUkdCRnJvbUNvbG9y
KHBpeGVsQ29sb3IpLnZhbHVlKCk7CisgICAgICAgICAgICBhdXRvIHBpeGVsQ29sb3IgPSBtYWtl
VW5QcmVtdWx0aXBsaWVkUkdCQSgqcGl4ZWwpOworICAgICAgICAgICAgcGl4ZWxDb2xvciA9IG1h
a2VSR0JBKGxvb2tVcFRhYmxlW3BpeGVsQ29sb3IucmVkQ29tcG9uZW50KCldLCBsb29rVXBUYWJs
ZVtwaXhlbENvbG9yLmdyZWVuQ29tcG9uZW50KCldLCBsb29rVXBUYWJsZVtwaXhlbENvbG9yLmJs
dWVDb21wb25lbnQoKV0sIHBpeGVsQ29sb3IuYWxwaGFDb21wb25lbnQoKSk7CisgICAgICAgICAg
ICAqcGl4ZWwgPSBtYWtlUHJlbXVsdGlwbGllZFJHQkEocGl4ZWxDb2xvcikudmFsdWUoKTsKICAg
ICAgICAgfQogICAgIH0KICAgICBjYWlyb19zdXJmYWNlX21hcmtfZGlydHlfcmVjdGFuZ2xlKG1f
c3VyZmFjZS5nZXQoKSwgMCwgMCwgbV9sb2dpY2FsU2l6ZS53aWR0aCgpLCBtX2xvZ2ljYWxTaXpl
LmhlaWdodCgpKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJv
L05hdGl2ZUltYWdlQ2Fpcm8uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NhaXJvL05hdGl2ZUltYWdlQ2Fpcm8uY3BwCShyZXZpc2lvbiAyNjIwNTgp
CisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9OYXRpdmVJbWFnZUNh
aXJvLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTQsNyArNTQsNyBAQCBDb2xvciBuYXRpdmVJbWFn
ZVNpbmdsZVBpeGVsU29saWRDb2xvcihjCiAgICAgICAgIHJldHVybiBDb2xvcigpOwogCiAgICAg
UkdCQTMyKiBwaXhlbCA9IHJlaW50ZXJwcmV0X2Nhc3RfcHRyPFJHQkEzMio+KGNhaXJvX2ltYWdl
X3N1cmZhY2VfZ2V0X2RhdGEoaW1hZ2UuZ2V0KCkpKTsKLSAgICByZXR1cm4gY29sb3JGcm9tUHJl
bXVsdGlwbGllZEFSR0IoKnBpeGVsKTsKKyAgICByZXR1cm4gbWFrZVVuUHJlbXVsdGlwbGllZFJH
QkEoKnBpeGVsKTsKIH0KIAogdm9pZCBkcmF3TmF0aXZlSW1hZ2UoY29uc3QgTmF0aXZlSW1hZ2VQ
dHImIGltYWdlLCBHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgZGVz
dFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgSW50U2l6ZSYgaW1hZ2VTaXpl
LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgb3B0aW9ucykKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyR0wuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFw
cGVyR0wuY3BwCShyZXZpc2lvbiAyNjIwNTgpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckdMLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjUz
LDggKzI1Myw3IEBAIHZvaWQgVGV4dHVyZU1hcHBlckdMOjpkcmF3Qm9yZGVyKGNvbnN0IEMKICAg
ICBSZWY8VGV4dHVyZU1hcHBlclNoYWRlclByb2dyYW0+IHByb2dyYW0gPSBkYXRhKCkuZ2V0U2hh
ZGVyUHJvZ3JhbShUZXh0dXJlTWFwcGVyU2hhZGVyUHJvZ3JhbTo6U29saWRDb2xvcik7CiAgICAg
Z2xVc2VQcm9ncmFtKHByb2dyYW0tPnByb2dyYW1JRCgpKTsKIAotICAgIC8vIEZJWE1FOiBEbyB0
aGUgcHJlbXVsdGlwbHkgb24gRmxvYXRDb21wb25lbnRzIGRpcmVjdGx5LgotICAgIGF1dG8gW3Is
IGcsIGIsIGFdID0gQ29sb3IocHJlbXVsdGlwbGllZEFSR0JGcm9tQ29sb3IoY29sb3IpKS50b1NS
R0JBQ29tcG9uZW50c0xvc3N5KCk7CisgICAgYXV0byBbciwgZywgYiwgYV0gPSBwcmVtdWx0aXBs
eUFscGhhKGNvbG9yLnRvU1JHQkFDb21wb25lbnRzTG9zc3koKSk7CiAgICAgZ2xVbmlmb3JtNGYo
cHJvZ3JhbS0+Y29sb3JMb2NhdGlvbigpLCByLCBnLCBiLCBhKTsKICAgICBnbExpbmVXaWR0aCh3
aWR0aCk7CiAKQEAgLTQxNSw4ICs0MTQsNyBAQCBzdGF0aWMgdm9pZCBwcmVwYXJlRmlsdGVyUHJv
Z3JhbShUZXh0dXJlCiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSAxOgogICAgICAg
ICAgICAgLy8gU2Vjb25kIHBhc3M6IHdlIG5lZWQgdGhlIHNoYWRvdyBjb2xvciBhbmQgdGhlIGNv
bnRlbnQgdGV4dHVyZSBmb3IgY29tcG9zaXRpbmcuCi0gICAgICAgICAgICAvLyBGSVhNRTogRG8g
dGhlIHByZW11bHRpcGx5IG9uIEZsb2F0Q29tcG9uZW50cyBkaXJlY3RseS4KLSAgICAgICAgICAg
IGF1dG8gW3IsIGcsIGIsIGFdID0gQ29sb3IocHJlbXVsdGlwbGllZEFSR0JGcm9tQ29sb3Ioc2hh
ZG93LmNvbG9yKCkpKS50b1NSR0JBQ29tcG9uZW50c0xvc3N5KCk7CisgICAgICAgICAgICBhdXRv
IFtyLCBnLCBiLCBhXSA9IHByZW11bHRpcGx5QWxwaGEoc2hhZG93LmNvbG9yKCkudG9TUkdCQUNv
bXBvbmVudHNMb3NzeSgpKTsKICAgICAgICAgICAgIGdsVW5pZm9ybTRmKHByb2dyYW0uY29sb3JM
b2NhdGlvbigpLCByLCBnLCBiLCBhKTsKICAgICAgICAgICAgIGdsVW5pZm9ybTJmKHByb2dyYW0u
Ymx1clJhZGl1c0xvY2F0aW9uKCksIDAsIHNoYWRvdy5zdGREZXZpYXRpb24oKSAvIGZsb2F0KHNp
emUuaGVpZ2h0KCkpKTsKICAgICAgICAgICAgIGdsVW5pZm9ybTJmKHByb2dyYW0uc2hhZG93T2Zm
c2V0TG9jYXRpb24oKSwgMCwgMCk7CkBAIC02NzgsOCArNjc2LDcgQEAgdm9pZCBUZXh0dXJlTWFw
cGVyR0w6OmRyYXdTb2xpZENvbG9yKGNvbgogICAgIFJlZjxUZXh0dXJlTWFwcGVyU2hhZGVyUHJv
Z3JhbT4gcHJvZ3JhbSA9IGRhdGEoKS5nZXRTaGFkZXJQcm9ncmFtKG9wdGlvbnMpOwogICAgIGds
VXNlUHJvZ3JhbShwcm9ncmFtLT5wcm9ncmFtSUQoKSk7CiAKLSAgICAvLyBGSVhNRTogRG8gdGhl
IHByZW11bHRpcGx5IG9uIEZsb2F0Q29tcG9uZW50cyBkaXJlY3RseS4KLSAgICBhdXRvIFtyLCBn
LCBiLCBhXSA9IENvbG9yKHByZW11bHRpcGxpZWRBUkdCRnJvbUNvbG9yKGNvbG9yKSkudG9TUkdC
QUNvbXBvbmVudHNMb3NzeSgpOworICAgIGF1dG8gW3IsIGcsIGIsIGFdID0gcHJlbXVsdGlwbHlB
bHBoYShjb2xvci50b1NSR0JBQ29tcG9uZW50c0xvc3N5KCkpOwogICAgIGdsVW5pZm9ybTRmKHBy
b2dyYW0tPmNvbG9yTG9jYXRpb24oKSwgciwgZywgYiwgYSk7CiAgICAgaWYgKGEgPCAxICYmIGlz
QmxlbmRpbmdBbGxvd2VkKQogICAgICAgICBmbGFncyB8PSBTaG91bGRCbGVuZDsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>400065</attachid>
            <date>2020-05-22 12:39:57 -0700</date>
            <delta_ts>2020-05-22 13:16:26 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-212265-20200522123956.patch</filename>
            <type>text/plain</type>
            <size>17152</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI2MjA2OCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDU4IEBACisyMDIwLTA1LTIyICBTYW0gV2Vp
bmlnICA8d2VpbmlnQGFwcGxlLmNvbT4KKworICAgICAgICBFeHRlbmRlZCBDb2xvciBDbGVhbnVw
OiBNYWtlIGFscGhhIHByZW11bHRpcGxpY2F0aW9uIGNvZGUgbW9yZSBjb25zaXN0ZW50IGFuZCBj
bGVhciByZWdhcmRpbmcgd2hhdCB3b3JrcyB3aXRoIGV4dGVuZGVkIGNvbG9ycworICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjEyMjY1CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgU2ltb24gRnJhc2VyLgorCisgICAgICAgIC0gQWRkcyBwcmVtdWx0aXBsaWVk
KGNvbnN0IEZsb2F0Q29tcG9uZW50cyYpIHRvIGRvIHByZW11dGlwbGljYXRpb24gZGlyZWN0bHkg
b24gRmxvYXRDb21wb25lbnRzCisgICAgICAgICAgcmF0aGVyIHRoYW4gZG9pbmcgaXQgb24gdGhl
IGludHMgYW5kIGxvc2luZyBwcmVjaXNpb24uCisgICAgICAgIC0gTWFrZXMgbm9uLUZsb2F0Q29t
cG9uZW50IGFscGhhIHByZW11bHRpcGxpY2F0aW9uIGFsbCB0YWtlIHBsYWNlIG9ubHkgZm9yIFNp
bXBsZUNvbG9ycyBhcyB0aGF0CisgICAgICAgICAgaXMgd2hhdCBjYWxsZXJzIG5lZWQuIFRoZSBl
eGlzdGluZyBwcmVtdWxpdHBsaWNhdGlvbiBmb3IgRXh0ZW5kZWRDb2xvcnMgaW4gYmxlbmQoKSB3
YXMgaW5jb3JyZWN0CisgICAgICAgICAgYXMgaXQgbmV2ZXIgZGlkIGEgY29udmVyc2lvbiB0byBz
UkdCLgorICAgICAgICAtIEFkZHMgbmV3IHRvU1JHQkFTaW1wbGVDb2xvckxvc3N5KCkgKHRvIGNv
bXBsZW1lbnQgdG9TUkdCQUNvbXBvbmVudHNMb3NzeSgpKS4gV2lsbCBtYWtlIGl0IGVhc3kKKyAg
ICAgICAgICB0byBmaW5kIGFsbCB0aGUgY29udmVyc2lvbnMgaW4gdGhlIGZ1dHVyZS4KKyAgICAg
ICAgLSBCcm9rZSBub24tcHJlbXVsdGlwbHlpbmcgYmxlbmQoKSBvdXQgb2YgYmxlbmQoKSAocmVt
b3ZpbmcgcGFyYW1ldGVyKSBhbmQgbWFkZSBhIG5ldyBibGVuZFdpdGhvdXRQcmVtdWx0aXBseSgp
CisgICAgICAgICAgZnVuY3Rpb24gZm9yIGl0IChubyBjYWxsZXJzIG5lZWRlZCB0byBtYWtlIHRo
aXMgZGVjaXNpb24gZHluYW1pY2FsbHkpLgorCisgICAgICAgICogY3NzL0NTU0dyYWRpZW50VmFs
dWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q1NTR3JhZGllbnRWYWx1ZTo6Y29tcHV0ZVN0b3Bz
KToKKyAgICAgICAgVXNlIGJsZW5kV2l0aG91dFByZW11bHRpcGx5KCkgZXhwbGljaXRseS4KKwor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0NvbG9yLmg6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvQ29sb3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6bWFrZVByZW11bHRpcGxpZWRS
R0JBKTogUmVuYW1lZCBmcm9tIHByZW11bHRpcGxpZWRBUkdCRnJvbUNvbG9yIGFuZCBub3cgb25s
eSBvcGVyYXRlcyBvbiBTaW1wbGVDb2xvcnMuCisgICAgICAgIChXZWJDb3JlOjptYWtlVW5QcmVt
dWx0aXBsaWVkUkdCQSk6IFJlbmFtZWQgZnJvbSBjb2xvckZyb21QcmVtdWx0aXBsaWVkQVJHQiBh
bmQgbm93IG9ubHkgb3BlcmF0ZXMgb24gU2ltcGxlQ29sb3JzLgorICAgICAgICAoV2ViQ29yZTo6
Y29sb3JGcm9tUHJlbXVsdGlwbGllZEFSR0IpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6
cHJlbXVsdGlwbGllZEFSR0JGcm9tQ29sb3IpOiBEZWxldGVkLgorCisgICAgICAgIChXZWJDb3Jl
OjpDb2xvcjo6dG9TUkdCQVNpbXBsZUNvbG9yTG9zc3kgY29uc3QpOgorICAgICAgICBBZGRlZC4g
VXNlZnVsIGZvciBmaW5kaW5nIGFsbCBub24tY29sb3JzcGFjZSBwcmVzZXJ2aW5nIHVzZXJzIG9m
IHRoZSBjb2xvciBjaGFubmVscy4gCisKKyAgICAgICAgKFdlYkNvcmU6OmJsZW5kKToKKyAgICAg
ICAgKFdlYkNvcmU6OmJsZW5kV2l0aG91dFByZW11bHRpcGx5KToKKyAgICAgICAgU3BsaXQgdGhl
c2Ugb3V0IGZyb20gZWFjaCBvdGhlci4gTWFkZSBibGVuZCgpIHVzZSB0b1NSR0JBU2ltcGxlQ29s
b3JMb3NzeSgpIGFuZCBkbyBhbGwKKyAgICAgICAgb3BlcmF0aW9ucyBvbiBTaW1wbGVDb2xvcnMg
ZGlyZWN0bHkuIFRoZSBvbGQgY29kZSB0aGF0IHByZXBvcnRlZCB0byB3b3JrIHdpdGggZXh0ZW5k
ZWQKKyAgICAgICAgY29sb3JzIHdhcyBub25zZW5zZSBhcyBpdCBkaWRuJ3QgYWN0dWFsbHkgdGFr
ZSB0aGUgY29sb3JzcGFjZXMgaW50byBhY2NvdW50LCBqdXN0IGdyYWJiZWQKKyAgICAgICAgdGhl
IGNoYW5uZWxzIHJlZ2FyZGxlc3Mgb2Ygc3BhY2UuICAKKyAgICAgICAgCisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VCdWZmZXJDYWlyb0ltYWdlU3VyZmFjZUJhY2tlbmQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXJDYWlyb0ltYWdlU3VyZmFjZUJhY2tl
bmQ6OnBsYXRmb3JtVHJhbnNmb3JtQ29sb3JTcGFjZSk6CisgICAgICAgIEFkb3B0IHVwZGF0ZSBw
cmVtdWxpdGlwbGljYXRpb24gbmFtZXMgYW5kIHN0YXkgaW4gU2ltcGxlQ29sb3IgZm9yIGVudGly
ZSBjb252ZXJzaW9uLgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vTmF0aXZl
SW1hZ2VDYWlyby5jcHA6CisgICAgICAgIChXZWJDb3JlOjpuYXRpdmVJbWFnZVNpbmdsZVBpeGVs
U29saWRDb2xvcik6CisgICAgICAgIEFkb3B0IHVwZGF0ZSBwcmVtdWxpdGlwbGljYXRpb24gbmFt
ZXMuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9Db2xvclV0aWxpdGllcy5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpwcmVtdWx0aXBsaWVkKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9Db2xvclV0aWxpdGllcy5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1h
cC9UZXh0dXJlTWFwcGVyR0wuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VGV4dHVyZU1hcHBlckdM
OjpkcmF3Qm9yZGVyKToKKyAgICAgICAgKFdlYkNvcmU6OnByZXBhcmVGaWx0ZXJQcm9ncmFtKToK
KyAgICAgICAgKFdlYkNvcmU6OlRleHR1cmVNYXBwZXJHTDo6ZHJhd1NvbGlkQ29sb3IpOgorICAg
ICAgICBBZGQgYW5kIGFkb3B0IHByZW11bHRpcGxpZWQoY29uc3QgRmxvYXRDb21wb25lbnRzJiku
CisKIDIwMjAtMDUtMjIgIEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9y
Zz4KIAogICAgICAgICBBZGQgU1BJIHRvIHVuYmxvY2sgdGhpcmQgcGFydHkgY29va2llcyBmcm9t
IFdLV2ViVmlld3Mgd2l0aCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzIHR1cm5lZCBvbgpJbmRleDog
U291cmNlL1dlYkNvcmUvY3NzL0NTU0dyYWRpZW50VmFsdWUuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL2Nzcy9DU1NHcmFkaWVudFZhbHVlLmNwcAkocmV2aXNpb24gMjYyMDY4KQor
KysgU291cmNlL1dlYkNvcmUvY3NzL0NTU0dyYWRpZW50VmFsdWUuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC00ODMsNyArNDgzLDcgQEAgR3JhZGllbnQ6OkNvbG9yU3RvcFZlY3RvciBDU1NHcmFkaWVu
dFZhbAogICAgICAgICAgICAgZmxvYXQgcmVsYXRpdmVPZmZzZXQgPSAoKm5ld1N0b3BzW3ldLm9m
ZnNldCAtIG9mZnNldDEpIC8gKG9mZnNldDIgLSBvZmZzZXQxKTsKICAgICAgICAgICAgIGZsb2F0
IG11bHRpcGxpZXIgPSBzdGQ6OnBvdyhyZWxhdGl2ZU9mZnNldCwgc3RkOjpsb2coLjVmKSAvIHN0
ZDo6bG9nKG1pZHBvaW50KSk7CiAgICAgICAgICAgICAvLyBGSVhNRTogV2h5IG5vdCBwcmVtdWx0
aXBseSBoZXJlPwotICAgICAgICAgICAgbmV3U3RvcHNbeV0uY29sb3IgPSBibGVuZChjb2xvcjEs
IGNvbG9yMiwgbXVsdGlwbGllciwgZmFsc2UgLyogZG8gbm90IHByZW11bHRpcGx5ICovKTsKKyAg
ICAgICAgICAgIG5ld1N0b3BzW3ldLmNvbG9yID0gYmxlbmRXaXRob3V0UHJlbXVsdGlwbHkoY29s
b3IxLCBjb2xvcjIsIG11bHRpcGxpZXIpOwogICAgICAgICB9CiAKICAgICAgICAgc3RvcHMucmVt
b3ZlKHgpOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3IuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbG9yLmNw
cAkocmV2aXNpb24gMjYyMDY4KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Q29sb3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01NSwxMSArNTUsMjUgQEAgUkdCQTMyIG1ha2VQ
cmVtdWx0aXBsaWVkUkdCQShpbnQgciwgaW50IAogICAgIHJldHVybiBtYWtlUkdCQShwcmVtdWx0
aXBsaWVkQ2hhbm5lbChyLCBhLCBjZWlsaW5nKSwgcHJlbXVsdGlwbGllZENoYW5uZWwoZywgYSwg
Y2VpbGluZyksIHByZW11bHRpcGxpZWRDaGFubmVsKGIsIGEsIGNlaWxpbmcpLCBhKTsKIH0KIAor
UkdCQTMyIG1ha2VQcmVtdWx0aXBsaWVkUkdCQShSR0JBMzIgcGl4ZWxDb2xvcikKK3sKKyAgICBp
ZiAocGl4ZWxDb2xvci5pc09wYXF1ZSgpKQorICAgICAgICByZXR1cm4gcGl4ZWxDb2xvcjsKKyAg
ICByZXR1cm4gbWFrZVByZW11bHRpcGxpZWRSR0JBKHBpeGVsQ29sb3IucmVkQ29tcG9uZW50KCks
IHBpeGVsQ29sb3IuZ3JlZW5Db21wb25lbnQoKSwgcGl4ZWxDb2xvci5ibHVlQ29tcG9uZW50KCks
IHBpeGVsQ29sb3IuYWxwaGFDb21wb25lbnQoKSk7Cit9CisKIFJHQkEzMiBtYWtlVW5QcmVtdWx0
aXBsaWVkUkdCQShpbnQgciwgaW50IGcsIGludCBiLCBpbnQgYSkKIHsKICAgICByZXR1cm4gbWFr
ZVJHQkEodW5wcmVtdWx0aXBsaWVkQ2hhbm5lbChyLCBhKSwgdW5wcmVtdWx0aXBsaWVkQ2hhbm5l
bChnLCBhKSwgdW5wcmVtdWx0aXBsaWVkQ2hhbm5lbChiLCBhKSwgYSk7CiB9CiAKK1JHQkEzMiBt
YWtlVW5QcmVtdWx0aXBsaWVkUkdCQShSR0JBMzIgcGl4ZWxDb2xvcikKK3sKKyAgICBpZiAocGl4
ZWxDb2xvci5pc1Zpc2libGUoKSAmJiAhcGl4ZWxDb2xvci5pc09wYXF1ZSgpKQorICAgICAgICBy
ZXR1cm4gbWFrZVVuUHJlbXVsdGlwbGllZFJHQkEocGl4ZWxDb2xvci5yZWRDb21wb25lbnQoKSwg
cGl4ZWxDb2xvci5ncmVlbkNvbXBvbmVudCgpLCBwaXhlbENvbG9yLmJsdWVDb21wb25lbnQoKSwg
cGl4ZWxDb2xvci5hbHBoYUNvbXBvbmVudCgpKTsKKyAgICByZXR1cm4gcGl4ZWxDb2xvcjsKK30K
Kwogc3RhdGljIGludCBjb2xvckZsb2F0VG9SR0JBQnl0ZShmbG9hdCBmKQogewogICAgIC8vIFdl
IHVzZSBscm91bmRmIGFuZCAyNTUgaW5zdGVhZCBvZiBuZXh0YWZ0ZXJmKDI1NiwgMCkgdG8gbWF0
Y2ggQ0cncyByb3VuZGluZwpAQCAtNDk2LDYgKzUxMCwxNSBAQCBzdGQ6OnBhaXI8Q29sb3JTcGFj
ZSwgRmxvYXRDb21wb25lbnRzPiBDCiAgICAgcmV0dXJuIHsgQ29sb3JTcGFjZTo6U1JHQiwgRmxv
YXRDb21wb25lbnRzIHsgcmVkKCkgLyAyNTUuMGYsIGdyZWVuKCkgLyAyNTUuMGYsIGJsdWUoKSAv
IDI1NS4wZiwgIGFscGhhKCkgLyAyNTUuMGYgfSB9OwogfQogCitTaW1wbGVDb2xvciBDb2xvcjo6
dG9TUkdCQVNpbXBsZUNvbG9yTG9zc3koKSBjb25zdAoreworICAgIGlmICghaXNFeHRlbmRlZCgp
KQorICAgICAgICByZXR1cm4gcmdiKCk7CisKKyAgICBhdXRvIFtyLCBnLCBiLCBhXSA9IHRvU1JH
QkFDb21wb25lbnRzTG9zc3koKTsKKyAgICByZXR1cm4gbWFrZVJHQkEzMkZyb21GbG9hdHMociwg
ZywgYiwgYSk7Cit9CisKIEZsb2F0Q29tcG9uZW50cyBDb2xvcjo6dG9TUkdCQUNvbXBvbmVudHNM
b3NzeSgpIGNvbnN0CiB7CiAgICAgYXV0byBbY29sb3JTcGFjZSwgY29tcG9uZW50c10gPSBjb2xv
clNwYWNlQW5kQ29tcG9uZW50cygpOwpAQCAtNTExLDI3ICs1MzQsNiBAQCBGbG9hdENvbXBvbmVu
dHMgQ29sb3I6OnRvU1JHQkFDb21wb25lbnRzCiAgICAgcmV0dXJuIHsgfTsKIH0KIAotQ29sb3Ig
Y29sb3JGcm9tUHJlbXVsdGlwbGllZEFSR0IoUkdCQTMyIHBpeGVsQ29sb3IpCi17Ci0gICAgaWYg
KHBpeGVsQ29sb3IuaXNWaXNpYmxlKCkgJiYgIXBpeGVsQ29sb3IuaXNPcGFxdWUoKSkKLSAgICAg
ICAgcmV0dXJuIG1ha2VVblByZW11bHRpcGxpZWRSR0JBKHBpeGVsQ29sb3IucmVkQ29tcG9uZW50
KCksIHBpeGVsQ29sb3IuZ3JlZW5Db21wb25lbnQoKSwgcGl4ZWxDb2xvci5ibHVlQ29tcG9uZW50
KCksIHBpeGVsQ29sb3IuYWxwaGFDb21wb25lbnQoKSk7Ci0gICAgcmV0dXJuIHBpeGVsQ29sb3I7
Ci19Ci0KLVJHQkEzMiBwcmVtdWx0aXBsaWVkQVJHQkZyb21Db2xvcihjb25zdCBDb2xvciYgY29s
b3IpCi17Ci0gICAgaWYgKGNvbG9yLmlzT3BhcXVlKCkpIHsKLSAgICAgICAgaWYgKGNvbG9yLmlz
RXh0ZW5kZWQoKSkKLSAgICAgICAgICAgIHJldHVybiBtYWtlUkdCKGNvbG9yLmFzRXh0ZW5kZWQo
KS5yZWQoKSAqIDI1NSwgY29sb3IuYXNFeHRlbmRlZCgpLmdyZWVuKCkgKiAyNTUsIGNvbG9yLmFz
RXh0ZW5kZWQoKS5ibHVlKCkgKiAyNTUpOwotICAgICAgICByZXR1cm4gY29sb3IucmdiKCk7Ci0g
ICAgfQotCi0gICAgaWYgKGNvbG9yLmlzRXh0ZW5kZWQoKSkKLSAgICAgICAgcmV0dXJuIG1ha2VQ
cmVtdWx0aXBsaWVkUkdCQShjb2xvci5hc0V4dGVuZGVkKCkucmVkKCkgKiAyNTUsIGNvbG9yLmFz
RXh0ZW5kZWQoKS5ncmVlbigpICogMjU1LCBjb2xvci5hc0V4dGVuZGVkKCkuYmx1ZSgpICogMjU1
LCBjb2xvci5hc0V4dGVuZGVkKCkuYWxwaGEoKSAqIDI1NSk7Ci0KLSAgICByZXR1cm4gbWFrZVBy
ZW11bHRpcGxpZWRSR0JBKGNvbG9yLnJlZCgpLCBjb2xvci5ncmVlbigpLCBjb2xvci5ibHVlKCks
IGNvbG9yLmFscGhhKCkpOwotfQotCiBib29sIGV4dGVuZGVkQ29sb3JzRXF1YWwoY29uc3QgQ29s
b3ImIGEsIGNvbnN0IENvbG9yJiBiKQogewogICAgIGlmIChhLmlzRXh0ZW5kZWQoKSAmJiBiLmlz
RXh0ZW5kZWQoKSkKQEAgLTU0MSwzMCArNTQzLDQzIEBAIGJvb2wgZXh0ZW5kZWRDb2xvcnNFcXVh
bChjb25zdCBDb2xvciYgYSwKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLUNvbG9yIGJsZW5kKGNv
bnN0IENvbG9yJiBmcm9tLCBjb25zdCBDb2xvciYgdG8sIGRvdWJsZSBwcm9ncmVzcywgYm9vbCBi
bGVuZFByZW11bHRpcGxpZWQpCitDb2xvciBibGVuZChjb25zdCBDb2xvciYgZnJvbSwgY29uc3Qg
Q29sb3ImIHRvLCBkb3VibGUgcHJvZ3Jlc3MpCiB7CiAgICAgLy8gRklYTUU6IEV4dGVuZGVkQ29s
b3IgLSBuZWVkcyB0byBoYW5kbGUgY29sb3Igc3BhY2VzLgogICAgIC8vIFdlIG5lZWQgdG8gcHJl
c2VydmUgdGhlIHN0YXRlIG9mIHRoZSB2YWxpZCBmbGFnIGF0IHRoZSBlbmQgb2YgdGhlIGFuaW1h
dGlvbgogICAgIGlmIChwcm9ncmVzcyA9PSAxICYmICF0by5pc1ZhbGlkKCkpCiAgICAgICAgIHJl
dHVybiBDb2xvcigpOwogCi0gICAgaWYgKGJsZW5kUHJlbXVsdGlwbGllZCkgewotICAgICAgICAv
LyBTaW5jZSBwcmVtdWx0aXBsaWVkQVJHQkZyb21Db2xvcigpIGJhaWxzIG9uIHplcm8gYWxwaGEs
IHNwZWNpYWwtY2FzZSB0aGF0LgotICAgICAgICBDb2xvciBwcmVtdWx0RnJvbSA9IGZyb20uYWxw
aGEoKSA/IHByZW11bHRpcGxpZWRBUkdCRnJvbUNvbG9yKGZyb20pIDogQ29sb3I6OnRyYW5zcGFy
ZW50OwotICAgICAgICBDb2xvciBwcmVtdWx0VG8gPSB0by5hbHBoYSgpID8gcHJlbXVsdGlwbGll
ZEFSR0JGcm9tQ29sb3IodG8pIDogQ29sb3I6OnRyYW5zcGFyZW50OwotCi0gICAgICAgIENvbG9y
IHByZW11bHRCbGVuZGVkKGJsZW5kKHByZW11bHRGcm9tLnJlZCgpLCBwcmVtdWx0VG8ucmVkKCks
IHByb2dyZXNzKSwKLSAgICAgICAgICAgIGJsZW5kKHByZW11bHRGcm9tLmdyZWVuKCksIHByZW11
bHRUby5ncmVlbigpLCBwcm9ncmVzcyksCi0gICAgICAgICAgICBibGVuZChwcmVtdWx0RnJvbS5i
bHVlKCksIHByZW11bHRUby5ibHVlKCksIHByb2dyZXNzKSwKLSAgICAgICAgICAgIGJsZW5kKHBy
ZW11bHRGcm9tLmFscGhhKCksIHByZW11bHRUby5hbHBoYSgpLCBwcm9ncmVzcykpOwotCi0gICAg
ICAgIHJldHVybiBDb2xvcihjb2xvckZyb21QcmVtdWx0aXBsaWVkQVJHQihwcmVtdWx0QmxlbmRl
ZC5yZ2IoKSkpOwotICAgIH0KLQotICAgIHJldHVybiBDb2xvcihibGVuZChmcm9tLnJlZCgpLCB0
by5yZWQoKSwgcHJvZ3Jlc3MpLAotICAgICAgICBibGVuZChmcm9tLmdyZWVuKCksIHRvLmdyZWVu
KCksIHByb2dyZXNzKSwKLSAgICAgICAgYmxlbmQoZnJvbS5ibHVlKCksIHRvLmJsdWUoKSwgcHJv
Z3Jlc3MpLAotICAgICAgICBibGVuZChmcm9tLmFscGhhKCksIHRvLmFscGhhKCksIHByb2dyZXNz
KSk7CisgICAgLy8gU2luY2UgbWFrZVByZW11bHRpcGxpZWRSR0JBKCkgYmFpbHMgb24gemVybyBh
bHBoYSwgc3BlY2lhbC1jYXNlIHRoYXQuCisgICAgYXV0byBwcmVtdWx0RnJvbSA9IGZyb20uYWxw
aGEoKSA/IG1ha2VQcmVtdWx0aXBsaWVkUkdCQShmcm9tLnRvU1JHQkFTaW1wbGVDb2xvckxvc3N5
KCkpIDogQ29sb3I6OnRyYW5zcGFyZW50OworICAgIGF1dG8gcHJlbXVsdFRvID0gdG8uYWxwaGEo
KSA/IG1ha2VQcmVtdWx0aXBsaWVkUkdCQSh0by50b1NSR0JBU2ltcGxlQ29sb3JMb3NzeSgpKSA6
IENvbG9yOjp0cmFuc3BhcmVudDsKKworICAgIFJHQkEzMiBwcmVtdWx0QmxlbmRlZCA9IG1ha2VS
R0JBKAorICAgICAgICBXZWJDb3JlOjpibGVuZChwcmVtdWx0RnJvbS5yZWRDb21wb25lbnQoKSwg
cHJlbXVsdFRvLnJlZENvbXBvbmVudCgpLCBwcm9ncmVzcyksCisgICAgICAgIFdlYkNvcmU6OmJs
ZW5kKHByZW11bHRGcm9tLmdyZWVuQ29tcG9uZW50KCksIHByZW11bHRUby5ncmVlbkNvbXBvbmVu
dCgpLCBwcm9ncmVzcyksCisgICAgICAgIFdlYkNvcmU6OmJsZW5kKHByZW11bHRGcm9tLmJsdWVD
b21wb25lbnQoKSwgcHJlbXVsdFRvLmJsdWVDb21wb25lbnQoKSwgcHJvZ3Jlc3MpLAorICAgICAg
ICBXZWJDb3JlOjpibGVuZChwcmVtdWx0RnJvbS5hbHBoYUNvbXBvbmVudCgpLCBwcmVtdWx0VG8u
YWxwaGFDb21wb25lbnQoKSwgcHJvZ3Jlc3MpCisgICAgKTsKKworICAgIHJldHVybiBtYWtlVW5Q
cmVtdWx0aXBsaWVkUkdCQShwcmVtdWx0QmxlbmRlZCk7Cit9CisKK0NvbG9yIGJsZW5kV2l0aG91
dFByZW11bHRpcGx5KGNvbnN0IENvbG9yJiBmcm9tLCBjb25zdCBDb2xvciYgdG8sIGRvdWJsZSBw
cm9ncmVzcykKK3sKKyAgICAvLyBGSVhNRTogRXh0ZW5kZWRDb2xvciAtIG5lZWRzIHRvIGhhbmRs
ZSBjb2xvciBzcGFjZXMuCisgICAgLy8gV2UgbmVlZCB0byBwcmVzZXJ2ZSB0aGUgc3RhdGUgb2Yg
dGhlIHZhbGlkIGZsYWcgYXQgdGhlIGVuZCBvZiB0aGUgYW5pbWF0aW9uCisgICAgaWYgKHByb2dy
ZXNzID09IDEgJiYgIXRvLmlzVmFsaWQoKSkKKyAgICAgICAgcmV0dXJuIHsgfTsKKworICAgIGF1
dG8gZnJvbVNSR0IgPSBmcm9tLnRvU1JHQkFTaW1wbGVDb2xvckxvc3N5KCk7CisgICAgYXV0byB0
b1NSR0IgPSBmcm9tLnRvU1JHQkFTaW1wbGVDb2xvckxvc3N5KCk7CisKKyAgICByZXR1cm4gewor
ICAgICAgICBXZWJDb3JlOjpibGVuZChmcm9tU1JHQi5yZWRDb21wb25lbnQoKSwgdG9TUkdCLnJl
ZENvbXBvbmVudCgpLCBwcm9ncmVzcyksCisgICAgICAgIFdlYkNvcmU6OmJsZW5kKGZyb21TUkdC
LmdyZWVuQ29tcG9uZW50KCksIHRvU1JHQi5ncmVlbkNvbXBvbmVudCgpLCBwcm9ncmVzcyksCisg
ICAgICAgIFdlYkNvcmU6OmJsZW5kKGZyb21TUkdCLmJsdWVDb21wb25lbnQoKSwgdG9TUkdCLmJs
dWVDb21wb25lbnQoKSwgcHJvZ3Jlc3MpLAorICAgICAgICBXZWJDb3JlOjpibGVuZChmcm9tU1JH
Qi5hbHBoYUNvbXBvbmVudCgpLCB0b1NSR0IuYWxwaGFDb21wb25lbnQoKSwgcHJvZ3Jlc3MpCisg
ICAgfTsKIH0KIAogdm9pZCBDb2xvcjo6dGFnQXNWYWxpZCgpCkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9Db2xvci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0NvbG9yLmgJKHJldmlzaW9uIDI2MjA2OCkKKysrIFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbG9yLmgJKHdvcmtpbmcgY29weSkKQEAgLTkwLDcg
KzkwLDkgQEAgY29uc3RleHByIFJHQkEzMiBtYWtlUkdCKGludCByLCBpbnQgZywgaQogY29uc3Rl
eHByIFJHQkEzMiBtYWtlUkdCQShpbnQgciwgaW50IGcsIGludCBiLCBpbnQgYSk7CiAKIFJHQkEz
MiBtYWtlUHJlbXVsdGlwbGllZFJHQkEoaW50IHIsIGludCBnLCBpbnQgYiwgaW50IGEsIGJvb2wg
Y2VpbGluZyA9IHRydWUpOworUkdCQTMyIG1ha2VQcmVtdWx0aXBsaWVkUkdCQShSR0JBMzIpOwog
UkdCQTMyIG1ha2VVblByZW11bHRpcGxpZWRSR0JBKGludCByLCBpbnQgZywgaW50IGIsIGludCBh
KTsKK1JHQkEzMiBtYWtlVW5QcmVtdWx0aXBsaWVkUkdCQShSR0JBMzIpOwogCiBXRUJDT1JFX0VY
UE9SVCBSR0JBMzIgbWFrZVJHQkEzMkZyb21GbG9hdHMoZmxvYXQgciwgZmxvYXQgZywgZmxvYXQg
YiwgZmxvYXQgYSk7CiBXRUJDT1JFX0VYUE9SVCBSR0JBMzIgbWFrZVJHQkFGcm9tSFNMQShmbG9h
dCBoLCBmbG9hdCBzLCBmbG9hdCBsLCBmbG9hdCBhKTsKQEAgLTIwNyw2ICsyMDksOSBAQCBwdWJs
aWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgc3RkOjpwYWlyPENvbG9yU3BhY2UsIEZsb2F0Q29tcG9u
ZW50cz4gY29sb3JTcGFjZUFuZENvbXBvbmVudHMoKSBjb25zdDsKIAogICAgIC8vIFRoaXMgd2ls
bCBjb252ZXJ0IG5vbi1zUkdCIGNvbG9yc3BhY2UgY29sb3JzIGludG8gc1JHQi4KKyAgICBXRUJD
T1JFX0VYUE9SVCBTaW1wbGVDb2xvciB0b1NSR0JBU2ltcGxlQ29sb3JMb3NzeSgpIGNvbnN0Owor
CisgICAgLy8gVGhpcyB3aWxsIGNvbnZlcnQgbm9uLXNSR0IgY29sb3JzcGFjZSBjb2xvcnMgaW50
byBzUkdCLgogICAgIFdFQkNPUkVfRVhQT1JUIEZsb2F0Q29tcG9uZW50cyB0b1NSR0JBQ29tcG9u
ZW50c0xvc3N5KCkgY29uc3Q7CiAKICAgICBDb2xvciBsaWdodCgpIGNvbnN0OwpAQCAtMzE3LDEy
ICszMjIsMTEgQEAgcHJpdmF0ZToKIGJvb2wgb3BlcmF0b3I9PShjb25zdCBDb2xvciYsIGNvbnN0
IENvbG9yJik7CiBib29sIG9wZXJhdG9yIT0oY29uc3QgQ29sb3ImLCBjb25zdCBDb2xvciYpOwog
Ci1Db2xvciBjb2xvckZyb21QcmVtdWx0aXBsaWVkQVJHQihSR0JBMzIpOwotUkdCQTMyIHByZW11
bHRpcGxpZWRBUkdCRnJvbUNvbG9yKGNvbnN0IENvbG9yJik7CiAvLyBPbmUgb3IgYm90aCBtdXN0
IGJlIGV4dGVuZGVkIGNvbG9ycy4KIFdFQkNPUkVfRVhQT1JUIGJvb2wgZXh0ZW5kZWRDb2xvcnNF
cXVhbChjb25zdCBDb2xvciYsIGNvbnN0IENvbG9yJik7CiAKLUNvbG9yIGJsZW5kKGNvbnN0IENv
bG9yJiBmcm9tLCBjb25zdCBDb2xvciYgdG8sIGRvdWJsZSBwcm9ncmVzcywgYm9vbCBibGVuZFBy
ZW11bHRpcGxpZWQgPSB0cnVlKTsKK0NvbG9yIGJsZW5kKGNvbnN0IENvbG9yJiBmcm9tLCBjb25z
dCBDb2xvciYgdG8sIGRvdWJsZSBwcm9ncmVzcyk7CitDb2xvciBibGVuZFdpdGhvdXRQcmVtdWx0
aXBseShjb25zdCBDb2xvciYgZnJvbSwgY29uc3QgQ29sb3ImIHRvLCBkb3VibGUgcHJvZ3Jlc3Mp
OwogCiBpbnQgZGlmZmVyZW5jZVNxdWFyZWQoY29uc3QgQ29sb3ImLCBjb25zdCBDb2xvciYpOwog
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db2xvclV0aWxpdGllcy5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3JV
dGlsaXRpZXMuY3BwCShyZXZpc2lvbiAyNjIwNjgpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9Db2xvclV0aWxpdGllcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI4Myw2ICsy
ODMsMTcgQEAgRmxvYXRDb21wb25lbnRzIGhzbFRvU1JHQihjb25zdCBGbG9hdENvbQogICAgIH07
CiB9CiAKK0Zsb2F0Q29tcG9uZW50cyBwcmVtdWx0aXBsaWVkKGNvbnN0IEZsb2F0Q29tcG9uZW50
cyYgc1JHQkNvbXBvbmVudHMpCit7CisgICAgYXV0byBbciwgZywgYiwgYV0gPSBzUkdCQ29tcG9u
ZW50czsKKyAgICByZXR1cm4geworICAgICAgICByICogYSwKKyAgICAgICAgZyAqIGEsCisgICAg
ICAgIGIgKiBhLAorICAgICAgICBhCisgICAgfTsKK30KKwogQ29sb3JNYXRyaXg6OkNvbG9yTWF0
cml4KCkKIHsKICAgICBtYWtlSWRlbnRpdHkoKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0NvbG9yVXRpbGl0aWVzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3JVdGlsaXRpZXMuaAkocmV2aXNpb24gMjYyMDY4KQor
KysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3JVdGlsaXRpZXMuaAkod29y
a2luZyBjb3B5KQpAQCAtMTkxLDYgKzE5MSw4IEBAIGZsb2F0IGxpZ2h0bmVzcyhjb25zdCBGbG9h
dENvbXBvbmVudHMmIHMKIGZsb2F0IGx1bWluYW5jZShjb25zdCBGbG9hdENvbXBvbmVudHMmIHNS
R0JDb21wb250ZW50cyk7CiBmbG9hdCBjb250cmFzdFJhdGlvKGNvbnN0IEZsb2F0Q29tcG9uZW50
cyYsIGNvbnN0IEZsb2F0Q29tcG9uZW50cyYpOwogCitGbG9hdENvbXBvbmVudHMgcHJlbXVsdGlw
bGllZChjb25zdCBGbG9hdENvbXBvbmVudHMmIHNSR0JDb21wb250ZW50cyk7CisKIGNsYXNzIENv
bG9yTWF0cml4IHsKIHB1YmxpYzoKICAgICBzdGF0aWMgQ29sb3JNYXRyaXggZ3JheXNjYWxlTWF0
cml4KGZsb2F0KTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJv
L0ltYWdlQnVmZmVyQ2Fpcm9JbWFnZVN1cmZhY2VCYWNrZW5kLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFnZUJ1ZmZlckNhaXJvSW1h
Z2VTdXJmYWNlQmFja2VuZC5jcHAJKHJldmlzaW9uIDI2MjA2OCkKKysrIFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ltYWdlQnVmZmVyQ2Fpcm9JbWFnZVN1cmZhY2VCYWNr
ZW5kLmNwcAkod29ya2luZyBjb3B5KQpAQCAtODAsOSArODAsOSBAQCB2b2lkIEltYWdlQnVmZmVy
Q2Fpcm9JbWFnZVN1cmZhY2VCYWNrZW5kCiAgICAgICAgIHVuc2lnbmVkKiByb3cgPSByZWludGVy
cHJldF9jYXN0X3B0cjx1bnNpZ25lZCo+KGRhdGFTcmMgKyBzdHJpZGUgKiB5KTsKICAgICAgICAg
Zm9yIChpbnQgeCA9IDA7IHggPCBtX2xvZ2ljYWxTaXplLndpZHRoKCk7IHgrKykgewogICAgICAg
ICAgICAgdW5zaWduZWQqIHBpeGVsID0gcm93ICsgeDsKLSAgICAgICAgICAgIENvbG9yIHBpeGVs
Q29sb3IgPSBjb2xvckZyb21QcmVtdWx0aXBsaWVkQVJHQigqcGl4ZWwpOwotICAgICAgICAgICAg
cGl4ZWxDb2xvciA9IENvbG9yKGxvb2tVcFRhYmxlW3BpeGVsQ29sb3IucmVkKCldLCBsb29rVXBU
YWJsZVtwaXhlbENvbG9yLmdyZWVuKCldLCBsb29rVXBUYWJsZVtwaXhlbENvbG9yLmJsdWUoKV0s
IHBpeGVsQ29sb3IuYWxwaGEoKSk7Ci0gICAgICAgICAgICAqcGl4ZWwgPSBwcmVtdWx0aXBsaWVk
QVJHQkZyb21Db2xvcihwaXhlbENvbG9yKS52YWx1ZSgpOworICAgICAgICAgICAgYXV0byBwaXhl
bENvbG9yID0gbWFrZVVuUHJlbXVsdGlwbGllZFJHQkEoKnBpeGVsKTsKKyAgICAgICAgICAgIHBp
eGVsQ29sb3IgPSBtYWtlUkdCQShsb29rVXBUYWJsZVtwaXhlbENvbG9yLnJlZENvbXBvbmVudCgp
XSwgbG9va1VwVGFibGVbcGl4ZWxDb2xvci5ncmVlbkNvbXBvbmVudCgpXSwgbG9va1VwVGFibGVb
cGl4ZWxDb2xvci5ibHVlQ29tcG9uZW50KCldLCBwaXhlbENvbG9yLmFscGhhQ29tcG9uZW50KCkp
OworICAgICAgICAgICAgKnBpeGVsID0gbWFrZVByZW11bHRpcGxpZWRSR0JBKHBpeGVsQ29sb3Ip
LnZhbHVlKCk7CiAgICAgICAgIH0KICAgICB9CiAgICAgY2Fpcm9fc3VyZmFjZV9tYXJrX2RpcnR5
X3JlY3RhbmdsZShtX3N1cmZhY2UuZ2V0KCksIDAsIDAsIG1fbG9naWNhbFNpemUud2lkdGgoKSwg
bV9sb2dpY2FsU2l6ZS5oZWlnaHQoKSk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jYWlyby9OYXRpdmVJbWFnZUNhaXJvLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9OYXRpdmVJbWFnZUNhaXJvLmNwcAkocmV2
aXNpb24gMjYyMDY4KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8v
TmF0aXZlSW1hZ2VDYWlyby5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU0LDcgKzU0LDcgQEAgQ29s
b3IgbmF0aXZlSW1hZ2VTaW5nbGVQaXhlbFNvbGlkQ29sb3IoYwogICAgICAgICByZXR1cm4gQ29s
b3IoKTsKIAogICAgIFJHQkEzMiogcGl4ZWwgPSByZWludGVycHJldF9jYXN0X3B0cjxSR0JBMzIq
PihjYWlyb19pbWFnZV9zdXJmYWNlX2dldF9kYXRhKGltYWdlLmdldCgpKSk7Ci0gICAgcmV0dXJu
IGNvbG9yRnJvbVByZW11bHRpcGxpZWRBUkdCKCpwaXhlbCk7CisgICAgcmV0dXJuIG1ha2VVblBy
ZW11bHRpcGxpZWRSR0JBKCpwaXhlbCk7CiB9CiAKIHZvaWQgZHJhd05hdGl2ZUltYWdlKGNvbnN0
IE5hdGl2ZUltYWdlUHRyJiBpbWFnZSwgR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBG
bG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEludFNp
emUmIGltYWdlU2l6ZSwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmIG9wdGlvbnMpCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckdM
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXht
YXAvVGV4dHVyZU1hcHBlckdMLmNwcAkocmV2aXNpb24gMjYyMDY4KQorKysgU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJHTC5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTI1Myw4ICsyNTMsNyBAQCB2b2lkIFRleHR1cmVNYXBwZXJHTDo6ZHJhd0JvcmRl
cihjb25zdCBDCiAgICAgUmVmPFRleHR1cmVNYXBwZXJTaGFkZXJQcm9ncmFtPiBwcm9ncmFtID0g
ZGF0YSgpLmdldFNoYWRlclByb2dyYW0oVGV4dHVyZU1hcHBlclNoYWRlclByb2dyYW06OlNvbGlk
Q29sb3IpOwogICAgIGdsVXNlUHJvZ3JhbShwcm9ncmFtLT5wcm9ncmFtSUQoKSk7CiAKLSAgICAv
LyBGSVhNRTogRG8gdGhlIHByZW11bHRpcGx5IG9uIEZsb2F0Q29tcG9uZW50cyBkaXJlY3RseS4K
LSAgICBhdXRvIFtyLCBnLCBiLCBhXSA9IENvbG9yKHByZW11bHRpcGxpZWRBUkdCRnJvbUNvbG9y
KGNvbG9yKSkudG9TUkdCQUNvbXBvbmVudHNMb3NzeSgpOworICAgIGF1dG8gW3IsIGcsIGIsIGFd
ID0gcHJlbXVsdGlwbGllZChjb2xvci50b1NSR0JBQ29tcG9uZW50c0xvc3N5KCkpOwogICAgIGds
VW5pZm9ybTRmKHByb2dyYW0tPmNvbG9yTG9jYXRpb24oKSwgciwgZywgYiwgYSk7CiAgICAgZ2xM
aW5lV2lkdGgod2lkdGgpOwogCkBAIC00MTUsOCArNDE0LDcgQEAgc3RhdGljIHZvaWQgcHJlcGFy
ZUZpbHRlclByb2dyYW0oVGV4dHVyZQogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2Ug
MToKICAgICAgICAgICAgIC8vIFNlY29uZCBwYXNzOiB3ZSBuZWVkIHRoZSBzaGFkb3cgY29sb3Ig
YW5kIHRoZSBjb250ZW50IHRleHR1cmUgZm9yIGNvbXBvc2l0aW5nLgotICAgICAgICAgICAgLy8g
RklYTUU6IERvIHRoZSBwcmVtdWx0aXBseSBvbiBGbG9hdENvbXBvbmVudHMgZGlyZWN0bHkuCi0g
ICAgICAgICAgICBhdXRvIFtyLCBnLCBiLCBhXSA9IENvbG9yKHByZW11bHRpcGxpZWRBUkdCRnJv
bUNvbG9yKHNoYWRvdy5jb2xvcigpKSkudG9TUkdCQUNvbXBvbmVudHNMb3NzeSgpOworICAgICAg
ICAgICAgYXV0byBbciwgZywgYiwgYV0gPSBwcmVtdWx0aXBsaWVkKHNoYWRvdy5jb2xvcigpLnRv
U1JHQkFDb21wb25lbnRzTG9zc3koKSk7CiAgICAgICAgICAgICBnbFVuaWZvcm00Zihwcm9ncmFt
LmNvbG9yTG9jYXRpb24oKSwgciwgZywgYiwgYSk7CiAgICAgICAgICAgICBnbFVuaWZvcm0yZihw
cm9ncmFtLmJsdXJSYWRpdXNMb2NhdGlvbigpLCAwLCBzaGFkb3cuc3RkRGV2aWF0aW9uKCkgLyBm
bG9hdChzaXplLmhlaWdodCgpKSk7CiAgICAgICAgICAgICBnbFVuaWZvcm0yZihwcm9ncmFtLnNo
YWRvd09mZnNldExvY2F0aW9uKCksIDAsIDApOwpAQCAtNjc4LDggKzY3Niw3IEBAIHZvaWQgVGV4
dHVyZU1hcHBlckdMOjpkcmF3U29saWRDb2xvcihjb24KICAgICBSZWY8VGV4dHVyZU1hcHBlclNo
YWRlclByb2dyYW0+IHByb2dyYW0gPSBkYXRhKCkuZ2V0U2hhZGVyUHJvZ3JhbShvcHRpb25zKTsK
ICAgICBnbFVzZVByb2dyYW0ocHJvZ3JhbS0+cHJvZ3JhbUlEKCkpOwogCi0gICAgLy8gRklYTUU6
IERvIHRoZSBwcmVtdWx0aXBseSBvbiBGbG9hdENvbXBvbmVudHMgZGlyZWN0bHkuCi0gICAgYXV0
byBbciwgZywgYiwgYV0gPSBDb2xvcihwcmVtdWx0aXBsaWVkQVJHQkZyb21Db2xvcihjb2xvcikp
LnRvU1JHQkFDb21wb25lbnRzTG9zc3koKTsKKyAgICBhdXRvIFtyLCBnLCBiLCBhXSA9IHByZW11
bHRpcGxpZWQoY29sb3IudG9TUkdCQUNvbXBvbmVudHNMb3NzeSgpKTsKICAgICBnbFVuaWZvcm00
Zihwcm9ncmFtLT5jb2xvckxvY2F0aW9uKCksIHIsIGcsIGIsIGEpOwogICAgIGlmIChhIDwgMSAm
JiBpc0JsZW5kaW5nQWxsb3dlZCkKICAgICAgICAgZmxhZ3MgfD0gU2hvdWxkQmxlbmQ7Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>