<?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>234206</bug_id>
          
          <creation_ts>2021-12-11 22:38:03 -0800</creation_ts>
          <short_desc>[JSC] Use FixedVector to shrink some of Wasm data structures</short_desc>
          <delta_ts>2021-12-12 17:11:18 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Yusuke Suzuki">ysuzuki</reporter>
          <assigned_to name="Yusuke Suzuki">ysuzuki</assigned_to>
          <cc>ews-watchlist</cc>
    
    <cc>keith_miller</cc>
    
    <cc>mark.lam</cc>
    
    <cc>msaboff</cc>
    
    <cc>saam</cc>
    
    <cc>tzagallo</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1823298</commentid>
    <comment_count>0</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2021-12-11 22:38:03 -0800</bug_when>
    <thetext>[JSC] Use FixedVector to shrink some of Wasm data structures</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1823299</commentid>
    <comment_count>1</comment_count>
      <attachid>446923</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2021-12-11 22:38:39 -0800</bug_when>
    <thetext>Created attachment 446923
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1823302</commentid>
    <comment_count>2</comment_count>
      <attachid>446926</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2021-12-12 00:35:00 -0800</bug_when>
    <thetext>Created attachment 446926
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1823305</commentid>
    <comment_count>3</comment_count>
      <attachid>446927</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2021-12-12 01:25:36 -0800</bug_when>
    <thetext>Created attachment 446927
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1823356</commentid>
    <comment_count>4</comment_count>
      <attachid>446927</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2021-12-12 16:41:25 -0800</bug_when>
    <thetext>Comment on attachment 446927
Patch

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1823357</commentid>
    <comment_count>5</comment_count>
      <attachid>446927</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2021-12-12 16:51:27 -0800</bug_when>
    <thetext>Comment on attachment 446927
Patch

Thanks!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1823360</commentid>
    <comment_count>6</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-12-12 17:10:38 -0800</bug_when>
    <thetext>Committed r286930 (245156@main): &lt;https://commits.webkit.org/245156@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 446927.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1823361</commentid>
    <comment_count>7</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-12-12 17:11:18 -0800</bug_when>
    <thetext>&lt;rdar://problem/86390357&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>446923</attachid>
            <date>2021-12-11 22:38:39 -0800</date>
            <delta_ts>2021-12-12 00:34:59 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-234206-20211211223838.patch</filename>
            <type>text/plain</type>
            <size>27461</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg2OTIyCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBk
ZmIxYTBjMDI2YWE2NTAwZjViZDU2ZjJiNzZlYmVmNTlkMWRhNzk0Li4xNTQ4OGJiOWU3ZDk1NWVm
NzExZGYwYTYxYjM5MjI0MWMwZWExNWY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw0MiBAQAorMjAyMS0xMi0xMSAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29t
PgorCisgICAgICAgIFtKU0NdIFVzZSBGaXhlZFZlY3RvciB0byBzaHJpbmsgc29tZSBvZiBXYXNt
IGRhdGEgc3RydWN0dXJlcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MjM0MjA2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgV2UgY2FuIHVzZSBGaXhlZFZlY3RvciB0byBzaHJpbmsgc29tZSBvZiBXYXNtIGRh
dGEgc3RydWN0dXJlcyBpbmNsdWRpbmcgV2FzbTo6Q2FsbGVlLgorCisgICAgICAgICogd2FzbS9X
YXNtQWlySVJHZW5lcmF0b3IuY3BwOgorICAgICAgICAoSlNDOjpXYXNtOjpBaXJJUkdlbmVyYXRv
cjo6ZW1pdExvb3BUaWVyVXBDaGVjayk6CisgICAgICAgICogd2FzbS9XYXNtQjNJUkdlbmVyYXRv
ci5jcHA6CisgICAgICAgIChKU0M6Oldhc206OlBhdGNocG9pbnRFeGNlcHRpb25IYW5kbGU6Omdl
bmVyYXRlIGNvbnN0KToKKyAgICAgICAgKEpTQzo6V2FzbTo6QjNJUkdlbmVyYXRvcjo6ZW1pdExv
b3BUaWVyVXBDaGVjayk6CisgICAgICAgICogd2FzbS9XYXNtQ2FsbGVlLmNwcDoKKyAgICAgICAg
KEpTQzo6V2FzbTo6TExJbnRDYWxsZWU6OmxpbmtFeGNlcHRpb25IYW5kbGVycyk6CisgICAgICAg
IChKU0M6Oldhc206Ok9wdGltaXppbmdKSVRDYWxsZWU6OmxpbmtFeGNlcHRpb25IYW5kbGVycyk6
CisgICAgICAgIChKU0M6Oldhc206Ok9wdGltaXppbmdKSVRDYWxsZWU6OnN0YWNrbWFwIGNvbnN0
KToKKyAgICAgICAgKiB3YXNtL1dhc21DYWxsZWUuaDoKKyAgICAgICAgKEpTQzo6V2FzbTo6Q2Fs
bGVlOjpoYXNFeGNlcHRpb25IYW5kbGVycyBjb25zdCk6CisgICAgICAgIChKU0M6Oldhc206OkpJ
VENhbGxlZTo6d2FzbVRvV2FzbUNhbGxzaXRlcyk6CisgICAgICAgIChKU0M6Oldhc206Ok9wdGlt
aXppbmdKSVRDYWxsZWU6Ok9wdGltaXppbmdKSVRDYWxsZWUpOgorICAgICAgICAqIHdhc20vV2Fz
bUhhbmRsZXJJbmZvLmNwcDoKKyAgICAgICAgKEpTQzo6V2FzbTo6SGFuZGxlckluZm86OmhhbmRs
ZXJGb3JJbmRleCk6CisgICAgICAgICogd2FzbS9XYXNtSGFuZGxlckluZm8uaDoKKyAgICAgICAg
KiB3YXNtL1dhc21PU1JFbnRyeURhdGEuaDoKKyAgICAgICAgKEpTQzo6V2FzbTo6T1NSRW50cnlE
YXRhOjpPU1JFbnRyeURhdGEpOgorICAgICAgICAoSlNDOjpXYXNtOjpPU1JFbnRyeURhdGE6OnZh
bHVlcyk6CisgICAgICAgIChKU0M6Oldhc206Ok9TUkVudHJ5VmFsdWU6Ok9TUkVudHJ5VmFsdWUp
OiBEZWxldGVkLgorICAgICAgICAoSlNDOjpXYXNtOjpPU1JFbnRyeVZhbHVlOjp0eXBlIGNvbnN0
KTogRGVsZXRlZC4KKyAgICAgICAgKiB3YXNtL1dhc21QbGFuLmNwcDoKKyAgICAgICAgKEpTQzo6
V2FzbTo6UGxhbjo6dXBkYXRlQ2FsbFNpdGVzVG9DYWxsVXMpOgorICAgICAgICAqIHdhc20vV2Fz
bVRpZXJVcENvdW50LmNwcDoKKyAgICAgICAgKEpTQzo6V2FzbTo6VGllclVwQ291bnQ6OmFkZE9T
UkVudHJ5RGF0YSk6CisgICAgICAgICogd2FzbS9XYXNtVGllclVwQ291bnQuaDoKKyAgICAgICAg
KiB3YXNtL2pzL0pTV2ViQXNzZW1ibHlDb2RlQmxvY2suY3BwOgorICAgICAgICAoSlNDOjpKU1dl
YkFzc2VtYmx5Q29kZUJsb2NrOjpKU1dlYkFzc2VtYmx5Q29kZUJsb2NrKToKKyAgICAgICAgKiB3
YXNtL2pzL0pTV2ViQXNzZW1ibHlDb2RlQmxvY2suaDoKKwogMjAyMS0xMi0xMSAgU2FhbSBCYXJh
dGkgIDxzYmFyYXRpQGFwcGxlLmNvbT4KIAogICAgICAgICBUZWFjaCB0aGUgc2FtcGxpbmcgcHJv
ZmlsZXIgaG93IHRvIGRpc3BsYXkgb3JpZ2luIGRhdGEgZm9yIEIzIFdhc20KZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21BaXJJUkdlbmVyYXRvci5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtQWlySVJHZW5lcmF0b3IuY3BwCmluZGV4IGVlOGJi
ZWY3NzQ5NGViMzIwNDE5ZGE5M2IyOTA1YTU1MDA1Y2M4ZTkuLmNkYWQ2MzcyMjk0OWVkNGE0ZGM2
MWQ4NDdiYzc4MDY0OTRjYjU1NTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93
YXNtL1dhc21BaXJJUkdlbmVyYXRvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dh
c20vV2FzbUFpcklSR2VuZXJhdG9yLmNwcApAQCAtMjkyNCwxMCArMjkyNCwxMiBAQCB2b2lkIEFp
cklSR2VuZXJhdG9yOjplbWl0TG9vcFRpZXJVcENoZWNrKHVpbnQzMl90IGxvb3BJbmRleCwgY29u
c3QgU3RhY2smIGVuY2xvcwogICAgICAgICBDQ2FsbEhlbHBlcnM6Okp1bXAgdGllclVwID0gaml0
LmJyYW5jaEFkZDMyKENDYWxsSGVscGVyczo6UG9zaXRpdmVPclplcm8sIENDYWxsSGVscGVyczo6
VHJ1c3RlZEltbTMyKFRpZXJVcENvdW50Ojpsb29wSW5jcmVtZW50KCkpLCBDQ2FsbEhlbHBlcnM6
OkFkZHJlc3MocGFyYW1zWzBdLmdwcigpKSk7CiAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpMYWJl
bCB0aWVyVXBSZXN1bWUgPSBqaXQubGFiZWwoKTsKIAotICAgICAgICBPU1JFbnRyeURhdGEmIG9z
ckVudHJ5RGF0YSA9IG1fdGllclVwLT5hZGRPU1JFbnRyeURhdGEobV9mdW5jdGlvbkluZGV4LCBs
b29wSW5kZXgpOwogICAgICAgICAvLyBGaXJzdCBhcmd1bWVudCBpcyB0aGUgY291bnRkb3duIGxv
Y2F0aW9uLgotICAgICAgICBmb3IgKHVuc2lnbmVkIGluZGV4ID0gMTsgaW5kZXggPCBwYXJhbXMu
dmFsdWUoKS0+bnVtQ2hpbGRyZW4oKTsgKytpbmRleCkKLSAgICAgICAgICAgIG9zckVudHJ5RGF0
YS52YWx1ZXMoKS5jb25zdHJ1Y3RBbmRBcHBlbmQocGFyYW1zW2luZGV4XSwgcGFyYW1zLnZhbHVl
KCktPmNoaWxkKGluZGV4KS0+dHlwZSgpKTsKKyAgICAgICAgU3RhY2tNYXAgdmFsdWVzKHBhcmFt
cy52YWx1ZSgpLT5udW1DaGlsZHJlbigpIC0gMSk7CisgICAgICAgIGZvciAodW5zaWduZWQgaSA9
IDE7IGkgPCBwYXJhbXMudmFsdWUoKS0+bnVtQ2hpbGRyZW4oKTsgKytpKQorICAgICAgICAgICAg
dmFsdWVzW2kgLSAxXSA9IE9TUkVudHJ5VmFsdWUocGFyYW1zW2ldLCBwYXJhbXMudmFsdWUoKS0+
Y2hpbGQoaSktPnR5cGUoKSk7CisKKyAgICAgICAgT1NSRW50cnlEYXRhJiBvc3JFbnRyeURhdGEg
PSBtX3RpZXJVcC0+YWRkT1NSRW50cnlEYXRhKG1fZnVuY3Rpb25JbmRleCwgbG9vcEluZGV4LCBX
VEZNb3ZlKHZhbHVlcykpOwogICAgICAgICBPU1JFbnRyeURhdGEqIG9zckVudHJ5RGF0YVB0ciA9
ICZvc3JFbnRyeURhdGE7CiAKICAgICAgICAgcGFyYW1zLmFkZExhdGVQYXRoKFs9XSAoQ0NhbGxI
ZWxwZXJzJiBqaXQpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dh
c21CM0lSR2VuZXJhdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21CM0lS
R2VuZXJhdG9yLmNwcAppbmRleCBkYzgzYjE2MjEwZTcxNDJiMTUxMzhiYTBhMGZiNTM5MDU5NzIz
ZTdhLi41MzA1NjIyNTcwNGY1YjNjY2Y4NDM4NGRlNTEzOWE5OTU4MGE2MjNmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtQjNJUkdlbmVyYXRvci5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUIzSVJHZW5lcmF0b3IuY3BwCkBAIC01ODIs
OSArNTgyLDkgQEAgdm9pZCBQYXRjaHBvaW50RXhjZXB0aW9uSGFuZGxlOjpnZW5lcmF0ZShDQ2Fs
bEhlbHBlcnMmIGppdCwgY29uc3QgQjM6OlN0YWNrbWFwR2UKICAgICBpZiAobV9jYWxsU2l0ZUlu
ZGV4ID09IHNfaW52YWxpZENhbGxTaXRlSW5kZXgpCiAgICAgICAgIHJldHVybjsKIAotICAgIFN0
YWNrTWFwIHZhbHVlczsKKyAgICBTdGFja01hcCB2YWx1ZXMocGFyYW1zLnZhbHVlKCktPm51bUNo
aWxkcmVuKCkgLSBtX29mZnNldCk7CiAgICAgZm9yICh1bnNpZ25lZCBpID0gbV9vZmZzZXQ7IGkg
PCBwYXJhbXMudmFsdWUoKS0+bnVtQ2hpbGRyZW4oKTsgKytpKQotICAgICAgICB2YWx1ZXMuY29u
c3RydWN0QW5kQXBwZW5kKHBhcmFtc1tpXSwgcGFyYW1zLnZhbHVlKCktPmNoaWxkKGkpLT50eXBl
KCkpOworICAgICAgICB2YWx1ZXNbaSAtIG1fb2Zmc2V0XSA9IE9TUkVudHJ5VmFsdWUocGFyYW1z
W2ldLCBwYXJhbXMudmFsdWUoKS0+Y2hpbGQoaSktPnR5cGUoKSk7CiAgICAgZ2VuZXJhdG9yLT5h
ZGRTdGFja01hcChtX2NhbGxTaXRlSW5kZXgsIFdURk1vdmUodmFsdWVzKSk7CiAgICAgaml0LnN0
b3JlMzIoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIobV9jYWxsU2l0ZUluZGV4KSwgQ0NhbGxI
ZWxwZXJzOjp0YWdGb3IoQ2FsbEZyYW1lU2xvdDo6YXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMp
KTsKIH0KQEAgLTI0MjYsMTAgKzI0MjYsMTIgQEAgdm9pZCBCM0lSR2VuZXJhdG9yOjplbWl0TG9v
cFRpZXJVcENoZWNrKHVpbnQzMl90IGxvb3BJbmRleCwgY29uc3QgU3RhY2smIGVuY2xvc2kKICAg
ICAgICAgQ0NhbGxIZWxwZXJzOjpKdW1wIHRpZXJVcCA9IGppdC5icmFuY2hBZGQzMihDQ2FsbEhl
bHBlcnM6OlBvc2l0aXZlT3JaZXJvLCBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0zMihUaWVyVXBD
b3VudDo6bG9vcEluY3JlbWVudCgpKSwgQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKHBhcmFtc1swXS5n
cHIoKSkpOwogICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6TGFiZWwgdGllclVwUmVzdW1lID0gaml0
LmxhYmVsKCk7CiAKLSAgICAgICAgT1NSRW50cnlEYXRhJiBvc3JFbnRyeURhdGEgPSBtX3RpZXJV
cC0+YWRkT1NSRW50cnlEYXRhKG1fZnVuY3Rpb25JbmRleCwgbG9vcEluZGV4KTsKICAgICAgICAg
Ly8gRmlyc3QgYXJndW1lbnQgaXMgdGhlIGNvdW50ZG93biBsb2NhdGlvbi4KKyAgICAgICAgU3Rh
Y2tNYXAgdmFsdWVzKHBhcmFtcy52YWx1ZSgpLT5udW1DaGlsZHJlbigpIC0gMSk7CiAgICAgICAg
IGZvciAodW5zaWduZWQgaSA9IDE7IGkgPCBwYXJhbXMudmFsdWUoKS0+bnVtQ2hpbGRyZW4oKTsg
KytpKQotICAgICAgICAgICAgb3NyRW50cnlEYXRhLnZhbHVlcygpLmNvbnN0cnVjdEFuZEFwcGVu
ZChwYXJhbXNbaV0sIHBhcmFtcy52YWx1ZSgpLT5jaGlsZChpKS0+dHlwZSgpKTsKKyAgICAgICAg
ICAgIHZhbHVlc1tpIC0gMV0gPSBPU1JFbnRyeVZhbHVlKHBhcmFtc1tpXSwgcGFyYW1zLnZhbHVl
KCktPmNoaWxkKGkpLT50eXBlKCkpOworCisgICAgICAgIE9TUkVudHJ5RGF0YSYgb3NyRW50cnlE
YXRhID0gbV90aWVyVXAtPmFkZE9TUkVudHJ5RGF0YShtX2Z1bmN0aW9uSW5kZXgsIGxvb3BJbmRl
eCwgV1RGTW92ZSh2YWx1ZXMpKTsKICAgICAgICAgT1NSRW50cnlEYXRhKiBvc3JFbnRyeURhdGFQ
dHIgPSAmb3NyRW50cnlEYXRhOwogCiAgICAgICAgIHBhcmFtcy5hZGRMYXRlUGF0aChbPV0gKEND
YWxsSGVscGVycyYgaml0KSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2Fz
bS9XYXNtQ2FsbGVlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21DYWxsZWUu
Y3BwCmluZGV4IGI0NjZiN2ZjZWI4MGEzZTI3Mjc5OWYzNzVmYWQwYmRkYWFiZDk0NWIuLmEwMzYz
ZGE2ZTgyYzdkZjA5MDQ5YzVmYWE2MDIxZjlkYmUxN2NhNzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS93YXNtL1dhc21DYWxsZWUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS93YXNtL1dhc21DYWxsZWUuY3BwCkBAIC04Niw3ICs4Niw3IEBAIExMSW50Q2FsbGVlOjpM
TEludENhbGxlZShzdGQ6OnVuaXF1ZV9wdHI8RnVuY3Rpb25Db2RlQmxvY2s+IGNvZGVCbG9jaywg
c2l6ZV90IGluCiB2b2lkIExMSW50Q2FsbGVlOjpsaW5rRXhjZXB0aW9uSGFuZGxlcnMoKQogewog
ICAgIGlmIChzaXplX3QgY291bnQgPSBtX2NvZGVCbG9jay0+bnVtYmVyT2ZFeGNlcHRpb25IYW5k
bGVycygpKSB7Ci0gICAgICAgIG1fZXhjZXB0aW9uSGFuZGxlcnMucmVzaXplVG9GaXQoY291bnQp
OworICAgICAgICBtX2V4Y2VwdGlvbkhhbmRsZXJzID0gRml4ZWRWZWN0b3I8SGFuZGxlckluZm8+
KGNvdW50KTsKICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBjb3VudDsgaSsrKSB7CiAg
ICAgICAgICAgICBjb25zdCBVbmxpbmtlZEhhbmRsZXJJbmZvJiB1bmxpbmtlZEhhbmRsZXIgPSBt
X2NvZGVCbG9jay0+ZXhjZXB0aW9uSGFuZGxlcihpKTsKICAgICAgICAgICAgIEhhbmRsZXJJbmZv
JiBoYW5kbGVyID0gbV9leGNlcHRpb25IYW5kbGVyc1tpXTsKQEAgLTEzNywyMSArMTM3LDE5IEBA
IHN0ZDo6dHVwbGU8dm9pZCosIHZvaWQqPiBMTEludENhbGxlZTo6cmFuZ2UoKSBjb25zdAogICAg
IHJldHVybiB7IG51bGxwdHIsIG51bGxwdHIgfTsKIH0KIAotdm9pZCBPcHRpbWl6aW5nSklUQ2Fs
bGVlOjpsaW5rRXhjZXB0aW9uSGFuZGxlcnMoKQordm9pZCBPcHRpbWl6aW5nSklUQ2FsbGVlOjps
aW5rRXhjZXB0aW9uSGFuZGxlcnMoVmVjdG9yPFVubGlua2VkSGFuZGxlckluZm8+IHVubGlua2Vk
RXhjZXB0aW9uSGFuZGxlcnMsIFZlY3RvcjxDb2RlTG9jYXRpb25MYWJlbDxFeGNlcHRpb25IYW5k
bGVyUHRyVGFnPj4gZXhjZXB0aW9uSGFuZGxlckxvY2F0aW9ucykKIHsKLSAgICBzaXplX3QgY291
bnQgPSBtX3VubGlua2VkRXhjZXB0aW9uSGFuZGxlcnMuc2l6ZSgpOwotICAgIG1fZXhjZXB0aW9u
SGFuZGxlcnMucmVzaXplVG9GaXQoY291bnQpOworICAgIHNpemVfdCBjb3VudCA9IHVubGlua2Vk
RXhjZXB0aW9uSGFuZGxlcnMuc2l6ZSgpOworICAgIG1fZXhjZXB0aW9uSGFuZGxlcnMgPSBGaXhl
ZFZlY3RvcjxIYW5kbGVySW5mbz4oY291bnQpOwogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwg
Y291bnQ7IGkrKykgewogICAgICAgICBIYW5kbGVySW5mbyYgaGFuZGxlciA9IG1fZXhjZXB0aW9u
SGFuZGxlcnNbaV07Ci0gICAgICAgIGNvbnN0IFVubGlua2VkSGFuZGxlckluZm8mIHVubGlua2Vk
SGFuZGxlciA9IG1fdW5saW5rZWRFeGNlcHRpb25IYW5kbGVyc1tpXTsKLSAgICAgICAgQ29kZUxv
Y2F0aW9uTGFiZWw8RXhjZXB0aW9uSGFuZGxlclB0clRhZz4gbG9jYXRpb24gPSBtX2V4Y2VwdGlv
bkhhbmRsZXJMb2NhdGlvbnNbaV07CisgICAgICAgIGNvbnN0IFVubGlua2VkSGFuZGxlckluZm8m
IHVubGlua2VkSGFuZGxlciA9IHVubGlua2VkRXhjZXB0aW9uSGFuZGxlcnNbaV07CisgICAgICAg
IENvZGVMb2NhdGlvbkxhYmVsPEV4Y2VwdGlvbkhhbmRsZXJQdHJUYWc+IGxvY2F0aW9uID0gZXhj
ZXB0aW9uSGFuZGxlckxvY2F0aW9uc1tpXTsKICAgICAgICAgaGFuZGxlci5pbml0aWFsaXplKHVu
bGlua2VkSGFuZGxlciwgbG9jYXRpb24pOwogICAgIH0KLSAgICBtX3VubGlua2VkRXhjZXB0aW9u
SGFuZGxlcnMuY2xlYXIoKTsKLSAgICBtX2V4Y2VwdGlvbkhhbmRsZXJMb2NhdGlvbnMuY2xlYXIo
KTsKIH0KIAotY29uc3QgVmVjdG9yPE9TUkVudHJ5VmFsdWU+JiBPcHRpbWl6aW5nSklUQ2FsbGVl
OjpzdGFja21hcChDYWxsU2l0ZUluZGV4IGNhbGxTaXRlSW5kZXgpIGNvbnN0Citjb25zdCBTdGFj
a01hcCYgT3B0aW1pemluZ0pJVENhbGxlZTo6c3RhY2ttYXAoQ2FsbFNpdGVJbmRleCBjYWxsU2l0
ZUluZGV4KSBjb25zdAogewogICAgIGF1dG8gaXRlciA9IG1fc3RhY2ttYXBzLmZpbmQoY2FsbFNp
dGVJbmRleCk7CiAgICAgaWYgKGl0ZXIgPT0gbV9zdGFja21hcHMuZW5kKCkpIHsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21DYWxsZWUuaCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS93YXNtL1dhc21DYWxsZWUuaAppbmRleCBhYTJiNTQxOGMyY2Q1NDA5YmE1ZGI3
ZDUyYWUwMDI1YzJmMmVkZWQyLi4zNDdmYzgxNWUyNjJhYzg3NWM1Nzk3NTY4M2E1Y2VhOGQzZTg1
MjQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtQ2FsbGVlLmgK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUNhbGxlZS5oCkBAIC0zNiw2ICsz
Niw3IEBACiAjaW5jbHVkZSAiV2FzbUluZGV4T3JOYW1lLmgiCiAjaW5jbHVkZSAiV2FzbUxMSW50
VGllclVwQ291bnRlci5oIgogI2luY2x1ZGUgIldhc21UaWVyVXBDb3VudC5oIgorI2luY2x1ZGUg
PHd0Zi9GaXhlZFZlY3Rvci5oPgogI2luY2x1ZGUgPHd0Zi9UaHJlYWRTYWZlUmVmQ291bnRlZC5o
PgogCiBuYW1lc3BhY2UgSlNDIHsKQEAgLTYzLDcgKzY0LDcgQEAgY2xhc3MgQ2FsbGVlIDogcHVi
bGljIFRocmVhZFNhZmVSZWZDb3VudGVkPENhbGxlZT4gewogCiAgICAgY29uc3QgSGFuZGxlcklu
Zm8qIGhhbmRsZXJGb3JJbmRleChJbnN0YW5jZSYsIHVuc2lnbmVkLCBjb25zdCBUYWcqKTsKIAot
ICAgIGJvb2wgaGFzRXhjZXB0aW9uSGFuZGxlcnMoKSBjb25zdCB7IHJldHVybiAhIW1fZXhjZXB0
aW9uSGFuZGxlcnMuc2l6ZSgpOyB9CisgICAgYm9vbCBoYXNFeGNlcHRpb25IYW5kbGVycygpIGNv
bnN0IHsgcmV0dXJuICFtX2V4Y2VwdGlvbkhhbmRsZXJzLmlzRW1wdHkoKTsgfQogCiAjaWYgRU5B
QkxFKFdFQkFTU0VNQkxZX0IzSklUKQogICAgIHZpcnR1YWwgdm9pZCBzZXRPU1JFbnRyeUNhbGxl
ZShSZWY8T01HRm9yT1NSRW50cnlDYWxsZWU+JiYsIE1lbW9yeU1vZGUpCkBAIC04NSwxNCArODYs
MTQgQEAgY2xhc3MgQ2FsbGVlIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPENhbGxlZT4g
ewogICAgIEluZGV4T3JOYW1lIG1faW5kZXhPck5hbWU7CiAKIHByb3RlY3RlZDoKLSAgICBWZWN0
b3I8SGFuZGxlckluZm8+IG1fZXhjZXB0aW9uSGFuZGxlcnM7CisgICAgRml4ZWRWZWN0b3I8SGFu
ZGxlckluZm8+IG1fZXhjZXB0aW9uSGFuZGxlcnM7CiB9OwogCiBjbGFzcyBKSVRDYWxsZWUgOiBw
dWJsaWMgQ2FsbGVlIHsKIHB1YmxpYzoKICAgICBNYWNyb0Fzc2VtYmxlckNvZGVQdHI8V2FzbUVu
dHJ5UHRyVGFnPiBlbnRyeXBvaW50KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9lbnRyeXBv
aW50LmNvbXBpbGF0aW9uLT5jb2RlKCkucmV0YWdnZWQ8V2FzbUVudHJ5UHRyVGFnPigpOyB9CiAg
ICAgUmVnaXN0ZXJBdE9mZnNldExpc3QqIGNhbGxlZVNhdmVSZWdpc3RlcnMoKSBvdmVycmlkZSB7
IHJldHVybiAmbV9lbnRyeXBvaW50LmNhbGxlZVNhdmVSZWdpc3RlcnM7IH0KLSAgICBWZWN0b3I8
VW5saW5rZWRXYXNtVG9XYXNtQ2FsbD4mIHdhc21Ub1dhc21DYWxsc2l0ZXMoKSB7IHJldHVybiBt
X3dhc21Ub1dhc21DYWxsc2l0ZXM7IH0KKyAgICBGaXhlZFZlY3RvcjxVbmxpbmtlZFdhc21Ub1dh
c21DYWxsPiYgd2FzbVRvV2FzbUNhbGxzaXRlcygpIHsgcmV0dXJuIG1fd2FzbVRvV2FzbUNhbGxz
aXRlczsgfQogCiBwcm90ZWN0ZWQ6CiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgSklUQ2FsbGVlKFdh
c206OkNvbXBpbGF0aW9uTW9kZSwgV2FzbTo6RW50cnlwb2ludCYmKTsKQEAgLTEwNiw3ICsxMDcs
NyBAQCBjbGFzcyBKSVRDYWxsZWUgOiBwdWJsaWMgQ2FsbGVlIHsKICAgICB9CiAKIHByaXZhdGU6
Ci0gICAgVmVjdG9yPFVubGlua2VkV2FzbVRvV2FzbUNhbGw+IG1fd2FzbVRvV2FzbUNhbGxzaXRl
czsKKyAgICBGaXhlZFZlY3RvcjxVbmxpbmtlZFdhc21Ub1dhc21DYWxsPiBtX3dhc21Ub1dhc21D
YWxsc2l0ZXM7CiAgICAgV2FzbTo6RW50cnlwb2ludCBtX2VudHJ5cG9pbnQ7CiB9OwogCkBAIC0x
MjgsMzYgKzEyOSwzMiBAQCBjbGFzcyBFbWJlZGRlckVudHJ5cG9pbnRDYWxsZWUgZmluYWwgOiBw
dWJsaWMgSklUQ2FsbGVlIHsKICNpZiBFTkFCTEUoV0VCQVNTRU1CTFlfQjNKSVQpCiBjbGFzcyBP
cHRpbWl6aW5nSklUQ2FsbGVlIDogcHVibGljIEpJVENhbGxlZSB7CiBwdWJsaWM6Ci0gICAgY29u
c3QgVmVjdG9yPE9TUkVudHJ5VmFsdWU+JiBzdGFja21hcChDYWxsU2l0ZUluZGV4KSBjb25zdDsK
KyAgICBjb25zdCBTdGFja01hcCYgc3RhY2ttYXAoQ2FsbFNpdGVJbmRleCkgY29uc3Q7CiAKIHBy
b3RlY3RlZDoKLSAgICBPcHRpbWl6aW5nSklUQ2FsbGVlKFdhc206OkNvbXBpbGF0aW9uTW9kZSBt
b2RlLCBXYXNtOjpFbnRyeXBvaW50JiYgZW50cnlwb2ludCwgc2l6ZV90IGluZGV4LCBzdGQ6OnBh
aXI8Y29uc3QgTmFtZSosIFJlZlB0cjxOYW1lU2VjdGlvbj4+JiYgbmFtZSwgVmVjdG9yPFVubGlu
a2VkV2FzbVRvV2FzbUNhbGw+JiYgdW5saW5rZWRDYWxscywgSGFzaE1hcDxDYWxsU2l0ZUluZGV4
LCBWZWN0b3I8T1NSRW50cnlWYWx1ZT4+JiYgc3RhY2ttYXBzLCBWZWN0b3I8VW5saW5rZWRIYW5k
bGVySW5mbz4mJiBleGNlcHRpb25IYW5kbGVycywgVmVjdG9yPENvZGVMb2NhdGlvbkxhYmVsPEV4
Y2VwdGlvbkhhbmRsZXJQdHJUYWc+PiYmIGV4Y2VwdGlvbkhhbmRsZXJMb2NhdGlvbnMpCisgICAg
T3B0aW1pemluZ0pJVENhbGxlZShXYXNtOjpDb21waWxhdGlvbk1vZGUgbW9kZSwgV2FzbTo6RW50
cnlwb2ludCYmIGVudHJ5cG9pbnQsIHNpemVfdCBpbmRleCwgc3RkOjpwYWlyPGNvbnN0IE5hbWUq
LCBSZWZQdHI8TmFtZVNlY3Rpb24+PiYmIG5hbWUsIFZlY3RvcjxVbmxpbmtlZFdhc21Ub1dhc21D
YWxsPiYmIHVubGlua2VkQ2FsbHMsIFN0YWNrTWFwcyYmIHN0YWNrbWFwcywgVmVjdG9yPFVubGlu
a2VkSGFuZGxlckluZm8+JiYgdW5saW5rZWRFeGNlcHRpb25IYW5kbGVycywgVmVjdG9yPENvZGVM
b2NhdGlvbkxhYmVsPEV4Y2VwdGlvbkhhbmRsZXJQdHJUYWc+PiYmIGV4Y2VwdGlvbkhhbmRsZXJM
b2NhdGlvbnMpCiAgICAgICAgIDogSklUQ2FsbGVlKG1vZGUsIFdURk1vdmUoZW50cnlwb2ludCks
IGluZGV4LCBXVEZNb3ZlKG5hbWUpLCBXVEZNb3ZlKHVubGlua2VkQ2FsbHMpKQogICAgICAgICAs
IG1fc3RhY2ttYXBzKFdURk1vdmUoc3RhY2ttYXBzKSkKLSAgICAgICAgLCBtX3VubGlua2VkRXhj
ZXB0aW9uSGFuZGxlcnMoV1RGTW92ZShleGNlcHRpb25IYW5kbGVycykpCi0gICAgICAgICwgbV9l
eGNlcHRpb25IYW5kbGVyTG9jYXRpb25zKFdURk1vdmUoZXhjZXB0aW9uSGFuZGxlckxvY2F0aW9u
cykpCiAgICAgewotICAgICAgICBSRUxFQVNFX0FTU0VSVChtX3VubGlua2VkRXhjZXB0aW9uSGFu
ZGxlcnMuc2l6ZSgpID09IG1fZXhjZXB0aW9uSGFuZGxlckxvY2F0aW9ucy5zaXplKCkpOwotICAg
ICAgICBsaW5rRXhjZXB0aW9uSGFuZGxlcnMoKTsKKyAgICAgICAgUkVMRUFTRV9BU1NFUlQodW5s
aW5rZWRFeGNlcHRpb25IYW5kbGVycy5zaXplKCkgPT0gZXhjZXB0aW9uSGFuZGxlckxvY2F0aW9u
cy5zaXplKCkpOworICAgICAgICBsaW5rRXhjZXB0aW9uSGFuZGxlcnMoV1RGTW92ZSh1bmxpbmtl
ZEV4Y2VwdGlvbkhhbmRsZXJzKSwgV1RGTW92ZShleGNlcHRpb25IYW5kbGVyTG9jYXRpb25zKSk7
CiAgICAgfQogCiBwcml2YXRlOgotICAgIHZvaWQgbGlua0V4Y2VwdGlvbkhhbmRsZXJzKCk7Cisg
ICAgdm9pZCBsaW5rRXhjZXB0aW9uSGFuZGxlcnMoVmVjdG9yPFVubGlua2VkSGFuZGxlckluZm8+
LCBWZWN0b3I8Q29kZUxvY2F0aW9uTGFiZWw8RXhjZXB0aW9uSGFuZGxlclB0clRhZz4+KTsKIAot
ICAgIEhhc2hNYXA8Q2FsbFNpdGVJbmRleCwgVmVjdG9yPE9TUkVudHJ5VmFsdWU+PiBtX3N0YWNr
bWFwczsKLSAgICBWZWN0b3I8VW5saW5rZWRIYW5kbGVySW5mbz4gbV91bmxpbmtlZEV4Y2VwdGlv
bkhhbmRsZXJzOwotICAgIFZlY3RvcjxDb2RlTG9jYXRpb25MYWJlbDxFeGNlcHRpb25IYW5kbGVy
UHRyVGFnPj4gbV9leGNlcHRpb25IYW5kbGVyTG9jYXRpb25zOworICAgIFN0YWNrTWFwcyBtX3N0
YWNrbWFwczsKIH07CiAKIGNsYXNzIE9NR0NhbGxlZSBmaW5hbCA6IHB1YmxpYyBPcHRpbWl6aW5n
SklUQ2FsbGVlIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPE9NR0NhbGxlZT4gY3JlYXRlKFdh
c206OkVudHJ5cG9pbnQmJiBlbnRyeXBvaW50LCBzaXplX3QgaW5kZXgsIHN0ZDo6cGFpcjxjb25z
dCBOYW1lKiwgUmVmUHRyPE5hbWVTZWN0aW9uPj4mJiBuYW1lLCBWZWN0b3I8VW5saW5rZWRXYXNt
VG9XYXNtQ2FsbD4mJiB1bmxpbmtlZENhbGxzLCBIYXNoTWFwPENhbGxTaXRlSW5kZXgsIFZlY3Rv
cjxPU1JFbnRyeVZhbHVlPj4mJiBzdGFja21hcHMsIFZlY3RvcjxVbmxpbmtlZEhhbmRsZXJJbmZv
PiYmIGV4Y2VwdGlvbkhhbmRsZXJzLCBWZWN0b3I8Q29kZUxvY2F0aW9uTGFiZWw8RXhjZXB0aW9u
SGFuZGxlclB0clRhZz4+JiYgZXhjZXB0aW9uSGFuZGxlckxvY2F0aW9ucykKKyAgICBzdGF0aWMg
UmVmPE9NR0NhbGxlZT4gY3JlYXRlKFdhc206OkVudHJ5cG9pbnQmJiBlbnRyeXBvaW50LCBzaXpl
X3QgaW5kZXgsIHN0ZDo6cGFpcjxjb25zdCBOYW1lKiwgUmVmUHRyPE5hbWVTZWN0aW9uPj4mJiBu
YW1lLCBWZWN0b3I8VW5saW5rZWRXYXNtVG9XYXNtQ2FsbD4mJiB1bmxpbmtlZENhbGxzLCBTdGFj
a01hcHMmJiBzdGFja21hcHMsIFZlY3RvcjxVbmxpbmtlZEhhbmRsZXJJbmZvPiYmIGV4Y2VwdGlv
bkhhbmRsZXJzLCBWZWN0b3I8Q29kZUxvY2F0aW9uTGFiZWw8RXhjZXB0aW9uSGFuZGxlclB0clRh
Zz4+JiYgZXhjZXB0aW9uSGFuZGxlckxvY2F0aW9ucykKICAgICB7CiAgICAgICAgIHJldHVybiBh
ZG9wdFJlZigqbmV3IE9NR0NhbGxlZShXVEZNb3ZlKGVudHJ5cG9pbnQpLCBpbmRleCwgV1RGTW92
ZShuYW1lKSwgV1RGTW92ZSh1bmxpbmtlZENhbGxzKSwgV1RGTW92ZShzdGFja21hcHMpLCBXVEZN
b3ZlKGV4Y2VwdGlvbkhhbmRsZXJzKSwgV1RGTW92ZShleGNlcHRpb25IYW5kbGVyTG9jYXRpb25z
KSkpOwogICAgIH0KIAogcHJpdmF0ZToKLSAgICBPTUdDYWxsZWUoV2FzbTo6RW50cnlwb2ludCYm
IGVudHJ5cG9pbnQsIHNpemVfdCBpbmRleCwgc3RkOjpwYWlyPGNvbnN0IE5hbWUqLCBSZWZQdHI8
TmFtZVNlY3Rpb24+PiYmIG5hbWUsIFZlY3RvcjxVbmxpbmtlZFdhc21Ub1dhc21DYWxsPiYmIHVu
bGlua2VkQ2FsbHMsIEhhc2hNYXA8Q2FsbFNpdGVJbmRleCwgVmVjdG9yPE9TUkVudHJ5VmFsdWU+
PiYmIHN0YWNrbWFwcywgVmVjdG9yPFVubGlua2VkSGFuZGxlckluZm8+JiYgZXhjZXB0aW9uSGFu
ZGxlcnMsIFZlY3RvcjxDb2RlTG9jYXRpb25MYWJlbDxFeGNlcHRpb25IYW5kbGVyUHRyVGFnPj4m
JiBleGNlcHRpb25IYW5kbGVyTG9jYXRpb25zKQorICAgIE9NR0NhbGxlZShXYXNtOjpFbnRyeXBv
aW50JiYgZW50cnlwb2ludCwgc2l6ZV90IGluZGV4LCBzdGQ6OnBhaXI8Y29uc3QgTmFtZSosIFJl
ZlB0cjxOYW1lU2VjdGlvbj4+JiYgbmFtZSwgVmVjdG9yPFVubGlua2VkV2FzbVRvV2FzbUNhbGw+
JiYgdW5saW5rZWRDYWxscywgU3RhY2tNYXBzJiYgc3RhY2ttYXBzLCBWZWN0b3I8VW5saW5rZWRI
YW5kbGVySW5mbz4mJiBleGNlcHRpb25IYW5kbGVycywgVmVjdG9yPENvZGVMb2NhdGlvbkxhYmVs
PEV4Y2VwdGlvbkhhbmRsZXJQdHJUYWc+PiYmIGV4Y2VwdGlvbkhhbmRsZXJMb2NhdGlvbnMpCiAg
ICAgICAgIDogT3B0aW1pemluZ0pJVENhbGxlZShXYXNtOjpDb21waWxhdGlvbk1vZGU6Ok9NR01v
ZGUsIFdURk1vdmUoZW50cnlwb2ludCksIGluZGV4LCBXVEZNb3ZlKG5hbWUpLCBXVEZNb3ZlKHVu
bGlua2VkQ2FsbHMpLCBXVEZNb3ZlKHN0YWNrbWFwcyksIFdURk1vdmUoZXhjZXB0aW9uSGFuZGxl
cnMpLCBXVEZNb3ZlKGV4Y2VwdGlvbkhhbmRsZXJMb2NhdGlvbnMpKQogICAgIHsKICAgICB9CkBA
IC0xNjUsNyArMTYyLDcgQEAgY2xhc3MgT01HQ2FsbGVlIGZpbmFsIDogcHVibGljIE9wdGltaXpp
bmdKSVRDYWxsZWUgewogCiBjbGFzcyBPTUdGb3JPU1JFbnRyeUNhbGxlZSBmaW5hbCA6IHB1Ymxp
YyBPcHRpbWl6aW5nSklUQ2FsbGVlIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPE9NR0Zvck9T
UkVudHJ5Q2FsbGVlPiBjcmVhdGUoV2FzbTo6RW50cnlwb2ludCYmIGVudHJ5cG9pbnQsIHNpemVf
dCBpbmRleCwgc3RkOjpwYWlyPGNvbnN0IE5hbWUqLCBSZWZQdHI8TmFtZVNlY3Rpb24+PiYmIG5h
bWUsIHVuc2lnbmVkIG9zckVudHJ5U2NyYXRjaEJ1ZmZlclNpemUsIHVpbnQzMl90IGxvb3BJbmRl
eCwgVmVjdG9yPFVubGlua2VkV2FzbVRvV2FzbUNhbGw+JiYgdW5saW5rZWRDYWxscywgSGFzaE1h
cDxDYWxsU2l0ZUluZGV4LCBWZWN0b3I8T1NSRW50cnlWYWx1ZT4+JiYgc3RhY2ttYXBzLCBWZWN0
b3I8VW5saW5rZWRIYW5kbGVySW5mbz4mJiBleGNlcHRpb25IYW5kbGVycywgVmVjdG9yPENvZGVM
b2NhdGlvbkxhYmVsPEV4Y2VwdGlvbkhhbmRsZXJQdHJUYWc+PiYmIGV4Y2VwdGlvbkhhbmRsZXJM
b2NhdGlvbnMpCisgICAgc3RhdGljIFJlZjxPTUdGb3JPU1JFbnRyeUNhbGxlZT4gY3JlYXRlKFdh
c206OkVudHJ5cG9pbnQmJiBlbnRyeXBvaW50LCBzaXplX3QgaW5kZXgsIHN0ZDo6cGFpcjxjb25z
dCBOYW1lKiwgUmVmUHRyPE5hbWVTZWN0aW9uPj4mJiBuYW1lLCB1bnNpZ25lZCBvc3JFbnRyeVNj
cmF0Y2hCdWZmZXJTaXplLCB1aW50MzJfdCBsb29wSW5kZXgsIFZlY3RvcjxVbmxpbmtlZFdhc21U
b1dhc21DYWxsPiYmIHVubGlua2VkQ2FsbHMsIFN0YWNrTWFwcyYmIHN0YWNrbWFwcywgVmVjdG9y
PFVubGlua2VkSGFuZGxlckluZm8+JiYgZXhjZXB0aW9uSGFuZGxlcnMsIFZlY3RvcjxDb2RlTG9j
YXRpb25MYWJlbDxFeGNlcHRpb25IYW5kbGVyUHRyVGFnPj4mJiBleGNlcHRpb25IYW5kbGVyTG9j
YXRpb25zKQogICAgIHsKICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgT01HRm9yT1NSRW50
cnlDYWxsZWUoV1RGTW92ZShlbnRyeXBvaW50KSwgaW5kZXgsIFdURk1vdmUobmFtZSksIG9zckVu
dHJ5U2NyYXRjaEJ1ZmZlclNpemUsIGxvb3BJbmRleCwgV1RGTW92ZSh1bmxpbmtlZENhbGxzKSwg
V1RGTW92ZShzdGFja21hcHMpLCBXVEZNb3ZlKGV4Y2VwdGlvbkhhbmRsZXJzKSwgV1RGTW92ZShl
eGNlcHRpb25IYW5kbGVyTG9jYXRpb25zKSkpOwogICAgIH0KQEAgLTE3NCw3ICsxNzEsNyBAQCBj
bGFzcyBPTUdGb3JPU1JFbnRyeUNhbGxlZSBmaW5hbCA6IHB1YmxpYyBPcHRpbWl6aW5nSklUQ2Fs
bGVlIHsKICAgICB1aW50MzJfdCBsb29wSW5kZXgoKSBjb25zdCB7IHJldHVybiBtX2xvb3BJbmRl
eDsgfQogCiBwcml2YXRlOgotICAgIE9NR0Zvck9TUkVudHJ5Q2FsbGVlKFdhc206OkVudHJ5cG9p
bnQmJiBlbnRyeXBvaW50LCBzaXplX3QgaW5kZXgsIHN0ZDo6cGFpcjxjb25zdCBOYW1lKiwgUmVm
UHRyPE5hbWVTZWN0aW9uPj4mJiBuYW1lLCB1bnNpZ25lZCBvc3JFbnRyeVNjcmF0Y2hCdWZmZXJT
aXplLCB1aW50MzJfdCBsb29wSW5kZXgsIFZlY3RvcjxVbmxpbmtlZFdhc21Ub1dhc21DYWxsPiYm
IHVubGlua2VkQ2FsbHMsIEhhc2hNYXA8Q2FsbFNpdGVJbmRleCwgVmVjdG9yPE9TUkVudHJ5VmFs
dWU+PiYmIHN0YWNrbWFwcywgVmVjdG9yPFVubGlua2VkSGFuZGxlckluZm8+JiYgZXhjZXB0aW9u
SGFuZGxlcnMsIFZlY3RvcjxDb2RlTG9jYXRpb25MYWJlbDxFeGNlcHRpb25IYW5kbGVyUHRyVGFn
Pj4mJiBleGNlcHRpb25IYW5kbGVyTG9jYXRpb25zKQorICAgIE9NR0Zvck9TUkVudHJ5Q2FsbGVl
KFdhc206OkVudHJ5cG9pbnQmJiBlbnRyeXBvaW50LCBzaXplX3QgaW5kZXgsIHN0ZDo6cGFpcjxj
b25zdCBOYW1lKiwgUmVmUHRyPE5hbWVTZWN0aW9uPj4mJiBuYW1lLCB1bnNpZ25lZCBvc3JFbnRy
eVNjcmF0Y2hCdWZmZXJTaXplLCB1aW50MzJfdCBsb29wSW5kZXgsIFZlY3RvcjxVbmxpbmtlZFdh
c21Ub1dhc21DYWxsPiYmIHVubGlua2VkQ2FsbHMsIFN0YWNrTWFwcyYmIHN0YWNrbWFwcywgVmVj
dG9yPFVubGlua2VkSGFuZGxlckluZm8+JiYgZXhjZXB0aW9uSGFuZGxlcnMsIFZlY3RvcjxDb2Rl
TG9jYXRpb25MYWJlbDxFeGNlcHRpb25IYW5kbGVyUHRyVGFnPj4mJiBleGNlcHRpb25IYW5kbGVy
TG9jYXRpb25zKQogICAgICAgICA6IE9wdGltaXppbmdKSVRDYWxsZWUoV2FzbTo6Q29tcGlsYXRp
b25Nb2RlOjpPTUdGb3JPU1JFbnRyeU1vZGUsIFdURk1vdmUoZW50cnlwb2ludCksIGluZGV4LCBX
VEZNb3ZlKG5hbWUpLCBXVEZNb3ZlKHVubGlua2VkQ2FsbHMpLCBXVEZNb3ZlKHN0YWNrbWFwcyks
IFdURk1vdmUoZXhjZXB0aW9uSGFuZGxlcnMpLCBXVEZNb3ZlKGV4Y2VwdGlvbkhhbmRsZXJMb2Nh
dGlvbnMpKQogICAgICAgICAsIG1fb3NyRW50cnlTY3JhdGNoQnVmZmVyU2l6ZShvc3JFbnRyeVNj
cmF0Y2hCdWZmZXJTaXplKQogICAgICAgICAsIG1fbG9vcEluZGV4KGxvb3BJbmRleCkKQEAgLTE4
Nyw3ICsxODQsNyBAQCBjbGFzcyBPTUdGb3JPU1JFbnRyeUNhbGxlZSBmaW5hbCA6IHB1YmxpYyBP
cHRpbWl6aW5nSklUQ2FsbGVlIHsKIAogY2xhc3MgQkJRQ2FsbGVlIGZpbmFsIDogcHVibGljIE9w
dGltaXppbmdKSVRDYWxsZWUgewogcHVibGljOgotICAgIHN0YXRpYyBSZWY8QkJRQ2FsbGVlPiBj
cmVhdGUoV2FzbTo6RW50cnlwb2ludCYmIGVudHJ5cG9pbnQsIHNpemVfdCBpbmRleCwgc3RkOjpw
YWlyPGNvbnN0IE5hbWUqLCBSZWZQdHI8TmFtZVNlY3Rpb24+PiYmIG5hbWUsIHN0ZDo6dW5pcXVl
X3B0cjxUaWVyVXBDb3VudD4mJiB0aWVyVXBDb3VudCwgVmVjdG9yPFVubGlua2VkV2FzbVRvV2Fz
bUNhbGw+JiYgdW5saW5rZWRDYWxscywgSGFzaE1hcDxDYWxsU2l0ZUluZGV4LCBWZWN0b3I8T1NS
RW50cnlWYWx1ZT4+JiYgc3RhY2ttYXBzLCBWZWN0b3I8VW5saW5rZWRIYW5kbGVySW5mbz4mJiBl
eGNlcHRpb25IYW5kbGVycywgVmVjdG9yPENvZGVMb2NhdGlvbkxhYmVsPEV4Y2VwdGlvbkhhbmRs
ZXJQdHJUYWc+PiYmIGV4Y2VwdGlvbkhhbmRsZXJMb2NhdGlvbnMpCisgICAgc3RhdGljIFJlZjxC
QlFDYWxsZWU+IGNyZWF0ZShXYXNtOjpFbnRyeXBvaW50JiYgZW50cnlwb2ludCwgc2l6ZV90IGlu
ZGV4LCBzdGQ6OnBhaXI8Y29uc3QgTmFtZSosIFJlZlB0cjxOYW1lU2VjdGlvbj4+JiYgbmFtZSwg
c3RkOjp1bmlxdWVfcHRyPFRpZXJVcENvdW50PiYmIHRpZXJVcENvdW50LCBWZWN0b3I8VW5saW5r
ZWRXYXNtVG9XYXNtQ2FsbD4mJiB1bmxpbmtlZENhbGxzLCBTdGFja01hcHMmJiBzdGFja21hcHMs
IFZlY3RvcjxVbmxpbmtlZEhhbmRsZXJJbmZvPiYmIGV4Y2VwdGlvbkhhbmRsZXJzLCBWZWN0b3I8
Q29kZUxvY2F0aW9uTGFiZWw8RXhjZXB0aW9uSGFuZGxlclB0clRhZz4+JiYgZXhjZXB0aW9uSGFu
ZGxlckxvY2F0aW9ucykKICAgICB7CiAgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEJCUUNh
bGxlZShXVEZNb3ZlKGVudHJ5cG9pbnQpLCBpbmRleCwgV1RGTW92ZShuYW1lKSwgV1RGTW92ZSh0
aWVyVXBDb3VudCksIFdURk1vdmUodW5saW5rZWRDYWxscyksIFdURk1vdmUoc3RhY2ttYXBzKSwg
V1RGTW92ZShleGNlcHRpb25IYW5kbGVycyksIFdURk1vdmUoZXhjZXB0aW9uSGFuZGxlckxvY2F0
aW9ucykpKTsKICAgICB9CkBAIC0yMTAsNyArMjA3LDcgQEAgY2xhc3MgQkJRQ2FsbGVlIGZpbmFs
IDogcHVibGljIE9wdGltaXppbmdKSVRDYWxsZWUgewogICAgIFRpZXJVcENvdW50KiB0aWVyVXBD
b3VudCgpIHsgcmV0dXJuIG1fdGllclVwQ291bnQuZ2V0KCk7IH0KIAogcHJpdmF0ZToKLSAgICBC
QlFDYWxsZWUoV2FzbTo6RW50cnlwb2ludCYmIGVudHJ5cG9pbnQsIHNpemVfdCBpbmRleCwgc3Rk
OjpwYWlyPGNvbnN0IE5hbWUqLCBSZWZQdHI8TmFtZVNlY3Rpb24+PiYmIG5hbWUsIHN0ZDo6dW5p
cXVlX3B0cjxUaWVyVXBDb3VudD4mJiB0aWVyVXBDb3VudCwgVmVjdG9yPFVubGlua2VkV2FzbVRv
V2FzbUNhbGw+JiYgdW5saW5rZWRDYWxscywgSGFzaE1hcDxDYWxsU2l0ZUluZGV4LCBWZWN0b3I8
T1NSRW50cnlWYWx1ZT4+JiYgc3RhY2ttYXBzLCBWZWN0b3I8VW5saW5rZWRIYW5kbGVySW5mbz4m
JiBleGNlcHRpb25IYW5kbGVycywgVmVjdG9yPENvZGVMb2NhdGlvbkxhYmVsPEV4Y2VwdGlvbkhh
bmRsZXJQdHJUYWc+PiYmIGV4Y2VwdGlvbkhhbmRsZXJMb2NhdGlvbnMpCisgICAgQkJRQ2FsbGVl
KFdhc206OkVudHJ5cG9pbnQmJiBlbnRyeXBvaW50LCBzaXplX3QgaW5kZXgsIHN0ZDo6cGFpcjxj
b25zdCBOYW1lKiwgUmVmUHRyPE5hbWVTZWN0aW9uPj4mJiBuYW1lLCBzdGQ6OnVuaXF1ZV9wdHI8
VGllclVwQ291bnQ+JiYgdGllclVwQ291bnQsIFZlY3RvcjxVbmxpbmtlZFdhc21Ub1dhc21DYWxs
PiYmIHVubGlua2VkQ2FsbHMsIFN0YWNrTWFwcyYmIHN0YWNrbWFwcywgVmVjdG9yPFVubGlua2Vk
SGFuZGxlckluZm8+JiYgZXhjZXB0aW9uSGFuZGxlcnMsIFZlY3RvcjxDb2RlTG9jYXRpb25MYWJl
bDxFeGNlcHRpb25IYW5kbGVyUHRyVGFnPj4mJiBleGNlcHRpb25IYW5kbGVyTG9jYXRpb25zKQog
ICAgICAgICA6IE9wdGltaXppbmdKSVRDYWxsZWUoV2FzbTo6Q29tcGlsYXRpb25Nb2RlOjpCQlFN
b2RlLCBXVEZNb3ZlKGVudHJ5cG9pbnQpLCBpbmRleCwgV1RGTW92ZShuYW1lKSwgV1RGTW92ZSh1
bmxpbmtlZENhbGxzKSwgV1RGTW92ZShzdGFja21hcHMpLCBXVEZNb3ZlKGV4Y2VwdGlvbkhhbmRs
ZXJzKSwgV1RGTW92ZShleGNlcHRpb25IYW5kbGVyTG9jYXRpb25zKSkKICAgICAgICAgLCBtX3Rp
ZXJVcENvdW50KFdURk1vdmUodGllclVwQ291bnQpKQogICAgIHsKQEAgLTI5MCw3ICsyODcsNyBA
QCBjbGFzcyBMTEludENhbGxlZXMgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8TExJbnRD
YWxsZWVzPiB7CiAgICAgewogICAgIH0KIAotICAgIFZlY3RvcjxSZWY8TExJbnRDYWxsZWU+PiBt
X2xsaW50Q2FsbGVlczsKKyAgICBGaXhlZFZlY3RvcjxSZWY8TExJbnRDYWxsZWU+PiBtX2xsaW50
Q2FsbGVlczsKIH07CiAKIH0gfSAvLyBuYW1lc3BhY2UgSlNDOjpXYXNtCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtSGFuZGxlckluZm8uY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3dhc20vV2FzbUhhbmRsZXJJbmZvLmNwcAppbmRleCBhNTdiY2Y0OWJiMmNl
YTE3NTBmZmI2YmYxZTU1YTc4MjNkZjEzNjIyLi40YjU4OWU1NWI3MDBmODZlNGI5NGU1NGRlNGQz
NmViZjExYzk3NmNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNt
SGFuZGxlckluZm8uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21IYW5k
bGVySW5mby5jcHAKQEAgLTU3LDcgKzU3LDcgQEAgdm9pZCBIYW5kbGVySW5mbzo6aW5pdGlhbGl6
ZShjb25zdCBVbmxpbmtlZEhhbmRsZXJJbmZvJiB1bmxpbmtlZEluZm8sIE1hY3JvQXNzZW0KICAg
ICB9CiB9CiAKLWNvbnN0IEhhbmRsZXJJbmZvKiBIYW5kbGVySW5mbzo6aGFuZGxlckZvckluZGV4
KEluc3RhbmNlJiBpbnN0YW5jZSwgY29uc3QgVmVjdG9yPEhhbmRsZXJJbmZvPiYgZXhlcHRpb25I
YW5kbGVycywgdW5zaWduZWQgaW5kZXgsIGNvbnN0IFdhc206OlRhZyogZXhjZXB0aW9uVGFnKQor
Y29uc3QgSGFuZGxlckluZm8qIEhhbmRsZXJJbmZvOjpoYW5kbGVyRm9ySW5kZXgoSW5zdGFuY2Um
IGluc3RhbmNlLCBjb25zdCBGaXhlZFZlY3RvcjxIYW5kbGVySW5mbz4mIGV4ZXB0aW9uSGFuZGxl
cnMsIHVuc2lnbmVkIGluZGV4LCBjb25zdCBXYXNtOjpUYWcqIGV4Y2VwdGlvblRhZykKIHsKICAg
ICBib29sIGRlbGVnYXRpbmcgPSBmYWxzZTsKICAgICB1bnNpZ25lZCBkZWxlZ2F0ZVRhcmdldCA9
IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtSGFuZGxlcklu
Zm8uaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21IYW5kbGVySW5mby5oCmluZGV4
IGMyNTExOTNkMjEzMTc5ZWJkZTk5NTQ0YzI1M2VkNDk4OWQyZjY0M2UuLmE3MGJjN2M1NWM2Yzcz
OGU4NGUzMWY5M2I0Nzc2ZTk4Mjg2ZGRhNDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS93YXNtL1dhc21IYW5kbGVySW5mby5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93
YXNtL1dhc21IYW5kbGVySW5mby5oCkBAIC02OCw3ICs2OCw3IEBAIHN0cnVjdCBVbmxpbmtlZEhh
bmRsZXJJbmZvIDogcHVibGljIEhhbmRsZXJJbmZvQmFzZSB7CiB9OwogCiBzdHJ1Y3QgSGFuZGxl
ckluZm8gOiBwdWJsaWMgSGFuZGxlckluZm9CYXNlIHsKLSAgICBzdGF0aWMgY29uc3QgSGFuZGxl
ckluZm8qIGhhbmRsZXJGb3JJbmRleChJbnN0YW5jZSYsIGNvbnN0IFZlY3RvcjxIYW5kbGVySW5m
bz4mIGV4ZXB0aW9uSGFuZGxlcnMsIHVuc2lnbmVkIGluZGV4LCBjb25zdCBXYXNtOjpUYWcqIGV4
Y2VwdGlvblRhZyk7CisgICAgc3RhdGljIGNvbnN0IEhhbmRsZXJJbmZvKiBoYW5kbGVyRm9ySW5k
ZXgoSW5zdGFuY2UmLCBjb25zdCBGaXhlZFZlY3RvcjxIYW5kbGVySW5mbz4mIGV4ZXB0aW9uSGFu
ZGxlcnMsIHVuc2lnbmVkIGluZGV4LCBjb25zdCBXYXNtOjpUYWcqIGV4Y2VwdGlvblRhZyk7CiAK
ICAgICB2b2lkIGluaXRpYWxpemUoY29uc3QgVW5saW5rZWRIYW5kbGVySW5mbyYsIE1hY3JvQXNz
ZW1ibGVyQ29kZVB0cjxFeGNlcHRpb25IYW5kbGVyUHRyVGFnPik7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21PU1JFbnRyeURhdGEuaCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS93YXNtL1dhc21PU1JFbnRyeURhdGEuaAppbmRleCBkOTNmMzQyY2U2NDJkMmM2
NjM5ZjY5MDY1OWU2YTI1YjNhMGE3ODI2Li5iMGRhMTY1ODEwY2NlZmY3NjU5ODIyYjk4ZmEyZjIx
OGVmYjkzZTUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtT1NS
RW50cnlEYXRhLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbU9TUkVudHJ5
RGF0YS5oCkBAIC0zMyw4ICszMyw5IEBACiAKIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgV2Fz
bSB7CiAKLWNsYXNzIE9TUkVudHJ5VmFsdWUgOiBwdWJsaWMgQjM6OlZhbHVlUmVwIHsKK2NsYXNz
IE9TUkVudHJ5VmFsdWUgZmluYWwgOiBwdWJsaWMgQjM6OlZhbHVlUmVwIHsKIHB1YmxpYzoKKyAg
ICBPU1JFbnRyeVZhbHVlKCkgPSBkZWZhdWx0OwogICAgIE9TUkVudHJ5VmFsdWUoY29uc3QgQjM6
OlZhbHVlUmVwJiB2YWx1ZVJlcCwgQjM6OlR5cGUgdHlwZSkKICAgICAgICAgOiBCMzo6VmFsdWVS
ZXAodmFsdWVSZXApCiAgICAgICAgICwgbV90eXBlKHR5cGUpCkBAIC00NCwyNSArNDUsMjYgQEAg
Y2xhc3MgT1NSRW50cnlWYWx1ZSA6IHB1YmxpYyBCMzo6VmFsdWVSZXAgewogICAgIEIzOjpUeXBl
IHR5cGUoKSBjb25zdCB7IHJldHVybiBtX3R5cGU7IH0KIAogcHJpdmF0ZToKLSAgICBCMzo6VHlw
ZSBtX3R5cGU7CisgICAgQjM6OlR5cGUgbV90eXBlIHsgfTsKIH07CiAKLXVzaW5nIFN0YWNrTWFw
ID0gVmVjdG9yPE9TUkVudHJ5VmFsdWU+OwordXNpbmcgU3RhY2tNYXAgPSBGaXhlZFZlY3RvcjxP
U1JFbnRyeVZhbHVlPjsKIHVzaW5nIFN0YWNrTWFwcyA9IEhhc2hNYXA8Q2FsbFNpdGVJbmRleCwg
U3RhY2tNYXA+OwogCiBjbGFzcyBPU1JFbnRyeURhdGEgewogICAgIFdURl9NQUtFX05PTkNPUFlB
QkxFKE9TUkVudHJ5RGF0YSk7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6
Ci0gICAgT1NSRW50cnlEYXRhKHVpbnQzMl90IGZ1bmN0aW9uSW5kZXgsIHVpbnQzMl90IGxvb3BJ
bmRleCkKKyAgICBPU1JFbnRyeURhdGEodWludDMyX3QgZnVuY3Rpb25JbmRleCwgdWludDMyX3Qg
bG9vcEluZGV4LCBTdGFja01hcCYmIHN0YWNrTWFwKQogICAgICAgICA6IG1fZnVuY3Rpb25JbmRl
eChmdW5jdGlvbkluZGV4KQogICAgICAgICAsIG1fbG9vcEluZGV4KGxvb3BJbmRleCkKKyAgICAg
ICAgLCBtX3ZhbHVlcyhXVEZNb3ZlKHN0YWNrTWFwKSkKICAgICB7CiAgICAgfQogCiAgICAgdWlu
dDMyX3QgZnVuY3Rpb25JbmRleCgpIGNvbnN0IHsgcmV0dXJuIG1fZnVuY3Rpb25JbmRleDsgfQog
ICAgIHVpbnQzMl90IGxvb3BJbmRleCgpIGNvbnN0IHsgcmV0dXJuIG1fbG9vcEluZGV4OyB9Ci0g
ICAgU3RhY2tNYXAmIHZhbHVlcygpIHsgcmV0dXJuIG1fdmFsdWVzOyB9CisgICAgY29uc3QgU3Rh
Y2tNYXAmIHZhbHVlcygpIHsgcmV0dXJuIG1fdmFsdWVzOyB9CiAKIHByaXZhdGU6CiAgICAgdWlu
dDMyX3QgbV9mdW5jdGlvbkluZGV4OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3dhc20vV2FzbVBsYW4uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbVBsYW4u
Y3BwCmluZGV4IDI4NTBiNmM5Y2ZjOWRlZDgxNmFiYmE3MGVhOTIyODNiNzc0MTE2M2UuLjFjMWI3
YjY1OTcwMDA5YjhmNTc1ZWFkMmE2MWVkYTZmYTkyYjdiM2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS93YXNtL1dhc21QbGFuLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvd2FzbS9XYXNtUGxhbi5jcHAKQEAgLTEyNyw3ICsxMjcsNyBAQCB2b2lkIFBsYW46OmZhaWwo
U3RyaW5nJiYgZXJyb3JNZXNzYWdlKQogdm9pZCBQbGFuOjp1cGRhdGVDYWxsU2l0ZXNUb0NhbGxV
cyhDb2RlQmxvY2smIGNvZGVCbG9jaywgQ29kZUxvY2F0aW9uTGFiZWw8V2FzbUVudHJ5UHRyVGFn
PiBlbnRyeXBvaW50LCB1aW50MzJfdCBmdW5jdGlvbkluZGV4LCB1aW50MzJfdCBmdW5jdGlvbklu
ZGV4U3BhY2UpCiB7CiAgICAgSGFzaE1hcDx2b2lkKiwgQ29kZUxvY2F0aW9uTGFiZWw8V2FzbUVu
dHJ5UHRyVGFnPj4gc3RhZ2VkQ2FsbHM7Ci0gICAgYXV0byBzdGFnZVJlcGF0Y2ggPSBbJl0gKGNv
bnN0IFZlY3RvcjxVbmxpbmtlZFdhc21Ub1dhc21DYWxsPiYgY2FsbHNpdGVzKSB7CisgICAgYXV0
byBzdGFnZVJlcGF0Y2ggPSBbJl0gKGNvbnN0IGF1dG8mIGNhbGxzaXRlcykgewogICAgICAgICBm
b3IgKGF1dG8mIGNhbGwgOiBjYWxsc2l0ZXMpIHsKICAgICAgICAgICAgIGlmIChjYWxsLmZ1bmN0
aW9uSW5kZXhTcGFjZSA9PSBmdW5jdGlvbkluZGV4U3BhY2UpIHsKICAgICAgICAgICAgICAgICBD
b2RlTG9jYXRpb25MYWJlbDxXYXNtRW50cnlQdHJUYWc+IHRhcmdldCA9IE1hY3JvQXNzZW1ibGVy
OjpwcmVwYXJlRm9yQXRvbWljUmVwYXRjaE5lYXJDYWxsQ29uY3VycmVudGx5KGNhbGwuY2FsbExv
Y2F0aW9uLCBlbnRyeXBvaW50KTsKQEAgLTE2MCw3ICsxNjAsNyBAQCB2b2lkIFBsYW46OnVwZGF0
ZUNhbGxTaXRlc1RvQ2FsbFVzKENvZGVCbG9jayYgY29kZUJsb2NrLCBDb2RlTG9jYXRpb25MYWJl
bDxXYXNtRQogCiAgICAgY29kZUJsb2NrLm1fd2FzbUluZGlyZWN0Q2FsbEVudHJ5UG9pbnRzW2Z1
bmN0aW9uSW5kZXhdID0gZW50cnlwb2ludDsKIAotICAgIGF1dG8gcmVwYXRjaENhbGxzID0gWyZd
IChjb25zdCBWZWN0b3I8VW5saW5rZWRXYXNtVG9XYXNtQ2FsbD4mIGNhbGxzaXRlcykgeworICAg
IGF1dG8gcmVwYXRjaENhbGxzID0gWyZdIChjb25zdCBhdXRvJiBjYWxsc2l0ZXMpIHsKICAgICAg
ICAgZm9yIChhdXRvJiBjYWxsIDogY2FsbHNpdGVzKSB7CiAgICAgICAgICAgICBkYXRhTG9nTG5J
ZihXYXNtUGxhbkludGVybmFsOjp2ZXJib3NlLCAiQ29uc2lkZXJpbmcgcmVwYXRjaGluZyBjYWxs
IGF0OiAiLCBSYXdQb2ludGVyKGNhbGwuY2FsbExvY2F0aW9uLmRhdGFMb2NhdGlvbigpKSwgIiB0
aGF0IHRhcmdldHMgIiwgY2FsbC5mdW5jdGlvbkluZGV4U3BhY2UpOwogICAgICAgICAgICAgaWYg
KGNhbGwuZnVuY3Rpb25JbmRleFNwYWNlID09IGZ1bmN0aW9uSW5kZXhTcGFjZSkgewpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbVRpZXJVcENvdW50LmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21UaWVyVXBDb3VudC5jcHAKaW5kZXggOThjZjM4
YjM4MWMyNmI1ODdmOTNmZDY1ZjI4MmQ0MzI4YWJiYmJiMi4uMTBkMzNlNDk4NjhmMjg2OTdhZDMw
OTlhMjJiYzAxOWRhOWY1ZmI5MiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dh
c20vV2FzbVRpZXJVcENvdW50LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9X
YXNtVGllclVwQ291bnQuY3BwCkBAIC0zOSw5ICszOSw5IEBAIFRpZXJVcENvdW50OjpUaWVyVXBD
b3VudCgpCiAKIFRpZXJVcENvdW50Ojp+VGllclVwQ291bnQoKSA9IGRlZmF1bHQ7CiAKLU9TUkVu
dHJ5RGF0YSYgVGllclVwQ291bnQ6OmFkZE9TUkVudHJ5RGF0YSh1aW50MzJfdCBmdW5jdGlvbklu
ZGV4LCB1aW50MzJfdCBsb29wSW5kZXgpCitPU1JFbnRyeURhdGEmIFRpZXJVcENvdW50OjphZGRP
U1JFbnRyeURhdGEodWludDMyX3QgZnVuY3Rpb25JbmRleCwgdWludDMyX3QgbG9vcEluZGV4LCBT
dGFja01hcCYmIHN0YWNrTWFwKQogewotICAgIG1fb3NyRW50cnlEYXRhLmFwcGVuZChtYWtlVW5p
cXVlPE9TUkVudHJ5RGF0YT4oZnVuY3Rpb25JbmRleCwgbG9vcEluZGV4KSk7CisgICAgbV9vc3JF
bnRyeURhdGEuYXBwZW5kKG1ha2VVbmlxdWU8T1NSRW50cnlEYXRhPihmdW5jdGlvbkluZGV4LCBs
b29wSW5kZXgsIFdURk1vdmUoc3RhY2tNYXApKSk7CiAgICAgcmV0dXJuICptX29zckVudHJ5RGF0
YS5sYXN0KCkuZ2V0KCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93
YXNtL1dhc21UaWVyVXBDb3VudC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbVRp
ZXJVcENvdW50LmgKaW5kZXggMWMwZDk0Y2Y4YWY4NTEyNjFjYjE1NWVhN2ZlMjMxMmJlNTJkMTA1
Mi4uM2YzNGQ5MzBlOWE1M2ZiN2ZlYTZiYzYyNGM1MWU5MjgxYjk4ZTBjYiAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbVRpZXJVcENvdW50LmgKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbVRpZXJVcENvdW50LmgKQEAgLTY4LDcgKzY4LDcgQEAg
Y2xhc3MgVGllclVwQ291bnQgOiBwdWJsaWMgVXBwZXJUaWVyRXhlY3V0aW9uQ291bnRlciB7CiAg
ICAgVmVjdG9yPHVpbnQzMl90PiYgb3V0ZXJMb29wcygpIHsgcmV0dXJuIG1fb3V0ZXJMb29wczsg
fQogICAgIExvY2smIGdldExvY2soKSB7IHJldHVybiBtX2xvY2s7IH0KIAotICAgIE9TUkVudHJ5
RGF0YSYgYWRkT1NSRW50cnlEYXRhKHVpbnQzMl90IGZ1bmN0aW9uSW5kZXgsIHVpbnQzMl90IGxv
b3BJbmRleCk7CisgICAgT1NSRW50cnlEYXRhJiBhZGRPU1JFbnRyeURhdGEodWludDMyX3QgZnVu
Y3Rpb25JbmRleCwgdWludDMyX3QgbG9vcEluZGV4LCBTdGFja01hcCYmKTsKIAogICAgIHZvaWQg
b3B0aW1pemVBZnRlcldhcm1VcCh1aW50MzJfdCBmdW5jdGlvbkluZGV4KQogICAgIHsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL0pTV2ViQXNzZW1ibHlDb2RlQmxv
Y2suY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvSlNXZWJBc3NlbWJseUNvZGVC
bG9jay5jcHAKaW5kZXggNTRlOTc0MTRiNjYyNjAzNGYxMzBlMTVkNDkzZDdjOTUwZTM4MTU3NS4u
OWU0YmIyM2U2Y2RmZDIzN2RiMjAxOTcxY2ZiMDhmZDE3NTY1MTJkZCAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvSlNXZWJBc3NlbWJseUNvZGVCbG9jay5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvSlNXZWJBc3NlbWJseUNvZGVCbG9jay5j
cHAKQEAgLTQ3LDEwICs0NywxMCBAQCBKU1dlYkFzc2VtYmx5Q29kZUJsb2NrKiBKU1dlYkFzc2Vt
Ymx5Q29kZUJsb2NrOjpjcmVhdGUoVk0mIHZtLCBSZWY8V2FzbTo6Q29kZUJsbwogSlNXZWJBc3Nl
bWJseUNvZGVCbG9jazo6SlNXZWJBc3NlbWJseUNvZGVCbG9jayhWTSYgdm0sIFJlZjxXYXNtOjpD
b2RlQmxvY2s+JiYgY29kZUJsb2NrLCBjb25zdCBXYXNtOjpNb2R1bGVJbmZvcm1hdGlvbiYgbW9k
dWxlSW5mb3JtYXRpb24pCiAgICAgOiBCYXNlKHZtLCB2bS53ZWJBc3NlbWJseUNvZGVCbG9ja1N0
cnVjdHVyZS5nZXQoKSkKICAgICAsIG1fY29kZUJsb2NrKFdURk1vdmUoY29kZUJsb2NrKSkKKyAg
ICAsIG1fd2FzbVRvSlNFeGl0U3R1YnMobV9jb2RlQmxvY2stPmZ1bmN0aW9uSW1wb3J0Q291bnQo
KSkKIHsKICAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIG5vdCBuZWVkIHRvIGRvIHRoaXMgc3luY2hy
b25vdXNseS4KICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTcwNTY3Ci0gICAgbV93YXNtVG9KU0V4aXRTdHVicy5yZXNlcnZlQ2FwYWNpdHkobV9jb2RlQmxv
Y2stPmZ1bmN0aW9uSW1wb3J0Q291bnQoKSk7CiAgICAgZm9yICh1bnNpZ25lZCBpbXBvcnRJbmRl
eCA9IDA7IGltcG9ydEluZGV4IDwgbV9jb2RlQmxvY2stPmZ1bmN0aW9uSW1wb3J0Q291bnQoKTsg
KytpbXBvcnRJbmRleCkgewogICAgICAgICBXYXNtOjpTaWduYXR1cmVJbmRleCBzaWduYXR1cmVJ
bmRleCA9IG1vZHVsZUluZm9ybWF0aW9uLmltcG9ydEZ1bmN0aW9uU2lnbmF0dXJlSW5kaWNlcy5h
dChpbXBvcnRJbmRleCk7CiAgICAgICAgIGF1dG8gYmluZGluZyA9IFdhc206Ondhc21Ub0pTKHZt
LCBtX2NhbGxMaW5rSW5mb3MsIHNpZ25hdHVyZUluZGV4LCBpbXBvcnRJbmRleCk7CkBAIC02Miw3
ICs2Miw3IEBAIEpTV2ViQXNzZW1ibHlDb2RlQmxvY2s6OkpTV2ViQXNzZW1ibHlDb2RlQmxvY2so
Vk0mIHZtLCBSZWY8V2FzbTo6Q29kZUJsb2NrPiYmIGNvCiAgICAgICAgICAgICB9CiAgICAgICAg
ICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICB9Ci0gICAgICAgIG1f
d2FzbVRvSlNFeGl0U3R1YnMudW5jaGVja2VkQXBwZW5kKGJpbmRpbmcudmFsdWUoKSk7CisgICAg
ICAgIG1fd2FzbVRvSlNFeGl0U3R1YnNbaW1wb3J0SW5kZXhdID0gYmluZGluZy52YWx1ZSgpOwog
ICAgIH0KIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvSlNX
ZWJBc3NlbWJseUNvZGVCbG9jay5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvSlNX
ZWJBc3NlbWJseUNvZGVCbG9jay5oCmluZGV4IDgxNWRhZDgyN2YxMWMwMDNhYTUwYTdhNjc2Yjg2
NTA5ZGQ0NjE0MWUuLjFiMzBkMmZjMGQwNzU2ZGExMmI5NGNkMjU1OTM3OGM1Y2ZhYTQ4YmMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL0pTV2ViQXNzZW1ibHlDb2Rl
QmxvY2suaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9KU1dlYkFzc2VtYmx5
Q29kZUJsb2NrLmgKQEAgLTg5LDcgKzg5LDcgQEAgY2xhc3MgSlNXZWJBc3NlbWJseUNvZGVCbG9j
ayBmaW5hbCA6IHB1YmxpYyBKU0NlbGwgewogICAgIERFQ0xBUkVfVklTSVRfQ0hJTERSRU47CiAK
ICAgICBSZWY8V2FzbTo6Q29kZUJsb2NrPiBtX2NvZGVCbG9jazsKLSAgICBWZWN0b3I8TWFjcm9B
c3NlbWJsZXJDb2RlUmVmPFdhc21FbnRyeVB0clRhZz4+IG1fd2FzbVRvSlNFeGl0U3R1YnM7Cisg
ICAgRml4ZWRWZWN0b3I8TWFjcm9Bc3NlbWJsZXJDb2RlUmVmPFdhc21FbnRyeVB0clRhZz4+IG1f
d2FzbVRvSlNFeGl0U3R1YnM7CiAgICAgQmFnPE9wdGltaXppbmdDYWxsTGlua0luZm8+IG1fY2Fs
bExpbmtJbmZvczsKICAgICBTdHJpbmcgbV9lcnJvck1lc3NhZ2U7CiB9Owo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>446926</attachid>
            <date>2021-12-12 00:35:00 -0800</date>
            <delta_ts>2021-12-12 01:25:34 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-234206-20211212003500.patch</filename>
            <type>text/plain</type>
            <size>27664</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg2OTIyCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBk
ZmIxYTBjMDI2YWE2NTAwZjViZDU2ZjJiNzZlYmVmNTlkMWRhNzk0Li5mODEwMDEyNmM0YWExMGFi
ZWY3ZTQwOWMxMjdlOWVjZGVjYzVlZmU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw0MiBAQAorMjAyMS0xMi0xMiAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29t
PgorCisgICAgICAgIFtKU0NdIFVzZSBGaXhlZFZlY3RvciB0byBzaHJpbmsgc29tZSBvZiBXYXNt
IGRhdGEgc3RydWN0dXJlcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MjM0MjA2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgV2UgY2FuIHVzZSBGaXhlZFZlY3RvciB0byBzaHJpbmsgc29tZSBvZiBXYXNtIGRh
dGEgc3RydWN0dXJlcyBpbmNsdWRpbmcgV2FzbTo6Q2FsbGVlLgorCisgICAgICAgICogd2FzbS9X
YXNtQWlySVJHZW5lcmF0b3IuY3BwOgorICAgICAgICAoSlNDOjpXYXNtOjpBaXJJUkdlbmVyYXRv
cjo6ZW1pdExvb3BUaWVyVXBDaGVjayk6CisgICAgICAgICogd2FzbS9XYXNtQjNJUkdlbmVyYXRv
ci5jcHA6CisgICAgICAgIChKU0M6Oldhc206OlBhdGNocG9pbnRFeGNlcHRpb25IYW5kbGU6Omdl
bmVyYXRlIGNvbnN0KToKKyAgICAgICAgKEpTQzo6V2FzbTo6QjNJUkdlbmVyYXRvcjo6ZW1pdExv
b3BUaWVyVXBDaGVjayk6CisgICAgICAgICogd2FzbS9XYXNtQ2FsbGVlLmNwcDoKKyAgICAgICAg
KEpTQzo6V2FzbTo6TExJbnRDYWxsZWU6OmxpbmtFeGNlcHRpb25IYW5kbGVycyk6CisgICAgICAg
IChKU0M6Oldhc206Ok9wdGltaXppbmdKSVRDYWxsZWU6OmxpbmtFeGNlcHRpb25IYW5kbGVycyk6
CisgICAgICAgIChKU0M6Oldhc206Ok9wdGltaXppbmdKSVRDYWxsZWU6OnN0YWNrbWFwIGNvbnN0
KToKKyAgICAgICAgKiB3YXNtL1dhc21DYWxsZWUuaDoKKyAgICAgICAgKEpTQzo6V2FzbTo6Q2Fs
bGVlOjpoYXNFeGNlcHRpb25IYW5kbGVycyBjb25zdCk6CisgICAgICAgIChKU0M6Oldhc206OkpJ
VENhbGxlZTo6d2FzbVRvV2FzbUNhbGxzaXRlcyk6CisgICAgICAgIChKU0M6Oldhc206Ok9wdGlt
aXppbmdKSVRDYWxsZWU6Ok9wdGltaXppbmdKSVRDYWxsZWUpOgorICAgICAgICAqIHdhc20vV2Fz
bUhhbmRsZXJJbmZvLmNwcDoKKyAgICAgICAgKEpTQzo6V2FzbTo6SGFuZGxlckluZm86OmhhbmRs
ZXJGb3JJbmRleCk6CisgICAgICAgICogd2FzbS9XYXNtSGFuZGxlckluZm8uaDoKKyAgICAgICAg
KiB3YXNtL1dhc21PU1JFbnRyeURhdGEuaDoKKyAgICAgICAgKEpTQzo6V2FzbTo6T1NSRW50cnlE
YXRhOjpPU1JFbnRyeURhdGEpOgorICAgICAgICAoSlNDOjpXYXNtOjpPU1JFbnRyeURhdGE6OnZh
bHVlcyk6CisgICAgICAgIChKU0M6Oldhc206Ok9TUkVudHJ5VmFsdWU6Ok9TUkVudHJ5VmFsdWUp
OiBEZWxldGVkLgorICAgICAgICAoSlNDOjpXYXNtOjpPU1JFbnRyeVZhbHVlOjp0eXBlIGNvbnN0
KTogRGVsZXRlZC4KKyAgICAgICAgKiB3YXNtL1dhc21QbGFuLmNwcDoKKyAgICAgICAgKEpTQzo6
V2FzbTo6UGxhbjo6dXBkYXRlQ2FsbFNpdGVzVG9DYWxsVXMpOgorICAgICAgICAqIHdhc20vV2Fz
bVRpZXJVcENvdW50LmNwcDoKKyAgICAgICAgKEpTQzo6V2FzbTo6VGllclVwQ291bnQ6OmFkZE9T
UkVudHJ5RGF0YSk6CisgICAgICAgICogd2FzbS9XYXNtVGllclVwQ291bnQuaDoKKyAgICAgICAg
KiB3YXNtL2pzL0pTV2ViQXNzZW1ibHlDb2RlQmxvY2suY3BwOgorICAgICAgICAoSlNDOjpKU1dl
YkFzc2VtYmx5Q29kZUJsb2NrOjpKU1dlYkFzc2VtYmx5Q29kZUJsb2NrKToKKyAgICAgICAgKiB3
YXNtL2pzL0pTV2ViQXNzZW1ibHlDb2RlQmxvY2suaDoKKwogMjAyMS0xMi0xMSAgU2FhbSBCYXJh
dGkgIDxzYmFyYXRpQGFwcGxlLmNvbT4KIAogICAgICAgICBUZWFjaCB0aGUgc2FtcGxpbmcgcHJv
ZmlsZXIgaG93IHRvIGRpc3BsYXkgb3JpZ2luIGRhdGEgZm9yIEIzIFdhc20KZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21BaXJJUkdlbmVyYXRvci5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtQWlySVJHZW5lcmF0b3IuY3BwCmluZGV4IGVlOGJi
ZWY3NzQ5NGViMzIwNDE5ZGE5M2IyOTA1YTU1MDA1Y2M4ZTkuLjk1MGVjNWNjMmQyYWY2ZWY5Zjhm
NTZhMzY3MGRhOWRhZTIzZjRkN2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93
YXNtL1dhc21BaXJJUkdlbmVyYXRvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dh
c20vV2FzbUFpcklSR2VuZXJhdG9yLmNwcApAQCAtMjkyNCwxMCArMjkyNCwxMyBAQCB2b2lkIEFp
cklSR2VuZXJhdG9yOjplbWl0TG9vcFRpZXJVcENoZWNrKHVpbnQzMl90IGxvb3BJbmRleCwgY29u
c3QgU3RhY2smIGVuY2xvcwogICAgICAgICBDQ2FsbEhlbHBlcnM6Okp1bXAgdGllclVwID0gaml0
LmJyYW5jaEFkZDMyKENDYWxsSGVscGVyczo6UG9zaXRpdmVPclplcm8sIENDYWxsSGVscGVyczo6
VHJ1c3RlZEltbTMyKFRpZXJVcENvdW50Ojpsb29wSW5jcmVtZW50KCkpLCBDQ2FsbEhlbHBlcnM6
OkFkZHJlc3MocGFyYW1zWzBdLmdwcigpKSk7CiAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpMYWJl
bCB0aWVyVXBSZXN1bWUgPSBqaXQubGFiZWwoKTsKIAotICAgICAgICBPU1JFbnRyeURhdGEmIG9z
ckVudHJ5RGF0YSA9IG1fdGllclVwLT5hZGRPU1JFbnRyeURhdGEobV9mdW5jdGlvbkluZGV4LCBs
b29wSW5kZXgpOwogICAgICAgICAvLyBGaXJzdCBhcmd1bWVudCBpcyB0aGUgY291bnRkb3duIGxv
Y2F0aW9uLgotICAgICAgICBmb3IgKHVuc2lnbmVkIGluZGV4ID0gMTsgaW5kZXggPCBwYXJhbXMu
dmFsdWUoKS0+bnVtQ2hpbGRyZW4oKTsgKytpbmRleCkKLSAgICAgICAgICAgIG9zckVudHJ5RGF0
YS52YWx1ZXMoKS5jb25zdHJ1Y3RBbmRBcHBlbmQocGFyYW1zW2luZGV4XSwgcGFyYW1zLnZhbHVl
KCktPmNoaWxkKGluZGV4KS0+dHlwZSgpKTsKKyAgICAgICAgQVNTRVJUKHBhcmFtcy52YWx1ZSgp
LT5udW1DaGlsZHJlbigpID49IDEpOworICAgICAgICBTdGFja01hcCB2YWx1ZXMocGFyYW1zLnZh
bHVlKCktPm51bUNoaWxkcmVuKCkgLSAxKTsKKyAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMTsg
aSA8IHBhcmFtcy52YWx1ZSgpLT5udW1DaGlsZHJlbigpOyArK2kpCisgICAgICAgICAgICB2YWx1
ZXNbaSAtIDFdID0gT1NSRW50cnlWYWx1ZShwYXJhbXNbaV0sIHBhcmFtcy52YWx1ZSgpLT5jaGls
ZChpKS0+dHlwZSgpKTsKKworICAgICAgICBPU1JFbnRyeURhdGEmIG9zckVudHJ5RGF0YSA9IG1f
dGllclVwLT5hZGRPU1JFbnRyeURhdGEobV9mdW5jdGlvbkluZGV4LCBsb29wSW5kZXgsIFdURk1v
dmUodmFsdWVzKSk7CiAgICAgICAgIE9TUkVudHJ5RGF0YSogb3NyRW50cnlEYXRhUHRyID0gJm9z
ckVudHJ5RGF0YTsKIAogICAgICAgICBwYXJhbXMuYWRkTGF0ZVBhdGgoWz1dIChDQ2FsbEhlbHBl
cnMmIGppdCkgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUIz
SVJHZW5lcmF0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUIzSVJHZW5l
cmF0b3IuY3BwCmluZGV4IGRjODNiMTYyMTBlNzE0MmIxNTEzOGJhMGEwZmI1MzkwNTk3MjNlN2Eu
LmE4NTFkNzEzODcwMWQwZGI2Y2EwNmNmYzQ4ZDYyNzc2MTI5MGJmNGYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21CM0lSR2VuZXJhdG9yLmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtQjNJUkdlbmVyYXRvci5jcHAKQEAgLTU4Myw4ICs1
ODMsMTEgQEAgdm9pZCBQYXRjaHBvaW50RXhjZXB0aW9uSGFuZGxlOjpnZW5lcmF0ZShDQ2FsbEhl
bHBlcnMmIGppdCwgY29uc3QgQjM6OlN0YWNrbWFwR2UKICAgICAgICAgcmV0dXJuOwogCiAgICAg
U3RhY2tNYXAgdmFsdWVzOwotICAgIGZvciAodW5zaWduZWQgaSA9IG1fb2Zmc2V0OyBpIDwgcGFy
YW1zLnZhbHVlKCktPm51bUNoaWxkcmVuKCk7ICsraSkKLSAgICAgICAgdmFsdWVzLmNvbnN0cnVj
dEFuZEFwcGVuZChwYXJhbXNbaV0sIHBhcmFtcy52YWx1ZSgpLT5jaGlsZChpKS0+dHlwZSgpKTsK
KyAgICBpZiAocGFyYW1zLnZhbHVlKCktPm51bUNoaWxkcmVuKCkgPj0gbV9vZmZzZXQpIHsKKyAg
ICAgICAgdmFsdWVzID0gU3RhY2tNYXAocGFyYW1zLnZhbHVlKCktPm51bUNoaWxkcmVuKCkgLSBt
X29mZnNldCk7CisgICAgICAgIGZvciAodW5zaWduZWQgaSA9IG1fb2Zmc2V0OyBpIDwgcGFyYW1z
LnZhbHVlKCktPm51bUNoaWxkcmVuKCk7ICsraSkKKyAgICAgICAgICAgIHZhbHVlc1tpIC0gbV9v
ZmZzZXRdID0gT1NSRW50cnlWYWx1ZShwYXJhbXNbaV0sIHBhcmFtcy52YWx1ZSgpLT5jaGlsZChp
KS0+dHlwZSgpKTsKKyAgICB9CiAgICAgZ2VuZXJhdG9yLT5hZGRTdGFja01hcChtX2NhbGxTaXRl
SW5kZXgsIFdURk1vdmUodmFsdWVzKSk7CiAgICAgaml0LnN0b3JlMzIoQ0NhbGxIZWxwZXJzOjpU
cnVzdGVkSW1tMzIobV9jYWxsU2l0ZUluZGV4KSwgQ0NhbGxIZWxwZXJzOjp0YWdGb3IoQ2FsbEZy
YW1lU2xvdDo6YXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMpKTsKIH0KQEAgLTI0MjYsMTAgKzI0
MjksMTMgQEAgdm9pZCBCM0lSR2VuZXJhdG9yOjplbWl0TG9vcFRpZXJVcENoZWNrKHVpbnQzMl90
IGxvb3BJbmRleCwgY29uc3QgU3RhY2smIGVuY2xvc2kKICAgICAgICAgQ0NhbGxIZWxwZXJzOjpK
dW1wIHRpZXJVcCA9IGppdC5icmFuY2hBZGQzMihDQ2FsbEhlbHBlcnM6OlBvc2l0aXZlT3JaZXJv
LCBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0zMihUaWVyVXBDb3VudDo6bG9vcEluY3JlbWVudCgp
KSwgQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKHBhcmFtc1swXS5ncHIoKSkpOwogICAgICAgICBNYWNy
b0Fzc2VtYmxlcjo6TGFiZWwgdGllclVwUmVzdW1lID0gaml0LmxhYmVsKCk7CiAKLSAgICAgICAg
T1NSRW50cnlEYXRhJiBvc3JFbnRyeURhdGEgPSBtX3RpZXJVcC0+YWRkT1NSRW50cnlEYXRhKG1f
ZnVuY3Rpb25JbmRleCwgbG9vcEluZGV4KTsKICAgICAgICAgLy8gRmlyc3QgYXJndW1lbnQgaXMg
dGhlIGNvdW50ZG93biBsb2NhdGlvbi4KKyAgICAgICAgQVNTRVJUKHBhcmFtcy52YWx1ZSgpLT5u
dW1DaGlsZHJlbigpID49IDEpOworICAgICAgICBTdGFja01hcCB2YWx1ZXMocGFyYW1zLnZhbHVl
KCktPm51bUNoaWxkcmVuKCkgLSAxKTsKICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMTsgaSA8
IHBhcmFtcy52YWx1ZSgpLT5udW1DaGlsZHJlbigpOyArK2kpCi0gICAgICAgICAgICBvc3JFbnRy
eURhdGEudmFsdWVzKCkuY29uc3RydWN0QW5kQXBwZW5kKHBhcmFtc1tpXSwgcGFyYW1zLnZhbHVl
KCktPmNoaWxkKGkpLT50eXBlKCkpOworICAgICAgICAgICAgdmFsdWVzW2kgLSAxXSA9IE9TUkVu
dHJ5VmFsdWUocGFyYW1zW2ldLCBwYXJhbXMudmFsdWUoKS0+Y2hpbGQoaSktPnR5cGUoKSk7CisK
KyAgICAgICAgT1NSRW50cnlEYXRhJiBvc3JFbnRyeURhdGEgPSBtX3RpZXJVcC0+YWRkT1NSRW50
cnlEYXRhKG1fZnVuY3Rpb25JbmRleCwgbG9vcEluZGV4LCBXVEZNb3ZlKHZhbHVlcykpOwogICAg
ICAgICBPU1JFbnRyeURhdGEqIG9zckVudHJ5RGF0YVB0ciA9ICZvc3JFbnRyeURhdGE7CiAKICAg
ICAgICAgcGFyYW1zLmFkZExhdGVQYXRoKFs9XSAoQ0NhbGxIZWxwZXJzJiBqaXQpIHsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21DYWxsZWUuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUNhbGxlZS5jcHAKaW5kZXggYjQ2NmI3ZmNlYjgwYTNl
MjcyNzk5ZjM3NWZhZDBiZGRhYWJkOTQ1Yi4uYTAzNjNkYTZlODJjN2RmMDkwNDljNWZhYTYwMjFm
OWRiZTE3Y2E3MiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUNh
bGxlZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUNhbGxlZS5jcHAK
QEAgLTg2LDcgKzg2LDcgQEAgTExJbnRDYWxsZWU6OkxMSW50Q2FsbGVlKHN0ZDo6dW5pcXVlX3B0
cjxGdW5jdGlvbkNvZGVCbG9jaz4gY29kZUJsb2NrLCBzaXplX3QgaW4KIHZvaWQgTExJbnRDYWxs
ZWU6OmxpbmtFeGNlcHRpb25IYW5kbGVycygpCiB7CiAgICAgaWYgKHNpemVfdCBjb3VudCA9IG1f
Y29kZUJsb2NrLT5udW1iZXJPZkV4Y2VwdGlvbkhhbmRsZXJzKCkpIHsKLSAgICAgICAgbV9leGNl
cHRpb25IYW5kbGVycy5yZXNpemVUb0ZpdChjb3VudCk7CisgICAgICAgIG1fZXhjZXB0aW9uSGFu
ZGxlcnMgPSBGaXhlZFZlY3RvcjxIYW5kbGVySW5mbz4oY291bnQpOwogICAgICAgICBmb3IgKHNp
emVfdCBpID0gMDsgaSA8IGNvdW50OyBpKyspIHsKICAgICAgICAgICAgIGNvbnN0IFVubGlua2Vk
SGFuZGxlckluZm8mIHVubGlua2VkSGFuZGxlciA9IG1fY29kZUJsb2NrLT5leGNlcHRpb25IYW5k
bGVyKGkpOwogICAgICAgICAgICAgSGFuZGxlckluZm8mIGhhbmRsZXIgPSBtX2V4Y2VwdGlvbkhh
bmRsZXJzW2ldOwpAQCAtMTM3LDIxICsxMzcsMTkgQEAgc3RkOjp0dXBsZTx2b2lkKiwgdm9pZCo+
IExMSW50Q2FsbGVlOjpyYW5nZSgpIGNvbnN0CiAgICAgcmV0dXJuIHsgbnVsbHB0ciwgbnVsbHB0
ciB9OwogfQogCi12b2lkIE9wdGltaXppbmdKSVRDYWxsZWU6OmxpbmtFeGNlcHRpb25IYW5kbGVy
cygpCit2b2lkIE9wdGltaXppbmdKSVRDYWxsZWU6OmxpbmtFeGNlcHRpb25IYW5kbGVycyhWZWN0
b3I8VW5saW5rZWRIYW5kbGVySW5mbz4gdW5saW5rZWRFeGNlcHRpb25IYW5kbGVycywgVmVjdG9y
PENvZGVMb2NhdGlvbkxhYmVsPEV4Y2VwdGlvbkhhbmRsZXJQdHJUYWc+PiBleGNlcHRpb25IYW5k
bGVyTG9jYXRpb25zKQogewotICAgIHNpemVfdCBjb3VudCA9IG1fdW5saW5rZWRFeGNlcHRpb25I
YW5kbGVycy5zaXplKCk7Ci0gICAgbV9leGNlcHRpb25IYW5kbGVycy5yZXNpemVUb0ZpdChjb3Vu
dCk7CisgICAgc2l6ZV90IGNvdW50ID0gdW5saW5rZWRFeGNlcHRpb25IYW5kbGVycy5zaXplKCk7
CisgICAgbV9leGNlcHRpb25IYW5kbGVycyA9IEZpeGVkVmVjdG9yPEhhbmRsZXJJbmZvPihjb3Vu
dCk7CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBjb3VudDsgaSsrKSB7CiAgICAgICAgIEhh
bmRsZXJJbmZvJiBoYW5kbGVyID0gbV9leGNlcHRpb25IYW5kbGVyc1tpXTsKLSAgICAgICAgY29u
c3QgVW5saW5rZWRIYW5kbGVySW5mbyYgdW5saW5rZWRIYW5kbGVyID0gbV91bmxpbmtlZEV4Y2Vw
dGlvbkhhbmRsZXJzW2ldOwotICAgICAgICBDb2RlTG9jYXRpb25MYWJlbDxFeGNlcHRpb25IYW5k
bGVyUHRyVGFnPiBsb2NhdGlvbiA9IG1fZXhjZXB0aW9uSGFuZGxlckxvY2F0aW9uc1tpXTsKKyAg
ICAgICAgY29uc3QgVW5saW5rZWRIYW5kbGVySW5mbyYgdW5saW5rZWRIYW5kbGVyID0gdW5saW5r
ZWRFeGNlcHRpb25IYW5kbGVyc1tpXTsKKyAgICAgICAgQ29kZUxvY2F0aW9uTGFiZWw8RXhjZXB0
aW9uSGFuZGxlclB0clRhZz4gbG9jYXRpb24gPSBleGNlcHRpb25IYW5kbGVyTG9jYXRpb25zW2ld
OwogICAgICAgICBoYW5kbGVyLmluaXRpYWxpemUodW5saW5rZWRIYW5kbGVyLCBsb2NhdGlvbik7
CiAgICAgfQotICAgIG1fdW5saW5rZWRFeGNlcHRpb25IYW5kbGVycy5jbGVhcigpOwotICAgIG1f
ZXhjZXB0aW9uSGFuZGxlckxvY2F0aW9ucy5jbGVhcigpOwogfQogCi1jb25zdCBWZWN0b3I8T1NS
RW50cnlWYWx1ZT4mIE9wdGltaXppbmdKSVRDYWxsZWU6OnN0YWNrbWFwKENhbGxTaXRlSW5kZXgg
Y2FsbFNpdGVJbmRleCkgY29uc3QKK2NvbnN0IFN0YWNrTWFwJiBPcHRpbWl6aW5nSklUQ2FsbGVl
OjpzdGFja21hcChDYWxsU2l0ZUluZGV4IGNhbGxTaXRlSW5kZXgpIGNvbnN0CiB7CiAgICAgYXV0
byBpdGVyID0gbV9zdGFja21hcHMuZmluZChjYWxsU2l0ZUluZGV4KTsKICAgICBpZiAoaXRlciA9
PSBtX3N0YWNrbWFwcy5lbmQoKSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3dhc20vV2FzbUNhbGxlZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUNhbGxl
ZS5oCmluZGV4IGFhMmI1NDE4YzJjZDU0MDliYTVkYjdkNTJhZTAwMjVjMmYyZWRlZDIuLjM0N2Zj
ODE1ZTI2MmFjODc1YzU3OTc1NjgzYTVjZWE4ZDNlODUyNDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS93YXNtL1dhc21DYWxsZWUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvd2FzbS9XYXNtQ2FsbGVlLmgKQEAgLTM2LDYgKzM2LDcgQEAKICNpbmNsdWRlICJXYXNtSW5k
ZXhPck5hbWUuaCIKICNpbmNsdWRlICJXYXNtTExJbnRUaWVyVXBDb3VudGVyLmgiCiAjaW5jbHVk
ZSAiV2FzbVRpZXJVcENvdW50LmgiCisjaW5jbHVkZSA8d3RmL0ZpeGVkVmVjdG9yLmg+CiAjaW5j
bHVkZSA8d3RmL1RocmVhZFNhZmVSZWZDb3VudGVkLmg+CiAKIG5hbWVzcGFjZSBKU0MgewpAQCAt
NjMsNyArNjQsNyBAQCBjbGFzcyBDYWxsZWUgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8
Q2FsbGVlPiB7CiAKICAgICBjb25zdCBIYW5kbGVySW5mbyogaGFuZGxlckZvckluZGV4KEluc3Rh
bmNlJiwgdW5zaWduZWQsIGNvbnN0IFRhZyopOwogCi0gICAgYm9vbCBoYXNFeGNlcHRpb25IYW5k
bGVycygpIGNvbnN0IHsgcmV0dXJuICEhbV9leGNlcHRpb25IYW5kbGVycy5zaXplKCk7IH0KKyAg
ICBib29sIGhhc0V4Y2VwdGlvbkhhbmRsZXJzKCkgY29uc3QgeyByZXR1cm4gIW1fZXhjZXB0aW9u
SGFuZGxlcnMuaXNFbXB0eSgpOyB9CiAKICNpZiBFTkFCTEUoV0VCQVNTRU1CTFlfQjNKSVQpCiAg
ICAgdmlydHVhbCB2b2lkIHNldE9TUkVudHJ5Q2FsbGVlKFJlZjxPTUdGb3JPU1JFbnRyeUNhbGxl
ZT4mJiwgTWVtb3J5TW9kZSkKQEAgLTg1LDE0ICs4NiwxNCBAQCBjbGFzcyBDYWxsZWUgOiBwdWJs
aWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8Q2FsbGVlPiB7CiAgICAgSW5kZXhPck5hbWUgbV9pbmRl
eE9yTmFtZTsKIAogcHJvdGVjdGVkOgotICAgIFZlY3RvcjxIYW5kbGVySW5mbz4gbV9leGNlcHRp
b25IYW5kbGVyczsKKyAgICBGaXhlZFZlY3RvcjxIYW5kbGVySW5mbz4gbV9leGNlcHRpb25IYW5k
bGVyczsKIH07CiAKIGNsYXNzIEpJVENhbGxlZSA6IHB1YmxpYyBDYWxsZWUgewogcHVibGljOgog
ICAgIE1hY3JvQXNzZW1ibGVyQ29kZVB0cjxXYXNtRW50cnlQdHJUYWc+IGVudHJ5cG9pbnQoKSBj
b25zdCBvdmVycmlkZSB7IHJldHVybiBtX2VudHJ5cG9pbnQuY29tcGlsYXRpb24tPmNvZGUoKS5y
ZXRhZ2dlZDxXYXNtRW50cnlQdHJUYWc+KCk7IH0KICAgICBSZWdpc3RlckF0T2Zmc2V0TGlzdCog
Y2FsbGVlU2F2ZVJlZ2lzdGVycygpIG92ZXJyaWRlIHsgcmV0dXJuICZtX2VudHJ5cG9pbnQuY2Fs
bGVlU2F2ZVJlZ2lzdGVyczsgfQotICAgIFZlY3RvcjxVbmxpbmtlZFdhc21Ub1dhc21DYWxsPiYg
d2FzbVRvV2FzbUNhbGxzaXRlcygpIHsgcmV0dXJuIG1fd2FzbVRvV2FzbUNhbGxzaXRlczsgfQor
ICAgIEZpeGVkVmVjdG9yPFVubGlua2VkV2FzbVRvV2FzbUNhbGw+JiB3YXNtVG9XYXNtQ2FsbHNp
dGVzKCkgeyByZXR1cm4gbV93YXNtVG9XYXNtQ2FsbHNpdGVzOyB9CiAKIHByb3RlY3RlZDoKICAg
ICBKU19FWFBPUlRfUFJJVkFURSBKSVRDYWxsZWUoV2FzbTo6Q29tcGlsYXRpb25Nb2RlLCBXYXNt
OjpFbnRyeXBvaW50JiYpOwpAQCAtMTA2LDcgKzEwNyw3IEBAIGNsYXNzIEpJVENhbGxlZSA6IHB1
YmxpYyBDYWxsZWUgewogICAgIH0KIAogcHJpdmF0ZToKLSAgICBWZWN0b3I8VW5saW5rZWRXYXNt
VG9XYXNtQ2FsbD4gbV93YXNtVG9XYXNtQ2FsbHNpdGVzOworICAgIEZpeGVkVmVjdG9yPFVubGlu
a2VkV2FzbVRvV2FzbUNhbGw+IG1fd2FzbVRvV2FzbUNhbGxzaXRlczsKICAgICBXYXNtOjpFbnRy
eXBvaW50IG1fZW50cnlwb2ludDsKIH07CiAKQEAgLTEyOCwzNiArMTI5LDMyIEBAIGNsYXNzIEVt
YmVkZGVyRW50cnlwb2ludENhbGxlZSBmaW5hbCA6IHB1YmxpYyBKSVRDYWxsZWUgewogI2lmIEVO
QUJMRShXRUJBU1NFTUJMWV9CM0pJVCkKIGNsYXNzIE9wdGltaXppbmdKSVRDYWxsZWUgOiBwdWJs
aWMgSklUQ2FsbGVlIHsKIHB1YmxpYzoKLSAgICBjb25zdCBWZWN0b3I8T1NSRW50cnlWYWx1ZT4m
IHN0YWNrbWFwKENhbGxTaXRlSW5kZXgpIGNvbnN0OworICAgIGNvbnN0IFN0YWNrTWFwJiBzdGFj
a21hcChDYWxsU2l0ZUluZGV4KSBjb25zdDsKIAogcHJvdGVjdGVkOgotICAgIE9wdGltaXppbmdK
SVRDYWxsZWUoV2FzbTo6Q29tcGlsYXRpb25Nb2RlIG1vZGUsIFdhc206OkVudHJ5cG9pbnQmJiBl
bnRyeXBvaW50LCBzaXplX3QgaW5kZXgsIHN0ZDo6cGFpcjxjb25zdCBOYW1lKiwgUmVmUHRyPE5h
bWVTZWN0aW9uPj4mJiBuYW1lLCBWZWN0b3I8VW5saW5rZWRXYXNtVG9XYXNtQ2FsbD4mJiB1bmxp
bmtlZENhbGxzLCBIYXNoTWFwPENhbGxTaXRlSW5kZXgsIFZlY3RvcjxPU1JFbnRyeVZhbHVlPj4m
JiBzdGFja21hcHMsIFZlY3RvcjxVbmxpbmtlZEhhbmRsZXJJbmZvPiYmIGV4Y2VwdGlvbkhhbmRs
ZXJzLCBWZWN0b3I8Q29kZUxvY2F0aW9uTGFiZWw8RXhjZXB0aW9uSGFuZGxlclB0clRhZz4+JiYg
ZXhjZXB0aW9uSGFuZGxlckxvY2F0aW9ucykKKyAgICBPcHRpbWl6aW5nSklUQ2FsbGVlKFdhc206
OkNvbXBpbGF0aW9uTW9kZSBtb2RlLCBXYXNtOjpFbnRyeXBvaW50JiYgZW50cnlwb2ludCwgc2l6
ZV90IGluZGV4LCBzdGQ6OnBhaXI8Y29uc3QgTmFtZSosIFJlZlB0cjxOYW1lU2VjdGlvbj4+JiYg
bmFtZSwgVmVjdG9yPFVubGlua2VkV2FzbVRvV2FzbUNhbGw+JiYgdW5saW5rZWRDYWxscywgU3Rh
Y2tNYXBzJiYgc3RhY2ttYXBzLCBWZWN0b3I8VW5saW5rZWRIYW5kbGVySW5mbz4mJiB1bmxpbmtl
ZEV4Y2VwdGlvbkhhbmRsZXJzLCBWZWN0b3I8Q29kZUxvY2F0aW9uTGFiZWw8RXhjZXB0aW9uSGFu
ZGxlclB0clRhZz4+JiYgZXhjZXB0aW9uSGFuZGxlckxvY2F0aW9ucykKICAgICAgICAgOiBKSVRD
YWxsZWUobW9kZSwgV1RGTW92ZShlbnRyeXBvaW50KSwgaW5kZXgsIFdURk1vdmUobmFtZSksIFdU
Rk1vdmUodW5saW5rZWRDYWxscykpCiAgICAgICAgICwgbV9zdGFja21hcHMoV1RGTW92ZShzdGFj
a21hcHMpKQotICAgICAgICAsIG1fdW5saW5rZWRFeGNlcHRpb25IYW5kbGVycyhXVEZNb3ZlKGV4
Y2VwdGlvbkhhbmRsZXJzKSkKLSAgICAgICAgLCBtX2V4Y2VwdGlvbkhhbmRsZXJMb2NhdGlvbnMo
V1RGTW92ZShleGNlcHRpb25IYW5kbGVyTG9jYXRpb25zKSkKICAgICB7Ci0gICAgICAgIFJFTEVB
U0VfQVNTRVJUKG1fdW5saW5rZWRFeGNlcHRpb25IYW5kbGVycy5zaXplKCkgPT0gbV9leGNlcHRp
b25IYW5kbGVyTG9jYXRpb25zLnNpemUoKSk7Ci0gICAgICAgIGxpbmtFeGNlcHRpb25IYW5kbGVy
cygpOworICAgICAgICBSRUxFQVNFX0FTU0VSVCh1bmxpbmtlZEV4Y2VwdGlvbkhhbmRsZXJzLnNp
emUoKSA9PSBleGNlcHRpb25IYW5kbGVyTG9jYXRpb25zLnNpemUoKSk7CisgICAgICAgIGxpbmtF
eGNlcHRpb25IYW5kbGVycyhXVEZNb3ZlKHVubGlua2VkRXhjZXB0aW9uSGFuZGxlcnMpLCBXVEZN
b3ZlKGV4Y2VwdGlvbkhhbmRsZXJMb2NhdGlvbnMpKTsKICAgICB9CiAKIHByaXZhdGU6Ci0gICAg
dm9pZCBsaW5rRXhjZXB0aW9uSGFuZGxlcnMoKTsKKyAgICB2b2lkIGxpbmtFeGNlcHRpb25IYW5k
bGVycyhWZWN0b3I8VW5saW5rZWRIYW5kbGVySW5mbz4sIFZlY3RvcjxDb2RlTG9jYXRpb25MYWJl
bDxFeGNlcHRpb25IYW5kbGVyUHRyVGFnPj4pOwogCi0gICAgSGFzaE1hcDxDYWxsU2l0ZUluZGV4
LCBWZWN0b3I8T1NSRW50cnlWYWx1ZT4+IG1fc3RhY2ttYXBzOwotICAgIFZlY3RvcjxVbmxpbmtl
ZEhhbmRsZXJJbmZvPiBtX3VubGlua2VkRXhjZXB0aW9uSGFuZGxlcnM7Ci0gICAgVmVjdG9yPENv
ZGVMb2NhdGlvbkxhYmVsPEV4Y2VwdGlvbkhhbmRsZXJQdHJUYWc+PiBtX2V4Y2VwdGlvbkhhbmRs
ZXJMb2NhdGlvbnM7CisgICAgU3RhY2tNYXBzIG1fc3RhY2ttYXBzOwogfTsKIAogY2xhc3MgT01H
Q2FsbGVlIGZpbmFsIDogcHVibGljIE9wdGltaXppbmdKSVRDYWxsZWUgewogcHVibGljOgotICAg
IHN0YXRpYyBSZWY8T01HQ2FsbGVlPiBjcmVhdGUoV2FzbTo6RW50cnlwb2ludCYmIGVudHJ5cG9p
bnQsIHNpemVfdCBpbmRleCwgc3RkOjpwYWlyPGNvbnN0IE5hbWUqLCBSZWZQdHI8TmFtZVNlY3Rp
b24+PiYmIG5hbWUsIFZlY3RvcjxVbmxpbmtlZFdhc21Ub1dhc21DYWxsPiYmIHVubGlua2VkQ2Fs
bHMsIEhhc2hNYXA8Q2FsbFNpdGVJbmRleCwgVmVjdG9yPE9TUkVudHJ5VmFsdWU+PiYmIHN0YWNr
bWFwcywgVmVjdG9yPFVubGlua2VkSGFuZGxlckluZm8+JiYgZXhjZXB0aW9uSGFuZGxlcnMsIFZl
Y3RvcjxDb2RlTG9jYXRpb25MYWJlbDxFeGNlcHRpb25IYW5kbGVyUHRyVGFnPj4mJiBleGNlcHRp
b25IYW5kbGVyTG9jYXRpb25zKQorICAgIHN0YXRpYyBSZWY8T01HQ2FsbGVlPiBjcmVhdGUoV2Fz
bTo6RW50cnlwb2ludCYmIGVudHJ5cG9pbnQsIHNpemVfdCBpbmRleCwgc3RkOjpwYWlyPGNvbnN0
IE5hbWUqLCBSZWZQdHI8TmFtZVNlY3Rpb24+PiYmIG5hbWUsIFZlY3RvcjxVbmxpbmtlZFdhc21U
b1dhc21DYWxsPiYmIHVubGlua2VkQ2FsbHMsIFN0YWNrTWFwcyYmIHN0YWNrbWFwcywgVmVjdG9y
PFVubGlua2VkSGFuZGxlckluZm8+JiYgZXhjZXB0aW9uSGFuZGxlcnMsIFZlY3RvcjxDb2RlTG9j
YXRpb25MYWJlbDxFeGNlcHRpb25IYW5kbGVyUHRyVGFnPj4mJiBleGNlcHRpb25IYW5kbGVyTG9j
YXRpb25zKQogICAgIHsKICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgT01HQ2FsbGVlKFdU
Rk1vdmUoZW50cnlwb2ludCksIGluZGV4LCBXVEZNb3ZlKG5hbWUpLCBXVEZNb3ZlKHVubGlua2Vk
Q2FsbHMpLCBXVEZNb3ZlKHN0YWNrbWFwcyksIFdURk1vdmUoZXhjZXB0aW9uSGFuZGxlcnMpLCBX
VEZNb3ZlKGV4Y2VwdGlvbkhhbmRsZXJMb2NhdGlvbnMpKSk7CiAgICAgfQogCiBwcml2YXRlOgot
ICAgIE9NR0NhbGxlZShXYXNtOjpFbnRyeXBvaW50JiYgZW50cnlwb2ludCwgc2l6ZV90IGluZGV4
LCBzdGQ6OnBhaXI8Y29uc3QgTmFtZSosIFJlZlB0cjxOYW1lU2VjdGlvbj4+JiYgbmFtZSwgVmVj
dG9yPFVubGlua2VkV2FzbVRvV2FzbUNhbGw+JiYgdW5saW5rZWRDYWxscywgSGFzaE1hcDxDYWxs
U2l0ZUluZGV4LCBWZWN0b3I8T1NSRW50cnlWYWx1ZT4+JiYgc3RhY2ttYXBzLCBWZWN0b3I8VW5s
aW5rZWRIYW5kbGVySW5mbz4mJiBleGNlcHRpb25IYW5kbGVycywgVmVjdG9yPENvZGVMb2NhdGlv
bkxhYmVsPEV4Y2VwdGlvbkhhbmRsZXJQdHJUYWc+PiYmIGV4Y2VwdGlvbkhhbmRsZXJMb2NhdGlv
bnMpCisgICAgT01HQ2FsbGVlKFdhc206OkVudHJ5cG9pbnQmJiBlbnRyeXBvaW50LCBzaXplX3Qg
aW5kZXgsIHN0ZDo6cGFpcjxjb25zdCBOYW1lKiwgUmVmUHRyPE5hbWVTZWN0aW9uPj4mJiBuYW1l
LCBWZWN0b3I8VW5saW5rZWRXYXNtVG9XYXNtQ2FsbD4mJiB1bmxpbmtlZENhbGxzLCBTdGFja01h
cHMmJiBzdGFja21hcHMsIFZlY3RvcjxVbmxpbmtlZEhhbmRsZXJJbmZvPiYmIGV4Y2VwdGlvbkhh
bmRsZXJzLCBWZWN0b3I8Q29kZUxvY2F0aW9uTGFiZWw8RXhjZXB0aW9uSGFuZGxlclB0clRhZz4+
JiYgZXhjZXB0aW9uSGFuZGxlckxvY2F0aW9ucykKICAgICAgICAgOiBPcHRpbWl6aW5nSklUQ2Fs
bGVlKFdhc206OkNvbXBpbGF0aW9uTW9kZTo6T01HTW9kZSwgV1RGTW92ZShlbnRyeXBvaW50KSwg
aW5kZXgsIFdURk1vdmUobmFtZSksIFdURk1vdmUodW5saW5rZWRDYWxscyksIFdURk1vdmUoc3Rh
Y2ttYXBzKSwgV1RGTW92ZShleGNlcHRpb25IYW5kbGVycyksIFdURk1vdmUoZXhjZXB0aW9uSGFu
ZGxlckxvY2F0aW9ucykpCiAgICAgewogICAgIH0KQEAgLTE2NSw3ICsxNjIsNyBAQCBjbGFzcyBP
TUdDYWxsZWUgZmluYWwgOiBwdWJsaWMgT3B0aW1pemluZ0pJVENhbGxlZSB7CiAKIGNsYXNzIE9N
R0Zvck9TUkVudHJ5Q2FsbGVlIGZpbmFsIDogcHVibGljIE9wdGltaXppbmdKSVRDYWxsZWUgewog
cHVibGljOgotICAgIHN0YXRpYyBSZWY8T01HRm9yT1NSRW50cnlDYWxsZWU+IGNyZWF0ZShXYXNt
OjpFbnRyeXBvaW50JiYgZW50cnlwb2ludCwgc2l6ZV90IGluZGV4LCBzdGQ6OnBhaXI8Y29uc3Qg
TmFtZSosIFJlZlB0cjxOYW1lU2VjdGlvbj4+JiYgbmFtZSwgdW5zaWduZWQgb3NyRW50cnlTY3Jh
dGNoQnVmZmVyU2l6ZSwgdWludDMyX3QgbG9vcEluZGV4LCBWZWN0b3I8VW5saW5rZWRXYXNtVG9X
YXNtQ2FsbD4mJiB1bmxpbmtlZENhbGxzLCBIYXNoTWFwPENhbGxTaXRlSW5kZXgsIFZlY3RvcjxP
U1JFbnRyeVZhbHVlPj4mJiBzdGFja21hcHMsIFZlY3RvcjxVbmxpbmtlZEhhbmRsZXJJbmZvPiYm
IGV4Y2VwdGlvbkhhbmRsZXJzLCBWZWN0b3I8Q29kZUxvY2F0aW9uTGFiZWw8RXhjZXB0aW9uSGFu
ZGxlclB0clRhZz4+JiYgZXhjZXB0aW9uSGFuZGxlckxvY2F0aW9ucykKKyAgICBzdGF0aWMgUmVm
PE9NR0Zvck9TUkVudHJ5Q2FsbGVlPiBjcmVhdGUoV2FzbTo6RW50cnlwb2ludCYmIGVudHJ5cG9p
bnQsIHNpemVfdCBpbmRleCwgc3RkOjpwYWlyPGNvbnN0IE5hbWUqLCBSZWZQdHI8TmFtZVNlY3Rp
b24+PiYmIG5hbWUsIHVuc2lnbmVkIG9zckVudHJ5U2NyYXRjaEJ1ZmZlclNpemUsIHVpbnQzMl90
IGxvb3BJbmRleCwgVmVjdG9yPFVubGlua2VkV2FzbVRvV2FzbUNhbGw+JiYgdW5saW5rZWRDYWxs
cywgU3RhY2tNYXBzJiYgc3RhY2ttYXBzLCBWZWN0b3I8VW5saW5rZWRIYW5kbGVySW5mbz4mJiBl
eGNlcHRpb25IYW5kbGVycywgVmVjdG9yPENvZGVMb2NhdGlvbkxhYmVsPEV4Y2VwdGlvbkhhbmRs
ZXJQdHJUYWc+PiYmIGV4Y2VwdGlvbkhhbmRsZXJMb2NhdGlvbnMpCiAgICAgewogICAgICAgICBy
ZXR1cm4gYWRvcHRSZWYoKm5ldyBPTUdGb3JPU1JFbnRyeUNhbGxlZShXVEZNb3ZlKGVudHJ5cG9p
bnQpLCBpbmRleCwgV1RGTW92ZShuYW1lKSwgb3NyRW50cnlTY3JhdGNoQnVmZmVyU2l6ZSwgbG9v
cEluZGV4LCBXVEZNb3ZlKHVubGlua2VkQ2FsbHMpLCBXVEZNb3ZlKHN0YWNrbWFwcyksIFdURk1v
dmUoZXhjZXB0aW9uSGFuZGxlcnMpLCBXVEZNb3ZlKGV4Y2VwdGlvbkhhbmRsZXJMb2NhdGlvbnMp
KSk7CiAgICAgfQpAQCAtMTc0LDcgKzE3MSw3IEBAIGNsYXNzIE9NR0Zvck9TUkVudHJ5Q2FsbGVl
IGZpbmFsIDogcHVibGljIE9wdGltaXppbmdKSVRDYWxsZWUgewogICAgIHVpbnQzMl90IGxvb3BJ
bmRleCgpIGNvbnN0IHsgcmV0dXJuIG1fbG9vcEluZGV4OyB9CiAKIHByaXZhdGU6Ci0gICAgT01H
Rm9yT1NSRW50cnlDYWxsZWUoV2FzbTo6RW50cnlwb2ludCYmIGVudHJ5cG9pbnQsIHNpemVfdCBp
bmRleCwgc3RkOjpwYWlyPGNvbnN0IE5hbWUqLCBSZWZQdHI8TmFtZVNlY3Rpb24+PiYmIG5hbWUs
IHVuc2lnbmVkIG9zckVudHJ5U2NyYXRjaEJ1ZmZlclNpemUsIHVpbnQzMl90IGxvb3BJbmRleCwg
VmVjdG9yPFVubGlua2VkV2FzbVRvV2FzbUNhbGw+JiYgdW5saW5rZWRDYWxscywgSGFzaE1hcDxD
YWxsU2l0ZUluZGV4LCBWZWN0b3I8T1NSRW50cnlWYWx1ZT4+JiYgc3RhY2ttYXBzLCBWZWN0b3I8
VW5saW5rZWRIYW5kbGVySW5mbz4mJiBleGNlcHRpb25IYW5kbGVycywgVmVjdG9yPENvZGVMb2Nh
dGlvbkxhYmVsPEV4Y2VwdGlvbkhhbmRsZXJQdHJUYWc+PiYmIGV4Y2VwdGlvbkhhbmRsZXJMb2Nh
dGlvbnMpCisgICAgT01HRm9yT1NSRW50cnlDYWxsZWUoV2FzbTo6RW50cnlwb2ludCYmIGVudHJ5
cG9pbnQsIHNpemVfdCBpbmRleCwgc3RkOjpwYWlyPGNvbnN0IE5hbWUqLCBSZWZQdHI8TmFtZVNl
Y3Rpb24+PiYmIG5hbWUsIHVuc2lnbmVkIG9zckVudHJ5U2NyYXRjaEJ1ZmZlclNpemUsIHVpbnQz
Ml90IGxvb3BJbmRleCwgVmVjdG9yPFVubGlua2VkV2FzbVRvV2FzbUNhbGw+JiYgdW5saW5rZWRD
YWxscywgU3RhY2tNYXBzJiYgc3RhY2ttYXBzLCBWZWN0b3I8VW5saW5rZWRIYW5kbGVySW5mbz4m
JiBleGNlcHRpb25IYW5kbGVycywgVmVjdG9yPENvZGVMb2NhdGlvbkxhYmVsPEV4Y2VwdGlvbkhh
bmRsZXJQdHJUYWc+PiYmIGV4Y2VwdGlvbkhhbmRsZXJMb2NhdGlvbnMpCiAgICAgICAgIDogT3B0
aW1pemluZ0pJVENhbGxlZShXYXNtOjpDb21waWxhdGlvbk1vZGU6Ok9NR0Zvck9TUkVudHJ5TW9k
ZSwgV1RGTW92ZShlbnRyeXBvaW50KSwgaW5kZXgsIFdURk1vdmUobmFtZSksIFdURk1vdmUodW5s
aW5rZWRDYWxscyksIFdURk1vdmUoc3RhY2ttYXBzKSwgV1RGTW92ZShleGNlcHRpb25IYW5kbGVy
cyksIFdURk1vdmUoZXhjZXB0aW9uSGFuZGxlckxvY2F0aW9ucykpCiAgICAgICAgICwgbV9vc3JF
bnRyeVNjcmF0Y2hCdWZmZXJTaXplKG9zckVudHJ5U2NyYXRjaEJ1ZmZlclNpemUpCiAgICAgICAg
ICwgbV9sb29wSW5kZXgobG9vcEluZGV4KQpAQCAtMTg3LDcgKzE4NCw3IEBAIGNsYXNzIE9NR0Zv
ck9TUkVudHJ5Q2FsbGVlIGZpbmFsIDogcHVibGljIE9wdGltaXppbmdKSVRDYWxsZWUgewogCiBj
bGFzcyBCQlFDYWxsZWUgZmluYWwgOiBwdWJsaWMgT3B0aW1pemluZ0pJVENhbGxlZSB7CiBwdWJs
aWM6Ci0gICAgc3RhdGljIFJlZjxCQlFDYWxsZWU+IGNyZWF0ZShXYXNtOjpFbnRyeXBvaW50JiYg
ZW50cnlwb2ludCwgc2l6ZV90IGluZGV4LCBzdGQ6OnBhaXI8Y29uc3QgTmFtZSosIFJlZlB0cjxO
YW1lU2VjdGlvbj4+JiYgbmFtZSwgc3RkOjp1bmlxdWVfcHRyPFRpZXJVcENvdW50PiYmIHRpZXJV
cENvdW50LCBWZWN0b3I8VW5saW5rZWRXYXNtVG9XYXNtQ2FsbD4mJiB1bmxpbmtlZENhbGxzLCBI
YXNoTWFwPENhbGxTaXRlSW5kZXgsIFZlY3RvcjxPU1JFbnRyeVZhbHVlPj4mJiBzdGFja21hcHMs
IFZlY3RvcjxVbmxpbmtlZEhhbmRsZXJJbmZvPiYmIGV4Y2VwdGlvbkhhbmRsZXJzLCBWZWN0b3I8
Q29kZUxvY2F0aW9uTGFiZWw8RXhjZXB0aW9uSGFuZGxlclB0clRhZz4+JiYgZXhjZXB0aW9uSGFu
ZGxlckxvY2F0aW9ucykKKyAgICBzdGF0aWMgUmVmPEJCUUNhbGxlZT4gY3JlYXRlKFdhc206OkVu
dHJ5cG9pbnQmJiBlbnRyeXBvaW50LCBzaXplX3QgaW5kZXgsIHN0ZDo6cGFpcjxjb25zdCBOYW1l
KiwgUmVmUHRyPE5hbWVTZWN0aW9uPj4mJiBuYW1lLCBzdGQ6OnVuaXF1ZV9wdHI8VGllclVwQ291
bnQ+JiYgdGllclVwQ291bnQsIFZlY3RvcjxVbmxpbmtlZFdhc21Ub1dhc21DYWxsPiYmIHVubGlu
a2VkQ2FsbHMsIFN0YWNrTWFwcyYmIHN0YWNrbWFwcywgVmVjdG9yPFVubGlua2VkSGFuZGxlcklu
Zm8+JiYgZXhjZXB0aW9uSGFuZGxlcnMsIFZlY3RvcjxDb2RlTG9jYXRpb25MYWJlbDxFeGNlcHRp
b25IYW5kbGVyUHRyVGFnPj4mJiBleGNlcHRpb25IYW5kbGVyTG9jYXRpb25zKQogICAgIHsKICAg
ICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQkJRQ2FsbGVlKFdURk1vdmUoZW50cnlwb2ludCks
IGluZGV4LCBXVEZNb3ZlKG5hbWUpLCBXVEZNb3ZlKHRpZXJVcENvdW50KSwgV1RGTW92ZSh1bmxp
bmtlZENhbGxzKSwgV1RGTW92ZShzdGFja21hcHMpLCBXVEZNb3ZlKGV4Y2VwdGlvbkhhbmRsZXJz
KSwgV1RGTW92ZShleGNlcHRpb25IYW5kbGVyTG9jYXRpb25zKSkpOwogICAgIH0KQEAgLTIxMCw3
ICsyMDcsNyBAQCBjbGFzcyBCQlFDYWxsZWUgZmluYWwgOiBwdWJsaWMgT3B0aW1pemluZ0pJVENh
bGxlZSB7CiAgICAgVGllclVwQ291bnQqIHRpZXJVcENvdW50KCkgeyByZXR1cm4gbV90aWVyVXBD
b3VudC5nZXQoKTsgfQogCiBwcml2YXRlOgotICAgIEJCUUNhbGxlZShXYXNtOjpFbnRyeXBvaW50
JiYgZW50cnlwb2ludCwgc2l6ZV90IGluZGV4LCBzdGQ6OnBhaXI8Y29uc3QgTmFtZSosIFJlZlB0
cjxOYW1lU2VjdGlvbj4+JiYgbmFtZSwgc3RkOjp1bmlxdWVfcHRyPFRpZXJVcENvdW50PiYmIHRp
ZXJVcENvdW50LCBWZWN0b3I8VW5saW5rZWRXYXNtVG9XYXNtQ2FsbD4mJiB1bmxpbmtlZENhbGxz
LCBIYXNoTWFwPENhbGxTaXRlSW5kZXgsIFZlY3RvcjxPU1JFbnRyeVZhbHVlPj4mJiBzdGFja21h
cHMsIFZlY3RvcjxVbmxpbmtlZEhhbmRsZXJJbmZvPiYmIGV4Y2VwdGlvbkhhbmRsZXJzLCBWZWN0
b3I8Q29kZUxvY2F0aW9uTGFiZWw8RXhjZXB0aW9uSGFuZGxlclB0clRhZz4+JiYgZXhjZXB0aW9u
SGFuZGxlckxvY2F0aW9ucykKKyAgICBCQlFDYWxsZWUoV2FzbTo6RW50cnlwb2ludCYmIGVudHJ5
cG9pbnQsIHNpemVfdCBpbmRleCwgc3RkOjpwYWlyPGNvbnN0IE5hbWUqLCBSZWZQdHI8TmFtZVNl
Y3Rpb24+PiYmIG5hbWUsIHN0ZDo6dW5pcXVlX3B0cjxUaWVyVXBDb3VudD4mJiB0aWVyVXBDb3Vu
dCwgVmVjdG9yPFVubGlua2VkV2FzbVRvV2FzbUNhbGw+JiYgdW5saW5rZWRDYWxscywgU3RhY2tN
YXBzJiYgc3RhY2ttYXBzLCBWZWN0b3I8VW5saW5rZWRIYW5kbGVySW5mbz4mJiBleGNlcHRpb25I
YW5kbGVycywgVmVjdG9yPENvZGVMb2NhdGlvbkxhYmVsPEV4Y2VwdGlvbkhhbmRsZXJQdHJUYWc+
PiYmIGV4Y2VwdGlvbkhhbmRsZXJMb2NhdGlvbnMpCiAgICAgICAgIDogT3B0aW1pemluZ0pJVENh
bGxlZShXYXNtOjpDb21waWxhdGlvbk1vZGU6OkJCUU1vZGUsIFdURk1vdmUoZW50cnlwb2ludCks
IGluZGV4LCBXVEZNb3ZlKG5hbWUpLCBXVEZNb3ZlKHVubGlua2VkQ2FsbHMpLCBXVEZNb3ZlKHN0
YWNrbWFwcyksIFdURk1vdmUoZXhjZXB0aW9uSGFuZGxlcnMpLCBXVEZNb3ZlKGV4Y2VwdGlvbkhh
bmRsZXJMb2NhdGlvbnMpKQogICAgICAgICAsIG1fdGllclVwQ291bnQoV1RGTW92ZSh0aWVyVXBD
b3VudCkpCiAgICAgewpAQCAtMjkwLDcgKzI4Nyw3IEBAIGNsYXNzIExMSW50Q2FsbGVlcyA6IHB1
YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxMTEludENhbGxlZXM+IHsKICAgICB7CiAgICAgfQog
Ci0gICAgVmVjdG9yPFJlZjxMTEludENhbGxlZT4+IG1fbGxpbnRDYWxsZWVzOworICAgIEZpeGVk
VmVjdG9yPFJlZjxMTEludENhbGxlZT4+IG1fbGxpbnRDYWxsZWVzOwogfTsKIAogfSB9IC8vIG5h
bWVzcGFjZSBKU0M6Oldhc20KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNt
L1dhc21IYW5kbGVySW5mby5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtSGFu
ZGxlckluZm8uY3BwCmluZGV4IGE1N2JjZjQ5YmIyY2VhMTc1MGZmYjZiZjFlNTVhNzgyM2RmMTM2
MjIuLjRiNTg5ZTU1YjcwMGY4NmU0Yjk0ZTU0ZGU0ZDM2ZWJmMTFjOTc2Y2QgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21IYW5kbGVySW5mby5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUhhbmRsZXJJbmZvLmNwcApAQCAtNTcsNyArNTcs
NyBAQCB2b2lkIEhhbmRsZXJJbmZvOjppbml0aWFsaXplKGNvbnN0IFVubGlua2VkSGFuZGxlcklu
Zm8mIHVubGlua2VkSW5mbywgTWFjcm9Bc3NlbQogICAgIH0KIH0KIAotY29uc3QgSGFuZGxlcklu
Zm8qIEhhbmRsZXJJbmZvOjpoYW5kbGVyRm9ySW5kZXgoSW5zdGFuY2UmIGluc3RhbmNlLCBjb25z
dCBWZWN0b3I8SGFuZGxlckluZm8+JiBleGVwdGlvbkhhbmRsZXJzLCB1bnNpZ25lZCBpbmRleCwg
Y29uc3QgV2FzbTo6VGFnKiBleGNlcHRpb25UYWcpCitjb25zdCBIYW5kbGVySW5mbyogSGFuZGxl
ckluZm86OmhhbmRsZXJGb3JJbmRleChJbnN0YW5jZSYgaW5zdGFuY2UsIGNvbnN0IEZpeGVkVmVj
dG9yPEhhbmRsZXJJbmZvPiYgZXhlcHRpb25IYW5kbGVycywgdW5zaWduZWQgaW5kZXgsIGNvbnN0
IFdhc206OlRhZyogZXhjZXB0aW9uVGFnKQogewogICAgIGJvb2wgZGVsZWdhdGluZyA9IGZhbHNl
OwogICAgIHVuc2lnbmVkIGRlbGVnYXRlVGFyZ2V0ID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS93YXNtL1dhc21IYW5kbGVySW5mby5oIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3dhc20vV2FzbUhhbmRsZXJJbmZvLmgKaW5kZXggYzI1MTE5M2QyMTMxNzllYmRlOTk1NDRj
MjUzZWQ0OTg5ZDJmNjQzZS4uYTcwYmM3YzU1YzZjNzM4ZTg0ZTMxZjkzYjQ3NzZlOTgyODZkZGE0
MCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUhhbmRsZXJJbmZv
LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUhhbmRsZXJJbmZvLmgKQEAg
LTY4LDcgKzY4LDcgQEAgc3RydWN0IFVubGlua2VkSGFuZGxlckluZm8gOiBwdWJsaWMgSGFuZGxl
ckluZm9CYXNlIHsKIH07CiAKIHN0cnVjdCBIYW5kbGVySW5mbyA6IHB1YmxpYyBIYW5kbGVySW5m
b0Jhc2UgewotICAgIHN0YXRpYyBjb25zdCBIYW5kbGVySW5mbyogaGFuZGxlckZvckluZGV4KElu
c3RhbmNlJiwgY29uc3QgVmVjdG9yPEhhbmRsZXJJbmZvPiYgZXhlcHRpb25IYW5kbGVycywgdW5z
aWduZWQgaW5kZXgsIGNvbnN0IFdhc206OlRhZyogZXhjZXB0aW9uVGFnKTsKKyAgICBzdGF0aWMg
Y29uc3QgSGFuZGxlckluZm8qIGhhbmRsZXJGb3JJbmRleChJbnN0YW5jZSYsIGNvbnN0IEZpeGVk
VmVjdG9yPEhhbmRsZXJJbmZvPiYgZXhlcHRpb25IYW5kbGVycywgdW5zaWduZWQgaW5kZXgsIGNv
bnN0IFdhc206OlRhZyogZXhjZXB0aW9uVGFnKTsKIAogICAgIHZvaWQgaW5pdGlhbGl6ZShjb25z
dCBVbmxpbmtlZEhhbmRsZXJJbmZvJiwgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyPEV4Y2VwdGlvbkhh
bmRsZXJQdHJUYWc+KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20v
V2FzbU9TUkVudHJ5RGF0YS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbU9TUkVu
dHJ5RGF0YS5oCmluZGV4IGQ5M2YzNDJjZTY0MmQyYzY2MzlmNjkwNjU5ZTZhMjViM2EwYTc4MjYu
LmIwZGExNjU4MTBjY2VmZjc2NTk4MjJiOThmYTJmMjE4ZWZiOTNlNTEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21PU1JFbnRyeURhdGEuaAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtT1NSRW50cnlEYXRhLmgKQEAgLTMzLDggKzMzLDkgQEAK
IAogbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBXYXNtIHsKIAotY2xhc3MgT1NSRW50cnlWYWx1
ZSA6IHB1YmxpYyBCMzo6VmFsdWVSZXAgeworY2xhc3MgT1NSRW50cnlWYWx1ZSBmaW5hbCA6IHB1
YmxpYyBCMzo6VmFsdWVSZXAgewogcHVibGljOgorICAgIE9TUkVudHJ5VmFsdWUoKSA9IGRlZmF1
bHQ7CiAgICAgT1NSRW50cnlWYWx1ZShjb25zdCBCMzo6VmFsdWVSZXAmIHZhbHVlUmVwLCBCMzo6
VHlwZSB0eXBlKQogICAgICAgICA6IEIzOjpWYWx1ZVJlcCh2YWx1ZVJlcCkKICAgICAgICAgLCBt
X3R5cGUodHlwZSkKQEAgLTQ0LDI1ICs0NSwyNiBAQCBjbGFzcyBPU1JFbnRyeVZhbHVlIDogcHVi
bGljIEIzOjpWYWx1ZVJlcCB7CiAgICAgQjM6OlR5cGUgdHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1f
dHlwZTsgfQogCiBwcml2YXRlOgotICAgIEIzOjpUeXBlIG1fdHlwZTsKKyAgICBCMzo6VHlwZSBt
X3R5cGUgeyB9OwogfTsKIAotdXNpbmcgU3RhY2tNYXAgPSBWZWN0b3I8T1NSRW50cnlWYWx1ZT47
Cit1c2luZyBTdGFja01hcCA9IEZpeGVkVmVjdG9yPE9TUkVudHJ5VmFsdWU+OwogdXNpbmcgU3Rh
Y2tNYXBzID0gSGFzaE1hcDxDYWxsU2l0ZUluZGV4LCBTdGFja01hcD47CiAKIGNsYXNzIE9TUkVu
dHJ5RGF0YSB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoT1NSRW50cnlEYXRhKTsKICAgICBX
VEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKLSAgICBPU1JFbnRyeURhdGEodWludDMy
X3QgZnVuY3Rpb25JbmRleCwgdWludDMyX3QgbG9vcEluZGV4KQorICAgIE9TUkVudHJ5RGF0YSh1
aW50MzJfdCBmdW5jdGlvbkluZGV4LCB1aW50MzJfdCBsb29wSW5kZXgsIFN0YWNrTWFwJiYgc3Rh
Y2tNYXApCiAgICAgICAgIDogbV9mdW5jdGlvbkluZGV4KGZ1bmN0aW9uSW5kZXgpCiAgICAgICAg
ICwgbV9sb29wSW5kZXgobG9vcEluZGV4KQorICAgICAgICAsIG1fdmFsdWVzKFdURk1vdmUoc3Rh
Y2tNYXApKQogICAgIHsKICAgICB9CiAKICAgICB1aW50MzJfdCBmdW5jdGlvbkluZGV4KCkgY29u
c3QgeyByZXR1cm4gbV9mdW5jdGlvbkluZGV4OyB9CiAgICAgdWludDMyX3QgbG9vcEluZGV4KCkg
Y29uc3QgeyByZXR1cm4gbV9sb29wSW5kZXg7IH0KLSAgICBTdGFja01hcCYgdmFsdWVzKCkgeyBy
ZXR1cm4gbV92YWx1ZXM7IH0KKyAgICBjb25zdCBTdGFja01hcCYgdmFsdWVzKCkgeyByZXR1cm4g
bV92YWx1ZXM7IH0KIAogcHJpdmF0ZToKICAgICB1aW50MzJfdCBtX2Z1bmN0aW9uSW5kZXg7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtUGxhbi5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtUGxhbi5jcHAKaW5kZXggMjg1MGI2YzljZmM5ZGVk
ODE2YWJiYTcwZWE5MjI4M2I3NzQxMTYzZS4uMWMxYjdiNjU5NzAwMDliOGY1NzVlYWQyYTYxZWRh
NmZhOTJiN2IzYyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbVBs
YW4uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21QbGFuLmNwcApAQCAt
MTI3LDcgKzEyNyw3IEBAIHZvaWQgUGxhbjo6ZmFpbChTdHJpbmcmJiBlcnJvck1lc3NhZ2UpCiB2
b2lkIFBsYW46OnVwZGF0ZUNhbGxTaXRlc1RvQ2FsbFVzKENvZGVCbG9jayYgY29kZUJsb2NrLCBD
b2RlTG9jYXRpb25MYWJlbDxXYXNtRW50cnlQdHJUYWc+IGVudHJ5cG9pbnQsIHVpbnQzMl90IGZ1
bmN0aW9uSW5kZXgsIHVpbnQzMl90IGZ1bmN0aW9uSW5kZXhTcGFjZSkKIHsKICAgICBIYXNoTWFw
PHZvaWQqLCBDb2RlTG9jYXRpb25MYWJlbDxXYXNtRW50cnlQdHJUYWc+PiBzdGFnZWRDYWxsczsK
LSAgICBhdXRvIHN0YWdlUmVwYXRjaCA9IFsmXSAoY29uc3QgVmVjdG9yPFVubGlua2VkV2FzbVRv
V2FzbUNhbGw+JiBjYWxsc2l0ZXMpIHsKKyAgICBhdXRvIHN0YWdlUmVwYXRjaCA9IFsmXSAoY29u
c3QgYXV0byYgY2FsbHNpdGVzKSB7CiAgICAgICAgIGZvciAoYXV0byYgY2FsbCA6IGNhbGxzaXRl
cykgewogICAgICAgICAgICAgaWYgKGNhbGwuZnVuY3Rpb25JbmRleFNwYWNlID09IGZ1bmN0aW9u
SW5kZXhTcGFjZSkgewogICAgICAgICAgICAgICAgIENvZGVMb2NhdGlvbkxhYmVsPFdhc21FbnRy
eVB0clRhZz4gdGFyZ2V0ID0gTWFjcm9Bc3NlbWJsZXI6OnByZXBhcmVGb3JBdG9taWNSZXBhdGNo
TmVhckNhbGxDb25jdXJyZW50bHkoY2FsbC5jYWxsTG9jYXRpb24sIGVudHJ5cG9pbnQpOwpAQCAt
MTYwLDcgKzE2MCw3IEBAIHZvaWQgUGxhbjo6dXBkYXRlQ2FsbFNpdGVzVG9DYWxsVXMoQ29kZUJs
b2NrJiBjb2RlQmxvY2ssIENvZGVMb2NhdGlvbkxhYmVsPFdhc21FCiAKICAgICBjb2RlQmxvY2su
bV93YXNtSW5kaXJlY3RDYWxsRW50cnlQb2ludHNbZnVuY3Rpb25JbmRleF0gPSBlbnRyeXBvaW50
OwogCi0gICAgYXV0byByZXBhdGNoQ2FsbHMgPSBbJl0gKGNvbnN0IFZlY3RvcjxVbmxpbmtlZFdh
c21Ub1dhc21DYWxsPiYgY2FsbHNpdGVzKSB7CisgICAgYXV0byByZXBhdGNoQ2FsbHMgPSBbJl0g
KGNvbnN0IGF1dG8mIGNhbGxzaXRlcykgewogICAgICAgICBmb3IgKGF1dG8mIGNhbGwgOiBjYWxs
c2l0ZXMpIHsKICAgICAgICAgICAgIGRhdGFMb2dMbklmKFdhc21QbGFuSW50ZXJuYWw6OnZlcmJv
c2UsICJDb25zaWRlcmluZyByZXBhdGNoaW5nIGNhbGwgYXQ6ICIsIFJhd1BvaW50ZXIoY2FsbC5j
YWxsTG9jYXRpb24uZGF0YUxvY2F0aW9uKCkpLCAiIHRoYXQgdGFyZ2V0cyAiLCBjYWxsLmZ1bmN0
aW9uSW5kZXhTcGFjZSk7CiAgICAgICAgICAgICBpZiAoY2FsbC5mdW5jdGlvbkluZGV4U3BhY2Ug
PT0gZnVuY3Rpb25JbmRleFNwYWNlKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvd2FzbS9XYXNtVGllclVwQ291bnQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20v
V2FzbVRpZXJVcENvdW50LmNwcAppbmRleCA5OGNmMzhiMzgxYzI2YjU4N2Y5M2ZkNjVmMjgyZDQz
MjhhYmJiYmIyLi4xMGQzM2U0OTg2OGYyODY5N2FkMzA5OWEyMmJjMDE5ZGE5ZjVmYjkyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtVGllclVwQ291bnQuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21UaWVyVXBDb3VudC5jcHAKQEAgLTM5
LDkgKzM5LDkgQEAgVGllclVwQ291bnQ6OlRpZXJVcENvdW50KCkKIAogVGllclVwQ291bnQ6On5U
aWVyVXBDb3VudCgpID0gZGVmYXVsdDsKIAotT1NSRW50cnlEYXRhJiBUaWVyVXBDb3VudDo6YWRk
T1NSRW50cnlEYXRhKHVpbnQzMl90IGZ1bmN0aW9uSW5kZXgsIHVpbnQzMl90IGxvb3BJbmRleCkK
K09TUkVudHJ5RGF0YSYgVGllclVwQ291bnQ6OmFkZE9TUkVudHJ5RGF0YSh1aW50MzJfdCBmdW5j
dGlvbkluZGV4LCB1aW50MzJfdCBsb29wSW5kZXgsIFN0YWNrTWFwJiYgc3RhY2tNYXApCiB7Ci0g
ICAgbV9vc3JFbnRyeURhdGEuYXBwZW5kKG1ha2VVbmlxdWU8T1NSRW50cnlEYXRhPihmdW5jdGlv
bkluZGV4LCBsb29wSW5kZXgpKTsKKyAgICBtX29zckVudHJ5RGF0YS5hcHBlbmQobWFrZVVuaXF1
ZTxPU1JFbnRyeURhdGE+KGZ1bmN0aW9uSW5kZXgsIGxvb3BJbmRleCwgV1RGTW92ZShzdGFja01h
cCkpKTsKICAgICByZXR1cm4gKm1fb3NyRW50cnlEYXRhLmxhc3QoKS5nZXQoKTsKIH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbVRpZXJVcENvdW50LmggYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtVGllclVwQ291bnQuaAppbmRleCAxYzBkOTRj
ZjhhZjg1MTI2MWNiMTU1ZWE3ZmUyMzEyYmU1MmQxMDUyLi4zZjM0ZDkzMGU5YTUzZmI3ZmVhNmJj
NjI0YzUxZTkyODFiOThlMGNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2Fz
bS9XYXNtVGllclVwQ291bnQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNt
VGllclVwQ291bnQuaApAQCAtNjgsNyArNjgsNyBAQCBjbGFzcyBUaWVyVXBDb3VudCA6IHB1Ymxp
YyBVcHBlclRpZXJFeGVjdXRpb25Db3VudGVyIHsKICAgICBWZWN0b3I8dWludDMyX3Q+JiBvdXRl
ckxvb3BzKCkgeyByZXR1cm4gbV9vdXRlckxvb3BzOyB9CiAgICAgTG9jayYgZ2V0TG9jaygpIHsg
cmV0dXJuIG1fbG9jazsgfQogCi0gICAgT1NSRW50cnlEYXRhJiBhZGRPU1JFbnRyeURhdGEodWlu
dDMyX3QgZnVuY3Rpb25JbmRleCwgdWludDMyX3QgbG9vcEluZGV4KTsKKyAgICBPU1JFbnRyeURh
dGEmIGFkZE9TUkVudHJ5RGF0YSh1aW50MzJfdCBmdW5jdGlvbkluZGV4LCB1aW50MzJfdCBsb29w
SW5kZXgsIFN0YWNrTWFwJiYpOwogCiAgICAgdm9pZCBvcHRpbWl6ZUFmdGVyV2FybVVwKHVpbnQz
Ml90IGZ1bmN0aW9uSW5kZXgpCiAgICAgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3dhc20vanMvSlNXZWJBc3NlbWJseUNvZGVCbG9jay5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvd2FzbS9qcy9KU1dlYkFzc2VtYmx5Q29kZUJsb2NrLmNwcAppbmRleCA1NGU5NzQxNGI2
NjI2MDM0ZjEzMGUxNWQ0OTNkN2M5NTBlMzgxNTc1Li45ZTRiYjIzZTZjZGZkMjM3ZGIyMDE5NzFj
ZmIwOGZkMTc1NjUxMmRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9q
cy9KU1dlYkFzc2VtYmx5Q29kZUJsb2NrLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
d2FzbS9qcy9KU1dlYkFzc2VtYmx5Q29kZUJsb2NrLmNwcApAQCAtNDcsMTAgKzQ3LDEwIEBAIEpT
V2ViQXNzZW1ibHlDb2RlQmxvY2sqIEpTV2ViQXNzZW1ibHlDb2RlQmxvY2s6OmNyZWF0ZShWTSYg
dm0sIFJlZjxXYXNtOjpDb2RlQmxvCiBKU1dlYkFzc2VtYmx5Q29kZUJsb2NrOjpKU1dlYkFzc2Vt
Ymx5Q29kZUJsb2NrKFZNJiB2bSwgUmVmPFdhc206OkNvZGVCbG9jaz4mJiBjb2RlQmxvY2ssIGNv
bnN0IFdhc206Ok1vZHVsZUluZm9ybWF0aW9uJiBtb2R1bGVJbmZvcm1hdGlvbikKICAgICA6IEJh
c2Uodm0sIHZtLndlYkFzc2VtYmx5Q29kZUJsb2NrU3RydWN0dXJlLmdldCgpKQogICAgICwgbV9j
b2RlQmxvY2soV1RGTW92ZShjb2RlQmxvY2spKQorICAgICwgbV93YXNtVG9KU0V4aXRTdHVicyht
X2NvZGVCbG9jay0+ZnVuY3Rpb25JbXBvcnRDb3VudCgpKQogewogICAgIC8vIEZJWE1FOiBXZSBz
aG91bGQgbm90IG5lZWQgdG8gZG8gdGhpcyBzeW5jaHJvbm91c2x5LgogICAgIC8vIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzA1NjcKLSAgICBtX3dhc21Ub0pTRXhp
dFN0dWJzLnJlc2VydmVDYXBhY2l0eShtX2NvZGVCbG9jay0+ZnVuY3Rpb25JbXBvcnRDb3VudCgp
KTsKICAgICBmb3IgKHVuc2lnbmVkIGltcG9ydEluZGV4ID0gMDsgaW1wb3J0SW5kZXggPCBtX2Nv
ZGVCbG9jay0+ZnVuY3Rpb25JbXBvcnRDb3VudCgpOyArK2ltcG9ydEluZGV4KSB7CiAgICAgICAg
IFdhc206OlNpZ25hdHVyZUluZGV4IHNpZ25hdHVyZUluZGV4ID0gbW9kdWxlSW5mb3JtYXRpb24u
aW1wb3J0RnVuY3Rpb25TaWduYXR1cmVJbmRpY2VzLmF0KGltcG9ydEluZGV4KTsKICAgICAgICAg
YXV0byBiaW5kaW5nID0gV2FzbTo6d2FzbVRvSlModm0sIG1fY2FsbExpbmtJbmZvcywgc2lnbmF0
dXJlSW5kZXgsIGltcG9ydEluZGV4KTsKQEAgLTYyLDcgKzYyLDcgQEAgSlNXZWJBc3NlbWJseUNv
ZGVCbG9jazo6SlNXZWJBc3NlbWJseUNvZGVCbG9jayhWTSYgdm0sIFJlZjxXYXNtOjpDb2RlQmxv
Y2s+JiYgY28KICAgICAgICAgICAgIH0KICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9S
RUFDSEVEKCk7CiAgICAgICAgIH0KLSAgICAgICAgbV93YXNtVG9KU0V4aXRTdHVicy51bmNoZWNr
ZWRBcHBlbmQoYmluZGluZy52YWx1ZSgpKTsKKyAgICAgICAgbV93YXNtVG9KU0V4aXRTdHVic1tp
bXBvcnRJbmRleF0gPSBiaW5kaW5nLnZhbHVlKCk7CiAgICAgfQogfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9KU1dlYkFzc2VtYmx5Q29kZUJsb2NrLmggYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9KU1dlYkFzc2VtYmx5Q29kZUJsb2NrLmgKaW5k
ZXggODE1ZGFkODI3ZjExYzAwM2FhNTBhN2E2NzZiODY1MDlkZDQ2MTQxZS4uMWIzMGQyZmMwZDA3
NTZkYTEyYjk0Y2QyNTU5Mzc4YzVjZmFhNDhiYyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3dhc20vanMvSlNXZWJBc3NlbWJseUNvZGVCbG9jay5oCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS93YXNtL2pzL0pTV2ViQXNzZW1ibHlDb2RlQmxvY2suaApAQCAtODksNyArODks
NyBAQCBjbGFzcyBKU1dlYkFzc2VtYmx5Q29kZUJsb2NrIGZpbmFsIDogcHVibGljIEpTQ2VsbCB7
CiAgICAgREVDTEFSRV9WSVNJVF9DSElMRFJFTjsKIAogICAgIFJlZjxXYXNtOjpDb2RlQmxvY2s+
IG1fY29kZUJsb2NrOwotICAgIFZlY3RvcjxNYWNyb0Fzc2VtYmxlckNvZGVSZWY8V2FzbUVudHJ5
UHRyVGFnPj4gbV93YXNtVG9KU0V4aXRTdHViczsKKyAgICBGaXhlZFZlY3RvcjxNYWNyb0Fzc2Vt
YmxlckNvZGVSZWY8V2FzbUVudHJ5UHRyVGFnPj4gbV93YXNtVG9KU0V4aXRTdHViczsKICAgICBC
YWc8T3B0aW1pemluZ0NhbGxMaW5rSW5mbz4gbV9jYWxsTGlua0luZm9zOwogICAgIFN0cmluZyBt
X2Vycm9yTWVzc2FnZTsKIH07Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>446927</attachid>
            <date>2021-12-12 01:25:36 -0800</date>
            <delta_ts>2021-12-12 17:10:40 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-234206-20211212012535.patch</filename>
            <type>text/plain</type>
            <size>32128</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg2OTIyCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBk
ZmIxYTBjMDI2YWE2NTAwZjViZDU2ZjJiNzZlYmVmNTlkMWRhNzk0Li5lZGI5ZmEyMDI3NjQxMGVh
NDg1YTg0NWI4MmJmMTY1NmVhYzJlNmIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw0NSBAQAorMjAyMS0xMi0xMiAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29t
PgorCisgICAgICAgIFtKU0NdIFVzZSBGaXhlZFZlY3RvciB0byBzaHJpbmsgc29tZSBvZiBXYXNt
IGRhdGEgc3RydWN0dXJlcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MjM0MjA2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgV2UgY2FuIHVzZSBGaXhlZFZlY3RvciB0byBzaHJpbmsgc29tZSBvZiBXYXNtIGRh
dGEgc3RydWN0dXJlcyBpbmNsdWRpbmcgV2FzbTo6Q2FsbGVlLgorCisgICAgICAgICogd2FzbS9X
YXNtQWlySVJHZW5lcmF0b3IuY3BwOgorICAgICAgICAoSlNDOjpXYXNtOjpBaXJJUkdlbmVyYXRv
cjo6ZW1pdExvb3BUaWVyVXBDaGVjayk6CisgICAgICAgICogd2FzbS9XYXNtQjNJUkdlbmVyYXRv
ci5jcHA6CisgICAgICAgIChKU0M6Oldhc206OlBhdGNocG9pbnRFeGNlcHRpb25IYW5kbGU6Omdl
bmVyYXRlIGNvbnN0KToKKyAgICAgICAgKEpTQzo6V2FzbTo6QjNJUkdlbmVyYXRvcjo6ZW1pdExv
b3BUaWVyVXBDaGVjayk6CisgICAgICAgICogd2FzbS9XYXNtQ2FsbGVlLmNwcDoKKyAgICAgICAg
KEpTQzo6V2FzbTo6TExJbnRDYWxsZWU6OmxpbmtFeGNlcHRpb25IYW5kbGVycyk6CisgICAgICAg
IChKU0M6Oldhc206Ok9wdGltaXppbmdKSVRDYWxsZWU6OmxpbmtFeGNlcHRpb25IYW5kbGVycyk6
CisgICAgICAgIChKU0M6Oldhc206Ok9wdGltaXppbmdKSVRDYWxsZWU6OnN0YWNrbWFwIGNvbnN0
KToKKyAgICAgICAgKiB3YXNtL1dhc21DYWxsZWUuaDoKKyAgICAgICAgKEpTQzo6V2FzbTo6Q2Fs
bGVlOjpoYXNFeGNlcHRpb25IYW5kbGVycyBjb25zdCk6CisgICAgICAgIChKU0M6Oldhc206OkpJ
VENhbGxlZTo6d2FzbVRvV2FzbUNhbGxzaXRlcyk6CisgICAgICAgIChKU0M6Oldhc206Ok9wdGlt
aXppbmdKSVRDYWxsZWU6Ok9wdGltaXppbmdKSVRDYWxsZWUpOgorICAgICAgICAqIHdhc20vV2Fz
bUNvZGVCbG9jay5jcHA6CisgICAgICAgIChKU0M6Oldhc206OkNvZGVCbG9jazo6Q29kZUJsb2Nr
KToKKyAgICAgICAgKiB3YXNtL1dhc21Db2RlQmxvY2suaDoKKyAgICAgICAgKiB3YXNtL1dhc21I
YW5kbGVySW5mby5jcHA6CisgICAgICAgIChKU0M6Oldhc206OkhhbmRsZXJJbmZvOjpoYW5kbGVy
Rm9ySW5kZXgpOgorICAgICAgICAqIHdhc20vV2FzbUhhbmRsZXJJbmZvLmg6CisgICAgICAgICog
d2FzbS9XYXNtT1NSRW50cnlEYXRhLmg6CisgICAgICAgIChKU0M6Oldhc206Ok9TUkVudHJ5RGF0
YTo6T1NSRW50cnlEYXRhKToKKyAgICAgICAgKEpTQzo6V2FzbTo6T1NSRW50cnlEYXRhOjp2YWx1
ZXMpOgorICAgICAgICAoSlNDOjpXYXNtOjpPU1JFbnRyeVZhbHVlOjpPU1JFbnRyeVZhbHVlKTog
RGVsZXRlZC4KKyAgICAgICAgKEpTQzo6V2FzbTo6T1NSRW50cnlWYWx1ZTo6dHlwZSBjb25zdCk6
IERlbGV0ZWQuCisgICAgICAgICogd2FzbS9XYXNtUGxhbi5jcHA6CisgICAgICAgIChKU0M6Oldh
c206OlBsYW46OnVwZGF0ZUNhbGxTaXRlc1RvQ2FsbFVzKToKKyAgICAgICAgKiB3YXNtL1dhc21U
aWVyVXBDb3VudC5jcHA6CisgICAgICAgIChKU0M6Oldhc206OlRpZXJVcENvdW50OjphZGRPU1JF
bnRyeURhdGEpOgorICAgICAgICAqIHdhc20vV2FzbVRpZXJVcENvdW50Lmg6CisgICAgICAgICog
d2FzbS9qcy9KU1dlYkFzc2VtYmx5Q29kZUJsb2NrLmNwcDoKKyAgICAgICAgKEpTQzo6SlNXZWJB
c3NlbWJseUNvZGVCbG9jazo6SlNXZWJBc3NlbWJseUNvZGVCbG9jayk6CisgICAgICAgICogd2Fz
bS9qcy9KU1dlYkFzc2VtYmx5Q29kZUJsb2NrLmg6CisKIDIwMjEtMTItMTEgIFNhYW0gQmFyYXRp
ICA8c2JhcmF0aUBhcHBsZS5jb20+CiAKICAgICAgICAgVGVhY2ggdGhlIHNhbXBsaW5nIHByb2Zp
bGVyIGhvdyB0byBkaXNwbGF5IG9yaWdpbiBkYXRhIGZvciBCMyBXYXNtCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtQWlySVJHZW5lcmF0b3IuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUFpcklSR2VuZXJhdG9yLmNwcAppbmRleCBlZThiYmVm
Nzc0OTRlYjMyMDQxOWRhOTNiMjkwNWE1NTAwNWNjOGU5Li45NTBlYzVjYzJkMmFmNmVmOWY4ZjU2
YTM2NzBkYTlkYWUyM2Y0ZDdjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2Fz
bS9XYXNtQWlySVJHZW5lcmF0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNt
L1dhc21BaXJJUkdlbmVyYXRvci5jcHAKQEAgLTI5MjQsMTAgKzI5MjQsMTMgQEAgdm9pZCBBaXJJ
UkdlbmVyYXRvcjo6ZW1pdExvb3BUaWVyVXBDaGVjayh1aW50MzJfdCBsb29wSW5kZXgsIGNvbnN0
IFN0YWNrJiBlbmNsb3MKICAgICAgICAgQ0NhbGxIZWxwZXJzOjpKdW1wIHRpZXJVcCA9IGppdC5i
cmFuY2hBZGQzMihDQ2FsbEhlbHBlcnM6OlBvc2l0aXZlT3JaZXJvLCBDQ2FsbEhlbHBlcnM6OlRy
dXN0ZWRJbW0zMihUaWVyVXBDb3VudDo6bG9vcEluY3JlbWVudCgpKSwgQ0NhbGxIZWxwZXJzOjpB
ZGRyZXNzKHBhcmFtc1swXS5ncHIoKSkpOwogICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6TGFiZWwg
dGllclVwUmVzdW1lID0gaml0LmxhYmVsKCk7CiAKLSAgICAgICAgT1NSRW50cnlEYXRhJiBvc3JF
bnRyeURhdGEgPSBtX3RpZXJVcC0+YWRkT1NSRW50cnlEYXRhKG1fZnVuY3Rpb25JbmRleCwgbG9v
cEluZGV4KTsKICAgICAgICAgLy8gRmlyc3QgYXJndW1lbnQgaXMgdGhlIGNvdW50ZG93biBsb2Nh
dGlvbi4KLSAgICAgICAgZm9yICh1bnNpZ25lZCBpbmRleCA9IDE7IGluZGV4IDwgcGFyYW1zLnZh
bHVlKCktPm51bUNoaWxkcmVuKCk7ICsraW5kZXgpCi0gICAgICAgICAgICBvc3JFbnRyeURhdGEu
dmFsdWVzKCkuY29uc3RydWN0QW5kQXBwZW5kKHBhcmFtc1tpbmRleF0sIHBhcmFtcy52YWx1ZSgp
LT5jaGlsZChpbmRleCktPnR5cGUoKSk7CisgICAgICAgIEFTU0VSVChwYXJhbXMudmFsdWUoKS0+
bnVtQ2hpbGRyZW4oKSA+PSAxKTsKKyAgICAgICAgU3RhY2tNYXAgdmFsdWVzKHBhcmFtcy52YWx1
ZSgpLT5udW1DaGlsZHJlbigpIC0gMSk7CisgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDE7IGkg
PCBwYXJhbXMudmFsdWUoKS0+bnVtQ2hpbGRyZW4oKTsgKytpKQorICAgICAgICAgICAgdmFsdWVz
W2kgLSAxXSA9IE9TUkVudHJ5VmFsdWUocGFyYW1zW2ldLCBwYXJhbXMudmFsdWUoKS0+Y2hpbGQo
aSktPnR5cGUoKSk7CisKKyAgICAgICAgT1NSRW50cnlEYXRhJiBvc3JFbnRyeURhdGEgPSBtX3Rp
ZXJVcC0+YWRkT1NSRW50cnlEYXRhKG1fZnVuY3Rpb25JbmRleCwgbG9vcEluZGV4LCBXVEZNb3Zl
KHZhbHVlcykpOwogICAgICAgICBPU1JFbnRyeURhdGEqIG9zckVudHJ5RGF0YVB0ciA9ICZvc3JF
bnRyeURhdGE7CiAKICAgICAgICAgcGFyYW1zLmFkZExhdGVQYXRoKFs9XSAoQ0NhbGxIZWxwZXJz
JiBqaXQpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21CM0lS
R2VuZXJhdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21CM0lSR2VuZXJh
dG9yLmNwcAppbmRleCBkYzgzYjE2MjEwZTcxNDJiMTUxMzhiYTBhMGZiNTM5MDU5NzIzZTdhLi5h
ODUxZDcxMzg3MDFkMGRiNmNhMDZjZmM0OGQ2Mjc3NjEyOTBiZjRmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtQjNJUkdlbmVyYXRvci5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUIzSVJHZW5lcmF0b3IuY3BwCkBAIC01ODMsOCArNTgz
LDExIEBAIHZvaWQgUGF0Y2hwb2ludEV4Y2VwdGlvbkhhbmRsZTo6Z2VuZXJhdGUoQ0NhbGxIZWxw
ZXJzJiBqaXQsIGNvbnN0IEIzOjpTdGFja21hcEdlCiAgICAgICAgIHJldHVybjsKIAogICAgIFN0
YWNrTWFwIHZhbHVlczsKLSAgICBmb3IgKHVuc2lnbmVkIGkgPSBtX29mZnNldDsgaSA8IHBhcmFt
cy52YWx1ZSgpLT5udW1DaGlsZHJlbigpOyArK2kpCi0gICAgICAgIHZhbHVlcy5jb25zdHJ1Y3RB
bmRBcHBlbmQocGFyYW1zW2ldLCBwYXJhbXMudmFsdWUoKS0+Y2hpbGQoaSktPnR5cGUoKSk7Cisg
ICAgaWYgKHBhcmFtcy52YWx1ZSgpLT5udW1DaGlsZHJlbigpID49IG1fb2Zmc2V0KSB7CisgICAg
ICAgIHZhbHVlcyA9IFN0YWNrTWFwKHBhcmFtcy52YWx1ZSgpLT5udW1DaGlsZHJlbigpIC0gbV9v
ZmZzZXQpOworICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSBtX29mZnNldDsgaSA8IHBhcmFtcy52
YWx1ZSgpLT5udW1DaGlsZHJlbigpOyArK2kpCisgICAgICAgICAgICB2YWx1ZXNbaSAtIG1fb2Zm
c2V0XSA9IE9TUkVudHJ5VmFsdWUocGFyYW1zW2ldLCBwYXJhbXMudmFsdWUoKS0+Y2hpbGQoaSkt
PnR5cGUoKSk7CisgICAgfQogICAgIGdlbmVyYXRvci0+YWRkU3RhY2tNYXAobV9jYWxsU2l0ZUlu
ZGV4LCBXVEZNb3ZlKHZhbHVlcykpOwogICAgIGppdC5zdG9yZTMyKENDYWxsSGVscGVyczo6VHJ1
c3RlZEltbTMyKG1fY2FsbFNpdGVJbmRleCksIENDYWxsSGVscGVyczo6dGFnRm9yKENhbGxGcmFt
ZVNsb3Q6OmFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzKSk7CiB9CkBAIC0yNDI2LDEwICsyNDI5
LDEzIEBAIHZvaWQgQjNJUkdlbmVyYXRvcjo6ZW1pdExvb3BUaWVyVXBDaGVjayh1aW50MzJfdCBs
b29wSW5kZXgsIGNvbnN0IFN0YWNrJiBlbmNsb3NpCiAgICAgICAgIENDYWxsSGVscGVyczo6SnVt
cCB0aWVyVXAgPSBqaXQuYnJhbmNoQWRkMzIoQ0NhbGxIZWxwZXJzOjpQb3NpdGl2ZU9yWmVybywg
Q0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIoVGllclVwQ291bnQ6Omxvb3BJbmNyZW1lbnQoKSks
IENDYWxsSGVscGVyczo6QWRkcmVzcyhwYXJhbXNbMF0uZ3ByKCkpKTsKICAgICAgICAgTWFjcm9B
c3NlbWJsZXI6OkxhYmVsIHRpZXJVcFJlc3VtZSA9IGppdC5sYWJlbCgpOwogCi0gICAgICAgIE9T
UkVudHJ5RGF0YSYgb3NyRW50cnlEYXRhID0gbV90aWVyVXAtPmFkZE9TUkVudHJ5RGF0YShtX2Z1
bmN0aW9uSW5kZXgsIGxvb3BJbmRleCk7CiAgICAgICAgIC8vIEZpcnN0IGFyZ3VtZW50IGlzIHRo
ZSBjb3VudGRvd24gbG9jYXRpb24uCisgICAgICAgIEFTU0VSVChwYXJhbXMudmFsdWUoKS0+bnVt
Q2hpbGRyZW4oKSA+PSAxKTsKKyAgICAgICAgU3RhY2tNYXAgdmFsdWVzKHBhcmFtcy52YWx1ZSgp
LT5udW1DaGlsZHJlbigpIC0gMSk7CiAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDE7IGkgPCBw
YXJhbXMudmFsdWUoKS0+bnVtQ2hpbGRyZW4oKTsgKytpKQotICAgICAgICAgICAgb3NyRW50cnlE
YXRhLnZhbHVlcygpLmNvbnN0cnVjdEFuZEFwcGVuZChwYXJhbXNbaV0sIHBhcmFtcy52YWx1ZSgp
LT5jaGlsZChpKS0+dHlwZSgpKTsKKyAgICAgICAgICAgIHZhbHVlc1tpIC0gMV0gPSBPU1JFbnRy
eVZhbHVlKHBhcmFtc1tpXSwgcGFyYW1zLnZhbHVlKCktPmNoaWxkKGkpLT50eXBlKCkpOworCisg
ICAgICAgIE9TUkVudHJ5RGF0YSYgb3NyRW50cnlEYXRhID0gbV90aWVyVXAtPmFkZE9TUkVudHJ5
RGF0YShtX2Z1bmN0aW9uSW5kZXgsIGxvb3BJbmRleCwgV1RGTW92ZSh2YWx1ZXMpKTsKICAgICAg
ICAgT1NSRW50cnlEYXRhKiBvc3JFbnRyeURhdGFQdHIgPSAmb3NyRW50cnlEYXRhOwogCiAgICAg
ICAgIHBhcmFtcy5hZGRMYXRlUGF0aChbPV0gKENDYWxsSGVscGVycyYgaml0KSB7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtQ2FsbGVlLmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS93YXNtL1dhc21DYWxsZWUuY3BwCmluZGV4IGI0NjZiN2ZjZWI4MGEzZTI3
Mjc5OWYzNzVmYWQwYmRkYWFiZDk0NWIuLmEwMzYzZGE2ZTgyYzdkZjA5MDQ5YzVmYWE2MDIxZjlk
YmUxN2NhNzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21DYWxs
ZWUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21DYWxsZWUuY3BwCkBA
IC04Niw3ICs4Niw3IEBAIExMSW50Q2FsbGVlOjpMTEludENhbGxlZShzdGQ6OnVuaXF1ZV9wdHI8
RnVuY3Rpb25Db2RlQmxvY2s+IGNvZGVCbG9jaywgc2l6ZV90IGluCiB2b2lkIExMSW50Q2FsbGVl
OjpsaW5rRXhjZXB0aW9uSGFuZGxlcnMoKQogewogICAgIGlmIChzaXplX3QgY291bnQgPSBtX2Nv
ZGVCbG9jay0+bnVtYmVyT2ZFeGNlcHRpb25IYW5kbGVycygpKSB7Ci0gICAgICAgIG1fZXhjZXB0
aW9uSGFuZGxlcnMucmVzaXplVG9GaXQoY291bnQpOworICAgICAgICBtX2V4Y2VwdGlvbkhhbmRs
ZXJzID0gRml4ZWRWZWN0b3I8SGFuZGxlckluZm8+KGNvdW50KTsKICAgICAgICAgZm9yIChzaXpl
X3QgaSA9IDA7IGkgPCBjb3VudDsgaSsrKSB7CiAgICAgICAgICAgICBjb25zdCBVbmxpbmtlZEhh
bmRsZXJJbmZvJiB1bmxpbmtlZEhhbmRsZXIgPSBtX2NvZGVCbG9jay0+ZXhjZXB0aW9uSGFuZGxl
cihpKTsKICAgICAgICAgICAgIEhhbmRsZXJJbmZvJiBoYW5kbGVyID0gbV9leGNlcHRpb25IYW5k
bGVyc1tpXTsKQEAgLTEzNywyMSArMTM3LDE5IEBAIHN0ZDo6dHVwbGU8dm9pZCosIHZvaWQqPiBM
TEludENhbGxlZTo6cmFuZ2UoKSBjb25zdAogICAgIHJldHVybiB7IG51bGxwdHIsIG51bGxwdHIg
fTsKIH0KIAotdm9pZCBPcHRpbWl6aW5nSklUQ2FsbGVlOjpsaW5rRXhjZXB0aW9uSGFuZGxlcnMo
KQordm9pZCBPcHRpbWl6aW5nSklUQ2FsbGVlOjpsaW5rRXhjZXB0aW9uSGFuZGxlcnMoVmVjdG9y
PFVubGlua2VkSGFuZGxlckluZm8+IHVubGlua2VkRXhjZXB0aW9uSGFuZGxlcnMsIFZlY3RvcjxD
b2RlTG9jYXRpb25MYWJlbDxFeGNlcHRpb25IYW5kbGVyUHRyVGFnPj4gZXhjZXB0aW9uSGFuZGxl
ckxvY2F0aW9ucykKIHsKLSAgICBzaXplX3QgY291bnQgPSBtX3VubGlua2VkRXhjZXB0aW9uSGFu
ZGxlcnMuc2l6ZSgpOwotICAgIG1fZXhjZXB0aW9uSGFuZGxlcnMucmVzaXplVG9GaXQoY291bnQp
OworICAgIHNpemVfdCBjb3VudCA9IHVubGlua2VkRXhjZXB0aW9uSGFuZGxlcnMuc2l6ZSgpOwor
ICAgIG1fZXhjZXB0aW9uSGFuZGxlcnMgPSBGaXhlZFZlY3RvcjxIYW5kbGVySW5mbz4oY291bnQp
OwogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgY291bnQ7IGkrKykgewogICAgICAgICBIYW5k
bGVySW5mbyYgaGFuZGxlciA9IG1fZXhjZXB0aW9uSGFuZGxlcnNbaV07Ci0gICAgICAgIGNvbnN0
IFVubGlua2VkSGFuZGxlckluZm8mIHVubGlua2VkSGFuZGxlciA9IG1fdW5saW5rZWRFeGNlcHRp
b25IYW5kbGVyc1tpXTsKLSAgICAgICAgQ29kZUxvY2F0aW9uTGFiZWw8RXhjZXB0aW9uSGFuZGxl
clB0clRhZz4gbG9jYXRpb24gPSBtX2V4Y2VwdGlvbkhhbmRsZXJMb2NhdGlvbnNbaV07CisgICAg
ICAgIGNvbnN0IFVubGlua2VkSGFuZGxlckluZm8mIHVubGlua2VkSGFuZGxlciA9IHVubGlua2Vk
RXhjZXB0aW9uSGFuZGxlcnNbaV07CisgICAgICAgIENvZGVMb2NhdGlvbkxhYmVsPEV4Y2VwdGlv
bkhhbmRsZXJQdHJUYWc+IGxvY2F0aW9uID0gZXhjZXB0aW9uSGFuZGxlckxvY2F0aW9uc1tpXTsK
ICAgICAgICAgaGFuZGxlci5pbml0aWFsaXplKHVubGlua2VkSGFuZGxlciwgbG9jYXRpb24pOwog
ICAgIH0KLSAgICBtX3VubGlua2VkRXhjZXB0aW9uSGFuZGxlcnMuY2xlYXIoKTsKLSAgICBtX2V4
Y2VwdGlvbkhhbmRsZXJMb2NhdGlvbnMuY2xlYXIoKTsKIH0KIAotY29uc3QgVmVjdG9yPE9TUkVu
dHJ5VmFsdWU+JiBPcHRpbWl6aW5nSklUQ2FsbGVlOjpzdGFja21hcChDYWxsU2l0ZUluZGV4IGNh
bGxTaXRlSW5kZXgpIGNvbnN0Citjb25zdCBTdGFja01hcCYgT3B0aW1pemluZ0pJVENhbGxlZTo6
c3RhY2ttYXAoQ2FsbFNpdGVJbmRleCBjYWxsU2l0ZUluZGV4KSBjb25zdAogewogICAgIGF1dG8g
aXRlciA9IG1fc3RhY2ttYXBzLmZpbmQoY2FsbFNpdGVJbmRleCk7CiAgICAgaWYgKGl0ZXIgPT0g
bV9zdGFja21hcHMuZW5kKCkpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93
YXNtL1dhc21DYWxsZWUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21DYWxsZWUu
aAppbmRleCBhYTJiNTQxOGMyY2Q1NDA5YmE1ZGI3ZDUyYWUwMDI1YzJmMmVkZWQyLi4zNDdmYzgx
NWUyNjJhYzg3NWM1Nzk3NTY4M2E1Y2VhOGQzZTg1MjQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvd2FzbS9XYXNtQ2FsbGVlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3dhc20vV2FzbUNhbGxlZS5oCkBAIC0zNiw2ICszNiw3IEBACiAjaW5jbHVkZSAiV2FzbUluZGV4
T3JOYW1lLmgiCiAjaW5jbHVkZSAiV2FzbUxMSW50VGllclVwQ291bnRlci5oIgogI2luY2x1ZGUg
Ildhc21UaWVyVXBDb3VudC5oIgorI2luY2x1ZGUgPHd0Zi9GaXhlZFZlY3Rvci5oPgogI2luY2x1
ZGUgPHd0Zi9UaHJlYWRTYWZlUmVmQ291bnRlZC5oPgogCiBuYW1lc3BhY2UgSlNDIHsKQEAgLTYz
LDcgKzY0LDcgQEAgY2xhc3MgQ2FsbGVlIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPENh
bGxlZT4gewogCiAgICAgY29uc3QgSGFuZGxlckluZm8qIGhhbmRsZXJGb3JJbmRleChJbnN0YW5j
ZSYsIHVuc2lnbmVkLCBjb25zdCBUYWcqKTsKIAotICAgIGJvb2wgaGFzRXhjZXB0aW9uSGFuZGxl
cnMoKSBjb25zdCB7IHJldHVybiAhIW1fZXhjZXB0aW9uSGFuZGxlcnMuc2l6ZSgpOyB9CisgICAg
Ym9vbCBoYXNFeGNlcHRpb25IYW5kbGVycygpIGNvbnN0IHsgcmV0dXJuICFtX2V4Y2VwdGlvbkhh
bmRsZXJzLmlzRW1wdHkoKTsgfQogCiAjaWYgRU5BQkxFKFdFQkFTU0VNQkxZX0IzSklUKQogICAg
IHZpcnR1YWwgdm9pZCBzZXRPU1JFbnRyeUNhbGxlZShSZWY8T01HRm9yT1NSRW50cnlDYWxsZWU+
JiYsIE1lbW9yeU1vZGUpCkBAIC04NSwxNCArODYsMTQgQEAgY2xhc3MgQ2FsbGVlIDogcHVibGlj
IFRocmVhZFNhZmVSZWZDb3VudGVkPENhbGxlZT4gewogICAgIEluZGV4T3JOYW1lIG1faW5kZXhP
ck5hbWU7CiAKIHByb3RlY3RlZDoKLSAgICBWZWN0b3I8SGFuZGxlckluZm8+IG1fZXhjZXB0aW9u
SGFuZGxlcnM7CisgICAgRml4ZWRWZWN0b3I8SGFuZGxlckluZm8+IG1fZXhjZXB0aW9uSGFuZGxl
cnM7CiB9OwogCiBjbGFzcyBKSVRDYWxsZWUgOiBwdWJsaWMgQ2FsbGVlIHsKIHB1YmxpYzoKICAg
ICBNYWNyb0Fzc2VtYmxlckNvZGVQdHI8V2FzbUVudHJ5UHRyVGFnPiBlbnRyeXBvaW50KCkgY29u
c3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9lbnRyeXBvaW50LmNvbXBpbGF0aW9uLT5jb2RlKCkucmV0
YWdnZWQ8V2FzbUVudHJ5UHRyVGFnPigpOyB9CiAgICAgUmVnaXN0ZXJBdE9mZnNldExpc3QqIGNh
bGxlZVNhdmVSZWdpc3RlcnMoKSBvdmVycmlkZSB7IHJldHVybiAmbV9lbnRyeXBvaW50LmNhbGxl
ZVNhdmVSZWdpc3RlcnM7IH0KLSAgICBWZWN0b3I8VW5saW5rZWRXYXNtVG9XYXNtQ2FsbD4mIHdh
c21Ub1dhc21DYWxsc2l0ZXMoKSB7IHJldHVybiBtX3dhc21Ub1dhc21DYWxsc2l0ZXM7IH0KKyAg
ICBGaXhlZFZlY3RvcjxVbmxpbmtlZFdhc21Ub1dhc21DYWxsPiYgd2FzbVRvV2FzbUNhbGxzaXRl
cygpIHsgcmV0dXJuIG1fd2FzbVRvV2FzbUNhbGxzaXRlczsgfQogCiBwcm90ZWN0ZWQ6CiAgICAg
SlNfRVhQT1JUX1BSSVZBVEUgSklUQ2FsbGVlKFdhc206OkNvbXBpbGF0aW9uTW9kZSwgV2FzbTo6
RW50cnlwb2ludCYmKTsKQEAgLTEwNiw3ICsxMDcsNyBAQCBjbGFzcyBKSVRDYWxsZWUgOiBwdWJs
aWMgQ2FsbGVlIHsKICAgICB9CiAKIHByaXZhdGU6Ci0gICAgVmVjdG9yPFVubGlua2VkV2FzbVRv
V2FzbUNhbGw+IG1fd2FzbVRvV2FzbUNhbGxzaXRlczsKKyAgICBGaXhlZFZlY3RvcjxVbmxpbmtl
ZFdhc21Ub1dhc21DYWxsPiBtX3dhc21Ub1dhc21DYWxsc2l0ZXM7CiAgICAgV2FzbTo6RW50cnlw
b2ludCBtX2VudHJ5cG9pbnQ7CiB9OwogCkBAIC0xMjgsMzYgKzEyOSwzMiBAQCBjbGFzcyBFbWJl
ZGRlckVudHJ5cG9pbnRDYWxsZWUgZmluYWwgOiBwdWJsaWMgSklUQ2FsbGVlIHsKICNpZiBFTkFC
TEUoV0VCQVNTRU1CTFlfQjNKSVQpCiBjbGFzcyBPcHRpbWl6aW5nSklUQ2FsbGVlIDogcHVibGlj
IEpJVENhbGxlZSB7CiBwdWJsaWM6Ci0gICAgY29uc3QgVmVjdG9yPE9TUkVudHJ5VmFsdWU+JiBz
dGFja21hcChDYWxsU2l0ZUluZGV4KSBjb25zdDsKKyAgICBjb25zdCBTdGFja01hcCYgc3RhY2tt
YXAoQ2FsbFNpdGVJbmRleCkgY29uc3Q7CiAKIHByb3RlY3RlZDoKLSAgICBPcHRpbWl6aW5nSklU
Q2FsbGVlKFdhc206OkNvbXBpbGF0aW9uTW9kZSBtb2RlLCBXYXNtOjpFbnRyeXBvaW50JiYgZW50
cnlwb2ludCwgc2l6ZV90IGluZGV4LCBzdGQ6OnBhaXI8Y29uc3QgTmFtZSosIFJlZlB0cjxOYW1l
U2VjdGlvbj4+JiYgbmFtZSwgVmVjdG9yPFVubGlua2VkV2FzbVRvV2FzbUNhbGw+JiYgdW5saW5r
ZWRDYWxscywgSGFzaE1hcDxDYWxsU2l0ZUluZGV4LCBWZWN0b3I8T1NSRW50cnlWYWx1ZT4+JiYg
c3RhY2ttYXBzLCBWZWN0b3I8VW5saW5rZWRIYW5kbGVySW5mbz4mJiBleGNlcHRpb25IYW5kbGVy
cywgVmVjdG9yPENvZGVMb2NhdGlvbkxhYmVsPEV4Y2VwdGlvbkhhbmRsZXJQdHJUYWc+PiYmIGV4
Y2VwdGlvbkhhbmRsZXJMb2NhdGlvbnMpCisgICAgT3B0aW1pemluZ0pJVENhbGxlZShXYXNtOjpD
b21waWxhdGlvbk1vZGUgbW9kZSwgV2FzbTo6RW50cnlwb2ludCYmIGVudHJ5cG9pbnQsIHNpemVf
dCBpbmRleCwgc3RkOjpwYWlyPGNvbnN0IE5hbWUqLCBSZWZQdHI8TmFtZVNlY3Rpb24+PiYmIG5h
bWUsIFZlY3RvcjxVbmxpbmtlZFdhc21Ub1dhc21DYWxsPiYmIHVubGlua2VkQ2FsbHMsIFN0YWNr
TWFwcyYmIHN0YWNrbWFwcywgVmVjdG9yPFVubGlua2VkSGFuZGxlckluZm8+JiYgdW5saW5rZWRF
eGNlcHRpb25IYW5kbGVycywgVmVjdG9yPENvZGVMb2NhdGlvbkxhYmVsPEV4Y2VwdGlvbkhhbmRs
ZXJQdHJUYWc+PiYmIGV4Y2VwdGlvbkhhbmRsZXJMb2NhdGlvbnMpCiAgICAgICAgIDogSklUQ2Fs
bGVlKG1vZGUsIFdURk1vdmUoZW50cnlwb2ludCksIGluZGV4LCBXVEZNb3ZlKG5hbWUpLCBXVEZN
b3ZlKHVubGlua2VkQ2FsbHMpKQogICAgICAgICAsIG1fc3RhY2ttYXBzKFdURk1vdmUoc3RhY2tt
YXBzKSkKLSAgICAgICAgLCBtX3VubGlua2VkRXhjZXB0aW9uSGFuZGxlcnMoV1RGTW92ZShleGNl
cHRpb25IYW5kbGVycykpCi0gICAgICAgICwgbV9leGNlcHRpb25IYW5kbGVyTG9jYXRpb25zKFdU
Rk1vdmUoZXhjZXB0aW9uSGFuZGxlckxvY2F0aW9ucykpCiAgICAgewotICAgICAgICBSRUxFQVNF
X0FTU0VSVChtX3VubGlua2VkRXhjZXB0aW9uSGFuZGxlcnMuc2l6ZSgpID09IG1fZXhjZXB0aW9u
SGFuZGxlckxvY2F0aW9ucy5zaXplKCkpOwotICAgICAgICBsaW5rRXhjZXB0aW9uSGFuZGxlcnMo
KTsKKyAgICAgICAgUkVMRUFTRV9BU1NFUlQodW5saW5rZWRFeGNlcHRpb25IYW5kbGVycy5zaXpl
KCkgPT0gZXhjZXB0aW9uSGFuZGxlckxvY2F0aW9ucy5zaXplKCkpOworICAgICAgICBsaW5rRXhj
ZXB0aW9uSGFuZGxlcnMoV1RGTW92ZSh1bmxpbmtlZEV4Y2VwdGlvbkhhbmRsZXJzKSwgV1RGTW92
ZShleGNlcHRpb25IYW5kbGVyTG9jYXRpb25zKSk7CiAgICAgfQogCiBwcml2YXRlOgotICAgIHZv
aWQgbGlua0V4Y2VwdGlvbkhhbmRsZXJzKCk7CisgICAgdm9pZCBsaW5rRXhjZXB0aW9uSGFuZGxl
cnMoVmVjdG9yPFVubGlua2VkSGFuZGxlckluZm8+LCBWZWN0b3I8Q29kZUxvY2F0aW9uTGFiZWw8
RXhjZXB0aW9uSGFuZGxlclB0clRhZz4+KTsKIAotICAgIEhhc2hNYXA8Q2FsbFNpdGVJbmRleCwg
VmVjdG9yPE9TUkVudHJ5VmFsdWU+PiBtX3N0YWNrbWFwczsKLSAgICBWZWN0b3I8VW5saW5rZWRI
YW5kbGVySW5mbz4gbV91bmxpbmtlZEV4Y2VwdGlvbkhhbmRsZXJzOwotICAgIFZlY3RvcjxDb2Rl
TG9jYXRpb25MYWJlbDxFeGNlcHRpb25IYW5kbGVyUHRyVGFnPj4gbV9leGNlcHRpb25IYW5kbGVy
TG9jYXRpb25zOworICAgIFN0YWNrTWFwcyBtX3N0YWNrbWFwczsKIH07CiAKIGNsYXNzIE9NR0Nh
bGxlZSBmaW5hbCA6IHB1YmxpYyBPcHRpbWl6aW5nSklUQ2FsbGVlIHsKIHB1YmxpYzoKLSAgICBz
dGF0aWMgUmVmPE9NR0NhbGxlZT4gY3JlYXRlKFdhc206OkVudHJ5cG9pbnQmJiBlbnRyeXBvaW50
LCBzaXplX3QgaW5kZXgsIHN0ZDo6cGFpcjxjb25zdCBOYW1lKiwgUmVmUHRyPE5hbWVTZWN0aW9u
Pj4mJiBuYW1lLCBWZWN0b3I8VW5saW5rZWRXYXNtVG9XYXNtQ2FsbD4mJiB1bmxpbmtlZENhbGxz
LCBIYXNoTWFwPENhbGxTaXRlSW5kZXgsIFZlY3RvcjxPU1JFbnRyeVZhbHVlPj4mJiBzdGFja21h
cHMsIFZlY3RvcjxVbmxpbmtlZEhhbmRsZXJJbmZvPiYmIGV4Y2VwdGlvbkhhbmRsZXJzLCBWZWN0
b3I8Q29kZUxvY2F0aW9uTGFiZWw8RXhjZXB0aW9uSGFuZGxlclB0clRhZz4+JiYgZXhjZXB0aW9u
SGFuZGxlckxvY2F0aW9ucykKKyAgICBzdGF0aWMgUmVmPE9NR0NhbGxlZT4gY3JlYXRlKFdhc206
OkVudHJ5cG9pbnQmJiBlbnRyeXBvaW50LCBzaXplX3QgaW5kZXgsIHN0ZDo6cGFpcjxjb25zdCBO
YW1lKiwgUmVmUHRyPE5hbWVTZWN0aW9uPj4mJiBuYW1lLCBWZWN0b3I8VW5saW5rZWRXYXNtVG9X
YXNtQ2FsbD4mJiB1bmxpbmtlZENhbGxzLCBTdGFja01hcHMmJiBzdGFja21hcHMsIFZlY3RvcjxV
bmxpbmtlZEhhbmRsZXJJbmZvPiYmIGV4Y2VwdGlvbkhhbmRsZXJzLCBWZWN0b3I8Q29kZUxvY2F0
aW9uTGFiZWw8RXhjZXB0aW9uSGFuZGxlclB0clRhZz4+JiYgZXhjZXB0aW9uSGFuZGxlckxvY2F0
aW9ucykKICAgICB7CiAgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IE9NR0NhbGxlZShXVEZN
b3ZlKGVudHJ5cG9pbnQpLCBpbmRleCwgV1RGTW92ZShuYW1lKSwgV1RGTW92ZSh1bmxpbmtlZENh
bGxzKSwgV1RGTW92ZShzdGFja21hcHMpLCBXVEZNb3ZlKGV4Y2VwdGlvbkhhbmRsZXJzKSwgV1RG
TW92ZShleGNlcHRpb25IYW5kbGVyTG9jYXRpb25zKSkpOwogICAgIH0KIAogcHJpdmF0ZToKLSAg
ICBPTUdDYWxsZWUoV2FzbTo6RW50cnlwb2ludCYmIGVudHJ5cG9pbnQsIHNpemVfdCBpbmRleCwg
c3RkOjpwYWlyPGNvbnN0IE5hbWUqLCBSZWZQdHI8TmFtZVNlY3Rpb24+PiYmIG5hbWUsIFZlY3Rv
cjxVbmxpbmtlZFdhc21Ub1dhc21DYWxsPiYmIHVubGlua2VkQ2FsbHMsIEhhc2hNYXA8Q2FsbFNp
dGVJbmRleCwgVmVjdG9yPE9TUkVudHJ5VmFsdWU+PiYmIHN0YWNrbWFwcywgVmVjdG9yPFVubGlu
a2VkSGFuZGxlckluZm8+JiYgZXhjZXB0aW9uSGFuZGxlcnMsIFZlY3RvcjxDb2RlTG9jYXRpb25M
YWJlbDxFeGNlcHRpb25IYW5kbGVyUHRyVGFnPj4mJiBleGNlcHRpb25IYW5kbGVyTG9jYXRpb25z
KQorICAgIE9NR0NhbGxlZShXYXNtOjpFbnRyeXBvaW50JiYgZW50cnlwb2ludCwgc2l6ZV90IGlu
ZGV4LCBzdGQ6OnBhaXI8Y29uc3QgTmFtZSosIFJlZlB0cjxOYW1lU2VjdGlvbj4+JiYgbmFtZSwg
VmVjdG9yPFVubGlua2VkV2FzbVRvV2FzbUNhbGw+JiYgdW5saW5rZWRDYWxscywgU3RhY2tNYXBz
JiYgc3RhY2ttYXBzLCBWZWN0b3I8VW5saW5rZWRIYW5kbGVySW5mbz4mJiBleGNlcHRpb25IYW5k
bGVycywgVmVjdG9yPENvZGVMb2NhdGlvbkxhYmVsPEV4Y2VwdGlvbkhhbmRsZXJQdHJUYWc+PiYm
IGV4Y2VwdGlvbkhhbmRsZXJMb2NhdGlvbnMpCiAgICAgICAgIDogT3B0aW1pemluZ0pJVENhbGxl
ZShXYXNtOjpDb21waWxhdGlvbk1vZGU6Ok9NR01vZGUsIFdURk1vdmUoZW50cnlwb2ludCksIGlu
ZGV4LCBXVEZNb3ZlKG5hbWUpLCBXVEZNb3ZlKHVubGlua2VkQ2FsbHMpLCBXVEZNb3ZlKHN0YWNr
bWFwcyksIFdURk1vdmUoZXhjZXB0aW9uSGFuZGxlcnMpLCBXVEZNb3ZlKGV4Y2VwdGlvbkhhbmRs
ZXJMb2NhdGlvbnMpKQogICAgIHsKICAgICB9CkBAIC0xNjUsNyArMTYyLDcgQEAgY2xhc3MgT01H
Q2FsbGVlIGZpbmFsIDogcHVibGljIE9wdGltaXppbmdKSVRDYWxsZWUgewogCiBjbGFzcyBPTUdG
b3JPU1JFbnRyeUNhbGxlZSBmaW5hbCA6IHB1YmxpYyBPcHRpbWl6aW5nSklUQ2FsbGVlIHsKIHB1
YmxpYzoKLSAgICBzdGF0aWMgUmVmPE9NR0Zvck9TUkVudHJ5Q2FsbGVlPiBjcmVhdGUoV2FzbTo6
RW50cnlwb2ludCYmIGVudHJ5cG9pbnQsIHNpemVfdCBpbmRleCwgc3RkOjpwYWlyPGNvbnN0IE5h
bWUqLCBSZWZQdHI8TmFtZVNlY3Rpb24+PiYmIG5hbWUsIHVuc2lnbmVkIG9zckVudHJ5U2NyYXRj
aEJ1ZmZlclNpemUsIHVpbnQzMl90IGxvb3BJbmRleCwgVmVjdG9yPFVubGlua2VkV2FzbVRvV2Fz
bUNhbGw+JiYgdW5saW5rZWRDYWxscywgSGFzaE1hcDxDYWxsU2l0ZUluZGV4LCBWZWN0b3I8T1NS
RW50cnlWYWx1ZT4+JiYgc3RhY2ttYXBzLCBWZWN0b3I8VW5saW5rZWRIYW5kbGVySW5mbz4mJiBl
eGNlcHRpb25IYW5kbGVycywgVmVjdG9yPENvZGVMb2NhdGlvbkxhYmVsPEV4Y2VwdGlvbkhhbmRs
ZXJQdHJUYWc+PiYmIGV4Y2VwdGlvbkhhbmRsZXJMb2NhdGlvbnMpCisgICAgc3RhdGljIFJlZjxP
TUdGb3JPU1JFbnRyeUNhbGxlZT4gY3JlYXRlKFdhc206OkVudHJ5cG9pbnQmJiBlbnRyeXBvaW50
LCBzaXplX3QgaW5kZXgsIHN0ZDo6cGFpcjxjb25zdCBOYW1lKiwgUmVmUHRyPE5hbWVTZWN0aW9u
Pj4mJiBuYW1lLCB1bnNpZ25lZCBvc3JFbnRyeVNjcmF0Y2hCdWZmZXJTaXplLCB1aW50MzJfdCBs
b29wSW5kZXgsIFZlY3RvcjxVbmxpbmtlZFdhc21Ub1dhc21DYWxsPiYmIHVubGlua2VkQ2FsbHMs
IFN0YWNrTWFwcyYmIHN0YWNrbWFwcywgVmVjdG9yPFVubGlua2VkSGFuZGxlckluZm8+JiYgZXhj
ZXB0aW9uSGFuZGxlcnMsIFZlY3RvcjxDb2RlTG9jYXRpb25MYWJlbDxFeGNlcHRpb25IYW5kbGVy
UHRyVGFnPj4mJiBleGNlcHRpb25IYW5kbGVyTG9jYXRpb25zKQogICAgIHsKICAgICAgICAgcmV0
dXJuIGFkb3B0UmVmKCpuZXcgT01HRm9yT1NSRW50cnlDYWxsZWUoV1RGTW92ZShlbnRyeXBvaW50
KSwgaW5kZXgsIFdURk1vdmUobmFtZSksIG9zckVudHJ5U2NyYXRjaEJ1ZmZlclNpemUsIGxvb3BJ
bmRleCwgV1RGTW92ZSh1bmxpbmtlZENhbGxzKSwgV1RGTW92ZShzdGFja21hcHMpLCBXVEZNb3Zl
KGV4Y2VwdGlvbkhhbmRsZXJzKSwgV1RGTW92ZShleGNlcHRpb25IYW5kbGVyTG9jYXRpb25zKSkp
OwogICAgIH0KQEAgLTE3NCw3ICsxNzEsNyBAQCBjbGFzcyBPTUdGb3JPU1JFbnRyeUNhbGxlZSBm
aW5hbCA6IHB1YmxpYyBPcHRpbWl6aW5nSklUQ2FsbGVlIHsKICAgICB1aW50MzJfdCBsb29wSW5k
ZXgoKSBjb25zdCB7IHJldHVybiBtX2xvb3BJbmRleDsgfQogCiBwcml2YXRlOgotICAgIE9NR0Zv
ck9TUkVudHJ5Q2FsbGVlKFdhc206OkVudHJ5cG9pbnQmJiBlbnRyeXBvaW50LCBzaXplX3QgaW5k
ZXgsIHN0ZDo6cGFpcjxjb25zdCBOYW1lKiwgUmVmUHRyPE5hbWVTZWN0aW9uPj4mJiBuYW1lLCB1
bnNpZ25lZCBvc3JFbnRyeVNjcmF0Y2hCdWZmZXJTaXplLCB1aW50MzJfdCBsb29wSW5kZXgsIFZl
Y3RvcjxVbmxpbmtlZFdhc21Ub1dhc21DYWxsPiYmIHVubGlua2VkQ2FsbHMsIEhhc2hNYXA8Q2Fs
bFNpdGVJbmRleCwgVmVjdG9yPE9TUkVudHJ5VmFsdWU+PiYmIHN0YWNrbWFwcywgVmVjdG9yPFVu
bGlua2VkSGFuZGxlckluZm8+JiYgZXhjZXB0aW9uSGFuZGxlcnMsIFZlY3RvcjxDb2RlTG9jYXRp
b25MYWJlbDxFeGNlcHRpb25IYW5kbGVyUHRyVGFnPj4mJiBleGNlcHRpb25IYW5kbGVyTG9jYXRp
b25zKQorICAgIE9NR0Zvck9TUkVudHJ5Q2FsbGVlKFdhc206OkVudHJ5cG9pbnQmJiBlbnRyeXBv
aW50LCBzaXplX3QgaW5kZXgsIHN0ZDo6cGFpcjxjb25zdCBOYW1lKiwgUmVmUHRyPE5hbWVTZWN0
aW9uPj4mJiBuYW1lLCB1bnNpZ25lZCBvc3JFbnRyeVNjcmF0Y2hCdWZmZXJTaXplLCB1aW50MzJf
dCBsb29wSW5kZXgsIFZlY3RvcjxVbmxpbmtlZFdhc21Ub1dhc21DYWxsPiYmIHVubGlua2VkQ2Fs
bHMsIFN0YWNrTWFwcyYmIHN0YWNrbWFwcywgVmVjdG9yPFVubGlua2VkSGFuZGxlckluZm8+JiYg
ZXhjZXB0aW9uSGFuZGxlcnMsIFZlY3RvcjxDb2RlTG9jYXRpb25MYWJlbDxFeGNlcHRpb25IYW5k
bGVyUHRyVGFnPj4mJiBleGNlcHRpb25IYW5kbGVyTG9jYXRpb25zKQogICAgICAgICA6IE9wdGlt
aXppbmdKSVRDYWxsZWUoV2FzbTo6Q29tcGlsYXRpb25Nb2RlOjpPTUdGb3JPU1JFbnRyeU1vZGUs
IFdURk1vdmUoZW50cnlwb2ludCksIGluZGV4LCBXVEZNb3ZlKG5hbWUpLCBXVEZNb3ZlKHVubGlu
a2VkQ2FsbHMpLCBXVEZNb3ZlKHN0YWNrbWFwcyksIFdURk1vdmUoZXhjZXB0aW9uSGFuZGxlcnMp
LCBXVEZNb3ZlKGV4Y2VwdGlvbkhhbmRsZXJMb2NhdGlvbnMpKQogICAgICAgICAsIG1fb3NyRW50
cnlTY3JhdGNoQnVmZmVyU2l6ZShvc3JFbnRyeVNjcmF0Y2hCdWZmZXJTaXplKQogICAgICAgICAs
IG1fbG9vcEluZGV4KGxvb3BJbmRleCkKQEAgLTE4Nyw3ICsxODQsNyBAQCBjbGFzcyBPTUdGb3JP
U1JFbnRyeUNhbGxlZSBmaW5hbCA6IHB1YmxpYyBPcHRpbWl6aW5nSklUQ2FsbGVlIHsKIAogY2xh
c3MgQkJRQ2FsbGVlIGZpbmFsIDogcHVibGljIE9wdGltaXppbmdKSVRDYWxsZWUgewogcHVibGlj
OgotICAgIHN0YXRpYyBSZWY8QkJRQ2FsbGVlPiBjcmVhdGUoV2FzbTo6RW50cnlwb2ludCYmIGVu
dHJ5cG9pbnQsIHNpemVfdCBpbmRleCwgc3RkOjpwYWlyPGNvbnN0IE5hbWUqLCBSZWZQdHI8TmFt
ZVNlY3Rpb24+PiYmIG5hbWUsIHN0ZDo6dW5pcXVlX3B0cjxUaWVyVXBDb3VudD4mJiB0aWVyVXBD
b3VudCwgVmVjdG9yPFVubGlua2VkV2FzbVRvV2FzbUNhbGw+JiYgdW5saW5rZWRDYWxscywgSGFz
aE1hcDxDYWxsU2l0ZUluZGV4LCBWZWN0b3I8T1NSRW50cnlWYWx1ZT4+JiYgc3RhY2ttYXBzLCBW
ZWN0b3I8VW5saW5rZWRIYW5kbGVySW5mbz4mJiBleGNlcHRpb25IYW5kbGVycywgVmVjdG9yPENv
ZGVMb2NhdGlvbkxhYmVsPEV4Y2VwdGlvbkhhbmRsZXJQdHJUYWc+PiYmIGV4Y2VwdGlvbkhhbmRs
ZXJMb2NhdGlvbnMpCisgICAgc3RhdGljIFJlZjxCQlFDYWxsZWU+IGNyZWF0ZShXYXNtOjpFbnRy
eXBvaW50JiYgZW50cnlwb2ludCwgc2l6ZV90IGluZGV4LCBzdGQ6OnBhaXI8Y29uc3QgTmFtZSos
IFJlZlB0cjxOYW1lU2VjdGlvbj4+JiYgbmFtZSwgc3RkOjp1bmlxdWVfcHRyPFRpZXJVcENvdW50
PiYmIHRpZXJVcENvdW50LCBWZWN0b3I8VW5saW5rZWRXYXNtVG9XYXNtQ2FsbD4mJiB1bmxpbmtl
ZENhbGxzLCBTdGFja01hcHMmJiBzdGFja21hcHMsIFZlY3RvcjxVbmxpbmtlZEhhbmRsZXJJbmZv
PiYmIGV4Y2VwdGlvbkhhbmRsZXJzLCBWZWN0b3I8Q29kZUxvY2F0aW9uTGFiZWw8RXhjZXB0aW9u
SGFuZGxlclB0clRhZz4+JiYgZXhjZXB0aW9uSGFuZGxlckxvY2F0aW9ucykKICAgICB7CiAgICAg
ICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEJCUUNhbGxlZShXVEZNb3ZlKGVudHJ5cG9pbnQpLCBp
bmRleCwgV1RGTW92ZShuYW1lKSwgV1RGTW92ZSh0aWVyVXBDb3VudCksIFdURk1vdmUodW5saW5r
ZWRDYWxscyksIFdURk1vdmUoc3RhY2ttYXBzKSwgV1RGTW92ZShleGNlcHRpb25IYW5kbGVycyks
IFdURk1vdmUoZXhjZXB0aW9uSGFuZGxlckxvY2F0aW9ucykpKTsKICAgICB9CkBAIC0yMTAsNyAr
MjA3LDcgQEAgY2xhc3MgQkJRQ2FsbGVlIGZpbmFsIDogcHVibGljIE9wdGltaXppbmdKSVRDYWxs
ZWUgewogICAgIFRpZXJVcENvdW50KiB0aWVyVXBDb3VudCgpIHsgcmV0dXJuIG1fdGllclVwQ291
bnQuZ2V0KCk7IH0KIAogcHJpdmF0ZToKLSAgICBCQlFDYWxsZWUoV2FzbTo6RW50cnlwb2ludCYm
IGVudHJ5cG9pbnQsIHNpemVfdCBpbmRleCwgc3RkOjpwYWlyPGNvbnN0IE5hbWUqLCBSZWZQdHI8
TmFtZVNlY3Rpb24+PiYmIG5hbWUsIHN0ZDo6dW5pcXVlX3B0cjxUaWVyVXBDb3VudD4mJiB0aWVy
VXBDb3VudCwgVmVjdG9yPFVubGlua2VkV2FzbVRvV2FzbUNhbGw+JiYgdW5saW5rZWRDYWxscywg
SGFzaE1hcDxDYWxsU2l0ZUluZGV4LCBWZWN0b3I8T1NSRW50cnlWYWx1ZT4+JiYgc3RhY2ttYXBz
LCBWZWN0b3I8VW5saW5rZWRIYW5kbGVySW5mbz4mJiBleGNlcHRpb25IYW5kbGVycywgVmVjdG9y
PENvZGVMb2NhdGlvbkxhYmVsPEV4Y2VwdGlvbkhhbmRsZXJQdHJUYWc+PiYmIGV4Y2VwdGlvbkhh
bmRsZXJMb2NhdGlvbnMpCisgICAgQkJRQ2FsbGVlKFdhc206OkVudHJ5cG9pbnQmJiBlbnRyeXBv
aW50LCBzaXplX3QgaW5kZXgsIHN0ZDo6cGFpcjxjb25zdCBOYW1lKiwgUmVmUHRyPE5hbWVTZWN0
aW9uPj4mJiBuYW1lLCBzdGQ6OnVuaXF1ZV9wdHI8VGllclVwQ291bnQ+JiYgdGllclVwQ291bnQs
IFZlY3RvcjxVbmxpbmtlZFdhc21Ub1dhc21DYWxsPiYmIHVubGlua2VkQ2FsbHMsIFN0YWNrTWFw
cyYmIHN0YWNrbWFwcywgVmVjdG9yPFVubGlua2VkSGFuZGxlckluZm8+JiYgZXhjZXB0aW9uSGFu
ZGxlcnMsIFZlY3RvcjxDb2RlTG9jYXRpb25MYWJlbDxFeGNlcHRpb25IYW5kbGVyUHRyVGFnPj4m
JiBleGNlcHRpb25IYW5kbGVyTG9jYXRpb25zKQogICAgICAgICA6IE9wdGltaXppbmdKSVRDYWxs
ZWUoV2FzbTo6Q29tcGlsYXRpb25Nb2RlOjpCQlFNb2RlLCBXVEZNb3ZlKGVudHJ5cG9pbnQpLCBp
bmRleCwgV1RGTW92ZShuYW1lKSwgV1RGTW92ZSh1bmxpbmtlZENhbGxzKSwgV1RGTW92ZShzdGFj
a21hcHMpLCBXVEZNb3ZlKGV4Y2VwdGlvbkhhbmRsZXJzKSwgV1RGTW92ZShleGNlcHRpb25IYW5k
bGVyTG9jYXRpb25zKSkKICAgICAgICAgLCBtX3RpZXJVcENvdW50KFdURk1vdmUodGllclVwQ291
bnQpKQogICAgIHsKQEAgLTI5MCw3ICsyODcsNyBAQCBjbGFzcyBMTEludENhbGxlZXMgOiBwdWJs
aWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8TExJbnRDYWxsZWVzPiB7CiAgICAgewogICAgIH0KIAot
ICAgIFZlY3RvcjxSZWY8TExJbnRDYWxsZWU+PiBtX2xsaW50Q2FsbGVlczsKKyAgICBGaXhlZFZl
Y3RvcjxSZWY8TExJbnRDYWxsZWU+PiBtX2xsaW50Q2FsbGVlczsKIH07CiAKIH0gfSAvLyBuYW1l
c3BhY2UgSlNDOjpXYXNtCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9X
YXNtQ29kZUJsb2NrLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21Db2RlQmxv
Y2suY3BwCmluZGV4IGFhODg0ZThjMWRjYWVlMjA3Y2ZkOTg5NTMwOGZhNTVlMzY2ZDgzOTIuLmUx
MGNmNGRmN2Y2Y2NlMjk2NTkyOTViNjNiMGMzZWEzNmFmMDY5NGYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21Db2RlQmxvY2suY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS93YXNtL1dhc21Db2RlQmxvY2suY3BwCkBAIC00OCwxNiArNDgsMTYgQEAgUmVm
PENvZGVCbG9jaz4gQ29kZUJsb2NrOjpjcmVhdGVGcm9tRXhpc3RpbmcoTWVtb3J5TW9kZSBtb2Rl
LCBjb25zdCBDb2RlQmxvY2smIG8KIENvZGVCbG9jazo6Q29kZUJsb2NrKE1lbW9yeU1vZGUgbW9k
ZSwgY29uc3QgQ29kZUJsb2NrJiBvdGhlcikKICAgICA6IG1fY2FsbGVlQ291bnQob3RoZXIubV9j
YWxsZWVDb3VudCkKICAgICAsIG1fbW9kZShtb2RlKQorI2lmIEVOQUJMRShXRUJBU1NFTUJMWV9C
M0pJVCkKKyAgICAsIG1fb21nQ2FsbGVlcyhtX2NhbGxlZUNvdW50KQorICAgICwgbV9iYnFDYWxs
ZWVzKG1fY2FsbGVlQ291bnQpCisjZW5kaWYKICAgICAsIG1fbGxpbnRDYWxsZWVzKG90aGVyLm1f
bGxpbnRDYWxsZWVzKQogICAgICwgbV9lbWJlZGRlckNhbGxlZXMob3RoZXIubV9lbWJlZGRlckNh
bGxlZXMpCiAgICAgLCBtX3dhc21JbmRpcmVjdENhbGxFbnRyeVBvaW50cyhvdGhlci5tX3dhc21J
bmRpcmVjdENhbGxFbnRyeVBvaW50cykKICAgICAsIG1fd2FzbVRvV2FzbUNhbGxzaXRlcyhvdGhl
ci5tX3dhc21Ub1dhc21DYWxsc2l0ZXMpCiAgICAgLCBtX3dhc21Ub1dhc21FeGl0U3R1YnMob3Ro
ZXIubV93YXNtVG9XYXNtRXhpdFN0dWJzKQogewotI2lmIEVOQUJMRShXRUJBU1NFTUJMWV9CM0pJ
VCkKLSAgICBtX2JicUNhbGxlZXMucmVzaXplKG1fY2FsbGVlQ291bnQpOwotICAgIG1fb21nQ2Fs
bGVlcy5yZXNpemUobV9jYWxsZWVDb3VudCk7Ci0jZW5kaWYKICAgICBzZXRDb21waWxhdGlvbkZp
bmlzaGVkKCk7CiB9CiAKQEAgLTc5LDEwICs3OSwxMCBAQCBDb2RlQmxvY2s6OkNvZGVCbG9jayhD
b250ZXh0KiBjb250ZXh0LCBNZW1vcnlNb2RlIG1vZGUsIE1vZHVsZUluZm9ybWF0aW9uJiBtb2R1
bAogCiAjaWYgRU5BQkxFKFdFQkFTU0VNQkxZX0IzSklUKQogICAgICAgICAgICAgLy8gRklYTUU6
IHdlIHNob3VsZCBldmVudHVhbGx5IGNvbGxlY3QgdGhlIEJCUSBjb2RlLgotICAgICAgICAgICAg
bV9iYnFDYWxsZWVzLnJlc2l6ZShtX2NhbGxlZUNvdW50KTsKLSAgICAgICAgICAgIG1fb21nQ2Fs
bGVlcy5yZXNpemUobV9jYWxsZWVDb3VudCk7CisgICAgICAgICAgICBtX2JicUNhbGxlZXMgPSBG
aXhlZFZlY3RvcjxSZWZQdHI8QkJRQ2FsbGVlPj4obV9jYWxsZWVDb3VudCk7CisgICAgICAgICAg
ICBtX29tZ0NhbGxlZXMgPSBGaXhlZFZlY3RvcjxSZWZQdHI8T01HQ2FsbGVlPj4obV9jYWxsZWVD
b3VudCk7CiAjZW5kaWYKLSAgICAgICAgICAgIG1fd2FzbUluZGlyZWN0Q2FsbEVudHJ5UG9pbnRz
LnJlc2l6ZShtX2NhbGxlZUNvdW50KTsKKyAgICAgICAgICAgIG1fd2FzbUluZGlyZWN0Q2FsbEVu
dHJ5UG9pbnRzID0gRml4ZWRWZWN0b3I8TWFjcm9Bc3NlbWJsZXJDb2RlUHRyPFdhc21FbnRyeVB0
clRhZz4+KG1fY2FsbGVlQ291bnQpOwogCiAgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAw
OyBpIDwgbV9jYWxsZWVDb3VudDsgKytpKQogICAgICAgICAgICAgICAgIG1fd2FzbUluZGlyZWN0
Q2FsbEVudHJ5UG9pbnRzW2ldID0gbV9sbGludENhbGxlZXMtPmF0KGkpLT5lbnRyeXBvaW50KCk7
CkBAIC0xMDUsOSArMTA1LDkgQEAgQ29kZUJsb2NrOjpDb2RlQmxvY2soQ29udGV4dCogY29udGV4
dCwgTWVtb3J5TW9kZSBtb2RlLCBNb2R1bGVJbmZvcm1hdGlvbiYgbW9kdWwKICAgICAgICAgICAg
IH0KIAogICAgICAgICAgICAgLy8gRklYTUU6IHdlIHNob3VsZCBldmVudHVhbGx5IGNvbGxlY3Qg
dGhlIEJCUSBjb2RlLgotICAgICAgICAgICAgbV9iYnFDYWxsZWVzLnJlc2l6ZShtX2NhbGxlZUNv
dW50KTsKLSAgICAgICAgICAgIG1fb21nQ2FsbGVlcy5yZXNpemUobV9jYWxsZWVDb3VudCk7Ci0g
ICAgICAgICAgICBtX3dhc21JbmRpcmVjdENhbGxFbnRyeVBvaW50cy5yZXNpemUobV9jYWxsZWVD
b3VudCk7CisgICAgICAgICAgICBtX2JicUNhbGxlZXMgPSBGaXhlZFZlY3RvcjxSZWZQdHI8QkJR
Q2FsbGVlPj4obV9jYWxsZWVDb3VudCk7CisgICAgICAgICAgICBtX29tZ0NhbGxlZXMgPSBGaXhl
ZFZlY3RvcjxSZWZQdHI8T01HQ2FsbGVlPj4obV9jYWxsZWVDb3VudCk7CisgICAgICAgICAgICBt
X3dhc21JbmRpcmVjdENhbGxFbnRyeVBvaW50cyA9IEZpeGVkVmVjdG9yPE1hY3JvQXNzZW1ibGVy
Q29kZVB0cjxXYXNtRW50cnlQdHJUYWc+PihtX2NhbGxlZUNvdW50KTsKIAogICAgICAgICAgICAg
QkJRUGxhbiogYmJxUGxhbiA9IHN0YXRpY19jYXN0PEJCUVBsYW4qPihtX3BsYW4uZ2V0KCkpOwog
ICAgICAgICAgICAgYmJxUGxhbi0+aW5pdGlhbGl6ZUNhbGxlZXMoWyZdICh1bnNpZ25lZCBjYWxs
ZWVJbmRleCwgUmVmUHRyPEVtYmVkZGVyRW50cnlwb2ludENhbGxlZT4mJiBlbWJlZGRlckVudHJ5
cG9pbnRDYWxsZWUsIFJlZlB0cjxCQlFDYWxsZWU+JiYgd2FzbUVudHJ5cG9pbnQpIHsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21Db2RlQmxvY2suaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21Db2RlQmxvY2suaAppbmRleCA0NTA2YzliZjNhZTY0
ZTY4MjRjODRhOGY3Zjk4OTU1Yzg4YzI5NzVkLi5mYWI2YWZlOWFmNWFhYzY2ZTZjMmQzNDNlYTI2
OGY0MTU3NGY1MWQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNt
Q29kZUJsb2NrLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUNvZGVCbG9j
ay5oCkBAIC0zMSw2ICszMSw3IEBACiAjaW5jbHVkZSAiV2FzbUNhbGxlZS5oIgogI2luY2x1ZGUg
Ildhc21FbWJlZGRlci5oIgogI2luY2x1ZGUgPHd0Zi9Dcm9zc1RocmVhZENvcGllci5oPgorI2lu
Y2x1ZGUgPHd0Zi9GaXhlZFZlY3Rvci5oPgogI2luY2x1ZGUgPHd0Zi9Mb2NrLmg+CiAjaW5jbHVk
ZSA8d3RmL1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi9TaGFyZWRUYXNrLmg+CkBAIC0xNDMsMTQg
KzE0NCwxNCBAQCBjbGFzcyBDb2RlQmxvY2sgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8
Q29kZUJsb2NrPiB7CiAgICAgdW5zaWduZWQgbV9jYWxsZWVDb3VudDsKICAgICBNZW1vcnlNb2Rl
IG1fbW9kZTsKICNpZiBFTkFCTEUoV0VCQVNTRU1CTFlfQjNKSVQpCi0gICAgVmVjdG9yPFJlZlB0
cjxPTUdDYWxsZWU+PiBtX29tZ0NhbGxlZXM7Ci0gICAgVmVjdG9yPFJlZlB0cjxCQlFDYWxsZWU+
PiBtX2JicUNhbGxlZXM7CisgICAgRml4ZWRWZWN0b3I8UmVmUHRyPE9NR0NhbGxlZT4+IG1fb21n
Q2FsbGVlczsKKyAgICBGaXhlZFZlY3RvcjxSZWZQdHI8QkJRQ2FsbGVlPj4gbV9iYnFDYWxsZWVz
OwogI2VuZGlmCiAgICAgUmVmUHRyPExMSW50Q2FsbGVlcz4gbV9sbGludENhbGxlZXM7CiAgICAg
SGFzaE1hcDx1aW50MzJfdCwgUmVmUHRyPEVtYmVkZGVyRW50cnlwb2ludENhbGxlZT4sIERlZmF1
bHRIYXNoPHVpbnQzMl90PiwgV1RGOjpVbnNpZ25lZFdpdGhaZXJvS2V5SGFzaFRyYWl0czx1aW50
MzJfdD4+IG1fZW1iZWRkZXJDYWxsZWVzOwotICAgIFZlY3RvcjxNYWNyb0Fzc2VtYmxlckNvZGVQ
dHI8V2FzbUVudHJ5UHRyVGFnPj4gbV93YXNtSW5kaXJlY3RDYWxsRW50cnlQb2ludHM7Ci0gICAg
VmVjdG9yPFZlY3RvcjxVbmxpbmtlZFdhc21Ub1dhc21DYWxsPj4gbV93YXNtVG9XYXNtQ2FsbHNp
dGVzOwotICAgIFZlY3RvcjxNYWNyb0Fzc2VtYmxlckNvZGVSZWY8V2FzbUVudHJ5UHRyVGFnPj4g
bV93YXNtVG9XYXNtRXhpdFN0dWJzOworICAgIEZpeGVkVmVjdG9yPE1hY3JvQXNzZW1ibGVyQ29k
ZVB0cjxXYXNtRW50cnlQdHJUYWc+PiBtX3dhc21JbmRpcmVjdENhbGxFbnRyeVBvaW50czsKKyAg
ICBGaXhlZFZlY3RvcjxWZWN0b3I8VW5saW5rZWRXYXNtVG9XYXNtQ2FsbD4+IG1fd2FzbVRvV2Fz
bUNhbGxzaXRlczsKKyAgICBGaXhlZFZlY3RvcjxNYWNyb0Fzc2VtYmxlckNvZGVSZWY8V2FzbUVu
dHJ5UHRyVGFnPj4gbV93YXNtVG9XYXNtRXhpdFN0dWJzOwogICAgIFJlZlB0cjxFbnRyeVBsYW4+
IG1fcGxhbjsKICAgICBzdGQ6OmF0b21pYzxib29sPiBtX2NvbXBpbGF0aW9uRmluaXNoZWQgeyBm
YWxzZSB9OwogICAgIFN0cmluZyBtX2Vycm9yTWVzc2FnZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS93YXNtL1dhc21IYW5kbGVySW5mby5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvd2FzbS9XYXNtSGFuZGxlckluZm8uY3BwCmluZGV4IGE1N2JjZjQ5YmIyY2VhMTc1MGZm
YjZiZjFlNTVhNzgyM2RmMTM2MjIuLjRiNTg5ZTU1YjcwMGY4NmU0Yjk0ZTU0ZGU0ZDM2ZWJmMTFj
OTc2Y2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21IYW5kbGVy
SW5mby5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUhhbmRsZXJJbmZv
LmNwcApAQCAtNTcsNyArNTcsNyBAQCB2b2lkIEhhbmRsZXJJbmZvOjppbml0aWFsaXplKGNvbnN0
IFVubGlua2VkSGFuZGxlckluZm8mIHVubGlua2VkSW5mbywgTWFjcm9Bc3NlbQogICAgIH0KIH0K
IAotY29uc3QgSGFuZGxlckluZm8qIEhhbmRsZXJJbmZvOjpoYW5kbGVyRm9ySW5kZXgoSW5zdGFu
Y2UmIGluc3RhbmNlLCBjb25zdCBWZWN0b3I8SGFuZGxlckluZm8+JiBleGVwdGlvbkhhbmRsZXJz
LCB1bnNpZ25lZCBpbmRleCwgY29uc3QgV2FzbTo6VGFnKiBleGNlcHRpb25UYWcpCitjb25zdCBI
YW5kbGVySW5mbyogSGFuZGxlckluZm86OmhhbmRsZXJGb3JJbmRleChJbnN0YW5jZSYgaW5zdGFu
Y2UsIGNvbnN0IEZpeGVkVmVjdG9yPEhhbmRsZXJJbmZvPiYgZXhlcHRpb25IYW5kbGVycywgdW5z
aWduZWQgaW5kZXgsIGNvbnN0IFdhc206OlRhZyogZXhjZXB0aW9uVGFnKQogewogICAgIGJvb2wg
ZGVsZWdhdGluZyA9IGZhbHNlOwogICAgIHVuc2lnbmVkIGRlbGVnYXRlVGFyZ2V0ID0gMDsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21IYW5kbGVySW5mby5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUhhbmRsZXJJbmZvLmgKaW5kZXggYzI1MTE5
M2QyMTMxNzllYmRlOTk1NDRjMjUzZWQ0OTg5ZDJmNjQzZS4uYTcwYmM3YzU1YzZjNzM4ZTg0ZTMx
ZjkzYjQ3NzZlOTgyODZkZGE0MCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dh
c20vV2FzbUhhbmRsZXJJbmZvLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2Fz
bUhhbmRsZXJJbmZvLmgKQEAgLTY4LDcgKzY4LDcgQEAgc3RydWN0IFVubGlua2VkSGFuZGxlcklu
Zm8gOiBwdWJsaWMgSGFuZGxlckluZm9CYXNlIHsKIH07CiAKIHN0cnVjdCBIYW5kbGVySW5mbyA6
IHB1YmxpYyBIYW5kbGVySW5mb0Jhc2UgewotICAgIHN0YXRpYyBjb25zdCBIYW5kbGVySW5mbyog
aGFuZGxlckZvckluZGV4KEluc3RhbmNlJiwgY29uc3QgVmVjdG9yPEhhbmRsZXJJbmZvPiYgZXhl
cHRpb25IYW5kbGVycywgdW5zaWduZWQgaW5kZXgsIGNvbnN0IFdhc206OlRhZyogZXhjZXB0aW9u
VGFnKTsKKyAgICBzdGF0aWMgY29uc3QgSGFuZGxlckluZm8qIGhhbmRsZXJGb3JJbmRleChJbnN0
YW5jZSYsIGNvbnN0IEZpeGVkVmVjdG9yPEhhbmRsZXJJbmZvPiYgZXhlcHRpb25IYW5kbGVycywg
dW5zaWduZWQgaW5kZXgsIGNvbnN0IFdhc206OlRhZyogZXhjZXB0aW9uVGFnKTsKIAogICAgIHZv
aWQgaW5pdGlhbGl6ZShjb25zdCBVbmxpbmtlZEhhbmRsZXJJbmZvJiwgTWFjcm9Bc3NlbWJsZXJD
b2RlUHRyPEV4Y2VwdGlvbkhhbmRsZXJQdHJUYWc+KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3dhc20vV2FzbU9TUkVudHJ5RGF0YS5oIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3dhc20vV2FzbU9TUkVudHJ5RGF0YS5oCmluZGV4IGQ5M2YzNDJjZTY0MmQyYzY2MzlmNjkw
NjU5ZTZhMjViM2EwYTc4MjYuLmIwZGExNjU4MTBjY2VmZjc2NTk4MjJiOThmYTJmMjE4ZWZiOTNl
NTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21PU1JFbnRyeURh
dGEuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtT1NSRW50cnlEYXRhLmgK
QEAgLTMzLDggKzMzLDkgQEAKIAogbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBXYXNtIHsKIAot
Y2xhc3MgT1NSRW50cnlWYWx1ZSA6IHB1YmxpYyBCMzo6VmFsdWVSZXAgeworY2xhc3MgT1NSRW50
cnlWYWx1ZSBmaW5hbCA6IHB1YmxpYyBCMzo6VmFsdWVSZXAgewogcHVibGljOgorICAgIE9TUkVu
dHJ5VmFsdWUoKSA9IGRlZmF1bHQ7CiAgICAgT1NSRW50cnlWYWx1ZShjb25zdCBCMzo6VmFsdWVS
ZXAmIHZhbHVlUmVwLCBCMzo6VHlwZSB0eXBlKQogICAgICAgICA6IEIzOjpWYWx1ZVJlcCh2YWx1
ZVJlcCkKICAgICAgICAgLCBtX3R5cGUodHlwZSkKQEAgLTQ0LDI1ICs0NSwyNiBAQCBjbGFzcyBP
U1JFbnRyeVZhbHVlIDogcHVibGljIEIzOjpWYWx1ZVJlcCB7CiAgICAgQjM6OlR5cGUgdHlwZSgp
IGNvbnN0IHsgcmV0dXJuIG1fdHlwZTsgfQogCiBwcml2YXRlOgotICAgIEIzOjpUeXBlIG1fdHlw
ZTsKKyAgICBCMzo6VHlwZSBtX3R5cGUgeyB9OwogfTsKIAotdXNpbmcgU3RhY2tNYXAgPSBWZWN0
b3I8T1NSRW50cnlWYWx1ZT47Cit1c2luZyBTdGFja01hcCA9IEZpeGVkVmVjdG9yPE9TUkVudHJ5
VmFsdWU+OwogdXNpbmcgU3RhY2tNYXBzID0gSGFzaE1hcDxDYWxsU2l0ZUluZGV4LCBTdGFja01h
cD47CiAKIGNsYXNzIE9TUkVudHJ5RGF0YSB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoT1NS
RW50cnlEYXRhKTsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKLSAgICBP
U1JFbnRyeURhdGEodWludDMyX3QgZnVuY3Rpb25JbmRleCwgdWludDMyX3QgbG9vcEluZGV4KQor
ICAgIE9TUkVudHJ5RGF0YSh1aW50MzJfdCBmdW5jdGlvbkluZGV4LCB1aW50MzJfdCBsb29wSW5k
ZXgsIFN0YWNrTWFwJiYgc3RhY2tNYXApCiAgICAgICAgIDogbV9mdW5jdGlvbkluZGV4KGZ1bmN0
aW9uSW5kZXgpCiAgICAgICAgICwgbV9sb29wSW5kZXgobG9vcEluZGV4KQorICAgICAgICAsIG1f
dmFsdWVzKFdURk1vdmUoc3RhY2tNYXApKQogICAgIHsKICAgICB9CiAKICAgICB1aW50MzJfdCBm
dW5jdGlvbkluZGV4KCkgY29uc3QgeyByZXR1cm4gbV9mdW5jdGlvbkluZGV4OyB9CiAgICAgdWlu
dDMyX3QgbG9vcEluZGV4KCkgY29uc3QgeyByZXR1cm4gbV9sb29wSW5kZXg7IH0KLSAgICBTdGFj
a01hcCYgdmFsdWVzKCkgeyByZXR1cm4gbV92YWx1ZXM7IH0KKyAgICBjb25zdCBTdGFja01hcCYg
dmFsdWVzKCkgeyByZXR1cm4gbV92YWx1ZXM7IH0KIAogcHJpdmF0ZToKICAgICB1aW50MzJfdCBt
X2Z1bmN0aW9uSW5kZXg7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9X
YXNtUGxhbi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtUGxhbi5jcHAKaW5k
ZXggMjg1MGI2YzljZmM5ZGVkODE2YWJiYTcwZWE5MjI4M2I3NzQxMTYzZS4uMWMxYjdiNjU5NzAw
MDliOGY1NzVlYWQyYTYxZWRhNmZhOTJiN2IzYyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3dhc20vV2FzbVBsYW4uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNt
L1dhc21QbGFuLmNwcApAQCAtMTI3LDcgKzEyNyw3IEBAIHZvaWQgUGxhbjo6ZmFpbChTdHJpbmcm
JiBlcnJvck1lc3NhZ2UpCiB2b2lkIFBsYW46OnVwZGF0ZUNhbGxTaXRlc1RvQ2FsbFVzKENvZGVC
bG9jayYgY29kZUJsb2NrLCBDb2RlTG9jYXRpb25MYWJlbDxXYXNtRW50cnlQdHJUYWc+IGVudHJ5
cG9pbnQsIHVpbnQzMl90IGZ1bmN0aW9uSW5kZXgsIHVpbnQzMl90IGZ1bmN0aW9uSW5kZXhTcGFj
ZSkKIHsKICAgICBIYXNoTWFwPHZvaWQqLCBDb2RlTG9jYXRpb25MYWJlbDxXYXNtRW50cnlQdHJU
YWc+PiBzdGFnZWRDYWxsczsKLSAgICBhdXRvIHN0YWdlUmVwYXRjaCA9IFsmXSAoY29uc3QgVmVj
dG9yPFVubGlua2VkV2FzbVRvV2FzbUNhbGw+JiBjYWxsc2l0ZXMpIHsKKyAgICBhdXRvIHN0YWdl
UmVwYXRjaCA9IFsmXSAoY29uc3QgYXV0byYgY2FsbHNpdGVzKSB7CiAgICAgICAgIGZvciAoYXV0
byYgY2FsbCA6IGNhbGxzaXRlcykgewogICAgICAgICAgICAgaWYgKGNhbGwuZnVuY3Rpb25JbmRl
eFNwYWNlID09IGZ1bmN0aW9uSW5kZXhTcGFjZSkgewogICAgICAgICAgICAgICAgIENvZGVMb2Nh
dGlvbkxhYmVsPFdhc21FbnRyeVB0clRhZz4gdGFyZ2V0ID0gTWFjcm9Bc3NlbWJsZXI6OnByZXBh
cmVGb3JBdG9taWNSZXBhdGNoTmVhckNhbGxDb25jdXJyZW50bHkoY2FsbC5jYWxsTG9jYXRpb24s
IGVudHJ5cG9pbnQpOwpAQCAtMTYwLDcgKzE2MCw3IEBAIHZvaWQgUGxhbjo6dXBkYXRlQ2FsbFNp
dGVzVG9DYWxsVXMoQ29kZUJsb2NrJiBjb2RlQmxvY2ssIENvZGVMb2NhdGlvbkxhYmVsPFdhc21F
CiAKICAgICBjb2RlQmxvY2subV93YXNtSW5kaXJlY3RDYWxsRW50cnlQb2ludHNbZnVuY3Rpb25J
bmRleF0gPSBlbnRyeXBvaW50OwogCi0gICAgYXV0byByZXBhdGNoQ2FsbHMgPSBbJl0gKGNvbnN0
IFZlY3RvcjxVbmxpbmtlZFdhc21Ub1dhc21DYWxsPiYgY2FsbHNpdGVzKSB7CisgICAgYXV0byBy
ZXBhdGNoQ2FsbHMgPSBbJl0gKGNvbnN0IGF1dG8mIGNhbGxzaXRlcykgewogICAgICAgICBmb3Ig
KGF1dG8mIGNhbGwgOiBjYWxsc2l0ZXMpIHsKICAgICAgICAgICAgIGRhdGFMb2dMbklmKFdhc21Q
bGFuSW50ZXJuYWw6OnZlcmJvc2UsICJDb25zaWRlcmluZyByZXBhdGNoaW5nIGNhbGwgYXQ6ICIs
IFJhd1BvaW50ZXIoY2FsbC5jYWxsTG9jYXRpb24uZGF0YUxvY2F0aW9uKCkpLCAiIHRoYXQgdGFy
Z2V0cyAiLCBjYWxsLmZ1bmN0aW9uSW5kZXhTcGFjZSk7CiAgICAgICAgICAgICBpZiAoY2FsbC5m
dW5jdGlvbkluZGV4U3BhY2UgPT0gZnVuY3Rpb25JbmRleFNwYWNlKSB7CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtVGllclVwQ291bnQuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3dhc20vV2FzbVRpZXJVcENvdW50LmNwcAppbmRleCA5OGNmMzhiMzgxYzI2
YjU4N2Y5M2ZkNjVmMjgyZDQzMjhhYmJiYmIyLi4xMGQzM2U0OTg2OGYyODY5N2FkMzA5OWEyMmJj
MDE5ZGE5ZjVmYjkyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNt
VGllclVwQ291bnQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21UaWVy
VXBDb3VudC5jcHAKQEAgLTM5LDkgKzM5LDkgQEAgVGllclVwQ291bnQ6OlRpZXJVcENvdW50KCkK
IAogVGllclVwQ291bnQ6On5UaWVyVXBDb3VudCgpID0gZGVmYXVsdDsKIAotT1NSRW50cnlEYXRh
JiBUaWVyVXBDb3VudDo6YWRkT1NSRW50cnlEYXRhKHVpbnQzMl90IGZ1bmN0aW9uSW5kZXgsIHVp
bnQzMl90IGxvb3BJbmRleCkKK09TUkVudHJ5RGF0YSYgVGllclVwQ291bnQ6OmFkZE9TUkVudHJ5
RGF0YSh1aW50MzJfdCBmdW5jdGlvbkluZGV4LCB1aW50MzJfdCBsb29wSW5kZXgsIFN0YWNrTWFw
JiYgc3RhY2tNYXApCiB7Ci0gICAgbV9vc3JFbnRyeURhdGEuYXBwZW5kKG1ha2VVbmlxdWU8T1NS
RW50cnlEYXRhPihmdW5jdGlvbkluZGV4LCBsb29wSW5kZXgpKTsKKyAgICBtX29zckVudHJ5RGF0
YS5hcHBlbmQobWFrZVVuaXF1ZTxPU1JFbnRyeURhdGE+KGZ1bmN0aW9uSW5kZXgsIGxvb3BJbmRl
eCwgV1RGTW92ZShzdGFja01hcCkpKTsKICAgICByZXR1cm4gKm1fb3NyRW50cnlEYXRhLmxhc3Qo
KS5nZXQoKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2Fz
bVRpZXJVcENvdW50LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtVGllclVwQ291
bnQuaAppbmRleCAxYzBkOTRjZjhhZjg1MTI2MWNiMTU1ZWE3ZmUyMzEyYmU1MmQxMDUyLi4zZjM0
ZDkzMGU5YTUzZmI3ZmVhNmJjNjI0YzUxZTkyODFiOThlMGNiIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtVGllclVwQ291bnQuaAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvd2FzbS9XYXNtVGllclVwQ291bnQuaApAQCAtNjgsNyArNjgsNyBAQCBjbGFzcyBU
aWVyVXBDb3VudCA6IHB1YmxpYyBVcHBlclRpZXJFeGVjdXRpb25Db3VudGVyIHsKICAgICBWZWN0
b3I8dWludDMyX3Q+JiBvdXRlckxvb3BzKCkgeyByZXR1cm4gbV9vdXRlckxvb3BzOyB9CiAgICAg
TG9jayYgZ2V0TG9jaygpIHsgcmV0dXJuIG1fbG9jazsgfQogCi0gICAgT1NSRW50cnlEYXRhJiBh
ZGRPU1JFbnRyeURhdGEodWludDMyX3QgZnVuY3Rpb25JbmRleCwgdWludDMyX3QgbG9vcEluZGV4
KTsKKyAgICBPU1JFbnRyeURhdGEmIGFkZE9TUkVudHJ5RGF0YSh1aW50MzJfdCBmdW5jdGlvbklu
ZGV4LCB1aW50MzJfdCBsb29wSW5kZXgsIFN0YWNrTWFwJiYpOwogCiAgICAgdm9pZCBvcHRpbWl6
ZUFmdGVyV2FybVVwKHVpbnQzMl90IGZ1bmN0aW9uSW5kZXgpCiAgICAgewpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvSlNXZWJBc3NlbWJseUNvZGVCbG9jay5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9KU1dlYkFzc2VtYmx5Q29kZUJsb2NrLmNw
cAppbmRleCA1NGU5NzQxNGI2NjI2MDM0ZjEzMGUxNWQ0OTNkN2M5NTBlMzgxNTc1Li45ZTRiYjIz
ZTZjZGZkMjM3ZGIyMDE5NzFjZmIwOGZkMTc1NjUxMmRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvd2FzbS9qcy9KU1dlYkFzc2VtYmx5Q29kZUJsb2NrLmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9KU1dlYkFzc2VtYmx5Q29kZUJsb2NrLmNwcApAQCAt
NDcsMTAgKzQ3LDEwIEBAIEpTV2ViQXNzZW1ibHlDb2RlQmxvY2sqIEpTV2ViQXNzZW1ibHlDb2Rl
QmxvY2s6OmNyZWF0ZShWTSYgdm0sIFJlZjxXYXNtOjpDb2RlQmxvCiBKU1dlYkFzc2VtYmx5Q29k
ZUJsb2NrOjpKU1dlYkFzc2VtYmx5Q29kZUJsb2NrKFZNJiB2bSwgUmVmPFdhc206OkNvZGVCbG9j
az4mJiBjb2RlQmxvY2ssIGNvbnN0IFdhc206Ok1vZHVsZUluZm9ybWF0aW9uJiBtb2R1bGVJbmZv
cm1hdGlvbikKICAgICA6IEJhc2Uodm0sIHZtLndlYkFzc2VtYmx5Q29kZUJsb2NrU3RydWN0dXJl
LmdldCgpKQogICAgICwgbV9jb2RlQmxvY2soV1RGTW92ZShjb2RlQmxvY2spKQorICAgICwgbV93
YXNtVG9KU0V4aXRTdHVicyhtX2NvZGVCbG9jay0+ZnVuY3Rpb25JbXBvcnRDb3VudCgpKQogewog
ICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgbm90IG5lZWQgdG8gZG8gdGhpcyBzeW5jaHJvbm91c2x5
LgogICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzA1NjcK
LSAgICBtX3dhc21Ub0pTRXhpdFN0dWJzLnJlc2VydmVDYXBhY2l0eShtX2NvZGVCbG9jay0+ZnVu
Y3Rpb25JbXBvcnRDb3VudCgpKTsKICAgICBmb3IgKHVuc2lnbmVkIGltcG9ydEluZGV4ID0gMDsg
aW1wb3J0SW5kZXggPCBtX2NvZGVCbG9jay0+ZnVuY3Rpb25JbXBvcnRDb3VudCgpOyArK2ltcG9y
dEluZGV4KSB7CiAgICAgICAgIFdhc206OlNpZ25hdHVyZUluZGV4IHNpZ25hdHVyZUluZGV4ID0g
bW9kdWxlSW5mb3JtYXRpb24uaW1wb3J0RnVuY3Rpb25TaWduYXR1cmVJbmRpY2VzLmF0KGltcG9y
dEluZGV4KTsKICAgICAgICAgYXV0byBiaW5kaW5nID0gV2FzbTo6d2FzbVRvSlModm0sIG1fY2Fs
bExpbmtJbmZvcywgc2lnbmF0dXJlSW5kZXgsIGltcG9ydEluZGV4KTsKQEAgLTYyLDcgKzYyLDcg
QEAgSlNXZWJBc3NlbWJseUNvZGVCbG9jazo6SlNXZWJBc3NlbWJseUNvZGVCbG9jayhWTSYgdm0s
IFJlZjxXYXNtOjpDb2RlQmxvY2s+JiYgY28KICAgICAgICAgICAgIH0KICAgICAgICAgICAgIFJF
TEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAgIH0KLSAgICAgICAgbV93YXNtVG9K
U0V4aXRTdHVicy51bmNoZWNrZWRBcHBlbmQoYmluZGluZy52YWx1ZSgpKTsKKyAgICAgICAgbV93
YXNtVG9KU0V4aXRTdHVic1tpbXBvcnRJbmRleF0gPSBiaW5kaW5nLnZhbHVlKCk7CiAgICAgfQog
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9KU1dlYkFzc2Vt
Ymx5Q29kZUJsb2NrLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9KU1dlYkFzc2Vt
Ymx5Q29kZUJsb2NrLmgKaW5kZXggODE1ZGFkODI3ZjExYzAwM2FhNTBhN2E2NzZiODY1MDlkZDQ2
MTQxZS4uMWIzMGQyZmMwZDA3NTZkYTEyYjk0Y2QyNTU5Mzc4YzVjZmFhNDhiYyAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvSlNXZWJBc3NlbWJseUNvZGVCbG9jay5o
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL0pTV2ViQXNzZW1ibHlDb2RlQmxv
Y2suaApAQCAtODksNyArODksNyBAQCBjbGFzcyBKU1dlYkFzc2VtYmx5Q29kZUJsb2NrIGZpbmFs
IDogcHVibGljIEpTQ2VsbCB7CiAgICAgREVDTEFSRV9WSVNJVF9DSElMRFJFTjsKIAogICAgIFJl
ZjxXYXNtOjpDb2RlQmxvY2s+IG1fY29kZUJsb2NrOwotICAgIFZlY3RvcjxNYWNyb0Fzc2VtYmxl
ckNvZGVSZWY8V2FzbUVudHJ5UHRyVGFnPj4gbV93YXNtVG9KU0V4aXRTdHViczsKKyAgICBGaXhl
ZFZlY3RvcjxNYWNyb0Fzc2VtYmxlckNvZGVSZWY8V2FzbUVudHJ5UHRyVGFnPj4gbV93YXNtVG9K
U0V4aXRTdHViczsKICAgICBCYWc8T3B0aW1pemluZ0NhbGxMaW5rSW5mbz4gbV9jYWxsTGlua0lu
Zm9zOwogICAgIFN0cmluZyBtX2Vycm9yTWVzc2FnZTsKIH07Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>