<?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>106904</bug_id>
          
          <creation_ts>2013-01-15 07:12:44 -0800</creation_ts>
          <short_desc>[chromium] route more webkit_support and webviewhost callbacks through WebTestDelegate</short_desc>
          <delta_ts>2013-01-16 04:43:17 -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>
          <dependson>106970</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter>jochen</reporter>
          <assigned_to>jochen</assigned_to>
          <cc>abarth</cc>
    
    <cc>dglazkov</cc>
    
    <cc>fishd</cc>
    
    <cc>jamesr</cc>
    
    <cc>leviw</cc>
    
    <cc>peter+ews</cc>
    
    <cc>tkent+wkapi</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>807260</commentid>
    <comment_count>0</comment_count>
    <who name="">jochen</who>
    <bug_when>2013-01-15 07:12:44 -0800</bug_when>
    <thetext>[chromium] route more webkit_support and webviewhost callbacks through WebTestDelegate</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>807261</commentid>
    <comment_count>1</comment_count>
      <attachid>182760</attachid>
    <who name="">jochen</who>
    <bug_when>2013-01-15 07:13:21 -0800</bug_when>
    <thetext>Created attachment 182760
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>807265</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-01-15 07:16:25 -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>807275</commentid>
    <comment_count>3</comment_count>
      <attachid>182760</attachid>
    <who name="Peter Beverloo (cr-android ews)">peter+ews</who>
    <bug_when>2013-01-15 07:24:46 -0800</bug_when>
    <thetext>Comment on attachment 182760
Patch

Attachment 182760 did not pass cr-android-ews (chromium-android):
Output: http://queues.webkit.org/results/15868896</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>807279</commentid>
    <comment_count>4</comment_count>
      <attachid>182767</attachid>
    <who name="">jochen</who>
    <bug_when>2013-01-15 07:29:47 -0800</bug_when>
    <thetext>Created attachment 182767
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>807281</commentid>
    <comment_count>5</comment_count>
      <attachid>182767</attachid>
    <who name="Peter Beverloo (cr-android ews)">peter+ews</who>
    <bug_when>2013-01-15 07:34:10 -0800</bug_when>
    <thetext>Comment on attachment 182767
Patch

Attachment 182767 did not pass cr-android-ews (chromium-android):
Output: http://queues.webkit.org/results/15845959</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>807282</commentid>
    <comment_count>6</comment_count>
      <attachid>182769</attachid>
    <who name="">jochen</who>
    <bug_when>2013-01-15 07:36:07 -0800</bug_when>
    <thetext>Created attachment 182769
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>807283</commentid>
    <comment_count>7</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-01-15 07:37:43 -0800</bug_when>
    <thetext>Attachment 182769 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Tools/ChangeLog&apos;, u&apos;Tools/DumpRenderTree/c...&quot; exit_code: 1
Tools/DumpRenderTree/chromium/WebViewHost.cpp:73:  Alphabetical sorting problem.  [build/include_order] [4]
Total errors found: 1 in 7 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>807287</commentid>
    <comment_count>8</comment_count>
      <attachid>182770</attachid>
    <who name="">jochen</who>
    <bug_when>2013-01-15 07:41:23 -0800</bug_when>
    <thetext>Created attachment 182770
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>807659</commentid>
    <comment_count>9</comment_count>
      <attachid>182842</attachid>
    <who name="">jochen</who>
    <bug_when>2013-01-15 13:49:33 -0800</bug_when>
    <thetext>Created attachment 182842
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>807687</commentid>
    <comment_count>10</comment_count>
      <attachid>182842</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-01-15 14:23:10 -0800</bug_when>
    <thetext>Comment on attachment 182842
Patch for landing

Clearing flags on attachment: 182842

Committed r139792: &lt;http://trac.webkit.org/changeset/139792&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>807688</commentid>
    <comment_count>11</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-01-15 14:23:14 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>807907</commentid>
    <comment_count>12</comment_count>
    <who name="Levi Weintraub">leviw</who>
    <bug_when>2013-01-15 18:37:12 -0800</bug_when>
    <thetext>Re-opened since this is blocked by bug 106970</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>808250</commentid>
    <comment_count>13</comment_count>
      <attachid>182954</attachid>
    <who name="">jochen</who>
    <bug_when>2013-01-16 03:57:00 -0800</bug_when>
    <thetext>Created attachment 182954
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>808276</commentid>
    <comment_count>14</comment_count>
      <attachid>182954</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-01-16 04:43:12 -0800</bug_when>
    <thetext>Comment on attachment 182954
Patch

Clearing flags on attachment: 182954

Committed r139872: &lt;http://trac.webkit.org/changeset/139872&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>808277</commentid>
    <comment_count>15</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-01-16 04:43:17 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>182760</attachid>
            <date>2013-01-15 07:13:21 -0800</date>
            <delta_ts>2013-01-15 07:29:43 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-106904-20130115161021.patch</filename>
            <type>text/plain</type>
            <size>25357</size>
            <attacher>jochen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM5NzMyCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggZGIwNjg4Y2Q5MTIzMmIyOGIxNmZjMGY0NzU5YjRmMGZi
MmZiNDgwZC4uY2Q2NzU1ZGE2OWVkY2JkODdhMTMxNmU2MTNmMTA5NGM5MWExZmU5ZCAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQz
IEBACisyMDEzLTAxLTE1ICBKb2NoZW4gRWlzaW5nZXIgIDxqb2NoZW5AY2hyb21pdW0ub3JnPgor
CisgICAgICAgIFtjaHJvbWl1bV0gcm91dGUgbW9yZSB3ZWJraXRfc3VwcG9ydCBhbmQgd2Vidmll
d2hvc3QgY2FsbGJhY2tzIHRocm91Z2ggV2ViVGVzdERlbGVnYXRlCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDY5MDQKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2Nocm9taXVt
L0RSVFRlc3RSdW5uZXIuY3BwOgorICAgICAgICAoRFJUVGVzdFJ1bm5lcjo6RFJUVGVzdFJ1bm5l
cik6CisgICAgICAgIChEUlRUZXN0UnVubmVyOjpub3RpZnlEb25lKToKKyAgICAgICAgKERSVFRl
c3RSdW5uZXI6OnJlc2V0KToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9EUlRU
ZXN0UnVubmVyLmg6CisgICAgICAgIChEUlRUZXN0UnVubmVyKToKKyAgICAgICAgKiBEdW1wUmVu
ZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3B1YmxpYy9XZWJUZXN0RGVsZWdhdGUuaDoKKyAg
ICAgICAgKFdlYlRlc3RSdW5uZXI6OldlYlRlc3REZWxlZ2F0ZTo6c2V0RGV2aWNlU2NhbGVGYWN0
b3IpOgorICAgICAgICAoV2ViVGVzdFJ1bm5lcjo6V2ViVGVzdERlbGVnYXRlOjpzZXRGb2N1cyk6
CisgICAgICAgIChXZWJUZXN0UnVubmVyOjpXZWJUZXN0RGVsZWdhdGU6OnNldEFjY2VwdEFsbENv
b2tpZXMpOgorICAgICAgICAoV2ViVGVzdFJ1bm5lcjo6V2ViVGVzdERlbGVnYXRlOjpwYXRoVG9M
b2NhbFJlc291cmNlKToKKyAgICAgICAgKFdlYlRlc3RSdW5uZXI6OldlYlRlc3REZWxlZ2F0ZTo6
c2V0TG9jYWxlKToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVy
L3NyYy9UZXN0UnVubmVyLmNwcDoKKyAgICAgICAgKFdlYlRlc3RSdW5uZXI6OlRlc3RSdW5uZXI6
OlRlc3RSdW5uZXIpOgorICAgICAgICAoV2ViVGVzdFJ1bm5lcjo6VGVzdFJ1bm5lcjo6cmVzZXQp
OgorICAgICAgICAoV2ViVGVzdFJ1bm5lcjo6VGVzdFJ1bm5lcjo6c2V0QWx3YXlzQWNjZXB0Q29v
a2llcyk6CisgICAgICAgIChXZWJUZXN0UnVubmVyKToKKyAgICAgICAgKFdlYlRlc3RSdW5uZXI6
OlRlc3RSdW5uZXI6OnNldFdpbmRvd0lzS2V5KToKKyAgICAgICAgKFdlYlRlc3RSdW5uZXI6OlRl
c3RSdW5uZXI6OnBhdGhUb0xvY2FsUmVzb3VyY2UpOgorICAgICAgICAoV2ViVGVzdFJ1bm5lcjo6
VGVzdFJ1bm5lcjo6c2V0QmFja2luZ1NjYWxlRmFjdG9yKToKKyAgICAgICAgKFdlYlRlc3RSdW5u
ZXI6OlRlc3RSdW5uZXI6OnNldFBPU0lYTG9jYWxlKToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJl
ZS9jaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9UZXN0UnVubmVyLmg6CisgICAgICAgIChXZWJUZXN0
UnVubmVyOjpUZXN0UnVubmVyOjp0YXNrTGlzdCk6CisgICAgICAgIChUZXN0UnVubmVyKToKKyAg
ICAgICAgKiBEdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9XZWJWaWV3SG9zdC5jcHA6CisgICAgICAg
IChXZWJWaWV3SG9zdDo6c2V0RGV2aWNlU2NhbGVGYWN0b3IpOgorICAgICAgICAoV2ViVmlld0hv
c3Q6OnNldEZvY3VzKToKKyAgICAgICAgKFdlYlZpZXdIb3N0OjpzZXRBY2NlcHRBbGxDb29raWVz
KToKKyAgICAgICAgKFdlYlZpZXdIb3N0OjpwYXRoVG9Mb2NhbFJlc291cmNlKToKKyAgICAgICAg
KFdlYlZpZXdIb3N0OjpzZXRMb2NhbGUpOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2Nocm9t
aXVtL1dlYlZpZXdIb3N0Lmg6CisgICAgICAgIChXZWJWaWV3SG9zdCk6CisKIDIwMTMtMDEtMTUg
IEFuZHJhcyBCZWNzaSAgPGFuZHJhcy5iZWNzaUBkaWdpYS5jb20+CiAKICAgICAgICAgW1F0XSBG
aXggSW1hZ2VEaWZmJ3MgaW1hZ2UgZm9ybWF0IGNvbnZlcnNpb24KZGlmZiAtLWdpdCBhL1Rvb2xz
L0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL0RSVFRlc3RSdW5uZXIuY3BwIGIvVG9vbHMvRHVtcFJl
bmRlclRyZWUvY2hyb21pdW0vRFJUVGVzdFJ1bm5lci5jcHAKaW5kZXggM2YwNjQ2OWEyZDdiYWUy
NGNhOGM5OTRkNzE1MWM0YzQzMjFlNGJkNi4uNTFhZWRmOGRjNWZhY2Q5MzBmYzE2YjI4MzMzMmRl
MGMxYzQ0ZjdkMSAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vRFJU
VGVzdFJ1bm5lci5jcHAKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vRFJUVGVz
dFJ1bm5lci5jcHAKQEAgLTY4LDcgKzY4LDYgQEAKICNpbmNsdWRlICJ3ZWJraXQvc3VwcG9ydC93
ZWJraXRfc3VwcG9ydC5oIgogI2luY2x1ZGUgPGFsZ29yaXRobT4KICNpbmNsdWRlIDxjY3R5cGU+
Ci0jaW5jbHVkZSA8Y2xvY2FsZT4KICNpbmNsdWRlIDxjc3RkbGliPgogI2luY2x1ZGUgPGxpbWl0
cz4KICNpbmNsdWRlIDxzc3RyZWFtPgpAQCAtMTE3LDcgKzExNiw2IEBAIERSVFRlc3RSdW5uZXI6
OkRSVFRlc3RSdW5uZXIoVGVzdFNoZWxsKiBzaGVsbCkKICNlbmRpZgogICAgIGJpbmRNZXRob2Qo
Im5vdGlmeURvbmUiLCAmRFJUVGVzdFJ1bm5lcjo6bm90aWZ5RG9uZSk7CiAgICAgYmluZE1ldGhv
ZCgibnVtYmVyT2ZQZW5kaW5nR2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdHMiLCAmRFJUVGVz
dFJ1bm5lcjo6IG51bWJlck9mUGVuZGluZ0dlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3RzKTsK
LSAgICBiaW5kTWV0aG9kKCJwYXRoVG9Mb2NhbFJlc291cmNlIiwgJkRSVFRlc3RSdW5uZXI6OnBh
dGhUb0xvY2FsUmVzb3VyY2UpOwogICAgIGJpbmRNZXRob2QoInF1ZXVlQmFja05hdmlnYXRpb24i
LCAmRFJUVGVzdFJ1bm5lcjo6cXVldWVCYWNrTmF2aWdhdGlvbik7CiAgICAgYmluZE1ldGhvZCgi
cXVldWVGb3J3YXJkTmF2aWdhdGlvbiIsICZEUlRUZXN0UnVubmVyOjpxdWV1ZUZvcndhcmROYXZp
Z2F0aW9uKTsKICAgICBiaW5kTWV0aG9kKCJxdWV1ZUxvYWRpbmdTY3JpcHQiLCAmRFJUVGVzdFJ1
bm5lcjo6cXVldWVMb2FkaW5nU2NyaXB0KTsKQEAgLTEyNSw3ICsxMjMsNiBAQCBEUlRUZXN0UnVu
bmVyOjpEUlRUZXN0UnVubmVyKFRlc3RTaGVsbCogc2hlbGwpCiAgICAgYmluZE1ldGhvZCgicXVl
dWVMb2FkSFRNTFN0cmluZyIsICZEUlRUZXN0UnVubmVyOjpxdWV1ZUxvYWRIVE1MU3RyaW5nKTsK
ICAgICBiaW5kTWV0aG9kKCJxdWV1ZU5vbkxvYWRpbmdTY3JpcHQiLCAmRFJUVGVzdFJ1bm5lcjo6
cXVldWVOb25Mb2FkaW5nU2NyaXB0KTsKICAgICBiaW5kTWV0aG9kKCJxdWV1ZVJlbG9hZCIsICZE
UlRUZXN0UnVubmVyOjpxdWV1ZVJlbG9hZCk7Ci0gICAgYmluZE1ldGhvZCgic2V0QWx3YXlzQWNj
ZXB0Q29va2llcyIsICZEUlRUZXN0UnVubmVyOjpzZXRBbHdheXNBY2NlcHRDb29raWVzKTsKICAg
ICBiaW5kTWV0aG9kKCJzZXRDbG9zZVJlbWFpbmluZ1dpbmRvd3NXaGVuQ29tcGxldGUiLCAmRFJU
VGVzdFJ1bm5lcjo6c2V0Q2xvc2VSZW1haW5pbmdXaW5kb3dzV2hlbkNvbXBsZXRlKTsKICAgICBi
aW5kTWV0aG9kKCJzZXRDdXN0b21Qb2xpY3lEZWxlZ2F0ZSIsICZEUlRUZXN0UnVubmVyOjpzZXRD
dXN0b21Qb2xpY3lEZWxlZ2F0ZSk7CiAgICAgYmluZE1ldGhvZCgic2V0RGF0YWJhc2VRdW90YSIs
ICZEUlRUZXN0UnVubmVyOjpzZXREYXRhYmFzZVF1b3RhKTsKQEAgLTEzNywxMiArMTM0LDkgQEAg
RFJUVGVzdFJ1bm5lcjo6RFJUVGVzdFJ1bm5lcihUZXN0U2hlbGwqIHNoZWxsKQogICAgIGJpbmRN
ZXRob2QoInNldFBvaW50ZXJMb2NrV2lsbFJlc3BvbmRBc3luY2hyb25vdXNseSIsICZEUlRUZXN0
UnVubmVyOjpzZXRQb2ludGVyTG9ja1dpbGxSZXNwb25kQXN5bmNocm9ub3VzbHkpOwogICAgIGJp
bmRNZXRob2QoInNldFBvaW50ZXJMb2NrV2lsbEZhaWxTeW5jaHJvbm91c2x5IiwgJkRSVFRlc3RS
dW5uZXI6OnNldFBvaW50ZXJMb2NrV2lsbEZhaWxTeW5jaHJvbm91c2x5KTsKICNlbmRpZgotICAg
IGJpbmRNZXRob2QoInNldFBPU0lYTG9jYWxlIiwgJkRSVFRlc3RSdW5uZXI6OnNldFBPU0lYTG9j
YWxlKTsKLSAgICBiaW5kTWV0aG9kKCJzZXRCYWNraW5nU2NhbGVGYWN0b3IiLCAmRFJUVGVzdFJ1
bm5lcjo6c2V0QmFja2luZ1NjYWxlRmFjdG9yKTsKICAgICBiaW5kTWV0aG9kKCJzZXRXaWxsU2Vu
ZFJlcXVlc3RDbGVhckhlYWRlciIsICZEUlRUZXN0UnVubmVyOjpzZXRXaWxsU2VuZFJlcXVlc3RD
bGVhckhlYWRlcik7CiAgICAgYmluZE1ldGhvZCgic2V0V2lsbFNlbmRSZXF1ZXN0UmV0dXJuc051
bGwiLCAmRFJUVGVzdFJ1bm5lcjo6c2V0V2lsbFNlbmRSZXF1ZXN0UmV0dXJuc051bGwpOwogICAg
IGJpbmRNZXRob2QoInNldFdpbGxTZW5kUmVxdWVzdFJldHVybnNOdWxsT25SZWRpcmVjdCIsICZE
UlRUZXN0UnVubmVyOjpzZXRXaWxsU2VuZFJlcXVlc3RSZXR1cm5zTnVsbE9uUmVkaXJlY3QpOwot
ICAgIGJpbmRNZXRob2QoInNldFdpbmRvd0lzS2V5IiwgJkRSVFRlc3RSdW5uZXI6OnNldFdpbmRv
d0lzS2V5KTsKICNpZiBFTkFCTEUoTk9USUZJQ0FUSU9OUykKICAgICBiaW5kTWV0aG9kKCJzaW11
bGF0ZUxlZ2FjeVdlYk5vdGlmaWNhdGlvbkNsaWNrIiwgJkRSVFRlc3RSdW5uZXI6OnNpbXVsYXRl
TGVnYWN5V2ViTm90aWZpY2F0aW9uQ2xpY2spOwogI2VuZGlmCkBAIC0yMjEsNyArMjE1LDcgQEAg
dm9pZCBEUlRUZXN0UnVubmVyOjp3YWl0VW50aWxEb25lKGNvbnN0IENwcEFyZ3VtZW50TGlzdCYs
IENwcFZhcmlhbnQqIHJlc3VsdCkKIHZvaWQgRFJUVGVzdFJ1bm5lcjo6bm90aWZ5RG9uZShjb25z
dCBDcHBBcmd1bWVudExpc3QmLCBDcHBWYXJpYW50KiByZXN1bHQpCiB7CiAgICAgLy8gVGVzdCBk
aWRuJ3QgdGltZW91dC4gS2lsbCB0aGUgdGltZW91dCB0aW1lci4KLSAgICBtX3Rhc2tMaXN0LnJl
dm9rZUFsbCgpOworICAgIHRhc2tMaXN0KCktPnJldm9rZUFsbCgpOwogCiAgICAgY29tcGxldGVO
b3RpZnlEb25lKGZhbHNlKTsKICAgICByZXN1bHQtPnNldE51bGwoKTsKQEAgLTM5MiwyNiArMzg2
LDE5IEBAIHZvaWQgRFJUVGVzdFJ1bm5lcjo6cXVldWVMb2FkSFRNTFN0cmluZyhjb25zdCBDcHBB
cmd1bWVudExpc3QmIGFyZ3VtZW50cywgQ3BwVmFyCiB2b2lkIERSVFRlc3RSdW5uZXI6OnJlc2V0
KCkKIHsKICAgICBUZXN0UnVubmVyOjpyZXNldCgpOwotICAgIGlmIChtX3NoZWxsKQotICAgICAg
ICBtX3NoZWxsLT53ZWJWaWV3SG9zdCgpLT5zZXREZXZpY2VTY2FsZUZhY3RvcigxKTsKICAgICBt
X3dhaXRVbnRpbERvbmUgPSBmYWxzZTsKICAgICBtX3dlYkhpc3RvcnlJdGVtQ291bnQuc2V0KDAp
OwogICAgIG1fdGl0bGVUZXh0RGlyZWN0aW9uLnNldCgibHRyIik7CiAgICAgbV9pbnRlcmNlcHRQ
b3N0TWVzc2FnZS5zZXQoZmFsc2UpOwogCi0gICAgd2Via2l0X3N1cHBvcnQ6OlNldEFjY2VwdEFs
bENvb2tpZXMoZmFsc2UpOwotCiAgICAgLy8gUmVzZXQgdGhlIGRlZmF1bHQgcXVvdGEgZm9yIGVh
Y2ggb3JpZ2luIHRvIDVNQgogICAgIHdlYmtpdF9zdXBwb3J0OjpTZXREYXRhYmFzZVF1b3RhKDUg
KiAxMDI0ICogMTAyNCk7CiAKLSAgICBzZXRsb2NhbGUoTENfQUxMLCAiIik7Ci0KICAgICBpZiAo
bV9jbG9zZVJlbWFpbmluZ1dpbmRvd3MpCiAgICAgICAgIG1fc2hlbGwtPmNsb3NlUmVtYWluaW5n
V2luZG93cygpOwogICAgIGVsc2UKICAgICAgICAgbV9jbG9zZVJlbWFpbmluZ1dpbmRvd3MgPSB0
cnVlOwogICAgIG1fd29ya1F1ZXVlLnJlc2V0KCk7Ci0gICAgbV90YXNrTGlzdC5yZXZva2VBbGwo
KTsKIH0KIAogdm9pZCBEUlRUZXN0UnVubmVyOjpsb2NhdGlvbkNoYW5nZURvbmUoKQpAQCAtNDQ0
LDIwICs0MzEsNiBAQCB2b2lkIERSVFRlc3RSdW5uZXI6OnNldENsb3NlUmVtYWluaW5nV2luZG93
c1doZW5Db21wbGV0ZShjb25zdCBDcHBBcmd1bWVudExpc3QmCiAgICAgcmVzdWx0LT5zZXROdWxs
KCk7CiB9CiAKLXZvaWQgRFJUVGVzdFJ1bm5lcjo6c2V0QWx3YXlzQWNjZXB0Q29va2llcyhjb25z
dCBDcHBBcmd1bWVudExpc3QmIGFyZ3VtZW50cywgQ3BwVmFyaWFudCogcmVzdWx0KQotewotICAg
IGlmIChhcmd1bWVudHMuc2l6ZSgpID4gMCkKLSAgICAgICAgd2Via2l0X3N1cHBvcnQ6OlNldEFj
Y2VwdEFsbENvb2tpZXMoY3BwVmFyaWFudFRvQm9vbChhcmd1bWVudHNbMF0pKTsKLSAgICByZXN1
bHQtPnNldE51bGwoKTsKLX0KLQotdm9pZCBEUlRUZXN0UnVubmVyOjpzZXRXaW5kb3dJc0tleShj
b25zdCBDcHBBcmd1bWVudExpc3QmIGFyZ3VtZW50cywgQ3BwVmFyaWFudCogcmVzdWx0KQotewot
ICAgIGlmIChhcmd1bWVudHMuc2l6ZSgpID4gMCAmJiBhcmd1bWVudHNbMF0uaXNCb29sKCkpCi0g
ICAgICAgIG1fc2hlbGwtPnNldEZvY3VzKG1fc2hlbGwtPndlYlZpZXcoKSwgYXJndW1lbnRzWzBd
LnZhbHVlLmJvb2xWYWx1ZSk7Ci0gICAgcmVzdWx0LT5zZXROdWxsKCk7Ci19Ci0KIHZvaWQgRFJU
VGVzdFJ1bm5lcjo6c2V0Q3VzdG9tUG9saWN5RGVsZWdhdGUoY29uc3QgQ3BwQXJndW1lbnRMaXN0
JiBhcmd1bWVudHMsIENwcFZhcmlhbnQqIHJlc3VsdCkKIHsKICAgICBpZiAoYXJndW1lbnRzLnNp
emUoKSA+IDAgJiYgYXJndW1lbnRzWzBdLmlzQm9vbCgpKSB7CkBAIC01MDEsNDQgKzQ3NCw2IEBA
IHZvaWQgRFJUVGVzdFJ1bm5lcjo6c2V0V2lsbFNlbmRSZXF1ZXN0UmV0dXJuc051bGwoY29uc3Qg
Q3BwQXJndW1lbnRMaXN0JiBhcmd1bWVuCiAgICAgcmVzdWx0LT5zZXROdWxsKCk7CiB9CiAKLXZv
aWQgRFJUVGVzdFJ1bm5lcjo6cGF0aFRvTG9jYWxSZXNvdXJjZShjb25zdCBDcHBBcmd1bWVudExp
c3QmIGFyZ3VtZW50cywgQ3BwVmFyaWFudCogcmVzdWx0KQotewotICAgIHJlc3VsdC0+c2V0TnVs
bCgpOwotICAgIGlmIChhcmd1bWVudHMuc2l6ZSgpIDw9IDAgfHwgIWFyZ3VtZW50c1swXS5pc1N0
cmluZygpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBzdHJpbmcgdXJsID0gYXJndW1lbnRzWzBd
LnRvU3RyaW5nKCk7Ci0jaWYgT1MoV0lORE9XUykKLSAgICBpZiAoIXVybC5maW5kKCIvdG1wLyIp
KSB7Ci0gICAgICAgIC8vIFdlIHdhbnQgYSB0ZW1wIGZpbGUuCi0gICAgICAgIGNvbnN0IHVuc2ln
bmVkIHRlbXBQcmVmaXhMZW5ndGggPSA1OwotICAgICAgICBzaXplX3QgYnVmZmVyU2l6ZSA9IE1B
WF9QQVRIOwotICAgICAgICBPd25BcnJheVB0cjxXQ0hBUj4gdGVtcFBhdGggPSBhZG9wdEFycmF5
UHRyKG5ldyBXQ0hBUltidWZmZXJTaXplXSk7Ci0gICAgICAgIERXT1JEIHRlbXBMZW5ndGggPSA6
OkdldFRlbXBQYXRoVyhidWZmZXJTaXplLCB0ZW1wUGF0aC5nZXQoKSk7Ci0gICAgICAgIGlmICh0
ZW1wTGVuZ3RoICsgdXJsLmxlbmd0aCgpIC0gdGVtcFByZWZpeExlbmd0aCArIDEgPiBidWZmZXJT
aXplKSB7Ci0gICAgICAgICAgICBidWZmZXJTaXplID0gdGVtcExlbmd0aCArIHVybC5sZW5ndGgo
KSAtIHRlbXBQcmVmaXhMZW5ndGggKyAxOwotICAgICAgICAgICAgdGVtcFBhdGggPSBhZG9wdEFy
cmF5UHRyKG5ldyBXQ0hBUltidWZmZXJTaXplXSk7Ci0gICAgICAgICAgICB0ZW1wTGVuZ3RoID0g
R2V0VGVtcFBhdGhXKGJ1ZmZlclNpemUsIHRlbXBQYXRoLmdldCgpKTsKLSAgICAgICAgICAgIEFT
U0VSVCh0ZW1wTGVuZ3RoIDwgYnVmZmVyU2l6ZSk7Ci0gICAgICAgIH0KLSAgICAgICAgc3RyaW5n
IHJlc3VsdFBhdGgoV2ViU3RyaW5nKHRlbXBQYXRoLmdldCgpLCB0ZW1wTGVuZ3RoKS51dGY4KCkp
OwotICAgICAgICByZXN1bHRQYXRoLmFwcGVuZCh1cmwuc3Vic3RyKHRlbXBQcmVmaXhMZW5ndGgp
KTsKLSAgICAgICAgcmVzdWx0LT5zZXQocmVzdWx0UGF0aCk7Ci0gICAgICAgIHJldHVybjsKLSAg
ICB9Ci0jZW5kaWYKLQotICAgIC8vIFNvbWUgbGF5b3V0IHRlc3RzIHVzZSBmaWxlOi8vLy8gd2hp
Y2ggd2UgcmVzb2x2ZSBhcyBhIFVOQyBwYXRoLiBOb3JtYWxpemUKLSAgICAvLyB0aGVtIHRvIGp1
c3QgZmlsZTovLy8uCi0gICAgc3RyaW5nIGxvd2VyVXJsID0gdXJsOwotICAgIHRyYW5zZm9ybShs
b3dlclVybC5iZWdpbigpLCBsb3dlclVybC5lbmQoKSwgbG93ZXJVcmwuYmVnaW4oKSwgOjp0b2xv
d2VyKTsKLSAgICB3aGlsZSAoIWxvd2VyVXJsLmZpbmQoImZpbGU6Ly8vLyIpKSB7Ci0gICAgICAg
IHVybCA9IHVybC5zdWJzdHIoMCwgOCkgKyB1cmwuc3Vic3RyKDkpOwotICAgICAgICBsb3dlclVy
bCA9IGxvd2VyVXJsLnN1YnN0cigwLCA4KSArIGxvd2VyVXJsLnN1YnN0cig5KTsKLSAgICB9Ci0g
ICAgcmVzdWx0LT5zZXQod2Via2l0X3N1cHBvcnQ6OlJld3JpdGVMYXlvdXRUZXN0c1VSTCh1cmwp
LnNwZWMoKSk7Ci19Ci0KIAogI2lmIEVOQUJMRShOT1RJRklDQVRJT05TKQogdm9pZCBEUlRUZXN0
UnVubmVyOjpncmFudFdlYk5vdGlmaWNhdGlvblBlcm1pc3Npb24oY29uc3QgQ3BwQXJndW1lbnRM
aXN0JiBhcmd1bWVudHMsIENwcFZhcmlhbnQqIHJlc3VsdCkKQEAgLTYwMCwxMyArNTM1LDYgQEAg
dm9pZCBEUlRUZXN0UnVubmVyOjpzZXREYXRhYmFzZVF1b3RhKGNvbnN0IENwcEFyZ3VtZW50TGlz
dCYgYXJndW1lbnRzLCBDcHBWYXJpYW4KICAgICAgICAgd2Via2l0X3N1cHBvcnQ6OlNldERhdGFi
YXNlUXVvdGEoYXJndW1lbnRzWzBdLnRvSW50MzIoKSk7CiB9CiAKLXZvaWQgRFJUVGVzdFJ1bm5l
cjo6c2V0UE9TSVhMb2NhbGUoY29uc3QgQ3BwQXJndW1lbnRMaXN0JiBhcmd1bWVudHMsIENwcFZh
cmlhbnQqIHJlc3VsdCkKLXsKLSAgICByZXN1bHQtPnNldE51bGwoKTsKLSAgICBpZiAoYXJndW1l
bnRzLnNpemUoKSA9PSAxICYmIGFyZ3VtZW50c1swXS5pc1N0cmluZygpKQotICAgICAgICBzZXRs
b2NhbGUoTENfQUxMLCBhcmd1bWVudHNbMF0udG9TdHJpbmcoKS5jX3N0cigpKTsKLX0KLQogdm9p
ZCBEUlRUZXN0UnVubmVyOjpudW1iZXJPZlBlbmRpbmdHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1
ZXN0cyhjb25zdCBDcHBBcmd1bWVudExpc3QmIGFyZ3VtZW50cywgQ3BwVmFyaWFudCogcmVzdWx0
KQogewogICAgIHJlc3VsdC0+c2V0TnVsbCgpOwpAQCAtNzIyLDQwICs2NTAsNiBAQCB2b2lkIERS
VFRlc3RSdW5uZXI6Ondhc01vY2tTcGVlY2hSZWNvZ25pdGlvbkFib3J0ZWQoY29uc3QgQ3BwQXJn
dW1lbnRMaXN0JiwgQ3BwVgogfQogI2VuZGlmCiAKLWNsYXNzIEludm9rZUNhbGxiYWNrVGFzayA6
IHB1YmxpYyBXZWJNZXRob2RUYXNrPERSVFRlc3RSdW5uZXI+IHsKLXB1YmxpYzoKLSAgICBJbnZv
a2VDYWxsYmFja1Rhc2soRFJUVGVzdFJ1bm5lciogb2JqZWN0LCBQYXNzT3duQXJyYXlQdHI8Q3Bw
VmFyaWFudD4gY2FsbGJhY2tBcmd1bWVudHMsIHVpbnQzMl90IG51bWJlck9mQXJndW1lbnRzKQot
ICAgICAgICA6IFdlYk1ldGhvZFRhc2s8RFJUVGVzdFJ1bm5lcj4ob2JqZWN0KQotICAgICAgICAs
IG1fY2FsbGJhY2tBcmd1bWVudHMoY2FsbGJhY2tBcmd1bWVudHMpCi0gICAgICAgICwgbV9udW1i
ZXJPZkFyZ3VtZW50cyhudW1iZXJPZkFyZ3VtZW50cykKLSAgICB7Ci0gICAgfQotCi0gICAgdmly
dHVhbCB2b2lkIHJ1bklmVmFsaWQoKQotICAgIHsKLSAgICAgICAgQ3BwVmFyaWFudCBpbnZva2VS
ZXN1bHQ7Ci0gICAgICAgIG1fY2FsbGJhY2tBcmd1bWVudHNbMF0uaW52b2tlRGVmYXVsdChtX2Nh
bGxiYWNrQXJndW1lbnRzLmdldCgpLCBtX251bWJlck9mQXJndW1lbnRzLCBpbnZva2VSZXN1bHQp
OwotICAgIH0KLQotcHJpdmF0ZToKLSAgICBPd25BcnJheVB0cjxDcHBWYXJpYW50PiBtX2NhbGxi
YWNrQXJndW1lbnRzOwotICAgIHVpbnQzMl90IG1fbnVtYmVyT2ZBcmd1bWVudHM7Ci19OwotCi12
b2lkIERSVFRlc3RSdW5uZXI6OnNldEJhY2tpbmdTY2FsZUZhY3Rvcihjb25zdCBDcHBBcmd1bWVu
dExpc3QmIGFyZ3VtZW50cywgQ3BwVmFyaWFudCogcmVzdWx0KQotewotICAgIGlmIChhcmd1bWVu
dHMuc2l6ZSgpIDwgMiB8fCAhYXJndW1lbnRzWzBdLmlzTnVtYmVyKCkgfHwgIWFyZ3VtZW50c1sx
XS5pc09iamVjdCgpKQotICAgICAgICByZXR1cm47Ci0gICAgCi0gICAgZmxvYXQgdmFsdWUgPSBh
cmd1bWVudHNbMF0udmFsdWUuZG91YmxlVmFsdWU7Ci0gICAgbV9zaGVsbC0+d2ViVmlld0hvc3Qo
KS0+c2V0RGV2aWNlU2NhbGVGYWN0b3IodmFsdWUpOwotCi0gICAgT3duQXJyYXlQdHI8Q3BwVmFy
aWFudD4gY2FsbGJhY2tBcmd1bWVudHMgPSBhZG9wdEFycmF5UHRyKG5ldyBDcHBWYXJpYW50WzFd
KTsKLSAgICBjYWxsYmFja0FyZ3VtZW50c1swXS5zZXQoYXJndW1lbnRzWzFdKTsKLSAgICByZXN1
bHQtPnNldE51bGwoKTsKLSAgICBwb3N0VGFzayhuZXcgSW52b2tlQ2FsbGJhY2tUYXNrKHRoaXMs
IGNhbGxiYWNrQXJndW1lbnRzLnJlbGVhc2UoKSwgMSkpOwotfQotCiAjaWYgRU5BQkxFKFBPSU5U
RVJfTE9DSykKIHZvaWQgRFJUVGVzdFJ1bm5lcjo6ZGlkQWNxdWlyZVBvaW50ZXJMb2NrKGNvbnN0
IENwcEFyZ3VtZW50TGlzdCYsIENwcFZhcmlhbnQqIHJlc3VsdCkKIHsKZGlmZiAtLWdpdCBhL1Rv
b2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL0RSVFRlc3RSdW5uZXIuaCBiL1Rvb2xzL0R1bXBS
ZW5kZXJUcmVlL2Nocm9taXVtL0RSVFRlc3RSdW5uZXIuaAppbmRleCBlYzYyNGFhM2E4N2RjZGRm
ZGZjZjdiNzUzNjZlNDNjYzUyMzdmNjBmLi5hMWQzOGZhNDRmMzg5MDgyZWFmOTA3NWVmMTliZmVk
Njk0MjU3OTM1IDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9EUlRU
ZXN0UnVubmVyLmgKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vRFJUVGVzdFJ1
bm5lci5oCkBAIC05NCwxMiArOTQsNiBAQCBwdWJsaWM6CiAgICAgdm9pZCBxdWV1ZUxvYWQoY29u
c3QgQ3BwQXJndW1lbnRMaXN0JiwgQ3BwVmFyaWFudCopOwogICAgIHZvaWQgcXVldWVMb2FkSFRN
TFN0cmluZyhjb25zdCBDcHBBcmd1bWVudExpc3QmLCBDcHBWYXJpYW50Kik7CiAKLSAgICAvLyBD
aGFuZ2VzIHRoZSBjb29raWUgcG9saWN5IGZyb20gdGhlIGRlZmF1bHQgdG8gYWxsb3cgYWxsIGNv
b2tpZXMuCi0gICAgdm9pZCBzZXRBbHdheXNBY2NlcHRDb29raWVzKGNvbnN0IENwcEFyZ3VtZW50
TGlzdCYsIENwcFZhcmlhbnQqKTsKLQotICAgIC8vIEdpdmVzIGZvY3VzIHRvIHRoZSB3aW5kb3cu
Ci0gICAgdm9pZCBzZXRXaW5kb3dJc0tleShjb25zdCBDcHBBcmd1bWVudExpc3QmLCBDcHBWYXJp
YW50Kik7Ci0KIAogICAgIC8vIENhdXNlcyBuYXZpZ2F0aW9uIGFjdGlvbnMganVzdCBwcmludG91
dCB0aGUgaW50ZW5kZWQgbmF2aWdhdGlvbiBpbnN0ZWFkCiAgICAgLy8gb2YgdGFraW5nIHlvdSB0
byB0aGUgcGFnZS4gVGhpcyBpcyB1c2VkIGZvciBjYXNlcyBsaWtlIG1haWx0bywgd2hlcmUgeW91
CkBAIC0xMTgsOSArMTEyLDYgQEAgcHVibGljOgogICAgIC8vIENhdXNlcyBXaWxsU2VuZFJlcXVl
c3QgdG8gcmV0dXJuIGFuIGVtcHR5IHJlcXVlc3QuCiAgICAgdm9pZCBzZXRXaWxsU2VuZFJlcXVl
c3RSZXR1cm5zTnVsbChjb25zdCBDcHBBcmd1bWVudExpc3QmLCBDcHBWYXJpYW50Kik7CiAKLSAg
ICAvLyBDb252ZXJ0cyBhIFVSTCBzdGFydGluZyB3aXRoIGZpbGU6Ly8vdG1wLyB0byB0aGUgbG9j
YWwgbWFwcGluZy4KLSAgICB2b2lkIHBhdGhUb0xvY2FsUmVzb3VyY2UoY29uc3QgQ3BwQXJndW1l
bnRMaXN0JiwgQ3BwVmFyaWFudCopOwotCiAjaWYgRU5BQkxFKE5PVElGSUNBVElPTlMpCiAgICAg
Ly8gR3JhbnRzIHBlcm1pc3Npb24gZm9yIGRlc2t0b3Agbm90aWZpY2F0aW9ucyB0byBhbiBvcmln
aW4KICAgICB2b2lkIGdyYW50V2ViTm90aWZpY2F0aW9uUGVybWlzc2lvbihjb25zdCBDcHBBcmd1
bWVudExpc3QmLCBDcHBWYXJpYW50Kik7CkBAIC0xMzYsMTAgKzEyNyw2IEBAIHB1YmxpYzoKICAg
ICAvLyBTZXRzIHRoZSBkZWZhdWx0IHF1b3RhIGZvciBhbGwgb3JpZ2lucwogICAgIHZvaWQgc2V0
RGF0YWJhc2VRdW90YShjb25zdCBDcHBBcmd1bWVudExpc3QmLCBDcHBWYXJpYW50Kik7CiAKLSAg
ICAvLyBDYWxscyBzZXRsb2NhbGUoTENfQUxMLCAuLi4pIGZvciBhIHNwZWNpZmllZCBsb2NhbGUu
Ci0gICAgLy8gUmVzZXRzIGJldHdlZW4gdGVzdHMuCi0gICAgdm9pZCBzZXRQT1NJWExvY2FsZShj
b25zdCBDcHBBcmd1bWVudExpc3QmLCBDcHBWYXJpYW50Kik7Ci0KICAgICAvLyBHZXRzIHRoZSBu
dW1iZXIgb2YgZ2VvbG9jYXRpb24gcGVybWlzc2lvbnMgcmVxdWVzdHMgcGVuZGluZy4KICAgICB2
b2lkIG51bWJlck9mUGVuZGluZ0dlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3RzKGNvbnN0IENw
cEFyZ3VtZW50TGlzdCYsIENwcFZhcmlhbnQqKTsKIApAQCAtMTcwLDkgKzE1Nyw2IEBAIHB1Ymxp
YzoKICAgICB2b2lkIHNldFBvaW50ZXJMb2NrV2lsbFJlc3BvbmRBc3luY2hyb25vdXNseShjb25z
dCBDcHBBcmd1bWVudExpc3QmLCBDcHBWYXJpYW50Kik7CiAjZW5kaWYKIAotICAgIC8vIFVzZWQg
dG8gc2V0IHRoZSBkZXZpY2Ugc2NhbGUgZmFjdG9yLgotICAgIHZvaWQgc2V0QmFja2luZ1NjYWxl
RmFjdG9yKGNvbnN0IENwcEFyZ3VtZW50TGlzdCYsIENwcFZhcmlhbnQqKTsKLQogcHVibGljOgog
ICAgIC8vIFRoZSBmb2xsb3dpbmcgbWV0aG9kcyBhcmUgbm90IGV4cG9zZWQgdG8gSmF2YVNjcmlw
dC4KICAgICB2b2lkIHNldFdvcmtRdWV1ZUZyb3plbihib29sIGZyb3plbikgeyBtX3dvcmtRdWV1
ZS5zZXRGcm96ZW4oZnJvemVuKTsgfQpAQCAtMjA4LDggKzE5Miw2IEBAIHB1YmxpYzoKICAgICAg
ICAgdmlydHVhbCBib29sIHJ1bihUZXN0U2hlbGwqKSA9IDA7CiAgICAgfTsKIAotICAgIFdlYlRh
c2tMaXN0KiB0YXNrTGlzdCgpIHsgcmV0dXJuICZtX3Rhc2tMaXN0OyB9Ci0KIHByaXZhdGU6CiAg
ICAgZnJpZW5kIGNsYXNzIFdvcmtJdGVtOwogICAgIGZyaWVuZCBjbGFzcyBXb3JrUXVldWU7CkBA
IC0yNTEsOSArMjMzLDYgQEAgcHJpdmF0ZToKICAgICAgICAgdmlydHVhbCB2b2lkIHJ1bklmVmFs
aWQoKSB7IG1fb2JqZWN0LT5jb21wbGV0ZU5vdGlmeURvbmUodHJ1ZSk7IH0KICAgICB9OwogCi0g
ICAgLy8gVXNlZCBmb3IgdGVzdCB0aW1lb3V0cy4KLSAgICBXZWJUYXNrTGlzdCBtX3Rhc2tMaXN0
OwotCiAgICAgLy8gTm9uLW93bmluZyBwb2ludGVyLiBUaGUgRFJUVGVzdFJ1bm5lciBpcyBvd25l
ZCBieSB0aGUgaG9zdC4KICAgICBUZXN0U2hlbGwqIG1fc2hlbGw7CiAKZGlmZiAtLWdpdCBhL1Rv
b2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvcHVibGljL1dlYlRlc3REZWxl
Z2F0ZS5oIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9wdWJsaWMv
V2ViVGVzdERlbGVnYXRlLmgKaW5kZXggZGE4NDVlNTMzZGEwNjA0ZmUwYmVkZjIyNWRjMGZlYmZl
YTViM2ViZC4uMDkwNDYxMmNmNTJmMjY0ZmE5NGM0NWU4MjY4YzFiNDhmNjA4YTE2YiAxMDA2NDQK
LS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9wdWJsaWMvV2Vi
VGVzdERlbGVnYXRlLmgKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1
bm5lci9wdWJsaWMvV2ViVGVzdERlbGVnYXRlLmgKQEAgLTg1LDYgKzg1LDExIEBAIHB1YmxpYzoK
ICAgICB2aXJ0dWFsIHZvaWQgc2hvd0RldlRvb2xzKCkgeyB9CiAgICAgdmlydHVhbCB2b2lkIGNs
b3NlRGV2VG9vbHMoKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgZXZhbHVhdGVJbldlYkluc3BlY3Rv
cihsb25nLCBjb25zdCBzdGQ6OnN0cmluZyYpIHsgfQorICAgIHZpcnR1YWwgdm9pZCBzZXREZXZp
Y2VTY2FsZUZhY3RvcihmbG9hdCkgeyB9CisgICAgdmlydHVhbCB2b2lkIHNldEZvY3VzKGJvb2wp
IHsgfQorICAgIHZpcnR1YWwgdm9pZCBzZXRBY2NlcHRBbGxDb29raWVzKGJvb2wpIHsgfQorICAg
IHZpcnR1YWwgc3RkOjpzdHJpbmcgcGF0aFRvTG9jYWxSZXNvdXJjZShjb25zdCBzdGQ6OnN0cmlu
ZyYgcmVzb3VyY2UpIHsgcmV0dXJuIHN0ZDo6c3RyaW5nKCk7IH0KKyAgICB2aXJ0dWFsIHZvaWQg
c2V0TG9jYWxlKGNvbnN0IHN0ZDo6c3RyaW5nJikgeyB9CiB9OwogCiB9CmRpZmYgLS1naXQgYS9U
b29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9UZXN0UnVubmVyLmNw
cCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvc3JjL1Rlc3RSdW5u
ZXIuY3BwCmluZGV4IGQ1YzhjNjA3MmU0NmU0ZWFhZDlhZGMwZWEzODlmOTljZWI4NzJhYWEuLmMw
NjJlMTcxMThmYzU0YjExNDhmYjE1OGQ3N2NlMjdlODFlMzUyYzUgMTAwNjQ0Ci0tLSBhL1Rvb2xz
L0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvc3JjL1Rlc3RSdW5uZXIuY3BwCisr
KyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvc3JjL1Rlc3RSdW5u
ZXIuY3BwCkBAIC00NywxMiArNDcsMTQgQEAKICNpbmNsdWRlICJXZWJTZWN1cml0eVBvbGljeS5o
IgogI2luY2x1ZGUgIldlYlNldHRpbmdzLmgiCiAjaW5jbHVkZSAiV2ViU3Vycm91bmRpbmdUZXh0
LmgiCisjaW5jbHVkZSAiV2ViVGFzay5oIgogI2luY2x1ZGUgIldlYlRlc3REZWxlZ2F0ZS5oIgog
I2luY2x1ZGUgIldlYlZpZXcuaCIKICNpbmNsdWRlICJXZWJXb3JrZXJJbmZvLmgiCiAjaW5jbHVk
ZSAicGxhdGZvcm0vV2ViUG9pbnQuaCIKICNpbmNsdWRlICJwbGF0Zm9ybS9XZWJTZXJpYWxpemVk
U2NyaXB0VmFsdWUuaCIKICNpbmNsdWRlICJ2OC9pbmNsdWRlL3Y4LmgiCisjaW5jbHVkZSA8d3Rm
L093bkFycmF5UHRyLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKICNpZiBP
UyhMSU5VWCkgfHwgT1MoQU5EUk9JRCkKQEAgLTc2LDYgKzc4LDI2IEBAIHB1YmxpYzoKICAgICB2
aXJ0dWFsIHZvaWQgZGVzdHJveSgpIHsgfQogfTsKIAorY2xhc3MgSW52b2tlQ2FsbGJhY2tUYXNr
IDogcHVibGljIFdlYk1ldGhvZFRhc2s8VGVzdFJ1bm5lcj4geworcHVibGljOgorICAgIEludm9r
ZUNhbGxiYWNrVGFzayhUZXN0UnVubmVyKiBvYmplY3QsIFBhc3NPd25BcnJheVB0cjxDcHBWYXJp
YW50PiBjYWxsYmFja0FyZ3VtZW50cywgdWludDMyX3QgbnVtYmVyT2ZBcmd1bWVudHMpCisgICAg
ICAgIDogV2ViTWV0aG9kVGFzazxUZXN0UnVubmVyPihvYmplY3QpCisgICAgICAgICwgbV9jYWxs
YmFja0FyZ3VtZW50cyhjYWxsYmFja0FyZ3VtZW50cykKKyAgICAgICAgLCBtX251bWJlck9mQXJn
dW1lbnRzKG51bWJlck9mQXJndW1lbnRzKQorICAgIHsKKyAgICB9CisKKyAgICB2aXJ0dWFsIHZv
aWQgcnVuSWZWYWxpZCgpCisgICAgeworICAgICAgICBDcHBWYXJpYW50IGludm9rZVJlc3VsdDsK
KyAgICAgICAgbV9jYWxsYmFja0FyZ3VtZW50c1swXS5pbnZva2VEZWZhdWx0KG1fY2FsbGJhY2tB
cmd1bWVudHMuZ2V0KCksIG1fbnVtYmVyT2ZBcmd1bWVudHMsIGludm9rZVJlc3VsdCk7CisgICAg
fQorCitwcml2YXRlOgorICAgIE93bkFycmF5UHRyPENwcFZhcmlhbnQ+IG1fY2FsbGJhY2tBcmd1
bWVudHM7CisgICAgdWludDMyX3QgbV9udW1iZXJPZkFyZ3VtZW50czsKK307CisKIH0KIAogVGVz
dFJ1bm5lcjo6VGVzdFJ1bm5lcigpCkBAIC0xNzgsNiArMjAwLDExIEBAIFRlc3RSdW5uZXI6OlRl
c3RSdW5uZXIoKQogICAgIGJpbmRNZXRob2QoInNob3dXZWJJbnNwZWN0b3IiLCAmVGVzdFJ1bm5l
cjo6c2hvd1dlYkluc3BlY3Rvcik7CiAgICAgYmluZE1ldGhvZCgiY2xvc2VXZWJJbnNwZWN0b3Ii
LCAmVGVzdFJ1bm5lcjo6Y2xvc2VXZWJJbnNwZWN0b3IpOwogICAgIGJpbmRNZXRob2QoImV2YWx1
YXRlSW5XZWJJbnNwZWN0b3IiLCAmVGVzdFJ1bm5lcjo6ZXZhbHVhdGVJbldlYkluc3BlY3Rvcik7
CisgICAgYmluZE1ldGhvZCgic2V0QWx3YXlzQWNjZXB0Q29va2llcyIsICZUZXN0UnVubmVyOjpz
ZXRBbHdheXNBY2NlcHRDb29raWVzKTsKKyAgICBiaW5kTWV0aG9kKCJzZXRXaW5kb3dJc0tleSIs
ICZUZXN0UnVubmVyOjpzZXRXaW5kb3dJc0tleSk7CisgICAgYmluZE1ldGhvZCgicGF0aFRvTG9j
YWxSZXNvdXJjZSIsICZUZXN0UnVubmVyOjpwYXRoVG9Mb2NhbFJlc291cmNlKTsKKyAgICBiaW5k
TWV0aG9kKCJzZXRCYWNraW5nU2NhbGVGYWN0b3IiLCAmVGVzdFJ1bm5lcjo6c2V0QmFja2luZ1Nj
YWxlRmFjdG9yKTsKKyAgICBiaW5kTWV0aG9kKCJzZXRQT1NJWExvY2FsZSIsICZUZXN0UnVubmVy
OjpzZXRQT1NJWExvY2FsZSk7CiAKICAgICAvLyBQcm9wZXJ0aWVzLgogICAgIGJpbmRQcm9wZXJ0
eSgid29ya2VyVGhyZWFkQ291bnQiLCAmVGVzdFJ1bm5lcjo6d29ya2VyVGhyZWFkQ291bnQpOwpA
QCAtMjQ0LDYgKzI3MSwxMCBAQCB2b2lkIFRlc3RSdW5uZXI6OnJlc2V0KCkKICAgICBXZWJGb250
UmVuZGVyaW5nOjpzZXRTdWJwaXhlbFBvc2l0aW9uaW5nKGZhbHNlKTsKICNlbmRpZgogCisgICAg
bV9kZWxlZ2F0ZS0+c2V0RGV2aWNlU2NhbGVGYWN0b3IoMSk7CisgICAgbV9kZWxlZ2F0ZS0+c2V0
QWNjZXB0QWxsQ29va2llcyhmYWxzZSk7CisgICAgbV9kZWxlZ2F0ZS0+c2V0TG9jYWxlKCIiKTsK
KwogICAgIG1fZHVtcEVkaXRpbmdDYWxsYmFja3MgPSBmYWxzZTsKICAgICBtX2R1bXBBc1RleHQg
PSBmYWxzZTsKICAgICBtX2dlbmVyYXRlUGl4ZWxSZXN1bHRzID0gdHJ1ZTsKQEAgLTI3NSw2ICsz
MDYsOCBAQCB2b2lkIFRlc3RSdW5uZXI6OnJlc2V0KCkKICAgICBtX3VzZXJTdHlsZVNoZWV0TG9j
YXRpb24gPSBXZWJVUkwoKTsKIAogICAgIG1fd2ViUGVybWlzc2lvbnMtPnJlc2V0KCk7CisKKyAg
ICBtX3Rhc2tMaXN0LnJldm9rZUFsbCgpOwogfQogCiB2b2lkIFRlc3RSdW5uZXI6OnNldFRlc3RJ
c1J1bm5pbmcoYm9vbCBydW5uaW5nKQpAQCAtMTI5NSw2ICsxMzI4LDUwIEBAIHZvaWQgVGVzdFJ1
bm5lcjo6ZXZhbHVhdGVJbldlYkluc3BlY3Rvcihjb25zdCBDcHBBcmd1bWVudExpc3QmIGFyZ3Vt
ZW50cywgQ3BwVmFyCiAgICAgbV9kZWxlZ2F0ZS0+ZXZhbHVhdGVJbldlYkluc3BlY3Rvcihhcmd1
bWVudHNbMF0udG9JbnQzMigpLCBhcmd1bWVudHNbMV0udG9TdHJpbmcoKSk7CiB9CiAKK3ZvaWQg
VGVzdFJ1bm5lcjo6c2V0QWx3YXlzQWNjZXB0Q29va2llcyhjb25zdCBDcHBBcmd1bWVudExpc3Qm
IGFyZ3VtZW50cywgQ3BwVmFyaWFudCogcmVzdWx0KQoreworICAgIGlmIChhcmd1bWVudHMuc2l6
ZSgpID4gMCkKKyAgICAgICAgbV9kZWxlZ2F0ZS0+c2V0QWNjZXB0QWxsQ29va2llcyhjcHBWYXJp
YW50VG9Cb29sKGFyZ3VtZW50c1swXSkpOworICAgIHJlc3VsdC0+c2V0TnVsbCgpOworfQorCit2
b2lkIFRlc3RSdW5uZXI6OnNldFdpbmRvd0lzS2V5KGNvbnN0IENwcEFyZ3VtZW50TGlzdCYgYXJn
dW1lbnRzLCBDcHBWYXJpYW50KiByZXN1bHQpCit7CisgICAgaWYgKGFyZ3VtZW50cy5zaXplKCkg
PiAwICYmIGFyZ3VtZW50c1swXS5pc0Jvb2woKSkKKyAgICAgICAgbV9kZWxlZ2F0ZS0+c2V0Rm9j
dXMoYXJndW1lbnRzWzBdLnZhbHVlLmJvb2xWYWx1ZSk7CisgICAgcmVzdWx0LT5zZXROdWxsKCk7
Cit9CisKK3ZvaWQgVGVzdFJ1bm5lcjo6cGF0aFRvTG9jYWxSZXNvdXJjZShjb25zdCBDcHBBcmd1
bWVudExpc3QmIGFyZ3VtZW50cywgQ3BwVmFyaWFudCogcmVzdWx0KQoreworICAgIHJlc3VsdC0+
c2V0TnVsbCgpOworICAgIGlmIChhcmd1bWVudHMuc2l6ZSgpIDw9IDAgfHwgIWFyZ3VtZW50c1sw
XS5pc1N0cmluZygpKQorICAgICAgICByZXR1cm47CisKKyAgICByZXN1bHQtPnNldChtX2RlbGVn
YXRlLT5wYXRoVG9Mb2NhbFJlc291cmNlKGFyZ3VtZW50c1swXS50b1N0cmluZygpKSk7Cit9CisK
K3ZvaWQgVGVzdFJ1bm5lcjo6c2V0QmFja2luZ1NjYWxlRmFjdG9yKGNvbnN0IENwcEFyZ3VtZW50
TGlzdCYgYXJndW1lbnRzLCBDcHBWYXJpYW50KiByZXN1bHQpCit7CisgICAgaWYgKGFyZ3VtZW50
cy5zaXplKCkgPCAyIHx8ICFhcmd1bWVudHNbMF0uaXNOdW1iZXIoKSB8fCAhYXJndW1lbnRzWzFd
LmlzT2JqZWN0KCkpCisgICAgICAgIHJldHVybjsKKworICAgIGZsb2F0IHZhbHVlID0gYXJndW1l
bnRzWzBdLnZhbHVlLmRvdWJsZVZhbHVlOworICAgIG1fZGVsZWdhdGUtPnNldERldmljZVNjYWxl
RmFjdG9yKHZhbHVlKTsKKworICAgIE93bkFycmF5UHRyPENwcFZhcmlhbnQ+IGNhbGxiYWNrQXJn
dW1lbnRzID0gYWRvcHRBcnJheVB0cihuZXcgQ3BwVmFyaWFudFsxXSk7CisgICAgY2FsbGJhY2tB
cmd1bWVudHNbMF0uc2V0KGFyZ3VtZW50c1sxXSk7CisgICAgcmVzdWx0LT5zZXROdWxsKCk7Cisg
ICAgbV9kZWxlZ2F0ZS0+cG9zdFRhc2sobmV3IEludm9rZUNhbGxiYWNrVGFzayh0aGlzLCBjYWxs
YmFja0FyZ3VtZW50cy5yZWxlYXNlKCksIDEpKTsKK30KKwordm9pZCBUZXN0UnVubmVyOjpzZXRQ
T1NJWExvY2FsZShjb25zdCBDcHBBcmd1bWVudExpc3QmIGFyZ3VtZW50cywgQ3BwVmFyaWFudCog
cmVzdWx0KQoreworICAgIHJlc3VsdC0+c2V0TnVsbCgpOworICAgIGlmIChhcmd1bWVudHMuc2l6
ZSgpID09IDEgJiYgYXJndW1lbnRzWzBdLmlzU3RyaW5nKCkpCisgICAgICAgIG1fZGVsZWdhdGUt
PnNldExvY2FsZShhcmd1bWVudHNbMF0udG9TdHJpbmcoKSk7Cit9CisKIHZvaWQgVGVzdFJ1bm5l
cjo6ZHVtcEVkaXRpbmdDYWxsYmFja3MoY29uc3QgQ3BwQXJndW1lbnRMaXN0JiwgQ3BwVmFyaWFu
dCogcmVzdWx0KQogewogICAgIG1fZHVtcEVkaXRpbmdDYWxsYmFja3MgPSB0cnVlOwpkaWZmIC0t
Z2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvVGVzdFJ1
bm5lci5oIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvVGVz
dFJ1bm5lci5oCmluZGV4IDU4YmYyMmFhOGZkZGU0MGY3YzBjNzc1N2QzMTY0MzU2ZmU5NTNhYmEu
LjFhYWIzYWExMDE1OTk4NWFmZjRjOTViYWQxZWMzMDdmNTMwNWM2MzggMTAwNjQ0Ci0tLSBhL1Rv
b2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvc3JjL1Rlc3RSdW5uZXIuaAor
KysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9UZXN0UnVu
bmVyLmgKQEAgLTM0LDYgKzM0LDcgQEAKIAogI2luY2x1ZGUgIkNwcEJvdW5kQ2xhc3MuaCIKICNp
bmNsdWRlICJXZWJEZWxpdmVyZWRJbnRlbnRDbGllbnQuaCIKKyNpbmNsdWRlICJXZWJUYXNrLmgi
CiAjaW5jbHVkZSAiV2ViVGVzdFJ1bm5lci5oIgogI2luY2x1ZGUgInBsYXRmb3JtL1dlYkFycmF5
QnVmZmVyVmlldy5oIgogI2luY2x1ZGUgInBsYXRmb3JtL1dlYlVSTC5oIgpAQCAtNTksNiArNjAs
OCBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHJlc2V0KCk7CiAKKyAgICBXZWJUYXNrTGlzdCogdGFz
a0xpc3QoKSB7IHJldHVybiAmbV90YXNrTGlzdDsgfQorCiAgICAgLy8gV2ViVGVzdFJ1bm5lciBp
bXBsZW1lbnRhdGlvbi4KICAgICB2aXJ0dWFsIHZvaWQgc2V0VGVzdElzUnVubmluZyhib29sKSBP
VkVSUklERTsKICAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkRHVtcEVkaXRpbmdDYWxsYmFja3MoKSBj
b25zdCBPVkVSUklERTsKQEAgLTMzMSw2ICszMzQsMjIgQEAgcHJpdmF0ZToKICAgICAvLyBBbGxv
d3MgbGF5b3V0IHRlc3RzIHRvIGV4ZWMgc2NyaXB0cyBhdCBXZWJJbnNwZWN0b3Igc2lkZS4KICAg
ICB2b2lkIGV2YWx1YXRlSW5XZWJJbnNwZWN0b3IoY29uc3QgQ3BwQXJndW1lbnRMaXN0JiwgQ3Bw
VmFyaWFudCopOwogCisgICAgLy8gQ2hhbmdlcyB0aGUgY29va2llIHBvbGljeSBmcm9tIHRoZSBk
ZWZhdWx0IHRvIGFsbG93IGFsbCBjb29raWVzLgorICAgIHZvaWQgc2V0QWx3YXlzQWNjZXB0Q29v
a2llcyhjb25zdCBDcHBBcmd1bWVudExpc3QmLCBDcHBWYXJpYW50Kik7CisKKyAgICAvLyBHaXZl
cyBmb2N1cyB0byB0aGUgd2luZG93LgorICAgIHZvaWQgc2V0V2luZG93SXNLZXkoY29uc3QgQ3Bw
QXJndW1lbnRMaXN0JiwgQ3BwVmFyaWFudCopOworCisgICAgLy8gQ29udmVydHMgYSBVUkwgc3Rh
cnRpbmcgd2l0aCBmaWxlOi8vL3RtcC8gdG8gdGhlIGxvY2FsIG1hcHBpbmcuCisgICAgdm9pZCBw
YXRoVG9Mb2NhbFJlc291cmNlKGNvbnN0IENwcEFyZ3VtZW50TGlzdCYsIENwcFZhcmlhbnQqKTsK
KworICAgIC8vIFVzZWQgdG8gc2V0IHRoZSBkZXZpY2Ugc2NhbGUgZmFjdG9yLgorICAgIHZvaWQg
c2V0QmFja2luZ1NjYWxlRmFjdG9yKGNvbnN0IENwcEFyZ3VtZW50TGlzdCYsIENwcFZhcmlhbnQq
KTsKKworICAgIC8vIENhbGxzIHNldGxvY2FsZShMQ19BTEwsIC4uLikgZm9yIGEgc3BlY2lmaWVk
IGxvY2FsZS4KKyAgICAvLyBSZXNldHMgYmV0d2VlbiB0ZXN0cy4KKyAgICB2b2lkIHNldFBPU0lY
TG9jYWxlKGNvbnN0IENwcEFyZ3VtZW50TGlzdCYsIENwcFZhcmlhbnQqKTsKKwogICAgIC8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLwogICAgIC8vIFByb3BlcnRpZXMKICAgICB2b2lkIHdvcmtlclRocmVhZENv
dW50KENwcFZhcmlhbnQqKTsKQEAgLTQ1Nyw2ICs0NzYsOSBAQCBwcml2YXRlOgogICAgIC8vIFdB
ViBhdWRpbyBkYXRhIGlzIHN0b3JlZCBoZXJlLgogICAgIFdlYktpdDo6V2ViQXJyYXlCdWZmZXJW
aWV3IG1fYXVkaW9EYXRhOwogCisgICAgLy8gVXNlZCBmb3IgdGVzdCB0aW1lb3V0cy4KKyAgICBX
ZWJUYXNrTGlzdCBtX3Rhc2tMaXN0OworCiAgICAgV2ViVGVzdERlbGVnYXRlKiBtX2RlbGVnYXRl
OwogICAgIFdlYktpdDo6V2ViVmlldyogbV93ZWJWaWV3OwogCmRpZmYgLS1naXQgYS9Ub29scy9E
dW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9XZWJWaWV3SG9zdC5jcHAgYi9Ub29scy9EdW1wUmVuZGVy
VHJlZS9jaHJvbWl1bS9XZWJWaWV3SG9zdC5jcHAKaW5kZXggZmJlY2Q0MzVjNzBjODg1ZTcwOTky
MDdlYTRiOWI1N2ViZmQyNjM1ZC4uN2I2MTY2ZGEyOWIzMGVhOWIwNGQ4NzY4YmRhMWI0ZjU0OWY4
MmY3YyAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vV2ViVmlld0hv
c3QuY3BwCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1dlYlZpZXdIb3N0LmNw
cApAQCAtNzAsNiArNzAsNyBAQAogI2luY2x1ZGUgInNraWEvZXh0L3BsYXRmb3JtX2NhbnZhcy5o
IgogI2luY2x1ZGUgIndlYmtpdC9zdXBwb3J0L3Rlc3RfbWVkaWFfc3RyZWFtX2NsaWVudC5oIgog
I2luY2x1ZGUgIndlYmtpdC9zdXBwb3J0L3dlYmtpdF9zdXBwb3J0LmgiCisjaW5jbHVkZSA8Y2xv
Y2FsZT4KICNpbmNsdWRlIDxwdWJsaWMvV2ViQ1N0cmluZy5oPgogI2luY2x1ZGUgPHB1YmxpYy9X
ZWJDb21wb3NpdG9yT3V0cHV0U3VyZmFjZS5oPgogI2luY2x1ZGUgPHB1YmxpYy9XZWJDb21wb3Np
dG9yU3VwcG9ydC5oPgpAQCAtMTA2OSw2ICsxMDcwLDYwIEBAIHZvaWQgV2ViVmlld0hvc3Q6OmV2
YWx1YXRlSW5XZWJJbnNwZWN0b3IobG9uZyBjYWxsSUQsIGNvbnN0IHN0ZDo6c3RyaW5nJiBzY3Jp
cHQpCiAgICAgbV9zaGVsbC0+ZHJ0RGV2VG9vbHNBZ2VudCgpLT5ldmFsdWF0ZUluV2ViSW5zcGVj
dG9yKGNhbGxJRCwgc2NyaXB0KTsKIH0KIAordm9pZCBXZWJWaWV3SG9zdDo6c2V0RGV2aWNlU2Nh
bGVGYWN0b3IoZmxvYXQgZGV2aWNlU2NhbGVGYWN0b3IpCit7CisgICAgd2ViVmlldygpLT5zZXRE
ZXZpY2VTY2FsZUZhY3RvcihkZXZpY2VTY2FsZUZhY3Rvcik7CisgICAgZGlzY2FyZEJhY2tpbmdT
dG9yZSgpOworfQorCit2b2lkIFdlYlZpZXdIb3N0OjpzZXRGb2N1cyhib29sIGZvY3VzZWQpCit7
CisgICAgbV9zaGVsbC0+c2V0Rm9jdXMobV9zaGVsbC0+d2ViVmlldygpLCBmb2N1c2VkKTsKK30K
Kwordm9pZCBXZWJWaWV3SG9zdDo6c2V0QWNjZXB0QWxsQ29va2llcyhib29sIGFjY2VwdENvb2tp
ZXMpCit7CisgICAgd2Via2l0X3N1cHBvcnQ6OlNldEFjY2VwdEFsbENvb2tpZXMoYWNjZXB0Q29v
a2llcyk7Cit9CisKK3N0cmluZyBXZWJWaWV3SG9zdDo6cGF0aFRvTG9jYWxSZXNvdXJjZShjb25z
dCBzdHJpbmcmIHVybCkKK3sKKyNpZiBPUyhXSU5ET1dTKQorICAgIGlmICghdXJsLmZpbmQoIi90
bXAvIikpIHsKKyAgICAgICAgLy8gV2Ugd2FudCBhIHRlbXAgZmlsZS4KKyAgICAgICAgY29uc3Qg
dW5zaWduZWQgdGVtcFByZWZpeExlbmd0aCA9IDU7CisgICAgICAgIHNpemVfdCBidWZmZXJTaXpl
ID0gTUFYX1BBVEg7CisgICAgICAgIE93bkFycmF5UHRyPFdDSEFSPiB0ZW1wUGF0aCA9IGFkb3B0
QXJyYXlQdHIobmV3IFdDSEFSW2J1ZmZlclNpemVdKTsKKyAgICAgICAgRFdPUkQgdGVtcExlbmd0
aCA9IDo6R2V0VGVtcFBhdGhXKGJ1ZmZlclNpemUsIHRlbXBQYXRoLmdldCgpKTsKKyAgICAgICAg
aWYgKHRlbXBMZW5ndGggKyB1cmwubGVuZ3RoKCkgLSB0ZW1wUHJlZml4TGVuZ3RoICsgMSA+IGJ1
ZmZlclNpemUpIHsKKyAgICAgICAgICAgIGJ1ZmZlclNpemUgPSB0ZW1wTGVuZ3RoICsgdXJsLmxl
bmd0aCgpIC0gdGVtcFByZWZpeExlbmd0aCArIDE7CisgICAgICAgICAgICB0ZW1wUGF0aCA9IGFk
b3B0QXJyYXlQdHIobmV3IFdDSEFSW2J1ZmZlclNpemVdKTsKKyAgICAgICAgICAgIHRlbXBMZW5n
dGggPSBHZXRUZW1wUGF0aFcoYnVmZmVyU2l6ZSwgdGVtcFBhdGguZ2V0KCkpOworICAgICAgICAg
ICAgQVNTRVJUKHRlbXBMZW5ndGggPCBidWZmZXJTaXplKTsKKyAgICAgICAgfQorICAgICAgICBz
dHJpbmcgcmVzdWx0UGF0aChXZWJTdHJpbmcodGVtcFBhdGguZ2V0KCksIHRlbXBMZW5ndGgpLnV0
ZjgoKSk7CisgICAgICAgIHJlc3VsdFBhdGguYXBwZW5kKHVybC5zdWJzdHIodGVtcFByZWZpeExl
bmd0aCkpOworICAgICAgICByZXR1cm4gcmVzdWx0UGF0aDsKKyAgICB9CisjZW5kaWYKKworICAg
IC8vIFNvbWUgbGF5b3V0IHRlc3RzIHVzZSBmaWxlOi8vLy8gd2hpY2ggd2UgcmVzb2x2ZSBhcyBh
IFVOQyBwYXRoLiBOb3JtYWxpemUKKyAgICAvLyB0aGVtIHRvIGp1c3QgZmlsZTovLy8uCisgICAg
c3RyaW5nIGxvd2VyVXJsID0gdXJsOworICAgIHN0cmluZyByZXN1bHQgPSB1cmw7CisgICAgdHJh
bnNmb3JtKGxvd2VyVXJsLmJlZ2luKCksIGxvd2VyVXJsLmVuZCgpLCBsb3dlclVybC5iZWdpbigp
LCA6OnRvbG93ZXIpOworICAgIHdoaWxlICghbG93ZXJVcmwuZmluZCgiZmlsZTovLy8vIikpIHsK
KyAgICAgICAgcmVzdWx0ID0gcmVzdWx0LnN1YnN0cigwLCA4KSArIHJlc3VsdC5zdWJzdHIoOSk7
CisgICAgICAgIGxvd2VyVXJsID0gbG93ZXJVcmwuc3Vic3RyKDAsIDgpICsgbG93ZXJVcmwuc3Vi
c3RyKDkpOworICAgIH0KKyAgICByZXR1cm4gd2Via2l0X3N1cHBvcnQ6OlJld3JpdGVMYXlvdXRU
ZXN0c1VSTChyZXN1bHQpLnNwZWMoKTsKK30KKwordm9pZCBXZWJWaWV3SG9zdDo6c2V0TG9jYWxl
KGNvbnN0IHN0ZDo6c3RyaW5nJiBsb2NhbGUpCit7CisgICAgc2V0bG9jYWxlKExDX0FMTCwgbG9j
YWxlLmNfc3RyKCkpOworfQorCiAvLyBQdWJsaWMgZnVuY3Rpb25zIC0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKIFdlYlZpZXdIb3N0
OjpXZWJWaWV3SG9zdChUZXN0U2hlbGwqIHNoZWxsKQpAQCAtMTM5MiwxMiArMTQ0Nyw2IEBAIHZv
aWQgV2ViVmlld0hvc3Q6OnNldFBlbmRpbmdFeHRyYURhdGEoUGFzc093blB0cjxUZXN0U2hlbGxF
eHRyYURhdGE+IGV4dHJhRGF0YSkKICAgICBtX3BlbmRpbmdFeHRyYURhdGEgPSBleHRyYURhdGE7
CiB9CiAKLXZvaWQgV2ViVmlld0hvc3Q6OnNldERldmljZVNjYWxlRmFjdG9yKGZsb2F0IGRldmlj
ZVNjYWxlRmFjdG9yKQotewotICAgIHdlYlZpZXcoKS0+c2V0RGV2aWNlU2NhbGVGYWN0b3IoZGV2
aWNlU2NhbGVGYWN0b3IpOwotICAgIGRpc2NhcmRCYWNraW5nU3RvcmUoKTsKLX0KLQogdm9pZCBX
ZWJWaWV3SG9zdDo6c2V0UGFnZVRpdGxlKGNvbnN0IFdlYlN0cmluZyYpCiB7CiAgICAgLy8gTm90
aGluZyB0byBkbyBpbiBsYXlvdXQgdGVzdC4KZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJU
cmVlL2Nocm9taXVtL1dlYlZpZXdIb3N0LmggYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1
bS9XZWJWaWV3SG9zdC5oCmluZGV4IDkwNDA5NWMzZjk4OGU3M2EwMGE4ZjIyYzQyZDBiZWNhMzUx
YmQwYWQuLjYxZmMxZmZkOTAzNjIxNjY1ODVlZmRjNmQwY2VhZGM1MjM1YmMyZWYgMTAwNjQ0Ci0t
LSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1dlYlZpZXdIb3N0LmgKKysrIGIvVG9v
bHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vV2ViVmlld0hvc3QuaApAQCAtOTYsNyArOTYsNiBA
QCBjbGFzcyBXZWJWaWV3SG9zdCA6IHB1YmxpYyBXZWJLaXQ6OldlYlZpZXdDbGllbnQsIHB1Ymxp
YyBXZWJLaXQ6OldlYkZyYW1lQ2xpZW50LAogICAgIHZvaWQgc2V0QmxvY2tSZWRpcmVjdHMoYm9v
bCBibG9jaykgeyBtX2Jsb2Nrc1JlZGlyZWN0cyA9IGJsb2NrOyB9CiAgICAgdm9pZCBzZXRSZXF1
ZXN0UmV0dXJuTnVsbChib29sIHJldHVybk51bGwpIHsgbV9yZXF1ZXN0UmV0dXJuTnVsbCA9IHJl
dHVybk51bGw7IH0KICAgICB2b2lkIHNldFBlbmRpbmdFeHRyYURhdGEoUGFzc093blB0cjxUZXN0
U2hlbGxFeHRyYURhdGE+KTsKLSAgICB2b2lkIHNldERldmljZVNjYWxlRmFjdG9yKGZsb2F0KTsK
IAogICAgIHZvaWQgcGFpbnRSZWN0KGNvbnN0IFdlYktpdDo6V2ViUmVjdCYpOwogICAgIHZvaWQg
cGFpbnRJbnZhbGlkYXRlZFJlZ2lvbigpOwpAQCAtMTU0LDYgKzE1MywxMSBAQCBjbGFzcyBXZWJW
aWV3SG9zdCA6IHB1YmxpYyBXZWJLaXQ6OldlYlZpZXdDbGllbnQsIHB1YmxpYyBXZWJLaXQ6Oldl
YkZyYW1lQ2xpZW50LAogICAgIHZpcnR1YWwgdm9pZCBzaG93RGV2VG9vbHMoKSBPVkVSUklERTsK
ICAgICB2aXJ0dWFsIHZvaWQgY2xvc2VEZXZUb29scygpIE9WRVJSSURFOwogICAgIHZpcnR1YWwg
dm9pZCBldmFsdWF0ZUluV2ViSW5zcGVjdG9yKGxvbmcsIGNvbnN0IHN0ZDo6c3RyaW5nJikgT1ZF
UlJJREU7CisgICAgdmlydHVhbCB2b2lkIHNldERldmljZVNjYWxlRmFjdG9yKGZsb2F0KSBPVkVS
UklERTsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0Rm9jdXMoYm9vbCkgT1ZFUlJJREU7CisgICAgdmly
dHVhbCB2b2lkIHNldEFjY2VwdEFsbENvb2tpZXMoYm9vbCkgT1ZFUlJJREU7CisgICAgdmlydHVh
bCBzdGQ6OnN0cmluZyBwYXRoVG9Mb2NhbFJlc291cmNlKGNvbnN0IHN0ZDo6c3RyaW5nJiB1cmwp
IE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBzZXRMb2NhbGUoY29uc3Qgc3RkOjpzdHJpbmcm
KSBPVkVSUklERTsKIAogICAgIC8vIE5hdmlnYXRpb25Ib3N0CiAgICAgdmlydHVhbCBib29sIG5h
dmlnYXRlKGNvbnN0IFRlc3ROYXZpZ2F0aW9uRW50cnkmLCBib29sIHJlbG9hZCk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>182767</attachid>
            <date>2013-01-15 07:29:47 -0800</date>
            <delta_ts>2013-01-15 07:36:03 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-106904-20130115162646.patch</filename>
            <type>text/plain</type>
            <size>25376</size>
            <attacher>jochen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM5NzMyCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggZGIwNjg4Y2Q5MTIzMmIyOGIxNmZjMGY0NzU5YjRmMGZi
MmZiNDgwZC4uY2Q2NzU1ZGE2OWVkY2JkODdhMTMxNmU2MTNmMTA5NGM5MWExZmU5ZCAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQz
IEBACisyMDEzLTAxLTE1ICBKb2NoZW4gRWlzaW5nZXIgIDxqb2NoZW5AY2hyb21pdW0ub3JnPgor
CisgICAgICAgIFtjaHJvbWl1bV0gcm91dGUgbW9yZSB3ZWJraXRfc3VwcG9ydCBhbmQgd2Vidmll
d2hvc3QgY2FsbGJhY2tzIHRocm91Z2ggV2ViVGVzdERlbGVnYXRlCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDY5MDQKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2Nocm9taXVt
L0RSVFRlc3RSdW5uZXIuY3BwOgorICAgICAgICAoRFJUVGVzdFJ1bm5lcjo6RFJUVGVzdFJ1bm5l
cik6CisgICAgICAgIChEUlRUZXN0UnVubmVyOjpub3RpZnlEb25lKToKKyAgICAgICAgKERSVFRl
c3RSdW5uZXI6OnJlc2V0KToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9EUlRU
ZXN0UnVubmVyLmg6CisgICAgICAgIChEUlRUZXN0UnVubmVyKToKKyAgICAgICAgKiBEdW1wUmVu
ZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3B1YmxpYy9XZWJUZXN0RGVsZWdhdGUuaDoKKyAg
ICAgICAgKFdlYlRlc3RSdW5uZXI6OldlYlRlc3REZWxlZ2F0ZTo6c2V0RGV2aWNlU2NhbGVGYWN0
b3IpOgorICAgICAgICAoV2ViVGVzdFJ1bm5lcjo6V2ViVGVzdERlbGVnYXRlOjpzZXRGb2N1cyk6
CisgICAgICAgIChXZWJUZXN0UnVubmVyOjpXZWJUZXN0RGVsZWdhdGU6OnNldEFjY2VwdEFsbENv
b2tpZXMpOgorICAgICAgICAoV2ViVGVzdFJ1bm5lcjo6V2ViVGVzdERlbGVnYXRlOjpwYXRoVG9M
b2NhbFJlc291cmNlKToKKyAgICAgICAgKFdlYlRlc3RSdW5uZXI6OldlYlRlc3REZWxlZ2F0ZTo6
c2V0TG9jYWxlKToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVy
L3NyYy9UZXN0UnVubmVyLmNwcDoKKyAgICAgICAgKFdlYlRlc3RSdW5uZXI6OlRlc3RSdW5uZXI6
OlRlc3RSdW5uZXIpOgorICAgICAgICAoV2ViVGVzdFJ1bm5lcjo6VGVzdFJ1bm5lcjo6cmVzZXQp
OgorICAgICAgICAoV2ViVGVzdFJ1bm5lcjo6VGVzdFJ1bm5lcjo6c2V0QWx3YXlzQWNjZXB0Q29v
a2llcyk6CisgICAgICAgIChXZWJUZXN0UnVubmVyKToKKyAgICAgICAgKFdlYlRlc3RSdW5uZXI6
OlRlc3RSdW5uZXI6OnNldFdpbmRvd0lzS2V5KToKKyAgICAgICAgKFdlYlRlc3RSdW5uZXI6OlRl
c3RSdW5uZXI6OnBhdGhUb0xvY2FsUmVzb3VyY2UpOgorICAgICAgICAoV2ViVGVzdFJ1bm5lcjo6
VGVzdFJ1bm5lcjo6c2V0QmFja2luZ1NjYWxlRmFjdG9yKToKKyAgICAgICAgKFdlYlRlc3RSdW5u
ZXI6OlRlc3RSdW5uZXI6OnNldFBPU0lYTG9jYWxlKToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJl
ZS9jaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9UZXN0UnVubmVyLmg6CisgICAgICAgIChXZWJUZXN0
UnVubmVyOjpUZXN0UnVubmVyOjp0YXNrTGlzdCk6CisgICAgICAgIChUZXN0UnVubmVyKToKKyAg
ICAgICAgKiBEdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9XZWJWaWV3SG9zdC5jcHA6CisgICAgICAg
IChXZWJWaWV3SG9zdDo6c2V0RGV2aWNlU2NhbGVGYWN0b3IpOgorICAgICAgICAoV2ViVmlld0hv
c3Q6OnNldEZvY3VzKToKKyAgICAgICAgKFdlYlZpZXdIb3N0OjpzZXRBY2NlcHRBbGxDb29raWVz
KToKKyAgICAgICAgKFdlYlZpZXdIb3N0OjpwYXRoVG9Mb2NhbFJlc291cmNlKToKKyAgICAgICAg
KFdlYlZpZXdIb3N0OjpzZXRMb2NhbGUpOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2Nocm9t
aXVtL1dlYlZpZXdIb3N0Lmg6CisgICAgICAgIChXZWJWaWV3SG9zdCk6CisKIDIwMTMtMDEtMTUg
IEFuZHJhcyBCZWNzaSAgPGFuZHJhcy5iZWNzaUBkaWdpYS5jb20+CiAKICAgICAgICAgW1F0XSBG
aXggSW1hZ2VEaWZmJ3MgaW1hZ2UgZm9ybWF0IGNvbnZlcnNpb24KZGlmZiAtLWdpdCBhL1Rvb2xz
L0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL0RSVFRlc3RSdW5uZXIuY3BwIGIvVG9vbHMvRHVtcFJl
bmRlclRyZWUvY2hyb21pdW0vRFJUVGVzdFJ1bm5lci5jcHAKaW5kZXggM2YwNjQ2OWEyZDdiYWUy
NGNhOGM5OTRkNzE1MWM0YzQzMjFlNGJkNi4uNTFhZWRmOGRjNWZhY2Q5MzBmYzE2YjI4MzMzMmRl
MGMxYzQ0ZjdkMSAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vRFJU
VGVzdFJ1bm5lci5jcHAKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vRFJUVGVz
dFJ1bm5lci5jcHAKQEAgLTY4LDcgKzY4LDYgQEAKICNpbmNsdWRlICJ3ZWJraXQvc3VwcG9ydC93
ZWJraXRfc3VwcG9ydC5oIgogI2luY2x1ZGUgPGFsZ29yaXRobT4KICNpbmNsdWRlIDxjY3R5cGU+
Ci0jaW5jbHVkZSA8Y2xvY2FsZT4KICNpbmNsdWRlIDxjc3RkbGliPgogI2luY2x1ZGUgPGxpbWl0
cz4KICNpbmNsdWRlIDxzc3RyZWFtPgpAQCAtMTE3LDcgKzExNiw2IEBAIERSVFRlc3RSdW5uZXI6
OkRSVFRlc3RSdW5uZXIoVGVzdFNoZWxsKiBzaGVsbCkKICNlbmRpZgogICAgIGJpbmRNZXRob2Qo
Im5vdGlmeURvbmUiLCAmRFJUVGVzdFJ1bm5lcjo6bm90aWZ5RG9uZSk7CiAgICAgYmluZE1ldGhv
ZCgibnVtYmVyT2ZQZW5kaW5nR2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdHMiLCAmRFJUVGVz
dFJ1bm5lcjo6IG51bWJlck9mUGVuZGluZ0dlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3RzKTsK
LSAgICBiaW5kTWV0aG9kKCJwYXRoVG9Mb2NhbFJlc291cmNlIiwgJkRSVFRlc3RSdW5uZXI6OnBh
dGhUb0xvY2FsUmVzb3VyY2UpOwogICAgIGJpbmRNZXRob2QoInF1ZXVlQmFja05hdmlnYXRpb24i
LCAmRFJUVGVzdFJ1bm5lcjo6cXVldWVCYWNrTmF2aWdhdGlvbik7CiAgICAgYmluZE1ldGhvZCgi
cXVldWVGb3J3YXJkTmF2aWdhdGlvbiIsICZEUlRUZXN0UnVubmVyOjpxdWV1ZUZvcndhcmROYXZp
Z2F0aW9uKTsKICAgICBiaW5kTWV0aG9kKCJxdWV1ZUxvYWRpbmdTY3JpcHQiLCAmRFJUVGVzdFJ1
bm5lcjo6cXVldWVMb2FkaW5nU2NyaXB0KTsKQEAgLTEyNSw3ICsxMjMsNiBAQCBEUlRUZXN0UnVu
bmVyOjpEUlRUZXN0UnVubmVyKFRlc3RTaGVsbCogc2hlbGwpCiAgICAgYmluZE1ldGhvZCgicXVl
dWVMb2FkSFRNTFN0cmluZyIsICZEUlRUZXN0UnVubmVyOjpxdWV1ZUxvYWRIVE1MU3RyaW5nKTsK
ICAgICBiaW5kTWV0aG9kKCJxdWV1ZU5vbkxvYWRpbmdTY3JpcHQiLCAmRFJUVGVzdFJ1bm5lcjo6
cXVldWVOb25Mb2FkaW5nU2NyaXB0KTsKICAgICBiaW5kTWV0aG9kKCJxdWV1ZVJlbG9hZCIsICZE
UlRUZXN0UnVubmVyOjpxdWV1ZVJlbG9hZCk7Ci0gICAgYmluZE1ldGhvZCgic2V0QWx3YXlzQWNj
ZXB0Q29va2llcyIsICZEUlRUZXN0UnVubmVyOjpzZXRBbHdheXNBY2NlcHRDb29raWVzKTsKICAg
ICBiaW5kTWV0aG9kKCJzZXRDbG9zZVJlbWFpbmluZ1dpbmRvd3NXaGVuQ29tcGxldGUiLCAmRFJU
VGVzdFJ1bm5lcjo6c2V0Q2xvc2VSZW1haW5pbmdXaW5kb3dzV2hlbkNvbXBsZXRlKTsKICAgICBi
aW5kTWV0aG9kKCJzZXRDdXN0b21Qb2xpY3lEZWxlZ2F0ZSIsICZEUlRUZXN0UnVubmVyOjpzZXRD
dXN0b21Qb2xpY3lEZWxlZ2F0ZSk7CiAgICAgYmluZE1ldGhvZCgic2V0RGF0YWJhc2VRdW90YSIs
ICZEUlRUZXN0UnVubmVyOjpzZXREYXRhYmFzZVF1b3RhKTsKQEAgLTEzNywxMiArMTM0LDkgQEAg
RFJUVGVzdFJ1bm5lcjo6RFJUVGVzdFJ1bm5lcihUZXN0U2hlbGwqIHNoZWxsKQogICAgIGJpbmRN
ZXRob2QoInNldFBvaW50ZXJMb2NrV2lsbFJlc3BvbmRBc3luY2hyb25vdXNseSIsICZEUlRUZXN0
UnVubmVyOjpzZXRQb2ludGVyTG9ja1dpbGxSZXNwb25kQXN5bmNocm9ub3VzbHkpOwogICAgIGJp
bmRNZXRob2QoInNldFBvaW50ZXJMb2NrV2lsbEZhaWxTeW5jaHJvbm91c2x5IiwgJkRSVFRlc3RS
dW5uZXI6OnNldFBvaW50ZXJMb2NrV2lsbEZhaWxTeW5jaHJvbm91c2x5KTsKICNlbmRpZgotICAg
IGJpbmRNZXRob2QoInNldFBPU0lYTG9jYWxlIiwgJkRSVFRlc3RSdW5uZXI6OnNldFBPU0lYTG9j
YWxlKTsKLSAgICBiaW5kTWV0aG9kKCJzZXRCYWNraW5nU2NhbGVGYWN0b3IiLCAmRFJUVGVzdFJ1
bm5lcjo6c2V0QmFja2luZ1NjYWxlRmFjdG9yKTsKICAgICBiaW5kTWV0aG9kKCJzZXRXaWxsU2Vu
ZFJlcXVlc3RDbGVhckhlYWRlciIsICZEUlRUZXN0UnVubmVyOjpzZXRXaWxsU2VuZFJlcXVlc3RD
bGVhckhlYWRlcik7CiAgICAgYmluZE1ldGhvZCgic2V0V2lsbFNlbmRSZXF1ZXN0UmV0dXJuc051
bGwiLCAmRFJUVGVzdFJ1bm5lcjo6c2V0V2lsbFNlbmRSZXF1ZXN0UmV0dXJuc051bGwpOwogICAg
IGJpbmRNZXRob2QoInNldFdpbGxTZW5kUmVxdWVzdFJldHVybnNOdWxsT25SZWRpcmVjdCIsICZE
UlRUZXN0UnVubmVyOjpzZXRXaWxsU2VuZFJlcXVlc3RSZXR1cm5zTnVsbE9uUmVkaXJlY3QpOwot
ICAgIGJpbmRNZXRob2QoInNldFdpbmRvd0lzS2V5IiwgJkRSVFRlc3RSdW5uZXI6OnNldFdpbmRv
d0lzS2V5KTsKICNpZiBFTkFCTEUoTk9USUZJQ0FUSU9OUykKICAgICBiaW5kTWV0aG9kKCJzaW11
bGF0ZUxlZ2FjeVdlYk5vdGlmaWNhdGlvbkNsaWNrIiwgJkRSVFRlc3RSdW5uZXI6OnNpbXVsYXRl
TGVnYWN5V2ViTm90aWZpY2F0aW9uQ2xpY2spOwogI2VuZGlmCkBAIC0yMjEsNyArMjE1LDcgQEAg
dm9pZCBEUlRUZXN0UnVubmVyOjp3YWl0VW50aWxEb25lKGNvbnN0IENwcEFyZ3VtZW50TGlzdCYs
IENwcFZhcmlhbnQqIHJlc3VsdCkKIHZvaWQgRFJUVGVzdFJ1bm5lcjo6bm90aWZ5RG9uZShjb25z
dCBDcHBBcmd1bWVudExpc3QmLCBDcHBWYXJpYW50KiByZXN1bHQpCiB7CiAgICAgLy8gVGVzdCBk
aWRuJ3QgdGltZW91dC4gS2lsbCB0aGUgdGltZW91dCB0aW1lci4KLSAgICBtX3Rhc2tMaXN0LnJl
dm9rZUFsbCgpOworICAgIHRhc2tMaXN0KCktPnJldm9rZUFsbCgpOwogCiAgICAgY29tcGxldGVO
b3RpZnlEb25lKGZhbHNlKTsKICAgICByZXN1bHQtPnNldE51bGwoKTsKQEAgLTM5MiwyNiArMzg2
LDE5IEBAIHZvaWQgRFJUVGVzdFJ1bm5lcjo6cXVldWVMb2FkSFRNTFN0cmluZyhjb25zdCBDcHBB
cmd1bWVudExpc3QmIGFyZ3VtZW50cywgQ3BwVmFyCiB2b2lkIERSVFRlc3RSdW5uZXI6OnJlc2V0
KCkKIHsKICAgICBUZXN0UnVubmVyOjpyZXNldCgpOwotICAgIGlmIChtX3NoZWxsKQotICAgICAg
ICBtX3NoZWxsLT53ZWJWaWV3SG9zdCgpLT5zZXREZXZpY2VTY2FsZUZhY3RvcigxKTsKICAgICBt
X3dhaXRVbnRpbERvbmUgPSBmYWxzZTsKICAgICBtX3dlYkhpc3RvcnlJdGVtQ291bnQuc2V0KDAp
OwogICAgIG1fdGl0bGVUZXh0RGlyZWN0aW9uLnNldCgibHRyIik7CiAgICAgbV9pbnRlcmNlcHRQ
b3N0TWVzc2FnZS5zZXQoZmFsc2UpOwogCi0gICAgd2Via2l0X3N1cHBvcnQ6OlNldEFjY2VwdEFs
bENvb2tpZXMoZmFsc2UpOwotCiAgICAgLy8gUmVzZXQgdGhlIGRlZmF1bHQgcXVvdGEgZm9yIGVh
Y2ggb3JpZ2luIHRvIDVNQgogICAgIHdlYmtpdF9zdXBwb3J0OjpTZXREYXRhYmFzZVF1b3RhKDUg
KiAxMDI0ICogMTAyNCk7CiAKLSAgICBzZXRsb2NhbGUoTENfQUxMLCAiIik7Ci0KICAgICBpZiAo
bV9jbG9zZVJlbWFpbmluZ1dpbmRvd3MpCiAgICAgICAgIG1fc2hlbGwtPmNsb3NlUmVtYWluaW5n
V2luZG93cygpOwogICAgIGVsc2UKICAgICAgICAgbV9jbG9zZVJlbWFpbmluZ1dpbmRvd3MgPSB0
cnVlOwogICAgIG1fd29ya1F1ZXVlLnJlc2V0KCk7Ci0gICAgbV90YXNrTGlzdC5yZXZva2VBbGwo
KTsKIH0KIAogdm9pZCBEUlRUZXN0UnVubmVyOjpsb2NhdGlvbkNoYW5nZURvbmUoKQpAQCAtNDQ0
LDIwICs0MzEsNiBAQCB2b2lkIERSVFRlc3RSdW5uZXI6OnNldENsb3NlUmVtYWluaW5nV2luZG93
c1doZW5Db21wbGV0ZShjb25zdCBDcHBBcmd1bWVudExpc3QmCiAgICAgcmVzdWx0LT5zZXROdWxs
KCk7CiB9CiAKLXZvaWQgRFJUVGVzdFJ1bm5lcjo6c2V0QWx3YXlzQWNjZXB0Q29va2llcyhjb25z
dCBDcHBBcmd1bWVudExpc3QmIGFyZ3VtZW50cywgQ3BwVmFyaWFudCogcmVzdWx0KQotewotICAg
IGlmIChhcmd1bWVudHMuc2l6ZSgpID4gMCkKLSAgICAgICAgd2Via2l0X3N1cHBvcnQ6OlNldEFj
Y2VwdEFsbENvb2tpZXMoY3BwVmFyaWFudFRvQm9vbChhcmd1bWVudHNbMF0pKTsKLSAgICByZXN1
bHQtPnNldE51bGwoKTsKLX0KLQotdm9pZCBEUlRUZXN0UnVubmVyOjpzZXRXaW5kb3dJc0tleShj
b25zdCBDcHBBcmd1bWVudExpc3QmIGFyZ3VtZW50cywgQ3BwVmFyaWFudCogcmVzdWx0KQotewot
ICAgIGlmIChhcmd1bWVudHMuc2l6ZSgpID4gMCAmJiBhcmd1bWVudHNbMF0uaXNCb29sKCkpCi0g
ICAgICAgIG1fc2hlbGwtPnNldEZvY3VzKG1fc2hlbGwtPndlYlZpZXcoKSwgYXJndW1lbnRzWzBd
LnZhbHVlLmJvb2xWYWx1ZSk7Ci0gICAgcmVzdWx0LT5zZXROdWxsKCk7Ci19Ci0KIHZvaWQgRFJU
VGVzdFJ1bm5lcjo6c2V0Q3VzdG9tUG9saWN5RGVsZWdhdGUoY29uc3QgQ3BwQXJndW1lbnRMaXN0
JiBhcmd1bWVudHMsIENwcFZhcmlhbnQqIHJlc3VsdCkKIHsKICAgICBpZiAoYXJndW1lbnRzLnNp
emUoKSA+IDAgJiYgYXJndW1lbnRzWzBdLmlzQm9vbCgpKSB7CkBAIC01MDEsNDQgKzQ3NCw2IEBA
IHZvaWQgRFJUVGVzdFJ1bm5lcjo6c2V0V2lsbFNlbmRSZXF1ZXN0UmV0dXJuc051bGwoY29uc3Qg
Q3BwQXJndW1lbnRMaXN0JiBhcmd1bWVuCiAgICAgcmVzdWx0LT5zZXROdWxsKCk7CiB9CiAKLXZv
aWQgRFJUVGVzdFJ1bm5lcjo6cGF0aFRvTG9jYWxSZXNvdXJjZShjb25zdCBDcHBBcmd1bWVudExp
c3QmIGFyZ3VtZW50cywgQ3BwVmFyaWFudCogcmVzdWx0KQotewotICAgIHJlc3VsdC0+c2V0TnVs
bCgpOwotICAgIGlmIChhcmd1bWVudHMuc2l6ZSgpIDw9IDAgfHwgIWFyZ3VtZW50c1swXS5pc1N0
cmluZygpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBzdHJpbmcgdXJsID0gYXJndW1lbnRzWzBd
LnRvU3RyaW5nKCk7Ci0jaWYgT1MoV0lORE9XUykKLSAgICBpZiAoIXVybC5maW5kKCIvdG1wLyIp
KSB7Ci0gICAgICAgIC8vIFdlIHdhbnQgYSB0ZW1wIGZpbGUuCi0gICAgICAgIGNvbnN0IHVuc2ln
bmVkIHRlbXBQcmVmaXhMZW5ndGggPSA1OwotICAgICAgICBzaXplX3QgYnVmZmVyU2l6ZSA9IE1B
WF9QQVRIOwotICAgICAgICBPd25BcnJheVB0cjxXQ0hBUj4gdGVtcFBhdGggPSBhZG9wdEFycmF5
UHRyKG5ldyBXQ0hBUltidWZmZXJTaXplXSk7Ci0gICAgICAgIERXT1JEIHRlbXBMZW5ndGggPSA6
OkdldFRlbXBQYXRoVyhidWZmZXJTaXplLCB0ZW1wUGF0aC5nZXQoKSk7Ci0gICAgICAgIGlmICh0
ZW1wTGVuZ3RoICsgdXJsLmxlbmd0aCgpIC0gdGVtcFByZWZpeExlbmd0aCArIDEgPiBidWZmZXJT
aXplKSB7Ci0gICAgICAgICAgICBidWZmZXJTaXplID0gdGVtcExlbmd0aCArIHVybC5sZW5ndGgo
KSAtIHRlbXBQcmVmaXhMZW5ndGggKyAxOwotICAgICAgICAgICAgdGVtcFBhdGggPSBhZG9wdEFy
cmF5UHRyKG5ldyBXQ0hBUltidWZmZXJTaXplXSk7Ci0gICAgICAgICAgICB0ZW1wTGVuZ3RoID0g
R2V0VGVtcFBhdGhXKGJ1ZmZlclNpemUsIHRlbXBQYXRoLmdldCgpKTsKLSAgICAgICAgICAgIEFT
U0VSVCh0ZW1wTGVuZ3RoIDwgYnVmZmVyU2l6ZSk7Ci0gICAgICAgIH0KLSAgICAgICAgc3RyaW5n
IHJlc3VsdFBhdGgoV2ViU3RyaW5nKHRlbXBQYXRoLmdldCgpLCB0ZW1wTGVuZ3RoKS51dGY4KCkp
OwotICAgICAgICByZXN1bHRQYXRoLmFwcGVuZCh1cmwuc3Vic3RyKHRlbXBQcmVmaXhMZW5ndGgp
KTsKLSAgICAgICAgcmVzdWx0LT5zZXQocmVzdWx0UGF0aCk7Ci0gICAgICAgIHJldHVybjsKLSAg
ICB9Ci0jZW5kaWYKLQotICAgIC8vIFNvbWUgbGF5b3V0IHRlc3RzIHVzZSBmaWxlOi8vLy8gd2hp
Y2ggd2UgcmVzb2x2ZSBhcyBhIFVOQyBwYXRoLiBOb3JtYWxpemUKLSAgICAvLyB0aGVtIHRvIGp1
c3QgZmlsZTovLy8uCi0gICAgc3RyaW5nIGxvd2VyVXJsID0gdXJsOwotICAgIHRyYW5zZm9ybShs
b3dlclVybC5iZWdpbigpLCBsb3dlclVybC5lbmQoKSwgbG93ZXJVcmwuYmVnaW4oKSwgOjp0b2xv
d2VyKTsKLSAgICB3aGlsZSAoIWxvd2VyVXJsLmZpbmQoImZpbGU6Ly8vLyIpKSB7Ci0gICAgICAg
IHVybCA9IHVybC5zdWJzdHIoMCwgOCkgKyB1cmwuc3Vic3RyKDkpOwotICAgICAgICBsb3dlclVy
bCA9IGxvd2VyVXJsLnN1YnN0cigwLCA4KSArIGxvd2VyVXJsLnN1YnN0cig5KTsKLSAgICB9Ci0g
ICAgcmVzdWx0LT5zZXQod2Via2l0X3N1cHBvcnQ6OlJld3JpdGVMYXlvdXRUZXN0c1VSTCh1cmwp
LnNwZWMoKSk7Ci19Ci0KIAogI2lmIEVOQUJMRShOT1RJRklDQVRJT05TKQogdm9pZCBEUlRUZXN0
UnVubmVyOjpncmFudFdlYk5vdGlmaWNhdGlvblBlcm1pc3Npb24oY29uc3QgQ3BwQXJndW1lbnRM
aXN0JiBhcmd1bWVudHMsIENwcFZhcmlhbnQqIHJlc3VsdCkKQEAgLTYwMCwxMyArNTM1LDYgQEAg
dm9pZCBEUlRUZXN0UnVubmVyOjpzZXREYXRhYmFzZVF1b3RhKGNvbnN0IENwcEFyZ3VtZW50TGlz
dCYgYXJndW1lbnRzLCBDcHBWYXJpYW4KICAgICAgICAgd2Via2l0X3N1cHBvcnQ6OlNldERhdGFi
YXNlUXVvdGEoYXJndW1lbnRzWzBdLnRvSW50MzIoKSk7CiB9CiAKLXZvaWQgRFJUVGVzdFJ1bm5l
cjo6c2V0UE9TSVhMb2NhbGUoY29uc3QgQ3BwQXJndW1lbnRMaXN0JiBhcmd1bWVudHMsIENwcFZh
cmlhbnQqIHJlc3VsdCkKLXsKLSAgICByZXN1bHQtPnNldE51bGwoKTsKLSAgICBpZiAoYXJndW1l
bnRzLnNpemUoKSA9PSAxICYmIGFyZ3VtZW50c1swXS5pc1N0cmluZygpKQotICAgICAgICBzZXRs
b2NhbGUoTENfQUxMLCBhcmd1bWVudHNbMF0udG9TdHJpbmcoKS5jX3N0cigpKTsKLX0KLQogdm9p
ZCBEUlRUZXN0UnVubmVyOjpudW1iZXJPZlBlbmRpbmdHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1
ZXN0cyhjb25zdCBDcHBBcmd1bWVudExpc3QmIGFyZ3VtZW50cywgQ3BwVmFyaWFudCogcmVzdWx0
KQogewogICAgIHJlc3VsdC0+c2V0TnVsbCgpOwpAQCAtNzIyLDQwICs2NTAsNiBAQCB2b2lkIERS
VFRlc3RSdW5uZXI6Ondhc01vY2tTcGVlY2hSZWNvZ25pdGlvbkFib3J0ZWQoY29uc3QgQ3BwQXJn
dW1lbnRMaXN0JiwgQ3BwVgogfQogI2VuZGlmCiAKLWNsYXNzIEludm9rZUNhbGxiYWNrVGFzayA6
IHB1YmxpYyBXZWJNZXRob2RUYXNrPERSVFRlc3RSdW5uZXI+IHsKLXB1YmxpYzoKLSAgICBJbnZv
a2VDYWxsYmFja1Rhc2soRFJUVGVzdFJ1bm5lciogb2JqZWN0LCBQYXNzT3duQXJyYXlQdHI8Q3Bw
VmFyaWFudD4gY2FsbGJhY2tBcmd1bWVudHMsIHVpbnQzMl90IG51bWJlck9mQXJndW1lbnRzKQot
ICAgICAgICA6IFdlYk1ldGhvZFRhc2s8RFJUVGVzdFJ1bm5lcj4ob2JqZWN0KQotICAgICAgICAs
IG1fY2FsbGJhY2tBcmd1bWVudHMoY2FsbGJhY2tBcmd1bWVudHMpCi0gICAgICAgICwgbV9udW1i
ZXJPZkFyZ3VtZW50cyhudW1iZXJPZkFyZ3VtZW50cykKLSAgICB7Ci0gICAgfQotCi0gICAgdmly
dHVhbCB2b2lkIHJ1bklmVmFsaWQoKQotICAgIHsKLSAgICAgICAgQ3BwVmFyaWFudCBpbnZva2VS
ZXN1bHQ7Ci0gICAgICAgIG1fY2FsbGJhY2tBcmd1bWVudHNbMF0uaW52b2tlRGVmYXVsdChtX2Nh
bGxiYWNrQXJndW1lbnRzLmdldCgpLCBtX251bWJlck9mQXJndW1lbnRzLCBpbnZva2VSZXN1bHQp
OwotICAgIH0KLQotcHJpdmF0ZToKLSAgICBPd25BcnJheVB0cjxDcHBWYXJpYW50PiBtX2NhbGxi
YWNrQXJndW1lbnRzOwotICAgIHVpbnQzMl90IG1fbnVtYmVyT2ZBcmd1bWVudHM7Ci19OwotCi12
b2lkIERSVFRlc3RSdW5uZXI6OnNldEJhY2tpbmdTY2FsZUZhY3Rvcihjb25zdCBDcHBBcmd1bWVu
dExpc3QmIGFyZ3VtZW50cywgQ3BwVmFyaWFudCogcmVzdWx0KQotewotICAgIGlmIChhcmd1bWVu
dHMuc2l6ZSgpIDwgMiB8fCAhYXJndW1lbnRzWzBdLmlzTnVtYmVyKCkgfHwgIWFyZ3VtZW50c1sx
XS5pc09iamVjdCgpKQotICAgICAgICByZXR1cm47Ci0gICAgCi0gICAgZmxvYXQgdmFsdWUgPSBh
cmd1bWVudHNbMF0udmFsdWUuZG91YmxlVmFsdWU7Ci0gICAgbV9zaGVsbC0+d2ViVmlld0hvc3Qo
KS0+c2V0RGV2aWNlU2NhbGVGYWN0b3IodmFsdWUpOwotCi0gICAgT3duQXJyYXlQdHI8Q3BwVmFy
aWFudD4gY2FsbGJhY2tBcmd1bWVudHMgPSBhZG9wdEFycmF5UHRyKG5ldyBDcHBWYXJpYW50WzFd
KTsKLSAgICBjYWxsYmFja0FyZ3VtZW50c1swXS5zZXQoYXJndW1lbnRzWzFdKTsKLSAgICByZXN1
bHQtPnNldE51bGwoKTsKLSAgICBwb3N0VGFzayhuZXcgSW52b2tlQ2FsbGJhY2tUYXNrKHRoaXMs
IGNhbGxiYWNrQXJndW1lbnRzLnJlbGVhc2UoKSwgMSkpOwotfQotCiAjaWYgRU5BQkxFKFBPSU5U
RVJfTE9DSykKIHZvaWQgRFJUVGVzdFJ1bm5lcjo6ZGlkQWNxdWlyZVBvaW50ZXJMb2NrKGNvbnN0
IENwcEFyZ3VtZW50TGlzdCYsIENwcFZhcmlhbnQqIHJlc3VsdCkKIHsKZGlmZiAtLWdpdCBhL1Rv
b2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL0RSVFRlc3RSdW5uZXIuaCBiL1Rvb2xzL0R1bXBS
ZW5kZXJUcmVlL2Nocm9taXVtL0RSVFRlc3RSdW5uZXIuaAppbmRleCBlYzYyNGFhM2E4N2RjZGRm
ZGZjZjdiNzUzNjZlNDNjYzUyMzdmNjBmLi5hMWQzOGZhNDRmMzg5MDgyZWFmOTA3NWVmMTliZmVk
Njk0MjU3OTM1IDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9EUlRU
ZXN0UnVubmVyLmgKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vRFJUVGVzdFJ1
bm5lci5oCkBAIC05NCwxMiArOTQsNiBAQCBwdWJsaWM6CiAgICAgdm9pZCBxdWV1ZUxvYWQoY29u
c3QgQ3BwQXJndW1lbnRMaXN0JiwgQ3BwVmFyaWFudCopOwogICAgIHZvaWQgcXVldWVMb2FkSFRN
TFN0cmluZyhjb25zdCBDcHBBcmd1bWVudExpc3QmLCBDcHBWYXJpYW50Kik7CiAKLSAgICAvLyBD
aGFuZ2VzIHRoZSBjb29raWUgcG9saWN5IGZyb20gdGhlIGRlZmF1bHQgdG8gYWxsb3cgYWxsIGNv
b2tpZXMuCi0gICAgdm9pZCBzZXRBbHdheXNBY2NlcHRDb29raWVzKGNvbnN0IENwcEFyZ3VtZW50
TGlzdCYsIENwcFZhcmlhbnQqKTsKLQotICAgIC8vIEdpdmVzIGZvY3VzIHRvIHRoZSB3aW5kb3cu
Ci0gICAgdm9pZCBzZXRXaW5kb3dJc0tleShjb25zdCBDcHBBcmd1bWVudExpc3QmLCBDcHBWYXJp
YW50Kik7Ci0KIAogICAgIC8vIENhdXNlcyBuYXZpZ2F0aW9uIGFjdGlvbnMganVzdCBwcmludG91
dCB0aGUgaW50ZW5kZWQgbmF2aWdhdGlvbiBpbnN0ZWFkCiAgICAgLy8gb2YgdGFraW5nIHlvdSB0
byB0aGUgcGFnZS4gVGhpcyBpcyB1c2VkIGZvciBjYXNlcyBsaWtlIG1haWx0bywgd2hlcmUgeW91
CkBAIC0xMTgsOSArMTEyLDYgQEAgcHVibGljOgogICAgIC8vIENhdXNlcyBXaWxsU2VuZFJlcXVl
c3QgdG8gcmV0dXJuIGFuIGVtcHR5IHJlcXVlc3QuCiAgICAgdm9pZCBzZXRXaWxsU2VuZFJlcXVl
c3RSZXR1cm5zTnVsbChjb25zdCBDcHBBcmd1bWVudExpc3QmLCBDcHBWYXJpYW50Kik7CiAKLSAg
ICAvLyBDb252ZXJ0cyBhIFVSTCBzdGFydGluZyB3aXRoIGZpbGU6Ly8vdG1wLyB0byB0aGUgbG9j
YWwgbWFwcGluZy4KLSAgICB2b2lkIHBhdGhUb0xvY2FsUmVzb3VyY2UoY29uc3QgQ3BwQXJndW1l
bnRMaXN0JiwgQ3BwVmFyaWFudCopOwotCiAjaWYgRU5BQkxFKE5PVElGSUNBVElPTlMpCiAgICAg
Ly8gR3JhbnRzIHBlcm1pc3Npb24gZm9yIGRlc2t0b3Agbm90aWZpY2F0aW9ucyB0byBhbiBvcmln
aW4KICAgICB2b2lkIGdyYW50V2ViTm90aWZpY2F0aW9uUGVybWlzc2lvbihjb25zdCBDcHBBcmd1
bWVudExpc3QmLCBDcHBWYXJpYW50Kik7CkBAIC0xMzYsMTAgKzEyNyw2IEBAIHB1YmxpYzoKICAg
ICAvLyBTZXRzIHRoZSBkZWZhdWx0IHF1b3RhIGZvciBhbGwgb3JpZ2lucwogICAgIHZvaWQgc2V0
RGF0YWJhc2VRdW90YShjb25zdCBDcHBBcmd1bWVudExpc3QmLCBDcHBWYXJpYW50Kik7CiAKLSAg
ICAvLyBDYWxscyBzZXRsb2NhbGUoTENfQUxMLCAuLi4pIGZvciBhIHNwZWNpZmllZCBsb2NhbGUu
Ci0gICAgLy8gUmVzZXRzIGJldHdlZW4gdGVzdHMuCi0gICAgdm9pZCBzZXRQT1NJWExvY2FsZShj
b25zdCBDcHBBcmd1bWVudExpc3QmLCBDcHBWYXJpYW50Kik7Ci0KICAgICAvLyBHZXRzIHRoZSBu
dW1iZXIgb2YgZ2VvbG9jYXRpb24gcGVybWlzc2lvbnMgcmVxdWVzdHMgcGVuZGluZy4KICAgICB2
b2lkIG51bWJlck9mUGVuZGluZ0dlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3RzKGNvbnN0IENw
cEFyZ3VtZW50TGlzdCYsIENwcFZhcmlhbnQqKTsKIApAQCAtMTcwLDkgKzE1Nyw2IEBAIHB1Ymxp
YzoKICAgICB2b2lkIHNldFBvaW50ZXJMb2NrV2lsbFJlc3BvbmRBc3luY2hyb25vdXNseShjb25z
dCBDcHBBcmd1bWVudExpc3QmLCBDcHBWYXJpYW50Kik7CiAjZW5kaWYKIAotICAgIC8vIFVzZWQg
dG8gc2V0IHRoZSBkZXZpY2Ugc2NhbGUgZmFjdG9yLgotICAgIHZvaWQgc2V0QmFja2luZ1NjYWxl
RmFjdG9yKGNvbnN0IENwcEFyZ3VtZW50TGlzdCYsIENwcFZhcmlhbnQqKTsKLQogcHVibGljOgog
ICAgIC8vIFRoZSBmb2xsb3dpbmcgbWV0aG9kcyBhcmUgbm90IGV4cG9zZWQgdG8gSmF2YVNjcmlw
dC4KICAgICB2b2lkIHNldFdvcmtRdWV1ZUZyb3plbihib29sIGZyb3plbikgeyBtX3dvcmtRdWV1
ZS5zZXRGcm96ZW4oZnJvemVuKTsgfQpAQCAtMjA4LDggKzE5Miw2IEBAIHB1YmxpYzoKICAgICAg
ICAgdmlydHVhbCBib29sIHJ1bihUZXN0U2hlbGwqKSA9IDA7CiAgICAgfTsKIAotICAgIFdlYlRh
c2tMaXN0KiB0YXNrTGlzdCgpIHsgcmV0dXJuICZtX3Rhc2tMaXN0OyB9Ci0KIHByaXZhdGU6CiAg
ICAgZnJpZW5kIGNsYXNzIFdvcmtJdGVtOwogICAgIGZyaWVuZCBjbGFzcyBXb3JrUXVldWU7CkBA
IC0yNTEsOSArMjMzLDYgQEAgcHJpdmF0ZToKICAgICAgICAgdmlydHVhbCB2b2lkIHJ1bklmVmFs
aWQoKSB7IG1fb2JqZWN0LT5jb21wbGV0ZU5vdGlmeURvbmUodHJ1ZSk7IH0KICAgICB9OwogCi0g
ICAgLy8gVXNlZCBmb3IgdGVzdCB0aW1lb3V0cy4KLSAgICBXZWJUYXNrTGlzdCBtX3Rhc2tMaXN0
OwotCiAgICAgLy8gTm9uLW93bmluZyBwb2ludGVyLiBUaGUgRFJUVGVzdFJ1bm5lciBpcyBvd25l
ZCBieSB0aGUgaG9zdC4KICAgICBUZXN0U2hlbGwqIG1fc2hlbGw7CiAKZGlmZiAtLWdpdCBhL1Rv
b2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvcHVibGljL1dlYlRlc3REZWxl
Z2F0ZS5oIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9wdWJsaWMv
V2ViVGVzdERlbGVnYXRlLmgKaW5kZXggZGE4NDVlNTMzZGEwNjA0ZmUwYmVkZjIyNWRjMGZlYmZl
YTViM2ViZC4uMDkwNDYxMmNmNTJmMjY0ZmE5NGM0NWU4MjY4YzFiNDhmNjA4YTE2YiAxMDA2NDQK
LS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9wdWJsaWMvV2Vi
VGVzdERlbGVnYXRlLmgKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1
bm5lci9wdWJsaWMvV2ViVGVzdERlbGVnYXRlLmgKQEAgLTg1LDYgKzg1LDExIEBAIHB1YmxpYzoK
ICAgICB2aXJ0dWFsIHZvaWQgc2hvd0RldlRvb2xzKCkgeyB9CiAgICAgdmlydHVhbCB2b2lkIGNs
b3NlRGV2VG9vbHMoKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgZXZhbHVhdGVJbldlYkluc3BlY3Rv
cihsb25nLCBjb25zdCBzdGQ6OnN0cmluZyYpIHsgfQorICAgIHZpcnR1YWwgdm9pZCBzZXREZXZp
Y2VTY2FsZUZhY3RvcihmbG9hdCkgeyB9CisgICAgdmlydHVhbCB2b2lkIHNldEZvY3VzKGJvb2wp
IHsgfQorICAgIHZpcnR1YWwgdm9pZCBzZXRBY2NlcHRBbGxDb29raWVzKGJvb2wpIHsgfQorICAg
IHZpcnR1YWwgc3RkOjpzdHJpbmcgcGF0aFRvTG9jYWxSZXNvdXJjZShjb25zdCBzdGQ6OnN0cmlu
ZyYgcmVzb3VyY2UpIHsgcmV0dXJuIHN0ZDo6c3RyaW5nKCk7IH0KKyAgICB2aXJ0dWFsIHZvaWQg
c2V0TG9jYWxlKGNvbnN0IHN0ZDo6c3RyaW5nJikgeyB9CiB9OwogCiB9CmRpZmYgLS1naXQgYS9U
b29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9UZXN0UnVubmVyLmNw
cCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvc3JjL1Rlc3RSdW5u
ZXIuY3BwCmluZGV4IGQ1YzhjNjA3MmU0NmU0ZWFhZDlhZGMwZWEzODlmOTljZWI4NzJhYWEuLmMw
NjJlMTcxMThmYzU0YjExNDhmYjE1OGQ3N2NlMjdlODFlMzUyYzUgMTAwNjQ0Ci0tLSBhL1Rvb2xz
L0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvc3JjL1Rlc3RSdW5uZXIuY3BwCisr
KyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvc3JjL1Rlc3RSdW5u
ZXIuY3BwCkBAIC00NywxMiArNDcsMTQgQEAKICNpbmNsdWRlICJXZWJTZWN1cml0eVBvbGljeS5o
IgogI2luY2x1ZGUgIldlYlNldHRpbmdzLmgiCiAjaW5jbHVkZSAiV2ViU3Vycm91bmRpbmdUZXh0
LmgiCisjaW5jbHVkZSAiV2ViVGFzay5oIgogI2luY2x1ZGUgIldlYlRlc3REZWxlZ2F0ZS5oIgog
I2luY2x1ZGUgIldlYlZpZXcuaCIKICNpbmNsdWRlICJXZWJXb3JrZXJJbmZvLmgiCiAjaW5jbHVk
ZSAicGxhdGZvcm0vV2ViUG9pbnQuaCIKICNpbmNsdWRlICJwbGF0Zm9ybS9XZWJTZXJpYWxpemVk
U2NyaXB0VmFsdWUuaCIKICNpbmNsdWRlICJ2OC9pbmNsdWRlL3Y4LmgiCisjaW5jbHVkZSA8d3Rm
L093bkFycmF5UHRyLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKICNpZiBP
UyhMSU5VWCkgfHwgT1MoQU5EUk9JRCkKQEAgLTc2LDYgKzc4LDI2IEBAIHB1YmxpYzoKICAgICB2
aXJ0dWFsIHZvaWQgZGVzdHJveSgpIHsgfQogfTsKIAorY2xhc3MgSW52b2tlQ2FsbGJhY2tUYXNr
IDogcHVibGljIFdlYk1ldGhvZFRhc2s8VGVzdFJ1bm5lcj4geworcHVibGljOgorICAgIEludm9r
ZUNhbGxiYWNrVGFzayhUZXN0UnVubmVyKiBvYmplY3QsIFBhc3NPd25BcnJheVB0cjxDcHBWYXJp
YW50PiBjYWxsYmFja0FyZ3VtZW50cywgdWludDMyX3QgbnVtYmVyT2ZBcmd1bWVudHMpCisgICAg
ICAgIDogV2ViTWV0aG9kVGFzazxUZXN0UnVubmVyPihvYmplY3QpCisgICAgICAgICwgbV9jYWxs
YmFja0FyZ3VtZW50cyhjYWxsYmFja0FyZ3VtZW50cykKKyAgICAgICAgLCBtX251bWJlck9mQXJn
dW1lbnRzKG51bWJlck9mQXJndW1lbnRzKQorICAgIHsKKyAgICB9CisKKyAgICB2aXJ0dWFsIHZv
aWQgcnVuSWZWYWxpZCgpCisgICAgeworICAgICAgICBDcHBWYXJpYW50IGludm9rZVJlc3VsdDsK
KyAgICAgICAgbV9jYWxsYmFja0FyZ3VtZW50c1swXS5pbnZva2VEZWZhdWx0KG1fY2FsbGJhY2tB
cmd1bWVudHMuZ2V0KCksIG1fbnVtYmVyT2ZBcmd1bWVudHMsIGludm9rZVJlc3VsdCk7CisgICAg
fQorCitwcml2YXRlOgorICAgIE93bkFycmF5UHRyPENwcFZhcmlhbnQ+IG1fY2FsbGJhY2tBcmd1
bWVudHM7CisgICAgdWludDMyX3QgbV9udW1iZXJPZkFyZ3VtZW50czsKK307CisKIH0KIAogVGVz
dFJ1bm5lcjo6VGVzdFJ1bm5lcigpCkBAIC0xNzgsNiArMjAwLDExIEBAIFRlc3RSdW5uZXI6OlRl
c3RSdW5uZXIoKQogICAgIGJpbmRNZXRob2QoInNob3dXZWJJbnNwZWN0b3IiLCAmVGVzdFJ1bm5l
cjo6c2hvd1dlYkluc3BlY3Rvcik7CiAgICAgYmluZE1ldGhvZCgiY2xvc2VXZWJJbnNwZWN0b3Ii
LCAmVGVzdFJ1bm5lcjo6Y2xvc2VXZWJJbnNwZWN0b3IpOwogICAgIGJpbmRNZXRob2QoImV2YWx1
YXRlSW5XZWJJbnNwZWN0b3IiLCAmVGVzdFJ1bm5lcjo6ZXZhbHVhdGVJbldlYkluc3BlY3Rvcik7
CisgICAgYmluZE1ldGhvZCgic2V0QWx3YXlzQWNjZXB0Q29va2llcyIsICZUZXN0UnVubmVyOjpz
ZXRBbHdheXNBY2NlcHRDb29raWVzKTsKKyAgICBiaW5kTWV0aG9kKCJzZXRXaW5kb3dJc0tleSIs
ICZUZXN0UnVubmVyOjpzZXRXaW5kb3dJc0tleSk7CisgICAgYmluZE1ldGhvZCgicGF0aFRvTG9j
YWxSZXNvdXJjZSIsICZUZXN0UnVubmVyOjpwYXRoVG9Mb2NhbFJlc291cmNlKTsKKyAgICBiaW5k
TWV0aG9kKCJzZXRCYWNraW5nU2NhbGVGYWN0b3IiLCAmVGVzdFJ1bm5lcjo6c2V0QmFja2luZ1Nj
YWxlRmFjdG9yKTsKKyAgICBiaW5kTWV0aG9kKCJzZXRQT1NJWExvY2FsZSIsICZUZXN0UnVubmVy
OjpzZXRQT1NJWExvY2FsZSk7CiAKICAgICAvLyBQcm9wZXJ0aWVzLgogICAgIGJpbmRQcm9wZXJ0
eSgid29ya2VyVGhyZWFkQ291bnQiLCAmVGVzdFJ1bm5lcjo6d29ya2VyVGhyZWFkQ291bnQpOwpA
QCAtMjQ0LDYgKzI3MSwxMCBAQCB2b2lkIFRlc3RSdW5uZXI6OnJlc2V0KCkKICAgICBXZWJGb250
UmVuZGVyaW5nOjpzZXRTdWJwaXhlbFBvc2l0aW9uaW5nKGZhbHNlKTsKICNlbmRpZgogCisgICAg
bV9kZWxlZ2F0ZS0+c2V0RGV2aWNlU2NhbGVGYWN0b3IoMSk7CisgICAgbV9kZWxlZ2F0ZS0+c2V0
QWNjZXB0QWxsQ29va2llcyhmYWxzZSk7CisgICAgbV9kZWxlZ2F0ZS0+c2V0TG9jYWxlKCIiKTsK
KwogICAgIG1fZHVtcEVkaXRpbmdDYWxsYmFja3MgPSBmYWxzZTsKICAgICBtX2R1bXBBc1RleHQg
PSBmYWxzZTsKICAgICBtX2dlbmVyYXRlUGl4ZWxSZXN1bHRzID0gdHJ1ZTsKQEAgLTI3NSw2ICsz
MDYsOCBAQCB2b2lkIFRlc3RSdW5uZXI6OnJlc2V0KCkKICAgICBtX3VzZXJTdHlsZVNoZWV0TG9j
YXRpb24gPSBXZWJVUkwoKTsKIAogICAgIG1fd2ViUGVybWlzc2lvbnMtPnJlc2V0KCk7CisKKyAg
ICBtX3Rhc2tMaXN0LnJldm9rZUFsbCgpOwogfQogCiB2b2lkIFRlc3RSdW5uZXI6OnNldFRlc3RJ
c1J1bm5pbmcoYm9vbCBydW5uaW5nKQpAQCAtMTI5NSw2ICsxMzI4LDUwIEBAIHZvaWQgVGVzdFJ1
bm5lcjo6ZXZhbHVhdGVJbldlYkluc3BlY3Rvcihjb25zdCBDcHBBcmd1bWVudExpc3QmIGFyZ3Vt
ZW50cywgQ3BwVmFyCiAgICAgbV9kZWxlZ2F0ZS0+ZXZhbHVhdGVJbldlYkluc3BlY3Rvcihhcmd1
bWVudHNbMF0udG9JbnQzMigpLCBhcmd1bWVudHNbMV0udG9TdHJpbmcoKSk7CiB9CiAKK3ZvaWQg
VGVzdFJ1bm5lcjo6c2V0QWx3YXlzQWNjZXB0Q29va2llcyhjb25zdCBDcHBBcmd1bWVudExpc3Qm
IGFyZ3VtZW50cywgQ3BwVmFyaWFudCogcmVzdWx0KQoreworICAgIGlmIChhcmd1bWVudHMuc2l6
ZSgpID4gMCkKKyAgICAgICAgbV9kZWxlZ2F0ZS0+c2V0QWNjZXB0QWxsQ29va2llcyhjcHBWYXJp
YW50VG9Cb29sKGFyZ3VtZW50c1swXSkpOworICAgIHJlc3VsdC0+c2V0TnVsbCgpOworfQorCit2
b2lkIFRlc3RSdW5uZXI6OnNldFdpbmRvd0lzS2V5KGNvbnN0IENwcEFyZ3VtZW50TGlzdCYgYXJn
dW1lbnRzLCBDcHBWYXJpYW50KiByZXN1bHQpCit7CisgICAgaWYgKGFyZ3VtZW50cy5zaXplKCkg
PiAwICYmIGFyZ3VtZW50c1swXS5pc0Jvb2woKSkKKyAgICAgICAgbV9kZWxlZ2F0ZS0+c2V0Rm9j
dXMoYXJndW1lbnRzWzBdLnZhbHVlLmJvb2xWYWx1ZSk7CisgICAgcmVzdWx0LT5zZXROdWxsKCk7
Cit9CisKK3ZvaWQgVGVzdFJ1bm5lcjo6cGF0aFRvTG9jYWxSZXNvdXJjZShjb25zdCBDcHBBcmd1
bWVudExpc3QmIGFyZ3VtZW50cywgQ3BwVmFyaWFudCogcmVzdWx0KQoreworICAgIHJlc3VsdC0+
c2V0TnVsbCgpOworICAgIGlmIChhcmd1bWVudHMuc2l6ZSgpIDw9IDAgfHwgIWFyZ3VtZW50c1sw
XS5pc1N0cmluZygpKQorICAgICAgICByZXR1cm47CisKKyAgICByZXN1bHQtPnNldChtX2RlbGVn
YXRlLT5wYXRoVG9Mb2NhbFJlc291cmNlKGFyZ3VtZW50c1swXS50b1N0cmluZygpKSk7Cit9CisK
K3ZvaWQgVGVzdFJ1bm5lcjo6c2V0QmFja2luZ1NjYWxlRmFjdG9yKGNvbnN0IENwcEFyZ3VtZW50
TGlzdCYgYXJndW1lbnRzLCBDcHBWYXJpYW50KiByZXN1bHQpCit7CisgICAgaWYgKGFyZ3VtZW50
cy5zaXplKCkgPCAyIHx8ICFhcmd1bWVudHNbMF0uaXNOdW1iZXIoKSB8fCAhYXJndW1lbnRzWzFd
LmlzT2JqZWN0KCkpCisgICAgICAgIHJldHVybjsKKworICAgIGZsb2F0IHZhbHVlID0gYXJndW1l
bnRzWzBdLnZhbHVlLmRvdWJsZVZhbHVlOworICAgIG1fZGVsZWdhdGUtPnNldERldmljZVNjYWxl
RmFjdG9yKHZhbHVlKTsKKworICAgIE93bkFycmF5UHRyPENwcFZhcmlhbnQ+IGNhbGxiYWNrQXJn
dW1lbnRzID0gYWRvcHRBcnJheVB0cihuZXcgQ3BwVmFyaWFudFsxXSk7CisgICAgY2FsbGJhY2tB
cmd1bWVudHNbMF0uc2V0KGFyZ3VtZW50c1sxXSk7CisgICAgcmVzdWx0LT5zZXROdWxsKCk7Cisg
ICAgbV9kZWxlZ2F0ZS0+cG9zdFRhc2sobmV3IEludm9rZUNhbGxiYWNrVGFzayh0aGlzLCBjYWxs
YmFja0FyZ3VtZW50cy5yZWxlYXNlKCksIDEpKTsKK30KKwordm9pZCBUZXN0UnVubmVyOjpzZXRQ
T1NJWExvY2FsZShjb25zdCBDcHBBcmd1bWVudExpc3QmIGFyZ3VtZW50cywgQ3BwVmFyaWFudCog
cmVzdWx0KQoreworICAgIHJlc3VsdC0+c2V0TnVsbCgpOworICAgIGlmIChhcmd1bWVudHMuc2l6
ZSgpID09IDEgJiYgYXJndW1lbnRzWzBdLmlzU3RyaW5nKCkpCisgICAgICAgIG1fZGVsZWdhdGUt
PnNldExvY2FsZShhcmd1bWVudHNbMF0udG9TdHJpbmcoKSk7Cit9CisKIHZvaWQgVGVzdFJ1bm5l
cjo6ZHVtcEVkaXRpbmdDYWxsYmFja3MoY29uc3QgQ3BwQXJndW1lbnRMaXN0JiwgQ3BwVmFyaWFu
dCogcmVzdWx0KQogewogICAgIG1fZHVtcEVkaXRpbmdDYWxsYmFja3MgPSB0cnVlOwpkaWZmIC0t
Z2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvVGVzdFJ1
bm5lci5oIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvVGVz
dFJ1bm5lci5oCmluZGV4IDU4YmYyMmFhOGZkZGU0MGY3YzBjNzc1N2QzMTY0MzU2ZmU5NTNhYmEu
LjFhYWIzYWExMDE1OTk4NWFmZjRjOTViYWQxZWMzMDdmNTMwNWM2MzggMTAwNjQ0Ci0tLSBhL1Rv
b2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvc3JjL1Rlc3RSdW5uZXIuaAor
KysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9UZXN0UnVu
bmVyLmgKQEAgLTM0LDYgKzM0LDcgQEAKIAogI2luY2x1ZGUgIkNwcEJvdW5kQ2xhc3MuaCIKICNp
bmNsdWRlICJXZWJEZWxpdmVyZWRJbnRlbnRDbGllbnQuaCIKKyNpbmNsdWRlICJXZWJUYXNrLmgi
CiAjaW5jbHVkZSAiV2ViVGVzdFJ1bm5lci5oIgogI2luY2x1ZGUgInBsYXRmb3JtL1dlYkFycmF5
QnVmZmVyVmlldy5oIgogI2luY2x1ZGUgInBsYXRmb3JtL1dlYlVSTC5oIgpAQCAtNTksNiArNjAs
OCBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHJlc2V0KCk7CiAKKyAgICBXZWJUYXNrTGlzdCogdGFz
a0xpc3QoKSB7IHJldHVybiAmbV90YXNrTGlzdDsgfQorCiAgICAgLy8gV2ViVGVzdFJ1bm5lciBp
bXBsZW1lbnRhdGlvbi4KICAgICB2aXJ0dWFsIHZvaWQgc2V0VGVzdElzUnVubmluZyhib29sKSBP
VkVSUklERTsKICAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkRHVtcEVkaXRpbmdDYWxsYmFja3MoKSBj
b25zdCBPVkVSUklERTsKQEAgLTMzMSw2ICszMzQsMjIgQEAgcHJpdmF0ZToKICAgICAvLyBBbGxv
d3MgbGF5b3V0IHRlc3RzIHRvIGV4ZWMgc2NyaXB0cyBhdCBXZWJJbnNwZWN0b3Igc2lkZS4KICAg
ICB2b2lkIGV2YWx1YXRlSW5XZWJJbnNwZWN0b3IoY29uc3QgQ3BwQXJndW1lbnRMaXN0JiwgQ3Bw
VmFyaWFudCopOwogCisgICAgLy8gQ2hhbmdlcyB0aGUgY29va2llIHBvbGljeSBmcm9tIHRoZSBk
ZWZhdWx0IHRvIGFsbG93IGFsbCBjb29raWVzLgorICAgIHZvaWQgc2V0QWx3YXlzQWNjZXB0Q29v
a2llcyhjb25zdCBDcHBBcmd1bWVudExpc3QmLCBDcHBWYXJpYW50Kik7CisKKyAgICAvLyBHaXZl
cyBmb2N1cyB0byB0aGUgd2luZG93LgorICAgIHZvaWQgc2V0V2luZG93SXNLZXkoY29uc3QgQ3Bw
QXJndW1lbnRMaXN0JiwgQ3BwVmFyaWFudCopOworCisgICAgLy8gQ29udmVydHMgYSBVUkwgc3Rh
cnRpbmcgd2l0aCBmaWxlOi8vL3RtcC8gdG8gdGhlIGxvY2FsIG1hcHBpbmcuCisgICAgdm9pZCBw
YXRoVG9Mb2NhbFJlc291cmNlKGNvbnN0IENwcEFyZ3VtZW50TGlzdCYsIENwcFZhcmlhbnQqKTsK
KworICAgIC8vIFVzZWQgdG8gc2V0IHRoZSBkZXZpY2Ugc2NhbGUgZmFjdG9yLgorICAgIHZvaWQg
c2V0QmFja2luZ1NjYWxlRmFjdG9yKGNvbnN0IENwcEFyZ3VtZW50TGlzdCYsIENwcFZhcmlhbnQq
KTsKKworICAgIC8vIENhbGxzIHNldGxvY2FsZShMQ19BTEwsIC4uLikgZm9yIGEgc3BlY2lmaWVk
IGxvY2FsZS4KKyAgICAvLyBSZXNldHMgYmV0d2VlbiB0ZXN0cy4KKyAgICB2b2lkIHNldFBPU0lY
TG9jYWxlKGNvbnN0IENwcEFyZ3VtZW50TGlzdCYsIENwcFZhcmlhbnQqKTsKKwogICAgIC8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLwogICAgIC8vIFByb3BlcnRpZXMKICAgICB2b2lkIHdvcmtlclRocmVhZENv
dW50KENwcFZhcmlhbnQqKTsKQEAgLTQ1Nyw2ICs0NzYsOSBAQCBwcml2YXRlOgogICAgIC8vIFdB
ViBhdWRpbyBkYXRhIGlzIHN0b3JlZCBoZXJlLgogICAgIFdlYktpdDo6V2ViQXJyYXlCdWZmZXJW
aWV3IG1fYXVkaW9EYXRhOwogCisgICAgLy8gVXNlZCBmb3IgdGVzdCB0aW1lb3V0cy4KKyAgICBX
ZWJUYXNrTGlzdCBtX3Rhc2tMaXN0OworCiAgICAgV2ViVGVzdERlbGVnYXRlKiBtX2RlbGVnYXRl
OwogICAgIFdlYktpdDo6V2ViVmlldyogbV93ZWJWaWV3OwogCmRpZmYgLS1naXQgYS9Ub29scy9E
dW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9XZWJWaWV3SG9zdC5jcHAgYi9Ub29scy9EdW1wUmVuZGVy
VHJlZS9jaHJvbWl1bS9XZWJWaWV3SG9zdC5jcHAKaW5kZXggZmJlY2Q0MzVjNzBjODg1ZTcwOTky
MDdlYTRiOWI1N2ViZmQyNjM1ZC4uOWE2ZjkzZWQ2MDg2Y2UzNWQ4YmZjOGJlYzAwYTMyODBjYWRh
NDM1ZiAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vV2ViVmlld0hv
c3QuY3BwCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1dlYlZpZXdIb3N0LmNw
cApAQCAtNzAsNiArNzAsOCBAQAogI2luY2x1ZGUgInNraWEvZXh0L3BsYXRmb3JtX2NhbnZhcy5o
IgogI2luY2x1ZGUgIndlYmtpdC9zdXBwb3J0L3Rlc3RfbWVkaWFfc3RyZWFtX2NsaWVudC5oIgog
I2luY2x1ZGUgIndlYmtpdC9zdXBwb3J0L3dlYmtpdF9zdXBwb3J0LmgiCisjaW5jbHVkZSA8Y2xv
Y2FsZT4KKyNpbmNsdWRlIDxsb2NhbGU+CiAjaW5jbHVkZSA8cHVibGljL1dlYkNTdHJpbmcuaD4K
ICNpbmNsdWRlIDxwdWJsaWMvV2ViQ29tcG9zaXRvck91dHB1dFN1cmZhY2UuaD4KICNpbmNsdWRl
IDxwdWJsaWMvV2ViQ29tcG9zaXRvclN1cHBvcnQuaD4KQEAgLTEwNjksNiArMTA3MSw2MCBAQCB2
b2lkIFdlYlZpZXdIb3N0OjpldmFsdWF0ZUluV2ViSW5zcGVjdG9yKGxvbmcgY2FsbElELCBjb25z
dCBzdGQ6OnN0cmluZyYgc2NyaXB0KQogICAgIG1fc2hlbGwtPmRydERldlRvb2xzQWdlbnQoKS0+
ZXZhbHVhdGVJbldlYkluc3BlY3RvcihjYWxsSUQsIHNjcmlwdCk7CiB9CiAKK3ZvaWQgV2ViVmll
d0hvc3Q6OnNldERldmljZVNjYWxlRmFjdG9yKGZsb2F0IGRldmljZVNjYWxlRmFjdG9yKQorewor
ICAgIHdlYlZpZXcoKS0+c2V0RGV2aWNlU2NhbGVGYWN0b3IoZGV2aWNlU2NhbGVGYWN0b3IpOwor
ICAgIGRpc2NhcmRCYWNraW5nU3RvcmUoKTsKK30KKwordm9pZCBXZWJWaWV3SG9zdDo6c2V0Rm9j
dXMoYm9vbCBmb2N1c2VkKQoreworICAgIG1fc2hlbGwtPnNldEZvY3VzKG1fc2hlbGwtPndlYlZp
ZXcoKSwgZm9jdXNlZCk7Cit9CisKK3ZvaWQgV2ViVmlld0hvc3Q6OnNldEFjY2VwdEFsbENvb2tp
ZXMoYm9vbCBhY2NlcHRDb29raWVzKQoreworICAgIHdlYmtpdF9zdXBwb3J0OjpTZXRBY2NlcHRB
bGxDb29raWVzKGFjY2VwdENvb2tpZXMpOworfQorCitzdHJpbmcgV2ViVmlld0hvc3Q6OnBhdGhU
b0xvY2FsUmVzb3VyY2UoY29uc3Qgc3RyaW5nJiB1cmwpCit7CisjaWYgT1MoV0lORE9XUykKKyAg
ICBpZiAoIXVybC5maW5kKCIvdG1wLyIpKSB7CisgICAgICAgIC8vIFdlIHdhbnQgYSB0ZW1wIGZp
bGUuCisgICAgICAgIGNvbnN0IHVuc2lnbmVkIHRlbXBQcmVmaXhMZW5ndGggPSA1OworICAgICAg
ICBzaXplX3QgYnVmZmVyU2l6ZSA9IE1BWF9QQVRIOworICAgICAgICBPd25BcnJheVB0cjxXQ0hB
Uj4gdGVtcFBhdGggPSBhZG9wdEFycmF5UHRyKG5ldyBXQ0hBUltidWZmZXJTaXplXSk7CisgICAg
ICAgIERXT1JEIHRlbXBMZW5ndGggPSA6OkdldFRlbXBQYXRoVyhidWZmZXJTaXplLCB0ZW1wUGF0
aC5nZXQoKSk7CisgICAgICAgIGlmICh0ZW1wTGVuZ3RoICsgdXJsLmxlbmd0aCgpIC0gdGVtcFBy
ZWZpeExlbmd0aCArIDEgPiBidWZmZXJTaXplKSB7CisgICAgICAgICAgICBidWZmZXJTaXplID0g
dGVtcExlbmd0aCArIHVybC5sZW5ndGgoKSAtIHRlbXBQcmVmaXhMZW5ndGggKyAxOworICAgICAg
ICAgICAgdGVtcFBhdGggPSBhZG9wdEFycmF5UHRyKG5ldyBXQ0hBUltidWZmZXJTaXplXSk7Cisg
ICAgICAgICAgICB0ZW1wTGVuZ3RoID0gR2V0VGVtcFBhdGhXKGJ1ZmZlclNpemUsIHRlbXBQYXRo
LmdldCgpKTsKKyAgICAgICAgICAgIEFTU0VSVCh0ZW1wTGVuZ3RoIDwgYnVmZmVyU2l6ZSk7Cisg
ICAgICAgIH0KKyAgICAgICAgc3RyaW5nIHJlc3VsdFBhdGgoV2ViU3RyaW5nKHRlbXBQYXRoLmdl
dCgpLCB0ZW1wTGVuZ3RoKS51dGY4KCkpOworICAgICAgICByZXN1bHRQYXRoLmFwcGVuZCh1cmwu
c3Vic3RyKHRlbXBQcmVmaXhMZW5ndGgpKTsKKyAgICAgICAgcmV0dXJuIHJlc3VsdFBhdGg7Cisg
ICAgfQorI2VuZGlmCisKKyAgICAvLyBTb21lIGxheW91dCB0ZXN0cyB1c2UgZmlsZTovLy8vIHdo
aWNoIHdlIHJlc29sdmUgYXMgYSBVTkMgcGF0aC4gTm9ybWFsaXplCisgICAgLy8gdGhlbSB0byBq
dXN0IGZpbGU6Ly8vLgorICAgIHN0cmluZyBsb3dlclVybCA9IHVybDsKKyAgICBzdHJpbmcgcmVz
dWx0ID0gdXJsOworICAgIHRyYW5zZm9ybShsb3dlclVybC5iZWdpbigpLCBsb3dlclVybC5lbmQo
KSwgbG93ZXJVcmwuYmVnaW4oKSwgOjp0b2xvd2VyKTsKKyAgICB3aGlsZSAoIWxvd2VyVXJsLmZp
bmQoImZpbGU6Ly8vLyIpKSB7CisgICAgICAgIHJlc3VsdCA9IHJlc3VsdC5zdWJzdHIoMCwgOCkg
KyByZXN1bHQuc3Vic3RyKDkpOworICAgICAgICBsb3dlclVybCA9IGxvd2VyVXJsLnN1YnN0cigw
LCA4KSArIGxvd2VyVXJsLnN1YnN0cig5KTsKKyAgICB9CisgICAgcmV0dXJuIHdlYmtpdF9zdXBw
b3J0OjpSZXdyaXRlTGF5b3V0VGVzdHNVUkwocmVzdWx0KS5zcGVjKCk7Cit9CisKK3ZvaWQgV2Vi
Vmlld0hvc3Q6OnNldExvY2FsZShjb25zdCBzdGQ6OnN0cmluZyYgbG9jYWxlKQoreworICAgIHNl
dGxvY2FsZShMQ19BTEwsIGxvY2FsZS5jX3N0cigpKTsKK30KKwogLy8gUHVibGljIGZ1bmN0aW9u
cyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLQogCiBXZWJWaWV3SG9zdDo6V2ViVmlld0hvc3QoVGVzdFNoZWxsKiBzaGVsbCkKQEAgLTEz
OTIsMTIgKzE0NDgsNiBAQCB2b2lkIFdlYlZpZXdIb3N0OjpzZXRQZW5kaW5nRXh0cmFEYXRhKFBh
c3NPd25QdHI8VGVzdFNoZWxsRXh0cmFEYXRhPiBleHRyYURhdGEpCiAgICAgbV9wZW5kaW5nRXh0
cmFEYXRhID0gZXh0cmFEYXRhOwogfQogCi12b2lkIFdlYlZpZXdIb3N0OjpzZXREZXZpY2VTY2Fs
ZUZhY3RvcihmbG9hdCBkZXZpY2VTY2FsZUZhY3RvcikKLXsKLSAgICB3ZWJWaWV3KCktPnNldERl
dmljZVNjYWxlRmFjdG9yKGRldmljZVNjYWxlRmFjdG9yKTsKLSAgICBkaXNjYXJkQmFja2luZ1N0
b3JlKCk7Ci19Ci0KIHZvaWQgV2ViVmlld0hvc3Q6OnNldFBhZ2VUaXRsZShjb25zdCBXZWJTdHJp
bmcmKQogewogICAgIC8vIE5vdGhpbmcgdG8gZG8gaW4gbGF5b3V0IHRlc3QuCmRpZmYgLS1naXQg
YS9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9XZWJWaWV3SG9zdC5oIGIvVG9vbHMvRHVt
cFJlbmRlclRyZWUvY2hyb21pdW0vV2ViVmlld0hvc3QuaAppbmRleCA5MDQwOTVjM2Y5ODhlNzNh
MDBhOGYyMmM0MmQwYmVjYTM1MWJkMGFkLi42MWZjMWZmZDkwMzYyMTY2NTg1ZWZkYzZkMGNlYWRj
NTIzNWJjMmVmIDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9XZWJW
aWV3SG9zdC5oCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1dlYlZpZXdIb3N0
LmgKQEAgLTk2LDcgKzk2LDYgQEAgY2xhc3MgV2ViVmlld0hvc3QgOiBwdWJsaWMgV2ViS2l0OjpX
ZWJWaWV3Q2xpZW50LCBwdWJsaWMgV2ViS2l0OjpXZWJGcmFtZUNsaWVudCwKICAgICB2b2lkIHNl
dEJsb2NrUmVkaXJlY3RzKGJvb2wgYmxvY2spIHsgbV9ibG9ja3NSZWRpcmVjdHMgPSBibG9jazsg
fQogICAgIHZvaWQgc2V0UmVxdWVzdFJldHVybk51bGwoYm9vbCByZXR1cm5OdWxsKSB7IG1fcmVx
dWVzdFJldHVybk51bGwgPSByZXR1cm5OdWxsOyB9CiAgICAgdm9pZCBzZXRQZW5kaW5nRXh0cmFE
YXRhKFBhc3NPd25QdHI8VGVzdFNoZWxsRXh0cmFEYXRhPik7Ci0gICAgdm9pZCBzZXREZXZpY2VT
Y2FsZUZhY3RvcihmbG9hdCk7CiAKICAgICB2b2lkIHBhaW50UmVjdChjb25zdCBXZWJLaXQ6Oldl
YlJlY3QmKTsKICAgICB2b2lkIHBhaW50SW52YWxpZGF0ZWRSZWdpb24oKTsKQEAgLTE1NCw2ICsx
NTMsMTEgQEAgY2xhc3MgV2ViVmlld0hvc3QgOiBwdWJsaWMgV2ViS2l0OjpXZWJWaWV3Q2xpZW50
LCBwdWJsaWMgV2ViS2l0OjpXZWJGcmFtZUNsaWVudCwKICAgICB2aXJ0dWFsIHZvaWQgc2hvd0Rl
dlRvb2xzKCkgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIGNsb3NlRGV2VG9vbHMoKSBPVkVS
UklERTsKICAgICB2aXJ0dWFsIHZvaWQgZXZhbHVhdGVJbldlYkluc3BlY3Rvcihsb25nLCBjb25z
dCBzdGQ6OnN0cmluZyYpIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBzZXREZXZpY2VTY2Fs
ZUZhY3RvcihmbG9hdCkgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIHNldEZvY3VzKGJvb2wp
IE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBzZXRBY2NlcHRBbGxDb29raWVzKGJvb2wpIE9W
RVJSSURFOworICAgIHZpcnR1YWwgc3RkOjpzdHJpbmcgcGF0aFRvTG9jYWxSZXNvdXJjZShjb25z
dCBzdGQ6OnN0cmluZyYgdXJsKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0TG9jYWxl
KGNvbnN0IHN0ZDo6c3RyaW5nJikgT1ZFUlJJREU7CiAKICAgICAvLyBOYXZpZ2F0aW9uSG9zdAog
ICAgIHZpcnR1YWwgYm9vbCBuYXZpZ2F0ZShjb25zdCBUZXN0TmF2aWdhdGlvbkVudHJ5JiwgYm9v
bCByZWxvYWQpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>182769</attachid>
            <date>2013-01-15 07:36:07 -0800</date>
            <delta_ts>2013-01-15 07:41:20 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-106904-20130115163306.patch</filename>
            <type>text/plain</type>
            <size>25376</size>
            <attacher>jochen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM5NzMyCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggZGIwNjg4Y2Q5MTIzMmIyOGIxNmZjMGY0NzU5YjRmMGZi
MmZiNDgwZC4uY2Q2NzU1ZGE2OWVkY2JkODdhMTMxNmU2MTNmMTA5NGM5MWExZmU5ZCAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQz
IEBACisyMDEzLTAxLTE1ICBKb2NoZW4gRWlzaW5nZXIgIDxqb2NoZW5AY2hyb21pdW0ub3JnPgor
CisgICAgICAgIFtjaHJvbWl1bV0gcm91dGUgbW9yZSB3ZWJraXRfc3VwcG9ydCBhbmQgd2Vidmll
d2hvc3QgY2FsbGJhY2tzIHRocm91Z2ggV2ViVGVzdERlbGVnYXRlCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDY5MDQKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2Nocm9taXVt
L0RSVFRlc3RSdW5uZXIuY3BwOgorICAgICAgICAoRFJUVGVzdFJ1bm5lcjo6RFJUVGVzdFJ1bm5l
cik6CisgICAgICAgIChEUlRUZXN0UnVubmVyOjpub3RpZnlEb25lKToKKyAgICAgICAgKERSVFRl
c3RSdW5uZXI6OnJlc2V0KToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9EUlRU
ZXN0UnVubmVyLmg6CisgICAgICAgIChEUlRUZXN0UnVubmVyKToKKyAgICAgICAgKiBEdW1wUmVu
ZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3B1YmxpYy9XZWJUZXN0RGVsZWdhdGUuaDoKKyAg
ICAgICAgKFdlYlRlc3RSdW5uZXI6OldlYlRlc3REZWxlZ2F0ZTo6c2V0RGV2aWNlU2NhbGVGYWN0
b3IpOgorICAgICAgICAoV2ViVGVzdFJ1bm5lcjo6V2ViVGVzdERlbGVnYXRlOjpzZXRGb2N1cyk6
CisgICAgICAgIChXZWJUZXN0UnVubmVyOjpXZWJUZXN0RGVsZWdhdGU6OnNldEFjY2VwdEFsbENv
b2tpZXMpOgorICAgICAgICAoV2ViVGVzdFJ1bm5lcjo6V2ViVGVzdERlbGVnYXRlOjpwYXRoVG9M
b2NhbFJlc291cmNlKToKKyAgICAgICAgKFdlYlRlc3RSdW5uZXI6OldlYlRlc3REZWxlZ2F0ZTo6
c2V0TG9jYWxlKToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVy
L3NyYy9UZXN0UnVubmVyLmNwcDoKKyAgICAgICAgKFdlYlRlc3RSdW5uZXI6OlRlc3RSdW5uZXI6
OlRlc3RSdW5uZXIpOgorICAgICAgICAoV2ViVGVzdFJ1bm5lcjo6VGVzdFJ1bm5lcjo6cmVzZXQp
OgorICAgICAgICAoV2ViVGVzdFJ1bm5lcjo6VGVzdFJ1bm5lcjo6c2V0QWx3YXlzQWNjZXB0Q29v
a2llcyk6CisgICAgICAgIChXZWJUZXN0UnVubmVyKToKKyAgICAgICAgKFdlYlRlc3RSdW5uZXI6
OlRlc3RSdW5uZXI6OnNldFdpbmRvd0lzS2V5KToKKyAgICAgICAgKFdlYlRlc3RSdW5uZXI6OlRl
c3RSdW5uZXI6OnBhdGhUb0xvY2FsUmVzb3VyY2UpOgorICAgICAgICAoV2ViVGVzdFJ1bm5lcjo6
VGVzdFJ1bm5lcjo6c2V0QmFja2luZ1NjYWxlRmFjdG9yKToKKyAgICAgICAgKFdlYlRlc3RSdW5u
ZXI6OlRlc3RSdW5uZXI6OnNldFBPU0lYTG9jYWxlKToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJl
ZS9jaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9UZXN0UnVubmVyLmg6CisgICAgICAgIChXZWJUZXN0
UnVubmVyOjpUZXN0UnVubmVyOjp0YXNrTGlzdCk6CisgICAgICAgIChUZXN0UnVubmVyKToKKyAg
ICAgICAgKiBEdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9XZWJWaWV3SG9zdC5jcHA6CisgICAgICAg
IChXZWJWaWV3SG9zdDo6c2V0RGV2aWNlU2NhbGVGYWN0b3IpOgorICAgICAgICAoV2ViVmlld0hv
c3Q6OnNldEZvY3VzKToKKyAgICAgICAgKFdlYlZpZXdIb3N0OjpzZXRBY2NlcHRBbGxDb29raWVz
KToKKyAgICAgICAgKFdlYlZpZXdIb3N0OjpwYXRoVG9Mb2NhbFJlc291cmNlKToKKyAgICAgICAg
KFdlYlZpZXdIb3N0OjpzZXRMb2NhbGUpOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2Nocm9t
aXVtL1dlYlZpZXdIb3N0Lmg6CisgICAgICAgIChXZWJWaWV3SG9zdCk6CisKIDIwMTMtMDEtMTUg
IEFuZHJhcyBCZWNzaSAgPGFuZHJhcy5iZWNzaUBkaWdpYS5jb20+CiAKICAgICAgICAgW1F0XSBG
aXggSW1hZ2VEaWZmJ3MgaW1hZ2UgZm9ybWF0IGNvbnZlcnNpb24KZGlmZiAtLWdpdCBhL1Rvb2xz
L0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL0RSVFRlc3RSdW5uZXIuY3BwIGIvVG9vbHMvRHVtcFJl
bmRlclRyZWUvY2hyb21pdW0vRFJUVGVzdFJ1bm5lci5jcHAKaW5kZXggM2YwNjQ2OWEyZDdiYWUy
NGNhOGM5OTRkNzE1MWM0YzQzMjFlNGJkNi4uNTFhZWRmOGRjNWZhY2Q5MzBmYzE2YjI4MzMzMmRl
MGMxYzQ0ZjdkMSAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vRFJU
VGVzdFJ1bm5lci5jcHAKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vRFJUVGVz
dFJ1bm5lci5jcHAKQEAgLTY4LDcgKzY4LDYgQEAKICNpbmNsdWRlICJ3ZWJraXQvc3VwcG9ydC93
ZWJraXRfc3VwcG9ydC5oIgogI2luY2x1ZGUgPGFsZ29yaXRobT4KICNpbmNsdWRlIDxjY3R5cGU+
Ci0jaW5jbHVkZSA8Y2xvY2FsZT4KICNpbmNsdWRlIDxjc3RkbGliPgogI2luY2x1ZGUgPGxpbWl0
cz4KICNpbmNsdWRlIDxzc3RyZWFtPgpAQCAtMTE3LDcgKzExNiw2IEBAIERSVFRlc3RSdW5uZXI6
OkRSVFRlc3RSdW5uZXIoVGVzdFNoZWxsKiBzaGVsbCkKICNlbmRpZgogICAgIGJpbmRNZXRob2Qo
Im5vdGlmeURvbmUiLCAmRFJUVGVzdFJ1bm5lcjo6bm90aWZ5RG9uZSk7CiAgICAgYmluZE1ldGhv
ZCgibnVtYmVyT2ZQZW5kaW5nR2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdHMiLCAmRFJUVGVz
dFJ1bm5lcjo6IG51bWJlck9mUGVuZGluZ0dlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3RzKTsK
LSAgICBiaW5kTWV0aG9kKCJwYXRoVG9Mb2NhbFJlc291cmNlIiwgJkRSVFRlc3RSdW5uZXI6OnBh
dGhUb0xvY2FsUmVzb3VyY2UpOwogICAgIGJpbmRNZXRob2QoInF1ZXVlQmFja05hdmlnYXRpb24i
LCAmRFJUVGVzdFJ1bm5lcjo6cXVldWVCYWNrTmF2aWdhdGlvbik7CiAgICAgYmluZE1ldGhvZCgi
cXVldWVGb3J3YXJkTmF2aWdhdGlvbiIsICZEUlRUZXN0UnVubmVyOjpxdWV1ZUZvcndhcmROYXZp
Z2F0aW9uKTsKICAgICBiaW5kTWV0aG9kKCJxdWV1ZUxvYWRpbmdTY3JpcHQiLCAmRFJUVGVzdFJ1
bm5lcjo6cXVldWVMb2FkaW5nU2NyaXB0KTsKQEAgLTEyNSw3ICsxMjMsNiBAQCBEUlRUZXN0UnVu
bmVyOjpEUlRUZXN0UnVubmVyKFRlc3RTaGVsbCogc2hlbGwpCiAgICAgYmluZE1ldGhvZCgicXVl
dWVMb2FkSFRNTFN0cmluZyIsICZEUlRUZXN0UnVubmVyOjpxdWV1ZUxvYWRIVE1MU3RyaW5nKTsK
ICAgICBiaW5kTWV0aG9kKCJxdWV1ZU5vbkxvYWRpbmdTY3JpcHQiLCAmRFJUVGVzdFJ1bm5lcjo6
cXVldWVOb25Mb2FkaW5nU2NyaXB0KTsKICAgICBiaW5kTWV0aG9kKCJxdWV1ZVJlbG9hZCIsICZE
UlRUZXN0UnVubmVyOjpxdWV1ZVJlbG9hZCk7Ci0gICAgYmluZE1ldGhvZCgic2V0QWx3YXlzQWNj
ZXB0Q29va2llcyIsICZEUlRUZXN0UnVubmVyOjpzZXRBbHdheXNBY2NlcHRDb29raWVzKTsKICAg
ICBiaW5kTWV0aG9kKCJzZXRDbG9zZVJlbWFpbmluZ1dpbmRvd3NXaGVuQ29tcGxldGUiLCAmRFJU
VGVzdFJ1bm5lcjo6c2V0Q2xvc2VSZW1haW5pbmdXaW5kb3dzV2hlbkNvbXBsZXRlKTsKICAgICBi
aW5kTWV0aG9kKCJzZXRDdXN0b21Qb2xpY3lEZWxlZ2F0ZSIsICZEUlRUZXN0UnVubmVyOjpzZXRD
dXN0b21Qb2xpY3lEZWxlZ2F0ZSk7CiAgICAgYmluZE1ldGhvZCgic2V0RGF0YWJhc2VRdW90YSIs
ICZEUlRUZXN0UnVubmVyOjpzZXREYXRhYmFzZVF1b3RhKTsKQEAgLTEzNywxMiArMTM0LDkgQEAg
RFJUVGVzdFJ1bm5lcjo6RFJUVGVzdFJ1bm5lcihUZXN0U2hlbGwqIHNoZWxsKQogICAgIGJpbmRN
ZXRob2QoInNldFBvaW50ZXJMb2NrV2lsbFJlc3BvbmRBc3luY2hyb25vdXNseSIsICZEUlRUZXN0
UnVubmVyOjpzZXRQb2ludGVyTG9ja1dpbGxSZXNwb25kQXN5bmNocm9ub3VzbHkpOwogICAgIGJp
bmRNZXRob2QoInNldFBvaW50ZXJMb2NrV2lsbEZhaWxTeW5jaHJvbm91c2x5IiwgJkRSVFRlc3RS
dW5uZXI6OnNldFBvaW50ZXJMb2NrV2lsbEZhaWxTeW5jaHJvbm91c2x5KTsKICNlbmRpZgotICAg
IGJpbmRNZXRob2QoInNldFBPU0lYTG9jYWxlIiwgJkRSVFRlc3RSdW5uZXI6OnNldFBPU0lYTG9j
YWxlKTsKLSAgICBiaW5kTWV0aG9kKCJzZXRCYWNraW5nU2NhbGVGYWN0b3IiLCAmRFJUVGVzdFJ1
bm5lcjo6c2V0QmFja2luZ1NjYWxlRmFjdG9yKTsKICAgICBiaW5kTWV0aG9kKCJzZXRXaWxsU2Vu
ZFJlcXVlc3RDbGVhckhlYWRlciIsICZEUlRUZXN0UnVubmVyOjpzZXRXaWxsU2VuZFJlcXVlc3RD
bGVhckhlYWRlcik7CiAgICAgYmluZE1ldGhvZCgic2V0V2lsbFNlbmRSZXF1ZXN0UmV0dXJuc051
bGwiLCAmRFJUVGVzdFJ1bm5lcjo6c2V0V2lsbFNlbmRSZXF1ZXN0UmV0dXJuc051bGwpOwogICAg
IGJpbmRNZXRob2QoInNldFdpbGxTZW5kUmVxdWVzdFJldHVybnNOdWxsT25SZWRpcmVjdCIsICZE
UlRUZXN0UnVubmVyOjpzZXRXaWxsU2VuZFJlcXVlc3RSZXR1cm5zTnVsbE9uUmVkaXJlY3QpOwot
ICAgIGJpbmRNZXRob2QoInNldFdpbmRvd0lzS2V5IiwgJkRSVFRlc3RSdW5uZXI6OnNldFdpbmRv
d0lzS2V5KTsKICNpZiBFTkFCTEUoTk9USUZJQ0FUSU9OUykKICAgICBiaW5kTWV0aG9kKCJzaW11
bGF0ZUxlZ2FjeVdlYk5vdGlmaWNhdGlvbkNsaWNrIiwgJkRSVFRlc3RSdW5uZXI6OnNpbXVsYXRl
TGVnYWN5V2ViTm90aWZpY2F0aW9uQ2xpY2spOwogI2VuZGlmCkBAIC0yMjEsNyArMjE1LDcgQEAg
dm9pZCBEUlRUZXN0UnVubmVyOjp3YWl0VW50aWxEb25lKGNvbnN0IENwcEFyZ3VtZW50TGlzdCYs
IENwcFZhcmlhbnQqIHJlc3VsdCkKIHZvaWQgRFJUVGVzdFJ1bm5lcjo6bm90aWZ5RG9uZShjb25z
dCBDcHBBcmd1bWVudExpc3QmLCBDcHBWYXJpYW50KiByZXN1bHQpCiB7CiAgICAgLy8gVGVzdCBk
aWRuJ3QgdGltZW91dC4gS2lsbCB0aGUgdGltZW91dCB0aW1lci4KLSAgICBtX3Rhc2tMaXN0LnJl
dm9rZUFsbCgpOworICAgIHRhc2tMaXN0KCktPnJldm9rZUFsbCgpOwogCiAgICAgY29tcGxldGVO
b3RpZnlEb25lKGZhbHNlKTsKICAgICByZXN1bHQtPnNldE51bGwoKTsKQEAgLTM5MiwyNiArMzg2
LDE5IEBAIHZvaWQgRFJUVGVzdFJ1bm5lcjo6cXVldWVMb2FkSFRNTFN0cmluZyhjb25zdCBDcHBB
cmd1bWVudExpc3QmIGFyZ3VtZW50cywgQ3BwVmFyCiB2b2lkIERSVFRlc3RSdW5uZXI6OnJlc2V0
KCkKIHsKICAgICBUZXN0UnVubmVyOjpyZXNldCgpOwotICAgIGlmIChtX3NoZWxsKQotICAgICAg
ICBtX3NoZWxsLT53ZWJWaWV3SG9zdCgpLT5zZXREZXZpY2VTY2FsZUZhY3RvcigxKTsKICAgICBt
X3dhaXRVbnRpbERvbmUgPSBmYWxzZTsKICAgICBtX3dlYkhpc3RvcnlJdGVtQ291bnQuc2V0KDAp
OwogICAgIG1fdGl0bGVUZXh0RGlyZWN0aW9uLnNldCgibHRyIik7CiAgICAgbV9pbnRlcmNlcHRQ
b3N0TWVzc2FnZS5zZXQoZmFsc2UpOwogCi0gICAgd2Via2l0X3N1cHBvcnQ6OlNldEFjY2VwdEFs
bENvb2tpZXMoZmFsc2UpOwotCiAgICAgLy8gUmVzZXQgdGhlIGRlZmF1bHQgcXVvdGEgZm9yIGVh
Y2ggb3JpZ2luIHRvIDVNQgogICAgIHdlYmtpdF9zdXBwb3J0OjpTZXREYXRhYmFzZVF1b3RhKDUg
KiAxMDI0ICogMTAyNCk7CiAKLSAgICBzZXRsb2NhbGUoTENfQUxMLCAiIik7Ci0KICAgICBpZiAo
bV9jbG9zZVJlbWFpbmluZ1dpbmRvd3MpCiAgICAgICAgIG1fc2hlbGwtPmNsb3NlUmVtYWluaW5n
V2luZG93cygpOwogICAgIGVsc2UKICAgICAgICAgbV9jbG9zZVJlbWFpbmluZ1dpbmRvd3MgPSB0
cnVlOwogICAgIG1fd29ya1F1ZXVlLnJlc2V0KCk7Ci0gICAgbV90YXNrTGlzdC5yZXZva2VBbGwo
KTsKIH0KIAogdm9pZCBEUlRUZXN0UnVubmVyOjpsb2NhdGlvbkNoYW5nZURvbmUoKQpAQCAtNDQ0
LDIwICs0MzEsNiBAQCB2b2lkIERSVFRlc3RSdW5uZXI6OnNldENsb3NlUmVtYWluaW5nV2luZG93
c1doZW5Db21wbGV0ZShjb25zdCBDcHBBcmd1bWVudExpc3QmCiAgICAgcmVzdWx0LT5zZXROdWxs
KCk7CiB9CiAKLXZvaWQgRFJUVGVzdFJ1bm5lcjo6c2V0QWx3YXlzQWNjZXB0Q29va2llcyhjb25z
dCBDcHBBcmd1bWVudExpc3QmIGFyZ3VtZW50cywgQ3BwVmFyaWFudCogcmVzdWx0KQotewotICAg
IGlmIChhcmd1bWVudHMuc2l6ZSgpID4gMCkKLSAgICAgICAgd2Via2l0X3N1cHBvcnQ6OlNldEFj
Y2VwdEFsbENvb2tpZXMoY3BwVmFyaWFudFRvQm9vbChhcmd1bWVudHNbMF0pKTsKLSAgICByZXN1
bHQtPnNldE51bGwoKTsKLX0KLQotdm9pZCBEUlRUZXN0UnVubmVyOjpzZXRXaW5kb3dJc0tleShj
b25zdCBDcHBBcmd1bWVudExpc3QmIGFyZ3VtZW50cywgQ3BwVmFyaWFudCogcmVzdWx0KQotewot
ICAgIGlmIChhcmd1bWVudHMuc2l6ZSgpID4gMCAmJiBhcmd1bWVudHNbMF0uaXNCb29sKCkpCi0g
ICAgICAgIG1fc2hlbGwtPnNldEZvY3VzKG1fc2hlbGwtPndlYlZpZXcoKSwgYXJndW1lbnRzWzBd
LnZhbHVlLmJvb2xWYWx1ZSk7Ci0gICAgcmVzdWx0LT5zZXROdWxsKCk7Ci19Ci0KIHZvaWQgRFJU
VGVzdFJ1bm5lcjo6c2V0Q3VzdG9tUG9saWN5RGVsZWdhdGUoY29uc3QgQ3BwQXJndW1lbnRMaXN0
JiBhcmd1bWVudHMsIENwcFZhcmlhbnQqIHJlc3VsdCkKIHsKICAgICBpZiAoYXJndW1lbnRzLnNp
emUoKSA+IDAgJiYgYXJndW1lbnRzWzBdLmlzQm9vbCgpKSB7CkBAIC01MDEsNDQgKzQ3NCw2IEBA
IHZvaWQgRFJUVGVzdFJ1bm5lcjo6c2V0V2lsbFNlbmRSZXF1ZXN0UmV0dXJuc051bGwoY29uc3Qg
Q3BwQXJndW1lbnRMaXN0JiBhcmd1bWVuCiAgICAgcmVzdWx0LT5zZXROdWxsKCk7CiB9CiAKLXZv
aWQgRFJUVGVzdFJ1bm5lcjo6cGF0aFRvTG9jYWxSZXNvdXJjZShjb25zdCBDcHBBcmd1bWVudExp
c3QmIGFyZ3VtZW50cywgQ3BwVmFyaWFudCogcmVzdWx0KQotewotICAgIHJlc3VsdC0+c2V0TnVs
bCgpOwotICAgIGlmIChhcmd1bWVudHMuc2l6ZSgpIDw9IDAgfHwgIWFyZ3VtZW50c1swXS5pc1N0
cmluZygpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBzdHJpbmcgdXJsID0gYXJndW1lbnRzWzBd
LnRvU3RyaW5nKCk7Ci0jaWYgT1MoV0lORE9XUykKLSAgICBpZiAoIXVybC5maW5kKCIvdG1wLyIp
KSB7Ci0gICAgICAgIC8vIFdlIHdhbnQgYSB0ZW1wIGZpbGUuCi0gICAgICAgIGNvbnN0IHVuc2ln
bmVkIHRlbXBQcmVmaXhMZW5ndGggPSA1OwotICAgICAgICBzaXplX3QgYnVmZmVyU2l6ZSA9IE1B
WF9QQVRIOwotICAgICAgICBPd25BcnJheVB0cjxXQ0hBUj4gdGVtcFBhdGggPSBhZG9wdEFycmF5
UHRyKG5ldyBXQ0hBUltidWZmZXJTaXplXSk7Ci0gICAgICAgIERXT1JEIHRlbXBMZW5ndGggPSA6
OkdldFRlbXBQYXRoVyhidWZmZXJTaXplLCB0ZW1wUGF0aC5nZXQoKSk7Ci0gICAgICAgIGlmICh0
ZW1wTGVuZ3RoICsgdXJsLmxlbmd0aCgpIC0gdGVtcFByZWZpeExlbmd0aCArIDEgPiBidWZmZXJT
aXplKSB7Ci0gICAgICAgICAgICBidWZmZXJTaXplID0gdGVtcExlbmd0aCArIHVybC5sZW5ndGgo
KSAtIHRlbXBQcmVmaXhMZW5ndGggKyAxOwotICAgICAgICAgICAgdGVtcFBhdGggPSBhZG9wdEFy
cmF5UHRyKG5ldyBXQ0hBUltidWZmZXJTaXplXSk7Ci0gICAgICAgICAgICB0ZW1wTGVuZ3RoID0g
R2V0VGVtcFBhdGhXKGJ1ZmZlclNpemUsIHRlbXBQYXRoLmdldCgpKTsKLSAgICAgICAgICAgIEFT
U0VSVCh0ZW1wTGVuZ3RoIDwgYnVmZmVyU2l6ZSk7Ci0gICAgICAgIH0KLSAgICAgICAgc3RyaW5n
IHJlc3VsdFBhdGgoV2ViU3RyaW5nKHRlbXBQYXRoLmdldCgpLCB0ZW1wTGVuZ3RoKS51dGY4KCkp
OwotICAgICAgICByZXN1bHRQYXRoLmFwcGVuZCh1cmwuc3Vic3RyKHRlbXBQcmVmaXhMZW5ndGgp
KTsKLSAgICAgICAgcmVzdWx0LT5zZXQocmVzdWx0UGF0aCk7Ci0gICAgICAgIHJldHVybjsKLSAg
ICB9Ci0jZW5kaWYKLQotICAgIC8vIFNvbWUgbGF5b3V0IHRlc3RzIHVzZSBmaWxlOi8vLy8gd2hp
Y2ggd2UgcmVzb2x2ZSBhcyBhIFVOQyBwYXRoLiBOb3JtYWxpemUKLSAgICAvLyB0aGVtIHRvIGp1
c3QgZmlsZTovLy8uCi0gICAgc3RyaW5nIGxvd2VyVXJsID0gdXJsOwotICAgIHRyYW5zZm9ybShs
b3dlclVybC5iZWdpbigpLCBsb3dlclVybC5lbmQoKSwgbG93ZXJVcmwuYmVnaW4oKSwgOjp0b2xv
d2VyKTsKLSAgICB3aGlsZSAoIWxvd2VyVXJsLmZpbmQoImZpbGU6Ly8vLyIpKSB7Ci0gICAgICAg
IHVybCA9IHVybC5zdWJzdHIoMCwgOCkgKyB1cmwuc3Vic3RyKDkpOwotICAgICAgICBsb3dlclVy
bCA9IGxvd2VyVXJsLnN1YnN0cigwLCA4KSArIGxvd2VyVXJsLnN1YnN0cig5KTsKLSAgICB9Ci0g
ICAgcmVzdWx0LT5zZXQod2Via2l0X3N1cHBvcnQ6OlJld3JpdGVMYXlvdXRUZXN0c1VSTCh1cmwp
LnNwZWMoKSk7Ci19Ci0KIAogI2lmIEVOQUJMRShOT1RJRklDQVRJT05TKQogdm9pZCBEUlRUZXN0
UnVubmVyOjpncmFudFdlYk5vdGlmaWNhdGlvblBlcm1pc3Npb24oY29uc3QgQ3BwQXJndW1lbnRM
aXN0JiBhcmd1bWVudHMsIENwcFZhcmlhbnQqIHJlc3VsdCkKQEAgLTYwMCwxMyArNTM1LDYgQEAg
dm9pZCBEUlRUZXN0UnVubmVyOjpzZXREYXRhYmFzZVF1b3RhKGNvbnN0IENwcEFyZ3VtZW50TGlz
dCYgYXJndW1lbnRzLCBDcHBWYXJpYW4KICAgICAgICAgd2Via2l0X3N1cHBvcnQ6OlNldERhdGFi
YXNlUXVvdGEoYXJndW1lbnRzWzBdLnRvSW50MzIoKSk7CiB9CiAKLXZvaWQgRFJUVGVzdFJ1bm5l
cjo6c2V0UE9TSVhMb2NhbGUoY29uc3QgQ3BwQXJndW1lbnRMaXN0JiBhcmd1bWVudHMsIENwcFZh
cmlhbnQqIHJlc3VsdCkKLXsKLSAgICByZXN1bHQtPnNldE51bGwoKTsKLSAgICBpZiAoYXJndW1l
bnRzLnNpemUoKSA9PSAxICYmIGFyZ3VtZW50c1swXS5pc1N0cmluZygpKQotICAgICAgICBzZXRs
b2NhbGUoTENfQUxMLCBhcmd1bWVudHNbMF0udG9TdHJpbmcoKS5jX3N0cigpKTsKLX0KLQogdm9p
ZCBEUlRUZXN0UnVubmVyOjpudW1iZXJPZlBlbmRpbmdHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1
ZXN0cyhjb25zdCBDcHBBcmd1bWVudExpc3QmIGFyZ3VtZW50cywgQ3BwVmFyaWFudCogcmVzdWx0
KQogewogICAgIHJlc3VsdC0+c2V0TnVsbCgpOwpAQCAtNzIyLDQwICs2NTAsNiBAQCB2b2lkIERS
VFRlc3RSdW5uZXI6Ondhc01vY2tTcGVlY2hSZWNvZ25pdGlvbkFib3J0ZWQoY29uc3QgQ3BwQXJn
dW1lbnRMaXN0JiwgQ3BwVgogfQogI2VuZGlmCiAKLWNsYXNzIEludm9rZUNhbGxiYWNrVGFzayA6
IHB1YmxpYyBXZWJNZXRob2RUYXNrPERSVFRlc3RSdW5uZXI+IHsKLXB1YmxpYzoKLSAgICBJbnZv
a2VDYWxsYmFja1Rhc2soRFJUVGVzdFJ1bm5lciogb2JqZWN0LCBQYXNzT3duQXJyYXlQdHI8Q3Bw
VmFyaWFudD4gY2FsbGJhY2tBcmd1bWVudHMsIHVpbnQzMl90IG51bWJlck9mQXJndW1lbnRzKQot
ICAgICAgICA6IFdlYk1ldGhvZFRhc2s8RFJUVGVzdFJ1bm5lcj4ob2JqZWN0KQotICAgICAgICAs
IG1fY2FsbGJhY2tBcmd1bWVudHMoY2FsbGJhY2tBcmd1bWVudHMpCi0gICAgICAgICwgbV9udW1i
ZXJPZkFyZ3VtZW50cyhudW1iZXJPZkFyZ3VtZW50cykKLSAgICB7Ci0gICAgfQotCi0gICAgdmly
dHVhbCB2b2lkIHJ1bklmVmFsaWQoKQotICAgIHsKLSAgICAgICAgQ3BwVmFyaWFudCBpbnZva2VS
ZXN1bHQ7Ci0gICAgICAgIG1fY2FsbGJhY2tBcmd1bWVudHNbMF0uaW52b2tlRGVmYXVsdChtX2Nh
bGxiYWNrQXJndW1lbnRzLmdldCgpLCBtX251bWJlck9mQXJndW1lbnRzLCBpbnZva2VSZXN1bHQp
OwotICAgIH0KLQotcHJpdmF0ZToKLSAgICBPd25BcnJheVB0cjxDcHBWYXJpYW50PiBtX2NhbGxi
YWNrQXJndW1lbnRzOwotICAgIHVpbnQzMl90IG1fbnVtYmVyT2ZBcmd1bWVudHM7Ci19OwotCi12
b2lkIERSVFRlc3RSdW5uZXI6OnNldEJhY2tpbmdTY2FsZUZhY3Rvcihjb25zdCBDcHBBcmd1bWVu
dExpc3QmIGFyZ3VtZW50cywgQ3BwVmFyaWFudCogcmVzdWx0KQotewotICAgIGlmIChhcmd1bWVu
dHMuc2l6ZSgpIDwgMiB8fCAhYXJndW1lbnRzWzBdLmlzTnVtYmVyKCkgfHwgIWFyZ3VtZW50c1sx
XS5pc09iamVjdCgpKQotICAgICAgICByZXR1cm47Ci0gICAgCi0gICAgZmxvYXQgdmFsdWUgPSBh
cmd1bWVudHNbMF0udmFsdWUuZG91YmxlVmFsdWU7Ci0gICAgbV9zaGVsbC0+d2ViVmlld0hvc3Qo
KS0+c2V0RGV2aWNlU2NhbGVGYWN0b3IodmFsdWUpOwotCi0gICAgT3duQXJyYXlQdHI8Q3BwVmFy
aWFudD4gY2FsbGJhY2tBcmd1bWVudHMgPSBhZG9wdEFycmF5UHRyKG5ldyBDcHBWYXJpYW50WzFd
KTsKLSAgICBjYWxsYmFja0FyZ3VtZW50c1swXS5zZXQoYXJndW1lbnRzWzFdKTsKLSAgICByZXN1
bHQtPnNldE51bGwoKTsKLSAgICBwb3N0VGFzayhuZXcgSW52b2tlQ2FsbGJhY2tUYXNrKHRoaXMs
IGNhbGxiYWNrQXJndW1lbnRzLnJlbGVhc2UoKSwgMSkpOwotfQotCiAjaWYgRU5BQkxFKFBPSU5U
RVJfTE9DSykKIHZvaWQgRFJUVGVzdFJ1bm5lcjo6ZGlkQWNxdWlyZVBvaW50ZXJMb2NrKGNvbnN0
IENwcEFyZ3VtZW50TGlzdCYsIENwcFZhcmlhbnQqIHJlc3VsdCkKIHsKZGlmZiAtLWdpdCBhL1Rv
b2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL0RSVFRlc3RSdW5uZXIuaCBiL1Rvb2xzL0R1bXBS
ZW5kZXJUcmVlL2Nocm9taXVtL0RSVFRlc3RSdW5uZXIuaAppbmRleCBlYzYyNGFhM2E4N2RjZGRm
ZGZjZjdiNzUzNjZlNDNjYzUyMzdmNjBmLi5hMWQzOGZhNDRmMzg5MDgyZWFmOTA3NWVmMTliZmVk
Njk0MjU3OTM1IDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9EUlRU
ZXN0UnVubmVyLmgKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vRFJUVGVzdFJ1
bm5lci5oCkBAIC05NCwxMiArOTQsNiBAQCBwdWJsaWM6CiAgICAgdm9pZCBxdWV1ZUxvYWQoY29u
c3QgQ3BwQXJndW1lbnRMaXN0JiwgQ3BwVmFyaWFudCopOwogICAgIHZvaWQgcXVldWVMb2FkSFRN
TFN0cmluZyhjb25zdCBDcHBBcmd1bWVudExpc3QmLCBDcHBWYXJpYW50Kik7CiAKLSAgICAvLyBD
aGFuZ2VzIHRoZSBjb29raWUgcG9saWN5IGZyb20gdGhlIGRlZmF1bHQgdG8gYWxsb3cgYWxsIGNv
b2tpZXMuCi0gICAgdm9pZCBzZXRBbHdheXNBY2NlcHRDb29raWVzKGNvbnN0IENwcEFyZ3VtZW50
TGlzdCYsIENwcFZhcmlhbnQqKTsKLQotICAgIC8vIEdpdmVzIGZvY3VzIHRvIHRoZSB3aW5kb3cu
Ci0gICAgdm9pZCBzZXRXaW5kb3dJc0tleShjb25zdCBDcHBBcmd1bWVudExpc3QmLCBDcHBWYXJp
YW50Kik7Ci0KIAogICAgIC8vIENhdXNlcyBuYXZpZ2F0aW9uIGFjdGlvbnMganVzdCBwcmludG91
dCB0aGUgaW50ZW5kZWQgbmF2aWdhdGlvbiBpbnN0ZWFkCiAgICAgLy8gb2YgdGFraW5nIHlvdSB0
byB0aGUgcGFnZS4gVGhpcyBpcyB1c2VkIGZvciBjYXNlcyBsaWtlIG1haWx0bywgd2hlcmUgeW91
CkBAIC0xMTgsOSArMTEyLDYgQEAgcHVibGljOgogICAgIC8vIENhdXNlcyBXaWxsU2VuZFJlcXVl
c3QgdG8gcmV0dXJuIGFuIGVtcHR5IHJlcXVlc3QuCiAgICAgdm9pZCBzZXRXaWxsU2VuZFJlcXVl
c3RSZXR1cm5zTnVsbChjb25zdCBDcHBBcmd1bWVudExpc3QmLCBDcHBWYXJpYW50Kik7CiAKLSAg
ICAvLyBDb252ZXJ0cyBhIFVSTCBzdGFydGluZyB3aXRoIGZpbGU6Ly8vdG1wLyB0byB0aGUgbG9j
YWwgbWFwcGluZy4KLSAgICB2b2lkIHBhdGhUb0xvY2FsUmVzb3VyY2UoY29uc3QgQ3BwQXJndW1l
bnRMaXN0JiwgQ3BwVmFyaWFudCopOwotCiAjaWYgRU5BQkxFKE5PVElGSUNBVElPTlMpCiAgICAg
Ly8gR3JhbnRzIHBlcm1pc3Npb24gZm9yIGRlc2t0b3Agbm90aWZpY2F0aW9ucyB0byBhbiBvcmln
aW4KICAgICB2b2lkIGdyYW50V2ViTm90aWZpY2F0aW9uUGVybWlzc2lvbihjb25zdCBDcHBBcmd1
bWVudExpc3QmLCBDcHBWYXJpYW50Kik7CkBAIC0xMzYsMTAgKzEyNyw2IEBAIHB1YmxpYzoKICAg
ICAvLyBTZXRzIHRoZSBkZWZhdWx0IHF1b3RhIGZvciBhbGwgb3JpZ2lucwogICAgIHZvaWQgc2V0
RGF0YWJhc2VRdW90YShjb25zdCBDcHBBcmd1bWVudExpc3QmLCBDcHBWYXJpYW50Kik7CiAKLSAg
ICAvLyBDYWxscyBzZXRsb2NhbGUoTENfQUxMLCAuLi4pIGZvciBhIHNwZWNpZmllZCBsb2NhbGUu
Ci0gICAgLy8gUmVzZXRzIGJldHdlZW4gdGVzdHMuCi0gICAgdm9pZCBzZXRQT1NJWExvY2FsZShj
b25zdCBDcHBBcmd1bWVudExpc3QmLCBDcHBWYXJpYW50Kik7Ci0KICAgICAvLyBHZXRzIHRoZSBu
dW1iZXIgb2YgZ2VvbG9jYXRpb24gcGVybWlzc2lvbnMgcmVxdWVzdHMgcGVuZGluZy4KICAgICB2
b2lkIG51bWJlck9mUGVuZGluZ0dlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3RzKGNvbnN0IENw
cEFyZ3VtZW50TGlzdCYsIENwcFZhcmlhbnQqKTsKIApAQCAtMTcwLDkgKzE1Nyw2IEBAIHB1Ymxp
YzoKICAgICB2b2lkIHNldFBvaW50ZXJMb2NrV2lsbFJlc3BvbmRBc3luY2hyb25vdXNseShjb25z
dCBDcHBBcmd1bWVudExpc3QmLCBDcHBWYXJpYW50Kik7CiAjZW5kaWYKIAotICAgIC8vIFVzZWQg
dG8gc2V0IHRoZSBkZXZpY2Ugc2NhbGUgZmFjdG9yLgotICAgIHZvaWQgc2V0QmFja2luZ1NjYWxl
RmFjdG9yKGNvbnN0IENwcEFyZ3VtZW50TGlzdCYsIENwcFZhcmlhbnQqKTsKLQogcHVibGljOgog
ICAgIC8vIFRoZSBmb2xsb3dpbmcgbWV0aG9kcyBhcmUgbm90IGV4cG9zZWQgdG8gSmF2YVNjcmlw
dC4KICAgICB2b2lkIHNldFdvcmtRdWV1ZUZyb3plbihib29sIGZyb3plbikgeyBtX3dvcmtRdWV1
ZS5zZXRGcm96ZW4oZnJvemVuKTsgfQpAQCAtMjA4LDggKzE5Miw2IEBAIHB1YmxpYzoKICAgICAg
ICAgdmlydHVhbCBib29sIHJ1bihUZXN0U2hlbGwqKSA9IDA7CiAgICAgfTsKIAotICAgIFdlYlRh
c2tMaXN0KiB0YXNrTGlzdCgpIHsgcmV0dXJuICZtX3Rhc2tMaXN0OyB9Ci0KIHByaXZhdGU6CiAg
ICAgZnJpZW5kIGNsYXNzIFdvcmtJdGVtOwogICAgIGZyaWVuZCBjbGFzcyBXb3JrUXVldWU7CkBA
IC0yNTEsOSArMjMzLDYgQEAgcHJpdmF0ZToKICAgICAgICAgdmlydHVhbCB2b2lkIHJ1bklmVmFs
aWQoKSB7IG1fb2JqZWN0LT5jb21wbGV0ZU5vdGlmeURvbmUodHJ1ZSk7IH0KICAgICB9OwogCi0g
ICAgLy8gVXNlZCBmb3IgdGVzdCB0aW1lb3V0cy4KLSAgICBXZWJUYXNrTGlzdCBtX3Rhc2tMaXN0
OwotCiAgICAgLy8gTm9uLW93bmluZyBwb2ludGVyLiBUaGUgRFJUVGVzdFJ1bm5lciBpcyBvd25l
ZCBieSB0aGUgaG9zdC4KICAgICBUZXN0U2hlbGwqIG1fc2hlbGw7CiAKZGlmZiAtLWdpdCBhL1Rv
b2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvcHVibGljL1dlYlRlc3REZWxl
Z2F0ZS5oIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9wdWJsaWMv
V2ViVGVzdERlbGVnYXRlLmgKaW5kZXggZGE4NDVlNTMzZGEwNjA0ZmUwYmVkZjIyNWRjMGZlYmZl
YTViM2ViZC4uMDkwNDYxMmNmNTJmMjY0ZmE5NGM0NWU4MjY4YzFiNDhmNjA4YTE2YiAxMDA2NDQK
LS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9wdWJsaWMvV2Vi
VGVzdERlbGVnYXRlLmgKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1
bm5lci9wdWJsaWMvV2ViVGVzdERlbGVnYXRlLmgKQEAgLTg1LDYgKzg1LDExIEBAIHB1YmxpYzoK
ICAgICB2aXJ0dWFsIHZvaWQgc2hvd0RldlRvb2xzKCkgeyB9CiAgICAgdmlydHVhbCB2b2lkIGNs
b3NlRGV2VG9vbHMoKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgZXZhbHVhdGVJbldlYkluc3BlY3Rv
cihsb25nLCBjb25zdCBzdGQ6OnN0cmluZyYpIHsgfQorICAgIHZpcnR1YWwgdm9pZCBzZXREZXZp
Y2VTY2FsZUZhY3RvcihmbG9hdCkgeyB9CisgICAgdmlydHVhbCB2b2lkIHNldEZvY3VzKGJvb2wp
IHsgfQorICAgIHZpcnR1YWwgdm9pZCBzZXRBY2NlcHRBbGxDb29raWVzKGJvb2wpIHsgfQorICAg
IHZpcnR1YWwgc3RkOjpzdHJpbmcgcGF0aFRvTG9jYWxSZXNvdXJjZShjb25zdCBzdGQ6OnN0cmlu
ZyYgcmVzb3VyY2UpIHsgcmV0dXJuIHN0ZDo6c3RyaW5nKCk7IH0KKyAgICB2aXJ0dWFsIHZvaWQg
c2V0TG9jYWxlKGNvbnN0IHN0ZDo6c3RyaW5nJikgeyB9CiB9OwogCiB9CmRpZmYgLS1naXQgYS9U
b29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9UZXN0UnVubmVyLmNw
cCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvc3JjL1Rlc3RSdW5u
ZXIuY3BwCmluZGV4IGQ1YzhjNjA3MmU0NmU0ZWFhZDlhZGMwZWEzODlmOTljZWI4NzJhYWEuLmMw
NjJlMTcxMThmYzU0YjExNDhmYjE1OGQ3N2NlMjdlODFlMzUyYzUgMTAwNjQ0Ci0tLSBhL1Rvb2xz
L0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvc3JjL1Rlc3RSdW5uZXIuY3BwCisr
KyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvc3JjL1Rlc3RSdW5u
ZXIuY3BwCkBAIC00NywxMiArNDcsMTQgQEAKICNpbmNsdWRlICJXZWJTZWN1cml0eVBvbGljeS5o
IgogI2luY2x1ZGUgIldlYlNldHRpbmdzLmgiCiAjaW5jbHVkZSAiV2ViU3Vycm91bmRpbmdUZXh0
LmgiCisjaW5jbHVkZSAiV2ViVGFzay5oIgogI2luY2x1ZGUgIldlYlRlc3REZWxlZ2F0ZS5oIgog
I2luY2x1ZGUgIldlYlZpZXcuaCIKICNpbmNsdWRlICJXZWJXb3JrZXJJbmZvLmgiCiAjaW5jbHVk
ZSAicGxhdGZvcm0vV2ViUG9pbnQuaCIKICNpbmNsdWRlICJwbGF0Zm9ybS9XZWJTZXJpYWxpemVk
U2NyaXB0VmFsdWUuaCIKICNpbmNsdWRlICJ2OC9pbmNsdWRlL3Y4LmgiCisjaW5jbHVkZSA8d3Rm
L093bkFycmF5UHRyLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKICNpZiBP
UyhMSU5VWCkgfHwgT1MoQU5EUk9JRCkKQEAgLTc2LDYgKzc4LDI2IEBAIHB1YmxpYzoKICAgICB2
aXJ0dWFsIHZvaWQgZGVzdHJveSgpIHsgfQogfTsKIAorY2xhc3MgSW52b2tlQ2FsbGJhY2tUYXNr
IDogcHVibGljIFdlYk1ldGhvZFRhc2s8VGVzdFJ1bm5lcj4geworcHVibGljOgorICAgIEludm9r
ZUNhbGxiYWNrVGFzayhUZXN0UnVubmVyKiBvYmplY3QsIFBhc3NPd25BcnJheVB0cjxDcHBWYXJp
YW50PiBjYWxsYmFja0FyZ3VtZW50cywgdWludDMyX3QgbnVtYmVyT2ZBcmd1bWVudHMpCisgICAg
ICAgIDogV2ViTWV0aG9kVGFzazxUZXN0UnVubmVyPihvYmplY3QpCisgICAgICAgICwgbV9jYWxs
YmFja0FyZ3VtZW50cyhjYWxsYmFja0FyZ3VtZW50cykKKyAgICAgICAgLCBtX251bWJlck9mQXJn
dW1lbnRzKG51bWJlck9mQXJndW1lbnRzKQorICAgIHsKKyAgICB9CisKKyAgICB2aXJ0dWFsIHZv
aWQgcnVuSWZWYWxpZCgpCisgICAgeworICAgICAgICBDcHBWYXJpYW50IGludm9rZVJlc3VsdDsK
KyAgICAgICAgbV9jYWxsYmFja0FyZ3VtZW50c1swXS5pbnZva2VEZWZhdWx0KG1fY2FsbGJhY2tB
cmd1bWVudHMuZ2V0KCksIG1fbnVtYmVyT2ZBcmd1bWVudHMsIGludm9rZVJlc3VsdCk7CisgICAg
fQorCitwcml2YXRlOgorICAgIE93bkFycmF5UHRyPENwcFZhcmlhbnQ+IG1fY2FsbGJhY2tBcmd1
bWVudHM7CisgICAgdWludDMyX3QgbV9udW1iZXJPZkFyZ3VtZW50czsKK307CisKIH0KIAogVGVz
dFJ1bm5lcjo6VGVzdFJ1bm5lcigpCkBAIC0xNzgsNiArMjAwLDExIEBAIFRlc3RSdW5uZXI6OlRl
c3RSdW5uZXIoKQogICAgIGJpbmRNZXRob2QoInNob3dXZWJJbnNwZWN0b3IiLCAmVGVzdFJ1bm5l
cjo6c2hvd1dlYkluc3BlY3Rvcik7CiAgICAgYmluZE1ldGhvZCgiY2xvc2VXZWJJbnNwZWN0b3Ii
LCAmVGVzdFJ1bm5lcjo6Y2xvc2VXZWJJbnNwZWN0b3IpOwogICAgIGJpbmRNZXRob2QoImV2YWx1
YXRlSW5XZWJJbnNwZWN0b3IiLCAmVGVzdFJ1bm5lcjo6ZXZhbHVhdGVJbldlYkluc3BlY3Rvcik7
CisgICAgYmluZE1ldGhvZCgic2V0QWx3YXlzQWNjZXB0Q29va2llcyIsICZUZXN0UnVubmVyOjpz
ZXRBbHdheXNBY2NlcHRDb29raWVzKTsKKyAgICBiaW5kTWV0aG9kKCJzZXRXaW5kb3dJc0tleSIs
ICZUZXN0UnVubmVyOjpzZXRXaW5kb3dJc0tleSk7CisgICAgYmluZE1ldGhvZCgicGF0aFRvTG9j
YWxSZXNvdXJjZSIsICZUZXN0UnVubmVyOjpwYXRoVG9Mb2NhbFJlc291cmNlKTsKKyAgICBiaW5k
TWV0aG9kKCJzZXRCYWNraW5nU2NhbGVGYWN0b3IiLCAmVGVzdFJ1bm5lcjo6c2V0QmFja2luZ1Nj
YWxlRmFjdG9yKTsKKyAgICBiaW5kTWV0aG9kKCJzZXRQT1NJWExvY2FsZSIsICZUZXN0UnVubmVy
OjpzZXRQT1NJWExvY2FsZSk7CiAKICAgICAvLyBQcm9wZXJ0aWVzLgogICAgIGJpbmRQcm9wZXJ0
eSgid29ya2VyVGhyZWFkQ291bnQiLCAmVGVzdFJ1bm5lcjo6d29ya2VyVGhyZWFkQ291bnQpOwpA
QCAtMjQ0LDYgKzI3MSwxMCBAQCB2b2lkIFRlc3RSdW5uZXI6OnJlc2V0KCkKICAgICBXZWJGb250
UmVuZGVyaW5nOjpzZXRTdWJwaXhlbFBvc2l0aW9uaW5nKGZhbHNlKTsKICNlbmRpZgogCisgICAg
bV9kZWxlZ2F0ZS0+c2V0RGV2aWNlU2NhbGVGYWN0b3IoMSk7CisgICAgbV9kZWxlZ2F0ZS0+c2V0
QWNjZXB0QWxsQ29va2llcyhmYWxzZSk7CisgICAgbV9kZWxlZ2F0ZS0+c2V0TG9jYWxlKCIiKTsK
KwogICAgIG1fZHVtcEVkaXRpbmdDYWxsYmFja3MgPSBmYWxzZTsKICAgICBtX2R1bXBBc1RleHQg
PSBmYWxzZTsKICAgICBtX2dlbmVyYXRlUGl4ZWxSZXN1bHRzID0gdHJ1ZTsKQEAgLTI3NSw2ICsz
MDYsOCBAQCB2b2lkIFRlc3RSdW5uZXI6OnJlc2V0KCkKICAgICBtX3VzZXJTdHlsZVNoZWV0TG9j
YXRpb24gPSBXZWJVUkwoKTsKIAogICAgIG1fd2ViUGVybWlzc2lvbnMtPnJlc2V0KCk7CisKKyAg
ICBtX3Rhc2tMaXN0LnJldm9rZUFsbCgpOwogfQogCiB2b2lkIFRlc3RSdW5uZXI6OnNldFRlc3RJ
c1J1bm5pbmcoYm9vbCBydW5uaW5nKQpAQCAtMTI5NSw2ICsxMzI4LDUwIEBAIHZvaWQgVGVzdFJ1
bm5lcjo6ZXZhbHVhdGVJbldlYkluc3BlY3Rvcihjb25zdCBDcHBBcmd1bWVudExpc3QmIGFyZ3Vt
ZW50cywgQ3BwVmFyCiAgICAgbV9kZWxlZ2F0ZS0+ZXZhbHVhdGVJbldlYkluc3BlY3Rvcihhcmd1
bWVudHNbMF0udG9JbnQzMigpLCBhcmd1bWVudHNbMV0udG9TdHJpbmcoKSk7CiB9CiAKK3ZvaWQg
VGVzdFJ1bm5lcjo6c2V0QWx3YXlzQWNjZXB0Q29va2llcyhjb25zdCBDcHBBcmd1bWVudExpc3Qm
IGFyZ3VtZW50cywgQ3BwVmFyaWFudCogcmVzdWx0KQoreworICAgIGlmIChhcmd1bWVudHMuc2l6
ZSgpID4gMCkKKyAgICAgICAgbV9kZWxlZ2F0ZS0+c2V0QWNjZXB0QWxsQ29va2llcyhjcHBWYXJp
YW50VG9Cb29sKGFyZ3VtZW50c1swXSkpOworICAgIHJlc3VsdC0+c2V0TnVsbCgpOworfQorCit2
b2lkIFRlc3RSdW5uZXI6OnNldFdpbmRvd0lzS2V5KGNvbnN0IENwcEFyZ3VtZW50TGlzdCYgYXJn
dW1lbnRzLCBDcHBWYXJpYW50KiByZXN1bHQpCit7CisgICAgaWYgKGFyZ3VtZW50cy5zaXplKCkg
PiAwICYmIGFyZ3VtZW50c1swXS5pc0Jvb2woKSkKKyAgICAgICAgbV9kZWxlZ2F0ZS0+c2V0Rm9j
dXMoYXJndW1lbnRzWzBdLnZhbHVlLmJvb2xWYWx1ZSk7CisgICAgcmVzdWx0LT5zZXROdWxsKCk7
Cit9CisKK3ZvaWQgVGVzdFJ1bm5lcjo6cGF0aFRvTG9jYWxSZXNvdXJjZShjb25zdCBDcHBBcmd1
bWVudExpc3QmIGFyZ3VtZW50cywgQ3BwVmFyaWFudCogcmVzdWx0KQoreworICAgIHJlc3VsdC0+
c2V0TnVsbCgpOworICAgIGlmIChhcmd1bWVudHMuc2l6ZSgpIDw9IDAgfHwgIWFyZ3VtZW50c1sw
XS5pc1N0cmluZygpKQorICAgICAgICByZXR1cm47CisKKyAgICByZXN1bHQtPnNldChtX2RlbGVn
YXRlLT5wYXRoVG9Mb2NhbFJlc291cmNlKGFyZ3VtZW50c1swXS50b1N0cmluZygpKSk7Cit9CisK
K3ZvaWQgVGVzdFJ1bm5lcjo6c2V0QmFja2luZ1NjYWxlRmFjdG9yKGNvbnN0IENwcEFyZ3VtZW50
TGlzdCYgYXJndW1lbnRzLCBDcHBWYXJpYW50KiByZXN1bHQpCit7CisgICAgaWYgKGFyZ3VtZW50
cy5zaXplKCkgPCAyIHx8ICFhcmd1bWVudHNbMF0uaXNOdW1iZXIoKSB8fCAhYXJndW1lbnRzWzFd
LmlzT2JqZWN0KCkpCisgICAgICAgIHJldHVybjsKKworICAgIGZsb2F0IHZhbHVlID0gYXJndW1l
bnRzWzBdLnZhbHVlLmRvdWJsZVZhbHVlOworICAgIG1fZGVsZWdhdGUtPnNldERldmljZVNjYWxl
RmFjdG9yKHZhbHVlKTsKKworICAgIE93bkFycmF5UHRyPENwcFZhcmlhbnQ+IGNhbGxiYWNrQXJn
dW1lbnRzID0gYWRvcHRBcnJheVB0cihuZXcgQ3BwVmFyaWFudFsxXSk7CisgICAgY2FsbGJhY2tB
cmd1bWVudHNbMF0uc2V0KGFyZ3VtZW50c1sxXSk7CisgICAgcmVzdWx0LT5zZXROdWxsKCk7Cisg
ICAgbV9kZWxlZ2F0ZS0+cG9zdFRhc2sobmV3IEludm9rZUNhbGxiYWNrVGFzayh0aGlzLCBjYWxs
YmFja0FyZ3VtZW50cy5yZWxlYXNlKCksIDEpKTsKK30KKwordm9pZCBUZXN0UnVubmVyOjpzZXRQ
T1NJWExvY2FsZShjb25zdCBDcHBBcmd1bWVudExpc3QmIGFyZ3VtZW50cywgQ3BwVmFyaWFudCog
cmVzdWx0KQoreworICAgIHJlc3VsdC0+c2V0TnVsbCgpOworICAgIGlmIChhcmd1bWVudHMuc2l6
ZSgpID09IDEgJiYgYXJndW1lbnRzWzBdLmlzU3RyaW5nKCkpCisgICAgICAgIG1fZGVsZWdhdGUt
PnNldExvY2FsZShhcmd1bWVudHNbMF0udG9TdHJpbmcoKSk7Cit9CisKIHZvaWQgVGVzdFJ1bm5l
cjo6ZHVtcEVkaXRpbmdDYWxsYmFja3MoY29uc3QgQ3BwQXJndW1lbnRMaXN0JiwgQ3BwVmFyaWFu
dCogcmVzdWx0KQogewogICAgIG1fZHVtcEVkaXRpbmdDYWxsYmFja3MgPSB0cnVlOwpkaWZmIC0t
Z2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvVGVzdFJ1
bm5lci5oIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvVGVz
dFJ1bm5lci5oCmluZGV4IDU4YmYyMmFhOGZkZGU0MGY3YzBjNzc1N2QzMTY0MzU2ZmU5NTNhYmEu
LjFhYWIzYWExMDE1OTk4NWFmZjRjOTViYWQxZWMzMDdmNTMwNWM2MzggMTAwNjQ0Ci0tLSBhL1Rv
b2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvc3JjL1Rlc3RSdW5uZXIuaAor
KysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9UZXN0UnVu
bmVyLmgKQEAgLTM0LDYgKzM0LDcgQEAKIAogI2luY2x1ZGUgIkNwcEJvdW5kQ2xhc3MuaCIKICNp
bmNsdWRlICJXZWJEZWxpdmVyZWRJbnRlbnRDbGllbnQuaCIKKyNpbmNsdWRlICJXZWJUYXNrLmgi
CiAjaW5jbHVkZSAiV2ViVGVzdFJ1bm5lci5oIgogI2luY2x1ZGUgInBsYXRmb3JtL1dlYkFycmF5
QnVmZmVyVmlldy5oIgogI2luY2x1ZGUgInBsYXRmb3JtL1dlYlVSTC5oIgpAQCAtNTksNiArNjAs
OCBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHJlc2V0KCk7CiAKKyAgICBXZWJUYXNrTGlzdCogdGFz
a0xpc3QoKSB7IHJldHVybiAmbV90YXNrTGlzdDsgfQorCiAgICAgLy8gV2ViVGVzdFJ1bm5lciBp
bXBsZW1lbnRhdGlvbi4KICAgICB2aXJ0dWFsIHZvaWQgc2V0VGVzdElzUnVubmluZyhib29sKSBP
VkVSUklERTsKICAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkRHVtcEVkaXRpbmdDYWxsYmFja3MoKSBj
b25zdCBPVkVSUklERTsKQEAgLTMzMSw2ICszMzQsMjIgQEAgcHJpdmF0ZToKICAgICAvLyBBbGxv
d3MgbGF5b3V0IHRlc3RzIHRvIGV4ZWMgc2NyaXB0cyBhdCBXZWJJbnNwZWN0b3Igc2lkZS4KICAg
ICB2b2lkIGV2YWx1YXRlSW5XZWJJbnNwZWN0b3IoY29uc3QgQ3BwQXJndW1lbnRMaXN0JiwgQ3Bw
VmFyaWFudCopOwogCisgICAgLy8gQ2hhbmdlcyB0aGUgY29va2llIHBvbGljeSBmcm9tIHRoZSBk
ZWZhdWx0IHRvIGFsbG93IGFsbCBjb29raWVzLgorICAgIHZvaWQgc2V0QWx3YXlzQWNjZXB0Q29v
a2llcyhjb25zdCBDcHBBcmd1bWVudExpc3QmLCBDcHBWYXJpYW50Kik7CisKKyAgICAvLyBHaXZl
cyBmb2N1cyB0byB0aGUgd2luZG93LgorICAgIHZvaWQgc2V0V2luZG93SXNLZXkoY29uc3QgQ3Bw
QXJndW1lbnRMaXN0JiwgQ3BwVmFyaWFudCopOworCisgICAgLy8gQ29udmVydHMgYSBVUkwgc3Rh
cnRpbmcgd2l0aCBmaWxlOi8vL3RtcC8gdG8gdGhlIGxvY2FsIG1hcHBpbmcuCisgICAgdm9pZCBw
YXRoVG9Mb2NhbFJlc291cmNlKGNvbnN0IENwcEFyZ3VtZW50TGlzdCYsIENwcFZhcmlhbnQqKTsK
KworICAgIC8vIFVzZWQgdG8gc2V0IHRoZSBkZXZpY2Ugc2NhbGUgZmFjdG9yLgorICAgIHZvaWQg
c2V0QmFja2luZ1NjYWxlRmFjdG9yKGNvbnN0IENwcEFyZ3VtZW50TGlzdCYsIENwcFZhcmlhbnQq
KTsKKworICAgIC8vIENhbGxzIHNldGxvY2FsZShMQ19BTEwsIC4uLikgZm9yIGEgc3BlY2lmaWVk
IGxvY2FsZS4KKyAgICAvLyBSZXNldHMgYmV0d2VlbiB0ZXN0cy4KKyAgICB2b2lkIHNldFBPU0lY
TG9jYWxlKGNvbnN0IENwcEFyZ3VtZW50TGlzdCYsIENwcFZhcmlhbnQqKTsKKwogICAgIC8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLwogICAgIC8vIFByb3BlcnRpZXMKICAgICB2b2lkIHdvcmtlclRocmVhZENv
dW50KENwcFZhcmlhbnQqKTsKQEAgLTQ1Nyw2ICs0NzYsOSBAQCBwcml2YXRlOgogICAgIC8vIFdB
ViBhdWRpbyBkYXRhIGlzIHN0b3JlZCBoZXJlLgogICAgIFdlYktpdDo6V2ViQXJyYXlCdWZmZXJW
aWV3IG1fYXVkaW9EYXRhOwogCisgICAgLy8gVXNlZCBmb3IgdGVzdCB0aW1lb3V0cy4KKyAgICBX
ZWJUYXNrTGlzdCBtX3Rhc2tMaXN0OworCiAgICAgV2ViVGVzdERlbGVnYXRlKiBtX2RlbGVnYXRl
OwogICAgIFdlYktpdDo6V2ViVmlldyogbV93ZWJWaWV3OwogCmRpZmYgLS1naXQgYS9Ub29scy9E
dW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9XZWJWaWV3SG9zdC5jcHAgYi9Ub29scy9EdW1wUmVuZGVy
VHJlZS9jaHJvbWl1bS9XZWJWaWV3SG9zdC5jcHAKaW5kZXggZmJlY2Q0MzVjNzBjODg1ZTcwOTky
MDdlYTRiOWI1N2ViZmQyNjM1ZC4uMzczMTNmN2I3YzJmZDY0MGI4NWMxMjI2N2E0YWU5MGJjYzhk
ZDdlMSAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vV2ViVmlld0hv
c3QuY3BwCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1dlYlZpZXdIb3N0LmNw
cApAQCAtNzAsNiArNzAsOCBAQAogI2luY2x1ZGUgInNraWEvZXh0L3BsYXRmb3JtX2NhbnZhcy5o
IgogI2luY2x1ZGUgIndlYmtpdC9zdXBwb3J0L3Rlc3RfbWVkaWFfc3RyZWFtX2NsaWVudC5oIgog
I2luY2x1ZGUgIndlYmtpdC9zdXBwb3J0L3dlYmtpdF9zdXBwb3J0LmgiCisjaW5jbHVkZSA8Y2xv
Y2FsZT4KKyNpbmNsdWRlIDxjY3R5cGU+CiAjaW5jbHVkZSA8cHVibGljL1dlYkNTdHJpbmcuaD4K
ICNpbmNsdWRlIDxwdWJsaWMvV2ViQ29tcG9zaXRvck91dHB1dFN1cmZhY2UuaD4KICNpbmNsdWRl
IDxwdWJsaWMvV2ViQ29tcG9zaXRvclN1cHBvcnQuaD4KQEAgLTEwNjksNiArMTA3MSw2MCBAQCB2
b2lkIFdlYlZpZXdIb3N0OjpldmFsdWF0ZUluV2ViSW5zcGVjdG9yKGxvbmcgY2FsbElELCBjb25z
dCBzdGQ6OnN0cmluZyYgc2NyaXB0KQogICAgIG1fc2hlbGwtPmRydERldlRvb2xzQWdlbnQoKS0+
ZXZhbHVhdGVJbldlYkluc3BlY3RvcihjYWxsSUQsIHNjcmlwdCk7CiB9CiAKK3ZvaWQgV2ViVmll
d0hvc3Q6OnNldERldmljZVNjYWxlRmFjdG9yKGZsb2F0IGRldmljZVNjYWxlRmFjdG9yKQorewor
ICAgIHdlYlZpZXcoKS0+c2V0RGV2aWNlU2NhbGVGYWN0b3IoZGV2aWNlU2NhbGVGYWN0b3IpOwor
ICAgIGRpc2NhcmRCYWNraW5nU3RvcmUoKTsKK30KKwordm9pZCBXZWJWaWV3SG9zdDo6c2V0Rm9j
dXMoYm9vbCBmb2N1c2VkKQoreworICAgIG1fc2hlbGwtPnNldEZvY3VzKG1fc2hlbGwtPndlYlZp
ZXcoKSwgZm9jdXNlZCk7Cit9CisKK3ZvaWQgV2ViVmlld0hvc3Q6OnNldEFjY2VwdEFsbENvb2tp
ZXMoYm9vbCBhY2NlcHRDb29raWVzKQoreworICAgIHdlYmtpdF9zdXBwb3J0OjpTZXRBY2NlcHRB
bGxDb29raWVzKGFjY2VwdENvb2tpZXMpOworfQorCitzdHJpbmcgV2ViVmlld0hvc3Q6OnBhdGhU
b0xvY2FsUmVzb3VyY2UoY29uc3Qgc3RyaW5nJiB1cmwpCit7CisjaWYgT1MoV0lORE9XUykKKyAg
ICBpZiAoIXVybC5maW5kKCIvdG1wLyIpKSB7CisgICAgICAgIC8vIFdlIHdhbnQgYSB0ZW1wIGZp
bGUuCisgICAgICAgIGNvbnN0IHVuc2lnbmVkIHRlbXBQcmVmaXhMZW5ndGggPSA1OworICAgICAg
ICBzaXplX3QgYnVmZmVyU2l6ZSA9IE1BWF9QQVRIOworICAgICAgICBPd25BcnJheVB0cjxXQ0hB
Uj4gdGVtcFBhdGggPSBhZG9wdEFycmF5UHRyKG5ldyBXQ0hBUltidWZmZXJTaXplXSk7CisgICAg
ICAgIERXT1JEIHRlbXBMZW5ndGggPSA6OkdldFRlbXBQYXRoVyhidWZmZXJTaXplLCB0ZW1wUGF0
aC5nZXQoKSk7CisgICAgICAgIGlmICh0ZW1wTGVuZ3RoICsgdXJsLmxlbmd0aCgpIC0gdGVtcFBy
ZWZpeExlbmd0aCArIDEgPiBidWZmZXJTaXplKSB7CisgICAgICAgICAgICBidWZmZXJTaXplID0g
dGVtcExlbmd0aCArIHVybC5sZW5ndGgoKSAtIHRlbXBQcmVmaXhMZW5ndGggKyAxOworICAgICAg
ICAgICAgdGVtcFBhdGggPSBhZG9wdEFycmF5UHRyKG5ldyBXQ0hBUltidWZmZXJTaXplXSk7Cisg
ICAgICAgICAgICB0ZW1wTGVuZ3RoID0gR2V0VGVtcFBhdGhXKGJ1ZmZlclNpemUsIHRlbXBQYXRo
LmdldCgpKTsKKyAgICAgICAgICAgIEFTU0VSVCh0ZW1wTGVuZ3RoIDwgYnVmZmVyU2l6ZSk7Cisg
ICAgICAgIH0KKyAgICAgICAgc3RyaW5nIHJlc3VsdFBhdGgoV2ViU3RyaW5nKHRlbXBQYXRoLmdl
dCgpLCB0ZW1wTGVuZ3RoKS51dGY4KCkpOworICAgICAgICByZXN1bHRQYXRoLmFwcGVuZCh1cmwu
c3Vic3RyKHRlbXBQcmVmaXhMZW5ndGgpKTsKKyAgICAgICAgcmV0dXJuIHJlc3VsdFBhdGg7Cisg
ICAgfQorI2VuZGlmCisKKyAgICAvLyBTb21lIGxheW91dCB0ZXN0cyB1c2UgZmlsZTovLy8vIHdo
aWNoIHdlIHJlc29sdmUgYXMgYSBVTkMgcGF0aC4gTm9ybWFsaXplCisgICAgLy8gdGhlbSB0byBq
dXN0IGZpbGU6Ly8vLgorICAgIHN0cmluZyBsb3dlclVybCA9IHVybDsKKyAgICBzdHJpbmcgcmVz
dWx0ID0gdXJsOworICAgIHRyYW5zZm9ybShsb3dlclVybC5iZWdpbigpLCBsb3dlclVybC5lbmQo
KSwgbG93ZXJVcmwuYmVnaW4oKSwgOjp0b2xvd2VyKTsKKyAgICB3aGlsZSAoIWxvd2VyVXJsLmZp
bmQoImZpbGU6Ly8vLyIpKSB7CisgICAgICAgIHJlc3VsdCA9IHJlc3VsdC5zdWJzdHIoMCwgOCkg
KyByZXN1bHQuc3Vic3RyKDkpOworICAgICAgICBsb3dlclVybCA9IGxvd2VyVXJsLnN1YnN0cigw
LCA4KSArIGxvd2VyVXJsLnN1YnN0cig5KTsKKyAgICB9CisgICAgcmV0dXJuIHdlYmtpdF9zdXBw
b3J0OjpSZXdyaXRlTGF5b3V0VGVzdHNVUkwocmVzdWx0KS5zcGVjKCk7Cit9CisKK3ZvaWQgV2Vi
Vmlld0hvc3Q6OnNldExvY2FsZShjb25zdCBzdGQ6OnN0cmluZyYgbG9jYWxlKQoreworICAgIHNl
dGxvY2FsZShMQ19BTEwsIGxvY2FsZS5jX3N0cigpKTsKK30KKwogLy8gUHVibGljIGZ1bmN0aW9u
cyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLQogCiBXZWJWaWV3SG9zdDo6V2ViVmlld0hvc3QoVGVzdFNoZWxsKiBzaGVsbCkKQEAgLTEz
OTIsMTIgKzE0NDgsNiBAQCB2b2lkIFdlYlZpZXdIb3N0OjpzZXRQZW5kaW5nRXh0cmFEYXRhKFBh
c3NPd25QdHI8VGVzdFNoZWxsRXh0cmFEYXRhPiBleHRyYURhdGEpCiAgICAgbV9wZW5kaW5nRXh0
cmFEYXRhID0gZXh0cmFEYXRhOwogfQogCi12b2lkIFdlYlZpZXdIb3N0OjpzZXREZXZpY2VTY2Fs
ZUZhY3RvcihmbG9hdCBkZXZpY2VTY2FsZUZhY3RvcikKLXsKLSAgICB3ZWJWaWV3KCktPnNldERl
dmljZVNjYWxlRmFjdG9yKGRldmljZVNjYWxlRmFjdG9yKTsKLSAgICBkaXNjYXJkQmFja2luZ1N0
b3JlKCk7Ci19Ci0KIHZvaWQgV2ViVmlld0hvc3Q6OnNldFBhZ2VUaXRsZShjb25zdCBXZWJTdHJp
bmcmKQogewogICAgIC8vIE5vdGhpbmcgdG8gZG8gaW4gbGF5b3V0IHRlc3QuCmRpZmYgLS1naXQg
YS9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9XZWJWaWV3SG9zdC5oIGIvVG9vbHMvRHVt
cFJlbmRlclRyZWUvY2hyb21pdW0vV2ViVmlld0hvc3QuaAppbmRleCA5MDQwOTVjM2Y5ODhlNzNh
MDBhOGYyMmM0MmQwYmVjYTM1MWJkMGFkLi42MWZjMWZmZDkwMzYyMTY2NTg1ZWZkYzZkMGNlYWRj
NTIzNWJjMmVmIDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9XZWJW
aWV3SG9zdC5oCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1dlYlZpZXdIb3N0
LmgKQEAgLTk2LDcgKzk2LDYgQEAgY2xhc3MgV2ViVmlld0hvc3QgOiBwdWJsaWMgV2ViS2l0OjpX
ZWJWaWV3Q2xpZW50LCBwdWJsaWMgV2ViS2l0OjpXZWJGcmFtZUNsaWVudCwKICAgICB2b2lkIHNl
dEJsb2NrUmVkaXJlY3RzKGJvb2wgYmxvY2spIHsgbV9ibG9ja3NSZWRpcmVjdHMgPSBibG9jazsg
fQogICAgIHZvaWQgc2V0UmVxdWVzdFJldHVybk51bGwoYm9vbCByZXR1cm5OdWxsKSB7IG1fcmVx
dWVzdFJldHVybk51bGwgPSByZXR1cm5OdWxsOyB9CiAgICAgdm9pZCBzZXRQZW5kaW5nRXh0cmFE
YXRhKFBhc3NPd25QdHI8VGVzdFNoZWxsRXh0cmFEYXRhPik7Ci0gICAgdm9pZCBzZXREZXZpY2VT
Y2FsZUZhY3RvcihmbG9hdCk7CiAKICAgICB2b2lkIHBhaW50UmVjdChjb25zdCBXZWJLaXQ6Oldl
YlJlY3QmKTsKICAgICB2b2lkIHBhaW50SW52YWxpZGF0ZWRSZWdpb24oKTsKQEAgLTE1NCw2ICsx
NTMsMTEgQEAgY2xhc3MgV2ViVmlld0hvc3QgOiBwdWJsaWMgV2ViS2l0OjpXZWJWaWV3Q2xpZW50
LCBwdWJsaWMgV2ViS2l0OjpXZWJGcmFtZUNsaWVudCwKICAgICB2aXJ0dWFsIHZvaWQgc2hvd0Rl
dlRvb2xzKCkgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIGNsb3NlRGV2VG9vbHMoKSBPVkVS
UklERTsKICAgICB2aXJ0dWFsIHZvaWQgZXZhbHVhdGVJbldlYkluc3BlY3Rvcihsb25nLCBjb25z
dCBzdGQ6OnN0cmluZyYpIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBzZXREZXZpY2VTY2Fs
ZUZhY3RvcihmbG9hdCkgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIHNldEZvY3VzKGJvb2wp
IE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBzZXRBY2NlcHRBbGxDb29raWVzKGJvb2wpIE9W
RVJSSURFOworICAgIHZpcnR1YWwgc3RkOjpzdHJpbmcgcGF0aFRvTG9jYWxSZXNvdXJjZShjb25z
dCBzdGQ6OnN0cmluZyYgdXJsKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0TG9jYWxl
KGNvbnN0IHN0ZDo6c3RyaW5nJikgT1ZFUlJJREU7CiAKICAgICAvLyBOYXZpZ2F0aW9uSG9zdAog
ICAgIHZpcnR1YWwgYm9vbCBuYXZpZ2F0ZShjb25zdCBUZXN0TmF2aWdhdGlvbkVudHJ5JiwgYm9v
bCByZWxvYWQpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>182770</attachid>
            <date>2013-01-15 07:41:23 -0800</date>
            <delta_ts>2013-01-15 13:49:29 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-106904-20130115163823.patch</filename>
            <type>text/plain</type>
            <size>25376</size>
            <attacher>jochen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM5NzMyCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggZGIwNjg4Y2Q5MTIzMmIyOGIxNmZjMGY0NzU5YjRmMGZi
MmZiNDgwZC4uY2Q2NzU1ZGE2OWVkY2JkODdhMTMxNmU2MTNmMTA5NGM5MWExZmU5ZCAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQz
IEBACisyMDEzLTAxLTE1ICBKb2NoZW4gRWlzaW5nZXIgIDxqb2NoZW5AY2hyb21pdW0ub3JnPgor
CisgICAgICAgIFtjaHJvbWl1bV0gcm91dGUgbW9yZSB3ZWJraXRfc3VwcG9ydCBhbmQgd2Vidmll
d2hvc3QgY2FsbGJhY2tzIHRocm91Z2ggV2ViVGVzdERlbGVnYXRlCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDY5MDQKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2Nocm9taXVt
L0RSVFRlc3RSdW5uZXIuY3BwOgorICAgICAgICAoRFJUVGVzdFJ1bm5lcjo6RFJUVGVzdFJ1bm5l
cik6CisgICAgICAgIChEUlRUZXN0UnVubmVyOjpub3RpZnlEb25lKToKKyAgICAgICAgKERSVFRl
c3RSdW5uZXI6OnJlc2V0KToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9EUlRU
ZXN0UnVubmVyLmg6CisgICAgICAgIChEUlRUZXN0UnVubmVyKToKKyAgICAgICAgKiBEdW1wUmVu
ZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3B1YmxpYy9XZWJUZXN0RGVsZWdhdGUuaDoKKyAg
ICAgICAgKFdlYlRlc3RSdW5uZXI6OldlYlRlc3REZWxlZ2F0ZTo6c2V0RGV2aWNlU2NhbGVGYWN0
b3IpOgorICAgICAgICAoV2ViVGVzdFJ1bm5lcjo6V2ViVGVzdERlbGVnYXRlOjpzZXRGb2N1cyk6
CisgICAgICAgIChXZWJUZXN0UnVubmVyOjpXZWJUZXN0RGVsZWdhdGU6OnNldEFjY2VwdEFsbENv
b2tpZXMpOgorICAgICAgICAoV2ViVGVzdFJ1bm5lcjo6V2ViVGVzdERlbGVnYXRlOjpwYXRoVG9M
b2NhbFJlc291cmNlKToKKyAgICAgICAgKFdlYlRlc3RSdW5uZXI6OldlYlRlc3REZWxlZ2F0ZTo6
c2V0TG9jYWxlKToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVy
L3NyYy9UZXN0UnVubmVyLmNwcDoKKyAgICAgICAgKFdlYlRlc3RSdW5uZXI6OlRlc3RSdW5uZXI6
OlRlc3RSdW5uZXIpOgorICAgICAgICAoV2ViVGVzdFJ1bm5lcjo6VGVzdFJ1bm5lcjo6cmVzZXQp
OgorICAgICAgICAoV2ViVGVzdFJ1bm5lcjo6VGVzdFJ1bm5lcjo6c2V0QWx3YXlzQWNjZXB0Q29v
a2llcyk6CisgICAgICAgIChXZWJUZXN0UnVubmVyKToKKyAgICAgICAgKFdlYlRlc3RSdW5uZXI6
OlRlc3RSdW5uZXI6OnNldFdpbmRvd0lzS2V5KToKKyAgICAgICAgKFdlYlRlc3RSdW5uZXI6OlRl
c3RSdW5uZXI6OnBhdGhUb0xvY2FsUmVzb3VyY2UpOgorICAgICAgICAoV2ViVGVzdFJ1bm5lcjo6
VGVzdFJ1bm5lcjo6c2V0QmFja2luZ1NjYWxlRmFjdG9yKToKKyAgICAgICAgKFdlYlRlc3RSdW5u
ZXI6OlRlc3RSdW5uZXI6OnNldFBPU0lYTG9jYWxlKToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJl
ZS9jaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9UZXN0UnVubmVyLmg6CisgICAgICAgIChXZWJUZXN0
UnVubmVyOjpUZXN0UnVubmVyOjp0YXNrTGlzdCk6CisgICAgICAgIChUZXN0UnVubmVyKToKKyAg
ICAgICAgKiBEdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9XZWJWaWV3SG9zdC5jcHA6CisgICAgICAg
IChXZWJWaWV3SG9zdDo6c2V0RGV2aWNlU2NhbGVGYWN0b3IpOgorICAgICAgICAoV2ViVmlld0hv
c3Q6OnNldEZvY3VzKToKKyAgICAgICAgKFdlYlZpZXdIb3N0OjpzZXRBY2NlcHRBbGxDb29raWVz
KToKKyAgICAgICAgKFdlYlZpZXdIb3N0OjpwYXRoVG9Mb2NhbFJlc291cmNlKToKKyAgICAgICAg
KFdlYlZpZXdIb3N0OjpzZXRMb2NhbGUpOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2Nocm9t
aXVtL1dlYlZpZXdIb3N0Lmg6CisgICAgICAgIChXZWJWaWV3SG9zdCk6CisKIDIwMTMtMDEtMTUg
IEFuZHJhcyBCZWNzaSAgPGFuZHJhcy5iZWNzaUBkaWdpYS5jb20+CiAKICAgICAgICAgW1F0XSBG
aXggSW1hZ2VEaWZmJ3MgaW1hZ2UgZm9ybWF0IGNvbnZlcnNpb24KZGlmZiAtLWdpdCBhL1Rvb2xz
L0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL0RSVFRlc3RSdW5uZXIuY3BwIGIvVG9vbHMvRHVtcFJl
bmRlclRyZWUvY2hyb21pdW0vRFJUVGVzdFJ1bm5lci5jcHAKaW5kZXggM2YwNjQ2OWEyZDdiYWUy
NGNhOGM5OTRkNzE1MWM0YzQzMjFlNGJkNi4uNTFhZWRmOGRjNWZhY2Q5MzBmYzE2YjI4MzMzMmRl
MGMxYzQ0ZjdkMSAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vRFJU
VGVzdFJ1bm5lci5jcHAKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vRFJUVGVz
dFJ1bm5lci5jcHAKQEAgLTY4LDcgKzY4LDYgQEAKICNpbmNsdWRlICJ3ZWJraXQvc3VwcG9ydC93
ZWJraXRfc3VwcG9ydC5oIgogI2luY2x1ZGUgPGFsZ29yaXRobT4KICNpbmNsdWRlIDxjY3R5cGU+
Ci0jaW5jbHVkZSA8Y2xvY2FsZT4KICNpbmNsdWRlIDxjc3RkbGliPgogI2luY2x1ZGUgPGxpbWl0
cz4KICNpbmNsdWRlIDxzc3RyZWFtPgpAQCAtMTE3LDcgKzExNiw2IEBAIERSVFRlc3RSdW5uZXI6
OkRSVFRlc3RSdW5uZXIoVGVzdFNoZWxsKiBzaGVsbCkKICNlbmRpZgogICAgIGJpbmRNZXRob2Qo
Im5vdGlmeURvbmUiLCAmRFJUVGVzdFJ1bm5lcjo6bm90aWZ5RG9uZSk7CiAgICAgYmluZE1ldGhv
ZCgibnVtYmVyT2ZQZW5kaW5nR2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdHMiLCAmRFJUVGVz
dFJ1bm5lcjo6IG51bWJlck9mUGVuZGluZ0dlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3RzKTsK
LSAgICBiaW5kTWV0aG9kKCJwYXRoVG9Mb2NhbFJlc291cmNlIiwgJkRSVFRlc3RSdW5uZXI6OnBh
dGhUb0xvY2FsUmVzb3VyY2UpOwogICAgIGJpbmRNZXRob2QoInF1ZXVlQmFja05hdmlnYXRpb24i
LCAmRFJUVGVzdFJ1bm5lcjo6cXVldWVCYWNrTmF2aWdhdGlvbik7CiAgICAgYmluZE1ldGhvZCgi
cXVldWVGb3J3YXJkTmF2aWdhdGlvbiIsICZEUlRUZXN0UnVubmVyOjpxdWV1ZUZvcndhcmROYXZp
Z2F0aW9uKTsKICAgICBiaW5kTWV0aG9kKCJxdWV1ZUxvYWRpbmdTY3JpcHQiLCAmRFJUVGVzdFJ1
bm5lcjo6cXVldWVMb2FkaW5nU2NyaXB0KTsKQEAgLTEyNSw3ICsxMjMsNiBAQCBEUlRUZXN0UnVu
bmVyOjpEUlRUZXN0UnVubmVyKFRlc3RTaGVsbCogc2hlbGwpCiAgICAgYmluZE1ldGhvZCgicXVl
dWVMb2FkSFRNTFN0cmluZyIsICZEUlRUZXN0UnVubmVyOjpxdWV1ZUxvYWRIVE1MU3RyaW5nKTsK
ICAgICBiaW5kTWV0aG9kKCJxdWV1ZU5vbkxvYWRpbmdTY3JpcHQiLCAmRFJUVGVzdFJ1bm5lcjo6
cXVldWVOb25Mb2FkaW5nU2NyaXB0KTsKICAgICBiaW5kTWV0aG9kKCJxdWV1ZVJlbG9hZCIsICZE
UlRUZXN0UnVubmVyOjpxdWV1ZVJlbG9hZCk7Ci0gICAgYmluZE1ldGhvZCgic2V0QWx3YXlzQWNj
ZXB0Q29va2llcyIsICZEUlRUZXN0UnVubmVyOjpzZXRBbHdheXNBY2NlcHRDb29raWVzKTsKICAg
ICBiaW5kTWV0aG9kKCJzZXRDbG9zZVJlbWFpbmluZ1dpbmRvd3NXaGVuQ29tcGxldGUiLCAmRFJU
VGVzdFJ1bm5lcjo6c2V0Q2xvc2VSZW1haW5pbmdXaW5kb3dzV2hlbkNvbXBsZXRlKTsKICAgICBi
aW5kTWV0aG9kKCJzZXRDdXN0b21Qb2xpY3lEZWxlZ2F0ZSIsICZEUlRUZXN0UnVubmVyOjpzZXRD
dXN0b21Qb2xpY3lEZWxlZ2F0ZSk7CiAgICAgYmluZE1ldGhvZCgic2V0RGF0YWJhc2VRdW90YSIs
ICZEUlRUZXN0UnVubmVyOjpzZXREYXRhYmFzZVF1b3RhKTsKQEAgLTEzNywxMiArMTM0LDkgQEAg
RFJUVGVzdFJ1bm5lcjo6RFJUVGVzdFJ1bm5lcihUZXN0U2hlbGwqIHNoZWxsKQogICAgIGJpbmRN
ZXRob2QoInNldFBvaW50ZXJMb2NrV2lsbFJlc3BvbmRBc3luY2hyb25vdXNseSIsICZEUlRUZXN0
UnVubmVyOjpzZXRQb2ludGVyTG9ja1dpbGxSZXNwb25kQXN5bmNocm9ub3VzbHkpOwogICAgIGJp
bmRNZXRob2QoInNldFBvaW50ZXJMb2NrV2lsbEZhaWxTeW5jaHJvbm91c2x5IiwgJkRSVFRlc3RS
dW5uZXI6OnNldFBvaW50ZXJMb2NrV2lsbEZhaWxTeW5jaHJvbm91c2x5KTsKICNlbmRpZgotICAg
IGJpbmRNZXRob2QoInNldFBPU0lYTG9jYWxlIiwgJkRSVFRlc3RSdW5uZXI6OnNldFBPU0lYTG9j
YWxlKTsKLSAgICBiaW5kTWV0aG9kKCJzZXRCYWNraW5nU2NhbGVGYWN0b3IiLCAmRFJUVGVzdFJ1
bm5lcjo6c2V0QmFja2luZ1NjYWxlRmFjdG9yKTsKICAgICBiaW5kTWV0aG9kKCJzZXRXaWxsU2Vu
ZFJlcXVlc3RDbGVhckhlYWRlciIsICZEUlRUZXN0UnVubmVyOjpzZXRXaWxsU2VuZFJlcXVlc3RD
bGVhckhlYWRlcik7CiAgICAgYmluZE1ldGhvZCgic2V0V2lsbFNlbmRSZXF1ZXN0UmV0dXJuc051
bGwiLCAmRFJUVGVzdFJ1bm5lcjo6c2V0V2lsbFNlbmRSZXF1ZXN0UmV0dXJuc051bGwpOwogICAg
IGJpbmRNZXRob2QoInNldFdpbGxTZW5kUmVxdWVzdFJldHVybnNOdWxsT25SZWRpcmVjdCIsICZE
UlRUZXN0UnVubmVyOjpzZXRXaWxsU2VuZFJlcXVlc3RSZXR1cm5zTnVsbE9uUmVkaXJlY3QpOwot
ICAgIGJpbmRNZXRob2QoInNldFdpbmRvd0lzS2V5IiwgJkRSVFRlc3RSdW5uZXI6OnNldFdpbmRv
d0lzS2V5KTsKICNpZiBFTkFCTEUoTk9USUZJQ0FUSU9OUykKICAgICBiaW5kTWV0aG9kKCJzaW11
bGF0ZUxlZ2FjeVdlYk5vdGlmaWNhdGlvbkNsaWNrIiwgJkRSVFRlc3RSdW5uZXI6OnNpbXVsYXRl
TGVnYWN5V2ViTm90aWZpY2F0aW9uQ2xpY2spOwogI2VuZGlmCkBAIC0yMjEsNyArMjE1LDcgQEAg
dm9pZCBEUlRUZXN0UnVubmVyOjp3YWl0VW50aWxEb25lKGNvbnN0IENwcEFyZ3VtZW50TGlzdCYs
IENwcFZhcmlhbnQqIHJlc3VsdCkKIHZvaWQgRFJUVGVzdFJ1bm5lcjo6bm90aWZ5RG9uZShjb25z
dCBDcHBBcmd1bWVudExpc3QmLCBDcHBWYXJpYW50KiByZXN1bHQpCiB7CiAgICAgLy8gVGVzdCBk
aWRuJ3QgdGltZW91dC4gS2lsbCB0aGUgdGltZW91dCB0aW1lci4KLSAgICBtX3Rhc2tMaXN0LnJl
dm9rZUFsbCgpOworICAgIHRhc2tMaXN0KCktPnJldm9rZUFsbCgpOwogCiAgICAgY29tcGxldGVO
b3RpZnlEb25lKGZhbHNlKTsKICAgICByZXN1bHQtPnNldE51bGwoKTsKQEAgLTM5MiwyNiArMzg2
LDE5IEBAIHZvaWQgRFJUVGVzdFJ1bm5lcjo6cXVldWVMb2FkSFRNTFN0cmluZyhjb25zdCBDcHBB
cmd1bWVudExpc3QmIGFyZ3VtZW50cywgQ3BwVmFyCiB2b2lkIERSVFRlc3RSdW5uZXI6OnJlc2V0
KCkKIHsKICAgICBUZXN0UnVubmVyOjpyZXNldCgpOwotICAgIGlmIChtX3NoZWxsKQotICAgICAg
ICBtX3NoZWxsLT53ZWJWaWV3SG9zdCgpLT5zZXREZXZpY2VTY2FsZUZhY3RvcigxKTsKICAgICBt
X3dhaXRVbnRpbERvbmUgPSBmYWxzZTsKICAgICBtX3dlYkhpc3RvcnlJdGVtQ291bnQuc2V0KDAp
OwogICAgIG1fdGl0bGVUZXh0RGlyZWN0aW9uLnNldCgibHRyIik7CiAgICAgbV9pbnRlcmNlcHRQ
b3N0TWVzc2FnZS5zZXQoZmFsc2UpOwogCi0gICAgd2Via2l0X3N1cHBvcnQ6OlNldEFjY2VwdEFs
bENvb2tpZXMoZmFsc2UpOwotCiAgICAgLy8gUmVzZXQgdGhlIGRlZmF1bHQgcXVvdGEgZm9yIGVh
Y2ggb3JpZ2luIHRvIDVNQgogICAgIHdlYmtpdF9zdXBwb3J0OjpTZXREYXRhYmFzZVF1b3RhKDUg
KiAxMDI0ICogMTAyNCk7CiAKLSAgICBzZXRsb2NhbGUoTENfQUxMLCAiIik7Ci0KICAgICBpZiAo
bV9jbG9zZVJlbWFpbmluZ1dpbmRvd3MpCiAgICAgICAgIG1fc2hlbGwtPmNsb3NlUmVtYWluaW5n
V2luZG93cygpOwogICAgIGVsc2UKICAgICAgICAgbV9jbG9zZVJlbWFpbmluZ1dpbmRvd3MgPSB0
cnVlOwogICAgIG1fd29ya1F1ZXVlLnJlc2V0KCk7Ci0gICAgbV90YXNrTGlzdC5yZXZva2VBbGwo
KTsKIH0KIAogdm9pZCBEUlRUZXN0UnVubmVyOjpsb2NhdGlvbkNoYW5nZURvbmUoKQpAQCAtNDQ0
LDIwICs0MzEsNiBAQCB2b2lkIERSVFRlc3RSdW5uZXI6OnNldENsb3NlUmVtYWluaW5nV2luZG93
c1doZW5Db21wbGV0ZShjb25zdCBDcHBBcmd1bWVudExpc3QmCiAgICAgcmVzdWx0LT5zZXROdWxs
KCk7CiB9CiAKLXZvaWQgRFJUVGVzdFJ1bm5lcjo6c2V0QWx3YXlzQWNjZXB0Q29va2llcyhjb25z
dCBDcHBBcmd1bWVudExpc3QmIGFyZ3VtZW50cywgQ3BwVmFyaWFudCogcmVzdWx0KQotewotICAg
IGlmIChhcmd1bWVudHMuc2l6ZSgpID4gMCkKLSAgICAgICAgd2Via2l0X3N1cHBvcnQ6OlNldEFj
Y2VwdEFsbENvb2tpZXMoY3BwVmFyaWFudFRvQm9vbChhcmd1bWVudHNbMF0pKTsKLSAgICByZXN1
bHQtPnNldE51bGwoKTsKLX0KLQotdm9pZCBEUlRUZXN0UnVubmVyOjpzZXRXaW5kb3dJc0tleShj
b25zdCBDcHBBcmd1bWVudExpc3QmIGFyZ3VtZW50cywgQ3BwVmFyaWFudCogcmVzdWx0KQotewot
ICAgIGlmIChhcmd1bWVudHMuc2l6ZSgpID4gMCAmJiBhcmd1bWVudHNbMF0uaXNCb29sKCkpCi0g
ICAgICAgIG1fc2hlbGwtPnNldEZvY3VzKG1fc2hlbGwtPndlYlZpZXcoKSwgYXJndW1lbnRzWzBd
LnZhbHVlLmJvb2xWYWx1ZSk7Ci0gICAgcmVzdWx0LT5zZXROdWxsKCk7Ci19Ci0KIHZvaWQgRFJU
VGVzdFJ1bm5lcjo6c2V0Q3VzdG9tUG9saWN5RGVsZWdhdGUoY29uc3QgQ3BwQXJndW1lbnRMaXN0
JiBhcmd1bWVudHMsIENwcFZhcmlhbnQqIHJlc3VsdCkKIHsKICAgICBpZiAoYXJndW1lbnRzLnNp
emUoKSA+IDAgJiYgYXJndW1lbnRzWzBdLmlzQm9vbCgpKSB7CkBAIC01MDEsNDQgKzQ3NCw2IEBA
IHZvaWQgRFJUVGVzdFJ1bm5lcjo6c2V0V2lsbFNlbmRSZXF1ZXN0UmV0dXJuc051bGwoY29uc3Qg
Q3BwQXJndW1lbnRMaXN0JiBhcmd1bWVuCiAgICAgcmVzdWx0LT5zZXROdWxsKCk7CiB9CiAKLXZv
aWQgRFJUVGVzdFJ1bm5lcjo6cGF0aFRvTG9jYWxSZXNvdXJjZShjb25zdCBDcHBBcmd1bWVudExp
c3QmIGFyZ3VtZW50cywgQ3BwVmFyaWFudCogcmVzdWx0KQotewotICAgIHJlc3VsdC0+c2V0TnVs
bCgpOwotICAgIGlmIChhcmd1bWVudHMuc2l6ZSgpIDw9IDAgfHwgIWFyZ3VtZW50c1swXS5pc1N0
cmluZygpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBzdHJpbmcgdXJsID0gYXJndW1lbnRzWzBd
LnRvU3RyaW5nKCk7Ci0jaWYgT1MoV0lORE9XUykKLSAgICBpZiAoIXVybC5maW5kKCIvdG1wLyIp
KSB7Ci0gICAgICAgIC8vIFdlIHdhbnQgYSB0ZW1wIGZpbGUuCi0gICAgICAgIGNvbnN0IHVuc2ln
bmVkIHRlbXBQcmVmaXhMZW5ndGggPSA1OwotICAgICAgICBzaXplX3QgYnVmZmVyU2l6ZSA9IE1B
WF9QQVRIOwotICAgICAgICBPd25BcnJheVB0cjxXQ0hBUj4gdGVtcFBhdGggPSBhZG9wdEFycmF5
UHRyKG5ldyBXQ0hBUltidWZmZXJTaXplXSk7Ci0gICAgICAgIERXT1JEIHRlbXBMZW5ndGggPSA6
OkdldFRlbXBQYXRoVyhidWZmZXJTaXplLCB0ZW1wUGF0aC5nZXQoKSk7Ci0gICAgICAgIGlmICh0
ZW1wTGVuZ3RoICsgdXJsLmxlbmd0aCgpIC0gdGVtcFByZWZpeExlbmd0aCArIDEgPiBidWZmZXJT
aXplKSB7Ci0gICAgICAgICAgICBidWZmZXJTaXplID0gdGVtcExlbmd0aCArIHVybC5sZW5ndGgo
KSAtIHRlbXBQcmVmaXhMZW5ndGggKyAxOwotICAgICAgICAgICAgdGVtcFBhdGggPSBhZG9wdEFy
cmF5UHRyKG5ldyBXQ0hBUltidWZmZXJTaXplXSk7Ci0gICAgICAgICAgICB0ZW1wTGVuZ3RoID0g
R2V0VGVtcFBhdGhXKGJ1ZmZlclNpemUsIHRlbXBQYXRoLmdldCgpKTsKLSAgICAgICAgICAgIEFT
U0VSVCh0ZW1wTGVuZ3RoIDwgYnVmZmVyU2l6ZSk7Ci0gICAgICAgIH0KLSAgICAgICAgc3RyaW5n
IHJlc3VsdFBhdGgoV2ViU3RyaW5nKHRlbXBQYXRoLmdldCgpLCB0ZW1wTGVuZ3RoKS51dGY4KCkp
OwotICAgICAgICByZXN1bHRQYXRoLmFwcGVuZCh1cmwuc3Vic3RyKHRlbXBQcmVmaXhMZW5ndGgp
KTsKLSAgICAgICAgcmVzdWx0LT5zZXQocmVzdWx0UGF0aCk7Ci0gICAgICAgIHJldHVybjsKLSAg
ICB9Ci0jZW5kaWYKLQotICAgIC8vIFNvbWUgbGF5b3V0IHRlc3RzIHVzZSBmaWxlOi8vLy8gd2hp
Y2ggd2UgcmVzb2x2ZSBhcyBhIFVOQyBwYXRoLiBOb3JtYWxpemUKLSAgICAvLyB0aGVtIHRvIGp1
c3QgZmlsZTovLy8uCi0gICAgc3RyaW5nIGxvd2VyVXJsID0gdXJsOwotICAgIHRyYW5zZm9ybShs
b3dlclVybC5iZWdpbigpLCBsb3dlclVybC5lbmQoKSwgbG93ZXJVcmwuYmVnaW4oKSwgOjp0b2xv
d2VyKTsKLSAgICB3aGlsZSAoIWxvd2VyVXJsLmZpbmQoImZpbGU6Ly8vLyIpKSB7Ci0gICAgICAg
IHVybCA9IHVybC5zdWJzdHIoMCwgOCkgKyB1cmwuc3Vic3RyKDkpOwotICAgICAgICBsb3dlclVy
bCA9IGxvd2VyVXJsLnN1YnN0cigwLCA4KSArIGxvd2VyVXJsLnN1YnN0cig5KTsKLSAgICB9Ci0g
ICAgcmVzdWx0LT5zZXQod2Via2l0X3N1cHBvcnQ6OlJld3JpdGVMYXlvdXRUZXN0c1VSTCh1cmwp
LnNwZWMoKSk7Ci19Ci0KIAogI2lmIEVOQUJMRShOT1RJRklDQVRJT05TKQogdm9pZCBEUlRUZXN0
UnVubmVyOjpncmFudFdlYk5vdGlmaWNhdGlvblBlcm1pc3Npb24oY29uc3QgQ3BwQXJndW1lbnRM
aXN0JiBhcmd1bWVudHMsIENwcFZhcmlhbnQqIHJlc3VsdCkKQEAgLTYwMCwxMyArNTM1LDYgQEAg
dm9pZCBEUlRUZXN0UnVubmVyOjpzZXREYXRhYmFzZVF1b3RhKGNvbnN0IENwcEFyZ3VtZW50TGlz
dCYgYXJndW1lbnRzLCBDcHBWYXJpYW4KICAgICAgICAgd2Via2l0X3N1cHBvcnQ6OlNldERhdGFi
YXNlUXVvdGEoYXJndW1lbnRzWzBdLnRvSW50MzIoKSk7CiB9CiAKLXZvaWQgRFJUVGVzdFJ1bm5l
cjo6c2V0UE9TSVhMb2NhbGUoY29uc3QgQ3BwQXJndW1lbnRMaXN0JiBhcmd1bWVudHMsIENwcFZh
cmlhbnQqIHJlc3VsdCkKLXsKLSAgICByZXN1bHQtPnNldE51bGwoKTsKLSAgICBpZiAoYXJndW1l
bnRzLnNpemUoKSA9PSAxICYmIGFyZ3VtZW50c1swXS5pc1N0cmluZygpKQotICAgICAgICBzZXRs
b2NhbGUoTENfQUxMLCBhcmd1bWVudHNbMF0udG9TdHJpbmcoKS5jX3N0cigpKTsKLX0KLQogdm9p
ZCBEUlRUZXN0UnVubmVyOjpudW1iZXJPZlBlbmRpbmdHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1
ZXN0cyhjb25zdCBDcHBBcmd1bWVudExpc3QmIGFyZ3VtZW50cywgQ3BwVmFyaWFudCogcmVzdWx0
KQogewogICAgIHJlc3VsdC0+c2V0TnVsbCgpOwpAQCAtNzIyLDQwICs2NTAsNiBAQCB2b2lkIERS
VFRlc3RSdW5uZXI6Ondhc01vY2tTcGVlY2hSZWNvZ25pdGlvbkFib3J0ZWQoY29uc3QgQ3BwQXJn
dW1lbnRMaXN0JiwgQ3BwVgogfQogI2VuZGlmCiAKLWNsYXNzIEludm9rZUNhbGxiYWNrVGFzayA6
IHB1YmxpYyBXZWJNZXRob2RUYXNrPERSVFRlc3RSdW5uZXI+IHsKLXB1YmxpYzoKLSAgICBJbnZv
a2VDYWxsYmFja1Rhc2soRFJUVGVzdFJ1bm5lciogb2JqZWN0LCBQYXNzT3duQXJyYXlQdHI8Q3Bw
VmFyaWFudD4gY2FsbGJhY2tBcmd1bWVudHMsIHVpbnQzMl90IG51bWJlck9mQXJndW1lbnRzKQot
ICAgICAgICA6IFdlYk1ldGhvZFRhc2s8RFJUVGVzdFJ1bm5lcj4ob2JqZWN0KQotICAgICAgICAs
IG1fY2FsbGJhY2tBcmd1bWVudHMoY2FsbGJhY2tBcmd1bWVudHMpCi0gICAgICAgICwgbV9udW1i
ZXJPZkFyZ3VtZW50cyhudW1iZXJPZkFyZ3VtZW50cykKLSAgICB7Ci0gICAgfQotCi0gICAgdmly
dHVhbCB2b2lkIHJ1bklmVmFsaWQoKQotICAgIHsKLSAgICAgICAgQ3BwVmFyaWFudCBpbnZva2VS
ZXN1bHQ7Ci0gICAgICAgIG1fY2FsbGJhY2tBcmd1bWVudHNbMF0uaW52b2tlRGVmYXVsdChtX2Nh
bGxiYWNrQXJndW1lbnRzLmdldCgpLCBtX251bWJlck9mQXJndW1lbnRzLCBpbnZva2VSZXN1bHQp
OwotICAgIH0KLQotcHJpdmF0ZToKLSAgICBPd25BcnJheVB0cjxDcHBWYXJpYW50PiBtX2NhbGxi
YWNrQXJndW1lbnRzOwotICAgIHVpbnQzMl90IG1fbnVtYmVyT2ZBcmd1bWVudHM7Ci19OwotCi12
b2lkIERSVFRlc3RSdW5uZXI6OnNldEJhY2tpbmdTY2FsZUZhY3Rvcihjb25zdCBDcHBBcmd1bWVu
dExpc3QmIGFyZ3VtZW50cywgQ3BwVmFyaWFudCogcmVzdWx0KQotewotICAgIGlmIChhcmd1bWVu
dHMuc2l6ZSgpIDwgMiB8fCAhYXJndW1lbnRzWzBdLmlzTnVtYmVyKCkgfHwgIWFyZ3VtZW50c1sx
XS5pc09iamVjdCgpKQotICAgICAgICByZXR1cm47Ci0gICAgCi0gICAgZmxvYXQgdmFsdWUgPSBh
cmd1bWVudHNbMF0udmFsdWUuZG91YmxlVmFsdWU7Ci0gICAgbV9zaGVsbC0+d2ViVmlld0hvc3Qo
KS0+c2V0RGV2aWNlU2NhbGVGYWN0b3IodmFsdWUpOwotCi0gICAgT3duQXJyYXlQdHI8Q3BwVmFy
aWFudD4gY2FsbGJhY2tBcmd1bWVudHMgPSBhZG9wdEFycmF5UHRyKG5ldyBDcHBWYXJpYW50WzFd
KTsKLSAgICBjYWxsYmFja0FyZ3VtZW50c1swXS5zZXQoYXJndW1lbnRzWzFdKTsKLSAgICByZXN1
bHQtPnNldE51bGwoKTsKLSAgICBwb3N0VGFzayhuZXcgSW52b2tlQ2FsbGJhY2tUYXNrKHRoaXMs
IGNhbGxiYWNrQXJndW1lbnRzLnJlbGVhc2UoKSwgMSkpOwotfQotCiAjaWYgRU5BQkxFKFBPSU5U
RVJfTE9DSykKIHZvaWQgRFJUVGVzdFJ1bm5lcjo6ZGlkQWNxdWlyZVBvaW50ZXJMb2NrKGNvbnN0
IENwcEFyZ3VtZW50TGlzdCYsIENwcFZhcmlhbnQqIHJlc3VsdCkKIHsKZGlmZiAtLWdpdCBhL1Rv
b2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL0RSVFRlc3RSdW5uZXIuaCBiL1Rvb2xzL0R1bXBS
ZW5kZXJUcmVlL2Nocm9taXVtL0RSVFRlc3RSdW5uZXIuaAppbmRleCBlYzYyNGFhM2E4N2RjZGRm
ZGZjZjdiNzUzNjZlNDNjYzUyMzdmNjBmLi5hMWQzOGZhNDRmMzg5MDgyZWFmOTA3NWVmMTliZmVk
Njk0MjU3OTM1IDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9EUlRU
ZXN0UnVubmVyLmgKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vRFJUVGVzdFJ1
bm5lci5oCkBAIC05NCwxMiArOTQsNiBAQCBwdWJsaWM6CiAgICAgdm9pZCBxdWV1ZUxvYWQoY29u
c3QgQ3BwQXJndW1lbnRMaXN0JiwgQ3BwVmFyaWFudCopOwogICAgIHZvaWQgcXVldWVMb2FkSFRN
TFN0cmluZyhjb25zdCBDcHBBcmd1bWVudExpc3QmLCBDcHBWYXJpYW50Kik7CiAKLSAgICAvLyBD
aGFuZ2VzIHRoZSBjb29raWUgcG9saWN5IGZyb20gdGhlIGRlZmF1bHQgdG8gYWxsb3cgYWxsIGNv
b2tpZXMuCi0gICAgdm9pZCBzZXRBbHdheXNBY2NlcHRDb29raWVzKGNvbnN0IENwcEFyZ3VtZW50
TGlzdCYsIENwcFZhcmlhbnQqKTsKLQotICAgIC8vIEdpdmVzIGZvY3VzIHRvIHRoZSB3aW5kb3cu
Ci0gICAgdm9pZCBzZXRXaW5kb3dJc0tleShjb25zdCBDcHBBcmd1bWVudExpc3QmLCBDcHBWYXJp
YW50Kik7Ci0KIAogICAgIC8vIENhdXNlcyBuYXZpZ2F0aW9uIGFjdGlvbnMganVzdCBwcmludG91
dCB0aGUgaW50ZW5kZWQgbmF2aWdhdGlvbiBpbnN0ZWFkCiAgICAgLy8gb2YgdGFraW5nIHlvdSB0
byB0aGUgcGFnZS4gVGhpcyBpcyB1c2VkIGZvciBjYXNlcyBsaWtlIG1haWx0bywgd2hlcmUgeW91
CkBAIC0xMTgsOSArMTEyLDYgQEAgcHVibGljOgogICAgIC8vIENhdXNlcyBXaWxsU2VuZFJlcXVl
c3QgdG8gcmV0dXJuIGFuIGVtcHR5IHJlcXVlc3QuCiAgICAgdm9pZCBzZXRXaWxsU2VuZFJlcXVl
c3RSZXR1cm5zTnVsbChjb25zdCBDcHBBcmd1bWVudExpc3QmLCBDcHBWYXJpYW50Kik7CiAKLSAg
ICAvLyBDb252ZXJ0cyBhIFVSTCBzdGFydGluZyB3aXRoIGZpbGU6Ly8vdG1wLyB0byB0aGUgbG9j
YWwgbWFwcGluZy4KLSAgICB2b2lkIHBhdGhUb0xvY2FsUmVzb3VyY2UoY29uc3QgQ3BwQXJndW1l
bnRMaXN0JiwgQ3BwVmFyaWFudCopOwotCiAjaWYgRU5BQkxFKE5PVElGSUNBVElPTlMpCiAgICAg
Ly8gR3JhbnRzIHBlcm1pc3Npb24gZm9yIGRlc2t0b3Agbm90aWZpY2F0aW9ucyB0byBhbiBvcmln
aW4KICAgICB2b2lkIGdyYW50V2ViTm90aWZpY2F0aW9uUGVybWlzc2lvbihjb25zdCBDcHBBcmd1
bWVudExpc3QmLCBDcHBWYXJpYW50Kik7CkBAIC0xMzYsMTAgKzEyNyw2IEBAIHB1YmxpYzoKICAg
ICAvLyBTZXRzIHRoZSBkZWZhdWx0IHF1b3RhIGZvciBhbGwgb3JpZ2lucwogICAgIHZvaWQgc2V0
RGF0YWJhc2VRdW90YShjb25zdCBDcHBBcmd1bWVudExpc3QmLCBDcHBWYXJpYW50Kik7CiAKLSAg
ICAvLyBDYWxscyBzZXRsb2NhbGUoTENfQUxMLCAuLi4pIGZvciBhIHNwZWNpZmllZCBsb2NhbGUu
Ci0gICAgLy8gUmVzZXRzIGJldHdlZW4gdGVzdHMuCi0gICAgdm9pZCBzZXRQT1NJWExvY2FsZShj
b25zdCBDcHBBcmd1bWVudExpc3QmLCBDcHBWYXJpYW50Kik7Ci0KICAgICAvLyBHZXRzIHRoZSBu
dW1iZXIgb2YgZ2VvbG9jYXRpb24gcGVybWlzc2lvbnMgcmVxdWVzdHMgcGVuZGluZy4KICAgICB2
b2lkIG51bWJlck9mUGVuZGluZ0dlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3RzKGNvbnN0IENw
cEFyZ3VtZW50TGlzdCYsIENwcFZhcmlhbnQqKTsKIApAQCAtMTcwLDkgKzE1Nyw2IEBAIHB1Ymxp
YzoKICAgICB2b2lkIHNldFBvaW50ZXJMb2NrV2lsbFJlc3BvbmRBc3luY2hyb25vdXNseShjb25z
dCBDcHBBcmd1bWVudExpc3QmLCBDcHBWYXJpYW50Kik7CiAjZW5kaWYKIAotICAgIC8vIFVzZWQg
dG8gc2V0IHRoZSBkZXZpY2Ugc2NhbGUgZmFjdG9yLgotICAgIHZvaWQgc2V0QmFja2luZ1NjYWxl
RmFjdG9yKGNvbnN0IENwcEFyZ3VtZW50TGlzdCYsIENwcFZhcmlhbnQqKTsKLQogcHVibGljOgog
ICAgIC8vIFRoZSBmb2xsb3dpbmcgbWV0aG9kcyBhcmUgbm90IGV4cG9zZWQgdG8gSmF2YVNjcmlw
dC4KICAgICB2b2lkIHNldFdvcmtRdWV1ZUZyb3plbihib29sIGZyb3plbikgeyBtX3dvcmtRdWV1
ZS5zZXRGcm96ZW4oZnJvemVuKTsgfQpAQCAtMjA4LDggKzE5Miw2IEBAIHB1YmxpYzoKICAgICAg
ICAgdmlydHVhbCBib29sIHJ1bihUZXN0U2hlbGwqKSA9IDA7CiAgICAgfTsKIAotICAgIFdlYlRh
c2tMaXN0KiB0YXNrTGlzdCgpIHsgcmV0dXJuICZtX3Rhc2tMaXN0OyB9Ci0KIHByaXZhdGU6CiAg
ICAgZnJpZW5kIGNsYXNzIFdvcmtJdGVtOwogICAgIGZyaWVuZCBjbGFzcyBXb3JrUXVldWU7CkBA
IC0yNTEsOSArMjMzLDYgQEAgcHJpdmF0ZToKICAgICAgICAgdmlydHVhbCB2b2lkIHJ1bklmVmFs
aWQoKSB7IG1fb2JqZWN0LT5jb21wbGV0ZU5vdGlmeURvbmUodHJ1ZSk7IH0KICAgICB9OwogCi0g
ICAgLy8gVXNlZCBmb3IgdGVzdCB0aW1lb3V0cy4KLSAgICBXZWJUYXNrTGlzdCBtX3Rhc2tMaXN0
OwotCiAgICAgLy8gTm9uLW93bmluZyBwb2ludGVyLiBUaGUgRFJUVGVzdFJ1bm5lciBpcyBvd25l
ZCBieSB0aGUgaG9zdC4KICAgICBUZXN0U2hlbGwqIG1fc2hlbGw7CiAKZGlmZiAtLWdpdCBhL1Rv
b2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvcHVibGljL1dlYlRlc3REZWxl
Z2F0ZS5oIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9wdWJsaWMv
V2ViVGVzdERlbGVnYXRlLmgKaW5kZXggZGE4NDVlNTMzZGEwNjA0ZmUwYmVkZjIyNWRjMGZlYmZl
YTViM2ViZC4uMDkwNDYxMmNmNTJmMjY0ZmE5NGM0NWU4MjY4YzFiNDhmNjA4YTE2YiAxMDA2NDQK
LS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9wdWJsaWMvV2Vi
VGVzdERlbGVnYXRlLmgKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1
bm5lci9wdWJsaWMvV2ViVGVzdERlbGVnYXRlLmgKQEAgLTg1LDYgKzg1LDExIEBAIHB1YmxpYzoK
ICAgICB2aXJ0dWFsIHZvaWQgc2hvd0RldlRvb2xzKCkgeyB9CiAgICAgdmlydHVhbCB2b2lkIGNs
b3NlRGV2VG9vbHMoKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgZXZhbHVhdGVJbldlYkluc3BlY3Rv
cihsb25nLCBjb25zdCBzdGQ6OnN0cmluZyYpIHsgfQorICAgIHZpcnR1YWwgdm9pZCBzZXREZXZp
Y2VTY2FsZUZhY3RvcihmbG9hdCkgeyB9CisgICAgdmlydHVhbCB2b2lkIHNldEZvY3VzKGJvb2wp
IHsgfQorICAgIHZpcnR1YWwgdm9pZCBzZXRBY2NlcHRBbGxDb29raWVzKGJvb2wpIHsgfQorICAg
IHZpcnR1YWwgc3RkOjpzdHJpbmcgcGF0aFRvTG9jYWxSZXNvdXJjZShjb25zdCBzdGQ6OnN0cmlu
ZyYgcmVzb3VyY2UpIHsgcmV0dXJuIHN0ZDo6c3RyaW5nKCk7IH0KKyAgICB2aXJ0dWFsIHZvaWQg
c2V0TG9jYWxlKGNvbnN0IHN0ZDo6c3RyaW5nJikgeyB9CiB9OwogCiB9CmRpZmYgLS1naXQgYS9U
b29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9UZXN0UnVubmVyLmNw
cCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvc3JjL1Rlc3RSdW5u
ZXIuY3BwCmluZGV4IGQ1YzhjNjA3MmU0NmU0ZWFhZDlhZGMwZWEzODlmOTljZWI4NzJhYWEuLmMw
NjJlMTcxMThmYzU0YjExNDhmYjE1OGQ3N2NlMjdlODFlMzUyYzUgMTAwNjQ0Ci0tLSBhL1Rvb2xz
L0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvc3JjL1Rlc3RSdW5uZXIuY3BwCisr
KyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvc3JjL1Rlc3RSdW5u
ZXIuY3BwCkBAIC00NywxMiArNDcsMTQgQEAKICNpbmNsdWRlICJXZWJTZWN1cml0eVBvbGljeS5o
IgogI2luY2x1ZGUgIldlYlNldHRpbmdzLmgiCiAjaW5jbHVkZSAiV2ViU3Vycm91bmRpbmdUZXh0
LmgiCisjaW5jbHVkZSAiV2ViVGFzay5oIgogI2luY2x1ZGUgIldlYlRlc3REZWxlZ2F0ZS5oIgog
I2luY2x1ZGUgIldlYlZpZXcuaCIKICNpbmNsdWRlICJXZWJXb3JrZXJJbmZvLmgiCiAjaW5jbHVk
ZSAicGxhdGZvcm0vV2ViUG9pbnQuaCIKICNpbmNsdWRlICJwbGF0Zm9ybS9XZWJTZXJpYWxpemVk
U2NyaXB0VmFsdWUuaCIKICNpbmNsdWRlICJ2OC9pbmNsdWRlL3Y4LmgiCisjaW5jbHVkZSA8d3Rm
L093bkFycmF5UHRyLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKICNpZiBP
UyhMSU5VWCkgfHwgT1MoQU5EUk9JRCkKQEAgLTc2LDYgKzc4LDI2IEBAIHB1YmxpYzoKICAgICB2
aXJ0dWFsIHZvaWQgZGVzdHJveSgpIHsgfQogfTsKIAorY2xhc3MgSW52b2tlQ2FsbGJhY2tUYXNr
IDogcHVibGljIFdlYk1ldGhvZFRhc2s8VGVzdFJ1bm5lcj4geworcHVibGljOgorICAgIEludm9r
ZUNhbGxiYWNrVGFzayhUZXN0UnVubmVyKiBvYmplY3QsIFBhc3NPd25BcnJheVB0cjxDcHBWYXJp
YW50PiBjYWxsYmFja0FyZ3VtZW50cywgdWludDMyX3QgbnVtYmVyT2ZBcmd1bWVudHMpCisgICAg
ICAgIDogV2ViTWV0aG9kVGFzazxUZXN0UnVubmVyPihvYmplY3QpCisgICAgICAgICwgbV9jYWxs
YmFja0FyZ3VtZW50cyhjYWxsYmFja0FyZ3VtZW50cykKKyAgICAgICAgLCBtX251bWJlck9mQXJn
dW1lbnRzKG51bWJlck9mQXJndW1lbnRzKQorICAgIHsKKyAgICB9CisKKyAgICB2aXJ0dWFsIHZv
aWQgcnVuSWZWYWxpZCgpCisgICAgeworICAgICAgICBDcHBWYXJpYW50IGludm9rZVJlc3VsdDsK
KyAgICAgICAgbV9jYWxsYmFja0FyZ3VtZW50c1swXS5pbnZva2VEZWZhdWx0KG1fY2FsbGJhY2tB
cmd1bWVudHMuZ2V0KCksIG1fbnVtYmVyT2ZBcmd1bWVudHMsIGludm9rZVJlc3VsdCk7CisgICAg
fQorCitwcml2YXRlOgorICAgIE93bkFycmF5UHRyPENwcFZhcmlhbnQ+IG1fY2FsbGJhY2tBcmd1
bWVudHM7CisgICAgdWludDMyX3QgbV9udW1iZXJPZkFyZ3VtZW50czsKK307CisKIH0KIAogVGVz
dFJ1bm5lcjo6VGVzdFJ1bm5lcigpCkBAIC0xNzgsNiArMjAwLDExIEBAIFRlc3RSdW5uZXI6OlRl
c3RSdW5uZXIoKQogICAgIGJpbmRNZXRob2QoInNob3dXZWJJbnNwZWN0b3IiLCAmVGVzdFJ1bm5l
cjo6c2hvd1dlYkluc3BlY3Rvcik7CiAgICAgYmluZE1ldGhvZCgiY2xvc2VXZWJJbnNwZWN0b3Ii
LCAmVGVzdFJ1bm5lcjo6Y2xvc2VXZWJJbnNwZWN0b3IpOwogICAgIGJpbmRNZXRob2QoImV2YWx1
YXRlSW5XZWJJbnNwZWN0b3IiLCAmVGVzdFJ1bm5lcjo6ZXZhbHVhdGVJbldlYkluc3BlY3Rvcik7
CisgICAgYmluZE1ldGhvZCgic2V0QWx3YXlzQWNjZXB0Q29va2llcyIsICZUZXN0UnVubmVyOjpz
ZXRBbHdheXNBY2NlcHRDb29raWVzKTsKKyAgICBiaW5kTWV0aG9kKCJzZXRXaW5kb3dJc0tleSIs
ICZUZXN0UnVubmVyOjpzZXRXaW5kb3dJc0tleSk7CisgICAgYmluZE1ldGhvZCgicGF0aFRvTG9j
YWxSZXNvdXJjZSIsICZUZXN0UnVubmVyOjpwYXRoVG9Mb2NhbFJlc291cmNlKTsKKyAgICBiaW5k
TWV0aG9kKCJzZXRCYWNraW5nU2NhbGVGYWN0b3IiLCAmVGVzdFJ1bm5lcjo6c2V0QmFja2luZ1Nj
YWxlRmFjdG9yKTsKKyAgICBiaW5kTWV0aG9kKCJzZXRQT1NJWExvY2FsZSIsICZUZXN0UnVubmVy
OjpzZXRQT1NJWExvY2FsZSk7CiAKICAgICAvLyBQcm9wZXJ0aWVzLgogICAgIGJpbmRQcm9wZXJ0
eSgid29ya2VyVGhyZWFkQ291bnQiLCAmVGVzdFJ1bm5lcjo6d29ya2VyVGhyZWFkQ291bnQpOwpA
QCAtMjQ0LDYgKzI3MSwxMCBAQCB2b2lkIFRlc3RSdW5uZXI6OnJlc2V0KCkKICAgICBXZWJGb250
UmVuZGVyaW5nOjpzZXRTdWJwaXhlbFBvc2l0aW9uaW5nKGZhbHNlKTsKICNlbmRpZgogCisgICAg
bV9kZWxlZ2F0ZS0+c2V0RGV2aWNlU2NhbGVGYWN0b3IoMSk7CisgICAgbV9kZWxlZ2F0ZS0+c2V0
QWNjZXB0QWxsQ29va2llcyhmYWxzZSk7CisgICAgbV9kZWxlZ2F0ZS0+c2V0TG9jYWxlKCIiKTsK
KwogICAgIG1fZHVtcEVkaXRpbmdDYWxsYmFja3MgPSBmYWxzZTsKICAgICBtX2R1bXBBc1RleHQg
PSBmYWxzZTsKICAgICBtX2dlbmVyYXRlUGl4ZWxSZXN1bHRzID0gdHJ1ZTsKQEAgLTI3NSw2ICsz
MDYsOCBAQCB2b2lkIFRlc3RSdW5uZXI6OnJlc2V0KCkKICAgICBtX3VzZXJTdHlsZVNoZWV0TG9j
YXRpb24gPSBXZWJVUkwoKTsKIAogICAgIG1fd2ViUGVybWlzc2lvbnMtPnJlc2V0KCk7CisKKyAg
ICBtX3Rhc2tMaXN0LnJldm9rZUFsbCgpOwogfQogCiB2b2lkIFRlc3RSdW5uZXI6OnNldFRlc3RJ
c1J1bm5pbmcoYm9vbCBydW5uaW5nKQpAQCAtMTI5NSw2ICsxMzI4LDUwIEBAIHZvaWQgVGVzdFJ1
bm5lcjo6ZXZhbHVhdGVJbldlYkluc3BlY3Rvcihjb25zdCBDcHBBcmd1bWVudExpc3QmIGFyZ3Vt
ZW50cywgQ3BwVmFyCiAgICAgbV9kZWxlZ2F0ZS0+ZXZhbHVhdGVJbldlYkluc3BlY3Rvcihhcmd1
bWVudHNbMF0udG9JbnQzMigpLCBhcmd1bWVudHNbMV0udG9TdHJpbmcoKSk7CiB9CiAKK3ZvaWQg
VGVzdFJ1bm5lcjo6c2V0QWx3YXlzQWNjZXB0Q29va2llcyhjb25zdCBDcHBBcmd1bWVudExpc3Qm
IGFyZ3VtZW50cywgQ3BwVmFyaWFudCogcmVzdWx0KQoreworICAgIGlmIChhcmd1bWVudHMuc2l6
ZSgpID4gMCkKKyAgICAgICAgbV9kZWxlZ2F0ZS0+c2V0QWNjZXB0QWxsQ29va2llcyhjcHBWYXJp
YW50VG9Cb29sKGFyZ3VtZW50c1swXSkpOworICAgIHJlc3VsdC0+c2V0TnVsbCgpOworfQorCit2
b2lkIFRlc3RSdW5uZXI6OnNldFdpbmRvd0lzS2V5KGNvbnN0IENwcEFyZ3VtZW50TGlzdCYgYXJn
dW1lbnRzLCBDcHBWYXJpYW50KiByZXN1bHQpCit7CisgICAgaWYgKGFyZ3VtZW50cy5zaXplKCkg
PiAwICYmIGFyZ3VtZW50c1swXS5pc0Jvb2woKSkKKyAgICAgICAgbV9kZWxlZ2F0ZS0+c2V0Rm9j
dXMoYXJndW1lbnRzWzBdLnZhbHVlLmJvb2xWYWx1ZSk7CisgICAgcmVzdWx0LT5zZXROdWxsKCk7
Cit9CisKK3ZvaWQgVGVzdFJ1bm5lcjo6cGF0aFRvTG9jYWxSZXNvdXJjZShjb25zdCBDcHBBcmd1
bWVudExpc3QmIGFyZ3VtZW50cywgQ3BwVmFyaWFudCogcmVzdWx0KQoreworICAgIHJlc3VsdC0+
c2V0TnVsbCgpOworICAgIGlmIChhcmd1bWVudHMuc2l6ZSgpIDw9IDAgfHwgIWFyZ3VtZW50c1sw
XS5pc1N0cmluZygpKQorICAgICAgICByZXR1cm47CisKKyAgICByZXN1bHQtPnNldChtX2RlbGVn
YXRlLT5wYXRoVG9Mb2NhbFJlc291cmNlKGFyZ3VtZW50c1swXS50b1N0cmluZygpKSk7Cit9CisK
K3ZvaWQgVGVzdFJ1bm5lcjo6c2V0QmFja2luZ1NjYWxlRmFjdG9yKGNvbnN0IENwcEFyZ3VtZW50
TGlzdCYgYXJndW1lbnRzLCBDcHBWYXJpYW50KiByZXN1bHQpCit7CisgICAgaWYgKGFyZ3VtZW50
cy5zaXplKCkgPCAyIHx8ICFhcmd1bWVudHNbMF0uaXNOdW1iZXIoKSB8fCAhYXJndW1lbnRzWzFd
LmlzT2JqZWN0KCkpCisgICAgICAgIHJldHVybjsKKworICAgIGZsb2F0IHZhbHVlID0gYXJndW1l
bnRzWzBdLnZhbHVlLmRvdWJsZVZhbHVlOworICAgIG1fZGVsZWdhdGUtPnNldERldmljZVNjYWxl
RmFjdG9yKHZhbHVlKTsKKworICAgIE93bkFycmF5UHRyPENwcFZhcmlhbnQ+IGNhbGxiYWNrQXJn
dW1lbnRzID0gYWRvcHRBcnJheVB0cihuZXcgQ3BwVmFyaWFudFsxXSk7CisgICAgY2FsbGJhY2tB
cmd1bWVudHNbMF0uc2V0KGFyZ3VtZW50c1sxXSk7CisgICAgcmVzdWx0LT5zZXROdWxsKCk7Cisg
ICAgbV9kZWxlZ2F0ZS0+cG9zdFRhc2sobmV3IEludm9rZUNhbGxiYWNrVGFzayh0aGlzLCBjYWxs
YmFja0FyZ3VtZW50cy5yZWxlYXNlKCksIDEpKTsKK30KKwordm9pZCBUZXN0UnVubmVyOjpzZXRQ
T1NJWExvY2FsZShjb25zdCBDcHBBcmd1bWVudExpc3QmIGFyZ3VtZW50cywgQ3BwVmFyaWFudCog
cmVzdWx0KQoreworICAgIHJlc3VsdC0+c2V0TnVsbCgpOworICAgIGlmIChhcmd1bWVudHMuc2l6
ZSgpID09IDEgJiYgYXJndW1lbnRzWzBdLmlzU3RyaW5nKCkpCisgICAgICAgIG1fZGVsZWdhdGUt
PnNldExvY2FsZShhcmd1bWVudHNbMF0udG9TdHJpbmcoKSk7Cit9CisKIHZvaWQgVGVzdFJ1bm5l
cjo6ZHVtcEVkaXRpbmdDYWxsYmFja3MoY29uc3QgQ3BwQXJndW1lbnRMaXN0JiwgQ3BwVmFyaWFu
dCogcmVzdWx0KQogewogICAgIG1fZHVtcEVkaXRpbmdDYWxsYmFja3MgPSB0cnVlOwpkaWZmIC0t
Z2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvVGVzdFJ1
bm5lci5oIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvVGVz
dFJ1bm5lci5oCmluZGV4IDU4YmYyMmFhOGZkZGU0MGY3YzBjNzc1N2QzMTY0MzU2ZmU5NTNhYmEu
LjFhYWIzYWExMDE1OTk4NWFmZjRjOTViYWQxZWMzMDdmNTMwNWM2MzggMTAwNjQ0Ci0tLSBhL1Rv
b2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvc3JjL1Rlc3RSdW5uZXIuaAor
KysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9UZXN0UnVu
bmVyLmgKQEAgLTM0LDYgKzM0LDcgQEAKIAogI2luY2x1ZGUgIkNwcEJvdW5kQ2xhc3MuaCIKICNp
bmNsdWRlICJXZWJEZWxpdmVyZWRJbnRlbnRDbGllbnQuaCIKKyNpbmNsdWRlICJXZWJUYXNrLmgi
CiAjaW5jbHVkZSAiV2ViVGVzdFJ1bm5lci5oIgogI2luY2x1ZGUgInBsYXRmb3JtL1dlYkFycmF5
QnVmZmVyVmlldy5oIgogI2luY2x1ZGUgInBsYXRmb3JtL1dlYlVSTC5oIgpAQCAtNTksNiArNjAs
OCBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHJlc2V0KCk7CiAKKyAgICBXZWJUYXNrTGlzdCogdGFz
a0xpc3QoKSB7IHJldHVybiAmbV90YXNrTGlzdDsgfQorCiAgICAgLy8gV2ViVGVzdFJ1bm5lciBp
bXBsZW1lbnRhdGlvbi4KICAgICB2aXJ0dWFsIHZvaWQgc2V0VGVzdElzUnVubmluZyhib29sKSBP
VkVSUklERTsKICAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkRHVtcEVkaXRpbmdDYWxsYmFja3MoKSBj
b25zdCBPVkVSUklERTsKQEAgLTMzMSw2ICszMzQsMjIgQEAgcHJpdmF0ZToKICAgICAvLyBBbGxv
d3MgbGF5b3V0IHRlc3RzIHRvIGV4ZWMgc2NyaXB0cyBhdCBXZWJJbnNwZWN0b3Igc2lkZS4KICAg
ICB2b2lkIGV2YWx1YXRlSW5XZWJJbnNwZWN0b3IoY29uc3QgQ3BwQXJndW1lbnRMaXN0JiwgQ3Bw
VmFyaWFudCopOwogCisgICAgLy8gQ2hhbmdlcyB0aGUgY29va2llIHBvbGljeSBmcm9tIHRoZSBk
ZWZhdWx0IHRvIGFsbG93IGFsbCBjb29raWVzLgorICAgIHZvaWQgc2V0QWx3YXlzQWNjZXB0Q29v
a2llcyhjb25zdCBDcHBBcmd1bWVudExpc3QmLCBDcHBWYXJpYW50Kik7CisKKyAgICAvLyBHaXZl
cyBmb2N1cyB0byB0aGUgd2luZG93LgorICAgIHZvaWQgc2V0V2luZG93SXNLZXkoY29uc3QgQ3Bw
QXJndW1lbnRMaXN0JiwgQ3BwVmFyaWFudCopOworCisgICAgLy8gQ29udmVydHMgYSBVUkwgc3Rh
cnRpbmcgd2l0aCBmaWxlOi8vL3RtcC8gdG8gdGhlIGxvY2FsIG1hcHBpbmcuCisgICAgdm9pZCBw
YXRoVG9Mb2NhbFJlc291cmNlKGNvbnN0IENwcEFyZ3VtZW50TGlzdCYsIENwcFZhcmlhbnQqKTsK
KworICAgIC8vIFVzZWQgdG8gc2V0IHRoZSBkZXZpY2Ugc2NhbGUgZmFjdG9yLgorICAgIHZvaWQg
c2V0QmFja2luZ1NjYWxlRmFjdG9yKGNvbnN0IENwcEFyZ3VtZW50TGlzdCYsIENwcFZhcmlhbnQq
KTsKKworICAgIC8vIENhbGxzIHNldGxvY2FsZShMQ19BTEwsIC4uLikgZm9yIGEgc3BlY2lmaWVk
IGxvY2FsZS4KKyAgICAvLyBSZXNldHMgYmV0d2VlbiB0ZXN0cy4KKyAgICB2b2lkIHNldFBPU0lY
TG9jYWxlKGNvbnN0IENwcEFyZ3VtZW50TGlzdCYsIENwcFZhcmlhbnQqKTsKKwogICAgIC8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLwogICAgIC8vIFByb3BlcnRpZXMKICAgICB2b2lkIHdvcmtlclRocmVhZENv
dW50KENwcFZhcmlhbnQqKTsKQEAgLTQ1Nyw2ICs0NzYsOSBAQCBwcml2YXRlOgogICAgIC8vIFdB
ViBhdWRpbyBkYXRhIGlzIHN0b3JlZCBoZXJlLgogICAgIFdlYktpdDo6V2ViQXJyYXlCdWZmZXJW
aWV3IG1fYXVkaW9EYXRhOwogCisgICAgLy8gVXNlZCBmb3IgdGVzdCB0aW1lb3V0cy4KKyAgICBX
ZWJUYXNrTGlzdCBtX3Rhc2tMaXN0OworCiAgICAgV2ViVGVzdERlbGVnYXRlKiBtX2RlbGVnYXRl
OwogICAgIFdlYktpdDo6V2ViVmlldyogbV93ZWJWaWV3OwogCmRpZmYgLS1naXQgYS9Ub29scy9E
dW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9XZWJWaWV3SG9zdC5jcHAgYi9Ub29scy9EdW1wUmVuZGVy
VHJlZS9jaHJvbWl1bS9XZWJWaWV3SG9zdC5jcHAKaW5kZXggZmJlY2Q0MzVjNzBjODg1ZTcwOTky
MDdlYTRiOWI1N2ViZmQyNjM1ZC4uYmJkNGE3ZTQ2ZTk4MDMzYTI4NDU2YzEyMjdhNGRmZjJmY2Ex
YzQ4ZiAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vV2ViVmlld0hv
c3QuY3BwCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1dlYlZpZXdIb3N0LmNw
cApAQCAtNzAsNiArNzAsOCBAQAogI2luY2x1ZGUgInNraWEvZXh0L3BsYXRmb3JtX2NhbnZhcy5o
IgogI2luY2x1ZGUgIndlYmtpdC9zdXBwb3J0L3Rlc3RfbWVkaWFfc3RyZWFtX2NsaWVudC5oIgog
I2luY2x1ZGUgIndlYmtpdC9zdXBwb3J0L3dlYmtpdF9zdXBwb3J0LmgiCisjaW5jbHVkZSA8Y2N0
eXBlPgorI2luY2x1ZGUgPGNsb2NhbGU+CiAjaW5jbHVkZSA8cHVibGljL1dlYkNTdHJpbmcuaD4K
ICNpbmNsdWRlIDxwdWJsaWMvV2ViQ29tcG9zaXRvck91dHB1dFN1cmZhY2UuaD4KICNpbmNsdWRl
IDxwdWJsaWMvV2ViQ29tcG9zaXRvclN1cHBvcnQuaD4KQEAgLTEwNjksNiArMTA3MSw2MCBAQCB2
b2lkIFdlYlZpZXdIb3N0OjpldmFsdWF0ZUluV2ViSW5zcGVjdG9yKGxvbmcgY2FsbElELCBjb25z
dCBzdGQ6OnN0cmluZyYgc2NyaXB0KQogICAgIG1fc2hlbGwtPmRydERldlRvb2xzQWdlbnQoKS0+
ZXZhbHVhdGVJbldlYkluc3BlY3RvcihjYWxsSUQsIHNjcmlwdCk7CiB9CiAKK3ZvaWQgV2ViVmll
d0hvc3Q6OnNldERldmljZVNjYWxlRmFjdG9yKGZsb2F0IGRldmljZVNjYWxlRmFjdG9yKQorewor
ICAgIHdlYlZpZXcoKS0+c2V0RGV2aWNlU2NhbGVGYWN0b3IoZGV2aWNlU2NhbGVGYWN0b3IpOwor
ICAgIGRpc2NhcmRCYWNraW5nU3RvcmUoKTsKK30KKwordm9pZCBXZWJWaWV3SG9zdDo6c2V0Rm9j
dXMoYm9vbCBmb2N1c2VkKQoreworICAgIG1fc2hlbGwtPnNldEZvY3VzKG1fc2hlbGwtPndlYlZp
ZXcoKSwgZm9jdXNlZCk7Cit9CisKK3ZvaWQgV2ViVmlld0hvc3Q6OnNldEFjY2VwdEFsbENvb2tp
ZXMoYm9vbCBhY2NlcHRDb29raWVzKQoreworICAgIHdlYmtpdF9zdXBwb3J0OjpTZXRBY2NlcHRB
bGxDb29raWVzKGFjY2VwdENvb2tpZXMpOworfQorCitzdHJpbmcgV2ViVmlld0hvc3Q6OnBhdGhU
b0xvY2FsUmVzb3VyY2UoY29uc3Qgc3RyaW5nJiB1cmwpCit7CisjaWYgT1MoV0lORE9XUykKKyAg
ICBpZiAoIXVybC5maW5kKCIvdG1wLyIpKSB7CisgICAgICAgIC8vIFdlIHdhbnQgYSB0ZW1wIGZp
bGUuCisgICAgICAgIGNvbnN0IHVuc2lnbmVkIHRlbXBQcmVmaXhMZW5ndGggPSA1OworICAgICAg
ICBzaXplX3QgYnVmZmVyU2l6ZSA9IE1BWF9QQVRIOworICAgICAgICBPd25BcnJheVB0cjxXQ0hB
Uj4gdGVtcFBhdGggPSBhZG9wdEFycmF5UHRyKG5ldyBXQ0hBUltidWZmZXJTaXplXSk7CisgICAg
ICAgIERXT1JEIHRlbXBMZW5ndGggPSA6OkdldFRlbXBQYXRoVyhidWZmZXJTaXplLCB0ZW1wUGF0
aC5nZXQoKSk7CisgICAgICAgIGlmICh0ZW1wTGVuZ3RoICsgdXJsLmxlbmd0aCgpIC0gdGVtcFBy
ZWZpeExlbmd0aCArIDEgPiBidWZmZXJTaXplKSB7CisgICAgICAgICAgICBidWZmZXJTaXplID0g
dGVtcExlbmd0aCArIHVybC5sZW5ndGgoKSAtIHRlbXBQcmVmaXhMZW5ndGggKyAxOworICAgICAg
ICAgICAgdGVtcFBhdGggPSBhZG9wdEFycmF5UHRyKG5ldyBXQ0hBUltidWZmZXJTaXplXSk7Cisg
ICAgICAgICAgICB0ZW1wTGVuZ3RoID0gR2V0VGVtcFBhdGhXKGJ1ZmZlclNpemUsIHRlbXBQYXRo
LmdldCgpKTsKKyAgICAgICAgICAgIEFTU0VSVCh0ZW1wTGVuZ3RoIDwgYnVmZmVyU2l6ZSk7Cisg
ICAgICAgIH0KKyAgICAgICAgc3RyaW5nIHJlc3VsdFBhdGgoV2ViU3RyaW5nKHRlbXBQYXRoLmdl
dCgpLCB0ZW1wTGVuZ3RoKS51dGY4KCkpOworICAgICAgICByZXN1bHRQYXRoLmFwcGVuZCh1cmwu
c3Vic3RyKHRlbXBQcmVmaXhMZW5ndGgpKTsKKyAgICAgICAgcmV0dXJuIHJlc3VsdFBhdGg7Cisg
ICAgfQorI2VuZGlmCisKKyAgICAvLyBTb21lIGxheW91dCB0ZXN0cyB1c2UgZmlsZTovLy8vIHdo
aWNoIHdlIHJlc29sdmUgYXMgYSBVTkMgcGF0aC4gTm9ybWFsaXplCisgICAgLy8gdGhlbSB0byBq
dXN0IGZpbGU6Ly8vLgorICAgIHN0cmluZyBsb3dlclVybCA9IHVybDsKKyAgICBzdHJpbmcgcmVz
dWx0ID0gdXJsOworICAgIHRyYW5zZm9ybShsb3dlclVybC5iZWdpbigpLCBsb3dlclVybC5lbmQo
KSwgbG93ZXJVcmwuYmVnaW4oKSwgOjp0b2xvd2VyKTsKKyAgICB3aGlsZSAoIWxvd2VyVXJsLmZp
bmQoImZpbGU6Ly8vLyIpKSB7CisgICAgICAgIHJlc3VsdCA9IHJlc3VsdC5zdWJzdHIoMCwgOCkg
KyByZXN1bHQuc3Vic3RyKDkpOworICAgICAgICBsb3dlclVybCA9IGxvd2VyVXJsLnN1YnN0cigw
LCA4KSArIGxvd2VyVXJsLnN1YnN0cig5KTsKKyAgICB9CisgICAgcmV0dXJuIHdlYmtpdF9zdXBw
b3J0OjpSZXdyaXRlTGF5b3V0VGVzdHNVUkwocmVzdWx0KS5zcGVjKCk7Cit9CisKK3ZvaWQgV2Vi
Vmlld0hvc3Q6OnNldExvY2FsZShjb25zdCBzdGQ6OnN0cmluZyYgbG9jYWxlKQoreworICAgIHNl
dGxvY2FsZShMQ19BTEwsIGxvY2FsZS5jX3N0cigpKTsKK30KKwogLy8gUHVibGljIGZ1bmN0aW9u
cyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLQogCiBXZWJWaWV3SG9zdDo6V2ViVmlld0hvc3QoVGVzdFNoZWxsKiBzaGVsbCkKQEAgLTEz
OTIsMTIgKzE0NDgsNiBAQCB2b2lkIFdlYlZpZXdIb3N0OjpzZXRQZW5kaW5nRXh0cmFEYXRhKFBh
c3NPd25QdHI8VGVzdFNoZWxsRXh0cmFEYXRhPiBleHRyYURhdGEpCiAgICAgbV9wZW5kaW5nRXh0
cmFEYXRhID0gZXh0cmFEYXRhOwogfQogCi12b2lkIFdlYlZpZXdIb3N0OjpzZXREZXZpY2VTY2Fs
ZUZhY3RvcihmbG9hdCBkZXZpY2VTY2FsZUZhY3RvcikKLXsKLSAgICB3ZWJWaWV3KCktPnNldERl
dmljZVNjYWxlRmFjdG9yKGRldmljZVNjYWxlRmFjdG9yKTsKLSAgICBkaXNjYXJkQmFja2luZ1N0
b3JlKCk7Ci19Ci0KIHZvaWQgV2ViVmlld0hvc3Q6OnNldFBhZ2VUaXRsZShjb25zdCBXZWJTdHJp
bmcmKQogewogICAgIC8vIE5vdGhpbmcgdG8gZG8gaW4gbGF5b3V0IHRlc3QuCmRpZmYgLS1naXQg
YS9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9XZWJWaWV3SG9zdC5oIGIvVG9vbHMvRHVt
cFJlbmRlclRyZWUvY2hyb21pdW0vV2ViVmlld0hvc3QuaAppbmRleCA5MDQwOTVjM2Y5ODhlNzNh
MDBhOGYyMmM0MmQwYmVjYTM1MWJkMGFkLi42MWZjMWZmZDkwMzYyMTY2NTg1ZWZkYzZkMGNlYWRj
NTIzNWJjMmVmIDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9XZWJW
aWV3SG9zdC5oCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1dlYlZpZXdIb3N0
LmgKQEAgLTk2LDcgKzk2LDYgQEAgY2xhc3MgV2ViVmlld0hvc3QgOiBwdWJsaWMgV2ViS2l0OjpX
ZWJWaWV3Q2xpZW50LCBwdWJsaWMgV2ViS2l0OjpXZWJGcmFtZUNsaWVudCwKICAgICB2b2lkIHNl
dEJsb2NrUmVkaXJlY3RzKGJvb2wgYmxvY2spIHsgbV9ibG9ja3NSZWRpcmVjdHMgPSBibG9jazsg
fQogICAgIHZvaWQgc2V0UmVxdWVzdFJldHVybk51bGwoYm9vbCByZXR1cm5OdWxsKSB7IG1fcmVx
dWVzdFJldHVybk51bGwgPSByZXR1cm5OdWxsOyB9CiAgICAgdm9pZCBzZXRQZW5kaW5nRXh0cmFE
YXRhKFBhc3NPd25QdHI8VGVzdFNoZWxsRXh0cmFEYXRhPik7Ci0gICAgdm9pZCBzZXREZXZpY2VT
Y2FsZUZhY3RvcihmbG9hdCk7CiAKICAgICB2b2lkIHBhaW50UmVjdChjb25zdCBXZWJLaXQ6Oldl
YlJlY3QmKTsKICAgICB2b2lkIHBhaW50SW52YWxpZGF0ZWRSZWdpb24oKTsKQEAgLTE1NCw2ICsx
NTMsMTEgQEAgY2xhc3MgV2ViVmlld0hvc3QgOiBwdWJsaWMgV2ViS2l0OjpXZWJWaWV3Q2xpZW50
LCBwdWJsaWMgV2ViS2l0OjpXZWJGcmFtZUNsaWVudCwKICAgICB2aXJ0dWFsIHZvaWQgc2hvd0Rl
dlRvb2xzKCkgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIGNsb3NlRGV2VG9vbHMoKSBPVkVS
UklERTsKICAgICB2aXJ0dWFsIHZvaWQgZXZhbHVhdGVJbldlYkluc3BlY3Rvcihsb25nLCBjb25z
dCBzdGQ6OnN0cmluZyYpIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBzZXREZXZpY2VTY2Fs
ZUZhY3RvcihmbG9hdCkgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIHNldEZvY3VzKGJvb2wp
IE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBzZXRBY2NlcHRBbGxDb29raWVzKGJvb2wpIE9W
RVJSSURFOworICAgIHZpcnR1YWwgc3RkOjpzdHJpbmcgcGF0aFRvTG9jYWxSZXNvdXJjZShjb25z
dCBzdGQ6OnN0cmluZyYgdXJsKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0TG9jYWxl
KGNvbnN0IHN0ZDo6c3RyaW5nJikgT1ZFUlJJREU7CiAKICAgICAvLyBOYXZpZ2F0aW9uSG9zdAog
ICAgIHZpcnR1YWwgYm9vbCBuYXZpZ2F0ZShjb25zdCBUZXN0TmF2aWdhdGlvbkVudHJ5JiwgYm9v
bCByZWxvYWQpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>182842</attachid>
            <date>2013-01-15 13:49:33 -0800</date>
            <delta_ts>2013-01-16 03:56:55 -0800</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-106904-20130115224635.patch</filename>
            <type>text/plain</type>
            <size>25475</size>
            <attacher>jochen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM5NzgwCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggMjY4YWY2ZjM5MTNlNDc1OGMwN2MyN2U2NmI0ZDMzMmMw
OTEwNDQwMC4uZTljNTkwM2QxOTExYjliZDVhMTIxMGIwMDBkZjljMGQzMjRiM2NhOSAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDQ1
IEBACiAyMDEzLTAxLTE1ICBKb2NoZW4gRWlzaW5nZXIgIDxqb2NoZW5AY2hyb21pdW0ub3JnPgog
CisgICAgICAgIFtjaHJvbWl1bV0gcm91dGUgbW9yZSB3ZWJraXRfc3VwcG9ydCBhbmQgd2Vidmll
d2hvc3QgY2FsbGJhY2tzIHRocm91Z2ggV2ViVGVzdERlbGVnYXRlCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDY5MDQKKworICAgICAgICBSZXZpZXdl
ZCBieSBBZGFtIEJhcnRoLgorCisgICAgICAgICogRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vRFJU
VGVzdFJ1bm5lci5jcHA6CisgICAgICAgIChEUlRUZXN0UnVubmVyOjpEUlRUZXN0UnVubmVyKToK
KyAgICAgICAgKERSVFRlc3RSdW5uZXI6Om5vdGlmeURvbmUpOgorICAgICAgICAoRFJUVGVzdFJ1
bm5lcjo6cmVzZXQpOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2Nocm9taXVtL0RSVFRlc3RS
dW5uZXIuaDoKKyAgICAgICAgKERSVFRlc3RSdW5uZXIpOgorICAgICAgICAqIER1bXBSZW5kZXJU
cmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvcHVibGljL1dlYlRlc3REZWxlZ2F0ZS5oOgorICAgICAg
ICAoV2ViVGVzdFJ1bm5lcjo6V2ViVGVzdERlbGVnYXRlOjpzZXREZXZpY2VTY2FsZUZhY3Rvcik6
CisgICAgICAgIChXZWJUZXN0UnVubmVyOjpXZWJUZXN0RGVsZWdhdGU6OnNldEZvY3VzKToKKyAg
ICAgICAgKFdlYlRlc3RSdW5uZXI6OldlYlRlc3REZWxlZ2F0ZTo6c2V0QWNjZXB0QWxsQ29va2ll
cyk6CisgICAgICAgIChXZWJUZXN0UnVubmVyOjpXZWJUZXN0RGVsZWdhdGU6OnBhdGhUb0xvY2Fs
UmVzb3VyY2UpOgorICAgICAgICAoV2ViVGVzdFJ1bm5lcjo6V2ViVGVzdERlbGVnYXRlOjpzZXRM
b2NhbGUpOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvc3Jj
L1Rlc3RSdW5uZXIuY3BwOgorICAgICAgICAoV2ViVGVzdFJ1bm5lcjo6VGVzdFJ1bm5lcjo6VGVz
dFJ1bm5lcik6CisgICAgICAgIChXZWJUZXN0UnVubmVyOjpUZXN0UnVubmVyOjpyZXNldCk6Cisg
ICAgICAgIChXZWJUZXN0UnVubmVyOjpUZXN0UnVubmVyOjpzZXRBbHdheXNBY2NlcHRDb29raWVz
KToKKyAgICAgICAgKFdlYlRlc3RSdW5uZXIpOgorICAgICAgICAoV2ViVGVzdFJ1bm5lcjo6VGVz
dFJ1bm5lcjo6c2V0V2luZG93SXNLZXkpOgorICAgICAgICAoV2ViVGVzdFJ1bm5lcjo6VGVzdFJ1
bm5lcjo6cGF0aFRvTG9jYWxSZXNvdXJjZSk6CisgICAgICAgIChXZWJUZXN0UnVubmVyOjpUZXN0
UnVubmVyOjpzZXRCYWNraW5nU2NhbGVGYWN0b3IpOgorICAgICAgICAoV2ViVGVzdFJ1bm5lcjo6
VGVzdFJ1bm5lcjo6c2V0UE9TSVhMb2NhbGUpOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2No
cm9taXVtL1Rlc3RSdW5uZXIvc3JjL1Rlc3RSdW5uZXIuaDoKKyAgICAgICAgKFdlYlRlc3RSdW5u
ZXI6OlRlc3RSdW5uZXI6OnRhc2tMaXN0KToKKyAgICAgICAgKFRlc3RSdW5uZXIpOgorICAgICAg
ICAqIER1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1dlYlZpZXdIb3N0LmNwcDoKKyAgICAgICAgKFdl
YlZpZXdIb3N0OjpzZXREZXZpY2VTY2FsZUZhY3Rvcik6CisgICAgICAgIChXZWJWaWV3SG9zdDo6
c2V0Rm9jdXMpOgorICAgICAgICAoV2ViVmlld0hvc3Q6OnNldEFjY2VwdEFsbENvb2tpZXMpOgor
ICAgICAgICAoV2ViVmlld0hvc3Q6OnBhdGhUb0xvY2FsUmVzb3VyY2UpOgorICAgICAgICAoV2Vi
Vmlld0hvc3Q6OnNldExvY2FsZSk6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvY2hyb21pdW0v
V2ViVmlld0hvc3QuaDoKKyAgICAgICAgKFdlYlZpZXdIb3N0KToKKworMjAxMy0wMS0xNSAgSm9j
aGVuIEVpc2luZ2VyICA8am9jaGVuQGNocm9taXVtLm9yZz4KKwogICAgICAgICBbY2hyb21pdW1d
IGFkZCB0aXRsZSB0ZXh0IGRpcmVjdGlvbiBhdHRyaWJ1dGUgdG8gVGVzdFJ1bm5lcgogICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTA2OTA3CiAKZGlmZiAt
LWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL0RSVFRlc3RSdW5uZXIuY3BwIGIv
VG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vRFJUVGVzdFJ1bm5lci5jcHAKaW5kZXggODJi
NzY5ZTk2MDBlZDJkNWU2NmNhZmYzMDY3ZGRjMDI1OGZkZDcwNi4uMjE5MDc4MDZmZDJiNjU4MTcy
YTNmMTk0MTVhOWMyZGI1YWU3ZjEzMCAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUv
Y2hyb21pdW0vRFJUVGVzdFJ1bm5lci5jcHAKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hy
b21pdW0vRFJUVGVzdFJ1bm5lci5jcHAKQEAgLTY4LDcgKzY4LDYgQEAKICNpbmNsdWRlICJ3ZWJr
aXQvc3VwcG9ydC93ZWJraXRfc3VwcG9ydC5oIgogI2luY2x1ZGUgPGFsZ29yaXRobT4KICNpbmNs
dWRlIDxjY3R5cGU+Ci0jaW5jbHVkZSA8Y2xvY2FsZT4KICNpbmNsdWRlIDxjc3RkbGliPgogI2lu
Y2x1ZGUgPGxpbWl0cz4KICNpbmNsdWRlIDxzc3RyZWFtPgpAQCAtMTE2LDcgKzExNSw2IEBAIERS
VFRlc3RSdW5uZXI6OkRSVFRlc3RSdW5uZXIoVGVzdFNoZWxsKiBzaGVsbCkKICNlbmRpZgogICAg
IGJpbmRNZXRob2QoIm5vdGlmeURvbmUiLCAmRFJUVGVzdFJ1bm5lcjo6bm90aWZ5RG9uZSk7CiAg
ICAgYmluZE1ldGhvZCgibnVtYmVyT2ZQZW5kaW5nR2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVz
dHMiLCAmRFJUVGVzdFJ1bm5lcjo6IG51bWJlck9mUGVuZGluZ0dlb2xvY2F0aW9uUGVybWlzc2lv
blJlcXVlc3RzKTsKLSAgICBiaW5kTWV0aG9kKCJwYXRoVG9Mb2NhbFJlc291cmNlIiwgJkRSVFRl
c3RSdW5uZXI6OnBhdGhUb0xvY2FsUmVzb3VyY2UpOwogICAgIGJpbmRNZXRob2QoInF1ZXVlQmFj
a05hdmlnYXRpb24iLCAmRFJUVGVzdFJ1bm5lcjo6cXVldWVCYWNrTmF2aWdhdGlvbik7CiAgICAg
YmluZE1ldGhvZCgicXVldWVGb3J3YXJkTmF2aWdhdGlvbiIsICZEUlRUZXN0UnVubmVyOjpxdWV1
ZUZvcndhcmROYXZpZ2F0aW9uKTsKICAgICBiaW5kTWV0aG9kKCJxdWV1ZUxvYWRpbmdTY3JpcHQi
LCAmRFJUVGVzdFJ1bm5lcjo6cXVldWVMb2FkaW5nU2NyaXB0KTsKQEAgLTEyNCw3ICsxMjIsNiBA
QCBEUlRUZXN0UnVubmVyOjpEUlRUZXN0UnVubmVyKFRlc3RTaGVsbCogc2hlbGwpCiAgICAgYmlu
ZE1ldGhvZCgicXVldWVMb2FkSFRNTFN0cmluZyIsICZEUlRUZXN0UnVubmVyOjpxdWV1ZUxvYWRI
VE1MU3RyaW5nKTsKICAgICBiaW5kTWV0aG9kKCJxdWV1ZU5vbkxvYWRpbmdTY3JpcHQiLCAmRFJU
VGVzdFJ1bm5lcjo6cXVldWVOb25Mb2FkaW5nU2NyaXB0KTsKICAgICBiaW5kTWV0aG9kKCJxdWV1
ZVJlbG9hZCIsICZEUlRUZXN0UnVubmVyOjpxdWV1ZVJlbG9hZCk7Ci0gICAgYmluZE1ldGhvZCgi
c2V0QWx3YXlzQWNjZXB0Q29va2llcyIsICZEUlRUZXN0UnVubmVyOjpzZXRBbHdheXNBY2NlcHRD
b29raWVzKTsKICAgICBiaW5kTWV0aG9kKCJzZXRDbG9zZVJlbWFpbmluZ1dpbmRvd3NXaGVuQ29t
cGxldGUiLCAmRFJUVGVzdFJ1bm5lcjo6c2V0Q2xvc2VSZW1haW5pbmdXaW5kb3dzV2hlbkNvbXBs
ZXRlKTsKICAgICBiaW5kTWV0aG9kKCJzZXRDdXN0b21Qb2xpY3lEZWxlZ2F0ZSIsICZEUlRUZXN0
UnVubmVyOjpzZXRDdXN0b21Qb2xpY3lEZWxlZ2F0ZSk7CiAgICAgYmluZE1ldGhvZCgic2V0R2Vv
bG9jYXRpb25QZXJtaXNzaW9uIiwgJkRSVFRlc3RSdW5uZXI6OnNldEdlb2xvY2F0aW9uUGVybWlz
c2lvbik7CkBAIC0xMzUsMTIgKzEzMiw5IEBAIERSVFRlc3RSdW5uZXI6OkRSVFRlc3RSdW5uZXIo
VGVzdFNoZWxsKiBzaGVsbCkKICAgICBiaW5kTWV0aG9kKCJzZXRQb2ludGVyTG9ja1dpbGxSZXNw
b25kQXN5bmNocm9ub3VzbHkiLCAmRFJUVGVzdFJ1bm5lcjo6c2V0UG9pbnRlckxvY2tXaWxsUmVz
cG9uZEFzeW5jaHJvbm91c2x5KTsKICAgICBiaW5kTWV0aG9kKCJzZXRQb2ludGVyTG9ja1dpbGxG
YWlsU3luY2hyb25vdXNseSIsICZEUlRUZXN0UnVubmVyOjpzZXRQb2ludGVyTG9ja1dpbGxGYWls
U3luY2hyb25vdXNseSk7CiAjZW5kaWYKLSAgICBiaW5kTWV0aG9kKCJzZXRQT1NJWExvY2FsZSIs
ICZEUlRUZXN0UnVubmVyOjpzZXRQT1NJWExvY2FsZSk7Ci0gICAgYmluZE1ldGhvZCgic2V0QmFj
a2luZ1NjYWxlRmFjdG9yIiwgJkRSVFRlc3RSdW5uZXI6OnNldEJhY2tpbmdTY2FsZUZhY3Rvcik7
CiAgICAgYmluZE1ldGhvZCgic2V0V2lsbFNlbmRSZXF1ZXN0Q2xlYXJIZWFkZXIiLCAmRFJUVGVz
dFJ1bm5lcjo6c2V0V2lsbFNlbmRSZXF1ZXN0Q2xlYXJIZWFkZXIpOwogICAgIGJpbmRNZXRob2Qo
InNldFdpbGxTZW5kUmVxdWVzdFJldHVybnNOdWxsIiwgJkRSVFRlc3RSdW5uZXI6OnNldFdpbGxT
ZW5kUmVxdWVzdFJldHVybnNOdWxsKTsKICAgICBiaW5kTWV0aG9kKCJzZXRXaWxsU2VuZFJlcXVl
c3RSZXR1cm5zTnVsbE9uUmVkaXJlY3QiLCAmRFJUVGVzdFJ1bm5lcjo6c2V0V2lsbFNlbmRSZXF1
ZXN0UmV0dXJuc051bGxPblJlZGlyZWN0KTsKLSAgICBiaW5kTWV0aG9kKCJzZXRXaW5kb3dJc0tl
eSIsICZEUlRUZXN0UnVubmVyOjpzZXRXaW5kb3dJc0tleSk7CiAjaWYgRU5BQkxFKE5PVElGSUNB
VElPTlMpCiAgICAgYmluZE1ldGhvZCgic2ltdWxhdGVMZWdhY3lXZWJOb3RpZmljYXRpb25DbGlj
ayIsICZEUlRUZXN0UnVubmVyOjpzaW11bGF0ZUxlZ2FjeVdlYk5vdGlmaWNhdGlvbkNsaWNrKTsK
ICNlbmRpZgpAQCAtMjE4LDcgKzIxMiw3IEBAIHZvaWQgRFJUVGVzdFJ1bm5lcjo6d2FpdFVudGls
RG9uZShjb25zdCBDcHBBcmd1bWVudExpc3QmLCBDcHBWYXJpYW50KiByZXN1bHQpCiB2b2lkIERS
VFRlc3RSdW5uZXI6Om5vdGlmeURvbmUoY29uc3QgQ3BwQXJndW1lbnRMaXN0JiwgQ3BwVmFyaWFu
dCogcmVzdWx0KQogewogICAgIC8vIFRlc3QgZGlkbid0IHRpbWVvdXQuIEtpbGwgdGhlIHRpbWVv
dXQgdGltZXIuCi0gICAgbV90YXNrTGlzdC5yZXZva2VBbGwoKTsKKyAgICB0YXNrTGlzdCgpLT5y
ZXZva2VBbGwoKTsKIAogICAgIGNvbXBsZXRlTm90aWZ5RG9uZShmYWxzZSk7CiAgICAgcmVzdWx0
LT5zZXROdWxsKCk7CkBAIC0zODksMjIgKzM4MywxNSBAQCB2b2lkIERSVFRlc3RSdW5uZXI6OnF1
ZXVlTG9hZEhUTUxTdHJpbmcoY29uc3QgQ3BwQXJndW1lbnRMaXN0JiBhcmd1bWVudHMsIENwcFZh
cgogdm9pZCBEUlRUZXN0UnVubmVyOjpyZXNldCgpCiB7CiAgICAgVGVzdFJ1bm5lcjo6cmVzZXQo
KTsKLSAgICBpZiAobV9zaGVsbCkKLSAgICAgICAgbV9zaGVsbC0+d2ViVmlld0hvc3QoKS0+c2V0
RGV2aWNlU2NhbGVGYWN0b3IoMSk7CiAgICAgbV93YWl0VW50aWxEb25lID0gZmFsc2U7CiAgICAg
bV93ZWJIaXN0b3J5SXRlbUNvdW50LnNldCgwKTsKICAgICBtX2ludGVyY2VwdFBvc3RNZXNzYWdl
LnNldChmYWxzZSk7CiAKLSAgICB3ZWJraXRfc3VwcG9ydDo6U2V0QWNjZXB0QWxsQ29va2llcyhm
YWxzZSk7Ci0KLSAgICBzZXRsb2NhbGUoTENfQUxMLCAiIik7Ci0KICAgICBpZiAobV9jbG9zZVJl
bWFpbmluZ1dpbmRvd3MpCiAgICAgICAgIG1fc2hlbGwtPmNsb3NlUmVtYWluaW5nV2luZG93cygp
OwogICAgIGVsc2UKICAgICAgICAgbV9jbG9zZVJlbWFpbmluZ1dpbmRvd3MgPSB0cnVlOwogICAg
IG1fd29ya1F1ZXVlLnJlc2V0KCk7Ci0gICAgbV90YXNrTGlzdC5yZXZva2VBbGwoKTsKIH0KIAog
dm9pZCBEUlRUZXN0UnVubmVyOjpsb2NhdGlvbkNoYW5nZURvbmUoKQpAQCAtNDM3LDIwICs0MjQs
NiBAQCB2b2lkIERSVFRlc3RSdW5uZXI6OnNldENsb3NlUmVtYWluaW5nV2luZG93c1doZW5Db21w
bGV0ZShjb25zdCBDcHBBcmd1bWVudExpc3QmCiAgICAgcmVzdWx0LT5zZXROdWxsKCk7CiB9CiAK
LXZvaWQgRFJUVGVzdFJ1bm5lcjo6c2V0QWx3YXlzQWNjZXB0Q29va2llcyhjb25zdCBDcHBBcmd1
bWVudExpc3QmIGFyZ3VtZW50cywgQ3BwVmFyaWFudCogcmVzdWx0KQotewotICAgIGlmIChhcmd1
bWVudHMuc2l6ZSgpID4gMCkKLSAgICAgICAgd2Via2l0X3N1cHBvcnQ6OlNldEFjY2VwdEFsbENv
b2tpZXMoY3BwVmFyaWFudFRvQm9vbChhcmd1bWVudHNbMF0pKTsKLSAgICByZXN1bHQtPnNldE51
bGwoKTsKLX0KLQotdm9pZCBEUlRUZXN0UnVubmVyOjpzZXRXaW5kb3dJc0tleShjb25zdCBDcHBB
cmd1bWVudExpc3QmIGFyZ3VtZW50cywgQ3BwVmFyaWFudCogcmVzdWx0KQotewotICAgIGlmIChh
cmd1bWVudHMuc2l6ZSgpID4gMCAmJiBhcmd1bWVudHNbMF0uaXNCb29sKCkpCi0gICAgICAgIG1f
c2hlbGwtPnNldEZvY3VzKG1fc2hlbGwtPndlYlZpZXcoKSwgYXJndW1lbnRzWzBdLnZhbHVlLmJv
b2xWYWx1ZSk7Ci0gICAgcmVzdWx0LT5zZXROdWxsKCk7Ci19Ci0KIHZvaWQgRFJUVGVzdFJ1bm5l
cjo6c2V0Q3VzdG9tUG9saWN5RGVsZWdhdGUoY29uc3QgQ3BwQXJndW1lbnRMaXN0JiBhcmd1bWVu
dHMsIENwcFZhcmlhbnQqIHJlc3VsdCkKIHsKICAgICBpZiAoYXJndW1lbnRzLnNpemUoKSA+IDAg
JiYgYXJndW1lbnRzWzBdLmlzQm9vbCgpKSB7CkBAIC00OTQsNDQgKzQ2Nyw2IEBAIHZvaWQgRFJU
VGVzdFJ1bm5lcjo6c2V0V2lsbFNlbmRSZXF1ZXN0UmV0dXJuc051bGwoY29uc3QgQ3BwQXJndW1l
bnRMaXN0JiBhcmd1bWVuCiAgICAgcmVzdWx0LT5zZXROdWxsKCk7CiB9CiAKLXZvaWQgRFJUVGVz
dFJ1bm5lcjo6cGF0aFRvTG9jYWxSZXNvdXJjZShjb25zdCBDcHBBcmd1bWVudExpc3QmIGFyZ3Vt
ZW50cywgQ3BwVmFyaWFudCogcmVzdWx0KQotewotICAgIHJlc3VsdC0+c2V0TnVsbCgpOwotICAg
IGlmIChhcmd1bWVudHMuc2l6ZSgpIDw9IDAgfHwgIWFyZ3VtZW50c1swXS5pc1N0cmluZygpKQot
ICAgICAgICByZXR1cm47Ci0KLSAgICBzdHJpbmcgdXJsID0gYXJndW1lbnRzWzBdLnRvU3RyaW5n
KCk7Ci0jaWYgT1MoV0lORE9XUykKLSAgICBpZiAoIXVybC5maW5kKCIvdG1wLyIpKSB7Ci0gICAg
ICAgIC8vIFdlIHdhbnQgYSB0ZW1wIGZpbGUuCi0gICAgICAgIGNvbnN0IHVuc2lnbmVkIHRlbXBQ
cmVmaXhMZW5ndGggPSA1OwotICAgICAgICBzaXplX3QgYnVmZmVyU2l6ZSA9IE1BWF9QQVRIOwot
ICAgICAgICBPd25BcnJheVB0cjxXQ0hBUj4gdGVtcFBhdGggPSBhZG9wdEFycmF5UHRyKG5ldyBX
Q0hBUltidWZmZXJTaXplXSk7Ci0gICAgICAgIERXT1JEIHRlbXBMZW5ndGggPSA6OkdldFRlbXBQ
YXRoVyhidWZmZXJTaXplLCB0ZW1wUGF0aC5nZXQoKSk7Ci0gICAgICAgIGlmICh0ZW1wTGVuZ3Ro
ICsgdXJsLmxlbmd0aCgpIC0gdGVtcFByZWZpeExlbmd0aCArIDEgPiBidWZmZXJTaXplKSB7Ci0g
ICAgICAgICAgICBidWZmZXJTaXplID0gdGVtcExlbmd0aCArIHVybC5sZW5ndGgoKSAtIHRlbXBQ
cmVmaXhMZW5ndGggKyAxOwotICAgICAgICAgICAgdGVtcFBhdGggPSBhZG9wdEFycmF5UHRyKG5l
dyBXQ0hBUltidWZmZXJTaXplXSk7Ci0gICAgICAgICAgICB0ZW1wTGVuZ3RoID0gR2V0VGVtcFBh
dGhXKGJ1ZmZlclNpemUsIHRlbXBQYXRoLmdldCgpKTsKLSAgICAgICAgICAgIEFTU0VSVCh0ZW1w
TGVuZ3RoIDwgYnVmZmVyU2l6ZSk7Ci0gICAgICAgIH0KLSAgICAgICAgc3RyaW5nIHJlc3VsdFBh
dGgoV2ViU3RyaW5nKHRlbXBQYXRoLmdldCgpLCB0ZW1wTGVuZ3RoKS51dGY4KCkpOwotICAgICAg
ICByZXN1bHRQYXRoLmFwcGVuZCh1cmwuc3Vic3RyKHRlbXBQcmVmaXhMZW5ndGgpKTsKLSAgICAg
ICAgcmVzdWx0LT5zZXQocmVzdWx0UGF0aCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0jZW5k
aWYKLQotICAgIC8vIFNvbWUgbGF5b3V0IHRlc3RzIHVzZSBmaWxlOi8vLy8gd2hpY2ggd2UgcmVz
b2x2ZSBhcyBhIFVOQyBwYXRoLiBOb3JtYWxpemUKLSAgICAvLyB0aGVtIHRvIGp1c3QgZmlsZTov
Ly8uCi0gICAgc3RyaW5nIGxvd2VyVXJsID0gdXJsOwotICAgIHRyYW5zZm9ybShsb3dlclVybC5i
ZWdpbigpLCBsb3dlclVybC5lbmQoKSwgbG93ZXJVcmwuYmVnaW4oKSwgOjp0b2xvd2VyKTsKLSAg
ICB3aGlsZSAoIWxvd2VyVXJsLmZpbmQoImZpbGU6Ly8vLyIpKSB7Ci0gICAgICAgIHVybCA9IHVy
bC5zdWJzdHIoMCwgOCkgKyB1cmwuc3Vic3RyKDkpOwotICAgICAgICBsb3dlclVybCA9IGxvd2Vy
VXJsLnN1YnN0cigwLCA4KSArIGxvd2VyVXJsLnN1YnN0cig5KTsKLSAgICB9Ci0gICAgcmVzdWx0
LT5zZXQod2Via2l0X3N1cHBvcnQ6OlJld3JpdGVMYXlvdXRUZXN0c1VSTCh1cmwpLnNwZWMoKSk7
Ci19Ci0KIAogI2lmIEVOQUJMRShOT1RJRklDQVRJT05TKQogdm9pZCBEUlRUZXN0UnVubmVyOjpn
cmFudFdlYk5vdGlmaWNhdGlvblBlcm1pc3Npb24oY29uc3QgQ3BwQXJndW1lbnRMaXN0JiBhcmd1
bWVudHMsIENwcFZhcmlhbnQqIHJlc3VsdCkKQEAgLTU4MCwxMyArNTE1LDYgQEAgdm9pZCBEUlRU
ZXN0UnVubmVyOjpkaXNwbGF5SW52YWxpZGF0ZWRSZWdpb24oY29uc3QgQ3BwQXJndW1lbnRMaXN0
JiBhcmd1bWVudHMsIEMKICAgICByZXN1bHQtPnNldE51bGwoKTsKIH0KIAotdm9pZCBEUlRUZXN0
UnVubmVyOjpzZXRQT1NJWExvY2FsZShjb25zdCBDcHBBcmd1bWVudExpc3QmIGFyZ3VtZW50cywg
Q3BwVmFyaWFudCogcmVzdWx0KQotewotICAgIHJlc3VsdC0+c2V0TnVsbCgpOwotICAgIGlmIChh
cmd1bWVudHMuc2l6ZSgpID09IDEgJiYgYXJndW1lbnRzWzBdLmlzU3RyaW5nKCkpCi0gICAgICAg
IHNldGxvY2FsZShMQ19BTEwsIGFyZ3VtZW50c1swXS50b1N0cmluZygpLmNfc3RyKCkpOwotfQot
CiB2b2lkIERSVFRlc3RSdW5uZXI6Om51bWJlck9mUGVuZGluZ0dlb2xvY2F0aW9uUGVybWlzc2lv
blJlcXVlc3RzKGNvbnN0IENwcEFyZ3VtZW50TGlzdCYgYXJndW1lbnRzLCBDcHBWYXJpYW50KiBy
ZXN1bHQpCiB7CiAgICAgcmVzdWx0LT5zZXROdWxsKCk7CkBAIC03MDIsNDAgKzYzMCw2IEBAIHZv
aWQgRFJUVGVzdFJ1bm5lcjo6d2FzTW9ja1NwZWVjaFJlY29nbml0aW9uQWJvcnRlZChjb25zdCBD
cHBBcmd1bWVudExpc3QmLCBDcHBWCiB9CiAjZW5kaWYKIAotY2xhc3MgSW52b2tlQ2FsbGJhY2tU
YXNrIDogcHVibGljIFdlYk1ldGhvZFRhc2s8RFJUVGVzdFJ1bm5lcj4gewotcHVibGljOgotICAg
IEludm9rZUNhbGxiYWNrVGFzayhEUlRUZXN0UnVubmVyKiBvYmplY3QsIFBhc3NPd25BcnJheVB0
cjxDcHBWYXJpYW50PiBjYWxsYmFja0FyZ3VtZW50cywgdWludDMyX3QgbnVtYmVyT2ZBcmd1bWVu
dHMpCi0gICAgICAgIDogV2ViTWV0aG9kVGFzazxEUlRUZXN0UnVubmVyPihvYmplY3QpCi0gICAg
ICAgICwgbV9jYWxsYmFja0FyZ3VtZW50cyhjYWxsYmFja0FyZ3VtZW50cykKLSAgICAgICAgLCBt
X251bWJlck9mQXJndW1lbnRzKG51bWJlck9mQXJndW1lbnRzKQotICAgIHsKLSAgICB9Ci0KLSAg
ICB2aXJ0dWFsIHZvaWQgcnVuSWZWYWxpZCgpCi0gICAgewotICAgICAgICBDcHBWYXJpYW50IGlu
dm9rZVJlc3VsdDsKLSAgICAgICAgbV9jYWxsYmFja0FyZ3VtZW50c1swXS5pbnZva2VEZWZhdWx0
KG1fY2FsbGJhY2tBcmd1bWVudHMuZ2V0KCksIG1fbnVtYmVyT2ZBcmd1bWVudHMsIGludm9rZVJl
c3VsdCk7Ci0gICAgfQotCi1wcml2YXRlOgotICAgIE93bkFycmF5UHRyPENwcFZhcmlhbnQ+IG1f
Y2FsbGJhY2tBcmd1bWVudHM7Ci0gICAgdWludDMyX3QgbV9udW1iZXJPZkFyZ3VtZW50czsKLX07
Ci0KLXZvaWQgRFJUVGVzdFJ1bm5lcjo6c2V0QmFja2luZ1NjYWxlRmFjdG9yKGNvbnN0IENwcEFy
Z3VtZW50TGlzdCYgYXJndW1lbnRzLCBDcHBWYXJpYW50KiByZXN1bHQpCi17Ci0gICAgaWYgKGFy
Z3VtZW50cy5zaXplKCkgPCAyIHx8ICFhcmd1bWVudHNbMF0uaXNOdW1iZXIoKSB8fCAhYXJndW1l
bnRzWzFdLmlzT2JqZWN0KCkpCi0gICAgICAgIHJldHVybjsKLSAgICAKLSAgICBmbG9hdCB2YWx1
ZSA9IGFyZ3VtZW50c1swXS52YWx1ZS5kb3VibGVWYWx1ZTsKLSAgICBtX3NoZWxsLT53ZWJWaWV3
SG9zdCgpLT5zZXREZXZpY2VTY2FsZUZhY3Rvcih2YWx1ZSk7Ci0KLSAgICBPd25BcnJheVB0cjxD
cHBWYXJpYW50PiBjYWxsYmFja0FyZ3VtZW50cyA9IGFkb3B0QXJyYXlQdHIobmV3IENwcFZhcmlh
bnRbMV0pOwotICAgIGNhbGxiYWNrQXJndW1lbnRzWzBdLnNldChhcmd1bWVudHNbMV0pOwotICAg
IHJlc3VsdC0+c2V0TnVsbCgpOwotICAgIHBvc3RUYXNrKG5ldyBJbnZva2VDYWxsYmFja1Rhc2so
dGhpcywgY2FsbGJhY2tBcmd1bWVudHMucmVsZWFzZSgpLCAxKSk7Ci19Ci0KICNpZiBFTkFCTEUo
UE9JTlRFUl9MT0NLKQogdm9pZCBEUlRUZXN0UnVubmVyOjpkaWRBY3F1aXJlUG9pbnRlckxvY2so
Y29uc3QgQ3BwQXJndW1lbnRMaXN0JiwgQ3BwVmFyaWFudCogcmVzdWx0KQogewpkaWZmIC0tZ2l0
IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vRFJUVGVzdFJ1bm5lci5oIGIvVG9vbHMv
RHVtcFJlbmRlclRyZWUvY2hyb21pdW0vRFJUVGVzdFJ1bm5lci5oCmluZGV4IGNmOTcxMDhiZjQz
ODVjNjk4OGI0Njk4NzJjOTIxZTA0ZWZhYzhmZDcuLjUxNTNmYTMwNTBlNDEyNjc3MjIzNzVjMzVm
MzgxOWQ1ZmQyODBhNDcgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVt
L0RSVFRlc3RSdW5uZXIuaAorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9EUlRU
ZXN0UnVubmVyLmgKQEAgLTkzLDEyICs5Myw2IEBAIHB1YmxpYzoKICAgICB2b2lkIHF1ZXVlTG9h
ZChjb25zdCBDcHBBcmd1bWVudExpc3QmLCBDcHBWYXJpYW50Kik7CiAgICAgdm9pZCBxdWV1ZUxv
YWRIVE1MU3RyaW5nKGNvbnN0IENwcEFyZ3VtZW50TGlzdCYsIENwcFZhcmlhbnQqKTsKIAotICAg
IC8vIENoYW5nZXMgdGhlIGNvb2tpZSBwb2xpY3kgZnJvbSB0aGUgZGVmYXVsdCB0byBhbGxvdyBh
bGwgY29va2llcy4KLSAgICB2b2lkIHNldEFsd2F5c0FjY2VwdENvb2tpZXMoY29uc3QgQ3BwQXJn
dW1lbnRMaXN0JiwgQ3BwVmFyaWFudCopOwotCi0gICAgLy8gR2l2ZXMgZm9jdXMgdG8gdGhlIHdp
bmRvdy4KLSAgICB2b2lkIHNldFdpbmRvd0lzS2V5KGNvbnN0IENwcEFyZ3VtZW50TGlzdCYsIENw
cFZhcmlhbnQqKTsKLQogCiAgICAgLy8gQ2F1c2VzIG5hdmlnYXRpb24gYWN0aW9ucyBqdXN0IHBy
aW50b3V0IHRoZSBpbnRlbmRlZCBuYXZpZ2F0aW9uIGluc3RlYWQKICAgICAvLyBvZiB0YWtpbmcg
eW91IHRvIHRoZSBwYWdlLiBUaGlzIGlzIHVzZWQgZm9yIGNhc2VzIGxpa2UgbWFpbHRvLCB3aGVy
ZSB5b3UKQEAgLTExNyw5ICsxMTEsNiBAQCBwdWJsaWM6CiAgICAgLy8gQ2F1c2VzIFdpbGxTZW5k
UmVxdWVzdCB0byByZXR1cm4gYW4gZW1wdHkgcmVxdWVzdC4KICAgICB2b2lkIHNldFdpbGxTZW5k
UmVxdWVzdFJldHVybnNOdWxsKGNvbnN0IENwcEFyZ3VtZW50TGlzdCYsIENwcFZhcmlhbnQqKTsK
IAotICAgIC8vIENvbnZlcnRzIGEgVVJMIHN0YXJ0aW5nIHdpdGggZmlsZTovLy90bXAvIHRvIHRo
ZSBsb2NhbCBtYXBwaW5nLgotICAgIHZvaWQgcGF0aFRvTG9jYWxSZXNvdXJjZShjb25zdCBDcHBB
cmd1bWVudExpc3QmLCBDcHBWYXJpYW50Kik7Ci0KICNpZiBFTkFCTEUoTk9USUZJQ0FUSU9OUykK
ICAgICAvLyBHcmFudHMgcGVybWlzc2lvbiBmb3IgZGVza3RvcCBub3RpZmljYXRpb25zIHRvIGFu
IG9yaWdpbgogICAgIHZvaWQgZ3JhbnRXZWJOb3RpZmljYXRpb25QZXJtaXNzaW9uKGNvbnN0IENw
cEFyZ3VtZW50TGlzdCYsIENwcFZhcmlhbnQqKTsKQEAgLTEzMCwxMCArMTIxLDYgQEAgcHVibGlj
OgogICAgIHZvaWQgZGlzcGxheShjb25zdCBDcHBBcmd1bWVudExpc3QmLCBDcHBWYXJpYW50Kik7
CiAgICAgdm9pZCBkaXNwbGF5SW52YWxpZGF0ZWRSZWdpb24oY29uc3QgQ3BwQXJndW1lbnRMaXN0
JiwgQ3BwVmFyaWFudCopOwogCi0gICAgLy8gQ2FsbHMgc2V0bG9jYWxlKExDX0FMTCwgLi4uKSBm
b3IgYSBzcGVjaWZpZWQgbG9jYWxlLgotICAgIC8vIFJlc2V0cyBiZXR3ZWVuIHRlc3RzLgotICAg
IHZvaWQgc2V0UE9TSVhMb2NhbGUoY29uc3QgQ3BwQXJndW1lbnRMaXN0JiwgQ3BwVmFyaWFudCop
OwotCiAgICAgLy8gR2V0cyB0aGUgbnVtYmVyIG9mIGdlb2xvY2F0aW9uIHBlcm1pc3Npb25zIHJl
cXVlc3RzIHBlbmRpbmcuCiAgICAgdm9pZCBudW1iZXJPZlBlbmRpbmdHZW9sb2NhdGlvblBlcm1p
c3Npb25SZXF1ZXN0cyhjb25zdCBDcHBBcmd1bWVudExpc3QmLCBDcHBWYXJpYW50Kik7CiAKQEAg
LTE2NCw5ICsxNTEsNiBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRQb2ludGVyTG9ja1dpbGxSZXNw
b25kQXN5bmNocm9ub3VzbHkoY29uc3QgQ3BwQXJndW1lbnRMaXN0JiwgQ3BwVmFyaWFudCopOwog
I2VuZGlmCiAKLSAgICAvLyBVc2VkIHRvIHNldCB0aGUgZGV2aWNlIHNjYWxlIGZhY3Rvci4KLSAg
ICB2b2lkIHNldEJhY2tpbmdTY2FsZUZhY3Rvcihjb25zdCBDcHBBcmd1bWVudExpc3QmLCBDcHBW
YXJpYW50Kik7Ci0KIHB1YmxpYzoKICAgICAvLyBUaGUgZm9sbG93aW5nIG1ldGhvZHMgYXJlIG5v
dCBleHBvc2VkIHRvIEphdmFTY3JpcHQuCiAgICAgdm9pZCBzZXRXb3JrUXVldWVGcm96ZW4oYm9v
bCBmcm96ZW4pIHsgbV93b3JrUXVldWUuc2V0RnJvemVuKGZyb3plbik7IH0KQEAgLTE5OCw4ICsx
ODIsNiBAQCBwdWJsaWM6CiAgICAgICAgIHZpcnR1YWwgYm9vbCBydW4oVGVzdFNoZWxsKikgPSAw
OwogICAgIH07CiAKLSAgICBXZWJUYXNrTGlzdCogdGFza0xpc3QoKSB7IHJldHVybiAmbV90YXNr
TGlzdDsgfQotCiBwcml2YXRlOgogICAgIGZyaWVuZCBjbGFzcyBXb3JrSXRlbTsKICAgICBmcmll
bmQgY2xhc3MgV29ya1F1ZXVlOwpAQCAtMjQxLDkgKzIyMyw2IEBAIHByaXZhdGU6CiAgICAgICAg
IHZpcnR1YWwgdm9pZCBydW5JZlZhbGlkKCkgeyBtX29iamVjdC0+Y29tcGxldGVOb3RpZnlEb25l
KHRydWUpOyB9CiAgICAgfTsKIAotICAgIC8vIFVzZWQgZm9yIHRlc3QgdGltZW91dHMuCi0gICAg
V2ViVGFza0xpc3QgbV90YXNrTGlzdDsKLQogICAgIC8vIE5vbi1vd25pbmcgcG9pbnRlci4gVGhl
IERSVFRlc3RSdW5uZXIgaXMgb3duZWQgYnkgdGhlIGhvc3QuCiAgICAgVGVzdFNoZWxsKiBtX3No
ZWxsOwogCmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVu
bmVyL3B1YmxpYy9XZWJUZXN0RGVsZWdhdGUuaCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9t
aXVtL1Rlc3RSdW5uZXIvcHVibGljL1dlYlRlc3REZWxlZ2F0ZS5oCmluZGV4IGQ0YmIyOWI4ZGU4
MDE1OWE5N2Q3NzA0M2UxNzhiYTg1YjBlZGJhNDIuLjRmODA4OWM0MGVhYTU2NDc4ZmEzOTA1NzMw
NmM4MWUwNTE3OTc3OWQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVt
L1Rlc3RSdW5uZXIvcHVibGljL1dlYlRlc3REZWxlZ2F0ZS5oCisrKyBiL1Rvb2xzL0R1bXBSZW5k
ZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvcHVibGljL1dlYlRlc3REZWxlZ2F0ZS5oCkBAIC04
Nyw2ICs4NywxMSBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGV2YWx1YXRlSW5XZWJJbnNw
ZWN0b3IobG9uZywgY29uc3Qgc3RkOjpzdHJpbmcmKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgY2xl
YXJBbGxEYXRhYmFzZXMoKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgc2V0RGF0YWJhc2VRdW90YShp
bnQpIHsgfQorICAgIHZpcnR1YWwgdm9pZCBzZXREZXZpY2VTY2FsZUZhY3RvcihmbG9hdCkgeyB9
CisgICAgdmlydHVhbCB2b2lkIHNldEZvY3VzKGJvb2wpIHsgfQorICAgIHZpcnR1YWwgdm9pZCBz
ZXRBY2NlcHRBbGxDb29raWVzKGJvb2wpIHsgfQorICAgIHZpcnR1YWwgc3RkOjpzdHJpbmcgcGF0
aFRvTG9jYWxSZXNvdXJjZShjb25zdCBzdGQ6OnN0cmluZyYgcmVzb3VyY2UpIHsgcmV0dXJuIHN0
ZDo6c3RyaW5nKCk7IH0KKyAgICB2aXJ0dWFsIHZvaWQgc2V0TG9jYWxlKGNvbnN0IHN0ZDo6c3Ry
aW5nJikgeyB9CiB9OwogCiB9CmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJv
bWl1bS9UZXN0UnVubmVyL3NyYy9UZXN0UnVubmVyLmNwcCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVl
L2Nocm9taXVtL1Rlc3RSdW5uZXIvc3JjL1Rlc3RSdW5uZXIuY3BwCmluZGV4IDNjMzg4NGE3ZTBi
ZjE4MDA3ZWU0NjMxZTNlYjJjMDM3NTFiZmY3OGMuLmRiMzc5YjdmMGQ5ZmVjZTZhOWU3ZWE5NDc2
YjA0Zjk2Y2E0OGQ1OGQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVt
L1Rlc3RSdW5uZXIvc3JjL1Rlc3RSdW5uZXIuY3BwCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVl
L2Nocm9taXVtL1Rlc3RSdW5uZXIvc3JjL1Rlc3RSdW5uZXIuY3BwCkBAIC00NywxMiArNDcsMTQg
QEAKICNpbmNsdWRlICJXZWJTZWN1cml0eVBvbGljeS5oIgogI2luY2x1ZGUgIldlYlNldHRpbmdz
LmgiCiAjaW5jbHVkZSAiV2ViU3Vycm91bmRpbmdUZXh0LmgiCisjaW5jbHVkZSAiV2ViVGFzay5o
IgogI2luY2x1ZGUgIldlYlRlc3REZWxlZ2F0ZS5oIgogI2luY2x1ZGUgIldlYlZpZXcuaCIKICNp
bmNsdWRlICJXZWJXb3JrZXJJbmZvLmgiCiAjaW5jbHVkZSAicGxhdGZvcm0vV2ViUG9pbnQuaCIK
ICNpbmNsdWRlICJwbGF0Zm9ybS9XZWJTZXJpYWxpemVkU2NyaXB0VmFsdWUuaCIKICNpbmNsdWRl
ICJ2OC9pbmNsdWRlL3Y4LmgiCisjaW5jbHVkZSA8d3RmL093bkFycmF5UHRyLmg+CiAjaW5jbHVk
ZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKICNpZiBPUyhMSU5VWCkgfHwgT1MoQU5EUk9JRCkK
QEAgLTc2LDYgKzc4LDI2IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgZGVzdHJveSgpIHsg
fQogfTsKIAorY2xhc3MgSW52b2tlQ2FsbGJhY2tUYXNrIDogcHVibGljIFdlYk1ldGhvZFRhc2s8
VGVzdFJ1bm5lcj4geworcHVibGljOgorICAgIEludm9rZUNhbGxiYWNrVGFzayhUZXN0UnVubmVy
KiBvYmplY3QsIFBhc3NPd25BcnJheVB0cjxDcHBWYXJpYW50PiBjYWxsYmFja0FyZ3VtZW50cywg
dWludDMyX3QgbnVtYmVyT2ZBcmd1bWVudHMpCisgICAgICAgIDogV2ViTWV0aG9kVGFzazxUZXN0
UnVubmVyPihvYmplY3QpCisgICAgICAgICwgbV9jYWxsYmFja0FyZ3VtZW50cyhjYWxsYmFja0Fy
Z3VtZW50cykKKyAgICAgICAgLCBtX251bWJlck9mQXJndW1lbnRzKG51bWJlck9mQXJndW1lbnRz
KQorICAgIHsKKyAgICB9CisKKyAgICB2aXJ0dWFsIHZvaWQgcnVuSWZWYWxpZCgpCisgICAgewor
ICAgICAgICBDcHBWYXJpYW50IGludm9rZVJlc3VsdDsKKyAgICAgICAgbV9jYWxsYmFja0FyZ3Vt
ZW50c1swXS5pbnZva2VEZWZhdWx0KG1fY2FsbGJhY2tBcmd1bWVudHMuZ2V0KCksIG1fbnVtYmVy
T2ZBcmd1bWVudHMsIGludm9rZVJlc3VsdCk7CisgICAgfQorCitwcml2YXRlOgorICAgIE93bkFy
cmF5UHRyPENwcFZhcmlhbnQ+IG1fY2FsbGJhY2tBcmd1bWVudHM7CisgICAgdWludDMyX3QgbV9u
dW1iZXJPZkFyZ3VtZW50czsKK307CisKIH0KIAogVGVzdFJ1bm5lcjo6VGVzdFJ1bm5lcigpCkBA
IC0xODAsNiArMjAyLDExIEBAIFRlc3RSdW5uZXI6OlRlc3RSdW5uZXIoKQogICAgIGJpbmRNZXRo
b2QoImV2YWx1YXRlSW5XZWJJbnNwZWN0b3IiLCAmVGVzdFJ1bm5lcjo6ZXZhbHVhdGVJbldlYklu
c3BlY3Rvcik7CiAgICAgYmluZE1ldGhvZCgiY2xlYXJBbGxEYXRhYmFzZXMiLCAmVGVzdFJ1bm5l
cjo6Y2xlYXJBbGxEYXRhYmFzZXMpOwogICAgIGJpbmRNZXRob2QoInNldERhdGFiYXNlUXVvdGEi
LCAmVGVzdFJ1bm5lcjo6c2V0RGF0YWJhc2VRdW90YSk7CisgICAgYmluZE1ldGhvZCgic2V0QWx3
YXlzQWNjZXB0Q29va2llcyIsICZUZXN0UnVubmVyOjpzZXRBbHdheXNBY2NlcHRDb29raWVzKTsK
KyAgICBiaW5kTWV0aG9kKCJzZXRXaW5kb3dJc0tleSIsICZUZXN0UnVubmVyOjpzZXRXaW5kb3dJ
c0tleSk7CisgICAgYmluZE1ldGhvZCgicGF0aFRvTG9jYWxSZXNvdXJjZSIsICZUZXN0UnVubmVy
OjpwYXRoVG9Mb2NhbFJlc291cmNlKTsKKyAgICBiaW5kTWV0aG9kKCJzZXRCYWNraW5nU2NhbGVG
YWN0b3IiLCAmVGVzdFJ1bm5lcjo6c2V0QmFja2luZ1NjYWxlRmFjdG9yKTsKKyAgICBiaW5kTWV0
aG9kKCJzZXRQT1NJWExvY2FsZSIsICZUZXN0UnVubmVyOjpzZXRQT1NJWExvY2FsZSk7CiAKICAg
ICAvLyBQcm9wZXJ0aWVzLgogICAgIGJpbmRQcm9wZXJ0eSgid29ya2VyVGhyZWFkQ291bnQiLCAm
VGVzdFJ1bm5lcjo6d29ya2VyVGhyZWFkQ291bnQpOwpAQCAtMjQ5LDYgKzI3Niw5IEBAIHZvaWQg
VGVzdFJ1bm5lcjo6cmVzZXQoKQogCiAgICAgLy8gUmVzZXQgdGhlIGRlZmF1bHQgcXVvdGEgZm9y
IGVhY2ggb3JpZ2luIHRvIDVNQgogICAgIG1fZGVsZWdhdGUtPnNldERhdGFiYXNlUXVvdGEoNSAq
IDEwMjQgKiAxMDI0KTsKKyAgICBtX2RlbGVnYXRlLT5zZXREZXZpY2VTY2FsZUZhY3RvcigxKTsK
KyAgICBtX2RlbGVnYXRlLT5zZXRBY2NlcHRBbGxDb29raWVzKGZhbHNlKTsKKyAgICBtX2RlbGVn
YXRlLT5zZXRMb2NhbGUoIiIpOwogCiAgICAgbV9kdW1wRWRpdGluZ0NhbGxiYWNrcyA9IGZhbHNl
OwogICAgIG1fZHVtcEFzVGV4dCA9IGZhbHNlOwpAQCAtMjgyLDYgKzMxMiw4IEBAIHZvaWQgVGVz
dFJ1bm5lcjo6cmVzZXQoKQogICAgIG1fdXNlclN0eWxlU2hlZXRMb2NhdGlvbiA9IFdlYlVSTCgp
OwogCiAgICAgbV93ZWJQZXJtaXNzaW9ucy0+cmVzZXQoKTsKKworICAgIG1fdGFza0xpc3QucmV2
b2tlQWxsKCk7CiB9CiAKIHZvaWQgVGVzdFJ1bm5lcjo6c2V0VGVzdElzUnVubmluZyhib29sIHJ1
bm5pbmcpCkBAIC0xMzIwLDYgKzEzNTIsNTAgQEAgdm9pZCBUZXN0UnVubmVyOjpzZXREYXRhYmFz
ZVF1b3RhKGNvbnN0IENwcEFyZ3VtZW50TGlzdCYgYXJndW1lbnRzLCBDcHBWYXJpYW50KgogICAg
ICAgICBtX2RlbGVnYXRlLT5zZXREYXRhYmFzZVF1b3RhKGFyZ3VtZW50c1swXS50b0ludDMyKCkp
OwogfQogCit2b2lkIFRlc3RSdW5uZXI6OnNldEFsd2F5c0FjY2VwdENvb2tpZXMoY29uc3QgQ3Bw
QXJndW1lbnRMaXN0JiBhcmd1bWVudHMsIENwcFZhcmlhbnQqIHJlc3VsdCkKK3sKKyAgICBpZiAo
YXJndW1lbnRzLnNpemUoKSA+IDApCisgICAgICAgIG1fZGVsZWdhdGUtPnNldEFjY2VwdEFsbENv
b2tpZXMoY3BwVmFyaWFudFRvQm9vbChhcmd1bWVudHNbMF0pKTsKKyAgICByZXN1bHQtPnNldE51
bGwoKTsKK30KKwordm9pZCBUZXN0UnVubmVyOjpzZXRXaW5kb3dJc0tleShjb25zdCBDcHBBcmd1
bWVudExpc3QmIGFyZ3VtZW50cywgQ3BwVmFyaWFudCogcmVzdWx0KQoreworICAgIGlmIChhcmd1
bWVudHMuc2l6ZSgpID4gMCAmJiBhcmd1bWVudHNbMF0uaXNCb29sKCkpCisgICAgICAgIG1fZGVs
ZWdhdGUtPnNldEZvY3VzKGFyZ3VtZW50c1swXS52YWx1ZS5ib29sVmFsdWUpOworICAgIHJlc3Vs
dC0+c2V0TnVsbCgpOworfQorCit2b2lkIFRlc3RSdW5uZXI6OnBhdGhUb0xvY2FsUmVzb3VyY2Uo
Y29uc3QgQ3BwQXJndW1lbnRMaXN0JiBhcmd1bWVudHMsIENwcFZhcmlhbnQqIHJlc3VsdCkKK3sK
KyAgICByZXN1bHQtPnNldE51bGwoKTsKKyAgICBpZiAoYXJndW1lbnRzLnNpemUoKSA8PSAwIHx8
ICFhcmd1bWVudHNbMF0uaXNTdHJpbmcoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgcmVzdWx0
LT5zZXQobV9kZWxlZ2F0ZS0+cGF0aFRvTG9jYWxSZXNvdXJjZShhcmd1bWVudHNbMF0udG9TdHJp
bmcoKSkpOworfQorCit2b2lkIFRlc3RSdW5uZXI6OnNldEJhY2tpbmdTY2FsZUZhY3Rvcihjb25z
dCBDcHBBcmd1bWVudExpc3QmIGFyZ3VtZW50cywgQ3BwVmFyaWFudCogcmVzdWx0KQoreworICAg
IGlmIChhcmd1bWVudHMuc2l6ZSgpIDwgMiB8fCAhYXJndW1lbnRzWzBdLmlzTnVtYmVyKCkgfHwg
IWFyZ3VtZW50c1sxXS5pc09iamVjdCgpKQorICAgICAgICByZXR1cm47CisKKyAgICBmbG9hdCB2
YWx1ZSA9IGFyZ3VtZW50c1swXS52YWx1ZS5kb3VibGVWYWx1ZTsKKyAgICBtX2RlbGVnYXRlLT5z
ZXREZXZpY2VTY2FsZUZhY3Rvcih2YWx1ZSk7CisKKyAgICBPd25BcnJheVB0cjxDcHBWYXJpYW50
PiBjYWxsYmFja0FyZ3VtZW50cyA9IGFkb3B0QXJyYXlQdHIobmV3IENwcFZhcmlhbnRbMV0pOwor
ICAgIGNhbGxiYWNrQXJndW1lbnRzWzBdLnNldChhcmd1bWVudHNbMV0pOworICAgIHJlc3VsdC0+
c2V0TnVsbCgpOworICAgIG1fZGVsZWdhdGUtPnBvc3RUYXNrKG5ldyBJbnZva2VDYWxsYmFja1Rh
c2sodGhpcywgY2FsbGJhY2tBcmd1bWVudHMucmVsZWFzZSgpLCAxKSk7Cit9CisKK3ZvaWQgVGVz
dFJ1bm5lcjo6c2V0UE9TSVhMb2NhbGUoY29uc3QgQ3BwQXJndW1lbnRMaXN0JiBhcmd1bWVudHMs
IENwcFZhcmlhbnQqIHJlc3VsdCkKK3sKKyAgICByZXN1bHQtPnNldE51bGwoKTsKKyAgICBpZiAo
YXJndW1lbnRzLnNpemUoKSA9PSAxICYmIGFyZ3VtZW50c1swXS5pc1N0cmluZygpKQorICAgICAg
ICBtX2RlbGVnYXRlLT5zZXRMb2NhbGUoYXJndW1lbnRzWzBdLnRvU3RyaW5nKCkpOworfQorCiB2
b2lkIFRlc3RSdW5uZXI6OmR1bXBFZGl0aW5nQ2FsbGJhY2tzKGNvbnN0IENwcEFyZ3VtZW50TGlz
dCYsIENwcFZhcmlhbnQqIHJlc3VsdCkKIHsKICAgICBtX2R1bXBFZGl0aW5nQ2FsbGJhY2tzID0g
dHJ1ZTsKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5u
ZXIvc3JjL1Rlc3RSdW5uZXIuaCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RS
dW5uZXIvc3JjL1Rlc3RSdW5uZXIuaAppbmRleCAyNTFhY2VlYTdkZGFlZGQ1ZDU5YTllMDg4YTMw
NmQ5YzI4MWMyOTcxLi43YmRhN2JlZTk3NDE3NjUzNzc5ZjJiMzUyNWMwZDQ3OWVmYzgyNzhmIDEw
MDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9U
ZXN0UnVubmVyLmgKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5l
ci9zcmMvVGVzdFJ1bm5lci5oCkBAIC0zNCw2ICszNCw3IEBACiAKICNpbmNsdWRlICJDcHBCb3Vu
ZENsYXNzLmgiCiAjaW5jbHVkZSAiV2ViRGVsaXZlcmVkSW50ZW50Q2xpZW50LmgiCisjaW5jbHVk
ZSAiV2ViVGFzay5oIgogI2luY2x1ZGUgIldlYlRlc3RSdW5uZXIuaCIKICNpbmNsdWRlICJwbGF0
Zm9ybS9XZWJBcnJheUJ1ZmZlclZpZXcuaCIKICNpbmNsdWRlICJwbGF0Zm9ybS9XZWJVUkwuaCIK
QEAgLTU5LDYgKzYwLDggQEAgcHVibGljOgogCiAgICAgdm9pZCByZXNldCgpOwogCisgICAgV2Vi
VGFza0xpc3QqIHRhc2tMaXN0KCkgeyByZXR1cm4gJm1fdGFza0xpc3Q7IH0KKwogICAgIC8vIFdl
YlRlc3RSdW5uZXIgaW1wbGVtZW50YXRpb24uCiAgICAgdmlydHVhbCB2b2lkIHNldFRlc3RJc1J1
bm5pbmcoYm9vbCkgT1ZFUlJJREU7CiAgICAgdmlydHVhbCBib29sIHNob3VsZER1bXBFZGl0aW5n
Q2FsbGJhY2tzKCkgY29uc3QgT1ZFUlJJREU7CkBAIC0zMzcsMTEgKzM0MCwyNyBAQCBwcml2YXRl
OgogICAgIC8vIFNldHMgdGhlIGRlZmF1bHQgcXVvdGEgZm9yIGFsbCBvcmlnaW5zCiAgICAgdm9p
ZCBzZXREYXRhYmFzZVF1b3RhKGNvbnN0IENwcEFyZ3VtZW50TGlzdCYsIENwcFZhcmlhbnQqKTsK
IAorICAgIC8vIENoYW5nZXMgdGhlIGNvb2tpZSBwb2xpY3kgZnJvbSB0aGUgZGVmYXVsdCB0byBh
bGxvdyBhbGwgY29va2llcy4KKyAgICB2b2lkIHNldEFsd2F5c0FjY2VwdENvb2tpZXMoY29uc3Qg
Q3BwQXJndW1lbnRMaXN0JiwgQ3BwVmFyaWFudCopOworCisgICAgLy8gR2l2ZXMgZm9jdXMgdG8g
dGhlIHdpbmRvdy4KKyAgICB2b2lkIHNldFdpbmRvd0lzS2V5KGNvbnN0IENwcEFyZ3VtZW50TGlz
dCYsIENwcFZhcmlhbnQqKTsKKworICAgIC8vIENvbnZlcnRzIGEgVVJMIHN0YXJ0aW5nIHdpdGgg
ZmlsZTovLy90bXAvIHRvIHRoZSBsb2NhbCBtYXBwaW5nLgorICAgIHZvaWQgcGF0aFRvTG9jYWxS
ZXNvdXJjZShjb25zdCBDcHBBcmd1bWVudExpc3QmLCBDcHBWYXJpYW50Kik7CisKKyAgICAvLyBV
c2VkIHRvIHNldCB0aGUgZGV2aWNlIHNjYWxlIGZhY3Rvci4KKyAgICB2b2lkIHNldEJhY2tpbmdT
Y2FsZUZhY3Rvcihjb25zdCBDcHBBcmd1bWVudExpc3QmLCBDcHBWYXJpYW50Kik7CisKKyAgICAv
LyBDYWxscyBzZXRsb2NhbGUoTENfQUxMLCAuLi4pIGZvciBhIHNwZWNpZmllZCBsb2NhbGUuCisg
ICAgLy8gUmVzZXRzIGJldHdlZW4gdGVzdHMuCisgICAgdm9pZCBzZXRQT1NJWExvY2FsZShjb25z
dCBDcHBBcmd1bWVudExpc3QmLCBDcHBWYXJpYW50Kik7CisKICAgICAvLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8KICAgICAvLyBQcm9wZXJ0aWVzCiAgICAgdm9pZCB3b3JrZXJUaHJlYWRDb3VudChDcHBWYXJp
YW50Kik7CiAKLSAgICAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KKyAgICAvLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwog
ICAgIC8vIEZhbGxiYWNrIGFuZCBzdHViIG1ldGhvZHMKIAogICAgIC8vIFRoZSBmYWxsYmFjayBt
ZXRob2QgaXMgY2FsbGVkIHdoZW4gYSBub25leGlzdGVudCBtZXRob2QgaXMgY2FsbGVkIG9uCkBA
IC00NjYsNiArNDg1LDkgQEAgcHJpdmF0ZToKICAgICAvLyBXQVYgYXVkaW8gZGF0YSBpcyBzdG9y
ZWQgaGVyZS4KICAgICBXZWJLaXQ6OldlYkFycmF5QnVmZmVyVmlldyBtX2F1ZGlvRGF0YTsKIAor
ICAgIC8vIFVzZWQgZm9yIHRlc3QgdGltZW91dHMuCisgICAgV2ViVGFza0xpc3QgbV90YXNrTGlz
dDsKKwogICAgIFdlYlRlc3REZWxlZ2F0ZSogbV9kZWxlZ2F0ZTsKICAgICBXZWJLaXQ6OldlYlZp
ZXcqIG1fd2ViVmlldzsKIApkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21p
dW0vV2ViVmlld0hvc3QuY3BwIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vV2ViVmll
d0hvc3QuY3BwCmluZGV4IGE5ZmFhOTk3MDYyNzRlZjRhZGU1OTU4ZWUxNTJhOTAyMjE4YjAzMTcu
LjZhYjY5M2E3MGIxNWY2YThlNGQ4Nzg5MDdkYzk1YWYwZjJlNWFjMzEgMTAwNjQ0Ci0tLSBhL1Rv
b2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1dlYlZpZXdIb3N0LmNwcAorKysgYi9Ub29scy9E
dW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9XZWJWaWV3SG9zdC5jcHAKQEAgLTcwLDYgKzcwLDggQEAK
ICNpbmNsdWRlICJza2lhL2V4dC9wbGF0Zm9ybV9jYW52YXMuaCIKICNpbmNsdWRlICJ3ZWJraXQv
c3VwcG9ydC90ZXN0X21lZGlhX3N0cmVhbV9jbGllbnQuaCIKICNpbmNsdWRlICJ3ZWJraXQvc3Vw
cG9ydC93ZWJraXRfc3VwcG9ydC5oIgorI2luY2x1ZGUgPGNjdHlwZT4KKyNpbmNsdWRlIDxjbG9j
YWxlPgogI2luY2x1ZGUgPHB1YmxpYy9XZWJDU3RyaW5nLmg+CiAjaW5jbHVkZSA8cHVibGljL1dl
YkNvbXBvc2l0b3JPdXRwdXRTdXJmYWNlLmg+CiAjaW5jbHVkZSA8cHVibGljL1dlYkNvbXBvc2l0
b3JTdXBwb3J0Lmg+CkBAIC0xMDc4LDYgKzEwODAsNjAgQEAgdm9pZCBXZWJWaWV3SG9zdDo6c2V0
RGF0YWJhc2VRdW90YShpbnQgcXVvdGEpCiAgICAgd2Via2l0X3N1cHBvcnQ6OlNldERhdGFiYXNl
UXVvdGEocXVvdGEpOwogfQogCit2b2lkIFdlYlZpZXdIb3N0OjpzZXREZXZpY2VTY2FsZUZhY3Rv
cihmbG9hdCBkZXZpY2VTY2FsZUZhY3RvcikKK3sKKyAgICB3ZWJWaWV3KCktPnNldERldmljZVNj
YWxlRmFjdG9yKGRldmljZVNjYWxlRmFjdG9yKTsKKyAgICBkaXNjYXJkQmFja2luZ1N0b3JlKCk7
Cit9CisKK3ZvaWQgV2ViVmlld0hvc3Q6OnNldEZvY3VzKGJvb2wgZm9jdXNlZCkKK3sKKyAgICBt
X3NoZWxsLT5zZXRGb2N1cyhtX3NoZWxsLT53ZWJWaWV3KCksIGZvY3VzZWQpOworfQorCit2b2lk
IFdlYlZpZXdIb3N0OjpzZXRBY2NlcHRBbGxDb29raWVzKGJvb2wgYWNjZXB0Q29va2llcykKK3sK
KyAgICB3ZWJraXRfc3VwcG9ydDo6U2V0QWNjZXB0QWxsQ29va2llcyhhY2NlcHRDb29raWVzKTsK
K30KKworc3RyaW5nIFdlYlZpZXdIb3N0OjpwYXRoVG9Mb2NhbFJlc291cmNlKGNvbnN0IHN0cmlu
ZyYgdXJsKQoreworI2lmIE9TKFdJTkRPV1MpCisgICAgaWYgKCF1cmwuZmluZCgiL3RtcC8iKSkg
eworICAgICAgICAvLyBXZSB3YW50IGEgdGVtcCBmaWxlLgorICAgICAgICBjb25zdCB1bnNpZ25l
ZCB0ZW1wUHJlZml4TGVuZ3RoID0gNTsKKyAgICAgICAgc2l6ZV90IGJ1ZmZlclNpemUgPSBNQVhf
UEFUSDsKKyAgICAgICAgT3duQXJyYXlQdHI8V0NIQVI+IHRlbXBQYXRoID0gYWRvcHRBcnJheVB0
cihuZXcgV0NIQVJbYnVmZmVyU2l6ZV0pOworICAgICAgICBEV09SRCB0ZW1wTGVuZ3RoID0gOjpH
ZXRUZW1wUGF0aFcoYnVmZmVyU2l6ZSwgdGVtcFBhdGguZ2V0KCkpOworICAgICAgICBpZiAodGVt
cExlbmd0aCArIHVybC5sZW5ndGgoKSAtIHRlbXBQcmVmaXhMZW5ndGggKyAxID4gYnVmZmVyU2l6
ZSkgeworICAgICAgICAgICAgYnVmZmVyU2l6ZSA9IHRlbXBMZW5ndGggKyB1cmwubGVuZ3RoKCkg
LSB0ZW1wUHJlZml4TGVuZ3RoICsgMTsKKyAgICAgICAgICAgIHRlbXBQYXRoID0gYWRvcHRBcnJh
eVB0cihuZXcgV0NIQVJbYnVmZmVyU2l6ZV0pOworICAgICAgICAgICAgdGVtcExlbmd0aCA9IEdl
dFRlbXBQYXRoVyhidWZmZXJTaXplLCB0ZW1wUGF0aC5nZXQoKSk7CisgICAgICAgICAgICBBU1NF
UlQodGVtcExlbmd0aCA8IGJ1ZmZlclNpemUpOworICAgICAgICB9CisgICAgICAgIHN0cmluZyBy
ZXN1bHRQYXRoKFdlYlN0cmluZyh0ZW1wUGF0aC5nZXQoKSwgdGVtcExlbmd0aCkudXRmOCgpKTsK
KyAgICAgICAgcmVzdWx0UGF0aC5hcHBlbmQodXJsLnN1YnN0cih0ZW1wUHJlZml4TGVuZ3RoKSk7
CisgICAgICAgIHJldHVybiByZXN1bHRQYXRoOworICAgIH0KKyNlbmRpZgorCisgICAgLy8gU29t
ZSBsYXlvdXQgdGVzdHMgdXNlIGZpbGU6Ly8vLyB3aGljaCB3ZSByZXNvbHZlIGFzIGEgVU5DIHBh
dGguIE5vcm1hbGl6ZQorICAgIC8vIHRoZW0gdG8ganVzdCBmaWxlOi8vLy4KKyAgICBzdHJpbmcg
bG93ZXJVcmwgPSB1cmw7CisgICAgc3RyaW5nIHJlc3VsdCA9IHVybDsKKyAgICB0cmFuc2Zvcm0o
bG93ZXJVcmwuYmVnaW4oKSwgbG93ZXJVcmwuZW5kKCksIGxvd2VyVXJsLmJlZ2luKCksIDo6dG9s
b3dlcik7CisgICAgd2hpbGUgKCFsb3dlclVybC5maW5kKCJmaWxlOi8vLy8iKSkgeworICAgICAg
ICByZXN1bHQgPSByZXN1bHQuc3Vic3RyKDAsIDgpICsgcmVzdWx0LnN1YnN0cig5KTsKKyAgICAg
ICAgbG93ZXJVcmwgPSBsb3dlclVybC5zdWJzdHIoMCwgOCkgKyBsb3dlclVybC5zdWJzdHIoOSk7
CisgICAgfQorICAgIHJldHVybiB3ZWJraXRfc3VwcG9ydDo6UmV3cml0ZUxheW91dFRlc3RzVVJM
KHJlc3VsdCkuc3BlYygpOworfQorCit2b2lkIFdlYlZpZXdIb3N0OjpzZXRMb2NhbGUoY29uc3Qg
c3RkOjpzdHJpbmcmIGxvY2FsZSkKK3sKKyAgICBzZXRsb2NhbGUoTENfQUxMLCBsb2NhbGUuY19z
dHIoKSk7Cit9CisKIC8vIFB1YmxpYyBmdW5jdGlvbnMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAogV2ViVmlld0hvc3Q6OldlYlZp
ZXdIb3N0KFRlc3RTaGVsbCogc2hlbGwpCkBAIC0xNDAxLDEyICsxNDU3LDYgQEAgdm9pZCBXZWJW
aWV3SG9zdDo6c2V0UGVuZGluZ0V4dHJhRGF0YShQYXNzT3duUHRyPFRlc3RTaGVsbEV4dHJhRGF0
YT4gZXh0cmFEYXRhKQogICAgIG1fcGVuZGluZ0V4dHJhRGF0YSA9IGV4dHJhRGF0YTsKIH0KIAot
dm9pZCBXZWJWaWV3SG9zdDo6c2V0RGV2aWNlU2NhbGVGYWN0b3IoZmxvYXQgZGV2aWNlU2NhbGVG
YWN0b3IpCi17Ci0gICAgd2ViVmlldygpLT5zZXREZXZpY2VTY2FsZUZhY3RvcihkZXZpY2VTY2Fs
ZUZhY3Rvcik7Ci0gICAgZGlzY2FyZEJhY2tpbmdTdG9yZSgpOwotfQotCiB2b2lkIFdlYlZpZXdI
b3N0OjpzZXRQYWdlVGl0bGUoY29uc3QgV2ViU3RyaW5nJikKIHsKICAgICAvLyBOb3RoaW5nIHRv
IGRvIGluIGxheW91dCB0ZXN0LgpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hy
b21pdW0vV2ViVmlld0hvc3QuaCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1dlYlZp
ZXdIb3N0LmgKaW5kZXggZGQwZTRkMDY2ZjVkNmY5M2RjMGQ0MjZiZDYzMmQ4YjkzNzNmYjExZS4u
NWQxMTE5OWY0NzAyYWM1NGM1ZGU2MTUzMzFjOTkyNzI4OWEzMWIxMyAxMDA2NDQKLS0tIGEvVG9v
bHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vV2ViVmlld0hvc3QuaAorKysgYi9Ub29scy9EdW1w
UmVuZGVyVHJlZS9jaHJvbWl1bS9XZWJWaWV3SG9zdC5oCkBAIC05Niw3ICs5Niw2IEBAIGNsYXNz
IFdlYlZpZXdIb3N0IDogcHVibGljIFdlYktpdDo6V2ViVmlld0NsaWVudCwgcHVibGljIFdlYktp
dDo6V2ViRnJhbWVDbGllbnQsCiAgICAgdm9pZCBzZXRCbG9ja1JlZGlyZWN0cyhib29sIGJsb2Nr
KSB7IG1fYmxvY2tzUmVkaXJlY3RzID0gYmxvY2s7IH0KICAgICB2b2lkIHNldFJlcXVlc3RSZXR1
cm5OdWxsKGJvb2wgcmV0dXJuTnVsbCkgeyBtX3JlcXVlc3RSZXR1cm5OdWxsID0gcmV0dXJuTnVs
bDsgfQogICAgIHZvaWQgc2V0UGVuZGluZ0V4dHJhRGF0YShQYXNzT3duUHRyPFRlc3RTaGVsbEV4
dHJhRGF0YT4pOwotICAgIHZvaWQgc2V0RGV2aWNlU2NhbGVGYWN0b3IoZmxvYXQpOwogCiAgICAg
dm9pZCBwYWludFJlY3QoY29uc3QgV2ViS2l0OjpXZWJSZWN0Jik7CiAgICAgdm9pZCBwYWludElu
dmFsaWRhdGVkUmVnaW9uKCk7CkBAIC0xNTYsNiArMTU1LDExIEBAIGNsYXNzIFdlYlZpZXdIb3N0
IDogcHVibGljIFdlYktpdDo6V2ViVmlld0NsaWVudCwgcHVibGljIFdlYktpdDo6V2ViRnJhbWVD
bGllbnQsCiAgICAgdmlydHVhbCB2b2lkIGV2YWx1YXRlSW5XZWJJbnNwZWN0b3IobG9uZywgY29u
c3Qgc3RkOjpzdHJpbmcmKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgY2xlYXJBbGxEYXRh
YmFzZXMoKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgc2V0RGF0YWJhc2VRdW90YShpbnQp
IE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBzZXREZXZpY2VTY2FsZUZhY3RvcihmbG9hdCkg
T1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIHNldEZvY3VzKGJvb2wpIE9WRVJSSURFOworICAg
IHZpcnR1YWwgdm9pZCBzZXRBY2NlcHRBbGxDb29raWVzKGJvb2wpIE9WRVJSSURFOworICAgIHZp
cnR1YWwgc3RkOjpzdHJpbmcgcGF0aFRvTG9jYWxSZXNvdXJjZShjb25zdCBzdGQ6OnN0cmluZyYg
dXJsKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0TG9jYWxlKGNvbnN0IHN0ZDo6c3Ry
aW5nJikgT1ZFUlJJREU7CiAKICAgICAvLyBOYXZpZ2F0aW9uSG9zdAogICAgIHZpcnR1YWwgYm9v
bCBuYXZpZ2F0ZShjb25zdCBUZXN0TmF2aWdhdGlvbkVudHJ5JiwgYm9vbCByZWxvYWQpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>182954</attachid>
            <date>2013-01-16 03:57:00 -0800</date>
            <delta_ts>2013-01-16 04:43:12 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-106904-20130116125401.patch</filename>
            <type>text/plain</type>
            <size>25646</size>
            <attacher>jochen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM5ODY3CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggNzU5OGM1MWM4Y2IyMTk4ZmI1M2RjYWMxODVlYWUzMmJh
YzQ2YjllMi4uMGE0Nzg1M2E5N2Q1MTE5ZTdhYmI4MTI4NGJmMDRhZmZiNjg5NGQ3NiAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDQ1
IEBACiAyMDEzLTAxLTE2ICBKb2NoZW4gRWlzaW5nZXIgIDxqb2NoZW5AY2hyb21pdW0ub3JnPgog
CisgICAgICAgIFtjaHJvbWl1bV0gcm91dGUgbW9yZSB3ZWJraXRfc3VwcG9ydCBhbmQgd2Vidmll
d2hvc3QgY2FsbGJhY2tzIHRocm91Z2ggV2ViVGVzdERlbGVnYXRlCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDY5MDQKKworICAgICAgICBSZXZpZXdl
ZCBieSBBZGFtIEJhcnRoLgorCisgICAgICAgICogRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vRFJU
VGVzdFJ1bm5lci5jcHA6CisgICAgICAgIChEUlRUZXN0UnVubmVyOjpEUlRUZXN0UnVubmVyKToK
KyAgICAgICAgKERSVFRlc3RSdW5uZXI6Om5vdGlmeURvbmUpOgorICAgICAgICAoRFJUVGVzdFJ1
bm5lcjo6cmVzZXQpOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2Nocm9taXVtL0RSVFRlc3RS
dW5uZXIuaDoKKyAgICAgICAgKERSVFRlc3RSdW5uZXIpOgorICAgICAgICAqIER1bXBSZW5kZXJU
cmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvcHVibGljL1dlYlRlc3REZWxlZ2F0ZS5oOgorICAgICAg
ICAoV2ViVGVzdFJ1bm5lcjo6V2ViVGVzdERlbGVnYXRlOjpzZXREZXZpY2VTY2FsZUZhY3Rvcik6
CisgICAgICAgIChXZWJUZXN0UnVubmVyOjpXZWJUZXN0RGVsZWdhdGU6OnNldEZvY3VzKToKKyAg
ICAgICAgKFdlYlRlc3RSdW5uZXI6OldlYlRlc3REZWxlZ2F0ZTo6c2V0QWNjZXB0QWxsQ29va2ll
cyk6CisgICAgICAgIChXZWJUZXN0UnVubmVyOjpXZWJUZXN0RGVsZWdhdGU6OnBhdGhUb0xvY2Fs
UmVzb3VyY2UpOgorICAgICAgICAoV2ViVGVzdFJ1bm5lcjo6V2ViVGVzdERlbGVnYXRlOjpzZXRM
b2NhbGUpOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvc3Jj
L1Rlc3RSdW5uZXIuY3BwOgorICAgICAgICAoV2ViVGVzdFJ1bm5lcjo6VGVzdFJ1bm5lcjo6VGVz
dFJ1bm5lcik6CisgICAgICAgIChXZWJUZXN0UnVubmVyOjpUZXN0UnVubmVyOjpyZXNldCk6Cisg
ICAgICAgIChXZWJUZXN0UnVubmVyOjpUZXN0UnVubmVyOjpzZXRBbHdheXNBY2NlcHRDb29raWVz
KToKKyAgICAgICAgKFdlYlRlc3RSdW5uZXIpOgorICAgICAgICAoV2ViVGVzdFJ1bm5lcjo6VGVz
dFJ1bm5lcjo6c2V0V2luZG93SXNLZXkpOgorICAgICAgICAoV2ViVGVzdFJ1bm5lcjo6VGVzdFJ1
bm5lcjo6cGF0aFRvTG9jYWxSZXNvdXJjZSk6CisgICAgICAgIChXZWJUZXN0UnVubmVyOjpUZXN0
UnVubmVyOjpzZXRCYWNraW5nU2NhbGVGYWN0b3IpOgorICAgICAgICAoV2ViVGVzdFJ1bm5lcjo6
VGVzdFJ1bm5lcjo6c2V0UE9TSVhMb2NhbGUpOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2No
cm9taXVtL1Rlc3RSdW5uZXIvc3JjL1Rlc3RSdW5uZXIuaDoKKyAgICAgICAgKFdlYlRlc3RSdW5u
ZXI6OlRlc3RSdW5uZXI6OnRhc2tMaXN0KToKKyAgICAgICAgKFRlc3RSdW5uZXIpOgorICAgICAg
ICAqIER1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1dlYlZpZXdIb3N0LmNwcDoKKyAgICAgICAgKFdl
YlZpZXdIb3N0OjpzZXREZXZpY2VTY2FsZUZhY3Rvcik6CisgICAgICAgIChXZWJWaWV3SG9zdDo6
c2V0Rm9jdXMpOgorICAgICAgICAoV2ViVmlld0hvc3Q6OnNldEFjY2VwdEFsbENvb2tpZXMpOgor
ICAgICAgICAoV2ViVmlld0hvc3Q6OnBhdGhUb0xvY2FsUmVzb3VyY2UpOgorICAgICAgICAoV2Vi
Vmlld0hvc3Q6OnNldExvY2FsZSk6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvY2hyb21pdW0v
V2ViVmlld0hvc3QuaDoKKyAgICAgICAgKFdlYlZpZXdIb3N0KToKKworMjAxMy0wMS0xNiAgSm9j
aGVuIEVpc2luZ2VyICA8am9jaGVuQGNocm9taXVtLm9yZz4KKwogICAgICAgICBbY2hyb21pdW1d
IGFkZCB0aXRsZSB0ZXh0IGRpcmVjdGlvbiBhdHRyaWJ1dGUgdG8gVGVzdFJ1bm5lcgogICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTA2OTA3CiAKZGlmZiAt
LWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL0RSVFRlc3RSdW5uZXIuY3BwIGIv
VG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vRFJUVGVzdFJ1bm5lci5jcHAKaW5kZXggODJi
NzY5ZTk2MDBlZDJkNWU2NmNhZmYzMDY3ZGRjMDI1OGZkZDcwNi4uMjE5MDc4MDZmZDJiNjU4MTcy
YTNmMTk0MTVhOWMyZGI1YWU3ZjEzMCAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUv
Y2hyb21pdW0vRFJUVGVzdFJ1bm5lci5jcHAKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hy
b21pdW0vRFJUVGVzdFJ1bm5lci5jcHAKQEAgLTY4LDcgKzY4LDYgQEAKICNpbmNsdWRlICJ3ZWJr
aXQvc3VwcG9ydC93ZWJraXRfc3VwcG9ydC5oIgogI2luY2x1ZGUgPGFsZ29yaXRobT4KICNpbmNs
dWRlIDxjY3R5cGU+Ci0jaW5jbHVkZSA8Y2xvY2FsZT4KICNpbmNsdWRlIDxjc3RkbGliPgogI2lu
Y2x1ZGUgPGxpbWl0cz4KICNpbmNsdWRlIDxzc3RyZWFtPgpAQCAtMTE2LDcgKzExNSw2IEBAIERS
VFRlc3RSdW5uZXI6OkRSVFRlc3RSdW5uZXIoVGVzdFNoZWxsKiBzaGVsbCkKICNlbmRpZgogICAg
IGJpbmRNZXRob2QoIm5vdGlmeURvbmUiLCAmRFJUVGVzdFJ1bm5lcjo6bm90aWZ5RG9uZSk7CiAg
ICAgYmluZE1ldGhvZCgibnVtYmVyT2ZQZW5kaW5nR2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVz
dHMiLCAmRFJUVGVzdFJ1bm5lcjo6IG51bWJlck9mUGVuZGluZ0dlb2xvY2F0aW9uUGVybWlzc2lv
blJlcXVlc3RzKTsKLSAgICBiaW5kTWV0aG9kKCJwYXRoVG9Mb2NhbFJlc291cmNlIiwgJkRSVFRl
c3RSdW5uZXI6OnBhdGhUb0xvY2FsUmVzb3VyY2UpOwogICAgIGJpbmRNZXRob2QoInF1ZXVlQmFj
a05hdmlnYXRpb24iLCAmRFJUVGVzdFJ1bm5lcjo6cXVldWVCYWNrTmF2aWdhdGlvbik7CiAgICAg
YmluZE1ldGhvZCgicXVldWVGb3J3YXJkTmF2aWdhdGlvbiIsICZEUlRUZXN0UnVubmVyOjpxdWV1
ZUZvcndhcmROYXZpZ2F0aW9uKTsKICAgICBiaW5kTWV0aG9kKCJxdWV1ZUxvYWRpbmdTY3JpcHQi
LCAmRFJUVGVzdFJ1bm5lcjo6cXVldWVMb2FkaW5nU2NyaXB0KTsKQEAgLTEyNCw3ICsxMjIsNiBA
QCBEUlRUZXN0UnVubmVyOjpEUlRUZXN0UnVubmVyKFRlc3RTaGVsbCogc2hlbGwpCiAgICAgYmlu
ZE1ldGhvZCgicXVldWVMb2FkSFRNTFN0cmluZyIsICZEUlRUZXN0UnVubmVyOjpxdWV1ZUxvYWRI
VE1MU3RyaW5nKTsKICAgICBiaW5kTWV0aG9kKCJxdWV1ZU5vbkxvYWRpbmdTY3JpcHQiLCAmRFJU
VGVzdFJ1bm5lcjo6cXVldWVOb25Mb2FkaW5nU2NyaXB0KTsKICAgICBiaW5kTWV0aG9kKCJxdWV1
ZVJlbG9hZCIsICZEUlRUZXN0UnVubmVyOjpxdWV1ZVJlbG9hZCk7Ci0gICAgYmluZE1ldGhvZCgi
c2V0QWx3YXlzQWNjZXB0Q29va2llcyIsICZEUlRUZXN0UnVubmVyOjpzZXRBbHdheXNBY2NlcHRD
b29raWVzKTsKICAgICBiaW5kTWV0aG9kKCJzZXRDbG9zZVJlbWFpbmluZ1dpbmRvd3NXaGVuQ29t
cGxldGUiLCAmRFJUVGVzdFJ1bm5lcjo6c2V0Q2xvc2VSZW1haW5pbmdXaW5kb3dzV2hlbkNvbXBs
ZXRlKTsKICAgICBiaW5kTWV0aG9kKCJzZXRDdXN0b21Qb2xpY3lEZWxlZ2F0ZSIsICZEUlRUZXN0
UnVubmVyOjpzZXRDdXN0b21Qb2xpY3lEZWxlZ2F0ZSk7CiAgICAgYmluZE1ldGhvZCgic2V0R2Vv
bG9jYXRpb25QZXJtaXNzaW9uIiwgJkRSVFRlc3RSdW5uZXI6OnNldEdlb2xvY2F0aW9uUGVybWlz
c2lvbik7CkBAIC0xMzUsMTIgKzEzMiw5IEBAIERSVFRlc3RSdW5uZXI6OkRSVFRlc3RSdW5uZXIo
VGVzdFNoZWxsKiBzaGVsbCkKICAgICBiaW5kTWV0aG9kKCJzZXRQb2ludGVyTG9ja1dpbGxSZXNw
b25kQXN5bmNocm9ub3VzbHkiLCAmRFJUVGVzdFJ1bm5lcjo6c2V0UG9pbnRlckxvY2tXaWxsUmVz
cG9uZEFzeW5jaHJvbm91c2x5KTsKICAgICBiaW5kTWV0aG9kKCJzZXRQb2ludGVyTG9ja1dpbGxG
YWlsU3luY2hyb25vdXNseSIsICZEUlRUZXN0UnVubmVyOjpzZXRQb2ludGVyTG9ja1dpbGxGYWls
U3luY2hyb25vdXNseSk7CiAjZW5kaWYKLSAgICBiaW5kTWV0aG9kKCJzZXRQT1NJWExvY2FsZSIs
ICZEUlRUZXN0UnVubmVyOjpzZXRQT1NJWExvY2FsZSk7Ci0gICAgYmluZE1ldGhvZCgic2V0QmFj
a2luZ1NjYWxlRmFjdG9yIiwgJkRSVFRlc3RSdW5uZXI6OnNldEJhY2tpbmdTY2FsZUZhY3Rvcik7
CiAgICAgYmluZE1ldGhvZCgic2V0V2lsbFNlbmRSZXF1ZXN0Q2xlYXJIZWFkZXIiLCAmRFJUVGVz
dFJ1bm5lcjo6c2V0V2lsbFNlbmRSZXF1ZXN0Q2xlYXJIZWFkZXIpOwogICAgIGJpbmRNZXRob2Qo
InNldFdpbGxTZW5kUmVxdWVzdFJldHVybnNOdWxsIiwgJkRSVFRlc3RSdW5uZXI6OnNldFdpbGxT
ZW5kUmVxdWVzdFJldHVybnNOdWxsKTsKICAgICBiaW5kTWV0aG9kKCJzZXRXaWxsU2VuZFJlcXVl
c3RSZXR1cm5zTnVsbE9uUmVkaXJlY3QiLCAmRFJUVGVzdFJ1bm5lcjo6c2V0V2lsbFNlbmRSZXF1
ZXN0UmV0dXJuc051bGxPblJlZGlyZWN0KTsKLSAgICBiaW5kTWV0aG9kKCJzZXRXaW5kb3dJc0tl
eSIsICZEUlRUZXN0UnVubmVyOjpzZXRXaW5kb3dJc0tleSk7CiAjaWYgRU5BQkxFKE5PVElGSUNB
VElPTlMpCiAgICAgYmluZE1ldGhvZCgic2ltdWxhdGVMZWdhY3lXZWJOb3RpZmljYXRpb25DbGlj
ayIsICZEUlRUZXN0UnVubmVyOjpzaW11bGF0ZUxlZ2FjeVdlYk5vdGlmaWNhdGlvbkNsaWNrKTsK
ICNlbmRpZgpAQCAtMjE4LDcgKzIxMiw3IEBAIHZvaWQgRFJUVGVzdFJ1bm5lcjo6d2FpdFVudGls
RG9uZShjb25zdCBDcHBBcmd1bWVudExpc3QmLCBDcHBWYXJpYW50KiByZXN1bHQpCiB2b2lkIERS
VFRlc3RSdW5uZXI6Om5vdGlmeURvbmUoY29uc3QgQ3BwQXJndW1lbnRMaXN0JiwgQ3BwVmFyaWFu
dCogcmVzdWx0KQogewogICAgIC8vIFRlc3QgZGlkbid0IHRpbWVvdXQuIEtpbGwgdGhlIHRpbWVv
dXQgdGltZXIuCi0gICAgbV90YXNrTGlzdC5yZXZva2VBbGwoKTsKKyAgICB0YXNrTGlzdCgpLT5y
ZXZva2VBbGwoKTsKIAogICAgIGNvbXBsZXRlTm90aWZ5RG9uZShmYWxzZSk7CiAgICAgcmVzdWx0
LT5zZXROdWxsKCk7CkBAIC0zODksMjIgKzM4MywxNSBAQCB2b2lkIERSVFRlc3RSdW5uZXI6OnF1
ZXVlTG9hZEhUTUxTdHJpbmcoY29uc3QgQ3BwQXJndW1lbnRMaXN0JiBhcmd1bWVudHMsIENwcFZh
cgogdm9pZCBEUlRUZXN0UnVubmVyOjpyZXNldCgpCiB7CiAgICAgVGVzdFJ1bm5lcjo6cmVzZXQo
KTsKLSAgICBpZiAobV9zaGVsbCkKLSAgICAgICAgbV9zaGVsbC0+d2ViVmlld0hvc3QoKS0+c2V0
RGV2aWNlU2NhbGVGYWN0b3IoMSk7CiAgICAgbV93YWl0VW50aWxEb25lID0gZmFsc2U7CiAgICAg
bV93ZWJIaXN0b3J5SXRlbUNvdW50LnNldCgwKTsKICAgICBtX2ludGVyY2VwdFBvc3RNZXNzYWdl
LnNldChmYWxzZSk7CiAKLSAgICB3ZWJraXRfc3VwcG9ydDo6U2V0QWNjZXB0QWxsQ29va2llcyhm
YWxzZSk7Ci0KLSAgICBzZXRsb2NhbGUoTENfQUxMLCAiIik7Ci0KICAgICBpZiAobV9jbG9zZVJl
bWFpbmluZ1dpbmRvd3MpCiAgICAgICAgIG1fc2hlbGwtPmNsb3NlUmVtYWluaW5nV2luZG93cygp
OwogICAgIGVsc2UKICAgICAgICAgbV9jbG9zZVJlbWFpbmluZ1dpbmRvd3MgPSB0cnVlOwogICAg
IG1fd29ya1F1ZXVlLnJlc2V0KCk7Ci0gICAgbV90YXNrTGlzdC5yZXZva2VBbGwoKTsKIH0KIAog
dm9pZCBEUlRUZXN0UnVubmVyOjpsb2NhdGlvbkNoYW5nZURvbmUoKQpAQCAtNDM3LDIwICs0MjQs
NiBAQCB2b2lkIERSVFRlc3RSdW5uZXI6OnNldENsb3NlUmVtYWluaW5nV2luZG93c1doZW5Db21w
bGV0ZShjb25zdCBDcHBBcmd1bWVudExpc3QmCiAgICAgcmVzdWx0LT5zZXROdWxsKCk7CiB9CiAK
LXZvaWQgRFJUVGVzdFJ1bm5lcjo6c2V0QWx3YXlzQWNjZXB0Q29va2llcyhjb25zdCBDcHBBcmd1
bWVudExpc3QmIGFyZ3VtZW50cywgQ3BwVmFyaWFudCogcmVzdWx0KQotewotICAgIGlmIChhcmd1
bWVudHMuc2l6ZSgpID4gMCkKLSAgICAgICAgd2Via2l0X3N1cHBvcnQ6OlNldEFjY2VwdEFsbENv
b2tpZXMoY3BwVmFyaWFudFRvQm9vbChhcmd1bWVudHNbMF0pKTsKLSAgICByZXN1bHQtPnNldE51
bGwoKTsKLX0KLQotdm9pZCBEUlRUZXN0UnVubmVyOjpzZXRXaW5kb3dJc0tleShjb25zdCBDcHBB
cmd1bWVudExpc3QmIGFyZ3VtZW50cywgQ3BwVmFyaWFudCogcmVzdWx0KQotewotICAgIGlmIChh
cmd1bWVudHMuc2l6ZSgpID4gMCAmJiBhcmd1bWVudHNbMF0uaXNCb29sKCkpCi0gICAgICAgIG1f
c2hlbGwtPnNldEZvY3VzKG1fc2hlbGwtPndlYlZpZXcoKSwgYXJndW1lbnRzWzBdLnZhbHVlLmJv
b2xWYWx1ZSk7Ci0gICAgcmVzdWx0LT5zZXROdWxsKCk7Ci19Ci0KIHZvaWQgRFJUVGVzdFJ1bm5l
cjo6c2V0Q3VzdG9tUG9saWN5RGVsZWdhdGUoY29uc3QgQ3BwQXJndW1lbnRMaXN0JiBhcmd1bWVu
dHMsIENwcFZhcmlhbnQqIHJlc3VsdCkKIHsKICAgICBpZiAoYXJndW1lbnRzLnNpemUoKSA+IDAg
JiYgYXJndW1lbnRzWzBdLmlzQm9vbCgpKSB7CkBAIC00OTQsNDQgKzQ2Nyw2IEBAIHZvaWQgRFJU
VGVzdFJ1bm5lcjo6c2V0V2lsbFNlbmRSZXF1ZXN0UmV0dXJuc051bGwoY29uc3QgQ3BwQXJndW1l
bnRMaXN0JiBhcmd1bWVuCiAgICAgcmVzdWx0LT5zZXROdWxsKCk7CiB9CiAKLXZvaWQgRFJUVGVz
dFJ1bm5lcjo6cGF0aFRvTG9jYWxSZXNvdXJjZShjb25zdCBDcHBBcmd1bWVudExpc3QmIGFyZ3Vt
ZW50cywgQ3BwVmFyaWFudCogcmVzdWx0KQotewotICAgIHJlc3VsdC0+c2V0TnVsbCgpOwotICAg
IGlmIChhcmd1bWVudHMuc2l6ZSgpIDw9IDAgfHwgIWFyZ3VtZW50c1swXS5pc1N0cmluZygpKQot
ICAgICAgICByZXR1cm47Ci0KLSAgICBzdHJpbmcgdXJsID0gYXJndW1lbnRzWzBdLnRvU3RyaW5n
KCk7Ci0jaWYgT1MoV0lORE9XUykKLSAgICBpZiAoIXVybC5maW5kKCIvdG1wLyIpKSB7Ci0gICAg
ICAgIC8vIFdlIHdhbnQgYSB0ZW1wIGZpbGUuCi0gICAgICAgIGNvbnN0IHVuc2lnbmVkIHRlbXBQ
cmVmaXhMZW5ndGggPSA1OwotICAgICAgICBzaXplX3QgYnVmZmVyU2l6ZSA9IE1BWF9QQVRIOwot
ICAgICAgICBPd25BcnJheVB0cjxXQ0hBUj4gdGVtcFBhdGggPSBhZG9wdEFycmF5UHRyKG5ldyBX
Q0hBUltidWZmZXJTaXplXSk7Ci0gICAgICAgIERXT1JEIHRlbXBMZW5ndGggPSA6OkdldFRlbXBQ
YXRoVyhidWZmZXJTaXplLCB0ZW1wUGF0aC5nZXQoKSk7Ci0gICAgICAgIGlmICh0ZW1wTGVuZ3Ro
ICsgdXJsLmxlbmd0aCgpIC0gdGVtcFByZWZpeExlbmd0aCArIDEgPiBidWZmZXJTaXplKSB7Ci0g
ICAgICAgICAgICBidWZmZXJTaXplID0gdGVtcExlbmd0aCArIHVybC5sZW5ndGgoKSAtIHRlbXBQ
cmVmaXhMZW5ndGggKyAxOwotICAgICAgICAgICAgdGVtcFBhdGggPSBhZG9wdEFycmF5UHRyKG5l
dyBXQ0hBUltidWZmZXJTaXplXSk7Ci0gICAgICAgICAgICB0ZW1wTGVuZ3RoID0gR2V0VGVtcFBh
dGhXKGJ1ZmZlclNpemUsIHRlbXBQYXRoLmdldCgpKTsKLSAgICAgICAgICAgIEFTU0VSVCh0ZW1w
TGVuZ3RoIDwgYnVmZmVyU2l6ZSk7Ci0gICAgICAgIH0KLSAgICAgICAgc3RyaW5nIHJlc3VsdFBh
dGgoV2ViU3RyaW5nKHRlbXBQYXRoLmdldCgpLCB0ZW1wTGVuZ3RoKS51dGY4KCkpOwotICAgICAg
ICByZXN1bHRQYXRoLmFwcGVuZCh1cmwuc3Vic3RyKHRlbXBQcmVmaXhMZW5ndGgpKTsKLSAgICAg
ICAgcmVzdWx0LT5zZXQocmVzdWx0UGF0aCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0jZW5k
aWYKLQotICAgIC8vIFNvbWUgbGF5b3V0IHRlc3RzIHVzZSBmaWxlOi8vLy8gd2hpY2ggd2UgcmVz
b2x2ZSBhcyBhIFVOQyBwYXRoLiBOb3JtYWxpemUKLSAgICAvLyB0aGVtIHRvIGp1c3QgZmlsZTov
Ly8uCi0gICAgc3RyaW5nIGxvd2VyVXJsID0gdXJsOwotICAgIHRyYW5zZm9ybShsb3dlclVybC5i
ZWdpbigpLCBsb3dlclVybC5lbmQoKSwgbG93ZXJVcmwuYmVnaW4oKSwgOjp0b2xvd2VyKTsKLSAg
ICB3aGlsZSAoIWxvd2VyVXJsLmZpbmQoImZpbGU6Ly8vLyIpKSB7Ci0gICAgICAgIHVybCA9IHVy
bC5zdWJzdHIoMCwgOCkgKyB1cmwuc3Vic3RyKDkpOwotICAgICAgICBsb3dlclVybCA9IGxvd2Vy
VXJsLnN1YnN0cigwLCA4KSArIGxvd2VyVXJsLnN1YnN0cig5KTsKLSAgICB9Ci0gICAgcmVzdWx0
LT5zZXQod2Via2l0X3N1cHBvcnQ6OlJld3JpdGVMYXlvdXRUZXN0c1VSTCh1cmwpLnNwZWMoKSk7
Ci19Ci0KIAogI2lmIEVOQUJMRShOT1RJRklDQVRJT05TKQogdm9pZCBEUlRUZXN0UnVubmVyOjpn
cmFudFdlYk5vdGlmaWNhdGlvblBlcm1pc3Npb24oY29uc3QgQ3BwQXJndW1lbnRMaXN0JiBhcmd1
bWVudHMsIENwcFZhcmlhbnQqIHJlc3VsdCkKQEAgLTU4MCwxMyArNTE1LDYgQEAgdm9pZCBEUlRU
ZXN0UnVubmVyOjpkaXNwbGF5SW52YWxpZGF0ZWRSZWdpb24oY29uc3QgQ3BwQXJndW1lbnRMaXN0
JiBhcmd1bWVudHMsIEMKICAgICByZXN1bHQtPnNldE51bGwoKTsKIH0KIAotdm9pZCBEUlRUZXN0
UnVubmVyOjpzZXRQT1NJWExvY2FsZShjb25zdCBDcHBBcmd1bWVudExpc3QmIGFyZ3VtZW50cywg
Q3BwVmFyaWFudCogcmVzdWx0KQotewotICAgIHJlc3VsdC0+c2V0TnVsbCgpOwotICAgIGlmIChh
cmd1bWVudHMuc2l6ZSgpID09IDEgJiYgYXJndW1lbnRzWzBdLmlzU3RyaW5nKCkpCi0gICAgICAg
IHNldGxvY2FsZShMQ19BTEwsIGFyZ3VtZW50c1swXS50b1N0cmluZygpLmNfc3RyKCkpOwotfQot
CiB2b2lkIERSVFRlc3RSdW5uZXI6Om51bWJlck9mUGVuZGluZ0dlb2xvY2F0aW9uUGVybWlzc2lv
blJlcXVlc3RzKGNvbnN0IENwcEFyZ3VtZW50TGlzdCYgYXJndW1lbnRzLCBDcHBWYXJpYW50KiBy
ZXN1bHQpCiB7CiAgICAgcmVzdWx0LT5zZXROdWxsKCk7CkBAIC03MDIsNDAgKzYzMCw2IEBAIHZv
aWQgRFJUVGVzdFJ1bm5lcjo6d2FzTW9ja1NwZWVjaFJlY29nbml0aW9uQWJvcnRlZChjb25zdCBD
cHBBcmd1bWVudExpc3QmLCBDcHBWCiB9CiAjZW5kaWYKIAotY2xhc3MgSW52b2tlQ2FsbGJhY2tU
YXNrIDogcHVibGljIFdlYk1ldGhvZFRhc2s8RFJUVGVzdFJ1bm5lcj4gewotcHVibGljOgotICAg
IEludm9rZUNhbGxiYWNrVGFzayhEUlRUZXN0UnVubmVyKiBvYmplY3QsIFBhc3NPd25BcnJheVB0
cjxDcHBWYXJpYW50PiBjYWxsYmFja0FyZ3VtZW50cywgdWludDMyX3QgbnVtYmVyT2ZBcmd1bWVu
dHMpCi0gICAgICAgIDogV2ViTWV0aG9kVGFzazxEUlRUZXN0UnVubmVyPihvYmplY3QpCi0gICAg
ICAgICwgbV9jYWxsYmFja0FyZ3VtZW50cyhjYWxsYmFja0FyZ3VtZW50cykKLSAgICAgICAgLCBt
X251bWJlck9mQXJndW1lbnRzKG51bWJlck9mQXJndW1lbnRzKQotICAgIHsKLSAgICB9Ci0KLSAg
ICB2aXJ0dWFsIHZvaWQgcnVuSWZWYWxpZCgpCi0gICAgewotICAgICAgICBDcHBWYXJpYW50IGlu
dm9rZVJlc3VsdDsKLSAgICAgICAgbV9jYWxsYmFja0FyZ3VtZW50c1swXS5pbnZva2VEZWZhdWx0
KG1fY2FsbGJhY2tBcmd1bWVudHMuZ2V0KCksIG1fbnVtYmVyT2ZBcmd1bWVudHMsIGludm9rZVJl
c3VsdCk7Ci0gICAgfQotCi1wcml2YXRlOgotICAgIE93bkFycmF5UHRyPENwcFZhcmlhbnQ+IG1f
Y2FsbGJhY2tBcmd1bWVudHM7Ci0gICAgdWludDMyX3QgbV9udW1iZXJPZkFyZ3VtZW50czsKLX07
Ci0KLXZvaWQgRFJUVGVzdFJ1bm5lcjo6c2V0QmFja2luZ1NjYWxlRmFjdG9yKGNvbnN0IENwcEFy
Z3VtZW50TGlzdCYgYXJndW1lbnRzLCBDcHBWYXJpYW50KiByZXN1bHQpCi17Ci0gICAgaWYgKGFy
Z3VtZW50cy5zaXplKCkgPCAyIHx8ICFhcmd1bWVudHNbMF0uaXNOdW1iZXIoKSB8fCAhYXJndW1l
bnRzWzFdLmlzT2JqZWN0KCkpCi0gICAgICAgIHJldHVybjsKLSAgICAKLSAgICBmbG9hdCB2YWx1
ZSA9IGFyZ3VtZW50c1swXS52YWx1ZS5kb3VibGVWYWx1ZTsKLSAgICBtX3NoZWxsLT53ZWJWaWV3
SG9zdCgpLT5zZXREZXZpY2VTY2FsZUZhY3Rvcih2YWx1ZSk7Ci0KLSAgICBPd25BcnJheVB0cjxD
cHBWYXJpYW50PiBjYWxsYmFja0FyZ3VtZW50cyA9IGFkb3B0QXJyYXlQdHIobmV3IENwcFZhcmlh
bnRbMV0pOwotICAgIGNhbGxiYWNrQXJndW1lbnRzWzBdLnNldChhcmd1bWVudHNbMV0pOwotICAg
IHJlc3VsdC0+c2V0TnVsbCgpOwotICAgIHBvc3RUYXNrKG5ldyBJbnZva2VDYWxsYmFja1Rhc2so
dGhpcywgY2FsbGJhY2tBcmd1bWVudHMucmVsZWFzZSgpLCAxKSk7Ci19Ci0KICNpZiBFTkFCTEUo
UE9JTlRFUl9MT0NLKQogdm9pZCBEUlRUZXN0UnVubmVyOjpkaWRBY3F1aXJlUG9pbnRlckxvY2so
Y29uc3QgQ3BwQXJndW1lbnRMaXN0JiwgQ3BwVmFyaWFudCogcmVzdWx0KQogewpkaWZmIC0tZ2l0
IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vRFJUVGVzdFJ1bm5lci5oIGIvVG9vbHMv
RHVtcFJlbmRlclRyZWUvY2hyb21pdW0vRFJUVGVzdFJ1bm5lci5oCmluZGV4IGNmOTcxMDhiZjQz
ODVjNjk4OGI0Njk4NzJjOTIxZTA0ZWZhYzhmZDcuLjUxNTNmYTMwNTBlNDEyNjc3MjIzNzVjMzVm
MzgxOWQ1ZmQyODBhNDcgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVt
L0RSVFRlc3RSdW5uZXIuaAorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9EUlRU
ZXN0UnVubmVyLmgKQEAgLTkzLDEyICs5Myw2IEBAIHB1YmxpYzoKICAgICB2b2lkIHF1ZXVlTG9h
ZChjb25zdCBDcHBBcmd1bWVudExpc3QmLCBDcHBWYXJpYW50Kik7CiAgICAgdm9pZCBxdWV1ZUxv
YWRIVE1MU3RyaW5nKGNvbnN0IENwcEFyZ3VtZW50TGlzdCYsIENwcFZhcmlhbnQqKTsKIAotICAg
IC8vIENoYW5nZXMgdGhlIGNvb2tpZSBwb2xpY3kgZnJvbSB0aGUgZGVmYXVsdCB0byBhbGxvdyBh
bGwgY29va2llcy4KLSAgICB2b2lkIHNldEFsd2F5c0FjY2VwdENvb2tpZXMoY29uc3QgQ3BwQXJn
dW1lbnRMaXN0JiwgQ3BwVmFyaWFudCopOwotCi0gICAgLy8gR2l2ZXMgZm9jdXMgdG8gdGhlIHdp
bmRvdy4KLSAgICB2b2lkIHNldFdpbmRvd0lzS2V5KGNvbnN0IENwcEFyZ3VtZW50TGlzdCYsIENw
cFZhcmlhbnQqKTsKLQogCiAgICAgLy8gQ2F1c2VzIG5hdmlnYXRpb24gYWN0aW9ucyBqdXN0IHBy
aW50b3V0IHRoZSBpbnRlbmRlZCBuYXZpZ2F0aW9uIGluc3RlYWQKICAgICAvLyBvZiB0YWtpbmcg
eW91IHRvIHRoZSBwYWdlLiBUaGlzIGlzIHVzZWQgZm9yIGNhc2VzIGxpa2UgbWFpbHRvLCB3aGVy
ZSB5b3UKQEAgLTExNyw5ICsxMTEsNiBAQCBwdWJsaWM6CiAgICAgLy8gQ2F1c2VzIFdpbGxTZW5k
UmVxdWVzdCB0byByZXR1cm4gYW4gZW1wdHkgcmVxdWVzdC4KICAgICB2b2lkIHNldFdpbGxTZW5k
UmVxdWVzdFJldHVybnNOdWxsKGNvbnN0IENwcEFyZ3VtZW50TGlzdCYsIENwcFZhcmlhbnQqKTsK
IAotICAgIC8vIENvbnZlcnRzIGEgVVJMIHN0YXJ0aW5nIHdpdGggZmlsZTovLy90bXAvIHRvIHRo
ZSBsb2NhbCBtYXBwaW5nLgotICAgIHZvaWQgcGF0aFRvTG9jYWxSZXNvdXJjZShjb25zdCBDcHBB
cmd1bWVudExpc3QmLCBDcHBWYXJpYW50Kik7Ci0KICNpZiBFTkFCTEUoTk9USUZJQ0FUSU9OUykK
ICAgICAvLyBHcmFudHMgcGVybWlzc2lvbiBmb3IgZGVza3RvcCBub3RpZmljYXRpb25zIHRvIGFu
IG9yaWdpbgogICAgIHZvaWQgZ3JhbnRXZWJOb3RpZmljYXRpb25QZXJtaXNzaW9uKGNvbnN0IENw
cEFyZ3VtZW50TGlzdCYsIENwcFZhcmlhbnQqKTsKQEAgLTEzMCwxMCArMTIxLDYgQEAgcHVibGlj
OgogICAgIHZvaWQgZGlzcGxheShjb25zdCBDcHBBcmd1bWVudExpc3QmLCBDcHBWYXJpYW50Kik7
CiAgICAgdm9pZCBkaXNwbGF5SW52YWxpZGF0ZWRSZWdpb24oY29uc3QgQ3BwQXJndW1lbnRMaXN0
JiwgQ3BwVmFyaWFudCopOwogCi0gICAgLy8gQ2FsbHMgc2V0bG9jYWxlKExDX0FMTCwgLi4uKSBm
b3IgYSBzcGVjaWZpZWQgbG9jYWxlLgotICAgIC8vIFJlc2V0cyBiZXR3ZWVuIHRlc3RzLgotICAg
IHZvaWQgc2V0UE9TSVhMb2NhbGUoY29uc3QgQ3BwQXJndW1lbnRMaXN0JiwgQ3BwVmFyaWFudCop
OwotCiAgICAgLy8gR2V0cyB0aGUgbnVtYmVyIG9mIGdlb2xvY2F0aW9uIHBlcm1pc3Npb25zIHJl
cXVlc3RzIHBlbmRpbmcuCiAgICAgdm9pZCBudW1iZXJPZlBlbmRpbmdHZW9sb2NhdGlvblBlcm1p
c3Npb25SZXF1ZXN0cyhjb25zdCBDcHBBcmd1bWVudExpc3QmLCBDcHBWYXJpYW50Kik7CiAKQEAg
LTE2NCw5ICsxNTEsNiBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRQb2ludGVyTG9ja1dpbGxSZXNw
b25kQXN5bmNocm9ub3VzbHkoY29uc3QgQ3BwQXJndW1lbnRMaXN0JiwgQ3BwVmFyaWFudCopOwog
I2VuZGlmCiAKLSAgICAvLyBVc2VkIHRvIHNldCB0aGUgZGV2aWNlIHNjYWxlIGZhY3Rvci4KLSAg
ICB2b2lkIHNldEJhY2tpbmdTY2FsZUZhY3Rvcihjb25zdCBDcHBBcmd1bWVudExpc3QmLCBDcHBW
YXJpYW50Kik7Ci0KIHB1YmxpYzoKICAgICAvLyBUaGUgZm9sbG93aW5nIG1ldGhvZHMgYXJlIG5v
dCBleHBvc2VkIHRvIEphdmFTY3JpcHQuCiAgICAgdm9pZCBzZXRXb3JrUXVldWVGcm96ZW4oYm9v
bCBmcm96ZW4pIHsgbV93b3JrUXVldWUuc2V0RnJvemVuKGZyb3plbik7IH0KQEAgLTE5OCw4ICsx
ODIsNiBAQCBwdWJsaWM6CiAgICAgICAgIHZpcnR1YWwgYm9vbCBydW4oVGVzdFNoZWxsKikgPSAw
OwogICAgIH07CiAKLSAgICBXZWJUYXNrTGlzdCogdGFza0xpc3QoKSB7IHJldHVybiAmbV90YXNr
TGlzdDsgfQotCiBwcml2YXRlOgogICAgIGZyaWVuZCBjbGFzcyBXb3JrSXRlbTsKICAgICBmcmll
bmQgY2xhc3MgV29ya1F1ZXVlOwpAQCAtMjQxLDkgKzIyMyw2IEBAIHByaXZhdGU6CiAgICAgICAg
IHZpcnR1YWwgdm9pZCBydW5JZlZhbGlkKCkgeyBtX29iamVjdC0+Y29tcGxldGVOb3RpZnlEb25l
KHRydWUpOyB9CiAgICAgfTsKIAotICAgIC8vIFVzZWQgZm9yIHRlc3QgdGltZW91dHMuCi0gICAg
V2ViVGFza0xpc3QgbV90YXNrTGlzdDsKLQogICAgIC8vIE5vbi1vd25pbmcgcG9pbnRlci4gVGhl
IERSVFRlc3RSdW5uZXIgaXMgb3duZWQgYnkgdGhlIGhvc3QuCiAgICAgVGVzdFNoZWxsKiBtX3No
ZWxsOwogCmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVu
bmVyL3B1YmxpYy9XZWJUZXN0RGVsZWdhdGUuaCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9t
aXVtL1Rlc3RSdW5uZXIvcHVibGljL1dlYlRlc3REZWxlZ2F0ZS5oCmluZGV4IGQ0YmIyOWI4ZGU4
MDE1OWE5N2Q3NzA0M2UxNzhiYTg1YjBlZGJhNDIuLjRmODA4OWM0MGVhYTU2NDc4ZmEzOTA1NzMw
NmM4MWUwNTE3OTc3OWQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVt
L1Rlc3RSdW5uZXIvcHVibGljL1dlYlRlc3REZWxlZ2F0ZS5oCisrKyBiL1Rvb2xzL0R1bXBSZW5k
ZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvcHVibGljL1dlYlRlc3REZWxlZ2F0ZS5oCkBAIC04
Nyw2ICs4NywxMSBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGV2YWx1YXRlSW5XZWJJbnNw
ZWN0b3IobG9uZywgY29uc3Qgc3RkOjpzdHJpbmcmKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgY2xl
YXJBbGxEYXRhYmFzZXMoKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgc2V0RGF0YWJhc2VRdW90YShp
bnQpIHsgfQorICAgIHZpcnR1YWwgdm9pZCBzZXREZXZpY2VTY2FsZUZhY3RvcihmbG9hdCkgeyB9
CisgICAgdmlydHVhbCB2b2lkIHNldEZvY3VzKGJvb2wpIHsgfQorICAgIHZpcnR1YWwgdm9pZCBz
ZXRBY2NlcHRBbGxDb29raWVzKGJvb2wpIHsgfQorICAgIHZpcnR1YWwgc3RkOjpzdHJpbmcgcGF0
aFRvTG9jYWxSZXNvdXJjZShjb25zdCBzdGQ6OnN0cmluZyYgcmVzb3VyY2UpIHsgcmV0dXJuIHN0
ZDo6c3RyaW5nKCk7IH0KKyAgICB2aXJ0dWFsIHZvaWQgc2V0TG9jYWxlKGNvbnN0IHN0ZDo6c3Ry
aW5nJikgeyB9CiB9OwogCiB9CmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJv
bWl1bS9UZXN0UnVubmVyL3NyYy9UZXN0UnVubmVyLmNwcCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVl
L2Nocm9taXVtL1Rlc3RSdW5uZXIvc3JjL1Rlc3RSdW5uZXIuY3BwCmluZGV4IDNjMzg4NGE3ZTBi
ZjE4MDA3ZWU0NjMxZTNlYjJjMDM3NTFiZmY3OGMuLmRiMzc5YjdmMGQ5ZmVjZTZhOWU3ZWE5NDc2
YjA0Zjk2Y2E0OGQ1OGQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVt
L1Rlc3RSdW5uZXIvc3JjL1Rlc3RSdW5uZXIuY3BwCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVl
L2Nocm9taXVtL1Rlc3RSdW5uZXIvc3JjL1Rlc3RSdW5uZXIuY3BwCkBAIC00NywxMiArNDcsMTQg
QEAKICNpbmNsdWRlICJXZWJTZWN1cml0eVBvbGljeS5oIgogI2luY2x1ZGUgIldlYlNldHRpbmdz
LmgiCiAjaW5jbHVkZSAiV2ViU3Vycm91bmRpbmdUZXh0LmgiCisjaW5jbHVkZSAiV2ViVGFzay5o
IgogI2luY2x1ZGUgIldlYlRlc3REZWxlZ2F0ZS5oIgogI2luY2x1ZGUgIldlYlZpZXcuaCIKICNp
bmNsdWRlICJXZWJXb3JrZXJJbmZvLmgiCiAjaW5jbHVkZSAicGxhdGZvcm0vV2ViUG9pbnQuaCIK
ICNpbmNsdWRlICJwbGF0Zm9ybS9XZWJTZXJpYWxpemVkU2NyaXB0VmFsdWUuaCIKICNpbmNsdWRl
ICJ2OC9pbmNsdWRlL3Y4LmgiCisjaW5jbHVkZSA8d3RmL093bkFycmF5UHRyLmg+CiAjaW5jbHVk
ZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKICNpZiBPUyhMSU5VWCkgfHwgT1MoQU5EUk9JRCkK
QEAgLTc2LDYgKzc4LDI2IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgZGVzdHJveSgpIHsg
fQogfTsKIAorY2xhc3MgSW52b2tlQ2FsbGJhY2tUYXNrIDogcHVibGljIFdlYk1ldGhvZFRhc2s8
VGVzdFJ1bm5lcj4geworcHVibGljOgorICAgIEludm9rZUNhbGxiYWNrVGFzayhUZXN0UnVubmVy
KiBvYmplY3QsIFBhc3NPd25BcnJheVB0cjxDcHBWYXJpYW50PiBjYWxsYmFja0FyZ3VtZW50cywg
dWludDMyX3QgbnVtYmVyT2ZBcmd1bWVudHMpCisgICAgICAgIDogV2ViTWV0aG9kVGFzazxUZXN0
UnVubmVyPihvYmplY3QpCisgICAgICAgICwgbV9jYWxsYmFja0FyZ3VtZW50cyhjYWxsYmFja0Fy
Z3VtZW50cykKKyAgICAgICAgLCBtX251bWJlck9mQXJndW1lbnRzKG51bWJlck9mQXJndW1lbnRz
KQorICAgIHsKKyAgICB9CisKKyAgICB2aXJ0dWFsIHZvaWQgcnVuSWZWYWxpZCgpCisgICAgewor
ICAgICAgICBDcHBWYXJpYW50IGludm9rZVJlc3VsdDsKKyAgICAgICAgbV9jYWxsYmFja0FyZ3Vt
ZW50c1swXS5pbnZva2VEZWZhdWx0KG1fY2FsbGJhY2tBcmd1bWVudHMuZ2V0KCksIG1fbnVtYmVy
T2ZBcmd1bWVudHMsIGludm9rZVJlc3VsdCk7CisgICAgfQorCitwcml2YXRlOgorICAgIE93bkFy
cmF5UHRyPENwcFZhcmlhbnQ+IG1fY2FsbGJhY2tBcmd1bWVudHM7CisgICAgdWludDMyX3QgbV9u
dW1iZXJPZkFyZ3VtZW50czsKK307CisKIH0KIAogVGVzdFJ1bm5lcjo6VGVzdFJ1bm5lcigpCkBA
IC0xODAsNiArMjAyLDExIEBAIFRlc3RSdW5uZXI6OlRlc3RSdW5uZXIoKQogICAgIGJpbmRNZXRo
b2QoImV2YWx1YXRlSW5XZWJJbnNwZWN0b3IiLCAmVGVzdFJ1bm5lcjo6ZXZhbHVhdGVJbldlYklu
c3BlY3Rvcik7CiAgICAgYmluZE1ldGhvZCgiY2xlYXJBbGxEYXRhYmFzZXMiLCAmVGVzdFJ1bm5l
cjo6Y2xlYXJBbGxEYXRhYmFzZXMpOwogICAgIGJpbmRNZXRob2QoInNldERhdGFiYXNlUXVvdGEi
LCAmVGVzdFJ1bm5lcjo6c2V0RGF0YWJhc2VRdW90YSk7CisgICAgYmluZE1ldGhvZCgic2V0QWx3
YXlzQWNjZXB0Q29va2llcyIsICZUZXN0UnVubmVyOjpzZXRBbHdheXNBY2NlcHRDb29raWVzKTsK
KyAgICBiaW5kTWV0aG9kKCJzZXRXaW5kb3dJc0tleSIsICZUZXN0UnVubmVyOjpzZXRXaW5kb3dJ
c0tleSk7CisgICAgYmluZE1ldGhvZCgicGF0aFRvTG9jYWxSZXNvdXJjZSIsICZUZXN0UnVubmVy
OjpwYXRoVG9Mb2NhbFJlc291cmNlKTsKKyAgICBiaW5kTWV0aG9kKCJzZXRCYWNraW5nU2NhbGVG
YWN0b3IiLCAmVGVzdFJ1bm5lcjo6c2V0QmFja2luZ1NjYWxlRmFjdG9yKTsKKyAgICBiaW5kTWV0
aG9kKCJzZXRQT1NJWExvY2FsZSIsICZUZXN0UnVubmVyOjpzZXRQT1NJWExvY2FsZSk7CiAKICAg
ICAvLyBQcm9wZXJ0aWVzLgogICAgIGJpbmRQcm9wZXJ0eSgid29ya2VyVGhyZWFkQ291bnQiLCAm
VGVzdFJ1bm5lcjo6d29ya2VyVGhyZWFkQ291bnQpOwpAQCAtMjQ5LDYgKzI3Niw5IEBAIHZvaWQg
VGVzdFJ1bm5lcjo6cmVzZXQoKQogCiAgICAgLy8gUmVzZXQgdGhlIGRlZmF1bHQgcXVvdGEgZm9y
IGVhY2ggb3JpZ2luIHRvIDVNQgogICAgIG1fZGVsZWdhdGUtPnNldERhdGFiYXNlUXVvdGEoNSAq
IDEwMjQgKiAxMDI0KTsKKyAgICBtX2RlbGVnYXRlLT5zZXREZXZpY2VTY2FsZUZhY3RvcigxKTsK
KyAgICBtX2RlbGVnYXRlLT5zZXRBY2NlcHRBbGxDb29raWVzKGZhbHNlKTsKKyAgICBtX2RlbGVn
YXRlLT5zZXRMb2NhbGUoIiIpOwogCiAgICAgbV9kdW1wRWRpdGluZ0NhbGxiYWNrcyA9IGZhbHNl
OwogICAgIG1fZHVtcEFzVGV4dCA9IGZhbHNlOwpAQCAtMjgyLDYgKzMxMiw4IEBAIHZvaWQgVGVz
dFJ1bm5lcjo6cmVzZXQoKQogICAgIG1fdXNlclN0eWxlU2hlZXRMb2NhdGlvbiA9IFdlYlVSTCgp
OwogCiAgICAgbV93ZWJQZXJtaXNzaW9ucy0+cmVzZXQoKTsKKworICAgIG1fdGFza0xpc3QucmV2
b2tlQWxsKCk7CiB9CiAKIHZvaWQgVGVzdFJ1bm5lcjo6c2V0VGVzdElzUnVubmluZyhib29sIHJ1
bm5pbmcpCkBAIC0xMzIwLDYgKzEzNTIsNTAgQEAgdm9pZCBUZXN0UnVubmVyOjpzZXREYXRhYmFz
ZVF1b3RhKGNvbnN0IENwcEFyZ3VtZW50TGlzdCYgYXJndW1lbnRzLCBDcHBWYXJpYW50KgogICAg
ICAgICBtX2RlbGVnYXRlLT5zZXREYXRhYmFzZVF1b3RhKGFyZ3VtZW50c1swXS50b0ludDMyKCkp
OwogfQogCit2b2lkIFRlc3RSdW5uZXI6OnNldEFsd2F5c0FjY2VwdENvb2tpZXMoY29uc3QgQ3Bw
QXJndW1lbnRMaXN0JiBhcmd1bWVudHMsIENwcFZhcmlhbnQqIHJlc3VsdCkKK3sKKyAgICBpZiAo
YXJndW1lbnRzLnNpemUoKSA+IDApCisgICAgICAgIG1fZGVsZWdhdGUtPnNldEFjY2VwdEFsbENv
b2tpZXMoY3BwVmFyaWFudFRvQm9vbChhcmd1bWVudHNbMF0pKTsKKyAgICByZXN1bHQtPnNldE51
bGwoKTsKK30KKwordm9pZCBUZXN0UnVubmVyOjpzZXRXaW5kb3dJc0tleShjb25zdCBDcHBBcmd1
bWVudExpc3QmIGFyZ3VtZW50cywgQ3BwVmFyaWFudCogcmVzdWx0KQoreworICAgIGlmIChhcmd1
bWVudHMuc2l6ZSgpID4gMCAmJiBhcmd1bWVudHNbMF0uaXNCb29sKCkpCisgICAgICAgIG1fZGVs
ZWdhdGUtPnNldEZvY3VzKGFyZ3VtZW50c1swXS52YWx1ZS5ib29sVmFsdWUpOworICAgIHJlc3Vs
dC0+c2V0TnVsbCgpOworfQorCit2b2lkIFRlc3RSdW5uZXI6OnBhdGhUb0xvY2FsUmVzb3VyY2Uo
Y29uc3QgQ3BwQXJndW1lbnRMaXN0JiBhcmd1bWVudHMsIENwcFZhcmlhbnQqIHJlc3VsdCkKK3sK
KyAgICByZXN1bHQtPnNldE51bGwoKTsKKyAgICBpZiAoYXJndW1lbnRzLnNpemUoKSA8PSAwIHx8
ICFhcmd1bWVudHNbMF0uaXNTdHJpbmcoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgcmVzdWx0
LT5zZXQobV9kZWxlZ2F0ZS0+cGF0aFRvTG9jYWxSZXNvdXJjZShhcmd1bWVudHNbMF0udG9TdHJp
bmcoKSkpOworfQorCit2b2lkIFRlc3RSdW5uZXI6OnNldEJhY2tpbmdTY2FsZUZhY3Rvcihjb25z
dCBDcHBBcmd1bWVudExpc3QmIGFyZ3VtZW50cywgQ3BwVmFyaWFudCogcmVzdWx0KQoreworICAg
IGlmIChhcmd1bWVudHMuc2l6ZSgpIDwgMiB8fCAhYXJndW1lbnRzWzBdLmlzTnVtYmVyKCkgfHwg
IWFyZ3VtZW50c1sxXS5pc09iamVjdCgpKQorICAgICAgICByZXR1cm47CisKKyAgICBmbG9hdCB2
YWx1ZSA9IGFyZ3VtZW50c1swXS52YWx1ZS5kb3VibGVWYWx1ZTsKKyAgICBtX2RlbGVnYXRlLT5z
ZXREZXZpY2VTY2FsZUZhY3Rvcih2YWx1ZSk7CisKKyAgICBPd25BcnJheVB0cjxDcHBWYXJpYW50
PiBjYWxsYmFja0FyZ3VtZW50cyA9IGFkb3B0QXJyYXlQdHIobmV3IENwcFZhcmlhbnRbMV0pOwor
ICAgIGNhbGxiYWNrQXJndW1lbnRzWzBdLnNldChhcmd1bWVudHNbMV0pOworICAgIHJlc3VsdC0+
c2V0TnVsbCgpOworICAgIG1fZGVsZWdhdGUtPnBvc3RUYXNrKG5ldyBJbnZva2VDYWxsYmFja1Rh
c2sodGhpcywgY2FsbGJhY2tBcmd1bWVudHMucmVsZWFzZSgpLCAxKSk7Cit9CisKK3ZvaWQgVGVz
dFJ1bm5lcjo6c2V0UE9TSVhMb2NhbGUoY29uc3QgQ3BwQXJndW1lbnRMaXN0JiBhcmd1bWVudHMs
IENwcFZhcmlhbnQqIHJlc3VsdCkKK3sKKyAgICByZXN1bHQtPnNldE51bGwoKTsKKyAgICBpZiAo
YXJndW1lbnRzLnNpemUoKSA9PSAxICYmIGFyZ3VtZW50c1swXS5pc1N0cmluZygpKQorICAgICAg
ICBtX2RlbGVnYXRlLT5zZXRMb2NhbGUoYXJndW1lbnRzWzBdLnRvU3RyaW5nKCkpOworfQorCiB2
b2lkIFRlc3RSdW5uZXI6OmR1bXBFZGl0aW5nQ2FsbGJhY2tzKGNvbnN0IENwcEFyZ3VtZW50TGlz
dCYsIENwcFZhcmlhbnQqIHJlc3VsdCkKIHsKICAgICBtX2R1bXBFZGl0aW5nQ2FsbGJhY2tzID0g
dHJ1ZTsKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5u
ZXIvc3JjL1Rlc3RSdW5uZXIuaCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RS
dW5uZXIvc3JjL1Rlc3RSdW5uZXIuaAppbmRleCAyNTFhY2VlYTdkZGFlZGQ1ZDU5YTllMDg4YTMw
NmQ5YzI4MWMyOTcxLi43YmRhN2JlZTk3NDE3NjUzNzc5ZjJiMzUyNWMwZDQ3OWVmYzgyNzhmIDEw
MDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9U
ZXN0UnVubmVyLmgKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5l
ci9zcmMvVGVzdFJ1bm5lci5oCkBAIC0zNCw2ICszNCw3IEBACiAKICNpbmNsdWRlICJDcHBCb3Vu
ZENsYXNzLmgiCiAjaW5jbHVkZSAiV2ViRGVsaXZlcmVkSW50ZW50Q2xpZW50LmgiCisjaW5jbHVk
ZSAiV2ViVGFzay5oIgogI2luY2x1ZGUgIldlYlRlc3RSdW5uZXIuaCIKICNpbmNsdWRlICJwbGF0
Zm9ybS9XZWJBcnJheUJ1ZmZlclZpZXcuaCIKICNpbmNsdWRlICJwbGF0Zm9ybS9XZWJVUkwuaCIK
QEAgLTU5LDYgKzYwLDggQEAgcHVibGljOgogCiAgICAgdm9pZCByZXNldCgpOwogCisgICAgV2Vi
VGFza0xpc3QqIHRhc2tMaXN0KCkgeyByZXR1cm4gJm1fdGFza0xpc3Q7IH0KKwogICAgIC8vIFdl
YlRlc3RSdW5uZXIgaW1wbGVtZW50YXRpb24uCiAgICAgdmlydHVhbCB2b2lkIHNldFRlc3RJc1J1
bm5pbmcoYm9vbCkgT1ZFUlJJREU7CiAgICAgdmlydHVhbCBib29sIHNob3VsZER1bXBFZGl0aW5n
Q2FsbGJhY2tzKCkgY29uc3QgT1ZFUlJJREU7CkBAIC0zMzcsMTEgKzM0MCwyNyBAQCBwcml2YXRl
OgogICAgIC8vIFNldHMgdGhlIGRlZmF1bHQgcXVvdGEgZm9yIGFsbCBvcmlnaW5zCiAgICAgdm9p
ZCBzZXREYXRhYmFzZVF1b3RhKGNvbnN0IENwcEFyZ3VtZW50TGlzdCYsIENwcFZhcmlhbnQqKTsK
IAorICAgIC8vIENoYW5nZXMgdGhlIGNvb2tpZSBwb2xpY3kgZnJvbSB0aGUgZGVmYXVsdCB0byBh
bGxvdyBhbGwgY29va2llcy4KKyAgICB2b2lkIHNldEFsd2F5c0FjY2VwdENvb2tpZXMoY29uc3Qg
Q3BwQXJndW1lbnRMaXN0JiwgQ3BwVmFyaWFudCopOworCisgICAgLy8gR2l2ZXMgZm9jdXMgdG8g
dGhlIHdpbmRvdy4KKyAgICB2b2lkIHNldFdpbmRvd0lzS2V5KGNvbnN0IENwcEFyZ3VtZW50TGlz
dCYsIENwcFZhcmlhbnQqKTsKKworICAgIC8vIENvbnZlcnRzIGEgVVJMIHN0YXJ0aW5nIHdpdGgg
ZmlsZTovLy90bXAvIHRvIHRoZSBsb2NhbCBtYXBwaW5nLgorICAgIHZvaWQgcGF0aFRvTG9jYWxS
ZXNvdXJjZShjb25zdCBDcHBBcmd1bWVudExpc3QmLCBDcHBWYXJpYW50Kik7CisKKyAgICAvLyBV
c2VkIHRvIHNldCB0aGUgZGV2aWNlIHNjYWxlIGZhY3Rvci4KKyAgICB2b2lkIHNldEJhY2tpbmdT
Y2FsZUZhY3Rvcihjb25zdCBDcHBBcmd1bWVudExpc3QmLCBDcHBWYXJpYW50Kik7CisKKyAgICAv
LyBDYWxscyBzZXRsb2NhbGUoTENfQUxMLCAuLi4pIGZvciBhIHNwZWNpZmllZCBsb2NhbGUuCisg
ICAgLy8gUmVzZXRzIGJldHdlZW4gdGVzdHMuCisgICAgdm9pZCBzZXRQT1NJWExvY2FsZShjb25z
dCBDcHBBcmd1bWVudExpc3QmLCBDcHBWYXJpYW50Kik7CisKICAgICAvLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8KICAgICAvLyBQcm9wZXJ0aWVzCiAgICAgdm9pZCB3b3JrZXJUaHJlYWRDb3VudChDcHBWYXJp
YW50Kik7CiAKLSAgICAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KKyAgICAvLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwog
ICAgIC8vIEZhbGxiYWNrIGFuZCBzdHViIG1ldGhvZHMKIAogICAgIC8vIFRoZSBmYWxsYmFjayBt
ZXRob2QgaXMgY2FsbGVkIHdoZW4gYSBub25leGlzdGVudCBtZXRob2QgaXMgY2FsbGVkIG9uCkBA
IC00NjYsNiArNDg1LDkgQEAgcHJpdmF0ZToKICAgICAvLyBXQVYgYXVkaW8gZGF0YSBpcyBzdG9y
ZWQgaGVyZS4KICAgICBXZWJLaXQ6OldlYkFycmF5QnVmZmVyVmlldyBtX2F1ZGlvRGF0YTsKIAor
ICAgIC8vIFVzZWQgZm9yIHRlc3QgdGltZW91dHMuCisgICAgV2ViVGFza0xpc3QgbV90YXNrTGlz
dDsKKwogICAgIFdlYlRlc3REZWxlZ2F0ZSogbV9kZWxlZ2F0ZTsKICAgICBXZWJLaXQ6OldlYlZp
ZXcqIG1fd2ViVmlldzsKIApkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21p
dW0vV2ViVmlld0hvc3QuY3BwIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vV2ViVmll
d0hvc3QuY3BwCmluZGV4IGE5ZmFhOTk3MDYyNzRlZjRhZGU1OTU4ZWUxNTJhOTAyMjE4YjAzMTcu
LjM3NmZjNjM5YWUxNjE3YThhYTI3M2I3NTFmMDk2OWIxMzU1MjQ1MzkgMTAwNjQ0Ci0tLSBhL1Rv
b2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1dlYlZpZXdIb3N0LmNwcAorKysgYi9Ub29scy9E
dW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9XZWJWaWV3SG9zdC5jcHAKQEAgLTcwLDYgKzcwLDggQEAK
ICNpbmNsdWRlICJza2lhL2V4dC9wbGF0Zm9ybV9jYW52YXMuaCIKICNpbmNsdWRlICJ3ZWJraXQv
c3VwcG9ydC90ZXN0X21lZGlhX3N0cmVhbV9jbGllbnQuaCIKICNpbmNsdWRlICJ3ZWJraXQvc3Vw
cG9ydC93ZWJraXRfc3VwcG9ydC5oIgorI2luY2x1ZGUgPGNjdHlwZT4KKyNpbmNsdWRlIDxjbG9j
YWxlPgogI2luY2x1ZGUgPHB1YmxpYy9XZWJDU3RyaW5nLmg+CiAjaW5jbHVkZSA8cHVibGljL1dl
YkNvbXBvc2l0b3JPdXRwdXRTdXJmYWNlLmg+CiAjaW5jbHVkZSA8cHVibGljL1dlYkNvbXBvc2l0
b3JTdXBwb3J0Lmg+CkBAIC04MSw2ICs4Myw3IEBACiAjaW5jbHVkZSA8cHVibGljL1dlYlVSTFJl
c3BvbnNlLmg+CiAKICNpbmNsdWRlIDx3dGYvQXNzZXJ0aW9ucy5oPgorI2luY2x1ZGUgPHd0Zi9P
d25BcnJheVB0ci5oPgogI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+CiAjaW5jbHVkZSA8d3Rm
L1ZlY3Rvci5oPgogCkBAIC0xMDc4LDYgKzEwODEsNjAgQEAgdm9pZCBXZWJWaWV3SG9zdDo6c2V0
RGF0YWJhc2VRdW90YShpbnQgcXVvdGEpCiAgICAgd2Via2l0X3N1cHBvcnQ6OlNldERhdGFiYXNl
UXVvdGEocXVvdGEpOwogfQogCit2b2lkIFdlYlZpZXdIb3N0OjpzZXREZXZpY2VTY2FsZUZhY3Rv
cihmbG9hdCBkZXZpY2VTY2FsZUZhY3RvcikKK3sKKyAgICB3ZWJWaWV3KCktPnNldERldmljZVNj
YWxlRmFjdG9yKGRldmljZVNjYWxlRmFjdG9yKTsKKyAgICBkaXNjYXJkQmFja2luZ1N0b3JlKCk7
Cit9CisKK3ZvaWQgV2ViVmlld0hvc3Q6OnNldEZvY3VzKGJvb2wgZm9jdXNlZCkKK3sKKyAgICBt
X3NoZWxsLT5zZXRGb2N1cyhtX3NoZWxsLT53ZWJWaWV3KCksIGZvY3VzZWQpOworfQorCit2b2lk
IFdlYlZpZXdIb3N0OjpzZXRBY2NlcHRBbGxDb29raWVzKGJvb2wgYWNjZXB0Q29va2llcykKK3sK
KyAgICB3ZWJraXRfc3VwcG9ydDo6U2V0QWNjZXB0QWxsQ29va2llcyhhY2NlcHRDb29raWVzKTsK
K30KKworc3RyaW5nIFdlYlZpZXdIb3N0OjpwYXRoVG9Mb2NhbFJlc291cmNlKGNvbnN0IHN0cmlu
ZyYgdXJsKQoreworI2lmIE9TKFdJTkRPV1MpCisgICAgaWYgKCF1cmwuZmluZCgiL3RtcC8iKSkg
eworICAgICAgICAvLyBXZSB3YW50IGEgdGVtcCBmaWxlLgorICAgICAgICBjb25zdCB1bnNpZ25l
ZCB0ZW1wUHJlZml4TGVuZ3RoID0gNTsKKyAgICAgICAgc2l6ZV90IGJ1ZmZlclNpemUgPSBNQVhf
UEFUSDsKKyAgICAgICAgT3duQXJyYXlQdHI8V0NIQVI+IHRlbXBQYXRoID0gYWRvcHRBcnJheVB0
cihuZXcgV0NIQVJbYnVmZmVyU2l6ZV0pOworICAgICAgICBEV09SRCB0ZW1wTGVuZ3RoID0gOjpH
ZXRUZW1wUGF0aFcoYnVmZmVyU2l6ZSwgdGVtcFBhdGguZ2V0KCkpOworICAgICAgICBpZiAodGVt
cExlbmd0aCArIHVybC5sZW5ndGgoKSAtIHRlbXBQcmVmaXhMZW5ndGggKyAxID4gYnVmZmVyU2l6
ZSkgeworICAgICAgICAgICAgYnVmZmVyU2l6ZSA9IHRlbXBMZW5ndGggKyB1cmwubGVuZ3RoKCkg
LSB0ZW1wUHJlZml4TGVuZ3RoICsgMTsKKyAgICAgICAgICAgIHRlbXBQYXRoID0gYWRvcHRBcnJh
eVB0cihuZXcgV0NIQVJbYnVmZmVyU2l6ZV0pOworICAgICAgICAgICAgdGVtcExlbmd0aCA9IEdl
dFRlbXBQYXRoVyhidWZmZXJTaXplLCB0ZW1wUGF0aC5nZXQoKSk7CisgICAgICAgICAgICBBU1NF
UlQodGVtcExlbmd0aCA8IGJ1ZmZlclNpemUpOworICAgICAgICB9CisgICAgICAgIHN0cmluZyBy
ZXN1bHRQYXRoKFdlYlN0cmluZyh0ZW1wUGF0aC5nZXQoKSwgdGVtcExlbmd0aCkudXRmOCgpKTsK
KyAgICAgICAgcmVzdWx0UGF0aC5hcHBlbmQodXJsLnN1YnN0cih0ZW1wUHJlZml4TGVuZ3RoKSk7
CisgICAgICAgIHJldHVybiByZXN1bHRQYXRoOworICAgIH0KKyNlbmRpZgorCisgICAgLy8gU29t
ZSBsYXlvdXQgdGVzdHMgdXNlIGZpbGU6Ly8vLyB3aGljaCB3ZSByZXNvbHZlIGFzIGEgVU5DIHBh
dGguIE5vcm1hbGl6ZQorICAgIC8vIHRoZW0gdG8ganVzdCBmaWxlOi8vLy4KKyAgICBzdHJpbmcg
bG93ZXJVcmwgPSB1cmw7CisgICAgc3RyaW5nIHJlc3VsdCA9IHVybDsKKyAgICB0cmFuc2Zvcm0o
bG93ZXJVcmwuYmVnaW4oKSwgbG93ZXJVcmwuZW5kKCksIGxvd2VyVXJsLmJlZ2luKCksIDo6dG9s
b3dlcik7CisgICAgd2hpbGUgKCFsb3dlclVybC5maW5kKCJmaWxlOi8vLy8iKSkgeworICAgICAg
ICByZXN1bHQgPSByZXN1bHQuc3Vic3RyKDAsIDgpICsgcmVzdWx0LnN1YnN0cig5KTsKKyAgICAg
ICAgbG93ZXJVcmwgPSBsb3dlclVybC5zdWJzdHIoMCwgOCkgKyBsb3dlclVybC5zdWJzdHIoOSk7
CisgICAgfQorICAgIHJldHVybiB3ZWJraXRfc3VwcG9ydDo6UmV3cml0ZUxheW91dFRlc3RzVVJM
KHJlc3VsdCkuc3BlYygpOworfQorCit2b2lkIFdlYlZpZXdIb3N0OjpzZXRMb2NhbGUoY29uc3Qg
c3RkOjpzdHJpbmcmIGxvY2FsZSkKK3sKKyAgICBzZXRsb2NhbGUoTENfQUxMLCBsb2NhbGUuY19z
dHIoKSk7Cit9CisKIC8vIFB1YmxpYyBmdW5jdGlvbnMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAogV2ViVmlld0hvc3Q6OldlYlZp
ZXdIb3N0KFRlc3RTaGVsbCogc2hlbGwpCkBAIC0xNDAxLDEyICsxNDU4LDYgQEAgdm9pZCBXZWJW
aWV3SG9zdDo6c2V0UGVuZGluZ0V4dHJhRGF0YShQYXNzT3duUHRyPFRlc3RTaGVsbEV4dHJhRGF0
YT4gZXh0cmFEYXRhKQogICAgIG1fcGVuZGluZ0V4dHJhRGF0YSA9IGV4dHJhRGF0YTsKIH0KIAot
dm9pZCBXZWJWaWV3SG9zdDo6c2V0RGV2aWNlU2NhbGVGYWN0b3IoZmxvYXQgZGV2aWNlU2NhbGVG
YWN0b3IpCi17Ci0gICAgd2ViVmlldygpLT5zZXREZXZpY2VTY2FsZUZhY3RvcihkZXZpY2VTY2Fs
ZUZhY3Rvcik7Ci0gICAgZGlzY2FyZEJhY2tpbmdTdG9yZSgpOwotfQotCiB2b2lkIFdlYlZpZXdI
b3N0OjpzZXRQYWdlVGl0bGUoY29uc3QgV2ViU3RyaW5nJikKIHsKICAgICAvLyBOb3RoaW5nIHRv
IGRvIGluIGxheW91dCB0ZXN0LgpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hy
b21pdW0vV2ViVmlld0hvc3QuaCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1dlYlZp
ZXdIb3N0LmgKaW5kZXggZGQwZTRkMDY2ZjVkNmY5M2RjMGQ0MjZiZDYzMmQ4YjkzNzNmYjExZS4u
NWQxMTE5OWY0NzAyYWM1NGM1ZGU2MTUzMzFjOTkyNzI4OWEzMWIxMyAxMDA2NDQKLS0tIGEvVG9v
bHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vV2ViVmlld0hvc3QuaAorKysgYi9Ub29scy9EdW1w
UmVuZGVyVHJlZS9jaHJvbWl1bS9XZWJWaWV3SG9zdC5oCkBAIC05Niw3ICs5Niw2IEBAIGNsYXNz
IFdlYlZpZXdIb3N0IDogcHVibGljIFdlYktpdDo6V2ViVmlld0NsaWVudCwgcHVibGljIFdlYktp
dDo6V2ViRnJhbWVDbGllbnQsCiAgICAgdm9pZCBzZXRCbG9ja1JlZGlyZWN0cyhib29sIGJsb2Nr
KSB7IG1fYmxvY2tzUmVkaXJlY3RzID0gYmxvY2s7IH0KICAgICB2b2lkIHNldFJlcXVlc3RSZXR1
cm5OdWxsKGJvb2wgcmV0dXJuTnVsbCkgeyBtX3JlcXVlc3RSZXR1cm5OdWxsID0gcmV0dXJuTnVs
bDsgfQogICAgIHZvaWQgc2V0UGVuZGluZ0V4dHJhRGF0YShQYXNzT3duUHRyPFRlc3RTaGVsbEV4
dHJhRGF0YT4pOwotICAgIHZvaWQgc2V0RGV2aWNlU2NhbGVGYWN0b3IoZmxvYXQpOwogCiAgICAg
dm9pZCBwYWludFJlY3QoY29uc3QgV2ViS2l0OjpXZWJSZWN0Jik7CiAgICAgdm9pZCBwYWludElu
dmFsaWRhdGVkUmVnaW9uKCk7CkBAIC0xNTYsNiArMTU1LDExIEBAIGNsYXNzIFdlYlZpZXdIb3N0
IDogcHVibGljIFdlYktpdDo6V2ViVmlld0NsaWVudCwgcHVibGljIFdlYktpdDo6V2ViRnJhbWVD
bGllbnQsCiAgICAgdmlydHVhbCB2b2lkIGV2YWx1YXRlSW5XZWJJbnNwZWN0b3IobG9uZywgY29u
c3Qgc3RkOjpzdHJpbmcmKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgY2xlYXJBbGxEYXRh
YmFzZXMoKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgc2V0RGF0YWJhc2VRdW90YShpbnQp
IE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBzZXREZXZpY2VTY2FsZUZhY3RvcihmbG9hdCkg
T1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIHNldEZvY3VzKGJvb2wpIE9WRVJSSURFOworICAg
IHZpcnR1YWwgdm9pZCBzZXRBY2NlcHRBbGxDb29raWVzKGJvb2wpIE9WRVJSSURFOworICAgIHZp
cnR1YWwgc3RkOjpzdHJpbmcgcGF0aFRvTG9jYWxSZXNvdXJjZShjb25zdCBzdGQ6OnN0cmluZyYg
dXJsKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0TG9jYWxlKGNvbnN0IHN0ZDo6c3Ry
aW5nJikgT1ZFUlJJREU7CiAKICAgICAvLyBOYXZpZ2F0aW9uSG9zdAogICAgIHZpcnR1YWwgYm9v
bCBuYXZpZ2F0ZShjb25zdCBUZXN0TmF2aWdhdGlvbkVudHJ5JiwgYm9vbCByZWxvYWQpOwo=
</data>

          </attachment>
      

    </bug>

</bugzilla>