<?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>95069</bug_id>
          
          <creation_ts>2012-08-27 03:45:12 -0700</creation_ts>
          <short_desc>REGRESSION(r126694): Causes all pages to be rendered as a completely black page in Qt WebKit2 (Requested by carewolf on #webkit).</short_desc>
          <delta_ts>2012-08-27 03:58:33 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>78672</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="WebKit Review Bot">webkit.review.bot</reporter>
          <assigned_to name="WebKit Review Bot">webkit.review.bot</assigned_to>
          <cc>noam</cc>
    
    <cc>rtakacs</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>705139</commentid>
    <comment_count>0</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-08-27 03:45:12 -0700</bug_when>
    <thetext>http://trac.webkit.org/changeset/126694 broke the build:
Causes all pages to be rendered as a completely black page in Qt WebKit2 (Requested by carewolf on #webkit).

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

&quot;Only you can prevent forest fires.&quot; -- Smokey the Bear</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>705141</commentid>
    <comment_count>1</comment_count>
      <attachid>160689</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-08-27 03:45:55 -0700</bug_when>
    <thetext>Created attachment 160689
ROLLOUT of r126694

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

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

  webkit-patch land-attachment ATTACHMENT_ID

where ATTACHMENT_ID is the ID of this attachment.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>705144</commentid>
    <comment_count>2</comment_count>
      <attachid>160689</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-08-27 03:58:29 -0700</bug_when>
    <thetext>Comment on attachment 160689
ROLLOUT of r126694

Clearing flags on attachment: 160689

Committed r126743: &lt;http://trac.webkit.org/changeset/126743&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>705145</commentid>
    <comment_count>3</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-08-27 03:58:33 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>160689</attachid>
            <date>2012-08-27 03:45:55 -0700</date>
            <delta_ts>2012-08-27 03:58:29 -0700</delta_ts>
            <desc>ROLLOUT of r126694</desc>
            <filename>bug-95069-20120827105215.patch</filename>
            <type>text/plain</type>
            <size>87599</size>
            <attacher name="WebKit Review Bot">webkit.review.bot</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI2NzQxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNTA4NDM4Nzk0OTE5Yjhj
OWU1YjExYmU4NzdiYzkyOTc1NzVkOTA2ZC4uNDg5YTFhMDVhZTNkY2E0OWMwZmQzMGI3YTM2MWQy
NzY3MjdhMzhkZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEwMiBAQAorMjAxMi0wOC0yNyAgU2hl
cmlmZiBCb3QgIDx3ZWJraXQucmV2aWV3LmJvdEBnbWFpbC5jb20+CisKKyAgICAgICAgVW5yZXZp
ZXdlZCwgcm9sbGluZyBvdXQgcjEyNjY5NCBhbmQgcjEyNjczMS4KKyAgICAgICAgaHR0cDovL3Ry
YWMud2Via2l0Lm9yZy9jaGFuZ2VzZXQvMTI2Njk0CisgICAgICAgIGh0dHA6Ly90cmFjLndlYmtp
dC5vcmcvY2hhbmdlc2V0LzEyNjczMQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9OTUwNjkKKworICAgICAgICBDYXVzZXMgYWxsIHBhZ2VzIHRvIGJlIHJl
bmRlcmVkIGFzIGEgY29tcGxldGVseSBibGFjayBwYWdlIGluCisgICAgICAgIFF0IFdlYktpdDIg
KFJlcXVlc3RlZCBieSBjYXJld29sZiBvbiAjd2Via2l0KS4KKworICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dDNELmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvdGV4bWFwL1RleHR1cmVNYXBwZXJHTC5jcHA6CisgICAgICAgIChTaGFyZWRHTERhdGEpOgor
ICAgICAgICAoV2ViQ29yZTo6VGV4dHVyZU1hcHBlckdMRGF0YTo6U2hhcmVkR0xEYXRhOjpnZXRD
dXJyZW50R0xDb250ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OlRleHR1cmVNYXBwZXJHTERhdGE6
OlNoYXJlZEdMRGF0YTo6Y3VycmVudFNoYXJlZEdMRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpU
ZXh0dXJlTWFwcGVyR0xEYXRhOjpTaGFyZWRHTERhdGE6OlNoYXJlZEdMRGF0YSk6CisgICAgICAg
IChXZWJDb3JlOjpUZXh0dXJlTWFwcGVyR0xEYXRhOjpzaGFyZWRHTERhdGEpOgorICAgICAgICAo
V2ViQ29yZTo6VGV4dHVyZU1hcHBlckdMRGF0YTo6VGV4dHVyZU1hcHBlckdMRGF0YSk6CisgICAg
ICAgIChUZXh0dXJlTWFwcGVyR0xEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OnNjaXNzb3JDbGlw
KToKKyAgICAgICAgKFdlYkNvcmU6OlRleHR1cmVNYXBwZXJHTDo6Q2xpcFN0YWNrOjphcHBseSk6
CisgICAgICAgIChXZWJDb3JlOjpUZXh0dXJlTWFwcGVyR0xEYXRhOjppbml0aWFsaXplU3RlbmNp
bCk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0dXJlTWFwcGVyR0w6OlRleHR1cmVNYXBwZXJHTCk6
CisgICAgICAgIChXZWJDb3JlOjpUZXh0dXJlTWFwcGVyR0w6OmJlZ2luUGFpbnRpbmcpOgorICAg
ICAgICAoV2ViQ29yZTo6VGV4dHVyZU1hcHBlckdMOjplbmRQYWludGluZyk6CisgICAgICAgIChX
ZWJDb3JlOjpUZXh0dXJlTWFwcGVyR0w6OmRyYXdRdWFkKToKKyAgICAgICAgKFdlYkNvcmU6OlRl
eHR1cmVNYXBwZXJHTDo6ZHJhd0JvcmRlcik6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAg
KFdlYkNvcmU6OlRleHR1cmVNYXBwZXJHTDo6ZHJhd1RleHR1cmVSZWN0YW5nbGVBUkIpOgorICAg
ICAgICAoV2ViQ29yZTo6VGV4dHVyZU1hcHBlckdMOjpkcmF3VGV4dHVyZSk6CisgICAgICAgIChX
ZWJDb3JlOjp2aWV3cG9ydE1hdHJpeCk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0dXJlTWFwcGVy
R0w6OmRyYXdUZXh0dXJlV2l0aEFudGlhbGlhc2luZyk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0
dXJlTWFwcGVyR0w6OmRyYXdUZXh0dXJlZFF1YWRXaXRoUHJvZ3JhbSk6CisgICAgICAgIChXZWJD
b3JlOjpCaXRtYXBUZXh0dXJlR0w6OmRpZFJlc2V0KToKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1h
cFRleHR1cmVHTDo6dXBkYXRlQ29udGVudHMpOgorICAgICAgICAoV2ViQ29yZTo6VGV4dHVyZU1h
cHBlckdMOjpkcmF3RmlsdGVyZWQpOgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFwVGV4dHVyZUdM
Ojppbml0aWFsaXplU3RlbmNpbCk6CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBUZXh0dXJlR0w6
OmNsZWFySWZOZWVkZWQpOgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFwVGV4dHVyZUdMOjpjcmVh
dGVGYm9JZk5lZWRlZCk6CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBUZXh0dXJlR0w6OmJpbmQp
OgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFwVGV4dHVyZUdMOjp+Qml0bWFwVGV4dHVyZUdMKToK
KyAgICAgICAgKFdlYkNvcmU6OlRleHR1cmVNYXBwZXJHTDo6YmluZERlZmF1bHRTdXJmYWNlKToK
KyAgICAgICAgKFdlYkNvcmU6OlRleHR1cmVNYXBwZXJHTDo6YmVnaW5TY2lzc29yQ2xpcCk6Cisg
ICAgICAgIChXZWJDb3JlOjpUZXh0dXJlTWFwcGVyR0w6OmJlZ2luQ2xpcCk6CisgICAgICAgIChX
ZWJDb3JlOjpUZXh0dXJlTWFwcGVyR0w6OmVuZENsaXApOgorICAgICAgICAoV2ViQ29yZTo6VGV4
dHVyZU1hcHBlckdMOjpjcmVhdGVUZXh0dXJlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy90ZXhtYXAvVGV4dHVyZU1hcHBlckdMLmg6CisgICAgICAgIChUZXh0dXJlTWFwcGVyR0wpOgor
ICAgICAgICAoQ2xpcFN0YWNrKToKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcFRleHR1cmVHTDo6
dGV4dHVyZVRhcmdldCk6CisgICAgICAgIChCaXRtYXBUZXh0dXJlR0wpOgorICAgICAgICAoV2Vi
Q29yZTo6Qml0bWFwVGV4dHVyZUdMOjpCaXRtYXBUZXh0dXJlR0wpOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyU2hhZGVyTWFuYWdlci5jcHA6CisgICAg
ICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OlRleHR1cmVNYXBwZXJTaGFkZXJNYW5h
Z2VyOjpnZXRTaGFkZXJQcm9ncmFtKToKKyAgICAgICAgKFdlYkNvcmU6OlRleHR1cmVNYXBwZXJT
aGFkZXJQcm9ncmFtOjpUZXh0dXJlTWFwcGVyU2hhZGVyUHJvZ3JhbSk6CisgICAgICAgIChXZWJD
b3JlOjpUZXh0dXJlTWFwcGVyU2hhZGVyUHJvZ3JhbTo6aW5pdGlhbGl6ZVByb2dyYW0pOgorICAg
ICAgICAoV2ViQ29yZTo6VGV4dHVyZU1hcHBlclNoYWRlclByb2dyYW06OmdldFVuaWZvcm1Mb2Nh
dGlvbik6CisgICAgICAgIChXZWJDb3JlOjpUZXh0dXJlTWFwcGVyU2hhZGVyUHJvZ3JhbTo6flRl
eHR1cmVNYXBwZXJTaGFkZXJQcm9ncmFtKToKKyAgICAgICAgKFdlYkNvcmU6OlRleHR1cmVNYXBw
ZXJTaGFkZXJQcm9ncmFtU2ltcGxlOjpUZXh0dXJlTWFwcGVyU2hhZGVyUHJvZ3JhbVNpbXBsZSk6
CisgICAgICAgIChXZWJDb3JlOjpUZXh0dXJlTWFwcGVyU2hhZGVyUHJvZ3JhbVNvbGlkQ29sb3I6
OlRleHR1cmVNYXBwZXJTaGFkZXJQcm9ncmFtU29saWRDb2xvcik6CisgICAgICAgIChXZWJDb3Jl
OjpUZXh0dXJlTWFwcGVyU2hhZGVyUHJvZ3JhbVJlY3RTaW1wbGU6OlRleHR1cmVNYXBwZXJTaGFk
ZXJQcm9ncmFtUmVjdFNpbXBsZSk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0dXJlTWFwcGVyU2hh
ZGVyUHJvZ3JhbU9wYWNpdHlBbmRNYXNrOjpUZXh0dXJlTWFwcGVyU2hhZGVyUHJvZ3JhbU9wYWNp
dHlBbmRNYXNrKToKKyAgICAgICAgKFdlYkNvcmU6OlRleHR1cmVNYXBwZXJTaGFkZXJQcm9ncmFt
UmVjdE9wYWNpdHlBbmRNYXNrOjpUZXh0dXJlTWFwcGVyU2hhZGVyUHJvZ3JhbVJlY3RPcGFjaXR5
QW5kTWFzayk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0dXJlTWFwcGVyU2hhZGVyUHJvZ3JhbUFu
dGlhbGlhc2luZ05vTWFzazo6VGV4dHVyZU1hcHBlclNoYWRlclByb2dyYW1BbnRpYWxpYXNpbmdO
b01hc2spOgorICAgICAgICAoV2ViQ29yZTo6VGV4dHVyZU1hcHBlclNoYWRlck1hbmFnZXI6OlRl
eHR1cmVNYXBwZXJTaGFkZXJNYW5hZ2VyKToKKyAgICAgICAgKFdlYkNvcmU6OlN0YW5kYXJkRmls
dGVyUHJvZ3JhbTo6flN0YW5kYXJkRmlsdGVyUHJvZ3JhbSk6CisgICAgICAgIChXZWJDb3JlOjpT
dGFuZGFyZEZpbHRlclByb2dyYW06OlN0YW5kYXJkRmlsdGVyUHJvZ3JhbSk6CisgICAgICAgIChX
ZWJDb3JlOjpTdGFuZGFyZEZpbHRlclByb2dyYW06OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3Jl
OjpTdGFuZGFyZEZpbHRlclByb2dyYW06OnByZXBhcmUpOgorICAgICAgICAoV2ViQ29yZTo6VGV4
dHVyZU1hcHBlclNoYWRlck1hbmFnZXI6OmdldFNoYWRlckZvckZpbHRlcik6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJTaGFkZXJNYW5hZ2VyLmg6Cisg
ICAgICAgIChXZWJDb3JlOjpUZXh0dXJlTWFwcGVyU2hhZGVyUHJvZ3JhbTo6aWQpOgorICAgICAg
ICAoV2ViQ29yZTo6VGV4dHVyZU1hcHBlclNoYWRlclByb2dyYW06OnZlcnRleEF0dHJpYik6Cisg
ICAgICAgIChUZXh0dXJlTWFwcGVyU2hhZGVyUHJvZ3JhbSk6CisgICAgICAgIChXZWJDb3JlOjpU
ZXh0dXJlTWFwcGVyU2hhZGVyUHJvZ3JhbTo6bWF0cml4TG9jYXRpb24pOgorICAgICAgICAoV2Vi
Q29yZTo6VGV4dHVyZU1hcHBlclNoYWRlclByb2dyYW06OmZsaXBMb2NhdGlvbik6CisgICAgICAg
IChXZWJDb3JlOjpUZXh0dXJlTWFwcGVyU2hhZGVyUHJvZ3JhbTo6dGV4dHVyZVNpemVMb2NhdGlv
bik6CisgICAgICAgIChXZWJDb3JlOjpUZXh0dXJlTWFwcGVyU2hhZGVyUHJvZ3JhbTo6c291cmNl
VGV4dHVyZUxvY2F0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlRleHR1cmVNYXBwZXJTaGFkZXJQ
cm9ncmFtOjptYXNrVGV4dHVyZUxvY2F0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlRleHR1cmVN
YXBwZXJTaGFkZXJQcm9ncmFtOjpvcGFjaXR5TG9jYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6
VGV4dHVyZU1hcHBlclNoYWRlclByb2dyYW06OmlzVmFsaWRVbmlmb3JtTG9jYXRpb24pOgorICAg
ICAgICAoU3RhbmRhcmRGaWx0ZXJQcm9ncmFtKToKKyAgICAgICAgKFdlYkNvcmU6OlN0YW5kYXJk
RmlsdGVyUHJvZ3JhbTo6dmVydGV4QXR0cmliKToKKyAgICAgICAgKFdlYkNvcmU6OlN0YW5kYXJk
RmlsdGVyUHJvZ3JhbTo6dGV4Q29vcmRBdHRyaWIpOgorICAgICAgICAoV2ViQ29yZTo6U3RhbmRh
cmRGaWx0ZXJQcm9ncmFtOjp0ZXh0dXJlVW5pZm9ybSk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0
dXJlTWFwcGVyU2hhZGVyUHJvZ3JhbVNpbXBsZTo6Y3JlYXRlKToKKyAgICAgICAgKFRleHR1cmVN
YXBwZXJTaGFkZXJQcm9ncmFtU2ltcGxlKToKKyAgICAgICAgKFdlYkNvcmU6OlRleHR1cmVNYXBw
ZXJTaGFkZXJQcm9ncmFtUmVjdFNpbXBsZTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlRl
eHR1cmVNYXBwZXJTaGFkZXJQcm9ncmFtT3BhY2l0eUFuZE1hc2s6OmNyZWF0ZSk6CisgICAgICAg
IChXZWJDb3JlOjpUZXh0dXJlTWFwcGVyU2hhZGVyUHJvZ3JhbVJlY3RPcGFjaXR5QW5kTWFzazo6
Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlRleHR1cmVNYXBwZXJTaGFkZXJQcm9ncmFtU29s
aWRDb2xvcjo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlRleHR1cmVNYXBwZXJTaGFkZXJQ
cm9ncmFtU29saWRDb2xvcjo6Y29sb3JMb2NhdGlvbik6CisgICAgICAgIChUZXh0dXJlTWFwcGVy
U2hhZGVyUHJvZ3JhbVNvbGlkQ29sb3IpOgorICAgICAgICAoV2ViQ29yZTo6VGV4dHVyZU1hcHBl
clNoYWRlclByb2dyYW1BbnRpYWxpYXNpbmdOb01hc2s6OmNyZWF0ZSk6CisgICAgICAgIChXZWJD
b3JlOjpUZXh0dXJlTWFwcGVyU2hhZGVyUHJvZ3JhbUFudGlhbGlhc2luZ05vTWFzazo6ZXhwYW5k
ZWRRdWFkVmVydGljZXNJblRleHR1cmVDb29yZGluYXRlc0xvY2F0aW9uKToKKyAgICAgICAgKFdl
YkNvcmU6OlRleHR1cmVNYXBwZXJTaGFkZXJQcm9ncmFtQW50aWFsaWFzaW5nTm9NYXNrOjpleHBh
bmRlZFF1YWRFZGdlc0luU2NyZWVuU3BhY2VMb2NhdGlvbik6CisgICAgICAgIChUZXh0dXJlTWFw
cGVyU2hhZGVyUHJvZ3JhbUFudGlhbGlhc2luZ05vTWFzayk6CisKIDIwMTItMDgtMjcgIENocmlz
dG9waGUgRHVtZXogIDxjaHJpc3RvcGhlLmR1bWV6QGludGVsLmNvbT4KIAogICAgICAgICBSZWdy
ZXNzaW9uKHIxMjY3MjEpOiBiaW5kaW5ncy10ZXN0cyByZXN1bHRzIG5lZWQgdG8gYmUgdXBkYXRl
ZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3ND
b250ZXh0M0QuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29u
dGV4dDNELmgKaW5kZXggYjJlNmE0ZGEwOTM0OGE2NjdmMmI4MjNlYzM4ZDQzNDZkYzQzMzM5OC4u
ZWZkODc2OTRlNTY4ZGJmZjY0MmVkMDEyZjUxNTg2MDg0YTIzMzRiNyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0M0QuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQzRC5oCkBAIC0y
NTAsNyArMjUwLDYgQEAgcHVibGljOgogICAgICAgICBBTFBIQSA9IDB4MTkwNiwKICAgICAgICAg
UkdCID0gMHgxOTA3LAogICAgICAgICBSR0JBID0gMHgxOTA4LAotICAgICAgICBCR1JBID0gMHg4
MEUxLAogICAgICAgICBMVU1JTkFOQ0UgPSAweDE5MDksCiAgICAgICAgIExVTUlOQU5DRV9BTFBI
QSA9IDB4MTkwQSwKICAgICAgICAgVU5TSUdORURfU0hPUlRfNF80XzRfNCA9IDB4ODAzMywKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJl
TWFwcGVyR0wuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1Rl
eHR1cmVNYXBwZXJHTC5jcHAKaW5kZXggOGIxOGQ0MjJiOTJlZjhkZDAxMzkwODdjZmI4N2QzNTIz
OTk2MTEyNC4uYTIyZTcyMGUxNjUwYTBmM2JjZjgxZTRmM2NkZmY3ODE3MGQ4YWFkMCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBw
ZXJHTC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1Rl
eHR1cmVNYXBwZXJHTC5jcHAKQEAgLTM4LDYgKzM4LDEzIEBACiAKICNpZiBQTEFURk9STShRVCkK
ICNpbmNsdWRlICJOYXRpdmVJbWFnZVF0LmgiCisjaW5jbHVkZSA8UU9wZW5HTENvbnRleHQ+Cisj
ZWxpZiBPUyhXSU5ET1dTKQorI2luY2x1ZGUgPHdpbmRvd3MuaD4KKyNlbGlmIE9TKE1BQ19PU19Y
KQorI2luY2x1ZGUgPEFHTC9hZ2wuaD4KKyNlbGlmIGRlZmluZWQoWFBfVU5JWCkKKyNpbmNsdWRl
IDxHTC9nbHguaD4KICNlbmRpZgogCiAjaWYgVVNFKENBSVJPKQpAQCAtNDYsNDMgKzUzLDcwIEBA
CiAjaW5jbHVkZSA8Y2Fpcm8uaD4KICNlbmRpZgogCi0jaWYgIVVTRShURVhNQVBfT1BFTkdMX0VT
XzIpCi0vLyBGSVhNRTogTW92ZSB0byBFeHRlbnNpb25zM0QuaC4KLSNkZWZpbmUgR0xfVEVYVFVS
RV9SRUNUQU5HTEVfQVJCIDB4ODRGNQotI2RlZmluZSBHTF9VTlNJR05FRF9JTlRfOF84XzhfOF9S
RVYgMHg4MzY3Ci0jZGVmaW5lIEdMX1VOUEFDS19ST1dfTEVOR1RIIDB4MENGMgotI2RlZmluZSBH
TF9VTlBBQ0tfU0tJUF9QSVhFTFMgMHgwQ0Y0Ci0jZGVmaW5lIEdMX1VOUEFDS19TS0lQX1JPV1Mg
MHgwQ0YzCi0jZW5kaWYKLQorI2RlZmluZSBHTF9DTUQoLi4uKSBkbyB7IF9fVkFfQVJHU19fOyBB
U1NFUlRfQVJHKF9fVkFfQVJHU19fLCAhZ2xHZXRFcnJvcigpKTsgfSB3aGlsZSAoMCkKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIHN0cnVjdCBUZXh0dXJlTWFwcGVyR0xEYXRhIHsKICAgICBzdHJ1Y3Qg
U2hhcmVkR0xEYXRhIDogcHVibGljIFJlZkNvdW50ZWQ8U2hhcmVkR0xEYXRhPiB7CisjaWYgUExB
VEZPUk0oUVQpCisgICAgICAgIHR5cGVkZWYgUU9wZW5HTENvbnRleHQqIEdMQ29udGV4dDsKKyAg
ICAgICAgc3RhdGljIEdMQ29udGV4dCBnZXRDdXJyZW50R0xDb250ZXh0KCkKKyAgICAgICAgewor
ICAgICAgICAgICAgcmV0dXJuIFFPcGVuR0xDb250ZXh0OjpjdXJyZW50Q29udGV4dCgpOworICAg
ICAgICB9CisjZWxpZiBPUyhXSU5ET1dTKQorICAgICAgICB0eXBlZGVmIEhHTFJDIEdMQ29udGV4
dDsKKyAgICAgICAgc3RhdGljIEdMQ29udGV4dCBnZXRDdXJyZW50R0xDb250ZXh0KCkKKyAgICAg
ICAgeworICAgICAgICAgICAgcmV0dXJuIHdnbEdldEN1cnJlbnRDb250ZXh0KCk7CisgICAgICAg
IH0KKyNlbGlmIE9TKE1BQ19PU19YKQorICAgICAgICB0eXBlZGVmIEFHTENvbnRleHQgR0xDb250
ZXh0OworICAgICAgICBzdGF0aWMgR0xDb250ZXh0IGdldEN1cnJlbnRHTENvbnRleHQoKQorICAg
ICAgICB7CisgICAgICAgICAgICByZXR1cm4gYWdsR2V0Q3VycmVudENvbnRleHQoKTsKKyAgICAg
ICAgfQorI2VsaWYgZGVmaW5lZChYUF9VTklYKQorICAgICAgICB0eXBlZGVmIEdMWENvbnRleHQg
R0xDb250ZXh0OworICAgICAgICBzdGF0aWMgR0xDb250ZXh0IGdldEN1cnJlbnRHTENvbnRleHQo
KQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gZ2xYR2V0Q3VycmVudENvbnRleHQoKTsK
KyAgICAgICAgfQorI2Vsc2UKKyAgICAgICAgLy8gRGVmYXVsdCBpbXBsZW1lbnRhdGlvbiBmb3Ig
dW5rbm93biBvcGVuZ2wuCisgICAgICAgIC8vIFJldHVybnMgYWx3YXlzIGluY3JlYXNpbmcgbnVt
YmVyIGFuZCBkaXNhYmxlcyBHTCBjb250ZXh0IGRhdGEgc2hhcmluZy4KKyAgICAgICAgdHlwZWRl
ZiB1bnNpZ25lZCBpbnQgR0xDb250ZXh0OworICAgICAgICBzdGF0aWMgR0xDb250ZXh0IGdldEN1
cnJlbnRHTENvbnRleHQoKQorICAgICAgICB7CisgICAgICAgICAgICBzdGF0aWMgR0xDb250ZXh0
IGR1bW15Q29udGV4dENvdW50ZXIgPSAwOworICAgICAgICAgICAgcmV0dXJuICsrZHVtbXlDb250
ZXh0Q291bnRlcjsKKyAgICAgICAgfQorCisjZW5kaWYKIAotICAgICAgICB0eXBlZGVmIEhhc2hN
YXA8UGxhdGZvcm1HcmFwaGljc0NvbnRleHQzRCwgU2hhcmVkR0xEYXRhKj4gR0xDb250ZXh0RGF0
YU1hcDsKKyAgICAgICAgdHlwZWRlZiBIYXNoTWFwPEdMQ29udGV4dCwgU2hhcmVkR0xEYXRhKj4g
R0xDb250ZXh0RGF0YU1hcDsKICAgICAgICAgc3RhdGljIEdMQ29udGV4dERhdGFNYXAmIGdsQ29u
dGV4dERhdGFNYXAoKQogICAgICAgICB7CiAgICAgICAgICAgICBzdGF0aWMgR0xDb250ZXh0RGF0
YU1hcCBtYXA7CiAgICAgICAgICAgICByZXR1cm4gbWFwOwogICAgICAgICB9CiAKLSAgICAgICAg
c3RhdGljIFBhc3NSZWZQdHI8U2hhcmVkR0xEYXRhPiBjdXJyZW50U2hhcmVkR0xEYXRhKEdyYXBo
aWNzQ29udGV4dDNEKiBjb250ZXh0KQorICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxTaGFyZWRH
TERhdGE+IGN1cnJlbnRTaGFyZWRHTERhdGEoKQogICAgICAgICB7Ci0gICAgICAgICAgICBHTENv
bnRleHREYXRhTWFwOjppdGVyYXRvciBpdCA9IGdsQ29udGV4dERhdGFNYXAoKS5maW5kKGNvbnRl
eHQtPnBsYXRmb3JtR3JhcGhpY3NDb250ZXh0M0QoKSk7CisgICAgICAgICAgICBHTENvbnRleHQg
Y3VycmVudEdMQ29uZXh0ID0gZ2V0Q3VycmVudEdMQ29udGV4dCgpOworICAgICAgICAgICAgR0xD
b250ZXh0RGF0YU1hcDo6aXRlcmF0b3IgaXQgPSBnbENvbnRleHREYXRhTWFwKCkuZmluZChjdXJy
ZW50R0xDb25leHQpOwogICAgICAgICAgICAgaWYgKGl0ICE9IGdsQ29udGV4dERhdGFNYXAoKS5l
bmQoKSkKICAgICAgICAgICAgICAgICByZXR1cm4gaXQtPnNlY29uZDsKIAotICAgICAgICAgICAg
cmV0dXJuIGFkb3B0UmVmKG5ldyBTaGFyZWRHTERhdGEoY29udGV4dCkpOworICAgICAgICAgICAg
cmV0dXJuIGFkb3B0UmVmKG5ldyBTaGFyZWRHTERhdGEoZ2V0Q3VycmVudEdMQ29udGV4dCgpKSk7
CiAgICAgICAgIH0KIAogCiAKICAgICAgICAgVGV4dHVyZU1hcHBlclNoYWRlck1hbmFnZXIgdGV4
dHVyZU1hcHBlclNoYWRlck1hbmFnZXI7CiAKLSAgICAgICAgU2hhcmVkR0xEYXRhKEdyYXBoaWNz
Q29udGV4dDNEKiBjb250ZXh0KQotICAgICAgICAgICAgOiB0ZXh0dXJlTWFwcGVyU2hhZGVyTWFu
YWdlcihjb250ZXh0KQorICAgICAgICBTaGFyZWRHTERhdGEoR0xDb250ZXh0IGdsQ29udGV4dCkK
ICAgICAgICAgewotICAgICAgICAgICAgZ2xDb250ZXh0RGF0YU1hcCgpLmFkZChjb250ZXh0LT5w
bGF0Zm9ybUdyYXBoaWNzQ29udGV4dDNEKCksIHRoaXMpOworICAgICAgICAgICAgZ2xDb250ZXh0
RGF0YU1hcCgpLmFkZChnbENvbnRleHQsIHRoaXMpOwogICAgICAgICB9CiAKICAgICAgICAgflNo
YXJlZEdMRGF0YSgpCkBAIC0xMDEsMzIgKzEzNSwzMCBAQCBzdHJ1Y3QgVGV4dHVyZU1hcHBlckdM
RGF0YSB7CiAKICAgICBTaGFyZWRHTERhdGEmIHNoYXJlZEdMRGF0YSgpIGNvbnN0CiAgICAgewot
ICAgICAgICByZXR1cm4gKm1fc2hhcmVkR0xEYXRhOworICAgICAgICByZXR1cm4gKihtX3NoYXJl
ZEdMRGF0YS5nZXQoKSk7CiAgICAgfQogCiAgICAgdm9pZCBpbml0aWFsaXplU3RlbmNpbCgpOwog
Ci0gICAgVGV4dHVyZU1hcHBlckdMRGF0YShHcmFwaGljc0NvbnRleHQzRCogY29udGV4dCkKLSAg
ICAgICAgOiBjb250ZXh0KGNvbnRleHQpCi0gICAgICAgICwgUGFpbnRGbGFncygwKQorICAgIFRl
eHR1cmVNYXBwZXJHTERhdGEoKQorICAgICAgICA6IFBhaW50RmxhZ3MoMCkKICAgICAgICAgLCBw
cmV2aW91c1Byb2dyYW0oMCkKICAgICAgICAgLCB0YXJnZXRGcmFtZUJ1ZmZlcigwKQogICAgICAg
ICAsIGRpZE1vZGlmeVN0ZW5jaWwoZmFsc2UpCiAgICAgICAgICwgcHJldmlvdXNTY2lzc29yU3Rh
dGUoMCkKICAgICAgICAgLCBwcmV2aW91c0RlcHRoU3RhdGUoMCkKLSAgICAgICAgLCBtX3NoYXJl
ZEdMRGF0YShUZXh0dXJlTWFwcGVyR0xEYXRhOjpTaGFyZWRHTERhdGE6OmN1cnJlbnRTaGFyZWRH
TERhdGEodGhpcy0+Y29udGV4dCkpCisgICAgICAgICwgbV9zaGFyZWRHTERhdGEoVGV4dHVyZU1h
cHBlckdMRGF0YTo6U2hhcmVkR0xEYXRhOjpjdXJyZW50U2hhcmVkR0xEYXRhKCkpCiAgICAgeyB9
CiAKLSAgICBHcmFwaGljc0NvbnRleHQzRCogY29udGV4dDsKICAgICBUcmFuc2Zvcm1hdGlvbk1h
dHJpeCBwcm9qZWN0aW9uTWF0cml4OwogICAgIFRleHR1cmVNYXBwZXI6OlBhaW50RmxhZ3MgUGFp
bnRGbGFnczsKLSAgICBHQzNEaW50IHByZXZpb3VzUHJvZ3JhbTsKLSAgICBHQzNEaW50IHRhcmdl
dEZyYW1lQnVmZmVyOworICAgIEdMaW50IHByZXZpb3VzUHJvZ3JhbTsKKyAgICBHTGludCB0YXJn
ZXRGcmFtZUJ1ZmZlcjsKICAgICBib29sIGRpZE1vZGlmeVN0ZW5jaWw7Ci0gICAgR0MzRGludCBw
cmV2aW91c1NjaXNzb3JTdGF0ZTsKLSAgICBHQzNEaW50IHByZXZpb3VzRGVwdGhTdGF0ZTsKLSAg
ICBHQzNEaW50IHZpZXdwb3J0WzRdOwotICAgIEdDM0RpbnQgcHJldmlvdXNTY2lzc29yWzRdOwor
ICAgIEdMaW50IHByZXZpb3VzU2Npc3NvclN0YXRlOworICAgIEdMaW50IHByZXZpb3VzRGVwdGhT
dGF0ZTsKKyAgICBHTGludCB2aWV3cG9ydFs0XTsKKyAgICBHTGludCBwcmV2aW91c1NjaXNzb3Jb
NF07CiAgICAgUmVmUHRyPFNoYXJlZEdMRGF0YT4gbV9zaGFyZWRHTERhdGE7CiAgICAgUmVmUHRy
PEJpdG1hcFRleHR1cmU+IGN1cnJlbnRTdXJmYWNlOwogfTsKQEAgLTE1MCwyNSArMTgyLDI1IEBA
IHZvaWQgVGV4dHVyZU1hcHBlckdMOjpDbGlwU3RhY2s6OnBvcCgpCiAgICAgY2xpcFN0YWNrLnJl
bW92ZUxhc3QoKTsKIH0KIAotc3RhdGljIHZvaWQgc2Npc3NvckNsaXAoR3JhcGhpY3NDb250ZXh0
M0QqIGNvbnRleHQsIGNvbnN0IEludFJlY3QmIHJlY3QpCitzdGF0aWMgdm9pZCBzY2lzc29yQ2xp
cChjb25zdCBJbnRSZWN0JiByZWN0KQogewogICAgIGlmIChyZWN0LmlzRW1wdHkoKSkKICAgICAg
ICAgcmV0dXJuOwogCi0gICAgR0MzRGludCB2aWV3cG9ydFs0XTsKLSAgICBjb250ZXh0LT5nZXRJ
bnRlZ2VydihHcmFwaGljc0NvbnRleHQzRDo6VklFV1BPUlQsIHZpZXdwb3J0KTsKLSAgICBjb250
ZXh0LT5zY2lzc29yKHJlY3QueCgpLCB2aWV3cG9ydFszXSAtIHJlY3QubWF4WSgpLCByZWN0Lndp
ZHRoKCksIHJlY3QuaGVpZ2h0KCkpOworICAgIEdMaW50IHZpZXdwb3J0WzRdOworICAgIEdMX0NN
RChnbEdldEludGVnZXJ2KEdMX1ZJRVdQT1JULCB2aWV3cG9ydCkpOworICAgIEdMX0NNRChnbFNj
aXNzb3IocmVjdC54KCksIHZpZXdwb3J0WzNdIC0gcmVjdC5tYXhZKCksIHJlY3Qud2lkdGgoKSwg
cmVjdC5oZWlnaHQoKSkpOwogfQogCi12b2lkIFRleHR1cmVNYXBwZXJHTDo6Q2xpcFN0YWNrOjph
cHBseShHcmFwaGljc0NvbnRleHQzRCogY29udGV4dCkKK3ZvaWQgVGV4dHVyZU1hcHBlckdMOjpD
bGlwU3RhY2s6OmFwcGx5KCkKIHsKLSAgICBzY2lzc29yQ2xpcChjb250ZXh0LCBjbGlwU3RhdGUu
c2Npc3NvckJveCk7Ci0gICAgY29udGV4dC0+c3RlbmNpbE9wKEdyYXBoaWNzQ29udGV4dDNEOjpL
RUVQLCBHcmFwaGljc0NvbnRleHQzRDo6S0VFUCwgR3JhcGhpY3NDb250ZXh0M0Q6OktFRVApOwot
ICAgIGNvbnRleHQtPnN0ZW5jaWxGdW5jKEdyYXBoaWNzQ29udGV4dDNEOjpFUVVBTCwgY2xpcFN0
YXRlLnN0ZW5jaWxJbmRleCAtIDEsIGNsaXBTdGF0ZS5zdGVuY2lsSW5kZXggLSAxKTsKKyAgICBz
Y2lzc29yQ2xpcChjbGlwU3RhdGUuc2Npc3NvckJveCk7CisgICAgR0xfQ01EKGdsU3RlbmNpbE9w
KEdMX0tFRVAsIEdMX0tFRVAsIEdMX0tFRVApKTsKKyAgICBHTF9DTUQoZ2xTdGVuY2lsRnVuYyhH
TF9FUVVBTCwgY2xpcFN0YXRlLnN0ZW5jaWxJbmRleCAtIDEsIGNsaXBTdGF0ZS5zdGVuY2lsSW5k
ZXggLSAxKSk7CiAgICAgaWYgKGNsaXBTdGF0ZS5zdGVuY2lsSW5kZXggPT0gMSkKLSAgICAgICAg
Y29udGV4dC0+ZGlzYWJsZShHcmFwaGljc0NvbnRleHQzRDo6U1RFTkNJTF9URVNUKTsKKyAgICAg
ICAgR0xfQ01EKGdsRGlzYWJsZShHTF9TVEVOQ0lMX1RFU1QpKTsKICAgICBlbHNlCi0gICAgICAg
IGNvbnRleHQtPmVuYWJsZShHcmFwaGljc0NvbnRleHQzRDo6U1RFTkNJTF9URVNUKTsKKyAgICAg
ICAgR0xfQ01EKGdsRW5hYmxlKEdMX1NURU5DSUxfVEVTVCkpOwogfQogCiAKQEAgLTE4Miw4ICsy
MTQsOCBAQCB2b2lkIFRleHR1cmVNYXBwZXJHTERhdGE6OmluaXRpYWxpemVTdGVuY2lsKCkKICAg
ICBpZiAoZGlkTW9kaWZ5U3RlbmNpbCkKICAgICAgICAgcmV0dXJuOwogCi0gICAgY29udGV4dC0+
Y2xlYXJTdGVuY2lsKDApOwotICAgIGNvbnRleHQtPmNsZWFyKEdyYXBoaWNzQ29udGV4dDNEOjpT
VEVOQ0lMX0JVRkZFUl9CSVQpOworICAgIEdMX0NNRChnbENsZWFyU3RlbmNpbCgwKSk7CisgICAg
R0xfQ01EKGdsQ2xlYXIoR0xfU1RFTkNJTF9CVUZGRVJfQklUKSk7CiAgICAgZGlkTW9kaWZ5U3Rl
bmNpbCA9IHRydWU7CiB9CiAKQEAgLTE5NywxMSArMjI5LDEwIEBAIEJpdG1hcFRleHR1cmVHTCog
dG9CaXRtYXBUZXh0dXJlR0woQml0bWFwVGV4dHVyZSogdGV4dHVyZSkKIAogVGV4dHVyZU1hcHBl
ckdMOjpUZXh0dXJlTWFwcGVyR0woKQogICAgIDogVGV4dHVyZU1hcHBlcihPcGVuR0xNb2RlKQor
ICAgICwgbV9kYXRhKG5ldyBUZXh0dXJlTWFwcGVyR0xEYXRhKQogICAgICwgbV9jb250ZXh0KDAp
CiAgICAgLCBtX2VuYWJsZUVkZ2VEaXN0YW5jZUFudGlhbGlhc2luZyhmYWxzZSkKIHsKLSAgICBt
X2NvbnRleHQzRCA9IEdyYXBoaWNzQ29udGV4dDNEOjpjcmVhdGVGb3JDdXJyZW50R0xDb250ZXh0
KCk7Ci0gICAgbV9kYXRhID0gbmV3IFRleHR1cmVNYXBwZXJHTERhdGEobV9jb250ZXh0M0QuZ2V0
KCkpOwogfQogCiBUZXh0dXJlTWFwcGVyR0w6OkNsaXBTdGFjayYgVGV4dHVyZU1hcHBlckdMOjpj
bGlwU3RhY2soKQpAQCAtMjExLDkgKzI0MiwxNSBAQCBUZXh0dXJlTWFwcGVyR0w6OkNsaXBTdGFj
ayYgVGV4dHVyZU1hcHBlckdMOjpjbGlwU3RhY2soKQogCiB2b2lkIFRleHR1cmVNYXBwZXJHTDo6
YmVnaW5QYWludGluZyhQYWludEZsYWdzIGZsYWdzKQogewotICAgIG1fY29udGV4dDNELT5nZXRJ
bnRlZ2VydihHcmFwaGljc0NvbnRleHQzRDo6Q1VSUkVOVF9QUk9HUkFNLCAmZGF0YSgpLnByZXZp
b3VzUHJvZ3JhbSk7Ci0gICAgZGF0YSgpLnByZXZpb3VzU2Npc3NvclN0YXRlID0gbV9jb250ZXh0
M0QtPmlzRW5hYmxlZChHcmFwaGljc0NvbnRleHQzRDo6U0NJU1NPUl9URVNUKTsKLSAgICBkYXRh
KCkucHJldmlvdXNEZXB0aFN0YXRlID0gbV9jb250ZXh0M0QtPmlzRW5hYmxlZChHcmFwaGljc0Nv
bnRleHQzRDo6REVQVEhfVEVTVCk7CisgICAgLy8gTWFrZSBzdXJlIHRoYXQgbm8gR0wgZXJyb3Ig
Y29kZSBzdGF5cyBmcm9tIHByZXZpb3VzIG9wZXJhdGlvbnMuCisgICAgZ2xHZXRFcnJvcigpOwor
CisgICAgaWYgKCFpbml0aWFsaXplT3BlbkdMU2hpbXMoKSkKKyAgICAgICAgcmV0dXJuOworCisg
ICAgR0xfQ01EKGdsR2V0SW50ZWdlcnYoR0xfQ1VSUkVOVF9QUk9HUkFNLCAmZGF0YSgpLnByZXZp
b3VzUHJvZ3JhbSkpOworICAgIGRhdGEoKS5wcmV2aW91c1NjaXNzb3JTdGF0ZSA9IGdsSXNFbmFi
bGVkKEdMX1NDSVNTT1JfVEVTVCk7CisgICAgZGF0YSgpLnByZXZpb3VzRGVwdGhTdGF0ZSA9IGds
SXNFbmFibGVkKEdMX0RFUFRIX1RFU1QpOwogI2lmIFBMQVRGT1JNKFFUKQogICAgIGlmIChtX2Nv
bnRleHQpIHsKICAgICAgICAgUVBhaW50ZXIqIHBhaW50ZXIgPSBtX2NvbnRleHQtPnBsYXRmb3Jt
Q29udGV4dCgpOwpAQCAtMjIxLDE0ICsyNTgsMTQgQEAgdm9pZCBUZXh0dXJlTWFwcGVyR0w6OmJl
Z2luUGFpbnRpbmcoUGFpbnRGbGFncyBmbGFncykKICAgICAgICAgcGFpbnRlci0+YmVnaW5OYXRp
dmVQYWludGluZygpOwogICAgIH0KICNlbmRpZgotICAgIG1fY29udGV4dDNELT5kaXNhYmxlKEdy
YXBoaWNzQ29udGV4dDNEOjpERVBUSF9URVNUKTsKLSAgICBtX2NvbnRleHQzRC0+ZW5hYmxlKEdy
YXBoaWNzQ29udGV4dDNEOjpTQ0lTU09SX1RFU1QpOworICAgIGdsRGlzYWJsZShHTF9ERVBUSF9U
RVNUKTsKKyAgICBnbEVuYWJsZShHTF9TQ0lTU09SX1RFU1QpOwogICAgIGRhdGEoKS5kaWRNb2Rp
ZnlTdGVuY2lsID0gZmFsc2U7Ci0gICAgbV9jb250ZXh0M0QtPmRlcHRoTWFzaygwKTsKLSAgICBt
X2NvbnRleHQzRC0+Z2V0SW50ZWdlcnYoR3JhcGhpY3NDb250ZXh0M0Q6OlZJRVdQT1JULCBkYXRh
KCkudmlld3BvcnQpOwotICAgIG1fY29udGV4dDNELT5nZXRJbnRlZ2VydihHcmFwaGljc0NvbnRl
eHQzRDo6U0NJU1NPUl9CT1gsIGRhdGEoKS5wcmV2aW91c1NjaXNzb3IpOworICAgIEdMX0NNRChn
bERlcHRoTWFzaygwKSk7CisgICAgR0xfQ01EKGdsR2V0SW50ZWdlcnYoR0xfVklFV1BPUlQsIGRh
dGEoKS52aWV3cG9ydCkpOworICAgIEdMX0NNRChnbEdldEludGVnZXJ2KEdMX1NDSVNTT1JfQk9Y
LCBkYXRhKCkucHJldmlvdXNTY2lzc29yKSk7CiAgICAgbV9jbGlwU3RhY2suaW5pdChJbnRSZWN0
KDAsIDAsIGRhdGEoKS52aWV3cG9ydFsyXSwgZGF0YSgpLnZpZXdwb3J0WzNdKSk7Ci0gICAgbV9j
b250ZXh0M0QtPmdldEludGVnZXJ2KEdyYXBoaWNzQ29udGV4dDNEOjpGUkFNRUJVRkZFUl9CSU5E
SU5HLCAmZGF0YSgpLnRhcmdldEZyYW1lQnVmZmVyKTsKKyAgICBHTF9DTUQoZ2xHZXRJbnRlZ2Vy
dihHTF9GUkFNRUJVRkZFUl9CSU5ESU5HLCAmZGF0YSgpLnRhcmdldEZyYW1lQnVmZmVyKSk7CiAg
ICAgZGF0YSgpLlBhaW50RmxhZ3MgPSBmbGFnczsKICAgICBiaW5kU3VyZmFjZSgwKTsKIH0KQEAg
LTIzNiwyMiArMjczLDIyIEBAIHZvaWQgVGV4dHVyZU1hcHBlckdMOjpiZWdpblBhaW50aW5nKFBh
aW50RmxhZ3MgZmxhZ3MpCiB2b2lkIFRleHR1cmVNYXBwZXJHTDo6ZW5kUGFpbnRpbmcoKQogewog
ICAgIGlmIChkYXRhKCkuZGlkTW9kaWZ5U3RlbmNpbCkgewotICAgICAgICBtX2NvbnRleHQzRC0+
Y2xlYXJTdGVuY2lsKDEpOwotICAgICAgICBtX2NvbnRleHQzRC0+Y2xlYXIoR3JhcGhpY3NDb250
ZXh0M0Q6OlNURU5DSUxfQlVGRkVSX0JJVCk7CisgICAgICAgIGdsQ2xlYXJTdGVuY2lsKDEpOwor
ICAgICAgICBnbENsZWFyKEdMX1NURU5DSUxfQlVGRkVSX0JJVCk7CiAgICAgfQogCi0gICAgbV9j
b250ZXh0M0QtPnVzZVByb2dyYW0oZGF0YSgpLnByZXZpb3VzUHJvZ3JhbSk7CisgICAgZ2xVc2VQ
cm9ncmFtKGRhdGEoKS5wcmV2aW91c1Byb2dyYW0pOwogCi0gICAgbV9jb250ZXh0M0QtPnNjaXNz
b3IoZGF0YSgpLnByZXZpb3VzU2Npc3NvclswXSwgZGF0YSgpLnByZXZpb3VzU2Npc3NvclsxXSwg
ZGF0YSgpLnByZXZpb3VzU2Npc3NvclsyXSwgZGF0YSgpLnByZXZpb3VzU2Npc3NvclszXSk7Cisg
ICAgZ2xTY2lzc29yKGRhdGEoKS5wcmV2aW91c1NjaXNzb3JbMF0sIGRhdGEoKS5wcmV2aW91c1Nj
aXNzb3JbMV0sIGRhdGEoKS5wcmV2aW91c1NjaXNzb3JbMl0sIGRhdGEoKS5wcmV2aW91c1NjaXNz
b3JbM10pOwogICAgIGlmIChkYXRhKCkucHJldmlvdXNTY2lzc29yU3RhdGUpCi0gICAgICAgIG1f
Y29udGV4dDNELT5lbmFibGUoR3JhcGhpY3NDb250ZXh0M0Q6OlNDSVNTT1JfVEVTVCk7CisgICAg
ICAgIGdsRW5hYmxlKEdMX1NDSVNTT1JfVEVTVCk7CiAgICAgZWxzZQotICAgICAgICBtX2NvbnRl
eHQzRC0+ZGlzYWJsZShHcmFwaGljc0NvbnRleHQzRDo6U0NJU1NPUl9URVNUKTsKKyAgICAgICAg
Z2xEaXNhYmxlKEdMX1NDSVNTT1JfVEVTVCk7CiAKICAgICBpZiAoZGF0YSgpLnByZXZpb3VzRGVw
dGhTdGF0ZSkKLSAgICAgICAgbV9jb250ZXh0M0QtPmVuYWJsZShHcmFwaGljc0NvbnRleHQzRDo6
REVQVEhfVEVTVCk7CisgICAgICAgIGdsRW5hYmxlKEdMX0RFUFRIX1RFU1QpOwogICAgIGVsc2UK
LSAgICAgICAgbV9jb250ZXh0M0QtPmRpc2FibGUoR3JhcGhpY3NDb250ZXh0M0Q6OkRFUFRIX1RF
U1QpOworICAgICAgICBnbERpc2FibGUoR0xfREVQVEhfVEVTVCk7CiAKICNpZiBQTEFURk9STShR
VCkKICAgICBpZiAoIW1fY29udGV4dCkKQEAgLTI2Miw0MCArMjk5LDQwIEBAIHZvaWQgVGV4dHVy
ZU1hcHBlckdMOjplbmRQYWludGluZygpCiAjZW5kaWYKIH0KIAotdm9pZCBUZXh0dXJlTWFwcGVy
R0w6OmRyYXdRdWFkKGNvbnN0IERyYXdRdWFkJiBxdWFkVG9EcmF3LCBjb25zdCBUcmFuc2Zvcm1h
dGlvbk1hdHJpeCYgbW9kZWxWaWV3TWF0cml4LCBUZXh0dXJlTWFwcGVyU2hhZGVyUHJvZ3JhbSog
c2hhZGVyUHJvZ3JhbSwgR0MzRGVudW0gZHJhd2luZ01vZGUsIGJvb2wgbmVlZHNCbGVuZGluZykK
K3ZvaWQgVGV4dHVyZU1hcHBlckdMOjpkcmF3UXVhZChjb25zdCBEcmF3UXVhZCYgcXVhZFRvRHJh
dywgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIG1vZGVsVmlld01hdHJpeCwgVGV4dHVyZU1h
cHBlclNoYWRlclByb2dyYW0qIHNoYWRlclByb2dyYW0sIEdMZW51bSBkcmF3aW5nTW9kZSwgYm9v
bCBuZWVkc0JsZW5kaW5nKQogewotICAgIG1fY29udGV4dDNELT5lbmFibGVWZXJ0ZXhBdHRyaWJB
cnJheShzaGFkZXJQcm9ncmFtLT52ZXJ0ZXhBdHRyaWIoKSk7Ci0gICAgbV9jb250ZXh0M0QtPmJp
bmRCdWZmZXIoR3JhcGhpY3NDb250ZXh0M0Q6OkFSUkFZX0JVRkZFUiwgMCk7CisgICAgR0xfQ01E
KGdsRW5hYmxlVmVydGV4QXR0cmliQXJyYXkoc2hhZGVyUHJvZ3JhbS0+dmVydGV4QXR0cmliKCkp
KTsKKyAgICBHTF9DTUQoZ2xCaW5kQnVmZmVyKEdMX0FSUkFZX0JVRkZFUiwgMCkpOwogCi0gICAg
Y29uc3QgR0MzRGZsb2F0IHF1YWRbXSA9IHsKKyAgICBjb25zdCBHTGZsb2F0IHF1YWRbXSA9IHsK
ICAgICAgICAgcXVhZFRvRHJhdy50YXJnZXRSZWN0TWFwcGVkVG9Vbml0U3F1YXJlLnAxKCkueCgp
LCBxdWFkVG9EcmF3LnRhcmdldFJlY3RNYXBwZWRUb1VuaXRTcXVhcmUucDEoKS55KCksCiAgICAg
ICAgIHF1YWRUb0RyYXcudGFyZ2V0UmVjdE1hcHBlZFRvVW5pdFNxdWFyZS5wMigpLngoKSwgcXVh
ZFRvRHJhdy50YXJnZXRSZWN0TWFwcGVkVG9Vbml0U3F1YXJlLnAyKCkueSgpLAogICAgICAgICBx
dWFkVG9EcmF3LnRhcmdldFJlY3RNYXBwZWRUb1VuaXRTcXVhcmUucDMoKS54KCksIHF1YWRUb0Ry
YXcudGFyZ2V0UmVjdE1hcHBlZFRvVW5pdFNxdWFyZS5wMygpLnkoKSwKICAgICAgICAgcXVhZFRv
RHJhdy50YXJnZXRSZWN0TWFwcGVkVG9Vbml0U3F1YXJlLnA0KCkueCgpLCBxdWFkVG9EcmF3LnRh
cmdldFJlY3RNYXBwZWRUb1VuaXRTcXVhcmUucDQoKS55KCkKICAgICB9OwotICAgIG1fY29udGV4
dDNELT52ZXJ0ZXhBdHRyaWJQb2ludGVyKHNoYWRlclByb2dyYW0tPnZlcnRleEF0dHJpYigpLCAy
LCBHcmFwaGljc0NvbnRleHQzRDo6RkxPQVQsIGZhbHNlLCAwLCBHQzNEaW50cHRyKHF1YWQpKTsK
KyAgICBHTF9DTUQoZ2xWZXJ0ZXhBdHRyaWJQb2ludGVyKHNoYWRlclByb2dyYW0tPnZlcnRleEF0
dHJpYigpLCAyLCBHTF9GTE9BVCwgR0xfRkFMU0UsIDAsIHF1YWQpKTsKIAogICAgIFRyYW5zZm9y
bWF0aW9uTWF0cml4IG1hdHJpeCA9IFRyYW5zZm9ybWF0aW9uTWF0cml4KGRhdGEoKS5wcm9qZWN0
aW9uTWF0cml4KS5tdWx0aXBseShtb2RlbFZpZXdNYXRyaXgpLm11bHRpcGx5KFRyYW5zZm9ybWF0
aW9uTWF0cml4KAogICAgICAgICAgICAgcXVhZFRvRHJhdy5vcmlnaW5hbFRhcmdldFJlY3Qud2lk
dGgoKSwgMCwgMCwgMCwKICAgICAgICAgICAgIDAsIHF1YWRUb0RyYXcub3JpZ2luYWxUYXJnZXRS
ZWN0LmhlaWdodCgpLCAwLCAwLAogICAgICAgICAgICAgMCwgMCwgMSwgMCwKICAgICAgICAgICAg
IHF1YWRUb0RyYXcub3JpZ2luYWxUYXJnZXRSZWN0LngoKSwgcXVhZFRvRHJhdy5vcmlnaW5hbFRh
cmdldFJlY3QueSgpLCAwLCAxKSk7Ci0gICAgR0MzRGZsb2F0IG00W10gPSB7CisgICAgY29uc3Qg
R0xmbG9hdCBtNFtdID0gewogICAgICAgICBtYXRyaXgubTExKCksIG1hdHJpeC5tMTIoKSwgbWF0
cml4Lm0xMygpLCBtYXRyaXgubTE0KCksCiAgICAgICAgIG1hdHJpeC5tMjEoKSwgbWF0cml4Lm0y
MigpLCBtYXRyaXgubTIzKCksIG1hdHJpeC5tMjQoKSwKICAgICAgICAgbWF0cml4Lm0zMSgpLCBt
YXRyaXgubTMyKCksIG1hdHJpeC5tMzMoKSwgbWF0cml4Lm0zNCgpLAogICAgICAgICBtYXRyaXgu
bTQxKCksIG1hdHJpeC5tNDIoKSwgbWF0cml4Lm00MygpLCBtYXRyaXgubTQ0KCkKICAgICB9Owot
ICAgIG1fY29udGV4dDNELT51bmlmb3JtTWF0cml4NGZ2KHNoYWRlclByb2dyYW0tPm1hdHJpeExv
Y2F0aW9uKCksIDEsIGZhbHNlLCBtNCk7CisgICAgR0xfQ01EKGdsVW5pZm9ybU1hdHJpeDRmdihz
aGFkZXJQcm9ncmFtLT5tYXRyaXhMb2NhdGlvbigpLCAxLCBHTF9GQUxTRSwgbTQpKTsKIAogICAg
IGlmIChuZWVkc0JsZW5kaW5nKSB7Ci0gICAgICAgIG1fY29udGV4dDNELT5ibGVuZEZ1bmMoR3Jh
cGhpY3NDb250ZXh0M0Q6Ok9ORSwgR3JhcGhpY3NDb250ZXh0M0Q6Ok9ORV9NSU5VU19TUkNfQUxQ
SEEpOwotICAgICAgICBtX2NvbnRleHQzRC0+ZW5hYmxlKEdyYXBoaWNzQ29udGV4dDNEOjpCTEVO
RCk7CisgICAgICAgIEdMX0NNRChnbEJsZW5kRnVuYyhHTF9PTkUsIEdMX09ORV9NSU5VU19TUkNf
QUxQSEEpKTsKKyAgICAgICAgR0xfQ01EKGdsRW5hYmxlKEdMX0JMRU5EKSk7CiAgICAgfSBlbHNl
Ci0gICAgICAgIG1fY29udGV4dDNELT5kaXNhYmxlKEdyYXBoaWNzQ29udGV4dDNEOjpCTEVORCk7
CisgICAgICAgIEdMX0NNRChnbERpc2FibGUoR0xfQkxFTkQpKTsKIAotICAgIG1fY29udGV4dDNE
LT5kcmF3QXJyYXlzKGRyYXdpbmdNb2RlLCAwLCA0KTsKLSAgICBtX2NvbnRleHQzRC0+ZGlzYWJs
ZVZlcnRleEF0dHJpYkFycmF5KHNoYWRlclByb2dyYW0tPnZlcnRleEF0dHJpYigpKTsKKyAgICBH
TF9DTUQoZ2xEcmF3QXJyYXlzKGRyYXdpbmdNb2RlLCAwLCA0KSk7CisgICAgR0xfQ01EKGdsRGlz
YWJsZVZlcnRleEF0dHJpYkFycmF5KHNoYWRlclByb2dyYW0tPnZlcnRleEF0dHJpYigpKSk7CiB9
CiAKIHZvaWQgVGV4dHVyZU1hcHBlckdMOjpkcmF3Qm9yZGVyKGNvbnN0IENvbG9yJiBjb2xvciwg
ZmxvYXQgd2lkdGgsIGNvbnN0IEZsb2F0UmVjdCYgdGFyZ2V0UmVjdCwgY29uc3QgVHJhbnNmb3Jt
YXRpb25NYXRyaXgmIG1vZGVsVmlld01hdHJpeCkKQEAgLTMwNCwxNyArMzQxLDE3IEBAIHZvaWQg
VGV4dHVyZU1hcHBlckdMOjpkcmF3Qm9yZGVyKGNvbnN0IENvbG9yJiBjb2xvciwgZmxvYXQgd2lk
dGgsIGNvbnN0IEZsb2F0UmVjCiAgICAgICAgIHJldHVybjsKIAogICAgIFJlZlB0cjxUZXh0dXJl
TWFwcGVyU2hhZGVyUHJvZ3JhbVNvbGlkQ29sb3I+IHByb2dyYW0gPSBkYXRhKCkuc2hhcmVkR0xE
YXRhKCkudGV4dHVyZU1hcHBlclNoYWRlck1hbmFnZXIuc29saWRDb2xvclByb2dyYW0oKTsKLSAg
ICBtX2NvbnRleHQzRC0+dXNlUHJvZ3JhbShwcm9ncmFtLT5pZCgpKTsKKyAgICBHTF9DTUQoZ2xV
c2VQcm9ncmFtKHByb2dyYW0tPmlkKCkpKTsKIAogICAgIGZsb2F0IGFscGhhID0gY29sb3IuYWxw
aGEoKSAvIDI1NS4wOwotICAgIG1fY29udGV4dDNELT51bmlmb3JtNGYocHJvZ3JhbS0+Y29sb3JM
b2NhdGlvbigpLAorICAgIEdMX0NNRChnbFVuaWZvcm00Zihwcm9ncmFtLT5jb2xvckxvY2F0aW9u
KCksCiAgICAgICAgICAgICAgICAgICAgICAgIChjb2xvci5yZWQoKSAvIDI1NS4wKSAqIGFscGhh
LAogICAgICAgICAgICAgICAgICAgICAgICAoY29sb3IuZ3JlZW4oKSAvIDI1NS4wKSAqIGFscGhh
LAogICAgICAgICAgICAgICAgICAgICAgICAoY29sb3IuYmx1ZSgpIC8gMjU1LjApICogYWxwaGEs
Ci0gICAgICAgICAgICAgICAgICAgICAgIGFscGhhKTsKLSAgICBtX2NvbnRleHQzRC0+bGluZVdp
ZHRoKHdpZHRoKTsKKyAgICAgICAgICAgICAgICAgICAgICAgYWxwaGEpKTsKKyAgICBHTF9DTUQo
Z2xMaW5lV2lkdGgod2lkdGgpKTsKIAotICAgIGRyYXdRdWFkKHRhcmdldFJlY3QsIG1vZGVsVmll
d01hdHJpeCwgcHJvZ3JhbS5nZXQoKSwgR3JhcGhpY3NDb250ZXh0M0Q6OkxJTkVfTE9PUCwgY29s
b3IuaGFzQWxwaGEoKSk7CisgICAgZHJhd1F1YWQodGFyZ2V0UmVjdCwgbW9kZWxWaWV3TWF0cml4
LCBwcm9ncmFtLmdldCgpLCBHTF9MSU5FX0xPT1AsIGNvbG9yLmhhc0FscGhhKCkpOwogfQogCiB2
b2lkIFRleHR1cmVNYXBwZXJHTDo6ZHJhd1JlcGFpbnRDb3VudGVyKGludCB2YWx1ZSwgaW50IHBv
aW50U2l6ZSwgY29uc3QgRmxvYXRQb2ludCYgdGFyZ2V0UG9pbnQsIGNvbnN0IFRyYW5zZm9ybWF0
aW9uTWF0cml4JiBtb2RlbFZpZXdNYXRyaXgpCkBAIC0zNjEsNyArMzk4LDcgQEAgdm9pZCBUZXh0
dXJlTWFwcGVyR0w6OmRyYXdUZXh0dXJlKGNvbnN0IEJpdG1hcFRleHR1cmUmIHRleHR1cmUsIGNv
bnN0IEZsb2F0UmVjdCYKICAgICBkcmF3VGV4dHVyZSh0ZXh0dXJlR0wuaWQoKSwgdGV4dHVyZUdM
LmlzT3BhcXVlKCkgPyAwIDogU3VwcG9ydHNCbGVuZGluZywgdGV4dHVyZUdMLnNpemUoKSwgdGFy
Z2V0UmVjdCwgbWF0cml4LCBvcGFjaXR5LCBtYXNrLCBleHBvc2VkRWRnZXMpOwogfQogCi0jaWYg
IVVTRShURVhNQVBfT1BFTkdMX0VTXzIpCisjaWYgZGVmaW5lZChHTF9BUkJfdGV4dHVyZV9yZWN0
YW5nbGUpCiB2b2lkIFRleHR1cmVNYXBwZXJHTDo6ZHJhd1RleHR1cmVSZWN0YW5nbGVBUkIodWlu
dDMyX3QgdGV4dHVyZSwgRmxhZ3MgZmxhZ3MsIGNvbnN0IEludFNpemUmIHRleHR1cmVTaXplLCBj
b25zdCBGbG9hdFJlY3QmIHRhcmdldFJlY3QsIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiBt
b2RlbFZpZXdNYXRyaXgsIGZsb2F0IG9wYWNpdHksIGNvbnN0IEJpdG1hcFRleHR1cmUqIG1hc2tU
ZXh0dXJlKQogewogICAgIFJlZlB0cjxUZXh0dXJlTWFwcGVyU2hhZGVyUHJvZ3JhbT4gcHJvZ3Jh
bTsKQEAgLTM2OSwzNiArNDA2LDM2IEBAIHZvaWQgVGV4dHVyZU1hcHBlckdMOjpkcmF3VGV4dHVy
ZVJlY3RhbmdsZUFSQih1aW50MzJfdCB0ZXh0dXJlLCBGbGFncyBmbGFncywgY29uCiAgICAgICAg
IHByb2dyYW0gPSBkYXRhKCkuc2hhcmVkR0xEYXRhKCkudGV4dHVyZU1hcHBlclNoYWRlck1hbmFn
ZXIuZ2V0U2hhZGVyUHJvZ3JhbShUZXh0dXJlTWFwcGVyU2hhZGVyTWFuYWdlcjo6UmVjdE9wYWNp
dHlBbmRNYXNrKTsKICAgICBlbHNlCiAgICAgICAgIHByb2dyYW0gPSBkYXRhKCkuc2hhcmVkR0xE
YXRhKCkudGV4dHVyZU1hcHBlclNoYWRlck1hbmFnZXIuZ2V0U2hhZGVyUHJvZ3JhbShUZXh0dXJl
TWFwcGVyU2hhZGVyTWFuYWdlcjo6UmVjdFNpbXBsZSk7Ci0gICAgbV9jb250ZXh0M0QtPnVzZVBy
b2dyYW0ocHJvZ3JhbS0+aWQoKSk7CisgICAgR0xfQ01EKGdsVXNlUHJvZ3JhbShwcm9ncmFtLT5p
ZCgpKSk7CiAKLSAgICBtX2NvbnRleHQzRC0+ZW5hYmxlVmVydGV4QXR0cmliQXJyYXkocHJvZ3Jh
bS0+dmVydGV4QXR0cmliKCkpOwotICAgIG1fY29udGV4dDNELT5hY3RpdmVUZXh0dXJlKEdyYXBo
aWNzQ29udGV4dDNEOjpURVhUVVJFMCk7Ci0gICAgbV9jb250ZXh0M0QtPmJpbmRUZXh0dXJlKEdM
X1RFWFRVUkVfUkVDVEFOR0xFX0FSQiwgdGV4dHVyZSk7Ci0gICAgbV9jb250ZXh0M0QtPnVuaWZv
cm0xaShwcm9ncmFtLT5zb3VyY2VUZXh0dXJlTG9jYXRpb24oKSwgMCk7CisgICAgR0xfQ01EKGds
RW5hYmxlVmVydGV4QXR0cmliQXJyYXkocHJvZ3JhbS0+dmVydGV4QXR0cmliKCkpKTsKKyAgICBH
TF9DTUQoZ2xBY3RpdmVUZXh0dXJlKEdMX1RFWFRVUkUwKSk7CisgICAgR0xfQ01EKGdsQmluZFRl
eHR1cmUoR0xfVEVYVFVSRV9SRUNUQU5HTEVfQVJCLCB0ZXh0dXJlKSk7CisgICAgR0xfQ01EKGds
VW5pZm9ybTFpKHByb2dyYW0tPnNvdXJjZVRleHR1cmVMb2NhdGlvbigpLCAwKSk7CiAKLSAgICBt
X2NvbnRleHQzRC0+dW5pZm9ybTFmKHByb2dyYW0tPmZsaXBMb2NhdGlvbigpLCAhIShmbGFncyAm
IFNob3VsZEZsaXBUZXh0dXJlKSk7Ci0gICAgbV9jb250ZXh0M0QtPnVuaWZvcm0yZihwcm9ncmFt
LT50ZXh0dXJlU2l6ZUxvY2F0aW9uKCksIHRleHR1cmVTaXplLndpZHRoKCksIHRleHR1cmVTaXpl
LmhlaWdodCgpKTsKKyAgICBHTF9DTUQoZ2xVbmlmb3JtMWYocHJvZ3JhbS0+ZmxpcExvY2F0aW9u
KCksICEhKGZsYWdzICYgU2hvdWxkRmxpcFRleHR1cmUpKSk7CisgICAgR0xfQ01EKGdsVW5pZm9y
bTJmKHByb2dyYW0tPnRleHR1cmVTaXplTG9jYXRpb24oKSwgdGV4dHVyZVNpemUud2lkdGgoKSwg
dGV4dHVyZVNpemUuaGVpZ2h0KCkpKTsKIAogICAgIGlmIChUZXh0dXJlTWFwcGVyU2hhZGVyUHJv
Z3JhbTo6aXNWYWxpZFVuaWZvcm1Mb2NhdGlvbihwcm9ncmFtLT5vcGFjaXR5TG9jYXRpb24oKSkp
Ci0gICAgICAgIG1fY29udGV4dDNELT51bmlmb3JtMWYocHJvZ3JhbS0+b3BhY2l0eUxvY2F0aW9u
KCksIG9wYWNpdHkpOworICAgICAgICBHTF9DTUQoZ2xVbmlmb3JtMWYocHJvZ3JhbS0+b3BhY2l0
eUxvY2F0aW9uKCksIG9wYWNpdHkpKTsKIAogICAgIGlmIChtYXNrVGV4dHVyZSAmJiBtYXNrVGV4
dHVyZS0+aXNWYWxpZCgpICYmIFRleHR1cmVNYXBwZXJTaGFkZXJQcm9ncmFtOjppc1ZhbGlkVW5p
Zm9ybUxvY2F0aW9uKHByb2dyYW0tPm1hc2tUZXh0dXJlTG9jYXRpb24oKSkpIHsKICAgICAgICAg
Y29uc3QgQml0bWFwVGV4dHVyZUdMKiBtYXNrVGV4dHVyZUdMID0gc3RhdGljX2Nhc3Q8Y29uc3Qg
Qml0bWFwVGV4dHVyZUdMKj4obWFza1RleHR1cmUpOwotICAgICAgICBtX2NvbnRleHQzRC0+YWN0
aXZlVGV4dHVyZShHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRTEpOwotICAgICAgICBtX2NvbnRl
eHQzRC0+YmluZFRleHR1cmUoR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfMkQsIG1hc2tUZXh0
dXJlR0wtPmlkKCkpOwotICAgICAgICBtX2NvbnRleHQzRC0+dW5pZm9ybTFpKHByb2dyYW0tPm1h
c2tUZXh0dXJlTG9jYXRpb24oKSwgMSk7Ci0gICAgICAgIG1fY29udGV4dDNELT5hY3RpdmVUZXh0
dXJlKEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFMCk7CisgICAgICAgIEdMX0NNRChnbEFjdGl2
ZVRleHR1cmUoR0xfVEVYVFVSRTEpKTsKKyAgICAgICAgR0xfQ01EKGdsQmluZFRleHR1cmUoR0xf
VEVYVFVSRV8yRCwgbWFza1RleHR1cmVHTC0+aWQoKSkpOworICAgICAgICBHTF9DTUQoZ2xVbmlm
b3JtMWkocHJvZ3JhbS0+bWFza1RleHR1cmVMb2NhdGlvbigpLCAxKSk7CisgICAgICAgIEdMX0NN
RChnbEFjdGl2ZVRleHR1cmUoR0xfVEVYVFVSRTApKTsKICAgICB9CiAKICAgICBib29sIG5lZWRz
QmxlbmRpbmcgPSAoZmxhZ3MgJiBTdXBwb3J0c0JsZW5kaW5nKSB8fCBvcGFjaXR5IDwgMC45OSB8
fCBtYXNrVGV4dHVyZTsKLSAgICBkcmF3UXVhZCh0YXJnZXRSZWN0LCBtb2RlbFZpZXdNYXRyaXgs
IHByb2dyYW0uZ2V0KCksIEdyYXBoaWNzQ29udGV4dDNEOjpUUklBTkdMRV9GQU4sIG5lZWRzQmxl
bmRpbmcpOworICAgIGRyYXdRdWFkKHRhcmdldFJlY3QsIG1vZGVsVmlld01hdHJpeCwgcHJvZ3Jh
bS5nZXQoKSwgR0xfVFJJQU5HTEVfRkFOLCBuZWVkc0JsZW5kaW5nKTsKIH0KLSNlbmRpZiAvLyAh
VVNFKFRFWE1BUF9PUEVOR0xfRVNfMikKKyNlbmRpZiAvLyBkZWZpbmVkKEdMX0FSQl90ZXh0dXJl
X3JlY3RhbmdsZSkgCiAKIHZvaWQgVGV4dHVyZU1hcHBlckdMOjpkcmF3VGV4dHVyZSh1aW50MzJf
dCB0ZXh0dXJlLCBGbGFncyBmbGFncywgY29uc3QgSW50U2l6ZSYgLyogdGV4dHVyZVNpemUgKi8s
IGNvbnN0IEZsb2F0UmVjdCYgdGFyZ2V0UmVjdCwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgm
IG1vZGVsVmlld01hdHJpeCwgZmxvYXQgb3BhY2l0eSwgY29uc3QgQml0bWFwVGV4dHVyZSogbWFz
a1RleHR1cmUsIHVuc2lnbmVkIGV4cG9zZWRFZGdlcykKIHsKLSAgICBib29sIG5lZWRzQW50aWFs
aWFzaW5nID0gbV9lbmFibGVFZGdlRGlzdGFuY2VBbnRpYWxpYXNpbmcgJiYgIW1vZGVsVmlld01h
dHJpeC5pc0ludGVnZXJUcmFuc2xhdGlvbigpOwotICAgIGlmIChuZWVkc0FudGlhbGlhc2luZyAm
JiBkcmF3VGV4dHVyZVdpdGhBbnRpYWxpYXNpbmcodGV4dHVyZSwgZmxhZ3MsIHRhcmdldFJlY3Qs
IG1vZGVsVmlld01hdHJpeCwgb3BhY2l0eSwgbWFza1RleHR1cmUsIGV4cG9zZWRFZGdlcykpCisg
ICAgYm9vbCBuZWVkc0FudGlsaWFpbmcgPSBtX2VuYWJsZUVkZ2VEaXN0YW5jZUFudGlhbGlhc2lu
ZyAmJiAhbW9kZWxWaWV3TWF0cml4LmlzSW50ZWdlclRyYW5zbGF0aW9uKCk7CisgICAgaWYgKG5l
ZWRzQW50aWxpYWluZyAmJiBkcmF3VGV4dHVyZVdpdGhBbnRpYWxpYXNpbmcodGV4dHVyZSwgZmxh
Z3MsIHRhcmdldFJlY3QsIG1vZGVsVmlld01hdHJpeCwgb3BhY2l0eSwgbWFza1RleHR1cmUsIGV4
cG9zZWRFZGdlcykpCiAgICAgICAgcmV0dXJuOwogCiAgICAgUmVmUHRyPFRleHR1cmVNYXBwZXJT
aGFkZXJQcm9ncmFtPiBwcm9ncmFtOwpAQCAtNDA2LDE1ICs0NDMsMTUgQEAgdm9pZCBUZXh0dXJl
TWFwcGVyR0w6OmRyYXdUZXh0dXJlKHVpbnQzMl90IHRleHR1cmUsIEZsYWdzIGZsYWdzLCBjb25z
dCBJbnRTaXplJgogICAgICAgICBwcm9ncmFtID0gZGF0YSgpLnNoYXJlZEdMRGF0YSgpLnRleHR1
cmVNYXBwZXJTaGFkZXJNYW5hZ2VyLmdldFNoYWRlclByb2dyYW0oVGV4dHVyZU1hcHBlclNoYWRl
ck1hbmFnZXI6Ok9wYWNpdHlBbmRNYXNrKTsKICAgICBlbHNlCiAgICAgICAgIHByb2dyYW0gPSBk
YXRhKCkuc2hhcmVkR0xEYXRhKCkudGV4dHVyZU1hcHBlclNoYWRlck1hbmFnZXIuZ2V0U2hhZGVy
UHJvZ3JhbShUZXh0dXJlTWFwcGVyU2hhZGVyTWFuYWdlcjo6U2ltcGxlKTsKLSAgICBtX2NvbnRl
eHQzRC0+dXNlUHJvZ3JhbShwcm9ncmFtLT5pZCgpKTsKKyAgICBHTF9DTUQoZ2xVc2VQcm9ncmFt
KHByb2dyYW0tPmlkKCkpKTsKIAogICAgIGRyYXdUZXh0dXJlZFF1YWRXaXRoUHJvZ3JhbShwcm9n
cmFtLmdldCgpLCB0ZXh0dXJlLCBmbGFncywgdGFyZ2V0UmVjdCwgbW9kZWxWaWV3TWF0cml4LCBv
cGFjaXR5LCBtYXNrVGV4dHVyZSk7CiB9CiAKLXN0YXRpYyBUcmFuc2Zvcm1hdGlvbk1hdHJpeCB2
aWV3cG9ydE1hdHJpeChHcmFwaGljc0NvbnRleHQzRCogY29udGV4dDNEKQorc3RhdGljIFRyYW5z
Zm9ybWF0aW9uTWF0cml4IHZpZXdwb3J0TWF0cml4KCkKIHsKLSAgICBHQzNEaW50IHZpZXdwb3J0
WzRdOwotICAgIGNvbnRleHQzRC0+Z2V0SW50ZWdlcnYoR3JhcGhpY3NDb250ZXh0M0Q6OlZJRVdQ
T1JULCB2aWV3cG9ydCk7CisgICAgR0xpbnQgdmlld3BvcnRbNF07CisgICAgR0xfQ01EKGdsR2V0
SW50ZWdlcnYoR0xfVklFV1BPUlQsIHZpZXdwb3J0KSk7CiAKICAgICBUcmFuc2Zvcm1hdGlvbk1h
dHJpeCBtYXRyaXg7CiAgICAgbWF0cml4LnRyYW5zbGF0ZTNkKHZpZXdwb3J0WzBdLCB2aWV3cG9y
dFsxXSwgMCk7CkBAIC01MTEsNyArNTQ4LDcgQEAgYm9vbCBUZXh0dXJlTWFwcGVyR0w6OmRyYXdU
ZXh0dXJlV2l0aEFudGlhbGlhc2luZyh1aW50MzJfdCB0ZXh0dXJlLCBGbGFncyBmbGFncywKICAg
ICAvLyBhbnRpYWxpYXNpbmcuIE5vdGUgaGVyZSB0aGF0IHdlIGFyZSBhbHNvIGluY2x1ZGluZyB0
aGUgdmlld3BvcnQgbWF0cml4ICh3aGljaAogICAgIC8vIHRyYW5zbGF0ZXMgZnJvbSBub3JtYWxp
emVkIGRldmljZSBjb29yZGluYXRlcyB0byBzY3JlZW4gY29vcmRpbmF0ZXMpLCBiZWNhdXNlIHRo
ZXNlCiAgICAgLy8gdmFsdWVzIGFyZSBjb25zdW1lZCBpbiB0aGUgZnJhZ21lbnQgc2hhZGVyLCB3
aGljaCB3b3JrcyBpbiBzY3JlZW4gY29vcmRpbmF0ZXMuCi0gICAgVHJhbnNmb3JtYXRpb25NYXRy
aXggc2NyZWVuU3BhY2VUcmFuc2Zvcm0gPSB2aWV3cG9ydE1hdHJpeChtX2NvbnRleHQzRC5nZXQo
KSkubXVsdGlwbHkoVHJhbnNmb3JtYXRpb25NYXRyaXgoZGF0YSgpLnByb2plY3Rpb25NYXRyaXgp
KS5tdWx0aXBseShtb2RlbFZpZXdNYXRyaXgpLnRvMmRUcmFuc2Zvcm0oKTsKKyAgICBUcmFuc2Zv
cm1hdGlvbk1hdHJpeCBzY3JlZW5TcGFjZVRyYW5zZm9ybSA9IHZpZXdwb3J0TWF0cml4KCkubXVs
dGlwbHkoVHJhbnNmb3JtYXRpb25NYXRyaXgoZGF0YSgpLnByb2plY3Rpb25NYXRyaXgpKS5tdWx0
aXBseShtb2RlbFZpZXdNYXRyaXgpLnRvMmRUcmFuc2Zvcm0oKTsKICAgICBpZiAoIXNjcmVlblNw
YWNlVHJhbnNmb3JtLmlzSW52ZXJ0aWJsZSgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAg
RmxvYXRRdWFkIHF1YWRJblNjcmVlblNwYWNlID0gc2NyZWVuU3BhY2VUcmFuc2Zvcm0ubWFwUXVh
ZChvcmlnaW5hbFRhcmdldFJlY3QpOwpAQCAtNTM1LDggKzU3Miw4IEBAIGJvb2wgVGV4dHVyZU1h
cHBlckdMOjpkcmF3VGV4dHVyZVdpdGhBbnRpYWxpYXNpbmcodWludDMyX3QgdGV4dHVyZSwgRmxh
Z3MgZmxhZ3MsCiAgICAgcXVhZFRvRWRnZUFycmF5KGluZmxhdGVRdWFkKHF1YWRJblNjcmVlblNw
YWNlLmJvdW5kaW5nQm94KCksICBpbmZsYXRpb25EaXN0YW5jZSksIHRhcmdldFF1YWRFZGdlcyAr
IDEyKTsKIAogICAgIFJlZlB0cjxUZXh0dXJlTWFwcGVyU2hhZGVyUHJvZ3JhbUFudGlhbGlhc2lu
Z05vTWFzaz4gcHJvZ3JhbSA9IGRhdGEoKS5zaGFyZWRHTERhdGEoKS50ZXh0dXJlTWFwcGVyU2hh
ZGVyTWFuYWdlci5hbnRpYWxpYXNpbmdOb01hc2tQcm9ncmFtKCk7Ci0gICAgbV9jb250ZXh0M0Qt
PnVzZVByb2dyYW0ocHJvZ3JhbS0+aWQoKSk7Ci0gICAgbV9jb250ZXh0M0QtPnVuaWZvcm0zZnYo
cHJvZ3JhbS0+ZXhwYW5kZWRRdWFkRWRnZXNJblNjcmVlblNwYWNlTG9jYXRpb24oKSwgOCwgdGFy
Z2V0UXVhZEVkZ2VzKTsKKyAgICBHTF9DTUQoZ2xVc2VQcm9ncmFtKHByb2dyYW0tPmlkKCkpKTsK
KyAgICBHTF9DTUQoZ2xVbmlmb3JtM2Z2KHByb2dyYW0tPmV4cGFuZGVkUXVhZEVkZ2VzSW5TY3Jl
ZW5TcGFjZUxvY2F0aW9uKCksIDgsIHRhcmdldFF1YWRFZGdlcykpOwogCiAgICAgZHJhd1RleHR1
cmVkUXVhZFdpdGhQcm9ncmFtKHByb2dyYW0uZ2V0KCksIHRleHR1cmUsIGZsYWdzLCBEcmF3UXVh
ZChvcmlnaW5hbFRhcmdldFJlY3QsIGV4cGFuZGVkUXVhZEluVGV4dHVyZUNvb3JkaW5hdGVzKSwg
bW9kZWxWaWV3TWF0cml4LCBvcGFjaXR5LCAwIC8qIG1hc2tUZXh0dXJlICovKTsKICAgICByZXR1
cm4gdHJ1ZTsKQEAgLTU0NCwyNiArNTgxLDI2IEBAIGJvb2wgVGV4dHVyZU1hcHBlckdMOjpkcmF3
VGV4dHVyZVdpdGhBbnRpYWxpYXNpbmcodWludDMyX3QgdGV4dHVyZSwgRmxhZ3MgZmxhZ3MsCiAK
IHZvaWQgVGV4dHVyZU1hcHBlckdMOjpkcmF3VGV4dHVyZWRRdWFkV2l0aFByb2dyYW0oVGV4dHVy
ZU1hcHBlclNoYWRlclByb2dyYW0qIHByb2dyYW0sIHVpbnQzMl90IHRleHR1cmUsIEZsYWdzIGZs
YWdzLCBjb25zdCBEcmF3UXVhZCYgcXVhZFRvRHJhdywgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRy
aXgmIG1vZGVsVmlld01hdHJpeCwgZmxvYXQgb3BhY2l0eSwgY29uc3QgQml0bWFwVGV4dHVyZSog
bWFza1RleHR1cmUpCiB7Ci0gICAgbV9jb250ZXh0M0QtPmVuYWJsZVZlcnRleEF0dHJpYkFycmF5
KHByb2dyYW0tPnZlcnRleEF0dHJpYigpKTsKLSAgICBtX2NvbnRleHQzRC0+YWN0aXZlVGV4dHVy
ZShHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRTApOwotICAgIG1fY29udGV4dDNELT5iaW5kVGV4
dHVyZShHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV8yRCwgdGV4dHVyZSk7Ci0gICAgbV9jb250
ZXh0M0QtPnVuaWZvcm0xaShwcm9ncmFtLT5zb3VyY2VUZXh0dXJlTG9jYXRpb24oKSwgMCk7Cisg
ICAgR0xfQ01EKGdsRW5hYmxlVmVydGV4QXR0cmliQXJyYXkocHJvZ3JhbS0+dmVydGV4QXR0cmli
KCkpKTsKKyAgICBHTF9DTUQoZ2xBY3RpdmVUZXh0dXJlKEdMX1RFWFRVUkUwKSk7CisgICAgR0xf
Q01EKGdsQmluZFRleHR1cmUoR0xfVEVYVFVSRV8yRCwgdGV4dHVyZSkpOworICAgIEdMX0NNRChn
bFVuaWZvcm0xaShwcm9ncmFtLT5zb3VyY2VUZXh0dXJlTG9jYXRpb24oKSwgMCkpOwogCi0gICAg
bV9jb250ZXh0M0QtPnVuaWZvcm0xZihwcm9ncmFtLT5mbGlwTG9jYXRpb24oKSwgISEoZmxhZ3Mg
JiBTaG91bGRGbGlwVGV4dHVyZSkpOworICAgIEdMX0NNRChnbFVuaWZvcm0xZihwcm9ncmFtLT5m
bGlwTG9jYXRpb24oKSwgISEoZmxhZ3MgJiBTaG91bGRGbGlwVGV4dHVyZSkpKTsKIAogICAgIGlm
IChUZXh0dXJlTWFwcGVyU2hhZGVyUHJvZ3JhbTo6aXNWYWxpZFVuaWZvcm1Mb2NhdGlvbihwcm9n
cmFtLT5vcGFjaXR5TG9jYXRpb24oKSkpCi0gICAgICAgIG1fY29udGV4dDNELT51bmlmb3JtMWYo
cHJvZ3JhbS0+b3BhY2l0eUxvY2F0aW9uKCksIG9wYWNpdHkpOworICAgICAgICBHTF9DTUQoZ2xV
bmlmb3JtMWYocHJvZ3JhbS0+b3BhY2l0eUxvY2F0aW9uKCksIG9wYWNpdHkpKTsKIAogICAgIGlm
IChtYXNrVGV4dHVyZSAmJiBtYXNrVGV4dHVyZS0+aXNWYWxpZCgpICYmIFRleHR1cmVNYXBwZXJT
aGFkZXJQcm9ncmFtOjppc1ZhbGlkVW5pZm9ybUxvY2F0aW9uKHByb2dyYW0tPm1hc2tUZXh0dXJl
TG9jYXRpb24oKSkpIHsKICAgICAgICAgY29uc3QgQml0bWFwVGV4dHVyZUdMKiBtYXNrVGV4dHVy
ZUdMID0gc3RhdGljX2Nhc3Q8Y29uc3QgQml0bWFwVGV4dHVyZUdMKj4obWFza1RleHR1cmUpOwot
ICAgICAgICBtX2NvbnRleHQzRC0+YWN0aXZlVGV4dHVyZShHcmFwaGljc0NvbnRleHQzRDo6VEVY
VFVSRTEpOwotICAgICAgICBtX2NvbnRleHQzRC0+YmluZFRleHR1cmUoR3JhcGhpY3NDb250ZXh0
M0Q6OlRFWFRVUkVfMkQsIG1hc2tUZXh0dXJlR0wtPmlkKCkpOwotICAgICAgICBtX2NvbnRleHQz
RC0+dW5pZm9ybTFpKHByb2dyYW0tPm1hc2tUZXh0dXJlTG9jYXRpb24oKSwgMSk7Ci0gICAgICAg
IG1fY29udGV4dDNELT5hY3RpdmVUZXh0dXJlKEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFMCk7
CisgICAgICAgIEdMX0NNRChnbEFjdGl2ZVRleHR1cmUoR0xfVEVYVFVSRTEpKTsKKyAgICAgICAg
R0xfQ01EKGdsQmluZFRleHR1cmUoR0xfVEVYVFVSRV8yRCwgbWFza1RleHR1cmVHTC0+aWQoKSkp
OworICAgICAgICBHTF9DTUQoZ2xVbmlmb3JtMWkocHJvZ3JhbS0+bWFza1RleHR1cmVMb2NhdGlv
bigpLCAxKSk7CisgICAgICAgIEdMX0NNRChnbEFjdGl2ZVRleHR1cmUoR0xfVEVYVFVSRTApKTsK
ICAgICB9CiAKICAgICBib29sIG5lZWRzQmxlbmRpbmcgPSAoZmxhZ3MgJiBTdXBwb3J0c0JsZW5k
aW5nKSB8fCBvcGFjaXR5IDwgMC45OSB8fCBtYXNrVGV4dHVyZTsKLSAgICBkcmF3UXVhZChxdWFk
VG9EcmF3LCBtb2RlbFZpZXdNYXRyaXgsIHByb2dyYW0sIEdyYXBoaWNzQ29udGV4dDNEOjpUUklB
TkdMRV9GQU4sIG5lZWRzQmxlbmRpbmcpOworICAgIGRyYXdRdWFkKHF1YWRUb0RyYXcsIG1vZGVs
Vmlld01hdHJpeCwgcHJvZ3JhbSwgR0xfVFJJQU5HTEVfRkFOLCBuZWVkc0JsZW5kaW5nKTsKIH0K
IAogYm9vbCBCaXRtYXBUZXh0dXJlR0w6OmNhblJldXNlV2l0aChjb25zdCBJbnRTaXplJiBjb250
ZW50c1NpemUsIEZsYWdzKQpAQCAtNTc0LDcgKzYxMSw3IEBAIGJvb2wgQml0bWFwVGV4dHVyZUdM
OjpjYW5SZXVzZVdpdGgoY29uc3QgSW50U2l6ZSYgY29udGVudHNTaXplLCBGbGFncykKICNpZiBP
UyhEQVJXSU4pCiAjZGVmaW5lIERFRkFVTFRfVEVYVFVSRV9QSVhFTF9UUkFOU0ZFUl9UWVBFIEdM
X1VOU0lHTkVEX0lOVF84XzhfOF84X1JFVgogI2Vsc2UKLSNkZWZpbmUgREVGQVVMVF9URVhUVVJF
X1BJWEVMX1RSQU5TRkVSX1RZUEUgR3JhcGhpY3NDb250ZXh0M0Q6OlVOU0lHTkVEX0JZVEUKKyNk
ZWZpbmUgREVGQVVMVF9URVhUVVJFX1BJWEVMX1RSQU5TRkVSX1RZUEUgR0xfVU5TSUdORURfQllU
RQogI2VuZGlmCiAKIHN0YXRpYyB2b2lkIHN3aXp6bGVCR1JBVG9SR0JBKHVpbnQzMl90KiBkYXRh
LCBjb25zdCBJbnRSZWN0JiByZWN0LCBpbnQgc3RyaWRlID0gMCkKQEAgLTYwOSw0MiArNjQ2LDM4
IEBAIHN0YXRpYyBib29sIGRyaXZlclN1cHBvcnRzU3ViSW1hZ2UoKQogCiB2b2lkIEJpdG1hcFRl
eHR1cmVHTDo6ZGlkUmVzZXQoKQogewotICAgIEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0M0Qg
PSBtX3RleHR1cmVNYXBwZXItPmdyYXBoaWNzQ29udGV4dDNEKCk7Ci0KICAgICBpZiAoIW1faWQp
Ci0gICAgICAgIG1faWQgPSBjb250ZXh0M0QtPmNyZWF0ZVRleHR1cmUoKTsKKyAgICAgICAgR0xf
Q01EKGdsR2VuVGV4dHVyZXMoMSwgJm1faWQpKTsKIAogICAgIG1fc2hvdWxkQ2xlYXIgPSB0cnVl
OwogICAgIGlmIChtX3RleHR1cmVTaXplID09IGNvbnRlbnRTaXplKCkpCiAgICAgICAgIHJldHVy
bjsKIAotICAgIFBsYXRmb3JtM0RPYmplY3QgZm9ybWF0ID0gZHJpdmVyU3VwcG9ydHNCR1JBU3dp
enpsaW5nKCkgPyBHcmFwaGljc0NvbnRleHQzRDo6QkdSQSA6IEdyYXBoaWNzQ29udGV4dDNEOjpS
R0JBOworICAgIEdMdWludCBmb3JtYXQgPSBkcml2ZXJTdXBwb3J0c0JHUkFTd2l6emxpbmcoKSA/
IEdMX0JHUkEgOiBHTF9SR0JBOwogCiAgICAgbV90ZXh0dXJlU2l6ZSA9IGNvbnRlbnRTaXplKCk7
Ci0gICAgY29udGV4dDNELT5iaW5kVGV4dHVyZShHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV8y
RCwgbV9pZCk7Ci0gICAgY29udGV4dDNELT50ZXhQYXJhbWV0ZXJpKEdyYXBoaWNzQ29udGV4dDNE
OjpURVhUVVJFXzJELCBHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV9NSU5fRklMVEVSLCBHcmFw
aGljc0NvbnRleHQzRDo6TElORUFSKTsKLSAgICBjb250ZXh0M0QtPnRleFBhcmFtZXRlcmkoR3Jh
cGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfMkQsIEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFX01B
R19GSUxURVIsIEdyYXBoaWNzQ29udGV4dDNEOjpMSU5FQVIpOwotICAgIGNvbnRleHQzRC0+dGV4
UGFyYW1ldGVyaShHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV8yRCwgR3JhcGhpY3NDb250ZXh0
M0Q6OlRFWFRVUkVfV1JBUF9TLCBHcmFwaGljc0NvbnRleHQzRDo6Q0xBTVBfVE9fRURHRSk7Ci0g
ICAgY29udGV4dDNELT50ZXhQYXJhbWV0ZXJpKEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFXzJE
LCBHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV9XUkFQX1QsIEdyYXBoaWNzQ29udGV4dDNEOjpD
TEFNUF9UT19FREdFKTsKLSAgICBjb250ZXh0M0QtPnRleEltYWdlMkREaXJlY3QoR3JhcGhpY3ND
b250ZXh0M0Q6OlRFWFRVUkVfMkQsIDAsIGZvcm1hdCwgbV90ZXh0dXJlU2l6ZS53aWR0aCgpLCBt
X3RleHR1cmVTaXplLmhlaWdodCgpLCAwLCBmb3JtYXQsIERFRkFVTFRfVEVYVFVSRV9QSVhFTF9U
UkFOU0ZFUl9UWVBFLCAwKTsKKyAgICBHTF9DTUQoZ2xCaW5kVGV4dHVyZShHTF9URVhUVVJFXzJE
LCBtX2lkKSk7CisgICAgR0xfQ01EKGdsVGV4UGFyYW1ldGVyaShHTF9URVhUVVJFXzJELCBHTF9U
RVhUVVJFX01JTl9GSUxURVIsIEdMX0xJTkVBUikpOworICAgIEdMX0NNRChnbFRleFBhcmFtZXRl
cmkoR0xfVEVYVFVSRV8yRCwgR0xfVEVYVFVSRV9NQUdfRklMVEVSLCBHTF9MSU5FQVIpKTsKKyAg
ICBHTF9DTUQoZ2xUZXhQYXJhbWV0ZXJpKEdMX1RFWFRVUkVfMkQsIEdMX1RFWFRVUkVfV1JBUF9T
LCBHTF9DTEFNUF9UT19FREdFKSk7CisgICAgR0xfQ01EKGdsVGV4UGFyYW1ldGVyaShHTF9URVhU
VVJFXzJELCBHTF9URVhUVVJFX1dSQVBfVCwgR0xfQ0xBTVBfVE9fRURHRSkpOworICAgIEdMX0NN
RChnbFRleEltYWdlMkQoR0xfVEVYVFVSRV8yRCwgMCwgR0xfUkdCQSwgbV90ZXh0dXJlU2l6ZS53
aWR0aCgpLCBtX3RleHR1cmVTaXplLmhlaWdodCgpLCAwLCBmb3JtYXQsIERFRkFVTFRfVEVYVFVS
RV9QSVhFTF9UUkFOU0ZFUl9UWVBFLCAwKSk7CiB9CiAKIAogdm9pZCBCaXRtYXBUZXh0dXJlR0w6
OnVwZGF0ZUNvbnRlbnRzKGNvbnN0IHZvaWQqIGRhdGEsIGNvbnN0IEludFJlY3QmIHRhcmdldFJl
Y3QsIGNvbnN0IEludFBvaW50JiBzb3VyY2VPZmZzZXQsIGludCBieXRlc1BlckxpbmUpCiB7Ci0g
ICAgR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQzRCA9IG1fdGV4dHVyZU1hcHBlci0+Z3JhcGhp
Y3NDb250ZXh0M0QoKTsKLQotICAgIFBsYXRmb3JtM0RPYmplY3QgZ2xGb3JtYXQgPSBHcmFwaGlj
c0NvbnRleHQzRDo6UkdCQTsKLSAgICBjb250ZXh0M0QtPmJpbmRUZXh0dXJlKEdyYXBoaWNzQ29u
dGV4dDNEOjpURVhUVVJFXzJELCBtX2lkKTsKKyAgICBHTHVpbnQgZ2xGb3JtYXQgPSBHTF9SR0JB
OworICAgIEdMX0NNRChnbEJpbmRUZXh0dXJlKEdMX1RFWFRVUkVfMkQsIG1faWQpKTsKIAogICAg
IGNvbnN0IHVuc2lnbmVkIGJ5dGVzUGVyUGl4ZWwgPSA0OwogICAgIGlmIChkcml2ZXJTdXBwb3J0
c0JHUkFTd2l6emxpbmcoKSkKLSAgICAgICAgZ2xGb3JtYXQgPSBHcmFwaGljc0NvbnRleHQzRDo6
QkdSQTsKKyAgICAgICAgZ2xGb3JtYXQgPSBHTF9CR1JBOwogICAgIGVsc2UKICAgICAgICAgc3dp
enpsZUJHUkFUb1JHQkEocmVpbnRlcnByZXRfY2FzdDx1aW50MzJfdCo+KGNvbnN0X2Nhc3Q8dm9p
ZCo+KGRhdGEpKSwgSW50UmVjdChzb3VyY2VPZmZzZXQsIHRhcmdldFJlY3Quc2l6ZSgpKSwgYnl0
ZXNQZXJMaW5lIC8gYnl0ZXNQZXJQaXhlbCk7CiAKICAgICBpZiAoYnl0ZXNQZXJMaW5lID09IHRh
cmdldFJlY3Qud2lkdGgoKSAvIDQgJiYgc291cmNlT2Zmc2V0ID09IEludFBvaW50Ojp6ZXJvKCkp
IHsKLSAgICAgICAgY29udGV4dDNELT50ZXhTdWJJbWFnZTJEKEdyYXBoaWNzQ29udGV4dDNEOjpU
RVhUVVJFXzJELCAwLCB0YXJnZXRSZWN0LngoKSwgdGFyZ2V0UmVjdC55KCksIHRhcmdldFJlY3Qu
d2lkdGgoKSwgdGFyZ2V0UmVjdC5oZWlnaHQoKSwgZ2xGb3JtYXQsIERFRkFVTFRfVEVYVFVSRV9Q
SVhFTF9UUkFOU0ZFUl9UWVBFLCAoY29uc3QgY2hhciopZGF0YSk7CisgICAgICAgIEdMX0NNRChn
bFRleFN1YkltYWdlMkQoR0xfVEVYVFVSRV8yRCwgMCwgdGFyZ2V0UmVjdC54KCksIHRhcmdldFJl
Y3QueSgpLCB0YXJnZXRSZWN0LndpZHRoKCksIHRhcmdldFJlY3QuaGVpZ2h0KCksIGdsRm9ybWF0
LCBERUZBVUxUX1RFWFRVUkVfUElYRUxfVFJBTlNGRVJfVFlQRSwgKGNvbnN0IGNoYXIqKWRhdGEp
KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtNjYyLDE5ICs2OTUsMTkgQEAgdm9pZCBC
aXRtYXBUZXh0dXJlR0w6OnVwZGF0ZUNvbnRlbnRzKGNvbnN0IHZvaWQqIGRhdGEsIGNvbnN0IElu
dFJlY3QmIHRhcmdldFJlY3QKICAgICAgICAgICAgIGRzdCArPSB0YXJnZXRCeXRlc1BlckxpbmU7
CiAgICAgICAgIH0KIAotICAgICAgICBjb250ZXh0M0QtPnRleFN1YkltYWdlMkQoR3JhcGhpY3ND
b250ZXh0M0Q6OlRFWFRVUkVfMkQsIDAsIHRhcmdldFJlY3QueCgpLCB0YXJnZXRSZWN0LnkoKSwg
dGFyZ2V0UmVjdC53aWR0aCgpLCB0YXJnZXRSZWN0LmhlaWdodCgpLCBnbEZvcm1hdCwgREVGQVVM
VF9URVhUVVJFX1BJWEVMX1RSQU5TRkVSX1RZUEUsIHRlbXBvcmFyeURhdGEuZGF0YSgpKTsKKyAg
ICAgICAgR0xfQ01EKGdsVGV4U3ViSW1hZ2UyRChHTF9URVhUVVJFXzJELCAwLCB0YXJnZXRSZWN0
LngoKSwgdGFyZ2V0UmVjdC55KCksIHRhcmdldFJlY3Qud2lkdGgoKSwgdGFyZ2V0UmVjdC5oZWln
aHQoKSwgZ2xGb3JtYXQsIERFRkFVTFRfVEVYVFVSRV9QSVhFTF9UUkFOU0ZFUl9UWVBFLCB0ZW1w
b3JhcnlEYXRhLmRhdGEoKSkpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCiAjaWYgIWRlZmlu
ZWQoVEVYTUFQX09QRU5HTF9FU18yKQogICAgIC8vIFVzZSB0aGUgT3BlbkdMIHN1Yi1pbWFnZSBl
eHRlbnNpb24sIG5vdyB0aGF0IHdlIGtub3cgaXQncyBhdmFpbGFibGUuCi0gICAgY29udGV4dDNE
LT5waXhlbFN0b3JlaShHTF9VTlBBQ0tfUk9XX0xFTkdUSCwgYnl0ZXNQZXJMaW5lIC8gYnl0ZXNQ
ZXJQaXhlbCk7Ci0gICAgY29udGV4dDNELT5waXhlbFN0b3JlaShHTF9VTlBBQ0tfU0tJUF9ST1dT
LCBzb3VyY2VPZmZzZXQueSgpKTsKLSAgICBjb250ZXh0M0QtPnBpeGVsU3RvcmVpKEdMX1VOUEFD
S19TS0lQX1BJWEVMUywgc291cmNlT2Zmc2V0LngoKSk7Ci0gICAgY29udGV4dDNELT50ZXhTdWJJ
bWFnZTJEKEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFXzJELCAwLCB0YXJnZXRSZWN0LngoKSwg
dGFyZ2V0UmVjdC55KCksIHRhcmdldFJlY3Qud2lkdGgoKSwgdGFyZ2V0UmVjdC5oZWlnaHQoKSwg
Z2xGb3JtYXQsIERFRkFVTFRfVEVYVFVSRV9QSVhFTF9UUkFOU0ZFUl9UWVBFLCAoY29uc3QgY2hh
ciopZGF0YSk7Ci0gICAgY29udGV4dDNELT5waXhlbFN0b3JlaShHTF9VTlBBQ0tfUk9XX0xFTkdU
SCwgMCk7Ci0gICAgY29udGV4dDNELT5waXhlbFN0b3JlaShHTF9VTlBBQ0tfU0tJUF9ST1dTLCAw
KTsKLSAgICBjb250ZXh0M0QtPnBpeGVsU3RvcmVpKEdMX1VOUEFDS19TS0lQX1BJWEVMUywgMCk7
CisgICAgR0xfQ01EKGdsUGl4ZWxTdG9yZWkoR0xfVU5QQUNLX1JPV19MRU5HVEgsIGJ5dGVzUGVy
TGluZSAvIGJ5dGVzUGVyUGl4ZWwpKTsKKyAgICBHTF9DTUQoZ2xQaXhlbFN0b3JlaShHTF9VTlBB
Q0tfU0tJUF9ST1dTLCBzb3VyY2VPZmZzZXQueSgpKSk7CisgICAgR0xfQ01EKGdsUGl4ZWxTdG9y
ZWkoR0xfVU5QQUNLX1NLSVBfUElYRUxTLCBzb3VyY2VPZmZzZXQueCgpKSk7CisgICAgR0xfQ01E
KGdsVGV4U3ViSW1hZ2UyRChHTF9URVhUVVJFXzJELCAwLCB0YXJnZXRSZWN0LngoKSwgdGFyZ2V0
UmVjdC55KCksIHRhcmdldFJlY3Qud2lkdGgoKSwgdGFyZ2V0UmVjdC5oZWlnaHQoKSwgZ2xGb3Jt
YXQsIERFRkFVTFRfVEVYVFVSRV9QSVhFTF9UUkFOU0ZFUl9UWVBFLCAoY29uc3QgY2hhciopZGF0
YSkpOworICAgIEdMX0NNRChnbFBpeGVsU3RvcmVpKEdMX1VOUEFDS19ST1dfTEVOR1RILCAwKSk7
CisgICAgR0xfQ01EKGdsUGl4ZWxTdG9yZWkoR0xfVU5QQUNLX1NLSVBfUk9XUywgMCkpOworICAg
IEdMX0NNRChnbFBpeGVsU3RvcmVpKEdMX1VOUEFDS19TS0lQX1BJWEVMUywgMCkpOwogI2VuZGlm
CiB9CiAKQEAgLTcxMCwxOSArNzQzLDE5IEBAIHZvaWQgVGV4dHVyZU1hcHBlckdMOjpkcmF3Rmls
dGVyZWQoY29uc3QgQml0bWFwVGV4dHVyZSYgc291cmNlVGV4dHVyZSwgY29uc3QgQml0CiAKICAg
ICBwcm9ncmFtLT5wcmVwYXJlKGZpbHRlciwgcGFzcywgc291cmNlVGV4dHVyZS5jb250ZW50U2l6
ZSgpLCBzdGF0aWNfY2FzdDxjb25zdCBCaXRtYXBUZXh0dXJlR0wmPihjb250ZW50VGV4dHVyZSku
aWQoKSk7CiAKLSAgICBtX2NvbnRleHQzRC0+ZW5hYmxlVmVydGV4QXR0cmliQXJyYXkocHJvZ3Jh
bS0+dmVydGV4QXR0cmliKCkpOwotICAgIG1fY29udGV4dDNELT5lbmFibGVWZXJ0ZXhBdHRyaWJB
cnJheShwcm9ncmFtLT50ZXhDb29yZEF0dHJpYigpKTsKLSAgICBtX2NvbnRleHQzRC0+YWN0aXZl
VGV4dHVyZShHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRTApOwotICAgIG1fY29udGV4dDNELT5i
aW5kVGV4dHVyZShHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV8yRCwgc3RhdGljX2Nhc3Q8Y29u
c3QgQml0bWFwVGV4dHVyZUdMJj4oc291cmNlVGV4dHVyZSkuaWQoKSk7Ci0gICAgbV9jb250ZXh0
M0QtPnVuaWZvcm0xaShwcm9ncmFtLT50ZXh0dXJlVW5pZm9ybSgpLCAwKTsKLSAgICBjb25zdCBH
QzNEZmxvYXQgdGFyZ2V0VmVydGljZXNbXSA9IHstMSwgLTEsIDEsIC0xLCAxLCAxLCAtMSwgMX07
Ci0gICAgY29uc3QgR0MzRGZsb2F0IHNvdXJjZVZlcnRpY2VzW10gPSB7MCwgMCwgMSwgMCwgMSwg
MSwgMCwgMX07Ci0gICAgbV9jb250ZXh0M0QtPnZlcnRleEF0dHJpYlBvaW50ZXIocHJvZ3JhbS0+
dmVydGV4QXR0cmliKCksIDIsIEdyYXBoaWNzQ29udGV4dDNEOjpGTE9BVCwgZmFsc2UsIDAsIEdD
M0RpbnRwdHIodGFyZ2V0VmVydGljZXMpKTsKLSAgICBtX2NvbnRleHQzRC0+dmVydGV4QXR0cmli
UG9pbnRlcihwcm9ncmFtLT50ZXhDb29yZEF0dHJpYigpLCAyLCBHcmFwaGljc0NvbnRleHQzRDo6
RkxPQVQsIGZhbHNlLCAwLCBHQzNEaW50cHRyKHNvdXJjZVZlcnRpY2VzKSk7Ci0gICAgbV9jb250
ZXh0M0QtPmRpc2FibGUoR3JhcGhpY3NDb250ZXh0M0Q6OkJMRU5EKTsKLSAgICBtX2NvbnRleHQz
RC0+ZHJhd0FycmF5cyhHcmFwaGljc0NvbnRleHQzRDo6VFJJQU5HTEVfRkFOLCAwLCA0KTsKLSAg
ICBtX2NvbnRleHQzRC0+ZGlzYWJsZVZlcnRleEF0dHJpYkFycmF5KHByb2dyYW0tPnZlcnRleEF0
dHJpYigpKTsKLSAgICBtX2NvbnRleHQzRC0+ZGlzYWJsZVZlcnRleEF0dHJpYkFycmF5KHByb2dy
YW0tPnRleENvb3JkQXR0cmliKCkpOworICAgIEdMX0NNRChnbEVuYWJsZVZlcnRleEF0dHJpYkFy
cmF5KHByb2dyYW0tPnZlcnRleEF0dHJpYigpKSk7CisgICAgR0xfQ01EKGdsRW5hYmxlVmVydGV4
QXR0cmliQXJyYXkocHJvZ3JhbS0+dGV4Q29vcmRBdHRyaWIoKSkpOworICAgIEdMX0NNRChnbEFj
dGl2ZVRleHR1cmUoR0xfVEVYVFVSRTApKTsKKyAgICBHTF9DTUQoZ2xCaW5kVGV4dHVyZShHTF9U
RVhUVVJFXzJELCBzdGF0aWNfY2FzdDxjb25zdCBCaXRtYXBUZXh0dXJlR0wmPihzb3VyY2VUZXh0
dXJlKS5pZCgpKSk7CisgICAgZ2xVbmlmb3JtMWkocHJvZ3JhbS0+dGV4dHVyZVVuaWZvcm0oKSwg
MCk7CisgICAgY29uc3QgR0xmbG9hdCB0YXJnZXRWZXJ0aWNlc1tdID0gey0xLCAtMSwgMSwgLTEs
IDEsIDEsIC0xLCAxfTsKKyAgICBjb25zdCBHTGZsb2F0IHNvdXJjZVZlcnRpY2VzW10gPSB7MCwg
MCwgMSwgMCwgMSwgMSwgMCwgMX07CisgICAgR0xfQ01EKGdsVmVydGV4QXR0cmliUG9pbnRlcihw
cm9ncmFtLT52ZXJ0ZXhBdHRyaWIoKSwgMiwgR0xfRkxPQVQsIEdMX0ZBTFNFLCAwLCB0YXJnZXRW
ZXJ0aWNlcykpOworICAgIEdMX0NNRChnbFZlcnRleEF0dHJpYlBvaW50ZXIocHJvZ3JhbS0+dGV4
Q29vcmRBdHRyaWIoKSwgMiwgR0xfRkxPQVQsIEdMX0ZBTFNFLCAwLCBzb3VyY2VWZXJ0aWNlcykp
OworICAgIEdMX0NNRChnbERpc2FibGUoR0xfQkxFTkQpKTsKKyAgICBHTF9DTUQoZ2xEcmF3QXJy
YXlzKEdMX1RSSUFOR0xFX0ZBTiwgMCwgNCkpOworICAgIEdMX0NNRChnbERpc2FibGVWZXJ0ZXhB
dHRyaWJBcnJheShwcm9ncmFtLT52ZXJ0ZXhBdHRyaWIoKSkpOworICAgIEdMX0NNRChnbERpc2Fi
bGVWZXJ0ZXhBdHRyaWJBcnJheShwcm9ncmFtLT50ZXhDb29yZEF0dHJpYigpKSk7CiB9CiAKIFBh
c3NSZWZQdHI8Qml0bWFwVGV4dHVyZT4gQml0bWFwVGV4dHVyZUdMOjphcHBseUZpbHRlcnMoY29u
c3QgQml0bWFwVGV4dHVyZSYgY29udGVudFRleHR1cmUsIGNvbnN0IEZpbHRlck9wZXJhdGlvbnMm
IGZpbHRlcnMpCkBAIC03NjMsMTkgKzc5NiwxNyBAQCB2b2lkIEJpdG1hcFRleHR1cmVHTDo6aW5p
dGlhbGl6ZVN0ZW5jaWwoKQogewogICAgIGlmIChtX3JibykKICAgICAgICAgcmV0dXJuOwotCi0g
ICAgR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQzRCA9IG1fdGV4dHVyZU1hcHBlci0+Z3JhcGhp
Y3NDb250ZXh0M0QoKTsKLSAgICBtX3JibyA9IGNvbnRleHQzRC0+Y3JlYXRlUmVuZGVyYnVmZmVy
KCk7Ci0gICAgY29udGV4dDNELT5iaW5kUmVuZGVyYnVmZmVyKEdyYXBoaWNzQ29udGV4dDNEOjpS
RU5ERVJCVUZGRVIsIG1fcmJvKTsKKyAgICBHTF9DTUQoZ2xHZW5SZW5kZXJidWZmZXJzKDEsICZt
X3JibykpOworICAgIEdMX0NNRChnbEJpbmRSZW5kZXJidWZmZXIoR0xfUkVOREVSQlVGRkVSLCBt
X3JibykpOwogI2lmZGVmIFRFWE1BUF9PUEVOR0xfRVNfMgotICAgIGNvbnRleHQzRC0+cmVuZGVy
YnVmZmVyU3RvcmFnZShHcmFwaGljc0NvbnRleHQzRDo6UkVOREVSQlVGRkVSLCBHcmFwaGljc0Nv
bnRleHQzRDo6U1RFTkNJTF9JTkRFWDgsIG1fdGV4dHVyZVNpemUud2lkdGgoKSwgbV90ZXh0dXJl
U2l6ZS5oZWlnaHQoKSk7CisgICAgR0xfQ01EKGdsUmVuZGVyYnVmZmVyU3RvcmFnZShHTF9SRU5E
RVJCVUZGRVIsIEdMX1NURU5DSUxfSU5ERVg4LCBtX3RleHR1cmVTaXplLndpZHRoKCksIG1fdGV4
dHVyZVNpemUuaGVpZ2h0KCkpKTsKICNlbHNlCi0gICAgY29udGV4dDNELT5yZW5kZXJidWZmZXJT
dG9yYWdlKEdyYXBoaWNzQ29udGV4dDNEOjpSRU5ERVJCVUZGRVIsIEdyYXBoaWNzQ29udGV4dDNE
OjpERVBUSF9TVEVOQ0lMLCBtX3RleHR1cmVTaXplLndpZHRoKCksIG1fdGV4dHVyZVNpemUuaGVp
Z2h0KCkpOworICAgIEdMX0NNRChnbFJlbmRlcmJ1ZmZlclN0b3JhZ2UoR0xfUkVOREVSQlVGRkVS
LCBHTF9ERVBUSF9TVEVOQ0lMLCBtX3RleHR1cmVTaXplLndpZHRoKCksIG1fdGV4dHVyZVNpemUu
aGVpZ2h0KCkpKTsKICNlbmRpZgotICAgIGNvbnRleHQzRC0+YmluZFJlbmRlcmJ1ZmZlcihHcmFw
aGljc0NvbnRleHQzRDo6UkVOREVSQlVGRkVSLCAwKTsKLSAgICBjb250ZXh0M0QtPmZyYW1lYnVm
ZmVyUmVuZGVyYnVmZmVyKEdyYXBoaWNzQ29udGV4dDNEOjpGUkFNRUJVRkZFUiwgR3JhcGhpY3ND
b250ZXh0M0Q6OlNURU5DSUxfQVRUQUNITUVOVCwgR3JhcGhpY3NDb250ZXh0M0Q6OlJFTkRFUkJV
RkZFUiwgbV9yYm8pOwotICAgIGNvbnRleHQzRC0+Y2xlYXJTdGVuY2lsKDApOwotICAgIGNvbnRl
eHQzRC0+Y2xlYXIoR3JhcGhpY3NDb250ZXh0M0Q6OlNURU5DSUxfQlVGRkVSX0JJVCk7CisgICAg
R0xfQ01EKGdsQmluZFJlbmRlcmJ1ZmZlcihHTF9SRU5ERVJCVUZGRVIsIDApKTsKKyAgICBHTF9D
TUQoZ2xGcmFtZWJ1ZmZlclJlbmRlcmJ1ZmZlcihHTF9GUkFNRUJVRkZFUiwgR0xfU1RFTkNJTF9B
VFRBQ0hNRU5ULCBHTF9SRU5ERVJCVUZGRVIsIG1fcmJvKSk7CisgICAgR0xfQ01EKGdsQ2xlYXJT
dGVuY2lsKDApKTsKKyAgICBHTF9DTUQoZ2xDbGVhcihHTF9TVEVOQ0lMX0JVRkZFUl9CSVQpKTsK
IH0KIAogdm9pZCBCaXRtYXBUZXh0dXJlR0w6OmNsZWFySWZOZWVkZWQoKQpAQCAtNzgzLDEyICs4
MTQsMTAgQEAgdm9pZCBCaXRtYXBUZXh0dXJlR0w6OmNsZWFySWZOZWVkZWQoKQogICAgIGlmICgh
bV9zaG91bGRDbGVhcikKICAgICAgICAgcmV0dXJuOwogCi0gICAgR3JhcGhpY3NDb250ZXh0M0Qq
IGNvbnRleHQzRCA9IG1fdGV4dHVyZU1hcHBlci0+Z3JhcGhpY3NDb250ZXh0M0QoKTsKLQogICAg
IG1fY2xpcFN0YWNrLmluaXQoSW50UmVjdChJbnRQb2ludDo6emVybygpLCBtX3RleHR1cmVTaXpl
KSk7Ci0gICAgbV9jbGlwU3RhY2suYXBwbHkoY29udGV4dDNEKTsKLSAgICBjb250ZXh0M0QtPmNs
ZWFyQ29sb3IoMCwgMCwgMCwgMCk7Ci0gICAgY29udGV4dDNELT5jbGVhcihHcmFwaGljc0NvbnRl
eHQzRDo6Q09MT1JfQlVGRkVSX0JJVCk7CisgICAgbV9jbGlwU3RhY2suYXBwbHkoKTsKKyAgICBH
TF9DTUQoZ2xDbGVhckNvbG9yKDAsIDAsIDAsIDApKTsKKyAgICBHTF9DTUQoZ2xDbGVhcihHTF9D
T0xPUl9CVUZGRVJfQklUKSk7CiAgICAgbV9zaG91bGRDbGVhciA9IGZhbHNlOwogfQogCkBAIC03
OTcsMzcgKzgyNiwzMyBAQCB2b2lkIEJpdG1hcFRleHR1cmVHTDo6Y3JlYXRlRmJvSWZOZWVkZWQo
KQogICAgIGlmIChtX2ZibykKICAgICAgICAgcmV0dXJuOwogCi0gICAgR3JhcGhpY3NDb250ZXh0
M0QqIGNvbnRleHQzRCA9IG1fdGV4dHVyZU1hcHBlci0+Z3JhcGhpY3NDb250ZXh0M0QoKTsKLSAg
ICBtX2ZibyA9IGNvbnRleHQzRC0+Y3JlYXRlRnJhbWVidWZmZXIoKTsKLSAgICBjb250ZXh0M0Qt
PmJpbmRGcmFtZWJ1ZmZlcihHcmFwaGljc0NvbnRleHQzRDo6RlJBTUVCVUZGRVIsIG1fZmJvKTsK
LSAgICBjb250ZXh0M0QtPmZyYW1lYnVmZmVyVGV4dHVyZTJEKEdyYXBoaWNzQ29udGV4dDNEOjpG
UkFNRUJVRkZFUiwgR3JhcGhpY3NDb250ZXh0M0Q6OkNPTE9SX0FUVEFDSE1FTlQwLCBHcmFwaGlj
c0NvbnRleHQzRDo6VEVYVFVSRV8yRCwgaWQoKSwgMCk7CisgICAgR0xfQ01EKGdsR2VuRnJhbWVi
dWZmZXJzKDEsICZtX2ZibykpOworICAgIEdMX0NNRChnbEJpbmRGcmFtZWJ1ZmZlcihHTF9GUkFN
RUJVRkZFUiwgbV9mYm8pKTsKKyAgICBHTF9DTUQoZ2xGcmFtZWJ1ZmZlclRleHR1cmUyRChHTF9G
UkFNRUJVRkZFUiwgR0xfQ09MT1JfQVRUQUNITUVOVDAsIEdMX1RFWFRVUkVfMkQsIGlkKCksIDAp
KTsKICAgICBtX3Nob3VsZENsZWFyID0gdHJ1ZTsKIH0KIAogdm9pZCBCaXRtYXBUZXh0dXJlR0w6
OmJpbmQoKQogewotICAgIEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0M0QgPSBtX3RleHR1cmVN
YXBwZXItPmdyYXBoaWNzQ29udGV4dDNEKCk7Ci0gICAgY29udGV4dDNELT5iaW5kVGV4dHVyZShH
cmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV8yRCwgMCk7CisgICAgR0xfQ01EKGdsQmluZFRleHR1
cmUoR0xfVEVYVFVSRV8yRCwgMCkpOwogICAgIGNyZWF0ZUZib0lmTmVlZGVkKCk7Ci0gICAgY29u
dGV4dDNELT5iaW5kRnJhbWVidWZmZXIoR3JhcGhpY3NDb250ZXh0M0Q6OkZSQU1FQlVGRkVSLCBt
X2Zibyk7Ci0gICAgY29udGV4dDNELT52aWV3cG9ydCgwLCAwLCBtX3RleHR1cmVTaXplLndpZHRo
KCksIG1fdGV4dHVyZVNpemUuaGVpZ2h0KCkpOworICAgIEdMX0NNRChnbEJpbmRGcmFtZWJ1ZmZl
cihHTF9GUkFNRUJVRkZFUiwgbV9mYm8pKTsKKyAgICBHTF9DTUQoZ2xWaWV3cG9ydCgwLCAwLCBt
X3RleHR1cmVTaXplLndpZHRoKCksIG1fdGV4dHVyZVNpemUuaGVpZ2h0KCkpKTsKICAgICBjbGVh
cklmTmVlZGVkKCk7CiAgICAgbV90ZXh0dXJlTWFwcGVyLT5kYXRhKCkucHJvamVjdGlvbk1hdHJp
eCA9IGNyZWF0ZVByb2plY3Rpb25NYXRyaXgobV90ZXh0dXJlU2l6ZSwgdHJ1ZSAvKiBtaXJyb3Jl
ZCAqLyk7Ci0gICAgbV9jbGlwU3RhY2suYXBwbHkoY29udGV4dDNEKTsKKyAgICBtX2NsaXBTdGFj
ay5hcHBseSgpOwogfQogCiBCaXRtYXBUZXh0dXJlR0w6On5CaXRtYXBUZXh0dXJlR0woKQogewot
ICAgIEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0M0QgPSBtX3RleHR1cmVNYXBwZXItPmdyYXBo
aWNzQ29udGV4dDNEKCk7Ci0KICAgICBpZiAobV9pZCkKLSAgICAgICAgY29udGV4dDNELT5kZWxl
dGVUZXh0dXJlKG1faWQpOworICAgICAgICBHTF9DTUQoZ2xEZWxldGVUZXh0dXJlcygxLCAmbV9p
ZCkpOwogCiAgICAgaWYgKG1fZmJvKQotICAgICAgICBjb250ZXh0M0QtPmRlbGV0ZUZyYW1lYnVm
ZmVyKG1fZmJvKTsKKyAgICAgICAgR0xfQ01EKGdsRGVsZXRlRnJhbWVidWZmZXJzKDEsICZtX2Zi
bykpOwogCiAgICAgaWYgKG1fcmJvKQotICAgICAgICBjb250ZXh0M0QtPmRlbGV0ZVJlbmRlcmJ1
ZmZlcihtX3Jibyk7CisgICAgICAgIEdMX0NNRChnbERlbGV0ZVJlbmRlcmJ1ZmZlcnMoMSwgJm1f
cmJvKSk7CiB9CiAKIGJvb2wgQml0bWFwVGV4dHVyZUdMOjppc1ZhbGlkKCkgY29uc3QKQEAgLTg0
NywxMSArODcyLDExIEBAIFRleHR1cmVNYXBwZXJHTDo6flRleHR1cmVNYXBwZXJHTCgpCiAKIHZv
aWQgVGV4dHVyZU1hcHBlckdMOjpiaW5kRGVmYXVsdFN1cmZhY2UoKQogewotICAgIG1fY29udGV4
dDNELT5iaW5kRnJhbWVidWZmZXIoR3JhcGhpY3NDb250ZXh0M0Q6OkZSQU1FQlVGRkVSLCBkYXRh
KCkudGFyZ2V0RnJhbWVCdWZmZXIpOworICAgIEdMX0NNRChnbEJpbmRGcmFtZWJ1ZmZlcihHTF9G
UkFNRUJVRkZFUiwgZGF0YSgpLnRhcmdldEZyYW1lQnVmZmVyKSk7CiAgICAgSW50U2l6ZSB2aWV3
cG9ydFNpemUoZGF0YSgpLnZpZXdwb3J0WzJdLCBkYXRhKCkudmlld3BvcnRbM10pOwogICAgIGRh
dGEoKS5wcm9qZWN0aW9uTWF0cml4ID0gY3JlYXRlUHJvamVjdGlvbk1hdHJpeCh2aWV3cG9ydFNp
emUsIGRhdGEoKS5QYWludEZsYWdzICYgUGFpbnRpbmdNaXJyb3JlZCk7Ci0gICAgbV9jb250ZXh0
M0QtPnZpZXdwb3J0KGRhdGEoKS52aWV3cG9ydFswXSwgZGF0YSgpLnZpZXdwb3J0WzFdLCB2aWV3
cG9ydFNpemUud2lkdGgoKSwgdmlld3BvcnRTaXplLmhlaWdodCgpKTsKLSAgICBtX2NsaXBTdGFj
ay5hcHBseShtX2NvbnRleHQzRC5nZXQoKSk7CisgICAgR0xfQ01EKGdsVmlld3BvcnQoZGF0YSgp
LnZpZXdwb3J0WzBdLCBkYXRhKCkudmlld3BvcnRbMV0sIHZpZXdwb3J0U2l6ZS53aWR0aCgpLCB2
aWV3cG9ydFNpemUuaGVpZ2h0KCkpKTsKKyAgICBtX2NsaXBTdGFjay5hcHBseSgpOwogICAgIGRh
dGEoKS5jdXJyZW50U3VyZmFjZS5jbGVhcigpOwogfQogCkBAIC04ODEsNyArOTA2LDcgQEAgYm9v
bCBUZXh0dXJlTWFwcGVyR0w6OmJlZ2luU2Npc3NvckNsaXAoY29uc3QgVHJhbnNmb3JtYXRpb25N
YXRyaXgmIG1vZGVsVmlld01hdHIKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgY2xpcFN0
YWNrKCkuY3VycmVudCgpLnNjaXNzb3JCb3guaW50ZXJzZWN0KHJlY3QpOwotICAgIGNsaXBTdGFj
aygpLmFwcGx5KG1fY29udGV4dDNELmdldCgpKTsKKyAgICBjbGlwU3RhY2soKS5hcHBseSgpOwog
ICAgIHJldHVybiB0cnVlOwogfQogCkBAIC04OTUsMTAgKzkyMCwxMCBAQCB2b2lkIFRleHR1cmVN
YXBwZXJHTDo6YmVnaW5DbGlwKGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiBtb2RlbFZpZXdN
YXRyaXgsIGNvbgogCiAgICAgUmVmUHRyPFRleHR1cmVNYXBwZXJTaGFkZXJQcm9ncmFtPiBwcm9n
cmFtID0gZGF0YSgpLnNoYXJlZEdMRGF0YSgpLnRleHR1cmVNYXBwZXJTaGFkZXJNYW5hZ2VyLmdl
dFNoYWRlclByb2dyYW0oVGV4dHVyZU1hcHBlclNoYWRlck1hbmFnZXI6OlNpbXBsZSk7CiAKLSAg
ICBtX2NvbnRleHQzRC0+dXNlUHJvZ3JhbShwcm9ncmFtLT5pZCgpKTsKLSAgICBtX2NvbnRleHQz
RC0+ZW5hYmxlVmVydGV4QXR0cmliQXJyYXkocHJvZ3JhbS0+dmVydGV4QXR0cmliKCkpOwotICAg
IGNvbnN0IEdDM0RmbG9hdCB1bml0UmVjdFtdID0gezAsIDAsIDEsIDAsIDEsIDEsIDAsIDF9Owot
ICAgIG1fY29udGV4dDNELT52ZXJ0ZXhBdHRyaWJQb2ludGVyKHByb2dyYW0tPnZlcnRleEF0dHJp
YigpLCAyLCBHcmFwaGljc0NvbnRleHQzRDo6RkxPQVQsIGZhbHNlLCAwLCBHQzNEaW50cHRyKHVu
aXRSZWN0KSk7CisgICAgR0xfQ01EKGdsVXNlUHJvZ3JhbShwcm9ncmFtLT5pZCgpKSk7CisgICAg
R0xfQ01EKGdsRW5hYmxlVmVydGV4QXR0cmliQXJyYXkocHJvZ3JhbS0+dmVydGV4QXR0cmliKCkp
KTsKKyAgICBjb25zdCBHTGZsb2F0IHVuaXRSZWN0W10gPSB7MCwgMCwgMSwgMCwgMSwgMSwgMCwg
MX07CisgICAgR0xfQ01EKGdsVmVydGV4QXR0cmliUG9pbnRlcihwcm9ncmFtLT52ZXJ0ZXhBdHRy
aWIoKSwgMiwgR0xfRkxPQVQsIEdMX0ZBTFNFLCAwLCB1bml0UmVjdCkpOwogCiAgICAgVHJhbnNm
b3JtYXRpb25NYXRyaXggbWF0cml4ID0gVHJhbnNmb3JtYXRpb25NYXRyaXgoZGF0YSgpLnByb2pl
Y3Rpb25NYXRyaXgpCiAgICAgICAgICAgICAubXVsdGlwbHkobW9kZWxWaWV3TWF0cml4KQpAQCAt
OTA3LDE0ICs5MzIsMTQgQEAgdm9pZCBUZXh0dXJlTWFwcGVyR0w6OmJlZ2luQ2xpcChjb25zdCBU
cmFuc2Zvcm1hdGlvbk1hdHJpeCYgbW9kZWxWaWV3TWF0cml4LCBjb24KICAgICAgICAgICAgICAg
ICAwLCAwLCAxLCAwLAogICAgICAgICAgICAgICAgIHRhcmdldFJlY3QueCgpLCB0YXJnZXRSZWN0
LnkoKSwgMCwgMSkpOwogCi0gICAgY29uc3QgR0MzRGZsb2F0IG00W10gPSB7CisgICAgY29uc3Qg
R0xmbG9hdCBtNFtdID0gewogICAgICAgICBtYXRyaXgubTExKCksIG1hdHJpeC5tMTIoKSwgbWF0
cml4Lm0xMygpLCBtYXRyaXgubTE0KCksCiAgICAgICAgIG1hdHJpeC5tMjEoKSwgbWF0cml4Lm0y
MigpLCBtYXRyaXgubTIzKCksIG1hdHJpeC5tMjQoKSwKICAgICAgICAgbWF0cml4Lm0zMSgpLCBt
YXRyaXgubTMyKCksIG1hdHJpeC5tMzMoKSwgbWF0cml4Lm0zNCgpLAogICAgICAgICBtYXRyaXgu
bTQxKCksIG1hdHJpeC5tNDIoKSwgbWF0cml4Lm00MygpLCBtYXRyaXgubTQ0KCkKICAgICB9Owog
Ci0gICAgY29uc3QgR0MzRGZsb2F0IG00YWxsW10gPSB7CisgICAgY29uc3QgR0xmbG9hdCBtNGFs
bFtdID0gewogICAgICAgICAyLCAwLCAwLCAwLAogICAgICAgICAwLCAyLCAwLCAwLAogICAgICAg
ICAwLCAwLCAxLCAwLApAQCAtOTIzLDQyICs5NDgsNDMgQEAgdm9pZCBUZXh0dXJlTWFwcGVyR0w6
OmJlZ2luQ2xpcChjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgbW9kZWxWaWV3TWF0cml4LCBj
b24KIAogICAgIGludCYgc3RlbmNpbEluZGV4ID0gY2xpcFN0YWNrKCkuY3VycmVudCgpLnN0ZW5j
aWxJbmRleDsKIAotICAgIG1fY29udGV4dDNELT5lbmFibGUoR3JhcGhpY3NDb250ZXh0M0Q6OlNU
RU5DSUxfVEVTVCk7CisgICAgR0xfQ01EKGdsRW5hYmxlKEdMX1NURU5DSUxfVEVTVCkpOwogCiAg
ICAgLy8gTWFrZSBzdXJlIHdlIGRvbid0IGRvIGFueSBhY3R1YWwgZHJhd2luZy4KLSAgICBtX2Nv
bnRleHQzRC0+c3RlbmNpbEZ1bmMoR3JhcGhpY3NDb250ZXh0M0Q6Ok5FVkVSLCBzdGVuY2lsSW5k
ZXgsIHN0ZW5jaWxJbmRleCk7CisgICAgR0xfQ01EKGdsU3RlbmNpbEZ1bmMoR0xfTkVWRVIsIHN0
ZW5jaWxJbmRleCwgc3RlbmNpbEluZGV4KSk7CiAKICAgICAvLyBPcGVyYXRlIG9ubHkgb24gdGhl
IHN0ZW5jaWxJbmRleCBhbmQgYWJvdmUuCi0gICAgbV9jb250ZXh0M0QtPnN0ZW5jaWxNYXNrKDB4
ZmYgJiB+KHN0ZW5jaWxJbmRleCAtIDEpKTsKKyAgICBHTF9DTUQoZ2xTdGVuY2lsTWFzaygweGZm
ICYgfihzdGVuY2lsSW5kZXggLSAxKSkpOwogCiAgICAgLy8gRmlyc3QgY2xlYXIgdGhlIGVudGly
ZSBidWZmZXIgYXQgdGhlIGN1cnJlbnQgaW5kZXguCi0gICAgbV9jb250ZXh0M0QtPnVuaWZvcm1N
YXRyaXg0ZnYocHJvZ3JhbS0+bWF0cml4TG9jYXRpb24oKSwgMSwgZmFsc2UsIGNvbnN0X2Nhc3Q8
R0MzRGZsb2F0Kj4obTRhbGwpKTsKLSAgICBtX2NvbnRleHQzRC0+c3RlbmNpbE9wKEdyYXBoaWNz
Q29udGV4dDNEOjpaRVJPLCBHcmFwaGljc0NvbnRleHQzRDo6WkVSTywgR3JhcGhpY3NDb250ZXh0
M0Q6OlpFUk8pOwotICAgIG1fY29udGV4dDNELT5kcmF3QXJyYXlzKEdyYXBoaWNzQ29udGV4dDNE
OjpUUklBTkdMRV9GQU4sIDAsIDQpOworICAgIEdMX0NNRChnbFVuaWZvcm1NYXRyaXg0ZnYocHJv
Z3JhbS0+bWF0cml4TG9jYXRpb24oKSwgMSwgR0xfRkFMU0UsIG00YWxsKSk7CisgICAgR0xfQ01E
KGdsU3RlbmNpbE9wKEdMX1pFUk8sIEdMX1pFUk8sIEdMX1pFUk8pKTsKKyAgICBHTF9DTUQoZ2xE
cmF3QXJyYXlzKEdMX1RSSUFOR0xFX0ZBTiwgMCwgNCkpOwogCiAgICAgLy8gTm93IGFwcGx5IHRo
ZSBjdXJyZW50IGluZGV4IHRvIHRoZSBuZXcgcXVhZC4KLSAgICBtX2NvbnRleHQzRC0+c3RlbmNp
bE9wKEdyYXBoaWNzQ29udGV4dDNEOjpSRVBMQUNFLCBHcmFwaGljc0NvbnRleHQzRDo6UkVQTEFD
RSwgR3JhcGhpY3NDb250ZXh0M0Q6OlJFUExBQ0UpOwotICAgIG1fY29udGV4dDNELT51bmlmb3Jt
TWF0cml4NGZ2KHByb2dyYW0tPm1hdHJpeExvY2F0aW9uKCksIDEsIGZhbHNlLCBjb25zdF9jYXN0
PEdDM0RmbG9hdCo+KG00KSk7Ci0gICAgbV9jb250ZXh0M0QtPmRyYXdBcnJheXMoR3JhcGhpY3ND
b250ZXh0M0Q6OlRSSUFOR0xFX0ZBTiwgMCwgNCk7CisgICAgR0xfQ01EKGdsU3RlbmNpbE9wKEdM
X1JFUExBQ0UsIEdMX1JFUExBQ0UsIEdMX1JFUExBQ0UpKTsKKyAgICBHTF9DTUQoZ2xVbmlmb3Jt
TWF0cml4NGZ2KHByb2dyYW0tPm1hdHJpeExvY2F0aW9uKCksIDEsIEdMX0ZBTFNFLCBtNCkpOwor
ICAgIEdMX0NNRChnbERyYXdBcnJheXMoR0xfVFJJQU5HTEVfRkFOLCAwLCA0KSk7CiAKICAgICAv
LyBDbGVhciB0aGUgc3RhdGUuCi0gICAgbV9jb250ZXh0M0QtPmRpc2FibGVWZXJ0ZXhBdHRyaWJB
cnJheShwcm9ncmFtLT52ZXJ0ZXhBdHRyaWIoKSk7Ci0gICAgbV9jb250ZXh0M0QtPnN0ZW5jaWxN
YXNrKDApOworICAgIEdMX0NNRChnbERpc2FibGVWZXJ0ZXhBdHRyaWJBcnJheShwcm9ncmFtLT52
ZXJ0ZXhBdHRyaWIoKSkpOworICAgIEdMX0NNRChnbFN0ZW5jaWxNYXNrKDApKTsKIAogICAgIC8v
IEluY3JlYXNlIHN0ZW5jaWxJbmRleCBhbmQgYXBwbHkgc3RlbmNpbCB0ZXN0aW5nLgogICAgIHN0
ZW5jaWxJbmRleCAqPSAyOwotICAgIGNsaXBTdGFjaygpLmFwcGx5KG1fY29udGV4dDNELmdldCgp
KTsKKyAgICBjbGlwU3RhY2soKS5hcHBseSgpOwogfQogCiB2b2lkIFRleHR1cmVNYXBwZXJHTDo6
ZW5kQ2xpcCgpCiB7CiAgICAgY2xpcFN0YWNrKCkucG9wKCk7Ci0gICAgY2xpcFN0YWNrKCkuYXBw
bHkobV9jb250ZXh0M0QuZ2V0KCkpOworICAgIGNsaXBTdGFjaygpLmFwcGx5KCk7CiB9CiAKIFBh
c3NSZWZQdHI8Qml0bWFwVGV4dHVyZT4gVGV4dHVyZU1hcHBlckdMOjpjcmVhdGVUZXh0dXJlKCkK
IHsKLSAgICBCaXRtYXBUZXh0dXJlR0wqIHRleHR1cmUgPSBuZXcgQml0bWFwVGV4dHVyZUdMKHRo
aXMpOworICAgIEJpdG1hcFRleHR1cmVHTCogdGV4dHVyZSA9IG5ldyBCaXRtYXBUZXh0dXJlR0wo
KTsKKyAgICB0ZXh0dXJlLT5zZXRUZXh0dXJlTWFwcGVyKHRoaXMpOwogICAgIHJldHVybiBhZG9w
dFJlZih0ZXh0dXJlKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJHTC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJHTC5oCmluZGV4IDhhNzJkNjdhZjllZWQy
Y2Q2YjkwZWU4MWE4NWM4MmE5ODA4ZWQ5ZGIuLjA3NmU2NWY3Mzc3NjI2MWYwYTNiOTNiYjg1NzNh
NTA1ZGU5YzAxNzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L3RleG1hcC9UZXh0dXJlTWFwcGVyR0wuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckdMLmgKQEAgLTIzLDggKzIzLDggQEAKICNpZiBV
U0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCiAKICNpbmNsdWRlICJGbG9hdFF1YWQuaCIKLSNp
bmNsdWRlICJHcmFwaGljc0NvbnRleHQzRC5oIgogI2luY2x1ZGUgIkludFNpemUuaCIKKyNpbmNs
dWRlICJPcGVuR0xTaGltcy5oIgogI2luY2x1ZGUgIlRleHR1cmVNYXBwZXIuaCIKICNpbmNsdWRl
ICJUcmFuc2Zvcm1hdGlvbk1hdHJpeC5oIgogCkBAIC0zOCw2ICszOCw3IEBAIGNsYXNzIFRleHR1
cmVNYXBwZXJTaGFkZXJQcm9ncmFtOwogY2xhc3MgVGV4dHVyZU1hcHBlckdMIDogcHVibGljIFRl
eHR1cmVNYXBwZXIgewogcHVibGljOgogICAgIHN0YXRpYyBQYXNzT3duUHRyPFRleHR1cmVNYXBw
ZXJHTD4gY3JlYXRlKCkgeyByZXR1cm4gYWRvcHRQdHIobmV3IFRleHR1cmVNYXBwZXJHTCk7IH0K
KyAgICBUZXh0dXJlTWFwcGVyR0woKTsKICAgICB2aXJ0dWFsIH5UZXh0dXJlTWFwcGVyR0woKTsK
IAogICAgIGVudW0gRmxhZyB7CkBAIC01Myw3ICs1NCw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFs
IHZvaWQgZHJhd1RleHR1cmUoY29uc3QgQml0bWFwVGV4dHVyZSYsIGNvbnN0IEZsb2F0UmVjdCYs
IGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiwgZmxvYXQgb3BhY2l0eSwgY29uc3QgQml0bWFw
VGV4dHVyZSogbWFza1RleHR1cmUsIHVuc2lnbmVkIGV4cG9zZWRFZGdlcykgT1ZFUlJJREU7CiAg
ICAgdmlydHVhbCB2b2lkIGRyYXdUZXh0dXJlKHVpbnQzMl90IHRleHR1cmUsIEZsYWdzLCBjb25z
dCBJbnRTaXplJiB0ZXh0dXJlU2l6ZSwgY29uc3QgRmxvYXRSZWN0JiB0YXJnZXRSZWN0LCBjb25z
dCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgbW9kZWxWaWV3TWF0cml4LCBmbG9hdCBvcGFjaXR5LCBj
b25zdCBCaXRtYXBUZXh0dXJlKiBtYXNrVGV4dHVyZSwgdW5zaWduZWQgZXhwb3NlZEVkZ2VzID0g
QWxsRWRnZXMpOwogCi0jaWYgIVVTRShURVhNQVBfT1BFTkdMX0VTXzIpCisjaWYgZGVmaW5lZChH
TF9BUkJfdGV4dHVyZV9yZWN0YW5nbGUpCiAgICAgdmlydHVhbCB2b2lkIGRyYXdUZXh0dXJlUmVj
dGFuZ2xlQVJCKHVpbnQzMl90IHRleHR1cmUsIEZsYWdzLCBjb25zdCBJbnRTaXplJiB0ZXh0dXJl
U2l6ZSwgY29uc3QgRmxvYXRSZWN0JiB0YXJnZXRSZWN0LCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1h
dHJpeCYgbW9kZWxWaWV3TWF0cml4LCBmbG9hdCBvcGFjaXR5LCBjb25zdCBCaXRtYXBUZXh0dXJl
KiBtYXNrVGV4dHVyZSk7CiAjZW5kaWYKIApAQCAtNjUsNyArNjYsNiBAQCBwdWJsaWM6CiAgICAg
dmlydHVhbCBJbnRTaXplIG1heFRleHR1cmVTaXplKCkgY29uc3QgT1ZFUlJJREUgeyByZXR1cm4g
SW50U2l6ZSgyMDAwLCAyMDAwKTsgfQogICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxCaXRtYXBUZXh0
dXJlPiBjcmVhdGVUZXh0dXJlKCkgT1ZFUlJJREU7CiAgICAgdmlydHVhbCBHcmFwaGljc0NvbnRl
eHQqIGdyYXBoaWNzQ29udGV4dCgpIE9WRVJSSURFIHsgcmV0dXJuIG1fY29udGV4dDsgfQotICAg
IGlubGluZSBHcmFwaGljc0NvbnRleHQzRCogZ3JhcGhpY3NDb250ZXh0M0QoKSBjb25zdCB7IHJl
dHVybiBtX2NvbnRleHQzRC5nZXQoKTsgfQogICAgIHZpcnR1YWwgdm9pZCBzZXRHcmFwaGljc0Nv
bnRleHQoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0KSBPVkVSUklERSB7IG1fY29udGV4dCA9IGNv
bnRleHQ7IH0KIAogI2lmIEVOQUJMRShDU1NfRklMVEVSUykKQEAgLTc1LDYgKzc1LDcgQEAgcHVi
bGljOgogICAgIHZvaWQgc2V0RW5hYmxlRWRnZURpc3RhbmNlQW50aWFsaWFzaW5nKGJvb2wgZW5h
YmxlZCkgeyBtX2VuYWJsZUVkZ2VEaXN0YW5jZUFudGlhbGlhc2luZyA9IGVuYWJsZWQ7IH0KIAog
cHJpdmF0ZToKKwogICAgIHN0cnVjdCBDbGlwU3RhdGUgewogICAgICAgICBJbnRSZWN0IHNjaXNz
b3JCb3g7CiAgICAgICAgIGludCBzdGVuY2lsSW5kZXg7CkBAIC04OCw3ICs4OSw3IEBAIHByaXZh
dGU6CiAgICAgcHVibGljOgogICAgICAgICB2b2lkIHB1c2goKTsKICAgICAgICAgdm9pZCBwb3Ao
KTsKLSAgICAgICAgdm9pZCBhcHBseShHcmFwaGljc0NvbnRleHQzRCopOworICAgICAgICB2b2lk
IGFwcGx5KCk7CiAgICAgICAgIGlubGluZSBDbGlwU3RhdGUmIGN1cnJlbnQoKSB7IHJldHVybiBj
bGlwU3RhdGU7IH0KICAgICAgICAgdm9pZCBpbml0KGNvbnN0IEludFJlY3QmKTsKIApAQCAtMTA4
LDE5ICsxMDksMTYgQEAgcHJpdmF0ZToKICAgICAgICAgRmxvYXRRdWFkIHRhcmdldFJlY3RNYXBw
ZWRUb1VuaXRTcXVhcmU7CiAgICAgfTsKIAotICAgIFRleHR1cmVNYXBwZXJHTCgpOwotCiAgICAg
Ym9vbCBkcmF3VGV4dHVyZVdpdGhBbnRpYWxpYXNpbmcodWludDMyX3QgdGV4dHVyZSwgRmxhZ3Ms
IGNvbnN0IEZsb2F0UmVjdCYgb3JpZ2luYWxUYXJnZXRSZWN0LCBjb25zdCBUcmFuc2Zvcm1hdGlv
bk1hdHJpeCYgbW9kZWxWaWV3TWF0cml4LCBmbG9hdCBvcGFjaXR5LCBjb25zdCBCaXRtYXBUZXh0
dXJlKiBtYXNrVGV4dHVyZSwgdW5zaWduZWQgZXhwb3NlZEVkZ2VzKTsKICAgICB2b2lkIGRyYXdU
ZXh0dXJlZFF1YWRXaXRoUHJvZ3JhbShUZXh0dXJlTWFwcGVyU2hhZGVyUHJvZ3JhbSosIHVpbnQz
Ml90IHRleHR1cmUsIEZsYWdzLCBjb25zdCBEcmF3UXVhZCYsIGNvbnN0IFRyYW5zZm9ybWF0aW9u
TWF0cml4JiBtb2RlbFZpZXdNYXRyaXgsIGZsb2F0IG9wYWNpdHksIGNvbnN0IEJpdG1hcFRleHR1
cmUqIG1hc2tUZXh0dXJlKTsKLSAgICB2b2lkIGRyYXdRdWFkKGNvbnN0IERyYXdRdWFkJiwgY29u
c3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIG1vZGVsVmlld01hdHJpeCwgVGV4dHVyZU1hcHBlclNo
YWRlclByb2dyYW0qLCBHQzNEZW51bSBkcmF3aW5nTW9kZSwgYm9vbCBuZWVkc0JsZW5kaW5nKTsK
KyAgICB2b2lkIGRyYXdRdWFkKGNvbnN0IERyYXdRdWFkJiwgY29uc3QgVHJhbnNmb3JtYXRpb25N
YXRyaXgmIG1vZGVsVmlld01hdHJpeCwgVGV4dHVyZU1hcHBlclNoYWRlclByb2dyYW0qLCBHTGVu
dW0gZHJhd2luZ01vZGUsIGJvb2wgbmVlZHNCbGVuZGluZyk7CiAKICAgICBib29sIGJlZ2luU2Np
c3NvckNsaXAoY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmLCBjb25zdCBGbG9hdFJlY3QmKTsK
ICAgICB2b2lkIGJpbmREZWZhdWx0U3VyZmFjZSgpOwogICAgIENsaXBTdGFjayYgY2xpcFN0YWNr
KCk7CiAgICAgaW5saW5lIFRleHR1cmVNYXBwZXJHTERhdGEmIGRhdGEoKSB7IHJldHVybiAqbV9k
YXRhOyB9Ci0gICAgR3JhcGhpY3NDb250ZXh0KiBtX2NvbnRleHQ7Ci0gICAgUmVmUHRyPEdyYXBo
aWNzQ29udGV4dDNEPiBtX2NvbnRleHQzRDsKICAgICBUZXh0dXJlTWFwcGVyR0xEYXRhKiBtX2Rh
dGE7CisgICAgR3JhcGhpY3NDb250ZXh0KiBtX2NvbnRleHQ7CiAgICAgQ2xpcFN0YWNrIG1fY2xp
cFN0YWNrOwogICAgIGJvb2wgbV9lbmFibGVFZGdlRGlzdGFuY2VBbnRpYWxpYXNpbmc7CiAKQEAg
LTEzNyw3ICsxMzUsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBpbml0aWFsaXplU3RlbmNpbCgpOwog
ICAgIH5CaXRtYXBUZXh0dXJlR0woKTsKICAgICB2aXJ0dWFsIHVpbnQzMl90IGlkKCkgY29uc3Qg
eyByZXR1cm4gbV9pZDsgfQotICAgIHVpbnQzMl90IHRleHR1cmVUYXJnZXQoKSBjb25zdCB7IHJl
dHVybiBHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV8yRDsgfQorICAgIHVpbnQzMl90IHRleHR1
cmVUYXJnZXQoKSBjb25zdCB7IHJldHVybiBHTF9URVhUVVJFXzJEOyB9CiAgICAgSW50U2l6ZSB0
ZXh0dXJlU2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fdGV4dHVyZVNpemU7IH0KICAgICB2b2lkIHNl
dFRleHR1cmVNYXBwZXIoVGV4dHVyZU1hcHBlckdMKiB0ZXhtYXApIHsgbV90ZXh0dXJlTWFwcGVy
ID0gdGV4bWFwOyB9CiAgICAgdm9pZCB1cGRhdGVDb250ZW50cyhJbWFnZSosIGNvbnN0IEludFJl
Y3QmLCBjb25zdCBJbnRQb2ludCYpOwpAQCAtMTQ5LDIyICsxNDcsMjAgQEAgcHVibGljOgogI2Vu
ZGlmCiAKIHByaXZhdGU6Ci0gICAgUGxhdGZvcm0zRE9iamVjdCBtX2lkOworICAgIEdMdWludCBt
X2lkOwogICAgIEludFNpemUgbV90ZXh0dXJlU2l6ZTsKICAgICBJbnRSZWN0IG1fZGlydHlSZWN0
OwotICAgIFBsYXRmb3JtM0RPYmplY3QgbV9mYm87Ci0gICAgUGxhdGZvcm0zRE9iamVjdCBtX3Ji
bzsKKyAgICBHTHVpbnQgbV9mYm87CisgICAgR0x1aW50IG1fcmJvOwogICAgIGJvb2wgbV9zaG91
bGRDbGVhcjsKLSAgICBUZXh0dXJlTWFwcGVyR0w6OkNsaXBTdGFjayBtX2NsaXBTdGFjazsKICAg
ICBUZXh0dXJlTWFwcGVyR0wqIG1fdGV4dHVyZU1hcHBlcjsKLQotICAgIEJpdG1hcFRleHR1cmVH
TCgpOwotICAgIEJpdG1hcFRleHR1cmVHTChUZXh0dXJlTWFwcGVyR0wqIHRleHR1cmVNYXBwZXIp
CisgICAgVGV4dHVyZU1hcHBlckdMOjpDbGlwU3RhY2sgbV9jbGlwU3RhY2s7CisgICAgQml0bWFw
VGV4dHVyZUdMKCkKICAgICAgICAgOiBtX2lkKDApCiAgICAgICAgICwgbV9mYm8oMCkKICAgICAg
ICAgLCBtX3JibygwKQogICAgICAgICAsIG1fc2hvdWxkQ2xlYXIodHJ1ZSkKLSAgICAgICAgLCBt
X3RleHR1cmVNYXBwZXIodGV4dHVyZU1hcHBlcikKKyAgICAgICAgLCBtX3RleHR1cmVNYXBwZXIo
MCkKICAgICB7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlclNoYWRlck1hbmFnZXIuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJTaGFkZXJNYW5hZ2Vy
LmNwcAppbmRleCA1OTIzNWQ5ZGJjZTIxMWI5MGY3ZGJmODJkOGZmZTgzN2VlYWRmNjJlLi4wZmJk
YmU5NWNhZjE2NDcwZGQwNjMyZjA0YzE0NGI4MjBiNmU4YmIzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlclNoYWRlck1hbmFn
ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0
dXJlTWFwcGVyU2hhZGVyTWFuYWdlci5jcHAKQEAgLTMwLDExICszMCwyNSBAQAogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKLSNkZWZpbmUgU1RSSU5HSUZZKHNyYy4uLikgI3NyYworI2lmbmRlZiBU
RVhNQVBfT1BFTkdMX0VTXzIKKyNkZWZpbmUgT0VTMl9QUkVDSVNJT05fREVGSU5JVElPTlMgXAor
ICAgICIjZGVmaW5lIGxvd3BcbiNkZWZpbmUgaGlnaHBcbiIKKyNkZWZpbmUgT0VTMl9GUkFHTUVO
VF9TSEFERVJfREVGQVVMVF9QUkVDSVNJT04KKyNlbHNlCisjZGVmaW5lIE9FUzJfUFJFQ0lTSU9O
X0RFRklOSVRJT05TCisjZGVmaW5lIE9FUzJfRlJBR01FTlRfU0hBREVSX0RFRkFVTFRfUFJFQ0lT
SU9OIFwKKyAgICAicHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7IFxuIgorI2VuZGlmCisKKyNkZWZp
bmUgU1RSSU5HSUZZX1ZBTChzcmMuLi4pICNzcmMKKyNkZWZpbmUgVkVSVEVYX1NIQURFUihzcmMu
Li4pIE9FUzJfUFJFQ0lTSU9OX0RFRklOSVRJT05TXAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgU1RSSU5HSUZZX1ZBTChzcmMpCisjZGVmaW5lIEZSQUdNRU5UX1NIQURFUihzcmMuLi4p
IE9FUzJfUFJFQ0lTSU9OX0RFRklOSVRJT05TXAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBPRVMyX0ZSQUdNRU5UX1NIQURFUl9ERUZBVUxUX1BSRUNJU0lPTlwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgU1RSSU5HSUZZX1ZBTChzcmMpCiAKIHN0YXRpYyBjb25zdCBj
aGFyKiBmcmFnbWVudFNoYWRlclNvdXJjZU9wYWNpdHlBbmRNYXNrID0KLSAgICBTVFJJTkdJRlko
Ci0gICAgICAgIHByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworICAgIEZSQUdNRU5UX1NIQURFUigK
ICAgICAgICAgdW5pZm9ybSBzYW1wbGVyMkQgc19zb3VyY2U7CiAgICAgICAgIHVuaWZvcm0gc2Ft
cGxlcjJEIHNfbWFzazsKICAgICAgICAgdW5pZm9ybSBsb3dwIGZsb2F0IHVfb3BhY2l0eTsKQEAg
LTUwLDggKzY0LDcgQEAgc3RhdGljIGNvbnN0IGNoYXIqIGZyYWdtZW50U2hhZGVyU291cmNlT3Bh
Y2l0eUFuZE1hc2sgPQogICAgICk7CiAKIHN0YXRpYyBjb25zdCBjaGFyKiBmcmFnbWVudFNoYWRl
clNvdXJjZVJlY3RPcGFjaXR5QW5kTWFzayA9Ci0gICAgU1RSSU5HSUZZKAotICAgICAgICBwcmVj
aXNpb24gbWVkaXVtcCBmbG9hdDsKKyAgICBGUkFHTUVOVF9TSEFERVIoCiAgICAgICAgIHVuaWZv
cm0gc2FtcGxlcjJEUmVjdCBzX3NvdXJjZTsKICAgICAgICAgdW5pZm9ybSBzYW1wbGVyMkRSZWN0
IHNfbWFzazsKICAgICAgICAgdW5pZm9ybSBsb3dwIGZsb2F0IHVfb3BhY2l0eTsKQEAgLTY3LDcg
KzgwLDcgQEAgc3RhdGljIGNvbnN0IGNoYXIqIGZyYWdtZW50U2hhZGVyU291cmNlUmVjdE9wYWNp
dHlBbmRNYXNrID0KICAgICApOwogCiBzdGF0aWMgY29uc3QgY2hhciogdmVydGV4U2hhZGVyU291
cmNlT3BhY2l0eUFuZE1hc2sgPQotICAgIFNUUklOR0lGWSgKKyAgICBWRVJURVhfU0hBREVSKAog
ICAgICAgICB1bmlmb3JtIG1hdDQgdV9tYXRyaXg7CiAgICAgICAgIHVuaWZvcm0gbG93cCBmbG9h
dCB1X2ZsaXA7CiAgICAgICAgIGF0dHJpYnV0ZSB2ZWM0IGFfdmVydGV4OwpAQCAtODIsOCArOTUs
NyBAQCBzdGF0aWMgY29uc3QgY2hhciogdmVydGV4U2hhZGVyU291cmNlT3BhY2l0eUFuZE1hc2sg
PQogICAgICk7CiAKIHN0YXRpYyBjb25zdCBjaGFyKiBmcmFnbWVudFNoYWRlclNvdXJjZVNpbXBs
ZSA9Ci0gICAgU1RSSU5HSUZZKAotICAgICAgICBwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKyAg
ICBGUkFHTUVOVF9TSEFERVIoCiAgICAgICAgIHVuaWZvcm0gc2FtcGxlcjJEIHNfc291cmNlOwog
ICAgICAgICB1bmlmb3JtIGxvd3AgZmxvYXQgdV9vcGFjaXR5OwogICAgICAgICB2YXJ5aW5nIGhp
Z2hwIHZlYzIgdl9zb3VyY2VUZXhDb29yZDsKQEAgLTk1LDggKzEwNyw3IEBAIHN0YXRpYyBjb25z
dCBjaGFyKiBmcmFnbWVudFNoYWRlclNvdXJjZVNpbXBsZSA9CiAgICAgKTsKIAogc3RhdGljIGNv
bnN0IGNoYXIqIGZyYWdtZW50U2hhZGVyU291cmNlQW50aWFsaWFzaW5nTm9NYXNrID0KLSAgICBT
VFJJTkdJRlkoCi0gICAgICAgIHByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworICAgIEZSQUdNRU5U
X1NIQURFUigKICAgICAgICAgdW5pZm9ybSBzYW1wbGVyMkQgc19zb3VyY2U7CiAgICAgICAgIHZh
cnlpbmcgaGlnaHAgdmVjMiB2X3NvdXJjZVRleENvb3JkOwogICAgICAgICB1bmlmb3JtIGxvd3Ag
ZmxvYXQgdV9vcGFjaXR5OwpAQCAtMTM0LDggKzE0NSw3IEBAIHN0YXRpYyBjb25zdCBjaGFyKiBm
cmFnbWVudFNoYWRlclNvdXJjZUFudGlhbGlhc2luZ05vTWFzayA9CiAgICAgKTsKIAogc3RhdGlj
IGNvbnN0IGNoYXIqIGZyYWdtZW50U2hhZGVyU291cmNlUmVjdFNpbXBsZSA9Ci0gICAgU1RSSU5H
SUZZKAotICAgICAgICBwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKyAgICBGUkFHTUVOVF9TSEFE
RVIoCiAgICAgICAgIHVuaWZvcm0gc2FtcGxlcjJEUmVjdCBzX3NvdXJjZTsKICAgICAgICAgdW5p
Zm9ybSBsb3dwIHZlYzIgdV90ZXh0dXJlU2l6ZTsKICAgICAgICAgdW5pZm9ybSBsb3dwIGZsb2F0
IHVfb3BhY2l0eTsKQEAgLTE0OCw3ICsxNTgsNyBAQCBzdGF0aWMgY29uc3QgY2hhciogZnJhZ21l
bnRTaGFkZXJTb3VyY2VSZWN0U2ltcGxlID0KICAgICApOwogCiBzdGF0aWMgY29uc3QgY2hhciog
dmVydGV4U2hhZGVyU291cmNlU2ltcGxlID0KLSAgICBTVFJJTkdJRlkoCisgICAgVkVSVEVYX1NI
QURFUigKICAgICAgICAgdW5pZm9ybSBtYXQ0IHVfbWF0cml4OwogICAgICAgICB1bmlmb3JtIGxv
d3AgZmxvYXQgdV9mbGlwOwogICAgICAgICBhdHRyaWJ1dGUgdmVjNCBhX3ZlcnRleDsKQEAgLTE2
MSw3ICsxNzEsNyBAQCBzdGF0aWMgY29uc3QgY2hhciogdmVydGV4U2hhZGVyU291cmNlU2ltcGxl
ID0KICAgICApOwogCiBzdGF0aWMgY29uc3QgY2hhciogdmVydGV4U2hhZGVyU291cmNlU29saWRD
b2xvciA9Ci0gICAgU1RSSU5HSUZZKAorICAgIFZFUlRFWF9TSEFERVIoCiAgICAgICAgIHVuaWZv
cm0gbWF0NCB1X21hdHJpeDsKICAgICAgICAgYXR0cmlidXRlIHZlYzQgYV92ZXJ0ZXg7CiAgICAg
ICAgIHZvaWQgbWFpbih2b2lkKQpAQCAtMTcyLDggKzE4Miw3IEBAIHN0YXRpYyBjb25zdCBjaGFy
KiB2ZXJ0ZXhTaGFkZXJTb3VyY2VTb2xpZENvbG9yID0KIAogCiBzdGF0aWMgY29uc3QgY2hhciog
ZnJhZ21lbnRTaGFkZXJTb3VyY2VTb2xpZENvbG9yID0KLSAgICBTVFJJTkdJRlkoCi0gICAgICAg
IHByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworICAgIFZFUlRFWF9TSEFERVIoCiAgICAgICAgIHVu
aWZvcm0gdmVjNCB1X2NvbG9yOwogICAgICAgICB2b2lkIG1haW4odm9pZCkKICAgICAgICAgewpA
QCAtMjAzLDIyICsyMTIsMjIgQEAgUGFzc1JlZlB0cjxUZXh0dXJlTWFwcGVyU2hhZGVyUHJvZ3Jh
bT4gVGV4dHVyZU1hcHBlclNoYWRlck1hbmFnZXI6OmdldFNoYWRlclByb2cKIAogICAgIHN3aXRj
aCAoc2hhZGVyVHlwZSkgewogICAgIGNhc2UgU2ltcGxlOgotICAgICAgICBwcm9ncmFtID0gVGV4
dHVyZU1hcHBlclNoYWRlclByb2dyYW1TaW1wbGU6OmNyZWF0ZShtX2NvbnRleHQpOworICAgICAg
ICBwcm9ncmFtID0gVGV4dHVyZU1hcHBlclNoYWRlclByb2dyYW1TaW1wbGU6OmNyZWF0ZSgpOwog
ICAgICAgICBicmVhazsKICAgICBjYXNlIFJlY3RTaW1wbGU6Ci0gICAgICAgIHByb2dyYW0gPSBU
ZXh0dXJlTWFwcGVyU2hhZGVyUHJvZ3JhbVJlY3RTaW1wbGU6OmNyZWF0ZShtX2NvbnRleHQpOwor
ICAgICAgICBwcm9ncmFtID0gVGV4dHVyZU1hcHBlclNoYWRlclByb2dyYW1SZWN0U2ltcGxlOjpj
cmVhdGUoKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBBbnRpYWxpYXNpbmdOb01hc2s6Ci0g
ICAgICAgIHByb2dyYW0gPSBUZXh0dXJlTWFwcGVyU2hhZGVyUHJvZ3JhbUFudGlhbGlhc2luZ05v
TWFzazo6Y3JlYXRlKG1fY29udGV4dCk7CisgICAgICAgIHByb2dyYW0gPSBUZXh0dXJlTWFwcGVy
U2hhZGVyUHJvZ3JhbUFudGlhbGlhc2luZ05vTWFzazo6Y3JlYXRlKCk7CiAgICAgICAgIGJyZWFr
OwogICAgIGNhc2UgT3BhY2l0eUFuZE1hc2s6Ci0gICAgICAgIHByb2dyYW0gPSBUZXh0dXJlTWFw
cGVyU2hhZGVyUHJvZ3JhbU9wYWNpdHlBbmRNYXNrOjpjcmVhdGUobV9jb250ZXh0KTsKKyAgICAg
ICAgcHJvZ3JhbSA9IFRleHR1cmVNYXBwZXJTaGFkZXJQcm9ncmFtT3BhY2l0eUFuZE1hc2s6OmNy
ZWF0ZSgpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIFJlY3RPcGFjaXR5QW5kTWFzazoKLSAg
ICAgICAgcHJvZ3JhbSA9IFRleHR1cmVNYXBwZXJTaGFkZXJQcm9ncmFtUmVjdE9wYWNpdHlBbmRN
YXNrOjpjcmVhdGUobV9jb250ZXh0KTsKKyAgICAgICAgcHJvZ3JhbSA9IFRleHR1cmVNYXBwZXJT
aGFkZXJQcm9ncmFtUmVjdE9wYWNpdHlBbmRNYXNrOjpjcmVhdGUoKTsKICAgICAgICAgYnJlYWs7
CiAgICAgY2FzZSBTb2xpZENvbG9yOgotICAgICAgICBwcm9ncmFtID0gVGV4dHVyZU1hcHBlclNo
YWRlclByb2dyYW1Tb2xpZENvbG9yOjpjcmVhdGUobV9jb250ZXh0KTsKKyAgICAgICAgcHJvZ3Jh
bSA9IFRleHR1cmVNYXBwZXJTaGFkZXJQcm9ncmFtU29saWRDb2xvcjo6Y3JlYXRlKCk7CiAgICAg
ICAgIGJyZWFrOwogICAgIGNhc2UgSW52YWxpZDoKICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVE
KCk7CkBAIC0yMjcsOSArMjM2LDggQEAgUGFzc1JlZlB0cjxUZXh0dXJlTWFwcGVyU2hhZGVyUHJv
Z3JhbT4gVGV4dHVyZU1hcHBlclNoYWRlck1hbmFnZXI6OmdldFNoYWRlclByb2cKICAgICByZXR1
cm4gcHJvZ3JhbTsKIH0KIAotVGV4dHVyZU1hcHBlclNoYWRlclByb2dyYW06OlRleHR1cmVNYXBw
ZXJTaGFkZXJQcm9ncmFtKEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0LCBjb25zdCBjaGFyKiB2
ZXJ0ZXhTaGFkZXJTb3VyY2UsIGNvbnN0IGNoYXIqIGZyYWdtZW50U2hhZGVyU291cmNlKQotICAg
IDogbV9jb250ZXh0KGNvbnRleHQpCi0gICAgLCBtX2lkKDApCitUZXh0dXJlTWFwcGVyU2hhZGVy
UHJvZ3JhbTo6VGV4dHVyZU1hcHBlclNoYWRlclByb2dyYW0oY29uc3QgY2hhciogdmVydGV4U2hh
ZGVyU291cmNlLCBjb25zdCBjaGFyKiBmcmFnbWVudFNoYWRlclNvdXJjZSkKKyAgICA6IG1faWQo
MCkKICAgICAsIG1fdmVydGV4QXR0cmliKDApCiAgICAgLCBtX3ZlcnRleFNoYWRlcigwKQogICAg
ICwgbV9mcmFnbWVudFNoYWRlcigwKQpAQCAtMjQ4LDQ2ICsyNTYsNDYgQEAgdm9pZCBUZXh0dXJl
TWFwcGVyU2hhZGVyUHJvZ3JhbTo6aW5pdGlhbGl6ZVByb2dyYW0oKQogewogICAgIGNvbnN0IGNo
YXIqIHZlcnRleFNoYWRlclNvdXJjZVByb2dyYW0gPSB2ZXJ0ZXhTaGFkZXJTb3VyY2UoKTsKICAg
ICBjb25zdCBjaGFyKiBmcmFnbWVudFNoYWRlclNvdXJjZVByb2dyYW0gPSBmcmFnbWVudFNoYWRl
clNvdXJjZSgpOwotICAgIFBsYXRmb3JtM0RPYmplY3QgdmVydGV4U2hhZGVyID0gbV9jb250ZXh0
LT5jcmVhdGVTaGFkZXIoR3JhcGhpY3NDb250ZXh0M0Q6OlZFUlRFWF9TSEFERVIpOwotICAgIFBs
YXRmb3JtM0RPYmplY3QgZnJhZ21lbnRTaGFkZXIgPSBtX2NvbnRleHQtPmNyZWF0ZVNoYWRlcihH
cmFwaGljc0NvbnRleHQzRDo6RlJBR01FTlRfU0hBREVSKTsKLSAgICBtX2NvbnRleHQtPnNoYWRl
clNvdXJjZSh2ZXJ0ZXhTaGFkZXIsIHZlcnRleFNoYWRlclNvdXJjZVByb2dyYW0pOwotICAgIG1f
Y29udGV4dC0+c2hhZGVyU291cmNlKGZyYWdtZW50U2hhZGVyLCBmcmFnbWVudFNoYWRlclNvdXJj
ZVByb2dyYW0pOwotICAgIFBsYXRmb3JtM0RPYmplY3QgcHJvZ3JhbUlEID0gbV9jb250ZXh0LT5j
cmVhdGVQcm9ncmFtKCk7Ci0gICAgbV9jb250ZXh0LT5jb21waWxlU2hhZGVyKHZlcnRleFNoYWRl
cik7Ci0gICAgbV9jb250ZXh0LT5jb21waWxlU2hhZGVyKGZyYWdtZW50U2hhZGVyKTsKKyAgICBH
THVpbnQgdmVydGV4U2hhZGVyID0gZ2xDcmVhdGVTaGFkZXIoR0xfVkVSVEVYX1NIQURFUik7Cisg
ICAgR0x1aW50IGZyYWdtZW50U2hhZGVyID0gZ2xDcmVhdGVTaGFkZXIoR0xfRlJBR01FTlRfU0hB
REVSKTsKKyAgICBnbFNoYWRlclNvdXJjZSh2ZXJ0ZXhTaGFkZXIsIDEsICZ2ZXJ0ZXhTaGFkZXJT
b3VyY2VQcm9ncmFtLCAwKTsKKyAgICBnbFNoYWRlclNvdXJjZShmcmFnbWVudFNoYWRlciwgMSwg
JmZyYWdtZW50U2hhZGVyU291cmNlUHJvZ3JhbSwgMCk7CisgICAgR0x1aW50IHByb2dyYW1JRCA9
IGdsQ3JlYXRlUHJvZ3JhbSgpOworICAgIGdsQ29tcGlsZVNoYWRlcih2ZXJ0ZXhTaGFkZXIpOwor
ICAgIGdsQ29tcGlsZVNoYWRlcihmcmFnbWVudFNoYWRlcik7CiAKLSAgICBtX2NvbnRleHQtPmF0
dGFjaFNoYWRlcihwcm9ncmFtSUQsIHZlcnRleFNoYWRlcik7Ci0gICAgbV9jb250ZXh0LT5hdHRh
Y2hTaGFkZXIocHJvZ3JhbUlELCBmcmFnbWVudFNoYWRlcik7Ci0gICAgbV9jb250ZXh0LT5saW5r
UHJvZ3JhbShwcm9ncmFtSUQpOworICAgIGdsQXR0YWNoU2hhZGVyKHByb2dyYW1JRCwgdmVydGV4
U2hhZGVyKTsKKyAgICBnbEF0dGFjaFNoYWRlcihwcm9ncmFtSUQsIGZyYWdtZW50U2hhZGVyKTsK
KyAgICBnbExpbmtQcm9ncmFtKHByb2dyYW1JRCk7CiAKLSAgICBtX3ZlcnRleEF0dHJpYiA9IG1f
Y29udGV4dC0+Z2V0QXR0cmliTG9jYXRpb24ocHJvZ3JhbUlELCAiYV92ZXJ0ZXgiKTsKKyAgICBt
X3ZlcnRleEF0dHJpYiA9IGdsR2V0QXR0cmliTG9jYXRpb24ocHJvZ3JhbUlELCAiYV92ZXJ0ZXgi
KTsKIAogICAgIG1faWQgPSBwcm9ncmFtSUQ7CiAgICAgbV92ZXJ0ZXhTaGFkZXIgPSB2ZXJ0ZXhT
aGFkZXI7CiAgICAgbV9mcmFnbWVudFNoYWRlciA9IGZyYWdtZW50U2hhZGVyOwogfQogCi12b2lk
IFRleHR1cmVNYXBwZXJTaGFkZXJQcm9ncmFtOjpnZXRVbmlmb3JtTG9jYXRpb24oR0MzRGludCAm
dmFyaWFibGUsIGNvbnN0IGNoYXIqIG5hbWUpCit2b2lkIFRleHR1cmVNYXBwZXJTaGFkZXJQcm9n
cmFtOjpnZXRVbmlmb3JtTG9jYXRpb24oR0xpbnQgJnZhcmlhYmxlLCBjb25zdCBjaGFyKiBuYW1l
KQogewotICAgIHZhcmlhYmxlID0gbV9jb250ZXh0LT5nZXRVbmlmb3JtTG9jYXRpb24obV9pZCwg
bmFtZSk7CisgICAgdmFyaWFibGUgPSBnbEdldFVuaWZvcm1Mb2NhdGlvbihtX2lkLCBuYW1lKTsK
ICAgICBBU1NFUlQodmFyaWFibGUgPj0gMCk7CiB9CiAKIFRleHR1cmVNYXBwZXJTaGFkZXJQcm9n
cmFtOjp+VGV4dHVyZU1hcHBlclNoYWRlclByb2dyYW0oKQogewotICAgIFBsYXRmb3JtM0RPYmpl
Y3QgcHJvZ3JhbUlEID0gbV9pZDsKKyAgICBHTHVpbnQgcHJvZ3JhbUlEID0gbV9pZDsKICAgICBp
ZiAoIXByb2dyYW1JRCkKICAgICAgICAgcmV0dXJuOwogCi0gICAgbV9jb250ZXh0LT5kZXRhY2hT
aGFkZXIocHJvZ3JhbUlELCBtX3ZlcnRleFNoYWRlcik7Ci0gICAgbV9jb250ZXh0LT5kZWxldGVT
aGFkZXIobV92ZXJ0ZXhTaGFkZXIpOwotICAgIG1fY29udGV4dC0+ZGV0YWNoU2hhZGVyKHByb2dy
YW1JRCwgbV9mcmFnbWVudFNoYWRlcik7Ci0gICAgbV9jb250ZXh0LT5kZWxldGVTaGFkZXIobV9m
cmFnbWVudFNoYWRlcik7Ci0gICAgbV9jb250ZXh0LT5kZWxldGVQcm9ncmFtKHByb2dyYW1JRCk7
CisgICAgZ2xEZXRhY2hTaGFkZXIocHJvZ3JhbUlELCBtX3ZlcnRleFNoYWRlcik7CisgICAgZ2xE
ZWxldGVTaGFkZXIobV92ZXJ0ZXhTaGFkZXIpOworICAgIGdsRGV0YWNoU2hhZGVyKHByb2dyYW1J
RCwgbV9mcmFnbWVudFNoYWRlcik7CisgICAgZ2xEZWxldGVTaGFkZXIobV9mcmFnbWVudFNoYWRl
cik7CisgICAgZ2xEZWxldGVQcm9ncmFtKHByb2dyYW1JRCk7CiB9CiAKLVRleHR1cmVNYXBwZXJT
aGFkZXJQcm9ncmFtU2ltcGxlOjpUZXh0dXJlTWFwcGVyU2hhZGVyUHJvZ3JhbVNpbXBsZShHcmFw
aGljc0NvbnRleHQzRCogY29udGV4dCkKLSAgICA6IFRleHR1cmVNYXBwZXJTaGFkZXJQcm9ncmFt
KGNvbnRleHQsIHZlcnRleFNoYWRlclNvdXJjZVNpbXBsZSwgZnJhZ21lbnRTaGFkZXJTb3VyY2VT
aW1wbGUpCitUZXh0dXJlTWFwcGVyU2hhZGVyUHJvZ3JhbVNpbXBsZTo6VGV4dHVyZU1hcHBlclNo
YWRlclByb2dyYW1TaW1wbGUoKQorICAgIDogVGV4dHVyZU1hcHBlclNoYWRlclByb2dyYW0odmVy
dGV4U2hhZGVyU291cmNlU2ltcGxlLCBmcmFnbWVudFNoYWRlclNvdXJjZVNpbXBsZSkKIHsKICAg
ICBpbml0aWFsaXplUHJvZ3JhbSgpOwogICAgIGdldFVuaWZvcm1Mb2NhdGlvbihtX2ZsaXBMb2Nh
dGlvbiwgInVfZmxpcCIpOwpAQCAtMjk2LDE2ICszMDQsMTYgQEAgVGV4dHVyZU1hcHBlclNoYWRl
clByb2dyYW1TaW1wbGU6OlRleHR1cmVNYXBwZXJTaGFkZXJQcm9ncmFtU2ltcGxlKEdyYXBoaWNz
Q29udGUKICAgICBnZXRVbmlmb3JtTG9jYXRpb24obV9vcGFjaXR5TG9jYXRpb24sICJ1X29wYWNp
dHkiKTsKIH0KIAotVGV4dHVyZU1hcHBlclNoYWRlclByb2dyYW1Tb2xpZENvbG9yOjpUZXh0dXJl
TWFwcGVyU2hhZGVyUHJvZ3JhbVNvbGlkQ29sb3IoR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQp
Ci0gICAgOiBUZXh0dXJlTWFwcGVyU2hhZGVyUHJvZ3JhbShjb250ZXh0LCB2ZXJ0ZXhTaGFkZXJT
b3VyY2VTb2xpZENvbG9yLCBmcmFnbWVudFNoYWRlclNvdXJjZVNvbGlkQ29sb3IpCitUZXh0dXJl
TWFwcGVyU2hhZGVyUHJvZ3JhbVNvbGlkQ29sb3I6OlRleHR1cmVNYXBwZXJTaGFkZXJQcm9ncmFt
U29saWRDb2xvcigpCisgICAgOiBUZXh0dXJlTWFwcGVyU2hhZGVyUHJvZ3JhbSh2ZXJ0ZXhTaGFk
ZXJTb3VyY2VTb2xpZENvbG9yLCBmcmFnbWVudFNoYWRlclNvdXJjZVNvbGlkQ29sb3IpCiB7CiAg
ICAgaW5pdGlhbGl6ZVByb2dyYW0oKTsKICAgICBnZXRVbmlmb3JtTG9jYXRpb24obV9tYXRyaXhM
b2NhdGlvbiwgInVfbWF0cml4Iik7CiAgICAgZ2V0VW5pZm9ybUxvY2F0aW9uKG1fY29sb3JMb2Nh
dGlvbiwgInVfY29sb3IiKTsKIH0KIAotVGV4dHVyZU1hcHBlclNoYWRlclByb2dyYW1SZWN0U2lt
cGxlOjpUZXh0dXJlTWFwcGVyU2hhZGVyUHJvZ3JhbVJlY3RTaW1wbGUoR3JhcGhpY3NDb250ZXh0
M0QqIGNvbnRleHQpCi0gICAgOiBUZXh0dXJlTWFwcGVyU2hhZGVyUHJvZ3JhbShjb250ZXh0LCB2
ZXJ0ZXhTaGFkZXJTb3VyY2VTaW1wbGUsIGZyYWdtZW50U2hhZGVyU291cmNlUmVjdFNpbXBsZSkK
K1RleHR1cmVNYXBwZXJTaGFkZXJQcm9ncmFtUmVjdFNpbXBsZTo6VGV4dHVyZU1hcHBlclNoYWRl
clByb2dyYW1SZWN0U2ltcGxlKCkKKyAgICA6IFRleHR1cmVNYXBwZXJTaGFkZXJQcm9ncmFtKHZl
cnRleFNoYWRlclNvdXJjZVNpbXBsZSwgZnJhZ21lbnRTaGFkZXJTb3VyY2VSZWN0U2ltcGxlKQog
ewogICAgIGluaXRpYWxpemVQcm9ncmFtKCk7CiAgICAgZ2V0VW5pZm9ybUxvY2F0aW9uKG1fbWF0
cml4TG9jYXRpb24sICJ1X21hdHJpeCIpOwpAQCAtMzE1LDggKzMyMyw4IEBAIFRleHR1cmVNYXBw
ZXJTaGFkZXJQcm9ncmFtUmVjdFNpbXBsZTo6VGV4dHVyZU1hcHBlclNoYWRlclByb2dyYW1SZWN0
U2ltcGxlKEdyYXBoCiAgICAgZ2V0VW5pZm9ybUxvY2F0aW9uKG1fb3BhY2l0eUxvY2F0aW9uLCAi
dV9vcGFjaXR5Iik7CiB9CiAKLVRleHR1cmVNYXBwZXJTaGFkZXJQcm9ncmFtT3BhY2l0eUFuZE1h
c2s6OlRleHR1cmVNYXBwZXJTaGFkZXJQcm9ncmFtT3BhY2l0eUFuZE1hc2soR3JhcGhpY3NDb250
ZXh0M0QqIGNvbnRleHQpCi0gICAgOiBUZXh0dXJlTWFwcGVyU2hhZGVyUHJvZ3JhbShjb250ZXh0
LCB2ZXJ0ZXhTaGFkZXJTb3VyY2VPcGFjaXR5QW5kTWFzaywgZnJhZ21lbnRTaGFkZXJTb3VyY2VP
cGFjaXR5QW5kTWFzaykKK1RleHR1cmVNYXBwZXJTaGFkZXJQcm9ncmFtT3BhY2l0eUFuZE1hc2s6
OlRleHR1cmVNYXBwZXJTaGFkZXJQcm9ncmFtT3BhY2l0eUFuZE1hc2soKQorICAgIDogVGV4dHVy
ZU1hcHBlclNoYWRlclByb2dyYW0odmVydGV4U2hhZGVyU291cmNlT3BhY2l0eUFuZE1hc2ssIGZy
YWdtZW50U2hhZGVyU291cmNlT3BhY2l0eUFuZE1hc2spCiB7CiAgICAgaW5pdGlhbGl6ZVByb2dy
YW0oKTsKICAgICBnZXRVbmlmb3JtTG9jYXRpb24obV9tYXRyaXhMb2NhdGlvbiwgInVfbWF0cml4
Iik7CkBAIC0zMjYsOCArMzM0LDggQEAgVGV4dHVyZU1hcHBlclNoYWRlclByb2dyYW1PcGFjaXR5
QW5kTWFzazo6VGV4dHVyZU1hcHBlclNoYWRlclByb2dyYW1PcGFjaXR5QW5kTWEKICAgICBnZXRV
bmlmb3JtTG9jYXRpb24obV9vcGFjaXR5TG9jYXRpb24sICJ1X29wYWNpdHkiKTsKIH0KIAotVGV4
dHVyZU1hcHBlclNoYWRlclByb2dyYW1SZWN0T3BhY2l0eUFuZE1hc2s6OlRleHR1cmVNYXBwZXJT
aGFkZXJQcm9ncmFtUmVjdE9wYWNpdHlBbmRNYXNrKEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0
KQotICAgIDogVGV4dHVyZU1hcHBlclNoYWRlclByb2dyYW0oY29udGV4dCwgdmVydGV4U2hhZGVy
U291cmNlT3BhY2l0eUFuZE1hc2ssIGZyYWdtZW50U2hhZGVyU291cmNlUmVjdE9wYWNpdHlBbmRN
YXNrKQorVGV4dHVyZU1hcHBlclNoYWRlclByb2dyYW1SZWN0T3BhY2l0eUFuZE1hc2s6OlRleHR1
cmVNYXBwZXJTaGFkZXJQcm9ncmFtUmVjdE9wYWNpdHlBbmRNYXNrKCkKKyAgICA6IFRleHR1cmVN
YXBwZXJTaGFkZXJQcm9ncmFtKHZlcnRleFNoYWRlclNvdXJjZU9wYWNpdHlBbmRNYXNrLCBmcmFn
bWVudFNoYWRlclNvdXJjZVJlY3RPcGFjaXR5QW5kTWFzaykKIHsKICAgICBpbml0aWFsaXplUHJv
Z3JhbSgpOwogICAgIGdldFVuaWZvcm1Mb2NhdGlvbihtX21hdHJpeExvY2F0aW9uLCAidV9tYXRy
aXgiKTsKQEAgLTMzNyw4ICszNDUsOCBAQCBUZXh0dXJlTWFwcGVyU2hhZGVyUHJvZ3JhbVJlY3RP
cGFjaXR5QW5kTWFzazo6VGV4dHVyZU1hcHBlclNoYWRlclByb2dyYW1SZWN0T3BhYwogICAgIGdl
dFVuaWZvcm1Mb2NhdGlvbihtX29wYWNpdHlMb2NhdGlvbiwgInVfb3BhY2l0eSIpOwogfQogCi1U
ZXh0dXJlTWFwcGVyU2hhZGVyUHJvZ3JhbUFudGlhbGlhc2luZ05vTWFzazo6VGV4dHVyZU1hcHBl
clNoYWRlclByb2dyYW1BbnRpYWxpYXNpbmdOb01hc2soR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRl
eHQpCi0gICAgOiBUZXh0dXJlTWFwcGVyU2hhZGVyUHJvZ3JhbShjb250ZXh0LCB2ZXJ0ZXhTaGFk
ZXJTb3VyY2VTaW1wbGUsIGZyYWdtZW50U2hhZGVyU291cmNlQW50aWFsaWFzaW5nTm9NYXNrKQor
VGV4dHVyZU1hcHBlclNoYWRlclByb2dyYW1BbnRpYWxpYXNpbmdOb01hc2s6OlRleHR1cmVNYXBw
ZXJTaGFkZXJQcm9ncmFtQW50aWFsaWFzaW5nTm9NYXNrKCkKKyAgICA6IFRleHR1cmVNYXBwZXJT
aGFkZXJQcm9ncmFtKHZlcnRleFNoYWRlclNvdXJjZVNpbXBsZSwgZnJhZ21lbnRTaGFkZXJTb3Vy
Y2VBbnRpYWxpYXNpbmdOb01hc2spCiB7CiAgICAgaW5pdGlhbGl6ZVByb2dyYW0oKTsKICAgICBn
ZXRVbmlmb3JtTG9jYXRpb24obV9tYXRyaXhMb2NhdGlvbiwgInVfbWF0cml4Iik7CkBAIC0zNDgs
OSArMzU2LDkgQEAgVGV4dHVyZU1hcHBlclNoYWRlclByb2dyYW1BbnRpYWxpYXNpbmdOb01hc2s6
OlRleHR1cmVNYXBwZXJTaGFkZXJQcm9ncmFtQW50aWFsaWEKICAgICBnZXRVbmlmb3JtTG9jYXRp
b24obV9mbGlwTG9jYXRpb24sICJ1X2ZsaXAiKTsKIH0KIAotVGV4dHVyZU1hcHBlclNoYWRlck1h
bmFnZXI6OlRleHR1cmVNYXBwZXJTaGFkZXJNYW5hZ2VyKEdyYXBoaWNzQ29udGV4dDNEKiBjb250
ZXh0KQotICAgIDogbV9jb250ZXh0KGNvbnRleHQpCitUZXh0dXJlTWFwcGVyU2hhZGVyTWFuYWdl
cjo6VGV4dHVyZU1hcHBlclNoYWRlck1hbmFnZXIoKQogeworICAgIEFTU0VSVChpbml0aWFsaXpl
T3BlbkdMU2hpbXMoKSk7CiB9CiAKIFRleHR1cmVNYXBwZXJTaGFkZXJNYW5hZ2VyOjp+VGV4dHVy
ZU1hcHBlclNoYWRlck1hbmFnZXIoKQpAQCAtMzY1LDE5ICszNzMsMTggQEAgVGV4dHVyZU1hcHBl
clNoYWRlck1hbmFnZXI6On5UZXh0dXJlTWFwcGVyU2hhZGVyTWFuYWdlcigpCiAKIFN0YW5kYXJk
RmlsdGVyUHJvZ3JhbTo6flN0YW5kYXJkRmlsdGVyUHJvZ3JhbSgpCiB7Ci0gICAgbV9jb250ZXh0
LT5kZXRhY2hTaGFkZXIobV9pZCwgbV92ZXJ0ZXhTaGFkZXIpOwotICAgIG1fY29udGV4dC0+ZGVs
ZXRlU2hhZGVyKG1fdmVydGV4U2hhZGVyKTsKLSAgICBtX2NvbnRleHQtPmRldGFjaFNoYWRlciht
X2lkLCBtX2ZyYWdtZW50U2hhZGVyKTsKLSAgICBtX2NvbnRleHQtPmRlbGV0ZVNoYWRlcihtX2Zy
YWdtZW50U2hhZGVyKTsKLSAgICBtX2NvbnRleHQtPmRlbGV0ZVByb2dyYW0obV9pZCk7CisgICAg
Z2xEZXRhY2hTaGFkZXIobV9pZCwgbV92ZXJ0ZXhTaGFkZXIpOworICAgIGdsRGVsZXRlU2hhZGVy
KG1fdmVydGV4U2hhZGVyKTsKKyAgICBnbERldGFjaFNoYWRlcihtX2lkLCBtX2ZyYWdtZW50U2hh
ZGVyKTsKKyAgICBnbERlbGV0ZVNoYWRlcihtX2ZyYWdtZW50U2hhZGVyKTsKKyAgICBnbERlbGV0
ZVByb2dyYW0obV9pZCk7CiB9CiAKLVN0YW5kYXJkRmlsdGVyUHJvZ3JhbTo6U3RhbmRhcmRGaWx0
ZXJQcm9ncmFtKEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0LCBGaWx0ZXJPcGVyYXRpb246Ok9w
ZXJhdGlvblR5cGUgdHlwZSwgdW5zaWduZWQgcGFzcykKLSAgICA6IG1fY29udGV4dChjb250ZXh0
KQotICAgICwgbV9pZCgwKQorU3RhbmRhcmRGaWx0ZXJQcm9ncmFtOjpTdGFuZGFyZEZpbHRlclBy
b2dyYW0oRmlsdGVyT3BlcmF0aW9uOjpPcGVyYXRpb25UeXBlIHR5cGUsIHVuc2lnbmVkIHBhc3Mp
CisgICAgOiBtX2lkKDApCiB7CiAgICAgY29uc3QgY2hhciogdmVydGV4U2hhZGVyU291cmNlID0K
LSAgICAgICAgICAgIFNUUklOR0lGWSgKKyAgICAgICAgICAgIFZFUlRFWF9TSEFERVIoCiAgICAg
ICAgICAgICAgICAgYXR0cmlidXRlIHZlYzQgYV92ZXJ0ZXg7CiAgICAgICAgICAgICAgICAgYXR0
cmlidXRlIHZlYzQgYV90ZXhDb29yZDsKICAgICAgICAgICAgICAgICB2YXJ5aW5nIGhpZ2hwIHZl
YzIgdl90ZXhDb29yZDsKQEAgLTM4OSw3ICszOTYsOCBAQCBTdGFuZGFyZEZpbHRlclByb2dyYW06
OlN0YW5kYXJkRmlsdGVyUHJvZ3JhbShHcmFwaGljc0NvbnRleHQzRCogY29udGV4dCwgRmlsdGVy
TwogICAgICAgICAgICAgKTsKIAogI2RlZmluZSBTVEFOREFSRF9GSUxURVIoeC4uLikgXAotICAg
ICAgICAicHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7XG4iXAorICAgICAgICBPRVMyX1BSRUNJU0lP
Tl9ERUZJTklUSU9OU1wKKyAgICAgICAgT0VTMl9GUkFHTUVOVF9TSEFERVJfREVGQVVMVF9QUkVD
SVNJT05cCiAgICAgICAgICJ2YXJ5aW5nIGhpZ2hwIHZlYzIgdl90ZXhDb29yZDtcbiJcCiAgICAg
ICAgICJ1bmlmb3JtIGhpZ2hwIGZsb2F0IHVfYW1vdW50O1xuIlwKICAgICAgICAgInVuaWZvcm0g
c2FtcGxlcjJEIHVfdGV4dHVyZTtcbiJcCkBAIC00ODIsOCArNDkwLDcgQEAgU3RhbmRhcmRGaWx0
ZXJQcm9ncmFtOjpTdGFuZGFyZEZpbHRlclByb2dyYW0oR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRl
eHQsIEZpbHRlck8KICAgICAgICAgKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBGaWx0ZXJP
cGVyYXRpb246OkJMVVI6Ci0gICAgICAgIGZyYWdtZW50U2hhZGVyU291cmNlID0gU1RSSU5HSUZZ
KAotICAgICAgICAgICAgcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisgICAgICAgIGZyYWdtZW50
U2hhZGVyU291cmNlID0gRlJBR01FTlRfU0hBREVSKAogICAgICAgICAgICAgdmFyeWluZyBoaWdo
cCB2ZWMyIHZfdGV4Q29vcmQ7CiAgICAgICAgICAgICB1bmlmb3JtIGxvd3AgdmVjMiB1X2JsdXJS
YWRpdXM7CiAgICAgICAgICAgICB1bmlmb3JtIHNhbXBsZXIyRCB1X3RleHR1cmU7CkBAIC01MTYs
OCArNTIzLDcgQEAgU3RhbmRhcmRGaWx0ZXJQcm9ncmFtOjpTdGFuZGFyZEZpbHRlclByb2dyYW0o
R3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQsIEZpbHRlck8KICAgICAgICAgc3dpdGNoIChwYXNz
KSB7CiAgICAgICAgIGNhc2UgMDogewogICAgICAgICAgICAgLy8gRmlyc3QgcGFzczogaG9yaXpv
bnRhbCBhbHBoYSBibHVyLgotICAgICAgICAgICAgZnJhZ21lbnRTaGFkZXJTb3VyY2UgPSBTVFJJ
TkdJRlkoCi0gICAgICAgICAgICAgICAgcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisgICAgICAg
ICAgICBmcmFnbWVudFNoYWRlclNvdXJjZSA9IEZSQUdNRU5UX1NIQURFUigKICAgICAgICAgICAg
ICAgICB2YXJ5aW5nIGhpZ2hwIHZlYzIgdl90ZXhDb29yZDsKICAgICAgICAgICAgICAgICB1bmlm
b3JtIGxvd3AgZmxvYXQgdV9zaGFkb3dCbHVyUmFkaXVzOwogICAgICAgICAgICAgICAgIHVuaWZv
cm0gbG93cCB2ZWMyIHVfc2hhZG93T2Zmc2V0OwpAQCAtNTUwLDggKzU1Niw3IEBAIFN0YW5kYXJk
RmlsdGVyUHJvZ3JhbTo6U3RhbmRhcmRGaWx0ZXJQcm9ncmFtKEdyYXBoaWNzQ29udGV4dDNEKiBj
b250ZXh0LCBGaWx0ZXJPCiAgICAgICAgICAgICB9CiAgICAgICAgIGNhc2UgMTogewogICAgICAg
ICAgICAgLy8gU2Vjb25kIHBhc3M6IHZlcnRpY2FsIGFscGhhIGJsdXIgYW5kIGNvbXBvc2l0ZSB3
aXRoIG9yaWdpbi4KLSAgICAgICAgICAgIGZyYWdtZW50U2hhZGVyU291cmNlID0gU1RSSU5HSUZZ
KAotICAgICAgICAgICAgICAgIHByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworICAgICAgICAgICAg
ZnJhZ21lbnRTaGFkZXJTb3VyY2UgPSBGUkFHTUVOVF9TSEFERVIoCiAgICAgICAgICAgICAgICAg
dmFyeWluZyBoaWdocCB2ZWMyIHZfdGV4Q29vcmQ7CiAgICAgICAgICAgICAgICAgdW5pZm9ybSBs
b3dwIGZsb2F0IHVfc2hhZG93Qmx1clJhZGl1czsKICAgICAgICAgICAgICAgICB1bmlmb3JtIGxv
d3AgdmVjNCB1X3NoYWRvd0NvbG9yOwpAQCAtNTk3LDI1ICs2MDIsMjYgQEAgU3RhbmRhcmRGaWx0
ZXJQcm9ncmFtOjpTdGFuZGFyZEZpbHRlclByb2dyYW0oR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRl
eHQsIEZpbHRlck8KIAogICAgIGlmICghZnJhZ21lbnRTaGFkZXJTb3VyY2UpCiAgICAgICAgIHJl
dHVybjsKLSAgICBQbGF0Zm9ybTNET2JqZWN0IHZlcnRleFNoYWRlciA9IG1fY29udGV4dC0+Y3Jl
YXRlU2hhZGVyKEdyYXBoaWNzQ29udGV4dDNEOjpWRVJURVhfU0hBREVSKTsKLSAgICBQbGF0Zm9y
bTNET2JqZWN0IGZyYWdtZW50U2hhZGVyID0gbV9jb250ZXh0LT5jcmVhdGVTaGFkZXIoR3JhcGhp
Y3NDb250ZXh0M0Q6OkZSQUdNRU5UX1NIQURFUik7Ci0gICAgbV9jb250ZXh0LT5zaGFkZXJTb3Vy
Y2UodmVydGV4U2hhZGVyLCB2ZXJ0ZXhTaGFkZXJTb3VyY2UpOwotICAgIG1fY29udGV4dC0+c2hh
ZGVyU291cmNlKGZyYWdtZW50U2hhZGVyLCBmcmFnbWVudFNoYWRlclNvdXJjZSk7Ci0gICAgUGxh
dGZvcm0zRE9iamVjdCBwcm9ncmFtSUQgPSBtX2NvbnRleHQtPmNyZWF0ZVByb2dyYW0oKTsKLSAg
ICBtX2NvbnRleHQtPmNvbXBpbGVTaGFkZXIodmVydGV4U2hhZGVyKTsKLSAgICBtX2NvbnRleHQt
PmNvbXBpbGVTaGFkZXIoZnJhZ21lbnRTaGFkZXIpOworICAgIEdMdWludCB2ZXJ0ZXhTaGFkZXIg
PSBnbENyZWF0ZVNoYWRlcihHTF9WRVJURVhfU0hBREVSKTsKKyAgICBHTHVpbnQgZnJhZ21lbnRT
aGFkZXIgPSBnbENyZWF0ZVNoYWRlcihHTF9GUkFHTUVOVF9TSEFERVIpOworICAgIGdsU2hhZGVy
U291cmNlKHZlcnRleFNoYWRlciwgMSwgJnZlcnRleFNoYWRlclNvdXJjZSwgMCk7CisgICAgZ2xT
aGFkZXJTb3VyY2UoZnJhZ21lbnRTaGFkZXIsIDEsICZmcmFnbWVudFNoYWRlclNvdXJjZSwgMCk7
CisgICAgR0x1aW50IHByb2dyYW1JRCA9IGdsQ3JlYXRlUHJvZ3JhbSgpOworICAgIGdsQ29tcGls
ZVNoYWRlcih2ZXJ0ZXhTaGFkZXIpOworICAgIGdsQ29tcGlsZVNoYWRlcihmcmFnbWVudFNoYWRl
cik7CiAjaWYgIUxPR19ESVNBQkxFRAotICAgIFN0cmluZyBsb2c7Ci0gICAgbV9jb250ZXh0LT5n
ZXRTaGFkZXJJbmZvTG9nKGZyYWdtZW50U2hhZGVyKTsKLSAgICBXVEZMb2coJkxvZ0NvbXBvc2l0
aW5nLCAiJXNcbiIsIGxvZy5hc2NpaSgpLmRhdGEoKSk7CisgICAgR0xjaGFyIGxvZ1sxMDBdOwor
ICAgIEdMaW50IGxlbjsKKyAgICBnbEdldFNoYWRlckluZm9Mb2coZnJhZ21lbnRTaGFkZXIsIDEw
MCwgJmxlbiwgbG9nKTsKKyAgICBXVEZMb2coJkxvZ0NvbXBvc2l0aW5nLCAiJXNcbiIsIGxvZyk7
CiAjZW5kaWYKLSAgICBtX2NvbnRleHQtPmF0dGFjaFNoYWRlcihwcm9ncmFtSUQsIHZlcnRleFNo
YWRlcik7Ci0gICAgbV9jb250ZXh0LT5hdHRhY2hTaGFkZXIocHJvZ3JhbUlELCBmcmFnbWVudFNo
YWRlcik7Ci0gICAgbV9jb250ZXh0LT5saW5rUHJvZ3JhbShwcm9ncmFtSUQpOworICAgIGdsQXR0
YWNoU2hhZGVyKHByb2dyYW1JRCwgdmVydGV4U2hhZGVyKTsKKyAgICBnbEF0dGFjaFNoYWRlcihw
cm9ncmFtSUQsIGZyYWdtZW50U2hhZGVyKTsKKyAgICBnbExpbmtQcm9ncmFtKHByb2dyYW1JRCk7
CiAKLSAgICBtX3ZlcnRleEF0dHJpYiA9IG1fY29udGV4dC0+Z2V0QXR0cmliTG9jYXRpb24ocHJv
Z3JhbUlELCAiYV92ZXJ0ZXgiKTsKLSAgICBtX3RleENvb3JkQXR0cmliID0gbV9jb250ZXh0LT5n
ZXRBdHRyaWJMb2NhdGlvbihwcm9ncmFtSUQsICJhX3RleENvb3JkIik7Ci0gICAgbV90ZXh0dXJl
VW5pZm9ybUxvY2F0aW9uID0gbV9jb250ZXh0LT5nZXRVbmlmb3JtTG9jYXRpb24ocHJvZ3JhbUlE
LCAidV90ZXh0dXJlIik7CisgICAgbV92ZXJ0ZXhBdHRyaWIgPSBnbEdldEF0dHJpYkxvY2F0aW9u
KHByb2dyYW1JRCwgImFfdmVydGV4Iik7CisgICAgbV90ZXhDb29yZEF0dHJpYiA9IGdsR2V0QXR0
cmliTG9jYXRpb24ocHJvZ3JhbUlELCAiYV90ZXhDb29yZCIpOworICAgIG1fdGV4dHVyZVVuaWZv
cm1Mb2NhdGlvbiA9IGdsR2V0VW5pZm9ybUxvY2F0aW9uKHByb2dyYW1JRCwgInVfdGV4dHVyZSIp
OwogICAgIHN3aXRjaCAodHlwZSkgewogICAgIGNhc2UgRmlsdGVyT3BlcmF0aW9uOjpHUkFZU0NB
TEU6CiAgICAgY2FzZSBGaWx0ZXJPcGVyYXRpb246OlNFUElBOgpAQCAtNjI1LDIxICs2MzEsMjEg
QEAgU3RhbmRhcmRGaWx0ZXJQcm9ncmFtOjpTdGFuZGFyZEZpbHRlclByb2dyYW0oR3JhcGhpY3ND
b250ZXh0M0QqIGNvbnRleHQsIEZpbHRlck8KICAgICBjYXNlIEZpbHRlck9wZXJhdGlvbjo6QlJJ
R0hUTkVTUzoKICAgICBjYXNlIEZpbHRlck9wZXJhdGlvbjo6Q09OVFJBU1Q6CiAgICAgY2FzZSBG
aWx0ZXJPcGVyYXRpb246Ok9QQUNJVFk6Ci0gICAgICAgIG1fdW5pZm9ybUxvY2F0aW9ucy5hbW91
bnQgPSBtX2NvbnRleHQtPmdldFVuaWZvcm1Mb2NhdGlvbihwcm9ncmFtSUQsICJ1X2Ftb3VudCIp
OworICAgICAgICBtX3VuaWZvcm1Mb2NhdGlvbnMuYW1vdW50ID0gZ2xHZXRVbmlmb3JtTG9jYXRp
b24ocHJvZ3JhbUlELCAidV9hbW91bnQiKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBGaWx0
ZXJPcGVyYXRpb246OkJMVVI6Ci0gICAgICAgIG1fdW5pZm9ybUxvY2F0aW9ucy5ibHVyLnJhZGl1
cyA9IG1fY29udGV4dC0+Z2V0VW5pZm9ybUxvY2F0aW9uKHByb2dyYW1JRCwgInVfYmx1clJhZGl1
cyIpOwotICAgICAgICBtX3VuaWZvcm1Mb2NhdGlvbnMuYmx1ci5nYXVzc2lhbktlcm5lbCA9IG1f
Y29udGV4dC0+Z2V0VW5pZm9ybUxvY2F0aW9uKHByb2dyYW1JRCwgInVfZ2F1c3NpYW5LZXJuZWwi
KTsKKyAgICAgICAgbV91bmlmb3JtTG9jYXRpb25zLmJsdXIucmFkaXVzID0gZ2xHZXRVbmlmb3Jt
TG9jYXRpb24ocHJvZ3JhbUlELCAidV9ibHVyUmFkaXVzIik7CisgICAgICAgIG1fdW5pZm9ybUxv
Y2F0aW9ucy5ibHVyLmdhdXNzaWFuS2VybmVsID0gZ2xHZXRVbmlmb3JtTG9jYXRpb24ocHJvZ3Jh
bUlELCAidV9nYXVzc2lhbktlcm5lbCIpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIEZpbHRl
ck9wZXJhdGlvbjo6RFJPUF9TSEFET1c6Ci0gICAgICAgIG1fdW5pZm9ybUxvY2F0aW9ucy5zaGFk
b3cuYmx1clJhZGl1cyA9IG1fY29udGV4dC0+Z2V0VW5pZm9ybUxvY2F0aW9uKHByb2dyYW1JRCwg
InVfc2hhZG93Qmx1clJhZGl1cyIpOwotICAgICAgICBtX3VuaWZvcm1Mb2NhdGlvbnMuc2hhZG93
LmdhdXNzaWFuS2VybmVsID0gbV9jb250ZXh0LT5nZXRVbmlmb3JtTG9jYXRpb24ocHJvZ3JhbUlE
LCAidV9nYXVzc2lhbktlcm5lbCIpOworICAgICAgICBtX3VuaWZvcm1Mb2NhdGlvbnMuc2hhZG93
LmJsdXJSYWRpdXMgPSBnbEdldFVuaWZvcm1Mb2NhdGlvbihwcm9ncmFtSUQsICJ1X3NoYWRvd0Js
dXJSYWRpdXMiKTsKKyAgICAgICAgbV91bmlmb3JtTG9jYXRpb25zLnNoYWRvdy5nYXVzc2lhbktl
cm5lbCA9IGdsR2V0VW5pZm9ybUxvY2F0aW9uKHByb2dyYW1JRCwgInVfZ2F1c3NpYW5LZXJuZWwi
KTsKICAgICAgICAgaWYgKCFwYXNzKQotICAgICAgICAgICAgbV91bmlmb3JtTG9jYXRpb25zLnNo
YWRvdy5vZmZzZXQgPSBtX2NvbnRleHQtPmdldFVuaWZvcm1Mb2NhdGlvbihwcm9ncmFtSUQsICJ1
X3NoYWRvd09mZnNldCIpOworICAgICAgICAgICAgbV91bmlmb3JtTG9jYXRpb25zLnNoYWRvdy5v
ZmZzZXQgPSBnbEdldFVuaWZvcm1Mb2NhdGlvbihwcm9ncmFtSUQsICJ1X3NoYWRvd09mZnNldCIp
OwogICAgICAgICBlbHNlIHsKICAgICAgICAgICAgIC8vIFdlIG9ubHkgbmVlZCB0aGUgY29sb3Ig
YW5kIHRoZSBjb250ZW50IHRleHR1cmUgaW4gdGhlIHNlY29uZCBwYXNzLCB0aGUgZmlyc3QgcGFz
cyBpcyBvbmx5IGEgaG9yaXpvbnRhbCBhbHBoYSBibHVyLgotICAgICAgICAgICAgbV91bmlmb3Jt
TG9jYXRpb25zLnNoYWRvdy5jb2xvciA9IG1fY29udGV4dC0+Z2V0VW5pZm9ybUxvY2F0aW9uKHBy
b2dyYW1JRCwgInVfc2hhZG93Q29sb3IiKTsKLSAgICAgICAgICAgIG1fdW5pZm9ybUxvY2F0aW9u
cy5zaGFkb3cuY29udGVudFRleHR1cmUgPSBtX2NvbnRleHQtPmdldFVuaWZvcm1Mb2NhdGlvbihw
cm9ncmFtSUQsICJ1X2NvbnRlbnRUZXh0dXJlIik7CisgICAgICAgICAgICBtX3VuaWZvcm1Mb2Nh
dGlvbnMuc2hhZG93LmNvbG9yID0gZ2xHZXRVbmlmb3JtTG9jYXRpb24ocHJvZ3JhbUlELCAidV9z
aGFkb3dDb2xvciIpOworICAgICAgICAgICAgbV91bmlmb3JtTG9jYXRpb25zLnNoYWRvdy5jb250
ZW50VGV4dHVyZSA9IGdsR2V0VW5pZm9ybUxvY2F0aW9uKHByb2dyYW1JRCwgInVfY29udGVudFRl
eHR1cmUiKTsKICAgICAgICAgfQogICAgICAgICBicmVhazsKICAgICBkZWZhdWx0OgpAQCAtNjUw
LDkgKzY1Niw5IEBAIFN0YW5kYXJkRmlsdGVyUHJvZ3JhbTo6U3RhbmRhcmRGaWx0ZXJQcm9ncmFt
KEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0LCBGaWx0ZXJPCiAgICAgbV9mcmFnbWVudFNoYWRl
ciA9IGZyYWdtZW50U2hhZGVyOwogfQogCi1QYXNzUmVmUHRyPFN0YW5kYXJkRmlsdGVyUHJvZ3Jh
bT4gU3RhbmRhcmRGaWx0ZXJQcm9ncmFtOjpjcmVhdGUoR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRl
eHQsIEZpbHRlck9wZXJhdGlvbjo6T3BlcmF0aW9uVHlwZSB0eXBlLCB1bnNpZ25lZCBwYXNzKQor
UGFzc1JlZlB0cjxTdGFuZGFyZEZpbHRlclByb2dyYW0+IFN0YW5kYXJkRmlsdGVyUHJvZ3JhbTo6
Y3JlYXRlKEZpbHRlck9wZXJhdGlvbjo6T3BlcmF0aW9uVHlwZSB0eXBlLCB1bnNpZ25lZCBwYXNz
KQogewotICAgIFJlZlB0cjxTdGFuZGFyZEZpbHRlclByb2dyYW0+IHByb2dyYW0gPSBhZG9wdFJl
ZihuZXcgU3RhbmRhcmRGaWx0ZXJQcm9ncmFtKGNvbnRleHQsIHR5cGUsIHBhc3MpKTsKKyAgICBS
ZWZQdHI8U3RhbmRhcmRGaWx0ZXJQcm9ncmFtPiBwcm9ncmFtID0gYWRvcHRSZWYobmV3IFN0YW5k
YXJkRmlsdGVyUHJvZ3JhbSh0eXBlLCBwYXNzKSk7CiAgICAgaWYgKCFwcm9ncmFtLT5tX2lkKQog
ICAgICAgICByZXR1cm4gMDsKIApAQCAtNjg4LDIxICs2OTQsMjEgQEAgc3RhdGljIGZsb2F0KiBn
YXVzc2lhbktlcm5lbCgpCiAgICAgcmV0dXJuIGtlcm5lbDsKIH0KIAotdm9pZCBTdGFuZGFyZEZp
bHRlclByb2dyYW06OnByZXBhcmUoY29uc3QgRmlsdGVyT3BlcmF0aW9uJiBvcGVyYXRpb24sIHVu
c2lnbmVkIHBhc3MsIGNvbnN0IEludFNpemUmIHNpemUsIEdDM0R1aW50IGNvbnRlbnRUZXh0dXJl
KQordm9pZCBTdGFuZGFyZEZpbHRlclByb2dyYW06OnByZXBhcmUoY29uc3QgRmlsdGVyT3BlcmF0
aW9uJiBvcGVyYXRpb24sIHVuc2lnbmVkIHBhc3MsIGNvbnN0IEludFNpemUmIHNpemUsIEdMdWlu
dCBjb250ZW50VGV4dHVyZSkKIHsKLSAgICBtX2NvbnRleHQtPnVzZVByb2dyYW0obV9pZCk7Cisg
ICAgZ2xVc2VQcm9ncmFtKG1faWQpOwogICAgIHN3aXRjaCAob3BlcmF0aW9uLmdldE9wZXJhdGlv
blR5cGUoKSkgewogICAgIGNhc2UgRmlsdGVyT3BlcmF0aW9uOjpHUkFZU0NBTEU6CiAgICAgY2Fz
ZSBGaWx0ZXJPcGVyYXRpb246OlNFUElBOgogICAgIGNhc2UgRmlsdGVyT3BlcmF0aW9uOjpTQVRV
UkFURToKICAgICBjYXNlIEZpbHRlck9wZXJhdGlvbjo6SFVFX1JPVEFURToKLSAgICAgICAgbV9j
b250ZXh0LT51bmlmb3JtMWYobV91bmlmb3JtTG9jYXRpb25zLmFtb3VudCwgc3RhdGljX2Nhc3Q8
Y29uc3QgQmFzaWNDb2xvck1hdHJpeEZpbHRlck9wZXJhdGlvbiY+KG9wZXJhdGlvbikuYW1vdW50
KCkpOworICAgICAgICBnbFVuaWZvcm0xZihtX3VuaWZvcm1Mb2NhdGlvbnMuYW1vdW50LCBzdGF0
aWNfY2FzdDxjb25zdCBCYXNpY0NvbG9yTWF0cml4RmlsdGVyT3BlcmF0aW9uJj4ob3BlcmF0aW9u
KS5hbW91bnQoKSk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgRmlsdGVyT3BlcmF0aW9uOjpJ
TlZFUlQ6CiAgICAgY2FzZSBGaWx0ZXJPcGVyYXRpb246OkJSSUdIVE5FU1M6CiAgICAgY2FzZSBG
aWx0ZXJPcGVyYXRpb246OkNPTlRSQVNUOgogICAgIGNhc2UgRmlsdGVyT3BlcmF0aW9uOjpPUEFD
SVRZOgotICAgICAgICBtX2NvbnRleHQtPnVuaWZvcm0xZihtX3VuaWZvcm1Mb2NhdGlvbnMuYW1v
dW50LCBzdGF0aWNfY2FzdDxjb25zdCBCYXNpY0NvbXBvbmVudFRyYW5zZmVyRmlsdGVyT3BlcmF0
aW9uJj4ob3BlcmF0aW9uKS5hbW91bnQoKSk7CisgICAgICAgIGdsVW5pZm9ybTFmKG1fdW5pZm9y
bUxvY2F0aW9ucy5hbW91bnQsIHN0YXRpY19jYXN0PGNvbnN0IEJhc2ljQ29tcG9uZW50VHJhbnNm
ZXJGaWx0ZXJPcGVyYXRpb24mPihvcGVyYXRpb24pLmFtb3VudCgpKTsKICAgICAgICAgYnJlYWs7
CiAgICAgY2FzZSBGaWx0ZXJPcGVyYXRpb246OkJMVVI6IHsKICAgICAgICAgY29uc3QgQmx1ckZp
bHRlck9wZXJhdGlvbiYgYmx1ciA9IHN0YXRpY19jYXN0PGNvbnN0IEJsdXJGaWx0ZXJPcGVyYXRp
b24mPihvcGVyYXRpb24pOwpAQCAtNzE0LDggKzcyMCw4IEBAIHZvaWQgU3RhbmRhcmRGaWx0ZXJQ
cm9ncmFtOjpwcmVwYXJlKGNvbnN0IEZpbHRlck9wZXJhdGlvbiYgb3BlcmF0aW9uLCB1bnNpZ25l
ZCBwCiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIHJhZGl1cy5zZXRXaWR0aChmbG9hdFZhbHVl
Rm9yTGVuZ3RoKGJsdXIuc3RkRGV2aWF0aW9uKCksIHNpemUud2lkdGgoKSkgLyBzaXplLndpZHRo
KCkpOwogCi0gICAgICAgIG1fY29udGV4dC0+dW5pZm9ybTJmKG1fdW5pZm9ybUxvY2F0aW9ucy5i
bHVyLnJhZGl1cywgcmFkaXVzLndpZHRoKCksIHJhZGl1cy5oZWlnaHQoKSk7Ci0gICAgICAgIG1f
Y29udGV4dC0+dW5pZm9ybTFmdihtX3VuaWZvcm1Mb2NhdGlvbnMuYmx1ci5nYXVzc2lhbktlcm5l
bCwgR0FVU1NJQU5fS0VSTkVMX0hBTEZfV0lEVEgsIGdhdXNzaWFuS2VybmVsKCkpOworICAgICAg
ICBnbFVuaWZvcm0yZihtX3VuaWZvcm1Mb2NhdGlvbnMuYmx1ci5yYWRpdXMsIHJhZGl1cy53aWR0
aCgpLCByYWRpdXMuaGVpZ2h0KCkpOworICAgICAgICBnbFVuaWZvcm0xZnYobV91bmlmb3JtTG9j
YXRpb25zLmJsdXIuZ2F1c3NpYW5LZXJuZWwsIEdBVVNTSUFOX0tFUk5FTF9IQUxGX1dJRFRILCBn
YXVzc2lhbktlcm5lbCgpKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQogICAgIGNhc2UgRmlsdGVy
T3BlcmF0aW9uOjpEUk9QX1NIQURPVzogewpAQCAtNzIzLDIwICs3MjksMjAgQEAgdm9pZCBTdGFu
ZGFyZEZpbHRlclByb2dyYW06OnByZXBhcmUoY29uc3QgRmlsdGVyT3BlcmF0aW9uJiBvcGVyYXRp
b24sIHVuc2lnbmVkIHAKICAgICAgICAgc3dpdGNoIChwYXNzKSB7CiAgICAgICAgIGNhc2UgMDoK
ICAgICAgICAgICAgIC8vIEZpcnN0IHBhc3M6IHZlcnRpY2FsIGFscGhhIGJsdXIuCi0gICAgICAg
ICAgICBtX2NvbnRleHQtPnVuaWZvcm0yZihtX3VuaWZvcm1Mb2NhdGlvbnMuc2hhZG93Lm9mZnNl
dCwgZmxvYXQoc2hhZG93LmxvY2F0aW9uKCkueCgpKSAvIGZsb2F0KHNpemUud2lkdGgoKSksIGZs
b2F0KHNoYWRvdy5sb2NhdGlvbigpLnkoKSkgLyBmbG9hdChzaXplLmhlaWdodCgpKSk7Ci0gICAg
ICAgICAgICBtX2NvbnRleHQtPnVuaWZvcm0xZihtX3VuaWZvcm1Mb2NhdGlvbnMuc2hhZG93LmJs
dXJSYWRpdXMsIHNoYWRvdy5zdGREZXZpYXRpb24oKSAvIGZsb2F0KHNpemUud2lkdGgoKSkpOwot
ICAgICAgICAgICAgbV9jb250ZXh0LT51bmlmb3JtMWZ2KG1fdW5pZm9ybUxvY2F0aW9ucy5zaGFk
b3cuZ2F1c3NpYW5LZXJuZWwsIEdBVVNTSUFOX0tFUk5FTF9IQUxGX1dJRFRILCBnYXVzc2lhbktl
cm5lbCgpKTsKKyAgICAgICAgICAgIGdsVW5pZm9ybTJmKG1fdW5pZm9ybUxvY2F0aW9ucy5zaGFk
b3cub2Zmc2V0LCBmbG9hdChzaGFkb3cubG9jYXRpb24oKS54KCkpIC8gZmxvYXQoc2l6ZS53aWR0
aCgpKSwgZmxvYXQoc2hhZG93LmxvY2F0aW9uKCkueSgpKSAvIGZsb2F0KHNpemUuaGVpZ2h0KCkp
KTsKKyAgICAgICAgICAgIGdsVW5pZm9ybTFmKG1fdW5pZm9ybUxvY2F0aW9ucy5zaGFkb3cuYmx1
clJhZGl1cywgc2hhZG93LnN0ZERldmlhdGlvbigpIC8gZmxvYXQoc2l6ZS53aWR0aCgpKSk7Cisg
ICAgICAgICAgICBnbFVuaWZvcm0xZnYobV91bmlmb3JtTG9jYXRpb25zLnNoYWRvdy5nYXVzc2lh
bktlcm5lbCwgR0FVU1NJQU5fS0VSTkVMX0hBTEZfV0lEVEgsIGdhdXNzaWFuS2VybmVsKCkpOwog
ICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgMToKICAgICAgICAgICAgIC8vIFNlY29u
ZCBwYXNzOiB3ZSBuZWVkIHRoZSBzaGFkb3cgY29sb3IgYW5kIHRoZSBjb250ZW50IHRleHR1cmUg
Zm9yIGNvbXBvc2l0aW5nLgotICAgICAgICAgICAgbV9jb250ZXh0LT51bmlmb3JtMWYobV91bmlm
b3JtTG9jYXRpb25zLnNoYWRvdy5ibHVyUmFkaXVzLCBzaGFkb3cuc3RkRGV2aWF0aW9uKCkgLyBm
bG9hdChzaXplLmhlaWdodCgpKSk7Ci0gICAgICAgICAgICBtX2NvbnRleHQtPnVuaWZvcm0xZnYo
bV91bmlmb3JtTG9jYXRpb25zLnNoYWRvdy5nYXVzc2lhbktlcm5lbCwgR0FVU1NJQU5fS0VSTkVM
X0hBTEZfV0lEVEgsIGdhdXNzaWFuS2VybmVsKCkpOwotICAgICAgICAgICAgbV9jb250ZXh0LT5h
Y3RpdmVUZXh0dXJlKEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFMSk7Ci0gICAgICAgICAgICBt
X2NvbnRleHQtPmJpbmRUZXh0dXJlKEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFXzJELCBjb250
ZW50VGV4dHVyZSk7Ci0gICAgICAgICAgICBtX2NvbnRleHQtPnVuaWZvcm0xaShtX3VuaWZvcm1M
b2NhdGlvbnMuc2hhZG93LmNvbnRlbnRUZXh0dXJlLCAxKTsKKyAgICAgICAgICAgIGdsVW5pZm9y
bTFmKG1fdW5pZm9ybUxvY2F0aW9ucy5zaGFkb3cuYmx1clJhZGl1cywgc2hhZG93LnN0ZERldmlh
dGlvbigpIC8gZmxvYXQoc2l6ZS5oZWlnaHQoKSkpOworICAgICAgICAgICAgZ2xVbmlmb3JtMWZ2
KG1fdW5pZm9ybUxvY2F0aW9ucy5zaGFkb3cuZ2F1c3NpYW5LZXJuZWwsIEdBVVNTSUFOX0tFUk5F
TF9IQUxGX1dJRFRILCBnYXVzc2lhbktlcm5lbCgpKTsKKyAgICAgICAgICAgIGdsQWN0aXZlVGV4
dHVyZShHTF9URVhUVVJFMSk7CisgICAgICAgICAgICBnbEJpbmRUZXh0dXJlKEdMX1RFWFRVUkVf
MkQsIGNvbnRlbnRUZXh0dXJlKTsKKyAgICAgICAgICAgIGdsVW5pZm9ybTFpKG1fdW5pZm9ybUxv
Y2F0aW9ucy5zaGFkb3cuY29udGVudFRleHR1cmUsIDEpOwogICAgICAgICAgICAgZmxvYXQgciwg
ZywgYiwgYTsKICAgICAgICAgICAgIHNoYWRvdy5jb2xvcigpLmdldFJHQkEociwgZywgYiwgYSk7
Ci0gICAgICAgICAgICBtX2NvbnRleHQtPnVuaWZvcm00ZihtX3VuaWZvcm1Mb2NhdGlvbnMuc2hh
ZG93LmNvbG9yLCByLCBnLCBiLCBhKTsKKyAgICAgICAgICAgIGdsVW5pZm9ybTRmKG1fdW5pZm9y
bUxvY2F0aW9ucy5zaGFkb3cuY29sb3IsIHIsIGcsIGIsIGEpOwogICAgICAgICAgICAgYnJlYWs7
CiAgICAgICAgIH0KICAgICAgICAgYnJlYWs7CkBAIC03NTMsNyArNzU5LDcgQEAgUGFzc1JlZlB0
cjxTdGFuZGFyZEZpbHRlclByb2dyYW0+IFRleHR1cmVNYXBwZXJTaGFkZXJNYW5hZ2VyOjpnZXRT
aGFkZXJGb3JGaWx0ZXIKICAgICBpbnQga2V5ID0gaW50KHR5cGUpIHwgKHBhc3MgPDwgMTYpOwog
ICAgIEZpbHRlck1hcDo6aXRlcmF0b3IgaXRlcmF0b3IgPSBtX2ZpbHRlck1hcC5maW5kKGtleSk7
CiAgICAgaWYgKGl0ZXJhdG9yID09IG1fZmlsdGVyTWFwLmVuZCgpKSB7Ci0gICAgICAgIHByb2dy
YW0gPSBTdGFuZGFyZEZpbHRlclByb2dyYW06OmNyZWF0ZShtX2NvbnRleHQsIHR5cGUsIHBhc3Mp
OworICAgICAgICBwcm9ncmFtID0gU3RhbmRhcmRGaWx0ZXJQcm9ncmFtOjpjcmVhdGUodHlwZSwg
cGFzcyk7CiAgICAgICAgIGlmICghcHJvZ3JhbSkKICAgICAgICAgICAgIHJldHVybiAwOwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVy
ZU1hcHBlclNoYWRlck1hbmFnZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L3RleG1hcC9UZXh0dXJlTWFwcGVyU2hhZGVyTWFuYWdlci5oCmluZGV4IDFmZmI3MTAwYmFlODJm
YmVhMTU4ZjE4NzQ0YjExMGZjN2QwNjY1NGUuLjc4NTQ5OGU3ZjhhMzYyN2VhYjEwNjg2YmEzNmJm
ZmIzZTEwOTE0NTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L3RleG1hcC9UZXh0dXJlTWFwcGVyU2hhZGVyTWFuYWdlci5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyU2hhZGVyTWFuYWdlci5oCkBA
IC0yNCw5ICsyNCw5IEBACiAjaWYgVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKSAmJiBVU0Uo
VEVYVFVSRV9NQVBQRVIpCiAKICNpbmNsdWRlICJGbG9hdFF1YWQuaCIKLSNpbmNsdWRlICJHcmFw
aGljc0NvbnRleHQzRC5oIgogI2luY2x1ZGUgIkludFNpemUuaCIKLSNpbmNsdWRlICJUZXh0dXJl
TWFwcGVyR0wuaCIKKyNpbmNsdWRlICJPcGVuR0xTaGltcy5oIgorI2luY2x1ZGUgIlRleHR1cmVN
YXBwZXIuaCIKICNpbmNsdWRlICJUcmFuc2Zvcm1hdGlvbk1hdHJpeC5oIgogI2luY2x1ZGUgPHd0
Zi9IYXNoTWFwLmg+CiAjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KQEAgLTQ0LDQwICs0NCwz
OSBAQCBjbGFzcyBUZXh0dXJlTWFwcGVyU2hhZGVyTWFuYWdlcjsKIAogY2xhc3MgVGV4dHVyZU1h
cHBlclNoYWRlclByb2dyYW0gOiBwdWJsaWMgUmVmQ291bnRlZDxUZXh0dXJlTWFwcGVyU2hhZGVy
UHJvZ3JhbT4gewogcHVibGljOgotICAgIFBsYXRmb3JtM0RPYmplY3QgaWQoKSB7IHJldHVybiBt
X2lkOyB9Ci0gICAgR0MzRHVpbnQgdmVydGV4QXR0cmliKCkgeyByZXR1cm4gbV92ZXJ0ZXhBdHRy
aWI7IH0KKyAgICBHTHVpbnQgaWQoKSB7IHJldHVybiBtX2lkOyB9CisgICAgR0x1aW50IHZlcnRl
eEF0dHJpYigpIHsgcmV0dXJuIG1fdmVydGV4QXR0cmliOyB9CiAKLSAgICBUZXh0dXJlTWFwcGVy
U2hhZGVyUHJvZ3JhbShHcmFwaGljc0NvbnRleHQzRCosIGNvbnN0IGNoYXIqIHZlcnRleFNoYWRl
clNvdXJjZSwgY29uc3QgY2hhciogZnJhZ21lbnRTaGFkZXJTb3VyY2UpOworICAgIFRleHR1cmVN
YXBwZXJTaGFkZXJQcm9ncmFtKGNvbnN0IGNoYXIqIHZlcnRleFNoYWRlclNvdXJjZSwgY29uc3Qg
Y2hhciogZnJhZ21lbnRTaGFkZXJTb3VyY2UpOwogICAgIHZpcnR1YWwgflRleHR1cmVNYXBwZXJT
aGFkZXJQcm9ncmFtKCk7CiAKICAgICB2aXJ0dWFsIHZvaWQgcHJlcGFyZShmbG9hdCBvcGFjaXR5
LCBjb25zdCBCaXRtYXBUZXh0dXJlKikgeyB9Ci0gICAgR0MzRGludCBtYXRyaXhMb2NhdGlvbigp
IGNvbnN0IHsgcmV0dXJuIG1fbWF0cml4TG9jYXRpb247IH0KLSAgICBHQzNEaW50IGZsaXBMb2Nh
dGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fZmxpcExvY2F0aW9uOyB9Ci0gICAgR0MzRGludCB0ZXh0
dXJlU2l6ZUxvY2F0aW9uKCkgY29uc3QgeyByZXR1cm4gbV90ZXh0dXJlU2l6ZUxvY2F0aW9uOyB9
Ci0gICAgR0MzRGludCBzb3VyY2VUZXh0dXJlTG9jYXRpb24oKSBjb25zdCB7IHJldHVybiBtX3Nv
dXJjZVRleHR1cmVMb2NhdGlvbjsgfQotICAgIEdDM0RpbnQgbWFza1RleHR1cmVMb2NhdGlvbigp
IGNvbnN0IHsgcmV0dXJuIG1fbWFza1RleHR1cmVMb2NhdGlvbjsgfQotICAgIEdDM0RpbnQgb3Bh
Y2l0eUxvY2F0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9vcGFjaXR5TG9jYXRpb247IH0KKyAgICBH
TGludCBtYXRyaXhMb2NhdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fbWF0cml4TG9jYXRpb247IH0K
KyAgICBHTGludCBmbGlwTG9jYXRpb24oKSBjb25zdCB7IHJldHVybiBtX2ZsaXBMb2NhdGlvbjsg
fQorICAgIEdMaW50IHRleHR1cmVTaXplTG9jYXRpb24oKSBjb25zdCB7IHJldHVybiBtX3RleHR1
cmVTaXplTG9jYXRpb247IH0KKyAgICBHTGludCBzb3VyY2VUZXh0dXJlTG9jYXRpb24oKSBjb25z
dCB7IHJldHVybiBtX3NvdXJjZVRleHR1cmVMb2NhdGlvbjsgfQorICAgIEdMaW50IG1hc2tUZXh0
dXJlTG9jYXRpb24oKSBjb25zdCB7IHJldHVybiBtX21hc2tUZXh0dXJlTG9jYXRpb247IH0KKyAg
ICBHTGludCBvcGFjaXR5TG9jYXRpb24oKSBjb25zdCB7IHJldHVybiBtX29wYWNpdHlMb2NhdGlv
bjsgfQogCi0gICAgc3RhdGljIGJvb2wgaXNWYWxpZFVuaWZvcm1Mb2NhdGlvbihHQzNEaW50IGxv
Y2F0aW9uKSB7IHJldHVybiBsb2NhdGlvbiA+PSAwOyB9CisgICAgc3RhdGljIGJvb2wgaXNWYWxp
ZFVuaWZvcm1Mb2NhdGlvbihHTGludCBsb2NhdGlvbikgeyByZXR1cm4gbG9jYXRpb24gPj0gMDsg
fQogCiBwcm90ZWN0ZWQ6Ci0gICAgdm9pZCBnZXRVbmlmb3JtTG9jYXRpb24oR0MzRGludCYgdmFy
LCBjb25zdCBjaGFyKiBuYW1lKTsKKyAgICB2b2lkIGdldFVuaWZvcm1Mb2NhdGlvbihHTGludCYg
dmFyLCBjb25zdCBjaGFyKiBuYW1lKTsKICAgICB2b2lkIGluaXRpYWxpemVQcm9ncmFtKCk7CiAg
ICAgdmlydHVhbCB2b2lkIGluaXRpYWxpemUoKSB7IH0KICAgICBjb25zdCBjaGFyKiB2ZXJ0ZXhT
aGFkZXJTb3VyY2UoKSBjb25zdCB7IHJldHVybiBtX3ZlcnRleFNoYWRlclNvdXJjZS5kYXRhKCk7
IH0KICAgICBjb25zdCBjaGFyKiBmcmFnbWVudFNoYWRlclNvdXJjZSgpIGNvbnN0IHsgcmV0dXJu
IG1fZnJhZ21lbnRTaGFkZXJTb3VyY2UuZGF0YSgpOyB9CiAKLSAgICBHcmFwaGljc0NvbnRleHQz
RCogbV9jb250ZXh0OwotICAgIFBsYXRmb3JtM0RPYmplY3QgbV9pZDsKLSAgICBHQzNEdWludCBt
X3ZlcnRleEF0dHJpYjsKLSAgICBQbGF0Zm9ybTNET2JqZWN0IG1fdmVydGV4U2hhZGVyOwotICAg
IFBsYXRmb3JtM0RPYmplY3QgbV9mcmFnbWVudFNoYWRlcjsKLSAgICBHQzNEaW50IG1fbWF0cml4
TG9jYXRpb247Ci0gICAgR0MzRGludCBtX2ZsaXBMb2NhdGlvbjsKLSAgICBHQzNEaW50IG1fdGV4
dHVyZVNpemVMb2NhdGlvbjsKLSAgICBHQzNEaW50IG1fc291cmNlVGV4dHVyZUxvY2F0aW9uOwot
ICAgIEdDM0RpbnQgbV9vcGFjaXR5TG9jYXRpb247Ci0gICAgR0MzRGludCBtX21hc2tUZXh0dXJl
TG9jYXRpb247CisgICAgR0x1aW50IG1faWQ7CisgICAgR0x1aW50IG1fdmVydGV4QXR0cmliOwor
ICAgIEdMdWludCBtX3ZlcnRleFNoYWRlcjsKKyAgICBHTHVpbnQgbV9mcmFnbWVudFNoYWRlcjsK
KyAgICBHTGludCBtX21hdHJpeExvY2F0aW9uOworICAgIEdMaW50IG1fZmxpcExvY2F0aW9uOwor
ICAgIEdMaW50IG1fdGV4dHVyZVNpemVMb2NhdGlvbjsKKyAgICBHTGludCBtX3NvdXJjZVRleHR1
cmVMb2NhdGlvbjsKKyAgICBHTGludCBtX29wYWNpdHlMb2NhdGlvbjsKKyAgICBHTGludCBtX21h
c2tUZXh0dXJlTG9jYXRpb247CiAKIHByaXZhdGU6CiAgICAgQ1N0cmluZyBtX3ZlcnRleFNoYWRl
clNvdXJjZTsKQEAgLTg4LDM2ICs4NywzMyBAQCBwcml2YXRlOgogY2xhc3MgU3RhbmRhcmRGaWx0
ZXJQcm9ncmFtIDogcHVibGljIFJlZkNvdW50ZWQ8U3RhbmRhcmRGaWx0ZXJQcm9ncmFtPiB7CiBw
dWJsaWM6CiAgICAgdmlydHVhbCB+U3RhbmRhcmRGaWx0ZXJQcm9ncmFtKCk7Ci0gICAgdmlydHVh
bCB2b2lkIHByZXBhcmUoY29uc3QgRmlsdGVyT3BlcmF0aW9uJiwgdW5zaWduZWQgcGFzcywgY29u
c3QgSW50U2l6ZSYsIEdDM0R1aW50IGNvbnRlbnRUZXh0dXJlKTsKLSAgICBzdGF0aWMgUGFzc1Jl
ZlB0cjxTdGFuZGFyZEZpbHRlclByb2dyYW0+IGNyZWF0ZShHcmFwaGljc0NvbnRleHQzRCosIEZp
bHRlck9wZXJhdGlvbjo6T3BlcmF0aW9uVHlwZSwgdW5zaWduZWQgcGFzcyk7Ci0gICAgR0MzRHVp
bnQgdmVydGV4QXR0cmliKCkgY29uc3QgeyByZXR1cm4gbV92ZXJ0ZXhBdHRyaWI7IH0KLSAgICBH
QzNEdWludCB0ZXhDb29yZEF0dHJpYigpIGNvbnN0IHsgcmV0dXJuIG1fdGV4Q29vcmRBdHRyaWI7
IH0KLSAgICBHQzNEdWludCB0ZXh0dXJlVW5pZm9ybSgpIGNvbnN0IHsgcmV0dXJuIG1fdGV4dHVy
ZVVuaWZvcm1Mb2NhdGlvbjsgfQotcHJvdGVjdGVkOgotICAgIEdyYXBoaWNzQ29udGV4dDNEKiBt
X2NvbnRleHQ7CisgICAgdmlydHVhbCB2b2lkIHByZXBhcmUoY29uc3QgRmlsdGVyT3BlcmF0aW9u
JiwgdW5zaWduZWQgcGFzcywgY29uc3QgSW50U2l6ZSYsIEdMdWludCBjb250ZW50VGV4dHVyZSk7
CisgICAgc3RhdGljIFBhc3NSZWZQdHI8U3RhbmRhcmRGaWx0ZXJQcm9ncmFtPiBjcmVhdGUoRmls
dGVyT3BlcmF0aW9uOjpPcGVyYXRpb25UeXBlLCB1bnNpZ25lZCBwYXNzKTsKKyAgICBHTHVpbnQg
dmVydGV4QXR0cmliKCkgY29uc3QgeyByZXR1cm4gbV92ZXJ0ZXhBdHRyaWI7IH0KKyAgICBHTHVp
bnQgdGV4Q29vcmRBdHRyaWIoKSBjb25zdCB7IHJldHVybiBtX3RleENvb3JkQXR0cmliOyB9Cisg
ICAgR0x1aW50IHRleHR1cmVVbmlmb3JtKCkgY29uc3QgeyByZXR1cm4gbV90ZXh0dXJlVW5pZm9y
bUxvY2F0aW9uOyB9CiBwcml2YXRlOgotICAgIFN0YW5kYXJkRmlsdGVyUHJvZ3JhbSgpOwotICAg
IFN0YW5kYXJkRmlsdGVyUHJvZ3JhbShHcmFwaGljc0NvbnRleHQzRCosIEZpbHRlck9wZXJhdGlv
bjo6T3BlcmF0aW9uVHlwZSwgdW5zaWduZWQgcGFzcyk7Ci0gICAgUGxhdGZvcm0zRE9iamVjdCBt
X2lkOwotICAgIFBsYXRmb3JtM0RPYmplY3QgbV92ZXJ0ZXhTaGFkZXI7Ci0gICAgUGxhdGZvcm0z
RE9iamVjdCBtX2ZyYWdtZW50U2hhZGVyOwotICAgIEdDM0R1aW50IG1fdmVydGV4QXR0cmliOwot
ICAgIEdDM0R1aW50IG1fdGV4Q29vcmRBdHRyaWI7Ci0gICAgR0MzRHVpbnQgbV90ZXh0dXJlVW5p
Zm9ybUxvY2F0aW9uOworICAgIFN0YW5kYXJkRmlsdGVyUHJvZ3JhbShGaWx0ZXJPcGVyYXRpb246
Ok9wZXJhdGlvblR5cGUsIHVuc2lnbmVkIHBhc3MpOworICAgIEdMdWludCBtX2lkOworICAgIEdM
dWludCBtX3ZlcnRleFNoYWRlcjsKKyAgICBHTHVpbnQgbV9mcmFnbWVudFNoYWRlcjsKKyAgICBH
THVpbnQgbV92ZXJ0ZXhBdHRyaWI7CisgICAgR0x1aW50IG1fdGV4Q29vcmRBdHRyaWI7CisgICAg
R0x1aW50IG1fdGV4dHVyZVVuaWZvcm1Mb2NhdGlvbjsKICAgICB1bmlvbiB7Ci0gICAgICAgIEdD
M0R1aW50IGFtb3VudDsKKyAgICAgICAgR0x1aW50IGFtb3VudDsKIAogICAgICAgICBzdHJ1Y3Qg
ewotICAgICAgICAgICAgR0MzRHVpbnQgcmFkaXVzOwotICAgICAgICAgICAgR0MzRHVpbnQgZ2F1
c3NpYW5LZXJuZWw7CisgICAgICAgICAgICBHTHVpbnQgcmFkaXVzOworICAgICAgICAgICAgR0x1
aW50IGdhdXNzaWFuS2VybmVsOwogICAgICAgICB9IGJsdXI7CiAKICAgICAgICAgc3RydWN0IHsK
LSAgICAgICAgICAgIEdDM0R1aW50IGJsdXJSYWRpdXM7Ci0gICAgICAgICAgICBHQzNEdWludCBj
b2xvcjsKLSAgICAgICAgICAgIEdDM0R1aW50IG9mZnNldDsKLSAgICAgICAgICAgIEdDM0R1aW50
IGNvbnRlbnRUZXh0dXJlOwotICAgICAgICAgICAgR0MzRHVpbnQgZ2F1c3NpYW5LZXJuZWw7Cisg
ICAgICAgICAgICBHTHVpbnQgYmx1clJhZGl1czsKKyAgICAgICAgICAgIEdMdWludCBjb2xvcjsK
KyAgICAgICAgICAgIEdMdWludCBvZmZzZXQ7CisgICAgICAgICAgICBHTHVpbnQgY29udGVudFRl
eHR1cmU7CisgICAgICAgICAgICBHTHVpbnQgZ2F1c3NpYW5LZXJuZWw7CiAgICAgICAgIH0gc2hh
ZG93OwogICAgIH0gbV91bmlmb3JtTG9jYXRpb25zOwogfTsKQEAgLTEyNSw4OSArMTIxLDc3IEBA
IHByaXZhdGU6CiAKIGNsYXNzIFRleHR1cmVNYXBwZXJTaGFkZXJQcm9ncmFtU2ltcGxlIDogcHVi
bGljIFRleHR1cmVNYXBwZXJTaGFkZXJQcm9ncmFtIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFz
c1JlZlB0cjxUZXh0dXJlTWFwcGVyU2hhZGVyUHJvZ3JhbVNpbXBsZT4gY3JlYXRlKEdyYXBoaWNz
Q29udGV4dDNEKiBjb250ZXh0KQorICAgIHN0YXRpYyBQYXNzUmVmUHRyPFRleHR1cmVNYXBwZXJT
aGFkZXJQcm9ncmFtU2ltcGxlPiBjcmVhdGUoKQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0
UmVmKG5ldyBUZXh0dXJlTWFwcGVyU2hhZGVyUHJvZ3JhbVNpbXBsZShjb250ZXh0KSk7CisgICAg
ICAgIHJldHVybiBhZG9wdFJlZihuZXcgVGV4dHVyZU1hcHBlclNoYWRlclByb2dyYW1TaW1wbGUo
KSk7CiAgICAgfQogCiBwcm90ZWN0ZWQ6Ci0gICAgVGV4dHVyZU1hcHBlclNoYWRlclByb2dyYW1T
aW1wbGUoR3JhcGhpY3NDb250ZXh0M0QqKTsKLXByaXZhdGU6CiAgICAgVGV4dHVyZU1hcHBlclNo
YWRlclByb2dyYW1TaW1wbGUoKTsKIH07CiAKIGNsYXNzIFRleHR1cmVNYXBwZXJTaGFkZXJQcm9n
cmFtUmVjdFNpbXBsZSA6IHB1YmxpYyBUZXh0dXJlTWFwcGVyU2hhZGVyUHJvZ3JhbSB7CiBwdWJs
aWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8VGV4dHVyZU1hcHBlclNoYWRlclByb2dyYW1SZWN0
U2ltcGxlPiBjcmVhdGUoR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQpCisgICAgc3RhdGljIFBh
c3NSZWZQdHI8VGV4dHVyZU1hcHBlclNoYWRlclByb2dyYW1SZWN0U2ltcGxlPiBjcmVhdGUoKQog
ICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBUZXh0dXJlTWFwcGVyU2hhZGVyUHJv
Z3JhbVJlY3RTaW1wbGUoY29udGV4dCkpOworICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFRl
eHR1cmVNYXBwZXJTaGFkZXJQcm9ncmFtUmVjdFNpbXBsZSgpKTsKICAgICB9CiAKLXByb3RlY3Rl
ZDoKLSAgICBUZXh0dXJlTWFwcGVyU2hhZGVyUHJvZ3JhbVJlY3RTaW1wbGUoR3JhcGhpY3NDb250
ZXh0M0QqKTsKIHByaXZhdGU6CiAgICAgVGV4dHVyZU1hcHBlclNoYWRlclByb2dyYW1SZWN0U2lt
cGxlKCk7CiB9OwogCiBjbGFzcyBUZXh0dXJlTWFwcGVyU2hhZGVyUHJvZ3JhbU9wYWNpdHlBbmRN
YXNrIDogcHVibGljIFRleHR1cmVNYXBwZXJTaGFkZXJQcm9ncmFtIHsKIHB1YmxpYzoKLSAgICBz
dGF0aWMgUGFzc1JlZlB0cjxUZXh0dXJlTWFwcGVyU2hhZGVyUHJvZ3JhbU9wYWNpdHlBbmRNYXNr
PiBjcmVhdGUoR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQpCisgICAgc3RhdGljIFBhc3NSZWZQ
dHI8VGV4dHVyZU1hcHBlclNoYWRlclByb2dyYW1PcGFjaXR5QW5kTWFzaz4gY3JlYXRlKCkKICAg
ICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgVGV4dHVyZU1hcHBlclNoYWRlclByb2dy
YW1PcGFjaXR5QW5kTWFzayhjb250ZXh0KSk7CisgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcg
VGV4dHVyZU1hcHBlclNoYWRlclByb2dyYW1PcGFjaXR5QW5kTWFzaygpKTsKICAgICB9CiAKLXBy
b3RlY3RlZDoKLSAgICBUZXh0dXJlTWFwcGVyU2hhZGVyUHJvZ3JhbU9wYWNpdHlBbmRNYXNrKEdy
YXBoaWNzQ29udGV4dDNEKik7CiBwcml2YXRlOgogICAgIFRleHR1cmVNYXBwZXJTaGFkZXJQcm9n
cmFtT3BhY2l0eUFuZE1hc2soKTsKIH07CiAKIGNsYXNzIFRleHR1cmVNYXBwZXJTaGFkZXJQcm9n
cmFtUmVjdE9wYWNpdHlBbmRNYXNrIDogcHVibGljIFRleHR1cmVNYXBwZXJTaGFkZXJQcm9ncmFt
IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxUZXh0dXJlTWFwcGVyU2hhZGVyUHJv
Z3JhbVJlY3RPcGFjaXR5QW5kTWFzaz4gY3JlYXRlKEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0
KQorICAgIHN0YXRpYyBQYXNzUmVmUHRyPFRleHR1cmVNYXBwZXJTaGFkZXJQcm9ncmFtUmVjdE9w
YWNpdHlBbmRNYXNrPiBjcmVhdGUoKQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5l
dyBUZXh0dXJlTWFwcGVyU2hhZGVyUHJvZ3JhbVJlY3RPcGFjaXR5QW5kTWFzayhjb250ZXh0KSk7
CisgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgVGV4dHVyZU1hcHBlclNoYWRlclByb2dyYW1S
ZWN0T3BhY2l0eUFuZE1hc2soKSk7CiAgICAgfQogCi1wcm90ZWN0ZWQ6Ci0gICAgVGV4dHVyZU1h
cHBlclNoYWRlclByb2dyYW1SZWN0T3BhY2l0eUFuZE1hc2soR3JhcGhpY3NDb250ZXh0M0QqKTsK
IHByaXZhdGU6CiAgICAgVGV4dHVyZU1hcHBlclNoYWRlclByb2dyYW1SZWN0T3BhY2l0eUFuZE1h
c2soKTsKIH07CiAKIGNsYXNzIFRleHR1cmVNYXBwZXJTaGFkZXJQcm9ncmFtU29saWRDb2xvciA6
IHB1YmxpYyBUZXh0dXJlTWFwcGVyU2hhZGVyUHJvZ3JhbSB7CiBwdWJsaWM6Ci0gICAgc3RhdGlj
IFBhc3NSZWZQdHI8VGV4dHVyZU1hcHBlclNoYWRlclByb2dyYW1Tb2xpZENvbG9yPiBjcmVhdGUo
R3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQpCisgICAgc3RhdGljIFBhc3NSZWZQdHI8VGV4dHVy
ZU1hcHBlclNoYWRlclByb2dyYW1Tb2xpZENvbG9yPiBjcmVhdGUoKQogICAgIHsKLSAgICAgICAg
cmV0dXJuIGFkb3B0UmVmKG5ldyBUZXh0dXJlTWFwcGVyU2hhZGVyUHJvZ3JhbVNvbGlkQ29sb3Io
Y29udGV4dCkpOworICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFRleHR1cmVNYXBwZXJTaGFk
ZXJQcm9ncmFtU29saWRDb2xvcigpKTsKICAgICB9CiAKLSAgICBHQzNEaW50IGNvbG9yTG9jYXRp
b24oKSBjb25zdCB7IHJldHVybiBtX2NvbG9yTG9jYXRpb247IH0KKyAgICBHTGludCBjb2xvckxv
Y2F0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9jb2xvckxvY2F0aW9uOyB9CiAKLXByb3RlY3RlZDoK
LSAgICBUZXh0dXJlTWFwcGVyU2hhZGVyUHJvZ3JhbVNvbGlkQ29sb3IoR3JhcGhpY3NDb250ZXh0
M0QqKTsKIHByaXZhdGU6CiAgICAgVGV4dHVyZU1hcHBlclNoYWRlclByb2dyYW1Tb2xpZENvbG9y
KCk7Ci0gICAgR0MzRGludCBtX2NvbG9yTG9jYXRpb247CisgICAgR0xpbnQgbV9jb2xvckxvY2F0
aW9uOwogfTsKIAogY2xhc3MgVGV4dHVyZU1hcHBlclNoYWRlclByb2dyYW1BbnRpYWxpYXNpbmdO
b01hc2sgOiBwdWJsaWMgVGV4dHVyZU1hcHBlclNoYWRlclByb2dyYW0gewogcHVibGljOgotICAg
IHN0YXRpYyBQYXNzUmVmUHRyPFRleHR1cmVNYXBwZXJTaGFkZXJQcm9ncmFtQW50aWFsaWFzaW5n
Tm9NYXNrPiBjcmVhdGUoR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQpCisgICAgc3RhdGljIFBh
c3NSZWZQdHI8VGV4dHVyZU1hcHBlclNoYWRlclByb2dyYW1BbnRpYWxpYXNpbmdOb01hc2s+IGNy
ZWF0ZSgpCiAgICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFRleHR1cmVNYXBwZXJT
aGFkZXJQcm9ncmFtQW50aWFsaWFzaW5nTm9NYXNrKGNvbnRleHQpKTsKKyAgICAgICAgcmV0dXJu
IGFkb3B0UmVmKG5ldyBUZXh0dXJlTWFwcGVyU2hhZGVyUHJvZ3JhbUFudGlhbGlhc2luZ05vTWFz
aygpKTsKICAgICB9CiAKLSAgICBHQzNEaW50IGV4cGFuZGVkUXVhZFZlcnRpY2VzSW5UZXh0dXJl
Q29vcmRpbmF0ZXNMb2NhdGlvbigpIHsgcmV0dXJuIG1fZXhwYW5kZWRRdWFkVmVydGljZXNJblRl
eHR1cmVDb3JkaW5hdGVzTG9jYXRpb247IH0KLSAgICBHQzNEaW50IGV4cGFuZGVkUXVhZEVkZ2Vz
SW5TY3JlZW5TcGFjZUxvY2F0aW9uKCkgeyByZXR1cm4gbV9leHBhbmRlZFF1YWRFZGdlc0luU2Ny
ZWVuU3BhY2VMb2NhdGlvbjsgfQorICAgIEdMaW50IGV4cGFuZGVkUXVhZFZlcnRpY2VzSW5UZXh0
dXJlQ29vcmRpbmF0ZXNMb2NhdGlvbigpIHsgcmV0dXJuIG1fZXhwYW5kZWRRdWFkVmVydGljZXNJ
blRleHR1cmVDb3JkaW5hdGVzTG9jYXRpb247IH0KKyAgICBHTGludCBleHBhbmRlZFF1YWRFZGdl
c0luU2NyZWVuU3BhY2VMb2NhdGlvbigpIHsgcmV0dXJuIG1fZXhwYW5kZWRRdWFkRWRnZXNJblNj
cmVlblNwYWNlTG9jYXRpb247IH0KIAotcHJvdGVjdGVkOgotICAgIFRleHR1cmVNYXBwZXJTaGFk
ZXJQcm9ncmFtQW50aWFsaWFzaW5nTm9NYXNrKEdyYXBoaWNzQ29udGV4dDNEKik7CiBwcml2YXRl
OgogICAgIFRleHR1cmVNYXBwZXJTaGFkZXJQcm9ncmFtQW50aWFsaWFzaW5nTm9NYXNrKCk7CiAK
LSAgICBHQzNEaW50IG1fZXhwYW5kZWRRdWFkVmVydGljZXNJblRleHR1cmVDb3JkaW5hdGVzTG9j
YXRpb247Ci0gICAgR0MzRGludCBtX2V4cGFuZGVkUXVhZEVkZ2VzSW5TY3JlZW5TcGFjZUxvY2F0
aW9uOworICAgIEdMaW50IG1fZXhwYW5kZWRRdWFkVmVydGljZXNJblRleHR1cmVDb3JkaW5hdGVz
TG9jYXRpb247CisgICAgR0xpbnQgbV9leHBhbmRlZFF1YWRFZGdlc0luU2NyZWVuU3BhY2VMb2Nh
dGlvbjsKIH07CiAKIGNsYXNzIFRleHR1cmVNYXBwZXJTaGFkZXJNYW5hZ2VyIHsKQEAgLTIyMiw4
ICsyMDYsNyBAQCBwdWJsaWM6CiAgICAgICAgIFNvbGlkQ29sb3IKICAgICB9OwogCi0gICAgVGV4
dHVyZU1hcHBlclNoYWRlck1hbmFnZXIoKSB7IH0KLSAgICBUZXh0dXJlTWFwcGVyU2hhZGVyTWFu
YWdlcihHcmFwaGljc0NvbnRleHQzRCopOworICAgIFRleHR1cmVNYXBwZXJTaGFkZXJNYW5hZ2Vy
KCk7CiAgICAgdmlydHVhbCB+VGV4dHVyZU1hcHBlclNoYWRlck1hbmFnZXIoKTsKIAogI2lmIEVO
QUJMRShDU1NfRklMVEVSUykKQEAgLTIzOCwxMiArMjIxLDEyIEBAIHB1YmxpYzoKIHByaXZhdGU6
CiAgICAgdHlwZWRlZiBIYXNoTWFwPFNoYWRlclR5cGUsIFJlZlB0cjxUZXh0dXJlTWFwcGVyU2hh
ZGVyUHJvZ3JhbT4sIERlZmF1bHRIYXNoPGludD46Okhhc2gsIEhhc2hUcmFpdHM8aW50PiA+IFRl
eHR1cmVNYXBwZXJTaGFkZXJQcm9ncmFtTWFwOwogICAgIFRleHR1cmVNYXBwZXJTaGFkZXJQcm9n
cmFtTWFwIG1fdGV4dHVyZU1hcHBlclNoYWRlclByb2dyYW1NYXA7Ci0gICAgR3JhcGhpY3NDb250
ZXh0M0QqIG1fY29udGV4dDsKIAogI2lmIEVOQUJMRShDU1NfRklMVEVSUykKICAgICB0eXBlZGVm
IEhhc2hNYXA8aW50LCBSZWZQdHI8U3RhbmRhcmRGaWx0ZXJQcm9ncmFtPiA+IEZpbHRlck1hcDsK
ICAgICBGaWx0ZXJNYXAgbV9maWx0ZXJNYXA7CiAjZW5kaWYKKwogfTsKIAogfQo=
</data>

          </attachment>
      

    </bug>

</bugzilla>