<?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>222818</bug_id>
          
          <creation_ts>2021-03-05 13:00:18 -0800</creation_ts>
          <short_desc>[GTK] Clean up GTK-specific text checker stuff</short_desc>
          <delta_ts>2021-03-05 15:07:43 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKitGTK</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>PC</rep_platform>
          <op_sys>Linux</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=181916</see_also>
          <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="Michael Catanzaro">mcatanzaro</reporter>
          <assigned_to name="Michael Catanzaro">mcatanzaro</assigned_to>
          <cc>bugs-noreply</cc>
    
    <cc>don.olmstead</cc>
    
    <cc>mcatanzaro</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1736492</commentid>
    <comment_count>0</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2021-03-05 13:00:18 -0800</bug_when>
    <thetext>This moves GTK-specific classes into GTK-specific directories. It also exposes WKTextCheckerSetContinuousSpellCheckingEnabled and uses it in UIScriptControllerGtk, which is needed for bug #181916.

This code is pretty messy, but now it&apos;s a *platform-specific* mess, which is a small improvement.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1736495</commentid>
    <comment_count>1</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2021-03-05 13:04:51 -0800</bug_when>
    <thetext>Ah drat, I thought it was entirely GTK-specific, but I missed WKTextCheckerSetTestingMode, which is really cross-platform. Need to change a few things.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1736513</commentid>
    <comment_count>2</comment_count>
      <attachid>422406</attachid>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2021-03-05 13:37:19 -0800</bug_when>
    <thetext>Created attachment 422406
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1736550</commentid>
    <comment_count>3</comment_count>
      <attachid>422406</attachid>
    <who name="Don Olmstead">don.olmstead</who>
    <bug_when>2021-03-05 14:26:54 -0800</bug_when>
    <thetext>Comment on attachment 422406
Patch

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

&gt; Source/WebKit/UIProcess/API/C/WKTextChecker.h:26
&gt;  
&gt; -#ifndef WKTextChecker_h
&gt; -#define WKTextChecker_h
&gt; +#pragma once

Any public C API header should have the #ifndef guards.

&gt; Source/WebKit/UIProcess/API/C/gtk/WKTextCheckerGtk.h:26
&gt; -#ifndef WKTextCheckerGtk_h
&gt; -#define WKTextCheckerGtk_h
&gt; +#pragma once

Should be #ifndef guards</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1736561</commentid>
    <comment_count>4</comment_count>
      <attachid>422425</attachid>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2021-03-05 14:41:23 -0800</bug_when>
    <thetext>Created attachment 422425
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1736575</commentid>
    <comment_count>5</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-03-05 15:07:40 -0800</bug_when>
    <thetext>Committed r274011: &lt;https://commits.webkit.org/r274011&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 422425.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>422406</attachid>
            <date>2021-03-05 13:37:19 -0800</date>
            <delta_ts>2021-03-05 14:41:20 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-222818-20210305153718.patch</filename>
            <type>text/plain</type>
            <size>52388</size>
            <attacher name="Michael Catanzaro">mcatanzaro</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjczOTgwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDk5MTE1ODYyZTYwY2VmNjY2
NDg0YTMwNWJjMTk0ZDRiNWE4NWQxMzQuLjc4ODA3ZGI2MmY1MTBkMWUwOGNkN2QzZjFiY2Y1MmJi
M2UzMmYxMWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNzMgQEAKKzIwMjEtMDMtMDUgIE1pY2hhZWwg
Q2F0YW56YXJvICA8bWNhdGFuemFyb0Bnbm9tZS5vcmc+CisKKyAgICAgICAgW0dUS10gQ2xlYW4g
dXAgR1RLLXNwZWNpZmljIHRleHQgY2hlY2tlciBzdHVmZgorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjIyODE4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBtb3ZlcyB0aGUgR1RLLXNwZWNpZmljIGNs
YXNzZXMgV2ViVGV4dENoZWNrZXIgYW5kIFdlYlRleHRDaGVja2VyQ2xpZW50IGludG8KKyAgICAg
ICAgR1RLLXNwZWNpZmljIGRpcmVjdG9yaWVzLgorCisgICAgICAgIFRoaXMgYWxzbyBtb3ZlcyBt
b3N0IG9mIFdLVGV4dENoZWNrZXIsIGV4Y2VwdCBmb3IgV0tUZXh0Q2hlY2tlclNldFRlc3RpbmdN
b2RlLCB3aGljaCBpcworICAgICAgICBjcm9zcy1wbGF0Zm9ybS4gVGhpcyBpcyBub3QgcXVpdGUg
aG93IHdlIG5vcm1hbGx5IGRvIGl0IC0tIG5vcm1hbGx5IHdlIHRyeSB0byBoYXZlIG9uZQorICAg
ICAgICBjcm9zcy1wbGF0Zm9ybSBoZWFkZXIgd2l0aCBwbGF0Zm9ybS1zcGVjaWZpYyBjb25kaXRp
b25hbHMgYW5kIG9ubHkgc2VwYXJhdGUgb3V0IHBsYXRmb3JtLQorICAgICAgICBzcGVjaWZpYyBz
b3VyY2UgZmlsZXMgLS0gYnV0IGluIHRoaXMgY2FzZSB0aGUgaGVhZGVyIGlzIGFsbW9zdCBlbnRp
cmVseSBHVEstc3BlY2lmaWMsIHNvIGl0CisgICAgICAgIG1ha2VzIHNlbnNlIHRvIGRvIGl0IHRo
aXMgd2F5LgorCisgICAgICAgIFRoaXMgYWxzbyBleHBvc2VzIFdLVGV4dENoZWNrZXJTZXRDb250
aW51b3VzU3BlbGxDaGVja2luZ0VuYWJsZWQgYW5kIHVzZXMgaXQgaW4KKyAgICAgICAgVUlTY3Jp
cHRDb250cm9sbGVyR3RrLCB3aGljaCBpcyBuZWVkZWQgZm9yIGJ1ZyAjMTgxOTE2LgorCisgICAg
ICAgIFRoaXMgY29kZSBpcyBhbGwgcHJldHR5IG1lc3N5LCBlc3BlY2lhbGx5IHRoZSBXS1RleHRD
aGVja2VyQ2xpZW50ICh3aGljaCBhY3R1YWxseSBoYXMgaXRzCisgICAgICAgIG93biBXS1RleHRD
aGVja2VyU2V0Q29udGludW91c1NwZWxsQ2hlY2tpbmdFbmFibGVkISksIGJ1dCBub3cgaXQncyBh
ICpwbGF0Zm9ybS1zcGVjaWZpYyoKKyAgICAgICAgbWVzcywgd2hpY2ggaXMgYSBzbWFsbCBpbXBy
b3ZlbWVudC4KKworICAgICAgICAqIFNvdXJjZXNHVEsudHh0OgorICAgICAgICAqIFVJUHJvY2Vz
cy9BUEkvQy9XS1RleHRDaGVja2VyLmNwcDoKKyAgICAgICAgKFdLVGV4dENoZWNrZXJTZXRUZXN0
aW5nTW9kZSk6CisgICAgICAgIChXS1RleHRDaGVja2VyU2V0Q2xpZW50KTogRGVsZXRlZC4KKyAg
ICAgICAgKFdLVGV4dENoZWNrZXJDb250aW51b3VzU3BlbGxDaGVja2luZ0VuYWJsZWRTdGF0ZUNo
YW5nZWQpOiBEZWxldGVkLgorICAgICAgICAoV0tUZXh0Q2hlY2tlckdyYW1tYXJDaGVja2luZ0Vu
YWJsZWRTdGF0ZUNoYW5nZWQpOiBEZWxldGVkLgorICAgICAgICAoV0tUZXh0Q2hlY2tlckNoZWNr
U3BlbGxpbmcpOiBEZWxldGVkLgorICAgICAgICAoV0tUZXh0Q2hlY2tlckNoYW5nZVNwZWxsaW5n
VG9Xb3JkKTogRGVsZXRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvV0tUZXh0Q2hlY2tl
ci5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9ndGsvV0tUZXh0Q2hlY2tlckd0ay5jcHA6
CisgICAgICAgIChXS1RleHRDaGVja2VyU2V0Q2xpZW50KToKKyAgICAgICAgKFdLVGV4dENoZWNr
ZXJDb250aW51b3VzU3BlbGxDaGVja2luZ0VuYWJsZWRTdGF0ZUNoYW5nZWQpOgorICAgICAgICAo
V0tUZXh0Q2hlY2tlckdyYW1tYXJDaGVja2luZ0VuYWJsZWRTdGF0ZUNoYW5nZWQpOgorICAgICAg
ICAoV0tUZXh0Q2hlY2tlckNoZWNrU3BlbGxpbmcpOgorICAgICAgICAoV0tUZXh0Q2hlY2tlckNo
YW5nZVNwZWxsaW5nVG9Xb3JkKToKKyAgICAgICAgKFdLVGV4dENoZWNrZXJTZXRDb250aW51b3Vz
U3BlbGxDaGVja2luZ0VuYWJsZWQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9ndGsvV0tU
ZXh0Q2hlY2tlckd0ay5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9ndGsvV2ViVGV4dENoZWNrZXIu
Y3BwOiBSZW5hbWVkIGZyb20gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViVGV4dENoZWNrZXIu
Y3BwLgorICAgICAgICAoV2ViS2l0OjpXZWJUZXh0Q2hlY2tlcjo6c2luZ2xldG9uKToKKyAgICAg
ICAgKFdlYktpdDo6V2ViVGV4dENoZWNrZXI6OldlYlRleHRDaGVja2VyKToKKyAgICAgICAgKFdl
YktpdDo6V2ViVGV4dENoZWNrZXI6OnNldENsaWVudCk6CisgICAgICAgIChXZWJLaXQ6OnVwZGF0
ZVN0YXRlRm9yQWxsQ29udGV4dHMpOgorICAgICAgICAoV2ViS2l0OjpXZWJUZXh0Q2hlY2tlcjo6
Y29udGludW91c1NwZWxsQ2hlY2tpbmdFbmFibGVkU3RhdGVDaGFuZ2VkKToKKyAgICAgICAgKFdl
YktpdDo6V2ViVGV4dENoZWNrZXI6OmdyYW1tYXJDaGVja2luZ0VuYWJsZWRTdGF0ZUNoYW5nZWQp
OgorICAgICAgICAoV2ViS2l0OjpXZWJUZXh0Q2hlY2tlcjo6Y2hlY2tTcGVsbGluZyk6CisgICAg
ICAgIChXZWJLaXQ6OldlYlRleHRDaGVja2VyOjpjaGFuZ2VTcGVsbGluZ1RvV29yZCk6CisgICAg
ICAgICogVUlQcm9jZXNzL2d0ay9XZWJUZXh0Q2hlY2tlci5oOiBSZW5hbWVkIGZyb20gU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2ViVGV4dENoZWNrZXIuaC4KKyAgICAgICAgKFdlYktpdDo6V2Vi
VGV4dENoZWNrZXI6OmNsaWVudCk6CisgICAgICAgICogVUlQcm9jZXNzL2d0ay9XZWJUZXh0Q2hl
Y2tlckNsaWVudC5jcHA6IFJlbmFtZWQgZnJvbSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJU
ZXh0Q2hlY2tlckNsaWVudC5jcHAuCisgICAgICAgIChXZWJLaXQ6OldlYlRleHRDaGVja2VyQ2xp
ZW50Ojpjb250aW51b3VzU3BlbGxDaGVja2luZ0FsbG93ZWQpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJUZXh0Q2hlY2tlckNsaWVudDo6Y29udGludW91c1NwZWxsQ2hlY2tpbmdFbmFibGVkKToKKyAg
ICAgICAgKFdlYktpdDo6V2ViVGV4dENoZWNrZXJDbGllbnQ6OnNldENvbnRpbnVvdXNTcGVsbENo
ZWNraW5nRW5hYmxlZCk6CisgICAgICAgIChXZWJLaXQ6OldlYlRleHRDaGVja2VyQ2xpZW50Ojpn
cmFtbWFyQ2hlY2tpbmdFbmFibGVkKToKKyAgICAgICAgKFdlYktpdDo6V2ViVGV4dENoZWNrZXJD
bGllbnQ6OnNldEdyYW1tYXJDaGVja2luZ0VuYWJsZWQpOgorICAgICAgICAoV2ViS2l0OjpXZWJU
ZXh0Q2hlY2tlckNsaWVudDo6dW5pcXVlU3BlbGxEb2N1bWVudFRhZyk6CisgICAgICAgIChXZWJL
aXQ6OldlYlRleHRDaGVja2VyQ2xpZW50OjpjbG9zZVNwZWxsRG9jdW1lbnRXaXRoVGFnKToKKyAg
ICAgICAgKFdlYktpdDo6V2ViVGV4dENoZWNrZXJDbGllbnQ6OmNoZWNrU3BlbGxpbmdPZlN0cmlu
Zyk6CisgICAgICAgIChXZWJLaXQ6OldlYlRleHRDaGVja2VyQ2xpZW50OjpjaGVja0dyYW1tYXJP
ZlN0cmluZyk6CisgICAgICAgIChXZWJLaXQ6OldlYlRleHRDaGVja2VyQ2xpZW50OjpzcGVsbGlu
Z1VJSXNTaG93aW5nKToKKyAgICAgICAgKFdlYktpdDo6V2ViVGV4dENoZWNrZXJDbGllbnQ6OnRv
Z2dsZVNwZWxsaW5nVUlJc1Nob3dpbmcpOgorICAgICAgICAoV2ViS2l0OjpXZWJUZXh0Q2hlY2tl
ckNsaWVudDo6dXBkYXRlU3BlbGxpbmdVSVdpdGhNaXNzcGVsbGVkV29yZCk6CisgICAgICAgIChX
ZWJLaXQ6OldlYlRleHRDaGVja2VyQ2xpZW50Ojp1cGRhdGVTcGVsbGluZ1VJV2l0aEdyYW1tYXJT
dHJpbmcpOgorICAgICAgICAoV2ViS2l0OjpXZWJUZXh0Q2hlY2tlckNsaWVudDo6Z3Vlc3Nlc0Zv
cldvcmQpOgorICAgICAgICAoV2ViS2l0OjpXZWJUZXh0Q2hlY2tlckNsaWVudDo6bGVhcm5Xb3Jk
KToKKyAgICAgICAgKFdlYktpdDo6V2ViVGV4dENoZWNrZXJDbGllbnQ6Omlnbm9yZVdvcmQpOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9ndGsvV2ViVGV4dENoZWNrZXJDbGllbnQuaDogUmVuYW1lZCBm
cm9tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlRleHRDaGVja2VyQ2xpZW50LmguCisKIDIw
MjEtMDMtMDUgIEVyaWMgQ2FybHNvbiAgPGVyaWMuY2FybHNvbkBhcHBsZS5jb20+CiAKICAgICAg
ICAgW0dQVSBQcm9jZXNzXSBSZW1vdGUgY29udHJvbCBjb21tYW5kIHNob3VsZCBvbmx5IGdvIHRv
IHRoZSBjdXJyZW50IE5vd1BsYXlpbmcgc2Vzc2lvbgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9Tb3VyY2VzR1RLLnR4dCBiL1NvdXJjZS9XZWJLaXQvU291cmNlc0dUSy50eHQKaW5kZXggYmNk
NzIxZmVjZTdlNmU2ODMzNTdmMDk5MzA4MTgwOWFjNTQ3N2MyMC4uNDJiOTljZDNjZjBlYThmZGNh
YWZlZTY4YzM4NzJiODg1NDBlNGRmNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9Tb3VyY2Vz
R1RLLnR4dAorKysgYi9Tb3VyY2UvV2ViS2l0L1NvdXJjZXNHVEsudHh0CkBAIC0xMDcsOCArMTA3
LDYgQEAgVUlQcm9jZXNzL0xlZ2FjeVNlc3Npb25TdGF0ZUNvZGluZ05vbmUuY3BwCiBVSVByb2Nl
c3MvVmlld1NuYXBzaG90U3RvcmUuY3BwCiBVSVByb2Nlc3MvV2ViR3JhbW1hckRldGFpbC5jcHAK
IFVJUHJvY2Vzcy9XZWJNZW1vcnlQcmVzc3VyZUhhbmRsZXIuY3BwCi1VSVByb2Nlc3MvV2ViVGV4
dENoZWNrZXIuY3BwCi1VSVByb2Nlc3MvV2ViVGV4dENoZWNrZXJDbGllbnQuY3BwCiBVSVByb2Nl
c3MvV2ViVmlld3BvcnRBdHRyaWJ1dGVzLmNwcAogCiBVSVByb2Nlc3MvQVBJL0MvV0tHcmFtbWFy
RGV0YWlsLmNwcApAQCAtMjY4LDYgKzI2Niw4IEBAIFVJUHJvY2Vzcy9ndGsvV2ViUGFnZVByb3h5
R3RrLmNwcCBAbm8tdW5pZnkKIFVJUHJvY2Vzcy9ndGsvV2ViUGFzdGVib2FyZFByb3h5R3RrLmNw
cAogVUlQcm9jZXNzL2d0ay9XZWJQb3B1cE1lbnVQcm94eUd0ay5jcHAKIFVJUHJvY2Vzcy9ndGsv
V2ViUHJlZmVyZW5jZXNHdGsuY3BwCitVSVByb2Nlc3MvZ3RrL1dlYlRleHRDaGVja2VyLmNwcAor
VUlQcm9jZXNzL2d0ay9XZWJUZXh0Q2hlY2tlckNsaWVudC5jcHAKIAogVUlQcm9jZXNzL3NvdXAv
V2ViQ29va2llTWFuYWdlclByb3h5U291cC5jcHAKIFVJUHJvY2Vzcy9zb3VwL1dlYlByb2Nlc3NQ
b29sU291cC5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dL
VGV4dENoZWNrZXIuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tUZXh0Q2hl
Y2tlci5jcHAKaW5kZXggYzhlNzU2MGIxNzU2MWEyNWU0MmJhMTljNjljYTZiMGM0YmM1OWJlMS4u
MzYxOTQ3NmI0MWRkMjg3OWMxOGJmYzI1NGM5ZjAwNWViMjFmYjdiYiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tUZXh0Q2hlY2tlci5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tUZXh0Q2hlY2tlci5jcHAKQEAgLTI1LDEzICsyNSw4
IEBACiAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJXS1RleHRDaGVja2VyLmgiCi0j
aW5jbHVkZSAiVGV4dENoZWNrZXIuaCIKIAotI2lmIGRlZmluZWQoQlVJTERJTkdfR1RLX18pCi0j
aW5jbHVkZSAiV0tBUElDYXN0LmgiCi0jaW5jbHVkZSAiV2ViUGFnZVByb3h5LmgiCi0jaW5jbHVk
ZSAiV2ViVGV4dENoZWNrZXIuaCIKLSNlbmRpZgorI2luY2x1ZGUgIlRleHRDaGVja2VyLmgiCiAK
IHVzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7CiAKQEAgLTM5LDM0ICszNCwzIEBAIHZvaWQgV0tUZXh0
Q2hlY2tlclNldFRlc3RpbmdNb2RlKGJvb2wgZW5hYmxlZCkKIHsKICAgICBUZXh0Q2hlY2tlcjo6
c2V0VGVzdGluZ01vZGUoZW5hYmxlZCk7CiB9Ci0KLSNpZiBkZWZpbmVkKEJVSUxESU5HX0dUS19f
KQotCi12b2lkIFdLVGV4dENoZWNrZXJTZXRDbGllbnQoY29uc3QgV0tUZXh0Q2hlY2tlckNsaWVu
dEJhc2UqIHdrQ2xpZW50KQotewotICAgIGlmICh3a0NsaWVudCAmJiB3a0NsaWVudC0+dmVyc2lv
bikKLSAgICAgICAgcmV0dXJuOwotICAgIFdlYlRleHRDaGVja2VyOjpzaW5nbGV0b24oKS0+c2V0
Q2xpZW50KHdrQ2xpZW50KTsKLX0KLQotdm9pZCBXS1RleHRDaGVja2VyQ29udGludW91c1NwZWxs
Q2hlY2tpbmdFbmFibGVkU3RhdGVDaGFuZ2VkKGJvb2wgZW5hYmxlZCkKLXsKLSAgICBXZWJUZXh0
Q2hlY2tlcjo6c2luZ2xldG9uKCktPmNvbnRpbnVvdXNTcGVsbENoZWNraW5nRW5hYmxlZFN0YXRl
Q2hhbmdlZChlbmFibGVkKTsKLX0KLQotdm9pZCBXS1RleHRDaGVja2VyR3JhbW1hckNoZWNraW5n
RW5hYmxlZFN0YXRlQ2hhbmdlZChib29sIGVuYWJsZWQpCi17Ci0gICAgV2ViVGV4dENoZWNrZXI6
OnNpbmdsZXRvbigpLT5ncmFtbWFyQ2hlY2tpbmdFbmFibGVkU3RhdGVDaGFuZ2VkKGVuYWJsZWQp
OwotfQotCi12b2lkIFdLVGV4dENoZWNrZXJDaGVja1NwZWxsaW5nKFdLUGFnZVJlZiBwYWdlLCBi
b29sIHN0YXJ0QmVmb3JlU2VsZWN0aW9uKQotewotICAgIFdlYlRleHRDaGVja2VyOjpzaW5nbGV0
b24oKS0+Y2hlY2tTcGVsbGluZyh0b0ltcGwocGFnZSksIHN0YXJ0QmVmb3JlU2VsZWN0aW9uKTsK
LX0KLQotdm9pZCBXS1RleHRDaGVja2VyQ2hhbmdlU3BlbGxpbmdUb1dvcmQoV0tQYWdlUmVmIHBh
Z2UsIFdLU3RyaW5nUmVmIHdvcmQpCi17Ci0gICAgV2ViVGV4dENoZWNrZXI6OnNpbmdsZXRvbigp
LT5jaGFuZ2VTcGVsbGluZ1RvV29yZCh0b0ltcGwocGFnZSksIHRvV1RGU3RyaW5nKHdvcmQpKTsK
LX0KLQotI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9X
S1RleHRDaGVja2VyLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1RleHRDaGVj
a2VyLmgKaW5kZXggZjUyZDljNzAwMWViNzllMjgzNjAzZjE5ZjY2MDg1NTUwZDNjYTNjOS4uOWMy
ODdiZDFhNGQ3MWQ5MjVlZGNiMzNhY2JjNmZhODdhYmJjYzhkYSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tUZXh0Q2hlY2tlci5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9DL1dLVGV4dENoZWNrZXIuaApAQCAtMjMsOCArMjMsNyBAQAogICog
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLSNpZm5kZWYgV0tUZXh0Q2hl
Y2tlcl9oCi0jZGVmaW5lIFdLVGV4dENoZWNrZXJfaAorI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRl
IDxXZWJLaXQvV0tCYXNlLmg+CiAKQEAgLTM0LDY0ICszMyw2IEBAIGV4dGVybiAiQyIgewogCiBX
S19FWFBPUlQgdm9pZCBXS1RleHRDaGVja2VyU2V0VGVzdGluZ01vZGUoYm9vbCBlbmFibGVkKTsK
IAotI2lmIGRlZmluZWQoQlVJTERJTkdfR1RLX18pCi0KLS8vIFRleHRDaGVja2VyIENsaWVudAot
dHlwZWRlZiBib29sICgqV0tUZXh0Q2hlY2tlckNvbnRpbm91c1NwZWxsQ2hlY2tpbmdBbGxvd2Vk
KShjb25zdCB2b2lkICpjbGllbnRJbmZvKTsKLXR5cGVkZWYgYm9vbCAoKldLVGV4dENoZWNrZXJD
b250aW5vdXNTcGVsbENoZWNraW5nRW5hYmxlZCkoY29uc3Qgdm9pZCAqY2xpZW50SW5mbyk7Ci10
eXBlZGVmIHZvaWQgKCpXS1RleHRDaGVja2VyU2V0Q29udGlub3VzU3BlbGxDaGVja2luZ0VuYWJs
ZWQpKGJvb2wgZW5hYmxlZCwgY29uc3Qgdm9pZCAqY2xpZW50SW5mbyk7Ci10eXBlZGVmIGJvb2wg
KCpXS1RleHRDaGVja2VyR3JhbW1hckNoZWNraW5nRW5hYmxlZCkoY29uc3Qgdm9pZCAqY2xpZW50
SW5mbyk7Ci10eXBlZGVmIHZvaWQgKCpXS1RleHRDaGVja2VyU2V0R3JhbW1hckNoZWNraW5nRW5h
YmxlZCkoYm9vbCBlbmFibGVkLCBjb25zdCB2b2lkICpjbGllbnRJbmZvKTsKLXR5cGVkZWYgdWlu
dDY0X3QgKCpXS1RleHRDaGVja2VyVW5pcXVlU3BlbGxEb2N1bWVudFRhZykoV0tQYWdlUmVmIHBh
Z2UsIGNvbnN0IHZvaWQgKmNsaWVudEluZm8pOwotdHlwZWRlZiB2b2lkICgqV0tUZXh0Q2hlY2tl
ckNsb3NlU3BlbGxEb2N1bWVudFdpdGhUYWcpKHVpbnQ2NF90IHRhZywgY29uc3Qgdm9pZCAqY2xp
ZW50SW5mbyk7Ci10eXBlZGVmIHZvaWQgKCpXS1RleHRDaGVja2VyQ2hlY2tTcGVsbGluZ09mU3Ry
aW5nKSh1aW50NjRfdCB0YWcsIFdLU3RyaW5nUmVmIHRleHQsIGludDMyX3QqIG1pc3NwZWxsaW5n
TG9jYXRpb24sIGludDMyX3QqIG1pc3NwZWxsaW5nTGVuZ3RoLCBjb25zdCB2b2lkICpjbGllbnRJ
bmZvKTsKLXR5cGVkZWYgdm9pZCAoKldLVGV4dENoZWNrZXJDaGVja0dyYW1tYXJPZlN0cmluZyko
dWludDY0X3QgdGFnLCBXS1N0cmluZ1JlZiB0ZXh0LCBXS0FycmF5UmVmKiBncmFtbWFyRGV0YWls
cywgaW50MzJfdCogYmFkR3JhbW1hckxvY2F0aW9uLCBpbnQzMl90KiBiYWRHcmFtbWFyTGVuZ3Ro
LCBjb25zdCB2b2lkICpjbGllbnRJbmZvKTsKLXR5cGVkZWYgYm9vbCAoKldLVGV4dENoZWNrZXJT
cGVsbGluZ1VJSXNTaG93aW5nKShjb25zdCB2b2lkICpjbGllbnRJbmZvKTsKLXR5cGVkZWYgdm9p
ZCAoKldLVGV4dENoZWNrZXJUb2dnbGVTcGVsbGluZ1VJSXNTaG93aW5nKShjb25zdCB2b2lkICpj
bGllbnRJbmZvKTsKLXR5cGVkZWYgdm9pZCAoKldLVGV4dENoZWNrZXJVcGRhdGVTcGVsbGluZ1VJ
V2l0aE1pc3NwZWxsZWRXb3JkKSh1aW50NjRfdCB0YWcsIFdLU3RyaW5nUmVmIG1pc3NwZWxsZWRX
b3JkLCBjb25zdCB2b2lkICpjbGllbnRJbmZvKTsKLXR5cGVkZWYgdm9pZCAoKldLVGV4dENoZWNr
ZXJVcGRhdGVTcGVsbGluZ1VJV2l0aEdyYW1tYXJTdHJpbmcpKHVpbnQ2NF90IHRhZywgV0tTdHJp
bmdSZWYgYmFkR3JhbW1hclBocmFzZSwgV0tHcmFtbWFyRGV0YWlsUmVmIGdyYW1tYXJEZXRhaWws
IGNvbnN0IHZvaWQgKmNsaWVudEluZm8pOwotdHlwZWRlZiBXS0FycmF5UmVmICgqV0tUZXh0Q2hl
Y2tlckd1ZXNzZXNGb3JXb3JkKSh1aW50NjRfdCB0YWcsIFdLU3RyaW5nUmVmIHdvcmQsIGNvbnN0
IHZvaWQgKmNsaWVudEluZm8pOwotdHlwZWRlZiB2b2lkICgqV0tUZXh0Q2hlY2tlckxlYXJuV29y
ZCkodWludDY0X3QgdGFnLCBXS1N0cmluZ1JlZiB3b3JkLCBjb25zdCB2b2lkICpjbGllbnRJbmZv
KTsKLXR5cGVkZWYgdm9pZCAoKldLVGV4dENoZWNrZXJJZ25vcmVXb3JkKSh1aW50NjRfdCB0YWcs
IFdLU3RyaW5nUmVmIHdvcmQsIGNvbnN0IHZvaWQgKmNsaWVudEluZm8pOwotCi10eXBlZGVmIHN0
cnVjdCBXS1RleHRDaGVja2VyQ2xpZW50QmFzZSB7Ci0gICAgaW50ICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmVyc2lv
bjsKLSAgICBjb25zdCB2b2lkICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBjbGllbnRJbmZvOwotfSBXS1RleHRDaGVja2VyQ2xpZW50
QmFzZTsKLQotdHlwZWRlZiBzdHJ1Y3QgV0tUZXh0Q2hlY2tlckNsaWVudFYwIHsKLSAgICBXS1Rl
eHRDaGVja2VyQ2xpZW50QmFzZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBiYXNlOwotCi0gICAgV0tUZXh0Q2hlY2tlckNvbnRpbm91c1NwZWxsQ2hlY2tp
bmdBbGxvd2VkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGludW91c1NwZWxsQ2hl
Y2tpbmdBbGxvd2VkOwotICAgIFdLVGV4dENoZWNrZXJDb250aW5vdXNTcGVsbENoZWNraW5nRW5h
YmxlZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVvdXNTcGVsbENoZWNraW5n
RW5hYmxlZDsKLSAgICBXS1RleHRDaGVja2VyU2V0Q29udGlub3VzU3BlbGxDaGVja2luZ0VuYWJs
ZWQgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRDb250aW51b3VzU3BlbGxDaGVja2luZ0Vu
YWJsZWQ7Ci0gICAgV0tUZXh0Q2hlY2tlckdyYW1tYXJDaGVja2luZ0VuYWJsZWQgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3JhbW1hckNoZWNraW5nRW5hYmxlZDsKLSAgICBX
S1RleHRDaGVja2VyU2V0R3JhbW1hckNoZWNraW5nRW5hYmxlZCAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBzZXRHcmFtbWFyQ2hlY2tpbmdFbmFibGVkOwotICAgIFdLVGV4dENoZWNr
ZXJVbmlxdWVTcGVsbERvY3VtZW50VGFnICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHVuaXF1ZVNwZWxsRG9jdW1lbnRUYWc7Ci0gICAgV0tUZXh0Q2hlY2tlckNsb3NlU3BlbGxE
b2N1bWVudFdpdGhUYWcgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xvc2VTcGVs
bERvY3VtZW50V2l0aFRhZzsKLSAgICBXS1RleHRDaGVja2VyQ2hlY2tTcGVsbGluZ09mU3RyaW5n
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGVja1NwZWxsaW5nT2ZTdHJp
bmc7Ci0gICAgV0tUZXh0Q2hlY2tlckNoZWNrR3JhbW1hck9mU3RyaW5nICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY2hlY2tHcmFtbWFyT2ZTdHJpbmc7Ci0gICAgV0tUZXh0
Q2hlY2tlclNwZWxsaW5nVUlJc1Nob3dpbmcgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgc3BlbGxpbmdVSUlzU2hvd2luZzsKLSAgICBXS1RleHRDaGVja2VyVG9nZ2xlU3Bl
bGxpbmdVSUlzU2hvd2luZyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b2dnbGVT
cGVsbGluZ1VJSXNTaG93aW5nOwotICAgIFdLVGV4dENoZWNrZXJVcGRhdGVTcGVsbGluZ1VJV2l0
aE1pc3NwZWxsZWRXb3JkICAgICAgICAgICAgICAgICAgICAgICAgIHVwZGF0ZVNwZWxsaW5nVUlX
aXRoTWlzc3BlbGxlZFdvcmQ7Ci0gICAgV0tUZXh0Q2hlY2tlclVwZGF0ZVNwZWxsaW5nVUlXaXRo
R3JhbW1hclN0cmluZyAgICAgICAgICAgICAgICAgICAgICAgICAgdXBkYXRlU3BlbGxpbmdVSVdp
dGhHcmFtbWFyU3RyaW5nOwotICAgIFdLVGV4dENoZWNrZXJHdWVzc2VzRm9yV29yZCAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGd1ZXNzZXNGb3JXb3JkOwotICAg
IFdLVGV4dENoZWNrZXJMZWFybldvcmQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGxlYXJuV29yZDsKLSAgICBXS1RleHRDaGVja2VySWdub3JlV29yZCAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZ25vcmVXb3Jk
OwotfSBXS1RleHRDaGVja2VyQ2xpZW50VjA7Ci0KLVdLX0VYUE9SVCB2b2lkIFdLVGV4dENoZWNr
ZXJTZXRDbGllbnQoY29uc3QgV0tUZXh0Q2hlY2tlckNsaWVudEJhc2UqIGNsaWVudCk7Ci0KLVdL
X0VYUE9SVCB2b2lkIFdLVGV4dENoZWNrZXJDb250aW51b3VzU3BlbGxDaGVja2luZ0VuYWJsZWRT
dGF0ZUNoYW5nZWQoYm9vbCk7Ci1XS19FWFBPUlQgdm9pZCBXS1RleHRDaGVja2VyR3JhbW1hckNo
ZWNraW5nRW5hYmxlZFN0YXRlQ2hhbmdlZChib29sKTsKLQotV0tfRVhQT1JUIHZvaWQgV0tUZXh0
Q2hlY2tlckNoZWNrU3BlbGxpbmcoV0tQYWdlUmVmIHBhZ2UsIGJvb2wgc3RhcnRCZWZvcmVTZWxl
Y3Rpb24pOwotV0tfRVhQT1JUIHZvaWQgV0tUZXh0Q2hlY2tlckNoYW5nZVNwZWxsaW5nVG9Xb3Jk
KFdLUGFnZVJlZiBwYWdlLCBXS1N0cmluZ1JlZiB3b3JkKTsKLQotI2VuZGlmCi0KICNpZmRlZiBf
X2NwbHVzcGx1cwogfQogI2VuZGlmCi0KLSNlbmRpZiAvKiBXS1RleHRDaGVja2VyX2ggKi8KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL2d0ay9XS1RleHRDaGVja2Vy
R3RrLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL2d0ay9XS1RleHRDaGVja2Vy
R3RrLmNwcAppbmRleCAyOTI0YmE2ZGIwNTM0YTcyYmQyOWM2ODlmNGVkOWU1YzNmZmNkNmNhLi43
ZmJmYjA3NTI2NmE5YThiOWZjZGUxMDU3OWU1Nzg0ZDQwYTIwN2EwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9ndGsvV0tUZXh0Q2hlY2tlckd0ay5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvZ3RrL1dLVGV4dENoZWNrZXJHdGsuY3BwCkBA
IC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNSBJZ2FsaWEgUy5MLgorICog
Q29weXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjcsNiArMjcsMzggQEAKICNpbmNsdWRlICJX
S1RleHRDaGVja2VyR3RrLmgiCiAKICNpbmNsdWRlICJUZXh0Q2hlY2tlci5oIgorI2luY2x1ZGUg
IldLQVBJQ2FzdC5oIgorI2luY2x1ZGUgIldlYlBhZ2VQcm94eS5oIgorI2luY2x1ZGUgIldlYlRl
eHRDaGVja2VyLmgiCisKK3VzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7CisKK3ZvaWQgV0tUZXh0Q2hl
Y2tlclNldENsaWVudChjb25zdCBXS1RleHRDaGVja2VyQ2xpZW50QmFzZSogd2tDbGllbnQpCit7
CisgICAgaWYgKHdrQ2xpZW50ICYmIHdrQ2xpZW50LT52ZXJzaW9uKQorICAgICAgICByZXR1cm47
CisgICAgV2ViVGV4dENoZWNrZXI6OnNpbmdsZXRvbigpLT5zZXRDbGllbnQod2tDbGllbnQpOwor
fQorCit2b2lkIFdLVGV4dENoZWNrZXJDb250aW51b3VzU3BlbGxDaGVja2luZ0VuYWJsZWRTdGF0
ZUNoYW5nZWQoYm9vbCBlbmFibGVkKQoreworICAgIFdlYlRleHRDaGVja2VyOjpzaW5nbGV0b24o
KS0+Y29udGludW91c1NwZWxsQ2hlY2tpbmdFbmFibGVkU3RhdGVDaGFuZ2VkKGVuYWJsZWQpOwor
fQorCit2b2lkIFdLVGV4dENoZWNrZXJHcmFtbWFyQ2hlY2tpbmdFbmFibGVkU3RhdGVDaGFuZ2Vk
KGJvb2wgZW5hYmxlZCkKK3sKKyAgICBXZWJUZXh0Q2hlY2tlcjo6c2luZ2xldG9uKCktPmdyYW1t
YXJDaGVja2luZ0VuYWJsZWRTdGF0ZUNoYW5nZWQoZW5hYmxlZCk7Cit9CisKK3ZvaWQgV0tUZXh0
Q2hlY2tlckNoZWNrU3BlbGxpbmcoV0tQYWdlUmVmIHBhZ2UsIGJvb2wgc3RhcnRCZWZvcmVTZWxl
Y3Rpb24pCit7CisgICAgV2ViVGV4dENoZWNrZXI6OnNpbmdsZXRvbigpLT5jaGVja1NwZWxsaW5n
KHRvSW1wbChwYWdlKSwgc3RhcnRCZWZvcmVTZWxlY3Rpb24pOworfQorCit2b2lkIFdLVGV4dENo
ZWNrZXJDaGFuZ2VTcGVsbGluZ1RvV29yZChXS1BhZ2VSZWYgcGFnZSwgV0tTdHJpbmdSZWYgd29y
ZCkKK3sKKyAgICBXZWJUZXh0Q2hlY2tlcjo6c2luZ2xldG9uKCktPmNoYW5nZVNwZWxsaW5nVG9X
b3JkKHRvSW1wbChwYWdlKSwgdG9XVEZTdHJpbmcod29yZCkpOworfQogCiB2b2lkIFdLVGV4dENo
ZWNrZXJTZXRTcGVsbENoZWNraW5nTGFuZ3VhZ2VzKGNvbnN0IGNoYXIqIGNvbnN0KiBsYW5ndWFn
ZXMpCiB7CkBAIC0zNywzICs2OSw4IEBAIHZvaWQgV0tUZXh0Q2hlY2tlclNldFNwZWxsQ2hlY2tp
bmdMYW5ndWFnZXMoY29uc3QgY2hhciogY29uc3QqIGxhbmd1YWdlcykKICAgICBXZWJLaXQ6OlRl
eHRDaGVja2VyOjpzZXRTcGVsbENoZWNraW5nTGFuZ3VhZ2VzKHNwZWxsQ2hlY2tpbmdMYW5ndWFn
ZXMpOwogI2VuZGlmCiB9CisKK3ZvaWQgV0tUZXh0Q2hlY2tlclNldENvbnRpbnVvdXNTcGVsbENo
ZWNraW5nRW5hYmxlZChib29sIGVuYWJsZWQpCit7CisgICAgV2ViS2l0OjpUZXh0Q2hlY2tlcjo6
c2V0Q29udGludW91c1NwZWxsQ2hlY2tpbmdFbmFibGVkKGVuYWJsZWQpOworfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvZ3RrL1dLVGV4dENoZWNrZXJHdGsuaCBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL2d0ay9XS1RleHRDaGVja2VyR3RrLmgKaW5k
ZXggMWY2ZTU1YTY2NjNkMWE1OWYxOThmMDJmZmRlNDE3NTJmN2IxNDExYi4uMThmODYzZGIwZGNk
YWFiNzE3YTYyZTI3YjYwNDRjNTRmYzYyMzhmZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL0MvZ3RrL1dLVGV4dENoZWNrZXJHdGsuaAorKysgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvQy9ndGsvV0tUZXh0Q2hlY2tlckd0ay5oCkBAIC0xLDUgKzEsNSBAQAog
LyoKLSAqIENvcHlyaWdodCAoQykgMjAxNSBJZ2FsaWEgUy5MLgorICogQ29weXJpZ2h0IChDKSAy
MDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucwpAQCAtMjMsMTkgKzIzLDcyIEBACiAgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCiAgKi8KIAotI2lmbmRlZiBXS1RleHRDaGVja2VyR3RrX2gKLSNkZWZpbmUgV0tU
ZXh0Q2hlY2tlckd0a19oCisjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgPFdlYktpdC9XS0Jhc2Uu
aD4KKyNpbmNsdWRlIDxXZWJLaXQvV0tUZXh0Q2hlY2tlci5oPgogCiAjaWZkZWYgX19jcGx1c3Bs
dXMKIGV4dGVybiAiQyIgewogI2VuZGlmCiAKK1dLX0VYUE9SVCB2b2lkIFdLVGV4dENoZWNrZXJT
ZXRUZXN0aW5nTW9kZShib29sIGVuYWJsZWQpOworCisvLyBUZXh0Q2hlY2tlciBDbGllbnQKK3R5
cGVkZWYgYm9vbCAoKldLVGV4dENoZWNrZXJDb250aW5vdXNTcGVsbENoZWNraW5nQWxsb3dlZCko
Y29uc3Qgdm9pZCAqY2xpZW50SW5mbyk7Cit0eXBlZGVmIGJvb2wgKCpXS1RleHRDaGVja2VyQ29u
dGlub3VzU3BlbGxDaGVja2luZ0VuYWJsZWQpKGNvbnN0IHZvaWQgKmNsaWVudEluZm8pOwordHlw
ZWRlZiB2b2lkICgqV0tUZXh0Q2hlY2tlclNldENvbnRpbm91c1NwZWxsQ2hlY2tpbmdFbmFibGVk
KShib29sIGVuYWJsZWQsIGNvbnN0IHZvaWQgKmNsaWVudEluZm8pOwordHlwZWRlZiBib29sICgq
V0tUZXh0Q2hlY2tlckdyYW1tYXJDaGVja2luZ0VuYWJsZWQpKGNvbnN0IHZvaWQgKmNsaWVudElu
Zm8pOwordHlwZWRlZiB2b2lkICgqV0tUZXh0Q2hlY2tlclNldEdyYW1tYXJDaGVja2luZ0VuYWJs
ZWQpKGJvb2wgZW5hYmxlZCwgY29uc3Qgdm9pZCAqY2xpZW50SW5mbyk7Cit0eXBlZGVmIHVpbnQ2
NF90ICgqV0tUZXh0Q2hlY2tlclVuaXF1ZVNwZWxsRG9jdW1lbnRUYWcpKFdLUGFnZVJlZiBwYWdl
LCBjb25zdCB2b2lkICpjbGllbnRJbmZvKTsKK3R5cGVkZWYgdm9pZCAoKldLVGV4dENoZWNrZXJD
bG9zZVNwZWxsRG9jdW1lbnRXaXRoVGFnKSh1aW50NjRfdCB0YWcsIGNvbnN0IHZvaWQgKmNsaWVu
dEluZm8pOwordHlwZWRlZiB2b2lkICgqV0tUZXh0Q2hlY2tlckNoZWNrU3BlbGxpbmdPZlN0cmlu
ZykodWludDY0X3QgdGFnLCBXS1N0cmluZ1JlZiB0ZXh0LCBpbnQzMl90KiBtaXNzcGVsbGluZ0xv
Y2F0aW9uLCBpbnQzMl90KiBtaXNzcGVsbGluZ0xlbmd0aCwgY29uc3Qgdm9pZCAqY2xpZW50SW5m
byk7Cit0eXBlZGVmIHZvaWQgKCpXS1RleHRDaGVja2VyQ2hlY2tHcmFtbWFyT2ZTdHJpbmcpKHVp
bnQ2NF90IHRhZywgV0tTdHJpbmdSZWYgdGV4dCwgV0tBcnJheVJlZiogZ3JhbW1hckRldGFpbHMs
IGludDMyX3QqIGJhZEdyYW1tYXJMb2NhdGlvbiwgaW50MzJfdCogYmFkR3JhbW1hckxlbmd0aCwg
Y29uc3Qgdm9pZCAqY2xpZW50SW5mbyk7Cit0eXBlZGVmIGJvb2wgKCpXS1RleHRDaGVja2VyU3Bl
bGxpbmdVSUlzU2hvd2luZykoY29uc3Qgdm9pZCAqY2xpZW50SW5mbyk7Cit0eXBlZGVmIHZvaWQg
KCpXS1RleHRDaGVja2VyVG9nZ2xlU3BlbGxpbmdVSUlzU2hvd2luZykoY29uc3Qgdm9pZCAqY2xp
ZW50SW5mbyk7Cit0eXBlZGVmIHZvaWQgKCpXS1RleHRDaGVja2VyVXBkYXRlU3BlbGxpbmdVSVdp
dGhNaXNzcGVsbGVkV29yZCkodWludDY0X3QgdGFnLCBXS1N0cmluZ1JlZiBtaXNzcGVsbGVkV29y
ZCwgY29uc3Qgdm9pZCAqY2xpZW50SW5mbyk7Cit0eXBlZGVmIHZvaWQgKCpXS1RleHRDaGVja2Vy
VXBkYXRlU3BlbGxpbmdVSVdpdGhHcmFtbWFyU3RyaW5nKSh1aW50NjRfdCB0YWcsIFdLU3RyaW5n
UmVmIGJhZEdyYW1tYXJQaHJhc2UsIFdLR3JhbW1hckRldGFpbFJlZiBncmFtbWFyRGV0YWlsLCBj
b25zdCB2b2lkICpjbGllbnRJbmZvKTsKK3R5cGVkZWYgV0tBcnJheVJlZiAoKldLVGV4dENoZWNr
ZXJHdWVzc2VzRm9yV29yZCkodWludDY0X3QgdGFnLCBXS1N0cmluZ1JlZiB3b3JkLCBjb25zdCB2
b2lkICpjbGllbnRJbmZvKTsKK3R5cGVkZWYgdm9pZCAoKldLVGV4dENoZWNrZXJMZWFybldvcmQp
KHVpbnQ2NF90IHRhZywgV0tTdHJpbmdSZWYgd29yZCwgY29uc3Qgdm9pZCAqY2xpZW50SW5mbyk7
Cit0eXBlZGVmIHZvaWQgKCpXS1RleHRDaGVja2VySWdub3JlV29yZCkodWludDY0X3QgdGFnLCBX
S1N0cmluZ1JlZiB3b3JkLCBjb25zdCB2b2lkICpjbGllbnRJbmZvKTsKKwordHlwZWRlZiBzdHJ1
Y3QgV0tUZXh0Q2hlY2tlckNsaWVudEJhc2UgeworICAgIGludCAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZlcnNpb247
CisgICAgY29uc3Qgdm9pZCAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgY2xpZW50SW5mbzsKK30gV0tUZXh0Q2hlY2tlckNsaWVudEJh
c2U7CisKK3R5cGVkZWYgc3RydWN0IFdLVGV4dENoZWNrZXJDbGllbnRWMCB7CisgICAgV0tUZXh0
Q2hlY2tlckNsaWVudEJhc2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgYmFzZTsKKworICAgIFdLVGV4dENoZWNrZXJDb250aW5vdXNTcGVsbENoZWNraW5n
QWxsb3dlZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVvdXNTcGVsbENoZWNr
aW5nQWxsb3dlZDsKKyAgICBXS1RleHRDaGVja2VyQ29udGlub3VzU3BlbGxDaGVja2luZ0VuYWJs
ZWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51b3VzU3BlbGxDaGVja2luZ0Vu
YWJsZWQ7CisgICAgV0tUZXh0Q2hlY2tlclNldENvbnRpbm91c1NwZWxsQ2hlY2tpbmdFbmFibGVk
ICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0Q29udGludW91c1NwZWxsQ2hlY2tpbmdFbmFi
bGVkOworICAgIFdLVGV4dENoZWNrZXJHcmFtbWFyQ2hlY2tpbmdFbmFibGVkICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGdyYW1tYXJDaGVja2luZ0VuYWJsZWQ7CisgICAgV0tU
ZXh0Q2hlY2tlclNldEdyYW1tYXJDaGVja2luZ0VuYWJsZWQgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgc2V0R3JhbW1hckNoZWNraW5nRW5hYmxlZDsKKyAgICBXS1RleHRDaGVja2Vy
VW5pcXVlU3BlbGxEb2N1bWVudFRhZyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB1bmlxdWVTcGVsbERvY3VtZW50VGFnOworICAgIFdLVGV4dENoZWNrZXJDbG9zZVNwZWxsRG9j
dW1lbnRXaXRoVGFnICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsb3NlU3BlbGxE
b2N1bWVudFdpdGhUYWc7CisgICAgV0tUZXh0Q2hlY2tlckNoZWNrU3BlbGxpbmdPZlN0cmluZyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hlY2tTcGVsbGluZ09mU3RyaW5n
OworICAgIFdLVGV4dENoZWNrZXJDaGVja0dyYW1tYXJPZlN0cmluZyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNoZWNrR3JhbW1hck9mU3RyaW5nOworICAgIFdLVGV4dENo
ZWNrZXJTcGVsbGluZ1VJSXNTaG93aW5nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHNwZWxsaW5nVUlJc1Nob3dpbmc7CisgICAgV0tUZXh0Q2hlY2tlclRvZ2dsZVNwZWxs
aW5nVUlJc1Nob3dpbmcgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9nZ2xlU3Bl
bGxpbmdVSUlzU2hvd2luZzsKKyAgICBXS1RleHRDaGVja2VyVXBkYXRlU3BlbGxpbmdVSVdpdGhN
aXNzcGVsbGVkV29yZCAgICAgICAgICAgICAgICAgICAgICAgICB1cGRhdGVTcGVsbGluZ1VJV2l0
aE1pc3NwZWxsZWRXb3JkOworICAgIFdLVGV4dENoZWNrZXJVcGRhdGVTcGVsbGluZ1VJV2l0aEdy
YW1tYXJTdHJpbmcgICAgICAgICAgICAgICAgICAgICAgICAgIHVwZGF0ZVNwZWxsaW5nVUlXaXRo
R3JhbW1hclN0cmluZzsKKyAgICBXS1RleHRDaGVja2VyR3Vlc3Nlc0ZvcldvcmQgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBndWVzc2VzRm9yV29yZDsKKyAgICBX
S1RleHRDaGVja2VyTGVhcm5Xb3JkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBsZWFybldvcmQ7CisgICAgV0tUZXh0Q2hlY2tlcklnbm9yZVdvcmQgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWdub3JlV29yZDsK
K30gV0tUZXh0Q2hlY2tlckNsaWVudFYwOworCitXS19FWFBPUlQgdm9pZCBXS1RleHRDaGVja2Vy
U2V0Q2xpZW50KGNvbnN0IFdLVGV4dENoZWNrZXJDbGllbnRCYXNlKiBjbGllbnQpOworCitXS19F
WFBPUlQgdm9pZCBXS1RleHRDaGVja2VyQ29udGludW91c1NwZWxsQ2hlY2tpbmdFbmFibGVkU3Rh
dGVDaGFuZ2VkKGJvb2wpOworV0tfRVhQT1JUIHZvaWQgV0tUZXh0Q2hlY2tlckdyYW1tYXJDaGVj
a2luZ0VuYWJsZWRTdGF0ZUNoYW5nZWQoYm9vbCk7CisKK1dLX0VYUE9SVCB2b2lkIFdLVGV4dENo
ZWNrZXJDaGVja1NwZWxsaW5nKFdLUGFnZVJlZiBwYWdlLCBib29sIHN0YXJ0QmVmb3JlU2VsZWN0
aW9uKTsKK1dLX0VYUE9SVCB2b2lkIFdLVGV4dENoZWNrZXJDaGFuZ2VTcGVsbGluZ1RvV29yZChX
S1BhZ2VSZWYgcGFnZSwgV0tTdHJpbmdSZWYgd29yZCk7CisKIFdLX0VYUE9SVCB2b2lkIFdLVGV4
dENoZWNrZXJTZXRTcGVsbENoZWNraW5nTGFuZ3VhZ2VzKGNvbnN0IGNoYXIqIGNvbnN0KiBsYW5n
dWFnZXMpOworV0tfRVhQT1JUIHZvaWQgV0tUZXh0Q2hlY2tlclNldENvbnRpbnVvdXNTcGVsbENo
ZWNraW5nRW5hYmxlZChib29sKTsKIAogI2lmZGVmIF9fY3BsdXNwbHVzCiB9CiAjZW5kaWYKLQot
I2VuZGlmIC8qIFdLVGV4dENoZWNrZXJHdGtfaCAqLwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvV2ViVGV4dENoZWNrZXIuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2ViVGV4dENoZWNrZXIuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmZDdkYzYy
NTI5MDcxOGYwMTI2OWUwNGE4Y2EwMzUxOWM4YThkM2IxLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlRleHRD
aGVja2VyLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDgxICswLDAgQEAKLS8qCi0gKiBDb3B5cmln
aHQgKEMpIDIwMTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
LSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoK
LSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRS
SUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJ
VFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0j
aW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiV2ViVGV4dENoZWNrZXIuaCIKLQotI2luY2x1
ZGUgIlRleHRDaGVja2VyLmgiCi0jaW5jbHVkZSAiV0tBUElDYXN0LmgiCi0jaW5jbHVkZSAiV2Vi
UGFnZVByb3h5LmgiCi0jaW5jbHVkZSAiV2ViUHJvY2Vzc1Bvb2wuaCIKLSNpbmNsdWRlIDx3dGYv
UmVmUHRyLmg+Ci0KLW5hbWVzcGFjZSBXZWJLaXQgewotCi1XZWJUZXh0Q2hlY2tlciogV2ViVGV4
dENoZWNrZXI6OnNpbmdsZXRvbigpCi17Ci0gICAgc3RhdGljIFdlYlRleHRDaGVja2VyKiB0ZXh0
Q2hlY2tlciA9IGFkb3B0UmVmKG5ldyBXZWJUZXh0Q2hlY2tlcikubGVha1JlZigpOwotICAgIHJl
dHVybiB0ZXh0Q2hlY2tlcjsKLX0KLQotV2ViVGV4dENoZWNrZXI6OldlYlRleHRDaGVja2VyKCkK
LXsKLX0KLQotdm9pZCBXZWJUZXh0Q2hlY2tlcjo6c2V0Q2xpZW50KGNvbnN0IFdLVGV4dENoZWNr
ZXJDbGllbnRCYXNlKiBjbGllbnQpCi17Ci0gICAgbV9jbGllbnQuaW5pdGlhbGl6ZShjbGllbnQp
OwotfQotCi1zdGF0aWMgdm9pZCB1cGRhdGVTdGF0ZUZvckFsbENvbnRleHRzKCkKLXsKLSAgICBj
b25zdCBWZWN0b3I8V2ViUHJvY2Vzc1Bvb2wqPiYgY29udGV4dHMgPSBXZWJQcm9jZXNzUG9vbDo6
YWxsUHJvY2Vzc1Bvb2xzKCk7Ci0gICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBjb250ZXh0cy5z
aXplKCk7ICsraSkKLSAgICAgICAgY29udGV4dHNbaV0tPnRleHRDaGVja2VyU3RhdGVDaGFuZ2Vk
KCk7Ci19Ci0KLXZvaWQgV2ViVGV4dENoZWNrZXI6OmNvbnRpbnVvdXNTcGVsbENoZWNraW5nRW5h
YmxlZFN0YXRlQ2hhbmdlZChib29sIGVuYWJsZWQpCi17Ci0gICAgVGV4dENoZWNrZXI6OmNvbnRp
bnVvdXNTcGVsbENoZWNraW5nRW5hYmxlZFN0YXRlQ2hhbmdlZChlbmFibGVkKTsKLSAgICB1cGRh
dGVTdGF0ZUZvckFsbENvbnRleHRzKCk7Ci19Ci0KLXZvaWQgV2ViVGV4dENoZWNrZXI6OmdyYW1t
YXJDaGVja2luZ0VuYWJsZWRTdGF0ZUNoYW5nZWQoYm9vbCBlbmFibGVkKQotewotICAgIFRleHRD
aGVja2VyOjpncmFtbWFyQ2hlY2tpbmdFbmFibGVkU3RhdGVDaGFuZ2VkKGVuYWJsZWQpOwotICAg
IHVwZGF0ZVN0YXRlRm9yQWxsQ29udGV4dHMoKTsKLX0KLQotdm9pZCBXZWJUZXh0Q2hlY2tlcjo6
Y2hlY2tTcGVsbGluZyhXZWJQYWdlUHJveHkqIHBhZ2UsIGJvb2wgc3RhcnRCZWZvcmVTZWxlY3Rp
b24pCi17Ci0gICAgcGFnZS0+YWR2YW5jZVRvTmV4dE1pc3NwZWxsaW5nKHN0YXJ0QmVmb3JlU2Vs
ZWN0aW9uKTsKLX0KLQotdm9pZCBXZWJUZXh0Q2hlY2tlcjo6Y2hhbmdlU3BlbGxpbmdUb1dvcmQo
V2ViUGFnZVByb3h5KiBwYWdlLCBjb25zdCBTdHJpbmcmIHRleHQpCi17Ci0gICAgcGFnZS0+Y2hh
bmdlU3BlbGxpbmdUb1dvcmQodGV4dCk7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViVGV4dENoZWNrZXIuaCBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlRleHRDaGVja2VyLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDdjOTQ1YzcyNjI3YTJmZmJiZmEwMjdiZDE0MGE5YWMwYzI1NDE0YTYuLjAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViVGV4dENoZWNrZXIuaAorKysgL2Rldi9udWxsCkBAIC0xLDU5ICswLDAgQEAK
LS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KLSAqLwotCi0jaWZuZGVmIFdlYlRleHRDaGVja2VyX2gKLSNkZWZpbmUgV2ViVGV4dENo
ZWNrZXJfaAotCi0jaW5jbHVkZSAiQVBJT2JqZWN0LmgiCi0jaW5jbHVkZSAiV0tUZXh0Q2hlY2tl
ci5oIgotI2luY2x1ZGUgIldlYlRleHRDaGVja2VyQ2xpZW50LmgiCi0jaW5jbHVkZSA8d3RmL0Zv
cndhcmQuaD4KLQotbmFtZXNwYWNlIFdlYktpdCB7Ci0KLWNsYXNzIFdlYlBhZ2VQcm94eTsKLQot
Y2xhc3MgV2ViVGV4dENoZWNrZXIgOiBwdWJsaWMgQVBJOjpPYmplY3RJbXBsPEFQSTo6T2JqZWN0
OjpUeXBlOjpUZXh0Q2hlY2tlcj4gewotcHVibGljOgotICAgIHN0YXRpYyBXZWJUZXh0Q2hlY2tl
ciogc2luZ2xldG9uKCk7Ci0KLSAgICB2b2lkIHNldENsaWVudChjb25zdCBXS1RleHRDaGVja2Vy
Q2xpZW50QmFzZSopOwotICAgIFdlYlRleHRDaGVja2VyQ2xpZW50JiBjbGllbnQoKSB7IHJldHVy
biBtX2NsaWVudDsgfQotCi0gICAgdm9pZCBjb250aW51b3VzU3BlbGxDaGVja2luZ0VuYWJsZWRT
dGF0ZUNoYW5nZWQoYm9vbCk7Ci0gICAgdm9pZCBncmFtbWFyQ2hlY2tpbmdFbmFibGVkU3RhdGVD
aGFuZ2VkKGJvb2wpOwotCi0gICAgdm9pZCBjaGVja1NwZWxsaW5nKFdlYlBhZ2VQcm94eSosIGJv
b2wgc3RhcnRCZWZvcmVTZWxlY3Rpb24pOwotICAgIHZvaWQgY2hhbmdlU3BlbGxpbmdUb1dvcmQo
V2ViUGFnZVByb3h5KiwgY29uc3QgU3RyaW5nJik7Ci0KLXByaXZhdGU6Ci0gICAgV2ViVGV4dENo
ZWNrZXIoKTsKLQotICAgIFdlYlRleHRDaGVja2VyQ2xpZW50IG1fY2xpZW50OwotfTsKLQotfSAv
LyBuYW1lc3BhY2UgV2ViS2l0Ci0KLSNlbmRpZiAvLyBXZWJUZXh0Q2hlY2tlcl9oCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJUZXh0Q2hlY2tlckNsaWVudC5jcHAgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJUZXh0Q2hlY2tlckNsaWVudC5jcHAKZGVsZXRlZCBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDJkNzAzZDdkNjVmNTI2NDE4OGRlMWM4MDc5ZTYzZjJiYmVm
YmY3ODQuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViVGV4dENoZWNrZXJDbGllbnQuY3BwCisrKyAvZGV2L251
bGwKQEAgLTEsMTgxICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0g
KiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAq
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0j
aW5jbHVkZSAiV2ViVGV4dENoZWNrZXJDbGllbnQuaCIKLQotI2luY2x1ZGUgIkFQSUFycmF5Lmgi
Ci0jaW5jbHVkZSAiV0tBUElDYXN0LmgiCi0jaW5jbHVkZSAiV0tTaGFyZWRBUElDYXN0LmgiCi0j
aW5jbHVkZSAiV2ViR3JhbW1hckRldGFpbC5oIgotI2luY2x1ZGUgIldlYlBhZ2VQcm94eS5oIgot
I2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgotCi1uYW1lc3BhY2UgV2ViS2l0IHsKLQot
Ym9vbCBXZWJUZXh0Q2hlY2tlckNsaWVudDo6Y29udGludW91c1NwZWxsQ2hlY2tpbmdBbGxvd2Vk
KCkKLXsKLSAgICBpZiAoIW1fY2xpZW50LmNvbnRpbnVvdXNTcGVsbENoZWNraW5nQWxsb3dlZCkK
LSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgcmV0dXJuIG1fY2xpZW50LmNvbnRpbnVvdXNT
cGVsbENoZWNraW5nQWxsb3dlZChtX2NsaWVudC5iYXNlLmNsaWVudEluZm8pOwotfQotCi1ib29s
IFdlYlRleHRDaGVja2VyQ2xpZW50Ojpjb250aW51b3VzU3BlbGxDaGVja2luZ0VuYWJsZWQoKQot
ewotICAgIGlmICghbV9jbGllbnQuY29udGludW91c1NwZWxsQ2hlY2tpbmdFbmFibGVkKQotICAg
ICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICByZXR1cm4gbV9jbGllbnQuY29udGludW91c1NwZWxs
Q2hlY2tpbmdFbmFibGVkKG1fY2xpZW50LmJhc2UuY2xpZW50SW5mbyk7Ci19Ci0KLXZvaWQgV2Vi
VGV4dENoZWNrZXJDbGllbnQ6OnNldENvbnRpbnVvdXNTcGVsbENoZWNraW5nRW5hYmxlZChib29s
IGVuYWJsZWQpCi17Ci0gICAgaWYgKCFtX2NsaWVudC5zZXRDb250aW51b3VzU3BlbGxDaGVja2lu
Z0VuYWJsZWQpCi0gICAgICAgIHJldHVybjsKLQotICAgIG1fY2xpZW50LnNldENvbnRpbnVvdXNT
cGVsbENoZWNraW5nRW5hYmxlZChlbmFibGVkLCBtX2NsaWVudC5iYXNlLmNsaWVudEluZm8pOwot
fQotCi1ib29sIFdlYlRleHRDaGVja2VyQ2xpZW50OjpncmFtbWFyQ2hlY2tpbmdFbmFibGVkKCkK
LXsKLSAgICBpZiAoIW1fY2xpZW50LmdyYW1tYXJDaGVja2luZ0VuYWJsZWQpCi0gICAgICAgIHJl
dHVybiBmYWxzZTsKLQotICAgIHJldHVybiBtX2NsaWVudC5ncmFtbWFyQ2hlY2tpbmdFbmFibGVk
KG1fY2xpZW50LmJhc2UuY2xpZW50SW5mbyk7Ci19Ci0KLXZvaWQgV2ViVGV4dENoZWNrZXJDbGll
bnQ6OnNldEdyYW1tYXJDaGVja2luZ0VuYWJsZWQoYm9vbCBlbmFibGVkKQotewotICAgIGlmICgh
bV9jbGllbnQuc2V0R3JhbW1hckNoZWNraW5nRW5hYmxlZCkKLSAgICAgICAgcmV0dXJuOwotCi0g
ICAgbV9jbGllbnQuc2V0R3JhbW1hckNoZWNraW5nRW5hYmxlZChlbmFibGVkLCBtX2NsaWVudC5i
YXNlLmNsaWVudEluZm8pOwotfQotCi11aW50NjRfdCBXZWJUZXh0Q2hlY2tlckNsaWVudDo6dW5p
cXVlU3BlbGxEb2N1bWVudFRhZyhXZWJQYWdlUHJveHkqIHBhZ2UpCi17Ci0gICAgaWYgKCFtX2Ns
aWVudC51bmlxdWVTcGVsbERvY3VtZW50VGFnKQotICAgICAgICByZXR1cm4gMDsKLQotICAgIHJl
dHVybiBtX2NsaWVudC51bmlxdWVTcGVsbERvY3VtZW50VGFnKHRvQVBJKHBhZ2UpLCBtX2NsaWVu
dC5iYXNlLmNsaWVudEluZm8pOwotfQotCi12b2lkIFdlYlRleHRDaGVja2VyQ2xpZW50OjpjbG9z
ZVNwZWxsRG9jdW1lbnRXaXRoVGFnKHVpbnQ2NF90IHRhZykKLXsKLSAgICBpZiAoIW1fY2xpZW50
LmNsb3NlU3BlbGxEb2N1bWVudFdpdGhUYWcpCi0gICAgICAgIHJldHVybjsKLQotICAgIG1fY2xp
ZW50LmNsb3NlU3BlbGxEb2N1bWVudFdpdGhUYWcodGFnLCBtX2NsaWVudC5iYXNlLmNsaWVudElu
Zm8pOwotfQotCi12b2lkIFdlYlRleHRDaGVja2VyQ2xpZW50OjpjaGVja1NwZWxsaW5nT2ZTdHJp
bmcodWludDY0X3QgdGFnLCBjb25zdCBTdHJpbmcmIHRleHQsIGludDMyX3QmIG1pc3NwZWxsaW5n
TG9jYXRpb24sIGludDMyX3QmIG1pc3NwZWxsaW5nTGVuZ3RoKQotewotICAgIG1pc3NwZWxsaW5n
TG9jYXRpb24gPSAtMTsKLSAgICBtaXNzcGVsbGluZ0xlbmd0aCA9IDA7Ci0KLSAgICBpZiAoIW1f
Y2xpZW50LmNoZWNrU3BlbGxpbmdPZlN0cmluZykKLSAgICAgICAgcmV0dXJuOwotCi0gICAgbV9j
bGllbnQuY2hlY2tTcGVsbGluZ09mU3RyaW5nKHRhZywgdG9BUEkodGV4dC5pbXBsKCkpLCAmbWlz
c3BlbGxpbmdMb2NhdGlvbiwgJm1pc3NwZWxsaW5nTGVuZ3RoLCBtX2NsaWVudC5iYXNlLmNsaWVu
dEluZm8pOwotfQotCi12b2lkIFdlYlRleHRDaGVja2VyQ2xpZW50OjpjaGVja0dyYW1tYXJPZlN0
cmluZyh1aW50NjRfdCB0YWcsIGNvbnN0IFN0cmluZyYgdGV4dCwgVmVjdG9yPFdlYkNvcmU6Okdy
YW1tYXJEZXRhaWw+JiBncmFtbWFyRGV0YWlscywgaW50MzJfdCYgYmFkR3JhbW1hckxvY2F0aW9u
LCBpbnQzMl90JiBiYWRHcmFtbWFyTGVuZ3RoKQotewotICAgIGJhZEdyYW1tYXJMb2NhdGlvbiA9
IC0xOwotICAgIGJhZEdyYW1tYXJMZW5ndGggPSAwOwotCi0gICAgaWYgKCFtX2NsaWVudC5jaGVj
a0dyYW1tYXJPZlN0cmluZykKLSAgICAgICAgcmV0dXJuOwotCi0gICAgV0tBcnJheVJlZiB3a0dy
YW1tYXJEZXRhaWxzUmVmID0gMDsKLSAgICBtX2NsaWVudC5jaGVja0dyYW1tYXJPZlN0cmluZyh0
YWcsIHRvQVBJKHRleHQuaW1wbCgpKSwgJndrR3JhbW1hckRldGFpbHNSZWYsICZiYWRHcmFtbWFy
TG9jYXRpb24sICZiYWRHcmFtbWFyTGVuZ3RoLCBtX2NsaWVudC5iYXNlLmNsaWVudEluZm8pOwot
Ci0gICAgUmVmUHRyPEFQSTo6QXJyYXk+IHdrR3JhbW1hckRldGFpbHMgPSBhZG9wdFJlZih0b0lt
cGwod2tHcmFtbWFyRGV0YWlsc1JlZikpOwotICAgIHNpemVfdCBudW1HcmFtbWFyRGV0YWlscyA9
IHdrR3JhbW1hckRldGFpbHMtPnNpemUoKTsKLSAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG51
bUdyYW1tYXJEZXRhaWxzOyArK2kpCi0gICAgICAgIGdyYW1tYXJEZXRhaWxzLmFwcGVuZCh3a0dy
YW1tYXJEZXRhaWxzLT5hdDxXZWJHcmFtbWFyRGV0YWlsPihpKS0+Z3JhbW1hckRldGFpbCgpKTsK
LX0KLQotYm9vbCBXZWJUZXh0Q2hlY2tlckNsaWVudDo6c3BlbGxpbmdVSUlzU2hvd2luZygpCi17
Ci0gICAgaWYgKCFtX2NsaWVudC5zcGVsbGluZ1VJSXNTaG93aW5nKQotICAgICAgICByZXR1cm4g
ZmFsc2U7Ci0KLSAgICByZXR1cm4gbV9jbGllbnQuc3BlbGxpbmdVSUlzU2hvd2luZyhtX2NsaWVu
dC5iYXNlLmNsaWVudEluZm8pOwotfQotCi12b2lkIFdlYlRleHRDaGVja2VyQ2xpZW50Ojp0b2dn
bGVTcGVsbGluZ1VJSXNTaG93aW5nKCkKLXsKLSAgICBpZiAoIW1fY2xpZW50LnRvZ2dsZVNwZWxs
aW5nVUlJc1Nob3dpbmcpCi0gICAgICAgIHJldHVybjsKLQotICAgIHJldHVybiBtX2NsaWVudC50
b2dnbGVTcGVsbGluZ1VJSXNTaG93aW5nKG1fY2xpZW50LmJhc2UuY2xpZW50SW5mbyk7Ci19Ci0K
LXZvaWQgV2ViVGV4dENoZWNrZXJDbGllbnQ6OnVwZGF0ZVNwZWxsaW5nVUlXaXRoTWlzc3BlbGxl
ZFdvcmQodWludDY0X3QgdGFnLCBjb25zdCBTdHJpbmcmIG1pc3NwZWxsZWRXb3JkKQotewotICAg
IGlmICghbV9jbGllbnQudXBkYXRlU3BlbGxpbmdVSVdpdGhNaXNzcGVsbGVkV29yZCkKLSAgICAg
ICAgcmV0dXJuOwotCi0gICAgbV9jbGllbnQudXBkYXRlU3BlbGxpbmdVSVdpdGhNaXNzcGVsbGVk
V29yZCh0YWcsIHRvQVBJKG1pc3NwZWxsZWRXb3JkLmltcGwoKSksIG1fY2xpZW50LmJhc2UuY2xp
ZW50SW5mbyk7Ci19Ci0KLXZvaWQgV2ViVGV4dENoZWNrZXJDbGllbnQ6OnVwZGF0ZVNwZWxsaW5n
VUlXaXRoR3JhbW1hclN0cmluZyh1aW50NjRfdCB0YWcsIGNvbnN0IFN0cmluZyYgYmFkR3JhbW1h
clBocmFzZSwgY29uc3QgV2ViQ29yZTo6R3JhbW1hckRldGFpbCYgZ3JhbW1hckRldGFpbCkKLXsK
LSAgICBpZiAoIW1fY2xpZW50LnVwZGF0ZVNwZWxsaW5nVUlXaXRoR3JhbW1hclN0cmluZykKLSAg
ICAgICAgcmV0dXJuOwotCi0gICAgbV9jbGllbnQudXBkYXRlU3BlbGxpbmdVSVdpdGhHcmFtbWFy
U3RyaW5nKHRhZywgdG9BUEkoYmFkR3JhbW1hclBocmFzZS5pbXBsKCkpLCB0b0FQSShncmFtbWFy
RGV0YWlsKSwgbV9jbGllbnQuYmFzZS5jbGllbnRJbmZvKTsKLX0KLQotdm9pZCBXZWJUZXh0Q2hl
Y2tlckNsaWVudDo6Z3Vlc3Nlc0ZvcldvcmQodWludDY0X3QgdGFnLCBjb25zdCBTdHJpbmcmIHdv
cmQsIFZlY3RvcjxTdHJpbmc+JiBndWVzc2VzKQotewotICAgIGlmICghbV9jbGllbnQuZ3Vlc3Nl
c0ZvcldvcmQpCi0gICAgICAgIHJldHVybjsKLQotICAgIFJlZlB0cjxBUEk6OkFycmF5PiB3a0d1
ZXNzZXMgPSBhZG9wdFJlZih0b0ltcGwobV9jbGllbnQuZ3Vlc3Nlc0ZvcldvcmQodGFnLCB0b0FQ
SSh3b3JkLmltcGwoKSksIG1fY2xpZW50LmJhc2UuY2xpZW50SW5mbykpKTsKLSAgICBzaXplX3Qg
bnVtR3Vlc3NlcyA9IHdrR3Vlc3Nlcy0+c2l6ZSgpOwotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBp
IDwgbnVtR3Vlc3NlczsgKytpKQotICAgICAgICBndWVzc2VzLmFwcGVuZCh3a0d1ZXNzZXMtPmF0
PEFQSTo6U3RyaW5nPihpKS0+c3RyaW5nKCkpOwotfQotCi12b2lkIFdlYlRleHRDaGVja2VyQ2xp
ZW50OjpsZWFybldvcmQodWludDY0X3QgdGFnLCBjb25zdCBTdHJpbmcmIHdvcmQpCi17Ci0gICAg
aWYgKCFtX2NsaWVudC5sZWFybldvcmQpCi0gICAgICAgIHJldHVybjsKLQotICAgIG1fY2xpZW50
LmxlYXJuV29yZCh0YWcsIHRvQVBJKHdvcmQuaW1wbCgpKSwgbV9jbGllbnQuYmFzZS5jbGllbnRJ
bmZvKTsKLX0KLQotdm9pZCBXZWJUZXh0Q2hlY2tlckNsaWVudDo6aWdub3JlV29yZCh1aW50NjRf
dCB0YWcsIGNvbnN0IFN0cmluZyYgd29yZCkKLXsKLSAgICBpZiAoIW1fY2xpZW50Lmlnbm9yZVdv
cmQpCi0gICAgICAgIHJldHVybjsKLQotICAgIG1fY2xpZW50Lmlnbm9yZVdvcmQodGFnLCB0b0FQ
SSh3b3JkLmltcGwoKSksIG1fY2xpZW50LmJhc2UuY2xpZW50SW5mbyk7Ci19Ci0KLX0gLy8gbmFt
ZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViVGV4
dENoZWNrZXJDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlRleHRDaGVja2Vy
Q2xpZW50LmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDFmZDQ4OTdkZDRkMDYxYTQ2
ZmVmNDRiMDUyMmIzNWE4ZTNmYjBmYjguLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViVGV4dENoZWNrZXJDbGll
bnQuaAorKysgL2Rldi9udWxsCkBAIC0xLDY2ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMp
IDIwMTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAot
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaWZuZGVm
IFdlYlRleHRDaGVja2VyQ2xpZW50X2gKLSNkZWZpbmUgV2ViVGV4dENoZWNrZXJDbGllbnRfaAot
Ci0jaW5jbHVkZSAiQVBJQ2xpZW50LmgiCi0jaW5jbHVkZSAiV0tUZXh0Q2hlY2tlci5oIgotI2lu
Y2x1ZGUgPFdlYkNvcmUvVGV4dENoZWNrZXJDbGllbnQuaD4KLSNpbmNsdWRlIDx3dGYvRm9yd2Fy
ZC5oPgotCi1uYW1lc3BhY2UgQVBJIHsKLXRlbXBsYXRlPD4gc3RydWN0IENsaWVudFRyYWl0czxX
S1RleHRDaGVja2VyQ2xpZW50QmFzZT4gewotICAgIHR5cGVkZWYgc3RkOjp0dXBsZTxXS1RleHRD
aGVja2VyQ2xpZW50VjA+IFZlcnNpb25zOwotfTsKLX0KLQotbmFtZXNwYWNlIFdlYktpdCB7Ci0K
LWNsYXNzIFdlYlBhZ2VQcm94eTsKLQotY2xhc3MgV2ViVGV4dENoZWNrZXJDbGllbnQgOiBwdWJs
aWMgQVBJOjpDbGllbnQ8V0tUZXh0Q2hlY2tlckNsaWVudEJhc2U+IHsKLXB1YmxpYzoKLSAgICBi
b29sIGNvbnRpbnVvdXNTcGVsbENoZWNraW5nQWxsb3dlZCgpOwotICAgIGJvb2wgY29udGludW91
c1NwZWxsQ2hlY2tpbmdFbmFibGVkKCk7Ci0gICAgdm9pZCBzZXRDb250aW51b3VzU3BlbGxDaGVj
a2luZ0VuYWJsZWQoYm9vbCk7Ci0gICAgYm9vbCBncmFtbWFyQ2hlY2tpbmdFbmFibGVkKCk7Ci0g
ICAgdm9pZCBzZXRHcmFtbWFyQ2hlY2tpbmdFbmFibGVkKGJvb2wpOwotICAgIHVpbnQ2NF90IHVu
aXF1ZVNwZWxsRG9jdW1lbnRUYWcoV2ViUGFnZVByb3h5Kik7Ci0gICAgdm9pZCBjbG9zZVNwZWxs
RG9jdW1lbnRXaXRoVGFnKHVpbnQ2NF90KTsKLSAgICB2b2lkIGNoZWNrU3BlbGxpbmdPZlN0cmlu
Zyh1aW50NjRfdCB0YWcsIGNvbnN0IFN0cmluZyYgdGV4dCwgaW50MzJfdCYgbWlzc3BlbGxpbmdM
b2NhdGlvbiwgaW50MzJfdCYgbWlzc3BlbGxpbmdMZW5ndGgpOwotICAgIHZvaWQgY2hlY2tHcmFt
bWFyT2ZTdHJpbmcodWludDY0X3QgdGFnLCBjb25zdCBTdHJpbmcmIHRleHQsIFZlY3RvcjxXZWJD
b3JlOjpHcmFtbWFyRGV0YWlsPiYsIGludDMyX3QmIGJhZEdyYW1tYXJMb2NhdGlvbiwgaW50MzJf
dCYgYmFkR3JhbW1hckxlbmd0aCk7Ci0gICAgYm9vbCBzcGVsbGluZ1VJSXNTaG93aW5nKCk7Ci0g
ICAgdm9pZCB0b2dnbGVTcGVsbGluZ1VJSXNTaG93aW5nKCk7Ci0gICAgdm9pZCB1cGRhdGVTcGVs
bGluZ1VJV2l0aE1pc3NwZWxsZWRXb3JkKHVpbnQ2NF90IHRhZywgY29uc3QgU3RyaW5nJiBtaXNz
cGVsbGVkV29yZCk7Ci0gICAgdm9pZCB1cGRhdGVTcGVsbGluZ1VJV2l0aEdyYW1tYXJTdHJpbmco
dWludDY0X3QgdGFnLCBjb25zdCBTdHJpbmcmIGJhZEdyYW1tYXJQaHJhc2UsIGNvbnN0IFdlYkNv
cmU6OkdyYW1tYXJEZXRhaWwmKTsKLSAgICB2b2lkIGd1ZXNzZXNGb3JXb3JkKHVpbnQ2NF90IHRh
ZywgY29uc3QgU3RyaW5nJiB3b3JkLCBWZWN0b3I8U3RyaW5nPiYgZ3Vlc3Nlcyk7Ci0gICAgdm9p
ZCBsZWFybldvcmQodWludDY0X3QgdGFnLCBjb25zdCBTdHJpbmcmIHdvcmQpOwotICAgIHZvaWQg
aWdub3JlV29yZCh1aW50NjRfdCB0YWcsIGNvbnN0IFN0cmluZyYgd29yZCk7Ci19OwotCi19IC8v
IG5hbWVzcGFjZSBXZWJLaXQKLQotI2VuZGlmIC8vIFdlYlRleHRDaGVja2VyQ2xpZW50X2gKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2d0ay9XZWJUZXh0Q2hlY2tlci5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9ndGsvV2ViVGV4dENoZWNrZXIuY3BwCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLmZkN2RjNjI1MjkwNzE4ZjAxMjY5ZTA0YThjYTAzNTE5YzhhOGQzYjEKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9ndGsvV2ViVGV4dENoZWNrZXIuY3BwCkBA
IC0wLDAgKzEsODEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVk
ZSAiV2ViVGV4dENoZWNrZXIuaCIKKworI2luY2x1ZGUgIlRleHRDaGVja2VyLmgiCisjaW5jbHVk
ZSAiV0tBUElDYXN0LmgiCisjaW5jbHVkZSAiV2ViUGFnZVByb3h5LmgiCisjaW5jbHVkZSAiV2Vi
UHJvY2Vzc1Bvb2wuaCIKKyNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CisKK25hbWVzcGFjZSBXZWJL
aXQgeworCitXZWJUZXh0Q2hlY2tlciogV2ViVGV4dENoZWNrZXI6OnNpbmdsZXRvbigpCit7Cisg
ICAgc3RhdGljIFdlYlRleHRDaGVja2VyKiB0ZXh0Q2hlY2tlciA9IGFkb3B0UmVmKG5ldyBXZWJU
ZXh0Q2hlY2tlcikubGVha1JlZigpOworICAgIHJldHVybiB0ZXh0Q2hlY2tlcjsKK30KKworV2Vi
VGV4dENoZWNrZXI6OldlYlRleHRDaGVja2VyKCkKK3sKK30KKwordm9pZCBXZWJUZXh0Q2hlY2tl
cjo6c2V0Q2xpZW50KGNvbnN0IFdLVGV4dENoZWNrZXJDbGllbnRCYXNlKiBjbGllbnQpCit7Cisg
ICAgbV9jbGllbnQuaW5pdGlhbGl6ZShjbGllbnQpOworfQorCitzdGF0aWMgdm9pZCB1cGRhdGVT
dGF0ZUZvckFsbENvbnRleHRzKCkKK3sKKyAgICBjb25zdCBWZWN0b3I8V2ViUHJvY2Vzc1Bvb2wq
PiYgY29udGV4dHMgPSBXZWJQcm9jZXNzUG9vbDo6YWxsUHJvY2Vzc1Bvb2xzKCk7CisgICAgZm9y
IChzaXplX3QgaSA9IDA7IGkgPCBjb250ZXh0cy5zaXplKCk7ICsraSkKKyAgICAgICAgY29udGV4
dHNbaV0tPnRleHRDaGVja2VyU3RhdGVDaGFuZ2VkKCk7Cit9CisKK3ZvaWQgV2ViVGV4dENoZWNr
ZXI6OmNvbnRpbnVvdXNTcGVsbENoZWNraW5nRW5hYmxlZFN0YXRlQ2hhbmdlZChib29sIGVuYWJs
ZWQpCit7CisgICAgVGV4dENoZWNrZXI6OmNvbnRpbnVvdXNTcGVsbENoZWNraW5nRW5hYmxlZFN0
YXRlQ2hhbmdlZChlbmFibGVkKTsKKyAgICB1cGRhdGVTdGF0ZUZvckFsbENvbnRleHRzKCk7Cit9
CisKK3ZvaWQgV2ViVGV4dENoZWNrZXI6OmdyYW1tYXJDaGVja2luZ0VuYWJsZWRTdGF0ZUNoYW5n
ZWQoYm9vbCBlbmFibGVkKQoreworICAgIFRleHRDaGVja2VyOjpncmFtbWFyQ2hlY2tpbmdFbmFi
bGVkU3RhdGVDaGFuZ2VkKGVuYWJsZWQpOworICAgIHVwZGF0ZVN0YXRlRm9yQWxsQ29udGV4dHMo
KTsKK30KKwordm9pZCBXZWJUZXh0Q2hlY2tlcjo6Y2hlY2tTcGVsbGluZyhXZWJQYWdlUHJveHkq
IHBhZ2UsIGJvb2wgc3RhcnRCZWZvcmVTZWxlY3Rpb24pCit7CisgICAgcGFnZS0+YWR2YW5jZVRv
TmV4dE1pc3NwZWxsaW5nKHN0YXJ0QmVmb3JlU2VsZWN0aW9uKTsKK30KKwordm9pZCBXZWJUZXh0
Q2hlY2tlcjo6Y2hhbmdlU3BlbGxpbmdUb1dvcmQoV2ViUGFnZVByb3h5KiBwYWdlLCBjb25zdCBT
dHJpbmcmIHRleHQpCit7CisgICAgcGFnZS0+Y2hhbmdlU3BlbGxpbmdUb1dvcmQodGV4dCk7Cit9
CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvZ3RrL1dlYlRleHRDaGVja2VyLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9ndGsv
V2ViVGV4dENoZWNrZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xYmRiNjNiY2U1NmFmZWI2N2E0NmY3OTVmMTQ5
M2RiOTk3Zjg1YjI3Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
Z3RrL1dlYlRleHRDaGVja2VyLmgKQEAgLTAsMCArMSw1NiBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAxMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVU
T1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBD
T05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFn
bWEgb25jZQorCisjaW5jbHVkZSAiQVBJT2JqZWN0LmgiCisjaW5jbHVkZSAiV0tUZXh0Q2hlY2tl
ckd0ay5oIgorI2luY2x1ZGUgIldlYlRleHRDaGVja2VyQ2xpZW50LmgiCisjaW5jbHVkZSA8d3Rm
L0ZvcndhcmQuaD4KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIFdlYlBhZ2VQcm94eTsK
KworY2xhc3MgV2ViVGV4dENoZWNrZXIgOiBwdWJsaWMgQVBJOjpPYmplY3RJbXBsPEFQSTo6T2Jq
ZWN0OjpUeXBlOjpUZXh0Q2hlY2tlcj4geworcHVibGljOgorICAgIHN0YXRpYyBXZWJUZXh0Q2hl
Y2tlciogc2luZ2xldG9uKCk7CisKKyAgICB2b2lkIHNldENsaWVudChjb25zdCBXS1RleHRDaGVj
a2VyQ2xpZW50QmFzZSopOworICAgIFdlYlRleHRDaGVja2VyQ2xpZW50JiBjbGllbnQoKSB7IHJl
dHVybiBtX2NsaWVudDsgfQorCisgICAgdm9pZCBjb250aW51b3VzU3BlbGxDaGVja2luZ0VuYWJs
ZWRTdGF0ZUNoYW5nZWQoYm9vbCk7CisgICAgdm9pZCBncmFtbWFyQ2hlY2tpbmdFbmFibGVkU3Rh
dGVDaGFuZ2VkKGJvb2wpOworCisgICAgdm9pZCBjaGVja1NwZWxsaW5nKFdlYlBhZ2VQcm94eSos
IGJvb2wgc3RhcnRCZWZvcmVTZWxlY3Rpb24pOworICAgIHZvaWQgY2hhbmdlU3BlbGxpbmdUb1dv
cmQoV2ViUGFnZVByb3h5KiwgY29uc3QgU3RyaW5nJik7CisKK3ByaXZhdGU6CisgICAgV2ViVGV4
dENoZWNrZXIoKTsKKworICAgIFdlYlRleHRDaGVja2VyQ2xpZW50IG1fY2xpZW50OworfTsKKwor
fSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9ndGsvV2ViVGV4dENoZWNrZXJDbGllbnQuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
Z3RrL1dlYlRleHRDaGVja2VyQ2xpZW50LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yZDcwM2Q3ZDY1ZjUyNjQx
ODhkZTFjODA3OWU2M2YyYmJlZmJmNzg0Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvZ3RrL1dlYlRleHRDaGVja2VyQ2xpZW50LmNwcApAQCAtMCwwICsxLDE4MSBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJXZWJUZXh0Q2hl
Y2tlckNsaWVudC5oIgorCisjaW5jbHVkZSAiQVBJQXJyYXkuaCIKKyNpbmNsdWRlICJXS0FQSUNh
c3QuaCIKKyNpbmNsdWRlICJXS1NoYXJlZEFQSUNhc3QuaCIKKyNpbmNsdWRlICJXZWJHcmFtbWFy
RGV0YWlsLmgiCisjaW5jbHVkZSAiV2ViUGFnZVByb3h5LmgiCisjaW5jbHVkZSA8d3RmL3RleHQv
V1RGU3RyaW5nLmg+CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitib29sIFdlYlRleHRDaGVja2Vy
Q2xpZW50Ojpjb250aW51b3VzU3BlbGxDaGVja2luZ0FsbG93ZWQoKQoreworICAgIGlmICghbV9j
bGllbnQuY29udGludW91c1NwZWxsQ2hlY2tpbmdBbGxvd2VkKQorICAgICAgICByZXR1cm4gZmFs
c2U7CisKKyAgICByZXR1cm4gbV9jbGllbnQuY29udGludW91c1NwZWxsQ2hlY2tpbmdBbGxvd2Vk
KG1fY2xpZW50LmJhc2UuY2xpZW50SW5mbyk7Cit9CisKK2Jvb2wgV2ViVGV4dENoZWNrZXJDbGll
bnQ6OmNvbnRpbnVvdXNTcGVsbENoZWNraW5nRW5hYmxlZCgpCit7CisgICAgaWYgKCFtX2NsaWVu
dC5jb250aW51b3VzU3BlbGxDaGVja2luZ0VuYWJsZWQpCisgICAgICAgIHJldHVybiBmYWxzZTsK
KworICAgIHJldHVybiBtX2NsaWVudC5jb250aW51b3VzU3BlbGxDaGVja2luZ0VuYWJsZWQobV9j
bGllbnQuYmFzZS5jbGllbnRJbmZvKTsKK30KKwordm9pZCBXZWJUZXh0Q2hlY2tlckNsaWVudDo6
c2V0Q29udGludW91c1NwZWxsQ2hlY2tpbmdFbmFibGVkKGJvb2wgZW5hYmxlZCkKK3sKKyAgICBp
ZiAoIW1fY2xpZW50LnNldENvbnRpbnVvdXNTcGVsbENoZWNraW5nRW5hYmxlZCkKKyAgICAgICAg
cmV0dXJuOworCisgICAgbV9jbGllbnQuc2V0Q29udGludW91c1NwZWxsQ2hlY2tpbmdFbmFibGVk
KGVuYWJsZWQsIG1fY2xpZW50LmJhc2UuY2xpZW50SW5mbyk7Cit9CisKK2Jvb2wgV2ViVGV4dENo
ZWNrZXJDbGllbnQ6OmdyYW1tYXJDaGVja2luZ0VuYWJsZWQoKQoreworICAgIGlmICghbV9jbGll
bnQuZ3JhbW1hckNoZWNraW5nRW5hYmxlZCkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAg
cmV0dXJuIG1fY2xpZW50LmdyYW1tYXJDaGVja2luZ0VuYWJsZWQobV9jbGllbnQuYmFzZS5jbGll
bnRJbmZvKTsKK30KKwordm9pZCBXZWJUZXh0Q2hlY2tlckNsaWVudDo6c2V0R3JhbW1hckNoZWNr
aW5nRW5hYmxlZChib29sIGVuYWJsZWQpCit7CisgICAgaWYgKCFtX2NsaWVudC5zZXRHcmFtbWFy
Q2hlY2tpbmdFbmFibGVkKQorICAgICAgICByZXR1cm47CisKKyAgICBtX2NsaWVudC5zZXRHcmFt
bWFyQ2hlY2tpbmdFbmFibGVkKGVuYWJsZWQsIG1fY2xpZW50LmJhc2UuY2xpZW50SW5mbyk7Cit9
CisKK3VpbnQ2NF90IFdlYlRleHRDaGVja2VyQ2xpZW50Ojp1bmlxdWVTcGVsbERvY3VtZW50VGFn
KFdlYlBhZ2VQcm94eSogcGFnZSkKK3sKKyAgICBpZiAoIW1fY2xpZW50LnVuaXF1ZVNwZWxsRG9j
dW1lbnRUYWcpCisgICAgICAgIHJldHVybiAwOworCisgICAgcmV0dXJuIG1fY2xpZW50LnVuaXF1
ZVNwZWxsRG9jdW1lbnRUYWcodG9BUEkocGFnZSksIG1fY2xpZW50LmJhc2UuY2xpZW50SW5mbyk7
Cit9CisKK3ZvaWQgV2ViVGV4dENoZWNrZXJDbGllbnQ6OmNsb3NlU3BlbGxEb2N1bWVudFdpdGhU
YWcodWludDY0X3QgdGFnKQoreworICAgIGlmICghbV9jbGllbnQuY2xvc2VTcGVsbERvY3VtZW50
V2l0aFRhZykKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9jbGllbnQuY2xvc2VTcGVsbERvY3Vt
ZW50V2l0aFRhZyh0YWcsIG1fY2xpZW50LmJhc2UuY2xpZW50SW5mbyk7Cit9CisKK3ZvaWQgV2Vi
VGV4dENoZWNrZXJDbGllbnQ6OmNoZWNrU3BlbGxpbmdPZlN0cmluZyh1aW50NjRfdCB0YWcsIGNv
bnN0IFN0cmluZyYgdGV4dCwgaW50MzJfdCYgbWlzc3BlbGxpbmdMb2NhdGlvbiwgaW50MzJfdCYg
bWlzc3BlbGxpbmdMZW5ndGgpCit7CisgICAgbWlzc3BlbGxpbmdMb2NhdGlvbiA9IC0xOworICAg
IG1pc3NwZWxsaW5nTGVuZ3RoID0gMDsKKworICAgIGlmICghbV9jbGllbnQuY2hlY2tTcGVsbGlu
Z09mU3RyaW5nKQorICAgICAgICByZXR1cm47CisKKyAgICBtX2NsaWVudC5jaGVja1NwZWxsaW5n
T2ZTdHJpbmcodGFnLCB0b0FQSSh0ZXh0LmltcGwoKSksICZtaXNzcGVsbGluZ0xvY2F0aW9uLCAm
bWlzc3BlbGxpbmdMZW5ndGgsIG1fY2xpZW50LmJhc2UuY2xpZW50SW5mbyk7Cit9CisKK3ZvaWQg
V2ViVGV4dENoZWNrZXJDbGllbnQ6OmNoZWNrR3JhbW1hck9mU3RyaW5nKHVpbnQ2NF90IHRhZywg
Y29uc3QgU3RyaW5nJiB0ZXh0LCBWZWN0b3I8V2ViQ29yZTo6R3JhbW1hckRldGFpbD4mIGdyYW1t
YXJEZXRhaWxzLCBpbnQzMl90JiBiYWRHcmFtbWFyTG9jYXRpb24sIGludDMyX3QmIGJhZEdyYW1t
YXJMZW5ndGgpCit7CisgICAgYmFkR3JhbW1hckxvY2F0aW9uID0gLTE7CisgICAgYmFkR3JhbW1h
ckxlbmd0aCA9IDA7CisKKyAgICBpZiAoIW1fY2xpZW50LmNoZWNrR3JhbW1hck9mU3RyaW5nKQor
ICAgICAgICByZXR1cm47CisKKyAgICBXS0FycmF5UmVmIHdrR3JhbW1hckRldGFpbHNSZWYgPSAw
OworICAgIG1fY2xpZW50LmNoZWNrR3JhbW1hck9mU3RyaW5nKHRhZywgdG9BUEkodGV4dC5pbXBs
KCkpLCAmd2tHcmFtbWFyRGV0YWlsc1JlZiwgJmJhZEdyYW1tYXJMb2NhdGlvbiwgJmJhZEdyYW1t
YXJMZW5ndGgsIG1fY2xpZW50LmJhc2UuY2xpZW50SW5mbyk7CisKKyAgICBSZWZQdHI8QVBJOjpB
cnJheT4gd2tHcmFtbWFyRGV0YWlscyA9IGFkb3B0UmVmKHRvSW1wbCh3a0dyYW1tYXJEZXRhaWxz
UmVmKSk7CisgICAgc2l6ZV90IG51bUdyYW1tYXJEZXRhaWxzID0gd2tHcmFtbWFyRGV0YWlscy0+
c2l6ZSgpOworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbnVtR3JhbW1hckRldGFpbHM7ICsr
aSkKKyAgICAgICAgZ3JhbW1hckRldGFpbHMuYXBwZW5kKHdrR3JhbW1hckRldGFpbHMtPmF0PFdl
YkdyYW1tYXJEZXRhaWw+KGkpLT5ncmFtbWFyRGV0YWlsKCkpOworfQorCitib29sIFdlYlRleHRD
aGVja2VyQ2xpZW50OjpzcGVsbGluZ1VJSXNTaG93aW5nKCkKK3sKKyAgICBpZiAoIW1fY2xpZW50
LnNwZWxsaW5nVUlJc1Nob3dpbmcpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIHJldHVy
biBtX2NsaWVudC5zcGVsbGluZ1VJSXNTaG93aW5nKG1fY2xpZW50LmJhc2UuY2xpZW50SW5mbyk7
Cit9CisKK3ZvaWQgV2ViVGV4dENoZWNrZXJDbGllbnQ6OnRvZ2dsZVNwZWxsaW5nVUlJc1Nob3dp
bmcoKQoreworICAgIGlmICghbV9jbGllbnQudG9nZ2xlU3BlbGxpbmdVSUlzU2hvd2luZykKKyAg
ICAgICAgcmV0dXJuOworCisgICAgcmV0dXJuIG1fY2xpZW50LnRvZ2dsZVNwZWxsaW5nVUlJc1No
b3dpbmcobV9jbGllbnQuYmFzZS5jbGllbnRJbmZvKTsKK30KKwordm9pZCBXZWJUZXh0Q2hlY2tl
ckNsaWVudDo6dXBkYXRlU3BlbGxpbmdVSVdpdGhNaXNzcGVsbGVkV29yZCh1aW50NjRfdCB0YWcs
IGNvbnN0IFN0cmluZyYgbWlzc3BlbGxlZFdvcmQpCit7CisgICAgaWYgKCFtX2NsaWVudC51cGRh
dGVTcGVsbGluZ1VJV2l0aE1pc3NwZWxsZWRXb3JkKQorICAgICAgICByZXR1cm47CisKKyAgICBt
X2NsaWVudC51cGRhdGVTcGVsbGluZ1VJV2l0aE1pc3NwZWxsZWRXb3JkKHRhZywgdG9BUEkobWlz
c3BlbGxlZFdvcmQuaW1wbCgpKSwgbV9jbGllbnQuYmFzZS5jbGllbnRJbmZvKTsKK30KKwordm9p
ZCBXZWJUZXh0Q2hlY2tlckNsaWVudDo6dXBkYXRlU3BlbGxpbmdVSVdpdGhHcmFtbWFyU3RyaW5n
KHVpbnQ2NF90IHRhZywgY29uc3QgU3RyaW5nJiBiYWRHcmFtbWFyUGhyYXNlLCBjb25zdCBXZWJD
b3JlOjpHcmFtbWFyRGV0YWlsJiBncmFtbWFyRGV0YWlsKQoreworICAgIGlmICghbV9jbGllbnQu
dXBkYXRlU3BlbGxpbmdVSVdpdGhHcmFtbWFyU3RyaW5nKQorICAgICAgICByZXR1cm47CisKKyAg
ICBtX2NsaWVudC51cGRhdGVTcGVsbGluZ1VJV2l0aEdyYW1tYXJTdHJpbmcodGFnLCB0b0FQSShi
YWRHcmFtbWFyUGhyYXNlLmltcGwoKSksIHRvQVBJKGdyYW1tYXJEZXRhaWwpLCBtX2NsaWVudC5i
YXNlLmNsaWVudEluZm8pOworfQorCit2b2lkIFdlYlRleHRDaGVja2VyQ2xpZW50OjpndWVzc2Vz
Rm9yV29yZCh1aW50NjRfdCB0YWcsIGNvbnN0IFN0cmluZyYgd29yZCwgVmVjdG9yPFN0cmluZz4m
IGd1ZXNzZXMpCit7CisgICAgaWYgKCFtX2NsaWVudC5ndWVzc2VzRm9yV29yZCkKKyAgICAgICAg
cmV0dXJuOworCisgICAgUmVmUHRyPEFQSTo6QXJyYXk+IHdrR3Vlc3NlcyA9IGFkb3B0UmVmKHRv
SW1wbChtX2NsaWVudC5ndWVzc2VzRm9yV29yZCh0YWcsIHRvQVBJKHdvcmQuaW1wbCgpKSwgbV9j
bGllbnQuYmFzZS5jbGllbnRJbmZvKSkpOworICAgIHNpemVfdCBudW1HdWVzc2VzID0gd2tHdWVz
c2VzLT5zaXplKCk7CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBudW1HdWVzc2VzOyArK2kp
CisgICAgICAgIGd1ZXNzZXMuYXBwZW5kKHdrR3Vlc3Nlcy0+YXQ8QVBJOjpTdHJpbmc+KGkpLT5z
dHJpbmcoKSk7Cit9CisKK3ZvaWQgV2ViVGV4dENoZWNrZXJDbGllbnQ6OmxlYXJuV29yZCh1aW50
NjRfdCB0YWcsIGNvbnN0IFN0cmluZyYgd29yZCkKK3sKKyAgICBpZiAoIW1fY2xpZW50LmxlYXJu
V29yZCkKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9jbGllbnQubGVhcm5Xb3JkKHRhZywgdG9B
UEkod29yZC5pbXBsKCkpLCBtX2NsaWVudC5iYXNlLmNsaWVudEluZm8pOworfQorCit2b2lkIFdl
YlRleHRDaGVja2VyQ2xpZW50OjppZ25vcmVXb3JkKHVpbnQ2NF90IHRhZywgY29uc3QgU3RyaW5n
JiB3b3JkKQoreworICAgIGlmICghbV9jbGllbnQuaWdub3JlV29yZCkKKyAgICAgICAgcmV0dXJu
OworCisgICAgbV9jbGllbnQuaWdub3JlV29yZCh0YWcsIHRvQVBJKHdvcmQuaW1wbCgpKSwgbV9j
bGllbnQuYmFzZS5jbGllbnRJbmZvKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9ndGsvV2ViVGV4dENoZWNrZXJDbGllbnQu
aCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2d0ay9XZWJUZXh0Q2hlY2tlckNsaWVudC5oCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjg5OTVjZThiNjNjMmYwMTNhZTUwMGFjMzNjNDZlMzQzNmQ5NmY2ODUKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9ndGsvV2ViVGV4dENoZWNrZXJD
bGllbnQuaApAQCAtMCwwICsxLDYzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycn
CisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwor
ICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICog
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNp
bmNsdWRlICJBUElDbGllbnQuaCIKKyNpbmNsdWRlICJXS1RleHRDaGVja2VyR3RrLmgiCisjaW5j
bHVkZSA8V2ViQ29yZS9UZXh0Q2hlY2tlckNsaWVudC5oPgorI2luY2x1ZGUgPHd0Zi9Gb3J3YXJk
Lmg+CisKK25hbWVzcGFjZSBBUEkgewordGVtcGxhdGU8PiBzdHJ1Y3QgQ2xpZW50VHJhaXRzPFdL
VGV4dENoZWNrZXJDbGllbnRCYXNlPiB7CisgICAgdHlwZWRlZiBzdGQ6OnR1cGxlPFdLVGV4dENo
ZWNrZXJDbGllbnRWMD4gVmVyc2lvbnM7Cit9OworfQorCituYW1lc3BhY2UgV2ViS2l0IHsKKwor
Y2xhc3MgV2ViUGFnZVByb3h5OworCitjbGFzcyBXZWJUZXh0Q2hlY2tlckNsaWVudCA6IHB1Ymxp
YyBBUEk6OkNsaWVudDxXS1RleHRDaGVja2VyQ2xpZW50QmFzZT4geworcHVibGljOgorICAgIGJv
b2wgY29udGludW91c1NwZWxsQ2hlY2tpbmdBbGxvd2VkKCk7CisgICAgYm9vbCBjb250aW51b3Vz
U3BlbGxDaGVja2luZ0VuYWJsZWQoKTsKKyAgICB2b2lkIHNldENvbnRpbnVvdXNTcGVsbENoZWNr
aW5nRW5hYmxlZChib29sKTsKKyAgICBib29sIGdyYW1tYXJDaGVja2luZ0VuYWJsZWQoKTsKKyAg
ICB2b2lkIHNldEdyYW1tYXJDaGVja2luZ0VuYWJsZWQoYm9vbCk7CisgICAgdWludDY0X3QgdW5p
cXVlU3BlbGxEb2N1bWVudFRhZyhXZWJQYWdlUHJveHkqKTsKKyAgICB2b2lkIGNsb3NlU3BlbGxE
b2N1bWVudFdpdGhUYWcodWludDY0X3QpOworICAgIHZvaWQgY2hlY2tTcGVsbGluZ09mU3RyaW5n
KHVpbnQ2NF90IHRhZywgY29uc3QgU3RyaW5nJiB0ZXh0LCBpbnQzMl90JiBtaXNzcGVsbGluZ0xv
Y2F0aW9uLCBpbnQzMl90JiBtaXNzcGVsbGluZ0xlbmd0aCk7CisgICAgdm9pZCBjaGVja0dyYW1t
YXJPZlN0cmluZyh1aW50NjRfdCB0YWcsIGNvbnN0IFN0cmluZyYgdGV4dCwgVmVjdG9yPFdlYkNv
cmU6OkdyYW1tYXJEZXRhaWw+JiwgaW50MzJfdCYgYmFkR3JhbW1hckxvY2F0aW9uLCBpbnQzMl90
JiBiYWRHcmFtbWFyTGVuZ3RoKTsKKyAgICBib29sIHNwZWxsaW5nVUlJc1Nob3dpbmcoKTsKKyAg
ICB2b2lkIHRvZ2dsZVNwZWxsaW5nVUlJc1Nob3dpbmcoKTsKKyAgICB2b2lkIHVwZGF0ZVNwZWxs
aW5nVUlXaXRoTWlzc3BlbGxlZFdvcmQodWludDY0X3QgdGFnLCBjb25zdCBTdHJpbmcmIG1pc3Nw
ZWxsZWRXb3JkKTsKKyAgICB2b2lkIHVwZGF0ZVNwZWxsaW5nVUlXaXRoR3JhbW1hclN0cmluZyh1
aW50NjRfdCB0YWcsIGNvbnN0IFN0cmluZyYgYmFkR3JhbW1hclBocmFzZSwgY29uc3QgV2ViQ29y
ZTo6R3JhbW1hckRldGFpbCYpOworICAgIHZvaWQgZ3Vlc3Nlc0ZvcldvcmQodWludDY0X3QgdGFn
LCBjb25zdCBTdHJpbmcmIHdvcmQsIFZlY3RvcjxTdHJpbmc+JiBndWVzc2VzKTsKKyAgICB2b2lk
IGxlYXJuV29yZCh1aW50NjRfdCB0YWcsIGNvbnN0IFN0cmluZyYgd29yZCk7CisgICAgdm9pZCBp
Z25vcmVXb3JkKHVpbnQ2NF90IHRhZywgY29uc3QgU3RyaW5nJiB3b3JkKTsKK307CisKK30gLy8g
bmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hh
bmdlTG9nCmluZGV4IDUxNDU3ZDE5ZjJkMTZmZTE3Mzk4MDc3MDZjNWU1MmQxN2QzMGM4MzcuLmJl
MGY4OTE3MTk0YzIxYjk4OWJkZGNiNDVkOGQ1MTMxNGE5NzBhMWQgMTAwNjQ0Ci0tLSBhL1Rvb2xz
L0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNCBAQAorMjAyMS0w
My0wNSAgTWljaGFlbCBDYXRhbnphcm8gIDxtY2F0YW56YXJvQGdub21lLm9yZz4KKworICAgICAg
ICBbR1RLXSBDbGVhbiB1cCBHVEstc3BlY2lmaWMgdGV4dCBjaGVja2VyIHN0dWZmCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjI4MTgKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFdlYktpdFRlc3RSdW5u
ZXIvZ3RrL1Rlc3RDb250cm9sbGVyR3RrLmNwcDoKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVy
L2d0ay9VSVNjcmlwdENvbnRyb2xsZXJHdGsuY3BwOgorICAgICAgICAoV1RSOjpVSVNjcmlwdENv
bnRyb2xsZXJHdGs6OnNldENvbnRpbnVvdXNTcGVsbENoZWNraW5nRW5hYmxlZCk6CisKIDIwMjEt
MDMtMDUgIEFha2FzaCBKYWluICA8YWFrYXNoX2phaW5AYXBwbGUuY29tPgogCiAgICAgICAgIFtl
d3NdIFJ1biBld3MgdW5pdC10ZXN0cyB3aXRoIFB5dGhvbiAzCmRpZmYgLS1naXQgYS9Ub29scy9X
ZWJLaXRUZXN0UnVubmVyL2d0ay9UZXN0Q29udHJvbGxlckd0ay5jcHAgYi9Ub29scy9XZWJLaXRU
ZXN0UnVubmVyL2d0ay9UZXN0Q29udHJvbGxlckd0ay5jcHAKaW5kZXggN2U2MGQ2OTE4ZmRhNmYx
NzUxYWRlMjM5OGJjMTI1NzA3M2E4ODQwMi4uYjk4ZmVhYjk4OGI5MDkyM2JmNjA3ZTZkYjc4NTcz
ZjE1YmZlODE2MSAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9ndGsvVGVzdENv
bnRyb2xsZXJHdGsuY3BwCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvZ3RrL1Rlc3RDb250
cm9sbGVyR3RrLmNwcApAQCAtMjgsNyArMjgsNyBAQAogI2luY2x1ZGUgIlRlc3RDb250cm9sbGVy
LmgiCiAKICNpbmNsdWRlICJQbGF0Zm9ybVdlYlZpZXcuaCIKLSNpbmNsdWRlIDxXZWJLaXQvV0tU
ZXh0Q2hlY2tlci5oPgorI2luY2x1ZGUgPFdlYktpdC9XS1RleHRDaGVja2VyR3RrLmg+CiAjaW5j
bHVkZSA8Z3RrL2d0ay5oPgogI2luY2x1ZGUgPHd0Zi9QbGF0Zm9ybS5oPgogI2luY2x1ZGUgPHd0
Zi9SdW5Mb29wLmg+CmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL2d0ay9VSVNj
cmlwdENvbnRyb2xsZXJHdGsuY3BwIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9ndGsvVUlTY3Jp
cHRDb250cm9sbGVyR3RrLmNwcAppbmRleCAzMDBjYWE3MzU2ZjdlZWU2YTdjMzdhM2UyODgyMzUx
ZDI4OWEwZmY1Li5mMTFiNmQwNjM0OTA0MjA4N2IzOTQ1MjA4YmY0OWMyZDkwNzc3YWZlIDEwMDY0
NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL2d0ay9VSVNjcmlwdENvbnRyb2xsZXJHdGsu
Y3BwCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvZ3RrL1VJU2NyaXB0Q29udHJvbGxlckd0
ay5jcHAKQEAgLTI5LDkgKzI5LDkgQEAKICNpbmNsdWRlICJFdmVudFNlbmRlclByb3h5LmgiCiAj
aW5jbHVkZSAiUGxhdGZvcm1XZWJWaWV3LmgiCiAjaW5jbHVkZSAiVGVzdENvbnRyb2xsZXIuaCIK
LSNpbmNsdWRlICJUZXh0Q2hlY2tlci5oIgogI2luY2x1ZGUgIlVJU2NyaXB0Q29udGV4dC5oIgog
I2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL09wYXF1ZUpTU3RyaW5nLmg+CisjaW5jbHVkZSA8V2Vi
S2l0L1dLVGV4dENoZWNrZXJHdGsuaD4KICNpbmNsdWRlIDxXZWJLaXQvV0tWaWV3UHJpdmF0ZS5o
PgogI2luY2x1ZGUgPGd0ay9ndGsuaD4KICNpbmNsdWRlIDx3dGYvUnVuTG9vcC5oPgpAQCAtNzcs
NyArNzcsNyBAQCB2b2lkIFVJU2NyaXB0Q29udHJvbGxlckd0azo6ZG9Bc3luY1Rhc2soSlNWYWx1
ZVJlZiBjYWxsYmFjaykKIAogdm9pZCBVSVNjcmlwdENvbnRyb2xsZXJHdGs6OnNldENvbnRpbnVv
dXNTcGVsbENoZWNraW5nRW5hYmxlZChib29sIGVuYWJsZWQpCiB7Ci0gICAgV2ViS2l0OjpUZXh0
Q2hlY2tlcjo6c2V0Q29udGludW91c1NwZWxsQ2hlY2tpbmdFbmFibGVkKGVuYWJsZWQpOworICAg
IFdLVGV4dENoZWNrZXJTZXRDb250aW51b3VzU3BlbGxDaGVja2luZ0VuYWJsZWQoZW5hYmxlZCk7
CiB9CiAKIHZvaWQgVUlTY3JpcHRDb250cm9sbGVyR3RrOjpjb3B5VGV4dChKU1N0cmluZ1JlZiB0
ZXh0KQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>422425</attachid>
            <date>2021-03-05 14:41:23 -0800</date>
            <delta_ts>2021-03-05 15:07:41 -0800</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-222818-20210305164122.patch</filename>
            <type>text/plain</type>
            <size>52154</size>
            <attacher name="Michael Catanzaro">mcatanzaro</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc0MDAyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGFkM2IxZGU5NGIxOTFjNDRm
ODYxYmUxNDAxMmQ3OTgyNTJmMGQ2ODMuLmJkZWNkMGNkMmRmNGZmNjkwNjhmYWExZWZhMmZjMzdk
ZDYxYjE2NjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNzMgQEAKKzIwMjEtMDMtMDUgIE1pY2hhZWwg
Q2F0YW56YXJvICA8bWNhdGFuemFyb0Bnbm9tZS5vcmc+CisKKyAgICAgICAgW0dUS10gQ2xlYW4g
dXAgR1RLLXNwZWNpZmljIHRleHQgY2hlY2tlciBzdHVmZgorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjIyODE4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
RG9uIE9sbXN0ZWFkLgorCisgICAgICAgIFRoaXMgbW92ZXMgdGhlIEdUSy1zcGVjaWZpYyBjbGFz
c2VzIFdlYlRleHRDaGVja2VyIGFuZCBXZWJUZXh0Q2hlY2tlckNsaWVudCBpbnRvCisgICAgICAg
IEdUSy1zcGVjaWZpYyBkaXJlY3Rvcmllcy4KKworICAgICAgICBUaGlzIGFsc28gbW92ZXMgbW9z
dCBvZiBXS1RleHRDaGVja2VyLCBleGNlcHQgZm9yIFdLVGV4dENoZWNrZXJTZXRUZXN0aW5nTW9k
ZSwgd2hpY2ggaXMKKyAgICAgICAgY3Jvc3MtcGxhdGZvcm0uIFRoaXMgaXMgbm90IHF1aXRlIGhv
dyB3ZSBub3JtYWxseSBkbyBpdCAtLSBub3JtYWxseSB3ZSB0cnkgdG8gaGF2ZSBvbmUKKyAgICAg
ICAgY3Jvc3MtcGxhdGZvcm0gaGVhZGVyIHdpdGggcGxhdGZvcm0tc3BlY2lmaWMgY29uZGl0aW9u
YWxzIGFuZCBvbmx5IHNlcGFyYXRlIG91dCBwbGF0Zm9ybS0KKyAgICAgICAgc3BlY2lmaWMgc291
cmNlIGZpbGVzIC0tIGJ1dCBpbiB0aGlzIGNhc2UgdGhlIGhlYWRlciBpcyBhbG1vc3QgZW50aXJl
bHkgR1RLLXNwZWNpZmljLCBzbyBpdAorICAgICAgICBtYWtlcyBzZW5zZSB0byBkbyBpdCB0aGlz
IHdheS4KKworICAgICAgICBUaGlzIGFsc28gZXhwb3NlcyBXS1RleHRDaGVja2VyU2V0Q29udGlu
dW91c1NwZWxsQ2hlY2tpbmdFbmFibGVkIGFuZCB1c2VzIGl0IGluCisgICAgICAgIFVJU2NyaXB0
Q29udHJvbGxlckd0aywgd2hpY2ggaXMgbmVlZGVkIGZvciBidWcgIzE4MTkxNi4KKworICAgICAg
ICBUaGlzIGNvZGUgaXMgYWxsIHByZXR0eSBtZXNzeSwgZXNwZWNpYWxseSB0aGUgV0tUZXh0Q2hl
Y2tlckNsaWVudCAod2hpY2ggYWN0dWFsbHkgaGFzIGl0cworICAgICAgICBvd24gV0tUZXh0Q2hl
Y2tlclNldENvbnRpbnVvdXNTcGVsbENoZWNraW5nRW5hYmxlZCEpLCBidXQgbm93IGl0J3MgYSAq
cGxhdGZvcm0tc3BlY2lmaWMqCisgICAgICAgIG1lc3MsIHdoaWNoIGlzIGEgc21hbGwgaW1wcm92
ZW1lbnQuCisKKyAgICAgICAgKiBTb3VyY2VzR1RLLnR4dDoKKyAgICAgICAgKiBVSVByb2Nlc3Mv
QVBJL0MvV0tUZXh0Q2hlY2tlci5jcHA6CisgICAgICAgIChXS1RleHRDaGVja2VyU2V0VGVzdGlu
Z01vZGUpOgorICAgICAgICAoV0tUZXh0Q2hlY2tlclNldENsaWVudCk6IERlbGV0ZWQuCisgICAg
ICAgIChXS1RleHRDaGVja2VyQ29udGludW91c1NwZWxsQ2hlY2tpbmdFbmFibGVkU3RhdGVDaGFu
Z2VkKTogRGVsZXRlZC4KKyAgICAgICAgKFdLVGV4dENoZWNrZXJHcmFtbWFyQ2hlY2tpbmdFbmFi
bGVkU3RhdGVDaGFuZ2VkKTogRGVsZXRlZC4KKyAgICAgICAgKFdLVGV4dENoZWNrZXJDaGVja1Nw
ZWxsaW5nKTogRGVsZXRlZC4KKyAgICAgICAgKFdLVGV4dENoZWNrZXJDaGFuZ2VTcGVsbGluZ1Rv
V29yZCk6IERlbGV0ZWQuCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9DL1dLVGV4dENoZWNrZXIu
aDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvZ3RrL1dLVGV4dENoZWNrZXJHdGsuY3BwOgor
ICAgICAgICAoV0tUZXh0Q2hlY2tlclNldENsaWVudCk6CisgICAgICAgIChXS1RleHRDaGVja2Vy
Q29udGludW91c1NwZWxsQ2hlY2tpbmdFbmFibGVkU3RhdGVDaGFuZ2VkKToKKyAgICAgICAgKFdL
VGV4dENoZWNrZXJHcmFtbWFyQ2hlY2tpbmdFbmFibGVkU3RhdGVDaGFuZ2VkKToKKyAgICAgICAg
KFdLVGV4dENoZWNrZXJDaGVja1NwZWxsaW5nKToKKyAgICAgICAgKFdLVGV4dENoZWNrZXJDaGFu
Z2VTcGVsbGluZ1RvV29yZCk6CisgICAgICAgIChXS1RleHRDaGVja2VyU2V0Q29udGludW91c1Nw
ZWxsQ2hlY2tpbmdFbmFibGVkKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvZ3RrL1dLVGV4
dENoZWNrZXJHdGsuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvZ3RrL1dlYlRleHRDaGVja2VyLmNw
cDogUmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlRleHRDaGVja2VyLmNw
cC4KKyAgICAgICAgKFdlYktpdDo6V2ViVGV4dENoZWNrZXI6OnNpbmdsZXRvbik6CisgICAgICAg
IChXZWJLaXQ6OldlYlRleHRDaGVja2VyOjpXZWJUZXh0Q2hlY2tlcik6CisgICAgICAgIChXZWJL
aXQ6OldlYlRleHRDaGVja2VyOjpzZXRDbGllbnQpOgorICAgICAgICAoV2ViS2l0Ojp1cGRhdGVT
dGF0ZUZvckFsbENvbnRleHRzKToKKyAgICAgICAgKFdlYktpdDo6V2ViVGV4dENoZWNrZXI6OmNv
bnRpbnVvdXNTcGVsbENoZWNraW5nRW5hYmxlZFN0YXRlQ2hhbmdlZCk6CisgICAgICAgIChXZWJL
aXQ6OldlYlRleHRDaGVja2VyOjpncmFtbWFyQ2hlY2tpbmdFbmFibGVkU3RhdGVDaGFuZ2VkKToK
KyAgICAgICAgKFdlYktpdDo6V2ViVGV4dENoZWNrZXI6OmNoZWNrU3BlbGxpbmcpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJUZXh0Q2hlY2tlcjo6Y2hhbmdlU3BlbGxpbmdUb1dvcmQpOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9ndGsvV2ViVGV4dENoZWNrZXIuaDogUmVuYW1lZCBmcm9tIFNvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYlRleHRDaGVja2VyLmguCisgICAgICAgIChXZWJLaXQ6OldlYlRl
eHRDaGVja2VyOjpjbGllbnQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9ndGsvV2ViVGV4dENoZWNr
ZXJDbGllbnQuY3BwOiBSZW5hbWVkIGZyb20gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViVGV4
dENoZWNrZXJDbGllbnQuY3BwLgorICAgICAgICAoV2ViS2l0OjpXZWJUZXh0Q2hlY2tlckNsaWVu
dDo6Y29udGludW91c1NwZWxsQ2hlY2tpbmdBbGxvd2VkKToKKyAgICAgICAgKFdlYktpdDo6V2Vi
VGV4dENoZWNrZXJDbGllbnQ6OmNvbnRpbnVvdXNTcGVsbENoZWNraW5nRW5hYmxlZCk6CisgICAg
ICAgIChXZWJLaXQ6OldlYlRleHRDaGVja2VyQ2xpZW50OjpzZXRDb250aW51b3VzU3BlbGxDaGVj
a2luZ0VuYWJsZWQpOgorICAgICAgICAoV2ViS2l0OjpXZWJUZXh0Q2hlY2tlckNsaWVudDo6Z3Jh
bW1hckNoZWNraW5nRW5hYmxlZCk6CisgICAgICAgIChXZWJLaXQ6OldlYlRleHRDaGVja2VyQ2xp
ZW50OjpzZXRHcmFtbWFyQ2hlY2tpbmdFbmFibGVkKToKKyAgICAgICAgKFdlYktpdDo6V2ViVGV4
dENoZWNrZXJDbGllbnQ6OnVuaXF1ZVNwZWxsRG9jdW1lbnRUYWcpOgorICAgICAgICAoV2ViS2l0
OjpXZWJUZXh0Q2hlY2tlckNsaWVudDo6Y2xvc2VTcGVsbERvY3VtZW50V2l0aFRhZyk6CisgICAg
ICAgIChXZWJLaXQ6OldlYlRleHRDaGVja2VyQ2xpZW50OjpjaGVja1NwZWxsaW5nT2ZTdHJpbmcp
OgorICAgICAgICAoV2ViS2l0OjpXZWJUZXh0Q2hlY2tlckNsaWVudDo6Y2hlY2tHcmFtbWFyT2ZT
dHJpbmcpOgorICAgICAgICAoV2ViS2l0OjpXZWJUZXh0Q2hlY2tlckNsaWVudDo6c3BlbGxpbmdV
SUlzU2hvd2luZyk6CisgICAgICAgIChXZWJLaXQ6OldlYlRleHRDaGVja2VyQ2xpZW50Ojp0b2dn
bGVTcGVsbGluZ1VJSXNTaG93aW5nKToKKyAgICAgICAgKFdlYktpdDo6V2ViVGV4dENoZWNrZXJD
bGllbnQ6OnVwZGF0ZVNwZWxsaW5nVUlXaXRoTWlzc3BlbGxlZFdvcmQpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJUZXh0Q2hlY2tlckNsaWVudDo6dXBkYXRlU3BlbGxpbmdVSVdpdGhHcmFtbWFyU3Ry
aW5nKToKKyAgICAgICAgKFdlYktpdDo6V2ViVGV4dENoZWNrZXJDbGllbnQ6Omd1ZXNzZXNGb3JX
b3JkKToKKyAgICAgICAgKFdlYktpdDo6V2ViVGV4dENoZWNrZXJDbGllbnQ6OmxlYXJuV29yZCk6
CisgICAgICAgIChXZWJLaXQ6OldlYlRleHRDaGVja2VyQ2xpZW50OjppZ25vcmVXb3JkKToKKyAg
ICAgICAgKiBVSVByb2Nlc3MvZ3RrL1dlYlRleHRDaGVja2VyQ2xpZW50Lmg6IFJlbmFtZWQgZnJv
bSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJUZXh0Q2hlY2tlckNsaWVudC5oLgorCiAyMDIx
LTAzLTA1ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAgICAgUmVncmVz
c2lvbihyMjY4MDk3KTogV0tXZWJWaWV3LlVSTCBpcyBuaWwgaW4gdGhlIHByb2Nlc3NEaWRUZXJt
aW5hdGUgZGVsZWdhdGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU291cmNlc0dUSy50eHQg
Yi9Tb3VyY2UvV2ViS2l0L1NvdXJjZXNHVEsudHh0CmluZGV4IGJjZDcyMWZlY2U3ZTZlNjgzMzU3
ZjA5OTMwODE4MDlhYzU0NzdjMjAuLjQyYjk5Y2QzY2YwZWE4ZmRjYWFmZWU2OGMzODcyYjg4NTQw
ZTRkZjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU291cmNlc0dUSy50eHQKKysrIGIvU291
cmNlL1dlYktpdC9Tb3VyY2VzR1RLLnR4dApAQCAtMTA3LDggKzEwNyw2IEBAIFVJUHJvY2Vzcy9M
ZWdhY3lTZXNzaW9uU3RhdGVDb2RpbmdOb25lLmNwcAogVUlQcm9jZXNzL1ZpZXdTbmFwc2hvdFN0
b3JlLmNwcAogVUlQcm9jZXNzL1dlYkdyYW1tYXJEZXRhaWwuY3BwCiBVSVByb2Nlc3MvV2ViTWVt
b3J5UHJlc3N1cmVIYW5kbGVyLmNwcAotVUlQcm9jZXNzL1dlYlRleHRDaGVja2VyLmNwcAotVUlQ
cm9jZXNzL1dlYlRleHRDaGVja2VyQ2xpZW50LmNwcAogVUlQcm9jZXNzL1dlYlZpZXdwb3J0QXR0
cmlidXRlcy5jcHAKIAogVUlQcm9jZXNzL0FQSS9DL1dLR3JhbW1hckRldGFpbC5jcHAKQEAgLTI2
OCw2ICsyNjYsOCBAQCBVSVByb2Nlc3MvZ3RrL1dlYlBhZ2VQcm94eUd0ay5jcHAgQG5vLXVuaWZ5
CiBVSVByb2Nlc3MvZ3RrL1dlYlBhc3RlYm9hcmRQcm94eUd0ay5jcHAKIFVJUHJvY2Vzcy9ndGsv
V2ViUG9wdXBNZW51UHJveHlHdGsuY3BwCiBVSVByb2Nlc3MvZ3RrL1dlYlByZWZlcmVuY2VzR3Rr
LmNwcAorVUlQcm9jZXNzL2d0ay9XZWJUZXh0Q2hlY2tlci5jcHAKK1VJUHJvY2Vzcy9ndGsvV2Vi
VGV4dENoZWNrZXJDbGllbnQuY3BwCiAKIFVJUHJvY2Vzcy9zb3VwL1dlYkNvb2tpZU1hbmFnZXJQ
cm94eVNvdXAuY3BwCiBVSVByb2Nlc3Mvc291cC9XZWJQcm9jZXNzUG9vbFNvdXAuY3BwCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1RleHRDaGVja2VyLmNwcCBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLVGV4dENoZWNrZXIuY3BwCmluZGV4IGM4
ZTc1NjBiMTc1NjFhMjVlNDJiYTE5YzY5Y2E2YjBjNGJjNTliZTEuLjM2MTk0NzZiNDFkZDI4Nzlj
MThiZmMyNTRjOWYwMDVlYjIxZmI3YmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9DL1dLVGV4dENoZWNrZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9DL1dLVGV4dENoZWNrZXIuY3BwCkBAIC0yNSwxMyArMjUsOCBAQAogCiAjaW5jbHVkZSAi
Y29uZmlnLmgiCiAjaW5jbHVkZSAiV0tUZXh0Q2hlY2tlci5oIgotI2luY2x1ZGUgIlRleHRDaGVj
a2VyLmgiCiAKLSNpZiBkZWZpbmVkKEJVSUxESU5HX0dUS19fKQotI2luY2x1ZGUgIldLQVBJQ2Fz
dC5oIgotI2luY2x1ZGUgIldlYlBhZ2VQcm94eS5oIgotI2luY2x1ZGUgIldlYlRleHRDaGVja2Vy
LmgiCi0jZW5kaWYKKyNpbmNsdWRlICJUZXh0Q2hlY2tlci5oIgogCiB1c2luZyBuYW1lc3BhY2Ug
V2ViS2l0OwogCkBAIC0zOSwzNCArMzQsMyBAQCB2b2lkIFdLVGV4dENoZWNrZXJTZXRUZXN0aW5n
TW9kZShib29sIGVuYWJsZWQpCiB7CiAgICAgVGV4dENoZWNrZXI6OnNldFRlc3RpbmdNb2RlKGVu
YWJsZWQpOwogfQotCi0jaWYgZGVmaW5lZChCVUlMRElOR19HVEtfXykKLQotdm9pZCBXS1RleHRD
aGVja2VyU2V0Q2xpZW50KGNvbnN0IFdLVGV4dENoZWNrZXJDbGllbnRCYXNlKiB3a0NsaWVudCkK
LXsKLSAgICBpZiAod2tDbGllbnQgJiYgd2tDbGllbnQtPnZlcnNpb24pCi0gICAgICAgIHJldHVy
bjsKLSAgICBXZWJUZXh0Q2hlY2tlcjo6c2luZ2xldG9uKCktPnNldENsaWVudCh3a0NsaWVudCk7
Ci19Ci0KLXZvaWQgV0tUZXh0Q2hlY2tlckNvbnRpbnVvdXNTcGVsbENoZWNraW5nRW5hYmxlZFN0
YXRlQ2hhbmdlZChib29sIGVuYWJsZWQpCi17Ci0gICAgV2ViVGV4dENoZWNrZXI6OnNpbmdsZXRv
bigpLT5jb250aW51b3VzU3BlbGxDaGVja2luZ0VuYWJsZWRTdGF0ZUNoYW5nZWQoZW5hYmxlZCk7
Ci19Ci0KLXZvaWQgV0tUZXh0Q2hlY2tlckdyYW1tYXJDaGVja2luZ0VuYWJsZWRTdGF0ZUNoYW5n
ZWQoYm9vbCBlbmFibGVkKQotewotICAgIFdlYlRleHRDaGVja2VyOjpzaW5nbGV0b24oKS0+Z3Jh
bW1hckNoZWNraW5nRW5hYmxlZFN0YXRlQ2hhbmdlZChlbmFibGVkKTsKLX0KLQotdm9pZCBXS1Rl
eHRDaGVja2VyQ2hlY2tTcGVsbGluZyhXS1BhZ2VSZWYgcGFnZSwgYm9vbCBzdGFydEJlZm9yZVNl
bGVjdGlvbikKLXsKLSAgICBXZWJUZXh0Q2hlY2tlcjo6c2luZ2xldG9uKCktPmNoZWNrU3BlbGxp
bmcodG9JbXBsKHBhZ2UpLCBzdGFydEJlZm9yZVNlbGVjdGlvbik7Ci19Ci0KLXZvaWQgV0tUZXh0
Q2hlY2tlckNoYW5nZVNwZWxsaW5nVG9Xb3JkKFdLUGFnZVJlZiBwYWdlLCBXS1N0cmluZ1JlZiB3
b3JkKQotewotICAgIFdlYlRleHRDaGVja2VyOjpzaW5nbGV0b24oKS0+Y2hhbmdlU3BlbGxpbmdU
b1dvcmQodG9JbXBsKHBhZ2UpLCB0b1dURlN0cmluZyh3b3JkKSk7Ci19Ci0KLSNlbmRpZgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tUZXh0Q2hlY2tlci5oIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tUZXh0Q2hlY2tlci5oCmluZGV4IGY1MmQ5
YzcwMDFlYjc5ZTI4MzYwM2YxOWY2NjA4NTU1MGQzY2EzYzkuLjRiZWRiOTY0ZjU5NzMwYjk3MDgy
ZWJiMmEzNDRmNGUwM2I5ODJmNDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9DL1dLVGV4dENoZWNrZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
Qy9XS1RleHRDaGVja2VyLmgKQEAgLTM0LDY0ICszNCw4IEBAIGV4dGVybiAiQyIgewogCiBXS19F
WFBPUlQgdm9pZCBXS1RleHRDaGVja2VyU2V0VGVzdGluZ01vZGUoYm9vbCBlbmFibGVkKTsKIAot
I2lmIGRlZmluZWQoQlVJTERJTkdfR1RLX18pCi0KLS8vIFRleHRDaGVja2VyIENsaWVudAotdHlw
ZWRlZiBib29sICgqV0tUZXh0Q2hlY2tlckNvbnRpbm91c1NwZWxsQ2hlY2tpbmdBbGxvd2VkKShj
b25zdCB2b2lkICpjbGllbnRJbmZvKTsKLXR5cGVkZWYgYm9vbCAoKldLVGV4dENoZWNrZXJDb250
aW5vdXNTcGVsbENoZWNraW5nRW5hYmxlZCkoY29uc3Qgdm9pZCAqY2xpZW50SW5mbyk7Ci10eXBl
ZGVmIHZvaWQgKCpXS1RleHRDaGVja2VyU2V0Q29udGlub3VzU3BlbGxDaGVja2luZ0VuYWJsZWQp
KGJvb2wgZW5hYmxlZCwgY29uc3Qgdm9pZCAqY2xpZW50SW5mbyk7Ci10eXBlZGVmIGJvb2wgKCpX
S1RleHRDaGVja2VyR3JhbW1hckNoZWNraW5nRW5hYmxlZCkoY29uc3Qgdm9pZCAqY2xpZW50SW5m
byk7Ci10eXBlZGVmIHZvaWQgKCpXS1RleHRDaGVja2VyU2V0R3JhbW1hckNoZWNraW5nRW5hYmxl
ZCkoYm9vbCBlbmFibGVkLCBjb25zdCB2b2lkICpjbGllbnRJbmZvKTsKLXR5cGVkZWYgdWludDY0
X3QgKCpXS1RleHRDaGVja2VyVW5pcXVlU3BlbGxEb2N1bWVudFRhZykoV0tQYWdlUmVmIHBhZ2Us
IGNvbnN0IHZvaWQgKmNsaWVudEluZm8pOwotdHlwZWRlZiB2b2lkICgqV0tUZXh0Q2hlY2tlckNs
b3NlU3BlbGxEb2N1bWVudFdpdGhUYWcpKHVpbnQ2NF90IHRhZywgY29uc3Qgdm9pZCAqY2xpZW50
SW5mbyk7Ci10eXBlZGVmIHZvaWQgKCpXS1RleHRDaGVja2VyQ2hlY2tTcGVsbGluZ09mU3RyaW5n
KSh1aW50NjRfdCB0YWcsIFdLU3RyaW5nUmVmIHRleHQsIGludDMyX3QqIG1pc3NwZWxsaW5nTG9j
YXRpb24sIGludDMyX3QqIG1pc3NwZWxsaW5nTGVuZ3RoLCBjb25zdCB2b2lkICpjbGllbnRJbmZv
KTsKLXR5cGVkZWYgdm9pZCAoKldLVGV4dENoZWNrZXJDaGVja0dyYW1tYXJPZlN0cmluZykodWlu
dDY0X3QgdGFnLCBXS1N0cmluZ1JlZiB0ZXh0LCBXS0FycmF5UmVmKiBncmFtbWFyRGV0YWlscywg
aW50MzJfdCogYmFkR3JhbW1hckxvY2F0aW9uLCBpbnQzMl90KiBiYWRHcmFtbWFyTGVuZ3RoLCBj
b25zdCB2b2lkICpjbGllbnRJbmZvKTsKLXR5cGVkZWYgYm9vbCAoKldLVGV4dENoZWNrZXJTcGVs
bGluZ1VJSXNTaG93aW5nKShjb25zdCB2b2lkICpjbGllbnRJbmZvKTsKLXR5cGVkZWYgdm9pZCAo
KldLVGV4dENoZWNrZXJUb2dnbGVTcGVsbGluZ1VJSXNTaG93aW5nKShjb25zdCB2b2lkICpjbGll
bnRJbmZvKTsKLXR5cGVkZWYgdm9pZCAoKldLVGV4dENoZWNrZXJVcGRhdGVTcGVsbGluZ1VJV2l0
aE1pc3NwZWxsZWRXb3JkKSh1aW50NjRfdCB0YWcsIFdLU3RyaW5nUmVmIG1pc3NwZWxsZWRXb3Jk
LCBjb25zdCB2b2lkICpjbGllbnRJbmZvKTsKLXR5cGVkZWYgdm9pZCAoKldLVGV4dENoZWNrZXJV
cGRhdGVTcGVsbGluZ1VJV2l0aEdyYW1tYXJTdHJpbmcpKHVpbnQ2NF90IHRhZywgV0tTdHJpbmdS
ZWYgYmFkR3JhbW1hclBocmFzZSwgV0tHcmFtbWFyRGV0YWlsUmVmIGdyYW1tYXJEZXRhaWwsIGNv
bnN0IHZvaWQgKmNsaWVudEluZm8pOwotdHlwZWRlZiBXS0FycmF5UmVmICgqV0tUZXh0Q2hlY2tl
ckd1ZXNzZXNGb3JXb3JkKSh1aW50NjRfdCB0YWcsIFdLU3RyaW5nUmVmIHdvcmQsIGNvbnN0IHZv
aWQgKmNsaWVudEluZm8pOwotdHlwZWRlZiB2b2lkICgqV0tUZXh0Q2hlY2tlckxlYXJuV29yZCko
dWludDY0X3QgdGFnLCBXS1N0cmluZ1JlZiB3b3JkLCBjb25zdCB2b2lkICpjbGllbnRJbmZvKTsK
LXR5cGVkZWYgdm9pZCAoKldLVGV4dENoZWNrZXJJZ25vcmVXb3JkKSh1aW50NjRfdCB0YWcsIFdL
U3RyaW5nUmVmIHdvcmQsIGNvbnN0IHZvaWQgKmNsaWVudEluZm8pOwotCi10eXBlZGVmIHN0cnVj
dCBXS1RleHRDaGVja2VyQ2xpZW50QmFzZSB7Ci0gICAgaW50ICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmVyc2lvbjsK
LSAgICBjb25zdCB2b2lkICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjbGllbnRJbmZvOwotfSBXS1RleHRDaGVja2VyQ2xpZW50QmFz
ZTsKLQotdHlwZWRlZiBzdHJ1Y3QgV0tUZXh0Q2hlY2tlckNsaWVudFYwIHsKLSAgICBXS1RleHRD
aGVja2VyQ2xpZW50QmFzZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBiYXNlOwotCi0gICAgV0tUZXh0Q2hlY2tlckNvbnRpbm91c1NwZWxsQ2hlY2tpbmdB
bGxvd2VkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGludW91c1NwZWxsQ2hlY2tp
bmdBbGxvd2VkOwotICAgIFdLVGV4dENoZWNrZXJDb250aW5vdXNTcGVsbENoZWNraW5nRW5hYmxl
ZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVvdXNTcGVsbENoZWNraW5nRW5h
YmxlZDsKLSAgICBXS1RleHRDaGVja2VyU2V0Q29udGlub3VzU3BlbGxDaGVja2luZ0VuYWJsZWQg
ICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRDb250aW51b3VzU3BlbGxDaGVja2luZ0VuYWJs
ZWQ7Ci0gICAgV0tUZXh0Q2hlY2tlckdyYW1tYXJDaGVja2luZ0VuYWJsZWQgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgZ3JhbW1hckNoZWNraW5nRW5hYmxlZDsKLSAgICBXS1Rl
eHRDaGVja2VyU2V0R3JhbW1hckNoZWNraW5nRW5hYmxlZCAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBzZXRHcmFtbWFyQ2hlY2tpbmdFbmFibGVkOwotICAgIFdLVGV4dENoZWNrZXJV
bmlxdWVTcGVsbERvY3VtZW50VGFnICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHVuaXF1ZVNwZWxsRG9jdW1lbnRUYWc7Ci0gICAgV0tUZXh0Q2hlY2tlckNsb3NlU3BlbGxEb2N1
bWVudFdpdGhUYWcgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xvc2VTcGVsbERv
Y3VtZW50V2l0aFRhZzsKLSAgICBXS1RleHRDaGVja2VyQ2hlY2tTcGVsbGluZ09mU3RyaW5nICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGVja1NwZWxsaW5nT2ZTdHJpbmc7
Ci0gICAgV0tUZXh0Q2hlY2tlckNoZWNrR3JhbW1hck9mU3RyaW5nICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgY2hlY2tHcmFtbWFyT2ZTdHJpbmc7Ci0gICAgV0tUZXh0Q2hl
Y2tlclNwZWxsaW5nVUlJc1Nob3dpbmcgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgc3BlbGxpbmdVSUlzU2hvd2luZzsKLSAgICBXS1RleHRDaGVja2VyVG9nZ2xlU3BlbGxp
bmdVSUlzU2hvd2luZyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b2dnbGVTcGVs
bGluZ1VJSXNTaG93aW5nOwotICAgIFdLVGV4dENoZWNrZXJVcGRhdGVTcGVsbGluZ1VJV2l0aE1p
c3NwZWxsZWRXb3JkICAgICAgICAgICAgICAgICAgICAgICAgIHVwZGF0ZVNwZWxsaW5nVUlXaXRo
TWlzc3BlbGxlZFdvcmQ7Ci0gICAgV0tUZXh0Q2hlY2tlclVwZGF0ZVNwZWxsaW5nVUlXaXRoR3Jh
bW1hclN0cmluZyAgICAgICAgICAgICAgICAgICAgICAgICAgdXBkYXRlU3BlbGxpbmdVSVdpdGhH
cmFtbWFyU3RyaW5nOwotICAgIFdLVGV4dENoZWNrZXJHdWVzc2VzRm9yV29yZCAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGd1ZXNzZXNGb3JXb3JkOwotICAgIFdL
VGV4dENoZWNrZXJMZWFybldvcmQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGxlYXJuV29yZDsKLSAgICBXS1RleHRDaGVja2VySWdub3JlV29yZCAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZ25vcmVXb3JkOwot
fSBXS1RleHRDaGVja2VyQ2xpZW50VjA7Ci0KLVdLX0VYUE9SVCB2b2lkIFdLVGV4dENoZWNrZXJT
ZXRDbGllbnQoY29uc3QgV0tUZXh0Q2hlY2tlckNsaWVudEJhc2UqIGNsaWVudCk7Ci0KLVdLX0VY
UE9SVCB2b2lkIFdLVGV4dENoZWNrZXJDb250aW51b3VzU3BlbGxDaGVja2luZ0VuYWJsZWRTdGF0
ZUNoYW5nZWQoYm9vbCk7Ci1XS19FWFBPUlQgdm9pZCBXS1RleHRDaGVja2VyR3JhbW1hckNoZWNr
aW5nRW5hYmxlZFN0YXRlQ2hhbmdlZChib29sKTsKLQotV0tfRVhQT1JUIHZvaWQgV0tUZXh0Q2hl
Y2tlckNoZWNrU3BlbGxpbmcoV0tQYWdlUmVmIHBhZ2UsIGJvb2wgc3RhcnRCZWZvcmVTZWxlY3Rp
b24pOwotV0tfRVhQT1JUIHZvaWQgV0tUZXh0Q2hlY2tlckNoYW5nZVNwZWxsaW5nVG9Xb3JkKFdL
UGFnZVJlZiBwYWdlLCBXS1N0cmluZ1JlZiB3b3JkKTsKLQotI2VuZGlmCi0KICNpZmRlZiBfX2Nw
bHVzcGx1cwogfQogI2VuZGlmCiAKLSNlbmRpZiAvKiBXS1RleHRDaGVja2VyX2ggKi8KKyNlbmRp
ZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvZ3RrL1dLVGV4dENo
ZWNrZXJHdGsuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvZ3RrL1dLVGV4dENo
ZWNrZXJHdGsuY3BwCmluZGV4IDI5MjRiYTZkYjA1MzRhNzJiZDI5YzY4OWY0ZWQ5ZTVjM2ZmY2Q2
Y2EuLjdmYmZiMDc1MjY2YTlhOGI5ZmNkZTEwNTc5ZTU3ODRkNDBhMjA3YTAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL2d0ay9XS1RleHRDaGVja2VyR3RrLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9ndGsvV0tUZXh0Q2hlY2tlckd0ay5j
cHAKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE1IElnYWxpYSBTLkwu
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgog
ICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yNyw2ICsyNywzOCBAQAogI2luY2x1
ZGUgIldLVGV4dENoZWNrZXJHdGsuaCIKIAogI2luY2x1ZGUgIlRleHRDaGVja2VyLmgiCisjaW5j
bHVkZSAiV0tBUElDYXN0LmgiCisjaW5jbHVkZSAiV2ViUGFnZVByb3h5LmgiCisjaW5jbHVkZSAi
V2ViVGV4dENoZWNrZXIuaCIKKwordXNpbmcgbmFtZXNwYWNlIFdlYktpdDsKKwordm9pZCBXS1Rl
eHRDaGVja2VyU2V0Q2xpZW50KGNvbnN0IFdLVGV4dENoZWNrZXJDbGllbnRCYXNlKiB3a0NsaWVu
dCkKK3sKKyAgICBpZiAod2tDbGllbnQgJiYgd2tDbGllbnQtPnZlcnNpb24pCisgICAgICAgIHJl
dHVybjsKKyAgICBXZWJUZXh0Q2hlY2tlcjo6c2luZ2xldG9uKCktPnNldENsaWVudCh3a0NsaWVu
dCk7Cit9CisKK3ZvaWQgV0tUZXh0Q2hlY2tlckNvbnRpbnVvdXNTcGVsbENoZWNraW5nRW5hYmxl
ZFN0YXRlQ2hhbmdlZChib29sIGVuYWJsZWQpCit7CisgICAgV2ViVGV4dENoZWNrZXI6OnNpbmds
ZXRvbigpLT5jb250aW51b3VzU3BlbGxDaGVja2luZ0VuYWJsZWRTdGF0ZUNoYW5nZWQoZW5hYmxl
ZCk7Cit9CisKK3ZvaWQgV0tUZXh0Q2hlY2tlckdyYW1tYXJDaGVja2luZ0VuYWJsZWRTdGF0ZUNo
YW5nZWQoYm9vbCBlbmFibGVkKQoreworICAgIFdlYlRleHRDaGVja2VyOjpzaW5nbGV0b24oKS0+
Z3JhbW1hckNoZWNraW5nRW5hYmxlZFN0YXRlQ2hhbmdlZChlbmFibGVkKTsKK30KKwordm9pZCBX
S1RleHRDaGVja2VyQ2hlY2tTcGVsbGluZyhXS1BhZ2VSZWYgcGFnZSwgYm9vbCBzdGFydEJlZm9y
ZVNlbGVjdGlvbikKK3sKKyAgICBXZWJUZXh0Q2hlY2tlcjo6c2luZ2xldG9uKCktPmNoZWNrU3Bl
bGxpbmcodG9JbXBsKHBhZ2UpLCBzdGFydEJlZm9yZVNlbGVjdGlvbik7Cit9CisKK3ZvaWQgV0tU
ZXh0Q2hlY2tlckNoYW5nZVNwZWxsaW5nVG9Xb3JkKFdLUGFnZVJlZiBwYWdlLCBXS1N0cmluZ1Jl
ZiB3b3JkKQoreworICAgIFdlYlRleHRDaGVja2VyOjpzaW5nbGV0b24oKS0+Y2hhbmdlU3BlbGxp
bmdUb1dvcmQodG9JbXBsKHBhZ2UpLCB0b1dURlN0cmluZyh3b3JkKSk7Cit9CiAKIHZvaWQgV0tU
ZXh0Q2hlY2tlclNldFNwZWxsQ2hlY2tpbmdMYW5ndWFnZXMoY29uc3QgY2hhciogY29uc3QqIGxh
bmd1YWdlcykKIHsKQEAgLTM3LDMgKzY5LDggQEAgdm9pZCBXS1RleHRDaGVja2VyU2V0U3BlbGxD
aGVja2luZ0xhbmd1YWdlcyhjb25zdCBjaGFyKiBjb25zdCogbGFuZ3VhZ2VzKQogICAgIFdlYktp
dDo6VGV4dENoZWNrZXI6OnNldFNwZWxsQ2hlY2tpbmdMYW5ndWFnZXMoc3BlbGxDaGVja2luZ0xh
bmd1YWdlcyk7CiAjZW5kaWYKIH0KKwordm9pZCBXS1RleHRDaGVja2VyU2V0Q29udGludW91c1Nw
ZWxsQ2hlY2tpbmdFbmFibGVkKGJvb2wgZW5hYmxlZCkKK3sKKyAgICBXZWJLaXQ6OlRleHRDaGVj
a2VyOjpzZXRDb250aW51b3VzU3BlbGxDaGVja2luZ0VuYWJsZWQoZW5hYmxlZCk7Cit9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9ndGsvV0tUZXh0Q2hlY2tlckd0
ay5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvZ3RrL1dLVGV4dENoZWNrZXJHdGsu
aAppbmRleCAxZjZlNTVhNjY2M2QxYTU5ZjE5OGYwMmZmZGU0MTc1MmY3YjE0MTFiLi40MmU5ZmE0
ZjE3ODA3MTQwMWMwOGMyODI4MjJkMTllM2QzNjU2OGZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvQy9ndGsvV0tUZXh0Q2hlY2tlckd0ay5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9DL2d0ay9XS1RleHRDaGVja2VyR3RrLmgKQEAgLTEsNSArMSw1
IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE1IElnYWxpYSBTLkwuCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCkBAIC0yNywxNSArMjcsNzEgQEAKICNkZWZpbmUgV0tUZXh0Q2hlY2tl
ckd0a19oCiAKICNpbmNsdWRlIDxXZWJLaXQvV0tCYXNlLmg+CisjaW5jbHVkZSA8V2ViS2l0L1dL
VGV4dENoZWNrZXIuaD4KIAogI2lmZGVmIF9fY3BsdXNwbHVzCiBleHRlcm4gIkMiIHsKICNlbmRp
ZgogCitXS19FWFBPUlQgdm9pZCBXS1RleHRDaGVja2VyU2V0VGVzdGluZ01vZGUoYm9vbCBlbmFi
bGVkKTsKKworLy8gVGV4dENoZWNrZXIgQ2xpZW50Cit0eXBlZGVmIGJvb2wgKCpXS1RleHRDaGVj
a2VyQ29udGlub3VzU3BlbGxDaGVja2luZ0FsbG93ZWQpKGNvbnN0IHZvaWQgKmNsaWVudEluZm8p
OwordHlwZWRlZiBib29sICgqV0tUZXh0Q2hlY2tlckNvbnRpbm91c1NwZWxsQ2hlY2tpbmdFbmFi
bGVkKShjb25zdCB2b2lkICpjbGllbnRJbmZvKTsKK3R5cGVkZWYgdm9pZCAoKldLVGV4dENoZWNr
ZXJTZXRDb250aW5vdXNTcGVsbENoZWNraW5nRW5hYmxlZCkoYm9vbCBlbmFibGVkLCBjb25zdCB2
b2lkICpjbGllbnRJbmZvKTsKK3R5cGVkZWYgYm9vbCAoKldLVGV4dENoZWNrZXJHcmFtbWFyQ2hl
Y2tpbmdFbmFibGVkKShjb25zdCB2b2lkICpjbGllbnRJbmZvKTsKK3R5cGVkZWYgdm9pZCAoKldL
VGV4dENoZWNrZXJTZXRHcmFtbWFyQ2hlY2tpbmdFbmFibGVkKShib29sIGVuYWJsZWQsIGNvbnN0
IHZvaWQgKmNsaWVudEluZm8pOwordHlwZWRlZiB1aW50NjRfdCAoKldLVGV4dENoZWNrZXJVbmlx
dWVTcGVsbERvY3VtZW50VGFnKShXS1BhZ2VSZWYgcGFnZSwgY29uc3Qgdm9pZCAqY2xpZW50SW5m
byk7Cit0eXBlZGVmIHZvaWQgKCpXS1RleHRDaGVja2VyQ2xvc2VTcGVsbERvY3VtZW50V2l0aFRh
ZykodWludDY0X3QgdGFnLCBjb25zdCB2b2lkICpjbGllbnRJbmZvKTsKK3R5cGVkZWYgdm9pZCAo
KldLVGV4dENoZWNrZXJDaGVja1NwZWxsaW5nT2ZTdHJpbmcpKHVpbnQ2NF90IHRhZywgV0tTdHJp
bmdSZWYgdGV4dCwgaW50MzJfdCogbWlzc3BlbGxpbmdMb2NhdGlvbiwgaW50MzJfdCogbWlzc3Bl
bGxpbmdMZW5ndGgsIGNvbnN0IHZvaWQgKmNsaWVudEluZm8pOwordHlwZWRlZiB2b2lkICgqV0tU
ZXh0Q2hlY2tlckNoZWNrR3JhbW1hck9mU3RyaW5nKSh1aW50NjRfdCB0YWcsIFdLU3RyaW5nUmVm
IHRleHQsIFdLQXJyYXlSZWYqIGdyYW1tYXJEZXRhaWxzLCBpbnQzMl90KiBiYWRHcmFtbWFyTG9j
YXRpb24sIGludDMyX3QqIGJhZEdyYW1tYXJMZW5ndGgsIGNvbnN0IHZvaWQgKmNsaWVudEluZm8p
OwordHlwZWRlZiBib29sICgqV0tUZXh0Q2hlY2tlclNwZWxsaW5nVUlJc1Nob3dpbmcpKGNvbnN0
IHZvaWQgKmNsaWVudEluZm8pOwordHlwZWRlZiB2b2lkICgqV0tUZXh0Q2hlY2tlclRvZ2dsZVNw
ZWxsaW5nVUlJc1Nob3dpbmcpKGNvbnN0IHZvaWQgKmNsaWVudEluZm8pOwordHlwZWRlZiB2b2lk
ICgqV0tUZXh0Q2hlY2tlclVwZGF0ZVNwZWxsaW5nVUlXaXRoTWlzc3BlbGxlZFdvcmQpKHVpbnQ2
NF90IHRhZywgV0tTdHJpbmdSZWYgbWlzc3BlbGxlZFdvcmQsIGNvbnN0IHZvaWQgKmNsaWVudElu
Zm8pOwordHlwZWRlZiB2b2lkICgqV0tUZXh0Q2hlY2tlclVwZGF0ZVNwZWxsaW5nVUlXaXRoR3Jh
bW1hclN0cmluZykodWludDY0X3QgdGFnLCBXS1N0cmluZ1JlZiBiYWRHcmFtbWFyUGhyYXNlLCBX
S0dyYW1tYXJEZXRhaWxSZWYgZ3JhbW1hckRldGFpbCwgY29uc3Qgdm9pZCAqY2xpZW50SW5mbyk7
Cit0eXBlZGVmIFdLQXJyYXlSZWYgKCpXS1RleHRDaGVja2VyR3Vlc3Nlc0ZvcldvcmQpKHVpbnQ2
NF90IHRhZywgV0tTdHJpbmdSZWYgd29yZCwgY29uc3Qgdm9pZCAqY2xpZW50SW5mbyk7Cit0eXBl
ZGVmIHZvaWQgKCpXS1RleHRDaGVja2VyTGVhcm5Xb3JkKSh1aW50NjRfdCB0YWcsIFdLU3RyaW5n
UmVmIHdvcmQsIGNvbnN0IHZvaWQgKmNsaWVudEluZm8pOwordHlwZWRlZiB2b2lkICgqV0tUZXh0
Q2hlY2tlcklnbm9yZVdvcmQpKHVpbnQ2NF90IHRhZywgV0tTdHJpbmdSZWYgd29yZCwgY29uc3Qg
dm9pZCAqY2xpZW50SW5mbyk7CisKK3R5cGVkZWYgc3RydWN0IFdLVGV4dENoZWNrZXJDbGllbnRC
YXNlIHsKKyAgICBpbnQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB2ZXJzaW9uOworICAgIGNvbnN0IHZvaWQgKiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNs
aWVudEluZm87Cit9IFdLVGV4dENoZWNrZXJDbGllbnRCYXNlOworCit0eXBlZGVmIHN0cnVjdCBX
S1RleHRDaGVja2VyQ2xpZW50VjAgeworICAgIFdLVGV4dENoZWNrZXJDbGllbnRCYXNlICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJhc2U7CisKKyAgICBX
S1RleHRDaGVja2VyQ29udGlub3VzU3BlbGxDaGVja2luZ0FsbG93ZWQgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBjb250aW51b3VzU3BlbGxDaGVja2luZ0FsbG93ZWQ7CisgICAgV0tUZXh0
Q2hlY2tlckNvbnRpbm91c1NwZWxsQ2hlY2tpbmdFbmFibGVkICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY29udGludW91c1NwZWxsQ2hlY2tpbmdFbmFibGVkOworICAgIFdLVGV4dENoZWNr
ZXJTZXRDb250aW5vdXNTcGVsbENoZWNraW5nRW5hYmxlZCAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHNldENvbnRpbnVvdXNTcGVsbENoZWNraW5nRW5hYmxlZDsKKyAgICBXS1RleHRDaGVja2Vy
R3JhbW1hckNoZWNraW5nRW5hYmxlZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBncmFtbWFyQ2hlY2tpbmdFbmFibGVkOworICAgIFdLVGV4dENoZWNrZXJTZXRHcmFtbWFyQ2hl
Y2tpbmdFbmFibGVkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldEdyYW1tYXJD
aGVja2luZ0VuYWJsZWQ7CisgICAgV0tUZXh0Q2hlY2tlclVuaXF1ZVNwZWxsRG9jdW1lbnRUYWcg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5pcXVlU3BlbGxEb2N1bWVudFRh
ZzsKKyAgICBXS1RleHRDaGVja2VyQ2xvc2VTcGVsbERvY3VtZW50V2l0aFRhZyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBjbG9zZVNwZWxsRG9jdW1lbnRXaXRoVGFnOworICAgIFdL
VGV4dENoZWNrZXJDaGVja1NwZWxsaW5nT2ZTdHJpbmcgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGNoZWNrU3BlbGxpbmdPZlN0cmluZzsKKyAgICBXS1RleHRDaGVja2VyQ2hl
Y2tHcmFtbWFyT2ZTdHJpbmcgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
aGVja0dyYW1tYXJPZlN0cmluZzsKKyAgICBXS1RleHRDaGVja2VyU3BlbGxpbmdVSUlzU2hvd2lu
ZyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcGVsbGluZ1VJSXNTaG93
aW5nOworICAgIFdLVGV4dENoZWNrZXJUb2dnbGVTcGVsbGluZ1VJSXNTaG93aW5nICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHRvZ2dsZVNwZWxsaW5nVUlJc1Nob3dpbmc7CisgICAg
V0tUZXh0Q2hlY2tlclVwZGF0ZVNwZWxsaW5nVUlXaXRoTWlzc3BlbGxlZFdvcmQgICAgICAgICAg
ICAgICAgICAgICAgICAgdXBkYXRlU3BlbGxpbmdVSVdpdGhNaXNzcGVsbGVkV29yZDsKKyAgICBX
S1RleHRDaGVja2VyVXBkYXRlU3BlbGxpbmdVSVdpdGhHcmFtbWFyU3RyaW5nICAgICAgICAgICAg
ICAgICAgICAgICAgICB1cGRhdGVTcGVsbGluZ1VJV2l0aEdyYW1tYXJTdHJpbmc7CisgICAgV0tU
ZXh0Q2hlY2tlckd1ZXNzZXNGb3JXb3JkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgZ3Vlc3Nlc0ZvcldvcmQ7CisgICAgV0tUZXh0Q2hlY2tlckxlYXJuV29yZCAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGVhcm5Xb3Jk
OworICAgIFdLVGV4dENoZWNrZXJJZ25vcmVXb3JkICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGlnbm9yZVdvcmQ7Cit9IFdLVGV4dENoZWNrZXJDbGllbnRW
MDsKKworV0tfRVhQT1JUIHZvaWQgV0tUZXh0Q2hlY2tlclNldENsaWVudChjb25zdCBXS1RleHRD
aGVja2VyQ2xpZW50QmFzZSogY2xpZW50KTsKKworV0tfRVhQT1JUIHZvaWQgV0tUZXh0Q2hlY2tl
ckNvbnRpbnVvdXNTcGVsbENoZWNraW5nRW5hYmxlZFN0YXRlQ2hhbmdlZChib29sKTsKK1dLX0VY
UE9SVCB2b2lkIFdLVGV4dENoZWNrZXJHcmFtbWFyQ2hlY2tpbmdFbmFibGVkU3RhdGVDaGFuZ2Vk
KGJvb2wpOworCitXS19FWFBPUlQgdm9pZCBXS1RleHRDaGVja2VyQ2hlY2tTcGVsbGluZyhXS1Bh
Z2VSZWYgcGFnZSwgYm9vbCBzdGFydEJlZm9yZVNlbGVjdGlvbik7CitXS19FWFBPUlQgdm9pZCBX
S1RleHRDaGVja2VyQ2hhbmdlU3BlbGxpbmdUb1dvcmQoV0tQYWdlUmVmIHBhZ2UsIFdLU3RyaW5n
UmVmIHdvcmQpOworCiBXS19FWFBPUlQgdm9pZCBXS1RleHRDaGVja2VyU2V0U3BlbGxDaGVja2lu
Z0xhbmd1YWdlcyhjb25zdCBjaGFyKiBjb25zdCogbGFuZ3VhZ2VzKTsKK1dLX0VYUE9SVCB2b2lk
IFdLVGV4dENoZWNrZXJTZXRDb250aW51b3VzU3BlbGxDaGVja2luZ0VuYWJsZWQoYm9vbCk7CiAK
ICNpZmRlZiBfX2NwbHVzcGx1cwogfQogI2VuZGlmCiAKLSNlbmRpZiAvKiBXS1RleHRDaGVja2Vy
R3RrX2ggKi8KKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
VGV4dENoZWNrZXIuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViVGV4dENoZWNrZXIu
Y3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmZDdkYzYyNTI5MDcxOGYwMTI2OWUw
NGE4Y2EwMzUxOWM4YThkM2IxLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwCi0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlRleHRDaGVja2VyLmNwcAorKysg
L2Rldi9udWxsCkBAIC0xLDgxICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTEgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElT
JycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JT
Ci0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0g
KiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQg
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAq
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmln
LmgiCi0jaW5jbHVkZSAiV2ViVGV4dENoZWNrZXIuaCIKLQotI2luY2x1ZGUgIlRleHRDaGVja2Vy
LmgiCi0jaW5jbHVkZSAiV0tBUElDYXN0LmgiCi0jaW5jbHVkZSAiV2ViUGFnZVByb3h5LmgiCi0j
aW5jbHVkZSAiV2ViUHJvY2Vzc1Bvb2wuaCIKLSNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+Ci0KLW5h
bWVzcGFjZSBXZWJLaXQgewotCi1XZWJUZXh0Q2hlY2tlciogV2ViVGV4dENoZWNrZXI6OnNpbmds
ZXRvbigpCi17Ci0gICAgc3RhdGljIFdlYlRleHRDaGVja2VyKiB0ZXh0Q2hlY2tlciA9IGFkb3B0
UmVmKG5ldyBXZWJUZXh0Q2hlY2tlcikubGVha1JlZigpOwotICAgIHJldHVybiB0ZXh0Q2hlY2tl
cjsKLX0KLQotV2ViVGV4dENoZWNrZXI6OldlYlRleHRDaGVja2VyKCkKLXsKLX0KLQotdm9pZCBX
ZWJUZXh0Q2hlY2tlcjo6c2V0Q2xpZW50KGNvbnN0IFdLVGV4dENoZWNrZXJDbGllbnRCYXNlKiBj
bGllbnQpCi17Ci0gICAgbV9jbGllbnQuaW5pdGlhbGl6ZShjbGllbnQpOwotfQotCi1zdGF0aWMg
dm9pZCB1cGRhdGVTdGF0ZUZvckFsbENvbnRleHRzKCkKLXsKLSAgICBjb25zdCBWZWN0b3I8V2Vi
UHJvY2Vzc1Bvb2wqPiYgY29udGV4dHMgPSBXZWJQcm9jZXNzUG9vbDo6YWxsUHJvY2Vzc1Bvb2xz
KCk7Ci0gICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBjb250ZXh0cy5zaXplKCk7ICsraSkKLSAg
ICAgICAgY29udGV4dHNbaV0tPnRleHRDaGVja2VyU3RhdGVDaGFuZ2VkKCk7Ci19Ci0KLXZvaWQg
V2ViVGV4dENoZWNrZXI6OmNvbnRpbnVvdXNTcGVsbENoZWNraW5nRW5hYmxlZFN0YXRlQ2hhbmdl
ZChib29sIGVuYWJsZWQpCi17Ci0gICAgVGV4dENoZWNrZXI6OmNvbnRpbnVvdXNTcGVsbENoZWNr
aW5nRW5hYmxlZFN0YXRlQ2hhbmdlZChlbmFibGVkKTsKLSAgICB1cGRhdGVTdGF0ZUZvckFsbENv
bnRleHRzKCk7Ci19Ci0KLXZvaWQgV2ViVGV4dENoZWNrZXI6OmdyYW1tYXJDaGVja2luZ0VuYWJs
ZWRTdGF0ZUNoYW5nZWQoYm9vbCBlbmFibGVkKQotewotICAgIFRleHRDaGVja2VyOjpncmFtbWFy
Q2hlY2tpbmdFbmFibGVkU3RhdGVDaGFuZ2VkKGVuYWJsZWQpOwotICAgIHVwZGF0ZVN0YXRlRm9y
QWxsQ29udGV4dHMoKTsKLX0KLQotdm9pZCBXZWJUZXh0Q2hlY2tlcjo6Y2hlY2tTcGVsbGluZyhX
ZWJQYWdlUHJveHkqIHBhZ2UsIGJvb2wgc3RhcnRCZWZvcmVTZWxlY3Rpb24pCi17Ci0gICAgcGFn
ZS0+YWR2YW5jZVRvTmV4dE1pc3NwZWxsaW5nKHN0YXJ0QmVmb3JlU2VsZWN0aW9uKTsKLX0KLQot
dm9pZCBXZWJUZXh0Q2hlY2tlcjo6Y2hhbmdlU3BlbGxpbmdUb1dvcmQoV2ViUGFnZVByb3h5KiBw
YWdlLCBjb25zdCBTdHJpbmcmIHRleHQpCi17Ci0gICAgcGFnZS0+Y2hhbmdlU3BlbGxpbmdUb1dv
cmQodGV4dCk7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2ViVGV4dENoZWNrZXIuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYlRleHRDaGVja2VyLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDdjOTQ1
YzcyNjI3YTJmZmJiZmEwMjdiZDE0MGE5YWMwYzI1NDE0YTYuLjAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViVGV4
dENoZWNrZXIuaAorKysgL2Rldi9udWxsCkBAIC0xLDU5ICswLDAgQEAKLS8qCi0gKiBDb3B5cmln
aHQgKEMpIDIwMTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
LSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoK
LSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRS
SUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJ
VFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0j
aWZuZGVmIFdlYlRleHRDaGVja2VyX2gKLSNkZWZpbmUgV2ViVGV4dENoZWNrZXJfaAotCi0jaW5j
bHVkZSAiQVBJT2JqZWN0LmgiCi0jaW5jbHVkZSAiV0tUZXh0Q2hlY2tlci5oIgotI2luY2x1ZGUg
IldlYlRleHRDaGVja2VyQ2xpZW50LmgiCi0jaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KLQotbmFt
ZXNwYWNlIFdlYktpdCB7Ci0KLWNsYXNzIFdlYlBhZ2VQcm94eTsKLQotY2xhc3MgV2ViVGV4dENo
ZWNrZXIgOiBwdWJsaWMgQVBJOjpPYmplY3RJbXBsPEFQSTo6T2JqZWN0OjpUeXBlOjpUZXh0Q2hl
Y2tlcj4gewotcHVibGljOgotICAgIHN0YXRpYyBXZWJUZXh0Q2hlY2tlciogc2luZ2xldG9uKCk7
Ci0KLSAgICB2b2lkIHNldENsaWVudChjb25zdCBXS1RleHRDaGVja2VyQ2xpZW50QmFzZSopOwot
ICAgIFdlYlRleHRDaGVja2VyQ2xpZW50JiBjbGllbnQoKSB7IHJldHVybiBtX2NsaWVudDsgfQot
Ci0gICAgdm9pZCBjb250aW51b3VzU3BlbGxDaGVja2luZ0VuYWJsZWRTdGF0ZUNoYW5nZWQoYm9v
bCk7Ci0gICAgdm9pZCBncmFtbWFyQ2hlY2tpbmdFbmFibGVkU3RhdGVDaGFuZ2VkKGJvb2wpOwot
Ci0gICAgdm9pZCBjaGVja1NwZWxsaW5nKFdlYlBhZ2VQcm94eSosIGJvb2wgc3RhcnRCZWZvcmVT
ZWxlY3Rpb24pOwotICAgIHZvaWQgY2hhbmdlU3BlbGxpbmdUb1dvcmQoV2ViUGFnZVByb3h5Kiwg
Y29uc3QgU3RyaW5nJik7Ci0KLXByaXZhdGU6Ci0gICAgV2ViVGV4dENoZWNrZXIoKTsKLQotICAg
IFdlYlRleHRDaGVja2VyQ2xpZW50IG1fY2xpZW50OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgV2Vi
S2l0Ci0KLSNlbmRpZiAvLyBXZWJUZXh0Q2hlY2tlcl9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJUZXh0Q2hlY2tlckNsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJUZXh0Q2hlY2tlckNsaWVudC5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDJkNzAzZDdkNjVmNTI2NDE4OGRlMWM4MDc5ZTYzZjJiYmVmYmY3ODQuLjAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2ViVGV4dENoZWNrZXJDbGllbnQuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsMTgxICsw
LDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0g
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAot
ICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0g
KiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICog
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiV2ViVGV4
dENoZWNrZXJDbGllbnQuaCIKLQotI2luY2x1ZGUgIkFQSUFycmF5LmgiCi0jaW5jbHVkZSAiV0tB
UElDYXN0LmgiCi0jaW5jbHVkZSAiV0tTaGFyZWRBUElDYXN0LmgiCi0jaW5jbHVkZSAiV2ViR3Jh
bW1hckRldGFpbC5oIgotI2luY2x1ZGUgIldlYlBhZ2VQcm94eS5oIgotI2luY2x1ZGUgPHd0Zi90
ZXh0L1dURlN0cmluZy5oPgotCi1uYW1lc3BhY2UgV2ViS2l0IHsKLQotYm9vbCBXZWJUZXh0Q2hl
Y2tlckNsaWVudDo6Y29udGludW91c1NwZWxsQ2hlY2tpbmdBbGxvd2VkKCkKLXsKLSAgICBpZiAo
IW1fY2xpZW50LmNvbnRpbnVvdXNTcGVsbENoZWNraW5nQWxsb3dlZCkKLSAgICAgICAgcmV0dXJu
IGZhbHNlOwotCi0gICAgcmV0dXJuIG1fY2xpZW50LmNvbnRpbnVvdXNTcGVsbENoZWNraW5nQWxs
b3dlZChtX2NsaWVudC5iYXNlLmNsaWVudEluZm8pOwotfQotCi1ib29sIFdlYlRleHRDaGVja2Vy
Q2xpZW50Ojpjb250aW51b3VzU3BlbGxDaGVja2luZ0VuYWJsZWQoKQotewotICAgIGlmICghbV9j
bGllbnQuY29udGludW91c1NwZWxsQ2hlY2tpbmdFbmFibGVkKQotICAgICAgICByZXR1cm4gZmFs
c2U7Ci0KLSAgICByZXR1cm4gbV9jbGllbnQuY29udGludW91c1NwZWxsQ2hlY2tpbmdFbmFibGVk
KG1fY2xpZW50LmJhc2UuY2xpZW50SW5mbyk7Ci19Ci0KLXZvaWQgV2ViVGV4dENoZWNrZXJDbGll
bnQ6OnNldENvbnRpbnVvdXNTcGVsbENoZWNraW5nRW5hYmxlZChib29sIGVuYWJsZWQpCi17Ci0g
ICAgaWYgKCFtX2NsaWVudC5zZXRDb250aW51b3VzU3BlbGxDaGVja2luZ0VuYWJsZWQpCi0gICAg
ICAgIHJldHVybjsKLQotICAgIG1fY2xpZW50LnNldENvbnRpbnVvdXNTcGVsbENoZWNraW5nRW5h
YmxlZChlbmFibGVkLCBtX2NsaWVudC5iYXNlLmNsaWVudEluZm8pOwotfQotCi1ib29sIFdlYlRl
eHRDaGVja2VyQ2xpZW50OjpncmFtbWFyQ2hlY2tpbmdFbmFibGVkKCkKLXsKLSAgICBpZiAoIW1f
Y2xpZW50LmdyYW1tYXJDaGVja2luZ0VuYWJsZWQpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQot
ICAgIHJldHVybiBtX2NsaWVudC5ncmFtbWFyQ2hlY2tpbmdFbmFibGVkKG1fY2xpZW50LmJhc2Uu
Y2xpZW50SW5mbyk7Ci19Ci0KLXZvaWQgV2ViVGV4dENoZWNrZXJDbGllbnQ6OnNldEdyYW1tYXJD
aGVja2luZ0VuYWJsZWQoYm9vbCBlbmFibGVkKQotewotICAgIGlmICghbV9jbGllbnQuc2V0R3Jh
bW1hckNoZWNraW5nRW5hYmxlZCkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgbV9jbGllbnQuc2V0
R3JhbW1hckNoZWNraW5nRW5hYmxlZChlbmFibGVkLCBtX2NsaWVudC5iYXNlLmNsaWVudEluZm8p
OwotfQotCi11aW50NjRfdCBXZWJUZXh0Q2hlY2tlckNsaWVudDo6dW5pcXVlU3BlbGxEb2N1bWVu
dFRhZyhXZWJQYWdlUHJveHkqIHBhZ2UpCi17Ci0gICAgaWYgKCFtX2NsaWVudC51bmlxdWVTcGVs
bERvY3VtZW50VGFnKQotICAgICAgICByZXR1cm4gMDsKLQotICAgIHJldHVybiBtX2NsaWVudC51
bmlxdWVTcGVsbERvY3VtZW50VGFnKHRvQVBJKHBhZ2UpLCBtX2NsaWVudC5iYXNlLmNsaWVudElu
Zm8pOwotfQotCi12b2lkIFdlYlRleHRDaGVja2VyQ2xpZW50OjpjbG9zZVNwZWxsRG9jdW1lbnRX
aXRoVGFnKHVpbnQ2NF90IHRhZykKLXsKLSAgICBpZiAoIW1fY2xpZW50LmNsb3NlU3BlbGxEb2N1
bWVudFdpdGhUYWcpCi0gICAgICAgIHJldHVybjsKLQotICAgIG1fY2xpZW50LmNsb3NlU3BlbGxE
b2N1bWVudFdpdGhUYWcodGFnLCBtX2NsaWVudC5iYXNlLmNsaWVudEluZm8pOwotfQotCi12b2lk
IFdlYlRleHRDaGVja2VyQ2xpZW50OjpjaGVja1NwZWxsaW5nT2ZTdHJpbmcodWludDY0X3QgdGFn
LCBjb25zdCBTdHJpbmcmIHRleHQsIGludDMyX3QmIG1pc3NwZWxsaW5nTG9jYXRpb24sIGludDMy
X3QmIG1pc3NwZWxsaW5nTGVuZ3RoKQotewotICAgIG1pc3NwZWxsaW5nTG9jYXRpb24gPSAtMTsK
LSAgICBtaXNzcGVsbGluZ0xlbmd0aCA9IDA7Ci0KLSAgICBpZiAoIW1fY2xpZW50LmNoZWNrU3Bl
bGxpbmdPZlN0cmluZykKLSAgICAgICAgcmV0dXJuOwotCi0gICAgbV9jbGllbnQuY2hlY2tTcGVs
bGluZ09mU3RyaW5nKHRhZywgdG9BUEkodGV4dC5pbXBsKCkpLCAmbWlzc3BlbGxpbmdMb2NhdGlv
biwgJm1pc3NwZWxsaW5nTGVuZ3RoLCBtX2NsaWVudC5iYXNlLmNsaWVudEluZm8pOwotfQotCi12
b2lkIFdlYlRleHRDaGVja2VyQ2xpZW50OjpjaGVja0dyYW1tYXJPZlN0cmluZyh1aW50NjRfdCB0
YWcsIGNvbnN0IFN0cmluZyYgdGV4dCwgVmVjdG9yPFdlYkNvcmU6OkdyYW1tYXJEZXRhaWw+JiBn
cmFtbWFyRGV0YWlscywgaW50MzJfdCYgYmFkR3JhbW1hckxvY2F0aW9uLCBpbnQzMl90JiBiYWRH
cmFtbWFyTGVuZ3RoKQotewotICAgIGJhZEdyYW1tYXJMb2NhdGlvbiA9IC0xOwotICAgIGJhZEdy
YW1tYXJMZW5ndGggPSAwOwotCi0gICAgaWYgKCFtX2NsaWVudC5jaGVja0dyYW1tYXJPZlN0cmlu
ZykKLSAgICAgICAgcmV0dXJuOwotCi0gICAgV0tBcnJheVJlZiB3a0dyYW1tYXJEZXRhaWxzUmVm
ID0gMDsKLSAgICBtX2NsaWVudC5jaGVja0dyYW1tYXJPZlN0cmluZyh0YWcsIHRvQVBJKHRleHQu
aW1wbCgpKSwgJndrR3JhbW1hckRldGFpbHNSZWYsICZiYWRHcmFtbWFyTG9jYXRpb24sICZiYWRH
cmFtbWFyTGVuZ3RoLCBtX2NsaWVudC5iYXNlLmNsaWVudEluZm8pOwotCi0gICAgUmVmUHRyPEFQ
STo6QXJyYXk+IHdrR3JhbW1hckRldGFpbHMgPSBhZG9wdFJlZih0b0ltcGwod2tHcmFtbWFyRGV0
YWlsc1JlZikpOwotICAgIHNpemVfdCBudW1HcmFtbWFyRGV0YWlscyA9IHdrR3JhbW1hckRldGFp
bHMtPnNpemUoKTsKLSAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG51bUdyYW1tYXJEZXRhaWxz
OyArK2kpCi0gICAgICAgIGdyYW1tYXJEZXRhaWxzLmFwcGVuZCh3a0dyYW1tYXJEZXRhaWxzLT5h
dDxXZWJHcmFtbWFyRGV0YWlsPihpKS0+Z3JhbW1hckRldGFpbCgpKTsKLX0KLQotYm9vbCBXZWJU
ZXh0Q2hlY2tlckNsaWVudDo6c3BlbGxpbmdVSUlzU2hvd2luZygpCi17Ci0gICAgaWYgKCFtX2Ns
aWVudC5zcGVsbGluZ1VJSXNTaG93aW5nKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBy
ZXR1cm4gbV9jbGllbnQuc3BlbGxpbmdVSUlzU2hvd2luZyhtX2NsaWVudC5iYXNlLmNsaWVudElu
Zm8pOwotfQotCi12b2lkIFdlYlRleHRDaGVja2VyQ2xpZW50Ojp0b2dnbGVTcGVsbGluZ1VJSXNT
aG93aW5nKCkKLXsKLSAgICBpZiAoIW1fY2xpZW50LnRvZ2dsZVNwZWxsaW5nVUlJc1Nob3dpbmcp
Ci0gICAgICAgIHJldHVybjsKLQotICAgIHJldHVybiBtX2NsaWVudC50b2dnbGVTcGVsbGluZ1VJ
SXNTaG93aW5nKG1fY2xpZW50LmJhc2UuY2xpZW50SW5mbyk7Ci19Ci0KLXZvaWQgV2ViVGV4dENo
ZWNrZXJDbGllbnQ6OnVwZGF0ZVNwZWxsaW5nVUlXaXRoTWlzc3BlbGxlZFdvcmQodWludDY0X3Qg
dGFnLCBjb25zdCBTdHJpbmcmIG1pc3NwZWxsZWRXb3JkKQotewotICAgIGlmICghbV9jbGllbnQu
dXBkYXRlU3BlbGxpbmdVSVdpdGhNaXNzcGVsbGVkV29yZCkKLSAgICAgICAgcmV0dXJuOwotCi0g
ICAgbV9jbGllbnQudXBkYXRlU3BlbGxpbmdVSVdpdGhNaXNzcGVsbGVkV29yZCh0YWcsIHRvQVBJ
KG1pc3NwZWxsZWRXb3JkLmltcGwoKSksIG1fY2xpZW50LmJhc2UuY2xpZW50SW5mbyk7Ci19Ci0K
LXZvaWQgV2ViVGV4dENoZWNrZXJDbGllbnQ6OnVwZGF0ZVNwZWxsaW5nVUlXaXRoR3JhbW1hclN0
cmluZyh1aW50NjRfdCB0YWcsIGNvbnN0IFN0cmluZyYgYmFkR3JhbW1hclBocmFzZSwgY29uc3Qg
V2ViQ29yZTo6R3JhbW1hckRldGFpbCYgZ3JhbW1hckRldGFpbCkKLXsKLSAgICBpZiAoIW1fY2xp
ZW50LnVwZGF0ZVNwZWxsaW5nVUlXaXRoR3JhbW1hclN0cmluZykKLSAgICAgICAgcmV0dXJuOwot
Ci0gICAgbV9jbGllbnQudXBkYXRlU3BlbGxpbmdVSVdpdGhHcmFtbWFyU3RyaW5nKHRhZywgdG9B
UEkoYmFkR3JhbW1hclBocmFzZS5pbXBsKCkpLCB0b0FQSShncmFtbWFyRGV0YWlsKSwgbV9jbGll
bnQuYmFzZS5jbGllbnRJbmZvKTsKLX0KLQotdm9pZCBXZWJUZXh0Q2hlY2tlckNsaWVudDo6Z3Vl
c3Nlc0ZvcldvcmQodWludDY0X3QgdGFnLCBjb25zdCBTdHJpbmcmIHdvcmQsIFZlY3RvcjxTdHJp
bmc+JiBndWVzc2VzKQotewotICAgIGlmICghbV9jbGllbnQuZ3Vlc3Nlc0ZvcldvcmQpCi0gICAg
ICAgIHJldHVybjsKLQotICAgIFJlZlB0cjxBUEk6OkFycmF5PiB3a0d1ZXNzZXMgPSBhZG9wdFJl
Zih0b0ltcGwobV9jbGllbnQuZ3Vlc3Nlc0ZvcldvcmQodGFnLCB0b0FQSSh3b3JkLmltcGwoKSks
IG1fY2xpZW50LmJhc2UuY2xpZW50SW5mbykpKTsKLSAgICBzaXplX3QgbnVtR3Vlc3NlcyA9IHdr
R3Vlc3Nlcy0+c2l6ZSgpOwotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbnVtR3Vlc3Nlczsg
KytpKQotICAgICAgICBndWVzc2VzLmFwcGVuZCh3a0d1ZXNzZXMtPmF0PEFQSTo6U3RyaW5nPihp
KS0+c3RyaW5nKCkpOwotfQotCi12b2lkIFdlYlRleHRDaGVja2VyQ2xpZW50OjpsZWFybldvcmQo
dWludDY0X3QgdGFnLCBjb25zdCBTdHJpbmcmIHdvcmQpCi17Ci0gICAgaWYgKCFtX2NsaWVudC5s
ZWFybldvcmQpCi0gICAgICAgIHJldHVybjsKLQotICAgIG1fY2xpZW50LmxlYXJuV29yZCh0YWcs
IHRvQVBJKHdvcmQuaW1wbCgpKSwgbV9jbGllbnQuYmFzZS5jbGllbnRJbmZvKTsKLX0KLQotdm9p
ZCBXZWJUZXh0Q2hlY2tlckNsaWVudDo6aWdub3JlV29yZCh1aW50NjRfdCB0YWcsIGNvbnN0IFN0
cmluZyYgd29yZCkKLXsKLSAgICBpZiAoIW1fY2xpZW50Lmlnbm9yZVdvcmQpCi0gICAgICAgIHJl
dHVybjsKLQotICAgIG1fY2xpZW50Lmlnbm9yZVdvcmQodGFnLCB0b0FQSSh3b3JkLmltcGwoKSks
IG1fY2xpZW50LmJhc2UuY2xpZW50SW5mbyk7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYktpdApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViVGV4dENoZWNrZXJDbGllbnQu
aCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlRleHRDaGVja2VyQ2xpZW50LmgKZGVsZXRl
ZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDFmZDQ4OTdkZDRkMDYxYTQ2ZmVmNDRiMDUyMmIzNWE4
ZTNmYjBmYjguLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViVGV4dENoZWNrZXJDbGllbnQuaAorKysgL2Rldi9u
dWxsCkBAIC0xLDY2ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0g
KiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAq
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaWZuZGVmIFdlYlRleHRDaGVja2Vy
Q2xpZW50X2gKLSNkZWZpbmUgV2ViVGV4dENoZWNrZXJDbGllbnRfaAotCi0jaW5jbHVkZSAiQVBJ
Q2xpZW50LmgiCi0jaW5jbHVkZSAiV0tUZXh0Q2hlY2tlci5oIgotI2luY2x1ZGUgPFdlYkNvcmUv
VGV4dENoZWNrZXJDbGllbnQuaD4KLSNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgotCi1uYW1lc3Bh
Y2UgQVBJIHsKLXRlbXBsYXRlPD4gc3RydWN0IENsaWVudFRyYWl0czxXS1RleHRDaGVja2VyQ2xp
ZW50QmFzZT4gewotICAgIHR5cGVkZWYgc3RkOjp0dXBsZTxXS1RleHRDaGVja2VyQ2xpZW50VjA+
IFZlcnNpb25zOwotfTsKLX0KLQotbmFtZXNwYWNlIFdlYktpdCB7Ci0KLWNsYXNzIFdlYlBhZ2VQ
cm94eTsKLQotY2xhc3MgV2ViVGV4dENoZWNrZXJDbGllbnQgOiBwdWJsaWMgQVBJOjpDbGllbnQ8
V0tUZXh0Q2hlY2tlckNsaWVudEJhc2U+IHsKLXB1YmxpYzoKLSAgICBib29sIGNvbnRpbnVvdXNT
cGVsbENoZWNraW5nQWxsb3dlZCgpOwotICAgIGJvb2wgY29udGludW91c1NwZWxsQ2hlY2tpbmdF
bmFibGVkKCk7Ci0gICAgdm9pZCBzZXRDb250aW51b3VzU3BlbGxDaGVja2luZ0VuYWJsZWQoYm9v
bCk7Ci0gICAgYm9vbCBncmFtbWFyQ2hlY2tpbmdFbmFibGVkKCk7Ci0gICAgdm9pZCBzZXRHcmFt
bWFyQ2hlY2tpbmdFbmFibGVkKGJvb2wpOwotICAgIHVpbnQ2NF90IHVuaXF1ZVNwZWxsRG9jdW1l
bnRUYWcoV2ViUGFnZVByb3h5Kik7Ci0gICAgdm9pZCBjbG9zZVNwZWxsRG9jdW1lbnRXaXRoVGFn
KHVpbnQ2NF90KTsKLSAgICB2b2lkIGNoZWNrU3BlbGxpbmdPZlN0cmluZyh1aW50NjRfdCB0YWcs
IGNvbnN0IFN0cmluZyYgdGV4dCwgaW50MzJfdCYgbWlzc3BlbGxpbmdMb2NhdGlvbiwgaW50MzJf
dCYgbWlzc3BlbGxpbmdMZW5ndGgpOwotICAgIHZvaWQgY2hlY2tHcmFtbWFyT2ZTdHJpbmcodWlu
dDY0X3QgdGFnLCBjb25zdCBTdHJpbmcmIHRleHQsIFZlY3RvcjxXZWJDb3JlOjpHcmFtbWFyRGV0
YWlsPiYsIGludDMyX3QmIGJhZEdyYW1tYXJMb2NhdGlvbiwgaW50MzJfdCYgYmFkR3JhbW1hckxl
bmd0aCk7Ci0gICAgYm9vbCBzcGVsbGluZ1VJSXNTaG93aW5nKCk7Ci0gICAgdm9pZCB0b2dnbGVT
cGVsbGluZ1VJSXNTaG93aW5nKCk7Ci0gICAgdm9pZCB1cGRhdGVTcGVsbGluZ1VJV2l0aE1pc3Nw
ZWxsZWRXb3JkKHVpbnQ2NF90IHRhZywgY29uc3QgU3RyaW5nJiBtaXNzcGVsbGVkV29yZCk7Ci0g
ICAgdm9pZCB1cGRhdGVTcGVsbGluZ1VJV2l0aEdyYW1tYXJTdHJpbmcodWludDY0X3QgdGFnLCBj
b25zdCBTdHJpbmcmIGJhZEdyYW1tYXJQaHJhc2UsIGNvbnN0IFdlYkNvcmU6OkdyYW1tYXJEZXRh
aWwmKTsKLSAgICB2b2lkIGd1ZXNzZXNGb3JXb3JkKHVpbnQ2NF90IHRhZywgY29uc3QgU3RyaW5n
JiB3b3JkLCBWZWN0b3I8U3RyaW5nPiYgZ3Vlc3Nlcyk7Ci0gICAgdm9pZCBsZWFybldvcmQodWlu
dDY0X3QgdGFnLCBjb25zdCBTdHJpbmcmIHdvcmQpOwotICAgIHZvaWQgaWdub3JlV29yZCh1aW50
NjRfdCB0YWcsIGNvbnN0IFN0cmluZyYgd29yZCk7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBXZWJL
aXQKLQotI2VuZGlmIC8vIFdlYlRleHRDaGVja2VyQ2xpZW50X2gKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL2d0ay9XZWJUZXh0Q2hlY2tlci5jcHAgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9ndGsvV2ViVGV4dENoZWNrZXIuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmZkN2RjNjI1Mjkw
NzE4ZjAxMjY5ZTA0YThjYTAzNTE5YzhhOGQzYjEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9ndGsvV2ViVGV4dENoZWNrZXIuY3BwCkBAIC0wLDAgKzEsODEgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiV2ViVGV4dENoZWNr
ZXIuaCIKKworI2luY2x1ZGUgIlRleHRDaGVja2VyLmgiCisjaW5jbHVkZSAiV0tBUElDYXN0Lmgi
CisjaW5jbHVkZSAiV2ViUGFnZVByb3h5LmgiCisjaW5jbHVkZSAiV2ViUHJvY2Vzc1Bvb2wuaCIK
KyNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitXZWJUZXh0
Q2hlY2tlciogV2ViVGV4dENoZWNrZXI6OnNpbmdsZXRvbigpCit7CisgICAgc3RhdGljIFdlYlRl
eHRDaGVja2VyKiB0ZXh0Q2hlY2tlciA9IGFkb3B0UmVmKG5ldyBXZWJUZXh0Q2hlY2tlcikubGVh
a1JlZigpOworICAgIHJldHVybiB0ZXh0Q2hlY2tlcjsKK30KKworV2ViVGV4dENoZWNrZXI6Oldl
YlRleHRDaGVja2VyKCkKK3sKK30KKwordm9pZCBXZWJUZXh0Q2hlY2tlcjo6c2V0Q2xpZW50KGNv
bnN0IFdLVGV4dENoZWNrZXJDbGllbnRCYXNlKiBjbGllbnQpCit7CisgICAgbV9jbGllbnQuaW5p
dGlhbGl6ZShjbGllbnQpOworfQorCitzdGF0aWMgdm9pZCB1cGRhdGVTdGF0ZUZvckFsbENvbnRl
eHRzKCkKK3sKKyAgICBjb25zdCBWZWN0b3I8V2ViUHJvY2Vzc1Bvb2wqPiYgY29udGV4dHMgPSBX
ZWJQcm9jZXNzUG9vbDo6YWxsUHJvY2Vzc1Bvb2xzKCk7CisgICAgZm9yIChzaXplX3QgaSA9IDA7
IGkgPCBjb250ZXh0cy5zaXplKCk7ICsraSkKKyAgICAgICAgY29udGV4dHNbaV0tPnRleHRDaGVj
a2VyU3RhdGVDaGFuZ2VkKCk7Cit9CisKK3ZvaWQgV2ViVGV4dENoZWNrZXI6OmNvbnRpbnVvdXNT
cGVsbENoZWNraW5nRW5hYmxlZFN0YXRlQ2hhbmdlZChib29sIGVuYWJsZWQpCit7CisgICAgVGV4
dENoZWNrZXI6OmNvbnRpbnVvdXNTcGVsbENoZWNraW5nRW5hYmxlZFN0YXRlQ2hhbmdlZChlbmFi
bGVkKTsKKyAgICB1cGRhdGVTdGF0ZUZvckFsbENvbnRleHRzKCk7Cit9CisKK3ZvaWQgV2ViVGV4
dENoZWNrZXI6OmdyYW1tYXJDaGVja2luZ0VuYWJsZWRTdGF0ZUNoYW5nZWQoYm9vbCBlbmFibGVk
KQoreworICAgIFRleHRDaGVja2VyOjpncmFtbWFyQ2hlY2tpbmdFbmFibGVkU3RhdGVDaGFuZ2Vk
KGVuYWJsZWQpOworICAgIHVwZGF0ZVN0YXRlRm9yQWxsQ29udGV4dHMoKTsKK30KKwordm9pZCBX
ZWJUZXh0Q2hlY2tlcjo6Y2hlY2tTcGVsbGluZyhXZWJQYWdlUHJveHkqIHBhZ2UsIGJvb2wgc3Rh
cnRCZWZvcmVTZWxlY3Rpb24pCit7CisgICAgcGFnZS0+YWR2YW5jZVRvTmV4dE1pc3NwZWxsaW5n
KHN0YXJ0QmVmb3JlU2VsZWN0aW9uKTsKK30KKwordm9pZCBXZWJUZXh0Q2hlY2tlcjo6Y2hhbmdl
U3BlbGxpbmdUb1dvcmQoV2ViUGFnZVByb3h5KiBwYWdlLCBjb25zdCBTdHJpbmcmIHRleHQpCit7
CisgICAgcGFnZS0+Y2hhbmdlU3BlbGxpbmdUb1dvcmQodGV4dCk7Cit9CisKK30gLy8gbmFtZXNw
YWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvZ3RrL1dlYlRl
eHRDaGVja2VyLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9ndGsvV2ViVGV4dENoZWNrZXIu
aApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi4xYmRiNjNiY2U1NmFmZWI2N2E0NmY3OTVmMTQ5M2RiOTk3Zjg1YjI3Ci0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvZ3RrL1dlYlRleHRDaGVj
a2VyLmgKQEAgLTAsMCArMSw1NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwor
ICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAq
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5j
bHVkZSAiQVBJT2JqZWN0LmgiCisjaW5jbHVkZSAiV0tUZXh0Q2hlY2tlckd0ay5oIgorI2luY2x1
ZGUgIldlYlRleHRDaGVja2VyQ2xpZW50LmgiCisjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KKwor
bmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIFdlYlBhZ2VQcm94eTsKKworY2xhc3MgV2ViVGV4
dENoZWNrZXIgOiBwdWJsaWMgQVBJOjpPYmplY3RJbXBsPEFQSTo6T2JqZWN0OjpUeXBlOjpUZXh0
Q2hlY2tlcj4geworcHVibGljOgorICAgIHN0YXRpYyBXZWJUZXh0Q2hlY2tlciogc2luZ2xldG9u
KCk7CisKKyAgICB2b2lkIHNldENsaWVudChjb25zdCBXS1RleHRDaGVja2VyQ2xpZW50QmFzZSop
OworICAgIFdlYlRleHRDaGVja2VyQ2xpZW50JiBjbGllbnQoKSB7IHJldHVybiBtX2NsaWVudDsg
fQorCisgICAgdm9pZCBjb250aW51b3VzU3BlbGxDaGVja2luZ0VuYWJsZWRTdGF0ZUNoYW5nZWQo
Ym9vbCk7CisgICAgdm9pZCBncmFtbWFyQ2hlY2tpbmdFbmFibGVkU3RhdGVDaGFuZ2VkKGJvb2wp
OworCisgICAgdm9pZCBjaGVja1NwZWxsaW5nKFdlYlBhZ2VQcm94eSosIGJvb2wgc3RhcnRCZWZv
cmVTZWxlY3Rpb24pOworICAgIHZvaWQgY2hhbmdlU3BlbGxpbmdUb1dvcmQoV2ViUGFnZVByb3h5
KiwgY29uc3QgU3RyaW5nJik7CisKK3ByaXZhdGU6CisgICAgV2ViVGV4dENoZWNrZXIoKTsKKwor
ICAgIFdlYlRleHRDaGVja2VyQ2xpZW50IG1fY2xpZW50OworfTsKKworfSAvLyBuYW1lc3BhY2Ug
V2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9ndGsvV2ViVGV4dENo
ZWNrZXJDbGllbnQuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvZ3RrL1dlYlRleHRDaGVj
a2VyQ2xpZW50LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yZDcwM2Q3ZDY1ZjUyNjQxODhkZTFjODA3OWU2M2Yy
YmJlZmJmNzg0Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvZ3Rr
L1dlYlRleHRDaGVja2VyQ2xpZW50LmNwcApAQCAtMCwwICsxLDE4MSBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAxMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09O
VFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisg
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
IElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICog
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
KyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJXZWJUZXh0Q2hlY2tlckNsaWVudC5oIgor
CisjaW5jbHVkZSAiQVBJQXJyYXkuaCIKKyNpbmNsdWRlICJXS0FQSUNhc3QuaCIKKyNpbmNsdWRl
ICJXS1NoYXJlZEFQSUNhc3QuaCIKKyNpbmNsdWRlICJXZWJHcmFtbWFyRGV0YWlsLmgiCisjaW5j
bHVkZSAiV2ViUGFnZVByb3h5LmgiCisjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CisK
K25hbWVzcGFjZSBXZWJLaXQgeworCitib29sIFdlYlRleHRDaGVja2VyQ2xpZW50Ojpjb250aW51
b3VzU3BlbGxDaGVja2luZ0FsbG93ZWQoKQoreworICAgIGlmICghbV9jbGllbnQuY29udGludW91
c1NwZWxsQ2hlY2tpbmdBbGxvd2VkKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICByZXR1
cm4gbV9jbGllbnQuY29udGludW91c1NwZWxsQ2hlY2tpbmdBbGxvd2VkKG1fY2xpZW50LmJhc2Uu
Y2xpZW50SW5mbyk7Cit9CisKK2Jvb2wgV2ViVGV4dENoZWNrZXJDbGllbnQ6OmNvbnRpbnVvdXNT
cGVsbENoZWNraW5nRW5hYmxlZCgpCit7CisgICAgaWYgKCFtX2NsaWVudC5jb250aW51b3VzU3Bl
bGxDaGVja2luZ0VuYWJsZWQpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIHJldHVybiBt
X2NsaWVudC5jb250aW51b3VzU3BlbGxDaGVja2luZ0VuYWJsZWQobV9jbGllbnQuYmFzZS5jbGll
bnRJbmZvKTsKK30KKwordm9pZCBXZWJUZXh0Q2hlY2tlckNsaWVudDo6c2V0Q29udGludW91c1Nw
ZWxsQ2hlY2tpbmdFbmFibGVkKGJvb2wgZW5hYmxlZCkKK3sKKyAgICBpZiAoIW1fY2xpZW50LnNl
dENvbnRpbnVvdXNTcGVsbENoZWNraW5nRW5hYmxlZCkKKyAgICAgICAgcmV0dXJuOworCisgICAg
bV9jbGllbnQuc2V0Q29udGludW91c1NwZWxsQ2hlY2tpbmdFbmFibGVkKGVuYWJsZWQsIG1fY2xp
ZW50LmJhc2UuY2xpZW50SW5mbyk7Cit9CisKK2Jvb2wgV2ViVGV4dENoZWNrZXJDbGllbnQ6Omdy
YW1tYXJDaGVja2luZ0VuYWJsZWQoKQoreworICAgIGlmICghbV9jbGllbnQuZ3JhbW1hckNoZWNr
aW5nRW5hYmxlZCkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgcmV0dXJuIG1fY2xpZW50
LmdyYW1tYXJDaGVja2luZ0VuYWJsZWQobV9jbGllbnQuYmFzZS5jbGllbnRJbmZvKTsKK30KKwor
dm9pZCBXZWJUZXh0Q2hlY2tlckNsaWVudDo6c2V0R3JhbW1hckNoZWNraW5nRW5hYmxlZChib29s
IGVuYWJsZWQpCit7CisgICAgaWYgKCFtX2NsaWVudC5zZXRHcmFtbWFyQ2hlY2tpbmdFbmFibGVk
KQorICAgICAgICByZXR1cm47CisKKyAgICBtX2NsaWVudC5zZXRHcmFtbWFyQ2hlY2tpbmdFbmFi
bGVkKGVuYWJsZWQsIG1fY2xpZW50LmJhc2UuY2xpZW50SW5mbyk7Cit9CisKK3VpbnQ2NF90IFdl
YlRleHRDaGVja2VyQ2xpZW50Ojp1bmlxdWVTcGVsbERvY3VtZW50VGFnKFdlYlBhZ2VQcm94eSog
cGFnZSkKK3sKKyAgICBpZiAoIW1fY2xpZW50LnVuaXF1ZVNwZWxsRG9jdW1lbnRUYWcpCisgICAg
ICAgIHJldHVybiAwOworCisgICAgcmV0dXJuIG1fY2xpZW50LnVuaXF1ZVNwZWxsRG9jdW1lbnRU
YWcodG9BUEkocGFnZSksIG1fY2xpZW50LmJhc2UuY2xpZW50SW5mbyk7Cit9CisKK3ZvaWQgV2Vi
VGV4dENoZWNrZXJDbGllbnQ6OmNsb3NlU3BlbGxEb2N1bWVudFdpdGhUYWcodWludDY0X3QgdGFn
KQoreworICAgIGlmICghbV9jbGllbnQuY2xvc2VTcGVsbERvY3VtZW50V2l0aFRhZykKKyAgICAg
ICAgcmV0dXJuOworCisgICAgbV9jbGllbnQuY2xvc2VTcGVsbERvY3VtZW50V2l0aFRhZyh0YWcs
IG1fY2xpZW50LmJhc2UuY2xpZW50SW5mbyk7Cit9CisKK3ZvaWQgV2ViVGV4dENoZWNrZXJDbGll
bnQ6OmNoZWNrU3BlbGxpbmdPZlN0cmluZyh1aW50NjRfdCB0YWcsIGNvbnN0IFN0cmluZyYgdGV4
dCwgaW50MzJfdCYgbWlzc3BlbGxpbmdMb2NhdGlvbiwgaW50MzJfdCYgbWlzc3BlbGxpbmdMZW5n
dGgpCit7CisgICAgbWlzc3BlbGxpbmdMb2NhdGlvbiA9IC0xOworICAgIG1pc3NwZWxsaW5nTGVu
Z3RoID0gMDsKKworICAgIGlmICghbV9jbGllbnQuY2hlY2tTcGVsbGluZ09mU3RyaW5nKQorICAg
ICAgICByZXR1cm47CisKKyAgICBtX2NsaWVudC5jaGVja1NwZWxsaW5nT2ZTdHJpbmcodGFnLCB0
b0FQSSh0ZXh0LmltcGwoKSksICZtaXNzcGVsbGluZ0xvY2F0aW9uLCAmbWlzc3BlbGxpbmdMZW5n
dGgsIG1fY2xpZW50LmJhc2UuY2xpZW50SW5mbyk7Cit9CisKK3ZvaWQgV2ViVGV4dENoZWNrZXJD
bGllbnQ6OmNoZWNrR3JhbW1hck9mU3RyaW5nKHVpbnQ2NF90IHRhZywgY29uc3QgU3RyaW5nJiB0
ZXh0LCBWZWN0b3I8V2ViQ29yZTo6R3JhbW1hckRldGFpbD4mIGdyYW1tYXJEZXRhaWxzLCBpbnQz
Ml90JiBiYWRHcmFtbWFyTG9jYXRpb24sIGludDMyX3QmIGJhZEdyYW1tYXJMZW5ndGgpCit7Cisg
ICAgYmFkR3JhbW1hckxvY2F0aW9uID0gLTE7CisgICAgYmFkR3JhbW1hckxlbmd0aCA9IDA7CisK
KyAgICBpZiAoIW1fY2xpZW50LmNoZWNrR3JhbW1hck9mU3RyaW5nKQorICAgICAgICByZXR1cm47
CisKKyAgICBXS0FycmF5UmVmIHdrR3JhbW1hckRldGFpbHNSZWYgPSAwOworICAgIG1fY2xpZW50
LmNoZWNrR3JhbW1hck9mU3RyaW5nKHRhZywgdG9BUEkodGV4dC5pbXBsKCkpLCAmd2tHcmFtbWFy
RGV0YWlsc1JlZiwgJmJhZEdyYW1tYXJMb2NhdGlvbiwgJmJhZEdyYW1tYXJMZW5ndGgsIG1fY2xp
ZW50LmJhc2UuY2xpZW50SW5mbyk7CisKKyAgICBSZWZQdHI8QVBJOjpBcnJheT4gd2tHcmFtbWFy
RGV0YWlscyA9IGFkb3B0UmVmKHRvSW1wbCh3a0dyYW1tYXJEZXRhaWxzUmVmKSk7CisgICAgc2l6
ZV90IG51bUdyYW1tYXJEZXRhaWxzID0gd2tHcmFtbWFyRGV0YWlscy0+c2l6ZSgpOworICAgIGZv
ciAoc2l6ZV90IGkgPSAwOyBpIDwgbnVtR3JhbW1hckRldGFpbHM7ICsraSkKKyAgICAgICAgZ3Jh
bW1hckRldGFpbHMuYXBwZW5kKHdrR3JhbW1hckRldGFpbHMtPmF0PFdlYkdyYW1tYXJEZXRhaWw+
KGkpLT5ncmFtbWFyRGV0YWlsKCkpOworfQorCitib29sIFdlYlRleHRDaGVja2VyQ2xpZW50Ojpz
cGVsbGluZ1VJSXNTaG93aW5nKCkKK3sKKyAgICBpZiAoIW1fY2xpZW50LnNwZWxsaW5nVUlJc1No
b3dpbmcpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIHJldHVybiBtX2NsaWVudC5zcGVs
bGluZ1VJSXNTaG93aW5nKG1fY2xpZW50LmJhc2UuY2xpZW50SW5mbyk7Cit9CisKK3ZvaWQgV2Vi
VGV4dENoZWNrZXJDbGllbnQ6OnRvZ2dsZVNwZWxsaW5nVUlJc1Nob3dpbmcoKQoreworICAgIGlm
ICghbV9jbGllbnQudG9nZ2xlU3BlbGxpbmdVSUlzU2hvd2luZykKKyAgICAgICAgcmV0dXJuOwor
CisgICAgcmV0dXJuIG1fY2xpZW50LnRvZ2dsZVNwZWxsaW5nVUlJc1Nob3dpbmcobV9jbGllbnQu
YmFzZS5jbGllbnRJbmZvKTsKK30KKwordm9pZCBXZWJUZXh0Q2hlY2tlckNsaWVudDo6dXBkYXRl
U3BlbGxpbmdVSVdpdGhNaXNzcGVsbGVkV29yZCh1aW50NjRfdCB0YWcsIGNvbnN0IFN0cmluZyYg
bWlzc3BlbGxlZFdvcmQpCit7CisgICAgaWYgKCFtX2NsaWVudC51cGRhdGVTcGVsbGluZ1VJV2l0
aE1pc3NwZWxsZWRXb3JkKQorICAgICAgICByZXR1cm47CisKKyAgICBtX2NsaWVudC51cGRhdGVT
cGVsbGluZ1VJV2l0aE1pc3NwZWxsZWRXb3JkKHRhZywgdG9BUEkobWlzc3BlbGxlZFdvcmQuaW1w
bCgpKSwgbV9jbGllbnQuYmFzZS5jbGllbnRJbmZvKTsKK30KKwordm9pZCBXZWJUZXh0Q2hlY2tl
ckNsaWVudDo6dXBkYXRlU3BlbGxpbmdVSVdpdGhHcmFtbWFyU3RyaW5nKHVpbnQ2NF90IHRhZywg
Y29uc3QgU3RyaW5nJiBiYWRHcmFtbWFyUGhyYXNlLCBjb25zdCBXZWJDb3JlOjpHcmFtbWFyRGV0
YWlsJiBncmFtbWFyRGV0YWlsKQoreworICAgIGlmICghbV9jbGllbnQudXBkYXRlU3BlbGxpbmdV
SVdpdGhHcmFtbWFyU3RyaW5nKQorICAgICAgICByZXR1cm47CisKKyAgICBtX2NsaWVudC51cGRh
dGVTcGVsbGluZ1VJV2l0aEdyYW1tYXJTdHJpbmcodGFnLCB0b0FQSShiYWRHcmFtbWFyUGhyYXNl
LmltcGwoKSksIHRvQVBJKGdyYW1tYXJEZXRhaWwpLCBtX2NsaWVudC5iYXNlLmNsaWVudEluZm8p
OworfQorCit2b2lkIFdlYlRleHRDaGVja2VyQ2xpZW50OjpndWVzc2VzRm9yV29yZCh1aW50NjRf
dCB0YWcsIGNvbnN0IFN0cmluZyYgd29yZCwgVmVjdG9yPFN0cmluZz4mIGd1ZXNzZXMpCit7Cisg
ICAgaWYgKCFtX2NsaWVudC5ndWVzc2VzRm9yV29yZCkKKyAgICAgICAgcmV0dXJuOworCisgICAg
UmVmUHRyPEFQSTo6QXJyYXk+IHdrR3Vlc3NlcyA9IGFkb3B0UmVmKHRvSW1wbChtX2NsaWVudC5n
dWVzc2VzRm9yV29yZCh0YWcsIHRvQVBJKHdvcmQuaW1wbCgpKSwgbV9jbGllbnQuYmFzZS5jbGll
bnRJbmZvKSkpOworICAgIHNpemVfdCBudW1HdWVzc2VzID0gd2tHdWVzc2VzLT5zaXplKCk7Cisg
ICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBudW1HdWVzc2VzOyArK2kpCisgICAgICAgIGd1ZXNz
ZXMuYXBwZW5kKHdrR3Vlc3Nlcy0+YXQ8QVBJOjpTdHJpbmc+KGkpLT5zdHJpbmcoKSk7Cit9CisK
K3ZvaWQgV2ViVGV4dENoZWNrZXJDbGllbnQ6OmxlYXJuV29yZCh1aW50NjRfdCB0YWcsIGNvbnN0
IFN0cmluZyYgd29yZCkKK3sKKyAgICBpZiAoIW1fY2xpZW50LmxlYXJuV29yZCkKKyAgICAgICAg
cmV0dXJuOworCisgICAgbV9jbGllbnQubGVhcm5Xb3JkKHRhZywgdG9BUEkod29yZC5pbXBsKCkp
LCBtX2NsaWVudC5iYXNlLmNsaWVudEluZm8pOworfQorCit2b2lkIFdlYlRleHRDaGVja2VyQ2xp
ZW50OjppZ25vcmVXb3JkKHVpbnQ2NF90IHRhZywgY29uc3QgU3RyaW5nJiB3b3JkKQoreworICAg
IGlmICghbV9jbGllbnQuaWdub3JlV29yZCkKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9jbGll
bnQuaWdub3JlV29yZCh0YWcsIHRvQVBJKHdvcmQuaW1wbCgpKSwgbV9jbGllbnQuYmFzZS5jbGll
bnRJbmZvKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9ndGsvV2ViVGV4dENoZWNrZXJDbGllbnQuaCBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL2d0ay9XZWJUZXh0Q2hlY2tlckNsaWVudC5oCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjg5OTVj
ZThiNjNjMmYwMTNhZTUwMGFjMzNjNDZlMzQzNmQ5NmY2ODUKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9ndGsvV2ViVGV4dENoZWNrZXJDbGllbnQuaApAQCAtMCww
ICsxLDYzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4K
KyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJBUElDbGll
bnQuaCIKKyNpbmNsdWRlICJXS1RleHRDaGVja2VyR3RrLmgiCisjaW5jbHVkZSA8V2ViQ29yZS9U
ZXh0Q2hlY2tlckNsaWVudC5oPgorI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CisKK25hbWVzcGFj
ZSBBUEkgewordGVtcGxhdGU8PiBzdHJ1Y3QgQ2xpZW50VHJhaXRzPFdLVGV4dENoZWNrZXJDbGll
bnRCYXNlPiB7CisgICAgdHlwZWRlZiBzdGQ6OnR1cGxlPFdLVGV4dENoZWNrZXJDbGllbnRWMD4g
VmVyc2lvbnM7Cit9OworfQorCituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3MgV2ViUGFnZVBy
b3h5OworCitjbGFzcyBXZWJUZXh0Q2hlY2tlckNsaWVudCA6IHB1YmxpYyBBUEk6OkNsaWVudDxX
S1RleHRDaGVja2VyQ2xpZW50QmFzZT4geworcHVibGljOgorICAgIGJvb2wgY29udGludW91c1Nw
ZWxsQ2hlY2tpbmdBbGxvd2VkKCk7CisgICAgYm9vbCBjb250aW51b3VzU3BlbGxDaGVja2luZ0Vu
YWJsZWQoKTsKKyAgICB2b2lkIHNldENvbnRpbnVvdXNTcGVsbENoZWNraW5nRW5hYmxlZChib29s
KTsKKyAgICBib29sIGdyYW1tYXJDaGVja2luZ0VuYWJsZWQoKTsKKyAgICB2b2lkIHNldEdyYW1t
YXJDaGVja2luZ0VuYWJsZWQoYm9vbCk7CisgICAgdWludDY0X3QgdW5pcXVlU3BlbGxEb2N1bWVu
dFRhZyhXZWJQYWdlUHJveHkqKTsKKyAgICB2b2lkIGNsb3NlU3BlbGxEb2N1bWVudFdpdGhUYWco
dWludDY0X3QpOworICAgIHZvaWQgY2hlY2tTcGVsbGluZ09mU3RyaW5nKHVpbnQ2NF90IHRhZywg
Y29uc3QgU3RyaW5nJiB0ZXh0LCBpbnQzMl90JiBtaXNzcGVsbGluZ0xvY2F0aW9uLCBpbnQzMl90
JiBtaXNzcGVsbGluZ0xlbmd0aCk7CisgICAgdm9pZCBjaGVja0dyYW1tYXJPZlN0cmluZyh1aW50
NjRfdCB0YWcsIGNvbnN0IFN0cmluZyYgdGV4dCwgVmVjdG9yPFdlYkNvcmU6OkdyYW1tYXJEZXRh
aWw+JiwgaW50MzJfdCYgYmFkR3JhbW1hckxvY2F0aW9uLCBpbnQzMl90JiBiYWRHcmFtbWFyTGVu
Z3RoKTsKKyAgICBib29sIHNwZWxsaW5nVUlJc1Nob3dpbmcoKTsKKyAgICB2b2lkIHRvZ2dsZVNw
ZWxsaW5nVUlJc1Nob3dpbmcoKTsKKyAgICB2b2lkIHVwZGF0ZVNwZWxsaW5nVUlXaXRoTWlzc3Bl
bGxlZFdvcmQodWludDY0X3QgdGFnLCBjb25zdCBTdHJpbmcmIG1pc3NwZWxsZWRXb3JkKTsKKyAg
ICB2b2lkIHVwZGF0ZVNwZWxsaW5nVUlXaXRoR3JhbW1hclN0cmluZyh1aW50NjRfdCB0YWcsIGNv
bnN0IFN0cmluZyYgYmFkR3JhbW1hclBocmFzZSwgY29uc3QgV2ViQ29yZTo6R3JhbW1hckRldGFp
bCYpOworICAgIHZvaWQgZ3Vlc3Nlc0ZvcldvcmQodWludDY0X3QgdGFnLCBjb25zdCBTdHJpbmcm
IHdvcmQsIFZlY3RvcjxTdHJpbmc+JiBndWVzc2VzKTsKKyAgICB2b2lkIGxlYXJuV29yZCh1aW50
NjRfdCB0YWcsIGNvbnN0IFN0cmluZyYgd29yZCk7CisgICAgdm9pZCBpZ25vcmVXb3JkKHVpbnQ2
NF90IHRhZywgY29uc3QgU3RyaW5nJiB3b3JkKTsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYktp
dApkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IGRh
YWM5N2I5NjdiNDJiOWE4NDgzMzdkYzI5YzZiNWE3YmM3N2MzYTkuLmY5ZTI1OTNlZTk2ZDA4ODMx
ODY2YjA5MGRmYWU3Y2IxNzZjZDAzYzYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysg
Yi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNCBAQAorMjAyMS0wMy0wNSAgTWljaGFlbCBD
YXRhbnphcm8gIDxtY2F0YW56YXJvQGdub21lLm9yZz4KKworICAgICAgICBbR1RLXSBDbGVhbiB1
cCBHVEstc3BlY2lmaWMgdGV4dCBjaGVja2VyIHN0dWZmCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjI4MTgKKworICAgICAgICBSZXZpZXdlZCBieSBE
b24gT2xtc3RlYWQuCisKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL2d0ay9UZXN0Q29udHJv
bGxlckd0ay5jcHA6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9ndGsvVUlTY3JpcHRDb250
cm9sbGVyR3RrLmNwcDoKKyAgICAgICAgKFdUUjo6VUlTY3JpcHRDb250cm9sbGVyR3RrOjpzZXRD
b250aW51b3VzU3BlbGxDaGVja2luZ0VuYWJsZWQpOgorCiAyMDIxLTAzLTA1ICBKb25hdGhhbiBC
ZWRhcmQgIDxqYmVkYXJkQGFwcGxlLmNvbT4KIAogICAgICAgICBbcnVuLXdlYmtpdC10ZXN0c10g
RGVsZXRlIG9sZCByZXN1bHRzIHNlcnZlciBjb2RlCmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRU
ZXN0UnVubmVyL2d0ay9UZXN0Q29udHJvbGxlckd0ay5jcHAgYi9Ub29scy9XZWJLaXRUZXN0UnVu
bmVyL2d0ay9UZXN0Q29udHJvbGxlckd0ay5jcHAKaW5kZXggN2U2MGQ2OTE4ZmRhNmYxNzUxYWRl
MjM5OGJjMTI1NzA3M2E4ODQwMi4uYjk4ZmVhYjk4OGI5MDkyM2JmNjA3ZTZkYjc4NTczZjE1YmZl
ODE2MSAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9ndGsvVGVzdENvbnRyb2xs
ZXJHdGsuY3BwCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvZ3RrL1Rlc3RDb250cm9sbGVy
R3RrLmNwcApAQCAtMjgsNyArMjgsNyBAQAogI2luY2x1ZGUgIlRlc3RDb250cm9sbGVyLmgiCiAK
ICNpbmNsdWRlICJQbGF0Zm9ybVdlYlZpZXcuaCIKLSNpbmNsdWRlIDxXZWJLaXQvV0tUZXh0Q2hl
Y2tlci5oPgorI2luY2x1ZGUgPFdlYktpdC9XS1RleHRDaGVja2VyR3RrLmg+CiAjaW5jbHVkZSA8
Z3RrL2d0ay5oPgogI2luY2x1ZGUgPHd0Zi9QbGF0Zm9ybS5oPgogI2luY2x1ZGUgPHd0Zi9SdW5M
b29wLmg+CmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL2d0ay9VSVNjcmlwdENv
bnRyb2xsZXJHdGsuY3BwIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9ndGsvVUlTY3JpcHRDb250
cm9sbGVyR3RrLmNwcAppbmRleCAzMDBjYWE3MzU2ZjdlZWU2YTdjMzdhM2UyODgyMzUxZDI4OWEw
ZmY1Li5mMTFiNmQwNjM0OTA0MjA4N2IzOTQ1MjA4YmY0OWMyZDkwNzc3YWZlIDEwMDY0NAotLS0g
YS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL2d0ay9VSVNjcmlwdENvbnRyb2xsZXJHdGsuY3BwCisr
KyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvZ3RrL1VJU2NyaXB0Q29udHJvbGxlckd0ay5jcHAK
QEAgLTI5LDkgKzI5LDkgQEAKICNpbmNsdWRlICJFdmVudFNlbmRlclByb3h5LmgiCiAjaW5jbHVk
ZSAiUGxhdGZvcm1XZWJWaWV3LmgiCiAjaW5jbHVkZSAiVGVzdENvbnRyb2xsZXIuaCIKLSNpbmNs
dWRlICJUZXh0Q2hlY2tlci5oIgogI2luY2x1ZGUgIlVJU2NyaXB0Q29udGV4dC5oIgogI2luY2x1
ZGUgPEphdmFTY3JpcHRDb3JlL09wYXF1ZUpTU3RyaW5nLmg+CisjaW5jbHVkZSA8V2ViS2l0L1dL
VGV4dENoZWNrZXJHdGsuaD4KICNpbmNsdWRlIDxXZWJLaXQvV0tWaWV3UHJpdmF0ZS5oPgogI2lu
Y2x1ZGUgPGd0ay9ndGsuaD4KICNpbmNsdWRlIDx3dGYvUnVuTG9vcC5oPgpAQCAtNzcsNyArNzcs
NyBAQCB2b2lkIFVJU2NyaXB0Q29udHJvbGxlckd0azo6ZG9Bc3luY1Rhc2soSlNWYWx1ZVJlZiBj
YWxsYmFjaykKIAogdm9pZCBVSVNjcmlwdENvbnRyb2xsZXJHdGs6OnNldENvbnRpbnVvdXNTcGVs
bENoZWNraW5nRW5hYmxlZChib29sIGVuYWJsZWQpCiB7Ci0gICAgV2ViS2l0OjpUZXh0Q2hlY2tl
cjo6c2V0Q29udGludW91c1NwZWxsQ2hlY2tpbmdFbmFibGVkKGVuYWJsZWQpOworICAgIFdLVGV4
dENoZWNrZXJTZXRDb250aW51b3VzU3BlbGxDaGVja2luZ0VuYWJsZWQoZW5hYmxlZCk7CiB9CiAK
IHZvaWQgVUlTY3JpcHRDb250cm9sbGVyR3RrOjpjb3B5VGV4dChKU1N0cmluZ1JlZiB0ZXh0KQo=
</data>

          </attachment>
      

    </bug>

</bugzilla>