<?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>43685</bug_id>
          
          <creation_ts>2010-08-07 23:55:49 -0700</creation_ts>
          <short_desc>REGRESSION(r64938): Did not compile on several ports (Requested by abarth on #webkit).</short_desc>
          <delta_ts>2010-08-08 00:22:20 -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>528+ (Nightly build)</version>
          <rep_platform>Other</rep_platform>
          <op_sys>OS X 10.5</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="WebKit Review Bot">webkit.review.bot</reporter>
          <assigned_to name="WebKit Review Bot">webkit.review.bot</assigned_to>
          <cc>eric</cc>
    
    <cc>ggaren</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>261845</commentid>
    <comment_count>0</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-08-07 23:55:49 -0700</bug_when>
    <thetext>http://trac.webkit.org/changeset/64938 broke the build:
Did not compile on several ports (Requested by abarth on #webkit).

This is an automatic bug report generated by the sheriff-bot. If this bug
report was created because of a flaky test, please file a bug for the flaky
test (if we don&apos;t already have one on file) and dup this bug against that bug
so that we can track how often these flaky tests case pain.

&quot;Only you can prevent forest fires.&quot; -- Smokey the Bear</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>261846</commentid>
    <comment_count>1</comment_count>
      <attachid>63838</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-08-07 23:55:58 -0700</bug_when>
    <thetext>Created attachment 63838
ROLLOUT of r64938

Any committer can land this patch automatically by marking it commit-queue+.  The commit-queue will build and test the patch before landing to ensure that the rollout will be successful.  This process takes approximately 15 minutes.

If you would like to land the rollout faster, you can use the following command:

  webkit-patch land-attachment ATTACHMENT_ID --ignore-builders

where ATTACHMENT_ID is the ID of this attachment.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>261849</commentid>
    <comment_count>2</comment_count>
      <attachid>63838</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-08-08 00:22:15 -0700</bug_when>
    <thetext>Comment on attachment 63838
ROLLOUT of r64938

Clearing flags on attachment: 63838

Committed r64943: &lt;http://trac.webkit.org/changeset/64943&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>261850</commentid>
    <comment_count>3</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-08-08 00:22:20 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>63838</attachid>
            <date>2010-08-07 23:55:58 -0700</date>
            <delta_ts>2010-08-08 00:22:15 -0700</delta_ts>
            <desc>ROLLOUT of r64938</desc>
            <filename>bug-43685-20100808065556.patch</filename>
            <type>text/plain</type>
            <size>58451</size>
            <attacher name="WebKit Review Bot">webkit.review.bot</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0phdmFTY3JpcHRDb3JlL0FuZHJvaWQubWsgYi9KYXZhU2NyaXB0Q29yZS9B
bmRyb2lkLm1rCmluZGV4IDBjYzExYmZhY2I0MjQ0YmJhZjZlYzhmYzU4M2E4NzNkNDkyOGM0MTku
LjhkZDUzYzE5MzgxMWMwOGI0ZjNjOWZiNjRkNDIzZmNlMWM2ZGIzNjYgMTAwNjQ0Ci0tLSBhL0ph
dmFTY3JpcHRDb3JlL0FuZHJvaWQubWsKKysrIGIvSmF2YVNjcmlwdENvcmUvQW5kcm9pZC5tawpA
QCAtNTIsNyArNTIsNiBAQCBMT0NBTF9TUkNfRklMRVMgOj0gXAogCWppdC9KSVRBcml0aG1ldGlj
LmNwcCBcCiAJaml0L0pJVENhbGwuY3BwIFwKIAlqaXQvSklUQ2FsbDMyXzY0LmNwcCBcCi0Jaml0
L0pJVE1hcmtPYmplY3RzLmNwcCBcCiAJaml0L0pJVE9wY29kZXMuY3BwIFwKIAlqaXQvSklUUHJv
cGVydHlBY2Nlc3MuY3BwIFwKIAlqaXQvSklUU3R1YnMuY3BwIFwKZGlmZiAtLWdpdCBhL0phdmFT
Y3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0IGIvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQK
aW5kZXggZmU3MjZkMjUyMTQ0MDg1YjcyNGM5ZmJjNDE0ZTllYTE4MGJlMjY0Yy4uYTk0NDM2MzIw
YzMxM2M5YjMxOTEwNzliYTE5ZjVjODdmNDA4OWM3MiAxMDA2NDQKLS0tIGEvSmF2YVNjcmlwdENv
cmUvQ01ha2VMaXN0cy50eHQKKysrIGIvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQKQEAg
LTU1LDcgKzU1LDYgQEAgU0VUKEphdmFTY3JpcHRDb3JlX1NPVVJDRVMKICAgICBqaXQvSklUQ2Fs
bDMyXzY0LmNwcAogICAgIGppdC9KSVRDYWxsLmNwcAogICAgIGppdC9KSVQuY3BwCi0gICAgaml0
L0pJVE1hcmtPYmplY3RzLmNwcAogICAgIGppdC9KSVRPcGNvZGVzMzJfNjQuY3BwCiAgICAgaml0
L0pJVE9wY29kZXMuY3BwCiAgICAgaml0L0pJVFByb3BlcnR5QWNjZXNzMzJfNjQuY3BwCmRpZmYg
LS1naXQgYS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cgYi9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VM
b2cKaW5kZXggYjI1NjNjODVmY2U2YzI3NGEzOWI1NDYwN2JkMDE0MzBiOTBkMTI0Yi4uMzE2ZTk0
NTM3NzBkMzIxZmYwZDk1MDYwMjE5ZmFhYmJhZGQ2YTY1YiAxMDA2NDQKLS0tIGEvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nCisrKyBiL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsx
LDYxIEBACisyMDEwLTA4LTA3ICBTaGVyaWZmIEJvdCAgPHdlYmtpdC5yZXZpZXcuYm90QGdtYWls
LmNvbT4KKworICAgICAgICBVbnJldmlld2VkLCByb2xsaW5nIG91dCByNjQ5MzguCisgICAgICAg
IGh0dHA6Ly90cmFjLndlYmtpdC5vcmcvY2hhbmdlc2V0LzY0OTM4CisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00MzY4NQorCisgICAgICAgIERpZCBub3Qg
Y29tcGlsZSBvbiBzZXZlcmFsIHBvcnRzIChSZXF1ZXN0ZWQgYnkgYWJhcnRoIG9uCisgICAgICAg
ICN3ZWJraXQpLgorCisgICAgICAgICogQW5kcm9pZC5tazoKKyAgICAgICAgKiBDTWFrZUxpc3Rz
LnR4dDoKKyAgICAgICAgKiBHTlVtYWtlZmlsZS5hbToKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29y
ZS5neXBpOgorICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnBybzoKKyAgICAgICAgKiBKYXZhU2Ny
aXB0Q29yZS52Y3Byb2ovSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmNwcm9qOgorICAg
ICAgICAqIEphdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAg
ICogYXNzZW1ibGVyL0Fic3RyYWN0TWFjcm9Bc3NlbWJsZXIuaDoKKyAgICAgICAgKiBhc3NlbWJs
ZXIvTWFjcm9Bc3NlbWJsZXIuaDoKKyAgICAgICAgKiBhc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJY
ODYuaDoKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJYODY6OmxvYWQzMik6CisgICAgICAg
IChKU0M6Ok1hY3JvQXNzZW1ibGVyWDg2OjpzdG9yZTMyKToKKyAgICAgICAgKiBhc3NlbWJsZXIv
WDg2QXNzZW1ibGVyLmg6CisgICAgICAgIChKU0M6Olg4NkFzc2VtYmxlcjo6bW92bF9ybSk6Cisg
ICAgICAgIChKU0M6Olg4NkFzc2VtYmxlcjo6bW92bF9tcik6CisgICAgICAgICogYnl0ZWNvZGUv
Q29kZUJsb2NrLmNwcDoKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjptYXJrQWdncmVnYXRlKToK
KyAgICAgICAgKiBieXRlY29kZS9JbnN0cnVjdGlvbi5oOgorICAgICAgICAoSlNDOjpQb2x5bW9y
cGhpY0FjY2Vzc1N0cnVjdHVyZUxpc3Q6OlBvbHltb3JwaGljU3R1YkluZm86Oik6CisgICAgICAg
IChKU0M6OlBvbHltb3JwaGljQWNjZXNzU3RydWN0dXJlTGlzdDo6UG9seW1vcnBoaWNTdHViSW5m
bzo6c2V0KToKKyAgICAgICAgKEpTQzo6UG9seW1vcnBoaWNBY2Nlc3NTdHJ1Y3R1cmVMaXN0OjpQ
b2x5bW9ycGhpY0FjY2Vzc1N0cnVjdHVyZUxpc3QpOgorICAgICAgICAqIGJ5dGVjb2RlL1N0cnVj
dHVyZVN0dWJJbmZvLmNwcDoKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlU3R1YkluZm86OmRlcmVm
KToKKyAgICAgICAgKiBieXRlY29kZS9TdHJ1Y3R1cmVTdHViSW5mby5oOgorICAgICAgICAoSlND
OjpTdHJ1Y3R1cmVTdHViSW5mbzo6aW5pdEdldEJ5SWRQcm90byk6CisgICAgICAgIChKU0M6OlN0
cnVjdHVyZVN0dWJJbmZvOjppbml0R2V0QnlJZENoYWluKToKKyAgICAgICAgKEpTQzo6U3RydWN0
dXJlU3R1YkluZm86Oik6CisgICAgICAgICogaml0L0pJVC5oOgorICAgICAgICAqIGppdC9KSVRN
YXJrT2JqZWN0cy5jcHA6IFJlbW92ZWQuCisgICAgICAgICogaml0L0pJVFByb3BlcnR5QWNjZXNz
LmNwcDoKKyAgICAgICAgKEpTQzo6SklUOjpjb21waWxlR2V0RGlyZWN0T2Zmc2V0KToKKyAgICAg
ICAgKEpTQzo6SklUOjp0ZXN0UHJvdG90eXBlKToKKyAgICAgICAgKEpTQzo6SklUOjpwcml2YXRl
Q29tcGlsZVB1dEJ5SWRUcmFuc2l0aW9uKToKKyAgICAgICAgKEpTQzo6SklUOjpwcml2YXRlQ29t
cGlsZUdldEJ5SWRQcm90byk6CisgICAgICAgIChKU0M6OkpJVDo6cHJpdmF0ZUNvbXBpbGVHZXRC
eUlkUHJvdG9MaXN0KToKKyAgICAgICAgKEpTQzo6SklUOjpwcml2YXRlQ29tcGlsZUdldEJ5SWRD
aGFpbkxpc3QpOgorICAgICAgICAoSlNDOjpKSVQ6OnByaXZhdGVDb21waWxlR2V0QnlJZENoYWlu
KToKKyAgICAgICAgKiBqaXQvSklUUHJvcGVydHlBY2Nlc3MzMl82NC5jcHA6CisgICAgICAgIChK
U0M6OkpJVDo6Y29tcGlsZUdldERpcmVjdE9mZnNldCk6CisgICAgICAgIChKU0M6OkpJVDo6dGVz
dFByb3RvdHlwZSk6CisgICAgICAgIChKU0M6OkpJVDo6cHJpdmF0ZUNvbXBpbGVQdXRCeUlkVHJh
bnNpdGlvbik6CisgICAgICAgIChKU0M6OkpJVDo6cHJpdmF0ZUNvbXBpbGVHZXRCeUlkUHJvdG8p
OgorICAgICAgICAoSlNDOjpKSVQ6OnByaXZhdGVDb21waWxlR2V0QnlJZFByb3RvTGlzdCk6Cisg
ICAgICAgIChKU0M6OkpJVDo6cHJpdmF0ZUNvbXBpbGVHZXRCeUlkQ2hhaW5MaXN0KToKKyAgICAg
ICAgKEpTQzo6SklUOjpwcml2YXRlQ29tcGlsZUdldEJ5SWRDaGFpbik6CisgICAgICAgICogaml0
L0pJVFN0dWJzLmNwcDoKKyAgICAgICAgKEpTQzo6c2V0dXBQb2x5bW9ycGhpY1Byb3RvTGlzdCk6
CisgICAgICAgICogd3RmL1BsYXRmb3JtLmg6CisKIDIwMTAtMDgtMDcgIE5hdGhhbiBMYXdyZW5j
ZSAgPG5sYXdyZW5jZUBhcHBsZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgR2VvZmZyZXkg
R2FyZW4uCmRpZmYgLS1naXQgYS9KYXZhU2NyaXB0Q29yZS9HTlVtYWtlZmlsZS5hbSBiL0phdmFT
Y3JpcHRDb3JlL0dOVW1ha2VmaWxlLmFtCmluZGV4IDgyYmNiNTkxYTRkYTAzZGEyMTBkNzBiYThm
ZDI2NTE2NDRmMmI5YjAuLjJlYWQ4ZTAwODExMGIzNTdkOWM3ZmI0ZTRiMmVhNDYwYzA2YmQxNzIg
MTAwNjQ0Ci0tLSBhL0phdmFTY3JpcHRDb3JlL0dOVW1ha2VmaWxlLmFtCisrKyBiL0phdmFTY3Jp
cHRDb3JlL0dOVW1ha2VmaWxlLmFtCkBAIC0xNjUsNyArMTY1LDYgQEAgamF2YXNjcmlwdGNvcmVf
c291cmNlcyArPSBcCiAJSmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAgXAogCUphdmFTY3JpcHRD
b3JlL2ppdC9KSVQuaCBcCiAJSmF2YVNjcmlwdENvcmUvaml0L0pJVElubGluZU1ldGhvZHMuaCBc
Ci0JSmF2YVNjcmlwdENvcmUvaml0L0pJVE1hcmtPYmplY3RzLmNwcCBcCiAJSmF2YVNjcmlwdENv
cmUvaml0L0pJVE9wY29kZXMzMl82NC5jcHAgXAogCUphdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNv
ZGVzLmNwcCBcCiAJSmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNzMzJfNjQuY3Bw
IFwKZGlmZiAtLWdpdCBhL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLmd5cGkgYi9KYXZh
U2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS5neXBpCmluZGV4IGI4NDVjNTk0MjA5OGYwNjMwOGFh
NTEyZWViZDIwZjMwOGI5NDVkMTguLmE4NWQxMWMzZmZlYTdkZDhhNTJhYzA2NjVkYzhmM2E5ODc0
OWYzMDYgMTAwNjQ0Ci0tLSBhL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLmd5cGkKKysr
IGIvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUuZ3lwaQpAQCAtMTE4LDcgKzExOCw2IEBA
CiAgICAgICAgICAgICAnaml0L0pJVENhbGwzMl82NC5jcHAnLAogICAgICAgICAgICAgJ2ppdC9K
SVRDb2RlLmgnLAogICAgICAgICAgICAgJ2ppdC9KSVRJbmxpbmVNZXRob2RzLmgnLAotICAgICAg
ICAgICAgJ2ppdC9KSVRNYXJrT2JqZWN0cy5jcHAnLAogICAgICAgICAgICAgJ2ppdC9KSVRPcGNv
ZGVzLmNwcCcsCiAgICAgICAgICAgICAnaml0L0pJVE9wY29kZXMzMl82NC5jcHAnLAogICAgICAg
ICAgICAgJ2ppdC9KSVRQcm9wZXJ0eUFjY2Vzcy5jcHAnLApkaWZmIC0tZ2l0IGEvSmF2YVNjcmlw
dENvcmUvSmF2YVNjcmlwdENvcmUucHJvIGIvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUu
cHJvCmluZGV4IDI4MjZjNmJiYzlmM2EwZDA5MjA3NDQyMmI0ZGJkMzdhMGMzYzAyM2QuLmQ2YzQ0
MjA4OGZlMmJmMWE1OTJmZmFmMTI5ZDQ3ZTAxYzM4MzcxMDIgMTAwNjQ0Ci0tLSBhL0phdmFTY3Jp
cHRDb3JlL0phdmFTY3JpcHRDb3JlLnBybworKysgYi9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0
Q29yZS5wcm8KQEAgLTEwMCw3ICsxMDAsNiBAQCBTT1VSQ0VTICs9IFwKICAgICBqaXQvSklUQ2Fs
bC5jcHAgXAogICAgIGppdC9KSVRDYWxsMzJfNjQuY3BwIFwKICAgICBqaXQvSklULmNwcCBcCi0g
ICAgaml0L0pJVE1hcmtPYmplY3RzLmNwcCBcCiAgICAgaml0L0pJVE9wY29kZXMuY3BwIFwKICAg
ICBqaXQvSklUT3Bjb2RlczMyXzY0LmNwcCBcCiAgICAgaml0L0pJVFByb3BlcnR5QWNjZXNzLmNw
cCBcCmRpZmYgLS1naXQgYS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3Byb2ovSmF2
YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmNwcm9qIGIvSmF2YVNjcmlwdENvcmUvSmF2YVNj
cmlwdENvcmUudmNwcm9qL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjcHJvagppbmRl
eCA1ZWZhNThjODkxYTA0OTUzZjQzY2UxOGIzNGVmNjhiNzc4NTllMmYxLi44M2QzNGUzN2IyZmQ0
YzRlN2Y3MTk0MWU3MzRlNWRkODY3MmVjYmFmIDEwMDY0NAotLS0gYS9KYXZhU2NyaXB0Q29yZS9K
YXZhU2NyaXB0Q29yZS52Y3Byb2ovSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmNwcm9q
CisrKyBiL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjcHJvai9KYXZhU2NyaXB0Q29y
ZS9KYXZhU2NyaXB0Q29yZS52Y3Byb2oKQEAgLTE2ODksOSArMTY4OSw2IEBACiAJCQkJPg0KIAkJ
CTwvRmlsZT4NCiAJCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXGppdFxKSVRNYXJr
T2JqZWN0cy5jcHAiDQotCQkJCT4NCi0JCQk8RmlsZQ0KIAkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4u
XGppdFxKSVRPcGNvZGVzLmNwcCINCiAJCQkJPg0KIAkJCTwvRmlsZT4NCmRpZmYgLS1naXQgYS9K
YXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIv
SmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpp
bmRleCA2ZWRjMGM4MDkzZTZiY2I1NWUzYWRjM2YwNTMzNGM2YTQxYjNmYzNkLi40ODA5MjE4Zjcw
OWM3MTc4NzMwNzA2ZmJkM2MxMjc0NTM3ZDgzMWU2IDEwMDY0NAotLS0gYS9KYXZhU2NyaXB0Q29y
ZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL0phdmFTY3Jp
cHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTUwOSw3
ICs1MDksNiBAQAogCQlCQ0ZEOEM5MjBFRUIyRUU3MDAyODM4NDggLyogSnVtcFRhYmxlLmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDRkQ4QzkwMEVF
QjJFRTcwMDI4Mzg0OCAvKiBKdW1wVGFibGUuY3BwICovOyB9OwogCQlCQ0ZEOEM5MzBFRUIyRUU3
MDAyODM4NDggLyogSnVtcFRhYmxlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBCQ0ZEOEM5MTBFRUIyRUU3MDAyODM4NDggLyogSnVtcFRhYmxlLmggKi87
IH07CiAJCUMwQTI3MjYzMEU1MEEwNjMwMEU5NkUxNSAvKiBOb3RGb3VuZC5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQzBBMjcyM0YwRTUwOUYxRTAwRTk2
RTE1IC8qIE5vdEZvdW5kLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKLQkJREQyMzY2OTgxMURCQjIyRDAwQUY0N0M4IC8qIEpJVE1hcmtPYmplY3RzLmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEREMjM2Njk3
MTFEQkIyMkQwMEFGNDdDOCAvKiBKSVRNYXJrT2JqZWN0cy5jcHAgKi87IH07CiAJCUREMjcyNDY4
MTIwOEQxRkYwMEY5QUJFNyAvKiBBbGlnbmVkTWVtb3J5QWxsb2NhdG9yLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBERDI3MjQ2NzEyMDhEMUZGMDBGOUFC
RTcgLyogQWxpZ25lZE1lbW9yeUFsbG9jYXRvci5oICovOyB9OwogCQlERDI3MjQ2OTEyMDhEMUZG
MDBGOUFCRTcgLyogQWxpZ25lZE1lbW9yeUFsbG9jYXRvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gREQyNzI0NjcxMjA4RDFGRjAwRjlBQkU3IC8qIEFs
aWduZWRNZW1vcnlBbGxvY2F0b3IuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OwogCQlERDM3N0NCQzEyMDcyQzE4MDA2QTI1MTcgLyogQml0bWFwLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBERDM3N0NCQjEyMDcy
QzE4MDA2QTI1MTcgLyogQml0bWFwLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKQEAgLTEwNjMsNyArMTA2Miw2IEBACiAJCUMwQTI3MjNGMEU1MDlGMUUw
MEU5NkUxNSAvKiBOb3RGb3VuZC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBO
b3RGb3VuZC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlEMjEyMDIyODBBRDQzMTBD
MDBFRDc5QjYgLyogRGF0ZUNvbnZlcnNpb24uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IERhdGVDb252ZXJzaW9uLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJRDIxMjAyMjkwQUQ0MzEwQzAwRUQ3OUI2IC8qIERhdGVDb252ZXJzaW9uLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBEYXRlQ29udmVyc2lvbi5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwotCQlERDIzNjY5NzExREJCMjJEMDBBRjQ3QzggLyogSklUTWFya09i
amVjdHMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSklUTWFya09i
amVjdHMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlERDI3MjQ2NzEyMDhEMUZG
MDBGOUFCRTcgLyogQWxpZ25lZE1lbW9yeUFsbG9jYXRvci5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBBbGlnbmVkTWVtb3J5QWxsb2NhdG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCUREMzc3Q0JCMTIwNzJDMTgwMDZBMjUxNyAvKiBCaXRtYXAuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQml0bWFwLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCURERTgyQUQxMTIwOUQ5NTUwMDVDMTc1NiAvKiBHQ0hhbmRsZS5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBHQ0hhbmRsZS5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CkBAIC0xMjc0LDcgKzEyNzIsNiBAQAogCQkxNDI5RDkyQzBFRDIyRDcw
MDBCODk2MTkgLyogaml0ICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9
ICgKLQkJCQlERDIzNjY5NzExREJCMjJEMDBBRjQ3QzggLyogSklUTWFya09iamVjdHMuY3BwICov
LAogCQkJCUE3QjQ4REI2MEVFNzRDRkMwMERDQkRCNiAvKiBFeGVjdXRhYmxlQWxsb2NhdG9yLmNw
cCAqLywKIAkJCQlBN0I0OERCNTBFRTc0Q0ZDMDBEQ0JEQjYgLyogRXhlY3V0YWJsZUFsbG9jYXRv
ci5oICovLAogCQkJCTg2REI2NDYzMEY5NUM2RkMwMEQ3RDkyMSAvKiBFeGVjdXRhYmxlQWxsb2Nh
dG9yRml4ZWRWTVBvb2wuY3BwICovLApAQCAtMjY3OCw3ICsyNjc1LDYgQEAKIAkJCQk4NkQwOEQ1
MzExNzkzNjEzMDA2RTVFRDAgLyogV1RGVGhyZWFkRGF0YS5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQlEREY3QUJENTExRjYwRUQyMDAxMDhFMzYgLyogR0NBY3Rpdml0eUNhbGxiYWNrQ0YuY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJODYyN0U1RUIxMUYxMjgxOTAwQTMxM0I1IC8qIFBhZ2VBbGxvY2F0
aW9uLmNwcCBpbiBTb3VyY2VzICovLAotCQkJCUREMjM2Njk4MTFEQkIyMkQwMEFGNDdDOCAvKiBK
SVRNYXJrT2JqZWN0cy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlEREU4MkFENzEyMDlEOTU1MDA1
QzE3NTYgLyogR0NIYW5kbGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZv
ckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CmRpZmYgLS1naXQgYS9KYXZhU2NyaXB0Q29y
ZS9hc3NlbWJsZXIvQWJzdHJhY3RNYWNyb0Fzc2VtYmxlci5oIGIvSmF2YVNjcmlwdENvcmUvYXNz
ZW1ibGVyL0Fic3RyYWN0TWFjcm9Bc3NlbWJsZXIuaAppbmRleCA1MDk5N2FjYzgyMzU5NzM3NzA0
NWFhNWM2NGIwNDJjZmJlZmVlZDdkLi5hYWI5MDg5NTdlY2QwMzYxMWJjMDA0MTRkYjU2NGJlZDg1
ZDE3ZGI3IDEwMDY0NAotLS0gYS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvQWJzdHJhY3RNYWNy
b0Fzc2VtYmxlci5oCisrKyBiL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9BYnN0cmFjdE1hY3Jv
QXNzZW1ibGVyLmgKQEAgLTUyMSwyMSArNTIxLDYgQEAgcHJvdGVjdGVkOgogICAgICAgICBBc3Nl
bWJsZXJUeXBlOjpyZWxpbmtDYWxsKG5lYXJDYWxsLmRhdGFMb2NhdGlvbigpLCBkZXN0aW5hdGlv
bi5leGVjdXRhYmxlQWRkcmVzcygpKTsKICAgICB9CiAKLSAgICBzdGF0aWMgaW50MzJfdCBpbnQz
MkF0TG9jYXRpb24oQ29kZUxvY2F0aW9uRGF0YUxhYmVsMzIgZGF0YUxhYmVsMzIpCi0gICAgewot
ICAgICAgICByZXR1cm4gQXNzZW1ibGVyVHlwZTo6aW50MzJBdExvY2F0aW9uKGRhdGFMYWJlbDMy
LmRhdGFMb2NhdGlvbigpKTsKLSAgICB9Ci0KLSAgICBzdGF0aWMgdm9pZCogcG9pbnRlckF0TG9j
YXRpb24oQ29kZUxvY2F0aW9uRGF0YUxhYmVsUHRyIGRhdGFMYWJlbFB0cikKLSAgICB7Ci0gICAg
ICAgIHJldHVybiBBc3NlbWJsZXJUeXBlOjpwb2ludGVyQXRMb2NhdGlvbihkYXRhTGFiZWxQdHIu
ZGF0YUxvY2F0aW9uKCkpOwotICAgIH0KLQotICAgIHN0YXRpYyB2b2lkKiBqdW1wVGFyZ2V0KENv
ZGVMb2NhdGlvbkp1bXAganVtcCkKLSAgICB7Ci0gICAgICAgIHJldHVybiBBc3NlbWJsZXJUeXBl
OjpqdW1wVGFyZ2V0KGp1bXAuZGF0YUxvY2F0aW9uKCkpOwotICAgIH0KLQogICAgIHN0YXRpYyB2
b2lkIHJlcGF0Y2hJbnQzMihDb2RlTG9jYXRpb25EYXRhTGFiZWwzMiBkYXRhTGFiZWwzMiwgaW50
MzJfdCB2YWx1ZSkKICAgICB7CiAgICAgICAgIEFzc2VtYmxlclR5cGU6OnJlcGF0Y2hJbnQzMihk
YXRhTGFiZWwzMi5kYXRhTG9jYXRpb24oKSwgdmFsdWUpOwpkaWZmIC0tZ2l0IGEvSmF2YVNjcmlw
dENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyLmggYi9KYXZhU2NyaXB0Q29yZS9hc3NlbWJs
ZXIvTWFjcm9Bc3NlbWJsZXIuaAppbmRleCAxNjMyNzY0YzQ2MzVmZTZmODIyNmQxZmYzZWJkODZh
NjRkNmU5NTNmLi5jZTFiZTc4YThjNzY5OGYzMjA2YjA4OWViZGU1NmFlNWJjNzMwMjllIDEwMDY0
NAotLS0gYS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXIuaAorKysgYi9K
YXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXIuaApAQCAtMjA5LDEwICsyMDks
NiBAQCBwdWJsaWM6CiAgICAgICAgIHhvcjMyKGltbSwgc3JjRGVzdCk7CiAgICAgfQogCi0gICAg
dm9pZCBsb2FkUHRyV2l0aFBhdGNoKHZvaWQqIGFkZHJlc3MsIFJlZ2lzdGVySUQgZGVzdCkKLSAg
ICB7Ci0gICAgICAgIGxvYWQzMldpdGhQYXRjaChhZGRyZXNzLCBkZXN0KTsKLSAgICB9CiAKICAg
ICB2b2lkIGxvYWRQdHIoSW1wbGljaXRBZGRyZXNzIGFkZHJlc3MsIFJlZ2lzdGVySUQgZGVzdCkK
ICAgICB7CmRpZmYgLS1naXQgYS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJs
ZXJYODYuaCBiL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlclg4Ni5oCmlu
ZGV4IGQyYTc5NGQ5OTlkNzhhZjNjZmFlYmY5Mzc2MzBhYTEwNzhhMGNkNDguLjA5MTg5OTYzMDIw
MjJlMjExZGI2OWRhNmEyY2QwOGY4MmYxNDVkNmIgMTAwNjQ0Ci0tLSBhL0phdmFTY3JpcHRDb3Jl
L2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlclg4Ni5oCisrKyBiL0phdmFTY3JpcHRDb3JlL2Fzc2Vt
Ymxlci9NYWNyb0Fzc2VtYmxlclg4Ni5oCkBAIC04MiwxNyArODIsOSBAQCBwdWJsaWM6CiAgICAg
ICAgIG1fYXNzZW1ibGVyLnN1YmxfaW0oaW1tLm1fdmFsdWUsIGFkZHJlc3MubV9wdHIpOwogICAg
IH0KIAotICAgIHZvaWQgbG9hZDMyV2l0aFBhdGNoKHZvaWQqIGFkZHJlc3MsIFJlZ2lzdGVySUQg
ZGVzdCkKLSAgICB7Ci0gICAgICAgIG1fYXNzZW1ibGVyLm1vdmxfbXIoYWRkcmVzcywgZGVzdCk7
Ci0gICAgfQotCiAgICAgdm9pZCBsb2FkMzIodm9pZCogYWRkcmVzcywgUmVnaXN0ZXJJRCBkZXN0
KQogICAgIHsKLSAgICAgICAgaWYgKGRlc3QgPT0gWDg2UmVnaXN0ZXJzOjplYXgpCi0gICAgICAg
ICAgICBtX2Fzc2VtYmxlci5tb3ZsX21FQVgoYWRkcmVzcyk7Ci0gICAgICAgIGVsc2UKLSAgICAg
ICAgICAgIG1fYXNzZW1ibGVyLm1vdmxfbXIoYWRkcmVzcywgZGVzdCk7CisgICAgICAgIG1fYXNz
ZW1ibGVyLm1vdmxfbXIoYWRkcmVzcywgZGVzdCk7CiAgICAgfQogCiAgICAgdm9pZCBsb2FkRG91
YmxlKGNvbnN0IHZvaWQqIGFkZHJlc3MsIEZQUmVnaXN0ZXJJRCBkZXN0KQpAQCAtMTEzLDEwICsx
MDUsNyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHN0b3JlMzIoUmVnaXN0ZXJJRCBzcmMsIHZvaWQq
IGFkZHJlc3MpCiAgICAgewotICAgICAgICBpZiAoc3JjID09IFg4NlJlZ2lzdGVyczo6ZWF4KQot
ICAgICAgICAgICAgbV9hc3NlbWJsZXIubW92bF9FQVhtKGFkZHJlc3MpOwotICAgICAgICBlbHNl
Ci0gICAgICAgICAgICBtX2Fzc2VtYmxlci5tb3ZsX3JtKHNyYywgYWRkcmVzcyk7CisgICAgICAg
IG1fYXNzZW1ibGVyLm1vdmxfcm0oc3JjLCBhZGRyZXNzKTsKICAgICB9CiAKICAgICBKdW1wIGJy
YW5jaDMyKENvbmRpdGlvbiBjb25kLCBBYnNvbHV0ZUFkZHJlc3MgbGVmdCwgUmVnaXN0ZXJJRCBy
aWdodCkKZGlmZiAtLWdpdCBhL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9YODZBc3NlbWJsZXIu
aCBiL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9YODZBc3NlbWJsZXIuaAppbmRleCA4MjJmMjdj
NjlhY2EzYmM4YjlhMDZiNDFiYTMzMzQ4NGJkMzVlZjVkLi5hMWZhZTBjN2VmZmY1MDI1ZjI1YjM5
NjhmMTI0YjczNGNmMmZlYzk4IDEwMDY0NAotLS0gYS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIv
WDg2QXNzZW1ibGVyLmgKKysrIGIvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL1g4NkFzc2VtYmxl
ci5oCkBAIC0xMTU0LDEyICsxMTU0LDE4IEBAIHB1YmxpYzoKICNlbHNlCiAgICAgdm9pZCBtb3Zs
X3JtKFJlZ2lzdGVySUQgc3JjLCB2b2lkKiBhZGRyKQogICAgIHsKLSAgICAgICAgbV9mb3JtYXR0
ZXIub25lQnl0ZU9wKE9QX01PVl9Fdkd2LCBzcmMsIGFkZHIpOworICAgICAgICBpZiAoc3JjID09
IFg4NlJlZ2lzdGVyczo6ZWF4KQorICAgICAgICAgICAgbW92bF9FQVhtKGFkZHIpOworICAgICAg
ICBlbHNlIAorICAgICAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wKE9QX01PVl9Fdkd2LCBz
cmMsIGFkZHIpOwogICAgIH0KICAgICAKICAgICB2b2lkIG1vdmxfbXIodm9pZCogYWRkciwgUmVn
aXN0ZXJJRCBkc3QpCiAgICAgewotICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3AoT1BfTU9W
X0d2RXYsIGRzdCwgYWRkcik7CisgICAgICAgIGlmIChkc3QgPT0gWDg2UmVnaXN0ZXJzOjplYXgp
CisgICAgICAgICAgICBtb3ZsX21FQVgoYWRkcik7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAg
IG1fZm9ybWF0dGVyLm9uZUJ5dGVPcChPUF9NT1ZfR3ZFdiwgZHN0LCBhZGRyKTsKICAgICB9CiAK
ICAgICB2b2lkIG1vdmxfaTMybShpbnQgaW1tLCB2b2lkKiBhZGRyKQpAQCAtMTU1MywyMyArMTU1
OSw2IEBAIHB1YmxpYzoKICAgICAgICAgc2V0UG9pbnRlcihyZWludGVycHJldF9jYXN0PGNoYXIq
Pihjb2RlKSArIHdoZXJlLm1fb2Zmc2V0LCB2YWx1ZSk7CiAgICAgfQogCi0gICAgc3RhdGljIGlu
dDMyX3QgaW50MzJBdExvY2F0aW9uKHZvaWQqIHdoZXJlKQotICAgIHsKLSAgICAgICAgcmV0dXJu
IHN0YXRpY19jYXN0PGludDMyX3QqPih3aGVyZSlbLTFdOwotICAgIH0KLQotICAgIHN0YXRpYyB2
b2lkKiBwb2ludGVyQXRMb2NhdGlvbih2b2lkKiB3aGVyZSkKLSAgICB7Ci0gICAgICAgIHJldHVy
biBzdGF0aWNfY2FzdDx2b2lkKio+KHdoZXJlKVstMV07Ci0gICAgfQotCi0gICAgc3RhdGljIHZv
aWQqIGp1bXBUYXJnZXQodm9pZCoganVtcCkKLSAgICB7Ci0gICAgICAgIGludHB0cl90IHNyYyA9
IHJlaW50ZXJwcmV0X2Nhc3Q8aW50cHRyX3Q+KGp1bXApOwotICAgICAgICBpbnQzMl90IG9mZnNl
dCA9IHN0YXRpY19jYXN0PGludDMyX3QqPihqdW1wKVstMV07Ci0gICAgICAgIHJldHVybiByZWlu
dGVycHJldF9jYXN0PHZvaWQqPihzcmMgKyBvZmZzZXQpOwotICAgIH0KLQogICAgIHN0YXRpYyB2
b2lkIHJlbGlua0p1bXAodm9pZCogZnJvbSwgdm9pZCogdG8pCiAgICAgewogICAgICAgICBzZXRS
ZWwzMihmcm9tLCB0byk7CmRpZmYgLS1naXQgYS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2Rl
QmxvY2suY3BwIGIvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcAppbmRleCBk
OWE4NGQ5NDFiMDgzZmMzNGMyMDkzNjkxMDNlMzc4ZWRlODY5YTMxLi45YThjMzMyZDE5YjViZTYz
MTMwZDU2ZGFjZWQ5NmMyZjNlMWNlMTVhIDEwMDY0NAotLS0gYS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9Db2RlQmxvY2suY3BwCisrKyBiL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9j
ay5jcHAKQEAgLTE1MjAsMTQgKzE1MjAsNiBAQCB2b2lkIENvZGVCbG9jazo6bWFya0FnZ3JlZ2F0
ZShNYXJrU3RhY2smIG1hcmtTdGFjaykKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1fZnVu
Y3Rpb25EZWNscy5zaXplKCk7ICsraSkKICAgICAgICAgbV9mdW5jdGlvbkRlY2xzW2ldLT5tYXJr
QWdncmVnYXRlKG1hcmtTdGFjayk7CiAgICAgbWFya1N0YWNrLmFwcGVuZChtX2dsb2JhbE9iamVj
dCk7Ci0jaWYgRU5BQkxFKE1PVkFCTEVfR0NfT0JKRUNUUykKLSAgICAvLyBUaGlzIGlzIHRoZSBj
b2RlIHRoYXQgaXMgcmVzcG9uc2libGUgZm9yIG1hcmtpbmcgdGhlIGFjdHVhbCBwb2ludGVycwot
ICAgIC8vIHRvIEpTQ2VsbCpzIGluIHRoZSBKSVQnZWQgY29kZS4gIE5vcm1hbGx5LCB0aGVzZSBw
b2ludGVycyBhcmUgbWFya2VkCi0gICAgLy8gZWxzZXdoZXJlLCBob3dldmVyIHdoZW4gd2UgaGF2
ZSBtb3ZhYmxlIG9iamVjdHMsIHdlIHdpbGwgbmVlZCB0byB1cGRhdGUKLSAgICAvLyBhbGwgb2Yg
dGhlIHJlZmVyZW5jZXMuCi0gICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtX3N0cnVjdHVyZVN0
dWJJbmZvcy5zaXplKCk7ICsraSkKLSAgICAgICAgbV9zdHJ1Y3R1cmVTdHViSW5mb3NbaV0ubWFy
a0FnZ3JlZ2F0ZShtYXJrU3RhY2ssIHRoaXMpOwotI2VuZGlmCiB9CiAKIGJvb2wgQ29kZUJsb2Nr
OjpyZXBhcnNlRm9yRXhjZXB0aW9uSW5mb0lmTmVjZXNzYXJ5KENhbGxGcmFtZSogY2FsbEZyYW1l
KQpkaWZmIC0tZ2l0IGEvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvSW5zdHJ1Y3Rpb24uaCBiL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL0luc3RydWN0aW9uLmgKaW5kZXggOTZiZjYwNGJlM2YyMTA1
NzcwOGRlYzYwN2I0ODk5MWUzYmNiYjczMy4uYzY0NjhhNTU4MDQyM2I3MjY3NDY2YWJlNDZmMWJl
NGQ2NDA3ZDMyOCAxMDA2NDQKLS0tIGEvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvSW5zdHJ1Y3Rp
b24uaAorKysgYi9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9JbnN0cnVjdGlvbi5oCkBAIC02Mywx
MCArNjMsNiBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgICAgICAgICBTdHJ1Y3R1cmUqIHBy
b3RvOwogICAgICAgICAgICAgICAgIFN0cnVjdHVyZUNoYWluKiBjaGFpbjsKICAgICAgICAgICAg
IH0gdTsKLSNpZiBFTkFCTEUoTU9WQUJMRV9HQ19PQkpFQ1RTKQotICAgICAgICAgICAgaW50IGNv
dW50OwotICAgICAgICAgICAgUHJvcGVydHlTbG90OjpDYWNoZWRQcm9wZXJ0eVR5cGUgcHJvcGVy
dHlUeXBlOwotI2VuZGlmCiAKICAgICAgICAgICAgIHZvaWQgc2V0KFBvbHltb3JwaGljQWNjZXNz
U3RydWN0dXJlTGlzdFN0dWJSb3V0aW5lVHlwZSBfc3R1YlJvdXRpbmUsIFN0cnVjdHVyZSogX2Jh
c2UpCiAgICAgICAgICAgICB7CkBAIC03NiwzNSArNzIsMjAgQEAgbmFtZXNwYWNlIEpTQyB7CiAg
ICAgICAgICAgICAgICAgaXNDaGFpbiA9IGZhbHNlOwogICAgICAgICAgICAgfQogICAgICAgICAg
ICAgCi0jaWYgRU5BQkxFKE1PVkFCTEVfR0NfT0JKRUNUUykKLSAgICAgICAgICAgIHZvaWQgc2V0
KFBvbHltb3JwaGljQWNjZXNzU3RydWN0dXJlTGlzdFN0dWJSb3V0aW5lVHlwZSBfc3R1YlJvdXRp
bmUsIFN0cnVjdHVyZSogX2Jhc2UsIFN0cnVjdHVyZSogX3Byb3RvLCBQcm9wZXJ0eVNsb3Q6OkNh
Y2hlZFByb3BlcnR5VHlwZSBfcHJvcGVydHlUeXBlKQotI2Vsc2UKICAgICAgICAgICAgIHZvaWQg
c2V0KFBvbHltb3JwaGljQWNjZXNzU3RydWN0dXJlTGlzdFN0dWJSb3V0aW5lVHlwZSBfc3R1YlJv
dXRpbmUsIFN0cnVjdHVyZSogX2Jhc2UsIFN0cnVjdHVyZSogX3Byb3RvKQotI2VuZGlmCiAgICAg
ICAgICAgICB7CiAgICAgICAgICAgICAgICAgc3R1YlJvdXRpbmUgPSBfc3R1YlJvdXRpbmU7CiAg
ICAgICAgICAgICAgICAgYmFzZSA9IF9iYXNlOwogICAgICAgICAgICAgICAgIHUucHJvdG8gPSBf
cHJvdG87CiAgICAgICAgICAgICAgICAgaXNDaGFpbiA9IGZhbHNlOwotI2lmIEVOQUJMRShNT1ZB
QkxFX0dDX09CSkVDVFMpCi0gICAgICAgICAgICAgICAgcHJvcGVydHlUeXBlID0gX3Byb3BlcnR5
VHlwZTsKLSNlbmRpZgogICAgICAgICAgICAgfQogICAgICAgICAgICAgCi0jaWYgRU5BQkxFKE1P
VkFCTEVfR0NfT0JKRUNUUykKLSAgICAgICAgICAgIHZvaWQgc2V0KFBvbHltb3JwaGljQWNjZXNz
U3RydWN0dXJlTGlzdFN0dWJSb3V0aW5lVHlwZSBfc3R1YlJvdXRpbmUsIFN0cnVjdHVyZSogX2Jh
c2UsIFN0cnVjdHVyZUNoYWluKiBfY2hhaW4sIGludCBfY291bnQsIFByb3BlcnR5U2xvdDo6Q2Fj
aGVkUHJvcGVydHlUeXBlIF9wcm9wZXJ0eVR5cGUpCi0jZWxzZQogICAgICAgICAgICAgdm9pZCBz
ZXQoUG9seW1vcnBoaWNBY2Nlc3NTdHJ1Y3R1cmVMaXN0U3R1YlJvdXRpbmVUeXBlIF9zdHViUm91
dGluZSwgU3RydWN0dXJlKiBfYmFzZSwgU3RydWN0dXJlQ2hhaW4qIF9jaGFpbikKLSNlbmRpZgog
ICAgICAgICAgICAgewogICAgICAgICAgICAgICAgIHN0dWJSb3V0aW5lID0gX3N0dWJSb3V0aW5l
OwogICAgICAgICAgICAgICAgIGJhc2UgPSBfYmFzZTsKICAgICAgICAgICAgICAgICB1LmNoYWlu
ID0gX2NoYWluOwogICAgICAgICAgICAgICAgIGlzQ2hhaW4gPSB0cnVlOwotI2lmIEVOQUJMRShN
T1ZBQkxFX0dDX09CSkVDVFMpCi0gICAgICAgICAgICAgICAgY291bnQgPSBfY291bnQ7Ci0gICAg
ICAgICAgICAgICAgcHJvcGVydHlUeXBlID0gX3Byb3BlcnR5VHlwZTsKLSNlbmRpZgogICAgICAg
ICAgICAgfQogICAgICAgICB9IGxpc3RbUE9MWU1PUlBISUNfTElTVF9DQUNIRV9TSVpFXTsKICAg
ICAgICAgCkBAIC0xMTMsMjkgKzk0LDE1IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAgICAg
bGlzdFswXS5zZXQoc3R1YlJvdXRpbmUsIGZpcnN0QmFzZSk7CiAgICAgICAgIH0KIAotI2lmIEVO
QUJMRShNT1ZBQkxFX0dDX09CSkVDVFMpCi0gICAgICAgIFBvbHltb3JwaGljQWNjZXNzU3RydWN0
dXJlTGlzdChQb2x5bW9ycGhpY0FjY2Vzc1N0cnVjdHVyZUxpc3RTdHViUm91dGluZVR5cGUgc3R1
YlJvdXRpbmUsIFN0cnVjdHVyZSogZmlyc3RCYXNlLCBTdHJ1Y3R1cmUqIGZpcnN0UHJvdG8sIFBy
b3BlcnR5U2xvdDo6Q2FjaGVkUHJvcGVydHlUeXBlIHByb3BlcnR5VHlwZSkKLSAgICAgICAgewot
ICAgICAgICAgICAgbGlzdFswXS5zZXQoc3R1YlJvdXRpbmUsIGZpcnN0QmFzZSwgZmlyc3RQcm90
bywgcHJvcGVydHlUeXBlKTsKLSAgICAgICAgfQotI2Vsc2UKICAgICAgICAgUG9seW1vcnBoaWNB
Y2Nlc3NTdHJ1Y3R1cmVMaXN0KFBvbHltb3JwaGljQWNjZXNzU3RydWN0dXJlTGlzdFN0dWJSb3V0
aW5lVHlwZSBzdHViUm91dGluZSwgU3RydWN0dXJlKiBmaXJzdEJhc2UsIFN0cnVjdHVyZSogZmly
c3RQcm90bykKICAgICAgICAgewogICAgICAgICAgICAgbGlzdFswXS5zZXQoc3R1YlJvdXRpbmUs
IGZpcnN0QmFzZSwgZmlyc3RQcm90byk7CiAgICAgICAgIH0KLSNlbmRpZgogCi0jaWYgRU5BQkxF
KE1PVkFCTEVfR0NfT0JKRUNUUykKLSAgICAgICAgUG9seW1vcnBoaWNBY2Nlc3NTdHJ1Y3R1cmVM
aXN0KFBvbHltb3JwaGljQWNjZXNzU3RydWN0dXJlTGlzdFN0dWJSb3V0aW5lVHlwZSBzdHViUm91
dGluZSwgU3RydWN0dXJlKiBmaXJzdEJhc2UsIFN0cnVjdHVyZUNoYWluKiBmaXJzdENoYWluLCBp
bnQgY291bnQsIFByb3BlcnR5U2xvdDo6Q2FjaGVkUHJvcGVydHlUeXBlIHByb3BlcnR5VHlwZSkK
LSAgICAgICAgewotICAgICAgICAgICAgbGlzdFswXS5zZXQoc3R1YlJvdXRpbmUsIGZpcnN0QmFz
ZSwgZmlyc3RDaGFpbiwgY291bnQsIHByb3BlcnR5VHlwZSk7Ci0gICAgICAgIH0KLSNlbHNlCiAg
ICAgICAgIFBvbHltb3JwaGljQWNjZXNzU3RydWN0dXJlTGlzdChQb2x5bW9ycGhpY0FjY2Vzc1N0
cnVjdHVyZUxpc3RTdHViUm91dGluZVR5cGUgc3R1YlJvdXRpbmUsIFN0cnVjdHVyZSogZmlyc3RC
YXNlLCBTdHJ1Y3R1cmVDaGFpbiogZmlyc3RDaGFpbikKICAgICAgICAgewogICAgICAgICAgICAg
bGlzdFswXS5zZXQoc3R1YlJvdXRpbmUsIGZpcnN0QmFzZSwgZmlyc3RDaGFpbik7CiAgICAgICAg
IH0KLSNlbmRpZgogCiAgICAgICAgIHZvaWQgZGVyZWZTdHJ1Y3R1cmVzKGludCBjb3VudCkKICAg
ICAgICAgewpkaWZmIC0tZ2l0IGEvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3RydWN0dXJlU3R1
YkluZm8uY3BwIGIvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3RydWN0dXJlU3R1YkluZm8uY3Bw
CmluZGV4IDFmMzZkZTJhODM2ZWRlNTNjYjVlODUyZDQ5MDY4NDdiNWExNzljZGMuLjAxOGQ4MzI4
OWJmMDg3Y2ZmOTlkMDhjMjNmNjZmZjM5NTI4NDI4OTUgMTAwNjQ0Ci0tLSBhL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL1N0cnVjdHVyZVN0dWJJbmZvLmNwcAorKysgYi9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9TdHJ1Y3R1cmVTdHViSW5mby5jcHAKQEAgLTI2LDggKzI2LDYgQEAKICNpbmNsdWRl
ICJjb25maWcuaCIKICNpbmNsdWRlICJTdHJ1Y3R1cmVTdHViSW5mby5oIgogCi0jaW5jbHVkZSAi
SklULmgiCi0KIG5hbWVzcGFjZSBKU0MgewogCiAjaWYgRU5BQkxFKEpJVCkKQEAgLTc3LDM5ICs3
NSw2IEBAIHZvaWQgU3RydWN0dXJlU3R1YkluZm86OmRlcmVmKCkKICAgICAgICAgQVNTRVJUX05P
VF9SRUFDSEVEKCk7CiAgICAgfQogfQotCi0jaWYgRU5BQkxFKE1PVkFCTEVfR0NfT0JKRUNUUykK
LXZvaWQgU3RydWN0dXJlU3R1YkluZm86Om1hcmtBZ2dyZWdhdGUoTWFya1N0YWNrJiBtYXJrU3Rh
Y2ssIENvZGVCbG9jayogY29kZUJsb2NrKQotewotICAgIHN3aXRjaCAoYWNjZXNzVHlwZSkgewot
ICAgIGNhc2UgYWNjZXNzX2dldF9ieV9pZF9wcm90bzoKLSAgICAgICAgSklUOjptYXJrR2V0QnlJ
ZFByb3RvKG1hcmtTdGFjaywgY29kZUJsb2NrLCB0aGlzKTsKLSAgICAgICAgcmV0dXJuOwotICAg
IGNhc2UgYWNjZXNzX2dldF9ieV9pZF9jaGFpbjoKLSAgICAgICAgSklUOjptYXJrR2V0QnlJZENo
YWluKG1hcmtTdGFjaywgY29kZUJsb2NrLCB0aGlzKTsKLSAgICAgICAgcmV0dXJuOwotICAgIGNh
c2UgYWNjZXNzX2dldF9ieV9pZF9wcm90b19saXN0OgotICAgICAgICBKSVQ6Om1hcmtHZXRCeUlk
UHJvdG9MaXN0KG1hcmtTdGFjaywgY29kZUJsb2NrLCB0aGlzKTsKLSAgICAgICAgcmV0dXJuOwot
ICAgIGNhc2UgYWNjZXNzX3B1dF9ieV9pZF90cmFuc2l0aW9uOgotICAgICAgICBKSVQ6Om1hcmtQ
dXRCeUlkVHJhbnNpdGlvbihtYXJrU3RhY2ssIGNvZGVCbG9jaywgdGhpcyk7Ci0gICAgICAgIHJl
dHVybjsKLSAgICBjYXNlIGFjY2Vzc19nZXRfYnlfaWRfc2VsZjoKLSAgICBjYXNlIGFjY2Vzc19n
ZXRfYnlfaWRfc2VsZl9saXN0OgotICAgIGNhc2UgYWNjZXNzX3B1dF9ieV9pZF9yZXBsYWNlOgot
ICAgIGNhc2UgYWNjZXNzX2dldF9ieV9pZDoKLSAgICBjYXNlIGFjY2Vzc19wdXRfYnlfaWQ6Ci0g
ICAgY2FzZSBhY2Nlc3NfZ2V0X2J5X2lkX2dlbmVyaWM6Ci0gICAgY2FzZSBhY2Nlc3NfcHV0X2J5
X2lkX2dlbmVyaWM6Ci0gICAgY2FzZSBhY2Nlc3NfZ2V0X2FycmF5X2xlbmd0aDoKLSAgICBjYXNl
IGFjY2Vzc19nZXRfc3RyaW5nX2xlbmd0aDoKLSAgICAgICAgcmV0dXJuOwotICAgIGRlZmF1bHQ6
Ci0gICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgIH0KLX0KLSNlbmRpZgotCiAjZW5k
aWYKIAogfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9TdHJ1Y3R1cmVTdHViSW5mby5oIGIvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3RydWN0
dXJlU3R1YkluZm8uaAppbmRleCAyNzFlZTAxMDA3ODFiMDA2YzJhYjFkODQ5OWJhYjM0NGI1ODk0
MzUxLi44NTc4MTcxNWNmYjVlODQ4ZmQ3MGVmZmNiYWIyY2RlMDlkODZhOWJmIDEwMDY0NAotLS0g
YS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TdHJ1Y3R1cmVTdHViSW5mby5oCisrKyBiL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL1N0cnVjdHVyZVN0dWJJbmZvLmgKQEAgLTMwLDcgKzMwLDYgQEAK
IAogI2luY2x1ZGUgIkluc3RydWN0aW9uLmgiCiAjaW5jbHVkZSAiTWFjcm9Bc3NlbWJsZXIuaCIK
LSNpbmNsdWRlICJQcm9wZXJ0eVNsb3QuaCIKICNpbmNsdWRlICJPcGNvZGUuaCIKICNpbmNsdWRl
ICJTdHJ1Y3R1cmUuaCIKIApAQCAtNjcsMTEgKzY2LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAg
ICAgICAgICBiYXNlT2JqZWN0U3RydWN0dXJlLT5yZWYoKTsKICAgICAgICAgfQogCi0jaWYgRU5B
QkxFKE1PVkFCTEVfR0NfT0JKRUNUUykKLSAgICAgICAgdm9pZCBpbml0R2V0QnlJZFByb3RvKFN0
cnVjdHVyZSogYmFzZU9iamVjdFN0cnVjdHVyZSwgU3RydWN0dXJlKiBwcm90b3R5cGVTdHJ1Y3R1
cmUsIENvZGVMb2NhdGlvbkxhYmVsIHJvdXRpbmUsIFByb3BlcnR5U2xvdDo6Q2FjaGVkUHJvcGVy
dHlUeXBlIHByb3BlcnR5VHlwZSkKLSNlbHNlCiAgICAgICAgIHZvaWQgaW5pdEdldEJ5SWRQcm90
byhTdHJ1Y3R1cmUqIGJhc2VPYmplY3RTdHJ1Y3R1cmUsIFN0cnVjdHVyZSogcHJvdG90eXBlU3Ry
dWN0dXJlLCBDb2RlTG9jYXRpb25MYWJlbCByb3V0aW5lKQotI2VuZGlmCiAgICAgICAgIHsKICAg
ICAgICAgICAgIGFjY2Vzc1R5cGUgPSBhY2Nlc3NfZ2V0X2J5X2lkX3Byb3RvOwogCkBAIC04Miwx
NyArNzcsOSBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgICAgIHByb3RvdHlwZVN0cnVjdHVy
ZS0+cmVmKCk7CiAKICAgICAgICAgICAgIHN0dWJSb3V0aW5lID0gcm91dGluZTsKLQotI2lmIEVO
QUJMRShNT1ZBQkxFX0dDX09CSkVDVFMpCi0gICAgICAgICAgICB1LmdldEJ5SWRQcm90by5wcm9w
ZXJ0eVR5cGUgPSBwcm9wZXJ0eVR5cGU7Ci0jZW5kaWYKICAgICAgICAgfQogCi0jaWYgRU5BQkxF
KE1PVkFCTEVfR0NfT0JKRUNUUykKLSAgICAgICAgdm9pZCBpbml0R2V0QnlJZENoYWluKFN0cnVj
dHVyZSogYmFzZU9iamVjdFN0cnVjdHVyZSwgU3RydWN0dXJlQ2hhaW4qIGNoYWluLCBDb2RlTG9j
YXRpb25MYWJlbCByb3V0aW5lLCBpbnQgY291bnQsIFByb3BlcnR5U2xvdDo6Q2FjaGVkUHJvcGVy
dHlUeXBlIHByb3BlcnR5VHlwZSkKLSNlbHNlCiAgICAgICAgIHZvaWQgaW5pdEdldEJ5SWRDaGFp
bihTdHJ1Y3R1cmUqIGJhc2VPYmplY3RTdHJ1Y3R1cmUsIFN0cnVjdHVyZUNoYWluKiBjaGFpbiwg
Q29kZUxvY2F0aW9uTGFiZWwgcm91dGluZSkKLSNlbmRpZgogICAgICAgICB7CiAgICAgICAgICAg
ICBhY2Nlc3NUeXBlID0gYWNjZXNzX2dldF9ieV9pZF9jaGFpbjsKIApAQCAtMTAzLDExICs5MCw2
IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAgICAgY2hhaW4tPnJlZigpOwogCiAgICAgICAg
ICAgICBzdHViUm91dGluZSA9IHJvdXRpbmU7Ci0KLSNpZiBFTkFCTEUoTU9WQUJMRV9HQ19PQkpF
Q1RTKQotICAgICAgICAgICAgdS5nZXRCeUlkQ2hhaW4uY291bnQgPSBjb3VudDsKLSAgICAgICAg
ICAgIHUuZ2V0QnlJZENoYWluLnByb3BlcnR5VHlwZSA9IHByb3BlcnR5VHlwZTsKLSNlbmRpZgog
ICAgICAgICB9CiAKICAgICAgICAgdm9pZCBpbml0R2V0QnlJZFNlbGZMaXN0KFBvbHltb3JwaGlj
QWNjZXNzU3RydWN0dXJlTGlzdCogc3RydWN0dXJlTGlzdCkKQEAgLTE1Nyw5ICsxMzksNiBAQCBu
YW1lc3BhY2UgSlNDIHsKICAgICAgICAgfQogCiAgICAgICAgIHZvaWQgZGVyZWYoKTsKLSNpZiBF
TkFCTEUoTU9WQUJMRV9HQ19PQkpFQ1RTKQotICAgICAgICB2b2lkIG1hcmtBZ2dyZWdhdGUoTWFy
a1N0YWNrJiwgQ29kZUJsb2NrKik7Ci0jZW5kaWYKIAogICAgICAgICBib29sIHNlZW5PbmNlKCkK
ICAgICAgICAgewpAQCAtMTgxLDI0ICsxNjAsMTAgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAg
ICAgICBzdHJ1Y3QgewogICAgICAgICAgICAgICAgIFN0cnVjdHVyZSogYmFzZU9iamVjdFN0cnVj
dHVyZTsKICAgICAgICAgICAgICAgICBTdHJ1Y3R1cmUqIHByb3RvdHlwZVN0cnVjdHVyZTsKLSNp
ZiBFTkFCTEUoTU9WQUJMRV9HQ19PQkpFQ1RTKQotICAgICAgICAgICAgICAgIC8vIFRoZSBwcm9w
ZXJ0eVR5cGUgaXMgcmVxdWlyZWQgdG8gcHJvcGVybHkgZGV0ZXJtaW5lIHRoZQotICAgICAgICAg
ICAgICAgIC8vIHN0cnVjdHVyZSBvZiB0aGUgdW5kZXJseWluZyBjb2RlIHNvIHRoYXQgd2UgbWF5
IHBhdGNoIGl0Ci0gICAgICAgICAgICAgICAgLy8gY29ycmVjdGx5LiAgRGlmZmVyZW50IGNvZGUg
aXMgZ2VuZXJhdGVkIGZvciBkaWZmZXJlbnQKLSAgICAgICAgICAgICAgICAvLyBwcm9wZXJ0eSB0
eXBlcywgYW5kIHRoZXJlZm9yZSwgdGhlIG9mZnNldHMgdGhhdCB3ZSBuZWVkIHRvCi0gICAgICAg
ICAgICAgICAgLy8gcGF0Y2ggYXQgd2lsbCBjaGFuZ2UuCi0gICAgICAgICAgICAgICAgUHJvcGVy
dHlTbG90OjpDYWNoZWRQcm9wZXJ0eVR5cGUgcHJvcGVydHlUeXBlOwotI2VuZGlmCiAgICAgICAg
ICAgICB9IGdldEJ5SWRQcm90bzsKICAgICAgICAgICAgIHN0cnVjdCB7CiAgICAgICAgICAgICAg
ICAgU3RydWN0dXJlKiBiYXNlT2JqZWN0U3RydWN0dXJlOwogICAgICAgICAgICAgICAgIFN0cnVj
dHVyZUNoYWluKiBjaGFpbjsKLSNpZiBFTkFCTEUoTU9WQUJMRV9HQ19PQkpFQ1RTKQotICAgICAg
ICAgICAgICAgIC8vIFdlIG5lZWQgdGhlIGNvdW50IHNvIHRoYXQgd2UgY2FuIGl0ZXJhdGUgb3Zl
ciB0aGUgcHJvdG90eXBlCi0gICAgICAgICAgICAgICAgLy8gY2hhaW4sIG1hcmtpbmcgYWxsIG9m
IHRoZSByZWZlcmVuY2VzIHRvIG9iamVjdHMuCi0gICAgICAgICAgICAgICAgaW50IGNvdW50Owot
ICAgICAgICAgICAgICAgIFByb3BlcnR5U2xvdDo6Q2FjaGVkUHJvcGVydHlUeXBlIHByb3BlcnR5
VHlwZTsKLSNlbmRpZgogICAgICAgICAgICAgfSBnZXRCeUlkQ2hhaW47CiAgICAgICAgICAgICBz
dHJ1Y3QgewogICAgICAgICAgICAgICAgIFBvbHltb3JwaGljQWNjZXNzU3RydWN0dXJlTGlzdCog
c3RydWN0dXJlTGlzdDsKZGlmZiAtLWdpdCBhL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuaCBiL0ph
dmFTY3JpcHRDb3JlL2ppdC9KSVQuaAppbmRleCA1ZGQ5ZjcxOTM0ZTQ5MWJmNDc2NjNmZDQxYzg5
NmUxNDU2MDVlNmMzLi5mM2M0YjZhZmUxNzU2MzJjZTYxNWM0MjdiYzY0NzFmZDVkMWI5NzdhIDEw
MDY0NAotLS0gYS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmgKKysrIGIvSmF2YVNjcmlwdENvcmUv
aml0L0pJVC5oCkBAIC0yMzcsMTggKzIzNyw2IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBz
dGF0aWMgdm9pZCBwYXRjaFB1dEJ5SWRSZXBsYWNlKENvZGVCbG9jayogY29kZWJsb2NrLCBTdHJ1
Y3R1cmVTdHViSW5mbyosIFN0cnVjdHVyZSosIHNpemVfdCBjYWNoZWRPZmZzZXQsIFJldHVybkFk
ZHJlc3NQdHIgcmV0dXJuQWRkcmVzcywgYm9vbCBkaXJlY3QpOwogICAgICAgICBzdGF0aWMgdm9p
ZCBwYXRjaE1ldGhvZENhbGxQcm90byhDb2RlQmxvY2sqIGNvZGVibG9jaywgTWV0aG9kQ2FsbExp
bmtJbmZvJiwgSlNGdW5jdGlvbiosIFN0cnVjdHVyZSosIEpTT2JqZWN0KiwgUmV0dXJuQWRkcmVz
c1B0cik7CiAKLSNpZiBFTkFCTEUoTU9WQUJMRV9HQ19PQkpFQ1RTKQotICAgICAgICBzdGF0aWMg
dm9pZCBwYXRjaFByb3RvdHlwZVN0cnVjdHVyZUFkZHJlc3MoQ29kZUxvY2F0aW9uRGF0YUxhYmVs
UHRyLCBNYXJrU3RhY2smLCBSZXBhdGNoQnVmZmVyJik7Ci0gICAgICAgIHN0YXRpYyB2b2lkIHBh
dGNoR2V0RGlyZWN0T2Zmc2V0KENvZGVMb2NhdGlvbkxhYmVsLCBNYXJrU3RhY2smLCBSZXBhdGNo
QnVmZmVyJiwgUHJvcGVydHlTbG90OjpDYWNoZWRQcm9wZXJ0eVR5cGUpOwotICAgICAgICBzdGF0
aWMgdm9pZCBtYXJrR2V0QnlJZENoYWluSW50ZXJuYWwoQ29kZUxvY2F0aW9uTGFiZWwsIE1hcmtT
dGFjayYsIFJlcGF0Y2hCdWZmZXImLCBQcm9wZXJ0eVNsb3Q6OkNhY2hlZFByb3BlcnR5VHlwZSk7
Ci0KLSAgICAgICAgc3RhdGljIHZvaWQgbWFya0dldEJ5SWRQcm90byhNYXJrU3RhY2smLCBDb2Rl
QmxvY2sqLCBTdHJ1Y3R1cmVTdHViSW5mbyopOwotICAgICAgICBzdGF0aWMgdm9pZCBtYXJrR2V0
QnlJZENoYWluKE1hcmtTdGFjayYsIENvZGVCbG9jayosIFN0cnVjdHVyZVN0dWJJbmZvKik7Ci0g
ICAgICAgIHN0YXRpYyB2b2lkIG1hcmtHZXRCeUlkUHJvdG9MaXN0KE1hcmtTdGFjayYsIENvZGVC
bG9jayosIFN0cnVjdHVyZVN0dWJJbmZvKik7Ci0gICAgICAgIHN0YXRpYyB2b2lkIG1hcmtQdXRC
eUlkVHJhbnNpdGlvbihNYXJrU3RhY2smLCBDb2RlQmxvY2sqLCBTdHJ1Y3R1cmVTdHViSW5mbyop
OwotICAgICAgICBzdGF0aWMgdm9pZCBtYXJrR2xvYmFsT2JqZWN0UmVmZXJlbmNlKE1hcmtTdGFj
ayYsIENvZGVCbG9jayosIENvZGVMb2NhdGlvbkRhdGFMYWJlbFB0cik7Ci0jZW5kaWYKLQogICAg
ICAgICBzdGF0aWMgYm9vbCBjb21waWxlUGF0Y2hHZXRBcnJheUxlbmd0aChKU0dsb2JhbERhdGEq
IGdsb2JhbERhdGEsIENvZGVCbG9jayogY29kZUJsb2NrLCBTdHJ1Y3R1cmVTdHViSW5mbyogc3R1
YkluZm8sIFJldHVybkFkZHJlc3NQdHIgcmV0dXJuQWRkcmVzcykKICAgICAgICAgewogICAgICAg
ICAgICAgSklUIGppdChnbG9iYWxEYXRhLCBjb2RlQmxvY2spOwpAQCAtMzA3LDcgKzI5NSw3IEBA
IG5hbWVzcGFjZSBKU0MgewogICAgICAgICB2b2lkIGVtaXRMb2FkRG91YmxlKHVuc2lnbmVkIGlu
ZGV4LCBGUFJlZ2lzdGVySUQgdmFsdWUpOwogICAgICAgICB2b2lkIGVtaXRMb2FkSW50MzJUb0Rv
dWJsZSh1bnNpZ25lZCBpbmRleCwgRlBSZWdpc3RlcklEIHZhbHVlKTsKIAotICAgICAgICB1bnNp
Z25lZCB0ZXN0UHJvdG90eXBlKEpTVmFsdWUsIEp1bXBMaXN0JiBmYWlsdXJlQ2FzZXMpOworICAg
ICAgICB2b2lkIHRlc3RQcm90b3R5cGUoSlNWYWx1ZSwgSnVtcExpc3QmIGZhaWx1cmVDYXNlcyk7
CiAKICNpZiBVU0UoSlNWQUxVRTMyXzY0KQogICAgICAgICBib29sIGdldE9wZXJhbmRDb25zdGFu
dEltbWVkaWF0ZUludCh1bnNpZ25lZCBvcDEsIHVuc2lnbmVkIG9wMiwgdW5zaWduZWQmIG9wLCBp
bnQzMl90JiBjb25zdGFudCk7CkBAIC0zNzgsMTMgKzM2Niw2IEBAIG5hbWVzcGFjZSBKU0Mgewog
ICAgICAgICBzdGF0aWMgY29uc3QgaW50IHBhdGNoT2Zmc2V0TWV0aG9kQ2hlY2tQcm90b09iaiA9
IDExOwogICAgICAgICBzdGF0aWMgY29uc3QgaW50IHBhdGNoT2Zmc2V0TWV0aG9kQ2hlY2tQcm90
b1N0cnVjdCA9IDE4OwogICAgICAgICBzdGF0aWMgY29uc3QgaW50IHBhdGNoT2Zmc2V0TWV0aG9k
Q2hlY2tQdXRGdW5jdGlvbiA9IDI5OwotCi0gICAgICAgIHN0YXRpYyBjb25zdCBpbnQgcGF0Y2hP
ZmZzZXRHZXRCeUlkUHJvdG9TdHJ1Y3QgPSAxOTsKLSAgICAgICAgc3RhdGljIGNvbnN0IGludCBw
YXRjaE9mZnNldFB1dEJ5SWRQcm90b1N0cnVjdCA9IDEyOwotICAgICAgICBzdGF0aWMgY29uc3Qg
aW50IHBhdGNoTGVuZ3RoVGVzdFByb3RvdHlwZSA9IDE2OwotICAgICAgICBzdGF0aWMgY29uc3Qg
aW50IHBhdGNoTGVuZ3RoQnJhbmNoUHRyID0gMTA7Ci0gICAgICAgIHN0YXRpYyBjb25zdCBpbnQg
cGF0Y2hMZW5ndGhNb3ZlID0gNjsKLSAgICAgICAgc3RhdGljIGNvbnN0IGludCBwYXRjaExlbmd0
aFN0b3JlID0gMTA7CiAjZWxpZiBDUFUoQVJNX1RSQURJVElPTkFMKQogICAgICAgICAvLyBUaGVz
ZSBhcmNoaXRlY3R1cmUgc3BlY2lmaWMgdmFsdWUgYXJlIHVzZWQgdG8gZW5hYmxlIHBhdGNoaW5n
IC0gc2VlIGNvbW1lbnQgb24gb3BfcHV0X2J5X2lkLgogICAgICAgICBzdGF0aWMgY29uc3QgaW50
IHBhdGNoT2Zmc2V0UHV0QnlJZFN0cnVjdHVyZSA9IDQ7CkBAIC01NTUsMTMgKzUzNiw2IEBAIG5h
bWVzcGFjZSBKU0MgewogICAgICAgICBzdGF0aWMgY29uc3QgaW50IHBhdGNoT2Zmc2V0TWV0aG9k
Q2hlY2tQcm90b09iaiA9IDIwOwogICAgICAgICBzdGF0aWMgY29uc3QgaW50IHBhdGNoT2Zmc2V0
TWV0aG9kQ2hlY2tQcm90b1N0cnVjdCA9IDMwOwogICAgICAgICBzdGF0aWMgY29uc3QgaW50IHBh
dGNoT2Zmc2V0TWV0aG9kQ2hlY2tQdXRGdW5jdGlvbiA9IDUwOwotCi0gICAgICAgIHN0YXRpYyBj
b25zdCBpbnQgcGF0Y2hPZmZzZXRHZXRCeUlkUHJvdG9TdHJ1Y3QgPSA0MDsKLSAgICAgICAgc3Rh
dGljIGNvbnN0IGludCBwYXRjaE9mZnNldFB1dEJ5SWRQcm90b1N0cnVjdCA9IDIwOwotICAgICAg
ICBzdGF0aWMgY29uc3QgaW50IHBhdGNoTGVuZ3RoVGVzdFByb3RvdHlwZSA9IDI5OwotICAgICAg
ICBzdGF0aWMgY29uc3QgaW50IHBhdGNoTGVuZ3RoQnJhbmNoUHRyID0gOTsKLSAgICAgICAgc3Rh
dGljIGNvbnN0IGludCBwYXRjaExlbmd0aE1vdmUgPSAxMDsKLSAgICAgICAgc3RhdGljIGNvbnN0
IGludCBwYXRjaExlbmd0aFN0b3JlID0gMTM7CiAjZWxpZiBDUFUoWDg2KQogICAgICAgICAvLyBU
aGVzZSBhcmNoaXRlY3R1cmUgc3BlY2lmaWMgdmFsdWUgYXJlIHVzZWQgdG8gZW5hYmxlIHBhdGNo
aW5nIC0gc2VlIGNvbW1lbnQgb24gb3BfcHV0X2J5X2lkLgogICAgICAgICBzdGF0aWMgY29uc3Qg
aW50IHBhdGNoT2Zmc2V0UHV0QnlJZFN0cnVjdHVyZSA9IDc7CmRpZmYgLS1naXQgYS9KYXZhU2Ny
aXB0Q29yZS9qaXQvSklUTWFya09iamVjdHMuY3BwIGIvSmF2YVNjcmlwdENvcmUvaml0L0pJVE1h
cmtPYmplY3RzLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggN2ViMzc4ODA3YTg3
OTZjY2U4ZmIzZmFhODQ4ZmEzNTU4ODI5OGZlNC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMAotLS0gYS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUTWFya09iamVjdHMuY3Bw
CisrKyAvZGV2L251bGwKQEAgLTEsMjA4ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIw
MTAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICog
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQot
ICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4gCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotCi0jaWYgRU5BQkxF
KEpJVCkKLSNpZiBFTkFCTEUoTU9WQUJMRV9HQ19PQkpFQ1RTKQotI2lmIEVOQUJMRShKSVRfT1BU
SU1JWkVfUFJPUEVSVFlfQUNDRVNTKQotI2luY2x1ZGUgIkpJVC5oIgotCi0jaW5jbHVkZSAiQ29k
ZUJsb2NrLmgiCi0jaW5jbHVkZSAiSW50ZXJwcmV0ZXIuaCIKLSNpbmNsdWRlICJKSVRJbmxpbmVN
ZXRob2RzLmgiCi0jaW5jbHVkZSAiSklUU3R1YkNhbGwuaCIKLSNpbmNsdWRlICJKU0FycmF5Lmgi
Ci0jaW5jbHVkZSAiSlNGdW5jdGlvbi5oIgotI2luY2x1ZGUgIkpTT2JqZWN0LmgiCi0jaW5jbHVk
ZSAiSlNQcm9wZXJ0eU5hbWVJdGVyYXRvci5oIgotI2luY2x1ZGUgIkxpbmtCdWZmZXIuaCIKLSNp
bmNsdWRlICJQcm9wZXJ0eVNsb3QuaCIKLSNpbmNsdWRlICJSZXBhdGNoQnVmZmVyLmgiCi0jaW5j
bHVkZSAiUmVzdWx0VHlwZS5oIgotI2luY2x1ZGUgIlNhbXBsaW5nVG9vbC5oIgotCi11c2luZyBu
YW1lc3BhY2Ugc3RkOwotCi1uYW1lc3BhY2UgSlNDIHsKLQotdHlwZWRlZiBQcm9wZXJ0eVNsb3Q6
OkNhY2hlZFByb3BlcnR5VHlwZSBQcm9wZXJ0eVR5cGU7Ci0KLXZvaWQgSklUOjpwYXRjaFByb3Rv
dHlwZVN0cnVjdHVyZUFkZHJlc3MoQ29kZUxvY2F0aW9uRGF0YUxhYmVsUHRyIHdoZXJlLCBNYXJr
U3RhY2smIG1hcmtTdGFjaywgUmVwYXRjaEJ1ZmZlciYgcmVwYXRjaEJ1ZmZlcikKLXsKLSAgICB1
aW50cHRyX3QgcHJvdG90eXBlU3RydWN0dXJlQWRkcmVzcyA9IHJlaW50ZXJwcmV0X2Nhc3Q8dWlu
dHB0cl90Pihwb2ludGVyQXRMb2NhdGlvbih3aGVyZSkpOwotICAgIEpTQ2VsbCogY2VsbCA9IHJl
aW50ZXJwcmV0X2Nhc3Q8SlNDZWxsKj4ocHJvdG90eXBlU3RydWN0dXJlQWRkcmVzcyAmIENFTExf
QUxJR05fTUFTSyk7Ci0KLSAgICBBU1NFUlQoJihjZWxsLT5tX3N0cnVjdHVyZSkgPT0gcG9pbnRl
ckF0TG9jYXRpb24od2hlcmUpKTsKLSAgICBtYXJrU3RhY2suYXBwZW5kKGNlbGwpOwotICAgIHJl
cGF0Y2hCdWZmZXIucmVwYXRjaCh3aGVyZSwgJihjZWxsLT5tX3N0cnVjdHVyZSkpOwotfQotCi12
b2lkIEpJVDo6cGF0Y2hHZXREaXJlY3RPZmZzZXQoQ29kZUxvY2F0aW9uTGFiZWwgcGF0Y2hTdGFy
dCwgTWFya1N0YWNrJiBtYXJrU3RhY2ssIFJlcGF0Y2hCdWZmZXImIHJlcGF0Y2hCdWZmZXIsIFBy
b3BlcnR5VHlwZSBwcm9wZXJ0eVR5cGUpCi17Ci0gICAgQ29kZUxvY2F0aW9uRGF0YUxhYmVsUHRy
IHdoZXJlOwotICAgIHN3aXRjaCAocHJvcGVydHlUeXBlKSB7Ci0gICAgY2FzZSBQcm9wZXJ0eVNs
b3Q6OkdldHRlcjoKLSAgICAgICAgd2hlcmUgPSBwYXRjaFN0YXJ0LmRhdGFMYWJlbFB0ckF0T2Zm
c2V0KHBhdGNoTGVuZ3RoU3RvcmUpOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIFByb3BlcnR5
U2xvdDo6Q3VzdG9tOgotICAgICAgICB3aGVyZSA9IHBhdGNoU3RhcnQuZGF0YUxhYmVsUHRyQXRP
ZmZzZXQocGF0Y2hMZW5ndGhNb3ZlKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgZGVmYXVsdDoKLSAg
ICAgICAgd2hlcmUgPSBwYXRjaFN0YXJ0LmRhdGFMYWJlbFB0ckF0T2Zmc2V0KHBhdGNoTGVuZ3Ro
TW92ZSk7Ci0gICAgICAgIGJyZWFrOwotICAgIH0KLQotICAgIHVpbnRwdHJfdCBwcm9wZXJ0eUFk
ZHJlc3M7Ci0gICAgdWludHB0cl90IG5ld1Byb3BlcnR5QWRkcmVzczsKLSAgICBwdHJkaWZmX3Qg
b2Zmc2V0OwotICAgIEpTT2JqZWN0KiBvYmplY3Q7Ci0KLSNpZiBVU0UoSlNWQUxVRTMyXzY0KQot
ICAgIC8vIEpTVkFMVUUzMl82NCB3aWxsIG5lZWQgdG8gcmVwYXRjaCB0d28gcG9pbnRlcnMgZm9y
IDMyIGJpdCBjb2RlCi0gICAgcHJvcGVydHlBZGRyZXNzID0gcmVpbnRlcnByZXRfY2FzdDx1aW50
cHRyX3Q+KHBvaW50ZXJBdExvY2F0aW9uKHdoZXJlKSk7Ci0gICAgb2JqZWN0ID0gcmVpbnRlcnBy
ZXRfY2FzdDxKU09iamVjdCo+KHByb3BlcnR5QWRkcmVzcyAmIENFTExfQUxJR05fTUFTSyk7Ci0g
ICAgb2Zmc2V0ID0gcHJvcGVydHlBZGRyZXNzICYgQ0VMTF9NQVNLOwotICAgIG1hcmtTdGFjay5h
cHBlbmQob2JqZWN0KTsKLSAgICBuZXdQcm9wZXJ0eUFkZHJlc3MgPSByZWludGVycHJldF9jYXN0
PHVpbnRwdHJfdD4ob2JqZWN0KSArIG9mZnNldDsKLSAgICByZXBhdGNoQnVmZmVyLnJlcGF0Y2go
d2hlcmUsIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KG5ld1Byb3BlcnR5QWRkcmVzcykpOwotCi0g
ICAgaWYgKG9mZnNldCA9PSBPQkpFQ1RfT0ZGU0VUT0YoSlNPYmplY3QsIG1fZXh0ZXJuYWxTdG9y
YWdlKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgQVNTRVJUKG9iamVjdC0+aXNVc2luZ0lubGlu
ZVN0b3JhZ2UoKSk7Ci0gICAgQVNTRVJUKG9mZnNldCA+PSBPQkpFQ1RfT0ZGU0VUT0YoSlNPYmpl
Y3QsIG1faW5saW5lU3RvcmFnZSkpOwotICAgIEFTU0VSVChvZmZzZXQgPCBPQkpFQ1RfT0ZGU0VU
T0YoSlNPYmplY3QsIG1faW5saW5lU3RvcmFnZVtKU09iamVjdDo6aW5saW5lU3RvcmFnZUNhcGFj
aXR5XSkpOwotCi0gICAgd2hlcmUgPSB3aGVyZS5kYXRhTGFiZWxQdHJBdE9mZnNldChwYXRjaExl
bmd0aE1vdmUpOwotI2VuZGlmCi0KLSAgICBwcm9wZXJ0eUFkZHJlc3MgPSByZWludGVycHJldF9j
YXN0PHVpbnRwdHJfdD4ocG9pbnRlckF0TG9jYXRpb24od2hlcmUpKTsKLSAgICBvYmplY3QgPSBy
ZWludGVycHJldF9jYXN0PEpTT2JqZWN0Kj4ocHJvcGVydHlBZGRyZXNzICYgQ0VMTF9BTElHTl9N
QVNLKTsKLSAgICBvZmZzZXQgPSBwcm9wZXJ0eUFkZHJlc3MgJiBDRUxMX01BU0s7Ci0gICAgbWFy
a1N0YWNrLmFwcGVuZChvYmplY3QpOwotICAgIG5ld1Byb3BlcnR5QWRkcmVzcyA9IHJlaW50ZXJw
cmV0X2Nhc3Q8dWludHB0cl90PihvYmplY3QpICsgb2Zmc2V0OwotICAgIHJlcGF0Y2hCdWZmZXIu
cmVwYXRjaCh3aGVyZSwgcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4obmV3UHJvcGVydHlBZGRyZXNz
KSk7Ci19Ci0KLXZvaWQgSklUOjptYXJrR2V0QnlJZFByb3RvKE1hcmtTdGFjayYgbWFya1N0YWNr
LCBDb2RlQmxvY2sqIGNvZGVCbG9jaywgU3RydWN0dXJlU3R1YkluZm8qIHN0dWJJbmZvKQotewot
ICAgIENvZGVMb2NhdGlvbkp1bXAganVtcExvY2F0aW9uID0gc3R1YkluZm8tPmhvdFBhdGhCZWdp
bi5qdW1wQXRPZmZzZXQocGF0Y2hPZmZzZXRHZXRCeUlkQnJhbmNoVG9TbG93Q2FzZSk7Ci0gICAg
Q29kZUxvY2F0aW9uTGFiZWwgcGF0Y2hTdGFydChqdW1wVGFyZ2V0KGp1bXBMb2NhdGlvbikpOwot
Ci0gICAgUmVwYXRjaEJ1ZmZlciByZXBhdGNoQnVmZmVyKGNvZGVCbG9jayk7Ci0KLSAgICBDb2Rl
TG9jYXRpb25EYXRhTGFiZWxQdHIgd2hlcmUgPSBwYXRjaFN0YXJ0LmRhdGFMYWJlbFB0ckF0T2Zm
c2V0KHBhdGNoT2Zmc2V0R2V0QnlJZFByb3RvU3RydWN0KTsKLSAgICBwYXRjaFByb3RvdHlwZVN0
cnVjdHVyZUFkZHJlc3MocGF0Y2hTdGFydC5kYXRhTGFiZWxQdHJBdE9mZnNldChwYXRjaE9mZnNl
dEdldEJ5SWRQcm90b1N0cnVjdCksIG1hcmtTdGFjaywgcmVwYXRjaEJ1ZmZlcik7Ci0KLSAgICBw
YXRjaEdldERpcmVjdE9mZnNldCh3aGVyZS5sYWJlbEF0T2Zmc2V0KHBhdGNoTGVuZ3RoQnJhbmNo
UHRyKSwgbWFya1N0YWNrLCByZXBhdGNoQnVmZmVyLCBzdHViSW5mby0+dS5nZXRCeUlkUHJvdG8u
cHJvcGVydHlUeXBlKTsKLX0KLQotdm9pZCBKSVQ6Om1hcmtHZXRCeUlkQ2hhaW4oTWFya1N0YWNr
JiBtYXJrU3RhY2ssIENvZGVCbG9jayogY29kZUJsb2NrLCBTdHJ1Y3R1cmVTdHViSW5mbyogc3R1
YkluZm8pCi17Ci0gICAgQ29kZUxvY2F0aW9uSnVtcCBqdW1wTG9jYXRpb24gPSBzdHViSW5mby0+
aG90UGF0aEJlZ2luLmp1bXBBdE9mZnNldChwYXRjaE9mZnNldEdldEJ5SWRCcmFuY2hUb1Nsb3dD
YXNlKTsKLSAgICBDb2RlTG9jYXRpb25MYWJlbCBwYXRjaFN0YXJ0KGp1bXBUYXJnZXQoanVtcExv
Y2F0aW9uKSk7Ci0KLSAgICBSZXBhdGNoQnVmZmVyIHJlcGF0Y2hCdWZmZXIoY29kZUJsb2NrKTsK
LQotICAgIGludCBjb3VudCA9IHN0dWJJbmZvLT51LmdldEJ5SWRDaGFpbi5jb3VudDsKLSAgICBm
b3IgKGludCBpID0gMDsgaSA8IGNvdW50OyArK2kpIHsKLSAgICAgICAgQ29kZUxvY2F0aW9uRGF0
YUxhYmVsUHRyIHdoZXJlID0gcGF0Y2hTdGFydC5kYXRhTGFiZWxQdHJBdE9mZnNldChwYXRjaE9m
ZnNldEdldEJ5SWRQcm90b1N0cnVjdCArIHBhdGNoTGVuZ3RoVGVzdFByb3RvdHlwZSAqIGkpOwot
ICAgICAgICBwYXRjaFByb3RvdHlwZVN0cnVjdHVyZUFkZHJlc3Mod2hlcmUsIG1hcmtTdGFjaywg
cmVwYXRjaEJ1ZmZlcik7Ci0gICAgfQotICAgIENvZGVMb2NhdGlvbkxhYmVsIHdoZXJlID0KLSAg
ICAgICAgICAgIHBhdGNoU3RhcnQubGFiZWxBdE9mZnNldChwYXRjaE9mZnNldEdldEJ5SWRQcm90
b1N0cnVjdCArIHBhdGNoTGVuZ3RoQnJhbmNoUHRyICsgcGF0Y2hMZW5ndGhUZXN0UHJvdG90eXBl
ICogKGNvdW50IC0gMSkpOwotICAgIHBhdGNoR2V0RGlyZWN0T2Zmc2V0KHdoZXJlLCBtYXJrU3Rh
Y2ssIHJlcGF0Y2hCdWZmZXIsIHN0dWJJbmZvLT51LmdldEJ5SWRDaGFpbi5wcm9wZXJ0eVR5cGUp
OwotfQotCi12b2lkIEpJVDo6bWFya0dldEJ5SWRQcm90b0xpc3QoTWFya1N0YWNrJiBtYXJrU3Rh
Y2ssIENvZGVCbG9jayogY29kZUJsb2NrLCBTdHJ1Y3R1cmVTdHViSW5mbyogc3R1YkluZm8pCi17
Ci0gICAgUmVwYXRjaEJ1ZmZlciByZXBhdGNoQnVmZmVyKGNvZGVCbG9jayk7Ci0KLSAgICBmb3Ig
KGludCBpID0gMDsgaSA8IHN0dWJJbmZvLT51LmdldEJ5SWRTZWxmTGlzdC5saXN0U2l6ZTsgKytp
KSB7Ci0gICAgICAgIENvZGVMb2NhdGlvbkxhYmVsIHBhdGNoU3RhcnQgPSBzdHViSW5mby0+dS5n
ZXRCeUlkUHJvdG9MaXN0LnN0cnVjdHVyZUxpc3QtPmxpc3RbaV0uc3R1YlJvdXRpbmU7Ci0KLSAg
ICAgICAgUG9seW1vcnBoaWNBY2Nlc3NTdHJ1Y3R1cmVMaXN0OjpQb2x5bW9ycGhpY1N0dWJJbmZv
IGluZm8gPQotICAgICAgICAgICAgc3R1YkluZm8tPnUuZ2V0QnlJZFByb3RvTGlzdC5zdHJ1Y3R1
cmVMaXN0LT5saXN0W2ldOwotCi0gICAgICAgIGlmICghaW5mby51LnByb3RvKQotICAgICAgICAg
ICAgY29udGludWU7Ci0KLSAgICAgICAgaWYgKGluZm8uaXNDaGFpbikgewotICAgICAgICAgICAg
aW50IGNvdW50ID0gaW5mby5jb3VudDsKLSAgICAgICAgICAgIGZvciAoaW50IGogPSAwOyBqIDwg
Y291bnQ7ICsraikgewotICAgICAgICAgICAgICAgIENvZGVMb2NhdGlvbkRhdGFMYWJlbFB0ciB3
aGVyZSA9IHBhdGNoU3RhcnQuZGF0YUxhYmVsUHRyQXRPZmZzZXQocGF0Y2hPZmZzZXRHZXRCeUlk
UHJvdG9TdHJ1Y3QgKyBwYXRjaExlbmd0aFRlc3RQcm90b3R5cGUgKiBqKTsKLSAgICAgICAgICAg
ICAgICBwYXRjaFByb3RvdHlwZVN0cnVjdHVyZUFkZHJlc3Mod2hlcmUsIG1hcmtTdGFjaywgcmVw
YXRjaEJ1ZmZlcik7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBDb2RlTG9jYXRpb25MYWJl
bCB3aGVyZSA9Ci0gICAgICAgICAgICAgICAgICAgIHBhdGNoU3RhcnQubGFiZWxBdE9mZnNldChw
YXRjaE9mZnNldEdldEJ5SWRQcm90b1N0cnVjdCArIHBhdGNoTGVuZ3RoQnJhbmNoUHRyICsgcGF0
Y2hMZW5ndGhUZXN0UHJvdG90eXBlICogKGNvdW50IC0gMSkpOwotICAgICAgICAgICAgcGF0Y2hH
ZXREaXJlY3RPZmZzZXQod2hlcmUsIG1hcmtTdGFjaywgcmVwYXRjaEJ1ZmZlciwgaW5mby5wcm9w
ZXJ0eVR5cGUpOwotICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgQ29kZUxvY2F0aW9uRGF0
YUxhYmVsUHRyIHdoZXJlID0gcGF0Y2hTdGFydC5kYXRhTGFiZWxQdHJBdE9mZnNldChwYXRjaE9m
ZnNldEdldEJ5SWRQcm90b1N0cnVjdCk7Ci0gICAgICAgICAgICBwYXRjaFByb3RvdHlwZVN0cnVj
dHVyZUFkZHJlc3Mod2hlcmUsIG1hcmtTdGFjaywgcmVwYXRjaEJ1ZmZlcik7Ci0KLSAgICAgICAg
ICAgIHBhdGNoR2V0RGlyZWN0T2Zmc2V0KHdoZXJlLmxhYmVsQXRPZmZzZXQocGF0Y2hMZW5ndGhC
cmFuY2hQdHIpLCBtYXJrU3RhY2ssIHJlcGF0Y2hCdWZmZXIsIGluZm8ucHJvcGVydHlUeXBlKTsK
LSAgICAgICAgfQotICAgIH0KLX0KLQotdm9pZCBKSVQ6Om1hcmtQdXRCeUlkVHJhbnNpdGlvbihN
YXJrU3RhY2smIG1hcmtTdGFjaywgQ29kZUJsb2NrKiBjb2RlQmxvY2ssIFN0cnVjdHVyZVN0dWJJ
bmZvKiBzdHViSW5mbykKLXsKLSAgICBDb2RlTG9jYXRpb25MYWJlbCBwYXRjaFN0YXJ0ID0gc3R1
YkluZm8tPnN0dWJSb3V0aW5lOwotCi0gICAgUmVwYXRjaEJ1ZmZlciByZXBhdGNoQnVmZmVyKGNv
ZGVCbG9jayk7Ci0KLSAgICBSZWZQdHI8U3RydWN0dXJlPiogaXQgPSBzdHViSW5mby0+dS5wdXRC
eUlkVHJhbnNpdGlvbi5jaGFpbi0+aGVhZCgpOwotICAgIEpTVmFsdWUgcHJvdG9PYmplY3QgPSBz
dHViSW5mby0+dS5wdXRCeUlkVHJhbnNpdGlvbi5zdHJ1Y3R1cmUtPnN0b3JlZFByb3RvdHlwZSgp
OwotCi0gICAgZG8gewotICAgICAgICBpZiAocHJvdG9PYmplY3QuaXNOdWxsKCkpCi0gICAgICAg
ICAgICBjb250aW51ZTsKLQotICAgICAgICBDb2RlTG9jYXRpb25EYXRhTGFiZWxQdHIgd2hlcmUg
PSBwYXRjaFN0YXJ0LmRhdGFMYWJlbFB0ckF0T2Zmc2V0KHBhdGNoT2Zmc2V0UHV0QnlJZFByb3Rv
U3RydWN0ICsgcGF0Y2hMZW5ndGhUZXN0UHJvdG90eXBlKTsKLSAgICAgICAgcGF0Y2hQcm90b3R5
cGVTdHJ1Y3R1cmVBZGRyZXNzKHdoZXJlLCBtYXJrU3RhY2ssIHJlcGF0Y2hCdWZmZXIpOwotCi0g
ICAgICAgIHByb3RvT2JqZWN0ID0gaXQtPmdldCgpLT5zdG9yZWRQcm90b3R5cGUoKTsKLSAgICAg
ICAgcGF0Y2hTdGFydCA9IHBhdGNoU3RhcnQubGFiZWxBdE9mZnNldChwYXRjaExlbmd0aFRlc3RQ
cm90b3R5cGUpOwotICAgIH0gd2hpbGUgKCppdCsrKTsKLX0KLQotdm9pZCBKSVQ6Om1hcmtHbG9i
YWxPYmplY3RSZWZlcmVuY2UoTWFya1N0YWNrJiBtYXJrU3RhY2ssIENvZGVCbG9jayogY29kZUJs
b2NrLCBDb2RlTG9jYXRpb25EYXRhTGFiZWxQdHIgcmVmKQotewotICAgIFJlcGF0Y2hCdWZmZXIg
cmVwYXRjaEJ1ZmZlcihjb2RlQmxvY2spOwotICAgIEpTQ2VsbCogZ2xvYmFsT2JqZWN0ID0gcmVp
bnRlcnByZXRfY2FzdDxKU0NlbGwqPihwb2ludGVyQXRMb2NhdGlvbihyZWYpKTsKLQotICAgIEFT
U0VSVCghKHJlaW50ZXJwcmV0X2Nhc3Q8dWludHB0cl90PihnbG9iYWxPYmplY3QpICYgQ0VMTF9N
QVNLKSk7Ci0KLSAgICBtYXJrU3RhY2suYXBwZW5kKGdsb2JhbE9iamVjdCk7Ci0gICAgcmVwYXRj
aEJ1ZmZlci5yZXBhdGNoKHJlZiwgZ2xvYmFsT2JqZWN0KTsKLX0KLQotfSAvLyBuYW1lc3BhY2Ug
SlNDCi0KLSNlbmRpZgotCi0jZW5kaWYgLy8gRU5BQkxFKE1PVkFCTEVfR0NfT0JKRUNUUykgCi0j
ZW5kaWYgLy8gRU5BQkxFKEpJVCkKZGlmZiAtLWdpdCBhL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQ
cm9wZXJ0eUFjY2Vzcy5jcHAgYi9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nlc3Mu
Y3BwCmluZGV4IGUxMTMwZTY3ZWExY2UyMTk0MTUyMjFkMzJkY2UyNmM5ZjgxYjAxYzMuLjU0MGUw
NzllZTEwZGIyNmI2MTBkZjIyMGM2NDk2YTM3NTM3MzBlNmUgMTAwNjQ0Ci0tLSBhL0phdmFTY3Jp
cHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2Vzcy5jcHAKKysrIGIvSmF2YVNjcmlwdENvcmUvaml0
L0pJVFByb3BlcnR5QWNjZXNzLmNwcApAQCAtNTczLDIzICs1NzMsMjIgQEAgdm9pZCBKSVQ6OmNv
bXBpbGVHZXREaXJlY3RPZmZzZXQoUmVnaXN0ZXJJRCBiYXNlLCBSZWdpc3RlcklEIHJlc3VsdCwg
U3RydWN0dXJlKgogICAgIGxvYWRQdHIoQWRkcmVzcyhiYXNlLCBvZmZzZXQpLCByZXN1bHQpOwog
fQogCi12b2lkIEpJVDo6Y29tcGlsZUdldERpcmVjdE9mZnNldChKU09iamVjdCogYmFzZSwgUmVn
aXN0ZXJJRCwgUmVnaXN0ZXJJRCByZXN1bHQsIHNpemVfdCBjYWNoZWRPZmZzZXQpCit2b2lkIEpJ
VDo6Y29tcGlsZUdldERpcmVjdE9mZnNldChKU09iamVjdCogYmFzZSwgUmVnaXN0ZXJJRCB0ZW1w
LCBSZWdpc3RlcklEIHJlc3VsdCwgc2l6ZV90IGNhY2hlZE9mZnNldCkKIHsKICAgICBpZiAoYmFz
ZS0+aXNVc2luZ0lubGluZVN0b3JhZ2UoKSkKICAgICAgICAgbG9hZFB0cihzdGF0aWNfY2FzdDx2
b2lkKj4oJmJhc2UtPm1faW5saW5lU3RvcmFnZVtjYWNoZWRPZmZzZXRdKSwgcmVzdWx0KTsKICAg
ICBlbHNlIHsKICAgICAgICAgUHJvcGVydHlTdG9yYWdlKiBwcm90b1Byb3BlcnR5U3RvcmFnZSA9
ICZiYXNlLT5tX2V4dGVybmFsU3RvcmFnZTsKLSAgICAgICAgbG9hZFB0cihzdGF0aWNfY2FzdDx2
b2lkKj4ocHJvdG9Qcm9wZXJ0eVN0b3JhZ2UpLCByZXN1bHQpOwotICAgICAgICBsb2FkUHRyKEFk
ZHJlc3MocmVzdWx0LCBjYWNoZWRPZmZzZXQgKiBzaXplb2YoSlNWYWx1ZSkpLCByZXN1bHQpOwor
ICAgICAgICBsb2FkUHRyKHN0YXRpY19jYXN0PHZvaWQqPihwcm90b1Byb3BlcnR5U3RvcmFnZSks
IHRlbXApOworICAgICAgICBsb2FkUHRyKEFkZHJlc3ModGVtcCwgY2FjaGVkT2Zmc2V0ICogc2l6
ZW9mKEpTVmFsdWUpKSwgcmVzdWx0KTsKICAgICB9IAogfQogCi11bnNpZ25lZCBKSVQ6OnRlc3RQ
cm90b3R5cGUoSlNWYWx1ZSBwcm90b3R5cGUsIEp1bXBMaXN0JiBmYWlsdXJlQ2FzZXMpCit2b2lk
IEpJVDo6dGVzdFByb3RvdHlwZShKU1ZhbHVlIHByb3RvdHlwZSwgSnVtcExpc3QmIGZhaWx1cmVD
YXNlcykKIHsKICAgICBpZiAocHJvdG90eXBlLmlzTnVsbCgpKQotICAgICAgICByZXR1cm4gMDsK
KyAgICAgICAgcmV0dXJuOwogCi0gICAgTGFiZWwgdGVzdFByb3RvdHlwZUJlZ2luKHRoaXMpOwog
ICAgIC8vIFdlIGhhdmUgYSBzcGVjaWFsIGNhc2UgZm9yIFg4Nl82NCBoZXJlIGJlY2F1c2UgWDg2
IGluc3RydWN0aW9ucyB0aGF0IHRha2UgaW1tZWRpYXRlIHZhbHVlcwogICAgIC8vIG9ubHkgdGFr
ZSAzMiBiaXQgaW1tZWRpYXRlIHZhbHVlcywgd2hlcmFzIHRoZSBwb2ludGVyIGNvbnN0YW50cyB3
ZSBhcmUgdXNpbmcgaGVyZSBhcmUgNjQgYml0CiAgICAgLy8gdmFsdWVzLiAgSW4gdGhlIG5vbiBY
ODZfNjQgY2FzZSwgdGhlIGdlbmVyYXRlZCBjb2RlIGlzIHNsaWdodGx5IG1vcmUgZWZmaWNpZW50
IGJlY2F1c2UgaXQgdXNlcwpAQCAtNjAwLDMxICs1OTksMjAgQEAgdW5zaWduZWQgSklUOjp0ZXN0
UHJvdG90eXBlKEpTVmFsdWUgcHJvdG90eXBlLCBKdW1wTGlzdCYgZmFpbHVyZUNhc2VzKQogI2Vs
c2UKICAgICBmYWlsdXJlQ2FzZXMuYXBwZW5kKGJyYW5jaFB0cihOb3RFcXVhbCwgQWJzb2x1dGVB
ZGRyZXNzKCZhc0NlbGwocHJvdG90eXBlKS0+bV9zdHJ1Y3R1cmUpLCBJbW1QdHIoYXNDZWxsKHBy
b3RvdHlwZSktPnN0cnVjdHVyZSgpKSkpOwogI2VuZGlmCi0gICAgQVNTRVJUX0pJVF9PRkZTRVQo
ZGlmZmVyZW5jZUJldHdlZW4odGVzdFByb3RvdHlwZUJlZ2luLCBMYWJlbCh0aGlzKSksIHBhdGNo
TGVuZ3RoVGVzdFByb3RvdHlwZSk7Ci0KLSAgICByZXR1cm4gcGF0Y2hMZW5ndGhUZXN0UHJvdG90
eXBlOwogfQogCiBib29sIEpJVDo6cHJpdmF0ZUNvbXBpbGVQdXRCeUlkVHJhbnNpdGlvbihTdHJ1
Y3R1cmVTdHViSW5mbyogc3R1YkluZm8sIFN0cnVjdHVyZSogb2xkU3RydWN0dXJlLCBTdHJ1Y3R1
cmUqIG5ld1N0cnVjdHVyZSwgc2l6ZV90IGNhY2hlZE9mZnNldCwgU3RydWN0dXJlQ2hhaW4qIGNo
YWluLCBSZXR1cm5BZGRyZXNzUHRyIHJldHVybkFkZHJlc3MsIGJvb2wgZGlyZWN0KQogewotICAg
IExhYmVsIHB1dEJ5SWRUcmFuc2l0aW9uQmVnaW4odGhpcyk7CiAgICAgSnVtcExpc3QgZmFpbHVy
ZUNhc2VzOwogICAgIC8vIENoZWNrIGVheCBpcyBhbiBvYmplY3Qgb2YgdGhlIHJpZ2h0IFN0cnVj
dHVyZS4KICAgICBmYWlsdXJlQ2FzZXMuYXBwZW5kKGVtaXRKdW1wSWZOb3RKU0NlbGwocmVnVDAp
KTsKICAgICBmYWlsdXJlQ2FzZXMuYXBwZW5kKGJyYW5jaFB0cihOb3RFcXVhbCwgQWRkcmVzcyhy
ZWdUMCwgT0JKRUNUX09GRlNFVE9GKEpTQ2VsbCwgbV9zdHJ1Y3R1cmUpKSwgSW1tUHRyKG9sZFN0
cnVjdHVyZSkpKTsKLQotICAgIHVuc2lnbmVkIG9mZnNldCA9IHBhdGNoT2Zmc2V0UHV0QnlJZFBy
b3RvU3RydWN0ICsgcGF0Y2hMZW5ndGhCcmFuY2hQdHI7Ci0gICAgQVNTRVJUX0pJVF9PRkZTRVQo
ZGlmZmVyZW5jZUJldHdlZW4ocHV0QnlJZFRyYW5zaXRpb25CZWdpbiwgTGFiZWwodGhpcykpLCBv
ZmZzZXQpOwotCi0gICAgb2Zmc2V0ICs9IHRlc3RQcm90b3R5cGUob2xkU3RydWN0dXJlLT5zdG9y
ZWRQcm90b3R5cGUoKSwgZmFpbHVyZUNhc2VzKTsKLSAgICBBU1NFUlRfSklUX09GRlNFVChkaWZm
ZXJlbmNlQmV0d2VlbihwdXRCeUlkVHJhbnNpdGlvbkJlZ2luLCBMYWJlbCh0aGlzKSksIG9mZnNl
dCk7CisgICAgdGVzdFByb3RvdHlwZShvbGRTdHJ1Y3R1cmUtPnN0b3JlZFByb3RvdHlwZSgpLCBm
YWlsdXJlQ2FzZXMpOwogCiAgICAgLy8gZWN4ID0gYmFzZU9iamVjdC0+bV9zdHJ1Y3R1cmUKICAg
ICBpZiAoIWRpcmVjdCkgewotICAgICAgICBmb3IgKFJlZlB0cjxTdHJ1Y3R1cmU+KiBpdCA9IGNo
YWluLT5oZWFkKCk7ICppdDsgKytpdCkgewotICAgICAgICAgICAgb2Zmc2V0ICs9IHRlc3RQcm90
b3R5cGUoKCppdCktPnN0b3JlZFByb3RvdHlwZSgpLCBmYWlsdXJlQ2FzZXMpOwotICAgICAgICAg
ICAgQVNTRVJUX0pJVF9PRkZTRVQoZGlmZmVyZW5jZUJldHdlZW4ocHV0QnlJZFRyYW5zaXRpb25C
ZWdpbiwgTGFiZWwodGhpcykpLCBvZmZzZXQpOwotICAgICAgICB9CisgICAgICAgIGZvciAoUmVm
UHRyPFN0cnVjdHVyZT4qIGl0ID0gY2hhaW4tPmhlYWQoKTsgKml0OyArK2l0KQorICAgICAgICAg
ICAgdGVzdFByb3RvdHlwZSgoKml0KS0+c3RvcmVkUHJvdG90eXBlKCksIGZhaWx1cmVDYXNlcyk7
CiAgICAgfQogCiAgICAgQ2FsbCBjYWxsVGFyZ2V0OwpAQCAtNzgzLDcgKzc3MSw2IEBAIGJvb2wg
SklUOjpwcml2YXRlQ29tcGlsZVBhdGNoR2V0QXJyYXlMZW5ndGgoU3RydWN0dXJlU3R1YkluZm8q
IHN0dWJJbmZvLCBSZXR1cm5BCiAKIGJvb2wgSklUOjpwcml2YXRlQ29tcGlsZUdldEJ5SWRQcm90
byhTdHJ1Y3R1cmVTdHViSW5mbyogc3R1YkluZm8sIFN0cnVjdHVyZSogc3RydWN0dXJlLCBTdHJ1
Y3R1cmUqIHByb3RvdHlwZVN0cnVjdHVyZSwgY29uc3QgSWRlbnRpZmllciYgaWRlbnQsIGNvbnN0
IFByb3BlcnR5U2xvdCYgc2xvdCwgc2l6ZV90IGNhY2hlZE9mZnNldCwgUmV0dXJuQWRkcmVzc1B0
ciByZXR1cm5BZGRyZXNzLCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICBMYWJlbCBnZXRC
eUlkUHJvdG9CZWdpbih0aGlzKTsKICAgICAvLyBUaGUgcHJvdG90eXBlIG9iamVjdCBkZWZpbml0
ZWx5IGV4aXN0cyAoaWYgdGhpcyBzdHViIGV4aXN0cyB0aGUgQ29kZUJsb2NrIGlzIHJlZmVyZW5j
aW5nIGEgU3RydWN0dXJlIHRoYXQgaXMKICAgICAvLyByZWZlcmVuY2luZyB0aGUgcHJvdG90eXBl
IG9iamVjdCAtIGxldCdzIHNwZWN1bGF0aXZlbHkgbG9hZCBpdCdzIHRhYmxlIG5pY2UgYW5kIGVh
cmx5ISkKICAgICBKU09iamVjdCogcHJvdG9PYmplY3QgPSBhc09iamVjdChzdHJ1Y3R1cmUtPnBy
b3RvdHlwZUZvckxvb2t1cChjYWxsRnJhbWUpKTsKQEAgLTgwMCw3ICs3ODcsNiBAQCBib29sIEpJ
VDo6cHJpdmF0ZUNvbXBpbGVHZXRCeUlkUHJvdG8oU3RydWN0dXJlU3R1YkluZm8qIHN0dWJJbmZv
LCBTdHJ1Y3R1cmUqIHN0cgogICAgIEp1bXAgZmFpbHVyZUNhc2VzMiA9IGJyYW5jaFB0cihOb3RF
cXVhbCwgQWJzb2x1dGVBZGRyZXNzKHByb3RvdHlwZVN0cnVjdHVyZUFkZHJlc3MpLCBJbW1QdHIo
cHJvdG90eXBlU3RydWN0dXJlKSk7CiAjZW5kaWYKIAotICAgIEFTU0VSVF9KSVRfT0ZGU0VUKGRp
ZmZlcmVuY2VCZXR3ZWVuKGdldEJ5SWRQcm90b0JlZ2luLCBMYWJlbCh0aGlzKSksIHBhdGNoT2Zm
c2V0R2V0QnlJZFByb3RvU3RydWN0ICsgcGF0Y2hMZW5ndGhCcmFuY2hQdHIpOwogICAgIGJvb2wg
bmVlZHNTdHViTGluayA9IGZhbHNlOwogICAgIAogICAgIC8vIENoZWNrcyBvdXQgb2theSEKQEAg
LTg1MSwxMSArODM3LDcgQEAgYm9vbCBKSVQ6OnByaXZhdGVDb21waWxlR2V0QnlJZFByb3RvKFN0
cnVjdHVyZVN0dWJJbmZvKiBzdHViSW5mbywgU3RydWN0dXJlKiBzdHIKIAogICAgIC8vIFdlIGRv
bid0IHdhbnQgdG8gcGF0Y2ggbW9yZSB0aGFuIG9uY2UgLSBpbiBmdXR1cmUgZ28gdG8gY3RpX29w
X3B1dF9ieV9pZF9nZW5lcmljLgogICAgIHJlcGF0Y2hCdWZmZXIucmVsaW5rQ2FsbGVyVG9GdW5j
dGlvbihyZXR1cm5BZGRyZXNzLCBGdW5jdGlvblB0cihjdGlfb3BfZ2V0X2J5X2lkX3Byb3RvX2xp
c3QpKTsKLSNpZiBFTkFCTEUoTU9WQUJMRV9HQ19PQkpFQ1RTKQotICAgIHN0dWJJbmZvLT5pbml0
R2V0QnlJZFByb3RvKHN0cnVjdHVyZSwgcHJvdG90eXBlU3RydWN0dXJlLCBlbnRyeUxhYmVsLCBz
bG90LmNhY2hlZFByb3BlcnR5VHlwZSgpKTsKLSNlbHNlCiAgICAgc3R1YkluZm8tPmluaXRHZXRC
eUlkUHJvdG8oc3RydWN0dXJlLCBwcm90b3R5cGVTdHJ1Y3R1cmUsIGVudHJ5TGFiZWwpOwotI2Vu
ZGlmCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKQEAgLTkyNiw3ICs5MDgsNiBAQCBib29sIEpJVDo6
cHJpdmF0ZUNvbXBpbGVHZXRCeUlkU2VsZkxpc3QoU3RydWN0dXJlU3R1YkluZm8qIHN0dWJJbmZv
LCBTdHJ1Y3R1cmUqCiAKIGJvb2wgSklUOjpwcml2YXRlQ29tcGlsZUdldEJ5SWRQcm90b0xpc3Qo
U3RydWN0dXJlU3R1YkluZm8qIHN0dWJJbmZvLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgU3RydWN0
dXJlKiBwcm90b3R5cGVTdHJ1Y3R1cmUsIGNvbnN0IElkZW50aWZpZXImIGlkZW50LCBjb25zdCBQ
cm9wZXJ0eVNsb3QmIHNsb3QsIHNpemVfdCBjYWNoZWRPZmZzZXQsIENhbGxGcmFtZSogY2FsbEZy
YW1lKQogewotICAgIExhYmVsIGdldEJ5SWRQcm90b0xpc3RCZWdpbih0aGlzKTsKICAgICBQb2x5
bW9ycGhpY0FjY2Vzc1N0cnVjdHVyZUxpc3QqIHByb3RvdHlwZVN0cnVjdHVyZXMgPSBzdHViSW5m
by0+dS5nZXRCeUlkUHJvdG9MaXN0LnN0cnVjdHVyZUxpc3Q7CiAgICAgaW50IGN1cnJlbnRJbmRl
eCA9IHN0dWJJbmZvLT51LmdldEJ5SWRQcm90b0xpc3QubGlzdFNpemU7CiAKQEAgLTk0Niw4ICs5
MjcsNiBAQCBib29sIEpJVDo6cHJpdmF0ZUNvbXBpbGVHZXRCeUlkUHJvdG9MaXN0KFN0cnVjdHVy
ZVN0dWJJbmZvKiBzdHViSW5mbywgU3RydWN0dXJlKgogICAgIEp1bXAgZmFpbHVyZUNhc2VzMiA9
IGJyYW5jaFB0cihOb3RFcXVhbCwgQWJzb2x1dGVBZGRyZXNzKHByb3RvdHlwZVN0cnVjdHVyZUFk
ZHJlc3MpLCBJbW1QdHIocHJvdG90eXBlU3RydWN0dXJlKSk7CiAjZW5kaWYKIAotICAgIEFTU0VS
VF9KSVRfT0ZGU0VUKGRpZmZlcmVuY2VCZXR3ZWVuKGdldEJ5SWRQcm90b0xpc3RCZWdpbiwgTGFi
ZWwodGhpcykpLCBwYXRjaE9mZnNldEdldEJ5SWRQcm90b1N0cnVjdCArIHBhdGNoTGVuZ3RoQnJh
bmNoUHRyKTsKLQogICAgIC8vIENoZWNrcyBvdXQgb2theSEKICAgICBib29sIG5lZWRzU3R1Ykxp
bmsgPSBmYWxzZTsKICAgICBpZiAoc2xvdC5jYWNoZWRQcm9wZXJ0eVR5cGUoKSA9PSBQcm9wZXJ0
eVNsb3Q6OkdldHRlcikgewpAQCAtOTk0LDExICs5NzMsNyBAQCBib29sIEpJVDo6cHJpdmF0ZUNv
bXBpbGVHZXRCeUlkUHJvdG9MaXN0KFN0cnVjdHVyZVN0dWJJbmZvKiBzdHViSW5mbywgU3RydWN0
dXJlKgogCiAgICAgc3RydWN0dXJlLT5yZWYoKTsKICAgICBwcm90b3R5cGVTdHJ1Y3R1cmUtPnJl
ZigpOwotI2lmIEVOQUJMRShNT1ZBQkxFX0dDX09CSkVDVFMpCi0gICAgcHJvdG90eXBlU3RydWN0
dXJlcy0+bGlzdFtjdXJyZW50SW5kZXhdLnNldChlbnRyeUxhYmVsLCBzdHJ1Y3R1cmUsIHByb3Rv
dHlwZVN0cnVjdHVyZSwgc2xvdC5jYWNoZWRQcm9wZXJ0eVR5cGUoKSk7Ci0jZWxzZQogICAgIHBy
b3RvdHlwZVN0cnVjdHVyZXMtPmxpc3RbY3VycmVudEluZGV4XS5zZXQoZW50cnlMYWJlbCwgc3Ry
dWN0dXJlLCBwcm90b3R5cGVTdHJ1Y3R1cmUpOwotI2VuZGlmCiAKICAgICAvLyBGaW5hbGx5IHBh
dGNoIHRoZSBqdW1wIHRvIHNsb3cgY2FzZSBiYWNrIGluIHRoZSBob3QgcGF0aCB0byBqdW1wIGhl
cmUgaW5zdGVhZC4KICAgICBDb2RlTG9jYXRpb25KdW1wIGp1bXBMb2NhdGlvbiA9IHN0dWJJbmZv
LT5ob3RQYXRoQmVnaW4uanVtcEF0T2Zmc2V0KHBhdGNoT2Zmc2V0R2V0QnlJZEJyYW5jaFRvU2xv
d0Nhc2UpOwpAQCAtMTAxNCw4ICs5ODksNiBAQCBib29sIEpJVDo6cHJpdmF0ZUNvbXBpbGVHZXRC
eUlkQ2hhaW5MaXN0KFN0cnVjdHVyZVN0dWJJbmZvKiBzdHViSW5mbywgU3RydWN0dXJlKgogICAg
IGludCBjdXJyZW50SW5kZXggPSBzdHViSW5mby0+dS5nZXRCeUlkUHJvdG9MaXN0Lmxpc3RTaXpl
OwogCiAgICAgQVNTRVJUKGNvdW50KTsKLQotICAgIExhYmVsIGdldEJ5SWRDaGFpbkxpc3RCZWdp
bih0aGlzKTsKICAgICBKdW1wTGlzdCBidWNrZXRzT2ZGYWlsOwogCiAgICAgLy8gQ2hlY2sgZWF4
IGlzIGFuIG9iamVjdCBvZiB0aGUgcmlnaHQgU3RydWN0dXJlLgpAQCAtMTAyOSw4ICsxMDAyLDYg
QEAgYm9vbCBKSVQ6OnByaXZhdGVDb21waWxlR2V0QnlJZENoYWluTGlzdChTdHJ1Y3R1cmVTdHVi
SW5mbyogc3R1YkluZm8sIFN0cnVjdHVyZSoKICAgICAgICAgcHJvdG9PYmplY3QgPSBhc09iamVj
dChjdXJyU3RydWN0dXJlLT5wcm90b3R5cGVGb3JMb29rdXAoY2FsbEZyYW1lKSk7CiAgICAgICAg
IGN1cnJTdHJ1Y3R1cmUgPSBpdC0+Z2V0KCk7CiAgICAgICAgIHRlc3RQcm90b3R5cGUocHJvdG9P
YmplY3QsIGJ1Y2tldHNPZkZhaWwpOwotICAgICAgICBBU1NFUlRfSklUX09GRlNFVChkaWZmZXJl
bmNlQmV0d2VlbihnZXRCeUlkQ2hhaW5MaXN0QmVnaW4sIExhYmVsKHRoaXMpKSwKLSAgICAgICAg
ICAgIHBhdGNoT2Zmc2V0R2V0QnlJZFByb3RvU3RydWN0ICsgcGF0Y2hMZW5ndGhCcmFuY2hQdHIg
KyBpICogcGF0Y2hMZW5ndGhUZXN0UHJvdG90eXBlKTsKICAgICB9CiAgICAgQVNTRVJUKHByb3Rv
T2JqZWN0KTsKICAgICAKQEAgLTEwNzksMTEgKzEwNTAsNyBAQCBib29sIEpJVDo6cHJpdmF0ZUNv
bXBpbGVHZXRCeUlkQ2hhaW5MaXN0KFN0cnVjdHVyZVN0dWJJbmZvKiBzdHViSW5mbywgU3RydWN0
dXJlKgogICAgIC8vIFRyYWNrIHRoZSBzdHViIHdlIGhhdmUgY3JlYXRlZCBzbyB0aGF0IGl0IHdp
bGwgYmUgZGVsZXRlZCBsYXRlci4KICAgICBzdHJ1Y3R1cmUtPnJlZigpOwogICAgIGNoYWluLT5y
ZWYoKTsKLSNpZiBFTkFCTEUoTU9WQUJMRV9HQ19PQkpFQ1RTKQotICAgIHByb3RvdHlwZVN0cnVj
dHVyZXMtPmxpc3RbY3VycmVudEluZGV4XS5zZXQoZW50cnlMYWJlbCwgc3RydWN0dXJlLCBjaGFp
biwgY291bnQsIHNsb3QuY2FjaGVkUHJvcGVydHlUeXBlKCkpOwotI2Vsc2UKICAgICBwcm90b3R5
cGVTdHJ1Y3R1cmVzLT5saXN0W2N1cnJlbnRJbmRleF0uc2V0KGVudHJ5TGFiZWwsIHN0cnVjdHVy
ZSwgY2hhaW4pOwotI2VuZGlmCiAKICAgICAvLyBGaW5hbGx5IHBhdGNoIHRoZSBqdW1wIHRvIHNs
b3cgY2FzZSBiYWNrIGluIHRoZSBob3QgcGF0aCB0byBqdW1wIGhlcmUgaW5zdGVhZC4KICAgICBD
b2RlTG9jYXRpb25KdW1wIGp1bXBMb2NhdGlvbiA9IHN0dWJJbmZvLT5ob3RQYXRoQmVnaW4uanVt
cEF0T2Zmc2V0KHBhdGNoT2Zmc2V0R2V0QnlJZEJyYW5jaFRvU2xvd0Nhc2UpOwpAQCAtMTA5Nyw3
ICsxMDY0LDYgQEAgYm9vbCBKSVQ6OnByaXZhdGVDb21waWxlR2V0QnlJZENoYWluKFN0cnVjdHVy
ZVN0dWJJbmZvKiBzdHViSW5mbywgU3RydWN0dXJlKiBzdHIKIHsKICAgICBBU1NFUlQoY291bnQp
OwogCi0gICAgTGFiZWwgZ2V0QnlJZENoYWluQmVnaW4odGhpcyk7CiAgICAgSnVtcExpc3QgYnVj
a2V0c09mRmFpbDsKIAogICAgIC8vIENoZWNrIGVheCBpcyBhbiBvYmplY3Qgb2YgdGhlIHJpZ2h0
IFN0cnVjdHVyZS4KQEAgLTExMTAsOCArMTA3Niw2IEBAIGJvb2wgSklUOjpwcml2YXRlQ29tcGls
ZUdldEJ5SWRDaGFpbihTdHJ1Y3R1cmVTdHViSW5mbyogc3R1YkluZm8sIFN0cnVjdHVyZSogc3Ry
CiAgICAgICAgIHByb3RvT2JqZWN0ID0gYXNPYmplY3QoY3VyclN0cnVjdHVyZS0+cHJvdG90eXBl
Rm9yTG9va3VwKGNhbGxGcmFtZSkpOwogICAgICAgICBjdXJyU3RydWN0dXJlID0gaXQtPmdldCgp
OwogICAgICAgICB0ZXN0UHJvdG90eXBlKHByb3RvT2JqZWN0LCBidWNrZXRzT2ZGYWlsKTsKLSAg
ICAgICAgQVNTRVJUX0pJVF9PRkZTRVQoZGlmZmVyZW5jZUJldHdlZW4oZ2V0QnlJZENoYWluQmVn
aW4sIExhYmVsKHRoaXMpKSwKLSAgICAgICAgICAgIHBhdGNoT2Zmc2V0R2V0QnlJZFByb3RvU3Ry
dWN0ICsgcGF0Y2hMZW5ndGhCcmFuY2hQdHIgKyBpICogcGF0Y2hMZW5ndGhUZXN0UHJvdG90eXBl
KTsKICAgICB9CiAgICAgQVNTRVJUKHByb3RvT2JqZWN0KTsKIApAQCAtMTE2MywxMiArMTEyNyw3
IEBAIGJvb2wgSklUOjpwcml2YXRlQ29tcGlsZUdldEJ5SWRDaGFpbihTdHJ1Y3R1cmVTdHViSW5m
byogc3R1YkluZm8sIFN0cnVjdHVyZSogc3RyCiAKICAgICAvLyBXZSBkb24ndCB3YW50IHRvIHBh
dGNoIG1vcmUgdGhhbiBvbmNlIC0gaW4gZnV0dXJlIGdvIHRvIGN0aV9vcF9wdXRfYnlfaWRfZ2Vu
ZXJpYy4KICAgICByZXBhdGNoQnVmZmVyLnJlbGlua0NhbGxlclRvRnVuY3Rpb24ocmV0dXJuQWRk
cmVzcywgRnVuY3Rpb25QdHIoY3RpX29wX2dldF9ieV9pZF9wcm90b19saXN0KSk7Ci0jaWYgRU5B
QkxFKE1PVkFCTEVfR0NfT0JKRUNUUykKLSAgICBzdHViSW5mby0+aW5pdEdldEJ5SWRDaGFpbihz
dHJ1Y3R1cmUsIGNoYWluLCBlbnRyeUxhYmVsLCBjb3VudCwgc2xvdC5jYWNoZWRQcm9wZXJ0eVR5
cGUoKSk7Ci0jZWxzZQogICAgIHN0dWJJbmZvLT5pbml0R2V0QnlJZENoYWluKHN0cnVjdHVyZSwg
Y2hhaW4sIGVudHJ5TGFiZWwpOwotI2VuZGlmCi0KICAgICByZXR1cm4gdHJ1ZTsKIH0KIApkaWZm
IC0tZ2l0IGEvSmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNzMzJfNjQuY3BwIGIv
SmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNzMzJfNjQuY3BwCmluZGV4IDUxMjdl
ODUyZmEyMDIyMmQ5OTFiNzMxMWQ4NGJlOWM3OGRmZTE1ODIuLmJiZmZkN2Q1M2MwN2QxM2RiMWZi
NDg5MGY1ZTgzMjVjZjk1MTJjZTIgMTAwNjQ0Ci0tLSBhL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQ
cm9wZXJ0eUFjY2VzczMyXzY0LmNwcAorKysgYi9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVy
dHlBY2Nlc3MzMl82NC5jcHAKQEAgLTU3NCwxMiArNTc0LDggQEAgdm9pZCBKSVQ6OmNvbXBpbGVH
ZXREaXJlY3RPZmZzZXQoUmVnaXN0ZXJJRCBiYXNlLCBSZWdpc3RlcklEIHJlc3VsdFRhZywgUmVn
aXN0ZXIKIAogdm9pZCBKSVQ6OmNvbXBpbGVHZXREaXJlY3RPZmZzZXQoSlNPYmplY3QqIGJhc2Us
IFJlZ2lzdGVySUQgdGVtcCwgUmVnaXN0ZXJJRCByZXN1bHRUYWcsIFJlZ2lzdGVySUQgcmVzdWx0
UGF5bG9hZCwgc2l6ZV90IGNhY2hlZE9mZnNldCkKIHsKLSAgICBMYWJlbCBkaXJlY3RPZmZzZXRC
ZWdpbih0aGlzKTsKICAgICBpZiAoYmFzZS0+aXNVc2luZ0lubGluZVN0b3JhZ2UoKSkgewotICAg
ICAgICAvLyBPbiBYODYsIGxvYWQzMiB3aWxsIG9wdGltaXplIGZvciBhIHNsaWdodGx5IHNtYWxs
ZXIgaW5zdHJ1Y3Rpb24gaW4gdGhlIGNhc2UgdGhhdCByZXN1bHRQYXlvYWQgaXMgcmVnVDAKLSAg
ICAgICAgLy8gU2luY2Ugd2Ugd2FudCB0aGlzIGluc3RydWN0aW9uIHRvIGFsd2F5cyBiZSB0aGUg
c2FtZSBsZW5ndGgsIHdlIHVzZSBsb2FkMzJXaXRoUGF0Y2ggdG8gYXZvaWQgdGhpcyBwcm9ibGVt
Ci0gICAgICAgIGxvYWQzMldpdGhQYXRjaChyZWludGVycHJldF9jYXN0PGNoYXIqPigmYmFzZS0+
bV9pbmxpbmVTdG9yYWdlW2NhY2hlZE9mZnNldF0pICsgT0JKRUNUX09GRlNFVE9GKEpTVmFsdWUs
IHUuYXNCaXRzLnBheWxvYWQpLCByZXN1bHRQYXlsb2FkKTsKLSAgICAgICAgQVNTRVJUX0pJVF9P
RkZTRVQoZGlmZmVyZW5jZUJldHdlZW4oZGlyZWN0T2Zmc2V0QmVnaW4sIExhYmVsKHRoaXMpKSwg
cGF0Y2hMZW5ndGhNb3ZlKTsKKyAgICAgICAgbG9hZDMyKHJlaW50ZXJwcmV0X2Nhc3Q8Y2hhcio+
KCZiYXNlLT5tX2lubGluZVN0b3JhZ2VbY2FjaGVkT2Zmc2V0XSkgKyBPQkpFQ1RfT0ZGU0VUT0Yo
SlNWYWx1ZSwgdS5hc0JpdHMucGF5bG9hZCksIHJlc3VsdFBheWxvYWQpOwogICAgICAgICBsb2Fk
MzIocmVpbnRlcnByZXRfY2FzdDxjaGFyKj4oJmJhc2UtPm1faW5saW5lU3RvcmFnZVtjYWNoZWRP
ZmZzZXRdKSArIE9CSkVDVF9PRkZTRVRPRihKU1ZhbHVlLCB1LmFzQml0cy50YWcpLCByZXN1bHRU
YWcpOwogICAgICAgICByZXR1cm47CiAgICAgfQpAQCAtNTg3LDE4ICs1ODMsMTYgQEAgdm9pZCBK
SVQ6OmNvbXBpbGVHZXREaXJlY3RPZmZzZXQoSlNPYmplY3QqIGJhc2UsIFJlZ2lzdGVySUQgdGVt
cCwgUmVnaXN0ZXJJRCByZXMKICAgICBzaXplX3Qgb2Zmc2V0ID0gY2FjaGVkT2Zmc2V0ICogc2l6
ZW9mKEpTVmFsdWUpOwogICAgIAogICAgIFByb3BlcnR5U3RvcmFnZSogcHJvdG9Qcm9wZXJ0eVN0
b3JhZ2UgPSAmYmFzZS0+bV9leHRlcm5hbFN0b3JhZ2U7Ci0gICAgbG9hZFB0cldpdGhQYXRjaChz
dGF0aWNfY2FzdDx2b2lkKj4ocHJvdG9Qcm9wZXJ0eVN0b3JhZ2UpLCB0ZW1wKTsKLSAgICBBU1NF
UlRfSklUX09GRlNFVChkaWZmZXJlbmNlQmV0d2VlbihkaXJlY3RPZmZzZXRCZWdpbiwgTGFiZWwo
dGhpcykpLCBwYXRjaExlbmd0aE1vdmUpOworICAgIGxvYWRQdHIoc3RhdGljX2Nhc3Q8dm9pZCo+
KHByb3RvUHJvcGVydHlTdG9yYWdlKSwgdGVtcCk7CiAgICAgbG9hZDMyKEFkZHJlc3ModGVtcCwg
b2Zmc2V0ICsgT0JKRUNUX09GRlNFVE9GKEpTVmFsdWUsIHUuYXNCaXRzLnBheWxvYWQpKSwgcmVz
dWx0UGF5bG9hZCk7CiAgICAgbG9hZDMyKEFkZHJlc3ModGVtcCwgb2Zmc2V0ICsgT0JKRUNUX09G
RlNFVE9GKEpTVmFsdWUsIHUuYXNCaXRzLnRhZykpLCByZXN1bHRUYWcpOwogfQogCi11bnNpZ25l
ZCBKSVQ6OnRlc3RQcm90b3R5cGUoSlNWYWx1ZSBwcm90b3R5cGUsIEp1bXBMaXN0JiBmYWlsdXJl
Q2FzZXMpCit2b2lkIEpJVDo6dGVzdFByb3RvdHlwZShKU1ZhbHVlIHByb3RvdHlwZSwgSnVtcExp
c3QmIGZhaWx1cmVDYXNlcykKIHsKICAgICBpZiAocHJvdG90eXBlLmlzTnVsbCgpKQotICAgICAg
ICByZXR1cm4gMDsKKyAgICAgICAgcmV0dXJuOwogICAgIAotICAgIExhYmVsIHRlc3RQcm90b3R5
cGVCZWdpbih0aGlzKTsKICAgICAvLyBXZSBoYXZlIGEgc3BlY2lhbCBjYXNlIGZvciBYODZfNjQg
aGVyZSBiZWNhdXNlIFg4NiBpbnN0cnVjdGlvbnMgdGhhdCB0YWtlIGltbWVkaWF0ZSB2YWx1ZXMK
ICAgICAvLyBvbmx5IHRha2UgMzIgYml0IGltbWVkaWF0ZSB2YWx1ZXMsIHdoZXJhcyB0aGUgcG9p
bnRlciBjb25zdGFudHMgd2UgYXJlIHVzaW5nIGhlcmUgYXJlIDY0IGJpdAogICAgIC8vIHZhbHVl
cy4gIEluIHRoZSBub24gWDg2XzY0IGNhc2UsIHRoZSBnZW5lcmF0ZWQgY29kZSBpcyBzbGlnaHRs
eSBtb3JlIGVmZmljaWVudCBiZWNhdXNlIGl0IHVzZXMKQEAgLTYwOSwzNCArNjAzLDIzIEBAIHVu
c2lnbmVkIEpJVDo6dGVzdFByb3RvdHlwZShKU1ZhbHVlIHByb3RvdHlwZSwgSnVtcExpc3QmIGZh
aWx1cmVDYXNlcykKICNlbHNlCiAgICAgZmFpbHVyZUNhc2VzLmFwcGVuZChicmFuY2hQdHIoTm90
RXF1YWwsIEFic29sdXRlQWRkcmVzcygmYXNDZWxsKHByb3RvdHlwZSktPm1fc3RydWN0dXJlKSwg
SW1tUHRyKGFzQ2VsbChwcm90b3R5cGUpLT5zdHJ1Y3R1cmUoKSkpKTsKICNlbmRpZgotICAgIEFT
U0VSVF9KSVRfT0ZGU0VUKGRpZmZlcmVuY2VCZXR3ZWVuKHRlc3RQcm90b3R5cGVCZWdpbiwgTGFi
ZWwodGhpcykpLCBwYXRjaExlbmd0aFRlc3RQcm90b3R5cGUpOwotCi0gICAgcmV0dXJuIHBhdGNo
TGVuZ3RoVGVzdFByb3RvdHlwZTsKIH0KIAogYm9vbCBKSVQ6OnByaXZhdGVDb21waWxlUHV0QnlJ
ZFRyYW5zaXRpb24oU3RydWN0dXJlU3R1YkluZm8qIHN0dWJJbmZvLCBTdHJ1Y3R1cmUqIG9sZFN0
cnVjdHVyZSwgU3RydWN0dXJlKiBuZXdTdHJ1Y3R1cmUsIHNpemVfdCBjYWNoZWRPZmZzZXQsIFN0
cnVjdHVyZUNoYWluKiBjaGFpbiwgUmV0dXJuQWRkcmVzc1B0ciByZXR1cm5BZGRyZXNzLCBib29s
IGRpcmVjdCkKIHsKICAgICAvLyBJdCBpcyBhc3N1bWVkIHRoYXQgcmVnVDAgY29udGFpbnMgdGhl
IGJhc2VQYXlsb2FkIGFuZCByZWdUMSBjb250YWlucyB0aGUgYmFzZVRhZy4gIFRoZSB2YWx1ZSBj
YW4gYmUgZm91bmQgb24gdGhlIHN0YWNrLgogICAgIAotICAgIExhYmVsIHB1dEJ5SWRUcmFuc2l0
aW9uQmVnaW4odGhpcyk7CiAgICAgSnVtcExpc3QgZmFpbHVyZUNhc2VzOwogICAgIGZhaWx1cmVD
YXNlcy5hcHBlbmQoYnJhbmNoMzIoTm90RXF1YWwsIHJlZ1QxLCBJbW0zMihKU1ZhbHVlOjpDZWxs
VGFnKSkpOwogICAgIGZhaWx1cmVDYXNlcy5hcHBlbmQoYnJhbmNoUHRyKE5vdEVxdWFsLCBBZGRy
ZXNzKHJlZ1QwLCBPQkpFQ1RfT0ZGU0VUT0YoSlNDZWxsLCBtX3N0cnVjdHVyZSkpLCBJbW1QdHIo
b2xkU3RydWN0dXJlKSkpOwotCi0gICAgaW50IG9mZnNldCA9IHBhdGNoT2Zmc2V0UHV0QnlJZFBy
b3RvU3RydWN0ICsgcGF0Y2hMZW5ndGhCcmFuY2hQdHI7Ci0gICAgQVNTRVJUX0pJVF9PRkZTRVQo
ZGlmZmVyZW5jZUJldHdlZW4ocHV0QnlJZFRyYW5zaXRpb25CZWdpbiwgTGFiZWwodGhpcykpLCBv
ZmZzZXQpOwotCi0gICAgb2Zmc2V0ICs9IHRlc3RQcm90b3R5cGUob2xkU3RydWN0dXJlLT5zdG9y
ZWRQcm90b3R5cGUoKSwgZmFpbHVyZUNhc2VzKTsKLSAgICBBU1NFUlRfSklUX09GRlNFVChkaWZm
ZXJlbmNlQmV0d2VlbihwdXRCeUlkVHJhbnNpdGlvbkJlZ2luLCBMYWJlbCh0aGlzKSksIG9mZnNl
dCk7CisgICAgdGVzdFByb3RvdHlwZShvbGRTdHJ1Y3R1cmUtPnN0b3JlZFByb3RvdHlwZSgpLCBm
YWlsdXJlQ2FzZXMpOwogICAgIAogICAgIGlmICghZGlyZWN0KSB7CiAgICAgICAgIC8vIFZlcmlm
eSB0aGF0IG5vdGhpbmcgaW4gdGhlIHByb3RvdHlwZSBjaGFpbiBoYXMgYSBzZXR0ZXIgZm9yIHRo
aXMgcHJvcGVydHkuIAotICAgICAgICBmb3IgKFJlZlB0cjxTdHJ1Y3R1cmU+KiBpdCA9IGNoYWlu
LT5oZWFkKCk7ICppdDsgKytpdCkgewotICAgICAgICAgICAgb2Zmc2V0ICs9IHRlc3RQcm90b3R5
cGUoKCppdCktPnN0b3JlZFByb3RvdHlwZSgpLCBmYWlsdXJlQ2FzZXMpOwotICAgICAgICAgICAg
QVNTRVJUX0pJVF9PRkZTRVQoZGlmZmVyZW5jZUJldHdlZW4ocHV0QnlJZFRyYW5zaXRpb25CZWdp
biwgTGFiZWwodGhpcykpLCBvZmZzZXQpOwotICAgICAgICB9CisgICAgICAgIGZvciAoUmVmUHRy
PFN0cnVjdHVyZT4qIGl0ID0gY2hhaW4tPmhlYWQoKTsgKml0OyArK2l0KQorICAgICAgICAgICAg
dGVzdFByb3RvdHlwZSgoKml0KS0+c3RvcmVkUHJvdG90eXBlKCksIGZhaWx1cmVDYXNlcyk7CiAg
ICAgfQotICAgIAorCiAgICAgLy8gUmVhbGxvY2F0ZSBwcm9wZXJ0eSBzdG9yYWdlIGlmIG5lZWRl
ZC4KICAgICBDYWxsIGNhbGxUYXJnZXQ7CiAgICAgYm9vbCB3aWxsTmVlZFN0b3JhZ2VSZWFsbG9j
ID0gb2xkU3RydWN0dXJlLT5wcm9wZXJ0eVN0b3JhZ2VDYXBhY2l0eSgpICE9IG5ld1N0cnVjdHVy
ZS0+cHJvcGVydHlTdG9yYWdlQ2FwYWNpdHkoKTsKQEAgLTc5OSw3ICs3ODIsNiBAQCBib29sIEpJ
VDo6cHJpdmF0ZUNvbXBpbGVHZXRCeUlkUHJvdG8oU3RydWN0dXJlU3R1YkluZm8qIHN0dWJJbmZv
LCBTdHJ1Y3R1cmUqIHN0cgogewogICAgIC8vIHJlZ1QwIGhvbGRzIGEgSlNDZWxsKgogICAgIAot
ICAgIExhYmVsIGdldEJ5SWRQcm90b0JlZ2luKHRoaXMpOwogICAgIC8vIFRoZSBwcm90b3R5cGUg
b2JqZWN0IGRlZmluaXRlbHkgZXhpc3RzIChpZiB0aGlzIHN0dWIgZXhpc3RzIHRoZSBDb2RlQmxv
Y2sgaXMgcmVmZXJlbmNpbmcgYSBTdHJ1Y3R1cmUgdGhhdCBpcwogICAgIC8vIHJlZmVyZW5jaW5n
IHRoZSBwcm90b3R5cGUgb2JqZWN0IC0gbGV0J3Mgc3BlY3VsYXRpdmVseSBsb2FkIGl0J3MgdGFi
bGUgbmljZSBhbmQgZWFybHkhKQogICAgIEpTT2JqZWN0KiBwcm90b09iamVjdCA9IGFzT2JqZWN0
KHN0cnVjdHVyZS0+cHJvdG90eXBlRm9yTG9va3VwKGNhbGxGcmFtZSkpOwpAQCAtODE0LDggKzc5
Niw2IEBAIGJvb2wgSklUOjpwcml2YXRlQ29tcGlsZUdldEJ5SWRQcm90byhTdHJ1Y3R1cmVTdHVi
SW5mbyogc3R1YkluZm8sIFN0cnVjdHVyZSogc3RyCiAjZWxzZQogICAgIEp1bXAgZmFpbHVyZUNh
c2VzMiA9IGJyYW5jaFB0cihOb3RFcXVhbCwgQWJzb2x1dGVBZGRyZXNzKHByb3RvdHlwZVN0cnVj
dHVyZUFkZHJlc3MpLCBJbW1QdHIocHJvdG90eXBlU3RydWN0dXJlKSk7CiAjZW5kaWYKLSAgICBB
U1NFUlRfSklUX09GRlNFVChkaWZmZXJlbmNlQmV0d2VlbihnZXRCeUlkUHJvdG9CZWdpbiwgTGFi
ZWwodGhpcykpLCBwYXRjaE9mZnNldEdldEJ5SWRQcm90b1N0cnVjdCArIHBhdGNoTGVuZ3RoQnJh
bmNoUHRyKTsKLQogICAgIGJvb2wgbmVlZHNTdHViTGluayA9IGZhbHNlOwogICAgIC8vIENoZWNr
cyBvdXQgb2theSEKICAgICBpZiAoc2xvdC5jYWNoZWRQcm9wZXJ0eVR5cGUoKSA9PSBQcm9wZXJ0
eVNsb3Q6OkdldHRlcikgewpAQCAtODY4LDExICs4NDgsNyBAQCBib29sIEpJVDo6cHJpdmF0ZUNv
bXBpbGVHZXRCeUlkUHJvdG8oU3RydWN0dXJlU3R1YkluZm8qIHN0dWJJbmZvLCBTdHJ1Y3R1cmUq
IHN0cgogICAgIAogICAgIC8vIFdlIGRvbid0IHdhbnQgdG8gcGF0Y2ggbW9yZSB0aGFuIG9uY2Ug
LSBpbiBmdXR1cmUgZ28gdG8gY3RpX29wX3B1dF9ieV9pZF9nZW5lcmljLgogICAgIHJlcGF0Y2hC
dWZmZXIucmVsaW5rQ2FsbGVyVG9GdW5jdGlvbihyZXR1cm5BZGRyZXNzLCBGdW5jdGlvblB0cihj
dGlfb3BfZ2V0X2J5X2lkX3Byb3RvX2xpc3QpKTsKLSNpZiBFTkFCTEUoTU9WQUJMRV9HQ19PQkpF
Q1RTKQotICAgIHN0dWJJbmZvLT5pbml0R2V0QnlJZFByb3RvKHN0cnVjdHVyZSwgcHJvdG90eXBl
U3RydWN0dXJlLCBlbnRyeUxhYmVsLCBzbG90LmNhY2hlZFByb3BlcnR5VHlwZSgpKTsKLSNlbHNl
CiAgICAgc3R1YkluZm8tPmluaXRHZXRCeUlkUHJvdG8oc3RydWN0dXJlLCBwcm90b3R5cGVTdHJ1
Y3R1cmUsIGVudHJ5TGFiZWwpOwotI2VuZGlmCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKQEAgLTk1
MCw3ICs5MjYsNiBAQCBib29sIEpJVDo6cHJpdmF0ZUNvbXBpbGVHZXRCeUlkUHJvdG9MaXN0KFN0
cnVjdHVyZVN0dWJJbmZvKiBzdHViSW5mbywgU3RydWN0dXJlKgogCiAgICAgLy8gcmVnVDAgaG9s
ZHMgYSBKU0NlbGwqCiAgICAgCi0gICAgTGFiZWwgZ2V0QnlJZFByb3RvTGlzdEJlZ2luKHRoaXMp
OwogICAgIC8vIFRoZSBwcm90b3R5cGUgb2JqZWN0IGRlZmluaXRlbHkgZXhpc3RzIChpZiB0aGlz
IHN0dWIgZXhpc3RzIHRoZSBDb2RlQmxvY2sgaXMgcmVmZXJlbmNpbmcgYSBTdHJ1Y3R1cmUgdGhh
dCBpcwogICAgIC8vIHJlZmVyZW5jaW5nIHRoZSBwcm90b3R5cGUgb2JqZWN0IC0gbGV0J3Mgc3Bl
Y3VsYXRpdmVseSBsb2FkIGl0J3MgdGFibGUgbmljZSBhbmQgZWFybHkhKQogICAgIEpTT2JqZWN0
KiBwcm90b09iamVjdCA9IGFzT2JqZWN0KHN0cnVjdHVyZS0+cHJvdG90eXBlRm9yTG9va3VwKGNh
bGxGcmFtZSkpOwpAQCAtOTY2LDcgKzk0MSw2IEBAIGJvb2wgSklUOjpwcml2YXRlQ29tcGlsZUdl
dEJ5SWRQcm90b0xpc3QoU3RydWN0dXJlU3R1YkluZm8qIHN0dWJJbmZvLCBTdHJ1Y3R1cmUqCiAj
ZWxzZQogICAgIEp1bXAgZmFpbHVyZUNhc2VzMiA9IGJyYW5jaFB0cihOb3RFcXVhbCwgQWJzb2x1
dGVBZGRyZXNzKHByb3RvdHlwZVN0cnVjdHVyZUFkZHJlc3MpLCBJbW1QdHIocHJvdG90eXBlU3Ry
dWN0dXJlKSk7CiAjZW5kaWYKLSAgICBBU1NFUlRfSklUX09GRlNFVChkaWZmZXJlbmNlQmV0d2Vl
bihnZXRCeUlkUHJvdG9MaXN0QmVnaW4sIExhYmVsKHRoaXMpKSwgcGF0Y2hPZmZzZXRHZXRCeUlk
UHJvdG9TdHJ1Y3QgKyBwYXRjaExlbmd0aEJyYW5jaFB0cik7CiAgICAgCiAgICAgYm9vbCBuZWVk
c1N0dWJMaW5rID0gZmFsc2U7CiAgICAgaWYgKHNsb3QuY2FjaGVkUHJvcGVydHlUeXBlKCkgPT0g
UHJvcGVydHlTbG90OjpHZXR0ZXIpIHsKQEAgLTk4Nyw3ICs5NjEsNyBAQCBib29sIEpJVDo6cHJp
dmF0ZUNvbXBpbGVHZXRCeUlkUHJvdG9MaXN0KFN0cnVjdHVyZVN0dWJJbmZvKiBzdHViSW5mbywg
U3RydWN0dXJlKgogICAgICAgICBzdHViQ2FsbC5jYWxsKCk7CiAgICAgfSBlbHNlCiAgICAgICAg
IGNvbXBpbGVHZXREaXJlY3RPZmZzZXQocHJvdG9PYmplY3QsIHJlZ1QyLCByZWdUMSwgcmVnVDAs
IGNhY2hlZE9mZnNldCk7Ci0KKyAgICAKICAgICBKdW1wIHN1Y2Nlc3MgPSBqdW1wKCk7CiAgICAg
CiAgICAgTGlua0J1ZmZlciBwYXRjaEJ1ZmZlcih0aGlzLCBtX2NvZGVCbG9jay0+ZXhlY3V0YWJs
ZVBvb2woKSk7CkBAIC0xMDEyLDEyICs5ODYsOCBAQCBib29sIEpJVDo6cHJpdmF0ZUNvbXBpbGVH
ZXRCeUlkUHJvdG9MaXN0KFN0cnVjdHVyZVN0dWJJbmZvKiBzdHViSW5mbywgU3RydWN0dXJlKgog
ICAgIAogICAgIHN0cnVjdHVyZS0+cmVmKCk7CiAgICAgcHJvdG90eXBlU3RydWN0dXJlLT5yZWYo
KTsKLSNpZiBFTkFCTEUoTU9WQUJMRV9HQ19PQkpFQ1RTKQotICAgIHByb3RvdHlwZVN0cnVjdHVy
ZXMtPmxpc3RbY3VycmVudEluZGV4XS5zZXQoZW50cnlMYWJlbCwgc3RydWN0dXJlLCBwcm90b3R5
cGVTdHJ1Y3R1cmUsIHNsb3QuY2FjaGVkUHJvcGVydHlUeXBlKCkpOwotI2Vsc2UKICAgICBwcm90
b3R5cGVTdHJ1Y3R1cmVzLT5saXN0W2N1cnJlbnRJbmRleF0uc2V0KGVudHJ5TGFiZWwsIHN0cnVj
dHVyZSwgcHJvdG90eXBlU3RydWN0dXJlKTsKLSNlbmRpZgotCisgICAgCiAgICAgLy8gRmluYWxs
eSBwYXRjaCB0aGUganVtcCB0byBzbG93IGNhc2UgYmFjayBpbiB0aGUgaG90IHBhdGggdG8ganVt
cCBoZXJlIGluc3RlYWQuCiAgICAgQ29kZUxvY2F0aW9uSnVtcCBqdW1wTG9jYXRpb24gPSBzdHVi
SW5mby0+aG90UGF0aEJlZ2luLmp1bXBBdE9mZnNldChwYXRjaE9mZnNldEdldEJ5SWRCcmFuY2hU
b1Nsb3dDYXNlKTsKICAgICBSZXBhdGNoQnVmZmVyIHJlcGF0Y2hCdWZmZXIobV9jb2RlQmxvY2sp
OwpAQCAtMTAzNCw3ICsxMDA0LDYgQEAgYm9vbCBKSVQ6OnByaXZhdGVDb21waWxlR2V0QnlJZENo
YWluTGlzdChTdHJ1Y3R1cmVTdHViSW5mbyogc3R1YkluZm8sIFN0cnVjdHVyZSoKICAgICAvLyBy
ZWdUMCBob2xkcyBhIEpTQ2VsbCoKICAgICBBU1NFUlQoY291bnQpOwogICAgIAotICAgIExhYmVs
IGdldEJ5SWRDaGFpbkxpc3RCZWdpbih0aGlzKTsKICAgICBKdW1wTGlzdCBidWNrZXRzT2ZGYWls
OwogICAgIAogICAgIC8vIENoZWNrIGVheCBpcyBhbiBvYmplY3Qgb2YgdGhlIHJpZ2h0IFN0cnVj
dHVyZS4KQEAgLTEwNDcsOSArMTAxNiw2IEBAIGJvb2wgSklUOjpwcml2YXRlQ29tcGlsZUdldEJ5
SWRDaGFpbkxpc3QoU3RydWN0dXJlU3R1YkluZm8qIHN0dWJJbmZvLCBTdHJ1Y3R1cmUqCiAgICAg
ICAgIHByb3RvT2JqZWN0ID0gYXNPYmplY3QoY3VyclN0cnVjdHVyZS0+cHJvdG90eXBlRm9yTG9v
a3VwKGNhbGxGcmFtZSkpOwogICAgICAgICBjdXJyU3RydWN0dXJlID0gaXQtPmdldCgpOwogICAg
ICAgICB0ZXN0UHJvdG90eXBlKHByb3RvT2JqZWN0LCBidWNrZXRzT2ZGYWlsKTsKLQotICAgICAg
ICBBU1NFUlRfSklUX09GRlNFVChkaWZmZXJlbmNlQmV0d2VlbihnZXRCeUlkQ2hhaW5MaXN0QmVn
aW4sIExhYmVsKHRoaXMpKSwKLSAgICAgICAgICAgIHBhdGNoT2Zmc2V0R2V0QnlJZFByb3RvU3Ry
dWN0ICsgcGF0Y2hMZW5ndGhCcmFuY2hQdHIgKyBzdGF0aWNfY2FzdDxpbnQ+KGkpICogcGF0Y2hM
ZW5ndGhUZXN0UHJvdG90eXBlKTsKICAgICB9CiAgICAgQVNTRVJUKHByb3RvT2JqZWN0KTsKICAg
ICAKQEAgLTEwNzIsNyArMTAzOCw3IEBAIGJvb2wgSklUOjpwcml2YXRlQ29tcGlsZUdldEJ5SWRD
aGFpbkxpc3QoU3RydWN0dXJlU3R1YkluZm8qIHN0dWJJbmZvLCBTdHJ1Y3R1cmUqCiAgICAgICAg
IHN0dWJDYWxsLmNhbGwoKTsKICAgICB9IGVsc2UKICAgICAgICAgY29tcGlsZUdldERpcmVjdE9m
ZnNldChwcm90b09iamVjdCwgcmVnVDIsIHJlZ1QxLCByZWdUMCwgY2FjaGVkT2Zmc2V0KTsKLSAg
ICAKKwogICAgIEp1bXAgc3VjY2VzcyA9IGp1bXAoKTsKICAgICAKICAgICBMaW5rQnVmZmVyIHBh
dGNoQnVmZmVyKHRoaXMsIG1fY29kZUJsb2NrLT5leGVjdXRhYmxlUG9vbCgpKTsKQEAgLTEwOTgs
MTIgKzEwNjQsOCBAQCBib29sIEpJVDo6cHJpdmF0ZUNvbXBpbGVHZXRCeUlkQ2hhaW5MaXN0KFN0
cnVjdHVyZVN0dWJJbmZvKiBzdHViSW5mbywgU3RydWN0dXJlKgogICAgIC8vIFRyYWNrIHRoZSBz
dHViIHdlIGhhdmUgY3JlYXRlZCBzbyB0aGF0IGl0IHdpbGwgYmUgZGVsZXRlZCBsYXRlci4KICAg
ICBzdHJ1Y3R1cmUtPnJlZigpOwogICAgIGNoYWluLT5yZWYoKTsKLSNpZiBFTkFCTEUoTU9WQUJM
RV9HQ19PQkpFQ1RTKQotICAgIHByb3RvdHlwZVN0cnVjdHVyZXMtPmxpc3RbY3VycmVudEluZGV4
XS5zZXQoZW50cnlMYWJlbCwgc3RydWN0dXJlLCBjaGFpbiwgY291bnQsIHNsb3QuY2FjaGVkUHJv
cGVydHlUeXBlKCkpOwotI2Vsc2UKICAgICBwcm90b3R5cGVTdHJ1Y3R1cmVzLT5saXN0W2N1cnJl
bnRJbmRleF0uc2V0KGVudHJ5TGFiZWwsIHN0cnVjdHVyZSwgY2hhaW4pOwotI2VuZGlmCi0KKyAg
ICAKICAgICAvLyBGaW5hbGx5IHBhdGNoIHRoZSBqdW1wIHRvIHNsb3cgY2FzZSBiYWNrIGluIHRo
ZSBob3QgcGF0aCB0byBqdW1wIGhlcmUgaW5zdGVhZC4KICAgICBDb2RlTG9jYXRpb25KdW1wIGp1
bXBMb2NhdGlvbiA9IHN0dWJJbmZvLT5ob3RQYXRoQmVnaW4uanVtcEF0T2Zmc2V0KHBhdGNoT2Zm
c2V0R2V0QnlJZEJyYW5jaFRvU2xvd0Nhc2UpOwogICAgIFJlcGF0Y2hCdWZmZXIgcmVwYXRjaEJ1
ZmZlcihtX2NvZGVCbG9jayk7CkBAIC0xMTE3LDcgKzEwNzksNiBAQCBib29sIEpJVDo6cHJpdmF0
ZUNvbXBpbGVHZXRCeUlkQ2hhaW4oU3RydWN0dXJlU3R1YkluZm8qIHN0dWJJbmZvLCBTdHJ1Y3R1
cmUqIHN0cgogICAgIC8vIHJlZ1QwIGhvbGRzIGEgSlNDZWxsKgogICAgIEFTU0VSVChjb3VudCk7
CiAgICAgCi0gICAgTGFiZWwgZ2V0QnlJZENoYWluQmVnaW4odGhpcyk7CiAgICAgSnVtcExpc3Qg
YnVja2V0c09mRmFpbDsKICAgICAKICAgICAvLyBDaGVjayBlYXggaXMgYW4gb2JqZWN0IG9mIHRo
ZSByaWdodCBTdHJ1Y3R1cmUuCkBAIC0xMTMwLDkgKzEwOTEsNiBAQCBib29sIEpJVDo6cHJpdmF0
ZUNvbXBpbGVHZXRCeUlkQ2hhaW4oU3RydWN0dXJlU3R1YkluZm8qIHN0dWJJbmZvLCBTdHJ1Y3R1
cmUqIHN0cgogICAgICAgICBwcm90b09iamVjdCA9IGFzT2JqZWN0KGN1cnJTdHJ1Y3R1cmUtPnBy
b3RvdHlwZUZvckxvb2t1cChjYWxsRnJhbWUpKTsKICAgICAgICAgY3VyclN0cnVjdHVyZSA9IGl0
LT5nZXQoKTsKICAgICAgICAgdGVzdFByb3RvdHlwZShwcm90b09iamVjdCwgYnVja2V0c09mRmFp
bCk7Ci0KLSAgICAgICAgQVNTRVJUX0pJVF9PRkZTRVQoZGlmZmVyZW5jZUJldHdlZW4oZ2V0QnlJ
ZENoYWluQmVnaW4sIExhYmVsKHRoaXMpKSwKLSAgICAgICAgICAgIHBhdGNoT2Zmc2V0R2V0QnlJ
ZFByb3RvU3RydWN0ICsgcGF0Y2hMZW5ndGhCcmFuY2hQdHIgKyBzdGF0aWNfY2FzdDxpbnQ+KGkp
ICogcGF0Y2hMZW5ndGhUZXN0UHJvdG90eXBlKTsKICAgICB9CiAgICAgQVNTRVJUKHByb3RvT2Jq
ZWN0KTsKICAgICAKQEAgLTExODMsMTEgKzExNDEsNyBAQCBib29sIEpJVDo6cHJpdmF0ZUNvbXBp
bGVHZXRCeUlkQ2hhaW4oU3RydWN0dXJlU3R1YkluZm8qIHN0dWJJbmZvLCBTdHJ1Y3R1cmUqIHN0
cgogICAgIAogICAgIC8vIFdlIGRvbid0IHdhbnQgdG8gcGF0Y2ggbW9yZSB0aGFuIG9uY2UgLSBp
biBmdXR1cmUgZ28gdG8gY3RpX29wX3B1dF9ieV9pZF9nZW5lcmljLgogICAgIHJlcGF0Y2hCdWZm
ZXIucmVsaW5rQ2FsbGVyVG9GdW5jdGlvbihyZXR1cm5BZGRyZXNzLCBGdW5jdGlvblB0cihjdGlf
b3BfZ2V0X2J5X2lkX3Byb3RvX2xpc3QpKTsKLSNpZiBFTkFCTEUoTU9WQUJMRV9HQ19PQkpFQ1RT
KQotICAgIHN0dWJJbmZvLT5pbml0R2V0QnlJZENoYWluKHN0cnVjdHVyZSwgY2hhaW4sIGVudHJ5
TGFiZWwsIGNvdW50LCBzbG90LmNhY2hlZFByb3BlcnR5VHlwZSgpKTsKLSNlbHNlCiAgICAgc3R1
YkluZm8tPmluaXRHZXRCeUlkQ2hhaW4oc3RydWN0dXJlLCBjaGFpbiwgZW50cnlMYWJlbCk7Ci0j
ZW5kaWYKICAgICByZXR1cm4gdHJ1ZTsKIH0KIApkaWZmIC0tZ2l0IGEvSmF2YVNjcmlwdENvcmUv
aml0L0pJVFN0dWJzLmNwcCBiL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRTdHVicy5jcHAKaW5kZXgg
N2Q5NGU3NmVlODgxMTJiNjVlMTZkNjM5ZjBkYjhkNzMxMGJjZTZlNy4uYzRmZjBjYTQyM2E4NTE0
M2NlYTAxYmMyMjg1Mzg4MjQ2N2NhYWU4MiAxMDA2NDQKLS0tIGEvSmF2YVNjcmlwdENvcmUvaml0
L0pJVFN0dWJzLmNwcAorKysgYi9KYXZhU2NyaXB0Q29yZS9qaXQvSklUU3R1YnMuY3BwCkBAIC0x
NTk3LDE3ICsxNTk3LDkgQEAgREVGSU5FX1NUVUJfRlVOQ1RJT04oRW5jb2RlZEpTVmFsdWUsIG9w
X2dldF9ieV9pZF9zZWxmX2ZhaWwpCiBzdGF0aWMgdm9pZCBzZXR1cFBvbHltb3JwaGljUHJvdG9M
aXN0KFN0cnVjdHVyZVN0dWJJbmZvKiBzdHViSW5mbykKIHsKICAgICBpZiAoc3R1YkluZm8tPmFj
Y2Vzc1R5cGUgPT0gYWNjZXNzX2dldF9ieV9pZF9wcm90bykKLSNpZiBFTkFCTEUoTU9WQUJMRV9H
Q19PQkpFQ1RTKQotICAgICAgICBzdHViSW5mby0+aW5pdEdldEJ5SWRQcm90b0xpc3QobmV3IFBv
bHltb3JwaGljQWNjZXNzU3RydWN0dXJlTGlzdChzdHViSW5mby0+c3R1YlJvdXRpbmUsIHN0dWJJ
bmZvLT51LmdldEJ5SWRQcm90by5iYXNlT2JqZWN0U3RydWN0dXJlLCBzdHViSW5mby0+dS5nZXRC
eUlkUHJvdG8ucHJvdG90eXBlU3RydWN0dXJlLCBzdHViSW5mby0+dS5nZXRCeUlkUHJvdG8ucHJv
cGVydHlUeXBlKSk7Ci0jZWxzZQogICAgICAgICBzdHViSW5mby0+aW5pdEdldEJ5SWRQcm90b0xp
c3QobmV3IFBvbHltb3JwaGljQWNjZXNzU3RydWN0dXJlTGlzdChzdHViSW5mby0+c3R1YlJvdXRp
bmUsIHN0dWJJbmZvLT51LmdldEJ5SWRQcm90by5iYXNlT2JqZWN0U3RydWN0dXJlLCBzdHViSW5m
by0+dS5nZXRCeUlkUHJvdG8ucHJvdG90eXBlU3RydWN0dXJlKSk7Ci0jZW5kaWYKICAgICBlbHNl
IGlmIChzdHViSW5mby0+YWNjZXNzVHlwZSA9PSBhY2Nlc3NfZ2V0X2J5X2lkX2NoYWluKQotI2lm
IEVOQUJMRShNT1ZBQkxFX0dDX09CSkVDVFMpCi0gICAgICAgIHN0dWJJbmZvLT5pbml0R2V0QnlJ
ZFByb3RvTGlzdChuZXcgUG9seW1vcnBoaWNBY2Nlc3NTdHJ1Y3R1cmVMaXN0KHN0dWJJbmZvLT5z
dHViUm91dGluZSwgc3R1YkluZm8tPnUuZ2V0QnlJZENoYWluLmJhc2VPYmplY3RTdHJ1Y3R1cmUs
IHN0dWJJbmZvLT51LmdldEJ5SWRDaGFpbi5jaGFpbiwgc3R1YkluZm8tPnUuZ2V0QnlJZENoYWlu
LmNvdW50LCBzdHViSW5mby0+dS5nZXRCeUlkQ2hhaW4ucHJvcGVydHlUeXBlKSk7Ci0jZWxzZQog
ICAgICAgICBzdHViSW5mby0+aW5pdEdldEJ5SWRQcm90b0xpc3QobmV3IFBvbHltb3JwaGljQWNj
ZXNzU3RydWN0dXJlTGlzdChzdHViSW5mby0+c3R1YlJvdXRpbmUsIHN0dWJJbmZvLT51LmdldEJ5
SWRDaGFpbi5iYXNlT2JqZWN0U3RydWN0dXJlLCBzdHViSW5mby0+dS5nZXRCeUlkQ2hhaW4uY2hh
aW4pKTsKLSNlbmRpZgogICAgIEFTU0VSVChzdHViSW5mby0+YWNjZXNzVHlwZSA9PSBhY2Nlc3Nf
Z2V0X2J5X2lkX3Byb3RvX2xpc3QpOwogfQogCmRpZmYgLS1naXQgYS9KYXZhU2NyaXB0Q29yZS93
dGYvUGxhdGZvcm0uaCBiL0phdmFTY3JpcHRDb3JlL3d0Zi9QbGF0Zm9ybS5oCmluZGV4IGQwMGM1
NTc2MWM2Njc3NzQzNDgxYzk4MWZmNGJjOGM1NWY3NGFiMGIuLmY0MGY4MzRmMGEwMjQyYWQ0MmZm
MmEzYTBmYzMzZDg4MmJiMGIwYTAgMTAwNjQ0Ci0tLSBhL0phdmFTY3JpcHRDb3JlL3d0Zi9QbGF0
Zm9ybS5oCisrKyBiL0phdmFTY3JpcHRDb3JlL3d0Zi9QbGF0Zm9ybS5oCkBAIC0xMDgyLDggKzEw
ODIsNiBAQCBvbiBNaW5HVy4gU2VlIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0yOTI2OCAqLwogCiAjZGVmaW5lIEVOQUJMRV9KU0NfWk9NQklFUyAwCiAKLSNkZWZpbmUg
RU5BQkxFX01PVkFCTEVfR0NfT0JKRUNUUyAwCi0KIC8qIEZJWE1FOiBFdmVudHVhbGx5IHdlIHNo
b3VsZCBlbmFibGUgdGhpcyBmb3IgYWxsIHBsYXRmb3JtcyBhbmQgZ2V0IHJpZCBvZiB0aGUgZGVm
aW5lLiAqLwogI2lmIFBMQVRGT1JNKE1BQykgfHwgUExBVEZPUk0oV0lOKQogI2RlZmluZSBXVEZf
VVNFX1BMQVRGT1JNX1NUUkFURUdJRVMgMQo=
</data>

          </attachment>
      

    </bug>

</bugzilla>