<?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>200744</bug_id>
          
          <creation_ts>2019-08-14 17:00:13 -0700</creation_ts>
          <short_desc>Don&apos;t use union to store NodeRareData* and RenderObject*</short_desc>
          <delta_ts>2020-09-02 11:22:05 -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>DOM</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=216069</see_also>
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Ryosuke Niwa">rniwa</reporter>
          <assigned_to name="Ryosuke Niwa">rniwa</assigned_to>
          <cc>benjamin</cc>
    
    <cc>bfulgham</cc>
    
    <cc>cdumez</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>dbates</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>fpizlo</cc>
    
    <cc>ggaren</cc>
    
    <cc>kangil.han</cc>
    
    <cc>koivisto</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>ysuzuki</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1561390</commentid>
    <comment_count>0</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2019-08-14 17:00:13 -0700</bug_when>
    <thetext>Don&apos;t use union for NodeRareData* and RenderObject*. That can lead to type confusion bugs.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1561391</commentid>
    <comment_count>1</comment_count>
      <attachid>376334</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2019-08-14 17:00:35 -0700</bug_when>
    <thetext>Created attachment 376334
WIP - simple patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1561502</commentid>
    <comment_count>2</comment_count>
      <attachid>376367</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2019-08-15 01:05:05 -0700</bug_when>
    <thetext>Created attachment 376367
WIP2

Compensating the size increase of Node by moving some element flags to Node. Somehow this causes focus within tests to fail. I can&apos;t spot a bug anywhere...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1561504</commentid>
    <comment_count>3</comment_count>
      <attachid>376367</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2019-08-15 01:06:53 -0700</bug_when>
    <thetext>Comment on attachment 376367
WIP2

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

&gt; Source/WebCore/dom/Node.h:541
&gt; +        StyleAffectedByFocusWithinFlag = 1 &lt; 11,

Ugh... what a stupid bug. I need &lt;&lt;, not &lt;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1561507</commentid>
    <comment_count>4</comment_count>
      <attachid>376369</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2019-08-15 01:33:39 -0700</bug_when>
    <thetext>Created attachment 376369
WIP3</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1561789</commentid>
    <comment_count>5</comment_count>
      <attachid>376431</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2019-08-15 15:21:24 -0700</bug_when>
    <thetext>Created attachment 376431
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1562334</commentid>
    <comment_count>6</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2019-08-16 17:41:06 -0700</bug_when>
    <thetext>Committed r248807: &lt;https://trac.webkit.org/changeset/248807&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1562335</commentid>
    <comment_count>7</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2019-08-16 17:42:17 -0700</bug_when>
    <thetext>&lt;rdar://problem/54415130&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>376334</attachid>
            <date>2019-08-14 17:00:35 -0700</date>
            <delta_ts>2019-08-15 15:21:21 -0700</delta_ts>
            <desc>WIP - simple patch</desc>
            <filename>remove-union.patch</filename>
            <type>text/plain</type>
            <size>6767</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50UmFyZURhdGEuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudFJhcmVEYXRhLmgJKHJldmlzaW9uIDI0ODQ2MikK
KysrIFNvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50UmFyZURhdGEuaAkod29ya2luZyBjb3B5KQpA
QCAtNDIsNyArNDIsNyBAQAogCiBjbGFzcyBFbGVtZW50UmFyZURhdGEgOiBwdWJsaWMgTm9kZVJh
cmVEYXRhIHsKIHB1YmxpYzoKLSAgICBleHBsaWNpdCBFbGVtZW50UmFyZURhdGEoUmVuZGVyRWxl
bWVudCopOworICAgIGV4cGxpY2l0IEVsZW1lbnRSYXJlRGF0YSgpOwogICAgIH5FbGVtZW50UmFy
ZURhdGEoKTsKIAogICAgIHZvaWQgc2V0QmVmb3JlUHNldWRvRWxlbWVudChSZWZQdHI8UHNldWRv
RWxlbWVudD4mJik7CkBAIC0xODIsOCArMTgyLDggQEAKICNlbmRpZgogCiBwcml2YXRlOgotICAg
IGludCBtX3RhYkluZGV4OwotICAgIHVuc2lnbmVkIHNob3J0IG1fY2hpbGRJbmRleDsKKyAgICBp
bnQgbV90YWJJbmRleCB7IDAgfTsKKyAgICB1bnNpZ25lZCBzaG9ydCBtX2NoaWxkSW5kZXggeyAw
IH07CiAgICAgdW5zaWduZWQgbV90YWJJbmRleFdhc1NldEV4cGxpY2l0bHkgOiAxOwogICAgIHVu
c2lnbmVkIG1fc3R5bGVBZmZlY3RlZEJ5QWN0aXZlIDogMTsKICAgICB1bnNpZ25lZCBtX3N0eWxl
QWZmZWN0ZWRCeUVtcHR5IDogMTsKQEAgLTIzMywxMSArMjMzLDggQEAKICAgICB2b2lkIHJlbGVh
c2VQc2V1ZG9FbGVtZW50KFBzZXVkb0VsZW1lbnQqKTsKIH07CiAKLWlubGluZSBFbGVtZW50UmFy
ZURhdGE6OkVsZW1lbnRSYXJlRGF0YShSZW5kZXJFbGVtZW50KiByZW5kZXJlcikKLSAgICA6IE5v
ZGVSYXJlRGF0YShyZW5kZXJlcikKLSAgICAsIG1fdGFiSW5kZXgoMCkKLSAgICAsIG1fY2hpbGRJ
bmRleCgwKQotICAgICwgbV90YWJJbmRleFdhc1NldEV4cGxpY2l0bHkoZmFsc2UpCitpbmxpbmUg
RWxlbWVudFJhcmVEYXRhOjpFbGVtZW50UmFyZURhdGEoKQorICAgIDogbV90YWJJbmRleFdhc1Nl
dEV4cGxpY2l0bHkoZmFsc2UpCiAgICAgLCBtX3N0eWxlQWZmZWN0ZWRCeUFjdGl2ZShmYWxzZSkK
ICAgICAsIG1fc3R5bGVBZmZlY3RlZEJ5RW1wdHkoZmFsc2UpCiAgICAgLCBtX3N0eWxlQWZmZWN0
ZWRCeUZvY3VzV2l0aGluKGZhbHNlKQpJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL05vZGUuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmNwcAkocmV2aXNpb24gMjQ4
NDYyKQorKysgU291cmNlL1dlYkNvcmUvZG9tL05vZGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0z
OTYsMTQgKzM5NiwxMCBAQAogCiB2b2lkIE5vZGU6Om1hdGVyaWFsaXplUmFyZURhdGEoKQogewot
ICAgIE5vZGVSYXJlRGF0YSogZGF0YTsKICAgICBpZiAoaXM8RWxlbWVudD4oKnRoaXMpKQotICAg
ICAgICBkYXRhID0gc3RkOjptYWtlX3VuaXF1ZTxFbGVtZW50UmFyZURhdGE+KGRvd25jYXN0PFJl
bmRlckVsZW1lbnQ+KG1fZGF0YS5tX3JlbmRlcmVyKSkucmVsZWFzZSgpOworICAgICAgICBtX3Jh
cmVEYXRhID0gc3RkOjptYWtlX3VuaXF1ZTxFbGVtZW50UmFyZURhdGE+KCk7CiAgICAgZWxzZQot
ICAgICAgICBkYXRhID0gc3RkOjptYWtlX3VuaXF1ZTxOb2RlUmFyZURhdGE+KG1fZGF0YS5tX3Jl
bmRlcmVyKS5yZWxlYXNlKCk7Ci0gICAgQVNTRVJUKGRhdGEpOwotCi0gICAgbV9kYXRhLm1fcmFy
ZURhdGEgPSBkYXRhOworICAgICAgICBtX3JhcmVEYXRhID0gc3RkOjptYWtlX3VuaXF1ZTxOb2Rl
UmFyZURhdGE+KCk7CiAgICAgc2V0RmxhZyhIYXNSYXJlRGF0YUZsYWcpOwogfQogCkBAIC00MTIs
MTIgKzQwOCw3IEBACiAgICAgQVNTRVJUKGhhc1JhcmVEYXRhKCkpOwogICAgIEFTU0VSVCghdHJh
bnNpZW50TXV0YXRpb25PYnNlcnZlclJlZ2lzdHJ5KCkgfHwgdHJhbnNpZW50TXV0YXRpb25PYnNl
cnZlclJlZ2lzdHJ5KCktPmlzRW1wdHkoKSk7CiAKLSAgICBSZW5kZXJPYmplY3QqIHJlbmRlcmVy
ID0gbV9kYXRhLm1fcmFyZURhdGEtPnJlbmRlcmVyKCk7Ci0gICAgaWYgKGlzRWxlbWVudE5vZGUo
KSkKLSAgICAgICAgZGVsZXRlIHN0YXRpY19jYXN0PEVsZW1lbnRSYXJlRGF0YSo+KG1fZGF0YS5t
X3JhcmVEYXRhKTsKLSAgICBlbHNlCi0gICAgICAgIGRlbGV0ZSBzdGF0aWNfY2FzdDxOb2RlUmFy
ZURhdGEqPihtX2RhdGEubV9yYXJlRGF0YSk7Ci0gICAgbV9kYXRhLm1fcmVuZGVyZXIgPSByZW5k
ZXJlcjsKKyAgICBtX3JhcmVEYXRhID0gbnVsbHB0cjsKICAgICBjbGVhckZsYWcoSGFzUmFyZURh
dGFGbGFnKTsKIH0KIApJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL05vZGUuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5oCShyZXZpc2lvbiAyNDg0NjIpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9kb20vTm9kZS5oCSh3b3JraW5nIGNvcHkpCkBAIC02NCwyMCArNjQsNiBAQAog
CiB1c2luZyBOb2RlT3JTdHJpbmcgPSBWYXJpYW50PFJlZlB0cjxOb2RlPiwgU3RyaW5nPjsKIAot
Y2xhc3MgTm9kZVJhcmVEYXRhQmFzZSB7Ci1wdWJsaWM6Ci0gICAgUmVuZGVyT2JqZWN0KiByZW5k
ZXJlcigpIGNvbnN0IHsgcmV0dXJuIG1fcmVuZGVyZXI7IH0KLSAgICB2b2lkIHNldFJlbmRlcmVy
KFJlbmRlck9iamVjdCogcmVuZGVyZXIpIHsgbV9yZW5kZXJlciA9IHJlbmRlcmVyOyB9Ci0KLXBy
b3RlY3RlZDoKLSAgICBOb2RlUmFyZURhdGFCYXNlKFJlbmRlck9iamVjdCogcmVuZGVyZXIpCi0g
ICAgICAgIDogbV9yZW5kZXJlcihyZW5kZXJlcikKLSAgICB7IH0KLQotcHJpdmF0ZToKLSAgICBS
ZW5kZXJPYmplY3QqIG1fcmVuZGVyZXI7Ci19OwotCiBjbGFzcyBOb2RlIDogcHVibGljIEV2ZW50
VGFyZ2V0IHsKICAgICBXVEZfTUFLRV9JU09fQUxMT0NBVEVEKE5vZGUpOwogCkBAIC00MTAsMTQg
KzM5Niw4IEBACiAgICAgLy8gSW50ZWdyYXRpb24gd2l0aCByZW5kZXJpbmcgdHJlZQogCiAgICAg
Ly8gQXMgcmVuZGVyZXIoKSBpbmNsdWRlcyBhIGJyYW5jaCB5b3Ugc2hvdWxkIGF2b2lkIGNhbGxp
bmcgaXQgcmVwZWF0ZWRseSBpbiBob3QgY29kZSBwYXRocy4KLSAgICBSZW5kZXJPYmplY3QqIHJl
bmRlcmVyKCkgY29uc3QgeyByZXR1cm4gaGFzUmFyZURhdGEoKSA/IG1fZGF0YS5tX3JhcmVEYXRh
LT5yZW5kZXJlcigpIDogbV9kYXRhLm1fcmVuZGVyZXI7IH07Ci0gICAgdm9pZCBzZXRSZW5kZXJl
cihSZW5kZXJPYmplY3QqIHJlbmRlcmVyKQotICAgIHsKLSAgICAgICAgaWYgKGhhc1JhcmVEYXRh
KCkpCi0gICAgICAgICAgICBtX2RhdGEubV9yYXJlRGF0YS0+c2V0UmVuZGVyZXIocmVuZGVyZXIp
OwotICAgICAgICBlbHNlCi0gICAgICAgICAgICBtX2RhdGEubV9yZW5kZXJlciA9IHJlbmRlcmVy
OwotICAgIH0KKyAgICBSZW5kZXJPYmplY3QqIHJlbmRlcmVyKCkgY29uc3QgeyByZXR1cm4gbV9y
ZW5kZXJlcjsgfQorICAgIHZvaWQgc2V0UmVuZGVyZXIoUmVuZGVyT2JqZWN0KiByZW5kZXJlcikg
eyBtX3JlbmRlcmVyID0gcmVuZGVyZXI7IH0KIAogICAgIC8vIFVzZSB0aGVzZSB0d28gbWV0aG9k
cyB3aXRoIGNhdXRpb24uCiAgICAgV0VCQ09SRV9FWFBPUlQgUmVuZGVyQm94KiByZW5kZXJCb3go
KSBjb25zdDsKQEAgLTUyOCw3ICs1MDgsNyBAQAogCiAjaWYgRU5BQkxFKEpJVCkKICAgICBzdGF0
aWMgcHRyZGlmZl90IG5vZGVGbGFnc01lbW9yeU9mZnNldCgpIHsgcmV0dXJuIE9CSkVDVF9PRkZT
RVRPRihOb2RlLCBtX25vZGVGbGFncyk7IH0KLSAgICBzdGF0aWMgcHRyZGlmZl90IHJhcmVEYXRh
TWVtb3J5T2Zmc2V0KCkgeyByZXR1cm4gT0JKRUNUX09GRlNFVE9GKE5vZGUsIG1fZGF0YS5tX3Jh
cmVEYXRhKTsgfQorICAgIHN0YXRpYyBwdHJkaWZmX3QgcmFyZURhdGFNZW1vcnlPZmZzZXQoKSB7
IHJldHVybiBPQkpFQ1RfT0ZGU0VUT0YoTm9kZSwgbV9yYXJlRGF0YSk7IH0KICAgICBzdGF0aWMg
aW50MzJfdCBmbGFnSXNUZXh0KCkgeyByZXR1cm4gSXNUZXh0RmxhZzsgfQogICAgIHN0YXRpYyBp
bnQzMl90IGZsYWdJc0NvbnRhaW5lcigpIHsgcmV0dXJuIElzQ29udGFpbmVyRmxhZzsgfQogICAg
IHN0YXRpYyBpbnQzMl90IGZsYWdJc0VsZW1lbnQoKSB7IHJldHVybiBJc0VsZW1lbnRGbGFnOyB9
CkBAIC02MjQsNyArNjA0LDcgQEAKIAogICAgIGJvb2wgaGFzUmFyZURhdGEoKSBjb25zdCB7IHJl
dHVybiBnZXRGbGFnKEhhc1JhcmVEYXRhRmxhZyk7IH0KIAotICAgIE5vZGVSYXJlRGF0YSogcmFy
ZURhdGEoKSBjb25zdDsKKyAgICBOb2RlUmFyZURhdGEqIHJhcmVEYXRhKCkgY29uc3QgeyByZXR1
cm4gbV9yYXJlRGF0YS5nZXQoKTsgfQogICAgIE5vZGVSYXJlRGF0YSYgZW5zdXJlUmFyZURhdGEo
KTsKICAgICB2b2lkIGNsZWFyUmFyZURhdGEoKTsKIApAQCAtNjczLDExICs2NTMsOCBAQAogICAg
IFRyZWVTY29wZSogbV90cmVlU2NvcGUgeyBudWxscHRyIH07CiAgICAgTm9kZSogbV9wcmV2aW91
cyB7IG51bGxwdHIgfTsKICAgICBOb2RlKiBtX25leHQgeyBudWxscHRyIH07Ci0gICAgLy8gV2hl
biBhIG5vZGUgaGFzIHJhcmUgZGF0YSB3ZSBtb3ZlIHRoZSByZW5kZXJlciBpbnRvIHRoZSByYXJl
IGRhdGEuCi0gICAgdW5pb24gRGF0YVVuaW9uIHsKLSAgICAgICAgUmVuZGVyT2JqZWN0KiBtX3Jl
bmRlcmVyOwotICAgICAgICBOb2RlUmFyZURhdGFCYXNlKiBtX3JhcmVEYXRhOwotICAgIH0gbV9k
YXRhIHsgbnVsbHB0ciB9OworICAgIFJlbmRlck9iamVjdCogbV9yZW5kZXJlciB7IG51bGxwdHIg
fTsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8Tm9kZVJhcmVEYXRhPiBtX3JhcmVEYXRhOwogfTsKIAog
I2lmbmRlZiBOREVCVUcKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlUmFyZURhdGEuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlUmFyZURhdGEuY3BwCShyZXZp
c2lvbiAyNDg0NjIpCisrKyBTb3VyY2UvV2ViQ29yZS9kb20vTm9kZVJhcmVEYXRhLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMzcsNyArMzcsNyBAQAogCiBzdHJ1Y3QgU2FtZVNpemVBc05vZGVSYXJl
RGF0YSB7CiAgICAgdW5zaWduZWQgbV9iaXRmaWVsZHMgOiAyMDsKLSAgICB2b2lkKiBtX3BvaW50
ZXJbM107CisgICAgdm9pZCogbV9wb2ludGVyWzJdOwogfTsKIAogQ09NUElMRV9BU1NFUlQoc2l6
ZW9mKE5vZGVSYXJlRGF0YSkgPT0gc2l6ZW9mKFNhbWVTaXplQXNOb2RlUmFyZURhdGEpLCBOb2Rl
UmFyZURhdGFTaG91bGRTdGF5U21hbGwpOwpJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL05vZGVS
YXJlRGF0YS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlUmFyZURhdGEu
aAkocmV2aXNpb24gMjQ4NDYyKQorKysgU291cmNlL1dlYkNvcmUvZG9tL05vZGVSYXJlRGF0YS5o
CSh3b3JraW5nIGNvcHkpCkBAIC0yNDcsNyArMjQ3LDcgQEAKICAgICBOb2RlTXV0YXRpb25PYnNl
cnZlckRhdGEoKSB7IH0KIH07CiAKLWNsYXNzIE5vZGVSYXJlRGF0YSA6IHB1YmxpYyBOb2RlUmFy
ZURhdGFCYXNlIHsKK2NsYXNzIE5vZGVSYXJlRGF0YSB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFC
TEUoTm9kZVJhcmVEYXRhKTsgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAjaWYg
ZGVmaW5lZChEVU1QX05PREVfU1RBVElTVElDUykgJiYgRFVNUF9OT0RFX1NUQVRJU1RJQ1MKQEAg
LTI3MSw5ICsyNzEsNyBAQAogICAgIH07CiAjZW5kaWYKIAotICAgIE5vZGVSYXJlRGF0YShSZW5k
ZXJPYmplY3QqIHJlbmRlcmVyKQotICAgICAgICA6IE5vZGVSYXJlRGF0YUJhc2UocmVuZGVyZXIp
Ci0gICAgICAgICwgbV9jb25uZWN0ZWRGcmFtZUNvdW50KDApCisgICAgTm9kZVJhcmVEYXRhKCkK
ICAgICB7IH0KIAogICAgIHZvaWQgY2xlYXJOb2RlTGlzdHMoKSB7IG1fbm9kZUxpc3RzID0gbnVs
bHB0cjsgfQpAQCAtMzIwLDcgKzMxOCw3IEBACiAjZW5kaWYKIAogcHJpdmF0ZToKLSAgICB1bnNp
Z25lZCBtX2Nvbm5lY3RlZEZyYW1lQ291bnQ7IC8vIE11c3QgZml0IFBhZ2U6Om1heE51bWJlck9m
RnJhbWVzLgorICAgIHVuc2lnbmVkIG1fY29ubmVjdGVkRnJhbWVDb3VudCB7IDAgfTsgLy8gTXVz
dCBmaXQgUGFnZTo6bWF4TnVtYmVyT2ZGcmFtZXMuCiAKICAgICBzdGQ6OnVuaXF1ZV9wdHI8Tm9k
ZUxpc3RzTm9kZURhdGE+IG1fbm9kZUxpc3RzOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxOb2RlTXV0
YXRpb25PYnNlcnZlckRhdGE+IG1fbXV0YXRpb25PYnNlcnZlckRhdGE7CkBAIC0zMzYsMTIgKzMz
NCw2IEBACiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWlubGluZSBOb2RlUmFyZURhdGEqIE5vZGU6
OnJhcmVEYXRhKCkgY29uc3QKLXsKLSAgICBBU1NFUlRfV0lUSF9TRUNVUklUWV9JTVBMSUNBVElP
TihoYXNSYXJlRGF0YSgpKTsKLSAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Tm9kZVJhcmVEYXRhKj4o
bV9kYXRhLm1fcmFyZURhdGEpOwotfQotCiBpbmxpbmUgTm9kZVJhcmVEYXRhJiBOb2RlOjplbnN1
cmVSYXJlRGF0YSgpCiB7CiAgICAgaWYgKCFoYXNSYXJlRGF0YSgpKQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>376367</attachid>
            <date>2019-08-15 01:05:05 -0700</date>
            <delta_ts>2019-08-15 01:25:10 -0700</delta_ts>
            <desc>WIP2</desc>
            <filename>wip200744b.patch</filename>
            <type>text/plain</type>
            <size>30210</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XVEYvd3RmL0NvbXBhY3RQb2ludGVyVHVwbGUuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV1RGL3d0Zi9Db21wYWN0UG9pbnRlclR1cGxlLmgJKHJldmlzaW9uIDI0ODQ2MikK
KysrIFNvdXJjZS9XVEYvd3RmL0NvbXBhY3RQb2ludGVyVHVwbGUuaAkod29ya2luZyBjb3B5KQpA
QCAtMzksNyArMzksNiBAQAogcHVibGljOgogICAgIHN0YXRpY19hc3NlcnQoc2l6ZW9mKFR5cGUp
ID09IDEsICIiKTsKICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfcG9pbnRlcjxQb2ludGVyVHlw
ZT46OnZhbHVlLCAiIik7Ci0gICAgc3RhdGljX2Fzc2VydChhbGlnbm9mKHR5cGVuYW1lIHN0ZDo6
cmVtb3ZlX3BvaW50ZXI8UG9pbnRlclR5cGU+Ojp0eXBlKSA+PSBhbGlnbm9mKHZvaWQqKSwgIiIp
OwogICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc19pbnRlZ3JhbDxUeXBlPjo6dmFsdWUgfHwgc3Rk
Ojppc19lbnVtPFR5cGU+Ojp2YWx1ZSwgIiIpOwogCiAgICAgQ29tcGFjdFBvaW50ZXJUdXBsZSgp
ID0gZGVmYXVsdDsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Nzc2ppdC9TZWxlY3RvckNvbXBpbGVy
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9jc3NqaXQvU2VsZWN0b3JDb21waWxl
ci5jcHAJKHJldmlzaW9uIDI0ODQ2MikKKysrIFNvdXJjZS9XZWJDb3JlL2Nzc2ppdC9TZWxlY3Rv
ckNvbXBpbGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzYwMiwxMCArMzYwMiwxMiBAQAogCiAg
ICAgICAgIEFzc2VtYmxlcjo6SnVtcExpc3Qgbm9DYWNoZWRDaGlsZEluZGV4Q2FzZXM7CiAgICAg
ICAgIGdlbmVyYXRlV2Fsa1RvUHJldmlvdXNBZGphY2VudEVsZW1lbnQobm9Nb3JlU2libGluZ3ND
YXNlcywgcHJldmlvdXNTaWJsaW5nKTsKLSAgICAgICAgbm9DYWNoZWRDaGlsZEluZGV4Q2FzZXMu
YXBwZW5kKG1fYXNzZW1ibGVyLmJyYW5jaFRlc3QzMihBc3NlbWJsZXI6Olplcm8sIEFzc2VtYmxl
cjo6QWRkcmVzcyhwcmV2aW91c1NpYmxpbmcsIE5vZGU6Om5vZGVGbGFnc01lbW9yeU9mZnNldCgp
KSwgQXNzZW1ibGVyOjpUcnVzdGVkSW1tMzIoTm9kZTo6ZmxhZ0hhc1JhcmVEYXRhKCkpKSk7CisK
KyAgICAgICAgTG9jYWxSZWdpc3RlciBlbGVtZW50UmFyZURhdGEobV9yZWdpc3RlckFsbG9jYXRv
cik7CisgICAgICAgIG1fYXNzZW1ibGVyLmxvYWRQdHIoQXNzZW1ibGVyOjpBZGRyZXNzKHByZXZp
b3VzU2libGluZywgTm9kZTo6cmFyZURhdGFNZW1vcnlPZmZzZXQoKSksIGVsZW1lbnRSYXJlRGF0
YSk7CisKKyAgICAgICAgbm9DYWNoZWRDaGlsZEluZGV4Q2FzZXMuYXBwZW5kKG1fYXNzZW1ibGVy
LmJyYW5jaFRlc3RQdHIoQXNzZW1ibGVyOjpaZXJvLCBlbGVtZW50UmFyZURhdGEpKTsKICAgICAg
ICAgewotICAgICAgICAgICAgTG9jYWxSZWdpc3RlciBlbGVtZW50UmFyZURhdGEobV9yZWdpc3Rl
ckFsbG9jYXRvcik7Ci0gICAgICAgICAgICBtX2Fzc2VtYmxlci5sb2FkUHRyKEFzc2VtYmxlcjo6
QWRkcmVzcyhwcmV2aW91c1NpYmxpbmcsIE5vZGU6OnJhcmVEYXRhTWVtb3J5T2Zmc2V0KCkpLCBl
bGVtZW50UmFyZURhdGEpOwogICAgICAgICAgICAgTG9jYWxSZWdpc3RlciBjYWNoZWRDaGlsZElu
ZGV4KG1fcmVnaXN0ZXJBbGxvY2F0b3IpOwogICAgICAgICAgICAgbV9hc3NlbWJsZXIubG9hZDE2
KEFzc2VtYmxlcjo6QWRkcmVzcyhlbGVtZW50UmFyZURhdGEsIEVsZW1lbnRSYXJlRGF0YTo6Y2hp
bGRJbmRleE1lbW9yeU9mZnNldCgpKSwgY2FjaGVkQ2hpbGRJbmRleCk7CiAgICAgICAgICAgICBu
b0NhY2hlZENoaWxkSW5kZXhDYXNlcy5hcHBlbmQobV9hc3NlbWJsZXIuYnJhbmNoVGVzdDMyKEFz
c2VtYmxlcjo6WmVybywgY2FjaGVkQ2hpbGRJbmRleCkpOwpJbmRleDogU291cmNlL1dlYkNvcmUv
ZG9tL0VsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50
LmNwcAkocmV2aXNpb24gMjQ4NDYyKQorKysgU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0zMjAzLDUxICszMjAzLDYgQEAKICAgICByZXR1cm4gdHJ1ZTsK
IH0KIAotdm9pZCBFbGVtZW50OjpzZXRTdHlsZUFmZmVjdGVkQnlFbXB0eSgpCi17Ci0gICAgZW5z
dXJlRWxlbWVudFJhcmVEYXRhKCkuc2V0U3R5bGVBZmZlY3RlZEJ5RW1wdHkodHJ1ZSk7Ci19Ci0K
LXZvaWQgRWxlbWVudDo6c2V0U3R5bGVBZmZlY3RlZEJ5Rm9jdXNXaXRoaW4oKQotewotICAgIGVu
c3VyZUVsZW1lbnRSYXJlRGF0YSgpLnNldFN0eWxlQWZmZWN0ZWRCeUZvY3VzV2l0aGluKHRydWUp
OwotfQotCi12b2lkIEVsZW1lbnQ6OnNldFN0eWxlQWZmZWN0ZWRCeUFjdGl2ZSgpCi17Ci0gICAg
ZW5zdXJlRWxlbWVudFJhcmVEYXRhKCkuc2V0U3R5bGVBZmZlY3RlZEJ5QWN0aXZlKHRydWUpOwot
fQotCi12b2lkIEVsZW1lbnQ6OnNldENoaWxkcmVuQWZmZWN0ZWRCeURyYWcoKQotewotICAgIGVu
c3VyZUVsZW1lbnRSYXJlRGF0YSgpLnNldENoaWxkcmVuQWZmZWN0ZWRCeURyYWcodHJ1ZSk7Ci19
Ci0KLXZvaWQgRWxlbWVudDo6c2V0Q2hpbGRyZW5BZmZlY3RlZEJ5Rm9yd2FyZFBvc2l0aW9uYWxS
dWxlcygpCi17Ci0gICAgZW5zdXJlRWxlbWVudFJhcmVEYXRhKCkuc2V0Q2hpbGRyZW5BZmZlY3Rl
ZEJ5Rm9yd2FyZFBvc2l0aW9uYWxSdWxlcyh0cnVlKTsKLX0KLQotdm9pZCBFbGVtZW50OjpzZXRE
ZXNjZW5kYW50c0FmZmVjdGVkQnlGb3J3YXJkUG9zaXRpb25hbFJ1bGVzKCkKLXsKLSAgICBlbnN1
cmVFbGVtZW50UmFyZURhdGEoKS5zZXREZXNjZW5kYW50c0FmZmVjdGVkQnlGb3J3YXJkUG9zaXRp
b25hbFJ1bGVzKHRydWUpOwotfQotCi12b2lkIEVsZW1lbnQ6OnNldENoaWxkcmVuQWZmZWN0ZWRC
eUJhY2t3YXJkUG9zaXRpb25hbFJ1bGVzKCkKLXsKLSAgICBlbnN1cmVFbGVtZW50UmFyZURhdGEo
KS5zZXRDaGlsZHJlbkFmZmVjdGVkQnlCYWNrd2FyZFBvc2l0aW9uYWxSdWxlcyh0cnVlKTsKLX0K
LQotdm9pZCBFbGVtZW50OjpzZXREZXNjZW5kYW50c0FmZmVjdGVkQnlCYWNrd2FyZFBvc2l0aW9u
YWxSdWxlcygpCi17Ci0gICAgZW5zdXJlRWxlbWVudFJhcmVEYXRhKCkuc2V0RGVzY2VuZGFudHNB
ZmZlY3RlZEJ5QmFja3dhcmRQb3NpdGlvbmFsUnVsZXModHJ1ZSk7Ci19Ci0KLXZvaWQgRWxlbWVu
dDo6c2V0Q2hpbGRyZW5BZmZlY3RlZEJ5UHJvcGVydHlCYXNlZEJhY2t3YXJkUG9zaXRpb25hbFJ1
bGVzKCkKLXsKLSAgICBlbnN1cmVFbGVtZW50UmFyZURhdGEoKS5zZXRDaGlsZHJlbkFmZmVjdGVk
QnlQcm9wZXJ0eUJhc2VkQmFja3dhcmRQb3NpdGlvbmFsUnVsZXModHJ1ZSk7Ci19Ci0KIHZvaWQg
RWxlbWVudDo6c2V0Q2hpbGRJbmRleCh1bnNpZ25lZCBpbmRleCkKIHsKICAgICBFbGVtZW50UmFy
ZURhdGEmIHJhcmVEYXRhID0gZW5zdXJlRWxlbWVudFJhcmVEYXRhKCk7CkBAIC0zMjU2LDc0ICsz
MjExLDMwIEBACiAKIGJvb2wgRWxlbWVudDo6aGFzRmxhZ3NTZXREdXJpbmdTdHlsaW5nT2ZDaGls
ZHJlbigpIGNvbnN0CiB7Ci0gICAgaWYgKGNoaWxkcmVuQWZmZWN0ZWRCeUhvdmVyKCkgfHwgY2hp
bGRyZW5BZmZlY3RlZEJ5Rmlyc3RDaGlsZFJ1bGVzKCkgfHwgY2hpbGRyZW5BZmZlY3RlZEJ5TGFz
dENoaWxkUnVsZXMoKSkKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0KLSAgICBpZiAoIWhhc1JhcmVE
YXRhKCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICByZXR1cm4gcmFyZURhdGFTdHlsZUFm
ZmVjdGVkQnlBY3RpdmUoKQotICAgICAgICB8fCByYXJlRGF0YUNoaWxkcmVuQWZmZWN0ZWRCeURy
YWcoKQotICAgICAgICB8fCByYXJlRGF0YUNoaWxkcmVuQWZmZWN0ZWRCeUZvcndhcmRQb3NpdGlv
bmFsUnVsZXMoKQotICAgICAgICB8fCByYXJlRGF0YURlc2NlbmRhbnRzQWZmZWN0ZWRCeUZvcndh
cmRQb3NpdGlvbmFsUnVsZXMoKQotICAgICAgICB8fCByYXJlRGF0YUNoaWxkcmVuQWZmZWN0ZWRC
eUJhY2t3YXJkUG9zaXRpb25hbFJ1bGVzKCkKLSAgICAgICAgfHwgcmFyZURhdGFEZXNjZW5kYW50
c0FmZmVjdGVkQnlCYWNrd2FyZFBvc2l0aW9uYWxSdWxlcygpCi0gICAgICAgIHx8IHJhcmVEYXRh
Q2hpbGRyZW5BZmZlY3RlZEJ5UHJvcGVydHlCYXNlZEJhY2t3YXJkUG9zaXRpb25hbFJ1bGVzKCk7
CisgICAgcmV0dXJuIHN0eWxlQWZmZWN0ZWRCeUFjdGl2ZSgpCisgICAgICAgIHx8IGNoaWxkcmVu
QWZmZWN0ZWRCeUhvdmVyKCkKKyAgICAgICAgfHwgY2hpbGRyZW5BZmZlY3RlZEJ5Rmlyc3RDaGls
ZFJ1bGVzKCkKKyAgICAgICAgfHwgY2hpbGRyZW5BZmZlY3RlZEJ5TGFzdENoaWxkUnVsZXMoKQor
ICAgICAgICB8fCBjaGlsZHJlbkFmZmVjdGVkQnlEcmFnKCkKKyAgICAgICAgfHwgY2hpbGRyZW5B
ZmZlY3RlZEJ5Rm9yd2FyZFBvc2l0aW9uYWxSdWxlcygpCisgICAgICAgIHx8IGRlc2NlbmRhbnRz
QWZmZWN0ZWRCeUZvcndhcmRQb3NpdGlvbmFsUnVsZXMoKQorICAgICAgICB8fCBjaGlsZHJlbkFm
ZmVjdGVkQnlCYWNrd2FyZFBvc2l0aW9uYWxSdWxlcygpCisgICAgICAgIHx8IGRlc2NlbmRhbnRz
QWZmZWN0ZWRCeUJhY2t3YXJkUG9zaXRpb25hbFJ1bGVzKCkKKyAgICAgICAgfHwgY2hpbGRyZW5B
ZmZlY3RlZEJ5UHJvcGVydHlCYXNlZEJhY2t3YXJkUG9zaXRpb25hbFJ1bGVzKCk7CiB9CiAKLWJv
b2wgRWxlbWVudDo6cmFyZURhdGFTdHlsZUFmZmVjdGVkQnlFbXB0eSgpIGNvbnN0Cit2b2lkIEVs
ZW1lbnQ6OnNldFN0eWxlQWZmZWN0ZWRCeUZvY3VzV2l0aGluKCkKIHsKLSAgICBBU1NFUlQoaGFz
UmFyZURhdGEoKSk7Ci0gICAgcmV0dXJuIGVsZW1lbnRSYXJlRGF0YSgpLT5zdHlsZUFmZmVjdGVk
QnlFbXB0eSgpOworICAgIHNldEZsYWcoU3R5bGVBZmZlY3RlZEJ5Rm9jdXNXaXRoaW5GbGFnKTsK
KyAgICBlbnN1cmVFbGVtZW50UmFyZURhdGEoKS5zZXRTdHlsZUFmZmVjdGVkQnlGb2N1c1dpdGhp
bih0cnVlKTsKIH0KIAotYm9vbCBFbGVtZW50OjpyYXJlRGF0YVN0eWxlQWZmZWN0ZWRCeUZvY3Vz
V2l0aGluKCkgY29uc3QKK2Jvb2wgRWxlbWVudDo6c3R5bGVBZmZlY3RlZEJ5Rm9jdXNXaXRoaW4o
KSBjb25zdAogewotICAgIEFTU0VSVChoYXNSYXJlRGF0YSgpKTsKLSAgICByZXR1cm4gZWxlbWVu
dFJhcmVEYXRhKCktPnN0eWxlQWZmZWN0ZWRCeUZvY3VzV2l0aGluKCk7CisgICAgQVNTRVJUKCho
YXNSYXJlRGF0YSgpICYmIGVsZW1lbnRSYXJlRGF0YSgpLT5zdHlsZUFmZmVjdGVkQnlGb2N1c1dp
dGhpbigpKSA9PSBnZXRGbGFnKFN0eWxlQWZmZWN0ZWRCeUZvY3VzV2l0aGluRmxhZykpOworICAg
IHJldHVybiBoYXNSYXJlRGF0YSgpICYmIGVsZW1lbnRSYXJlRGF0YSgpLT5zdHlsZUFmZmVjdGVk
QnlGb2N1c1dpdGhpbigpOwogfQogCi1ib29sIEVsZW1lbnQ6OnJhcmVEYXRhU3R5bGVBZmZlY3Rl
ZEJ5QWN0aXZlKCkgY29uc3QKLXsKLSAgICBBU1NFUlQoaGFzUmFyZURhdGEoKSk7Ci0gICAgcmV0
dXJuIGVsZW1lbnRSYXJlRGF0YSgpLT5zdHlsZUFmZmVjdGVkQnlBY3RpdmUoKTsKLX0KLQotYm9v
bCBFbGVtZW50OjpyYXJlRGF0YUNoaWxkcmVuQWZmZWN0ZWRCeURyYWcoKSBjb25zdAotewotICAg
IEFTU0VSVChoYXNSYXJlRGF0YSgpKTsKLSAgICByZXR1cm4gZWxlbWVudFJhcmVEYXRhKCktPmNo
aWxkcmVuQWZmZWN0ZWRCeURyYWcoKTsKLX0KLQotYm9vbCBFbGVtZW50OjpyYXJlRGF0YUNoaWxk
cmVuQWZmZWN0ZWRCeUZvcndhcmRQb3NpdGlvbmFsUnVsZXMoKSBjb25zdAotewotICAgIEFTU0VS
VChoYXNSYXJlRGF0YSgpKTsKLSAgICByZXR1cm4gZWxlbWVudFJhcmVEYXRhKCktPmNoaWxkcmVu
QWZmZWN0ZWRCeUZvcndhcmRQb3NpdGlvbmFsUnVsZXMoKTsKLX0KLQotYm9vbCBFbGVtZW50Ojpy
YXJlRGF0YURlc2NlbmRhbnRzQWZmZWN0ZWRCeUZvcndhcmRQb3NpdGlvbmFsUnVsZXMoKSBjb25z
dAotewotICAgIEFTU0VSVChoYXNSYXJlRGF0YSgpKTsKLSAgICByZXR1cm4gZWxlbWVudFJhcmVE
YXRhKCktPmRlc2NlbmRhbnRzQWZmZWN0ZWRCeUZvcndhcmRQb3NpdGlvbmFsUnVsZXMoKTsKLX0K
LQotYm9vbCBFbGVtZW50OjpyYXJlRGF0YUNoaWxkcmVuQWZmZWN0ZWRCeUJhY2t3YXJkUG9zaXRp
b25hbFJ1bGVzKCkgY29uc3QKLXsKLSAgICBBU1NFUlQoaGFzUmFyZURhdGEoKSk7Ci0gICAgcmV0
dXJuIGVsZW1lbnRSYXJlRGF0YSgpLT5jaGlsZHJlbkFmZmVjdGVkQnlCYWNrd2FyZFBvc2l0aW9u
YWxSdWxlcygpOwotfQotCi1ib29sIEVsZW1lbnQ6OnJhcmVEYXRhRGVzY2VuZGFudHNBZmZlY3Rl
ZEJ5QmFja3dhcmRQb3NpdGlvbmFsUnVsZXMoKSBjb25zdAotewotICAgIEFTU0VSVChoYXNSYXJl
RGF0YSgpKTsKLSAgICByZXR1cm4gZWxlbWVudFJhcmVEYXRhKCktPmRlc2NlbmRhbnRzQWZmZWN0
ZWRCeUJhY2t3YXJkUG9zaXRpb25hbFJ1bGVzKCk7Ci19Ci0KLWJvb2wgRWxlbWVudDo6cmFyZURh
dGFDaGlsZHJlbkFmZmVjdGVkQnlQcm9wZXJ0eUJhc2VkQmFja3dhcmRQb3NpdGlvbmFsUnVsZXMo
KSBjb25zdAotewotICAgIEFTU0VSVChoYXNSYXJlRGF0YSgpKTsKLSAgICByZXR1cm4gZWxlbWVu
dFJhcmVEYXRhKCktPmNoaWxkcmVuQWZmZWN0ZWRCeVByb3BlcnR5QmFzZWRCYWNrd2FyZFBvc2l0
aW9uYWxSdWxlcygpOwotfQotCiB1bnNpZ25lZCBFbGVtZW50OjpyYXJlRGF0YUNoaWxkSW5kZXgo
KSBjb25zdAogewogICAgIEFTU0VSVChoYXNSYXJlRGF0YSgpKTsKQEAgLTM5NTQsNiArMzg2NSw5
IEBACiAKIHZvaWQgRWxlbWVudDo6cmVzZXRTdHlsZVJlbGF0aW9ucygpCiB7CisgICAgLy8gRklY
TUU6IE1ha2UgdGhpcyBjb2RlIG1vcmUgY29uc2lzdGVudC4KKyAgICBjbGVhckZsYWcoU3R5bGVB
ZmZlY3RlZEJ5Rm9jdXNXaXRoaW5GbGFnKTsKKyAgICBjbGVhclN0eWxlRmxhZ3MoKTsKICAgICBp
ZiAoIWhhc1JhcmVEYXRhKCkpCiAgICAgICAgIHJldHVybjsKICAgICBlbGVtZW50UmFyZURhdGEo
KS0+cmVzZXRTdHlsZVJlbGF0aW9ucygpOwpJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL0VsZW1l
bnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5oCShyZXZpc2lv
biAyNDg0NjIpCisrKyBTb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5oCSh3b3JraW5nIGNvcHkp
CkBAIC0zMzksMzcgKzMzOSwzNyBAQAogICAgIGJvb2wgbmVlZHNTdHlsZUludmFsaWRhdGlvbigp
IGNvbnN0OwogCiAgICAgLy8gTWV0aG9kcyBmb3IgaW5kaWNhdGluZyB0aGUgc3R5bGUgaXMgYWZm
ZWN0ZWQgYnkgZHluYW1pYyB1cGRhdGVzIChlLmcuLCBjaGlsZHJlbiBjaGFuZ2luZywgb3VyIHBv
c2l0aW9uIGNoYW5naW5nIGluIG91ciBzaWJsaW5nIGxpc3QsIGV0Yy4pCi0gICAgYm9vbCBzdHls
ZUFmZmVjdGVkQnlBY3RpdmUoKSBjb25zdCB7IHJldHVybiBoYXNSYXJlRGF0YSgpICYmIHJhcmVE
YXRhU3R5bGVBZmZlY3RlZEJ5QWN0aXZlKCk7IH0KLSAgICBib29sIHN0eWxlQWZmZWN0ZWRCeUVt
cHR5KCkgY29uc3QgeyByZXR1cm4gaGFzUmFyZURhdGEoKSAmJiByYXJlRGF0YVN0eWxlQWZmZWN0
ZWRCeUVtcHR5KCk7IH0KLSAgICBib29sIHN0eWxlQWZmZWN0ZWRCeUZvY3VzV2l0aGluKCkgY29u
c3QgeyByZXR1cm4gaGFzUmFyZURhdGEoKSAmJiByYXJlRGF0YVN0eWxlQWZmZWN0ZWRCeUZvY3Vz
V2l0aGluKCk7IH0KKyAgICBib29sIHN0eWxlQWZmZWN0ZWRCeUFjdGl2ZSgpIGNvbnN0IHsgcmV0
dXJuIGhhc1N0eWxlRmxhZyhFbGVtZW50U3R5bGVGbGFnOjpTdHlsZUFmZmVjdGVkQnlBY3RpdmUp
OyB9CisgICAgYm9vbCBzdHlsZUFmZmVjdGVkQnlFbXB0eSgpIGNvbnN0IHsgcmV0dXJuIGhhc1N0
eWxlRmxhZyhFbGVtZW50U3R5bGVGbGFnOjpTdHlsZUFmZmVjdGVkQnlFbXB0eSk7IH0KKyAgICBi
b29sIHN0eWxlQWZmZWN0ZWRCeUZvY3VzV2l0aGluKCkgY29uc3Q7Ly8geyByZXR1cm4gZ2V0Rmxh
ZyhTdHlsZUFmZmVjdGVkQnlGb2N1c1dpdGhpbkZsYWcpOyB9CiAgICAgYm9vbCBkZXNjZW5kYW50
c0FmZmVjdGVkQnlQcmV2aW91c1NpYmxpbmcoKSBjb25zdCB7IHJldHVybiBnZXRGbGFnKERlc2Nl
bmRhbnRzQWZmZWN0ZWRCeVByZXZpb3VzU2libGluZ0ZsYWcpOyB9CiAgICAgYm9vbCBjaGlsZHJl
bkFmZmVjdGVkQnlIb3ZlcigpIGNvbnN0IHsgcmV0dXJuIGdldEZsYWcoQ2hpbGRyZW5BZmZlY3Rl
ZEJ5SG92ZXJSdWxlc0ZsYWcpOyB9Ci0gICAgYm9vbCBjaGlsZHJlbkFmZmVjdGVkQnlEcmFnKCkg
Y29uc3QgeyByZXR1cm4gaGFzUmFyZURhdGEoKSAmJiByYXJlRGF0YUNoaWxkcmVuQWZmZWN0ZWRC
eURyYWcoKTsgfQorICAgIGJvb2wgY2hpbGRyZW5BZmZlY3RlZEJ5RHJhZygpIGNvbnN0IHsgcmV0
dXJuIGhhc1N0eWxlRmxhZyhFbGVtZW50U3R5bGVGbGFnOjpDaGlsZHJlbkFmZmVjdGVkQnlEcmFn
KTsgfQogICAgIGJvb2wgY2hpbGRyZW5BZmZlY3RlZEJ5Rmlyc3RDaGlsZFJ1bGVzKCkgY29uc3Qg
eyByZXR1cm4gZ2V0RmxhZyhDaGlsZHJlbkFmZmVjdGVkQnlGaXJzdENoaWxkUnVsZXNGbGFnKTsg
fQogICAgIGJvb2wgY2hpbGRyZW5BZmZlY3RlZEJ5TGFzdENoaWxkUnVsZXMoKSBjb25zdCB7IHJl
dHVybiBnZXRGbGFnKENoaWxkcmVuQWZmZWN0ZWRCeUxhc3RDaGlsZFJ1bGVzRmxhZyk7IH0KLSAg
ICBib29sIGNoaWxkcmVuQWZmZWN0ZWRCeUZvcndhcmRQb3NpdGlvbmFsUnVsZXMoKSBjb25zdCB7
IHJldHVybiBoYXNSYXJlRGF0YSgpICYmIHJhcmVEYXRhQ2hpbGRyZW5BZmZlY3RlZEJ5Rm9yd2Fy
ZFBvc2l0aW9uYWxSdWxlcygpOyB9Ci0gICAgYm9vbCBkZXNjZW5kYW50c0FmZmVjdGVkQnlGb3J3
YXJkUG9zaXRpb25hbFJ1bGVzKCkgY29uc3QgeyByZXR1cm4gaGFzUmFyZURhdGEoKSAmJiByYXJl
RGF0YURlc2NlbmRhbnRzQWZmZWN0ZWRCeUZvcndhcmRQb3NpdGlvbmFsUnVsZXMoKTsgfQotICAg
IGJvb2wgY2hpbGRyZW5BZmZlY3RlZEJ5QmFja3dhcmRQb3NpdGlvbmFsUnVsZXMoKSBjb25zdCB7
IHJldHVybiBoYXNSYXJlRGF0YSgpICYmIHJhcmVEYXRhQ2hpbGRyZW5BZmZlY3RlZEJ5QmFja3dh
cmRQb3NpdGlvbmFsUnVsZXMoKTsgfQotICAgIGJvb2wgZGVzY2VuZGFudHNBZmZlY3RlZEJ5QmFj
a3dhcmRQb3NpdGlvbmFsUnVsZXMoKSBjb25zdCB7IHJldHVybiBoYXNSYXJlRGF0YSgpICYmIHJh
cmVEYXRhRGVzY2VuZGFudHNBZmZlY3RlZEJ5QmFja3dhcmRQb3NpdGlvbmFsUnVsZXMoKTsgfQot
ICAgIGJvb2wgY2hpbGRyZW5BZmZlY3RlZEJ5UHJvcGVydHlCYXNlZEJhY2t3YXJkUG9zaXRpb25h
bFJ1bGVzKCkgY29uc3QgeyByZXR1cm4gaGFzUmFyZURhdGEoKSAmJiByYXJlRGF0YUNoaWxkcmVu
QWZmZWN0ZWRCeVByb3BlcnR5QmFzZWRCYWNrd2FyZFBvc2l0aW9uYWxSdWxlcygpOyB9CisgICAg
Ym9vbCBjaGlsZHJlbkFmZmVjdGVkQnlGb3J3YXJkUG9zaXRpb25hbFJ1bGVzKCkgY29uc3QgeyBy
ZXR1cm4gaGFzU3R5bGVGbGFnKEVsZW1lbnRTdHlsZUZsYWc6OkNoaWxkcmVuQWZmZWN0ZWRCeUZv
cndhcmRQb3NpdGlvbmFsUnVsZXMpOyB9CisgICAgYm9vbCBkZXNjZW5kYW50c0FmZmVjdGVkQnlG
b3J3YXJkUG9zaXRpb25hbFJ1bGVzKCkgY29uc3QgeyByZXR1cm4gaGFzU3R5bGVGbGFnKEVsZW1l
bnRTdHlsZUZsYWc6OkRlc2NlbmRhbnRzQWZmZWN0ZWRCeUZvcndhcmRQb3NpdGlvbmFsUnVsZXMp
OyB9CisgICAgYm9vbCBjaGlsZHJlbkFmZmVjdGVkQnlCYWNrd2FyZFBvc2l0aW9uYWxSdWxlcygp
IGNvbnN0IHsgcmV0dXJuIGhhc1N0eWxlRmxhZyhFbGVtZW50U3R5bGVGbGFnOjpDaGlsZHJlbkFm
ZmVjdGVkQnlCYWNrd2FyZFBvc2l0aW9uYWxSdWxlcyk7IH0KKyAgICBib29sIGRlc2NlbmRhbnRz
QWZmZWN0ZWRCeUJhY2t3YXJkUG9zaXRpb25hbFJ1bGVzKCkgY29uc3QgeyByZXR1cm4gaGFzU3R5
bGVGbGFnKEVsZW1lbnRTdHlsZUZsYWc6OkRlc2NlbmRhbnRzQWZmZWN0ZWRCeUJhY2t3YXJkUG9z
aXRpb25hbFJ1bGVzKTsgfQorICAgIGJvb2wgY2hpbGRyZW5BZmZlY3RlZEJ5UHJvcGVydHlCYXNl
ZEJhY2t3YXJkUG9zaXRpb25hbFJ1bGVzKCkgY29uc3QgeyByZXR1cm4gaGFzU3R5bGVGbGFnKEVs
ZW1lbnRTdHlsZUZsYWc6OkNoaWxkcmVuQWZmZWN0ZWRCeVByb3BlcnR5QmFzZWRCYWNrd2FyZFBv
c2l0aW9uYWxSdWxlcyk7IH0KICAgICBib29sIGFmZmVjdHNOZXh0U2libGluZ0VsZW1lbnRTdHls
ZSgpIGNvbnN0IHsgcmV0dXJuIGdldEZsYWcoQWZmZWN0c05leHRTaWJsaW5nRWxlbWVudFN0eWxl
KTsgfQogICAgIHVuc2lnbmVkIGNoaWxkSW5kZXgoKSBjb25zdCB7IHJldHVybiBoYXNSYXJlRGF0
YSgpID8gcmFyZURhdGFDaGlsZEluZGV4KCkgOiAwOyB9CiAKICAgICBib29sIGhhc0ZsYWdzU2V0
RHVyaW5nU3R5bGluZ09mQ2hpbGRyZW4oKSBjb25zdDsKIAotICAgIHZvaWQgc2V0U3R5bGVBZmZl
Y3RlZEJ5RW1wdHkoKTsKLSAgICB2b2lkIHNldFN0eWxlQWZmZWN0ZWRCeUZvY3VzV2l0aGluKCk7
Ci0gICAgdm9pZCBzZXREZXNjZW5kYW50c0FmZmVjdGVkQnlQcmV2aW91c1NpYmxpbmcoKSBjb25z
dCB7IHJldHVybiBzZXRGbGFnKERlc2NlbmRhbnRzQWZmZWN0ZWRCeVByZXZpb3VzU2libGluZ0Zs
YWcpOyB9CisgICAgdm9pZCBzZXRTdHlsZUFmZmVjdGVkQnlFbXB0eSgpIHsgc2V0U3R5bGVGbGFn
KEVsZW1lbnRTdHlsZUZsYWc6OlN0eWxlQWZmZWN0ZWRCeUVtcHR5KTsgfQorICAgIHZvaWQgc2V0
U3R5bGVBZmZlY3RlZEJ5Rm9jdXNXaXRoaW4oKTsgLy8geyBzZXRGbGFnKFN0eWxlQWZmZWN0ZWRC
eUZvY3VzV2l0aGluRmxhZyk7IH0KKyAgICB2b2lkIHNldERlc2NlbmRhbnRzQWZmZWN0ZWRCeVBy
ZXZpb3VzU2libGluZygpIHsgc2V0RmxhZyhEZXNjZW5kYW50c0FmZmVjdGVkQnlQcmV2aW91c1Np
YmxpbmdGbGFnKTsgfQogICAgIHZvaWQgc2V0Q2hpbGRyZW5BZmZlY3RlZEJ5SG92ZXIoKSB7IHNl
dEZsYWcoQ2hpbGRyZW5BZmZlY3RlZEJ5SG92ZXJSdWxlc0ZsYWcpOyB9Ci0gICAgdm9pZCBzZXRT
dHlsZUFmZmVjdGVkQnlBY3RpdmUoKTsKLSAgICB2b2lkIHNldENoaWxkcmVuQWZmZWN0ZWRCeURy
YWcoKTsKKyAgICB2b2lkIHNldFN0eWxlQWZmZWN0ZWRCeUFjdGl2ZSgpIHsgc2V0U3R5bGVGbGFn
KEVsZW1lbnRTdHlsZUZsYWc6OlN0eWxlQWZmZWN0ZWRCeUFjdGl2ZSk7IH0KKyAgICB2b2lkIHNl
dENoaWxkcmVuQWZmZWN0ZWRCeURyYWcoKSB7IHNldFN0eWxlRmxhZyhFbGVtZW50U3R5bGVGbGFn
OjpDaGlsZHJlbkFmZmVjdGVkQnlEcmFnKTsgfQogICAgIHZvaWQgc2V0Q2hpbGRyZW5BZmZlY3Rl
ZEJ5Rmlyc3RDaGlsZFJ1bGVzKCkgeyBzZXRGbGFnKENoaWxkcmVuQWZmZWN0ZWRCeUZpcnN0Q2hp
bGRSdWxlc0ZsYWcpOyB9CiAgICAgdm9pZCBzZXRDaGlsZHJlbkFmZmVjdGVkQnlMYXN0Q2hpbGRS
dWxlcygpIHsgc2V0RmxhZyhDaGlsZHJlbkFmZmVjdGVkQnlMYXN0Q2hpbGRSdWxlc0ZsYWcpOyB9
Ci0gICAgdm9pZCBzZXRDaGlsZHJlbkFmZmVjdGVkQnlGb3J3YXJkUG9zaXRpb25hbFJ1bGVzKCk7
Ci0gICAgdm9pZCBzZXREZXNjZW5kYW50c0FmZmVjdGVkQnlGb3J3YXJkUG9zaXRpb25hbFJ1bGVz
KCk7Ci0gICAgdm9pZCBzZXRDaGlsZHJlbkFmZmVjdGVkQnlCYWNrd2FyZFBvc2l0aW9uYWxSdWxl
cygpOwotICAgIHZvaWQgc2V0RGVzY2VuZGFudHNBZmZlY3RlZEJ5QmFja3dhcmRQb3NpdGlvbmFs
UnVsZXMoKTsKLSAgICB2b2lkIHNldENoaWxkcmVuQWZmZWN0ZWRCeVByb3BlcnR5QmFzZWRCYWNr
d2FyZFBvc2l0aW9uYWxSdWxlcygpOworICAgIHZvaWQgc2V0Q2hpbGRyZW5BZmZlY3RlZEJ5Rm9y
d2FyZFBvc2l0aW9uYWxSdWxlcygpIHsgc2V0U3R5bGVGbGFnKEVsZW1lbnRTdHlsZUZsYWc6OkNo
aWxkcmVuQWZmZWN0ZWRCeUZvcndhcmRQb3NpdGlvbmFsUnVsZXMpOyB9CisgICAgdm9pZCBzZXRE
ZXNjZW5kYW50c0FmZmVjdGVkQnlGb3J3YXJkUG9zaXRpb25hbFJ1bGVzKCkgeyBzZXRTdHlsZUZs
YWcoRWxlbWVudFN0eWxlRmxhZzo6RGVzY2VuZGFudHNBZmZlY3RlZEJ5Rm9yd2FyZFBvc2l0aW9u
YWxSdWxlcyk7IH0KKyAgICB2b2lkIHNldENoaWxkcmVuQWZmZWN0ZWRCeUJhY2t3YXJkUG9zaXRp
b25hbFJ1bGVzKCkgeyBzZXRTdHlsZUZsYWcoRWxlbWVudFN0eWxlRmxhZzo6Q2hpbGRyZW5BZmZl
Y3RlZEJ5QmFja3dhcmRQb3NpdGlvbmFsUnVsZXMpOyB9CisgICAgdm9pZCBzZXREZXNjZW5kYW50
c0FmZmVjdGVkQnlCYWNrd2FyZFBvc2l0aW9uYWxSdWxlcygpIHsgc2V0U3R5bGVGbGFnKEVsZW1l
bnRTdHlsZUZsYWc6OkRlc2NlbmRhbnRzQWZmZWN0ZWRCeUJhY2t3YXJkUG9zaXRpb25hbFJ1bGVz
KTsgfQorICAgIHZvaWQgc2V0Q2hpbGRyZW5BZmZlY3RlZEJ5UHJvcGVydHlCYXNlZEJhY2t3YXJk
UG9zaXRpb25hbFJ1bGVzKCkgeyBzZXRTdHlsZUZsYWcoRWxlbWVudFN0eWxlRmxhZzo6Q2hpbGRy
ZW5BZmZlY3RlZEJ5UHJvcGVydHlCYXNlZEJhY2t3YXJkUG9zaXRpb25hbFJ1bGVzKTsgfQogICAg
IHZvaWQgc2V0QWZmZWN0c05leHRTaWJsaW5nRWxlbWVudFN0eWxlKCkgeyBzZXRGbGFnKEFmZmVj
dHNOZXh0U2libGluZ0VsZW1lbnRTdHlsZSk7IH0KICAgICB2b2lkIHNldFN0eWxlSXNBZmZlY3Rl
ZEJ5UHJldmlvdXNTaWJsaW5nKCkgeyBzZXRGbGFnKFN0eWxlSXNBZmZlY3RlZEJ5UHJldmlvdXNT
aWJsaW5nKTsgfQogICAgIHZvaWQgc2V0Q2hpbGRJbmRleCh1bnNpZ25lZCk7CkBAIC03MDAsMTcg
KzcwMCw2IEBACiAgICAgY29uc3QgUmVuZGVyU3R5bGUmIHJlc29sdmVDb21wdXRlZFN0eWxlKCk7
CiAgICAgY29uc3QgUmVuZGVyU3R5bGUmIHJlc29sdmVQc2V1ZG9FbGVtZW50U3R5bGUoUHNldWRv
SWQpOwogCi0gICAgYm9vbCByYXJlRGF0YVN0eWxlQWZmZWN0ZWRCeUVtcHR5KCkgY29uc3Q7Ci0g
ICAgYm9vbCByYXJlRGF0YVN0eWxlQWZmZWN0ZWRCeUZvY3VzV2l0aGluKCkgY29uc3Q7Ci0gICAg
Ym9vbCByYXJlRGF0YUNoaWxkcmVuQWZmZWN0ZWRCeUhvdmVyKCkgY29uc3Q7Ci0gICAgYm9vbCBy
YXJlRGF0YVN0eWxlQWZmZWN0ZWRCeUFjdGl2ZSgpIGNvbnN0OwotICAgIGJvb2wgcmFyZURhdGFD
aGlsZHJlbkFmZmVjdGVkQnlEcmFnKCkgY29uc3Q7Ci0gICAgYm9vbCByYXJlRGF0YUNoaWxkcmVu
QWZmZWN0ZWRCeUxhc3RDaGlsZFJ1bGVzKCkgY29uc3Q7Ci0gICAgYm9vbCByYXJlRGF0YUNoaWxk
cmVuQWZmZWN0ZWRCeUZvcndhcmRQb3NpdGlvbmFsUnVsZXMoKSBjb25zdDsKLSAgICBib29sIHJh
cmVEYXRhRGVzY2VuZGFudHNBZmZlY3RlZEJ5Rm9yd2FyZFBvc2l0aW9uYWxSdWxlcygpIGNvbnN0
OwotICAgIGJvb2wgcmFyZURhdGFDaGlsZHJlbkFmZmVjdGVkQnlCYWNrd2FyZFBvc2l0aW9uYWxS
dWxlcygpIGNvbnN0OwotICAgIGJvb2wgcmFyZURhdGFEZXNjZW5kYW50c0FmZmVjdGVkQnlCYWNr
d2FyZFBvc2l0aW9uYWxSdWxlcygpIGNvbnN0OwotICAgIGJvb2wgcmFyZURhdGFDaGlsZHJlbkFm
ZmVjdGVkQnlQcm9wZXJ0eUJhc2VkQmFja3dhcmRQb3NpdGlvbmFsUnVsZXMoKSBjb25zdDsKICAg
ICB1bnNpZ25lZCByYXJlRGF0YUNoaWxkSW5kZXgoKSBjb25zdDsKIAogICAgIFNwZWxsY2hlY2tB
dHRyaWJ1dGVTdGF0ZSBzcGVsbGNoZWNrQXR0cmlidXRlU3RhdGUoKSBjb25zdDsKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50UmFyZURhdGEuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9kb20vRWxlbWVudFJhcmVEYXRhLmgJKHJldmlzaW9uIDI0ODQ2MikKKysrIFNvdXJj
ZS9XZWJDb3JlL2RvbS9FbGVtZW50UmFyZURhdGEuaAkod29ya2luZyBjb3B5KQpAQCAtNDIsNyAr
NDIsNyBAQAogCiBjbGFzcyBFbGVtZW50UmFyZURhdGEgOiBwdWJsaWMgTm9kZVJhcmVEYXRhIHsK
IHB1YmxpYzoKLSAgICBleHBsaWNpdCBFbGVtZW50UmFyZURhdGEoUmVuZGVyRWxlbWVudCopOwor
ICAgIGV4cGxpY2l0IEVsZW1lbnRSYXJlRGF0YSgpOwogICAgIH5FbGVtZW50UmFyZURhdGEoKTsK
IAogICAgIHZvaWQgc2V0QmVmb3JlUHNldWRvRWxlbWVudChSZWZQdHI8UHNldWRvRWxlbWVudD4m
Jik7CkBAIC01OSwxMiArNTksNiBAQAogICAgIGJvb2wgdGFiSW5kZXhTZXRFeHBsaWNpdGx5KCkg
Y29uc3QgeyByZXR1cm4gbV90YWJJbmRleFdhc1NldEV4cGxpY2l0bHk7IH0KICAgICB2b2lkIGNs
ZWFyVGFiSW5kZXhFeHBsaWNpdGx5KCkgeyBtX3RhYkluZGV4ID0gMDsgbV90YWJJbmRleFdhc1Nl
dEV4cGxpY2l0bHkgPSBmYWxzZTsgfQogCi0gICAgYm9vbCBzdHlsZUFmZmVjdGVkQnlBY3RpdmUo
KSBjb25zdCB7IHJldHVybiBtX3N0eWxlQWZmZWN0ZWRCeUFjdGl2ZTsgfQotICAgIHZvaWQgc2V0
U3R5bGVBZmZlY3RlZEJ5QWN0aXZlKGJvb2wgdmFsdWUpIHsgbV9zdHlsZUFmZmVjdGVkQnlBY3Rp
dmUgPSB2YWx1ZTsgfQotCi0gICAgYm9vbCBzdHlsZUFmZmVjdGVkQnlFbXB0eSgpIGNvbnN0IHsg
cmV0dXJuIG1fc3R5bGVBZmZlY3RlZEJ5RW1wdHk7IH0KLSAgICB2b2lkIHNldFN0eWxlQWZmZWN0
ZWRCeUVtcHR5KGJvb2wgdmFsdWUpIHsgbV9zdHlsZUFmZmVjdGVkQnlFbXB0eSA9IHZhbHVlOyB9
Ci0KICAgICBib29sIHN0eWxlQWZmZWN0ZWRCeUZvY3VzV2l0aGluKCkgY29uc3QgeyByZXR1cm4g
bV9zdHlsZUFmZmVjdGVkQnlGb2N1c1dpdGhpbjsgfQogICAgIHZvaWQgc2V0U3R5bGVBZmZlY3Rl
ZEJ5Rm9jdXNXaXRoaW4oYm9vbCB2YWx1ZSkgeyBtX3N0eWxlQWZmZWN0ZWRCeUZvY3VzV2l0aGlu
ID0gdmFsdWU7IH0KIApAQCAtNzMsMjIgKzY3LDYgQEAKICAgICB2b2lkIHNldENvbnRhaW5zRnVs
bFNjcmVlbkVsZW1lbnQoYm9vbCB2YWx1ZSkgeyBtX2NvbnRhaW5zRnVsbFNjcmVlbkVsZW1lbnQg
PSB2YWx1ZTsgfQogI2VuZGlmCiAKLSAgICBib29sIGNoaWxkcmVuQWZmZWN0ZWRCeURyYWcoKSBj
b25zdCB7IHJldHVybiBtX2NoaWxkcmVuQWZmZWN0ZWRCeURyYWc7IH0KLSAgICB2b2lkIHNldENo
aWxkcmVuQWZmZWN0ZWRCeURyYWcoYm9vbCB2YWx1ZSkgeyBtX2NoaWxkcmVuQWZmZWN0ZWRCeURy
YWcgPSB2YWx1ZTsgfQotCi0gICAgYm9vbCBjaGlsZHJlbkFmZmVjdGVkQnlMYXN0Q2hpbGRSdWxl
cygpIGNvbnN0IHsgcmV0dXJuIG1fY2hpbGRyZW5BZmZlY3RlZEJ5TGFzdENoaWxkUnVsZXM7IH0K
LSAgICB2b2lkIHNldENoaWxkcmVuQWZmZWN0ZWRCeUxhc3RDaGlsZFJ1bGVzKGJvb2wgdmFsdWUp
IHsgbV9jaGlsZHJlbkFmZmVjdGVkQnlMYXN0Q2hpbGRSdWxlcyA9IHZhbHVlOyB9Ci0gICAgYm9v
bCBjaGlsZHJlbkFmZmVjdGVkQnlGb3J3YXJkUG9zaXRpb25hbFJ1bGVzKCkgY29uc3QgeyByZXR1
cm4gbV9jaGlsZHJlbkFmZmVjdGVkQnlGb3J3YXJkUG9zaXRpb25hbFJ1bGVzOyB9Ci0gICAgdm9p
ZCBzZXRDaGlsZHJlbkFmZmVjdGVkQnlGb3J3YXJkUG9zaXRpb25hbFJ1bGVzKGJvb2wgdmFsdWUp
IHsgbV9jaGlsZHJlbkFmZmVjdGVkQnlGb3J3YXJkUG9zaXRpb25hbFJ1bGVzID0gdmFsdWU7IH0K
LSAgICBib29sIGRlc2NlbmRhbnRzQWZmZWN0ZWRCeUZvcndhcmRQb3NpdGlvbmFsUnVsZXMoKSBj
b25zdCB7IHJldHVybiBtX2Rlc2NlbmRhbnRzQWZmZWN0ZWRCeUZvcndhcmRQb3NpdGlvbmFsUnVs
ZXM7IH0KLSAgICB2b2lkIHNldERlc2NlbmRhbnRzQWZmZWN0ZWRCeUZvcndhcmRQb3NpdGlvbmFs
UnVsZXMoYm9vbCB2YWx1ZSkgeyBtX2Rlc2NlbmRhbnRzQWZmZWN0ZWRCeUZvcndhcmRQb3NpdGlv
bmFsUnVsZXMgPSB2YWx1ZTsgfQotICAgIGJvb2wgY2hpbGRyZW5BZmZlY3RlZEJ5QmFja3dhcmRQ
b3NpdGlvbmFsUnVsZXMoKSBjb25zdCB7IHJldHVybiBtX2NoaWxkcmVuQWZmZWN0ZWRCeUJhY2t3
YXJkUG9zaXRpb25hbFJ1bGVzOyB9Ci0gICAgdm9pZCBzZXRDaGlsZHJlbkFmZmVjdGVkQnlCYWNr
d2FyZFBvc2l0aW9uYWxSdWxlcyhib29sIHZhbHVlKSB7IG1fY2hpbGRyZW5BZmZlY3RlZEJ5QmFj
a3dhcmRQb3NpdGlvbmFsUnVsZXMgPSB2YWx1ZTsgfQotICAgIGJvb2wgZGVzY2VuZGFudHNBZmZl
Y3RlZEJ5QmFja3dhcmRQb3NpdGlvbmFsUnVsZXMoKSBjb25zdCB7IHJldHVybiBtX2Rlc2NlbmRh
bnRzQWZmZWN0ZWRCeUJhY2t3YXJkUG9zaXRpb25hbFJ1bGVzOyB9Ci0gICAgdm9pZCBzZXREZXNj
ZW5kYW50c0FmZmVjdGVkQnlCYWNrd2FyZFBvc2l0aW9uYWxSdWxlcyhib29sIHZhbHVlKSB7IG1f
ZGVzY2VuZGFudHNBZmZlY3RlZEJ5QmFja3dhcmRQb3NpdGlvbmFsUnVsZXMgPSB2YWx1ZTsgfQot
ICAgIGJvb2wgY2hpbGRyZW5BZmZlY3RlZEJ5UHJvcGVydHlCYXNlZEJhY2t3YXJkUG9zaXRpb25h
bFJ1bGVzKCkgY29uc3QgeyByZXR1cm4gbV9jaGlsZHJlbkFmZmVjdGVkQnlQcm9wZXJ0eUJhc2Vk
QmFja3dhcmRQb3NpdGlvbmFsUnVsZXM7IH0KLSAgICB2b2lkIHNldENoaWxkcmVuQWZmZWN0ZWRC
eVByb3BlcnR5QmFzZWRCYWNrd2FyZFBvc2l0aW9uYWxSdWxlcyhib29sIHZhbHVlKSB7IG1fY2hp
bGRyZW5BZmZlY3RlZEJ5UHJvcGVydHlCYXNlZEJhY2t3YXJkUG9zaXRpb25hbFJ1bGVzID0gdmFs
dWU7IH0KLQogICAgIHVuc2lnbmVkIGNoaWxkSW5kZXgoKSBjb25zdCB7IHJldHVybiBtX2NoaWxk
SW5kZXg7IH0KICAgICB2b2lkIHNldENoaWxkSW5kZXgodW5zaWduZWQgaW5kZXgpIHsgbV9jaGls
ZEluZGV4ID0gaW5kZXg7IH0KICAgICBzdGF0aWMgcHRyZGlmZl90IGNoaWxkSW5kZXhNZW1vcnlP
ZmZzZXQoKSB7IHJldHVybiBPQkpFQ1RfT0ZGU0VUT0YoRWxlbWVudFJhcmVEYXRhLCBtX2NoaWxk
SW5kZXgpOyB9CkBAIC0xNDgsMTEgKzEyNiw2IEBACiAgICAgICAgIGF1dG8gcmVzdWx0ID0gTm9k
ZVJhcmVEYXRhOjp1c2VUeXBlcygpOwogICAgICAgICBpZiAobV90YWJJbmRleFdhc1NldEV4cGxp
Y2l0bHkpCiAgICAgICAgICAgICByZXN1bHQuYWRkKFVzZVR5cGU6OlRhYkluZGV4KTsKLSAgICAg
ICAgaWYgKG1fc3R5bGVBZmZlY3RlZEJ5QWN0aXZlIHx8IG1fc3R5bGVBZmZlY3RlZEJ5RW1wdHkg
fHwgbV9zdHlsZUFmZmVjdGVkQnlGb2N1c1dpdGhpbiB8fCBtX2NoaWxkcmVuQWZmZWN0ZWRCeUhv
dmVyCi0gICAgICAgICAgICB8fCBtX2NoaWxkcmVuQWZmZWN0ZWRCeURyYWcgfHwgbV9jaGlsZHJl
bkFmZmVjdGVkQnlMYXN0Q2hpbGRSdWxlcyB8fCBtX2NoaWxkcmVuQWZmZWN0ZWRCeUZvcndhcmRQ
b3NpdGlvbmFsUnVsZXMKLSAgICAgICAgICAgIHx8IG1fZGVzY2VuZGFudHNBZmZlY3RlZEJ5Rm9y
d2FyZFBvc2l0aW9uYWxSdWxlcyB8fCBtX2NoaWxkcmVuQWZmZWN0ZWRCeUJhY2t3YXJkUG9zaXRp
b25hbFJ1bGVzCi0gICAgICAgICAgICB8fCBtX2Rlc2NlbmRhbnRzQWZmZWN0ZWRCeUJhY2t3YXJk
UG9zaXRpb25hbFJ1bGVzIHx8IG1fY2hpbGRyZW5BZmZlY3RlZEJ5UHJvcGVydHlCYXNlZEJhY2t3
YXJkUG9zaXRpb25hbFJ1bGVzKQotICAgICAgICAgICAgcmVzdWx0LmFkZChVc2VUeXBlOjpTdHls
ZUZsYWdzKTsKICAgICAgICAgaWYgKG1fbWluaW11bVNpemVGb3JSZXNpemluZyAhPSBkZWZhdWx0
TWluaW11bVNpemVGb3JSZXNpemluZygpKQogICAgICAgICAgICAgcmVzdWx0LmFkZChVc2VUeXBl
OjpNaW5pbXVtU2l6ZSk7CiAgICAgICAgIGlmICghbV9zYXZlZExheWVyU2Nyb2xsUG9zaXRpb24u
aXNaZXJvKCkpCkBAIC0xODUsOCArMTU4LDYgQEAKICAgICBpbnQgbV90YWJJbmRleDsKICAgICB1
bnNpZ25lZCBzaG9ydCBtX2NoaWxkSW5kZXg7CiAgICAgdW5zaWduZWQgbV90YWJJbmRleFdhc1Nl
dEV4cGxpY2l0bHkgOiAxOwotICAgIHVuc2lnbmVkIG1fc3R5bGVBZmZlY3RlZEJ5QWN0aXZlIDog
MTsKLSAgICB1bnNpZ25lZCBtX3N0eWxlQWZmZWN0ZWRCeUVtcHR5IDogMTsKICAgICB1bnNpZ25l
ZCBtX3N0eWxlQWZmZWN0ZWRCeUZvY3VzV2l0aGluIDogMTsKICNpZiBFTkFCTEUoRlVMTFNDUkVF
Tl9BUEkpCiAgICAgdW5zaWduZWQgbV9jb250YWluc0Z1bGxTY3JlZW5FbGVtZW50IDogMTsKQEAg
LTE5NCwxNyArMTY1LDYgQEAKICAgICB1bnNpZ25lZCBtX2hhc1BlbmRpbmdSZXNvdXJjZXMgOiAx
OwogICAgIHVuc2lnbmVkIG1faGFzQ1NTQW5pbWF0aW9uIDogMTsKICAgICB1bnNpZ25lZCBtX2hh
c0VsZW1lbnRJZGVudGlmaWVyIDogMTsKLSAgICB1bnNpZ25lZCBtX2NoaWxkcmVuQWZmZWN0ZWRC
eUhvdmVyIDogMTsKLSAgICB1bnNpZ25lZCBtX2NoaWxkcmVuQWZmZWN0ZWRCeURyYWcgOiAxOwot
ICAgIC8vIEJpdHMgZm9yIGR5bmFtaWMgY2hpbGQgbWF0Y2hpbmcuCi0gICAgLy8gV2Ugb3B0aW1p
emUgZm9yIDpmaXJzdC1jaGlsZCBhbmQgOmxhc3QtY2hpbGQuIFRoZSBvdGhlciBwb3NpdGlvbmFs
IGNoaWxkIHNlbGVjdG9ycyBsaWtlIG50aC1jaGlsZCBvcgotICAgIC8vICotY2hpbGQtb2YtdHlw
ZSwgd2Ugd2lsbCBqdXN0IGdpdmUgdXAgYW5kIHJlLWV2YWx1YXRlIHdoZW5ldmVyIGNoaWxkcmVu
IGNoYW5nZSBhdCBhbGwuCi0gICAgdW5zaWduZWQgbV9jaGlsZHJlbkFmZmVjdGVkQnlMYXN0Q2hp
bGRSdWxlcyA6IDE7Ci0gICAgdW5zaWduZWQgbV9jaGlsZHJlbkFmZmVjdGVkQnlGb3J3YXJkUG9z
aXRpb25hbFJ1bGVzIDogMTsKLSAgICB1bnNpZ25lZCBtX2Rlc2NlbmRhbnRzQWZmZWN0ZWRCeUZv
cndhcmRQb3NpdGlvbmFsUnVsZXMgOiAxOwotICAgIHVuc2lnbmVkIG1fY2hpbGRyZW5BZmZlY3Rl
ZEJ5QmFja3dhcmRQb3NpdGlvbmFsUnVsZXMgOiAxOwotICAgIHVuc2lnbmVkIG1fZGVzY2VuZGFu
dHNBZmZlY3RlZEJ5QmFja3dhcmRQb3NpdGlvbmFsUnVsZXMgOiAxOwotICAgIHVuc2lnbmVkIG1f
Y2hpbGRyZW5BZmZlY3RlZEJ5UHJvcGVydHlCYXNlZEJhY2t3YXJkUG9zaXRpb25hbFJ1bGVzIDog
MTsKIAogICAgIExheW91dFNpemUgbV9taW5pbXVtU2l6ZUZvclJlc2l6aW5nOwogICAgIEludFBv
aW50IG1fc2F2ZWRMYXllclNjcm9sbFBvc2l0aW9uOwpAQCAtMjMzLDEzICsxOTMsMTAgQEAKICAg
ICB2b2lkIHJlbGVhc2VQc2V1ZG9FbGVtZW50KFBzZXVkb0VsZW1lbnQqKTsKIH07CiAKLWlubGlu
ZSBFbGVtZW50UmFyZURhdGE6OkVsZW1lbnRSYXJlRGF0YShSZW5kZXJFbGVtZW50KiByZW5kZXJl
cikKLSAgICA6IE5vZGVSYXJlRGF0YShyZW5kZXJlcikKLSAgICAsIG1fdGFiSW5kZXgoMCkKK2lu
bGluZSBFbGVtZW50UmFyZURhdGE6OkVsZW1lbnRSYXJlRGF0YSgpCisgICAgOiBtX3RhYkluZGV4
KDApCiAgICAgLCBtX2NoaWxkSW5kZXgoMCkKICAgICAsIG1fdGFiSW5kZXhXYXNTZXRFeHBsaWNp
dGx5KGZhbHNlKQotICAgICwgbV9zdHlsZUFmZmVjdGVkQnlBY3RpdmUoZmFsc2UpCi0gICAgLCBt
X3N0eWxlQWZmZWN0ZWRCeUVtcHR5KGZhbHNlKQogICAgICwgbV9zdHlsZUFmZmVjdGVkQnlGb2N1
c1dpdGhpbihmYWxzZSkKICNpZiBFTkFCTEUoRlVMTFNDUkVFTl9BUEkpCiAgICAgLCBtX2NvbnRh
aW5zRnVsbFNjcmVlbkVsZW1lbnQoZmFsc2UpCkBAIC0yNDcsMTQgKzIwNCw2IEBACiAgICAgLCBt
X2hhc1BlbmRpbmdSZXNvdXJjZXMoZmFsc2UpCiAgICAgLCBtX2hhc0NTU0FuaW1hdGlvbihmYWxz
ZSkKICAgICAsIG1faGFzRWxlbWVudElkZW50aWZpZXIoZmFsc2UpCi0gICAgLCBtX2NoaWxkcmVu
QWZmZWN0ZWRCeUhvdmVyKGZhbHNlKQotICAgICwgbV9jaGlsZHJlbkFmZmVjdGVkQnlEcmFnKGZh
bHNlKQotICAgICwgbV9jaGlsZHJlbkFmZmVjdGVkQnlMYXN0Q2hpbGRSdWxlcyhmYWxzZSkKLSAg
ICAsIG1fY2hpbGRyZW5BZmZlY3RlZEJ5Rm9yd2FyZFBvc2l0aW9uYWxSdWxlcyhmYWxzZSkKLSAg
ICAsIG1fZGVzY2VuZGFudHNBZmZlY3RlZEJ5Rm9yd2FyZFBvc2l0aW9uYWxSdWxlcyhmYWxzZSkK
LSAgICAsIG1fY2hpbGRyZW5BZmZlY3RlZEJ5QmFja3dhcmRQb3NpdGlvbmFsUnVsZXMoZmFsc2Up
Ci0gICAgLCBtX2Rlc2NlbmRhbnRzQWZmZWN0ZWRCeUJhY2t3YXJkUG9zaXRpb25hbFJ1bGVzKGZh
bHNlKQotICAgICwgbV9jaGlsZHJlbkFmZmVjdGVkQnlQcm9wZXJ0eUJhc2VkQmFja3dhcmRQb3Np
dGlvbmFsUnVsZXMoZmFsc2UpCiAgICAgLCBtX21pbmltdW1TaXplRm9yUmVzaXppbmcoZGVmYXVs
dE1pbmltdW1TaXplRm9yUmVzaXppbmcoKSkKIHsKIH0KQEAgLTI4NSwxNyArMjM0LDggQEAKIAog
aW5saW5lIHZvaWQgRWxlbWVudFJhcmVEYXRhOjpyZXNldFN0eWxlUmVsYXRpb25zKCkKIHsKLSAg
ICBzZXRTdHlsZUFmZmVjdGVkQnlFbXB0eShmYWxzZSk7CiAgICAgc2V0U3R5bGVBZmZlY3RlZEJ5
Rm9jdXNXaXRoaW4oZmFsc2UpOwogICAgIHNldENoaWxkSW5kZXgoMCk7Ci0gICAgc2V0U3R5bGVB
ZmZlY3RlZEJ5QWN0aXZlKGZhbHNlKTsKLSAgICBzZXRDaGlsZHJlbkFmZmVjdGVkQnlEcmFnKGZh
bHNlKTsKLSAgICBzZXRDaGlsZHJlbkFmZmVjdGVkQnlMYXN0Q2hpbGRSdWxlcyhmYWxzZSk7Ci0g
ICAgc2V0Q2hpbGRyZW5BZmZlY3RlZEJ5Rm9yd2FyZFBvc2l0aW9uYWxSdWxlcyhmYWxzZSk7Ci0g
ICAgc2V0RGVzY2VuZGFudHNBZmZlY3RlZEJ5Rm9yd2FyZFBvc2l0aW9uYWxSdWxlcyhmYWxzZSk7
Ci0gICAgc2V0Q2hpbGRyZW5BZmZlY3RlZEJ5QmFja3dhcmRQb3NpdGlvbmFsUnVsZXMoZmFsc2Up
OwotICAgIHNldERlc2NlbmRhbnRzQWZmZWN0ZWRCeUJhY2t3YXJkUG9zaXRpb25hbFJ1bGVzKGZh
bHNlKTsKLSAgICBzZXRDaGlsZHJlbkFmZmVjdGVkQnlQcm9wZXJ0eUJhc2VkQmFja3dhcmRQb3Np
dGlvbmFsUnVsZXMoZmFsc2UpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9kb20vTm9kZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
ZG9tL05vZGUuY3BwCShyZXZpc2lvbiAyNDg0NjIpCisrKyBTb3VyY2UvV2ViQ29yZS9kb20vTm9k
ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEwOCw4ICsxMDgsNiBAQAogICAgICAgICByZXR1cm4g
Ik11dGF0aW9uT2JzZXJ2ZXIiOwogICAgIGNhc2UgTm9kZVJhcmVEYXRhOjpVc2VUeXBlOjpUYWJJ
bmRleDoKICAgICAgICAgcmV0dXJuICJUYWJJbmRleCI7Ci0gICAgY2FzZSBOb2RlUmFyZURhdGE6
OlVzZVR5cGU6OlN0eWxlRmxhZ3M6Ci0gICAgICAgIHJldHVybiAiU3R5bGVGbGFncyI7CiAgICAg
Y2FzZSBOb2RlUmFyZURhdGE6OlVzZVR5cGU6Ok1pbmltdW1TaXplOgogICAgICAgICByZXR1cm4g
Ik1pbmltdW1TaXplIjsKICAgICBjYXNlIE5vZGVSYXJlRGF0YTo6VXNlVHlwZTo6U2Nyb2xsaW5n
UG9zaXRpb246CkBAIC0zOTYsMTUgKzM5NCwxMCBAQAogCiB2b2lkIE5vZGU6Om1hdGVyaWFsaXpl
UmFyZURhdGEoKQogewotICAgIE5vZGVSYXJlRGF0YSogZGF0YTsKICAgICBpZiAoaXM8RWxlbWVu
dD4oKnRoaXMpKQotICAgICAgICBkYXRhID0gc3RkOjptYWtlX3VuaXF1ZTxFbGVtZW50UmFyZURh
dGE+KGRvd25jYXN0PFJlbmRlckVsZW1lbnQ+KG1fZGF0YS5tX3JlbmRlcmVyKSkucmVsZWFzZSgp
OworICAgICAgICBtX3JhcmVEYXRhID0gc3RkOjptYWtlX3VuaXF1ZTxFbGVtZW50UmFyZURhdGE+
KCk7CiAgICAgZWxzZQotICAgICAgICBkYXRhID0gc3RkOjptYWtlX3VuaXF1ZTxOb2RlUmFyZURh
dGE+KG1fZGF0YS5tX3JlbmRlcmVyKS5yZWxlYXNlKCk7Ci0gICAgQVNTRVJUKGRhdGEpOwotCi0g
ICAgbV9kYXRhLm1fcmFyZURhdGEgPSBkYXRhOwotICAgIHNldEZsYWcoSGFzUmFyZURhdGFGbGFn
KTsKKyAgICAgICAgbV9yYXJlRGF0YSA9IHN0ZDo6bWFrZV91bmlxdWU8Tm9kZVJhcmVEYXRhPigp
OwogfQogCiB2b2lkIE5vZGU6OmNsZWFyUmFyZURhdGEoKQpAQCAtNDEyLDEzICs0MDUsNyBAQAog
ICAgIEFTU0VSVChoYXNSYXJlRGF0YSgpKTsKICAgICBBU1NFUlQoIXRyYW5zaWVudE11dGF0aW9u
T2JzZXJ2ZXJSZWdpc3RyeSgpIHx8IHRyYW5zaWVudE11dGF0aW9uT2JzZXJ2ZXJSZWdpc3RyeSgp
LT5pc0VtcHR5KCkpOwogCi0gICAgUmVuZGVyT2JqZWN0KiByZW5kZXJlciA9IG1fZGF0YS5tX3Jh
cmVEYXRhLT5yZW5kZXJlcigpOwotICAgIGlmIChpc0VsZW1lbnROb2RlKCkpCi0gICAgICAgIGRl
bGV0ZSBzdGF0aWNfY2FzdDxFbGVtZW50UmFyZURhdGEqPihtX2RhdGEubV9yYXJlRGF0YSk7Ci0g
ICAgZWxzZQotICAgICAgICBkZWxldGUgc3RhdGljX2Nhc3Q8Tm9kZVJhcmVEYXRhKj4obV9kYXRh
Lm1fcmFyZURhdGEpOwotICAgIG1fZGF0YS5tX3JlbmRlcmVyID0gcmVuZGVyZXI7Ci0gICAgY2xl
YXJGbGFnKEhhc1JhcmVEYXRhRmxhZyk7CisgICAgbV9yYXJlRGF0YSA9IG51bGxwdHI7CiB9CiAK
IGJvb2wgTm9kZTo6aXNOb2RlKCkgY29uc3QKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9Ob2Rl
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL05vZGUuaAkocmV2aXNpb24gMjQ4
NDYyKQorKysgU291cmNlL1dlYkNvcmUvZG9tL05vZGUuaAkod29ya2luZyBjb3B5KQpAQCAtMzEs
NiArMzEsNyBAQAogI2luY2x1ZGUgIlJlbmRlclN0eWxlQ29uc3RhbnRzLmgiCiAjaW5jbHVkZSAi
U3R5bGVWYWxpZGl0eS5oIgogI2luY2x1ZGUgIlRyZWVTY29wZS5oIgorI2luY2x1ZGUgPHd0Zi9D
b21wYWN0UG9pbnRlclR1cGxlLmg+CiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KICNpbmNsdWRl
IDx3dGYvSXNvTWFsbG9jLmg+CiAjaW5jbHVkZSA8d3RmL0xpc3RIYXNoU2V0Lmg+CkBAIC02NCwy
MCArNjUsNiBAQAogCiB1c2luZyBOb2RlT3JTdHJpbmcgPSBWYXJpYW50PFJlZlB0cjxOb2RlPiwg
U3RyaW5nPjsKIAotY2xhc3MgTm9kZVJhcmVEYXRhQmFzZSB7Ci1wdWJsaWM6Ci0gICAgUmVuZGVy
T2JqZWN0KiByZW5kZXJlcigpIGNvbnN0IHsgcmV0dXJuIG1fcmVuZGVyZXI7IH0KLSAgICB2b2lk
IHNldFJlbmRlcmVyKFJlbmRlck9iamVjdCogcmVuZGVyZXIpIHsgbV9yZW5kZXJlciA9IHJlbmRl
cmVyOyB9Ci0KLXByb3RlY3RlZDoKLSAgICBOb2RlUmFyZURhdGFCYXNlKFJlbmRlck9iamVjdCog
cmVuZGVyZXIpCi0gICAgICAgIDogbV9yZW5kZXJlcihyZW5kZXJlcikKLSAgICB7IH0KLQotcHJp
dmF0ZToKLSAgICBSZW5kZXJPYmplY3QqIG1fcmVuZGVyZXI7Ci19OwotCiBjbGFzcyBOb2RlIDog
cHVibGljIEV2ZW50VGFyZ2V0IHsKICAgICBXVEZfTUFLRV9JU09fQUxMT0NBVEVEKE5vZGUpOwog
CkBAIC00MTAsMTQgKzM5Nyw4IEBACiAgICAgLy8gSW50ZWdyYXRpb24gd2l0aCByZW5kZXJpbmcg
dHJlZQogCiAgICAgLy8gQXMgcmVuZGVyZXIoKSBpbmNsdWRlcyBhIGJyYW5jaCB5b3Ugc2hvdWxk
IGF2b2lkIGNhbGxpbmcgaXQgcmVwZWF0ZWRseSBpbiBob3QgY29kZSBwYXRocy4KLSAgICBSZW5k
ZXJPYmplY3QqIHJlbmRlcmVyKCkgY29uc3QgeyByZXR1cm4gaGFzUmFyZURhdGEoKSA/IG1fZGF0
YS5tX3JhcmVEYXRhLT5yZW5kZXJlcigpIDogbV9kYXRhLm1fcmVuZGVyZXI7IH07Ci0gICAgdm9p
ZCBzZXRSZW5kZXJlcihSZW5kZXJPYmplY3QqIHJlbmRlcmVyKQotICAgIHsKLSAgICAgICAgaWYg
KGhhc1JhcmVEYXRhKCkpCi0gICAgICAgICAgICBtX2RhdGEubV9yYXJlRGF0YS0+c2V0UmVuZGVy
ZXIocmVuZGVyZXIpOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICBtX2RhdGEubV9yZW5kZXJl
ciA9IHJlbmRlcmVyOwotICAgIH0KKyAgICBSZW5kZXJPYmplY3QqIHJlbmRlcmVyKCkgY29uc3Qg
eyByZXR1cm4gbV9yZW5kZXJlcldpdGhTdHlsZUZsYWdzLnBvaW50ZXIoKTsgfQorICAgIHZvaWQg
c2V0UmVuZGVyZXIoUmVuZGVyT2JqZWN0KiBwb2ludGVyKSB7IG1fcmVuZGVyZXJXaXRoU3R5bGVG
bGFncy5zZXRQb2ludGVyKHBvaW50ZXIpOyB9CiAKICAgICAvLyBVc2UgdGhlc2UgdHdvIG1ldGhv
ZHMgd2l0aCBjYXV0aW9uLgogICAgIFdFQkNPUkVfRVhQT1JUIFJlbmRlckJveCogcmVuZGVyQm94
KCkgY29uc3Q7CkBAIC01MjgsNyArNTA5LDcgQEAKIAogI2lmIEVOQUJMRShKSVQpCiAgICAgc3Rh
dGljIHB0cmRpZmZfdCBub2RlRmxhZ3NNZW1vcnlPZmZzZXQoKSB7IHJldHVybiBPQkpFQ1RfT0ZG
U0VUT0YoTm9kZSwgbV9ub2RlRmxhZ3MpOyB9Ci0gICAgc3RhdGljIHB0cmRpZmZfdCByYXJlRGF0
YU1lbW9yeU9mZnNldCgpIHsgcmV0dXJuIE9CSkVDVF9PRkZTRVRPRihOb2RlLCBtX2RhdGEubV9y
YXJlRGF0YSk7IH0KKyAgICBzdGF0aWMgcHRyZGlmZl90IHJhcmVEYXRhTWVtb3J5T2Zmc2V0KCkg
eyByZXR1cm4gT0JKRUNUX09GRlNFVE9GKE5vZGUsIG1fcmFyZURhdGEpOyB9CiAgICAgc3RhdGlj
IGludDMyX3QgZmxhZ0lzVGV4dCgpIHsgcmV0dXJuIElzVGV4dEZsYWc7IH0KICAgICBzdGF0aWMg
aW50MzJfdCBmbGFnSXNDb250YWluZXIoKSB7IHJldHVybiBJc0NvbnRhaW5lckZsYWc7IH0KICAg
ICBzdGF0aWMgaW50MzJfdCBmbGFnSXNFbGVtZW50KCkgeyByZXR1cm4gSXNFbGVtZW50RmxhZzsg
fQpAQCAtNTM2LDcgKzUxNyw2IEBACiAgICAgc3RhdGljIGludDMyX3QgZmxhZ0lzSFRNTCgpIHsg
cmV0dXJuIElzSFRNTEZsYWc7IH0KICAgICBzdGF0aWMgaW50MzJfdCBmbGFnSXNMaW5rKCkgeyBy
ZXR1cm4gSXNMaW5rRmxhZzsgfQogICAgIHN0YXRpYyBpbnQzMl90IGZsYWdIYXNGb2N1c1dpdGhp
bigpIHsgcmV0dXJuIEhhc0ZvY3VzV2l0aGluOyB9Ci0gICAgc3RhdGljIGludDMyX3QgZmxhZ0hh
c1JhcmVEYXRhKCkgeyByZXR1cm4gSGFzUmFyZURhdGFGbGFnOyB9CiAgICAgc3RhdGljIGludDMy
X3QgZmxhZ0lzUGFyc2luZ0NoaWxkcmVuRmluaXNoZWQoKSB7IHJldHVybiBJc1BhcnNpbmdDaGls
ZHJlbkZpbmlzaGVkRmxhZzsgfQogICAgIHN0YXRpYyBpbnQzMl90IGZsYWdDaGlsZHJlbkFmZmVj
dGVkQnlGaXJzdENoaWxkUnVsZXNGbGFnKCkgeyByZXR1cm4gQ2hpbGRyZW5BZmZlY3RlZEJ5Rmly
c3RDaGlsZFJ1bGVzRmxhZzsgfQogICAgIHN0YXRpYyBpbnQzMl90IGZsYWdDaGlsZHJlbkFmZmVj
dGVkQnlMYXN0Q2hpbGRSdWxlc0ZsYWcoKSB7IHJldHVybiBDaGlsZHJlbkFmZmVjdGVkQnlMYXN0
Q2hpbGRSdWxlc0ZsYWc7IH0KQEAgLTU1Nyw4ICs1MzcsOCBAQAogICAgICAgICBJc1NoYWRvd1Jv
b3RGbGFnID0gMSA8PCA3LAogICAgICAgICBJc0Nvbm5lY3RlZEZsYWcgPSAxIDw8IDgsCiAgICAg
ICAgIElzSW5TaGFkb3dUcmVlRmxhZyA9IDEgPDwgOSwKLSAgICAgICAgSGFzUmFyZURhdGFGbGFn
ID0gMSA8PCAxMCwKLSAgICAgICAgSGFzRXZlbnRUYXJnZXREYXRhRmxhZyA9IDEgPDwgMTEsCisg
ICAgICAgIEhhc0V2ZW50VGFyZ2V0RGF0YUZsYWcgPSAxIDw8IDEwLAorICAgICAgICBTdHlsZUFm
ZmVjdGVkQnlGb2N1c1dpdGhpbkZsYWcgPSAxIDwgMTEsCiAKICAgICAgICAgLy8gVGhlc2UgYml0
cyBhcmUgdXNlZCBieSBkZXJpdmVkIGNsYXNzZXMsIHB1bGxlZCB1cCBoZXJlIHNvIHRoZXkgY2Fu
CiAgICAgICAgIC8vIGJlIHN0b3JlZCBpbiB0aGUgc2FtZSBtZW1vcnkgd29yZCBhcyB0aGUgTm9k
ZSBiaXRzIGFib3ZlLgpAQCAtNjIwLDExICs2MDAsMjkgQEAKICAgICBzdGF0aWMgY29uc3RleHBy
IHVpbnQzMl90IHNfcmVmQ291bnRJbmNyZW1lbnQgPSAyOwogICAgIHN0YXRpYyBjb25zdGV4cHIg
dWludDMyX3Qgc19yZWZDb3VudE1hc2sgPSB+c3RhdGljX2Nhc3Q8dWludDMyX3Q+KDEpOwogCisg
ICAgZW51bSBjbGFzcyBFbGVtZW50U3R5bGVGbGFnIDogdWludDhfdCB7CisgICAgICAgIFN0eWxl
QWZmZWN0ZWRCeUFjdGl2ZSA9IDEgPDwgMCwKKyAgICAgICAgU3R5bGVBZmZlY3RlZEJ5RW1wdHkg
PSAxIDw8IDEsCisgICAgICAgIENoaWxkcmVuQWZmZWN0ZWRCeURyYWcgPSAxIDw8IDIsCisKKyAg
ICAgICAgLy8gQml0cyBmb3IgZHluYW1pYyBjaGlsZCBtYXRjaGluZy4KKyAgICAgICAgLy8gV2Ug
b3B0aW1pemUgZm9yIDpmaXJzdC1jaGlsZCBhbmQgOmxhc3QtY2hpbGQuIFRoZSBvdGhlciBwb3Np
dGlvbmFsIGNoaWxkIHNlbGVjdG9ycyBsaWtlIG50aC1jaGlsZCBvcgorICAgICAgICAvLyAqLWNo
aWxkLW9mLXR5cGUsIHdlIHdpbGwganVzdCBnaXZlIHVwIGFuZCByZS1ldmFsdWF0ZSB3aGVuZXZl
ciBjaGlsZHJlbiBjaGFuZ2UgYXQgYWxsLgorICAgICAgICBDaGlsZHJlbkFmZmVjdGVkQnlGb3J3
YXJkUG9zaXRpb25hbFJ1bGVzID0gMSA8PCAzLAorICAgICAgICBEZXNjZW5kYW50c0FmZmVjdGVk
QnlGb3J3YXJkUG9zaXRpb25hbFJ1bGVzID0gMSA8PCA0LAorICAgICAgICBDaGlsZHJlbkFmZmVj
dGVkQnlCYWNrd2FyZFBvc2l0aW9uYWxSdWxlcyA9IDEgPDwgNSwKKyAgICAgICAgRGVzY2VuZGFu
dHNBZmZlY3RlZEJ5QmFja3dhcmRQb3NpdGlvbmFsUnVsZXMgPSAxIDw8IDYsCisgICAgICAgIENo
aWxkcmVuQWZmZWN0ZWRCeVByb3BlcnR5QmFzZWRCYWNrd2FyZFBvc2l0aW9uYWxSdWxlcyA9IDEg
PDwgNywKKyAgICB9OworCisgICAgYm9vbCBoYXNTdHlsZUZsYWcoRWxlbWVudFN0eWxlRmxhZyBz
dGF0ZSkgY29uc3QgeyByZXR1cm4gbV9yZW5kZXJlcldpdGhTdHlsZUZsYWdzLnR5cGUoKSAmIHN0
YXRpY19jYXN0PHVpbnQ4X3Q+KHN0YXRlKTsgfQorICAgIHZvaWQgc2V0U3R5bGVGbGFnKEVsZW1l
bnRTdHlsZUZsYWcgc3RhdGUpIHsgbV9yZW5kZXJlcldpdGhTdHlsZUZsYWdzLnNldFR5cGUobV9y
ZW5kZXJlcldpdGhTdHlsZUZsYWdzLnR5cGUoKSB8IHN0YXRpY19jYXN0PHVpbnQ4X3Q+KHN0YXRl
KSk7IH0KKyAgICB2b2lkIGNsZWFyU3R5bGVGbGFncygpIHsgbV9yZW5kZXJlcldpdGhTdHlsZUZs
YWdzLnNldFR5cGUoMCk7IH0KKwogICAgIHZpcnR1YWwgdm9pZCBhZGRTdWJyZXNvdXJjZUF0dHJp
YnV0ZVVSTHMoTGlzdEhhc2hTZXQ8VVJMPiYpIGNvbnN0IHsgfQogCi0gICAgYm9vbCBoYXNSYXJl
RGF0YSgpIGNvbnN0IHsgcmV0dXJuIGdldEZsYWcoSGFzUmFyZURhdGFGbGFnKTsgfQotCi0gICAg
Tm9kZVJhcmVEYXRhKiByYXJlRGF0YSgpIGNvbnN0OworICAgIGJvb2wgaGFzUmFyZURhdGEoKSBj
b25zdCB7IHJldHVybiAhIW1fcmFyZURhdGE7IH0KKyAgICBOb2RlUmFyZURhdGEqIHJhcmVEYXRh
KCkgY29uc3QgeyByZXR1cm4gbV9yYXJlRGF0YS5nZXQoKTsgfQogICAgIE5vZGVSYXJlRGF0YSYg
ZW5zdXJlUmFyZURhdGEoKTsKICAgICB2b2lkIGNsZWFyUmFyZURhdGEoKTsKIApAQCAtNjczLDEx
ICs2NzEsOCBAQAogICAgIFRyZWVTY29wZSogbV90cmVlU2NvcGUgeyBudWxscHRyIH07CiAgICAg
Tm9kZSogbV9wcmV2aW91cyB7IG51bGxwdHIgfTsKICAgICBOb2RlKiBtX25leHQgeyBudWxscHRy
IH07Ci0gICAgLy8gV2hlbiBhIG5vZGUgaGFzIHJhcmUgZGF0YSB3ZSBtb3ZlIHRoZSByZW5kZXJl
ciBpbnRvIHRoZSByYXJlIGRhdGEuCi0gICAgdW5pb24gRGF0YVVuaW9uIHsKLSAgICAgICAgUmVu
ZGVyT2JqZWN0KiBtX3JlbmRlcmVyOwotICAgICAgICBOb2RlUmFyZURhdGFCYXNlKiBtX3JhcmVE
YXRhOwotICAgIH0gbV9kYXRhIHsgbnVsbHB0ciB9OworICAgIENvbXBhY3RQb2ludGVyVHVwbGU8
UmVuZGVyT2JqZWN0KiwgdWludDhfdD4gbV9yZW5kZXJlcldpdGhTdHlsZUZsYWdzOworICAgIHN0
ZDo6dW5pcXVlX3B0cjxOb2RlUmFyZURhdGE+IG1fcmFyZURhdGE7CiB9OwogCiAjaWZuZGVmIE5E
RUJVRwpJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL05vZGVSYXJlRGF0YS5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL05vZGVSYXJlRGF0YS5jcHAJKHJldmlzaW9uIDI0ODQ2
MikKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlUmFyZURhdGEuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0zNyw3ICszNyw3IEBACiAKIHN0cnVjdCBTYW1lU2l6ZUFzTm9kZVJhcmVEYXRhIHsKICAg
ICB1bnNpZ25lZCBtX2JpdGZpZWxkcyA6IDIwOwotICAgIHZvaWQqIG1fcG9pbnRlclszXTsKKyAg
ICB2b2lkKiBtX3BvaW50ZXJbMl07CiB9OwogCiBDT01QSUxFX0FTU0VSVChzaXplb2YoTm9kZVJh
cmVEYXRhKSA9PSBzaXplb2YoU2FtZVNpemVBc05vZGVSYXJlRGF0YSksIE5vZGVSYXJlRGF0YVNo
b3VsZFN0YXlTbWFsbCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vTm9kZVJhcmVEYXRhLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL05vZGVSYXJlRGF0YS5oCShyZXZpc2lv
biAyNDg0NjIpCisrKyBTb3VyY2UvV2ViQ29yZS9kb20vTm9kZVJhcmVEYXRhLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTI0Nyw3ICsyNDcsNyBAQAogICAgIE5vZGVNdXRhdGlvbk9ic2VydmVyRGF0YSgp
IHsgfQogfTsKIAotY2xhc3MgTm9kZVJhcmVEYXRhIDogcHVibGljIE5vZGVSYXJlRGF0YUJhc2Ug
eworY2xhc3MgTm9kZVJhcmVEYXRhIHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShOb2RlUmFy
ZURhdGEpOyBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICNpZiBkZWZpbmVkKERV
TVBfTk9ERV9TVEFUSVNUSUNTKSAmJiBEVU1QX05PREVfU1RBVElTVElDUwpAQCAtMjU3LDIzICsy
NTcsMjAgQEAKICAgICAgICAgTXV0YXRpb25PYnNlcnZlciA9IDEgPDwgMiwKIAogICAgICAgICBU
YWJJbmRleCA9IDEgPDwgMywKLSAgICAgICAgU3R5bGVGbGFncyA9IDEgPDwgNCwKLSAgICAgICAg
TWluaW11bVNpemUgPSAxIDw8IDUsCi0gICAgICAgIFNjcm9sbGluZ1Bvc2l0aW9uID0gMSA8PCA2
LAotICAgICAgICBDb21wdXRlZFN0eWxlID0gMSA8PCA3LAotICAgICAgICBEYXRhc2V0ID0gMSA8
PCA4LAotICAgICAgICBDbGFzc0xpc3QgPSAxIDw8IDksCi0gICAgICAgIFNoYWRvd1Jvb3QgPSAx
IDw8IDEwLAotICAgICAgICBDdXN0b21FbGVtZW50UXVldWUgPSAxIDw8IDExLAotICAgICAgICBB
dHRyaWJ1dGVNYXAgPSAxIDw8IDEyLAotICAgICAgICBJbnRlcmFjdGlvbk9ic2VydmVyID0gMSA8
PCAxMywKLSAgICAgICAgUHNldWRvRWxlbWVudHMgPSAxIDw8IDE0LAorICAgICAgICBNaW5pbXVt
U2l6ZSA9IDEgPDwgNCwKKyAgICAgICAgU2Nyb2xsaW5nUG9zaXRpb24gPSAxIDw8IDUsCisgICAg
ICAgIENvbXB1dGVkU3R5bGUgPSAxIDw8IDYsCisgICAgICAgIERhdGFzZXQgPSAxIDw8IDcsCisg
ICAgICAgIENsYXNzTGlzdCA9IDEgPDwgOCwKKyAgICAgICAgU2hhZG93Um9vdCA9IDEgPDwgOSwK
KyAgICAgICAgQ3VzdG9tRWxlbWVudFF1ZXVlID0gMSA8PCAxMCwKKyAgICAgICAgQXR0cmlidXRl
TWFwID0gMSA8PCAxMSwKKyAgICAgICAgSW50ZXJhY3Rpb25PYnNlcnZlciA9IDEgPDwgMTIsCisg
ICAgICAgIFBzZXVkb0VsZW1lbnRzID0gMSA8PCAxMywKICAgICB9OwogI2VuZGlmCiAKLSAgICBO
b2RlUmFyZURhdGEoUmVuZGVyT2JqZWN0KiByZW5kZXJlcikKLSAgICAgICAgOiBOb2RlUmFyZURh
dGFCYXNlKHJlbmRlcmVyKQotICAgICAgICAsIG1fY29ubmVjdGVkRnJhbWVDb3VudCgwKQorICAg
IE5vZGVSYXJlRGF0YSgpCiAgICAgeyB9CiAKICAgICB2b2lkIGNsZWFyTm9kZUxpc3RzKCkgeyBt
X25vZGVMaXN0cyA9IG51bGxwdHI7IH0KQEAgLTMyMCw3ICszMTcsNyBAQAogI2VuZGlmCiAKIHBy
aXZhdGU6Ci0gICAgdW5zaWduZWQgbV9jb25uZWN0ZWRGcmFtZUNvdW50OyAvLyBNdXN0IGZpdCBQ
YWdlOjptYXhOdW1iZXJPZkZyYW1lcy4KKyAgICB1bnNpZ25lZCBtX2Nvbm5lY3RlZEZyYW1lQ291
bnQgeyAwIH07IC8vIE11c3QgZml0IFBhZ2U6Om1heE51bWJlck9mRnJhbWVzLgogCiAgICAgc3Rk
Ojp1bmlxdWVfcHRyPE5vZGVMaXN0c05vZGVEYXRhPiBtX25vZGVMaXN0czsKICAgICBzdGQ6OnVu
aXF1ZV9wdHI8Tm9kZU11dGF0aW9uT2JzZXJ2ZXJEYXRhPiBtX211dGF0aW9uT2JzZXJ2ZXJEYXRh
OwpAQCAtMzM2LDEyICszMzMsNiBAQAogICAgIHJldHVybiB0cnVlOwogfQogCi1pbmxpbmUgTm9k
ZVJhcmVEYXRhKiBOb2RlOjpyYXJlRGF0YSgpIGNvbnN0Ci17Ci0gICAgQVNTRVJUX1dJVEhfU0VD
VVJJVFlfSU1QTElDQVRJT04oaGFzUmFyZURhdGEoKSk7Ci0gICAgcmV0dXJuIHN0YXRpY19jYXN0
PE5vZGVSYXJlRGF0YSo+KG1fZGF0YS5tX3JhcmVEYXRhKTsKLX0KLQogaW5saW5lIE5vZGVSYXJl
RGF0YSYgTm9kZTo6ZW5zdXJlUmFyZURhdGEoKQogewogICAgIGlmICghaGFzUmFyZURhdGEoKSkK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>376369</attachid>
            <date>2019-08-15 01:33:39 -0700</date>
            <delta_ts>2019-08-15 15:21:23 -0700</delta_ts>
            <desc>WIP3</desc>
            <filename>wip200744c.patch</filename>
            <type>text/plain</type>
            <size>29897</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XVEYvd3RmL0NvbXBhY3RQb2ludGVyVHVwbGUuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV1RGL3d0Zi9Db21wYWN0UG9pbnRlclR1cGxlLmgJKHJldmlzaW9uIDI0ODQ2MikK
KysrIFNvdXJjZS9XVEYvd3RmL0NvbXBhY3RQb2ludGVyVHVwbGUuaAkod29ya2luZyBjb3B5KQpA
QCAtMzksNyArMzksNiBAQAogcHVibGljOgogICAgIHN0YXRpY19hc3NlcnQoc2l6ZW9mKFR5cGUp
ID09IDEsICIiKTsKICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfcG9pbnRlcjxQb2ludGVyVHlw
ZT46OnZhbHVlLCAiIik7Ci0gICAgc3RhdGljX2Fzc2VydChhbGlnbm9mKHR5cGVuYW1lIHN0ZDo6
cmVtb3ZlX3BvaW50ZXI8UG9pbnRlclR5cGU+Ojp0eXBlKSA+PSBhbGlnbm9mKHZvaWQqKSwgIiIp
OwogICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc19pbnRlZ3JhbDxUeXBlPjo6dmFsdWUgfHwgc3Rk
Ojppc19lbnVtPFR5cGU+Ojp2YWx1ZSwgIiIpOwogCiAgICAgQ29tcGFjdFBvaW50ZXJUdXBsZSgp
ID0gZGVmYXVsdDsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Nzc2ppdC9TZWxlY3RvckNvbXBpbGVy
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9jc3NqaXQvU2VsZWN0b3JDb21waWxl
ci5jcHAJKHJldmlzaW9uIDI0ODQ2MikKKysrIFNvdXJjZS9XZWJDb3JlL2Nzc2ppdC9TZWxlY3Rv
ckNvbXBpbGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzYwMiwxMCArMzYwMiwxMiBAQAogCiAg
ICAgICAgIEFzc2VtYmxlcjo6SnVtcExpc3Qgbm9DYWNoZWRDaGlsZEluZGV4Q2FzZXM7CiAgICAg
ICAgIGdlbmVyYXRlV2Fsa1RvUHJldmlvdXNBZGphY2VudEVsZW1lbnQobm9Nb3JlU2libGluZ3ND
YXNlcywgcHJldmlvdXNTaWJsaW5nKTsKLSAgICAgICAgbm9DYWNoZWRDaGlsZEluZGV4Q2FzZXMu
YXBwZW5kKG1fYXNzZW1ibGVyLmJyYW5jaFRlc3QzMihBc3NlbWJsZXI6Olplcm8sIEFzc2VtYmxl
cjo6QWRkcmVzcyhwcmV2aW91c1NpYmxpbmcsIE5vZGU6Om5vZGVGbGFnc01lbW9yeU9mZnNldCgp
KSwgQXNzZW1ibGVyOjpUcnVzdGVkSW1tMzIoTm9kZTo6ZmxhZ0hhc1JhcmVEYXRhKCkpKSk7CisK
KyAgICAgICAgTG9jYWxSZWdpc3RlciBlbGVtZW50UmFyZURhdGEobV9yZWdpc3RlckFsbG9jYXRv
cik7CisgICAgICAgIG1fYXNzZW1ibGVyLmxvYWRQdHIoQXNzZW1ibGVyOjpBZGRyZXNzKHByZXZp
b3VzU2libGluZywgTm9kZTo6cmFyZURhdGFNZW1vcnlPZmZzZXQoKSksIGVsZW1lbnRSYXJlRGF0
YSk7CisKKyAgICAgICAgbm9DYWNoZWRDaGlsZEluZGV4Q2FzZXMuYXBwZW5kKG1fYXNzZW1ibGVy
LmJyYW5jaFRlc3RQdHIoQXNzZW1ibGVyOjpaZXJvLCBlbGVtZW50UmFyZURhdGEpKTsKICAgICAg
ICAgewotICAgICAgICAgICAgTG9jYWxSZWdpc3RlciBlbGVtZW50UmFyZURhdGEobV9yZWdpc3Rl
ckFsbG9jYXRvcik7Ci0gICAgICAgICAgICBtX2Fzc2VtYmxlci5sb2FkUHRyKEFzc2VtYmxlcjo6
QWRkcmVzcyhwcmV2aW91c1NpYmxpbmcsIE5vZGU6OnJhcmVEYXRhTWVtb3J5T2Zmc2V0KCkpLCBl
bGVtZW50UmFyZURhdGEpOwogICAgICAgICAgICAgTG9jYWxSZWdpc3RlciBjYWNoZWRDaGlsZElu
ZGV4KG1fcmVnaXN0ZXJBbGxvY2F0b3IpOwogICAgICAgICAgICAgbV9hc3NlbWJsZXIubG9hZDE2
KEFzc2VtYmxlcjo6QWRkcmVzcyhlbGVtZW50UmFyZURhdGEsIEVsZW1lbnRSYXJlRGF0YTo6Y2hp
bGRJbmRleE1lbW9yeU9mZnNldCgpKSwgY2FjaGVkQ2hpbGRJbmRleCk7CiAgICAgICAgICAgICBu
b0NhY2hlZENoaWxkSW5kZXhDYXNlcy5hcHBlbmQobV9hc3NlbWJsZXIuYnJhbmNoVGVzdDMyKEFz
c2VtYmxlcjo6WmVybywgY2FjaGVkQ2hpbGRJbmRleCkpOwpJbmRleDogU291cmNlL1dlYkNvcmUv
ZG9tL0VsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50
LmNwcAkocmV2aXNpb24gMjQ4NDYyKQorKysgU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0zMjAzLDUxICszMjAzLDYgQEAKICAgICByZXR1cm4gdHJ1ZTsK
IH0KIAotdm9pZCBFbGVtZW50OjpzZXRTdHlsZUFmZmVjdGVkQnlFbXB0eSgpCi17Ci0gICAgZW5z
dXJlRWxlbWVudFJhcmVEYXRhKCkuc2V0U3R5bGVBZmZlY3RlZEJ5RW1wdHkodHJ1ZSk7Ci19Ci0K
LXZvaWQgRWxlbWVudDo6c2V0U3R5bGVBZmZlY3RlZEJ5Rm9jdXNXaXRoaW4oKQotewotICAgIGVu
c3VyZUVsZW1lbnRSYXJlRGF0YSgpLnNldFN0eWxlQWZmZWN0ZWRCeUZvY3VzV2l0aGluKHRydWUp
OwotfQotCi12b2lkIEVsZW1lbnQ6OnNldFN0eWxlQWZmZWN0ZWRCeUFjdGl2ZSgpCi17Ci0gICAg
ZW5zdXJlRWxlbWVudFJhcmVEYXRhKCkuc2V0U3R5bGVBZmZlY3RlZEJ5QWN0aXZlKHRydWUpOwot
fQotCi12b2lkIEVsZW1lbnQ6OnNldENoaWxkcmVuQWZmZWN0ZWRCeURyYWcoKQotewotICAgIGVu
c3VyZUVsZW1lbnRSYXJlRGF0YSgpLnNldENoaWxkcmVuQWZmZWN0ZWRCeURyYWcodHJ1ZSk7Ci19
Ci0KLXZvaWQgRWxlbWVudDo6c2V0Q2hpbGRyZW5BZmZlY3RlZEJ5Rm9yd2FyZFBvc2l0aW9uYWxS
dWxlcygpCi17Ci0gICAgZW5zdXJlRWxlbWVudFJhcmVEYXRhKCkuc2V0Q2hpbGRyZW5BZmZlY3Rl
ZEJ5Rm9yd2FyZFBvc2l0aW9uYWxSdWxlcyh0cnVlKTsKLX0KLQotdm9pZCBFbGVtZW50OjpzZXRE
ZXNjZW5kYW50c0FmZmVjdGVkQnlGb3J3YXJkUG9zaXRpb25hbFJ1bGVzKCkKLXsKLSAgICBlbnN1
cmVFbGVtZW50UmFyZURhdGEoKS5zZXREZXNjZW5kYW50c0FmZmVjdGVkQnlGb3J3YXJkUG9zaXRp
b25hbFJ1bGVzKHRydWUpOwotfQotCi12b2lkIEVsZW1lbnQ6OnNldENoaWxkcmVuQWZmZWN0ZWRC
eUJhY2t3YXJkUG9zaXRpb25hbFJ1bGVzKCkKLXsKLSAgICBlbnN1cmVFbGVtZW50UmFyZURhdGEo
KS5zZXRDaGlsZHJlbkFmZmVjdGVkQnlCYWNrd2FyZFBvc2l0aW9uYWxSdWxlcyh0cnVlKTsKLX0K
LQotdm9pZCBFbGVtZW50OjpzZXREZXNjZW5kYW50c0FmZmVjdGVkQnlCYWNrd2FyZFBvc2l0aW9u
YWxSdWxlcygpCi17Ci0gICAgZW5zdXJlRWxlbWVudFJhcmVEYXRhKCkuc2V0RGVzY2VuZGFudHNB
ZmZlY3RlZEJ5QmFja3dhcmRQb3NpdGlvbmFsUnVsZXModHJ1ZSk7Ci19Ci0KLXZvaWQgRWxlbWVu
dDo6c2V0Q2hpbGRyZW5BZmZlY3RlZEJ5UHJvcGVydHlCYXNlZEJhY2t3YXJkUG9zaXRpb25hbFJ1
bGVzKCkKLXsKLSAgICBlbnN1cmVFbGVtZW50UmFyZURhdGEoKS5zZXRDaGlsZHJlbkFmZmVjdGVk
QnlQcm9wZXJ0eUJhc2VkQmFja3dhcmRQb3NpdGlvbmFsUnVsZXModHJ1ZSk7Ci19Ci0KIHZvaWQg
RWxlbWVudDo6c2V0Q2hpbGRJbmRleCh1bnNpZ25lZCBpbmRleCkKIHsKICAgICBFbGVtZW50UmFy
ZURhdGEmIHJhcmVEYXRhID0gZW5zdXJlRWxlbWVudFJhcmVEYXRhKCk7CkBAIC0zMjU2LDc0ICsz
MjExLDE4IEBACiAKIGJvb2wgRWxlbWVudDo6aGFzRmxhZ3NTZXREdXJpbmdTdHlsaW5nT2ZDaGls
ZHJlbigpIGNvbnN0CiB7Ci0gICAgaWYgKGNoaWxkcmVuQWZmZWN0ZWRCeUhvdmVyKCkgfHwgY2hp
bGRyZW5BZmZlY3RlZEJ5Rmlyc3RDaGlsZFJ1bGVzKCkgfHwgY2hpbGRyZW5BZmZlY3RlZEJ5TGFz
dENoaWxkUnVsZXMoKSkKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0KLSAgICBpZiAoIWhhc1JhcmVE
YXRhKCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICByZXR1cm4gcmFyZURhdGFTdHlsZUFm
ZmVjdGVkQnlBY3RpdmUoKQotICAgICAgICB8fCByYXJlRGF0YUNoaWxkcmVuQWZmZWN0ZWRCeURy
YWcoKQotICAgICAgICB8fCByYXJlRGF0YUNoaWxkcmVuQWZmZWN0ZWRCeUZvcndhcmRQb3NpdGlv
bmFsUnVsZXMoKQotICAgICAgICB8fCByYXJlRGF0YURlc2NlbmRhbnRzQWZmZWN0ZWRCeUZvcndh
cmRQb3NpdGlvbmFsUnVsZXMoKQotICAgICAgICB8fCByYXJlRGF0YUNoaWxkcmVuQWZmZWN0ZWRC
eUJhY2t3YXJkUG9zaXRpb25hbFJ1bGVzKCkKLSAgICAgICAgfHwgcmFyZURhdGFEZXNjZW5kYW50
c0FmZmVjdGVkQnlCYWNrd2FyZFBvc2l0aW9uYWxSdWxlcygpCi0gICAgICAgIHx8IHJhcmVEYXRh
Q2hpbGRyZW5BZmZlY3RlZEJ5UHJvcGVydHlCYXNlZEJhY2t3YXJkUG9zaXRpb25hbFJ1bGVzKCk7
CisgICAgcmV0dXJuIHN0eWxlQWZmZWN0ZWRCeUFjdGl2ZSgpCisgICAgICAgIHx8IGNoaWxkcmVu
QWZmZWN0ZWRCeUhvdmVyKCkKKyAgICAgICAgfHwgY2hpbGRyZW5BZmZlY3RlZEJ5Rmlyc3RDaGls
ZFJ1bGVzKCkKKyAgICAgICAgfHwgY2hpbGRyZW5BZmZlY3RlZEJ5TGFzdENoaWxkUnVsZXMoKQor
ICAgICAgICB8fCBjaGlsZHJlbkFmZmVjdGVkQnlEcmFnKCkKKyAgICAgICAgfHwgY2hpbGRyZW5B
ZmZlY3RlZEJ5Rm9yd2FyZFBvc2l0aW9uYWxSdWxlcygpCisgICAgICAgIHx8IGRlc2NlbmRhbnRz
QWZmZWN0ZWRCeUZvcndhcmRQb3NpdGlvbmFsUnVsZXMoKQorICAgICAgICB8fCBjaGlsZHJlbkFm
ZmVjdGVkQnlCYWNrd2FyZFBvc2l0aW9uYWxSdWxlcygpCisgICAgICAgIHx8IGRlc2NlbmRhbnRz
QWZmZWN0ZWRCeUJhY2t3YXJkUG9zaXRpb25hbFJ1bGVzKCkKKyAgICAgICAgfHwgY2hpbGRyZW5B
ZmZlY3RlZEJ5UHJvcGVydHlCYXNlZEJhY2t3YXJkUG9zaXRpb25hbFJ1bGVzKCk7CiB9CiAKLWJv
b2wgRWxlbWVudDo6cmFyZURhdGFTdHlsZUFmZmVjdGVkQnlFbXB0eSgpIGNvbnN0Ci17Ci0gICAg
QVNTRVJUKGhhc1JhcmVEYXRhKCkpOwotICAgIHJldHVybiBlbGVtZW50UmFyZURhdGEoKS0+c3R5
bGVBZmZlY3RlZEJ5RW1wdHkoKTsKLX0KLQotYm9vbCBFbGVtZW50OjpyYXJlRGF0YVN0eWxlQWZm
ZWN0ZWRCeUZvY3VzV2l0aGluKCkgY29uc3QKLXsKLSAgICBBU1NFUlQoaGFzUmFyZURhdGEoKSk7
Ci0gICAgcmV0dXJuIGVsZW1lbnRSYXJlRGF0YSgpLT5zdHlsZUFmZmVjdGVkQnlGb2N1c1dpdGhp
bigpOwotfQotCi1ib29sIEVsZW1lbnQ6OnJhcmVEYXRhU3R5bGVBZmZlY3RlZEJ5QWN0aXZlKCkg
Y29uc3QKLXsKLSAgICBBU1NFUlQoaGFzUmFyZURhdGEoKSk7Ci0gICAgcmV0dXJuIGVsZW1lbnRS
YXJlRGF0YSgpLT5zdHlsZUFmZmVjdGVkQnlBY3RpdmUoKTsKLX0KLQotYm9vbCBFbGVtZW50Ojpy
YXJlRGF0YUNoaWxkcmVuQWZmZWN0ZWRCeURyYWcoKSBjb25zdAotewotICAgIEFTU0VSVChoYXNS
YXJlRGF0YSgpKTsKLSAgICByZXR1cm4gZWxlbWVudFJhcmVEYXRhKCktPmNoaWxkcmVuQWZmZWN0
ZWRCeURyYWcoKTsKLX0KLQotYm9vbCBFbGVtZW50OjpyYXJlRGF0YUNoaWxkcmVuQWZmZWN0ZWRC
eUZvcndhcmRQb3NpdGlvbmFsUnVsZXMoKSBjb25zdAotewotICAgIEFTU0VSVChoYXNSYXJlRGF0
YSgpKTsKLSAgICByZXR1cm4gZWxlbWVudFJhcmVEYXRhKCktPmNoaWxkcmVuQWZmZWN0ZWRCeUZv
cndhcmRQb3NpdGlvbmFsUnVsZXMoKTsKLX0KLQotYm9vbCBFbGVtZW50OjpyYXJlRGF0YURlc2Nl
bmRhbnRzQWZmZWN0ZWRCeUZvcndhcmRQb3NpdGlvbmFsUnVsZXMoKSBjb25zdAotewotICAgIEFT
U0VSVChoYXNSYXJlRGF0YSgpKTsKLSAgICByZXR1cm4gZWxlbWVudFJhcmVEYXRhKCktPmRlc2Nl
bmRhbnRzQWZmZWN0ZWRCeUZvcndhcmRQb3NpdGlvbmFsUnVsZXMoKTsKLX0KLQotYm9vbCBFbGVt
ZW50OjpyYXJlRGF0YUNoaWxkcmVuQWZmZWN0ZWRCeUJhY2t3YXJkUG9zaXRpb25hbFJ1bGVzKCkg
Y29uc3QKLXsKLSAgICBBU1NFUlQoaGFzUmFyZURhdGEoKSk7Ci0gICAgcmV0dXJuIGVsZW1lbnRS
YXJlRGF0YSgpLT5jaGlsZHJlbkFmZmVjdGVkQnlCYWNrd2FyZFBvc2l0aW9uYWxSdWxlcygpOwot
fQotCi1ib29sIEVsZW1lbnQ6OnJhcmVEYXRhRGVzY2VuZGFudHNBZmZlY3RlZEJ5QmFja3dhcmRQ
b3NpdGlvbmFsUnVsZXMoKSBjb25zdAotewotICAgIEFTU0VSVChoYXNSYXJlRGF0YSgpKTsKLSAg
ICByZXR1cm4gZWxlbWVudFJhcmVEYXRhKCktPmRlc2NlbmRhbnRzQWZmZWN0ZWRCeUJhY2t3YXJk
UG9zaXRpb25hbFJ1bGVzKCk7Ci19Ci0KLWJvb2wgRWxlbWVudDo6cmFyZURhdGFDaGlsZHJlbkFm
ZmVjdGVkQnlQcm9wZXJ0eUJhc2VkQmFja3dhcmRQb3NpdGlvbmFsUnVsZXMoKSBjb25zdAotewot
ICAgIEFTU0VSVChoYXNSYXJlRGF0YSgpKTsKLSAgICByZXR1cm4gZWxlbWVudFJhcmVEYXRhKCkt
PmNoaWxkcmVuQWZmZWN0ZWRCeVByb3BlcnR5QmFzZWRCYWNrd2FyZFBvc2l0aW9uYWxSdWxlcygp
OwotfQotCiB1bnNpZ25lZCBFbGVtZW50OjpyYXJlRGF0YUNoaWxkSW5kZXgoKSBjb25zdAogewog
ICAgIEFTU0VSVChoYXNSYXJlRGF0YSgpKTsKQEAgLTM5NTQsNiArMzg1Myw5IEBACiAKIHZvaWQg
RWxlbWVudDo6cmVzZXRTdHlsZVJlbGF0aW9ucygpCiB7CisgICAgLy8gRklYTUU6IE1ha2UgdGhp
cyBjb2RlIG1vcmUgY29uc2lzdGVudC4KKyAgICBjbGVhckZsYWcoU3R5bGVBZmZlY3RlZEJ5Rm9j
dXNXaXRoaW5GbGFnKTsKKyAgICBjbGVhclN0eWxlRmxhZ3MoKTsKICAgICBpZiAoIWhhc1JhcmVE
YXRhKCkpCiAgICAgICAgIHJldHVybjsKICAgICBlbGVtZW50UmFyZURhdGEoKS0+cmVzZXRTdHls
ZVJlbGF0aW9ucygpOwpJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5oCShyZXZpc2lvbiAyNDg0NjIpCisr
KyBTb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMzksMzcg
KzMzOSwzNyBAQAogICAgIGJvb2wgbmVlZHNTdHlsZUludmFsaWRhdGlvbigpIGNvbnN0OwogCiAg
ICAgLy8gTWV0aG9kcyBmb3IgaW5kaWNhdGluZyB0aGUgc3R5bGUgaXMgYWZmZWN0ZWQgYnkgZHlu
YW1pYyB1cGRhdGVzIChlLmcuLCBjaGlsZHJlbiBjaGFuZ2luZywgb3VyIHBvc2l0aW9uIGNoYW5n
aW5nIGluIG91ciBzaWJsaW5nIGxpc3QsIGV0Yy4pCi0gICAgYm9vbCBzdHlsZUFmZmVjdGVkQnlB
Y3RpdmUoKSBjb25zdCB7IHJldHVybiBoYXNSYXJlRGF0YSgpICYmIHJhcmVEYXRhU3R5bGVBZmZl
Y3RlZEJ5QWN0aXZlKCk7IH0KLSAgICBib29sIHN0eWxlQWZmZWN0ZWRCeUVtcHR5KCkgY29uc3Qg
eyByZXR1cm4gaGFzUmFyZURhdGEoKSAmJiByYXJlRGF0YVN0eWxlQWZmZWN0ZWRCeUVtcHR5KCk7
IH0KLSAgICBib29sIHN0eWxlQWZmZWN0ZWRCeUZvY3VzV2l0aGluKCkgY29uc3QgeyByZXR1cm4g
aGFzUmFyZURhdGEoKSAmJiByYXJlRGF0YVN0eWxlQWZmZWN0ZWRCeUZvY3VzV2l0aGluKCk7IH0K
KyAgICBib29sIHN0eWxlQWZmZWN0ZWRCeUFjdGl2ZSgpIGNvbnN0IHsgcmV0dXJuIGhhc1N0eWxl
RmxhZyhFbGVtZW50U3R5bGVGbGFnOjpTdHlsZUFmZmVjdGVkQnlBY3RpdmUpOyB9CisgICAgYm9v
bCBzdHlsZUFmZmVjdGVkQnlFbXB0eSgpIGNvbnN0IHsgcmV0dXJuIGhhc1N0eWxlRmxhZyhFbGVt
ZW50U3R5bGVGbGFnOjpTdHlsZUFmZmVjdGVkQnlFbXB0eSk7IH0KKyAgICBib29sIHN0eWxlQWZm
ZWN0ZWRCeUZvY3VzV2l0aGluKCkgY29uc3QgeyByZXR1cm4gZ2V0RmxhZyhTdHlsZUFmZmVjdGVk
QnlGb2N1c1dpdGhpbkZsYWcpOyB9CiAgICAgYm9vbCBkZXNjZW5kYW50c0FmZmVjdGVkQnlQcmV2
aW91c1NpYmxpbmcoKSBjb25zdCB7IHJldHVybiBnZXRGbGFnKERlc2NlbmRhbnRzQWZmZWN0ZWRC
eVByZXZpb3VzU2libGluZ0ZsYWcpOyB9CiAgICAgYm9vbCBjaGlsZHJlbkFmZmVjdGVkQnlIb3Zl
cigpIGNvbnN0IHsgcmV0dXJuIGdldEZsYWcoQ2hpbGRyZW5BZmZlY3RlZEJ5SG92ZXJSdWxlc0Zs
YWcpOyB9Ci0gICAgYm9vbCBjaGlsZHJlbkFmZmVjdGVkQnlEcmFnKCkgY29uc3QgeyByZXR1cm4g
aGFzUmFyZURhdGEoKSAmJiByYXJlRGF0YUNoaWxkcmVuQWZmZWN0ZWRCeURyYWcoKTsgfQorICAg
IGJvb2wgY2hpbGRyZW5BZmZlY3RlZEJ5RHJhZygpIGNvbnN0IHsgcmV0dXJuIGhhc1N0eWxlRmxh
ZyhFbGVtZW50U3R5bGVGbGFnOjpDaGlsZHJlbkFmZmVjdGVkQnlEcmFnKTsgfQogICAgIGJvb2wg
Y2hpbGRyZW5BZmZlY3RlZEJ5Rmlyc3RDaGlsZFJ1bGVzKCkgY29uc3QgeyByZXR1cm4gZ2V0Rmxh
ZyhDaGlsZHJlbkFmZmVjdGVkQnlGaXJzdENoaWxkUnVsZXNGbGFnKTsgfQogICAgIGJvb2wgY2hp
bGRyZW5BZmZlY3RlZEJ5TGFzdENoaWxkUnVsZXMoKSBjb25zdCB7IHJldHVybiBnZXRGbGFnKENo
aWxkcmVuQWZmZWN0ZWRCeUxhc3RDaGlsZFJ1bGVzRmxhZyk7IH0KLSAgICBib29sIGNoaWxkcmVu
QWZmZWN0ZWRCeUZvcndhcmRQb3NpdGlvbmFsUnVsZXMoKSBjb25zdCB7IHJldHVybiBoYXNSYXJl
RGF0YSgpICYmIHJhcmVEYXRhQ2hpbGRyZW5BZmZlY3RlZEJ5Rm9yd2FyZFBvc2l0aW9uYWxSdWxl
cygpOyB9Ci0gICAgYm9vbCBkZXNjZW5kYW50c0FmZmVjdGVkQnlGb3J3YXJkUG9zaXRpb25hbFJ1
bGVzKCkgY29uc3QgeyByZXR1cm4gaGFzUmFyZURhdGEoKSAmJiByYXJlRGF0YURlc2NlbmRhbnRz
QWZmZWN0ZWRCeUZvcndhcmRQb3NpdGlvbmFsUnVsZXMoKTsgfQotICAgIGJvb2wgY2hpbGRyZW5B
ZmZlY3RlZEJ5QmFja3dhcmRQb3NpdGlvbmFsUnVsZXMoKSBjb25zdCB7IHJldHVybiBoYXNSYXJl
RGF0YSgpICYmIHJhcmVEYXRhQ2hpbGRyZW5BZmZlY3RlZEJ5QmFja3dhcmRQb3NpdGlvbmFsUnVs
ZXMoKTsgfQotICAgIGJvb2wgZGVzY2VuZGFudHNBZmZlY3RlZEJ5QmFja3dhcmRQb3NpdGlvbmFs
UnVsZXMoKSBjb25zdCB7IHJldHVybiBoYXNSYXJlRGF0YSgpICYmIHJhcmVEYXRhRGVzY2VuZGFu
dHNBZmZlY3RlZEJ5QmFja3dhcmRQb3NpdGlvbmFsUnVsZXMoKTsgfQotICAgIGJvb2wgY2hpbGRy
ZW5BZmZlY3RlZEJ5UHJvcGVydHlCYXNlZEJhY2t3YXJkUG9zaXRpb25hbFJ1bGVzKCkgY29uc3Qg
eyByZXR1cm4gaGFzUmFyZURhdGEoKSAmJiByYXJlRGF0YUNoaWxkcmVuQWZmZWN0ZWRCeVByb3Bl
cnR5QmFzZWRCYWNrd2FyZFBvc2l0aW9uYWxSdWxlcygpOyB9CisgICAgYm9vbCBjaGlsZHJlbkFm
ZmVjdGVkQnlGb3J3YXJkUG9zaXRpb25hbFJ1bGVzKCkgY29uc3QgeyByZXR1cm4gaGFzU3R5bGVG
bGFnKEVsZW1lbnRTdHlsZUZsYWc6OkNoaWxkcmVuQWZmZWN0ZWRCeUZvcndhcmRQb3NpdGlvbmFs
UnVsZXMpOyB9CisgICAgYm9vbCBkZXNjZW5kYW50c0FmZmVjdGVkQnlGb3J3YXJkUG9zaXRpb25h
bFJ1bGVzKCkgY29uc3QgeyByZXR1cm4gaGFzU3R5bGVGbGFnKEVsZW1lbnRTdHlsZUZsYWc6OkRl
c2NlbmRhbnRzQWZmZWN0ZWRCeUZvcndhcmRQb3NpdGlvbmFsUnVsZXMpOyB9CisgICAgYm9vbCBj
aGlsZHJlbkFmZmVjdGVkQnlCYWNrd2FyZFBvc2l0aW9uYWxSdWxlcygpIGNvbnN0IHsgcmV0dXJu
IGhhc1N0eWxlRmxhZyhFbGVtZW50U3R5bGVGbGFnOjpDaGlsZHJlbkFmZmVjdGVkQnlCYWNrd2Fy
ZFBvc2l0aW9uYWxSdWxlcyk7IH0KKyAgICBib29sIGRlc2NlbmRhbnRzQWZmZWN0ZWRCeUJhY2t3
YXJkUG9zaXRpb25hbFJ1bGVzKCkgY29uc3QgeyByZXR1cm4gaGFzU3R5bGVGbGFnKEVsZW1lbnRT
dHlsZUZsYWc6OkRlc2NlbmRhbnRzQWZmZWN0ZWRCeUJhY2t3YXJkUG9zaXRpb25hbFJ1bGVzKTsg
fQorICAgIGJvb2wgY2hpbGRyZW5BZmZlY3RlZEJ5UHJvcGVydHlCYXNlZEJhY2t3YXJkUG9zaXRp
b25hbFJ1bGVzKCkgY29uc3QgeyByZXR1cm4gaGFzU3R5bGVGbGFnKEVsZW1lbnRTdHlsZUZsYWc6
OkNoaWxkcmVuQWZmZWN0ZWRCeVByb3BlcnR5QmFzZWRCYWNrd2FyZFBvc2l0aW9uYWxSdWxlcyk7
IH0KICAgICBib29sIGFmZmVjdHNOZXh0U2libGluZ0VsZW1lbnRTdHlsZSgpIGNvbnN0IHsgcmV0
dXJuIGdldEZsYWcoQWZmZWN0c05leHRTaWJsaW5nRWxlbWVudFN0eWxlKTsgfQogICAgIHVuc2ln
bmVkIGNoaWxkSW5kZXgoKSBjb25zdCB7IHJldHVybiBoYXNSYXJlRGF0YSgpID8gcmFyZURhdGFD
aGlsZEluZGV4KCkgOiAwOyB9CiAKICAgICBib29sIGhhc0ZsYWdzU2V0RHVyaW5nU3R5bGluZ09m
Q2hpbGRyZW4oKSBjb25zdDsKIAotICAgIHZvaWQgc2V0U3R5bGVBZmZlY3RlZEJ5RW1wdHkoKTsK
LSAgICB2b2lkIHNldFN0eWxlQWZmZWN0ZWRCeUZvY3VzV2l0aGluKCk7Ci0gICAgdm9pZCBzZXRE
ZXNjZW5kYW50c0FmZmVjdGVkQnlQcmV2aW91c1NpYmxpbmcoKSBjb25zdCB7IHJldHVybiBzZXRG
bGFnKERlc2NlbmRhbnRzQWZmZWN0ZWRCeVByZXZpb3VzU2libGluZ0ZsYWcpOyB9CisgICAgdm9p
ZCBzZXRTdHlsZUFmZmVjdGVkQnlFbXB0eSgpIHsgc2V0U3R5bGVGbGFnKEVsZW1lbnRTdHlsZUZs
YWc6OlN0eWxlQWZmZWN0ZWRCeUVtcHR5KTsgfQorICAgIHZvaWQgc2V0U3R5bGVBZmZlY3RlZEJ5
Rm9jdXNXaXRoaW4oKSB7IHNldEZsYWcoU3R5bGVBZmZlY3RlZEJ5Rm9jdXNXaXRoaW5GbGFnKTsg
fQorICAgIHZvaWQgc2V0RGVzY2VuZGFudHNBZmZlY3RlZEJ5UHJldmlvdXNTaWJsaW5nKCkgeyBz
ZXRGbGFnKERlc2NlbmRhbnRzQWZmZWN0ZWRCeVByZXZpb3VzU2libGluZ0ZsYWcpOyB9CiAgICAg
dm9pZCBzZXRDaGlsZHJlbkFmZmVjdGVkQnlIb3ZlcigpIHsgc2V0RmxhZyhDaGlsZHJlbkFmZmVj
dGVkQnlIb3ZlclJ1bGVzRmxhZyk7IH0KLSAgICB2b2lkIHNldFN0eWxlQWZmZWN0ZWRCeUFjdGl2
ZSgpOwotICAgIHZvaWQgc2V0Q2hpbGRyZW5BZmZlY3RlZEJ5RHJhZygpOworICAgIHZvaWQgc2V0
U3R5bGVBZmZlY3RlZEJ5QWN0aXZlKCkgeyBzZXRTdHlsZUZsYWcoRWxlbWVudFN0eWxlRmxhZzo6
U3R5bGVBZmZlY3RlZEJ5QWN0aXZlKTsgfQorICAgIHZvaWQgc2V0Q2hpbGRyZW5BZmZlY3RlZEJ5
RHJhZygpIHsgc2V0U3R5bGVGbGFnKEVsZW1lbnRTdHlsZUZsYWc6OkNoaWxkcmVuQWZmZWN0ZWRC
eURyYWcpOyB9CiAgICAgdm9pZCBzZXRDaGlsZHJlbkFmZmVjdGVkQnlGaXJzdENoaWxkUnVsZXMo
KSB7IHNldEZsYWcoQ2hpbGRyZW5BZmZlY3RlZEJ5Rmlyc3RDaGlsZFJ1bGVzRmxhZyk7IH0KICAg
ICB2b2lkIHNldENoaWxkcmVuQWZmZWN0ZWRCeUxhc3RDaGlsZFJ1bGVzKCkgeyBzZXRGbGFnKENo
aWxkcmVuQWZmZWN0ZWRCeUxhc3RDaGlsZFJ1bGVzRmxhZyk7IH0KLSAgICB2b2lkIHNldENoaWxk
cmVuQWZmZWN0ZWRCeUZvcndhcmRQb3NpdGlvbmFsUnVsZXMoKTsKLSAgICB2b2lkIHNldERlc2Nl
bmRhbnRzQWZmZWN0ZWRCeUZvcndhcmRQb3NpdGlvbmFsUnVsZXMoKTsKLSAgICB2b2lkIHNldENo
aWxkcmVuQWZmZWN0ZWRCeUJhY2t3YXJkUG9zaXRpb25hbFJ1bGVzKCk7Ci0gICAgdm9pZCBzZXRE
ZXNjZW5kYW50c0FmZmVjdGVkQnlCYWNrd2FyZFBvc2l0aW9uYWxSdWxlcygpOwotICAgIHZvaWQg
c2V0Q2hpbGRyZW5BZmZlY3RlZEJ5UHJvcGVydHlCYXNlZEJhY2t3YXJkUG9zaXRpb25hbFJ1bGVz
KCk7CisgICAgdm9pZCBzZXRDaGlsZHJlbkFmZmVjdGVkQnlGb3J3YXJkUG9zaXRpb25hbFJ1bGVz
KCkgeyBzZXRTdHlsZUZsYWcoRWxlbWVudFN0eWxlRmxhZzo6Q2hpbGRyZW5BZmZlY3RlZEJ5Rm9y
d2FyZFBvc2l0aW9uYWxSdWxlcyk7IH0KKyAgICB2b2lkIHNldERlc2NlbmRhbnRzQWZmZWN0ZWRC
eUZvcndhcmRQb3NpdGlvbmFsUnVsZXMoKSB7IHNldFN0eWxlRmxhZyhFbGVtZW50U3R5bGVGbGFn
OjpEZXNjZW5kYW50c0FmZmVjdGVkQnlGb3J3YXJkUG9zaXRpb25hbFJ1bGVzKTsgfQorICAgIHZv
aWQgc2V0Q2hpbGRyZW5BZmZlY3RlZEJ5QmFja3dhcmRQb3NpdGlvbmFsUnVsZXMoKSB7IHNldFN0
eWxlRmxhZyhFbGVtZW50U3R5bGVGbGFnOjpDaGlsZHJlbkFmZmVjdGVkQnlCYWNrd2FyZFBvc2l0
aW9uYWxSdWxlcyk7IH0KKyAgICB2b2lkIHNldERlc2NlbmRhbnRzQWZmZWN0ZWRCeUJhY2t3YXJk
UG9zaXRpb25hbFJ1bGVzKCkgeyBzZXRTdHlsZUZsYWcoRWxlbWVudFN0eWxlRmxhZzo6RGVzY2Vu
ZGFudHNBZmZlY3RlZEJ5QmFja3dhcmRQb3NpdGlvbmFsUnVsZXMpOyB9CisgICAgdm9pZCBzZXRD
aGlsZHJlbkFmZmVjdGVkQnlQcm9wZXJ0eUJhc2VkQmFja3dhcmRQb3NpdGlvbmFsUnVsZXMoKSB7
IHNldFN0eWxlRmxhZyhFbGVtZW50U3R5bGVGbGFnOjpDaGlsZHJlbkFmZmVjdGVkQnlQcm9wZXJ0
eUJhc2VkQmFja3dhcmRQb3NpdGlvbmFsUnVsZXMpOyB9CiAgICAgdm9pZCBzZXRBZmZlY3RzTmV4
dFNpYmxpbmdFbGVtZW50U3R5bGUoKSB7IHNldEZsYWcoQWZmZWN0c05leHRTaWJsaW5nRWxlbWVu
dFN0eWxlKTsgfQogICAgIHZvaWQgc2V0U3R5bGVJc0FmZmVjdGVkQnlQcmV2aW91c1NpYmxpbmco
KSB7IHNldEZsYWcoU3R5bGVJc0FmZmVjdGVkQnlQcmV2aW91c1NpYmxpbmcpOyB9CiAgICAgdm9p
ZCBzZXRDaGlsZEluZGV4KHVuc2lnbmVkKTsKQEAgLTcwMCwxNyArNzAwLDYgQEAKICAgICBjb25z
dCBSZW5kZXJTdHlsZSYgcmVzb2x2ZUNvbXB1dGVkU3R5bGUoKTsKICAgICBjb25zdCBSZW5kZXJT
dHlsZSYgcmVzb2x2ZVBzZXVkb0VsZW1lbnRTdHlsZShQc2V1ZG9JZCk7CiAKLSAgICBib29sIHJh
cmVEYXRhU3R5bGVBZmZlY3RlZEJ5RW1wdHkoKSBjb25zdDsKLSAgICBib29sIHJhcmVEYXRhU3R5
bGVBZmZlY3RlZEJ5Rm9jdXNXaXRoaW4oKSBjb25zdDsKLSAgICBib29sIHJhcmVEYXRhQ2hpbGRy
ZW5BZmZlY3RlZEJ5SG92ZXIoKSBjb25zdDsKLSAgICBib29sIHJhcmVEYXRhU3R5bGVBZmZlY3Rl
ZEJ5QWN0aXZlKCkgY29uc3Q7Ci0gICAgYm9vbCByYXJlRGF0YUNoaWxkcmVuQWZmZWN0ZWRCeURy
YWcoKSBjb25zdDsKLSAgICBib29sIHJhcmVEYXRhQ2hpbGRyZW5BZmZlY3RlZEJ5TGFzdENoaWxk
UnVsZXMoKSBjb25zdDsKLSAgICBib29sIHJhcmVEYXRhQ2hpbGRyZW5BZmZlY3RlZEJ5Rm9yd2Fy
ZFBvc2l0aW9uYWxSdWxlcygpIGNvbnN0OwotICAgIGJvb2wgcmFyZURhdGFEZXNjZW5kYW50c0Fm
ZmVjdGVkQnlGb3J3YXJkUG9zaXRpb25hbFJ1bGVzKCkgY29uc3Q7Ci0gICAgYm9vbCByYXJlRGF0
YUNoaWxkcmVuQWZmZWN0ZWRCeUJhY2t3YXJkUG9zaXRpb25hbFJ1bGVzKCkgY29uc3Q7Ci0gICAg
Ym9vbCByYXJlRGF0YURlc2NlbmRhbnRzQWZmZWN0ZWRCeUJhY2t3YXJkUG9zaXRpb25hbFJ1bGVz
KCkgY29uc3Q7Ci0gICAgYm9vbCByYXJlRGF0YUNoaWxkcmVuQWZmZWN0ZWRCeVByb3BlcnR5QmFz
ZWRCYWNrd2FyZFBvc2l0aW9uYWxSdWxlcygpIGNvbnN0OwogICAgIHVuc2lnbmVkIHJhcmVEYXRh
Q2hpbGRJbmRleCgpIGNvbnN0OwogCiAgICAgU3BlbGxjaGVja0F0dHJpYnV0ZVN0YXRlIHNwZWxs
Y2hlY2tBdHRyaWJ1dGVTdGF0ZSgpIGNvbnN0OwpJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL0Vs
ZW1lbnRSYXJlRGF0YS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50
UmFyZURhdGEuaAkocmV2aXNpb24gMjQ4NDYyKQorKysgU291cmNlL1dlYkNvcmUvZG9tL0VsZW1l
bnRSYXJlRGF0YS5oCSh3b3JraW5nIGNvcHkpCkBAIC00Miw3ICs0Miw3IEBACiAKIGNsYXNzIEVs
ZW1lbnRSYXJlRGF0YSA6IHB1YmxpYyBOb2RlUmFyZURhdGEgewogcHVibGljOgotICAgIGV4cGxp
Y2l0IEVsZW1lbnRSYXJlRGF0YShSZW5kZXJFbGVtZW50Kik7CisgICAgZXhwbGljaXQgRWxlbWVu
dFJhcmVEYXRhKCk7CiAgICAgfkVsZW1lbnRSYXJlRGF0YSgpOwogCiAgICAgdm9pZCBzZXRCZWZv
cmVQc2V1ZG9FbGVtZW50KFJlZlB0cjxQc2V1ZG9FbGVtZW50PiYmKTsKQEAgLTU5LDM2ICs1OSwx
MSBAQAogICAgIGJvb2wgdGFiSW5kZXhTZXRFeHBsaWNpdGx5KCkgY29uc3QgeyByZXR1cm4gbV90
YWJJbmRleFdhc1NldEV4cGxpY2l0bHk7IH0KICAgICB2b2lkIGNsZWFyVGFiSW5kZXhFeHBsaWNp
dGx5KCkgeyBtX3RhYkluZGV4ID0gMDsgbV90YWJJbmRleFdhc1NldEV4cGxpY2l0bHkgPSBmYWxz
ZTsgfQogCi0gICAgYm9vbCBzdHlsZUFmZmVjdGVkQnlBY3RpdmUoKSBjb25zdCB7IHJldHVybiBt
X3N0eWxlQWZmZWN0ZWRCeUFjdGl2ZTsgfQotICAgIHZvaWQgc2V0U3R5bGVBZmZlY3RlZEJ5QWN0
aXZlKGJvb2wgdmFsdWUpIHsgbV9zdHlsZUFmZmVjdGVkQnlBY3RpdmUgPSB2YWx1ZTsgfQotCi0g
ICAgYm9vbCBzdHlsZUFmZmVjdGVkQnlFbXB0eSgpIGNvbnN0IHsgcmV0dXJuIG1fc3R5bGVBZmZl
Y3RlZEJ5RW1wdHk7IH0KLSAgICB2b2lkIHNldFN0eWxlQWZmZWN0ZWRCeUVtcHR5KGJvb2wgdmFs
dWUpIHsgbV9zdHlsZUFmZmVjdGVkQnlFbXB0eSA9IHZhbHVlOyB9Ci0KLSAgICBib29sIHN0eWxl
QWZmZWN0ZWRCeUZvY3VzV2l0aGluKCkgY29uc3QgeyByZXR1cm4gbV9zdHlsZUFmZmVjdGVkQnlG
b2N1c1dpdGhpbjsgfQotICAgIHZvaWQgc2V0U3R5bGVBZmZlY3RlZEJ5Rm9jdXNXaXRoaW4oYm9v
bCB2YWx1ZSkgeyBtX3N0eWxlQWZmZWN0ZWRCeUZvY3VzV2l0aGluID0gdmFsdWU7IH0KLQogI2lm
IEVOQUJMRShGVUxMU0NSRUVOX0FQSSkKICAgICBib29sIGNvbnRhaW5zRnVsbFNjcmVlbkVsZW1l
bnQoKSB7IHJldHVybiBtX2NvbnRhaW5zRnVsbFNjcmVlbkVsZW1lbnQ7IH0KICAgICB2b2lkIHNl
dENvbnRhaW5zRnVsbFNjcmVlbkVsZW1lbnQoYm9vbCB2YWx1ZSkgeyBtX2NvbnRhaW5zRnVsbFNj
cmVlbkVsZW1lbnQgPSB2YWx1ZTsgfQogI2VuZGlmCiAKLSAgICBib29sIGNoaWxkcmVuQWZmZWN0
ZWRCeURyYWcoKSBjb25zdCB7IHJldHVybiBtX2NoaWxkcmVuQWZmZWN0ZWRCeURyYWc7IH0KLSAg
ICB2b2lkIHNldENoaWxkcmVuQWZmZWN0ZWRCeURyYWcoYm9vbCB2YWx1ZSkgeyBtX2NoaWxkcmVu
QWZmZWN0ZWRCeURyYWcgPSB2YWx1ZTsgfQotCi0gICAgYm9vbCBjaGlsZHJlbkFmZmVjdGVkQnlM
YXN0Q2hpbGRSdWxlcygpIGNvbnN0IHsgcmV0dXJuIG1fY2hpbGRyZW5BZmZlY3RlZEJ5TGFzdENo
aWxkUnVsZXM7IH0KLSAgICB2b2lkIHNldENoaWxkcmVuQWZmZWN0ZWRCeUxhc3RDaGlsZFJ1bGVz
KGJvb2wgdmFsdWUpIHsgbV9jaGlsZHJlbkFmZmVjdGVkQnlMYXN0Q2hpbGRSdWxlcyA9IHZhbHVl
OyB9Ci0gICAgYm9vbCBjaGlsZHJlbkFmZmVjdGVkQnlGb3J3YXJkUG9zaXRpb25hbFJ1bGVzKCkg
Y29uc3QgeyByZXR1cm4gbV9jaGlsZHJlbkFmZmVjdGVkQnlGb3J3YXJkUG9zaXRpb25hbFJ1bGVz
OyB9Ci0gICAgdm9pZCBzZXRDaGlsZHJlbkFmZmVjdGVkQnlGb3J3YXJkUG9zaXRpb25hbFJ1bGVz
KGJvb2wgdmFsdWUpIHsgbV9jaGlsZHJlbkFmZmVjdGVkQnlGb3J3YXJkUG9zaXRpb25hbFJ1bGVz
ID0gdmFsdWU7IH0KLSAgICBib29sIGRlc2NlbmRhbnRzQWZmZWN0ZWRCeUZvcndhcmRQb3NpdGlv
bmFsUnVsZXMoKSBjb25zdCB7IHJldHVybiBtX2Rlc2NlbmRhbnRzQWZmZWN0ZWRCeUZvcndhcmRQ
b3NpdGlvbmFsUnVsZXM7IH0KLSAgICB2b2lkIHNldERlc2NlbmRhbnRzQWZmZWN0ZWRCeUZvcndh
cmRQb3NpdGlvbmFsUnVsZXMoYm9vbCB2YWx1ZSkgeyBtX2Rlc2NlbmRhbnRzQWZmZWN0ZWRCeUZv
cndhcmRQb3NpdGlvbmFsUnVsZXMgPSB2YWx1ZTsgfQotICAgIGJvb2wgY2hpbGRyZW5BZmZlY3Rl
ZEJ5QmFja3dhcmRQb3NpdGlvbmFsUnVsZXMoKSBjb25zdCB7IHJldHVybiBtX2NoaWxkcmVuQWZm
ZWN0ZWRCeUJhY2t3YXJkUG9zaXRpb25hbFJ1bGVzOyB9Ci0gICAgdm9pZCBzZXRDaGlsZHJlbkFm
ZmVjdGVkQnlCYWNrd2FyZFBvc2l0aW9uYWxSdWxlcyhib29sIHZhbHVlKSB7IG1fY2hpbGRyZW5B
ZmZlY3RlZEJ5QmFja3dhcmRQb3NpdGlvbmFsUnVsZXMgPSB2YWx1ZTsgfQotICAgIGJvb2wgZGVz
Y2VuZGFudHNBZmZlY3RlZEJ5QmFja3dhcmRQb3NpdGlvbmFsUnVsZXMoKSBjb25zdCB7IHJldHVy
biBtX2Rlc2NlbmRhbnRzQWZmZWN0ZWRCeUJhY2t3YXJkUG9zaXRpb25hbFJ1bGVzOyB9Ci0gICAg
dm9pZCBzZXREZXNjZW5kYW50c0FmZmVjdGVkQnlCYWNrd2FyZFBvc2l0aW9uYWxSdWxlcyhib29s
IHZhbHVlKSB7IG1fZGVzY2VuZGFudHNBZmZlY3RlZEJ5QmFja3dhcmRQb3NpdGlvbmFsUnVsZXMg
PSB2YWx1ZTsgfQotICAgIGJvb2wgY2hpbGRyZW5BZmZlY3RlZEJ5UHJvcGVydHlCYXNlZEJhY2t3
YXJkUG9zaXRpb25hbFJ1bGVzKCkgY29uc3QgeyByZXR1cm4gbV9jaGlsZHJlbkFmZmVjdGVkQnlQ
cm9wZXJ0eUJhc2VkQmFja3dhcmRQb3NpdGlvbmFsUnVsZXM7IH0KLSAgICB2b2lkIHNldENoaWxk
cmVuQWZmZWN0ZWRCeVByb3BlcnR5QmFzZWRCYWNrd2FyZFBvc2l0aW9uYWxSdWxlcyhib29sIHZh
bHVlKSB7IG1fY2hpbGRyZW5BZmZlY3RlZEJ5UHJvcGVydHlCYXNlZEJhY2t3YXJkUG9zaXRpb25h
bFJ1bGVzID0gdmFsdWU7IH0KLQogICAgIHVuc2lnbmVkIGNoaWxkSW5kZXgoKSBjb25zdCB7IHJl
dHVybiBtX2NoaWxkSW5kZXg7IH0KICAgICB2b2lkIHNldENoaWxkSW5kZXgodW5zaWduZWQgaW5k
ZXgpIHsgbV9jaGlsZEluZGV4ID0gaW5kZXg7IH0KICAgICBzdGF0aWMgcHRyZGlmZl90IGNoaWxk
SW5kZXhNZW1vcnlPZmZzZXQoKSB7IHJldHVybiBPQkpFQ1RfT0ZGU0VUT0YoRWxlbWVudFJhcmVE
YXRhLCBtX2NoaWxkSW5kZXgpOyB9CkBAIC0xNDgsMTEgKzEyMyw2IEBACiAgICAgICAgIGF1dG8g
cmVzdWx0ID0gTm9kZVJhcmVEYXRhOjp1c2VUeXBlcygpOwogICAgICAgICBpZiAobV90YWJJbmRl
eFdhc1NldEV4cGxpY2l0bHkpCiAgICAgICAgICAgICByZXN1bHQuYWRkKFVzZVR5cGU6OlRhYklu
ZGV4KTsKLSAgICAgICAgaWYgKG1fc3R5bGVBZmZlY3RlZEJ5QWN0aXZlIHx8IG1fc3R5bGVBZmZl
Y3RlZEJ5RW1wdHkgfHwgbV9zdHlsZUFmZmVjdGVkQnlGb2N1c1dpdGhpbiB8fCBtX2NoaWxkcmVu
QWZmZWN0ZWRCeUhvdmVyCi0gICAgICAgICAgICB8fCBtX2NoaWxkcmVuQWZmZWN0ZWRCeURyYWcg
fHwgbV9jaGlsZHJlbkFmZmVjdGVkQnlMYXN0Q2hpbGRSdWxlcyB8fCBtX2NoaWxkcmVuQWZmZWN0
ZWRCeUZvcndhcmRQb3NpdGlvbmFsUnVsZXMKLSAgICAgICAgICAgIHx8IG1fZGVzY2VuZGFudHNB
ZmZlY3RlZEJ5Rm9yd2FyZFBvc2l0aW9uYWxSdWxlcyB8fCBtX2NoaWxkcmVuQWZmZWN0ZWRCeUJh
Y2t3YXJkUG9zaXRpb25hbFJ1bGVzCi0gICAgICAgICAgICB8fCBtX2Rlc2NlbmRhbnRzQWZmZWN0
ZWRCeUJhY2t3YXJkUG9zaXRpb25hbFJ1bGVzIHx8IG1fY2hpbGRyZW5BZmZlY3RlZEJ5UHJvcGVy
dHlCYXNlZEJhY2t3YXJkUG9zaXRpb25hbFJ1bGVzKQotICAgICAgICAgICAgcmVzdWx0LmFkZChV
c2VUeXBlOjpTdHlsZUZsYWdzKTsKICAgICAgICAgaWYgKG1fbWluaW11bVNpemVGb3JSZXNpemlu
ZyAhPSBkZWZhdWx0TWluaW11bVNpemVGb3JSZXNpemluZygpKQogICAgICAgICAgICAgcmVzdWx0
LmFkZChVc2VUeXBlOjpNaW5pbXVtU2l6ZSk7CiAgICAgICAgIGlmICghbV9zYXZlZExheWVyU2Ny
b2xsUG9zaXRpb24uaXNaZXJvKCkpCkBAIC0xODUsOSArMTU1LDYgQEAKICAgICBpbnQgbV90YWJJ
bmRleDsKICAgICB1bnNpZ25lZCBzaG9ydCBtX2NoaWxkSW5kZXg7CiAgICAgdW5zaWduZWQgbV90
YWJJbmRleFdhc1NldEV4cGxpY2l0bHkgOiAxOwotICAgIHVuc2lnbmVkIG1fc3R5bGVBZmZlY3Rl
ZEJ5QWN0aXZlIDogMTsKLSAgICB1bnNpZ25lZCBtX3N0eWxlQWZmZWN0ZWRCeUVtcHR5IDogMTsK
LSAgICB1bnNpZ25lZCBtX3N0eWxlQWZmZWN0ZWRCeUZvY3VzV2l0aGluIDogMTsKICNpZiBFTkFC
TEUoRlVMTFNDUkVFTl9BUEkpCiAgICAgdW5zaWduZWQgbV9jb250YWluc0Z1bGxTY3JlZW5FbGVt
ZW50IDogMTsKICNlbmRpZgpAQCAtMTk0LDE3ICsxNjEsNiBAQAogICAgIHVuc2lnbmVkIG1faGFz
UGVuZGluZ1Jlc291cmNlcyA6IDE7CiAgICAgdW5zaWduZWQgbV9oYXNDU1NBbmltYXRpb24gOiAx
OwogICAgIHVuc2lnbmVkIG1faGFzRWxlbWVudElkZW50aWZpZXIgOiAxOwotICAgIHVuc2lnbmVk
IG1fY2hpbGRyZW5BZmZlY3RlZEJ5SG92ZXIgOiAxOwotICAgIHVuc2lnbmVkIG1fY2hpbGRyZW5B
ZmZlY3RlZEJ5RHJhZyA6IDE7Ci0gICAgLy8gQml0cyBmb3IgZHluYW1pYyBjaGlsZCBtYXRjaGlu
Zy4KLSAgICAvLyBXZSBvcHRpbWl6ZSBmb3IgOmZpcnN0LWNoaWxkIGFuZCA6bGFzdC1jaGlsZC4g
VGhlIG90aGVyIHBvc2l0aW9uYWwgY2hpbGQgc2VsZWN0b3JzIGxpa2UgbnRoLWNoaWxkIG9yCi0g
ICAgLy8gKi1jaGlsZC1vZi10eXBlLCB3ZSB3aWxsIGp1c3QgZ2l2ZSB1cCBhbmQgcmUtZXZhbHVh
dGUgd2hlbmV2ZXIgY2hpbGRyZW4gY2hhbmdlIGF0IGFsbC4KLSAgICB1bnNpZ25lZCBtX2NoaWxk
cmVuQWZmZWN0ZWRCeUxhc3RDaGlsZFJ1bGVzIDogMTsKLSAgICB1bnNpZ25lZCBtX2NoaWxkcmVu
QWZmZWN0ZWRCeUZvcndhcmRQb3NpdGlvbmFsUnVsZXMgOiAxOwotICAgIHVuc2lnbmVkIG1fZGVz
Y2VuZGFudHNBZmZlY3RlZEJ5Rm9yd2FyZFBvc2l0aW9uYWxSdWxlcyA6IDE7Ci0gICAgdW5zaWdu
ZWQgbV9jaGlsZHJlbkFmZmVjdGVkQnlCYWNrd2FyZFBvc2l0aW9uYWxSdWxlcyA6IDE7Ci0gICAg
dW5zaWduZWQgbV9kZXNjZW5kYW50c0FmZmVjdGVkQnlCYWNrd2FyZFBvc2l0aW9uYWxSdWxlcyA6
IDE7Ci0gICAgdW5zaWduZWQgbV9jaGlsZHJlbkFmZmVjdGVkQnlQcm9wZXJ0eUJhc2VkQmFja3dh
cmRQb3NpdGlvbmFsUnVsZXMgOiAxOwogCiAgICAgTGF5b3V0U2l6ZSBtX21pbmltdW1TaXplRm9y
UmVzaXppbmc7CiAgICAgSW50UG9pbnQgbV9zYXZlZExheWVyU2Nyb2xsUG9zaXRpb247CkBAIC0y
MzMsMTQgKzE4OSwxMCBAQAogICAgIHZvaWQgcmVsZWFzZVBzZXVkb0VsZW1lbnQoUHNldWRvRWxl
bWVudCopOwogfTsKIAotaW5saW5lIEVsZW1lbnRSYXJlRGF0YTo6RWxlbWVudFJhcmVEYXRhKFJl
bmRlckVsZW1lbnQqIHJlbmRlcmVyKQotICAgIDogTm9kZVJhcmVEYXRhKHJlbmRlcmVyKQotICAg
ICwgbV90YWJJbmRleCgwKQoraW5saW5lIEVsZW1lbnRSYXJlRGF0YTo6RWxlbWVudFJhcmVEYXRh
KCkKKyAgICA6IG1fdGFiSW5kZXgoMCkKICAgICAsIG1fY2hpbGRJbmRleCgwKQogICAgICwgbV90
YWJJbmRleFdhc1NldEV4cGxpY2l0bHkoZmFsc2UpCi0gICAgLCBtX3N0eWxlQWZmZWN0ZWRCeUFj
dGl2ZShmYWxzZSkKLSAgICAsIG1fc3R5bGVBZmZlY3RlZEJ5RW1wdHkoZmFsc2UpCi0gICAgLCBt
X3N0eWxlQWZmZWN0ZWRCeUZvY3VzV2l0aGluKGZhbHNlKQogI2lmIEVOQUJMRShGVUxMU0NSRUVO
X0FQSSkKICAgICAsIG1fY29udGFpbnNGdWxsU2NyZWVuRWxlbWVudChmYWxzZSkKICNlbmRpZgpA
QCAtMjQ3LDE0ICsxOTksNiBAQAogICAgICwgbV9oYXNQZW5kaW5nUmVzb3VyY2VzKGZhbHNlKQog
ICAgICwgbV9oYXNDU1NBbmltYXRpb24oZmFsc2UpCiAgICAgLCBtX2hhc0VsZW1lbnRJZGVudGlm
aWVyKGZhbHNlKQotICAgICwgbV9jaGlsZHJlbkFmZmVjdGVkQnlIb3ZlcihmYWxzZSkKLSAgICAs
IG1fY2hpbGRyZW5BZmZlY3RlZEJ5RHJhZyhmYWxzZSkKLSAgICAsIG1fY2hpbGRyZW5BZmZlY3Rl
ZEJ5TGFzdENoaWxkUnVsZXMoZmFsc2UpCi0gICAgLCBtX2NoaWxkcmVuQWZmZWN0ZWRCeUZvcndh
cmRQb3NpdGlvbmFsUnVsZXMoZmFsc2UpCi0gICAgLCBtX2Rlc2NlbmRhbnRzQWZmZWN0ZWRCeUZv
cndhcmRQb3NpdGlvbmFsUnVsZXMoZmFsc2UpCi0gICAgLCBtX2NoaWxkcmVuQWZmZWN0ZWRCeUJh
Y2t3YXJkUG9zaXRpb25hbFJ1bGVzKGZhbHNlKQotICAgICwgbV9kZXNjZW5kYW50c0FmZmVjdGVk
QnlCYWNrd2FyZFBvc2l0aW9uYWxSdWxlcyhmYWxzZSkKLSAgICAsIG1fY2hpbGRyZW5BZmZlY3Rl
ZEJ5UHJvcGVydHlCYXNlZEJhY2t3YXJkUG9zaXRpb25hbFJ1bGVzKGZhbHNlKQogICAgICwgbV9t
aW5pbXVtU2l6ZUZvclJlc2l6aW5nKGRlZmF1bHRNaW5pbXVtU2l6ZUZvclJlc2l6aW5nKCkpCiB7
CiB9CkBAIC0yODUsMTcgKzIyOSw3IEBACiAKIGlubGluZSB2b2lkIEVsZW1lbnRSYXJlRGF0YTo6
cmVzZXRTdHlsZVJlbGF0aW9ucygpCiB7Ci0gICAgc2V0U3R5bGVBZmZlY3RlZEJ5RW1wdHkoZmFs
c2UpOwotICAgIHNldFN0eWxlQWZmZWN0ZWRCeUZvY3VzV2l0aGluKGZhbHNlKTsKICAgICBzZXRD
aGlsZEluZGV4KDApOwotICAgIHNldFN0eWxlQWZmZWN0ZWRCeUFjdGl2ZShmYWxzZSk7Ci0gICAg
c2V0Q2hpbGRyZW5BZmZlY3RlZEJ5RHJhZyhmYWxzZSk7Ci0gICAgc2V0Q2hpbGRyZW5BZmZlY3Rl
ZEJ5TGFzdENoaWxkUnVsZXMoZmFsc2UpOwotICAgIHNldENoaWxkcmVuQWZmZWN0ZWRCeUZvcndh
cmRQb3NpdGlvbmFsUnVsZXMoZmFsc2UpOwotICAgIHNldERlc2NlbmRhbnRzQWZmZWN0ZWRCeUZv
cndhcmRQb3NpdGlvbmFsUnVsZXMoZmFsc2UpOwotICAgIHNldENoaWxkcmVuQWZmZWN0ZWRCeUJh
Y2t3YXJkUG9zaXRpb25hbFJ1bGVzKGZhbHNlKTsKLSAgICBzZXREZXNjZW5kYW50c0FmZmVjdGVk
QnlCYWNrd2FyZFBvc2l0aW9uYWxSdWxlcyhmYWxzZSk7Ci0gICAgc2V0Q2hpbGRyZW5BZmZlY3Rl
ZEJ5UHJvcGVydHlCYXNlZEJhY2t3YXJkUG9zaXRpb25hbFJ1bGVzKGZhbHNlKTsKIH0KIAogfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL05vZGUuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmNwcAkocmV2aXNpb24gMjQ4NDYy
KQorKysgU291cmNlL1dlYkNvcmUvZG9tL05vZGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMDgs
OCArMTA4LDYgQEAKICAgICAgICAgcmV0dXJuICJNdXRhdGlvbk9ic2VydmVyIjsKICAgICBjYXNl
IE5vZGVSYXJlRGF0YTo6VXNlVHlwZTo6VGFiSW5kZXg6CiAgICAgICAgIHJldHVybiAiVGFiSW5k
ZXgiOwotICAgIGNhc2UgTm9kZVJhcmVEYXRhOjpVc2VUeXBlOjpTdHlsZUZsYWdzOgotICAgICAg
ICByZXR1cm4gIlN0eWxlRmxhZ3MiOwogICAgIGNhc2UgTm9kZVJhcmVEYXRhOjpVc2VUeXBlOjpN
aW5pbXVtU2l6ZToKICAgICAgICAgcmV0dXJuICJNaW5pbXVtU2l6ZSI7CiAgICAgY2FzZSBOb2Rl
UmFyZURhdGE6OlVzZVR5cGU6OlNjcm9sbGluZ1Bvc2l0aW9uOgpAQCAtMzk2LDE1ICszOTQsMTAg
QEAKIAogdm9pZCBOb2RlOjptYXRlcmlhbGl6ZVJhcmVEYXRhKCkKIHsKLSAgICBOb2RlUmFyZURh
dGEqIGRhdGE7CiAgICAgaWYgKGlzPEVsZW1lbnQ+KCp0aGlzKSkKLSAgICAgICAgZGF0YSA9IHN0
ZDo6bWFrZV91bmlxdWU8RWxlbWVudFJhcmVEYXRhPihkb3duY2FzdDxSZW5kZXJFbGVtZW50Piht
X2RhdGEubV9yZW5kZXJlcikpLnJlbGVhc2UoKTsKKyAgICAgICAgbV9yYXJlRGF0YSA9IHN0ZDo6
bWFrZV91bmlxdWU8RWxlbWVudFJhcmVEYXRhPigpOwogICAgIGVsc2UKLSAgICAgICAgZGF0YSA9
IHN0ZDo6bWFrZV91bmlxdWU8Tm9kZVJhcmVEYXRhPihtX2RhdGEubV9yZW5kZXJlcikucmVsZWFz
ZSgpOwotICAgIEFTU0VSVChkYXRhKTsKLQotICAgIG1fZGF0YS5tX3JhcmVEYXRhID0gZGF0YTsK
LSAgICBzZXRGbGFnKEhhc1JhcmVEYXRhRmxhZyk7CisgICAgICAgIG1fcmFyZURhdGEgPSBzdGQ6
Om1ha2VfdW5pcXVlPE5vZGVSYXJlRGF0YT4oKTsKIH0KIAogdm9pZCBOb2RlOjpjbGVhclJhcmVE
YXRhKCkKQEAgLTQxMiwxMyArNDA1LDcgQEAKICAgICBBU1NFUlQoaGFzUmFyZURhdGEoKSk7CiAg
ICAgQVNTRVJUKCF0cmFuc2llbnRNdXRhdGlvbk9ic2VydmVyUmVnaXN0cnkoKSB8fCB0cmFuc2ll
bnRNdXRhdGlvbk9ic2VydmVyUmVnaXN0cnkoKS0+aXNFbXB0eSgpKTsKIAotICAgIFJlbmRlck9i
amVjdCogcmVuZGVyZXIgPSBtX2RhdGEubV9yYXJlRGF0YS0+cmVuZGVyZXIoKTsKLSAgICBpZiAo
aXNFbGVtZW50Tm9kZSgpKQotICAgICAgICBkZWxldGUgc3RhdGljX2Nhc3Q8RWxlbWVudFJhcmVE
YXRhKj4obV9kYXRhLm1fcmFyZURhdGEpOwotICAgIGVsc2UKLSAgICAgICAgZGVsZXRlIHN0YXRp
Y19jYXN0PE5vZGVSYXJlRGF0YSo+KG1fZGF0YS5tX3JhcmVEYXRhKTsKLSAgICBtX2RhdGEubV9y
ZW5kZXJlciA9IHJlbmRlcmVyOwotICAgIGNsZWFyRmxhZyhIYXNSYXJlRGF0YUZsYWcpOworICAg
IG1fcmFyZURhdGEgPSBudWxscHRyOwogfQogCiBib29sIE5vZGU6OmlzTm9kZSgpIGNvbnN0Cklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL2RvbS9Ob2RlLmgJKHJldmlzaW9uIDI0ODQ2MikKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9O
b2RlLmgJKHdvcmtpbmcgY29weSkKQEAgLTMxLDYgKzMxLDcgQEAKICNpbmNsdWRlICJSZW5kZXJT
dHlsZUNvbnN0YW50cy5oIgogI2luY2x1ZGUgIlN0eWxlVmFsaWRpdHkuaCIKICNpbmNsdWRlICJU
cmVlU2NvcGUuaCIKKyNpbmNsdWRlIDx3dGYvQ29tcGFjdFBvaW50ZXJUdXBsZS5oPgogI2luY2x1
ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAjaW5jbHVkZSA8d3RmL0lzb01hbGxvYy5oPgogI2luY2x1ZGUg
PHd0Zi9MaXN0SGFzaFNldC5oPgpAQCAtNjQsMjAgKzY1LDYgQEAKIAogdXNpbmcgTm9kZU9yU3Ry
aW5nID0gVmFyaWFudDxSZWZQdHI8Tm9kZT4sIFN0cmluZz47CiAKLWNsYXNzIE5vZGVSYXJlRGF0
YUJhc2UgewotcHVibGljOgotICAgIFJlbmRlck9iamVjdCogcmVuZGVyZXIoKSBjb25zdCB7IHJl
dHVybiBtX3JlbmRlcmVyOyB9Ci0gICAgdm9pZCBzZXRSZW5kZXJlcihSZW5kZXJPYmplY3QqIHJl
bmRlcmVyKSB7IG1fcmVuZGVyZXIgPSByZW5kZXJlcjsgfQotCi1wcm90ZWN0ZWQ6Ci0gICAgTm9k
ZVJhcmVEYXRhQmFzZShSZW5kZXJPYmplY3QqIHJlbmRlcmVyKQotICAgICAgICA6IG1fcmVuZGVy
ZXIocmVuZGVyZXIpCi0gICAgeyB9Ci0KLXByaXZhdGU6Ci0gICAgUmVuZGVyT2JqZWN0KiBtX3Jl
bmRlcmVyOwotfTsKLQogY2xhc3MgTm9kZSA6IHB1YmxpYyBFdmVudFRhcmdldCB7CiAgICAgV1RG
X01BS0VfSVNPX0FMTE9DQVRFRChOb2RlKTsKIApAQCAtNDEwLDE0ICszOTcsOCBAQAogICAgIC8v
IEludGVncmF0aW9uIHdpdGggcmVuZGVyaW5nIHRyZWUKIAogICAgIC8vIEFzIHJlbmRlcmVyKCkg
aW5jbHVkZXMgYSBicmFuY2ggeW91IHNob3VsZCBhdm9pZCBjYWxsaW5nIGl0IHJlcGVhdGVkbHkg
aW4gaG90IGNvZGUgcGF0aHMuCi0gICAgUmVuZGVyT2JqZWN0KiByZW5kZXJlcigpIGNvbnN0IHsg
cmV0dXJuIGhhc1JhcmVEYXRhKCkgPyBtX2RhdGEubV9yYXJlRGF0YS0+cmVuZGVyZXIoKSA6IG1f
ZGF0YS5tX3JlbmRlcmVyOyB9OwotICAgIHZvaWQgc2V0UmVuZGVyZXIoUmVuZGVyT2JqZWN0KiBy
ZW5kZXJlcikKLSAgICB7Ci0gICAgICAgIGlmIChoYXNSYXJlRGF0YSgpKQotICAgICAgICAgICAg
bV9kYXRhLm1fcmFyZURhdGEtPnNldFJlbmRlcmVyKHJlbmRlcmVyKTsKLSAgICAgICAgZWxzZQot
ICAgICAgICAgICAgbV9kYXRhLm1fcmVuZGVyZXIgPSByZW5kZXJlcjsKLSAgICB9CisgICAgUmVu
ZGVyT2JqZWN0KiByZW5kZXJlcigpIGNvbnN0IHsgcmV0dXJuIG1fcmVuZGVyZXJXaXRoU3R5bGVG
bGFncy5wb2ludGVyKCk7IH0KKyAgICB2b2lkIHNldFJlbmRlcmVyKFJlbmRlck9iamVjdCogcG9p
bnRlcikgeyBtX3JlbmRlcmVyV2l0aFN0eWxlRmxhZ3Muc2V0UG9pbnRlcihwb2ludGVyKTsgfQog
CiAgICAgLy8gVXNlIHRoZXNlIHR3byBtZXRob2RzIHdpdGggY2F1dGlvbi4KICAgICBXRUJDT1JF
X0VYUE9SVCBSZW5kZXJCb3gqIHJlbmRlckJveCgpIGNvbnN0OwpAQCAtNTI4LDcgKzUwOSw3IEBA
CiAKICNpZiBFTkFCTEUoSklUKQogICAgIHN0YXRpYyBwdHJkaWZmX3Qgbm9kZUZsYWdzTWVtb3J5
T2Zmc2V0KCkgeyByZXR1cm4gT0JKRUNUX09GRlNFVE9GKE5vZGUsIG1fbm9kZUZsYWdzKTsgfQot
ICAgIHN0YXRpYyBwdHJkaWZmX3QgcmFyZURhdGFNZW1vcnlPZmZzZXQoKSB7IHJldHVybiBPQkpF
Q1RfT0ZGU0VUT0YoTm9kZSwgbV9kYXRhLm1fcmFyZURhdGEpOyB9CisgICAgc3RhdGljIHB0cmRp
ZmZfdCByYXJlRGF0YU1lbW9yeU9mZnNldCgpIHsgcmV0dXJuIE9CSkVDVF9PRkZTRVRPRihOb2Rl
LCBtX3JhcmVEYXRhKTsgfQogICAgIHN0YXRpYyBpbnQzMl90IGZsYWdJc1RleHQoKSB7IHJldHVy
biBJc1RleHRGbGFnOyB9CiAgICAgc3RhdGljIGludDMyX3QgZmxhZ0lzQ29udGFpbmVyKCkgeyBy
ZXR1cm4gSXNDb250YWluZXJGbGFnOyB9CiAgICAgc3RhdGljIGludDMyX3QgZmxhZ0lzRWxlbWVu
dCgpIHsgcmV0dXJuIElzRWxlbWVudEZsYWc7IH0KQEAgLTUzNiw3ICs1MTcsNiBAQAogICAgIHN0
YXRpYyBpbnQzMl90IGZsYWdJc0hUTUwoKSB7IHJldHVybiBJc0hUTUxGbGFnOyB9CiAgICAgc3Rh
dGljIGludDMyX3QgZmxhZ0lzTGluaygpIHsgcmV0dXJuIElzTGlua0ZsYWc7IH0KICAgICBzdGF0
aWMgaW50MzJfdCBmbGFnSGFzRm9jdXNXaXRoaW4oKSB7IHJldHVybiBIYXNGb2N1c1dpdGhpbjsg
fQotICAgIHN0YXRpYyBpbnQzMl90IGZsYWdIYXNSYXJlRGF0YSgpIHsgcmV0dXJuIEhhc1JhcmVE
YXRhRmxhZzsgfQogICAgIHN0YXRpYyBpbnQzMl90IGZsYWdJc1BhcnNpbmdDaGlsZHJlbkZpbmlz
aGVkKCkgeyByZXR1cm4gSXNQYXJzaW5nQ2hpbGRyZW5GaW5pc2hlZEZsYWc7IH0KICAgICBzdGF0
aWMgaW50MzJfdCBmbGFnQ2hpbGRyZW5BZmZlY3RlZEJ5Rmlyc3RDaGlsZFJ1bGVzRmxhZygpIHsg
cmV0dXJuIENoaWxkcmVuQWZmZWN0ZWRCeUZpcnN0Q2hpbGRSdWxlc0ZsYWc7IH0KICAgICBzdGF0
aWMgaW50MzJfdCBmbGFnQ2hpbGRyZW5BZmZlY3RlZEJ5TGFzdENoaWxkUnVsZXNGbGFnKCkgeyBy
ZXR1cm4gQ2hpbGRyZW5BZmZlY3RlZEJ5TGFzdENoaWxkUnVsZXNGbGFnOyB9CkBAIC01NTcsOCAr
NTM3LDggQEAKICAgICAgICAgSXNTaGFkb3dSb290RmxhZyA9IDEgPDwgNywKICAgICAgICAgSXND
b25uZWN0ZWRGbGFnID0gMSA8PCA4LAogICAgICAgICBJc0luU2hhZG93VHJlZUZsYWcgPSAxIDw8
IDksCi0gICAgICAgIEhhc1JhcmVEYXRhRmxhZyA9IDEgPDwgMTAsCi0gICAgICAgIEhhc0V2ZW50
VGFyZ2V0RGF0YUZsYWcgPSAxIDw8IDExLAorICAgICAgICBIYXNFdmVudFRhcmdldERhdGFGbGFn
ID0gMSA8PCAxMCwKKyAgICAgICAgU3R5bGVBZmZlY3RlZEJ5Rm9jdXNXaXRoaW5GbGFnID0gMSA8
PCAxMSwKIAogICAgICAgICAvLyBUaGVzZSBiaXRzIGFyZSB1c2VkIGJ5IGRlcml2ZWQgY2xhc3Nl
cywgcHVsbGVkIHVwIGhlcmUgc28gdGhleSBjYW4KICAgICAgICAgLy8gYmUgc3RvcmVkIGluIHRo
ZSBzYW1lIG1lbW9yeSB3b3JkIGFzIHRoZSBOb2RlIGJpdHMgYWJvdmUuCkBAIC02MjAsMTEgKzYw
MCwyOSBAQAogICAgIHN0YXRpYyBjb25zdGV4cHIgdWludDMyX3Qgc19yZWZDb3VudEluY3JlbWVu
dCA9IDI7CiAgICAgc3RhdGljIGNvbnN0ZXhwciB1aW50MzJfdCBzX3JlZkNvdW50TWFzayA9IH5z
dGF0aWNfY2FzdDx1aW50MzJfdD4oMSk7CiAKKyAgICBlbnVtIGNsYXNzIEVsZW1lbnRTdHlsZUZs
YWcgOiB1aW50OF90IHsKKyAgICAgICAgU3R5bGVBZmZlY3RlZEJ5QWN0aXZlID0gMSA8PCAwLAor
ICAgICAgICBTdHlsZUFmZmVjdGVkQnlFbXB0eSA9IDEgPDwgMSwKKyAgICAgICAgQ2hpbGRyZW5B
ZmZlY3RlZEJ5RHJhZyA9IDEgPDwgMiwKKworICAgICAgICAvLyBCaXRzIGZvciBkeW5hbWljIGNo
aWxkIG1hdGNoaW5nLgorICAgICAgICAvLyBXZSBvcHRpbWl6ZSBmb3IgOmZpcnN0LWNoaWxkIGFu
ZCA6bGFzdC1jaGlsZC4gVGhlIG90aGVyIHBvc2l0aW9uYWwgY2hpbGQgc2VsZWN0b3JzIGxpa2Ug
bnRoLWNoaWxkIG9yCisgICAgICAgIC8vICotY2hpbGQtb2YtdHlwZSwgd2Ugd2lsbCBqdXN0IGdp
dmUgdXAgYW5kIHJlLWV2YWx1YXRlIHdoZW5ldmVyIGNoaWxkcmVuIGNoYW5nZSBhdCBhbGwuCisg
ICAgICAgIENoaWxkcmVuQWZmZWN0ZWRCeUZvcndhcmRQb3NpdGlvbmFsUnVsZXMgPSAxIDw8IDMs
CisgICAgICAgIERlc2NlbmRhbnRzQWZmZWN0ZWRCeUZvcndhcmRQb3NpdGlvbmFsUnVsZXMgPSAx
IDw8IDQsCisgICAgICAgIENoaWxkcmVuQWZmZWN0ZWRCeUJhY2t3YXJkUG9zaXRpb25hbFJ1bGVz
ID0gMSA8PCA1LAorICAgICAgICBEZXNjZW5kYW50c0FmZmVjdGVkQnlCYWNrd2FyZFBvc2l0aW9u
YWxSdWxlcyA9IDEgPDwgNiwKKyAgICAgICAgQ2hpbGRyZW5BZmZlY3RlZEJ5UHJvcGVydHlCYXNl
ZEJhY2t3YXJkUG9zaXRpb25hbFJ1bGVzID0gMSA8PCA3LAorICAgIH07CisKKyAgICBib29sIGhh
c1N0eWxlRmxhZyhFbGVtZW50U3R5bGVGbGFnIHN0YXRlKSBjb25zdCB7IHJldHVybiBtX3JlbmRl
cmVyV2l0aFN0eWxlRmxhZ3MudHlwZSgpICYgc3RhdGljX2Nhc3Q8dWludDhfdD4oc3RhdGUpOyB9
CisgICAgdm9pZCBzZXRTdHlsZUZsYWcoRWxlbWVudFN0eWxlRmxhZyBzdGF0ZSkgeyBtX3JlbmRl
cmVyV2l0aFN0eWxlRmxhZ3Muc2V0VHlwZShtX3JlbmRlcmVyV2l0aFN0eWxlRmxhZ3MudHlwZSgp
IHwgc3RhdGljX2Nhc3Q8dWludDhfdD4oc3RhdGUpKTsgfQorICAgIHZvaWQgY2xlYXJTdHlsZUZs
YWdzKCkgeyBtX3JlbmRlcmVyV2l0aFN0eWxlRmxhZ3Muc2V0VHlwZSgwKTsgfQorCiAgICAgdmly
dHVhbCB2b2lkIGFkZFN1YnJlc291cmNlQXR0cmlidXRlVVJMcyhMaXN0SGFzaFNldDxVUkw+Jikg
Y29uc3QgeyB9CiAKLSAgICBib29sIGhhc1JhcmVEYXRhKCkgY29uc3QgeyByZXR1cm4gZ2V0Rmxh
ZyhIYXNSYXJlRGF0YUZsYWcpOyB9Ci0KLSAgICBOb2RlUmFyZURhdGEqIHJhcmVEYXRhKCkgY29u
c3Q7CisgICAgYm9vbCBoYXNSYXJlRGF0YSgpIGNvbnN0IHsgcmV0dXJuICEhbV9yYXJlRGF0YTsg
fQorICAgIE5vZGVSYXJlRGF0YSogcmFyZURhdGEoKSBjb25zdCB7IHJldHVybiBtX3JhcmVEYXRh
LmdldCgpOyB9CiAgICAgTm9kZVJhcmVEYXRhJiBlbnN1cmVSYXJlRGF0YSgpOwogICAgIHZvaWQg
Y2xlYXJSYXJlRGF0YSgpOwogCkBAIC02NzMsMTEgKzY3MSw4IEBACiAgICAgVHJlZVNjb3BlKiBt
X3RyZWVTY29wZSB7IG51bGxwdHIgfTsKICAgICBOb2RlKiBtX3ByZXZpb3VzIHsgbnVsbHB0ciB9
OwogICAgIE5vZGUqIG1fbmV4dCB7IG51bGxwdHIgfTsKLSAgICAvLyBXaGVuIGEgbm9kZSBoYXMg
cmFyZSBkYXRhIHdlIG1vdmUgdGhlIHJlbmRlcmVyIGludG8gdGhlIHJhcmUgZGF0YS4KLSAgICB1
bmlvbiBEYXRhVW5pb24gewotICAgICAgICBSZW5kZXJPYmplY3QqIG1fcmVuZGVyZXI7Ci0gICAg
ICAgIE5vZGVSYXJlRGF0YUJhc2UqIG1fcmFyZURhdGE7Ci0gICAgfSBtX2RhdGEgeyBudWxscHRy
IH07CisgICAgQ29tcGFjdFBvaW50ZXJUdXBsZTxSZW5kZXJPYmplY3QqLCB1aW50OF90PiBtX3Jl
bmRlcmVyV2l0aFN0eWxlRmxhZ3M7CisgICAgc3RkOjp1bmlxdWVfcHRyPE5vZGVSYXJlRGF0YT4g
bV9yYXJlRGF0YTsKIH07CiAKICNpZm5kZWYgTkRFQlVHCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9k
b20vTm9kZVJhcmVEYXRhLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vTm9k
ZVJhcmVEYXRhLmNwcAkocmV2aXNpb24gMjQ4NDYyKQorKysgU291cmNlL1dlYkNvcmUvZG9tL05v
ZGVSYXJlRGF0YS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM3LDcgKzM3LDcgQEAKIAogc3RydWN0
IFNhbWVTaXplQXNOb2RlUmFyZURhdGEgewogICAgIHVuc2lnbmVkIG1fYml0ZmllbGRzIDogMjA7
Ci0gICAgdm9pZCogbV9wb2ludGVyWzNdOworICAgIHZvaWQqIG1fcG9pbnRlclsyXTsKIH07CiAK
IENPTVBJTEVfQVNTRVJUKHNpemVvZihOb2RlUmFyZURhdGEpID09IHNpemVvZihTYW1lU2l6ZUFz
Tm9kZVJhcmVEYXRhKSwgTm9kZVJhcmVEYXRhU2hvdWxkU3RheVNtYWxsKTsKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL2RvbS9Ob2RlUmFyZURhdGEuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9kb20vTm9kZVJhcmVEYXRhLmgJKHJldmlzaW9uIDI0ODQ2MikKKysrIFNvdXJjZS9XZWJDb3Jl
L2RvbS9Ob2RlUmFyZURhdGEuaAkod29ya2luZyBjb3B5KQpAQCAtMjQ3LDcgKzI0Nyw3IEBACiAg
ICAgTm9kZU11dGF0aW9uT2JzZXJ2ZXJEYXRhKCkgeyB9CiB9OwogCi1jbGFzcyBOb2RlUmFyZURh
dGEgOiBwdWJsaWMgTm9kZVJhcmVEYXRhQmFzZSB7CitjbGFzcyBOb2RlUmFyZURhdGEgewogICAg
IFdURl9NQUtFX05PTkNPUFlBQkxFKE5vZGVSYXJlRGF0YSk7IFdURl9NQUtFX0ZBU1RfQUxMT0NB
VEVEOwogcHVibGljOgogI2lmIGRlZmluZWQoRFVNUF9OT0RFX1NUQVRJU1RJQ1MpICYmIERVTVBf
Tk9ERV9TVEFUSVNUSUNTCkBAIC0yNTcsMjMgKzI1NywyMCBAQAogICAgICAgICBNdXRhdGlvbk9i
c2VydmVyID0gMSA8PCAyLAogCiAgICAgICAgIFRhYkluZGV4ID0gMSA8PCAzLAotICAgICAgICBT
dHlsZUZsYWdzID0gMSA8PCA0LAotICAgICAgICBNaW5pbXVtU2l6ZSA9IDEgPDwgNSwKLSAgICAg
ICAgU2Nyb2xsaW5nUG9zaXRpb24gPSAxIDw8IDYsCi0gICAgICAgIENvbXB1dGVkU3R5bGUgPSAx
IDw8IDcsCi0gICAgICAgIERhdGFzZXQgPSAxIDw8IDgsCi0gICAgICAgIENsYXNzTGlzdCA9IDEg
PDwgOSwKLSAgICAgICAgU2hhZG93Um9vdCA9IDEgPDwgMTAsCi0gICAgICAgIEN1c3RvbUVsZW1l
bnRRdWV1ZSA9IDEgPDwgMTEsCi0gICAgICAgIEF0dHJpYnV0ZU1hcCA9IDEgPDwgMTIsCi0gICAg
ICAgIEludGVyYWN0aW9uT2JzZXJ2ZXIgPSAxIDw8IDEzLAotICAgICAgICBQc2V1ZG9FbGVtZW50
cyA9IDEgPDwgMTQsCisgICAgICAgIE1pbmltdW1TaXplID0gMSA8PCA0LAorICAgICAgICBTY3Jv
bGxpbmdQb3NpdGlvbiA9IDEgPDwgNSwKKyAgICAgICAgQ29tcHV0ZWRTdHlsZSA9IDEgPDwgNiwK
KyAgICAgICAgRGF0YXNldCA9IDEgPDwgNywKKyAgICAgICAgQ2xhc3NMaXN0ID0gMSA8PCA4LAor
ICAgICAgICBTaGFkb3dSb290ID0gMSA8PCA5LAorICAgICAgICBDdXN0b21FbGVtZW50UXVldWUg
PSAxIDw8IDEwLAorICAgICAgICBBdHRyaWJ1dGVNYXAgPSAxIDw8IDExLAorICAgICAgICBJbnRl
cmFjdGlvbk9ic2VydmVyID0gMSA8PCAxMiwKKyAgICAgICAgUHNldWRvRWxlbWVudHMgPSAxIDw8
IDEzLAogICAgIH07CiAjZW5kaWYKIAotICAgIE5vZGVSYXJlRGF0YShSZW5kZXJPYmplY3QqIHJl
bmRlcmVyKQotICAgICAgICA6IE5vZGVSYXJlRGF0YUJhc2UocmVuZGVyZXIpCi0gICAgICAgICwg
bV9jb25uZWN0ZWRGcmFtZUNvdW50KDApCisgICAgTm9kZVJhcmVEYXRhKCkKICAgICB7IH0KIAog
ICAgIHZvaWQgY2xlYXJOb2RlTGlzdHMoKSB7IG1fbm9kZUxpc3RzID0gbnVsbHB0cjsgfQpAQCAt
MzIwLDcgKzMxNyw3IEBACiAjZW5kaWYKIAogcHJpdmF0ZToKLSAgICB1bnNpZ25lZCBtX2Nvbm5l
Y3RlZEZyYW1lQ291bnQ7IC8vIE11c3QgZml0IFBhZ2U6Om1heE51bWJlck9mRnJhbWVzLgorICAg
IHVuc2lnbmVkIG1fY29ubmVjdGVkRnJhbWVDb3VudCB7IDAgfTsgLy8gTXVzdCBmaXQgUGFnZTo6
bWF4TnVtYmVyT2ZGcmFtZXMuCiAKICAgICBzdGQ6OnVuaXF1ZV9wdHI8Tm9kZUxpc3RzTm9kZURh
dGE+IG1fbm9kZUxpc3RzOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxOb2RlTXV0YXRpb25PYnNlcnZl
ckRhdGE+IG1fbXV0YXRpb25PYnNlcnZlckRhdGE7CkBAIC0zMzYsMTIgKzMzMyw2IEBACiAgICAg
cmV0dXJuIHRydWU7CiB9CiAKLWlubGluZSBOb2RlUmFyZURhdGEqIE5vZGU6OnJhcmVEYXRhKCkg
Y29uc3QKLXsKLSAgICBBU1NFUlRfV0lUSF9TRUNVUklUWV9JTVBMSUNBVElPTihoYXNSYXJlRGF0
YSgpKTsKLSAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Tm9kZVJhcmVEYXRhKj4obV9kYXRhLm1fcmFy
ZURhdGEpOwotfQotCiBpbmxpbmUgTm9kZVJhcmVEYXRhJiBOb2RlOjplbnN1cmVSYXJlRGF0YSgp
CiB7CiAgICAgaWYgKCFoYXNSYXJlRGF0YSgpKQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>376431</attachid>
            <date>2019-08-15 15:21:24 -0700</date>
            <delta_ts>2019-08-16 00:24:45 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-200744-20190815152123.patch</filename>
            <type>text/plain</type>
            <size>41099</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XVEYvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvQ2hh
bmdlTG9nCShyZXZpc2lvbiAyNDg3NDgpCisrKyBTb3VyY2UvV1RGL0NoYW5nZUxvZwkod29ya2lu
ZyBjb3B5KQpAQCAtMSwzICsxLDE3IEBACisyMDE5LTA4LTE1ICBSeW9zdWtlIE5pd2EgIDxybml3
YUB3ZWJraXQub3JnPgorCisgICAgICAgIERvbid0IHVzZSB1bmlvbiB0byBzdG9yZSBOb2RlUmFy
ZURhdGEqIGFuZCBSZW5kZXJPYmplY3QqCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0yMDA3NDQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBNb3ZlZCB0aGUgc3RhdGljIGFzc2VydCB3aGljaCByZXF1aXJlcyB0
aGUgdHlwZSBvZiB0aGUgb2JqZWN0IHRvIHdoaWNoIHRoZSBwb2ludGVyIHR5cGUgcG9pbnRzCisg
ICAgICAgIGludG8gc2V0UG9pbnRlciBzbyB0aGF0IHdlIGNhbiB1c2UgQ29tcGFjdFBvaW50ZXJU
dXBsZTxUKiwgVT4gYXMgYSBtZW1iZXIgdmFyaWFibGUKKyAgICAgICAgd2l0aCBqdXN0IGEgZm9y
d2FyZCBkZWNsYXJhdGlvbiBvZiBULgorCisgICAgICAgICogd3RmL0NvbXBhY3RQb2ludGVyVHVw
bGUuaDoKKyAgICAgICAgKFdURjo6Q29tcGFjdFBvaW50ZXJUdXBsZTo6c2V0UG9pbnRlcik6CisK
IDIwMTktMDgtMTUgIENvbW1pdCBRdWV1ZSAgPGNvbW1pdC1xdWV1ZUB3ZWJraXQub3JnPgogCiAg
ICAgICAgIFVucmV2aWV3ZWQsIHJvbGxpbmcgb3V0IHIyNDg0NDAuCkluZGV4OiBTb3VyY2UvV1RG
L3d0Zi9Db21wYWN0UG9pbnRlclR1cGxlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dURi93dGYv
Q29tcGFjdFBvaW50ZXJUdXBsZS5oCShyZXZpc2lvbiAyNDg0NjIpCisrKyBTb3VyY2UvV1RGL3d0
Zi9Db21wYWN0UG9pbnRlclR1cGxlLmgJKHdvcmtpbmcgY29weSkKQEAgLTM5LDcgKzM5LDYgQEAg
Y2xhc3MgQ29tcGFjdFBvaW50ZXJUdXBsZSB7CiBwdWJsaWM6CiAgICAgc3RhdGljX2Fzc2VydChz
aXplb2YoVHlwZSkgPT0gMSwgIiIpOwogICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc19wb2ludGVy
PFBvaW50ZXJUeXBlPjo6dmFsdWUsICIiKTsKLSAgICBzdGF0aWNfYXNzZXJ0KGFsaWdub2YodHlw
ZW5hbWUgc3RkOjpyZW1vdmVfcG9pbnRlcjxQb2ludGVyVHlwZT46OnR5cGUpID49IGFsaWdub2Yo
dm9pZCopLCAiIik7CiAgICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX2ludGVncmFsPFR5cGU+Ojp2
YWx1ZSB8fCBzdGQ6OmlzX2VudW08VHlwZT46OnZhbHVlLCAiIik7CiAKICAgICBDb21wYWN0UG9p
bnRlclR1cGxlKCkgPSBkZWZhdWx0OwpAQCAtNzAsNiArNjksNyBAQCBwdWJsaWM6CiAgICAgUG9p
bnRlclR5cGUgcG9pbnRlcigpIGNvbnN0IHsgcmV0dXJuIGJpdHdpc2VfY2FzdDxQb2ludGVyVHlw
ZT4obV9kYXRhICYgcG9pbnRlck1hc2spOyB9CiAgICAgdm9pZCBzZXRQb2ludGVyKFBvaW50ZXJU
eXBlIHBvaW50ZXIpCiAgICAgeworICAgICAgICBzdGF0aWNfYXNzZXJ0KGFsaWdub2YodHlwZW5h
bWUgc3RkOjpyZW1vdmVfcG9pbnRlcjxQb2ludGVyVHlwZT46OnR5cGUpID49IGFsaWdub2Yodm9p
ZCopLCAiIik7CiAgICAgICAgIEFTU0VSVCgoYml0d2lzZV9jYXN0PHVpbnQ2NF90Pihwb2ludGVy
KSAmIDBiMTExKSA9PSAweDApOwogICAgICAgICBtX2RhdGEgPSBDb21wYWN0UG9pbnRlclR1cGxl
KHBvaW50ZXIsIHR5cGUoKSkubV9kYXRhOwogICAgIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cJKHJldmlzaW9u
IDI0ODQ2MykKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAt
MSwzICsxLDExOCBAQAorMjAxOS0wOC0xNSAgUnlvc3VrZSBOaXdhICA8cm5pd2FAd2Via2l0Lm9y
Zz4KKworICAgICAgICBEb24ndCB1c2UgdW5pb24gdG8gc3RvcmUgTm9kZVJhcmVEYXRhKiBhbmQg
UmVuZGVyT2JqZWN0KgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MjAwNzQ0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgVGhpcyBwYXRjaCB1bmRvZXMgdW5pb25pbmcgb2YgTm9kZVJhcmVEYXRhKiBhbmQgUmVu
ZGVyT2JqZWN0KiBpbiBOb2RlIGludHJvZHVjZWQgaW4gcjEzMzM3MiBpbiBvcmRlcgorICAgICAg
ICB0byBlbGltaW5hdGUgYW55IHBvc3NpYmlsaXR5IG9mIHR5cGUgY29uZnVzaW9uIGJ1Z3MuIElu
c3RlYWQgb2YgcmUtaW50cm9kdWNpbmcgdGhlIGdsb2JhbCBtYXAsIHdoaWNoCisgICAgICAgIGlz
IGtub3duIHRvIGJlIHNsb3csIHRoaXMgcGF0Y2ggc2ltcGx5IGFkZHMgYW4gZXh0cmEgcG9pbnRl
ciBmb3IgTm9kZVJhcmVEYXRhOiBOb2RlOjptX3JhcmVEYXRhLgorCisgICAgICAgIFRvIGNvbXBl
bnNhdGUgZm9yIHRoZSBpbmNyZWFzZWQgbWVtb3J5IHVzYWdlIGR1ZSB0byBhIG5ldyBwb2ludGVy
IHR5cGUgaW4gTm9kZSwgdGhpcyBwYXRjaCBhbHNvIHBhY2tzCisgICAgICAgIHRoZSBzdHlsZSBy
ZWxhdGVkIGZsYWdzIGluIEVsZW1lbnRSYXJlRGF0YSwgd2hpY2ggaXMgdGhlIG1vc3QgY29tbW9u
IHJlYXNvbiBmb3Igd2hpY2ggRWxlbWVudFJhcmVEYXRhCisgICAgICAgIGlzIGNyZWF0ZWQsIGlu
dG8gUmVuZGVyT2JqZWN0KiBwb2ludGVyIHVzaW5nIENvbXBhY3RQb2ludGVyVHVwbGUgYXMgTm9k
ZTo6bV9yZW5kZXJlcldpdGhTdHlsZUZsYWdzLgorCisgICAgICAgIFVuZm9ydHVuYXRlbHksIHRo
ZXJlIGFyZSA5IHN0eWxlIHJlbGF0ZWQgZmxhZ3MgYW5kIHRoZXkgd29uJ3QgYWxsIGZpdCBpbnRv
IHRoZSBzaW5nbGUgYnl0ZSBwcm92aWRlZAorICAgICAgICBieSBDb21wYWN0UG9pbnRlclR1cGxl
LiBMdWNraWx5LCB0aGlzIHBhdGNoIGFsc28gZWxpbWluYXRlcyB0aGUgbmVlZCBmb3IgSGFzUmFy
ZURhdGFGbGFnIGFzIG1fcmFyZURhdGEKKyAgICAgICAga25vd3Mgd2hldGhlciBhIG5vZGUgaGFz
IHJhcmUgZGF0YSBvciBub3Qgc28gd2UgcmUtdXNlIHRoYXQgYml0ZmxhZyBzcGFjZSBmb3IgdGhl
IGV4dHJhIG9uZSBmbGFnLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cyBzaW5jZSB0aGVyZSBzaG91
bGQgYmUgbm8gb2JzZXJ2YWJsZSBiZWhhdmlvcmFsIGNoYW5nZSBmcm9tIHRoaXMuCisKKyAgICAg
ICAgKiBjc3NqaXQvU2VsZWN0b3JDb21waWxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTZWxl
Y3RvckNvbXBpbGVyOjpTZWxlY3RvckNvZGVHZW5lcmF0b3I6OmdlbmVyYXRlRWxlbWVudElzTnRo
Q2hpbGQpOiBDaGVjayB0aGUgbnVsbGl0eSBvZgorICAgICAgICBtX3JhcmVEYXRhIGRpcmVjdGx5
IGluc3RlYWQgb2YgY2hlY2tpbmcgSGFzUmFyZURhdGFGbGFnLCB3aGljaCBoYXMgYmVlbiByZW1v
dmVkLgorICAgICAgICAqIGRvbS9FbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1l
bnQ6OnNldFN0eWxlQWZmZWN0ZWRCeUVtcHR5KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6
OkVsZW1lbnQ6OnNldFN0eWxlQWZmZWN0ZWRCeUZvY3VzV2l0aGluKTogRGVsZXRlZC4KKyAgICAg
ICAgKFdlYkNvcmU6OkVsZW1lbnQ6OnNldFN0eWxlQWZmZWN0ZWRCeUFjdGl2ZSk6IERlbGV0ZWQu
CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50OjpzZXRDaGlsZHJlbkFmZmVjdGVkQnlEcmFnKTog
RGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnQ6OnNldENoaWxkcmVuQWZmZWN0ZWRC
eUZvcndhcmRQb3NpdGlvbmFsUnVsZXMpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RWxl
bWVudDo6c2V0RGVzY2VuZGFudHNBZmZlY3RlZEJ5Rm9yd2FyZFBvc2l0aW9uYWxSdWxlcyk6IERl
bGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50OjpzZXRDaGlsZHJlbkFmZmVjdGVkQnlC
YWNrd2FyZFBvc2l0aW9uYWxSdWxlcyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpFbGVt
ZW50OjpzZXREZXNjZW5kYW50c0FmZmVjdGVkQnlCYWNrd2FyZFBvc2l0aW9uYWxSdWxlcyk6IERl
bGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50OjpzZXRDaGlsZHJlbkFmZmVjdGVkQnlQ
cm9wZXJ0eUJhc2VkQmFja3dhcmRQb3NpdGlvbmFsUnVsZXMpOiBEZWxldGVkLgorICAgICAgICAo
V2ViQ29yZTo6RWxlbWVudDo6aGFzRmxhZ3NTZXREdXJpbmdTdHlsaW5nT2ZDaGlsZHJlbiBjb25z
dCk6CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50OjpyZXNldFN0eWxlUmVsYXRpb25zKTogQ2xl
YXIgdGhlIGZsYWdzIGluIG1fcmVuZGVyZXJXaXRoU3R5bGVGbGFncyBhbmQgbV9ub2RlRmxhZ3Mu
CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50OjpyYXJlRGF0YVN0eWxlQWZmZWN0ZWRCeUVtcHR5
IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnQ6OnJhcmVEYXRhU3R5
bGVBZmZlY3RlZEJ5Rm9jdXNXaXRoaW4gY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29y
ZTo6RWxlbWVudDo6cmFyZURhdGFTdHlsZUFmZmVjdGVkQnlBY3RpdmUgY29uc3QpOiBEZWxldGVk
LgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudDo6cmFyZURhdGFDaGlsZHJlbkFmZmVjdGVkQnlE
cmFnIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnQ6OnJhcmVEYXRh
Q2hpbGRyZW5BZmZlY3RlZEJ5Rm9yd2FyZFBvc2l0aW9uYWxSdWxlcyBjb25zdCk6IERlbGV0ZWQu
CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50OjpyYXJlRGF0YURlc2NlbmRhbnRzQWZmZWN0ZWRC
eUZvcndhcmRQb3NpdGlvbmFsUnVsZXMgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29y
ZTo6RWxlbWVudDo6cmFyZURhdGFDaGlsZHJlbkFmZmVjdGVkQnlCYWNrd2FyZFBvc2l0aW9uYWxS
dWxlcyBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50OjpyYXJlRGF0
YURlc2NlbmRhbnRzQWZmZWN0ZWRCeUJhY2t3YXJkUG9zaXRpb25hbFJ1bGVzIGNvbnN0KTogRGVs
ZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnQ6OnJhcmVEYXRhQ2hpbGRyZW5BZmZlY3Rl
ZEJ5UHJvcGVydHlCYXNlZEJhY2t3YXJkUG9zaXRpb25hbFJ1bGVzIGNvbnN0KTogRGVsZXRlZC4K
KyAgICAgICAgKiBkb20vRWxlbWVudC5oOgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudDo6c3R5
bGVBZmZlY3RlZEJ5QWN0aXZlIGNvbnN0KTogTm93IHVzZXMgbV9yZW5kZXJlcldpdGhTdHlsZUZs
YWdzLgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudDo6c3R5bGVBZmZlY3RlZEJ5RW1wdHkgY29u
c3QpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnQ6OnN0eWxlQWZmZWN0ZWRCeUZv
Y3VzV2l0aGluIGNvbnN0KTogTm93IHVzZXMgbV9ub2RlRmxhZ3MuCisgICAgICAgIChXZWJDb3Jl
OjpFbGVtZW50OjpjaGlsZHJlbkFmZmVjdGVkQnlEcmFnIGNvbnN0KTogTm93IHVzZXMgbV9yZW5k
ZXJlcldpdGhTdHlsZUZsYWdzLgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudDo6Y2hpbGRyZW5B
ZmZlY3RlZEJ5Rm9yd2FyZFBvc2l0aW9uYWxSdWxlcyBjb25zdCk6IERpdHRvLgorICAgICAgICAo
V2ViQ29yZTo6RWxlbWVudDo6ZGVzY2VuZGFudHNBZmZlY3RlZEJ5Rm9yd2FyZFBvc2l0aW9uYWxS
dWxlcyBjb25zdCk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudDo6Y2hpbGRyZW5B
ZmZlY3RlZEJ5QmFja3dhcmRQb3NpdGlvbmFsUnVsZXMgY29uc3QpOiBEaXR0by4KKyAgICAgICAg
KFdlYkNvcmU6OkVsZW1lbnQ6OmRlc2NlbmRhbnRzQWZmZWN0ZWRCeUJhY2t3YXJkUG9zaXRpb25h
bFJ1bGVzIGNvbnN0KTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50OjpjaGlsZHJl
bkFmZmVjdGVkQnlQcm9wZXJ0eUJhc2VkQmFja3dhcmRQb3NpdGlvbmFsUnVsZXMgY29uc3QpOiBE
aXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnQ6OnNldFN0eWxlQWZmZWN0ZWRCeUVtcHR5
KTogTm93IHN0b3JlcyBpbnRvIG1fcmVuZGVyZXJXaXRoU3R5bGVGbGFncy4KKyAgICAgICAgKFdl
YkNvcmU6OkVsZW1lbnQ6OnNldFN0eWxlQWZmZWN0ZWRCeUZvY3VzV2l0aGluKTogTm93IHVzZXMg
bV9ub2RlRmxhZ3MuCisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50OjpzZXREZXNjZW5kYW50c0Fm
ZmVjdGVkQnlQcmV2aW91c1NpYmxpbmcpOiBSZW1vdmVkIGNvbnN0IHF1YWxpZmllciAmIHVzZWxl
c3MgcmV0dXJuLgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudDo6c2V0U3R5bGVBZmZlY3RlZEJ5
QWN0aXZlKTogTm93IHN0b3JlcyBpbnRvIG1fcmVuZGVyZXJXaXRoU3R5bGVGbGFncy4KKyAgICAg
ICAgKFdlYkNvcmU6OkVsZW1lbnQ6OnNldENoaWxkcmVuQWZmZWN0ZWRCeURyYWcpOiBEaXR0by4K
KyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnQ6OnNldENoaWxkcmVuQWZmZWN0ZWRCeUZvcndhcmRQ
b3NpdGlvbmFsUnVsZXMpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnQ6OnNldERl
c2NlbmRhbnRzQWZmZWN0ZWRCeUZvcndhcmRQb3NpdGlvbmFsUnVsZXMpOiBEaXR0by4KKyAgICAg
ICAgKFdlYkNvcmU6OkVsZW1lbnQ6OnNldENoaWxkcmVuQWZmZWN0ZWRCeUJhY2t3YXJkUG9zaXRp
b25hbFJ1bGVzKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50OjpzZXREZXNjZW5k
YW50c0FmZmVjdGVkQnlCYWNrd2FyZFBvc2l0aW9uYWxSdWxlcyk6IERpdHRvLgorICAgICAgICAo
V2ViQ29yZTo6RWxlbWVudDo6c2V0Q2hpbGRyZW5BZmZlY3RlZEJ5UHJvcGVydHlCYXNlZEJhY2t3
YXJkUG9zaXRpb25hbFJ1bGVzKTogRGl0dG8uCisgICAgICAgICogZG9tL0VsZW1lbnRSYXJlRGF0
YS5oOgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudFJhcmVEYXRhOjpzdHlsZUFmZmVjdGVkQnlB
Y3RpdmUgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudFJhcmVEYXRh
OjpzZXRTdHlsZUFmZmVjdGVkQnlBY3RpdmUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6
RWxlbWVudFJhcmVEYXRhOjpzdHlsZUFmZmVjdGVkQnlFbXB0eSBjb25zdCk6IERlbGV0ZWQuCisg
ICAgICAgIChXZWJDb3JlOjpFbGVtZW50UmFyZURhdGE6OnNldFN0eWxlQWZmZWN0ZWRCeUVtcHR5
KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnRSYXJlRGF0YTo6c3R5bGVBZmZl
Y3RlZEJ5Rm9jdXNXaXRoaW4gY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RWxl
bWVudFJhcmVEYXRhOjpzZXRTdHlsZUFmZmVjdGVkQnlGb2N1c1dpdGhpbik6IERlbGV0ZWQuCisg
ICAgICAgIChXZWJDb3JlOjpFbGVtZW50UmFyZURhdGE6OmNoaWxkcmVuQWZmZWN0ZWRCeURyYWcg
Y29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudFJhcmVEYXRhOjpzZXRD
aGlsZHJlbkFmZmVjdGVkQnlEcmFnKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkVsZW1l
bnRSYXJlRGF0YTo6Y2hpbGRyZW5BZmZlY3RlZEJ5TGFzdENoaWxkUnVsZXMgY29uc3QpOiBEZWxl
dGVkLgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudFJhcmVEYXRhOjpzZXRDaGlsZHJlbkFmZmVj
dGVkQnlMYXN0Q2hpbGRSdWxlcyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50
UmFyZURhdGE6OmNoaWxkcmVuQWZmZWN0ZWRCeUZvcndhcmRQb3NpdGlvbmFsUnVsZXMgY29uc3Qp
OiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudFJhcmVEYXRhOjpzZXRDaGlsZHJl
bkFmZmVjdGVkQnlGb3J3YXJkUG9zaXRpb25hbFJ1bGVzKTogRGVsZXRlZC4KKyAgICAgICAgKFdl
YkNvcmU6OkVsZW1lbnRSYXJlRGF0YTo6ZGVzY2VuZGFudHNBZmZlY3RlZEJ5Rm9yd2FyZFBvc2l0
aW9uYWxSdWxlcyBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50UmFy
ZURhdGE6OnNldERlc2NlbmRhbnRzQWZmZWN0ZWRCeUZvcndhcmRQb3NpdGlvbmFsUnVsZXMpOiBE
ZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudFJhcmVEYXRhOjpjaGlsZHJlbkFmZmVj
dGVkQnlCYWNrd2FyZFBvc2l0aW9uYWxSdWxlcyBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChX
ZWJDb3JlOjpFbGVtZW50UmFyZURhdGE6OnNldENoaWxkcmVuQWZmZWN0ZWRCeUJhY2t3YXJkUG9z
aXRpb25hbFJ1bGVzKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnRSYXJlRGF0
YTo6ZGVzY2VuZGFudHNBZmZlY3RlZEJ5QmFja3dhcmRQb3NpdGlvbmFsUnVsZXMgY29uc3QpOiBE
ZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudFJhcmVEYXRhOjpzZXREZXNjZW5kYW50
c0FmZmVjdGVkQnlCYWNrd2FyZFBvc2l0aW9uYWxSdWxlcyk6IERlbGV0ZWQuCisgICAgICAgIChX
ZWJDb3JlOjpFbGVtZW50UmFyZURhdGE6OmNoaWxkcmVuQWZmZWN0ZWRCeVByb3BlcnR5QmFzZWRC
YWNrd2FyZFBvc2l0aW9uYWxSdWxlcyBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3Jl
OjpFbGVtZW50UmFyZURhdGE6OnNldENoaWxkcmVuQWZmZWN0ZWRCeVByb3BlcnR5QmFzZWRCYWNr
d2FyZFBvc2l0aW9uYWxSdWxlcyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50
UmFyZURhdGE6OnVzZVR5cGVzIGNvbnN0KTogUmVtb3ZlZCBVc2VUeXBlOjpTdHlsZUZsYWdzLgor
ICAgICAgICAoV2ViQ29yZTo6RWxlbWVudFJhcmVEYXRhOjpFbGVtZW50UmFyZURhdGEpOiBObyBs
b25nZXIgdGFrZXMgUmVuZGVyRWxlbWVudCouCisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50UmFy
ZURhdGE6OnJlc2V0U3R5bGVSZWxhdGlvbnMpOiBPbmx5IHJlLXNldHMgY2hpbGQgaW5kZXggbm93
IHNpbmNlIHRoYXQncyBhbGwgbGVmdC4KKyAgICAgICAgKiBkb20vTm9kZS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpzdHJpbmdGb3JSYXJlRGF0YVVzZVR5cGUpOiBSZW1vdmVkIFVzZVR5cGU6OlN0
eWxlRmxhZ3Mgc2luY2UgdGhlcmUgaXMgbm8gc3R5bGUgcmVsYXRlZAorICAgICAgICBmbGFncyBp
biBFbGVtZW50UmFyZURhdGEuCisgICAgICAgIChXZWJDb3JlOjpOb2RlOjptYXRlcmlhbGl6ZVJh
cmVEYXRhKTogU2ltcGxpZmllZCBub3cgdGhhdCBtX3JhcmVEYXRhIGlzIG5vdCBhIHVuaW9uLgor
ICAgICAgICAoV2ViQ29yZTo6Tm9kZTo6Y2xlYXJSYXJlRGF0YSk6IERpdHRvLgorICAgICAgICAq
IGRvbS9Ob2RlLmg6CisgICAgICAgIChXZWJDb3JlOjpOb2RlUmFyZURhdGFCYXNlKTogRGVsZXRl
ZC4KKyAgICAgICAgKFdlYkNvcmU6Ok5vZGU6OnJlbmRlcmVyIGNvbnN0KToKKyAgICAgICAgKFdl
YkNvcmU6Ok5vZGU6OnJhcmVEYXRhTWVtb3J5T2Zmc2V0KToKKyAgICAgICAgKFdlYkNvcmU6Ok5v
ZGU6OmZsYWdIYXNSYXJlRGF0YSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpOb2RlOjpO
b2RlRmxhZ3MpOiBSZXBsYWNlZCBIYXNSYXJlRGF0YUZsYWcgd2l0aCBTdHlsZUFmZmVjdGVkQnlG
b2N1c1dpdGhpbkZsYWcuCisgICAgICAgIChXZWJDb3JlOjpOb2RlOjpFbGVtZW50U3R5bGVGbGFn
KTogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpOb2RlOjpoYXNTdHlsZUZsYWcgY29uc3QpOiBB
ZGRlZC4gQ2hlY2tzIGEgcmVwcmVuc2Ugb2YgYSBmbGFnIGluIG1fcmVuZGVyZXJXaXRoU3R5bGVG
bGFncy4KKyAgICAgICAgKFdlYkNvcmU6Ok5vZGU6OnNldFN0eWxlRmxhZyk6IERpdHRvIGZvciBz
ZXR0aW5nIGEgZmxhZy4KKyAgICAgICAgKFdlYkNvcmU6Ok5vZGU6OmNsZWFyU3R5bGVGbGFncyk6
IERpdHRvIGZvciBjbGVhcmluZyBhbGwgZmxhZ3MuCisgICAgICAgIChXZWJDb3JlOjpOb2RlOjpo
YXNSYXJlRGF0YSBjb25zdCk6IE5vdyBjaGVja3MgdGhlIG51bGxpdHkgb2YgbV9yYXJlRGF0YSBk
aXJlY3RseS4KKyAgICAgICAgKFdlYkNvcmU6Ok5vZGU6OnJhcmVEYXRhIGNvbnN0KToKKyAgICAg
ICAgKiBkb20vTm9kZVJhcmVEYXRhLmNwcDogVGhlIHNpemUgb2YgTm9kZVJhcmVEYXRhIGlzIHNo
cnVuayBieSBvbmUgcG9pbnRlci4KKyAgICAgICAgKiBkb20vTm9kZVJhcmVEYXRhLmg6CisgICAg
ICAgIChXZWJDb3JlOjpOb2RlUmFyZURhdGE6Ok5vZGVSYXJlRGF0YSk6IE5vIGxvbmdlciBpbmhl
cml0cyBmcm9tIE5vZGVSYXJlRGF0YUJhc2Ugd2hpY2ggd2FzIG5lZWRlZCB0bworICAgICAgICB0
byBzdG9yZSBSZW5kZXJPYmplY3QqLgorICAgICAgICAoV2ViQ29yZTo6Tm9kZTo6cmFyZURhdGEg
Y29uc3QpOiBNb3ZlZCB0byBOb2RlLmguCisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlck9iamVj
dC5oOgorICAgICAgICAoV2ViQ29yZTo6Tm9kZTo6c2V0UmVuZGVyZXIpOiBNb3ZlZCBmcm9tIE5v
ZGUuaCBzaW5jZSBDb21wYWN0UG9pbnRlclR1cGxlOjpzZXRQb2ludGVyIGhhcyB0aGUKKyAgICAg
ICAgYWZvcmVtZW50aW9uZWQgc3RhdGljX2Fzc2VydCB3aGljaCByZXF1aXJlcyB0aGUgZGVmaW5p
dGlvbiBvZiBSZW5kZXJPYmplY3QuCisKIDIwMTktMDgtMDkgIFJ5b3N1a2UgTml3YSAgPHJuaXdh
QHdlYmtpdC5vcmc+CiAKICAgICAgICAgUkVHUkVTU0lPTiAoaU9TIDEzKTogdW5pdGVkLmNvbSB3
ZWIgZm9ybXMgZG8gbm90IHJlc3BvbmQgdG8gdGFwcwpJbmRleDogU291cmNlL1dlYkNvcmUvY3Nz
aml0L1NlbGVjdG9yQ29tcGlsZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Nz
c2ppdC9TZWxlY3RvckNvbXBpbGVyLmNwcAkocmV2aXNpb24gMjQ4NDYyKQorKysgU291cmNlL1dl
YkNvcmUvY3Nzaml0L1NlbGVjdG9yQ29tcGlsZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNjAy
LDEwICszNjAyLDEyIEBAIHZvaWQgU2VsZWN0b3JDb2RlR2VuZXJhdG9yOjpnZW5lcmF0ZUVsZW0K
IAogICAgICAgICBBc3NlbWJsZXI6Okp1bXBMaXN0IG5vQ2FjaGVkQ2hpbGRJbmRleENhc2VzOwog
ICAgICAgICBnZW5lcmF0ZVdhbGtUb1ByZXZpb3VzQWRqYWNlbnRFbGVtZW50KG5vTW9yZVNpYmxp
bmdzQ2FzZXMsIHByZXZpb3VzU2libGluZyk7Ci0gICAgICAgIG5vQ2FjaGVkQ2hpbGRJbmRleENh
c2VzLmFwcGVuZChtX2Fzc2VtYmxlci5icmFuY2hUZXN0MzIoQXNzZW1ibGVyOjpaZXJvLCBBc3Nl
bWJsZXI6OkFkZHJlc3MocHJldmlvdXNTaWJsaW5nLCBOb2RlOjpub2RlRmxhZ3NNZW1vcnlPZmZz
ZXQoKSksIEFzc2VtYmxlcjo6VHJ1c3RlZEltbTMyKE5vZGU6OmZsYWdIYXNSYXJlRGF0YSgpKSkp
OworCisgICAgICAgIExvY2FsUmVnaXN0ZXIgZWxlbWVudFJhcmVEYXRhKG1fcmVnaXN0ZXJBbGxv
Y2F0b3IpOworICAgICAgICBtX2Fzc2VtYmxlci5sb2FkUHRyKEFzc2VtYmxlcjo6QWRkcmVzcyhw
cmV2aW91c1NpYmxpbmcsIE5vZGU6OnJhcmVEYXRhTWVtb3J5T2Zmc2V0KCkpLCBlbGVtZW50UmFy
ZURhdGEpOworCisgICAgICAgIG5vQ2FjaGVkQ2hpbGRJbmRleENhc2VzLmFwcGVuZChtX2Fzc2Vt
Ymxlci5icmFuY2hUZXN0UHRyKEFzc2VtYmxlcjo6WmVybywgZWxlbWVudFJhcmVEYXRhKSk7CiAg
ICAgICAgIHsKLSAgICAgICAgICAgIExvY2FsUmVnaXN0ZXIgZWxlbWVudFJhcmVEYXRhKG1fcmVn
aXN0ZXJBbGxvY2F0b3IpOwotICAgICAgICAgICAgbV9hc3NlbWJsZXIubG9hZFB0cihBc3NlbWJs
ZXI6OkFkZHJlc3MocHJldmlvdXNTaWJsaW5nLCBOb2RlOjpyYXJlRGF0YU1lbW9yeU9mZnNldCgp
KSwgZWxlbWVudFJhcmVEYXRhKTsKICAgICAgICAgICAgIExvY2FsUmVnaXN0ZXIgY2FjaGVkQ2hp
bGRJbmRleChtX3JlZ2lzdGVyQWxsb2NhdG9yKTsKICAgICAgICAgICAgIG1fYXNzZW1ibGVyLmxv
YWQxNihBc3NlbWJsZXI6OkFkZHJlc3MoZWxlbWVudFJhcmVEYXRhLCBFbGVtZW50UmFyZURhdGE6
OmNoaWxkSW5kZXhNZW1vcnlPZmZzZXQoKSksIGNhY2hlZENoaWxkSW5kZXgpOwogICAgICAgICAg
ICAgbm9DYWNoZWRDaGlsZEluZGV4Q2FzZXMuYXBwZW5kKG1fYXNzZW1ibGVyLmJyYW5jaFRlc3Qz
MihBc3NlbWJsZXI6Olplcm8sIGNhY2hlZENoaWxkSW5kZXgpKTsKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL2RvbS9FbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vRWxl
bWVudC5jcHAJKHJldmlzaW9uIDI0ODQ2MikKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzIwMyw1MSArMzIwMyw2IEBAIGJvb2wgRWxlbWVudDo6
bmVlZHNTdHlsZUludmFsaWRhdGlvbigpIGMKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotdm9pZCBF
bGVtZW50OjpzZXRTdHlsZUFmZmVjdGVkQnlFbXB0eSgpCi17Ci0gICAgZW5zdXJlRWxlbWVudFJh
cmVEYXRhKCkuc2V0U3R5bGVBZmZlY3RlZEJ5RW1wdHkodHJ1ZSk7Ci19Ci0KLXZvaWQgRWxlbWVu
dDo6c2V0U3R5bGVBZmZlY3RlZEJ5Rm9jdXNXaXRoaW4oKQotewotICAgIGVuc3VyZUVsZW1lbnRS
YXJlRGF0YSgpLnNldFN0eWxlQWZmZWN0ZWRCeUZvY3VzV2l0aGluKHRydWUpOwotfQotCi12b2lk
IEVsZW1lbnQ6OnNldFN0eWxlQWZmZWN0ZWRCeUFjdGl2ZSgpCi17Ci0gICAgZW5zdXJlRWxlbWVu
dFJhcmVEYXRhKCkuc2V0U3R5bGVBZmZlY3RlZEJ5QWN0aXZlKHRydWUpOwotfQotCi12b2lkIEVs
ZW1lbnQ6OnNldENoaWxkcmVuQWZmZWN0ZWRCeURyYWcoKQotewotICAgIGVuc3VyZUVsZW1lbnRS
YXJlRGF0YSgpLnNldENoaWxkcmVuQWZmZWN0ZWRCeURyYWcodHJ1ZSk7Ci19Ci0KLXZvaWQgRWxl
bWVudDo6c2V0Q2hpbGRyZW5BZmZlY3RlZEJ5Rm9yd2FyZFBvc2l0aW9uYWxSdWxlcygpCi17Ci0g
ICAgZW5zdXJlRWxlbWVudFJhcmVEYXRhKCkuc2V0Q2hpbGRyZW5BZmZlY3RlZEJ5Rm9yd2FyZFBv
c2l0aW9uYWxSdWxlcyh0cnVlKTsKLX0KLQotdm9pZCBFbGVtZW50OjpzZXREZXNjZW5kYW50c0Fm
ZmVjdGVkQnlGb3J3YXJkUG9zaXRpb25hbFJ1bGVzKCkKLXsKLSAgICBlbnN1cmVFbGVtZW50UmFy
ZURhdGEoKS5zZXREZXNjZW5kYW50c0FmZmVjdGVkQnlGb3J3YXJkUG9zaXRpb25hbFJ1bGVzKHRy
dWUpOwotfQotCi12b2lkIEVsZW1lbnQ6OnNldENoaWxkcmVuQWZmZWN0ZWRCeUJhY2t3YXJkUG9z
aXRpb25hbFJ1bGVzKCkKLXsKLSAgICBlbnN1cmVFbGVtZW50UmFyZURhdGEoKS5zZXRDaGlsZHJl
bkFmZmVjdGVkQnlCYWNrd2FyZFBvc2l0aW9uYWxSdWxlcyh0cnVlKTsKLX0KLQotdm9pZCBFbGVt
ZW50OjpzZXREZXNjZW5kYW50c0FmZmVjdGVkQnlCYWNrd2FyZFBvc2l0aW9uYWxSdWxlcygpCi17
Ci0gICAgZW5zdXJlRWxlbWVudFJhcmVEYXRhKCkuc2V0RGVzY2VuZGFudHNBZmZlY3RlZEJ5QmFj
a3dhcmRQb3NpdGlvbmFsUnVsZXModHJ1ZSk7Ci19Ci0KLXZvaWQgRWxlbWVudDo6c2V0Q2hpbGRy
ZW5BZmZlY3RlZEJ5UHJvcGVydHlCYXNlZEJhY2t3YXJkUG9zaXRpb25hbFJ1bGVzKCkKLXsKLSAg
ICBlbnN1cmVFbGVtZW50UmFyZURhdGEoKS5zZXRDaGlsZHJlbkFmZmVjdGVkQnlQcm9wZXJ0eUJh
c2VkQmFja3dhcmRQb3NpdGlvbmFsUnVsZXModHJ1ZSk7Ci19Ci0KIHZvaWQgRWxlbWVudDo6c2V0
Q2hpbGRJbmRleCh1bnNpZ25lZCBpbmRleCkKIHsKICAgICBFbGVtZW50UmFyZURhdGEmIHJhcmVE
YXRhID0gZW5zdXJlRWxlbWVudFJhcmVEYXRhKCk7CkBAIC0zMjU2LDcyICszMjExLDE2IEBAIHZv
aWQgRWxlbWVudDo6c2V0Q2hpbGRJbmRleCh1bnNpZ25lZCBpbmQKIAogYm9vbCBFbGVtZW50Ojpo
YXNGbGFnc1NldER1cmluZ1N0eWxpbmdPZkNoaWxkcmVuKCkgY29uc3QKIHsKLSAgICBpZiAoY2hp
bGRyZW5BZmZlY3RlZEJ5SG92ZXIoKSB8fCBjaGlsZHJlbkFmZmVjdGVkQnlGaXJzdENoaWxkUnVs
ZXMoKSB8fCBjaGlsZHJlbkFmZmVjdGVkQnlMYXN0Q2hpbGRSdWxlcygpKQotICAgICAgICByZXR1
cm4gdHJ1ZTsKLQotICAgIGlmICghaGFzUmFyZURhdGEoKSkKLSAgICAgICAgcmV0dXJuIGZhbHNl
OwotICAgIHJldHVybiByYXJlRGF0YVN0eWxlQWZmZWN0ZWRCeUFjdGl2ZSgpCi0gICAgICAgIHx8
IHJhcmVEYXRhQ2hpbGRyZW5BZmZlY3RlZEJ5RHJhZygpCi0gICAgICAgIHx8IHJhcmVEYXRhQ2hp
bGRyZW5BZmZlY3RlZEJ5Rm9yd2FyZFBvc2l0aW9uYWxSdWxlcygpCi0gICAgICAgIHx8IHJhcmVE
YXRhRGVzY2VuZGFudHNBZmZlY3RlZEJ5Rm9yd2FyZFBvc2l0aW9uYWxSdWxlcygpCi0gICAgICAg
IHx8IHJhcmVEYXRhQ2hpbGRyZW5BZmZlY3RlZEJ5QmFja3dhcmRQb3NpdGlvbmFsUnVsZXMoKQot
ICAgICAgICB8fCByYXJlRGF0YURlc2NlbmRhbnRzQWZmZWN0ZWRCeUJhY2t3YXJkUG9zaXRpb25h
bFJ1bGVzKCkKLSAgICAgICAgfHwgcmFyZURhdGFDaGlsZHJlbkFmZmVjdGVkQnlQcm9wZXJ0eUJh
c2VkQmFja3dhcmRQb3NpdGlvbmFsUnVsZXMoKTsKLX0KLQotYm9vbCBFbGVtZW50OjpyYXJlRGF0
YVN0eWxlQWZmZWN0ZWRCeUVtcHR5KCkgY29uc3QKLXsKLSAgICBBU1NFUlQoaGFzUmFyZURhdGEo
KSk7Ci0gICAgcmV0dXJuIGVsZW1lbnRSYXJlRGF0YSgpLT5zdHlsZUFmZmVjdGVkQnlFbXB0eSgp
OwotfQotCi1ib29sIEVsZW1lbnQ6OnJhcmVEYXRhU3R5bGVBZmZlY3RlZEJ5Rm9jdXNXaXRoaW4o
KSBjb25zdAotewotICAgIEFTU0VSVChoYXNSYXJlRGF0YSgpKTsKLSAgICByZXR1cm4gZWxlbWVu
dFJhcmVEYXRhKCktPnN0eWxlQWZmZWN0ZWRCeUZvY3VzV2l0aGluKCk7Ci19Ci0KLWJvb2wgRWxl
bWVudDo6cmFyZURhdGFTdHlsZUFmZmVjdGVkQnlBY3RpdmUoKSBjb25zdAotewotICAgIEFTU0VS
VChoYXNSYXJlRGF0YSgpKTsKLSAgICByZXR1cm4gZWxlbWVudFJhcmVEYXRhKCktPnN0eWxlQWZm
ZWN0ZWRCeUFjdGl2ZSgpOwotfQotCi1ib29sIEVsZW1lbnQ6OnJhcmVEYXRhQ2hpbGRyZW5BZmZl
Y3RlZEJ5RHJhZygpIGNvbnN0Ci17Ci0gICAgQVNTRVJUKGhhc1JhcmVEYXRhKCkpOwotICAgIHJl
dHVybiBlbGVtZW50UmFyZURhdGEoKS0+Y2hpbGRyZW5BZmZlY3RlZEJ5RHJhZygpOwotfQotCi1i
b29sIEVsZW1lbnQ6OnJhcmVEYXRhQ2hpbGRyZW5BZmZlY3RlZEJ5Rm9yd2FyZFBvc2l0aW9uYWxS
dWxlcygpIGNvbnN0Ci17Ci0gICAgQVNTRVJUKGhhc1JhcmVEYXRhKCkpOwotICAgIHJldHVybiBl
bGVtZW50UmFyZURhdGEoKS0+Y2hpbGRyZW5BZmZlY3RlZEJ5Rm9yd2FyZFBvc2l0aW9uYWxSdWxl
cygpOwotfQotCi1ib29sIEVsZW1lbnQ6OnJhcmVEYXRhRGVzY2VuZGFudHNBZmZlY3RlZEJ5Rm9y
d2FyZFBvc2l0aW9uYWxSdWxlcygpIGNvbnN0Ci17Ci0gICAgQVNTRVJUKGhhc1JhcmVEYXRhKCkp
OwotICAgIHJldHVybiBlbGVtZW50UmFyZURhdGEoKS0+ZGVzY2VuZGFudHNBZmZlY3RlZEJ5Rm9y
d2FyZFBvc2l0aW9uYWxSdWxlcygpOwotfQotCi1ib29sIEVsZW1lbnQ6OnJhcmVEYXRhQ2hpbGRy
ZW5BZmZlY3RlZEJ5QmFja3dhcmRQb3NpdGlvbmFsUnVsZXMoKSBjb25zdAotewotICAgIEFTU0VS
VChoYXNSYXJlRGF0YSgpKTsKLSAgICByZXR1cm4gZWxlbWVudFJhcmVEYXRhKCktPmNoaWxkcmVu
QWZmZWN0ZWRCeUJhY2t3YXJkUG9zaXRpb25hbFJ1bGVzKCk7Ci19Ci0KLWJvb2wgRWxlbWVudDo6
cmFyZURhdGFEZXNjZW5kYW50c0FmZmVjdGVkQnlCYWNrd2FyZFBvc2l0aW9uYWxSdWxlcygpIGNv
bnN0Ci17Ci0gICAgQVNTRVJUKGhhc1JhcmVEYXRhKCkpOwotICAgIHJldHVybiBlbGVtZW50UmFy
ZURhdGEoKS0+ZGVzY2VuZGFudHNBZmZlY3RlZEJ5QmFja3dhcmRQb3NpdGlvbmFsUnVsZXMoKTsK
LX0KLQotYm9vbCBFbGVtZW50OjpyYXJlRGF0YUNoaWxkcmVuQWZmZWN0ZWRCeVByb3BlcnR5QmFz
ZWRCYWNrd2FyZFBvc2l0aW9uYWxSdWxlcygpIGNvbnN0Ci17Ci0gICAgQVNTRVJUKGhhc1JhcmVE
YXRhKCkpOwotICAgIHJldHVybiBlbGVtZW50UmFyZURhdGEoKS0+Y2hpbGRyZW5BZmZlY3RlZEJ5
UHJvcGVydHlCYXNlZEJhY2t3YXJkUG9zaXRpb25hbFJ1bGVzKCk7CisgICAgcmV0dXJuIHN0eWxl
QWZmZWN0ZWRCeUFjdGl2ZSgpCisgICAgICAgIHx8IGNoaWxkcmVuQWZmZWN0ZWRCeUhvdmVyKCkK
KyAgICAgICAgfHwgY2hpbGRyZW5BZmZlY3RlZEJ5Rmlyc3RDaGlsZFJ1bGVzKCkKKyAgICAgICAg
fHwgY2hpbGRyZW5BZmZlY3RlZEJ5TGFzdENoaWxkUnVsZXMoKQorICAgICAgICB8fCBjaGlsZHJl
bkFmZmVjdGVkQnlEcmFnKCkKKyAgICAgICAgfHwgY2hpbGRyZW5BZmZlY3RlZEJ5Rm9yd2FyZFBv
c2l0aW9uYWxSdWxlcygpCisgICAgICAgIHx8IGRlc2NlbmRhbnRzQWZmZWN0ZWRCeUZvcndhcmRQ
b3NpdGlvbmFsUnVsZXMoKQorICAgICAgICB8fCBjaGlsZHJlbkFmZmVjdGVkQnlCYWNrd2FyZFBv
c2l0aW9uYWxSdWxlcygpCisgICAgICAgIHx8IGRlc2NlbmRhbnRzQWZmZWN0ZWRCeUJhY2t3YXJk
UG9zaXRpb25hbFJ1bGVzKCkKKyAgICAgICAgfHwgY2hpbGRyZW5BZmZlY3RlZEJ5UHJvcGVydHlC
YXNlZEJhY2t3YXJkUG9zaXRpb25hbFJ1bGVzKCk7CiB9CiAKIHVuc2lnbmVkIEVsZW1lbnQ6OnJh
cmVEYXRhQ2hpbGRJbmRleCgpIGNvbnN0CkBAIC0zOTU0LDYgKzM4NTMsOSBAQCB2b2lkIEVsZW1l
bnQ6OnJlc2V0Q29tcHV0ZWRTdHlsZSgpCiAKIHZvaWQgRWxlbWVudDo6cmVzZXRTdHlsZVJlbGF0
aW9ucygpCiB7CisgICAgLy8gRklYTUU6IE1ha2UgdGhpcyBjb2RlIG1vcmUgY29uc2lzdGVudC4K
KyAgICBjbGVhckZsYWcoU3R5bGVBZmZlY3RlZEJ5Rm9jdXNXaXRoaW5GbGFnKTsKKyAgICBjbGVh
clN0eWxlRmxhZ3MoKTsKICAgICBpZiAoIWhhc1JhcmVEYXRhKCkpCiAgICAgICAgIHJldHVybjsK
ICAgICBlbGVtZW50UmFyZURhdGEoKS0+cmVzZXRTdHlsZVJlbGF0aW9ucygpOwpJbmRleDogU291
cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9k
b20vRWxlbWVudC5oCShyZXZpc2lvbiAyNDg0NjIpCisrKyBTb3VyY2UvV2ViQ29yZS9kb20vRWxl
bWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMzksMzcgKzMzOSwzNyBAQCBwdWJsaWM6CiAgICAg
Ym9vbCBuZWVkc1N0eWxlSW52YWxpZGF0aW9uKCkgY29uc3Q7CiAKICAgICAvLyBNZXRob2RzIGZv
ciBpbmRpY2F0aW5nIHRoZSBzdHlsZSBpcyBhZmZlY3RlZCBieSBkeW5hbWljIHVwZGF0ZXMgKGUu
Zy4sIGNoaWxkcmVuIGNoYW5naW5nLCBvdXIgcG9zaXRpb24gY2hhbmdpbmcgaW4gb3VyIHNpYmxp
bmcgbGlzdCwgZXRjLikKLSAgICBib29sIHN0eWxlQWZmZWN0ZWRCeUFjdGl2ZSgpIGNvbnN0IHsg
cmV0dXJuIGhhc1JhcmVEYXRhKCkgJiYgcmFyZURhdGFTdHlsZUFmZmVjdGVkQnlBY3RpdmUoKTsg
fQotICAgIGJvb2wgc3R5bGVBZmZlY3RlZEJ5RW1wdHkoKSBjb25zdCB7IHJldHVybiBoYXNSYXJl
RGF0YSgpICYmIHJhcmVEYXRhU3R5bGVBZmZlY3RlZEJ5RW1wdHkoKTsgfQotICAgIGJvb2wgc3R5
bGVBZmZlY3RlZEJ5Rm9jdXNXaXRoaW4oKSBjb25zdCB7IHJldHVybiBoYXNSYXJlRGF0YSgpICYm
IHJhcmVEYXRhU3R5bGVBZmZlY3RlZEJ5Rm9jdXNXaXRoaW4oKTsgfQorICAgIGJvb2wgc3R5bGVB
ZmZlY3RlZEJ5QWN0aXZlKCkgY29uc3QgeyByZXR1cm4gaGFzU3R5bGVGbGFnKEVsZW1lbnRTdHls
ZUZsYWc6OlN0eWxlQWZmZWN0ZWRCeUFjdGl2ZSk7IH0KKyAgICBib29sIHN0eWxlQWZmZWN0ZWRC
eUVtcHR5KCkgY29uc3QgeyByZXR1cm4gaGFzU3R5bGVGbGFnKEVsZW1lbnRTdHlsZUZsYWc6OlN0
eWxlQWZmZWN0ZWRCeUVtcHR5KTsgfQorICAgIGJvb2wgc3R5bGVBZmZlY3RlZEJ5Rm9jdXNXaXRo
aW4oKSBjb25zdCB7IHJldHVybiBnZXRGbGFnKFN0eWxlQWZmZWN0ZWRCeUZvY3VzV2l0aGluRmxh
Zyk7IH0KICAgICBib29sIGRlc2NlbmRhbnRzQWZmZWN0ZWRCeVByZXZpb3VzU2libGluZygpIGNv
bnN0IHsgcmV0dXJuIGdldEZsYWcoRGVzY2VuZGFudHNBZmZlY3RlZEJ5UHJldmlvdXNTaWJsaW5n
RmxhZyk7IH0KICAgICBib29sIGNoaWxkcmVuQWZmZWN0ZWRCeUhvdmVyKCkgY29uc3QgeyByZXR1
cm4gZ2V0RmxhZyhDaGlsZHJlbkFmZmVjdGVkQnlIb3ZlclJ1bGVzRmxhZyk7IH0KLSAgICBib29s
IGNoaWxkcmVuQWZmZWN0ZWRCeURyYWcoKSBjb25zdCB7IHJldHVybiBoYXNSYXJlRGF0YSgpICYm
IHJhcmVEYXRhQ2hpbGRyZW5BZmZlY3RlZEJ5RHJhZygpOyB9CisgICAgYm9vbCBjaGlsZHJlbkFm
ZmVjdGVkQnlEcmFnKCkgY29uc3QgeyByZXR1cm4gaGFzU3R5bGVGbGFnKEVsZW1lbnRTdHlsZUZs
YWc6OkNoaWxkcmVuQWZmZWN0ZWRCeURyYWcpOyB9CiAgICAgYm9vbCBjaGlsZHJlbkFmZmVjdGVk
QnlGaXJzdENoaWxkUnVsZXMoKSBjb25zdCB7IHJldHVybiBnZXRGbGFnKENoaWxkcmVuQWZmZWN0
ZWRCeUZpcnN0Q2hpbGRSdWxlc0ZsYWcpOyB9CiAgICAgYm9vbCBjaGlsZHJlbkFmZmVjdGVkQnlM
YXN0Q2hpbGRSdWxlcygpIGNvbnN0IHsgcmV0dXJuIGdldEZsYWcoQ2hpbGRyZW5BZmZlY3RlZEJ5
TGFzdENoaWxkUnVsZXNGbGFnKTsgfQotICAgIGJvb2wgY2hpbGRyZW5BZmZlY3RlZEJ5Rm9yd2Fy
ZFBvc2l0aW9uYWxSdWxlcygpIGNvbnN0IHsgcmV0dXJuIGhhc1JhcmVEYXRhKCkgJiYgcmFyZURh
dGFDaGlsZHJlbkFmZmVjdGVkQnlGb3J3YXJkUG9zaXRpb25hbFJ1bGVzKCk7IH0KLSAgICBib29s
IGRlc2NlbmRhbnRzQWZmZWN0ZWRCeUZvcndhcmRQb3NpdGlvbmFsUnVsZXMoKSBjb25zdCB7IHJl
dHVybiBoYXNSYXJlRGF0YSgpICYmIHJhcmVEYXRhRGVzY2VuZGFudHNBZmZlY3RlZEJ5Rm9yd2Fy
ZFBvc2l0aW9uYWxSdWxlcygpOyB9Ci0gICAgYm9vbCBjaGlsZHJlbkFmZmVjdGVkQnlCYWNrd2Fy
ZFBvc2l0aW9uYWxSdWxlcygpIGNvbnN0IHsgcmV0dXJuIGhhc1JhcmVEYXRhKCkgJiYgcmFyZURh
dGFDaGlsZHJlbkFmZmVjdGVkQnlCYWNrd2FyZFBvc2l0aW9uYWxSdWxlcygpOyB9Ci0gICAgYm9v
bCBkZXNjZW5kYW50c0FmZmVjdGVkQnlCYWNrd2FyZFBvc2l0aW9uYWxSdWxlcygpIGNvbnN0IHsg
cmV0dXJuIGhhc1JhcmVEYXRhKCkgJiYgcmFyZURhdGFEZXNjZW5kYW50c0FmZmVjdGVkQnlCYWNr
d2FyZFBvc2l0aW9uYWxSdWxlcygpOyB9Ci0gICAgYm9vbCBjaGlsZHJlbkFmZmVjdGVkQnlQcm9w
ZXJ0eUJhc2VkQmFja3dhcmRQb3NpdGlvbmFsUnVsZXMoKSBjb25zdCB7IHJldHVybiBoYXNSYXJl
RGF0YSgpICYmIHJhcmVEYXRhQ2hpbGRyZW5BZmZlY3RlZEJ5UHJvcGVydHlCYXNlZEJhY2t3YXJk
UG9zaXRpb25hbFJ1bGVzKCk7IH0KKyAgICBib29sIGNoaWxkcmVuQWZmZWN0ZWRCeUZvcndhcmRQ
b3NpdGlvbmFsUnVsZXMoKSBjb25zdCB7IHJldHVybiBoYXNTdHlsZUZsYWcoRWxlbWVudFN0eWxl
RmxhZzo6Q2hpbGRyZW5BZmZlY3RlZEJ5Rm9yd2FyZFBvc2l0aW9uYWxSdWxlcyk7IH0KKyAgICBi
b29sIGRlc2NlbmRhbnRzQWZmZWN0ZWRCeUZvcndhcmRQb3NpdGlvbmFsUnVsZXMoKSBjb25zdCB7
IHJldHVybiBoYXNTdHlsZUZsYWcoRWxlbWVudFN0eWxlRmxhZzo6RGVzY2VuZGFudHNBZmZlY3Rl
ZEJ5Rm9yd2FyZFBvc2l0aW9uYWxSdWxlcyk7IH0KKyAgICBib29sIGNoaWxkcmVuQWZmZWN0ZWRC
eUJhY2t3YXJkUG9zaXRpb25hbFJ1bGVzKCkgY29uc3QgeyByZXR1cm4gaGFzU3R5bGVGbGFnKEVs
ZW1lbnRTdHlsZUZsYWc6OkNoaWxkcmVuQWZmZWN0ZWRCeUJhY2t3YXJkUG9zaXRpb25hbFJ1bGVz
KTsgfQorICAgIGJvb2wgZGVzY2VuZGFudHNBZmZlY3RlZEJ5QmFja3dhcmRQb3NpdGlvbmFsUnVs
ZXMoKSBjb25zdCB7IHJldHVybiBoYXNTdHlsZUZsYWcoRWxlbWVudFN0eWxlRmxhZzo6RGVzY2Vu
ZGFudHNBZmZlY3RlZEJ5QmFja3dhcmRQb3NpdGlvbmFsUnVsZXMpOyB9CisgICAgYm9vbCBjaGls
ZHJlbkFmZmVjdGVkQnlQcm9wZXJ0eUJhc2VkQmFja3dhcmRQb3NpdGlvbmFsUnVsZXMoKSBjb25z
dCB7IHJldHVybiBoYXNTdHlsZUZsYWcoRWxlbWVudFN0eWxlRmxhZzo6Q2hpbGRyZW5BZmZlY3Rl
ZEJ5UHJvcGVydHlCYXNlZEJhY2t3YXJkUG9zaXRpb25hbFJ1bGVzKTsgfQogICAgIGJvb2wgYWZm
ZWN0c05leHRTaWJsaW5nRWxlbWVudFN0eWxlKCkgY29uc3QgeyByZXR1cm4gZ2V0RmxhZyhBZmZl
Y3RzTmV4dFNpYmxpbmdFbGVtZW50U3R5bGUpOyB9CiAgICAgdW5zaWduZWQgY2hpbGRJbmRleCgp
IGNvbnN0IHsgcmV0dXJuIGhhc1JhcmVEYXRhKCkgPyByYXJlRGF0YUNoaWxkSW5kZXgoKSA6IDA7
IH0KIAogICAgIGJvb2wgaGFzRmxhZ3NTZXREdXJpbmdTdHlsaW5nT2ZDaGlsZHJlbigpIGNvbnN0
OwogCi0gICAgdm9pZCBzZXRTdHlsZUFmZmVjdGVkQnlFbXB0eSgpOwotICAgIHZvaWQgc2V0U3R5
bGVBZmZlY3RlZEJ5Rm9jdXNXaXRoaW4oKTsKLSAgICB2b2lkIHNldERlc2NlbmRhbnRzQWZmZWN0
ZWRCeVByZXZpb3VzU2libGluZygpIGNvbnN0IHsgcmV0dXJuIHNldEZsYWcoRGVzY2VuZGFudHNB
ZmZlY3RlZEJ5UHJldmlvdXNTaWJsaW5nRmxhZyk7IH0KKyAgICB2b2lkIHNldFN0eWxlQWZmZWN0
ZWRCeUVtcHR5KCkgeyBzZXRTdHlsZUZsYWcoRWxlbWVudFN0eWxlRmxhZzo6U3R5bGVBZmZlY3Rl
ZEJ5RW1wdHkpOyB9CisgICAgdm9pZCBzZXRTdHlsZUFmZmVjdGVkQnlGb2N1c1dpdGhpbigpIHsg
c2V0RmxhZyhTdHlsZUFmZmVjdGVkQnlGb2N1c1dpdGhpbkZsYWcpOyB9CisgICAgdm9pZCBzZXRE
ZXNjZW5kYW50c0FmZmVjdGVkQnlQcmV2aW91c1NpYmxpbmcoKSB7IHNldEZsYWcoRGVzY2VuZGFu
dHNBZmZlY3RlZEJ5UHJldmlvdXNTaWJsaW5nRmxhZyk7IH0KICAgICB2b2lkIHNldENoaWxkcmVu
QWZmZWN0ZWRCeUhvdmVyKCkgeyBzZXRGbGFnKENoaWxkcmVuQWZmZWN0ZWRCeUhvdmVyUnVsZXNG
bGFnKTsgfQotICAgIHZvaWQgc2V0U3R5bGVBZmZlY3RlZEJ5QWN0aXZlKCk7Ci0gICAgdm9pZCBz
ZXRDaGlsZHJlbkFmZmVjdGVkQnlEcmFnKCk7CisgICAgdm9pZCBzZXRTdHlsZUFmZmVjdGVkQnlB
Y3RpdmUoKSB7IHNldFN0eWxlRmxhZyhFbGVtZW50U3R5bGVGbGFnOjpTdHlsZUFmZmVjdGVkQnlB
Y3RpdmUpOyB9CisgICAgdm9pZCBzZXRDaGlsZHJlbkFmZmVjdGVkQnlEcmFnKCkgeyBzZXRTdHls
ZUZsYWcoRWxlbWVudFN0eWxlRmxhZzo6Q2hpbGRyZW5BZmZlY3RlZEJ5RHJhZyk7IH0KICAgICB2
b2lkIHNldENoaWxkcmVuQWZmZWN0ZWRCeUZpcnN0Q2hpbGRSdWxlcygpIHsgc2V0RmxhZyhDaGls
ZHJlbkFmZmVjdGVkQnlGaXJzdENoaWxkUnVsZXNGbGFnKTsgfQogICAgIHZvaWQgc2V0Q2hpbGRy
ZW5BZmZlY3RlZEJ5TGFzdENoaWxkUnVsZXMoKSB7IHNldEZsYWcoQ2hpbGRyZW5BZmZlY3RlZEJ5
TGFzdENoaWxkUnVsZXNGbGFnKTsgfQotICAgIHZvaWQgc2V0Q2hpbGRyZW5BZmZlY3RlZEJ5Rm9y
d2FyZFBvc2l0aW9uYWxSdWxlcygpOwotICAgIHZvaWQgc2V0RGVzY2VuZGFudHNBZmZlY3RlZEJ5
Rm9yd2FyZFBvc2l0aW9uYWxSdWxlcygpOwotICAgIHZvaWQgc2V0Q2hpbGRyZW5BZmZlY3RlZEJ5
QmFja3dhcmRQb3NpdGlvbmFsUnVsZXMoKTsKLSAgICB2b2lkIHNldERlc2NlbmRhbnRzQWZmZWN0
ZWRCeUJhY2t3YXJkUG9zaXRpb25hbFJ1bGVzKCk7Ci0gICAgdm9pZCBzZXRDaGlsZHJlbkFmZmVj
dGVkQnlQcm9wZXJ0eUJhc2VkQmFja3dhcmRQb3NpdGlvbmFsUnVsZXMoKTsKKyAgICB2b2lkIHNl
dENoaWxkcmVuQWZmZWN0ZWRCeUZvcndhcmRQb3NpdGlvbmFsUnVsZXMoKSB7IHNldFN0eWxlRmxh
ZyhFbGVtZW50U3R5bGVGbGFnOjpDaGlsZHJlbkFmZmVjdGVkQnlGb3J3YXJkUG9zaXRpb25hbFJ1
bGVzKTsgfQorICAgIHZvaWQgc2V0RGVzY2VuZGFudHNBZmZlY3RlZEJ5Rm9yd2FyZFBvc2l0aW9u
YWxSdWxlcygpIHsgc2V0U3R5bGVGbGFnKEVsZW1lbnRTdHlsZUZsYWc6OkRlc2NlbmRhbnRzQWZm
ZWN0ZWRCeUZvcndhcmRQb3NpdGlvbmFsUnVsZXMpOyB9CisgICAgdm9pZCBzZXRDaGlsZHJlbkFm
ZmVjdGVkQnlCYWNrd2FyZFBvc2l0aW9uYWxSdWxlcygpIHsgc2V0U3R5bGVGbGFnKEVsZW1lbnRT
dHlsZUZsYWc6OkNoaWxkcmVuQWZmZWN0ZWRCeUJhY2t3YXJkUG9zaXRpb25hbFJ1bGVzKTsgfQor
ICAgIHZvaWQgc2V0RGVzY2VuZGFudHNBZmZlY3RlZEJ5QmFja3dhcmRQb3NpdGlvbmFsUnVsZXMo
KSB7IHNldFN0eWxlRmxhZyhFbGVtZW50U3R5bGVGbGFnOjpEZXNjZW5kYW50c0FmZmVjdGVkQnlC
YWNrd2FyZFBvc2l0aW9uYWxSdWxlcyk7IH0KKyAgICB2b2lkIHNldENoaWxkcmVuQWZmZWN0ZWRC
eVByb3BlcnR5QmFzZWRCYWNrd2FyZFBvc2l0aW9uYWxSdWxlcygpIHsgc2V0U3R5bGVGbGFnKEVs
ZW1lbnRTdHlsZUZsYWc6OkNoaWxkcmVuQWZmZWN0ZWRCeVByb3BlcnR5QmFzZWRCYWNrd2FyZFBv
c2l0aW9uYWxSdWxlcyk7IH0KICAgICB2b2lkIHNldEFmZmVjdHNOZXh0U2libGluZ0VsZW1lbnRT
dHlsZSgpIHsgc2V0RmxhZyhBZmZlY3RzTmV4dFNpYmxpbmdFbGVtZW50U3R5bGUpOyB9CiAgICAg
dm9pZCBzZXRTdHlsZUlzQWZmZWN0ZWRCeVByZXZpb3VzU2libGluZygpIHsgc2V0RmxhZyhTdHls
ZUlzQWZmZWN0ZWRCeVByZXZpb3VzU2libGluZyk7IH0KICAgICB2b2lkIHNldENoaWxkSW5kZXgo
dW5zaWduZWQpOwpAQCAtNzAwLDE3ICs3MDAsNiBAQCBwcml2YXRlOgogICAgIGNvbnN0IFJlbmRl
clN0eWxlJiByZXNvbHZlQ29tcHV0ZWRTdHlsZSgpOwogICAgIGNvbnN0IFJlbmRlclN0eWxlJiBy
ZXNvbHZlUHNldWRvRWxlbWVudFN0eWxlKFBzZXVkb0lkKTsKIAotICAgIGJvb2wgcmFyZURhdGFT
dHlsZUFmZmVjdGVkQnlFbXB0eSgpIGNvbnN0OwotICAgIGJvb2wgcmFyZURhdGFTdHlsZUFmZmVj
dGVkQnlGb2N1c1dpdGhpbigpIGNvbnN0OwotICAgIGJvb2wgcmFyZURhdGFDaGlsZHJlbkFmZmVj
dGVkQnlIb3ZlcigpIGNvbnN0OwotICAgIGJvb2wgcmFyZURhdGFTdHlsZUFmZmVjdGVkQnlBY3Rp
dmUoKSBjb25zdDsKLSAgICBib29sIHJhcmVEYXRhQ2hpbGRyZW5BZmZlY3RlZEJ5RHJhZygpIGNv
bnN0OwotICAgIGJvb2wgcmFyZURhdGFDaGlsZHJlbkFmZmVjdGVkQnlMYXN0Q2hpbGRSdWxlcygp
IGNvbnN0OwotICAgIGJvb2wgcmFyZURhdGFDaGlsZHJlbkFmZmVjdGVkQnlGb3J3YXJkUG9zaXRp
b25hbFJ1bGVzKCkgY29uc3Q7Ci0gICAgYm9vbCByYXJlRGF0YURlc2NlbmRhbnRzQWZmZWN0ZWRC
eUZvcndhcmRQb3NpdGlvbmFsUnVsZXMoKSBjb25zdDsKLSAgICBib29sIHJhcmVEYXRhQ2hpbGRy
ZW5BZmZlY3RlZEJ5QmFja3dhcmRQb3NpdGlvbmFsUnVsZXMoKSBjb25zdDsKLSAgICBib29sIHJh
cmVEYXRhRGVzY2VuZGFudHNBZmZlY3RlZEJ5QmFja3dhcmRQb3NpdGlvbmFsUnVsZXMoKSBjb25z
dDsKLSAgICBib29sIHJhcmVEYXRhQ2hpbGRyZW5BZmZlY3RlZEJ5UHJvcGVydHlCYXNlZEJhY2t3
YXJkUG9zaXRpb25hbFJ1bGVzKCkgY29uc3Q7CiAgICAgdW5zaWduZWQgcmFyZURhdGFDaGlsZElu
ZGV4KCkgY29uc3Q7CiAKICAgICBTcGVsbGNoZWNrQXR0cmlidXRlU3RhdGUgc3BlbGxjaGVja0F0
dHJpYnV0ZVN0YXRlKCkgY29uc3Q7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudFJh
cmVEYXRhLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnRSYXJlRGF0
YS5oCShyZXZpc2lvbiAyNDg0NjIpCisrKyBTb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudFJhcmVE
YXRhLmgJKHdvcmtpbmcgY29weSkKQEAgLTQyLDcgKzQyLDcgQEAgaW5saW5lIEludFNpemUgZGVm
YXVsdE1pbmltdW1TaXplRm9yUmVzaQogCiBjbGFzcyBFbGVtZW50UmFyZURhdGEgOiBwdWJsaWMg
Tm9kZVJhcmVEYXRhIHsKIHB1YmxpYzoKLSAgICBleHBsaWNpdCBFbGVtZW50UmFyZURhdGEoUmVu
ZGVyRWxlbWVudCopOworICAgIGV4cGxpY2l0IEVsZW1lbnRSYXJlRGF0YSgpOwogICAgIH5FbGVt
ZW50UmFyZURhdGEoKTsKIAogICAgIHZvaWQgc2V0QmVmb3JlUHNldWRvRWxlbWVudChSZWZQdHI8
UHNldWRvRWxlbWVudD4mJik7CkBAIC01OSwzNiArNTksMTEgQEAgcHVibGljOgogICAgIGJvb2wg
dGFiSW5kZXhTZXRFeHBsaWNpdGx5KCkgY29uc3QgeyByZXR1cm4gbV90YWJJbmRleFdhc1NldEV4
cGxpY2l0bHk7IH0KICAgICB2b2lkIGNsZWFyVGFiSW5kZXhFeHBsaWNpdGx5KCkgeyBtX3RhYklu
ZGV4ID0gMDsgbV90YWJJbmRleFdhc1NldEV4cGxpY2l0bHkgPSBmYWxzZTsgfQogCi0gICAgYm9v
bCBzdHlsZUFmZmVjdGVkQnlBY3RpdmUoKSBjb25zdCB7IHJldHVybiBtX3N0eWxlQWZmZWN0ZWRC
eUFjdGl2ZTsgfQotICAgIHZvaWQgc2V0U3R5bGVBZmZlY3RlZEJ5QWN0aXZlKGJvb2wgdmFsdWUp
IHsgbV9zdHlsZUFmZmVjdGVkQnlBY3RpdmUgPSB2YWx1ZTsgfQotCi0gICAgYm9vbCBzdHlsZUFm
ZmVjdGVkQnlFbXB0eSgpIGNvbnN0IHsgcmV0dXJuIG1fc3R5bGVBZmZlY3RlZEJ5RW1wdHk7IH0K
LSAgICB2b2lkIHNldFN0eWxlQWZmZWN0ZWRCeUVtcHR5KGJvb2wgdmFsdWUpIHsgbV9zdHlsZUFm
ZmVjdGVkQnlFbXB0eSA9IHZhbHVlOyB9Ci0KLSAgICBib29sIHN0eWxlQWZmZWN0ZWRCeUZvY3Vz
V2l0aGluKCkgY29uc3QgeyByZXR1cm4gbV9zdHlsZUFmZmVjdGVkQnlGb2N1c1dpdGhpbjsgfQot
ICAgIHZvaWQgc2V0U3R5bGVBZmZlY3RlZEJ5Rm9jdXNXaXRoaW4oYm9vbCB2YWx1ZSkgeyBtX3N0
eWxlQWZmZWN0ZWRCeUZvY3VzV2l0aGluID0gdmFsdWU7IH0KLQogI2lmIEVOQUJMRShGVUxMU0NS
RUVOX0FQSSkKICAgICBib29sIGNvbnRhaW5zRnVsbFNjcmVlbkVsZW1lbnQoKSB7IHJldHVybiBt
X2NvbnRhaW5zRnVsbFNjcmVlbkVsZW1lbnQ7IH0KICAgICB2b2lkIHNldENvbnRhaW5zRnVsbFNj
cmVlbkVsZW1lbnQoYm9vbCB2YWx1ZSkgeyBtX2NvbnRhaW5zRnVsbFNjcmVlbkVsZW1lbnQgPSB2
YWx1ZTsgfQogI2VuZGlmCiAKLSAgICBib29sIGNoaWxkcmVuQWZmZWN0ZWRCeURyYWcoKSBjb25z
dCB7IHJldHVybiBtX2NoaWxkcmVuQWZmZWN0ZWRCeURyYWc7IH0KLSAgICB2b2lkIHNldENoaWxk
cmVuQWZmZWN0ZWRCeURyYWcoYm9vbCB2YWx1ZSkgeyBtX2NoaWxkcmVuQWZmZWN0ZWRCeURyYWcg
PSB2YWx1ZTsgfQotCi0gICAgYm9vbCBjaGlsZHJlbkFmZmVjdGVkQnlMYXN0Q2hpbGRSdWxlcygp
IGNvbnN0IHsgcmV0dXJuIG1fY2hpbGRyZW5BZmZlY3RlZEJ5TGFzdENoaWxkUnVsZXM7IH0KLSAg
ICB2b2lkIHNldENoaWxkcmVuQWZmZWN0ZWRCeUxhc3RDaGlsZFJ1bGVzKGJvb2wgdmFsdWUpIHsg
bV9jaGlsZHJlbkFmZmVjdGVkQnlMYXN0Q2hpbGRSdWxlcyA9IHZhbHVlOyB9Ci0gICAgYm9vbCBj
aGlsZHJlbkFmZmVjdGVkQnlGb3J3YXJkUG9zaXRpb25hbFJ1bGVzKCkgY29uc3QgeyByZXR1cm4g
bV9jaGlsZHJlbkFmZmVjdGVkQnlGb3J3YXJkUG9zaXRpb25hbFJ1bGVzOyB9Ci0gICAgdm9pZCBz
ZXRDaGlsZHJlbkFmZmVjdGVkQnlGb3J3YXJkUG9zaXRpb25hbFJ1bGVzKGJvb2wgdmFsdWUpIHsg
bV9jaGlsZHJlbkFmZmVjdGVkQnlGb3J3YXJkUG9zaXRpb25hbFJ1bGVzID0gdmFsdWU7IH0KLSAg
ICBib29sIGRlc2NlbmRhbnRzQWZmZWN0ZWRCeUZvcndhcmRQb3NpdGlvbmFsUnVsZXMoKSBjb25z
dCB7IHJldHVybiBtX2Rlc2NlbmRhbnRzQWZmZWN0ZWRCeUZvcndhcmRQb3NpdGlvbmFsUnVsZXM7
IH0KLSAgICB2b2lkIHNldERlc2NlbmRhbnRzQWZmZWN0ZWRCeUZvcndhcmRQb3NpdGlvbmFsUnVs
ZXMoYm9vbCB2YWx1ZSkgeyBtX2Rlc2NlbmRhbnRzQWZmZWN0ZWRCeUZvcndhcmRQb3NpdGlvbmFs
UnVsZXMgPSB2YWx1ZTsgfQotICAgIGJvb2wgY2hpbGRyZW5BZmZlY3RlZEJ5QmFja3dhcmRQb3Np
dGlvbmFsUnVsZXMoKSBjb25zdCB7IHJldHVybiBtX2NoaWxkcmVuQWZmZWN0ZWRCeUJhY2t3YXJk
UG9zaXRpb25hbFJ1bGVzOyB9Ci0gICAgdm9pZCBzZXRDaGlsZHJlbkFmZmVjdGVkQnlCYWNrd2Fy
ZFBvc2l0aW9uYWxSdWxlcyhib29sIHZhbHVlKSB7IG1fY2hpbGRyZW5BZmZlY3RlZEJ5QmFja3dh
cmRQb3NpdGlvbmFsUnVsZXMgPSB2YWx1ZTsgfQotICAgIGJvb2wgZGVzY2VuZGFudHNBZmZlY3Rl
ZEJ5QmFja3dhcmRQb3NpdGlvbmFsUnVsZXMoKSBjb25zdCB7IHJldHVybiBtX2Rlc2NlbmRhbnRz
QWZmZWN0ZWRCeUJhY2t3YXJkUG9zaXRpb25hbFJ1bGVzOyB9Ci0gICAgdm9pZCBzZXREZXNjZW5k
YW50c0FmZmVjdGVkQnlCYWNrd2FyZFBvc2l0aW9uYWxSdWxlcyhib29sIHZhbHVlKSB7IG1fZGVz
Y2VuZGFudHNBZmZlY3RlZEJ5QmFja3dhcmRQb3NpdGlvbmFsUnVsZXMgPSB2YWx1ZTsgfQotICAg
IGJvb2wgY2hpbGRyZW5BZmZlY3RlZEJ5UHJvcGVydHlCYXNlZEJhY2t3YXJkUG9zaXRpb25hbFJ1
bGVzKCkgY29uc3QgeyByZXR1cm4gbV9jaGlsZHJlbkFmZmVjdGVkQnlQcm9wZXJ0eUJhc2VkQmFj
a3dhcmRQb3NpdGlvbmFsUnVsZXM7IH0KLSAgICB2b2lkIHNldENoaWxkcmVuQWZmZWN0ZWRCeVBy
b3BlcnR5QmFzZWRCYWNrd2FyZFBvc2l0aW9uYWxSdWxlcyhib29sIHZhbHVlKSB7IG1fY2hpbGRy
ZW5BZmZlY3RlZEJ5UHJvcGVydHlCYXNlZEJhY2t3YXJkUG9zaXRpb25hbFJ1bGVzID0gdmFsdWU7
IH0KLQogICAgIHVuc2lnbmVkIGNoaWxkSW5kZXgoKSBjb25zdCB7IHJldHVybiBtX2NoaWxkSW5k
ZXg7IH0KICAgICB2b2lkIHNldENoaWxkSW5kZXgodW5zaWduZWQgaW5kZXgpIHsgbV9jaGlsZElu
ZGV4ID0gaW5kZXg7IH0KICAgICBzdGF0aWMgcHRyZGlmZl90IGNoaWxkSW5kZXhNZW1vcnlPZmZz
ZXQoKSB7IHJldHVybiBPQkpFQ1RfT0ZGU0VUT0YoRWxlbWVudFJhcmVEYXRhLCBtX2NoaWxkSW5k
ZXgpOyB9CkBAIC0xNDgsMTEgKzEyMyw2IEBAIHB1YmxpYzoKICAgICAgICAgYXV0byByZXN1bHQg
PSBOb2RlUmFyZURhdGE6OnVzZVR5cGVzKCk7CiAgICAgICAgIGlmIChtX3RhYkluZGV4V2FzU2V0
RXhwbGljaXRseSkKICAgICAgICAgICAgIHJlc3VsdC5hZGQoVXNlVHlwZTo6VGFiSW5kZXgpOwot
ICAgICAgICBpZiAobV9zdHlsZUFmZmVjdGVkQnlBY3RpdmUgfHwgbV9zdHlsZUFmZmVjdGVkQnlF
bXB0eSB8fCBtX3N0eWxlQWZmZWN0ZWRCeUZvY3VzV2l0aGluIHx8IG1fY2hpbGRyZW5BZmZlY3Rl
ZEJ5SG92ZXIKLSAgICAgICAgICAgIHx8IG1fY2hpbGRyZW5BZmZlY3RlZEJ5RHJhZyB8fCBtX2No
aWxkcmVuQWZmZWN0ZWRCeUxhc3RDaGlsZFJ1bGVzIHx8IG1fY2hpbGRyZW5BZmZlY3RlZEJ5Rm9y
d2FyZFBvc2l0aW9uYWxSdWxlcwotICAgICAgICAgICAgfHwgbV9kZXNjZW5kYW50c0FmZmVjdGVk
QnlGb3J3YXJkUG9zaXRpb25hbFJ1bGVzIHx8IG1fY2hpbGRyZW5BZmZlY3RlZEJ5QmFja3dhcmRQ
b3NpdGlvbmFsUnVsZXMKLSAgICAgICAgICAgIHx8IG1fZGVzY2VuZGFudHNBZmZlY3RlZEJ5QmFj
a3dhcmRQb3NpdGlvbmFsUnVsZXMgfHwgbV9jaGlsZHJlbkFmZmVjdGVkQnlQcm9wZXJ0eUJhc2Vk
QmFja3dhcmRQb3NpdGlvbmFsUnVsZXMpCi0gICAgICAgICAgICByZXN1bHQuYWRkKFVzZVR5cGU6
OlN0eWxlRmxhZ3MpOwogICAgICAgICBpZiAobV9taW5pbXVtU2l6ZUZvclJlc2l6aW5nICE9IGRl
ZmF1bHRNaW5pbXVtU2l6ZUZvclJlc2l6aW5nKCkpCiAgICAgICAgICAgICByZXN1bHQuYWRkKFVz
ZVR5cGU6Ok1pbmltdW1TaXplKTsKICAgICAgICAgaWYgKCFtX3NhdmVkTGF5ZXJTY3JvbGxQb3Np
dGlvbi5pc1plcm8oKSkKQEAgLTE4NSwyNiArMTU1LDEyIEBAIHByaXZhdGU6CiAgICAgaW50IG1f
dGFiSW5kZXg7CiAgICAgdW5zaWduZWQgc2hvcnQgbV9jaGlsZEluZGV4OwogICAgIHVuc2lnbmVk
IG1fdGFiSW5kZXhXYXNTZXRFeHBsaWNpdGx5IDogMTsKLSAgICB1bnNpZ25lZCBtX3N0eWxlQWZm
ZWN0ZWRCeUFjdGl2ZSA6IDE7Ci0gICAgdW5zaWduZWQgbV9zdHlsZUFmZmVjdGVkQnlFbXB0eSA6
IDE7Ci0gICAgdW5zaWduZWQgbV9zdHlsZUFmZmVjdGVkQnlGb2N1c1dpdGhpbiA6IDE7CiAjaWYg
RU5BQkxFKEZVTExTQ1JFRU5fQVBJKQogICAgIHVuc2lnbmVkIG1fY29udGFpbnNGdWxsU2NyZWVu
RWxlbWVudCA6IDE7CiAjZW5kaWYKICAgICB1bnNpZ25lZCBtX2hhc1BlbmRpbmdSZXNvdXJjZXMg
OiAxOwogICAgIHVuc2lnbmVkIG1faGFzQ1NTQW5pbWF0aW9uIDogMTsKICAgICB1bnNpZ25lZCBt
X2hhc0VsZW1lbnRJZGVudGlmaWVyIDogMTsKLSAgICB1bnNpZ25lZCBtX2NoaWxkcmVuQWZmZWN0
ZWRCeUhvdmVyIDogMTsKLSAgICB1bnNpZ25lZCBtX2NoaWxkcmVuQWZmZWN0ZWRCeURyYWcgOiAx
OwotICAgIC8vIEJpdHMgZm9yIGR5bmFtaWMgY2hpbGQgbWF0Y2hpbmcuCi0gICAgLy8gV2Ugb3B0
aW1pemUgZm9yIDpmaXJzdC1jaGlsZCBhbmQgOmxhc3QtY2hpbGQuIFRoZSBvdGhlciBwb3NpdGlv
bmFsIGNoaWxkIHNlbGVjdG9ycyBsaWtlIG50aC1jaGlsZCBvcgotICAgIC8vICotY2hpbGQtb2Yt
dHlwZSwgd2Ugd2lsbCBqdXN0IGdpdmUgdXAgYW5kIHJlLWV2YWx1YXRlIHdoZW5ldmVyIGNoaWxk
cmVuIGNoYW5nZSBhdCBhbGwuCi0gICAgdW5zaWduZWQgbV9jaGlsZHJlbkFmZmVjdGVkQnlMYXN0
Q2hpbGRSdWxlcyA6IDE7Ci0gICAgdW5zaWduZWQgbV9jaGlsZHJlbkFmZmVjdGVkQnlGb3J3YXJk
UG9zaXRpb25hbFJ1bGVzIDogMTsKLSAgICB1bnNpZ25lZCBtX2Rlc2NlbmRhbnRzQWZmZWN0ZWRC
eUZvcndhcmRQb3NpdGlvbmFsUnVsZXMgOiAxOwotICAgIHVuc2lnbmVkIG1fY2hpbGRyZW5BZmZl
Y3RlZEJ5QmFja3dhcmRQb3NpdGlvbmFsUnVsZXMgOiAxOwotICAgIHVuc2lnbmVkIG1fZGVzY2Vu
ZGFudHNBZmZlY3RlZEJ5QmFja3dhcmRQb3NpdGlvbmFsUnVsZXMgOiAxOwotICAgIHVuc2lnbmVk
IG1fY2hpbGRyZW5BZmZlY3RlZEJ5UHJvcGVydHlCYXNlZEJhY2t3YXJkUG9zaXRpb25hbFJ1bGVz
IDogMTsKIAogICAgIExheW91dFNpemUgbV9taW5pbXVtU2l6ZUZvclJlc2l6aW5nOwogICAgIElu
dFBvaW50IG1fc2F2ZWRMYXllclNjcm9sbFBvc2l0aW9uOwpAQCAtMjMzLDI4ICsxODksMTYgQEAg
cHJpdmF0ZToKICAgICB2b2lkIHJlbGVhc2VQc2V1ZG9FbGVtZW50KFBzZXVkb0VsZW1lbnQqKTsK
IH07CiAKLWlubGluZSBFbGVtZW50UmFyZURhdGE6OkVsZW1lbnRSYXJlRGF0YShSZW5kZXJFbGVt
ZW50KiByZW5kZXJlcikKLSAgICA6IE5vZGVSYXJlRGF0YShyZW5kZXJlcikKLSAgICAsIG1fdGFi
SW5kZXgoMCkKK2lubGluZSBFbGVtZW50UmFyZURhdGE6OkVsZW1lbnRSYXJlRGF0YSgpCisgICAg
OiBtX3RhYkluZGV4KDApCiAgICAgLCBtX2NoaWxkSW5kZXgoMCkKICAgICAsIG1fdGFiSW5kZXhX
YXNTZXRFeHBsaWNpdGx5KGZhbHNlKQotICAgICwgbV9zdHlsZUFmZmVjdGVkQnlBY3RpdmUoZmFs
c2UpCi0gICAgLCBtX3N0eWxlQWZmZWN0ZWRCeUVtcHR5KGZhbHNlKQotICAgICwgbV9zdHlsZUFm
ZmVjdGVkQnlGb2N1c1dpdGhpbihmYWxzZSkKICNpZiBFTkFCTEUoRlVMTFNDUkVFTl9BUEkpCiAg
ICAgLCBtX2NvbnRhaW5zRnVsbFNjcmVlbkVsZW1lbnQoZmFsc2UpCiAjZW5kaWYKICAgICAsIG1f
aGFzUGVuZGluZ1Jlc291cmNlcyhmYWxzZSkKICAgICAsIG1faGFzQ1NTQW5pbWF0aW9uKGZhbHNl
KQogICAgICwgbV9oYXNFbGVtZW50SWRlbnRpZmllcihmYWxzZSkKLSAgICAsIG1fY2hpbGRyZW5B
ZmZlY3RlZEJ5SG92ZXIoZmFsc2UpCi0gICAgLCBtX2NoaWxkcmVuQWZmZWN0ZWRCeURyYWcoZmFs
c2UpCi0gICAgLCBtX2NoaWxkcmVuQWZmZWN0ZWRCeUxhc3RDaGlsZFJ1bGVzKGZhbHNlKQotICAg
ICwgbV9jaGlsZHJlbkFmZmVjdGVkQnlGb3J3YXJkUG9zaXRpb25hbFJ1bGVzKGZhbHNlKQotICAg
ICwgbV9kZXNjZW5kYW50c0FmZmVjdGVkQnlGb3J3YXJkUG9zaXRpb25hbFJ1bGVzKGZhbHNlKQot
ICAgICwgbV9jaGlsZHJlbkFmZmVjdGVkQnlCYWNrd2FyZFBvc2l0aW9uYWxSdWxlcyhmYWxzZSkK
LSAgICAsIG1fZGVzY2VuZGFudHNBZmZlY3RlZEJ5QmFja3dhcmRQb3NpdGlvbmFsUnVsZXMoZmFs
c2UpCi0gICAgLCBtX2NoaWxkcmVuQWZmZWN0ZWRCeVByb3BlcnR5QmFzZWRCYWNrd2FyZFBvc2l0
aW9uYWxSdWxlcyhmYWxzZSkKICAgICAsIG1fbWluaW11bVNpemVGb3JSZXNpemluZyhkZWZhdWx0
TWluaW11bVNpemVGb3JSZXNpemluZygpKQogewogfQpAQCAtMjg1LDE3ICsyMjksNyBAQCBpbmxp
bmUgdm9pZCBFbGVtZW50UmFyZURhdGE6OnJlc2V0Q29tcHV0CiAKIGlubGluZSB2b2lkIEVsZW1l
bnRSYXJlRGF0YTo6cmVzZXRTdHlsZVJlbGF0aW9ucygpCiB7Ci0gICAgc2V0U3R5bGVBZmZlY3Rl
ZEJ5RW1wdHkoZmFsc2UpOwotICAgIHNldFN0eWxlQWZmZWN0ZWRCeUZvY3VzV2l0aGluKGZhbHNl
KTsKICAgICBzZXRDaGlsZEluZGV4KDApOwotICAgIHNldFN0eWxlQWZmZWN0ZWRCeUFjdGl2ZShm
YWxzZSk7Ci0gICAgc2V0Q2hpbGRyZW5BZmZlY3RlZEJ5RHJhZyhmYWxzZSk7Ci0gICAgc2V0Q2hp
bGRyZW5BZmZlY3RlZEJ5TGFzdENoaWxkUnVsZXMoZmFsc2UpOwotICAgIHNldENoaWxkcmVuQWZm
ZWN0ZWRCeUZvcndhcmRQb3NpdGlvbmFsUnVsZXMoZmFsc2UpOwotICAgIHNldERlc2NlbmRhbnRz
QWZmZWN0ZWRCeUZvcndhcmRQb3NpdGlvbmFsUnVsZXMoZmFsc2UpOwotICAgIHNldENoaWxkcmVu
QWZmZWN0ZWRCeUJhY2t3YXJkUG9zaXRpb25hbFJ1bGVzKGZhbHNlKTsKLSAgICBzZXREZXNjZW5k
YW50c0FmZmVjdGVkQnlCYWNrd2FyZFBvc2l0aW9uYWxSdWxlcyhmYWxzZSk7Ci0gICAgc2V0Q2hp
bGRyZW5BZmZlY3RlZEJ5UHJvcGVydHlCYXNlZEJhY2t3YXJkUG9zaXRpb25hbFJ1bGVzKGZhbHNl
KTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNvcmUvZG9t
L05vZGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmNwcAkocmV2
aXNpb24gMjQ4NDYyKQorKysgU291cmNlL1dlYkNvcmUvZG9tL05vZGUuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0xMDgsOCArMTA4LDYgQEAgc3RhdGljIGNvbnN0IGNoYXIqIHN0cmluZ0ZvclJhcmVE
YXRhVXNlVAogICAgICAgICByZXR1cm4gIk11dGF0aW9uT2JzZXJ2ZXIiOwogICAgIGNhc2UgTm9k
ZVJhcmVEYXRhOjpVc2VUeXBlOjpUYWJJbmRleDoKICAgICAgICAgcmV0dXJuICJUYWJJbmRleCI7
Ci0gICAgY2FzZSBOb2RlUmFyZURhdGE6OlVzZVR5cGU6OlN0eWxlRmxhZ3M6Ci0gICAgICAgIHJl
dHVybiAiU3R5bGVGbGFncyI7CiAgICAgY2FzZSBOb2RlUmFyZURhdGE6OlVzZVR5cGU6Ok1pbmlt
dW1TaXplOgogICAgICAgICByZXR1cm4gIk1pbmltdW1TaXplIjsKICAgICBjYXNlIE5vZGVSYXJl
RGF0YTo6VXNlVHlwZTo6U2Nyb2xsaW5nUG9zaXRpb246CkBAIC0zOTYsMTUgKzM5NCwxMCBAQCB2
b2lkIE5vZGU6OndpbGxCZURlbGV0ZWRGcm9tKERvY3VtZW50JiBkCiAKIHZvaWQgTm9kZTo6bWF0
ZXJpYWxpemVSYXJlRGF0YSgpCiB7Ci0gICAgTm9kZVJhcmVEYXRhKiBkYXRhOwogICAgIGlmIChp
czxFbGVtZW50PigqdGhpcykpCi0gICAgICAgIGRhdGEgPSBzdGQ6Om1ha2VfdW5pcXVlPEVsZW1l
bnRSYXJlRGF0YT4oZG93bmNhc3Q8UmVuZGVyRWxlbWVudD4obV9kYXRhLm1fcmVuZGVyZXIpKS5y
ZWxlYXNlKCk7CisgICAgICAgIG1fcmFyZURhdGEgPSBzdGQ6Om1ha2VfdW5pcXVlPEVsZW1lbnRS
YXJlRGF0YT4oKTsKICAgICBlbHNlCi0gICAgICAgIGRhdGEgPSBzdGQ6Om1ha2VfdW5pcXVlPE5v
ZGVSYXJlRGF0YT4obV9kYXRhLm1fcmVuZGVyZXIpLnJlbGVhc2UoKTsKLSAgICBBU1NFUlQoZGF0
YSk7Ci0KLSAgICBtX2RhdGEubV9yYXJlRGF0YSA9IGRhdGE7Ci0gICAgc2V0RmxhZyhIYXNSYXJl
RGF0YUZsYWcpOworICAgICAgICBtX3JhcmVEYXRhID0gc3RkOjptYWtlX3VuaXF1ZTxOb2RlUmFy
ZURhdGE+KCk7CiB9CiAKIHZvaWQgTm9kZTo6Y2xlYXJSYXJlRGF0YSgpCkBAIC00MTIsMTMgKzQw
NSw3IEBAIHZvaWQgTm9kZTo6Y2xlYXJSYXJlRGF0YSgpCiAgICAgQVNTRVJUKGhhc1JhcmVEYXRh
KCkpOwogICAgIEFTU0VSVCghdHJhbnNpZW50TXV0YXRpb25PYnNlcnZlclJlZ2lzdHJ5KCkgfHwg
dHJhbnNpZW50TXV0YXRpb25PYnNlcnZlclJlZ2lzdHJ5KCktPmlzRW1wdHkoKSk7CiAKLSAgICBS
ZW5kZXJPYmplY3QqIHJlbmRlcmVyID0gbV9kYXRhLm1fcmFyZURhdGEtPnJlbmRlcmVyKCk7Ci0g
ICAgaWYgKGlzRWxlbWVudE5vZGUoKSkKLSAgICAgICAgZGVsZXRlIHN0YXRpY19jYXN0PEVsZW1l
bnRSYXJlRGF0YSo+KG1fZGF0YS5tX3JhcmVEYXRhKTsKLSAgICBlbHNlCi0gICAgICAgIGRlbGV0
ZSBzdGF0aWNfY2FzdDxOb2RlUmFyZURhdGEqPihtX2RhdGEubV9yYXJlRGF0YSk7Ci0gICAgbV9k
YXRhLm1fcmVuZGVyZXIgPSByZW5kZXJlcjsKLSAgICBjbGVhckZsYWcoSGFzUmFyZURhdGFGbGFn
KTsKKyAgICBtX3JhcmVEYXRhID0gbnVsbHB0cjsKIH0KIAogYm9vbCBOb2RlOjppc05vZGUoKSBj
b25zdApJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL05vZGUuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9kb20vTm9kZS5oCShyZXZpc2lvbiAyNDg0NjIpCisrKyBTb3VyY2UvV2ViQ29y
ZS9kb20vTm9kZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMSw2ICszMSw3IEBACiAjaW5jbHVkZSAi
UmVuZGVyU3R5bGVDb25zdGFudHMuaCIKICNpbmNsdWRlICJTdHlsZVZhbGlkaXR5LmgiCiAjaW5j
bHVkZSAiVHJlZVNjb3BlLmgiCisjaW5jbHVkZSA8d3RmL0NvbXBhY3RQb2ludGVyVHVwbGUuaD4K
ICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogI2luY2x1ZGUgPHd0Zi9Jc29NYWxsb2MuaD4KICNp
bmNsdWRlIDx3dGYvTGlzdEhhc2hTZXQuaD4KQEAgLTY0LDIwICs2NSw2IEBAIGNsYXNzIFRvdWNo
RXZlbnQ7CiAKIHVzaW5nIE5vZGVPclN0cmluZyA9IFZhcmlhbnQ8UmVmUHRyPE5vZGU+LCBTdHJp
bmc+OwogCi1jbGFzcyBOb2RlUmFyZURhdGFCYXNlIHsKLXB1YmxpYzoKLSAgICBSZW5kZXJPYmpl
Y3QqIHJlbmRlcmVyKCkgY29uc3QgeyByZXR1cm4gbV9yZW5kZXJlcjsgfQotICAgIHZvaWQgc2V0
UmVuZGVyZXIoUmVuZGVyT2JqZWN0KiByZW5kZXJlcikgeyBtX3JlbmRlcmVyID0gcmVuZGVyZXI7
IH0KLQotcHJvdGVjdGVkOgotICAgIE5vZGVSYXJlRGF0YUJhc2UoUmVuZGVyT2JqZWN0KiByZW5k
ZXJlcikKLSAgICAgICAgOiBtX3JlbmRlcmVyKHJlbmRlcmVyKQotICAgIHsgfQotCi1wcml2YXRl
OgotICAgIFJlbmRlck9iamVjdCogbV9yZW5kZXJlcjsKLX07Ci0KIGNsYXNzIE5vZGUgOiBwdWJs
aWMgRXZlbnRUYXJnZXQgewogICAgIFdURl9NQUtFX0lTT19BTExPQ0FURUQoTm9kZSk7CiAKQEAg
LTQxMCwxNCArMzk3LDggQEAgcHVibGljOgogICAgIC8vIEludGVncmF0aW9uIHdpdGggcmVuZGVy
aW5nIHRyZWUKIAogICAgIC8vIEFzIHJlbmRlcmVyKCkgaW5jbHVkZXMgYSBicmFuY2ggeW91IHNo
b3VsZCBhdm9pZCBjYWxsaW5nIGl0IHJlcGVhdGVkbHkgaW4gaG90IGNvZGUgcGF0aHMuCi0gICAg
UmVuZGVyT2JqZWN0KiByZW5kZXJlcigpIGNvbnN0IHsgcmV0dXJuIGhhc1JhcmVEYXRhKCkgPyBt
X2RhdGEubV9yYXJlRGF0YS0+cmVuZGVyZXIoKSA6IG1fZGF0YS5tX3JlbmRlcmVyOyB9OwotICAg
IHZvaWQgc2V0UmVuZGVyZXIoUmVuZGVyT2JqZWN0KiByZW5kZXJlcikKLSAgICB7Ci0gICAgICAg
IGlmIChoYXNSYXJlRGF0YSgpKQotICAgICAgICAgICAgbV9kYXRhLm1fcmFyZURhdGEtPnNldFJl
bmRlcmVyKHJlbmRlcmVyKTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgbV9kYXRhLm1fcmVu
ZGVyZXIgPSByZW5kZXJlcjsKLSAgICB9CisgICAgUmVuZGVyT2JqZWN0KiByZW5kZXJlcigpIGNv
bnN0IHsgcmV0dXJuIG1fcmVuZGVyZXJXaXRoU3R5bGVGbGFncy5wb2ludGVyKCk7IH0KKyAgICB2
b2lkIHNldFJlbmRlcmVyKFJlbmRlck9iamVjdCopOyAvLyBEZWZpbmVkIGluIFJlbmRlck9iamVj
dC5oCiAKICAgICAvLyBVc2UgdGhlc2UgdHdvIG1ldGhvZHMgd2l0aCBjYXV0aW9uLgogICAgIFdF
QkNPUkVfRVhQT1JUIFJlbmRlckJveCogcmVuZGVyQm94KCkgY29uc3Q7CkBAIC01MjgsNyArNTA5
LDcgQEAgcHVibGljOgogCiAjaWYgRU5BQkxFKEpJVCkKICAgICBzdGF0aWMgcHRyZGlmZl90IG5v
ZGVGbGFnc01lbW9yeU9mZnNldCgpIHsgcmV0dXJuIE9CSkVDVF9PRkZTRVRPRihOb2RlLCBtX25v
ZGVGbGFncyk7IH0KLSAgICBzdGF0aWMgcHRyZGlmZl90IHJhcmVEYXRhTWVtb3J5T2Zmc2V0KCkg
eyByZXR1cm4gT0JKRUNUX09GRlNFVE9GKE5vZGUsIG1fZGF0YS5tX3JhcmVEYXRhKTsgfQorICAg
IHN0YXRpYyBwdHJkaWZmX3QgcmFyZURhdGFNZW1vcnlPZmZzZXQoKSB7IHJldHVybiBPQkpFQ1Rf
T0ZGU0VUT0YoTm9kZSwgbV9yYXJlRGF0YSk7IH0KICAgICBzdGF0aWMgaW50MzJfdCBmbGFnSXNU
ZXh0KCkgeyByZXR1cm4gSXNUZXh0RmxhZzsgfQogICAgIHN0YXRpYyBpbnQzMl90IGZsYWdJc0Nv
bnRhaW5lcigpIHsgcmV0dXJuIElzQ29udGFpbmVyRmxhZzsgfQogICAgIHN0YXRpYyBpbnQzMl90
IGZsYWdJc0VsZW1lbnQoKSB7IHJldHVybiBJc0VsZW1lbnRGbGFnOyB9CkBAIC01MzYsNyArNTE3
LDYgQEAgcHVibGljOgogICAgIHN0YXRpYyBpbnQzMl90IGZsYWdJc0hUTUwoKSB7IHJldHVybiBJ
c0hUTUxGbGFnOyB9CiAgICAgc3RhdGljIGludDMyX3QgZmxhZ0lzTGluaygpIHsgcmV0dXJuIElz
TGlua0ZsYWc7IH0KICAgICBzdGF0aWMgaW50MzJfdCBmbGFnSGFzRm9jdXNXaXRoaW4oKSB7IHJl
dHVybiBIYXNGb2N1c1dpdGhpbjsgfQotICAgIHN0YXRpYyBpbnQzMl90IGZsYWdIYXNSYXJlRGF0
YSgpIHsgcmV0dXJuIEhhc1JhcmVEYXRhRmxhZzsgfQogICAgIHN0YXRpYyBpbnQzMl90IGZsYWdJ
c1BhcnNpbmdDaGlsZHJlbkZpbmlzaGVkKCkgeyByZXR1cm4gSXNQYXJzaW5nQ2hpbGRyZW5GaW5p
c2hlZEZsYWc7IH0KICAgICBzdGF0aWMgaW50MzJfdCBmbGFnQ2hpbGRyZW5BZmZlY3RlZEJ5Rmly
c3RDaGlsZFJ1bGVzRmxhZygpIHsgcmV0dXJuIENoaWxkcmVuQWZmZWN0ZWRCeUZpcnN0Q2hpbGRS
dWxlc0ZsYWc7IH0KICAgICBzdGF0aWMgaW50MzJfdCBmbGFnQ2hpbGRyZW5BZmZlY3RlZEJ5TGFz
dENoaWxkUnVsZXNGbGFnKCkgeyByZXR1cm4gQ2hpbGRyZW5BZmZlY3RlZEJ5TGFzdENoaWxkUnVs
ZXNGbGFnOyB9CkBAIC01NTcsNyArNTM3LDcgQEAgcHJvdGVjdGVkOgogICAgICAgICBJc1NoYWRv
d1Jvb3RGbGFnID0gMSA8PCA3LAogICAgICAgICBJc0Nvbm5lY3RlZEZsYWcgPSAxIDw8IDgsCiAg
ICAgICAgIElzSW5TaGFkb3dUcmVlRmxhZyA9IDEgPDwgOSwKLSAgICAgICAgSGFzUmFyZURhdGFG
bGFnID0gMSA8PCAxMCwKKyAgICAgICAgU3R5bGVBZmZlY3RlZEJ5Rm9jdXNXaXRoaW5GbGFnID0g
MSA8PCAxMCwKICAgICAgICAgSGFzRXZlbnRUYXJnZXREYXRhRmxhZyA9IDEgPDwgMTEsCiAKICAg
ICAgICAgLy8gVGhlc2UgYml0cyBhcmUgdXNlZCBieSBkZXJpdmVkIGNsYXNzZXMsIHB1bGxlZCB1
cCBoZXJlIHNvIHRoZXkgY2FuCkBAIC02MjAsMTEgKzYwMCwyOSBAQCBwcm90ZWN0ZWQ6CiAgICAg
c3RhdGljIGNvbnN0ZXhwciB1aW50MzJfdCBzX3JlZkNvdW50SW5jcmVtZW50ID0gMjsKICAgICBz
dGF0aWMgY29uc3RleHByIHVpbnQzMl90IHNfcmVmQ291bnRNYXNrID0gfnN0YXRpY19jYXN0PHVp
bnQzMl90PigxKTsKIAotICAgIHZpcnR1YWwgdm9pZCBhZGRTdWJyZXNvdXJjZUF0dHJpYnV0ZVVS
THMoTGlzdEhhc2hTZXQ8VVJMPiYpIGNvbnN0IHsgfQorICAgIGVudW0gY2xhc3MgRWxlbWVudFN0
eWxlRmxhZyA6IHVpbnQ4X3QgeworICAgICAgICBTdHlsZUFmZmVjdGVkQnlBY3RpdmUgPSAxIDw8
IDAsCisgICAgICAgIFN0eWxlQWZmZWN0ZWRCeUVtcHR5ID0gMSA8PCAxLAorICAgICAgICBDaGls
ZHJlbkFmZmVjdGVkQnlEcmFnID0gMSA8PCAyLAorCisgICAgICAgIC8vIEJpdHMgZm9yIGR5bmFt
aWMgY2hpbGQgbWF0Y2hpbmcuCisgICAgICAgIC8vIFdlIG9wdGltaXplIGZvciA6Zmlyc3QtY2hp
bGQgYW5kIDpsYXN0LWNoaWxkLiBUaGUgb3RoZXIgcG9zaXRpb25hbCBjaGlsZCBzZWxlY3RvcnMg
bGlrZSBudGgtY2hpbGQgb3IKKyAgICAgICAgLy8gKi1jaGlsZC1vZi10eXBlLCB3ZSB3aWxsIGp1
c3QgZ2l2ZSB1cCBhbmQgcmUtZXZhbHVhdGUgd2hlbmV2ZXIgY2hpbGRyZW4gY2hhbmdlIGF0IGFs
bC4KKyAgICAgICAgQ2hpbGRyZW5BZmZlY3RlZEJ5Rm9yd2FyZFBvc2l0aW9uYWxSdWxlcyA9IDEg
PDwgMywKKyAgICAgICAgRGVzY2VuZGFudHNBZmZlY3RlZEJ5Rm9yd2FyZFBvc2l0aW9uYWxSdWxl
cyA9IDEgPDwgNCwKKyAgICAgICAgQ2hpbGRyZW5BZmZlY3RlZEJ5QmFja3dhcmRQb3NpdGlvbmFs
UnVsZXMgPSAxIDw8IDUsCisgICAgICAgIERlc2NlbmRhbnRzQWZmZWN0ZWRCeUJhY2t3YXJkUG9z
aXRpb25hbFJ1bGVzID0gMSA8PCA2LAorICAgICAgICBDaGlsZHJlbkFmZmVjdGVkQnlQcm9wZXJ0
eUJhc2VkQmFja3dhcmRQb3NpdGlvbmFsUnVsZXMgPSAxIDw8IDcsCisgICAgfTsKKworICAgIGJv
b2wgaGFzU3R5bGVGbGFnKEVsZW1lbnRTdHlsZUZsYWcgc3RhdGUpIGNvbnN0IHsgcmV0dXJuIG1f
cmVuZGVyZXJXaXRoU3R5bGVGbGFncy50eXBlKCkgJiBzdGF0aWNfY2FzdDx1aW50OF90PihzdGF0
ZSk7IH0KKyAgICB2b2lkIHNldFN0eWxlRmxhZyhFbGVtZW50U3R5bGVGbGFnIHN0YXRlKSB7IG1f
cmVuZGVyZXJXaXRoU3R5bGVGbGFncy5zZXRUeXBlKG1fcmVuZGVyZXJXaXRoU3R5bGVGbGFncy50
eXBlKCkgfCBzdGF0aWNfY2FzdDx1aW50OF90PihzdGF0ZSkpOyB9CisgICAgdm9pZCBjbGVhclN0
eWxlRmxhZ3MoKSB7IG1fcmVuZGVyZXJXaXRoU3R5bGVGbGFncy5zZXRUeXBlKDApOyB9CiAKLSAg
ICBib29sIGhhc1JhcmVEYXRhKCkgY29uc3QgeyByZXR1cm4gZ2V0RmxhZyhIYXNSYXJlRGF0YUZs
YWcpOyB9CisgICAgdmlydHVhbCB2b2lkIGFkZFN1YnJlc291cmNlQXR0cmlidXRlVVJMcyhMaXN0
SGFzaFNldDxVUkw+JikgY29uc3QgeyB9CiAKLSAgICBOb2RlUmFyZURhdGEqIHJhcmVEYXRhKCkg
Y29uc3Q7CisgICAgYm9vbCBoYXNSYXJlRGF0YSgpIGNvbnN0IHsgcmV0dXJuICEhbV9yYXJlRGF0
YTsgfQorICAgIE5vZGVSYXJlRGF0YSogcmFyZURhdGEoKSBjb25zdCB7IHJldHVybiBtX3JhcmVE
YXRhLmdldCgpOyB9CiAgICAgTm9kZVJhcmVEYXRhJiBlbnN1cmVSYXJlRGF0YSgpOwogICAgIHZv
aWQgY2xlYXJSYXJlRGF0YSgpOwogCkBAIC02NzMsMTEgKzY3MSw4IEBAIHByaXZhdGU6CiAgICAg
VHJlZVNjb3BlKiBtX3RyZWVTY29wZSB7IG51bGxwdHIgfTsKICAgICBOb2RlKiBtX3ByZXZpb3Vz
IHsgbnVsbHB0ciB9OwogICAgIE5vZGUqIG1fbmV4dCB7IG51bGxwdHIgfTsKLSAgICAvLyBXaGVu
IGEgbm9kZSBoYXMgcmFyZSBkYXRhIHdlIG1vdmUgdGhlIHJlbmRlcmVyIGludG8gdGhlIHJhcmUg
ZGF0YS4KLSAgICB1bmlvbiBEYXRhVW5pb24gewotICAgICAgICBSZW5kZXJPYmplY3QqIG1fcmVu
ZGVyZXI7Ci0gICAgICAgIE5vZGVSYXJlRGF0YUJhc2UqIG1fcmFyZURhdGE7Ci0gICAgfSBtX2Rh
dGEgeyBudWxscHRyIH07CisgICAgQ29tcGFjdFBvaW50ZXJUdXBsZTxSZW5kZXJPYmplY3QqLCB1
aW50OF90PiBtX3JlbmRlcmVyV2l0aFN0eWxlRmxhZ3M7CisgICAgc3RkOjp1bmlxdWVfcHRyPE5v
ZGVSYXJlRGF0YT4gbV9yYXJlRGF0YTsKIH07CiAKICNpZm5kZWYgTkRFQlVHCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9kb20vTm9kZVJhcmVEYXRhLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9kb20vTm9kZVJhcmVEYXRhLmNwcAkocmV2aXNpb24gMjQ4NDYyKQorKysgU291cmNlL1dl
YkNvcmUvZG9tL05vZGVSYXJlRGF0YS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM3LDcgKzM3LDcg
QEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBzdHJ1Y3QgU2FtZVNpemVBc05vZGVSYXJlRGF0YSB7
CiAgICAgdW5zaWduZWQgbV9iaXRmaWVsZHMgOiAyMDsKLSAgICB2b2lkKiBtX3BvaW50ZXJbM107
CisgICAgdm9pZCogbV9wb2ludGVyWzJdOwogfTsKIAogQ09NUElMRV9BU1NFUlQoc2l6ZW9mKE5v
ZGVSYXJlRGF0YSkgPT0gc2l6ZW9mKFNhbWVTaXplQXNOb2RlUmFyZURhdGEpLCBOb2RlUmFyZURh
dGFTaG91bGRTdGF5U21hbGwpOwpJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL05vZGVSYXJlRGF0
YS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlUmFyZURhdGEuaAkocmV2
aXNpb24gMjQ4NDYyKQorKysgU291cmNlL1dlYkNvcmUvZG9tL05vZGVSYXJlRGF0YS5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yNDcsNyArMjQ3LDcgQEAgcHVibGljOgogICAgIE5vZGVNdXRhdGlvbk9i
c2VydmVyRGF0YSgpIHsgfQogfTsKIAotY2xhc3MgTm9kZVJhcmVEYXRhIDogcHVibGljIE5vZGVS
YXJlRGF0YUJhc2UgeworY2xhc3MgTm9kZVJhcmVEYXRhIHsKICAgICBXVEZfTUFLRV9OT05DT1BZ
QUJMRShOb2RlUmFyZURhdGEpOyBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICNp
ZiBkZWZpbmVkKERVTVBfTk9ERV9TVEFUSVNUSUNTKSAmJiBEVU1QX05PREVfU1RBVElTVElDUwpA
QCAtMjU3LDIzICsyNTcsMjAgQEAgcHVibGljOgogICAgICAgICBNdXRhdGlvbk9ic2VydmVyID0g
MSA8PCAyLAogCiAgICAgICAgIFRhYkluZGV4ID0gMSA8PCAzLAotICAgICAgICBTdHlsZUZsYWdz
ID0gMSA8PCA0LAotICAgICAgICBNaW5pbXVtU2l6ZSA9IDEgPDwgNSwKLSAgICAgICAgU2Nyb2xs
aW5nUG9zaXRpb24gPSAxIDw8IDYsCi0gICAgICAgIENvbXB1dGVkU3R5bGUgPSAxIDw8IDcsCi0g
ICAgICAgIERhdGFzZXQgPSAxIDw8IDgsCi0gICAgICAgIENsYXNzTGlzdCA9IDEgPDwgOSwKLSAg
ICAgICAgU2hhZG93Um9vdCA9IDEgPDwgMTAsCi0gICAgICAgIEN1c3RvbUVsZW1lbnRRdWV1ZSA9
IDEgPDwgMTEsCi0gICAgICAgIEF0dHJpYnV0ZU1hcCA9IDEgPDwgMTIsCi0gICAgICAgIEludGVy
YWN0aW9uT2JzZXJ2ZXIgPSAxIDw8IDEzLAotICAgICAgICBQc2V1ZG9FbGVtZW50cyA9IDEgPDwg
MTQsCisgICAgICAgIE1pbmltdW1TaXplID0gMSA8PCA0LAorICAgICAgICBTY3JvbGxpbmdQb3Np
dGlvbiA9IDEgPDwgNSwKKyAgICAgICAgQ29tcHV0ZWRTdHlsZSA9IDEgPDwgNiwKKyAgICAgICAg
RGF0YXNldCA9IDEgPDwgNywKKyAgICAgICAgQ2xhc3NMaXN0ID0gMSA8PCA4LAorICAgICAgICBT
aGFkb3dSb290ID0gMSA8PCA5LAorICAgICAgICBDdXN0b21FbGVtZW50UXVldWUgPSAxIDw8IDEw
LAorICAgICAgICBBdHRyaWJ1dGVNYXAgPSAxIDw8IDExLAorICAgICAgICBJbnRlcmFjdGlvbk9i
c2VydmVyID0gMSA8PCAxMiwKKyAgICAgICAgUHNldWRvRWxlbWVudHMgPSAxIDw8IDEzLAogICAg
IH07CiAjZW5kaWYKIAotICAgIE5vZGVSYXJlRGF0YShSZW5kZXJPYmplY3QqIHJlbmRlcmVyKQot
ICAgICAgICA6IE5vZGVSYXJlRGF0YUJhc2UocmVuZGVyZXIpCi0gICAgICAgICwgbV9jb25uZWN0
ZWRGcmFtZUNvdW50KDApCisgICAgTm9kZVJhcmVEYXRhKCkKICAgICB7IH0KIAogICAgIHZvaWQg
Y2xlYXJOb2RlTGlzdHMoKSB7IG1fbm9kZUxpc3RzID0gbnVsbHB0cjsgfQpAQCAtMzIwLDcgKzMx
Nyw3IEBAIHB1YmxpYzoKICNlbmRpZgogCiBwcml2YXRlOgotICAgIHVuc2lnbmVkIG1fY29ubmVj
dGVkRnJhbWVDb3VudDsgLy8gTXVzdCBmaXQgUGFnZTo6bWF4TnVtYmVyT2ZGcmFtZXMuCisgICAg
dW5zaWduZWQgbV9jb25uZWN0ZWRGcmFtZUNvdW50IHsgMCB9OyAvLyBNdXN0IGZpdCBQYWdlOjpt
YXhOdW1iZXJPZkZyYW1lcy4KIAogICAgIHN0ZDo6dW5pcXVlX3B0cjxOb2RlTGlzdHNOb2RlRGF0
YT4gbV9ub2RlTGlzdHM7CiAgICAgc3RkOjp1bmlxdWVfcHRyPE5vZGVNdXRhdGlvbk9ic2VydmVy
RGF0YT4gbV9tdXRhdGlvbk9ic2VydmVyRGF0YTsKQEAgLTMzNiwxMiArMzMzLDYgQEAgaW5saW5l
IGJvb2wgTm9kZUxpc3RzTm9kZURhdGE6OmRlbGV0ZVRoaQogICAgIHJldHVybiB0cnVlOwogfQog
Ci1pbmxpbmUgTm9kZVJhcmVEYXRhKiBOb2RlOjpyYXJlRGF0YSgpIGNvbnN0Ci17Ci0gICAgQVNT
RVJUX1dJVEhfU0VDVVJJVFlfSU1QTElDQVRJT04oaGFzUmFyZURhdGEoKSk7Ci0gICAgcmV0dXJu
IHN0YXRpY19jYXN0PE5vZGVSYXJlRGF0YSo+KG1fZGF0YS5tX3JhcmVEYXRhKTsKLX0KLQogaW5s
aW5lIE5vZGVSYXJlRGF0YSYgTm9kZTo6ZW5zdXJlUmFyZURhdGEoKQogewogICAgIGlmICghaGFz
UmFyZURhdGEoKSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3Qu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmgJ
KHJldmlzaW9uIDI0ODQ2MikKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmpl
Y3QuaAkod29ya2luZyBjb3B5KQpAQCAtMTEwMyw2ICsxMTAzLDggQEAgaW5saW5lIGJvb2wgUmVu
ZGVyT2JqZWN0OjpuZWVkc1NpbXBsaWZpZQogICAgICAgICAmJiAhbV9iaXRmaWVsZHMucG9zQ2hp
bGROZWVkc0xheW91dCgpICYmICFtX2JpdGZpZWxkcy5uZWVkc1Bvc2l0aW9uZWRNb3ZlbWVudExh
eW91dCgpOwogfQogCitpbmxpbmUgdm9pZCBOb2RlOjpzZXRSZW5kZXJlcihSZW5kZXJPYmplY3Qq
IHJlbmRlcmVyKSB7IG1fcmVuZGVyZXJXaXRoU3R5bGVGbGFncy5zZXRQb2ludGVyKHJlbmRlcmVy
KTsgfQorCiAjaWYgRU5BQkxFKFRSRUVfREVCVUdHSU5HKQogdm9pZCBwcmludFJlbmRlclRyZWVG
b3JMaXZlRG9jdW1lbnRzKCk7CiB2b2lkIHByaW50TGF5ZXJUcmVlRm9yTGl2ZURvY3VtZW50cygp
Owo=
</data>
<flag name="review"
          id="392211"
          type_id="1"
          status="+"
          setter="koivisto"
    />
          </attachment>
      

    </bug>

</bugzilla>