<?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>168452</bug_id>
          
          <creation_ts>2017-02-16 12:04:46 -0800</creation_ts>
          <short_desc>Remove EFL from WTF</short_desc>
          <delta_ts>2017-02-16 13:25:25 -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></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Anders Carlsson">andersca</reporter>
          <assigned_to name="Anders Carlsson">andersca</assigned_to>
          
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1277791</commentid>
    <comment_count>0</comment_count>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2017-02-16 12:04:46 -0800</bug_when>
    <thetext>Remove EFL from WTF</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1277793</commentid>
    <comment_count>1</comment_count>
      <attachid>301796</attachid>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2017-02-16 12:05:48 -0800</bug_when>
    <thetext>Created attachment 301796
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1277798</commentid>
    <comment_count>2</comment_count>
      <attachid>301797</attachid>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2017-02-16 12:12:00 -0800</bug_when>
    <thetext>Created attachment 301797
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1277831</commentid>
    <comment_count>3</comment_count>
      <attachid>301805</attachid>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2017-02-16 13:04:20 -0800</bug_when>
    <thetext>Created attachment 301805
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1277850</commentid>
    <comment_count>4</comment_count>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2017-02-16 13:25:25 -0800</bug_when>
    <thetext>Committed r212461: &lt;http://trac.webkit.org/changeset/212461&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>301796</attachid>
            <date>2017-02-16 12:05:48 -0800</date>
            <delta_ts>2017-02-16 12:11:58 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-168452-20170216120310.patch</filename>
            <type>text/plain</type>
            <size>42042</size>
            <attacher name="Anders Carlsson">andersca</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjEyNDU0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDI0NTE2Njc3ODM2YmNmZWQyNzVjZWU5
ODczOWIwNjI2OTFiY2Q0OTQuLjJhNzQ4OWJlZmMxMzAzMDA2YWRhNjUzNWYzNmYwNGM1MjIxOTA3
YzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMjcgQEAKKzIwMTctMDItMTYgIEFuZGVycyBDYXJsc3NvbiAgPGFu
ZGVyc2NhQGFwcGxlLmNvbT4KKworICAgICAgICBSZW1vdmUgRUZMIGZyb20gV1RGCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjg0NTIKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHd0Zi9DdXJyZW50VGlt
ZS5jcHA6CisgICAgICAgICogd3RmL0Rpc2FsbG93Q1R5cGUuaDoKKyAgICAgICAgKiB3dGYvRmVh
dHVyZURlZmluZXMuaDoKKyAgICAgICAgKiB3dGYvTWFpblRocmVhZC5jcHA6CisgICAgICAgICog
d3RmL01haW5UaHJlYWQuaDoKKyAgICAgICAgKiB3dGYvUGxhdGZvcm0uaDoKKyAgICAgICAgKiB3
dGYvUnVuTG9vcC5oOgorICAgICAgICAqIHd0Zi9Xb3JrUXVldWUuaDoKKyAgICAgICAgKiB3dGYv
ZWZsL0Rpc3BhdGNoUXVldWVFZmwuY3BwOiBSZW1vdmVkLgorICAgICAgICAqIHd0Zi9lZmwvRGlz
cGF0Y2hRdWV1ZUVmbC5oOiBSZW1vdmVkLgorICAgICAgICAqIHd0Zi9lZmwvRGlzcGF0Y2hRdWV1
ZVdvcmtJdGVtRWZsLmg6IFJlbW92ZWQuCisgICAgICAgICogd3RmL2VmbC9FZmxUeXBlZGVmcy5o
OiBSZW1vdmVkLgorICAgICAgICAqIHd0Zi9lZmwvTWFpblRocmVhZEVmbC5jcHA6IFJlbW92ZWQu
CisgICAgICAgICogd3RmL2VmbC9SdW5Mb29wRWZsLmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiB3
dGYvZWZsL1VuaXF1ZVB0ckVmbC5oOiBSZW1vdmVkLgorICAgICAgICAqIHd0Zi9lZmwvV29ya1F1
ZXVlRWZsLmNwcDogUmVtb3ZlZC4KKwogMjAxNy0wMi0xMyAgQWxleCBDaHJpc3RlbnNlbiAgPGFj
aHJpc3RlbnNlbkB3ZWJraXQub3JnPgogCiAgICAgICAgIFVSTHMgd2l0aCBhbiBpbnZhbGlkIElQ
djQgYWRkcmVzcyBzaG91bGQgYmUgaW52YWxpZApkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYv
Q3VycmVudFRpbWUuY3BwIGIvU291cmNlL1dURi93dGYvQ3VycmVudFRpbWUuY3BwCmluZGV4IDI4
NjQxM2I4Mzc1YWRkODY0NTE5ZWQ4YTMzZGZhNjhmMzFkM2NkOWUuLmQzZTI5NjE1YzhjMTllNDkw
MmE1ZmMwNzM5NDgyM2UyNjE5OTgzYjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL0N1cnJl
bnRUaW1lLmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9DdXJyZW50VGltZS5jcHAKQEAgLTUzLDEz
ICs1Myw5IEBACiAjaW5jbHVkZSA8c3RkaW50Lmg+CiAjaW5jbHVkZSA8dGltZS5oPgogCi0jZWxp
ZiBQTEFURk9STShFRkwpCi0jaW5jbHVkZSA8RWNvcmUuaD4KLSNlbHNlCiAjaW5jbHVkZSA8c3lz
L3RpbWUuaD4KLSNlbmRpZgogCi0jaWYgVVNFKEdMSUIpICYmICFQTEFURk9STShFRkwpCisjaWYg
VVNFKEdMSUIpCiAjaW5jbHVkZSA8Z2xpYi5oPgogI2VuZGlmCiAKQEAgLTIyMiw3ICsyMTgsNyBA
QCBkb3VibGUgY3VycmVudFRpbWUoKQogCiAjZW5kaWYgLy8gVVNFKFFVRVJZX1BFUkZPUk1BTkNF
X0NPVU5URVIpCiAKLSNlbGlmIFVTRShHTElCKSAmJiAhUExBVEZPUk0oRUZMKQorI2VsaWYgVVNF
KEdMSUIpCiAKIC8vIE5vdGU6IEdUSyBvbiBXaW5kb3dzIHdpbGwgcGljayB1cCB0aGUgUExBVEZP
Uk0oV0lOKSBpbXBsZW1lbnRhdGlvbiBhYm92ZSB3aGljaCBwcm92aWRlcwogLy8gYmV0dGVyIGFj
Y3VyYWN5IGNvbXBhcmVkIHdpdGggV2luZG93cyBpbXBsZW1lbnRhdGlvbiBvZiBnX2dldF9jdXJy
ZW50X3RpbWU6CkBAIC0yMzUsMTMgKzIzMSw2IEBAIGRvdWJsZSBjdXJyZW50VGltZSgpCiAgICAg
cmV0dXJuIHN0YXRpY19jYXN0PGRvdWJsZT4obm93LnR2X3NlYykgKyBzdGF0aWNfY2FzdDxkb3Vi
bGU+KG5vdy50dl91c2VjIC8gMTAwMDAwMC4wKTsKIH0KIAotI2VsaWYgUExBVEZPUk0oRUZMKQot
Ci1kb3VibGUgY3VycmVudFRpbWUoKQotewotICAgIHJldHVybiBlY29yZV90aW1lX3VuaXhfZ2V0
KCk7Ci19Ci0KICNlbHNlCiAKIGRvdWJsZSBjdXJyZW50VGltZSgpCkBAIC0yNTMsMTQgKzI0Miw3
IEBAIGRvdWJsZSBjdXJyZW50VGltZSgpCiAKICNlbmRpZgogCi0jaWYgUExBVEZPUk0oRUZMKQot
Ci1kb3VibGUgbW9ub3RvbmljYWxseUluY3JlYXNpbmdUaW1lKCkKLXsKLSAgICByZXR1cm4gZWNv
cmVfdGltZV9nZXQoKTsKLX0KLQotI2VsaWYgVVNFKEdMSUIpCisjaWYgVVNFKEdMSUIpCiAKIGRv
dWJsZSBtb25vdG9uaWNhbGx5SW5jcmVhc2luZ1RpbWUoKQogewpkaWZmIC0tZ2l0IGEvU291cmNl
L1dURi93dGYvRGlzYWxsb3dDVHlwZS5oIGIvU291cmNlL1dURi93dGYvRGlzYWxsb3dDVHlwZS5o
CmluZGV4IGRjNmJjYWI4OGZhMjgwOWFhZjRkMDM2ZDk5NzA5M2RjOWU1ZmY5YTAuLjMwNTQ0ZTcy
OWZkNDEwYTkyY2M3MWJjZTRjZDc3MDFjY2E3MzVjNjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYv
d3RmL0Rpc2FsbG93Q1R5cGUuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9EaXNhbGxvd0NUeXBlLmgK
QEAgLTQwLDcgKzQwLDcgQEAKIC8vIGFyZSB1c2VkIGZyb20gd3ggaGVhZGVycy4gT24gR1RLKyBm
b3IgTWFjIG1hbnkgR1RLKyBmaWxlcyBpbmNsdWRlIDxsaWJpbnRsLmg+CiAvLyBvciA8Z2xpYi9n
aTE4bi1saWIuaD4sIHdoaWNoIGluIHR1cm4gaW5jbHVkZSA8eGxvY2FsZS9fY3R5cGUuaD4gd2hp
Y2ggdXNlcwogLy8gaXNhY2lpKCkuIAotI2lmICEoT1MoREFSV0lOKSAmJiBQTEFURk9STShHVEsp
KSAmJiAhUExBVEZPUk0oRUZMKSAmJiAhZGVmaW5lZChfTElCQ1BQX1ZFUlNJT04pICYmIGRlZmlu
ZWQoX19HTElCQ19fKQorI2lmICEoT1MoREFSV0lOKSAmJiBQTEFURk9STShHVEspKSAmJiAhZGVm
aW5lZChfTElCQ1BQX1ZFUlNJT04pICYmIGRlZmluZWQoX19HTElCQ19fKQogCiAjaW5jbHVkZSA8
Y3R5cGUuaD4KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvRmVhdHVyZURlZmluZXMuaCBi
L1NvdXJjZS9XVEYvd3RmL0ZlYXR1cmVEZWZpbmVzLmgKaW5kZXggMTAzZWExMDdlMDE5MDQ3YmI5
YTlkMmE1MWVlMTNkY2Y2NmFlOWFkOC4uODhhM2JkYTg4OGFhY2EyMzk0ZTU4NTlhNTI0NmI4NzZh
NDA1OGMxNyAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvRmVhdHVyZURlZmluZXMuaAorKysg
Yi9Tb3VyY2UvV1RGL3d0Zi9GZWF0dXJlRGVmaW5lcy5oCkBAIC0zMjIsMTAgKzMyMiw2IEBAIHRo
ZSBwdWJsaWMgaU9TIFNESy4gV2Ugd2lsbCBhbHNvIG5lZWQgdG8gdXBkYXRlIHRoZSBGZWF0dXJl
RGVmaW5lcy54Y2NvbmZpZyBmaWxlCiAKICNlbmRpZiAvKiBQTEFURk9STShXSU5fQ0FJUk8pICov
CiAKLS8qIC0tLS0tLS0tLSBFRkwgcG9ydCAoVW5peCkgLS0tLS0tLS0tICovCi0jaWYgUExBVEZP
Uk0oRUZMKQotI2VuZGlmIC8qIFBMQVRGT1JNKEVGTCkgKi8KLQogLyogLS0tLS0tLS0tIEd0ayBw
b3J0IChVbml4LCBXaW5kb3dzLCBNYWMpIC0tLS0tLS0tLSAqLwogI2lmIFBMQVRGT1JNKEdUSykK
ICNpZiAhZGVmaW5lZChFTkFCTEVfS0VZQk9BUkRfS0VZX0FUVFJJQlVURSkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XVEYvd3RmL01haW5UaHJlYWQuY3BwIGIvU291cmNlL1dURi93dGYvTWFpblRocmVh
ZC5jcHAKaW5kZXggNDcyYmVlMjdhZGY0ZDdlMGEyYmY2M2I4ZjUzZGYwYzgzNDQ1NTNhZS4uNDFh
ZDA2MjRjMWQ5N2I4YWUwMjRjZDM5YjRhYTc4NDRhMzhhZjk5YiAxMDA2NDQKLS0tIGEvU291cmNl
L1dURi93dGYvTWFpblRocmVhZC5jcHAKKysrIGIvU291cmNlL1dURi93dGYvTWFpblRocmVhZC5j
cHAKQEAgLTQxLDcgKzQxLDcgQEAKIG5hbWVzcGFjZSBXVEYgewogCiBzdGF0aWMgYm9vbCBjYWxs
YmFja3NQYXVzZWQ7IC8vIFRoaXMgZ2xvYmFsIHZhcmlhYmxlIGlzIG9ubHkgYWNjZXNzZWQgZnJv
bSBtYWluIHRocmVhZC4KLSNpZiAhT1MoREFSV0lOKSB8fCBQTEFURk9STShFRkwpIHx8IFBMQVRG
T1JNKEdUSykKKyNpZiAhT1MoREFSV0lOKSB8fCBQTEFURk9STShHVEspCiBzdGF0aWMgVGhyZWFk
SWRlbnRpZmllciBtYWluVGhyZWFkSWRlbnRpZmllcjsKICNlbmRpZgogCkBAIC01Myw3ICs1Myw3
IEBAIHN0YXRpYyBEZXF1ZTxGdW5jdGlvbjx2b2lkICgpPj4mIGZ1bmN0aW9uUXVldWUoKQogICAg
IHJldHVybiBmdW5jdGlvblF1ZXVlOwogfQogCi0jaWYgIU9TKERBUldJTikgfHwgUExBVEZPUk0o
RUZMKSB8fCBQTEFURk9STShHVEspCisjaWYgIU9TKERBUldJTikgfHwgUExBVEZPUk0oR1RLKQog
CiB2b2lkIGluaXRpYWxpemVNYWluVGhyZWFkKCkKIHsKQEAgLTE3Niw3ICsxNzYsNyBAQCB2b2lk
IHNldE1haW5UaHJlYWRDYWxsYmFja3NQYXVzZWQoYm9vbCBwYXVzZWQpCiAgICAgICAgIHNjaGVk
dWxlRGlzcGF0Y2hGdW5jdGlvbnNPbk1haW5UaHJlYWQoKTsKIH0KIAotI2lmICFPUyhEQVJXSU4p
IHx8IFBMQVRGT1JNKEVGTCkgfHwgUExBVEZPUk0oR1RLKQorI2lmICFPUyhEQVJXSU4pIHx8IFBM
QVRGT1JNKEdUSykKIGJvb2wgaXNNYWluVGhyZWFkKCkKIHsKICAgICByZXR1cm4gY3VycmVudFRo
cmVhZCgpID09IG1haW5UaHJlYWRJZGVudGlmaWVyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93
dGYvTWFpblRocmVhZC5oIGIvU291cmNlL1dURi93dGYvTWFpblRocmVhZC5oCmluZGV4IGVmMzg2
ZDQ1MDhlNjdlZDFlMjk4YjNmYWEwYzhiY2FmYTI0NDU0NzYuLmUwYTU4NWYzNjJjZWQ3ZTk5ZDk2
OTI3MWUxMmEzNjAxZTcxNjc3NjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL01haW5UaHJl
YWQuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9NYWluVGhyZWFkLmgKQEAgLTg2LDcgKzg2LDcgQEAg
dm9pZCBpbml0aWFsaXplTWFpblRocmVhZFBsYXRmb3JtKCk7CiB2b2lkIHNjaGVkdWxlRGlzcGF0
Y2hGdW5jdGlvbnNPbk1haW5UaHJlYWQoKTsKIHZvaWQgZGlzcGF0Y2hGdW5jdGlvbnNGcm9tTWFp
blRocmVhZCgpOwogCi0jaWYgT1MoREFSV0lOKSAmJiAhUExBVEZPUk0oRUZMKSAmJiAhUExBVEZP
Uk0oR1RLKQorI2lmIE9TKERBUldJTikgJiYgIVBMQVRGT1JNKEdUSykKICNpZiAhVVNFKFdFQl9U
SFJFQUQpCiAvLyBUaGlzIHZlcnNpb24gb2YgaW5pdGlhbGl6ZU1haW5UaHJlYWQgc2V0cyB1cCB0
aGUgbWFpbiB0aHJlYWQgYXMgY29ycmVzcG9uZGluZwogLy8gdG8gdGhlIHByb2Nlc3MncyBtYWlu
IHRocmVhZCwgYW5kIG5vdCBuZWNlc3NhcmlseSB0aGUgdGhyZWFkIHRoYXQgY2FsbHMgdGhpcwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvUGxhdGZvcm0uaCBiL1NvdXJjZS9XVEYvd3RmL1Bs
YXRmb3JtLmgKaW5kZXggYjliZGQzODNmNzI1ZDk5MzFlNWNkZTZiY2ZhOGIxM2FiMmJhYWRjOC4u
ZjU5NDk0ZmQ0NjYxMTUwMTU2MTJhYjJjZjQwYjdiNDY1NGIxMzcxNyAxMDA2NDQKLS0tIGEvU291
cmNlL1dURi93dGYvUGxhdGZvcm0uaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybS5oCkBA
IC00NDEsMTUgKzQ0MSwxMiBAQAogI2VuZGlmCiAKIC8qIEZJWE1FOiB0aGVzZSBhcmUgYWxsIG1p
eGVzIG9mIE9TLCBvcGVyYXRpbmcgZW52aXJvbm1lbnQgYW5kIHBvbGljeSBjaG9pY2VzLiAqLwot
LyogUExBVEZPUk0oRUZMKSAqLwogLyogUExBVEZPUk0oR1RLKSAqLwogLyogUExBVEZPUk0oTUFD
KSAqLwogLyogUExBVEZPUk0oSU9TKSAqLwogLyogUExBVEZPUk0oSU9TX1NJTVVMQVRPUikgKi8K
IC8qIFBMQVRGT1JNKFdJTikgKi8KLSNpZiBkZWZpbmVkKEJVSUxESU5HX0VGTF9fKQotI2RlZmlu
ZSBXVEZfUExBVEZPUk1fRUZMIDEKLSNlbGlmIGRlZmluZWQoQlVJTERJTkdfR1RLX18pCisjaWYg
ZGVmaW5lZChCVUlMRElOR19HVEtfXykKICNkZWZpbmUgV1RGX1BMQVRGT1JNX0dUSyAxCiAjZWxp
ZiBkZWZpbmVkKEJVSUxESU5HX0pTQ09OTFlfXykKIC8qIEpTQ09ubHkgZG9lcyBub3QgcHJvdmlk
ZSBQTEFURk9STSgpIG1hY3JvICovCkBAIC00OTUsNyArNDkyLDcgQEAKICNkZWZpbmUgVVNFX0NB
IDEKICNlbmRpZgogCi0jaWYgUExBVEZPUk0oR1RLKSB8fCBQTEFURk9STShFRkwpCisjaWYgUExB
VEZPUk0oR1RLKQogI2RlZmluZSBVU0VfQ0FJUk8gMQogI2RlZmluZSBVU0VfR0xJQiAxCiAjZGVm
aW5lIFVTRV9GUkVFVFlQRSAxCkBAIC01MDQsOSArNTAxLDcgQEAKICNkZWZpbmUgVVNFX1dFQlAg
MQogI2VuZGlmCiAKLSNpZiBQTEFURk9STShFRkwpCi0jZGVmaW5lIEdMSUJfVkVSU0lPTl9NSU5f
UkVRVUlSRUQgR0xJQl9WRVJTSU9OXzJfMzgKLSNlbGlmIFBMQVRGT1JNKEdUSykKKyNpZiBQTEFU
Rk9STShHVEspCiAjZGVmaW5lIEdMSUJfVkVSU0lPTl9NSU5fUkVRVUlSRUQgR0xJQl9WRVJTSU9O
XzJfMzYKICNlbmRpZgogCkBAIC02MTMsNyArNjA4LDcgQEAKICNlbmRpZgogCiAjaWYgIWRlZmlu
ZWQoSEFWRV9BQ0NFU1NJQklMSVRZKQotI2lmIFBMQVRGT1JNKENPQ09BKSB8fCBQTEFURk9STShX
SU4pIHx8IFBMQVRGT1JNKEdUSykgfHwgUExBVEZPUk0oRUZMKQorI2lmIFBMQVRGT1JNKENPQ09B
KSB8fCBQTEFURk9STShXSU4pIHx8IFBMQVRGT1JNKEdUSykKICNkZWZpbmUgSEFWRV9BQ0NFU1NJ
QklMSVRZIDEKICNlbmRpZgogI2VuZGlmIC8qICFkZWZpbmVkKEhBVkVfQUNDRVNTSUJJTElUWSkg
Ki8KQEAgLTcxNCw3ICs3MDksNyBAQAogLyogSWYgcG9zc2libGUsIHRyeSB0byBlbmFibGUgYSBk
aXNhc3NlbWJsZXIuIFRoaXMgaXMgb3B0aW9uYWwuIFdlIHByb2NlZWQgaW4gdHdvCiAgICBzdGVw
czogZmlyc3Qgd2UgdHJ5IHRvIGZpbmQgc29tZSBkaXNhc3NlbWJsZXIgdGhhdCB3ZSBjYW4gdXNl
LCBhbmQgdGhlbiB3ZQogICAgZGVjaWRlIGlmIHRoZSBoaWdoLWxldmVsIGRpc2Fzc2VtYmxlciBB
UEkgY2FuIGJlIGVuYWJsZWQuICovCi0jaWYgIWRlZmluZWQoVVNFX1VESVM4NikgJiYgRU5BQkxF
KEpJVCkgJiYgKChPUyhEQVJXSU4pICYmICFQTEFURk9STShFRkwpICYmICFQTEFURk9STShHVEsp
KSB8fCAoT1MoTElOVVgpICYmIChQTEFURk9STShFRkwpIHx8IFBMQVRGT1JNKEdUSykpKSkgXAor
I2lmICFkZWZpbmVkKFVTRV9VRElTODYpICYmIEVOQUJMRShKSVQpICYmICgoT1MoREFSV0lOKSAm
JiAhUExBVEZPUk0oR1RLKSkgfHwgKE9TKExJTlVYKSAmJiBQTEFURk9STShHVEspKSkgXAogICAg
ICYmIChDUFUoWDg2KSB8fCBDUFUoWDg2XzY0KSkKICNkZWZpbmUgVVNFX1VESVM4NiAxCiAjZW5k
aWYKQEAgLTc0NSw3ICs3NDAsNyBAQAogI2RlZmluZSBFTkFCTEVfREZHX0pJVCAxCiAjZW5kaWYK
IC8qIEVuYWJsZSB0aGUgREZHIEpJVCBvbiBBUk12Ny4gIE9ubHkgdGVzdGVkIG9uIGlPUyBhbmQg
UXQvR1RLKyBMaW51eC4gKi8KLSNpZiAoQ1BVKEFSTV9USFVNQjIpIHx8IENQVShBUk02NCkpICYm
IChQTEFURk9STShJT1MpIHx8IFBMQVRGT1JNKEdUSykgfHwgUExBVEZPUk0oRUZMKSkKKyNpZiAo
Q1BVKEFSTV9USFVNQjIpIHx8IENQVShBUk02NCkpICYmIChQTEFURk9STShJT1MpIHx8IFBMQVRG
T1JNKEdUSykKICNkZWZpbmUgRU5BQkxFX0RGR19KSVQgMQogI2VuZGlmCiAvKiBFbmFibGUgdGhl
IERGRyBKSVQgb24gQVJNIGFuZCBNSVBTLiAqLwpAQCAtNzgyLDcgKzc3Nyw3IEBACiAgKiBJbiBj
b25maWd1cmF0aW9ucyBvdGhlciB0aGFuIFdpbmRvd3MgYW5kIERhcndpbiwgYmVjYXVzZSBsYXlv
dXQgb2YgbWNvbnRleHRfdCBkZXBlbmRzIG9uIHN0YW5kYXJkIGxpYnJhcmllcyAobGlrZSBnbGli
YyksCiAgKiBzYW1wbGluZyBwcm9maWxlciBpcyBlbmFibGVkIGlmIFdlYktpdCB1c2VzIHB0aHJl
YWRzIGFuZCBnbGliYy4gKi8KICNpZiAhZGVmaW5lZChFTkFCTEVfU0FNUExJTkdfUFJPRklMRVIp
Ci0jaWYgKE9TKERBUldJTikgfHwgT1MoV0lORE9XUykgfHwgUExBVEZPUk0oR1RLKSB8fCBQTEFU
Rk9STShFRkwpKSAmJiBFTkFCTEUoSklUKQorI2lmIChPUyhEQVJXSU4pIHx8IE9TKFdJTkRPV1Mp
IHx8IFBMQVRGT1JNKEdUSykgJiYgRU5BQkxFKEpJVCkKICNkZWZpbmUgRU5BQkxFX1NBTVBMSU5H
X1BST0ZJTEVSIDEKICNlbHNlCiAjZGVmaW5lIEVOQUJMRV9TQU1QTElOR19QUk9GSUxFUiAwCkBA
IC05MjYsNyArOTIxLDcgQEAKIAogLyogQ1NTIFNlbGVjdG9yIEpJVCBDb21waWxlciAqLwogI2lm
ICFkZWZpbmVkKEVOQUJMRV9DU1NfU0VMRUNUT1JfSklUKQotI2lmIChDUFUoWDg2XzY0KSB8fCBD
UFUoQVJNNjQpIHx8IChDUFUoQVJNX1RIVU1CMikgJiYgUExBVEZPUk0oSU9TKSkpICYmIEVOQUJM
RShKSVQpICYmIChPUyhEQVJXSU4pIHx8IFBMQVRGT1JNKEdUSykgfHwgUExBVEZPUk0oRUZMKSkK
KyNpZiAoQ1BVKFg4Nl82NCkgfHwgQ1BVKEFSTTY0KSB8fCAoQ1BVKEFSTV9USFVNQjIpICYmIFBM
QVRGT1JNKElPUykpKSAmJiBFTkFCTEUoSklUKSAmJiAoT1MoREFSV0lOKSB8fCBQTEFURk9STShH
VEspCiAjZGVmaW5lIEVOQUJMRV9DU1NfU0VMRUNUT1JfSklUIDEKICNlbHNlCiAjZGVmaW5lIEVO
QUJMRV9DU1NfU0VMRUNUT1JfSklUIDAKQEAgLTk4MSwxMSArOTc2LDcgQEAKICNpbmNsdWRlIDx3
dGYvZ2xpYi9HVHlwZWRlZnMuaD4KICNlbmRpZgogCi0jaWYgUExBVEZPUk0oRUZMKQotI2luY2x1
ZGUgPHd0Zi9lZmwvRWZsVHlwZWRlZnMuaD4KLSNlbmRpZgotCi0vKiBGSVhNRTogVGhpcyBkZWZp
bmUgd29uJ3QgYmUgbmVlZGVkIG9uY2UgIzI3NTUxIGlzIGZ1bGx5IGxhbmRlZC4gSG93ZXZlciwg
CisvKiBGSVhNRTogVGhpcyBkZWZpbmUgd29uJ3QgYmUgbmVlZGVkIG9uY2UgIzI3NTUxIGlzIGZ1
bGx5IGxhbmRlZC4gSG93ZXZlciwKICAgIHNpbmNlIG1vc3QgcG9ydHMgdHJ5IHRvIHN1cHBvcnQg
c3ViLXByb2plY3QgaW5kZXBlbmRlbmNlLCBhZGRpbmcgbmV3IGhlYWRlcnMKICAgIHRvIFdURiBj
YXVzZXMgbWFueSBwb3J0cyB0byBicmVhaywgYW5kIHNvIHRoaXMgd2F5IHdlIGNhbiBhZGRyZXNz
IHRoZSBidWlsZAogICAgYnJlYWthZ2VzIG9uZSBwb3J0IGF0IGEgdGltZS4gKi8KQEAgLTk5Nyw3
ICs5ODgsNyBAQAogI2RlZmluZSBVU0VfRVhQT1JUX01BQ1JPU19GT1JfVEVTVElORyAxCiAjZW5k
aWYKIAotI2lmIFBMQVRGT1JNKEdUSykgfHwgUExBVEZPUk0oRUZMKQorI2lmIFBMQVRGT1JNKEdU
SykKICNkZWZpbmUgVVNFX1VOSVhfRE9NQUlOX1NPQ0tFVFMgMQogI2VuZGlmCiAKQEAgLTEwNzcs
NyArMTA2OCw3IEBACiAKICNkZWZpbmUgVVNFX0dSQU1NQVJfQ0hFQ0tJTkcgMQogCi0jaWYgUExB
VEZPUk0oQ09DT0EpIHx8IFBMQVRGT1JNKEVGTCkgfHwgUExBVEZPUk0oR1RLKQorI2lmIFBMQVRG
T1JNKENPQ09BKSB8fCBQTEFURk9STShHVEspCiAjZGVmaW5lIFVTRV9VTklGSUVEX1RFWFRfQ0hF
Q0tJTkcgMQogI2VuZGlmCiAjaWYgUExBVEZPUk0oTUFDKQpAQCAtMTExNCw3ICsxMTA1LDcgQEAK
ICNkZWZpbmUgRU5BQkxFX1JFU09VUkNFX1VTQUdFIDEKICNlbmRpZgogCi0jaWYgUExBVEZPUk0o
R1RLKSB8fCBQTEFURk9STShFRkwpCisjaWYgUExBVEZPUk0oR1RLKQogI3VuZGVmIEVOQUJMRV9P
UEVOVFlQRV9WRVJUSUNBTAogI2RlZmluZSBFTkFCTEVfT1BFTlRZUEVfVkVSVElDQUwgMQogI2Rl
ZmluZSBFTkFCTEVfQ1NTM19URVhUX0RFQ09SQVRJT05fU0tJUF9JTksgMQpAQCAtMTE4NCwxOCAr
MTE3NSwxMyBAQAogLyogVXNlIFdpbmRvd3MgbWVzc2FnZSBwdW1wIGFic3RyYWN0aW9uLgogICog
RXZlbiBpZiB0aGUgcG9ydCBpcyBBcHBsZVdpbiwgd2UgdXNlIHRoZSBXaW5kb3dzIG1lc3NhZ2Ug
cHVtcCBzeXN0ZW0gZm9yIHRoZSBldmVudCBsb29wLAogICogc28gdGhhdCBVU0UoV0lORE9XU19F
VkVOVF9MT09QKSAmJiBVU0UoQ0YpIGNhbiBiZSB0cnVlLgotICogQW5kIFBMQVRGT1JNKFdJTiks
IFBMQVRGT1JNKEVGTCkgYW5kIFBMQVRGT1JNKEdUSykgYXJlIGV4Y2x1c2l2ZS4gSWYgdGhlIHBv
cnQgaXMgR1RLLAorICogQW5kIFBMQVRGT1JNKFdJTikgYW5kIFBMQVRGT1JNKEdUSykgYXJlIGV4
Y2x1c2l2ZS4gSWYgdGhlIHBvcnQgaXMgR1RLLAogICogUExBVEZPUk0oV0lOKSBzaG91bGQgYmUg
ZmFsc2UuIEFuZCBpbiB0aGF0IGNhc2UsIEdMaWIncyBldmVudCBsb29wIGlzIHVzZWQuCiAgKi8K
ICNkZWZpbmUgVVNFX1dJTkRPV1NfRVZFTlRfTE9PUCAxCiAjZWxpZiBQTEFURk9STShDT0NPQSkK
IC8qIE9TIFggYW5kIElPUy4gVXNlIENvcmVGb3VuZGF0aW9uICYgR0NEIGFic3RyYWN0aW9uLiAq
LwogI2RlZmluZSBVU0VfQ09DT0FfRVZFTlRfTE9PUCAxCi0jZWxpZiBQTEFURk9STShFRkwpCi0v
KiBFRkwgcG9ydCB1c2VzIEdMaWIuIEJ1dCBpdCB1c2VzIGl0cyBvd24gZXZlbnQgbG9vcCBhYnN0
cmFjdGlvbi4KLSAqIFRodXMsIFVTRShFRkxfRVZFTlRfTE9PUCkgJiYgVVNFKEdMSUIpIGNhbiBi
ZSB0cnVlLgotICovCi0jZGVmaW5lIFVTRV9FRkxfRVZFTlRfTE9PUCAxCiAjZWxpZiBVU0UoR0xJ
QikKIC8qIFVzZSBHTGliJ3MgZXZlbnQgbG9vcCBhYnN0cmFjdGlvbi4gUHJpbWFyaWx5IEdUSyBw
b3J0IHVzZXMgaXQuICovCiAjZGVmaW5lIFVTRV9HTElCX0VWRU5UX0xPT1AgMQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dURi93dGYvUnVuTG9vcC5oIGIvU291cmNlL1dURi93dGYvUnVuTG9vcC5oCmlu
ZGV4IGFhNTAzZjQ2Y2VmZjc0OWIxODNjNjc3ZWEwNTkyZTEwOGU4MmEzNzcuLmU5MjQ1Mjc5NWI0
YjUxOTAwMzQ4ZDYzNjdiZDhiOWIzNjg1MDI1ZTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3Rm
L1J1bkxvb3AuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9SdW5Mb29wLmgKQEAgLTQwLDExICs0MCw2
IEBACiAjaW5jbHVkZSA8d3RmL2dsaWIvR1JlZlB0ci5oPgogI2VuZGlmCiAKLSNpZiBVU0UoRUZM
X0VWRU5UX0xPT1ApCi0jaW5jbHVkZSA8RWNvcmUuaD4KLSNpbmNsdWRlIDx3dGYvZWZsL1VuaXF1
ZVB0ckVmbC5oPgotI2VuZGlmCi0KIG5hbWVzcGFjZSBXVEYgewogCiBjbGFzcyBSdW5Mb29wIDog
cHVibGljIEZ1bmN0aW9uRGlzcGF0Y2hlciB7CkBAIC0xMTQsMTAgKzEwOSw2IEBAIHB1YmxpYzoK
ICNlbGlmIFVTRShDT0NPQV9FVkVOVF9MT09QKQogICAgICAgICBzdGF0aWMgdm9pZCB0aW1lckZp
cmVkKENGUnVuTG9vcFRpbWVyUmVmLCB2b2lkKik7CiAgICAgICAgIFJldGFpblB0cjxDRlJ1bkxv
b3BUaW1lclJlZj4gbV90aW1lcjsKLSNlbGlmIFVTRShFRkxfRVZFTlRfTE9PUCkKLSAgICAgICAg
c3RhdGljIGJvb2wgdGltZXJGaXJlZCh2b2lkKiBkYXRhKTsKLSAgICAgICAgRWNvcmVfVGltZXIq
IG1fdGltZXI7Ci0gICAgICAgIGJvb2wgbV9pc1JlcGVhdGluZzsKICNlbGlmIFVTRShHTElCX0VW
RU5UX0xPT1ApCiAgICAgICAgIHZvaWQgdXBkYXRlUmVhZHlUaW1lKCk7CiAgICAgICAgIEdSZWZQ
dHI8R1NvdXJjZT4gbV9zb3VyY2U7CkBAIC0xNzAsMTQgKzE2MSw2IEBAIHByaXZhdGU6CiAgICAg
c3RhdGljIHZvaWQgcGVyZm9ybVdvcmsodm9pZCopOwogICAgIFJldGFpblB0cjxDRlJ1bkxvb3BS
ZWY+IG1fcnVuTG9vcDsKICAgICBSZXRhaW5QdHI8Q0ZSdW5Mb29wU291cmNlUmVmPiBtX3J1bkxv
b3BTb3VyY2U7Ci0jZWxpZiBVU0UoRUZMX0VWRU5UX0xPT1ApCi0gICAgTXV0ZXggbV9waXBlTG9j
azsKLSAgICBFZmxVbmlxdWVQdHI8RWNvcmVfUGlwZT4gbV9waXBlOwotCi0gICAgTXV0ZXggbV93
YWtlVXBFdmVudFJlcXVlc3RlZExvY2s7Ci0gICAgYm9vbCBtX3dha2VVcEV2ZW50UmVxdWVzdGVk
OwotCi0gICAgc3RhdGljIHZvaWQgd2FrZVVwRXZlbnQodm9pZCogZGF0YSwgdm9pZCosIHVuc2ln
bmVkKTsKICNlbGlmIFVTRShHTElCX0VWRU5UX0xPT1ApCiAgICAgR1JlZlB0cjxHTWFpbkNvbnRl
eHQ+IG1fbWFpbkNvbnRleHQ7CiAgICAgVmVjdG9yPEdSZWZQdHI8R01haW5Mb29wPj4gbV9tYWlu
TG9vcHM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9Xb3JrUXVldWUuaCBiL1NvdXJjZS9X
VEYvd3RmL1dvcmtRdWV1ZS5oCmluZGV4IGQ5MTg0YjQ4MjdiZjEwYmEzOGE0ODE0ODA1YjJmMzM2
NDZkNzZlMDMuLjQyOWMzOGQ4NjMwNzAwODhhNTUyOTEyOTY5N2E3ODg5ZDIyZWQ1YTAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL1dvcmtRdWV1ZS5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL1dv
cmtRdWV1ZS5oCkBAIC0zOCwxMCArMzgsNiBAQAogI2luY2x1ZGUgPGRpc3BhdGNoL2Rpc3BhdGNo
Lmg+CiAjZW5kaWYKIAotI2lmIFVTRShFRkxfRVZFTlRfTE9PUCkKLSNpbmNsdWRlIDxEaXNwYXRj
aFF1ZXVlRWZsLmg+Ci0jZW5kaWYKLQogI2lmIFVTRShXSU5ET1dTX0VWRU5UX0xPT1ApCiAjaW5j
bHVkZSA8d3RmL1ZlY3Rvci5oPgogI2VuZGlmCkBAIC03NSwxMCArNzEsNyBAQCBwdWJsaWM6CiAK
ICAgICBXVEZfRVhQT1JUX1BSSVZBVEUgc3RhdGljIHZvaWQgY29uY3VycmVudEFwcGx5KHNpemVf
dCBpdGVyYXRpb25zLCBjb25zdCBzdGQ6OmZ1bmN0aW9uPHZvaWQgKHNpemVfdCBpbmRleCk+Jik7
CiAKLSNpZiBVU0UoRUZMX0VWRU5UX0xPT1ApCi0gICAgdm9pZCByZWdpc3RlclNvY2tldEV2ZW50
SGFuZGxlcihpbnQsIHN0ZDo6ZnVuY3Rpb248dm9pZCAoKT4pOwotICAgIHZvaWQgdW5yZWdpc3Rl
clNvY2tldEV2ZW50SGFuZGxlcihpbnQpOwotI2VsaWYgVVNFKENPQ09BX0VWRU5UX0xPT1ApCisj
aWYgVVNFKENPQ09BX0VWRU5UX0xPT1ApCiAgICAgZGlzcGF0Y2hfcXVldWVfdCBkaXNwYXRjaFF1
ZXVlKCkgY29uc3QgeyByZXR1cm4gbV9kaXNwYXRjaFF1ZXVlOyB9CiAjZWxpZiBVU0UoR0xJQl9F
VkVOVF9MT09QKSB8fCBVU0UoR0VORVJJQ19FVkVOVF9MT09QKQogICAgIFJ1bkxvb3AmIHJ1bkxv
b3AoKSBjb25zdCB7IHJldHVybiAqbV9ydW5Mb29wOyB9CkBAIC05OSw5ICs5Miw3IEBAIHByaXZh
dGU6CiAgICAgdm9pZCBwZXJmb3JtV29ya09uUmVnaXN0ZXJlZFdvcmtUaHJlYWQoKTsKICNlbmRp
ZgogCi0jaWYgVVNFKEVGTF9FVkVOVF9MT09QKQotICAgIFJlZlB0cjxEaXNwYXRjaFF1ZXVlPiBt
X2Rpc3BhdGNoUXVldWU7Ci0jZWxpZiBVU0UoQ09DT0FfRVZFTlRfTE9PUCkKKyNpZiBVU0UoQ09D
T0FfRVZFTlRfTE9PUCkKICAgICBzdGF0aWMgdm9pZCBleGVjdXRlRnVuY3Rpb24odm9pZCopOwog
ICAgIGRpc3BhdGNoX3F1ZXVlX3QgbV9kaXNwYXRjaFF1ZXVlOwogI2VsaWYgVVNFKFdJTkRPV1Nf
RVZFTlRfTE9PUCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL2VmbC9EaXNwYXRjaFF1ZXVl
RWZsLmNwcCBiL1NvdXJjZS9XVEYvd3RmL2VmbC9EaXNwYXRjaFF1ZXVlRWZsLmNwcApkZWxldGVk
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjRhZDJiZGM0MzhmOWQ5NDU3ZTNmN2ZiNDkyMjRjNjgx
NTk3NmRhZi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9T
b3VyY2UvV1RGL3d0Zi9lZmwvRGlzcGF0Y2hRdWV1ZUVmbC5jcHAKKysrIC9kZXYvbnVsbApAQCAt
MSwyNTMgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMyBTYW1zdW5nIEVsZWN0cm9u
aWNzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
Ci0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0g
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycK
LSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0g
KiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgi
Ci0jaW5jbHVkZSAiRGlzcGF0Y2hRdWV1ZUVmbC5oIgotCi0jaW5jbHVkZSA8RGlzcGF0Y2hRdWV1
ZVdvcmtJdGVtRWZsLmg+Ci0jaW5jbHVkZSA8c3lzL3RpbWVyZmQuaD4KLSNpbmNsdWRlIDx1bmlz
dGQuaD4KLSNpbmNsdWRlIDx3dGYvQXNzZXJ0aW9ucy5oPgotI2luY2x1ZGUgPHd0Zi9DdXJyZW50
VGltZS5oPgotI2luY2x1ZGUgPHd0Zi9UaHJlYWRpbmcuaD4KLQotc3RhdGljIGNvbnN0IGludCBt
aWNyb1NlY29uZHNQZXJTZWNvbmQgPSAxMDAwMDAwOwotc3RhdGljIGNvbnN0IGludCBuYW5vU2Vj
b25kc1BlclNlY29uZCA9IDEwMDAwMDAwMDA7Ci1zdGF0aWMgY29uc3QgaW50IGludmFsaWRTb2Nr
ZXREZXNjcmlwdG9yID0gLTE7Ci1zdGF0aWMgY29uc3QgY2hhciB3YWtlVXBUaHJlYWRNZXNzYWdl
ID0gJ1cnOwotCi1jbGFzcyBEaXNwYXRjaFF1ZXVlOjpUaHJlYWRDb250ZXh0IHsKLXB1YmxpYzoK
LSAgICBzdGF0aWMgdm9pZCBzdGFydChjb25zdCBjaGFyKiBuYW1lLCBQYXNzUmVmUHRyPERpc3Bh
dGNoUXVldWU+IGRpc3BhdGNoUXVldWUpCi0gICAgewotICAgICAgICAvLyBUaGUgRGlzcGF0Y2hR
dWV1ZVRocmVhZENvbnRleHQgaW5zdGFuY2Ugd2lsbCBiZSBwYXNzZWQgdG8gdGhlIHRocmVhZCBm
dW5jdGlvbiBhbmQgZGVsZXRlZCBpbiBpdC4KLSAgICAgICAgZGV0YWNoVGhyZWFkKGNyZWF0ZVRo
cmVhZChyZWludGVycHJldF9jYXN0PFdURjo6VGhyZWFkRnVuY3Rpb24+KCZUaHJlYWRDb250ZXh0
OjpmdW5jdGlvbiksIG5ldyBUaHJlYWRDb250ZXh0KGRpc3BhdGNoUXVldWUpLCBuYW1lKSk7Ci0g
ICAgfQotCi1wcml2YXRlOgotICAgIFRocmVhZENvbnRleHQoUGFzc1JlZlB0cjxEaXNwYXRjaFF1
ZXVlPiBkaXNwYXRjaFF1ZXVlKQotICAgICAgICA6IG1fZGlzcGF0Y2hRdWV1ZShkaXNwYXRjaFF1
ZXVlKQotICAgIHsKLSAgICB9Ci0KLSAgICBzdGF0aWMgdm9pZCogZnVuY3Rpb24oVGhyZWFkQ29u
dGV4dCogdGhyZWFkQ29udGV4dCkKLSAgICB7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxUaHJl
YWRDb250ZXh0Pih0aHJlYWRDb250ZXh0KS0+bV9kaXNwYXRjaFF1ZXVlLT5kaXNwYXRjaFF1ZXVl
VGhyZWFkKCk7Ci0gICAgICAgIHJldHVybiAwOwotICAgIH0KLQotICAgIFJlZlB0cjxEaXNwYXRj
aFF1ZXVlPiBtX2Rpc3BhdGNoUXVldWU7Ci19OwotCi1QYXNzUmVmUHRyPERpc3BhdGNoUXVldWU+
IERpc3BhdGNoUXVldWU6OmNyZWF0ZShjb25zdCBjaGFyKiBuYW1lKQotewotICAgIFJlZlB0cjxE
aXNwYXRjaFF1ZXVlPiBkaXNwYXRjaFF1ZXVlID0gYWRvcHRSZWY8RGlzcGF0Y2hRdWV1ZT4obmV3
IERpc3BhdGNoUXVldWUoKSk7Ci0KLSAgICBUaHJlYWRDb250ZXh0OjpzdGFydChuYW1lLCBkaXNw
YXRjaFF1ZXVlKTsKLQotICAgIHJldHVybiBkaXNwYXRjaFF1ZXVlLnJlbGVhc2UoKTsKLX0KLQot
RGlzcGF0Y2hRdWV1ZTo6RGlzcGF0Y2hRdWV1ZSgpCi0gICAgOiBtX2lzVGhyZWFkUnVubmluZyh0
cnVlKQotewotICAgIGludCBmZHNbMl07Ci0gICAgaWYgKHBpcGUoZmRzKSkKLSAgICAgICAgQVNT
RVJUX05PVF9SRUFDSEVEKCk7Ci0KLSAgICBtX3JlYWRGcm9tUGlwZURlc2NyaXB0b3IgPSBmZHNb
MF07Ci0gICAgbV93cml0ZVRvUGlwZURlc2NyaXB0b3IgPSBmZHNbMV07Ci0gICAgRkRfWkVSTygm
bV9maWxlRGVzY3JpcHRvclNldCk7Ci0gICAgRkRfU0VUKG1fcmVhZEZyb21QaXBlRGVzY3JpcHRv
ciwgJm1fZmlsZURlc2NyaXB0b3JTZXQpOwotICAgIG1fbWF4RmlsZURlc2NyaXB0b3IgPSBtX3Jl
YWRGcm9tUGlwZURlc2NyaXB0b3I7Ci0KLSAgICBtX3NvY2tldERlc2NyaXB0b3IgPSBpbnZhbGlk
U29ja2V0RGVzY3JpcHRvcjsKLX0KLQotRGlzcGF0Y2hRdWV1ZTo6fkRpc3BhdGNoUXVldWUoKQot
ewotICAgIGNsb3NlKG1fcmVhZEZyb21QaXBlRGVzY3JpcHRvcik7Ci0gICAgY2xvc2UobV93cml0
ZVRvUGlwZURlc2NyaXB0b3IpOwotfQotCi12b2lkIERpc3BhdGNoUXVldWU6OmRpc3BhdGNoKHN0
ZDo6dW5pcXVlX3B0cjxXb3JrSXRlbT4gaXRlbSkKLXsKLSAgICB7Ci0gICAgICAgIE11dGV4TG9j
a2VyIGxvY2tlcihtX3dvcmtJdGVtc0xvY2spOwotICAgICAgICBtX3dvcmtJdGVtcy5hcHBlbmQo
V1RGTW92ZShpdGVtKSk7Ci0gICAgfQotCi0gICAgd2FrZVVwVGhyZWFkKCk7Ci19Ci0KLXZvaWQg
RGlzcGF0Y2hRdWV1ZTo6ZGlzcGF0Y2goc3RkOjp1bmlxdWVfcHRyPFRpbWVyV29ya0l0ZW0+IGl0
ZW0pCi17Ci0gICAgaW5zZXJ0VGltZXJXb3JrSXRlbShXVEZNb3ZlKGl0ZW0pKTsKLSAgICB3YWtl
VXBUaHJlYWQoKTsKLX0KLQotdm9pZCBEaXNwYXRjaFF1ZXVlOjpzdG9wVGhyZWFkKCkKLXsKLSAg
ICBBU1NFUlQobV9zb2NrZXREZXNjcmlwdG9yID09IGludmFsaWRTb2NrZXREZXNjcmlwdG9yKTsK
LQotICAgIG1faXNUaHJlYWRSdW5uaW5nID0gZmFsc2U7Ci0gICAgd2FrZVVwVGhyZWFkKCk7Ci19
Ci0KLXZvaWQgRGlzcGF0Y2hRdWV1ZTo6c2V0U29ja2V0RXZlbnRIYW5kbGVyKGludCBmaWxlRGVz
Y3JpcHRvciwgc3RkOjpmdW5jdGlvbjx2b2lkICgpPiBmdW5jdGlvbikKLXsKLSAgICBBU1NFUlQo
bV9zb2NrZXREZXNjcmlwdG9yID09IGludmFsaWRTb2NrZXREZXNjcmlwdG9yKTsKLQotICAgIG1f
c29ja2V0RGVzY3JpcHRvciA9IGZpbGVEZXNjcmlwdG9yOwotICAgIG1fc29ja2V0RXZlbnRIYW5k
bGVyID0gV1RGTW92ZShmdW5jdGlvbik7Ci0KLSAgICBpZiAoZmlsZURlc2NyaXB0b3IgPiBtX21h
eEZpbGVEZXNjcmlwdG9yKQotICAgICAgICBtX21heEZpbGVEZXNjcmlwdG9yID0gZmlsZURlc2Ny
aXB0b3I7Ci0gICAgRkRfU0VUKGZpbGVEZXNjcmlwdG9yLCAmbV9maWxlRGVzY3JpcHRvclNldCk7
Ci19Ci0KLXZvaWQgRGlzcGF0Y2hRdWV1ZTo6Y2xlYXJTb2NrZXRFdmVudEhhbmRsZXIoKQotewot
ICAgIEFTU0VSVChtX3NvY2tldERlc2NyaXB0b3IgIT0gaW52YWxpZFNvY2tldERlc2NyaXB0b3Ip
OwotCi0gICAgaWYgKG1fc29ja2V0RGVzY3JpcHRvciA9PSBtX21heEZpbGVEZXNjcmlwdG9yKQot
ICAgICAgICBtX21heEZpbGVEZXNjcmlwdG9yID0gbV9yZWFkRnJvbVBpcGVEZXNjcmlwdG9yOwot
Ci0gICAgRkRfQ0xSKG1fc29ja2V0RGVzY3JpcHRvciwgJm1fZmlsZURlc2NyaXB0b3JTZXQpOwot
Ci0gICAgbV9zb2NrZXREZXNjcmlwdG9yID0gaW52YWxpZFNvY2tldERlc2NyaXB0b3I7Ci19Ci0K
LXZvaWQgRGlzcGF0Y2hRdWV1ZTo6cGVyZm9ybVdvcmsoKQotewotICAgIHdoaWxlICh0cnVlKSB7
Ci0gICAgICAgIFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8V29ya0l0ZW0+PiB3b3JrSXRlbXM7Ci0K
LSAgICAgICAgewotICAgICAgICAgICAgTXV0ZXhMb2NrZXIgbG9ja2VyKG1fd29ya0l0ZW1zTG9j
ayk7Ci0gICAgICAgICAgICBpZiAobV93b3JrSXRlbXMuaXNFbXB0eSgpKQotICAgICAgICAgICAg
ICAgIHJldHVybjsKLQotICAgICAgICAgICAgbV93b3JrSXRlbXMuc3dhcCh3b3JrSXRlbXMpOwot
ICAgICAgICB9Ci0KLSAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCB3b3JrSXRlbXMuc2l6
ZSgpOyArK2kpCi0gICAgICAgICAgICB3b3JrSXRlbXNbaV0tPmRpc3BhdGNoKCk7Ci0gICAgfQot
fQotCi12b2lkIERpc3BhdGNoUXVldWU6OnBlcmZvcm1UaW1lcldvcmsoKQotewotICAgIFZlY3Rv
cjxzdGQ6OnVuaXF1ZV9wdHI8VGltZXJXb3JrSXRlbT4+IHRpbWVyV29ya0l0ZW1zOwotCi0gICAg
ewotICAgICAgICAvLyBQcm90ZWN0cyBtX3RpbWVyV29ya0l0ZW1zLgotICAgICAgICBNdXRleExv
Y2tlciBsb2NrZXIobV90aW1lcldvcmtJdGVtc0xvY2spOwotICAgICAgICBpZiAobV90aW1lcldv
cmtJdGVtcy5pc0VtcHR5KCkpCi0gICAgICAgICAgICByZXR1cm47Ci0KLSAgICAgICAgLy8gQ29w
aWVzIGFsbCB0aGUgdGltZXIgd29yayBpdGVtcyBpbiBtX3RpbWVyV29ya0l0ZW1zIHRvIGxvY2Fs
IHZlY3Rvci4KLSAgICAgICAgbV90aW1lcldvcmtJdGVtcy5zd2FwKHRpbWVyV29ya0l0ZW1zKTsK
LSAgICB9Ci0KLSAgICBkb3VibGUgY3VycmVudFRpbWVOYW5vU2Vjb25kcyA9IG1vbm90b25pY2Fs
bHlJbmNyZWFzaW5nVGltZSgpICogbmFub1NlY29uZHNQZXJTZWNvbmQ7Ci0KLSAgICBmb3IgKHNp
emVfdCBpID0gMDsgaSA8IHRpbWVyV29ya0l0ZW1zLnNpemUoKTsgKytpKSB7Ci0gICAgICAgIGlm
ICghdGltZXJXb3JrSXRlbXNbaV0tPmhhc0V4cGlyZWQoY3VycmVudFRpbWVOYW5vU2Vjb25kcykp
IHsKLSAgICAgICAgICAgIGluc2VydFRpbWVyV29ya0l0ZW0oV1RGTW92ZSh0aW1lcldvcmtJdGVt
c1tpXSkpOwotICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgIH0KLQotICAgICAgICAvLyBJ
ZiBhIHRpbWVyIHdvcmsgaXRlbSBoYXMgZXhwaXJlZCwgZGlzcGF0Y2ggdGhlIGZ1bmN0aW9uIG9m
IHRoZSB3b3JrIGl0ZW0uCi0gICAgICAgIHRpbWVyV29ya0l0ZW1zW2ldLT5kaXNwYXRjaCgpOwot
ICAgIH0KLX0KLQotdm9pZCBEaXNwYXRjaFF1ZXVlOjpwZXJmb3JtRmlsZURlc2NyaXB0b3JXb3Jr
KCkKLXsKLSAgICBmZF9zZXQgcmVhZEZpbGVEZXNjcmlwdG9yU2V0ID0gbV9maWxlRGVzY3JpcHRv
clNldDsKLQotICAgIGlmIChzZWxlY3QobV9tYXhGaWxlRGVzY3JpcHRvciArIDEsICZyZWFkRmls
ZURlc2NyaXB0b3JTZXQsIDAsIDAsIGdldE5leHRUaW1lT3V0KCkpID49IDApIHsKLSAgICAgICAg
aWYgKEZEX0lTU0VUKG1fcmVhZEZyb21QaXBlRGVzY3JpcHRvciwgJnJlYWRGaWxlRGVzY3JpcHRv
clNldCkpIHsKLSAgICAgICAgICAgIGNoYXIgbWVzc2FnZTsKLSAgICAgICAgICAgIGlmIChyZWFk
KG1fcmVhZEZyb21QaXBlRGVzY3JpcHRvciwgJm1lc3NhZ2UsIDEpID09IC0xKQotICAgICAgICAg
ICAgICAgIExPR19FUlJPUigiRmFpbGVkIHRvIHJlYWQgZnJvbSBEaXNwYXRjaFF1ZXVlIFRocmVh
ZCBwaXBlIik7Ci0KLSAgICAgICAgICAgIEFTU0VSVChtZXNzYWdlID09IHdha2VVcFRocmVhZE1l
c3NhZ2UpOwotICAgICAgICB9Ci0KLSAgICAgICAgaWYgKG1fc29ja2V0RGVzY3JpcHRvciAhPSBp
bnZhbGlkU29ja2V0RGVzY3JpcHRvciAmJiBGRF9JU1NFVChtX3NvY2tldERlc2NyaXB0b3IsICZy
ZWFkRmlsZURlc2NyaXB0b3JTZXQpKQotICAgICAgICAgICAgbV9zb2NrZXRFdmVudEhhbmRsZXIo
KTsKLSAgICB9Ci19Ci0KLXZvaWQgRGlzcGF0Y2hRdWV1ZTo6aW5zZXJ0VGltZXJXb3JrSXRlbShz
dGQ6OnVuaXF1ZV9wdHI8VGltZXJXb3JrSXRlbT4gaXRlbSkKLXsKLSAgICBBU1NFUlQoaXRlbSk7
Ci0KLSAgICBzaXplX3QgcG9zaXRpb24gPSAwOwotCi0gICAgTXV0ZXhMb2NrZXIgbG9ja2VyKG1f
dGltZXJXb3JrSXRlbXNMb2NrKTsKLSAgICAvLyBUaGUgaXRlbXMgc2hvdWxkIGJlIG9yZGVyZWQg
YnkgZXhwaXJlIHRpbWUuCi0gICAgZm9yICg7IHBvc2l0aW9uIDwgbV90aW1lcldvcmtJdGVtcy5z
aXplKCk7ICsrcG9zaXRpb24pCi0gICAgICAgIGlmIChpdGVtLT5leHBpcmF0aW9uVGltZU5hbm9T
ZWNvbmRzKCkgPCBtX3RpbWVyV29ya0l0ZW1zW3Bvc2l0aW9uXS0+ZXhwaXJhdGlvblRpbWVOYW5v
U2Vjb25kcygpKQotICAgICAgICAgICAgYnJlYWs7Ci0KLSAgICBtX3RpbWVyV29ya0l0ZW1zLmlu
c2VydChwb3NpdGlvbiwgV1RGTW92ZShpdGVtKSk7Ci19Ci0KLXZvaWQgRGlzcGF0Y2hRdWV1ZTo6
ZGlzcGF0Y2hRdWV1ZVRocmVhZCgpCi17Ci0gICAgd2hpbGUgKG1faXNUaHJlYWRSdW5uaW5nKSB7
Ci0gICAgICAgIHBlcmZvcm1Xb3JrKCk7Ci0gICAgICAgIHBlcmZvcm1UaW1lcldvcmsoKTsKLSAg
ICAgICAgcGVyZm9ybUZpbGVEZXNjcmlwdG9yV29yaygpOwotICAgIH0KLX0KLQotdm9pZCBEaXNw
YXRjaFF1ZXVlOjp3YWtlVXBUaHJlYWQoKQotewotICAgIE11dGV4TG9ja2VyIGxvY2tlcihtX3dy
aXRlVG9QaXBlRGVzY3JpcHRvckxvY2spOwotICAgIGlmICh3cml0ZShtX3dyaXRlVG9QaXBlRGVz
Y3JpcHRvciwgJndha2VVcFRocmVhZE1lc3NhZ2UsIHNpemVvZihjaGFyKSkgPT0gLTEpCi0gICAg
ICAgIExPR19FUlJPUigiRmFpbGVkIHRvIHdha2UgdXAgRGlzcGF0Y2hRdWV1ZSBUaHJlYWQiKTsK
LX0KLQotdGltZXZhbCogRGlzcGF0Y2hRdWV1ZTo6Z2V0TmV4dFRpbWVPdXQoKSBjb25zdAotewot
ICAgIE11dGV4TG9ja2VyIGxvY2tlcihtX3RpbWVyV29ya0l0ZW1zTG9jayk7Ci0gICAgaWYgKG1f
dGltZXJXb3JrSXRlbXMuaXNFbXB0eSgpKQotICAgICAgICByZXR1cm4gMDsKLQotICAgIHN0YXRp
YyB0aW1ldmFsIHRpbWVWYWx1ZTsKLSAgICB0aW1lVmFsdWUudHZfc2VjID0gMDsKLSAgICB0aW1l
VmFsdWUudHZfdXNlYyA9IDA7Ci0gICAgZG91YmxlIHRpbWVPdXRTZWNvbmRzID0gKG1fdGltZXJX
b3JrSXRlbXNbMF0tPmV4cGlyYXRpb25UaW1lTmFub1NlY29uZHMoKSAtIG1vbm90b25pY2FsbHlJ
bmNyZWFzaW5nVGltZSgpICogbmFub1NlY29uZHNQZXJTZWNvbmQpIC8gbmFub1NlY29uZHNQZXJT
ZWNvbmQ7Ci0gICAgaWYgKHRpbWVPdXRTZWNvbmRzID4gMCkgewotICAgICAgICB0aW1lVmFsdWUu
dHZfc2VjID0gc3RhdGljX2Nhc3Q8bG9uZz4odGltZU91dFNlY29uZHMpOwotICAgICAgICB0aW1l
VmFsdWUudHZfdXNlYyA9IHN0YXRpY19jYXN0PGxvbmc+KCh0aW1lT3V0U2Vjb25kcyAtIHRpbWVW
YWx1ZS50dl9zZWMpICogbWljcm9TZWNvbmRzUGVyU2Vjb25kKTsKLSAgICB9Ci0KLSAgICByZXR1
cm4gJnRpbWVWYWx1ZTsKLX0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL2VmbC9EaXNwYXRj
aFF1ZXVlRWZsLmggYi9Tb3VyY2UvV1RGL3d0Zi9lZmwvRGlzcGF0Y2hRdWV1ZUVmbC5oCmRlbGV0
ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmYzU1NTE5YjAxY2VlOGZlMDQ5YzEzYzFlNWZjZmM3
ZDk5Nzk0ZjI2Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBh
L1NvdXJjZS9XVEYvd3RmL2VmbC9EaXNwYXRjaFF1ZXVlRWZsLmgKKysrIC9kZXYvbnVsbApAQCAt
MSw4MCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEzIFNhbXN1bmcgRWxlY3Ryb25p
Y3MuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
LSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwot
ICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAq
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpZm5kZWYgRGlzcGF0Y2hRdWV1
ZUVmbF9oCi0jZGVmaW5lIERpc3BhdGNoUXVldWVFZmxfaAotCi0jaW5jbHVkZSA8ZnVuY3Rpb25h
bD4KLSNpbmNsdWRlIDx0aW1lLmg+Ci0jaW5jbHVkZSA8d3RmL1RocmVhZFNhZmVSZWZDb3VudGVk
Lmg+Ci0jaW5jbHVkZSA8d3RmL1RocmVhZGluZ1ByaW1pdGl2ZXMuaD4KLSNpbmNsdWRlIDx3dGYv
VmVjdG9yLmg+Ci0KLWNsYXNzIFRpbWVyV29ya0l0ZW07Ci1jbGFzcyBXb3JrSXRlbTsKLQotY2xh
c3MgRGlzcGF0Y2hRdWV1ZSA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxEaXNwYXRjaFF1
ZXVlPiB7Ci1wdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8RGlzcGF0Y2hRdWV1ZT4gY3Jl
YXRlKGNvbnN0IGNoYXIqIG5hbWUpOwotICAgIH5EaXNwYXRjaFF1ZXVlKCk7Ci0KLSAgICB2b2lk
IGRpc3BhdGNoKHN0ZDo6dW5pcXVlX3B0cjxXb3JrSXRlbT4pOwotICAgIHZvaWQgZGlzcGF0Y2go
c3RkOjp1bmlxdWVfcHRyPFRpbWVyV29ya0l0ZW0+KTsKLSAgICB2b2lkIHN0b3BUaHJlYWQoKTsK
LSAgICB2b2lkIHNldFNvY2tldEV2ZW50SGFuZGxlcihpbnQsIHN0ZDo6ZnVuY3Rpb248dm9pZCAo
KT4pOwotICAgIHZvaWQgY2xlYXJTb2NrZXRFdmVudEhhbmRsZXIoKTsKLQotcHJpdmF0ZToKLSAg
ICBjbGFzcyBUaHJlYWRDb250ZXh0OwotCi0gICAgRGlzcGF0Y2hRdWV1ZSgpOwotCi0gICAgdm9p
ZCBwZXJmb3JtV29yaygpOwotICAgIHZvaWQgcGVyZm9ybVRpbWVyV29yaygpOwotICAgIHZvaWQg
cGVyZm9ybUZpbGVEZXNjcmlwdG9yV29yaygpOwotICAgIHZvaWQgaW5zZXJ0VGltZXJXb3JrSXRl
bShzdGQ6OnVuaXF1ZV9wdHI8VGltZXJXb3JrSXRlbT4pOwotICAgIHZvaWQgZGlzcGF0Y2hRdWV1
ZVRocmVhZCgpOwotICAgIHZvaWQgd2FrZVVwVGhyZWFkKCk7Ci0gICAgdGltZXZhbCogZ2V0TmV4
dFRpbWVPdXQoKSBjb25zdDsKLQotICAgIGZkX3NldCBtX2ZpbGVEZXNjcmlwdG9yU2V0OwotICAg
IGludCBtX21heEZpbGVEZXNjcmlwdG9yOwotICAgIGludCBtX3JlYWRGcm9tUGlwZURlc2NyaXB0
b3I7Ci0gICAgaW50IG1fd3JpdGVUb1BpcGVEZXNjcmlwdG9yOwotICAgIE11dGV4IG1fd3JpdGVU
b1BpcGVEZXNjcmlwdG9yTG9jazsKLQotICAgIGJvb2wgbV9pc1RocmVhZFJ1bm5pbmc7Ci0KLSAg
ICBpbnQgbV9zb2NrZXREZXNjcmlwdG9yOwotICAgIHN0ZDo6ZnVuY3Rpb248dm9pZCAoKT4gbV9z
b2NrZXRFdmVudEhhbmRsZXI7Ci0KLSAgICBWZWN0b3I8c3RkOjp1bmlxdWVfcHRyPFdvcmtJdGVt
Pj4gbV93b3JrSXRlbXM7Ci0gICAgTXV0ZXggbV93b3JrSXRlbXNMb2NrOwotCi0gICAgVmVjdG9y
PHN0ZDo6dW5pcXVlX3B0cjxUaW1lcldvcmtJdGVtPj4gbV90aW1lcldvcmtJdGVtczsKLSAgICBt
dXRhYmxlIE11dGV4IG1fdGltZXJXb3JrSXRlbXNMb2NrOwotfTsKLQotI2VuZGlmIC8vIERpc3Bh
dGNoUXVldWVFZmxfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvZWZsL0Rpc3BhdGNoUXVl
dWVXb3JrSXRlbUVmbC5oIGIvU291cmNlL1dURi93dGYvZWZsL0Rpc3BhdGNoUXVldWVXb3JrSXRl
bUVmbC5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxNjJiYWI0MmE4YjQ4OGI3N2Zk
YzUxOTZmZDY0OWQ3MTJkY2FmMDAwLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwCi0tLSBhL1NvdXJjZS9XVEYvd3RmL2VmbC9EaXNwYXRjaFF1ZXVlV29ya0l0ZW1FZmwu
aAorKysgL2Rldi9udWxsCkBAIC0xLDcxICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIw
MTMgU2Ftc3VuZyBFbGVjdHJvbmljcy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
Ci0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAq
Ci0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05U
UklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1Ig
SVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQot
I2lmbmRlZiBEaXNwYXRjaFF1ZXVlV29ya0l0ZW1FZmxfaAotI2RlZmluZSBEaXNwYXRjaFF1ZXVl
V29ya0l0ZW1FZmxfaAotCi0jaW5jbHVkZSA8d3RmL0Fzc2VydGlvbnMuaD4KLSNpbmNsdWRlIDx3
dGYvQ3VycmVudFRpbWUuaD4KLSNpbmNsdWRlIDx3dGYvRnVuY3Rpb25EaXNwYXRjaGVyLmg+Ci0j
aW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KLSNpbmNsdWRlIDx3dGYvV29ya1F1ZXVlLmg+Ci0K
LWNsYXNzIFdvcmtJdGVtIHsKLXB1YmxpYzoKLSAgICBXb3JrSXRlbShSZWY8V29ya1F1ZXVlPiYm
IHdvcmtRdWV1ZSwgRnVuY3Rpb248dm9pZCAoKT4mJiBmdW5jdGlvbikKLSAgICAgICAgOiBtX3dv
cmtRdWV1ZShXVEZNb3ZlKHdvcmtRdWV1ZSkpCi0gICAgICAgICwgbV9mdW5jdGlvbihXVEZNb3Zl
KGZ1bmN0aW9uKSkKLSAgICB7Ci0gICAgfQotCi0gICAgdm9pZCBkaXNwYXRjaCgpIHsgbV9mdW5j
dGlvbigpOyB9Ci0KLXByaXZhdGU6Ci0gICAgUmVmPFdvcmtRdWV1ZT4gbV93b3JrUXVldWU7Ci0g
ICAgRnVuY3Rpb248dm9pZCAoKT4gbV9mdW5jdGlvbjsKLX07Ci0KLWNsYXNzIFRpbWVyV29ya0l0
ZW0gOiBwdWJsaWMgV29ya0l0ZW0gewotcHVibGljOgotICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9w
dHI8VGltZXJXb3JrSXRlbT4gY3JlYXRlKFJlZjxXb3JrUXVldWU+JiYgd29ya1F1ZXVlLCBGdW5j
dGlvbjx2b2lkICgpPiYmIGZ1bmN0aW9uLCBzdGQ6OmNocm9ubzo6bmFub3NlY29uZHMgZGVsYXlO
YW5vU2Vjb25kcykKLSAgICB7Ci0gICAgICAgIEFTU0VSVChkZWxheU5hbm9TZWNvbmRzLmNvdW50
KCkgPj0gMCk7Ci0gICAgICAgIHJldHVybiBzdGQ6OnVuaXF1ZV9wdHI8VGltZXJXb3JrSXRlbT4o
bmV3IFRpbWVyV29ya0l0ZW0oV1RGTW92ZSh3b3JrUXVldWUpLCBXVEZNb3ZlKGZ1bmN0aW9uKSwg
bW9ub3RvbmljYWxseUluY3JlYXNpbmdUaW1lKCkgKiAxMDAwMDAwMDAwLjAgKyBkZWxheU5hbm9T
ZWNvbmRzLmNvdW50KCkpKTsKLSAgICB9Ci0gICAgZG91YmxlIGV4cGlyYXRpb25UaW1lTmFub1Nl
Y29uZHMoKSBjb25zdCB7IHJldHVybiBtX2V4cGlyYXRpb25UaW1lTmFub1NlY29uZHM7IH0KLSAg
ICBib29sIGhhc0V4cGlyZWQoZG91YmxlIGN1cnJlbnRUaW1lTmFub1NlY29uZHMpIGNvbnN0IHsg
cmV0dXJuIGN1cnJlbnRUaW1lTmFub1NlY29uZHMgPj0gbV9leHBpcmF0aW9uVGltZU5hbm9TZWNv
bmRzOyB9Ci0KLXByb3RlY3RlZDoKLSAgICBUaW1lcldvcmtJdGVtKFJlZjxXb3JrUXVldWU+JiYg
d29ya1F1ZXVlLCBGdW5jdGlvbjx2b2lkICgpPiYmIGZ1bmN0aW9uLCBkb3VibGUgZXhwaXJhdGlv
blRpbWVOYW5vU2Vjb25kcykKLSAgICAgICAgOiBXb3JrSXRlbShXVEZNb3ZlKHdvcmtRdWV1ZSks
IFdURk1vdmUoZnVuY3Rpb24pKQotICAgICAgICAsIG1fZXhwaXJhdGlvblRpbWVOYW5vU2Vjb25k
cyhleHBpcmF0aW9uVGltZU5hbm9TZWNvbmRzKQotICAgIHsKLSAgICB9Ci0KLXByaXZhdGU6Ci0g
ICAgZG91YmxlIG1fZXhwaXJhdGlvblRpbWVOYW5vU2Vjb25kczsKLX07Ci0KLSNlbmRpZiAvLyBE
aXNwYXRjaFF1ZXVlV29ya0l0ZW1FZmxfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvZWZs
L0VmbFR5cGVkZWZzLmggYi9Tb3VyY2UvV1RGL3d0Zi9lZmwvRWZsVHlwZWRlZnMuaApkZWxldGVk
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYmE3NDIyZjFlMTZmZDFiODI2N2YwMmE1MTlkNDI2Nzhh
OGU4ZGE0MC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9T
b3VyY2UvV1RGL3d0Zi9lZmwvRWZsVHlwZWRlZnMuaAorKysgL2Rldi9udWxsCkBAIC0xLDUyICsw
LDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTQgU0FNU1VORyBFTEVDVFJPTklDUyBBbGwg
cmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQotICog
bWV0OgotICoKLSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAgICAgKiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0gKiBjb3B5cmlnaHQg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyCi0gKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlCi0gKiBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwotICogIkFT
IElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QKLSAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUgotICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLSAqIE9XTkVSIE9SIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAot
ICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVAotICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0gKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLSAqIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaWZuZGVmIFdURl9F
ZmxUeXBlZGVmc19oCi0jZGVmaW5lIFdURl9FZmxUeXBlZGVmc19oCi0KLSNpZmRlZiBfX2NwbHVz
cGx1cwotCi10eXBlZGVmIHVuc2lnbmVkIEVjb3JlX1hfSUQ7Ci10eXBlZGVmIEVjb3JlX1hfSUQg
RWNvcmVfWF9XaW5kb3c7Ci0KLXR5cGVkZWYgdW5zaWduZWQgY2hhciBFaW5hX0Jvb2w7Ci10eXBl
ZGVmIHN0cnVjdCBfRXZhc19Qb2ludCBFdmFzX1BvaW50OwotdHlwZWRlZiBzdHJ1Y3QgX0V2YXNf
R0wgRXZhc19HTDsKLXR5cGVkZWYgc3RydWN0IF9FdmFzX0dMX0NvbnRleHQgRXZhc19HTF9Db250
ZXh0OwotdHlwZWRlZiBzdHJ1Y3QgX0V2YXNfR0xfU3VyZmFjZSBFdmFzX0dMX1N1cmZhY2U7Ci10
eXBlZGVmIHN0cnVjdCBfRWNvcmVfRXZhcyBFY29yZV9FdmFzOwotdHlwZWRlZiBzdHJ1Y3QgX0Vj
b3JlX0ZkX0hhbmRsZXIgRWNvcmVfRmRfSGFuZGxlcjsKLXR5cGVkZWYgc3RydWN0IF9FaW5hX0xp
c3QgRWluYV9MaXN0OwotdHlwZWRlZiBzdHJ1Y3QgX0VpbmFfTW9kdWxlIEVpbmFfTW9kdWxlOwot
dHlwZWRlZiBzdHJ1Y3QgX0VpbmFfUmVjdGFuZ2xlIEVpbmFfUmVjdGFuZ2xlOwotdHlwZWRlZiBz
dHJ1Y3QgX0VvX09wYXF1ZSBFdmFzOwotdHlwZWRlZiBzdHJ1Y3QgX0VvX09wYXF1ZSBFdmFzX09i
amVjdDsKLXR5cGVkZWYgc3RydWN0IF9Fb19PcGFxdWUgRWNvcmVfVGltZXI7Ci0KLSNlbmRpZgot
Ci0jZW5kaWYgLy8gV1RGX0VmbFR5cGVkZWZzX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3Rm
L2VmbC9NYWluVGhyZWFkRWZsLmNwcCBiL1NvdXJjZS9XVEYvd3RmL2VmbC9NYWluVGhyZWFkRWZs
LmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYmY5ZGViNDdiNjk1ZTZjYzEyMDkw
ZThjYTg4NTdjMjgzZjE1NjhhMS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9lZmwvTWFpblRocmVhZEVmbC5jcHAKKysrIC9kZXYv
bnVsbApAQCAtMSw2NCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDA3LCAyMDA4IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqIENvcHlyaWdodCAoQykgMjAwNyBKdXN0
aW4gSGF5Z29vZCAoamhheWdvb2RAcmVha3RpeC5jb20pCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDgg
RGllZ28gR29uemFsZXoKLSAqIENvcHlyaWdodCAoQykgMjAwOCBLZW5uZXRoIFJvaGRlIENocmlz
dGlhbnNlbgotICogQ29weXJpZ2h0IChDKSAyMDA5LTIwMTAgUHJvRlVTSU9OIGVtYmVkZGVkIHN5
c3RlbXMKLSAqIENvcHlyaWdodCAoQykgMjAwOS0yMDEwIFNhbXN1bmcgRWxlY3Ryb25pY3MKLSAq
Ci0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqCi0gKiAxLiAgUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKLSAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCi0gKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAg
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KLSAqIDMuICBOZWl0aGVyIHRoZSBuYW1lIG9mIEFwcGxlIEluYy4gKCJB
cHBsZSIpIG5vciB0aGUgbmFtZXMgb2YKLSAqICAgICBpdHMgY29udHJpYnV0b3JzIG1heSBiZSB1
c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkCi0gKiAgICAgZnJvbSB0
aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgot
ICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklC
VVRPUlMgIkFTIElTIiBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECi0gKiBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0Ug
QVJFCi0gKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCi0gKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUwotICogKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOwotICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECi0gKiBPTiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFIE9GCi0gKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25m
aWcuaCIKLSNpbmNsdWRlICJNYWluVGhyZWFkLmgiCi0KLSNpbmNsdWRlIDxFY29yZS5oPgotI2lu
Y2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KLSNpbmNsdWRlIDx3dGYvZWZsL1VuaXF1ZVB0ckVm
bC5oPgotCi1uYW1lc3BhY2UgV1RGIHsKLQotc3RhdGljIEVmbFVuaXF1ZVB0cjxFY29yZV9QaXBl
PiYgcGlwZU9iamVjdCgpCi17Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKEVm
bFVuaXF1ZVB0cjxFY29yZV9QaXBlPiwgcGlwZU9iamVjdCwgKCkpOwotICAgIHJldHVybiBwaXBl
T2JqZWN0OwotfQotCi1zdGF0aWMgdm9pZCBtb25pdG9yRGlzcGF0Y2hGdW5jdGlvbnModm9pZCos
IHZvaWQqLCB1bnNpZ25lZCBpbnQpCi17Ci0gICAgZGlzcGF0Y2hGdW5jdGlvbnNGcm9tTWFpblRo
cmVhZCgpOwotfQotCi12b2lkIGluaXRpYWxpemVNYWluVGhyZWFkUGxhdGZvcm0oKQotewotICAg
IHBpcGVPYmplY3QoKSA9IEVmbFVuaXF1ZVB0cjxFY29yZV9QaXBlPihlY29yZV9waXBlX2FkZCht
b25pdG9yRGlzcGF0Y2hGdW5jdGlvbnMsIDApKTsKLX0KLQotdm9pZCBzY2hlZHVsZURpc3BhdGNo
RnVuY3Rpb25zT25NYWluVGhyZWFkKCkKLXsKLSAgICBlY29yZV9waXBlX3dyaXRlKHBpcGVPYmpl
Y3QoKS5nZXQoKSwgIiIsIDApOwotfQotCi19CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9l
ZmwvUnVuTG9vcEVmbC5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi9lZmwvUnVuTG9vcEVmbC5jcHAKZGVs
ZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDVkZmMyOTAzZThiNGQxMDc0M2I1MjlmNGMwYzc0
YzY3NTBkYWU1OTYuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0t
IGEvU291cmNlL1dURi93dGYvZWZsL1J1bkxvb3BFZmwuY3BwCisrKyAvZGV2L251bGwKQEAgLTEs
MTMxICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTIgUHJvRlVTSU9OIGVtYmVkZGVk
IHN5c3RlbXMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTIgU2Ft
c3VuZyBFbGVjdHJvbmljcwotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUg
bWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLSAqICJBUyBJUyIg
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
Ci0gKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IKLSAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0gKiBPV05FUiBPUiBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLSAqIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QKLSAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLAotICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0gKiBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0g
KiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5o
IgotI2luY2x1ZGUgIlJ1bkxvb3AuaCIKLQotI2luY2x1ZGUgPEVjb3JlLmg+Ci0KLXN0YXRpYyBj
b25zdCBpbnQgZWNvcmVQaXBlTWVzc2FnZVNpemUgPSAxOwotc3RhdGljIGNvbnN0IGNoYXIgd2Fr
dXBFY29yZVBpcGVNZXNzYWdlW10gPSAiVyI7Ci0KLW5hbWVzcGFjZSBXVEYgewotCi1SdW5Mb29w
OjpSdW5Mb29wKCkKLSAgICA6IG1fd2FrZVVwRXZlbnRSZXF1ZXN0ZWQoZmFsc2UpCi17Ci0gICAg
bV9waXBlID0gRWZsVW5pcXVlUHRyPEVjb3JlX1BpcGU+KGVjb3JlX3BpcGVfYWRkKHdha2VVcEV2
ZW50LCB0aGlzKSk7Ci19Ci0KLVJ1bkxvb3A6On5SdW5Mb29wKCkKLXsKLX0KLQotdm9pZCBSdW5M
b29wOjpydW4oKQotewotICAgIGVjb3JlX21haW5fbG9vcF9iZWdpbigpOwotfQotCi12b2lkIFJ1
bkxvb3A6OnN0b3AoKQotewotICAgIGVjb3JlX21haW5fbG9vcF9xdWl0KCk7Ci19Ci0KLXZvaWQg
UnVuTG9vcDo6d2FrZVVwRXZlbnQodm9pZCogZGF0YSwgdm9pZCosIHVuc2lnbmVkKQotewotICAg
IFJ1bkxvb3AqIGxvb3AgPSBzdGF0aWNfY2FzdDxSdW5Mb29wKj4oZGF0YSk7Ci0KLSAgICB7Ci0g
ICAgICAgIE11dGV4TG9ja2VyIGxvY2tlcihsb29wLT5tX3dha2VVcEV2ZW50UmVxdWVzdGVkTG9j
ayk7Ci0gICAgICAgIGxvb3AtPm1fd2FrZVVwRXZlbnRSZXF1ZXN0ZWQgPSBmYWxzZTsKLSAgICB9
Ci0KLSAgICBsb29wLT5wZXJmb3JtV29yaygpOwotfQotCi12b2lkIFJ1bkxvb3A6Ondha2VVcCgp
Ci17Ci0gICAgewotICAgICAgICBNdXRleExvY2tlciBsb2NrZXIobV93YWtlVXBFdmVudFJlcXVl
c3RlZExvY2spOwotICAgICAgICBpZiAobV93YWtlVXBFdmVudFJlcXVlc3RlZCkKLSAgICAgICAg
ICAgIHJldHVybjsKLSAgICAgICAgbV93YWtlVXBFdmVudFJlcXVlc3RlZCA9IHRydWU7Ci0gICAg
fQotCi0gICAgewotICAgICAgICBNdXRleExvY2tlciBsb2NrZXIobV9waXBlTG9jayk7Ci0gICAg
ICAgIGVjb3JlX3BpcGVfd3JpdGUobV9waXBlLmdldCgpLCB3YWt1cEVjb3JlUGlwZU1lc3NhZ2Us
IGVjb3JlUGlwZU1lc3NhZ2VTaXplKTsKLSAgICB9Ci19Ci0KLVJ1bkxvb3A6OlRpbWVyQmFzZTo6
VGltZXJCYXNlKFJ1bkxvb3AmIHJ1bkxvb3ApCi0gICAgOiBtX3J1bkxvb3AocnVuTG9vcCkKLSAg
ICAsIG1fdGltZXIoMCkKLSAgICAsIG1faXNSZXBlYXRpbmcoZmFsc2UpCi17Ci19Ci0KLVJ1bkxv
b3A6OlRpbWVyQmFzZTo6flRpbWVyQmFzZSgpCi17Ci0gICAgc3RvcCgpOwotfQotCi1ib29sIFJ1
bkxvb3A6OlRpbWVyQmFzZTo6dGltZXJGaXJlZCh2b2lkKiBkYXRhKQotewotICAgIFJ1bkxvb3A6
OlRpbWVyQmFzZSogdGltZXIgPSBzdGF0aWNfY2FzdDxSdW5Mb29wOjpUaW1lckJhc2UqPihkYXRh
KTsKLQotICAgIGlmICghdGltZXItPm1faXNSZXBlYXRpbmcpCi0gICAgICAgIHRpbWVyLT5tX3Rp
bWVyID0gMDsKLQotICAgIHRpbWVyLT5maXJlZCgpOwotCi0gICAgcmV0dXJuIHRpbWVyLT5tX2lz
UmVwZWF0aW5nID8gRUNPUkVfQ0FMTEJBQ0tfUkVORVcgOiBFQ09SRV9DQUxMQkFDS19DQU5DRUw7
Ci19Ci0KLXZvaWQgUnVuTG9vcDo6VGltZXJCYXNlOjpzdGFydChkb3VibGUgbmV4dEZpcmVJbnRl
cnZhbCwgYm9vbCByZXBlYXQpCi17Ci0gICAgaWYgKGlzQWN0aXZlKCkpCi0gICAgICAgIHN0b3Ao
KTsKLQotICAgIG1faXNSZXBlYXRpbmcgPSByZXBlYXQ7Ci0gICAgQVNTRVJUKCFtX3RpbWVyKTsK
LSAgICBtX3RpbWVyID0gZWNvcmVfdGltZXJfYWRkKG5leHRGaXJlSW50ZXJ2YWwsIHJlaW50ZXJw
cmV0X2Nhc3Q8RWNvcmVfVGFza19DYj4odGltZXJGaXJlZCksIHRoaXMpOwotfQotCi12b2lkIFJ1
bkxvb3A6OlRpbWVyQmFzZTo6c3RvcCgpCi17Ci0gICAgaWYgKG1fdGltZXIpIHsKLSAgICAgICAg
ZWNvcmVfdGltZXJfZGVsKG1fdGltZXIpOwotICAgICAgICBtX3RpbWVyID0gMDsKLSAgICB9Ci19
Ci0KLWJvb2wgUnVuTG9vcDo6VGltZXJCYXNlOjppc0FjdGl2ZSgpIGNvbnN0Ci17Ci0gICAgcmV0
dXJuIChtX3RpbWVyKSA/IHRydWUgOiBmYWxzZTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV1RGCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9lZmwvVW5pcXVlUHRyRWZsLmggYi9Tb3VyY2UvV1RG
L3d0Zi9lZmwvVW5pcXVlUHRyRWZsLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGFl
ZGViZDc3MGQwZTQ4MGY5YjZjOWFiNWM1Njg2ZjY1MzY1NjNlYjQuLjAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dURi93dGYvZWZsL1VuaXF1ZVB0
ckVmbC5oCisrKyAvZGV2L251bGwKQEAgLTEsNjggKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAo
QykgMjAxNCBTYW1zdW5nIEVsZWN0cm9uaWNzCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
LSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMn
JwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMK
LSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAq
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICog
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpZm5kZWYgVW5pcXVlUHRy
RWZsX2gKLSNkZWZpbmUgVW5pcXVlUHRyRWZsX2gKLQotI2luY2x1ZGUgPEVjb3JlLmg+Ci0jaW5j
bHVkZSA8RWNvcmVfRXZhcy5oPgotI2luY2x1ZGUgPEVjb3JlX0lNRi5oPgotI2luY2x1ZGUgPEVp
bmEuaD4KLSNpbmNsdWRlIDxFdmFzLmg+Ci0KLW5hbWVzcGFjZSBXVEYgewotCi10ZW1wbGF0ZTx0
eXBlbmFtZSBUPiBzdHJ1Y3QgRWZsUHRyRGVsZXRlciB7Ci0gICAgdm9pZCBvcGVyYXRvcigpKFQq
IHB0cikgY29uc3QgPSBkZWxldGU7Ci19OwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBUPgotdXNpbmcg
RWZsVW5pcXVlUHRyID0gc3RkOjp1bmlxdWVfcHRyPFQsIEVmbFB0ckRlbGV0ZXI8VD4+OwotCi0j
ZGVmaW5lIEZPUl9FQUNIX0VGTF9ERUxFVEVSKG1hY3JvKSBcCi0gICAgbWFjcm8oRWNvcmVfRXZh
cywgZWNvcmVfZXZhc19mcmVlKSBcCi0gICAgbWFjcm8oRWNvcmVfSU1GX0NvbnRleHQsIGVjb3Jl
X2ltZl9jb250ZXh0X2RlbCkgXAotICAgIG1hY3JvKEVjb3JlX1BpcGUsIGVjb3JlX3BpcGVfZGVs
KSBcCi0gICAgbWFjcm8oRWluYV9IYXNoLCBlaW5hX2hhc2hfZnJlZSkgXAotICAgIG1hY3JvKEVp
bmFfTW9kdWxlLCBlaW5hX21vZHVsZV9mcmVlKSBcCi0gICAgbWFjcm8oRXZhc19PYmplY3QsIGV2
YXNfb2JqZWN0X2RlbCkgXAotCi0jZGVmaW5lIFdURl9ERUZJTkVfRUZMUFRSX0RFTEVURVIodHlw
ZU5hbWUsIGRlbGV0ZXJGdW5jKSBcCi0gICAgdGVtcGxhdGU8PiBzdHJ1Y3QgRWZsUHRyRGVsZXRl
cjx0eXBlTmFtZT4gXAotICAgIHsgXAotICAgICAgICB2b2lkIG9wZXJhdG9yKCkgKHR5cGVOYW1l
KiBwdHIpIGNvbnN0IFwKLSAgICAgICAgeyBcCi0gICAgICAgICAgICBkZWxldGVyRnVuYyhwdHIp
OyBcCi0gICAgICAgIH0gXAotICAgIH07Ci0KLUZPUl9FQUNIX0VGTF9ERUxFVEVSKFdURl9ERUZJ
TkVfRUZMUFRSX0RFTEVURVIpCi0jdW5kZWYgRk9SX0VBQ0hfRUZMX0RFTEVURVIKLQotfSAvLyBu
YW1lc3BhY2UgV1RGCi0KLXVzaW5nIFdURjo6RWZsVW5pcXVlUHRyOwotCi0jZW5kaWYgLy8gVW5p
cXVlUHRyRWZsX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL2VmbC9Xb3JrUXVldWVFZmwu
Y3BwIGIvU291cmNlL1dURi93dGYvZWZsL1dvcmtRdWV1ZUVmbC5jcHAKZGVsZXRlZCBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IGRhOTEzYmYwNGNlNzI3MzEwNzY3ZWY0Nzk0ZmRkMmI4NzhhNWY0ZWQu
LjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dU
Ri93dGYvZWZsL1dvcmtRdWV1ZUVmbC5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSw3MyArMCwwIEBA
Ci0vKgotICAgIENvcHlyaWdodCAoQykgMjAxMiBTYW1zdW5nIEVsZWN0cm9uaWNzCi0KLSAgICBU
aGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5k
L29yCi0gICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2Vu
ZXJhbCBQdWJsaWMKLSAgICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2Fy
ZSBGb3VuZGF0aW9uOyBlaXRoZXIKLSAgICB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChh
dCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0KLSAgICBUaGlzIGxpYnJhcnkgaXMg
ZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSAgICBidXQg
V0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBv
ZgotICAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9T
RS4gIFNlZSB0aGUgR05VCi0gICAgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBt
b3JlIGRldGFpbHMuCi0KLSAgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRo
ZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0gICAgYWxvbmcgd2l0aCB0aGlz
IGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KLSAg
ICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQs
IEZpZnRoIEZsb29yLAotICAgIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgotICovCi0KLSNp
bmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJXb3JrUXVldWUuaCIKLQotI2luY2x1ZGUgPERp
c3BhdGNoUXVldWVFZmwuaD4KLSNpbmNsdWRlIDxEaXNwYXRjaFF1ZXVlV29ya0l0ZW1FZmwuaD4K
LQotbmFtZXNwYWNlIFdURiB7Ci0KLXZvaWQgV29ya1F1ZXVlOjpwbGF0Zm9ybUluaXRpYWxpemUo
Y29uc3QgY2hhciogbmFtZSwgVHlwZSwgUU9TKQotewotICAgIG1fZGlzcGF0Y2hRdWV1ZSA9IERp
c3BhdGNoUXVldWU6OmNyZWF0ZShuYW1lKTsKLX0KLQotdm9pZCBXb3JrUXVldWU6OnBsYXRmb3Jt
SW52YWxpZGF0ZSgpCi17Ci0gICAgUmVmUHRyPERpc3BhdGNoUXVldWU+IGRpc3BhdGNoUXVldWUg
PSBtX2Rpc3BhdGNoUXVldWUucmVsZWFzZSgpOwotICAgIGRpc3BhdGNoUXVldWUtPnN0b3BUaHJl
YWQoKTsKLX0KLQotdm9pZCBXb3JrUXVldWU6OnJlZ2lzdGVyU29ja2V0RXZlbnRIYW5kbGVyKGlu
dCBmaWxlRGVzY3JpcHRvciwgc3RkOjpmdW5jdGlvbjx2b2lkICgpPiBmdW5jdGlvbikKLXsKLSAg
ICBpZiAoIW1fZGlzcGF0Y2hRdWV1ZSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgbV9kaXNwYXRj
aFF1ZXVlLT5zZXRTb2NrZXRFdmVudEhhbmRsZXIoZmlsZURlc2NyaXB0b3IsIFdURk1vdmUoZnVu
Y3Rpb24pKTsKLX0KLQotdm9pZCBXb3JrUXVldWU6OnVucmVnaXN0ZXJTb2NrZXRFdmVudEhhbmRs
ZXIoaW50IGZpbGVEZXNjcmlwdG9yKQotewotICAgIFVOVVNFRF9QQVJBTShmaWxlRGVzY3JpcHRv
cik7Ci0KLSAgICBpZiAoIW1fZGlzcGF0Y2hRdWV1ZSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAg
bV9kaXNwYXRjaFF1ZXVlLT5jbGVhclNvY2tldEV2ZW50SGFuZGxlcigpOwotfQotCi12b2lkIFdv
cmtRdWV1ZTo6ZGlzcGF0Y2goRnVuY3Rpb248dm9pZCAoKT4mJiBmdW5jdGlvbikKLXsKLSAgICBp
ZiAoIW1fZGlzcGF0Y2hRdWV1ZSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgbV9kaXNwYXRjaFF1
ZXVlLT5kaXNwYXRjaChzdGQ6Om1ha2VfdW5pcXVlPFdvcmtJdGVtPigqdGhpcywgV1RGTW92ZShm
dW5jdGlvbikpKTsKLX0KLQotdm9pZCBXb3JrUXVldWU6OmRpc3BhdGNoQWZ0ZXIoc3RkOjpjaHJv
bm86Om5hbm9zZWNvbmRzIGR1cmF0aW9uLCBGdW5jdGlvbjx2b2lkICgpPiYmIGZ1bmN0aW9uKQot
ewotICAgIGlmICghbV9kaXNwYXRjaFF1ZXVlKQotICAgICAgICByZXR1cm47Ci0KLSAgICBtX2Rp
c3BhdGNoUXVldWUtPmRpc3BhdGNoKFRpbWVyV29ya0l0ZW06OmNyZWF0ZSgqdGhpcywgV1RGTW92
ZShmdW5jdGlvbiksIGR1cmF0aW9uKSk7Ci19Ci0KLX0K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>301797</attachid>
            <date>2017-02-16 12:12:00 -0800</date>
            <delta_ts>2017-02-16 13:04:18 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-168452-20170216120922.patch</filename>
            <type>text/plain</type>
            <size>42043</size>
            <attacher name="Anders Carlsson">andersca</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjEyNDU0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDI0NTE2Njc3ODM2YmNmZWQyNzVjZWU5
ODczOWIwNjI2OTFiY2Q0OTQuLjJhNzQ4OWJlZmMxMzAzMDA2YWRhNjUzNWYzNmYwNGM1MjIxOTA3
YzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMjcgQEAKKzIwMTctMDItMTYgIEFuZGVycyBDYXJsc3NvbiAgPGFu
ZGVyc2NhQGFwcGxlLmNvbT4KKworICAgICAgICBSZW1vdmUgRUZMIGZyb20gV1RGCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjg0NTIKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHd0Zi9DdXJyZW50VGlt
ZS5jcHA6CisgICAgICAgICogd3RmL0Rpc2FsbG93Q1R5cGUuaDoKKyAgICAgICAgKiB3dGYvRmVh
dHVyZURlZmluZXMuaDoKKyAgICAgICAgKiB3dGYvTWFpblRocmVhZC5jcHA6CisgICAgICAgICog
d3RmL01haW5UaHJlYWQuaDoKKyAgICAgICAgKiB3dGYvUGxhdGZvcm0uaDoKKyAgICAgICAgKiB3
dGYvUnVuTG9vcC5oOgorICAgICAgICAqIHd0Zi9Xb3JrUXVldWUuaDoKKyAgICAgICAgKiB3dGYv
ZWZsL0Rpc3BhdGNoUXVldWVFZmwuY3BwOiBSZW1vdmVkLgorICAgICAgICAqIHd0Zi9lZmwvRGlz
cGF0Y2hRdWV1ZUVmbC5oOiBSZW1vdmVkLgorICAgICAgICAqIHd0Zi9lZmwvRGlzcGF0Y2hRdWV1
ZVdvcmtJdGVtRWZsLmg6IFJlbW92ZWQuCisgICAgICAgICogd3RmL2VmbC9FZmxUeXBlZGVmcy5o
OiBSZW1vdmVkLgorICAgICAgICAqIHd0Zi9lZmwvTWFpblRocmVhZEVmbC5jcHA6IFJlbW92ZWQu
CisgICAgICAgICogd3RmL2VmbC9SdW5Mb29wRWZsLmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiB3
dGYvZWZsL1VuaXF1ZVB0ckVmbC5oOiBSZW1vdmVkLgorICAgICAgICAqIHd0Zi9lZmwvV29ya1F1
ZXVlRWZsLmNwcDogUmVtb3ZlZC4KKwogMjAxNy0wMi0xMyAgQWxleCBDaHJpc3RlbnNlbiAgPGFj
aHJpc3RlbnNlbkB3ZWJraXQub3JnPgogCiAgICAgICAgIFVSTHMgd2l0aCBhbiBpbnZhbGlkIElQ
djQgYWRkcmVzcyBzaG91bGQgYmUgaW52YWxpZApkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYv
Q3VycmVudFRpbWUuY3BwIGIvU291cmNlL1dURi93dGYvQ3VycmVudFRpbWUuY3BwCmluZGV4IDI4
NjQxM2I4Mzc1YWRkODY0NTE5ZWQ4YTMzZGZhNjhmMzFkM2NkOWUuLmQzZTI5NjE1YzhjMTllNDkw
MmE1ZmMwNzM5NDgyM2UyNjE5OTgzYjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL0N1cnJl
bnRUaW1lLmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9DdXJyZW50VGltZS5jcHAKQEAgLTUzLDEz
ICs1Myw5IEBACiAjaW5jbHVkZSA8c3RkaW50Lmg+CiAjaW5jbHVkZSA8dGltZS5oPgogCi0jZWxp
ZiBQTEFURk9STShFRkwpCi0jaW5jbHVkZSA8RWNvcmUuaD4KLSNlbHNlCiAjaW5jbHVkZSA8c3lz
L3RpbWUuaD4KLSNlbmRpZgogCi0jaWYgVVNFKEdMSUIpICYmICFQTEFURk9STShFRkwpCisjaWYg
VVNFKEdMSUIpCiAjaW5jbHVkZSA8Z2xpYi5oPgogI2VuZGlmCiAKQEAgLTIyMiw3ICsyMTgsNyBA
QCBkb3VibGUgY3VycmVudFRpbWUoKQogCiAjZW5kaWYgLy8gVVNFKFFVRVJZX1BFUkZPUk1BTkNF
X0NPVU5URVIpCiAKLSNlbGlmIFVTRShHTElCKSAmJiAhUExBVEZPUk0oRUZMKQorI2VsaWYgVVNF
KEdMSUIpCiAKIC8vIE5vdGU6IEdUSyBvbiBXaW5kb3dzIHdpbGwgcGljayB1cCB0aGUgUExBVEZP
Uk0oV0lOKSBpbXBsZW1lbnRhdGlvbiBhYm92ZSB3aGljaCBwcm92aWRlcwogLy8gYmV0dGVyIGFj
Y3VyYWN5IGNvbXBhcmVkIHdpdGggV2luZG93cyBpbXBsZW1lbnRhdGlvbiBvZiBnX2dldF9jdXJy
ZW50X3RpbWU6CkBAIC0yMzUsMTMgKzIzMSw2IEBAIGRvdWJsZSBjdXJyZW50VGltZSgpCiAgICAg
cmV0dXJuIHN0YXRpY19jYXN0PGRvdWJsZT4obm93LnR2X3NlYykgKyBzdGF0aWNfY2FzdDxkb3Vi
bGU+KG5vdy50dl91c2VjIC8gMTAwMDAwMC4wKTsKIH0KIAotI2VsaWYgUExBVEZPUk0oRUZMKQot
Ci1kb3VibGUgY3VycmVudFRpbWUoKQotewotICAgIHJldHVybiBlY29yZV90aW1lX3VuaXhfZ2V0
KCk7Ci19Ci0KICNlbHNlCiAKIGRvdWJsZSBjdXJyZW50VGltZSgpCkBAIC0yNTMsMTQgKzI0Miw3
IEBAIGRvdWJsZSBjdXJyZW50VGltZSgpCiAKICNlbmRpZgogCi0jaWYgUExBVEZPUk0oRUZMKQot
Ci1kb3VibGUgbW9ub3RvbmljYWxseUluY3JlYXNpbmdUaW1lKCkKLXsKLSAgICByZXR1cm4gZWNv
cmVfdGltZV9nZXQoKTsKLX0KLQotI2VsaWYgVVNFKEdMSUIpCisjaWYgVVNFKEdMSUIpCiAKIGRv
dWJsZSBtb25vdG9uaWNhbGx5SW5jcmVhc2luZ1RpbWUoKQogewpkaWZmIC0tZ2l0IGEvU291cmNl
L1dURi93dGYvRGlzYWxsb3dDVHlwZS5oIGIvU291cmNlL1dURi93dGYvRGlzYWxsb3dDVHlwZS5o
CmluZGV4IGRjNmJjYWI4OGZhMjgwOWFhZjRkMDM2ZDk5NzA5M2RjOWU1ZmY5YTAuLjMwNTQ0ZTcy
OWZkNDEwYTkyY2M3MWJjZTRjZDc3MDFjY2E3MzVjNjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYv
d3RmL0Rpc2FsbG93Q1R5cGUuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9EaXNhbGxvd0NUeXBlLmgK
QEAgLTQwLDcgKzQwLDcgQEAKIC8vIGFyZSB1c2VkIGZyb20gd3ggaGVhZGVycy4gT24gR1RLKyBm
b3IgTWFjIG1hbnkgR1RLKyBmaWxlcyBpbmNsdWRlIDxsaWJpbnRsLmg+CiAvLyBvciA8Z2xpYi9n
aTE4bi1saWIuaD4sIHdoaWNoIGluIHR1cm4gaW5jbHVkZSA8eGxvY2FsZS9fY3R5cGUuaD4gd2hp
Y2ggdXNlcwogLy8gaXNhY2lpKCkuIAotI2lmICEoT1MoREFSV0lOKSAmJiBQTEFURk9STShHVEsp
KSAmJiAhUExBVEZPUk0oRUZMKSAmJiAhZGVmaW5lZChfTElCQ1BQX1ZFUlNJT04pICYmIGRlZmlu
ZWQoX19HTElCQ19fKQorI2lmICEoT1MoREFSV0lOKSAmJiBQTEFURk9STShHVEspKSAmJiAhZGVm
aW5lZChfTElCQ1BQX1ZFUlNJT04pICYmIGRlZmluZWQoX19HTElCQ19fKQogCiAjaW5jbHVkZSA8
Y3R5cGUuaD4KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvRmVhdHVyZURlZmluZXMuaCBi
L1NvdXJjZS9XVEYvd3RmL0ZlYXR1cmVEZWZpbmVzLmgKaW5kZXggMTAzZWExMDdlMDE5MDQ3YmI5
YTlkMmE1MWVlMTNkY2Y2NmFlOWFkOC4uODhhM2JkYTg4OGFhY2EyMzk0ZTU4NTlhNTI0NmI4NzZh
NDA1OGMxNyAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvRmVhdHVyZURlZmluZXMuaAorKysg
Yi9Tb3VyY2UvV1RGL3d0Zi9GZWF0dXJlRGVmaW5lcy5oCkBAIC0zMjIsMTAgKzMyMiw2IEBAIHRo
ZSBwdWJsaWMgaU9TIFNESy4gV2Ugd2lsbCBhbHNvIG5lZWQgdG8gdXBkYXRlIHRoZSBGZWF0dXJl
RGVmaW5lcy54Y2NvbmZpZyBmaWxlCiAKICNlbmRpZiAvKiBQTEFURk9STShXSU5fQ0FJUk8pICov
CiAKLS8qIC0tLS0tLS0tLSBFRkwgcG9ydCAoVW5peCkgLS0tLS0tLS0tICovCi0jaWYgUExBVEZP
Uk0oRUZMKQotI2VuZGlmIC8qIFBMQVRGT1JNKEVGTCkgKi8KLQogLyogLS0tLS0tLS0tIEd0ayBw
b3J0IChVbml4LCBXaW5kb3dzLCBNYWMpIC0tLS0tLS0tLSAqLwogI2lmIFBMQVRGT1JNKEdUSykK
ICNpZiAhZGVmaW5lZChFTkFCTEVfS0VZQk9BUkRfS0VZX0FUVFJJQlVURSkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XVEYvd3RmL01haW5UaHJlYWQuY3BwIGIvU291cmNlL1dURi93dGYvTWFpblRocmVh
ZC5jcHAKaW5kZXggNDcyYmVlMjdhZGY0ZDdlMGEyYmY2M2I4ZjUzZGYwYzgzNDQ1NTNhZS4uNDFh
ZDA2MjRjMWQ5N2I4YWUwMjRjZDM5YjRhYTc4NDRhMzhhZjk5YiAxMDA2NDQKLS0tIGEvU291cmNl
L1dURi93dGYvTWFpblRocmVhZC5jcHAKKysrIGIvU291cmNlL1dURi93dGYvTWFpblRocmVhZC5j
cHAKQEAgLTQxLDcgKzQxLDcgQEAKIG5hbWVzcGFjZSBXVEYgewogCiBzdGF0aWMgYm9vbCBjYWxs
YmFja3NQYXVzZWQ7IC8vIFRoaXMgZ2xvYmFsIHZhcmlhYmxlIGlzIG9ubHkgYWNjZXNzZWQgZnJv
bSBtYWluIHRocmVhZC4KLSNpZiAhT1MoREFSV0lOKSB8fCBQTEFURk9STShFRkwpIHx8IFBMQVRG
T1JNKEdUSykKKyNpZiAhT1MoREFSV0lOKSB8fCBQTEFURk9STShHVEspCiBzdGF0aWMgVGhyZWFk
SWRlbnRpZmllciBtYWluVGhyZWFkSWRlbnRpZmllcjsKICNlbmRpZgogCkBAIC01Myw3ICs1Myw3
IEBAIHN0YXRpYyBEZXF1ZTxGdW5jdGlvbjx2b2lkICgpPj4mIGZ1bmN0aW9uUXVldWUoKQogICAg
IHJldHVybiBmdW5jdGlvblF1ZXVlOwogfQogCi0jaWYgIU9TKERBUldJTikgfHwgUExBVEZPUk0o
RUZMKSB8fCBQTEFURk9STShHVEspCisjaWYgIU9TKERBUldJTikgfHwgUExBVEZPUk0oR1RLKQog
CiB2b2lkIGluaXRpYWxpemVNYWluVGhyZWFkKCkKIHsKQEAgLTE3Niw3ICsxNzYsNyBAQCB2b2lk
IHNldE1haW5UaHJlYWRDYWxsYmFja3NQYXVzZWQoYm9vbCBwYXVzZWQpCiAgICAgICAgIHNjaGVk
dWxlRGlzcGF0Y2hGdW5jdGlvbnNPbk1haW5UaHJlYWQoKTsKIH0KIAotI2lmICFPUyhEQVJXSU4p
IHx8IFBMQVRGT1JNKEVGTCkgfHwgUExBVEZPUk0oR1RLKQorI2lmICFPUyhEQVJXSU4pIHx8IFBM
QVRGT1JNKEdUSykKIGJvb2wgaXNNYWluVGhyZWFkKCkKIHsKICAgICByZXR1cm4gY3VycmVudFRo
cmVhZCgpID09IG1haW5UaHJlYWRJZGVudGlmaWVyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93
dGYvTWFpblRocmVhZC5oIGIvU291cmNlL1dURi93dGYvTWFpblRocmVhZC5oCmluZGV4IGVmMzg2
ZDQ1MDhlNjdlZDFlMjk4YjNmYWEwYzhiY2FmYTI0NDU0NzYuLmUwYTU4NWYzNjJjZWQ3ZTk5ZDk2
OTI3MWUxMmEzNjAxZTcxNjc3NjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL01haW5UaHJl
YWQuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9NYWluVGhyZWFkLmgKQEAgLTg2LDcgKzg2LDcgQEAg
dm9pZCBpbml0aWFsaXplTWFpblRocmVhZFBsYXRmb3JtKCk7CiB2b2lkIHNjaGVkdWxlRGlzcGF0
Y2hGdW5jdGlvbnNPbk1haW5UaHJlYWQoKTsKIHZvaWQgZGlzcGF0Y2hGdW5jdGlvbnNGcm9tTWFp
blRocmVhZCgpOwogCi0jaWYgT1MoREFSV0lOKSAmJiAhUExBVEZPUk0oRUZMKSAmJiAhUExBVEZP
Uk0oR1RLKQorI2lmIE9TKERBUldJTikgJiYgIVBMQVRGT1JNKEdUSykKICNpZiAhVVNFKFdFQl9U
SFJFQUQpCiAvLyBUaGlzIHZlcnNpb24gb2YgaW5pdGlhbGl6ZU1haW5UaHJlYWQgc2V0cyB1cCB0
aGUgbWFpbiB0aHJlYWQgYXMgY29ycmVzcG9uZGluZwogLy8gdG8gdGhlIHByb2Nlc3MncyBtYWlu
IHRocmVhZCwgYW5kIG5vdCBuZWNlc3NhcmlseSB0aGUgdGhyZWFkIHRoYXQgY2FsbHMgdGhpcwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvUGxhdGZvcm0uaCBiL1NvdXJjZS9XVEYvd3RmL1Bs
YXRmb3JtLmgKaW5kZXggYjliZGQzODNmNzI1ZDk5MzFlNWNkZTZiY2ZhOGIxM2FiMmJhYWRjOC4u
MTdkODdjMTBlZTIxY2JjMDU2MmFjMTQ0YmVkODBkMzc5YzFkY2RlMiAxMDA2NDQKLS0tIGEvU291
cmNlL1dURi93dGYvUGxhdGZvcm0uaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybS5oCkBA
IC00NDEsMTUgKzQ0MSwxMiBAQAogI2VuZGlmCiAKIC8qIEZJWE1FOiB0aGVzZSBhcmUgYWxsIG1p
eGVzIG9mIE9TLCBvcGVyYXRpbmcgZW52aXJvbm1lbnQgYW5kIHBvbGljeSBjaG9pY2VzLiAqLwot
LyogUExBVEZPUk0oRUZMKSAqLwogLyogUExBVEZPUk0oR1RLKSAqLwogLyogUExBVEZPUk0oTUFD
KSAqLwogLyogUExBVEZPUk0oSU9TKSAqLwogLyogUExBVEZPUk0oSU9TX1NJTVVMQVRPUikgKi8K
IC8qIFBMQVRGT1JNKFdJTikgKi8KLSNpZiBkZWZpbmVkKEJVSUxESU5HX0VGTF9fKQotI2RlZmlu
ZSBXVEZfUExBVEZPUk1fRUZMIDEKLSNlbGlmIGRlZmluZWQoQlVJTERJTkdfR1RLX18pCisjaWYg
ZGVmaW5lZChCVUlMRElOR19HVEtfXykKICNkZWZpbmUgV1RGX1BMQVRGT1JNX0dUSyAxCiAjZWxp
ZiBkZWZpbmVkKEJVSUxESU5HX0pTQ09OTFlfXykKIC8qIEpTQ09ubHkgZG9lcyBub3QgcHJvdmlk
ZSBQTEFURk9STSgpIG1hY3JvICovCkBAIC00OTUsNyArNDkyLDcgQEAKICNkZWZpbmUgVVNFX0NB
IDEKICNlbmRpZgogCi0jaWYgUExBVEZPUk0oR1RLKSB8fCBQTEFURk9STShFRkwpCisjaWYgUExB
VEZPUk0oR1RLKQogI2RlZmluZSBVU0VfQ0FJUk8gMQogI2RlZmluZSBVU0VfR0xJQiAxCiAjZGVm
aW5lIFVTRV9GUkVFVFlQRSAxCkBAIC01MDQsOSArNTAxLDcgQEAKICNkZWZpbmUgVVNFX1dFQlAg
MQogI2VuZGlmCiAKLSNpZiBQTEFURk9STShFRkwpCi0jZGVmaW5lIEdMSUJfVkVSU0lPTl9NSU5f
UkVRVUlSRUQgR0xJQl9WRVJTSU9OXzJfMzgKLSNlbGlmIFBMQVRGT1JNKEdUSykKKyNpZiBQTEFU
Rk9STShHVEspCiAjZGVmaW5lIEdMSUJfVkVSU0lPTl9NSU5fUkVRVUlSRUQgR0xJQl9WRVJTSU9O
XzJfMzYKICNlbmRpZgogCkBAIC02MTMsNyArNjA4LDcgQEAKICNlbmRpZgogCiAjaWYgIWRlZmlu
ZWQoSEFWRV9BQ0NFU1NJQklMSVRZKQotI2lmIFBMQVRGT1JNKENPQ09BKSB8fCBQTEFURk9STShX
SU4pIHx8IFBMQVRGT1JNKEdUSykgfHwgUExBVEZPUk0oRUZMKQorI2lmIFBMQVRGT1JNKENPQ09B
KSB8fCBQTEFURk9STShXSU4pIHx8IFBMQVRGT1JNKEdUSykKICNkZWZpbmUgSEFWRV9BQ0NFU1NJ
QklMSVRZIDEKICNlbmRpZgogI2VuZGlmIC8qICFkZWZpbmVkKEhBVkVfQUNDRVNTSUJJTElUWSkg
Ki8KQEAgLTcxNCw3ICs3MDksNyBAQAogLyogSWYgcG9zc2libGUsIHRyeSB0byBlbmFibGUgYSBk
aXNhc3NlbWJsZXIuIFRoaXMgaXMgb3B0aW9uYWwuIFdlIHByb2NlZWQgaW4gdHdvCiAgICBzdGVw
czogZmlyc3Qgd2UgdHJ5IHRvIGZpbmQgc29tZSBkaXNhc3NlbWJsZXIgdGhhdCB3ZSBjYW4gdXNl
LCBhbmQgdGhlbiB3ZQogICAgZGVjaWRlIGlmIHRoZSBoaWdoLWxldmVsIGRpc2Fzc2VtYmxlciBB
UEkgY2FuIGJlIGVuYWJsZWQuICovCi0jaWYgIWRlZmluZWQoVVNFX1VESVM4NikgJiYgRU5BQkxF
KEpJVCkgJiYgKChPUyhEQVJXSU4pICYmICFQTEFURk9STShFRkwpICYmICFQTEFURk9STShHVEsp
KSB8fCAoT1MoTElOVVgpICYmIChQTEFURk9STShFRkwpIHx8IFBMQVRGT1JNKEdUSykpKSkgXAor
I2lmICFkZWZpbmVkKFVTRV9VRElTODYpICYmIEVOQUJMRShKSVQpICYmICgoT1MoREFSV0lOKSAm
JiAhUExBVEZPUk0oR1RLKSkgfHwgKE9TKExJTlVYKSAmJiBQTEFURk9STShHVEspKSkgXAogICAg
ICYmIChDUFUoWDg2KSB8fCBDUFUoWDg2XzY0KSkKICNkZWZpbmUgVVNFX1VESVM4NiAxCiAjZW5k
aWYKQEAgLTc0NSw3ICs3NDAsNyBAQAogI2RlZmluZSBFTkFCTEVfREZHX0pJVCAxCiAjZW5kaWYK
IC8qIEVuYWJsZSB0aGUgREZHIEpJVCBvbiBBUk12Ny4gIE9ubHkgdGVzdGVkIG9uIGlPUyBhbmQg
UXQvR1RLKyBMaW51eC4gKi8KLSNpZiAoQ1BVKEFSTV9USFVNQjIpIHx8IENQVShBUk02NCkpICYm
IChQTEFURk9STShJT1MpIHx8IFBMQVRGT1JNKEdUSykgfHwgUExBVEZPUk0oRUZMKSkKKyNpZiAo
Q1BVKEFSTV9USFVNQjIpIHx8IENQVShBUk02NCkpICYmIChQTEFURk9STShJT1MpIHx8IFBMQVRG
T1JNKEdUSykpCiAjZGVmaW5lIEVOQUJMRV9ERkdfSklUIDEKICNlbmRpZgogLyogRW5hYmxlIHRo
ZSBERkcgSklUIG9uIEFSTSBhbmQgTUlQUy4gKi8KQEAgLTc4Miw3ICs3NzcsNyBAQAogICogSW4g
Y29uZmlndXJhdGlvbnMgb3RoZXIgdGhhbiBXaW5kb3dzIGFuZCBEYXJ3aW4sIGJlY2F1c2UgbGF5
b3V0IG9mIG1jb250ZXh0X3QgZGVwZW5kcyBvbiBzdGFuZGFyZCBsaWJyYXJpZXMgKGxpa2UgZ2xp
YmMpLAogICogc2FtcGxpbmcgcHJvZmlsZXIgaXMgZW5hYmxlZCBpZiBXZWJLaXQgdXNlcyBwdGhy
ZWFkcyBhbmQgZ2xpYmMuICovCiAjaWYgIWRlZmluZWQoRU5BQkxFX1NBTVBMSU5HX1BST0ZJTEVS
KQotI2lmIChPUyhEQVJXSU4pIHx8IE9TKFdJTkRPV1MpIHx8IFBMQVRGT1JNKEdUSykgfHwgUExB
VEZPUk0oRUZMKSkgJiYgRU5BQkxFKEpJVCkKKyNpZiAoT1MoREFSV0lOKSB8fCBPUyhXSU5ET1dT
KSB8fCBQTEFURk9STShHVEspICYmIEVOQUJMRShKSVQpCiAjZGVmaW5lIEVOQUJMRV9TQU1QTElO
R19QUk9GSUxFUiAxCiAjZWxzZQogI2RlZmluZSBFTkFCTEVfU0FNUExJTkdfUFJPRklMRVIgMApA
QCAtOTI2LDcgKzkyMSw3IEBACiAKIC8qIENTUyBTZWxlY3RvciBKSVQgQ29tcGlsZXIgKi8KICNp
ZiAhZGVmaW5lZChFTkFCTEVfQ1NTX1NFTEVDVE9SX0pJVCkKLSNpZiAoQ1BVKFg4Nl82NCkgfHwg
Q1BVKEFSTTY0KSB8fCAoQ1BVKEFSTV9USFVNQjIpICYmIFBMQVRGT1JNKElPUykpKSAmJiBFTkFC
TEUoSklUKSAmJiAoT1MoREFSV0lOKSB8fCBQTEFURk9STShHVEspIHx8IFBMQVRGT1JNKEVGTCkp
CisjaWYgKENQVShYODZfNjQpIHx8IENQVShBUk02NCkgfHwgKENQVShBUk1fVEhVTUIyKSAmJiBQ
TEFURk9STShJT1MpKSkgJiYgRU5BQkxFKEpJVCkgJiYgKE9TKERBUldJTikgfHwgUExBVEZPUk0o
R1RLKQogI2RlZmluZSBFTkFCTEVfQ1NTX1NFTEVDVE9SX0pJVCAxCiAjZWxzZQogI2RlZmluZSBF
TkFCTEVfQ1NTX1NFTEVDVE9SX0pJVCAwCkBAIC05ODEsMTEgKzk3Niw3IEBACiAjaW5jbHVkZSA8
d3RmL2dsaWIvR1R5cGVkZWZzLmg+CiAjZW5kaWYKIAotI2lmIFBMQVRGT1JNKEVGTCkKLSNpbmNs
dWRlIDx3dGYvZWZsL0VmbFR5cGVkZWZzLmg+Ci0jZW5kaWYKLQotLyogRklYTUU6IFRoaXMgZGVm
aW5lIHdvbid0IGJlIG5lZWRlZCBvbmNlICMyNzU1MSBpcyBmdWxseSBsYW5kZWQuIEhvd2V2ZXIs
IAorLyogRklYTUU6IFRoaXMgZGVmaW5lIHdvbid0IGJlIG5lZWRlZCBvbmNlICMyNzU1MSBpcyBm
dWxseSBsYW5kZWQuIEhvd2V2ZXIsCiAgICBzaW5jZSBtb3N0IHBvcnRzIHRyeSB0byBzdXBwb3J0
IHN1Yi1wcm9qZWN0IGluZGVwZW5kZW5jZSwgYWRkaW5nIG5ldyBoZWFkZXJzCiAgICB0byBXVEYg
Y2F1c2VzIG1hbnkgcG9ydHMgdG8gYnJlYWssIGFuZCBzbyB0aGlzIHdheSB3ZSBjYW4gYWRkcmVz
cyB0aGUgYnVpbGQKICAgIGJyZWFrYWdlcyBvbmUgcG9ydCBhdCBhIHRpbWUuICovCkBAIC05OTcs
NyArOTg4LDcgQEAKICNkZWZpbmUgVVNFX0VYUE9SVF9NQUNST1NfRk9SX1RFU1RJTkcgMQogI2Vu
ZGlmCiAKLSNpZiBQTEFURk9STShHVEspIHx8IFBMQVRGT1JNKEVGTCkKKyNpZiBQTEFURk9STShH
VEspCiAjZGVmaW5lIFVTRV9VTklYX0RPTUFJTl9TT0NLRVRTIDEKICNlbmRpZgogCkBAIC0xMDc3
LDcgKzEwNjgsNyBAQAogCiAjZGVmaW5lIFVTRV9HUkFNTUFSX0NIRUNLSU5HIDEKIAotI2lmIFBM
QVRGT1JNKENPQ09BKSB8fCBQTEFURk9STShFRkwpIHx8IFBMQVRGT1JNKEdUSykKKyNpZiBQTEFU
Rk9STShDT0NPQSkgfHwgUExBVEZPUk0oR1RLKQogI2RlZmluZSBVU0VfVU5JRklFRF9URVhUX0NI
RUNLSU5HIDEKICNlbmRpZgogI2lmIFBMQVRGT1JNKE1BQykKQEAgLTExMTQsNyArMTEwNSw3IEBA
CiAjZGVmaW5lIEVOQUJMRV9SRVNPVVJDRV9VU0FHRSAxCiAjZW5kaWYKIAotI2lmIFBMQVRGT1JN
KEdUSykgfHwgUExBVEZPUk0oRUZMKQorI2lmIFBMQVRGT1JNKEdUSykKICN1bmRlZiBFTkFCTEVf
T1BFTlRZUEVfVkVSVElDQUwKICNkZWZpbmUgRU5BQkxFX09QRU5UWVBFX1ZFUlRJQ0FMIDEKICNk
ZWZpbmUgRU5BQkxFX0NTUzNfVEVYVF9ERUNPUkFUSU9OX1NLSVBfSU5LIDEKQEAgLTExODQsMTgg
KzExNzUsMTMgQEAKIC8qIFVzZSBXaW5kb3dzIG1lc3NhZ2UgcHVtcCBhYnN0cmFjdGlvbi4KICAq
IEV2ZW4gaWYgdGhlIHBvcnQgaXMgQXBwbGVXaW4sIHdlIHVzZSB0aGUgV2luZG93cyBtZXNzYWdl
IHB1bXAgc3lzdGVtIGZvciB0aGUgZXZlbnQgbG9vcCwKICAqIHNvIHRoYXQgVVNFKFdJTkRPV1Nf
RVZFTlRfTE9PUCkgJiYgVVNFKENGKSBjYW4gYmUgdHJ1ZS4KLSAqIEFuZCBQTEFURk9STShXSU4p
LCBQTEFURk9STShFRkwpIGFuZCBQTEFURk9STShHVEspIGFyZSBleGNsdXNpdmUuIElmIHRoZSBw
b3J0IGlzIEdUSywKKyAqIEFuZCBQTEFURk9STShXSU4pIGFuZCBQTEFURk9STShHVEspIGFyZSBl
eGNsdXNpdmUuIElmIHRoZSBwb3J0IGlzIEdUSywKICAqIFBMQVRGT1JNKFdJTikgc2hvdWxkIGJl
IGZhbHNlLiBBbmQgaW4gdGhhdCBjYXNlLCBHTGliJ3MgZXZlbnQgbG9vcCBpcyB1c2VkLgogICov
CiAjZGVmaW5lIFVTRV9XSU5ET1dTX0VWRU5UX0xPT1AgMQogI2VsaWYgUExBVEZPUk0oQ09DT0Ep
CiAvKiBPUyBYIGFuZCBJT1MuIFVzZSBDb3JlRm91bmRhdGlvbiAmIEdDRCBhYnN0cmFjdGlvbi4g
Ki8KICNkZWZpbmUgVVNFX0NPQ09BX0VWRU5UX0xPT1AgMQotI2VsaWYgUExBVEZPUk0oRUZMKQot
LyogRUZMIHBvcnQgdXNlcyBHTGliLiBCdXQgaXQgdXNlcyBpdHMgb3duIGV2ZW50IGxvb3AgYWJz
dHJhY3Rpb24uCi0gKiBUaHVzLCBVU0UoRUZMX0VWRU5UX0xPT1ApICYmIFVTRShHTElCKSBjYW4g
YmUgdHJ1ZS4KLSAqLwotI2RlZmluZSBVU0VfRUZMX0VWRU5UX0xPT1AgMQogI2VsaWYgVVNFKEdM
SUIpCiAvKiBVc2UgR0xpYidzIGV2ZW50IGxvb3AgYWJzdHJhY3Rpb24uIFByaW1hcmlseSBHVEsg
cG9ydCB1c2VzIGl0LiAqLwogI2RlZmluZSBVU0VfR0xJQl9FVkVOVF9MT09QIDEKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XVEYvd3RmL1J1bkxvb3AuaCBiL1NvdXJjZS9XVEYvd3RmL1J1bkxvb3AuaApp
bmRleCBhYTUwM2Y0NmNlZmY3NDliMTgzYzY3N2VhMDU5MmUxMDhlODJhMzc3Li5lOTI0NTI3OTVi
NGI1MTkwMDM0OGQ2MzY3YmQ4YjliMzY4NTAyNWU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0
Zi9SdW5Mb29wLmgKKysrIGIvU291cmNlL1dURi93dGYvUnVuTG9vcC5oCkBAIC00MCwxMSArNDAs
NiBAQAogI2luY2x1ZGUgPHd0Zi9nbGliL0dSZWZQdHIuaD4KICNlbmRpZgogCi0jaWYgVVNFKEVG
TF9FVkVOVF9MT09QKQotI2luY2x1ZGUgPEVjb3JlLmg+Ci0jaW5jbHVkZSA8d3RmL2VmbC9Vbmlx
dWVQdHJFZmwuaD4KLSNlbmRpZgotCiBuYW1lc3BhY2UgV1RGIHsKIAogY2xhc3MgUnVuTG9vcCA6
IHB1YmxpYyBGdW5jdGlvbkRpc3BhdGNoZXIgewpAQCAtMTE0LDEwICsxMDksNiBAQCBwdWJsaWM6
CiAjZWxpZiBVU0UoQ09DT0FfRVZFTlRfTE9PUCkKICAgICAgICAgc3RhdGljIHZvaWQgdGltZXJG
aXJlZChDRlJ1bkxvb3BUaW1lclJlZiwgdm9pZCopOwogICAgICAgICBSZXRhaW5QdHI8Q0ZSdW5M
b29wVGltZXJSZWY+IG1fdGltZXI7Ci0jZWxpZiBVU0UoRUZMX0VWRU5UX0xPT1ApCi0gICAgICAg
IHN0YXRpYyBib29sIHRpbWVyRmlyZWQodm9pZCogZGF0YSk7Ci0gICAgICAgIEVjb3JlX1RpbWVy
KiBtX3RpbWVyOwotICAgICAgICBib29sIG1faXNSZXBlYXRpbmc7CiAjZWxpZiBVU0UoR0xJQl9F
VkVOVF9MT09QKQogICAgICAgICB2b2lkIHVwZGF0ZVJlYWR5VGltZSgpOwogICAgICAgICBHUmVm
UHRyPEdTb3VyY2U+IG1fc291cmNlOwpAQCAtMTcwLDE0ICsxNjEsNiBAQCBwcml2YXRlOgogICAg
IHN0YXRpYyB2b2lkIHBlcmZvcm1Xb3JrKHZvaWQqKTsKICAgICBSZXRhaW5QdHI8Q0ZSdW5Mb29w
UmVmPiBtX3J1bkxvb3A7CiAgICAgUmV0YWluUHRyPENGUnVuTG9vcFNvdXJjZVJlZj4gbV9ydW5M
b29wU291cmNlOwotI2VsaWYgVVNFKEVGTF9FVkVOVF9MT09QKQotICAgIE11dGV4IG1fcGlwZUxv
Y2s7Ci0gICAgRWZsVW5pcXVlUHRyPEVjb3JlX1BpcGU+IG1fcGlwZTsKLQotICAgIE11dGV4IG1f
d2FrZVVwRXZlbnRSZXF1ZXN0ZWRMb2NrOwotICAgIGJvb2wgbV93YWtlVXBFdmVudFJlcXVlc3Rl
ZDsKLQotICAgIHN0YXRpYyB2b2lkIHdha2VVcEV2ZW50KHZvaWQqIGRhdGEsIHZvaWQqLCB1bnNp
Z25lZCk7CiAjZWxpZiBVU0UoR0xJQl9FVkVOVF9MT09QKQogICAgIEdSZWZQdHI8R01haW5Db250
ZXh0PiBtX21haW5Db250ZXh0OwogICAgIFZlY3RvcjxHUmVmUHRyPEdNYWluTG9vcD4+IG1fbWFp
bkxvb3BzOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvV29ya1F1ZXVlLmggYi9Tb3VyY2Uv
V1RGL3d0Zi9Xb3JrUXVldWUuaAppbmRleCBkOTE4NGI0ODI3YmYxMGJhMzhhNDgxNDgwNWIyZjMz
NjQ2ZDc2ZTAzLi40MjljMzhkODYzMDcwMDg4YTU1MjkxMjk2OTdhNzg4OWQyMmVkNWEwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9Xb3JrUXVldWUuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9X
b3JrUXVldWUuaApAQCAtMzgsMTAgKzM4LDYgQEAKICNpbmNsdWRlIDxkaXNwYXRjaC9kaXNwYXRj
aC5oPgogI2VuZGlmCiAKLSNpZiBVU0UoRUZMX0VWRU5UX0xPT1ApCi0jaW5jbHVkZSA8RGlzcGF0
Y2hRdWV1ZUVmbC5oPgotI2VuZGlmCi0KICNpZiBVU0UoV0lORE9XU19FVkVOVF9MT09QKQogI2lu
Y2x1ZGUgPHd0Zi9WZWN0b3IuaD4KICNlbmRpZgpAQCAtNzUsMTAgKzcxLDcgQEAgcHVibGljOgog
CiAgICAgV1RGX0VYUE9SVF9QUklWQVRFIHN0YXRpYyB2b2lkIGNvbmN1cnJlbnRBcHBseShzaXpl
X3QgaXRlcmF0aW9ucywgY29uc3Qgc3RkOjpmdW5jdGlvbjx2b2lkIChzaXplX3QgaW5kZXgpPiYp
OwogCi0jaWYgVVNFKEVGTF9FVkVOVF9MT09QKQotICAgIHZvaWQgcmVnaXN0ZXJTb2NrZXRFdmVu
dEhhbmRsZXIoaW50LCBzdGQ6OmZ1bmN0aW9uPHZvaWQgKCk+KTsKLSAgICB2b2lkIHVucmVnaXN0
ZXJTb2NrZXRFdmVudEhhbmRsZXIoaW50KTsKLSNlbGlmIFVTRShDT0NPQV9FVkVOVF9MT09QKQor
I2lmIFVTRShDT0NPQV9FVkVOVF9MT09QKQogICAgIGRpc3BhdGNoX3F1ZXVlX3QgZGlzcGF0Y2hR
dWV1ZSgpIGNvbnN0IHsgcmV0dXJuIG1fZGlzcGF0Y2hRdWV1ZTsgfQogI2VsaWYgVVNFKEdMSUJf
RVZFTlRfTE9PUCkgfHwgVVNFKEdFTkVSSUNfRVZFTlRfTE9PUCkKICAgICBSdW5Mb29wJiBydW5M
b29wKCkgY29uc3QgeyByZXR1cm4gKm1fcnVuTG9vcDsgfQpAQCAtOTksOSArOTIsNyBAQCBwcml2
YXRlOgogICAgIHZvaWQgcGVyZm9ybVdvcmtPblJlZ2lzdGVyZWRXb3JrVGhyZWFkKCk7CiAjZW5k
aWYKIAotI2lmIFVTRShFRkxfRVZFTlRfTE9PUCkKLSAgICBSZWZQdHI8RGlzcGF0Y2hRdWV1ZT4g
bV9kaXNwYXRjaFF1ZXVlOwotI2VsaWYgVVNFKENPQ09BX0VWRU5UX0xPT1ApCisjaWYgVVNFKENP
Q09BX0VWRU5UX0xPT1ApCiAgICAgc3RhdGljIHZvaWQgZXhlY3V0ZUZ1bmN0aW9uKHZvaWQqKTsK
ICAgICBkaXNwYXRjaF9xdWV1ZV90IG1fZGlzcGF0Y2hRdWV1ZTsKICNlbGlmIFVTRShXSU5ET1dT
X0VWRU5UX0xPT1ApCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9lZmwvRGlzcGF0Y2hRdWV1
ZUVmbC5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi9lZmwvRGlzcGF0Y2hRdWV1ZUVmbC5jcHAKZGVsZXRl
ZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGI0YWQyYmRjNDM4ZjlkOTQ1N2UzZjdmYjQ5MjI0YzY4
MTU5NzZkYWYuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEv
U291cmNlL1dURi93dGYvZWZsL0Rpc3BhdGNoUXVldWVFZmwuY3BwCisrKyAvZGV2L251bGwKQEAg
LTEsMjUzICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMgU2Ftc3VuZyBFbGVjdHJv
bmljcy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAot
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycn
Ci0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwot
ICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICog
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5o
IgotI2luY2x1ZGUgIkRpc3BhdGNoUXVldWVFZmwuaCIKLQotI2luY2x1ZGUgPERpc3BhdGNoUXVl
dWVXb3JrSXRlbUVmbC5oPgotI2luY2x1ZGUgPHN5cy90aW1lcmZkLmg+Ci0jaW5jbHVkZSA8dW5p
c3RkLmg+Ci0jaW5jbHVkZSA8d3RmL0Fzc2VydGlvbnMuaD4KLSNpbmNsdWRlIDx3dGYvQ3VycmVu
dFRpbWUuaD4KLSNpbmNsdWRlIDx3dGYvVGhyZWFkaW5nLmg+Ci0KLXN0YXRpYyBjb25zdCBpbnQg
bWljcm9TZWNvbmRzUGVyU2Vjb25kID0gMTAwMDAwMDsKLXN0YXRpYyBjb25zdCBpbnQgbmFub1Nl
Y29uZHNQZXJTZWNvbmQgPSAxMDAwMDAwMDAwOwotc3RhdGljIGNvbnN0IGludCBpbnZhbGlkU29j
a2V0RGVzY3JpcHRvciA9IC0xOwotc3RhdGljIGNvbnN0IGNoYXIgd2FrZVVwVGhyZWFkTWVzc2Fn
ZSA9ICdXJzsKLQotY2xhc3MgRGlzcGF0Y2hRdWV1ZTo6VGhyZWFkQ29udGV4dCB7Ci1wdWJsaWM6
Ci0gICAgc3RhdGljIHZvaWQgc3RhcnQoY29uc3QgY2hhciogbmFtZSwgUGFzc1JlZlB0cjxEaXNw
YXRjaFF1ZXVlPiBkaXNwYXRjaFF1ZXVlKQotICAgIHsKLSAgICAgICAgLy8gVGhlIERpc3BhdGNo
UXVldWVUaHJlYWRDb250ZXh0IGluc3RhbmNlIHdpbGwgYmUgcGFzc2VkIHRvIHRoZSB0aHJlYWQg
ZnVuY3Rpb24gYW5kIGRlbGV0ZWQgaW4gaXQuCi0gICAgICAgIGRldGFjaFRocmVhZChjcmVhdGVU
aHJlYWQocmVpbnRlcnByZXRfY2FzdDxXVEY6OlRocmVhZEZ1bmN0aW9uPigmVGhyZWFkQ29udGV4
dDo6ZnVuY3Rpb24pLCBuZXcgVGhyZWFkQ29udGV4dChkaXNwYXRjaFF1ZXVlKSwgbmFtZSkpOwot
ICAgIH0KLQotcHJpdmF0ZToKLSAgICBUaHJlYWRDb250ZXh0KFBhc3NSZWZQdHI8RGlzcGF0Y2hR
dWV1ZT4gZGlzcGF0Y2hRdWV1ZSkKLSAgICAgICAgOiBtX2Rpc3BhdGNoUXVldWUoZGlzcGF0Y2hR
dWV1ZSkKLSAgICB7Ci0gICAgfQotCi0gICAgc3RhdGljIHZvaWQqIGZ1bmN0aW9uKFRocmVhZENv
bnRleHQqIHRocmVhZENvbnRleHQpCi0gICAgewotICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8VGhy
ZWFkQ29udGV4dD4odGhyZWFkQ29udGV4dCktPm1fZGlzcGF0Y2hRdWV1ZS0+ZGlzcGF0Y2hRdWV1
ZVRocmVhZCgpOwotICAgICAgICByZXR1cm4gMDsKLSAgICB9Ci0KLSAgICBSZWZQdHI8RGlzcGF0
Y2hRdWV1ZT4gbV9kaXNwYXRjaFF1ZXVlOwotfTsKLQotUGFzc1JlZlB0cjxEaXNwYXRjaFF1ZXVl
PiBEaXNwYXRjaFF1ZXVlOjpjcmVhdGUoY29uc3QgY2hhciogbmFtZSkKLXsKLSAgICBSZWZQdHI8
RGlzcGF0Y2hRdWV1ZT4gZGlzcGF0Y2hRdWV1ZSA9IGFkb3B0UmVmPERpc3BhdGNoUXVldWU+KG5l
dyBEaXNwYXRjaFF1ZXVlKCkpOwotCi0gICAgVGhyZWFkQ29udGV4dDo6c3RhcnQobmFtZSwgZGlz
cGF0Y2hRdWV1ZSk7Ci0KLSAgICByZXR1cm4gZGlzcGF0Y2hRdWV1ZS5yZWxlYXNlKCk7Ci19Ci0K
LURpc3BhdGNoUXVldWU6OkRpc3BhdGNoUXVldWUoKQotICAgIDogbV9pc1RocmVhZFJ1bm5pbmco
dHJ1ZSkKLXsKLSAgICBpbnQgZmRzWzJdOwotICAgIGlmIChwaXBlKGZkcykpCi0gICAgICAgIEFT
U0VSVF9OT1RfUkVBQ0hFRCgpOwotCi0gICAgbV9yZWFkRnJvbVBpcGVEZXNjcmlwdG9yID0gZmRz
WzBdOwotICAgIG1fd3JpdGVUb1BpcGVEZXNjcmlwdG9yID0gZmRzWzFdOwotICAgIEZEX1pFUk8o
Jm1fZmlsZURlc2NyaXB0b3JTZXQpOwotICAgIEZEX1NFVChtX3JlYWRGcm9tUGlwZURlc2NyaXB0
b3IsICZtX2ZpbGVEZXNjcmlwdG9yU2V0KTsKLSAgICBtX21heEZpbGVEZXNjcmlwdG9yID0gbV9y
ZWFkRnJvbVBpcGVEZXNjcmlwdG9yOwotCi0gICAgbV9zb2NrZXREZXNjcmlwdG9yID0gaW52YWxp
ZFNvY2tldERlc2NyaXB0b3I7Ci19Ci0KLURpc3BhdGNoUXVldWU6On5EaXNwYXRjaFF1ZXVlKCkK
LXsKLSAgICBjbG9zZShtX3JlYWRGcm9tUGlwZURlc2NyaXB0b3IpOwotICAgIGNsb3NlKG1fd3Jp
dGVUb1BpcGVEZXNjcmlwdG9yKTsKLX0KLQotdm9pZCBEaXNwYXRjaFF1ZXVlOjpkaXNwYXRjaChz
dGQ6OnVuaXF1ZV9wdHI8V29ya0l0ZW0+IGl0ZW0pCi17Ci0gICAgewotICAgICAgICBNdXRleExv
Y2tlciBsb2NrZXIobV93b3JrSXRlbXNMb2NrKTsKLSAgICAgICAgbV93b3JrSXRlbXMuYXBwZW5k
KFdURk1vdmUoaXRlbSkpOwotICAgIH0KLQotICAgIHdha2VVcFRocmVhZCgpOwotfQotCi12b2lk
IERpc3BhdGNoUXVldWU6OmRpc3BhdGNoKHN0ZDo6dW5pcXVlX3B0cjxUaW1lcldvcmtJdGVtPiBp
dGVtKQotewotICAgIGluc2VydFRpbWVyV29ya0l0ZW0oV1RGTW92ZShpdGVtKSk7Ci0gICAgd2Fr
ZVVwVGhyZWFkKCk7Ci19Ci0KLXZvaWQgRGlzcGF0Y2hRdWV1ZTo6c3RvcFRocmVhZCgpCi17Ci0g
ICAgQVNTRVJUKG1fc29ja2V0RGVzY3JpcHRvciA9PSBpbnZhbGlkU29ja2V0RGVzY3JpcHRvcik7
Ci0KLSAgICBtX2lzVGhyZWFkUnVubmluZyA9IGZhbHNlOwotICAgIHdha2VVcFRocmVhZCgpOwot
fQotCi12b2lkIERpc3BhdGNoUXVldWU6OnNldFNvY2tldEV2ZW50SGFuZGxlcihpbnQgZmlsZURl
c2NyaXB0b3IsIHN0ZDo6ZnVuY3Rpb248dm9pZCAoKT4gZnVuY3Rpb24pCi17Ci0gICAgQVNTRVJU
KG1fc29ja2V0RGVzY3JpcHRvciA9PSBpbnZhbGlkU29ja2V0RGVzY3JpcHRvcik7Ci0KLSAgICBt
X3NvY2tldERlc2NyaXB0b3IgPSBmaWxlRGVzY3JpcHRvcjsKLSAgICBtX3NvY2tldEV2ZW50SGFu
ZGxlciA9IFdURk1vdmUoZnVuY3Rpb24pOwotCi0gICAgaWYgKGZpbGVEZXNjcmlwdG9yID4gbV9t
YXhGaWxlRGVzY3JpcHRvcikKLSAgICAgICAgbV9tYXhGaWxlRGVzY3JpcHRvciA9IGZpbGVEZXNj
cmlwdG9yOwotICAgIEZEX1NFVChmaWxlRGVzY3JpcHRvciwgJm1fZmlsZURlc2NyaXB0b3JTZXQp
OwotfQotCi12b2lkIERpc3BhdGNoUXVldWU6OmNsZWFyU29ja2V0RXZlbnRIYW5kbGVyKCkKLXsK
LSAgICBBU1NFUlQobV9zb2NrZXREZXNjcmlwdG9yICE9IGludmFsaWRTb2NrZXREZXNjcmlwdG9y
KTsKLQotICAgIGlmIChtX3NvY2tldERlc2NyaXB0b3IgPT0gbV9tYXhGaWxlRGVzY3JpcHRvcikK
LSAgICAgICAgbV9tYXhGaWxlRGVzY3JpcHRvciA9IG1fcmVhZEZyb21QaXBlRGVzY3JpcHRvcjsK
LQotICAgIEZEX0NMUihtX3NvY2tldERlc2NyaXB0b3IsICZtX2ZpbGVEZXNjcmlwdG9yU2V0KTsK
LQotICAgIG1fc29ja2V0RGVzY3JpcHRvciA9IGludmFsaWRTb2NrZXREZXNjcmlwdG9yOwotfQot
Ci12b2lkIERpc3BhdGNoUXVldWU6OnBlcmZvcm1Xb3JrKCkKLXsKLSAgICB3aGlsZSAodHJ1ZSkg
ewotICAgICAgICBWZWN0b3I8c3RkOjp1bmlxdWVfcHRyPFdvcmtJdGVtPj4gd29ya0l0ZW1zOwot
Ci0gICAgICAgIHsKLSAgICAgICAgICAgIE11dGV4TG9ja2VyIGxvY2tlcihtX3dvcmtJdGVtc0xv
Y2spOwotICAgICAgICAgICAgaWYgKG1fd29ya0l0ZW1zLmlzRW1wdHkoKSkKLSAgICAgICAgICAg
ICAgICByZXR1cm47Ci0KLSAgICAgICAgICAgIG1fd29ya0l0ZW1zLnN3YXAod29ya0l0ZW1zKTsK
LSAgICAgICAgfQotCi0gICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgd29ya0l0ZW1zLnNp
emUoKTsgKytpKQotICAgICAgICAgICAgd29ya0l0ZW1zW2ldLT5kaXNwYXRjaCgpOwotICAgIH0K
LX0KLQotdm9pZCBEaXNwYXRjaFF1ZXVlOjpwZXJmb3JtVGltZXJXb3JrKCkKLXsKLSAgICBWZWN0
b3I8c3RkOjp1bmlxdWVfcHRyPFRpbWVyV29ya0l0ZW0+PiB0aW1lcldvcmtJdGVtczsKLQotICAg
IHsKLSAgICAgICAgLy8gUHJvdGVjdHMgbV90aW1lcldvcmtJdGVtcy4KLSAgICAgICAgTXV0ZXhM
b2NrZXIgbG9ja2VyKG1fdGltZXJXb3JrSXRlbXNMb2NrKTsKLSAgICAgICAgaWYgKG1fdGltZXJX
b3JrSXRlbXMuaXNFbXB0eSgpKQotICAgICAgICAgICAgcmV0dXJuOwotCi0gICAgICAgIC8vIENv
cGllcyBhbGwgdGhlIHRpbWVyIHdvcmsgaXRlbXMgaW4gbV90aW1lcldvcmtJdGVtcyB0byBsb2Nh
bCB2ZWN0b3IuCi0gICAgICAgIG1fdGltZXJXb3JrSXRlbXMuc3dhcCh0aW1lcldvcmtJdGVtcyk7
Ci0gICAgfQotCi0gICAgZG91YmxlIGN1cnJlbnRUaW1lTmFub1NlY29uZHMgPSBtb25vdG9uaWNh
bGx5SW5jcmVhc2luZ1RpbWUoKSAqIG5hbm9TZWNvbmRzUGVyU2Vjb25kOwotCi0gICAgZm9yIChz
aXplX3QgaSA9IDA7IGkgPCB0aW1lcldvcmtJdGVtcy5zaXplKCk7ICsraSkgewotICAgICAgICBp
ZiAoIXRpbWVyV29ya0l0ZW1zW2ldLT5oYXNFeHBpcmVkKGN1cnJlbnRUaW1lTmFub1NlY29uZHMp
KSB7Ci0gICAgICAgICAgICBpbnNlcnRUaW1lcldvcmtJdGVtKFdURk1vdmUodGltZXJXb3JrSXRl
bXNbaV0pKTsKLSAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICB9Ci0KLSAgICAgICAgLy8g
SWYgYSB0aW1lciB3b3JrIGl0ZW0gaGFzIGV4cGlyZWQsIGRpc3BhdGNoIHRoZSBmdW5jdGlvbiBv
ZiB0aGUgd29yayBpdGVtLgotICAgICAgICB0aW1lcldvcmtJdGVtc1tpXS0+ZGlzcGF0Y2goKTsK
LSAgICB9Ci19Ci0KLXZvaWQgRGlzcGF0Y2hRdWV1ZTo6cGVyZm9ybUZpbGVEZXNjcmlwdG9yV29y
aygpCi17Ci0gICAgZmRfc2V0IHJlYWRGaWxlRGVzY3JpcHRvclNldCA9IG1fZmlsZURlc2NyaXB0
b3JTZXQ7Ci0KLSAgICBpZiAoc2VsZWN0KG1fbWF4RmlsZURlc2NyaXB0b3IgKyAxLCAmcmVhZEZp
bGVEZXNjcmlwdG9yU2V0LCAwLCAwLCBnZXROZXh0VGltZU91dCgpKSA+PSAwKSB7Ci0gICAgICAg
IGlmIChGRF9JU1NFVChtX3JlYWRGcm9tUGlwZURlc2NyaXB0b3IsICZyZWFkRmlsZURlc2NyaXB0
b3JTZXQpKSB7Ci0gICAgICAgICAgICBjaGFyIG1lc3NhZ2U7Ci0gICAgICAgICAgICBpZiAocmVh
ZChtX3JlYWRGcm9tUGlwZURlc2NyaXB0b3IsICZtZXNzYWdlLCAxKSA9PSAtMSkKLSAgICAgICAg
ICAgICAgICBMT0dfRVJST1IoIkZhaWxlZCB0byByZWFkIGZyb20gRGlzcGF0Y2hRdWV1ZSBUaHJl
YWQgcGlwZSIpOwotCi0gICAgICAgICAgICBBU1NFUlQobWVzc2FnZSA9PSB3YWtlVXBUaHJlYWRN
ZXNzYWdlKTsKLSAgICAgICAgfQotCi0gICAgICAgIGlmIChtX3NvY2tldERlc2NyaXB0b3IgIT0g
aW52YWxpZFNvY2tldERlc2NyaXB0b3IgJiYgRkRfSVNTRVQobV9zb2NrZXREZXNjcmlwdG9yLCAm
cmVhZEZpbGVEZXNjcmlwdG9yU2V0KSkKLSAgICAgICAgICAgIG1fc29ja2V0RXZlbnRIYW5kbGVy
KCk7Ci0gICAgfQotfQotCi12b2lkIERpc3BhdGNoUXVldWU6Omluc2VydFRpbWVyV29ya0l0ZW0o
c3RkOjp1bmlxdWVfcHRyPFRpbWVyV29ya0l0ZW0+IGl0ZW0pCi17Ci0gICAgQVNTRVJUKGl0ZW0p
OwotCi0gICAgc2l6ZV90IHBvc2l0aW9uID0gMDsKLQotICAgIE11dGV4TG9ja2VyIGxvY2tlciht
X3RpbWVyV29ya0l0ZW1zTG9jayk7Ci0gICAgLy8gVGhlIGl0ZW1zIHNob3VsZCBiZSBvcmRlcmVk
IGJ5IGV4cGlyZSB0aW1lLgotICAgIGZvciAoOyBwb3NpdGlvbiA8IG1fdGltZXJXb3JrSXRlbXMu
c2l6ZSgpOyArK3Bvc2l0aW9uKQotICAgICAgICBpZiAoaXRlbS0+ZXhwaXJhdGlvblRpbWVOYW5v
U2Vjb25kcygpIDwgbV90aW1lcldvcmtJdGVtc1twb3NpdGlvbl0tPmV4cGlyYXRpb25UaW1lTmFu
b1NlY29uZHMoKSkKLSAgICAgICAgICAgIGJyZWFrOwotCi0gICAgbV90aW1lcldvcmtJdGVtcy5p
bnNlcnQocG9zaXRpb24sIFdURk1vdmUoaXRlbSkpOwotfQotCi12b2lkIERpc3BhdGNoUXVldWU6
OmRpc3BhdGNoUXVldWVUaHJlYWQoKQotewotICAgIHdoaWxlIChtX2lzVGhyZWFkUnVubmluZykg
ewotICAgICAgICBwZXJmb3JtV29yaygpOwotICAgICAgICBwZXJmb3JtVGltZXJXb3JrKCk7Ci0g
ICAgICAgIHBlcmZvcm1GaWxlRGVzY3JpcHRvcldvcmsoKTsKLSAgICB9Ci19Ci0KLXZvaWQgRGlz
cGF0Y2hRdWV1ZTo6d2FrZVVwVGhyZWFkKCkKLXsKLSAgICBNdXRleExvY2tlciBsb2NrZXIobV93
cml0ZVRvUGlwZURlc2NyaXB0b3JMb2NrKTsKLSAgICBpZiAod3JpdGUobV93cml0ZVRvUGlwZURl
c2NyaXB0b3IsICZ3YWtlVXBUaHJlYWRNZXNzYWdlLCBzaXplb2YoY2hhcikpID09IC0xKQotICAg
ICAgICBMT0dfRVJST1IoIkZhaWxlZCB0byB3YWtlIHVwIERpc3BhdGNoUXVldWUgVGhyZWFkIik7
Ci19Ci0KLXRpbWV2YWwqIERpc3BhdGNoUXVldWU6OmdldE5leHRUaW1lT3V0KCkgY29uc3QKLXsK
LSAgICBNdXRleExvY2tlciBsb2NrZXIobV90aW1lcldvcmtJdGVtc0xvY2spOwotICAgIGlmICht
X3RpbWVyV29ya0l0ZW1zLmlzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJuIDA7Ci0KLSAgICBzdGF0
aWMgdGltZXZhbCB0aW1lVmFsdWU7Ci0gICAgdGltZVZhbHVlLnR2X3NlYyA9IDA7Ci0gICAgdGlt
ZVZhbHVlLnR2X3VzZWMgPSAwOwotICAgIGRvdWJsZSB0aW1lT3V0U2Vjb25kcyA9IChtX3RpbWVy
V29ya0l0ZW1zWzBdLT5leHBpcmF0aW9uVGltZU5hbm9TZWNvbmRzKCkgLSBtb25vdG9uaWNhbGx5
SW5jcmVhc2luZ1RpbWUoKSAqIG5hbm9TZWNvbmRzUGVyU2Vjb25kKSAvIG5hbm9TZWNvbmRzUGVy
U2Vjb25kOwotICAgIGlmICh0aW1lT3V0U2Vjb25kcyA+IDApIHsKLSAgICAgICAgdGltZVZhbHVl
LnR2X3NlYyA9IHN0YXRpY19jYXN0PGxvbmc+KHRpbWVPdXRTZWNvbmRzKTsKLSAgICAgICAgdGlt
ZVZhbHVlLnR2X3VzZWMgPSBzdGF0aWNfY2FzdDxsb25nPigodGltZU91dFNlY29uZHMgLSB0aW1l
VmFsdWUudHZfc2VjKSAqIG1pY3JvU2Vjb25kc1BlclNlY29uZCk7Ci0gICAgfQotCi0gICAgcmV0
dXJuICZ0aW1lVmFsdWU7Ci19CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9lZmwvRGlzcGF0
Y2hRdWV1ZUVmbC5oIGIvU291cmNlL1dURi93dGYvZWZsL0Rpc3BhdGNoUXVldWVFZmwuaApkZWxl
dGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZmM1NTUxOWIwMWNlZThmZTA0OWMxM2MxZTVmY2Zj
N2Q5OTc5NGYyNi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0g
YS9Tb3VyY2UvV1RGL3d0Zi9lZmwvRGlzcGF0Y2hRdWV1ZUVmbC5oCisrKyAvZGV2L251bGwKQEAg
LTEsODAgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMyBTYW1zdW5nIEVsZWN0cm9u
aWNzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
Ci0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0g
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycK
LSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0g
KiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaWZuZGVmIERpc3BhdGNoUXVl
dWVFZmxfaAotI2RlZmluZSBEaXNwYXRjaFF1ZXVlRWZsX2gKLQotI2luY2x1ZGUgPGZ1bmN0aW9u
YWw+Ci0jaW5jbHVkZSA8dGltZS5oPgotI2luY2x1ZGUgPHd0Zi9UaHJlYWRTYWZlUmVmQ291bnRl
ZC5oPgotI2luY2x1ZGUgPHd0Zi9UaHJlYWRpbmdQcmltaXRpdmVzLmg+Ci0jaW5jbHVkZSA8d3Rm
L1ZlY3Rvci5oPgotCi1jbGFzcyBUaW1lcldvcmtJdGVtOwotY2xhc3MgV29ya0l0ZW07Ci0KLWNs
YXNzIERpc3BhdGNoUXVldWUgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8RGlzcGF0Y2hR
dWV1ZT4gewotcHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPERpc3BhdGNoUXVldWU+IGNy
ZWF0ZShjb25zdCBjaGFyKiBuYW1lKTsKLSAgICB+RGlzcGF0Y2hRdWV1ZSgpOwotCi0gICAgdm9p
ZCBkaXNwYXRjaChzdGQ6OnVuaXF1ZV9wdHI8V29ya0l0ZW0+KTsKLSAgICB2b2lkIGRpc3BhdGNo
KHN0ZDo6dW5pcXVlX3B0cjxUaW1lcldvcmtJdGVtPik7Ci0gICAgdm9pZCBzdG9wVGhyZWFkKCk7
Ci0gICAgdm9pZCBzZXRTb2NrZXRFdmVudEhhbmRsZXIoaW50LCBzdGQ6OmZ1bmN0aW9uPHZvaWQg
KCk+KTsKLSAgICB2b2lkIGNsZWFyU29ja2V0RXZlbnRIYW5kbGVyKCk7Ci0KLXByaXZhdGU6Ci0g
ICAgY2xhc3MgVGhyZWFkQ29udGV4dDsKLQotICAgIERpc3BhdGNoUXVldWUoKTsKLQotICAgIHZv
aWQgcGVyZm9ybVdvcmsoKTsKLSAgICB2b2lkIHBlcmZvcm1UaW1lcldvcmsoKTsKLSAgICB2b2lk
IHBlcmZvcm1GaWxlRGVzY3JpcHRvcldvcmsoKTsKLSAgICB2b2lkIGluc2VydFRpbWVyV29ya0l0
ZW0oc3RkOjp1bmlxdWVfcHRyPFRpbWVyV29ya0l0ZW0+KTsKLSAgICB2b2lkIGRpc3BhdGNoUXVl
dWVUaHJlYWQoKTsKLSAgICB2b2lkIHdha2VVcFRocmVhZCgpOwotICAgIHRpbWV2YWwqIGdldE5l
eHRUaW1lT3V0KCkgY29uc3Q7Ci0KLSAgICBmZF9zZXQgbV9maWxlRGVzY3JpcHRvclNldDsKLSAg
ICBpbnQgbV9tYXhGaWxlRGVzY3JpcHRvcjsKLSAgICBpbnQgbV9yZWFkRnJvbVBpcGVEZXNjcmlw
dG9yOwotICAgIGludCBtX3dyaXRlVG9QaXBlRGVzY3JpcHRvcjsKLSAgICBNdXRleCBtX3dyaXRl
VG9QaXBlRGVzY3JpcHRvckxvY2s7Ci0KLSAgICBib29sIG1faXNUaHJlYWRSdW5uaW5nOwotCi0g
ICAgaW50IG1fc29ja2V0RGVzY3JpcHRvcjsKLSAgICBzdGQ6OmZ1bmN0aW9uPHZvaWQgKCk+IG1f
c29ja2V0RXZlbnRIYW5kbGVyOwotCi0gICAgVmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxXb3JrSXRl
bT4+IG1fd29ya0l0ZW1zOwotICAgIE11dGV4IG1fd29ya0l0ZW1zTG9jazsKLQotICAgIFZlY3Rv
cjxzdGQ6OnVuaXF1ZV9wdHI8VGltZXJXb3JrSXRlbT4+IG1fdGltZXJXb3JrSXRlbXM7Ci0gICAg
bXV0YWJsZSBNdXRleCBtX3RpbWVyV29ya0l0ZW1zTG9jazsKLX07Ci0KLSNlbmRpZiAvLyBEaXNw
YXRjaFF1ZXVlRWZsX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL2VmbC9EaXNwYXRjaFF1
ZXVlV29ya0l0ZW1FZmwuaCBiL1NvdXJjZS9XVEYvd3RmL2VmbC9EaXNwYXRjaFF1ZXVlV29ya0l0
ZW1FZmwuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTYyYmFiNDJhOGI0ODhiNzdm
ZGM1MTk2ZmQ2NDlkNzEyZGNhZjAwMC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9lZmwvRGlzcGF0Y2hRdWV1ZVdvcmtJdGVtRWZs
LmgKKysrIC9kZXYvbnVsbApAQCAtMSw3MSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAy
MDEzIFNhbXN1bmcgRWxlY3Ryb25pY3MuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0g
KgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09O
VFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0g
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
IElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICog
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0K
LSNpZm5kZWYgRGlzcGF0Y2hRdWV1ZVdvcmtJdGVtRWZsX2gKLSNkZWZpbmUgRGlzcGF0Y2hRdWV1
ZVdvcmtJdGVtRWZsX2gKLQotI2luY2x1ZGUgPHd0Zi9Bc3NlcnRpb25zLmg+Ci0jaW5jbHVkZSA8
d3RmL0N1cnJlbnRUaW1lLmg+Ci0jaW5jbHVkZSA8d3RmL0Z1bmN0aW9uRGlzcGF0Y2hlci5oPgot
I2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+Ci0jaW5jbHVkZSA8d3RmL1dvcmtRdWV1ZS5oPgot
Ci1jbGFzcyBXb3JrSXRlbSB7Ci1wdWJsaWM6Ci0gICAgV29ya0l0ZW0oUmVmPFdvcmtRdWV1ZT4m
JiB3b3JrUXVldWUsIEZ1bmN0aW9uPHZvaWQgKCk+JiYgZnVuY3Rpb24pCi0gICAgICAgIDogbV93
b3JrUXVldWUoV1RGTW92ZSh3b3JrUXVldWUpKQotICAgICAgICAsIG1fZnVuY3Rpb24oV1RGTW92
ZShmdW5jdGlvbikpCi0gICAgewotICAgIH0KLQotICAgIHZvaWQgZGlzcGF0Y2goKSB7IG1fZnVu
Y3Rpb24oKTsgfQotCi1wcml2YXRlOgotICAgIFJlZjxXb3JrUXVldWU+IG1fd29ya1F1ZXVlOwot
ICAgIEZ1bmN0aW9uPHZvaWQgKCk+IG1fZnVuY3Rpb247Ci19OwotCi1jbGFzcyBUaW1lcldvcmtJ
dGVtIDogcHVibGljIFdvcmtJdGVtIHsKLXB1YmxpYzoKLSAgICBzdGF0aWMgc3RkOjp1bmlxdWVf
cHRyPFRpbWVyV29ya0l0ZW0+IGNyZWF0ZShSZWY8V29ya1F1ZXVlPiYmIHdvcmtRdWV1ZSwgRnVu
Y3Rpb248dm9pZCAoKT4mJiBmdW5jdGlvbiwgc3RkOjpjaHJvbm86Om5hbm9zZWNvbmRzIGRlbGF5
TmFub1NlY29uZHMpCi0gICAgewotICAgICAgICBBU1NFUlQoZGVsYXlOYW5vU2Vjb25kcy5jb3Vu
dCgpID49IDApOwotICAgICAgICByZXR1cm4gc3RkOjp1bmlxdWVfcHRyPFRpbWVyV29ya0l0ZW0+
KG5ldyBUaW1lcldvcmtJdGVtKFdURk1vdmUod29ya1F1ZXVlKSwgV1RGTW92ZShmdW5jdGlvbiks
IG1vbm90b25pY2FsbHlJbmNyZWFzaW5nVGltZSgpICogMTAwMDAwMDAwMC4wICsgZGVsYXlOYW5v
U2Vjb25kcy5jb3VudCgpKSk7Ci0gICAgfQotICAgIGRvdWJsZSBleHBpcmF0aW9uVGltZU5hbm9T
ZWNvbmRzKCkgY29uc3QgeyByZXR1cm4gbV9leHBpcmF0aW9uVGltZU5hbm9TZWNvbmRzOyB9Ci0g
ICAgYm9vbCBoYXNFeHBpcmVkKGRvdWJsZSBjdXJyZW50VGltZU5hbm9TZWNvbmRzKSBjb25zdCB7
IHJldHVybiBjdXJyZW50VGltZU5hbm9TZWNvbmRzID49IG1fZXhwaXJhdGlvblRpbWVOYW5vU2Vj
b25kczsgfQotCi1wcm90ZWN0ZWQ6Ci0gICAgVGltZXJXb3JrSXRlbShSZWY8V29ya1F1ZXVlPiYm
IHdvcmtRdWV1ZSwgRnVuY3Rpb248dm9pZCAoKT4mJiBmdW5jdGlvbiwgZG91YmxlIGV4cGlyYXRp
b25UaW1lTmFub1NlY29uZHMpCi0gICAgICAgIDogV29ya0l0ZW0oV1RGTW92ZSh3b3JrUXVldWUp
LCBXVEZNb3ZlKGZ1bmN0aW9uKSkKLSAgICAgICAgLCBtX2V4cGlyYXRpb25UaW1lTmFub1NlY29u
ZHMoZXhwaXJhdGlvblRpbWVOYW5vU2Vjb25kcykKLSAgICB7Ci0gICAgfQotCi1wcml2YXRlOgot
ICAgIGRvdWJsZSBtX2V4cGlyYXRpb25UaW1lTmFub1NlY29uZHM7Ci19OwotCi0jZW5kaWYgLy8g
RGlzcGF0Y2hRdWV1ZVdvcmtJdGVtRWZsX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL2Vm
bC9FZmxUeXBlZGVmcy5oIGIvU291cmNlL1dURi93dGYvZWZsL0VmbFR5cGVkZWZzLmgKZGVsZXRl
ZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGJhNzQyMmYxZTE2ZmQxYjgyNjdmMDJhNTE5ZDQyNjc4
YThlOGRhNDAuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEv
U291cmNlL1dURi93dGYvZWZsL0VmbFR5cGVkZWZzLmgKKysrIC9kZXYvbnVsbApAQCAtMSw1MiAr
MCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE0IFNBTVNVTkcgRUxFQ1RST05JQ1MgQWxs
IHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLSAq
IG1ldDoKLSAqCi0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogICAgICogUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotICogY29weXJpZ2h0
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lcgotICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZQotICogZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLSAqICJB
UyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLSAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0gKiBPV05FUiBPUiBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwK
LSAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAotICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0gKiBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2lmbmRlZiBXVEZf
RWZsVHlwZWRlZnNfaAotI2RlZmluZSBXVEZfRWZsVHlwZWRlZnNfaAotCi0jaWZkZWYgX19jcGx1
c3BsdXMKLQotdHlwZWRlZiB1bnNpZ25lZCBFY29yZV9YX0lEOwotdHlwZWRlZiBFY29yZV9YX0lE
IEVjb3JlX1hfV2luZG93OwotCi10eXBlZGVmIHVuc2lnbmVkIGNoYXIgRWluYV9Cb29sOwotdHlw
ZWRlZiBzdHJ1Y3QgX0V2YXNfUG9pbnQgRXZhc19Qb2ludDsKLXR5cGVkZWYgc3RydWN0IF9FdmFz
X0dMIEV2YXNfR0w7Ci10eXBlZGVmIHN0cnVjdCBfRXZhc19HTF9Db250ZXh0IEV2YXNfR0xfQ29u
dGV4dDsKLXR5cGVkZWYgc3RydWN0IF9FdmFzX0dMX1N1cmZhY2UgRXZhc19HTF9TdXJmYWNlOwot
dHlwZWRlZiBzdHJ1Y3QgX0Vjb3JlX0V2YXMgRWNvcmVfRXZhczsKLXR5cGVkZWYgc3RydWN0IF9F
Y29yZV9GZF9IYW5kbGVyIEVjb3JlX0ZkX0hhbmRsZXI7Ci10eXBlZGVmIHN0cnVjdCBfRWluYV9M
aXN0IEVpbmFfTGlzdDsKLXR5cGVkZWYgc3RydWN0IF9FaW5hX01vZHVsZSBFaW5hX01vZHVsZTsK
LXR5cGVkZWYgc3RydWN0IF9FaW5hX1JlY3RhbmdsZSBFaW5hX1JlY3RhbmdsZTsKLXR5cGVkZWYg
c3RydWN0IF9Fb19PcGFxdWUgRXZhczsKLXR5cGVkZWYgc3RydWN0IF9Fb19PcGFxdWUgRXZhc19P
YmplY3Q7Ci10eXBlZGVmIHN0cnVjdCBfRW9fT3BhcXVlIEVjb3JlX1RpbWVyOwotCi0jZW5kaWYK
LQotI2VuZGlmIC8vIFdURl9FZmxUeXBlZGVmc19oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0
Zi9lZmwvTWFpblRocmVhZEVmbC5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi9lZmwvTWFpblRocmVhZEVm
bC5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGJmOWRlYjQ3YjY5NWU2Y2MxMjA5
MGU4Y2E4ODU3YzI4M2YxNTY4YTEuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAKLS0tIGEvU291cmNlL1dURi93dGYvZWZsL01haW5UaHJlYWRFZmwuY3BwCisrKyAvZGV2
L251bGwKQEAgLTEsNjQgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAwNywgMjAwOCBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDcgSnVz
dGluIEhheWdvb2QgKGpoYXlnb29kQHJlYWt0aXguY29tKQotICogQ29weXJpZ2h0IChDKSAyMDA4
IERpZWdvIEdvbnphbGV6Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMDggS2VubmV0aCBSb2hkZSBDaHJp
c3RpYW5zZW4KLSAqIENvcHlyaWdodCAoQykgMjAwOS0yMDEwIFByb0ZVU0lPTiBlbWJlZGRlZCBz
eXN0ZW1zCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDktMjAxMCBTYW1zdW5nIEVsZWN0cm9uaWNzCi0g
KgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKgotICogMS4gIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0Ci0gKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgotICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICog
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCi0gKiAzLiAgTmVpdGhlciB0aGUgbmFtZSBvZiBBcHBsZSBJbmMuICgi
QXBwbGUiKSBub3IgdGhlIG5hbWVzIG9mCi0gKiAgICAgaXRzIGNvbnRyaWJ1dG9ycyBtYXkgYmUg
dXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZAotICogICAgIGZyb20g
dGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4K
LSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJ
QlVUT1JTICJBUyBJUyIgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAotICogV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NF
IEFSRQotICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQotICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKLSAqIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsKLSAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAotICogT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRgotICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29u
ZmlnLmgiCi0jaW5jbHVkZSAiTWFpblRocmVhZC5oIgotCi0jaW5jbHVkZSA8RWNvcmUuaD4KLSNp
bmNsdWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+Ci0jaW5jbHVkZSA8d3RmL2VmbC9VbmlxdWVQdHJF
ZmwuaD4KLQotbmFtZXNwYWNlIFdURiB7Ci0KLXN0YXRpYyBFZmxVbmlxdWVQdHI8RWNvcmVfUGlw
ZT4mIHBpcGVPYmplY3QoKQotewotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChF
ZmxVbmlxdWVQdHI8RWNvcmVfUGlwZT4sIHBpcGVPYmplY3QsICgpKTsKLSAgICByZXR1cm4gcGlw
ZU9iamVjdDsKLX0KLQotc3RhdGljIHZvaWQgbW9uaXRvckRpc3BhdGNoRnVuY3Rpb25zKHZvaWQq
LCB2b2lkKiwgdW5zaWduZWQgaW50KQotewotICAgIGRpc3BhdGNoRnVuY3Rpb25zRnJvbU1haW5U
aHJlYWQoKTsKLX0KLQotdm9pZCBpbml0aWFsaXplTWFpblRocmVhZFBsYXRmb3JtKCkKLXsKLSAg
ICBwaXBlT2JqZWN0KCkgPSBFZmxVbmlxdWVQdHI8RWNvcmVfUGlwZT4oZWNvcmVfcGlwZV9hZGQo
bW9uaXRvckRpc3BhdGNoRnVuY3Rpb25zLCAwKSk7Ci19Ci0KLXZvaWQgc2NoZWR1bGVEaXNwYXRj
aEZ1bmN0aW9uc09uTWFpblRocmVhZCgpCi17Ci0gICAgZWNvcmVfcGlwZV93cml0ZShwaXBlT2Jq
ZWN0KCkuZ2V0KCksICIiLCAwKTsKLX0KLQotfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYv
ZWZsL1J1bkxvb3BFZmwuY3BwIGIvU291cmNlL1dURi93dGYvZWZsL1J1bkxvb3BFZmwuY3BwCmRl
bGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1ZGZjMjkwM2U4YjRkMTA3NDNiNTI5ZjRjMGM3
NGM2NzUwZGFlNTk2Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0t
LSBhL1NvdXJjZS9XVEYvd3RmL2VmbC9SdW5Mb29wRWZsLmNwcAorKysgL2Rldi9udWxsCkBAIC0x
LDEzMSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEyIFByb0ZVU0lPTiBlbWJlZGRl
ZCBzeXN0ZW1zLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICogQ29weXJpZ2h0IChDKSAyMDEyIFNh
bXN1bmcgRWxlY3Ryb25pY3MKLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJl
IG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0gKiAiQVMgSVMi
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VAotICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SCi0gKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAotICogT1dORVIgT1IgQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0gKiBT
UEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLSAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotICogVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAot
ICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcu
aCIKLSNpbmNsdWRlICJSdW5Mb29wLmgiCi0KLSNpbmNsdWRlIDxFY29yZS5oPgotCi1zdGF0aWMg
Y29uc3QgaW50IGVjb3JlUGlwZU1lc3NhZ2VTaXplID0gMTsKLXN0YXRpYyBjb25zdCBjaGFyIHdh
a3VwRWNvcmVQaXBlTWVzc2FnZVtdID0gIlciOwotCi1uYW1lc3BhY2UgV1RGIHsKLQotUnVuTG9v
cDo6UnVuTG9vcCgpCi0gICAgOiBtX3dha2VVcEV2ZW50UmVxdWVzdGVkKGZhbHNlKQotewotICAg
IG1fcGlwZSA9IEVmbFVuaXF1ZVB0cjxFY29yZV9QaXBlPihlY29yZV9waXBlX2FkZCh3YWtlVXBF
dmVudCwgdGhpcykpOwotfQotCi1SdW5Mb29wOjp+UnVuTG9vcCgpCi17Ci19Ci0KLXZvaWQgUnVu
TG9vcDo6cnVuKCkKLXsKLSAgICBlY29yZV9tYWluX2xvb3BfYmVnaW4oKTsKLX0KLQotdm9pZCBS
dW5Mb29wOjpzdG9wKCkKLXsKLSAgICBlY29yZV9tYWluX2xvb3BfcXVpdCgpOwotfQotCi12b2lk
IFJ1bkxvb3A6Ondha2VVcEV2ZW50KHZvaWQqIGRhdGEsIHZvaWQqLCB1bnNpZ25lZCkKLXsKLSAg
ICBSdW5Mb29wKiBsb29wID0gc3RhdGljX2Nhc3Q8UnVuTG9vcCo+KGRhdGEpOwotCi0gICAgewot
ICAgICAgICBNdXRleExvY2tlciBsb2NrZXIobG9vcC0+bV93YWtlVXBFdmVudFJlcXVlc3RlZExv
Y2spOwotICAgICAgICBsb29wLT5tX3dha2VVcEV2ZW50UmVxdWVzdGVkID0gZmFsc2U7Ci0gICAg
fQotCi0gICAgbG9vcC0+cGVyZm9ybVdvcmsoKTsKLX0KLQotdm9pZCBSdW5Mb29wOjp3YWtlVXAo
KQotewotICAgIHsKLSAgICAgICAgTXV0ZXhMb2NrZXIgbG9ja2VyKG1fd2FrZVVwRXZlbnRSZXF1
ZXN0ZWRMb2NrKTsKLSAgICAgICAgaWYgKG1fd2FrZVVwRXZlbnRSZXF1ZXN0ZWQpCi0gICAgICAg
ICAgICByZXR1cm47Ci0gICAgICAgIG1fd2FrZVVwRXZlbnRSZXF1ZXN0ZWQgPSB0cnVlOwotICAg
IH0KLQotICAgIHsKLSAgICAgICAgTXV0ZXhMb2NrZXIgbG9ja2VyKG1fcGlwZUxvY2spOwotICAg
ICAgICBlY29yZV9waXBlX3dyaXRlKG1fcGlwZS5nZXQoKSwgd2FrdXBFY29yZVBpcGVNZXNzYWdl
LCBlY29yZVBpcGVNZXNzYWdlU2l6ZSk7Ci0gICAgfQotfQotCi1SdW5Mb29wOjpUaW1lckJhc2U6
OlRpbWVyQmFzZShSdW5Mb29wJiBydW5Mb29wKQotICAgIDogbV9ydW5Mb29wKHJ1bkxvb3ApCi0g
ICAgLCBtX3RpbWVyKDApCi0gICAgLCBtX2lzUmVwZWF0aW5nKGZhbHNlKQotewotfQotCi1SdW5M
b29wOjpUaW1lckJhc2U6On5UaW1lckJhc2UoKQotewotICAgIHN0b3AoKTsKLX0KLQotYm9vbCBS
dW5Mb29wOjpUaW1lckJhc2U6OnRpbWVyRmlyZWQodm9pZCogZGF0YSkKLXsKLSAgICBSdW5Mb29w
OjpUaW1lckJhc2UqIHRpbWVyID0gc3RhdGljX2Nhc3Q8UnVuTG9vcDo6VGltZXJCYXNlKj4oZGF0
YSk7Ci0KLSAgICBpZiAoIXRpbWVyLT5tX2lzUmVwZWF0aW5nKQotICAgICAgICB0aW1lci0+bV90
aW1lciA9IDA7Ci0KLSAgICB0aW1lci0+ZmlyZWQoKTsKLQotICAgIHJldHVybiB0aW1lci0+bV9p
c1JlcGVhdGluZyA/IEVDT1JFX0NBTExCQUNLX1JFTkVXIDogRUNPUkVfQ0FMTEJBQ0tfQ0FOQ0VM
OwotfQotCi12b2lkIFJ1bkxvb3A6OlRpbWVyQmFzZTo6c3RhcnQoZG91YmxlIG5leHRGaXJlSW50
ZXJ2YWwsIGJvb2wgcmVwZWF0KQotewotICAgIGlmIChpc0FjdGl2ZSgpKQotICAgICAgICBzdG9w
KCk7Ci0KLSAgICBtX2lzUmVwZWF0aW5nID0gcmVwZWF0OwotICAgIEFTU0VSVCghbV90aW1lcik7
Ci0gICAgbV90aW1lciA9IGVjb3JlX3RpbWVyX2FkZChuZXh0RmlyZUludGVydmFsLCByZWludGVy
cHJldF9jYXN0PEVjb3JlX1Rhc2tfQ2I+KHRpbWVyRmlyZWQpLCB0aGlzKTsKLX0KLQotdm9pZCBS
dW5Mb29wOjpUaW1lckJhc2U6OnN0b3AoKQotewotICAgIGlmIChtX3RpbWVyKSB7Ci0gICAgICAg
IGVjb3JlX3RpbWVyX2RlbChtX3RpbWVyKTsKLSAgICAgICAgbV90aW1lciA9IDA7Ci0gICAgfQot
fQotCi1ib29sIFJ1bkxvb3A6OlRpbWVyQmFzZTo6aXNBY3RpdmUoKSBjb25zdAotewotICAgIHJl
dHVybiAobV90aW1lcikgPyB0cnVlIDogZmFsc2U7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdURgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvZWZsL1VuaXF1ZVB0ckVmbC5oIGIvU291cmNlL1dU
Ri93dGYvZWZsL1VuaXF1ZVB0ckVmbC5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBh
ZWRlYmQ3NzBkMGU0ODBmOWI2YzlhYjVjNTY4NmY2NTM2NTYzZWI0Li4wMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XVEYvd3RmL2VmbC9VbmlxdWVQ
dHJFZmwuaAorKysgL2Rldi9udWxsCkBAIC0xLDY4ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQg
KEMpIDIwMTQgU2Ftc3VuZyBFbGVjdHJvbmljcwotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElT
JycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JT
Ci0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0g
KiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQg
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAq
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaWZuZGVmIFVuaXF1ZVB0
ckVmbF9oCi0jZGVmaW5lIFVuaXF1ZVB0ckVmbF9oCi0KLSNpbmNsdWRlIDxFY29yZS5oPgotI2lu
Y2x1ZGUgPEVjb3JlX0V2YXMuaD4KLSNpbmNsdWRlIDxFY29yZV9JTUYuaD4KLSNpbmNsdWRlIDxF
aW5hLmg+Ci0jaW5jbHVkZSA8RXZhcy5oPgotCi1uYW1lc3BhY2UgV1RGIHsKLQotdGVtcGxhdGU8
dHlwZW5hbWUgVD4gc3RydWN0IEVmbFB0ckRlbGV0ZXIgewotICAgIHZvaWQgb3BlcmF0b3IoKShU
KiBwdHIpIGNvbnN0ID0gZGVsZXRlOwotfTsKLQotdGVtcGxhdGU8dHlwZW5hbWUgVD4KLXVzaW5n
IEVmbFVuaXF1ZVB0ciA9IHN0ZDo6dW5pcXVlX3B0cjxULCBFZmxQdHJEZWxldGVyPFQ+PjsKLQot
I2RlZmluZSBGT1JfRUFDSF9FRkxfREVMRVRFUihtYWNybykgXAotICAgIG1hY3JvKEVjb3JlX0V2
YXMsIGVjb3JlX2V2YXNfZnJlZSkgXAotICAgIG1hY3JvKEVjb3JlX0lNRl9Db250ZXh0LCBlY29y
ZV9pbWZfY29udGV4dF9kZWwpIFwKLSAgICBtYWNybyhFY29yZV9QaXBlLCBlY29yZV9waXBlX2Rl
bCkgXAotICAgIG1hY3JvKEVpbmFfSGFzaCwgZWluYV9oYXNoX2ZyZWUpIFwKLSAgICBtYWNybyhF
aW5hX01vZHVsZSwgZWluYV9tb2R1bGVfZnJlZSkgXAotICAgIG1hY3JvKEV2YXNfT2JqZWN0LCBl
dmFzX29iamVjdF9kZWwpIFwKLQotI2RlZmluZSBXVEZfREVGSU5FX0VGTFBUUl9ERUxFVEVSKHR5
cGVOYW1lLCBkZWxldGVyRnVuYykgXAotICAgIHRlbXBsYXRlPD4gc3RydWN0IEVmbFB0ckRlbGV0
ZXI8dHlwZU5hbWU+IFwKLSAgICB7IFwKLSAgICAgICAgdm9pZCBvcGVyYXRvcigpICh0eXBlTmFt
ZSogcHRyKSBjb25zdCBcCi0gICAgICAgIHsgXAotICAgICAgICAgICAgZGVsZXRlckZ1bmMocHRy
KTsgXAotICAgICAgICB9IFwKLSAgICB9OwotCi1GT1JfRUFDSF9FRkxfREVMRVRFUihXVEZfREVG
SU5FX0VGTFBUUl9ERUxFVEVSKQotI3VuZGVmIEZPUl9FQUNIX0VGTF9ERUxFVEVSCi0KLX0gLy8g
bmFtZXNwYWNlIFdURgotCi11c2luZyBXVEY6OkVmbFVuaXF1ZVB0cjsKLQotI2VuZGlmIC8vIFVu
aXF1ZVB0ckVmbF9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9lZmwvV29ya1F1ZXVlRWZs
LmNwcCBiL1NvdXJjZS9XVEYvd3RmL2VmbC9Xb3JrUXVldWVFZmwuY3BwCmRlbGV0ZWQgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCBkYTkxM2JmMDRjZTcyNzMxMDc2N2VmNDc5NGZkZDJiODc4YTVmNGVk
Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9X
VEYvd3RmL2VmbC9Xb3JrUXVldWVFZmwuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsNzMgKzAsMCBA
QAotLyoKLSAgICBDb3B5cmlnaHQgKEMpIDIwMTIgU2Ftc3VuZyBFbGVjdHJvbmljcwotCi0gICAg
VGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFu
ZC9vcgotICAgIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdl
bmVyYWwgUHVibGljCi0gICAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdh
cmUgRm91bmRhdGlvbjsgZWl0aGVyCi0gICAgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAo
YXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotCi0gICAgVGhpcyBsaWJyYXJ5IGlz
IGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0gICAgYnV0
IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkg
b2YKLSAgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBP
U0UuICBTZWUgdGhlIEdOVQotICAgIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3Ig
bW9yZSBkZXRhaWxzLgotCi0gICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0
aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotICAgIGFsb25nIHdpdGggdGhp
cyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCi0g
ICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0
LCBGaWZ0aCBGbG9vciwKLSAgICBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KLSAqLwotCi0j
aW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiV29ya1F1ZXVlLmgiCi0KLSNpbmNsdWRlIDxE
aXNwYXRjaFF1ZXVlRWZsLmg+Ci0jaW5jbHVkZSA8RGlzcGF0Y2hRdWV1ZVdvcmtJdGVtRWZsLmg+
Ci0KLW5hbWVzcGFjZSBXVEYgewotCi12b2lkIFdvcmtRdWV1ZTo6cGxhdGZvcm1Jbml0aWFsaXpl
KGNvbnN0IGNoYXIqIG5hbWUsIFR5cGUsIFFPUykKLXsKLSAgICBtX2Rpc3BhdGNoUXVldWUgPSBE
aXNwYXRjaFF1ZXVlOjpjcmVhdGUobmFtZSk7Ci19Ci0KLXZvaWQgV29ya1F1ZXVlOjpwbGF0Zm9y
bUludmFsaWRhdGUoKQotewotICAgIFJlZlB0cjxEaXNwYXRjaFF1ZXVlPiBkaXNwYXRjaFF1ZXVl
ID0gbV9kaXNwYXRjaFF1ZXVlLnJlbGVhc2UoKTsKLSAgICBkaXNwYXRjaFF1ZXVlLT5zdG9wVGhy
ZWFkKCk7Ci19Ci0KLXZvaWQgV29ya1F1ZXVlOjpyZWdpc3RlclNvY2tldEV2ZW50SGFuZGxlcihp
bnQgZmlsZURlc2NyaXB0b3IsIHN0ZDo6ZnVuY3Rpb248dm9pZCAoKT4gZnVuY3Rpb24pCi17Ci0g
ICAgaWYgKCFtX2Rpc3BhdGNoUXVldWUpCi0gICAgICAgIHJldHVybjsKLQotICAgIG1fZGlzcGF0
Y2hRdWV1ZS0+c2V0U29ja2V0RXZlbnRIYW5kbGVyKGZpbGVEZXNjcmlwdG9yLCBXVEZNb3ZlKGZ1
bmN0aW9uKSk7Ci19Ci0KLXZvaWQgV29ya1F1ZXVlOjp1bnJlZ2lzdGVyU29ja2V0RXZlbnRIYW5k
bGVyKGludCBmaWxlRGVzY3JpcHRvcikKLXsKLSAgICBVTlVTRURfUEFSQU0oZmlsZURlc2NyaXB0
b3IpOwotCi0gICAgaWYgKCFtX2Rpc3BhdGNoUXVldWUpCi0gICAgICAgIHJldHVybjsKLQotICAg
IG1fZGlzcGF0Y2hRdWV1ZS0+Y2xlYXJTb2NrZXRFdmVudEhhbmRsZXIoKTsKLX0KLQotdm9pZCBX
b3JrUXVldWU6OmRpc3BhdGNoKEZ1bmN0aW9uPHZvaWQgKCk+JiYgZnVuY3Rpb24pCi17Ci0gICAg
aWYgKCFtX2Rpc3BhdGNoUXVldWUpCi0gICAgICAgIHJldHVybjsKLQotICAgIG1fZGlzcGF0Y2hR
dWV1ZS0+ZGlzcGF0Y2goc3RkOjptYWtlX3VuaXF1ZTxXb3JrSXRlbT4oKnRoaXMsIFdURk1vdmUo
ZnVuY3Rpb24pKSk7Ci19Ci0KLXZvaWQgV29ya1F1ZXVlOjpkaXNwYXRjaEFmdGVyKHN0ZDo6Y2hy
b25vOjpuYW5vc2Vjb25kcyBkdXJhdGlvbiwgRnVuY3Rpb248dm9pZCAoKT4mJiBmdW5jdGlvbikK
LXsKLSAgICBpZiAoIW1fZGlzcGF0Y2hRdWV1ZSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgbV9k
aXNwYXRjaFF1ZXVlLT5kaXNwYXRjaChUaW1lcldvcmtJdGVtOjpjcmVhdGUoKnRoaXMsIFdURk1v
dmUoZnVuY3Rpb24pLCBkdXJhdGlvbikpOwotfQotCi19Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>301805</attachid>
            <date>2017-02-16 13:04:20 -0800</date>
            <delta_ts>2017-02-16 13:08:49 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-168452-20170216130142.patch</filename>
            <type>text/plain</type>
            <size>42065</size>
            <attacher name="Anders Carlsson">andersca</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjEyNDU0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDI0NTE2Njc3ODM2YmNmZWQyNzVjZWU5
ODczOWIwNjI2OTFiY2Q0OTQuLjJhNzQ4OWJlZmMxMzAzMDA2YWRhNjUzNWYzNmYwNGM1MjIxOTA3
YzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMjcgQEAKKzIwMTctMDItMTYgIEFuZGVycyBDYXJsc3NvbiAgPGFu
ZGVyc2NhQGFwcGxlLmNvbT4KKworICAgICAgICBSZW1vdmUgRUZMIGZyb20gV1RGCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjg0NTIKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHd0Zi9DdXJyZW50VGlt
ZS5jcHA6CisgICAgICAgICogd3RmL0Rpc2FsbG93Q1R5cGUuaDoKKyAgICAgICAgKiB3dGYvRmVh
dHVyZURlZmluZXMuaDoKKyAgICAgICAgKiB3dGYvTWFpblRocmVhZC5jcHA6CisgICAgICAgICog
d3RmL01haW5UaHJlYWQuaDoKKyAgICAgICAgKiB3dGYvUGxhdGZvcm0uaDoKKyAgICAgICAgKiB3
dGYvUnVuTG9vcC5oOgorICAgICAgICAqIHd0Zi9Xb3JrUXVldWUuaDoKKyAgICAgICAgKiB3dGYv
ZWZsL0Rpc3BhdGNoUXVldWVFZmwuY3BwOiBSZW1vdmVkLgorICAgICAgICAqIHd0Zi9lZmwvRGlz
cGF0Y2hRdWV1ZUVmbC5oOiBSZW1vdmVkLgorICAgICAgICAqIHd0Zi9lZmwvRGlzcGF0Y2hRdWV1
ZVdvcmtJdGVtRWZsLmg6IFJlbW92ZWQuCisgICAgICAgICogd3RmL2VmbC9FZmxUeXBlZGVmcy5o
OiBSZW1vdmVkLgorICAgICAgICAqIHd0Zi9lZmwvTWFpblRocmVhZEVmbC5jcHA6IFJlbW92ZWQu
CisgICAgICAgICogd3RmL2VmbC9SdW5Mb29wRWZsLmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiB3
dGYvZWZsL1VuaXF1ZVB0ckVmbC5oOiBSZW1vdmVkLgorICAgICAgICAqIHd0Zi9lZmwvV29ya1F1
ZXVlRWZsLmNwcDogUmVtb3ZlZC4KKwogMjAxNy0wMi0xMyAgQWxleCBDaHJpc3RlbnNlbiAgPGFj
aHJpc3RlbnNlbkB3ZWJraXQub3JnPgogCiAgICAgICAgIFVSTHMgd2l0aCBhbiBpbnZhbGlkIElQ
djQgYWRkcmVzcyBzaG91bGQgYmUgaW52YWxpZApkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYv
Q3VycmVudFRpbWUuY3BwIGIvU291cmNlL1dURi93dGYvQ3VycmVudFRpbWUuY3BwCmluZGV4IDI4
NjQxM2I4Mzc1YWRkODY0NTE5ZWQ4YTMzZGZhNjhmMzFkM2NkOWUuLjcxYWZlYmU0NDE1MjdhZDg5
YTIwNmY0OTk1NWNjNzNiYmVkN2RlMTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL0N1cnJl
bnRUaW1lLmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9DdXJyZW50VGltZS5jcHAKQEAgLTUyLDE0
ICs1MiwxMSBAQAogI2luY2x1ZGUgPG1hdGguaD4KICNpbmNsdWRlIDxzdGRpbnQuaD4KICNpbmNs
dWRlIDx0aW1lLmg+Ci0KLSNlbGlmIFBMQVRGT1JNKEVGTCkKLSNpbmNsdWRlIDxFY29yZS5oPgog
I2Vsc2UKICNpbmNsdWRlIDxzeXMvdGltZS5oPgogI2VuZGlmCiAKLSNpZiBVU0UoR0xJQikgJiYg
IVBMQVRGT1JNKEVGTCkKKyNpZiBVU0UoR0xJQikKICNpbmNsdWRlIDxnbGliLmg+CiAjZW5kaWYK
IApAQCAtMjIyLDcgKzIxOSw3IEBAIGRvdWJsZSBjdXJyZW50VGltZSgpCiAKICNlbmRpZiAvLyBV
U0UoUVVFUllfUEVSRk9STUFOQ0VfQ09VTlRFUikKIAotI2VsaWYgVVNFKEdMSUIpICYmICFQTEFU
Rk9STShFRkwpCisjZWxpZiBVU0UoR0xJQikKIAogLy8gTm90ZTogR1RLIG9uIFdpbmRvd3Mgd2ls
bCBwaWNrIHVwIHRoZSBQTEFURk9STShXSU4pIGltcGxlbWVudGF0aW9uIGFib3ZlIHdoaWNoIHBy
b3ZpZGVzCiAvLyBiZXR0ZXIgYWNjdXJhY3kgY29tcGFyZWQgd2l0aCBXaW5kb3dzIGltcGxlbWVu
dGF0aW9uIG9mIGdfZ2V0X2N1cnJlbnRfdGltZToKQEAgLTIzNSwxMyArMjMyLDYgQEAgZG91Ymxl
IGN1cnJlbnRUaW1lKCkKICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8ZG91YmxlPihub3cudHZfc2Vj
KSArIHN0YXRpY19jYXN0PGRvdWJsZT4obm93LnR2X3VzZWMgLyAxMDAwMDAwLjApOwogfQogCi0j
ZWxpZiBQTEFURk9STShFRkwpCi0KLWRvdWJsZSBjdXJyZW50VGltZSgpCi17Ci0gICAgcmV0dXJu
IGVjb3JlX3RpbWVfdW5peF9nZXQoKTsKLX0KLQogI2Vsc2UKIAogZG91YmxlIGN1cnJlbnRUaW1l
KCkKQEAgLTI1MywxNCArMjQzLDcgQEAgZG91YmxlIGN1cnJlbnRUaW1lKCkKIAogI2VuZGlmCiAK
LSNpZiBQTEFURk9STShFRkwpCi0KLWRvdWJsZSBtb25vdG9uaWNhbGx5SW5jcmVhc2luZ1RpbWUo
KQotewotICAgIHJldHVybiBlY29yZV90aW1lX2dldCgpOwotfQotCi0jZWxpZiBVU0UoR0xJQikK
KyNpZiBVU0UoR0xJQikKIAogZG91YmxlIG1vbm90b25pY2FsbHlJbmNyZWFzaW5nVGltZSgpCiB7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9EaXNhbGxvd0NUeXBlLmggYi9Tb3VyY2UvV1RG
L3d0Zi9EaXNhbGxvd0NUeXBlLmgKaW5kZXggZGM2YmNhYjg4ZmEyODA5YWFmNGQwMzZkOTk3MDkz
ZGM5ZTVmZjlhMC4uMzA1NDRlNzI5ZmQ0MTBhOTJjYzcxYmNlNGNkNzcwMWNjYTczNWM2NiAxMDA2
NDQKLS0tIGEvU291cmNlL1dURi93dGYvRGlzYWxsb3dDVHlwZS5oCisrKyBiL1NvdXJjZS9XVEYv
d3RmL0Rpc2FsbG93Q1R5cGUuaApAQCAtNDAsNyArNDAsNyBAQAogLy8gYXJlIHVzZWQgZnJvbSB3
eCBoZWFkZXJzLiBPbiBHVEsrIGZvciBNYWMgbWFueSBHVEsrIGZpbGVzIGluY2x1ZGUgPGxpYmlu
dGwuaD4KIC8vIG9yIDxnbGliL2dpMThuLWxpYi5oPiwgd2hpY2ggaW4gdHVybiBpbmNsdWRlIDx4
bG9jYWxlL19jdHlwZS5oPiB3aGljaCB1c2VzCiAvLyBpc2FjaWkoKS4gCi0jaWYgIShPUyhEQVJX
SU4pICYmIFBMQVRGT1JNKEdUSykpICYmICFQTEFURk9STShFRkwpICYmICFkZWZpbmVkKF9MSUJD
UFBfVkVSU0lPTikgJiYgZGVmaW5lZChfX0dMSUJDX18pCisjaWYgIShPUyhEQVJXSU4pICYmIFBM
QVRGT1JNKEdUSykpICYmICFkZWZpbmVkKF9MSUJDUFBfVkVSU0lPTikgJiYgZGVmaW5lZChfX0dM
SUJDX18pCiAKICNpbmNsdWRlIDxjdHlwZS5oPgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0
Zi9GZWF0dXJlRGVmaW5lcy5oIGIvU291cmNlL1dURi93dGYvRmVhdHVyZURlZmluZXMuaAppbmRl
eCAxMDNlYTEwN2UwMTkwNDdiYjlhOWQyYTUxZWUxM2RjZjY2YWU5YWQ4Li44OGEzYmRhODg4YWFj
YTIzOTRlNTg1OWE1MjQ2Yjg3NmE0MDU4YzE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9G
ZWF0dXJlRGVmaW5lcy5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL0ZlYXR1cmVEZWZpbmVzLmgKQEAg
LTMyMiwxMCArMzIyLDYgQEAgdGhlIHB1YmxpYyBpT1MgU0RLLiBXZSB3aWxsIGFsc28gbmVlZCB0
byB1cGRhdGUgdGhlIEZlYXR1cmVEZWZpbmVzLnhjY29uZmlnIGZpbGUKIAogI2VuZGlmIC8qIFBM
QVRGT1JNKFdJTl9DQUlSTykgKi8KIAotLyogLS0tLS0tLS0tIEVGTCBwb3J0IChVbml4KSAtLS0t
LS0tLS0gKi8KLSNpZiBQTEFURk9STShFRkwpCi0jZW5kaWYgLyogUExBVEZPUk0oRUZMKSAqLwot
CiAvKiAtLS0tLS0tLS0gR3RrIHBvcnQgKFVuaXgsIFdpbmRvd3MsIE1hYykgLS0tLS0tLS0tICov
CiAjaWYgUExBVEZPUk0oR1RLKQogI2lmICFkZWZpbmVkKEVOQUJMRV9LRVlCT0FSRF9LRVlfQVRU
UklCVVRFKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvTWFpblRocmVhZC5jcHAgYi9Tb3Vy
Y2UvV1RGL3d0Zi9NYWluVGhyZWFkLmNwcAppbmRleCA0NzJiZWUyN2FkZjRkN2UwYTJiZjYzYjhm
NTNkZjBjODM0NDU1M2FlLi40MWFkMDYyNGMxZDk3YjhhZTAyNGNkMzliNGFhNzg0NGEzOGFmOTli
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9NYWluVGhyZWFkLmNwcAorKysgYi9Tb3VyY2Uv
V1RGL3d0Zi9NYWluVGhyZWFkLmNwcApAQCAtNDEsNyArNDEsNyBAQAogbmFtZXNwYWNlIFdURiB7
CiAKIHN0YXRpYyBib29sIGNhbGxiYWNrc1BhdXNlZDsgLy8gVGhpcyBnbG9iYWwgdmFyaWFibGUg
aXMgb25seSBhY2Nlc3NlZCBmcm9tIG1haW4gdGhyZWFkLgotI2lmICFPUyhEQVJXSU4pIHx8IFBM
QVRGT1JNKEVGTCkgfHwgUExBVEZPUk0oR1RLKQorI2lmICFPUyhEQVJXSU4pIHx8IFBMQVRGT1JN
KEdUSykKIHN0YXRpYyBUaHJlYWRJZGVudGlmaWVyIG1haW5UaHJlYWRJZGVudGlmaWVyOwogI2Vu
ZGlmCiAKQEAgLTUzLDcgKzUzLDcgQEAgc3RhdGljIERlcXVlPEZ1bmN0aW9uPHZvaWQgKCk+PiYg
ZnVuY3Rpb25RdWV1ZSgpCiAgICAgcmV0dXJuIGZ1bmN0aW9uUXVldWU7CiB9CiAKLSNpZiAhT1Mo
REFSV0lOKSB8fCBQTEFURk9STShFRkwpIHx8IFBMQVRGT1JNKEdUSykKKyNpZiAhT1MoREFSV0lO
KSB8fCBQTEFURk9STShHVEspCiAKIHZvaWQgaW5pdGlhbGl6ZU1haW5UaHJlYWQoKQogewpAQCAt
MTc2LDcgKzE3Niw3IEBAIHZvaWQgc2V0TWFpblRocmVhZENhbGxiYWNrc1BhdXNlZChib29sIHBh
dXNlZCkKICAgICAgICAgc2NoZWR1bGVEaXNwYXRjaEZ1bmN0aW9uc09uTWFpblRocmVhZCgpOwog
fQogCi0jaWYgIU9TKERBUldJTikgfHwgUExBVEZPUk0oRUZMKSB8fCBQTEFURk9STShHVEspCisj
aWYgIU9TKERBUldJTikgfHwgUExBVEZPUk0oR1RLKQogYm9vbCBpc01haW5UaHJlYWQoKQogewog
ICAgIHJldHVybiBjdXJyZW50VGhyZWFkKCkgPT0gbWFpblRocmVhZElkZW50aWZpZXI7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9NYWluVGhyZWFkLmggYi9Tb3VyY2UvV1RGL3d0Zi9NYWlu
VGhyZWFkLmgKaW5kZXggZWYzODZkNDUwOGU2N2VkMWUyOThiM2ZhYTBjOGJjYWZhMjQ0NTQ3Ni4u
ZTBhNTg1ZjM2MmNlZDdlOTlkOTY5MjcxZTEyYTM2MDFlNzE2Nzc2NCAxMDA2NDQKLS0tIGEvU291
cmNlL1dURi93dGYvTWFpblRocmVhZC5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL01haW5UaHJlYWQu
aApAQCAtODYsNyArODYsNyBAQCB2b2lkIGluaXRpYWxpemVNYWluVGhyZWFkUGxhdGZvcm0oKTsK
IHZvaWQgc2NoZWR1bGVEaXNwYXRjaEZ1bmN0aW9uc09uTWFpblRocmVhZCgpOwogdm9pZCBkaXNw
YXRjaEZ1bmN0aW9uc0Zyb21NYWluVGhyZWFkKCk7CiAKLSNpZiBPUyhEQVJXSU4pICYmICFQTEFU
Rk9STShFRkwpICYmICFQTEFURk9STShHVEspCisjaWYgT1MoREFSV0lOKSAmJiAhUExBVEZPUk0o
R1RLKQogI2lmICFVU0UoV0VCX1RIUkVBRCkKIC8vIFRoaXMgdmVyc2lvbiBvZiBpbml0aWFsaXpl
TWFpblRocmVhZCBzZXRzIHVwIHRoZSBtYWluIHRocmVhZCBhcyBjb3JyZXNwb25kaW5nCiAvLyB0
byB0aGUgcHJvY2VzcydzIG1haW4gdGhyZWFkLCBhbmQgbm90IG5lY2Vzc2FyaWx5IHRoZSB0aHJl
YWQgdGhhdCBjYWxscyB0aGlzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybS5o
IGIvU291cmNlL1dURi93dGYvUGxhdGZvcm0uaAppbmRleCBiOWJkZDM4M2Y3MjVkOTkzMWU1Y2Rl
NmJjZmE4YjEzYWIyYmFhZGM4Li42ZjgyOTM4NTQ4ODUzOWU0ZjlkNzg5OTY1NjBjOGNjMjAyYWNl
ZTRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybS5oCisrKyBiL1NvdXJjZS9X
VEYvd3RmL1BsYXRmb3JtLmgKQEAgLTQ0MSwxNSArNDQxLDEyIEBACiAjZW5kaWYKIAogLyogRklY
TUU6IHRoZXNlIGFyZSBhbGwgbWl4ZXMgb2YgT1MsIG9wZXJhdGluZyBlbnZpcm9ubWVudCBhbmQg
cG9saWN5IGNob2ljZXMuICovCi0vKiBQTEFURk9STShFRkwpICovCiAvKiBQTEFURk9STShHVEsp
ICovCiAvKiBQTEFURk9STShNQUMpICovCiAvKiBQTEFURk9STShJT1MpICovCiAvKiBQTEFURk9S
TShJT1NfU0lNVUxBVE9SKSAqLwogLyogUExBVEZPUk0oV0lOKSAqLwotI2lmIGRlZmluZWQoQlVJ
TERJTkdfRUZMX18pCi0jZGVmaW5lIFdURl9QTEFURk9STV9FRkwgMQotI2VsaWYgZGVmaW5lZChC
VUlMRElOR19HVEtfXykKKyNpZiBkZWZpbmVkKEJVSUxESU5HX0dUS19fKQogI2RlZmluZSBXVEZf
UExBVEZPUk1fR1RLIDEKICNlbGlmIGRlZmluZWQoQlVJTERJTkdfSlNDT05MWV9fKQogLyogSlND
T25seSBkb2VzIG5vdCBwcm92aWRlIFBMQVRGT1JNKCkgbWFjcm8gKi8KQEAgLTQ5NSw3ICs0OTIs
NyBAQAogI2RlZmluZSBVU0VfQ0EgMQogI2VuZGlmCiAKLSNpZiBQTEFURk9STShHVEspIHx8IFBM
QVRGT1JNKEVGTCkKKyNpZiBQTEFURk9STShHVEspCiAjZGVmaW5lIFVTRV9DQUlSTyAxCiAjZGVm
aW5lIFVTRV9HTElCIDEKICNkZWZpbmUgVVNFX0ZSRUVUWVBFIDEKQEAgLTUwNCw5ICs1MDEsNyBA
QAogI2RlZmluZSBVU0VfV0VCUCAxCiAjZW5kaWYKIAotI2lmIFBMQVRGT1JNKEVGTCkKLSNkZWZp
bmUgR0xJQl9WRVJTSU9OX01JTl9SRVFVSVJFRCBHTElCX1ZFUlNJT05fMl8zOAotI2VsaWYgUExB
VEZPUk0oR1RLKQorI2lmIFBMQVRGT1JNKEdUSykKICNkZWZpbmUgR0xJQl9WRVJTSU9OX01JTl9S
RVFVSVJFRCBHTElCX1ZFUlNJT05fMl8zNgogI2VuZGlmCiAKQEAgLTYxMyw3ICs2MDgsNyBAQAog
I2VuZGlmCiAKICNpZiAhZGVmaW5lZChIQVZFX0FDQ0VTU0lCSUxJVFkpCi0jaWYgUExBVEZPUk0o
Q09DT0EpIHx8IFBMQVRGT1JNKFdJTikgfHwgUExBVEZPUk0oR1RLKSB8fCBQTEFURk9STShFRkwp
CisjaWYgUExBVEZPUk0oQ09DT0EpIHx8IFBMQVRGT1JNKFdJTikgfHwgUExBVEZPUk0oR1RLKQog
I2RlZmluZSBIQVZFX0FDQ0VTU0lCSUxJVFkgMQogI2VuZGlmCiAjZW5kaWYgLyogIWRlZmluZWQo
SEFWRV9BQ0NFU1NJQklMSVRZKSAqLwpAQCAtNzE0LDcgKzcwOSw3IEBACiAvKiBJZiBwb3NzaWJs
ZSwgdHJ5IHRvIGVuYWJsZSBhIGRpc2Fzc2VtYmxlci4gVGhpcyBpcyBvcHRpb25hbC4gV2UgcHJv
Y2VlZCBpbiB0d28KICAgIHN0ZXBzOiBmaXJzdCB3ZSB0cnkgdG8gZmluZCBzb21lIGRpc2Fzc2Vt
YmxlciB0aGF0IHdlIGNhbiB1c2UsIGFuZCB0aGVuIHdlCiAgICBkZWNpZGUgaWYgdGhlIGhpZ2gt
bGV2ZWwgZGlzYXNzZW1ibGVyIEFQSSBjYW4gYmUgZW5hYmxlZC4gKi8KLSNpZiAhZGVmaW5lZChV
U0VfVURJUzg2KSAmJiBFTkFCTEUoSklUKSAmJiAoKE9TKERBUldJTikgJiYgIVBMQVRGT1JNKEVG
TCkgJiYgIVBMQVRGT1JNKEdUSykpIHx8IChPUyhMSU5VWCkgJiYgKFBMQVRGT1JNKEVGTCkgfHwg
UExBVEZPUk0oR1RLKSkpKSBcCisjaWYgIWRlZmluZWQoVVNFX1VESVM4NikgJiYgRU5BQkxFKEpJ
VCkgJiYgKChPUyhEQVJXSU4pICYmICFQTEFURk9STShHVEspKSB8fCAoT1MoTElOVVgpICYmIFBM
QVRGT1JNKEdUSykpKSBcCiAgICAgJiYgKENQVShYODYpIHx8IENQVShYODZfNjQpKQogI2RlZmlu
ZSBVU0VfVURJUzg2IDEKICNlbmRpZgpAQCAtNzQ1LDcgKzc0MCw3IEBACiAjZGVmaW5lIEVOQUJM
RV9ERkdfSklUIDEKICNlbmRpZgogLyogRW5hYmxlIHRoZSBERkcgSklUIG9uIEFSTXY3LiAgT25s
eSB0ZXN0ZWQgb24gaU9TIGFuZCBRdC9HVEsrIExpbnV4LiAqLwotI2lmIChDUFUoQVJNX1RIVU1C
MikgfHwgQ1BVKEFSTTY0KSkgJiYgKFBMQVRGT1JNKElPUykgfHwgUExBVEZPUk0oR1RLKSB8fCBQ
TEFURk9STShFRkwpKQorI2lmIChDUFUoQVJNX1RIVU1CMikgfHwgQ1BVKEFSTTY0KSkgJiYgKFBM
QVRGT1JNKElPUykgfHwgUExBVEZPUk0oR1RLKSkKICNkZWZpbmUgRU5BQkxFX0RGR19KSVQgMQog
I2VuZGlmCiAvKiBFbmFibGUgdGhlIERGRyBKSVQgb24gQVJNIGFuZCBNSVBTLiAqLwpAQCAtNzgy
LDcgKzc3Nyw3IEBACiAgKiBJbiBjb25maWd1cmF0aW9ucyBvdGhlciB0aGFuIFdpbmRvd3MgYW5k
IERhcndpbiwgYmVjYXVzZSBsYXlvdXQgb2YgbWNvbnRleHRfdCBkZXBlbmRzIG9uIHN0YW5kYXJk
IGxpYnJhcmllcyAobGlrZSBnbGliYyksCiAgKiBzYW1wbGluZyBwcm9maWxlciBpcyBlbmFibGVk
IGlmIFdlYktpdCB1c2VzIHB0aHJlYWRzIGFuZCBnbGliYy4gKi8KICNpZiAhZGVmaW5lZChFTkFC
TEVfU0FNUExJTkdfUFJPRklMRVIpCi0jaWYgKE9TKERBUldJTikgfHwgT1MoV0lORE9XUykgfHwg
UExBVEZPUk0oR1RLKSB8fCBQTEFURk9STShFRkwpKSAmJiBFTkFCTEUoSklUKQorI2lmIChPUyhE
QVJXSU4pIHx8IE9TKFdJTkRPV1MpIHx8IFBMQVRGT1JNKEdUSykpICYmIEVOQUJMRShKSVQpCiAj
ZGVmaW5lIEVOQUJMRV9TQU1QTElOR19QUk9GSUxFUiAxCiAjZWxzZQogI2RlZmluZSBFTkFCTEVf
U0FNUExJTkdfUFJPRklMRVIgMApAQCAtOTI2LDcgKzkyMSw3IEBACiAKIC8qIENTUyBTZWxlY3Rv
ciBKSVQgQ29tcGlsZXIgKi8KICNpZiAhZGVmaW5lZChFTkFCTEVfQ1NTX1NFTEVDVE9SX0pJVCkK
LSNpZiAoQ1BVKFg4Nl82NCkgfHwgQ1BVKEFSTTY0KSB8fCAoQ1BVKEFSTV9USFVNQjIpICYmIFBM
QVRGT1JNKElPUykpKSAmJiBFTkFCTEUoSklUKSAmJiAoT1MoREFSV0lOKSB8fCBQTEFURk9STShH
VEspIHx8IFBMQVRGT1JNKEVGTCkpCisjaWYgKENQVShYODZfNjQpIHx8IENQVShBUk02NCkgfHwg
KENQVShBUk1fVEhVTUIyKSAmJiBQTEFURk9STShJT1MpKSkgJiYgRU5BQkxFKEpJVCkgJiYgKE9T
KERBUldJTikgfHwgUExBVEZPUk0oR1RLKSkKICNkZWZpbmUgRU5BQkxFX0NTU19TRUxFQ1RPUl9K
SVQgMQogI2Vsc2UKICNkZWZpbmUgRU5BQkxFX0NTU19TRUxFQ1RPUl9KSVQgMApAQCAtOTgxLDEx
ICs5NzYsNyBAQAogI2luY2x1ZGUgPHd0Zi9nbGliL0dUeXBlZGVmcy5oPgogI2VuZGlmCiAKLSNp
ZiBQTEFURk9STShFRkwpCi0jaW5jbHVkZSA8d3RmL2VmbC9FZmxUeXBlZGVmcy5oPgotI2VuZGlm
Ci0KLS8qIEZJWE1FOiBUaGlzIGRlZmluZSB3b24ndCBiZSBuZWVkZWQgb25jZSAjMjc1NTEgaXMg
ZnVsbHkgbGFuZGVkLiBIb3dldmVyLCAKKy8qIEZJWE1FOiBUaGlzIGRlZmluZSB3b24ndCBiZSBu
ZWVkZWQgb25jZSAjMjc1NTEgaXMgZnVsbHkgbGFuZGVkLiBIb3dldmVyLAogICAgc2luY2UgbW9z
dCBwb3J0cyB0cnkgdG8gc3VwcG9ydCBzdWItcHJvamVjdCBpbmRlcGVuZGVuY2UsIGFkZGluZyBu
ZXcgaGVhZGVycwogICAgdG8gV1RGIGNhdXNlcyBtYW55IHBvcnRzIHRvIGJyZWFrLCBhbmQgc28g
dGhpcyB3YXkgd2UgY2FuIGFkZHJlc3MgdGhlIGJ1aWxkCiAgICBicmVha2FnZXMgb25lIHBvcnQg
YXQgYSB0aW1lLiAqLwpAQCAtOTk3LDcgKzk4OCw3IEBACiAjZGVmaW5lIFVTRV9FWFBPUlRfTUFD
Uk9TX0ZPUl9URVNUSU5HIDEKICNlbmRpZgogCi0jaWYgUExBVEZPUk0oR1RLKSB8fCBQTEFURk9S
TShFRkwpCisjaWYgUExBVEZPUk0oR1RLKQogI2RlZmluZSBVU0VfVU5JWF9ET01BSU5fU09DS0VU
UyAxCiAjZW5kaWYKIApAQCAtMTA3Nyw3ICsxMDY4LDcgQEAKIAogI2RlZmluZSBVU0VfR1JBTU1B
Ul9DSEVDS0lORyAxCiAKLSNpZiBQTEFURk9STShDT0NPQSkgfHwgUExBVEZPUk0oRUZMKSB8fCBQ
TEFURk9STShHVEspCisjaWYgUExBVEZPUk0oQ09DT0EpIHx8IFBMQVRGT1JNKEdUSykKICNkZWZp
bmUgVVNFX1VOSUZJRURfVEVYVF9DSEVDS0lORyAxCiAjZW5kaWYKICNpZiBQTEFURk9STShNQUMp
CkBAIC0xMTE0LDcgKzExMDUsNyBAQAogI2RlZmluZSBFTkFCTEVfUkVTT1VSQ0VfVVNBR0UgMQog
I2VuZGlmCiAKLSNpZiBQTEFURk9STShHVEspIHx8IFBMQVRGT1JNKEVGTCkKKyNpZiBQTEFURk9S
TShHVEspCiAjdW5kZWYgRU5BQkxFX09QRU5UWVBFX1ZFUlRJQ0FMCiAjZGVmaW5lIEVOQUJMRV9P
UEVOVFlQRV9WRVJUSUNBTCAxCiAjZGVmaW5lIEVOQUJMRV9DU1MzX1RFWFRfREVDT1JBVElPTl9T
S0lQX0lOSyAxCkBAIC0xMTg0LDE4ICsxMTc1LDEzIEBACiAvKiBVc2UgV2luZG93cyBtZXNzYWdl
IHB1bXAgYWJzdHJhY3Rpb24uCiAgKiBFdmVuIGlmIHRoZSBwb3J0IGlzIEFwcGxlV2luLCB3ZSB1
c2UgdGhlIFdpbmRvd3MgbWVzc2FnZSBwdW1wIHN5c3RlbSBmb3IgdGhlIGV2ZW50IGxvb3AsCiAg
KiBzbyB0aGF0IFVTRShXSU5ET1dTX0VWRU5UX0xPT1ApICYmIFVTRShDRikgY2FuIGJlIHRydWUu
Ci0gKiBBbmQgUExBVEZPUk0oV0lOKSwgUExBVEZPUk0oRUZMKSBhbmQgUExBVEZPUk0oR1RLKSBh
cmUgZXhjbHVzaXZlLiBJZiB0aGUgcG9ydCBpcyBHVEssCisgKiBBbmQgUExBVEZPUk0oV0lOKSBh
bmQgUExBVEZPUk0oR1RLKSBhcmUgZXhjbHVzaXZlLiBJZiB0aGUgcG9ydCBpcyBHVEssCiAgKiBQ
TEFURk9STShXSU4pIHNob3VsZCBiZSBmYWxzZS4gQW5kIGluIHRoYXQgY2FzZSwgR0xpYidzIGV2
ZW50IGxvb3AgaXMgdXNlZC4KICAqLwogI2RlZmluZSBVU0VfV0lORE9XU19FVkVOVF9MT09QIDEK
ICNlbGlmIFBMQVRGT1JNKENPQ09BKQogLyogT1MgWCBhbmQgSU9TLiBVc2UgQ29yZUZvdW5kYXRp
b24gJiBHQ0QgYWJzdHJhY3Rpb24uICovCiAjZGVmaW5lIFVTRV9DT0NPQV9FVkVOVF9MT09QIDEK
LSNlbGlmIFBMQVRGT1JNKEVGTCkKLS8qIEVGTCBwb3J0IHVzZXMgR0xpYi4gQnV0IGl0IHVzZXMg
aXRzIG93biBldmVudCBsb29wIGFic3RyYWN0aW9uLgotICogVGh1cywgVVNFKEVGTF9FVkVOVF9M
T09QKSAmJiBVU0UoR0xJQikgY2FuIGJlIHRydWUuCi0gKi8KLSNkZWZpbmUgVVNFX0VGTF9FVkVO
VF9MT09QIDEKICNlbGlmIFVTRShHTElCKQogLyogVXNlIEdMaWIncyBldmVudCBsb29wIGFic3Ry
YWN0aW9uLiBQcmltYXJpbHkgR1RLIHBvcnQgdXNlcyBpdC4gKi8KICNkZWZpbmUgVVNFX0dMSUJf
RVZFTlRfTE9PUCAxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9SdW5Mb29wLmggYi9Tb3Vy
Y2UvV1RGL3d0Zi9SdW5Mb29wLmgKaW5kZXggYWE1MDNmNDZjZWZmNzQ5YjE4M2M2NzdlYTA1OTJl
MTA4ZTgyYTM3Ny4uZTkyNDUyNzk1YjRiNTE5MDAzNDhkNjM2N2JkOGI5YjM2ODUwMjVlOCAxMDA2
NDQKLS0tIGEvU291cmNlL1dURi93dGYvUnVuTG9vcC5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL1J1
bkxvb3AuaApAQCAtNDAsMTEgKzQwLDYgQEAKICNpbmNsdWRlIDx3dGYvZ2xpYi9HUmVmUHRyLmg+
CiAjZW5kaWYKIAotI2lmIFVTRShFRkxfRVZFTlRfTE9PUCkKLSNpbmNsdWRlIDxFY29yZS5oPgot
I2luY2x1ZGUgPHd0Zi9lZmwvVW5pcXVlUHRyRWZsLmg+Ci0jZW5kaWYKLQogbmFtZXNwYWNlIFdU
RiB7CiAKIGNsYXNzIFJ1bkxvb3AgOiBwdWJsaWMgRnVuY3Rpb25EaXNwYXRjaGVyIHsKQEAgLTEx
NCwxMCArMTA5LDYgQEAgcHVibGljOgogI2VsaWYgVVNFKENPQ09BX0VWRU5UX0xPT1ApCiAgICAg
ICAgIHN0YXRpYyB2b2lkIHRpbWVyRmlyZWQoQ0ZSdW5Mb29wVGltZXJSZWYsIHZvaWQqKTsKICAg
ICAgICAgUmV0YWluUHRyPENGUnVuTG9vcFRpbWVyUmVmPiBtX3RpbWVyOwotI2VsaWYgVVNFKEVG
TF9FVkVOVF9MT09QKQotICAgICAgICBzdGF0aWMgYm9vbCB0aW1lckZpcmVkKHZvaWQqIGRhdGEp
OwotICAgICAgICBFY29yZV9UaW1lciogbV90aW1lcjsKLSAgICAgICAgYm9vbCBtX2lzUmVwZWF0
aW5nOwogI2VsaWYgVVNFKEdMSUJfRVZFTlRfTE9PUCkKICAgICAgICAgdm9pZCB1cGRhdGVSZWFk
eVRpbWUoKTsKICAgICAgICAgR1JlZlB0cjxHU291cmNlPiBtX3NvdXJjZTsKQEAgLTE3MCwxNCAr
MTYxLDYgQEAgcHJpdmF0ZToKICAgICBzdGF0aWMgdm9pZCBwZXJmb3JtV29yayh2b2lkKik7CiAg
ICAgUmV0YWluUHRyPENGUnVuTG9vcFJlZj4gbV9ydW5Mb29wOwogICAgIFJldGFpblB0cjxDRlJ1
bkxvb3BTb3VyY2VSZWY+IG1fcnVuTG9vcFNvdXJjZTsKLSNlbGlmIFVTRShFRkxfRVZFTlRfTE9P
UCkKLSAgICBNdXRleCBtX3BpcGVMb2NrOwotICAgIEVmbFVuaXF1ZVB0cjxFY29yZV9QaXBlPiBt
X3BpcGU7Ci0KLSAgICBNdXRleCBtX3dha2VVcEV2ZW50UmVxdWVzdGVkTG9jazsKLSAgICBib29s
IG1fd2FrZVVwRXZlbnRSZXF1ZXN0ZWQ7Ci0KLSAgICBzdGF0aWMgdm9pZCB3YWtlVXBFdmVudCh2
b2lkKiBkYXRhLCB2b2lkKiwgdW5zaWduZWQpOwogI2VsaWYgVVNFKEdMSUJfRVZFTlRfTE9PUCkK
ICAgICBHUmVmUHRyPEdNYWluQ29udGV4dD4gbV9tYWluQ29udGV4dDsKICAgICBWZWN0b3I8R1Jl
ZlB0cjxHTWFpbkxvb3A+PiBtX21haW5Mb29wczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3Rm
L1dvcmtRdWV1ZS5oIGIvU291cmNlL1dURi93dGYvV29ya1F1ZXVlLmgKaW5kZXggZDkxODRiNDgy
N2JmMTBiYTM4YTQ4MTQ4MDViMmYzMzY0NmQ3NmUwMy4uNDI5YzM4ZDg2MzA3MDA4OGE1NTI5MTI5
Njk3YTc4ODlkMjJlZDVhMCAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvV29ya1F1ZXVlLmgK
KysrIGIvU291cmNlL1dURi93dGYvV29ya1F1ZXVlLmgKQEAgLTM4LDEwICszOCw2IEBACiAjaW5j
bHVkZSA8ZGlzcGF0Y2gvZGlzcGF0Y2guaD4KICNlbmRpZgogCi0jaWYgVVNFKEVGTF9FVkVOVF9M
T09QKQotI2luY2x1ZGUgPERpc3BhdGNoUXVldWVFZmwuaD4KLSNlbmRpZgotCiAjaWYgVVNFKFdJ
TkRPV1NfRVZFTlRfTE9PUCkKICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAjZW5kaWYKQEAgLTc1
LDEwICs3MSw3IEBAIHB1YmxpYzoKIAogICAgIFdURl9FWFBPUlRfUFJJVkFURSBzdGF0aWMgdm9p
ZCBjb25jdXJyZW50QXBwbHkoc2l6ZV90IGl0ZXJhdGlvbnMsIGNvbnN0IHN0ZDo6ZnVuY3Rpb248
dm9pZCAoc2l6ZV90IGluZGV4KT4mKTsKIAotI2lmIFVTRShFRkxfRVZFTlRfTE9PUCkKLSAgICB2
b2lkIHJlZ2lzdGVyU29ja2V0RXZlbnRIYW5kbGVyKGludCwgc3RkOjpmdW5jdGlvbjx2b2lkICgp
Pik7Ci0gICAgdm9pZCB1bnJlZ2lzdGVyU29ja2V0RXZlbnRIYW5kbGVyKGludCk7Ci0jZWxpZiBV
U0UoQ09DT0FfRVZFTlRfTE9PUCkKKyNpZiBVU0UoQ09DT0FfRVZFTlRfTE9PUCkKICAgICBkaXNw
YXRjaF9xdWV1ZV90IGRpc3BhdGNoUXVldWUoKSBjb25zdCB7IHJldHVybiBtX2Rpc3BhdGNoUXVl
dWU7IH0KICNlbGlmIFVTRShHTElCX0VWRU5UX0xPT1ApIHx8IFVTRShHRU5FUklDX0VWRU5UX0xP
T1ApCiAgICAgUnVuTG9vcCYgcnVuTG9vcCgpIGNvbnN0IHsgcmV0dXJuICptX3J1bkxvb3A7IH0K
QEAgLTk5LDkgKzkyLDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHBlcmZvcm1Xb3JrT25SZWdpc3Rl
cmVkV29ya1RocmVhZCgpOwogI2VuZGlmCiAKLSNpZiBVU0UoRUZMX0VWRU5UX0xPT1ApCi0gICAg
UmVmUHRyPERpc3BhdGNoUXVldWU+IG1fZGlzcGF0Y2hRdWV1ZTsKLSNlbGlmIFVTRShDT0NPQV9F
VkVOVF9MT09QKQorI2lmIFVTRShDT0NPQV9FVkVOVF9MT09QKQogICAgIHN0YXRpYyB2b2lkIGV4
ZWN1dGVGdW5jdGlvbih2b2lkKik7CiAgICAgZGlzcGF0Y2hfcXVldWVfdCBtX2Rpc3BhdGNoUXVl
dWU7CiAjZWxpZiBVU0UoV0lORE9XU19FVkVOVF9MT09QKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dU
Ri93dGYvZWZsL0Rpc3BhdGNoUXVldWVFZmwuY3BwIGIvU291cmNlL1dURi93dGYvZWZsL0Rpc3Bh
dGNoUXVldWVFZmwuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiNGFkMmJkYzQz
OGY5ZDk0NTdlM2Y3ZmI0OTIyNGM2ODE1OTc2ZGFmLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XVEYvd3RmL2VmbC9EaXNwYXRjaFF1ZXVlRWZs
LmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDI1MyArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChD
KSAyMDEzIFNhbXN1bmcgRWxlY3Ryb25pY3MuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
Ci0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMg
Q09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
Ci0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0g
KiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQot
ICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICov
Ci0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJEaXNwYXRjaFF1ZXVlRWZsLmgiCi0K
LSNpbmNsdWRlIDxEaXNwYXRjaFF1ZXVlV29ya0l0ZW1FZmwuaD4KLSNpbmNsdWRlIDxzeXMvdGlt
ZXJmZC5oPgotI2luY2x1ZGUgPHVuaXN0ZC5oPgotI2luY2x1ZGUgPHd0Zi9Bc3NlcnRpb25zLmg+
Ci0jaW5jbHVkZSA8d3RmL0N1cnJlbnRUaW1lLmg+Ci0jaW5jbHVkZSA8d3RmL1RocmVhZGluZy5o
PgotCi1zdGF0aWMgY29uc3QgaW50IG1pY3JvU2Vjb25kc1BlclNlY29uZCA9IDEwMDAwMDA7Ci1z
dGF0aWMgY29uc3QgaW50IG5hbm9TZWNvbmRzUGVyU2Vjb25kID0gMTAwMDAwMDAwMDsKLXN0YXRp
YyBjb25zdCBpbnQgaW52YWxpZFNvY2tldERlc2NyaXB0b3IgPSAtMTsKLXN0YXRpYyBjb25zdCBj
aGFyIHdha2VVcFRocmVhZE1lc3NhZ2UgPSAnVyc7Ci0KLWNsYXNzIERpc3BhdGNoUXVldWU6OlRo
cmVhZENvbnRleHQgewotcHVibGljOgotICAgIHN0YXRpYyB2b2lkIHN0YXJ0KGNvbnN0IGNoYXIq
IG5hbWUsIFBhc3NSZWZQdHI8RGlzcGF0Y2hRdWV1ZT4gZGlzcGF0Y2hRdWV1ZSkKLSAgICB7Ci0g
ICAgICAgIC8vIFRoZSBEaXNwYXRjaFF1ZXVlVGhyZWFkQ29udGV4dCBpbnN0YW5jZSB3aWxsIGJl
IHBhc3NlZCB0byB0aGUgdGhyZWFkIGZ1bmN0aW9uIGFuZCBkZWxldGVkIGluIGl0LgotICAgICAg
ICBkZXRhY2hUaHJlYWQoY3JlYXRlVGhyZWFkKHJlaW50ZXJwcmV0X2Nhc3Q8V1RGOjpUaHJlYWRG
dW5jdGlvbj4oJlRocmVhZENvbnRleHQ6OmZ1bmN0aW9uKSwgbmV3IFRocmVhZENvbnRleHQoZGlz
cGF0Y2hRdWV1ZSksIG5hbWUpKTsKLSAgICB9Ci0KLXByaXZhdGU6Ci0gICAgVGhyZWFkQ29udGV4
dChQYXNzUmVmUHRyPERpc3BhdGNoUXVldWU+IGRpc3BhdGNoUXVldWUpCi0gICAgICAgIDogbV9k
aXNwYXRjaFF1ZXVlKGRpc3BhdGNoUXVldWUpCi0gICAgewotICAgIH0KLQotICAgIHN0YXRpYyB2
b2lkKiBmdW5jdGlvbihUaHJlYWRDb250ZXh0KiB0aHJlYWRDb250ZXh0KQotICAgIHsKLSAgICAg
ICAgc3RkOjp1bmlxdWVfcHRyPFRocmVhZENvbnRleHQ+KHRocmVhZENvbnRleHQpLT5tX2Rpc3Bh
dGNoUXVldWUtPmRpc3BhdGNoUXVldWVUaHJlYWQoKTsKLSAgICAgICAgcmV0dXJuIDA7Ci0gICAg
fQotCi0gICAgUmVmUHRyPERpc3BhdGNoUXVldWU+IG1fZGlzcGF0Y2hRdWV1ZTsKLX07Ci0KLVBh
c3NSZWZQdHI8RGlzcGF0Y2hRdWV1ZT4gRGlzcGF0Y2hRdWV1ZTo6Y3JlYXRlKGNvbnN0IGNoYXIq
IG5hbWUpCi17Ci0gICAgUmVmUHRyPERpc3BhdGNoUXVldWU+IGRpc3BhdGNoUXVldWUgPSBhZG9w
dFJlZjxEaXNwYXRjaFF1ZXVlPihuZXcgRGlzcGF0Y2hRdWV1ZSgpKTsKLQotICAgIFRocmVhZENv
bnRleHQ6OnN0YXJ0KG5hbWUsIGRpc3BhdGNoUXVldWUpOwotCi0gICAgcmV0dXJuIGRpc3BhdGNo
UXVldWUucmVsZWFzZSgpOwotfQotCi1EaXNwYXRjaFF1ZXVlOjpEaXNwYXRjaFF1ZXVlKCkKLSAg
ICA6IG1faXNUaHJlYWRSdW5uaW5nKHRydWUpCi17Ci0gICAgaW50IGZkc1syXTsKLSAgICBpZiAo
cGlwZShmZHMpKQotICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLQotICAgIG1fcmVhZEZy
b21QaXBlRGVzY3JpcHRvciA9IGZkc1swXTsKLSAgICBtX3dyaXRlVG9QaXBlRGVzY3JpcHRvciA9
IGZkc1sxXTsKLSAgICBGRF9aRVJPKCZtX2ZpbGVEZXNjcmlwdG9yU2V0KTsKLSAgICBGRF9TRVQo
bV9yZWFkRnJvbVBpcGVEZXNjcmlwdG9yLCAmbV9maWxlRGVzY3JpcHRvclNldCk7Ci0gICAgbV9t
YXhGaWxlRGVzY3JpcHRvciA9IG1fcmVhZEZyb21QaXBlRGVzY3JpcHRvcjsKLQotICAgIG1fc29j
a2V0RGVzY3JpcHRvciA9IGludmFsaWRTb2NrZXREZXNjcmlwdG9yOwotfQotCi1EaXNwYXRjaFF1
ZXVlOjp+RGlzcGF0Y2hRdWV1ZSgpCi17Ci0gICAgY2xvc2UobV9yZWFkRnJvbVBpcGVEZXNjcmlw
dG9yKTsKLSAgICBjbG9zZShtX3dyaXRlVG9QaXBlRGVzY3JpcHRvcik7Ci19Ci0KLXZvaWQgRGlz
cGF0Y2hRdWV1ZTo6ZGlzcGF0Y2goc3RkOjp1bmlxdWVfcHRyPFdvcmtJdGVtPiBpdGVtKQotewot
ICAgIHsKLSAgICAgICAgTXV0ZXhMb2NrZXIgbG9ja2VyKG1fd29ya0l0ZW1zTG9jayk7Ci0gICAg
ICAgIG1fd29ya0l0ZW1zLmFwcGVuZChXVEZNb3ZlKGl0ZW0pKTsKLSAgICB9Ci0KLSAgICB3YWtl
VXBUaHJlYWQoKTsKLX0KLQotdm9pZCBEaXNwYXRjaFF1ZXVlOjpkaXNwYXRjaChzdGQ6OnVuaXF1
ZV9wdHI8VGltZXJXb3JrSXRlbT4gaXRlbSkKLXsKLSAgICBpbnNlcnRUaW1lcldvcmtJdGVtKFdU
Rk1vdmUoaXRlbSkpOwotICAgIHdha2VVcFRocmVhZCgpOwotfQotCi12b2lkIERpc3BhdGNoUXVl
dWU6OnN0b3BUaHJlYWQoKQotewotICAgIEFTU0VSVChtX3NvY2tldERlc2NyaXB0b3IgPT0gaW52
YWxpZFNvY2tldERlc2NyaXB0b3IpOwotCi0gICAgbV9pc1RocmVhZFJ1bm5pbmcgPSBmYWxzZTsK
LSAgICB3YWtlVXBUaHJlYWQoKTsKLX0KLQotdm9pZCBEaXNwYXRjaFF1ZXVlOjpzZXRTb2NrZXRF
dmVudEhhbmRsZXIoaW50IGZpbGVEZXNjcmlwdG9yLCBzdGQ6OmZ1bmN0aW9uPHZvaWQgKCk+IGZ1
bmN0aW9uKQotewotICAgIEFTU0VSVChtX3NvY2tldERlc2NyaXB0b3IgPT0gaW52YWxpZFNvY2tl
dERlc2NyaXB0b3IpOwotCi0gICAgbV9zb2NrZXREZXNjcmlwdG9yID0gZmlsZURlc2NyaXB0b3I7
Ci0gICAgbV9zb2NrZXRFdmVudEhhbmRsZXIgPSBXVEZNb3ZlKGZ1bmN0aW9uKTsKLQotICAgIGlm
IChmaWxlRGVzY3JpcHRvciA+IG1fbWF4RmlsZURlc2NyaXB0b3IpCi0gICAgICAgIG1fbWF4Rmls
ZURlc2NyaXB0b3IgPSBmaWxlRGVzY3JpcHRvcjsKLSAgICBGRF9TRVQoZmlsZURlc2NyaXB0b3Is
ICZtX2ZpbGVEZXNjcmlwdG9yU2V0KTsKLX0KLQotdm9pZCBEaXNwYXRjaFF1ZXVlOjpjbGVhclNv
Y2tldEV2ZW50SGFuZGxlcigpCi17Ci0gICAgQVNTRVJUKG1fc29ja2V0RGVzY3JpcHRvciAhPSBp
bnZhbGlkU29ja2V0RGVzY3JpcHRvcik7Ci0KLSAgICBpZiAobV9zb2NrZXREZXNjcmlwdG9yID09
IG1fbWF4RmlsZURlc2NyaXB0b3IpCi0gICAgICAgIG1fbWF4RmlsZURlc2NyaXB0b3IgPSBtX3Jl
YWRGcm9tUGlwZURlc2NyaXB0b3I7Ci0KLSAgICBGRF9DTFIobV9zb2NrZXREZXNjcmlwdG9yLCAm
bV9maWxlRGVzY3JpcHRvclNldCk7Ci0KLSAgICBtX3NvY2tldERlc2NyaXB0b3IgPSBpbnZhbGlk
U29ja2V0RGVzY3JpcHRvcjsKLX0KLQotdm9pZCBEaXNwYXRjaFF1ZXVlOjpwZXJmb3JtV29yaygp
Ci17Ci0gICAgd2hpbGUgKHRydWUpIHsKLSAgICAgICAgVmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxX
b3JrSXRlbT4+IHdvcmtJdGVtczsKLQotICAgICAgICB7Ci0gICAgICAgICAgICBNdXRleExvY2tl
ciBsb2NrZXIobV93b3JrSXRlbXNMb2NrKTsKLSAgICAgICAgICAgIGlmIChtX3dvcmtJdGVtcy5p
c0VtcHR5KCkpCi0gICAgICAgICAgICAgICAgcmV0dXJuOwotCi0gICAgICAgICAgICBtX3dvcmtJ
dGVtcy5zd2FwKHdvcmtJdGVtcyk7Ci0gICAgICAgIH0KLQotICAgICAgICBmb3IgKHNpemVfdCBp
ID0gMDsgaSA8IHdvcmtJdGVtcy5zaXplKCk7ICsraSkKLSAgICAgICAgICAgIHdvcmtJdGVtc1tp
XS0+ZGlzcGF0Y2goKTsKLSAgICB9Ci19Ci0KLXZvaWQgRGlzcGF0Y2hRdWV1ZTo6cGVyZm9ybVRp
bWVyV29yaygpCi17Ci0gICAgVmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxUaW1lcldvcmtJdGVtPj4g
dGltZXJXb3JrSXRlbXM7Ci0KLSAgICB7Ci0gICAgICAgIC8vIFByb3RlY3RzIG1fdGltZXJXb3Jr
SXRlbXMuCi0gICAgICAgIE11dGV4TG9ja2VyIGxvY2tlcihtX3RpbWVyV29ya0l0ZW1zTG9jayk7
Ci0gICAgICAgIGlmIChtX3RpbWVyV29ya0l0ZW1zLmlzRW1wdHkoKSkKLSAgICAgICAgICAgIHJl
dHVybjsKLQotICAgICAgICAvLyBDb3BpZXMgYWxsIHRoZSB0aW1lciB3b3JrIGl0ZW1zIGluIG1f
dGltZXJXb3JrSXRlbXMgdG8gbG9jYWwgdmVjdG9yLgotICAgICAgICBtX3RpbWVyV29ya0l0ZW1z
LnN3YXAodGltZXJXb3JrSXRlbXMpOwotICAgIH0KLQotICAgIGRvdWJsZSBjdXJyZW50VGltZU5h
bm9TZWNvbmRzID0gbW9ub3RvbmljYWxseUluY3JlYXNpbmdUaW1lKCkgKiBuYW5vU2Vjb25kc1Bl
clNlY29uZDsKLQotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgdGltZXJXb3JrSXRlbXMuc2l6
ZSgpOyArK2kpIHsKLSAgICAgICAgaWYgKCF0aW1lcldvcmtJdGVtc1tpXS0+aGFzRXhwaXJlZChj
dXJyZW50VGltZU5hbm9TZWNvbmRzKSkgewotICAgICAgICAgICAgaW5zZXJ0VGltZXJXb3JrSXRl
bShXVEZNb3ZlKHRpbWVyV29ya0l0ZW1zW2ldKSk7Ci0gICAgICAgICAgICBjb250aW51ZTsKLSAg
ICAgICAgfQotCi0gICAgICAgIC8vIElmIGEgdGltZXIgd29yayBpdGVtIGhhcyBleHBpcmVkLCBk
aXNwYXRjaCB0aGUgZnVuY3Rpb24gb2YgdGhlIHdvcmsgaXRlbS4KLSAgICAgICAgdGltZXJXb3Jr
SXRlbXNbaV0tPmRpc3BhdGNoKCk7Ci0gICAgfQotfQotCi12b2lkIERpc3BhdGNoUXVldWU6OnBl
cmZvcm1GaWxlRGVzY3JpcHRvcldvcmsoKQotewotICAgIGZkX3NldCByZWFkRmlsZURlc2NyaXB0
b3JTZXQgPSBtX2ZpbGVEZXNjcmlwdG9yU2V0OwotCi0gICAgaWYgKHNlbGVjdChtX21heEZpbGVE
ZXNjcmlwdG9yICsgMSwgJnJlYWRGaWxlRGVzY3JpcHRvclNldCwgMCwgMCwgZ2V0TmV4dFRpbWVP
dXQoKSkgPj0gMCkgewotICAgICAgICBpZiAoRkRfSVNTRVQobV9yZWFkRnJvbVBpcGVEZXNjcmlw
dG9yLCAmcmVhZEZpbGVEZXNjcmlwdG9yU2V0KSkgewotICAgICAgICAgICAgY2hhciBtZXNzYWdl
OwotICAgICAgICAgICAgaWYgKHJlYWQobV9yZWFkRnJvbVBpcGVEZXNjcmlwdG9yLCAmbWVzc2Fn
ZSwgMSkgPT0gLTEpCi0gICAgICAgICAgICAgICAgTE9HX0VSUk9SKCJGYWlsZWQgdG8gcmVhZCBm
cm9tIERpc3BhdGNoUXVldWUgVGhyZWFkIHBpcGUiKTsKLQotICAgICAgICAgICAgQVNTRVJUKG1l
c3NhZ2UgPT0gd2FrZVVwVGhyZWFkTWVzc2FnZSk7Ci0gICAgICAgIH0KLQotICAgICAgICBpZiAo
bV9zb2NrZXREZXNjcmlwdG9yICE9IGludmFsaWRTb2NrZXREZXNjcmlwdG9yICYmIEZEX0lTU0VU
KG1fc29ja2V0RGVzY3JpcHRvciwgJnJlYWRGaWxlRGVzY3JpcHRvclNldCkpCi0gICAgICAgICAg
ICBtX3NvY2tldEV2ZW50SGFuZGxlcigpOwotICAgIH0KLX0KLQotdm9pZCBEaXNwYXRjaFF1ZXVl
OjppbnNlcnRUaW1lcldvcmtJdGVtKHN0ZDo6dW5pcXVlX3B0cjxUaW1lcldvcmtJdGVtPiBpdGVt
KQotewotICAgIEFTU0VSVChpdGVtKTsKLQotICAgIHNpemVfdCBwb3NpdGlvbiA9IDA7Ci0KLSAg
ICBNdXRleExvY2tlciBsb2NrZXIobV90aW1lcldvcmtJdGVtc0xvY2spOwotICAgIC8vIFRoZSBp
dGVtcyBzaG91bGQgYmUgb3JkZXJlZCBieSBleHBpcmUgdGltZS4KLSAgICBmb3IgKDsgcG9zaXRp
b24gPCBtX3RpbWVyV29ya0l0ZW1zLnNpemUoKTsgKytwb3NpdGlvbikKLSAgICAgICAgaWYgKGl0
ZW0tPmV4cGlyYXRpb25UaW1lTmFub1NlY29uZHMoKSA8IG1fdGltZXJXb3JrSXRlbXNbcG9zaXRp
b25dLT5leHBpcmF0aW9uVGltZU5hbm9TZWNvbmRzKCkpCi0gICAgICAgICAgICBicmVhazsKLQot
ICAgIG1fdGltZXJXb3JrSXRlbXMuaW5zZXJ0KHBvc2l0aW9uLCBXVEZNb3ZlKGl0ZW0pKTsKLX0K
LQotdm9pZCBEaXNwYXRjaFF1ZXVlOjpkaXNwYXRjaFF1ZXVlVGhyZWFkKCkKLXsKLSAgICB3aGls
ZSAobV9pc1RocmVhZFJ1bm5pbmcpIHsKLSAgICAgICAgcGVyZm9ybVdvcmsoKTsKLSAgICAgICAg
cGVyZm9ybVRpbWVyV29yaygpOwotICAgICAgICBwZXJmb3JtRmlsZURlc2NyaXB0b3JXb3JrKCk7
Ci0gICAgfQotfQotCi12b2lkIERpc3BhdGNoUXVldWU6Ondha2VVcFRocmVhZCgpCi17Ci0gICAg
TXV0ZXhMb2NrZXIgbG9ja2VyKG1fd3JpdGVUb1BpcGVEZXNjcmlwdG9yTG9jayk7Ci0gICAgaWYg
KHdyaXRlKG1fd3JpdGVUb1BpcGVEZXNjcmlwdG9yLCAmd2FrZVVwVGhyZWFkTWVzc2FnZSwgc2l6
ZW9mKGNoYXIpKSA9PSAtMSkKLSAgICAgICAgTE9HX0VSUk9SKCJGYWlsZWQgdG8gd2FrZSB1cCBE
aXNwYXRjaFF1ZXVlIFRocmVhZCIpOwotfQotCi10aW1ldmFsKiBEaXNwYXRjaFF1ZXVlOjpnZXRO
ZXh0VGltZU91dCgpIGNvbnN0Ci17Ci0gICAgTXV0ZXhMb2NrZXIgbG9ja2VyKG1fdGltZXJXb3Jr
SXRlbXNMb2NrKTsKLSAgICBpZiAobV90aW1lcldvcmtJdGVtcy5pc0VtcHR5KCkpCi0gICAgICAg
IHJldHVybiAwOwotCi0gICAgc3RhdGljIHRpbWV2YWwgdGltZVZhbHVlOwotICAgIHRpbWVWYWx1
ZS50dl9zZWMgPSAwOwotICAgIHRpbWVWYWx1ZS50dl91c2VjID0gMDsKLSAgICBkb3VibGUgdGlt
ZU91dFNlY29uZHMgPSAobV90aW1lcldvcmtJdGVtc1swXS0+ZXhwaXJhdGlvblRpbWVOYW5vU2Vj
b25kcygpIC0gbW9ub3RvbmljYWxseUluY3JlYXNpbmdUaW1lKCkgKiBuYW5vU2Vjb25kc1BlclNl
Y29uZCkgLyBuYW5vU2Vjb25kc1BlclNlY29uZDsKLSAgICBpZiAodGltZU91dFNlY29uZHMgPiAw
KSB7Ci0gICAgICAgIHRpbWVWYWx1ZS50dl9zZWMgPSBzdGF0aWNfY2FzdDxsb25nPih0aW1lT3V0
U2Vjb25kcyk7Ci0gICAgICAgIHRpbWVWYWx1ZS50dl91c2VjID0gc3RhdGljX2Nhc3Q8bG9uZz4o
KHRpbWVPdXRTZWNvbmRzIC0gdGltZVZhbHVlLnR2X3NlYykgKiBtaWNyb1NlY29uZHNQZXJTZWNv
bmQpOwotICAgIH0KLQotICAgIHJldHVybiAmdGltZVZhbHVlOwotfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dURi93dGYvZWZsL0Rpc3BhdGNoUXVldWVFZmwuaCBiL1NvdXJjZS9XVEYvd3RmL2VmbC9E
aXNwYXRjaFF1ZXVlRWZsLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGZjNTU1MTli
MDFjZWU4ZmUwNDljMTNjMWU1ZmNmYzdkOTk3OTRmMjYuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dURi93dGYvZWZsL0Rpc3BhdGNoUXVldWVF
ZmwuaAorKysgL2Rldi9udWxsCkBAIC0xLDgwICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMp
IDIwMTMgU2Ftc3VuZyBFbGVjdHJvbmljcy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
LSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBD
T05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
LSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAq
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0g
KiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8K
LQotI2lmbmRlZiBEaXNwYXRjaFF1ZXVlRWZsX2gKLSNkZWZpbmUgRGlzcGF0Y2hRdWV1ZUVmbF9o
Ci0KLSNpbmNsdWRlIDxmdW5jdGlvbmFsPgotI2luY2x1ZGUgPHRpbWUuaD4KLSNpbmNsdWRlIDx3
dGYvVGhyZWFkU2FmZVJlZkNvdW50ZWQuaD4KLSNpbmNsdWRlIDx3dGYvVGhyZWFkaW5nUHJpbWl0
aXZlcy5oPgotI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KLQotY2xhc3MgVGltZXJXb3JrSXRlbTsK
LWNsYXNzIFdvcmtJdGVtOwotCi1jbGFzcyBEaXNwYXRjaFF1ZXVlIDogcHVibGljIFRocmVhZFNh
ZmVSZWZDb3VudGVkPERpc3BhdGNoUXVldWU+IHsKLXB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1Jl
ZlB0cjxEaXNwYXRjaFF1ZXVlPiBjcmVhdGUoY29uc3QgY2hhciogbmFtZSk7Ci0gICAgfkRpc3Bh
dGNoUXVldWUoKTsKLQotICAgIHZvaWQgZGlzcGF0Y2goc3RkOjp1bmlxdWVfcHRyPFdvcmtJdGVt
Pik7Ci0gICAgdm9pZCBkaXNwYXRjaChzdGQ6OnVuaXF1ZV9wdHI8VGltZXJXb3JrSXRlbT4pOwot
ICAgIHZvaWQgc3RvcFRocmVhZCgpOwotICAgIHZvaWQgc2V0U29ja2V0RXZlbnRIYW5kbGVyKGlu
dCwgc3RkOjpmdW5jdGlvbjx2b2lkICgpPik7Ci0gICAgdm9pZCBjbGVhclNvY2tldEV2ZW50SGFu
ZGxlcigpOwotCi1wcml2YXRlOgotICAgIGNsYXNzIFRocmVhZENvbnRleHQ7Ci0KLSAgICBEaXNw
YXRjaFF1ZXVlKCk7Ci0KLSAgICB2b2lkIHBlcmZvcm1Xb3JrKCk7Ci0gICAgdm9pZCBwZXJmb3Jt
VGltZXJXb3JrKCk7Ci0gICAgdm9pZCBwZXJmb3JtRmlsZURlc2NyaXB0b3JXb3JrKCk7Ci0gICAg
dm9pZCBpbnNlcnRUaW1lcldvcmtJdGVtKHN0ZDo6dW5pcXVlX3B0cjxUaW1lcldvcmtJdGVtPik7
Ci0gICAgdm9pZCBkaXNwYXRjaFF1ZXVlVGhyZWFkKCk7Ci0gICAgdm9pZCB3YWtlVXBUaHJlYWQo
KTsKLSAgICB0aW1ldmFsKiBnZXROZXh0VGltZU91dCgpIGNvbnN0OwotCi0gICAgZmRfc2V0IG1f
ZmlsZURlc2NyaXB0b3JTZXQ7Ci0gICAgaW50IG1fbWF4RmlsZURlc2NyaXB0b3I7Ci0gICAgaW50
IG1fcmVhZEZyb21QaXBlRGVzY3JpcHRvcjsKLSAgICBpbnQgbV93cml0ZVRvUGlwZURlc2NyaXB0
b3I7Ci0gICAgTXV0ZXggbV93cml0ZVRvUGlwZURlc2NyaXB0b3JMb2NrOwotCi0gICAgYm9vbCBt
X2lzVGhyZWFkUnVubmluZzsKLQotICAgIGludCBtX3NvY2tldERlc2NyaXB0b3I7Ci0gICAgc3Rk
OjpmdW5jdGlvbjx2b2lkICgpPiBtX3NvY2tldEV2ZW50SGFuZGxlcjsKLQotICAgIFZlY3Rvcjxz
dGQ6OnVuaXF1ZV9wdHI8V29ya0l0ZW0+PiBtX3dvcmtJdGVtczsKLSAgICBNdXRleCBtX3dvcmtJ
dGVtc0xvY2s7Ci0KLSAgICBWZWN0b3I8c3RkOjp1bmlxdWVfcHRyPFRpbWVyV29ya0l0ZW0+PiBt
X3RpbWVyV29ya0l0ZW1zOwotICAgIG11dGFibGUgTXV0ZXggbV90aW1lcldvcmtJdGVtc0xvY2s7
Ci19OwotCi0jZW5kaWYgLy8gRGlzcGF0Y2hRdWV1ZUVmbF9oCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V1RGL3d0Zi9lZmwvRGlzcGF0Y2hRdWV1ZVdvcmtJdGVtRWZsLmggYi9Tb3VyY2UvV1RGL3d0Zi9l
ZmwvRGlzcGF0Y2hRdWV1ZVdvcmtJdGVtRWZsLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDE2MmJhYjQyYThiNDg4Yjc3ZmRjNTE5NmZkNjQ5ZDcxMmRjYWYwMDAuLjAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dURi93dGYvZWZsL0Rp
c3BhdGNoUXVldWVXb3JrSXRlbUVmbC5oCisrKyAvZGV2L251bGwKQEAgLTEsNzEgKzAsMCBAQAot
LyoKLSAqIENvcHlyaWdodCAoQykgMjAxMyBTYW1zdW5nIEVsZWN0cm9uaWNzLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0Ogot
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
Ci0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
Ci0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgot
ICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaWZuZGVmIERpc3BhdGNoUXVldWVXb3JrSXRlbUVmbF9o
Ci0jZGVmaW5lIERpc3BhdGNoUXVldWVXb3JrSXRlbUVmbF9oCi0KLSNpbmNsdWRlIDx3dGYvQXNz
ZXJ0aW9ucy5oPgotI2luY2x1ZGUgPHd0Zi9DdXJyZW50VGltZS5oPgotI2luY2x1ZGUgPHd0Zi9G
dW5jdGlvbkRpc3BhdGNoZXIuaD4KLSNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgotI2luY2x1
ZGUgPHd0Zi9Xb3JrUXVldWUuaD4KLQotY2xhc3MgV29ya0l0ZW0gewotcHVibGljOgotICAgIFdv
cmtJdGVtKFJlZjxXb3JrUXVldWU+JiYgd29ya1F1ZXVlLCBGdW5jdGlvbjx2b2lkICgpPiYmIGZ1
bmN0aW9uKQotICAgICAgICA6IG1fd29ya1F1ZXVlKFdURk1vdmUod29ya1F1ZXVlKSkKLSAgICAg
ICAgLCBtX2Z1bmN0aW9uKFdURk1vdmUoZnVuY3Rpb24pKQotICAgIHsKLSAgICB9Ci0KLSAgICB2
b2lkIGRpc3BhdGNoKCkgeyBtX2Z1bmN0aW9uKCk7IH0KLQotcHJpdmF0ZToKLSAgICBSZWY8V29y
a1F1ZXVlPiBtX3dvcmtRdWV1ZTsKLSAgICBGdW5jdGlvbjx2b2lkICgpPiBtX2Z1bmN0aW9uOwot
fTsKLQotY2xhc3MgVGltZXJXb3JrSXRlbSA6IHB1YmxpYyBXb3JrSXRlbSB7Ci1wdWJsaWM6Ci0g
ICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxUaW1lcldvcmtJdGVtPiBjcmVhdGUoUmVmPFdvcmtR
dWV1ZT4mJiB3b3JrUXVldWUsIEZ1bmN0aW9uPHZvaWQgKCk+JiYgZnVuY3Rpb24sIHN0ZDo6Y2hy
b25vOjpuYW5vc2Vjb25kcyBkZWxheU5hbm9TZWNvbmRzKQotICAgIHsKLSAgICAgICAgQVNTRVJU
KGRlbGF5TmFub1NlY29uZHMuY291bnQoKSA+PSAwKTsKLSAgICAgICAgcmV0dXJuIHN0ZDo6dW5p
cXVlX3B0cjxUaW1lcldvcmtJdGVtPihuZXcgVGltZXJXb3JrSXRlbShXVEZNb3ZlKHdvcmtRdWV1
ZSksIFdURk1vdmUoZnVuY3Rpb24pLCBtb25vdG9uaWNhbGx5SW5jcmVhc2luZ1RpbWUoKSAqIDEw
MDAwMDAwMDAuMCArIGRlbGF5TmFub1NlY29uZHMuY291bnQoKSkpOwotICAgIH0KLSAgICBkb3Vi
bGUgZXhwaXJhdGlvblRpbWVOYW5vU2Vjb25kcygpIGNvbnN0IHsgcmV0dXJuIG1fZXhwaXJhdGlv
blRpbWVOYW5vU2Vjb25kczsgfQotICAgIGJvb2wgaGFzRXhwaXJlZChkb3VibGUgY3VycmVudFRp
bWVOYW5vU2Vjb25kcykgY29uc3QgeyByZXR1cm4gY3VycmVudFRpbWVOYW5vU2Vjb25kcyA+PSBt
X2V4cGlyYXRpb25UaW1lTmFub1NlY29uZHM7IH0KLQotcHJvdGVjdGVkOgotICAgIFRpbWVyV29y
a0l0ZW0oUmVmPFdvcmtRdWV1ZT4mJiB3b3JrUXVldWUsIEZ1bmN0aW9uPHZvaWQgKCk+JiYgZnVu
Y3Rpb24sIGRvdWJsZSBleHBpcmF0aW9uVGltZU5hbm9TZWNvbmRzKQotICAgICAgICA6IFdvcmtJ
dGVtKFdURk1vdmUod29ya1F1ZXVlKSwgV1RGTW92ZShmdW5jdGlvbikpCi0gICAgICAgICwgbV9l
eHBpcmF0aW9uVGltZU5hbm9TZWNvbmRzKGV4cGlyYXRpb25UaW1lTmFub1NlY29uZHMpCi0gICAg
ewotICAgIH0KLQotcHJpdmF0ZToKLSAgICBkb3VibGUgbV9leHBpcmF0aW9uVGltZU5hbm9TZWNv
bmRzOwotfTsKLQotI2VuZGlmIC8vIERpc3BhdGNoUXVldWVXb3JrSXRlbUVmbF9oCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV1RGL3d0Zi9lZmwvRWZsVHlwZWRlZnMuaCBiL1NvdXJjZS9XVEYvd3RmL2Vm
bC9FZmxUeXBlZGVmcy5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiYTc0MjJmMWUx
NmZkMWI4MjY3ZjAyYTUxOWQ0MjY3OGE4ZThkYTQwLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XVEYvd3RmL2VmbC9FZmxUeXBlZGVmcy5oCisr
KyAvZGV2L251bGwKQEAgLTEsNTIgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNCBT
QU1TVU5HIEVMRUNUUk9OSUNTIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMgYXJlCi0gKiBtZXQ6Ci0gKgotICogICAgICogUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
LSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUKLSAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLSAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLSAqIGRpc3RyaWJ1dGlvbi4KLSAq
Ci0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBB
TkQgQ09OVFJJQlVUT1JTCi0gKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywgVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0gKiBBIFBBUlRJ
Q1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlS
SUdIVAotICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0gKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLSAqIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWQotICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgotICovCi0KLSNpZm5kZWYgV1RGX0VmbFR5cGVkZWZzX2gKLSNkZWZpbmUgV1RGX0VmbFR5cGVk
ZWZzX2gKLQotI2lmZGVmIF9fY3BsdXNwbHVzCi0KLXR5cGVkZWYgdW5zaWduZWQgRWNvcmVfWF9J
RDsKLXR5cGVkZWYgRWNvcmVfWF9JRCBFY29yZV9YX1dpbmRvdzsKLQotdHlwZWRlZiB1bnNpZ25l
ZCBjaGFyIEVpbmFfQm9vbDsKLXR5cGVkZWYgc3RydWN0IF9FdmFzX1BvaW50IEV2YXNfUG9pbnQ7
Ci10eXBlZGVmIHN0cnVjdCBfRXZhc19HTCBFdmFzX0dMOwotdHlwZWRlZiBzdHJ1Y3QgX0V2YXNf
R0xfQ29udGV4dCBFdmFzX0dMX0NvbnRleHQ7Ci10eXBlZGVmIHN0cnVjdCBfRXZhc19HTF9TdXJm
YWNlIEV2YXNfR0xfU3VyZmFjZTsKLXR5cGVkZWYgc3RydWN0IF9FY29yZV9FdmFzIEVjb3JlX0V2
YXM7Ci10eXBlZGVmIHN0cnVjdCBfRWNvcmVfRmRfSGFuZGxlciBFY29yZV9GZF9IYW5kbGVyOwot
dHlwZWRlZiBzdHJ1Y3QgX0VpbmFfTGlzdCBFaW5hX0xpc3Q7Ci10eXBlZGVmIHN0cnVjdCBfRWlu
YV9Nb2R1bGUgRWluYV9Nb2R1bGU7Ci10eXBlZGVmIHN0cnVjdCBfRWluYV9SZWN0YW5nbGUgRWlu
YV9SZWN0YW5nbGU7Ci10eXBlZGVmIHN0cnVjdCBfRW9fT3BhcXVlIEV2YXM7Ci10eXBlZGVmIHN0
cnVjdCBfRW9fT3BhcXVlIEV2YXNfT2JqZWN0OwotdHlwZWRlZiBzdHJ1Y3QgX0VvX09wYXF1ZSBF
Y29yZV9UaW1lcjsKLQotI2VuZGlmCi0KLSNlbmRpZiAvLyBXVEZfRWZsVHlwZWRlZnNfaApkaWZm
IC0tZ2l0IGEvU291cmNlL1dURi93dGYvZWZsL01haW5UaHJlYWRFZmwuY3BwIGIvU291cmNlL1dU
Ri93dGYvZWZsL01haW5UaHJlYWRFZmwuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCBiZjlkZWI0N2I2OTVlNmNjMTIwOTBlOGNhODg1N2MyODNmMTU2OGExLi4wMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XVEYvd3RmL2VmbC9NYWlu
VGhyZWFkRWZsLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDY0ICswLDAgQEAKLS8qCi0gKiBDb3B5
cmlnaHQgKEMpIDIwMDcsIDIwMDggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICog
Q29weXJpZ2h0IChDKSAyMDA3IEp1c3RpbiBIYXlnb29kIChqaGF5Z29vZEByZWFrdGl4LmNvbSkK
LSAqIENvcHlyaWdodCAoQykgMjAwOCBEaWVnbyBHb256YWxlegotICogQ29weXJpZ2h0IChDKSAy
MDA4IEtlbm5ldGggUm9oZGUgQ2hyaXN0aWFuc2VuCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDktMjAx
MCBQcm9GVVNJT04gZW1iZWRkZWQgc3lzdGVtcwotICogQ29weXJpZ2h0IChDKSAyMDA5LTIwMTAg
U2Ftc3VuZyBFbGVjdHJvbmljcwotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBh
cmUgbWV0OgotICoKLSAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuICBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAot
ICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICogMy4gIE5laXRoZXIgdGhl
IG5hbWUgb2YgQXBwbGUgSW5jLiAoIkFwcGxlIikgbm9yIHRoZSBuYW1lcyBvZgotICogICAgIGl0
cyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3Rz
IGRlcml2ZWQKLSAqICAgICBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlv
ciB3cml0dGVuIHBlcm1pc3Npb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKLSAqIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhF
IElNUExJRUQKLSAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKLSAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKLSAqIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTCi0gKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7Ci0gKiBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQKLSAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKLSAqIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
Ci0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIk1haW5UaHJlYWQuaCIKLQot
I2luY2x1ZGUgPEVjb3JlLmg+Ci0jaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgotI2luY2x1
ZGUgPHd0Zi9lZmwvVW5pcXVlUHRyRWZsLmg+Ci0KLW5hbWVzcGFjZSBXVEYgewotCi1zdGF0aWMg
RWZsVW5pcXVlUHRyPEVjb3JlX1BpcGU+JiBwaXBlT2JqZWN0KCkKLXsKLSAgICBERVBSRUNBVEVE
X0RFRklORV9TVEFUSUNfTE9DQUwoRWZsVW5pcXVlUHRyPEVjb3JlX1BpcGU+LCBwaXBlT2JqZWN0
LCAoKSk7Ci0gICAgcmV0dXJuIHBpcGVPYmplY3Q7Ci19Ci0KLXN0YXRpYyB2b2lkIG1vbml0b3JE
aXNwYXRjaEZ1bmN0aW9ucyh2b2lkKiwgdm9pZCosIHVuc2lnbmVkIGludCkKLXsKLSAgICBkaXNw
YXRjaEZ1bmN0aW9uc0Zyb21NYWluVGhyZWFkKCk7Ci19Ci0KLXZvaWQgaW5pdGlhbGl6ZU1haW5U
aHJlYWRQbGF0Zm9ybSgpCi17Ci0gICAgcGlwZU9iamVjdCgpID0gRWZsVW5pcXVlUHRyPEVjb3Jl
X1BpcGU+KGVjb3JlX3BpcGVfYWRkKG1vbml0b3JEaXNwYXRjaEZ1bmN0aW9ucywgMCkpOwotfQot
Ci12b2lkIHNjaGVkdWxlRGlzcGF0Y2hGdW5jdGlvbnNPbk1haW5UaHJlYWQoKQotewotICAgIGVj
b3JlX3BpcGVfd3JpdGUocGlwZU9iamVjdCgpLmdldCgpLCAiIiwgMCk7Ci19Ci0KLX0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XVEYvd3RmL2VmbC9SdW5Mb29wRWZsLmNwcCBiL1NvdXJjZS9XVEYvd3Rm
L2VmbC9SdW5Mb29wRWZsLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNWRmYzI5
MDNlOGI0ZDEwNzQzYjUyOWY0YzBjNzRjNjc1MGRhZTU5Ni4uMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9lZmwvUnVuTG9vcEVmbC5j
cHAKKysrIC9kZXYvbnVsbApAQCAtMSwxMzEgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykg
MjAxMiBQcm9GVVNJT04gZW1iZWRkZWQgc3lzdGVtcy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAq
IENvcHlyaWdodCAoQykgMjAxMiBTYW1zdW5nIEVsZWN0cm9uaWNzCi0gKgotICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENP
TlRSSUJVVE9SUwotICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgotICogQSBQQVJUSUNVTEFS
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQK
LSAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLAotICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0gKiBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkKLSAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAq
LwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiUnVuTG9vcC5oIgotCi0jaW5jbHVk
ZSA8RWNvcmUuaD4KLQotc3RhdGljIGNvbnN0IGludCBlY29yZVBpcGVNZXNzYWdlU2l6ZSA9IDE7
Ci1zdGF0aWMgY29uc3QgY2hhciB3YWt1cEVjb3JlUGlwZU1lc3NhZ2VbXSA9ICJXIjsKLQotbmFt
ZXNwYWNlIFdURiB7Ci0KLVJ1bkxvb3A6OlJ1bkxvb3AoKQotICAgIDogbV93YWtlVXBFdmVudFJl
cXVlc3RlZChmYWxzZSkKLXsKLSAgICBtX3BpcGUgPSBFZmxVbmlxdWVQdHI8RWNvcmVfUGlwZT4o
ZWNvcmVfcGlwZV9hZGQod2FrZVVwRXZlbnQsIHRoaXMpKTsKLX0KLQotUnVuTG9vcDo6flJ1bkxv
b3AoKQotewotfQotCi12b2lkIFJ1bkxvb3A6OnJ1bigpCi17Ci0gICAgZWNvcmVfbWFpbl9sb29w
X2JlZ2luKCk7Ci19Ci0KLXZvaWQgUnVuTG9vcDo6c3RvcCgpCi17Ci0gICAgZWNvcmVfbWFpbl9s
b29wX3F1aXQoKTsKLX0KLQotdm9pZCBSdW5Mb29wOjp3YWtlVXBFdmVudCh2b2lkKiBkYXRhLCB2
b2lkKiwgdW5zaWduZWQpCi17Ci0gICAgUnVuTG9vcCogbG9vcCA9IHN0YXRpY19jYXN0PFJ1bkxv
b3AqPihkYXRhKTsKLQotICAgIHsKLSAgICAgICAgTXV0ZXhMb2NrZXIgbG9ja2VyKGxvb3AtPm1f
d2FrZVVwRXZlbnRSZXF1ZXN0ZWRMb2NrKTsKLSAgICAgICAgbG9vcC0+bV93YWtlVXBFdmVudFJl
cXVlc3RlZCA9IGZhbHNlOwotICAgIH0KLQotICAgIGxvb3AtPnBlcmZvcm1Xb3JrKCk7Ci19Ci0K
LXZvaWQgUnVuTG9vcDo6d2FrZVVwKCkKLXsKLSAgICB7Ci0gICAgICAgIE11dGV4TG9ja2VyIGxv
Y2tlcihtX3dha2VVcEV2ZW50UmVxdWVzdGVkTG9jayk7Ci0gICAgICAgIGlmIChtX3dha2VVcEV2
ZW50UmVxdWVzdGVkKQotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICBtX3dha2VVcEV2ZW50
UmVxdWVzdGVkID0gdHJ1ZTsKLSAgICB9Ci0KLSAgICB7Ci0gICAgICAgIE11dGV4TG9ja2VyIGxv
Y2tlcihtX3BpcGVMb2NrKTsKLSAgICAgICAgZWNvcmVfcGlwZV93cml0ZShtX3BpcGUuZ2V0KCks
IHdha3VwRWNvcmVQaXBlTWVzc2FnZSwgZWNvcmVQaXBlTWVzc2FnZVNpemUpOwotICAgIH0KLX0K
LQotUnVuTG9vcDo6VGltZXJCYXNlOjpUaW1lckJhc2UoUnVuTG9vcCYgcnVuTG9vcCkKLSAgICA6
IG1fcnVuTG9vcChydW5Mb29wKQotICAgICwgbV90aW1lcigwKQotICAgICwgbV9pc1JlcGVhdGlu
ZyhmYWxzZSkKLXsKLX0KLQotUnVuTG9vcDo6VGltZXJCYXNlOjp+VGltZXJCYXNlKCkKLXsKLSAg
ICBzdG9wKCk7Ci19Ci0KLWJvb2wgUnVuTG9vcDo6VGltZXJCYXNlOjp0aW1lckZpcmVkKHZvaWQq
IGRhdGEpCi17Ci0gICAgUnVuTG9vcDo6VGltZXJCYXNlKiB0aW1lciA9IHN0YXRpY19jYXN0PFJ1
bkxvb3A6OlRpbWVyQmFzZSo+KGRhdGEpOwotCi0gICAgaWYgKCF0aW1lci0+bV9pc1JlcGVhdGlu
ZykKLSAgICAgICAgdGltZXItPm1fdGltZXIgPSAwOwotCi0gICAgdGltZXItPmZpcmVkKCk7Ci0K
LSAgICByZXR1cm4gdGltZXItPm1faXNSZXBlYXRpbmcgPyBFQ09SRV9DQUxMQkFDS19SRU5FVyA6
IEVDT1JFX0NBTExCQUNLX0NBTkNFTDsKLX0KLQotdm9pZCBSdW5Mb29wOjpUaW1lckJhc2U6OnN0
YXJ0KGRvdWJsZSBuZXh0RmlyZUludGVydmFsLCBib29sIHJlcGVhdCkKLXsKLSAgICBpZiAoaXNB
Y3RpdmUoKSkKLSAgICAgICAgc3RvcCgpOwotCi0gICAgbV9pc1JlcGVhdGluZyA9IHJlcGVhdDsK
LSAgICBBU1NFUlQoIW1fdGltZXIpOwotICAgIG1fdGltZXIgPSBlY29yZV90aW1lcl9hZGQobmV4
dEZpcmVJbnRlcnZhbCwgcmVpbnRlcnByZXRfY2FzdDxFY29yZV9UYXNrX0NiPih0aW1lckZpcmVk
KSwgdGhpcyk7Ci19Ci0KLXZvaWQgUnVuTG9vcDo6VGltZXJCYXNlOjpzdG9wKCkKLXsKLSAgICBp
ZiAobV90aW1lcikgewotICAgICAgICBlY29yZV90aW1lcl9kZWwobV90aW1lcik7Ci0gICAgICAg
IG1fdGltZXIgPSAwOwotICAgIH0KLX0KLQotYm9vbCBSdW5Mb29wOjpUaW1lckJhc2U6OmlzQWN0
aXZlKCkgY29uc3QKLXsKLSAgICByZXR1cm4gKG1fdGltZXIpID8gdHJ1ZSA6IGZhbHNlOwotfQot
Ci19IC8vIG5hbWVzcGFjZSBXVEYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL2VmbC9Vbmlx
dWVQdHJFZmwuaCBiL1NvdXJjZS9XVEYvd3RmL2VmbC9VbmlxdWVQdHJFZmwuaApkZWxldGVkIGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggYWVkZWJkNzcwZDBlNDgwZjliNmM5YWI1YzU2ODZmNjUzNjU2
M2ViNC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3Vy
Y2UvV1RGL3d0Zi9lZmwvVW5pcXVlUHRyRWZsLmgKKysrIC9kZXYvbnVsbApAQCAtMSw2OCArMCww
IEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE0IFNhbXN1bmcgRWxlY3Ryb25pY3MKLSAqCi0g
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElU
UyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YK
LSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
Ci0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0g
Ki8KLQotI2lmbmRlZiBVbmlxdWVQdHJFZmxfaAotI2RlZmluZSBVbmlxdWVQdHJFZmxfaAotCi0j
aW5jbHVkZSA8RWNvcmUuaD4KLSNpbmNsdWRlIDxFY29yZV9FdmFzLmg+Ci0jaW5jbHVkZSA8RWNv
cmVfSU1GLmg+Ci0jaW5jbHVkZSA8RWluYS5oPgotI2luY2x1ZGUgPEV2YXMuaD4KLQotbmFtZXNw
YWNlIFdURiB7Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIFQ+IHN0cnVjdCBFZmxQdHJEZWxldGVyIHsK
LSAgICB2b2lkIG9wZXJhdG9yKCkoVCogcHRyKSBjb25zdCA9IGRlbGV0ZTsKLX07Ci0KLXRlbXBs
YXRlPHR5cGVuYW1lIFQ+Ci11c2luZyBFZmxVbmlxdWVQdHIgPSBzdGQ6OnVuaXF1ZV9wdHI8VCwg
RWZsUHRyRGVsZXRlcjxUPj47Ci0KLSNkZWZpbmUgRk9SX0VBQ0hfRUZMX0RFTEVURVIobWFjcm8p
IFwKLSAgICBtYWNybyhFY29yZV9FdmFzLCBlY29yZV9ldmFzX2ZyZWUpIFwKLSAgICBtYWNybyhF
Y29yZV9JTUZfQ29udGV4dCwgZWNvcmVfaW1mX2NvbnRleHRfZGVsKSBcCi0gICAgbWFjcm8oRWNv
cmVfUGlwZSwgZWNvcmVfcGlwZV9kZWwpIFwKLSAgICBtYWNybyhFaW5hX0hhc2gsIGVpbmFfaGFz
aF9mcmVlKSBcCi0gICAgbWFjcm8oRWluYV9Nb2R1bGUsIGVpbmFfbW9kdWxlX2ZyZWUpIFwKLSAg
ICBtYWNybyhFdmFzX09iamVjdCwgZXZhc19vYmplY3RfZGVsKSBcCi0KLSNkZWZpbmUgV1RGX0RF
RklORV9FRkxQVFJfREVMRVRFUih0eXBlTmFtZSwgZGVsZXRlckZ1bmMpIFwKLSAgICB0ZW1wbGF0
ZTw+IHN0cnVjdCBFZmxQdHJEZWxldGVyPHR5cGVOYW1lPiBcCi0gICAgeyBcCi0gICAgICAgIHZv
aWQgb3BlcmF0b3IoKSAodHlwZU5hbWUqIHB0cikgY29uc3QgXAotICAgICAgICB7IFwKLSAgICAg
ICAgICAgIGRlbGV0ZXJGdW5jKHB0cik7IFwKLSAgICAgICAgfSBcCi0gICAgfTsKLQotRk9SX0VB
Q0hfRUZMX0RFTEVURVIoV1RGX0RFRklORV9FRkxQVFJfREVMRVRFUikKLSN1bmRlZiBGT1JfRUFD
SF9FRkxfREVMRVRFUgotCi19IC8vIG5hbWVzcGFjZSBXVEYKLQotdXNpbmcgV1RGOjpFZmxVbmlx
dWVQdHI7Ci0KLSNlbmRpZiAvLyBVbmlxdWVQdHJFZmxfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dU
Ri93dGYvZWZsL1dvcmtRdWV1ZUVmbC5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi9lZmwvV29ya1F1ZXVl
RWZsLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZGE5MTNiZjA0Y2U3MjczMTA3
NjdlZjQ3OTRmZGQyYjg3OGE1ZjRlZC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9lZmwvV29ya1F1ZXVlRWZsLmNwcAorKysgL2Rl
di9udWxsCkBAIC0xLDczICswLDAgQEAKLS8qCi0gICAgQ29weXJpZ2h0IChDKSAyMDEyIFNhbXN1
bmcgRWxlY3Ryb25pY3MKLQotICAgIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3Ug
Y2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKLSAgICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1z
IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwotICAgIExpY2Vuc2UgYXMgcHVibGlz
aGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgotICAgIHZlcnNpb24g
MiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4K
LQotICAgIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdp
bGwgYmUgdXNlZnVsLAotICAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVu
IHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0gICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKLSAgICBMaWJyYXJ5IEdlbmVy
YWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLQotICAgIFlvdSBzaG91bGQgaGF2
ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vu
c2UKLSAgICBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElC
LiAgSWYgbm90LCB3cml0ZSB0bwotICAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIElu
Yy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCi0gICAgQm9zdG9uLCBNQSAwMjEx
MC0xMzAxLCBVU0EuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIldvcmtR
dWV1ZS5oIgotCi0jaW5jbHVkZSA8RGlzcGF0Y2hRdWV1ZUVmbC5oPgotI2luY2x1ZGUgPERpc3Bh
dGNoUXVldWVXb3JrSXRlbUVmbC5oPgotCi1uYW1lc3BhY2UgV1RGIHsKLQotdm9pZCBXb3JrUXVl
dWU6OnBsYXRmb3JtSW5pdGlhbGl6ZShjb25zdCBjaGFyKiBuYW1lLCBUeXBlLCBRT1MpCi17Ci0g
ICAgbV9kaXNwYXRjaFF1ZXVlID0gRGlzcGF0Y2hRdWV1ZTo6Y3JlYXRlKG5hbWUpOwotfQotCi12
b2lkIFdvcmtRdWV1ZTo6cGxhdGZvcm1JbnZhbGlkYXRlKCkKLXsKLSAgICBSZWZQdHI8RGlzcGF0
Y2hRdWV1ZT4gZGlzcGF0Y2hRdWV1ZSA9IG1fZGlzcGF0Y2hRdWV1ZS5yZWxlYXNlKCk7Ci0gICAg
ZGlzcGF0Y2hRdWV1ZS0+c3RvcFRocmVhZCgpOwotfQotCi12b2lkIFdvcmtRdWV1ZTo6cmVnaXN0
ZXJTb2NrZXRFdmVudEhhbmRsZXIoaW50IGZpbGVEZXNjcmlwdG9yLCBzdGQ6OmZ1bmN0aW9uPHZv
aWQgKCk+IGZ1bmN0aW9uKQotewotICAgIGlmICghbV9kaXNwYXRjaFF1ZXVlKQotICAgICAgICBy
ZXR1cm47Ci0KLSAgICBtX2Rpc3BhdGNoUXVldWUtPnNldFNvY2tldEV2ZW50SGFuZGxlcihmaWxl
RGVzY3JpcHRvciwgV1RGTW92ZShmdW5jdGlvbikpOwotfQotCi12b2lkIFdvcmtRdWV1ZTo6dW5y
ZWdpc3RlclNvY2tldEV2ZW50SGFuZGxlcihpbnQgZmlsZURlc2NyaXB0b3IpCi17Ci0gICAgVU5V
U0VEX1BBUkFNKGZpbGVEZXNjcmlwdG9yKTsKLQotICAgIGlmICghbV9kaXNwYXRjaFF1ZXVlKQot
ICAgICAgICByZXR1cm47Ci0KLSAgICBtX2Rpc3BhdGNoUXVldWUtPmNsZWFyU29ja2V0RXZlbnRI
YW5kbGVyKCk7Ci19Ci0KLXZvaWQgV29ya1F1ZXVlOjpkaXNwYXRjaChGdW5jdGlvbjx2b2lkICgp
PiYmIGZ1bmN0aW9uKQotewotICAgIGlmICghbV9kaXNwYXRjaFF1ZXVlKQotICAgICAgICByZXR1
cm47Ci0KLSAgICBtX2Rpc3BhdGNoUXVldWUtPmRpc3BhdGNoKHN0ZDo6bWFrZV91bmlxdWU8V29y
a0l0ZW0+KCp0aGlzLCBXVEZNb3ZlKGZ1bmN0aW9uKSkpOwotfQotCi12b2lkIFdvcmtRdWV1ZTo6
ZGlzcGF0Y2hBZnRlcihzdGQ6OmNocm9ubzo6bmFub3NlY29uZHMgZHVyYXRpb24sIEZ1bmN0aW9u
PHZvaWQgKCk+JiYgZnVuY3Rpb24pCi17Ci0gICAgaWYgKCFtX2Rpc3BhdGNoUXVldWUpCi0gICAg
ICAgIHJldHVybjsKLQotICAgIG1fZGlzcGF0Y2hRdWV1ZS0+ZGlzcGF0Y2goVGltZXJXb3JrSXRl
bTo6Y3JlYXRlKCp0aGlzLCBXVEZNb3ZlKGZ1bmN0aW9uKSwgZHVyYXRpb24pKTsKLX0KLQotfQo=
</data>
<flag name="review"
          id="323562"
          type_id="1"
          status="+"
          setter="achristensen"
    />
          </attachment>
      

    </bug>

</bugzilla>