<?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>246804</bug_id>
          
          <creation_ts>2022-10-20 07:28:42 -0700</creation_ts>
          <short_desc>[MQ4] Use FeatureSchema more</short_desc>
          <delta_ts>2022-10-21 02:02:47 -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>CSS</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>180234</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Antti Koivisto">koivisto</reporter>
          <assigned_to name="Antti Koivisto">koivisto</assigned_to>
          <cc>eric.carlson</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>glenn</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>jer.noble</cc>
    
    <cc>macpherson</cc>
    
    <cc>menard</cc>
    
    <cc>philipj</cc>
    
    <cc>sergio</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>youssefdevelops</cc>
    
    <cc>y_soliman</cc>
    
    <cc>zalan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1907031</commentid>
    <comment_count>0</comment_count>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2022-10-20 07:28:42 -0700</bug_when>
    <thetext>Some cleanups to FeatureSchemas. Also reduce template arguments in Evaluator.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1907032</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2022-10-20 07:29:42 -0700</bug_when>
    <thetext>&lt;rdar://problem/101381659&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1907039</commentid>
    <comment_count>2</comment_count>
      <attachid>463115</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2022-10-20 07:54:17 -0700</bug_when>
    <thetext>Created attachment 463115
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1907090</commentid>
    <comment_count>3</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2022-10-20 10:13:00 -0700</bug_when>
    <thetext>Commit message contains (OOPS!), blocking PR #None</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1907250</commentid>
    <comment_count>4</comment_count>
      <attachid>463138</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2022-10-21 00:48:10 -0700</bug_when>
    <thetext>Created attachment 463138
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1907262</commentid>
    <comment_count>5</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2022-10-21 02:02:44 -0700</bug_when>
    <thetext>Committed 255819@main (e1cd9d97b6c9): &lt;https://commits.webkit.org/255819@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 463138.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>463115</attachid>
            <date>2022-10-20 07:54:17 -0700</date>
            <delta_ts>2022-10-21 00:48:05 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-246804-20221020175415.patch</filename>
            <type>text/plain</type>
            <size>32132</size>
            <attacher name="Antti Koivisto">koivisto</attacher>
            
              <data encoding="base64">RnJvbSA4YmQ2OTQwNTQyMDNhMTQ2NjUxYTFjNmU5YjIzMjc5NTcyYWMwZGVkIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBBbnR0aSBLb2l2aXN0byA8YW50dGlAYXBwbGUuY29tPgpEYXRl
OiBUaHUsIDIwIE9jdCAyMDIyIDE3OjMwOjA4ICswMzAwClN1YmplY3Q6IFtQQVRDSF0gW01RNF0g
VXNlIEZlYXR1cmVTY2hlbWEgbW9yZQogaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTI0NjgwNCBJbmNsdWRlIGEgUmFkYXIgbGluayAoT09QUyEpLgoKUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCgpNb3ZlIEZlYXR1cmVTY2hlbWFzIG91dCBvZiB0aGUgcGFyc2VyIGFu
ZCB1c2UgdGhlbSBpbnN0ZWFkIG9mIGZlYXR1cmUgbmFtZSBzdHJpbmdzIGluIGNvbXBhcmlzb25z
LgpBbHNvIHJlbW92ZSBhbiB1bm5lZWVkZWQgdGVtcGxhdGUgYXJndW1lbnQgYW5kIGJhc2UgY2xh
c3MgZnJvbSBFdmFsdWF0b3IuCgoqIFNvdXJjZS9XZWJDb3JlL2Nzcy9Db250YWluZXJRdWVyeS5j
cHA6CihXZWJDb3JlOjpDUTo6RmVhdHVyZVNjaGVtYXM6OndpZHRoKToKKFdlYkNvcmU6OkNROjpG
ZWF0dXJlU2NoZW1hczo6aGVpZ2h0KToKKFdlYkNvcmU6OkNROjpGZWF0dXJlU2NoZW1hczo6aW5s
aW5lU2l6ZSk6CihXZWJDb3JlOjpDUTo6RmVhdHVyZVNjaGVtYXM6OmJsb2NrU2l6ZSk6CihXZWJD
b3JlOjpDUTo6RmVhdHVyZVNjaGVtYXM6OmFzcGVjdFJhdGlvKToKKFdlYkNvcmU6OkNROjpGZWF0
dXJlU2NoZW1hczo6b3JpZW50YXRpb24pOgooV2ViQ29yZTo6Q1E6OnJlcXVpcmVkQXhlc0ZvckZl
YXR1cmUpOgooV2ViQ29yZTo6Q1E6OkZlYXR1cmVOYW1lczo6d2lkdGgpOiBEZWxldGVkLgooV2Vi
Q29yZTo6Q1E6OkZlYXR1cmVOYW1lczo6aGVpZ2h0KTogRGVsZXRlZC4KKFdlYkNvcmU6OkNROjpG
ZWF0dXJlTmFtZXM6OmlubGluZVNpemUpOiBEZWxldGVkLgooV2ViQ29yZTo6Q1E6OkZlYXR1cmVO
YW1lczo6YmxvY2tTaXplKTogRGVsZXRlZC4KKFdlYkNvcmU6OkNROjpGZWF0dXJlTmFtZXM6OmFz
cGVjdFJhdGlvKTogRGVsZXRlZC4KKFdlYkNvcmU6OkNROjpGZWF0dXJlTmFtZXM6Om9yaWVudGF0
aW9uKTogRGVsZXRlZC4KKiBTb3VyY2UvV2ViQ29yZS9jc3MvQ29udGFpbmVyUXVlcnkuaDoKKiBT
b3VyY2UvV2ViQ29yZS9jc3MvQ29udGFpbmVyUXVlcnlQYXJzZXIuY3BwOgooV2ViQ29yZTo6Q29u
dGFpbmVyUXVlcnlQYXJzZXI6OmZlYXR1cmVTY2hlbWFzKTogRGVsZXRlZC4KKiBTb3VyY2UvV2Vi
Q29yZS9jc3MvQ29udGFpbmVyUXVlcnlQYXJzZXIuaDoKKiBTb3VyY2UvV2ViQ29yZS9jc3MvcXVl
cnkvR2VuZXJpY01lZGlhUXVlcnlFdmFsdWF0b3IuY3BwOgooV2ViQ29yZTo6TVE6OmV2YWx1YXRl
TGVuZ3RoRmVhdHVyZSk6CihXZWJDb3JlOjpNUTo6ZXZhbHVhdGVSYXRpb0ZlYXR1cmUpOgooV2Vi
Q29yZTo6TVE6OmV2YWx1YXRlRGlzY3JldGVGZWF0dXJlKToKKFdlYkNvcmU6Ok1ROjpHZW5lcmlj
TWVkaWFRdWVyeUV2YWx1YXRvckJhc2U6OmV2YWx1YXRlTGVuZ3RoRmVhdHVyZSBjb25zdCk6IERl
bGV0ZWQuCihXZWJDb3JlOjpNUTo6R2VuZXJpY01lZGlhUXVlcnlFdmFsdWF0b3JCYXNlOjpldmFs
dWF0ZVJhdGlvRmVhdHVyZSBjb25zdCk6IERlbGV0ZWQuCihXZWJDb3JlOjpNUTo6R2VuZXJpY01l
ZGlhUXVlcnlFdmFsdWF0b3JCYXNlOjpldmFsdWF0ZURpc2NyZXRlRmVhdHVyZSBjb25zdCk6IERl
bGV0ZWQuCiogU291cmNlL1dlYkNvcmUvY3NzL3F1ZXJ5L0dlbmVyaWNNZWRpYVF1ZXJ5RXZhbHVh
dG9yLmg6CihXZWJDb3JlOjpNUTo6R2VuZXJpY01lZGlhUXVlcnlFdmFsdWF0b3I8Q29uY3JldGVF
dmFsdWF0b3I+OjpldmFsdWF0ZVF1ZXJ5SW5QYXJlbnMgY29uc3QpOgooV2ViQ29yZTo6TVE6Okdl
bmVyaWNNZWRpYVF1ZXJ5RXZhbHVhdG9yPENvbmNyZXRlRXZhbHVhdG9yPjo6ZXZhbHVhdGVDb25k
aXRpb24gY29uc3QpOgoqIFNvdXJjZS9XZWJDb3JlL2Nzcy9xdWVyeS9HZW5lcmljTWVkaWFRdWVy
eVBhcnNlci5jcHA6CihXZWJDb3JlOjpNUTo6R2VuZXJpY01lZGlhUXVlcnlQYXJzZXJCYXNlOjp2
YWxpZGF0ZUZlYXR1cmVBZ2FpbnN0U2NoZW1hKToKKiBTb3VyY2UvV2ViQ29yZS9jc3MvcXVlcnkv
R2VuZXJpY01lZGlhUXVlcnlQYXJzZXIuaDoKKFdlYkNvcmU6Ok1ROjpHZW5lcmljTWVkaWFRdWVy
eVBhcnNlcjxDb25jcmV0ZVBhcnNlcj46OnNjaGVtYUZvckZlYXR1cmVOYW1lIGNvbnN0KToKKiBT
b3VyY2UvV2ViQ29yZS9jc3MvcXVlcnkvR2VuZXJpY01lZGlhUXVlcnlUeXBlcy5oOgoqIFNvdXJj
ZS9XZWJDb3JlL2Nzcy9xdWVyeS9NZWRpYVF1ZXJ5RXZhbHVhdG9yLmNwcDoKKFdlYkNvcmU6Ok1R
OjpNZWRpYVF1ZXJ5RXZhbHVhdG9yOjpNZWRpYVF1ZXJ5RXZhbHVhdG9yKToKKFdlYkNvcmU6Ok1R
OjpNZWRpYVF1ZXJ5RXZhbHVhdG9yOjpldmFsdWF0ZSBjb25zdCk6CihXZWJDb3JlOjpNUTo6TWVk
aWFRdWVyeUV2YWx1YXRvcjo6ZXZhbHVhdGVGZWF0dXJlIGNvbnN0KToKKiBTb3VyY2UvV2ViQ29y
ZS9jc3MvcXVlcnkvTWVkaWFRdWVyeUV2YWx1YXRvci5oOgoqIFNvdXJjZS9XZWJDb3JlL2Nzcy9x
dWVyeS9NZWRpYVF1ZXJ5UGFyc2VyLmNwcDoKKFdlYkNvcmU6Ok1ROjpNZWRpYVF1ZXJ5UGFyc2Vy
OjpmZWF0dXJlU2NoZW1hcyk6IERlbGV0ZWQuCiogU291cmNlL1dlYkNvcmUvY3NzL3F1ZXJ5L01l
ZGlhUXVlcnlQYXJzZXIuaDoKKiBTb3VyY2UvV2ViQ29yZS9zdHlsZS9Db250YWluZXJRdWVyeUV2
YWx1YXRvci5jcHA6CihXZWJDb3JlOjpTdHlsZTo6Q29udGFpbmVyUXVlcnlFdmFsdWF0b3I6OmV2
YWx1YXRlIGNvbnN0KToKKFdlYkNvcmU6OlN0eWxlOjpDb250YWluZXJRdWVyeUV2YWx1YXRvcjo6
ZmVhdHVyZUV2YWx1YXRpb25Db250ZXh0Rm9yUXVlcnkgY29uc3QpOgooV2ViQ29yZTo6U3R5bGU6
OkNvbnRhaW5lclF1ZXJ5RXZhbHVhdG9yOjpldmFsdWF0ZUZlYXR1cmUgY29uc3QpOgooKTogRGVs
ZXRlZC4KKFdlYkNvcmU6OlN0eWxlOjpDb250YWluZXJRdWVyeUV2YWx1YXRvcjo6c2VsZWN0Q29u
dGFpbmVyIGNvbnN0KTogRGVsZXRlZC4KKiBTb3VyY2UvV2ViQ29yZS9zdHlsZS9Db250YWluZXJR
dWVyeUV2YWx1YXRvci5oOgotLS0KIFNvdXJjZS9XZWJDb3JlL2Nzcy9Db250YWluZXJRdWVyeS5j
cHAgICAgICAgICB8IDUyICsrKysrKysrLS0tLS0tLS0KIFNvdXJjZS9XZWJDb3JlL2Nzcy9Db250
YWluZXJRdWVyeS5oICAgICAgICAgICB8IDE2ICsrLS0tCiBTb3VyY2UvV2ViQ29yZS9jc3MvQ29u
dGFpbmVyUXVlcnlQYXJzZXIuY3BwICAgfCAxNiArKy0tLQogU291cmNlL1dlYkNvcmUvY3NzL0Nv
bnRhaW5lclF1ZXJ5UGFyc2VyLmggICAgIHwgIDIgKy0KIC4uLi9jc3MvcXVlcnkvR2VuZXJpY01l
ZGlhUXVlcnlFdmFsdWF0b3IuY3BwICB8ICA2ICstCiAuLi4vY3NzL3F1ZXJ5L0dlbmVyaWNNZWRp
YVF1ZXJ5RXZhbHVhdG9yLmggICAgfCAyOCArKysrLS0tLS0KIC4uLi9jc3MvcXVlcnkvR2VuZXJp
Y01lZGlhUXVlcnlQYXJzZXIuY3BwICAgICB8ICAyICstCiAuLi4vY3NzL3F1ZXJ5L0dlbmVyaWNN
ZWRpYVF1ZXJ5UGFyc2VyLmggICAgICAgfCAyNyArKysrKy0tLQogLi4uL2Nzcy9xdWVyeS9HZW5l
cmljTWVkaWFRdWVyeVR5cGVzLmggICAgICAgIHwgIDQgKy0KIC4uLi9XZWJDb3JlL2Nzcy9xdWVy
eS9NZWRpYVF1ZXJ5RXZhbHVhdG9yLmNwcCB8ICA5ICsrLQogLi4uL1dlYkNvcmUvY3NzL3F1ZXJ5
L01lZGlhUXVlcnlFdmFsdWF0b3IuaCAgIHwgIDggKy0tCiBTb3VyY2UvV2ViQ29yZS9jc3MvcXVl
cnkvTWVkaWFRdWVyeVBhcnNlci5jcHAgfCAxMyArKy0tCiBTb3VyY2UvV2ViQ29yZS9jc3MvcXVl
cnkvTWVkaWFRdWVyeVBhcnNlci5oICAgfCAgMiArLQogLi4uL1dlYkNvcmUvc3R5bGUvQ29udGFp
bmVyUXVlcnlFdmFsdWF0b3IuY3BwIHwgNjEgKysrKysrKystLS0tLS0tLS0tLQogLi4uL1dlYkNv
cmUvc3R5bGUvQ29udGFpbmVyUXVlcnlFdmFsdWF0b3IuaCAgIHwgIDUgKy0KIDE1IGZpbGVzIGNo
YW5nZWQsIDEyNyBpbnNlcnRpb25zKCspLCAxMjQgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvY3NzL0NvbnRhaW5lclF1ZXJ5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nz
cy9Db250YWluZXJRdWVyeS5jcHAKaW5kZXggMGYwOGU0YzIwOGI2Li41ZTkxNDc4ZTRlN2QgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9Db250YWluZXJRdWVyeS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvY3NzL0NvbnRhaW5lclF1ZXJ5LmNwcApAQCAtMzMsNTcgKzMzLDU5IEBACiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIG5hbWVzcGFjZSBDUSB7Ci1uYW1lc3BhY2UgRmVhdHVyZU5h
bWVzIHsKK25hbWVzcGFjZSBGZWF0dXJlU2NoZW1hcyB7CiAKLWNvbnN0IEF0b21TdHJpbmcmIHdp
ZHRoKCkKK3VzaW5nIG5hbWVzcGFjZSBNUTsKKworY29uc3QgRmVhdHVyZVNjaGVtYSYgd2lkdGgo
KQogewotICAgIHN0YXRpYyBNYWluVGhyZWFkTmV2ZXJEZXN0cm95ZWQ8QXRvbVN0cmluZz4gbmFt
ZSB7ICJ3aWR0aCJfcyB9OwotICAgIHJldHVybiBuYW1lOworICAgIHN0YXRpYyBNYWluVGhyZWFk
TmV2ZXJEZXN0cm95ZWQ8RmVhdHVyZVNjaGVtYT4gc2NoZW1hIHsgRmVhdHVyZVNjaGVtYSB7ICJ3
aWR0aCJfcywgRmVhdHVyZVNjaGVtYTo6VHlwZTo6UmFuZ2UsIHsgRmVhdHVyZVNjaGVtYTo6VmFs
dWVUeXBlOjpMZW5ndGggfSwgeyB9IH0gfTsKKyAgICByZXR1cm4gc2NoZW1hOwogfQogCi1jb25z
dCBBdG9tU3RyaW5nJiBoZWlnaHQoKQorY29uc3QgRmVhdHVyZVNjaGVtYSYgaGVpZ2h0KCkKIHsK
LSAgICBzdGF0aWMgTWFpblRocmVhZE5ldmVyRGVzdHJveWVkPEF0b21TdHJpbmc+IG5hbWUgeyAi
aGVpZ2h0Il9zIH07Ci0gICAgcmV0dXJuIG5hbWU7CisgICAgc3RhdGljIE1haW5UaHJlYWROZXZl
ckRlc3Ryb3llZDxGZWF0dXJlU2NoZW1hPiBzY2hlbWEgeyBGZWF0dXJlU2NoZW1hIHsgImhlaWdo
dCJfcywgRmVhdHVyZVNjaGVtYTo6VHlwZTo6UmFuZ2UsIHsgRmVhdHVyZVNjaGVtYTo6VmFsdWVU
eXBlOjpMZW5ndGggfSwgeyB9IH0gfTsKKyAgICByZXR1cm4gc2NoZW1hOwogfQogCi1jb25zdCBB
dG9tU3RyaW5nJiBpbmxpbmVTaXplKCkKK2NvbnN0IEZlYXR1cmVTY2hlbWEmIGlubGluZVNpemUo
KQogewotICAgIHN0YXRpYyBNYWluVGhyZWFkTmV2ZXJEZXN0cm95ZWQ8QXRvbVN0cmluZz4gbmFt
ZSB7ICJpbmxpbmUtc2l6ZSJfcyB9OwotICAgIHJldHVybiBuYW1lOworICAgIHN0YXRpYyBNYWlu
VGhyZWFkTmV2ZXJEZXN0cm95ZWQ8RmVhdHVyZVNjaGVtYT4gc2NoZW1hIHsgRmVhdHVyZVNjaGVt
YSB7ICJpbmxpbmUtc2l6ZSJfcywgRmVhdHVyZVNjaGVtYTo6VHlwZTo6UmFuZ2UsIHsgRmVhdHVy
ZVNjaGVtYTo6VmFsdWVUeXBlOjpMZW5ndGggfSwgeyB9IH0gfTsKKyAgICByZXR1cm4gc2NoZW1h
OwogfQogCi1jb25zdCBBdG9tU3RyaW5nJiBibG9ja1NpemUoKQorY29uc3QgRmVhdHVyZVNjaGVt
YSYgYmxvY2tTaXplKCkKIHsKLSAgICBzdGF0aWMgTWFpblRocmVhZE5ldmVyRGVzdHJveWVkPEF0
b21TdHJpbmc+IG5hbWUgeyAiYmxvY2stc2l6ZSJfcyB9OwotICAgIHJldHVybiBuYW1lOworICAg
IHN0YXRpYyBNYWluVGhyZWFkTmV2ZXJEZXN0cm95ZWQ8RmVhdHVyZVNjaGVtYT4gc2NoZW1hIHsg
RmVhdHVyZVNjaGVtYSB7ICJibG9jay1zaXplIl9zLCBGZWF0dXJlU2NoZW1hOjpUeXBlOjpSYW5n
ZSwgeyBGZWF0dXJlU2NoZW1hOjpWYWx1ZVR5cGU6Okxlbmd0aCB9LCB7IH0gfSB9OworICAgIHJl
dHVybiBzY2hlbWE7CiB9CiAKLWNvbnN0IEF0b21TdHJpbmcmIGFzcGVjdFJhdGlvKCkKK2NvbnN0
IEZlYXR1cmVTY2hlbWEmIGFzcGVjdFJhdGlvKCkKIHsKLSAgICBzdGF0aWMgTWFpblRocmVhZE5l
dmVyRGVzdHJveWVkPEF0b21TdHJpbmc+IG5hbWUgeyAiYXNwZWN0LXJhdGlvIl9zIH07Ci0gICAg
cmV0dXJuIG5hbWU7CisgICAgc3RhdGljIE1haW5UaHJlYWROZXZlckRlc3Ryb3llZDxGZWF0dXJl
U2NoZW1hPiBzY2hlbWEgeyBGZWF0dXJlU2NoZW1hIHsgImFzcGVjdC1yYXRpbyJfcywgRmVhdHVy
ZVNjaGVtYTo6VHlwZTo6UmFuZ2UsIHsgRmVhdHVyZVNjaGVtYTo6VmFsdWVUeXBlOjpSYXRpbyB9
LCB7IH0gfSB9OworICAgIHJldHVybiBzY2hlbWE7CiB9CiAKLWNvbnN0IEF0b21TdHJpbmcmIG9y
aWVudGF0aW9uKCkKK2NvbnN0IEZlYXR1cmVTY2hlbWEmIG9yaWVudGF0aW9uKCkKIHsKLSAgICBz
dGF0aWMgTWFpblRocmVhZE5ldmVyRGVzdHJveWVkPEF0b21TdHJpbmc+IG5hbWUgeyAib3JpZW50
YXRpb24iX3MgfTsKLSAgICByZXR1cm4gbmFtZTsKKyAgICBzdGF0aWMgTWFpblRocmVhZE5ldmVy
RGVzdHJveWVkPEZlYXR1cmVTY2hlbWE+IHNjaGVtYSB7IEZlYXR1cmVTY2hlbWEgeyAib3JpZW50
YXRpb24iX3MsIEZlYXR1cmVTY2hlbWE6OlR5cGU6OkRpc2NyZXRlLCB7IH0sIHsgQ1NTVmFsdWVQ
b3J0cmFpdCwgQ1NTVmFsdWVMYW5kc2NhcGUgfSB9IH07CisgICAgcmV0dXJuIHNjaGVtYTsKIH0K
IAogfQogCi1PcHRpb25TZXQ8QXhpcz4gcmVxdWlyZWRBeGVzRm9yRmVhdHVyZShjb25zdCBBdG9t
U3RyaW5nJiBmZWF0dXJlTmFtZSkKK09wdGlvblNldDxBeGlzPiByZXF1aXJlZEF4ZXNGb3JGZWF0
dXJlKGNvbnN0IE1ROjpGZWF0dXJlJiBmZWF0dXJlKQogewotICAgIGlmIChmZWF0dXJlTmFtZSA9
PSBGZWF0dXJlTmFtZXM6OndpZHRoKCkpCisgICAgaWYgKGZlYXR1cmUuc2NoZW1hID09ICZGZWF0
dXJlU2NoZW1hczo6d2lkdGgoKSkKICAgICAgICAgcmV0dXJuIHsgQXhpczo6V2lkdGggfTsKLSAg
ICBpZiAoZmVhdHVyZU5hbWUgPT0gRmVhdHVyZU5hbWVzOjpoZWlnaHQoKSkKKyAgICBpZiAoZmVh
dHVyZS5zY2hlbWEgPT0gJkZlYXR1cmVTY2hlbWFzOjpoZWlnaHQoKSkKICAgICAgICAgcmV0dXJu
IHsgQXhpczo6SGVpZ2h0IH07Ci0gICAgaWYgKGZlYXR1cmVOYW1lID09IEZlYXR1cmVOYW1lczo6
aW5saW5lU2l6ZSgpKQorICAgIGlmIChmZWF0dXJlLnNjaGVtYSA9PSAmRmVhdHVyZVNjaGVtYXM6
OmlubGluZVNpemUoKSkKICAgICAgICAgcmV0dXJuIHsgQXhpczo6SW5saW5lIH07Ci0gICAgaWYg
KGZlYXR1cmVOYW1lID09IEZlYXR1cmVOYW1lczo6YmxvY2tTaXplKCkpCisgICAgaWYgKGZlYXR1
cmUuc2NoZW1hID09ICZGZWF0dXJlU2NoZW1hczo6YmxvY2tTaXplKCkpCiAgICAgICAgIHJldHVy
biB7IEF4aXM6OkJsb2NrIH07Ci0gICAgaWYgKGZlYXR1cmVOYW1lID09IEZlYXR1cmVOYW1lczo6
YXNwZWN0UmF0aW8oKSB8fCBmZWF0dXJlTmFtZSA9PSBGZWF0dXJlTmFtZXM6Om9yaWVudGF0aW9u
KCkpCisgICAgaWYgKGZlYXR1cmUuc2NoZW1hID09ICZGZWF0dXJlU2NoZW1hczo6YXNwZWN0UmF0
aW8oKSB8fCBmZWF0dXJlLnNjaGVtYSA9PSAmRmVhdHVyZVNjaGVtYXM6Om9yaWVudGF0aW9uKCkp
CiAgICAgICAgIHJldHVybiB7IEF4aXM6OklubGluZSwgQXhpczo6QmxvY2sgfTsKICAgICByZXR1
cm4geyB9OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NvbnRhaW5lclF1ZXJ5
LmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ29udGFpbmVyUXVlcnkuaAppbmRleCA2NjY2OWY4ZjJj
ODUuLjM0NjIyZDRmNDRmZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NvbnRhaW5l
clF1ZXJ5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NvbnRhaW5lclF1ZXJ5LmgKQEAgLTM2
LDEzICszNiwxMyBAQCBjbGFzcyBFbGVtZW50OwogCiBuYW1lc3BhY2UgQ1EgewogCi1uYW1lc3Bh
Y2UgRmVhdHVyZU5hbWVzIHsKLWNvbnN0IEF0b21TdHJpbmcmIHdpZHRoKCk7Ci1jb25zdCBBdG9t
U3RyaW5nJiBoZWlnaHQoKTsKLWNvbnN0IEF0b21TdHJpbmcmIGlubGluZVNpemUoKTsKLWNvbnN0
IEF0b21TdHJpbmcmIGJsb2NrU2l6ZSgpOwotY29uc3QgQXRvbVN0cmluZyYgYXNwZWN0UmF0aW8o
KTsKLWNvbnN0IEF0b21TdHJpbmcmIG9yaWVudGF0aW9uKCk7CituYW1lc3BhY2UgRmVhdHVyZVNj
aGVtYXMgeworY29uc3QgTVE6OkZlYXR1cmVTY2hlbWEmIHdpZHRoKCk7Citjb25zdCBNUTo6RmVh
dHVyZVNjaGVtYSYgaGVpZ2h0KCk7Citjb25zdCBNUTo6RmVhdHVyZVNjaGVtYSYgaW5saW5lU2l6
ZSgpOworY29uc3QgTVE6OkZlYXR1cmVTY2hlbWEmIGJsb2NrU2l6ZSgpOworY29uc3QgTVE6OkZl
YXR1cmVTY2hlbWEmIGFzcGVjdFJhdGlvKCk7Citjb25zdCBNUTo6RmVhdHVyZVNjaGVtYSYgb3Jp
ZW50YXRpb24oKTsKIH07CiAKIGVudW0gY2xhc3MgQXhpcyA6IHVpbnQ4X3QgewpAQCAtNTEsNyAr
NTEsNyBAQCBlbnVtIGNsYXNzIEF4aXMgOiB1aW50OF90IHsKICAgICBXaWR0aCAgID0gMSA8PCAy
LAogICAgIEhlaWdodCAgPSAxIDw8IDMsCiB9OwotT3B0aW9uU2V0PEF4aXM+IHJlcXVpcmVkQXhl
c0ZvckZlYXR1cmUoY29uc3QgQXRvbVN0cmluZyYpOworT3B0aW9uU2V0PEF4aXM+IHJlcXVpcmVk
QXhlc0ZvckZlYXR1cmUoY29uc3QgTVE6OkZlYXR1cmUmKTsKIAogc3RydWN0IENvbnRhaW5lclF1
ZXJ5IHsKICAgICBBdG9tU3RyaW5nIG5hbWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9j
c3MvQ29udGFpbmVyUXVlcnlQYXJzZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0NvbnRhaW5l
clF1ZXJ5UGFyc2VyLmNwcAppbmRleCA5YWRhMGU4ZDQ3YTUuLmI1NzlhOTAwZjE4NyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NvbnRhaW5lclF1ZXJ5UGFyc2VyLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9jc3MvQ29udGFpbmVyUXVlcnlQYXJzZXIuY3BwCkBAIC0zMiwxNSArMzIs
MTUgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiB1c2luZyBuYW1lc3BhY2UgTVE7CiAKLVZlY3Rv
cjxNUTo6RmVhdHVyZVNjaGVtYT4gQ29udGFpbmVyUXVlcnlQYXJzZXI6OmZlYXR1cmVTY2hlbWFz
KCkKK1ZlY3Rvcjxjb25zdCBGZWF0dXJlU2NoZW1hKj4gQ29udGFpbmVyUXVlcnlQYXJzZXI6OmZl
YXR1cmVTY2hlbWFzKCkKIHsKICAgICByZXR1cm4gewotICAgICAgICB7ICJ3aWR0aCJfcywgRmVh
dHVyZVNjaGVtYTo6VHlwZTo6UmFuZ2UsIHsgRmVhdHVyZVNjaGVtYTo6VmFsdWVUeXBlOjpMZW5n
dGggfSwgeyB9IH0sCi0gICAgICAgIHsgImhlaWdodCJfcywgRmVhdHVyZVNjaGVtYTo6VHlwZTo6
UmFuZ2UsIHsgRmVhdHVyZVNjaGVtYTo6VmFsdWVUeXBlOjpMZW5ndGggfSwgeyB9IH0sCi0gICAg
ICAgIHsgImlubGluZS1zaXplIl9zLCBGZWF0dXJlU2NoZW1hOjpUeXBlOjpSYW5nZSwgeyBGZWF0
dXJlU2NoZW1hOjpWYWx1ZVR5cGU6Okxlbmd0aCB9LCB7IH0gfSwKLSAgICAgICAgeyAiYmxvY2st
c2l6ZSJfcywgRmVhdHVyZVNjaGVtYTo6VHlwZTo6UmFuZ2UsIHsgRmVhdHVyZVNjaGVtYTo6VmFs
dWVUeXBlOjpMZW5ndGggfSwgeyB9IH0sCi0gICAgICAgIHsgImFzcGVjdC1yYXRpbyJfcywgRmVh
dHVyZVNjaGVtYTo6VHlwZTo6UmFuZ2UsIHsgRmVhdHVyZVNjaGVtYTo6VmFsdWVUeXBlOjpSYXRp
byB9LCB7IH0gfSwKLSAgICAgICAgeyAib3JpZW50YXRpb24iX3MsIEZlYXR1cmVTY2hlbWE6OlR5
cGU6OkRpc2NyZXRlLCB7IH0sIHsgQ1NTVmFsdWVQb3J0cmFpdCwgQ1NTVmFsdWVMYW5kc2NhcGUg
fSB9CisgICAgICAgICZDUTo6RmVhdHVyZVNjaGVtYXM6OndpZHRoKCksCisgICAgICAgICZDUTo6
RmVhdHVyZVNjaGVtYXM6OmhlaWdodCgpLAorICAgICAgICAmQ1E6OkZlYXR1cmVTY2hlbWFzOjpp
bmxpbmVTaXplKCksCisgICAgICAgICZDUTo6RmVhdHVyZVNjaGVtYXM6OmJsb2NrU2l6ZSgpLAor
ICAgICAgICAmQ1E6OkZlYXR1cmVTY2hlbWFzOjphc3BlY3RSYXRpbygpLAorICAgICAgICAmQ1E6
OkZlYXR1cmVTY2hlbWFzOjpvcmllbnRhdGlvbigpLAogICAgIH07CiB9CiAKQEAgLTc4LDcgKzc4
LDcgQEAgc3RkOjpvcHRpb25hbDxNUTo6RmVhdHVyZT4gQ29udGFpbmVyUXVlcnlQYXJzZXI6OmNv
bnN1bWVGZWF0dXJlKENTU1BhcnNlclRva2VuUmEKICAgICBpZiAoIXNpemVGZWF0dXJlKQogICAg
ICAgICByZXR1cm4geyB9OwogCi0gICAgbV9yZXF1aXJlZEF4ZXMuYWRkKENROjpyZXF1aXJlZEF4
ZXNGb3JGZWF0dXJlKHNpemVGZWF0dXJlLT5uYW1lKSk7CisgICAgbV9yZXF1aXJlZEF4ZXMuYWRk
KENROjpyZXF1aXJlZEF4ZXNGb3JGZWF0dXJlKCpzaXplRmVhdHVyZSkpOwogICAgIHJldHVybiBz
aXplRmVhdHVyZTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NvbnRhaW5l
clF1ZXJ5UGFyc2VyLmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ29udGFpbmVyUXVlcnlQYXJzZXIu
aAppbmRleCA5MzlkZTgwMTYwZmIuLjM0NTMwNTliYjA4ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvY3NzL0NvbnRhaW5lclF1ZXJ5UGFyc2VyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3Nz
L0NvbnRhaW5lclF1ZXJ5UGFyc2VyLmgKQEAgLTM3LDcgKzM3LDcgQEAgY2xhc3MgQ29udGFpbmVy
UXVlcnlQYXJzZXIgOiBwdWJsaWMgTVE6OkdlbmVyaWNNZWRpYVF1ZXJ5UGFyc2VyPENvbnRhaW5l
clF1ZXJ5UGEKIHB1YmxpYzoKICAgICBzdGF0aWMgc3RkOjpvcHRpb25hbDxDUTo6Q29udGFpbmVy
UXVlcnk+IGNvbnN1bWVDb250YWluZXJRdWVyeShDU1NQYXJzZXJUb2tlblJhbmdlJiwgY29uc3Qg
Q1NTUGFyc2VyQ29udGV4dCYpOwogCi0gICAgc3RhdGljIFZlY3RvcjxNUTo6RmVhdHVyZVNjaGVt
YT4gZmVhdHVyZVNjaGVtYXMoKTsKKyAgICBzdGF0aWMgVmVjdG9yPGNvbnN0IE1ROjpGZWF0dXJl
U2NoZW1hKj4gZmVhdHVyZVNjaGVtYXMoKTsKICAgICBzdGF0aWMgYm9vbCByZWplY3RJbnZhbGlk
RmVhdHVyZXMoKSB7IHJldHVybiBmYWxzZTsgfQogCiAgICAgc3RkOjpvcHRpb25hbDxDUTo6Q29u
dGFpbmVyUXVlcnk+IGNvbnN1bWVDb250YWluZXJRdWVyeShDU1NQYXJzZXJUb2tlblJhbmdlJik7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvcXVlcnkvR2VuZXJpY01lZGlhUXVlcnlF
dmFsdWF0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL3F1ZXJ5L0dlbmVyaWNNZWRpYVF1ZXJ5
RXZhbHVhdG9yLmNwcAppbmRleCBjMGU1NzI0NjZiYzQuLmZkNjVmODFmZTYyMCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvY3NzL3F1ZXJ5L0dlbmVyaWNNZWRpYVF1ZXJ5RXZhbHVhdG9yLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvcXVlcnkvR2VuZXJpY01lZGlhUXVlcnlFdmFsdWF0
b3IuY3BwCkBAIC04Myw3ICs4Myw3IEBAIHN0YXRpYyBFdmFsdWF0aW9uUmVzdWx0IGV2YWx1YXRl
TGVuZ3RoQ29tcGFyaXNvbihMYXlvdXRVbml0IHNpemUsIGNvbnN0IHN0ZDo6b3B0CiAgICAgcmV0
dXJuIHRvRXZhbHVhdGlvblJlc3VsdChjb21wYXJlKGNvbXBhcmlzb24tPm9wLCBsZWZ0LCByaWdo
dCkpOwogfTsKIAotRXZhbHVhdGlvblJlc3VsdCBHZW5lcmljTWVkaWFRdWVyeUV2YWx1YXRvckJh
c2U6OmV2YWx1YXRlTGVuZ3RoRmVhdHVyZShjb25zdCBGZWF0dXJlJiBmZWF0dXJlLCBMYXlvdXRV
bml0IGxlbmd0aCwgY29uc3QgQ1NTVG9MZW5ndGhDb252ZXJzaW9uRGF0YSYgY29udmVyc2lvbkRh
dGEpIGNvbnN0CitFdmFsdWF0aW9uUmVzdWx0IGV2YWx1YXRlTGVuZ3RoRmVhdHVyZShjb25zdCBG
ZWF0dXJlJiBmZWF0dXJlLCBMYXlvdXRVbml0IGxlbmd0aCwgY29uc3QgQ1NTVG9MZW5ndGhDb252
ZXJzaW9uRGF0YSYgY29udmVyc2lvbkRhdGEpCiB7CiAgICAgaWYgKCFmZWF0dXJlLmxlZnRDb21w
YXJpc29uICYmICFmZWF0dXJlLnJpZ2h0Q29tcGFyaXNvbikKICAgICAgICAgcmV0dXJuIHRvRXZh
bHVhdGlvblJlc3VsdCghIWxlbmd0aCk7CkBAIC0xMjAsNyArMTIwLDcgQEAgc3RhdGljIEV2YWx1
YXRpb25SZXN1bHQgZXZhbHVhdGVSYXRpb0NvbXBhcmlzb24oZG91YmxlIHJhdGlvLCBjb25zdCBz
dGQ6Om9wdGlvbmEKICAgICByZXR1cm4gdG9FdmFsdWF0aW9uUmVzdWx0KGNvbXBhcmUoY29tcGFy
aXNvbi0+b3AsIGxlZnQsIHJpZ2h0KSk7CiB9OwogCi1FdmFsdWF0aW9uUmVzdWx0IEdlbmVyaWNN
ZWRpYVF1ZXJ5RXZhbHVhdG9yQmFzZTo6ZXZhbHVhdGVSYXRpb0ZlYXR1cmUoY29uc3QgRmVhdHVy
ZSYgZmVhdHVyZSwgZG91YmxlIHJhdGlvKSBjb25zdAorRXZhbHVhdGlvblJlc3VsdCBldmFsdWF0
ZVJhdGlvRmVhdHVyZShjb25zdCBGZWF0dXJlJiBmZWF0dXJlLCBkb3VibGUgcmF0aW8pCiB7CiAg
ICAgaWYgKCFmZWF0dXJlLmxlZnRDb21wYXJpc29uICYmICFmZWF0dXJlLnJpZ2h0Q29tcGFyaXNv
bikKICAgICAgICAgcmV0dXJuIHRvRXZhbHVhdGlvblJlc3VsdCghIXJhdGlvKTsKQEAgLTEzMSw3
ICsxMzEsNyBAQCBFdmFsdWF0aW9uUmVzdWx0IEdlbmVyaWNNZWRpYVF1ZXJ5RXZhbHVhdG9yQmFz
ZTo6ZXZhbHVhdGVSYXRpb0ZlYXR1cmUoY29uc3QgRmVhdAogICAgIHJldHVybiBsZWZ0UmVzdWx0
ICYgcmlnaHRSZXN1bHQ7CiB9CiAKLUV2YWx1YXRpb25SZXN1bHQgR2VuZXJpY01lZGlhUXVlcnlF
dmFsdWF0b3JCYXNlOjpldmFsdWF0ZURpc2NyZXRlRmVhdHVyZShjb25zdCBGZWF0dXJlJiBmZWF0
dXJlLCBDU1NWYWx1ZUlEIGV4cGVjdGVkVmFsdWUpIGNvbnN0CitFdmFsdWF0aW9uUmVzdWx0IGV2
YWx1YXRlRGlzY3JldGVGZWF0dXJlKGNvbnN0IEZlYXR1cmUmIGZlYXR1cmUsIENTU1ZhbHVlSUQg
ZXhwZWN0ZWRWYWx1ZSkKIHsKICAgICBpZiAoIWZlYXR1cmUucmlnaHRDb21wYXJpc29uKQogICAg
ICAgICByZXR1cm4gRXZhbHVhdGlvblJlc3VsdDo6VW5rbm93bjsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9xdWVyeS9HZW5lcmljTWVkaWFRdWVyeUV2YWx1YXRvci5oIGIvU291cmNl
L1dlYkNvcmUvY3NzL3F1ZXJ5L0dlbmVyaWNNZWRpYVF1ZXJ5RXZhbHVhdG9yLmgKaW5kZXggOTU2
MWYyNTEwNjg0Li4zNDYzNDYwNTk1MDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9x
dWVyeS9HZW5lcmljTWVkaWFRdWVyeUV2YWx1YXRvci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nz
cy9xdWVyeS9HZW5lcmljTWVkaWFRdWVyeUV2YWx1YXRvci5oCkBAIC0yNCwzOCArMjQsMzkgQEAK
IAogI3ByYWdtYSBvbmNlCiAKKyNpbmNsdWRlICJDU1NUb0xlbmd0aENvbnZlcnNpb25EYXRhLmgi
CiAjaW5jbHVkZSAiQ1NTVmFsdWVLZXl3b3Jkcy5oIgogI2luY2x1ZGUgIkdlbmVyaWNNZWRpYVF1
ZXJ5VHlwZXMuaCIKICNpbmNsdWRlICJMYXlvdXRVbml0LmgiCiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAotY2xhc3MgQ1NTVG9MZW5ndGhDb252ZXJzaW9uRGF0YTsKK2NsYXNzIFJlbmRlckVsZW1l
bnQ7CiAKIG5hbWVzcGFjZSBNUSB7CiAKIGVudW0gY2xhc3MgRXZhbHVhdGlvblJlc3VsdCA6IHVp
bnQ4X3QgeyBGYWxzZSwgVHJ1ZSwgVW5rbm93biB9OwogCi1jbGFzcyBHZW5lcmljTWVkaWFRdWVy
eUV2YWx1YXRvckJhc2UgewotcHVibGljOgotICAgIEV2YWx1YXRpb25SZXN1bHQgZXZhbHVhdGVM
ZW5ndGhGZWF0dXJlKGNvbnN0IEZlYXR1cmUmLCBMYXlvdXRVbml0LCBjb25zdCBDU1NUb0xlbmd0
aENvbnZlcnNpb25EYXRhJikgY29uc3Q7Ci0gICAgRXZhbHVhdGlvblJlc3VsdCBldmFsdWF0ZVJh
dGlvRmVhdHVyZShjb25zdCBGZWF0dXJlJiwgZG91YmxlKSBjb25zdDsKLSAgICBFdmFsdWF0aW9u
UmVzdWx0IGV2YWx1YXRlRGlzY3JldGVGZWF0dXJlKGNvbnN0IEZlYXR1cmUmLCBDU1NWYWx1ZUlE
KSBjb25zdDsKLX07CitFdmFsdWF0aW9uUmVzdWx0IGV2YWx1YXRlTGVuZ3RoRmVhdHVyZShjb25z
dCBGZWF0dXJlJiwgTGF5b3V0VW5pdCwgY29uc3QgQ1NTVG9MZW5ndGhDb252ZXJzaW9uRGF0YSYp
OworRXZhbHVhdGlvblJlc3VsdCBldmFsdWF0ZVJhdGlvRmVhdHVyZShjb25zdCBGZWF0dXJlJiwg
ZG91YmxlKTsKK0V2YWx1YXRpb25SZXN1bHQgZXZhbHVhdGVEaXNjcmV0ZUZlYXR1cmUoY29uc3Qg
RmVhdHVyZSYsIENTU1ZhbHVlSUQpOwogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBDb25jcmV0ZUV2YWx1
YXRvcj4KLWNsYXNzIEdlbmVyaWNNZWRpYVF1ZXJ5RXZhbHVhdG9yIDogcHVibGljIEdlbmVyaWNN
ZWRpYVF1ZXJ5RXZhbHVhdG9yQmFzZSB7CitjbGFzcyBHZW5lcmljTWVkaWFRdWVyeUV2YWx1YXRv
ciB7CiBwdWJsaWM6Ci0gICAgdGVtcGxhdGU8dHlwZW5hbWUgQ29udGV4dD4gRXZhbHVhdGlvblJl
c3VsdCBldmFsdWF0ZVF1ZXJ5SW5QYXJlbnMoY29uc3QgUXVlcnlJblBhcmVucyYsIGNvbnN0IENv
bnRleHQmKSBjb25zdDsKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDb250ZXh0PiBFdmFsdWF0aW9u
UmVzdWx0IGV2YWx1YXRlQ29uZGl0aW9uKGNvbnN0IENvbmRpdGlvbiYsIGNvbnN0IENvbnRleHQm
KSBjb25zdDsKKyAgICBzdHJ1Y3QgRmVhdHVyZUV2YWx1YXRpb25Db250ZXh0IHsKKyAgICAgICAg
Q1NTVG9MZW5ndGhDb252ZXJzaW9uRGF0YSBjb252ZXJzaW9uRGF0YTsKKyAgICAgICAgY29uc3Qg
UmVuZGVyRWxlbWVudCogcmVuZGVyZXIgeyBudWxscHRyIH07CisgICAgfTsKKyAgICBFdmFsdWF0
aW9uUmVzdWx0IGV2YWx1YXRlUXVlcnlJblBhcmVucyhjb25zdCBRdWVyeUluUGFyZW5zJiwgY29u
c3QgRmVhdHVyZUV2YWx1YXRpb25Db250ZXh0JikgY29uc3Q7CisgICAgRXZhbHVhdGlvblJlc3Vs
dCBldmFsdWF0ZUNvbmRpdGlvbihjb25zdCBDb25kaXRpb24mLCBjb25zdCBGZWF0dXJlRXZhbHVh
dGlvbkNvbnRleHQmKSBjb25zdDsKIAogcHJpdmF0ZToKICAgICBjb25zdCBDb25jcmV0ZUV2YWx1
YXRvciYgY29uY3JldGVFdmFsdWF0b3IoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxjb25z
dCBDb25jcmV0ZUV2YWx1YXRvciY+KCp0aGlzKTsgfQogfTsKIAogdGVtcGxhdGU8dHlwZW5hbWUg
Q29uY3JldGVFdmFsdWF0b3I+Ci10ZW1wbGF0ZTx0eXBlbmFtZSBDb250ZXh0PgotRXZhbHVhdGlv
blJlc3VsdCBHZW5lcmljTWVkaWFRdWVyeUV2YWx1YXRvcjxDb25jcmV0ZUV2YWx1YXRvcj46OmV2
YWx1YXRlUXVlcnlJblBhcmVucyhjb25zdCBRdWVyeUluUGFyZW5zJiBxdWVyeUluUGFyZW5zLCBj
b25zdCBDb250ZXh0JiBjb250ZXh0KSBjb25zdAorRXZhbHVhdGlvblJlc3VsdCBHZW5lcmljTWVk
aWFRdWVyeUV2YWx1YXRvcjxDb25jcmV0ZUV2YWx1YXRvcj46OmV2YWx1YXRlUXVlcnlJblBhcmVu
cyhjb25zdCBRdWVyeUluUGFyZW5zJiBxdWVyeUluUGFyZW5zLCBjb25zdCBGZWF0dXJlRXZhbHVh
dGlvbkNvbnRleHQmIGNvbnRleHQpIGNvbnN0CiB7CiAgICAgcmV0dXJuIFdURjo6c3dpdGNoT24o
cXVlcnlJblBhcmVucywgWyZdKGNvbnN0IENvbmRpdGlvbiYgY29uZGl0aW9uKSB7CiAgICAgICAg
IHJldHVybiBldmFsdWF0ZUNvbmRpdGlvbihjb25kaXRpb24sIGNvbnRleHQpOwpAQCAtNjcsOCAr
NjgsNyBAQCBFdmFsdWF0aW9uUmVzdWx0IEdlbmVyaWNNZWRpYVF1ZXJ5RXZhbHVhdG9yPENvbmNy
ZXRlRXZhbHVhdG9yPjo6ZXZhbHVhdGVRdWVyeUluUAogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBD
b25jcmV0ZUV2YWx1YXRvcj4KLXRlbXBsYXRlPHR5cGVuYW1lIENvbnRleHQ+Ci1FdmFsdWF0aW9u
UmVzdWx0IEdlbmVyaWNNZWRpYVF1ZXJ5RXZhbHVhdG9yPENvbmNyZXRlRXZhbHVhdG9yPjo6ZXZh
bHVhdGVDb25kaXRpb24oY29uc3QgQ29uZGl0aW9uJiBjb25kaXRpb24sIGNvbnN0IENvbnRleHQm
IGNvbnRleHQpIGNvbnN0CitFdmFsdWF0aW9uUmVzdWx0IEdlbmVyaWNNZWRpYVF1ZXJ5RXZhbHVh
dG9yPENvbmNyZXRlRXZhbHVhdG9yPjo6ZXZhbHVhdGVDb25kaXRpb24oY29uc3QgQ29uZGl0aW9u
JiBjb25kaXRpb24sIGNvbnN0IEZlYXR1cmVFdmFsdWF0aW9uQ29udGV4dCYgY29udGV4dCkgY29u
c3QKIHsKICAgICBpZiAoY29uZGl0aW9uLnF1ZXJpZXMuaXNFbXB0eSgpKQogICAgICAgICByZXR1
cm4gRXZhbHVhdGlvblJlc3VsdDo6VW5rbm93bjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9xdWVyeS9HZW5lcmljTWVkaWFRdWVyeVBhcnNlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9j
c3MvcXVlcnkvR2VuZXJpY01lZGlhUXVlcnlQYXJzZXIuY3BwCmluZGV4IDdjOWM1NjhjNmVjZi4u
MTM0ZGRjYTJmZmEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvcXVlcnkvR2VuZXJp
Y01lZGlhUXVlcnlQYXJzZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9xdWVyeS9HZW5l
cmljTWVkaWFRdWVyeVBhcnNlci5jcHAKQEAgLTI0OSw3ICsyNDksNyBAQCBib29sIEdlbmVyaWNN
ZWRpYVF1ZXJ5UGFyc2VyQmFzZTo6dmFsaWRhdGVGZWF0dXJlQWdhaW5zdFNjaGVtYShGZWF0dXJl
JiBmZWF0dXJlLAogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9KCk7CiAKLSAgICBmZWF0dXJl
LnZhbGlkU2NoZW1hID0gaXNWYWxpZCA/ICZzY2hlbWEgOiBudWxscHRyOworICAgIGZlYXR1cmUu
c2NoZW1hID0gaXNWYWxpZCA/ICZzY2hlbWEgOiBudWxscHRyOwogICAgIHJldHVybiBpc1ZhbGlk
OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvcXVlcnkvR2VuZXJpY01lZGlh
UXVlcnlQYXJzZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9xdWVyeS9HZW5lcmljTWVkaWFRdWVy
eVBhcnNlci5oCmluZGV4IGRiMjNlOTZiMzQ0Yi4uZmY2YWJmNWY3ZDkyIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9jc3MvcXVlcnkvR2VuZXJpY01lZGlhUXVlcnlQYXJzZXIuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9jc3MvcXVlcnkvR2VuZXJpY01lZGlhUXVlcnlQYXJzZXIuaApAQCAtNjAs
NiArNjAsNyBAQCBwdWJsaWM6CiAKICAgICBzdGQ6Om9wdGlvbmFsPENvbmRpdGlvbj4gY29uc3Vt
ZUNvbmRpdGlvbihDU1NQYXJzZXJUb2tlblJhbmdlJik7CiAgICAgc3RkOjpvcHRpb25hbDxRdWVy
eUluUGFyZW5zPiBjb25zdW1lUXVlcnlJblBhcmVucyhDU1NQYXJzZXJUb2tlblJhbmdlJik7Cisg
ICAgc3RkOjpvcHRpb25hbDxGZWF0dXJlPiBjb25zdW1lRmVhdHVyZShDU1NQYXJzZXJUb2tlblJh
bmdlJik7CiAKICAgICBjb25zdCBGZWF0dXJlU2NoZW1hKiBzY2hlbWFGb3JGZWF0dXJlTmFtZShj
b25zdCBBdG9tU3RyaW5nJikgY29uc3Q7CiAKQEAgLTE0MCwxMiArMTQxLDggQEAgc3RkOjpvcHRp
b25hbDxRdWVyeUluUGFyZW5zPiBHZW5lcmljTWVkaWFRdWVyeVBhcnNlcjxDb25jcmV0ZVBhcnNl
cj46OmNvbnN1bWVRdWUKICAgICAgICAgaWYgKGF1dG8gY29uZGl0aW9uID0gY29uc3VtZUNvbmRp
dGlvbihjb25kaXRpb25SYW5nZSkpCiAgICAgICAgICAgICByZXR1cm4geyBjb25kaXRpb24gfTsK
IAotICAgICAgICBpZiAoYXV0byBmZWF0dXJlID0gY29uY3JldGVQYXJzZXIoKS5jb25zdW1lRmVh
dHVyZShibG9ja1JhbmdlKSkgewotICAgICAgICAgICAgaWYgKCF2YWxpZGF0ZUZlYXR1cmUoKmZl
YXR1cmUpICYmIENvbmNyZXRlUGFyc2VyOjpyZWplY3RJbnZhbGlkRmVhdHVyZXMoKSkKLSAgICAg
ICAgICAgICAgICByZXR1cm4geyB9OwotCisgICAgICAgIGlmIChhdXRvIGZlYXR1cmUgPSBjb25j
cmV0ZVBhcnNlcigpLmNvbnN1bWVGZWF0dXJlKGJsb2NrUmFuZ2UpKQogICAgICAgICAgICAgcmV0
dXJuIHsgKmZlYXR1cmUgfTsKLSAgICAgICAgfQogCiAgICAgICAgIHJldHVybiBHZW5lcmFsRW5j
bG9zZWQgeyB7IH0sIGJsb2NrUmFuZ2Uuc2VyaWFsaXplKCkgfTsKICAgICB9CkBAIC0xNTMsNiAr
MTUwLDE5IEBAIHN0ZDo6b3B0aW9uYWw8UXVlcnlJblBhcmVucz4gR2VuZXJpY01lZGlhUXVlcnlQ
YXJzZXI8Q29uY3JldGVQYXJzZXI+Ojpjb25zdW1lUXVlCiAgICAgcmV0dXJuIHsgfTsKIH0KIAor
dGVtcGxhdGU8dHlwZW5hbWUgQ29uY3JldGVQYXJzZXI+CitzdGQ6Om9wdGlvbmFsPEZlYXR1cmU+
IEdlbmVyaWNNZWRpYVF1ZXJ5UGFyc2VyPENvbmNyZXRlUGFyc2VyPjo6Y29uc3VtZUZlYXR1cmUo
Q1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2UpCit7CisgICAgYXV0byBmZWF0dXJlID0gR2VuZXJp
Y01lZGlhUXVlcnlQYXJzZXJCYXNlOjpjb25zdW1lRmVhdHVyZShyYW5nZSk7CisgICAgaWYgKCFm
ZWF0dXJlKQorICAgICAgICByZXR1cm4geyB9OworCisgICAgaWYgKCF2YWxpZGF0ZUZlYXR1cmUo
KmZlYXR1cmUpICYmIENvbmNyZXRlUGFyc2VyOjpyZWplY3RJbnZhbGlkRmVhdHVyZXMoKSkKKyAg
ICAgICAgcmV0dXJuIHsgfTsKKworICAgIHJldHVybiBmZWF0dXJlOworfQorCiB0ZW1wbGF0ZTx0
eXBlbmFtZSBDb25jcmV0ZVBhcnNlcj4KIGJvb2wgR2VuZXJpY01lZGlhUXVlcnlQYXJzZXI8Q29u
Y3JldGVQYXJzZXI+Ojp2YWxpZGF0ZUZlYXR1cmUoRmVhdHVyZSYgZmVhdHVyZSkKIHsKQEAgLTE2
NSwxOCArMTc1LDE3IEBAIGJvb2wgR2VuZXJpY01lZGlhUXVlcnlQYXJzZXI8Q29uY3JldGVQYXJz
ZXI+Ojp2YWxpZGF0ZUZlYXR1cmUoRmVhdHVyZSYgZmVhdHVyZSkKIHRlbXBsYXRlPHR5cGVuYW1l
IENvbmNyZXRlUGFyc2VyPgogY29uc3QgRmVhdHVyZVNjaGVtYSogR2VuZXJpY01lZGlhUXVlcnlQ
YXJzZXI8Q29uY3JldGVQYXJzZXI+OjpzY2hlbWFGb3JGZWF0dXJlTmFtZShjb25zdCBBdG9tU3Ry
aW5nJiBuYW1lKSBjb25zdAogewotICAgIHVzaW5nIFNjaGVtYU1hcCA9IE1lbW9yeUNvbXBhY3RM
b29rdXBPbmx5Um9iaW5Ib29kSGFzaE1hcDxBdG9tU3RyaW5nLCBGZWF0dXJlU2NoZW1hPjsKKyAg
ICB1c2luZyBTY2hlbWFNYXAgPSBNZW1vcnlDb21wYWN0TG9va3VwT25seVJvYmluSG9vZEhhc2hN
YXA8QXRvbVN0cmluZywgY29uc3QgRmVhdHVyZVNjaGVtYSo+OwogCiAgICAgc3RhdGljIE5ldmVy
RGVzdHJveWVkPFNjaGVtYU1hcD4gc2NoZW1hcyA9IFsmXSB7CiAgICAgICAgIGF1dG8gZW50cmll
cyA9IENvbmNyZXRlUGFyc2VyOjpmZWF0dXJlU2NoZW1hcygpOwogICAgICAgICBTY2hlbWFNYXAg
bWFwOwogICAgICAgICBmb3IgKGF1dG8mIGVudHJ5IDogZW50cmllcykKLSAgICAgICAgICAgIG1h
cC5hZGQoZW50cnkubmFtZSwgZW50cnkpOworICAgICAgICAgICAgbWFwLmFkZChlbnRyeS0+bmFt
ZSwgZW50cnkpOwogICAgICAgICByZXR1cm4gbWFwOwogICAgIH0oKTsKIAotICAgIGF1dG8gaXQg
PSBzY2hlbWFzLT5maW5kKG5hbWUpOwotICAgIHJldHVybiBpdCA9PSBzY2hlbWFzLT5lbmQoKSA/
IG51bGxwdHIgOiAmaXQtPnZhbHVlOworICAgIHJldHVybiBzY2hlbWFzLT5nZXQobmFtZSk7CiB9
CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9xdWVyeS9HZW5lcmljTWVkaWFR
dWVyeVR5cGVzLmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvcXVlcnkvR2VuZXJpY01lZGlhUXVlcnlU
eXBlcy5oCmluZGV4IDMzNzExMWE0OTFmOC4uZTAzMTU0ZmFjNjk4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvcXVlcnkvR2VuZXJpY01lZGlhUXVlcnlUeXBlcy5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9xdWVyeS9HZW5lcmljTWVkaWFRdWVyeVR5cGVzLmgKQEAgLTQ5LDcgKzQ5
LDcgQEAgc3RydWN0IEZlYXR1cmUgewogICAgIHN0ZDo6b3B0aW9uYWw8Q29tcGFyaXNvbj4gbGVm
dENvbXBhcmlzb247CiAgICAgc3RkOjpvcHRpb25hbDxDb21wYXJpc29uPiByaWdodENvbXBhcmlz
b247CiAKLSAgICBjb25zdCBGZWF0dXJlU2NoZW1hKiB2YWxpZFNjaGVtYSB7IG51bGxwdHIgfTsK
KyAgICBjb25zdCBGZWF0dXJlU2NoZW1hKiBzY2hlbWEgeyBudWxscHRyIH07CiB9OwogCiBzdHJ1
Y3QgR2VuZXJhbEVuY2xvc2VkIHsKQEAgLTY1LDYgKzY1LDggQEAgc3RydWN0IENvbmRpdGlvbiB7
CiB9OwogCiBzdHJ1Y3QgRmVhdHVyZVNjaGVtYSB7CisgICAgV1RGX01BS0VfU1RSVUNUX0ZBU1Rf
QUxMT0NBVEVEOworCiAgICAgZW51bSBjbGFzcyBUeXBlIDogdWludDhfdCB7IERpc2NyZXRlLCBS
YW5nZSB9OwogICAgIGVudW0gY2xhc3MgVmFsdWVUeXBlIDogdWludDhfdCB7CiAgICAgICAgIElu
dGVnZXIgPSAgICAgICAxIDw8IDAsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvcXVl
cnkvTWVkaWFRdWVyeUV2YWx1YXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvcXVlcnkvTWVk
aWFRdWVyeUV2YWx1YXRvci5jcHAKaW5kZXggNDVkMmZkZDRkYmE4Li5iNTYzYmIyOGVhOTIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9xdWVyeS9NZWRpYVF1ZXJ5RXZhbHVhdG9yLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvcXVlcnkvTWVkaWFRdWVyeUV2YWx1YXRvci5jcHAK
QEAgLTI1LDcgKzI1LDEwIEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiTWVkaWFR
dWVyeUV2YWx1YXRvci5oIgogCisjaW5jbHVkZSAiQ1NTVG9MZW5ndGhDb252ZXJzaW9uRGF0YS5o
IgorI2luY2x1ZGUgIkRvY3VtZW50LmgiCiAjaW5jbHVkZSAiTWVkaWFRdWVyeS5oIgorI2luY2x1
ZGUgIlJlbmRlclZpZXcuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogbmFtZXNwYWNlIE1RIHsK
QEAgLTMzLDcgKzM2LDcgQEAgbmFtZXNwYWNlIE1RIHsKIE1lZGlhUXVlcnlFdmFsdWF0b3I6Ok1l
ZGlhUXVlcnlFdmFsdWF0b3IoY29uc3QgQXRvbVN0cmluZyYgbWVkaWFUeXBlLCBjb25zdCBEb2N1
bWVudCYgZG9jdW1lbnQsIGNvbnN0IFJlbmRlclN0eWxlKiByb290RWxlbWVudFN0eWxlKQogICAg
IDogR2VuZXJpY01lZGlhUXVlcnlFdmFsdWF0b3IoKQogICAgICwgbV9tZWRpYVR5cGUobWVkaWFU
eXBlKQotICAgICwgbV9mZWF0dXJlQ29udGV4dCh7IGRvY3VtZW50LCByb290RWxlbWVudFN0eWxl
IH0pCisgICAgLCBtX2V2YWx1YXRpb25Db250ZXh0KHsgQ1NTVG9MZW5ndGhDb252ZXJzaW9uRGF0
YSB7ICpyb290RWxlbWVudFN0eWxlLCBudWxscHRyLCBudWxscHRyLCBkb2N1bWVudC5yZW5kZXJW
aWV3KCkgfSwgZG9jdW1lbnQucmVuZGVyVmlldygpIH0pCiB7CiB9CiAKQEAgLTY0LDEzICs2Nywx
MyBAQCBib29sIE1lZGlhUXVlcnlFdmFsdWF0b3I6OmV2YWx1YXRlKGNvbnN0IE1lZGlhUXVlcnkm
IHF1ZXJ5KSBjb25zdAogICAgIGF1dG8gY29uZGl0aW9uTWF0Y2hlcyA9IFsmXSB7CiAgICAgICAg
IGlmICghcXVlcnkuY29uZGl0aW9uKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAg
ICByZXR1cm4gZXZhbHVhdGVDb25kaXRpb24oKnF1ZXJ5LmNvbmRpdGlvbiwgbV9mZWF0dXJlQ29u
dGV4dCkgPT0gRXZhbHVhdGlvblJlc3VsdDo6VHJ1ZTsKKyAgICAgICAgcmV0dXJuIGV2YWx1YXRl
Q29uZGl0aW9uKCpxdWVyeS5jb25kaXRpb24sIG1fZXZhbHVhdGlvbkNvbnRleHQpID09IEV2YWx1
YXRpb25SZXN1bHQ6OlRydWU7CiAgICAgfSgpOwogCiAgICAgcmV0dXJuIGNvbmRpdGlvbk1hdGNo
ZXMgIT0gaXNOZWdhdGVkOwogfQogCi1FdmFsdWF0aW9uUmVzdWx0IE1lZGlhUXVlcnlFdmFsdWF0
b3I6OmV2YWx1YXRlRmVhdHVyZShjb25zdCBGZWF0dXJlJiwgY29uc3QgRmVhdHVyZUNvbnRleHQm
KSBjb25zdAorRXZhbHVhdGlvblJlc3VsdCBNZWRpYVF1ZXJ5RXZhbHVhdG9yOjpldmFsdWF0ZUZl
YXR1cmUoY29uc3QgRmVhdHVyZSYsIGNvbnN0IEZlYXR1cmVFdmFsdWF0aW9uQ29udGV4dCYpIGNv
bnN0CiB7CiAgICAgcmV0dXJuIEV2YWx1YXRpb25SZXN1bHQ6OlVua25vd247CiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvcXVlcnkvTWVkaWFRdWVyeUV2YWx1YXRvci5oIGIvU291
cmNlL1dlYkNvcmUvY3NzL3F1ZXJ5L01lZGlhUXVlcnlFdmFsdWF0b3IuaAppbmRleCAyNDVkYTcw
ODExY2IuLmMyYjJmMDFjZmE4NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL3F1ZXJ5
L01lZGlhUXVlcnlFdmFsdWF0b3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvcXVlcnkvTWVk
aWFRdWVyeUV2YWx1YXRvci5oCkBAIC00MCwxNSArNDAsMTEgQEAgcHVibGljOgogICAgIGJvb2wg
ZXZhbHVhdGUoY29uc3QgTWVkaWFRdWVyeUxpc3QmKSBjb25zdDsKICAgICBib29sIGV2YWx1YXRl
KGNvbnN0IE1lZGlhUXVlcnkmKSBjb25zdDsKIAotICAgIHN0cnVjdCBGZWF0dXJlQ29udGV4dCB7
Ci0gICAgICAgIGNvbnN0IERvY3VtZW50JiBkb2N1bWVudDsKLSAgICAgICAgY29uc3QgUmVuZGVy
U3R5bGUqIHJvb3RFbGVtZW50U3R5bGU7Ci0gICAgfTsKLSAgICBFdmFsdWF0aW9uUmVzdWx0IGV2
YWx1YXRlRmVhdHVyZShjb25zdCBGZWF0dXJlJiwgY29uc3QgRmVhdHVyZUNvbnRleHQmKSBjb25z
dDsKKyAgICBFdmFsdWF0aW9uUmVzdWx0IGV2YWx1YXRlRmVhdHVyZShjb25zdCBGZWF0dXJlJiwg
Y29uc3QgRmVhdHVyZUV2YWx1YXRpb25Db250ZXh0JikgY29uc3Q7CiAKIHByaXZhdGU6CiAgICAg
Y29uc3QgQXRvbVN0cmluZyBtX21lZGlhVHlwZTsKLSAgICBjb25zdCBGZWF0dXJlQ29udGV4dCBt
X2ZlYXR1cmVDb250ZXh0OworICAgIGNvbnN0IEZlYXR1cmVFdmFsdWF0aW9uQ29udGV4dCBtX2V2
YWx1YXRpb25Db250ZXh0OwogfTsKIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3Nz
L3F1ZXJ5L01lZGlhUXVlcnlQYXJzZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL3F1ZXJ5L01l
ZGlhUXVlcnlQYXJzZXIuY3BwCmluZGV4IDExNjM3MDhlZWMzZC4uY2JmMWI2YmE4MDlmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvcXVlcnkvTWVkaWFRdWVyeVBhcnNlci5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvY3NzL3F1ZXJ5L01lZGlhUXVlcnlQYXJzZXIuY3BwCkBAIC0zNywx
NCArMzcsMTMgQEAgTWVkaWFRdWVyeVBhcnNlcjo6TWVkaWFRdWVyeVBhcnNlcihjb25zdCBDU1NQ
YXJzZXJDb250ZXh0JiBjb250ZXh0KQogewogfQogCi1WZWN0b3I8TVE6OkZlYXR1cmVTY2hlbWE+
IE1lZGlhUXVlcnlQYXJzZXI6OmZlYXR1cmVTY2hlbWFzKCkKK1ZlY3Rvcjxjb25zdCBGZWF0dXJl
U2NoZW1hKj4gTWVkaWFRdWVyeVBhcnNlcjo6ZmVhdHVyZVNjaGVtYXMoKQogewotICAgIHJldHVy
biB7Ci0gICAgICAgIC8vIEZJWE1FOiBBZGQgdGhlIHJlc3QuCi0gICAgICAgIHsgIndpZHRoIl9z
LCBGZWF0dXJlU2NoZW1hOjpUeXBlOjpSYW5nZSwgeyBGZWF0dXJlU2NoZW1hOjpWYWx1ZVR5cGU6
Okxlbmd0aCB9LCB7IH0gfSwKLSAgICAgICAgeyAiaGVpZ2h0Il9zLCBGZWF0dXJlU2NoZW1hOjpU
eXBlOjpSYW5nZSwgeyBGZWF0dXJlU2NoZW1hOjpWYWx1ZVR5cGU6Okxlbmd0aCB9LCB7IH0gfSwK
LSAgICAgICAgeyAib3JpZW50YXRpb24iX3MsIEZlYXR1cmVTY2hlbWE6OlR5cGU6OkRpc2NyZXRl
LCB7IH0sIHsgQ1NTVmFsdWVQb3J0cmFpdCwgQ1NTVmFsdWVMYW5kc2NhcGUgfSB9Ci0gICAgfTsK
KyAgICBzdGF0aWMgTWFpblRocmVhZE5ldmVyRGVzdHJveWVkPEZlYXR1cmVTY2hlbWE+IHdpZHRo
U2NoZW1hIHsgRmVhdHVyZVNjaGVtYSB7ICJ3aWR0aCJfcywgRmVhdHVyZVNjaGVtYTo6VHlwZTo6
UmFuZ2UsIHsgRmVhdHVyZVNjaGVtYTo6VmFsdWVUeXBlOjpMZW5ndGggfSwgeyB9IH0gfTsKKyAg
ICBzdGF0aWMgTWFpblRocmVhZE5ldmVyRGVzdHJveWVkPEZlYXR1cmVTY2hlbWE+IGhlaWdodFNj
aGVtYSB7IEZlYXR1cmVTY2hlbWEgeyAiaGVpZ2h0Il9zLCBGZWF0dXJlU2NoZW1hOjpUeXBlOjpS
YW5nZSwgeyBGZWF0dXJlU2NoZW1hOjpWYWx1ZVR5cGU6Okxlbmd0aCB9LCB7IH0gfSB9OworICAg
IHN0YXRpYyBNYWluVGhyZWFkTmV2ZXJEZXN0cm95ZWQ8RmVhdHVyZVNjaGVtYT4gb3JpZW50YXRp
b25TY2hlbWEgeyBGZWF0dXJlU2NoZW1hIHsgIm9yaWVudGF0aW9uIl9zLCBGZWF0dXJlU2NoZW1h
OjpUeXBlOjpEaXNjcmV0ZSwgeyB9LCB7IENTU1ZhbHVlUG9ydHJhaXQsIENTU1ZhbHVlTGFuZHNj
YXBlIH0gfSB9OworCisgICAgcmV0dXJuIHsgJndpZHRoU2NoZW1hLmdldCgpLCAmaGVpZ2h0U2No
ZW1hLmdldCgpLCAmb3JpZW50YXRpb25TY2hlbWEuZ2V0KCkgfTsKIH0KIAogTWVkaWFRdWVyeUxp
c3QgTWVkaWFRdWVyeVBhcnNlcjo6Y29uc3VtZU1lZGlhUXVlcnlMaXN0KENTU1BhcnNlclRva2Vu
UmFuZ2UmIHJhbmdlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL3F1ZXJ5L01lZGlh
UXVlcnlQYXJzZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9xdWVyeS9NZWRpYVF1ZXJ5UGFyc2Vy
LmgKaW5kZXggMTI5YzUyODIxMWM0Li5mZDFiODRlOGExYjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9xdWVyeS9NZWRpYVF1ZXJ5UGFyc2VyLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
Y3NzL3F1ZXJ5L01lZGlhUXVlcnlQYXJzZXIuaApAQCAtMzcsNyArMzcsNyBAQCBwdWJsaWM6CiAg
ICAgTWVkaWFRdWVyeUxpc3QgY29uc3VtZU1lZGlhUXVlcnlMaXN0KENTU1BhcnNlclRva2VuUmFu
Z2UmKTsKICAgICBzdGQ6Om9wdGlvbmFsPE1lZGlhUXVlcnk+IGNvbnN1bWVNZWRpYVF1ZXJ5KENT
U1BhcnNlclRva2VuUmFuZ2UmKTsKIAotICAgIHN0YXRpYyBWZWN0b3I8TVE6OkZlYXR1cmVTY2hl
bWE+IGZlYXR1cmVTY2hlbWFzKCk7CisgICAgc3RhdGljIFZlY3Rvcjxjb25zdCBGZWF0dXJlU2No
ZW1hKj4gZmVhdHVyZVNjaGVtYXMoKTsKICAgICBzdGF0aWMgYm9vbCByZWplY3RJbnZhbGlkRmVh
dHVyZXMoKSB7IHJldHVybiB0cnVlOyB9CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9zdHlsZS9Db250YWluZXJRdWVyeUV2YWx1YXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdHls
ZS9Db250YWluZXJRdWVyeUV2YWx1YXRvci5jcHAKaW5kZXggYzc5NGJiODU4ODRjLi40NDQ3NzY5
M2MzYTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N0eWxlL0NvbnRhaW5lclF1ZXJ5RXZh
bHVhdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9Db250YWluZXJRdWVyeUV2YWx1
YXRvci5jcHAKQEAgLTM5LDExICszOSw2IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlOjpTdHlsZSB7
CiAKLXN0cnVjdCBDb250YWluZXJRdWVyeUV2YWx1YXRvcjo6U2VsZWN0ZWRDb250YWluZXIgewot
ICAgIGNvbnN0IFJlbmRlckJveCogcmVuZGVyZXIgeyBudWxscHRyIH07Ci0gICAgQ1NTVG9MZW5n
dGhDb252ZXJzaW9uRGF0YSBjb252ZXJzaW9uRGF0YTsKLX07Ci0KIENvbnRhaW5lclF1ZXJ5RXZh
bHVhdG9yOjpDb250YWluZXJRdWVyeUV2YWx1YXRvcihjb25zdCBFbGVtZW50JiBlbGVtZW50LCBT
ZWxlY3Rpb25Nb2RlIHNlbGVjdGlvbk1vZGUsIFNjb3BlT3JkaW5hbCBzY29wZU9yZGluYWwsIFNl
bGVjdG9yTWF0Y2hpbmdTdGF0ZSogc2VsZWN0b3JNYXRjaGluZ1N0YXRlKQogICAgIDogbV9lbGVt
ZW50KGVsZW1lbnQpCiAgICAgLCBtX3NlbGVjdGlvbk1vZGUoc2VsZWN0aW9uTW9kZSkKQEAgLTU0
LDE0ICs0OSwxNCBAQCBDb250YWluZXJRdWVyeUV2YWx1YXRvcjo6Q29udGFpbmVyUXVlcnlFdmFs
dWF0b3IoY29uc3QgRWxlbWVudCYgZWxlbWVudCwgU2VsZWN0aQogCiBib29sIENvbnRhaW5lclF1
ZXJ5RXZhbHVhdG9yOjpldmFsdWF0ZShjb25zdCBDUTo6Q29udGFpbmVyUXVlcnkmIGNvbnRhaW5l
clF1ZXJ5KSBjb25zdAogewotICAgIGF1dG8gY29udGFpbmVyID0gc2VsZWN0Q29udGFpbmVyKGNv
bnRhaW5lclF1ZXJ5KTsKLSAgICBpZiAoIWNvbnRhaW5lcikKKyAgICBhdXRvIGNvbnRleHQgPSBm
ZWF0dXJlRXZhbHVhdGlvbkNvbnRleHRGb3JRdWVyeShjb250YWluZXJRdWVyeSk7CisgICAgaWYg
KCFjb250ZXh0KQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICByZXR1cm4gZXZhbHVhdGVD
b25kaXRpb24oY29udGFpbmVyUXVlcnkuY29uZGl0aW9uLCAqY29udGFpbmVyKSA9PSBNUTo6RXZh
bHVhdGlvblJlc3VsdDo6VHJ1ZTsKKyAgICByZXR1cm4gZXZhbHVhdGVDb25kaXRpb24oY29udGFp
bmVyUXVlcnkuY29uZGl0aW9uLCAqY29udGV4dCkgPT0gTVE6OkV2YWx1YXRpb25SZXN1bHQ6OlRy
dWU7CiB9CiAKLWF1dG8gQ29udGFpbmVyUXVlcnlFdmFsdWF0b3I6OnNlbGVjdENvbnRhaW5lcihj
b25zdCBDUTo6Q29udGFpbmVyUXVlcnkmIGNvbnRhaW5lclF1ZXJ5KSBjb25zdCAtPiBzdGQ6Om9w
dGlvbmFsPFNlbGVjdGVkQ29udGFpbmVyPgorYXV0byBDb250YWluZXJRdWVyeUV2YWx1YXRvcjo6
ZmVhdHVyZUV2YWx1YXRpb25Db250ZXh0Rm9yUXVlcnkoY29uc3QgQ1E6OkNvbnRhaW5lclF1ZXJ5
JiBjb250YWluZXJRdWVyeSkgY29uc3QgLT4gc3RkOjpvcHRpb25hbDxGZWF0dXJlRXZhbHVhdGlv
bkNvbnRleHQ+CiB7CiAgICAgLy8gIkZvciBlYWNoIGVsZW1lbnQsIHRoZSBxdWVyeSBjb250YWlu
ZXIgdG8gYmUgcXVlcmllZCBpcyBzZWxlY3RlZCBmcm9tIGFtb25nIHRoZSBlbGVtZW504oCZcwog
ICAgIC8vIGFuY2VzdG9yIHF1ZXJ5IGNvbnRhaW5lcnMgdGhhdCBoYXZlIGEgdmFsaWQgY29udGFp
bmVyLXR5cGUgZm9yIGFsbCB0aGUgY29udGFpbmVyIGZlYXR1cmVzCkBAIC02OSwyMyArNjQsMjEg
QEAgYXV0byBDb250YWluZXJRdWVyeUV2YWx1YXRvcjo6c2VsZWN0Q29udGFpbmVyKGNvbnN0IENR
OjpDb250YWluZXJRdWVyeSYgY29udGFpbmUKICAgICAvLyBjb25zaWRlcmVkIHRvIGp1c3QgdGhv
c2Ugd2l0aCBhIG1hdGNoaW5nIHF1ZXJ5IGNvbnRhaW5lciBuYW1lLiIKICAgICAvLyBodHRwczov
L2RyYWZ0cy5jc3N3Zy5vcmcvY3NzLWNvbnRhaW4tMy8jY29udGFpbmVyLXJ1bGUKIAotICAgIGF1
dG8gbWFrZVNlbGVjdGVkQ29udGFpbmVyID0gW10oY29uc3QgRWxlbWVudCYgZWxlbWVudCkgLT4g
U2VsZWN0ZWRDb250YWluZXIgewotICAgICAgICBhdXRvKiByZW5kZXJlciA9IGR5bmFtaWNEb3du
Y2FzdDxSZW5kZXJCb3g+KGVsZW1lbnQucmVuZGVyZXIoKSk7Ci0gICAgICAgIGlmICghcmVuZGVy
ZXIpCi0gICAgICAgICAgICByZXR1cm4geyB9OwotICAgICAgICByZXR1cm4gewotICAgICAgICAg
ICAgcmVuZGVyZXIsCi0gICAgICAgICAgICBDU1NUb0xlbmd0aENvbnZlcnNpb25EYXRhIHsgcmVu
ZGVyZXItPnN0eWxlKCksIGVsZW1lbnQuZG9jdW1lbnQoKS5kb2N1bWVudEVsZW1lbnQoKS0+cmVu
ZGVyU3R5bGUoKSwgbnVsbHB0ciwgJnJlbmRlcmVyLT52aWV3KCkgfQotICAgICAgICB9OwotICAg
IH07Ci0KICAgICBhdXRvKiBjYWNoZWRRdWVyeUNvbnRhaW5lcnMgPSBtX3NlbGVjdG9yTWF0Y2hp
bmdTdGF0ZSA/ICZtX3NlbGVjdG9yTWF0Y2hpbmdTdGF0ZS0+cXVlcnlDb250YWluZXJzIDogbnVs
bHB0cjsKIAogICAgIGF1dG8qIGNvbnRhaW5lciA9IHNlbGVjdENvbnRhaW5lcihjb250YWluZXJR
dWVyeS5heGlzRmlsdGVyLCBjb250YWluZXJRdWVyeS5uYW1lLCBtX2VsZW1lbnQuZ2V0KCksIG1f
c2VsZWN0aW9uTW9kZSwgbV9zY29wZU9yZGluYWwsIGNhY2hlZFF1ZXJ5Q29udGFpbmVycyk7CiAg
ICAgaWYgKCFjb250YWluZXIpCiAgICAgICAgIHJldHVybiB7IH07CiAKLSAgICByZXR1cm4gbWFr
ZVNlbGVjdGVkQ29udGFpbmVyKCpjb250YWluZXIpOworICAgIGlmICghY29udGFpbmVyLT5yZW5k
ZXJlcigpKQorICAgICAgICByZXR1cm4gRmVhdHVyZUV2YWx1YXRpb25Db250ZXh0IHsgfTsKKwor
ICAgIGF1dG8mIHJlbmRlcmVyID0gKmNvbnRhaW5lci0+cmVuZGVyZXIoKTsKKworICAgIHJldHVy
biBGZWF0dXJlRXZhbHVhdGlvbkNvbnRleHQgeworICAgICAgICBDU1NUb0xlbmd0aENvbnZlcnNp
b25EYXRhIHsgcmVuZGVyZXIuc3R5bGUoKSwgbV9lbGVtZW50LT5kb2N1bWVudCgpLmRvY3VtZW50
RWxlbWVudCgpLT5yZW5kZXJTdHlsZSgpLCBudWxscHRyLCAmcmVuZGVyZXIudmlldygpIH0sCisg
ICAgICAgICZyZW5kZXJlcgorICAgIH07CiB9CiAKIGNvbnN0IEVsZW1lbnQqIENvbnRhaW5lclF1
ZXJ5RXZhbHVhdG9yOjpzZWxlY3RDb250YWluZXIoT3B0aW9uU2V0PENROjpBeGlzPiBheGVzLCBj
b25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IEVsZW1lbnQmIGVsZW1lbnQsIFNlbGVjdGlvbk1vZGUg
c2VsZWN0aW9uTW9kZSwgU2NvcGVPcmRpbmFsIHNjb3BlT3JkaW5hbCwgY29uc3QgQ2FjaGVkUXVl
cnlDb250YWluZXJzKiBjYWNoZWRRdWVyeUNvbnRhaW5lcnMpCkBAIC0xNjMsMTkgKzE1NiwxOSBA
QCBjb25zdCBFbGVtZW50KiBDb250YWluZXJRdWVyeUV2YWx1YXRvcjo6c2VsZWN0Q29udGFpbmVy
KE9wdGlvblNldDxDUTo6QXhpcz4gYXhlcwogICAgIHJldHVybiB7IH07CiB9CiAKLWF1dG8gQ29u
dGFpbmVyUXVlcnlFdmFsdWF0b3I6OmV2YWx1YXRlRmVhdHVyZShjb25zdCBNUTo6RmVhdHVyZSYg
c2l6ZUZlYXR1cmUsIGNvbnN0IFNlbGVjdGVkQ29udGFpbmVyJiBjb250YWluZXIpIGNvbnN0IC0+
IE1ROjpFdmFsdWF0aW9uUmVzdWx0CithdXRvIENvbnRhaW5lclF1ZXJ5RXZhbHVhdG9yOjpldmFs
dWF0ZUZlYXR1cmUoY29uc3QgTVE6OkZlYXR1cmUmIHNpemVGZWF0dXJlLCBjb25zdCBGZWF0dXJl
RXZhbHVhdGlvbkNvbnRleHQmIGNvbnRleHQpIGNvbnN0IC0+IE1ROjpFdmFsdWF0aW9uUmVzdWx0
CiB7Ci0gICAgaWYgKCFzaXplRmVhdHVyZS52YWxpZFNjaGVtYSkKKyAgICBpZiAoIXNpemVGZWF0
dXJlLnNjaGVtYSkKICAgICAgICAgcmV0dXJuIE1ROjpFdmFsdWF0aW9uUmVzdWx0OjpVbmtub3du
OwogCiAgICAgLy8gIklmIHRoZSBxdWVyeSBjb250YWluZXIgZG9lcyBub3QgaGF2ZSBhIHByaW5j
aXBhbCBib3gsIG9yIHRoZSBwcmluY2lwYWwgYm94IGlzIG5vdCBhIGxheW91dCBjb250YWlubWVu
dCBib3gsCiAgICAgLy8gb3IgdGhlIHF1ZXJ5IGNvbnRhaW5lciBkb2VzIG5vdCBzdXBwb3J0IGNv
bnRhaW5lciBzaXplIHF1ZXJpZXMgb24gdGhlIHJlbGV2YW50IGF4ZXMsIHRoZW4gdGhlIHJlc3Vs
dCBvZgogICAgIC8vIGV2YWx1YXRpbmcgdGhlIHNpemUgZmVhdHVyZSBpcyB1bmtub3duLiIKICAg
ICAvLyBodHRwczovL2RyYWZ0cy5jc3N3Zy5vcmcvY3NzLWNvbnRhaW4tMy8jc2l6ZS1jb250YWlu
ZXIKLSAgICBpZiAoIWNvbnRhaW5lci5yZW5kZXJlcikKKyAgICBpZiAoIWlzPFJlbmRlckJveD4o
Y29udGV4dC5yZW5kZXJlcikpCiAgICAgICAgIHJldHVybiBNUTo6RXZhbHVhdGlvblJlc3VsdDo6
VW5rbm93bjsKIAotICAgIGF1dG8mIHJlbmRlcmVyID0gKmNvbnRhaW5lci5yZW5kZXJlcjsKKyAg
ICBhdXRvJiByZW5kZXJlciA9IGRvd25jYXN0PFJlbmRlckJveD4oKmNvbnRleHQucmVuZGVyZXIp
OwogCiAgICAgYXV0byBoYXNFbGlnaWJsZUNvbnRhaW5tZW50ID0gWyZdIHsKICAgICAgICAgaWYg
KCFyZW5kZXJlci5zaG91bGRBcHBseUxheW91dENvbnRhaW5tZW50KCkpCkBAIC0xOTQsMjQgKzE4
NywyNCBAQCBhdXRvIENvbnRhaW5lclF1ZXJ5RXZhbHVhdG9yOjpldmFsdWF0ZUZlYXR1cmUoY29u
c3QgTVE6OkZlYXR1cmUmIHNpemVGZWF0dXJlLCBjbwogICAgIGlmICghaGFzRWxpZ2libGVDb250
YWlubWVudCgpKQogICAgICAgICByZXR1cm4gTVE6OkV2YWx1YXRpb25SZXN1bHQ6OlVua25vd247
CiAKLSAgICBpZiAoc2l6ZUZlYXR1cmUubmFtZSA9PSBDUTo6RmVhdHVyZU5hbWVzOjp3aWR0aCgp
KQotICAgICAgICByZXR1cm4gZXZhbHVhdGVMZW5ndGhGZWF0dXJlKHNpemVGZWF0dXJlLCByZW5k
ZXJlci5jb250ZW50V2lkdGgoKSwgY29udGFpbmVyLmNvbnZlcnNpb25EYXRhKTsKKyAgICBpZiAo
c2l6ZUZlYXR1cmUuc2NoZW1hID09ICZDUTo6RmVhdHVyZVNjaGVtYXM6OndpZHRoKCkpCisgICAg
ICAgIHJldHVybiBldmFsdWF0ZUxlbmd0aEZlYXR1cmUoc2l6ZUZlYXR1cmUsIHJlbmRlcmVyLmNv
bnRlbnRXaWR0aCgpLCBjb250ZXh0LmNvbnZlcnNpb25EYXRhKTsKIAotICAgIGlmIChzaXplRmVh
dHVyZS5uYW1lID09IENROjpGZWF0dXJlTmFtZXM6OmhlaWdodCgpKQotICAgICAgICByZXR1cm4g
ZXZhbHVhdGVMZW5ndGhGZWF0dXJlKHNpemVGZWF0dXJlLCByZW5kZXJlci5jb250ZW50SGVpZ2h0
KCksIGNvbnRhaW5lci5jb252ZXJzaW9uRGF0YSk7CisgICAgaWYgKHNpemVGZWF0dXJlLnNjaGVt
YSA9PSAmQ1E6OkZlYXR1cmVTY2hlbWFzOjpoZWlnaHQoKSkKKyAgICAgICAgcmV0dXJuIGV2YWx1
YXRlTGVuZ3RoRmVhdHVyZShzaXplRmVhdHVyZSwgcmVuZGVyZXIuY29udGVudEhlaWdodCgpLCBj
b250ZXh0LmNvbnZlcnNpb25EYXRhKTsKIAotICAgIGlmIChzaXplRmVhdHVyZS5uYW1lID09IENR
OjpGZWF0dXJlTmFtZXM6OmlubGluZVNpemUoKSkKLSAgICAgICAgcmV0dXJuIGV2YWx1YXRlTGVu
Z3RoRmVhdHVyZShzaXplRmVhdHVyZSwgcmVuZGVyZXIuY29udGVudExvZ2ljYWxXaWR0aCgpLCBj
b250YWluZXIuY29udmVyc2lvbkRhdGEpOworICAgIGlmIChzaXplRmVhdHVyZS5zY2hlbWEgPT0g
JkNROjpGZWF0dXJlU2NoZW1hczo6aW5saW5lU2l6ZSgpKQorICAgICAgICByZXR1cm4gZXZhbHVh
dGVMZW5ndGhGZWF0dXJlKHNpemVGZWF0dXJlLCByZW5kZXJlci5jb250ZW50TG9naWNhbFdpZHRo
KCksIGNvbnRleHQuY29udmVyc2lvbkRhdGEpOwogCi0gICAgaWYgKHNpemVGZWF0dXJlLm5hbWUg
PT0gQ1E6OkZlYXR1cmVOYW1lczo6YmxvY2tTaXplKCkpCi0gICAgICAgIHJldHVybiBldmFsdWF0
ZUxlbmd0aEZlYXR1cmUoc2l6ZUZlYXR1cmUsIHJlbmRlcmVyLmNvbnRlbnRMb2dpY2FsSGVpZ2h0
KCksIGNvbnRhaW5lci5jb252ZXJzaW9uRGF0YSk7CisgICAgaWYgKHNpemVGZWF0dXJlLnNjaGVt
YSA9PSAmQ1E6OkZlYXR1cmVTY2hlbWFzOjpibG9ja1NpemUoKSkKKyAgICAgICAgcmV0dXJuIGV2
YWx1YXRlTGVuZ3RoRmVhdHVyZShzaXplRmVhdHVyZSwgcmVuZGVyZXIuY29udGVudExvZ2ljYWxI
ZWlnaHQoKSwgY29udGV4dC5jb252ZXJzaW9uRGF0YSk7CiAKLSAgICBpZiAoc2l6ZUZlYXR1cmUu
bmFtZSA9PSBDUTo6RmVhdHVyZU5hbWVzOjphc3BlY3RSYXRpbygpKSB7CisgICAgaWYgKHNpemVG
ZWF0dXJlLnNjaGVtYSA9PSAmQ1E6OkZlYXR1cmVTY2hlbWFzOjphc3BlY3RSYXRpbygpKSB7CiAg
ICAgICAgIGF1dG8gYm94UmF0aW8gPSByZW5kZXJlci5jb250ZW50V2lkdGgoKS50b0RvdWJsZSgp
IC8gcmVuZGVyZXIuY29udGVudEhlaWdodCgpLnRvRG91YmxlKCk7CiAgICAgICAgIHJldHVybiBl
dmFsdWF0ZVJhdGlvRmVhdHVyZShzaXplRmVhdHVyZSwgYm94UmF0aW8pOwogICAgIH0KIAotICAg
IGlmIChzaXplRmVhdHVyZS5uYW1lID09IENROjpGZWF0dXJlTmFtZXM6Om9yaWVudGF0aW9uKCkp
IHsKKyAgICBpZiAoc2l6ZUZlYXR1cmUuc2NoZW1hID09ICZDUTo6RmVhdHVyZVNjaGVtYXM6Om9y
aWVudGF0aW9uKCkpIHsKICAgICAgICAgYm9vbCBpc1BvcnRyYWl0ID0gcmVuZGVyZXIuY29udGVu
dEhlaWdodCgpID49IHJlbmRlcmVyLmNvbnRlbnRXaWR0aCgpOwogICAgICAgICByZXR1cm4gZXZh
bHVhdGVEaXNjcmV0ZUZlYXR1cmUoc2l6ZUZlYXR1cmUsIGlzUG9ydHJhaXQgPyBDU1NWYWx1ZVBv
cnRyYWl0IDogQ1NTVmFsdWVMYW5kc2NhcGUpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3N0eWxlL0NvbnRhaW5lclF1ZXJ5RXZhbHVhdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9z
dHlsZS9Db250YWluZXJRdWVyeUV2YWx1YXRvci5oCmluZGV4IDQzMWM5MTJiMDJkYy4uMTc4YWY4
NTFhMTcyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9Db250YWluZXJRdWVyeUV2
YWx1YXRvci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N0eWxlL0NvbnRhaW5lclF1ZXJ5RXZhbHVh
dG9yLmgKQEAgLTQ1LDExICs0NSwxMCBAQCBwdWJsaWM6CiAKICAgICBzdGF0aWMgY29uc3QgRWxl
bWVudCogc2VsZWN0Q29udGFpbmVyKE9wdGlvblNldDxDUTo6QXhpcz4sIGNvbnN0IFN0cmluZyYg
bmFtZSwgY29uc3QgRWxlbWVudCYsIFNlbGVjdGlvbk1vZGUgPSBTZWxlY3Rpb25Nb2RlOjpFbGVt
ZW50LCBTY29wZU9yZGluYWwgPSBTY29wZU9yZGluYWw6OkVsZW1lbnQsIGNvbnN0IENhY2hlZFF1
ZXJ5Q29udGFpbmVycyogPSBudWxscHRyKTsKIAotICAgIHN0cnVjdCBTZWxlY3RlZENvbnRhaW5l
cjsKLSAgICBNUTo6RXZhbHVhdGlvblJlc3VsdCBldmFsdWF0ZUZlYXR1cmUoY29uc3QgTVE6OkZl
YXR1cmUmLCBjb25zdCBTZWxlY3RlZENvbnRhaW5lciYpIGNvbnN0OworICAgIE1ROjpFdmFsdWF0
aW9uUmVzdWx0IGV2YWx1YXRlRmVhdHVyZShjb25zdCBNUTo6RmVhdHVyZSYsIGNvbnN0IEZlYXR1
cmVFdmFsdWF0aW9uQ29udGV4dCYpIGNvbnN0OwogCiBwcml2YXRlOgotICAgIHN0ZDo6b3B0aW9u
YWw8U2VsZWN0ZWRDb250YWluZXI+IHNlbGVjdENvbnRhaW5lcihjb25zdCBDUTo6Q29udGFpbmVy
UXVlcnkmKSBjb25zdDsKKyAgICBzdGQ6Om9wdGlvbmFsPEZlYXR1cmVFdmFsdWF0aW9uQ29udGV4
dD4gZmVhdHVyZUV2YWx1YXRpb25Db250ZXh0Rm9yUXVlcnkoY29uc3QgQ1E6OkNvbnRhaW5lclF1
ZXJ5JikgY29uc3Q7CiAKICAgICBjb25zdCBSZWY8Y29uc3QgRWxlbWVudD4gbV9lbGVtZW50Owog
ICAgIGNvbnN0IFNlbGVjdGlvbk1vZGUgbV9zZWxlY3Rpb25Nb2RlOwo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>463138</attachid>
            <date>2022-10-21 00:48:10 -0700</date>
            <delta_ts>2022-10-21 02:02:45 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-246804-20221021104808.patch</filename>
            <type>text/plain</type>
            <size>32126</size>
            <attacher name="Antti Koivisto">koivisto</attacher>
            
              <data encoding="base64">RnJvbSAyNmY4MTUyZjIwMTI2Mzg3MmUwZjc1NjgzYzVmODYxM2JkMmFjZjhhIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBBbnR0aSBLb2l2aXN0byA8YW50dGlAYXBwbGUuY29tPgpEYXRl
OiBUaHUsIDIwIE9jdCAyMDIyIDE3OjMwOjA4ICswMzAwClN1YmplY3Q6IFtQQVRDSF0gW01RNF0g
VXNlIEZlYXR1cmVTY2hlbWEgbW9yZQogaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTI0NjgwNCA8cmRhcjovL3Byb2JsZW0vMTAxMzgxNjU5PgoKUmV2aWV3ZWQgYnkgQWxh
biBCdWp0YXMuCgpNb3ZlIEZlYXR1cmVTY2hlbWFzIG91dCBvZiB0aGUgcGFyc2VyIGFuZCB1c2Ug
dGhlbSBpbnN0ZWFkIG9mIGZlYXR1cmUgbmFtZSBzdHJpbmdzIGluIGNvbXBhcmlzb25zLgpBbHNv
IHJlbW92ZSBhbiB1bm5lZWVkZWQgdGVtcGxhdGUgYXJndW1lbnQgYW5kIGJhc2UgY2xhc3MgZnJv
bSBFdmFsdWF0b3IuCgoqIFNvdXJjZS9XZWJDb3JlL2Nzcy9Db250YWluZXJRdWVyeS5jcHA6CihX
ZWJDb3JlOjpDUTo6RmVhdHVyZVNjaGVtYXM6OndpZHRoKToKKFdlYkNvcmU6OkNROjpGZWF0dXJl
U2NoZW1hczo6aGVpZ2h0KToKKFdlYkNvcmU6OkNROjpGZWF0dXJlU2NoZW1hczo6aW5saW5lU2l6
ZSk6CihXZWJDb3JlOjpDUTo6RmVhdHVyZVNjaGVtYXM6OmJsb2NrU2l6ZSk6CihXZWJDb3JlOjpD
UTo6RmVhdHVyZVNjaGVtYXM6OmFzcGVjdFJhdGlvKToKKFdlYkNvcmU6OkNROjpGZWF0dXJlU2No
ZW1hczo6b3JpZW50YXRpb24pOgooV2ViQ29yZTo6Q1E6OnJlcXVpcmVkQXhlc0ZvckZlYXR1cmUp
OgooV2ViQ29yZTo6Q1E6OkZlYXR1cmVOYW1lczo6d2lkdGgpOiBEZWxldGVkLgooV2ViQ29yZTo6
Q1E6OkZlYXR1cmVOYW1lczo6aGVpZ2h0KTogRGVsZXRlZC4KKFdlYkNvcmU6OkNROjpGZWF0dXJl
TmFtZXM6OmlubGluZVNpemUpOiBEZWxldGVkLgooV2ViQ29yZTo6Q1E6OkZlYXR1cmVOYW1lczo6
YmxvY2tTaXplKTogRGVsZXRlZC4KKFdlYkNvcmU6OkNROjpGZWF0dXJlTmFtZXM6OmFzcGVjdFJh
dGlvKTogRGVsZXRlZC4KKFdlYkNvcmU6OkNROjpGZWF0dXJlTmFtZXM6Om9yaWVudGF0aW9uKTog
RGVsZXRlZC4KKiBTb3VyY2UvV2ViQ29yZS9jc3MvQ29udGFpbmVyUXVlcnkuaDoKKiBTb3VyY2Uv
V2ViQ29yZS9jc3MvQ29udGFpbmVyUXVlcnlQYXJzZXIuY3BwOgooV2ViQ29yZTo6Q29udGFpbmVy
UXVlcnlQYXJzZXI6OmZlYXR1cmVTY2hlbWFzKTogRGVsZXRlZC4KKiBTb3VyY2UvV2ViQ29yZS9j
c3MvQ29udGFpbmVyUXVlcnlQYXJzZXIuaDoKKiBTb3VyY2UvV2ViQ29yZS9jc3MvcXVlcnkvR2Vu
ZXJpY01lZGlhUXVlcnlFdmFsdWF0b3IuY3BwOgooV2ViQ29yZTo6TVE6OmV2YWx1YXRlTGVuZ3Ro
RmVhdHVyZSk6CihXZWJDb3JlOjpNUTo6ZXZhbHVhdGVSYXRpb0ZlYXR1cmUpOgooV2ViQ29yZTo6
TVE6OmV2YWx1YXRlRGlzY3JldGVGZWF0dXJlKToKKFdlYkNvcmU6Ok1ROjpHZW5lcmljTWVkaWFR
dWVyeUV2YWx1YXRvckJhc2U6OmV2YWx1YXRlTGVuZ3RoRmVhdHVyZSBjb25zdCk6IERlbGV0ZWQu
CihXZWJDb3JlOjpNUTo6R2VuZXJpY01lZGlhUXVlcnlFdmFsdWF0b3JCYXNlOjpldmFsdWF0ZVJh
dGlvRmVhdHVyZSBjb25zdCk6IERlbGV0ZWQuCihXZWJDb3JlOjpNUTo6R2VuZXJpY01lZGlhUXVl
cnlFdmFsdWF0b3JCYXNlOjpldmFsdWF0ZURpc2NyZXRlRmVhdHVyZSBjb25zdCk6IERlbGV0ZWQu
CiogU291cmNlL1dlYkNvcmUvY3NzL3F1ZXJ5L0dlbmVyaWNNZWRpYVF1ZXJ5RXZhbHVhdG9yLmg6
CihXZWJDb3JlOjpNUTo6R2VuZXJpY01lZGlhUXVlcnlFdmFsdWF0b3I8Q29uY3JldGVFdmFsdWF0
b3I+OjpldmFsdWF0ZVF1ZXJ5SW5QYXJlbnMgY29uc3QpOgooV2ViQ29yZTo6TVE6OkdlbmVyaWNN
ZWRpYVF1ZXJ5RXZhbHVhdG9yPENvbmNyZXRlRXZhbHVhdG9yPjo6ZXZhbHVhdGVDb25kaXRpb24g
Y29uc3QpOgoqIFNvdXJjZS9XZWJDb3JlL2Nzcy9xdWVyeS9HZW5lcmljTWVkaWFRdWVyeVBhcnNl
ci5jcHA6CihXZWJDb3JlOjpNUTo6R2VuZXJpY01lZGlhUXVlcnlQYXJzZXJCYXNlOjp2YWxpZGF0
ZUZlYXR1cmVBZ2FpbnN0U2NoZW1hKToKKiBTb3VyY2UvV2ViQ29yZS9jc3MvcXVlcnkvR2VuZXJp
Y01lZGlhUXVlcnlQYXJzZXIuaDoKKFdlYkNvcmU6Ok1ROjpHZW5lcmljTWVkaWFRdWVyeVBhcnNl
cjxDb25jcmV0ZVBhcnNlcj46OnNjaGVtYUZvckZlYXR1cmVOYW1lIGNvbnN0KToKKiBTb3VyY2Uv
V2ViQ29yZS9jc3MvcXVlcnkvR2VuZXJpY01lZGlhUXVlcnlUeXBlcy5oOgoqIFNvdXJjZS9XZWJD
b3JlL2Nzcy9xdWVyeS9NZWRpYVF1ZXJ5RXZhbHVhdG9yLmNwcDoKKFdlYkNvcmU6Ok1ROjpNZWRp
YVF1ZXJ5RXZhbHVhdG9yOjpNZWRpYVF1ZXJ5RXZhbHVhdG9yKToKKFdlYkNvcmU6Ok1ROjpNZWRp
YVF1ZXJ5RXZhbHVhdG9yOjpldmFsdWF0ZSBjb25zdCk6CihXZWJDb3JlOjpNUTo6TWVkaWFRdWVy
eUV2YWx1YXRvcjo6ZXZhbHVhdGVGZWF0dXJlIGNvbnN0KToKKiBTb3VyY2UvV2ViQ29yZS9jc3Mv
cXVlcnkvTWVkaWFRdWVyeUV2YWx1YXRvci5oOgoqIFNvdXJjZS9XZWJDb3JlL2Nzcy9xdWVyeS9N
ZWRpYVF1ZXJ5UGFyc2VyLmNwcDoKKFdlYkNvcmU6Ok1ROjpNZWRpYVF1ZXJ5UGFyc2VyOjpmZWF0
dXJlU2NoZW1hcyk6IERlbGV0ZWQuCiogU291cmNlL1dlYkNvcmUvY3NzL3F1ZXJ5L01lZGlhUXVl
cnlQYXJzZXIuaDoKKiBTb3VyY2UvV2ViQ29yZS9zdHlsZS9Db250YWluZXJRdWVyeUV2YWx1YXRv
ci5jcHA6CihXZWJDb3JlOjpTdHlsZTo6Q29udGFpbmVyUXVlcnlFdmFsdWF0b3I6OmV2YWx1YXRl
IGNvbnN0KToKKFdlYkNvcmU6OlN0eWxlOjpDb250YWluZXJRdWVyeUV2YWx1YXRvcjo6ZmVhdHVy
ZUV2YWx1YXRpb25Db250ZXh0Rm9yUXVlcnkgY29uc3QpOgooV2ViQ29yZTo6U3R5bGU6OkNvbnRh
aW5lclF1ZXJ5RXZhbHVhdG9yOjpldmFsdWF0ZUZlYXR1cmUgY29uc3QpOgooKTogRGVsZXRlZC4K
KFdlYkNvcmU6OlN0eWxlOjpDb250YWluZXJRdWVyeUV2YWx1YXRvcjo6c2VsZWN0Q29udGFpbmVy
IGNvbnN0KTogRGVsZXRlZC4KKiBTb3VyY2UvV2ViQ29yZS9zdHlsZS9Db250YWluZXJRdWVyeUV2
YWx1YXRvci5oOgotLS0KIFNvdXJjZS9XZWJDb3JlL2Nzcy9Db250YWluZXJRdWVyeS5jcHAgICAg
ICAgICB8IDUyICsrKysrKysrLS0tLS0tLS0KIFNvdXJjZS9XZWJDb3JlL2Nzcy9Db250YWluZXJR
dWVyeS5oICAgICAgICAgICB8IDE2ICsrLS0tCiBTb3VyY2UvV2ViQ29yZS9jc3MvQ29udGFpbmVy
UXVlcnlQYXJzZXIuY3BwICAgfCAxNiArKy0tLQogU291cmNlL1dlYkNvcmUvY3NzL0NvbnRhaW5l
clF1ZXJ5UGFyc2VyLmggICAgIHwgIDIgKy0KIC4uLi9jc3MvcXVlcnkvR2VuZXJpY01lZGlhUXVl
cnlFdmFsdWF0b3IuY3BwICB8ICA2ICstCiAuLi4vY3NzL3F1ZXJ5L0dlbmVyaWNNZWRpYVF1ZXJ5
RXZhbHVhdG9yLmggICAgfCAyOCArKysrLS0tLS0KIC4uLi9jc3MvcXVlcnkvR2VuZXJpY01lZGlh
UXVlcnlQYXJzZXIuY3BwICAgICB8ICAyICstCiAuLi4vY3NzL3F1ZXJ5L0dlbmVyaWNNZWRpYVF1
ZXJ5UGFyc2VyLmggICAgICAgfCAyNyArKysrKy0tLQogLi4uL2Nzcy9xdWVyeS9HZW5lcmljTWVk
aWFRdWVyeVR5cGVzLmggICAgICAgIHwgIDQgKy0KIC4uLi9XZWJDb3JlL2Nzcy9xdWVyeS9NZWRp
YVF1ZXJ5RXZhbHVhdG9yLmNwcCB8ICA5ICsrLQogLi4uL1dlYkNvcmUvY3NzL3F1ZXJ5L01lZGlh
UXVlcnlFdmFsdWF0b3IuaCAgIHwgIDggKy0tCiBTb3VyY2UvV2ViQ29yZS9jc3MvcXVlcnkvTWVk
aWFRdWVyeVBhcnNlci5jcHAgfCAxMyArKy0tCiBTb3VyY2UvV2ViQ29yZS9jc3MvcXVlcnkvTWVk
aWFRdWVyeVBhcnNlci5oICAgfCAgMiArLQogLi4uL1dlYkNvcmUvc3R5bGUvQ29udGFpbmVyUXVl
cnlFdmFsdWF0b3IuY3BwIHwgNjEgKysrKysrKystLS0tLS0tLS0tLQogLi4uL1dlYkNvcmUvc3R5
bGUvQ29udGFpbmVyUXVlcnlFdmFsdWF0b3IuaCAgIHwgIDUgKy0KIDE1IGZpbGVzIGNoYW5nZWQs
IDEyNyBpbnNlcnRpb25zKCspLCAxMjQgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvY3NzL0NvbnRhaW5lclF1ZXJ5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9Db250
YWluZXJRdWVyeS5jcHAKaW5kZXggMGYwOGU0YzIwOGI2Li41ZTkxNDc4ZTRlN2QgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9Db250YWluZXJRdWVyeS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvY3NzL0NvbnRhaW5lclF1ZXJ5LmNwcApAQCAtMzMsNTcgKzMzLDU5IEBACiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIG5hbWVzcGFjZSBDUSB7Ci1uYW1lc3BhY2UgRmVhdHVyZU5hbWVzIHsK
K25hbWVzcGFjZSBGZWF0dXJlU2NoZW1hcyB7CiAKLWNvbnN0IEF0b21TdHJpbmcmIHdpZHRoKCkK
K3VzaW5nIG5hbWVzcGFjZSBNUTsKKworY29uc3QgRmVhdHVyZVNjaGVtYSYgd2lkdGgoKQogewot
ICAgIHN0YXRpYyBNYWluVGhyZWFkTmV2ZXJEZXN0cm95ZWQ8QXRvbVN0cmluZz4gbmFtZSB7ICJ3
aWR0aCJfcyB9OwotICAgIHJldHVybiBuYW1lOworICAgIHN0YXRpYyBNYWluVGhyZWFkTmV2ZXJE
ZXN0cm95ZWQ8RmVhdHVyZVNjaGVtYT4gc2NoZW1hIHsgRmVhdHVyZVNjaGVtYSB7ICJ3aWR0aCJf
cywgRmVhdHVyZVNjaGVtYTo6VHlwZTo6UmFuZ2UsIHsgRmVhdHVyZVNjaGVtYTo6VmFsdWVUeXBl
OjpMZW5ndGggfSwgeyB9IH0gfTsKKyAgICByZXR1cm4gc2NoZW1hOwogfQogCi1jb25zdCBBdG9t
U3RyaW5nJiBoZWlnaHQoKQorY29uc3QgRmVhdHVyZVNjaGVtYSYgaGVpZ2h0KCkKIHsKLSAgICBz
dGF0aWMgTWFpblRocmVhZE5ldmVyRGVzdHJveWVkPEF0b21TdHJpbmc+IG5hbWUgeyAiaGVpZ2h0
Il9zIH07Ci0gICAgcmV0dXJuIG5hbWU7CisgICAgc3RhdGljIE1haW5UaHJlYWROZXZlckRlc3Ry
b3llZDxGZWF0dXJlU2NoZW1hPiBzY2hlbWEgeyBGZWF0dXJlU2NoZW1hIHsgImhlaWdodCJfcywg
RmVhdHVyZVNjaGVtYTo6VHlwZTo6UmFuZ2UsIHsgRmVhdHVyZVNjaGVtYTo6VmFsdWVUeXBlOjpM
ZW5ndGggfSwgeyB9IH0gfTsKKyAgICByZXR1cm4gc2NoZW1hOwogfQogCi1jb25zdCBBdG9tU3Ry
aW5nJiBpbmxpbmVTaXplKCkKK2NvbnN0IEZlYXR1cmVTY2hlbWEmIGlubGluZVNpemUoKQogewot
ICAgIHN0YXRpYyBNYWluVGhyZWFkTmV2ZXJEZXN0cm95ZWQ8QXRvbVN0cmluZz4gbmFtZSB7ICJp
bmxpbmUtc2l6ZSJfcyB9OwotICAgIHJldHVybiBuYW1lOworICAgIHN0YXRpYyBNYWluVGhyZWFk
TmV2ZXJEZXN0cm95ZWQ8RmVhdHVyZVNjaGVtYT4gc2NoZW1hIHsgRmVhdHVyZVNjaGVtYSB7ICJp
bmxpbmUtc2l6ZSJfcywgRmVhdHVyZVNjaGVtYTo6VHlwZTo6UmFuZ2UsIHsgRmVhdHVyZVNjaGVt
YTo6VmFsdWVUeXBlOjpMZW5ndGggfSwgeyB9IH0gfTsKKyAgICByZXR1cm4gc2NoZW1hOwogfQog
Ci1jb25zdCBBdG9tU3RyaW5nJiBibG9ja1NpemUoKQorY29uc3QgRmVhdHVyZVNjaGVtYSYgYmxv
Y2tTaXplKCkKIHsKLSAgICBzdGF0aWMgTWFpblRocmVhZE5ldmVyRGVzdHJveWVkPEF0b21TdHJp
bmc+IG5hbWUgeyAiYmxvY2stc2l6ZSJfcyB9OwotICAgIHJldHVybiBuYW1lOworICAgIHN0YXRp
YyBNYWluVGhyZWFkTmV2ZXJEZXN0cm95ZWQ8RmVhdHVyZVNjaGVtYT4gc2NoZW1hIHsgRmVhdHVy
ZVNjaGVtYSB7ICJibG9jay1zaXplIl9zLCBGZWF0dXJlU2NoZW1hOjpUeXBlOjpSYW5nZSwgeyBG
ZWF0dXJlU2NoZW1hOjpWYWx1ZVR5cGU6Okxlbmd0aCB9LCB7IH0gfSB9OworICAgIHJldHVybiBz
Y2hlbWE7CiB9CiAKLWNvbnN0IEF0b21TdHJpbmcmIGFzcGVjdFJhdGlvKCkKK2NvbnN0IEZlYXR1
cmVTY2hlbWEmIGFzcGVjdFJhdGlvKCkKIHsKLSAgICBzdGF0aWMgTWFpblRocmVhZE5ldmVyRGVz
dHJveWVkPEF0b21TdHJpbmc+IG5hbWUgeyAiYXNwZWN0LXJhdGlvIl9zIH07Ci0gICAgcmV0dXJu
IG5hbWU7CisgICAgc3RhdGljIE1haW5UaHJlYWROZXZlckRlc3Ryb3llZDxGZWF0dXJlU2NoZW1h
PiBzY2hlbWEgeyBGZWF0dXJlU2NoZW1hIHsgImFzcGVjdC1yYXRpbyJfcywgRmVhdHVyZVNjaGVt
YTo6VHlwZTo6UmFuZ2UsIHsgRmVhdHVyZVNjaGVtYTo6VmFsdWVUeXBlOjpSYXRpbyB9LCB7IH0g
fSB9OworICAgIHJldHVybiBzY2hlbWE7CiB9CiAKLWNvbnN0IEF0b21TdHJpbmcmIG9yaWVudGF0
aW9uKCkKK2NvbnN0IEZlYXR1cmVTY2hlbWEmIG9yaWVudGF0aW9uKCkKIHsKLSAgICBzdGF0aWMg
TWFpblRocmVhZE5ldmVyRGVzdHJveWVkPEF0b21TdHJpbmc+IG5hbWUgeyAib3JpZW50YXRpb24i
X3MgfTsKLSAgICByZXR1cm4gbmFtZTsKKyAgICBzdGF0aWMgTWFpblRocmVhZE5ldmVyRGVzdHJv
eWVkPEZlYXR1cmVTY2hlbWE+IHNjaGVtYSB7IEZlYXR1cmVTY2hlbWEgeyAib3JpZW50YXRpb24i
X3MsIEZlYXR1cmVTY2hlbWE6OlR5cGU6OkRpc2NyZXRlLCB7IH0sIHsgQ1NTVmFsdWVQb3J0cmFp
dCwgQ1NTVmFsdWVMYW5kc2NhcGUgfSB9IH07CisgICAgcmV0dXJuIHNjaGVtYTsKIH0KIAogfQog
Ci1PcHRpb25TZXQ8QXhpcz4gcmVxdWlyZWRBeGVzRm9yRmVhdHVyZShjb25zdCBBdG9tU3RyaW5n
JiBmZWF0dXJlTmFtZSkKK09wdGlvblNldDxBeGlzPiByZXF1aXJlZEF4ZXNGb3JGZWF0dXJlKGNv
bnN0IE1ROjpGZWF0dXJlJiBmZWF0dXJlKQogewotICAgIGlmIChmZWF0dXJlTmFtZSA9PSBGZWF0
dXJlTmFtZXM6OndpZHRoKCkpCisgICAgaWYgKGZlYXR1cmUuc2NoZW1hID09ICZGZWF0dXJlU2No
ZW1hczo6d2lkdGgoKSkKICAgICAgICAgcmV0dXJuIHsgQXhpczo6V2lkdGggfTsKLSAgICBpZiAo
ZmVhdHVyZU5hbWUgPT0gRmVhdHVyZU5hbWVzOjpoZWlnaHQoKSkKKyAgICBpZiAoZmVhdHVyZS5z
Y2hlbWEgPT0gJkZlYXR1cmVTY2hlbWFzOjpoZWlnaHQoKSkKICAgICAgICAgcmV0dXJuIHsgQXhp
czo6SGVpZ2h0IH07Ci0gICAgaWYgKGZlYXR1cmVOYW1lID09IEZlYXR1cmVOYW1lczo6aW5saW5l
U2l6ZSgpKQorICAgIGlmIChmZWF0dXJlLnNjaGVtYSA9PSAmRmVhdHVyZVNjaGVtYXM6OmlubGlu
ZVNpemUoKSkKICAgICAgICAgcmV0dXJuIHsgQXhpczo6SW5saW5lIH07Ci0gICAgaWYgKGZlYXR1
cmVOYW1lID09IEZlYXR1cmVOYW1lczo6YmxvY2tTaXplKCkpCisgICAgaWYgKGZlYXR1cmUuc2No
ZW1hID09ICZGZWF0dXJlU2NoZW1hczo6YmxvY2tTaXplKCkpCiAgICAgICAgIHJldHVybiB7IEF4
aXM6OkJsb2NrIH07Ci0gICAgaWYgKGZlYXR1cmVOYW1lID09IEZlYXR1cmVOYW1lczo6YXNwZWN0
UmF0aW8oKSB8fCBmZWF0dXJlTmFtZSA9PSBGZWF0dXJlTmFtZXM6Om9yaWVudGF0aW9uKCkpCisg
ICAgaWYgKGZlYXR1cmUuc2NoZW1hID09ICZGZWF0dXJlU2NoZW1hczo6YXNwZWN0UmF0aW8oKSB8
fCBmZWF0dXJlLnNjaGVtYSA9PSAmRmVhdHVyZVNjaGVtYXM6Om9yaWVudGF0aW9uKCkpCiAgICAg
ICAgIHJldHVybiB7IEF4aXM6OklubGluZSwgQXhpczo6QmxvY2sgfTsKICAgICByZXR1cm4geyB9
OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NvbnRhaW5lclF1ZXJ5LmggYi9T
b3VyY2UvV2ViQ29yZS9jc3MvQ29udGFpbmVyUXVlcnkuaAppbmRleCA2NjY2OWY4ZjJjODUuLjM0
NjIyZDRmNDRmZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NvbnRhaW5lclF1ZXJ5
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NvbnRhaW5lclF1ZXJ5LmgKQEAgLTM2LDEzICsz
NiwxMyBAQCBjbGFzcyBFbGVtZW50OwogCiBuYW1lc3BhY2UgQ1EgewogCi1uYW1lc3BhY2UgRmVh
dHVyZU5hbWVzIHsKLWNvbnN0IEF0b21TdHJpbmcmIHdpZHRoKCk7Ci1jb25zdCBBdG9tU3RyaW5n
JiBoZWlnaHQoKTsKLWNvbnN0IEF0b21TdHJpbmcmIGlubGluZVNpemUoKTsKLWNvbnN0IEF0b21T
dHJpbmcmIGJsb2NrU2l6ZSgpOwotY29uc3QgQXRvbVN0cmluZyYgYXNwZWN0UmF0aW8oKTsKLWNv
bnN0IEF0b21TdHJpbmcmIG9yaWVudGF0aW9uKCk7CituYW1lc3BhY2UgRmVhdHVyZVNjaGVtYXMg
eworY29uc3QgTVE6OkZlYXR1cmVTY2hlbWEmIHdpZHRoKCk7Citjb25zdCBNUTo6RmVhdHVyZVNj
aGVtYSYgaGVpZ2h0KCk7Citjb25zdCBNUTo6RmVhdHVyZVNjaGVtYSYgaW5saW5lU2l6ZSgpOwor
Y29uc3QgTVE6OkZlYXR1cmVTY2hlbWEmIGJsb2NrU2l6ZSgpOworY29uc3QgTVE6OkZlYXR1cmVT
Y2hlbWEmIGFzcGVjdFJhdGlvKCk7Citjb25zdCBNUTo6RmVhdHVyZVNjaGVtYSYgb3JpZW50YXRp
b24oKTsKIH07CiAKIGVudW0gY2xhc3MgQXhpcyA6IHVpbnQ4X3QgewpAQCAtNTEsNyArNTEsNyBA
QCBlbnVtIGNsYXNzIEF4aXMgOiB1aW50OF90IHsKICAgICBXaWR0aCAgID0gMSA8PCAyLAogICAg
IEhlaWdodCAgPSAxIDw8IDMsCiB9OwotT3B0aW9uU2V0PEF4aXM+IHJlcXVpcmVkQXhlc0ZvckZl
YXR1cmUoY29uc3QgQXRvbVN0cmluZyYpOworT3B0aW9uU2V0PEF4aXM+IHJlcXVpcmVkQXhlc0Zv
ckZlYXR1cmUoY29uc3QgTVE6OkZlYXR1cmUmKTsKIAogc3RydWN0IENvbnRhaW5lclF1ZXJ5IHsK
ICAgICBBdG9tU3RyaW5nIG5hbWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ29u
dGFpbmVyUXVlcnlQYXJzZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0NvbnRhaW5lclF1ZXJ5
UGFyc2VyLmNwcAppbmRleCA5YWRhMGU4ZDQ3YTUuLmI1NzlhOTAwZjE4NyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvY3NzL0NvbnRhaW5lclF1ZXJ5UGFyc2VyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9jc3MvQ29udGFpbmVyUXVlcnlQYXJzZXIuY3BwCkBAIC0zMiwxNSArMzIsMTUgQEAg
bmFtZXNwYWNlIFdlYkNvcmUgewogCiB1c2luZyBuYW1lc3BhY2UgTVE7CiAKLVZlY3RvcjxNUTo6
RmVhdHVyZVNjaGVtYT4gQ29udGFpbmVyUXVlcnlQYXJzZXI6OmZlYXR1cmVTY2hlbWFzKCkKK1Zl
Y3Rvcjxjb25zdCBGZWF0dXJlU2NoZW1hKj4gQ29udGFpbmVyUXVlcnlQYXJzZXI6OmZlYXR1cmVT
Y2hlbWFzKCkKIHsKICAgICByZXR1cm4gewotICAgICAgICB7ICJ3aWR0aCJfcywgRmVhdHVyZVNj
aGVtYTo6VHlwZTo6UmFuZ2UsIHsgRmVhdHVyZVNjaGVtYTo6VmFsdWVUeXBlOjpMZW5ndGggfSwg
eyB9IH0sCi0gICAgICAgIHsgImhlaWdodCJfcywgRmVhdHVyZVNjaGVtYTo6VHlwZTo6UmFuZ2Us
IHsgRmVhdHVyZVNjaGVtYTo6VmFsdWVUeXBlOjpMZW5ndGggfSwgeyB9IH0sCi0gICAgICAgIHsg
ImlubGluZS1zaXplIl9zLCBGZWF0dXJlU2NoZW1hOjpUeXBlOjpSYW5nZSwgeyBGZWF0dXJlU2No
ZW1hOjpWYWx1ZVR5cGU6Okxlbmd0aCB9LCB7IH0gfSwKLSAgICAgICAgeyAiYmxvY2stc2l6ZSJf
cywgRmVhdHVyZVNjaGVtYTo6VHlwZTo6UmFuZ2UsIHsgRmVhdHVyZVNjaGVtYTo6VmFsdWVUeXBl
OjpMZW5ndGggfSwgeyB9IH0sCi0gICAgICAgIHsgImFzcGVjdC1yYXRpbyJfcywgRmVhdHVyZVNj
aGVtYTo6VHlwZTo6UmFuZ2UsIHsgRmVhdHVyZVNjaGVtYTo6VmFsdWVUeXBlOjpSYXRpbyB9LCB7
IH0gfSwKLSAgICAgICAgeyAib3JpZW50YXRpb24iX3MsIEZlYXR1cmVTY2hlbWE6OlR5cGU6OkRp
c2NyZXRlLCB7IH0sIHsgQ1NTVmFsdWVQb3J0cmFpdCwgQ1NTVmFsdWVMYW5kc2NhcGUgfSB9Cisg
ICAgICAgICZDUTo6RmVhdHVyZVNjaGVtYXM6OndpZHRoKCksCisgICAgICAgICZDUTo6RmVhdHVy
ZVNjaGVtYXM6OmhlaWdodCgpLAorICAgICAgICAmQ1E6OkZlYXR1cmVTY2hlbWFzOjppbmxpbmVT
aXplKCksCisgICAgICAgICZDUTo6RmVhdHVyZVNjaGVtYXM6OmJsb2NrU2l6ZSgpLAorICAgICAg
ICAmQ1E6OkZlYXR1cmVTY2hlbWFzOjphc3BlY3RSYXRpbygpLAorICAgICAgICAmQ1E6OkZlYXR1
cmVTY2hlbWFzOjpvcmllbnRhdGlvbigpLAogICAgIH07CiB9CiAKQEAgLTc4LDcgKzc4LDcgQEAg
c3RkOjpvcHRpb25hbDxNUTo6RmVhdHVyZT4gQ29udGFpbmVyUXVlcnlQYXJzZXI6OmNvbnN1bWVG
ZWF0dXJlKENTU1BhcnNlclRva2VuUmEKICAgICBpZiAoIXNpemVGZWF0dXJlKQogICAgICAgICBy
ZXR1cm4geyB9OwogCi0gICAgbV9yZXF1aXJlZEF4ZXMuYWRkKENROjpyZXF1aXJlZEF4ZXNGb3JG
ZWF0dXJlKHNpemVGZWF0dXJlLT5uYW1lKSk7CisgICAgbV9yZXF1aXJlZEF4ZXMuYWRkKENROjpy
ZXF1aXJlZEF4ZXNGb3JGZWF0dXJlKCpzaXplRmVhdHVyZSkpOwogICAgIHJldHVybiBzaXplRmVh
dHVyZTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NvbnRhaW5lclF1ZXJ5
UGFyc2VyLmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ29udGFpbmVyUXVlcnlQYXJzZXIuaAppbmRl
eCA5MzlkZTgwMTYwZmIuLjM0NTMwNTliYjA4ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
Y3NzL0NvbnRhaW5lclF1ZXJ5UGFyc2VyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NvbnRh
aW5lclF1ZXJ5UGFyc2VyLmgKQEAgLTM3LDcgKzM3LDcgQEAgY2xhc3MgQ29udGFpbmVyUXVlcnlQ
YXJzZXIgOiBwdWJsaWMgTVE6OkdlbmVyaWNNZWRpYVF1ZXJ5UGFyc2VyPENvbnRhaW5lclF1ZXJ5
UGEKIHB1YmxpYzoKICAgICBzdGF0aWMgc3RkOjpvcHRpb25hbDxDUTo6Q29udGFpbmVyUXVlcnk+
IGNvbnN1bWVDb250YWluZXJRdWVyeShDU1NQYXJzZXJUb2tlblJhbmdlJiwgY29uc3QgQ1NTUGFy
c2VyQ29udGV4dCYpOwogCi0gICAgc3RhdGljIFZlY3RvcjxNUTo6RmVhdHVyZVNjaGVtYT4gZmVh
dHVyZVNjaGVtYXMoKTsKKyAgICBzdGF0aWMgVmVjdG9yPGNvbnN0IE1ROjpGZWF0dXJlU2NoZW1h
Kj4gZmVhdHVyZVNjaGVtYXMoKTsKICAgICBzdGF0aWMgYm9vbCByZWplY3RJbnZhbGlkRmVhdHVy
ZXMoKSB7IHJldHVybiBmYWxzZTsgfQogCiAgICAgc3RkOjpvcHRpb25hbDxDUTo6Q29udGFpbmVy
UXVlcnk+IGNvbnN1bWVDb250YWluZXJRdWVyeShDU1NQYXJzZXJUb2tlblJhbmdlJik7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvcXVlcnkvR2VuZXJpY01lZGlhUXVlcnlFdmFsdWF0
b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL3F1ZXJ5L0dlbmVyaWNNZWRpYVF1ZXJ5RXZhbHVh
dG9yLmNwcAppbmRleCBjMGU1NzI0NjZiYzQuLmZkNjVmODFmZTYyMCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvY3NzL3F1ZXJ5L0dlbmVyaWNNZWRpYVF1ZXJ5RXZhbHVhdG9yLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9jc3MvcXVlcnkvR2VuZXJpY01lZGlhUXVlcnlFdmFsdWF0b3IuY3Bw
CkBAIC04Myw3ICs4Myw3IEBAIHN0YXRpYyBFdmFsdWF0aW9uUmVzdWx0IGV2YWx1YXRlTGVuZ3Ro
Q29tcGFyaXNvbihMYXlvdXRVbml0IHNpemUsIGNvbnN0IHN0ZDo6b3B0CiAgICAgcmV0dXJuIHRv
RXZhbHVhdGlvblJlc3VsdChjb21wYXJlKGNvbXBhcmlzb24tPm9wLCBsZWZ0LCByaWdodCkpOwog
fTsKIAotRXZhbHVhdGlvblJlc3VsdCBHZW5lcmljTWVkaWFRdWVyeUV2YWx1YXRvckJhc2U6OmV2
YWx1YXRlTGVuZ3RoRmVhdHVyZShjb25zdCBGZWF0dXJlJiBmZWF0dXJlLCBMYXlvdXRVbml0IGxl
bmd0aCwgY29uc3QgQ1NTVG9MZW5ndGhDb252ZXJzaW9uRGF0YSYgY29udmVyc2lvbkRhdGEpIGNv
bnN0CitFdmFsdWF0aW9uUmVzdWx0IGV2YWx1YXRlTGVuZ3RoRmVhdHVyZShjb25zdCBGZWF0dXJl
JiBmZWF0dXJlLCBMYXlvdXRVbml0IGxlbmd0aCwgY29uc3QgQ1NTVG9MZW5ndGhDb252ZXJzaW9u
RGF0YSYgY29udmVyc2lvbkRhdGEpCiB7CiAgICAgaWYgKCFmZWF0dXJlLmxlZnRDb21wYXJpc29u
ICYmICFmZWF0dXJlLnJpZ2h0Q29tcGFyaXNvbikKICAgICAgICAgcmV0dXJuIHRvRXZhbHVhdGlv
blJlc3VsdCghIWxlbmd0aCk7CkBAIC0xMjAsNyArMTIwLDcgQEAgc3RhdGljIEV2YWx1YXRpb25S
ZXN1bHQgZXZhbHVhdGVSYXRpb0NvbXBhcmlzb24oZG91YmxlIHJhdGlvLCBjb25zdCBzdGQ6Om9w
dGlvbmEKICAgICByZXR1cm4gdG9FdmFsdWF0aW9uUmVzdWx0KGNvbXBhcmUoY29tcGFyaXNvbi0+
b3AsIGxlZnQsIHJpZ2h0KSk7CiB9OwogCi1FdmFsdWF0aW9uUmVzdWx0IEdlbmVyaWNNZWRpYVF1
ZXJ5RXZhbHVhdG9yQmFzZTo6ZXZhbHVhdGVSYXRpb0ZlYXR1cmUoY29uc3QgRmVhdHVyZSYgZmVh
dHVyZSwgZG91YmxlIHJhdGlvKSBjb25zdAorRXZhbHVhdGlvblJlc3VsdCBldmFsdWF0ZVJhdGlv
RmVhdHVyZShjb25zdCBGZWF0dXJlJiBmZWF0dXJlLCBkb3VibGUgcmF0aW8pCiB7CiAgICAgaWYg
KCFmZWF0dXJlLmxlZnRDb21wYXJpc29uICYmICFmZWF0dXJlLnJpZ2h0Q29tcGFyaXNvbikKICAg
ICAgICAgcmV0dXJuIHRvRXZhbHVhdGlvblJlc3VsdCghIXJhdGlvKTsKQEAgLTEzMSw3ICsxMzEs
NyBAQCBFdmFsdWF0aW9uUmVzdWx0IEdlbmVyaWNNZWRpYVF1ZXJ5RXZhbHVhdG9yQmFzZTo6ZXZh
bHVhdGVSYXRpb0ZlYXR1cmUoY29uc3QgRmVhdAogICAgIHJldHVybiBsZWZ0UmVzdWx0ICYgcmln
aHRSZXN1bHQ7CiB9CiAKLUV2YWx1YXRpb25SZXN1bHQgR2VuZXJpY01lZGlhUXVlcnlFdmFsdWF0
b3JCYXNlOjpldmFsdWF0ZURpc2NyZXRlRmVhdHVyZShjb25zdCBGZWF0dXJlJiBmZWF0dXJlLCBD
U1NWYWx1ZUlEIGV4cGVjdGVkVmFsdWUpIGNvbnN0CitFdmFsdWF0aW9uUmVzdWx0IGV2YWx1YXRl
RGlzY3JldGVGZWF0dXJlKGNvbnN0IEZlYXR1cmUmIGZlYXR1cmUsIENTU1ZhbHVlSUQgZXhwZWN0
ZWRWYWx1ZSkKIHsKICAgICBpZiAoIWZlYXR1cmUucmlnaHRDb21wYXJpc29uKQogICAgICAgICBy
ZXR1cm4gRXZhbHVhdGlvblJlc3VsdDo6VW5rbm93bjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2Nzcy9xdWVyeS9HZW5lcmljTWVkaWFRdWVyeUV2YWx1YXRvci5oIGIvU291cmNlL1dlYkNv
cmUvY3NzL3F1ZXJ5L0dlbmVyaWNNZWRpYVF1ZXJ5RXZhbHVhdG9yLmgKaW5kZXggOTU2MWYyNTEw
Njg0Li4zNDYzNDYwNTk1MDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9xdWVyeS9H
ZW5lcmljTWVkaWFRdWVyeUV2YWx1YXRvci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9xdWVy
eS9HZW5lcmljTWVkaWFRdWVyeUV2YWx1YXRvci5oCkBAIC0yNCwzOCArMjQsMzkgQEAKIAogI3By
YWdtYSBvbmNlCiAKKyNpbmNsdWRlICJDU1NUb0xlbmd0aENvbnZlcnNpb25EYXRhLmgiCiAjaW5j
bHVkZSAiQ1NTVmFsdWVLZXl3b3Jkcy5oIgogI2luY2x1ZGUgIkdlbmVyaWNNZWRpYVF1ZXJ5VHlw
ZXMuaCIKICNpbmNsdWRlICJMYXlvdXRVbml0LmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAot
Y2xhc3MgQ1NTVG9MZW5ndGhDb252ZXJzaW9uRGF0YTsKK2NsYXNzIFJlbmRlckVsZW1lbnQ7CiAK
IG5hbWVzcGFjZSBNUSB7CiAKIGVudW0gY2xhc3MgRXZhbHVhdGlvblJlc3VsdCA6IHVpbnQ4X3Qg
eyBGYWxzZSwgVHJ1ZSwgVW5rbm93biB9OwogCi1jbGFzcyBHZW5lcmljTWVkaWFRdWVyeUV2YWx1
YXRvckJhc2UgewotcHVibGljOgotICAgIEV2YWx1YXRpb25SZXN1bHQgZXZhbHVhdGVMZW5ndGhG
ZWF0dXJlKGNvbnN0IEZlYXR1cmUmLCBMYXlvdXRVbml0LCBjb25zdCBDU1NUb0xlbmd0aENvbnZl
cnNpb25EYXRhJikgY29uc3Q7Ci0gICAgRXZhbHVhdGlvblJlc3VsdCBldmFsdWF0ZVJhdGlvRmVh
dHVyZShjb25zdCBGZWF0dXJlJiwgZG91YmxlKSBjb25zdDsKLSAgICBFdmFsdWF0aW9uUmVzdWx0
IGV2YWx1YXRlRGlzY3JldGVGZWF0dXJlKGNvbnN0IEZlYXR1cmUmLCBDU1NWYWx1ZUlEKSBjb25z
dDsKLX07CitFdmFsdWF0aW9uUmVzdWx0IGV2YWx1YXRlTGVuZ3RoRmVhdHVyZShjb25zdCBGZWF0
dXJlJiwgTGF5b3V0VW5pdCwgY29uc3QgQ1NTVG9MZW5ndGhDb252ZXJzaW9uRGF0YSYpOworRXZh
bHVhdGlvblJlc3VsdCBldmFsdWF0ZVJhdGlvRmVhdHVyZShjb25zdCBGZWF0dXJlJiwgZG91Ymxl
KTsKK0V2YWx1YXRpb25SZXN1bHQgZXZhbHVhdGVEaXNjcmV0ZUZlYXR1cmUoY29uc3QgRmVhdHVy
ZSYsIENTU1ZhbHVlSUQpOwogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBDb25jcmV0ZUV2YWx1YXRvcj4K
LWNsYXNzIEdlbmVyaWNNZWRpYVF1ZXJ5RXZhbHVhdG9yIDogcHVibGljIEdlbmVyaWNNZWRpYVF1
ZXJ5RXZhbHVhdG9yQmFzZSB7CitjbGFzcyBHZW5lcmljTWVkaWFRdWVyeUV2YWx1YXRvciB7CiBw
dWJsaWM6Ci0gICAgdGVtcGxhdGU8dHlwZW5hbWUgQ29udGV4dD4gRXZhbHVhdGlvblJlc3VsdCBl
dmFsdWF0ZVF1ZXJ5SW5QYXJlbnMoY29uc3QgUXVlcnlJblBhcmVucyYsIGNvbnN0IENvbnRleHQm
KSBjb25zdDsKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDb250ZXh0PiBFdmFsdWF0aW9uUmVzdWx0
IGV2YWx1YXRlQ29uZGl0aW9uKGNvbnN0IENvbmRpdGlvbiYsIGNvbnN0IENvbnRleHQmKSBjb25z
dDsKKyAgICBzdHJ1Y3QgRmVhdHVyZUV2YWx1YXRpb25Db250ZXh0IHsKKyAgICAgICAgQ1NTVG9M
ZW5ndGhDb252ZXJzaW9uRGF0YSBjb252ZXJzaW9uRGF0YTsKKyAgICAgICAgY29uc3QgUmVuZGVy
RWxlbWVudCogcmVuZGVyZXIgeyBudWxscHRyIH07CisgICAgfTsKKyAgICBFdmFsdWF0aW9uUmVz
dWx0IGV2YWx1YXRlUXVlcnlJblBhcmVucyhjb25zdCBRdWVyeUluUGFyZW5zJiwgY29uc3QgRmVh
dHVyZUV2YWx1YXRpb25Db250ZXh0JikgY29uc3Q7CisgICAgRXZhbHVhdGlvblJlc3VsdCBldmFs
dWF0ZUNvbmRpdGlvbihjb25zdCBDb25kaXRpb24mLCBjb25zdCBGZWF0dXJlRXZhbHVhdGlvbkNv
bnRleHQmKSBjb25zdDsKIAogcHJpdmF0ZToKICAgICBjb25zdCBDb25jcmV0ZUV2YWx1YXRvciYg
Y29uY3JldGVFdmFsdWF0b3IoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxjb25zdCBDb25j
cmV0ZUV2YWx1YXRvciY+KCp0aGlzKTsgfQogfTsKIAogdGVtcGxhdGU8dHlwZW5hbWUgQ29uY3Jl
dGVFdmFsdWF0b3I+Ci10ZW1wbGF0ZTx0eXBlbmFtZSBDb250ZXh0PgotRXZhbHVhdGlvblJlc3Vs
dCBHZW5lcmljTWVkaWFRdWVyeUV2YWx1YXRvcjxDb25jcmV0ZUV2YWx1YXRvcj46OmV2YWx1YXRl
UXVlcnlJblBhcmVucyhjb25zdCBRdWVyeUluUGFyZW5zJiBxdWVyeUluUGFyZW5zLCBjb25zdCBD
b250ZXh0JiBjb250ZXh0KSBjb25zdAorRXZhbHVhdGlvblJlc3VsdCBHZW5lcmljTWVkaWFRdWVy
eUV2YWx1YXRvcjxDb25jcmV0ZUV2YWx1YXRvcj46OmV2YWx1YXRlUXVlcnlJblBhcmVucyhjb25z
dCBRdWVyeUluUGFyZW5zJiBxdWVyeUluUGFyZW5zLCBjb25zdCBGZWF0dXJlRXZhbHVhdGlvbkNv
bnRleHQmIGNvbnRleHQpIGNvbnN0CiB7CiAgICAgcmV0dXJuIFdURjo6c3dpdGNoT24ocXVlcnlJ
blBhcmVucywgWyZdKGNvbnN0IENvbmRpdGlvbiYgY29uZGl0aW9uKSB7CiAgICAgICAgIHJldHVy
biBldmFsdWF0ZUNvbmRpdGlvbihjb25kaXRpb24sIGNvbnRleHQpOwpAQCAtNjcsOCArNjgsNyBA
QCBFdmFsdWF0aW9uUmVzdWx0IEdlbmVyaWNNZWRpYVF1ZXJ5RXZhbHVhdG9yPENvbmNyZXRlRXZh
bHVhdG9yPjo6ZXZhbHVhdGVRdWVyeUluUAogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBDb25jcmV0
ZUV2YWx1YXRvcj4KLXRlbXBsYXRlPHR5cGVuYW1lIENvbnRleHQ+Ci1FdmFsdWF0aW9uUmVzdWx0
IEdlbmVyaWNNZWRpYVF1ZXJ5RXZhbHVhdG9yPENvbmNyZXRlRXZhbHVhdG9yPjo6ZXZhbHVhdGVD
b25kaXRpb24oY29uc3QgQ29uZGl0aW9uJiBjb25kaXRpb24sIGNvbnN0IENvbnRleHQmIGNvbnRl
eHQpIGNvbnN0CitFdmFsdWF0aW9uUmVzdWx0IEdlbmVyaWNNZWRpYVF1ZXJ5RXZhbHVhdG9yPENv
bmNyZXRlRXZhbHVhdG9yPjo6ZXZhbHVhdGVDb25kaXRpb24oY29uc3QgQ29uZGl0aW9uJiBjb25k
aXRpb24sIGNvbnN0IEZlYXR1cmVFdmFsdWF0aW9uQ29udGV4dCYgY29udGV4dCkgY29uc3QKIHsK
ICAgICBpZiAoY29uZGl0aW9uLnF1ZXJpZXMuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gRXZh
bHVhdGlvblJlc3VsdDo6VW5rbm93bjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9x
dWVyeS9HZW5lcmljTWVkaWFRdWVyeVBhcnNlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvcXVl
cnkvR2VuZXJpY01lZGlhUXVlcnlQYXJzZXIuY3BwCmluZGV4IDdjOWM1NjhjNmVjZi4uMTM0ZGRj
YTJmZmEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvcXVlcnkvR2VuZXJpY01lZGlh
UXVlcnlQYXJzZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9xdWVyeS9HZW5lcmljTWVk
aWFRdWVyeVBhcnNlci5jcHAKQEAgLTI0OSw3ICsyNDksNyBAQCBib29sIEdlbmVyaWNNZWRpYVF1
ZXJ5UGFyc2VyQmFzZTo6dmFsaWRhdGVGZWF0dXJlQWdhaW5zdFNjaGVtYShGZWF0dXJlJiBmZWF0
dXJlLAogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9KCk7CiAKLSAgICBmZWF0dXJlLnZhbGlk
U2NoZW1hID0gaXNWYWxpZCA/ICZzY2hlbWEgOiBudWxscHRyOworICAgIGZlYXR1cmUuc2NoZW1h
ID0gaXNWYWxpZCA/ICZzY2hlbWEgOiBudWxscHRyOwogICAgIHJldHVybiBpc1ZhbGlkOwogfQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvcXVlcnkvR2VuZXJpY01lZGlhUXVlcnlQ
YXJzZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9xdWVyeS9HZW5lcmljTWVkaWFRdWVyeVBhcnNl
ci5oCmluZGV4IGRiMjNlOTZiMzQ0Yi4uZmY2YWJmNWY3ZDkyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9jc3MvcXVlcnkvR2VuZXJpY01lZGlhUXVlcnlQYXJzZXIuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9jc3MvcXVlcnkvR2VuZXJpY01lZGlhUXVlcnlQYXJzZXIuaApAQCAtNjAsNiArNjAs
NyBAQCBwdWJsaWM6CiAKICAgICBzdGQ6Om9wdGlvbmFsPENvbmRpdGlvbj4gY29uc3VtZUNvbmRp
dGlvbihDU1NQYXJzZXJUb2tlblJhbmdlJik7CiAgICAgc3RkOjpvcHRpb25hbDxRdWVyeUluUGFy
ZW5zPiBjb25zdW1lUXVlcnlJblBhcmVucyhDU1NQYXJzZXJUb2tlblJhbmdlJik7CisgICAgc3Rk
OjpvcHRpb25hbDxGZWF0dXJlPiBjb25zdW1lRmVhdHVyZShDU1NQYXJzZXJUb2tlblJhbmdlJik7
CiAKICAgICBjb25zdCBGZWF0dXJlU2NoZW1hKiBzY2hlbWFGb3JGZWF0dXJlTmFtZShjb25zdCBB
dG9tU3RyaW5nJikgY29uc3Q7CiAKQEAgLTE0MCwxMiArMTQxLDggQEAgc3RkOjpvcHRpb25hbDxR
dWVyeUluUGFyZW5zPiBHZW5lcmljTWVkaWFRdWVyeVBhcnNlcjxDb25jcmV0ZVBhcnNlcj46OmNv
bnN1bWVRdWUKICAgICAgICAgaWYgKGF1dG8gY29uZGl0aW9uID0gY29uc3VtZUNvbmRpdGlvbihj
b25kaXRpb25SYW5nZSkpCiAgICAgICAgICAgICByZXR1cm4geyBjb25kaXRpb24gfTsKIAotICAg
ICAgICBpZiAoYXV0byBmZWF0dXJlID0gY29uY3JldGVQYXJzZXIoKS5jb25zdW1lRmVhdHVyZShi
bG9ja1JhbmdlKSkgewotICAgICAgICAgICAgaWYgKCF2YWxpZGF0ZUZlYXR1cmUoKmZlYXR1cmUp
ICYmIENvbmNyZXRlUGFyc2VyOjpyZWplY3RJbnZhbGlkRmVhdHVyZXMoKSkKLSAgICAgICAgICAg
ICAgICByZXR1cm4geyB9OwotCisgICAgICAgIGlmIChhdXRvIGZlYXR1cmUgPSBjb25jcmV0ZVBh
cnNlcigpLmNvbnN1bWVGZWF0dXJlKGJsb2NrUmFuZ2UpKQogICAgICAgICAgICAgcmV0dXJuIHsg
KmZlYXR1cmUgfTsKLSAgICAgICAgfQogCiAgICAgICAgIHJldHVybiBHZW5lcmFsRW5jbG9zZWQg
eyB7IH0sIGJsb2NrUmFuZ2Uuc2VyaWFsaXplKCkgfTsKICAgICB9CkBAIC0xNTMsNiArMTUwLDE5
IEBAIHN0ZDo6b3B0aW9uYWw8UXVlcnlJblBhcmVucz4gR2VuZXJpY01lZGlhUXVlcnlQYXJzZXI8
Q29uY3JldGVQYXJzZXI+Ojpjb25zdW1lUXVlCiAgICAgcmV0dXJuIHsgfTsKIH0KIAordGVtcGxh
dGU8dHlwZW5hbWUgQ29uY3JldGVQYXJzZXI+CitzdGQ6Om9wdGlvbmFsPEZlYXR1cmU+IEdlbmVy
aWNNZWRpYVF1ZXJ5UGFyc2VyPENvbmNyZXRlUGFyc2VyPjo6Y29uc3VtZUZlYXR1cmUoQ1NTUGFy
c2VyVG9rZW5SYW5nZSYgcmFuZ2UpCit7CisgICAgYXV0byBmZWF0dXJlID0gR2VuZXJpY01lZGlh
UXVlcnlQYXJzZXJCYXNlOjpjb25zdW1lRmVhdHVyZShyYW5nZSk7CisgICAgaWYgKCFmZWF0dXJl
KQorICAgICAgICByZXR1cm4geyB9OworCisgICAgaWYgKCF2YWxpZGF0ZUZlYXR1cmUoKmZlYXR1
cmUpICYmIENvbmNyZXRlUGFyc2VyOjpyZWplY3RJbnZhbGlkRmVhdHVyZXMoKSkKKyAgICAgICAg
cmV0dXJuIHsgfTsKKworICAgIHJldHVybiBmZWF0dXJlOworfQorCiB0ZW1wbGF0ZTx0eXBlbmFt
ZSBDb25jcmV0ZVBhcnNlcj4KIGJvb2wgR2VuZXJpY01lZGlhUXVlcnlQYXJzZXI8Q29uY3JldGVQ
YXJzZXI+Ojp2YWxpZGF0ZUZlYXR1cmUoRmVhdHVyZSYgZmVhdHVyZSkKIHsKQEAgLTE2NSwxOCAr
MTc1LDE3IEBAIGJvb2wgR2VuZXJpY01lZGlhUXVlcnlQYXJzZXI8Q29uY3JldGVQYXJzZXI+Ojp2
YWxpZGF0ZUZlYXR1cmUoRmVhdHVyZSYgZmVhdHVyZSkKIHRlbXBsYXRlPHR5cGVuYW1lIENvbmNy
ZXRlUGFyc2VyPgogY29uc3QgRmVhdHVyZVNjaGVtYSogR2VuZXJpY01lZGlhUXVlcnlQYXJzZXI8
Q29uY3JldGVQYXJzZXI+OjpzY2hlbWFGb3JGZWF0dXJlTmFtZShjb25zdCBBdG9tU3RyaW5nJiBu
YW1lKSBjb25zdAogewotICAgIHVzaW5nIFNjaGVtYU1hcCA9IE1lbW9yeUNvbXBhY3RMb29rdXBP
bmx5Um9iaW5Ib29kSGFzaE1hcDxBdG9tU3RyaW5nLCBGZWF0dXJlU2NoZW1hPjsKKyAgICB1c2lu
ZyBTY2hlbWFNYXAgPSBNZW1vcnlDb21wYWN0TG9va3VwT25seVJvYmluSG9vZEhhc2hNYXA8QXRv
bVN0cmluZywgY29uc3QgRmVhdHVyZVNjaGVtYSo+OwogCiAgICAgc3RhdGljIE5ldmVyRGVzdHJv
eWVkPFNjaGVtYU1hcD4gc2NoZW1hcyA9IFsmXSB7CiAgICAgICAgIGF1dG8gZW50cmllcyA9IENv
bmNyZXRlUGFyc2VyOjpmZWF0dXJlU2NoZW1hcygpOwogICAgICAgICBTY2hlbWFNYXAgbWFwOwog
ICAgICAgICBmb3IgKGF1dG8mIGVudHJ5IDogZW50cmllcykKLSAgICAgICAgICAgIG1hcC5hZGQo
ZW50cnkubmFtZSwgZW50cnkpOworICAgICAgICAgICAgbWFwLmFkZChlbnRyeS0+bmFtZSwgZW50
cnkpOwogICAgICAgICByZXR1cm4gbWFwOwogICAgIH0oKTsKIAotICAgIGF1dG8gaXQgPSBzY2hl
bWFzLT5maW5kKG5hbWUpOwotICAgIHJldHVybiBpdCA9PSBzY2hlbWFzLT5lbmQoKSA/IG51bGxw
dHIgOiAmaXQtPnZhbHVlOworICAgIHJldHVybiBzY2hlbWFzLT5nZXQobmFtZSk7CiB9CiAKIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9xdWVyeS9HZW5lcmljTWVkaWFRdWVyeVR5
cGVzLmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvcXVlcnkvR2VuZXJpY01lZGlhUXVlcnlUeXBlcy5o
CmluZGV4IDMzNzExMWE0OTFmOC4uZTAzMTU0ZmFjNjk4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9jc3MvcXVlcnkvR2VuZXJpY01lZGlhUXVlcnlUeXBlcy5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2Nzcy9xdWVyeS9HZW5lcmljTWVkaWFRdWVyeVR5cGVzLmgKQEAgLTQ5LDcgKzQ5LDcgQEAg
c3RydWN0IEZlYXR1cmUgewogICAgIHN0ZDo6b3B0aW9uYWw8Q29tcGFyaXNvbj4gbGVmdENvbXBh
cmlzb247CiAgICAgc3RkOjpvcHRpb25hbDxDb21wYXJpc29uPiByaWdodENvbXBhcmlzb247CiAK
LSAgICBjb25zdCBGZWF0dXJlU2NoZW1hKiB2YWxpZFNjaGVtYSB7IG51bGxwdHIgfTsKKyAgICBj
b25zdCBGZWF0dXJlU2NoZW1hKiBzY2hlbWEgeyBudWxscHRyIH07CiB9OwogCiBzdHJ1Y3QgR2Vu
ZXJhbEVuY2xvc2VkIHsKQEAgLTY1LDYgKzY1LDggQEAgc3RydWN0IENvbmRpdGlvbiB7CiB9Owog
CiBzdHJ1Y3QgRmVhdHVyZVNjaGVtYSB7CisgICAgV1RGX01BS0VfU1RSVUNUX0ZBU1RfQUxMT0NB
VEVEOworCiAgICAgZW51bSBjbGFzcyBUeXBlIDogdWludDhfdCB7IERpc2NyZXRlLCBSYW5nZSB9
OwogICAgIGVudW0gY2xhc3MgVmFsdWVUeXBlIDogdWludDhfdCB7CiAgICAgICAgIEludGVnZXIg
PSAgICAgICAxIDw8IDAsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvcXVlcnkvTWVk
aWFRdWVyeUV2YWx1YXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvcXVlcnkvTWVkaWFRdWVy
eUV2YWx1YXRvci5jcHAKaW5kZXggNDVkMmZkZDRkYmE4Li5iNTYzYmIyOGVhOTIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9xdWVyeS9NZWRpYVF1ZXJ5RXZhbHVhdG9yLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9jc3MvcXVlcnkvTWVkaWFRdWVyeUV2YWx1YXRvci5jcHAKQEAgLTI1
LDcgKzI1LDEwIEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiTWVkaWFRdWVyeUV2
YWx1YXRvci5oIgogCisjaW5jbHVkZSAiQ1NTVG9MZW5ndGhDb252ZXJzaW9uRGF0YS5oIgorI2lu
Y2x1ZGUgIkRvY3VtZW50LmgiCiAjaW5jbHVkZSAiTWVkaWFRdWVyeS5oIgorI2luY2x1ZGUgIlJl
bmRlclZpZXcuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogbmFtZXNwYWNlIE1RIHsKQEAgLTMz
LDcgKzM2LDcgQEAgbmFtZXNwYWNlIE1RIHsKIE1lZGlhUXVlcnlFdmFsdWF0b3I6Ok1lZGlhUXVl
cnlFdmFsdWF0b3IoY29uc3QgQXRvbVN0cmluZyYgbWVkaWFUeXBlLCBjb25zdCBEb2N1bWVudCYg
ZG9jdW1lbnQsIGNvbnN0IFJlbmRlclN0eWxlKiByb290RWxlbWVudFN0eWxlKQogICAgIDogR2Vu
ZXJpY01lZGlhUXVlcnlFdmFsdWF0b3IoKQogICAgICwgbV9tZWRpYVR5cGUobWVkaWFUeXBlKQot
ICAgICwgbV9mZWF0dXJlQ29udGV4dCh7IGRvY3VtZW50LCByb290RWxlbWVudFN0eWxlIH0pCisg
ICAgLCBtX2V2YWx1YXRpb25Db250ZXh0KHsgQ1NTVG9MZW5ndGhDb252ZXJzaW9uRGF0YSB7ICpy
b290RWxlbWVudFN0eWxlLCBudWxscHRyLCBudWxscHRyLCBkb2N1bWVudC5yZW5kZXJWaWV3KCkg
fSwgZG9jdW1lbnQucmVuZGVyVmlldygpIH0pCiB7CiB9CiAKQEAgLTY0LDEzICs2NywxMyBAQCBi
b29sIE1lZGlhUXVlcnlFdmFsdWF0b3I6OmV2YWx1YXRlKGNvbnN0IE1lZGlhUXVlcnkmIHF1ZXJ5
KSBjb25zdAogICAgIGF1dG8gY29uZGl0aW9uTWF0Y2hlcyA9IFsmXSB7CiAgICAgICAgIGlmICgh
cXVlcnkuY29uZGl0aW9uKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICByZXR1
cm4gZXZhbHVhdGVDb25kaXRpb24oKnF1ZXJ5LmNvbmRpdGlvbiwgbV9mZWF0dXJlQ29udGV4dCkg
PT0gRXZhbHVhdGlvblJlc3VsdDo6VHJ1ZTsKKyAgICAgICAgcmV0dXJuIGV2YWx1YXRlQ29uZGl0
aW9uKCpxdWVyeS5jb25kaXRpb24sIG1fZXZhbHVhdGlvbkNvbnRleHQpID09IEV2YWx1YXRpb25S
ZXN1bHQ6OlRydWU7CiAgICAgfSgpOwogCiAgICAgcmV0dXJuIGNvbmRpdGlvbk1hdGNoZXMgIT0g
aXNOZWdhdGVkOwogfQogCi1FdmFsdWF0aW9uUmVzdWx0IE1lZGlhUXVlcnlFdmFsdWF0b3I6OmV2
YWx1YXRlRmVhdHVyZShjb25zdCBGZWF0dXJlJiwgY29uc3QgRmVhdHVyZUNvbnRleHQmKSBjb25z
dAorRXZhbHVhdGlvblJlc3VsdCBNZWRpYVF1ZXJ5RXZhbHVhdG9yOjpldmFsdWF0ZUZlYXR1cmUo
Y29uc3QgRmVhdHVyZSYsIGNvbnN0IEZlYXR1cmVFdmFsdWF0aW9uQ29udGV4dCYpIGNvbnN0CiB7
CiAgICAgcmV0dXJuIEV2YWx1YXRpb25SZXN1bHQ6OlVua25vd247CiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9jc3MvcXVlcnkvTWVkaWFRdWVyeUV2YWx1YXRvci5oIGIvU291cmNlL1dl
YkNvcmUvY3NzL3F1ZXJ5L01lZGlhUXVlcnlFdmFsdWF0b3IuaAppbmRleCAyNDVkYTcwODExY2Iu
LmMyYjJmMDFjZmE4NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL3F1ZXJ5L01lZGlh
UXVlcnlFdmFsdWF0b3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvcXVlcnkvTWVkaWFRdWVy
eUV2YWx1YXRvci5oCkBAIC00MCwxNSArNDAsMTEgQEAgcHVibGljOgogICAgIGJvb2wgZXZhbHVh
dGUoY29uc3QgTWVkaWFRdWVyeUxpc3QmKSBjb25zdDsKICAgICBib29sIGV2YWx1YXRlKGNvbnN0
IE1lZGlhUXVlcnkmKSBjb25zdDsKIAotICAgIHN0cnVjdCBGZWF0dXJlQ29udGV4dCB7Ci0gICAg
ICAgIGNvbnN0IERvY3VtZW50JiBkb2N1bWVudDsKLSAgICAgICAgY29uc3QgUmVuZGVyU3R5bGUq
IHJvb3RFbGVtZW50U3R5bGU7Ci0gICAgfTsKLSAgICBFdmFsdWF0aW9uUmVzdWx0IGV2YWx1YXRl
RmVhdHVyZShjb25zdCBGZWF0dXJlJiwgY29uc3QgRmVhdHVyZUNvbnRleHQmKSBjb25zdDsKKyAg
ICBFdmFsdWF0aW9uUmVzdWx0IGV2YWx1YXRlRmVhdHVyZShjb25zdCBGZWF0dXJlJiwgY29uc3Qg
RmVhdHVyZUV2YWx1YXRpb25Db250ZXh0JikgY29uc3Q7CiAKIHByaXZhdGU6CiAgICAgY29uc3Qg
QXRvbVN0cmluZyBtX21lZGlhVHlwZTsKLSAgICBjb25zdCBGZWF0dXJlQ29udGV4dCBtX2ZlYXR1
cmVDb250ZXh0OworICAgIGNvbnN0IEZlYXR1cmVFdmFsdWF0aW9uQ29udGV4dCBtX2V2YWx1YXRp
b25Db250ZXh0OwogfTsKIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL3F1ZXJ5
L01lZGlhUXVlcnlQYXJzZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL3F1ZXJ5L01lZGlhUXVl
cnlQYXJzZXIuY3BwCmluZGV4IDExNjM3MDhlZWMzZC4uY2JmMWI2YmE4MDlmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9jc3MvcXVlcnkvTWVkaWFRdWVyeVBhcnNlci5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvY3NzL3F1ZXJ5L01lZGlhUXVlcnlQYXJzZXIuY3BwCkBAIC0zNywxNCArMzcs
MTMgQEAgTWVkaWFRdWVyeVBhcnNlcjo6TWVkaWFRdWVyeVBhcnNlcihjb25zdCBDU1NQYXJzZXJD
b250ZXh0JiBjb250ZXh0KQogewogfQogCi1WZWN0b3I8TVE6OkZlYXR1cmVTY2hlbWE+IE1lZGlh
UXVlcnlQYXJzZXI6OmZlYXR1cmVTY2hlbWFzKCkKK1ZlY3Rvcjxjb25zdCBGZWF0dXJlU2NoZW1h
Kj4gTWVkaWFRdWVyeVBhcnNlcjo6ZmVhdHVyZVNjaGVtYXMoKQogewotICAgIHJldHVybiB7Ci0g
ICAgICAgIC8vIEZJWE1FOiBBZGQgdGhlIHJlc3QuCi0gICAgICAgIHsgIndpZHRoIl9zLCBGZWF0
dXJlU2NoZW1hOjpUeXBlOjpSYW5nZSwgeyBGZWF0dXJlU2NoZW1hOjpWYWx1ZVR5cGU6Okxlbmd0
aCB9LCB7IH0gfSwKLSAgICAgICAgeyAiaGVpZ2h0Il9zLCBGZWF0dXJlU2NoZW1hOjpUeXBlOjpS
YW5nZSwgeyBGZWF0dXJlU2NoZW1hOjpWYWx1ZVR5cGU6Okxlbmd0aCB9LCB7IH0gfSwKLSAgICAg
ICAgeyAib3JpZW50YXRpb24iX3MsIEZlYXR1cmVTY2hlbWE6OlR5cGU6OkRpc2NyZXRlLCB7IH0s
IHsgQ1NTVmFsdWVQb3J0cmFpdCwgQ1NTVmFsdWVMYW5kc2NhcGUgfSB9Ci0gICAgfTsKKyAgICBz
dGF0aWMgTWFpblRocmVhZE5ldmVyRGVzdHJveWVkPEZlYXR1cmVTY2hlbWE+IHdpZHRoU2NoZW1h
IHsgRmVhdHVyZVNjaGVtYSB7ICJ3aWR0aCJfcywgRmVhdHVyZVNjaGVtYTo6VHlwZTo6UmFuZ2Us
IHsgRmVhdHVyZVNjaGVtYTo6VmFsdWVUeXBlOjpMZW5ndGggfSwgeyB9IH0gfTsKKyAgICBzdGF0
aWMgTWFpblRocmVhZE5ldmVyRGVzdHJveWVkPEZlYXR1cmVTY2hlbWE+IGhlaWdodFNjaGVtYSB7
IEZlYXR1cmVTY2hlbWEgeyAiaGVpZ2h0Il9zLCBGZWF0dXJlU2NoZW1hOjpUeXBlOjpSYW5nZSwg
eyBGZWF0dXJlU2NoZW1hOjpWYWx1ZVR5cGU6Okxlbmd0aCB9LCB7IH0gfSB9OworICAgIHN0YXRp
YyBNYWluVGhyZWFkTmV2ZXJEZXN0cm95ZWQ8RmVhdHVyZVNjaGVtYT4gb3JpZW50YXRpb25TY2hl
bWEgeyBGZWF0dXJlU2NoZW1hIHsgIm9yaWVudGF0aW9uIl9zLCBGZWF0dXJlU2NoZW1hOjpUeXBl
OjpEaXNjcmV0ZSwgeyB9LCB7IENTU1ZhbHVlUG9ydHJhaXQsIENTU1ZhbHVlTGFuZHNjYXBlIH0g
fSB9OworCisgICAgcmV0dXJuIHsgJndpZHRoU2NoZW1hLmdldCgpLCAmaGVpZ2h0U2NoZW1hLmdl
dCgpLCAmb3JpZW50YXRpb25TY2hlbWEuZ2V0KCkgfTsKIH0KIAogTWVkaWFRdWVyeUxpc3QgTWVk
aWFRdWVyeVBhcnNlcjo6Y29uc3VtZU1lZGlhUXVlcnlMaXN0KENTU1BhcnNlclRva2VuUmFuZ2Um
IHJhbmdlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL3F1ZXJ5L01lZGlhUXVlcnlQ
YXJzZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9xdWVyeS9NZWRpYVF1ZXJ5UGFyc2VyLmgKaW5k
ZXggMTI5YzUyODIxMWM0Li5mZDFiODRlOGExYjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9xdWVyeS9NZWRpYVF1ZXJ5UGFyc2VyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL3F1
ZXJ5L01lZGlhUXVlcnlQYXJzZXIuaApAQCAtMzcsNyArMzcsNyBAQCBwdWJsaWM6CiAgICAgTWVk
aWFRdWVyeUxpc3QgY29uc3VtZU1lZGlhUXVlcnlMaXN0KENTU1BhcnNlclRva2VuUmFuZ2UmKTsK
ICAgICBzdGQ6Om9wdGlvbmFsPE1lZGlhUXVlcnk+IGNvbnN1bWVNZWRpYVF1ZXJ5KENTU1BhcnNl
clRva2VuUmFuZ2UmKTsKIAotICAgIHN0YXRpYyBWZWN0b3I8TVE6OkZlYXR1cmVTY2hlbWE+IGZl
YXR1cmVTY2hlbWFzKCk7CisgICAgc3RhdGljIFZlY3Rvcjxjb25zdCBGZWF0dXJlU2NoZW1hKj4g
ZmVhdHVyZVNjaGVtYXMoKTsKICAgICBzdGF0aWMgYm9vbCByZWplY3RJbnZhbGlkRmVhdHVyZXMo
KSB7IHJldHVybiB0cnVlOyB9CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdHls
ZS9Db250YWluZXJRdWVyeUV2YWx1YXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9Db250
YWluZXJRdWVyeUV2YWx1YXRvci5jcHAKaW5kZXggYzc5NGJiODU4ODRjLi40NDQ3NzY5M2MzYTcg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N0eWxlL0NvbnRhaW5lclF1ZXJ5RXZhbHVhdG9y
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9Db250YWluZXJRdWVyeUV2YWx1YXRvci5j
cHAKQEAgLTM5LDExICszOSw2IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlOjpTdHlsZSB7CiAKLXN0
cnVjdCBDb250YWluZXJRdWVyeUV2YWx1YXRvcjo6U2VsZWN0ZWRDb250YWluZXIgewotICAgIGNv
bnN0IFJlbmRlckJveCogcmVuZGVyZXIgeyBudWxscHRyIH07Ci0gICAgQ1NTVG9MZW5ndGhDb252
ZXJzaW9uRGF0YSBjb252ZXJzaW9uRGF0YTsKLX07Ci0KIENvbnRhaW5lclF1ZXJ5RXZhbHVhdG9y
OjpDb250YWluZXJRdWVyeUV2YWx1YXRvcihjb25zdCBFbGVtZW50JiBlbGVtZW50LCBTZWxlY3Rp
b25Nb2RlIHNlbGVjdGlvbk1vZGUsIFNjb3BlT3JkaW5hbCBzY29wZU9yZGluYWwsIFNlbGVjdG9y
TWF0Y2hpbmdTdGF0ZSogc2VsZWN0b3JNYXRjaGluZ1N0YXRlKQogICAgIDogbV9lbGVtZW50KGVs
ZW1lbnQpCiAgICAgLCBtX3NlbGVjdGlvbk1vZGUoc2VsZWN0aW9uTW9kZSkKQEAgLTU0LDE0ICs0
OSwxNCBAQCBDb250YWluZXJRdWVyeUV2YWx1YXRvcjo6Q29udGFpbmVyUXVlcnlFdmFsdWF0b3Io
Y29uc3QgRWxlbWVudCYgZWxlbWVudCwgU2VsZWN0aQogCiBib29sIENvbnRhaW5lclF1ZXJ5RXZh
bHVhdG9yOjpldmFsdWF0ZShjb25zdCBDUTo6Q29udGFpbmVyUXVlcnkmIGNvbnRhaW5lclF1ZXJ5
KSBjb25zdAogewotICAgIGF1dG8gY29udGFpbmVyID0gc2VsZWN0Q29udGFpbmVyKGNvbnRhaW5l
clF1ZXJ5KTsKLSAgICBpZiAoIWNvbnRhaW5lcikKKyAgICBhdXRvIGNvbnRleHQgPSBmZWF0dXJl
RXZhbHVhdGlvbkNvbnRleHRGb3JRdWVyeShjb250YWluZXJRdWVyeSk7CisgICAgaWYgKCFjb250
ZXh0KQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICByZXR1cm4gZXZhbHVhdGVDb25kaXRp
b24oY29udGFpbmVyUXVlcnkuY29uZGl0aW9uLCAqY29udGFpbmVyKSA9PSBNUTo6RXZhbHVhdGlv
blJlc3VsdDo6VHJ1ZTsKKyAgICByZXR1cm4gZXZhbHVhdGVDb25kaXRpb24oY29udGFpbmVyUXVl
cnkuY29uZGl0aW9uLCAqY29udGV4dCkgPT0gTVE6OkV2YWx1YXRpb25SZXN1bHQ6OlRydWU7CiB9
CiAKLWF1dG8gQ29udGFpbmVyUXVlcnlFdmFsdWF0b3I6OnNlbGVjdENvbnRhaW5lcihjb25zdCBD
UTo6Q29udGFpbmVyUXVlcnkmIGNvbnRhaW5lclF1ZXJ5KSBjb25zdCAtPiBzdGQ6Om9wdGlvbmFs
PFNlbGVjdGVkQ29udGFpbmVyPgorYXV0byBDb250YWluZXJRdWVyeUV2YWx1YXRvcjo6ZmVhdHVy
ZUV2YWx1YXRpb25Db250ZXh0Rm9yUXVlcnkoY29uc3QgQ1E6OkNvbnRhaW5lclF1ZXJ5JiBjb250
YWluZXJRdWVyeSkgY29uc3QgLT4gc3RkOjpvcHRpb25hbDxGZWF0dXJlRXZhbHVhdGlvbkNvbnRl
eHQ+CiB7CiAgICAgLy8gIkZvciBlYWNoIGVsZW1lbnQsIHRoZSBxdWVyeSBjb250YWluZXIgdG8g
YmUgcXVlcmllZCBpcyBzZWxlY3RlZCBmcm9tIGFtb25nIHRoZSBlbGVtZW504oCZcwogICAgIC8v
IGFuY2VzdG9yIHF1ZXJ5IGNvbnRhaW5lcnMgdGhhdCBoYXZlIGEgdmFsaWQgY29udGFpbmVyLXR5
cGUgZm9yIGFsbCB0aGUgY29udGFpbmVyIGZlYXR1cmVzCkBAIC02OSwyMyArNjQsMjEgQEAgYXV0
byBDb250YWluZXJRdWVyeUV2YWx1YXRvcjo6c2VsZWN0Q29udGFpbmVyKGNvbnN0IENROjpDb250
YWluZXJRdWVyeSYgY29udGFpbmUKICAgICAvLyBjb25zaWRlcmVkIHRvIGp1c3QgdGhvc2Ugd2l0
aCBhIG1hdGNoaW5nIHF1ZXJ5IGNvbnRhaW5lciBuYW1lLiIKICAgICAvLyBodHRwczovL2RyYWZ0
cy5jc3N3Zy5vcmcvY3NzLWNvbnRhaW4tMy8jY29udGFpbmVyLXJ1bGUKIAotICAgIGF1dG8gbWFr
ZVNlbGVjdGVkQ29udGFpbmVyID0gW10oY29uc3QgRWxlbWVudCYgZWxlbWVudCkgLT4gU2VsZWN0
ZWRDb250YWluZXIgewotICAgICAgICBhdXRvKiByZW5kZXJlciA9IGR5bmFtaWNEb3duY2FzdDxS
ZW5kZXJCb3g+KGVsZW1lbnQucmVuZGVyZXIoKSk7Ci0gICAgICAgIGlmICghcmVuZGVyZXIpCi0g
ICAgICAgICAgICByZXR1cm4geyB9OwotICAgICAgICByZXR1cm4gewotICAgICAgICAgICAgcmVu
ZGVyZXIsCi0gICAgICAgICAgICBDU1NUb0xlbmd0aENvbnZlcnNpb25EYXRhIHsgcmVuZGVyZXIt
PnN0eWxlKCksIGVsZW1lbnQuZG9jdW1lbnQoKS5kb2N1bWVudEVsZW1lbnQoKS0+cmVuZGVyU3R5
bGUoKSwgbnVsbHB0ciwgJnJlbmRlcmVyLT52aWV3KCkgfQotICAgICAgICB9OwotICAgIH07Ci0K
ICAgICBhdXRvKiBjYWNoZWRRdWVyeUNvbnRhaW5lcnMgPSBtX3NlbGVjdG9yTWF0Y2hpbmdTdGF0
ZSA/ICZtX3NlbGVjdG9yTWF0Y2hpbmdTdGF0ZS0+cXVlcnlDb250YWluZXJzIDogbnVsbHB0cjsK
IAogICAgIGF1dG8qIGNvbnRhaW5lciA9IHNlbGVjdENvbnRhaW5lcihjb250YWluZXJRdWVyeS5h
eGlzRmlsdGVyLCBjb250YWluZXJRdWVyeS5uYW1lLCBtX2VsZW1lbnQuZ2V0KCksIG1fc2VsZWN0
aW9uTW9kZSwgbV9zY29wZU9yZGluYWwsIGNhY2hlZFF1ZXJ5Q29udGFpbmVycyk7CiAgICAgaWYg
KCFjb250YWluZXIpCiAgICAgICAgIHJldHVybiB7IH07CiAKLSAgICByZXR1cm4gbWFrZVNlbGVj
dGVkQ29udGFpbmVyKCpjb250YWluZXIpOworICAgIGlmICghY29udGFpbmVyLT5yZW5kZXJlcigp
KQorICAgICAgICByZXR1cm4gRmVhdHVyZUV2YWx1YXRpb25Db250ZXh0IHsgfTsKKworICAgIGF1
dG8mIHJlbmRlcmVyID0gKmNvbnRhaW5lci0+cmVuZGVyZXIoKTsKKworICAgIHJldHVybiBGZWF0
dXJlRXZhbHVhdGlvbkNvbnRleHQgeworICAgICAgICBDU1NUb0xlbmd0aENvbnZlcnNpb25EYXRh
IHsgcmVuZGVyZXIuc3R5bGUoKSwgbV9lbGVtZW50LT5kb2N1bWVudCgpLmRvY3VtZW50RWxlbWVu
dCgpLT5yZW5kZXJTdHlsZSgpLCBudWxscHRyLCAmcmVuZGVyZXIudmlldygpIH0sCisgICAgICAg
ICZyZW5kZXJlcgorICAgIH07CiB9CiAKIGNvbnN0IEVsZW1lbnQqIENvbnRhaW5lclF1ZXJ5RXZh
bHVhdG9yOjpzZWxlY3RDb250YWluZXIoT3B0aW9uU2V0PENROjpBeGlzPiBheGVzLCBjb25zdCBT
dHJpbmcmIG5hbWUsIGNvbnN0IEVsZW1lbnQmIGVsZW1lbnQsIFNlbGVjdGlvbk1vZGUgc2VsZWN0
aW9uTW9kZSwgU2NvcGVPcmRpbmFsIHNjb3BlT3JkaW5hbCwgY29uc3QgQ2FjaGVkUXVlcnlDb250
YWluZXJzKiBjYWNoZWRRdWVyeUNvbnRhaW5lcnMpCkBAIC0xNjMsMTkgKzE1NiwxOSBAQCBjb25z
dCBFbGVtZW50KiBDb250YWluZXJRdWVyeUV2YWx1YXRvcjo6c2VsZWN0Q29udGFpbmVyKE9wdGlv
blNldDxDUTo6QXhpcz4gYXhlcwogICAgIHJldHVybiB7IH07CiB9CiAKLWF1dG8gQ29udGFpbmVy
UXVlcnlFdmFsdWF0b3I6OmV2YWx1YXRlRmVhdHVyZShjb25zdCBNUTo6RmVhdHVyZSYgc2l6ZUZl
YXR1cmUsIGNvbnN0IFNlbGVjdGVkQ29udGFpbmVyJiBjb250YWluZXIpIGNvbnN0IC0+IE1ROjpF
dmFsdWF0aW9uUmVzdWx0CithdXRvIENvbnRhaW5lclF1ZXJ5RXZhbHVhdG9yOjpldmFsdWF0ZUZl
YXR1cmUoY29uc3QgTVE6OkZlYXR1cmUmIHNpemVGZWF0dXJlLCBjb25zdCBGZWF0dXJlRXZhbHVh
dGlvbkNvbnRleHQmIGNvbnRleHQpIGNvbnN0IC0+IE1ROjpFdmFsdWF0aW9uUmVzdWx0CiB7Ci0g
ICAgaWYgKCFzaXplRmVhdHVyZS52YWxpZFNjaGVtYSkKKyAgICBpZiAoIXNpemVGZWF0dXJlLnNj
aGVtYSkKICAgICAgICAgcmV0dXJuIE1ROjpFdmFsdWF0aW9uUmVzdWx0OjpVbmtub3duOwogCiAg
ICAgLy8gIklmIHRoZSBxdWVyeSBjb250YWluZXIgZG9lcyBub3QgaGF2ZSBhIHByaW5jaXBhbCBi
b3gsIG9yIHRoZSBwcmluY2lwYWwgYm94IGlzIG5vdCBhIGxheW91dCBjb250YWlubWVudCBib3gs
CiAgICAgLy8gb3IgdGhlIHF1ZXJ5IGNvbnRhaW5lciBkb2VzIG5vdCBzdXBwb3J0IGNvbnRhaW5l
ciBzaXplIHF1ZXJpZXMgb24gdGhlIHJlbGV2YW50IGF4ZXMsIHRoZW4gdGhlIHJlc3VsdCBvZgog
ICAgIC8vIGV2YWx1YXRpbmcgdGhlIHNpemUgZmVhdHVyZSBpcyB1bmtub3duLiIKICAgICAvLyBo
dHRwczovL2RyYWZ0cy5jc3N3Zy5vcmcvY3NzLWNvbnRhaW4tMy8jc2l6ZS1jb250YWluZXIKLSAg
ICBpZiAoIWNvbnRhaW5lci5yZW5kZXJlcikKKyAgICBpZiAoIWlzPFJlbmRlckJveD4oY29udGV4
dC5yZW5kZXJlcikpCiAgICAgICAgIHJldHVybiBNUTo6RXZhbHVhdGlvblJlc3VsdDo6VW5rbm93
bjsKIAotICAgIGF1dG8mIHJlbmRlcmVyID0gKmNvbnRhaW5lci5yZW5kZXJlcjsKKyAgICBhdXRv
JiByZW5kZXJlciA9IGRvd25jYXN0PFJlbmRlckJveD4oKmNvbnRleHQucmVuZGVyZXIpOwogCiAg
ICAgYXV0byBoYXNFbGlnaWJsZUNvbnRhaW5tZW50ID0gWyZdIHsKICAgICAgICAgaWYgKCFyZW5k
ZXJlci5zaG91bGRBcHBseUxheW91dENvbnRhaW5tZW50KCkpCkBAIC0xOTQsMjQgKzE4NywyNCBA
QCBhdXRvIENvbnRhaW5lclF1ZXJ5RXZhbHVhdG9yOjpldmFsdWF0ZUZlYXR1cmUoY29uc3QgTVE6
OkZlYXR1cmUmIHNpemVGZWF0dXJlLCBjbwogICAgIGlmICghaGFzRWxpZ2libGVDb250YWlubWVu
dCgpKQogICAgICAgICByZXR1cm4gTVE6OkV2YWx1YXRpb25SZXN1bHQ6OlVua25vd247CiAKLSAg
ICBpZiAoc2l6ZUZlYXR1cmUubmFtZSA9PSBDUTo6RmVhdHVyZU5hbWVzOjp3aWR0aCgpKQotICAg
ICAgICByZXR1cm4gZXZhbHVhdGVMZW5ndGhGZWF0dXJlKHNpemVGZWF0dXJlLCByZW5kZXJlci5j
b250ZW50V2lkdGgoKSwgY29udGFpbmVyLmNvbnZlcnNpb25EYXRhKTsKKyAgICBpZiAoc2l6ZUZl
YXR1cmUuc2NoZW1hID09ICZDUTo6RmVhdHVyZVNjaGVtYXM6OndpZHRoKCkpCisgICAgICAgIHJl
dHVybiBldmFsdWF0ZUxlbmd0aEZlYXR1cmUoc2l6ZUZlYXR1cmUsIHJlbmRlcmVyLmNvbnRlbnRX
aWR0aCgpLCBjb250ZXh0LmNvbnZlcnNpb25EYXRhKTsKIAotICAgIGlmIChzaXplRmVhdHVyZS5u
YW1lID09IENROjpGZWF0dXJlTmFtZXM6OmhlaWdodCgpKQotICAgICAgICByZXR1cm4gZXZhbHVh
dGVMZW5ndGhGZWF0dXJlKHNpemVGZWF0dXJlLCByZW5kZXJlci5jb250ZW50SGVpZ2h0KCksIGNv
bnRhaW5lci5jb252ZXJzaW9uRGF0YSk7CisgICAgaWYgKHNpemVGZWF0dXJlLnNjaGVtYSA9PSAm
Q1E6OkZlYXR1cmVTY2hlbWFzOjpoZWlnaHQoKSkKKyAgICAgICAgcmV0dXJuIGV2YWx1YXRlTGVu
Z3RoRmVhdHVyZShzaXplRmVhdHVyZSwgcmVuZGVyZXIuY29udGVudEhlaWdodCgpLCBjb250ZXh0
LmNvbnZlcnNpb25EYXRhKTsKIAotICAgIGlmIChzaXplRmVhdHVyZS5uYW1lID09IENROjpGZWF0
dXJlTmFtZXM6OmlubGluZVNpemUoKSkKLSAgICAgICAgcmV0dXJuIGV2YWx1YXRlTGVuZ3RoRmVh
dHVyZShzaXplRmVhdHVyZSwgcmVuZGVyZXIuY29udGVudExvZ2ljYWxXaWR0aCgpLCBjb250YWlu
ZXIuY29udmVyc2lvbkRhdGEpOworICAgIGlmIChzaXplRmVhdHVyZS5zY2hlbWEgPT0gJkNROjpG
ZWF0dXJlU2NoZW1hczo6aW5saW5lU2l6ZSgpKQorICAgICAgICByZXR1cm4gZXZhbHVhdGVMZW5n
dGhGZWF0dXJlKHNpemVGZWF0dXJlLCByZW5kZXJlci5jb250ZW50TG9naWNhbFdpZHRoKCksIGNv
bnRleHQuY29udmVyc2lvbkRhdGEpOwogCi0gICAgaWYgKHNpemVGZWF0dXJlLm5hbWUgPT0gQ1E6
OkZlYXR1cmVOYW1lczo6YmxvY2tTaXplKCkpCi0gICAgICAgIHJldHVybiBldmFsdWF0ZUxlbmd0
aEZlYXR1cmUoc2l6ZUZlYXR1cmUsIHJlbmRlcmVyLmNvbnRlbnRMb2dpY2FsSGVpZ2h0KCksIGNv
bnRhaW5lci5jb252ZXJzaW9uRGF0YSk7CisgICAgaWYgKHNpemVGZWF0dXJlLnNjaGVtYSA9PSAm
Q1E6OkZlYXR1cmVTY2hlbWFzOjpibG9ja1NpemUoKSkKKyAgICAgICAgcmV0dXJuIGV2YWx1YXRl
TGVuZ3RoRmVhdHVyZShzaXplRmVhdHVyZSwgcmVuZGVyZXIuY29udGVudExvZ2ljYWxIZWlnaHQo
KSwgY29udGV4dC5jb252ZXJzaW9uRGF0YSk7CiAKLSAgICBpZiAoc2l6ZUZlYXR1cmUubmFtZSA9
PSBDUTo6RmVhdHVyZU5hbWVzOjphc3BlY3RSYXRpbygpKSB7CisgICAgaWYgKHNpemVGZWF0dXJl
LnNjaGVtYSA9PSAmQ1E6OkZlYXR1cmVTY2hlbWFzOjphc3BlY3RSYXRpbygpKSB7CiAgICAgICAg
IGF1dG8gYm94UmF0aW8gPSByZW5kZXJlci5jb250ZW50V2lkdGgoKS50b0RvdWJsZSgpIC8gcmVu
ZGVyZXIuY29udGVudEhlaWdodCgpLnRvRG91YmxlKCk7CiAgICAgICAgIHJldHVybiBldmFsdWF0
ZVJhdGlvRmVhdHVyZShzaXplRmVhdHVyZSwgYm94UmF0aW8pOwogICAgIH0KIAotICAgIGlmIChz
aXplRmVhdHVyZS5uYW1lID09IENROjpGZWF0dXJlTmFtZXM6Om9yaWVudGF0aW9uKCkpIHsKKyAg
ICBpZiAoc2l6ZUZlYXR1cmUuc2NoZW1hID09ICZDUTo6RmVhdHVyZVNjaGVtYXM6Om9yaWVudGF0
aW9uKCkpIHsKICAgICAgICAgYm9vbCBpc1BvcnRyYWl0ID0gcmVuZGVyZXIuY29udGVudEhlaWdo
dCgpID49IHJlbmRlcmVyLmNvbnRlbnRXaWR0aCgpOwogICAgICAgICByZXR1cm4gZXZhbHVhdGVE
aXNjcmV0ZUZlYXR1cmUoc2l6ZUZlYXR1cmUsIGlzUG9ydHJhaXQgPyBDU1NWYWx1ZVBvcnRyYWl0
IDogQ1NTVmFsdWVMYW5kc2NhcGUpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3N0eWxlL0NvbnRhaW5lclF1ZXJ5RXZhbHVhdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9D
b250YWluZXJRdWVyeUV2YWx1YXRvci5oCmluZGV4IDQzMWM5MTJiMDJkYy4uMTc4YWY4NTFhMTcy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9Db250YWluZXJRdWVyeUV2YWx1YXRv
ci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N0eWxlL0NvbnRhaW5lclF1ZXJ5RXZhbHVhdG9yLmgK
QEAgLTQ1LDExICs0NSwxMCBAQCBwdWJsaWM6CiAKICAgICBzdGF0aWMgY29uc3QgRWxlbWVudCog
c2VsZWN0Q29udGFpbmVyKE9wdGlvblNldDxDUTo6QXhpcz4sIGNvbnN0IFN0cmluZyYgbmFtZSwg
Y29uc3QgRWxlbWVudCYsIFNlbGVjdGlvbk1vZGUgPSBTZWxlY3Rpb25Nb2RlOjpFbGVtZW50LCBT
Y29wZU9yZGluYWwgPSBTY29wZU9yZGluYWw6OkVsZW1lbnQsIGNvbnN0IENhY2hlZFF1ZXJ5Q29u
dGFpbmVycyogPSBudWxscHRyKTsKIAotICAgIHN0cnVjdCBTZWxlY3RlZENvbnRhaW5lcjsKLSAg
ICBNUTo6RXZhbHVhdGlvblJlc3VsdCBldmFsdWF0ZUZlYXR1cmUoY29uc3QgTVE6OkZlYXR1cmUm
LCBjb25zdCBTZWxlY3RlZENvbnRhaW5lciYpIGNvbnN0OworICAgIE1ROjpFdmFsdWF0aW9uUmVz
dWx0IGV2YWx1YXRlRmVhdHVyZShjb25zdCBNUTo6RmVhdHVyZSYsIGNvbnN0IEZlYXR1cmVFdmFs
dWF0aW9uQ29udGV4dCYpIGNvbnN0OwogCiBwcml2YXRlOgotICAgIHN0ZDo6b3B0aW9uYWw8U2Vs
ZWN0ZWRDb250YWluZXI+IHNlbGVjdENvbnRhaW5lcihjb25zdCBDUTo6Q29udGFpbmVyUXVlcnkm
KSBjb25zdDsKKyAgICBzdGQ6Om9wdGlvbmFsPEZlYXR1cmVFdmFsdWF0aW9uQ29udGV4dD4gZmVh
dHVyZUV2YWx1YXRpb25Db250ZXh0Rm9yUXVlcnkoY29uc3QgQ1E6OkNvbnRhaW5lclF1ZXJ5Jikg
Y29uc3Q7CiAKICAgICBjb25zdCBSZWY8Y29uc3QgRWxlbWVudD4gbV9lbGVtZW50OwogICAgIGNv
bnN0IFNlbGVjdGlvbk1vZGUgbV9zZWxlY3Rpb25Nb2RlOwo=
</data>

          </attachment>
      

    </bug>

</bugzilla>