<?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>246098</bug_id>
          
          <creation_ts>2022-10-05 11:32:17 -0700</creation_ts>
          <short_desc>[Outline] Move (non-inline) outline painting logic under BorderPainter</short_desc>
          <delta_ts>2022-10-12 15:29:55 -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>Layout and Rendering</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>20807</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="alan">zalan</reporter>
          <assigned_to name="alan">zalan</assigned_to>
          <cc>bfulgham</cc>
    
    <cc>koivisto</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>zalan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1903477</commentid>
    <comment_count>0</comment_count>
    <who name="alan">zalan</who>
    <bug_when>2022-10-05 11:32:17 -0700</bug_when>
    <thetext>ssia</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1903478</commentid>
    <comment_count>1</comment_count>
      <attachid>462813</attachid>
    <who name="alan">zalan</who>
    <bug_when>2022-10-05 11:35:16 -0700</bug_when>
    <thetext>Created attachment 462813
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1904033</commentid>
    <comment_count>2</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2022-10-07 06:53:50 -0700</bug_when>
    <thetext>Committed 255266@main (24502e6dcad4): &lt;https://commits.webkit.org/255266@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 462813.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1904034</commentid>
    <comment_count>3</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2022-10-07 06:54:24 -0700</bug_when>
    <thetext>&lt;rdar://problem/100896713&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>462813</attachid>
            <date>2022-10-05 11:35:16 -0700</date>
            <delta_ts>2022-10-07 08:19:07 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-246098-20221005113515.patch</filename>
            <type>text/plain</type>
            <size>36606</size>
            <attacher name="alan">zalan</attacher>
            
              <data encoding="base64">RnJvbSAzMGUyMTZiMDU3NjdiYzZlM2E0MjVjNWQzZWI1ZTY5ZmRjYjBkNDZmIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBBbGFuIEJ1anRhcyA8emFsYW5AYXBwbGUuY29tPgpEYXRlOiBX
ZWQsIDUgT2N0IDIwMjIgMTE6MzI6MzEgLTA3MDAKU3ViamVjdDogW1BBVENIXSBbT3V0bGluZV0g
TW92ZSAobm9uLWlubGluZSkgb3V0bGluZSBwYWludGluZyBsb2dpYyB1bmRlcgogQm9yZGVyUGFp
bnRlciBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjQ2MDk4CgpSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KClRoaXMgaXMgaW4gcHJlcGFyYXRpb24gZm9yIHN1cHBv
cnRpbmcgb3V0bGluZSB3aXRoIGJvcmRlci1yYWRpdXMuCgoqIFNvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9Cb3JkZXJQYWludGVyLmNwcDoKKFdlYkNvcmU6OkJvcmRlclBhaW50ZXI6OnBhaW50T3V0
bGluZSk6CiogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0JvcmRlclBhaW50ZXIuaDoKKiBTb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suY3BwOgooV2ViQ29yZTo6UmVuZGVyQmxv
Y2s6OmFkZEZvY3VzUmluZ1JlY3RzRm9ySW5saW5lQ2hpbGRyZW4gY29uc3QpOgooV2ViQ29yZTo6
UmVuZGVyQmxvY2s6OmFkZEZvY3VzUmluZ1JlY3RzIGNvbnN0KToKKFdlYkNvcmU6OlJlbmRlckJs
b2NrOjphZGRGb2N1c1JpbmdSZWN0c0ZvcklubGluZUNoaWxkcmVuKTogRGVsZXRlZC4KKFdlYkNv
cmU6OlJlbmRlckJsb2NrOjphZGRGb2N1c1JpbmdSZWN0cyk6IERlbGV0ZWQuCiogU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmg6CiogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckJsb2NrRmxvdy5jcHA6CihXZWJDb3JlOjpSZW5kZXJCbG9ja0Zsb3c6OmFkZEZvY3Vz
UmluZ1JlY3RzRm9ySW5saW5lQ2hpbGRyZW4gY29uc3QpOgooV2ViQ29yZTo6UmVuZGVyQmxvY2tG
bG93OjphZGRGb2N1c1JpbmdSZWN0c0ZvcklubGluZUNoaWxkcmVuKTogRGVsZXRlZC4KKiBTb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2tGbG93Lmg6CiogU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckJveC5jcHA6CihXZWJDb3JlOjpSZW5kZXJCb3g6OmFkZEZvY3VzUmlu
Z1JlY3RzIGNvbnN0KToKKFdlYkNvcmU6OlJlbmRlckJveDo6YWRkRm9jdXNSaW5nUmVjdHMpOiBE
ZWxldGVkLgoqIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3guaDoKKiBTb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRWxlbWVudC5jcHA6CihXZWJDb3JlOjpSZW5kZXJFbGVt
ZW50OjpwYWludEZvY3VzUmluZyBjb25zdCk6CihXZWJDb3JlOjpSZW5kZXJFbGVtZW50OjpwYWlu
dE91dGxpbmUpOgooV2ViQ29yZTo6UmVuZGVyRWxlbWVudDo6cGFpbnRGb2N1c1JpbmcpOiBEZWxl
dGVkLgoqIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJFbGVtZW50Lmg6CiogU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlcklubGluZS5jcHA6CihXZWJDb3JlOjpSZW5kZXJJbmxp
bmU6OmFkZEZvY3VzUmluZ1JlY3RzIGNvbnN0KToKKFdlYkNvcmU6OlJlbmRlcklubGluZTo6YWRk
Rm9jdXNSaW5nUmVjdHMpOiBEZWxldGVkLgoqIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJJbmxpbmUuaDoKKiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGlzdEJveC5jcHA6
CihXZWJDb3JlOjpSZW5kZXJMaXN0Qm94OjphZGRGb2N1c1JpbmdSZWN0cyBjb25zdCk6CihXZWJD
b3JlOjpSZW5kZXJMaXN0Qm94OjphZGRGb2N1c1JpbmdSZWN0cyk6IERlbGV0ZWQuCiogU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpc3RCb3guaDoKKiBTb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyT2JqZWN0LmNwcDoKKFdlYkNvcmU6OlJlbmRlck9iamVjdDo6YWRkUERGVVJM
UmVjdCBjb25zdCk6CihXZWJDb3JlOjpSZW5kZXJPYmplY3Q6OmFkZFBERlVSTFJlY3QpOiBEZWxl
dGVkLgoqIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3QuaDoKKFdlYkNvcmU6
OlJlbmRlck9iamVjdDo6YWRkRm9jdXNSaW5nUmVjdHMgY29uc3QpOgooV2ViQ29yZTo6UmVuZGVy
T2JqZWN0OjphZGRGb2N1c1JpbmdSZWN0cyk6IERlbGV0ZWQuCiogU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlclRleHRDb250cm9sLmNwcDoKKFdlYkNvcmU6OlJlbmRlclRleHRDb250cm9s
OjphZGRGb2N1c1JpbmdSZWN0cyBjb25zdCk6CihXZWJDb3JlOjpSZW5kZXJUZXh0Q29udHJvbDo6
YWRkRm9jdXNSaW5nUmVjdHMpOiBEZWxldGVkLgoqIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJUZXh0Q29udHJvbC5oOgoqIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvTGVnYWN5
UmVuZGVyU1ZHQ29udGFpbmVyLmNwcDoKKFdlYkNvcmU6OkxlZ2FjeVJlbmRlclNWR0NvbnRhaW5l
cjo6YWRkRm9jdXNSaW5nUmVjdHMgY29uc3QpOgooV2ViQ29yZTo6TGVnYWN5UmVuZGVyU1ZHQ29u
dGFpbmVyOjphZGRGb2N1c1JpbmdSZWN0cyk6IERlbGV0ZWQuCiogU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL3N2Zy9MZWdhY3lSZW5kZXJTVkdDb250YWluZXIuaDoKKiBTb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvc3ZnL0xlZ2FjeVJlbmRlclNWR0ltYWdlLmNwcDoKKFdlYkNvcmU6OkxlZ2FjeVJl
bmRlclNWR0ltYWdlOjphZGRGb2N1c1JpbmdSZWN0cyBjb25zdCk6CihXZWJDb3JlOjpMZWdhY3lS
ZW5kZXJTVkdJbWFnZTo6YWRkRm9jdXNSaW5nUmVjdHMpOiBEZWxldGVkLgoqIFNvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9zdmcvTGVnYWN5UmVuZGVyU1ZHSW1hZ2UuaDoKKiBTb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvc3ZnL0xlZ2FjeVJlbmRlclNWR1NoYXBlLmNwcDoKKFdlYkNvcmU6OkxlZ2Fj
eVJlbmRlclNWR1NoYXBlOjphZGRGb2N1c1JpbmdSZWN0cyBjb25zdCk6CihXZWJDb3JlOjpMZWdh
Y3lSZW5kZXJTVkdTaGFwZTo6YWRkRm9jdXNSaW5nUmVjdHMpOiBEZWxldGVkLgoqIFNvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9zdmcvTGVnYWN5UmVuZGVyU1ZHU2hhcGUuaDoKKiBTb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0hpZGRlbkNvbnRhaW5lci5oOgoqIFNvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHTW9kZWxPYmplY3QuY3BwOgooV2ViQ29yZTo6
UmVuZGVyU1ZHTW9kZWxPYmplY3Q6OmFkZEZvY3VzUmluZ1JlY3RzIGNvbnN0KToKKFdlYkNvcmU6
OlJlbmRlclNWR01vZGVsT2JqZWN0OjphZGRGb2N1c1JpbmdSZWN0cyk6IERlbGV0ZWQuCiogU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdNb2RlbE9iamVjdC5oOgotLS0KIFNv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9Cb3JkZXJQYWludGVyLmNwcCAgICB8IDcxICsrKysrKysr
KysrKysrKysrKysKIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9Cb3JkZXJQYWludGVyLmggICAg
ICB8ICAyICsKIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5jcHAgICAgICB8
ICA0ICstCiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suaCAgICAgICAgfCAg
NCArLQogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrRmxvdy5jcHAgIHwgIDIg
Ky0KIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9ja0Zsb3cuaCAgICB8ICAyICst
CiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94LmNwcCAgICAgICAgfCAgMiArLQog
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveC5oICAgICAgICAgIHwgIDIgKy0KIFNv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJFbGVtZW50LmNwcCAgICB8IDcwICstLS0tLS0t
LS0tLS0tLS0tLQogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckVsZW1lbnQuaCAgICAg
IHwgIDIgKy0KIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbmxpbmUuY3BwICAgICB8
ICAyICstCiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW5saW5lLmggICAgICAgfCAg
MiArLQogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpc3RCb3guY3BwICAgIHwgIDIg
Ky0KIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaXN0Qm94LmggICAgICB8ICAyICst
CiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmNwcCAgICAgfCAgMyArLQog
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5oICAgICAgIHwgIDUgKy0KIC4u
Li9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0Q29udHJvbC5jcHAgICB8ICAyICstCiBTb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dENvbnRyb2wuaCAgfCAgMiArLQogLi4uL3N2
Zy9MZWdhY3lSZW5kZXJTVkdDb250YWluZXIuY3BwICAgICAgICAgIHwgIDIgKy0KIC4uLi9yZW5k
ZXJpbmcvc3ZnL0xlZ2FjeVJlbmRlclNWR0NvbnRhaW5lci5oICB8ICAyICstCiAuLi4vcmVuZGVy
aW5nL3N2Zy9MZWdhY3lSZW5kZXJTVkdJbWFnZS5jcHAgICAgfCAgMiArLQogLi4uL3JlbmRlcmlu
Zy9zdmcvTGVnYWN5UmVuZGVyU1ZHSW1hZ2UuaCAgICAgIHwgIDIgKy0KIC4uLi9yZW5kZXJpbmcv
c3ZnL0xlZ2FjeVJlbmRlclNWR1NoYXBlLmNwcCAgICB8ICAyICstCiAuLi4vcmVuZGVyaW5nL3N2
Zy9MZWdhY3lSZW5kZXJTVkdTaGFwZS5oICAgICAgfCAgMiArLQogLi4uL3JlbmRlcmluZy9zdmcv
UmVuZGVyU1ZHSGlkZGVuQ29udGFpbmVyLmggIHwgIDIgKy0KIC4uLi9yZW5kZXJpbmcvc3ZnL1Jl
bmRlclNWR01vZGVsT2JqZWN0LmNwcCAgICB8ICAyICstCiAuLi4vcmVuZGVyaW5nL3N2Zy9SZW5k
ZXJTVkdNb2RlbE9iamVjdC5oICAgICAgfCAgMiArLQogMjcgZmlsZXMgY2hhbmdlZCwgMTA0IGlu
c2VydGlvbnMoKyksIDk1IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9Cb3JkZXJQYWludGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9C
b3JkZXJQYWludGVyLmNwcAppbmRleCAzYjg4NTQwMjBmMTQuLjcxMWQ2NjcwMWE1YSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0JvcmRlclBhaW50ZXIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9Cb3JkZXJQYWludGVyLmNwcApAQCAtMzMsNiArMzMsNyBA
QAogI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dC5oIgogI2luY2x1ZGUgIk5pbmVQaWVjZUltYWdl
LmgiCiAjaW5jbHVkZSAiUGFpbnRJbmZvLmgiCisjaW5jbHVkZSAiUmVuZGVyVGhlbWUuaCIKIAog
bmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC0xNzgsNiArMTc5LDc2IEBAIHZvaWQgQm9yZGVyUGFp
bnRlcjo6cGFpbnRCb3JkZXIoY29uc3QgTGF5b3V0UmVjdCYgcmVjdCwgY29uc3QgUmVuZGVyU3R5
bGUmIHN0eWxlCiAgICAgcGFpbnRTaWRlcyhzaWRlcyk7CiB9CiAKK3ZvaWQgQm9yZGVyUGFpbnRl
cjo6cGFpbnRPdXRsaW5lKGNvbnN0IExheW91dFJlY3QmIHBhaW50UmVjdCkKK3sKKyAgICBhdXRv
JiBzdHlsZVRvVXNlID0gbV9yZW5kZXJlci5zdHlsZSgpOworICAgIGZsb2F0IG91dGxpbmVXaWR0
aCA9IGZsb29yVG9EZXZpY2VQaXhlbChzdHlsZVRvVXNlLm91dGxpbmVXaWR0aCgpLCBkb2N1bWVu
dCgpLmRldmljZVNjYWxlRmFjdG9yKCkpOworICAgIGZsb2F0IG91dGxpbmVPZmZzZXQgPSBmbG9v
clRvRGV2aWNlUGl4ZWwoc3R5bGVUb1VzZS5vdXRsaW5lT2Zmc2V0KCksIGRvY3VtZW50KCkuZGV2
aWNlU2NhbGVGYWN0b3IoKSk7CisKKyAgICAvLyBPbmx5IHBhaW50IHRoZSBmb2N1cyByaW5nIGJ5
IGhhbmQgaWYgdGhlIHRoZW1lIGlzbid0IGFibGUgdG8gZHJhdyBpdC4KKyAgICBpZiAoc3R5bGVU
b1VzZS5vdXRsaW5lU3R5bGVJc0F1dG8oKSA9PSBPdXRsaW5lSXNBdXRvOjpPbiAmJiAhbV9yZW5k
ZXJlci50aGVtZSgpLnN1cHBvcnRzRm9jdXNSaW5nKHN0eWxlVG9Vc2UpKSB7CisgICAgICAgIFZl
Y3RvcjxMYXlvdXRSZWN0PiBmb2N1c1JpbmdSZWN0czsKKyAgICAgICAgTGF5b3V0UmVjdCBwYWlu
dFJlY3RUb1VzZSB7IHBhaW50UmVjdCB9OworICAgICAgICBpZiAoaXM8UmVuZGVyQm94PihtX3Jl
bmRlcmVyKSkKKyAgICAgICAgICAgIHBhaW50UmVjdFRvVXNlID0gbV9yZW5kZXJlci50aGVtZSgp
LmFkanVzdGVkUGFpbnRSZWN0KGRvd25jYXN0PFJlbmRlckJveD4obV9yZW5kZXJlciksIHBhaW50
UmVjdFRvVXNlKTsKKyAgICAgICAgbV9yZW5kZXJlci5hZGRGb2N1c1JpbmdSZWN0cyhmb2N1c1Jp
bmdSZWN0cywgcGFpbnRSZWN0VG9Vc2UubG9jYXRpb24oKSwgbV9wYWludEluZm8ucGFpbnRDb250
YWluZXIpOworICAgICAgICBtX3JlbmRlcmVyLnBhaW50Rm9jdXNSaW5nKG1fcGFpbnRJbmZvLCBz
dHlsZVRvVXNlLCBmb2N1c1JpbmdSZWN0cyk7CisgICAgfQorCisgICAgaWYgKG1fcmVuZGVyZXIu
aGFzT3V0bGluZUFubm90YXRpb24oKSAmJiBzdHlsZVRvVXNlLm91dGxpbmVTdHlsZUlzQXV0bygp
ID09IE91dGxpbmVJc0F1dG86Ok9mZiAmJiAhbV9yZW5kZXJlci50aGVtZSgpLnN1cHBvcnRzRm9j
dXNSaW5nKHN0eWxlVG9Vc2UpKQorICAgICAgICBtX3JlbmRlcmVyLmFkZFBERlVSTFJlY3QobV9w
YWludEluZm8sIHBhaW50UmVjdC5sb2NhdGlvbigpKTsKKworICAgIGlmIChzdHlsZVRvVXNlLm91
dGxpbmVTdHlsZUlzQXV0bygpID09IE91dGxpbmVJc0F1dG86Ok9uIHx8IHN0eWxlVG9Vc2Uub3V0
bGluZVN0eWxlKCkgPT0gQm9yZGVyU3R5bGU6Ok5vbmUpCisgICAgICAgIHJldHVybjsKKworICAg
IGF1dG8mIGdyYXBoaWNzQ29udGV4dCA9IG1fcGFpbnRJbmZvLmNvbnRleHQoKTsKKworICAgIEZs
b2F0UmVjdCBvdXRlciA9IHBhaW50UmVjdDsKKyAgICBvdXRlci5pbmZsYXRlKG91dGxpbmVPZmZz
ZXQgKyBvdXRsaW5lV2lkdGgpOworICAgIEZsb2F0UmVjdCBpbm5lciA9IG91dGVyOworICAgIGlu
bmVyLmluZmxhdGUoLW91dGxpbmVXaWR0aCk7CisKKyAgICAvLyBGSVhNRTogVGhpcyBwcmV2ZW50
cyBvdXRsaW5lcyBmcm9tIHBhaW50aW5nIGluc2lkZSB0aGUgb2JqZWN0LiBTZWUgYnVnIDEyMDQy
CisgICAgaWYgKG91dGVyLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgYXV0byYg
ZG9jdW1lbnQgPSB0aGlzLT5kb2N1bWVudCgpOworICAgIEJvcmRlclN0eWxlIG91dGxpbmVTdHls
ZSA9IHN0eWxlVG9Vc2Uub3V0bGluZVN0eWxlKCk7CisgICAgQ29sb3Igb3V0bGluZUNvbG9yID0g
c3R5bGVUb1VzZS52aXNpdGVkRGVwZW5kZW50Q29sb3JXaXRoQ29sb3JGaWx0ZXIoQ1NTUHJvcGVy
dHlPdXRsaW5lQ29sb3IpOworCisgICAgYm9vbCB1c2VUcmFuc3BhcmVuY3lMYXllciA9ICFvdXRs
aW5lQ29sb3IuaXNPcGFxdWUoKTsKKyAgICBpZiAodXNlVHJhbnNwYXJlbmN5TGF5ZXIpIHsKKyAg
ICAgICAgaWYgKG91dGxpbmVTdHlsZSA9PSBCb3JkZXJTdHlsZTo6U29saWQpIHsKKyAgICAgICAg
ICAgIFBhdGggcGF0aDsKKyAgICAgICAgICAgIHBhdGguYWRkUmVjdChvdXRlcik7CisgICAgICAg
ICAgICBwYXRoLmFkZFJlY3QoaW5uZXIpOworICAgICAgICAgICAgZ3JhcGhpY3NDb250ZXh0LnNl
dEZpbGxSdWxlKFdpbmRSdWxlOjpFdmVuT2RkKTsKKyAgICAgICAgICAgIGdyYXBoaWNzQ29udGV4
dC5zZXRGaWxsQ29sb3Iob3V0bGluZUNvbG9yKTsKKyAgICAgICAgICAgIGdyYXBoaWNzQ29udGV4
dC5maWxsUGF0aChwYXRoKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAg
ICBncmFwaGljc0NvbnRleHQuYmVnaW5UcmFuc3BhcmVuY3lMYXllcihvdXRsaW5lQ29sb3IuYWxw
aGFBc0Zsb2F0KCkpOworICAgICAgICBvdXRsaW5lQ29sb3IgPSBvdXRsaW5lQ29sb3Iub3BhcXVl
Q29sb3IoKTsKKyAgICB9CisKKyAgICBmbG9hdCBsZWZ0T3V0ZXIgPSBvdXRlci54KCk7CisgICAg
ZmxvYXQgbGVmdElubmVyID0gaW5uZXIueCgpOworICAgIGZsb2F0IHJpZ2h0T3V0ZXIgPSBvdXRl
ci5tYXhYKCk7CisgICAgZmxvYXQgcmlnaHRJbm5lciA9IHN0ZDo6bWluKGlubmVyLm1heFgoKSwg
cmlnaHRPdXRlcik7CisgICAgZmxvYXQgdG9wT3V0ZXIgPSBvdXRlci55KCk7CisgICAgZmxvYXQg
dG9wSW5uZXIgPSBpbm5lci55KCk7CisgICAgZmxvYXQgYm90dG9tT3V0ZXIgPSBvdXRlci5tYXhZ
KCk7CisgICAgZmxvYXQgYm90dG9tSW5uZXIgPSBzdGQ6Om1pbihpbm5lci5tYXhZKCksIGJvdHRv
bU91dGVyKTsKKworICAgIGRyYXdMaW5lRm9yQm94U2lkZShncmFwaGljc0NvbnRleHQsIGRvY3Vt
ZW50LCBGbG9hdFJlY3QoRmxvYXRQb2ludChsZWZ0T3V0ZXIsIHRvcE91dGVyKSwgRmxvYXRQb2lu
dChsZWZ0SW5uZXIsIGJvdHRvbU91dGVyKSksIEJveFNpZGU6OkxlZnQsIG91dGxpbmVDb2xvciwg
b3V0bGluZVN0eWxlLCBvdXRsaW5lV2lkdGgsIG91dGxpbmVXaWR0aCk7CisgICAgZHJhd0xpbmVG
b3JCb3hTaWRlKGdyYXBoaWNzQ29udGV4dCwgZG9jdW1lbnQsIEZsb2F0UmVjdChGbG9hdFBvaW50
KGxlZnRPdXRlciwgdG9wT3V0ZXIpLCBGbG9hdFBvaW50KHJpZ2h0T3V0ZXIsIHRvcElubmVyKSks
IEJveFNpZGU6OlRvcCwgb3V0bGluZUNvbG9yLCBvdXRsaW5lU3R5bGUsIG91dGxpbmVXaWR0aCwg
b3V0bGluZVdpZHRoKTsKKyAgICBkcmF3TGluZUZvckJveFNpZGUoZ3JhcGhpY3NDb250ZXh0LCBk
b2N1bWVudCwgRmxvYXRSZWN0KEZsb2F0UG9pbnQocmlnaHRJbm5lciwgdG9wT3V0ZXIpLCBGbG9h
dFBvaW50KHJpZ2h0T3V0ZXIsIGJvdHRvbU91dGVyKSksIEJveFNpZGU6OlJpZ2h0LCBvdXRsaW5l
Q29sb3IsIG91dGxpbmVTdHlsZSwgb3V0bGluZVdpZHRoLCBvdXRsaW5lV2lkdGgpOworICAgIGRy
YXdMaW5lRm9yQm94U2lkZShncmFwaGljc0NvbnRleHQsIGRvY3VtZW50LCBGbG9hdFJlY3QoRmxv
YXRQb2ludChsZWZ0T3V0ZXIsIGJvdHRvbUlubmVyKSwgRmxvYXRQb2ludChyaWdodE91dGVyLCBi
b3R0b21PdXRlcikpLCBCb3hTaWRlOjpCb3R0b20sIG91dGxpbmVDb2xvciwgb3V0bGluZVN0eWxl
LCBvdXRsaW5lV2lkdGgsIG91dGxpbmVXaWR0aCk7CisKKyAgICBpZiAodXNlVHJhbnNwYXJlbmN5
TGF5ZXIpCisgICAgICAgIGdyYXBoaWNzQ29udGV4dC5lbmRUcmFuc3BhcmVuY3lMYXllcigpOwor
fQorCiB2b2lkIEJvcmRlclBhaW50ZXI6OnBhaW50U2lkZXMoY29uc3QgU2lkZXMmIHNpZGVzKQog
ewogICAgIEdyYXBoaWNzQ29udGV4dCYgZ3JhcGhpY3NDb250ZXh0ID0gbV9wYWludEluZm8uY29u
dGV4dCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0JvcmRlclBhaW50
ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9Cb3JkZXJQYWludGVyLmgKaW5kZXggOGUz
NzQ4ZGQyOGJjLi5lODY1YzFlZDk2ZDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9Cb3JkZXJQYWludGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0JvcmRl
clBhaW50ZXIuaApAQCAtMzIsNiArMzIsOCBAQCBwdWJsaWM6CiAgICAgQm9yZGVyUGFpbnRlcihj
b25zdCBSZW5kZXJFbGVtZW50JiwgY29uc3QgUGFpbnRJbmZvJik7CiAKICAgICB2b2lkIHBhaW50
Qm9yZGVyKGNvbnN0IExheW91dFJlY3QmLCBjb25zdCBSZW5kZXJTdHlsZSYsIEJhY2tncm91bmRC
bGVlZEF2b2lkYW5jZSA9IEJhY2tncm91bmRCbGVlZE5vbmUsIGJvb2wgaW5jbHVkZUxvZ2ljYWxM
ZWZ0RWRnZSA9IHRydWUsIGJvb2wgaW5jbHVkZUxvZ2ljYWxSaWdodEVkZ2UgPSB0cnVlKTsKKyAg
ICB2b2lkIHBhaW50T3V0bGluZShjb25zdCBMYXlvdXRSZWN0Jik7CisKICAgICBib29sIHBhaW50
TmluZVBpZWNlSW1hZ2UoY29uc3QgTGF5b3V0UmVjdCYsIGNvbnN0IFJlbmRlclN0eWxlJiwgY29u
c3QgTmluZVBpZWNlSW1hZ2UmLCBDb21wb3NpdGVPcGVyYXRvciA9IENvbXBvc2l0ZU9wZXJhdG9y
OjpTb3VyY2VPdmVyKTsKICAgICBzdHJ1Y3QgU2lkZXMgewogICAgICAgICBSb3VuZGVkUmVjdCBv
dXRlckJvcmRlcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJC
bG9jay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suY3BwCmluZGV4
IGQ0NjFiZGVmNzk0OC4uMmNhMGM3YTZmZWQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyQmxvY2suY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJCbG9jay5jcHAKQEAgLTI4MTgsMTIgKzI4MTgsMTIgQEAgdm9pZCBSZW5kZXJCbG9jazo6
dXBkYXRlSGl0VGVzdFJlc3VsdChIaXRUZXN0UmVzdWx0JiByZXN1bHQsIGNvbnN0IExheW91dFBv
aW50JgogICAgIH0KIH0KIAotdm9pZCBSZW5kZXJCbG9jazo6YWRkRm9jdXNSaW5nUmVjdHNGb3JJ
bmxpbmVDaGlsZHJlbihWZWN0b3I8TGF5b3V0UmVjdD4mLCBjb25zdCBMYXlvdXRQb2ludCYsIGNv
bnN0IFJlbmRlckxheWVyTW9kZWxPYmplY3QqKQordm9pZCBSZW5kZXJCbG9jazo6YWRkRm9jdXNS
aW5nUmVjdHNGb3JJbmxpbmVDaGlsZHJlbihWZWN0b3I8TGF5b3V0UmVjdD4mLCBjb25zdCBMYXlv
dXRQb2ludCYsIGNvbnN0IFJlbmRlckxheWVyTW9kZWxPYmplY3QqKSBjb25zdAogewogICAgIEFT
U0VSVF9OT1RfUkVBQ0hFRCgpOwogfQogCi12b2lkIFJlbmRlckJsb2NrOjphZGRGb2N1c1JpbmdS
ZWN0cyhWZWN0b3I8TGF5b3V0UmVjdD4mIHJlY3RzLCBjb25zdCBMYXlvdXRQb2ludCYgYWRkaXRp
b25hbE9mZnNldCwgY29uc3QgUmVuZGVyTGF5ZXJNb2RlbE9iamVjdCogcGFpbnRDb250YWluZXIp
Cit2b2lkIFJlbmRlckJsb2NrOjphZGRGb2N1c1JpbmdSZWN0cyhWZWN0b3I8TGF5b3V0UmVjdD4m
IHJlY3RzLCBjb25zdCBMYXlvdXRQb2ludCYgYWRkaXRpb25hbE9mZnNldCwgY29uc3QgUmVuZGVy
TGF5ZXJNb2RlbE9iamVjdCogcGFpbnRDb250YWluZXIpIGNvbnN0CiB7CiAgICAgLy8gRm9yIGJs
b2NrcyBpbnNpZGUgaW5saW5lcywgd2UgaW5jbHVkZSBtYXJnaW5zIHNvIHRoYXQgd2UgcnVuIHJp
Z2h0IHVwIHRvIHRoZSBpbmxpbmUgYm94ZXMKICAgICAvLyBhYm92ZSBhbmQgYmVsb3cgdXMgKHRo
dXMgZ2V0dGluZyBtZXJnZWQgd2l0aCB0aGVtIHRvIGZvcm0gYSBzaW5nbGUgaXJyZWd1bGFyIHNo
YXBlKS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5o
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmgKaW5kZXggNWQxNzM3MTcy
NGI1Li45OWZmMTYxOGQyYjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJCbG9jay5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5o
CkBAIC00MDksOCArNDA5LDggQEAgcHJvdGVjdGVkOgogICAgIHZvaWQgYWRkT3ZlcmZsb3dGcm9t
UG9zaXRpb25lZE9iamVjdHMoKTsKICAgICB2b2lkIGFkZFZpc3VhbE92ZXJmbG93RnJvbVRoZW1l
KCk7CiAKLSAgICB2b2lkIGFkZEZvY3VzUmluZ1JlY3RzKFZlY3RvcjxMYXlvdXRSZWN0PiYsIGNv
bnN0IExheW91dFBvaW50JiBhZGRpdGlvbmFsT2Zmc2V0LCBjb25zdCBSZW5kZXJMYXllck1vZGVs
T2JqZWN0KiBwYWludENvbnRhaW5lciA9IDApIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBh
ZGRGb2N1c1JpbmdSZWN0c0ZvcklubGluZUNoaWxkcmVuKFZlY3RvcjxMYXlvdXRSZWN0PiYsIGNv
bnN0IExheW91dFBvaW50JiBhZGRpdGlvbmFsT2Zmc2V0LCBjb25zdCBSZW5kZXJMYXllck1vZGVs
T2JqZWN0KiBwYWludENvbnRhaW5lcik7CisgICAgdm9pZCBhZGRGb2N1c1JpbmdSZWN0cyhWZWN0
b3I8TGF5b3V0UmVjdD4mLCBjb25zdCBMYXlvdXRQb2ludCYgYWRkaXRpb25hbE9mZnNldCwgY29u
c3QgUmVuZGVyTGF5ZXJNb2RlbE9iamVjdCogcGFpbnRDb250YWluZXIgPSAwKSBjb25zdCBvdmVy
cmlkZTsKKyAgICB2aXJ0dWFsIHZvaWQgYWRkRm9jdXNSaW5nUmVjdHNGb3JJbmxpbmVDaGlsZHJl
bihWZWN0b3I8TGF5b3V0UmVjdD4mLCBjb25zdCBMYXlvdXRQb2ludCYgYWRkaXRpb25hbE9mZnNl
dCwgY29uc3QgUmVuZGVyTGF5ZXJNb2RlbE9iamVjdCogcGFpbnRDb250YWluZXIpIGNvbnN0Owog
CiAgICAgdm9pZCBjb21wdXRlRnJhZ21lbnRSYW5nZUZvckJveENoaWxkKGNvbnN0IFJlbmRlckJv
eCYpIGNvbnN0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
QmxvY2tGbG93LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9ja0Zsb3cu
Y3BwCmluZGV4IGYzOTA0YzZhMGJhYS4uNmY0NmEyYWFmMmFlIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2tGbG93LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2tGbG93LmNwcApAQCAtMzQ2NCw3ICszNDY0LDcgQEAgVmlz
aWJsZVBvc2l0aW9uIFJlbmRlckJsb2NrRmxvdzo6cG9zaXRpb25Gb3JQb2ludChjb25zdCBMYXlv
dXRQb2ludCYgcG9pbnQsIGNvbnMKICAgICByZXR1cm4gUmVuZGVyQmxvY2s6OnBvc2l0aW9uRm9y
UG9pbnQocG9pbnQsIG51bGxwdHIpOwogfQogCi12b2lkIFJlbmRlckJsb2NrRmxvdzo6YWRkRm9j
dXNSaW5nUmVjdHNGb3JJbmxpbmVDaGlsZHJlbihWZWN0b3I8TGF5b3V0UmVjdD4mIHJlY3RzLCBj
b25zdCBMYXlvdXRQb2ludCYgYWRkaXRpb25hbE9mZnNldCwgY29uc3QgUmVuZGVyTGF5ZXJNb2Rl
bE9iamVjdCopCit2b2lkIFJlbmRlckJsb2NrRmxvdzo6YWRkRm9jdXNSaW5nUmVjdHNGb3JJbmxp
bmVDaGlsZHJlbihWZWN0b3I8TGF5b3V0UmVjdD4mIHJlY3RzLCBjb25zdCBMYXlvdXRQb2ludCYg
YWRkaXRpb25hbE9mZnNldCwgY29uc3QgUmVuZGVyTGF5ZXJNb2RlbE9iamVjdCopIGNvbnN0CiB7
CiAgICAgQVNTRVJUKGNoaWxkcmVuSW5saW5lKCkpOwogICAgIGZvciAoYXV0byBib3ggPSBJbmxp
bmVJdGVyYXRvcjo6Zmlyc3RSb290SW5saW5lQm94Rm9yKCp0aGlzKTsgYm94OyBib3gudHJhdmVy
c2VOZXh0SW5saW5lQm94KCkpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJCbG9ja0Zsb3cuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9j
a0Zsb3cuaAppbmRleCBmODhiMWI4NmM0NTQuLjE1MzNkMjExM2E4MyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrRmxvdy5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJCbG9ja0Zsb3cuaApAQCAtNTA3LDcgKzUwNyw3IEBAIHByaXZh
dGU6CiAgICAgICAgIExheW91dFVuaXQmIGxhc3RMb2dpY2FsVG9wLCBMYXlvdXRVbml0JiBsYXN0
TG9naWNhbExlZnQsIExheW91dFVuaXQmIGxhc3RMb2dpY2FsUmlnaHQsIGNvbnN0IExvZ2ljYWxT
ZWxlY3Rpb25PZmZzZXRDYWNoZXMmLCBjb25zdCBQYWludEluZm8qKSBvdmVycmlkZTsKICAgICAK
ICAgICBWaXNpYmxlUG9zaXRpb24gcG9zaXRpb25Gb3JQb2ludFdpdGhJbmxpbmVDaGlsZHJlbihj
b25zdCBMYXlvdXRQb2ludCYgcG9pbnRJbkxvZ2ljYWxDb250ZW50cywgY29uc3QgUmVuZGVyRnJh
Z21lbnRDb250YWluZXIqKSBvdmVycmlkZTsKLSAgICB2b2lkIGFkZEZvY3VzUmluZ1JlY3RzRm9y
SW5saW5lQ2hpbGRyZW4oVmVjdG9yPExheW91dFJlY3Q+JiByZWN0cywgY29uc3QgTGF5b3V0UG9p
bnQmIGFkZGl0aW9uYWxPZmZzZXQsIGNvbnN0IFJlbmRlckxheWVyTW9kZWxPYmplY3QqKSBvdmVy
cmlkZTsKKyAgICB2b2lkIGFkZEZvY3VzUmluZ1JlY3RzRm9ySW5saW5lQ2hpbGRyZW4oVmVjdG9y
PExheW91dFJlY3Q+JiByZWN0cywgY29uc3QgTGF5b3V0UG9pbnQmIGFkZGl0aW9uYWxPZmZzZXQs
IGNvbnN0IFJlbmRlckxheWVyTW9kZWxPYmplY3QqKSBjb25zdCBvdmVycmlkZTsKIAogcHVibGlj
OgogICAgIHZpcnR1YWwgc3RkOjpvcHRpb25hbDxUZXh0QWxpZ25Nb2RlPiBvdmVycmlkZVRleHRB
bGlnbm1lbnRGb3JMaW5lKGJvb2wgLyogZW5kc1dpdGhTb2Z0QnJlYWsgKi8pIGNvbnN0IHsgcmV0
dXJuIHsgfTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJv
eC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94LmNwcAppbmRleCBmMjU5
N2Y4MmVhZmIuLmQwOGE2YWQ1ZDQ3YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckJveC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJv
eC5jcHAKQEAgLTg3OCw3ICs4NzgsNyBAQCBMYXlvdXRSZWN0IFJlbmRlckJveDo6b3V0bGluZUJv
dW5kc0ZvclJlcGFpbnQoY29uc3QgUmVuZGVyTGF5ZXJNb2RlbE9iamVjdCogcmVwYQogICAgIHJl
dHVybiBMYXlvdXRSZWN0KHNuYXBSZWN0VG9EZXZpY2VQaXhlbHMoYm94LCBkb2N1bWVudCgpLmRl
dmljZVNjYWxlRmFjdG9yKCkpKTsKIH0KIAotdm9pZCBSZW5kZXJCb3g6OmFkZEZvY3VzUmluZ1Jl
Y3RzKFZlY3RvcjxMYXlvdXRSZWN0PiYgcmVjdHMsIGNvbnN0IExheW91dFBvaW50JiBhZGRpdGlv
bmFsT2Zmc2V0LCBjb25zdCBSZW5kZXJMYXllck1vZGVsT2JqZWN0KikKK3ZvaWQgUmVuZGVyQm94
OjphZGRGb2N1c1JpbmdSZWN0cyhWZWN0b3I8TGF5b3V0UmVjdD4mIHJlY3RzLCBjb25zdCBMYXlv
dXRQb2ludCYgYWRkaXRpb25hbE9mZnNldCwgY29uc3QgUmVuZGVyTGF5ZXJNb2RlbE9iamVjdCop
IGNvbnN0CiB7CiAgICAgaWYgKCFzaXplKCkuaXNFbXB0eSgpKQogICAgICAgICByZWN0cy5hcHBl
bmQoTGF5b3V0UmVjdChhZGRpdGlvbmFsT2Zmc2V0LCBzaXplKCkpKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3guaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJCb3guaAppbmRleCA4MWVmNDNmYjFjMTIuLjI3M2QxZDE5OWE5ZSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveC5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3guaApAQCAtMTc4LDcgKzE3OCw3IEBAIHB1YmxpYzoK
IAogICAgIC8vIEJvdW5kcyBvZiB0aGUgb3V0bGluZSBib3ggaW4gYWJzb2x1dGUgY29vcmRzLiBS
ZXNwZWN0cyB0cmFuc2Zvcm1zCiAgICAgTGF5b3V0UmVjdCBvdXRsaW5lQm91bmRzRm9yUmVwYWlu
dChjb25zdCBSZW5kZXJMYXllck1vZGVsT2JqZWN0KiAvKnJlcGFpbnRDb250YWluZXIqLywgY29u
c3QgUmVuZGVyR2VvbWV0cnlNYXAqKSBjb25zdCBmaW5hbDsKLSAgICB2b2lkIGFkZEZvY3VzUmlu
Z1JlY3RzKFZlY3RvcjxMYXlvdXRSZWN0PiYsIGNvbnN0IExheW91dFBvaW50JiBhZGRpdGlvbmFs
T2Zmc2V0LCBjb25zdCBSZW5kZXJMYXllck1vZGVsT2JqZWN0KiBwYWludENvbnRhaW5lciA9IG51
bGxwdHIpIG92ZXJyaWRlOworICAgIHZvaWQgYWRkRm9jdXNSaW5nUmVjdHMoVmVjdG9yPExheW91
dFJlY3Q+JiwgY29uc3QgTGF5b3V0UG9pbnQmIGFkZGl0aW9uYWxPZmZzZXQsIGNvbnN0IFJlbmRl
ckxheWVyTW9kZWxPYmplY3QqIHBhaW50Q29udGFpbmVyID0gbnVsbHB0cikgY29uc3Qgb3ZlcnJp
ZGU7CiAgICAgCiAgICAgRmxvYXRSZWN0IHJlcGFpbnRSZWN0SW5Mb2NhbENvb3JkaW5hdGVzKCkg
Y29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gYm9yZGVyQm94UmVjdCgpOyB9CiAgICAgRmxvYXRSZWN0
IG9iamVjdEJvdW5kaW5nQm94KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gYm9yZGVyQm94UmVj
dCgpOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRWxlbWVu
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRWxlbWVudC5jcHAKaW5kZXgg
YjE2M2QzZTdmZWE2Li5kZGJhM2QyODQxYjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyRWxlbWVudC5jcHAKQEAgLTE4MDEsNyArMTgwMSw3IEBAIHN0YXRpYyBib29sIGRyYXdG
b2N1c1JpbmcoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBQYWdlJiBwYWdlLCBWZWN0b3I8Rmxv
YXRSZWN0CiB9CiAKIAotdm9pZCBSZW5kZXJFbGVtZW50OjpwYWludEZvY3VzUmluZyhQYWludElu
Zm8mIHBhaW50SW5mbywgY29uc3QgUmVuZGVyU3R5bGUmIHN0eWxlLCBjb25zdCBWZWN0b3I8TGF5
b3V0UmVjdD4mIGZvY3VzUmluZ1JlY3RzKQordm9pZCBSZW5kZXJFbGVtZW50OjpwYWludEZvY3Vz
UmluZyhjb25zdCBQYWludEluZm8mIHBhaW50SW5mbywgY29uc3QgUmVuZGVyU3R5bGUmIHN0eWxl
LCBjb25zdCBWZWN0b3I8TGF5b3V0UmVjdD4mIGZvY3VzUmluZ1JlY3RzKSBjb25zdAogewogICAg
IEFTU0VSVChzdHlsZS5vdXRsaW5lU3R5bGVJc0F1dG8oKSA9PSBPdXRsaW5lSXNBdXRvOjpPbik7
CiAgICAgZmxvYXQgb3V0bGluZU9mZnNldCA9IHN0eWxlLm91dGxpbmVPZmZzZXQoKTsKQEAgLTE4
MjksNzcgKzE4MjksMTMgQEAgdm9pZCBSZW5kZXJFbGVtZW50OjpwYWludEZvY3VzUmluZyhQYWlu
dEluZm8mIHBhaW50SW5mbywgY29uc3QgUmVuZGVyU3R5bGUmIHN0eWwKIAogdm9pZCBSZW5kZXJF
bGVtZW50OjpwYWludE91dGxpbmUoUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IExheW91dFJl
Y3QmIHBhaW50UmVjdCkKIHsKLSAgICBHcmFwaGljc0NvbnRleHQmIGdyYXBoaWNzQ29udGV4dCA9
IHBhaW50SW5mby5jb250ZXh0KCk7Ci0gICAgaWYgKGdyYXBoaWNzQ29udGV4dC5wYWludGluZ0Rp
c2FibGVkKCkpCisgICAgaWYgKHBhaW50SW5mby5jb250ZXh0KCkucGFpbnRpbmdEaXNhYmxlZCgp
KQogICAgICAgICByZXR1cm47CiAKICAgICBpZiAoIWhhc091dGxpbmUoKSkKICAgICAgICAgcmV0
dXJuOwogCi0gICAgYXV0byYgc3R5bGVUb1VzZSA9IHN0eWxlKCk7Ci0gICAgZmxvYXQgb3V0bGlu
ZVdpZHRoID0gZmxvb3JUb0RldmljZVBpeGVsKHN0eWxlVG9Vc2Uub3V0bGluZVdpZHRoKCksIGRv
Y3VtZW50KCkuZGV2aWNlU2NhbGVGYWN0b3IoKSk7Ci0gICAgZmxvYXQgb3V0bGluZU9mZnNldCA9
IGZsb29yVG9EZXZpY2VQaXhlbChzdHlsZVRvVXNlLm91dGxpbmVPZmZzZXQoKSwgZG9jdW1lbnQo
KS5kZXZpY2VTY2FsZUZhY3RvcigpKTsKLQotICAgIC8vIE9ubHkgcGFpbnQgdGhlIGZvY3VzIHJp
bmcgYnkgaGFuZCBpZiB0aGUgdGhlbWUgaXNuJ3QgYWJsZSB0byBkcmF3IGl0LgotICAgIGlmIChz
dHlsZVRvVXNlLm91dGxpbmVTdHlsZUlzQXV0bygpID09IE91dGxpbmVJc0F1dG86Ok9uICYmICF0
aGVtZSgpLnN1cHBvcnRzRm9jdXNSaW5nKHN0eWxlVG9Vc2UpKSB7Ci0gICAgICAgIFZlY3RvcjxM
YXlvdXRSZWN0PiBmb2N1c1JpbmdSZWN0czsKLSAgICAgICAgTGF5b3V0UmVjdCBwYWludFJlY3RU
b1VzZSB7IHBhaW50UmVjdCB9OwotICAgICAgICBpZiAoaXM8UmVuZGVyQm94PigqdGhpcykpCi0g
ICAgICAgICAgICBwYWludFJlY3RUb1VzZSA9IHRoZW1lKCkuYWRqdXN0ZWRQYWludFJlY3QoZG93
bmNhc3Q8UmVuZGVyQm94PigqdGhpcyksIHBhaW50UmVjdFRvVXNlKTsKLSAgICAgICAgYWRkRm9j
dXNSaW5nUmVjdHMoZm9jdXNSaW5nUmVjdHMsIHBhaW50UmVjdFRvVXNlLmxvY2F0aW9uKCksIHBh
aW50SW5mby5wYWludENvbnRhaW5lcik7Ci0gICAgICAgIHBhaW50Rm9jdXNSaW5nKHBhaW50SW5m
bywgc3R5bGVUb1VzZSwgZm9jdXNSaW5nUmVjdHMpOwotICAgIH0KLQotICAgIGlmIChoYXNPdXRs
aW5lQW5ub3RhdGlvbigpICYmIHN0eWxlVG9Vc2Uub3V0bGluZVN0eWxlSXNBdXRvKCkgPT0gT3V0
bGluZUlzQXV0bzo6T2ZmICYmICF0aGVtZSgpLnN1cHBvcnRzRm9jdXNSaW5nKHN0eWxlVG9Vc2Up
KQotICAgICAgICBhZGRQREZVUkxSZWN0KHBhaW50SW5mbywgcGFpbnRSZWN0LmxvY2F0aW9uKCkp
OwotCi0gICAgaWYgKHN0eWxlVG9Vc2Uub3V0bGluZVN0eWxlSXNBdXRvKCkgPT0gT3V0bGluZUlz
QXV0bzo6T24gfHwgc3R5bGVUb1VzZS5vdXRsaW5lU3R5bGUoKSA9PSBCb3JkZXJTdHlsZTo6Tm9u
ZSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgRmxvYXRSZWN0IG91dGVyID0gcGFpbnRSZWN0Owot
ICAgIG91dGVyLmluZmxhdGUob3V0bGluZU9mZnNldCArIG91dGxpbmVXaWR0aCk7Ci0gICAgRmxv
YXRSZWN0IGlubmVyID0gb3V0ZXI7Ci0gICAgaW5uZXIuaW5mbGF0ZSgtb3V0bGluZVdpZHRoKTsK
LQotICAgIC8vIEZJWE1FOiBUaGlzIHByZXZlbnRzIG91dGxpbmVzIGZyb20gcGFpbnRpbmcgaW5z
aWRlIHRoZSBvYmplY3QuIFNlZSBidWcgMTIwNDIKLSAgICBpZiAob3V0ZXIuaXNFbXB0eSgpKQot
ICAgICAgICByZXR1cm47Ci0KLSAgICBhdXRvJiBkb2N1bWVudCA9IHRoaXMtPmRvY3VtZW50KCk7
Ci0gICAgQm9yZGVyU3R5bGUgb3V0bGluZVN0eWxlID0gc3R5bGVUb1VzZS5vdXRsaW5lU3R5bGUo
KTsKLSAgICBDb2xvciBvdXRsaW5lQ29sb3IgPSBzdHlsZVRvVXNlLnZpc2l0ZWREZXBlbmRlbnRD
b2xvcldpdGhDb2xvckZpbHRlcihDU1NQcm9wZXJ0eU91dGxpbmVDb2xvcik7Ci0KLSAgICBib29s
IHVzZVRyYW5zcGFyZW5jeUxheWVyID0gIW91dGxpbmVDb2xvci5pc09wYXF1ZSgpOwotICAgIGlm
ICh1c2VUcmFuc3BhcmVuY3lMYXllcikgewotICAgICAgICBpZiAob3V0bGluZVN0eWxlID09IEJv
cmRlclN0eWxlOjpTb2xpZCkgewotICAgICAgICAgICAgUGF0aCBwYXRoOwotICAgICAgICAgICAg
cGF0aC5hZGRSZWN0KG91dGVyKTsKLSAgICAgICAgICAgIHBhdGguYWRkUmVjdChpbm5lcik7Ci0g
ICAgICAgICAgICBncmFwaGljc0NvbnRleHQuc2V0RmlsbFJ1bGUoV2luZFJ1bGU6OkV2ZW5PZGQp
OwotICAgICAgICAgICAgZ3JhcGhpY3NDb250ZXh0LnNldEZpbGxDb2xvcihvdXRsaW5lQ29sb3Ip
OwotICAgICAgICAgICAgZ3JhcGhpY3NDb250ZXh0LmZpbGxQYXRoKHBhdGgpOwotICAgICAgICAg
ICAgcmV0dXJuOwotICAgICAgICB9Ci0gICAgICAgIGdyYXBoaWNzQ29udGV4dC5iZWdpblRyYW5z
cGFyZW5jeUxheWVyKG91dGxpbmVDb2xvci5hbHBoYUFzRmxvYXQoKSk7Ci0gICAgICAgIG91dGxp
bmVDb2xvciA9IG91dGxpbmVDb2xvci5vcGFxdWVDb2xvcigpOwotICAgIH0KLQotICAgIGZsb2F0
IGxlZnRPdXRlciA9IG91dGVyLngoKTsKLSAgICBmbG9hdCBsZWZ0SW5uZXIgPSBpbm5lci54KCk7
Ci0gICAgZmxvYXQgcmlnaHRPdXRlciA9IG91dGVyLm1heFgoKTsKLSAgICBmbG9hdCByaWdodElu
bmVyID0gc3RkOjptaW4oaW5uZXIubWF4WCgpLCByaWdodE91dGVyKTsKLSAgICBmbG9hdCB0b3BP
dXRlciA9IG91dGVyLnkoKTsKLSAgICBmbG9hdCB0b3BJbm5lciA9IGlubmVyLnkoKTsKLSAgICBm
bG9hdCBib3R0b21PdXRlciA9IG91dGVyLm1heFkoKTsKLSAgICBmbG9hdCBib3R0b21Jbm5lciA9
IHN0ZDo6bWluKGlubmVyLm1heFkoKSwgYm90dG9tT3V0ZXIpOwotCi0gICAgQm9yZGVyUGFpbnRl
cjo6ZHJhd0xpbmVGb3JCb3hTaWRlKGdyYXBoaWNzQ29udGV4dCwgZG9jdW1lbnQsIEZsb2F0UmVj
dChGbG9hdFBvaW50KGxlZnRPdXRlciwgdG9wT3V0ZXIpLCBGbG9hdFBvaW50KGxlZnRJbm5lciwg
Ym90dG9tT3V0ZXIpKSwgQm94U2lkZTo6TGVmdCwgb3V0bGluZUNvbG9yLCBvdXRsaW5lU3R5bGUs
IG91dGxpbmVXaWR0aCwgb3V0bGluZVdpZHRoKTsKLSAgICBCb3JkZXJQYWludGVyOjpkcmF3TGlu
ZUZvckJveFNpZGUoZ3JhcGhpY3NDb250ZXh0LCBkb2N1bWVudCwgRmxvYXRSZWN0KEZsb2F0UG9p
bnQobGVmdE91dGVyLCB0b3BPdXRlciksIEZsb2F0UG9pbnQocmlnaHRPdXRlciwgdG9wSW5uZXIp
KSwgQm94U2lkZTo6VG9wLCBvdXRsaW5lQ29sb3IsIG91dGxpbmVTdHlsZSwgb3V0bGluZVdpZHRo
LCBvdXRsaW5lV2lkdGgpOwotICAgIEJvcmRlclBhaW50ZXI6OmRyYXdMaW5lRm9yQm94U2lkZShn
cmFwaGljc0NvbnRleHQsIGRvY3VtZW50LCBGbG9hdFJlY3QoRmxvYXRQb2ludChyaWdodElubmVy
LCB0b3BPdXRlciksIEZsb2F0UG9pbnQocmlnaHRPdXRlciwgYm90dG9tT3V0ZXIpKSwgQm94U2lk
ZTo6UmlnaHQsIG91dGxpbmVDb2xvciwgb3V0bGluZVN0eWxlLCBvdXRsaW5lV2lkdGgsIG91dGxp
bmVXaWR0aCk7Ci0gICAgQm9yZGVyUGFpbnRlcjo6ZHJhd0xpbmVGb3JCb3hTaWRlKGdyYXBoaWNz
Q29udGV4dCwgZG9jdW1lbnQsIEZsb2F0UmVjdChGbG9hdFBvaW50KGxlZnRPdXRlciwgYm90dG9t
SW5uZXIpLCBGbG9hdFBvaW50KHJpZ2h0T3V0ZXIsIGJvdHRvbU91dGVyKSksIEJveFNpZGU6OkJv
dHRvbSwgb3V0bGluZUNvbG9yLCBvdXRsaW5lU3R5bGUsIG91dGxpbmVXaWR0aCwgb3V0bGluZVdp
ZHRoKTsKLQotICAgIGlmICh1c2VUcmFuc3BhcmVuY3lMYXllcikKLSAgICAgICAgZ3JhcGhpY3ND
b250ZXh0LmVuZFRyYW5zcGFyZW5jeUxheWVyKCk7CisgICAgQm9yZGVyUGFpbnRlciB7ICp0aGlz
LCBwYWludEluZm8gfS5wYWludE91dGxpbmUocGFpbnRSZWN0KTsKIH0KIAogdm9pZCBSZW5kZXJF
bGVtZW50Ojppc3N1ZVJlcGFpbnRGb3JPdXRsaW5lQXV0byhmbG9hdCBvdXRsaW5lU2l6ZSkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJFbGVtZW50LmggYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRWxlbWVudC5oCmluZGV4IDRhNjI4ZGFkZDIyZC4u
NmVhNzc3MjJmM2FmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
RWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJFbGVtZW50LmgK
QEAgLTMwMyw2ICszMDMsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBpc0ZsZXhJdGVtSW5jbHVkaW5n
RGVwcmVjYXRlZCgpIGNvbnN0IHsgcmV0dXJuICFpc0lubGluZSgpICYmICFpc0Zsb2F0aW5nT3JP
dXRPZkZsb3dQb3NpdGlvbmVkKCkgJiYgcGFyZW50KCkgJiYgcGFyZW50KCktPmlzRmxleGlibGVC
b3hJbmNsdWRpbmdEZXByZWNhdGVkKCk7IH0KIAogICAgIHZpcnR1YWwgTGF5b3V0UmVjdCBwYWlu
dFJlY3RUb0NsaXBPdXRGcm9tQm9yZGVyKGNvbnN0IExheW91dFJlY3QmKSB7IHJldHVybiB7IH07
IH0KKyAgICB2b2lkIHBhaW50Rm9jdXNSaW5nKGNvbnN0IFBhaW50SW5mbyYsIGNvbnN0IFJlbmRl
clN0eWxlJiwgY29uc3QgVmVjdG9yPExheW91dFJlY3Q+JiBmb2N1c1JpbmdSZWN0cykgY29uc3Q7
CiAKIHByb3RlY3RlZDoKICAgICBlbnVtIEJhc2VUeXBlRmxhZyB7CkBAIC0zNDgsNyArMzQ5LDYg
QEAgcHJvdGVjdGVkOgogICAgIHVuc2lnbmVkIHJlbmRlckJsb2NrRmxvd0xpbmVMYXlvdXRQYXRo
KCkgY29uc3QgeyByZXR1cm4gbV9yZW5kZXJCbG9ja0Zsb3dMaW5lTGF5b3V0UGF0aDsgfQogICAg
IGJvb2wgcmVuZGVyQmxvY2tGbG93SGFzTWFya3VwVHJ1bmNhdGlvbigpIGNvbnN0IHsgcmV0dXJu
IG1fcmVuZGVyQmxvY2tGbG93SGFzTWFya3VwVHJ1bmNhdGlvbjsgfQogCi0gICAgdm9pZCBwYWlu
dEZvY3VzUmluZyhQYWludEluZm8mLCBjb25zdCBSZW5kZXJTdHlsZSYsIGNvbnN0IFZlY3RvcjxM
YXlvdXRSZWN0PiYgZm9jdXNSaW5nUmVjdHMpOwogICAgIHZvaWQgcGFpbnRPdXRsaW5lKFBhaW50
SW5mbyYsIGNvbnN0IExheW91dFJlY3QmKTsKICAgICB2b2lkIHVwZGF0ZU91dGxpbmVBdXRvQW5j
ZXN0b3IoYm9vbCBoYXNPdXRsaW5lQXV0byk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJJbmxpbmUuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlcklubGluZS5jcHAKaW5kZXggYzgyMWY3NGU3YTk3Li5kMWNhMmEyMDExNDAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbmxpbmUuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbmxpbmUuY3BwCkBAIC05MDgsNyArOTA4LDcgQEAg
dm9pZCBSZW5kZXJJbmxpbmU6OmltYWdlQ2hhbmdlZChXcmFwcGVkSW1hZ2VQdHIsIGNvbnN0IElu
dFJlY3QqKQogICAgIHJlcGFpbnQoKTsKIH0KIAotdm9pZCBSZW5kZXJJbmxpbmU6OmFkZEZvY3Vz
UmluZ1JlY3RzKFZlY3RvcjxMYXlvdXRSZWN0PiYgcmVjdHMsIGNvbnN0IExheW91dFBvaW50JiBh
ZGRpdGlvbmFsT2Zmc2V0LCBjb25zdCBSZW5kZXJMYXllck1vZGVsT2JqZWN0KiBwYWludENvbnRh
aW5lcikKK3ZvaWQgUmVuZGVySW5saW5lOjphZGRGb2N1c1JpbmdSZWN0cyhWZWN0b3I8TGF5b3V0
UmVjdD4mIHJlY3RzLCBjb25zdCBMYXlvdXRQb2ludCYgYWRkaXRpb25hbE9mZnNldCwgY29uc3Qg
UmVuZGVyTGF5ZXJNb2RlbE9iamVjdCogcGFpbnRDb250YWluZXIpIGNvbnN0CiB7CiAgICAgQWJz
b2x1dGVSZWN0c0dlbmVyYXRvckNvbnRleHQgY29udGV4dChyZWN0cywgYWRkaXRpb25hbE9mZnNl
dCk7CiAgICAgZ2VuZXJhdGVMaW5lQm94UmVjdHMoY29udGV4dCk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW5saW5lLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVySW5saW5lLmgKaW5kZXggNzEyMDZiMTVlZWFkLi45MjMxZTNmNTM2ZjMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbmxpbmUuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW5saW5lLmgKQEAgLTc3LDcgKzc3LDcgQEAg
cHVibGljOgogICAgIAogICAgIExheW91dFNpemUgb2Zmc2V0Rm9ySW5GbG93UG9zaXRpb25lZElu
bGluZShjb25zdCBSZW5kZXJCb3gqIGNoaWxkKSBjb25zdDsKIAotICAgIHZvaWQgYWRkRm9jdXNS
aW5nUmVjdHMoVmVjdG9yPExheW91dFJlY3Q+JiwgY29uc3QgTGF5b3V0UG9pbnQmIGFkZGl0aW9u
YWxPZmZzZXQsIGNvbnN0IFJlbmRlckxheWVyTW9kZWxPYmplY3QqIHBhaW50Q29udGFpbmVyID0g
MCkgZmluYWw7CisgICAgdm9pZCBhZGRGb2N1c1JpbmdSZWN0cyhWZWN0b3I8TGF5b3V0UmVjdD4m
LCBjb25zdCBMYXlvdXRQb2ludCYgYWRkaXRpb25hbE9mZnNldCwgY29uc3QgUmVuZGVyTGF5ZXJN
b2RlbE9iamVjdCogcGFpbnRDb250YWluZXIgPSAwKSBjb25zdCBmaW5hbDsKICAgICB2b2lkIHBh
aW50T3V0bGluZShQYWludEluZm8mLCBjb25zdCBMYXlvdXRQb2ludCYpOwogCiAgICAgYm9vbCBt
YXlBZmZlY3RMYXlvdXQoKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJMaXN0Qm94LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJM
aXN0Qm94LmNwcAppbmRleCAwNTI1YThkNWZlODkuLmNkZGM0NzhjNDEyMyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpc3RCb3guY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaXN0Qm94LmNwcApAQCAtMzc0LDcgKzM3NCw3IEBAIHZv
aWQgUmVuZGVyTGlzdEJveDo6cGFpbnRPYmplY3QoUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0
IExheW91dFBvaW50JiBwYWludE9mCiAgICAgfQogfQogCi12b2lkIFJlbmRlckxpc3RCb3g6OmFk
ZEZvY3VzUmluZ1JlY3RzKFZlY3RvcjxMYXlvdXRSZWN0PiYgcmVjdHMsIGNvbnN0IExheW91dFBv
aW50JiBhZGRpdGlvbmFsT2Zmc2V0LCBjb25zdCBSZW5kZXJMYXllck1vZGVsT2JqZWN0KiBwYWlu
dENvbnRhaW5lcikKK3ZvaWQgUmVuZGVyTGlzdEJveDo6YWRkRm9jdXNSaW5nUmVjdHMoVmVjdG9y
PExheW91dFJlY3Q+JiByZWN0cywgY29uc3QgTGF5b3V0UG9pbnQmIGFkZGl0aW9uYWxPZmZzZXQs
IGNvbnN0IFJlbmRlckxheWVyTW9kZWxPYmplY3QqIHBhaW50Q29udGFpbmVyKSBjb25zdAogewog
ICAgIGlmICghc2VsZWN0RWxlbWVudCgpLmFsbG93c05vbkNvbnRpZ3VvdXNTZWxlY3Rpb24oKSkK
ICAgICAgICAgcmV0dXJuIFJlbmRlckJsb2NrRmxvdzo6YWRkRm9jdXNSaW5nUmVjdHMocmVjdHMs
IGFkZGl0aW9uYWxPZmZzZXQsIHBhaW50Q29udGFpbmVyKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaXN0Qm94LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyTGlzdEJveC5oCmluZGV4IDkzZDAyZjAxMDg0OC4uODIyYWY5ZDFmMDQ4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGlzdEJveC5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaXN0Qm94LmgKQEAgLTk4LDcgKzk4LDcgQEAg
cHJpdmF0ZToKIAogICAgIHZvaWQgbGF5b3V0KCkgb3ZlcnJpZGU7CiAKLSAgICB2b2lkIGFkZEZv
Y3VzUmluZ1JlY3RzKFZlY3RvcjxMYXlvdXRSZWN0PiYsIGNvbnN0IExheW91dFBvaW50JiBhZGRp
dGlvbmFsT2Zmc2V0LCBjb25zdCBSZW5kZXJMYXllck1vZGVsT2JqZWN0KiBwYWludENvbnRhaW5l
ciA9IG51bGxwdHIpIG92ZXJyaWRlOworICAgIHZvaWQgYWRkRm9jdXNSaW5nUmVjdHMoVmVjdG9y
PExheW91dFJlY3Q+JiwgY29uc3QgTGF5b3V0UG9pbnQmIGFkZGl0aW9uYWxPZmZzZXQsIGNvbnN0
IFJlbmRlckxheWVyTW9kZWxPYmplY3QqIHBhaW50Q29udGFpbmVyID0gbnVsbHB0cikgY29uc3Qg
b3ZlcnJpZGU7CiAKICAgICBib29sIGNhbkJlUHJvZ3JhbWF0aWNhbGx5U2Nyb2xsZWQoKSBjb25z
dCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9CiAgICAgdm9pZCBhdXRvc2Nyb2xsKGNvbnN0IElu
dFBvaW50Jikgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyT2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3Qu
Y3BwCmluZGV4IDVkMDIwYWI3NTEyNS4uOWJkNzcxOWJjZTUyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmNwcApAQCAtNzM3LDcgKzczNyw3IEBAIFJlbmRlckJsb2Nr
KiBSZW5kZXJPYmplY3Q6OmNvbnRhaW5pbmdCbG9jaygpIGNvbnN0CiAgICAgcmV0dXJuIGNvbnRh
aW5pbmdCbG9ja0ZvclJlbmRlcmVyKGRvd25jYXN0PFJlbmRlckVsZW1lbnQ+KCp0aGlzKSk7CiB9
CiAKLXZvaWQgUmVuZGVyT2JqZWN0OjphZGRQREZVUkxSZWN0KFBhaW50SW5mbyYgcGFpbnRJbmZv
LCBjb25zdCBMYXlvdXRQb2ludCYgcGFpbnRPZmZzZXQpCit2b2lkIFJlbmRlck9iamVjdDo6YWRk
UERGVVJMUmVjdChjb25zdCBQYWludEluZm8mIHBhaW50SW5mbywgY29uc3QgTGF5b3V0UG9pbnQm
IHBhaW50T2Zmc2V0KSBjb25zdAogewogICAgIFZlY3RvcjxMYXlvdXRSZWN0PiBmb2N1c1JpbmdS
ZWN0czsKICAgICBhZGRGb2N1c1JpbmdSZWN0cyhmb2N1c1JpbmdSZWN0cywgcGFpbnRPZmZzZXQs
IHBhaW50SW5mby5wYWludENvbnRhaW5lcik7CkBAIC03NjMsNyArNzYzLDYgQEAgdm9pZCBSZW5k
ZXJPYmplY3Q6OmFkZFBERlVSTFJlY3QoUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IExheW91
dFBvaW50JiBwYWludE8KICAgICB9CiAKICAgICBwYWludEluZm8uY29udGV4dCgpLnNldFVSTEZv
clJlY3QoZWxlbWVudC5kb2N1bWVudCgpLmNvbXBsZXRlVVJMKGhyZWYpLCB1cmxSZWN0KTsKLQog
fQogCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJPYmplY3QuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJPYmplY3QuaAppbmRleCAxOGJjNjgzNzRlODUuLjA3YmFiNGIwNWNmMiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3QuaApAQCAtNzc0LDcgKzc3NCw3IEBAIHB1YmxpYzoK
ICAgICBib29sIHNob3VsZFVzZVRyYW5zZm9ybUZyb21Db250YWluZXIoY29uc3QgUmVuZGVyT2Jq
ZWN0KiBjb250YWluZXIpIGNvbnN0OwogICAgIHZvaWQgZ2V0VHJhbnNmb3JtRnJvbUNvbnRhaW5l
cihjb25zdCBSZW5kZXJPYmplY3QqIGNvbnRhaW5lciwgY29uc3QgTGF5b3V0U2l6ZSYgb2Zmc2V0
SW5Db250YWluZXIsIFRyYW5zZm9ybWF0aW9uTWF0cml4JikgY29uc3Q7CiAgICAgCi0gICAgdmly
dHVhbCB2b2lkIGFkZEZvY3VzUmluZ1JlY3RzKFZlY3RvcjxMYXlvdXRSZWN0PiYsIGNvbnN0IExh
eW91dFBvaW50JiAvKiBhZGRpdGlvbmFsT2Zmc2V0ICovLCBjb25zdCBSZW5kZXJMYXllck1vZGVs
T2JqZWN0KiAvKiBwYWludENvbnRhaW5lciAqLyA9IG51bGxwdHIpIHsgfTsKKyAgICB2aXJ0dWFs
IHZvaWQgYWRkRm9jdXNSaW5nUmVjdHMoVmVjdG9yPExheW91dFJlY3Q+JiwgY29uc3QgTGF5b3V0
UG9pbnQmIC8qIGFkZGl0aW9uYWxPZmZzZXQgKi8sIGNvbnN0IFJlbmRlckxheWVyTW9kZWxPYmpl
Y3QqIC8qIHBhaW50Q29udGFpbmVyICovID0gbnVsbHB0cikgY29uc3QgeyB9OwogCiAgICAgTGF5
b3V0UmVjdCBhYnNvbHV0ZU91dGxpbmVCb3VuZHMoKSBjb25zdCB7IHJldHVybiBvdXRsaW5lQm91
bmRzRm9yUmVwYWludChudWxscHRyKTsgfQogCkBAIC03ODksNiArNzg5LDggQEAgcHVibGljOgog
ICAgIHZpcnR1YWwgU3RyaW5nIGRlc2NyaXB0aW9uKCkgY29uc3Q7CiAgICAgdmlydHVhbCBTdHJp
bmcgZGVidWdEZXNjcmlwdGlvbigpIGNvbnN0OwogCisgICAgdm9pZCBhZGRQREZVUkxSZWN0KGNv
bnN0IFBhaW50SW5mbyYsIGNvbnN0IExheW91dFBvaW50JikgY29uc3Q7CisKIHByb3RlY3RlZDoK
ICAgICAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KICAgICAvLyBI
ZWxwZXIgZnVuY3Rpb25zLiBEYW5nZXJvdXMgdG8gdXNlIQpAQCAtNzk2LDcgKzc5OCw2IEBAIHBy
b3RlY3RlZDoKICAgICB2b2lkIHNldE5leHRTaWJsaW5nKFJlbmRlck9iamVjdCogbmV4dCkgeyBt
X25leHQgPSBuZXh0OyB9CiAgICAgdm9pZCBzZXRQYXJlbnQoUmVuZGVyRWxlbWVudCopOwogICAg
IC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwotICAgIHZvaWQgYWRk
UERGVVJMUmVjdChQYWludEluZm8mLCBjb25zdCBMYXlvdXRQb2ludCYpOwogICAgIE5vZGUmIG5v
ZGVGb3JOb25Bbm9ueW1vdXMoKSBjb25zdCB7IEFTU0VSVCghaXNBbm9ueW1vdXMoKSk7IHJldHVy
biBtX25vZGU7IH0KIAogICAgIHZvaWQgYWRqdXN0UmVjdEZvck91dGxpbmVBbmRTaGFkb3coTGF5
b3V0UmVjdCYpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlclRleHRDb250cm9sLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0
Q29udHJvbC5jcHAKaW5kZXggZmNkOTg0ZjRlYzQ2Li4zYWVkMGIwZmMxMGMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0Q29udHJvbC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHRDb250cm9sLmNwcApAQCAtMTg4LDcgKzE4
OCw3IEBAIHZvaWQgUmVuZGVyVGV4dENvbnRyb2w6OmNvbXB1dGVQcmVmZXJyZWRMb2dpY2FsV2lk
dGhzKCkKICAgICBzZXRQcmVmZXJyZWRMb2dpY2FsV2lkdGhzRGlydHkoZmFsc2UpOwogfQogCi12
b2lkIFJlbmRlclRleHRDb250cm9sOjphZGRGb2N1c1JpbmdSZWN0cyhWZWN0b3I8TGF5b3V0UmVj
dD4mIHJlY3RzLCBjb25zdCBMYXlvdXRQb2ludCYgYWRkaXRpb25hbE9mZnNldCwgY29uc3QgUmVu
ZGVyTGF5ZXJNb2RlbE9iamVjdCopCit2b2lkIFJlbmRlclRleHRDb250cm9sOjphZGRGb2N1c1Jp
bmdSZWN0cyhWZWN0b3I8TGF5b3V0UmVjdD4mIHJlY3RzLCBjb25zdCBMYXlvdXRQb2ludCYgYWRk
aXRpb25hbE9mZnNldCwgY29uc3QgUmVuZGVyTGF5ZXJNb2RlbE9iamVjdCopIGNvbnN0CiB7CiAg
ICAgaWYgKCFzaXplKCkuaXNFbXB0eSgpKQogICAgICAgICByZWN0cy5hcHBlbmQoTGF5b3V0UmVj
dChhZGRpdGlvbmFsT2Zmc2V0LCBzaXplKCkpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJUZXh0Q29udHJvbC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlclRleHRDb250cm9sLmgKaW5kZXggZmFjOTQwMjgyMDcwLi44NmY5YzhiMWJiNDEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0Q29udHJvbC5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0Q29udHJvbC5oCkBAIC03Nyw3
ICs3Nyw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCBhdm9pZHNGbG9hdHMoKSBjb25zdCBvdmVycmlk
ZSB7IHJldHVybiB0cnVlOyB9CiAgICAgYm9vbCBjYW5IYXZlR2VuZXJhdGVkQ2hpbGRyZW4oKSBj
b25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQogICAgIAotICAgIHZvaWQgYWRkRm9jdXNS
aW5nUmVjdHMoVmVjdG9yPExheW91dFJlY3Q+JiwgY29uc3QgTGF5b3V0UG9pbnQmIGFkZGl0aW9u
YWxPZmZzZXQsIGNvbnN0IFJlbmRlckxheWVyTW9kZWxPYmplY3QqIHBhaW50Q29udGFpbmVyID0g
MCkgb3ZlcnJpZGU7CisgICAgdm9pZCBhZGRGb2N1c1JpbmdSZWN0cyhWZWN0b3I8TGF5b3V0UmVj
dD4mLCBjb25zdCBMYXlvdXRQb2ludCYgYWRkaXRpb25hbE9mZnNldCwgY29uc3QgUmVuZGVyTGF5
ZXJNb2RlbE9iamVjdCogcGFpbnRDb250YWluZXIgPSAwKSBjb25zdCBvdmVycmlkZTsKIAogICAg
IGJvb2wgY2FuQmVQcm9ncmFtYXRpY2FsbHlTY3JvbGxlZCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0
dXJuIHRydWU7IH0KIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3Zn
L0xlZ2FjeVJlbmRlclNWR0NvbnRhaW5lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
c3ZnL0xlZ2FjeVJlbmRlclNWR0NvbnRhaW5lci5jcHAKaW5kZXggMDdmNTdiYjJmYTMxLi5mM2My
MWQxZTIxMjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvTGVnYWN5
UmVuZGVyU1ZHQ29udGFpbmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3Zn
L0xlZ2FjeVJlbmRlclNWR0NvbnRhaW5lci5jcHAKQEAgLTE0NSw3ICsxNDUsNyBAQCB2b2lkIExl
Z2FjeVJlbmRlclNWR0NvbnRhaW5lcjo6cGFpbnQoUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0
IExheW91dFBvaW50JikKIH0KIAogLy8gYWRkRm9jdXNSaW5nUmVjdHMgaXMgY2FsbGVkIGZyb20g
cGFpbnRPdXRsaW5lIGFuZCBuZWVkcyB0byBiZSBpbiB0aGUgc2FtZSBjb29yZGluYXRlcyBhcyB0
aGUgcGFpbnRPdWxpbmUgY2FsbAotdm9pZCBMZWdhY3lSZW5kZXJTVkdDb250YWluZXI6OmFkZEZv
Y3VzUmluZ1JlY3RzKFZlY3RvcjxMYXlvdXRSZWN0PiYgcmVjdHMsIGNvbnN0IExheW91dFBvaW50
JiwgY29uc3QgUmVuZGVyTGF5ZXJNb2RlbE9iamVjdCopCit2b2lkIExlZ2FjeVJlbmRlclNWR0Nv
bnRhaW5lcjo6YWRkRm9jdXNSaW5nUmVjdHMoVmVjdG9yPExheW91dFJlY3Q+JiByZWN0cywgY29u
c3QgTGF5b3V0UG9pbnQmLCBjb25zdCBSZW5kZXJMYXllck1vZGVsT2JqZWN0KikgY29uc3QKIHsK
ICAgICBMYXlvdXRSZWN0IHBhaW50UmVjdEluUGFyZW50ID0gTGF5b3V0UmVjdChsb2NhbFRvUGFy
ZW50VHJhbnNmb3JtKCkubWFwUmVjdChyZXBhaW50UmVjdEluTG9jYWxDb29yZGluYXRlcygpKSk7
CiAgICAgaWYgKCFwYWludFJlY3RJblBhcmVudC5pc0VtcHR5KCkpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL0xlZ2FjeVJlbmRlclNWR0NvbnRhaW5lci5oIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9MZWdhY3lSZW5kZXJTVkdDb250YWluZXIuaAppbmRl
eCBjNjM3MGYyZTBhZmIuLjlhZWFiOTg1ZjAwYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL3N2Zy9MZWdhY3lSZW5kZXJTVkdDb250YWluZXIuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvc3ZnL0xlZ2FjeVJlbmRlclNWR0NvbnRhaW5lci5oCkBAIC00OCw3ICs0
OCw3IEBAIHByb3RlY3RlZDoKIAogICAgIHZvaWQgbGF5b3V0KCkgb3ZlcnJpZGU7CiAKLSAgICB2
b2lkIGFkZEZvY3VzUmluZ1JlY3RzKFZlY3RvcjxMYXlvdXRSZWN0PiYsIGNvbnN0IExheW91dFBv
aW50JiBhZGRpdGlvbmFsT2Zmc2V0LCBjb25zdCBSZW5kZXJMYXllck1vZGVsT2JqZWN0KiBwYWlu
dENvbnRhaW5lciA9IDApIGZpbmFsOworICAgIHZvaWQgYWRkRm9jdXNSaW5nUmVjdHMoVmVjdG9y
PExheW91dFJlY3Q+JiwgY29uc3QgTGF5b3V0UG9pbnQmIGFkZGl0aW9uYWxPZmZzZXQsIGNvbnN0
IFJlbmRlckxheWVyTW9kZWxPYmplY3QqIHBhaW50Q29udGFpbmVyID0gMCkgY29uc3QgZmluYWw7
CiAKICAgICBGbG9hdFJlY3Qgb2JqZWN0Qm91bmRpbmdCb3goKSBjb25zdCBmaW5hbCB7IHJldHVy
biBtX29iamVjdEJvdW5kaW5nQm94OyB9CiAgICAgRmxvYXRSZWN0IHN0cm9rZUJvdW5kaW5nQm94
KCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9zdHJva2VCb3VuZGluZ0JveDsgfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9MZWdhY3lSZW5kZXJTVkdJbWFnZS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL0xlZ2FjeVJlbmRlclNWR0ltYWdlLmNwcApp
bmRleCA3NTE2OTRhMDdmMWMuLmM2ZGIzZTc4MDRmMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL3N2Zy9MZWdhY3lSZW5kZXJTVkdJbWFnZS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL3N2Zy9MZWdhY3lSZW5kZXJTVkdJbWFnZS5jcHAKQEAgLTI1OSw3ICsy
NTksNyBAQCB2b2lkIExlZ2FjeVJlbmRlclNWR0ltYWdlOjppbWFnZUNoYW5nZWQoV3JhcHBlZElt
YWdlUHRyLCBjb25zdCBJbnRSZWN0KikKICAgICByZXBhaW50KCk7CiB9CiAKLXZvaWQgTGVnYWN5
UmVuZGVyU1ZHSW1hZ2U6OmFkZEZvY3VzUmluZ1JlY3RzKFZlY3RvcjxMYXlvdXRSZWN0PiYgcmVj
dHMsIGNvbnN0IExheW91dFBvaW50JiwgY29uc3QgUmVuZGVyTGF5ZXJNb2RlbE9iamVjdCopCit2
b2lkIExlZ2FjeVJlbmRlclNWR0ltYWdlOjphZGRGb2N1c1JpbmdSZWN0cyhWZWN0b3I8TGF5b3V0
UmVjdD4mIHJlY3RzLCBjb25zdCBMYXlvdXRQb2ludCYsIGNvbnN0IFJlbmRlckxheWVyTW9kZWxP
YmplY3QqKSBjb25zdAogewogICAgIC8vIHRoaXMgaXMgY2FsbGVkIGZyb20gcGFpbnQoKSBhZnRl
ciB0aGUgbG9jYWxUcmFuc2Zvcm0gaGFzIGFscmVhZHkgYmVlbiBhcHBsaWVkCiAgICAgTGF5b3V0
UmVjdCBjb250ZW50UmVjdCA9IExheW91dFJlY3QocmVwYWludFJlY3RJbkxvY2FsQ29vcmRpbmF0
ZXMoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL0xlZ2FjeVJl
bmRlclNWR0ltYWdlLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL0xlZ2FjeVJlbmRl
clNWR0ltYWdlLmgKaW5kZXggN2RiMzk3MjZmNDI1Li4xZTNkYjUwM2M5MTYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvTGVnYWN5UmVuZGVyU1ZHSW1hZ2UuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL0xlZ2FjeVJlbmRlclNWR0ltYWdlLmgKQEAg
LTY3LDcgKzY3LDcgQEAgcHJpdmF0ZToKICAgICBGbG9hdFJlY3Qgc3Ryb2tlQm91bmRpbmdCb3go
KSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX29iamVjdEJvdW5kaW5nQm94OyB9CiAgICAgRmxv
YXRSZWN0IHJlcGFpbnRSZWN0SW5Mb2NhbENvb3JkaW5hdGVzKCkgY29uc3Qgb3ZlcnJpZGUgeyBy
ZXR1cm4gbV9yZXBhaW50Qm91bmRpbmdCb3g7IH0KIAotICAgIHZvaWQgYWRkRm9jdXNSaW5nUmVj
dHMoVmVjdG9yPExheW91dFJlY3Q+JiwgY29uc3QgTGF5b3V0UG9pbnQmIGFkZGl0aW9uYWxPZmZz
ZXQsIGNvbnN0IFJlbmRlckxheWVyTW9kZWxPYmplY3QqIHBhaW50Q29udGFpbmVyID0gMCkgb3Zl
cnJpZGU7CisgICAgdm9pZCBhZGRGb2N1c1JpbmdSZWN0cyhWZWN0b3I8TGF5b3V0UmVjdD4mLCBj
b25zdCBMYXlvdXRQb2ludCYgYWRkaXRpb25hbE9mZnNldCwgY29uc3QgUmVuZGVyTGF5ZXJNb2Rl
bE9iamVjdCogcGFpbnRDb250YWluZXIgPSAwKSBjb25zdCBvdmVycmlkZTsKIAogICAgIHZvaWQg
aW1hZ2VDaGFuZ2VkKFdyYXBwZWRJbWFnZVB0ciwgY29uc3QgSW50UmVjdCogPSBudWxscHRyKSBv
dmVycmlkZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9MZWdh
Y3lSZW5kZXJTVkdTaGFwZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL0xlZ2Fj
eVJlbmRlclNWR1NoYXBlLmNwcAppbmRleCA5Mjk1YzFiZmE4NGMuLmMxZDliMmFhMjM5ZSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9MZWdhY3lSZW5kZXJTVkdTaGFw
ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9MZWdhY3lSZW5kZXJTVkdT
aGFwZS5jcHAKQEAgLTMxMSw3ICszMTEsNyBAQCB2b2lkIExlZ2FjeVJlbmRlclNWR1NoYXBlOjpw
YWludChQYWludEluZm8mIHBhaW50SW5mbywgY29uc3QgTGF5b3V0UG9pbnQmKQogCiAvLyBUaGlz
IG1ldGhvZCBpcyBjYWxsZWQgZnJvbSBpbnNpZGUgcGFpbnRPdXRsaW5lKCkgc2luY2Ugd2UgY2Fs
bCBwYWludE91dGxpbmUoKQogLy8gd2hpbGUgdHJhbnNmb3JtZWQgdG8gb3VyIGNvb3JkIHN5c3Rl
bSwgcmV0dXJuIGxvY2FsIGNvb3Jkcwotdm9pZCBMZWdhY3lSZW5kZXJTVkdTaGFwZTo6YWRkRm9j
dXNSaW5nUmVjdHMoVmVjdG9yPExheW91dFJlY3Q+JiByZWN0cywgY29uc3QgTGF5b3V0UG9pbnQm
LCBjb25zdCBSZW5kZXJMYXllck1vZGVsT2JqZWN0KikKK3ZvaWQgTGVnYWN5UmVuZGVyU1ZHU2hh
cGU6OmFkZEZvY3VzUmluZ1JlY3RzKFZlY3RvcjxMYXlvdXRSZWN0PiYgcmVjdHMsIGNvbnN0IExh
eW91dFBvaW50JiwgY29uc3QgUmVuZGVyTGF5ZXJNb2RlbE9iamVjdCopIGNvbnN0CiB7CiAgICAg
TGF5b3V0UmVjdCByZWN0ID0gTGF5b3V0UmVjdChyZXBhaW50UmVjdEluTG9jYWxDb29yZGluYXRl
cygpKTsKICAgICBpZiAoIXJlY3QuaXNFbXB0eSgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL3N2Zy9MZWdhY3lSZW5kZXJTVkdTaGFwZS5oIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL3N2Zy9MZWdhY3lSZW5kZXJTVkdTaGFwZS5oCmluZGV4IDJiNmQ1NWJlYzkxYi4u
MjFjN2FiNDdkMDBhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL0xl
Z2FjeVJlbmRlclNWR1NoYXBlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9M
ZWdhY3lSZW5kZXJTVkdTaGFwZS5oCkBAIC0xMDUsNyArMTA1LDcgQEAgcHJpdmF0ZToKIAogICAg
IHZvaWQgbGF5b3V0KCkgZmluYWw7CiAgICAgdm9pZCBwYWludChQYWludEluZm8mLCBjb25zdCBM
YXlvdXRQb2ludCYpIGZpbmFsOwotICAgIHZvaWQgYWRkRm9jdXNSaW5nUmVjdHMoVmVjdG9yPExh
eW91dFJlY3Q+JiwgY29uc3QgTGF5b3V0UG9pbnQmIGFkZGl0aW9uYWxPZmZzZXQsIGNvbnN0IFJl
bmRlckxheWVyTW9kZWxPYmplY3QqIHBhaW50Q29udGFpbmVyID0gMCkgZmluYWw7CisgICAgdm9p
ZCBhZGRGb2N1c1JpbmdSZWN0cyhWZWN0b3I8TGF5b3V0UmVjdD4mLCBjb25zdCBMYXlvdXRQb2lu
dCYgYWRkaXRpb25hbE9mZnNldCwgY29uc3QgUmVuZGVyTGF5ZXJNb2RlbE9iamVjdCogcGFpbnRD
b250YWluZXIgPSAwKSBjb25zdCBmaW5hbDsKIAogICAgIGJvb2wgbm9kZUF0RmxvYXRQb2ludChj
b25zdCBIaXRUZXN0UmVxdWVzdCYsIEhpdFRlc3RSZXN1bHQmLCBjb25zdCBGbG9hdFBvaW50JiBw
b2ludEluUGFyZW50LCBIaXRUZXN0QWN0aW9uKSBmaW5hbDsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdIaWRkZW5Db250YWluZXIuaCBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHSGlkZGVuQ29udGFpbmVyLmgKaW5kZXgg
ZTdlZTlmMDhlMWZiLi45ZGZjYzY5MzNmM2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9zdmcvUmVuZGVyU1ZHSGlkZGVuQ29udGFpbmVyLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdIaWRkZW5Db250YWluZXIuaApAQCAtNDgsNyArNDgs
NyBAQCBwcml2YXRlOgogCiAgICAgdm9pZCBhYnNvbHV0ZVJlY3RzKFZlY3RvcjxJbnRSZWN0PiYs
IGNvbnN0IExheW91dFBvaW50JikgY29uc3QgZmluYWwgeyB9CiAgICAgdm9pZCBhYnNvbHV0ZVF1
YWRzKFZlY3RvcjxGbG9hdFF1YWQ+JiwgYm9vbCopIGNvbnN0IGZpbmFsIHsgfQotICAgIHZvaWQg
YWRkRm9jdXNSaW5nUmVjdHMoVmVjdG9yPExheW91dFJlY3Q+JiwgY29uc3QgTGF5b3V0UG9pbnQm
LCBjb25zdCBSZW5kZXJMYXllck1vZGVsT2JqZWN0KiA9IG51bGxwdHIpIGZpbmFsIHsgfQorICAg
IHZvaWQgYWRkRm9jdXNSaW5nUmVjdHMoVmVjdG9yPExheW91dFJlY3Q+JiwgY29uc3QgTGF5b3V0
UG9pbnQmLCBjb25zdCBSZW5kZXJMYXllck1vZGVsT2JqZWN0KiA9IG51bGxwdHIpIGNvbnN0IGZp
bmFsIHsgfQogCiAgICAgYm9vbCBub2RlQXRQb2ludChjb25zdCBIaXRUZXN0UmVxdWVzdCYsIEhp
dFRlc3RSZXN1bHQmLCBjb25zdCBIaXRUZXN0TG9jYXRpb24mLCBjb25zdCBMYXlvdXRQb2ludCYs
IEhpdFRlc3RBY3Rpb24pIGZpbmFsIHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgdm9pZCBhcHBseVRy
YW5zZm9ybShUcmFuc2Zvcm1hdGlvbk1hdHJpeCYsIGNvbnN0IFJlbmRlclN0eWxlJiwgY29uc3Qg
RmxvYXRSZWN0JiwgT3B0aW9uU2V0PFJlbmRlclN0eWxlOjpUcmFuc2Zvcm1PcGVyYXRpb25PcHRp
b24+ID0gUmVuZGVyU3R5bGU6OmFsbFRyYW5zZm9ybU9wZXJhdGlvbnMpIGNvbnN0IGZpbmFsIHsg
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdNb2Rl
bE9iamVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR01vZGVs
T2JqZWN0LmNwcAppbmRleCA5OTViZTAxZGEzMDkuLmUwNmY4ODM5NDQyYyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdNb2RlbE9iamVjdC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdNb2RlbE9iamVjdC5jcHAK
QEAgLTIwMyw3ICsyMDMsNyBAQCBMYXlvdXRTaXplIFJlbmRlclNWR01vZGVsT2JqZWN0OjpvZmZz
ZXRGcm9tQ29udGFpbmVyKFJlbmRlckVsZW1lbnQmIGNvbnRhaW5lciwgYwogICAgIHJldHVybiBs
b2NhdGlvbk9mZnNldEVxdWl2YWxlbnQoKTsKIH0KIAotdm9pZCBSZW5kZXJTVkdNb2RlbE9iamVj
dDo6YWRkRm9jdXNSaW5nUmVjdHMoVmVjdG9yPExheW91dFJlY3Q+JiByZWN0cywgY29uc3QgTGF5
b3V0UG9pbnQmIGFkZGl0aW9uYWxPZmZzZXQsIGNvbnN0IFJlbmRlckxheWVyTW9kZWxPYmplY3Qq
KQordm9pZCBSZW5kZXJTVkdNb2RlbE9iamVjdDo6YWRkRm9jdXNSaW5nUmVjdHMoVmVjdG9yPExh
eW91dFJlY3Q+JiByZWN0cywgY29uc3QgTGF5b3V0UG9pbnQmIGFkZGl0aW9uYWxPZmZzZXQsIGNv
bnN0IFJlbmRlckxheWVyTW9kZWxPYmplY3QqKSBjb25zdAogewogICAgIGF1dG8gcmVwYWludEJv
dW5kaW5nQm94ID0gZW5jbG9zaW5nTGF5b3V0UmVjdChyZXBhaW50UmVjdEluTG9jYWxDb29yZGlu
YXRlcygpKTsKICAgICBpZiAocmVwYWludEJvdW5kaW5nQm94LnNpemUoKS5pc0VtcHR5KCkpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR01vZGVsT2Jq
ZWN0LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR01vZGVsT2JqZWN0
LmgKaW5kZXggM2YwMTQ4MjI1MTlhLi40YWJjNThlNjA1ZWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHTW9kZWxPYmplY3QuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR01vZGVsT2JqZWN0LmgKQEAgLTk4LDcgKzk4
LDcgQEAgcHJvdGVjdGVkOgogICAgIHZvaWQgYWJzb2x1dGVSZWN0cyhWZWN0b3I8SW50UmVjdD4m
LCBjb25zdCBMYXlvdXRQb2ludCYgYWNjdW11bGF0ZWRPZmZzZXQpIGNvbnN0IG92ZXJyaWRlOwog
ICAgIHZvaWQgYWJzb2x1dGVRdWFkcyhWZWN0b3I8RmxvYXRRdWFkPiYsIGJvb2wqIHdhc0ZpeGVk
KSBjb25zdCBvdmVycmlkZTsKIAotICAgIHZvaWQgYWRkRm9jdXNSaW5nUmVjdHMoVmVjdG9yPExh
eW91dFJlY3Q+JiwgY29uc3QgTGF5b3V0UG9pbnQmIGFkZGl0aW9uYWxPZmZzZXQsIGNvbnN0IFJl
bmRlckxheWVyTW9kZWxPYmplY3QqIHBhaW50Q29udGFpbmVyID0gMCkgb3ZlcnJpZGU7CisgICAg
dm9pZCBhZGRGb2N1c1JpbmdSZWN0cyhWZWN0b3I8TGF5b3V0UmVjdD4mLCBjb25zdCBMYXlvdXRQ
b2ludCYgYWRkaXRpb25hbE9mZnNldCwgY29uc3QgUmVuZGVyTGF5ZXJNb2RlbE9iamVjdCogcGFp
bnRDb250YWluZXIgPSAwKSBjb25zdCBvdmVycmlkZTsKICAgICAvLyBGSVhNRTogW0xCU0VdIFVw
c3RyZWFtIFNWRyBvdXRsaW5lIHBhaW50aW5nIGZ1bmN0aW9uYWxpdHkKICAgICAvLyB2b2lkIHBh
aW50U1ZHT3V0bGluZShQYWludEluZm8mLCBjb25zdCBMYXlvdXRQb2ludCYgYWRqdXN0ZWRQYWlu
dE9mZnNldCk7CiAK
</data>
<flag name="commit-queue"
          id="491415"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
      

    </bug>

</bugzilla>