<?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>108082</bug_id>
          
          <creation_ts>2013-01-28 07:40:43 -0800</creation_ts>
          <short_desc>[chromium] delete DRTTestRunner</short_desc>
          <delta_ts>2013-01-29 01:31:44 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>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>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter>jochen</reporter>
          <assigned_to>jochen</assigned_to>
          <cc>abarth</cc>
    
    <cc>dglazkov</cc>
    
    <cc>fishd</cc>
    
    <cc>jamesr</cc>
    
    <cc>tkent+wkapi</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>817746</commentid>
    <comment_count>0</comment_count>
    <who name="">jochen</who>
    <bug_when>2013-01-28 07:40:43 -0800</bug_when>
    <thetext>[chromium] delete DRTTestRunner</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>817747</commentid>
    <comment_count>1</comment_count>
      <attachid>184982</attachid>
    <who name="">jochen</who>
    <bug_when>2013-01-28 07:41:21 -0800</bug_when>
    <thetext>Created attachment 184982
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>817749</commentid>
    <comment_count>2</comment_count>
    <who name="">jochen</who>
    <bug_when>2013-01-28 07:42:19 -0800</bug_when>
    <thetext>*** Bug 107271 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>817751</commentid>
    <comment_count>3</comment_count>
    <who name="">jochen</who>
    <bug_when>2013-01-28 07:42:24 -0800</bug_when>
    <thetext>*** Bug 107272 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>817753</commentid>
    <comment_count>4</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-01-28 07:43:56 -0800</bug_when>
    <thetext>Please wait for approval from abarth@webkit.org, dglazkov@chromium.org, fishd@chromium.org, jamesr@chromium.org or tkent@chromium.org before submitting, as this patch contains changes to the Chromium public API. See also https://trac.webkit.org/wiki/ChromiumWebKitAPI.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>817920</commentid>
    <comment_count>5</comment_count>
      <attachid>184982</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2013-01-28 11:38:11 -0800</bug_when>
    <thetext>Comment on attachment 184982
Patch

!!!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>818679</commentid>
    <comment_count>6</comment_count>
      <attachid>185191</attachid>
    <who name="">jochen</who>
    <bug_when>2013-01-29 00:55:49 -0800</bug_when>
    <thetext>Created attachment 185191
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>818709</commentid>
    <comment_count>7</comment_count>
      <attachid>185191</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-01-29 01:31:40 -0800</bug_when>
    <thetext>Comment on attachment 185191
Patch for landing

Clearing flags on attachment: 185191

Committed r141082: &lt;http://trac.webkit.org/changeset/141082&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>818710</commentid>
    <comment_count>8</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-01-29 01:31:44 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>184982</attachid>
            <date>2013-01-28 07:41:21 -0800</date>
            <delta_ts>2013-01-29 00:55:45 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-108082-20130128163808.patch</filename>
            <type>text/plain</type>
            <size>59400</size>
            <attacher>jochen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQwOTQ4CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggY2ZjYWNmZGFlNDMxNDhmMzI0MGNhM2U1YWFkYjg2ODM2
ZWQ3ZWU1Mi4uYzI1Yjk5MTMwYTg0ODAyYTEzMzcyZDFkOTRiZTJhMmY5NzU3MTdhYSAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEw
OCBAQAorMjAxMy0wMS0yOCAgSm9jaGVuIEVpc2luZ2VyICA8am9jaGVuQGNocm9taXVtLm9yZz4K
KworICAgICAgICBbY2hyb21pdW1dIGRlbGV0ZSBEUlRUZXN0UnVubmVyCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDgwODIKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIER1bXBSZW5kZXJUcmVlL0R1bXBS
ZW5kZXJUcmVlLmd5cGk6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vRFJUVGVz
dFJ1bm5lci5jcHA6IFJlbW92ZWQuCisgICAgICAgICogRHVtcFJlbmRlclRyZWUvY2hyb21pdW0v
RFJUVGVzdFJ1bm5lci5oOiBSZW1vdmVkLgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2Nocm9t
aXVtL1Rlc3RSdW5uZXIvcHVibGljL1dlYlRlc3REZWxlZ2F0ZS5oOgorICAgICAgICAoV2ViVGVz
dFJ1bm5lcjo6V2ViVGVzdERlbGVnYXRlOjp0ZXN0RmluaXNoZWQpOgorICAgICAgICAoV2ViVGVz
dFJ1bm5lcjo6V2ViVGVzdERlbGVnYXRlOjp0ZXN0VGltZWRPdXQpOgorICAgICAgICAoV2ViVGVz
dFJ1bm5lcjo6V2ViVGVzdERlbGVnYXRlOjppc0JlaW5nRGVidWdnZWQpOgorICAgICAgICAoV2Vi
VGVzdFJ1bm5lcjo6V2ViVGVzdERlbGVnYXRlOjpsYXlvdXRUZXN0VGltZW91dCk6CisgICAgICAg
IChXZWJUZXN0UnVubmVyOjpXZWJUZXN0RGVsZWdhdGU6OmNsb3NlUmVtYWluaW5nV2luZG93cyk6
CisgICAgICAgIChXZWJUZXN0UnVubmVyOjpXZWJUZXN0RGVsZWdhdGU6Om5hdmlnYXRpb25FbnRy
eUNvdW50KToKKyAgICAgICAgKFdlYlRlc3RSdW5uZXI6OldlYlRlc3REZWxlZ2F0ZTo6d2luZG93
Q291bnQpOgorICAgICAgICAoV2ViVGVzdFJ1bm5lcjo6V2ViVGVzdERlbGVnYXRlOjpzZXRDdXN0
b21Qb2xpY3lEZWxlZ2F0ZSk6CisgICAgICAgIChXZWJUZXN0UnVubmVyOjpXZWJUZXN0RGVsZWdh
dGU6OndhaXRGb3JQb2xpY3lEZWxlZ2F0ZSk6CisgICAgICAgIChXZWJUZXN0UnVubmVyOjpXZWJU
ZXN0RGVsZWdhdGU6OmdvVG9PZmZzZXQpOgorICAgICAgICAoV2ViVGVzdFJ1bm5lcjo6V2ViVGVz
dERlbGVnYXRlOjpyZWxvYWQpOgorICAgICAgICAoV2ViVGVzdFJ1bm5lcjo6V2ViVGVzdERlbGVn
YXRlOjpsb2FkVVJMRm9yRnJhbWUpOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2Nocm9taXVt
L1Rlc3RSdW5uZXIvcHVibGljL1dlYlRlc3RSdW5uZXIuaDoKKyAgICAgICAgKFdlYlRlc3RSdW5u
ZXI6OldlYlRlc3RSdW5uZXI6OnBvbGljeURlbGVnYXRlRG9uZSk6CisgICAgICAgIChXZWJUZXN0
UnVubmVyOjpXZWJUZXN0UnVubmVyOjpzaG91bGRJbnRlcmNlcHRQb3N0TWVzc2FnZSk6CisgICAg
ICAgICogRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvVGVzdFJ1bm5lci5j
cHA6CisgICAgICAgIChXZWJUZXN0UnVubmVyOjpUZXN0UnVubmVyOjpXb3JrUXVldWU6On5Xb3Jr
UXVldWUpOgorICAgICAgICAoV2ViVGVzdFJ1bm5lcik6CisgICAgICAgIChXZWJUZXN0UnVubmVy
OjpUZXN0UnVubmVyOjpXb3JrUXVldWU6OnByb2Nlc3NXb3JrU29vbik6CisgICAgICAgIChXZWJU
ZXN0UnVubmVyOjpUZXN0UnVubmVyOjpXb3JrUXVldWU6OnByb2Nlc3NXb3JrKToKKyAgICAgICAg
KFdlYlRlc3RSdW5uZXI6OlRlc3RSdW5uZXI6OldvcmtRdWV1ZTo6cmVzZXQpOgorICAgICAgICAo
V2ViVGVzdFJ1bm5lcjo6VGVzdFJ1bm5lcjo6V29ya1F1ZXVlOjphZGRXb3JrKToKKyAgICAgICAg
KFdlYlRlc3RSdW5uZXI6OlRlc3RSdW5uZXI6OlRlc3RSdW5uZXIpOgorICAgICAgICAoV2ViVGVz
dFJ1bm5lcjo6VGVzdFJ1bm5lcjo6cmVzZXQpOgorICAgICAgICAoV2ViVGVzdFJ1bm5lcjo6VGVz
dFJ1bm5lcjo6cG9saWN5RGVsZWdhdGVEb25lKToKKyAgICAgICAgKFdlYlRlc3RSdW5uZXI6OlRl
c3RSdW5uZXI6OnNob3VsZEludGVyY2VwdFBvc3RNZXNzYWdlKToKKyAgICAgICAgKFdlYlRlc3RS
dW5uZXI6OlRlc3RSdW5uZXI6OndhaXRVbnRpbERvbmUpOgorICAgICAgICAoV2ViVGVzdFJ1bm5l
cjo6VGVzdFJ1bm5lcjo6bm90aWZ5RG9uZSk6CisgICAgICAgIChXZWJUZXN0UnVubmVyOjpUZXN0
UnVubmVyOjpjb21wbGV0ZU5vdGlmeURvbmUpOgorICAgICAgICAoV29ya0l0ZW1CYWNrRm9yd2Fy
ZCk6CisgICAgICAgIChXZWJUZXN0UnVubmVyOjpXb3JrSXRlbUJhY2tGb3J3YXJkOjpXb3JrSXRl
bUJhY2tGb3J3YXJkKToKKyAgICAgICAgKFdlYlRlc3RSdW5uZXI6OldvcmtJdGVtQmFja0Zvcndh
cmQ6OnJ1bik6CisgICAgICAgIChXZWJUZXN0UnVubmVyOjpUZXN0UnVubmVyOjpxdWV1ZUJhY2tO
YXZpZ2F0aW9uKToKKyAgICAgICAgKFdlYlRlc3RSdW5uZXI6OlRlc3RSdW5uZXI6OnF1ZXVlRm9y
d2FyZE5hdmlnYXRpb24pOgorICAgICAgICAoV29ya0l0ZW1SZWxvYWQpOgorICAgICAgICAoV2Vi
VGVzdFJ1bm5lcjo6V29ya0l0ZW1SZWxvYWQ6OnJ1bik6CisgICAgICAgIChXZWJUZXN0UnVubmVy
OjpUZXN0UnVubmVyOjpxdWV1ZVJlbG9hZCk6CisgICAgICAgIChXb3JrSXRlbUxvYWRpbmdTY3Jp
cHQpOgorICAgICAgICAoV2ViVGVzdFJ1bm5lcjo6V29ya0l0ZW1Mb2FkaW5nU2NyaXB0OjpXb3Jr
SXRlbUxvYWRpbmdTY3JpcHQpOgorICAgICAgICAoV2ViVGVzdFJ1bm5lcjo6V29ya0l0ZW1Mb2Fk
aW5nU2NyaXB0OjpydW4pOgorICAgICAgICAoV29ya0l0ZW1Ob25Mb2FkaW5nU2NyaXB0KToKKyAg
ICAgICAgKFdlYlRlc3RSdW5uZXI6OldvcmtJdGVtTm9uTG9hZGluZ1NjcmlwdDo6V29ya0l0ZW1O
b25Mb2FkaW5nU2NyaXB0KToKKyAgICAgICAgKFdlYlRlc3RSdW5uZXI6OldvcmtJdGVtTm9uTG9h
ZGluZ1NjcmlwdDo6cnVuKToKKyAgICAgICAgKFdlYlRlc3RSdW5uZXI6OlRlc3RSdW5uZXI6OnF1
ZXVlTG9hZGluZ1NjcmlwdCk6CisgICAgICAgIChXZWJUZXN0UnVubmVyOjpUZXN0UnVubmVyOjpx
dWV1ZU5vbkxvYWRpbmdTY3JpcHQpOgorICAgICAgICAoV29ya0l0ZW1Mb2FkKToKKyAgICAgICAg
KFdlYlRlc3RSdW5uZXI6OldvcmtJdGVtTG9hZDo6V29ya0l0ZW1Mb2FkKToKKyAgICAgICAgKFdl
YlRlc3RSdW5uZXI6OldvcmtJdGVtTG9hZDo6cnVuKToKKyAgICAgICAgKFdlYlRlc3RSdW5uZXI6
OlRlc3RSdW5uZXI6OnF1ZXVlTG9hZCk6CisgICAgICAgIChXb3JrSXRlbUxvYWRIVE1MU3RyaW5n
KToKKyAgICAgICAgKFdlYlRlc3RSdW5uZXI6OldvcmtJdGVtTG9hZEhUTUxTdHJpbmc6OldvcmtJ
dGVtTG9hZEhUTUxTdHJpbmcpOgorICAgICAgICAoV2ViVGVzdFJ1bm5lcjo6V29ya0l0ZW1Mb2Fk
SFRNTFN0cmluZzo6cnVuKToKKyAgICAgICAgKFdlYlRlc3RSdW5uZXI6OlRlc3RSdW5uZXI6OnF1
ZXVlTG9hZEhUTUxTdHJpbmcpOgorICAgICAgICAoV2ViVGVzdFJ1bm5lcjo6VGVzdFJ1bm5lcjo6
bG9jYXRpb25DaGFuZ2VEb25lKToKKyAgICAgICAgKFdlYlRlc3RSdW5uZXI6OlRlc3RSdW5uZXI6
OndpbmRvd0NvdW50KToKKyAgICAgICAgKFdlYlRlc3RSdW5uZXI6OlRlc3RSdW5uZXI6OnNldENs
b3NlUmVtYWluaW5nV2luZG93c1doZW5Db21wbGV0ZSk6CisgICAgICAgIChXZWJUZXN0UnVubmVy
OjpUZXN0UnVubmVyOjpzZXRDdXN0b21Qb2xpY3lEZWxlZ2F0ZSk6CisgICAgICAgIChXZWJUZXN0
UnVubmVyOjpUZXN0UnVubmVyOjp3YWl0Rm9yUG9saWN5RGVsZWdhdGUpOgorICAgICAgICAqIER1
bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvc3JjL1Rlc3RSdW5uZXIuaDoKKyAgICAg
ICAgKFRlc3RSdW5uZXIpOgorICAgICAgICAoV29ya0l0ZW0pOgorICAgICAgICAoV2ViVGVzdFJ1
bm5lcjo6VGVzdFJ1bm5lcjo6V29ya0l0ZW06On5Xb3JrSXRlbSk6CisgICAgICAgIChXb3JrUXVl
dWUpOgorICAgICAgICAoV2ViVGVzdFJ1bm5lcjo6VGVzdFJ1bm5lcjo6V29ya1F1ZXVlOjpXb3Jr
UXVldWUpOgorICAgICAgICAoV2ViVGVzdFJ1bm5lcjo6VGVzdFJ1bm5lcjo6V29ya1F1ZXVlOjpz
ZXRGcm96ZW4pOgorICAgICAgICAoV2ViVGVzdFJ1bm5lcjo6VGVzdFJ1bm5lcjo6V29ya1F1ZXVl
Ojppc0VtcHR5KToKKyAgICAgICAgKFdlYlRlc3RSdW5uZXI6OlRlc3RSdW5uZXI6OldvcmtRdWV1
ZTo6dGFza0xpc3QpOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RTaGVs
bC5jcHA6CisgICAgICAgIChUZXN0U2hlbGw6OmluaXRpYWxpemUpOgorICAgICAgICAoVGVzdFNo
ZWxsOjpydW5GaWxlVGVzdCk6CisgICAgICAgIChUZXN0U2hlbGw6OmxvYWRVUkwpOgorICAgICAg
ICAoVGVzdFNoZWxsOjpjcmVhdGVOZXdXaW5kb3cpOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVl
L2Nocm9taXVtL1Rlc3RTaGVsbC5oOgorICAgICAgICAoVGVzdFNoZWxsOjp0ZXN0UnVubmVyKToK
KyAgICAgICAgKFRlc3RTaGVsbCk6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvY2hyb21pdW0v
V2ViVmlld0hvc3QuY3BwOgorICAgICAgICAoV2ViVmlld0hvc3Q6OnRlc3RGaW5pc2hlZCk6Cisg
ICAgICAgIChXZWJWaWV3SG9zdDo6dGVzdFRpbWVkT3V0KToKKyAgICAgICAgKFdlYlZpZXdIb3N0
Ojppc0JlaW5nRGVidWdnZWQpOgorICAgICAgICAoV2ViVmlld0hvc3Q6OmxheW91dFRlc3RUaW1l
b3V0KToKKyAgICAgICAgKFdlYlZpZXdIb3N0OjpjbG9zZVJlbWFpbmluZ1dpbmRvd3MpOgorICAg
ICAgICAoV2ViVmlld0hvc3Q6Om5hdmlnYXRpb25FbnRyeUNvdW50KToKKyAgICAgICAgKFdlYlZp
ZXdIb3N0Ojp3aW5kb3dDb3VudCk6CisgICAgICAgIChXZWJWaWV3SG9zdDo6c2V0Q3VzdG9tUG9s
aWN5RGVsZWdhdGUpOgorICAgICAgICAoV2ViVmlld0hvc3Q6OndhaXRGb3JQb2xpY3lEZWxlZ2F0
ZSk6CisgICAgICAgIChXZWJWaWV3SG9zdDo6Z29Ub09mZnNldCk6CisgICAgICAgIChXZWJWaWV3
SG9zdDo6cmVsb2FkKToKKyAgICAgICAgKFdlYlZpZXdIb3N0Ojpsb2FkVVJMRm9yRnJhbWUpOgor
ICAgICAgICAoV2ViVmlld0hvc3Q6OnNodXRkb3duKToKKyAgICAgICAgKFdlYlZpZXdIb3N0Ojp0
ZXN0UnVubmVyKToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9XZWJWaWV3SG9z
dC5oOgorICAgICAgICAoV2ViVGVzdFJ1bm5lcik6CisgICAgICAgIChXZWJWaWV3SG9zdCk6CisK
IDIwMTMtMDEtMjcgIERhdmlkIEZhcmxlciAgPGRmYXJsZXJAYXBwbGUuY29tPgogCiAgICAgICAg
IFJFR1JFU1NJT04gKHIxNDA5MTIpOiBCcm9rZSBzcGVjaWZ5aW5nIG5vbi10cml2aWFsIEFSQ0hT
IHZhbHVlIHRvIG1ha2UgLyBidWlsZC13ZWJraXQKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5k
ZXJUcmVlL0R1bXBSZW5kZXJUcmVlLmd5cGkgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9EdW1wUmVu
ZGVyVHJlZS5neXBpCmluZGV4IDZlYzIyMmYwYmFkNGU2OTg0OTgzOTI1MmQ1YWI2MDA1Y2IyN2Uw
NzQuLmU3ZTdhMjcyYzAxNGQzZmY2OTExZmRmZGM0NjJhMTU0MTBjMDNiZDEgMTAwNjQ0Ci0tLSBh
L1Rvb2xzL0R1bXBSZW5kZXJUcmVlL0R1bXBSZW5kZXJUcmVlLmd5cGkKKysrIGIvVG9vbHMvRHVt
cFJlbmRlclRyZWUvRHVtcFJlbmRlclRyZWUuZ3lwaQpAQCAtOCw4ICs4LDYgQEAKICAgICAgICAg
ICAgICdjaHJvbWl1bS9EUlREZXZUb29sc0NsaWVudC5jcHAnLAogICAgICAgICAgICAgJ2Nocm9t
aXVtL0RSVERldlRvb2xzQ2xpZW50LmgnLAogICAgICAgICAgICAgJ2Nocm9taXVtL0R1bXBSZW5k
ZXJUcmVlLmNwcCcsCi0gICAgICAgICAgICAnY2hyb21pdW0vRFJUVGVzdFJ1bm5lci5jcHAnLAot
ICAgICAgICAgICAgJ2Nocm9taXVtL0RSVFRlc3RSdW5uZXIuaCcsCiAgICAgICAgICAgICAnY2hy
b21pdW0vTW9ja0NvbnN0cmFpbnRzLmNwcCcsCiAgICAgICAgICAgICAnY2hyb21pdW0vTW9ja0Nv
bnN0cmFpbnRzLmgnLAogICAgICAgICAgICAgJ2Nocm9taXVtL01vY2tXZWJLaXRQbGF0Zm9ybVN1
cHBvcnQuY3BwJywKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL0RS
VFRlc3RSdW5uZXIuY3BwIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vRFJUVGVzdFJ1
bm5lci5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDZiN2ViYWM1OTljYTk1YTE1
MzgyOTI1ZGE1OTAwYzhmMzY4YzZkMTkuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vRFJUVGVzdFJ1bm5l
ci5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSw0MDQgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAo
QykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICogQ29weXJpZ2h0IChD
KSAyMDEwIFBhd2VsIEhhamRhbiAocGhhamRhbi5qckBjaHJvbWl1bS5vcmcpCi0gKiBDb3B5cmln
aHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgotICoKLSAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zIGFyZQotICogbWV0OgotICoKLSAqICAgICAqIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCi0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlCi0gKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCi0gKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi0gKiBkaXN0cmlidXRpb24u
Ci0gKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMg
b2YgaXRzCi0gKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3Rl
IHByb2R1Y3RzIGRlcml2ZWQgZnJvbQotICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmlj
IHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0gKiAiQVMgSVMi
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VAotICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SCi0gKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAotICogT1dORVIgT1IgQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0gKiBT
UEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLSAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotICogVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAot
ICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcu
aCIKLSNpbmNsdWRlICJEUlRUZXN0UnVubmVyLmgiCi0KLSNpbmNsdWRlICJEUlREZXZUb29sc0Fn
ZW50LmgiCi0jaW5jbHVkZSAiVGFzay5oIgotI2luY2x1ZGUgIlRlc3RTaGVsbC5oIgotI2luY2x1
ZGUgIldlYkFuaW1hdGlvbkNvbnRyb2xsZXIuaCIKLSNpbmNsdWRlICJXZWJCaW5kaW5ncy5oIgot
I2luY2x1ZGUgIldlYkNvbnNvbGVNZXNzYWdlLmgiCi0jaW5jbHVkZSAiV2ViRG9jdW1lbnQuaCIK
LSNpbmNsdWRlICJXZWJFbGVtZW50LmgiCi0jaW5jbHVkZSAiV2ViRmluZE9wdGlvbnMuaCIKLSNp
bmNsdWRlICJXZWJGcmFtZS5oIgotI2luY2x1ZGUgIldlYklEQkZhY3RvcnkuaCIKLSNpbmNsdWRl
ICJXZWJJbnB1dEVsZW1lbnQuaCIKLSNpbmNsdWRlICJXZWJLaXQuaCIKLSNpbmNsdWRlICJXZWJQ
cmludFBhcmFtcy5oIgotI2luY2x1ZGUgIldlYlNjcmlwdFNvdXJjZS5oIgotI2luY2x1ZGUgIldl
YlNlY3VyaXR5UG9saWN5LmgiCi0jaW5jbHVkZSAiV2ViU2VyaWFsaXplZFNjcmlwdFZhbHVlLmgi
Ci0jaW5jbHVkZSAiV2ViU2V0dGluZ3MuaCIKLSNpbmNsdWRlICJXZWJTdXJyb3VuZGluZ1RleHQu
aCIKLSNpbmNsdWRlICJXZWJWaWV3LmgiCi0jaW5jbHVkZSAiV2ViVmlld0hvc3QuaCIKLSNpbmNs
dWRlICJXZWJXb3JrZXJJbmZvLmgiCi0jaW5jbHVkZSAidjgvaW5jbHVkZS92OC5oIgotI2luY2x1
ZGUgIndlYmtpdC9zdXBwb3J0L3dlYmtpdF9zdXBwb3J0LmgiCi0jaW5jbHVkZSA8YWxnb3JpdGht
PgotI2luY2x1ZGUgPGNjdHlwZT4KLSNpbmNsdWRlIDxjc3RkbGliPgotI2luY2x1ZGUgPGxpbWl0
cz4KLSNpbmNsdWRlIDxwdWJsaWMvV2ViRGF0YS5oPgotI2luY2x1ZGUgPHB1YmxpYy9XZWJTaXpl
Lmg+Ci0jaW5jbHVkZSA8cHVibGljL1dlYlVSTC5oPgotI2luY2x1ZGUgPHNzdHJlYW0+Ci0jaW5j
bHVkZSA8d3RmL093bkFycmF5UHRyLmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+
Ci0KLSNpZiBPUyhMSU5VWCkgfHwgT1MoQU5EUk9JRCkKLSNpbmNsdWRlICJsaW51eC9XZWJGb250
UmVuZGVyaW5nLmgiCi0jZW5kaWYKLQotdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7Ci11c2luZyBu
YW1lc3BhY2UgV2ViS2l0OwotdXNpbmcgbmFtZXNwYWNlIFdlYlRlc3RSdW5uZXI7Ci11c2luZyBu
YW1lc3BhY2Ugc3RkOwotCi1EUlRUZXN0UnVubmVyOjpEUlRUZXN0UnVubmVyKFRlc3RTaGVsbCog
c2hlbGwpCi0gICAgOiBtX3NoZWxsKHNoZWxsKQotICAgICwgbV9jbG9zZVJlbWFpbmluZ1dpbmRv
d3MoZmFsc2UpCi0gICAgLCBtX3Nob3dEZWJ1Z0xheWVyVHJlZShmYWxzZSkKLSAgICAsIG1fd29y
a1F1ZXVlKHRoaXMpCi17Ci0KLSAgICAvLyBJbml0aWFsaXplIHRoZSBtYXAgdGhhdCBhc3NvY2lh
dGVzIG1ldGhvZHMgb2YgdGhpcyBjbGFzcyB3aXRoIHRoZSBuYW1lcwotICAgIC8vIHRoZXkgd2ls
bCB1c2Ugd2hlbiBjYWxsZWQgYnkgSmF2YVNjcmlwdC4gVGhlIGFjdHVhbCBiaW5kaW5nIG9mIHRo
b3NlCi0gICAgLy8gbmFtZXMgdG8gdGhlaXIgbWV0aG9kcyB3aWxsIGJlIGRvbmUgYnkgY2FsbGlu
ZyBiaW5kVG9KYXZhU2NyaXB0KCkgKGRlZmluZWQKLSAgICAvLyBieSBDcHBCb3VuZENsYXNzLCB0
aGUgcGFyZW50IHRvIERSVFRlc3RSdW5uZXIpLgotICAgIGJpbmRNZXRob2QoIm5vdGlmeURvbmUi
LCAmRFJUVGVzdFJ1bm5lcjo6bm90aWZ5RG9uZSk7Ci0gICAgYmluZE1ldGhvZCgicXVldWVCYWNr
TmF2aWdhdGlvbiIsICZEUlRUZXN0UnVubmVyOjpxdWV1ZUJhY2tOYXZpZ2F0aW9uKTsKLSAgICBi
aW5kTWV0aG9kKCJxdWV1ZUZvcndhcmROYXZpZ2F0aW9uIiwgJkRSVFRlc3RSdW5uZXI6OnF1ZXVl
Rm9yd2FyZE5hdmlnYXRpb24pOwotICAgIGJpbmRNZXRob2QoInF1ZXVlTG9hZGluZ1NjcmlwdCIs
ICZEUlRUZXN0UnVubmVyOjpxdWV1ZUxvYWRpbmdTY3JpcHQpOwotICAgIGJpbmRNZXRob2QoInF1
ZXVlTG9hZCIsICZEUlRUZXN0UnVubmVyOjpxdWV1ZUxvYWQpOwotICAgIGJpbmRNZXRob2QoInF1
ZXVlTG9hZEhUTUxTdHJpbmciLCAmRFJUVGVzdFJ1bm5lcjo6cXVldWVMb2FkSFRNTFN0cmluZyk7
Ci0gICAgYmluZE1ldGhvZCgicXVldWVOb25Mb2FkaW5nU2NyaXB0IiwgJkRSVFRlc3RSdW5uZXI6
OnF1ZXVlTm9uTG9hZGluZ1NjcmlwdCk7Ci0gICAgYmluZE1ldGhvZCgicXVldWVSZWxvYWQiLCAm
RFJUVGVzdFJ1bm5lcjo6cXVldWVSZWxvYWQpOwotICAgIGJpbmRNZXRob2QoInNldENsb3NlUmVt
YWluaW5nV2luZG93c1doZW5Db21wbGV0ZSIsICZEUlRUZXN0UnVubmVyOjpzZXRDbG9zZVJlbWFp
bmluZ1dpbmRvd3NXaGVuQ29tcGxldGUpOwotICAgIGJpbmRNZXRob2QoInNldEN1c3RvbVBvbGlj
eURlbGVnYXRlIiwgJkRSVFRlc3RSdW5uZXI6OnNldEN1c3RvbVBvbGljeURlbGVnYXRlKTsKLSAg
ICBiaW5kTWV0aG9kKCJ3YWl0Rm9yUG9saWN5RGVsZWdhdGUiLCAmRFJUVGVzdFJ1bm5lcjo6d2Fp
dEZvclBvbGljeURlbGVnYXRlKTsKLSAgICBiaW5kTWV0aG9kKCJ3YWl0VW50aWxEb25lIiwgJkRS
VFRlc3RSdW5uZXI6OndhaXRVbnRpbERvbmUpOwotICAgIGJpbmRNZXRob2QoIndpbmRvd0NvdW50
IiwgJkRSVFRlc3RSdW5uZXI6OndpbmRvd0NvdW50KTsKLQotCi0gICAgLy8gU2hhcmVkIHByb3Bl
cnRpZXMuCi0gICAgLy8gd2ViSGlzdG9yeUl0ZW1Db3VudCBpcyB1c2VkIGJ5IHRlc3RzIGluIExh
eW91dFRlc3RzXGh0dHBcdGVzdHNcaGlzdG9yeQotICAgIGJpbmRQcm9wZXJ0eSgid2ViSGlzdG9y
eUl0ZW1Db3VudCIsICZtX3dlYkhpc3RvcnlJdGVtQ291bnQpOwotICAgIGJpbmRQcm9wZXJ0eSgi
aW50ZXJjZXB0UG9zdE1lc3NhZ2UiLCAmbV9pbnRlcmNlcHRQb3N0TWVzc2FnZSk7Ci19Ci0KLURS
VFRlc3RSdW5uZXI6On5EUlRUZXN0UnVubmVyKCkKLXsKLX0KLQotRFJUVGVzdFJ1bm5lcjo6V29y
a1F1ZXVlOjp+V29ya1F1ZXVlKCkKLXsKLSAgICByZXNldCgpOwotfQotCi12b2lkIERSVFRlc3RS
dW5uZXI6OldvcmtRdWV1ZTo6cHJvY2Vzc1dvcmtTb29uKCkKLXsKLSAgICBpZiAobV9jb250cm9s
bGVyLT50b3BMb2FkaW5nRnJhbWUoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgaWYgKCFtX3F1
ZXVlLmlzRW1wdHkoKSkgewotICAgICAgICAvLyBXZSBkZWxheSBwcm9jZXNzaW5nIHF1ZXVlZCB3
b3JrIHRvIGF2b2lkIHJlY3Vyc2lvbiBwcm9ibGVtcy4KLSAgICAgICAgcG9zdFRhc2sobmV3IFdv
cmtRdWV1ZVRhc2sodGhpcykpOwotICAgIH0gZWxzZSBpZiAoIW1fY29udHJvbGxlci0+bV93YWl0
VW50aWxEb25lKQotICAgICAgICBtX2NvbnRyb2xsZXItPm1fc2hlbGwtPnRlc3RGaW5pc2hlZCgp
OwotfQotCi12b2lkIERSVFRlc3RSdW5uZXI6OldvcmtRdWV1ZTo6cHJvY2Vzc1dvcmsoKQotewot
ICAgIFRlc3RTaGVsbCogc2hlbGwgPSBtX2NvbnRyb2xsZXItPm1fc2hlbGw7Ci0gICAgLy8gUXVp
dCBkb2luZyB3b3JrIG9uY2UgYSBsb2FkIGlzIGluIHByb2dyZXNzLgotICAgIHdoaWxlICghbV9x
dWV1ZS5pc0VtcHR5KCkpIHsKLSAgICAgICAgYm9vbCBzdGFydGVkTG9hZCA9IG1fcXVldWUuZmly
c3QoKS0+cnVuKHNoZWxsKTsKLSAgICAgICAgZGVsZXRlIG1fcXVldWUudGFrZUZpcnN0KCk7Ci0g
ICAgICAgIGlmIChzdGFydGVkTG9hZCkKLSAgICAgICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAg
ICBpZiAoIW1fY29udHJvbGxlci0+bV93YWl0VW50aWxEb25lICYmICFtX2NvbnRyb2xsZXItPnRv
cExvYWRpbmdGcmFtZSgpKQotICAgICAgICBzaGVsbC0+dGVzdEZpbmlzaGVkKCk7Ci19Ci0KLXZv
aWQgRFJUVGVzdFJ1bm5lcjo6V29ya1F1ZXVlOjpyZXNldCgpCi17Ci0gICAgbV9mcm96ZW4gPSBm
YWxzZTsKLSAgICB3aGlsZSAoIW1fcXVldWUuaXNFbXB0eSgpKQotICAgICAgICBkZWxldGUgbV9x
dWV1ZS50YWtlRmlyc3QoKTsKLX0KLQotdm9pZCBEUlRUZXN0UnVubmVyOjpXb3JrUXVldWU6OmFk
ZFdvcmsoV29ya0l0ZW0qIHdvcmspCi17Ci0gICAgaWYgKG1fZnJvemVuKSB7Ci0gICAgICAgIGRl
bGV0ZSB3b3JrOwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIG1fcXVldWUuYXBwZW5kKHdv
cmspOwotfQotCi12b2lkIERSVFRlc3RSdW5uZXI6OndhaXRVbnRpbERvbmUoY29uc3QgQ3BwQXJn
dW1lbnRMaXN0JiwgQ3BwVmFyaWFudCogcmVzdWx0KQotewotICAgIGlmICghd2Via2l0X3N1cHBv
cnQ6OkJlaW5nRGVidWdnZWQoKSkKLSAgICAgICAgcG9zdERlbGF5ZWRUYXNrKG5ldyBOb3RpZnlE
b25lVGltZWRPdXRUYXNrKHRoaXMpLCBtX3NoZWxsLT5sYXlvdXRUZXN0VGltZW91dCgpKTsKLSAg
ICBtX3dhaXRVbnRpbERvbmUgPSB0cnVlOwotICAgIHJlc3VsdC0+c2V0TnVsbCgpOwotfQotCi12
b2lkIERSVFRlc3RSdW5uZXI6Om5vdGlmeURvbmUoY29uc3QgQ3BwQXJndW1lbnRMaXN0JiwgQ3Bw
VmFyaWFudCogcmVzdWx0KQotewotICAgIC8vIFRlc3QgZGlkbid0IHRpbWVvdXQuIEtpbGwgdGhl
IHRpbWVvdXQgdGltZXIuCi0gICAgdGFza0xpc3QoKS0+cmV2b2tlQWxsKCk7Ci0KLSAgICBjb21w
bGV0ZU5vdGlmeURvbmUoZmFsc2UpOwotICAgIHJlc3VsdC0+c2V0TnVsbCgpOwotfQotCi12b2lk
IERSVFRlc3RSdW5uZXI6OmNvbXBsZXRlTm90aWZ5RG9uZShib29sIGlzVGltZW91dCkKLXsKLSAg
ICBpZiAobV93YWl0VW50aWxEb25lICYmICF0b3BMb2FkaW5nRnJhbWUoKSAmJiBtX3dvcmtRdWV1
ZS5pc0VtcHR5KCkpIHsKLSAgICAgICAgaWYgKGlzVGltZW91dCkKLSAgICAgICAgICAgIG1fc2hl
bGwtPnRlc3RUaW1lZE91dCgpOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICBtX3NoZWxsLT50
ZXN0RmluaXNoZWQoKTsKLSAgICB9Ci0gICAgbV93YWl0VW50aWxEb25lID0gZmFsc2U7Ci19Ci0K
LWNsYXNzIFdvcmtJdGVtQmFja0ZvcndhcmQgOiBwdWJsaWMgRFJUVGVzdFJ1bm5lcjo6V29ya0l0
ZW0gewotcHVibGljOgotICAgIFdvcmtJdGVtQmFja0ZvcndhcmQoaW50IGRpc3RhbmNlKSA6IG1f
ZGlzdGFuY2UoZGlzdGFuY2UpIHsgfQotICAgIGJvb2wgcnVuKFRlc3RTaGVsbCogc2hlbGwpCi0g
ICAgewotICAgICAgICBzaGVsbC0+Z29Ub09mZnNldChtX2Rpc3RhbmNlKTsKLSAgICAgICAgcmV0
dXJuIHRydWU7IC8vIEZJWE1FOiBEaWQgaXQgcmVhbGx5IHN0YXJ0IGEgbmF2aWdhdGlvbj8KLSAg
ICB9Ci0KLXByaXZhdGU6Ci0gICAgaW50IG1fZGlzdGFuY2U7Ci19OwotCi12b2lkIERSVFRlc3RS
dW5uZXI6OnF1ZXVlQmFja05hdmlnYXRpb24oY29uc3QgQ3BwQXJndW1lbnRMaXN0JiBhcmd1bWVu
dHMsIENwcFZhcmlhbnQqIHJlc3VsdCkKLXsKLSAgICBpZiAoYXJndW1lbnRzLnNpemUoKSA+IDAg
JiYgYXJndW1lbnRzWzBdLmlzTnVtYmVyKCkpCi0gICAgICAgIG1fd29ya1F1ZXVlLmFkZFdvcmso
bmV3IFdvcmtJdGVtQmFja0ZvcndhcmQoLWFyZ3VtZW50c1swXS50b0ludDMyKCkpKTsKLSAgICBy
ZXN1bHQtPnNldE51bGwoKTsKLX0KLQotdm9pZCBEUlRUZXN0UnVubmVyOjpxdWV1ZUZvcndhcmRO
YXZpZ2F0aW9uKGNvbnN0IENwcEFyZ3VtZW50TGlzdCYgYXJndW1lbnRzLCBDcHBWYXJpYW50KiBy
ZXN1bHQpCi17Ci0gICAgaWYgKGFyZ3VtZW50cy5zaXplKCkgPiAwICYmIGFyZ3VtZW50c1swXS5p
c051bWJlcigpKQotICAgICAgICBtX3dvcmtRdWV1ZS5hZGRXb3JrKG5ldyBXb3JrSXRlbUJhY2tG
b3J3YXJkKGFyZ3VtZW50c1swXS50b0ludDMyKCkpKTsKLSAgICByZXN1bHQtPnNldE51bGwoKTsK
LX0KLQotY2xhc3MgV29ya0l0ZW1SZWxvYWQgOiBwdWJsaWMgRFJUVGVzdFJ1bm5lcjo6V29ya0l0
ZW0gewotcHVibGljOgotICAgIGJvb2wgcnVuKFRlc3RTaGVsbCogc2hlbGwpCi0gICAgewotICAg
ICAgICBzaGVsbC0+cmVsb2FkKCk7Ci0gICAgICAgIHJldHVybiB0cnVlOwotICAgIH0KLX07Ci0K
LXZvaWQgRFJUVGVzdFJ1bm5lcjo6cXVldWVSZWxvYWQoY29uc3QgQ3BwQXJndW1lbnRMaXN0Jiwg
Q3BwVmFyaWFudCogcmVzdWx0KQotewotICAgIG1fd29ya1F1ZXVlLmFkZFdvcmsobmV3IFdvcmtJ
dGVtUmVsb2FkKTsKLSAgICByZXN1bHQtPnNldE51bGwoKTsKLX0KLQotY2xhc3MgV29ya0l0ZW1M
b2FkaW5nU2NyaXB0IDogcHVibGljIERSVFRlc3RSdW5uZXI6OldvcmtJdGVtIHsKLXB1YmxpYzoK
LSAgICBXb3JrSXRlbUxvYWRpbmdTY3JpcHQoY29uc3Qgc3RyaW5nJiBzY3JpcHQpIDogbV9zY3Jp
cHQoc2NyaXB0KSB7IH0KLSAgICBib29sIHJ1bihUZXN0U2hlbGwqIHNoZWxsKQotICAgIHsKLSAg
ICAgICAgc2hlbGwtPndlYlZpZXcoKS0+bWFpbkZyYW1lKCktPmV4ZWN1dGVTY3JpcHQoV2ViU2Ny
aXB0U291cmNlKFdlYlN0cmluZzo6ZnJvbVVURjgobV9zY3JpcHQpKSk7Ci0gICAgICAgIHJldHVy
biB0cnVlOyAvLyBGSVhNRTogRGlkIGl0IHJlYWxseSBzdGFydCBhIG5hdmlnYXRpb24/Ci0gICAg
fQotCi1wcml2YXRlOgotICAgIHN0cmluZyBtX3NjcmlwdDsKLX07Ci0KLWNsYXNzIFdvcmtJdGVt
Tm9uTG9hZGluZ1NjcmlwdCA6IHB1YmxpYyBEUlRUZXN0UnVubmVyOjpXb3JrSXRlbSB7Ci1wdWJs
aWM6Ci0gICAgV29ya0l0ZW1Ob25Mb2FkaW5nU2NyaXB0KGNvbnN0IHN0cmluZyYgc2NyaXB0KSA6
IG1fc2NyaXB0KHNjcmlwdCkgeyB9Ci0gICAgYm9vbCBydW4oVGVzdFNoZWxsKiBzaGVsbCkKLSAg
ICB7Ci0gICAgICAgIHNoZWxsLT53ZWJWaWV3KCktPm1haW5GcmFtZSgpLT5leGVjdXRlU2NyaXB0
KFdlYlNjcmlwdFNvdXJjZShXZWJTdHJpbmc6OmZyb21VVEY4KG1fc2NyaXB0KSkpOwotICAgICAg
ICByZXR1cm4gZmFsc2U7Ci0gICAgfQotCi1wcml2YXRlOgotICAgIHN0cmluZyBtX3NjcmlwdDsK
LX07Ci0KLXZvaWQgRFJUVGVzdFJ1bm5lcjo6cXVldWVMb2FkaW5nU2NyaXB0KGNvbnN0IENwcEFy
Z3VtZW50TGlzdCYgYXJndW1lbnRzLCBDcHBWYXJpYW50KiByZXN1bHQpCi17Ci0gICAgaWYgKGFy
Z3VtZW50cy5zaXplKCkgPiAwICYmIGFyZ3VtZW50c1swXS5pc1N0cmluZygpKQotICAgICAgICBt
X3dvcmtRdWV1ZS5hZGRXb3JrKG5ldyBXb3JrSXRlbUxvYWRpbmdTY3JpcHQoYXJndW1lbnRzWzBd
LnRvU3RyaW5nKCkpKTsKLSAgICByZXN1bHQtPnNldE51bGwoKTsKLX0KLQotdm9pZCBEUlRUZXN0
UnVubmVyOjpxdWV1ZU5vbkxvYWRpbmdTY3JpcHQoY29uc3QgQ3BwQXJndW1lbnRMaXN0JiBhcmd1
bWVudHMsIENwcFZhcmlhbnQqIHJlc3VsdCkKLXsKLSAgICBpZiAoYXJndW1lbnRzLnNpemUoKSA+
IDAgJiYgYXJndW1lbnRzWzBdLmlzU3RyaW5nKCkpCi0gICAgICAgIG1fd29ya1F1ZXVlLmFkZFdv
cmsobmV3IFdvcmtJdGVtTm9uTG9hZGluZ1NjcmlwdChhcmd1bWVudHNbMF0udG9TdHJpbmcoKSkp
OwotICAgIHJlc3VsdC0+c2V0TnVsbCgpOwotfQotCi1jbGFzcyBXb3JrSXRlbUxvYWQgOiBwdWJs
aWMgRFJUVGVzdFJ1bm5lcjo6V29ya0l0ZW0gewotcHVibGljOgotICAgIFdvcmtJdGVtTG9hZChj
b25zdCBXZWJVUkwmIHVybCwgY29uc3QgV2ViU3RyaW5nJiB0YXJnZXQpCi0gICAgICAgIDogbV91
cmwodXJsKQotICAgICAgICAsIG1fdGFyZ2V0KHRhcmdldCkgeyB9Ci0gICAgYm9vbCBydW4oVGVz
dFNoZWxsKiBzaGVsbCkKLSAgICB7Ci0gICAgICAgIHNoZWxsLT53ZWJWaWV3SG9zdCgpLT5sb2Fk
VVJMRm9yRnJhbWUobV91cmwsIG1fdGFyZ2V0KTsKLSAgICAgICAgcmV0dXJuIHRydWU7IC8vIEZJ
WE1FOiBEaWQgaXQgcmVhbGx5IHN0YXJ0IGEgbmF2aWdhdGlvbj8KLSAgICB9Ci0KLXByaXZhdGU6
Ci0gICAgV2ViVVJMIG1fdXJsOwotICAgIFdlYlN0cmluZyBtX3RhcmdldDsKLX07Ci0KLXZvaWQg
RFJUVGVzdFJ1bm5lcjo6cXVldWVMb2FkKGNvbnN0IENwcEFyZ3VtZW50TGlzdCYgYXJndW1lbnRz
LCBDcHBWYXJpYW50KiByZXN1bHQpCi17Ci0gICAgaWYgKGFyZ3VtZW50cy5zaXplKCkgPiAwICYm
IGFyZ3VtZW50c1swXS5pc1N0cmluZygpKSB7Ci0gICAgICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQg
V2ViVVJMOjpyZXNvbHZlKCkgYW5kIGF2b2lkIEdVUkwuCi0gICAgICAgIEdVUkwgY3VycmVudFVS
TCA9IG1fc2hlbGwtPndlYlZpZXcoKS0+bWFpbkZyYW1lKCktPmRvY3VtZW50KCkudXJsKCk7Ci0g
ICAgICAgIEdVUkwgZnVsbFVSTCA9IGN1cnJlbnRVUkwuUmVzb2x2ZShhcmd1bWVudHNbMF0udG9T
dHJpbmcoKSk7Ci0KLSAgICAgICAgc3RyaW5nIHRhcmdldCA9ICIiOwotICAgICAgICBpZiAoYXJn
dW1lbnRzLnNpemUoKSA+IDEgJiYgYXJndW1lbnRzWzFdLmlzU3RyaW5nKCkpCi0gICAgICAgICAg
ICB0YXJnZXQgPSBhcmd1bWVudHNbMV0udG9TdHJpbmcoKTsKLQotICAgICAgICBtX3dvcmtRdWV1
ZS5hZGRXb3JrKG5ldyBXb3JrSXRlbUxvYWQoZnVsbFVSTCwgV2ViU3RyaW5nOjpmcm9tVVRGOCh0
YXJnZXQpKSk7Ci0gICAgfQotICAgIHJlc3VsdC0+c2V0TnVsbCgpOwotfQotCi1jbGFzcyBXb3Jr
SXRlbUxvYWRIVE1MU3RyaW5nIDogcHVibGljIERSVFRlc3RSdW5uZXI6OldvcmtJdGVtICB7Ci1w
dWJsaWM6Ci0gICAgV29ya0l0ZW1Mb2FkSFRNTFN0cmluZyhjb25zdCBzdGQ6OnN0cmluZyYgaHRt
bCwgY29uc3QgV2ViVVJMJiBiYXNlVVJMKQotICAgICAgICA6IG1faHRtbChodG1sKQotICAgICAg
ICAsIG1fYmFzZVVSTChiYXNlVVJMKSB7IH0KLSAgICBXb3JrSXRlbUxvYWRIVE1MU3RyaW5nKGNv
bnN0IHN0ZDo6c3RyaW5nJiBodG1sLCBjb25zdCBXZWJVUkwmIGJhc2VVUkwsIGNvbnN0IFdlYlVS
TCYgdW5yZWFjaGFibGVVUkwpCi0gICAgICAgIDogbV9odG1sKGh0bWwpCi0gICAgICAgICwgbV9i
YXNlVVJMKGJhc2VVUkwpCi0gICAgICAgICwgbV91bnJlYWNoYWJsZVVSTCh1bnJlYWNoYWJsZVVS
TCkgeyB9Ci0gICAgYm9vbCBydW4oVGVzdFNoZWxsKiBzaGVsbCkKLSAgICB7Ci0gICAgICAgIHNo
ZWxsLT53ZWJWaWV3KCktPm1haW5GcmFtZSgpLT5sb2FkSFRNTFN0cmluZygKLSAgICAgICAgICAg
IFdlYktpdDo6V2ViRGF0YShtX2h0bWwuZGF0YSgpLCBtX2h0bWwubGVuZ3RoKCkpLCBtX2Jhc2VV
UkwsIG1fdW5yZWFjaGFibGVVUkwpOwotICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICB9Ci0KLXBy
aXZhdGU6Ci0gICAgc3RkOjpzdHJpbmcgbV9odG1sOwotICAgIFdlYlVSTCBtX2Jhc2VVUkw7Ci0g
ICAgV2ViVVJMIG1fdW5yZWFjaGFibGVVUkw7Ci19OwotCi12b2lkIERSVFRlc3RSdW5uZXI6OnF1
ZXVlTG9hZEhUTUxTdHJpbmcoY29uc3QgQ3BwQXJndW1lbnRMaXN0JiBhcmd1bWVudHMsIENwcFZh
cmlhbnQqIHJlc3VsdCkKLXsKLSAgICBpZiAoYXJndW1lbnRzLnNpemUoKSA+IDAgJiYgYXJndW1l
bnRzWzBdLmlzU3RyaW5nKCkpIHsKLSAgICAgICAgc3RyaW5nIGh0bWwgPSBhcmd1bWVudHNbMF0u
dG9TdHJpbmcoKTsKLSAgICAgICAgV2ViVVJMIGJhc2VVUkwoR1VSTCgiIikpOwotICAgICAgICBp
ZiAoYXJndW1lbnRzLnNpemUoKSA+IDEgJiYgYXJndW1lbnRzWzFdLmlzU3RyaW5nKCkpCi0gICAg
ICAgICAgICBiYXNlVVJMID0gV2ViVVJMKEdVUkwoYXJndW1lbnRzWzFdLnRvU3RyaW5nKCkpKTsK
LSAgICAgICAgaWYgKGFyZ3VtZW50cy5zaXplKCkgPiAyICYmIGFyZ3VtZW50c1syXS5pc1N0cmlu
ZygpKQotICAgICAgICAgICAgbV93b3JrUXVldWUuYWRkV29yayhuZXcgV29ya0l0ZW1Mb2FkSFRN
TFN0cmluZyhodG1sLCBiYXNlVVJMLCBXZWJVUkwoR1VSTChhcmd1bWVudHNbMl0udG9TdHJpbmco
KSkpKSk7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIG1fd29ya1F1ZXVlLmFkZFdvcmsobmV3
IFdvcmtJdGVtTG9hZEhUTUxTdHJpbmcoaHRtbCwgYmFzZVVSTCkpOwotICAgIH0KLSAgICByZXN1
bHQtPnNldE51bGwoKTsKLX0KLQotdm9pZCBEUlRUZXN0UnVubmVyOjpyZXNldCgpCi17Ci0gICAg
VGVzdFJ1bm5lcjo6cmVzZXQoKTsKLSAgICBtX3dhaXRVbnRpbERvbmUgPSBmYWxzZTsKLSAgICBt
X3dlYkhpc3RvcnlJdGVtQ291bnQuc2V0KDApOwotICAgIG1faW50ZXJjZXB0UG9zdE1lc3NhZ2Uu
c2V0KGZhbHNlKTsKLQotICAgIGlmIChtX2Nsb3NlUmVtYWluaW5nV2luZG93cykKLSAgICAgICAg
bV9zaGVsbC0+Y2xvc2VSZW1haW5pbmdXaW5kb3dzKCk7Ci0gICAgZWxzZQotICAgICAgICBtX2Ns
b3NlUmVtYWluaW5nV2luZG93cyA9IHRydWU7Ci0gICAgbV93b3JrUXVldWUucmVzZXQoKTsKLX0K
LQotdm9pZCBEUlRUZXN0UnVubmVyOjpsb2NhdGlvbkNoYW5nZURvbmUoKQotewotICAgIG1fd2Vi
SGlzdG9yeUl0ZW1Db3VudC5zZXQobV9zaGVsbC0+bmF2aWdhdGlvbkVudHJ5Q291bnQoKSk7Ci0K
LSAgICAvLyBObyBtb3JlIG5ldyB3b3JrIGFmdGVyIHRoZSBmaXJzdCBjb21wbGV0ZSBsb2FkLgot
ICAgIG1fd29ya1F1ZXVlLnNldEZyb3plbih0cnVlKTsKLQotICAgIGlmICghbV93YWl0VW50aWxE
b25lKQotICAgICAgICBtX3dvcmtRdWV1ZS5wcm9jZXNzV29ya1Nvb24oKTsKLX0KLQotdm9pZCBE
UlRUZXN0UnVubmVyOjpwb2xpY3lEZWxlZ2F0ZURvbmUoKQotewotICAgIEFTU0VSVChtX3dhaXRV
bnRpbERvbmUpOwotICAgIG1fc2hlbGwtPnRlc3RGaW5pc2hlZCgpOwotICAgIG1fd2FpdFVudGls
RG9uZSA9IGZhbHNlOwotfQotCi12b2lkIERSVFRlc3RSdW5uZXI6OndpbmRvd0NvdW50KGNvbnN0
IENwcEFyZ3VtZW50TGlzdCYsIENwcFZhcmlhbnQqIHJlc3VsdCkKLXsKLSAgICByZXN1bHQtPnNl
dChzdGF0aWNfY2FzdDxpbnQ+KG1fc2hlbGwtPndpbmRvd0NvdW50KCkpKTsKLX0KLQotdm9pZCBE
UlRUZXN0UnVubmVyOjpzZXRDbG9zZVJlbWFpbmluZ1dpbmRvd3NXaGVuQ29tcGxldGUoY29uc3Qg
Q3BwQXJndW1lbnRMaXN0JiBhcmd1bWVudHMsIENwcFZhcmlhbnQqIHJlc3VsdCkKLXsKLSAgICBp
ZiAoYXJndW1lbnRzLnNpemUoKSA+IDAgJiYgYXJndW1lbnRzWzBdLmlzQm9vbCgpKQotICAgICAg
ICBtX2Nsb3NlUmVtYWluaW5nV2luZG93cyA9IGFyZ3VtZW50c1swXS52YWx1ZS5ib29sVmFsdWU7
Ci0gICAgcmVzdWx0LT5zZXROdWxsKCk7Ci19Ci0KLXZvaWQgRFJUVGVzdFJ1bm5lcjo6c2V0Q3Vz
dG9tUG9saWN5RGVsZWdhdGUoY29uc3QgQ3BwQXJndW1lbnRMaXN0JiBhcmd1bWVudHMsIENwcFZh
cmlhbnQqIHJlc3VsdCkKLXsKLSAgICBpZiAoYXJndW1lbnRzLnNpemUoKSA+IDAgJiYgYXJndW1l
bnRzWzBdLmlzQm9vbCgpKSB7Ci0gICAgICAgIGJvb2wgZW5hYmxlID0gYXJndW1lbnRzWzBdLnZh
bHVlLmJvb2xWYWx1ZTsKLSAgICAgICAgYm9vbCBwZXJtaXNzaXZlID0gZmFsc2U7Ci0gICAgICAg
IGlmIChhcmd1bWVudHMuc2l6ZSgpID4gMSAmJiBhcmd1bWVudHNbMV0uaXNCb29sKCkpCi0gICAg
ICAgICAgICBwZXJtaXNzaXZlID0gYXJndW1lbnRzWzFdLnZhbHVlLmJvb2xWYWx1ZTsKLSAgICAg
ICAgbV9zaGVsbC0+d2ViVmlld0hvc3QoKS0+c2V0Q3VzdG9tUG9saWN5RGVsZWdhdGUoZW5hYmxl
LCBwZXJtaXNzaXZlKTsKLSAgICB9Ci0gICAgcmVzdWx0LT5zZXROdWxsKCk7Ci19Ci0KLXZvaWQg
RFJUVGVzdFJ1bm5lcjo6d2FpdEZvclBvbGljeURlbGVnYXRlKGNvbnN0IENwcEFyZ3VtZW50TGlz
dCYsIENwcFZhcmlhbnQqIHJlc3VsdCkKLXsKLSAgICBtX3NoZWxsLT53ZWJWaWV3SG9zdCgpLT53
YWl0Rm9yUG9saWN5RGVsZWdhdGUoKTsKLSAgICBtX3dhaXRVbnRpbERvbmUgPSB0cnVlOwotICAg
IHJlc3VsdC0+c2V0TnVsbCgpOwotfQpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUv
Y2hyb21pdW0vRFJUVGVzdFJ1bm5lci5oIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0v
RFJUVGVzdFJ1bm5lci5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2YjdiM2Y4OTEy
YTEzODI3ZTJiM2ExMTAyYjNhMmEyZWQwZmY0YjAxLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwCi0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL0RSVFRl
c3RSdW5uZXIuaAorKysgL2Rldi9udWxsCkBAIC0xLDE5NiArMCwwIEBACi0vKgotICogQ29weXJp
Z2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKiBDb3B5cmln
aHQgKEMpIDIwMTAgUGF3ZWwgSGFqZGFuIChwaGFqZGFuLmpyQGNocm9taXVtLm9yZykKLSAqIENv
cHlyaWdodCAoQykgMjAxMiBBcHBsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCi0gKgotICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi0gKiBtZXQ6Ci0gKgotICogICAgICogUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
LSAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KLSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUKLSAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLSAqIGluIHRoZSBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLSAqIGRpc3RyaWJ1
dGlvbi4KLSAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBu
YW1lcyBvZiBpdHMKLSAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHBy
b21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0gKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3Bl
Y2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLSAqICJB
UyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLSAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0gKiBPV05FUiBPUiBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwK
LSAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAotICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0gKiBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotLyoKLSAgRFJUVGVz
dFJ1bm5lciBjbGFzczoKLSAgQm91bmQgdG8gYSBKYXZhU2NyaXB0IHdpbmRvdy50ZXN0UnVubmVy
IG9iamVjdCB1c2luZyB0aGUKLSAgQ3BwQm91bmRDbGFzczo6YmluZFRvSmF2YXNjcmlwdCgpLCB0
aGlzIGFsbG93cyBsYXlvdXQgdGVzdHMgdGhhdCBhcmUgcnVuIGluCi0gIHRoZSB0ZXN0X3NoZWxs
IChvciwgaW4gcHJpbmNpcGxlLCBhbnkgd2ViIHBhZ2UgbG9hZGVkIGludG8gYSBjbGllbnQgYXBw
IGJ1aWx0Ci0gIHdpdGggdGhpcyBjbGFzcykgdG8gY29udHJvbCB2YXJpb3VzIGFzcGVjdHMgb2Yg
aG93IHRoZSB0ZXN0cyBhcmUgcnVuIGFuZCB3aGF0Ci0gIHNvcnQgb2Ygb3V0cHV0IHRoZXkgcHJv
ZHVjZS4KLSovCi0KLSNpZm5kZWYgRFJUVGVzdFJ1bm5lcl9oCi0jZGVmaW5lIERSVFRlc3RSdW5u
ZXJfaAotCi0jaW5jbHVkZSAiVGVzdFJ1bm5lci9zcmMvVGVzdFJ1bm5lci5oIgotI2luY2x1ZGUg
IldlYkFycmF5QnVmZmVyVmlldy5oIgotI2luY2x1ZGUgIldlYlRhc2suaCIKLSNpbmNsdWRlIDxw
dWJsaWMvV2ViU3RyaW5nLmg+Ci0jaW5jbHVkZSA8cHVibGljL1dlYlVSTC5oPgotI2luY2x1ZGUg
PHd0Zi9EZXF1ZS5oPgotI2luY2x1ZGUgPHd0Zi9Pd25QdHIuaD4KLQotbmFtZXNwYWNlIHdlYmtp
dF9zdXBwb3J0IHsKLWNsYXNzIFNjb3BlZFRlbXBEaXJlY3Rvcnk7Ci19Ci0KLQotY2xhc3MgVGVz
dFNoZWxsOwotCi11c2luZyBXZWJUZXN0UnVubmVyOjpDcHBBcmd1bWVudExpc3Q7Ci11c2luZyBX
ZWJUZXN0UnVubmVyOjpDcHBWYXJpYW50OwotdXNpbmcgV2ViVGVzdFJ1bm5lcjo6V2ViTWV0aG9k
VGFzazsKLXVzaW5nIFdlYlRlc3RSdW5uZXI6OldlYlRhc2tMaXN0OwotCi1jbGFzcyBEUlRUZXN0
UnVubmVyIDogcHVibGljIFdlYlRlc3RSdW5uZXI6OlRlc3RSdW5uZXIgewotcHVibGljOgotICAg
IC8vIEJ1aWxkcyB0aGUgcHJvcGVydHkgYW5kIG1ldGhvZCBsaXN0cyBuZWVkZWQgdG8gYmluZCB0
aGlzIGNsYXNzIHRvIGEgSlMKLSAgICAvLyBvYmplY3QuCi0gICAgRFJUVGVzdFJ1bm5lcihUZXN0
U2hlbGwqKTsKLQotICAgIHZpcnR1YWwgfkRSVFRlc3RSdW5uZXIoKTsKLQotICAgIC8vIEZ1bmN0
aW9ucyBmb3IgZGVhbGluZyB3aXRoIHdpbmRvd3MuIEJ5IGRlZmF1bHQgd2UgYmxvY2sgYWxsIG5l
dyB3aW5kb3dzLgotICAgIHZvaWQgd2luZG93Q291bnQoY29uc3QgQ3BwQXJndW1lbnRMaXN0Jiwg
Q3BwVmFyaWFudCopOwotICAgIHZvaWQgc2V0Q2xvc2VSZW1haW5pbmdXaW5kb3dzV2hlbkNvbXBs
ZXRlKGNvbnN0IENwcEFyZ3VtZW50TGlzdCYsIENwcFZhcmlhbnQqKTsKLQotICAgIC8vIEJ5IGRl
ZmF1bHQsIHRlc3RzIGVuZCB3aGVuIHBhZ2UgbG9hZCBpcyBjb21wbGV0ZS4gVGhlc2UgbWV0aG9k
cyBhcmUgdXNlZAotICAgIC8vIHRvIGRlbGF5IHRoZSBjb21wbGV0aW9uIG9mIHRoZSB0ZXN0IHVu
dGlsIG5vdGlmeURvbmUgaXMgY2FsbGVkLgotICAgIHZvaWQgd2FpdFVudGlsRG9uZShjb25zdCBD
cHBBcmd1bWVudExpc3QmLCBDcHBWYXJpYW50Kik7Ci0gICAgdm9pZCBub3RpZnlEb25lKGNvbnN0
IENwcEFyZ3VtZW50TGlzdCYsIENwcFZhcmlhbnQqKTsKLQotICAgIC8vIE1ldGhvZHMgZm9yIGFk
ZGluZyBhY3Rpb25zIHRvIHRoZSB3b3JrIHF1ZXVlLiBVc2VkIGluIGNvbmp1bmN0aW9uIHdpdGgK
LSAgICAvLyB3YWl0VW50aWxEb25lL25vdGlmeURvbmUgYWJvdmUuCi0gICAgdm9pZCBxdWV1ZUJh
Y2tOYXZpZ2F0aW9uKGNvbnN0IENwcEFyZ3VtZW50TGlzdCYsIENwcFZhcmlhbnQqKTsKLSAgICB2
b2lkIHF1ZXVlRm9yd2FyZE5hdmlnYXRpb24oY29uc3QgQ3BwQXJndW1lbnRMaXN0JiwgQ3BwVmFy
aWFudCopOwotICAgIHZvaWQgcXVldWVSZWxvYWQoY29uc3QgQ3BwQXJndW1lbnRMaXN0JiwgQ3Bw
VmFyaWFudCopOwotICAgIHZvaWQgcXVldWVMb2FkaW5nU2NyaXB0KGNvbnN0IENwcEFyZ3VtZW50
TGlzdCYsIENwcFZhcmlhbnQqKTsKLSAgICB2b2lkIHF1ZXVlTm9uTG9hZGluZ1NjcmlwdChjb25z
dCBDcHBBcmd1bWVudExpc3QmLCBDcHBWYXJpYW50Kik7Ci0gICAgdm9pZCBxdWV1ZUxvYWQoY29u
c3QgQ3BwQXJndW1lbnRMaXN0JiwgQ3BwVmFyaWFudCopOwotICAgIHZvaWQgcXVldWVMb2FkSFRN
TFN0cmluZyhjb25zdCBDcHBBcmd1bWVudExpc3QmLCBDcHBWYXJpYW50Kik7Ci0KLQotICAgIC8v
IENhdXNlcyBuYXZpZ2F0aW9uIGFjdGlvbnMganVzdCBwcmludG91dCB0aGUgaW50ZW5kZWQgbmF2
aWdhdGlvbiBpbnN0ZWFkCi0gICAgLy8gb2YgdGFraW5nIHlvdSB0byB0aGUgcGFnZS4gVGhpcyBp
cyB1c2VkIGZvciBjYXNlcyBsaWtlIG1haWx0bywgd2hlcmUgeW91Ci0gICAgLy8gZG9uJ3QgYWN0
dWFsbHkgd2FudCB0byBvcGVuIHRoZSBtYWlsIHByb2dyYW0uCi0gICAgdm9pZCBzZXRDdXN0b21Q
b2xpY3lEZWxlZ2F0ZShjb25zdCBDcHBBcmd1bWVudExpc3QmLCBDcHBWYXJpYW50Kik7Ci0KLSAg
ICAvLyBEZWxheXMgY29tcGxldGlvbiBvZiB0aGUgdGVzdCB1bnRpbCB0aGUgcG9saWN5IGRlbGVn
YXRlIHJ1bnMuCi0gICAgdm9pZCB3YWl0Rm9yUG9saWN5RGVsZWdhdGUoY29uc3QgQ3BwQXJndW1l
bnRMaXN0JiwgQ3BwVmFyaWFudCopOwotCi1wdWJsaWM6Ci0gICAgLy8gVGhlIGZvbGxvd2luZyBt
ZXRob2RzIGFyZSBub3QgZXhwb3NlZCB0byBKYXZhU2NyaXB0LgotICAgIHZvaWQgc2V0V29ya1F1
ZXVlRnJvemVuKGJvb2wgZnJvemVuKSB7IG1fd29ya1F1ZXVlLnNldEZyb3plbihmcm96ZW4pOyB9
Ci0KLSAgICB2b2lkIHNldFNob3dEZWJ1Z0xheWVyVHJlZShib29sIHZhbHVlKSB7IG1fc2hvd0Rl
YnVnTGF5ZXJUcmVlID0gdmFsdWU7IH0KLQotICAgIGJvb2wgc2hvdWxkSW50ZXJjZXB0UG9zdE1l
c3NhZ2UoKQotICAgIHsKLSAgICAgICAgcmV0dXJuIG1faW50ZXJjZXB0UG9zdE1lc3NhZ2UuaXNC
b29sKCkgJiYgbV9pbnRlcmNlcHRQb3N0TWVzc2FnZS50b0Jvb2xlYW4oKTsKLSAgICB9Ci0KLSAg
ICAvLyBDYWxsZWQgYnkgdGhlIHdlYnZpZXcgZGVsZWdhdGUgd2hlbiB0aGUgdG9wbGV2ZWwgZnJh
bWUgbG9hZCBpcyBkb25lLgotICAgIHZpcnR1YWwgdm9pZCBsb2NhdGlvbkNoYW5nZURvbmUoKTsK
LQotICAgIC8vIENhbGxlZCBieSB0aGUgd2VidmlldyBkZWxlZ2F0ZSB3aGVuIHRoZSBwb2xpY3kg
ZGVsZWdhdGUgcnVucyBpZiB0aGUKLSAgICAvLyB3YWl0Rm9yUG9saWN5RGVsZWdhdGUgd2FzIGNh
bGxlZC4KLSAgICB2b2lkIHBvbGljeURlbGVnYXRlRG9uZSgpOwotCi0gICAgLy8gUmVpbml0aWFs
aXplcyBhbGwgc3RhdGljIHZhbHVlcy4gVGhlIHJlc2V0KCkgbWV0aG9kIHNob3VsZCBiZSBjYWxs
ZWQKLSAgICAvLyBiZWZvcmUgdGhlIHN0YXJ0IG9mIGVhY2ggdGVzdCAoY3VycmVudGx5IGZyb20g
VGVzdFNoZWxsOjpydW5GaWxlVGVzdCkuCi0gICAgdm9pZCByZXNldCgpOwotCi0gICAgLy8gQSBz
aW5nbGUgaXRlbSBpbiB0aGUgd29yayBxdWV1ZS4KLSAgICBjbGFzcyBXb3JrSXRlbSB7Ci0gICAg
cHVibGljOgotICAgICAgICB2aXJ0dWFsIH5Xb3JrSXRlbSgpIHsgfQotCi0gICAgICAgIC8vIFJl
dHVybnMgdHJ1ZSBpZiB0aGlzIHN0YXJ0ZWQgYSBsb2FkLgotICAgICAgICB2aXJ0dWFsIGJvb2wg
cnVuKFRlc3RTaGVsbCopID0gMDsKLSAgICB9OwotCi1wcml2YXRlOgotICAgIGZyaWVuZCBjbGFz
cyBXb3JrSXRlbTsKLSAgICBmcmllbmQgY2xhc3MgV29ya1F1ZXVlOwotCi0gICAgLy8gSGVscGVy
IGNsYXNzIGZvciBtYW5hZ2luZyBldmVudHMgcXVldWVkIGJ5IG1ldGhvZHMgbGlrZSBxdWV1ZUxv
YWQgb3IKLSAgICAvLyBxdWV1ZVNjcmlwdC4KLSAgICBjbGFzcyBXb3JrUXVldWUgewotICAgIHB1
YmxpYzoKLSAgICAgICAgV29ya1F1ZXVlKERSVFRlc3RSdW5uZXIqIGNvbnRyb2xsZXIpIDogbV9m
cm96ZW4oZmFsc2UpLCBtX2NvbnRyb2xsZXIoY29udHJvbGxlcikgeyB9Ci0gICAgICAgIHZpcnR1
YWwgfldvcmtRdWV1ZSgpOwotICAgICAgICB2b2lkIHByb2Nlc3NXb3JrU29vbigpOwotCi0gICAg
ICAgIC8vIFJlc2V0IHRoZSBzdGF0ZSBvZiB0aGUgY2xhc3MgYmV0d2VlbiB0ZXN0cy4KLSAgICAg
ICAgdm9pZCByZXNldCgpOwotCi0gICAgICAgIHZvaWQgYWRkV29yayhXb3JrSXRlbSopOwotCi0g
ICAgICAgIHZvaWQgc2V0RnJvemVuKGJvb2wgZnJvemVuKSB7IG1fZnJvemVuID0gZnJvemVuOyB9
Ci0gICAgICAgIGJvb2wgaXNFbXB0eSgpIHsgcmV0dXJuIG1fcXVldWUuaXNFbXB0eSgpOyB9Ci0g
ICAgICAgIFdlYlRhc2tMaXN0KiB0YXNrTGlzdCgpIHsgcmV0dXJuICZtX3Rhc2tMaXN0OyB9Ci0K
LSAgICBwcml2YXRlOgotICAgICAgICB2b2lkIHByb2Nlc3NXb3JrKCk7Ci0gICAgICAgIGNsYXNz
IFdvcmtRdWV1ZVRhc2s6IHB1YmxpYyBXZWJNZXRob2RUYXNrPFdvcmtRdWV1ZT4gewotICAgICAg
ICBwdWJsaWM6Ci0gICAgICAgICAgICBXb3JrUXVldWVUYXNrKFdvcmtRdWV1ZSogb2JqZWN0KTog
V2ViTWV0aG9kVGFzazxXb3JrUXVldWU+KG9iamVjdCkgeyB9Ci0gICAgICAgICAgICB2aXJ0dWFs
IHZvaWQgcnVuSWZWYWxpZCgpIHsgbV9vYmplY3QtPnByb2Nlc3NXb3JrKCk7IH0KLSAgICAgICAg
fTsKLQotICAgICAgICBXZWJUYXNrTGlzdCBtX3Rhc2tMaXN0OwotICAgICAgICBEZXF1ZTxXb3Jr
SXRlbSo+IG1fcXVldWU7Ci0gICAgICAgIGJvb2wgbV9mcm96ZW47Ci0gICAgICAgIERSVFRlc3RS
dW5uZXIqIG1fY29udHJvbGxlcjsKLSAgICB9OwotICAgIHZvaWQgY29tcGxldGVOb3RpZnlEb25l
KGJvb2wgaXNUaW1lb3V0KTsKLSAgICBjbGFzcyBOb3RpZnlEb25lVGltZWRPdXRUYXNrOiBwdWJs
aWMgV2ViTWV0aG9kVGFzazxEUlRUZXN0UnVubmVyPiB7Ci0gICAgcHVibGljOgotICAgICAgICBO
b3RpZnlEb25lVGltZWRPdXRUYXNrKERSVFRlc3RSdW5uZXIqIG9iamVjdCk6IFdlYk1ldGhvZFRh
c2s8RFJUVGVzdFJ1bm5lcj4ob2JqZWN0KSB7IH0KLSAgICAgICAgdmlydHVhbCB2b2lkIHJ1bklm
VmFsaWQoKSB7IG1fb2JqZWN0LT5jb21wbGV0ZU5vdGlmeURvbmUodHJ1ZSk7IH0KLSAgICB9Owot
Ci0gICAgLy8gTm9uLW93bmluZyBwb2ludGVyLiBUaGUgRFJUVGVzdFJ1bm5lciBpcyBvd25lZCBi
eSB0aGUgaG9zdC4KLSAgICBUZXN0U2hlbGwqIG1fc2hlbGw7Ci0KLSAgICAvLyBXaGVuIHJlc2V0
IGlzIGNhbGxlZCwgZ28gdGhyb3VnaCBhbmQgY2xvc2UgYWxsIGJ1dCB0aGUgbWFpbiB0ZXN0IHNo
ZWxsCi0gICAgLy8gd2luZG93LiBCeSBkZWZhdWx0LCBzZXQgdG8gdHJ1ZSBidXQgdG9nZ2xlZCB0
byBmYWxzZSB1c2luZwotICAgIC8vIHNldENsb3NlUmVtYWluaW5nV2luZG93c1doZW5Db21wbGV0
ZSgpLgotICAgIGJvb2wgbV9jbG9zZVJlbWFpbmluZ1dpbmRvd3M7Ci0KLSAgICAvLyBJZiB0cnVl
LCBkb24ndCBkdW1wIG91dHB1dCB1bnRpbCBub3RpZnlEb25lIGlzIGNhbGxlZC4KLSAgICBib29s
IG1fd2FpdFVudGlsRG9uZTsKLQotICAgIC8vIElmIHRydWUsIHdlIHdpbGwgc2hvdyBleHRlbmRl
ZCBpbmZvcm1hdGlvbiBpbiB0aGUgZ3JhcGhpY3MgbGF5ZXIgdHJlZS4KLSAgICBib29sIG1fc2hv
d0RlYnVnTGF5ZXJUcmVlOwotCi0gICAgV29ya1F1ZXVlIG1fd29ya1F1ZXVlOwotCi0gICAgLy8g
Qm91bmQgdmFyaWFibGUgY291bnRpbmcgdGhlIG51bWJlciBvZiB0b3AgVVJMcyB2aXNpdGVkLgot
ICAgIENwcFZhcmlhbnQgbV93ZWJIaXN0b3J5SXRlbUNvdW50OwotCi0gICAgLy8gQm91bmQgdmFy
aWFibGUgdG8gc2V0IHdoZXRoZXIgcG9zdE1lc3NhZ2VzIHNob3VsZCBiZSBpbnRlcmNlcHRlZCBv
ciBub3QKLSAgICBDcHBWYXJpYW50IG1faW50ZXJjZXB0UG9zdE1lc3NhZ2U7Ci19OwotCi0jZW5k
aWYgLy8gRFJUVGVzdFJ1bm5lcl9oCmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9j
aHJvbWl1bS9UZXN0UnVubmVyL3B1YmxpYy9XZWJUZXN0RGVsZWdhdGUuaCBiL1Rvb2xzL0R1bXBS
ZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvcHVibGljL1dlYlRlc3REZWxlZ2F0ZS5oCmlu
ZGV4IDYxMTJiNTZmMTYxOGMzZDA3NWVjMzEyMTYxNzg3MjJiNDM0ZGYxMDEuLjkxNWZjZjJkY2Zm
N2JkNzRjMzNhYTRkNmJiZmQ2OTA4N2ViMmZhZjIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5k
ZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvcHVibGljL1dlYlRlc3REZWxlZ2F0ZS5oCisrKyBi
L1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvcHVibGljL1dlYlRlc3RE
ZWxlZ2F0ZS5oCkBAIC0xMTIsNiArMTEyLDE4IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIGJvb2wg
d2FzTW9ja1NwZWVjaFJlY29nbml0aW9uQWJvcnRlZCgpIHsgcmV0dXJuIGZhbHNlOyB9CiAgICAg
dmlydHVhbCB2b2lkIGRpc3BsYXkoKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgZGlzcGxheUludmFs
aWRhdGVkUmVnaW9uKCkgeyB9CisgICAgdmlydHVhbCB2b2lkIHRlc3RGaW5pc2hlZCgpIHsgfQor
ICAgIHZpcnR1YWwgdm9pZCB0ZXN0VGltZWRPdXQoKSB7IH0KKyAgICB2aXJ0dWFsIGJvb2wgaXNC
ZWluZ0RlYnVnZ2VkKCkgeyByZXR1cm4gZmFsc2U7IH0KKyAgICB2aXJ0dWFsIGludCBsYXlvdXRU
ZXN0VGltZW91dCgpIHsgcmV0dXJuIDMwICogMTAwMDsgfQorICAgIHZpcnR1YWwgdm9pZCBjbG9z
ZVJlbWFpbmluZ1dpbmRvd3MoKSB7IH0KKyAgICB2aXJ0dWFsIGludCBuYXZpZ2F0aW9uRW50cnlD
b3VudCgpIHsgcmV0dXJuIDA7IH0KKyAgICB2aXJ0dWFsIGludCB3aW5kb3dDb3VudCgpIHsgcmV0
dXJuIDA7IH0KKyAgICB2aXJ0dWFsIHZvaWQgc2V0Q3VzdG9tUG9saWN5RGVsZWdhdGUoYm9vbCwg
Ym9vbCkgeyB9CisgICAgdmlydHVhbCB2b2lkIHdhaXRGb3JQb2xpY3lEZWxlZ2F0ZSgpIHsgfQor
ICAgIHZpcnR1YWwgdm9pZCBnb1RvT2Zmc2V0KGludCkgeyB9CisgICAgdmlydHVhbCB2b2lkIHJl
bG9hZCgpIHsgfQorICAgIHZpcnR1YWwgdm9pZCBsb2FkVVJMRm9yRnJhbWUoY29uc3QgV2ViS2l0
OjpXZWJVUkwmLCBjb25zdCBzdGQ6OnN0cmluZyYpIHsgfQogfTsKIAogfQpkaWZmIC0tZ2l0IGEv
VG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9wdWJsaWMvV2ViVGVzdFJ1
bm5lci5oIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9wdWJsaWMv
V2ViVGVzdFJ1bm5lci5oCmluZGV4IGZlMDI1ZDVhYWE5YzkwYTBkMmYyZWVjY2EzNjE0ZDEzOWNl
ZGE1NTkuLmQxYmU4OGRjMDRjZTdlN2QwMzE4MjM4MDdlYWFlNzc0ZDhiNzY1YzcgMTAwNjQ0Ci0t
LSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvcHVibGljL1dlYlRl
c3RSdW5uZXIuaAorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVy
L3B1YmxpYy9XZWJUZXN0UnVubmVyLmgKQEAgLTgyLDYgKzgyLDggQEAgcHVibGljOgogICAgIHZp
cnR1YWwgYm9vbCB3aWxsU2VuZFJlcXVlc3RTaG91bGRSZXR1cm5OdWxsKCkgY29uc3QgeyByZXR1
cm4gZmFsc2U7IH0KICAgICB2aXJ0dWFsIHZvaWQgc2V0VG9wTG9hZGluZ0ZyYW1lKFdlYktpdDo6
V2ViRnJhbWUqLCBib29sKSB7IH0KICAgICB2aXJ0dWFsIFdlYktpdDo6V2ViRnJhbWUqIHRvcExv
YWRpbmdGcmFtZSgpIGNvbnN0IHsgcmV0dXJuIDA7IH0KKyAgICB2aXJ0dWFsIHZvaWQgcG9saWN5
RGVsZWdhdGVEb25lKCkgeyB9CisgICAgdmlydHVhbCBib29sIHNob3VsZEludGVyY2VwdFBvc3RN
ZXNzYWdlKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KIH07CiAKIH0KZGlmZiAtLWdpdCBhL1Rv
b2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvc3JjL1Rlc3RSdW5uZXIuY3Bw
IGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvVGVzdFJ1bm5l
ci5jcHAKaW5kZXggMzA4MmQxNTZkYTQ4MmRkYjM4ZWI5ZmFiNWJkODMxYmUxMDJjOTE2OC4uNTgw
NGVlZGViODdkMjBiMTQxMjZiMTNjOTkwOTc2MDc4ODI4MjY2OSAxMDA2NDQKLS0tIGEvVG9vbHMv
RHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvVGVzdFJ1bm5lci5jcHAKKysr
IGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvVGVzdFJ1bm5l
ci5jcHAKQEAgLTU1LDYgKzU1LDcgQEAKICNpbmNsdWRlICJXZWJWaWV3LmgiCiAjaW5jbHVkZSAi
V2ViV29ya2VySW5mby5oIgogI2luY2x1ZGUgInY4L2luY2x1ZGUvdjguaCIKKyNpbmNsdWRlIDxw
dWJsaWMvV2ViRGF0YS5oPgogI2luY2x1ZGUgPHB1YmxpYy9XZWJQb2ludC5oPgogI2luY2x1ZGUg
PHd0Zi9Pd25BcnJheVB0ci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgpAQCAt
MTAyLDE0ICsxMDMsODMgQEAgcHJpdmF0ZToKIAogfQogCitUZXN0UnVubmVyOjpXb3JrUXVldWU6
On5Xb3JrUXVldWUoKQoreworICAgIHJlc2V0KCk7Cit9CisKK3ZvaWQgVGVzdFJ1bm5lcjo6V29y
a1F1ZXVlOjpwcm9jZXNzV29ya1Nvb24oKQoreworICAgIGlmIChtX2NvbnRyb2xsZXItPnRvcExv
YWRpbmdGcmFtZSgpKQorICAgICAgICByZXR1cm47CisKKyAgICBpZiAoIW1fcXVldWUuaXNFbXB0
eSgpKSB7CisgICAgICAgIC8vIFdlIGRlbGF5IHByb2Nlc3NpbmcgcXVldWVkIHdvcmsgdG8gYXZv
aWQgcmVjdXJzaW9uIHByb2JsZW1zLgorICAgICAgICBtX2NvbnRyb2xsZXItPm1fZGVsZWdhdGUt
PnBvc3RUYXNrKG5ldyBXb3JrUXVldWVUYXNrKHRoaXMpKTsKKyAgICB9IGVsc2UgaWYgKCFtX2Nv
bnRyb2xsZXItPm1fd2FpdFVudGlsRG9uZSkKKyAgICAgICAgbV9jb250cm9sbGVyLT5tX2RlbGVn
YXRlLT50ZXN0RmluaXNoZWQoKTsKK30KKwordm9pZCBUZXN0UnVubmVyOjpXb3JrUXVldWU6OnBy
b2Nlc3NXb3JrKCkKK3sKKyAgICAvLyBRdWl0IGRvaW5nIHdvcmsgb25jZSBhIGxvYWQgaXMgaW4g
cHJvZ3Jlc3MuCisgICAgd2hpbGUgKCFtX3F1ZXVlLmlzRW1wdHkoKSkgeworICAgICAgICBib29s
IHN0YXJ0ZWRMb2FkID0gbV9xdWV1ZS5maXJzdCgpLT5ydW4obV9jb250cm9sbGVyLT5tX2RlbGVn
YXRlLCBtX2NvbnRyb2xsZXItPm1fd2ViVmlldyk7CisgICAgICAgIGRlbGV0ZSBtX3F1ZXVlLnRh
a2VGaXJzdCgpOworICAgICAgICBpZiAoc3RhcnRlZExvYWQpCisgICAgICAgICAgICByZXR1cm47
CisgICAgfQorCisgICAgaWYgKCFtX2NvbnRyb2xsZXItPm1fd2FpdFVudGlsRG9uZSAmJiAhbV9j
b250cm9sbGVyLT50b3BMb2FkaW5nRnJhbWUoKSkKKyAgICAgICAgbV9jb250cm9sbGVyLT5tX2Rl
bGVnYXRlLT50ZXN0RmluaXNoZWQoKTsKK30KKwordm9pZCBUZXN0UnVubmVyOjpXb3JrUXVldWU6
OnJlc2V0KCkKK3sKKyAgICBtX2Zyb3plbiA9IGZhbHNlOworICAgIHdoaWxlICghbV9xdWV1ZS5p
c0VtcHR5KCkpCisgICAgICAgIGRlbGV0ZSBtX3F1ZXVlLnRha2VGaXJzdCgpOworfQorCit2b2lk
IFRlc3RSdW5uZXI6OldvcmtRdWV1ZTo6YWRkV29yayhXb3JrSXRlbSogd29yaykKK3sKKyAgICBp
ZiAobV9mcm96ZW4pIHsKKyAgICAgICAgZGVsZXRlIHdvcms7CisgICAgICAgIHJldHVybjsKKyAg
ICB9CisgICAgbV9xdWV1ZS5hcHBlbmQod29yayk7Cit9CisKKwogVGVzdFJ1bm5lcjo6VGVzdFJ1
bm5lcigpCiAgICAgOiBtX3Rlc3RJc1J1bm5pbmcoZmFsc2UpCisgICAgLCBtX2Nsb3NlUmVtYWlu
aW5nV2luZG93cyh0cnVlKQorICAgICwgbV93b3JrUXVldWUodGhpcykKICAgICAsIG1fZGVsZWdh
dGUoMCkKICAgICAsIG1fd2ViVmlldygwKQogICAgICwgbV90b3BMb2FkaW5nRnJhbWUoMCkKICAg
ICAsIG1faW50ZW50Q2xpZW50KGFkb3B0UHRyKG5ldyBFbXB0eVdlYkRlbGl2ZXJlZEludGVudENs
aWVudCkpCiAgICAgLCBtX3dlYlBlcm1pc3Npb25zKGFkb3B0UHRyKG5ldyBXZWJQZXJtaXNzaW9u
cykpCiB7CisgICAgLy8gSW5pdGlhbGl6ZSB0aGUgbWFwIHRoYXQgYXNzb2NpYXRlcyBtZXRob2Rz
IG9mIHRoaXMgY2xhc3Mgd2l0aCB0aGUgbmFtZXMKKyAgICAvLyB0aGV5IHdpbGwgdXNlIHdoZW4g
Y2FsbGVkIGJ5IEphdmFTY3JpcHQuIFRoZSBhY3R1YWwgYmluZGluZyBvZiB0aG9zZQorICAgIC8v
IG5hbWVzIHRvIHRoZWlyIG1ldGhvZHMgd2lsbCBiZSBkb25lIGJ5IGNhbGxpbmcgYmluZFRvSmF2
YVNjcmlwdCgpIChkZWZpbmVkCisgICAgLy8gYnkgQ3BwQm91bmRDbGFzcywgdGhlIHBhcmVudCB0
byBUZXN0UnVubmVyKS4KKworICAgIC8vIE1ldGhvZHMgY29udHJvbGxpbmcgdGVzdCBleGVjdXRp
b24uCisgICAgYmluZE1ldGhvZCgibm90aWZ5RG9uZSIsICZUZXN0UnVubmVyOjpub3RpZnlEb25l
KTsKKyAgICBiaW5kTWV0aG9kKCJxdWV1ZUJhY2tOYXZpZ2F0aW9uIiwgJlRlc3RSdW5uZXI6OnF1
ZXVlQmFja05hdmlnYXRpb24pOworICAgIGJpbmRNZXRob2QoInF1ZXVlRm9yd2FyZE5hdmlnYXRp
b24iLCAmVGVzdFJ1bm5lcjo6cXVldWVGb3J3YXJkTmF2aWdhdGlvbik7CisgICAgYmluZE1ldGhv
ZCgicXVldWVMb2FkaW5nU2NyaXB0IiwgJlRlc3RSdW5uZXI6OnF1ZXVlTG9hZGluZ1NjcmlwdCk7
CisgICAgYmluZE1ldGhvZCgicXVldWVMb2FkIiwgJlRlc3RSdW5uZXI6OnF1ZXVlTG9hZCk7Cisg
ICAgYmluZE1ldGhvZCgicXVldWVMb2FkSFRNTFN0cmluZyIsICZUZXN0UnVubmVyOjpxdWV1ZUxv
YWRIVE1MU3RyaW5nKTsKKyAgICBiaW5kTWV0aG9kKCJxdWV1ZU5vbkxvYWRpbmdTY3JpcHQiLCAm
VGVzdFJ1bm5lcjo6cXVldWVOb25Mb2FkaW5nU2NyaXB0KTsKKyAgICBiaW5kTWV0aG9kKCJxdWV1
ZVJlbG9hZCIsICZUZXN0UnVubmVyOjpxdWV1ZVJlbG9hZCk7CisgICAgYmluZE1ldGhvZCgic2V0
Q2xvc2VSZW1haW5pbmdXaW5kb3dzV2hlbkNvbXBsZXRlIiwgJlRlc3RSdW5uZXI6OnNldENsb3Nl
UmVtYWluaW5nV2luZG93c1doZW5Db21wbGV0ZSk7CisgICAgYmluZE1ldGhvZCgic2V0Q3VzdG9t
UG9saWN5RGVsZWdhdGUiLCAmVGVzdFJ1bm5lcjo6c2V0Q3VzdG9tUG9saWN5RGVsZWdhdGUpOwor
ICAgIGJpbmRNZXRob2QoIndhaXRGb3JQb2xpY3lEZWxlZ2F0ZSIsICZUZXN0UnVubmVyOjp3YWl0
Rm9yUG9saWN5RGVsZWdhdGUpOworICAgIGJpbmRNZXRob2QoIndhaXRVbnRpbERvbmUiLCAmVGVz
dFJ1bm5lcjo6d2FpdFVudGlsRG9uZSk7CisgICAgYmluZE1ldGhvZCgid2luZG93Q291bnQiLCAm
VGVzdFJ1bm5lcjo6d2luZG93Q291bnQpOwogICAgIC8vIE1ldGhvZHMgaW1wbGVtZW50ZWQgaW4g
dGVybXMgb2YgY2hyb21pdW0ncyBwdWJsaWMgV2ViS2l0IEFQSS4KICAgICBiaW5kTWV0aG9kKCJz
ZXRUYWJLZXlDeWNsZXNUaHJvdWdoRWxlbWVudHMiLCAmVGVzdFJ1bm5lcjo6c2V0VGFiS2V5Q3lj
bGVzVGhyb3VnaEVsZW1lbnRzKTsKICAgICBiaW5kTWV0aG9kKCJleGVjQ29tbWFuZCIsICZUZXN0
UnVubmVyOjpleGVjQ29tbWFuZCk7CkBAIC0yNDYsNiArMzE2LDkgQEAgVGVzdFJ1bm5lcjo6VGVz
dFJ1bm5lcigpCiAgICAgYmluZFByb3BlcnR5KCJnbG9iYWxGbGFnIiwgJm1fZ2xvYmFsRmxhZyk7
CiAgICAgYmluZFByb3BlcnR5KCJ0aXRsZVRleHREaXJlY3Rpb24iLCAmbV90aXRsZVRleHREaXJl
Y3Rpb24pOwogICAgIGJpbmRQcm9wZXJ0eSgicGxhdGZvcm1OYW1lIiwgJm1fcGxhdGZvcm1OYW1l
KTsKKyAgICAvLyB3ZWJIaXN0b3J5SXRlbUNvdW50IGlzIHVzZWQgYnkgdGVzdHMgaW4gTGF5b3V0
VGVzdHNcaHR0cFx0ZXN0c1xoaXN0b3J5CisgICAgYmluZFByb3BlcnR5KCJ3ZWJIaXN0b3J5SXRl
bUNvdW50IiwgJm1fd2ViSGlzdG9yeUl0ZW1Db3VudCk7CisgICAgYmluZFByb3BlcnR5KCJpbnRl
cmNlcHRQb3N0TWVzc2FnZSIsICZtX2ludGVyY2VwdFBvc3RNZXNzYWdlKTsKIAogICAgIC8vIFRo
ZSBmb2xsb3dpbmcgYXJlIHN0dWJzLgogICAgIGJpbmRNZXRob2QoImR1bXBEYXRhYmFzZUNhbGxi
YWNrcyIsICZUZXN0UnVubmVyOjpub3RJbXBsZW1lbnRlZCk7CkBAIC0zMDMsNiArMzc2LDggQEAg
dm9pZCBUZXN0UnVubmVyOjpyZXNldCgpCiAgICAgICAgIG1fd2ViVmlldy0+ZGlzYWJsZUF1dG9S
ZXNpemVNb2RlKCk7CiAgICAgfQogICAgIG1fdG9wTG9hZGluZ0ZyYW1lID0gMDsKKyAgICBtX3dh
aXRVbnRpbERvbmUgPSBmYWxzZTsKKwogICAgIFdlYlNlY3VyaXR5UG9saWN5OjpyZXNldE9yaWdp
bkFjY2Vzc1doaXRlbGlzdHMoKTsKICNpZiBPUyhMSU5VWCkgfHwgT1MoQU5EUk9JRCkKICAgICBX
ZWJGb250UmVuZGVyaW5nOjpzZXRTdWJwaXhlbFBvc2l0aW9uaW5nKGZhbHNlKTsKQEAgLTM0NSw2
ICs0MjAsOCBAQCB2b2lkIFRlc3RSdW5uZXI6OnJlc2V0KCkKIAogICAgIG1fZ2xvYmFsRmxhZy5z
ZXQoZmFsc2UpOwogICAgIG1fdGl0bGVUZXh0RGlyZWN0aW9uLnNldCgibHRyIik7CisgICAgbV93
ZWJIaXN0b3J5SXRlbUNvdW50LnNldCgwKTsKKyAgICBtX2ludGVyY2VwdFBvc3RNZXNzYWdlLnNl
dChmYWxzZSk7CiAgICAgbV9wbGF0Zm9ybU5hbWUuc2V0KCJjaHJvbWl1bSIpOwogCiAgICAgbV91
c2VyU3R5bGVTaGVldExvY2F0aW9uID0gV2ViVVJMKCk7CkBAIC0zNTIsOCArNDI5LDE1IEBAIHZv
aWQgVGVzdFJ1bm5lcjo6cmVzZXQoKQogICAgIG1fd2ViUGVybWlzc2lvbnMtPnJlc2V0KCk7CiAK
ICAgICBtX3Rhc2tMaXN0LnJldm9rZUFsbCgpOworICAgIG1fd29ya1F1ZXVlLnJlc2V0KCk7CisK
KyAgICBpZiAobV9jbG9zZVJlbWFpbmluZ1dpbmRvd3MpCisgICAgICAgIG1fZGVsZWdhdGUtPmNs
b3NlUmVtYWluaW5nV2luZG93cygpOworICAgIGVsc2UKKyAgICAgICAgbV9jbG9zZVJlbWFpbmlu
Z1dpbmRvd3MgPSB0cnVlOwogfQogCisKIHZvaWQgVGVzdFJ1bm5lcjo6c2V0VGVzdElzUnVubmlu
Zyhib29sIHJ1bm5pbmcpCiB7CiAgICAgbV90ZXN0SXNSdW5uaW5nID0gcnVubmluZzsKQEAgLTU0
MCw2ICs2MjQsMjM5IEBAIFdlYkZyYW1lKiBUZXN0UnVubmVyOjp0b3BMb2FkaW5nRnJhbWUoKSBj
b25zdAogICAgIHJldHVybiBtX3RvcExvYWRpbmdGcmFtZTsKIH0KIAordm9pZCBUZXN0UnVubmVy
Ojpwb2xpY3lEZWxlZ2F0ZURvbmUoKQoreworICAgIEFTU0VSVChtX3dhaXRVbnRpbERvbmUpOwor
ICAgIG1fZGVsZWdhdGUtPnRlc3RGaW5pc2hlZCgpOworICAgIG1fd2FpdFVudGlsRG9uZSA9IGZh
bHNlOworfQorCitib29sIFRlc3RSdW5uZXI6OnNob3VsZEludGVyY2VwdFBvc3RNZXNzYWdlKCkg
Y29uc3QKK3sKKyAgICByZXR1cm4gbV9pbnRlcmNlcHRQb3N0TWVzc2FnZS5pc0Jvb2woKSAmJiBt
X2ludGVyY2VwdFBvc3RNZXNzYWdlLnRvQm9vbGVhbigpOworfQorCit2b2lkIFRlc3RSdW5uZXI6
OndhaXRVbnRpbERvbmUoY29uc3QgQ3BwQXJndW1lbnRMaXN0JiwgQ3BwVmFyaWFudCogcmVzdWx0
KQoreworICAgIGlmICghbV9kZWxlZ2F0ZS0+aXNCZWluZ0RlYnVnZ2VkKCkpCisgICAgICAgIG1f
ZGVsZWdhdGUtPnBvc3REZWxheWVkVGFzayhuZXcgTm90aWZ5RG9uZVRpbWVkT3V0VGFzayh0aGlz
KSwgbV9kZWxlZ2F0ZS0+bGF5b3V0VGVzdFRpbWVvdXQoKSk7CisgICAgbV93YWl0VW50aWxEb25l
ID0gdHJ1ZTsKKyAgICByZXN1bHQtPnNldE51bGwoKTsKK30KKwordm9pZCBUZXN0UnVubmVyOjpu
b3RpZnlEb25lKGNvbnN0IENwcEFyZ3VtZW50TGlzdCYsIENwcFZhcmlhbnQqIHJlc3VsdCkKK3sK
KyAgICAvLyBUZXN0IGRpZG4ndCB0aW1lb3V0LiBLaWxsIHRoZSB0aW1lb3V0IHRpbWVyLgorICAg
IHRhc2tMaXN0KCktPnJldm9rZUFsbCgpOworCisgICAgY29tcGxldGVOb3RpZnlEb25lKGZhbHNl
KTsKKyAgICByZXN1bHQtPnNldE51bGwoKTsKK30KKwordm9pZCBUZXN0UnVubmVyOjpjb21wbGV0
ZU5vdGlmeURvbmUoYm9vbCBpc1RpbWVvdXQpCit7CisgICAgaWYgKG1fd2FpdFVudGlsRG9uZSAm
JiAhdG9wTG9hZGluZ0ZyYW1lKCkgJiYgbV93b3JrUXVldWUuaXNFbXB0eSgpKSB7CisgICAgICAg
IGlmIChpc1RpbWVvdXQpCisgICAgICAgICAgICBtX2RlbGVnYXRlLT50ZXN0VGltZWRPdXQoKTsK
KyAgICAgICAgZWxzZQorICAgICAgICAgICAgbV9kZWxlZ2F0ZS0+dGVzdEZpbmlzaGVkKCk7Cisg
ICAgfQorICAgIG1fd2FpdFVudGlsRG9uZSA9IGZhbHNlOworfQorCitjbGFzcyBXb3JrSXRlbUJh
Y2tGb3J3YXJkIDogcHVibGljIFRlc3RSdW5uZXI6OldvcmtJdGVtIHsKK3B1YmxpYzoKKyAgICBX
b3JrSXRlbUJhY2tGb3J3YXJkKGludCBkaXN0YW5jZSkgOiBtX2Rpc3RhbmNlKGRpc3RhbmNlKSB7
IH0KKyAgICBib29sIHJ1bihXZWJUZXN0RGVsZWdhdGUqIGRlbGVnYXRlLCBXZWJWaWV3KikKKyAg
ICB7CisgICAgICAgIGRlbGVnYXRlLT5nb1RvT2Zmc2V0KG1fZGlzdGFuY2UpOworICAgICAgICBy
ZXR1cm4gdHJ1ZTsgLy8gRklYTUU6IERpZCBpdCByZWFsbHkgc3RhcnQgYSBuYXZpZ2F0aW9uPwor
ICAgIH0KKworcHJpdmF0ZToKKyAgICBpbnQgbV9kaXN0YW5jZTsKK307CisKK3ZvaWQgVGVzdFJ1
bm5lcjo6cXVldWVCYWNrTmF2aWdhdGlvbihjb25zdCBDcHBBcmd1bWVudExpc3QmIGFyZ3VtZW50
cywgQ3BwVmFyaWFudCogcmVzdWx0KQoreworICAgIGlmIChhcmd1bWVudHMuc2l6ZSgpID4gMCAm
JiBhcmd1bWVudHNbMF0uaXNOdW1iZXIoKSkKKyAgICAgICAgbV93b3JrUXVldWUuYWRkV29yayhu
ZXcgV29ya0l0ZW1CYWNrRm9yd2FyZCgtYXJndW1lbnRzWzBdLnRvSW50MzIoKSkpOworICAgIHJl
c3VsdC0+c2V0TnVsbCgpOworfQorCit2b2lkIFRlc3RSdW5uZXI6OnF1ZXVlRm9yd2FyZE5hdmln
YXRpb24oY29uc3QgQ3BwQXJndW1lbnRMaXN0JiBhcmd1bWVudHMsIENwcFZhcmlhbnQqIHJlc3Vs
dCkKK3sKKyAgICBpZiAoYXJndW1lbnRzLnNpemUoKSA+IDAgJiYgYXJndW1lbnRzWzBdLmlzTnVt
YmVyKCkpCisgICAgICAgIG1fd29ya1F1ZXVlLmFkZFdvcmsobmV3IFdvcmtJdGVtQmFja0Zvcndh
cmQoYXJndW1lbnRzWzBdLnRvSW50MzIoKSkpOworICAgIHJlc3VsdC0+c2V0TnVsbCgpOworfQor
CitjbGFzcyBXb3JrSXRlbVJlbG9hZCA6IHB1YmxpYyBUZXN0UnVubmVyOjpXb3JrSXRlbSB7Citw
dWJsaWM6CisgICAgYm9vbCBydW4oV2ViVGVzdERlbGVnYXRlKiBkZWxlZ2F0ZSwgV2ViVmlldyop
CisgICAgeworICAgICAgICBkZWxlZ2F0ZS0+cmVsb2FkKCk7CisgICAgICAgIHJldHVybiB0cnVl
OworICAgIH0KK307CisKK3ZvaWQgVGVzdFJ1bm5lcjo6cXVldWVSZWxvYWQoY29uc3QgQ3BwQXJn
dW1lbnRMaXN0JiwgQ3BwVmFyaWFudCogcmVzdWx0KQoreworICAgIG1fd29ya1F1ZXVlLmFkZFdv
cmsobmV3IFdvcmtJdGVtUmVsb2FkKTsKKyAgICByZXN1bHQtPnNldE51bGwoKTsKK30KKworY2xh
c3MgV29ya0l0ZW1Mb2FkaW5nU2NyaXB0IDogcHVibGljIFRlc3RSdW5uZXI6OldvcmtJdGVtIHsK
K3B1YmxpYzoKKyAgICBXb3JrSXRlbUxvYWRpbmdTY3JpcHQoY29uc3Qgc3RyaW5nJiBzY3JpcHQp
IDogbV9zY3JpcHQoc2NyaXB0KSB7IH0KKyAgICBib29sIHJ1bihXZWJUZXN0RGVsZWdhdGUqLCBX
ZWJWaWV3KiB3ZWJWaWV3KQorICAgIHsKKyAgICAgICAgd2ViVmlldy0+bWFpbkZyYW1lKCktPmV4
ZWN1dGVTY3JpcHQoV2ViU2NyaXB0U291cmNlKFdlYlN0cmluZzo6ZnJvbVVURjgobV9zY3JpcHQp
KSk7CisgICAgICAgIHJldHVybiB0cnVlOyAvLyBGSVhNRTogRGlkIGl0IHJlYWxseSBzdGFydCBh
IG5hdmlnYXRpb24/CisgICAgfQorCitwcml2YXRlOgorICAgIHN0cmluZyBtX3NjcmlwdDsKK307
CisKK2NsYXNzIFdvcmtJdGVtTm9uTG9hZGluZ1NjcmlwdCA6IHB1YmxpYyBUZXN0UnVubmVyOjpX
b3JrSXRlbSB7CitwdWJsaWM6CisgICAgV29ya0l0ZW1Ob25Mb2FkaW5nU2NyaXB0KGNvbnN0IHN0
cmluZyYgc2NyaXB0KSA6IG1fc2NyaXB0KHNjcmlwdCkgeyB9CisgICAgYm9vbCBydW4oV2ViVGVz
dERlbGVnYXRlKiwgV2ViVmlldyogd2ViVmlldykKKyAgICB7CisgICAgICAgIHdlYlZpZXctPm1h
aW5GcmFtZSgpLT5leGVjdXRlU2NyaXB0KFdlYlNjcmlwdFNvdXJjZShXZWJTdHJpbmc6OmZyb21V
VEY4KG1fc2NyaXB0KSkpOworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCitwcml2YXRl
OgorICAgIHN0cmluZyBtX3NjcmlwdDsKK307CisKK3ZvaWQgVGVzdFJ1bm5lcjo6cXVldWVMb2Fk
aW5nU2NyaXB0KGNvbnN0IENwcEFyZ3VtZW50TGlzdCYgYXJndW1lbnRzLCBDcHBWYXJpYW50KiBy
ZXN1bHQpCit7CisgICAgaWYgKGFyZ3VtZW50cy5zaXplKCkgPiAwICYmIGFyZ3VtZW50c1swXS5p
c1N0cmluZygpKQorICAgICAgICBtX3dvcmtRdWV1ZS5hZGRXb3JrKG5ldyBXb3JrSXRlbUxvYWRp
bmdTY3JpcHQoYXJndW1lbnRzWzBdLnRvU3RyaW5nKCkpKTsKKyAgICByZXN1bHQtPnNldE51bGwo
KTsKK30KKwordm9pZCBUZXN0UnVubmVyOjpxdWV1ZU5vbkxvYWRpbmdTY3JpcHQoY29uc3QgQ3Bw
QXJndW1lbnRMaXN0JiBhcmd1bWVudHMsIENwcFZhcmlhbnQqIHJlc3VsdCkKK3sKKyAgICBpZiAo
YXJndW1lbnRzLnNpemUoKSA+IDAgJiYgYXJndW1lbnRzWzBdLmlzU3RyaW5nKCkpCisgICAgICAg
IG1fd29ya1F1ZXVlLmFkZFdvcmsobmV3IFdvcmtJdGVtTm9uTG9hZGluZ1NjcmlwdChhcmd1bWVu
dHNbMF0udG9TdHJpbmcoKSkpOworICAgIHJlc3VsdC0+c2V0TnVsbCgpOworfQorCitjbGFzcyBX
b3JrSXRlbUxvYWQgOiBwdWJsaWMgVGVzdFJ1bm5lcjo6V29ya0l0ZW0geworcHVibGljOgorICAg
IFdvcmtJdGVtTG9hZChjb25zdCBXZWJVUkwmIHVybCwgY29uc3Qgc3RyaW5nJiB0YXJnZXQpCisg
ICAgICAgIDogbV91cmwodXJsKQorICAgICAgICAsIG1fdGFyZ2V0KHRhcmdldCkgeyB9CisgICAg
Ym9vbCBydW4oV2ViVGVzdERlbGVnYXRlKiBkZWxlZ2F0ZSwgV2ViVmlldyopCisgICAgeworICAg
ICAgICBkZWxlZ2F0ZS0+bG9hZFVSTEZvckZyYW1lKG1fdXJsLCBtX3RhcmdldCk7CisgICAgICAg
IHJldHVybiB0cnVlOyAvLyBGSVhNRTogRGlkIGl0IHJlYWxseSBzdGFydCBhIG5hdmlnYXRpb24/
CisgICAgfQorCitwcml2YXRlOgorICAgIFdlYlVSTCBtX3VybDsKKyAgICBzdHJpbmcgbV90YXJn
ZXQ7Cit9OworCit2b2lkIFRlc3RSdW5uZXI6OnF1ZXVlTG9hZChjb25zdCBDcHBBcmd1bWVudExp
c3QmIGFyZ3VtZW50cywgQ3BwVmFyaWFudCogcmVzdWx0KQoreworICAgIGlmIChhcmd1bWVudHMu
c2l6ZSgpID4gMCAmJiBhcmd1bWVudHNbMF0uaXNTdHJpbmcoKSkgeworICAgICAgICAvLyBGSVhN
RTogSW1wbGVtZW50IFdlYlVSTDo6cmVzb2x2ZSgpIGFuZCBhdm9pZCBHVVJMLgorICAgICAgICBH
VVJMIGN1cnJlbnRVUkwgPSBtX3dlYlZpZXctPm1haW5GcmFtZSgpLT5kb2N1bWVudCgpLnVybCgp
OworICAgICAgICBHVVJMIGZ1bGxVUkwgPSBjdXJyZW50VVJMLlJlc29sdmUoYXJndW1lbnRzWzBd
LnRvU3RyaW5nKCkpOworCisgICAgICAgIHN0cmluZyB0YXJnZXQgPSAiIjsKKyAgICAgICAgaWYg
KGFyZ3VtZW50cy5zaXplKCkgPiAxICYmIGFyZ3VtZW50c1sxXS5pc1N0cmluZygpKQorICAgICAg
ICAgICAgdGFyZ2V0ID0gYXJndW1lbnRzWzFdLnRvU3RyaW5nKCk7CisKKyAgICAgICAgbV93b3Jr
UXVldWUuYWRkV29yayhuZXcgV29ya0l0ZW1Mb2FkKGZ1bGxVUkwsIHRhcmdldCkpOworICAgIH0K
KyAgICByZXN1bHQtPnNldE51bGwoKTsKK30KKworY2xhc3MgV29ya0l0ZW1Mb2FkSFRNTFN0cmlu
ZyA6IHB1YmxpYyBUZXN0UnVubmVyOjpXb3JrSXRlbSAgeworcHVibGljOgorICAgIFdvcmtJdGVt
TG9hZEhUTUxTdHJpbmcoY29uc3Qgc3RkOjpzdHJpbmcmIGh0bWwsIGNvbnN0IFdlYlVSTCYgYmFz
ZVVSTCkKKyAgICAgICAgOiBtX2h0bWwoaHRtbCkKKyAgICAgICAgLCBtX2Jhc2VVUkwoYmFzZVVS
TCkgeyB9CisgICAgV29ya0l0ZW1Mb2FkSFRNTFN0cmluZyhjb25zdCBzdGQ6OnN0cmluZyYgaHRt
bCwgY29uc3QgV2ViVVJMJiBiYXNlVVJMLCBjb25zdCBXZWJVUkwmIHVucmVhY2hhYmxlVVJMKQor
ICAgICAgICA6IG1faHRtbChodG1sKQorICAgICAgICAsIG1fYmFzZVVSTChiYXNlVVJMKQorICAg
ICAgICAsIG1fdW5yZWFjaGFibGVVUkwodW5yZWFjaGFibGVVUkwpIHsgfQorICAgIGJvb2wgcnVu
KFdlYlRlc3REZWxlZ2F0ZSosIFdlYlZpZXcqIHdlYlZpZXcpCisgICAgeworICAgICAgICB3ZWJW
aWV3LT5tYWluRnJhbWUoKS0+bG9hZEhUTUxTdHJpbmcoCisgICAgICAgICAgICBXZWJLaXQ6Oldl
YkRhdGEobV9odG1sLmRhdGEoKSwgbV9odG1sLmxlbmd0aCgpKSwgbV9iYXNlVVJMLCBtX3VucmVh
Y2hhYmxlVVJMKTsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorCitwcml2YXRlOgorICAg
IHN0ZDo6c3RyaW5nIG1faHRtbDsKKyAgICBXZWJVUkwgbV9iYXNlVVJMOworICAgIFdlYlVSTCBt
X3VucmVhY2hhYmxlVVJMOworfTsKKwordm9pZCBUZXN0UnVubmVyOjpxdWV1ZUxvYWRIVE1MU3Ry
aW5nKGNvbnN0IENwcEFyZ3VtZW50TGlzdCYgYXJndW1lbnRzLCBDcHBWYXJpYW50KiByZXN1bHQp
Cit7CisgICAgaWYgKGFyZ3VtZW50cy5zaXplKCkgPiAwICYmIGFyZ3VtZW50c1swXS5pc1N0cmlu
ZygpKSB7CisgICAgICAgIHN0cmluZyBodG1sID0gYXJndW1lbnRzWzBdLnRvU3RyaW5nKCk7Cisg
ICAgICAgIFdlYlVSTCBiYXNlVVJMKEdVUkwoIiIpKTsKKyAgICAgICAgaWYgKGFyZ3VtZW50cy5z
aXplKCkgPiAxICYmIGFyZ3VtZW50c1sxXS5pc1N0cmluZygpKQorICAgICAgICAgICAgYmFzZVVS
TCA9IFdlYlVSTChHVVJMKGFyZ3VtZW50c1sxXS50b1N0cmluZygpKSk7CisgICAgICAgIGlmIChh
cmd1bWVudHMuc2l6ZSgpID4gMiAmJiBhcmd1bWVudHNbMl0uaXNTdHJpbmcoKSkKKyAgICAgICAg
ICAgIG1fd29ya1F1ZXVlLmFkZFdvcmsobmV3IFdvcmtJdGVtTG9hZEhUTUxTdHJpbmcoaHRtbCwg
YmFzZVVSTCwgV2ViVVJMKEdVUkwoYXJndW1lbnRzWzJdLnRvU3RyaW5nKCkpKSkpOworICAgICAg
ICBlbHNlCisgICAgICAgICAgICBtX3dvcmtRdWV1ZS5hZGRXb3JrKG5ldyBXb3JrSXRlbUxvYWRI
VE1MU3RyaW5nKGh0bWwsIGJhc2VVUkwpKTsKKyAgICB9CisgICAgcmVzdWx0LT5zZXROdWxsKCk7
Cit9CisKK3ZvaWQgVGVzdFJ1bm5lcjo6bG9jYXRpb25DaGFuZ2VEb25lKCkKK3sKKyAgICBtX3dl
Ykhpc3RvcnlJdGVtQ291bnQuc2V0KG1fZGVsZWdhdGUtPm5hdmlnYXRpb25FbnRyeUNvdW50KCkp
OworCisgICAgLy8gTm8gbW9yZSBuZXcgd29yayBhZnRlciB0aGUgZmlyc3QgY29tcGxldGUgbG9h
ZC4KKyAgICBtX3dvcmtRdWV1ZS5zZXRGcm96ZW4odHJ1ZSk7CisKKyAgICBpZiAoIW1fd2FpdFVu
dGlsRG9uZSkKKyAgICAgICAgbV93b3JrUXVldWUucHJvY2Vzc1dvcmtTb29uKCk7Cit9CisKK3Zv
aWQgVGVzdFJ1bm5lcjo6d2luZG93Q291bnQoY29uc3QgQ3BwQXJndW1lbnRMaXN0JiwgQ3BwVmFy
aWFudCogcmVzdWx0KQoreworICAgIHJlc3VsdC0+c2V0KHN0YXRpY19jYXN0PGludD4obV9kZWxl
Z2F0ZS0+d2luZG93Q291bnQoKSkpOworfQorCit2b2lkIFRlc3RSdW5uZXI6OnNldENsb3NlUmVt
YWluaW5nV2luZG93c1doZW5Db21wbGV0ZShjb25zdCBDcHBBcmd1bWVudExpc3QmIGFyZ3VtZW50
cywgQ3BwVmFyaWFudCogcmVzdWx0KQoreworICAgIGlmIChhcmd1bWVudHMuc2l6ZSgpID4gMCAm
JiBhcmd1bWVudHNbMF0uaXNCb29sKCkpCisgICAgICAgIG1fY2xvc2VSZW1haW5pbmdXaW5kb3dz
ID0gYXJndW1lbnRzWzBdLnZhbHVlLmJvb2xWYWx1ZTsKKyAgICByZXN1bHQtPnNldE51bGwoKTsK
K30KKwordm9pZCBUZXN0UnVubmVyOjpzZXRDdXN0b21Qb2xpY3lEZWxlZ2F0ZShjb25zdCBDcHBB
cmd1bWVudExpc3QmIGFyZ3VtZW50cywgQ3BwVmFyaWFudCogcmVzdWx0KQoreworICAgIGlmIChh
cmd1bWVudHMuc2l6ZSgpID4gMCAmJiBhcmd1bWVudHNbMF0uaXNCb29sKCkpIHsKKyAgICAgICAg
Ym9vbCBlbmFibGUgPSBhcmd1bWVudHNbMF0udmFsdWUuYm9vbFZhbHVlOworICAgICAgICBib29s
IHBlcm1pc3NpdmUgPSBmYWxzZTsKKyAgICAgICAgaWYgKGFyZ3VtZW50cy5zaXplKCkgPiAxICYm
IGFyZ3VtZW50c1sxXS5pc0Jvb2woKSkKKyAgICAgICAgICAgIHBlcm1pc3NpdmUgPSBhcmd1bWVu
dHNbMV0udmFsdWUuYm9vbFZhbHVlOworICAgICAgICBtX2RlbGVnYXRlLT5zZXRDdXN0b21Qb2xp
Y3lEZWxlZ2F0ZShlbmFibGUsIHBlcm1pc3NpdmUpOworICAgIH0KKyAgICByZXN1bHQtPnNldE51
bGwoKTsKK30KKwordm9pZCBUZXN0UnVubmVyOjp3YWl0Rm9yUG9saWN5RGVsZWdhdGUoY29uc3Qg
Q3BwQXJndW1lbnRMaXN0JiwgQ3BwVmFyaWFudCogcmVzdWx0KQoreworICAgIG1fZGVsZWdhdGUt
PndhaXRGb3JQb2xpY3lEZWxlZ2F0ZSgpOworICAgIG1fd2FpdFVudGlsRG9uZSA9IHRydWU7Cisg
ICAgcmVzdWx0LT5zZXROdWxsKCk7Cit9CisKIHZvaWQgVGVzdFJ1bm5lcjo6ZHVtcFBlcm1pc3Np
b25DbGllbnRDYWxsYmFja3MoY29uc3QgQ3BwQXJndW1lbnRMaXN0JiwgQ3BwVmFyaWFudCogcmVz
dWx0KQogewogICAgIG1fd2ViUGVybWlzc2lvbnMtPnNldER1bXBDYWxsYmFja3ModHJ1ZSk7CmRp
ZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9U
ZXN0UnVubmVyLmggYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3Ny
Yy9UZXN0UnVubmVyLmgKaW5kZXggODM0ODBkYjZjZDVjNDgyNWY1ZDU1NGQzMmFlMDdlNDgyMzQ4
MTE3NS4uMDY2NjIxMDBjOThlMDk4MTU4MjgzM2UyNjczMTFiOTQ1YmZmYTcyZCAxMDA2NDQKLS0t
IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvVGVzdFJ1bm5l
ci5oCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvc3JjL1Rl
c3RSdW5uZXIuaApAQCAtMzksNiArMzksNyBAQAogI2luY2x1ZGUgIldlYlRhc2suaCIKICNpbmNs
dWRlICJXZWJUZXN0UnVubmVyLmgiCiAjaW5jbHVkZSA8cHVibGljL1dlYlVSTC5oPgorI2luY2x1
ZGUgPHd0Zi9EZXF1ZS5oPgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIGNsYXNzIFdlYlZpZXc7CkBA
IC01NCw4ICs1NSw3IEBAIHB1YmxpYzoKICAgICBUZXN0UnVubmVyKCk7CiAgICAgdmlydHVhbCB+
VGVzdFJ1bm5lcigpOwogCi0gICAgLy8gRklYTUU6IG9uY2UgRFJUVGVzdFJ1bm5lciBpcyBtb3Zl
ZCBlbnRpcmVseSB0byB0aGlzIGNsYXNzLCBjaGFuZ2UgdGhpcwotICAgIC8vIG1ldGhvZCB0byB0
YWtlIGEgVGVzdERlbGVnYXRlKiBpbnN0ZWFkLgorICAgIC8vIEZJWE1FOiBjaGFuZ2UgdGhpcyBt
ZXRob2QgdG8gdGFrZSBhIFRlc3REZWxlZ2F0ZSogaW5zdGVhZC4KICAgICB2b2lkIHNldERlbGVn
YXRlKFdlYlRlc3REZWxlZ2F0ZSopOwogICAgIHZvaWQgc2V0V2ViVmlldyhXZWJLaXQ6OldlYlZp
ZXcqIHdlYlZpZXcpIHsgbV93ZWJWaWV3ID0gd2ViVmlldzsgfQogCkBAIC0xMDAsMjIgKzEwMCw4
MiBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBib29sIHdpbGxTZW5kUmVxdWVzdFNob3VsZFJldHVy
bk51bGwoKSBjb25zdCBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgc2V0VG9wTG9hZGluZ0Zy
YW1lKFdlYktpdDo6V2ViRnJhbWUqLCBib29sKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIFdlYktp
dDo6V2ViRnJhbWUqIHRvcExvYWRpbmdGcmFtZSgpIGNvbnN0IE9WRVJSSURFOworICAgIHZpcnR1
YWwgdm9pZCBwb2xpY3lEZWxlZ2F0ZURvbmUoKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIGJvb2wg
c2hvdWxkSW50ZXJjZXB0UG9zdE1lc3NhZ2UoKSBjb25zdCBPVkVSUklERTsKIAotcHJvdGVjdGVk
OgotICAgIC8vIEZJWE1FOiBtYWtlIHRoZXNlIHByaXZhdGUgb25jZSB0aGUgbW92ZSBmcm9tIERS
VFRlc3RSdW5uZXIgdG8gVGVzdFJ1bm5lcgotICAgIC8vIGlzIGNvbXBsZXRlLgotICAgIGJvb2wg
Y3BwVmFyaWFudFRvQm9vbChjb25zdCBDcHBWYXJpYW50Jik7Ci0gICAgaW50MzJfdCBjcHBWYXJp
YW50VG9JbnQzMihjb25zdCBDcHBWYXJpYW50Jik7Ci0gICAgV2ViS2l0OjpXZWJTdHJpbmcgY3Bw
VmFyaWFudFRvV2ViU3RyaW5nKGNvbnN0IENwcFZhcmlhbnQmKTsKLQotICAgIHZvaWQgcHJpbnRF
cnJvck1lc3NhZ2UoY29uc3Qgc3RkOjpzdHJpbmcmKTsKKyAgICAvLyBBIHNpbmdsZSBpdGVtIGlu
IHRoZSB3b3JrIHF1ZXVlLgorICAgIGNsYXNzIFdvcmtJdGVtIHsKKyAgICBwdWJsaWM6CisgICAg
ICAgIHZpcnR1YWwgfldvcmtJdGVtKCkgeyB9CiAKLSAgICAvLyBJbiB0aGUgTWFjIGNvZGUsIHRo
aXMgaXMgY2FsbGVkIHRvIHRyaWdnZXIgdGhlIGVuZCBvZiBhIHRlc3QgYWZ0ZXIgdGhlCi0gICAg
Ly8gcGFnZSBoYXMgZmluaXNoZWQgbG9hZGluZy4gRnJvbSBoZXJlLCB3ZSBjYW4gZ2VuZXJhdGUg
dGhlIGR1bXAgZm9yIHRoZQotICAgIC8vIHRlc3QuCi0gICAgdmlydHVhbCB2b2lkIGxvY2F0aW9u
Q2hhbmdlRG9uZSgpIHsgfQorICAgICAgICAvLyBSZXR1cm5zIHRydWUgaWYgdGhpcyBzdGFydGVk
IGEgbG9hZC4KKyAgICAgICAgdmlydHVhbCBib29sIHJ1bihXZWJUZXN0RGVsZWdhdGUqLCBXZWJL
aXQ6OldlYlZpZXcqKSA9IDA7CisgICAgfTsKIAogcHJpdmF0ZToKKyAgICBmcmllbmQgY2xhc3Mg
V29ya1F1ZXVlOworCisgICAgLy8gSGVscGVyIGNsYXNzIGZvciBtYW5hZ2luZyBldmVudHMgcXVl
dWVkIGJ5IG1ldGhvZHMgbGlrZSBxdWV1ZUxvYWQgb3IKKyAgICAvLyBxdWV1ZVNjcmlwdC4KKyAg
ICBjbGFzcyBXb3JrUXVldWUgeworICAgIHB1YmxpYzoKKyAgICAgICAgV29ya1F1ZXVlKFRlc3RS
dW5uZXIqIGNvbnRyb2xsZXIpIDogbV9mcm96ZW4oZmFsc2UpLCBtX2NvbnRyb2xsZXIoY29udHJv
bGxlcikgeyB9CisgICAgICAgIHZpcnR1YWwgfldvcmtRdWV1ZSgpOworICAgICAgICB2b2lkIHBy
b2Nlc3NXb3JrU29vbigpOworCisgICAgICAgIC8vIFJlc2V0IHRoZSBzdGF0ZSBvZiB0aGUgY2xh
c3MgYmV0d2VlbiB0ZXN0cy4KKyAgICAgICAgdm9pZCByZXNldCgpOworCisgICAgICAgIHZvaWQg
YWRkV29yayhXb3JrSXRlbSopOworCisgICAgICAgIHZvaWQgc2V0RnJvemVuKGJvb2wgZnJvemVu
KSB7IG1fZnJvemVuID0gZnJvemVuOyB9CisgICAgICAgIGJvb2wgaXNFbXB0eSgpIHsgcmV0dXJu
IG1fcXVldWUuaXNFbXB0eSgpOyB9CisgICAgICAgIFdlYlRhc2tMaXN0KiB0YXNrTGlzdCgpIHsg
cmV0dXJuICZtX3Rhc2tMaXN0OyB9CisKKyAgICBwcml2YXRlOgorICAgICAgICB2b2lkIHByb2Nl
c3NXb3JrKCk7CisgICAgICAgIGNsYXNzIFdvcmtRdWV1ZVRhc2s6IHB1YmxpYyBXZWJNZXRob2RU
YXNrPFdvcmtRdWV1ZT4geworICAgICAgICBwdWJsaWM6CisgICAgICAgICAgICBXb3JrUXVldWVU
YXNrKFdvcmtRdWV1ZSogb2JqZWN0KTogV2ViTWV0aG9kVGFzazxXb3JrUXVldWU+KG9iamVjdCkg
eyB9CisgICAgICAgICAgICB2aXJ0dWFsIHZvaWQgcnVuSWZWYWxpZCgpIHsgbV9vYmplY3QtPnBy
b2Nlc3NXb3JrKCk7IH0KKyAgICAgICAgfTsKKworICAgICAgICBXZWJUYXNrTGlzdCBtX3Rhc2tM
aXN0OworICAgICAgICBEZXF1ZTxXb3JrSXRlbSo+IG1fcXVldWU7CisgICAgICAgIGJvb2wgbV9m
cm96ZW47CisgICAgICAgIFRlc3RSdW5uZXIqIG1fY29udHJvbGxlcjsKKyAgICB9OworICAgIC8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLworICAgIC8vIE1ldGhvZHMgZGVhbGluZyB3aXRoIHRoZSB0ZXN0IGxv
Z2ljCisKKyAgICAvLyBCeSBkZWZhdWx0LCB0ZXN0cyBlbmQgd2hlbiBwYWdlIGxvYWQgaXMgY29t
cGxldGUuIFRoZXNlIG1ldGhvZHMgYXJlIHVzZWQKKyAgICAvLyB0byBkZWxheSB0aGUgY29tcGxl
dGlvbiBvZiB0aGUgdGVzdCB1bnRpbCBub3RpZnlEb25lIGlzIGNhbGxlZC4KKyAgICB2b2lkIHdh
aXRVbnRpbERvbmUoY29uc3QgQ3BwQXJndW1lbnRMaXN0JiwgQ3BwVmFyaWFudCopOworICAgIHZv
aWQgbm90aWZ5RG9uZShjb25zdCBDcHBBcmd1bWVudExpc3QmLCBDcHBWYXJpYW50Kik7CisKKyAg
ICAvLyBNZXRob2RzIGZvciBhZGRpbmcgYWN0aW9ucyB0byB0aGUgd29yayBxdWV1ZS4gVXNlZCBp
biBjb25qdW5jdGlvbiB3aXRoCisgICAgLy8gd2FpdFVudGlsRG9uZS9ub3RpZnlEb25lIGFib3Zl
LgorICAgIHZvaWQgcXVldWVCYWNrTmF2aWdhdGlvbihjb25zdCBDcHBBcmd1bWVudExpc3QmLCBD
cHBWYXJpYW50Kik7CisgICAgdm9pZCBxdWV1ZUZvcndhcmROYXZpZ2F0aW9uKGNvbnN0IENwcEFy
Z3VtZW50TGlzdCYsIENwcFZhcmlhbnQqKTsKKyAgICB2b2lkIHF1ZXVlUmVsb2FkKGNvbnN0IENw
cEFyZ3VtZW50TGlzdCYsIENwcFZhcmlhbnQqKTsKKyAgICB2b2lkIHF1ZXVlTG9hZGluZ1Njcmlw
dChjb25zdCBDcHBBcmd1bWVudExpc3QmLCBDcHBWYXJpYW50Kik7CisgICAgdm9pZCBxdWV1ZU5v
bkxvYWRpbmdTY3JpcHQoY29uc3QgQ3BwQXJndW1lbnRMaXN0JiwgQ3BwVmFyaWFudCopOworICAg
IHZvaWQgcXVldWVMb2FkKGNvbnN0IENwcEFyZ3VtZW50TGlzdCYsIENwcFZhcmlhbnQqKTsKKyAg
ICB2b2lkIHF1ZXVlTG9hZEhUTUxTdHJpbmcoY29uc3QgQ3BwQXJndW1lbnRMaXN0JiwgQ3BwVmFy
aWFudCopOworCisKKyAgICAvLyBDYXVzZXMgbmF2aWdhdGlvbiBhY3Rpb25zIGp1c3QgcHJpbnRv
dXQgdGhlIGludGVuZGVkIG5hdmlnYXRpb24gaW5zdGVhZAorICAgIC8vIG9mIHRha2luZyB5b3Ug
dG8gdGhlIHBhZ2UuIFRoaXMgaXMgdXNlZCBmb3IgY2FzZXMgbGlrZSBtYWlsdG8sIHdoZXJlIHlv
dQorICAgIC8vIGRvbid0IGFjdHVhbGx5IHdhbnQgdG8gb3BlbiB0aGUgbWFpbCBwcm9ncmFtLgor
ICAgIHZvaWQgc2V0Q3VzdG9tUG9saWN5RGVsZWdhdGUoY29uc3QgQ3BwQXJndW1lbnRMaXN0Jiwg
Q3BwVmFyaWFudCopOworCisgICAgLy8gRGVsYXlzIGNvbXBsZXRpb24gb2YgdGhlIHRlc3QgdW50
aWwgdGhlIHBvbGljeSBkZWxlZ2F0ZSBydW5zLgorICAgIHZvaWQgd2FpdEZvclBvbGljeURlbGVn
YXRlKGNvbnN0IENwcEFyZ3VtZW50TGlzdCYsIENwcFZhcmlhbnQqKTsKKworICAgIC8vIEZ1bmN0
aW9ucyBmb3IgZGVhbGluZyB3aXRoIHdpbmRvd3MuIEJ5IGRlZmF1bHQgd2UgYmxvY2sgYWxsIG5l
dyB3aW5kb3dzLgorICAgIHZvaWQgd2luZG93Q291bnQoY29uc3QgQ3BwQXJndW1lbnRMaXN0Jiwg
Q3BwVmFyaWFudCopOworICAgIHZvaWQgc2V0Q2xvc2VSZW1haW5pbmdXaW5kb3dzV2hlbkNvbXBs
ZXRlKGNvbnN0IENwcEFyZ3VtZW50TGlzdCYsIENwcFZhcmlhbnQqKTsKKwogICAgIC8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLwogICAgIC8vIE1ldGhvZHMgaW1wbGVtZW50ZWQgZW50aXJlbHkgaW4gdGVybXMg
b2YgY2hyb21pdW0ncyBwdWJsaWMgV2ViS2l0IEFQSQogCkBAIC00MzUsMTMgKzQ5NSw0MCBAQCBw
cml2YXRlOgogCiAgICAgLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCiAgICAgLy8gSW50ZXJuYWwgaGVscGVy
cworICAgIHZvaWQgY29tcGxldGVOb3RpZnlEb25lKGJvb2wgaXNUaW1lb3V0KTsKKyAgICBjbGFz
cyBOb3RpZnlEb25lVGltZWRPdXRUYXNrOiBwdWJsaWMgV2ViTWV0aG9kVGFzazxUZXN0UnVubmVy
PiB7CisgICAgcHVibGljOgorICAgICAgICBOb3RpZnlEb25lVGltZWRPdXRUYXNrKFRlc3RSdW5u
ZXIqIG9iamVjdCk6IFdlYk1ldGhvZFRhc2s8VGVzdFJ1bm5lcj4ob2JqZWN0KSB7IH0KKyAgICAg
ICAgdmlydHVhbCB2b2lkIHJ1bklmVmFsaWQoKSB7IG1fb2JqZWN0LT5jb21wbGV0ZU5vdGlmeURv
bmUodHJ1ZSk7IH0KKyAgICB9OworCiAgICAgYm9vbCBwYXVzZUFuaW1hdGlvbkF0VGltZU9uRWxl
bWVudFdpdGhJZChjb25zdCBXZWJLaXQ6OldlYlN0cmluZyYgYW5pbWF0aW9uTmFtZSwgZG91Ymxl
IHRpbWUsIGNvbnN0IFdlYktpdDo6V2ViU3RyaW5nJiBlbGVtZW50SWQpOwogICAgIGJvb2wgcGF1
c2VUcmFuc2l0aW9uQXRUaW1lT25FbGVtZW50V2l0aElkKGNvbnN0IFdlYktpdDo6V2ViU3RyaW5n
JiBwcm9wZXJ0eU5hbWUsIGRvdWJsZSB0aW1lLCBjb25zdCBXZWJLaXQ6OldlYlN0cmluZyYgZWxl
bWVudElkKTsKICAgICBib29sIGVsZW1lbnREb2VzQXV0b0NvbXBsZXRlRm9yRWxlbWVudFdpdGhJ
ZChjb25zdCBXZWJLaXQ6OldlYlN0cmluZyYpOwogICAgIGludCBudW1iZXJPZkFjdGl2ZUFuaW1h
dGlvbnMoKTsKKyAgICBib29sIGNwcFZhcmlhbnRUb0Jvb2woY29uc3QgQ3BwVmFyaWFudCYpOwor
ICAgIGludDMyX3QgY3BwVmFyaWFudFRvSW50MzIoY29uc3QgQ3BwVmFyaWFudCYpOworICAgIFdl
YktpdDo6V2ViU3RyaW5nIGNwcFZhcmlhbnRUb1dlYlN0cmluZyhjb25zdCBDcHBWYXJpYW50Jik7
CisKKyAgICB2b2lkIHByaW50RXJyb3JNZXNzYWdlKGNvbnN0IHN0ZDo6c3RyaW5nJik7CisKKyAg
ICAvLyBJbiB0aGUgTWFjIGNvZGUsIHRoaXMgaXMgY2FsbGVkIHRvIHRyaWdnZXIgdGhlIGVuZCBv
ZiBhIHRlc3QgYWZ0ZXIgdGhlCisgICAgLy8gcGFnZSBoYXMgZmluaXNoZWQgbG9hZGluZy4gRnJv
bSBoZXJlLCB3ZSBjYW4gZ2VuZXJhdGUgdGhlIGR1bXAgZm9yIHRoZQorICAgIC8vIHRlc3QuCisg
ICAgdm9pZCBsb2NhdGlvbkNoYW5nZURvbmUoKTsKIAogICAgIGJvb2wgbV90ZXN0SXNSdW5uaW5n
OwogCisgICAgLy8gV2hlbiByZXNldCBpcyBjYWxsZWQsIGdvIHRocm91Z2ggYW5kIGNsb3NlIGFs
bCBidXQgdGhlIG1haW4gdGVzdCBzaGVsbAorICAgIC8vIHdpbmRvdy4gQnkgZGVmYXVsdCwgc2V0
IHRvIHRydWUgYnV0IHRvZ2dsZWQgdG8gZmFsc2UgdXNpbmcKKyAgICAvLyBzZXRDbG9zZVJlbWFp
bmluZ1dpbmRvd3NXaGVuQ29tcGxldGUoKS4KKyAgICBib29sIG1fY2xvc2VSZW1haW5pbmdXaW5k
b3dzOworCisgICAgLy8gSWYgdHJ1ZSwgZG9uJ3QgZHVtcCBvdXRwdXQgdW50aWwgbm90aWZ5RG9u
ZSBpcyBjYWxsZWQuCisgICAgYm9vbCBtX3dhaXRVbnRpbERvbmU7CisKKyAgICBXb3JrUXVldWUg
bV93b3JrUXVldWU7CisKICAgICBXZWJLaXQ6OldlYlVSTCBtX3VzZXJTdHlsZVNoZWV0TG9jYXRp
b247CiAKICAgICAvLyBnbG9iYWxGbGFnIGlzIHVzZWQgYnkgYSBudW1iZXIgb2YgbGF5b3V0IHRl
c3RzIGluIGh0dHAvdGVzdHMvc2VjdXJpdHkvZGF0YVVSTC4KQEAgLTQ1Myw2ICs1NDAsMTIgQEAg
cHJpdmF0ZToKICAgICAvLyBCb3VuZCB2YXJpYWJsZSB0cmFja2luZyB0aGUgZGlyZWN0aW9uYWxp
dHkgb2YgdGhlIDx0aXRsZT4gdGFnLgogICAgIENwcFZhcmlhbnQgbV90aXRsZVRleHREaXJlY3Rp
b247CiAKKyAgICAvLyBCb3VuZCB2YXJpYWJsZSBjb3VudGluZyB0aGUgbnVtYmVyIG9mIHRvcCBV
UkxzIHZpc2l0ZWQuCisgICAgQ3BwVmFyaWFudCBtX3dlYkhpc3RvcnlJdGVtQ291bnQ7CisKKyAg
ICAvLyBCb3VuZCB2YXJpYWJsZSB0byBzZXQgd2hldGhlciBwb3N0TWVzc2FnZXMgc2hvdWxkIGJl
IGludGVyY2VwdGVkIG9yIG5vdAorICAgIENwcFZhcmlhbnQgbV9pbnRlcmNlcHRQb3N0TWVzc2Fn
ZTsKKwogICAgIC8vIElmIHRydWUsIHRoZSB0ZXN0X3NoZWxsIHdpbGwgd3JpdGUgYSBkZXNjcmlw
dGl2ZSBsaW5lIGZvciBlYWNoIGVkaXRpbmcKICAgICAvLyBjb21tYW5kLgogICAgIGJvb2wgbV9k
dW1wRWRpdGluZ0NhbGxiYWNrczsKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2No
cm9taXVtL1Rlc3RTaGVsbC5jcHAgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0
U2hlbGwuY3BwCmluZGV4IDcxZDkzZGRkODg1ZWYxMmRhNGEzYzBjN2UyMDFlNmIyNTk1ZjhlZDMu
LjRhZjljMGU3OWI3MTFkMDc2NTllYzEwZmEzZmM4NzEzYzFjNTljMzkgMTAwNjQ0Ci0tLSBhL1Rv
b2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RTaGVsbC5jcHAKKysrIGIvVG9vbHMvRHVt
cFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFNoZWxsLmNwcApAQCAtMzMsNyArMzMsNiBAQAogCiAj
aW5jbHVkZSAiRFJURGV2VG9vbHNBZ2VudC5oIgogI2luY2x1ZGUgIkRSVERldlRvb2xzQ2xpZW50
LmgiCi0jaW5jbHVkZSAiRFJUVGVzdFJ1bm5lci5oIgogI2luY2x1ZGUgIk1vY2tXZWJQcmVyZW5k
ZXJpbmdTdXBwb3J0LmgiCiAjaW5jbHVkZSAiV2ViQXJyYXlCdWZmZXJWaWV3LmgiCiAjaW5jbHVk
ZSAiV2ViQ2FjaGUuaCIKQEAgLTE2Miw3ICsxNjEsNyBAQCB2b2lkIFRlc3RTaGVsbDo6aW5pdGlh
bGl6ZSgpCiB7CiAgICAgbV90ZXN0SW50ZXJmYWNlcyA9IGFkb3B0UHRyKG5ldyBXZWJUZXN0SW50
ZXJmYWNlcygpKTsKICAgICBtX2RldlRvb2xzVGVzdEludGVyZmFjZXMgPSBhZG9wdFB0cihuZXcg
V2ViVGVzdEludGVyZmFjZXMoKSk7Ci0gICAgbV90ZXN0UnVubmVyID0gYWRvcHRQdHIobmV3IERS
VFRlc3RSdW5uZXIodGhpcykpOworICAgIG1fdGVzdFJ1bm5lciA9IGFkb3B0UHRyKG5ldyBUZXN0
UnVubmVyKCkpOwogICAgIG1fdGVzdEludGVyZmFjZXMtPnNldFRlc3RSdW5uZXIobV90ZXN0UnVu
bmVyLmdldCgpKTsKICAgICBtX2RldlRvb2xzVGVzdEludGVyZmFjZXMtPnNldFRlc3RSdW5uZXIo
bV90ZXN0UnVubmVyLmdldCgpKTsKICNpZiBFTkFCTEUoTk9USUZJQ0FUSU9OUykgfHwgRU5BQkxF
KExFR0FDWV9OT1RJRklDQVRJT05TKQpAQCAtMjkyLDkgKzI5MSw2IEBAIHZvaWQgVGVzdFNoZWxs
OjpydW5GaWxlVGVzdChjb25zdCBUZXN0UGFyYW1zJiBwYXJhbXMsIGJvb2wgc2hvdWxkRHVtcFBp
eGVscykKICAgICAgICAgfHwgdGVzdFVybC5maW5kKCJcXGluc3BlY3RvclxcIikgIT0gc3RyaW5n
OjpucG9zKQogICAgICAgICBzaG93RGV2VG9vbHMoKTsKIAotICAgIGlmIChtX3BhcmFtcy5kZWJ1
Z0xheWVyVHJlZSkKLSAgICAgICAgbV90ZXN0UnVubmVyLT5zZXRTaG93RGVidWdMYXllclRyZWUo
dHJ1ZSk7Ci0KICAgICBpZiAobV9kdW1wV2hlbkZpbmlzaGVkKQogICAgICAgICBtX3ByaW50ZXIu
aGFuZGxlVGVzdEhlYWRlcih0ZXN0VXJsLmNfc3RyKCkpOwogICAgIGxvYWRVUkwobV9wYXJhbXMu
dGVzdFVybCk7CkBAIC0zNTAsNyArMzQ2LDcgQEAgdm9pZCBUZXN0U2hlbGw6OnJlc2V0VGVzdENv
bnRyb2xsZXIoKQogCiB2b2lkIFRlc3RTaGVsbDo6bG9hZFVSTChjb25zdCBXZWJVUkwmIHVybCkK
IHsKLSAgICBtX3dlYlZpZXdIb3N0LT5sb2FkVVJMRm9yRnJhbWUodXJsLCBXZWJTdHJpbmcoKSk7
CisgICAgbV93ZWJWaWV3SG9zdC0+bG9hZFVSTEZvckZyYW1lKHVybCwgc3RyaW5nKCkpOwogfQog
CiB2b2lkIFRlc3RTaGVsbDo6cmVsb2FkKCkKQEAgLTc4MSw3ICs3NzcsNyBAQCBXZWJWaWV3SG9z
dCogVGVzdFNoZWxsOjpjcmVhdGVOZXdXaW5kb3coY29uc3QgV2ViS2l0OjpXZWJVUkwmIHVybCwg
RFJURGV2VG9vbHNBZwogICAgIG1fcHJlZnMuYXBwbHlUbyh2aWV3KTsKICAgICB2aWV3LT5pbml0
aWFsaXplTWFpbkZyYW1lKGhvc3QpOwogICAgIG1fd2luZG93TGlzdC5hcHBlbmQoaG9zdCk7Ci0g
ICAgaG9zdC0+bG9hZFVSTEZvckZyYW1lKHVybCwgV2ViU3RyaW5nKCkpOworICAgIGhvc3QtPmxv
YWRVUkxGb3JGcmFtZSh1cmwsIHN0cmluZygpKTsKICAgICByZXR1cm4gaG9zdDsKIH0KIApkaWZm
IC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFNoZWxsLmggYi9Ub29s
cy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0U2hlbGwuaAppbmRleCA3ZTUzYmM5YjViNzhj
ZTZiYTdiMmQ5MTczNDhhZDZkN2VlNjRjZWE4Li5lNTJlZmYzMWUwZDljMWNhODk4ZmM5ZmU5NmI5
MGUxNTRmNGFjNTIxIDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9U
ZXN0U2hlbGwuaAorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0U2hlbGwu
aApAQCAtMzEsOSArMzEsOSBAQAogI2lmbmRlZiBUZXN0U2hlbGxfaAogI2RlZmluZSBUZXN0U2hl
bGxfaAogCi0jaW5jbHVkZSAiRFJUVGVzdFJ1bm5lci5oIgogI2luY2x1ZGUgIk5vdGlmaWNhdGlv
blByZXNlbnRlci5oIgogI2luY2x1ZGUgIlRlc3RFdmVudFByaW50ZXIuaCIKKyNpbmNsdWRlICJU
ZXN0UnVubmVyL3NyYy9UZXN0UnVubmVyLmgiCiAjaW5jbHVkZSAiV2ViUHJlZmVyZW5jZXMuaCIK
ICNpbmNsdWRlICJXZWJUZXN0SW50ZXJmYWNlcy5oIgogI2luY2x1ZGUgIldlYlZpZXdIb3N0Lmgi
CkBAIC04NCw3ICs4NCw3IEBAIHB1YmxpYzoKICAgICBXZWJLaXQ6OldlYlZpZXcqIHdlYlZpZXco
KSBjb25zdCB7IHJldHVybiBtX3dlYlZpZXc7IH0KICAgICAvLyBSZXR1cm5zIHRoZSBob3N0IGZv
ciB0aGUgbWFpbiBXZWJWaWV3LgogICAgIFdlYlZpZXdIb3N0KiB3ZWJWaWV3SG9zdCgpIGNvbnN0
IHsgcmV0dXJuIG1fd2ViVmlld0hvc3QuZ2V0KCk7IH0KLSAgICBEUlRUZXN0UnVubmVyKiB0ZXN0
UnVubmVyKCkgY29uc3QgeyByZXR1cm4gbV90ZXN0UnVubmVyLmdldCgpOyB9CisgICAgV2ViVGVz
dFJ1bm5lcjo6V2ViVGVzdFJ1bm5lciogdGVzdFJ1bm5lcigpIGNvbnN0IHsgcmV0dXJuIG1fdGVz
dFJ1bm5lci5nZXQoKTsgfQogICAgIFdlYlRlc3RSdW5uZXI6OldlYkV2ZW50U2VuZGVyKiBldmVu
dFNlbmRlcigpIGNvbnN0IHsgcmV0dXJuIG1fdGVzdEludGVyZmFjZXMtPmV2ZW50U2VuZGVyKCk7
IH0KICAgICBXZWJUZXN0UnVubmVyOjpXZWJBY2Nlc3NpYmlsaXR5Q29udHJvbGxlciogYWNjZXNz
aWJpbGl0eUNvbnRyb2xsZXIoKSBjb25zdCB7IHJldHVybiBtX3Rlc3RJbnRlcmZhY2VzLT5hY2Nl
c3NpYmlsaXR5Q29udHJvbGxlcigpOyB9CiAjaWYgRU5BQkxFKE5PVElGSUNBVElPTlMpCkBAIC0y
MTEsNyArMjExLDcgQEAgcHJpdmF0ZToKICAgICBPd25QdHI8RFJURGV2VG9vbHNDbGllbnQ+IG1f
ZHJ0RGV2VG9vbHNDbGllbnQ7CiAgICAgT3duUHRyPFdlYlRlc3RSdW5uZXI6OldlYlRlc3RJbnRl
cmZhY2VzPiBtX3Rlc3RJbnRlcmZhY2VzOwogICAgIE93blB0cjxXZWJUZXN0UnVubmVyOjpXZWJU
ZXN0SW50ZXJmYWNlcz4gbV9kZXZUb29sc1Rlc3RJbnRlcmZhY2VzOwotICAgIE93blB0cjxEUlRU
ZXN0UnVubmVyPiBtX3Rlc3RSdW5uZXI7CisgICAgT3duUHRyPFdlYlRlc3RSdW5uZXI6OlRlc3RS
dW5uZXI+IG1fdGVzdFJ1bm5lcjsKICNpZiBFTkFCTEUoTk9USUZJQ0FUSU9OUykgfHwgRU5BQkxF
KExFR0FDWV9OT1RJRklDQVRJT05TKQogICAgIE93blB0cjxOb3RpZmljYXRpb25QcmVzZW50ZXI+
IG1fbm90aWZpY2F0aW9uUHJlc2VudGVyOwogI2VuZGlmCmRpZmYgLS1naXQgYS9Ub29scy9EdW1w
UmVuZGVyVHJlZS9jaHJvbWl1bS9XZWJWaWV3SG9zdC5jcHAgYi9Ub29scy9EdW1wUmVuZGVyVHJl
ZS9jaHJvbWl1bS9XZWJWaWV3SG9zdC5jcHAKaW5kZXggODRlMTRlNTAyODI4OWY2ZTg3MTJlM2Vk
NmM5NmZkN2ZjN2NkYTQ5YS4uMTE5ZjhlOTU3YTBhNmMyNmJmYjg5YjIxMjM5MmU5N2IxZDJhY2Jh
ZiAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vV2ViVmlld0hvc3Qu
Y3BwCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1dlYlZpZXdIb3N0LmNwcApA
QCAtMzIsNyArMzIsNiBAQAogI2luY2x1ZGUgIldlYlZpZXdIb3N0LmgiCiAKICNpbmNsdWRlICJE
UlREZXZUb29sc0FnZW50LmgiCi0jaW5jbHVkZSAiRFJUVGVzdFJ1bm5lci5oIgogI2luY2x1ZGUg
Ik1vY2tXZWJTcGVlY2hJbnB1dENvbnRyb2xsZXIuaCIKICNpbmNsdWRlICJNb2NrV2ViU3BlZWNo
UmVjb2duaXplci5oIgogI2luY2x1ZGUgIlRhc2suaCIKQEAgLTEwNDMsNiArMTA0Miw3MSBAQCB2
b2lkIFdlYlZpZXdIb3N0OjpkaXNwbGF5SW52YWxpZGF0ZWRSZWdpb24oKQogICAgIGRpc3BsYXlS
ZXBhaW50TWFzaygpOwogfQogCit2b2lkIFdlYlZpZXdIb3N0Ojp0ZXN0RmluaXNoZWQoKQorewor
ICAgIG1fc2hlbGwtPnRlc3RGaW5pc2hlZCgpOworfQorCit2b2lkIFdlYlZpZXdIb3N0Ojp0ZXN0
VGltZWRPdXQoKQoreworICAgIG1fc2hlbGwtPnRlc3RUaW1lZE91dCgpOworfQorCitib29sIFdl
YlZpZXdIb3N0Ojppc0JlaW5nRGVidWdnZWQoKQoreworICAgIHJldHVybiB3ZWJraXRfc3VwcG9y
dDo6QmVpbmdEZWJ1Z2dlZCgpOworfQorCitpbnQgV2ViVmlld0hvc3Q6OmxheW91dFRlc3RUaW1l
b3V0KCkKK3sKKyAgICByZXR1cm4gbV9zaGVsbC0+bGF5b3V0VGVzdFRpbWVvdXQoKTsKK30KKwor
dm9pZCBXZWJWaWV3SG9zdDo6Y2xvc2VSZW1haW5pbmdXaW5kb3dzKCkKK3sKKyAgICBtX3NoZWxs
LT5jbG9zZVJlbWFpbmluZ1dpbmRvd3MoKTsKK30KKworaW50IFdlYlZpZXdIb3N0OjpuYXZpZ2F0
aW9uRW50cnlDb3VudCgpCit7CisgICAgcmV0dXJuIG1fc2hlbGwtPm5hdmlnYXRpb25FbnRyeUNv
dW50KCk7Cit9CisKK2ludCBXZWJWaWV3SG9zdDo6d2luZG93Q291bnQoKQoreworICAgIHJldHVy
biBtX3NoZWxsLT53aW5kb3dDb3VudCgpOworfQorCit2b2lkIFdlYlZpZXdIb3N0OjpzZXRDdXN0
b21Qb2xpY3lEZWxlZ2F0ZShib29sIGlzQ3VzdG9tLCBib29sIGlzUGVybWlzc2l2ZSkKK3sKKyAg
ICBtX3BvbGljeURlbGVnYXRlRW5hYmxlZCA9IGlzQ3VzdG9tOworICAgIG1fcG9saWN5RGVsZWdh
dGVJc1Blcm1pc3NpdmUgPSBpc1Blcm1pc3NpdmU7Cit9CisKK3ZvaWQgV2ViVmlld0hvc3Q6Ondh
aXRGb3JQb2xpY3lEZWxlZ2F0ZSgpCit7CisgICAgbV9wb2xpY3lEZWxlZ2F0ZUVuYWJsZWQgPSB0
cnVlOworICAgIG1fcG9saWN5RGVsZWdhdGVTaG91bGROb3RpZnlEb25lID0gdHJ1ZTsKK30KKwor
dm9pZCBXZWJWaWV3SG9zdDo6Z29Ub09mZnNldChpbnQgb2Zmc2V0KQoreworICAgIG1fc2hlbGwt
PmdvVG9PZmZzZXQob2Zmc2V0KTsKK30KKwordm9pZCBXZWJWaWV3SG9zdDo6cmVsb2FkKCkKK3sK
KyAgICBtX3NoZWxsLT5yZWxvYWQoKTsKK30KKwordm9pZCBXZWJWaWV3SG9zdDo6bG9hZFVSTEZv
ckZyYW1lKGNvbnN0IFdlYlVSTCYgdXJsLCBjb25zdCBzdHJpbmcmIGZyYW1lTmFtZSkKK3sKKyAg
ICBpZiAoIXVybC5pc1ZhbGlkKCkpCisgICAgICAgIHJldHVybjsKKyAgICBUZXN0U2hlbGw6OnJl
c2l6ZVdpbmRvd0ZvclRlc3QodGhpcywgdXJsKTsKKyAgICBuYXZpZ2F0aW9uQ29udHJvbGxlcigp
LT5sb2FkRW50cnkoVGVzdE5hdmlnYXRpb25FbnRyeTo6Y3JlYXRlKC0xLCB1cmwsIFdlYlN0cmlu
ZygpLCBXZWJTdHJpbmc6OmZyb21VVEY4KGZyYW1lTmFtZSkpLmdldCgpKTsKK30KKwogLy8gUHVi
bGljIGZ1bmN0aW9ucyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLQogCiBXZWJWaWV3SG9zdDo6V2ViVmlld0hvc3QoVGVzdFNoZWxsKiBz
aGVsbCkKQEAgLTEwNzAsNyArMTEzNCw3IEBAIHZvaWQgV2ViVmlld0hvc3Q6OnNodXRkb3duKCkK
ICAgICBpZiAobV9zaGVsbC0+ZGV2VG9vbHNXZWJWaWV3KCkgIT0gdGhpcykgewogICAgICAgICAv
LyBOYXZpZ2F0ZSB0byBhbiBlbXB0eSBwYWdlIHRvIGZpcmUgYWxsIHRoZSBkZXN0cnVjdGlvbiBs
b2dpYyBmb3IgdGhlCiAgICAgICAgIC8vIGN1cnJlbnQgcGFnZS4KLSAgICAgICAgbG9hZFVSTEZv
ckZyYW1lKEdVUkwoImFib3V0OmJsYW5rIiksIFdlYlN0cmluZygpKTsKKyAgICAgICAgbG9hZFVS
TEZvckZyYW1lKEdVUkwoImFib3V0OmJsYW5rIiksIHN0cmluZygpKTsKICAgICB9CiAKICAgICBm
b3IgKFZlY3RvcjxXZWJLaXQ6OldlYldpZGdldCo+OjppdGVyYXRvciBpdCA9IG1fcG9wdXBtZW51
cy5iZWdpbigpOwpAQCAtMTE4NiwyNiArMTI1MCw2IEBAIHZvaWQgV2ViVmlld0hvc3Q6OnNldENs
aWVudFdpbmRvd1JlY3QoY29uc3QgV2ViS2l0OjpXZWJSZWN0JiByZWN0KQogICAgIHNldFdpbmRv
d1JlY3QocmVjdCk7CiB9CiAKLXZvaWQgV2ViVmlld0hvc3Q6OnNldEN1c3RvbVBvbGljeURlbGVn
YXRlKGJvb2wgaXNDdXN0b20sIGJvb2wgaXNQZXJtaXNzaXZlKQotewotICAgIG1fcG9saWN5RGVs
ZWdhdGVFbmFibGVkID0gaXNDdXN0b207Ci0gICAgbV9wb2xpY3lEZWxlZ2F0ZUlzUGVybWlzc2l2
ZSA9IGlzUGVybWlzc2l2ZTsKLX0KLQotdm9pZCBXZWJWaWV3SG9zdDo6d2FpdEZvclBvbGljeURl
bGVnYXRlKCkKLXsKLSAgICBtX3BvbGljeURlbGVnYXRlRW5hYmxlZCA9IHRydWU7Ci0gICAgbV9w
b2xpY3lEZWxlZ2F0ZVNob3VsZE5vdGlmeURvbmUgPSB0cnVlOwotfQotCi12b2lkIFdlYlZpZXdI
b3N0Ojpsb2FkVVJMRm9yRnJhbWUoY29uc3QgV2ViVVJMJiB1cmwsIGNvbnN0IFdlYlN0cmluZyYg
ZnJhbWVOYW1lKQotewotICAgIGlmICghdXJsLmlzVmFsaWQoKSkKLSAgICAgICAgcmV0dXJuOwot
ICAgIFRlc3RTaGVsbDo6cmVzaXplV2luZG93Rm9yVGVzdCh0aGlzLCB1cmwpOwotICAgIG5hdmln
YXRpb25Db250cm9sbGVyKCktPmxvYWRFbnRyeShUZXN0TmF2aWdhdGlvbkVudHJ5OjpjcmVhdGUo
LTEsIHVybCwgV2ViU3RyaW5nKCksIGZyYW1lTmFtZSkuZ2V0KCkpOwotfQotCiBib29sIFdlYlZp
ZXdIb3N0OjpuYXZpZ2F0ZShjb25zdCBUZXN0TmF2aWdhdGlvbkVudHJ5JiBlbnRyeSwgYm9vbCBy
ZWxvYWQpCiB7CiAgICAgLy8gR2V0IHRoZSByaWdodCB0YXJnZXQgZnJhbWUgZm9yIHRoZSBlbnRy
eS4KQEAgLTEyNTAsNyArMTI5NCw3IEBAIGJvb2wgV2ViVmlld0hvc3Q6Om5hdmlnYXRlKGNvbnN0
IFRlc3ROYXZpZ2F0aW9uRW50cnkmIGVudHJ5LCBib29sIHJlbG9hZCkKIAogLy8gUHJpdmF0ZSBm
dW5jdGlvbnMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLQogCi1EUlRUZXN0UnVubmVyKiBXZWJWaWV3SG9zdDo6dGVzdFJ1bm5lcigpIGNv
bnN0Cis6OldlYlRlc3RSdW5uZXI6OldlYlRlc3RSdW5uZXIqIFdlYlZpZXdIb3N0Ojp0ZXN0UnVu
bmVyKCkgY29uc3QKIHsKICAgICByZXR1cm4gbV9zaGVsbC0+dGVzdFJ1bm5lcigpOwogfQpkaWZm
IC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vV2ViVmlld0hvc3QuaCBiL1Rv
b2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1dlYlZpZXdIb3N0LmgKaW5kZXggN2ZkMDA2MjRk
ODFhNDY5YTk5YTdhZDljMzVkZmQxOTA1Mjk4ZWM1ZS4uMjJjNDkwZjNkMzgzOWE1NzNlZDY5Yzgx
MTU0MDAxZDUwOTdmZjc1YSAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21p
dW0vV2ViVmlld0hvc3QuaAorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9XZWJW
aWV3SG9zdC5oCkBAIC00Niw3ICs0Niw2IEBACiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogI2lu
Y2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCi1jbGFzcyBEUlRUZXN0UnVubmVyOwogY2xh
c3MgTW9ja1dlYlNwZWVjaElucHV0Q29udHJvbGxlcjsKIGNsYXNzIE1vY2tXZWJTcGVlY2hSZWNv
Z25pemVyOwogY2xhc3MgU2tDYW52YXM7CkBAIC03NSw2ICs3NCwxMCBAQCBjbGFzcyBNZWRpYVN0
cmVhbVV0aWw7CiBjbGFzcyBUZXN0TWVkaWFTdHJlYW1DbGllbnQ7CiB9CiAKK25hbWVzcGFjZSBX
ZWJUZXN0UnVubmVyIHsKK2NsYXNzIFdlYlRlc3RSdW5uZXI7Cit9CisKIGNsYXNzIFdlYlZpZXdI
b3N0IDogcHVibGljIFdlYktpdDo6V2ViVmlld0NsaWVudCwgcHVibGljIFdlYktpdDo6V2ViRnJh
bWVDbGllbnQsIHB1YmxpYyBOYXZpZ2F0aW9uSG9zdCwgcHVibGljIFdlYktpdDo6V2ViUHJlcmVu
ZGVyZXJDbGllbnQsIHB1YmxpYyBXZWJUZXN0UnVubmVyOjpXZWJUZXN0RGVsZWdhdGUgewogIHB1
YmxpYzoKICAgICBXZWJWaWV3SG9zdChUZXN0U2hlbGwqKTsKQEAgLTg2LDggKzg5LDYgQEAgY2xh
c3MgV2ViVmlld0hvc3QgOiBwdWJsaWMgV2ViS2l0OjpXZWJWaWV3Q2xpZW50LCBwdWJsaWMgV2Vi
S2l0OjpXZWJGcmFtZUNsaWVudCwKICAgICBXZWJUZXN0UnVubmVyOjpXZWJUZXN0UHJveHlCYXNl
KiBwcm94eSgpIGNvbnN0OwogICAgIHZvaWQgc2V0UHJveHkoV2ViVGVzdFJ1bm5lcjo6V2ViVGVz
dFByb3h5QmFzZSopOwogICAgIHZvaWQgcmVzZXQoKTsKLSAgICB2b2lkIHdhaXRGb3JQb2xpY3lE
ZWxlZ2F0ZSgpOwotICAgIHZvaWQgc2V0Q3VzdG9tUG9saWN5RGVsZWdhdGUoYm9vbCwgYm9vbCk7
CiAgICAgdm9pZCBzZXRQZW5kaW5nRXh0cmFEYXRhKFBhc3NPd25QdHI8VGVzdFNoZWxsRXh0cmFE
YXRhPik7CiAKICAgICB2b2lkIHBhaW50UmVjdChjb25zdCBXZWJLaXQ6OldlYlJlY3QmKTsKQEAg
LTk2LDcgKzk3LDYgQEAgY2xhc3MgV2ViVmlld0hvc3QgOiBwdWJsaWMgV2ViS2l0OjpXZWJWaWV3
Q2xpZW50LCBwdWJsaWMgV2ViS2l0OjpXZWJGcmFtZUNsaWVudCwKICAgICBTa0NhbnZhcyogY2Fu
dmFzKCk7CiAgICAgdm9pZCBkaXNwbGF5UmVwYWludE1hc2soKTsKIAotICAgIHZvaWQgbG9hZFVS
TEZvckZyYW1lKGNvbnN0IFdlYktpdDo6V2ViVVJMJiwgY29uc3QgV2ViS2l0OjpXZWJTdHJpbmcm
IGZyYW1lTmFtZSk7CiAgICAgVGVzdE5hdmlnYXRpb25Db250cm9sbGVyKiBuYXZpZ2F0aW9uQ29u
dHJvbGxlcigpIHsgcmV0dXJuIG1fbmF2aWdhdGlvbkNvbnRyb2xsZXIuZ2V0KCk7IH0KIAogICAg
IHZvaWQgY2xvc2VXaWRnZXQoKTsKQEAgLTE2OSw2ICsxNjksMTggQEAgY2xhc3MgV2ViVmlld0hv
c3QgOiBwdWJsaWMgV2ViS2l0OjpXZWJWaWV3Q2xpZW50LCBwdWJsaWMgV2ViS2l0OjpXZWJGcmFt
ZUNsaWVudCwKICNlbmRpZgogICAgIHZpcnR1YWwgdm9pZCBkaXNwbGF5KCkgT1ZFUlJJREU7CiAg
ICAgdmlydHVhbCB2b2lkIGRpc3BsYXlJbnZhbGlkYXRlZFJlZ2lvbigpIE9WRVJSSURFOworICAg
IHZpcnR1YWwgdm9pZCB0ZXN0RmluaXNoZWQoKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQg
dGVzdFRpbWVkT3V0KCkgT1ZFUlJJREU7CisgICAgdmlydHVhbCBib29sIGlzQmVpbmdEZWJ1Z2dl
ZCgpIE9WRVJSSURFOworICAgIHZpcnR1YWwgaW50IGxheW91dFRlc3RUaW1lb3V0KCkgT1ZFUlJJ
REU7CisgICAgdmlydHVhbCB2b2lkIGNsb3NlUmVtYWluaW5nV2luZG93cygpIE9WRVJSSURFOwor
ICAgIHZpcnR1YWwgaW50IG5hdmlnYXRpb25FbnRyeUNvdW50KCkgT1ZFUlJJREU7CisgICAgdmly
dHVhbCBpbnQgd2luZG93Q291bnQoKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0Q3Vz
dG9tUG9saWN5RGVsZWdhdGUoYm9vbCwgYm9vbCkgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lk
IHdhaXRGb3JQb2xpY3lEZWxlZ2F0ZSgpIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBnb1Rv
T2Zmc2V0KGludCkgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIHJlbG9hZCgpIE9WRVJSSURF
OworICAgIHZvaWQgbG9hZFVSTEZvckZyYW1lKGNvbnN0IFdlYktpdDo6V2ViVVJMJiwgY29uc3Qg
c3RkOjpzdHJpbmcmIGZyYW1lTmFtZSkgT1ZFUlJJREU7CiAKICAgICAvLyBOYXZpZ2F0aW9uSG9z
dAogICAgIHZpcnR1YWwgYm9vbCBuYXZpZ2F0ZShjb25zdCBUZXN0TmF2aWdhdGlvbkVudHJ5Jiwg
Ym9vbCByZWxvYWQpOwpAQCAtMjk0LDcgKzMwNiw3IEBAIHByaXZhdGU6CiAgICAgICAgIENhbGxi
YWNrTWV0aG9kVHlwZSBtX2NhbGxiYWNrOwogICAgIH07CiAKLSAgICBEUlRUZXN0UnVubmVyKiB0
ZXN0UnVubmVyKCkgY29uc3Q7CisgICAgV2ViVGVzdFJ1bm5lcjo6V2ViVGVzdFJ1bm5lciogdGVz
dFJ1bm5lcigpIGNvbnN0OwogCiAgICAgLy8gQ2FsbGVkIHRoZSB0aXRsZSBvZiB0aGUgcGFnZSBj
aGFuZ2VzLgogICAgIC8vIENhbiBiZSB1c2VkIHRvIHVwZGF0ZSB0aGUgdGl0bGUgb2YgdGhlIHdp
bmRvdy4K
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>185191</attachid>
            <date>2013-01-29 00:55:49 -0800</date>
            <delta_ts>2013-01-29 01:31:40 -0800</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-108082-20130129095235.patch</filename>
            <type>text/plain</type>
            <size>59377</size>
            <attacher>jochen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQxMDcxCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggMjZkNGMwNjMzNjU0MzJjNzc1YzNkNDM2YzliY2YxOTU3
ZTY0OGE0MS4uOTFiZWE5MjMxZTc1MjQ3N2IxODFiOWMwMWYyMmQ3YjY3Njg0ODg5ZiAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEw
OCBAQAorMjAxMy0wMS0yOCAgSm9jaGVuIEVpc2luZ2VyICA8am9jaGVuQGNocm9taXVtLm9yZz4K
KworICAgICAgICBbY2hyb21pdW1dIGRlbGV0ZSBEUlRUZXN0UnVubmVyCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDgwODIKKworICAgICAgICBSZXZp
ZXdlZCBieSBBZGFtIEJhcnRoLgorCisgICAgICAgICogRHVtcFJlbmRlclRyZWUvRHVtcFJlbmRl
clRyZWUuZ3lwaToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9EUlRUZXN0UnVu
bmVyLmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9EUlRU
ZXN0UnVubmVyLmg6IFJlbW92ZWQuCisgICAgICAgICogRHVtcFJlbmRlclRyZWUvY2hyb21pdW0v
VGVzdFJ1bm5lci9wdWJsaWMvV2ViVGVzdERlbGVnYXRlLmg6CisgICAgICAgIChXZWJUZXN0UnVu
bmVyOjpXZWJUZXN0RGVsZWdhdGU6OnRlc3RGaW5pc2hlZCk6CisgICAgICAgIChXZWJUZXN0UnVu
bmVyOjpXZWJUZXN0RGVsZWdhdGU6OnRlc3RUaW1lZE91dCk6CisgICAgICAgIChXZWJUZXN0UnVu
bmVyOjpXZWJUZXN0RGVsZWdhdGU6OmlzQmVpbmdEZWJ1Z2dlZCk6CisgICAgICAgIChXZWJUZXN0
UnVubmVyOjpXZWJUZXN0RGVsZWdhdGU6OmxheW91dFRlc3RUaW1lb3V0KToKKyAgICAgICAgKFdl
YlRlc3RSdW5uZXI6OldlYlRlc3REZWxlZ2F0ZTo6Y2xvc2VSZW1haW5pbmdXaW5kb3dzKToKKyAg
ICAgICAgKFdlYlRlc3RSdW5uZXI6OldlYlRlc3REZWxlZ2F0ZTo6bmF2aWdhdGlvbkVudHJ5Q291
bnQpOgorICAgICAgICAoV2ViVGVzdFJ1bm5lcjo6V2ViVGVzdERlbGVnYXRlOjp3aW5kb3dDb3Vu
dCk6CisgICAgICAgIChXZWJUZXN0UnVubmVyOjpXZWJUZXN0RGVsZWdhdGU6OnNldEN1c3RvbVBv
bGljeURlbGVnYXRlKToKKyAgICAgICAgKFdlYlRlc3RSdW5uZXI6OldlYlRlc3REZWxlZ2F0ZTo6
d2FpdEZvclBvbGljeURlbGVnYXRlKToKKyAgICAgICAgKFdlYlRlc3RSdW5uZXI6OldlYlRlc3RE
ZWxlZ2F0ZTo6Z29Ub09mZnNldCk6CisgICAgICAgIChXZWJUZXN0UnVubmVyOjpXZWJUZXN0RGVs
ZWdhdGU6OnJlbG9hZCk6CisgICAgICAgIChXZWJUZXN0UnVubmVyOjpXZWJUZXN0RGVsZWdhdGU6
OmxvYWRVUkxGb3JGcmFtZSk6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVz
dFJ1bm5lci9wdWJsaWMvV2ViVGVzdFJ1bm5lci5oOgorICAgICAgICAoV2ViVGVzdFJ1bm5lcjo6
V2ViVGVzdFJ1bm5lcjo6cG9saWN5RGVsZWdhdGVEb25lKToKKyAgICAgICAgKFdlYlRlc3RSdW5u
ZXI6OldlYlRlc3RSdW5uZXI6OnNob3VsZEludGVyY2VwdFBvc3RNZXNzYWdlKToKKyAgICAgICAg
KiBEdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9UZXN0UnVubmVyLmNwcDoK
KyAgICAgICAgKFdlYlRlc3RSdW5uZXI6OlRlc3RSdW5uZXI6OldvcmtRdWV1ZTo6fldvcmtRdWV1
ZSk6CisgICAgICAgIChXZWJUZXN0UnVubmVyKToKKyAgICAgICAgKFdlYlRlc3RSdW5uZXI6OlRl
c3RSdW5uZXI6OldvcmtRdWV1ZTo6cHJvY2Vzc1dvcmtTb29uKToKKyAgICAgICAgKFdlYlRlc3RS
dW5uZXI6OlRlc3RSdW5uZXI6OldvcmtRdWV1ZTo6cHJvY2Vzc1dvcmspOgorICAgICAgICAoV2Vi
VGVzdFJ1bm5lcjo6VGVzdFJ1bm5lcjo6V29ya1F1ZXVlOjpyZXNldCk6CisgICAgICAgIChXZWJU
ZXN0UnVubmVyOjpUZXN0UnVubmVyOjpXb3JrUXVldWU6OmFkZFdvcmspOgorICAgICAgICAoV2Vi
VGVzdFJ1bm5lcjo6VGVzdFJ1bm5lcjo6VGVzdFJ1bm5lcik6CisgICAgICAgIChXZWJUZXN0UnVu
bmVyOjpUZXN0UnVubmVyOjpyZXNldCk6CisgICAgICAgIChXZWJUZXN0UnVubmVyOjpUZXN0UnVu
bmVyOjpwb2xpY3lEZWxlZ2F0ZURvbmUpOgorICAgICAgICAoV2ViVGVzdFJ1bm5lcjo6VGVzdFJ1
bm5lcjo6c2hvdWxkSW50ZXJjZXB0UG9zdE1lc3NhZ2UpOgorICAgICAgICAoV2ViVGVzdFJ1bm5l
cjo6VGVzdFJ1bm5lcjo6d2FpdFVudGlsRG9uZSk6CisgICAgICAgIChXZWJUZXN0UnVubmVyOjpU
ZXN0UnVubmVyOjpub3RpZnlEb25lKToKKyAgICAgICAgKFdlYlRlc3RSdW5uZXI6OlRlc3RSdW5u
ZXI6OmNvbXBsZXRlTm90aWZ5RG9uZSk6CisgICAgICAgIChXb3JrSXRlbUJhY2tGb3J3YXJkKToK
KyAgICAgICAgKFdlYlRlc3RSdW5uZXI6OldvcmtJdGVtQmFja0ZvcndhcmQ6OldvcmtJdGVtQmFj
a0ZvcndhcmQpOgorICAgICAgICAoV2ViVGVzdFJ1bm5lcjo6V29ya0l0ZW1CYWNrRm9yd2FyZDo6
cnVuKToKKyAgICAgICAgKFdlYlRlc3RSdW5uZXI6OlRlc3RSdW5uZXI6OnF1ZXVlQmFja05hdmln
YXRpb24pOgorICAgICAgICAoV2ViVGVzdFJ1bm5lcjo6VGVzdFJ1bm5lcjo6cXVldWVGb3J3YXJk
TmF2aWdhdGlvbik6CisgICAgICAgIChXb3JrSXRlbVJlbG9hZCk6CisgICAgICAgIChXZWJUZXN0
UnVubmVyOjpXb3JrSXRlbVJlbG9hZDo6cnVuKToKKyAgICAgICAgKFdlYlRlc3RSdW5uZXI6OlRl
c3RSdW5uZXI6OnF1ZXVlUmVsb2FkKToKKyAgICAgICAgKFdvcmtJdGVtTG9hZGluZ1NjcmlwdCk6
CisgICAgICAgIChXZWJUZXN0UnVubmVyOjpXb3JrSXRlbUxvYWRpbmdTY3JpcHQ6OldvcmtJdGVt
TG9hZGluZ1NjcmlwdCk6CisgICAgICAgIChXZWJUZXN0UnVubmVyOjpXb3JrSXRlbUxvYWRpbmdT
Y3JpcHQ6OnJ1bik6CisgICAgICAgIChXb3JrSXRlbU5vbkxvYWRpbmdTY3JpcHQpOgorICAgICAg
ICAoV2ViVGVzdFJ1bm5lcjo6V29ya0l0ZW1Ob25Mb2FkaW5nU2NyaXB0OjpXb3JrSXRlbU5vbkxv
YWRpbmdTY3JpcHQpOgorICAgICAgICAoV2ViVGVzdFJ1bm5lcjo6V29ya0l0ZW1Ob25Mb2FkaW5n
U2NyaXB0OjpydW4pOgorICAgICAgICAoV2ViVGVzdFJ1bm5lcjo6VGVzdFJ1bm5lcjo6cXVldWVM
b2FkaW5nU2NyaXB0KToKKyAgICAgICAgKFdlYlRlc3RSdW5uZXI6OlRlc3RSdW5uZXI6OnF1ZXVl
Tm9uTG9hZGluZ1NjcmlwdCk6CisgICAgICAgIChXb3JrSXRlbUxvYWQpOgorICAgICAgICAoV2Vi
VGVzdFJ1bm5lcjo6V29ya0l0ZW1Mb2FkOjpXb3JrSXRlbUxvYWQpOgorICAgICAgICAoV2ViVGVz
dFJ1bm5lcjo6V29ya0l0ZW1Mb2FkOjpydW4pOgorICAgICAgICAoV2ViVGVzdFJ1bm5lcjo6VGVz
dFJ1bm5lcjo6cXVldWVMb2FkKToKKyAgICAgICAgKFdvcmtJdGVtTG9hZEhUTUxTdHJpbmcpOgor
ICAgICAgICAoV2ViVGVzdFJ1bm5lcjo6V29ya0l0ZW1Mb2FkSFRNTFN0cmluZzo6V29ya0l0ZW1M
b2FkSFRNTFN0cmluZyk6CisgICAgICAgIChXZWJUZXN0UnVubmVyOjpXb3JrSXRlbUxvYWRIVE1M
U3RyaW5nOjpydW4pOgorICAgICAgICAoV2ViVGVzdFJ1bm5lcjo6VGVzdFJ1bm5lcjo6cXVldWVM
b2FkSFRNTFN0cmluZyk6CisgICAgICAgIChXZWJUZXN0UnVubmVyOjpUZXN0UnVubmVyOjpsb2Nh
dGlvbkNoYW5nZURvbmUpOgorICAgICAgICAoV2ViVGVzdFJ1bm5lcjo6VGVzdFJ1bm5lcjo6d2lu
ZG93Q291bnQpOgorICAgICAgICAoV2ViVGVzdFJ1bm5lcjo6VGVzdFJ1bm5lcjo6c2V0Q2xvc2VS
ZW1haW5pbmdXaW5kb3dzV2hlbkNvbXBsZXRlKToKKyAgICAgICAgKFdlYlRlc3RSdW5uZXI6OlRl
c3RSdW5uZXI6OnNldEN1c3RvbVBvbGljeURlbGVnYXRlKToKKyAgICAgICAgKFdlYlRlc3RSdW5u
ZXI6OlRlc3RSdW5uZXI6OndhaXRGb3JQb2xpY3lEZWxlZ2F0ZSk6CisgICAgICAgICogRHVtcFJl
bmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvVGVzdFJ1bm5lci5oOgorICAgICAgICAo
VGVzdFJ1bm5lcik6CisgICAgICAgIChXb3JrSXRlbSk6CisgICAgICAgIChXZWJUZXN0UnVubmVy
OjpUZXN0UnVubmVyOjpXb3JrSXRlbTo6fldvcmtJdGVtKToKKyAgICAgICAgKFdvcmtRdWV1ZSk6
CisgICAgICAgIChXZWJUZXN0UnVubmVyOjpUZXN0UnVubmVyOjpXb3JrUXVldWU6OldvcmtRdWV1
ZSk6CisgICAgICAgIChXZWJUZXN0UnVubmVyOjpUZXN0UnVubmVyOjpXb3JrUXVldWU6OnNldEZy
b3plbik6CisgICAgICAgIChXZWJUZXN0UnVubmVyOjpUZXN0UnVubmVyOjpXb3JrUXVldWU6Omlz
RW1wdHkpOgorICAgICAgICAoV2ViVGVzdFJ1bm5lcjo6VGVzdFJ1bm5lcjo6V29ya1F1ZXVlOjp0
YXNrTGlzdCk6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFNoZWxsLmNw
cDoKKyAgICAgICAgKFRlc3RTaGVsbDo6aW5pdGlhbGl6ZSk6CisgICAgICAgIChUZXN0U2hlbGw6
OnJ1bkZpbGVUZXN0KToKKyAgICAgICAgKFRlc3RTaGVsbDo6bG9hZFVSTCk6CisgICAgICAgIChU
ZXN0U2hlbGw6OmNyZWF0ZU5ld1dpbmRvdyk6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvY2hy
b21pdW0vVGVzdFNoZWxsLmg6CisgICAgICAgIChUZXN0U2hlbGw6OnRlc3RSdW5uZXIpOgorICAg
ICAgICAoVGVzdFNoZWxsKToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9XZWJW
aWV3SG9zdC5jcHA6CisgICAgICAgIChXZWJWaWV3SG9zdDo6dGVzdEZpbmlzaGVkKToKKyAgICAg
ICAgKFdlYlZpZXdIb3N0Ojp0ZXN0VGltZWRPdXQpOgorICAgICAgICAoV2ViVmlld0hvc3Q6Omlz
QmVpbmdEZWJ1Z2dlZCk6CisgICAgICAgIChXZWJWaWV3SG9zdDo6bGF5b3V0VGVzdFRpbWVvdXQp
OgorICAgICAgICAoV2ViVmlld0hvc3Q6OmNsb3NlUmVtYWluaW5nV2luZG93cyk6CisgICAgICAg
IChXZWJWaWV3SG9zdDo6bmF2aWdhdGlvbkVudHJ5Q291bnQpOgorICAgICAgICAoV2ViVmlld0hv
c3Q6OndpbmRvd0NvdW50KToKKyAgICAgICAgKFdlYlZpZXdIb3N0OjpzZXRDdXN0b21Qb2xpY3lE
ZWxlZ2F0ZSk6CisgICAgICAgIChXZWJWaWV3SG9zdDo6d2FpdEZvclBvbGljeURlbGVnYXRlKToK
KyAgICAgICAgKFdlYlZpZXdIb3N0Ojpnb1RvT2Zmc2V0KToKKyAgICAgICAgKFdlYlZpZXdIb3N0
OjpyZWxvYWQpOgorICAgICAgICAoV2ViVmlld0hvc3Q6OmxvYWRVUkxGb3JGcmFtZSk6CisgICAg
ICAgIChXZWJWaWV3SG9zdDo6c2h1dGRvd24pOgorICAgICAgICAoV2ViVmlld0hvc3Q6OnRlc3RS
dW5uZXIpOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1dlYlZpZXdIb3N0Lmg6
CisgICAgICAgIChXZWJUZXN0UnVubmVyKToKKyAgICAgICAgKFdlYlZpZXdIb3N0KToKKwogMjAx
My0wMS0yOCAgVGltb3RoeSBMb2ggIDx0aW1sb2hAY2hyb21pdW0uY29tPgogCiAgICAgICAgIFJl
ZmFjdG9yIENoYW5nZUxvZyBhbmQgUHJlcGFyZUNoYW5nZUxvZyB0byB1c2UgRmlsZVN5c3RlbSBv
YmplY3RzCmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9EdW1wUmVuZGVyVHJlZS5n
eXBpIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvRHVtcFJlbmRlclRyZWUuZ3lwaQppbmRleCA2ZWMy
MjJmMGJhZDRlNjk4NDk4MzkyNTJkNWFiNjAwNWNiMjdlMDc0Li5lN2U3YTI3MmMwMTRkM2ZmNjkx
MWZkZmRjNDYyYTE1NDEwYzAzYmQxIDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9E
dW1wUmVuZGVyVHJlZS5neXBpCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL0R1bXBSZW5kZXJU
cmVlLmd5cGkKQEAgLTgsOCArOCw2IEBACiAgICAgICAgICAgICAnY2hyb21pdW0vRFJURGV2VG9v
bHNDbGllbnQuY3BwJywKICAgICAgICAgICAgICdjaHJvbWl1bS9EUlREZXZUb29sc0NsaWVudC5o
JywKICAgICAgICAgICAgICdjaHJvbWl1bS9EdW1wUmVuZGVyVHJlZS5jcHAnLAotICAgICAgICAg
ICAgJ2Nocm9taXVtL0RSVFRlc3RSdW5uZXIuY3BwJywKLSAgICAgICAgICAgICdjaHJvbWl1bS9E
UlRUZXN0UnVubmVyLmgnLAogICAgICAgICAgICAgJ2Nocm9taXVtL01vY2tDb25zdHJhaW50cy5j
cHAnLAogICAgICAgICAgICAgJ2Nocm9taXVtL01vY2tDb25zdHJhaW50cy5oJywKICAgICAgICAg
ICAgICdjaHJvbWl1bS9Nb2NrV2ViS2l0UGxhdGZvcm1TdXBwb3J0LmNwcCcsCmRpZmYgLS1naXQg
YS9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9EUlRUZXN0UnVubmVyLmNwcCBiL1Rvb2xz
L0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL0RSVFRlc3RSdW5uZXIuY3BwCmRlbGV0ZWQgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCA2YjdlYmFjNTk5Y2E5NWExNTM4MjkyNWRhNTkwMGM4ZjM2OGM2ZDE5
Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1Rvb2xzL0R1
bXBSZW5kZXJUcmVlL2Nocm9taXVtL0RSVFRlc3RSdW5uZXIuY3BwCisrKyAvZGV2L251bGwKQEAg
LTEsNDA0ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KLSAqIENvcHlyaWdodCAoQykgMjAxMCBQYXdlbCBIYWpkYW4gKHBo
YWpkYW4uanJAY2hyb21pdW0ub3JnKQotICogQ29weXJpZ2h0IChDKSAyMDEyIEFwcGxlIEluYy4g
QWxsIFJpZ2h0cyBSZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUK
LSAqIG1ldDoKLSAqCi0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogICAgICogUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotICogY29weXJp
Z2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lcgotICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZQotICogZGlzdHJpYnV0aW9uLgotICogICAgICogTmVpdGhlciB0aGUg
bmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwotICogY29udHJpYnV0b3Jz
IG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20K
LSAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Np
b24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhP
TERFUlMgQU5EIENPTlRSSUJVVE9SUwotICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgotICog
QSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRI
RSBDT1BZUklHSFQKLSAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAotICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
Ci0gKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkKLSAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiRFJUVGVzdFJ1
bm5lci5oIgotCi0jaW5jbHVkZSAiRFJURGV2VG9vbHNBZ2VudC5oIgotI2luY2x1ZGUgIlRhc2su
aCIKLSNpbmNsdWRlICJUZXN0U2hlbGwuaCIKLSNpbmNsdWRlICJXZWJBbmltYXRpb25Db250cm9s
bGVyLmgiCi0jaW5jbHVkZSAiV2ViQmluZGluZ3MuaCIKLSNpbmNsdWRlICJXZWJDb25zb2xlTWVz
c2FnZS5oIgotI2luY2x1ZGUgIldlYkRvY3VtZW50LmgiCi0jaW5jbHVkZSAiV2ViRWxlbWVudC5o
IgotI2luY2x1ZGUgIldlYkZpbmRPcHRpb25zLmgiCi0jaW5jbHVkZSAiV2ViRnJhbWUuaCIKLSNp
bmNsdWRlICJXZWJJREJGYWN0b3J5LmgiCi0jaW5jbHVkZSAiV2ViSW5wdXRFbGVtZW50LmgiCi0j
aW5jbHVkZSAiV2ViS2l0LmgiCi0jaW5jbHVkZSAiV2ViUHJpbnRQYXJhbXMuaCIKLSNpbmNsdWRl
ICJXZWJTY3JpcHRTb3VyY2UuaCIKLSNpbmNsdWRlICJXZWJTZWN1cml0eVBvbGljeS5oIgotI2lu
Y2x1ZGUgIldlYlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5oIgotI2luY2x1ZGUgIldlYlNldHRpbmdz
LmgiCi0jaW5jbHVkZSAiV2ViU3Vycm91bmRpbmdUZXh0LmgiCi0jaW5jbHVkZSAiV2ViVmlldy5o
IgotI2luY2x1ZGUgIldlYlZpZXdIb3N0LmgiCi0jaW5jbHVkZSAiV2ViV29ya2VySW5mby5oIgot
I2luY2x1ZGUgInY4L2luY2x1ZGUvdjguaCIKLSNpbmNsdWRlICJ3ZWJraXQvc3VwcG9ydC93ZWJr
aXRfc3VwcG9ydC5oIgotI2luY2x1ZGUgPGFsZ29yaXRobT4KLSNpbmNsdWRlIDxjY3R5cGU+Ci0j
aW5jbHVkZSA8Y3N0ZGxpYj4KLSNpbmNsdWRlIDxsaW1pdHM+Ci0jaW5jbHVkZSA8cHVibGljL1dl
YkRhdGEuaD4KLSNpbmNsdWRlIDxwdWJsaWMvV2ViU2l6ZS5oPgotI2luY2x1ZGUgPHB1YmxpYy9X
ZWJVUkwuaD4KLSNpbmNsdWRlIDxzc3RyZWFtPgotI2luY2x1ZGUgPHd0Zi9Pd25BcnJheVB0ci5o
PgotI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgotCi0jaWYgT1MoTElOVVgpIHx8IE9T
KEFORFJPSUQpCi0jaW5jbHVkZSAibGludXgvV2ViRm9udFJlbmRlcmluZy5oIgotI2VuZGlmCi0K
LXVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwotdXNpbmcgbmFtZXNwYWNlIFdlYktpdDsKLXVzaW5n
IG5hbWVzcGFjZSBXZWJUZXN0UnVubmVyOwotdXNpbmcgbmFtZXNwYWNlIHN0ZDsKLQotRFJUVGVz
dFJ1bm5lcjo6RFJUVGVzdFJ1bm5lcihUZXN0U2hlbGwqIHNoZWxsKQotICAgIDogbV9zaGVsbChz
aGVsbCkKLSAgICAsIG1fY2xvc2VSZW1haW5pbmdXaW5kb3dzKGZhbHNlKQotICAgICwgbV9zaG93
RGVidWdMYXllclRyZWUoZmFsc2UpCi0gICAgLCBtX3dvcmtRdWV1ZSh0aGlzKQotewotCi0gICAg
Ly8gSW5pdGlhbGl6ZSB0aGUgbWFwIHRoYXQgYXNzb2NpYXRlcyBtZXRob2RzIG9mIHRoaXMgY2xh
c3Mgd2l0aCB0aGUgbmFtZXMKLSAgICAvLyB0aGV5IHdpbGwgdXNlIHdoZW4gY2FsbGVkIGJ5IEph
dmFTY3JpcHQuIFRoZSBhY3R1YWwgYmluZGluZyBvZiB0aG9zZQotICAgIC8vIG5hbWVzIHRvIHRo
ZWlyIG1ldGhvZHMgd2lsbCBiZSBkb25lIGJ5IGNhbGxpbmcgYmluZFRvSmF2YVNjcmlwdCgpIChk
ZWZpbmVkCi0gICAgLy8gYnkgQ3BwQm91bmRDbGFzcywgdGhlIHBhcmVudCB0byBEUlRUZXN0UnVu
bmVyKS4KLSAgICBiaW5kTWV0aG9kKCJub3RpZnlEb25lIiwgJkRSVFRlc3RSdW5uZXI6Om5vdGlm
eURvbmUpOwotICAgIGJpbmRNZXRob2QoInF1ZXVlQmFja05hdmlnYXRpb24iLCAmRFJUVGVzdFJ1
bm5lcjo6cXVldWVCYWNrTmF2aWdhdGlvbik7Ci0gICAgYmluZE1ldGhvZCgicXVldWVGb3J3YXJk
TmF2aWdhdGlvbiIsICZEUlRUZXN0UnVubmVyOjpxdWV1ZUZvcndhcmROYXZpZ2F0aW9uKTsKLSAg
ICBiaW5kTWV0aG9kKCJxdWV1ZUxvYWRpbmdTY3JpcHQiLCAmRFJUVGVzdFJ1bm5lcjo6cXVldWVM
b2FkaW5nU2NyaXB0KTsKLSAgICBiaW5kTWV0aG9kKCJxdWV1ZUxvYWQiLCAmRFJUVGVzdFJ1bm5l
cjo6cXVldWVMb2FkKTsKLSAgICBiaW5kTWV0aG9kKCJxdWV1ZUxvYWRIVE1MU3RyaW5nIiwgJkRS
VFRlc3RSdW5uZXI6OnF1ZXVlTG9hZEhUTUxTdHJpbmcpOwotICAgIGJpbmRNZXRob2QoInF1ZXVl
Tm9uTG9hZGluZ1NjcmlwdCIsICZEUlRUZXN0UnVubmVyOjpxdWV1ZU5vbkxvYWRpbmdTY3JpcHQp
OwotICAgIGJpbmRNZXRob2QoInF1ZXVlUmVsb2FkIiwgJkRSVFRlc3RSdW5uZXI6OnF1ZXVlUmVs
b2FkKTsKLSAgICBiaW5kTWV0aG9kKCJzZXRDbG9zZVJlbWFpbmluZ1dpbmRvd3NXaGVuQ29tcGxl
dGUiLCAmRFJUVGVzdFJ1bm5lcjo6c2V0Q2xvc2VSZW1haW5pbmdXaW5kb3dzV2hlbkNvbXBsZXRl
KTsKLSAgICBiaW5kTWV0aG9kKCJzZXRDdXN0b21Qb2xpY3lEZWxlZ2F0ZSIsICZEUlRUZXN0UnVu
bmVyOjpzZXRDdXN0b21Qb2xpY3lEZWxlZ2F0ZSk7Ci0gICAgYmluZE1ldGhvZCgid2FpdEZvclBv
bGljeURlbGVnYXRlIiwgJkRSVFRlc3RSdW5uZXI6OndhaXRGb3JQb2xpY3lEZWxlZ2F0ZSk7Ci0g
ICAgYmluZE1ldGhvZCgid2FpdFVudGlsRG9uZSIsICZEUlRUZXN0UnVubmVyOjp3YWl0VW50aWxE
b25lKTsKLSAgICBiaW5kTWV0aG9kKCJ3aW5kb3dDb3VudCIsICZEUlRUZXN0UnVubmVyOjp3aW5k
b3dDb3VudCk7Ci0KLQotICAgIC8vIFNoYXJlZCBwcm9wZXJ0aWVzLgotICAgIC8vIHdlYkhpc3Rv
cnlJdGVtQ291bnQgaXMgdXNlZCBieSB0ZXN0cyBpbiBMYXlvdXRUZXN0c1xodHRwXHRlc3RzXGhp
c3RvcnkKLSAgICBiaW5kUHJvcGVydHkoIndlYkhpc3RvcnlJdGVtQ291bnQiLCAmbV93ZWJIaXN0
b3J5SXRlbUNvdW50KTsKLSAgICBiaW5kUHJvcGVydHkoImludGVyY2VwdFBvc3RNZXNzYWdlIiwg
Jm1faW50ZXJjZXB0UG9zdE1lc3NhZ2UpOwotfQotCi1EUlRUZXN0UnVubmVyOjp+RFJUVGVzdFJ1
bm5lcigpCi17Ci19Ci0KLURSVFRlc3RSdW5uZXI6OldvcmtRdWV1ZTo6fldvcmtRdWV1ZSgpCi17
Ci0gICAgcmVzZXQoKTsKLX0KLQotdm9pZCBEUlRUZXN0UnVubmVyOjpXb3JrUXVldWU6OnByb2Nl
c3NXb3JrU29vbigpCi17Ci0gICAgaWYgKG1fY29udHJvbGxlci0+dG9wTG9hZGluZ0ZyYW1lKCkp
Ci0gICAgICAgIHJldHVybjsKLQotICAgIGlmICghbV9xdWV1ZS5pc0VtcHR5KCkpIHsKLSAgICAg
ICAgLy8gV2UgZGVsYXkgcHJvY2Vzc2luZyBxdWV1ZWQgd29yayB0byBhdm9pZCByZWN1cnNpb24g
cHJvYmxlbXMuCi0gICAgICAgIHBvc3RUYXNrKG5ldyBXb3JrUXVldWVUYXNrKHRoaXMpKTsKLSAg
ICB9IGVsc2UgaWYgKCFtX2NvbnRyb2xsZXItPm1fd2FpdFVudGlsRG9uZSkKLSAgICAgICAgbV9j
b250cm9sbGVyLT5tX3NoZWxsLT50ZXN0RmluaXNoZWQoKTsKLX0KLQotdm9pZCBEUlRUZXN0UnVu
bmVyOjpXb3JrUXVldWU6OnByb2Nlc3NXb3JrKCkKLXsKLSAgICBUZXN0U2hlbGwqIHNoZWxsID0g
bV9jb250cm9sbGVyLT5tX3NoZWxsOwotICAgIC8vIFF1aXQgZG9pbmcgd29yayBvbmNlIGEgbG9h
ZCBpcyBpbiBwcm9ncmVzcy4KLSAgICB3aGlsZSAoIW1fcXVldWUuaXNFbXB0eSgpKSB7Ci0gICAg
ICAgIGJvb2wgc3RhcnRlZExvYWQgPSBtX3F1ZXVlLmZpcnN0KCktPnJ1bihzaGVsbCk7Ci0gICAg
ICAgIGRlbGV0ZSBtX3F1ZXVlLnRha2VGaXJzdCgpOwotICAgICAgICBpZiAoc3RhcnRlZExvYWQp
Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgaWYgKCFtX2NvbnRyb2xsZXItPm1f
d2FpdFVudGlsRG9uZSAmJiAhbV9jb250cm9sbGVyLT50b3BMb2FkaW5nRnJhbWUoKSkKLSAgICAg
ICAgc2hlbGwtPnRlc3RGaW5pc2hlZCgpOwotfQotCi12b2lkIERSVFRlc3RSdW5uZXI6OldvcmtR
dWV1ZTo6cmVzZXQoKQotewotICAgIG1fZnJvemVuID0gZmFsc2U7Ci0gICAgd2hpbGUgKCFtX3F1
ZXVlLmlzRW1wdHkoKSkKLSAgICAgICAgZGVsZXRlIG1fcXVldWUudGFrZUZpcnN0KCk7Ci19Ci0K
LXZvaWQgRFJUVGVzdFJ1bm5lcjo6V29ya1F1ZXVlOjphZGRXb3JrKFdvcmtJdGVtKiB3b3JrKQot
ewotICAgIGlmIChtX2Zyb3plbikgewotICAgICAgICBkZWxldGUgd29yazsKLSAgICAgICAgcmV0
dXJuOwotICAgIH0KLSAgICBtX3F1ZXVlLmFwcGVuZCh3b3JrKTsKLX0KLQotdm9pZCBEUlRUZXN0
UnVubmVyOjp3YWl0VW50aWxEb25lKGNvbnN0IENwcEFyZ3VtZW50TGlzdCYsIENwcFZhcmlhbnQq
IHJlc3VsdCkKLXsKLSAgICBpZiAoIXdlYmtpdF9zdXBwb3J0OjpCZWluZ0RlYnVnZ2VkKCkpCi0g
ICAgICAgIHBvc3REZWxheWVkVGFzayhuZXcgTm90aWZ5RG9uZVRpbWVkT3V0VGFzayh0aGlzKSwg
bV9zaGVsbC0+bGF5b3V0VGVzdFRpbWVvdXQoKSk7Ci0gICAgbV93YWl0VW50aWxEb25lID0gdHJ1
ZTsKLSAgICByZXN1bHQtPnNldE51bGwoKTsKLX0KLQotdm9pZCBEUlRUZXN0UnVubmVyOjpub3Rp
ZnlEb25lKGNvbnN0IENwcEFyZ3VtZW50TGlzdCYsIENwcFZhcmlhbnQqIHJlc3VsdCkKLXsKLSAg
ICAvLyBUZXN0IGRpZG4ndCB0aW1lb3V0LiBLaWxsIHRoZSB0aW1lb3V0IHRpbWVyLgotICAgIHRh
c2tMaXN0KCktPnJldm9rZUFsbCgpOwotCi0gICAgY29tcGxldGVOb3RpZnlEb25lKGZhbHNlKTsK
LSAgICByZXN1bHQtPnNldE51bGwoKTsKLX0KLQotdm9pZCBEUlRUZXN0UnVubmVyOjpjb21wbGV0
ZU5vdGlmeURvbmUoYm9vbCBpc1RpbWVvdXQpCi17Ci0gICAgaWYgKG1fd2FpdFVudGlsRG9uZSAm
JiAhdG9wTG9hZGluZ0ZyYW1lKCkgJiYgbV93b3JrUXVldWUuaXNFbXB0eSgpKSB7Ci0gICAgICAg
IGlmIChpc1RpbWVvdXQpCi0gICAgICAgICAgICBtX3NoZWxsLT50ZXN0VGltZWRPdXQoKTsKLSAg
ICAgICAgZWxzZQotICAgICAgICAgICAgbV9zaGVsbC0+dGVzdEZpbmlzaGVkKCk7Ci0gICAgfQot
ICAgIG1fd2FpdFVudGlsRG9uZSA9IGZhbHNlOwotfQotCi1jbGFzcyBXb3JrSXRlbUJhY2tGb3J3
YXJkIDogcHVibGljIERSVFRlc3RSdW5uZXI6OldvcmtJdGVtIHsKLXB1YmxpYzoKLSAgICBXb3Jr
SXRlbUJhY2tGb3J3YXJkKGludCBkaXN0YW5jZSkgOiBtX2Rpc3RhbmNlKGRpc3RhbmNlKSB7IH0K
LSAgICBib29sIHJ1bihUZXN0U2hlbGwqIHNoZWxsKQotICAgIHsKLSAgICAgICAgc2hlbGwtPmdv
VG9PZmZzZXQobV9kaXN0YW5jZSk7Ci0gICAgICAgIHJldHVybiB0cnVlOyAvLyBGSVhNRTogRGlk
IGl0IHJlYWxseSBzdGFydCBhIG5hdmlnYXRpb24/Ci0gICAgfQotCi1wcml2YXRlOgotICAgIGlu
dCBtX2Rpc3RhbmNlOwotfTsKLQotdm9pZCBEUlRUZXN0UnVubmVyOjpxdWV1ZUJhY2tOYXZpZ2F0
aW9uKGNvbnN0IENwcEFyZ3VtZW50TGlzdCYgYXJndW1lbnRzLCBDcHBWYXJpYW50KiByZXN1bHQp
Ci17Ci0gICAgaWYgKGFyZ3VtZW50cy5zaXplKCkgPiAwICYmIGFyZ3VtZW50c1swXS5pc051bWJl
cigpKQotICAgICAgICBtX3dvcmtRdWV1ZS5hZGRXb3JrKG5ldyBXb3JrSXRlbUJhY2tGb3J3YXJk
KC1hcmd1bWVudHNbMF0udG9JbnQzMigpKSk7Ci0gICAgcmVzdWx0LT5zZXROdWxsKCk7Ci19Ci0K
LXZvaWQgRFJUVGVzdFJ1bm5lcjo6cXVldWVGb3J3YXJkTmF2aWdhdGlvbihjb25zdCBDcHBBcmd1
bWVudExpc3QmIGFyZ3VtZW50cywgQ3BwVmFyaWFudCogcmVzdWx0KQotewotICAgIGlmIChhcmd1
bWVudHMuc2l6ZSgpID4gMCAmJiBhcmd1bWVudHNbMF0uaXNOdW1iZXIoKSkKLSAgICAgICAgbV93
b3JrUXVldWUuYWRkV29yayhuZXcgV29ya0l0ZW1CYWNrRm9yd2FyZChhcmd1bWVudHNbMF0udG9J
bnQzMigpKSk7Ci0gICAgcmVzdWx0LT5zZXROdWxsKCk7Ci19Ci0KLWNsYXNzIFdvcmtJdGVtUmVs
b2FkIDogcHVibGljIERSVFRlc3RSdW5uZXI6OldvcmtJdGVtIHsKLXB1YmxpYzoKLSAgICBib29s
IHJ1bihUZXN0U2hlbGwqIHNoZWxsKQotICAgIHsKLSAgICAgICAgc2hlbGwtPnJlbG9hZCgpOwot
ICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICB9Ci19OwotCi12b2lkIERSVFRlc3RSdW5uZXI6OnF1
ZXVlUmVsb2FkKGNvbnN0IENwcEFyZ3VtZW50TGlzdCYsIENwcFZhcmlhbnQqIHJlc3VsdCkKLXsK
LSAgICBtX3dvcmtRdWV1ZS5hZGRXb3JrKG5ldyBXb3JrSXRlbVJlbG9hZCk7Ci0gICAgcmVzdWx0
LT5zZXROdWxsKCk7Ci19Ci0KLWNsYXNzIFdvcmtJdGVtTG9hZGluZ1NjcmlwdCA6IHB1YmxpYyBE
UlRUZXN0UnVubmVyOjpXb3JrSXRlbSB7Ci1wdWJsaWM6Ci0gICAgV29ya0l0ZW1Mb2FkaW5nU2Ny
aXB0KGNvbnN0IHN0cmluZyYgc2NyaXB0KSA6IG1fc2NyaXB0KHNjcmlwdCkgeyB9Ci0gICAgYm9v
bCBydW4oVGVzdFNoZWxsKiBzaGVsbCkKLSAgICB7Ci0gICAgICAgIHNoZWxsLT53ZWJWaWV3KCkt
Pm1haW5GcmFtZSgpLT5leGVjdXRlU2NyaXB0KFdlYlNjcmlwdFNvdXJjZShXZWJTdHJpbmc6OmZy
b21VVEY4KG1fc2NyaXB0KSkpOwotICAgICAgICByZXR1cm4gdHJ1ZTsgLy8gRklYTUU6IERpZCBp
dCByZWFsbHkgc3RhcnQgYSBuYXZpZ2F0aW9uPwotICAgIH0KLQotcHJpdmF0ZToKLSAgICBzdHJp
bmcgbV9zY3JpcHQ7Ci19OwotCi1jbGFzcyBXb3JrSXRlbU5vbkxvYWRpbmdTY3JpcHQgOiBwdWJs
aWMgRFJUVGVzdFJ1bm5lcjo6V29ya0l0ZW0gewotcHVibGljOgotICAgIFdvcmtJdGVtTm9uTG9h
ZGluZ1NjcmlwdChjb25zdCBzdHJpbmcmIHNjcmlwdCkgOiBtX3NjcmlwdChzY3JpcHQpIHsgfQot
ICAgIGJvb2wgcnVuKFRlc3RTaGVsbCogc2hlbGwpCi0gICAgewotICAgICAgICBzaGVsbC0+d2Vi
VmlldygpLT5tYWluRnJhbWUoKS0+ZXhlY3V0ZVNjcmlwdChXZWJTY3JpcHRTb3VyY2UoV2ViU3Ry
aW5nOjpmcm9tVVRGOChtX3NjcmlwdCkpKTsKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0K
LQotcHJpdmF0ZToKLSAgICBzdHJpbmcgbV9zY3JpcHQ7Ci19OwotCi12b2lkIERSVFRlc3RSdW5u
ZXI6OnF1ZXVlTG9hZGluZ1NjcmlwdChjb25zdCBDcHBBcmd1bWVudExpc3QmIGFyZ3VtZW50cywg
Q3BwVmFyaWFudCogcmVzdWx0KQotewotICAgIGlmIChhcmd1bWVudHMuc2l6ZSgpID4gMCAmJiBh
cmd1bWVudHNbMF0uaXNTdHJpbmcoKSkKLSAgICAgICAgbV93b3JrUXVldWUuYWRkV29yayhuZXcg
V29ya0l0ZW1Mb2FkaW5nU2NyaXB0KGFyZ3VtZW50c1swXS50b1N0cmluZygpKSk7Ci0gICAgcmVz
dWx0LT5zZXROdWxsKCk7Ci19Ci0KLXZvaWQgRFJUVGVzdFJ1bm5lcjo6cXVldWVOb25Mb2FkaW5n
U2NyaXB0KGNvbnN0IENwcEFyZ3VtZW50TGlzdCYgYXJndW1lbnRzLCBDcHBWYXJpYW50KiByZXN1
bHQpCi17Ci0gICAgaWYgKGFyZ3VtZW50cy5zaXplKCkgPiAwICYmIGFyZ3VtZW50c1swXS5pc1N0
cmluZygpKQotICAgICAgICBtX3dvcmtRdWV1ZS5hZGRXb3JrKG5ldyBXb3JrSXRlbU5vbkxvYWRp
bmdTY3JpcHQoYXJndW1lbnRzWzBdLnRvU3RyaW5nKCkpKTsKLSAgICByZXN1bHQtPnNldE51bGwo
KTsKLX0KLQotY2xhc3MgV29ya0l0ZW1Mb2FkIDogcHVibGljIERSVFRlc3RSdW5uZXI6OldvcmtJ
dGVtIHsKLXB1YmxpYzoKLSAgICBXb3JrSXRlbUxvYWQoY29uc3QgV2ViVVJMJiB1cmwsIGNvbnN0
IFdlYlN0cmluZyYgdGFyZ2V0KQotICAgICAgICA6IG1fdXJsKHVybCkKLSAgICAgICAgLCBtX3Rh
cmdldCh0YXJnZXQpIHsgfQotICAgIGJvb2wgcnVuKFRlc3RTaGVsbCogc2hlbGwpCi0gICAgewot
ICAgICAgICBzaGVsbC0+d2ViVmlld0hvc3QoKS0+bG9hZFVSTEZvckZyYW1lKG1fdXJsLCBtX3Rh
cmdldCk7Ci0gICAgICAgIHJldHVybiB0cnVlOyAvLyBGSVhNRTogRGlkIGl0IHJlYWxseSBzdGFy
dCBhIG5hdmlnYXRpb24/Ci0gICAgfQotCi1wcml2YXRlOgotICAgIFdlYlVSTCBtX3VybDsKLSAg
ICBXZWJTdHJpbmcgbV90YXJnZXQ7Ci19OwotCi12b2lkIERSVFRlc3RSdW5uZXI6OnF1ZXVlTG9h
ZChjb25zdCBDcHBBcmd1bWVudExpc3QmIGFyZ3VtZW50cywgQ3BwVmFyaWFudCogcmVzdWx0KQot
ewotICAgIGlmIChhcmd1bWVudHMuc2l6ZSgpID4gMCAmJiBhcmd1bWVudHNbMF0uaXNTdHJpbmco
KSkgewotICAgICAgICAvLyBGSVhNRTogSW1wbGVtZW50IFdlYlVSTDo6cmVzb2x2ZSgpIGFuZCBh
dm9pZCBHVVJMLgotICAgICAgICBHVVJMIGN1cnJlbnRVUkwgPSBtX3NoZWxsLT53ZWJWaWV3KCkt
Pm1haW5GcmFtZSgpLT5kb2N1bWVudCgpLnVybCgpOwotICAgICAgICBHVVJMIGZ1bGxVUkwgPSBj
dXJyZW50VVJMLlJlc29sdmUoYXJndW1lbnRzWzBdLnRvU3RyaW5nKCkpOwotCi0gICAgICAgIHN0
cmluZyB0YXJnZXQgPSAiIjsKLSAgICAgICAgaWYgKGFyZ3VtZW50cy5zaXplKCkgPiAxICYmIGFy
Z3VtZW50c1sxXS5pc1N0cmluZygpKQotICAgICAgICAgICAgdGFyZ2V0ID0gYXJndW1lbnRzWzFd
LnRvU3RyaW5nKCk7Ci0KLSAgICAgICAgbV93b3JrUXVldWUuYWRkV29yayhuZXcgV29ya0l0ZW1M
b2FkKGZ1bGxVUkwsIFdlYlN0cmluZzo6ZnJvbVVURjgodGFyZ2V0KSkpOwotICAgIH0KLSAgICBy
ZXN1bHQtPnNldE51bGwoKTsKLX0KLQotY2xhc3MgV29ya0l0ZW1Mb2FkSFRNTFN0cmluZyA6IHB1
YmxpYyBEUlRUZXN0UnVubmVyOjpXb3JrSXRlbSAgewotcHVibGljOgotICAgIFdvcmtJdGVtTG9h
ZEhUTUxTdHJpbmcoY29uc3Qgc3RkOjpzdHJpbmcmIGh0bWwsIGNvbnN0IFdlYlVSTCYgYmFzZVVS
TCkKLSAgICAgICAgOiBtX2h0bWwoaHRtbCkKLSAgICAgICAgLCBtX2Jhc2VVUkwoYmFzZVVSTCkg
eyB9Ci0gICAgV29ya0l0ZW1Mb2FkSFRNTFN0cmluZyhjb25zdCBzdGQ6OnN0cmluZyYgaHRtbCwg
Y29uc3QgV2ViVVJMJiBiYXNlVVJMLCBjb25zdCBXZWJVUkwmIHVucmVhY2hhYmxlVVJMKQotICAg
ICAgICA6IG1faHRtbChodG1sKQotICAgICAgICAsIG1fYmFzZVVSTChiYXNlVVJMKQotICAgICAg
ICAsIG1fdW5yZWFjaGFibGVVUkwodW5yZWFjaGFibGVVUkwpIHsgfQotICAgIGJvb2wgcnVuKFRl
c3RTaGVsbCogc2hlbGwpCi0gICAgewotICAgICAgICBzaGVsbC0+d2ViVmlldygpLT5tYWluRnJh
bWUoKS0+bG9hZEhUTUxTdHJpbmcoCi0gICAgICAgICAgICBXZWJLaXQ6OldlYkRhdGEobV9odG1s
LmRhdGEoKSwgbV9odG1sLmxlbmd0aCgpKSwgbV9iYXNlVVJMLCBtX3VucmVhY2hhYmxlVVJMKTsK
LSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgfQotCi1wcml2YXRlOgotICAgIHN0ZDo6c3RyaW5n
IG1faHRtbDsKLSAgICBXZWJVUkwgbV9iYXNlVVJMOwotICAgIFdlYlVSTCBtX3VucmVhY2hhYmxl
VVJMOwotfTsKLQotdm9pZCBEUlRUZXN0UnVubmVyOjpxdWV1ZUxvYWRIVE1MU3RyaW5nKGNvbnN0
IENwcEFyZ3VtZW50TGlzdCYgYXJndW1lbnRzLCBDcHBWYXJpYW50KiByZXN1bHQpCi17Ci0gICAg
aWYgKGFyZ3VtZW50cy5zaXplKCkgPiAwICYmIGFyZ3VtZW50c1swXS5pc1N0cmluZygpKSB7Ci0g
ICAgICAgIHN0cmluZyBodG1sID0gYXJndW1lbnRzWzBdLnRvU3RyaW5nKCk7Ci0gICAgICAgIFdl
YlVSTCBiYXNlVVJMKEdVUkwoIiIpKTsKLSAgICAgICAgaWYgKGFyZ3VtZW50cy5zaXplKCkgPiAx
ICYmIGFyZ3VtZW50c1sxXS5pc1N0cmluZygpKQotICAgICAgICAgICAgYmFzZVVSTCA9IFdlYlVS
TChHVVJMKGFyZ3VtZW50c1sxXS50b1N0cmluZygpKSk7Ci0gICAgICAgIGlmIChhcmd1bWVudHMu
c2l6ZSgpID4gMiAmJiBhcmd1bWVudHNbMl0uaXNTdHJpbmcoKSkKLSAgICAgICAgICAgIG1fd29y
a1F1ZXVlLmFkZFdvcmsobmV3IFdvcmtJdGVtTG9hZEhUTUxTdHJpbmcoaHRtbCwgYmFzZVVSTCwg
V2ViVVJMKEdVUkwoYXJndW1lbnRzWzJdLnRvU3RyaW5nKCkpKSkpOwotICAgICAgICBlbHNlCi0g
ICAgICAgICAgICBtX3dvcmtRdWV1ZS5hZGRXb3JrKG5ldyBXb3JrSXRlbUxvYWRIVE1MU3RyaW5n
KGh0bWwsIGJhc2VVUkwpKTsKLSAgICB9Ci0gICAgcmVzdWx0LT5zZXROdWxsKCk7Ci19Ci0KLXZv
aWQgRFJUVGVzdFJ1bm5lcjo6cmVzZXQoKQotewotICAgIFRlc3RSdW5uZXI6OnJlc2V0KCk7Ci0g
ICAgbV93YWl0VW50aWxEb25lID0gZmFsc2U7Ci0gICAgbV93ZWJIaXN0b3J5SXRlbUNvdW50LnNl
dCgwKTsKLSAgICBtX2ludGVyY2VwdFBvc3RNZXNzYWdlLnNldChmYWxzZSk7Ci0KLSAgICBpZiAo
bV9jbG9zZVJlbWFpbmluZ1dpbmRvd3MpCi0gICAgICAgIG1fc2hlbGwtPmNsb3NlUmVtYWluaW5n
V2luZG93cygpOwotICAgIGVsc2UKLSAgICAgICAgbV9jbG9zZVJlbWFpbmluZ1dpbmRvd3MgPSB0
cnVlOwotICAgIG1fd29ya1F1ZXVlLnJlc2V0KCk7Ci19Ci0KLXZvaWQgRFJUVGVzdFJ1bm5lcjo6
bG9jYXRpb25DaGFuZ2VEb25lKCkKLXsKLSAgICBtX3dlYkhpc3RvcnlJdGVtQ291bnQuc2V0KG1f
c2hlbGwtPm5hdmlnYXRpb25FbnRyeUNvdW50KCkpOwotCi0gICAgLy8gTm8gbW9yZSBuZXcgd29y
ayBhZnRlciB0aGUgZmlyc3QgY29tcGxldGUgbG9hZC4KLSAgICBtX3dvcmtRdWV1ZS5zZXRGcm96
ZW4odHJ1ZSk7Ci0KLSAgICBpZiAoIW1fd2FpdFVudGlsRG9uZSkKLSAgICAgICAgbV93b3JrUXVl
dWUucHJvY2Vzc1dvcmtTb29uKCk7Ci19Ci0KLXZvaWQgRFJUVGVzdFJ1bm5lcjo6cG9saWN5RGVs
ZWdhdGVEb25lKCkKLXsKLSAgICBBU1NFUlQobV93YWl0VW50aWxEb25lKTsKLSAgICBtX3NoZWxs
LT50ZXN0RmluaXNoZWQoKTsKLSAgICBtX3dhaXRVbnRpbERvbmUgPSBmYWxzZTsKLX0KLQotdm9p
ZCBEUlRUZXN0UnVubmVyOjp3aW5kb3dDb3VudChjb25zdCBDcHBBcmd1bWVudExpc3QmLCBDcHBW
YXJpYW50KiByZXN1bHQpCi17Ci0gICAgcmVzdWx0LT5zZXQoc3RhdGljX2Nhc3Q8aW50PihtX3No
ZWxsLT53aW5kb3dDb3VudCgpKSk7Ci19Ci0KLXZvaWQgRFJUVGVzdFJ1bm5lcjo6c2V0Q2xvc2VS
ZW1haW5pbmdXaW5kb3dzV2hlbkNvbXBsZXRlKGNvbnN0IENwcEFyZ3VtZW50TGlzdCYgYXJndW1l
bnRzLCBDcHBWYXJpYW50KiByZXN1bHQpCi17Ci0gICAgaWYgKGFyZ3VtZW50cy5zaXplKCkgPiAw
ICYmIGFyZ3VtZW50c1swXS5pc0Jvb2woKSkKLSAgICAgICAgbV9jbG9zZVJlbWFpbmluZ1dpbmRv
d3MgPSBhcmd1bWVudHNbMF0udmFsdWUuYm9vbFZhbHVlOwotICAgIHJlc3VsdC0+c2V0TnVsbCgp
OwotfQotCi12b2lkIERSVFRlc3RSdW5uZXI6OnNldEN1c3RvbVBvbGljeURlbGVnYXRlKGNvbnN0
IENwcEFyZ3VtZW50TGlzdCYgYXJndW1lbnRzLCBDcHBWYXJpYW50KiByZXN1bHQpCi17Ci0gICAg
aWYgKGFyZ3VtZW50cy5zaXplKCkgPiAwICYmIGFyZ3VtZW50c1swXS5pc0Jvb2woKSkgewotICAg
ICAgICBib29sIGVuYWJsZSA9IGFyZ3VtZW50c1swXS52YWx1ZS5ib29sVmFsdWU7Ci0gICAgICAg
IGJvb2wgcGVybWlzc2l2ZSA9IGZhbHNlOwotICAgICAgICBpZiAoYXJndW1lbnRzLnNpemUoKSA+
IDEgJiYgYXJndW1lbnRzWzFdLmlzQm9vbCgpKQotICAgICAgICAgICAgcGVybWlzc2l2ZSA9IGFy
Z3VtZW50c1sxXS52YWx1ZS5ib29sVmFsdWU7Ci0gICAgICAgIG1fc2hlbGwtPndlYlZpZXdIb3N0
KCktPnNldEN1c3RvbVBvbGljeURlbGVnYXRlKGVuYWJsZSwgcGVybWlzc2l2ZSk7Ci0gICAgfQot
ICAgIHJlc3VsdC0+c2V0TnVsbCgpOwotfQotCi12b2lkIERSVFRlc3RSdW5uZXI6OndhaXRGb3JQ
b2xpY3lEZWxlZ2F0ZShjb25zdCBDcHBBcmd1bWVudExpc3QmLCBDcHBWYXJpYW50KiByZXN1bHQp
Ci17Ci0gICAgbV9zaGVsbC0+d2ViVmlld0hvc3QoKS0+d2FpdEZvclBvbGljeURlbGVnYXRlKCk7
Ci0gICAgbV93YWl0VW50aWxEb25lID0gdHJ1ZTsKLSAgICByZXN1bHQtPnNldE51bGwoKTsKLX0K
ZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL0RSVFRlc3RSdW5uZXIu
aCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL0RSVFRlc3RSdW5uZXIuaApkZWxldGVk
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNmI3YjNmODkxMmExMzgyN2UyYjNhMTEwMmIzYTJhMmVk
MGZmNGIwMS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9U
b29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9EUlRUZXN0UnVubmVyLmgKKysrIC9kZXYvbnVs
bApAQCAtMSwxOTYgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICogQ29weXJpZ2h0IChDKSAyMDEwIFBhd2VsIEhhamRh
biAocGhhamRhbi5qckBjaHJvbWl1bS5vcmcpCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUg
SW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
IGFyZQotICogbWV0OgotICoKLSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAgICAgKiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0gKiBj
b3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyCi0gKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlCi0gKiBkaXN0cmlidXRpb24uCi0gKiAgICAgKiBOZWl0aGVy
IHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0gKiBjb250cmli
dXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQg
ZnJvbQotICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVy
bWlzc2lvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklH
SFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0gKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywg
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
Ci0gKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgVEhFIENPUFlSSUdIVAotICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0gKiBTUEVDSUFMLCBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwKLSAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0g
KiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgotICovCi0KLS8qCi0gIERSVFRlc3RSdW5uZXIgY2xhc3M6Ci0gIEJvdW5k
IHRvIGEgSmF2YVNjcmlwdCB3aW5kb3cudGVzdFJ1bm5lciBvYmplY3QgdXNpbmcgdGhlCi0gIENw
cEJvdW5kQ2xhc3M6OmJpbmRUb0phdmFzY3JpcHQoKSwgdGhpcyBhbGxvd3MgbGF5b3V0IHRlc3Rz
IHRoYXQgYXJlIHJ1biBpbgotICB0aGUgdGVzdF9zaGVsbCAob3IsIGluIHByaW5jaXBsZSwgYW55
IHdlYiBwYWdlIGxvYWRlZCBpbnRvIGEgY2xpZW50IGFwcCBidWlsdAotICB3aXRoIHRoaXMgY2xh
c3MpIHRvIGNvbnRyb2wgdmFyaW91cyBhc3BlY3RzIG9mIGhvdyB0aGUgdGVzdHMgYXJlIHJ1biBh
bmQgd2hhdAotICBzb3J0IG9mIG91dHB1dCB0aGV5IHByb2R1Y2UuCi0qLwotCi0jaWZuZGVmIERS
VFRlc3RSdW5uZXJfaAotI2RlZmluZSBEUlRUZXN0UnVubmVyX2gKLQotI2luY2x1ZGUgIlRlc3RS
dW5uZXIvc3JjL1Rlc3RSdW5uZXIuaCIKLSNpbmNsdWRlICJXZWJBcnJheUJ1ZmZlclZpZXcuaCIK
LSNpbmNsdWRlICJXZWJUYXNrLmgiCi0jaW5jbHVkZSA8cHVibGljL1dlYlN0cmluZy5oPgotI2lu
Y2x1ZGUgPHB1YmxpYy9XZWJVUkwuaD4KLSNpbmNsdWRlIDx3dGYvRGVxdWUuaD4KLSNpbmNsdWRl
IDx3dGYvT3duUHRyLmg+Ci0KLW5hbWVzcGFjZSB3ZWJraXRfc3VwcG9ydCB7Ci1jbGFzcyBTY29w
ZWRUZW1wRGlyZWN0b3J5OwotfQotCi0KLWNsYXNzIFRlc3RTaGVsbDsKLQotdXNpbmcgV2ViVGVz
dFJ1bm5lcjo6Q3BwQXJndW1lbnRMaXN0OwotdXNpbmcgV2ViVGVzdFJ1bm5lcjo6Q3BwVmFyaWFu
dDsKLXVzaW5nIFdlYlRlc3RSdW5uZXI6OldlYk1ldGhvZFRhc2s7Ci11c2luZyBXZWJUZXN0UnVu
bmVyOjpXZWJUYXNrTGlzdDsKLQotY2xhc3MgRFJUVGVzdFJ1bm5lciA6IHB1YmxpYyBXZWJUZXN0
UnVubmVyOjpUZXN0UnVubmVyIHsKLXB1YmxpYzoKLSAgICAvLyBCdWlsZHMgdGhlIHByb3BlcnR5
IGFuZCBtZXRob2QgbGlzdHMgbmVlZGVkIHRvIGJpbmQgdGhpcyBjbGFzcyB0byBhIEpTCi0gICAg
Ly8gb2JqZWN0LgotICAgIERSVFRlc3RSdW5uZXIoVGVzdFNoZWxsKik7Ci0KLSAgICB2aXJ0dWFs
IH5EUlRUZXN0UnVubmVyKCk7Ci0KLSAgICAvLyBGdW5jdGlvbnMgZm9yIGRlYWxpbmcgd2l0aCB3
aW5kb3dzLiBCeSBkZWZhdWx0IHdlIGJsb2NrIGFsbCBuZXcgd2luZG93cy4KLSAgICB2b2lkIHdp
bmRvd0NvdW50KGNvbnN0IENwcEFyZ3VtZW50TGlzdCYsIENwcFZhcmlhbnQqKTsKLSAgICB2b2lk
IHNldENsb3NlUmVtYWluaW5nV2luZG93c1doZW5Db21wbGV0ZShjb25zdCBDcHBBcmd1bWVudExp
c3QmLCBDcHBWYXJpYW50Kik7Ci0KLSAgICAvLyBCeSBkZWZhdWx0LCB0ZXN0cyBlbmQgd2hlbiBw
YWdlIGxvYWQgaXMgY29tcGxldGUuIFRoZXNlIG1ldGhvZHMgYXJlIHVzZWQKLSAgICAvLyB0byBk
ZWxheSB0aGUgY29tcGxldGlvbiBvZiB0aGUgdGVzdCB1bnRpbCBub3RpZnlEb25lIGlzIGNhbGxl
ZC4KLSAgICB2b2lkIHdhaXRVbnRpbERvbmUoY29uc3QgQ3BwQXJndW1lbnRMaXN0JiwgQ3BwVmFy
aWFudCopOwotICAgIHZvaWQgbm90aWZ5RG9uZShjb25zdCBDcHBBcmd1bWVudExpc3QmLCBDcHBW
YXJpYW50Kik7Ci0KLSAgICAvLyBNZXRob2RzIGZvciBhZGRpbmcgYWN0aW9ucyB0byB0aGUgd29y
ayBxdWV1ZS4gVXNlZCBpbiBjb25qdW5jdGlvbiB3aXRoCi0gICAgLy8gd2FpdFVudGlsRG9uZS9u
b3RpZnlEb25lIGFib3ZlLgotICAgIHZvaWQgcXVldWVCYWNrTmF2aWdhdGlvbihjb25zdCBDcHBB
cmd1bWVudExpc3QmLCBDcHBWYXJpYW50Kik7Ci0gICAgdm9pZCBxdWV1ZUZvcndhcmROYXZpZ2F0
aW9uKGNvbnN0IENwcEFyZ3VtZW50TGlzdCYsIENwcFZhcmlhbnQqKTsKLSAgICB2b2lkIHF1ZXVl
UmVsb2FkKGNvbnN0IENwcEFyZ3VtZW50TGlzdCYsIENwcFZhcmlhbnQqKTsKLSAgICB2b2lkIHF1
ZXVlTG9hZGluZ1NjcmlwdChjb25zdCBDcHBBcmd1bWVudExpc3QmLCBDcHBWYXJpYW50Kik7Ci0g
ICAgdm9pZCBxdWV1ZU5vbkxvYWRpbmdTY3JpcHQoY29uc3QgQ3BwQXJndW1lbnRMaXN0JiwgQ3Bw
VmFyaWFudCopOwotICAgIHZvaWQgcXVldWVMb2FkKGNvbnN0IENwcEFyZ3VtZW50TGlzdCYsIENw
cFZhcmlhbnQqKTsKLSAgICB2b2lkIHF1ZXVlTG9hZEhUTUxTdHJpbmcoY29uc3QgQ3BwQXJndW1l
bnRMaXN0JiwgQ3BwVmFyaWFudCopOwotCi0KLSAgICAvLyBDYXVzZXMgbmF2aWdhdGlvbiBhY3Rp
b25zIGp1c3QgcHJpbnRvdXQgdGhlIGludGVuZGVkIG5hdmlnYXRpb24gaW5zdGVhZAotICAgIC8v
IG9mIHRha2luZyB5b3UgdG8gdGhlIHBhZ2UuIFRoaXMgaXMgdXNlZCBmb3IgY2FzZXMgbGlrZSBt
YWlsdG8sIHdoZXJlIHlvdQotICAgIC8vIGRvbid0IGFjdHVhbGx5IHdhbnQgdG8gb3BlbiB0aGUg
bWFpbCBwcm9ncmFtLgotICAgIHZvaWQgc2V0Q3VzdG9tUG9saWN5RGVsZWdhdGUoY29uc3QgQ3Bw
QXJndW1lbnRMaXN0JiwgQ3BwVmFyaWFudCopOwotCi0gICAgLy8gRGVsYXlzIGNvbXBsZXRpb24g
b2YgdGhlIHRlc3QgdW50aWwgdGhlIHBvbGljeSBkZWxlZ2F0ZSBydW5zLgotICAgIHZvaWQgd2Fp
dEZvclBvbGljeURlbGVnYXRlKGNvbnN0IENwcEFyZ3VtZW50TGlzdCYsIENwcFZhcmlhbnQqKTsK
LQotcHVibGljOgotICAgIC8vIFRoZSBmb2xsb3dpbmcgbWV0aG9kcyBhcmUgbm90IGV4cG9zZWQg
dG8gSmF2YVNjcmlwdC4KLSAgICB2b2lkIHNldFdvcmtRdWV1ZUZyb3plbihib29sIGZyb3plbikg
eyBtX3dvcmtRdWV1ZS5zZXRGcm96ZW4oZnJvemVuKTsgfQotCi0gICAgdm9pZCBzZXRTaG93RGVi
dWdMYXllclRyZWUoYm9vbCB2YWx1ZSkgeyBtX3Nob3dEZWJ1Z0xheWVyVHJlZSA9IHZhbHVlOyB9
Ci0KLSAgICBib29sIHNob3VsZEludGVyY2VwdFBvc3RNZXNzYWdlKCkKLSAgICB7Ci0gICAgICAg
IHJldHVybiBtX2ludGVyY2VwdFBvc3RNZXNzYWdlLmlzQm9vbCgpICYmIG1faW50ZXJjZXB0UG9z
dE1lc3NhZ2UudG9Cb29sZWFuKCk7Ci0gICAgfQotCi0gICAgLy8gQ2FsbGVkIGJ5IHRoZSB3ZWJ2
aWV3IGRlbGVnYXRlIHdoZW4gdGhlIHRvcGxldmVsIGZyYW1lIGxvYWQgaXMgZG9uZS4KLSAgICB2
aXJ0dWFsIHZvaWQgbG9jYXRpb25DaGFuZ2VEb25lKCk7Ci0KLSAgICAvLyBDYWxsZWQgYnkgdGhl
IHdlYnZpZXcgZGVsZWdhdGUgd2hlbiB0aGUgcG9saWN5IGRlbGVnYXRlIHJ1bnMgaWYgdGhlCi0g
ICAgLy8gd2FpdEZvclBvbGljeURlbGVnYXRlIHdhcyBjYWxsZWQuCi0gICAgdm9pZCBwb2xpY3lE
ZWxlZ2F0ZURvbmUoKTsKLQotICAgIC8vIFJlaW5pdGlhbGl6ZXMgYWxsIHN0YXRpYyB2YWx1ZXMu
IFRoZSByZXNldCgpIG1ldGhvZCBzaG91bGQgYmUgY2FsbGVkCi0gICAgLy8gYmVmb3JlIHRoZSBz
dGFydCBvZiBlYWNoIHRlc3QgKGN1cnJlbnRseSBmcm9tIFRlc3RTaGVsbDo6cnVuRmlsZVRlc3Qp
LgotICAgIHZvaWQgcmVzZXQoKTsKLQotICAgIC8vIEEgc2luZ2xlIGl0ZW0gaW4gdGhlIHdvcmsg
cXVldWUuCi0gICAgY2xhc3MgV29ya0l0ZW0gewotICAgIHB1YmxpYzoKLSAgICAgICAgdmlydHVh
bCB+V29ya0l0ZW0oKSB7IH0KLQotICAgICAgICAvLyBSZXR1cm5zIHRydWUgaWYgdGhpcyBzdGFy
dGVkIGEgbG9hZC4KLSAgICAgICAgdmlydHVhbCBib29sIHJ1bihUZXN0U2hlbGwqKSA9IDA7Ci0g
ICAgfTsKLQotcHJpdmF0ZToKLSAgICBmcmllbmQgY2xhc3MgV29ya0l0ZW07Ci0gICAgZnJpZW5k
IGNsYXNzIFdvcmtRdWV1ZTsKLQotICAgIC8vIEhlbHBlciBjbGFzcyBmb3IgbWFuYWdpbmcgZXZl
bnRzIHF1ZXVlZCBieSBtZXRob2RzIGxpa2UgcXVldWVMb2FkIG9yCi0gICAgLy8gcXVldWVTY3Jp
cHQuCi0gICAgY2xhc3MgV29ya1F1ZXVlIHsKLSAgICBwdWJsaWM6Ci0gICAgICAgIFdvcmtRdWV1
ZShEUlRUZXN0UnVubmVyKiBjb250cm9sbGVyKSA6IG1fZnJvemVuKGZhbHNlKSwgbV9jb250cm9s
bGVyKGNvbnRyb2xsZXIpIHsgfQotICAgICAgICB2aXJ0dWFsIH5Xb3JrUXVldWUoKTsKLSAgICAg
ICAgdm9pZCBwcm9jZXNzV29ya1Nvb24oKTsKLQotICAgICAgICAvLyBSZXNldCB0aGUgc3RhdGUg
b2YgdGhlIGNsYXNzIGJldHdlZW4gdGVzdHMuCi0gICAgICAgIHZvaWQgcmVzZXQoKTsKLQotICAg
ICAgICB2b2lkIGFkZFdvcmsoV29ya0l0ZW0qKTsKLQotICAgICAgICB2b2lkIHNldEZyb3plbihi
b29sIGZyb3plbikgeyBtX2Zyb3plbiA9IGZyb3plbjsgfQotICAgICAgICBib29sIGlzRW1wdHko
KSB7IHJldHVybiBtX3F1ZXVlLmlzRW1wdHkoKTsgfQotICAgICAgICBXZWJUYXNrTGlzdCogdGFz
a0xpc3QoKSB7IHJldHVybiAmbV90YXNrTGlzdDsgfQotCi0gICAgcHJpdmF0ZToKLSAgICAgICAg
dm9pZCBwcm9jZXNzV29yaygpOwotICAgICAgICBjbGFzcyBXb3JrUXVldWVUYXNrOiBwdWJsaWMg
V2ViTWV0aG9kVGFzazxXb3JrUXVldWU+IHsKLSAgICAgICAgcHVibGljOgotICAgICAgICAgICAg
V29ya1F1ZXVlVGFzayhXb3JrUXVldWUqIG9iamVjdCk6IFdlYk1ldGhvZFRhc2s8V29ya1F1ZXVl
PihvYmplY3QpIHsgfQotICAgICAgICAgICAgdmlydHVhbCB2b2lkIHJ1bklmVmFsaWQoKSB7IG1f
b2JqZWN0LT5wcm9jZXNzV29yaygpOyB9Ci0gICAgICAgIH07Ci0KLSAgICAgICAgV2ViVGFza0xp
c3QgbV90YXNrTGlzdDsKLSAgICAgICAgRGVxdWU8V29ya0l0ZW0qPiBtX3F1ZXVlOwotICAgICAg
ICBib29sIG1fZnJvemVuOwotICAgICAgICBEUlRUZXN0UnVubmVyKiBtX2NvbnRyb2xsZXI7Ci0g
ICAgfTsKLSAgICB2b2lkIGNvbXBsZXRlTm90aWZ5RG9uZShib29sIGlzVGltZW91dCk7Ci0gICAg
Y2xhc3MgTm90aWZ5RG9uZVRpbWVkT3V0VGFzazogcHVibGljIFdlYk1ldGhvZFRhc2s8RFJUVGVz
dFJ1bm5lcj4gewotICAgIHB1YmxpYzoKLSAgICAgICAgTm90aWZ5RG9uZVRpbWVkT3V0VGFzayhE
UlRUZXN0UnVubmVyKiBvYmplY3QpOiBXZWJNZXRob2RUYXNrPERSVFRlc3RSdW5uZXI+KG9iamVj
dCkgeyB9Ci0gICAgICAgIHZpcnR1YWwgdm9pZCBydW5JZlZhbGlkKCkgeyBtX29iamVjdC0+Y29t
cGxldGVOb3RpZnlEb25lKHRydWUpOyB9Ci0gICAgfTsKLQotICAgIC8vIE5vbi1vd25pbmcgcG9p
bnRlci4gVGhlIERSVFRlc3RSdW5uZXIgaXMgb3duZWQgYnkgdGhlIGhvc3QuCi0gICAgVGVzdFNo
ZWxsKiBtX3NoZWxsOwotCi0gICAgLy8gV2hlbiByZXNldCBpcyBjYWxsZWQsIGdvIHRocm91Z2gg
YW5kIGNsb3NlIGFsbCBidXQgdGhlIG1haW4gdGVzdCBzaGVsbAotICAgIC8vIHdpbmRvdy4gQnkg
ZGVmYXVsdCwgc2V0IHRvIHRydWUgYnV0IHRvZ2dsZWQgdG8gZmFsc2UgdXNpbmcKLSAgICAvLyBz
ZXRDbG9zZVJlbWFpbmluZ1dpbmRvd3NXaGVuQ29tcGxldGUoKS4KLSAgICBib29sIG1fY2xvc2VS
ZW1haW5pbmdXaW5kb3dzOwotCi0gICAgLy8gSWYgdHJ1ZSwgZG9uJ3QgZHVtcCBvdXRwdXQgdW50
aWwgbm90aWZ5RG9uZSBpcyBjYWxsZWQuCi0gICAgYm9vbCBtX3dhaXRVbnRpbERvbmU7Ci0KLSAg
ICAvLyBJZiB0cnVlLCB3ZSB3aWxsIHNob3cgZXh0ZW5kZWQgaW5mb3JtYXRpb24gaW4gdGhlIGdy
YXBoaWNzIGxheWVyIHRyZWUuCi0gICAgYm9vbCBtX3Nob3dEZWJ1Z0xheWVyVHJlZTsKLQotICAg
IFdvcmtRdWV1ZSBtX3dvcmtRdWV1ZTsKLQotICAgIC8vIEJvdW5kIHZhcmlhYmxlIGNvdW50aW5n
IHRoZSBudW1iZXIgb2YgdG9wIFVSTHMgdmlzaXRlZC4KLSAgICBDcHBWYXJpYW50IG1fd2ViSGlz
dG9yeUl0ZW1Db3VudDsKLQotICAgIC8vIEJvdW5kIHZhcmlhYmxlIHRvIHNldCB3aGV0aGVyIHBv
c3RNZXNzYWdlcyBzaG91bGQgYmUgaW50ZXJjZXB0ZWQgb3Igbm90Ci0gICAgQ3BwVmFyaWFudCBt
X2ludGVyY2VwdFBvc3RNZXNzYWdlOwotfTsKLQotI2VuZGlmIC8vIERSVFRlc3RSdW5uZXJfaApk
aWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9wdWJs
aWMvV2ViVGVzdERlbGVnYXRlLmggYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0
UnVubmVyL3B1YmxpYy9XZWJUZXN0RGVsZWdhdGUuaAppbmRleCA2MTEyYjU2ZjE2MThjM2QwNzVl
YzMxMjE2MTc4NzIyYjQzNGRmMTAxLi45MTVmY2YyZGNmZjdiZDc0YzMzYWE0ZDZiYmZkNjkwODdl
YjJmYWYyIDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVu
bmVyL3B1YmxpYy9XZWJUZXN0RGVsZWdhdGUuaAorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9j
aHJvbWl1bS9UZXN0UnVubmVyL3B1YmxpYy9XZWJUZXN0RGVsZWdhdGUuaApAQCAtMTEyLDYgKzEx
MiwxOCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBib29sIHdhc01vY2tTcGVlY2hSZWNvZ25pdGlv
bkFib3J0ZWQoKSB7IHJldHVybiBmYWxzZTsgfQogICAgIHZpcnR1YWwgdm9pZCBkaXNwbGF5KCkg
eyB9CiAgICAgdmlydHVhbCB2b2lkIGRpc3BsYXlJbnZhbGlkYXRlZFJlZ2lvbigpIHsgfQorICAg
IHZpcnR1YWwgdm9pZCB0ZXN0RmluaXNoZWQoKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgdGVzdFRp
bWVkT3V0KCkgeyB9CisgICAgdmlydHVhbCBib29sIGlzQmVpbmdEZWJ1Z2dlZCgpIHsgcmV0dXJu
IGZhbHNlOyB9CisgICAgdmlydHVhbCBpbnQgbGF5b3V0VGVzdFRpbWVvdXQoKSB7IHJldHVybiAz
MCAqIDEwMDA7IH0KKyAgICB2aXJ0dWFsIHZvaWQgY2xvc2VSZW1haW5pbmdXaW5kb3dzKCkgeyB9
CisgICAgdmlydHVhbCBpbnQgbmF2aWdhdGlvbkVudHJ5Q291bnQoKSB7IHJldHVybiAwOyB9Cisg
ICAgdmlydHVhbCBpbnQgd2luZG93Q291bnQoKSB7IHJldHVybiAwOyB9CisgICAgdmlydHVhbCB2
b2lkIHNldEN1c3RvbVBvbGljeURlbGVnYXRlKGJvb2wsIGJvb2wpIHsgfQorICAgIHZpcnR1YWwg
dm9pZCB3YWl0Rm9yUG9saWN5RGVsZWdhdGUoKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgZ29Ub09m
ZnNldChpbnQpIHsgfQorICAgIHZpcnR1YWwgdm9pZCByZWxvYWQoKSB7IH0KKyAgICB2aXJ0dWFs
IHZvaWQgbG9hZFVSTEZvckZyYW1lKGNvbnN0IFdlYktpdDo6V2ViVVJMJiwgY29uc3Qgc3RkOjpz
dHJpbmcmKSB7IH0KIH07CiAKIH0KZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2No
cm9taXVtL1Rlc3RSdW5uZXIvcHVibGljL1dlYlRlc3RSdW5uZXIuaCBiL1Rvb2xzL0R1bXBSZW5k
ZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvcHVibGljL1dlYlRlc3RSdW5uZXIuaAppbmRleCBm
ZTAyNWQ1YWFhOWM5MGEwZDJmMmVlY2NhMzYxNGQxMzljZWRhNTU5Li5kMWJlODhkYzA0Y2U3ZTdk
MDMxODIzODA3ZWFhZTc3NGQ4Yjc2NWM3IDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJl
ZS9jaHJvbWl1bS9UZXN0UnVubmVyL3B1YmxpYy9XZWJUZXN0UnVubmVyLmgKKysrIGIvVG9vbHMv
RHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9wdWJsaWMvV2ViVGVzdFJ1bm5lci5o
CkBAIC04Miw2ICs4Miw4IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIGJvb2wgd2lsbFNlbmRSZXF1
ZXN0U2hvdWxkUmV0dXJuTnVsbCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgdmlydHVh
bCB2b2lkIHNldFRvcExvYWRpbmdGcmFtZShXZWJLaXQ6OldlYkZyYW1lKiwgYm9vbCkgeyB9CiAg
ICAgdmlydHVhbCBXZWJLaXQ6OldlYkZyYW1lKiB0b3BMb2FkaW5nRnJhbWUoKSBjb25zdCB7IHJl
dHVybiAwOyB9CisgICAgdmlydHVhbCB2b2lkIHBvbGljeURlbGVnYXRlRG9uZSgpIHsgfQorICAg
IHZpcnR1YWwgYm9vbCBzaG91bGRJbnRlcmNlcHRQb3N0TWVzc2FnZSgpIGNvbnN0IHsgcmV0dXJu
IGZhbHNlOyB9CiB9OwogCiB9CmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJv
bWl1bS9UZXN0UnVubmVyL3NyYy9UZXN0UnVubmVyLmNwcCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVl
L2Nocm9taXVtL1Rlc3RSdW5uZXIvc3JjL1Rlc3RSdW5uZXIuY3BwCmluZGV4IDMwODJkMTU2ZGE0
ODJkZGIzOGViOWZhYjViZDgzMWJlMTAyYzkxNjguLjU4MDRlZWRlYjg3ZDIwYjE0MTI2YjEzYzk5
MDk3NjA3ODgyODI2NjkgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVt
L1Rlc3RSdW5uZXIvc3JjL1Rlc3RSdW5uZXIuY3BwCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVl
L2Nocm9taXVtL1Rlc3RSdW5uZXIvc3JjL1Rlc3RSdW5uZXIuY3BwCkBAIC01NSw2ICs1NSw3IEBA
CiAjaW5jbHVkZSAiV2ViVmlldy5oIgogI2luY2x1ZGUgIldlYldvcmtlckluZm8uaCIKICNpbmNs
dWRlICJ2OC9pbmNsdWRlL3Y4LmgiCisjaW5jbHVkZSA8cHVibGljL1dlYkRhdGEuaD4KICNpbmNs
dWRlIDxwdWJsaWMvV2ViUG9pbnQuaD4KICNpbmNsdWRlIDx3dGYvT3duQXJyYXlQdHIuaD4KICNp
bmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KQEAgLTEwMiwxNCArMTAzLDgzIEBAIHByaXZh
dGU6CiAKIH0KIAorVGVzdFJ1bm5lcjo6V29ya1F1ZXVlOjp+V29ya1F1ZXVlKCkKK3sKKyAgICBy
ZXNldCgpOworfQorCit2b2lkIFRlc3RSdW5uZXI6OldvcmtRdWV1ZTo6cHJvY2Vzc1dvcmtTb29u
KCkKK3sKKyAgICBpZiAobV9jb250cm9sbGVyLT50b3BMb2FkaW5nRnJhbWUoKSkKKyAgICAgICAg
cmV0dXJuOworCisgICAgaWYgKCFtX3F1ZXVlLmlzRW1wdHkoKSkgeworICAgICAgICAvLyBXZSBk
ZWxheSBwcm9jZXNzaW5nIHF1ZXVlZCB3b3JrIHRvIGF2b2lkIHJlY3Vyc2lvbiBwcm9ibGVtcy4K
KyAgICAgICAgbV9jb250cm9sbGVyLT5tX2RlbGVnYXRlLT5wb3N0VGFzayhuZXcgV29ya1F1ZXVl
VGFzayh0aGlzKSk7CisgICAgfSBlbHNlIGlmICghbV9jb250cm9sbGVyLT5tX3dhaXRVbnRpbERv
bmUpCisgICAgICAgIG1fY29udHJvbGxlci0+bV9kZWxlZ2F0ZS0+dGVzdEZpbmlzaGVkKCk7Cit9
CisKK3ZvaWQgVGVzdFJ1bm5lcjo6V29ya1F1ZXVlOjpwcm9jZXNzV29yaygpCit7CisgICAgLy8g
UXVpdCBkb2luZyB3b3JrIG9uY2UgYSBsb2FkIGlzIGluIHByb2dyZXNzLgorICAgIHdoaWxlICgh
bV9xdWV1ZS5pc0VtcHR5KCkpIHsKKyAgICAgICAgYm9vbCBzdGFydGVkTG9hZCA9IG1fcXVldWUu
Zmlyc3QoKS0+cnVuKG1fY29udHJvbGxlci0+bV9kZWxlZ2F0ZSwgbV9jb250cm9sbGVyLT5tX3dl
YlZpZXcpOworICAgICAgICBkZWxldGUgbV9xdWV1ZS50YWtlRmlyc3QoKTsKKyAgICAgICAgaWYg
KHN0YXJ0ZWRMb2FkKQorICAgICAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGlmICghbV9j
b250cm9sbGVyLT5tX3dhaXRVbnRpbERvbmUgJiYgIW1fY29udHJvbGxlci0+dG9wTG9hZGluZ0Zy
YW1lKCkpCisgICAgICAgIG1fY29udHJvbGxlci0+bV9kZWxlZ2F0ZS0+dGVzdEZpbmlzaGVkKCk7
Cit9CisKK3ZvaWQgVGVzdFJ1bm5lcjo6V29ya1F1ZXVlOjpyZXNldCgpCit7CisgICAgbV9mcm96
ZW4gPSBmYWxzZTsKKyAgICB3aGlsZSAoIW1fcXVldWUuaXNFbXB0eSgpKQorICAgICAgICBkZWxl
dGUgbV9xdWV1ZS50YWtlRmlyc3QoKTsKK30KKwordm9pZCBUZXN0UnVubmVyOjpXb3JrUXVldWU6
OmFkZFdvcmsoV29ya0l0ZW0qIHdvcmspCit7CisgICAgaWYgKG1fZnJvemVuKSB7CisgICAgICAg
IGRlbGV0ZSB3b3JrOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIG1fcXVldWUuYXBwZW5k
KHdvcmspOworfQorCisKIFRlc3RSdW5uZXI6OlRlc3RSdW5uZXIoKQogICAgIDogbV90ZXN0SXNS
dW5uaW5nKGZhbHNlKQorICAgICwgbV9jbG9zZVJlbWFpbmluZ1dpbmRvd3ModHJ1ZSkKKyAgICAs
IG1fd29ya1F1ZXVlKHRoaXMpCiAgICAgLCBtX2RlbGVnYXRlKDApCiAgICAgLCBtX3dlYlZpZXco
MCkKICAgICAsIG1fdG9wTG9hZGluZ0ZyYW1lKDApCiAgICAgLCBtX2ludGVudENsaWVudChhZG9w
dFB0cihuZXcgRW1wdHlXZWJEZWxpdmVyZWRJbnRlbnRDbGllbnQpKQogICAgICwgbV93ZWJQZXJt
aXNzaW9ucyhhZG9wdFB0cihuZXcgV2ViUGVybWlzc2lvbnMpKQogeworICAgIC8vIEluaXRpYWxp
emUgdGhlIG1hcCB0aGF0IGFzc29jaWF0ZXMgbWV0aG9kcyBvZiB0aGlzIGNsYXNzIHdpdGggdGhl
IG5hbWVzCisgICAgLy8gdGhleSB3aWxsIHVzZSB3aGVuIGNhbGxlZCBieSBKYXZhU2NyaXB0LiBU
aGUgYWN0dWFsIGJpbmRpbmcgb2YgdGhvc2UKKyAgICAvLyBuYW1lcyB0byB0aGVpciBtZXRob2Rz
IHdpbGwgYmUgZG9uZSBieSBjYWxsaW5nIGJpbmRUb0phdmFTY3JpcHQoKSAoZGVmaW5lZAorICAg
IC8vIGJ5IENwcEJvdW5kQ2xhc3MsIHRoZSBwYXJlbnQgdG8gVGVzdFJ1bm5lcikuCisKKyAgICAv
LyBNZXRob2RzIGNvbnRyb2xsaW5nIHRlc3QgZXhlY3V0aW9uLgorICAgIGJpbmRNZXRob2QoIm5v
dGlmeURvbmUiLCAmVGVzdFJ1bm5lcjo6bm90aWZ5RG9uZSk7CisgICAgYmluZE1ldGhvZCgicXVl
dWVCYWNrTmF2aWdhdGlvbiIsICZUZXN0UnVubmVyOjpxdWV1ZUJhY2tOYXZpZ2F0aW9uKTsKKyAg
ICBiaW5kTWV0aG9kKCJxdWV1ZUZvcndhcmROYXZpZ2F0aW9uIiwgJlRlc3RSdW5uZXI6OnF1ZXVl
Rm9yd2FyZE5hdmlnYXRpb24pOworICAgIGJpbmRNZXRob2QoInF1ZXVlTG9hZGluZ1NjcmlwdCIs
ICZUZXN0UnVubmVyOjpxdWV1ZUxvYWRpbmdTY3JpcHQpOworICAgIGJpbmRNZXRob2QoInF1ZXVl
TG9hZCIsICZUZXN0UnVubmVyOjpxdWV1ZUxvYWQpOworICAgIGJpbmRNZXRob2QoInF1ZXVlTG9h
ZEhUTUxTdHJpbmciLCAmVGVzdFJ1bm5lcjo6cXVldWVMb2FkSFRNTFN0cmluZyk7CisgICAgYmlu
ZE1ldGhvZCgicXVldWVOb25Mb2FkaW5nU2NyaXB0IiwgJlRlc3RSdW5uZXI6OnF1ZXVlTm9uTG9h
ZGluZ1NjcmlwdCk7CisgICAgYmluZE1ldGhvZCgicXVldWVSZWxvYWQiLCAmVGVzdFJ1bm5lcjo6
cXVldWVSZWxvYWQpOworICAgIGJpbmRNZXRob2QoInNldENsb3NlUmVtYWluaW5nV2luZG93c1do
ZW5Db21wbGV0ZSIsICZUZXN0UnVubmVyOjpzZXRDbG9zZVJlbWFpbmluZ1dpbmRvd3NXaGVuQ29t
cGxldGUpOworICAgIGJpbmRNZXRob2QoInNldEN1c3RvbVBvbGljeURlbGVnYXRlIiwgJlRlc3RS
dW5uZXI6OnNldEN1c3RvbVBvbGljeURlbGVnYXRlKTsKKyAgICBiaW5kTWV0aG9kKCJ3YWl0Rm9y
UG9saWN5RGVsZWdhdGUiLCAmVGVzdFJ1bm5lcjo6d2FpdEZvclBvbGljeURlbGVnYXRlKTsKKyAg
ICBiaW5kTWV0aG9kKCJ3YWl0VW50aWxEb25lIiwgJlRlc3RSdW5uZXI6OndhaXRVbnRpbERvbmUp
OworICAgIGJpbmRNZXRob2QoIndpbmRvd0NvdW50IiwgJlRlc3RSdW5uZXI6OndpbmRvd0NvdW50
KTsKICAgICAvLyBNZXRob2RzIGltcGxlbWVudGVkIGluIHRlcm1zIG9mIGNocm9taXVtJ3MgcHVi
bGljIFdlYktpdCBBUEkuCiAgICAgYmluZE1ldGhvZCgic2V0VGFiS2V5Q3ljbGVzVGhyb3VnaEVs
ZW1lbnRzIiwgJlRlc3RSdW5uZXI6OnNldFRhYktleUN5Y2xlc1Rocm91Z2hFbGVtZW50cyk7CiAg
ICAgYmluZE1ldGhvZCgiZXhlY0NvbW1hbmQiLCAmVGVzdFJ1bm5lcjo6ZXhlY0NvbW1hbmQpOwpA
QCAtMjQ2LDYgKzMxNiw5IEBAIFRlc3RSdW5uZXI6OlRlc3RSdW5uZXIoKQogICAgIGJpbmRQcm9w
ZXJ0eSgiZ2xvYmFsRmxhZyIsICZtX2dsb2JhbEZsYWcpOwogICAgIGJpbmRQcm9wZXJ0eSgidGl0
bGVUZXh0RGlyZWN0aW9uIiwgJm1fdGl0bGVUZXh0RGlyZWN0aW9uKTsKICAgICBiaW5kUHJvcGVy
dHkoInBsYXRmb3JtTmFtZSIsICZtX3BsYXRmb3JtTmFtZSk7CisgICAgLy8gd2ViSGlzdG9yeUl0
ZW1Db3VudCBpcyB1c2VkIGJ5IHRlc3RzIGluIExheW91dFRlc3RzXGh0dHBcdGVzdHNcaGlzdG9y
eQorICAgIGJpbmRQcm9wZXJ0eSgid2ViSGlzdG9yeUl0ZW1Db3VudCIsICZtX3dlYkhpc3RvcnlJ
dGVtQ291bnQpOworICAgIGJpbmRQcm9wZXJ0eSgiaW50ZXJjZXB0UG9zdE1lc3NhZ2UiLCAmbV9p
bnRlcmNlcHRQb3N0TWVzc2FnZSk7CiAKICAgICAvLyBUaGUgZm9sbG93aW5nIGFyZSBzdHVicy4K
ICAgICBiaW5kTWV0aG9kKCJkdW1wRGF0YWJhc2VDYWxsYmFja3MiLCAmVGVzdFJ1bm5lcjo6bm90
SW1wbGVtZW50ZWQpOwpAQCAtMzAzLDYgKzM3Niw4IEBAIHZvaWQgVGVzdFJ1bm5lcjo6cmVzZXQo
KQogICAgICAgICBtX3dlYlZpZXctPmRpc2FibGVBdXRvUmVzaXplTW9kZSgpOwogICAgIH0KICAg
ICBtX3RvcExvYWRpbmdGcmFtZSA9IDA7CisgICAgbV93YWl0VW50aWxEb25lID0gZmFsc2U7CisK
ICAgICBXZWJTZWN1cml0eVBvbGljeTo6cmVzZXRPcmlnaW5BY2Nlc3NXaGl0ZWxpc3RzKCk7CiAj
aWYgT1MoTElOVVgpIHx8IE9TKEFORFJPSUQpCiAgICAgV2ViRm9udFJlbmRlcmluZzo6c2V0U3Vi
cGl4ZWxQb3NpdGlvbmluZyhmYWxzZSk7CkBAIC0zNDUsNiArNDIwLDggQEAgdm9pZCBUZXN0UnVu
bmVyOjpyZXNldCgpCiAKICAgICBtX2dsb2JhbEZsYWcuc2V0KGZhbHNlKTsKICAgICBtX3RpdGxl
VGV4dERpcmVjdGlvbi5zZXQoImx0ciIpOworICAgIG1fd2ViSGlzdG9yeUl0ZW1Db3VudC5zZXQo
MCk7CisgICAgbV9pbnRlcmNlcHRQb3N0TWVzc2FnZS5zZXQoZmFsc2UpOwogICAgIG1fcGxhdGZv
cm1OYW1lLnNldCgiY2hyb21pdW0iKTsKIAogICAgIG1fdXNlclN0eWxlU2hlZXRMb2NhdGlvbiA9
IFdlYlVSTCgpOwpAQCAtMzUyLDggKzQyOSwxNSBAQCB2b2lkIFRlc3RSdW5uZXI6OnJlc2V0KCkK
ICAgICBtX3dlYlBlcm1pc3Npb25zLT5yZXNldCgpOwogCiAgICAgbV90YXNrTGlzdC5yZXZva2VB
bGwoKTsKKyAgICBtX3dvcmtRdWV1ZS5yZXNldCgpOworCisgICAgaWYgKG1fY2xvc2VSZW1haW5p
bmdXaW5kb3dzKQorICAgICAgICBtX2RlbGVnYXRlLT5jbG9zZVJlbWFpbmluZ1dpbmRvd3MoKTsK
KyAgICBlbHNlCisgICAgICAgIG1fY2xvc2VSZW1haW5pbmdXaW5kb3dzID0gdHJ1ZTsKIH0KIAor
CiB2b2lkIFRlc3RSdW5uZXI6OnNldFRlc3RJc1J1bm5pbmcoYm9vbCBydW5uaW5nKQogewogICAg
IG1fdGVzdElzUnVubmluZyA9IHJ1bm5pbmc7CkBAIC01NDAsNiArNjI0LDIzOSBAQCBXZWJGcmFt
ZSogVGVzdFJ1bm5lcjo6dG9wTG9hZGluZ0ZyYW1lKCkgY29uc3QKICAgICByZXR1cm4gbV90b3BM
b2FkaW5nRnJhbWU7CiB9CiAKK3ZvaWQgVGVzdFJ1bm5lcjo6cG9saWN5RGVsZWdhdGVEb25lKCkK
K3sKKyAgICBBU1NFUlQobV93YWl0VW50aWxEb25lKTsKKyAgICBtX2RlbGVnYXRlLT50ZXN0Rmlu
aXNoZWQoKTsKKyAgICBtX3dhaXRVbnRpbERvbmUgPSBmYWxzZTsKK30KKworYm9vbCBUZXN0UnVu
bmVyOjpzaG91bGRJbnRlcmNlcHRQb3N0TWVzc2FnZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1f
aW50ZXJjZXB0UG9zdE1lc3NhZ2UuaXNCb29sKCkgJiYgbV9pbnRlcmNlcHRQb3N0TWVzc2FnZS50
b0Jvb2xlYW4oKTsKK30KKwordm9pZCBUZXN0UnVubmVyOjp3YWl0VW50aWxEb25lKGNvbnN0IENw
cEFyZ3VtZW50TGlzdCYsIENwcFZhcmlhbnQqIHJlc3VsdCkKK3sKKyAgICBpZiAoIW1fZGVsZWdh
dGUtPmlzQmVpbmdEZWJ1Z2dlZCgpKQorICAgICAgICBtX2RlbGVnYXRlLT5wb3N0RGVsYXllZFRh
c2sobmV3IE5vdGlmeURvbmVUaW1lZE91dFRhc2sodGhpcyksIG1fZGVsZWdhdGUtPmxheW91dFRl
c3RUaW1lb3V0KCkpOworICAgIG1fd2FpdFVudGlsRG9uZSA9IHRydWU7CisgICAgcmVzdWx0LT5z
ZXROdWxsKCk7Cit9CisKK3ZvaWQgVGVzdFJ1bm5lcjo6bm90aWZ5RG9uZShjb25zdCBDcHBBcmd1
bWVudExpc3QmLCBDcHBWYXJpYW50KiByZXN1bHQpCit7CisgICAgLy8gVGVzdCBkaWRuJ3QgdGlt
ZW91dC4gS2lsbCB0aGUgdGltZW91dCB0aW1lci4KKyAgICB0YXNrTGlzdCgpLT5yZXZva2VBbGwo
KTsKKworICAgIGNvbXBsZXRlTm90aWZ5RG9uZShmYWxzZSk7CisgICAgcmVzdWx0LT5zZXROdWxs
KCk7Cit9CisKK3ZvaWQgVGVzdFJ1bm5lcjo6Y29tcGxldGVOb3RpZnlEb25lKGJvb2wgaXNUaW1l
b3V0KQoreworICAgIGlmIChtX3dhaXRVbnRpbERvbmUgJiYgIXRvcExvYWRpbmdGcmFtZSgpICYm
IG1fd29ya1F1ZXVlLmlzRW1wdHkoKSkgeworICAgICAgICBpZiAoaXNUaW1lb3V0KQorICAgICAg
ICAgICAgbV9kZWxlZ2F0ZS0+dGVzdFRpbWVkT3V0KCk7CisgICAgICAgIGVsc2UKKyAgICAgICAg
ICAgIG1fZGVsZWdhdGUtPnRlc3RGaW5pc2hlZCgpOworICAgIH0KKyAgICBtX3dhaXRVbnRpbERv
bmUgPSBmYWxzZTsKK30KKworY2xhc3MgV29ya0l0ZW1CYWNrRm9yd2FyZCA6IHB1YmxpYyBUZXN0
UnVubmVyOjpXb3JrSXRlbSB7CitwdWJsaWM6CisgICAgV29ya0l0ZW1CYWNrRm9yd2FyZChpbnQg
ZGlzdGFuY2UpIDogbV9kaXN0YW5jZShkaXN0YW5jZSkgeyB9CisgICAgYm9vbCBydW4oV2ViVGVz
dERlbGVnYXRlKiBkZWxlZ2F0ZSwgV2ViVmlldyopCisgICAgeworICAgICAgICBkZWxlZ2F0ZS0+
Z29Ub09mZnNldChtX2Rpc3RhbmNlKTsKKyAgICAgICAgcmV0dXJuIHRydWU7IC8vIEZJWE1FOiBE
aWQgaXQgcmVhbGx5IHN0YXJ0IGEgbmF2aWdhdGlvbj8KKyAgICB9CisKK3ByaXZhdGU6CisgICAg
aW50IG1fZGlzdGFuY2U7Cit9OworCit2b2lkIFRlc3RSdW5uZXI6OnF1ZXVlQmFja05hdmlnYXRp
b24oY29uc3QgQ3BwQXJndW1lbnRMaXN0JiBhcmd1bWVudHMsIENwcFZhcmlhbnQqIHJlc3VsdCkK
K3sKKyAgICBpZiAoYXJndW1lbnRzLnNpemUoKSA+IDAgJiYgYXJndW1lbnRzWzBdLmlzTnVtYmVy
KCkpCisgICAgICAgIG1fd29ya1F1ZXVlLmFkZFdvcmsobmV3IFdvcmtJdGVtQmFja0ZvcndhcmQo
LWFyZ3VtZW50c1swXS50b0ludDMyKCkpKTsKKyAgICByZXN1bHQtPnNldE51bGwoKTsKK30KKwor
dm9pZCBUZXN0UnVubmVyOjpxdWV1ZUZvcndhcmROYXZpZ2F0aW9uKGNvbnN0IENwcEFyZ3VtZW50
TGlzdCYgYXJndW1lbnRzLCBDcHBWYXJpYW50KiByZXN1bHQpCit7CisgICAgaWYgKGFyZ3VtZW50
cy5zaXplKCkgPiAwICYmIGFyZ3VtZW50c1swXS5pc051bWJlcigpKQorICAgICAgICBtX3dvcmtR
dWV1ZS5hZGRXb3JrKG5ldyBXb3JrSXRlbUJhY2tGb3J3YXJkKGFyZ3VtZW50c1swXS50b0ludDMy
KCkpKTsKKyAgICByZXN1bHQtPnNldE51bGwoKTsKK30KKworY2xhc3MgV29ya0l0ZW1SZWxvYWQg
OiBwdWJsaWMgVGVzdFJ1bm5lcjo6V29ya0l0ZW0geworcHVibGljOgorICAgIGJvb2wgcnVuKFdl
YlRlc3REZWxlZ2F0ZSogZGVsZWdhdGUsIFdlYlZpZXcqKQorICAgIHsKKyAgICAgICAgZGVsZWdh
dGUtPnJlbG9hZCgpOworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9Cit9OworCit2b2lkIFRl
c3RSdW5uZXI6OnF1ZXVlUmVsb2FkKGNvbnN0IENwcEFyZ3VtZW50TGlzdCYsIENwcFZhcmlhbnQq
IHJlc3VsdCkKK3sKKyAgICBtX3dvcmtRdWV1ZS5hZGRXb3JrKG5ldyBXb3JrSXRlbVJlbG9hZCk7
CisgICAgcmVzdWx0LT5zZXROdWxsKCk7Cit9CisKK2NsYXNzIFdvcmtJdGVtTG9hZGluZ1Njcmlw
dCA6IHB1YmxpYyBUZXN0UnVubmVyOjpXb3JrSXRlbSB7CitwdWJsaWM6CisgICAgV29ya0l0ZW1M
b2FkaW5nU2NyaXB0KGNvbnN0IHN0cmluZyYgc2NyaXB0KSA6IG1fc2NyaXB0KHNjcmlwdCkgeyB9
CisgICAgYm9vbCBydW4oV2ViVGVzdERlbGVnYXRlKiwgV2ViVmlldyogd2ViVmlldykKKyAgICB7
CisgICAgICAgIHdlYlZpZXctPm1haW5GcmFtZSgpLT5leGVjdXRlU2NyaXB0KFdlYlNjcmlwdFNv
dXJjZShXZWJTdHJpbmc6OmZyb21VVEY4KG1fc2NyaXB0KSkpOworICAgICAgICByZXR1cm4gdHJ1
ZTsgLy8gRklYTUU6IERpZCBpdCByZWFsbHkgc3RhcnQgYSBuYXZpZ2F0aW9uPworICAgIH0KKwor
cHJpdmF0ZToKKyAgICBzdHJpbmcgbV9zY3JpcHQ7Cit9OworCitjbGFzcyBXb3JrSXRlbU5vbkxv
YWRpbmdTY3JpcHQgOiBwdWJsaWMgVGVzdFJ1bm5lcjo6V29ya0l0ZW0geworcHVibGljOgorICAg
IFdvcmtJdGVtTm9uTG9hZGluZ1NjcmlwdChjb25zdCBzdHJpbmcmIHNjcmlwdCkgOiBtX3Njcmlw
dChzY3JpcHQpIHsgfQorICAgIGJvb2wgcnVuKFdlYlRlc3REZWxlZ2F0ZSosIFdlYlZpZXcqIHdl
YlZpZXcpCisgICAgeworICAgICAgICB3ZWJWaWV3LT5tYWluRnJhbWUoKS0+ZXhlY3V0ZVNjcmlw
dChXZWJTY3JpcHRTb3VyY2UoV2ViU3RyaW5nOjpmcm9tVVRGOChtX3NjcmlwdCkpKTsKKyAgICAg
ICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworcHJpdmF0ZToKKyAgICBzdHJpbmcgbV9zY3JpcHQ7
Cit9OworCit2b2lkIFRlc3RSdW5uZXI6OnF1ZXVlTG9hZGluZ1NjcmlwdChjb25zdCBDcHBBcmd1
bWVudExpc3QmIGFyZ3VtZW50cywgQ3BwVmFyaWFudCogcmVzdWx0KQoreworICAgIGlmIChhcmd1
bWVudHMuc2l6ZSgpID4gMCAmJiBhcmd1bWVudHNbMF0uaXNTdHJpbmcoKSkKKyAgICAgICAgbV93
b3JrUXVldWUuYWRkV29yayhuZXcgV29ya0l0ZW1Mb2FkaW5nU2NyaXB0KGFyZ3VtZW50c1swXS50
b1N0cmluZygpKSk7CisgICAgcmVzdWx0LT5zZXROdWxsKCk7Cit9CisKK3ZvaWQgVGVzdFJ1bm5l
cjo6cXVldWVOb25Mb2FkaW5nU2NyaXB0KGNvbnN0IENwcEFyZ3VtZW50TGlzdCYgYXJndW1lbnRz
LCBDcHBWYXJpYW50KiByZXN1bHQpCit7CisgICAgaWYgKGFyZ3VtZW50cy5zaXplKCkgPiAwICYm
IGFyZ3VtZW50c1swXS5pc1N0cmluZygpKQorICAgICAgICBtX3dvcmtRdWV1ZS5hZGRXb3JrKG5l
dyBXb3JrSXRlbU5vbkxvYWRpbmdTY3JpcHQoYXJndW1lbnRzWzBdLnRvU3RyaW5nKCkpKTsKKyAg
ICByZXN1bHQtPnNldE51bGwoKTsKK30KKworY2xhc3MgV29ya0l0ZW1Mb2FkIDogcHVibGljIFRl
c3RSdW5uZXI6OldvcmtJdGVtIHsKK3B1YmxpYzoKKyAgICBXb3JrSXRlbUxvYWQoY29uc3QgV2Vi
VVJMJiB1cmwsIGNvbnN0IHN0cmluZyYgdGFyZ2V0KQorICAgICAgICA6IG1fdXJsKHVybCkKKyAg
ICAgICAgLCBtX3RhcmdldCh0YXJnZXQpIHsgfQorICAgIGJvb2wgcnVuKFdlYlRlc3REZWxlZ2F0
ZSogZGVsZWdhdGUsIFdlYlZpZXcqKQorICAgIHsKKyAgICAgICAgZGVsZWdhdGUtPmxvYWRVUkxG
b3JGcmFtZShtX3VybCwgbV90YXJnZXQpOworICAgICAgICByZXR1cm4gdHJ1ZTsgLy8gRklYTUU6
IERpZCBpdCByZWFsbHkgc3RhcnQgYSBuYXZpZ2F0aW9uPworICAgIH0KKworcHJpdmF0ZToKKyAg
ICBXZWJVUkwgbV91cmw7CisgICAgc3RyaW5nIG1fdGFyZ2V0OworfTsKKwordm9pZCBUZXN0UnVu
bmVyOjpxdWV1ZUxvYWQoY29uc3QgQ3BwQXJndW1lbnRMaXN0JiBhcmd1bWVudHMsIENwcFZhcmlh
bnQqIHJlc3VsdCkKK3sKKyAgICBpZiAoYXJndW1lbnRzLnNpemUoKSA+IDAgJiYgYXJndW1lbnRz
WzBdLmlzU3RyaW5nKCkpIHsKKyAgICAgICAgLy8gRklYTUU6IEltcGxlbWVudCBXZWJVUkw6OnJl
c29sdmUoKSBhbmQgYXZvaWQgR1VSTC4KKyAgICAgICAgR1VSTCBjdXJyZW50VVJMID0gbV93ZWJW
aWV3LT5tYWluRnJhbWUoKS0+ZG9jdW1lbnQoKS51cmwoKTsKKyAgICAgICAgR1VSTCBmdWxsVVJM
ID0gY3VycmVudFVSTC5SZXNvbHZlKGFyZ3VtZW50c1swXS50b1N0cmluZygpKTsKKworICAgICAg
ICBzdHJpbmcgdGFyZ2V0ID0gIiI7CisgICAgICAgIGlmIChhcmd1bWVudHMuc2l6ZSgpID4gMSAm
JiBhcmd1bWVudHNbMV0uaXNTdHJpbmcoKSkKKyAgICAgICAgICAgIHRhcmdldCA9IGFyZ3VtZW50
c1sxXS50b1N0cmluZygpOworCisgICAgICAgIG1fd29ya1F1ZXVlLmFkZFdvcmsobmV3IFdvcmtJ
dGVtTG9hZChmdWxsVVJMLCB0YXJnZXQpKTsKKyAgICB9CisgICAgcmVzdWx0LT5zZXROdWxsKCk7
Cit9CisKK2NsYXNzIFdvcmtJdGVtTG9hZEhUTUxTdHJpbmcgOiBwdWJsaWMgVGVzdFJ1bm5lcjo6
V29ya0l0ZW0gIHsKK3B1YmxpYzoKKyAgICBXb3JrSXRlbUxvYWRIVE1MU3RyaW5nKGNvbnN0IHN0
ZDo6c3RyaW5nJiBodG1sLCBjb25zdCBXZWJVUkwmIGJhc2VVUkwpCisgICAgICAgIDogbV9odG1s
KGh0bWwpCisgICAgICAgICwgbV9iYXNlVVJMKGJhc2VVUkwpIHsgfQorICAgIFdvcmtJdGVtTG9h
ZEhUTUxTdHJpbmcoY29uc3Qgc3RkOjpzdHJpbmcmIGh0bWwsIGNvbnN0IFdlYlVSTCYgYmFzZVVS
TCwgY29uc3QgV2ViVVJMJiB1bnJlYWNoYWJsZVVSTCkKKyAgICAgICAgOiBtX2h0bWwoaHRtbCkK
KyAgICAgICAgLCBtX2Jhc2VVUkwoYmFzZVVSTCkKKyAgICAgICAgLCBtX3VucmVhY2hhYmxlVVJM
KHVucmVhY2hhYmxlVVJMKSB7IH0KKyAgICBib29sIHJ1bihXZWJUZXN0RGVsZWdhdGUqLCBXZWJW
aWV3KiB3ZWJWaWV3KQorICAgIHsKKyAgICAgICAgd2ViVmlldy0+bWFpbkZyYW1lKCktPmxvYWRI
VE1MU3RyaW5nKAorICAgICAgICAgICAgV2ViS2l0OjpXZWJEYXRhKG1faHRtbC5kYXRhKCksIG1f
aHRtbC5sZW5ndGgoKSksIG1fYmFzZVVSTCwgbV91bnJlYWNoYWJsZVVSTCk7CisgICAgICAgIHJl
dHVybiB0cnVlOworICAgIH0KKworcHJpdmF0ZToKKyAgICBzdGQ6OnN0cmluZyBtX2h0bWw7Cisg
ICAgV2ViVVJMIG1fYmFzZVVSTDsKKyAgICBXZWJVUkwgbV91bnJlYWNoYWJsZVVSTDsKK307CisK
K3ZvaWQgVGVzdFJ1bm5lcjo6cXVldWVMb2FkSFRNTFN0cmluZyhjb25zdCBDcHBBcmd1bWVudExp
c3QmIGFyZ3VtZW50cywgQ3BwVmFyaWFudCogcmVzdWx0KQoreworICAgIGlmIChhcmd1bWVudHMu
c2l6ZSgpID4gMCAmJiBhcmd1bWVudHNbMF0uaXNTdHJpbmcoKSkgeworICAgICAgICBzdHJpbmcg
aHRtbCA9IGFyZ3VtZW50c1swXS50b1N0cmluZygpOworICAgICAgICBXZWJVUkwgYmFzZVVSTChH
VVJMKCIiKSk7CisgICAgICAgIGlmIChhcmd1bWVudHMuc2l6ZSgpID4gMSAmJiBhcmd1bWVudHNb
MV0uaXNTdHJpbmcoKSkKKyAgICAgICAgICAgIGJhc2VVUkwgPSBXZWJVUkwoR1VSTChhcmd1bWVu
dHNbMV0udG9TdHJpbmcoKSkpOworICAgICAgICBpZiAoYXJndW1lbnRzLnNpemUoKSA+IDIgJiYg
YXJndW1lbnRzWzJdLmlzU3RyaW5nKCkpCisgICAgICAgICAgICBtX3dvcmtRdWV1ZS5hZGRXb3Jr
KG5ldyBXb3JrSXRlbUxvYWRIVE1MU3RyaW5nKGh0bWwsIGJhc2VVUkwsIFdlYlVSTChHVVJMKGFy
Z3VtZW50c1syXS50b1N0cmluZygpKSkpKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgbV93
b3JrUXVldWUuYWRkV29yayhuZXcgV29ya0l0ZW1Mb2FkSFRNTFN0cmluZyhodG1sLCBiYXNlVVJM
KSk7CisgICAgfQorICAgIHJlc3VsdC0+c2V0TnVsbCgpOworfQorCit2b2lkIFRlc3RSdW5uZXI6
OmxvY2F0aW9uQ2hhbmdlRG9uZSgpCit7CisgICAgbV93ZWJIaXN0b3J5SXRlbUNvdW50LnNldCht
X2RlbGVnYXRlLT5uYXZpZ2F0aW9uRW50cnlDb3VudCgpKTsKKworICAgIC8vIE5vIG1vcmUgbmV3
IHdvcmsgYWZ0ZXIgdGhlIGZpcnN0IGNvbXBsZXRlIGxvYWQuCisgICAgbV93b3JrUXVldWUuc2V0
RnJvemVuKHRydWUpOworCisgICAgaWYgKCFtX3dhaXRVbnRpbERvbmUpCisgICAgICAgIG1fd29y
a1F1ZXVlLnByb2Nlc3NXb3JrU29vbigpOworfQorCit2b2lkIFRlc3RSdW5uZXI6OndpbmRvd0Nv
dW50KGNvbnN0IENwcEFyZ3VtZW50TGlzdCYsIENwcFZhcmlhbnQqIHJlc3VsdCkKK3sKKyAgICBy
ZXN1bHQtPnNldChzdGF0aWNfY2FzdDxpbnQ+KG1fZGVsZWdhdGUtPndpbmRvd0NvdW50KCkpKTsK
K30KKwordm9pZCBUZXN0UnVubmVyOjpzZXRDbG9zZVJlbWFpbmluZ1dpbmRvd3NXaGVuQ29tcGxl
dGUoY29uc3QgQ3BwQXJndW1lbnRMaXN0JiBhcmd1bWVudHMsIENwcFZhcmlhbnQqIHJlc3VsdCkK
K3sKKyAgICBpZiAoYXJndW1lbnRzLnNpemUoKSA+IDAgJiYgYXJndW1lbnRzWzBdLmlzQm9vbCgp
KQorICAgICAgICBtX2Nsb3NlUmVtYWluaW5nV2luZG93cyA9IGFyZ3VtZW50c1swXS52YWx1ZS5i
b29sVmFsdWU7CisgICAgcmVzdWx0LT5zZXROdWxsKCk7Cit9CisKK3ZvaWQgVGVzdFJ1bm5lcjo6
c2V0Q3VzdG9tUG9saWN5RGVsZWdhdGUoY29uc3QgQ3BwQXJndW1lbnRMaXN0JiBhcmd1bWVudHMs
IENwcFZhcmlhbnQqIHJlc3VsdCkKK3sKKyAgICBpZiAoYXJndW1lbnRzLnNpemUoKSA+IDAgJiYg
YXJndW1lbnRzWzBdLmlzQm9vbCgpKSB7CisgICAgICAgIGJvb2wgZW5hYmxlID0gYXJndW1lbnRz
WzBdLnZhbHVlLmJvb2xWYWx1ZTsKKyAgICAgICAgYm9vbCBwZXJtaXNzaXZlID0gZmFsc2U7Cisg
ICAgICAgIGlmIChhcmd1bWVudHMuc2l6ZSgpID4gMSAmJiBhcmd1bWVudHNbMV0uaXNCb29sKCkp
CisgICAgICAgICAgICBwZXJtaXNzaXZlID0gYXJndW1lbnRzWzFdLnZhbHVlLmJvb2xWYWx1ZTsK
KyAgICAgICAgbV9kZWxlZ2F0ZS0+c2V0Q3VzdG9tUG9saWN5RGVsZWdhdGUoZW5hYmxlLCBwZXJt
aXNzaXZlKTsKKyAgICB9CisgICAgcmVzdWx0LT5zZXROdWxsKCk7Cit9CisKK3ZvaWQgVGVzdFJ1
bm5lcjo6d2FpdEZvclBvbGljeURlbGVnYXRlKGNvbnN0IENwcEFyZ3VtZW50TGlzdCYsIENwcFZh
cmlhbnQqIHJlc3VsdCkKK3sKKyAgICBtX2RlbGVnYXRlLT53YWl0Rm9yUG9saWN5RGVsZWdhdGUo
KTsKKyAgICBtX3dhaXRVbnRpbERvbmUgPSB0cnVlOworICAgIHJlc3VsdC0+c2V0TnVsbCgpOwor
fQorCiB2b2lkIFRlc3RSdW5uZXI6OmR1bXBQZXJtaXNzaW9uQ2xpZW50Q2FsbGJhY2tzKGNvbnN0
IENwcEFyZ3VtZW50TGlzdCYsIENwcFZhcmlhbnQqIHJlc3VsdCkKIHsKICAgICBtX3dlYlBlcm1p
c3Npb25zLT5zZXREdW1wQ2FsbGJhY2tzKHRydWUpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJl
bmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvVGVzdFJ1bm5lci5oIGIvVG9vbHMvRHVt
cFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvVGVzdFJ1bm5lci5oCmluZGV4IDgz
NDgwZGI2Y2Q1YzQ4MjVmNWQ1NTRkMzJhZTA3ZTQ4MjM0ODExNzUuLjA2NjYyMTAwYzk4ZTA5ODE1
ODI4MzNlMjY3MzExYjk0NWJmZmE3MmQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVl
L2Nocm9taXVtL1Rlc3RSdW5uZXIvc3JjL1Rlc3RSdW5uZXIuaAorKysgYi9Ub29scy9EdW1wUmVu
ZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9UZXN0UnVubmVyLmgKQEAgLTM5LDYgKzM5
LDcgQEAKICNpbmNsdWRlICJXZWJUYXNrLmgiCiAjaW5jbHVkZSAiV2ViVGVzdFJ1bm5lci5oIgog
I2luY2x1ZGUgPHB1YmxpYy9XZWJVUkwuaD4KKyNpbmNsdWRlIDx3dGYvRGVxdWUuaD4KIAogbmFt
ZXNwYWNlIFdlYktpdCB7CiBjbGFzcyBXZWJWaWV3OwpAQCAtNTQsOCArNTUsNyBAQCBwdWJsaWM6
CiAgICAgVGVzdFJ1bm5lcigpOwogICAgIHZpcnR1YWwgflRlc3RSdW5uZXIoKTsKIAotICAgIC8v
IEZJWE1FOiBvbmNlIERSVFRlc3RSdW5uZXIgaXMgbW92ZWQgZW50aXJlbHkgdG8gdGhpcyBjbGFz
cywgY2hhbmdlIHRoaXMKLSAgICAvLyBtZXRob2QgdG8gdGFrZSBhIFRlc3REZWxlZ2F0ZSogaW5z
dGVhZC4KKyAgICAvLyBGSVhNRTogY2hhbmdlIHRoaXMgbWV0aG9kIHRvIHRha2UgYSBUZXN0RGVs
ZWdhdGUqIGluc3RlYWQuCiAgICAgdm9pZCBzZXREZWxlZ2F0ZShXZWJUZXN0RGVsZWdhdGUqKTsK
ICAgICB2b2lkIHNldFdlYlZpZXcoV2ViS2l0OjpXZWJWaWV3KiB3ZWJWaWV3KSB7IG1fd2ViVmll
dyA9IHdlYlZpZXc7IH0KIApAQCAtMTAwLDIyICsxMDAsODIgQEAgcHVibGljOgogICAgIHZpcnR1
YWwgYm9vbCB3aWxsU2VuZFJlcXVlc3RTaG91bGRSZXR1cm5OdWxsKCkgY29uc3QgT1ZFUlJJREU7
CiAgICAgdmlydHVhbCB2b2lkIHNldFRvcExvYWRpbmdGcmFtZShXZWJLaXQ6OldlYkZyYW1lKiwg
Ym9vbCkgT1ZFUlJJREU7CiAgICAgdmlydHVhbCBXZWJLaXQ6OldlYkZyYW1lKiB0b3BMb2FkaW5n
RnJhbWUoKSBjb25zdCBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgcG9saWN5RGVsZWdhdGVE
b25lKCkgT1ZFUlJJREU7CisgICAgdmlydHVhbCBib29sIHNob3VsZEludGVyY2VwdFBvc3RNZXNz
YWdlKCkgY29uc3QgT1ZFUlJJREU7CiAKLXByb3RlY3RlZDoKLSAgICAvLyBGSVhNRTogbWFrZSB0
aGVzZSBwcml2YXRlIG9uY2UgdGhlIG1vdmUgZnJvbSBEUlRUZXN0UnVubmVyIHRvIFRlc3RSdW5u
ZXIKLSAgICAvLyBpcyBjb21wbGV0ZS4KLSAgICBib29sIGNwcFZhcmlhbnRUb0Jvb2woY29uc3Qg
Q3BwVmFyaWFudCYpOwotICAgIGludDMyX3QgY3BwVmFyaWFudFRvSW50MzIoY29uc3QgQ3BwVmFy
aWFudCYpOwotICAgIFdlYktpdDo6V2ViU3RyaW5nIGNwcFZhcmlhbnRUb1dlYlN0cmluZyhjb25z
dCBDcHBWYXJpYW50Jik7Ci0KLSAgICB2b2lkIHByaW50RXJyb3JNZXNzYWdlKGNvbnN0IHN0ZDo6
c3RyaW5nJik7CisgICAgLy8gQSBzaW5nbGUgaXRlbSBpbiB0aGUgd29yayBxdWV1ZS4KKyAgICBj
bGFzcyBXb3JrSXRlbSB7CisgICAgcHVibGljOgorICAgICAgICB2aXJ0dWFsIH5Xb3JrSXRlbSgp
IHsgfQogCi0gICAgLy8gSW4gdGhlIE1hYyBjb2RlLCB0aGlzIGlzIGNhbGxlZCB0byB0cmlnZ2Vy
IHRoZSBlbmQgb2YgYSB0ZXN0IGFmdGVyIHRoZQotICAgIC8vIHBhZ2UgaGFzIGZpbmlzaGVkIGxv
YWRpbmcuIEZyb20gaGVyZSwgd2UgY2FuIGdlbmVyYXRlIHRoZSBkdW1wIGZvciB0aGUKLSAgICAv
LyB0ZXN0LgotICAgIHZpcnR1YWwgdm9pZCBsb2NhdGlvbkNoYW5nZURvbmUoKSB7IH0KKyAgICAg
ICAgLy8gUmV0dXJucyB0cnVlIGlmIHRoaXMgc3RhcnRlZCBhIGxvYWQuCisgICAgICAgIHZpcnR1
YWwgYm9vbCBydW4oV2ViVGVzdERlbGVnYXRlKiwgV2ViS2l0OjpXZWJWaWV3KikgPSAwOworICAg
IH07CiAKIHByaXZhdGU6CisgICAgZnJpZW5kIGNsYXNzIFdvcmtRdWV1ZTsKKworICAgIC8vIEhl
bHBlciBjbGFzcyBmb3IgbWFuYWdpbmcgZXZlbnRzIHF1ZXVlZCBieSBtZXRob2RzIGxpa2UgcXVl
dWVMb2FkIG9yCisgICAgLy8gcXVldWVTY3JpcHQuCisgICAgY2xhc3MgV29ya1F1ZXVlIHsKKyAg
ICBwdWJsaWM6CisgICAgICAgIFdvcmtRdWV1ZShUZXN0UnVubmVyKiBjb250cm9sbGVyKSA6IG1f
ZnJvemVuKGZhbHNlKSwgbV9jb250cm9sbGVyKGNvbnRyb2xsZXIpIHsgfQorICAgICAgICB2aXJ0
dWFsIH5Xb3JrUXVldWUoKTsKKyAgICAgICAgdm9pZCBwcm9jZXNzV29ya1Nvb24oKTsKKworICAg
ICAgICAvLyBSZXNldCB0aGUgc3RhdGUgb2YgdGhlIGNsYXNzIGJldHdlZW4gdGVzdHMuCisgICAg
ICAgIHZvaWQgcmVzZXQoKTsKKworICAgICAgICB2b2lkIGFkZFdvcmsoV29ya0l0ZW0qKTsKKwor
ICAgICAgICB2b2lkIHNldEZyb3plbihib29sIGZyb3plbikgeyBtX2Zyb3plbiA9IGZyb3plbjsg
fQorICAgICAgICBib29sIGlzRW1wdHkoKSB7IHJldHVybiBtX3F1ZXVlLmlzRW1wdHkoKTsgfQor
ICAgICAgICBXZWJUYXNrTGlzdCogdGFza0xpc3QoKSB7IHJldHVybiAmbV90YXNrTGlzdDsgfQor
CisgICAgcHJpdmF0ZToKKyAgICAgICAgdm9pZCBwcm9jZXNzV29yaygpOworICAgICAgICBjbGFz
cyBXb3JrUXVldWVUYXNrOiBwdWJsaWMgV2ViTWV0aG9kVGFzazxXb3JrUXVldWU+IHsKKyAgICAg
ICAgcHVibGljOgorICAgICAgICAgICAgV29ya1F1ZXVlVGFzayhXb3JrUXVldWUqIG9iamVjdCk6
IFdlYk1ldGhvZFRhc2s8V29ya1F1ZXVlPihvYmplY3QpIHsgfQorICAgICAgICAgICAgdmlydHVh
bCB2b2lkIHJ1bklmVmFsaWQoKSB7IG1fb2JqZWN0LT5wcm9jZXNzV29yaygpOyB9CisgICAgICAg
IH07CisKKyAgICAgICAgV2ViVGFza0xpc3QgbV90YXNrTGlzdDsKKyAgICAgICAgRGVxdWU8V29y
a0l0ZW0qPiBtX3F1ZXVlOworICAgICAgICBib29sIG1fZnJvemVuOworICAgICAgICBUZXN0UnVu
bmVyKiBtX2NvbnRyb2xsZXI7CisgICAgfTsKKyAgICAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KKyAgICAv
LyBNZXRob2RzIGRlYWxpbmcgd2l0aCB0aGUgdGVzdCBsb2dpYworCisgICAgLy8gQnkgZGVmYXVs
dCwgdGVzdHMgZW5kIHdoZW4gcGFnZSBsb2FkIGlzIGNvbXBsZXRlLiBUaGVzZSBtZXRob2RzIGFy
ZSB1c2VkCisgICAgLy8gdG8gZGVsYXkgdGhlIGNvbXBsZXRpb24gb2YgdGhlIHRlc3QgdW50aWwg
bm90aWZ5RG9uZSBpcyBjYWxsZWQuCisgICAgdm9pZCB3YWl0VW50aWxEb25lKGNvbnN0IENwcEFy
Z3VtZW50TGlzdCYsIENwcFZhcmlhbnQqKTsKKyAgICB2b2lkIG5vdGlmeURvbmUoY29uc3QgQ3Bw
QXJndW1lbnRMaXN0JiwgQ3BwVmFyaWFudCopOworCisgICAgLy8gTWV0aG9kcyBmb3IgYWRkaW5n
IGFjdGlvbnMgdG8gdGhlIHdvcmsgcXVldWUuIFVzZWQgaW4gY29uanVuY3Rpb24gd2l0aAorICAg
IC8vIHdhaXRVbnRpbERvbmUvbm90aWZ5RG9uZSBhYm92ZS4KKyAgICB2b2lkIHF1ZXVlQmFja05h
dmlnYXRpb24oY29uc3QgQ3BwQXJndW1lbnRMaXN0JiwgQ3BwVmFyaWFudCopOworICAgIHZvaWQg
cXVldWVGb3J3YXJkTmF2aWdhdGlvbihjb25zdCBDcHBBcmd1bWVudExpc3QmLCBDcHBWYXJpYW50
Kik7CisgICAgdm9pZCBxdWV1ZVJlbG9hZChjb25zdCBDcHBBcmd1bWVudExpc3QmLCBDcHBWYXJp
YW50Kik7CisgICAgdm9pZCBxdWV1ZUxvYWRpbmdTY3JpcHQoY29uc3QgQ3BwQXJndW1lbnRMaXN0
JiwgQ3BwVmFyaWFudCopOworICAgIHZvaWQgcXVldWVOb25Mb2FkaW5nU2NyaXB0KGNvbnN0IENw
cEFyZ3VtZW50TGlzdCYsIENwcFZhcmlhbnQqKTsKKyAgICB2b2lkIHF1ZXVlTG9hZChjb25zdCBD
cHBBcmd1bWVudExpc3QmLCBDcHBWYXJpYW50Kik7CisgICAgdm9pZCBxdWV1ZUxvYWRIVE1MU3Ry
aW5nKGNvbnN0IENwcEFyZ3VtZW50TGlzdCYsIENwcFZhcmlhbnQqKTsKKworCisgICAgLy8gQ2F1
c2VzIG5hdmlnYXRpb24gYWN0aW9ucyBqdXN0IHByaW50b3V0IHRoZSBpbnRlbmRlZCBuYXZpZ2F0
aW9uIGluc3RlYWQKKyAgICAvLyBvZiB0YWtpbmcgeW91IHRvIHRoZSBwYWdlLiBUaGlzIGlzIHVz
ZWQgZm9yIGNhc2VzIGxpa2UgbWFpbHRvLCB3aGVyZSB5b3UKKyAgICAvLyBkb24ndCBhY3R1YWxs
eSB3YW50IHRvIG9wZW4gdGhlIG1haWwgcHJvZ3JhbS4KKyAgICB2b2lkIHNldEN1c3RvbVBvbGlj
eURlbGVnYXRlKGNvbnN0IENwcEFyZ3VtZW50TGlzdCYsIENwcFZhcmlhbnQqKTsKKworICAgIC8v
IERlbGF5cyBjb21wbGV0aW9uIG9mIHRoZSB0ZXN0IHVudGlsIHRoZSBwb2xpY3kgZGVsZWdhdGUg
cnVucy4KKyAgICB2b2lkIHdhaXRGb3JQb2xpY3lEZWxlZ2F0ZShjb25zdCBDcHBBcmd1bWVudExp
c3QmLCBDcHBWYXJpYW50Kik7CisKKyAgICAvLyBGdW5jdGlvbnMgZm9yIGRlYWxpbmcgd2l0aCB3
aW5kb3dzLiBCeSBkZWZhdWx0IHdlIGJsb2NrIGFsbCBuZXcgd2luZG93cy4KKyAgICB2b2lkIHdp
bmRvd0NvdW50KGNvbnN0IENwcEFyZ3VtZW50TGlzdCYsIENwcFZhcmlhbnQqKTsKKyAgICB2b2lk
IHNldENsb3NlUmVtYWluaW5nV2luZG93c1doZW5Db21wbGV0ZShjb25zdCBDcHBBcmd1bWVudExp
c3QmLCBDcHBWYXJpYW50Kik7CisKICAgICAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KICAgICAvLyBNZXRo
b2RzIGltcGxlbWVudGVkIGVudGlyZWx5IGluIHRlcm1zIG9mIGNocm9taXVtJ3MgcHVibGljIFdl
YktpdCBBUEkKIApAQCAtNDM1LDEzICs0OTUsNDAgQEAgcHJpdmF0ZToKIAogICAgIC8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLwogICAgIC8vIEludGVybmFsIGhlbHBlcnMKKyAgICB2b2lkIGNvbXBsZXRlTm90
aWZ5RG9uZShib29sIGlzVGltZW91dCk7CisgICAgY2xhc3MgTm90aWZ5RG9uZVRpbWVkT3V0VGFz
azogcHVibGljIFdlYk1ldGhvZFRhc2s8VGVzdFJ1bm5lcj4geworICAgIHB1YmxpYzoKKyAgICAg
ICAgTm90aWZ5RG9uZVRpbWVkT3V0VGFzayhUZXN0UnVubmVyKiBvYmplY3QpOiBXZWJNZXRob2RU
YXNrPFRlc3RSdW5uZXI+KG9iamVjdCkgeyB9CisgICAgICAgIHZpcnR1YWwgdm9pZCBydW5JZlZh
bGlkKCkgeyBtX29iamVjdC0+Y29tcGxldGVOb3RpZnlEb25lKHRydWUpOyB9CisgICAgfTsKKwog
ICAgIGJvb2wgcGF1c2VBbmltYXRpb25BdFRpbWVPbkVsZW1lbnRXaXRoSWQoY29uc3QgV2ViS2l0
OjpXZWJTdHJpbmcmIGFuaW1hdGlvbk5hbWUsIGRvdWJsZSB0aW1lLCBjb25zdCBXZWJLaXQ6Oldl
YlN0cmluZyYgZWxlbWVudElkKTsKICAgICBib29sIHBhdXNlVHJhbnNpdGlvbkF0VGltZU9uRWxl
bWVudFdpdGhJZChjb25zdCBXZWJLaXQ6OldlYlN0cmluZyYgcHJvcGVydHlOYW1lLCBkb3VibGUg
dGltZSwgY29uc3QgV2ViS2l0OjpXZWJTdHJpbmcmIGVsZW1lbnRJZCk7CiAgICAgYm9vbCBlbGVt
ZW50RG9lc0F1dG9Db21wbGV0ZUZvckVsZW1lbnRXaXRoSWQoY29uc3QgV2ViS2l0OjpXZWJTdHJp
bmcmKTsKICAgICBpbnQgbnVtYmVyT2ZBY3RpdmVBbmltYXRpb25zKCk7CisgICAgYm9vbCBjcHBW
YXJpYW50VG9Cb29sKGNvbnN0IENwcFZhcmlhbnQmKTsKKyAgICBpbnQzMl90IGNwcFZhcmlhbnRU
b0ludDMyKGNvbnN0IENwcFZhcmlhbnQmKTsKKyAgICBXZWJLaXQ6OldlYlN0cmluZyBjcHBWYXJp
YW50VG9XZWJTdHJpbmcoY29uc3QgQ3BwVmFyaWFudCYpOworCisgICAgdm9pZCBwcmludEVycm9y
TWVzc2FnZShjb25zdCBzdGQ6OnN0cmluZyYpOworCisgICAgLy8gSW4gdGhlIE1hYyBjb2RlLCB0
aGlzIGlzIGNhbGxlZCB0byB0cmlnZ2VyIHRoZSBlbmQgb2YgYSB0ZXN0IGFmdGVyIHRoZQorICAg
IC8vIHBhZ2UgaGFzIGZpbmlzaGVkIGxvYWRpbmcuIEZyb20gaGVyZSwgd2UgY2FuIGdlbmVyYXRl
IHRoZSBkdW1wIGZvciB0aGUKKyAgICAvLyB0ZXN0LgorICAgIHZvaWQgbG9jYXRpb25DaGFuZ2VE
b25lKCk7CiAKICAgICBib29sIG1fdGVzdElzUnVubmluZzsKIAorICAgIC8vIFdoZW4gcmVzZXQg
aXMgY2FsbGVkLCBnbyB0aHJvdWdoIGFuZCBjbG9zZSBhbGwgYnV0IHRoZSBtYWluIHRlc3Qgc2hl
bGwKKyAgICAvLyB3aW5kb3cuIEJ5IGRlZmF1bHQsIHNldCB0byB0cnVlIGJ1dCB0b2dnbGVkIHRv
IGZhbHNlIHVzaW5nCisgICAgLy8gc2V0Q2xvc2VSZW1haW5pbmdXaW5kb3dzV2hlbkNvbXBsZXRl
KCkuCisgICAgYm9vbCBtX2Nsb3NlUmVtYWluaW5nV2luZG93czsKKworICAgIC8vIElmIHRydWUs
IGRvbid0IGR1bXAgb3V0cHV0IHVudGlsIG5vdGlmeURvbmUgaXMgY2FsbGVkLgorICAgIGJvb2wg
bV93YWl0VW50aWxEb25lOworCisgICAgV29ya1F1ZXVlIG1fd29ya1F1ZXVlOworCiAgICAgV2Vi
S2l0OjpXZWJVUkwgbV91c2VyU3R5bGVTaGVldExvY2F0aW9uOwogCiAgICAgLy8gZ2xvYmFsRmxh
ZyBpcyB1c2VkIGJ5IGEgbnVtYmVyIG9mIGxheW91dCB0ZXN0cyBpbiBodHRwL3Rlc3RzL3NlY3Vy
aXR5L2RhdGFVUkwuCkBAIC00NTMsNiArNTQwLDEyIEBAIHByaXZhdGU6CiAgICAgLy8gQm91bmQg
dmFyaWFibGUgdHJhY2tpbmcgdGhlIGRpcmVjdGlvbmFsaXR5IG9mIHRoZSA8dGl0bGU+IHRhZy4K
ICAgICBDcHBWYXJpYW50IG1fdGl0bGVUZXh0RGlyZWN0aW9uOwogCisgICAgLy8gQm91bmQgdmFy
aWFibGUgY291bnRpbmcgdGhlIG51bWJlciBvZiB0b3AgVVJMcyB2aXNpdGVkLgorICAgIENwcFZh
cmlhbnQgbV93ZWJIaXN0b3J5SXRlbUNvdW50OworCisgICAgLy8gQm91bmQgdmFyaWFibGUgdG8g
c2V0IHdoZXRoZXIgcG9zdE1lc3NhZ2VzIHNob3VsZCBiZSBpbnRlcmNlcHRlZCBvciBub3QKKyAg
ICBDcHBWYXJpYW50IG1faW50ZXJjZXB0UG9zdE1lc3NhZ2U7CisKICAgICAvLyBJZiB0cnVlLCB0
aGUgdGVzdF9zaGVsbCB3aWxsIHdyaXRlIGEgZGVzY3JpcHRpdmUgbGluZSBmb3IgZWFjaCBlZGl0
aW5nCiAgICAgLy8gY29tbWFuZC4KICAgICBib29sIG1fZHVtcEVkaXRpbmdDYWxsYmFja3M7CmRp
ZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0U2hlbGwuY3BwIGIv
VG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFNoZWxsLmNwcAppbmRleCA3MWQ5M2Rk
ZDg4NWVmMTJkYTRhM2MwYzdlMjAxZTZiMjU5NWY4ZWQzLi40YWY5YzBlNzliNzExZDA3NjU5ZWMx
MGZhM2ZjODcxM2MxYzU5YzM5IDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJv
bWl1bS9UZXN0U2hlbGwuY3BwCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rl
c3RTaGVsbC5jcHAKQEAgLTMzLDcgKzMzLDYgQEAKIAogI2luY2x1ZGUgIkRSVERldlRvb2xzQWdl
bnQuaCIKICNpbmNsdWRlICJEUlREZXZUb29sc0NsaWVudC5oIgotI2luY2x1ZGUgIkRSVFRlc3RS
dW5uZXIuaCIKICNpbmNsdWRlICJNb2NrV2ViUHJlcmVuZGVyaW5nU3VwcG9ydC5oIgogI2luY2x1
ZGUgIldlYkFycmF5QnVmZmVyVmlldy5oIgogI2luY2x1ZGUgIldlYkNhY2hlLmgiCkBAIC0xNjIs
NyArMTYxLDcgQEAgdm9pZCBUZXN0U2hlbGw6OmluaXRpYWxpemUoKQogewogICAgIG1fdGVzdElu
dGVyZmFjZXMgPSBhZG9wdFB0cihuZXcgV2ViVGVzdEludGVyZmFjZXMoKSk7CiAgICAgbV9kZXZU
b29sc1Rlc3RJbnRlcmZhY2VzID0gYWRvcHRQdHIobmV3IFdlYlRlc3RJbnRlcmZhY2VzKCkpOwot
ICAgIG1fdGVzdFJ1bm5lciA9IGFkb3B0UHRyKG5ldyBEUlRUZXN0UnVubmVyKHRoaXMpKTsKKyAg
ICBtX3Rlc3RSdW5uZXIgPSBhZG9wdFB0cihuZXcgVGVzdFJ1bm5lcigpKTsKICAgICBtX3Rlc3RJ
bnRlcmZhY2VzLT5zZXRUZXN0UnVubmVyKG1fdGVzdFJ1bm5lci5nZXQoKSk7CiAgICAgbV9kZXZU
b29sc1Rlc3RJbnRlcmZhY2VzLT5zZXRUZXN0UnVubmVyKG1fdGVzdFJ1bm5lci5nZXQoKSk7CiAj
aWYgRU5BQkxFKE5PVElGSUNBVElPTlMpIHx8IEVOQUJMRShMRUdBQ1lfTk9USUZJQ0FUSU9OUykK
QEAgLTI5Miw5ICsyOTEsNiBAQCB2b2lkIFRlc3RTaGVsbDo6cnVuRmlsZVRlc3QoY29uc3QgVGVz
dFBhcmFtcyYgcGFyYW1zLCBib29sIHNob3VsZER1bXBQaXhlbHMpCiAgICAgICAgIHx8IHRlc3RV
cmwuZmluZCgiXFxpbnNwZWN0b3JcXCIpICE9IHN0cmluZzo6bnBvcykKICAgICAgICAgc2hvd0Rl
dlRvb2xzKCk7CiAKLSAgICBpZiAobV9wYXJhbXMuZGVidWdMYXllclRyZWUpCi0gICAgICAgIG1f
dGVzdFJ1bm5lci0+c2V0U2hvd0RlYnVnTGF5ZXJUcmVlKHRydWUpOwotCiAgICAgaWYgKG1fZHVt
cFdoZW5GaW5pc2hlZCkKICAgICAgICAgbV9wcmludGVyLmhhbmRsZVRlc3RIZWFkZXIodGVzdFVy
bC5jX3N0cigpKTsKICAgICBsb2FkVVJMKG1fcGFyYW1zLnRlc3RVcmwpOwpAQCAtMzUwLDcgKzM0
Niw3IEBAIHZvaWQgVGVzdFNoZWxsOjpyZXNldFRlc3RDb250cm9sbGVyKCkKIAogdm9pZCBUZXN0
U2hlbGw6OmxvYWRVUkwoY29uc3QgV2ViVVJMJiB1cmwpCiB7Ci0gICAgbV93ZWJWaWV3SG9zdC0+
bG9hZFVSTEZvckZyYW1lKHVybCwgV2ViU3RyaW5nKCkpOworICAgIG1fd2ViVmlld0hvc3QtPmxv
YWRVUkxGb3JGcmFtZSh1cmwsIHN0cmluZygpKTsKIH0KIAogdm9pZCBUZXN0U2hlbGw6OnJlbG9h
ZCgpCkBAIC03ODEsNyArNzc3LDcgQEAgV2ViVmlld0hvc3QqIFRlc3RTaGVsbDo6Y3JlYXRlTmV3
V2luZG93KGNvbnN0IFdlYktpdDo6V2ViVVJMJiB1cmwsIERSVERldlRvb2xzQWcKICAgICBtX3By
ZWZzLmFwcGx5VG8odmlldyk7CiAgICAgdmlldy0+aW5pdGlhbGl6ZU1haW5GcmFtZShob3N0KTsK
ICAgICBtX3dpbmRvd0xpc3QuYXBwZW5kKGhvc3QpOwotICAgIGhvc3QtPmxvYWRVUkxGb3JGcmFt
ZSh1cmwsIFdlYlN0cmluZygpKTsKKyAgICBob3N0LT5sb2FkVVJMRm9yRnJhbWUodXJsLCBzdHJp
bmcoKSk7CiAgICAgcmV0dXJuIGhvc3Q7CiB9CiAKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5k
ZXJUcmVlL2Nocm9taXVtL1Rlc3RTaGVsbC5oIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21p
dW0vVGVzdFNoZWxsLmgKaW5kZXggN2U1M2JjOWI1Yjc4Y2U2YmE3YjJkOTE3MzQ4YWQ2ZDdlZTY0
Y2VhOC4uZTUyZWZmMzFlMGQ5YzFjYTg5OGZjOWZlOTZiOTBlMTU0ZjRhYzUyMSAxMDA2NDQKLS0t
IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFNoZWxsLmgKKysrIGIvVG9vbHMv
RHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFNoZWxsLmgKQEAgLTMxLDkgKzMxLDkgQEAKICNp
Zm5kZWYgVGVzdFNoZWxsX2gKICNkZWZpbmUgVGVzdFNoZWxsX2gKIAotI2luY2x1ZGUgIkRSVFRl
c3RSdW5uZXIuaCIKICNpbmNsdWRlICJOb3RpZmljYXRpb25QcmVzZW50ZXIuaCIKICNpbmNsdWRl
ICJUZXN0RXZlbnRQcmludGVyLmgiCisjaW5jbHVkZSAiVGVzdFJ1bm5lci9zcmMvVGVzdFJ1bm5l
ci5oIgogI2luY2x1ZGUgIldlYlByZWZlcmVuY2VzLmgiCiAjaW5jbHVkZSAiV2ViVGVzdEludGVy
ZmFjZXMuaCIKICNpbmNsdWRlICJXZWJWaWV3SG9zdC5oIgpAQCAtODQsNyArODQsNyBAQCBwdWJs
aWM6CiAgICAgV2ViS2l0OjpXZWJWaWV3KiB3ZWJWaWV3KCkgY29uc3QgeyByZXR1cm4gbV93ZWJW
aWV3OyB9CiAgICAgLy8gUmV0dXJucyB0aGUgaG9zdCBmb3IgdGhlIG1haW4gV2ViVmlldy4KICAg
ICBXZWJWaWV3SG9zdCogd2ViVmlld0hvc3QoKSBjb25zdCB7IHJldHVybiBtX3dlYlZpZXdIb3N0
LmdldCgpOyB9Ci0gICAgRFJUVGVzdFJ1bm5lciogdGVzdFJ1bm5lcigpIGNvbnN0IHsgcmV0dXJu
IG1fdGVzdFJ1bm5lci5nZXQoKTsgfQorICAgIFdlYlRlc3RSdW5uZXI6OldlYlRlc3RSdW5uZXIq
IHRlc3RSdW5uZXIoKSBjb25zdCB7IHJldHVybiBtX3Rlc3RSdW5uZXIuZ2V0KCk7IH0KICAgICBX
ZWJUZXN0UnVubmVyOjpXZWJFdmVudFNlbmRlciogZXZlbnRTZW5kZXIoKSBjb25zdCB7IHJldHVy
biBtX3Rlc3RJbnRlcmZhY2VzLT5ldmVudFNlbmRlcigpOyB9CiAgICAgV2ViVGVzdFJ1bm5lcjo6
V2ViQWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIqIGFjY2Vzc2liaWxpdHlDb250cm9sbGVyKCkgY29u
c3QgeyByZXR1cm4gbV90ZXN0SW50ZXJmYWNlcy0+YWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIoKTsg
fQogI2lmIEVOQUJMRShOT1RJRklDQVRJT05TKQpAQCAtMjExLDcgKzIxMSw3IEBAIHByaXZhdGU6
CiAgICAgT3duUHRyPERSVERldlRvb2xzQ2xpZW50PiBtX2RydERldlRvb2xzQ2xpZW50OwogICAg
IE93blB0cjxXZWJUZXN0UnVubmVyOjpXZWJUZXN0SW50ZXJmYWNlcz4gbV90ZXN0SW50ZXJmYWNl
czsKICAgICBPd25QdHI8V2ViVGVzdFJ1bm5lcjo6V2ViVGVzdEludGVyZmFjZXM+IG1fZGV2VG9v
bHNUZXN0SW50ZXJmYWNlczsKLSAgICBPd25QdHI8RFJUVGVzdFJ1bm5lcj4gbV90ZXN0UnVubmVy
OworICAgIE93blB0cjxXZWJUZXN0UnVubmVyOjpUZXN0UnVubmVyPiBtX3Rlc3RSdW5uZXI7CiAj
aWYgRU5BQkxFKE5PVElGSUNBVElPTlMpIHx8IEVOQUJMRShMRUdBQ1lfTk9USUZJQ0FUSU9OUykK
ICAgICBPd25QdHI8Tm90aWZpY2F0aW9uUHJlc2VudGVyPiBtX25vdGlmaWNhdGlvblByZXNlbnRl
cjsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vV2Vi
Vmlld0hvc3QuY3BwIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vV2ViVmlld0hvc3Qu
Y3BwCmluZGV4IDg0ZTE0ZTUwMjgyODlmNmU4NzEyZTNlZDZjOTZmZDdmYzdjZGE0OWEuLjExOWY4
ZTk1N2EwYTZjMjZiZmI4OWIyMTIzOTJlOTdiMWQyYWNiYWYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1
bXBSZW5kZXJUcmVlL2Nocm9taXVtL1dlYlZpZXdIb3N0LmNwcAorKysgYi9Ub29scy9EdW1wUmVu
ZGVyVHJlZS9jaHJvbWl1bS9XZWJWaWV3SG9zdC5jcHAKQEAgLTMyLDcgKzMyLDYgQEAKICNpbmNs
dWRlICJXZWJWaWV3SG9zdC5oIgogCiAjaW5jbHVkZSAiRFJURGV2VG9vbHNBZ2VudC5oIgotI2lu
Y2x1ZGUgIkRSVFRlc3RSdW5uZXIuaCIKICNpbmNsdWRlICJNb2NrV2ViU3BlZWNoSW5wdXRDb250
cm9sbGVyLmgiCiAjaW5jbHVkZSAiTW9ja1dlYlNwZWVjaFJlY29nbml6ZXIuaCIKICNpbmNsdWRl
ICJUYXNrLmgiCkBAIC0xMDQzLDYgKzEwNDIsNzEgQEAgdm9pZCBXZWJWaWV3SG9zdDo6ZGlzcGxh
eUludmFsaWRhdGVkUmVnaW9uKCkKICAgICBkaXNwbGF5UmVwYWludE1hc2soKTsKIH0KIAordm9p
ZCBXZWJWaWV3SG9zdDo6dGVzdEZpbmlzaGVkKCkKK3sKKyAgICBtX3NoZWxsLT50ZXN0RmluaXNo
ZWQoKTsKK30KKwordm9pZCBXZWJWaWV3SG9zdDo6dGVzdFRpbWVkT3V0KCkKK3sKKyAgICBtX3No
ZWxsLT50ZXN0VGltZWRPdXQoKTsKK30KKworYm9vbCBXZWJWaWV3SG9zdDo6aXNCZWluZ0RlYnVn
Z2VkKCkKK3sKKyAgICByZXR1cm4gd2Via2l0X3N1cHBvcnQ6OkJlaW5nRGVidWdnZWQoKTsKK30K
KworaW50IFdlYlZpZXdIb3N0OjpsYXlvdXRUZXN0VGltZW91dCgpCit7CisgICAgcmV0dXJuIG1f
c2hlbGwtPmxheW91dFRlc3RUaW1lb3V0KCk7Cit9CisKK3ZvaWQgV2ViVmlld0hvc3Q6OmNsb3Nl
UmVtYWluaW5nV2luZG93cygpCit7CisgICAgbV9zaGVsbC0+Y2xvc2VSZW1haW5pbmdXaW5kb3dz
KCk7Cit9CisKK2ludCBXZWJWaWV3SG9zdDo6bmF2aWdhdGlvbkVudHJ5Q291bnQoKQoreworICAg
IHJldHVybiBtX3NoZWxsLT5uYXZpZ2F0aW9uRW50cnlDb3VudCgpOworfQorCitpbnQgV2ViVmll
d0hvc3Q6OndpbmRvd0NvdW50KCkKK3sKKyAgICByZXR1cm4gbV9zaGVsbC0+d2luZG93Q291bnQo
KTsKK30KKwordm9pZCBXZWJWaWV3SG9zdDo6c2V0Q3VzdG9tUG9saWN5RGVsZWdhdGUoYm9vbCBp
c0N1c3RvbSwgYm9vbCBpc1Blcm1pc3NpdmUpCit7CisgICAgbV9wb2xpY3lEZWxlZ2F0ZUVuYWJs
ZWQgPSBpc0N1c3RvbTsKKyAgICBtX3BvbGljeURlbGVnYXRlSXNQZXJtaXNzaXZlID0gaXNQZXJt
aXNzaXZlOworfQorCit2b2lkIFdlYlZpZXdIb3N0Ojp3YWl0Rm9yUG9saWN5RGVsZWdhdGUoKQor
eworICAgIG1fcG9saWN5RGVsZWdhdGVFbmFibGVkID0gdHJ1ZTsKKyAgICBtX3BvbGljeURlbGVn
YXRlU2hvdWxkTm90aWZ5RG9uZSA9IHRydWU7Cit9CisKK3ZvaWQgV2ViVmlld0hvc3Q6OmdvVG9P
ZmZzZXQoaW50IG9mZnNldCkKK3sKKyAgICBtX3NoZWxsLT5nb1RvT2Zmc2V0KG9mZnNldCk7Cit9
CisKK3ZvaWQgV2ViVmlld0hvc3Q6OnJlbG9hZCgpCit7CisgICAgbV9zaGVsbC0+cmVsb2FkKCk7
Cit9CisKK3ZvaWQgV2ViVmlld0hvc3Q6OmxvYWRVUkxGb3JGcmFtZShjb25zdCBXZWJVUkwmIHVy
bCwgY29uc3Qgc3RyaW5nJiBmcmFtZU5hbWUpCit7CisgICAgaWYgKCF1cmwuaXNWYWxpZCgpKQor
ICAgICAgICByZXR1cm47CisgICAgVGVzdFNoZWxsOjpyZXNpemVXaW5kb3dGb3JUZXN0KHRoaXMs
IHVybCk7CisgICAgbmF2aWdhdGlvbkNvbnRyb2xsZXIoKS0+bG9hZEVudHJ5KFRlc3ROYXZpZ2F0
aW9uRW50cnk6OmNyZWF0ZSgtMSwgdXJsLCBXZWJTdHJpbmcoKSwgV2ViU3RyaW5nOjpmcm9tVVRG
OChmcmFtZU5hbWUpKS5nZXQoKSk7Cit9CisKIC8vIFB1YmxpYyBmdW5jdGlvbnMgLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAogV2Vi
Vmlld0hvc3Q6OldlYlZpZXdIb3N0KFRlc3RTaGVsbCogc2hlbGwpCkBAIC0xMDcwLDcgKzExMzQs
NyBAQCB2b2lkIFdlYlZpZXdIb3N0OjpzaHV0ZG93bigpCiAgICAgaWYgKG1fc2hlbGwtPmRldlRv
b2xzV2ViVmlldygpICE9IHRoaXMpIHsKICAgICAgICAgLy8gTmF2aWdhdGUgdG8gYW4gZW1wdHkg
cGFnZSB0byBmaXJlIGFsbCB0aGUgZGVzdHJ1Y3Rpb24gbG9naWMgZm9yIHRoZQogICAgICAgICAv
LyBjdXJyZW50IHBhZ2UuCi0gICAgICAgIGxvYWRVUkxGb3JGcmFtZShHVVJMKCJhYm91dDpibGFu
ayIpLCBXZWJTdHJpbmcoKSk7CisgICAgICAgIGxvYWRVUkxGb3JGcmFtZShHVVJMKCJhYm91dDpi
bGFuayIpLCBzdHJpbmcoKSk7CiAgICAgfQogCiAgICAgZm9yIChWZWN0b3I8V2ViS2l0OjpXZWJX
aWRnZXQqPjo6aXRlcmF0b3IgaXQgPSBtX3BvcHVwbWVudXMuYmVnaW4oKTsKQEAgLTExODYsMjYg
KzEyNTAsNiBAQCB2b2lkIFdlYlZpZXdIb3N0OjpzZXRDbGllbnRXaW5kb3dSZWN0KGNvbnN0IFdl
YktpdDo6V2ViUmVjdCYgcmVjdCkKICAgICBzZXRXaW5kb3dSZWN0KHJlY3QpOwogfQogCi12b2lk
IFdlYlZpZXdIb3N0OjpzZXRDdXN0b21Qb2xpY3lEZWxlZ2F0ZShib29sIGlzQ3VzdG9tLCBib29s
IGlzUGVybWlzc2l2ZSkKLXsKLSAgICBtX3BvbGljeURlbGVnYXRlRW5hYmxlZCA9IGlzQ3VzdG9t
OwotICAgIG1fcG9saWN5RGVsZWdhdGVJc1Blcm1pc3NpdmUgPSBpc1Blcm1pc3NpdmU7Ci19Ci0K
LXZvaWQgV2ViVmlld0hvc3Q6OndhaXRGb3JQb2xpY3lEZWxlZ2F0ZSgpCi17Ci0gICAgbV9wb2xp
Y3lEZWxlZ2F0ZUVuYWJsZWQgPSB0cnVlOwotICAgIG1fcG9saWN5RGVsZWdhdGVTaG91bGROb3Rp
ZnlEb25lID0gdHJ1ZTsKLX0KLQotdm9pZCBXZWJWaWV3SG9zdDo6bG9hZFVSTEZvckZyYW1lKGNv
bnN0IFdlYlVSTCYgdXJsLCBjb25zdCBXZWJTdHJpbmcmIGZyYW1lTmFtZSkKLXsKLSAgICBpZiAo
IXVybC5pc1ZhbGlkKCkpCi0gICAgICAgIHJldHVybjsKLSAgICBUZXN0U2hlbGw6OnJlc2l6ZVdp
bmRvd0ZvclRlc3QodGhpcywgdXJsKTsKLSAgICBuYXZpZ2F0aW9uQ29udHJvbGxlcigpLT5sb2Fk
RW50cnkoVGVzdE5hdmlnYXRpb25FbnRyeTo6Y3JlYXRlKC0xLCB1cmwsIFdlYlN0cmluZygpLCBm
cmFtZU5hbWUpLmdldCgpKTsKLX0KLQogYm9vbCBXZWJWaWV3SG9zdDo6bmF2aWdhdGUoY29uc3Qg
VGVzdE5hdmlnYXRpb25FbnRyeSYgZW50cnksIGJvb2wgcmVsb2FkKQogewogICAgIC8vIEdldCB0
aGUgcmlnaHQgdGFyZ2V0IGZyYW1lIGZvciB0aGUgZW50cnkuCkBAIC0xMjUwLDcgKzEyOTQsNyBA
QCBib29sIFdlYlZpZXdIb3N0OjpuYXZpZ2F0ZShjb25zdCBUZXN0TmF2aWdhdGlvbkVudHJ5JiBl
bnRyeSwgYm9vbCByZWxvYWQpCiAKIC8vIFByaXZhdGUgZnVuY3Rpb25zIC0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAotRFJUVGVzdFJ1
bm5lciogV2ViVmlld0hvc3Q6OnRlc3RSdW5uZXIoKSBjb25zdAorOjpXZWJUZXN0UnVubmVyOjpX
ZWJUZXN0UnVubmVyKiBXZWJWaWV3SG9zdDo6dGVzdFJ1bm5lcigpIGNvbnN0CiB7CiAgICAgcmV0
dXJuIG1fc2hlbGwtPnRlc3RSdW5uZXIoKTsKIH0KZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5k
ZXJUcmVlL2Nocm9taXVtL1dlYlZpZXdIb3N0LmggYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJv
bWl1bS9XZWJWaWV3SG9zdC5oCmluZGV4IDdmZDAwNjI0ZDgxYTQ2OWE5OWE3YWQ5YzM1ZGZkMTkw
NTI5OGVjNWUuLjIyYzQ5MGYzZDM4MzlhNTczZWQ2OWM4MTE1NDAwMWQ1MDk3ZmY3NWEgMTAwNjQ0
Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1dlYlZpZXdIb3N0LmgKKysrIGIv
VG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vV2ViVmlld0hvc3QuaApAQCAtNDYsNyArNDYs
NiBAQAogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJp
bmcuaD4KIAotY2xhc3MgRFJUVGVzdFJ1bm5lcjsKIGNsYXNzIE1vY2tXZWJTcGVlY2hJbnB1dENv
bnRyb2xsZXI7CiBjbGFzcyBNb2NrV2ViU3BlZWNoUmVjb2duaXplcjsKIGNsYXNzIFNrQ2FudmFz
OwpAQCAtNzUsNiArNzQsMTAgQEAgY2xhc3MgTWVkaWFTdHJlYW1VdGlsOwogY2xhc3MgVGVzdE1l
ZGlhU3RyZWFtQ2xpZW50OwogfQogCituYW1lc3BhY2UgV2ViVGVzdFJ1bm5lciB7CitjbGFzcyBX
ZWJUZXN0UnVubmVyOworfQorCiBjbGFzcyBXZWJWaWV3SG9zdCA6IHB1YmxpYyBXZWJLaXQ6Oldl
YlZpZXdDbGllbnQsIHB1YmxpYyBXZWJLaXQ6OldlYkZyYW1lQ2xpZW50LCBwdWJsaWMgTmF2aWdh
dGlvbkhvc3QsIHB1YmxpYyBXZWJLaXQ6OldlYlByZXJlbmRlcmVyQ2xpZW50LCBwdWJsaWMgV2Vi
VGVzdFJ1bm5lcjo6V2ViVGVzdERlbGVnYXRlIHsKICBwdWJsaWM6CiAgICAgV2ViVmlld0hvc3Qo
VGVzdFNoZWxsKik7CkBAIC04Niw4ICs4OSw2IEBAIGNsYXNzIFdlYlZpZXdIb3N0IDogcHVibGlj
IFdlYktpdDo6V2ViVmlld0NsaWVudCwgcHVibGljIFdlYktpdDo6V2ViRnJhbWVDbGllbnQsCiAg
ICAgV2ViVGVzdFJ1bm5lcjo6V2ViVGVzdFByb3h5QmFzZSogcHJveHkoKSBjb25zdDsKICAgICB2
b2lkIHNldFByb3h5KFdlYlRlc3RSdW5uZXI6OldlYlRlc3RQcm94eUJhc2UqKTsKICAgICB2b2lk
IHJlc2V0KCk7Ci0gICAgdm9pZCB3YWl0Rm9yUG9saWN5RGVsZWdhdGUoKTsKLSAgICB2b2lkIHNl
dEN1c3RvbVBvbGljeURlbGVnYXRlKGJvb2wsIGJvb2wpOwogICAgIHZvaWQgc2V0UGVuZGluZ0V4
dHJhRGF0YShQYXNzT3duUHRyPFRlc3RTaGVsbEV4dHJhRGF0YT4pOwogCiAgICAgdm9pZCBwYWlu
dFJlY3QoY29uc3QgV2ViS2l0OjpXZWJSZWN0Jik7CkBAIC05Niw3ICs5Nyw2IEBAIGNsYXNzIFdl
YlZpZXdIb3N0IDogcHVibGljIFdlYktpdDo6V2ViVmlld0NsaWVudCwgcHVibGljIFdlYktpdDo6
V2ViRnJhbWVDbGllbnQsCiAgICAgU2tDYW52YXMqIGNhbnZhcygpOwogICAgIHZvaWQgZGlzcGxh
eVJlcGFpbnRNYXNrKCk7CiAKLSAgICB2b2lkIGxvYWRVUkxGb3JGcmFtZShjb25zdCBXZWJLaXQ6
OldlYlVSTCYsIGNvbnN0IFdlYktpdDo6V2ViU3RyaW5nJiBmcmFtZU5hbWUpOwogICAgIFRlc3RO
YXZpZ2F0aW9uQ29udHJvbGxlciogbmF2aWdhdGlvbkNvbnRyb2xsZXIoKSB7IHJldHVybiBtX25h
dmlnYXRpb25Db250cm9sbGVyLmdldCgpOyB9CiAKICAgICB2b2lkIGNsb3NlV2lkZ2V0KCk7CkBA
IC0xNjksNiArMTY5LDE4IEBAIGNsYXNzIFdlYlZpZXdIb3N0IDogcHVibGljIFdlYktpdDo6V2Vi
Vmlld0NsaWVudCwgcHVibGljIFdlYktpdDo6V2ViRnJhbWVDbGllbnQsCiAjZW5kaWYKICAgICB2
aXJ0dWFsIHZvaWQgZGlzcGxheSgpIE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCBkaXNwbGF5
SW52YWxpZGF0ZWRSZWdpb24oKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgdGVzdEZpbmlz
aGVkKCkgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIHRlc3RUaW1lZE91dCgpIE9WRVJSSURF
OworICAgIHZpcnR1YWwgYm9vbCBpc0JlaW5nRGVidWdnZWQoKSBPVkVSUklERTsKKyAgICB2aXJ0
dWFsIGludCBsYXlvdXRUZXN0VGltZW91dCgpIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBj
bG9zZVJlbWFpbmluZ1dpbmRvd3MoKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIGludCBuYXZpZ2F0
aW9uRW50cnlDb3VudCgpIE9WRVJSSURFOworICAgIHZpcnR1YWwgaW50IHdpbmRvd0NvdW50KCkg
T1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIHNldEN1c3RvbVBvbGljeURlbGVnYXRlKGJvb2ws
IGJvb2wpIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCB3YWl0Rm9yUG9saWN5RGVsZWdhdGUo
KSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgZ29Ub09mZnNldChpbnQpIE9WRVJSSURFOwor
ICAgIHZpcnR1YWwgdm9pZCByZWxvYWQoKSBPVkVSUklERTsKKyAgICB2b2lkIGxvYWRVUkxGb3JG
cmFtZShjb25zdCBXZWJLaXQ6OldlYlVSTCYsIGNvbnN0IHN0ZDo6c3RyaW5nJiBmcmFtZU5hbWUp
IE9WRVJSSURFOwogCiAgICAgLy8gTmF2aWdhdGlvbkhvc3QKICAgICB2aXJ0dWFsIGJvb2wgbmF2
aWdhdGUoY29uc3QgVGVzdE5hdmlnYXRpb25FbnRyeSYsIGJvb2wgcmVsb2FkKTsKQEAgLTI5NCw3
ICszMDYsNyBAQCBwcml2YXRlOgogICAgICAgICBDYWxsYmFja01ldGhvZFR5cGUgbV9jYWxsYmFj
azsKICAgICB9OwogCi0gICAgRFJUVGVzdFJ1bm5lciogdGVzdFJ1bm5lcigpIGNvbnN0OworICAg
IFdlYlRlc3RSdW5uZXI6OldlYlRlc3RSdW5uZXIqIHRlc3RSdW5uZXIoKSBjb25zdDsKIAogICAg
IC8vIENhbGxlZCB0aGUgdGl0bGUgb2YgdGhlIHBhZ2UgY2hhbmdlcy4KICAgICAvLyBDYW4gYmUg
dXNlZCB0byB1cGRhdGUgdGhlIHRpdGxlIG9mIHRoZSB3aW5kb3cuCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>