<?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>172824</bug_id>
          
          <creation_ts>2017-06-01 10:51:02 -0700</creation_ts>
          <short_desc>Undo rollout in r217638 with bug fix</short_desc>
          <delta_ts>2017-06-01 11:28:53 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>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="Keith Miller">keith_miller</reporter>
          <assigned_to name="Keith Miller">keith_miller</assigned_to>
          <cc>commit-queue</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1314709</commentid>
    <comment_count>0</comment_count>
    <who name="Keith Miller">keith_miller</who>
    <bug_when>2017-06-01 10:51:02 -0700</bug_when>
    <thetext>Undo rollout in r217638 with bug fix</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1314710</commentid>
    <comment_count>1</comment_count>
      <attachid>311725</attachid>
    <who name="Keith Miller">keith_miller</who>
    <bug_when>2017-06-01 10:52:46 -0700</bug_when>
    <thetext>Created attachment 311725
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1314711</commentid>
    <comment_count>2</comment_count>
      <attachid>311726</attachid>
    <who name="Keith Miller">keith_miller</who>
    <bug_when>2017-06-01 10:53:04 -0700</bug_when>
    <thetext>Created attachment 311726
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1314739</commentid>
    <comment_count>3</comment_count>
      <attachid>311726</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-06-01 11:28:52 -0700</bug_when>
    <thetext>Comment on attachment 311726
Patch for landing

Clearing flags on attachment: 311726

Committed r217669: &lt;http://trac.webkit.org/changeset/217669&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1314740</commentid>
    <comment_count>4</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-06-01 11:28:53 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>311725</attachid>
            <date>2017-06-01 10:52:46 -0700</date>
            <delta_ts>2017-06-01 10:53:02 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-172824-20170601105246.patch</filename>
            <type>text/plain</type>
            <size>49957</size>
            <attacher name="Keith Miller">keith_miller</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjE3NjYzCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBi
MTA1NmI0MGY5ZWViZjRmZjUyMzFlMGRkZTU5ZmM2ZTk5Yzk3MDM0Li42YjQyYjQ4ZDU0ZDBmNDM4
NDg5ODQyNmJmZjRiMzI5ODU4YjZiYmNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwzNiBAQAorMjAxNy0wNi0wMSAgS2VpdGggTWlsbGVyICA8a2VpdGhfbWlsbGVyQGFwcGxl
LmNvbT4KKworICAgICAgICBVbmRvIHJvbGxvdXQgaW4gcjIxNzYzOCB3aXRoIGJ1ZyBmaXgKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3MjgyNAorCisg
ICAgICAgIFVucmV2aWV3ZWQsIHJlbGFuZCBwYXRjaCB3aXRoIHVudXNlZCBzZXRfc3RhdGUgY29k
ZSByZW1vdmVkLgorCisgICAgICAgICogQVBJL3Rlc3RzL0V4ZWN1dGlvblRpbWVMaW1pdFRlc3Qu
Y3BwOgorICAgICAgICAoZGlzcGF0Y2hUZXJtaXRhdGVDYWxsYmFjayk6CisgICAgICAgICh0ZXN0
RXhlY3V0aW9uVGltZUxpbWl0KToKKyAgICAgICAgKiBydW50aW1lL0pTTG9jay5jcHA6CisgICAg
ICAgIChKU0M6OkpTTG9jazo6ZGlkQWNxdWlyZUxvY2spOgorICAgICAgICAqIHJ1bnRpbWUvT3B0
aW9ucy5jcHA6CisgICAgICAgIChKU0M6Om92ZXJyaWRlRGVmYXVsdHMpOgorICAgICAgICAoSlND
OjpPcHRpb25zOjppbml0aWFsaXplKToKKyAgICAgICAgKiBydW50aW1lL09wdGlvbnMuaDoKKyAg
ICAgICAgKiBydW50aW1lL1ZNVHJhcHMuY3BwOgorICAgICAgICAoSlNDOjpTaWduYWxDb250ZXh0
OjpTaWduYWxDb250ZXh0KToKKyAgICAgICAgKEpTQzo6U2lnbmFsQ29udGV4dDo6YWRqdXN0UENU
b1BvaW50VG9UcmFwcGluZ0luc3RydWN0aW9uKToKKyAgICAgICAgKEpTQzo6aW5zdGFsbFNpZ25h
bEhhbmRsZXIpOgorICAgICAgICAoSlNDOjpWTVRyYXBzOjpTaWduYWxTZW5kZXI6OnNlbmQpOgor
ICAgICAgICAqIHRvb2xzL1NpZ2lsbENyYXNoQW5hbHl6ZXIuY3BwOgorICAgICAgICAoSlNDOjpT
aWduYWxDb250ZXh0OjpTaWduYWxDb250ZXh0KToKKyAgICAgICAgKEpTQzo6U2lnbmFsQ29udGV4
dDo6ZHVtcCk6CisgICAgICAgIChKU0M6Omluc3RhbGxDcmFzaEhhbmRsZXIpOgorICAgICAgICAq
IHdhc20vV2FzbUJCUVBsYW4uY3BwOgorICAgICAgICAoSlNDOjpXYXNtOjpCQlFQbGFuOjpjb21w
aWxlRnVuY3Rpb25zKToKKyAgICAgICAgKiB3YXNtL1dhc21GYXVsdFNpZ25hbEhhbmRsZXIuY3Bw
OgorICAgICAgICAoSlNDOjpXYXNtOjp0cmFwSGFuZGxlcik6CisgICAgICAgIChKU0M6Oldhc206
OmVuYWJsZUZhc3RNZW1vcnkpOgorICAgICAgICAqIHdhc20vV2FzbU1hY2hpbmVUaHJlYWRzLmNw
cDoKKyAgICAgICAgKEpTQzo6V2FzbTo6cmVzZXRJbnN0cnVjdGlvbkNhY2hlT25BbGxUaHJlYWRz
KToKKwogMjAxNy0wNi0wMSAgR3VpbGxhdW1lIEVtb250ICA8Z3VpamVtb250QGlnYWxpYS5jb20+
CiAKICAgICAgICAgW0pTQ11bTUlQU10gU2FtcGxpbmdQcm9maWxlcjo6dGltZXJMb29wKCkgc2xl
ZXBzIGZvciA0MDAwKyBzZWNvbmRzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5nZUxvZyBi
L1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IGU5NmY4NzkwYmI0Y2M3ZmMwMmU1OTNjMjQzZDU4
MzcxNWZkMTU3ZWYuLjU2MDc1M2UzOWUzZDAyMzYzOTY3ODY0ZDNmMDdjMWNjNTUyYmVjMWIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsNDIgQEAKKzIwMTctMDYtMDEgIEtlaXRoIE1pbGxlciAgPGtlaXRoX21pbGxl
ckBhcHBsZS5jb20+CisKKyAgICAgICAgVW5kbyByb2xsb3V0IGluIHIyMTc2Mzggd2l0aCBidWcg
Zml4CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzI4
MjQKKworICAgICAgICBVbnJldmlld2VkLCByZWxhbmQgcGF0Y2ggd2l0aCB1bnVzZWQgc2V0X3N0
YXRlIGNvZGUgcmVtb3ZlZC4KKworICAgICAgICAqIENvbmZpZ3VyYXRpb25zL1dURi54Y2NvbmZp
ZzoKKyAgICAgICAgKiBXVEYueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiB3
dGYvUGxhdGZvcm0uaDoKKyAgICAgICAgKiB3dGYvUGxhdGZvcm1SZWdpc3RlcnMuaDoKKyAgICAg
ICAgKFdURjo6cmVnaXN0ZXJzRnJvbVVDb250ZXh0KToKKyAgICAgICAgKiB3dGYvU3RhY2tCb3Vu
ZHMuaDoKKyAgICAgICAgKFdURjo6U3RhY2tCb3VuZHM6OlN0YWNrQm91bmRzKToKKyAgICAgICAg
KiB3dGYvVGhyZWFkSG9sZGVyLmNwcDoKKyAgICAgICAgKFdURjo6VGhyZWFkSG9sZGVyOjp+VGhy
ZWFkSG9sZGVyKToKKyAgICAgICAgKiB3dGYvVGhyZWFkTWVzc2FnZS5jcHA6CisgICAgICAgIChX
VEY6OnNlbmRNZXNzYWdlVXNpbmdTaWduYWwpOgorICAgICAgICAoV1RGOjpzZW5kTWVzc2FnZVVz
aW5nTWFjaCk6CisgICAgICAgIChXVEY6OmRlbGl2ZXJNZXNzYWdlc1VzaW5nTWFjaCk6CisgICAg
ICAgIChXVEY6OnNlbmRNZXNzYWdlU2NvcGVkKToKKyAgICAgICAgKiB3dGYvVGhyZWFkTWVzc2Fn
ZS5oOgorICAgICAgICAoV1RGOjpzZW5kTWVzc2FnZSk6CisgICAgICAgICogd3RmL1RocmVhZGlu
Zy5oOgorICAgICAgICAoV1RGOjpUaHJlYWQ6Om1hY2hUaHJlYWQpOgorICAgICAgICAqIHd0Zi9t
YWMvTWFjaEV4Y2VwdGlvbnMuZGVmczogQ29waWVkIGZyb20gU291cmNlL1dURi93dGYvVGhyZWFk
TWVzc2FnZS5oLgorICAgICAgICAqIHd0Zi90aHJlYWRzL1NpZ25hbHMuY3BwOgorICAgICAgICAo
V1RGOjpzdGFydE1hY2hFeGNlcHRpb25IYW5kbGVyVGhyZWFkKToKKyAgICAgICAgKFdURjo6ZnJv
bU1hY2hFeGNlcHRpb24pOgorICAgICAgICAoV1RGOjp0b01hY2hNYXNrKToKKyAgICAgICAgKFdU
Rjo6aGFuZGxlU2lnbmFsc1dpdGhNYWNoKToKKyAgICAgICAgKFdURjo6c2V0RXhjZXB0aW9uUG9y
dHMpOgorICAgICAgICAoV1RGOjphY3RpdmVUaHJlYWRzKToKKyAgICAgICAgKFdURjo6cmVnaXN0
ZXJUaHJlYWRGb3JNYWNoRXhjZXB0aW9uSGFuZGxpbmcpOgorICAgICAgICAoV1RGOjp1bnJlZ2lz
dGVyVGhyZWFkRm9yTWFjaEV4Y2VwdGlvbkhhbmRsaW5nKToKKyAgICAgICAgKFdURjo6aW5zdGFs
bFNpZ25hbEhhbmRsZXIpOgorICAgICAgICAoV1RGOjpqc2NTaWduYWxIYW5kbGVyKToKKyAgICAg
ICAgKiB3dGYvdGhyZWFkcy9TaWduYWxzLmg6CisKIDIwMTctMDUtMzEgIENvbW1pdCBRdWV1ZSAg
PGNvbW1pdC1xdWV1ZUB3ZWJraXQub3JnPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIHJvbGxpbmcg
b3V0IHIyMTc2MTEgYW5kIHIyMTc2MzEuCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQVBJL3Rlc3RzL0V4ZWN1dGlvblRpbWVMaW1pdFRlc3QuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL0FQSS90ZXN0cy9FeGVjdXRpb25UaW1lTGltaXRUZXN0LmNwcAppbmRleCA4NWMyNzJj
NDQzNzY3NzU3M2UwZTc1MGFhYWM1NjM5ZWNlODQyZDdmLi5hM2MzOWE3NjFjMjQ1Y2RkNTk1ODM1
YjgzOGFkMDVmYTc3ZjAwZmNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJ
L3Rlc3RzL0V4ZWN1dGlvblRpbWVMaW1pdFRlc3QuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9BUEkvdGVzdHMvRXhlY3V0aW9uVGltZUxpbWl0VGVzdC5jcHAKQEAgLTMwLDEwICszMCwx
OCBAQAogI2luY2x1ZGUgIkpTQ29udGV4dFJlZlByaXZhdGUuaCIKICNpbmNsdWRlICJKYXZhU2Ny
aXB0LmgiCiAjaW5jbHVkZSAiT3B0aW9ucy5oIgorCiAjaW5jbHVkZSA8Y2hyb25vPgorI2luY2x1
ZGUgPHd0Zi9BdG9taWNzLmg+CisjaW5jbHVkZSA8d3RmL0NvbmRpdGlvbi5oPgogI2luY2x1ZGUg
PHd0Zi9DdXJyZW50VGltZS5oPgorI2luY2x1ZGUgPHd0Zi9Mb2NrLmg+CiAjaW5jbHVkZSA8d3Rm
L3RleHQvU3RyaW5nQnVpbGRlci5oPgogCisjaWYgSEFWRShNQUNIX0VYQ0VQVElPTlMpCisjaW5j
bHVkZSA8ZGlzcGF0Y2gvZGlzcGF0Y2guaD4KKyNlbmRpZgorCiB1c2luZyBuYW1lc3BhY2Ugc3Rk
OjpjaHJvbm87CiB1c2luZyBKU0M6Ok9wdGlvbnM7CiAKQEAgLTc3LDYgKzg1LDE1IEBAIHN0YXRp
YyBib29sIGV4dGVuZFRlcm1pbmF0ZUNhbGxiYWNrKEpTQ29udGV4dFJlZiBjdHgsIHZvaWQqKQog
ICAgIHJldHVybiB0cnVlOwogfQogCisjaWYgSEFWRShNQUNIX0VYQ0VQVElPTlMpCitib29sIGRp
c3BhdGNoVGVybWluYXRlQ2FsbGJhY2tDYWxsZWQgPSBmYWxzZTsKK3N0YXRpYyBib29sIGRpc3Bh
dGNoVGVybWl0YXRlQ2FsbGJhY2soSlNDb250ZXh0UmVmLCB2b2lkKikKK3sKKyAgICBkaXNwYXRj
aFRlcm1pbmF0ZUNhbGxiYWNrQ2FsbGVkID0gdHJ1ZTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKyNl
bmRpZgorCiBzdHJ1Y3QgVGllck9wdGlvbnMgewogICAgIGNvbnN0IGNoYXIqIHRpZXI7CiAgICAg
dW5zaWduZWQgdGltZUxpbWl0QWRqdXN0bWVudE1pbGxpczsKQEAgLTM2NSw2ICszODIsNjUgQEAg
aW50IHRlc3RFeGVjdXRpb25UaW1lTGltaXQoKQogICAgICAgICAgICAgfQogICAgICAgICB9CiAK
KyNpZiBIQVZFKE1BQ0hfRVhDRVBUSU9OUykKKyAgICAgICAgLyogVGVzdCBzY3JpcHQgdGltZW91
dCBmcm9tIGRpc3BhdGNoIHF1ZXVlOiAqLworICAgICAgICB0aW1lTGltaXQgPSAoMTAwICsgdGll
ckFkanVzdG1lbnRNaWxsaXMpIC8gMTAwMC4wOworICAgICAgICBKU0NvbnRleHRHcm91cFNldEV4
ZWN1dGlvblRpbWVMaW1pdChjb250ZXh0R3JvdXAsIHRpbWVMaW1pdCwgZGlzcGF0Y2hUZXJtaXRh
dGVDYWxsYmFjaywgMCk7CisgICAgICAgIHsKKyAgICAgICAgICAgIHVuc2lnbmVkIHRpbWVBZnRl
cldhdGNoZG9nU2hvdWxkSGF2ZUZpcmVkID0gMzAwICsgdGllckFkanVzdG1lbnRNaWxsaXM7CisK
KyAgICAgICAgICAgIFN0cmluZ0J1aWxkZXIgc2NyaXB0QnVpbGRlcjsKKyAgICAgICAgICAgIHNj
cmlwdEJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiZnVuY3Rpb24gZm9vKCkgeyB2YXIgc3RhcnRUaW1l
ID0gY3VycmVudENQVVRpbWUoKTsgd2hpbGUgKHRydWUpIHsgZm9yICh2YXIgaSA9IDA7IGkgPCAx
MDAwOyBpKyspOyBpZiAoY3VycmVudENQVVRpbWUoKSAtIHN0YXJ0VGltZSA+ICIpOworICAgICAg
ICAgICAgc2NyaXB0QnVpbGRlci5hcHBlbmROdW1iZXIodGltZUFmdGVyV2F0Y2hkb2dTaG91bGRI
YXZlRmlyZWQgLyAxMDAwLjApOworICAgICAgICAgICAgc2NyaXB0QnVpbGRlci5hcHBlbmRMaXRl
cmFsKCIpIGJyZWFrOyB9IH0gZm9vKCk7Iik7CisKKyAgICAgICAgICAgIEpTU3RyaW5nUmVmIHNj
cmlwdCA9IEpTU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKHNjcmlwdEJ1aWxkZXIudG9TdHJp
bmcoKS51dGY4KCkuZGF0YSgpKTsKKyAgICAgICAgICAgIGV4Y2VwdGlvbiA9IG51bGxwdHI7Cisg
ICAgICAgICAgICBkaXNwYXRjaFRlcm1pbmF0ZUNhbGxiYWNrQ2FsbGVkID0gZmFsc2U7CisKKyAg
ICAgICAgICAgIC8vIFdlIGhhdmUgdG8gZG8gdGhpcyBzaW5jZSBibG9ja3MgY2FuIG9ubHkgY2Fw
dHVyZSB0aGluZ3MgYXMgY29uc3QuCisgICAgICAgICAgICBKU0dsb2JhbENvbnRleHRSZWYmIGNv
bnRleHRSZWYgPSBjb250ZXh0OworICAgICAgICAgICAgSlNTdHJpbmdSZWYmIHNjcmlwdFJlZiA9
IHNjcmlwdDsKKyAgICAgICAgICAgIEpTVmFsdWVSZWYmIGV4Y2VwdGlvblJlZiA9IGV4Y2VwdGlv
bjsKKworICAgICAgICAgICAgTG9jayBzeW5jTG9jazsKKyAgICAgICAgICAgIExvY2smIHN5bmNM
b2NrUmVmID0gc3luY0xvY2s7CisgICAgICAgICAgICBDb25kaXRpb24gc3luY2hyb25pemU7Cisg
ICAgICAgICAgICBDb25kaXRpb24mIHN5bmNocm9uaXplUmVmID0gc3luY2hyb25pemU7CisgICAg
ICAgICAgICBib29sIGRpZFN5bmNocm9uaXplID0gZmFsc2U7CisgICAgICAgICAgICBib29sJiBk
aWRTeW5jaHJvbml6ZVJlZiA9IGRpZFN5bmNocm9uaXplOworCisgICAgICAgICAgICBzdGQ6OmNo
cm9ubzo6bWljcm9zZWNvbmRzIHN0YXJ0VGltZTsKKyAgICAgICAgICAgIHN0ZDo6Y2hyb25vOjpt
aWNyb3NlY29uZHMgZW5kVGltZTsKKworICAgICAgICAgICAgc3RkOjpjaHJvbm86Om1pY3Jvc2Vj
b25kcyYgc3RhcnRUaW1lUmVmID0gc3RhcnRUaW1lOworICAgICAgICAgICAgc3RkOjpjaHJvbm86
Om1pY3Jvc2Vjb25kcyYgZW5kVGltZVJlZiA9IGVuZFRpbWU7CisKKyAgICAgICAgICAgIGRpc3Bh
dGNoX2dyb3VwX3QgZ3JvdXAgPSBkaXNwYXRjaF9ncm91cF9jcmVhdGUoKTsKKyAgICAgICAgICAg
IGRpc3BhdGNoX2dyb3VwX2FzeW5jKGdyb3VwLCBkaXNwYXRjaF9nZXRfZ2xvYmFsX3F1ZXVlKDAs
IDApLCBeeworICAgICAgICAgICAgICAgIHN0YXJ0VGltZVJlZiA9IGN1cnJlbnRDUFVUaW1lKCk7
CisgICAgICAgICAgICAgICAgSlNFdmFsdWF0ZVNjcmlwdChjb250ZXh0UmVmLCBzY3JpcHRSZWYs
IG51bGxwdHIsIG51bGxwdHIsIDEsICZleGNlcHRpb25SZWYpOworICAgICAgICAgICAgICAgIGVu
ZFRpbWVSZWYgPSBjdXJyZW50Q1BVVGltZSgpOworICAgICAgICAgICAgICAgIGF1dG8gbG9ja2Vy
ID0gV1RGOjpob2xkTG9jayhzeW5jTG9ja1JlZik7CisgICAgICAgICAgICAgICAgZGlkU3luY2hy
b25pemVSZWYgPSB0cnVlOworICAgICAgICAgICAgICAgIHN5bmNocm9uaXplUmVmLm5vdGlmeUFs
bCgpOworICAgICAgICAgICAgfSk7CisKKyAgICAgICAgICAgIGF1dG8gbG9ja2VyID0gaG9sZExv
Y2soc3luY0xvY2spOworICAgICAgICAgICAgc3luY2hyb25pemUud2FpdChzeW5jTG9jaywgWyZd
IHsgcmV0dXJuIGRpZFN5bmNocm9uaXplOyB9KTsKKworICAgICAgICAgICAgaWYgKCgoZW5kVGlt
ZSAtIHN0YXJ0VGltZSkgPCBtaWxsaXNlY29uZHModGltZUFmdGVyV2F0Y2hkb2dTaG91bGRIYXZl
RmlyZWQpKSAmJiBkaXNwYXRjaFRlcm1pbmF0ZUNhbGxiYWNrQ2FsbGVkKQorICAgICAgICAgICAg
ICAgIHByaW50ZigiUEFTUzogJXMgc2NyaXB0IG9uIGRpc3BhdGNoIHF1ZXVlIHRpbWVkIG91dCBh
cyBleHBlY3RlZC5cbiIsIHRpZXJPcHRpb25zLnRpZXIpOworICAgICAgICAgICAgZWxzZSB7Cisg
ICAgICAgICAgICAgICAgaWYgKChlbmRUaW1lIC0gc3RhcnRUaW1lKSA+PSBtaWxsaXNlY29uZHMo
dGltZUFmdGVyV2F0Y2hkb2dTaG91bGRIYXZlRmlyZWQpKQorICAgICAgICAgICAgICAgICAgICBw
cmludGYoIkZBSUw6ICVzIHNjcmlwdCBvbiBkaXNwYXRjaCBxdWV1ZSBkaWQgbm90IHRpbWUgb3V0
IGFzIGV4cGVjdGVkLlxuIiwgdGllck9wdGlvbnMudGllcik7CisgICAgICAgICAgICAgICAgaWYg
KCFzaG91bGRUZXJtaW5hdGVDYWxsYmFja1dhc0NhbGxlZCkKKyAgICAgICAgICAgICAgICAgICAg
cHJpbnRmKCJGQUlMOiAlcyBzY3JpcHQgb24gZGlzcGF0Y2ggcXVldWUgdGltZW91dCBjYWxsYmFj
ayB3YXMgbm90IGNhbGxlZC5cbiIsIHRpZXJPcHRpb25zLnRpZXIpOworICAgICAgICAgICAgICAg
IGZhaWxlZCA9IHRydWU7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyNlbmRpZgorCiAgICAg
ICAgIEpTR2xvYmFsQ29udGV4dFJlbGVhc2UoY29udGV4dCk7CiAKICAgICAgICAgT3B0aW9uczo6
c2V0T3B0aW9ucyhzYXZlZE9wdGlvbnNCdWlsZGVyLnRvU3RyaW5nKCkuYXNjaWkoKS5kYXRhKCkp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNMb2NrLmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTG9jay5jcHAKaW5kZXggYzE3NWFlMGM0
ODJlZDI3YmQ1ZjZiZGM4Nzk2OGU3NWQ0NWFmNTBlZi4uMzFlMmRiNDBiMjE2ZWFhMmIxMTQyNGI4
MDNmYjdmOTFkZDRlMjYxZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNMb2NrLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0xvY2su
Y3BwCkBAIC0zMCw2ICszMCw4IEBACiAjaW5jbHVkZSAiU2FtcGxpbmdQcm9maWxlci5oIgogI2lu
Y2x1ZGUgIldhc21NYWNoaW5lVGhyZWFkcy5oIgogI2luY2x1ZGUgPHRocmVhZD4KKyNpbmNsdWRl
IDx3dGYvVGhyZWFkaW5nLmg+CisjaW5jbHVkZSA8d3RmL3RocmVhZHMvU2lnbmFscy5oPgogCiBu
YW1lc3BhY2UgSlNDIHsKIApAQCAtMTQ4LDYgKzE1MCwxMCBAQCB2b2lkIEpTTG9jazo6ZGlkQWNx
dWlyZUxvY2soKQogICAgIFdhc206OnN0YXJ0VHJhY2tpbmdDdXJyZW50VGhyZWFkKCk7CiAjZW5k
aWYKIAorI2lmIEhBVkUoTUFDSF9FWENFUFRJT05TKQorICAgIHJlZ2lzdGVyVGhyZWFkRm9yTWFj
aEV4Y2VwdGlvbkhhbmRsaW5nKCZUaHJlYWQ6OmN1cnJlbnQoKSk7CisjZW5kaWYKKwogICAgIG1f
dm0tPnRyYXBzKCkubm90aWZ5R3JhYkFsbExvY2tzKCk7CiAKICNpZiBFTkFCTEUoU0FNUExJTkdf
UFJPRklMRVIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcHRp
b25zLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wdGlvbnMuY3BwCmluZGV4
IDM3NTc3ODY4MmFiZmYwNWFlYzUzNGEyNTJlMDE4NjhmYzMyZTIwNTAuLjlmMTJkZjk1Y2Q5MGNh
OTA0N2Q2NmNiMTc2Y2QwZGNlMTAzNTkxNzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL09wdGlvbnMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL09wdGlvbnMuY3BwCkBAIC00Myw2ICs0Myw3IEBACiAjaW5jbHVkZSA8d3RmL1N0ZExpYkV4
dHJhcy5oPgogI2luY2x1ZGUgPHd0Zi9TdHJpbmdFeHRyYXMuaD4KICNpbmNsdWRlIDx3dGYvdGV4
dC9TdHJpbmdCdWlsZGVyLmg+CisjaW5jbHVkZSA8d3RmL3RocmVhZHMvU2lnbmFscy5oPgogCiAj
aWYgUExBVEZPUk0oQ09DT0EpCiAjaW5jbHVkZSA8Y3J0X2V4dGVybnMuaD4KQEAgLTM1OCw2ICsz
NTksMTAgQEAgc3RhdGljIHZvaWQgb3ZlcnJpZGVEZWZhdWx0cygpCiAjaWYgIUVOQUJMRShXRUJB
U1NFTUJMWV9GQVNUX01FTU9SWSkKICAgICBPcHRpb25zOjp1c2VXZWJBc3NlbWJseUZhc3RNZW1v
cnkoKSA9IGZhbHNlOwogI2VuZGlmCisKKyNpZiAhSEFWRShNQUNIX0VYQ0VQVElPTlMpCisgICAg
T3B0aW9uczo6dXNlTWFjaEZvckV4Y2VwdGlvbnMoKSA9IGZhbHNlOworI2VuZGlmCiB9CiAKIHN0
YXRpYyB2b2lkIHJlY29tcHV0ZURlcGVuZGVudE9wdGlvbnMoKQpAQCAtNTUwLDYgKzU1NSwxMSBA
QCB2b2lkIE9wdGlvbnM6OmluaXRpYWxpemUoKQogCiAgICAgICAgICAgICBkdW1wT3B0aW9uc0lm
TmVlZGVkKCk7CiAgICAgICAgICAgICBlbnN1cmVPcHRpb25zQXJlQ29oZXJlbnQoKTsKKworI2lm
IEhBVkUoTUFDSF9FWENFUFRJT05TKQorICAgICAgICAgICAgaWYgKE9wdGlvbnM6OnVzZU1hY2hG
b3JFeGNlcHRpb25zKCkpCisgICAgICAgICAgICAgICAgaGFuZGxlU2lnbmFsc1dpdGhNYWNoKCk7
CisjZW5kaWYKICAgICAgICAgfSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL09wdGlvbnMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09w
dGlvbnMuaAppbmRleCA0YWQxNmVhZmZhMTljOWJmMTFiNGIxOTkxNDZkY2FlYWZhOTRiMzNjLi5h
MDkzNWQyZGRjMmJmMjkzYzViYWVlZTdjOTE2YzQzYjA5Mzc5ZDNkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcHRpb25zLmgKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvT3B0aW9ucy5oCkBAIC00MjMsNiArNDIzLDggQEAgdHlwZWRlZiBjb25z
dCBjaGFyKiBvcHRpb25TdHJpbmc7CiAgICAgdih1bnNpZ25lZCwgd2F0Y2hkb2csIDAsIE5vcm1h
bCwgIndhdGNoZG9nIHRpbWVvdXQgKDAgPSBEaXNhYmxlZCwgTiA9IGEgdGltZW91dCBwZXJpb2Qg
b2YgTiBtaWxsaXNlY29uZHMpIikgXAogICAgIHYoYm9vbCwgdXNlUG9sbGluZ1RyYXBzLCBmYWxz
ZSwgTm9ybWFsLCAidXNlIHBvbGxpbmcgKGluc3RlYWQgb2Ygc2lnbmFsbGluZykgVk0gdHJhcHMi
KSBcCiAgICAgXAorICAgIHYoYm9vbCwgdXNlTWFjaEZvckV4Y2VwdGlvbnMsIHRydWUsIE5vcm1h
bCwgIlVzZSBtYWNoIGV4Y2VwdGlvbnMgcmF0aGVyIHRoYW4gc2lnbmFscyB0byBoYW5kbGUgZmF1
bHRzIGFuZCBwYXNzIHRocmVhZCBtZXNzYWdlcy4gKFRoaXMgZG9lcyBub3RoaW5nIG9uIHBsYXRm
b3JtcyB3aXRob3V0IG1hY2gpIikgXAorICAgIFwKICAgICB2KGJvb2wsIHVzZUlDU3RhdHMsIGZh
bHNlLCBOb3JtYWwsIG51bGxwdHIpIFwKICAgICBcCiAgICAgdih1bnNpZ25lZCwgcHJvdG90eXBl
SGl0Q291bnRGb3JMTEludENhY2hpbmcsIDIsIE5vcm1hbCwgIk51bWJlciBvZiBwcm90b3R5cGUg
cHJvcGVydHkgaGl0cyBiZWZvcmUgY2FjaGluZyBhIHByb3RvdHlwZSBpbiB0aGUgTExJbnQuIEEg
Y291bnQgb2YgMCBtZWFucyBuZXZlciBjYWNoZS4iKSBcCkBAIC00NDYsNiArNDQ4LDcgQEAgdHlw
ZWRlZiBjb25zdCBjaGFyKiBvcHRpb25TdHJpbmc7CiAgICAgdih1bnNpZ25lZCwgd2ViQXNzZW1i
bHlCQlFPcHRpbWl6YXRpb25MZXZlbCwgMSwgTm9ybWFsLCAiQjMgT3B0aW1pemF0aW9uIGxldmVs
IGZvciBCQlEgV2ViIEFzc2VtYmx5IG1vZHVsZSBjb21waWxhdGlvbnMuIikgXAogICAgIHYodW5z
aWduZWQsIHdlYkFzc2VtYmx5T01HT3B0aW1pemF0aW9uTGV2ZWwsIE9wdGlvbnM6OmRlZmF1bHRC
M09wdExldmVsKCksIE5vcm1hbCwgIkIzIE9wdGltaXphdGlvbiBsZXZlbCBmb3IgT01HIFdlYiBB
c3NlbWJseSBtb2R1bGUgY29tcGlsYXRpb25zLiIpIFwKICAgICBcCisgICAgdihib29sLCB1c2VC
QlFUaWVyVXBDaGVja3MsIHRydWUsIE5vcm1hbCwgIkVuYWJsZXMgdGllciB1cCBjaGVja3MgZm9y
IG91ciBCQlEgY29kZS4iKSBcCiAgICAgdih1bnNpZ25lZCwgd2ViQXNzZW1ibHlPTUdUaWVyVXBD
b3VudCwgNTAwMCwgTm9ybWFsLCAiVGhlIGNvdW50ZG93biBiZWZvcmUgd2UgdGllciB1cCBhIGZ1
bmN0aW9uIHRvIE9NRy4iKSBcCiAgICAgdih1bnNpZ25lZCwgd2ViQXNzZW1ibHlMb29wRGVjcmVt
ZW50LCAxNSwgTm9ybWFsLCAiVGhlIGFtb3VudCB0aGUgdGllciB1cCBjb3VudGRvd24gaXMgZGVj
cmVtZW50ZWQgb24gZWFjaCBsb29wIGJhY2tlZGdlLiIpIFwKICAgICB2KHVuc2lnbmVkLCB3ZWJB
c3NlbWJseUZ1bmN0aW9uRW50cnlEZWNyZW1lbnQsIDEsIE5vcm1hbCwgIlRoZSBhbW91bnQgdGhl
IHRpZXIgdXAgY291bnRkb3duIGlzIGRlY3JlbWVudGVkIG9uIGVhY2ggZnVuY3Rpb24gZW50cnku
IikgXApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk1UcmFwcy5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTVRyYXBzLmNwcAppbmRleCAxYmFh
Y2U2MDQ0ZTY2MGE4ZTU0NDFmYmFkMDE4ZWE5MDkzMWE0YzkxLi44YzU3YzQ1NmFlNDM2OGFkZjI4
ZWEwYTY0NThlN2MwMzlhOTcwZWU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9WTVRyYXBzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9W
TVRyYXBzLmNwcApAQCAtNTMsMTEgKzUzLDExIEBAIEFMV0FZU19JTkxJTkUgVk0mIFZNVHJhcHM6
OnZtKCkgY29uc3QKICNpZiBFTkFCTEUoU0lHTkFMX0JBU0VEX1ZNX1RSQVBTKQogCiBzdHJ1Y3Qg
U2lnbmFsQ29udGV4dCB7Ci0gICAgU2lnbmFsQ29udGV4dChtY29udGV4dF90JiBtY29udGV4dCkK
LSAgICAgICAgOiBtY29udGV4dChtY29udGV4dCkKLSAgICAgICAgLCB0cmFwUEMoTWFjaGluZUNv
bnRleHQ6Omluc3RydWN0aW9uUG9pbnRlcihtY29udGV4dCkpCi0gICAgICAgICwgc3RhY2tQb2lu
dGVyKE1hY2hpbmVDb250ZXh0OjpzdGFja1BvaW50ZXIobWNvbnRleHQpKQotICAgICAgICAsIGZy
YW1lUG9pbnRlcihNYWNoaW5lQ29udGV4dDo6ZnJhbWVQb2ludGVyKG1jb250ZXh0KSkKKyAgICBT
aWduYWxDb250ZXh0KFBsYXRmb3JtUmVnaXN0ZXJzJiByZWdpc3RlcnMpCisgICAgICAgIDogcmVn
aXN0ZXJzKHJlZ2lzdGVycykKKyAgICAgICAgLCB0cmFwUEMoTWFjaGluZUNvbnRleHQ6Omluc3Ry
dWN0aW9uUG9pbnRlcihyZWdpc3RlcnMpKQorICAgICAgICAsIHN0YWNrUG9pbnRlcihNYWNoaW5l
Q29udGV4dDo6c3RhY2tQb2ludGVyKHJlZ2lzdGVycykpCisgICAgICAgICwgZnJhbWVQb2ludGVy
KE1hY2hpbmVDb250ZXh0OjpmcmFtZVBvaW50ZXIocmVnaXN0ZXJzKSkKICAgICB7CiAjaWYgQ1BV
KFg4Nl82NCkgfHwgQ1BVKFg4NikKICAgICAgICAgLy8gT24gWDg2XzY0LCBTSUdUUkFQIHJlcG9y
dHMgdGhlIGFkZHJlc3MgYWZ0ZXIgdGhlIHRyYXBwaW5nIFBDLiBTbywgZGVjIGJ5IDEuCkBAIC02
OCwxMSArNjgsMTEgQEAgc3RydWN0IFNpZ25hbENvbnRleHQgewogICAgIHZvaWQgYWRqdXN0UENU
b1BvaW50VG9UcmFwcGluZ0luc3RydWN0aW9uKCkKICAgICB7CiAjaWYgQ1BVKFg4Nl82NCkgfHwg
Q1BVKFg4NikKLSAgICAgICAgTWFjaGluZUNvbnRleHQ6Omluc3RydWN0aW9uUG9pbnRlcihtY29u
dGV4dCkgPSB0cmFwUEM7CisgICAgICAgIE1hY2hpbmVDb250ZXh0OjppbnN0cnVjdGlvblBvaW50
ZXIocmVnaXN0ZXJzKSA9IHRyYXBQQzsKICNlbmRpZgogICAgIH0KIAotICAgIG1jb250ZXh0X3Qm
IG1jb250ZXh0OworICAgIFBsYXRmb3JtUmVnaXN0ZXJzJiByZWdpc3RlcnM7CiAgICAgdm9pZCog
dHJhcFBDOwogICAgIHZvaWQqIHN0YWNrUG9pbnRlcjsKICAgICB2b2lkKiBmcmFtZVBvaW50ZXI7
CkBAIC0xMzAsOCArMTMwLDggQEAgc3RhdGljIEV4cGVjdGVkPFZNQW5kU3RhY2tCb3VuZHMsIFZN
VHJhcHM6OkVycm9yPiBmaW5kQWN0aXZlVk1BbmRTdGFja0JvdW5kcyhTaWcKIAogc3RhdGljIHZv
aWQgaW5zdGFsbFNpZ25hbEhhbmRsZXIoKQogewotICAgIGluc3RhbGxTaWduYWxIYW5kbGVyKFNp
Z25hbDo6VHJhcCwgW10gKGludCwgc2lnaW5mb190Kiwgdm9pZCogdWFwKSAtPiBTaWduYWxBY3Rp
b24gewotICAgICAgICBTaWduYWxDb250ZXh0IGNvbnRleHQoc3RhdGljX2Nhc3Q8dWNvbnRleHRf
dCo+KHVhcCktPnVjX21jb250ZXh0KTsKKyAgICBpbnN0YWxsU2lnbmFsSGFuZGxlcihTaWduYWw6
OlRyYXAsIFtdIChTaWduYWwsIFNpZ0luZm8mLCBQbGF0Zm9ybVJlZ2lzdGVycyYgcmVnaXN0ZXJz
KSAtPiBTaWduYWxBY3Rpb24geworICAgICAgICBTaWduYWxDb250ZXh0IGNvbnRleHQocmVnaXN0
ZXJzKTsKIAogICAgICAgICBpZiAoIWlzSklUUEMoY29udGV4dC50cmFwUEMpKQogICAgICAgICAg
ICAgcmV0dXJuIFNpZ25hbEFjdGlvbjo6Tm90SGFuZGxlZDsKQEAgLTQwNCw4ICs0MDQsOCBAQCB2
b2lkIFZNVHJhcHM6OlNpZ25hbFNlbmRlcjo6c2VuZCgpCiAgICAgICAgICAgICBWTSYgdm0gPSAq
bV92bTsKICAgICAgICAgICAgIGF1dG8gb3B0aW9uYWxPd25lclRocmVhZCA9IHZtLm93bmVyVGhy
ZWFkKCk7CiAgICAgICAgICAgICBpZiAob3B0aW9uYWxPd25lclRocmVhZCkgewotICAgICAgICAg
ICAgICAgIHNlbmRNZXNzYWdlKCpvcHRpb25hbE93bmVyVGhyZWFkLnZhbHVlKCkuZ2V0KCksIFtd
IChzaWdpbmZvX3QqLCB1Y29udGV4dF90KiB1Y29udGV4dCkgLT4gdm9pZCB7Ci0gICAgICAgICAg
ICAgICAgICAgIFNpZ25hbENvbnRleHQgY29udGV4dCh1Y29udGV4dC0+dWNfbWNvbnRleHQpOwor
ICAgICAgICAgICAgICAgIHNlbmRNZXNzYWdlKCpvcHRpb25hbE93bmVyVGhyZWFkLnZhbHVlKCku
Z2V0KCksIFtdIChQbGF0Zm9ybVJlZ2lzdGVycyYgcmVnaXN0ZXJzKSAtPiB2b2lkIHsKKyAgICAg
ICAgICAgICAgICAgICAgU2lnbmFsQ29udGV4dCBjb250ZXh0KHJlZ2lzdGVycyk7CiAgICAgICAg
ICAgICAgICAgICAgIGF1dG8gYWN0aXZlVk1BbmRTdGFja0JvdW5kcyA9IGZpbmRBY3RpdmVWTUFu
ZFN0YWNrQm91bmRzKGNvbnRleHQpOwogICAgICAgICAgICAgICAgICAgICBpZiAoYWN0aXZlVk1B
bmRTdGFja0JvdW5kcykgewogICAgICAgICAgICAgICAgICAgICAgICAgVk0qIHZtID0gYWN0aXZl
Vk1BbmRTdGFja0JvdW5kcy52YWx1ZSgpLnZtOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3Rvb2xzL1NpZ2lsbENyYXNoQW5hbHl6ZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3Rvb2xzL1NpZ2lsbENyYXNoQW5hbHl6ZXIuY3BwCmluZGV4IDRhZGFlZmYxY2RhMmQxZmJj
NmY5MDYxZjA2M2UxNGQyZTYzMzAwNDguLjcxYTZlNDI1NWM2NDVkZDZhZjNiZGIyNTBjY2YxM2Fk
OGMxYThhNDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90b29scy9TaWdpbGxD
cmFzaEFuYWx5emVyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdG9vbHMvU2lnaWxs
Q3Jhc2hBbmFseXplci5jcHAKQEAgLTc4LDExICs3OCwxMSBAQCBwcml2YXRlOgogI2VuZGlmIC8v
IFVTRShPU19MT0cpCiAKIHN0cnVjdCBTaWduYWxDb250ZXh0IHsKLSAgICBTaWduYWxDb250ZXh0
KG1jb250ZXh0X3QmIG1jb250ZXh0KQotICAgICAgICA6IG1jb250ZXh0KG1jb250ZXh0KQotICAg
ICAgICAsIG1hY2hpbmVQQyhNYWNoaW5lQ29udGV4dDo6aW5zdHJ1Y3Rpb25Qb2ludGVyKG1jb250
ZXh0KSkKLSAgICAgICAgLCBzdGFja1BvaW50ZXIoTWFjaGluZUNvbnRleHQ6OnN0YWNrUG9pbnRl
cihtY29udGV4dCkpCi0gICAgICAgICwgZnJhbWVQb2ludGVyKE1hY2hpbmVDb250ZXh0OjpmcmFt
ZVBvaW50ZXIobWNvbnRleHQpKQorICAgIFNpZ25hbENvbnRleHQoUGxhdGZvcm1SZWdpc3RlcnMm
IHJlZ2lzdGVycykKKyAgICAgICAgOiByZWdpc3RlcnMocmVnaXN0ZXJzKQorICAgICAgICAsIG1h
Y2hpbmVQQyhNYWNoaW5lQ29udGV4dDo6aW5zdHJ1Y3Rpb25Qb2ludGVyKHJlZ2lzdGVycykpCisg
ICAgICAgICwgc3RhY2tQb2ludGVyKE1hY2hpbmVDb250ZXh0OjpzdGFja1BvaW50ZXIocmVnaXN0
ZXJzKSkKKyAgICAgICAgLCBmcmFtZVBvaW50ZXIoTWFjaGluZUNvbnRleHQ6OmZyYW1lUG9pbnRl
cihyZWdpc3RlcnMpKQogICAgIHsgfQogCiAgICAgdm9pZCBkdW1wKCkKQEAgLTExMiw3ICsxMTIs
NyBAQCBzdHJ1Y3QgU2lnbmFsQ29udGV4dCB7CiAgICAgICAgIHYoZ3MpCiAKICNkZWZpbmUgRFVN
UF9SRUdJU1RFUihfX3JlZykgXAotICAgICAgICBsb2coIlJlZ2lzdGVyICIgI19fcmVnICI6ICVw
IiwgcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4obWNvbnRleHQtPl9fc3MuX18jI19fcmVnKSk7Cisg
ICAgICAgIGxvZygiUmVnaXN0ZXIgIiAjX19yZWcgIjogJXAiLCByZWludGVycHJldF9jYXN0PHZv
aWQqPihyZWdpc3RlcnMuX18jI19fcmVnKSk7CiAgICAgICAgIEZPUl9FQUNIX1JFR0lTVEVSKERV
TVBfUkVHSVNURVIpCiAjdW5kZWYgRk9SX0VBQ0hfUkVHSVNURVIKIApAQCAtMTIwLDIwICsxMjAs
MjAgQEAgc3RydWN0IFNpZ25hbENvbnRleHQgewogICAgICAgICBpbnQgaTsKICAgICAgICAgZm9y
IChpID0gMDsgaSA8IDI4OyBpICs9IDQpIHsKICAgICAgICAgICAgIGxvZygieCVkOiAlMDE2bGx4
IHglZDogJTAxNmxseCB4JWQ6ICUwMTZsbHggeCVkOiAlMDE2bGx4IiwKLSAgICAgICAgICAgICAg
ICBpLCBtY29udGV4dC0+X19zcy5fX3hbaV0sCi0gICAgICAgICAgICAgICAgaSsxLCBtY29udGV4
dC0+X19zcy5fX3hbaSsxXSwKLSAgICAgICAgICAgICAgICBpKzIsIG1jb250ZXh0LT5fX3NzLl9f
eFtpKzJdLAotICAgICAgICAgICAgICAgIGkrMywgbWNvbnRleHQtPl9fc3MuX194W2krM10pOwor
ICAgICAgICAgICAgICAgIGksIHJlZ2lzdGVycy5fX3hbaV0sCisgICAgICAgICAgICAgICAgaSsx
LCByZWdpc3RlcnMuX194W2krMV0sCisgICAgICAgICAgICAgICAgaSsyLCByZWdpc3RlcnMuX194
W2krMl0sCisgICAgICAgICAgICAgICAgaSszLCByZWdpc3RlcnMuX194W2krM10pOwogICAgICAg
ICB9CiAgICAgICAgIEFTU0VSVChpIDwgMjkpOwogICAgICAgICBsb2coInglZDogJTAxNmxseCBm
cDogJTAxNmxseCBscjogJTAxNmxseCIsCi0gICAgICAgICAgICBpLCBtY29udGV4dC0+X19zcy5f
X3hbaV0sIG1jb250ZXh0LT5fX3NzLl9fZnAsIG1jb250ZXh0LT5fX3NzLl9fbHIpOworICAgICAg
ICAgICAgaSwgcmVnaXN0ZXJzLl9feFtpXSwgcmVnaXN0ZXJzLl9fZnAsIHJlZ2lzdGVycy5fX2xy
KTsKICAgICAgICAgbG9nKCJzcDogJTAxNmxseCBwYzogJTAxNmxseCBjcHNyOiAlMDh4IiwKLSAg
ICAgICAgICAgIG1jb250ZXh0LT5fX3NzLl9fc3AsIG1jb250ZXh0LT5fX3NzLl9fcGMsIG1jb250
ZXh0LT5fX3NzLl9fY3Bzcik7CisgICAgICAgICAgICByZWdpc3RlcnMuX19zcCwgcmVnaXN0ZXJz
Ll9fcGMsIHJlZ2lzdGVycy5fX2Nwc3IpOwogI2VuZGlmCiAgICAgfQogCi0gICAgbWNvbnRleHRf
dCYgbWNvbnRleHQ7CisgICAgUGxhdGZvcm1SZWdpc3RlcnMmIHJlZ2lzdGVyczsKICAgICB2b2lk
KiBtYWNoaW5lUEM7CiAgICAgdm9pZCogc3RhY2tQb2ludGVyOwogICAgIHZvaWQqIGZyYW1lUG9p
bnRlcjsKQEAgLTE0Miw4ICsxNDIsOCBAQCBzdHJ1Y3QgU2lnbmFsQ29udGV4dCB7CiBzdGF0aWMg
dm9pZCBpbnN0YWxsQ3Jhc2hIYW5kbGVyKCkKIHsKICNpZiBDUFUoWDg2XzY0KSB8fCBDUFUoQVJN
NjQpCi0gICAgaW5zdGFsbFNpZ25hbEhhbmRsZXIoU2lnbmFsOjpJbGwsIFtdIChpbnQsIHNpZ2lu
Zm9fdCosIHZvaWQqIHVhcCkgewotICAgICAgICBTaWduYWxDb250ZXh0IGNvbnRleHQoc3RhdGlj
X2Nhc3Q8dWNvbnRleHRfdCo+KHVhcCktPnVjX21jb250ZXh0KTsKKyAgICBpbnN0YWxsU2lnbmFs
SGFuZGxlcihTaWduYWw6OklsbCwgW10gKFNpZ25hbCwgU2lnSW5mbyYsIFBsYXRmb3JtUmVnaXN0
ZXJzJiByZWdpc3RlcnMpIHsKKyAgICAgICAgU2lnbmFsQ29udGV4dCBjb250ZXh0KHJlZ2lzdGVy
cyk7CiAKICAgICAgICAgaWYgKCFpc0pJVFBDKGNvbnRleHQubWFjaGluZVBDKSkKICAgICAgICAg
ICAgIHJldHVybiBTaWduYWxBY3Rpb246Ok5vdEhhbmRsZWQ7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtQkJRUGxhbi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvd2FzbS9XYXNtQkJRUGxhbi5jcHAKaW5kZXggMWRkMGNkMWQ4MzVjNmMyZjIzMWIwMGI4ODZk
ZGU0YWY3MmMyNjNjZS4uYjFiNTk4ZDIwYzVjMDA3N2Q5ZTlkMDhlMzY4YWQ1Y2ExNzgzMWJhZiAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUJCUVBsYW4uY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21CQlFQbGFuLmNwcApAQCAtMjQyLDcg
KzI0Miw3IEBAIHZvaWQgQkJRUGxhbjo6Y29tcGlsZUZ1bmN0aW9ucyhDb21waWxhdGlvbkVmZm9y
dCBlZmZvcnQpCiAgICAgICAgIEFTU0VSVCh2YWxpZGF0ZUZ1bmN0aW9uKGZ1bmN0aW9uU3RhcnQs
IGZ1bmN0aW9uTGVuZ3RoLCBzaWduYXR1cmUsIG1fbW9kdWxlSW5mb3JtYXRpb24uZ2V0KCkpKTsK
IAogICAgICAgICBtX3VubGlua2VkV2FzbVRvV2FzbUNhbGxzW2Z1bmN0aW9uSW5kZXhdID0gVmVj
dG9yPFVubGlua2VkV2FzbVRvV2FzbUNhbGw+KCk7Ci0gICAgICAgIFRpZXJVcENvdW50KiB0aWVy
VXAgPSAmbV90aWVyVXBDb3VudHNbZnVuY3Rpb25JbmRleF07CisgICAgICAgIFRpZXJVcENvdW50
KiB0aWVyVXAgPSBPcHRpb25zOjp1c2VCQlFUaWVyVXBDaGVja3MoKSA/ICZtX3RpZXJVcENvdW50
c1tmdW5jdGlvbkluZGV4XSA6IG51bGxwdHI7CiAgICAgICAgIGF1dG8gcGFyc2VBbmRDb21waWxl
UmVzdWx0ID0gcGFyc2VBbmRDb21waWxlKG1fY29tcGlsYXRpb25Db250ZXh0c1tmdW5jdGlvbklu
ZGV4XSwgZnVuY3Rpb25TdGFydCwgZnVuY3Rpb25MZW5ndGgsIHNpZ25hdHVyZSwgbV91bmxpbmtl
ZFdhc21Ub1dhc21DYWxsc1tmdW5jdGlvbkluZGV4XSwgbV9tb2R1bGVJbmZvcm1hdGlvbi5nZXQo
KSwgbV9tb2RlLCBDb21waWxhdGlvbk1vZGU6OkJCUU1vZGUsIGZ1bmN0aW9uSW5kZXgsIHRpZXJV
cCk7CiAKICAgICAgICAgaWYgKFVOTElLRUxZKCFwYXJzZUFuZENvbXBpbGVSZXN1bHQpKSB7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtRmF1bHRTaWduYWxIYW5k
bGVyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21GYXVsdFNpZ25hbEhhbmRs
ZXIuY3BwCmluZGV4IDJlMGM5OWEzOWJlYmQzMTc4YjkxNDhkOTU4ZmU1M2U1N2E2MjI5N2UuLjI2
NGMzNGRlNDVkYTE3NWE1ZDUxNDFjMTcxZWZlOTVlMDYzYzVlMjcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21GYXVsdFNpZ25hbEhhbmRsZXIuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21GYXVsdFNpZ25hbEhhbmRsZXIuY3BwCkBAIC01
Miw5ICs1Miw4IEBAIHN0YXRpYyBMYXp5TmV2ZXJEZXN0cm95ZWQ8SGFzaFNldDxzdGQ6OnR1cGxl
PHZvaWQqLCB2b2lkKj4+PiBjb2RlTG9jYXRpb25zOyAvLyAoCiAKIHN0YXRpYyBib29sIGZhc3RI
YW5kbGVySW5zdGFsbGVkIHsgZmFsc2UgfTsKIAotc3RhdGljIFNpZ25hbEFjdGlvbiB0cmFwSGFu
ZGxlcihpbnQsIHNpZ2luZm9fdCogc2lnSW5mbywgdm9pZCogdWNvbnRleHQpCitzdGF0aWMgU2ln
bmFsQWN0aW9uIHRyYXBIYW5kbGVyKFNpZ25hbCwgU2lnSW5mbyYgc2lnSW5mbywgUGxhdGZvcm1S
ZWdpc3RlcnMmIGNvbnRleHQpCiB7Ci0gICAgbWNvbnRleHRfdCYgY29udGV4dCA9IHN0YXRpY19j
YXN0PHVjb250ZXh0X3QqPih1Y29udGV4dCktPnVjX21jb250ZXh0OwogICAgIHZvaWQqIGZhdWx0
aW5nSW5zdHJ1Y3Rpb24gPSBNYWNoaW5lQ29udGV4dDo6aW5zdHJ1Y3Rpb25Qb2ludGVyKGNvbnRl
eHQpOwogICAgIGRhdGFMb2dMbklmKHZlcmJvc2UsICJzdGFydGluZyBoYW5kbGVyIGZvciBmYXVs
dCBhdDogIiwgUmF3UG9pbnRlcihmYXVsdGluZ0luc3RydWN0aW9uKSk7CiAKQEAgLTY0LDcgKzYz
LDcgQEAgc3RhdGljIFNpZ25hbEFjdGlvbiB0cmFwSGFuZGxlcihpbnQsIHNpZ2luZm9fdCogc2ln
SW5mbywgdm9pZCogdWNvbnRleHQpCiAgICAgaWYgKGlzSklUUEMoZmF1bHRpbmdJbnN0cnVjdGlv
bikpIHsKICAgICAgICAgYm9vbCBmYXVsdGVkSW5BY3RpdmVGYXN0TWVtb3J5ID0gZmFsc2U7CiAg
ICAgICAgIHsKLSAgICAgICAgICAgIHZvaWQqIGZhdWx0aW5nQWRkcmVzcyA9IHNpZ0luZm8tPnNp
X2FkZHI7CisgICAgICAgICAgICB2b2lkKiBmYXVsdGluZ0FkZHJlc3MgPSBzaWdJbmZvLmZhdWx0
aW5nQWRkcmVzczsKICAgICAgICAgICAgIGRhdGFMb2dMbklmKHZlcmJvc2UsICJjaGVja2luZyBm
YXVsdGluZyBhZGRyZXNzOiAiLCBSYXdQb2ludGVyKGZhdWx0aW5nQWRkcmVzcyksICIgaXMgaW4g
YW4gYWN0aXZlIGZhc3QgbWVtb3J5Iik7CiAgICAgICAgICAgICBmYXVsdGVkSW5BY3RpdmVGYXN0
TWVtb3J5ID0gV2FzbTo6TWVtb3J5OjphZGRyZXNzSXNJbkFjdGl2ZUZhc3RNZW1vcnkoZmF1bHRp
bmdBZGRyZXNzKTsKICAgICAgICAgfQpAQCAtMTI0LDExICsxMjMsMTEgQEAgdm9pZCBlbmFibGVG
YXN0TWVtb3J5KCkKICAgICAgICAgICAgIHJldHVybjsKIAogI2lmIEVOQUJMRShXRUJBU1NFTUJM
WV9GQVNUX01FTU9SWSkKLSAgICAgICAgaW5zdGFsbFNpZ25hbEhhbmRsZXIoU2lnbmFsOjpCdXMs
IFtdIChpbnQgc2lnbmFsLCBzaWdpbmZvX3QqIHNpZ0luZm8sIHZvaWQqIHVjb250ZXh0KSB7Cisg
ICAgICAgIGluc3RhbGxTaWduYWxIYW5kbGVyKFNpZ25hbDo6QnVzLCBbXSAoU2lnbmFsIHNpZ25h
bCwgU2lnSW5mbyYgc2lnSW5mbywgUGxhdGZvcm1SZWdpc3RlcnMmIHVjb250ZXh0KSB7CiAgICAg
ICAgICAgICByZXR1cm4gdHJhcEhhbmRsZXIoc2lnbmFsLCBzaWdJbmZvLCB1Y29udGV4dCk7CiAg
ICAgICAgIH0pOwogCi0gICAgICAgIGluc3RhbGxTaWduYWxIYW5kbGVyKFNpZ25hbDo6U2VnViwg
W10gKGludCBzaWduYWwsIHNpZ2luZm9fdCogc2lnSW5mbywgdm9pZCogdWNvbnRleHQpIHsKKyAg
ICAgICAgaW5zdGFsbFNpZ25hbEhhbmRsZXIoU2lnbmFsOjpTZWdWLCBbXSAoU2lnbmFsIHNpZ25h
bCwgU2lnSW5mbyYgc2lnSW5mbywgUGxhdGZvcm1SZWdpc3RlcnMmIHVjb250ZXh0KSB7CiAgICAg
ICAgICAgICByZXR1cm4gdHJhcEhhbmRsZXIoc2lnbmFsLCBzaWdJbmZvLCB1Y29udGV4dCk7CiAg
ICAgICAgIH0pOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNt
TWFjaGluZVRocmVhZHMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbU1hY2hp
bmVUaHJlYWRzLmNwcAppbmRleCA1YWFjODdhY2I1NzQ3YzdmY2EyZjkzNmVjOWNmNjc4YjQzMTc4
MTcxLi4wYTM2N2ZkNWUyMjUyN2U5YzNjODc1MzZlY2ZkNzJiMTNkZjc5ZDViIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtTWFjaGluZVRocmVhZHMuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21NYWNoaW5lVGhyZWFkcy5jcHAKQEAgLTMx
LDYgKzMxLDcgQEAKICNpbmNsdWRlICJNYWNoaW5lU3RhY2tNYXJrZXIuaCIKICNpbmNsdWRlIDx3
dGYvTmV2ZXJEZXN0cm95ZWQuaD4KICNpbmNsdWRlIDx3dGYvVGhyZWFkTWVzc2FnZS5oPgorI2lu
Y2x1ZGUgPHd0Zi90aHJlYWRzL1NpZ25hbHMuaD4KIAogbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFj
ZSBXYXNtIHsKIApAQCAtNTcsNyArNTgsNyBAQCB2b2lkIHJlc2V0SW5zdHJ1Y3Rpb25DYWNoZU9u
QWxsVGhyZWFkcygpCiAKICAgICBjb25zdCBEb3VibHlMaW5rZWRMaXN0PE1hY2hpbmVUaHJlYWRz
OjpNYWNoaW5lVGhyZWFkPiYgdGhyZWFkcyA9IHdhc21UaHJlYWRzKCkudGhyZWFkc0xpc3RIZWFk
KGxvY2tlcik7CiAgICAgZm9yIChjb25zdCBhdXRvKiB0aHJlYWQgPSB0aHJlYWRzLmhlYWQoKTsg
dGhyZWFkOyB0aHJlYWQgPSB0aHJlYWQtPm5leHQoKSkgewotICAgICAgICBzZW5kTWVzc2FnZSh0
aHJlYWQtPm1fdGhyZWFkLmdldCgpLCBbXSAoc2lnaW5mb190KiwgdWNvbnRleHRfdCopIHsKKyAg
ICAgICAgc2VuZE1lc3NhZ2UodGhyZWFkLT5tX3RocmVhZC5nZXQoKSwgW10gKGNvbnN0IFBsYXRm
b3JtUmVnaXN0ZXJzJikgewogICAgICAgICAgICAgLy8gSXQncyBsaWtlbHkgdGhhdCB0aGUgc2ln
bmFsIGhhbmRsZXIgd2lsbCBhbHJlYWR5IHJlc2V0IHRoZSBpbnN0cnVjdGlvbiBjYWNoZSBidXQg
d2UgbWlnaHQgYXMgd2VsbCBiZSBzdXJlLgogICAgICAgICAgICAgV1RGOjpjcm9zc01vZGlmeWlu
Z0NvZGVGZW5jZSgpOwogICAgICAgICB9KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvQ29uZmln
dXJhdGlvbnMvV1RGLnhjY29uZmlnIGIvU291cmNlL1dURi9Db25maWd1cmF0aW9ucy9XVEYueGNj
b25maWcKaW5kZXggNDIxZWZkOTYxYzE0NjhjZDIwZGRjNWJiZjg4OTYyMGVlMWNmNThkYy4uYWYx
OTljZWI5NTA2Zjg5NTBkMzNhOWNlNDgwN2JhNmRiYjdiMjdlNSAxMDA2NDQKLS0tIGEvU291cmNl
L1dURi9Db25maWd1cmF0aW9ucy9XVEYueGNjb25maWcKKysrIGIvU291cmNlL1dURi9Db25maWd1
cmF0aW9ucy9XVEYueGNjb25maWcKQEAgLTI3LDMgKzI3LDYgQEAgUFJPRFVDVF9OQU1FID0gV1RG
OwogCiBHQ0NfU1lNQk9MU19QUklWQVRFX0VYVEVSTiA9IFlFUzsKIFNUUklQX0lOU1RBTExFRF9Q
Uk9EVUNUID0gTk87CisKK0VYQ0xVREVEX1NPVVJDRV9GSUxFX05BTUVTXyA9IE1hY2hFeGNlcHRp
b25zLmRlZnMKK0VYQ0xVREVEX1NPVVJDRV9GSUxFX05BTUVTW3Nkaz1pcGhvbmVvcypdID0gJChF
WENMVURFRF9TT1VSQ0VfRklMRV9OQU1FU18kKFVTRV9JTlRFUk5BTF9TREspKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dURi9XVEYueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XVEYv
V1RGLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggNTdiM2UwZjc5ZjYyMzk1OTI1ZWE4
ZThhOThkNzEzNGQxMTZlMjhkOS4uZDYyYTc5M2IzZTFmNjc5MTJhNDM3MWQ1YzBjYWE5YmYyMjE4
NDY2ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi9XVEYueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
agorKysgYi9Tb3VyY2UvV1RGL1dURi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC02NCw2
ICs2NCw3IEBACiAJCTUyMTgzMDEyQzk5RTQ3NkE4NEVFQkVBOCAvKiBTeW1ib2xJbXBsLmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY3MkJCREIxMDdG
QTQyNDg4NjE3OEI5RSAvKiBTeW1ib2xJbXBsLmNwcCAqLzsgfTsKIAkJNTMxMUJENTMxRUE3MUNB
RDAwNTI1MjgxIC8qIFNpZ25hbHMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNTMxMUJENTExRUE3MUNBRDAwNTI1MjgxIC8qIFNpZ25hbHMuY3BwICov
OyB9OwogCQk1MzExQkQ1QzFFQTgyMkY5MDA1MjUyODEgLyogVGhyZWFkTWVzc2FnZS5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MzExQkQ1QjFFQTgy
MkY5MDA1MjUyODEgLyogVGhyZWFkTWVzc2FnZS5jcHAgKi87IH07CisJCTUzNTM0RjJBMUVDMEUx
MEUwMDE0MUIyRiAvKiBNYWNoRXhjZXB0aW9ucy5kZWZzIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTM1MzRGMjkxRUMwRTEwRTAwMTQxQjJGIC8qIE1hY2hF
eGNlcHRpb25zLmRlZnMgKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoQ2xpZW50LCBTZXJ2
ZXIsICk7IH07IH07CiAJCTcwQTk5M0ZFMUFENzE1MTMwMEZBNjE1QiAvKiBTeW1ib2xSZWdpc3Ry
eS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3MEE5
OTNGQzFBRDcxNTEzMDBGQTYxNUIgLyogU3ltYm9sUmVnaXN0cnkuY3BwICovOyB9OwogCQk3MEVD
QTYwRDFCMDI0MjY4MDA0NDk3MzkgLyogQXRvbWljU3RyaW5nSW1wbC5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3MEVDQTYwQTFCMDI0MjY4MDA0NDk3
MzkgLyogQXRvbWljU3RyaW5nSW1wbC5jcHAgKi87IH07CiAJCTdBRkVDNkIxMUVCMjJCNTkwMERB
REUzNiAvKiBVVUlELmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDdBRkVDNkIwMUVCMjJCNTkwMERBREUzNiAvKiBVVUlELmNwcCAqLzsgfTsKQEAgLTI5
OSw2ICszMDAsNyBAQAogCQk1MzExQkQ1NzFFQTdFMUExMDA1MjUyODEgLyogU2lnbmFscy5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTaWduYWxzLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTUzMTFCRDU5MUVBODFBOTYwMDUyNTI4MSAvKiBUaHJlYWRNZXNzYWdl
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFRocmVhZE1lc3NhZ2UuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTMxMUJENUIxRUE4MjJGOTAwNTI1MjgxIC8qIFRo
cmVhZE1lc3NhZ2UuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gVGhy
ZWFkTWVzc2FnZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTUzNTM0RjI5MUVD
MEUxMEUwMDE0MUIyRiAvKiBNYWNoRXhjZXB0aW9ucy5kZWZzICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5taWc7IHBhdGggPSBNYWNoRXhjZXB0aW9ucy5kZWZzOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk1MzlFQjA2MjFENTUyODQyMDBDODJFRjcgLyogTEVCRGVjb2Rlci5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBMRUJEZWNvZGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTUzRUMyNTNDMUU5NUFEMzAwMDA4MzFCOSAvKiBQcmlvcml0eVF1ZXVlLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFByaW9yaXR5UXVldWUuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTUzMDcxQzkxQzQwNDI3MjAwMzg0ODk4IC8qIFRpbnlM
UlVDYWNoZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBUaW55TFJVQ2FjaGUu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTEwMjIsNiArMTAyNCw3IEBACiAJCQlj
aGlsZHJlbiA9ICgKIAkJCQkxQTQyOEI4QjFDOEY4OUREMDA1MUU5RUIgLyogQXBwS2l0Q29tcGF0
aWJpbGl0eURlY2xhcmF0aW9ucy5oICovLAogCQkJCTFBQ0FERDgyMTg4NDQ4MDEwMEQ4QjcxRCAv
KiBEZXByZWNhdGVkU3ltYm9sc1VzZWRCeVNhZmFyaS5tbSAqLywKKwkJCQk1MzUzNEYyOTFFQzBF
MTBFMDAxNDFCMkYgLyogTWFjaEV4Y2VwdGlvbnMuZGVmcyAqLywKIAkJCQlBOEE0NzJDNTE1MUE4
MjVBMDA0MTIzRkYgLyogTWFpblRocmVhZE1hYy5tbSAqLywKIAkJCSk7CiAJCQlwYXRoID0gbWFj
OwpAQCAtMTM0Niw2ICsxMzQ5LDcgQEAKIAkJCQkxNDNGNjExRjE1NjVGMEY5MDBEQjUxNEEgLyog
UkFNU2l6ZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBM0I3MjVFQzk4NzQ0NkFEOTNGMUE0NDAg
LyogUmFuZG9tRGV2aWNlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE4QTQ3NDE0MTUxQTgyNUIw
MDQxMjNGRiAvKiBSYW5kb21OdW1iZXIuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJNTM1MzRGMkEx
RUMwRTEwRTAwMTQxQjJGIC8qIE1hY2hFeGNlcHRpb25zLmRlZnMgaW4gU291cmNlcyAqLywKIAkJ
CQlBOEE0NzQxQTE1MUE4MjVCMDA0MTIzRkYgLyogUmVmQ291bnRlZExlYWtDb3VudGVyLmNwcCBp
biBTb3VyY2VzICovLAogCQkJCTJDREVEMEYzMTgxMTVDODUwMDREQkE3MCAvKiBSdW5Mb29wLmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCTJDREVEMEVGMTgxMTVDMzgwMDREQkE3MCAvKiBSdW5Mb29w
Q0YuY3BwIGluIFNvdXJjZXMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9y
bS5oIGIvU291cmNlL1dURi93dGYvUGxhdGZvcm0uaAppbmRleCA0NWJkOGE4MTFmOTg4OWM4NWQ4
ZjU0ZGRmNjUzOTgxZTJmZThmNjEwLi4wYzk1NmY0ZmY2MzgwNjc1ZTRjNDI3ZGYyMGVjOTZlNjYw
YTBiZDc5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybS5oCisrKyBiL1NvdXJj
ZS9XVEYvd3RmL1BsYXRmb3JtLmgKQEAgLTY2OSw2ICs2NjksMTAgQEAKICNkZWZpbmUgSEFWRV9S
RUFETElORSAxCiAjZGVmaW5lIEhBVkVfU1lTX1RJTUVCX0ggMQogCisjaWYgX19oYXNfaW5jbHVk
ZSg8bWFjaC9tYWNoX2V4Yy5kZWZzPikgJiYgIShQTEFURk9STShXQVRDSE9TKSB8fCBQTEFURk9S
TShBUFBMRVRWKSkKKyNkZWZpbmUgSEFWRV9NQUNIX0VYQ0VQVElPTlMgMQorI2VuZGlmCisKICNp
ZiAhUExBVEZPUk0oR1RLKQogI2RlZmluZSBVU0VfQUNDRUxFUkFURSAxCiAjZW5kaWYKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtUmVnaXN0ZXJzLmggYi9Tb3VyY2UvV1RGL3d0
Zi9QbGF0Zm9ybVJlZ2lzdGVycy5oCmluZGV4IGQ1YjVhYmMyMjFiYmFkODI5NzYxOTNlY2U1MWMx
Yzc2MTc1ZGIwNmQuLjg0YmQ4OTM3NDk5ZGE5OWVhYTg2YjczNjk1ZjdjNWI4MWFjMjYwY2UgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtUmVnaXN0ZXJzLmgKKysrIGIvU291cmNl
L1dURi93dGYvUGxhdGZvcm1SZWdpc3RlcnMuaApAQCAtMjYsOSArMjYsMTEgQEAKICNwcmFnbWEg
b25jZQogCiAjaW5jbHVkZSA8d3RmL1BsYXRmb3JtLmg+CisjaW5jbHVkZSA8d3RmL1N0ZExpYkV4
dHJhcy5oPgogCiAjaWYgT1MoREFSV0lOKQogI2luY2x1ZGUgPG1hY2gvdGhyZWFkX2FjdC5oPgor
I2luY2x1ZGUgPHNpZ25hbC5oPgogI2VsaWYgT1MoV0lORE9XUykKICNpbmNsdWRlIDx3aW5kb3dz
Lmg+CiAjZWxzZQpAQCAtNTUsNiArNTcsMTEgQEAgdHlwZWRlZiBhcm1fdGhyZWFkX3N0YXRlNjRf
dCBQbGF0Zm9ybVJlZ2lzdGVyczsKICNlcnJvciBVbmtub3duIEFyY2hpdGVjdHVyZQogI2VuZGlm
CiAKK2lubGluZSBQbGF0Zm9ybVJlZ2lzdGVycyYgcmVnaXN0ZXJzRnJvbVVDb250ZXh0KHVjb250
ZXh0X3QqIHVjb250ZXh0KQoreworICAgIHJldHVybiB1Y29udGV4dC0+dWNfbWNvbnRleHQtPl9f
c3M7Cit9CisKICNlbGlmIE9TKFdJTkRPV1MpCiAKIHVzaW5nIFBsYXRmb3JtUmVnaXN0ZXJzID0g
Q09OVEVYVDsKQEAgLTY1LDYgKzcyLDExIEBAIHN0cnVjdCBQbGF0Zm9ybVJlZ2lzdGVycyB7CiAg
ICAgbWNvbnRleHRfdCBtYWNoaW5lQ29udGV4dDsKIH07CiAKK2lubGluZSBQbGF0Zm9ybVJlZ2lz
dGVycyYgcmVnaXN0ZXJzRnJvbVVDb250ZXh0KHVjb250ZXh0X3QqIHVjb250ZXh0KQoreworICAg
IHJldHVybiAqYml0d2lzZV9jYXN0PFBsYXRmb3JtUmVnaXN0ZXJzKj4oJnVjb250ZXh0LT51Y19t
Y29udGV4dCk7Cit9CisKICNlbHNlCiAKIHN0cnVjdCBQbGF0Zm9ybVJlZ2lzdGVycyB7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9TdGFja0JvdW5kcy5oIGIvU291cmNlL1dURi93dGYvU3Rh
Y2tCb3VuZHMuaAppbmRleCA1NTQ2MDRmMmFiNDg0YzdjZjcxZWUzODYzMGNlYjRjNzljMzNlOTcy
Li5jZDYyYzE0OGE2YzdlZmM5NTE3YThiMDliOGEzMmM3ZmUxOTBjZGVmIDEwMDY0NAotLS0gYS9T
b3VyY2UvV1RGL3d0Zi9TdGFja0JvdW5kcy5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL1N0YWNrQm91
bmRzLmgKQEAgLTU0LDcgKzU0LDYgQEAgcHVibGljOgogICAgICAgICA6IG1fb3JpZ2luKG9yaWdp
bikKICAgICAgICAgLCBtX2JvdW5kKGVuZCkKICAgICB7Ci0gICAgICAgIGNoZWNrQ29uc2lzdGVu
Y3koKTsKICAgICB9CiAKICAgICB2b2lkKiBvcmlnaW4oKSBjb25zdApkaWZmIC0tZ2l0IGEvU291
cmNlL1dURi93dGYvVGhyZWFkSG9sZGVyLmNwcCBiL1NvdXJjZS9XVEYvd3RmL1RocmVhZEhvbGRl
ci5jcHAKaW5kZXggZTJhMzFiZTk5NzhhOWRlNDJlYmZhMzNiMDcwNmE1MjQzM2JkNzJjYi4uOTc3
ZDFkZmMxNzM5ZTU3Zjc3OTlkODVhZmUzNmM2MDZhNzU0NWUzNyAxMDA2NDQKLS0tIGEvU291cmNl
L1dURi93dGYvVGhyZWFkSG9sZGVyLmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9UaHJlYWRIb2xk
ZXIuY3BwCkBAIC0zNCwxMiArMzQsMTcgQEAKIAogI2luY2x1ZGUgIlRocmVhZGluZy5oIgogCisj
aW5jbHVkZSA8d3RmL3RocmVhZHMvU2lnbmFscy5oPgorCiBuYW1lc3BhY2UgV1RGIHsKIAogVGhy
ZWFkU3BlY2lmaWNLZXkgVGhyZWFkSG9sZGVyOjptX2tleSA9IEludmFsaWRUaHJlYWRTcGVjaWZp
Y0tleTsKIAogVGhyZWFkSG9sZGVyOjp+VGhyZWFkSG9sZGVyKCkKIHsKKyNpZiBIQVZFKE1BQ0hf
RVhDRVBUSU9OUykKKyAgICB1bnJlZ2lzdGVyVGhyZWFkRm9yTWFjaEV4Y2VwdGlvbkhhbmRsaW5n
KCZtX3RocmVhZC5nZXQoKSk7CisjZW5kaWYKICAgICBtX3RocmVhZC0+ZGlkRXhpdCgpOwogfQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9UaHJlYWRNZXNzYWdlLmNwcCBiL1NvdXJjZS9X
VEYvd3RmL1RocmVhZE1lc3NhZ2UuY3BwCmluZGV4IGYxNGJjNDVkMzYxNGM3YzY2MzVlYjE3YWIw
ZTI3MjgxNmExMzczZGQuLjY0ZTc3NWU3NWQwMmIxNDM4MjJkYTcxN2RkZTQ4MzZiMjMwODAyMzEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL1RocmVhZE1lc3NhZ2UuY3BwCisrKyBiL1NvdXJj
ZS9XVEYvd3RmL1RocmVhZE1lc3NhZ2UuY3BwCkBAIC0zNiw2ICszNiw5IEBACiAjaW5jbHVkZSA8
d3RmL0xvY2tlci5oPgogI2luY2x1ZGUgPHd0Zi90aHJlYWRzL1NpZ25hbHMuaD4KIAorI2lmIEhB
VkUoTUFDSF9FWENFUFRJT05TKQorI2luY2x1ZGUgPG1hY2gvdGhyZWFkX2FjdC5oPgorI2VuZGlm
CiAKIG5hbWVzcGFjZSBXVEYgewogCkBAIC04MywxMiArODYsMTIgQEAgdm9pZCBpbml0aWFsaXpl
VGhyZWFkTWVzc2FnZXMoKQogfQogCiBTVVBQUkVTU19BU0FOCi1NZXNzYWdlU3RhdHVzIHNlbmRN
ZXNzYWdlU2NvcGVkKFRocmVhZCYgdGhyZWFkLCBjb25zdCBUaHJlYWRNZXNzYWdlJiBtZXNzYWdl
KQorc3RhdGljIE1lc3NhZ2VTdGF0dXMgc2VuZE1lc3NhZ2VVc2luZ1NpZ25hbChUaHJlYWQmIHRo
cmVhZCwgY29uc3QgVGhyZWFkTWVzc2FnZSYgbWVzc2FnZSkKIHsKICAgICBjb25zdGV4cHIgU2ln
bmFsIHNpZ25hbCA9IFNpZ25hbDo6VXNyOwogICAgIHN0YXRpYyBzdGQ6Om9uY2VfZmxhZyBvbmNl
OwogICAgIHN0ZDo6Y2FsbF9vbmNlKG9uY2UsIFtdIHsKLSAgICAgICAgaW5zdGFsbFNpZ25hbEhh
bmRsZXIoc2lnbmFsLCBbXSAoaW50LCBzaWdpbmZvX3QqIGluZm8sIHZvaWQqIHVhcCkgeworICAg
ICAgICBpbnN0YWxsU2lnbmFsSGFuZGxlcihzaWduYWwsIFtdIChTaWduYWwsIFNpZ0luZm8mLCBQ
bGF0Zm9ybVJlZ2lzdGVycyYgcmVnaXN0ZXJzKSB7CiAgICAgICAgICAgICBUaHJlYWQqIHRocmVh
ZCA9IFRocmVhZDo6Y3VycmVudE1heUJlTnVsbCgpOwogCiAgICAgICAgICAgICBpZiAoIXRocmVh
ZCkgewpAQCAtOTgsNyArMTAxLDcgQEAgTWVzc2FnZVN0YXR1cyBzZW5kTWVzc2FnZVNjb3BlZChU
aHJlYWQmIHRocmVhZCwgY29uc3QgVGhyZWFkTWVzc2FnZSYgbWVzc2FnZSkKIAogICAgICAgICAg
ICAgLy8gTm9kZSBzaG91bGQgYmUgZGVsZXRlZCBpbiB0aGUgc2VuZGVyIHRocmVhZC4gRGVsZXRp
bmcgTm9kZXMgaW4gc2lnbmFsIGhhbmRsZXIgY2F1c2VzIGRlYWQgbG9jay4KICAgICAgICAgICAg
IHRocmVhZC0+dGhyZWFkTWVzc2FnZXMoKS5jb25zdW1lQWxsV2l0aE5vZGUoWyZdIChUaHJlYWRN
ZXNzYWdlRGF0YSogZGF0YSwgTm9kZSogbm9kZSkgewotICAgICAgICAgICAgICAgIGRhdGEtPm1l
c3NhZ2UoaW5mbywgc3RhdGljX2Nhc3Q8dWNvbnRleHRfdCo+KHVhcCkpOworICAgICAgICAgICAg
ICAgIGRhdGEtPm1lc3NhZ2UocmVnaXN0ZXJzKTsKICAgICAgICAgICAgICAgICAvLyBCeSBzZXR0
aW5nIHJhbiB2YXJpYWJsZSwgKDEpIHRoZSBzZW5kZXIgYWNrbm93bGVkZ2VzIHRoZSBjb21wbGV0
aW9uIGFuZAogICAgICAgICAgICAgICAgIC8vICgyKSBnZXRzIHRoZSBOb2RlIHRvIGJlIGRlbGV0
ZWQuCiAgICAgICAgICAgICAgICAgZGF0YS0+cmFuLnN0b3JlKG5vZGUpOwpAQCAtMTU2LDYgKzE1
OSw0MyBAQCBNZXNzYWdlU3RhdHVzIHNlbmRNZXNzYWdlU2NvcGVkKFRocmVhZCYgdGhyZWFkLCBj
b25zdCBUaHJlYWRNZXNzYWdlJiBtZXNzYWdlKQogICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFD
SEVEKCk7CiB9CiAKKyNpZiBIQVZFKE1BQ0hfRVhDRVBUSU9OUykKK3N0YXRpYyBNZXNzYWdlU3Rh
dHVzIHNlbmRNZXNzYWdlVXNpbmdNYWNoKFRocmVhZCYgdGhyZWFkLCBjb25zdCBUaHJlYWRNZXNz
YWdlJiBtZXNzYWdlKQoreworICAgIHN0YXRpYyBTdGF0aWNMb2NrIG1lc3NhZ2VMb2NrOworICAg
IGF1dG8gbG9ja2hvbGRlciA9IGhvbGRMb2NrKG1lc3NhZ2VMb2NrKTsKKworICAgIGF1dG8gcmVz
dWx0ID0gdGhyZWFkLnN1c3BlbmQoKTsKKyAgICBpZiAoIXJlc3VsdCkKKyAgICAgICAgcmV0dXJu
IE1lc3NhZ2VTdGF0dXM6OlRocmVhZEV4aXRlZDsKKworICAgIFBsYXRmb3JtUmVnaXN0ZXJzIHJl
Z2lzdGVyczsKKyAgICB0aHJlYWQuZ2V0UmVnaXN0ZXJzKHJlZ2lzdGVycyk7CisKKyAgICBtZXNz
YWdlKHJlZ2lzdGVycyk7CisKKyAgICB0aHJlYWQucmVzdW1lKCk7CisgICAgcmV0dXJuIE1lc3Nh
Z2VTdGF0dXM6Ok1lc3NhZ2VSYW47Cit9CisKK3N0YXRpYyBib29sIHVzZU1hY2ggPSBmYWxzZTsK
K3ZvaWQgZGVsaXZlck1lc3NhZ2VzVXNpbmdNYWNoKCkKK3sKKyAgICB1c2VNYWNoID0gdHJ1ZTsK
K30KKworI2VuZGlmIC8vIEhBVkUoTUFDSF9FWENFUFRJT05TKQorCitNZXNzYWdlU3RhdHVzIHNl
bmRNZXNzYWdlU2NvcGVkKFRocmVhZCYgdGhyZWFkLCBjb25zdCBUaHJlYWRNZXNzYWdlJiBtZXNz
YWdlKQoreworI2lmIEhBVkUoTUFDSF9FWENFUFRJT05TKQorICAgIGlmICh1c2VNYWNoKQorICAg
ICAgICByZXR1cm4gc2VuZE1lc3NhZ2VVc2luZ01hY2godGhyZWFkLCBtZXNzYWdlKTsKKyNlbmRp
ZgorICAgIHJldHVybiBzZW5kTWVzc2FnZVVzaW5nU2lnbmFsKHRocmVhZCwgbWVzc2FnZSk7Cit9
CisKKwogfSAvLyBuYW1lc3BhY2UgV1RGCiAKICNlbmRpZiAvLyBVU0UoUFRIUkVBRFMpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9UaHJlYWRNZXNzYWdlLmggYi9Tb3VyY2UvV1RGL3d0Zi9U
aHJlYWRNZXNzYWdlLmgKaW5kZXggMjY4YWRkNDM4NzZlNDE2NGZmMTEzNjVmY2RiNWFiN2E2MjJi
ZTk0ZC4uMGY3NDU1MTI5NDYzNzQ2NzdhY2YxYjcwZGM2NjIzNThhMzg0ZmQ2MCAxMDA2NDQKLS0t
IGEvU291cmNlL1dURi93dGYvVGhyZWFkTWVzc2FnZS5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL1Ro
cmVhZE1lc3NhZ2UuaApAQCAtMzYsNyArMzYsNyBAQCBuYW1lc3BhY2UgV1RGIHsKIHZvaWQgaW5p
dGlhbGl6ZVRocmVhZE1lc3NhZ2VzKCk7CiAKIGNsYXNzIFRocmVhZE1lc3NhZ2VEYXRhOwotdXNp
bmcgVGhyZWFkTWVzc2FnZSA9IFNjb3BlZExhbWJkYTx2b2lkKHNpZ2luZm9fdCosIHVjb250ZXh0
X3QqKT47Cit1c2luZyBUaHJlYWRNZXNzYWdlID0gU2NvcGVkTGFtYmRhPHZvaWQoUGxhdGZvcm1S
ZWdpc3RlcnMmKT47CiAKIGVudW0gY2xhc3MgTWVzc2FnZVN0YXR1cyB7CiAgICAgTWVzc2FnZVJh
biwKQEAgLTUxLDEwICs1MSwxNCBAQCBXVEZfRVhQT1JUX1BSSVZBVEUgTWVzc2FnZVN0YXR1cyBz
ZW5kTWVzc2FnZVNjb3BlZChUaHJlYWQmLCBjb25zdCBUaHJlYWRNZXNzYWdlJgogdGVtcGxhdGU8
dHlwZW5hbWUgRnVuY3Rvcj4KIE1lc3NhZ2VTdGF0dXMgc2VuZE1lc3NhZ2UoVGhyZWFkJiB0YXJn
ZXRUaHJlYWQsIGNvbnN0IEZ1bmN0b3ImIGZ1bmMpCiB7Ci0gICAgYXV0byBsYW1iZGEgPSBzY29w
ZWRMYW1iZGFSZWY8dm9pZChzaWdpbmZvX3QqLCB1Y29udGV4dF90Kik+KGZ1bmMpOworICAgIGF1
dG8gbGFtYmRhID0gc2NvcGVkTGFtYmRhUmVmPHZvaWQoUGxhdGZvcm1SZWdpc3RlcnMmKT4oZnVu
Yyk7CiAgICAgcmV0dXJuIHNlbmRNZXNzYWdlU2NvcGVkKHRhcmdldFRocmVhZCwgbGFtYmRhKTsK
IH0KIAorI2lmIEhBVkUoTUFDSF9FWENFUFRJT05TKQordm9pZCBkZWxpdmVyTWVzc2FnZXNVc2lu
Z01hY2goKTsKKyNlbmRpZgorCiB9IC8vIG5hbWVzcGFjZSBXVEYKIAogdXNpbmcgV1RGOjpzZW5k
TWVzc2FnZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL1RocmVhZGluZy5oIGIvU291cmNl
L1dURi93dGYvVGhyZWFkaW5nLmgKaW5kZXggZDJlNTM2ZGY3YTg2OTZkOGU2Yjk1YmE0M2UxNzNk
M2I1NTBiZjE2YS4uMzUxNGU4YzA5ZjBmYzk0ZDUzNGJlMmYzYjZlN2M0OTUwZTBiY2YwNSAxMDA2
NDQKLS0tIGEvU291cmNlL1dURi93dGYvVGhyZWFkaW5nLmgKKysrIGIvU291cmNlL1dURi93dGYv
VGhyZWFkaW5nLmgKQEAgLTEzOCw2ICsxMzgsMTAgQEAgcHVibGljOgogCiAjaWYgVVNFKFBUSFJF
QURTKQogICAgIExvY2tsZXNzQmFnPFRocmVhZE1lc3NhZ2VEYXRhKj4mIHRocmVhZE1lc3NhZ2Vz
KCkgeyByZXR1cm4gbV90aHJlYWRNZXNzYWdlczsgfQorCisjaWYgT1MoREFSV0lOKQorICAgIG1h
Y2hfcG9ydF90IG1hY2hUaHJlYWQoKSB7IHJldHVybiBtX3BsYXRmb3JtVGhyZWFkOyB9CisjZW5k
aWYKICNlbmRpZgogCiBwcm90ZWN0ZWQ6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9tYWMv
TWFjaEV4Y2VwdGlvbnMuZGVmcyBiL1NvdXJjZS9XVEYvd3RmL21hYy9NYWNoRXhjZXB0aW9ucy5k
ZWZzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjQyMDU3NDJhNGVkNTAwZjgwNjRmZWViNDk1NWE3Yzk3MGQ5OWFmMGIK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9tYWMvTWFjaEV4Y2VwdGlvbnMuZGVm
cwpAQCAtMCwwICsxLDI2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworI2luY2x1ZGUgPG1hY2gvbWFjaF9leGMuZGVmcz4KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XVEYvd3RmL3RocmVhZHMvU2lnbmFscy5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi90aHJlYWRzL1Np
Z25hbHMuY3BwCmluZGV4IDg1NWIyOGIzMTcyMTcyN2NmMWY0MzFhOTE4YTI1MWRjMmU2YTNkZmMu
LjdmMjQ3MDY1ZWVkNWMxZjBiMDM1MzhhMzgxYjU4OTMwNTA1ZTIyMjAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XVEYvd3RmL3RocmVhZHMvU2lnbmFscy5jcHAKKysrIGIvU291cmNlL1dURi93dGYvdGhy
ZWFkcy9TaWduYWxzLmNwcApAQCAtMjgsMjEgKzI4LDI3NSBAQAogCiAjaWYgVVNFKFBUSFJFQURT
KQogCisjaWYgSEFWRShNQUNIX0VYQ0VQVElPTlMpCitleHRlcm4gIkMiIHsKKyNpbmNsdWRlICJN
YWNoRXhjZXB0aW9uc1NlcnZlci5oIgorfTsKKyNlbmRpZgorCiAjaW5jbHVkZSA8Y3N0ZGlvPgog
I2luY2x1ZGUgPG11dGV4PgogI2luY2x1ZGUgPHNpZ25hbC5oPgorCisjaWYgSEFWRShNQUNIX0VY
Q0VQVElPTlMpCisjaW5jbHVkZSA8ZGlzcGF0Y2gvZGlzcGF0Y2guaD4KKyNpbmNsdWRlIDxtYWNo
L21hY2guaD4KKyNpbmNsdWRlIDxtYWNoL3RocmVhZF9hY3QuaD4KKyNlbmRpZgorCiAjaW5jbHVk
ZSA8d3RmL0F0b21pY3MuaD4KICNpbmNsdWRlIDx3dGYvRGF0YUxvZy5oPgorI2luY2x1ZGUgPHd0
Zi9IYXNoU2V0Lmg+CiAjaW5jbHVkZSA8d3RmL0xvY2tsZXNzQmFnLmg+CiAjaW5jbHVkZSA8d3Rm
L05ldmVyRGVzdHJveWVkLmg+CisjaW5jbHVkZSA8d3RmL1RocmVhZE1lc3NhZ2UuaD4KKyNpbmNs
dWRlIDx3dGYvVGhyZWFkaW5nLmg+CisKIAogbmFtZXNwYWNlIFdURiB7CiAKKyAgICAKIHN0YXRp
YyBMYXp5TmV2ZXJEZXN0cm95ZWQ8TG9ja2xlc3NCYWc8U2lnbmFsSGFuZGxlcj4+IGhhbmRsZXJz
W3N0YXRpY19jYXN0PHNpemVfdD4oU2lnbmFsOjpOdW1iZXJPZlNpZ25hbHMpXSA9IHsgfTsKLXN0
YXRpYyBzdHJ1Y3Qgc2lnYWN0aW9uIG9sZEFjdGlvbnNbc3RhdGljX2Nhc3Q8c2l6ZV90PihTaWdu
YWw6Ok51bWJlck9mU2lnbmFscyldOwogc3RhdGljIHN0ZDo6b25jZV9mbGFnIGluaXRpYWxpemVP
bmNlRmxhZ3Nbc3RhdGljX2Nhc3Q8c2l6ZV90PihTaWduYWw6Ok51bWJlck9mU2lnbmFscyldOwor
c3RhdGljIHN0cnVjdCBzaWdhY3Rpb24gb2xkQWN0aW9uc1tzdGF0aWNfY2FzdDxzaXplX3Q+KFNp
Z25hbDo6TnVtYmVyT2ZTaWduYWxzKV07CisKKyNpZiBIQVZFKE1BQ0hfRVhDRVBUSU9OUykKKy8v
IFlvdSBjYW4gcmVhZCBtb3JlIGFib3V0IG1hY2ggZXhjZXB0aW9ucyBoZXJlOgorLy8gaHR0cDov
L3d3dy5jcy5jbXUuZWR1L2Fmcy9jcy9wcm9qZWN0L21hY2gvcHVibGljL2RvYy91bnB1Ymxpc2hl
ZC9leGNlcHRpb24ucHMKKy8vIGFuZCB0aGUgTWFjaCBpbnRlcmZhY2UgR2VuZXJhdG9yIChNaUcp
IGhlcmU6CisvLyBodHRwOi8vd3d3LmNzLmNtdS5lZHUvYWZzL2NzL3Byb2plY3QvbWFjaC9wdWJs
aWMvZG9jL3VucHVibGlzaGVkL21pZy5wcworCitzdGF0aWMgbWFjaF9wb3J0X3QgZXhjZXB0aW9u
UG9ydDsKK3N0YXRpYyBjb25zdGV4cHIgc2l6ZV90IG1heE1lc3NhZ2VTaXplID0gMSAqIEtCOwor
CitzdGF0aWMgdm9pZCBzdGFydE1hY2hFeGNlcHRpb25IYW5kbGVyVGhyZWFkKCkKK3sKKyAgICBz
dGF0aWMgc3RkOjpvbmNlX2ZsYWcgb25jZTsKKyAgICBzdGQ6OmNhbGxfb25jZShvbmNlLCBbXSB7
CisgICAgICAgIGlmIChtYWNoX3BvcnRfYWxsb2NhdGUobWFjaF90YXNrX3NlbGYoKSwgTUFDSF9Q
T1JUX1JJR0hUX1JFQ0VJVkUsICZleGNlcHRpb25Qb3J0KSAhPSBLRVJOX1NVQ0NFU1MpCisgICAg
ICAgICAgICBDUkFTSCgpOworCisgICAgICAgIGlmIChtYWNoX3BvcnRfaW5zZXJ0X3JpZ2h0KG1h
Y2hfdGFza19zZWxmKCksIGV4Y2VwdGlvblBvcnQsIGV4Y2VwdGlvblBvcnQsIE1BQ0hfTVNHX1RZ
UEVfTUFLRV9TRU5EKSAhPSBLRVJOX1NVQ0NFU1MpCisgICAgICAgICAgICBDUkFTSCgpOworCisg
ICAgICAgIC8vIEl0J3Mgbm90IGNsZWFyIHRoYXQgdGhpcyBuZWVkcyB0byBiZSB0aGUgaGlnaCBw
cmlvcml0eSBxdWV1ZSBidXQgaXQgc2hvdWxkIGJlIHJhcmUgYW5kIGl0IG1pZ2h0IGJlCisgICAg
ICAgIC8vIGhhbmRsaW5nIGV4Y2VwdGlvbnMgZnJvbSBoaWdoIHByaW9yaXR5IHRocmVhZHMuIEFu
eXdheSwgb3VyIGhhbmRsZXJzIHNob3VsZCBiZSB2ZXJ5IGZhc3QgYW55d2F5IHNvIGl0J3MKKyAg
ICAgICAgLy8gcHJvYmFibHkgbm90IHRoZSBlbmQgb2YgdGhlIHdvcmxkIGlmIHdlIGhhbmRsZSBh
IGxvdyBwcmlvcml0eSBleGNlcHRpb24gb24gYSBoaWdoIHByaW9yaXR5IHF1ZXVlLgorICAgICAg
ICBkaXNwYXRjaF9xdWV1ZV90IHF1ZXVlID0gZGlzcGF0Y2hfZ2V0X2dsb2JhbF9xdWV1ZShESVNQ
QVRDSF9RVUVVRV9QUklPUklUWV9ISUdILCAwKTsKKyAgICAgICAgZGlzcGF0Y2hfc291cmNlX3Qg
c291cmNlID0gZGlzcGF0Y2hfc291cmNlX2NyZWF0ZShESVNQQVRDSF9TT1VSQ0VfVFlQRV9NQUNI
X1JFQ1YsIGV4Y2VwdGlvblBvcnQsIDAsIHF1ZXVlKTsKKyAgICAgICAgUkVMRUFTRV9BU1NFUlRf
V0lUSF9NRVNTQUdFKHNvdXJjZSwgIldlIG5lZWQgdG8gZW5zdXJlIG91ciBzb3VyY2Ugd2FzIGNy
ZWF0ZWQuIik7CisKKyAgICAgICAgLy8gV2Ugc2hvdWxkIG5ldmVyIGNhbmNlbCBvdXIgaGFuZGxl
ciBzaW5jZSBpdCdzIGEgcGVybWFuZW50IHRoaW5nIHNvIHdlIGRvbid0IGFkZCBhIGNhbmNlbCBo
YW5kbGVyLgorICAgICAgICBkaXNwYXRjaF9zb3VyY2Vfc2V0X2V2ZW50X2hhbmRsZXIoc291cmNl
LCBeeworICAgICAgICAgICAgLy8gdGhlIGxlYWtzIHRvb2wgd2lsbCBnZXQgbWFkIGF0IHVzIGlm
IHdlIGRvbid0IHByZXRlbmQgdG8gd2F0Y2ggdGhlIHNvdXJjZS4KKyAgICAgICAgICAgIFVOVVNF
RF9QQVJBTShzb3VyY2UpOworICAgICAgICAgICAgdW5pb24gTWVzc2FnZSB7CisgICAgICAgICAg
ICAgICAgbWFjaF9tc2dfaGVhZGVyX3QgaGVhZGVyOworICAgICAgICAgICAgICAgIGNoYXIgZGF0
YVttYXhNZXNzYWdlU2l6ZV07CisgICAgICAgICAgICB9OworICAgICAgICAgICAgTWVzc2FnZSBt
ZXNzYWdlSGVhZGVySW47CisgICAgICAgICAgICBNZXNzYWdlIG1lc3NhZ2VIZWFkZXJPdXQ7CisK
KyAgICAgICAgICAgIGtlcm5fcmV0dXJuX3QgbWVzc2FnZVJlc3VsdCA9IG1hY2hfbXNnKCZtZXNz
YWdlSGVhZGVySW4uaGVhZGVyLCBNQUNIX1JDVl9NU0csIDAsIG1heE1lc3NhZ2VTaXplLCBleGNl
cHRpb25Qb3J0LCBNQUNIX01TR19USU1FT1VUX05PTkUsIE1BQ0hfUE9SVF9OVUxMKTsKKyAgICAg
ICAgICAgIGlmIChtZXNzYWdlUmVzdWx0ID09IEtFUk5fU1VDQ0VTUykgeworICAgICAgICAgICAg
ICAgIGlmICghbWFjaF9leGNfc2VydmVyKCZtZXNzYWdlSGVhZGVySW4uaGVhZGVyLCAmbWVzc2Fn
ZUhlYWRlck91dC5oZWFkZXIpKQorICAgICAgICAgICAgICAgICAgICBDUkFTSCgpOworCisgICAg
ICAgICAgICAgICAgbWVzc2FnZVJlc3VsdCA9IG1hY2hfbXNnKCZtZXNzYWdlSGVhZGVyT3V0Lmhl
YWRlciwgTUFDSF9TRU5EX01TRywgbWVzc2FnZUhlYWRlck91dC5oZWFkZXIubXNnaF9zaXplLCAw
LCBtZXNzYWdlSGVhZGVyT3V0LmhlYWRlci5tc2doX2xvY2FsX3BvcnQsIDAsIE1BQ0hfUE9SVF9O
VUxMKTsKKyAgICAgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVChtZXNzYWdlUmVzdWx0ID09IEtF
Uk5fU1VDQ0VTUyk7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGRhdGFM
b2dMbigiRmFpbGVkIHRvIHJlY2VpdmUgbWFjaCBtZXNzYWdlIGR1ZSB0byAiLCBtYWNoX2Vycm9y
X3N0cmluZyhtZXNzYWdlUmVzdWx0KSk7CisgICAgICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlRf
Tk9UX1JFQUNIRUQoKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSk7CisKKyAgICAgICAgZGlz
cGF0Y2hfcmVzdW1lKHNvdXJjZSk7CisgICAgfSk7Cit9CisKK3N0YXRpYyBTaWduYWwgZnJvbU1h
Y2hFeGNlcHRpb24oZXhjZXB0aW9uX3R5cGVfdCB0eXBlKQoreworICAgIHN3aXRjaCAodHlwZSkg
eworICAgIGNhc2UgRVhDX0JBRF9BQ0NFU1M6IHJldHVybiBTaWduYWw6OlNlZ1Y7CisgICAgY2Fz
ZSBFWENfQkFEX0lOU1RSVUNUSU9OOiByZXR1cm4gU2lnbmFsOjpJbGw7CisgICAgY2FzZSBFWENf
QlJFQUtQT0lOVDogcmV0dXJuIFNpZ25hbDo6VHJhcDsKKyAgICBkZWZhdWx0OiBicmVhazsKKyAg
ICB9CisgICAgcmV0dXJuIFNpZ25hbDo6VW5rbm93bjsKK30KKworc3RhdGljIGV4Y2VwdGlvbl9t
YXNrX3QgdG9NYWNoTWFzayhTaWduYWwgc2lnbmFsKQoreworICAgIHN3aXRjaCAoc2lnbmFsKSB7
CisgICAgY2FzZSBTaWduYWw6OlNlZ1Y6IHJldHVybiBFWENfTUFTS19CQURfQUNDRVNTOworICAg
IGNhc2UgU2lnbmFsOjpJbGw6IHJldHVybiBFWENfTUFTS19CQURfSU5TVFJVQ1RJT047CisgICAg
Y2FzZSBTaWduYWw6OlRyYXA6IHJldHVybiBFWENfTUFTS19CUkVBS1BPSU5UOworICAgIGRlZmF1
bHQ6IGJyZWFrOworICAgIH0KKyAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworfQor
CitleHRlcm4gIkMiIHsKIAotc3RhdGljIHZvaWQganNjU2lnbmFsSGFuZGxlcihpbnQgc2lnLCBz
aWdpbmZvX3QqIGluZm8sIHZvaWQqIG1jb250ZXh0KQorLy8gV2UgbmVlZCB0byBpbXBsZW1lbnQg
c3R1YnMgZm9yIGNhdGNoX21hY2hfZXhjZXB0aW9uX3JhaXNlIGFuZCBjYXRjaF9tYWNoX2V4Y2Vw
dGlvbl9yYWlzZV9zdGF0ZV9pZGVudGl0eS4KKy8vIFRoZSBNaUcgZ2VuZXJhdGVkIGZpbGUgd2ls
bCBmYWlsIHRvIGxpbmsgb3RoZXJ3aXNlLCBldmVuIHRob3VnaCB3ZSBkb24ndCB1c2UgdGhlIGZ1
bmN0aW9ucy4gT25seSB0aGUKKy8vIGNhdGNoX21hY2hfZXhjZXB0aW9uX3JhaXNlX3N0YXRlIGZ1
bmN0aW9uIHNob3VsZCBiZSBjYWxsZWQgYmVjYXVzZSB3ZSBwYXNzIEVYQ0VQVElPTl9TVEFURSB0
bworLy8gdGhyZWFkX3NldF9leGNlcHRpb25fcG9ydHMuCitrZXJuX3JldHVybl90IGNhdGNoX21h
Y2hfZXhjZXB0aW9uX3JhaXNlKG1hY2hfcG9ydF90LCBtYWNoX3BvcnRfdCwgbWFjaF9wb3J0X3Qs
IGV4Y2VwdGlvbl90eXBlX3QsIG1hY2hfZXhjZXB0aW9uX2RhdGFfdCwgbWFjaF9tc2dfdHlwZV9u
dW1iZXJfdCkKK3sKKyAgICBkYXRhTG9nTG4oIldlIHNob3VsZCBub3QgaGF2ZSBjYWxsZWQgY2F0
Y2hfZXhjZXB0aW9uX3JhaXNlKCksIHBsZWFzZSBmaWxlIGEgYnVnIGF0IGJ1Z3Mud2Via2l0Lm9y
ZyIpOworICAgIHJldHVybiBLRVJOX0ZBSUxVUkU7Cit9CisKK2tlcm5fcmV0dXJuX3QgY2F0Y2hf
bWFjaF9leGNlcHRpb25fcmFpc2Vfc3RhdGVfaWRlbnRpdHkobWFjaF9wb3J0X3QsIG1hY2hfcG9y
dF90LCBtYWNoX3BvcnRfdCwgZXhjZXB0aW9uX3R5cGVfdCwgbWFjaF9leGNlcHRpb25fZGF0YV90
LCBtYWNoX21zZ190eXBlX251bWJlcl90LCBpbnQqLCB0aHJlYWRfc3RhdGVfdCwgbWFjaF9tc2df
dHlwZV9udW1iZXJfdCwgdGhyZWFkX3N0YXRlX3QsICBtYWNoX21zZ190eXBlX251bWJlcl90KikK
K3sKKyAgICBkYXRhTG9nTG4oIldlIHNob3VsZCBub3QgaGF2ZSBjYWxsZWQgY2F0Y2hfbWFjaF9l
eGNlcHRpb25fcmFpc2Vfc3RhdGVfaWRlbnRpdHksIHBsZWFzZSBmaWxlIGEgYnVnIGF0IGJ1Z3Mu
d2Via2l0Lm9yZyIpOworICAgIHJldHVybiBLRVJOX0ZBSUxVUkU7Cit9CisKK2tlcm5fcmV0dXJu
X3QgY2F0Y2hfbWFjaF9leGNlcHRpb25fcmFpc2Vfc3RhdGUoCisgICAgbWFjaF9wb3J0X3QgcG9y
dCwKKyAgICBleGNlcHRpb25fdHlwZV90IGV4Y2VwdGlvblR5cGUsCisgICAgY29uc3QgbWFjaF9l
eGNlcHRpb25fZGF0YV90IGV4Y2VwdGlvbkRhdGEsCisgICAgbWFjaF9tc2dfdHlwZV9udW1iZXJf
dCBkYXRhQ291bnQsCisgICAgaW50KiBzdGF0ZUZsYXZvciwKKyAgICBjb25zdCB0aHJlYWRfc3Rh
dGVfdCBpblN0YXRlLAorICAgIG1hY2hfbXNnX3R5cGVfbnVtYmVyX3QgaW5TdGF0ZUNvdW50LAor
ICAgIHRocmVhZF9zdGF0ZV90IG91dFN0YXRlLAorICAgIG1hY2hfbXNnX3R5cGVfbnVtYmVyX3Qq
IG91dFN0YXRlQ291bnQpCit7CisgICAgUkVMRUFTRV9BU1NFUlQocG9ydCA9PSBleGNlcHRpb25Q
b3J0KTsKKyAgICBTaWduYWwgc2lnbmFsID0gZnJvbU1hY2hFeGNlcHRpb24oZXhjZXB0aW9uVHlw
ZSk7CisgICAgUkVMRUFTRV9BU1NFUlQoc2lnbmFsICE9IFNpZ25hbDo6VW5rbm93bik7CisKKyAg
ICBtZW1jcHkob3V0U3RhdGUsIGluU3RhdGUsIGluU3RhdGVDb3VudCAqIHNpemVvZihpblN0YXRl
WzBdKSk7CisgICAgKm91dFN0YXRlQ291bnQgPSBpblN0YXRlQ291bnQ7CisKKyNpZiBDUFUoWDg2
XzY0KQorICAgIFJFTEVBU0VfQVNTRVJUKCpzdGF0ZUZsYXZvciA9PSB4ODZfVEhSRUFEX1NUQVRF
KTsKKyAgICBQbGF0Zm9ybVJlZ2lzdGVycyYgcmVnaXN0ZXJzID0gcmVpbnRlcnByZXRfY2FzdDx4
ODZfdGhyZWFkX3N0YXRlX3QqPihvdXRTdGF0ZSktPnV0cy50czY0OworI2VsaWYgQ1BVKFg4NikK
KyAgICBSRUxFQVNFX0FTU0VSVCgqc3RhdGVGbGF2b3IgPT0geDg2X1RIUkVBRF9TVEFURSk7Cisg
ICAgUGxhdGZvcm1SZWdpc3RlcnMmIHJlZ2lzdGVycyA9IHJlaW50ZXJwcmV0X2Nhc3Q8eDg2X3Ro
cmVhZF9zdGF0ZV90Kj4ob3V0U3RhdGUpLT51dHMudHMzMjsKKyNlbGlmIENQVShBUk02NCkKKyAg
ICBSRUxFQVNFX0FTU0VSVCgqc3RhdGVGbGF2b3IgPT0gQVJNX1RIUkVBRF9TVEFURSk7CisgICAg
UGxhdGZvcm1SZWdpc3RlcnMmIHJlZ2lzdGVycyA9IHJlaW50ZXJwcmV0X2Nhc3Q8YXJtX3VuaWZp
ZWRfdGhyZWFkX3N0YXRlKj4ob3V0U3RhdGUpLT50c182NDsKKyNlbGlmIENQVShBUk0pCisgICAg
UkVMRUFTRV9BU1NFUlQoKnN0YXRlRmxhdm9yID09IEFSTV9USFJFQURfU1RBVEUpOworICAgIFBs
YXRmb3JtUmVnaXN0ZXJzJiByZWdpc3RlcnMgPSByZWludGVycHJldF9jYXN0PGFybV91bmlmaWVk
X3RocmVhZF9zdGF0ZSo+KG91dFN0YXRlKS0+dHNfMzI7CisjZW5kaWYKKworICAgIFNpZ0luZm8g
aW5mbzsKKyAgICBpZiAoc2lnbmFsID09IFNpZ25hbDo6U2VnVikgeworICAgICAgICBBU1NFUlRf
VU5VU0VEKGRhdGFDb3VudCwgZGF0YUNvdW50ID09IDIpOworICAgICAgICBpbmZvLmZhdWx0aW5n
QWRkcmVzcyA9IHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KGV4Y2VwdGlvbkRhdGFbMV0pOworICAg
IH0KKworICAgIGJvb2wgZGlkSGFuZGxlID0gZmFsc2U7CisgICAgaGFuZGxlcnNbc3RhdGljX2Nh
c3Q8c2l6ZV90PihzaWduYWwpXS0+aXRlcmF0ZShbJl0gKGNvbnN0IFNpZ25hbEhhbmRsZXImIGhh
bmRsZXIpIHsKKyAgICAgICAgU2lnbmFsQWN0aW9uIGhhbmRsZXJSZXN1bHQgPSBoYW5kbGVyKHNp
Z25hbCwgaW5mbywgcmVnaXN0ZXJzKTsKKyAgICAgICAgZGlkSGFuZGxlIHw9IGhhbmRsZXJSZXN1
bHQgPT0gU2lnbmFsQWN0aW9uOjpIYW5kbGVkOworICAgIH0pOworCisgICAgaWYgKGRpZEhhbmRs
ZSkKKyAgICAgICAgcmV0dXJuIEtFUk5fU1VDQ0VTUzsKKyAgICByZXR1cm4gS0VSTl9GQUlMVVJF
OworfQorCit9OworCitzdGF0aWMgYm9vbCB1c2VNYWNoIHsgZmFsc2UgfTsKK3ZvaWQgaGFuZGxl
U2lnbmFsc1dpdGhNYWNoKCkKK3sKKyAgICBkZWxpdmVyTWVzc2FnZXNVc2luZ01hY2goKTsKKyAg
ICB1c2VNYWNoID0gdHJ1ZTsKK30KKworCitzdGF0aWMgU3RhdGljTG9jayB0aHJlYWRMb2NrOwor
ZXhjZXB0aW9uX21hc2tfdCBhY3RpdmVFeGNlcHRpb25zIHsgMCB9OworCitpbmxpbmUgdm9pZCBz
ZXRFeGNlcHRpb25Qb3J0cyhjb25zdCBBYnN0cmFjdExvY2tlciYsIFRocmVhZCogdGhyZWFkKQor
eworICAgIGtlcm5fcmV0dXJuX3QgcmVzdWx0ID0gdGhyZWFkX3NldF9leGNlcHRpb25fcG9ydHMo
dGhyZWFkLT5tYWNoVGhyZWFkKCksIGFjdGl2ZUV4Y2VwdGlvbnMsIGV4Y2VwdGlvblBvcnQsIEVY
Q0VQVElPTl9TVEFURSB8IE1BQ0hfRVhDRVBUSU9OX0NPREVTLCBNQUNISU5FX1RIUkVBRF9TVEFU
RSk7CisgICAgaWYgKHJlc3VsdCAhPSBLRVJOX1NVQ0NFU1MpIHsKKyAgICAgICAgZGF0YUxvZ0xu
KCJ0aHJlYWQgc2V0IHBvcnQgZmFpbGVkIGR1ZSB0byAiLCBtYWNoX2Vycm9yX3N0cmluZyhyZXN1
bHQpKTsKKyAgICAgICAgQ1JBU0goKTsKKyAgICB9Cit9CisKK2lubGluZSBIYXNoU2V0PFRocmVh
ZCo+JiBhY3RpdmVUaHJlYWRzKGNvbnN0IEFic3RyYWN0TG9ja2VyJikKK3sKKyAgICBzdGF0aWMg
TmV2ZXJEZXN0cm95ZWQ8SGFzaFNldDxUaHJlYWQqPj4gYWN0aXZlVGhyZWFkczsKKyAgICByZXR1
cm4gYWN0aXZlVGhyZWFkczsKK30KKwordm9pZCByZWdpc3RlclRocmVhZEZvck1hY2hFeGNlcHRp
b25IYW5kbGluZyhUaHJlYWQqIHRocmVhZCkKK3sKKyAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2Nr
KHRocmVhZExvY2spOworICAgIGF1dG8gcmVzdWx0ID0gYWN0aXZlVGhyZWFkcyhsb2NrZXIpLmFk
ZCh0aHJlYWQpOworCisgICAgaWYgKHJlc3VsdC5pc05ld0VudHJ5KQorICAgICAgICBzZXRFeGNl
cHRpb25Qb3J0cyhsb2NrZXIsIHRocmVhZCk7Cit9CisKK3ZvaWQgdW5yZWdpc3RlclRocmVhZEZv
ck1hY2hFeGNlcHRpb25IYW5kbGluZyhUaHJlYWQqIHRocmVhZCkKK3sKKyAgICBhdXRvIGxvY2tl
ciA9IGhvbGRMb2NrKHRocmVhZExvY2spOworICAgIGFjdGl2ZVRocmVhZHMobG9ja2VyKS5yZW1v
dmUodGhyZWFkKTsKK30KKworI2Vsc2UKK3N0YXRpYyBjb25zdGV4cHIgYm9vbCB1c2VNYWNoID0g
ZmFsc2U7CisjZW5kaWYgLy8gSEFWRShNQUNIX0VYQ0VQVElPTlMpCisKK3N0YXRpYyB2b2lkIGpz
Y1NpZ25hbEhhbmRsZXIoaW50LCBzaWdpbmZvX3QqLCB2b2lkKik7CisKK3ZvaWQgaW5zdGFsbFNp
Z25hbEhhbmRsZXIoU2lnbmFsIHNpZ25hbCwgU2lnbmFsSGFuZGxlciYmIGhhbmRsZXIpCit7Cisg
ICAgQVNTRVJUKHNpZ25hbCA8IFNpZ25hbDo6VW5rbm93bik7CisjaWYgSEFWRShNQUNIX0VYQ0VQ
VElPTlMpCisgICAgLy8gU2luY2UgbWFjaCBvbmx5IGhhcyBFWENfQkFEX0FDQ0VTUywgd2hpY2gg
Y292ZXJzIGJvdGggU2VnViBhbmQgQnVzLCB3ZSBhcmJpdGFyaWx5IGNob29zZSB0byBtYWtlCisg
ICAgLy8gbWFjaCBFWENfQkFEX0FDQ0VTU2VzIG1hcCB0byBTZWdWLgorICAgIC8vIEZJWE1FOiBX
ZSBzaG91bGQganVzdCB1c2UgYSBzaW5nbGUgU2lnbmFsOjpCYWRBY2Nlc3MgdmFsdWUgaW5zdGVh
ZCBvZiBTZWdWL0J1cy4KKyAgICAvLyBTZWU6IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xNzIwNjMKKyAgICBpZiAoc2lnbmFsID09IFNpZ25hbDo6QnVzICYmIHVzZU1h
Y2gpCisgICAgICAgIHJldHVybjsKKyAgICBBU1NFUlQoIXVzZU1hY2ggfHwgc2lnbmFsICE9IFNp
Z25hbDo6VXNyKTsKKworICAgIGlmICh1c2VNYWNoKQorICAgICAgICBzdGFydE1hY2hFeGNlcHRp
b25IYW5kbGVyVGhyZWFkKCk7CisjZW5kaWYKKworICAgIHN0ZDo6Y2FsbF9vbmNlKGluaXRpYWxp
emVPbmNlRmxhZ3Nbc3RhdGljX2Nhc3Q8c2l6ZV90PihzaWduYWwpXSwgWyZdIHsKKyAgICAgICAg
aGFuZGxlcnNbc3RhdGljX2Nhc3Q8c2l6ZV90PihzaWduYWwpXS5jb25zdHJ1Y3QoKTsKKworICAg
ICAgICBpZiAoIXVzZU1hY2gpIHsKKyAgICAgICAgICAgIHN0cnVjdCBzaWdhY3Rpb24gYWN0aW9u
OworICAgICAgICAgICAgYWN0aW9uLnNhX3NpZ2FjdGlvbiA9IGpzY1NpZ25hbEhhbmRsZXI7Cisg
ICAgICAgICAgICBhdXRvIHJlc3VsdCA9IHNpZ2ZpbGxzZXQoJmFjdGlvbi5zYV9tYXNrKTsKKyAg
ICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKCFyZXN1bHQpOworICAgICAgICAgICAgYWN0aW9uLnNh
X2ZsYWdzID0gU0FfU0lHSU5GTzsKKyAgICAgICAgICAgIHJlc3VsdCA9IHNpZ2FjdGlvbih0b1N5
c3RlbVNpZ25hbChzaWduYWwpLCAmYWN0aW9uLCAmb2xkQWN0aW9uc1tzdGF0aWNfY2FzdDxzaXpl
X3Q+KHNpZ25hbCldKTsKKyAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKCFyZXN1bHQpOworICAg
ICAgICB9CisKKyAgICB9KTsKKworICAgIGhhbmRsZXJzW3N0YXRpY19jYXN0PHNpemVfdD4oc2ln
bmFsKV0tPmFkZChXVEZNb3ZlKGhhbmRsZXIpKTsKKworI2lmIEhBVkUoTUFDSF9FWENFUFRJT05T
KQorICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2sodGhyZWFkTG9jayk7CisgICAgaWYgKHVzZU1h
Y2gpIHsKKyAgICAgICAgYWN0aXZlRXhjZXB0aW9ucyB8PSB0b01hY2hNYXNrKHNpZ25hbCk7CisK
KyAgICAgICAgZm9yIChUaHJlYWQqIHRocmVhZCA6IGFjdGl2ZVRocmVhZHMobG9ja2VyKSkKKyAg
ICAgICAgICAgIHNldEV4Y2VwdGlvblBvcnRzKGxvY2tlciwgdGhyZWFkKTsKKyAgICB9CisjZW5k
aWYKK30KKwordm9pZCBqc2NTaWduYWxIYW5kbGVyKGludCBzaWcsIHNpZ2luZm9fdCogaW5mbywg
dm9pZCogdWNvbnRleHQpCiB7CiAgICAgU2lnbmFsIHNpZ25hbCA9IGZyb21TeXN0ZW1TaWduYWwo
c2lnKTsKIApAQCAtNjIsMTAgKzMxNiwxNiBAQCBzdGF0aWMgdm9pZCBqc2NTaWduYWxIYW5kbGVy
KGludCBzaWcsIHNpZ2luZm9fdCogaW5mbywgdm9pZCogbWNvbnRleHQpCiAgICAgICAgIHJldHVy
bjsKICAgICB9CiAKKyAgICBTaWdJbmZvIHNpZ0luZm87CisgICAgaWYgKHNpZ25hbCA9PSBTaWdu
YWw6OlNlZ1YgfHwgc2lnbmFsID09IFNpZ25hbDo6QnVzKQorICAgICAgICBzaWdJbmZvLmZhdWx0
aW5nQWRkcmVzcyA9IGluZm8tPnNpX2FkZHI7CisKKyAgICBQbGF0Zm9ybVJlZ2lzdGVycyYgcmVn
aXN0ZXJzID0gcmVnaXN0ZXJzRnJvbVVDb250ZXh0KHJlaW50ZXJwcmV0X2Nhc3Q8dWNvbnRleHRf
dCo+KHVjb250ZXh0KSk7CisKICAgICBib29sIGRpZEhhbmRsZSA9IGZhbHNlOwogICAgIGJvb2wg
cmVzdG9yZURlZmF1bHRIYW5kbGVyID0gZmFsc2U7CiAgICAgaGFuZGxlcnNbc3RhdGljX2Nhc3Q8
c2l6ZV90PihzaWduYWwpXS0+aXRlcmF0ZShbJl0gKGNvbnN0IFNpZ25hbEhhbmRsZXImIGhhbmRs
ZXIpIHsKLSAgICAgICAgc3dpdGNoIChoYW5kbGVyKHNpZywgaW5mbywgbWNvbnRleHQpKSB7Cisg
ICAgICAgIHN3aXRjaCAoaGFuZGxlcihzaWduYWwsIHNpZ0luZm8sIHJlZ2lzdGVycykpIHsKICAg
ICAgICAgY2FzZSBTaWduYWxBY3Rpb246OkhhbmRsZWQ6CiAgICAgICAgICAgICBkaWRIYW5kbGUg
PSB0cnVlOwogICAgICAgICAgICAgYnJlYWs7CkBAIC04NSwxMyArMzQ1LDEzIEBAIHN0YXRpYyB2
b2lkIGpzY1NpZ25hbEhhbmRsZXIoaW50IHNpZywgc2lnaW5mb190KiBpbmZvLCB2b2lkKiBtY29u
dGV4dCkKICAgICBzdHJ1Y3Qgc2lnYWN0aW9uJiBvbGRBY3Rpb24gPSBvbGRBY3Rpb25zW3N0YXRp
Y19jYXN0PHNpemVfdD4oc2lnbmFsKV07CiAgICAgaWYgKHNpZ25hbCA9PSBTaWduYWw6OlVzcikg
ewogICAgICAgICBpZiAob2xkQWN0aW9uLnNhX3NpZ2FjdGlvbikKLSAgICAgICAgICAgIG9sZEFj
dGlvbi5zYV9zaWdhY3Rpb24oc2lnLCBpbmZvLCBtY29udGV4dCk7CisgICAgICAgICAgICBvbGRB
Y3Rpb24uc2Ffc2lnYWN0aW9uKHNpZywgaW5mbywgdWNvbnRleHQpOwogICAgICAgICByZXR1cm47
CiAgICAgfQogCiAgICAgaWYgKCFkaWRIYW5kbGUpIHsKICAgICAgICAgaWYgKG9sZEFjdGlvbi5z
YV9zaWdhY3Rpb24pIHsKLSAgICAgICAgICAgIG9sZEFjdGlvbi5zYV9zaWdhY3Rpb24oc2lnLCBp
bmZvLCBtY29udGV4dCk7CisgICAgICAgICAgICBvbGRBY3Rpb24uc2Ffc2lnYWN0aW9uKHNpZywg
aW5mbywgdWNvbnRleHQpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKQEAgLTEw
MCwyNCArMzYwLDYgQEAgc3RhdGljIHZvaWQganNjU2lnbmFsSGFuZGxlcihpbnQgc2lnLCBzaWdp
bmZvX3QqIGluZm8sIHZvaWQqIG1jb250ZXh0KQogICAgIH0KIH0KIAotdm9pZCBpbnN0YWxsU2ln
bmFsSGFuZGxlcihTaWduYWwgc2lnbmFsLCBTaWduYWxIYW5kbGVyJiYgaGFuZGxlcikKLXsKLSAg
ICBBU1NFUlQoc2lnbmFsIDwgU2lnbmFsOjpVbmtub3duKTsKLSAgICBzdGQ6OmNhbGxfb25jZShp
bml0aWFsaXplT25jZUZsYWdzW3N0YXRpY19jYXN0PHNpemVfdD4oc2lnbmFsKV0sIFsmXSB7Ci0g
ICAgICAgIGhhbmRsZXJzW3N0YXRpY19jYXN0PHNpemVfdD4oc2lnbmFsKV0uY29uc3RydWN0KCk7
Ci0KLSAgICAgICAgc3RydWN0IHNpZ2FjdGlvbiBhY3Rpb247Ci0gICAgICAgIGFjdGlvbi5zYV9z
aWdhY3Rpb24gPSBqc2NTaWduYWxIYW5kbGVyOwotICAgICAgICBhdXRvIHJlc3VsdCA9IHNpZ2Zp
bGxzZXQoJmFjdGlvbi5zYV9tYXNrKTsKLSAgICAgICAgUkVMRUFTRV9BU1NFUlQoIXJlc3VsdCk7
Ci0gICAgICAgIGFjdGlvbi5zYV9mbGFncyA9IFNBX1NJR0lORk87Ci0gICAgICAgIHJlc3VsdCA9
IHNpZ2FjdGlvbih0b1N5c3RlbVNpZ25hbChzaWduYWwpLCAmYWN0aW9uLCAmb2xkQWN0aW9uc1tz
dGF0aWNfY2FzdDxzaXplX3Q+KHNpZ25hbCldKTsKLSAgICAgICAgUkVMRUFTRV9BU1NFUlQoIXJl
c3VsdCk7Ci0gICAgfSk7Ci0KLSAgICBoYW5kbGVyc1tzdGF0aWNfY2FzdDxzaXplX3Q+KHNpZ25h
bCldLT5hZGQoV1RGTW92ZShoYW5kbGVyKSk7Ci19Ci0KIH0gLy8gbmFtZXNwYWNlIFdURgogCiAj
ZW5kaWYgLy8gVVNFKFBUSFJFQURTKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvdGhyZWFk
cy9TaWduYWxzLmggYi9Tb3VyY2UvV1RGL3d0Zi90aHJlYWRzL1NpZ25hbHMuaAppbmRleCBmMjlk
NGRkYjdlOGRmZGJlZjQ3OWMxZWQ5NzdhYmJlZmU2YTFjZjY2Li5mNGJiNTMwNWE0YWUzOWNhMWFh
MzliMTMxZGIzYWVmMmJkYjEwMzBhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi90aHJlYWRz
L1NpZ25hbHMuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi90aHJlYWRzL1NpZ25hbHMuaApAQCAtMjks
NiArMjksNyBAQAogCiAjaW5jbHVkZSA8c2lnbmFsLmg+CiAjaW5jbHVkZSA8d3RmL0Z1bmN0aW9u
Lmg+CisjaW5jbHVkZSA8d3RmL1BsYXRmb3JtUmVnaXN0ZXJzLmg+CiAKIG5hbWVzcGFjZSBXVEYg
ewogCkBAIC03OSw3ICs4MCwxMSBAQCBlbnVtIGNsYXNzIFNpZ25hbEFjdGlvbiB7CiAgICAgRm9y
Y2VEZWZhdWx0CiB9OwogCi11c2luZyBTaWduYWxIYW5kbGVyID0gRnVuY3Rpb248U2lnbmFsQWN0
aW9uKGludCwgc2lnaW5mb190Kiwgdm9pZCopPjsKK3N0cnVjdCBTaWdJbmZvIHsKKyAgICB2b2lk
KiBmYXVsdGluZ0FkZHJlc3MgeyAwIH07Cit9OworCit1c2luZyBTaWduYWxIYW5kbGVyID0gRnVu
Y3Rpb248U2lnbmFsQWN0aW9uKFNpZ25hbCwgU2lnSW5mbyYsIFBsYXRmb3JtUmVnaXN0ZXJzJik+
OwogCiAvLyBDYWxsIHRoaXMgbWV0aG9kIHdoZW5ldmVyIHlvdSB3YW50IHRvIGluc3RhbGwgYSBz
aWduYWwgaGFuZGxlci4gSXQncyBvayB0byBjYWxsIHRoaXMgZnVuY3Rpb24gbGF6aWx5LgogLy8g
Tm90ZTogWW91ciBzaWduYWwgaGFuZGxlciB3aWxsIGJlIGNhbGxlZCBldmVyeSB0aW1lIHRoZSBo
YW5kbGVyIGZvciB0aGUgZGVzaXJlZCBzaWduYWwgaXMgY2FsbGVkLgpAQCAtODcsOSArOTIsMjUg
QEAgdXNpbmcgU2lnbmFsSGFuZGxlciA9IEZ1bmN0aW9uPFNpZ25hbEFjdGlvbihpbnQsIHNpZ2lu
Zm9fdCosIHZvaWQqKT47CiAvLyBUaGlzIGZ1bmN0aW9uIGlzIGN1cnJlbnRseSBhIG9uZSB3YXkg
c3RyZWV0IGkuZS4gb25jZSBpbnN0YWxsZWQsIGEgc2lnbmFsIGhhbmRsZXIgY2Fubm90IGJlIHVu
aW5zdGFsbGVkLgogV1RGX0VYUE9SVF9QUklWQVRFIHZvaWQgaW5zdGFsbFNpZ25hbEhhbmRsZXIo
U2lnbmFsLCBTaWduYWxIYW5kbGVyJiYpOwogCisKKyNpZiBIQVZFKE1BQ0hfRVhDRVBUSU9OUykK
K2NsYXNzIFRocmVhZDsKK3ZvaWQgcmVnaXN0ZXJUaHJlYWRGb3JNYWNoRXhjZXB0aW9uSGFuZGxp
bmcoVGhyZWFkKik7Cit2b2lkIHVucmVnaXN0ZXJUaHJlYWRGb3JNYWNoRXhjZXB0aW9uSGFuZGxp
bmcoVGhyZWFkKik7CisKK3ZvaWQgaGFuZGxlU2lnbmFsc1dpdGhNYWNoKCk7CisjZW5kaWYgLy8g
SEFWRShNQUNIX0VYQ0VQVElPTlMpCisKIH0gLy8gbmFtZXNwYWNlIFdURgogCisjaWYgSEFWRShN
QUNIX0VYQ0VQVElPTlMpCit1c2luZyBXVEY6OnJlZ2lzdGVyVGhyZWFkRm9yTWFjaEV4Y2VwdGlv
bkhhbmRsaW5nOwordXNpbmcgV1RGOjp1bnJlZ2lzdGVyVGhyZWFkRm9yTWFjaEV4Y2VwdGlvbkhh
bmRsaW5nOwordXNpbmcgV1RGOjpoYW5kbGVTaWduYWxzV2l0aE1hY2g7CisjZW5kaWYgLy8gSEFW
RShNQUNIX0VYQ0VQVElPTlMpCisKIHVzaW5nIFdURjo6U2lnbmFsOwordXNpbmcgV1RGOjpTaWdJ
bmZvOwogdXNpbmcgV1RGOjp0b1N5c3RlbVNpZ25hbDsKIHVzaW5nIFdURjo6ZnJvbVN5c3RlbVNp
Z25hbDsKIHVzaW5nIFdURjo6U2lnbmFsQWN0aW9uOwpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdl
TG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IDE1MGFlOTNkZDlhYWJhYWM3OGZhNWFiYTBlYWQw
MWZmZjhiYWMxNGQuLjljY2Q5MzJiMWJjNmQzMDI1ZmI2ODhlZWRjMTUyNmRhOGI4YjZmYmUgMTAw
NjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyAr
MSwxNCBAQAorMjAxNy0wNi0wMSAgS2VpdGggTWlsbGVyICA8a2VpdGhfbWlsbGVyQGFwcGxlLmNv
bT4KKworICAgICAgICBVbmRvIHJvbGxvdXQgaW4gcjIxNzYzOCB3aXRoIGJ1ZyBmaXgKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3MjgyNAorCisgICAg
ICAgIFVucmV2aWV3ZWQsIHJlbGFuZCBwYXRjaCB3aXRoIHVudXNlZCBzZXRfc3RhdGUgY29kZSBy
ZW1vdmVkLgorCisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvVGhyZWFkTWVzc2Fn
ZXMuY3BwOgorICAgICAgICAocnVuVGhyZWFkTWVzc2FnZVRlc3QpOgorICAgICAgICAoVEVTVCk6
CisKIDIwMTctMDYtMDEgIEpvbmF0aGFuIEJlZGFyZCAgPGpiZWRhcmRAYXBwbGUuY29tPgogCiAg
ICAgICAgIHdlYmtpdHB5OiBEbyBub3Qgc2VuZCAwIG9yIC0xIGFzIGEgcGlkIHRvIGtpbGxfcHJv
Y2VzcwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvVGhyZWFkTWVz
c2FnZXMuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvVGhyZWFkTWVzc2FnZXMu
Y3BwCmluZGV4IGQ2M2U5YmYxZTc1MDY4YjZjMWE3ZTdlNmU4YjY3YzRlYjA1MTU4ODIuLmU2YTU3
ODk0YmI1MTZmZTFjZTcxM2QwN2JmMThmMDcwNmVmYTkzN2MgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdHMvV1RGL1RocmVhZE1lc3NhZ2VzLmNwcAorKysgYi9Ub29scy9UZXN0
V2ViS2l0QVBJL1Rlc3RzL1dURi9UaHJlYWRNZXNzYWdlcy5jcHAKQEAgLTUwLDcgKzUwLDcgQEAg
c3RhdGljIHZvaWQgcnVuVGhyZWFkTWVzc2FnZVRlc3QodW5zaWduZWQgbnVtU2VuZGVycywgdW5z
aWduZWQgbnVtTWVzc2FnZXMpCiAgICAgZm9yICh1bnNpZ25lZCBzZW5kZXJJRCA9IDA7IHNlbmRl
cklEIDwgbnVtU2VuZGVyczsgKytzZW5kZXJJRCkgewogICAgICAgICBzZW5kZXJUaHJlYWRzW3Nl
bmRlcklEXSA9IFRocmVhZDo6Y3JlYXRlKCJUaHJlYWRNZXNzYWdlIHNlbmRlciIsIFtzZW5kZXJJ
RCwgbnVtTWVzc2FnZXMsIHJlY2VpdmVyVGhyZWFkLCAmbWVzc2FnZXNSdW4sICZoYW5kbGVyc1J1
bl0gKCkgewogICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG51bU1lc3NhZ2Vz
OyArK2kpIHsKLSAgICAgICAgICAgICAgICBhdXRvIHJlc3VsdCA9IHNlbmRNZXNzYWdlKCpyZWNl
aXZlclRocmVhZC5nZXQoKSwgW3NlbmRlcklELCAmaGFuZGxlcnNSdW5dIChzaWdpbmZvX3QqLCB1
Y29udGV4dF90KikgeworICAgICAgICAgICAgICAgIGF1dG8gcmVzdWx0ID0gc2VuZE1lc3NhZ2Uo
KnJlY2VpdmVyVGhyZWFkLmdldCgpLCBbc2VuZGVySUQsICZoYW5kbGVyc1J1bl0gKFBsYXRmb3Jt
UmVnaXN0ZXJzJikgewogICAgICAgICAgICAgICAgICAgICBoYW5kbGVyc1J1bltzZW5kZXJJRF0r
KzsKICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgICBFWFBFQ1RfVFJVRShyZXN1
bHQgPT0gV1RGOjpNZXNzYWdlU3RhdHVzOjpNZXNzYWdlUmFuKTsKQEAgLTk1LDcgKzk1LDcgQEAg
cHVibGljOgogVEVTVChUaHJlYWRNZXNzYWdlLCBTaWduYWxzV29ya09uRXhpdCkKIHsKICAgICBz
dGF0aWMgYm9vbCBoYW5kbGVyUmFuID0gZmFsc2U7Ci0gICAgaW5zdGFsbFNpZ25hbEhhbmRsZXIo
U2lnbmFsOjpVc3IsIFtdIChpbnQsIHNpZ2luZm9fdCosIHZvaWQqKSAtPiBTaWduYWxBY3Rpb24g
eworICAgIGluc3RhbGxTaWduYWxIYW5kbGVyKFNpZ25hbDo6VXNyLCBbXSAoU2lnbmFsLCBTaWdJ
bmZvJiwgUGxhdGZvcm1SZWdpc3RlcnMmKSAtPiBTaWduYWxBY3Rpb24gewogICAgICAgICBkYXRh
TG9nTG4oImhlcmUiKTsKICAgICAgICAgaGFuZGxlclJhbiA9IHRydWU7CiAgICAgICAgIHJldHVy
biBTaWduYWxBY3Rpb246OkhhbmRsZWQ7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>311726</attachid>
            <date>2017-06-01 10:53:04 -0700</date>
            <delta_ts>2017-06-01 11:28:52 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-172824-20170601105304.patch</filename>
            <type>text/plain</type>
            <size>49957</size>
            <attacher name="Keith Miller">keith_miller</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjE3NjYzCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBi
MTA1NmI0MGY5ZWViZjRmZjUyMzFlMGRkZTU5ZmM2ZTk5Yzk3MDM0Li42YjQyYjQ4ZDU0ZDBmNDM4
NDg5ODQyNmJmZjRiMzI5ODU4YjZiYmNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwzNiBAQAorMjAxNy0wNi0wMSAgS2VpdGggTWlsbGVyICA8a2VpdGhfbWlsbGVyQGFwcGxl
LmNvbT4KKworICAgICAgICBVbmRvIHJvbGxvdXQgaW4gcjIxNzYzOCB3aXRoIGJ1ZyBmaXgKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3MjgyNAorCisg
ICAgICAgIFVucmV2aWV3ZWQsIHJlbGFuZCBwYXRjaCB3aXRoIHVudXNlZCBzZXRfc3RhdGUgY29k
ZSByZW1vdmVkLgorCisgICAgICAgICogQVBJL3Rlc3RzL0V4ZWN1dGlvblRpbWVMaW1pdFRlc3Qu
Y3BwOgorICAgICAgICAoZGlzcGF0Y2hUZXJtaXRhdGVDYWxsYmFjayk6CisgICAgICAgICh0ZXN0
RXhlY3V0aW9uVGltZUxpbWl0KToKKyAgICAgICAgKiBydW50aW1lL0pTTG9jay5jcHA6CisgICAg
ICAgIChKU0M6OkpTTG9jazo6ZGlkQWNxdWlyZUxvY2spOgorICAgICAgICAqIHJ1bnRpbWUvT3B0
aW9ucy5jcHA6CisgICAgICAgIChKU0M6Om92ZXJyaWRlRGVmYXVsdHMpOgorICAgICAgICAoSlND
OjpPcHRpb25zOjppbml0aWFsaXplKToKKyAgICAgICAgKiBydW50aW1lL09wdGlvbnMuaDoKKyAg
ICAgICAgKiBydW50aW1lL1ZNVHJhcHMuY3BwOgorICAgICAgICAoSlNDOjpTaWduYWxDb250ZXh0
OjpTaWduYWxDb250ZXh0KToKKyAgICAgICAgKEpTQzo6U2lnbmFsQ29udGV4dDo6YWRqdXN0UENU
b1BvaW50VG9UcmFwcGluZ0luc3RydWN0aW9uKToKKyAgICAgICAgKEpTQzo6aW5zdGFsbFNpZ25h
bEhhbmRsZXIpOgorICAgICAgICAoSlNDOjpWTVRyYXBzOjpTaWduYWxTZW5kZXI6OnNlbmQpOgor
ICAgICAgICAqIHRvb2xzL1NpZ2lsbENyYXNoQW5hbHl6ZXIuY3BwOgorICAgICAgICAoSlNDOjpT
aWduYWxDb250ZXh0OjpTaWduYWxDb250ZXh0KToKKyAgICAgICAgKEpTQzo6U2lnbmFsQ29udGV4
dDo6ZHVtcCk6CisgICAgICAgIChKU0M6Omluc3RhbGxDcmFzaEhhbmRsZXIpOgorICAgICAgICAq
IHdhc20vV2FzbUJCUVBsYW4uY3BwOgorICAgICAgICAoSlNDOjpXYXNtOjpCQlFQbGFuOjpjb21w
aWxlRnVuY3Rpb25zKToKKyAgICAgICAgKiB3YXNtL1dhc21GYXVsdFNpZ25hbEhhbmRsZXIuY3Bw
OgorICAgICAgICAoSlNDOjpXYXNtOjp0cmFwSGFuZGxlcik6CisgICAgICAgIChKU0M6Oldhc206
OmVuYWJsZUZhc3RNZW1vcnkpOgorICAgICAgICAqIHdhc20vV2FzbU1hY2hpbmVUaHJlYWRzLmNw
cDoKKyAgICAgICAgKEpTQzo6V2FzbTo6cmVzZXRJbnN0cnVjdGlvbkNhY2hlT25BbGxUaHJlYWRz
KToKKwogMjAxNy0wNi0wMSAgR3VpbGxhdW1lIEVtb250ICA8Z3VpamVtb250QGlnYWxpYS5jb20+
CiAKICAgICAgICAgW0pTQ11bTUlQU10gU2FtcGxpbmdQcm9maWxlcjo6dGltZXJMb29wKCkgc2xl
ZXBzIGZvciA0MDAwKyBzZWNvbmRzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5nZUxvZyBi
L1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IGU5NmY4NzkwYmI0Y2M3ZmMwMmU1OTNjMjQzZDU4
MzcxNWZkMTU3ZWYuLjU2MDc1M2UzOWUzZDAyMzYzOTY3ODY0ZDNmMDdjMWNjNTUyYmVjMWIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsNDIgQEAKKzIwMTctMDYtMDEgIEtlaXRoIE1pbGxlciAgPGtlaXRoX21pbGxl
ckBhcHBsZS5jb20+CisKKyAgICAgICAgVW5kbyByb2xsb3V0IGluIHIyMTc2Mzggd2l0aCBidWcg
Zml4CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzI4
MjQKKworICAgICAgICBVbnJldmlld2VkLCByZWxhbmQgcGF0Y2ggd2l0aCB1bnVzZWQgc2V0X3N0
YXRlIGNvZGUgcmVtb3ZlZC4KKworICAgICAgICAqIENvbmZpZ3VyYXRpb25zL1dURi54Y2NvbmZp
ZzoKKyAgICAgICAgKiBXVEYueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiB3
dGYvUGxhdGZvcm0uaDoKKyAgICAgICAgKiB3dGYvUGxhdGZvcm1SZWdpc3RlcnMuaDoKKyAgICAg
ICAgKFdURjo6cmVnaXN0ZXJzRnJvbVVDb250ZXh0KToKKyAgICAgICAgKiB3dGYvU3RhY2tCb3Vu
ZHMuaDoKKyAgICAgICAgKFdURjo6U3RhY2tCb3VuZHM6OlN0YWNrQm91bmRzKToKKyAgICAgICAg
KiB3dGYvVGhyZWFkSG9sZGVyLmNwcDoKKyAgICAgICAgKFdURjo6VGhyZWFkSG9sZGVyOjp+VGhy
ZWFkSG9sZGVyKToKKyAgICAgICAgKiB3dGYvVGhyZWFkTWVzc2FnZS5jcHA6CisgICAgICAgIChX
VEY6OnNlbmRNZXNzYWdlVXNpbmdTaWduYWwpOgorICAgICAgICAoV1RGOjpzZW5kTWVzc2FnZVVz
aW5nTWFjaCk6CisgICAgICAgIChXVEY6OmRlbGl2ZXJNZXNzYWdlc1VzaW5nTWFjaCk6CisgICAg
ICAgIChXVEY6OnNlbmRNZXNzYWdlU2NvcGVkKToKKyAgICAgICAgKiB3dGYvVGhyZWFkTWVzc2Fn
ZS5oOgorICAgICAgICAoV1RGOjpzZW5kTWVzc2FnZSk6CisgICAgICAgICogd3RmL1RocmVhZGlu
Zy5oOgorICAgICAgICAoV1RGOjpUaHJlYWQ6Om1hY2hUaHJlYWQpOgorICAgICAgICAqIHd0Zi9t
YWMvTWFjaEV4Y2VwdGlvbnMuZGVmczogQ29waWVkIGZyb20gU291cmNlL1dURi93dGYvVGhyZWFk
TWVzc2FnZS5oLgorICAgICAgICAqIHd0Zi90aHJlYWRzL1NpZ25hbHMuY3BwOgorICAgICAgICAo
V1RGOjpzdGFydE1hY2hFeGNlcHRpb25IYW5kbGVyVGhyZWFkKToKKyAgICAgICAgKFdURjo6ZnJv
bU1hY2hFeGNlcHRpb24pOgorICAgICAgICAoV1RGOjp0b01hY2hNYXNrKToKKyAgICAgICAgKFdU
Rjo6aGFuZGxlU2lnbmFsc1dpdGhNYWNoKToKKyAgICAgICAgKFdURjo6c2V0RXhjZXB0aW9uUG9y
dHMpOgorICAgICAgICAoV1RGOjphY3RpdmVUaHJlYWRzKToKKyAgICAgICAgKFdURjo6cmVnaXN0
ZXJUaHJlYWRGb3JNYWNoRXhjZXB0aW9uSGFuZGxpbmcpOgorICAgICAgICAoV1RGOjp1bnJlZ2lz
dGVyVGhyZWFkRm9yTWFjaEV4Y2VwdGlvbkhhbmRsaW5nKToKKyAgICAgICAgKFdURjo6aW5zdGFs
bFNpZ25hbEhhbmRsZXIpOgorICAgICAgICAoV1RGOjpqc2NTaWduYWxIYW5kbGVyKToKKyAgICAg
ICAgKiB3dGYvdGhyZWFkcy9TaWduYWxzLmg6CisKIDIwMTctMDUtMzEgIENvbW1pdCBRdWV1ZSAg
PGNvbW1pdC1xdWV1ZUB3ZWJraXQub3JnPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIHJvbGxpbmcg
b3V0IHIyMTc2MTEgYW5kIHIyMTc2MzEuCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQVBJL3Rlc3RzL0V4ZWN1dGlvblRpbWVMaW1pdFRlc3QuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL0FQSS90ZXN0cy9FeGVjdXRpb25UaW1lTGltaXRUZXN0LmNwcAppbmRleCA4NWMyNzJj
NDQzNzY3NzU3M2UwZTc1MGFhYWM1NjM5ZWNlODQyZDdmLi5hM2MzOWE3NjFjMjQ1Y2RkNTk1ODM1
YjgzOGFkMDVmYTc3ZjAwZmNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJ
L3Rlc3RzL0V4ZWN1dGlvblRpbWVMaW1pdFRlc3QuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9BUEkvdGVzdHMvRXhlY3V0aW9uVGltZUxpbWl0VGVzdC5jcHAKQEAgLTMwLDEwICszMCwx
OCBAQAogI2luY2x1ZGUgIkpTQ29udGV4dFJlZlByaXZhdGUuaCIKICNpbmNsdWRlICJKYXZhU2Ny
aXB0LmgiCiAjaW5jbHVkZSAiT3B0aW9ucy5oIgorCiAjaW5jbHVkZSA8Y2hyb25vPgorI2luY2x1
ZGUgPHd0Zi9BdG9taWNzLmg+CisjaW5jbHVkZSA8d3RmL0NvbmRpdGlvbi5oPgogI2luY2x1ZGUg
PHd0Zi9DdXJyZW50VGltZS5oPgorI2luY2x1ZGUgPHd0Zi9Mb2NrLmg+CiAjaW5jbHVkZSA8d3Rm
L3RleHQvU3RyaW5nQnVpbGRlci5oPgogCisjaWYgSEFWRShNQUNIX0VYQ0VQVElPTlMpCisjaW5j
bHVkZSA8ZGlzcGF0Y2gvZGlzcGF0Y2guaD4KKyNlbmRpZgorCiB1c2luZyBuYW1lc3BhY2Ugc3Rk
OjpjaHJvbm87CiB1c2luZyBKU0M6Ok9wdGlvbnM7CiAKQEAgLTc3LDYgKzg1LDE1IEBAIHN0YXRp
YyBib29sIGV4dGVuZFRlcm1pbmF0ZUNhbGxiYWNrKEpTQ29udGV4dFJlZiBjdHgsIHZvaWQqKQog
ICAgIHJldHVybiB0cnVlOwogfQogCisjaWYgSEFWRShNQUNIX0VYQ0VQVElPTlMpCitib29sIGRp
c3BhdGNoVGVybWluYXRlQ2FsbGJhY2tDYWxsZWQgPSBmYWxzZTsKK3N0YXRpYyBib29sIGRpc3Bh
dGNoVGVybWl0YXRlQ2FsbGJhY2soSlNDb250ZXh0UmVmLCB2b2lkKikKK3sKKyAgICBkaXNwYXRj
aFRlcm1pbmF0ZUNhbGxiYWNrQ2FsbGVkID0gdHJ1ZTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKyNl
bmRpZgorCiBzdHJ1Y3QgVGllck9wdGlvbnMgewogICAgIGNvbnN0IGNoYXIqIHRpZXI7CiAgICAg
dW5zaWduZWQgdGltZUxpbWl0QWRqdXN0bWVudE1pbGxpczsKQEAgLTM2NSw2ICszODIsNjUgQEAg
aW50IHRlc3RFeGVjdXRpb25UaW1lTGltaXQoKQogICAgICAgICAgICAgfQogICAgICAgICB9CiAK
KyNpZiBIQVZFKE1BQ0hfRVhDRVBUSU9OUykKKyAgICAgICAgLyogVGVzdCBzY3JpcHQgdGltZW91
dCBmcm9tIGRpc3BhdGNoIHF1ZXVlOiAqLworICAgICAgICB0aW1lTGltaXQgPSAoMTAwICsgdGll
ckFkanVzdG1lbnRNaWxsaXMpIC8gMTAwMC4wOworICAgICAgICBKU0NvbnRleHRHcm91cFNldEV4
ZWN1dGlvblRpbWVMaW1pdChjb250ZXh0R3JvdXAsIHRpbWVMaW1pdCwgZGlzcGF0Y2hUZXJtaXRh
dGVDYWxsYmFjaywgMCk7CisgICAgICAgIHsKKyAgICAgICAgICAgIHVuc2lnbmVkIHRpbWVBZnRl
cldhdGNoZG9nU2hvdWxkSGF2ZUZpcmVkID0gMzAwICsgdGllckFkanVzdG1lbnRNaWxsaXM7CisK
KyAgICAgICAgICAgIFN0cmluZ0J1aWxkZXIgc2NyaXB0QnVpbGRlcjsKKyAgICAgICAgICAgIHNj
cmlwdEJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiZnVuY3Rpb24gZm9vKCkgeyB2YXIgc3RhcnRUaW1l
ID0gY3VycmVudENQVVRpbWUoKTsgd2hpbGUgKHRydWUpIHsgZm9yICh2YXIgaSA9IDA7IGkgPCAx
MDAwOyBpKyspOyBpZiAoY3VycmVudENQVVRpbWUoKSAtIHN0YXJ0VGltZSA+ICIpOworICAgICAg
ICAgICAgc2NyaXB0QnVpbGRlci5hcHBlbmROdW1iZXIodGltZUFmdGVyV2F0Y2hkb2dTaG91bGRI
YXZlRmlyZWQgLyAxMDAwLjApOworICAgICAgICAgICAgc2NyaXB0QnVpbGRlci5hcHBlbmRMaXRl
cmFsKCIpIGJyZWFrOyB9IH0gZm9vKCk7Iik7CisKKyAgICAgICAgICAgIEpTU3RyaW5nUmVmIHNj
cmlwdCA9IEpTU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKHNjcmlwdEJ1aWxkZXIudG9TdHJp
bmcoKS51dGY4KCkuZGF0YSgpKTsKKyAgICAgICAgICAgIGV4Y2VwdGlvbiA9IG51bGxwdHI7Cisg
ICAgICAgICAgICBkaXNwYXRjaFRlcm1pbmF0ZUNhbGxiYWNrQ2FsbGVkID0gZmFsc2U7CisKKyAg
ICAgICAgICAgIC8vIFdlIGhhdmUgdG8gZG8gdGhpcyBzaW5jZSBibG9ja3MgY2FuIG9ubHkgY2Fw
dHVyZSB0aGluZ3MgYXMgY29uc3QuCisgICAgICAgICAgICBKU0dsb2JhbENvbnRleHRSZWYmIGNv
bnRleHRSZWYgPSBjb250ZXh0OworICAgICAgICAgICAgSlNTdHJpbmdSZWYmIHNjcmlwdFJlZiA9
IHNjcmlwdDsKKyAgICAgICAgICAgIEpTVmFsdWVSZWYmIGV4Y2VwdGlvblJlZiA9IGV4Y2VwdGlv
bjsKKworICAgICAgICAgICAgTG9jayBzeW5jTG9jazsKKyAgICAgICAgICAgIExvY2smIHN5bmNM
b2NrUmVmID0gc3luY0xvY2s7CisgICAgICAgICAgICBDb25kaXRpb24gc3luY2hyb25pemU7Cisg
ICAgICAgICAgICBDb25kaXRpb24mIHN5bmNocm9uaXplUmVmID0gc3luY2hyb25pemU7CisgICAg
ICAgICAgICBib29sIGRpZFN5bmNocm9uaXplID0gZmFsc2U7CisgICAgICAgICAgICBib29sJiBk
aWRTeW5jaHJvbml6ZVJlZiA9IGRpZFN5bmNocm9uaXplOworCisgICAgICAgICAgICBzdGQ6OmNo
cm9ubzo6bWljcm9zZWNvbmRzIHN0YXJ0VGltZTsKKyAgICAgICAgICAgIHN0ZDo6Y2hyb25vOjpt
aWNyb3NlY29uZHMgZW5kVGltZTsKKworICAgICAgICAgICAgc3RkOjpjaHJvbm86Om1pY3Jvc2Vj
b25kcyYgc3RhcnRUaW1lUmVmID0gc3RhcnRUaW1lOworICAgICAgICAgICAgc3RkOjpjaHJvbm86
Om1pY3Jvc2Vjb25kcyYgZW5kVGltZVJlZiA9IGVuZFRpbWU7CisKKyAgICAgICAgICAgIGRpc3Bh
dGNoX2dyb3VwX3QgZ3JvdXAgPSBkaXNwYXRjaF9ncm91cF9jcmVhdGUoKTsKKyAgICAgICAgICAg
IGRpc3BhdGNoX2dyb3VwX2FzeW5jKGdyb3VwLCBkaXNwYXRjaF9nZXRfZ2xvYmFsX3F1ZXVlKDAs
IDApLCBeeworICAgICAgICAgICAgICAgIHN0YXJ0VGltZVJlZiA9IGN1cnJlbnRDUFVUaW1lKCk7
CisgICAgICAgICAgICAgICAgSlNFdmFsdWF0ZVNjcmlwdChjb250ZXh0UmVmLCBzY3JpcHRSZWYs
IG51bGxwdHIsIG51bGxwdHIsIDEsICZleGNlcHRpb25SZWYpOworICAgICAgICAgICAgICAgIGVu
ZFRpbWVSZWYgPSBjdXJyZW50Q1BVVGltZSgpOworICAgICAgICAgICAgICAgIGF1dG8gbG9ja2Vy
ID0gV1RGOjpob2xkTG9jayhzeW5jTG9ja1JlZik7CisgICAgICAgICAgICAgICAgZGlkU3luY2hy
b25pemVSZWYgPSB0cnVlOworICAgICAgICAgICAgICAgIHN5bmNocm9uaXplUmVmLm5vdGlmeUFs
bCgpOworICAgICAgICAgICAgfSk7CisKKyAgICAgICAgICAgIGF1dG8gbG9ja2VyID0gaG9sZExv
Y2soc3luY0xvY2spOworICAgICAgICAgICAgc3luY2hyb25pemUud2FpdChzeW5jTG9jaywgWyZd
IHsgcmV0dXJuIGRpZFN5bmNocm9uaXplOyB9KTsKKworICAgICAgICAgICAgaWYgKCgoZW5kVGlt
ZSAtIHN0YXJ0VGltZSkgPCBtaWxsaXNlY29uZHModGltZUFmdGVyV2F0Y2hkb2dTaG91bGRIYXZl
RmlyZWQpKSAmJiBkaXNwYXRjaFRlcm1pbmF0ZUNhbGxiYWNrQ2FsbGVkKQorICAgICAgICAgICAg
ICAgIHByaW50ZigiUEFTUzogJXMgc2NyaXB0IG9uIGRpc3BhdGNoIHF1ZXVlIHRpbWVkIG91dCBh
cyBleHBlY3RlZC5cbiIsIHRpZXJPcHRpb25zLnRpZXIpOworICAgICAgICAgICAgZWxzZSB7Cisg
ICAgICAgICAgICAgICAgaWYgKChlbmRUaW1lIC0gc3RhcnRUaW1lKSA+PSBtaWxsaXNlY29uZHMo
dGltZUFmdGVyV2F0Y2hkb2dTaG91bGRIYXZlRmlyZWQpKQorICAgICAgICAgICAgICAgICAgICBw
cmludGYoIkZBSUw6ICVzIHNjcmlwdCBvbiBkaXNwYXRjaCBxdWV1ZSBkaWQgbm90IHRpbWUgb3V0
IGFzIGV4cGVjdGVkLlxuIiwgdGllck9wdGlvbnMudGllcik7CisgICAgICAgICAgICAgICAgaWYg
KCFzaG91bGRUZXJtaW5hdGVDYWxsYmFja1dhc0NhbGxlZCkKKyAgICAgICAgICAgICAgICAgICAg
cHJpbnRmKCJGQUlMOiAlcyBzY3JpcHQgb24gZGlzcGF0Y2ggcXVldWUgdGltZW91dCBjYWxsYmFj
ayB3YXMgbm90IGNhbGxlZC5cbiIsIHRpZXJPcHRpb25zLnRpZXIpOworICAgICAgICAgICAgICAg
IGZhaWxlZCA9IHRydWU7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyNlbmRpZgorCiAgICAg
ICAgIEpTR2xvYmFsQ29udGV4dFJlbGVhc2UoY29udGV4dCk7CiAKICAgICAgICAgT3B0aW9uczo6
c2V0T3B0aW9ucyhzYXZlZE9wdGlvbnNCdWlsZGVyLnRvU3RyaW5nKCkuYXNjaWkoKS5kYXRhKCkp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNMb2NrLmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTG9jay5jcHAKaW5kZXggYzE3NWFlMGM0
ODJlZDI3YmQ1ZjZiZGM4Nzk2OGU3NWQ0NWFmNTBlZi4uMzFlMmRiNDBiMjE2ZWFhMmIxMTQyNGI4
MDNmYjdmOTFkZDRlMjYxZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNMb2NrLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0xvY2su
Y3BwCkBAIC0zMCw2ICszMCw4IEBACiAjaW5jbHVkZSAiU2FtcGxpbmdQcm9maWxlci5oIgogI2lu
Y2x1ZGUgIldhc21NYWNoaW5lVGhyZWFkcy5oIgogI2luY2x1ZGUgPHRocmVhZD4KKyNpbmNsdWRl
IDx3dGYvVGhyZWFkaW5nLmg+CisjaW5jbHVkZSA8d3RmL3RocmVhZHMvU2lnbmFscy5oPgogCiBu
YW1lc3BhY2UgSlNDIHsKIApAQCAtMTQ4LDYgKzE1MCwxMCBAQCB2b2lkIEpTTG9jazo6ZGlkQWNx
dWlyZUxvY2soKQogICAgIFdhc206OnN0YXJ0VHJhY2tpbmdDdXJyZW50VGhyZWFkKCk7CiAjZW5k
aWYKIAorI2lmIEhBVkUoTUFDSF9FWENFUFRJT05TKQorICAgIHJlZ2lzdGVyVGhyZWFkRm9yTWFj
aEV4Y2VwdGlvbkhhbmRsaW5nKCZUaHJlYWQ6OmN1cnJlbnQoKSk7CisjZW5kaWYKKwogICAgIG1f
dm0tPnRyYXBzKCkubm90aWZ5R3JhYkFsbExvY2tzKCk7CiAKICNpZiBFTkFCTEUoU0FNUExJTkdf
UFJPRklMRVIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcHRp
b25zLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wdGlvbnMuY3BwCmluZGV4
IDM3NTc3ODY4MmFiZmYwNWFlYzUzNGEyNTJlMDE4NjhmYzMyZTIwNTAuLjlmMTJkZjk1Y2Q5MGNh
OTA0N2Q2NmNiMTc2Y2QwZGNlMTAzNTkxNzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL09wdGlvbnMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL09wdGlvbnMuY3BwCkBAIC00Myw2ICs0Myw3IEBACiAjaW5jbHVkZSA8d3RmL1N0ZExpYkV4
dHJhcy5oPgogI2luY2x1ZGUgPHd0Zi9TdHJpbmdFeHRyYXMuaD4KICNpbmNsdWRlIDx3dGYvdGV4
dC9TdHJpbmdCdWlsZGVyLmg+CisjaW5jbHVkZSA8d3RmL3RocmVhZHMvU2lnbmFscy5oPgogCiAj
aWYgUExBVEZPUk0oQ09DT0EpCiAjaW5jbHVkZSA8Y3J0X2V4dGVybnMuaD4KQEAgLTM1OCw2ICsz
NTksMTAgQEAgc3RhdGljIHZvaWQgb3ZlcnJpZGVEZWZhdWx0cygpCiAjaWYgIUVOQUJMRShXRUJB
U1NFTUJMWV9GQVNUX01FTU9SWSkKICAgICBPcHRpb25zOjp1c2VXZWJBc3NlbWJseUZhc3RNZW1v
cnkoKSA9IGZhbHNlOwogI2VuZGlmCisKKyNpZiAhSEFWRShNQUNIX0VYQ0VQVElPTlMpCisgICAg
T3B0aW9uczo6dXNlTWFjaEZvckV4Y2VwdGlvbnMoKSA9IGZhbHNlOworI2VuZGlmCiB9CiAKIHN0
YXRpYyB2b2lkIHJlY29tcHV0ZURlcGVuZGVudE9wdGlvbnMoKQpAQCAtNTUwLDYgKzU1NSwxMSBA
QCB2b2lkIE9wdGlvbnM6OmluaXRpYWxpemUoKQogCiAgICAgICAgICAgICBkdW1wT3B0aW9uc0lm
TmVlZGVkKCk7CiAgICAgICAgICAgICBlbnN1cmVPcHRpb25zQXJlQ29oZXJlbnQoKTsKKworI2lm
IEhBVkUoTUFDSF9FWENFUFRJT05TKQorICAgICAgICAgICAgaWYgKE9wdGlvbnM6OnVzZU1hY2hG
b3JFeGNlcHRpb25zKCkpCisgICAgICAgICAgICAgICAgaGFuZGxlU2lnbmFsc1dpdGhNYWNoKCk7
CisjZW5kaWYKICAgICAgICAgfSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL09wdGlvbnMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09w
dGlvbnMuaAppbmRleCA0YWQxNmVhZmZhMTljOWJmMTFiNGIxOTkxNDZkY2FlYWZhOTRiMzNjLi5h
MDkzNWQyZGRjMmJmMjkzYzViYWVlZTdjOTE2YzQzYjA5Mzc5ZDNkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcHRpb25zLmgKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvT3B0aW9ucy5oCkBAIC00MjMsNiArNDIzLDggQEAgdHlwZWRlZiBjb25z
dCBjaGFyKiBvcHRpb25TdHJpbmc7CiAgICAgdih1bnNpZ25lZCwgd2F0Y2hkb2csIDAsIE5vcm1h
bCwgIndhdGNoZG9nIHRpbWVvdXQgKDAgPSBEaXNhYmxlZCwgTiA9IGEgdGltZW91dCBwZXJpb2Qg
b2YgTiBtaWxsaXNlY29uZHMpIikgXAogICAgIHYoYm9vbCwgdXNlUG9sbGluZ1RyYXBzLCBmYWxz
ZSwgTm9ybWFsLCAidXNlIHBvbGxpbmcgKGluc3RlYWQgb2Ygc2lnbmFsbGluZykgVk0gdHJhcHMi
KSBcCiAgICAgXAorICAgIHYoYm9vbCwgdXNlTWFjaEZvckV4Y2VwdGlvbnMsIHRydWUsIE5vcm1h
bCwgIlVzZSBtYWNoIGV4Y2VwdGlvbnMgcmF0aGVyIHRoYW4gc2lnbmFscyB0byBoYW5kbGUgZmF1
bHRzIGFuZCBwYXNzIHRocmVhZCBtZXNzYWdlcy4gKFRoaXMgZG9lcyBub3RoaW5nIG9uIHBsYXRm
b3JtcyB3aXRob3V0IG1hY2gpIikgXAorICAgIFwKICAgICB2KGJvb2wsIHVzZUlDU3RhdHMsIGZh
bHNlLCBOb3JtYWwsIG51bGxwdHIpIFwKICAgICBcCiAgICAgdih1bnNpZ25lZCwgcHJvdG90eXBl
SGl0Q291bnRGb3JMTEludENhY2hpbmcsIDIsIE5vcm1hbCwgIk51bWJlciBvZiBwcm90b3R5cGUg
cHJvcGVydHkgaGl0cyBiZWZvcmUgY2FjaGluZyBhIHByb3RvdHlwZSBpbiB0aGUgTExJbnQuIEEg
Y291bnQgb2YgMCBtZWFucyBuZXZlciBjYWNoZS4iKSBcCkBAIC00NDYsNiArNDQ4LDcgQEAgdHlw
ZWRlZiBjb25zdCBjaGFyKiBvcHRpb25TdHJpbmc7CiAgICAgdih1bnNpZ25lZCwgd2ViQXNzZW1i
bHlCQlFPcHRpbWl6YXRpb25MZXZlbCwgMSwgTm9ybWFsLCAiQjMgT3B0aW1pemF0aW9uIGxldmVs
IGZvciBCQlEgV2ViIEFzc2VtYmx5IG1vZHVsZSBjb21waWxhdGlvbnMuIikgXAogICAgIHYodW5z
aWduZWQsIHdlYkFzc2VtYmx5T01HT3B0aW1pemF0aW9uTGV2ZWwsIE9wdGlvbnM6OmRlZmF1bHRC
M09wdExldmVsKCksIE5vcm1hbCwgIkIzIE9wdGltaXphdGlvbiBsZXZlbCBmb3IgT01HIFdlYiBB
c3NlbWJseSBtb2R1bGUgY29tcGlsYXRpb25zLiIpIFwKICAgICBcCisgICAgdihib29sLCB1c2VC
QlFUaWVyVXBDaGVja3MsIHRydWUsIE5vcm1hbCwgIkVuYWJsZXMgdGllciB1cCBjaGVja3MgZm9y
IG91ciBCQlEgY29kZS4iKSBcCiAgICAgdih1bnNpZ25lZCwgd2ViQXNzZW1ibHlPTUdUaWVyVXBD
b3VudCwgNTAwMCwgTm9ybWFsLCAiVGhlIGNvdW50ZG93biBiZWZvcmUgd2UgdGllciB1cCBhIGZ1
bmN0aW9uIHRvIE9NRy4iKSBcCiAgICAgdih1bnNpZ25lZCwgd2ViQXNzZW1ibHlMb29wRGVjcmVt
ZW50LCAxNSwgTm9ybWFsLCAiVGhlIGFtb3VudCB0aGUgdGllciB1cCBjb3VudGRvd24gaXMgZGVj
cmVtZW50ZWQgb24gZWFjaCBsb29wIGJhY2tlZGdlLiIpIFwKICAgICB2KHVuc2lnbmVkLCB3ZWJB
c3NlbWJseUZ1bmN0aW9uRW50cnlEZWNyZW1lbnQsIDEsIE5vcm1hbCwgIlRoZSBhbW91bnQgdGhl
IHRpZXIgdXAgY291bnRkb3duIGlzIGRlY3JlbWVudGVkIG9uIGVhY2ggZnVuY3Rpb24gZW50cnku
IikgXApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk1UcmFwcy5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTVRyYXBzLmNwcAppbmRleCAxYmFh
Y2U2MDQ0ZTY2MGE4ZTU0NDFmYmFkMDE4ZWE5MDkzMWE0YzkxLi44YzU3YzQ1NmFlNDM2OGFkZjI4
ZWEwYTY0NThlN2MwMzlhOTcwZWU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9WTVRyYXBzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9W
TVRyYXBzLmNwcApAQCAtNTMsMTEgKzUzLDExIEBAIEFMV0FZU19JTkxJTkUgVk0mIFZNVHJhcHM6
OnZtKCkgY29uc3QKICNpZiBFTkFCTEUoU0lHTkFMX0JBU0VEX1ZNX1RSQVBTKQogCiBzdHJ1Y3Qg
U2lnbmFsQ29udGV4dCB7Ci0gICAgU2lnbmFsQ29udGV4dChtY29udGV4dF90JiBtY29udGV4dCkK
LSAgICAgICAgOiBtY29udGV4dChtY29udGV4dCkKLSAgICAgICAgLCB0cmFwUEMoTWFjaGluZUNv
bnRleHQ6Omluc3RydWN0aW9uUG9pbnRlcihtY29udGV4dCkpCi0gICAgICAgICwgc3RhY2tQb2lu
dGVyKE1hY2hpbmVDb250ZXh0OjpzdGFja1BvaW50ZXIobWNvbnRleHQpKQotICAgICAgICAsIGZy
YW1lUG9pbnRlcihNYWNoaW5lQ29udGV4dDo6ZnJhbWVQb2ludGVyKG1jb250ZXh0KSkKKyAgICBT
aWduYWxDb250ZXh0KFBsYXRmb3JtUmVnaXN0ZXJzJiByZWdpc3RlcnMpCisgICAgICAgIDogcmVn
aXN0ZXJzKHJlZ2lzdGVycykKKyAgICAgICAgLCB0cmFwUEMoTWFjaGluZUNvbnRleHQ6Omluc3Ry
dWN0aW9uUG9pbnRlcihyZWdpc3RlcnMpKQorICAgICAgICAsIHN0YWNrUG9pbnRlcihNYWNoaW5l
Q29udGV4dDo6c3RhY2tQb2ludGVyKHJlZ2lzdGVycykpCisgICAgICAgICwgZnJhbWVQb2ludGVy
KE1hY2hpbmVDb250ZXh0OjpmcmFtZVBvaW50ZXIocmVnaXN0ZXJzKSkKICAgICB7CiAjaWYgQ1BV
KFg4Nl82NCkgfHwgQ1BVKFg4NikKICAgICAgICAgLy8gT24gWDg2XzY0LCBTSUdUUkFQIHJlcG9y
dHMgdGhlIGFkZHJlc3MgYWZ0ZXIgdGhlIHRyYXBwaW5nIFBDLiBTbywgZGVjIGJ5IDEuCkBAIC02
OCwxMSArNjgsMTEgQEAgc3RydWN0IFNpZ25hbENvbnRleHQgewogICAgIHZvaWQgYWRqdXN0UENU
b1BvaW50VG9UcmFwcGluZ0luc3RydWN0aW9uKCkKICAgICB7CiAjaWYgQ1BVKFg4Nl82NCkgfHwg
Q1BVKFg4NikKLSAgICAgICAgTWFjaGluZUNvbnRleHQ6Omluc3RydWN0aW9uUG9pbnRlcihtY29u
dGV4dCkgPSB0cmFwUEM7CisgICAgICAgIE1hY2hpbmVDb250ZXh0OjppbnN0cnVjdGlvblBvaW50
ZXIocmVnaXN0ZXJzKSA9IHRyYXBQQzsKICNlbmRpZgogICAgIH0KIAotICAgIG1jb250ZXh0X3Qm
IG1jb250ZXh0OworICAgIFBsYXRmb3JtUmVnaXN0ZXJzJiByZWdpc3RlcnM7CiAgICAgdm9pZCog
dHJhcFBDOwogICAgIHZvaWQqIHN0YWNrUG9pbnRlcjsKICAgICB2b2lkKiBmcmFtZVBvaW50ZXI7
CkBAIC0xMzAsOCArMTMwLDggQEAgc3RhdGljIEV4cGVjdGVkPFZNQW5kU3RhY2tCb3VuZHMsIFZN
VHJhcHM6OkVycm9yPiBmaW5kQWN0aXZlVk1BbmRTdGFja0JvdW5kcyhTaWcKIAogc3RhdGljIHZv
aWQgaW5zdGFsbFNpZ25hbEhhbmRsZXIoKQogewotICAgIGluc3RhbGxTaWduYWxIYW5kbGVyKFNp
Z25hbDo6VHJhcCwgW10gKGludCwgc2lnaW5mb190Kiwgdm9pZCogdWFwKSAtPiBTaWduYWxBY3Rp
b24gewotICAgICAgICBTaWduYWxDb250ZXh0IGNvbnRleHQoc3RhdGljX2Nhc3Q8dWNvbnRleHRf
dCo+KHVhcCktPnVjX21jb250ZXh0KTsKKyAgICBpbnN0YWxsU2lnbmFsSGFuZGxlcihTaWduYWw6
OlRyYXAsIFtdIChTaWduYWwsIFNpZ0luZm8mLCBQbGF0Zm9ybVJlZ2lzdGVycyYgcmVnaXN0ZXJz
KSAtPiBTaWduYWxBY3Rpb24geworICAgICAgICBTaWduYWxDb250ZXh0IGNvbnRleHQocmVnaXN0
ZXJzKTsKIAogICAgICAgICBpZiAoIWlzSklUUEMoY29udGV4dC50cmFwUEMpKQogICAgICAgICAg
ICAgcmV0dXJuIFNpZ25hbEFjdGlvbjo6Tm90SGFuZGxlZDsKQEAgLTQwNCw4ICs0MDQsOCBAQCB2
b2lkIFZNVHJhcHM6OlNpZ25hbFNlbmRlcjo6c2VuZCgpCiAgICAgICAgICAgICBWTSYgdm0gPSAq
bV92bTsKICAgICAgICAgICAgIGF1dG8gb3B0aW9uYWxPd25lclRocmVhZCA9IHZtLm93bmVyVGhy
ZWFkKCk7CiAgICAgICAgICAgICBpZiAob3B0aW9uYWxPd25lclRocmVhZCkgewotICAgICAgICAg
ICAgICAgIHNlbmRNZXNzYWdlKCpvcHRpb25hbE93bmVyVGhyZWFkLnZhbHVlKCkuZ2V0KCksIFtd
IChzaWdpbmZvX3QqLCB1Y29udGV4dF90KiB1Y29udGV4dCkgLT4gdm9pZCB7Ci0gICAgICAgICAg
ICAgICAgICAgIFNpZ25hbENvbnRleHQgY29udGV4dCh1Y29udGV4dC0+dWNfbWNvbnRleHQpOwor
ICAgICAgICAgICAgICAgIHNlbmRNZXNzYWdlKCpvcHRpb25hbE93bmVyVGhyZWFkLnZhbHVlKCku
Z2V0KCksIFtdIChQbGF0Zm9ybVJlZ2lzdGVycyYgcmVnaXN0ZXJzKSAtPiB2b2lkIHsKKyAgICAg
ICAgICAgICAgICAgICAgU2lnbmFsQ29udGV4dCBjb250ZXh0KHJlZ2lzdGVycyk7CiAgICAgICAg
ICAgICAgICAgICAgIGF1dG8gYWN0aXZlVk1BbmRTdGFja0JvdW5kcyA9IGZpbmRBY3RpdmVWTUFu
ZFN0YWNrQm91bmRzKGNvbnRleHQpOwogICAgICAgICAgICAgICAgICAgICBpZiAoYWN0aXZlVk1B
bmRTdGFja0JvdW5kcykgewogICAgICAgICAgICAgICAgICAgICAgICAgVk0qIHZtID0gYWN0aXZl
Vk1BbmRTdGFja0JvdW5kcy52YWx1ZSgpLnZtOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3Rvb2xzL1NpZ2lsbENyYXNoQW5hbHl6ZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3Rvb2xzL1NpZ2lsbENyYXNoQW5hbHl6ZXIuY3BwCmluZGV4IDRhZGFlZmYxY2RhMmQxZmJj
NmY5MDYxZjA2M2UxNGQyZTYzMzAwNDguLjcxYTZlNDI1NWM2NDVkZDZhZjNiZGIyNTBjY2YxM2Fk
OGMxYThhNDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90b29scy9TaWdpbGxD
cmFzaEFuYWx5emVyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdG9vbHMvU2lnaWxs
Q3Jhc2hBbmFseXplci5jcHAKQEAgLTc4LDExICs3OCwxMSBAQCBwcml2YXRlOgogI2VuZGlmIC8v
IFVTRShPU19MT0cpCiAKIHN0cnVjdCBTaWduYWxDb250ZXh0IHsKLSAgICBTaWduYWxDb250ZXh0
KG1jb250ZXh0X3QmIG1jb250ZXh0KQotICAgICAgICA6IG1jb250ZXh0KG1jb250ZXh0KQotICAg
ICAgICAsIG1hY2hpbmVQQyhNYWNoaW5lQ29udGV4dDo6aW5zdHJ1Y3Rpb25Qb2ludGVyKG1jb250
ZXh0KSkKLSAgICAgICAgLCBzdGFja1BvaW50ZXIoTWFjaGluZUNvbnRleHQ6OnN0YWNrUG9pbnRl
cihtY29udGV4dCkpCi0gICAgICAgICwgZnJhbWVQb2ludGVyKE1hY2hpbmVDb250ZXh0OjpmcmFt
ZVBvaW50ZXIobWNvbnRleHQpKQorICAgIFNpZ25hbENvbnRleHQoUGxhdGZvcm1SZWdpc3RlcnMm
IHJlZ2lzdGVycykKKyAgICAgICAgOiByZWdpc3RlcnMocmVnaXN0ZXJzKQorICAgICAgICAsIG1h
Y2hpbmVQQyhNYWNoaW5lQ29udGV4dDo6aW5zdHJ1Y3Rpb25Qb2ludGVyKHJlZ2lzdGVycykpCisg
ICAgICAgICwgc3RhY2tQb2ludGVyKE1hY2hpbmVDb250ZXh0OjpzdGFja1BvaW50ZXIocmVnaXN0
ZXJzKSkKKyAgICAgICAgLCBmcmFtZVBvaW50ZXIoTWFjaGluZUNvbnRleHQ6OmZyYW1lUG9pbnRl
cihyZWdpc3RlcnMpKQogICAgIHsgfQogCiAgICAgdm9pZCBkdW1wKCkKQEAgLTExMiw3ICsxMTIs
NyBAQCBzdHJ1Y3QgU2lnbmFsQ29udGV4dCB7CiAgICAgICAgIHYoZ3MpCiAKICNkZWZpbmUgRFVN
UF9SRUdJU1RFUihfX3JlZykgXAotICAgICAgICBsb2coIlJlZ2lzdGVyICIgI19fcmVnICI6ICVw
IiwgcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4obWNvbnRleHQtPl9fc3MuX18jI19fcmVnKSk7Cisg
ICAgICAgIGxvZygiUmVnaXN0ZXIgIiAjX19yZWcgIjogJXAiLCByZWludGVycHJldF9jYXN0PHZv
aWQqPihyZWdpc3RlcnMuX18jI19fcmVnKSk7CiAgICAgICAgIEZPUl9FQUNIX1JFR0lTVEVSKERV
TVBfUkVHSVNURVIpCiAjdW5kZWYgRk9SX0VBQ0hfUkVHSVNURVIKIApAQCAtMTIwLDIwICsxMjAs
MjAgQEAgc3RydWN0IFNpZ25hbENvbnRleHQgewogICAgICAgICBpbnQgaTsKICAgICAgICAgZm9y
IChpID0gMDsgaSA8IDI4OyBpICs9IDQpIHsKICAgICAgICAgICAgIGxvZygieCVkOiAlMDE2bGx4
IHglZDogJTAxNmxseCB4JWQ6ICUwMTZsbHggeCVkOiAlMDE2bGx4IiwKLSAgICAgICAgICAgICAg
ICBpLCBtY29udGV4dC0+X19zcy5fX3hbaV0sCi0gICAgICAgICAgICAgICAgaSsxLCBtY29udGV4
dC0+X19zcy5fX3hbaSsxXSwKLSAgICAgICAgICAgICAgICBpKzIsIG1jb250ZXh0LT5fX3NzLl9f
eFtpKzJdLAotICAgICAgICAgICAgICAgIGkrMywgbWNvbnRleHQtPl9fc3MuX194W2krM10pOwor
ICAgICAgICAgICAgICAgIGksIHJlZ2lzdGVycy5fX3hbaV0sCisgICAgICAgICAgICAgICAgaSsx
LCByZWdpc3RlcnMuX194W2krMV0sCisgICAgICAgICAgICAgICAgaSsyLCByZWdpc3RlcnMuX194
W2krMl0sCisgICAgICAgICAgICAgICAgaSszLCByZWdpc3RlcnMuX194W2krM10pOwogICAgICAg
ICB9CiAgICAgICAgIEFTU0VSVChpIDwgMjkpOwogICAgICAgICBsb2coInglZDogJTAxNmxseCBm
cDogJTAxNmxseCBscjogJTAxNmxseCIsCi0gICAgICAgICAgICBpLCBtY29udGV4dC0+X19zcy5f
X3hbaV0sIG1jb250ZXh0LT5fX3NzLl9fZnAsIG1jb250ZXh0LT5fX3NzLl9fbHIpOworICAgICAg
ICAgICAgaSwgcmVnaXN0ZXJzLl9feFtpXSwgcmVnaXN0ZXJzLl9fZnAsIHJlZ2lzdGVycy5fX2xy
KTsKICAgICAgICAgbG9nKCJzcDogJTAxNmxseCBwYzogJTAxNmxseCBjcHNyOiAlMDh4IiwKLSAg
ICAgICAgICAgIG1jb250ZXh0LT5fX3NzLl9fc3AsIG1jb250ZXh0LT5fX3NzLl9fcGMsIG1jb250
ZXh0LT5fX3NzLl9fY3Bzcik7CisgICAgICAgICAgICByZWdpc3RlcnMuX19zcCwgcmVnaXN0ZXJz
Ll9fcGMsIHJlZ2lzdGVycy5fX2Nwc3IpOwogI2VuZGlmCiAgICAgfQogCi0gICAgbWNvbnRleHRf
dCYgbWNvbnRleHQ7CisgICAgUGxhdGZvcm1SZWdpc3RlcnMmIHJlZ2lzdGVyczsKICAgICB2b2lk
KiBtYWNoaW5lUEM7CiAgICAgdm9pZCogc3RhY2tQb2ludGVyOwogICAgIHZvaWQqIGZyYW1lUG9p
bnRlcjsKQEAgLTE0Miw4ICsxNDIsOCBAQCBzdHJ1Y3QgU2lnbmFsQ29udGV4dCB7CiBzdGF0aWMg
dm9pZCBpbnN0YWxsQ3Jhc2hIYW5kbGVyKCkKIHsKICNpZiBDUFUoWDg2XzY0KSB8fCBDUFUoQVJN
NjQpCi0gICAgaW5zdGFsbFNpZ25hbEhhbmRsZXIoU2lnbmFsOjpJbGwsIFtdIChpbnQsIHNpZ2lu
Zm9fdCosIHZvaWQqIHVhcCkgewotICAgICAgICBTaWduYWxDb250ZXh0IGNvbnRleHQoc3RhdGlj
X2Nhc3Q8dWNvbnRleHRfdCo+KHVhcCktPnVjX21jb250ZXh0KTsKKyAgICBpbnN0YWxsU2lnbmFs
SGFuZGxlcihTaWduYWw6OklsbCwgW10gKFNpZ25hbCwgU2lnSW5mbyYsIFBsYXRmb3JtUmVnaXN0
ZXJzJiByZWdpc3RlcnMpIHsKKyAgICAgICAgU2lnbmFsQ29udGV4dCBjb250ZXh0KHJlZ2lzdGVy
cyk7CiAKICAgICAgICAgaWYgKCFpc0pJVFBDKGNvbnRleHQubWFjaGluZVBDKSkKICAgICAgICAg
ICAgIHJldHVybiBTaWduYWxBY3Rpb246Ok5vdEhhbmRsZWQ7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtQkJRUGxhbi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvd2FzbS9XYXNtQkJRUGxhbi5jcHAKaW5kZXggMWRkMGNkMWQ4MzVjNmMyZjIzMWIwMGI4ODZk
ZGU0YWY3MmMyNjNjZS4uYjFiNTk4ZDIwYzVjMDA3N2Q5ZTlkMDhlMzY4YWQ1Y2ExNzgzMWJhZiAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUJCUVBsYW4uY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21CQlFQbGFuLmNwcApAQCAtMjQyLDcg
KzI0Miw3IEBAIHZvaWQgQkJRUGxhbjo6Y29tcGlsZUZ1bmN0aW9ucyhDb21waWxhdGlvbkVmZm9y
dCBlZmZvcnQpCiAgICAgICAgIEFTU0VSVCh2YWxpZGF0ZUZ1bmN0aW9uKGZ1bmN0aW9uU3RhcnQs
IGZ1bmN0aW9uTGVuZ3RoLCBzaWduYXR1cmUsIG1fbW9kdWxlSW5mb3JtYXRpb24uZ2V0KCkpKTsK
IAogICAgICAgICBtX3VubGlua2VkV2FzbVRvV2FzbUNhbGxzW2Z1bmN0aW9uSW5kZXhdID0gVmVj
dG9yPFVubGlua2VkV2FzbVRvV2FzbUNhbGw+KCk7Ci0gICAgICAgIFRpZXJVcENvdW50KiB0aWVy
VXAgPSAmbV90aWVyVXBDb3VudHNbZnVuY3Rpb25JbmRleF07CisgICAgICAgIFRpZXJVcENvdW50
KiB0aWVyVXAgPSBPcHRpb25zOjp1c2VCQlFUaWVyVXBDaGVja3MoKSA/ICZtX3RpZXJVcENvdW50
c1tmdW5jdGlvbkluZGV4XSA6IG51bGxwdHI7CiAgICAgICAgIGF1dG8gcGFyc2VBbmRDb21waWxl
UmVzdWx0ID0gcGFyc2VBbmRDb21waWxlKG1fY29tcGlsYXRpb25Db250ZXh0c1tmdW5jdGlvbklu
ZGV4XSwgZnVuY3Rpb25TdGFydCwgZnVuY3Rpb25MZW5ndGgsIHNpZ25hdHVyZSwgbV91bmxpbmtl
ZFdhc21Ub1dhc21DYWxsc1tmdW5jdGlvbkluZGV4XSwgbV9tb2R1bGVJbmZvcm1hdGlvbi5nZXQo
KSwgbV9tb2RlLCBDb21waWxhdGlvbk1vZGU6OkJCUU1vZGUsIGZ1bmN0aW9uSW5kZXgsIHRpZXJV
cCk7CiAKICAgICAgICAgaWYgKFVOTElLRUxZKCFwYXJzZUFuZENvbXBpbGVSZXN1bHQpKSB7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtRmF1bHRTaWduYWxIYW5k
bGVyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21GYXVsdFNpZ25hbEhhbmRs
ZXIuY3BwCmluZGV4IDJlMGM5OWEzOWJlYmQzMTc4YjkxNDhkOTU4ZmU1M2U1N2E2MjI5N2UuLjI2
NGMzNGRlNDVkYTE3NWE1ZDUxNDFjMTcxZWZlOTVlMDYzYzVlMjcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21GYXVsdFNpZ25hbEhhbmRsZXIuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21GYXVsdFNpZ25hbEhhbmRsZXIuY3BwCkBAIC01
Miw5ICs1Miw4IEBAIHN0YXRpYyBMYXp5TmV2ZXJEZXN0cm95ZWQ8SGFzaFNldDxzdGQ6OnR1cGxl
PHZvaWQqLCB2b2lkKj4+PiBjb2RlTG9jYXRpb25zOyAvLyAoCiAKIHN0YXRpYyBib29sIGZhc3RI
YW5kbGVySW5zdGFsbGVkIHsgZmFsc2UgfTsKIAotc3RhdGljIFNpZ25hbEFjdGlvbiB0cmFwSGFu
ZGxlcihpbnQsIHNpZ2luZm9fdCogc2lnSW5mbywgdm9pZCogdWNvbnRleHQpCitzdGF0aWMgU2ln
bmFsQWN0aW9uIHRyYXBIYW5kbGVyKFNpZ25hbCwgU2lnSW5mbyYgc2lnSW5mbywgUGxhdGZvcm1S
ZWdpc3RlcnMmIGNvbnRleHQpCiB7Ci0gICAgbWNvbnRleHRfdCYgY29udGV4dCA9IHN0YXRpY19j
YXN0PHVjb250ZXh0X3QqPih1Y29udGV4dCktPnVjX21jb250ZXh0OwogICAgIHZvaWQqIGZhdWx0
aW5nSW5zdHJ1Y3Rpb24gPSBNYWNoaW5lQ29udGV4dDo6aW5zdHJ1Y3Rpb25Qb2ludGVyKGNvbnRl
eHQpOwogICAgIGRhdGFMb2dMbklmKHZlcmJvc2UsICJzdGFydGluZyBoYW5kbGVyIGZvciBmYXVs
dCBhdDogIiwgUmF3UG9pbnRlcihmYXVsdGluZ0luc3RydWN0aW9uKSk7CiAKQEAgLTY0LDcgKzYz
LDcgQEAgc3RhdGljIFNpZ25hbEFjdGlvbiB0cmFwSGFuZGxlcihpbnQsIHNpZ2luZm9fdCogc2ln
SW5mbywgdm9pZCogdWNvbnRleHQpCiAgICAgaWYgKGlzSklUUEMoZmF1bHRpbmdJbnN0cnVjdGlv
bikpIHsKICAgICAgICAgYm9vbCBmYXVsdGVkSW5BY3RpdmVGYXN0TWVtb3J5ID0gZmFsc2U7CiAg
ICAgICAgIHsKLSAgICAgICAgICAgIHZvaWQqIGZhdWx0aW5nQWRkcmVzcyA9IHNpZ0luZm8tPnNp
X2FkZHI7CisgICAgICAgICAgICB2b2lkKiBmYXVsdGluZ0FkZHJlc3MgPSBzaWdJbmZvLmZhdWx0
aW5nQWRkcmVzczsKICAgICAgICAgICAgIGRhdGFMb2dMbklmKHZlcmJvc2UsICJjaGVja2luZyBm
YXVsdGluZyBhZGRyZXNzOiAiLCBSYXdQb2ludGVyKGZhdWx0aW5nQWRkcmVzcyksICIgaXMgaW4g
YW4gYWN0aXZlIGZhc3QgbWVtb3J5Iik7CiAgICAgICAgICAgICBmYXVsdGVkSW5BY3RpdmVGYXN0
TWVtb3J5ID0gV2FzbTo6TWVtb3J5OjphZGRyZXNzSXNJbkFjdGl2ZUZhc3RNZW1vcnkoZmF1bHRp
bmdBZGRyZXNzKTsKICAgICAgICAgfQpAQCAtMTI0LDExICsxMjMsMTEgQEAgdm9pZCBlbmFibGVG
YXN0TWVtb3J5KCkKICAgICAgICAgICAgIHJldHVybjsKIAogI2lmIEVOQUJMRShXRUJBU1NFTUJM
WV9GQVNUX01FTU9SWSkKLSAgICAgICAgaW5zdGFsbFNpZ25hbEhhbmRsZXIoU2lnbmFsOjpCdXMs
IFtdIChpbnQgc2lnbmFsLCBzaWdpbmZvX3QqIHNpZ0luZm8sIHZvaWQqIHVjb250ZXh0KSB7Cisg
ICAgICAgIGluc3RhbGxTaWduYWxIYW5kbGVyKFNpZ25hbDo6QnVzLCBbXSAoU2lnbmFsIHNpZ25h
bCwgU2lnSW5mbyYgc2lnSW5mbywgUGxhdGZvcm1SZWdpc3RlcnMmIHVjb250ZXh0KSB7CiAgICAg
ICAgICAgICByZXR1cm4gdHJhcEhhbmRsZXIoc2lnbmFsLCBzaWdJbmZvLCB1Y29udGV4dCk7CiAg
ICAgICAgIH0pOwogCi0gICAgICAgIGluc3RhbGxTaWduYWxIYW5kbGVyKFNpZ25hbDo6U2VnViwg
W10gKGludCBzaWduYWwsIHNpZ2luZm9fdCogc2lnSW5mbywgdm9pZCogdWNvbnRleHQpIHsKKyAg
ICAgICAgaW5zdGFsbFNpZ25hbEhhbmRsZXIoU2lnbmFsOjpTZWdWLCBbXSAoU2lnbmFsIHNpZ25h
bCwgU2lnSW5mbyYgc2lnSW5mbywgUGxhdGZvcm1SZWdpc3RlcnMmIHVjb250ZXh0KSB7CiAgICAg
ICAgICAgICByZXR1cm4gdHJhcEhhbmRsZXIoc2lnbmFsLCBzaWdJbmZvLCB1Y29udGV4dCk7CiAg
ICAgICAgIH0pOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNt
TWFjaGluZVRocmVhZHMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbU1hY2hp
bmVUaHJlYWRzLmNwcAppbmRleCA1YWFjODdhY2I1NzQ3YzdmY2EyZjkzNmVjOWNmNjc4YjQzMTc4
MTcxLi4wYTM2N2ZkNWUyMjUyN2U5YzNjODc1MzZlY2ZkNzJiMTNkZjc5ZDViIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtTWFjaGluZVRocmVhZHMuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21NYWNoaW5lVGhyZWFkcy5jcHAKQEAgLTMx
LDYgKzMxLDcgQEAKICNpbmNsdWRlICJNYWNoaW5lU3RhY2tNYXJrZXIuaCIKICNpbmNsdWRlIDx3
dGYvTmV2ZXJEZXN0cm95ZWQuaD4KICNpbmNsdWRlIDx3dGYvVGhyZWFkTWVzc2FnZS5oPgorI2lu
Y2x1ZGUgPHd0Zi90aHJlYWRzL1NpZ25hbHMuaD4KIAogbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFj
ZSBXYXNtIHsKIApAQCAtNTcsNyArNTgsNyBAQCB2b2lkIHJlc2V0SW5zdHJ1Y3Rpb25DYWNoZU9u
QWxsVGhyZWFkcygpCiAKICAgICBjb25zdCBEb3VibHlMaW5rZWRMaXN0PE1hY2hpbmVUaHJlYWRz
OjpNYWNoaW5lVGhyZWFkPiYgdGhyZWFkcyA9IHdhc21UaHJlYWRzKCkudGhyZWFkc0xpc3RIZWFk
KGxvY2tlcik7CiAgICAgZm9yIChjb25zdCBhdXRvKiB0aHJlYWQgPSB0aHJlYWRzLmhlYWQoKTsg
dGhyZWFkOyB0aHJlYWQgPSB0aHJlYWQtPm5leHQoKSkgewotICAgICAgICBzZW5kTWVzc2FnZSh0
aHJlYWQtPm1fdGhyZWFkLmdldCgpLCBbXSAoc2lnaW5mb190KiwgdWNvbnRleHRfdCopIHsKKyAg
ICAgICAgc2VuZE1lc3NhZ2UodGhyZWFkLT5tX3RocmVhZC5nZXQoKSwgW10gKGNvbnN0IFBsYXRm
b3JtUmVnaXN0ZXJzJikgewogICAgICAgICAgICAgLy8gSXQncyBsaWtlbHkgdGhhdCB0aGUgc2ln
bmFsIGhhbmRsZXIgd2lsbCBhbHJlYWR5IHJlc2V0IHRoZSBpbnN0cnVjdGlvbiBjYWNoZSBidXQg
d2UgbWlnaHQgYXMgd2VsbCBiZSBzdXJlLgogICAgICAgICAgICAgV1RGOjpjcm9zc01vZGlmeWlu
Z0NvZGVGZW5jZSgpOwogICAgICAgICB9KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvQ29uZmln
dXJhdGlvbnMvV1RGLnhjY29uZmlnIGIvU291cmNlL1dURi9Db25maWd1cmF0aW9ucy9XVEYueGNj
b25maWcKaW5kZXggNDIxZWZkOTYxYzE0NjhjZDIwZGRjNWJiZjg4OTYyMGVlMWNmNThkYy4uYWYx
OTljZWI5NTA2Zjg5NTBkMzNhOWNlNDgwN2JhNmRiYjdiMjdlNSAxMDA2NDQKLS0tIGEvU291cmNl
L1dURi9Db25maWd1cmF0aW9ucy9XVEYueGNjb25maWcKKysrIGIvU291cmNlL1dURi9Db25maWd1
cmF0aW9ucy9XVEYueGNjb25maWcKQEAgLTI3LDMgKzI3LDYgQEAgUFJPRFVDVF9OQU1FID0gV1RG
OwogCiBHQ0NfU1lNQk9MU19QUklWQVRFX0VYVEVSTiA9IFlFUzsKIFNUUklQX0lOU1RBTExFRF9Q
Uk9EVUNUID0gTk87CisKK0VYQ0xVREVEX1NPVVJDRV9GSUxFX05BTUVTXyA9IE1hY2hFeGNlcHRp
b25zLmRlZnMKK0VYQ0xVREVEX1NPVVJDRV9GSUxFX05BTUVTW3Nkaz1pcGhvbmVvcypdID0gJChF
WENMVURFRF9TT1VSQ0VfRklMRV9OQU1FU18kKFVTRV9JTlRFUk5BTF9TREspKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dURi9XVEYueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XVEYv
V1RGLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggNTdiM2UwZjc5ZjYyMzk1OTI1ZWE4
ZThhOThkNzEzNGQxMTZlMjhkOS4uZDYyYTc5M2IzZTFmNjc5MTJhNDM3MWQ1YzBjYWE5YmYyMjE4
NDY2ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi9XVEYueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
agorKysgYi9Tb3VyY2UvV1RGL1dURi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC02NCw2
ICs2NCw3IEBACiAJCTUyMTgzMDEyQzk5RTQ3NkE4NEVFQkVBOCAvKiBTeW1ib2xJbXBsLmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY3MkJCREIxMDdG
QTQyNDg4NjE3OEI5RSAvKiBTeW1ib2xJbXBsLmNwcCAqLzsgfTsKIAkJNTMxMUJENTMxRUE3MUNB
RDAwNTI1MjgxIC8qIFNpZ25hbHMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNTMxMUJENTExRUE3MUNBRDAwNTI1MjgxIC8qIFNpZ25hbHMuY3BwICov
OyB9OwogCQk1MzExQkQ1QzFFQTgyMkY5MDA1MjUyODEgLyogVGhyZWFkTWVzc2FnZS5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MzExQkQ1QjFFQTgy
MkY5MDA1MjUyODEgLyogVGhyZWFkTWVzc2FnZS5jcHAgKi87IH07CisJCTUzNTM0RjJBMUVDMEUx
MEUwMDE0MUIyRiAvKiBNYWNoRXhjZXB0aW9ucy5kZWZzIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTM1MzRGMjkxRUMwRTEwRTAwMTQxQjJGIC8qIE1hY2hF
eGNlcHRpb25zLmRlZnMgKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoQ2xpZW50LCBTZXJ2
ZXIsICk7IH07IH07CiAJCTcwQTk5M0ZFMUFENzE1MTMwMEZBNjE1QiAvKiBTeW1ib2xSZWdpc3Ry
eS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3MEE5
OTNGQzFBRDcxNTEzMDBGQTYxNUIgLyogU3ltYm9sUmVnaXN0cnkuY3BwICovOyB9OwogCQk3MEVD
QTYwRDFCMDI0MjY4MDA0NDk3MzkgLyogQXRvbWljU3RyaW5nSW1wbC5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3MEVDQTYwQTFCMDI0MjY4MDA0NDk3
MzkgLyogQXRvbWljU3RyaW5nSW1wbC5jcHAgKi87IH07CiAJCTdBRkVDNkIxMUVCMjJCNTkwMERB
REUzNiAvKiBVVUlELmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDdBRkVDNkIwMUVCMjJCNTkwMERBREUzNiAvKiBVVUlELmNwcCAqLzsgfTsKQEAgLTI5
OSw2ICszMDAsNyBAQAogCQk1MzExQkQ1NzFFQTdFMUExMDA1MjUyODEgLyogU2lnbmFscy5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTaWduYWxzLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTUzMTFCRDU5MUVBODFBOTYwMDUyNTI4MSAvKiBUaHJlYWRNZXNzYWdl
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFRocmVhZE1lc3NhZ2UuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTMxMUJENUIxRUE4MjJGOTAwNTI1MjgxIC8qIFRo
cmVhZE1lc3NhZ2UuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gVGhy
ZWFkTWVzc2FnZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTUzNTM0RjI5MUVD
MEUxMEUwMDE0MUIyRiAvKiBNYWNoRXhjZXB0aW9ucy5kZWZzICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5taWc7IHBhdGggPSBNYWNoRXhjZXB0aW9ucy5kZWZzOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk1MzlFQjA2MjFENTUyODQyMDBDODJFRjcgLyogTEVCRGVjb2Rlci5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBMRUJEZWNvZGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTUzRUMyNTNDMUU5NUFEMzAwMDA4MzFCOSAvKiBQcmlvcml0eVF1ZXVlLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFByaW9yaXR5UXVldWUuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTUzMDcxQzkxQzQwNDI3MjAwMzg0ODk4IC8qIFRpbnlM
UlVDYWNoZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBUaW55TFJVQ2FjaGUu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTEwMjIsNiArMTAyNCw3IEBACiAJCQlj
aGlsZHJlbiA9ICgKIAkJCQkxQTQyOEI4QjFDOEY4OUREMDA1MUU5RUIgLyogQXBwS2l0Q29tcGF0
aWJpbGl0eURlY2xhcmF0aW9ucy5oICovLAogCQkJCTFBQ0FERDgyMTg4NDQ4MDEwMEQ4QjcxRCAv
KiBEZXByZWNhdGVkU3ltYm9sc1VzZWRCeVNhZmFyaS5tbSAqLywKKwkJCQk1MzUzNEYyOTFFQzBF
MTBFMDAxNDFCMkYgLyogTWFjaEV4Y2VwdGlvbnMuZGVmcyAqLywKIAkJCQlBOEE0NzJDNTE1MUE4
MjVBMDA0MTIzRkYgLyogTWFpblRocmVhZE1hYy5tbSAqLywKIAkJCSk7CiAJCQlwYXRoID0gbWFj
OwpAQCAtMTM0Niw2ICsxMzQ5LDcgQEAKIAkJCQkxNDNGNjExRjE1NjVGMEY5MDBEQjUxNEEgLyog
UkFNU2l6ZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBM0I3MjVFQzk4NzQ0NkFEOTNGMUE0NDAg
LyogUmFuZG9tRGV2aWNlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE4QTQ3NDE0MTUxQTgyNUIw
MDQxMjNGRiAvKiBSYW5kb21OdW1iZXIuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJNTM1MzRGMkEx
RUMwRTEwRTAwMTQxQjJGIC8qIE1hY2hFeGNlcHRpb25zLmRlZnMgaW4gU291cmNlcyAqLywKIAkJ
CQlBOEE0NzQxQTE1MUE4MjVCMDA0MTIzRkYgLyogUmVmQ291bnRlZExlYWtDb3VudGVyLmNwcCBp
biBTb3VyY2VzICovLAogCQkJCTJDREVEMEYzMTgxMTVDODUwMDREQkE3MCAvKiBSdW5Mb29wLmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCTJDREVEMEVGMTgxMTVDMzgwMDREQkE3MCAvKiBSdW5Mb29w
Q0YuY3BwIGluIFNvdXJjZXMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9y
bS5oIGIvU291cmNlL1dURi93dGYvUGxhdGZvcm0uaAppbmRleCA0NWJkOGE4MTFmOTg4OWM4NWQ4
ZjU0ZGRmNjUzOTgxZTJmZThmNjEwLi4wYzk1NmY0ZmY2MzgwNjc1ZTRjNDI3ZGYyMGVjOTZlNjYw
YTBiZDc5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybS5oCisrKyBiL1NvdXJj
ZS9XVEYvd3RmL1BsYXRmb3JtLmgKQEAgLTY2OSw2ICs2NjksMTAgQEAKICNkZWZpbmUgSEFWRV9S
RUFETElORSAxCiAjZGVmaW5lIEhBVkVfU1lTX1RJTUVCX0ggMQogCisjaWYgX19oYXNfaW5jbHVk
ZSg8bWFjaC9tYWNoX2V4Yy5kZWZzPikgJiYgIShQTEFURk9STShXQVRDSE9TKSB8fCBQTEFURk9S
TShBUFBMRVRWKSkKKyNkZWZpbmUgSEFWRV9NQUNIX0VYQ0VQVElPTlMgMQorI2VuZGlmCisKICNp
ZiAhUExBVEZPUk0oR1RLKQogI2RlZmluZSBVU0VfQUNDRUxFUkFURSAxCiAjZW5kaWYKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtUmVnaXN0ZXJzLmggYi9Tb3VyY2UvV1RGL3d0
Zi9QbGF0Zm9ybVJlZ2lzdGVycy5oCmluZGV4IGQ1YjVhYmMyMjFiYmFkODI5NzYxOTNlY2U1MWMx
Yzc2MTc1ZGIwNmQuLjg0YmQ4OTM3NDk5ZGE5OWVhYTg2YjczNjk1ZjdjNWI4MWFjMjYwY2UgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtUmVnaXN0ZXJzLmgKKysrIGIvU291cmNl
L1dURi93dGYvUGxhdGZvcm1SZWdpc3RlcnMuaApAQCAtMjYsOSArMjYsMTEgQEAKICNwcmFnbWEg
b25jZQogCiAjaW5jbHVkZSA8d3RmL1BsYXRmb3JtLmg+CisjaW5jbHVkZSA8d3RmL1N0ZExpYkV4
dHJhcy5oPgogCiAjaWYgT1MoREFSV0lOKQogI2luY2x1ZGUgPG1hY2gvdGhyZWFkX2FjdC5oPgor
I2luY2x1ZGUgPHNpZ25hbC5oPgogI2VsaWYgT1MoV0lORE9XUykKICNpbmNsdWRlIDx3aW5kb3dz
Lmg+CiAjZWxzZQpAQCAtNTUsNiArNTcsMTEgQEAgdHlwZWRlZiBhcm1fdGhyZWFkX3N0YXRlNjRf
dCBQbGF0Zm9ybVJlZ2lzdGVyczsKICNlcnJvciBVbmtub3duIEFyY2hpdGVjdHVyZQogI2VuZGlm
CiAKK2lubGluZSBQbGF0Zm9ybVJlZ2lzdGVycyYgcmVnaXN0ZXJzRnJvbVVDb250ZXh0KHVjb250
ZXh0X3QqIHVjb250ZXh0KQoreworICAgIHJldHVybiB1Y29udGV4dC0+dWNfbWNvbnRleHQtPl9f
c3M7Cit9CisKICNlbGlmIE9TKFdJTkRPV1MpCiAKIHVzaW5nIFBsYXRmb3JtUmVnaXN0ZXJzID0g
Q09OVEVYVDsKQEAgLTY1LDYgKzcyLDExIEBAIHN0cnVjdCBQbGF0Zm9ybVJlZ2lzdGVycyB7CiAg
ICAgbWNvbnRleHRfdCBtYWNoaW5lQ29udGV4dDsKIH07CiAKK2lubGluZSBQbGF0Zm9ybVJlZ2lz
dGVycyYgcmVnaXN0ZXJzRnJvbVVDb250ZXh0KHVjb250ZXh0X3QqIHVjb250ZXh0KQoreworICAg
IHJldHVybiAqYml0d2lzZV9jYXN0PFBsYXRmb3JtUmVnaXN0ZXJzKj4oJnVjb250ZXh0LT51Y19t
Y29udGV4dCk7Cit9CisKICNlbHNlCiAKIHN0cnVjdCBQbGF0Zm9ybVJlZ2lzdGVycyB7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9TdGFja0JvdW5kcy5oIGIvU291cmNlL1dURi93dGYvU3Rh
Y2tCb3VuZHMuaAppbmRleCA1NTQ2MDRmMmFiNDg0YzdjZjcxZWUzODYzMGNlYjRjNzljMzNlOTcy
Li5jZDYyYzE0OGE2YzdlZmM5NTE3YThiMDliOGEzMmM3ZmUxOTBjZGVmIDEwMDY0NAotLS0gYS9T
b3VyY2UvV1RGL3d0Zi9TdGFja0JvdW5kcy5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL1N0YWNrQm91
bmRzLmgKQEAgLTU0LDcgKzU0LDYgQEAgcHVibGljOgogICAgICAgICA6IG1fb3JpZ2luKG9yaWdp
bikKICAgICAgICAgLCBtX2JvdW5kKGVuZCkKICAgICB7Ci0gICAgICAgIGNoZWNrQ29uc2lzdGVu
Y3koKTsKICAgICB9CiAKICAgICB2b2lkKiBvcmlnaW4oKSBjb25zdApkaWZmIC0tZ2l0IGEvU291
cmNlL1dURi93dGYvVGhyZWFkSG9sZGVyLmNwcCBiL1NvdXJjZS9XVEYvd3RmL1RocmVhZEhvbGRl
ci5jcHAKaW5kZXggZTJhMzFiZTk5NzhhOWRlNDJlYmZhMzNiMDcwNmE1MjQzM2JkNzJjYi4uOTc3
ZDFkZmMxNzM5ZTU3Zjc3OTlkODVhZmUzNmM2MDZhNzU0NWUzNyAxMDA2NDQKLS0tIGEvU291cmNl
L1dURi93dGYvVGhyZWFkSG9sZGVyLmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9UaHJlYWRIb2xk
ZXIuY3BwCkBAIC0zNCwxMiArMzQsMTcgQEAKIAogI2luY2x1ZGUgIlRocmVhZGluZy5oIgogCisj
aW5jbHVkZSA8d3RmL3RocmVhZHMvU2lnbmFscy5oPgorCiBuYW1lc3BhY2UgV1RGIHsKIAogVGhy
ZWFkU3BlY2lmaWNLZXkgVGhyZWFkSG9sZGVyOjptX2tleSA9IEludmFsaWRUaHJlYWRTcGVjaWZp
Y0tleTsKIAogVGhyZWFkSG9sZGVyOjp+VGhyZWFkSG9sZGVyKCkKIHsKKyNpZiBIQVZFKE1BQ0hf
RVhDRVBUSU9OUykKKyAgICB1bnJlZ2lzdGVyVGhyZWFkRm9yTWFjaEV4Y2VwdGlvbkhhbmRsaW5n
KCZtX3RocmVhZC5nZXQoKSk7CisjZW5kaWYKICAgICBtX3RocmVhZC0+ZGlkRXhpdCgpOwogfQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9UaHJlYWRNZXNzYWdlLmNwcCBiL1NvdXJjZS9X
VEYvd3RmL1RocmVhZE1lc3NhZ2UuY3BwCmluZGV4IGYxNGJjNDVkMzYxNGM3YzY2MzVlYjE3YWIw
ZTI3MjgxNmExMzczZGQuLjY0ZTc3NWU3NWQwMmIxNDM4MjJkYTcxN2RkZTQ4MzZiMjMwODAyMzEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL1RocmVhZE1lc3NhZ2UuY3BwCisrKyBiL1NvdXJj
ZS9XVEYvd3RmL1RocmVhZE1lc3NhZ2UuY3BwCkBAIC0zNiw2ICszNiw5IEBACiAjaW5jbHVkZSA8
d3RmL0xvY2tlci5oPgogI2luY2x1ZGUgPHd0Zi90aHJlYWRzL1NpZ25hbHMuaD4KIAorI2lmIEhB
VkUoTUFDSF9FWENFUFRJT05TKQorI2luY2x1ZGUgPG1hY2gvdGhyZWFkX2FjdC5oPgorI2VuZGlm
CiAKIG5hbWVzcGFjZSBXVEYgewogCkBAIC04MywxMiArODYsMTIgQEAgdm9pZCBpbml0aWFsaXpl
VGhyZWFkTWVzc2FnZXMoKQogfQogCiBTVVBQUkVTU19BU0FOCi1NZXNzYWdlU3RhdHVzIHNlbmRN
ZXNzYWdlU2NvcGVkKFRocmVhZCYgdGhyZWFkLCBjb25zdCBUaHJlYWRNZXNzYWdlJiBtZXNzYWdl
KQorc3RhdGljIE1lc3NhZ2VTdGF0dXMgc2VuZE1lc3NhZ2VVc2luZ1NpZ25hbChUaHJlYWQmIHRo
cmVhZCwgY29uc3QgVGhyZWFkTWVzc2FnZSYgbWVzc2FnZSkKIHsKICAgICBjb25zdGV4cHIgU2ln
bmFsIHNpZ25hbCA9IFNpZ25hbDo6VXNyOwogICAgIHN0YXRpYyBzdGQ6Om9uY2VfZmxhZyBvbmNl
OwogICAgIHN0ZDo6Y2FsbF9vbmNlKG9uY2UsIFtdIHsKLSAgICAgICAgaW5zdGFsbFNpZ25hbEhh
bmRsZXIoc2lnbmFsLCBbXSAoaW50LCBzaWdpbmZvX3QqIGluZm8sIHZvaWQqIHVhcCkgeworICAg
ICAgICBpbnN0YWxsU2lnbmFsSGFuZGxlcihzaWduYWwsIFtdIChTaWduYWwsIFNpZ0luZm8mLCBQ
bGF0Zm9ybVJlZ2lzdGVycyYgcmVnaXN0ZXJzKSB7CiAgICAgICAgICAgICBUaHJlYWQqIHRocmVh
ZCA9IFRocmVhZDo6Y3VycmVudE1heUJlTnVsbCgpOwogCiAgICAgICAgICAgICBpZiAoIXRocmVh
ZCkgewpAQCAtOTgsNyArMTAxLDcgQEAgTWVzc2FnZVN0YXR1cyBzZW5kTWVzc2FnZVNjb3BlZChU
aHJlYWQmIHRocmVhZCwgY29uc3QgVGhyZWFkTWVzc2FnZSYgbWVzc2FnZSkKIAogICAgICAgICAg
ICAgLy8gTm9kZSBzaG91bGQgYmUgZGVsZXRlZCBpbiB0aGUgc2VuZGVyIHRocmVhZC4gRGVsZXRp
bmcgTm9kZXMgaW4gc2lnbmFsIGhhbmRsZXIgY2F1c2VzIGRlYWQgbG9jay4KICAgICAgICAgICAg
IHRocmVhZC0+dGhyZWFkTWVzc2FnZXMoKS5jb25zdW1lQWxsV2l0aE5vZGUoWyZdIChUaHJlYWRN
ZXNzYWdlRGF0YSogZGF0YSwgTm9kZSogbm9kZSkgewotICAgICAgICAgICAgICAgIGRhdGEtPm1l
c3NhZ2UoaW5mbywgc3RhdGljX2Nhc3Q8dWNvbnRleHRfdCo+KHVhcCkpOworICAgICAgICAgICAg
ICAgIGRhdGEtPm1lc3NhZ2UocmVnaXN0ZXJzKTsKICAgICAgICAgICAgICAgICAvLyBCeSBzZXR0
aW5nIHJhbiB2YXJpYWJsZSwgKDEpIHRoZSBzZW5kZXIgYWNrbm93bGVkZ2VzIHRoZSBjb21wbGV0
aW9uIGFuZAogICAgICAgICAgICAgICAgIC8vICgyKSBnZXRzIHRoZSBOb2RlIHRvIGJlIGRlbGV0
ZWQuCiAgICAgICAgICAgICAgICAgZGF0YS0+cmFuLnN0b3JlKG5vZGUpOwpAQCAtMTU2LDYgKzE1
OSw0MyBAQCBNZXNzYWdlU3RhdHVzIHNlbmRNZXNzYWdlU2NvcGVkKFRocmVhZCYgdGhyZWFkLCBj
b25zdCBUaHJlYWRNZXNzYWdlJiBtZXNzYWdlKQogICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFD
SEVEKCk7CiB9CiAKKyNpZiBIQVZFKE1BQ0hfRVhDRVBUSU9OUykKK3N0YXRpYyBNZXNzYWdlU3Rh
dHVzIHNlbmRNZXNzYWdlVXNpbmdNYWNoKFRocmVhZCYgdGhyZWFkLCBjb25zdCBUaHJlYWRNZXNz
YWdlJiBtZXNzYWdlKQoreworICAgIHN0YXRpYyBTdGF0aWNMb2NrIG1lc3NhZ2VMb2NrOworICAg
IGF1dG8gbG9ja2hvbGRlciA9IGhvbGRMb2NrKG1lc3NhZ2VMb2NrKTsKKworICAgIGF1dG8gcmVz
dWx0ID0gdGhyZWFkLnN1c3BlbmQoKTsKKyAgICBpZiAoIXJlc3VsdCkKKyAgICAgICAgcmV0dXJu
IE1lc3NhZ2VTdGF0dXM6OlRocmVhZEV4aXRlZDsKKworICAgIFBsYXRmb3JtUmVnaXN0ZXJzIHJl
Z2lzdGVyczsKKyAgICB0aHJlYWQuZ2V0UmVnaXN0ZXJzKHJlZ2lzdGVycyk7CisKKyAgICBtZXNz
YWdlKHJlZ2lzdGVycyk7CisKKyAgICB0aHJlYWQucmVzdW1lKCk7CisgICAgcmV0dXJuIE1lc3Nh
Z2VTdGF0dXM6Ok1lc3NhZ2VSYW47Cit9CisKK3N0YXRpYyBib29sIHVzZU1hY2ggPSBmYWxzZTsK
K3ZvaWQgZGVsaXZlck1lc3NhZ2VzVXNpbmdNYWNoKCkKK3sKKyAgICB1c2VNYWNoID0gdHJ1ZTsK
K30KKworI2VuZGlmIC8vIEhBVkUoTUFDSF9FWENFUFRJT05TKQorCitNZXNzYWdlU3RhdHVzIHNl
bmRNZXNzYWdlU2NvcGVkKFRocmVhZCYgdGhyZWFkLCBjb25zdCBUaHJlYWRNZXNzYWdlJiBtZXNz
YWdlKQoreworI2lmIEhBVkUoTUFDSF9FWENFUFRJT05TKQorICAgIGlmICh1c2VNYWNoKQorICAg
ICAgICByZXR1cm4gc2VuZE1lc3NhZ2VVc2luZ01hY2godGhyZWFkLCBtZXNzYWdlKTsKKyNlbmRp
ZgorICAgIHJldHVybiBzZW5kTWVzc2FnZVVzaW5nU2lnbmFsKHRocmVhZCwgbWVzc2FnZSk7Cit9
CisKKwogfSAvLyBuYW1lc3BhY2UgV1RGCiAKICNlbmRpZiAvLyBVU0UoUFRIUkVBRFMpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9UaHJlYWRNZXNzYWdlLmggYi9Tb3VyY2UvV1RGL3d0Zi9U
aHJlYWRNZXNzYWdlLmgKaW5kZXggMjY4YWRkNDM4NzZlNDE2NGZmMTEzNjVmY2RiNWFiN2E2MjJi
ZTk0ZC4uMGY3NDU1MTI5NDYzNzQ2NzdhY2YxYjcwZGM2NjIzNThhMzg0ZmQ2MCAxMDA2NDQKLS0t
IGEvU291cmNlL1dURi93dGYvVGhyZWFkTWVzc2FnZS5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL1Ro
cmVhZE1lc3NhZ2UuaApAQCAtMzYsNyArMzYsNyBAQCBuYW1lc3BhY2UgV1RGIHsKIHZvaWQgaW5p
dGlhbGl6ZVRocmVhZE1lc3NhZ2VzKCk7CiAKIGNsYXNzIFRocmVhZE1lc3NhZ2VEYXRhOwotdXNp
bmcgVGhyZWFkTWVzc2FnZSA9IFNjb3BlZExhbWJkYTx2b2lkKHNpZ2luZm9fdCosIHVjb250ZXh0
X3QqKT47Cit1c2luZyBUaHJlYWRNZXNzYWdlID0gU2NvcGVkTGFtYmRhPHZvaWQoUGxhdGZvcm1S
ZWdpc3RlcnMmKT47CiAKIGVudW0gY2xhc3MgTWVzc2FnZVN0YXR1cyB7CiAgICAgTWVzc2FnZVJh
biwKQEAgLTUxLDEwICs1MSwxNCBAQCBXVEZfRVhQT1JUX1BSSVZBVEUgTWVzc2FnZVN0YXR1cyBz
ZW5kTWVzc2FnZVNjb3BlZChUaHJlYWQmLCBjb25zdCBUaHJlYWRNZXNzYWdlJgogdGVtcGxhdGU8
dHlwZW5hbWUgRnVuY3Rvcj4KIE1lc3NhZ2VTdGF0dXMgc2VuZE1lc3NhZ2UoVGhyZWFkJiB0YXJn
ZXRUaHJlYWQsIGNvbnN0IEZ1bmN0b3ImIGZ1bmMpCiB7Ci0gICAgYXV0byBsYW1iZGEgPSBzY29w
ZWRMYW1iZGFSZWY8dm9pZChzaWdpbmZvX3QqLCB1Y29udGV4dF90Kik+KGZ1bmMpOworICAgIGF1
dG8gbGFtYmRhID0gc2NvcGVkTGFtYmRhUmVmPHZvaWQoUGxhdGZvcm1SZWdpc3RlcnMmKT4oZnVu
Yyk7CiAgICAgcmV0dXJuIHNlbmRNZXNzYWdlU2NvcGVkKHRhcmdldFRocmVhZCwgbGFtYmRhKTsK
IH0KIAorI2lmIEhBVkUoTUFDSF9FWENFUFRJT05TKQordm9pZCBkZWxpdmVyTWVzc2FnZXNVc2lu
Z01hY2goKTsKKyNlbmRpZgorCiB9IC8vIG5hbWVzcGFjZSBXVEYKIAogdXNpbmcgV1RGOjpzZW5k
TWVzc2FnZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL1RocmVhZGluZy5oIGIvU291cmNl
L1dURi93dGYvVGhyZWFkaW5nLmgKaW5kZXggZDJlNTM2ZGY3YTg2OTZkOGU2Yjk1YmE0M2UxNzNk
M2I1NTBiZjE2YS4uMzUxNGU4YzA5ZjBmYzk0ZDUzNGJlMmYzYjZlN2M0OTUwZTBiY2YwNSAxMDA2
NDQKLS0tIGEvU291cmNlL1dURi93dGYvVGhyZWFkaW5nLmgKKysrIGIvU291cmNlL1dURi93dGYv
VGhyZWFkaW5nLmgKQEAgLTEzOCw2ICsxMzgsMTAgQEAgcHVibGljOgogCiAjaWYgVVNFKFBUSFJF
QURTKQogICAgIExvY2tsZXNzQmFnPFRocmVhZE1lc3NhZ2VEYXRhKj4mIHRocmVhZE1lc3NhZ2Vz
KCkgeyByZXR1cm4gbV90aHJlYWRNZXNzYWdlczsgfQorCisjaWYgT1MoREFSV0lOKQorICAgIG1h
Y2hfcG9ydF90IG1hY2hUaHJlYWQoKSB7IHJldHVybiBtX3BsYXRmb3JtVGhyZWFkOyB9CisjZW5k
aWYKICNlbmRpZgogCiBwcm90ZWN0ZWQ6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9tYWMv
TWFjaEV4Y2VwdGlvbnMuZGVmcyBiL1NvdXJjZS9XVEYvd3RmL21hYy9NYWNoRXhjZXB0aW9ucy5k
ZWZzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjQyMDU3NDJhNGVkNTAwZjgwNjRmZWViNDk1NWE3Yzk3MGQ5OWFmMGIK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9tYWMvTWFjaEV4Y2VwdGlvbnMuZGVm
cwpAQCAtMCwwICsxLDI2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworI2luY2x1ZGUgPG1hY2gvbWFjaF9leGMuZGVmcz4KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XVEYvd3RmL3RocmVhZHMvU2lnbmFscy5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi90aHJlYWRzL1Np
Z25hbHMuY3BwCmluZGV4IDg1NWIyOGIzMTcyMTcyN2NmMWY0MzFhOTE4YTI1MWRjMmU2YTNkZmMu
LjdmMjQ3MDY1ZWVkNWMxZjBiMDM1MzhhMzgxYjU4OTMwNTA1ZTIyMjAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XVEYvd3RmL3RocmVhZHMvU2lnbmFscy5jcHAKKysrIGIvU291cmNlL1dURi93dGYvdGhy
ZWFkcy9TaWduYWxzLmNwcApAQCAtMjgsMjEgKzI4LDI3NSBAQAogCiAjaWYgVVNFKFBUSFJFQURT
KQogCisjaWYgSEFWRShNQUNIX0VYQ0VQVElPTlMpCitleHRlcm4gIkMiIHsKKyNpbmNsdWRlICJN
YWNoRXhjZXB0aW9uc1NlcnZlci5oIgorfTsKKyNlbmRpZgorCiAjaW5jbHVkZSA8Y3N0ZGlvPgog
I2luY2x1ZGUgPG11dGV4PgogI2luY2x1ZGUgPHNpZ25hbC5oPgorCisjaWYgSEFWRShNQUNIX0VY
Q0VQVElPTlMpCisjaW5jbHVkZSA8ZGlzcGF0Y2gvZGlzcGF0Y2guaD4KKyNpbmNsdWRlIDxtYWNo
L21hY2guaD4KKyNpbmNsdWRlIDxtYWNoL3RocmVhZF9hY3QuaD4KKyNlbmRpZgorCiAjaW5jbHVk
ZSA8d3RmL0F0b21pY3MuaD4KICNpbmNsdWRlIDx3dGYvRGF0YUxvZy5oPgorI2luY2x1ZGUgPHd0
Zi9IYXNoU2V0Lmg+CiAjaW5jbHVkZSA8d3RmL0xvY2tsZXNzQmFnLmg+CiAjaW5jbHVkZSA8d3Rm
L05ldmVyRGVzdHJveWVkLmg+CisjaW5jbHVkZSA8d3RmL1RocmVhZE1lc3NhZ2UuaD4KKyNpbmNs
dWRlIDx3dGYvVGhyZWFkaW5nLmg+CisKIAogbmFtZXNwYWNlIFdURiB7CiAKKyAgICAKIHN0YXRp
YyBMYXp5TmV2ZXJEZXN0cm95ZWQ8TG9ja2xlc3NCYWc8U2lnbmFsSGFuZGxlcj4+IGhhbmRsZXJz
W3N0YXRpY19jYXN0PHNpemVfdD4oU2lnbmFsOjpOdW1iZXJPZlNpZ25hbHMpXSA9IHsgfTsKLXN0
YXRpYyBzdHJ1Y3Qgc2lnYWN0aW9uIG9sZEFjdGlvbnNbc3RhdGljX2Nhc3Q8c2l6ZV90PihTaWdu
YWw6Ok51bWJlck9mU2lnbmFscyldOwogc3RhdGljIHN0ZDo6b25jZV9mbGFnIGluaXRpYWxpemVP
bmNlRmxhZ3Nbc3RhdGljX2Nhc3Q8c2l6ZV90PihTaWduYWw6Ok51bWJlck9mU2lnbmFscyldOwor
c3RhdGljIHN0cnVjdCBzaWdhY3Rpb24gb2xkQWN0aW9uc1tzdGF0aWNfY2FzdDxzaXplX3Q+KFNp
Z25hbDo6TnVtYmVyT2ZTaWduYWxzKV07CisKKyNpZiBIQVZFKE1BQ0hfRVhDRVBUSU9OUykKKy8v
IFlvdSBjYW4gcmVhZCBtb3JlIGFib3V0IG1hY2ggZXhjZXB0aW9ucyBoZXJlOgorLy8gaHR0cDov
L3d3dy5jcy5jbXUuZWR1L2Fmcy9jcy9wcm9qZWN0L21hY2gvcHVibGljL2RvYy91bnB1Ymxpc2hl
ZC9leGNlcHRpb24ucHMKKy8vIGFuZCB0aGUgTWFjaCBpbnRlcmZhY2UgR2VuZXJhdG9yIChNaUcp
IGhlcmU6CisvLyBodHRwOi8vd3d3LmNzLmNtdS5lZHUvYWZzL2NzL3Byb2plY3QvbWFjaC9wdWJs
aWMvZG9jL3VucHVibGlzaGVkL21pZy5wcworCitzdGF0aWMgbWFjaF9wb3J0X3QgZXhjZXB0aW9u
UG9ydDsKK3N0YXRpYyBjb25zdGV4cHIgc2l6ZV90IG1heE1lc3NhZ2VTaXplID0gMSAqIEtCOwor
CitzdGF0aWMgdm9pZCBzdGFydE1hY2hFeGNlcHRpb25IYW5kbGVyVGhyZWFkKCkKK3sKKyAgICBz
dGF0aWMgc3RkOjpvbmNlX2ZsYWcgb25jZTsKKyAgICBzdGQ6OmNhbGxfb25jZShvbmNlLCBbXSB7
CisgICAgICAgIGlmIChtYWNoX3BvcnRfYWxsb2NhdGUobWFjaF90YXNrX3NlbGYoKSwgTUFDSF9Q
T1JUX1JJR0hUX1JFQ0VJVkUsICZleGNlcHRpb25Qb3J0KSAhPSBLRVJOX1NVQ0NFU1MpCisgICAg
ICAgICAgICBDUkFTSCgpOworCisgICAgICAgIGlmIChtYWNoX3BvcnRfaW5zZXJ0X3JpZ2h0KG1h
Y2hfdGFza19zZWxmKCksIGV4Y2VwdGlvblBvcnQsIGV4Y2VwdGlvblBvcnQsIE1BQ0hfTVNHX1RZ
UEVfTUFLRV9TRU5EKSAhPSBLRVJOX1NVQ0NFU1MpCisgICAgICAgICAgICBDUkFTSCgpOworCisg
ICAgICAgIC8vIEl0J3Mgbm90IGNsZWFyIHRoYXQgdGhpcyBuZWVkcyB0byBiZSB0aGUgaGlnaCBw
cmlvcml0eSBxdWV1ZSBidXQgaXQgc2hvdWxkIGJlIHJhcmUgYW5kIGl0IG1pZ2h0IGJlCisgICAg
ICAgIC8vIGhhbmRsaW5nIGV4Y2VwdGlvbnMgZnJvbSBoaWdoIHByaW9yaXR5IHRocmVhZHMuIEFu
eXdheSwgb3VyIGhhbmRsZXJzIHNob3VsZCBiZSB2ZXJ5IGZhc3QgYW55d2F5IHNvIGl0J3MKKyAg
ICAgICAgLy8gcHJvYmFibHkgbm90IHRoZSBlbmQgb2YgdGhlIHdvcmxkIGlmIHdlIGhhbmRsZSBh
IGxvdyBwcmlvcml0eSBleGNlcHRpb24gb24gYSBoaWdoIHByaW9yaXR5IHF1ZXVlLgorICAgICAg
ICBkaXNwYXRjaF9xdWV1ZV90IHF1ZXVlID0gZGlzcGF0Y2hfZ2V0X2dsb2JhbF9xdWV1ZShESVNQ
QVRDSF9RVUVVRV9QUklPUklUWV9ISUdILCAwKTsKKyAgICAgICAgZGlzcGF0Y2hfc291cmNlX3Qg
c291cmNlID0gZGlzcGF0Y2hfc291cmNlX2NyZWF0ZShESVNQQVRDSF9TT1VSQ0VfVFlQRV9NQUNI
X1JFQ1YsIGV4Y2VwdGlvblBvcnQsIDAsIHF1ZXVlKTsKKyAgICAgICAgUkVMRUFTRV9BU1NFUlRf
V0lUSF9NRVNTQUdFKHNvdXJjZSwgIldlIG5lZWQgdG8gZW5zdXJlIG91ciBzb3VyY2Ugd2FzIGNy
ZWF0ZWQuIik7CisKKyAgICAgICAgLy8gV2Ugc2hvdWxkIG5ldmVyIGNhbmNlbCBvdXIgaGFuZGxl
ciBzaW5jZSBpdCdzIGEgcGVybWFuZW50IHRoaW5nIHNvIHdlIGRvbid0IGFkZCBhIGNhbmNlbCBo
YW5kbGVyLgorICAgICAgICBkaXNwYXRjaF9zb3VyY2Vfc2V0X2V2ZW50X2hhbmRsZXIoc291cmNl
LCBeeworICAgICAgICAgICAgLy8gdGhlIGxlYWtzIHRvb2wgd2lsbCBnZXQgbWFkIGF0IHVzIGlm
IHdlIGRvbid0IHByZXRlbmQgdG8gd2F0Y2ggdGhlIHNvdXJjZS4KKyAgICAgICAgICAgIFVOVVNF
RF9QQVJBTShzb3VyY2UpOworICAgICAgICAgICAgdW5pb24gTWVzc2FnZSB7CisgICAgICAgICAg
ICAgICAgbWFjaF9tc2dfaGVhZGVyX3QgaGVhZGVyOworICAgICAgICAgICAgICAgIGNoYXIgZGF0
YVttYXhNZXNzYWdlU2l6ZV07CisgICAgICAgICAgICB9OworICAgICAgICAgICAgTWVzc2FnZSBt
ZXNzYWdlSGVhZGVySW47CisgICAgICAgICAgICBNZXNzYWdlIG1lc3NhZ2VIZWFkZXJPdXQ7CisK
KyAgICAgICAgICAgIGtlcm5fcmV0dXJuX3QgbWVzc2FnZVJlc3VsdCA9IG1hY2hfbXNnKCZtZXNz
YWdlSGVhZGVySW4uaGVhZGVyLCBNQUNIX1JDVl9NU0csIDAsIG1heE1lc3NhZ2VTaXplLCBleGNl
cHRpb25Qb3J0LCBNQUNIX01TR19USU1FT1VUX05PTkUsIE1BQ0hfUE9SVF9OVUxMKTsKKyAgICAg
ICAgICAgIGlmIChtZXNzYWdlUmVzdWx0ID09IEtFUk5fU1VDQ0VTUykgeworICAgICAgICAgICAg
ICAgIGlmICghbWFjaF9leGNfc2VydmVyKCZtZXNzYWdlSGVhZGVySW4uaGVhZGVyLCAmbWVzc2Fn
ZUhlYWRlck91dC5oZWFkZXIpKQorICAgICAgICAgICAgICAgICAgICBDUkFTSCgpOworCisgICAg
ICAgICAgICAgICAgbWVzc2FnZVJlc3VsdCA9IG1hY2hfbXNnKCZtZXNzYWdlSGVhZGVyT3V0Lmhl
YWRlciwgTUFDSF9TRU5EX01TRywgbWVzc2FnZUhlYWRlck91dC5oZWFkZXIubXNnaF9zaXplLCAw
LCBtZXNzYWdlSGVhZGVyT3V0LmhlYWRlci5tc2doX2xvY2FsX3BvcnQsIDAsIE1BQ0hfUE9SVF9O
VUxMKTsKKyAgICAgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVChtZXNzYWdlUmVzdWx0ID09IEtF
Uk5fU1VDQ0VTUyk7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGRhdGFM
b2dMbigiRmFpbGVkIHRvIHJlY2VpdmUgbWFjaCBtZXNzYWdlIGR1ZSB0byAiLCBtYWNoX2Vycm9y
X3N0cmluZyhtZXNzYWdlUmVzdWx0KSk7CisgICAgICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlRf
Tk9UX1JFQUNIRUQoKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSk7CisKKyAgICAgICAgZGlz
cGF0Y2hfcmVzdW1lKHNvdXJjZSk7CisgICAgfSk7Cit9CisKK3N0YXRpYyBTaWduYWwgZnJvbU1h
Y2hFeGNlcHRpb24oZXhjZXB0aW9uX3R5cGVfdCB0eXBlKQoreworICAgIHN3aXRjaCAodHlwZSkg
eworICAgIGNhc2UgRVhDX0JBRF9BQ0NFU1M6IHJldHVybiBTaWduYWw6OlNlZ1Y7CisgICAgY2Fz
ZSBFWENfQkFEX0lOU1RSVUNUSU9OOiByZXR1cm4gU2lnbmFsOjpJbGw7CisgICAgY2FzZSBFWENf
QlJFQUtQT0lOVDogcmV0dXJuIFNpZ25hbDo6VHJhcDsKKyAgICBkZWZhdWx0OiBicmVhazsKKyAg
ICB9CisgICAgcmV0dXJuIFNpZ25hbDo6VW5rbm93bjsKK30KKworc3RhdGljIGV4Y2VwdGlvbl9t
YXNrX3QgdG9NYWNoTWFzayhTaWduYWwgc2lnbmFsKQoreworICAgIHN3aXRjaCAoc2lnbmFsKSB7
CisgICAgY2FzZSBTaWduYWw6OlNlZ1Y6IHJldHVybiBFWENfTUFTS19CQURfQUNDRVNTOworICAg
IGNhc2UgU2lnbmFsOjpJbGw6IHJldHVybiBFWENfTUFTS19CQURfSU5TVFJVQ1RJT047CisgICAg
Y2FzZSBTaWduYWw6OlRyYXA6IHJldHVybiBFWENfTUFTS19CUkVBS1BPSU5UOworICAgIGRlZmF1
bHQ6IGJyZWFrOworICAgIH0KKyAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworfQor
CitleHRlcm4gIkMiIHsKIAotc3RhdGljIHZvaWQganNjU2lnbmFsSGFuZGxlcihpbnQgc2lnLCBz
aWdpbmZvX3QqIGluZm8sIHZvaWQqIG1jb250ZXh0KQorLy8gV2UgbmVlZCB0byBpbXBsZW1lbnQg
c3R1YnMgZm9yIGNhdGNoX21hY2hfZXhjZXB0aW9uX3JhaXNlIGFuZCBjYXRjaF9tYWNoX2V4Y2Vw
dGlvbl9yYWlzZV9zdGF0ZV9pZGVudGl0eS4KKy8vIFRoZSBNaUcgZ2VuZXJhdGVkIGZpbGUgd2ls
bCBmYWlsIHRvIGxpbmsgb3RoZXJ3aXNlLCBldmVuIHRob3VnaCB3ZSBkb24ndCB1c2UgdGhlIGZ1
bmN0aW9ucy4gT25seSB0aGUKKy8vIGNhdGNoX21hY2hfZXhjZXB0aW9uX3JhaXNlX3N0YXRlIGZ1
bmN0aW9uIHNob3VsZCBiZSBjYWxsZWQgYmVjYXVzZSB3ZSBwYXNzIEVYQ0VQVElPTl9TVEFURSB0
bworLy8gdGhyZWFkX3NldF9leGNlcHRpb25fcG9ydHMuCitrZXJuX3JldHVybl90IGNhdGNoX21h
Y2hfZXhjZXB0aW9uX3JhaXNlKG1hY2hfcG9ydF90LCBtYWNoX3BvcnRfdCwgbWFjaF9wb3J0X3Qs
IGV4Y2VwdGlvbl90eXBlX3QsIG1hY2hfZXhjZXB0aW9uX2RhdGFfdCwgbWFjaF9tc2dfdHlwZV9u
dW1iZXJfdCkKK3sKKyAgICBkYXRhTG9nTG4oIldlIHNob3VsZCBub3QgaGF2ZSBjYWxsZWQgY2F0
Y2hfZXhjZXB0aW9uX3JhaXNlKCksIHBsZWFzZSBmaWxlIGEgYnVnIGF0IGJ1Z3Mud2Via2l0Lm9y
ZyIpOworICAgIHJldHVybiBLRVJOX0ZBSUxVUkU7Cit9CisKK2tlcm5fcmV0dXJuX3QgY2F0Y2hf
bWFjaF9leGNlcHRpb25fcmFpc2Vfc3RhdGVfaWRlbnRpdHkobWFjaF9wb3J0X3QsIG1hY2hfcG9y
dF90LCBtYWNoX3BvcnRfdCwgZXhjZXB0aW9uX3R5cGVfdCwgbWFjaF9leGNlcHRpb25fZGF0YV90
LCBtYWNoX21zZ190eXBlX251bWJlcl90LCBpbnQqLCB0aHJlYWRfc3RhdGVfdCwgbWFjaF9tc2df
dHlwZV9udW1iZXJfdCwgdGhyZWFkX3N0YXRlX3QsICBtYWNoX21zZ190eXBlX251bWJlcl90KikK
K3sKKyAgICBkYXRhTG9nTG4oIldlIHNob3VsZCBub3QgaGF2ZSBjYWxsZWQgY2F0Y2hfbWFjaF9l
eGNlcHRpb25fcmFpc2Vfc3RhdGVfaWRlbnRpdHksIHBsZWFzZSBmaWxlIGEgYnVnIGF0IGJ1Z3Mu
d2Via2l0Lm9yZyIpOworICAgIHJldHVybiBLRVJOX0ZBSUxVUkU7Cit9CisKK2tlcm5fcmV0dXJu
X3QgY2F0Y2hfbWFjaF9leGNlcHRpb25fcmFpc2Vfc3RhdGUoCisgICAgbWFjaF9wb3J0X3QgcG9y
dCwKKyAgICBleGNlcHRpb25fdHlwZV90IGV4Y2VwdGlvblR5cGUsCisgICAgY29uc3QgbWFjaF9l
eGNlcHRpb25fZGF0YV90IGV4Y2VwdGlvbkRhdGEsCisgICAgbWFjaF9tc2dfdHlwZV9udW1iZXJf
dCBkYXRhQ291bnQsCisgICAgaW50KiBzdGF0ZUZsYXZvciwKKyAgICBjb25zdCB0aHJlYWRfc3Rh
dGVfdCBpblN0YXRlLAorICAgIG1hY2hfbXNnX3R5cGVfbnVtYmVyX3QgaW5TdGF0ZUNvdW50LAor
ICAgIHRocmVhZF9zdGF0ZV90IG91dFN0YXRlLAorICAgIG1hY2hfbXNnX3R5cGVfbnVtYmVyX3Qq
IG91dFN0YXRlQ291bnQpCit7CisgICAgUkVMRUFTRV9BU1NFUlQocG9ydCA9PSBleGNlcHRpb25Q
b3J0KTsKKyAgICBTaWduYWwgc2lnbmFsID0gZnJvbU1hY2hFeGNlcHRpb24oZXhjZXB0aW9uVHlw
ZSk7CisgICAgUkVMRUFTRV9BU1NFUlQoc2lnbmFsICE9IFNpZ25hbDo6VW5rbm93bik7CisKKyAg
ICBtZW1jcHkob3V0U3RhdGUsIGluU3RhdGUsIGluU3RhdGVDb3VudCAqIHNpemVvZihpblN0YXRl
WzBdKSk7CisgICAgKm91dFN0YXRlQ291bnQgPSBpblN0YXRlQ291bnQ7CisKKyNpZiBDUFUoWDg2
XzY0KQorICAgIFJFTEVBU0VfQVNTRVJUKCpzdGF0ZUZsYXZvciA9PSB4ODZfVEhSRUFEX1NUQVRF
KTsKKyAgICBQbGF0Zm9ybVJlZ2lzdGVycyYgcmVnaXN0ZXJzID0gcmVpbnRlcnByZXRfY2FzdDx4
ODZfdGhyZWFkX3N0YXRlX3QqPihvdXRTdGF0ZSktPnV0cy50czY0OworI2VsaWYgQ1BVKFg4NikK
KyAgICBSRUxFQVNFX0FTU0VSVCgqc3RhdGVGbGF2b3IgPT0geDg2X1RIUkVBRF9TVEFURSk7Cisg
ICAgUGxhdGZvcm1SZWdpc3RlcnMmIHJlZ2lzdGVycyA9IHJlaW50ZXJwcmV0X2Nhc3Q8eDg2X3Ro
cmVhZF9zdGF0ZV90Kj4ob3V0U3RhdGUpLT51dHMudHMzMjsKKyNlbGlmIENQVShBUk02NCkKKyAg
ICBSRUxFQVNFX0FTU0VSVCgqc3RhdGVGbGF2b3IgPT0gQVJNX1RIUkVBRF9TVEFURSk7CisgICAg
UGxhdGZvcm1SZWdpc3RlcnMmIHJlZ2lzdGVycyA9IHJlaW50ZXJwcmV0X2Nhc3Q8YXJtX3VuaWZp
ZWRfdGhyZWFkX3N0YXRlKj4ob3V0U3RhdGUpLT50c182NDsKKyNlbGlmIENQVShBUk0pCisgICAg
UkVMRUFTRV9BU1NFUlQoKnN0YXRlRmxhdm9yID09IEFSTV9USFJFQURfU1RBVEUpOworICAgIFBs
YXRmb3JtUmVnaXN0ZXJzJiByZWdpc3RlcnMgPSByZWludGVycHJldF9jYXN0PGFybV91bmlmaWVk
X3RocmVhZF9zdGF0ZSo+KG91dFN0YXRlKS0+dHNfMzI7CisjZW5kaWYKKworICAgIFNpZ0luZm8g
aW5mbzsKKyAgICBpZiAoc2lnbmFsID09IFNpZ25hbDo6U2VnVikgeworICAgICAgICBBU1NFUlRf
VU5VU0VEKGRhdGFDb3VudCwgZGF0YUNvdW50ID09IDIpOworICAgICAgICBpbmZvLmZhdWx0aW5n
QWRkcmVzcyA9IHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KGV4Y2VwdGlvbkRhdGFbMV0pOworICAg
IH0KKworICAgIGJvb2wgZGlkSGFuZGxlID0gZmFsc2U7CisgICAgaGFuZGxlcnNbc3RhdGljX2Nh
c3Q8c2l6ZV90PihzaWduYWwpXS0+aXRlcmF0ZShbJl0gKGNvbnN0IFNpZ25hbEhhbmRsZXImIGhh
bmRsZXIpIHsKKyAgICAgICAgU2lnbmFsQWN0aW9uIGhhbmRsZXJSZXN1bHQgPSBoYW5kbGVyKHNp
Z25hbCwgaW5mbywgcmVnaXN0ZXJzKTsKKyAgICAgICAgZGlkSGFuZGxlIHw9IGhhbmRsZXJSZXN1
bHQgPT0gU2lnbmFsQWN0aW9uOjpIYW5kbGVkOworICAgIH0pOworCisgICAgaWYgKGRpZEhhbmRs
ZSkKKyAgICAgICAgcmV0dXJuIEtFUk5fU1VDQ0VTUzsKKyAgICByZXR1cm4gS0VSTl9GQUlMVVJF
OworfQorCit9OworCitzdGF0aWMgYm9vbCB1c2VNYWNoIHsgZmFsc2UgfTsKK3ZvaWQgaGFuZGxl
U2lnbmFsc1dpdGhNYWNoKCkKK3sKKyAgICBkZWxpdmVyTWVzc2FnZXNVc2luZ01hY2goKTsKKyAg
ICB1c2VNYWNoID0gdHJ1ZTsKK30KKworCitzdGF0aWMgU3RhdGljTG9jayB0aHJlYWRMb2NrOwor
ZXhjZXB0aW9uX21hc2tfdCBhY3RpdmVFeGNlcHRpb25zIHsgMCB9OworCitpbmxpbmUgdm9pZCBz
ZXRFeGNlcHRpb25Qb3J0cyhjb25zdCBBYnN0cmFjdExvY2tlciYsIFRocmVhZCogdGhyZWFkKQor
eworICAgIGtlcm5fcmV0dXJuX3QgcmVzdWx0ID0gdGhyZWFkX3NldF9leGNlcHRpb25fcG9ydHMo
dGhyZWFkLT5tYWNoVGhyZWFkKCksIGFjdGl2ZUV4Y2VwdGlvbnMsIGV4Y2VwdGlvblBvcnQsIEVY
Q0VQVElPTl9TVEFURSB8IE1BQ0hfRVhDRVBUSU9OX0NPREVTLCBNQUNISU5FX1RIUkVBRF9TVEFU
RSk7CisgICAgaWYgKHJlc3VsdCAhPSBLRVJOX1NVQ0NFU1MpIHsKKyAgICAgICAgZGF0YUxvZ0xu
KCJ0aHJlYWQgc2V0IHBvcnQgZmFpbGVkIGR1ZSB0byAiLCBtYWNoX2Vycm9yX3N0cmluZyhyZXN1
bHQpKTsKKyAgICAgICAgQ1JBU0goKTsKKyAgICB9Cit9CisKK2lubGluZSBIYXNoU2V0PFRocmVh
ZCo+JiBhY3RpdmVUaHJlYWRzKGNvbnN0IEFic3RyYWN0TG9ja2VyJikKK3sKKyAgICBzdGF0aWMg
TmV2ZXJEZXN0cm95ZWQ8SGFzaFNldDxUaHJlYWQqPj4gYWN0aXZlVGhyZWFkczsKKyAgICByZXR1
cm4gYWN0aXZlVGhyZWFkczsKK30KKwordm9pZCByZWdpc3RlclRocmVhZEZvck1hY2hFeGNlcHRp
b25IYW5kbGluZyhUaHJlYWQqIHRocmVhZCkKK3sKKyAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2Nr
KHRocmVhZExvY2spOworICAgIGF1dG8gcmVzdWx0ID0gYWN0aXZlVGhyZWFkcyhsb2NrZXIpLmFk
ZCh0aHJlYWQpOworCisgICAgaWYgKHJlc3VsdC5pc05ld0VudHJ5KQorICAgICAgICBzZXRFeGNl
cHRpb25Qb3J0cyhsb2NrZXIsIHRocmVhZCk7Cit9CisKK3ZvaWQgdW5yZWdpc3RlclRocmVhZEZv
ck1hY2hFeGNlcHRpb25IYW5kbGluZyhUaHJlYWQqIHRocmVhZCkKK3sKKyAgICBhdXRvIGxvY2tl
ciA9IGhvbGRMb2NrKHRocmVhZExvY2spOworICAgIGFjdGl2ZVRocmVhZHMobG9ja2VyKS5yZW1v
dmUodGhyZWFkKTsKK30KKworI2Vsc2UKK3N0YXRpYyBjb25zdGV4cHIgYm9vbCB1c2VNYWNoID0g
ZmFsc2U7CisjZW5kaWYgLy8gSEFWRShNQUNIX0VYQ0VQVElPTlMpCisKK3N0YXRpYyB2b2lkIGpz
Y1NpZ25hbEhhbmRsZXIoaW50LCBzaWdpbmZvX3QqLCB2b2lkKik7CisKK3ZvaWQgaW5zdGFsbFNp
Z25hbEhhbmRsZXIoU2lnbmFsIHNpZ25hbCwgU2lnbmFsSGFuZGxlciYmIGhhbmRsZXIpCit7Cisg
ICAgQVNTRVJUKHNpZ25hbCA8IFNpZ25hbDo6VW5rbm93bik7CisjaWYgSEFWRShNQUNIX0VYQ0VQ
VElPTlMpCisgICAgLy8gU2luY2UgbWFjaCBvbmx5IGhhcyBFWENfQkFEX0FDQ0VTUywgd2hpY2gg
Y292ZXJzIGJvdGggU2VnViBhbmQgQnVzLCB3ZSBhcmJpdGFyaWx5IGNob29zZSB0byBtYWtlCisg
ICAgLy8gbWFjaCBFWENfQkFEX0FDQ0VTU2VzIG1hcCB0byBTZWdWLgorICAgIC8vIEZJWE1FOiBX
ZSBzaG91bGQganVzdCB1c2UgYSBzaW5nbGUgU2lnbmFsOjpCYWRBY2Nlc3MgdmFsdWUgaW5zdGVh
ZCBvZiBTZWdWL0J1cy4KKyAgICAvLyBTZWU6IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xNzIwNjMKKyAgICBpZiAoc2lnbmFsID09IFNpZ25hbDo6QnVzICYmIHVzZU1h
Y2gpCisgICAgICAgIHJldHVybjsKKyAgICBBU1NFUlQoIXVzZU1hY2ggfHwgc2lnbmFsICE9IFNp
Z25hbDo6VXNyKTsKKworICAgIGlmICh1c2VNYWNoKQorICAgICAgICBzdGFydE1hY2hFeGNlcHRp
b25IYW5kbGVyVGhyZWFkKCk7CisjZW5kaWYKKworICAgIHN0ZDo6Y2FsbF9vbmNlKGluaXRpYWxp
emVPbmNlRmxhZ3Nbc3RhdGljX2Nhc3Q8c2l6ZV90PihzaWduYWwpXSwgWyZdIHsKKyAgICAgICAg
aGFuZGxlcnNbc3RhdGljX2Nhc3Q8c2l6ZV90PihzaWduYWwpXS5jb25zdHJ1Y3QoKTsKKworICAg
ICAgICBpZiAoIXVzZU1hY2gpIHsKKyAgICAgICAgICAgIHN0cnVjdCBzaWdhY3Rpb24gYWN0aW9u
OworICAgICAgICAgICAgYWN0aW9uLnNhX3NpZ2FjdGlvbiA9IGpzY1NpZ25hbEhhbmRsZXI7Cisg
ICAgICAgICAgICBhdXRvIHJlc3VsdCA9IHNpZ2ZpbGxzZXQoJmFjdGlvbi5zYV9tYXNrKTsKKyAg
ICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKCFyZXN1bHQpOworICAgICAgICAgICAgYWN0aW9uLnNh
X2ZsYWdzID0gU0FfU0lHSU5GTzsKKyAgICAgICAgICAgIHJlc3VsdCA9IHNpZ2FjdGlvbih0b1N5
c3RlbVNpZ25hbChzaWduYWwpLCAmYWN0aW9uLCAmb2xkQWN0aW9uc1tzdGF0aWNfY2FzdDxzaXpl
X3Q+KHNpZ25hbCldKTsKKyAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKCFyZXN1bHQpOworICAg
ICAgICB9CisKKyAgICB9KTsKKworICAgIGhhbmRsZXJzW3N0YXRpY19jYXN0PHNpemVfdD4oc2ln
bmFsKV0tPmFkZChXVEZNb3ZlKGhhbmRsZXIpKTsKKworI2lmIEhBVkUoTUFDSF9FWENFUFRJT05T
KQorICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2sodGhyZWFkTG9jayk7CisgICAgaWYgKHVzZU1h
Y2gpIHsKKyAgICAgICAgYWN0aXZlRXhjZXB0aW9ucyB8PSB0b01hY2hNYXNrKHNpZ25hbCk7CisK
KyAgICAgICAgZm9yIChUaHJlYWQqIHRocmVhZCA6IGFjdGl2ZVRocmVhZHMobG9ja2VyKSkKKyAg
ICAgICAgICAgIHNldEV4Y2VwdGlvblBvcnRzKGxvY2tlciwgdGhyZWFkKTsKKyAgICB9CisjZW5k
aWYKK30KKwordm9pZCBqc2NTaWduYWxIYW5kbGVyKGludCBzaWcsIHNpZ2luZm9fdCogaW5mbywg
dm9pZCogdWNvbnRleHQpCiB7CiAgICAgU2lnbmFsIHNpZ25hbCA9IGZyb21TeXN0ZW1TaWduYWwo
c2lnKTsKIApAQCAtNjIsMTAgKzMxNiwxNiBAQCBzdGF0aWMgdm9pZCBqc2NTaWduYWxIYW5kbGVy
KGludCBzaWcsIHNpZ2luZm9fdCogaW5mbywgdm9pZCogbWNvbnRleHQpCiAgICAgICAgIHJldHVy
bjsKICAgICB9CiAKKyAgICBTaWdJbmZvIHNpZ0luZm87CisgICAgaWYgKHNpZ25hbCA9PSBTaWdu
YWw6OlNlZ1YgfHwgc2lnbmFsID09IFNpZ25hbDo6QnVzKQorICAgICAgICBzaWdJbmZvLmZhdWx0
aW5nQWRkcmVzcyA9IGluZm8tPnNpX2FkZHI7CisKKyAgICBQbGF0Zm9ybVJlZ2lzdGVycyYgcmVn
aXN0ZXJzID0gcmVnaXN0ZXJzRnJvbVVDb250ZXh0KHJlaW50ZXJwcmV0X2Nhc3Q8dWNvbnRleHRf
dCo+KHVjb250ZXh0KSk7CisKICAgICBib29sIGRpZEhhbmRsZSA9IGZhbHNlOwogICAgIGJvb2wg
cmVzdG9yZURlZmF1bHRIYW5kbGVyID0gZmFsc2U7CiAgICAgaGFuZGxlcnNbc3RhdGljX2Nhc3Q8
c2l6ZV90PihzaWduYWwpXS0+aXRlcmF0ZShbJl0gKGNvbnN0IFNpZ25hbEhhbmRsZXImIGhhbmRs
ZXIpIHsKLSAgICAgICAgc3dpdGNoIChoYW5kbGVyKHNpZywgaW5mbywgbWNvbnRleHQpKSB7Cisg
ICAgICAgIHN3aXRjaCAoaGFuZGxlcihzaWduYWwsIHNpZ0luZm8sIHJlZ2lzdGVycykpIHsKICAg
ICAgICAgY2FzZSBTaWduYWxBY3Rpb246OkhhbmRsZWQ6CiAgICAgICAgICAgICBkaWRIYW5kbGUg
PSB0cnVlOwogICAgICAgICAgICAgYnJlYWs7CkBAIC04NSwxMyArMzQ1LDEzIEBAIHN0YXRpYyB2
b2lkIGpzY1NpZ25hbEhhbmRsZXIoaW50IHNpZywgc2lnaW5mb190KiBpbmZvLCB2b2lkKiBtY29u
dGV4dCkKICAgICBzdHJ1Y3Qgc2lnYWN0aW9uJiBvbGRBY3Rpb24gPSBvbGRBY3Rpb25zW3N0YXRp
Y19jYXN0PHNpemVfdD4oc2lnbmFsKV07CiAgICAgaWYgKHNpZ25hbCA9PSBTaWduYWw6OlVzcikg
ewogICAgICAgICBpZiAob2xkQWN0aW9uLnNhX3NpZ2FjdGlvbikKLSAgICAgICAgICAgIG9sZEFj
dGlvbi5zYV9zaWdhY3Rpb24oc2lnLCBpbmZvLCBtY29udGV4dCk7CisgICAgICAgICAgICBvbGRB
Y3Rpb24uc2Ffc2lnYWN0aW9uKHNpZywgaW5mbywgdWNvbnRleHQpOwogICAgICAgICByZXR1cm47
CiAgICAgfQogCiAgICAgaWYgKCFkaWRIYW5kbGUpIHsKICAgICAgICAgaWYgKG9sZEFjdGlvbi5z
YV9zaWdhY3Rpb24pIHsKLSAgICAgICAgICAgIG9sZEFjdGlvbi5zYV9zaWdhY3Rpb24oc2lnLCBp
bmZvLCBtY29udGV4dCk7CisgICAgICAgICAgICBvbGRBY3Rpb24uc2Ffc2lnYWN0aW9uKHNpZywg
aW5mbywgdWNvbnRleHQpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKQEAgLTEw
MCwyNCArMzYwLDYgQEAgc3RhdGljIHZvaWQganNjU2lnbmFsSGFuZGxlcihpbnQgc2lnLCBzaWdp
bmZvX3QqIGluZm8sIHZvaWQqIG1jb250ZXh0KQogICAgIH0KIH0KIAotdm9pZCBpbnN0YWxsU2ln
bmFsSGFuZGxlcihTaWduYWwgc2lnbmFsLCBTaWduYWxIYW5kbGVyJiYgaGFuZGxlcikKLXsKLSAg
ICBBU1NFUlQoc2lnbmFsIDwgU2lnbmFsOjpVbmtub3duKTsKLSAgICBzdGQ6OmNhbGxfb25jZShp
bml0aWFsaXplT25jZUZsYWdzW3N0YXRpY19jYXN0PHNpemVfdD4oc2lnbmFsKV0sIFsmXSB7Ci0g
ICAgICAgIGhhbmRsZXJzW3N0YXRpY19jYXN0PHNpemVfdD4oc2lnbmFsKV0uY29uc3RydWN0KCk7
Ci0KLSAgICAgICAgc3RydWN0IHNpZ2FjdGlvbiBhY3Rpb247Ci0gICAgICAgIGFjdGlvbi5zYV9z
aWdhY3Rpb24gPSBqc2NTaWduYWxIYW5kbGVyOwotICAgICAgICBhdXRvIHJlc3VsdCA9IHNpZ2Zp
bGxzZXQoJmFjdGlvbi5zYV9tYXNrKTsKLSAgICAgICAgUkVMRUFTRV9BU1NFUlQoIXJlc3VsdCk7
Ci0gICAgICAgIGFjdGlvbi5zYV9mbGFncyA9IFNBX1NJR0lORk87Ci0gICAgICAgIHJlc3VsdCA9
IHNpZ2FjdGlvbih0b1N5c3RlbVNpZ25hbChzaWduYWwpLCAmYWN0aW9uLCAmb2xkQWN0aW9uc1tz
dGF0aWNfY2FzdDxzaXplX3Q+KHNpZ25hbCldKTsKLSAgICAgICAgUkVMRUFTRV9BU1NFUlQoIXJl
c3VsdCk7Ci0gICAgfSk7Ci0KLSAgICBoYW5kbGVyc1tzdGF0aWNfY2FzdDxzaXplX3Q+KHNpZ25h
bCldLT5hZGQoV1RGTW92ZShoYW5kbGVyKSk7Ci19Ci0KIH0gLy8gbmFtZXNwYWNlIFdURgogCiAj
ZW5kaWYgLy8gVVNFKFBUSFJFQURTKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvdGhyZWFk
cy9TaWduYWxzLmggYi9Tb3VyY2UvV1RGL3d0Zi90aHJlYWRzL1NpZ25hbHMuaAppbmRleCBmMjlk
NGRkYjdlOGRmZGJlZjQ3OWMxZWQ5NzdhYmJlZmU2YTFjZjY2Li5mNGJiNTMwNWE0YWUzOWNhMWFh
MzliMTMxZGIzYWVmMmJkYjEwMzBhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi90aHJlYWRz
L1NpZ25hbHMuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi90aHJlYWRzL1NpZ25hbHMuaApAQCAtMjks
NiArMjksNyBAQAogCiAjaW5jbHVkZSA8c2lnbmFsLmg+CiAjaW5jbHVkZSA8d3RmL0Z1bmN0aW9u
Lmg+CisjaW5jbHVkZSA8d3RmL1BsYXRmb3JtUmVnaXN0ZXJzLmg+CiAKIG5hbWVzcGFjZSBXVEYg
ewogCkBAIC03OSw3ICs4MCwxMSBAQCBlbnVtIGNsYXNzIFNpZ25hbEFjdGlvbiB7CiAgICAgRm9y
Y2VEZWZhdWx0CiB9OwogCi11c2luZyBTaWduYWxIYW5kbGVyID0gRnVuY3Rpb248U2lnbmFsQWN0
aW9uKGludCwgc2lnaW5mb190Kiwgdm9pZCopPjsKK3N0cnVjdCBTaWdJbmZvIHsKKyAgICB2b2lk
KiBmYXVsdGluZ0FkZHJlc3MgeyAwIH07Cit9OworCit1c2luZyBTaWduYWxIYW5kbGVyID0gRnVu
Y3Rpb248U2lnbmFsQWN0aW9uKFNpZ25hbCwgU2lnSW5mbyYsIFBsYXRmb3JtUmVnaXN0ZXJzJik+
OwogCiAvLyBDYWxsIHRoaXMgbWV0aG9kIHdoZW5ldmVyIHlvdSB3YW50IHRvIGluc3RhbGwgYSBz
aWduYWwgaGFuZGxlci4gSXQncyBvayB0byBjYWxsIHRoaXMgZnVuY3Rpb24gbGF6aWx5LgogLy8g
Tm90ZTogWW91ciBzaWduYWwgaGFuZGxlciB3aWxsIGJlIGNhbGxlZCBldmVyeSB0aW1lIHRoZSBo
YW5kbGVyIGZvciB0aGUgZGVzaXJlZCBzaWduYWwgaXMgY2FsbGVkLgpAQCAtODcsOSArOTIsMjUg
QEAgdXNpbmcgU2lnbmFsSGFuZGxlciA9IEZ1bmN0aW9uPFNpZ25hbEFjdGlvbihpbnQsIHNpZ2lu
Zm9fdCosIHZvaWQqKT47CiAvLyBUaGlzIGZ1bmN0aW9uIGlzIGN1cnJlbnRseSBhIG9uZSB3YXkg
c3RyZWV0IGkuZS4gb25jZSBpbnN0YWxsZWQsIGEgc2lnbmFsIGhhbmRsZXIgY2Fubm90IGJlIHVu
aW5zdGFsbGVkLgogV1RGX0VYUE9SVF9QUklWQVRFIHZvaWQgaW5zdGFsbFNpZ25hbEhhbmRsZXIo
U2lnbmFsLCBTaWduYWxIYW5kbGVyJiYpOwogCisKKyNpZiBIQVZFKE1BQ0hfRVhDRVBUSU9OUykK
K2NsYXNzIFRocmVhZDsKK3ZvaWQgcmVnaXN0ZXJUaHJlYWRGb3JNYWNoRXhjZXB0aW9uSGFuZGxp
bmcoVGhyZWFkKik7Cit2b2lkIHVucmVnaXN0ZXJUaHJlYWRGb3JNYWNoRXhjZXB0aW9uSGFuZGxp
bmcoVGhyZWFkKik7CisKK3ZvaWQgaGFuZGxlU2lnbmFsc1dpdGhNYWNoKCk7CisjZW5kaWYgLy8g
SEFWRShNQUNIX0VYQ0VQVElPTlMpCisKIH0gLy8gbmFtZXNwYWNlIFdURgogCisjaWYgSEFWRShN
QUNIX0VYQ0VQVElPTlMpCit1c2luZyBXVEY6OnJlZ2lzdGVyVGhyZWFkRm9yTWFjaEV4Y2VwdGlv
bkhhbmRsaW5nOwordXNpbmcgV1RGOjp1bnJlZ2lzdGVyVGhyZWFkRm9yTWFjaEV4Y2VwdGlvbkhh
bmRsaW5nOwordXNpbmcgV1RGOjpoYW5kbGVTaWduYWxzV2l0aE1hY2g7CisjZW5kaWYgLy8gSEFW
RShNQUNIX0VYQ0VQVElPTlMpCisKIHVzaW5nIFdURjo6U2lnbmFsOwordXNpbmcgV1RGOjpTaWdJ
bmZvOwogdXNpbmcgV1RGOjp0b1N5c3RlbVNpZ25hbDsKIHVzaW5nIFdURjo6ZnJvbVN5c3RlbVNp
Z25hbDsKIHVzaW5nIFdURjo6U2lnbmFsQWN0aW9uOwpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdl
TG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IDE1MGFlOTNkZDlhYWJhYWM3OGZhNWFiYTBlYWQw
MWZmZjhiYWMxNGQuLjljY2Q5MzJiMWJjNmQzMDI1ZmI2ODhlZWRjMTUyNmRhOGI4YjZmYmUgMTAw
NjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyAr
MSwxNCBAQAorMjAxNy0wNi0wMSAgS2VpdGggTWlsbGVyICA8a2VpdGhfbWlsbGVyQGFwcGxlLmNv
bT4KKworICAgICAgICBVbmRvIHJvbGxvdXQgaW4gcjIxNzYzOCB3aXRoIGJ1ZyBmaXgKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3MjgyNAorCisgICAg
ICAgIFVucmV2aWV3ZWQsIHJlbGFuZCBwYXRjaCB3aXRoIHVudXNlZCBzZXRfc3RhdGUgY29kZSBy
ZW1vdmVkLgorCisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvVGhyZWFkTWVzc2Fn
ZXMuY3BwOgorICAgICAgICAocnVuVGhyZWFkTWVzc2FnZVRlc3QpOgorICAgICAgICAoVEVTVCk6
CisKIDIwMTctMDYtMDEgIEpvbmF0aGFuIEJlZGFyZCAgPGpiZWRhcmRAYXBwbGUuY29tPgogCiAg
ICAgICAgIHdlYmtpdHB5OiBEbyBub3Qgc2VuZCAwIG9yIC0xIGFzIGEgcGlkIHRvIGtpbGxfcHJv
Y2VzcwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvVGhyZWFkTWVz
c2FnZXMuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvVGhyZWFkTWVzc2FnZXMu
Y3BwCmluZGV4IGQ2M2U5YmYxZTc1MDY4YjZjMWE3ZTdlNmU4YjY3YzRlYjA1MTU4ODIuLmU2YTU3
ODk0YmI1MTZmZTFjZTcxM2QwN2JmMThmMDcwNmVmYTkzN2MgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdHMvV1RGL1RocmVhZE1lc3NhZ2VzLmNwcAorKysgYi9Ub29scy9UZXN0
V2ViS2l0QVBJL1Rlc3RzL1dURi9UaHJlYWRNZXNzYWdlcy5jcHAKQEAgLTUwLDcgKzUwLDcgQEAg
c3RhdGljIHZvaWQgcnVuVGhyZWFkTWVzc2FnZVRlc3QodW5zaWduZWQgbnVtU2VuZGVycywgdW5z
aWduZWQgbnVtTWVzc2FnZXMpCiAgICAgZm9yICh1bnNpZ25lZCBzZW5kZXJJRCA9IDA7IHNlbmRl
cklEIDwgbnVtU2VuZGVyczsgKytzZW5kZXJJRCkgewogICAgICAgICBzZW5kZXJUaHJlYWRzW3Nl
bmRlcklEXSA9IFRocmVhZDo6Y3JlYXRlKCJUaHJlYWRNZXNzYWdlIHNlbmRlciIsIFtzZW5kZXJJ
RCwgbnVtTWVzc2FnZXMsIHJlY2VpdmVyVGhyZWFkLCAmbWVzc2FnZXNSdW4sICZoYW5kbGVyc1J1
bl0gKCkgewogICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG51bU1lc3NhZ2Vz
OyArK2kpIHsKLSAgICAgICAgICAgICAgICBhdXRvIHJlc3VsdCA9IHNlbmRNZXNzYWdlKCpyZWNl
aXZlclRocmVhZC5nZXQoKSwgW3NlbmRlcklELCAmaGFuZGxlcnNSdW5dIChzaWdpbmZvX3QqLCB1
Y29udGV4dF90KikgeworICAgICAgICAgICAgICAgIGF1dG8gcmVzdWx0ID0gc2VuZE1lc3NhZ2Uo
KnJlY2VpdmVyVGhyZWFkLmdldCgpLCBbc2VuZGVySUQsICZoYW5kbGVyc1J1bl0gKFBsYXRmb3Jt
UmVnaXN0ZXJzJikgewogICAgICAgICAgICAgICAgICAgICBoYW5kbGVyc1J1bltzZW5kZXJJRF0r
KzsKICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgICBFWFBFQ1RfVFJVRShyZXN1
bHQgPT0gV1RGOjpNZXNzYWdlU3RhdHVzOjpNZXNzYWdlUmFuKTsKQEAgLTk1LDcgKzk1LDcgQEAg
cHVibGljOgogVEVTVChUaHJlYWRNZXNzYWdlLCBTaWduYWxzV29ya09uRXhpdCkKIHsKICAgICBz
dGF0aWMgYm9vbCBoYW5kbGVyUmFuID0gZmFsc2U7Ci0gICAgaW5zdGFsbFNpZ25hbEhhbmRsZXIo
U2lnbmFsOjpVc3IsIFtdIChpbnQsIHNpZ2luZm9fdCosIHZvaWQqKSAtPiBTaWduYWxBY3Rpb24g
eworICAgIGluc3RhbGxTaWduYWxIYW5kbGVyKFNpZ25hbDo6VXNyLCBbXSAoU2lnbmFsLCBTaWdJ
bmZvJiwgUGxhdGZvcm1SZWdpc3RlcnMmKSAtPiBTaWduYWxBY3Rpb24gewogICAgICAgICBkYXRh
TG9nTG4oImhlcmUiKTsKICAgICAgICAgaGFuZGxlclJhbiA9IHRydWU7CiAgICAgICAgIHJldHVy
biBTaWduYWxBY3Rpb246OkhhbmRsZWQ7Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>