<?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>109369</bug_id>
          
          <creation_ts>2013-02-09 20:53:07 -0800</creation_ts>
          <short_desc>[chromium] Enable more of webkit_unit_tests in component builds</short_desc>
          <delta_ts>2013-02-11 12:59:08 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="James Robinson">jamesr</reporter>
          <assigned_to name="James Robinson">jamesr</assigned_to>
          <cc>abarth</cc>
    
    <cc>dglazkov</cc>
    
    <cc>fishd</cc>
    
    <cc>tkent+wkapi</cc>
    
    <cc>tony</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>829178</commentid>
    <comment_count>0</comment_count>
    <who name="James Robinson">jamesr</who>
    <bug_when>2013-02-09 20:53:07 -0800</bug_when>
    <thetext>[chromium] Enable more of webkit_unit_tests in component builds</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>829180</commentid>
    <comment_count>1</comment_count>
      <attachid>187460</attachid>
    <who name="James Robinson">jamesr</who>
    <bug_when>2013-02-09 20:58:41 -0800</bug_when>
    <thetext>Created attachment 187460
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>829181</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-02-09 21:00:06 -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>829183</commentid>
    <comment_count>3</comment_count>
    <who name="James Robinson">jamesr</who>
    <bug_when>2013-02-09 21:03:13 -0800</bug_when>
    <thetext>This adds a number of APIs to Platform that don&apos;t make sense for normal operation, but I think the benefits of running more webkit_unit_tests in component builds is worth it.

This will compile right now, but without https://codereview.chromium.org/12220091/ the tests won&apos;t work.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>829184</commentid>
    <comment_count>4</comment_count>
      <attachid>187460</attachid>
    <who name="Darin Fisher (:fishd, Google)">fishd</who>
    <bug_when>2013-02-09 21:08:17 -0800</bug_when>
    <thetext>Comment on attachment 187460
Patch

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

&gt; Source/Platform/chromium/public/Platform.h:366
&gt; +    virtual void registerMockedURL(const WebURL&amp;, const WebURLResponse&amp;, const WebString&amp; filePath) { }

Would it make sense to lump all these methods together behind a tear-off interface?  That way, in Chrome we could just make the method to get the tear-off return NULL.

&gt; Source/Platform/chromium/public/Platform.h:382
&gt;      // Tracing -------------------------------------------------------------

nit: two new lines above section comment</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>829185</commentid>
    <comment_count>5</comment_count>
    <who name="James Robinson">jamesr</who>
    <bug_when>2013-02-09 21:09:23 -0800</bug_when>
    <thetext>LevelDBTest.cpp is the one holdout.  It uses webkit_support::ScopedTempDirectory / webkit_support::CreateScopedTempDirectory which are thin wrappers around base::ScopedTempDir.  This would be possible to plumb this through as well and remove the component/non-component distinction for webkit_unit_tests completely, but that&apos;s probably for another patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>829186</commentid>
    <comment_count>6</comment_count>
    <who name="James Robinson">jamesr</who>
    <bug_when>2013-02-09 21:10:21 -0800</bug_when>
    <thetext>(In reply to comment #4)
&gt; (From update of attachment 187460 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=187460&amp;action=review
&gt; 
&gt; &gt; Source/Platform/chromium/public/Platform.h:366
&gt; &gt; +    virtual void registerMockedURL(const WebURL&amp;, const WebURLResponse&amp;, const WebString&amp; filePath) { }
&gt; 
&gt; Would it make sense to lump all these methods together behind a tear-off interface?  That way, in Chrome we could just make the method to get the tear-off return NULL.

Sure.  WebTesting?  WebTestingSupport?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>829187</commentid>
    <comment_count>7</comment_count>
    <who name="Darin Fisher (:fishd, Google)">fishd</who>
    <bug_when>2013-02-09 21:12:51 -0800</bug_when>
    <thetext>(In reply to comment #6)
&gt; (In reply to comment #4)
&gt; &gt; (From update of attachment 187460 [details] [details])
&gt; &gt; View in context: https://bugs.webkit.org/attachment.cgi?id=187460&amp;action=review
&gt; &gt; 
&gt; &gt; &gt; Source/Platform/chromium/public/Platform.h:366
&gt; &gt; &gt; +    virtual void registerMockedURL(const WebURL&amp;, const WebURLResponse&amp;, const WebString&amp; filePath) { }
&gt; &gt; 
&gt; &gt; Would it make sense to lump all these methods together behind a tear-off interface?  That way, in Chrome we could just make the method to get the tear-off return NULL.
&gt; 
&gt; Sure.  WebTesting?  WebTestingSupport?

I&apos;d probably go with WebTestingSupport.  We have other Web*Support tear-offs.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>829201</commentid>
    <comment_count>8</comment_count>
      <attachid>187462</attachid>
    <who name="James Robinson">jamesr</who>
    <bug_when>2013-02-09 22:14:39 -0800</bug_when>
    <thetext>Created attachment 187462
with tearoff WebUnitTestSupport interface</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>829202</commentid>
    <comment_count>9</comment_count>
    <who name="James Robinson">jamesr</who>
    <bug_when>2013-02-09 22:15:58 -0800</bug_when>
    <thetext>To keep things running, I&apos;ll have to:

1.) Check in the Platform/...h changes without the unit test changes so the header is available in chromium
2.) Roll (1) into chromium
3.) Check in chromium implementation of test functions
4.) Roll (3) into WebKit
5.) Check in WebKit/chromium/tests/... changes</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>829203</commentid>
    <comment_count>10</comment_count>
    <who name="James Robinson">jamesr</who>
    <bug_when>2013-02-09 22:21:57 -0800</bug_when>
    <thetext>(In reply to comment #9)
&gt; To keep things running, I&apos;ll have to:
&gt; 

Slight refinement:

1.) Check in the Platform/...h changes without the unit test changes so the header is available in chromium with #define HAVE_WEBUNITTESTSUPPORT
2.) Check in chromium implementation with #include/etc guarded by #if HAVE_WEBUNITTESTSUPPORT
3.) Wait for (1) to roll into (2), roll (2) into WebKit
4.) Check in WebKit/chromium/tests/... changes
5.) Remove #define and #ifs at leisure</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>829215</commentid>
    <comment_count>11</comment_count>
    <who name="James Robinson">jamesr</who>
    <bug_when>2013-02-09 23:11:16 -0800</bug_when>
    <thetext>Committed r142388: &lt;http://trac.webkit.org/changeset/142388&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>829216</commentid>
    <comment_count>12</comment_count>
    <who name="James Robinson">jamesr</who>
    <bug_when>2013-02-09 23:12:07 -0800</bug_when>
    <thetext>(In reply to comment #11)
&gt; Committed r142388: &lt;http://trac.webkit.org/changeset/142388&gt;

This is the Platform API, still need to land the chromium side + roll it in + land the actual unit test changes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>829367</commentid>
    <comment_count>13</comment_count>
    <who name="James Robinson">jamesr</who>
    <bug_when>2013-02-10 16:10:36 -0800</bug_when>
    <thetext>The chromium side change has rolled in, but in local testing I&apos;m finding many of the tests that will now start running in debug+component builds are flaky or buggy.  It seems that pretty much none of the tests in WebFrameTest.cpp clean up properly.  I guess this is somewhat expected given that they haven&apos;t run on any bots in debug mode in forever :/</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>829381</commentid>
    <comment_count>14</comment_count>
      <attachid>187500</attachid>
    <who name="James Robinson">jamesr</who>
    <bug_when>2013-02-10 17:44:37 -0800</bug_when>
    <thetext>Created attachment 187500
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>829382</commentid>
    <comment_count>15</comment_count>
    <who name="James Robinson">jamesr</who>
    <bug_when>2013-02-10 17:45:20 -0800</bug_when>
    <thetext>(In reply to comment #14)
&gt; Created an attachment (id=187500) [details]
&gt; Patch for landing

http://www.youtube.com/watch?v=FONN-0uoTHI</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>829394</commentid>
    <comment_count>16</comment_count>
      <attachid>187500</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-02-10 18:39:45 -0800</bug_when>
    <thetext>Comment on attachment 187500
Patch for landing

Clearing flags on attachment: 187500

Committed r142422: &lt;http://trac.webkit.org/changeset/142422&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>829395</commentid>
    <comment_count>17</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-02-10 18:39:50 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>830003</commentid>
    <comment_count>18</comment_count>
    <who name="Tony Chang">tony</who>
    <bug_when>2013-02-11 12:59:08 -0800</bug_when>
    <thetext>This is great.  Thanks for doing this.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>187460</attachid>
            <date>2013-02-09 20:58:41 -0800</date>
            <delta_ts>2013-02-09 22:14:37 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-109369-20130209205522.patch</filename>
            <type>text/plain</type>
            <size>46835</size>
            <attacher name="James Robinson">jamesr</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQyMDMxCmRpZmYgLS1naXQgYS9Tb3VyY2UvUGxhdGZvcm0v
Q2hhbmdlTG9nIGIvU291cmNlL1BsYXRmb3JtL0NoYW5nZUxvZwppbmRleCA3M2FiODgxMGNmYjcy
NTFmYWZlMGIwMWQ3YWZhMWVhZTYxMWY5OGJlLi5jNjgxZDg4NDUyMDY4NWE5NzE4MjU1Nzg2MTE4
ZTM5OWRhMDIzNGRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvUGxhdGZvcm0vQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9QbGF0Zm9ybS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMiBAQAorMjAxMy0wMi0wOSAg
SmFtZXMgUm9iaW5zb24gIDxqYW1lc3JAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtjaHJvbWl1
bV0gRW5hYmxlIG1vcmUgb2Ygd2Via2l0X3VuaXRfdGVzdHMgaW4gY29tcG9uZW50IGJ1aWxkcwor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTA5MzY5CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIGEgc2V0
IG9mIHRlc3RpbmcgQVBJcyB0byBQbGF0Zm9ybSBmb3IgdW5pdCB0ZXN0cyB0byBhY2Nlc3MgaW4g
Y29tcG9uZW50IGJ1aWxkcy4KKworICAgICAgICAqIGNocm9taXVtL3B1YmxpYy9QbGF0Zm9ybS5o
OgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKFBsYXRmb3JtKToKKyAgICAgICAgKFdlYktp
dDo6UGxhdGZvcm06OnJlZ2lzdGVyTW9ja2VkVVJMKToKKyAgICAgICAgKFdlYktpdDo6UGxhdGZv
cm06OnJlZ2lzdGVyTW9ja2VkRXJyb3JVUkwpOgorICAgICAgICAoV2ViS2l0OjpQbGF0Zm9ybTo6
dW5yZWdpc3Rlck1vY2tlZFVSTCk6CisgICAgICAgIChXZWJLaXQ6OlBsYXRmb3JtOjp1bnJlZ2lz
dGVyQWxsTW9ja2VkVVJMcyk6CisgICAgICAgIChXZWJLaXQ6OlBsYXRmb3JtOjpzZXJ2ZUFzeW5j
aHJvbm91c01vY2tlZFJlcXVlc3RzKToKKyAgICAgICAgKFdlYktpdDo6UGxhdGZvcm06OmdldFdl
YktpdFJvb3REaXIpOgorCiAyMDEzLTAyLTA2ICBUb21teSBXaWRlbmZseWNodCAgPHRvbW15d0Bn
b29nbGUuY29tPgogCiAgICAgICAgIE1lZGlhU3RyZWFtIEFQSTogSW1wbGVtZW50IERUTUYgc3Vw
cG9ydCBpbiBSVENQZWVyQ29ubmVjdGlvbgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwppbmRleCBk
YmYwMzA1YTRjZmNhMTdmZTA3MTgwZTFmOTVmYWRiM2RiY2U0OWE4Li4zODEwZjA1NmM5YWFkYmYy
NTI3ZmZkMmJmYjA2NDNhYjRiY2I0ZTVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwpAQCAt
MSwzICsxLDQyIEBACisyMDEzLTAyLTA5ICBKYW1lcyBSb2JpbnNvbiAgPGphbWVzckBjaHJvbWl1
bS5vcmc+CisKKyAgICAgICAgW2Nocm9taXVtXSBFbmFibGUgbW9yZSBvZiB3ZWJraXRfdW5pdF90
ZXN0cyBpbiBjb21wb25lbnQgYnVpbGRzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xMDkzNjkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBVcGRhdGVzIGFsbCB3ZWJraXRfdW5pdF90ZXN0cyAoZXhjZXB0IGZv
ciBMZXZlbERCVGVzdCkgdG8gZ28gdGhyb3VnaCB0aGUgUGxhdGZvcm0gQVBJIGluc3RlYWQgb2Yg
ZGlyZWN0bHkKKyAgICAgICAgY2FsbGluZyBpbnRvIHdlYmtpdF9zdXBwb3J0IHNvIHRoZXkgd29y
ayBpbiBjb21wb25lbnQgYnVpbGRzLgorCisgICAgICAgICogV2ViS2l0Lmd5cDoKKyAgICAgICAg
KiB0ZXN0cy9Bc3NvY2lhdGVkVVJMTG9hZGVyVGVzdC5jcHA6CisgICAgICAgICogdGVzdHMvRXZl
bnRMaXN0ZW5lclRlc3QuY3BwOgorICAgICAgICAqIHRlc3RzL0ZyYW1lVGVzdEhlbHBlcnMuY3Bw
OgorICAgICAgICAoV2ViS2l0OjpGcmFtZVRlc3RIZWxwZXJzOjpjcmVhdGVXZWJWaWV3QW5kTG9h
ZCk6CisgICAgICAgIChRdWl0VGFzayk6CisgICAgICAgIChXZWJLaXQ6OkZyYW1lVGVzdEhlbHBl
cnM6OlF1aXRUYXNrOjpydW4pOgorICAgICAgICAoRnJhbWVUZXN0SGVscGVycyk6CisgICAgICAg
IChXZWJLaXQ6OkZyYW1lVGVzdEhlbHBlcnM6OnJ1blBlbmRpbmdUYXNrcyk6CisgICAgICAgICog
dGVzdHMvRnJhbWVUZXN0SGVscGVycy5oOgorICAgICAgICAoRnJhbWVUZXN0SGVscGVycyk6Cisg
ICAgICAgICogdGVzdHMvTGlzdGVuZXJMZWFrVGVzdC5jcHA6CisgICAgICAgICogdGVzdHMvUG9w
dXBNZW51VGVzdC5jcHA6CisgICAgICAgICogdGVzdHMvUHJlcmVuZGVyaW5nVGVzdC5jcHA6Cisg
ICAgICAgICogdGVzdHMvU2Nyb2xsaW5nQ29vcmRpbmF0b3JDaHJvbWl1bVRlc3QuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpTY3JvbGxpbmdDb29yZGluYXRvckNocm9taXVtVGVzdDo6flNjcm9sbGlu
Z0Nvb3JkaW5hdG9yQ2hyb21pdW1UZXN0KToKKyAgICAgICAgKFdlYktpdDo6U2Nyb2xsaW5nQ29v
cmRpbmF0b3JDaHJvbWl1bVRlc3Q6Om5hdmlnYXRlVG8pOgorICAgICAgICAqIHRlc3RzL1VSTFRl
c3RIZWxwZXJzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6VVJMVGVzdEhlbHBlcnM6OnJlZ2lzdGVy
TW9ja2VkVVJMTG9hZCk6CisgICAgICAgICogdGVzdHMvV2ViRnJhbWVUZXN0LmNwcDoKKyAgICAg
ICAgKiB0ZXN0cy9XZWJJbWFnZVRlc3QuY3BwOgorICAgICAgICAoV2ViS2l0OjpyZWFkRmlsZSk6
CisgICAgICAgICogdGVzdHMvV2ViUGFnZU5ld1NlcmlhbGl6ZXJUZXN0LmNwcDoKKyAgICAgICAg
KiB0ZXN0cy9XZWJQYWdlU2VyaWFsaXplclRlc3QuY3BwOgorICAgICAgICAqIHRlc3RzL1dlYlBs
dWdpbkNvbnRhaW5lclRlc3QuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQbHVnaW5Db250YWlu
ZXJUZXN0OjpUZWFyRG93bik6CisgICAgICAgIChXZWJLaXQ6OlRFU1RfRik6CisgICAgICAgICog
dGVzdHMvV2ViVmlld1Rlc3QuY3BwOgorCiAyMDEzLTAyLTA2ICBTaGVyaWZmIEJvdCAgPHdlYmtp
dC5yZXZpZXcuYm90QGdtYWlsLmNvbT4KIAogICAgICAgICBVbnJldmlld2VkLCByb2xsaW5nIG91
dCByMTQyMDI1LgpkaWZmIC0tZ2l0IGEvU291cmNlL1BsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9Q
bGF0Zm9ybS5oIGIvU291cmNlL1BsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9QbGF0Zm9ybS5oCmlu
ZGV4IDA5MzY2ZWU1MDlmYWEzOWQyZDAwZDBlZDFhMmUzOGM5MjZiNzk1M2YuLmY0YWVmNDQxZTEx
MDk2YTY4OGJiZTllNTlmNzlkMDJhZjg3YmU3MTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9QbGF0Zm9y
bS9jaHJvbWl1bS9wdWJsaWMvUGxhdGZvcm0uaAorKysgYi9Tb3VyY2UvUGxhdGZvcm0vY2hyb21p
dW0vcHVibGljL1BsYXRmb3JtLmgKQEAgLTcxLDEwICs3MSwxMiBAQCBjbGFzcyBXZWJUaGVtZUVu
Z2luZTsKIGNsYXNzIFdlYlRocmVhZDsKIGNsYXNzIFdlYlVSTDsKIGNsYXNzIFdlYlVSTExvYWRl
cjsKK2NsYXNzIFdlYlVSTFJlc3BvbnNlOwogY2xhc3MgV2ViV29ya2VyUnVuTG9vcDsKLXN0cnVj
dCBXZWJMb2NhbGl6ZWRTdHJpbmc7CiBzdHJ1Y3QgV2ViRmxvYXRQb2ludDsKK3N0cnVjdCBXZWJM
b2NhbGl6ZWRTdHJpbmc7CiBzdHJ1Y3QgV2ViU2l6ZTsKK3N0cnVjdCBXZWJVUkxFcnJvcjsKIAog
Y2xhc3MgUGxhdGZvcm0gewogcHVibGljOgpAQCAtMzYwLDYgKzM2MiwyMyBAQCBwdWJsaWM6CiAg
ICAgdmlydHVhbCB2b2lkIGNhbGxPbk1haW5UaHJlYWQodm9pZCAoKmZ1bmMpKHZvaWQqKSwgdm9p
ZCogY29udGV4dCkgeyB9CiAKIAorICAgIC8vIFRlc3RpbmcgLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgIHZpcnR1YWwgdm9p
ZCByZWdpc3Rlck1vY2tlZFVSTChjb25zdCBXZWJVUkwmLCBjb25zdCBXZWJVUkxSZXNwb25zZSYs
IGNvbnN0IFdlYlN0cmluZyYgZmlsZVBhdGgpIHsgfQorCisgICAgLy8gUmVnaXN0ZXJzIHRoZSBl
cnJvciB0byBiZSByZXR1cm5lZCB3aGVuIHx1cmx8IGlzIHJlcXVlc3RlZC4KKyAgICB2aXJ0dWFs
IHZvaWQgcmVnaXN0ZXJNb2NrZWRFcnJvclVSTChjb25zdCBXZWJVUkwmLCBjb25zdCBXZWJVUkxS
ZXNwb25zZSYsIGNvbnN0IFdlYlVSTEVycm9yJikgeyB9CisKKyAgICAvLyBVbnJlZ2lzdGVycyBV
UkxzIHNvIHRoZXkgYXJlIG5vIGxvbmdlciBtb2NrZWQuCisgICAgdmlydHVhbCB2b2lkIHVucmVn
aXN0ZXJNb2NrZWRVUkwoY29uc3QgV2ViVVJMJikgeyB9CisgICAgdmlydHVhbCB2b2lkIHVucmVn
aXN0ZXJBbGxNb2NrZWRVUkxzKCkgeyB9CisKKyAgICAvLyBDYXVzZXMgYWxsIHBlbmRpbmcgYXN5
bmNocm9ub3VzIHJlcXVlc3RzIHRvIGJlIHNlcnZlZC4gV2hlbiB0aGlzIG1ldGhvZAorICAgIC8v
IHJldHVybnMgYWxsIHRoZSBwZW5kaW5nIHJlcXVlc3RzIGhhdmUgYmVlbiBwcm9jZXNzZWQuCisg
ICAgdmlydHVhbCB2b2lkIHNlcnZlQXN5bmNocm9ub3VzTW9ja2VkUmVxdWVzdHMoKSB7IH0KKwor
ICAgIC8vIFJldHVybnMgdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoZSBXZWJLaXQgY29kZS4KKyAg
ICB2aXJ0dWFsIFdlYlN0cmluZyBnZXRXZWJLaXRSb290RGlyKCkgeyByZXR1cm4gV2ViU3RyaW5n
KCk7IH0KKwogICAgIC8vIFRyYWNpbmcgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCiAgICAgLy8gR2V0IGEgcG9pbnRlciB0byB0
aGUgZW5hYmxlZCBzdGF0ZSBvZiB0aGUgZ2l2ZW4gdHJhY2UgY2F0ZWdvcnkuIFRoZQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lwIGIvU291cmNlL1dlYktpdC9j
aHJvbWl1bS9XZWJLaXQuZ3lwCmluZGV4IDQ4ODY5YmNlMTZlY2I1NTg0M2UzMzQ1NDAyNDBlMDA5
NWFjYTNiMDMuLmI0NTQ1OWJkNDIwOTllMjJhNTA1NjUzYmRkZGIzZWUyYjE5MWM3NTMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5cAorKysgYi9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL1dlYktpdC5neXAKQEAgLTY1MywyNyArNjUzLDcgQEAKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIyBXZSBzaG91bGQgbm90IGluY2x1ZGUgZmlsZXMgZGVwZW5k
aW5nIG9uIHdlYmtpdF9zdXBwb3J0LgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAj
IFRoZXNlIHRlc3RzIGRlcGVuZCBvbiB3ZWJraXRfc3VwcG9ydCBhbmQKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIyBmdW5jdGlvbnMgZGVmaW5lZCBvbmx5IGluICFXRUJLSVRfSU1Q
TEVNRU5UQVRJT04uCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICd0ZXN0cy9Bc3Nv
Y2lhdGVkVVJMTG9hZGVyVGVzdC5jcHAnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAndGVzdHMvRXZlbnRMaXN0ZW5lclRlc3QuY3BwJywKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgJ3Rlc3RzL0Zha2VXZWJQbHVnaW4uY3BwJywKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgJ3Rlc3RzL0ZyYW1lVGVzdEhlbHBlcnMuY3BwJywKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgJ3Rlc3RzL0lEQkJpbmRpbmdVdGlsaXRpZXNUZXN0LmNwcCcsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICd0ZXN0cy9JREJSZXF1ZXN0VGVzdC5jcHAn
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAndGVzdHMvTGV2ZWxEQlRlc3QuY3Bw
JywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3Rlc3RzL0xpc3RlbmVyTGVha1Rl
c3QuY3BwJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3Rlc3RzL0xpbmtIaWdo
bGlnaHRUZXN0LmNwcCcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICd0ZXN0cy9Q
b3B1cE1lbnVUZXN0LmNwcCcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICd0ZXN0
cy9QcmVyZW5kZXJpbmdUZXN0LmNwcCcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICd0ZXN0cy9SZW5kZXJUYWJsZUNlbGxUZXN0LmNwcCcsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICd0ZXN0cy9SZW5kZXJUYWJsZVJvd1Rlc3QuY3BwJywKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgJ3Rlc3RzL1Njcm9sbGluZ0Nvb3JkaW5hdG9yQ2hyb21pdW1UZXN0
LmNwcCcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICd0ZXN0cy9VUkxUZXN0SGVs
cGVycy5jcHAnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAndGVzdHMvV2ViRnJh
bWVUZXN0LmNwcCcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICd0ZXN0cy9XZWJJ
bWFnZVRlc3QuY3BwJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3Rlc3RzL1dl
YlBhZ2VOZXdTZXJpYWxpemVyVGVzdC5jcHAnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAndGVzdHMvV2ViUGFnZVNlcmlhbGl6ZXJUZXN0LmNwcCcsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICd0ZXN0cy9XZWJQbHVnaW5Db250YWluZXJUZXN0LmNwcCcsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICd0ZXN0cy9XZWJWaWV3VGVzdC5jcHAnLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIF0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
J2NvbmRpdGlvbnMnOiBbCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsnT1M9PSJ3
aW4iIG9yIE9TPT0ibWFjIicsIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
dGVzdHMvQXNzb2NpYXRlZFVSTExvYWRlclRlc3QuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1
bS90ZXN0cy9Bc3NvY2lhdGVkVVJMTG9hZGVyVGVzdC5jcHAKaW5kZXggOGFiYTNiNjE0NmIyMGNl
ZjQzYjkwMjIwYmIyMDU4ZWNkZTY5YTljZi4uODgxMmE0YWM1ZTBmMGZkOWQxZDEzMmYyODU2OTZl
MzI0YjhlMzdlMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9Bc3Nv
Y2lhdGVkVVJMTG9hZGVyVGVzdC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0
cy9Bc3NvY2lhdGVkVVJMTG9hZGVyVGVzdC5jcHAKQEAgLTM1LDcgKzM1LDkgQEAKICNpbmNsdWRl
ICJXZWJGcmFtZUNsaWVudC5oIgogI2luY2x1ZGUgIldlYlVSTExvYWRlck9wdGlvbnMuaCIKICNp
bmNsdWRlICJXZWJWaWV3LmgiCisjaW5jbHVkZSA8cHVibGljL1BsYXRmb3JtLmg+CiAjaW5jbHVk
ZSA8cHVibGljL1dlYlN0cmluZy5oPgorI2luY2x1ZGUgPHB1YmxpYy9XZWJUaHJlYWQuaD4KICNp
bmNsdWRlIDxwdWJsaWMvV2ViVVJMLmg+CiAjaW5jbHVkZSA8cHVibGljL1dlYlVSTExvYWRlci5o
PgogI2luY2x1ZGUgPHB1YmxpYy9XZWJVUkxMb2FkZXJDbGllbnQuaD4KQEAgLTQ0LDcgKzQ2LDYg
QEAKICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAogI2luY2x1ZGUgPGd0ZXN0L2d0
ZXN0Lmg+Ci0jaW5jbHVkZSA8d2Via2l0L3N1cHBvcnQvd2Via2l0X3N1cHBvcnQuaD4KIAogdXNp
bmcgbmFtZXNwYWNlIFdlYktpdDsKIHVzaW5nIFdlYktpdDo6VVJMVGVzdEhlbHBlcnM6OnRvS1VS
TDsKQEAgLTc3LDcgKzc4LDcgQEAgcHVibGljOgogICAgICAgICAsICBtX3J1bm5pbmdNZXNzYWdl
TG9vcChmYWxzZSkKICAgICB7CiAgICAgICAgIC8vIFJldXNlIG9uZSBvZiB0aGUgdGVzdCBmaWxl
cyBmcm9tIFdlYkZyYW1lVGVzdC4KLSAgICAgICAgc3RkOjpzdHJpbmcgZmlsZVBhdGggPSBzdGQ6
OnN0cmluZyh3ZWJraXRfc3VwcG9ydDo6R2V0V2ViS2l0Um9vdERpcigpLnV0ZjgoKS5kYXRhKCkp
OworICAgICAgICBzdGQ6OnN0cmluZyBmaWxlUGF0aCA9IHN0ZDo6c3RyaW5nKFBsYXRmb3JtOjpj
dXJyZW50KCktPmdldFdlYktpdFJvb3REaXIoKS51dGY4KCkuZGF0YSgpKTsKICAgICAgICAgZmls
ZVBhdGggKz0gIi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL2RhdGEvaWZyYW1lc190ZXN0
Lmh0bWwiOwogICAgICAgICBtX2ZyYW1lRmlsZVBhdGggPSBXZWJTdHJpbmc6OmZyb21VVEY4KGZp
bGVQYXRoLmNfc3RyKCkpOwogICAgIH0KQEAgLTkyLDcgKzkzLDcgQEAgcHVibGljOgogICAgICAg
ICBXZWJVUkxSZXNwb25zZSByZXNwb25zZTsKICAgICAgICAgcmVzcG9uc2UuaW5pdGlhbGl6ZSgp
OwogICAgICAgICByZXNwb25zZS5zZXRNSU1FVHlwZSgidGV4dC9odG1sIik7Ci0gICAgICAgIHdl
YmtpdF9zdXBwb3J0OjpSZWdpc3Rlck1vY2tlZFVSTCh1cmwsIHJlc3BvbnNlLCBtX2ZyYW1lRmls
ZVBhdGgpOworICAgICAgICBQbGF0Zm9ybTo6Y3VycmVudCgpLT5yZWdpc3Rlck1vY2tlZFVSTCh1
cmwsIHJlc3BvbnNlLCBtX2ZyYW1lRmlsZVBhdGgpOwogCiAgICAgICAgIFdlYlVSTFJlcXVlc3Qg
cmVxdWVzdDsKICAgICAgICAgcmVxdWVzdC5pbml0aWFsaXplKCk7CkBAIC0xMDAsMTggKzEwMSwx
OCBAQCBwdWJsaWM6CiAgICAgICAgIG1fd2ViVmlldy0+bWFpbkZyYW1lKCktPmxvYWRSZXF1ZXN0
KHJlcXVlc3QpOwogICAgICAgICBzZXJ2ZVJlcXVlc3RzKCk7CiAKLSAgICAgICAgd2Via2l0X3N1
cHBvcnQ6OlVucmVnaXN0ZXJNb2NrZWRVUkwodXJsKTsKKyAgICAgICAgUGxhdGZvcm06OmN1cnJl
bnQoKS0+dW5yZWdpc3Rlck1vY2tlZFVSTCh1cmwpOwogICAgIH0KIAogICAgIHZvaWQgVGVhckRv
d24oKQogICAgIHsKLSAgICAgICAgd2Via2l0X3N1cHBvcnQ6OlVucmVnaXN0ZXJBbGxNb2NrZWRV
UkxzKCk7CisgICAgICAgIFBsYXRmb3JtOjpjdXJyZW50KCktPnVucmVnaXN0ZXJBbGxNb2NrZWRV
UkxzKCk7CiAgICAgICAgIG1fd2ViVmlldy0+Y2xvc2UoKTsKICAgICB9CiAKICAgICB2b2lkIHNl
cnZlUmVxdWVzdHMoKQogICAgIHsKLSAgICAgICAgd2Via2l0X3N1cHBvcnQ6OlNlcnZlQXN5bmNo
cm9ub3VzTW9ja2VkUmVxdWVzdHMoKTsKKyAgICAgICAgUGxhdGZvcm06OmN1cnJlbnQoKS0+c2Vy
dmVBc3luY2hyb25vdXNNb2NrZWRSZXF1ZXN0cygpOwogICAgIH0KIAogICAgIFdlYlVSTExvYWRl
ciogY3JlYXRlQXNzb2NpYXRlZFVSTExvYWRlcihjb25zdCBXZWJVUkxMb2FkZXJPcHRpb25zIG9w
dGlvbnMgPSBXZWJVUkxMb2FkZXJPcHRpb25zKCkpCkBAIC0xNzcsNyArMTc4LDcgQEAgcHVibGlj
OgogICAgICAgICBFWFBFQ1RfRVEobV9leHBlY3RlZExvYWRlciwgbG9hZGVyKTsKICAgICAgICAg
aWYgKG1fcnVubmluZ01lc3NhZ2VMb29wKSB7CiAgICAgICAgICAgICBtX3J1bm5pbmdNZXNzYWdl
TG9vcCA9IGZhbHNlOwotICAgICAgICAgICAgd2Via2l0X3N1cHBvcnQ6OlF1aXRNZXNzYWdlTG9v
cCgpOworICAgICAgICAgICAgUGxhdGZvcm06OmN1cnJlbnQoKS0+Y3VycmVudFRocmVhZCgpLT5l
eGl0UnVuTG9vcCgpOwogICAgICAgICB9CiAgICAgfQogCkBAIC0yMTgsNyArMjE5LDcgQEAgcHVi
bGljOgogICAgICAgICBFWFBFQ1RfRkFMU0UobV9kaWRGYWlsKTsKICAgICAgICAgLy8gQWxsb3cg
dGhlIGxvYWRlciB0byByZXR1cm4gdGhlIGVycm9yLgogICAgICAgICBtX3J1bm5pbmdNZXNzYWdl
TG9vcCA9IHRydWU7Ci0gICAgICAgIHdlYmtpdF9zdXBwb3J0OjpSdW5NZXNzYWdlTG9vcCgpOwor
ICAgICAgICBQbGF0Zm9ybTo6Y3VycmVudCgpLT5jdXJyZW50VGhyZWFkKCktPmVudGVyUnVuTG9v
cCgpOwogICAgICAgICBFWFBFQ1RfVFJVRShtX2RpZEZhaWwpOwogICAgICAgICBFWFBFQ1RfRkFM
U0UobV9kaWRSZWNlaXZlUmVzcG9uc2UpOwogICAgIH0KQEAgLTI0NCw3ICsyNDUsNyBAQCBwdWJs
aWM6CiAgICAgICAgIGlmIChleHBvc2VkKQogICAgICAgICAgICAgbV9leHBlY3RlZFJlc3BvbnNl
LmFkZEhUVFBIZWFkZXJGaWVsZCgiYWNjZXNzLWNvbnRyb2wtZXhwb3NlLWhlYWRlcnMiLCBoZWFk
ZXJOYW1lU3RyaW5nKTsKICAgICAgICAgbV9leHBlY3RlZFJlc3BvbnNlLmFkZEhUVFBIZWFkZXJG
aWVsZChoZWFkZXJOYW1lU3RyaW5nLCAiZm9vIik7Ci0gICAgICAgIHdlYmtpdF9zdXBwb3J0OjpS
ZWdpc3Rlck1vY2tlZFVSTCh1cmwsIG1fZXhwZWN0ZWRSZXNwb25zZSwgbV9mcmFtZUZpbGVQYXRo
KTsKKyAgICAgICAgUGxhdGZvcm06OmN1cnJlbnQoKS0+cmVnaXN0ZXJNb2NrZWRVUkwodXJsLCBt
X2V4cGVjdGVkUmVzcG9uc2UsIG1fZnJhbWVGaWxlUGF0aCk7CiAKICAgICAgICAgV2ViVVJMTG9h
ZGVyT3B0aW9ucyBvcHRpb25zOwogICAgICAgICBvcHRpb25zLmNyb3NzT3JpZ2luUmVxdWVzdFBv
bGljeSA9IFdlYlVSTExvYWRlck9wdGlvbnM6OkNyb3NzT3JpZ2luUmVxdWVzdFBvbGljeVVzZUFj
Y2Vzc0NvbnRyb2w7CkBAIC0yOTEsNyArMjkyLDcgQEAgVEVTVF9GKEFzc29jaWF0ZWRVUkxMb2Fk
ZXJUZXN0LCBTYW1lT3JpZ2luU3VjY2VzcykKICAgICBtX2V4cGVjdGVkUmVzcG9uc2UgPSBXZWJV
UkxSZXNwb25zZSgpOwogICAgIG1fZXhwZWN0ZWRSZXNwb25zZS5pbml0aWFsaXplKCk7CiAgICAg
bV9leHBlY3RlZFJlc3BvbnNlLnNldE1JTUVUeXBlKCJ0ZXh0L2h0bWwiKTsKLSAgICB3ZWJraXRf
c3VwcG9ydDo6UmVnaXN0ZXJNb2NrZWRVUkwodXJsLCBtX2V4cGVjdGVkUmVzcG9uc2UsIG1fZnJh
bWVGaWxlUGF0aCk7CisgICAgUGxhdGZvcm06OmN1cnJlbnQoKS0+cmVnaXN0ZXJNb2NrZWRVUkwo
dXJsLCBtX2V4cGVjdGVkUmVzcG9uc2UsIG1fZnJhbWVGaWxlUGF0aCk7CiAKICAgICBtX2V4cGVj
dGVkTG9hZGVyID0gY3JlYXRlQXNzb2NpYXRlZFVSTExvYWRlcigpOwogICAgIEVYUEVDVF9UUlVF
KG1fZXhwZWN0ZWRMb2FkZXIpOwpAQCAtMzI1LDcgKzMyNiw3IEBAIFRFU1RfRihBc3NvY2lhdGVk
VVJMTG9hZGVyVGVzdCwgQ3Jvc3NPcmlnaW5TdWNjZXNzKQogICAgIG1fZXhwZWN0ZWRSZXNwb25z
ZSA9IFdlYlVSTFJlc3BvbnNlKCk7CiAgICAgbV9leHBlY3RlZFJlc3BvbnNlLmluaXRpYWxpemUo
KTsKICAgICBtX2V4cGVjdGVkUmVzcG9uc2Uuc2V0TUlNRVR5cGUoInRleHQvaHRtbCIpOwotICAg
IHdlYmtpdF9zdXBwb3J0OjpSZWdpc3Rlck1vY2tlZFVSTCh1cmwsIG1fZXhwZWN0ZWRSZXNwb25z
ZSwgbV9mcmFtZUZpbGVQYXRoKTsKKyAgICBQbGF0Zm9ybTo6Y3VycmVudCgpLT5yZWdpc3Rlck1v
Y2tlZFVSTCh1cmwsIG1fZXhwZWN0ZWRSZXNwb25zZSwgbV9mcmFtZUZpbGVQYXRoKTsKIAogICAg
IFdlYlVSTExvYWRlck9wdGlvbnMgb3B0aW9uczsKICAgICBvcHRpb25zLmNyb3NzT3JpZ2luUmVx
dWVzdFBvbGljeSA9IFdlYlVSTExvYWRlck9wdGlvbnM6OkNyb3NzT3JpZ2luUmVxdWVzdFBvbGlj
eUFsbG93OwpAQCAtMzUxLDcgKzM1Miw3IEBAIFRFU1RfRihBc3NvY2lhdGVkVVJMTG9hZGVyVGVz
dCwgQ3Jvc3NPcmlnaW5XaXRoQWNjZXNzQ29udHJvbFN1Y2Nlc3MpCiAgICAgbV9leHBlY3RlZFJl
c3BvbnNlLmluaXRpYWxpemUoKTsKICAgICBtX2V4cGVjdGVkUmVzcG9uc2Uuc2V0TUlNRVR5cGUo
InRleHQvaHRtbCIpOwogICAgIG1fZXhwZWN0ZWRSZXNwb25zZS5hZGRIVFRQSGVhZGVyRmllbGQo
ImFjY2Vzcy1jb250cm9sLWFsbG93LW9yaWdpbiIsICIqIik7Ci0gICAgd2Via2l0X3N1cHBvcnQ6
OlJlZ2lzdGVyTW9ja2VkVVJMKHVybCwgbV9leHBlY3RlZFJlc3BvbnNlLCBtX2ZyYW1lRmlsZVBh
dGgpOworICAgIFBsYXRmb3JtOjpjdXJyZW50KCktPnJlZ2lzdGVyTW9ja2VkVVJMKHVybCwgbV9l
eHBlY3RlZFJlc3BvbnNlLCBtX2ZyYW1lRmlsZVBhdGgpOwogCiAgICAgV2ViVVJMTG9hZGVyT3B0
aW9ucyBvcHRpb25zOwogICAgIG9wdGlvbnMuY3Jvc3NPcmlnaW5SZXF1ZXN0UG9saWN5ID0gV2Vi
VVJMTG9hZGVyT3B0aW9uczo6Q3Jvc3NPcmlnaW5SZXF1ZXN0UG9saWN5VXNlQWNjZXNzQ29udHJv
bDsKQEAgLTM3Nyw3ICszNzgsNyBAQCBURVNUX0YoQXNzb2NpYXRlZFVSTExvYWRlclRlc3QsIENy
b3NzT3JpZ2luV2l0aEFjY2Vzc0NvbnRyb2xGYWlsdXJlKQogICAgIG1fZXhwZWN0ZWRSZXNwb25z
ZS5pbml0aWFsaXplKCk7CiAgICAgbV9leHBlY3RlZFJlc3BvbnNlLnNldE1JTUVUeXBlKCJ0ZXh0
L2h0bWwiKTsKICAgICBtX2V4cGVjdGVkUmVzcG9uc2UuYWRkSFRUUEhlYWRlckZpZWxkKCJhY2Nl
c3MtY29udHJvbC1hbGxvdy1vcmlnaW4iLCAiKiIpOwotICAgIHdlYmtpdF9zdXBwb3J0OjpSZWdp
c3Rlck1vY2tlZFVSTCh1cmwsIG1fZXhwZWN0ZWRSZXNwb25zZSwgbV9mcmFtZUZpbGVQYXRoKTsK
KyAgICBQbGF0Zm9ybTo6Y3VycmVudCgpLT5yZWdpc3Rlck1vY2tlZFVSTCh1cmwsIG1fZXhwZWN0
ZWRSZXNwb25zZSwgbV9mcmFtZUZpbGVQYXRoKTsKIAogICAgIFdlYlVSTExvYWRlck9wdGlvbnMg
b3B0aW9uczsKICAgICAvLyBTZW5kIGNyZWRlbnRpYWxzLiBUaGlzIHdpbGwgY2F1c2UgdGhlIENP
UlMgY2hlY2tzIHRvIGZhaWwsIGJlY2F1c2UgY3JlZGVudGlhbHMgY2FuJ3QgYmUKQEAgLTQxMiw3
ICs0MTMsNyBAQCBURVNUX0YoQXNzb2NpYXRlZFVSTExvYWRlclRlc3QsIFJlZGlyZWN0U3VjY2Vz
cykKICAgICBtX2V4cGVjdGVkUmVkaXJlY3RSZXNwb25zZS5zZXRNSU1FVHlwZSgidGV4dC9odG1s
Iik7CiAgICAgbV9leHBlY3RlZFJlZGlyZWN0UmVzcG9uc2Uuc2V0SFRUUFN0YXR1c0NvZGUoMzAx
KTsKICAgICBtX2V4cGVjdGVkUmVkaXJlY3RSZXNwb25zZS5zZXRIVFRQSGVhZGVyRmllbGQoIkxv
Y2F0aW9uIiwgcmVkaXJlY3QpOwotICAgIHdlYmtpdF9zdXBwb3J0OjpSZWdpc3Rlck1vY2tlZFVS
TCh1cmwsIG1fZXhwZWN0ZWRSZWRpcmVjdFJlc3BvbnNlLCBtX2ZyYW1lRmlsZVBhdGgpOworICAg
IFBsYXRmb3JtOjpjdXJyZW50KCktPnJlZ2lzdGVyTW9ja2VkVVJMKHVybCwgbV9leHBlY3RlZFJl
ZGlyZWN0UmVzcG9uc2UsIG1fZnJhbWVGaWxlUGF0aCk7CiAKICAgICBtX2V4cGVjdGVkTmV3UmVx
dWVzdCA9IFdlYlVSTFJlcXVlc3QoKTsKICAgICBtX2V4cGVjdGVkTmV3UmVxdWVzdC5pbml0aWFs
aXplKCk7CkBAIC00MjEsNyArNDIyLDcgQEAgVEVTVF9GKEFzc29jaWF0ZWRVUkxMb2FkZXJUZXN0
LCBSZWRpcmVjdFN1Y2Nlc3MpCiAgICAgbV9leHBlY3RlZFJlc3BvbnNlID0gV2ViVVJMUmVzcG9u
c2UoKTsKICAgICBtX2V4cGVjdGVkUmVzcG9uc2UuaW5pdGlhbGl6ZSgpOwogICAgIG1fZXhwZWN0
ZWRSZXNwb25zZS5zZXRNSU1FVHlwZSgidGV4dC9odG1sIik7Ci0gICAgd2Via2l0X3N1cHBvcnQ6
OlJlZ2lzdGVyTW9ja2VkVVJMKHJlZGlyZWN0VVJMLCBtX2V4cGVjdGVkUmVzcG9uc2UsIG1fZnJh
bWVGaWxlUGF0aCk7CisgICAgUGxhdGZvcm06OmN1cnJlbnQoKS0+cmVnaXN0ZXJNb2NrZWRVUkwo
cmVkaXJlY3RVUkwsIG1fZXhwZWN0ZWRSZXNwb25zZSwgbV9mcmFtZUZpbGVQYXRoKTsKIAogICAg
IG1fZXhwZWN0ZWRMb2FkZXIgPSBjcmVhdGVBc3NvY2lhdGVkVVJMTG9hZGVyKCk7CiAgICAgRVhQ
RUNUX1RSVUUobV9leHBlY3RlZExvYWRlcik7CkBAIC00NTAsNyArNDUxLDcgQEAgVEVTVF9GKEFz
c29jaWF0ZWRVUkxMb2FkZXJUZXN0LCBSZWRpcmVjdENyb3NzT3JpZ2luV2l0aEFjY2Vzc0NvbnRy
b2xGYWlsdXJlKQogICAgIG1fZXhwZWN0ZWRSZWRpcmVjdFJlc3BvbnNlLnNldE1JTUVUeXBlKCJ0
ZXh0L2h0bWwiKTsKICAgICBtX2V4cGVjdGVkUmVkaXJlY3RSZXNwb25zZS5zZXRIVFRQU3RhdHVz
Q29kZSgzMDEpOwogICAgIG1fZXhwZWN0ZWRSZWRpcmVjdFJlc3BvbnNlLnNldEhUVFBIZWFkZXJG
aWVsZCgiTG9jYXRpb24iLCByZWRpcmVjdCk7Ci0gICAgd2Via2l0X3N1cHBvcnQ6OlJlZ2lzdGVy
TW9ja2VkVVJMKHVybCwgbV9leHBlY3RlZFJlZGlyZWN0UmVzcG9uc2UsIG1fZnJhbWVGaWxlUGF0
aCk7CisgICAgUGxhdGZvcm06OmN1cnJlbnQoKS0+cmVnaXN0ZXJNb2NrZWRVUkwodXJsLCBtX2V4
cGVjdGVkUmVkaXJlY3RSZXNwb25zZSwgbV9mcmFtZUZpbGVQYXRoKTsKIAogICAgIFdlYlVSTExv
YWRlck9wdGlvbnMgb3B0aW9uczsKICAgICBvcHRpb25zLmNyb3NzT3JpZ2luUmVxdWVzdFBvbGlj
eSA9IFdlYlVSTExvYWRlck9wdGlvbnM6OkNyb3NzT3JpZ2luUmVxdWVzdFBvbGljeVVzZUFjY2Vz
c0NvbnRyb2w7CkBAIC00ODMsNyArNDg0LDcgQEAgVEVTVF9GKEFzc29jaWF0ZWRVUkxMb2FkZXJU
ZXN0LCBSZWRpcmVjdENyb3NzT3JpZ2luV2l0aEFjY2Vzc0NvbnRyb2xTdWNjZXNzKQogICAgIG1f
ZXhwZWN0ZWRSZWRpcmVjdFJlc3BvbnNlLnNldEhUVFBTdGF0dXNDb2RlKDMwMSk7CiAgICAgbV9l
eHBlY3RlZFJlZGlyZWN0UmVzcG9uc2Uuc2V0SFRUUEhlYWRlckZpZWxkKCJMb2NhdGlvbiIsIHJl
ZGlyZWN0KTsKICAgICBtX2V4cGVjdGVkUmVkaXJlY3RSZXNwb25zZS5hZGRIVFRQSGVhZGVyRmll
bGQoImFjY2Vzcy1jb250cm9sLWFsbG93LW9yaWdpbiIsICIqIik7Ci0gICAgd2Via2l0X3N1cHBv
cnQ6OlJlZ2lzdGVyTW9ja2VkVVJMKHVybCwgbV9leHBlY3RlZFJlZGlyZWN0UmVzcG9uc2UsIG1f
ZnJhbWVGaWxlUGF0aCk7CisgICAgUGxhdGZvcm06OmN1cnJlbnQoKS0+cmVnaXN0ZXJNb2NrZWRV
UkwodXJsLCBtX2V4cGVjdGVkUmVkaXJlY3RSZXNwb25zZSwgbV9mcmFtZUZpbGVQYXRoKTsKIAog
ICAgIG1fZXhwZWN0ZWROZXdSZXF1ZXN0ID0gV2ViVVJMUmVxdWVzdCgpOwogICAgIG1fZXhwZWN0
ZWROZXdSZXF1ZXN0LmluaXRpYWxpemUoKTsKQEAgLTQ5Myw3ICs0OTQsNyBAQCBURVNUX0YoQXNz
b2NpYXRlZFVSTExvYWRlclRlc3QsIFJlZGlyZWN0Q3Jvc3NPcmlnaW5XaXRoQWNjZXNzQ29udHJv
bFN1Y2Nlc3MpCiAgICAgbV9leHBlY3RlZFJlc3BvbnNlLmluaXRpYWxpemUoKTsKICAgICBtX2V4
cGVjdGVkUmVzcG9uc2Uuc2V0TUlNRVR5cGUoInRleHQvaHRtbCIpOwogICAgIG1fZXhwZWN0ZWRS
ZXNwb25zZS5hZGRIVFRQSGVhZGVyRmllbGQoImFjY2Vzcy1jb250cm9sLWFsbG93LW9yaWdpbiIs
ICIqIik7Ci0gICAgd2Via2l0X3N1cHBvcnQ6OlJlZ2lzdGVyTW9ja2VkVVJMKHJlZGlyZWN0VVJM
LCBtX2V4cGVjdGVkUmVzcG9uc2UsIG1fZnJhbWVGaWxlUGF0aCk7CisgICAgUGxhdGZvcm06OmN1
cnJlbnQoKS0+cmVnaXN0ZXJNb2NrZWRVUkwocmVkaXJlY3RVUkwsIG1fZXhwZWN0ZWRSZXNwb25z
ZSwgbV9mcmFtZUZpbGVQYXRoKTsKIAogICAgIFdlYlVSTExvYWRlck9wdGlvbnMgb3B0aW9uczsK
ICAgICBvcHRpb25zLmNyb3NzT3JpZ2luUmVxdWVzdFBvbGljeSA9IFdlYlVSTExvYWRlck9wdGlv
bnM6OkNyb3NzT3JpZ2luUmVxdWVzdFBvbGljeVVzZUFjY2Vzc0NvbnRyb2w7CkBAIC02MDAsNyAr
NjAxLDcgQEAgVEVTVF9GKEFzc29jaWF0ZWRVUkxMb2FkZXJUZXN0LCBDcm9zc09yaWdpbkhlYWRl
ckFsbG93UmVzcG9uc2VIZWFkZXJzKQogICAgIG1fZXhwZWN0ZWRSZXNwb25zZS5zZXRNSU1FVHlw
ZSgidGV4dC9odG1sIik7CiAgICAgbV9leHBlY3RlZFJlc3BvbnNlLmFkZEhUVFBIZWFkZXJGaWVs
ZCgiQWNjZXNzLUNvbnRyb2wtQWxsb3ctT3JpZ2luIiwgIioiKTsKICAgICBtX2V4cGVjdGVkUmVz
cG9uc2UuYWRkSFRUUEhlYWRlckZpZWxkKGhlYWRlck5hbWVTdHJpbmcsICJmb28iKTsKLSAgICB3
ZWJraXRfc3VwcG9ydDo6UmVnaXN0ZXJNb2NrZWRVUkwodXJsLCBtX2V4cGVjdGVkUmVzcG9uc2Us
IG1fZnJhbWVGaWxlUGF0aCk7CisgICAgUGxhdGZvcm06OmN1cnJlbnQoKS0+cmVnaXN0ZXJNb2Nr
ZWRVUkwodXJsLCBtX2V4cGVjdGVkUmVzcG9uc2UsIG1fZnJhbWVGaWxlUGF0aCk7CiAKICAgICBX
ZWJVUkxMb2FkZXJPcHRpb25zIG9wdGlvbnM7CiAgICAgb3B0aW9ucy5leHBvc2VBbGxSZXNwb25z
ZUhlYWRlcnMgPSB0cnVlOyAvLyBUaGlzIHR1cm5zIG9mZiByZXNwb25zZSB3aGl0ZWxpc3Rpbmcu
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0V2ZW50TGlzdGVuZXJU
ZXN0LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvRXZlbnRMaXN0ZW5lclRlc3Qu
Y3BwCmluZGV4IDQyNTU0Njk1MjUxZWJjMDdmMWVjMmJjZmI2MmNjNjU2YjZjMjk3ZDUuLmZiNmJj
MjllYjJkZjFkZjMzMWZiMDgzODYxMzZkZWQ4OGUwNWEyNzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vdGVzdHMvRXZlbnRMaXN0ZW5lclRlc3QuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vdGVzdHMvRXZlbnRMaXN0ZW5lclRlc3QuY3BwCkBAIC00MSw3ICs0MSw3
IEBACiAjaW5jbHVkZSAiV2ViU2NyaXB0U291cmNlLmgiCiAjaW5jbHVkZSAiV2ViVmlldy5oIgog
I2luY2x1ZGUgPGd0ZXN0L2d0ZXN0Lmg+Ci0jaW5jbHVkZSA8d2Via2l0L3N1cHBvcnQvd2Via2l0
X3N1cHBvcnQuaD4KKyNpbmNsdWRlIDxwdWJsaWMvUGxhdGZvcm0uaD4KIAogdXNpbmcgbmFtZXNw
YWNlIFdlYktpdDsKIApAQCAtODYsNyArODYsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lk
IFRlYXJEb3duKCkgT1ZFUlJJREUKICAgICB7CiAgICAgICAgIG1fd2ViVmlldy0+Y2xvc2UoKTsK
LSAgICAgICAgd2Via2l0X3N1cHBvcnQ6OlVucmVnaXN0ZXJBbGxNb2NrZWRVUkxzKCk7CisgICAg
ICAgIFBsYXRmb3JtOjpjdXJyZW50KCktPnVucmVnaXN0ZXJBbGxNb2NrZWRVUkxzKCk7CiAgICAg
fQogCiAgICAgV2ViRnJhbWUqIG1haW5GcmFtZSgpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3Rlc3RzL0ZyYW1lVGVzdEhlbHBlcnMuY3BwIGIvU291cmNlL1dlYktp
dC9jaHJvbWl1bS90ZXN0cy9GcmFtZVRlc3RIZWxwZXJzLmNwcAppbmRleCA4NmNjNTY0Nzc5ZWU3
MzE4OTljMzVmNzU2NmE0YTEwOTYyNGYzY2EwLi43YmI4ZGZlNWIwOGE2ZjY2MWZmMGJkYTlkYzA3
MWMxNTYwODdmODEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0Zy
YW1lVGVzdEhlbHBlcnMuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvRnJh
bWVUZXN0SGVscGVycy5jcHAKQEAgLTM4LDEwICszOCwxMSBAQAogI2luY2x1ZGUgIldlYlNldHRp
bmdzLmgiCiAjaW5jbHVkZSAiV2ViVmlldy5oIgogI2luY2x1ZGUgIldlYlZpZXdDbGllbnQuaCIK
KyNpbmNsdWRlIDxwdWJsaWMvUGxhdGZvcm0uaD4KICNpbmNsdWRlIDxwdWJsaWMvV2ViU3RyaW5n
Lmg+CisjaW5jbHVkZSA8cHVibGljL1dlYlRocmVhZC5oPgogI2luY2x1ZGUgPHB1YmxpYy9XZWJV
UkxSZXF1ZXN0Lmg+CiAjaW5jbHVkZSA8cHVibGljL1dlYlVSTFJlc3BvbnNlLmg+Ci0jaW5jbHVk
ZSA8d2Via2l0L3N1cHBvcnQvd2Via2l0X3N1cHBvcnQuaD4KIAogbmFtZXNwYWNlIFdlYktpdCB7
CiBuYW1lc3BhY2UgRnJhbWVUZXN0SGVscGVycyB7CkBAIC05MSwxMCArOTIsMjQgQEAgV2ViVmll
dyogY3JlYXRlV2ViVmlld0FuZExvYWQoY29uc3Qgc3RkOjpzdHJpbmcmIHVybCwgYm9vbCBlbmFi
bGVKYXZhc2NyaXB0LCBXZWIKICAgICBXZWJWaWV3KiB3ZWJWaWV3ID0gY3JlYXRlV2ViVmlldyhl
bmFibGVKYXZhc2NyaXB0LCB3ZWJGcmFtZUNsaWVudCwgd2ViVmlld0NsaWVudCk7CiAKICAgICBs
b2FkRnJhbWUod2ViVmlldy0+bWFpbkZyYW1lKCksIHVybCk7Ci0gICAgd2Via2l0X3N1cHBvcnQ6
OlNlcnZlQXN5bmNocm9ub3VzTW9ja2VkUmVxdWVzdHMoKTsKKyAgICBQbGF0Zm9ybTo6Y3VycmVu
dCgpLT5zZXJ2ZUFzeW5jaHJvbm91c01vY2tlZFJlcXVlc3RzKCk7CiAKICAgICByZXR1cm4gd2Vi
VmlldzsKIH0KIAorY2xhc3MgUXVpdFRhc2sgOiBwdWJsaWMgV2ViVGhyZWFkOjpUYXNrIHsKK3B1
YmxpYzoKKyAgICB2aXJ0dWFsIHZvaWQgcnVuKCkKKyAgICB7CisgICAgICAgIFBsYXRmb3JtOjpj
dXJyZW50KCktPmN1cnJlbnRUaHJlYWQoKS0+ZXhpdFJ1bkxvb3AoKTsKKyAgICB9Cit9OworCit2
b2lkIHJ1blBlbmRpbmdUYXNrcygpCit7CisgICAgUGxhdGZvcm06OmN1cnJlbnQoKS0+Y3VycmVu
dFRocmVhZCgpLT5wb3N0VGFzayhuZXcgUXVpdFRhc2spOworICAgIFBsYXRmb3JtOjpjdXJyZW50
KCktPmN1cnJlbnRUaHJlYWQoKS0+ZW50ZXJSdW5Mb29wKCk7Cit9CisKIH0gLy8gbmFtZXNwYWNl
IEZyYW1lVGVzdEhlbHBlcnMKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9GcmFtZVRlc3RIZWxwZXJzLmggYi9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3Rlc3RzL0ZyYW1lVGVzdEhlbHBlcnMuaAppbmRleCAwNjFlZDk2ZmQwYjRm
ZjE5NDc0Y2Q0ZDExNjhhZTQxNTY0MTEzYmVmLi43YzU4Zjk5M2U1MDFjMDNhNTNmNGJmNWVkYjY1
MDhhMzE4NjhmZTBmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0Zy
YW1lVGVzdEhlbHBlcnMuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0ZyYW1l
VGVzdEhlbHBlcnMuaApAQCAtNDcsNiArNDcsOCBAQCB2b2lkIGxvYWRGcmFtZShXZWJGcmFtZSos
IGNvbnN0IHN0ZDo6c3RyaW5nJiB1cmwpOwogV2ViVmlldyogY3JlYXRlV2ViVmlldyhib29sIGVu
YWJsZUphdmFzY3JpcHQgPSBmYWxzZSwgV2ViRnJhbWVDbGllbnQqID0gMCwgV2ViVmlld0NsaWVu
dCogPSAwKTsKIFdlYlZpZXcqIGNyZWF0ZVdlYlZpZXdBbmRMb2FkKGNvbnN0IHN0ZDo6c3RyaW5n
JiB1cmwsIGJvb2wgZW5hYmxlSmF2YXNjcmlwdCA9IGZhbHNlLCBXZWJGcmFtZUNsaWVudCogPSAw
LCBXZWJWaWV3Q2xpZW50KiA9IDApOwogCit2b2lkIHJ1blBlbmRpbmdUYXNrcygpOworCiB9IC8v
IG5hbWVzcGFjZSBGcmFtZVRlc3RIZWxwZXJzCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9MaXN0ZW5lckxlYWtUZXN0LmNw
cCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvTGlzdGVuZXJMZWFrVGVzdC5jcHAKaW5k
ZXggYjBmNzAwYTBjYjVkMmNjN2E0NDlkYTU3MDRlMTQxMjgxMTU2ODdlZi4uZDg3NWMzYTI1OTdj
NzBjNzdkMGQ1NmMyM2ZkN2UzZTExNzZkNjZmOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9j
aHJvbWl1bS90ZXN0cy9MaXN0ZW5lckxlYWtUZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL3Rlc3RzL0xpc3RlbmVyTGVha1Rlc3QuY3BwCkBAIC0zNCw5ICszNCw5IEBACiAjaW5j
bHVkZSAiVVJMVGVzdEhlbHBlcnMuaCIKICNpbmNsdWRlICJXZWJWaWV3LmgiCiAjaW5jbHVkZSA8
Z3Rlc3QvZ3Rlc3QuaD4KKyNpbmNsdWRlIDxwdWJsaWMvUGxhdGZvcm0uaD4KICNpbmNsdWRlIDx2
OC9pbmNsdWRlL3Y4LXByb2ZpbGVyLmg+CiAjaW5jbHVkZSA8djgvaW5jbHVkZS92OC5oPgotI2lu
Y2x1ZGUgPHdlYmtpdC9zdXBwb3J0L3dlYmtpdF9zdXBwb3J0Lmg+CiAKIHVzaW5nIG5hbWVzcGFj
ZSBXZWJLaXQ7CiAKQEAgLTk5LDcgKzk5LDcgQEAgcHVibGljOgogICAgIHsKICAgICAgICAgaWYg
KG1fd2ViVmlldykKICAgICAgICAgICAgIG1fd2ViVmlldy0+Y2xvc2UoKTsKLSAgICAgICAgd2Vi
a2l0X3N1cHBvcnQ6OlVucmVnaXN0ZXJBbGxNb2NrZWRVUkxzKCk7CisgICAgICAgIFBsYXRmb3Jt
OjpjdXJyZW50KCktPnVucmVnaXN0ZXJBbGxNb2NrZWRVUkxzKCk7CiAgICAgfQogCiBwcm90ZWN0
ZWQ6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL1BvcHVwTWVudVRl
c3QuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9Qb3B1cE1lbnVUZXN0LmNwcApp
bmRleCA2MzU0MmY4NjNjODZmZTg1MjgwNDE4NzkyZDY2YTUwNWI5MmNjZTYwLi40YTU0MDRjMTVj
ZWU1ZmM0ZjFlZDFkMmY2NjAxYWI3OWY5YzQ4ZWU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3Rlc3RzL1BvcHVwTWVudVRlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vdGVzdHMvUG9wdXBNZW51VGVzdC5jcHAKQEAgLTE5Myw3ICsxOTMsNyBAQCBwcm90ZWN0
ZWQ6CiAgICAgewogICAgICAgICBtX3BvcHVwTWVudSA9IDA7CiAgICAgICAgIG1fd2ViVmlldy0+
Y2xvc2UoKTsKLSAgICAgICAgd2Via2l0X3N1cHBvcnQ6OlVucmVnaXN0ZXJBbGxNb2NrZWRVUkxz
KCk7CisgICAgICAgIHdlYmtpdF9zdXBwb3J0Ojp1bnJlZ2lzdGVyQWxsTW9ja2VkVVJMcygpOwog
ICAgIH0KIAogICAgIC8vIFJldHVybnMgdHJ1ZSBpZiB0aGVyZSBjdXJyZW50bHkgaXMgYSBzZWxl
Y3QgcG9wdXAgaW4gdGhlIFdlYlZpZXcuCkBAIC0yNTYsNyArMjU2LDcgQEAgcHJvdGVjdGVkOgog
CiAgICAgdm9pZCBzZXJ2ZVJlcXVlc3RzKCkKICAgICB7Ci0gICAgICAgIHdlYmtpdF9zdXBwb3J0
OjpTZXJ2ZUFzeW5jaHJvbm91c01vY2tlZFJlcXVlc3RzKCk7CisgICAgICAgIHdlYmtpdF9zdXBw
b3J0OjpzZXJ2ZUFzeW5jaHJvbm91c01vY2tlZFJlcXVlc3RzKCk7CiAgICAgfQogCiAgICAgdm9p
ZCBsb2FkRnJhbWUoV2ViRnJhbWUqIGZyYW1lLCBjb25zdCBzdGQ6OnN0cmluZyYgZmlsZU5hbWUp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL1ByZXJlbmRlcmluZ1Rl
c3QuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9QcmVyZW5kZXJpbmdUZXN0LmNw
cAppbmRleCBmOWU2MDI1N2E2NTcwM2E4ZGYwNzE5YjUyOTJiNDYzMjVlZjQ5NTRhLi5kZWU0MDhj
M2Y0ZWQyNzNhZDVkMDM1YTExMmQ5NzFjZjdkMzIxZTA4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3Rlc3RzL1ByZXJlbmRlcmluZ1Rlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vdGVzdHMvUHJlcmVuZGVyaW5nVGVzdC5jcHAKQEAgLTQ1LDEwICs0NSwxMCBA
QAogCiAjaW5jbHVkZSA8Z3Rlc3QvZ3Rlc3QuaD4KICNpbmNsdWRlIDxsaXN0PgorI2luY2x1ZGUg
PHB1YmxpYy9QbGF0Zm9ybS5oPgogI2luY2x1ZGUgPHB1YmxpYy9XZWJQcmVyZW5kZXIuaD4KICNp
bmNsdWRlIDxwdWJsaWMvV2ViUHJlcmVuZGVyaW5nU3VwcG9ydC5oPgogI2luY2x1ZGUgPHB1Ymxp
Yy9XZWJTdHJpbmcuaD4KLSNpbmNsdWRlIDx3ZWJraXQvc3VwcG9ydC93ZWJraXRfc3VwcG9ydC5o
PgogI2luY2x1ZGUgPHd0Zi9Pd25QdHIuaD4KIAogdXNpbmcgbmFtZXNwYWNlIFdlYktpdDsKQEAg
LTE4MSw3ICsxODEsNyBAQCBwdWJsaWM6CiAKICAgICB+UHJlcmVuZGVyaW5nVGVzdCgpCiAgICAg
ewotICAgICAgICB3ZWJraXRfc3VwcG9ydDo6VW5yZWdpc3RlckFsbE1vY2tlZFVSTHMoKTsKKyAg
ICAgICAgUGxhdGZvcm06OmN1cnJlbnQoKS0+dW5yZWdpc3RlckFsbE1vY2tlZFVSTHMoKTsKICAg
ICAgICAgaWYgKG1fd2ViVmlldykKICAgICAgICAgICAgIGNsb3NlKCk7CiAgICAgfQpAQCAtMTk1
LDEzICsxOTUsMTIgQEAgcHVibGljOgogICAgICAgICBtX3dlYlZpZXctPnNldFByZXJlbmRlcmVy
Q2xpZW50KCZtX3ByZXJlbmRlcmVyQ2xpZW50KTsKIAogICAgICAgICBGcmFtZVRlc3RIZWxwZXJz
Ojpsb2FkRnJhbWUobV93ZWJWaWV3LT5tYWluRnJhbWUoKSwgc3RkOjpzdHJpbmcoYmFzZVVSTCkg
KyBmaWxlTmFtZSk7Ci0gICAgICAgIHdlYmtpdF9zdXBwb3J0OjpTZXJ2ZUFzeW5jaHJvbm91c01v
Y2tlZFJlcXVlc3RzKCk7CisgICAgICAgIFBsYXRmb3JtOjpjdXJyZW50KCktPnNlcnZlQXN5bmNo
cm9ub3VzTW9ja2VkUmVxdWVzdHMoKTsKICAgICB9CiAKICAgICB2b2lkIG5hdmlnYXRlQXdheSgp
CiAgICAgewogICAgICAgICBGcmFtZVRlc3RIZWxwZXJzOjpsb2FkRnJhbWUobV93ZWJWaWV3LT5t
YWluRnJhbWUoKSwgImFib3V0OmJsYW5rIik7Ci0gICAgICAgIC8vICAgICAgICB3ZWJraXRfc3Vw
cG9ydDo6UnVuQWxsUGVuZGluZ01lc3NhZ2VzKCk7CiAgICAgfQogCiAgICAgdm9pZCBjbG9zZSgp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL1Njcm9sbGluZ0Nvb3Jk
aW5hdG9yQ2hyb21pdW1UZXN0LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvU2Ny
b2xsaW5nQ29vcmRpbmF0b3JDaHJvbWl1bVRlc3QuY3BwCmluZGV4IDBkNzg1OTAxNDMzZDE5NTJm
Yzc3MzBlNzJiNGNkZmY4MWExMTdiMjAuLjJjNzU1MWY1YTg3Y2IwMWM3YTdkMWY1NWYzZjRhMGMw
YmQ0YjU5MzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvU2Nyb2xs
aW5nQ29vcmRpbmF0b3JDaHJvbWl1bVRlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vdGVzdHMvU2Nyb2xsaW5nQ29vcmRpbmF0b3JDaHJvbWl1bVRlc3QuY3BwCkBAIC0yOCw2ICsy
OCw3IEBACiAKICNpbmNsdWRlICJDb21wb3NpdG9yRmFrZVdlYkdyYXBoaWNzQ29udGV4dDNELmgi
CiAjaW5jbHVkZSAiRnJhbWVUZXN0SGVscGVycy5oIgorI2luY2x1ZGUgIkdyYXBoaWNzTGF5ZXJD
aHJvbWl1bS5oIgogI2luY2x1ZGUgIlJlbmRlckxheWVyQmFja2luZy5oIgogI2luY2x1ZGUgIlJl
bmRlckxheWVyQ29tcG9zaXRvci5oIgogI2luY2x1ZGUgIlJlbmRlclZpZXcuaCIKQEAgLTM5LDEx
ICs0MCw5IEBACiAjaW5jbHVkZSAiV2ViVmlld0NsaWVudC5oIgogI2luY2x1ZGUgIldlYlZpZXdJ
bXBsLmgiCiAjaW5jbHVkZSA8Z3Rlc3QvZ3Rlc3QuaD4KKyNpbmNsdWRlIDxwdWJsaWMvUGxhdGZv
cm0uaD4KICNpbmNsdWRlIDxwdWJsaWMvV2ViQ29tcG9zaXRvclN1cHBvcnQuaD4KICNpbmNsdWRl
IDxwdWJsaWMvV2ViTGF5ZXIuaD4KLSNpbmNsdWRlIDx3ZWJraXQvc3VwcG9ydC93ZWJraXRfc3Vw
cG9ydC5oPgotCi0jaW5jbHVkZSAiR3JhcGhpY3NMYXllckNocm9taXVtLmgiCiAKIHVzaW5nIG5h
bWVzcGFjZSBXZWJDb3JlOwogdXNpbmcgbmFtZXNwYWNlIFdlYktpdDsKQEAgLTk3LDcgKzk2LDcg
QEAgcHVibGljOgogCiAgICAgdmlydHVhbCB+U2Nyb2xsaW5nQ29vcmRpbmF0b3JDaHJvbWl1bVRl
c3QoKQogICAgIHsKLSAgICAgICAgd2Via2l0X3N1cHBvcnQ6OlVucmVnaXN0ZXJBbGxNb2NrZWRV
UkxzKCk7CisgICAgICAgIFBsYXRmb3JtOjpjdXJyZW50KCktPnVucmVnaXN0ZXJBbGxNb2NrZWRV
UkxzKCk7CiAgICAgICAgIG1fd2ViVmlld0ltcGwtPmNsb3NlKCk7CiAKICAgICAgICAgUGxhdGZv
cm06OmN1cnJlbnQoKS0+Y29tcG9zaXRvclN1cHBvcnQoKS0+c2h1dGRvd24oKTsKQEAgLTEwNiw3
ICsxMDUsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBuYXZpZ2F0ZVRvKGNvbnN0IHN0ZDo6c3RyaW5n
JiB1cmwpCiAgICAgewogICAgICAgICBGcmFtZVRlc3RIZWxwZXJzOjpsb2FkRnJhbWUobV93ZWJW
aWV3SW1wbC0+bWFpbkZyYW1lKCksIHVybCk7Ci0gICAgICAgIHdlYmtpdF9zdXBwb3J0OjpTZXJ2
ZUFzeW5jaHJvbm91c01vY2tlZFJlcXVlc3RzKCk7CisgICAgICAgIFBsYXRmb3JtOjpjdXJyZW50
KCktPnNlcnZlQXN5bmNocm9ub3VzTW9ja2VkUmVxdWVzdHMoKTsKICAgICB9CiAKICAgICB2b2lk
IHJlZ2lzdGVyTW9ja2VkSHR0cFVSTExvYWQoY29uc3Qgc3RkOjpzdHJpbmcmIGZpbGVOYW1lKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9VUkxUZXN0SGVscGVycy5j
cHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL1VSTFRlc3RIZWxwZXJzLmNwcAppbmRl
eCAyYTAwNjZmZDhmYjc3MWEwZDgzNzJmMzk1MDBkMDU2ZjMzNWMxZGYyLi4zZDIxMmFkMDY3YmIw
NmExM2VkYjY2ODY1YmU4MzUyZTE1N2M1ZWFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL3Rlc3RzL1VSTFRlc3RIZWxwZXJzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3Rlc3RzL1VSTFRlc3RIZWxwZXJzLmNwcApAQCAtMzEsMTAgKzMxLDEwIEBACiAjaW5jbHVk
ZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiVVJMVGVzdEhlbHBlcnMuaCIKIAorI2luY2x1ZGUgPHB1
YmxpYy9QbGF0Zm9ybS5oPgogI2luY2x1ZGUgPHB1YmxpYy9XZWJTdHJpbmcuaD4KICNpbmNsdWRl
IDxwdWJsaWMvV2ViVVJMLmg+CiAjaW5jbHVkZSA8cHVibGljL1dlYlVSTFJlc3BvbnNlLmg+Ci0j
aW5jbHVkZSA8d2Via2l0L3N1cHBvcnQvd2Via2l0X3N1cHBvcnQuaD4KIAogbmFtZXNwYWNlIFdl
YktpdCB7CiBuYW1lc3BhY2UgVVJMVGVzdEhlbHBlcnMgewpAQCAtNTksMTIgKzU5LDEyIEBAIHZv
aWQgcmVnaXN0ZXJNb2NrZWRVUkxMb2FkKGNvbnN0IFdlYlVSTCYgZnVsbFVSTCwgY29uc3QgV2Vi
U3RyaW5nJiBmaWxlTmFtZSwgY29uCiAgICAgcmVzcG9uc2Uuc2V0SFRUUFN0YXR1c0NvZGUoMjAw
KTsKIAogICAgIC8vIFBoeXNpY2FsIGZpbGUgcGF0aCBmb3IgdGhlIG1vY2sgPSA8d2Via2l0Um9v
dERpcj4gKyByZWxhdGl2ZUJhc2VEaXJlY3RvcnkgKyBmaWxlTmFtZS4KLSAgICBzdGQ6OnN0cmlu
ZyBmaWxlUGF0aCA9IHN0ZDo6c3RyaW5nKHdlYmtpdF9zdXBwb3J0OjpHZXRXZWJLaXRSb290RGly
KCkudXRmOCgpLmRhdGEoKSk7CisgICAgc3RkOjpzdHJpbmcgZmlsZVBhdGggPSBzdGQ6OnN0cmlu
ZyhQbGF0Zm9ybTo6Y3VycmVudCgpLT5nZXRXZWJLaXRSb290RGlyKCkudXRmOCgpLmRhdGEoKSk7
CiAgICAgZmlsZVBhdGguYXBwZW5kKCIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9kYXRh
LyIpOwogICAgIGZpbGVQYXRoLmFwcGVuZChzdGQ6OnN0cmluZyhyZWxhdGl2ZUJhc2VEaXJlY3Rv
cnkudXRmOCgpLmRhdGEoKSkpOwogICAgIGZpbGVQYXRoLmFwcGVuZChzdGQ6OnN0cmluZyhmaWxl
TmFtZS51dGY4KCkuZGF0YSgpKSk7CiAKLSAgICB3ZWJraXRfc3VwcG9ydDo6UmVnaXN0ZXJNb2Nr
ZWRVUkwoZnVsbFVSTCwgcmVzcG9uc2UsIFdlYlN0cmluZzo6ZnJvbVVURjgoZmlsZVBhdGguY19z
dHIoKSkpOworICAgIFBsYXRmb3JtOjpjdXJyZW50KCktPnJlZ2lzdGVyTW9ja2VkVVJMKGZ1bGxV
UkwsIHJlc3BvbnNlLCBXZWJTdHJpbmc6OmZyb21VVEY4KGZpbGVQYXRoLmNfc3RyKCkpKTsKIH0K
IAogfSAvLyBuYW1lc3BhY2UgVVJMVGVzdEhlbHBlcnMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vdGVzdHMvV2ViRnJhbWVUZXN0LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vdGVzdHMvV2ViRnJhbWVUZXN0LmNwcAppbmRleCAyYmIzNTJiOWRmZThjODI2YTc3MTk5ODAx
MzlmYjUwYjFjMTE4NzEyLi5iMmRkNzU4ZDI0NjJkNjg4ZjFmNzE1NDYyNDA3MjhhMmJkMDRmYTE1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL1dlYkZyYW1lVGVzdC5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9XZWJGcmFtZVRlc3QuY3BwCkBA
IC01OCwxNSArNTgsMTcgQEAKICNpbmNsdWRlICJXZWJWaWV3SW1wbC5oIgogI2luY2x1ZGUgInY4
LmgiCiAjaW5jbHVkZSA8Z3Rlc3QvZ3Rlc3QuaD4KKyNpbmNsdWRlIDxwdWJsaWMvUGxhdGZvcm0u
aD4KICNpbmNsdWRlIDxwdWJsaWMvV2ViRmxvYXRSZWN0Lmg+CisjaW5jbHVkZSA8cHVibGljL1dl
YlRocmVhZC5oPgogI2luY2x1ZGUgPHB1YmxpYy9XZWJVUkxSZXNwb25zZS5oPgotI2luY2x1ZGUg
PHdlYmtpdC9zdXBwb3J0L3dlYmtpdF9zdXBwb3J0Lmg+CiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQu
aD4KIAogdXNpbmcgbmFtZXNwYWNlIFdlYktpdDsKIHVzaW5nIFdlYkNvcmU6OkZsb2F0UmVjdDsK
IHVzaW5nIFdlYkNvcmU6OlJhbmdlOwogdXNpbmcgV2ViS2l0OjpVUkxUZXN0SGVscGVyczo6dG9L
VVJMOwordXNpbmcgV2ViS2l0OjpGcmFtZVRlc3RIZWxwZXJzOjpydW5QZW5kaW5nVGFza3M7CiAK
IG5hbWVzcGFjZSB7CiAKQEAgLTgwLDcgKzgyLDcgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCB2
b2lkIFRlYXJEb3duKCkKICAgICB7Ci0gICAgICAgIHdlYmtpdF9zdXBwb3J0OjpVbnJlZ2lzdGVy
QWxsTW9ja2VkVVJMcygpOworICAgICAgICBQbGF0Zm9ybTo6Y3VycmVudCgpLT51bnJlZ2lzdGVy
QWxsTW9ja2VkVVJMcygpOwogICAgIH0KIAogICAgIHZvaWQgcmVnaXN0ZXJNb2NrZWRIdHRwVVJM
TG9hZChjb25zdCBzdGQ6OnN0cmluZyYgZmlsZU5hbWUpCkBAIC04NTMsNyArODU1LDcgQEAgVEVT
VF9GKFdlYkZyYW1lVGVzdCwgUmVsb2FkRG9lc250U2V0UmVkaXJlY3QpCiAgICAgd2ViVmlldy0+
bWFpbkZyYW1lKCktPnJlbG9hZCh0cnVlKTsKICAgICAvLyBzdGFydCByZWxvYWQgYmVmb3JlIHJl
cXVlc3QgaXMgZGVsaXZlcmVkLgogICAgIHdlYlZpZXctPm1haW5GcmFtZSgpLT5yZWxvYWQodHJ1
ZSk7Ci0gICAgd2Via2l0X3N1cHBvcnQ6OlNlcnZlQXN5bmNocm9ub3VzTW9ja2VkUmVxdWVzdHMo
KTsKKyAgICBQbGF0Zm9ybTo6Y3VycmVudCgpLT5zZXJ2ZUFzeW5jaHJvbm91c01vY2tlZFJlcXVl
c3RzKCk7CiB9CiAKIFRFU1RfRihXZWJGcmFtZVRlc3QsIFJlbG9hZFdpdGhPdmVycmlkZVVSTFBy
ZXNlcnZlc1N0YXRlKQpAQCAtODc5LDEzICs4ODEsMTMgQEAgVEVTVF9GKFdlYkZyYW1lVGVzdCwg
UmVsb2FkV2l0aE92ZXJyaWRlVVJMUHJlc2VydmVzU3RhdGUpCiAKICAgICAvLyBSZWxvYWQgdGhl
IHBhZ2UgdXNpbmcgdGhlIGNhY2hlLgogICAgIHdlYlZpZXdJbXBsLT5tYWluRnJhbWUoKS0+cmVs
b2FkV2l0aE92ZXJyaWRlVVJMKHRvS1VSTChtX2Jhc2VVUkwgKyBzZWNvbmRVUkwpLCBmYWxzZSk7
Ci0gICAgd2Via2l0X3N1cHBvcnQ6OlNlcnZlQXN5bmNocm9ub3VzTW9ja2VkUmVxdWVzdHMoKTsK
KyAgICBQbGF0Zm9ybTo6Y3VycmVudCgpLT5zZXJ2ZUFzeW5jaHJvbm91c01vY2tlZFJlcXVlc3Rz
KCk7CiAgICAgQVNTRVJUX0VRKHByZXZpb3VzT2Zmc2V0LCB3ZWJWaWV3SW1wbC0+bWFpbkZyYW1l
KCktPnNjcm9sbE9mZnNldCgpKTsKICAgICBBU1NFUlRfRVEocHJldmlvdXNTY2FsZSwgd2ViVmll
d0ltcGwtPnBhZ2VTY2FsZUZhY3RvcigpKTsKIAogICAgIC8vIFJlbG9hZCB0aGUgcGFnZSB3aGls
ZSBpZ25vcmluZyB0aGUgY2FjaGUuCiAgICAgd2ViVmlld0ltcGwtPm1haW5GcmFtZSgpLT5yZWxv
YWRXaXRoT3ZlcnJpZGVVUkwodG9LVVJMKG1fYmFzZVVSTCArIHRoaXJkVVJMKSwgdHJ1ZSk7Ci0g
ICAgd2Via2l0X3N1cHBvcnQ6OlNlcnZlQXN5bmNocm9ub3VzTW9ja2VkUmVxdWVzdHMoKTsKKyAg
ICBQbGF0Zm9ybTo6Y3VycmVudCgpLT5zZXJ2ZUFzeW5jaHJvbm91c01vY2tlZFJlcXVlc3RzKCk7
CiAgICAgQVNTRVJUX0VRKHByZXZpb3VzT2Zmc2V0LCB3ZWJWaWV3SW1wbC0+bWFpbkZyYW1lKCkt
PnNjcm9sbE9mZnNldCgpKTsKICAgICBBU1NFUlRfRVEocHJldmlvdXNTY2FsZSwgd2ViVmlld0lt
cGwtPnBhZ2VTY2FsZUZhY3RvcigpKTsKIH0KQEAgLTg5Niw4ICs4OTgsNyBAQCBURVNUX0YoV2Vi
RnJhbWVUZXN0LCBJZnJhbWVSZWRpcmVjdCkKICAgICByZWdpc3Rlck1vY2tlZEh0dHBVUkxMb2Fk
KCJ2aXNpYmxlX2lmcmFtZS5odG1sIik7CiAKICAgICBXZWJWaWV3KiB3ZWJWaWV3ID0gRnJhbWVU
ZXN0SGVscGVyczo6Y3JlYXRlV2ViVmlld0FuZExvYWQobV9iYXNlVVJMICsgImlmcmFtZV9yZWRp
cmVjdC5odG1sIiwgdHJ1ZSk7Ci0gICAgd2Via2l0X3N1cHBvcnQ6OlJ1bkFsbFBlbmRpbmdNZXNz
YWdlcygpOyAvLyBRdWV1ZSB0aGUgaWZyYW1lLgotICAgIHdlYmtpdF9zdXBwb3J0OjpTZXJ2ZUFz
eW5jaHJvbm91c01vY2tlZFJlcXVlc3RzKCk7IC8vIExvYWQgdGhlIGlmcmFtZS4KKyAgICBQbGF0
Zm9ybTo6Y3VycmVudCgpLT5zZXJ2ZUFzeW5jaHJvbm91c01vY2tlZFJlcXVlc3RzKCk7IC8vIExv
YWQgdGhlIGlmcmFtZS4KIAogICAgIFdlYkZyYW1lKiBpZnJhbWUgPSB3ZWJWaWV3LT5maW5kRnJh
bWVCeU5hbWUoV2ViU3RyaW5nOjpmcm9tVVRGOCgiaWZyIikpOwogICAgIEFTU0VSVF9UUlVFKGlm
cmFtZSk7CkBAIC0xMDM5LDcgKzEwNDAsNyBAQCBURVNUX0YoV2ViRnJhbWVUZXN0LCBDb250ZXh0
Tm90aWZpY2F0aW9uc1JlbG9hZCkKIAogICAgIC8vIFJlZnJlc2gsIHdlIHNob3VsZCBnZXQgdHdv
IHJlbGVhc2Ugbm90aWZpY2F0aW9ucyBhbmQgdHdvIG1vcmUgY3JlYXRlIG5vdGlmaWNhdGlvbnMu
CiAgICAgd2ViVmlldy0+bWFpbkZyYW1lKCktPnJlbG9hZChmYWxzZSk7Ci0gICAgd2Via2l0X3N1
cHBvcnQ6OlNlcnZlQXN5bmNocm9ub3VzTW9ja2VkUmVxdWVzdHMoKTsKKyAgICBQbGF0Zm9ybTo6
Y3VycmVudCgpLT5zZXJ2ZUFzeW5jaHJvbm91c01vY2tlZFJlcXVlc3RzKCk7CiAgICAgQVNTRVJU
X0VRKDR1LCB3ZWJGcmFtZUNsaWVudC5jcmVhdGVOb3RpZmljYXRpb25zLnNpemUoKSk7CiAgICAg
QVNTRVJUX0VRKDJ1LCB3ZWJGcmFtZUNsaWVudC5yZWxlYXNlTm90aWZpY2F0aW9ucy5zaXplKCkp
OwogCkBAIC0xMTc4LDcgKzExNzksNyBAQCBURVNUX0YoV2ViRnJhbWVUZXN0LCBHZXRDb250ZW50
QXNQbGFpblRleHQpCiAgICAgY29uc3QgY2hhciBzaW1wbGVTb3VyY2VbXSA9ICI8ZGl2PkZvbyBi
YXI8L2Rpdj48ZGl2PjwvZGl2PmJheiI7CiAgICAgV2ViQ29yZTo6S1VSTCB0ZXN0VVJMID0gdG9L
VVJMKCJhYm91dDpibGFuayIpOwogICAgIGZyYW1lLT5sb2FkSFRNTFN0cmluZyhzaW1wbGVTb3Vy
Y2UsIHRlc3RVUkwpOwotICAgIHdlYmtpdF9zdXBwb3J0OjpSdW5BbGxQZW5kaW5nTWVzc2FnZXMo
KTsKKyAgICBydW5QZW5kaW5nVGFza3MoKTsKIAogICAgIC8vIE1ha2Ugc3VyZSBpdCBjb21lcyBv
dXQgT0suCiAgICAgY29uc3Qgc3RkOjpzdHJpbmcgZXhwZWN0ZWQoIkZvbyBiYXJcbmJheiIpOwpA
QCAtMTE5MywxMyArMTE5NCwxMyBAQCBURVNUX0YoV2ViRnJhbWVUZXN0LCBHZXRDb250ZW50QXNQ
bGFpblRleHQpCiAgICAgLy8gTm93IGRvIGEgbmV3IHRlc3Qgd2l0aCBhIHN1YmZyYW1lLgogICAg
IGNvbnN0IGNoYXIgb3V0ZXJGcmFtZVNvdXJjZVtdID0gIkhlbGxvPGlmcmFtZT48L2lmcmFtZT4g
d29ybGQiOwogICAgIGZyYW1lLT5sb2FkSFRNTFN0cmluZyhvdXRlckZyYW1lU291cmNlLCB0ZXN0
VVJMKTsKLSAgICB3ZWJraXRfc3VwcG9ydDo6UnVuQWxsUGVuZGluZ01lc3NhZ2VzKCk7CisgICAg
cnVuUGVuZGluZ1Rhc2tzKCk7CiAKICAgICAvLyBMb2FkIHNvbWV0aGluZyBpbnRvIHRoZSBzdWJm
cmFtZS4KICAgICBXZWJGcmFtZSogc3ViZnJhbWUgPSBmcmFtZS0+ZmluZENoaWxkQnlFeHByZXNz
aW9uKFdlYlN0cmluZzo6ZnJvbVVURjgoIi9odG1sL2JvZHkvaWZyYW1lIikpOwogICAgIEFTU0VS
VF9UUlVFKHN1YmZyYW1lKTsKICAgICBzdWJmcmFtZS0+bG9hZEhUTUxTdHJpbmcoInN1YjxwPnRl
eHQiLCB0ZXN0VVJMKTsKLSAgICB3ZWJraXRfc3VwcG9ydDo6UnVuQWxsUGVuZGluZ01lc3NhZ2Vz
KCk7CisgICAgcnVuUGVuZGluZ1Rhc2tzKCk7CiAKICAgICB0ZXh0ID0gZnJhbWUtPmNvbnRlbnRB
c1RleHQoc3RkOjpudW1lcmljX2xpbWl0czxzaXplX3Q+OjptYXgoKSk7CiAgICAgRVhQRUNUX0VR
KCJIZWxsbyB3b3JsZFxuXG5zdWJcbnRleHQiLCBzdGQ6OnN0cmluZyh0ZXh0LnV0ZjgoKS5kYXRh
KCkpKTsKQEAgLTEyMjEsNyArMTIyMiw3IEBAIFRFU1RfRihXZWJGcmFtZVRlc3QsIEdldEZ1bGxI
dG1sT2ZQYWdlKQogICAgIGNvbnN0IGNoYXIgc2ltcGxlU291cmNlW10gPSAiPHA+SGVsbG88L3A+
PHA+V29ybGQ8L3A+IjsKICAgICBXZWJDb3JlOjpLVVJMIHRlc3RVUkwgPSB0b0tVUkwoImFib3V0
OmJsYW5rIik7CiAgICAgZnJhbWUtPmxvYWRIVE1MU3RyaW5nKHNpbXBsZVNvdXJjZSwgdGVzdFVS
TCk7Ci0gICAgd2Via2l0X3N1cHBvcnQ6OlJ1bkFsbFBlbmRpbmdNZXNzYWdlcygpOworICAgIHJ1
blBlbmRpbmdUYXNrcygpOwogCiAgICAgV2ViU3RyaW5nIHRleHQgPSBmcmFtZS0+Y29udGVudEFz
VGV4dChzdGQ6Om51bWVyaWNfbGltaXRzPHNpemVfdD46Om1heCgpKTsKICAgICBFWFBFQ1RfRVEo
IkhlbGxvXG5cbldvcmxkIiwgc3RkOjpzdHJpbmcodGV4dC51dGY4KCkuZGF0YSgpKSk7CkBAIC0x
MjMwLDcgKzEyMzEsNyBAQCBURVNUX0YoV2ViRnJhbWVUZXN0LCBHZXRGdWxsSHRtbE9mUGFnZSkK
IAogICAgIC8vIExvYWQgYWdhaW4gd2l0aCB0aGUgb3V0cHV0IGh0bWwuCiAgICAgZnJhbWUtPmxv
YWRIVE1MU3RyaW5nKFdlYkRhdGEoaHRtbC5jX3N0cigpLCBodG1sLmxlbmd0aCgpKSwgdGVzdFVS
TCk7Ci0gICAgd2Via2l0X3N1cHBvcnQ6OlJ1bkFsbFBlbmRpbmdNZXNzYWdlcygpOworICAgIHJ1
blBlbmRpbmdUYXNrcygpOwogCiAgICAgRVhQRUNUX0VRKGh0bWwsIHN0ZDo6c3RyaW5nKGZyYW1l
LT5jb250ZW50QXNNYXJrdXAoKS51dGY4KCkuZGF0YSgpKSk7CiAKQEAgLTEyNjMsNyArMTI2NCw3
IEBAIFRFU1RfRihXZWJGcmFtZVRlc3QsIEV4ZWN1dGVTY3JpcHREdXJpbmdEaWRDcmVhdGVTY3Jp
cHRDb250ZXh0KQogICAgIFdlYlZpZXcqIHdlYlZpZXcgPSBGcmFtZVRlc3RIZWxwZXJzOjpjcmVh
dGVXZWJWaWV3QW5kTG9hZChtX2Jhc2VVUkwgKyAiaGVsbG9fd29ybGQuaHRtbCIsIHRydWUsICZ3
ZWJGcmFtZUNsaWVudCk7CiAKICAgICB3ZWJWaWV3LT5tYWluRnJhbWUoKS0+cmVsb2FkKCk7Ci0g
ICAgd2Via2l0X3N1cHBvcnQ6OlNlcnZlQXN5bmNocm9ub3VzTW9ja2VkUmVxdWVzdHMoKTsKKyAg
ICBQbGF0Zm9ybTo6Y3VycmVudCgpLT5zZXJ2ZUFzeW5jaHJvbm91c01vY2tlZFJlcXVlc3RzKCk7
CiB9CiAKIGNsYXNzIFRlc3REaWRDcmVhdGVGcmFtZVdlYkZyYW1lQ2xpZW50IDogcHVibGljIFdl
YkZyYW1lQ2xpZW50IHsKQEAgLTEzMzQsNyArMTMzNSw3IEBAIFRFU1RfRihXZWJGcmFtZVRlc3Qs
IEZpbmRJblBhZ2VNYXRjaFJlY3RzKQogICAgIFdlYlZpZXcqIHdlYlZpZXcgPSBGcmFtZVRlc3RI
ZWxwZXJzOjpjcmVhdGVXZWJWaWV3QW5kTG9hZChtX2Jhc2VVUkwgKyAiZmluZF9pbl9wYWdlLmh0
bWwiLCB0cnVlLCAmY2xpZW50KTsKICAgICB3ZWJWaWV3LT5yZXNpemUoV2ViU2l6ZSg2NDAsIDQ4
MCkpOwogICAgIHdlYlZpZXctPmxheW91dCgpOwotICAgIHdlYmtpdF9zdXBwb3J0OjpSdW5BbGxQ
ZW5kaW5nTWVzc2FnZXMoKTsKKyAgICBydW5QZW5kaW5nVGFza3MoKTsKIAogICAgIC8vIE5vdGUg
dGhhdCB0aGUgJ3Jlc3VsdCAxOScgaW4gdGhlIDxzZWxlY3Q+IGVsZW1lbnQgaXMgbm90IGV4cGVj
dGVkIHRvIHByb2R1Y2UgYSBtYXRjaC4KICAgICBzdGF0aWMgY29uc3QgY2hhcioga0ZpbmRTdHJp
bmcgPSAicmVzdWx0IjsKQEAgLTEzNTEsNyArMTM1Miw3IEBAIFRFU1RfRihXZWJGcmFtZVRlc3Qs
IEZpbmRJblBhZ2VNYXRjaFJlY3RzKQogICAgIGZvciAoV2ViRnJhbWUqIGZyYW1lID0gbWFpbkZy
YW1lOyBmcmFtZTsgZnJhbWUgPSBmcmFtZS0+dHJhdmVyc2VOZXh0KGZhbHNlKSkKICAgICAgICAg
ZnJhbWUtPnNjb3BlU3RyaW5nTWF0Y2hlcyhrRmluZElkZW50aWZpZXIsIHNlYXJjaFRleHQsIG9w
dGlvbnMsIHRydWUpOwogCi0gICAgd2Via2l0X3N1cHBvcnQ6OlJ1bkFsbFBlbmRpbmdNZXNzYWdl
cygpOworICAgIHJ1blBlbmRpbmdUYXNrcygpOwogICAgIEVYUEVDVF9UUlVFKGNsaWVudC5maW5k
UmVzdWx0c0FyZVJlYWR5KCkpOwogCiAgICAgV2ViVmVjdG9yPFdlYkZsb2F0UmVjdD4gd2ViTWF0
Y2hSZWN0czsKQEAgLTE0MzksNyArMTQ0MCw3IEBAIFRFU1RfRihXZWJGcmFtZVRlc3QsIEZpbmRJ
blBhZ2VNYXRjaFJlY3RzKQogCiAgICAgLy8gUmVzaXppbmcgc2hvdWxkIHVwZGF0ZSB0aGUgcmVj
dHMgdmVyc2lvbi4KICAgICB3ZWJWaWV3LT5yZXNpemUoV2ViU2l6ZSg4MDAsIDYwMCkpOwotICAg
IHdlYmtpdF9zdXBwb3J0OjpSdW5BbGxQZW5kaW5nTWVzc2FnZXMoKTsKKyAgICBydW5QZW5kaW5n
VGFza3MoKTsKICAgICBFWFBFQ1RfVFJVRShtYWluRnJhbWUtPmZpbmRNYXRjaE1hcmtlcnNWZXJz
aW9uKCkgIT0gcmVjdHNWZXJzaW9uKTsKIAogICAgIHdlYlZpZXctPmNsb3NlKCk7CkBAIC0xNDUz
LDcgKzE0NTQsNyBAQCBURVNUX0YoV2ViRnJhbWVUZXN0LCBGaW5kSW5QYWdlU2tpcHNIaWRkZW5G
cmFtZXMpCiAgICAgV2ViVmlldyogd2ViVmlldyA9IEZyYW1lVGVzdEhlbHBlcnM6OmNyZWF0ZVdl
YlZpZXdBbmRMb2FkKG1fYmFzZVVSTCArICJmaW5kX2luX2hpZGRlbl9mcmFtZS5odG1sIiwgdHJ1
ZSwgJmNsaWVudCk7CiAgICAgd2ViVmlldy0+cmVzaXplKFdlYlNpemUoNjQwLCA0ODApKTsKICAg
ICB3ZWJWaWV3LT5sYXlvdXQoKTsKLSAgICB3ZWJraXRfc3VwcG9ydDo6UnVuQWxsUGVuZGluZ01l
c3NhZ2VzKCk7CisgICAgcnVuUGVuZGluZ1Rhc2tzKCk7CiAKICAgICBzdGF0aWMgY29uc3QgY2hh
cioga0ZpbmRTdHJpbmcgPSAiaGVsbG8iOwogICAgIHN0YXRpYyBjb25zdCBpbnQga0ZpbmRJZGVu
dGlmaWVyID0gMTIzNDU7CkBAIC0xNDY5LDcgKzE0NzAsNyBAQCBURVNUX0YoV2ViRnJhbWVUZXN0
LCBGaW5kSW5QYWdlU2tpcHNIaWRkZW5GcmFtZXMpCiAgICAgZm9yIChXZWJGcmFtZSogZnJhbWUg
PSBtYWluRnJhbWU7IGZyYW1lOyBmcmFtZSA9IGZyYW1lLT50cmF2ZXJzZU5leHQoZmFsc2UpKQog
ICAgICAgICBmcmFtZS0+c2NvcGVTdHJpbmdNYXRjaGVzKGtGaW5kSWRlbnRpZmllciwgc2VhcmNo
VGV4dCwgb3B0aW9ucywgdHJ1ZSk7CiAKLSAgICB3ZWJraXRfc3VwcG9ydDo6UnVuQWxsUGVuZGlu
Z01lc3NhZ2VzKCk7CisgICAgcnVuUGVuZGluZ1Rhc2tzKCk7CiAgICAgRVhQRUNUX1RSVUUoY2xp
ZW50LmZpbmRSZXN1bHRzQXJlUmVhZHkoKSk7CiAgICAgRVhQRUNUX0VRKGtOdW1SZXN1bHRzLCBj
bGllbnQuY291bnQoKSk7CiAKQEAgLTE0ODUsNyArMTQ4Niw3IEBAIFRFU1RfRihXZWJGcmFtZVRl
c3QsIEZpbmRPbkRldGFjaGVkRnJhbWUpCiAgICAgV2ViVmlldyogd2ViVmlldyA9IEZyYW1lVGVz
dEhlbHBlcnM6OmNyZWF0ZVdlYlZpZXdBbmRMb2FkKG1fYmFzZVVSTCArICJmaW5kX2luX3BhZ2Uu
aHRtbCIsIHRydWUsICZjbGllbnQpOwogICAgIHdlYlZpZXctPnJlc2l6ZShXZWJTaXplKDY0MCwg
NDgwKSk7CiAgICAgd2ViVmlldy0+bGF5b3V0KCk7Ci0gICAgd2Via2l0X3N1cHBvcnQ6OlJ1bkFs
bFBlbmRpbmdNZXNzYWdlcygpOworICAgIHJ1blBlbmRpbmdUYXNrcygpOwogCiAgICAgc3RhdGlj
IGNvbnN0IGNoYXIqIGtGaW5kU3RyaW5nID0gInJlc3VsdCI7CiAgICAgc3RhdGljIGNvbnN0IGlu
dCBrRmluZElkZW50aWZpZXIgPSAxMjM0NTsKQEAgLTE1MDIsNyArMTUwMyw3IEBAIFRFU1RfRihX
ZWJGcmFtZVRlc3QsIEZpbmRPbkRldGFjaGVkRnJhbWUpCiAgICAgRVhQRUNUX1RSVUUobWFpbkZy
YW1lLT5maW5kKGtGaW5kSWRlbnRpZmllciwgc2VhcmNoVGV4dCwgb3B0aW9ucywgZmFsc2UsIDAp
KTsKICAgICBFWFBFQ1RfRkFMU0Uoc2Vjb25kRnJhbWUtPmZpbmQoa0ZpbmRJZGVudGlmaWVyLCBz
ZWFyY2hUZXh0LCBvcHRpb25zLCBmYWxzZSwgMCkpOwogCi0gICAgd2Via2l0X3N1cHBvcnQ6OlJ1
bkFsbFBlbmRpbmdNZXNzYWdlcygpOworICAgIHJ1blBlbmRpbmdUYXNrcygpOwogICAgIEVYUEVD
VF9GQUxTRShjbGllbnQuZmluZFJlc3VsdHNBcmVSZWFkeSgpKTsKIAogICAgIG1haW5GcmFtZS0+
cmVzZXRNYXRjaENvdW50KCk7CkBAIC0xNTEwLDcgKzE1MTEsNyBAQCBURVNUX0YoV2ViRnJhbWVU
ZXN0LCBGaW5kT25EZXRhY2hlZEZyYW1lKQogICAgIGZvciAoV2ViRnJhbWUqIGZyYW1lID0gbWFp
bkZyYW1lOyBmcmFtZTsgZnJhbWUgPSBmcmFtZS0+dHJhdmVyc2VOZXh0KGZhbHNlKSkKICAgICAg
ICAgZnJhbWUtPnNjb3BlU3RyaW5nTWF0Y2hlcyhrRmluZElkZW50aWZpZXIsIHNlYXJjaFRleHQs
IG9wdGlvbnMsIHRydWUpOwogCi0gICAgd2Via2l0X3N1cHBvcnQ6OlJ1bkFsbFBlbmRpbmdNZXNz
YWdlcygpOworICAgIHJ1blBlbmRpbmdUYXNrcygpOwogICAgIEVYUEVDVF9UUlVFKGNsaWVudC5m
aW5kUmVzdWx0c0FyZVJlYWR5KCkpOwogCiAgICAgaG9sZFNlY29uZEZyYW1lLnJlbGVhc2UoKTsK
QEAgLTE1MjYsNyArMTUyNyw3IEBAIFRFU1RfRihXZWJGcmFtZVRlc3QsIEZpbmREZXRhY2hGcmFt
ZUJlZm9yZVNjb3BlU3RyaW5ncykKICAgICBXZWJWaWV3KiB3ZWJWaWV3ID0gRnJhbWVUZXN0SGVs
cGVyczo6Y3JlYXRlV2ViVmlld0FuZExvYWQobV9iYXNlVVJMICsgImZpbmRfaW5fcGFnZS5odG1s
IiwgdHJ1ZSwgJmNsaWVudCk7CiAgICAgd2ViVmlldy0+cmVzaXplKFdlYlNpemUoNjQwLCA0ODAp
KTsKICAgICB3ZWJWaWV3LT5sYXlvdXQoKTsKLSAgICB3ZWJraXRfc3VwcG9ydDo6UnVuQWxsUGVu
ZGluZ01lc3NhZ2VzKCk7CisgICAgcnVuUGVuZGluZ1Rhc2tzKCk7CiAKICAgICBzdGF0aWMgY29u
c3QgY2hhcioga0ZpbmRTdHJpbmcgPSAicmVzdWx0IjsKICAgICBzdGF0aWMgY29uc3QgaW50IGtG
aW5kSWRlbnRpZmllciA9IDEyMzQ1OwpAQCAtMTU0MCw3ICsxNTQxLDcgQEAgVEVTVF9GKFdlYkZy
YW1lVGVzdCwgRmluZERldGFjaEZyYW1lQmVmb3JlU2NvcGVTdHJpbmdzKQogICAgIGZvciAoV2Vi
RnJhbWUqIGZyYW1lID0gbWFpbkZyYW1lOyBmcmFtZTsgZnJhbWUgPSBmcmFtZS0+dHJhdmVyc2VO
ZXh0KGZhbHNlKSkKICAgICAgICAgRVhQRUNUX1RSVUUoZnJhbWUtPmZpbmQoa0ZpbmRJZGVudGlm
aWVyLCBzZWFyY2hUZXh0LCBvcHRpb25zLCBmYWxzZSwgMCkpOwogCi0gICAgd2Via2l0X3N1cHBv
cnQ6OlJ1bkFsbFBlbmRpbmdNZXNzYWdlcygpOworICAgIHJ1blBlbmRpbmdUYXNrcygpOwogICAg
IEVYUEVDVF9GQUxTRShjbGllbnQuZmluZFJlc3VsdHNBcmVSZWFkeSgpKTsKIAogICAgIC8vIERl
dGFjaCB0aGUgZnJhbWUgYmV0d2VlbiBmaW5kaW5nIGFuZCBzY29waW5nLgpAQCAtMTU1MSw3ICsx
NTUyLDcgQEAgVEVTVF9GKFdlYkZyYW1lVGVzdCwgRmluZERldGFjaEZyYW1lQmVmb3JlU2NvcGVT
dHJpbmdzKQogICAgIGZvciAoV2ViRnJhbWUqIGZyYW1lID0gbWFpbkZyYW1lOyBmcmFtZTsgZnJh
bWUgPSBmcmFtZS0+dHJhdmVyc2VOZXh0KGZhbHNlKSkKICAgICAgICAgZnJhbWUtPnNjb3BlU3Ry
aW5nTWF0Y2hlcyhrRmluZElkZW50aWZpZXIsIHNlYXJjaFRleHQsIG9wdGlvbnMsIHRydWUpOwog
Ci0gICAgd2Via2l0X3N1cHBvcnQ6OlJ1bkFsbFBlbmRpbmdNZXNzYWdlcygpOworICAgIHJ1blBl
bmRpbmdUYXNrcygpOwogICAgIEVYUEVDVF9UUlVFKGNsaWVudC5maW5kUmVzdWx0c0FyZVJlYWR5
KCkpOwogCiAgICAgaG9sZFNlY29uZEZyYW1lLnJlbGVhc2UoKTsKQEAgLTE1NjcsNyArMTU2OCw3
IEBAIFRFU1RfRihXZWJGcmFtZVRlc3QsIEZpbmREZXRhY2hGcmFtZVdoaWxlU2NvcGluZ1N0cmlu
Z3MpCiAgICAgV2ViVmlldyogd2ViVmlldyA9IEZyYW1lVGVzdEhlbHBlcnM6OmNyZWF0ZVdlYlZp
ZXdBbmRMb2FkKG1fYmFzZVVSTCArICJmaW5kX2luX3BhZ2UuaHRtbCIsIHRydWUsICZjbGllbnQp
OwogICAgIHdlYlZpZXctPnJlc2l6ZShXZWJTaXplKDY0MCwgNDgwKSk7CiAgICAgd2ViVmlldy0+
bGF5b3V0KCk7Ci0gICAgd2Via2l0X3N1cHBvcnQ6OlJ1bkFsbFBlbmRpbmdNZXNzYWdlcygpOwor
ICAgIHJ1blBlbmRpbmdUYXNrcygpOwogCiAgICAgc3RhdGljIGNvbnN0IGNoYXIqIGtGaW5kU3Ry
aW5nID0gInJlc3VsdCI7CiAgICAgc3RhdGljIGNvbnN0IGludCBrRmluZElkZW50aWZpZXIgPSAx
MjM0NTsKQEAgLTE1ODEsNyArMTU4Miw3IEBAIFRFU1RfRihXZWJGcmFtZVRlc3QsIEZpbmREZXRh
Y2hGcmFtZVdoaWxlU2NvcGluZ1N0cmluZ3MpCiAgICAgZm9yIChXZWJGcmFtZSogZnJhbWUgPSBt
YWluRnJhbWU7IGZyYW1lOyBmcmFtZSA9IGZyYW1lLT50cmF2ZXJzZU5leHQoZmFsc2UpKQogICAg
ICAgICBFWFBFQ1RfVFJVRShmcmFtZS0+ZmluZChrRmluZElkZW50aWZpZXIsIHNlYXJjaFRleHQs
IG9wdGlvbnMsIGZhbHNlLCAwKSk7CiAKLSAgICB3ZWJraXRfc3VwcG9ydDo6UnVuQWxsUGVuZGlu
Z01lc3NhZ2VzKCk7CisgICAgcnVuUGVuZGluZ1Rhc2tzKCk7CiAgICAgRVhQRUNUX0ZBTFNFKGNs
aWVudC5maW5kUmVzdWx0c0FyZVJlYWR5KCkpOwogCiAgICAgbWFpbkZyYW1lLT5yZXNldE1hdGNo
Q291bnQoKTsKQEAgLTE1OTIsNyArMTU5Myw3IEBAIFRFU1RfRihXZWJGcmFtZVRlc3QsIEZpbmRE
ZXRhY2hGcmFtZVdoaWxlU2NvcGluZ1N0cmluZ3MpCiAgICAgLy8gVGhlIGZpcnN0IHNjb3BlU3Ry
aW5nTWF0Y2hlcyB3aWxsIGhhdmUgcmVzZXQgdGhlIHN0YXRlLiBEZXRhY2ggYmVmb3JlIGl0IGFj
dHVhbGx5IHNjb3Blcy4KICAgICBFWFBFQ1RfVFJVRShtYWluRnJhbWUtPmRvY3VtZW50KCkuZ2V0
RWxlbWVudEJ5SWQoImZyYW1lIikucmVtb3ZlKCkpOwogCi0gICAgd2Via2l0X3N1cHBvcnQ6OlJ1
bkFsbFBlbmRpbmdNZXNzYWdlcygpOworICAgIHJ1blBlbmRpbmdUYXNrcygpOwogICAgIEVYUEVD
VF9UUlVFKGNsaWVudC5maW5kUmVzdWx0c0FyZVJlYWR5KCkpOwogCiAgICAgaG9sZFNlY29uZEZy
YW1lLnJlbGVhc2UoKTsKQEAgLTIwMjksNyArMjAzMCw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFs
IHZvaWQgZGlkRmFpbFByb3Zpc2lvbmFsTG9hZChXZWJGcmFtZSogZnJhbWUsIGNvbnN0IFdlYlVS
TEVycm9yJiBlcnJvcikKICAgICB7CiAgICAgICAgIGZyYW1lLT5sb2FkSFRNTFN0cmluZygiVGhp
cyBzaG91bGQgYXBwZWFyIiwgdG9LVVJMKCJkYXRhOnRleHQvaHRtbCxjaHJvbWV3ZWJkYXRhIiks
IGVycm9yLnVucmVhY2hhYmxlVVJMLCB0cnVlKTsKLSAgICAgICAgd2Via2l0X3N1cHBvcnQ6OlJ1
bkFsbFBlbmRpbmdNZXNzYWdlcygpOworICAgICAgICBydW5QZW5kaW5nVGFza3MoKTsKICAgICB9
CiAKICAgICB2aXJ0dWFsIHZvaWQgZGlkQ29tbWl0UHJvdmlzaW9uYWxMb2FkKFdlYkZyYW1lKiBm
cmFtZSwgYm9vbCkKQEAgLTIwNDksNyArMjA1MCw3IEBAIFRFU1RfRihXZWJGcmFtZVRlc3QsIFJl
cGxhY2VOYXZpZ2F0aW9uQWZ0ZXJIaXN0b3J5TmF2aWdhdGlvbikKICAgICBUZXN0U3Vic3RpdHV0
ZURhdGFXZWJGcmFtZUNsaWVudCB3ZWJGcmFtZUNsaWVudDsKIAogICAgIFdlYlZpZXcqIHdlYlZp
ZXcgPSBGcmFtZVRlc3RIZWxwZXJzOjpjcmVhdGVXZWJWaWV3QW5kTG9hZCgiYWJvdXQ6Ymxhbmsi
LCB0cnVlLCAmd2ViRnJhbWVDbGllbnQpOwotICAgIHdlYmtpdF9zdXBwb3J0OjpSdW5BbGxQZW5k
aW5nTWVzc2FnZXMoKTsKKyAgICBydW5QZW5kaW5nVGFza3MoKTsKICAgICBXZWJGcmFtZSogZnJh
bWUgPSB3ZWJWaWV3LT5tYWluRnJhbWUoKTsKIAogICAgIC8vIExvYWQgYSB1cmwgYXMgYSBoaXN0
b3J5IG5hdmlnYXRpb24gdGhhdCB3aWxsIHJldHVybiBhbiBlcnJvci4gVGVzdFN1YnN0aXR1dGVE
YXRhV2ViRnJhbWVDbGllbnQKQEAgLTIwNjksOSArMjA3MCw5IEBAIFRFU1RfRihXZWJGcmFtZVRl
c3QsIFJlcGxhY2VOYXZpZ2F0aW9uQWZ0ZXJIaXN0b3J5TmF2aWdhdGlvbikKICAgICBlcnJvckhp
c3RvcnlJdGVtLmluaXRpYWxpemUoKTsKICAgICBlcnJvckhpc3RvcnlJdGVtLnNldFVSTFN0cmlu
ZyhXZWJTdHJpbmc6OmZyb21VVEY4KGVycm9yVVJMLmNfc3RyKCksIGVycm9yVVJMLmxlbmd0aCgp
KSk7CiAgICAgZXJyb3JIaXN0b3J5SXRlbS5zZXRPcmlnaW5hbFVSTFN0cmluZyhXZWJTdHJpbmc6
OmZyb21VVEY4KGVycm9yVVJMLmNfc3RyKCksIGVycm9yVVJMLmxlbmd0aCgpKSk7Ci0gICAgd2Vi
a2l0X3N1cHBvcnQ6OlJlZ2lzdGVyTW9ja2VkRXJyb3JVUkwoVVJMVGVzdEhlbHBlcnM6OnRvS1VS
TChlcnJvclVSTCksIHJlc3BvbnNlLCBlcnJvcik7CisgICAgUGxhdGZvcm06OmN1cnJlbnQoKS0+
cmVnaXN0ZXJNb2NrZWRFcnJvclVSTChVUkxUZXN0SGVscGVyczo6dG9LVVJMKGVycm9yVVJMKSwg
cmVzcG9uc2UsIGVycm9yKTsKICAgICBmcmFtZS0+bG9hZEhpc3RvcnlJdGVtKGVycm9ySGlzdG9y
eUl0ZW0pOwotICAgIHdlYmtpdF9zdXBwb3J0OjpTZXJ2ZUFzeW5jaHJvbm91c01vY2tlZFJlcXVl
c3RzKCk7CisgICAgUGxhdGZvcm06OmN1cnJlbnQoKS0+c2VydmVBc3luY2hyb25vdXNNb2NrZWRS
ZXF1ZXN0cygpOwogCiAgICAgV2ViU3RyaW5nIHRleHQgPSBmcmFtZS0+Y29udGVudEFzVGV4dChz
dGQ6Om51bWVyaWNfbGltaXRzPHNpemVfdD46Om1heCgpKTsKICAgICBFWFBFQ1RfRVEoIlRoaXMg
c2hvdWxkIGFwcGVhciIsIHN0ZDo6c3RyaW5nKHRleHQudXRmOCgpLmRhdGEoKSkpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9XZWJJbWFnZVRlc3QuY3BwIGIvU291
cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9XZWJJbWFnZVRlc3QuY3BwCmluZGV4IDJmNDRlMzRi
MzJiZjE2NDhkZTRiNDhmMjgzNjU3MjQ0ZGJjZTcxMmUuLjMyZDljZmFiYjVkZWE5M2I3MjM2MjVh
ZGQ4MzU2ZWYxODg4NzRjN2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVz
dHMvV2ViSW1hZ2VUZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL1dl
YkltYWdlVGVzdC5jcHAKQEAgLTM1LDkgKzM1LDkgQEAKICNpbmNsdWRlICJGaWxlU3lzdGVtLmgi
CiAjaW5jbHVkZSAiU2hhcmVkQnVmZmVyLmgiCiAjaW5jbHVkZSA8Z3Rlc3QvZ3Rlc3QuaD4KKyNp
bmNsdWRlIDxwdWJsaWMvUGxhdGZvcm0uaD4KICNpbmNsdWRlIDxwdWJsaWMvV2ViRGF0YS5oPgog
I2luY2x1ZGUgPHB1YmxpYy9XZWJTaXplLmg+Ci0jaW5jbHVkZSA8d2Via2l0L3N1cHBvcnQvd2Vi
a2l0X3N1cHBvcnQuaD4KIAogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiB1c2luZyBuYW1lc3Bh
Y2UgV2ViS2l0OwpAQCAtNDYsNyArNDYsNyBAQCBuYW1lc3BhY2UgewogCiBzdGF0aWMgUGFzc1Jl
ZlB0cjxTaGFyZWRCdWZmZXI+IHJlYWRGaWxlKGNvbnN0IGNoYXIqIGZpbGVOYW1lKQogewotICAg
IFN0cmluZyBmaWxlUGF0aCA9IHdlYmtpdF9zdXBwb3J0OjpHZXRXZWJLaXRSb290RGlyKCk7Cisg
ICAgU3RyaW5nIGZpbGVQYXRoID0gUGxhdGZvcm06OmN1cnJlbnQoKS0+Z2V0V2ViS2l0Um9vdERp
cigpOwogICAgIGZpbGVQYXRoLmFwcGVuZCgiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMv
ZGF0YS8iKTsKICAgICBmaWxlUGF0aC5hcHBlbmQoZmlsZU5hbWUpOwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL1dlYlBhZ2VOZXdTZXJpYWxpemVyVGVzdC5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL1dlYlBhZ2VOZXdTZXJpYWxpemVyVGVzdC5j
cHAKaW5kZXggNGEyYjcyYmRmOTQ1OGY3MGQxNGNmNGQ0YTFmYmQ5ZjhhZGE2ZDJlYy4uOGE0YzY2
Mzk0Yjc3ODgyN2ZjMDlmZjQ4NjIzNmI1MGFlM2VjZjZjYiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9jaHJvbWl1bS90ZXN0cy9XZWJQYWdlTmV3U2VyaWFsaXplclRlc3QuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvV2ViUGFnZU5ld1NlcmlhbGl6ZXJUZXN0LmNwcApA
QCAtMzAsNiArMzAsNyBAQAogCiAjaW5jbHVkZSAiY29uZmlnLmgiCiAKKyNpbmNsdWRlICJGcmFt
ZVRlc3RIZWxwZXJzLmgiCiAjaW5jbHVkZSAiVVJMVGVzdEhlbHBlcnMuaCIKICNpbmNsdWRlICJX
ZWJGcmFtZS5oIgogI2luY2x1ZGUgIldlYkZyYW1lQ2xpZW50LmgiCkBAIC0zNywxNSArMzgsMTYg
QEAKICNpbmNsdWRlICJXZWJTY3JpcHRTb3VyY2UuaCIKICNpbmNsdWRlICJXZWJTZXR0aW5ncy5o
IgogI2luY2x1ZGUgIldlYlZpZXcuaCIKKyNpbmNsdWRlIDxwdWJsaWMvUGxhdGZvcm0uaD4KICNp
bmNsdWRlIDxwdWJsaWMvV2ViU3RyaW5nLmg+CisjaW5jbHVkZSA8cHVibGljL1dlYlRocmVhZC5o
PgogI2luY2x1ZGUgPHB1YmxpYy9XZWJVUkwuaD4KICNpbmNsdWRlIDxwdWJsaWMvV2ViVVJMUmVx
dWVzdC5oPgogI2luY2x1ZGUgPHB1YmxpYy9XZWJVUkxSZXNwb25zZS5oPgotCiAjaW5jbHVkZSA8
Z3Rlc3QvZ3Rlc3QuaD4KLSNpbmNsdWRlIDx3ZWJraXQvc3VwcG9ydC93ZWJraXRfc3VwcG9ydC5o
PgogCiB1c2luZyBuYW1lc3BhY2UgV2ViS2l0OwordXNpbmcgV2ViS2l0OjpGcmFtZVRlc3RIZWxw
ZXJzOjpydW5QZW5kaW5nVGFza3M7CiB1c2luZyBXZWJLaXQ6OlVSTFRlc3RIZWxwZXJzOjp0b0tV
Ukw7CiB1c2luZyBXZWJLaXQ6OlVSTFRlc3RIZWxwZXJzOjpyZWdpc3Rlck1vY2tlZFVSTExvYWQ7
CiAKQEAgLTEwOSw3ICsxMTEsNyBAQCBwcm90ZWN0ZWQ6CiAKICAgICB2aXJ0dWFsIHZvaWQgVGVh
ckRvd24oKQogICAgIHsKLSAgICAgICAgd2Via2l0X3N1cHBvcnQ6OlVucmVnaXN0ZXJBbGxNb2Nr
ZWRVUkxzKCk7CisgICAgICAgIFBsYXRmb3JtOjpjdXJyZW50KCktPnVucmVnaXN0ZXJBbGxNb2Nr
ZWRVUkxzKCk7CiAgICAgICAgIG1fd2ViVmlldy0+Y2xvc2UoKTsKICAgICB9CiAKQEAgLTEzOCwx
MSArMTQwLDExIEBAIHByb3RlY3RlZDoKICAgICAgICAgdXJsUmVxdWVzdC5zZXRVUkwodXJsKTsK
ICAgICAgICAgbV93ZWJWaWV3LT5tYWluRnJhbWUoKS0+bG9hZFJlcXVlc3QodXJsUmVxdWVzdCk7
CiAgICAgICAgIC8vIE1ha2Ugc3VyZSBhbnkgcGVuZGluZyByZXF1ZXN0IGdldCBzZXJ2ZWQuCi0g
ICAgICAgIHdlYmtpdF9zdXBwb3J0OjpTZXJ2ZUFzeW5jaHJvbm91c01vY2tlZFJlcXVlc3RzKCk7
CisgICAgICAgIFBsYXRmb3JtOjpjdXJyZW50KCktPnNlcnZlQXN5bmNocm9ub3VzTW9ja2VkUmVx
dWVzdHMoKTsKICAgICAgICAgLy8gU29tZSByZXF1ZXN0cyBnZXQgZGVsYXllZCwgcnVuIHRoZSB0
aW1lci4KLSAgICAgICAgd2Via2l0X3N1cHBvcnQ6OlJ1bkFsbFBlbmRpbmdNZXNzYWdlcygpOwor
ICAgICAgICBydW5QZW5kaW5nVGFza3MoKTsKICAgICAgICAgLy8gU2VydmVyIHRoZSBkZWxheWVk
IHJlc291cmNlcy4KLSAgICAgICAgd2Via2l0X3N1cHBvcnQ6OlNlcnZlQXN5bmNocm9ub3VzTW9j
a2VkUmVxdWVzdHMoKTsKKyAgICAgICAgUGxhdGZvcm06OmN1cnJlbnQoKS0+c2VydmVBc3luY2hy
b25vdXNNb2NrZWRSZXF1ZXN0cygpOwogICAgIH0KIAogICAgIGNvbnN0IFdlYlN0cmluZyYgaHRt
bE1pbWVUeXBlKCkgY29uc3QgeyByZXR1cm4gbV9odG1sTWltZVR5cGU7IH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvV2ViUGFnZVNlcmlhbGl6ZXJUZXN0LmNwcCBi
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvV2ViUGFnZVNlcmlhbGl6ZXJUZXN0LmNwcApp
bmRleCBjZmVmMzQ3NTAyZTQwNjNjODc2Y2U3OTBmNjczYjcwMDQ3ZjU1MjMyLi4wZDA5ZDg5Mjkw
YWY0NjY5MGVkMmMwNjJlMjk1MTA1NWQ0OThmZjNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3Rlc3RzL1dlYlBhZ2VTZXJpYWxpemVyVGVzdC5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9jaHJvbWl1bS90ZXN0cy9XZWJQYWdlU2VyaWFsaXplclRlc3QuY3BwCkBAIC0zNSwxMyAr
MzUsMTMgQEAKICNpbmNsdWRlICJXZWJGcmFtZS5oIgogI2luY2x1ZGUgIldlYkZyYW1lQ2xpZW50
LmgiCiAjaW5jbHVkZSAiV2ViVmlldy5oIgorI2luY2x1ZGUgPHB1YmxpYy9QbGF0Zm9ybS5oPgog
I2luY2x1ZGUgPHB1YmxpYy9XZWJTdHJpbmcuaD4KICNpbmNsdWRlIDxwdWJsaWMvV2ViVVJMLmg+
CiAjaW5jbHVkZSA8cHVibGljL1dlYlVSTFJlcXVlc3QuaD4KICNpbmNsdWRlIDxwdWJsaWMvV2Vi
VVJMUmVzcG9uc2UuaD4KIAogI2luY2x1ZGUgPGd0ZXN0L2d0ZXN0Lmg+Ci0jaW5jbHVkZSA8d2Vi
a2l0L3N1cHBvcnQvd2Via2l0X3N1cHBvcnQuaD4KIAogdXNpbmcgbmFtZXNwYWNlIFdlYktpdDsK
IHVzaW5nIFdlYktpdDo6VVJMVGVzdEhlbHBlcnM6OnRvS1VSTDsKQEAgLTcwLDcgKzcwLDcgQEAg
cHJvdGVjdGVkOgogCiAgICAgdmlydHVhbCB2b2lkIFRlYXJEb3duKCkKICAgICB7Ci0gICAgICAg
IHdlYmtpdF9zdXBwb3J0OjpVbnJlZ2lzdGVyQWxsTW9ja2VkVVJMcygpOworICAgICAgICBQbGF0
Zm9ybTo6Y3VycmVudCgpLT51bnJlZ2lzdGVyQWxsTW9ja2VkVVJMcygpOwogICAgICAgICBtX3dl
YlZpZXctPmNsb3NlKCk7CiAgICAgfQogCkBAIC04Niw3ICs4Niw3IEBAIHByb3RlY3RlZDoKICAg
ICAgICAgdXJsUmVxdWVzdC5zZXRVUkwodXJsKTsKICAgICAgICAgbV93ZWJWaWV3LT5tYWluRnJh
bWUoKS0+bG9hZFJlcXVlc3QodXJsUmVxdWVzdCk7CiAgICAgICAgIC8vIE1ha2Ugc3VyZSBhbnkg
cGVuZGluZyByZXF1ZXN0IGdldCBzZXJ2ZWQuCi0gICAgICAgIHdlYmtpdF9zdXBwb3J0OjpTZXJ2
ZUFzeW5jaHJvbm91c01vY2tlZFJlcXVlc3RzKCk7CisgICAgICAgIFBsYXRmb3JtOjpjdXJyZW50
KCktPnNlcnZlQXN5bmNocm9ub3VzTW9ja2VkUmVxdWVzdHMoKTsKICAgICB9CiAKICAgICBzdGF0
aWMgYm9vbCB3ZWJWZWN0b3JDb250YWlucyhjb25zdCBXZWJWZWN0b3I8V2ViVVJMPiYgdmVjdG9y
LCBjb25zdCBjaGFyKiB1cmwpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rl
c3RzL1dlYlBsdWdpbkNvbnRhaW5lclRlc3QuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90
ZXN0cy9XZWJQbHVnaW5Db250YWluZXJUZXN0LmNwcAppbmRleCA1MDA4OWM5ZDRkNjEwZGZmMzk3
YzUyZjZmMTQ0OTdhMjA2M2M1NzYxLi4xZDgwODRkNWUxMTAwNjVjY2ZlMDM1ZWVkMjkyYTQ4M2Q1
MzkyYzgzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL1dlYlBsdWdp
bkNvbnRhaW5lclRlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvV2Vi
UGx1Z2luQ29udGFpbmVyVGVzdC5jcHAKQEAgLTQ2LDcgKzQ2LDggQEAKICNpbmNsdWRlICJXZWJW
aWV3LmgiCiAjaW5jbHVkZSAiV2ViVmlld0ltcGwuaCIKICNpbmNsdWRlIDxndGVzdC9ndGVzdC5o
PgotI2luY2x1ZGUgPHdlYmtpdC9zdXBwb3J0L3dlYmtpdF9zdXBwb3J0Lmg+CisjaW5jbHVkZSA8
cHVibGljL1BsYXRmb3JtLmg+CisjaW5jbHVkZSA8cHVibGljL1dlYlRocmVhZC5oPgogCiB1c2lu
ZyBuYW1lc3BhY2UgV2ViS2l0OwogCkBAIC02MSw3ICs2Miw3IEBAIHB1YmxpYzoKIAogICAgIHZp
cnR1YWwgdm9pZCBUZWFyRG93bigpCiAgICAgewotICAgICAgICB3ZWJraXRfc3VwcG9ydDo6VW5y
ZWdpc3RlckFsbE1vY2tlZFVSTHMoKTsKKyAgICAgICAgUGxhdGZvcm06OmN1cnJlbnQoKS0+dW5y
ZWdpc3RlckFsbE1vY2tlZFVSTHMoKTsKICAgICB9CiAKIHByb3RlY3RlZDoKQEAgLTkxLDcgKzky
LDcgQEAgVEVTVF9GKFdlYlBsdWdpbkNvbnRhaW5lclRlc3QsIFdpbmRvd1RvTG9jYWxQb2ludFRl
c3QpCiAgICAgd2ViVmlldy0+c2V0dGluZ3MoKS0+c2V0UGx1Z2luc0VuYWJsZWQodHJ1ZSk7CiAg
ICAgd2ViVmlldy0+cmVzaXplKFdlYlNpemUoMzAwLCAzMDApKTsKICAgICB3ZWJWaWV3LT5sYXlv
dXQoKTsKLSAgICB3ZWJraXRfc3VwcG9ydDo6UnVuQWxsUGVuZGluZ01lc3NhZ2VzKCk7CisgICAg
RnJhbWVUZXN0SGVscGVyczo6cnVuUGVuZGluZ1Rhc2tzKCk7CiAKICAgICBXZWJQbHVnaW5Db250
YWluZXIqIHBsdWdpbkNvbnRhaW5lck9uZSA9IGdldFdlYlBsdWdpbkNvbnRhaW5lcih3ZWJWaWV3
LCBXZWJTdHJpbmc6OmZyb21VVEY4KCJ0cmFuc2xhdGVkLXBsdWdpbiIpKTsKICAgICBBU1NFUlQo
cGx1Z2luQ29udGFpbmVyT25lKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
dGVzdHMvV2ViVmlld1Rlc3QuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9XZWJW
aWV3VGVzdC5jcHAKaW5kZXggZjA4NTIyZjM4N2QxNzYzNWIzOWY3MmE3ODYyODE0YTkxZDI0NDE0
NS4uZmFjNzQyZTBlNTEwYjM3ZmRhZWJkY2QzODI1YzUyMDY5NGMzNGQ5NSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9XZWJWaWV3VGVzdC5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9jaHJvbWl1bS90ZXN0cy9XZWJWaWV3VGVzdC5jcHAKQEAgLTQ3LDEwICs0NywxMiBA
QAogI2luY2x1ZGUgIldlYlZpZXdDbGllbnQuaCIKICNpbmNsdWRlICJXZWJWaWV3SW1wbC5oIgog
I2luY2x1ZGUgPGd0ZXN0L2d0ZXN0Lmg+CisjaW5jbHVkZSA8cHVibGljL1BsYXRmb3JtLmg+CiAj
aW5jbHVkZSA8cHVibGljL1dlYlNpemUuaD4KLSNpbmNsdWRlIDx3ZWJraXQvc3VwcG9ydC93ZWJr
aXRfc3VwcG9ydC5oPgorI2luY2x1ZGUgPHB1YmxpYy9XZWJUaHJlYWQuaD4KIAogdXNpbmcgbmFt
ZXNwYWNlIFdlYktpdDsKK3VzaW5nIFdlYktpdDo6RnJhbWVUZXN0SGVscGVyczo6cnVuUGVuZGlu
Z1Rhc2tzOwogdXNpbmcgV2ViS2l0OjpVUkxUZXN0SGVscGVyczo6dG9LVVJMOwogCiBuYW1lc3Bh
Y2UgewpAQCAtMTYzLDcgKzE2NSw3IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgdm9pZCBUZWFy
RG93bigpCiAgICAgewotICAgICAgICB3ZWJraXRfc3VwcG9ydDo6VW5yZWdpc3RlckFsbE1vY2tl
ZFVSTHMoKTsKKyAgICAgICAgUGxhdGZvcm06OmN1cnJlbnQoKS0+dW5yZWdpc3RlckFsbE1vY2tl
ZFVSTHMoKTsKICAgICB9CiAKIHByb3RlY3RlZDoKQEAgLTU2OSw3ICs1NzEsNyBAQCBzdGF0aWMg
Ym9vbCB0YXBFbGVtZW50QnlJZChXZWJWaWV3KiB3ZWJWaWV3LCBXZWJJbnB1dEV2ZW50OjpUeXBl
IHR5cGUsIGNvbnN0IFdlYgogICAgIGV2ZW50LnkgPSBjZW50ZXIueSgpOwogCiAgICAgd2ViVmll
dy0+aGFuZGxlSW5wdXRFdmVudChldmVudCk7Ci0gICAgd2Via2l0X3N1cHBvcnQ6OlJ1bkFsbFBl
bmRpbmdNZXNzYWdlcygpOworICAgIHJ1blBlbmRpbmdUYXNrcygpOwogICAgIHJldHVybiB0cnVl
OwogfQogCkBAIC01ODEsNyArNTgzLDcgQEAgVEVTVF9GKFdlYlZpZXdUZXN0LCBEZXRlY3RDb250
ZW50QXJvdW5kUG9zaXRpb24pCiAgICAgV2ViVmlldyogd2ViVmlldyA9IEZyYW1lVGVzdEhlbHBl
cnM6OmNyZWF0ZVdlYlZpZXdBbmRMb2FkKG1fYmFzZVVSTCArICJjb250ZW50X2xpc3RlbmVycy5o
dG1sIiwgdHJ1ZSwgMCwgJmNsaWVudCk7CiAgICAgd2ViVmlldy0+cmVzaXplKFdlYlNpemUoNTAw
LCAzMDApKTsKICAgICB3ZWJWaWV3LT5sYXlvdXQoKTsKLSAgICB3ZWJraXRfc3VwcG9ydDo6UnVu
QWxsUGVuZGluZ01lc3NhZ2VzKCk7CisgICAgcnVuUGVuZGluZ1Rhc2tzKCk7CiAKICAgICBXZWJT
dHJpbmcgY2xpY2tMaXN0ZW5lciA9IFdlYlN0cmluZzo6ZnJvbVVURjgoImNsaWNrTGlzdGVuZXIi
KTsKICAgICBXZWJTdHJpbmcgdG91Y2hzdGFydExpc3RlbmVyID0gV2ViU3RyaW5nOjpmcm9tVVRG
OCgidG91Y2hzdGFydExpc3RlbmVyIik7CkBAIC02MTgsNyArNjIwLDcgQEAgVEVTVF9GKFdlYlZp
ZXdUZXN0LCBEZXRlY3RDb250ZW50QXJvdW5kUG9zaXRpb24pCiAgICAgV2ViR2VzdHVyZUV2ZW50
IGV2ZW50OwogICAgIGV2ZW50LnR5cGUgPSBXZWJJbnB1dEV2ZW50OjpHZXN0dXJlVGFwOwogICAg
IHdlYlZpZXctPmhhbmRsZUlucHV0RXZlbnQoZXZlbnQpOwotICAgIHdlYmtpdF9zdXBwb3J0OjpS
dW5BbGxQZW5kaW5nTWVzc2FnZXMoKTsKKyAgICBydW5QZW5kaW5nVGFza3MoKTsKICAgICBFWFBF
Q1RfVFJVRShjbGllbnQucGVuZGluZ0ludGVudHNDYW5jZWxsZWQoKSk7CiAgICAgd2ViVmlldy0+
Y2xvc2UoKTsKIH0KQEAgLTYzMyw3ICs2MzUsNyBAQCBURVNUX0YoV2ViVmlld1Rlc3QsIENsaWVu
dFRhcEhhbmRsaW5nKQogICAgIGV2ZW50LnggPSAzOwogICAgIGV2ZW50LnkgPSA4OwogICAgIHdl
YlZpZXctPmhhbmRsZUlucHV0RXZlbnQoZXZlbnQpOwotICAgIHdlYmtpdF9zdXBwb3J0OjpSdW5B
bGxQZW5kaW5nTWVzc2FnZXMoKTsKKyAgICBydW5QZW5kaW5nVGFza3MoKTsKICAgICBFWFBFQ1Rf
RVEoMywgY2xpZW50LnRhcFgoKSk7CiAgICAgRVhQRUNUX0VRKDgsIGNsaWVudC50YXBZKCkpOwog
ICAgIGNsaWVudC5yZXNldCgpOwpAQCAtNjQxLDcgKzY0Myw3IEBAIFRFU1RfRihXZWJWaWV3VGVz
dCwgQ2xpZW50VGFwSGFuZGxpbmcpCiAgICAgZXZlbnQueCA9IDI1OwogICAgIGV2ZW50LnkgPSA3
OwogICAgIHdlYlZpZXctPmhhbmRsZUlucHV0RXZlbnQoZXZlbnQpOwotICAgIHdlYmtpdF9zdXBw
b3J0OjpSdW5BbGxQZW5kaW5nTWVzc2FnZXMoKTsKKyAgICBydW5QZW5kaW5nVGFza3MoKTsKICAg
ICBFWFBFQ1RfRVEoMjUsIGNsaWVudC5sb25ncHJlc3NYKCkpOwogICAgIEVYUEVDVF9FUSg3LCBj
bGllbnQubG9uZ3ByZXNzWSgpKTsKICAgICB3ZWJWaWV3LT5jbG9zZSgpOwpAQCAtNjU1LDcgKzY1
Nyw3IEBAIFRFU1RfRihXZWJWaWV3VGVzdCwgTG9uZ1ByZXNzU2VsZWN0aW9uKQogICAgIFdlYlZp
ZXcqIHdlYlZpZXcgPSBGcmFtZVRlc3RIZWxwZXJzOjpjcmVhdGVXZWJWaWV3QW5kTG9hZChtX2Jh
c2VVUkwgKyAibG9uZ3ByZXNzX3NlbGVjdGlvbi5odG1sIiwgdHJ1ZSk7CiAgICAgd2ViVmlldy0+
cmVzaXplKFdlYlNpemUoNTAwLCAzMDApKTsKICAgICB3ZWJWaWV3LT5sYXlvdXQoKTsKLSAgICB3
ZWJraXRfc3VwcG9ydDo6UnVuQWxsUGVuZGluZ01lc3NhZ2VzKCk7CisgICAgcnVuUGVuZGluZ1Rh
c2tzKCk7CiAKICAgICBXZWJTdHJpbmcgdGFyZ2V0ID0gV2ViU3RyaW5nOjpmcm9tVVRGOCgidGFy
Z2V0Iik7CiAgICAgV2ViU3RyaW5nIG9uc2VsZWN0c3RhcnRmYWxzZSA9IFdlYlN0cmluZzo6ZnJv
bVVURjgoIm9uc2VsZWN0c3RhcnRmYWxzZSIpOwpAQCAtNjc1LDcgKzY3Nyw3IEBAIFRFU1RfRihX
ZWJWaWV3VGVzdCwgU2VsZWN0aW9uT25EaXNhYmxlZElucHV0KQogICAgIFdlYlZpZXcqIHdlYlZp
ZXcgPSBGcmFtZVRlc3RIZWxwZXJzOjpjcmVhdGVXZWJWaWV3QW5kTG9hZChtX2Jhc2VVUkwgKyAi
c2VsZWN0aW9uX2Rpc2FibGVkLmh0bWwiLCB0cnVlKTsKICAgICB3ZWJWaWV3LT5yZXNpemUoV2Vi
U2l6ZSg2NDAsIDQ4MCkpOwogICAgIHdlYlZpZXctPmxheW91dCgpOwotICAgIHdlYmtpdF9zdXBw
b3J0OjpSdW5BbGxQZW5kaW5nTWVzc2FnZXMoKTsKKyAgICBydW5QZW5kaW5nVGFza3MoKTsKIAog
ICAgIHN0ZDo6c3RyaW5nIHRlc3RXb3JkID0gIlRoaXMgdGV4dCBzaG91bGQgYmUgc2VsZWN0ZWQu
IjsKIApAQCAtNjk5LDcgKzcwMSw3IEBAIFRFU1RfRihXZWJWaWV3VGVzdCwgU2VsZWN0aW9uT25S
ZWFkT25seUlucHV0KQogICAgIFdlYlZpZXcqIHdlYlZpZXcgPSBGcmFtZVRlc3RIZWxwZXJzOjpj
cmVhdGVXZWJWaWV3QW5kTG9hZChtX2Jhc2VVUkwgKyAic2VsZWN0aW9uX3JlYWRvbmx5Lmh0bWwi
LCB0cnVlKTsKICAgICB3ZWJWaWV3LT5yZXNpemUoV2ViU2l6ZSg2NDAsIDQ4MCkpOwogICAgIHdl
YlZpZXctPmxheW91dCgpOwotICAgIHdlYmtpdF9zdXBwb3J0OjpSdW5BbGxQZW5kaW5nTWVzc2Fn
ZXMoKTsKKyAgICBydW5QZW5kaW5nVGFza3MoKTsKIAogICAgIHN0ZDo6c3RyaW5nIHRlc3RXb3Jk
ID0gIlRoaXMgdGV4dCBzaG91bGQgYmUgc2VsZWN0ZWQuIjsKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>187462</attachid>
            <date>2013-02-09 22:14:39 -0800</date>
            <delta_ts>2013-02-10 17:44:34 -0800</delta_ts>
            <desc>with tearoff WebUnitTestSupport interface</desc>
            <filename>bug-109369-20130209221123.patch</filename>
            <type>text/plain</type>
            <size>51611</size>
            <attacher name="James Robinson">jamesr</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQyMDMxCmRpZmYgLS1naXQgYS9Tb3VyY2UvUGxhdGZvcm0v
Q2hhbmdlTG9nIGIvU291cmNlL1BsYXRmb3JtL0NoYW5nZUxvZwppbmRleCA3M2FiODgxMGNmYjcy
NTFmYWZlMGIwMWQ3YWZhMWVhZTYxMWY5OGJlLi5iZGZjMzNiNGZlMWNhYjVmMTkyYzZmOThjYWE5
YmViZWZlN2VmMDdkIDEwMDY0NAotLS0gYS9Tb3VyY2UvUGxhdGZvcm0vQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9QbGF0Zm9ybS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyNyBAQAorMjAxMy0wMi0wOSAg
SmFtZXMgUm9iaW5zb24gIDxqYW1lc3JAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtjaHJvbWl1
bV0gRW5hYmxlIG1vcmUgb2Ygd2Via2l0X3VuaXRfdGVzdHMgaW4gY29tcG9uZW50IGJ1aWxkcwor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTA5MzY5CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIGEgc2V0
IG9mIHRlc3RpbmcgQVBJcyB0byBhIFdlYlVuaXRUZXN0U3VwcG9ydCBpbnRlcmZhY2UgYXZhaWxh
YmxlIG9mZiBvZiBQbGF0Zm9ybSBmb3IgdW5pdCB0ZXN0cyB0byBhY2Nlc3MKKyAgICAgICAgaW4g
Y29tcG9uZW50IGJ1aWxkcy4KKworICAgICAgICAqIGNocm9taXVtL3B1YmxpYy9QbGF0Zm9ybS5o
OgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKFBsYXRmb3JtKToKKyAgICAgICAgKFdlYktp
dDo6UGxhdGZvcm06OnVuaXRUZXN0U3VwcG9ydCk6CisgICAgICAgICogY2hyb21pdW0vcHVibGlj
L1dlYlVuaXRUZXN0U3VwcG9ydC5oOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdCk6CisgICAgICAg
IChXZWJVbml0VGVzdFN1cHBvcnQpOgorICAgICAgICAoV2ViS2l0OjpXZWJVbml0VGVzdFN1cHBv
cnQ6OnJlZ2lzdGVyTW9ja2VkVVJMKToKKyAgICAgICAgKFdlYktpdDo6V2ViVW5pdFRlc3RTdXBw
b3J0OjpyZWdpc3Rlck1vY2tlZEVycm9yVVJMKToKKyAgICAgICAgKFdlYktpdDo6V2ViVW5pdFRl
c3RTdXBwb3J0Ojp1bnJlZ2lzdGVyTW9ja2VkVVJMKToKKyAgICAgICAgKFdlYktpdDo6V2ViVW5p
dFRlc3RTdXBwb3J0Ojp1bnJlZ2lzdGVyQWxsTW9ja2VkVVJMcyk6CisgICAgICAgIChXZWJLaXQ6
OldlYlVuaXRUZXN0U3VwcG9ydDo6c2VydmVBc3luY2hyb25vdXNNb2NrZWRSZXF1ZXN0cyk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlVuaXRUZXN0U3VwcG9ydDo6d2ViS2l0Um9vdERpcik6CisKIDIw
MTMtMDItMDYgIFRvbW15IFdpZGVuZmx5Y2h0ICA8dG9tbXl3QGdvb2dsZS5jb20+CiAKICAgICAg
ICAgTWVkaWFTdHJlYW0gQVBJOiBJbXBsZW1lbnQgRFRNRiBzdXBwb3J0IGluIFJUQ1BlZXJDb25u
ZWN0aW9uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZyBiL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4IGRiZjAzMDVhNGNmY2ExN2ZlMDcx
ODBlMWY5NWZhZGIzZGJjZTQ5YTguLjM4MTBmMDU2YzlhYWRiZjI1MjdmZmQyYmZiMDY0M2FiNGJj
YjRlNWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDIgQEAKKzIwMTMt
MDItMDkgIEphbWVzIFJvYmluc29uICA8amFtZXNyQGNocm9taXVtLm9yZz4KKworICAgICAgICBb
Y2hyb21pdW1dIEVuYWJsZSBtb3JlIG9mIHdlYmtpdF91bml0X3Rlc3RzIGluIGNvbXBvbmVudCBi
dWlsZHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEw
OTM2OQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFVw
ZGF0ZXMgYWxsIHdlYmtpdF91bml0X3Rlc3RzIChleGNlcHQgZm9yIExldmVsREJUZXN0KSB0byBn
byB0aHJvdWdoIHRoZSBQbGF0Zm9ybSBBUEkgaW5zdGVhZCBvZiBkaXJlY3RseQorICAgICAgICBj
YWxsaW5nIGludG8gd2Via2l0X3N1cHBvcnQgc28gdGhleSB3b3JrIGluIGNvbXBvbmVudCBidWls
ZHMuCisKKyAgICAgICAgKiBXZWJLaXQuZ3lwOgorICAgICAgICAqIHRlc3RzL0Fzc29jaWF0ZWRV
UkxMb2FkZXJUZXN0LmNwcDoKKyAgICAgICAgKiB0ZXN0cy9FdmVudExpc3RlbmVyVGVzdC5jcHA6
CisgICAgICAgICogdGVzdHMvRnJhbWVUZXN0SGVscGVycy5jcHA6CisgICAgICAgIChXZWJLaXQ6
OkZyYW1lVGVzdEhlbHBlcnM6OmNyZWF0ZVdlYlZpZXdBbmRMb2FkKToKKyAgICAgICAgKFF1aXRU
YXNrKToKKyAgICAgICAgKFdlYktpdDo6RnJhbWVUZXN0SGVscGVyczo6UXVpdFRhc2s6OnJ1bik6
CisgICAgICAgIChGcmFtZVRlc3RIZWxwZXJzKToKKyAgICAgICAgKFdlYktpdDo6RnJhbWVUZXN0
SGVscGVyczo6cnVuUGVuZGluZ1Rhc2tzKToKKyAgICAgICAgKiB0ZXN0cy9GcmFtZVRlc3RIZWxw
ZXJzLmg6CisgICAgICAgIChGcmFtZVRlc3RIZWxwZXJzKToKKyAgICAgICAgKiB0ZXN0cy9MaXN0
ZW5lckxlYWtUZXN0LmNwcDoKKyAgICAgICAgKiB0ZXN0cy9Qb3B1cE1lbnVUZXN0LmNwcDoKKyAg
ICAgICAgKiB0ZXN0cy9QcmVyZW5kZXJpbmdUZXN0LmNwcDoKKyAgICAgICAgKiB0ZXN0cy9TY3Jv
bGxpbmdDb29yZGluYXRvckNocm9taXVtVGVzdC5jcHA6CisgICAgICAgIChXZWJLaXQ6OlNjcm9s
bGluZ0Nvb3JkaW5hdG9yQ2hyb21pdW1UZXN0Ojp+U2Nyb2xsaW5nQ29vcmRpbmF0b3JDaHJvbWl1
bVRlc3QpOgorICAgICAgICAoV2ViS2l0OjpTY3JvbGxpbmdDb29yZGluYXRvckNocm9taXVtVGVz
dDo6bmF2aWdhdGVUbyk6CisgICAgICAgICogdGVzdHMvVVJMVGVzdEhlbHBlcnMuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpVUkxUZXN0SGVscGVyczo6cmVnaXN0ZXJNb2NrZWRVUkxMb2FkKToKKyAg
ICAgICAgKiB0ZXN0cy9XZWJGcmFtZVRlc3QuY3BwOgorICAgICAgICAqIHRlc3RzL1dlYkltYWdl
VGVzdC5jcHA6CisgICAgICAgIChXZWJLaXQ6OnJlYWRGaWxlKToKKyAgICAgICAgKiB0ZXN0cy9X
ZWJQYWdlTmV3U2VyaWFsaXplclRlc3QuY3BwOgorICAgICAgICAqIHRlc3RzL1dlYlBhZ2VTZXJp
YWxpemVyVGVzdC5jcHA6CisgICAgICAgICogdGVzdHMvV2ViUGx1Z2luQ29udGFpbmVyVGVzdC5j
cHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBsdWdpbkNvbnRhaW5lclRlc3Q6OlRlYXJEb3duKToK
KyAgICAgICAgKFdlYktpdDo6VEVTVF9GKToKKyAgICAgICAgKiB0ZXN0cy9XZWJWaWV3VGVzdC5j
cHA6CisKIDIwMTMtMDItMDYgIFNoZXJpZmYgQm90ICA8d2Via2l0LnJldmlldy5ib3RAZ21haWwu
Y29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIHJvbGxpbmcgb3V0IHIxNDIwMjUuCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvUGxhdGZvcm0vY2hyb21pdW0vcHVibGljL1BsYXRmb3JtLmggYi9Tb3VyY2Uv
UGxhdGZvcm0vY2hyb21pdW0vcHVibGljL1BsYXRmb3JtLmgKaW5kZXggMDkzNjZlZTUwOWZhYTM5
ZDJkMDBkMGVkMWEyZTM4YzkyNmI3OTUzZi4uOTRmZDk3MTkyYzBjODNkZTU0MjZmMmJlMjg3OWM2
MThkZTI3Y2FiMSAxMDA2NDQKLS0tIGEvU291cmNlL1BsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9Q
bGF0Zm9ybS5oCisrKyBiL1NvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvUGxhdGZvcm0u
aApAQCAtNjcsMTMgKzY3LDE0IEBAIGNsYXNzIFdlYlJUQ1BlZXJDb25uZWN0aW9uSGFuZGxlckNs
aWVudDsKIGNsYXNzIFdlYlNhbmRib3hTdXBwb3J0OwogY2xhc3MgV2ViU29ja2V0U3RyZWFtSGFu
ZGxlOwogY2xhc3MgV2ViU3RvcmFnZU5hbWVzcGFjZTsKK2NsYXNzIFdlYlVuaXRUZXN0U3VwcG9y
dDsKIGNsYXNzIFdlYlRoZW1lRW5naW5lOwogY2xhc3MgV2ViVGhyZWFkOwogY2xhc3MgV2ViVVJM
OwogY2xhc3MgV2ViVVJMTG9hZGVyOwogY2xhc3MgV2ViV29ya2VyUnVuTG9vcDsKLXN0cnVjdCBX
ZWJMb2NhbGl6ZWRTdHJpbmc7CiBzdHJ1Y3QgV2ViRmxvYXRQb2ludDsKK3N0cnVjdCBXZWJMb2Nh
bGl6ZWRTdHJpbmc7CiBzdHJ1Y3QgV2ViU2l6ZTsKIAogY2xhc3MgUGxhdGZvcm0gewpAQCAtMzYw
LDYgKzM2MSwxMiBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGNhbGxPbk1haW5UaHJlYWQo
dm9pZCAoKmZ1bmMpKHZvaWQqKSwgdm9pZCogY29udGV4dCkgeyB9CiAKIAorICAgIC8vIFRlc3Rp
bmcgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLQorCisgICAgLy8gR2V0IGEgcG9pbnRlciB0byB0ZXN0aW5nIHN1cHBvcnQgaW50ZXJm
YWNlcy4gV2lsbCBub3QgYmUgYXZhaWxhYmxlIGluIHByb2R1Y3Rpb24gYnVpbGRzLgorICAgIHZp
cnR1YWwgV2ViVW5pdFRlc3RTdXBwb3J0KiB1bml0VGVzdFN1cHBvcnQoKSB7IHJldHVybiAwOyB9
CisKKwogICAgIC8vIFRyYWNpbmcgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCiAgICAgLy8gR2V0IGEgcG9pbnRlciB0byB0aGUg
ZW5hYmxlZCBzdGF0ZSBvZiB0aGUgZ2l2ZW4gdHJhY2UgY2F0ZWdvcnkuIFRoZQpkaWZmIC0tZ2l0
IGEvU291cmNlL1BsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9XZWJVbml0VGVzdFN1cHBvcnQuaCBi
L1NvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvV2ViVW5pdFRlc3RTdXBwb3J0LmgKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uOWE5ZTNlY2YxZTE2MjgyMDA0M2M0ZjA2YWQ1ZTBmN2Y1NWQ3NGVmYwotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvV2ViVW5pdFRlc3RT
dXBwb3J0LmgKQEAgLTAsMCArMSw1OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMyBHb29n
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFT
IElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GCisgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgV2ViVW5pdFRlc3RTdXBw
b3J0X2gKKyNkZWZpbmUgV2ViVW5pdFRlc3RTdXBwb3J0X2gKKworI2luY2x1ZGUgIldlYkNvbW1v
bi5oIgorI2luY2x1ZGUgIldlYlN0cmluZy5oIgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xh
c3MgV2ViVVJMOworY2xhc3MgV2ViVVJMUmVzcG9uc2U7CitzdHJ1Y3QgV2ViVVJMRXJyb3I7CisK
K2NsYXNzIFdlYlVuaXRUZXN0U3VwcG9ydCB7CitwdWJsaWM6CisgICAgdmlydHVhbCB2b2lkIHJl
Z2lzdGVyTW9ja2VkVVJMKGNvbnN0IFdlYlVSTCYsIGNvbnN0IFdlYlVSTFJlc3BvbnNlJiwgY29u
c3QgV2ViU3RyaW5nJiBmaWxlUGF0aCkgeyB9CisKKyAgICAvLyBSZWdpc3RlcnMgdGhlIGVycm9y
IHRvIGJlIHJldHVybmVkIHdoZW4gfHVybHwgaXMgcmVxdWVzdGVkLgorICAgIHZpcnR1YWwgdm9p
ZCByZWdpc3Rlck1vY2tlZEVycm9yVVJMKGNvbnN0IFdlYlVSTCYsIGNvbnN0IFdlYlVSTFJlc3Bv
bnNlJiwgY29uc3QgV2ViVVJMRXJyb3ImKSB7IH0KKworICAgIC8vIFVucmVnaXN0ZXJzIFVSTHMg
c28gdGhleSBhcmUgbm8gbG9uZ2VyIG1vY2tlZC4KKyAgICB2aXJ0dWFsIHZvaWQgdW5yZWdpc3Rl
ck1vY2tlZFVSTChjb25zdCBXZWJVUkwmKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgdW5yZWdpc3Rl
ckFsbE1vY2tlZFVSTHMoKSB7IH0KKworICAgIC8vIENhdXNlcyBhbGwgcGVuZGluZyBhc3luY2hy
b25vdXMgcmVxdWVzdHMgdG8gYmUgc2VydmVkLiBXaGVuIHRoaXMgbWV0aG9kCisgICAgLy8gcmV0
dXJucyBhbGwgdGhlIHBlbmRpbmcgcmVxdWVzdHMgaGF2ZSBiZWVuIHByb2Nlc3NlZC4KKyAgICB2
aXJ0dWFsIHZvaWQgc2VydmVBc3luY2hyb25vdXNNb2NrZWRSZXF1ZXN0cygpIHsgfQorCisgICAg
Ly8gUmV0dXJucyB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhlIFdlYktpdCBjb2RlLgorICAgIHZp
cnR1YWwgV2ViU3RyaW5nIHdlYktpdFJvb3REaXIoKSB7IHJldHVybiBXZWJTdHJpbmcoKTsgfQor
fTsKKworfQorCisjZW5kaWYgLy8gV2ViVW5pdFRlc3RTdXBwb3J0X2gKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5cCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
V2ViS2l0Lmd5cAppbmRleCA0ODg2OWJjZTE2ZWNiNTU4NDNlMzM0NTQwMjQwZTAwOTVhY2EzYjAz
Li5iNDU0NTliZDQyMDk5ZTIyYTUwNTY1M2JkZGRiM2VlMmIxOTFjNzUzIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL1dlYktpdC5neXAKKysrIGIvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9XZWJLaXQuZ3lwCkBAIC02NTMsMjcgKzY1Myw3IEBACiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICMgV2Ugc2hvdWxkIG5vdCBpbmNsdWRlIGZpbGVzIGRlcGVuZGluZyBvbiB3
ZWJraXRfc3VwcG9ydC4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBUaGVzZSB0
ZXN0cyBkZXBlbmQgb24gd2Via2l0X3N1cHBvcnQgYW5kCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICMgZnVuY3Rpb25zIGRlZmluZWQgb25seSBpbiAhV0VCS0lUX0lNUExFTUVOVEFU
SU9OLgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAndGVzdHMvQXNzb2NpYXRlZFVS
TExvYWRlclRlc3QuY3BwJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3Rlc3Rz
L0V2ZW50TGlzdGVuZXJUZXN0LmNwcCcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICd0ZXN0cy9GYWtlV2ViUGx1Z2luLmNwcCcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICd0ZXN0cy9GcmFtZVRlc3RIZWxwZXJzLmNwcCcsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICd0ZXN0cy9JREJCaW5kaW5nVXRpbGl0aWVzVGVzdC5jcHAnLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAndGVzdHMvSURCUmVxdWVzdFRlc3QuY3BwJywKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3Rlc3RzL0xldmVsREJUZXN0LmNwcCcsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICd0ZXN0cy9MaXN0ZW5lckxlYWtUZXN0LmNwcCcs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICd0ZXN0cy9MaW5rSGlnaGxpZ2h0VGVz
dC5jcHAnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAndGVzdHMvUG9wdXBNZW51
VGVzdC5jcHAnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAndGVzdHMvUHJlcmVu
ZGVyaW5nVGVzdC5jcHAnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAndGVzdHMv
UmVuZGVyVGFibGVDZWxsVGVzdC5jcHAnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAndGVzdHMvUmVuZGVyVGFibGVSb3dUZXN0LmNwcCcsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICd0ZXN0cy9TY3JvbGxpbmdDb29yZGluYXRvckNocm9taXVtVGVzdC5jcHAnLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAndGVzdHMvVVJMVGVzdEhlbHBlcnMuY3Bw
JywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3Rlc3RzL1dlYkZyYW1lVGVzdC5j
cHAnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAndGVzdHMvV2ViSW1hZ2VUZXN0
LmNwcCcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICd0ZXN0cy9XZWJQYWdlTmV3
U2VyaWFsaXplclRlc3QuY3BwJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3Rl
c3RzL1dlYlBhZ2VTZXJpYWxpemVyVGVzdC5jcHAnLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAndGVzdHMvV2ViUGx1Z2luQ29udGFpbmVyVGVzdC5jcHAnLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAndGVzdHMvV2ViVmlld1Rlc3QuY3BwJywKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICdjb25kaXRp
b25zJzogWwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJ09TPT0id2luIiBvciBP
Uz09Im1hYyInLCB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0Fz
c29jaWF0ZWRVUkxMb2FkZXJUZXN0LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMv
QXNzb2NpYXRlZFVSTExvYWRlclRlc3QuY3BwCmluZGV4IDhhYmEzYjYxNDZiMjBjZWY0M2I5MDIy
MGJiMjA1OGVjZGU2OWE5Y2YuLjY3NjU4ZDQ5Y2M5YmI3MjViY2MxYTgwYTg4YzZhNTQ4YjUxNjM4
N2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQXNzb2NpYXRlZFVS
TExvYWRlclRlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQXNzb2Np
YXRlZFVSTExvYWRlclRlc3QuY3BwCkBAIC0zNSwxNiArMzUsMTggQEAKICNpbmNsdWRlICJXZWJG
cmFtZUNsaWVudC5oIgogI2luY2x1ZGUgIldlYlVSTExvYWRlck9wdGlvbnMuaCIKICNpbmNsdWRl
ICJXZWJWaWV3LmgiCisjaW5jbHVkZSA8cHVibGljL1BsYXRmb3JtLmg+CiAjaW5jbHVkZSA8cHVi
bGljL1dlYlN0cmluZy5oPgorI2luY2x1ZGUgPHB1YmxpYy9XZWJUaHJlYWQuaD4KICNpbmNsdWRl
IDxwdWJsaWMvV2ViVVJMLmg+CiAjaW5jbHVkZSA8cHVibGljL1dlYlVSTExvYWRlci5oPgogI2lu
Y2x1ZGUgPHB1YmxpYy9XZWJVUkxMb2FkZXJDbGllbnQuaD4KICNpbmNsdWRlIDxwdWJsaWMvV2Vi
VVJMUmVxdWVzdC5oPgogI2luY2x1ZGUgPHB1YmxpYy9XZWJVUkxSZXNwb25zZS5oPgorI2luY2x1
ZGUgPHB1YmxpYy9XZWJVbml0VGVzdFN1cHBvcnQuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZT
dHJpbmcuaD4KIAogI2luY2x1ZGUgPGd0ZXN0L2d0ZXN0Lmg+Ci0jaW5jbHVkZSA8d2Via2l0L3N1
cHBvcnQvd2Via2l0X3N1cHBvcnQuaD4KIAogdXNpbmcgbmFtZXNwYWNlIFdlYktpdDsKIHVzaW5n
IFdlYktpdDo6VVJMVGVzdEhlbHBlcnM6OnRvS1VSTDsKQEAgLTc3LDcgKzc5LDcgQEAgcHVibGlj
OgogICAgICAgICAsICBtX3J1bm5pbmdNZXNzYWdlTG9vcChmYWxzZSkKICAgICB7CiAgICAgICAg
IC8vIFJldXNlIG9uZSBvZiB0aGUgdGVzdCBmaWxlcyBmcm9tIFdlYkZyYW1lVGVzdC4KLSAgICAg
ICAgc3RkOjpzdHJpbmcgZmlsZVBhdGggPSBzdGQ6OnN0cmluZyh3ZWJraXRfc3VwcG9ydDo6R2V0
V2ViS2l0Um9vdERpcigpLnV0ZjgoKS5kYXRhKCkpOworICAgICAgICBzdGQ6OnN0cmluZyBmaWxl
UGF0aCA9IHN0ZDo6c3RyaW5nKFBsYXRmb3JtOjpjdXJyZW50KCktPnVuaXRUZXN0U3VwcG9ydCgp
LT53ZWJLaXRSb290RGlyKCkudXRmOCgpLmRhdGEoKSk7CiAgICAgICAgIGZpbGVQYXRoICs9ICIv
U291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9kYXRhL2lmcmFtZXNfdGVzdC5odG1sIjsKICAg
ICAgICAgbV9mcmFtZUZpbGVQYXRoID0gV2ViU3RyaW5nOjpmcm9tVVRGOChmaWxlUGF0aC5jX3N0
cigpKTsKICAgICB9CkBAIC05Miw3ICs5NCw3IEBAIHB1YmxpYzoKICAgICAgICAgV2ViVVJMUmVz
cG9uc2UgcmVzcG9uc2U7CiAgICAgICAgIHJlc3BvbnNlLmluaXRpYWxpemUoKTsKICAgICAgICAg
cmVzcG9uc2Uuc2V0TUlNRVR5cGUoInRleHQvaHRtbCIpOwotICAgICAgICB3ZWJraXRfc3VwcG9y
dDo6UmVnaXN0ZXJNb2NrZWRVUkwodXJsLCByZXNwb25zZSwgbV9mcmFtZUZpbGVQYXRoKTsKKyAg
ICAgICAgUGxhdGZvcm06OmN1cnJlbnQoKS0+dW5pdFRlc3RTdXBwb3J0KCktPnJlZ2lzdGVyTW9j
a2VkVVJMKHVybCwgcmVzcG9uc2UsIG1fZnJhbWVGaWxlUGF0aCk7CiAKICAgICAgICAgV2ViVVJM
UmVxdWVzdCByZXF1ZXN0OwogICAgICAgICByZXF1ZXN0LmluaXRpYWxpemUoKTsKQEAgLTEwMCwx
OCArMTAyLDE4IEBAIHB1YmxpYzoKICAgICAgICAgbV93ZWJWaWV3LT5tYWluRnJhbWUoKS0+bG9h
ZFJlcXVlc3QocmVxdWVzdCk7CiAgICAgICAgIHNlcnZlUmVxdWVzdHMoKTsKIAotICAgICAgICB3
ZWJraXRfc3VwcG9ydDo6VW5yZWdpc3Rlck1vY2tlZFVSTCh1cmwpOworICAgICAgICBQbGF0Zm9y
bTo6Y3VycmVudCgpLT51bml0VGVzdFN1cHBvcnQoKS0+dW5yZWdpc3Rlck1vY2tlZFVSTCh1cmwp
OwogICAgIH0KIAogICAgIHZvaWQgVGVhckRvd24oKQogICAgIHsKLSAgICAgICAgd2Via2l0X3N1
cHBvcnQ6OlVucmVnaXN0ZXJBbGxNb2NrZWRVUkxzKCk7CisgICAgICAgIFBsYXRmb3JtOjpjdXJy
ZW50KCktPnVuaXRUZXN0U3VwcG9ydCgpLT51bnJlZ2lzdGVyQWxsTW9ja2VkVVJMcygpOwogICAg
ICAgICBtX3dlYlZpZXctPmNsb3NlKCk7CiAgICAgfQogCiAgICAgdm9pZCBzZXJ2ZVJlcXVlc3Rz
KCkKICAgICB7Ci0gICAgICAgIHdlYmtpdF9zdXBwb3J0OjpTZXJ2ZUFzeW5jaHJvbm91c01vY2tl
ZFJlcXVlc3RzKCk7CisgICAgICAgIFBsYXRmb3JtOjpjdXJyZW50KCktPnVuaXRUZXN0U3VwcG9y
dCgpLT5zZXJ2ZUFzeW5jaHJvbm91c01vY2tlZFJlcXVlc3RzKCk7CiAgICAgfQogCiAgICAgV2Vi
VVJMTG9hZGVyKiBjcmVhdGVBc3NvY2lhdGVkVVJMTG9hZGVyKGNvbnN0IFdlYlVSTExvYWRlck9w
dGlvbnMgb3B0aW9ucyA9IFdlYlVSTExvYWRlck9wdGlvbnMoKSkKQEAgLTE3Nyw3ICsxNzksNyBA
QCBwdWJsaWM6CiAgICAgICAgIEVYUEVDVF9FUShtX2V4cGVjdGVkTG9hZGVyLCBsb2FkZXIpOwog
ICAgICAgICBpZiAobV9ydW5uaW5nTWVzc2FnZUxvb3ApIHsKICAgICAgICAgICAgIG1fcnVubmlu
Z01lc3NhZ2VMb29wID0gZmFsc2U7Ci0gICAgICAgICAgICB3ZWJraXRfc3VwcG9ydDo6UXVpdE1l
c3NhZ2VMb29wKCk7CisgICAgICAgICAgICBQbGF0Zm9ybTo6Y3VycmVudCgpLT5jdXJyZW50VGhy
ZWFkKCktPmV4aXRSdW5Mb29wKCk7CiAgICAgICAgIH0KICAgICB9CiAKQEAgLTIxOCw3ICsyMjAs
NyBAQCBwdWJsaWM6CiAgICAgICAgIEVYUEVDVF9GQUxTRShtX2RpZEZhaWwpOwogICAgICAgICAv
LyBBbGxvdyB0aGUgbG9hZGVyIHRvIHJldHVybiB0aGUgZXJyb3IuCiAgICAgICAgIG1fcnVubmlu
Z01lc3NhZ2VMb29wID0gdHJ1ZTsKLSAgICAgICAgd2Via2l0X3N1cHBvcnQ6OlJ1bk1lc3NhZ2VM
b29wKCk7CisgICAgICAgIFBsYXRmb3JtOjpjdXJyZW50KCktPmN1cnJlbnRUaHJlYWQoKS0+ZW50
ZXJSdW5Mb29wKCk7CiAgICAgICAgIEVYUEVDVF9UUlVFKG1fZGlkRmFpbCk7CiAgICAgICAgIEVY
UEVDVF9GQUxTRShtX2RpZFJlY2VpdmVSZXNwb25zZSk7CiAgICAgfQpAQCAtMjQ0LDcgKzI0Niw3
IEBAIHB1YmxpYzoKICAgICAgICAgaWYgKGV4cG9zZWQpCiAgICAgICAgICAgICBtX2V4cGVjdGVk
UmVzcG9uc2UuYWRkSFRUUEhlYWRlckZpZWxkKCJhY2Nlc3MtY29udHJvbC1leHBvc2UtaGVhZGVy
cyIsIGhlYWRlck5hbWVTdHJpbmcpOwogICAgICAgICBtX2V4cGVjdGVkUmVzcG9uc2UuYWRkSFRU
UEhlYWRlckZpZWxkKGhlYWRlck5hbWVTdHJpbmcsICJmb28iKTsKLSAgICAgICAgd2Via2l0X3N1
cHBvcnQ6OlJlZ2lzdGVyTW9ja2VkVVJMKHVybCwgbV9leHBlY3RlZFJlc3BvbnNlLCBtX2ZyYW1l
RmlsZVBhdGgpOworICAgICAgICBQbGF0Zm9ybTo6Y3VycmVudCgpLT51bml0VGVzdFN1cHBvcnQo
KS0+cmVnaXN0ZXJNb2NrZWRVUkwodXJsLCBtX2V4cGVjdGVkUmVzcG9uc2UsIG1fZnJhbWVGaWxl
UGF0aCk7CiAKICAgICAgICAgV2ViVVJMTG9hZGVyT3B0aW9ucyBvcHRpb25zOwogICAgICAgICBv
cHRpb25zLmNyb3NzT3JpZ2luUmVxdWVzdFBvbGljeSA9IFdlYlVSTExvYWRlck9wdGlvbnM6OkNy
b3NzT3JpZ2luUmVxdWVzdFBvbGljeVVzZUFjY2Vzc0NvbnRyb2w7CkBAIC0yOTEsNyArMjkzLDcg
QEAgVEVTVF9GKEFzc29jaWF0ZWRVUkxMb2FkZXJUZXN0LCBTYW1lT3JpZ2luU3VjY2VzcykKICAg
ICBtX2V4cGVjdGVkUmVzcG9uc2UgPSBXZWJVUkxSZXNwb25zZSgpOwogICAgIG1fZXhwZWN0ZWRS
ZXNwb25zZS5pbml0aWFsaXplKCk7CiAgICAgbV9leHBlY3RlZFJlc3BvbnNlLnNldE1JTUVUeXBl
KCJ0ZXh0L2h0bWwiKTsKLSAgICB3ZWJraXRfc3VwcG9ydDo6UmVnaXN0ZXJNb2NrZWRVUkwodXJs
LCBtX2V4cGVjdGVkUmVzcG9uc2UsIG1fZnJhbWVGaWxlUGF0aCk7CisgICAgUGxhdGZvcm06OmN1
cnJlbnQoKS0+dW5pdFRlc3RTdXBwb3J0KCktPnJlZ2lzdGVyTW9ja2VkVVJMKHVybCwgbV9leHBl
Y3RlZFJlc3BvbnNlLCBtX2ZyYW1lRmlsZVBhdGgpOwogCiAgICAgbV9leHBlY3RlZExvYWRlciA9
IGNyZWF0ZUFzc29jaWF0ZWRVUkxMb2FkZXIoKTsKICAgICBFWFBFQ1RfVFJVRShtX2V4cGVjdGVk
TG9hZGVyKTsKQEAgLTMyNSw3ICszMjcsNyBAQCBURVNUX0YoQXNzb2NpYXRlZFVSTExvYWRlclRl
c3QsIENyb3NzT3JpZ2luU3VjY2VzcykKICAgICBtX2V4cGVjdGVkUmVzcG9uc2UgPSBXZWJVUkxS
ZXNwb25zZSgpOwogICAgIG1fZXhwZWN0ZWRSZXNwb25zZS5pbml0aWFsaXplKCk7CiAgICAgbV9l
eHBlY3RlZFJlc3BvbnNlLnNldE1JTUVUeXBlKCJ0ZXh0L2h0bWwiKTsKLSAgICB3ZWJraXRfc3Vw
cG9ydDo6UmVnaXN0ZXJNb2NrZWRVUkwodXJsLCBtX2V4cGVjdGVkUmVzcG9uc2UsIG1fZnJhbWVG
aWxlUGF0aCk7CisgICAgUGxhdGZvcm06OmN1cnJlbnQoKS0+dW5pdFRlc3RTdXBwb3J0KCktPnJl
Z2lzdGVyTW9ja2VkVVJMKHVybCwgbV9leHBlY3RlZFJlc3BvbnNlLCBtX2ZyYW1lRmlsZVBhdGgp
OwogCiAgICAgV2ViVVJMTG9hZGVyT3B0aW9ucyBvcHRpb25zOwogICAgIG9wdGlvbnMuY3Jvc3NP
cmlnaW5SZXF1ZXN0UG9saWN5ID0gV2ViVVJMTG9hZGVyT3B0aW9uczo6Q3Jvc3NPcmlnaW5SZXF1
ZXN0UG9saWN5QWxsb3c7CkBAIC0zNTEsNyArMzUzLDcgQEAgVEVTVF9GKEFzc29jaWF0ZWRVUkxM
b2FkZXJUZXN0LCBDcm9zc09yaWdpbldpdGhBY2Nlc3NDb250cm9sU3VjY2VzcykKICAgICBtX2V4
cGVjdGVkUmVzcG9uc2UuaW5pdGlhbGl6ZSgpOwogICAgIG1fZXhwZWN0ZWRSZXNwb25zZS5zZXRN
SU1FVHlwZSgidGV4dC9odG1sIik7CiAgICAgbV9leHBlY3RlZFJlc3BvbnNlLmFkZEhUVFBIZWFk
ZXJGaWVsZCgiYWNjZXNzLWNvbnRyb2wtYWxsb3ctb3JpZ2luIiwgIioiKTsKLSAgICB3ZWJraXRf
c3VwcG9ydDo6UmVnaXN0ZXJNb2NrZWRVUkwodXJsLCBtX2V4cGVjdGVkUmVzcG9uc2UsIG1fZnJh
bWVGaWxlUGF0aCk7CisgICAgUGxhdGZvcm06OmN1cnJlbnQoKS0+dW5pdFRlc3RTdXBwb3J0KCkt
PnJlZ2lzdGVyTW9ja2VkVVJMKHVybCwgbV9leHBlY3RlZFJlc3BvbnNlLCBtX2ZyYW1lRmlsZVBh
dGgpOwogCiAgICAgV2ViVVJMTG9hZGVyT3B0aW9ucyBvcHRpb25zOwogICAgIG9wdGlvbnMuY3Jv
c3NPcmlnaW5SZXF1ZXN0UG9saWN5ID0gV2ViVVJMTG9hZGVyT3B0aW9uczo6Q3Jvc3NPcmlnaW5S
ZXF1ZXN0UG9saWN5VXNlQWNjZXNzQ29udHJvbDsKQEAgLTM3Nyw3ICszNzksNyBAQCBURVNUX0Yo
QXNzb2NpYXRlZFVSTExvYWRlclRlc3QsIENyb3NzT3JpZ2luV2l0aEFjY2Vzc0NvbnRyb2xGYWls
dXJlKQogICAgIG1fZXhwZWN0ZWRSZXNwb25zZS5pbml0aWFsaXplKCk7CiAgICAgbV9leHBlY3Rl
ZFJlc3BvbnNlLnNldE1JTUVUeXBlKCJ0ZXh0L2h0bWwiKTsKICAgICBtX2V4cGVjdGVkUmVzcG9u
c2UuYWRkSFRUUEhlYWRlckZpZWxkKCJhY2Nlc3MtY29udHJvbC1hbGxvdy1vcmlnaW4iLCAiKiIp
OwotICAgIHdlYmtpdF9zdXBwb3J0OjpSZWdpc3Rlck1vY2tlZFVSTCh1cmwsIG1fZXhwZWN0ZWRS
ZXNwb25zZSwgbV9mcmFtZUZpbGVQYXRoKTsKKyAgICBQbGF0Zm9ybTo6Y3VycmVudCgpLT51bml0
VGVzdFN1cHBvcnQoKS0+cmVnaXN0ZXJNb2NrZWRVUkwodXJsLCBtX2V4cGVjdGVkUmVzcG9uc2Us
IG1fZnJhbWVGaWxlUGF0aCk7CiAKICAgICBXZWJVUkxMb2FkZXJPcHRpb25zIG9wdGlvbnM7CiAg
ICAgLy8gU2VuZCBjcmVkZW50aWFscy4gVGhpcyB3aWxsIGNhdXNlIHRoZSBDT1JTIGNoZWNrcyB0
byBmYWlsLCBiZWNhdXNlIGNyZWRlbnRpYWxzIGNhbid0IGJlCkBAIC00MTIsNyArNDE0LDcgQEAg
VEVTVF9GKEFzc29jaWF0ZWRVUkxMb2FkZXJUZXN0LCBSZWRpcmVjdFN1Y2Nlc3MpCiAgICAgbV9l
eHBlY3RlZFJlZGlyZWN0UmVzcG9uc2Uuc2V0TUlNRVR5cGUoInRleHQvaHRtbCIpOwogICAgIG1f
ZXhwZWN0ZWRSZWRpcmVjdFJlc3BvbnNlLnNldEhUVFBTdGF0dXNDb2RlKDMwMSk7CiAgICAgbV9l
eHBlY3RlZFJlZGlyZWN0UmVzcG9uc2Uuc2V0SFRUUEhlYWRlckZpZWxkKCJMb2NhdGlvbiIsIHJl
ZGlyZWN0KTsKLSAgICB3ZWJraXRfc3VwcG9ydDo6UmVnaXN0ZXJNb2NrZWRVUkwodXJsLCBtX2V4
cGVjdGVkUmVkaXJlY3RSZXNwb25zZSwgbV9mcmFtZUZpbGVQYXRoKTsKKyAgICBQbGF0Zm9ybTo6
Y3VycmVudCgpLT51bml0VGVzdFN1cHBvcnQoKS0+cmVnaXN0ZXJNb2NrZWRVUkwodXJsLCBtX2V4
cGVjdGVkUmVkaXJlY3RSZXNwb25zZSwgbV9mcmFtZUZpbGVQYXRoKTsKIAogICAgIG1fZXhwZWN0
ZWROZXdSZXF1ZXN0ID0gV2ViVVJMUmVxdWVzdCgpOwogICAgIG1fZXhwZWN0ZWROZXdSZXF1ZXN0
LmluaXRpYWxpemUoKTsKQEAgLTQyMSw3ICs0MjMsNyBAQCBURVNUX0YoQXNzb2NpYXRlZFVSTExv
YWRlclRlc3QsIFJlZGlyZWN0U3VjY2VzcykKICAgICBtX2V4cGVjdGVkUmVzcG9uc2UgPSBXZWJV
UkxSZXNwb25zZSgpOwogICAgIG1fZXhwZWN0ZWRSZXNwb25zZS5pbml0aWFsaXplKCk7CiAgICAg
bV9leHBlY3RlZFJlc3BvbnNlLnNldE1JTUVUeXBlKCJ0ZXh0L2h0bWwiKTsKLSAgICB3ZWJraXRf
c3VwcG9ydDo6UmVnaXN0ZXJNb2NrZWRVUkwocmVkaXJlY3RVUkwsIG1fZXhwZWN0ZWRSZXNwb25z
ZSwgbV9mcmFtZUZpbGVQYXRoKTsKKyAgICBQbGF0Zm9ybTo6Y3VycmVudCgpLT51bml0VGVzdFN1
cHBvcnQoKS0+cmVnaXN0ZXJNb2NrZWRVUkwocmVkaXJlY3RVUkwsIG1fZXhwZWN0ZWRSZXNwb25z
ZSwgbV9mcmFtZUZpbGVQYXRoKTsKIAogICAgIG1fZXhwZWN0ZWRMb2FkZXIgPSBjcmVhdGVBc3Nv
Y2lhdGVkVVJMTG9hZGVyKCk7CiAgICAgRVhQRUNUX1RSVUUobV9leHBlY3RlZExvYWRlcik7CkBA
IC00NTAsNyArNDUyLDcgQEAgVEVTVF9GKEFzc29jaWF0ZWRVUkxMb2FkZXJUZXN0LCBSZWRpcmVj
dENyb3NzT3JpZ2luV2l0aEFjY2Vzc0NvbnRyb2xGYWlsdXJlKQogICAgIG1fZXhwZWN0ZWRSZWRp
cmVjdFJlc3BvbnNlLnNldE1JTUVUeXBlKCJ0ZXh0L2h0bWwiKTsKICAgICBtX2V4cGVjdGVkUmVk
aXJlY3RSZXNwb25zZS5zZXRIVFRQU3RhdHVzQ29kZSgzMDEpOwogICAgIG1fZXhwZWN0ZWRSZWRp
cmVjdFJlc3BvbnNlLnNldEhUVFBIZWFkZXJGaWVsZCgiTG9jYXRpb24iLCByZWRpcmVjdCk7Ci0g
ICAgd2Via2l0X3N1cHBvcnQ6OlJlZ2lzdGVyTW9ja2VkVVJMKHVybCwgbV9leHBlY3RlZFJlZGly
ZWN0UmVzcG9uc2UsIG1fZnJhbWVGaWxlUGF0aCk7CisgICAgUGxhdGZvcm06OmN1cnJlbnQoKS0+
dW5pdFRlc3RTdXBwb3J0KCktPnJlZ2lzdGVyTW9ja2VkVVJMKHVybCwgbV9leHBlY3RlZFJlZGly
ZWN0UmVzcG9uc2UsIG1fZnJhbWVGaWxlUGF0aCk7CiAKICAgICBXZWJVUkxMb2FkZXJPcHRpb25z
IG9wdGlvbnM7CiAgICAgb3B0aW9ucy5jcm9zc09yaWdpblJlcXVlc3RQb2xpY3kgPSBXZWJVUkxM
b2FkZXJPcHRpb25zOjpDcm9zc09yaWdpblJlcXVlc3RQb2xpY3lVc2VBY2Nlc3NDb250cm9sOwpA
QCAtNDgzLDcgKzQ4NSw3IEBAIFRFU1RfRihBc3NvY2lhdGVkVVJMTG9hZGVyVGVzdCwgUmVkaXJl
Y3RDcm9zc09yaWdpbldpdGhBY2Nlc3NDb250cm9sU3VjY2VzcykKICAgICBtX2V4cGVjdGVkUmVk
aXJlY3RSZXNwb25zZS5zZXRIVFRQU3RhdHVzQ29kZSgzMDEpOwogICAgIG1fZXhwZWN0ZWRSZWRp
cmVjdFJlc3BvbnNlLnNldEhUVFBIZWFkZXJGaWVsZCgiTG9jYXRpb24iLCByZWRpcmVjdCk7CiAg
ICAgbV9leHBlY3RlZFJlZGlyZWN0UmVzcG9uc2UuYWRkSFRUUEhlYWRlckZpZWxkKCJhY2Nlc3Mt
Y29udHJvbC1hbGxvdy1vcmlnaW4iLCAiKiIpOwotICAgIHdlYmtpdF9zdXBwb3J0OjpSZWdpc3Rl
ck1vY2tlZFVSTCh1cmwsIG1fZXhwZWN0ZWRSZWRpcmVjdFJlc3BvbnNlLCBtX2ZyYW1lRmlsZVBh
dGgpOworICAgIFBsYXRmb3JtOjpjdXJyZW50KCktPnVuaXRUZXN0U3VwcG9ydCgpLT5yZWdpc3Rl
ck1vY2tlZFVSTCh1cmwsIG1fZXhwZWN0ZWRSZWRpcmVjdFJlc3BvbnNlLCBtX2ZyYW1lRmlsZVBh
dGgpOwogCiAgICAgbV9leHBlY3RlZE5ld1JlcXVlc3QgPSBXZWJVUkxSZXF1ZXN0KCk7CiAgICAg
bV9leHBlY3RlZE5ld1JlcXVlc3QuaW5pdGlhbGl6ZSgpOwpAQCAtNDkzLDcgKzQ5NSw3IEBAIFRF
U1RfRihBc3NvY2lhdGVkVVJMTG9hZGVyVGVzdCwgUmVkaXJlY3RDcm9zc09yaWdpbldpdGhBY2Nl
c3NDb250cm9sU3VjY2VzcykKICAgICBtX2V4cGVjdGVkUmVzcG9uc2UuaW5pdGlhbGl6ZSgpOwog
ICAgIG1fZXhwZWN0ZWRSZXNwb25zZS5zZXRNSU1FVHlwZSgidGV4dC9odG1sIik7CiAgICAgbV9l
eHBlY3RlZFJlc3BvbnNlLmFkZEhUVFBIZWFkZXJGaWVsZCgiYWNjZXNzLWNvbnRyb2wtYWxsb3ct
b3JpZ2luIiwgIioiKTsKLSAgICB3ZWJraXRfc3VwcG9ydDo6UmVnaXN0ZXJNb2NrZWRVUkwocmVk
aXJlY3RVUkwsIG1fZXhwZWN0ZWRSZXNwb25zZSwgbV9mcmFtZUZpbGVQYXRoKTsKKyAgICBQbGF0
Zm9ybTo6Y3VycmVudCgpLT51bml0VGVzdFN1cHBvcnQoKS0+cmVnaXN0ZXJNb2NrZWRVUkwocmVk
aXJlY3RVUkwsIG1fZXhwZWN0ZWRSZXNwb25zZSwgbV9mcmFtZUZpbGVQYXRoKTsKIAogICAgIFdl
YlVSTExvYWRlck9wdGlvbnMgb3B0aW9uczsKICAgICBvcHRpb25zLmNyb3NzT3JpZ2luUmVxdWVz
dFBvbGljeSA9IFdlYlVSTExvYWRlck9wdGlvbnM6OkNyb3NzT3JpZ2luUmVxdWVzdFBvbGljeVVz
ZUFjY2Vzc0NvbnRyb2w7CkBAIC02MDAsNyArNjAyLDcgQEAgVEVTVF9GKEFzc29jaWF0ZWRVUkxM
b2FkZXJUZXN0LCBDcm9zc09yaWdpbkhlYWRlckFsbG93UmVzcG9uc2VIZWFkZXJzKQogICAgIG1f
ZXhwZWN0ZWRSZXNwb25zZS5zZXRNSU1FVHlwZSgidGV4dC9odG1sIik7CiAgICAgbV9leHBlY3Rl
ZFJlc3BvbnNlLmFkZEhUVFBIZWFkZXJGaWVsZCgiQWNjZXNzLUNvbnRyb2wtQWxsb3ctT3JpZ2lu
IiwgIioiKTsKICAgICBtX2V4cGVjdGVkUmVzcG9uc2UuYWRkSFRUUEhlYWRlckZpZWxkKGhlYWRl
ck5hbWVTdHJpbmcsICJmb28iKTsKLSAgICB3ZWJraXRfc3VwcG9ydDo6UmVnaXN0ZXJNb2NrZWRV
UkwodXJsLCBtX2V4cGVjdGVkUmVzcG9uc2UsIG1fZnJhbWVGaWxlUGF0aCk7CisgICAgUGxhdGZv
cm06OmN1cnJlbnQoKS0+dW5pdFRlc3RTdXBwb3J0KCktPnJlZ2lzdGVyTW9ja2VkVVJMKHVybCwg
bV9leHBlY3RlZFJlc3BvbnNlLCBtX2ZyYW1lRmlsZVBhdGgpOwogCiAgICAgV2ViVVJMTG9hZGVy
T3B0aW9ucyBvcHRpb25zOwogICAgIG9wdGlvbnMuZXhwb3NlQWxsUmVzcG9uc2VIZWFkZXJzID0g
dHJ1ZTsgLy8gVGhpcyB0dXJucyBvZmYgcmVzcG9uc2Ugd2hpdGVsaXN0aW5nLgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9FdmVudExpc3RlbmVyVGVzdC5jcHAgYi9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0V2ZW50TGlzdGVuZXJUZXN0LmNwcAppbmRleCA0
MjU1NDY5NTI1MWViYzA3ZjFlYzJiY2ZiNjJjYzY1NmI2YzI5N2Q1Li42Mjk1NDBmNWZjZWEyODIz
YjQ0M2IxYzNlN2I1ZjM5YmI2ZDg4M2E5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3Rlc3RzL0V2ZW50TGlzdGVuZXJUZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3Rlc3RzL0V2ZW50TGlzdGVuZXJUZXN0LmNwcApAQCAtNDEsNyArNDEsOCBAQAogI2luY2x1
ZGUgIldlYlNjcmlwdFNvdXJjZS5oIgogI2luY2x1ZGUgIldlYlZpZXcuaCIKICNpbmNsdWRlIDxn
dGVzdC9ndGVzdC5oPgotI2luY2x1ZGUgPHdlYmtpdC9zdXBwb3J0L3dlYmtpdF9zdXBwb3J0Lmg+
CisjaW5jbHVkZSA8cHVibGljL1BsYXRmb3JtLmg+CisjaW5jbHVkZSA8cHVibGljL1dlYlVuaXRU
ZXN0U3VwcG9ydC5oPgogCiB1c2luZyBuYW1lc3BhY2UgV2ViS2l0OwogCkBAIC04Niw3ICs4Nyw3
IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgVGVhckRvd24oKSBPVkVSUklERQogICAgIHsK
ICAgICAgICAgbV93ZWJWaWV3LT5jbG9zZSgpOwotICAgICAgICB3ZWJraXRfc3VwcG9ydDo6VW5y
ZWdpc3RlckFsbE1vY2tlZFVSTHMoKTsKKyAgICAgICAgUGxhdGZvcm06OmN1cnJlbnQoKS0+dW5p
dFRlc3RTdXBwb3J0KCktPnVucmVnaXN0ZXJBbGxNb2NrZWRVUkxzKCk7CiAgICAgfQogCiAgICAg
V2ViRnJhbWUqIG1haW5GcmFtZSgpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL3Rlc3RzL0ZyYW1lVGVzdEhlbHBlcnMuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1
bS90ZXN0cy9GcmFtZVRlc3RIZWxwZXJzLmNwcAppbmRleCA4NmNjNTY0Nzc5ZWU3MzE4OTljMzVm
NzU2NmE0YTEwOTYyNGYzY2EwLi42MjM4MDY4Yjg0ZTA2NjIzODM5OTVlN2YyMjg4MzBlNWViZDhm
MmI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0ZyYW1lVGVzdEhl
bHBlcnMuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvRnJhbWVUZXN0SGVs
cGVycy5jcHAKQEAgLTM4LDEwICszOCwxMiBAQAogI2luY2x1ZGUgIldlYlNldHRpbmdzLmgiCiAj
aW5jbHVkZSAiV2ViVmlldy5oIgogI2luY2x1ZGUgIldlYlZpZXdDbGllbnQuaCIKKyNpbmNsdWRl
IDxwdWJsaWMvUGxhdGZvcm0uaD4KICNpbmNsdWRlIDxwdWJsaWMvV2ViU3RyaW5nLmg+CisjaW5j
bHVkZSA8cHVibGljL1dlYlRocmVhZC5oPgogI2luY2x1ZGUgPHB1YmxpYy9XZWJVUkxSZXF1ZXN0
Lmg+CiAjaW5jbHVkZSA8cHVibGljL1dlYlVSTFJlc3BvbnNlLmg+Ci0jaW5jbHVkZSA8d2Via2l0
L3N1cHBvcnQvd2Via2l0X3N1cHBvcnQuaD4KKyNpbmNsdWRlIDxwdWJsaWMvV2ViVW5pdFRlc3RT
dXBwb3J0Lmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogbmFtZXNwYWNlIEZyYW1lVGVzdEhlbHBl
cnMgewpAQCAtOTEsMTAgKzkzLDI0IEBAIFdlYlZpZXcqIGNyZWF0ZVdlYlZpZXdBbmRMb2FkKGNv
bnN0IHN0ZDo6c3RyaW5nJiB1cmwsIGJvb2wgZW5hYmxlSmF2YXNjcmlwdCwgV2ViCiAgICAgV2Vi
Vmlldyogd2ViVmlldyA9IGNyZWF0ZVdlYlZpZXcoZW5hYmxlSmF2YXNjcmlwdCwgd2ViRnJhbWVD
bGllbnQsIHdlYlZpZXdDbGllbnQpOwogCiAgICAgbG9hZEZyYW1lKHdlYlZpZXctPm1haW5GcmFt
ZSgpLCB1cmwpOwotICAgIHdlYmtpdF9zdXBwb3J0OjpTZXJ2ZUFzeW5jaHJvbm91c01vY2tlZFJl
cXVlc3RzKCk7CisgICAgUGxhdGZvcm06OmN1cnJlbnQoKS0+dW5pdFRlc3RTdXBwb3J0KCktPnNl
cnZlQXN5bmNocm9ub3VzTW9ja2VkUmVxdWVzdHMoKTsKIAogICAgIHJldHVybiB3ZWJWaWV3Owog
fQogCitjbGFzcyBRdWl0VGFzayA6IHB1YmxpYyBXZWJUaHJlYWQ6OlRhc2sgeworcHVibGljOgor
ICAgIHZpcnR1YWwgdm9pZCBydW4oKQorICAgIHsKKyAgICAgICAgUGxhdGZvcm06OmN1cnJlbnQo
KS0+Y3VycmVudFRocmVhZCgpLT5leGl0UnVuTG9vcCgpOworICAgIH0KK307CisKK3ZvaWQgcnVu
UGVuZGluZ1Rhc2tzKCkKK3sKKyAgICBQbGF0Zm9ybTo6Y3VycmVudCgpLT5jdXJyZW50VGhyZWFk
KCktPnBvc3RUYXNrKG5ldyBRdWl0VGFzayk7CisgICAgUGxhdGZvcm06OmN1cnJlbnQoKS0+Y3Vy
cmVudFRocmVhZCgpLT5lbnRlclJ1bkxvb3AoKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgRnJhbWVU
ZXN0SGVscGVycwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3Rlc3RzL0ZyYW1lVGVzdEhlbHBlcnMuaCBiL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vdGVzdHMvRnJhbWVUZXN0SGVscGVycy5oCmluZGV4IDA2MWVkOTZmZDBiNGZmMTk0NzRj
ZDRkMTE2OGFlNDE1NjQxMTNiZWYuLjdjNThmOTkzZTUwMWMwM2E1M2Y0YmY1ZWRiNjUwOGEzMTg2
OGZlMGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvRnJhbWVUZXN0
SGVscGVycy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvRnJhbWVUZXN0SGVs
cGVycy5oCkBAIC00Nyw2ICs0Nyw4IEBAIHZvaWQgbG9hZEZyYW1lKFdlYkZyYW1lKiwgY29uc3Qg
c3RkOjpzdHJpbmcmIHVybCk7CiBXZWJWaWV3KiBjcmVhdGVXZWJWaWV3KGJvb2wgZW5hYmxlSmF2
YXNjcmlwdCA9IGZhbHNlLCBXZWJGcmFtZUNsaWVudCogPSAwLCBXZWJWaWV3Q2xpZW50KiA9IDAp
OwogV2ViVmlldyogY3JlYXRlV2ViVmlld0FuZExvYWQoY29uc3Qgc3RkOjpzdHJpbmcmIHVybCwg
Ym9vbCBlbmFibGVKYXZhc2NyaXB0ID0gZmFsc2UsIFdlYkZyYW1lQ2xpZW50KiA9IDAsIFdlYlZp
ZXdDbGllbnQqID0gMCk7CiAKK3ZvaWQgcnVuUGVuZGluZ1Rhc2tzKCk7CisKIH0gLy8gbmFtZXNw
YWNlIEZyYW1lVGVzdEhlbHBlcnMKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0xpc3RlbmVyTGVha1Rlc3QuY3BwIGIvU291
cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9MaXN0ZW5lckxlYWtUZXN0LmNwcAppbmRleCBiMGY3
MDBhMGNiNWQyY2M3YTQ0OWRhNTcwNGUxNDEyODExNTY4N2VmLi4xNWFmYzJmOWVkNThkNzAwZjM1
NDg3NmMzZDQ5NDMxOWQwY2JhNGRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3Rlc3RzL0xpc3RlbmVyTGVha1Rlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
dGVzdHMvTGlzdGVuZXJMZWFrVGVzdC5jcHAKQEAgLTM0LDkgKzM0LDEwIEBACiAjaW5jbHVkZSAi
VVJMVGVzdEhlbHBlcnMuaCIKICNpbmNsdWRlICJXZWJWaWV3LmgiCiAjaW5jbHVkZSA8Z3Rlc3Qv
Z3Rlc3QuaD4KKyNpbmNsdWRlIDxwdWJsaWMvUGxhdGZvcm0uaD4KKyNpbmNsdWRlIDxwdWJsaWMv
V2ViVW5pdFRlc3RTdXBwb3J0Lmg+CiAjaW5jbHVkZSA8djgvaW5jbHVkZS92OC1wcm9maWxlci5o
PgogI2luY2x1ZGUgPHY4L2luY2x1ZGUvdjguaD4KLSNpbmNsdWRlIDx3ZWJraXQvc3VwcG9ydC93
ZWJraXRfc3VwcG9ydC5oPgogCiB1c2luZyBuYW1lc3BhY2UgV2ViS2l0OwogCkBAIC05OSw3ICsx
MDAsNyBAQCBwdWJsaWM6CiAgICAgewogICAgICAgICBpZiAobV93ZWJWaWV3KQogICAgICAgICAg
ICAgbV93ZWJWaWV3LT5jbG9zZSgpOwotICAgICAgICB3ZWJraXRfc3VwcG9ydDo6VW5yZWdpc3Rl
ckFsbE1vY2tlZFVSTHMoKTsKKyAgICAgICAgUGxhdGZvcm06OmN1cnJlbnQoKS0+dW5pdFRlc3RT
dXBwb3J0KCktPnVucmVnaXN0ZXJBbGxNb2NrZWRVUkxzKCk7CiAgICAgfQogCiBwcm90ZWN0ZWQ6
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL1BvcHVwTWVudVRlc3Qu
Y3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9Qb3B1cE1lbnVUZXN0LmNwcAppbmRl
eCA2MzU0MmY4NjNjODZmZTg1MjgwNDE4NzkyZDY2YTUwNWI5MmNjZTYwLi42NjIyMzJiYWFhZTIy
YWNlOTMzODcwOTgxMzZjM2EwNTJhOTZmY2E5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL3Rlc3RzL1BvcHVwTWVudVRlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vdGVzdHMvUG9wdXBNZW51VGVzdC5jcHAKQEAgLTMwLDkgKzMwLDYgQEAKIAogI2luY2x1ZGUg
ImNvbmZpZy5oIgogCi0jaW5jbHVkZSA8Z3Rlc3QvZ3Rlc3QuaD4KLSNpbmNsdWRlIDx3ZWJraXQv
c3VwcG9ydC93ZWJraXRfc3VwcG9ydC5oPgotCiAjaW5jbHVkZSAiQ29sb3IuaCIKICNpbmNsdWRl
ICJFbGVtZW50LmgiCiAjaW5jbHVkZSAiRnJhbWVWaWV3LmgiCkBAIC00MCw4ICszNyw4IEBACiAj
aW5jbHVkZSAiS2V5Ym9hcmRDb2Rlcy5oIgogI2luY2x1ZGUgIlBvcHVwQ29udGFpbmVyLmgiCiAj
aW5jbHVkZSAiUG9wdXBNZW51LmgiCi0jaW5jbHVkZSAiUG9wdXBNZW51Q2xpZW50LmgiCiAjaW5j
bHVkZSAiUG9wdXBNZW51Q2hyb21pdW0uaCIKKyNpbmNsdWRlICJQb3B1cE1lbnVDbGllbnQuaCIK
ICNpbmNsdWRlICJSdW50aW1lRW5hYmxlZEZlYXR1cmVzLmgiCiAjaW5jbHVkZSAiVVJMVGVzdEhl
bHBlcnMuaCIKICNpbmNsdWRlICJXZWJEb2N1bWVudC5oIgpAQCAtNTcsMTAgKzU0LDEzIEBACiAj
aW5jbHVkZSAiV2ViVmlld0NsaWVudC5oIgogI2luY2x1ZGUgIldlYlZpZXdJbXBsLmgiCiAjaW5j
bHVkZSAidjguaCIKKyNpbmNsdWRlIDxndGVzdC9ndGVzdC5oPgorI2luY2x1ZGUgPHB1YmxpYy9Q
bGF0Zm9ybS5oPgogI2luY2x1ZGUgPHB1YmxpYy9XZWJTdHJpbmcuaD4KICNpbmNsdWRlIDxwdWJs
aWMvV2ViVVJMLmg+CiAjaW5jbHVkZSA8cHVibGljL1dlYlVSTFJlcXVlc3QuaD4KICNpbmNsdWRl
IDxwdWJsaWMvV2ViVVJMUmVzcG9uc2UuaD4KKyNpbmNsdWRlIDxwdWJsaWMvV2ViVW5pdFRlc3RT
dXBwb3J0Lmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogdXNpbmcgbmFtZXNwYWNlIFdl
YktpdDsKQEAgLTE5Myw3ICsxOTMsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgewogICAgICAgICBtX3Bv
cHVwTWVudSA9IDA7CiAgICAgICAgIG1fd2ViVmlldy0+Y2xvc2UoKTsKLSAgICAgICAgd2Via2l0
X3N1cHBvcnQ6OlVucmVnaXN0ZXJBbGxNb2NrZWRVUkxzKCk7CisgICAgICAgIFBsYXRmb3JtOjpj
dXJyZW50KCktPnVuaXRUZXN0U3VwcG9ydCgpLT51bnJlZ2lzdGVyQWxsTW9ja2VkVVJMcygpOwog
ICAgIH0KIAogICAgIC8vIFJldHVybnMgdHJ1ZSBpZiB0aGVyZSBjdXJyZW50bHkgaXMgYSBzZWxl
Y3QgcG9wdXAgaW4gdGhlIFdlYlZpZXcuCkBAIC0yNTYsNyArMjU2LDcgQEAgcHJvdGVjdGVkOgog
CiAgICAgdm9pZCBzZXJ2ZVJlcXVlc3RzKCkKICAgICB7Ci0gICAgICAgIHdlYmtpdF9zdXBwb3J0
OjpTZXJ2ZUFzeW5jaHJvbm91c01vY2tlZFJlcXVlc3RzKCk7CisgICAgICAgIFBsYXRmb3JtOjpj
dXJyZW50KCktPnVuaXRUZXN0U3VwcG9ydCgpLT5zZXJ2ZUFzeW5jaHJvbm91c01vY2tlZFJlcXVl
c3RzKCk7CiAgICAgfQogCiAgICAgdm9pZCBsb2FkRnJhbWUoV2ViRnJhbWUqIGZyYW1lLCBjb25z
dCBzdGQ6OnN0cmluZyYgZmlsZU5hbWUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3Rlc3RzL1ByZXJlbmRlcmluZ1Rlc3QuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90
ZXN0cy9QcmVyZW5kZXJpbmdUZXN0LmNwcAppbmRleCBmOWU2MDI1N2E2NTcwM2E4ZGYwNzE5YjUy
OTJiNDYzMjVlZjQ5NTRhLi4zNWYxZWU2ZDgwMjFlZGRiYjM2MzY5ZDVhODY1OWJhNTZhYmM1OTIw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL1ByZXJlbmRlcmluZ1Rl
c3QuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvUHJlcmVuZGVyaW5nVGVz
dC5jcHAKQEAgLTQ1LDEwICs0NSwxMSBAQAogCiAjaW5jbHVkZSA8Z3Rlc3QvZ3Rlc3QuaD4KICNp
bmNsdWRlIDxsaXN0PgorI2luY2x1ZGUgPHB1YmxpYy9QbGF0Zm9ybS5oPgogI2luY2x1ZGUgPHB1
YmxpYy9XZWJQcmVyZW5kZXIuaD4KICNpbmNsdWRlIDxwdWJsaWMvV2ViUHJlcmVuZGVyaW5nU3Vw
cG9ydC5oPgogI2luY2x1ZGUgPHB1YmxpYy9XZWJTdHJpbmcuaD4KLSNpbmNsdWRlIDx3ZWJraXQv
c3VwcG9ydC93ZWJraXRfc3VwcG9ydC5oPgorI2luY2x1ZGUgPHB1YmxpYy9XZWJVbml0VGVzdFN1
cHBvcnQuaD4KICNpbmNsdWRlIDx3dGYvT3duUHRyLmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJL
aXQ7CkBAIC0xODEsNyArMTgyLDcgQEAgcHVibGljOgogCiAgICAgflByZXJlbmRlcmluZ1Rlc3Qo
KQogICAgIHsKLSAgICAgICAgd2Via2l0X3N1cHBvcnQ6OlVucmVnaXN0ZXJBbGxNb2NrZWRVUkxz
KCk7CisgICAgICAgIFBsYXRmb3JtOjpjdXJyZW50KCktPnVuaXRUZXN0U3VwcG9ydCgpLT51bnJl
Z2lzdGVyQWxsTW9ja2VkVVJMcygpOwogICAgICAgICBpZiAobV93ZWJWaWV3KQogICAgICAgICAg
ICAgY2xvc2UoKTsKICAgICB9CkBAIC0xOTUsMTMgKzE5NiwxMiBAQCBwdWJsaWM6CiAgICAgICAg
IG1fd2ViVmlldy0+c2V0UHJlcmVuZGVyZXJDbGllbnQoJm1fcHJlcmVuZGVyZXJDbGllbnQpOwog
CiAgICAgICAgIEZyYW1lVGVzdEhlbHBlcnM6OmxvYWRGcmFtZShtX3dlYlZpZXctPm1haW5GcmFt
ZSgpLCBzdGQ6OnN0cmluZyhiYXNlVVJMKSArIGZpbGVOYW1lKTsKLSAgICAgICAgd2Via2l0X3N1
cHBvcnQ6OlNlcnZlQXN5bmNocm9ub3VzTW9ja2VkUmVxdWVzdHMoKTsKKyAgICAgICAgUGxhdGZv
cm06OmN1cnJlbnQoKS0+dW5pdFRlc3RTdXBwb3J0KCktPnNlcnZlQXN5bmNocm9ub3VzTW9ja2Vk
UmVxdWVzdHMoKTsKICAgICB9CiAKICAgICB2b2lkIG5hdmlnYXRlQXdheSgpCiAgICAgewogICAg
ICAgICBGcmFtZVRlc3RIZWxwZXJzOjpsb2FkRnJhbWUobV93ZWJWaWV3LT5tYWluRnJhbWUoKSwg
ImFib3V0OmJsYW5rIik7Ci0gICAgICAgIC8vICAgICAgICB3ZWJraXRfc3VwcG9ydDo6UnVuQWxs
UGVuZGluZ01lc3NhZ2VzKCk7CiAgICAgfQogCiAgICAgdm9pZCBjbG9zZSgpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL1Njcm9sbGluZ0Nvb3JkaW5hdG9yQ2hyb21p
dW1UZXN0LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvU2Nyb2xsaW5nQ29vcmRp
bmF0b3JDaHJvbWl1bVRlc3QuY3BwCmluZGV4IDBkNzg1OTAxNDMzZDE5NTJmYzc3MzBlNzJiNGNk
ZmY4MWExMTdiMjAuLmJjNjkxNGZlYjJjZTc2ZGFmNDI1NzY5ZjRjOWFjYzExN2U2Mzg0NTggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvU2Nyb2xsaW5nQ29vcmRpbmF0
b3JDaHJvbWl1bVRlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvU2Ny
b2xsaW5nQ29vcmRpbmF0b3JDaHJvbWl1bVRlc3QuY3BwCkBAIC0yOCw2ICsyOCw3IEBACiAKICNp
bmNsdWRlICJDb21wb3NpdG9yRmFrZVdlYkdyYXBoaWNzQ29udGV4dDNELmgiCiAjaW5jbHVkZSAi
RnJhbWVUZXN0SGVscGVycy5oIgorI2luY2x1ZGUgIkdyYXBoaWNzTGF5ZXJDaHJvbWl1bS5oIgog
I2luY2x1ZGUgIlJlbmRlckxheWVyQmFja2luZy5oIgogI2luY2x1ZGUgIlJlbmRlckxheWVyQ29t
cG9zaXRvci5oIgogI2luY2x1ZGUgIlJlbmRlclZpZXcuaCIKQEAgLTM5LDExICs0MCwxMCBAQAog
I2luY2x1ZGUgIldlYlZpZXdDbGllbnQuaCIKICNpbmNsdWRlICJXZWJWaWV3SW1wbC5oIgogI2lu
Y2x1ZGUgPGd0ZXN0L2d0ZXN0Lmg+CisjaW5jbHVkZSA8cHVibGljL1BsYXRmb3JtLmg+CiAjaW5j
bHVkZSA8cHVibGljL1dlYkNvbXBvc2l0b3JTdXBwb3J0Lmg+CiAjaW5jbHVkZSA8cHVibGljL1dl
YkxheWVyLmg+Ci0jaW5jbHVkZSA8d2Via2l0L3N1cHBvcnQvd2Via2l0X3N1cHBvcnQuaD4KLQot
I2luY2x1ZGUgIkdyYXBoaWNzTGF5ZXJDaHJvbWl1bS5oIgorI2luY2x1ZGUgPHB1YmxpYy9XZWJV
bml0VGVzdFN1cHBvcnQuaD4KIAogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiB1c2luZyBuYW1l
c3BhY2UgV2ViS2l0OwpAQCAtOTcsNyArOTcsNyBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIH5T
Y3JvbGxpbmdDb29yZGluYXRvckNocm9taXVtVGVzdCgpCiAgICAgewotICAgICAgICB3ZWJraXRf
c3VwcG9ydDo6VW5yZWdpc3RlckFsbE1vY2tlZFVSTHMoKTsKKyAgICAgICAgUGxhdGZvcm06OmN1
cnJlbnQoKS0+dW5pdFRlc3RTdXBwb3J0KCktPnVucmVnaXN0ZXJBbGxNb2NrZWRVUkxzKCk7CiAg
ICAgICAgIG1fd2ViVmlld0ltcGwtPmNsb3NlKCk7CiAKICAgICAgICAgUGxhdGZvcm06OmN1cnJl
bnQoKS0+Y29tcG9zaXRvclN1cHBvcnQoKS0+c2h1dGRvd24oKTsKQEAgLTEwNiw3ICsxMDYsNyBA
QCBwdWJsaWM6CiAgICAgdm9pZCBuYXZpZ2F0ZVRvKGNvbnN0IHN0ZDo6c3RyaW5nJiB1cmwpCiAg
ICAgewogICAgICAgICBGcmFtZVRlc3RIZWxwZXJzOjpsb2FkRnJhbWUobV93ZWJWaWV3SW1wbC0+
bWFpbkZyYW1lKCksIHVybCk7Ci0gICAgICAgIHdlYmtpdF9zdXBwb3J0OjpTZXJ2ZUFzeW5jaHJv
bm91c01vY2tlZFJlcXVlc3RzKCk7CisgICAgICAgIFBsYXRmb3JtOjpjdXJyZW50KCktPnVuaXRU
ZXN0U3VwcG9ydCgpLT5zZXJ2ZUFzeW5jaHJvbm91c01vY2tlZFJlcXVlc3RzKCk7CiAgICAgfQog
CiAgICAgdm9pZCByZWdpc3Rlck1vY2tlZEh0dHBVUkxMb2FkKGNvbnN0IHN0ZDo6c3RyaW5nJiBm
aWxlTmFtZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvVVJMVGVz
dEhlbHBlcnMuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9VUkxUZXN0SGVscGVy
cy5jcHAKaW5kZXggMmEwMDY2ZmQ4ZmI3NzFhMGQ4MzcyZjM5NTAwZDA1NmYzMzVjMWRmMi4uZDIz
Yjk5NGI0MmM0YWM3ODIwOTZkNDRlZGU3YTRjZDA3NDZkYjgyOSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9jaHJvbWl1bS90ZXN0cy9VUkxUZXN0SGVscGVycy5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9jaHJvbWl1bS90ZXN0cy9VUkxUZXN0SGVscGVycy5jcHAKQEAgLTMxLDEwICszMSwxMSBA
QAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIlVSTFRlc3RIZWxwZXJzLmgiCiAKKyNp
bmNsdWRlIDxwdWJsaWMvUGxhdGZvcm0uaD4KICNpbmNsdWRlIDxwdWJsaWMvV2ViU3RyaW5nLmg+
CiAjaW5jbHVkZSA8cHVibGljL1dlYlVSTC5oPgogI2luY2x1ZGUgPHB1YmxpYy9XZWJVUkxSZXNw
b25zZS5oPgotI2luY2x1ZGUgPHdlYmtpdC9zdXBwb3J0L3dlYmtpdF9zdXBwb3J0Lmg+CisjaW5j
bHVkZSA8cHVibGljL1dlYlVuaXRUZXN0U3VwcG9ydC5oPgogCiBuYW1lc3BhY2UgV2ViS2l0IHsK
IG5hbWVzcGFjZSBVUkxUZXN0SGVscGVycyB7CkBAIC01OSwxMiArNjAsMTIgQEAgdm9pZCByZWdp
c3Rlck1vY2tlZFVSTExvYWQoY29uc3QgV2ViVVJMJiBmdWxsVVJMLCBjb25zdCBXZWJTdHJpbmcm
IGZpbGVOYW1lLCBjb24KICAgICByZXNwb25zZS5zZXRIVFRQU3RhdHVzQ29kZSgyMDApOwogCiAg
ICAgLy8gUGh5c2ljYWwgZmlsZSBwYXRoIGZvciB0aGUgbW9jayA9IDx3ZWJraXRSb290RGlyPiAr
IHJlbGF0aXZlQmFzZURpcmVjdG9yeSArIGZpbGVOYW1lLgotICAgIHN0ZDo6c3RyaW5nIGZpbGVQ
YXRoID0gc3RkOjpzdHJpbmcod2Via2l0X3N1cHBvcnQ6OkdldFdlYktpdFJvb3REaXIoKS51dGY4
KCkuZGF0YSgpKTsKKyAgICBzdGQ6OnN0cmluZyBmaWxlUGF0aCA9IHN0ZDo6c3RyaW5nKFBsYXRm
b3JtOjpjdXJyZW50KCktPnVuaXRUZXN0U3VwcG9ydCgpLT53ZWJLaXRSb290RGlyKCkudXRmOCgp
LmRhdGEoKSk7CiAgICAgZmlsZVBhdGguYXBwZW5kKCIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90
ZXN0cy9kYXRhLyIpOwogICAgIGZpbGVQYXRoLmFwcGVuZChzdGQ6OnN0cmluZyhyZWxhdGl2ZUJh
c2VEaXJlY3RvcnkudXRmOCgpLmRhdGEoKSkpOwogICAgIGZpbGVQYXRoLmFwcGVuZChzdGQ6OnN0
cmluZyhmaWxlTmFtZS51dGY4KCkuZGF0YSgpKSk7CiAKLSAgICB3ZWJraXRfc3VwcG9ydDo6UmVn
aXN0ZXJNb2NrZWRVUkwoZnVsbFVSTCwgcmVzcG9uc2UsIFdlYlN0cmluZzo6ZnJvbVVURjgoZmls
ZVBhdGguY19zdHIoKSkpOworICAgIFBsYXRmb3JtOjpjdXJyZW50KCktPnVuaXRUZXN0U3VwcG9y
dCgpLT5yZWdpc3Rlck1vY2tlZFVSTChmdWxsVVJMLCByZXNwb25zZSwgV2ViU3RyaW5nOjpmcm9t
VVRGOChmaWxlUGF0aC5jX3N0cigpKSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFVSTFRlc3RIZWxw
ZXJzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL1dlYkZyYW1lVGVz
dC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL1dlYkZyYW1lVGVzdC5jcHAKaW5k
ZXggMmJiMzUyYjlkZmU4YzgyNmE3NzE5OTgwMTM5ZmI1MGIxYzExODcxMi4uMTlhNzAzNWUwMjI3
ZmIwZDUyMmM3NDQ2ZDIzNGZjNGMyNGNjZGVhOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9j
aHJvbWl1bS90ZXN0cy9XZWJGcmFtZVRlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vdGVzdHMvV2ViRnJhbWVUZXN0LmNwcApAQCAtNTgsMTUgKzU4LDE4IEBACiAjaW5jbHVkZSAi
V2ViVmlld0ltcGwuaCIKICNpbmNsdWRlICJ2OC5oIgogI2luY2x1ZGUgPGd0ZXN0L2d0ZXN0Lmg+
CisjaW5jbHVkZSA8cHVibGljL1BsYXRmb3JtLmg+CiAjaW5jbHVkZSA8cHVibGljL1dlYkZsb2F0
UmVjdC5oPgorI2luY2x1ZGUgPHB1YmxpYy9XZWJUaHJlYWQuaD4KICNpbmNsdWRlIDxwdWJsaWMv
V2ViVVJMUmVzcG9uc2UuaD4KLSNpbmNsdWRlIDx3ZWJraXQvc3VwcG9ydC93ZWJraXRfc3VwcG9y
dC5oPgorI2luY2x1ZGUgPHB1YmxpYy9XZWJVbml0VGVzdFN1cHBvcnQuaD4KICNpbmNsdWRlIDx3
dGYvRm9yd2FyZC5oPgogCiB1c2luZyBuYW1lc3BhY2UgV2ViS2l0OwogdXNpbmcgV2ViQ29yZTo6
RmxvYXRSZWN0OwogdXNpbmcgV2ViQ29yZTo6UmFuZ2U7CiB1c2luZyBXZWJLaXQ6OlVSTFRlc3RI
ZWxwZXJzOjp0b0tVUkw7Cit1c2luZyBXZWJLaXQ6OkZyYW1lVGVzdEhlbHBlcnM6OnJ1blBlbmRp
bmdUYXNrczsKIAogbmFtZXNwYWNlIHsKIApAQCAtODAsNyArODMsNyBAQCBwdWJsaWM6CiAKICAg
ICB2aXJ0dWFsIHZvaWQgVGVhckRvd24oKQogICAgIHsKLSAgICAgICAgd2Via2l0X3N1cHBvcnQ6
OlVucmVnaXN0ZXJBbGxNb2NrZWRVUkxzKCk7CisgICAgICAgIFBsYXRmb3JtOjpjdXJyZW50KCkt
PnVuaXRUZXN0U3VwcG9ydCgpLT51bnJlZ2lzdGVyQWxsTW9ja2VkVVJMcygpOwogICAgIH0KIAog
ICAgIHZvaWQgcmVnaXN0ZXJNb2NrZWRIdHRwVVJMTG9hZChjb25zdCBzdGQ6OnN0cmluZyYgZmls
ZU5hbWUpCkBAIC04NTMsNyArODU2LDcgQEAgVEVTVF9GKFdlYkZyYW1lVGVzdCwgUmVsb2FkRG9l
c250U2V0UmVkaXJlY3QpCiAgICAgd2ViVmlldy0+bWFpbkZyYW1lKCktPnJlbG9hZCh0cnVlKTsK
ICAgICAvLyBzdGFydCByZWxvYWQgYmVmb3JlIHJlcXVlc3QgaXMgZGVsaXZlcmVkLgogICAgIHdl
YlZpZXctPm1haW5GcmFtZSgpLT5yZWxvYWQodHJ1ZSk7Ci0gICAgd2Via2l0X3N1cHBvcnQ6OlNl
cnZlQXN5bmNocm9ub3VzTW9ja2VkUmVxdWVzdHMoKTsKKyAgICBQbGF0Zm9ybTo6Y3VycmVudCgp
LT51bml0VGVzdFN1cHBvcnQoKS0+c2VydmVBc3luY2hyb25vdXNNb2NrZWRSZXF1ZXN0cygpOwog
fQogCiBURVNUX0YoV2ViRnJhbWVUZXN0LCBSZWxvYWRXaXRoT3ZlcnJpZGVVUkxQcmVzZXJ2ZXNT
dGF0ZSkKQEAgLTg3OSwxMyArODgyLDEzIEBAIFRFU1RfRihXZWJGcmFtZVRlc3QsIFJlbG9hZFdp
dGhPdmVycmlkZVVSTFByZXNlcnZlc1N0YXRlKQogCiAgICAgLy8gUmVsb2FkIHRoZSBwYWdlIHVz
aW5nIHRoZSBjYWNoZS4KICAgICB3ZWJWaWV3SW1wbC0+bWFpbkZyYW1lKCktPnJlbG9hZFdpdGhP
dmVycmlkZVVSTCh0b0tVUkwobV9iYXNlVVJMICsgc2Vjb25kVVJMKSwgZmFsc2UpOwotICAgIHdl
YmtpdF9zdXBwb3J0OjpTZXJ2ZUFzeW5jaHJvbm91c01vY2tlZFJlcXVlc3RzKCk7CisgICAgUGxh
dGZvcm06OmN1cnJlbnQoKS0+dW5pdFRlc3RTdXBwb3J0KCktPnNlcnZlQXN5bmNocm9ub3VzTW9j
a2VkUmVxdWVzdHMoKTsKICAgICBBU1NFUlRfRVEocHJldmlvdXNPZmZzZXQsIHdlYlZpZXdJbXBs
LT5tYWluRnJhbWUoKS0+c2Nyb2xsT2Zmc2V0KCkpOwogICAgIEFTU0VSVF9FUShwcmV2aW91c1Nj
YWxlLCB3ZWJWaWV3SW1wbC0+cGFnZVNjYWxlRmFjdG9yKCkpOwogCiAgICAgLy8gUmVsb2FkIHRo
ZSBwYWdlIHdoaWxlIGlnbm9yaW5nIHRoZSBjYWNoZS4KICAgICB3ZWJWaWV3SW1wbC0+bWFpbkZy
YW1lKCktPnJlbG9hZFdpdGhPdmVycmlkZVVSTCh0b0tVUkwobV9iYXNlVVJMICsgdGhpcmRVUkwp
LCB0cnVlKTsKLSAgICB3ZWJraXRfc3VwcG9ydDo6U2VydmVBc3luY2hyb25vdXNNb2NrZWRSZXF1
ZXN0cygpOworICAgIFBsYXRmb3JtOjpjdXJyZW50KCktPnVuaXRUZXN0U3VwcG9ydCgpLT5zZXJ2
ZUFzeW5jaHJvbm91c01vY2tlZFJlcXVlc3RzKCk7CiAgICAgQVNTRVJUX0VRKHByZXZpb3VzT2Zm
c2V0LCB3ZWJWaWV3SW1wbC0+bWFpbkZyYW1lKCktPnNjcm9sbE9mZnNldCgpKTsKICAgICBBU1NF
UlRfRVEocHJldmlvdXNTY2FsZSwgd2ViVmlld0ltcGwtPnBhZ2VTY2FsZUZhY3RvcigpKTsKIH0K
QEAgLTg5Niw4ICs4OTksNyBAQCBURVNUX0YoV2ViRnJhbWVUZXN0LCBJZnJhbWVSZWRpcmVjdCkK
ICAgICByZWdpc3Rlck1vY2tlZEh0dHBVUkxMb2FkKCJ2aXNpYmxlX2lmcmFtZS5odG1sIik7CiAK
ICAgICBXZWJWaWV3KiB3ZWJWaWV3ID0gRnJhbWVUZXN0SGVscGVyczo6Y3JlYXRlV2ViVmlld0Fu
ZExvYWQobV9iYXNlVVJMICsgImlmcmFtZV9yZWRpcmVjdC5odG1sIiwgdHJ1ZSk7Ci0gICAgd2Vi
a2l0X3N1cHBvcnQ6OlJ1bkFsbFBlbmRpbmdNZXNzYWdlcygpOyAvLyBRdWV1ZSB0aGUgaWZyYW1l
LgotICAgIHdlYmtpdF9zdXBwb3J0OjpTZXJ2ZUFzeW5jaHJvbm91c01vY2tlZFJlcXVlc3RzKCk7
IC8vIExvYWQgdGhlIGlmcmFtZS4KKyAgICBQbGF0Zm9ybTo6Y3VycmVudCgpLT51bml0VGVzdFN1
cHBvcnQoKS0+c2VydmVBc3luY2hyb25vdXNNb2NrZWRSZXF1ZXN0cygpOyAvLyBMb2FkIHRoZSBp
ZnJhbWUuCiAKICAgICBXZWJGcmFtZSogaWZyYW1lID0gd2ViVmlldy0+ZmluZEZyYW1lQnlOYW1l
KFdlYlN0cmluZzo6ZnJvbVVURjgoImlmciIpKTsKICAgICBBU1NFUlRfVFJVRShpZnJhbWUpOwpA
QCAtMTAzOSw3ICsxMDQxLDcgQEAgVEVTVF9GKFdlYkZyYW1lVGVzdCwgQ29udGV4dE5vdGlmaWNh
dGlvbnNSZWxvYWQpCiAKICAgICAvLyBSZWZyZXNoLCB3ZSBzaG91bGQgZ2V0IHR3byByZWxlYXNl
IG5vdGlmaWNhdGlvbnMgYW5kIHR3byBtb3JlIGNyZWF0ZSBub3RpZmljYXRpb25zLgogICAgIHdl
YlZpZXctPm1haW5GcmFtZSgpLT5yZWxvYWQoZmFsc2UpOwotICAgIHdlYmtpdF9zdXBwb3J0OjpT
ZXJ2ZUFzeW5jaHJvbm91c01vY2tlZFJlcXVlc3RzKCk7CisgICAgUGxhdGZvcm06OmN1cnJlbnQo
KS0+dW5pdFRlc3RTdXBwb3J0KCktPnNlcnZlQXN5bmNocm9ub3VzTW9ja2VkUmVxdWVzdHMoKTsK
ICAgICBBU1NFUlRfRVEoNHUsIHdlYkZyYW1lQ2xpZW50LmNyZWF0ZU5vdGlmaWNhdGlvbnMuc2l6
ZSgpKTsKICAgICBBU1NFUlRfRVEoMnUsIHdlYkZyYW1lQ2xpZW50LnJlbGVhc2VOb3RpZmljYXRp
b25zLnNpemUoKSk7CiAKQEAgLTExNzgsNyArMTE4MCw3IEBAIFRFU1RfRihXZWJGcmFtZVRlc3Qs
IEdldENvbnRlbnRBc1BsYWluVGV4dCkKICAgICBjb25zdCBjaGFyIHNpbXBsZVNvdXJjZVtdID0g
IjxkaXY+Rm9vIGJhcjwvZGl2PjxkaXY+PC9kaXY+YmF6IjsKICAgICBXZWJDb3JlOjpLVVJMIHRl
c3RVUkwgPSB0b0tVUkwoImFib3V0OmJsYW5rIik7CiAgICAgZnJhbWUtPmxvYWRIVE1MU3RyaW5n
KHNpbXBsZVNvdXJjZSwgdGVzdFVSTCk7Ci0gICAgd2Via2l0X3N1cHBvcnQ6OlJ1bkFsbFBlbmRp
bmdNZXNzYWdlcygpOworICAgIHJ1blBlbmRpbmdUYXNrcygpOwogCiAgICAgLy8gTWFrZSBzdXJl
IGl0IGNvbWVzIG91dCBPSy4KICAgICBjb25zdCBzdGQ6OnN0cmluZyBleHBlY3RlZCgiRm9vIGJh
clxuYmF6Iik7CkBAIC0xMTkzLDEzICsxMTk1LDEzIEBAIFRFU1RfRihXZWJGcmFtZVRlc3QsIEdl
dENvbnRlbnRBc1BsYWluVGV4dCkKICAgICAvLyBOb3cgZG8gYSBuZXcgdGVzdCB3aXRoIGEgc3Vi
ZnJhbWUuCiAgICAgY29uc3QgY2hhciBvdXRlckZyYW1lU291cmNlW10gPSAiSGVsbG88aWZyYW1l
PjwvaWZyYW1lPiB3b3JsZCI7CiAgICAgZnJhbWUtPmxvYWRIVE1MU3RyaW5nKG91dGVyRnJhbWVT
b3VyY2UsIHRlc3RVUkwpOwotICAgIHdlYmtpdF9zdXBwb3J0OjpSdW5BbGxQZW5kaW5nTWVzc2Fn
ZXMoKTsKKyAgICBydW5QZW5kaW5nVGFza3MoKTsKIAogICAgIC8vIExvYWQgc29tZXRoaW5nIGlu
dG8gdGhlIHN1YmZyYW1lLgogICAgIFdlYkZyYW1lKiBzdWJmcmFtZSA9IGZyYW1lLT5maW5kQ2hp
bGRCeUV4cHJlc3Npb24oV2ViU3RyaW5nOjpmcm9tVVRGOCgiL2h0bWwvYm9keS9pZnJhbWUiKSk7
CiAgICAgQVNTRVJUX1RSVUUoc3ViZnJhbWUpOwogICAgIHN1YmZyYW1lLT5sb2FkSFRNTFN0cmlu
Zygic3ViPHA+dGV4dCIsIHRlc3RVUkwpOwotICAgIHdlYmtpdF9zdXBwb3J0OjpSdW5BbGxQZW5k
aW5nTWVzc2FnZXMoKTsKKyAgICBydW5QZW5kaW5nVGFza3MoKTsKIAogICAgIHRleHQgPSBmcmFt
ZS0+Y29udGVudEFzVGV4dChzdGQ6Om51bWVyaWNfbGltaXRzPHNpemVfdD46Om1heCgpKTsKICAg
ICBFWFBFQ1RfRVEoIkhlbGxvIHdvcmxkXG5cbnN1YlxudGV4dCIsIHN0ZDo6c3RyaW5nKHRleHQu
dXRmOCgpLmRhdGEoKSkpOwpAQCAtMTIyMSw3ICsxMjIzLDcgQEAgVEVTVF9GKFdlYkZyYW1lVGVz
dCwgR2V0RnVsbEh0bWxPZlBhZ2UpCiAgICAgY29uc3QgY2hhciBzaW1wbGVTb3VyY2VbXSA9ICI8
cD5IZWxsbzwvcD48cD5Xb3JsZDwvcD4iOwogICAgIFdlYkNvcmU6OktVUkwgdGVzdFVSTCA9IHRv
S1VSTCgiYWJvdXQ6YmxhbmsiKTsKICAgICBmcmFtZS0+bG9hZEhUTUxTdHJpbmcoc2ltcGxlU291
cmNlLCB0ZXN0VVJMKTsKLSAgICB3ZWJraXRfc3VwcG9ydDo6UnVuQWxsUGVuZGluZ01lc3NhZ2Vz
KCk7CisgICAgcnVuUGVuZGluZ1Rhc2tzKCk7CiAKICAgICBXZWJTdHJpbmcgdGV4dCA9IGZyYW1l
LT5jb250ZW50QXNUZXh0KHN0ZDo6bnVtZXJpY19saW1pdHM8c2l6ZV90Pjo6bWF4KCkpOwogICAg
IEVYUEVDVF9FUSgiSGVsbG9cblxuV29ybGQiLCBzdGQ6OnN0cmluZyh0ZXh0LnV0ZjgoKS5kYXRh
KCkpKTsKQEAgLTEyMzAsNyArMTIzMiw3IEBAIFRFU1RfRihXZWJGcmFtZVRlc3QsIEdldEZ1bGxI
dG1sT2ZQYWdlKQogCiAgICAgLy8gTG9hZCBhZ2FpbiB3aXRoIHRoZSBvdXRwdXQgaHRtbC4KICAg
ICBmcmFtZS0+bG9hZEhUTUxTdHJpbmcoV2ViRGF0YShodG1sLmNfc3RyKCksIGh0bWwubGVuZ3Ro
KCkpLCB0ZXN0VVJMKTsKLSAgICB3ZWJraXRfc3VwcG9ydDo6UnVuQWxsUGVuZGluZ01lc3NhZ2Vz
KCk7CisgICAgcnVuUGVuZGluZ1Rhc2tzKCk7CiAKICAgICBFWFBFQ1RfRVEoaHRtbCwgc3RkOjpz
dHJpbmcoZnJhbWUtPmNvbnRlbnRBc01hcmt1cCgpLnV0ZjgoKS5kYXRhKCkpKTsKIApAQCAtMTI2
Myw3ICsxMjY1LDcgQEAgVEVTVF9GKFdlYkZyYW1lVGVzdCwgRXhlY3V0ZVNjcmlwdER1cmluZ0Rp
ZENyZWF0ZVNjcmlwdENvbnRleHQpCiAgICAgV2ViVmlldyogd2ViVmlldyA9IEZyYW1lVGVzdEhl
bHBlcnM6OmNyZWF0ZVdlYlZpZXdBbmRMb2FkKG1fYmFzZVVSTCArICJoZWxsb193b3JsZC5odG1s
IiwgdHJ1ZSwgJndlYkZyYW1lQ2xpZW50KTsKIAogICAgIHdlYlZpZXctPm1haW5GcmFtZSgpLT5y
ZWxvYWQoKTsKLSAgICB3ZWJraXRfc3VwcG9ydDo6U2VydmVBc3luY2hyb25vdXNNb2NrZWRSZXF1
ZXN0cygpOworICAgIFBsYXRmb3JtOjpjdXJyZW50KCktPnVuaXRUZXN0U3VwcG9ydCgpLT5zZXJ2
ZUFzeW5jaHJvbm91c01vY2tlZFJlcXVlc3RzKCk7CiB9CiAKIGNsYXNzIFRlc3REaWRDcmVhdGVG
cmFtZVdlYkZyYW1lQ2xpZW50IDogcHVibGljIFdlYkZyYW1lQ2xpZW50IHsKQEAgLTEzMzQsNyAr
MTMzNiw3IEBAIFRFU1RfRihXZWJGcmFtZVRlc3QsIEZpbmRJblBhZ2VNYXRjaFJlY3RzKQogICAg
IFdlYlZpZXcqIHdlYlZpZXcgPSBGcmFtZVRlc3RIZWxwZXJzOjpjcmVhdGVXZWJWaWV3QW5kTG9h
ZChtX2Jhc2VVUkwgKyAiZmluZF9pbl9wYWdlLmh0bWwiLCB0cnVlLCAmY2xpZW50KTsKICAgICB3
ZWJWaWV3LT5yZXNpemUoV2ViU2l6ZSg2NDAsIDQ4MCkpOwogICAgIHdlYlZpZXctPmxheW91dCgp
OwotICAgIHdlYmtpdF9zdXBwb3J0OjpSdW5BbGxQZW5kaW5nTWVzc2FnZXMoKTsKKyAgICBydW5Q
ZW5kaW5nVGFza3MoKTsKIAogICAgIC8vIE5vdGUgdGhhdCB0aGUgJ3Jlc3VsdCAxOScgaW4gdGhl
IDxzZWxlY3Q+IGVsZW1lbnQgaXMgbm90IGV4cGVjdGVkIHRvIHByb2R1Y2UgYSBtYXRjaC4KICAg
ICBzdGF0aWMgY29uc3QgY2hhcioga0ZpbmRTdHJpbmcgPSAicmVzdWx0IjsKQEAgLTEzNTEsNyAr
MTM1Myw3IEBAIFRFU1RfRihXZWJGcmFtZVRlc3QsIEZpbmRJblBhZ2VNYXRjaFJlY3RzKQogICAg
IGZvciAoV2ViRnJhbWUqIGZyYW1lID0gbWFpbkZyYW1lOyBmcmFtZTsgZnJhbWUgPSBmcmFtZS0+
dHJhdmVyc2VOZXh0KGZhbHNlKSkKICAgICAgICAgZnJhbWUtPnNjb3BlU3RyaW5nTWF0Y2hlcyhr
RmluZElkZW50aWZpZXIsIHNlYXJjaFRleHQsIG9wdGlvbnMsIHRydWUpOwogCi0gICAgd2Via2l0
X3N1cHBvcnQ6OlJ1bkFsbFBlbmRpbmdNZXNzYWdlcygpOworICAgIHJ1blBlbmRpbmdUYXNrcygp
OwogICAgIEVYUEVDVF9UUlVFKGNsaWVudC5maW5kUmVzdWx0c0FyZVJlYWR5KCkpOwogCiAgICAg
V2ViVmVjdG9yPFdlYkZsb2F0UmVjdD4gd2ViTWF0Y2hSZWN0czsKQEAgLTE0MzksNyArMTQ0MSw3
IEBAIFRFU1RfRihXZWJGcmFtZVRlc3QsIEZpbmRJblBhZ2VNYXRjaFJlY3RzKQogCiAgICAgLy8g
UmVzaXppbmcgc2hvdWxkIHVwZGF0ZSB0aGUgcmVjdHMgdmVyc2lvbi4KICAgICB3ZWJWaWV3LT5y
ZXNpemUoV2ViU2l6ZSg4MDAsIDYwMCkpOwotICAgIHdlYmtpdF9zdXBwb3J0OjpSdW5BbGxQZW5k
aW5nTWVzc2FnZXMoKTsKKyAgICBydW5QZW5kaW5nVGFza3MoKTsKICAgICBFWFBFQ1RfVFJVRSht
YWluRnJhbWUtPmZpbmRNYXRjaE1hcmtlcnNWZXJzaW9uKCkgIT0gcmVjdHNWZXJzaW9uKTsKIAog
ICAgIHdlYlZpZXctPmNsb3NlKCk7CkBAIC0xNDUzLDcgKzE0NTUsNyBAQCBURVNUX0YoV2ViRnJh
bWVUZXN0LCBGaW5kSW5QYWdlU2tpcHNIaWRkZW5GcmFtZXMpCiAgICAgV2ViVmlldyogd2ViVmll
dyA9IEZyYW1lVGVzdEhlbHBlcnM6OmNyZWF0ZVdlYlZpZXdBbmRMb2FkKG1fYmFzZVVSTCArICJm
aW5kX2luX2hpZGRlbl9mcmFtZS5odG1sIiwgdHJ1ZSwgJmNsaWVudCk7CiAgICAgd2ViVmlldy0+
cmVzaXplKFdlYlNpemUoNjQwLCA0ODApKTsKICAgICB3ZWJWaWV3LT5sYXlvdXQoKTsKLSAgICB3
ZWJraXRfc3VwcG9ydDo6UnVuQWxsUGVuZGluZ01lc3NhZ2VzKCk7CisgICAgcnVuUGVuZGluZ1Rh
c2tzKCk7CiAKICAgICBzdGF0aWMgY29uc3QgY2hhcioga0ZpbmRTdHJpbmcgPSAiaGVsbG8iOwog
ICAgIHN0YXRpYyBjb25zdCBpbnQga0ZpbmRJZGVudGlmaWVyID0gMTIzNDU7CkBAIC0xNDY5LDcg
KzE0NzEsNyBAQCBURVNUX0YoV2ViRnJhbWVUZXN0LCBGaW5kSW5QYWdlU2tpcHNIaWRkZW5GcmFt
ZXMpCiAgICAgZm9yIChXZWJGcmFtZSogZnJhbWUgPSBtYWluRnJhbWU7IGZyYW1lOyBmcmFtZSA9
IGZyYW1lLT50cmF2ZXJzZU5leHQoZmFsc2UpKQogICAgICAgICBmcmFtZS0+c2NvcGVTdHJpbmdN
YXRjaGVzKGtGaW5kSWRlbnRpZmllciwgc2VhcmNoVGV4dCwgb3B0aW9ucywgdHJ1ZSk7CiAKLSAg
ICB3ZWJraXRfc3VwcG9ydDo6UnVuQWxsUGVuZGluZ01lc3NhZ2VzKCk7CisgICAgcnVuUGVuZGlu
Z1Rhc2tzKCk7CiAgICAgRVhQRUNUX1RSVUUoY2xpZW50LmZpbmRSZXN1bHRzQXJlUmVhZHkoKSk7
CiAgICAgRVhQRUNUX0VRKGtOdW1SZXN1bHRzLCBjbGllbnQuY291bnQoKSk7CiAKQEAgLTE0ODUs
NyArMTQ4Nyw3IEBAIFRFU1RfRihXZWJGcmFtZVRlc3QsIEZpbmRPbkRldGFjaGVkRnJhbWUpCiAg
ICAgV2ViVmlldyogd2ViVmlldyA9IEZyYW1lVGVzdEhlbHBlcnM6OmNyZWF0ZVdlYlZpZXdBbmRM
b2FkKG1fYmFzZVVSTCArICJmaW5kX2luX3BhZ2UuaHRtbCIsIHRydWUsICZjbGllbnQpOwogICAg
IHdlYlZpZXctPnJlc2l6ZShXZWJTaXplKDY0MCwgNDgwKSk7CiAgICAgd2ViVmlldy0+bGF5b3V0
KCk7Ci0gICAgd2Via2l0X3N1cHBvcnQ6OlJ1bkFsbFBlbmRpbmdNZXNzYWdlcygpOworICAgIHJ1
blBlbmRpbmdUYXNrcygpOwogCiAgICAgc3RhdGljIGNvbnN0IGNoYXIqIGtGaW5kU3RyaW5nID0g
InJlc3VsdCI7CiAgICAgc3RhdGljIGNvbnN0IGludCBrRmluZElkZW50aWZpZXIgPSAxMjM0NTsK
QEAgLTE1MDIsNyArMTUwNCw3IEBAIFRFU1RfRihXZWJGcmFtZVRlc3QsIEZpbmRPbkRldGFjaGVk
RnJhbWUpCiAgICAgRVhQRUNUX1RSVUUobWFpbkZyYW1lLT5maW5kKGtGaW5kSWRlbnRpZmllciwg
c2VhcmNoVGV4dCwgb3B0aW9ucywgZmFsc2UsIDApKTsKICAgICBFWFBFQ1RfRkFMU0Uoc2Vjb25k
RnJhbWUtPmZpbmQoa0ZpbmRJZGVudGlmaWVyLCBzZWFyY2hUZXh0LCBvcHRpb25zLCBmYWxzZSwg
MCkpOwogCi0gICAgd2Via2l0X3N1cHBvcnQ6OlJ1bkFsbFBlbmRpbmdNZXNzYWdlcygpOworICAg
IHJ1blBlbmRpbmdUYXNrcygpOwogICAgIEVYUEVDVF9GQUxTRShjbGllbnQuZmluZFJlc3VsdHNB
cmVSZWFkeSgpKTsKIAogICAgIG1haW5GcmFtZS0+cmVzZXRNYXRjaENvdW50KCk7CkBAIC0xNTEw
LDcgKzE1MTIsNyBAQCBURVNUX0YoV2ViRnJhbWVUZXN0LCBGaW5kT25EZXRhY2hlZEZyYW1lKQog
ICAgIGZvciAoV2ViRnJhbWUqIGZyYW1lID0gbWFpbkZyYW1lOyBmcmFtZTsgZnJhbWUgPSBmcmFt
ZS0+dHJhdmVyc2VOZXh0KGZhbHNlKSkKICAgICAgICAgZnJhbWUtPnNjb3BlU3RyaW5nTWF0Y2hl
cyhrRmluZElkZW50aWZpZXIsIHNlYXJjaFRleHQsIG9wdGlvbnMsIHRydWUpOwogCi0gICAgd2Vi
a2l0X3N1cHBvcnQ6OlJ1bkFsbFBlbmRpbmdNZXNzYWdlcygpOworICAgIHJ1blBlbmRpbmdUYXNr
cygpOwogICAgIEVYUEVDVF9UUlVFKGNsaWVudC5maW5kUmVzdWx0c0FyZVJlYWR5KCkpOwogCiAg
ICAgaG9sZFNlY29uZEZyYW1lLnJlbGVhc2UoKTsKQEAgLTE1MjYsNyArMTUyOCw3IEBAIFRFU1Rf
RihXZWJGcmFtZVRlc3QsIEZpbmREZXRhY2hGcmFtZUJlZm9yZVNjb3BlU3RyaW5ncykKICAgICBX
ZWJWaWV3KiB3ZWJWaWV3ID0gRnJhbWVUZXN0SGVscGVyczo6Y3JlYXRlV2ViVmlld0FuZExvYWQo
bV9iYXNlVVJMICsgImZpbmRfaW5fcGFnZS5odG1sIiwgdHJ1ZSwgJmNsaWVudCk7CiAgICAgd2Vi
Vmlldy0+cmVzaXplKFdlYlNpemUoNjQwLCA0ODApKTsKICAgICB3ZWJWaWV3LT5sYXlvdXQoKTsK
LSAgICB3ZWJraXRfc3VwcG9ydDo6UnVuQWxsUGVuZGluZ01lc3NhZ2VzKCk7CisgICAgcnVuUGVu
ZGluZ1Rhc2tzKCk7CiAKICAgICBzdGF0aWMgY29uc3QgY2hhcioga0ZpbmRTdHJpbmcgPSAicmVz
dWx0IjsKICAgICBzdGF0aWMgY29uc3QgaW50IGtGaW5kSWRlbnRpZmllciA9IDEyMzQ1OwpAQCAt
MTU0MCw3ICsxNTQyLDcgQEAgVEVTVF9GKFdlYkZyYW1lVGVzdCwgRmluZERldGFjaEZyYW1lQmVm
b3JlU2NvcGVTdHJpbmdzKQogICAgIGZvciAoV2ViRnJhbWUqIGZyYW1lID0gbWFpbkZyYW1lOyBm
cmFtZTsgZnJhbWUgPSBmcmFtZS0+dHJhdmVyc2VOZXh0KGZhbHNlKSkKICAgICAgICAgRVhQRUNU
X1RSVUUoZnJhbWUtPmZpbmQoa0ZpbmRJZGVudGlmaWVyLCBzZWFyY2hUZXh0LCBvcHRpb25zLCBm
YWxzZSwgMCkpOwogCi0gICAgd2Via2l0X3N1cHBvcnQ6OlJ1bkFsbFBlbmRpbmdNZXNzYWdlcygp
OworICAgIHJ1blBlbmRpbmdUYXNrcygpOwogICAgIEVYUEVDVF9GQUxTRShjbGllbnQuZmluZFJl
c3VsdHNBcmVSZWFkeSgpKTsKIAogICAgIC8vIERldGFjaCB0aGUgZnJhbWUgYmV0d2VlbiBmaW5k
aW5nIGFuZCBzY29waW5nLgpAQCAtMTU1MSw3ICsxNTUzLDcgQEAgVEVTVF9GKFdlYkZyYW1lVGVz
dCwgRmluZERldGFjaEZyYW1lQmVmb3JlU2NvcGVTdHJpbmdzKQogICAgIGZvciAoV2ViRnJhbWUq
IGZyYW1lID0gbWFpbkZyYW1lOyBmcmFtZTsgZnJhbWUgPSBmcmFtZS0+dHJhdmVyc2VOZXh0KGZh
bHNlKSkKICAgICAgICAgZnJhbWUtPnNjb3BlU3RyaW5nTWF0Y2hlcyhrRmluZElkZW50aWZpZXIs
IHNlYXJjaFRleHQsIG9wdGlvbnMsIHRydWUpOwogCi0gICAgd2Via2l0X3N1cHBvcnQ6OlJ1bkFs
bFBlbmRpbmdNZXNzYWdlcygpOworICAgIHJ1blBlbmRpbmdUYXNrcygpOwogICAgIEVYUEVDVF9U
UlVFKGNsaWVudC5maW5kUmVzdWx0c0FyZVJlYWR5KCkpOwogCiAgICAgaG9sZFNlY29uZEZyYW1l
LnJlbGVhc2UoKTsKQEAgLTE1NjcsNyArMTU2OSw3IEBAIFRFU1RfRihXZWJGcmFtZVRlc3QsIEZp
bmREZXRhY2hGcmFtZVdoaWxlU2NvcGluZ1N0cmluZ3MpCiAgICAgV2ViVmlldyogd2ViVmlldyA9
IEZyYW1lVGVzdEhlbHBlcnM6OmNyZWF0ZVdlYlZpZXdBbmRMb2FkKG1fYmFzZVVSTCArICJmaW5k
X2luX3BhZ2UuaHRtbCIsIHRydWUsICZjbGllbnQpOwogICAgIHdlYlZpZXctPnJlc2l6ZShXZWJT
aXplKDY0MCwgNDgwKSk7CiAgICAgd2ViVmlldy0+bGF5b3V0KCk7Ci0gICAgd2Via2l0X3N1cHBv
cnQ6OlJ1bkFsbFBlbmRpbmdNZXNzYWdlcygpOworICAgIHJ1blBlbmRpbmdUYXNrcygpOwogCiAg
ICAgc3RhdGljIGNvbnN0IGNoYXIqIGtGaW5kU3RyaW5nID0gInJlc3VsdCI7CiAgICAgc3RhdGlj
IGNvbnN0IGludCBrRmluZElkZW50aWZpZXIgPSAxMjM0NTsKQEAgLTE1ODEsNyArMTU4Myw3IEBA
IFRFU1RfRihXZWJGcmFtZVRlc3QsIEZpbmREZXRhY2hGcmFtZVdoaWxlU2NvcGluZ1N0cmluZ3Mp
CiAgICAgZm9yIChXZWJGcmFtZSogZnJhbWUgPSBtYWluRnJhbWU7IGZyYW1lOyBmcmFtZSA9IGZy
YW1lLT50cmF2ZXJzZU5leHQoZmFsc2UpKQogICAgICAgICBFWFBFQ1RfVFJVRShmcmFtZS0+Zmlu
ZChrRmluZElkZW50aWZpZXIsIHNlYXJjaFRleHQsIG9wdGlvbnMsIGZhbHNlLCAwKSk7CiAKLSAg
ICB3ZWJraXRfc3VwcG9ydDo6UnVuQWxsUGVuZGluZ01lc3NhZ2VzKCk7CisgICAgcnVuUGVuZGlu
Z1Rhc2tzKCk7CiAgICAgRVhQRUNUX0ZBTFNFKGNsaWVudC5maW5kUmVzdWx0c0FyZVJlYWR5KCkp
OwogCiAgICAgbWFpbkZyYW1lLT5yZXNldE1hdGNoQ291bnQoKTsKQEAgLTE1OTIsNyArMTU5NCw3
IEBAIFRFU1RfRihXZWJGcmFtZVRlc3QsIEZpbmREZXRhY2hGcmFtZVdoaWxlU2NvcGluZ1N0cmlu
Z3MpCiAgICAgLy8gVGhlIGZpcnN0IHNjb3BlU3RyaW5nTWF0Y2hlcyB3aWxsIGhhdmUgcmVzZXQg
dGhlIHN0YXRlLiBEZXRhY2ggYmVmb3JlIGl0IGFjdHVhbGx5IHNjb3Blcy4KICAgICBFWFBFQ1Rf
VFJVRShtYWluRnJhbWUtPmRvY3VtZW50KCkuZ2V0RWxlbWVudEJ5SWQoImZyYW1lIikucmVtb3Zl
KCkpOwogCi0gICAgd2Via2l0X3N1cHBvcnQ6OlJ1bkFsbFBlbmRpbmdNZXNzYWdlcygpOworICAg
IHJ1blBlbmRpbmdUYXNrcygpOwogICAgIEVYUEVDVF9UUlVFKGNsaWVudC5maW5kUmVzdWx0c0Fy
ZVJlYWR5KCkpOwogCiAgICAgaG9sZFNlY29uZEZyYW1lLnJlbGVhc2UoKTsKQEAgLTIwMjksNyAr
MjAzMSw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgZGlkRmFpbFByb3Zpc2lvbmFsTG9h
ZChXZWJGcmFtZSogZnJhbWUsIGNvbnN0IFdlYlVSTEVycm9yJiBlcnJvcikKICAgICB7CiAgICAg
ICAgIGZyYW1lLT5sb2FkSFRNTFN0cmluZygiVGhpcyBzaG91bGQgYXBwZWFyIiwgdG9LVVJMKCJk
YXRhOnRleHQvaHRtbCxjaHJvbWV3ZWJkYXRhIiksIGVycm9yLnVucmVhY2hhYmxlVVJMLCB0cnVl
KTsKLSAgICAgICAgd2Via2l0X3N1cHBvcnQ6OlJ1bkFsbFBlbmRpbmdNZXNzYWdlcygpOworICAg
ICAgICBydW5QZW5kaW5nVGFza3MoKTsKICAgICB9CiAKICAgICB2aXJ0dWFsIHZvaWQgZGlkQ29t
bWl0UHJvdmlzaW9uYWxMb2FkKFdlYkZyYW1lKiBmcmFtZSwgYm9vbCkKQEAgLTIwNDksNyArMjA1
MSw3IEBAIFRFU1RfRihXZWJGcmFtZVRlc3QsIFJlcGxhY2VOYXZpZ2F0aW9uQWZ0ZXJIaXN0b3J5
TmF2aWdhdGlvbikKICAgICBUZXN0U3Vic3RpdHV0ZURhdGFXZWJGcmFtZUNsaWVudCB3ZWJGcmFt
ZUNsaWVudDsKIAogICAgIFdlYlZpZXcqIHdlYlZpZXcgPSBGcmFtZVRlc3RIZWxwZXJzOjpjcmVh
dGVXZWJWaWV3QW5kTG9hZCgiYWJvdXQ6YmxhbmsiLCB0cnVlLCAmd2ViRnJhbWVDbGllbnQpOwot
ICAgIHdlYmtpdF9zdXBwb3J0OjpSdW5BbGxQZW5kaW5nTWVzc2FnZXMoKTsKKyAgICBydW5QZW5k
aW5nVGFza3MoKTsKICAgICBXZWJGcmFtZSogZnJhbWUgPSB3ZWJWaWV3LT5tYWluRnJhbWUoKTsK
IAogICAgIC8vIExvYWQgYSB1cmwgYXMgYSBoaXN0b3J5IG5hdmlnYXRpb24gdGhhdCB3aWxsIHJl
dHVybiBhbiBlcnJvci4gVGVzdFN1YnN0aXR1dGVEYXRhV2ViRnJhbWVDbGllbnQKQEAgLTIwNjks
OSArMjA3MSw5IEBAIFRFU1RfRihXZWJGcmFtZVRlc3QsIFJlcGxhY2VOYXZpZ2F0aW9uQWZ0ZXJI
aXN0b3J5TmF2aWdhdGlvbikKICAgICBlcnJvckhpc3RvcnlJdGVtLmluaXRpYWxpemUoKTsKICAg
ICBlcnJvckhpc3RvcnlJdGVtLnNldFVSTFN0cmluZyhXZWJTdHJpbmc6OmZyb21VVEY4KGVycm9y
VVJMLmNfc3RyKCksIGVycm9yVVJMLmxlbmd0aCgpKSk7CiAgICAgZXJyb3JIaXN0b3J5SXRlbS5z
ZXRPcmlnaW5hbFVSTFN0cmluZyhXZWJTdHJpbmc6OmZyb21VVEY4KGVycm9yVVJMLmNfc3RyKCks
IGVycm9yVVJMLmxlbmd0aCgpKSk7Ci0gICAgd2Via2l0X3N1cHBvcnQ6OlJlZ2lzdGVyTW9ja2Vk
RXJyb3JVUkwoVVJMVGVzdEhlbHBlcnM6OnRvS1VSTChlcnJvclVSTCksIHJlc3BvbnNlLCBlcnJv
cik7CisgICAgUGxhdGZvcm06OmN1cnJlbnQoKS0+dW5pdFRlc3RTdXBwb3J0KCktPnJlZ2lzdGVy
TW9ja2VkRXJyb3JVUkwoVVJMVGVzdEhlbHBlcnM6OnRvS1VSTChlcnJvclVSTCksIHJlc3BvbnNl
LCBlcnJvcik7CiAgICAgZnJhbWUtPmxvYWRIaXN0b3J5SXRlbShlcnJvckhpc3RvcnlJdGVtKTsK
LSAgICB3ZWJraXRfc3VwcG9ydDo6U2VydmVBc3luY2hyb25vdXNNb2NrZWRSZXF1ZXN0cygpOwor
ICAgIFBsYXRmb3JtOjpjdXJyZW50KCktPnVuaXRUZXN0U3VwcG9ydCgpLT5zZXJ2ZUFzeW5jaHJv
bm91c01vY2tlZFJlcXVlc3RzKCk7CiAKICAgICBXZWJTdHJpbmcgdGV4dCA9IGZyYW1lLT5jb250
ZW50QXNUZXh0KHN0ZDo6bnVtZXJpY19saW1pdHM8c2l6ZV90Pjo6bWF4KCkpOwogICAgIEVYUEVD
VF9FUSgiVGhpcyBzaG91bGQgYXBwZWFyIiwgc3RkOjpzdHJpbmcodGV4dC51dGY4KCkuZGF0YSgp
KSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL1dlYkltYWdlVGVz
dC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL1dlYkltYWdlVGVzdC5jcHAKaW5k
ZXggMmY0NGUzNGIzMmJmMTY0OGRlNGI0OGYyODM2NTcyNDRkYmNlNzEyZS4uNTAyOWY1MTU3ZTI3
MTlhNDZiM2Q3YmVlZTgyMTIyMzkzNmFmMWM2ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9j
aHJvbWl1bS90ZXN0cy9XZWJJbWFnZVRlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vdGVzdHMvV2ViSW1hZ2VUZXN0LmNwcApAQCAtMzUsOSArMzUsMTAgQEAKICNpbmNsdWRlICJG
aWxlU3lzdGVtLmgiCiAjaW5jbHVkZSAiU2hhcmVkQnVmZmVyLmgiCiAjaW5jbHVkZSA8Z3Rlc3Qv
Z3Rlc3QuaD4KKyNpbmNsdWRlIDxwdWJsaWMvUGxhdGZvcm0uaD4KICNpbmNsdWRlIDxwdWJsaWMv
V2ViRGF0YS5oPgogI2luY2x1ZGUgPHB1YmxpYy9XZWJTaXplLmg+Ci0jaW5jbHVkZSA8d2Via2l0
L3N1cHBvcnQvd2Via2l0X3N1cHBvcnQuaD4KKyNpbmNsdWRlIDxwdWJsaWMvV2ViVW5pdFRlc3RT
dXBwb3J0Lmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogdXNpbmcgbmFtZXNwYWNlIFdl
YktpdDsKQEAgLTQ2LDcgKzQ3LDcgQEAgbmFtZXNwYWNlIHsKIAogc3RhdGljIFBhc3NSZWZQdHI8
U2hhcmVkQnVmZmVyPiByZWFkRmlsZShjb25zdCBjaGFyKiBmaWxlTmFtZSkKIHsKLSAgICBTdHJp
bmcgZmlsZVBhdGggPSB3ZWJraXRfc3VwcG9ydDo6R2V0V2ViS2l0Um9vdERpcigpOworICAgIFN0
cmluZyBmaWxlUGF0aCA9IFBsYXRmb3JtOjpjdXJyZW50KCktPnVuaXRUZXN0U3VwcG9ydCgpLT53
ZWJLaXRSb290RGlyKCk7CiAgICAgZmlsZVBhdGguYXBwZW5kKCIvU291cmNlL1dlYktpdC9jaHJv
bWl1bS90ZXN0cy9kYXRhLyIpOwogICAgIGZpbGVQYXRoLmFwcGVuZChmaWxlTmFtZSk7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvV2ViUGFnZU5ld1NlcmlhbGl6
ZXJUZXN0LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvV2ViUGFnZU5ld1Nlcmlh
bGl6ZXJUZXN0LmNwcAppbmRleCA0YTJiNzJiZGY5NDU4ZjcwZDE0Y2Y0ZDRhMWZiZDlmOGFkYTZk
MmVjLi4xNDVkMmQyY2I0MzM2MzYwNTUyZTM0NDMzY2I5ZDNiNTE4Y2NhZDRlIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL1dlYlBhZ2VOZXdTZXJpYWxpemVyVGVzdC5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9XZWJQYWdlTmV3U2VyaWFsaXpl
clRlc3QuY3BwCkBAIC0zMCw2ICszMCw3IEBACiAKICNpbmNsdWRlICJjb25maWcuaCIKIAorI2lu
Y2x1ZGUgIkZyYW1lVGVzdEhlbHBlcnMuaCIKICNpbmNsdWRlICJVUkxUZXN0SGVscGVycy5oIgog
I2luY2x1ZGUgIldlYkZyYW1lLmgiCiAjaW5jbHVkZSAiV2ViRnJhbWVDbGllbnQuaCIKQEAgLTM3
LDE1ICszOCwxNyBAQAogI2luY2x1ZGUgIldlYlNjcmlwdFNvdXJjZS5oIgogI2luY2x1ZGUgIldl
YlNldHRpbmdzLmgiCiAjaW5jbHVkZSAiV2ViVmlldy5oIgorI2luY2x1ZGUgPGd0ZXN0L2d0ZXN0
Lmg+CisjaW5jbHVkZSA8cHVibGljL1BsYXRmb3JtLmg+CiAjaW5jbHVkZSA8cHVibGljL1dlYlN0
cmluZy5oPgorI2luY2x1ZGUgPHB1YmxpYy9XZWJUaHJlYWQuaD4KICNpbmNsdWRlIDxwdWJsaWMv
V2ViVVJMLmg+CiAjaW5jbHVkZSA8cHVibGljL1dlYlVSTFJlcXVlc3QuaD4KICNpbmNsdWRlIDxw
dWJsaWMvV2ViVVJMUmVzcG9uc2UuaD4KLQotI2luY2x1ZGUgPGd0ZXN0L2d0ZXN0Lmg+Ci0jaW5j
bHVkZSA8d2Via2l0L3N1cHBvcnQvd2Via2l0X3N1cHBvcnQuaD4KKyNpbmNsdWRlIDxwdWJsaWMv
V2ViVW5pdFRlc3RTdXBwb3J0Lmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7Cit1c2luZyBX
ZWJLaXQ6OkZyYW1lVGVzdEhlbHBlcnM6OnJ1blBlbmRpbmdUYXNrczsKIHVzaW5nIFdlYktpdDo6
VVJMVGVzdEhlbHBlcnM6OnRvS1VSTDsKIHVzaW5nIFdlYktpdDo6VVJMVGVzdEhlbHBlcnM6OnJl
Z2lzdGVyTW9ja2VkVVJMTG9hZDsKIApAQCAtMTA5LDcgKzExMiw3IEBAIHByb3RlY3RlZDoKIAog
ICAgIHZpcnR1YWwgdm9pZCBUZWFyRG93bigpCiAgICAgewotICAgICAgICB3ZWJraXRfc3VwcG9y
dDo6VW5yZWdpc3RlckFsbE1vY2tlZFVSTHMoKTsKKyAgICAgICAgUGxhdGZvcm06OmN1cnJlbnQo
KS0+dW5pdFRlc3RTdXBwb3J0KCktPnVucmVnaXN0ZXJBbGxNb2NrZWRVUkxzKCk7CiAgICAgICAg
IG1fd2ViVmlldy0+Y2xvc2UoKTsKICAgICB9CiAKQEAgLTEzOCwxMSArMTQxLDExIEBAIHByb3Rl
Y3RlZDoKICAgICAgICAgdXJsUmVxdWVzdC5zZXRVUkwodXJsKTsKICAgICAgICAgbV93ZWJWaWV3
LT5tYWluRnJhbWUoKS0+bG9hZFJlcXVlc3QodXJsUmVxdWVzdCk7CiAgICAgICAgIC8vIE1ha2Ug
c3VyZSBhbnkgcGVuZGluZyByZXF1ZXN0IGdldCBzZXJ2ZWQuCi0gICAgICAgIHdlYmtpdF9zdXBw
b3J0OjpTZXJ2ZUFzeW5jaHJvbm91c01vY2tlZFJlcXVlc3RzKCk7CisgICAgICAgIFBsYXRmb3Jt
OjpjdXJyZW50KCktPnVuaXRUZXN0U3VwcG9ydCgpLT5zZXJ2ZUFzeW5jaHJvbm91c01vY2tlZFJl
cXVlc3RzKCk7CiAgICAgICAgIC8vIFNvbWUgcmVxdWVzdHMgZ2V0IGRlbGF5ZWQsIHJ1biB0aGUg
dGltZXIuCi0gICAgICAgIHdlYmtpdF9zdXBwb3J0OjpSdW5BbGxQZW5kaW5nTWVzc2FnZXMoKTsK
KyAgICAgICAgcnVuUGVuZGluZ1Rhc2tzKCk7CiAgICAgICAgIC8vIFNlcnZlciB0aGUgZGVsYXll
ZCByZXNvdXJjZXMuCi0gICAgICAgIHdlYmtpdF9zdXBwb3J0OjpTZXJ2ZUFzeW5jaHJvbm91c01v
Y2tlZFJlcXVlc3RzKCk7CisgICAgICAgIFBsYXRmb3JtOjpjdXJyZW50KCktPnVuaXRUZXN0U3Vw
cG9ydCgpLT5zZXJ2ZUFzeW5jaHJvbm91c01vY2tlZFJlcXVlc3RzKCk7CiAgICAgfQogCiAgICAg
Y29uc3QgV2ViU3RyaW5nJiBodG1sTWltZVR5cGUoKSBjb25zdCB7IHJldHVybiBtX2h0bWxNaW1l
VHlwZTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9XZWJQYWdl
U2VyaWFsaXplclRlc3QuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9XZWJQYWdl
U2VyaWFsaXplclRlc3QuY3BwCmluZGV4IGNmZWYzNDc1MDJlNDA2M2M4NzZjZTc5MGY2NzNiNzAw
NDdmNTUyMzIuLjExZWZkOTYyNmI3MWY4ODc5NzRmNGMwODdjMDYwMGRkOTMzMTU4MTggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvV2ViUGFnZVNlcmlhbGl6ZXJUZXN0
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL1dlYlBhZ2VTZXJpYWxpemVy
VGVzdC5jcHAKQEAgLTM1LDEzICszNSwxNCBAQAogI2luY2x1ZGUgIldlYkZyYW1lLmgiCiAjaW5j
bHVkZSAiV2ViRnJhbWVDbGllbnQuaCIKICNpbmNsdWRlICJXZWJWaWV3LmgiCisjaW5jbHVkZSA8
cHVibGljL1BsYXRmb3JtLmg+CiAjaW5jbHVkZSA8cHVibGljL1dlYlN0cmluZy5oPgogI2luY2x1
ZGUgPHB1YmxpYy9XZWJVUkwuaD4KICNpbmNsdWRlIDxwdWJsaWMvV2ViVVJMUmVxdWVzdC5oPgog
I2luY2x1ZGUgPHB1YmxpYy9XZWJVUkxSZXNwb25zZS5oPgorI2luY2x1ZGUgPHB1YmxpYy9XZWJV
bml0VGVzdFN1cHBvcnQuaD4KIAogI2luY2x1ZGUgPGd0ZXN0L2d0ZXN0Lmg+Ci0jaW5jbHVkZSA8
d2Via2l0L3N1cHBvcnQvd2Via2l0X3N1cHBvcnQuaD4KIAogdXNpbmcgbmFtZXNwYWNlIFdlYktp
dDsKIHVzaW5nIFdlYktpdDo6VVJMVGVzdEhlbHBlcnM6OnRvS1VSTDsKQEAgLTcwLDcgKzcxLDcg
QEAgcHJvdGVjdGVkOgogCiAgICAgdmlydHVhbCB2b2lkIFRlYXJEb3duKCkKICAgICB7Ci0gICAg
ICAgIHdlYmtpdF9zdXBwb3J0OjpVbnJlZ2lzdGVyQWxsTW9ja2VkVVJMcygpOworICAgICAgICBQ
bGF0Zm9ybTo6Y3VycmVudCgpLT51bml0VGVzdFN1cHBvcnQoKS0+dW5yZWdpc3RlckFsbE1vY2tl
ZFVSTHMoKTsKICAgICAgICAgbV93ZWJWaWV3LT5jbG9zZSgpOwogICAgIH0KIApAQCAtODYsNyAr
ODcsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgICAgIHVybFJlcXVlc3Quc2V0VVJMKHVybCk7CiAgICAg
ICAgIG1fd2ViVmlldy0+bWFpbkZyYW1lKCktPmxvYWRSZXF1ZXN0KHVybFJlcXVlc3QpOwogICAg
ICAgICAvLyBNYWtlIHN1cmUgYW55IHBlbmRpbmcgcmVxdWVzdCBnZXQgc2VydmVkLgotICAgICAg
ICB3ZWJraXRfc3VwcG9ydDo6U2VydmVBc3luY2hyb25vdXNNb2NrZWRSZXF1ZXN0cygpOworICAg
ICAgICBQbGF0Zm9ybTo6Y3VycmVudCgpLT51bml0VGVzdFN1cHBvcnQoKS0+c2VydmVBc3luY2hy
b25vdXNNb2NrZWRSZXF1ZXN0cygpOwogICAgIH0KIAogICAgIHN0YXRpYyBib29sIHdlYlZlY3Rv
ckNvbnRhaW5zKGNvbnN0IFdlYlZlY3RvcjxXZWJVUkw+JiB2ZWN0b3IsIGNvbnN0IGNoYXIqIHVy
bCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvV2ViUGx1Z2luQ29u
dGFpbmVyVGVzdC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL1dlYlBsdWdpbkNv
bnRhaW5lclRlc3QuY3BwCmluZGV4IDUwMDg5YzlkNGQ2MTBkZmYzOTdjNTJmNmYxNDQ5N2EyMDYz
YzU3NjEuLjM1YTg0NzE4ZWIwNWE2NTExMDYyMGUwMDEzOGYwMzUxMDZhNDQ1MGQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvV2ViUGx1Z2luQ29udGFpbmVyVGVzdC5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9XZWJQbHVnaW5Db250YWluZXJU
ZXN0LmNwcApAQCAtNDYsNyArNDYsOSBAQAogI2luY2x1ZGUgIldlYlZpZXcuaCIKICNpbmNsdWRl
ICJXZWJWaWV3SW1wbC5oIgogI2luY2x1ZGUgPGd0ZXN0L2d0ZXN0Lmg+Ci0jaW5jbHVkZSA8d2Vi
a2l0L3N1cHBvcnQvd2Via2l0X3N1cHBvcnQuaD4KKyNpbmNsdWRlIDxwdWJsaWMvUGxhdGZvcm0u
aD4KKyNpbmNsdWRlIDxwdWJsaWMvV2ViVGhyZWFkLmg+CisjaW5jbHVkZSA8cHVibGljL1dlYlVu
aXRUZXN0U3VwcG9ydC5oPgogCiB1c2luZyBuYW1lc3BhY2UgV2ViS2l0OwogCkBAIC02MSw3ICs2
Myw3IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgdm9pZCBUZWFyRG93bigpCiAgICAgewotICAg
ICAgICB3ZWJraXRfc3VwcG9ydDo6VW5yZWdpc3RlckFsbE1vY2tlZFVSTHMoKTsKKyAgICAgICAg
UGxhdGZvcm06OmN1cnJlbnQoKS0+dW5pdFRlc3RTdXBwb3J0KCktPnVucmVnaXN0ZXJBbGxNb2Nr
ZWRVUkxzKCk7CiAgICAgfQogCiBwcm90ZWN0ZWQ6CkBAIC05MSw3ICs5Myw3IEBAIFRFU1RfRihX
ZWJQbHVnaW5Db250YWluZXJUZXN0LCBXaW5kb3dUb0xvY2FsUG9pbnRUZXN0KQogICAgIHdlYlZp
ZXctPnNldHRpbmdzKCktPnNldFBsdWdpbnNFbmFibGVkKHRydWUpOwogICAgIHdlYlZpZXctPnJl
c2l6ZShXZWJTaXplKDMwMCwgMzAwKSk7CiAgICAgd2ViVmlldy0+bGF5b3V0KCk7Ci0gICAgd2Vi
a2l0X3N1cHBvcnQ6OlJ1bkFsbFBlbmRpbmdNZXNzYWdlcygpOworICAgIEZyYW1lVGVzdEhlbHBl
cnM6OnJ1blBlbmRpbmdUYXNrcygpOwogCiAgICAgV2ViUGx1Z2luQ29udGFpbmVyKiBwbHVnaW5D
b250YWluZXJPbmUgPSBnZXRXZWJQbHVnaW5Db250YWluZXIod2ViVmlldywgV2ViU3RyaW5nOjpm
cm9tVVRGOCgidHJhbnNsYXRlZC1wbHVnaW4iKSk7CiAgICAgQVNTRVJUKHBsdWdpbkNvbnRhaW5l
ck9uZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL1dlYlZpZXdU
ZXN0LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvV2ViVmlld1Rlc3QuY3BwCmlu
ZGV4IGYwODUyMmYzODdkMTc2MzViMzlmNzJhNzg2MjgxNGE5MWQyNDQxNDUuLjI0ZmVjZjU1N2Y0
MzhhZDQ5MzcxZjNmMmNmZTZkYTVmYmQ2NGZmZjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vdGVzdHMvV2ViVmlld1Rlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vdGVzdHMvV2ViVmlld1Rlc3QuY3BwCkBAIC00NywxMCArNDcsMTMgQEAKICNpbmNsdWRlICJX
ZWJWaWV3Q2xpZW50LmgiCiAjaW5jbHVkZSAiV2ViVmlld0ltcGwuaCIKICNpbmNsdWRlIDxndGVz
dC9ndGVzdC5oPgorI2luY2x1ZGUgPHB1YmxpYy9QbGF0Zm9ybS5oPgogI2luY2x1ZGUgPHB1Ymxp
Yy9XZWJTaXplLmg+Ci0jaW5jbHVkZSA8d2Via2l0L3N1cHBvcnQvd2Via2l0X3N1cHBvcnQuaD4K
KyNpbmNsdWRlIDxwdWJsaWMvV2ViVGhyZWFkLmg+CisjaW5jbHVkZSA8cHVibGljL1dlYlVuaXRU
ZXN0U3VwcG9ydC5oPgogCiB1c2luZyBuYW1lc3BhY2UgV2ViS2l0OwordXNpbmcgV2ViS2l0OjpG
cmFtZVRlc3RIZWxwZXJzOjpydW5QZW5kaW5nVGFza3M7CiB1c2luZyBXZWJLaXQ6OlVSTFRlc3RI
ZWxwZXJzOjp0b0tVUkw7CiAKIG5hbWVzcGFjZSB7CkBAIC0xNjMsNyArMTY2LDcgQEAgcHVibGlj
OgogCiAgICAgdmlydHVhbCB2b2lkIFRlYXJEb3duKCkKICAgICB7Ci0gICAgICAgIHdlYmtpdF9z
dXBwb3J0OjpVbnJlZ2lzdGVyQWxsTW9ja2VkVVJMcygpOworICAgICAgICBQbGF0Zm9ybTo6Y3Vy
cmVudCgpLT51bml0VGVzdFN1cHBvcnQoKS0+dW5yZWdpc3RlckFsbE1vY2tlZFVSTHMoKTsKICAg
ICB9CiAKIHByb3RlY3RlZDoKQEAgLTU2OSw3ICs1NzIsNyBAQCBzdGF0aWMgYm9vbCB0YXBFbGVt
ZW50QnlJZChXZWJWaWV3KiB3ZWJWaWV3LCBXZWJJbnB1dEV2ZW50OjpUeXBlIHR5cGUsIGNvbnN0
IFdlYgogICAgIGV2ZW50LnkgPSBjZW50ZXIueSgpOwogCiAgICAgd2ViVmlldy0+aGFuZGxlSW5w
dXRFdmVudChldmVudCk7Ci0gICAgd2Via2l0X3N1cHBvcnQ6OlJ1bkFsbFBlbmRpbmdNZXNzYWdl
cygpOworICAgIHJ1blBlbmRpbmdUYXNrcygpOwogICAgIHJldHVybiB0cnVlOwogfQogCkBAIC01
ODEsNyArNTg0LDcgQEAgVEVTVF9GKFdlYlZpZXdUZXN0LCBEZXRlY3RDb250ZW50QXJvdW5kUG9z
aXRpb24pCiAgICAgV2ViVmlldyogd2ViVmlldyA9IEZyYW1lVGVzdEhlbHBlcnM6OmNyZWF0ZVdl
YlZpZXdBbmRMb2FkKG1fYmFzZVVSTCArICJjb250ZW50X2xpc3RlbmVycy5odG1sIiwgdHJ1ZSwg
MCwgJmNsaWVudCk7CiAgICAgd2ViVmlldy0+cmVzaXplKFdlYlNpemUoNTAwLCAzMDApKTsKICAg
ICB3ZWJWaWV3LT5sYXlvdXQoKTsKLSAgICB3ZWJraXRfc3VwcG9ydDo6UnVuQWxsUGVuZGluZ01l
c3NhZ2VzKCk7CisgICAgcnVuUGVuZGluZ1Rhc2tzKCk7CiAKICAgICBXZWJTdHJpbmcgY2xpY2tM
aXN0ZW5lciA9IFdlYlN0cmluZzo6ZnJvbVVURjgoImNsaWNrTGlzdGVuZXIiKTsKICAgICBXZWJT
dHJpbmcgdG91Y2hzdGFydExpc3RlbmVyID0gV2ViU3RyaW5nOjpmcm9tVVRGOCgidG91Y2hzdGFy
dExpc3RlbmVyIik7CkBAIC02MTgsNyArNjIxLDcgQEAgVEVTVF9GKFdlYlZpZXdUZXN0LCBEZXRl
Y3RDb250ZW50QXJvdW5kUG9zaXRpb24pCiAgICAgV2ViR2VzdHVyZUV2ZW50IGV2ZW50OwogICAg
IGV2ZW50LnR5cGUgPSBXZWJJbnB1dEV2ZW50OjpHZXN0dXJlVGFwOwogICAgIHdlYlZpZXctPmhh
bmRsZUlucHV0RXZlbnQoZXZlbnQpOwotICAgIHdlYmtpdF9zdXBwb3J0OjpSdW5BbGxQZW5kaW5n
TWVzc2FnZXMoKTsKKyAgICBydW5QZW5kaW5nVGFza3MoKTsKICAgICBFWFBFQ1RfVFJVRShjbGll
bnQucGVuZGluZ0ludGVudHNDYW5jZWxsZWQoKSk7CiAgICAgd2ViVmlldy0+Y2xvc2UoKTsKIH0K
QEAgLTYzMyw3ICs2MzYsNyBAQCBURVNUX0YoV2ViVmlld1Rlc3QsIENsaWVudFRhcEhhbmRsaW5n
KQogICAgIGV2ZW50LnggPSAzOwogICAgIGV2ZW50LnkgPSA4OwogICAgIHdlYlZpZXctPmhhbmRs
ZUlucHV0RXZlbnQoZXZlbnQpOwotICAgIHdlYmtpdF9zdXBwb3J0OjpSdW5BbGxQZW5kaW5nTWVz
c2FnZXMoKTsKKyAgICBydW5QZW5kaW5nVGFza3MoKTsKICAgICBFWFBFQ1RfRVEoMywgY2xpZW50
LnRhcFgoKSk7CiAgICAgRVhQRUNUX0VRKDgsIGNsaWVudC50YXBZKCkpOwogICAgIGNsaWVudC5y
ZXNldCgpOwpAQCAtNjQxLDcgKzY0NCw3IEBAIFRFU1RfRihXZWJWaWV3VGVzdCwgQ2xpZW50VGFw
SGFuZGxpbmcpCiAgICAgZXZlbnQueCA9IDI1OwogICAgIGV2ZW50LnkgPSA3OwogICAgIHdlYlZp
ZXctPmhhbmRsZUlucHV0RXZlbnQoZXZlbnQpOwotICAgIHdlYmtpdF9zdXBwb3J0OjpSdW5BbGxQ
ZW5kaW5nTWVzc2FnZXMoKTsKKyAgICBydW5QZW5kaW5nVGFza3MoKTsKICAgICBFWFBFQ1RfRVEo
MjUsIGNsaWVudC5sb25ncHJlc3NYKCkpOwogICAgIEVYUEVDVF9FUSg3LCBjbGllbnQubG9uZ3By
ZXNzWSgpKTsKICAgICB3ZWJWaWV3LT5jbG9zZSgpOwpAQCAtNjU1LDcgKzY1OCw3IEBAIFRFU1Rf
RihXZWJWaWV3VGVzdCwgTG9uZ1ByZXNzU2VsZWN0aW9uKQogICAgIFdlYlZpZXcqIHdlYlZpZXcg
PSBGcmFtZVRlc3RIZWxwZXJzOjpjcmVhdGVXZWJWaWV3QW5kTG9hZChtX2Jhc2VVUkwgKyAibG9u
Z3ByZXNzX3NlbGVjdGlvbi5odG1sIiwgdHJ1ZSk7CiAgICAgd2ViVmlldy0+cmVzaXplKFdlYlNp
emUoNTAwLCAzMDApKTsKICAgICB3ZWJWaWV3LT5sYXlvdXQoKTsKLSAgICB3ZWJraXRfc3VwcG9y
dDo6UnVuQWxsUGVuZGluZ01lc3NhZ2VzKCk7CisgICAgcnVuUGVuZGluZ1Rhc2tzKCk7CiAKICAg
ICBXZWJTdHJpbmcgdGFyZ2V0ID0gV2ViU3RyaW5nOjpmcm9tVVRGOCgidGFyZ2V0Iik7CiAgICAg
V2ViU3RyaW5nIG9uc2VsZWN0c3RhcnRmYWxzZSA9IFdlYlN0cmluZzo6ZnJvbVVURjgoIm9uc2Vs
ZWN0c3RhcnRmYWxzZSIpOwpAQCAtNjc1LDcgKzY3OCw3IEBAIFRFU1RfRihXZWJWaWV3VGVzdCwg
U2VsZWN0aW9uT25EaXNhYmxlZElucHV0KQogICAgIFdlYlZpZXcqIHdlYlZpZXcgPSBGcmFtZVRl
c3RIZWxwZXJzOjpjcmVhdGVXZWJWaWV3QW5kTG9hZChtX2Jhc2VVUkwgKyAic2VsZWN0aW9uX2Rp
c2FibGVkLmh0bWwiLCB0cnVlKTsKICAgICB3ZWJWaWV3LT5yZXNpemUoV2ViU2l6ZSg2NDAsIDQ4
MCkpOwogICAgIHdlYlZpZXctPmxheW91dCgpOwotICAgIHdlYmtpdF9zdXBwb3J0OjpSdW5BbGxQ
ZW5kaW5nTWVzc2FnZXMoKTsKKyAgICBydW5QZW5kaW5nVGFza3MoKTsKIAogICAgIHN0ZDo6c3Ry
aW5nIHRlc3RXb3JkID0gIlRoaXMgdGV4dCBzaG91bGQgYmUgc2VsZWN0ZWQuIjsKIApAQCAtNjk5
LDcgKzcwMiw3IEBAIFRFU1RfRihXZWJWaWV3VGVzdCwgU2VsZWN0aW9uT25SZWFkT25seUlucHV0
KQogICAgIFdlYlZpZXcqIHdlYlZpZXcgPSBGcmFtZVRlc3RIZWxwZXJzOjpjcmVhdGVXZWJWaWV3
QW5kTG9hZChtX2Jhc2VVUkwgKyAic2VsZWN0aW9uX3JlYWRvbmx5Lmh0bWwiLCB0cnVlKTsKICAg
ICB3ZWJWaWV3LT5yZXNpemUoV2ViU2l6ZSg2NDAsIDQ4MCkpOwogICAgIHdlYlZpZXctPmxheW91
dCgpOwotICAgIHdlYmtpdF9zdXBwb3J0OjpSdW5BbGxQZW5kaW5nTWVzc2FnZXMoKTsKKyAgICBy
dW5QZW5kaW5nVGFza3MoKTsKIAogICAgIHN0ZDo6c3RyaW5nIHRlc3RXb3JkID0gIlRoaXMgdGV4
dCBzaG91bGQgYmUgc2VsZWN0ZWQuIjsKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>187500</attachid>
            <date>2013-02-10 17:44:37 -0800</date>
            <delta_ts>2013-02-10 18:39:45 -0800</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-109369-20130210174116.patch</filename>
            <type>text/plain</type>
            <size>119517</size>
            <attacher name="James Robinson">jamesr</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQyNDE3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4
IDVlNDg1Mjg1M2M2MTg5MmM5YTUzNmVlNjMzOGM0OTQ4MGNiNDdiOTAuLjY4Y2FkZGE3MDJiNGNi
YTAxYjRlMTRjZTk5ODhjNjdhMmRiYmZhMmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsNDIgQEAKKzIwMTMtMDItMDkgIEphbWVzIFJvYmluc29uICA8amFtZXNyQGNocm9t
aXVtLm9yZz4KKworICAgICAgICBbY2hyb21pdW1dIEVuYWJsZSBtb3JlIG9mIHdlYmtpdF91bml0
X3Rlc3RzIGluIGNvbXBvbmVudCBidWlsZHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTEwOTM2OQorCisgICAgICAgIFJldmlld2VkIGJ5IERhcmluIEZp
c2hlci4KKworICAgICAgICBVcGRhdGVzIGFsbCB3ZWJraXRfdW5pdF90ZXN0cyAoZXhjZXB0IGZv
ciBMZXZlbERCVGVzdCkgdG8gZ28gdGhyb3VnaCB0aGUgUGxhdGZvcm0gQVBJIGluc3RlYWQgb2Yg
ZGlyZWN0bHkKKyAgICAgICAgY2FsbGluZyBpbnRvIHdlYmtpdF9zdXBwb3J0IHNvIHRoZXkgd29y
ayBpbiBjb21wb25lbnQgYnVpbGRzLgorCisgICAgICAgICogV2ViS2l0Lmd5cDoKKyAgICAgICAg
KiB0ZXN0cy9Bc3NvY2lhdGVkVVJMTG9hZGVyVGVzdC5jcHA6CisgICAgICAgICogdGVzdHMvRXZl
bnRMaXN0ZW5lclRlc3QuY3BwOgorICAgICAgICAqIHRlc3RzL0ZyYW1lVGVzdEhlbHBlcnMuY3Bw
OgorICAgICAgICAoV2ViS2l0OjpGcmFtZVRlc3RIZWxwZXJzOjpjcmVhdGVXZWJWaWV3QW5kTG9h
ZCk6CisgICAgICAgIChRdWl0VGFzayk6CisgICAgICAgIChXZWJLaXQ6OkZyYW1lVGVzdEhlbHBl
cnM6OlF1aXRUYXNrOjpydW4pOgorICAgICAgICAoRnJhbWVUZXN0SGVscGVycyk6CisgICAgICAg
IChXZWJLaXQ6OkZyYW1lVGVzdEhlbHBlcnM6OnJ1blBlbmRpbmdUYXNrcyk6CisgICAgICAgICog
dGVzdHMvRnJhbWVUZXN0SGVscGVycy5oOgorICAgICAgICAoRnJhbWVUZXN0SGVscGVycyk6Cisg
ICAgICAgICogdGVzdHMvTGlzdGVuZXJMZWFrVGVzdC5jcHA6CisgICAgICAgICogdGVzdHMvUG9w
dXBNZW51VGVzdC5jcHA6CisgICAgICAgICogdGVzdHMvUHJlcmVuZGVyaW5nVGVzdC5jcHA6Cisg
ICAgICAgICogdGVzdHMvU2Nyb2xsaW5nQ29vcmRpbmF0b3JDaHJvbWl1bVRlc3QuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpTY3JvbGxpbmdDb29yZGluYXRvckNocm9taXVtVGVzdDo6flNjcm9sbGlu
Z0Nvb3JkaW5hdG9yQ2hyb21pdW1UZXN0KToKKyAgICAgICAgKFdlYktpdDo6U2Nyb2xsaW5nQ29v
cmRpbmF0b3JDaHJvbWl1bVRlc3Q6Om5hdmlnYXRlVG8pOgorICAgICAgICAqIHRlc3RzL1VSTFRl
c3RIZWxwZXJzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6VVJMVGVzdEhlbHBlcnM6OnJlZ2lzdGVy
TW9ja2VkVVJMTG9hZCk6CisgICAgICAgICogdGVzdHMvV2ViRnJhbWVUZXN0LmNwcDoKKyAgICAg
ICAgKiB0ZXN0cy9XZWJJbWFnZVRlc3QuY3BwOgorICAgICAgICAoV2ViS2l0OjpyZWFkRmlsZSk6
CisgICAgICAgICogdGVzdHMvV2ViUGFnZU5ld1NlcmlhbGl6ZXJUZXN0LmNwcDoKKyAgICAgICAg
KiB0ZXN0cy9XZWJQYWdlU2VyaWFsaXplclRlc3QuY3BwOgorICAgICAgICAqIHRlc3RzL1dlYlBs
dWdpbkNvbnRhaW5lclRlc3QuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQbHVnaW5Db250YWlu
ZXJUZXN0OjpUZWFyRG93bik6CisgICAgICAgIChXZWJLaXQ6OlRFU1RfRik6CisgICAgICAgICog
dGVzdHMvV2ViVmlld1Rlc3QuY3BwOgorCiAyMDEzLTAyLTA5ICBTdGVwaGVuIENoZW5uZXkgIDxz
Y2hlbm5leUBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgVW5yZXZpZXdlZC4gIFJvbGxlZCBDaHJv
bWl1bSBERVBTIHRvIGxhc3Qta25vd24gZ29vZCByZXZpc2lvbi4gUmVhbGx5IHRoaXMgdGltZS4K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5cCBiL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5cAppbmRleCA0ODg2OWJjZTE2ZWNiNTU4NDNlMzM0NTQw
MjQwZTAwOTVhY2EzYjAzLi5iNDU0NTliZDQyMDk5ZTIyYTUwNTY1M2JkZGRiM2VlMmIxOTFjNzUz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL1dlYktpdC5neXAKKysrIGIvU291
cmNlL1dlYktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lwCkBAIC02NTMsMjcgKzY1Myw3IEBACiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgV2Ugc2hvdWxkIG5vdCBpbmNsdWRlIGZpbGVz
IGRlcGVuZGluZyBvbiB3ZWJraXRfc3VwcG9ydC4KICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIyBUaGVzZSB0ZXN0cyBkZXBlbmQgb24gd2Via2l0X3N1cHBvcnQgYW5kCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICMgZnVuY3Rpb25zIGRlZmluZWQgb25seSBpbiAhV0VC
S0lUX0lNUExFTUVOVEFUSU9OLgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAndGVz
dHMvQXNzb2NpYXRlZFVSTExvYWRlclRlc3QuY3BwJywKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgJ3Rlc3RzL0V2ZW50TGlzdGVuZXJUZXN0LmNwcCcsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICd0ZXN0cy9GYWtlV2ViUGx1Z2luLmNwcCcsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICd0ZXN0cy9GcmFtZVRlc3RIZWxwZXJzLmNwcCcsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICd0ZXN0cy9JREJCaW5kaW5nVXRpbGl0aWVzVGVzdC5j
cHAnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAndGVzdHMvSURCUmVxdWVzdFRl
c3QuY3BwJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3Rlc3RzL0xldmVsREJU
ZXN0LmNwcCcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICd0ZXN0cy9MaXN0ZW5l
ckxlYWtUZXN0LmNwcCcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICd0ZXN0cy9M
aW5rSGlnaGxpZ2h0VGVzdC5jcHAnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAn
dGVzdHMvUG9wdXBNZW51VGVzdC5jcHAnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAndGVzdHMvUHJlcmVuZGVyaW5nVGVzdC5jcHAnLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAndGVzdHMvUmVuZGVyVGFibGVDZWxsVGVzdC5jcHAnLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAndGVzdHMvUmVuZGVyVGFibGVSb3dUZXN0LmNwcCcsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICd0ZXN0cy9TY3JvbGxpbmdDb29yZGluYXRvckNocm9t
aXVtVGVzdC5jcHAnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAndGVzdHMvVVJM
VGVzdEhlbHBlcnMuY3BwJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3Rlc3Rz
L1dlYkZyYW1lVGVzdC5jcHAnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAndGVz
dHMvV2ViSW1hZ2VUZXN0LmNwcCcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICd0
ZXN0cy9XZWJQYWdlTmV3U2VyaWFsaXplclRlc3QuY3BwJywKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgJ3Rlc3RzL1dlYlBhZ2VTZXJpYWxpemVyVGVzdC5jcHAnLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAndGVzdHMvV2ViUGx1Z2luQ29udGFpbmVyVGVzdC5jcHAn
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAndGVzdHMvV2ViVmlld1Rlc3QuY3Bw
JywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICdjb25kaXRpb25zJzogWwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBb
J09TPT0id2luIiBvciBPUz09Im1hYyInLCB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL3Rlc3RzL0Fzc29jaWF0ZWRVUkxMb2FkZXJUZXN0LmNwcCBiL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vdGVzdHMvQXNzb2NpYXRlZFVSTExvYWRlclRlc3QuY3BwCmluZGV4IDhhYmEzYjYx
NDZiMjBjZWY0M2I5MDIyMGJiMjA1OGVjZGU2OWE5Y2YuLjY3NjU4ZDQ5Y2M5YmI3MjViY2MxYTgw
YTg4YzZhNTQ4YjUxNjM4N2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVz
dHMvQXNzb2NpYXRlZFVSTExvYWRlclRlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vdGVzdHMvQXNzb2NpYXRlZFVSTExvYWRlclRlc3QuY3BwCkBAIC0zNSwxNiArMzUsMTggQEAK
ICNpbmNsdWRlICJXZWJGcmFtZUNsaWVudC5oIgogI2luY2x1ZGUgIldlYlVSTExvYWRlck9wdGlv
bnMuaCIKICNpbmNsdWRlICJXZWJWaWV3LmgiCisjaW5jbHVkZSA8cHVibGljL1BsYXRmb3JtLmg+
CiAjaW5jbHVkZSA8cHVibGljL1dlYlN0cmluZy5oPgorI2luY2x1ZGUgPHB1YmxpYy9XZWJUaHJl
YWQuaD4KICNpbmNsdWRlIDxwdWJsaWMvV2ViVVJMLmg+CiAjaW5jbHVkZSA8cHVibGljL1dlYlVS
TExvYWRlci5oPgogI2luY2x1ZGUgPHB1YmxpYy9XZWJVUkxMb2FkZXJDbGllbnQuaD4KICNpbmNs
dWRlIDxwdWJsaWMvV2ViVVJMUmVxdWVzdC5oPgogI2luY2x1ZGUgPHB1YmxpYy9XZWJVUkxSZXNw
b25zZS5oPgorI2luY2x1ZGUgPHB1YmxpYy9XZWJVbml0VGVzdFN1cHBvcnQuaD4KICNpbmNsdWRl
IDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAogI2luY2x1ZGUgPGd0ZXN0L2d0ZXN0Lmg+Ci0jaW5j
bHVkZSA8d2Via2l0L3N1cHBvcnQvd2Via2l0X3N1cHBvcnQuaD4KIAogdXNpbmcgbmFtZXNwYWNl
IFdlYktpdDsKIHVzaW5nIFdlYktpdDo6VVJMVGVzdEhlbHBlcnM6OnRvS1VSTDsKQEAgLTc3LDcg
Kzc5LDcgQEAgcHVibGljOgogICAgICAgICAsICBtX3J1bm5pbmdNZXNzYWdlTG9vcChmYWxzZSkK
ICAgICB7CiAgICAgICAgIC8vIFJldXNlIG9uZSBvZiB0aGUgdGVzdCBmaWxlcyBmcm9tIFdlYkZy
YW1lVGVzdC4KLSAgICAgICAgc3RkOjpzdHJpbmcgZmlsZVBhdGggPSBzdGQ6OnN0cmluZyh3ZWJr
aXRfc3VwcG9ydDo6R2V0V2ViS2l0Um9vdERpcigpLnV0ZjgoKS5kYXRhKCkpOworICAgICAgICBz
dGQ6OnN0cmluZyBmaWxlUGF0aCA9IHN0ZDo6c3RyaW5nKFBsYXRmb3JtOjpjdXJyZW50KCktPnVu
aXRUZXN0U3VwcG9ydCgpLT53ZWJLaXRSb290RGlyKCkudXRmOCgpLmRhdGEoKSk7CiAgICAgICAg
IGZpbGVQYXRoICs9ICIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9kYXRhL2lmcmFtZXNf
dGVzdC5odG1sIjsKICAgICAgICAgbV9mcmFtZUZpbGVQYXRoID0gV2ViU3RyaW5nOjpmcm9tVVRG
OChmaWxlUGF0aC5jX3N0cigpKTsKICAgICB9CkBAIC05Miw3ICs5NCw3IEBAIHB1YmxpYzoKICAg
ICAgICAgV2ViVVJMUmVzcG9uc2UgcmVzcG9uc2U7CiAgICAgICAgIHJlc3BvbnNlLmluaXRpYWxp
emUoKTsKICAgICAgICAgcmVzcG9uc2Uuc2V0TUlNRVR5cGUoInRleHQvaHRtbCIpOwotICAgICAg
ICB3ZWJraXRfc3VwcG9ydDo6UmVnaXN0ZXJNb2NrZWRVUkwodXJsLCByZXNwb25zZSwgbV9mcmFt
ZUZpbGVQYXRoKTsKKyAgICAgICAgUGxhdGZvcm06OmN1cnJlbnQoKS0+dW5pdFRlc3RTdXBwb3J0
KCktPnJlZ2lzdGVyTW9ja2VkVVJMKHVybCwgcmVzcG9uc2UsIG1fZnJhbWVGaWxlUGF0aCk7CiAK
ICAgICAgICAgV2ViVVJMUmVxdWVzdCByZXF1ZXN0OwogICAgICAgICByZXF1ZXN0LmluaXRpYWxp
emUoKTsKQEAgLTEwMCwxOCArMTAyLDE4IEBAIHB1YmxpYzoKICAgICAgICAgbV93ZWJWaWV3LT5t
YWluRnJhbWUoKS0+bG9hZFJlcXVlc3QocmVxdWVzdCk7CiAgICAgICAgIHNlcnZlUmVxdWVzdHMo
KTsKIAotICAgICAgICB3ZWJraXRfc3VwcG9ydDo6VW5yZWdpc3Rlck1vY2tlZFVSTCh1cmwpOwor
ICAgICAgICBQbGF0Zm9ybTo6Y3VycmVudCgpLT51bml0VGVzdFN1cHBvcnQoKS0+dW5yZWdpc3Rl
ck1vY2tlZFVSTCh1cmwpOwogICAgIH0KIAogICAgIHZvaWQgVGVhckRvd24oKQogICAgIHsKLSAg
ICAgICAgd2Via2l0X3N1cHBvcnQ6OlVucmVnaXN0ZXJBbGxNb2NrZWRVUkxzKCk7CisgICAgICAg
IFBsYXRmb3JtOjpjdXJyZW50KCktPnVuaXRUZXN0U3VwcG9ydCgpLT51bnJlZ2lzdGVyQWxsTW9j
a2VkVVJMcygpOwogICAgICAgICBtX3dlYlZpZXctPmNsb3NlKCk7CiAgICAgfQogCiAgICAgdm9p
ZCBzZXJ2ZVJlcXVlc3RzKCkKICAgICB7Ci0gICAgICAgIHdlYmtpdF9zdXBwb3J0OjpTZXJ2ZUFz
eW5jaHJvbm91c01vY2tlZFJlcXVlc3RzKCk7CisgICAgICAgIFBsYXRmb3JtOjpjdXJyZW50KCkt
PnVuaXRUZXN0U3VwcG9ydCgpLT5zZXJ2ZUFzeW5jaHJvbm91c01vY2tlZFJlcXVlc3RzKCk7CiAg
ICAgfQogCiAgICAgV2ViVVJMTG9hZGVyKiBjcmVhdGVBc3NvY2lhdGVkVVJMTG9hZGVyKGNvbnN0
IFdlYlVSTExvYWRlck9wdGlvbnMgb3B0aW9ucyA9IFdlYlVSTExvYWRlck9wdGlvbnMoKSkKQEAg
LTE3Nyw3ICsxNzksNyBAQCBwdWJsaWM6CiAgICAgICAgIEVYUEVDVF9FUShtX2V4cGVjdGVkTG9h
ZGVyLCBsb2FkZXIpOwogICAgICAgICBpZiAobV9ydW5uaW5nTWVzc2FnZUxvb3ApIHsKICAgICAg
ICAgICAgIG1fcnVubmluZ01lc3NhZ2VMb29wID0gZmFsc2U7Ci0gICAgICAgICAgICB3ZWJraXRf
c3VwcG9ydDo6UXVpdE1lc3NhZ2VMb29wKCk7CisgICAgICAgICAgICBQbGF0Zm9ybTo6Y3VycmVu
dCgpLT5jdXJyZW50VGhyZWFkKCktPmV4aXRSdW5Mb29wKCk7CiAgICAgICAgIH0KICAgICB9CiAK
QEAgLTIxOCw3ICsyMjAsNyBAQCBwdWJsaWM6CiAgICAgICAgIEVYUEVDVF9GQUxTRShtX2RpZEZh
aWwpOwogICAgICAgICAvLyBBbGxvdyB0aGUgbG9hZGVyIHRvIHJldHVybiB0aGUgZXJyb3IuCiAg
ICAgICAgIG1fcnVubmluZ01lc3NhZ2VMb29wID0gdHJ1ZTsKLSAgICAgICAgd2Via2l0X3N1cHBv
cnQ6OlJ1bk1lc3NhZ2VMb29wKCk7CisgICAgICAgIFBsYXRmb3JtOjpjdXJyZW50KCktPmN1cnJl
bnRUaHJlYWQoKS0+ZW50ZXJSdW5Mb29wKCk7CiAgICAgICAgIEVYUEVDVF9UUlVFKG1fZGlkRmFp
bCk7CiAgICAgICAgIEVYUEVDVF9GQUxTRShtX2RpZFJlY2VpdmVSZXNwb25zZSk7CiAgICAgfQpA
QCAtMjQ0LDcgKzI0Niw3IEBAIHB1YmxpYzoKICAgICAgICAgaWYgKGV4cG9zZWQpCiAgICAgICAg
ICAgICBtX2V4cGVjdGVkUmVzcG9uc2UuYWRkSFRUUEhlYWRlckZpZWxkKCJhY2Nlc3MtY29udHJv
bC1leHBvc2UtaGVhZGVycyIsIGhlYWRlck5hbWVTdHJpbmcpOwogICAgICAgICBtX2V4cGVjdGVk
UmVzcG9uc2UuYWRkSFRUUEhlYWRlckZpZWxkKGhlYWRlck5hbWVTdHJpbmcsICJmb28iKTsKLSAg
ICAgICAgd2Via2l0X3N1cHBvcnQ6OlJlZ2lzdGVyTW9ja2VkVVJMKHVybCwgbV9leHBlY3RlZFJl
c3BvbnNlLCBtX2ZyYW1lRmlsZVBhdGgpOworICAgICAgICBQbGF0Zm9ybTo6Y3VycmVudCgpLT51
bml0VGVzdFN1cHBvcnQoKS0+cmVnaXN0ZXJNb2NrZWRVUkwodXJsLCBtX2V4cGVjdGVkUmVzcG9u
c2UsIG1fZnJhbWVGaWxlUGF0aCk7CiAKICAgICAgICAgV2ViVVJMTG9hZGVyT3B0aW9ucyBvcHRp
b25zOwogICAgICAgICBvcHRpb25zLmNyb3NzT3JpZ2luUmVxdWVzdFBvbGljeSA9IFdlYlVSTExv
YWRlck9wdGlvbnM6OkNyb3NzT3JpZ2luUmVxdWVzdFBvbGljeVVzZUFjY2Vzc0NvbnRyb2w7CkBA
IC0yOTEsNyArMjkzLDcgQEAgVEVTVF9GKEFzc29jaWF0ZWRVUkxMb2FkZXJUZXN0LCBTYW1lT3Jp
Z2luU3VjY2VzcykKICAgICBtX2V4cGVjdGVkUmVzcG9uc2UgPSBXZWJVUkxSZXNwb25zZSgpOwog
ICAgIG1fZXhwZWN0ZWRSZXNwb25zZS5pbml0aWFsaXplKCk7CiAgICAgbV9leHBlY3RlZFJlc3Bv
bnNlLnNldE1JTUVUeXBlKCJ0ZXh0L2h0bWwiKTsKLSAgICB3ZWJraXRfc3VwcG9ydDo6UmVnaXN0
ZXJNb2NrZWRVUkwodXJsLCBtX2V4cGVjdGVkUmVzcG9uc2UsIG1fZnJhbWVGaWxlUGF0aCk7Cisg
ICAgUGxhdGZvcm06OmN1cnJlbnQoKS0+dW5pdFRlc3RTdXBwb3J0KCktPnJlZ2lzdGVyTW9ja2Vk
VVJMKHVybCwgbV9leHBlY3RlZFJlc3BvbnNlLCBtX2ZyYW1lRmlsZVBhdGgpOwogCiAgICAgbV9l
eHBlY3RlZExvYWRlciA9IGNyZWF0ZUFzc29jaWF0ZWRVUkxMb2FkZXIoKTsKICAgICBFWFBFQ1Rf
VFJVRShtX2V4cGVjdGVkTG9hZGVyKTsKQEAgLTMyNSw3ICszMjcsNyBAQCBURVNUX0YoQXNzb2Np
YXRlZFVSTExvYWRlclRlc3QsIENyb3NzT3JpZ2luU3VjY2VzcykKICAgICBtX2V4cGVjdGVkUmVz
cG9uc2UgPSBXZWJVUkxSZXNwb25zZSgpOwogICAgIG1fZXhwZWN0ZWRSZXNwb25zZS5pbml0aWFs
aXplKCk7CiAgICAgbV9leHBlY3RlZFJlc3BvbnNlLnNldE1JTUVUeXBlKCJ0ZXh0L2h0bWwiKTsK
LSAgICB3ZWJraXRfc3VwcG9ydDo6UmVnaXN0ZXJNb2NrZWRVUkwodXJsLCBtX2V4cGVjdGVkUmVz
cG9uc2UsIG1fZnJhbWVGaWxlUGF0aCk7CisgICAgUGxhdGZvcm06OmN1cnJlbnQoKS0+dW5pdFRl
c3RTdXBwb3J0KCktPnJlZ2lzdGVyTW9ja2VkVVJMKHVybCwgbV9leHBlY3RlZFJlc3BvbnNlLCBt
X2ZyYW1lRmlsZVBhdGgpOwogCiAgICAgV2ViVVJMTG9hZGVyT3B0aW9ucyBvcHRpb25zOwogICAg
IG9wdGlvbnMuY3Jvc3NPcmlnaW5SZXF1ZXN0UG9saWN5ID0gV2ViVVJMTG9hZGVyT3B0aW9uczo6
Q3Jvc3NPcmlnaW5SZXF1ZXN0UG9saWN5QWxsb3c7CkBAIC0zNTEsNyArMzUzLDcgQEAgVEVTVF9G
KEFzc29jaWF0ZWRVUkxMb2FkZXJUZXN0LCBDcm9zc09yaWdpbldpdGhBY2Nlc3NDb250cm9sU3Vj
Y2VzcykKICAgICBtX2V4cGVjdGVkUmVzcG9uc2UuaW5pdGlhbGl6ZSgpOwogICAgIG1fZXhwZWN0
ZWRSZXNwb25zZS5zZXRNSU1FVHlwZSgidGV4dC9odG1sIik7CiAgICAgbV9leHBlY3RlZFJlc3Bv
bnNlLmFkZEhUVFBIZWFkZXJGaWVsZCgiYWNjZXNzLWNvbnRyb2wtYWxsb3ctb3JpZ2luIiwgIioi
KTsKLSAgICB3ZWJraXRfc3VwcG9ydDo6UmVnaXN0ZXJNb2NrZWRVUkwodXJsLCBtX2V4cGVjdGVk
UmVzcG9uc2UsIG1fZnJhbWVGaWxlUGF0aCk7CisgICAgUGxhdGZvcm06OmN1cnJlbnQoKS0+dW5p
dFRlc3RTdXBwb3J0KCktPnJlZ2lzdGVyTW9ja2VkVVJMKHVybCwgbV9leHBlY3RlZFJlc3BvbnNl
LCBtX2ZyYW1lRmlsZVBhdGgpOwogCiAgICAgV2ViVVJMTG9hZGVyT3B0aW9ucyBvcHRpb25zOwog
ICAgIG9wdGlvbnMuY3Jvc3NPcmlnaW5SZXF1ZXN0UG9saWN5ID0gV2ViVVJMTG9hZGVyT3B0aW9u
czo6Q3Jvc3NPcmlnaW5SZXF1ZXN0UG9saWN5VXNlQWNjZXNzQ29udHJvbDsKQEAgLTM3Nyw3ICsz
NzksNyBAQCBURVNUX0YoQXNzb2NpYXRlZFVSTExvYWRlclRlc3QsIENyb3NzT3JpZ2luV2l0aEFj
Y2Vzc0NvbnRyb2xGYWlsdXJlKQogICAgIG1fZXhwZWN0ZWRSZXNwb25zZS5pbml0aWFsaXplKCk7
CiAgICAgbV9leHBlY3RlZFJlc3BvbnNlLnNldE1JTUVUeXBlKCJ0ZXh0L2h0bWwiKTsKICAgICBt
X2V4cGVjdGVkUmVzcG9uc2UuYWRkSFRUUEhlYWRlckZpZWxkKCJhY2Nlc3MtY29udHJvbC1hbGxv
dy1vcmlnaW4iLCAiKiIpOwotICAgIHdlYmtpdF9zdXBwb3J0OjpSZWdpc3Rlck1vY2tlZFVSTCh1
cmwsIG1fZXhwZWN0ZWRSZXNwb25zZSwgbV9mcmFtZUZpbGVQYXRoKTsKKyAgICBQbGF0Zm9ybTo6
Y3VycmVudCgpLT51bml0VGVzdFN1cHBvcnQoKS0+cmVnaXN0ZXJNb2NrZWRVUkwodXJsLCBtX2V4
cGVjdGVkUmVzcG9uc2UsIG1fZnJhbWVGaWxlUGF0aCk7CiAKICAgICBXZWJVUkxMb2FkZXJPcHRp
b25zIG9wdGlvbnM7CiAgICAgLy8gU2VuZCBjcmVkZW50aWFscy4gVGhpcyB3aWxsIGNhdXNlIHRo
ZSBDT1JTIGNoZWNrcyB0byBmYWlsLCBiZWNhdXNlIGNyZWRlbnRpYWxzIGNhbid0IGJlCkBAIC00
MTIsNyArNDE0LDcgQEAgVEVTVF9GKEFzc29jaWF0ZWRVUkxMb2FkZXJUZXN0LCBSZWRpcmVjdFN1
Y2Nlc3MpCiAgICAgbV9leHBlY3RlZFJlZGlyZWN0UmVzcG9uc2Uuc2V0TUlNRVR5cGUoInRleHQv
aHRtbCIpOwogICAgIG1fZXhwZWN0ZWRSZWRpcmVjdFJlc3BvbnNlLnNldEhUVFBTdGF0dXNDb2Rl
KDMwMSk7CiAgICAgbV9leHBlY3RlZFJlZGlyZWN0UmVzcG9uc2Uuc2V0SFRUUEhlYWRlckZpZWxk
KCJMb2NhdGlvbiIsIHJlZGlyZWN0KTsKLSAgICB3ZWJraXRfc3VwcG9ydDo6UmVnaXN0ZXJNb2Nr
ZWRVUkwodXJsLCBtX2V4cGVjdGVkUmVkaXJlY3RSZXNwb25zZSwgbV9mcmFtZUZpbGVQYXRoKTsK
KyAgICBQbGF0Zm9ybTo6Y3VycmVudCgpLT51bml0VGVzdFN1cHBvcnQoKS0+cmVnaXN0ZXJNb2Nr
ZWRVUkwodXJsLCBtX2V4cGVjdGVkUmVkaXJlY3RSZXNwb25zZSwgbV9mcmFtZUZpbGVQYXRoKTsK
IAogICAgIG1fZXhwZWN0ZWROZXdSZXF1ZXN0ID0gV2ViVVJMUmVxdWVzdCgpOwogICAgIG1fZXhw
ZWN0ZWROZXdSZXF1ZXN0LmluaXRpYWxpemUoKTsKQEAgLTQyMSw3ICs0MjMsNyBAQCBURVNUX0Yo
QXNzb2NpYXRlZFVSTExvYWRlclRlc3QsIFJlZGlyZWN0U3VjY2VzcykKICAgICBtX2V4cGVjdGVk
UmVzcG9uc2UgPSBXZWJVUkxSZXNwb25zZSgpOwogICAgIG1fZXhwZWN0ZWRSZXNwb25zZS5pbml0
aWFsaXplKCk7CiAgICAgbV9leHBlY3RlZFJlc3BvbnNlLnNldE1JTUVUeXBlKCJ0ZXh0L2h0bWwi
KTsKLSAgICB3ZWJraXRfc3VwcG9ydDo6UmVnaXN0ZXJNb2NrZWRVUkwocmVkaXJlY3RVUkwsIG1f
ZXhwZWN0ZWRSZXNwb25zZSwgbV9mcmFtZUZpbGVQYXRoKTsKKyAgICBQbGF0Zm9ybTo6Y3VycmVu
dCgpLT51bml0VGVzdFN1cHBvcnQoKS0+cmVnaXN0ZXJNb2NrZWRVUkwocmVkaXJlY3RVUkwsIG1f
ZXhwZWN0ZWRSZXNwb25zZSwgbV9mcmFtZUZpbGVQYXRoKTsKIAogICAgIG1fZXhwZWN0ZWRMb2Fk
ZXIgPSBjcmVhdGVBc3NvY2lhdGVkVVJMTG9hZGVyKCk7CiAgICAgRVhQRUNUX1RSVUUobV9leHBl
Y3RlZExvYWRlcik7CkBAIC00NTAsNyArNDUyLDcgQEAgVEVTVF9GKEFzc29jaWF0ZWRVUkxMb2Fk
ZXJUZXN0LCBSZWRpcmVjdENyb3NzT3JpZ2luV2l0aEFjY2Vzc0NvbnRyb2xGYWlsdXJlKQogICAg
IG1fZXhwZWN0ZWRSZWRpcmVjdFJlc3BvbnNlLnNldE1JTUVUeXBlKCJ0ZXh0L2h0bWwiKTsKICAg
ICBtX2V4cGVjdGVkUmVkaXJlY3RSZXNwb25zZS5zZXRIVFRQU3RhdHVzQ29kZSgzMDEpOwogICAg
IG1fZXhwZWN0ZWRSZWRpcmVjdFJlc3BvbnNlLnNldEhUVFBIZWFkZXJGaWVsZCgiTG9jYXRpb24i
LCByZWRpcmVjdCk7Ci0gICAgd2Via2l0X3N1cHBvcnQ6OlJlZ2lzdGVyTW9ja2VkVVJMKHVybCwg
bV9leHBlY3RlZFJlZGlyZWN0UmVzcG9uc2UsIG1fZnJhbWVGaWxlUGF0aCk7CisgICAgUGxhdGZv
cm06OmN1cnJlbnQoKS0+dW5pdFRlc3RTdXBwb3J0KCktPnJlZ2lzdGVyTW9ja2VkVVJMKHVybCwg
bV9leHBlY3RlZFJlZGlyZWN0UmVzcG9uc2UsIG1fZnJhbWVGaWxlUGF0aCk7CiAKICAgICBXZWJV
UkxMb2FkZXJPcHRpb25zIG9wdGlvbnM7CiAgICAgb3B0aW9ucy5jcm9zc09yaWdpblJlcXVlc3RQ
b2xpY3kgPSBXZWJVUkxMb2FkZXJPcHRpb25zOjpDcm9zc09yaWdpblJlcXVlc3RQb2xpY3lVc2VB
Y2Nlc3NDb250cm9sOwpAQCAtNDgzLDcgKzQ4NSw3IEBAIFRFU1RfRihBc3NvY2lhdGVkVVJMTG9h
ZGVyVGVzdCwgUmVkaXJlY3RDcm9zc09yaWdpbldpdGhBY2Nlc3NDb250cm9sU3VjY2VzcykKICAg
ICBtX2V4cGVjdGVkUmVkaXJlY3RSZXNwb25zZS5zZXRIVFRQU3RhdHVzQ29kZSgzMDEpOwogICAg
IG1fZXhwZWN0ZWRSZWRpcmVjdFJlc3BvbnNlLnNldEhUVFBIZWFkZXJGaWVsZCgiTG9jYXRpb24i
LCByZWRpcmVjdCk7CiAgICAgbV9leHBlY3RlZFJlZGlyZWN0UmVzcG9uc2UuYWRkSFRUUEhlYWRl
ckZpZWxkKCJhY2Nlc3MtY29udHJvbC1hbGxvdy1vcmlnaW4iLCAiKiIpOwotICAgIHdlYmtpdF9z
dXBwb3J0OjpSZWdpc3Rlck1vY2tlZFVSTCh1cmwsIG1fZXhwZWN0ZWRSZWRpcmVjdFJlc3BvbnNl
LCBtX2ZyYW1lRmlsZVBhdGgpOworICAgIFBsYXRmb3JtOjpjdXJyZW50KCktPnVuaXRUZXN0U3Vw
cG9ydCgpLT5yZWdpc3Rlck1vY2tlZFVSTCh1cmwsIG1fZXhwZWN0ZWRSZWRpcmVjdFJlc3BvbnNl
LCBtX2ZyYW1lRmlsZVBhdGgpOwogCiAgICAgbV9leHBlY3RlZE5ld1JlcXVlc3QgPSBXZWJVUkxS
ZXF1ZXN0KCk7CiAgICAgbV9leHBlY3RlZE5ld1JlcXVlc3QuaW5pdGlhbGl6ZSgpOwpAQCAtNDkz
LDcgKzQ5NSw3IEBAIFRFU1RfRihBc3NvY2lhdGVkVVJMTG9hZGVyVGVzdCwgUmVkaXJlY3RDcm9z
c09yaWdpbldpdGhBY2Nlc3NDb250cm9sU3VjY2VzcykKICAgICBtX2V4cGVjdGVkUmVzcG9uc2Uu
aW5pdGlhbGl6ZSgpOwogICAgIG1fZXhwZWN0ZWRSZXNwb25zZS5zZXRNSU1FVHlwZSgidGV4dC9o
dG1sIik7CiAgICAgbV9leHBlY3RlZFJlc3BvbnNlLmFkZEhUVFBIZWFkZXJGaWVsZCgiYWNjZXNz
LWNvbnRyb2wtYWxsb3ctb3JpZ2luIiwgIioiKTsKLSAgICB3ZWJraXRfc3VwcG9ydDo6UmVnaXN0
ZXJNb2NrZWRVUkwocmVkaXJlY3RVUkwsIG1fZXhwZWN0ZWRSZXNwb25zZSwgbV9mcmFtZUZpbGVQ
YXRoKTsKKyAgICBQbGF0Zm9ybTo6Y3VycmVudCgpLT51bml0VGVzdFN1cHBvcnQoKS0+cmVnaXN0
ZXJNb2NrZWRVUkwocmVkaXJlY3RVUkwsIG1fZXhwZWN0ZWRSZXNwb25zZSwgbV9mcmFtZUZpbGVQ
YXRoKTsKIAogICAgIFdlYlVSTExvYWRlck9wdGlvbnMgb3B0aW9uczsKICAgICBvcHRpb25zLmNy
b3NzT3JpZ2luUmVxdWVzdFBvbGljeSA9IFdlYlVSTExvYWRlck9wdGlvbnM6OkNyb3NzT3JpZ2lu
UmVxdWVzdFBvbGljeVVzZUFjY2Vzc0NvbnRyb2w7CkBAIC02MDAsNyArNjAyLDcgQEAgVEVTVF9G
KEFzc29jaWF0ZWRVUkxMb2FkZXJUZXN0LCBDcm9zc09yaWdpbkhlYWRlckFsbG93UmVzcG9uc2VI
ZWFkZXJzKQogICAgIG1fZXhwZWN0ZWRSZXNwb25zZS5zZXRNSU1FVHlwZSgidGV4dC9odG1sIik7
CiAgICAgbV9leHBlY3RlZFJlc3BvbnNlLmFkZEhUVFBIZWFkZXJGaWVsZCgiQWNjZXNzLUNvbnRy
b2wtQWxsb3ctT3JpZ2luIiwgIioiKTsKICAgICBtX2V4cGVjdGVkUmVzcG9uc2UuYWRkSFRUUEhl
YWRlckZpZWxkKGhlYWRlck5hbWVTdHJpbmcsICJmb28iKTsKLSAgICB3ZWJraXRfc3VwcG9ydDo6
UmVnaXN0ZXJNb2NrZWRVUkwodXJsLCBtX2V4cGVjdGVkUmVzcG9uc2UsIG1fZnJhbWVGaWxlUGF0
aCk7CisgICAgUGxhdGZvcm06OmN1cnJlbnQoKS0+dW5pdFRlc3RTdXBwb3J0KCktPnJlZ2lzdGVy
TW9ja2VkVVJMKHVybCwgbV9leHBlY3RlZFJlc3BvbnNlLCBtX2ZyYW1lRmlsZVBhdGgpOwogCiAg
ICAgV2ViVVJMTG9hZGVyT3B0aW9ucyBvcHRpb25zOwogICAgIG9wdGlvbnMuZXhwb3NlQWxsUmVz
cG9uc2VIZWFkZXJzID0gdHJ1ZTsgLy8gVGhpcyB0dXJucyBvZmYgcmVzcG9uc2Ugd2hpdGVsaXN0
aW5nLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9FdmVudExpc3Rl
bmVyVGVzdC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0V2ZW50TGlzdGVuZXJU
ZXN0LmNwcAppbmRleCA0MjU1NDY5NTI1MWViYzA3ZjFlYzJiY2ZiNjJjYzY1NmI2YzI5N2Q1Li42
Mjk1NDBmNWZjZWEyODIzYjQ0M2IxYzNlN2I1ZjM5YmI2ZDg4M2E5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0V2ZW50TGlzdGVuZXJUZXN0LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0V2ZW50TGlzdGVuZXJUZXN0LmNwcApAQCAtNDEsNyAr
NDEsOCBAQAogI2luY2x1ZGUgIldlYlNjcmlwdFNvdXJjZS5oIgogI2luY2x1ZGUgIldlYlZpZXcu
aCIKICNpbmNsdWRlIDxndGVzdC9ndGVzdC5oPgotI2luY2x1ZGUgPHdlYmtpdC9zdXBwb3J0L3dl
YmtpdF9zdXBwb3J0Lmg+CisjaW5jbHVkZSA8cHVibGljL1BsYXRmb3JtLmg+CisjaW5jbHVkZSA8
cHVibGljL1dlYlVuaXRUZXN0U3VwcG9ydC5oPgogCiB1c2luZyBuYW1lc3BhY2UgV2ViS2l0Owog
CkBAIC04Niw3ICs4Nyw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgVGVhckRvd24oKSBP
VkVSUklERQogICAgIHsKICAgICAgICAgbV93ZWJWaWV3LT5jbG9zZSgpOwotICAgICAgICB3ZWJr
aXRfc3VwcG9ydDo6VW5yZWdpc3RlckFsbE1vY2tlZFVSTHMoKTsKKyAgICAgICAgUGxhdGZvcm06
OmN1cnJlbnQoKS0+dW5pdFRlc3RTdXBwb3J0KCktPnVucmVnaXN0ZXJBbGxNb2NrZWRVUkxzKCk7
CiAgICAgfQogCiAgICAgV2ViRnJhbWUqIG1haW5GcmFtZSgpIGNvbnN0CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0ZyYW1lVGVzdEhlbHBlcnMuY3BwIGIvU291cmNl
L1dlYktpdC9jaHJvbWl1bS90ZXN0cy9GcmFtZVRlc3RIZWxwZXJzLmNwcAppbmRleCA4NmNjNTY0
Nzc5ZWU3MzE4OTljMzVmNzU2NmE0YTEwOTYyNGYzY2EwLi42MjM4MDY4Yjg0ZTA2NjIzODM5OTVl
N2YyMjg4MzBlNWViZDhmMmI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rl
c3RzL0ZyYW1lVGVzdEhlbHBlcnMuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVz
dHMvRnJhbWVUZXN0SGVscGVycy5jcHAKQEAgLTM4LDEwICszOCwxMiBAQAogI2luY2x1ZGUgIldl
YlNldHRpbmdzLmgiCiAjaW5jbHVkZSAiV2ViVmlldy5oIgogI2luY2x1ZGUgIldlYlZpZXdDbGll
bnQuaCIKKyNpbmNsdWRlIDxwdWJsaWMvUGxhdGZvcm0uaD4KICNpbmNsdWRlIDxwdWJsaWMvV2Vi
U3RyaW5nLmg+CisjaW5jbHVkZSA8cHVibGljL1dlYlRocmVhZC5oPgogI2luY2x1ZGUgPHB1Ymxp
Yy9XZWJVUkxSZXF1ZXN0Lmg+CiAjaW5jbHVkZSA8cHVibGljL1dlYlVSTFJlc3BvbnNlLmg+Ci0j
aW5jbHVkZSA8d2Via2l0L3N1cHBvcnQvd2Via2l0X3N1cHBvcnQuaD4KKyNpbmNsdWRlIDxwdWJs
aWMvV2ViVW5pdFRlc3RTdXBwb3J0Lmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogbmFtZXNwYWNl
IEZyYW1lVGVzdEhlbHBlcnMgewpAQCAtOTEsMTAgKzkzLDI0IEBAIFdlYlZpZXcqIGNyZWF0ZVdl
YlZpZXdBbmRMb2FkKGNvbnN0IHN0ZDo6c3RyaW5nJiB1cmwsIGJvb2wgZW5hYmxlSmF2YXNjcmlw
dCwgV2ViCiAgICAgV2ViVmlldyogd2ViVmlldyA9IGNyZWF0ZVdlYlZpZXcoZW5hYmxlSmF2YXNj
cmlwdCwgd2ViRnJhbWVDbGllbnQsIHdlYlZpZXdDbGllbnQpOwogCiAgICAgbG9hZEZyYW1lKHdl
YlZpZXctPm1haW5GcmFtZSgpLCB1cmwpOwotICAgIHdlYmtpdF9zdXBwb3J0OjpTZXJ2ZUFzeW5j
aHJvbm91c01vY2tlZFJlcXVlc3RzKCk7CisgICAgUGxhdGZvcm06OmN1cnJlbnQoKS0+dW5pdFRl
c3RTdXBwb3J0KCktPnNlcnZlQXN5bmNocm9ub3VzTW9ja2VkUmVxdWVzdHMoKTsKIAogICAgIHJl
dHVybiB3ZWJWaWV3OwogfQogCitjbGFzcyBRdWl0VGFzayA6IHB1YmxpYyBXZWJUaHJlYWQ6OlRh
c2sgeworcHVibGljOgorICAgIHZpcnR1YWwgdm9pZCBydW4oKQorICAgIHsKKyAgICAgICAgUGxh
dGZvcm06OmN1cnJlbnQoKS0+Y3VycmVudFRocmVhZCgpLT5leGl0UnVuTG9vcCgpOworICAgIH0K
K307CisKK3ZvaWQgcnVuUGVuZGluZ1Rhc2tzKCkKK3sKKyAgICBQbGF0Zm9ybTo6Y3VycmVudCgp
LT5jdXJyZW50VGhyZWFkKCktPnBvc3RUYXNrKG5ldyBRdWl0VGFzayk7CisgICAgUGxhdGZvcm06
OmN1cnJlbnQoKS0+Y3VycmVudFRocmVhZCgpLT5lbnRlclJ1bkxvb3AoKTsKK30KKwogfSAvLyBu
YW1lc3BhY2UgRnJhbWVUZXN0SGVscGVycwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0ZyYW1lVGVzdEhlbHBlcnMuaCBiL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvRnJhbWVUZXN0SGVscGVycy5oCmluZGV4IDA2MWVk
OTZmZDBiNGZmMTk0NzRjZDRkMTE2OGFlNDE1NjQxMTNiZWYuLmFmYmMwODdjMGY5ZjcwMzRiYzBj
MDVjZjhjOTNhZjg4NjFiNmE0MjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
dGVzdHMvRnJhbWVUZXN0SGVscGVycy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVz
dHMvRnJhbWVUZXN0SGVscGVycy5oCkBAIC0zMiw2ICszMiw3IEBACiAjZGVmaW5lIEZyYW1lVGVz
dEhlbHBlcnNfaAogCiAjaW5jbHVkZSA8c3RyaW5nPgorI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRy
Lmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCkBAIC00Nyw2ICs0OCw4IEBAIHZvaWQgbG9hZEZy
YW1lKFdlYkZyYW1lKiwgY29uc3Qgc3RkOjpzdHJpbmcmIHVybCk7CiBXZWJWaWV3KiBjcmVhdGVX
ZWJWaWV3KGJvb2wgZW5hYmxlSmF2YXNjcmlwdCA9IGZhbHNlLCBXZWJGcmFtZUNsaWVudCogPSAw
LCBXZWJWaWV3Q2xpZW50KiA9IDApOwogV2ViVmlldyogY3JlYXRlV2ViVmlld0FuZExvYWQoY29u
c3Qgc3RkOjpzdHJpbmcmIHVybCwgYm9vbCBlbmFibGVKYXZhc2NyaXB0ID0gZmFsc2UsIFdlYkZy
YW1lQ2xpZW50KiA9IDAsIFdlYlZpZXdDbGllbnQqID0gMCk7CiAKK3ZvaWQgcnVuUGVuZGluZ1Rh
c2tzKCk7CisKIH0gLy8gbmFtZXNwYWNlIEZyYW1lVGVzdEhlbHBlcnMKIH0gLy8gbmFtZXNwYWNl
IFdlYktpdAogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0xpc3Rl
bmVyTGVha1Rlc3QuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9MaXN0ZW5lckxl
YWtUZXN0LmNwcAppbmRleCBiMGY3MDBhMGNiNWQyY2M3YTQ0OWRhNTcwNGUxNDEyODExNTY4N2Vm
Li4xNWFmYzJmOWVkNThkNzAwZjM1NDg3NmMzZDQ5NDMxOWQwY2JhNGRkIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0xpc3RlbmVyTGVha1Rlc3QuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvTGlzdGVuZXJMZWFrVGVzdC5jcHAKQEAgLTM0LDkg
KzM0LDEwIEBACiAjaW5jbHVkZSAiVVJMVGVzdEhlbHBlcnMuaCIKICNpbmNsdWRlICJXZWJWaWV3
LmgiCiAjaW5jbHVkZSA8Z3Rlc3QvZ3Rlc3QuaD4KKyNpbmNsdWRlIDxwdWJsaWMvUGxhdGZvcm0u
aD4KKyNpbmNsdWRlIDxwdWJsaWMvV2ViVW5pdFRlc3RTdXBwb3J0Lmg+CiAjaW5jbHVkZSA8djgv
aW5jbHVkZS92OC1wcm9maWxlci5oPgogI2luY2x1ZGUgPHY4L2luY2x1ZGUvdjguaD4KLSNpbmNs
dWRlIDx3ZWJraXQvc3VwcG9ydC93ZWJraXRfc3VwcG9ydC5oPgogCiB1c2luZyBuYW1lc3BhY2Ug
V2ViS2l0OwogCkBAIC05OSw3ICsxMDAsNyBAQCBwdWJsaWM6CiAgICAgewogICAgICAgICBpZiAo
bV93ZWJWaWV3KQogICAgICAgICAgICAgbV93ZWJWaWV3LT5jbG9zZSgpOwotICAgICAgICB3ZWJr
aXRfc3VwcG9ydDo6VW5yZWdpc3RlckFsbE1vY2tlZFVSTHMoKTsKKyAgICAgICAgUGxhdGZvcm06
OmN1cnJlbnQoKS0+dW5pdFRlc3RTdXBwb3J0KCktPnVucmVnaXN0ZXJBbGxNb2NrZWRVUkxzKCk7
CiAgICAgfQogCiBwcm90ZWN0ZWQ6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3Rlc3RzL1BvcHVwTWVudVRlc3QuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9Q
b3B1cE1lbnVUZXN0LmNwcAppbmRleCA2MzU0MmY4NjNjODZmZTg1MjgwNDE4NzkyZDY2YTUwNWI5
MmNjZTYwLi42NjIyMzJiYWFhZTIyYWNlOTMzODcwOTgxMzZjM2EwNTJhOTZmY2E5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL1BvcHVwTWVudVRlc3QuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvUG9wdXBNZW51VGVzdC5jcHAKQEAgLTMwLDkg
KzMwLDYgQEAKIAogI2luY2x1ZGUgImNvbmZpZy5oIgogCi0jaW5jbHVkZSA8Z3Rlc3QvZ3Rlc3Qu
aD4KLSNpbmNsdWRlIDx3ZWJraXQvc3VwcG9ydC93ZWJraXRfc3VwcG9ydC5oPgotCiAjaW5jbHVk
ZSAiQ29sb3IuaCIKICNpbmNsdWRlICJFbGVtZW50LmgiCiAjaW5jbHVkZSAiRnJhbWVWaWV3Lmgi
CkBAIC00MCw4ICszNyw4IEBACiAjaW5jbHVkZSAiS2V5Ym9hcmRDb2Rlcy5oIgogI2luY2x1ZGUg
IlBvcHVwQ29udGFpbmVyLmgiCiAjaW5jbHVkZSAiUG9wdXBNZW51LmgiCi0jaW5jbHVkZSAiUG9w
dXBNZW51Q2xpZW50LmgiCiAjaW5jbHVkZSAiUG9wdXBNZW51Q2hyb21pdW0uaCIKKyNpbmNsdWRl
ICJQb3B1cE1lbnVDbGllbnQuaCIKICNpbmNsdWRlICJSdW50aW1lRW5hYmxlZEZlYXR1cmVzLmgi
CiAjaW5jbHVkZSAiVVJMVGVzdEhlbHBlcnMuaCIKICNpbmNsdWRlICJXZWJEb2N1bWVudC5oIgpA
QCAtNTcsMTAgKzU0LDEzIEBACiAjaW5jbHVkZSAiV2ViVmlld0NsaWVudC5oIgogI2luY2x1ZGUg
IldlYlZpZXdJbXBsLmgiCiAjaW5jbHVkZSAidjguaCIKKyNpbmNsdWRlIDxndGVzdC9ndGVzdC5o
PgorI2luY2x1ZGUgPHB1YmxpYy9QbGF0Zm9ybS5oPgogI2luY2x1ZGUgPHB1YmxpYy9XZWJTdHJp
bmcuaD4KICNpbmNsdWRlIDxwdWJsaWMvV2ViVVJMLmg+CiAjaW5jbHVkZSA8cHVibGljL1dlYlVS
TFJlcXVlc3QuaD4KICNpbmNsdWRlIDxwdWJsaWMvV2ViVVJMUmVzcG9uc2UuaD4KKyNpbmNsdWRl
IDxwdWJsaWMvV2ViVW5pdFRlc3RTdXBwb3J0Lmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3Jl
OwogdXNpbmcgbmFtZXNwYWNlIFdlYktpdDsKQEAgLTE5Myw3ICsxOTMsNyBAQCBwcm90ZWN0ZWQ6
CiAgICAgewogICAgICAgICBtX3BvcHVwTWVudSA9IDA7CiAgICAgICAgIG1fd2ViVmlldy0+Y2xv
c2UoKTsKLSAgICAgICAgd2Via2l0X3N1cHBvcnQ6OlVucmVnaXN0ZXJBbGxNb2NrZWRVUkxzKCk7
CisgICAgICAgIFBsYXRmb3JtOjpjdXJyZW50KCktPnVuaXRUZXN0U3VwcG9ydCgpLT51bnJlZ2lz
dGVyQWxsTW9ja2VkVVJMcygpOwogICAgIH0KIAogICAgIC8vIFJldHVybnMgdHJ1ZSBpZiB0aGVy
ZSBjdXJyZW50bHkgaXMgYSBzZWxlY3QgcG9wdXAgaW4gdGhlIFdlYlZpZXcuCkBAIC0yNTYsNyAr
MjU2LDcgQEAgcHJvdGVjdGVkOgogCiAgICAgdm9pZCBzZXJ2ZVJlcXVlc3RzKCkKICAgICB7Ci0g
ICAgICAgIHdlYmtpdF9zdXBwb3J0OjpTZXJ2ZUFzeW5jaHJvbm91c01vY2tlZFJlcXVlc3RzKCk7
CisgICAgICAgIFBsYXRmb3JtOjpjdXJyZW50KCktPnVuaXRUZXN0U3VwcG9ydCgpLT5zZXJ2ZUFz
eW5jaHJvbm91c01vY2tlZFJlcXVlc3RzKCk7CiAgICAgfQogCiAgICAgdm9pZCBsb2FkRnJhbWUo
V2ViRnJhbWUqIGZyYW1lLCBjb25zdCBzdGQ6OnN0cmluZyYgZmlsZU5hbWUpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL1ByZXJlbmRlcmluZ1Rlc3QuY3BwIGIvU291
cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9QcmVyZW5kZXJpbmdUZXN0LmNwcAppbmRleCBmOWU2
MDI1N2E2NTcwM2E4ZGYwNzE5YjUyOTJiNDYzMjVlZjQ5NTRhLi4zNWYxZWU2ZDgwMjFlZGRiYjM2
MzY5ZDVhODY1OWJhNTZhYmM1OTIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3Rlc3RzL1ByZXJlbmRlcmluZ1Rlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
dGVzdHMvUHJlcmVuZGVyaW5nVGVzdC5jcHAKQEAgLTQ1LDEwICs0NSwxMSBAQAogCiAjaW5jbHVk
ZSA8Z3Rlc3QvZ3Rlc3QuaD4KICNpbmNsdWRlIDxsaXN0PgorI2luY2x1ZGUgPHB1YmxpYy9QbGF0
Zm9ybS5oPgogI2luY2x1ZGUgPHB1YmxpYy9XZWJQcmVyZW5kZXIuaD4KICNpbmNsdWRlIDxwdWJs
aWMvV2ViUHJlcmVuZGVyaW5nU3VwcG9ydC5oPgogI2luY2x1ZGUgPHB1YmxpYy9XZWJTdHJpbmcu
aD4KLSNpbmNsdWRlIDx3ZWJraXQvc3VwcG9ydC93ZWJraXRfc3VwcG9ydC5oPgorI2luY2x1ZGUg
PHB1YmxpYy9XZWJVbml0VGVzdFN1cHBvcnQuaD4KICNpbmNsdWRlIDx3dGYvT3duUHRyLmg+CiAK
IHVzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7CkBAIC0xODEsNyArMTgyLDcgQEAgcHVibGljOgogCiAg
ICAgflByZXJlbmRlcmluZ1Rlc3QoKQogICAgIHsKLSAgICAgICAgd2Via2l0X3N1cHBvcnQ6OlVu
cmVnaXN0ZXJBbGxNb2NrZWRVUkxzKCk7CisgICAgICAgIFBsYXRmb3JtOjpjdXJyZW50KCktPnVu
aXRUZXN0U3VwcG9ydCgpLT51bnJlZ2lzdGVyQWxsTW9ja2VkVVJMcygpOwogICAgICAgICBpZiAo
bV93ZWJWaWV3KQogICAgICAgICAgICAgY2xvc2UoKTsKICAgICB9CkBAIC0xOTUsMTMgKzE5Niwx
MiBAQCBwdWJsaWM6CiAgICAgICAgIG1fd2ViVmlldy0+c2V0UHJlcmVuZGVyZXJDbGllbnQoJm1f
cHJlcmVuZGVyZXJDbGllbnQpOwogCiAgICAgICAgIEZyYW1lVGVzdEhlbHBlcnM6OmxvYWRGcmFt
ZShtX3dlYlZpZXctPm1haW5GcmFtZSgpLCBzdGQ6OnN0cmluZyhiYXNlVVJMKSArIGZpbGVOYW1l
KTsKLSAgICAgICAgd2Via2l0X3N1cHBvcnQ6OlNlcnZlQXN5bmNocm9ub3VzTW9ja2VkUmVxdWVz
dHMoKTsKKyAgICAgICAgUGxhdGZvcm06OmN1cnJlbnQoKS0+dW5pdFRlc3RTdXBwb3J0KCktPnNl
cnZlQXN5bmNocm9ub3VzTW9ja2VkUmVxdWVzdHMoKTsKICAgICB9CiAKICAgICB2b2lkIG5hdmln
YXRlQXdheSgpCiAgICAgewogICAgICAgICBGcmFtZVRlc3RIZWxwZXJzOjpsb2FkRnJhbWUobV93
ZWJWaWV3LT5tYWluRnJhbWUoKSwgImFib3V0OmJsYW5rIik7Ci0gICAgICAgIC8vICAgICAgICB3
ZWJraXRfc3VwcG9ydDo6UnVuQWxsUGVuZGluZ01lc3NhZ2VzKCk7CiAgICAgfQogCiAgICAgdm9p
ZCBjbG9zZSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL1Njcm9s
bGluZ0Nvb3JkaW5hdG9yQ2hyb21pdW1UZXN0LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
dGVzdHMvU2Nyb2xsaW5nQ29vcmRpbmF0b3JDaHJvbWl1bVRlc3QuY3BwCmluZGV4IDBkNzg1OTAx
NDMzZDE5NTJmYzc3MzBlNzJiNGNkZmY4MWExMTdiMjAuLmJjNjkxNGZlYjJjZTc2ZGFmNDI1NzY5
ZjRjOWFjYzExN2U2Mzg0NTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVz
dHMvU2Nyb2xsaW5nQ29vcmRpbmF0b3JDaHJvbWl1bVRlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vdGVzdHMvU2Nyb2xsaW5nQ29vcmRpbmF0b3JDaHJvbWl1bVRlc3QuY3BwCkBA
IC0yOCw2ICsyOCw3IEBACiAKICNpbmNsdWRlICJDb21wb3NpdG9yRmFrZVdlYkdyYXBoaWNzQ29u
dGV4dDNELmgiCiAjaW5jbHVkZSAiRnJhbWVUZXN0SGVscGVycy5oIgorI2luY2x1ZGUgIkdyYXBo
aWNzTGF5ZXJDaHJvbWl1bS5oIgogI2luY2x1ZGUgIlJlbmRlckxheWVyQmFja2luZy5oIgogI2lu
Y2x1ZGUgIlJlbmRlckxheWVyQ29tcG9zaXRvci5oIgogI2luY2x1ZGUgIlJlbmRlclZpZXcuaCIK
QEAgLTM5LDExICs0MCwxMCBAQAogI2luY2x1ZGUgIldlYlZpZXdDbGllbnQuaCIKICNpbmNsdWRl
ICJXZWJWaWV3SW1wbC5oIgogI2luY2x1ZGUgPGd0ZXN0L2d0ZXN0Lmg+CisjaW5jbHVkZSA8cHVi
bGljL1BsYXRmb3JtLmg+CiAjaW5jbHVkZSA8cHVibGljL1dlYkNvbXBvc2l0b3JTdXBwb3J0Lmg+
CiAjaW5jbHVkZSA8cHVibGljL1dlYkxheWVyLmg+Ci0jaW5jbHVkZSA8d2Via2l0L3N1cHBvcnQv
d2Via2l0X3N1cHBvcnQuaD4KLQotI2luY2x1ZGUgIkdyYXBoaWNzTGF5ZXJDaHJvbWl1bS5oIgor
I2luY2x1ZGUgPHB1YmxpYy9XZWJVbml0VGVzdFN1cHBvcnQuaD4KIAogdXNpbmcgbmFtZXNwYWNl
IFdlYkNvcmU7CiB1c2luZyBuYW1lc3BhY2UgV2ViS2l0OwpAQCAtOTcsNyArOTcsNyBAQCBwdWJs
aWM6CiAKICAgICB2aXJ0dWFsIH5TY3JvbGxpbmdDb29yZGluYXRvckNocm9taXVtVGVzdCgpCiAg
ICAgewotICAgICAgICB3ZWJraXRfc3VwcG9ydDo6VW5yZWdpc3RlckFsbE1vY2tlZFVSTHMoKTsK
KyAgICAgICAgUGxhdGZvcm06OmN1cnJlbnQoKS0+dW5pdFRlc3RTdXBwb3J0KCktPnVucmVnaXN0
ZXJBbGxNb2NrZWRVUkxzKCk7CiAgICAgICAgIG1fd2ViVmlld0ltcGwtPmNsb3NlKCk7CiAKICAg
ICAgICAgUGxhdGZvcm06OmN1cnJlbnQoKS0+Y29tcG9zaXRvclN1cHBvcnQoKS0+c2h1dGRvd24o
KTsKQEAgLTEwNiw3ICsxMDYsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBuYXZpZ2F0ZVRvKGNvbnN0
IHN0ZDo6c3RyaW5nJiB1cmwpCiAgICAgewogICAgICAgICBGcmFtZVRlc3RIZWxwZXJzOjpsb2Fk
RnJhbWUobV93ZWJWaWV3SW1wbC0+bWFpbkZyYW1lKCksIHVybCk7Ci0gICAgICAgIHdlYmtpdF9z
dXBwb3J0OjpTZXJ2ZUFzeW5jaHJvbm91c01vY2tlZFJlcXVlc3RzKCk7CisgICAgICAgIFBsYXRm
b3JtOjpjdXJyZW50KCktPnVuaXRUZXN0U3VwcG9ydCgpLT5zZXJ2ZUFzeW5jaHJvbm91c01vY2tl
ZFJlcXVlc3RzKCk7CiAgICAgfQogCiAgICAgdm9pZCByZWdpc3Rlck1vY2tlZEh0dHBVUkxMb2Fk
KGNvbnN0IHN0ZDo6c3RyaW5nJiBmaWxlTmFtZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vdGVzdHMvVVJMVGVzdEhlbHBlcnMuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1
bS90ZXN0cy9VUkxUZXN0SGVscGVycy5jcHAKaW5kZXggMmEwMDY2ZmQ4ZmI3NzFhMGQ4MzcyZjM5
NTAwZDA1NmYzMzVjMWRmMi4uZDIzYjk5NGI0MmM0YWM3ODIwOTZkNDRlZGU3YTRjZDA3NDZkYjgy
OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9VUkxUZXN0SGVscGVy
cy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9VUkxUZXN0SGVscGVycy5j
cHAKQEAgLTMxLDEwICszMSwxMSBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIlVS
TFRlc3RIZWxwZXJzLmgiCiAKKyNpbmNsdWRlIDxwdWJsaWMvUGxhdGZvcm0uaD4KICNpbmNsdWRl
IDxwdWJsaWMvV2ViU3RyaW5nLmg+CiAjaW5jbHVkZSA8cHVibGljL1dlYlVSTC5oPgogI2luY2x1
ZGUgPHB1YmxpYy9XZWJVUkxSZXNwb25zZS5oPgotI2luY2x1ZGUgPHdlYmtpdC9zdXBwb3J0L3dl
YmtpdF9zdXBwb3J0Lmg+CisjaW5jbHVkZSA8cHVibGljL1dlYlVuaXRUZXN0U3VwcG9ydC5oPgog
CiBuYW1lc3BhY2UgV2ViS2l0IHsKIG5hbWVzcGFjZSBVUkxUZXN0SGVscGVycyB7CkBAIC01OSwx
MiArNjAsMTIgQEAgdm9pZCByZWdpc3Rlck1vY2tlZFVSTExvYWQoY29uc3QgV2ViVVJMJiBmdWxs
VVJMLCBjb25zdCBXZWJTdHJpbmcmIGZpbGVOYW1lLCBjb24KICAgICByZXNwb25zZS5zZXRIVFRQ
U3RhdHVzQ29kZSgyMDApOwogCiAgICAgLy8gUGh5c2ljYWwgZmlsZSBwYXRoIGZvciB0aGUgbW9j
ayA9IDx3ZWJraXRSb290RGlyPiArIHJlbGF0aXZlQmFzZURpcmVjdG9yeSArIGZpbGVOYW1lLgot
ICAgIHN0ZDo6c3RyaW5nIGZpbGVQYXRoID0gc3RkOjpzdHJpbmcod2Via2l0X3N1cHBvcnQ6Okdl
dFdlYktpdFJvb3REaXIoKS51dGY4KCkuZGF0YSgpKTsKKyAgICBzdGQ6OnN0cmluZyBmaWxlUGF0
aCA9IHN0ZDo6c3RyaW5nKFBsYXRmb3JtOjpjdXJyZW50KCktPnVuaXRUZXN0U3VwcG9ydCgpLT53
ZWJLaXRSb290RGlyKCkudXRmOCgpLmRhdGEoKSk7CiAgICAgZmlsZVBhdGguYXBwZW5kKCIvU291
cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9kYXRhLyIpOwogICAgIGZpbGVQYXRoLmFwcGVuZChz
dGQ6OnN0cmluZyhyZWxhdGl2ZUJhc2VEaXJlY3RvcnkudXRmOCgpLmRhdGEoKSkpOwogICAgIGZp
bGVQYXRoLmFwcGVuZChzdGQ6OnN0cmluZyhmaWxlTmFtZS51dGY4KCkuZGF0YSgpKSk7CiAKLSAg
ICB3ZWJraXRfc3VwcG9ydDo6UmVnaXN0ZXJNb2NrZWRVUkwoZnVsbFVSTCwgcmVzcG9uc2UsIFdl
YlN0cmluZzo6ZnJvbVVURjgoZmlsZVBhdGguY19zdHIoKSkpOworICAgIFBsYXRmb3JtOjpjdXJy
ZW50KCktPnVuaXRUZXN0U3VwcG9ydCgpLT5yZWdpc3Rlck1vY2tlZFVSTChmdWxsVVJMLCByZXNw
b25zZSwgV2ViU3RyaW5nOjpmcm9tVVRGOChmaWxlUGF0aC5jX3N0cigpKSk7CiB9CiAKIH0gLy8g
bmFtZXNwYWNlIFVSTFRlc3RIZWxwZXJzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3Rlc3RzL1dlYkZyYW1lVGVzdC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3Rz
L1dlYkZyYW1lVGVzdC5jcHAKaW5kZXggYTI2YWQyNzIyMzc1MDExZDIyYmIzYzdlODY5NGU5YmY3
ODcwNDlmNy4uZDUxOTcwMzgzMGYxOTAzZTIxODVlNjNlMWZhN2NiOTBhYjBjMTRhZSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9XZWJGcmFtZVRlc3QuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvV2ViRnJhbWVUZXN0LmNwcApAQCAtNjEsMTUg
KzYxLDE4IEBACiAjaW5jbHVkZSAiV2ViVmlld0ltcGwuaCIKICNpbmNsdWRlICJ2OC5oIgogI2lu
Y2x1ZGUgPGd0ZXN0L2d0ZXN0Lmg+CisjaW5jbHVkZSA8cHVibGljL1BsYXRmb3JtLmg+CiAjaW5j
bHVkZSA8cHVibGljL1dlYkZsb2F0UmVjdC5oPgorI2luY2x1ZGUgPHB1YmxpYy9XZWJUaHJlYWQu
aD4KICNpbmNsdWRlIDxwdWJsaWMvV2ViVVJMUmVzcG9uc2UuaD4KLSNpbmNsdWRlIDx3ZWJraXQv
c3VwcG9ydC93ZWJraXRfc3VwcG9ydC5oPgorI2luY2x1ZGUgPHB1YmxpYy9XZWJVbml0VGVzdFN1
cHBvcnQuaD4KICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogCiB1c2luZyBuYW1lc3BhY2UgV2Vi
S2l0OwogdXNpbmcgV2ViQ29yZTo6RmxvYXRSZWN0OwogdXNpbmcgV2ViQ29yZTo6UmFuZ2U7CiB1
c2luZyBXZWJLaXQ6OlVSTFRlc3RIZWxwZXJzOjp0b0tVUkw7Cit1c2luZyBXZWJLaXQ6OkZyYW1l
VGVzdEhlbHBlcnM6OnJ1blBlbmRpbmdUYXNrczsKIAogbmFtZXNwYWNlIHsKIApAQCAtODIsMTQg
Kzg1LDIxIEBAIG5hbWVzcGFjZSB7CiBjbGFzcyBXZWJGcmFtZVRlc3QgOiBwdWJsaWMgdGVzdGlu
Zzo6VGVzdCB7CiBwdWJsaWM6CiAgICAgV2ViRnJhbWVUZXN0KCkKLSAgICAgICAgOiBtX2Jhc2VV
UkwoImh0dHA6Ly93d3cudGVzdC5jb20vIiksCi0gICAgICAgICAgbV9jaHJvbWVVUkwoImNocm9t
ZTovLyIpCisgICAgICAgIDogbV9iYXNlVVJMKCJodHRwOi8vd3d3LnRlc3QuY29tLyIpCisgICAg
ICAgICwgbV9jaHJvbWVVUkwoImNocm9tZTovLyIpCisgICAgICAgICwgbV93ZWJWaWV3KDApCiAg
ICAgewogICAgIH0KIAorICAgIHZpcnR1YWwgfldlYkZyYW1lVGVzdCgpCisgICAgeworICAgICAg
ICBpZiAobV93ZWJWaWV3KQorICAgICAgICAgICAgbV93ZWJWaWV3LT5jbG9zZSgpOworICAgIH0K
KwogICAgIHZpcnR1YWwgdm9pZCBUZWFyRG93bigpCiAgICAgewotICAgICAgICB3ZWJraXRfc3Vw
cG9ydDo6VW5yZWdpc3RlckFsbE1vY2tlZFVSTHMoKTsKKyAgICAgICAgUGxhdGZvcm06OmN1cnJl
bnQoKS0+dW5pdFRlc3RTdXBwb3J0KCktPnVucmVnaXN0ZXJBbGxNb2NrZWRVUkxzKCk7CiAgICAg
fQogCiAgICAgdm9pZCByZWdpc3Rlck1vY2tlZEh0dHBVUkxMb2FkKGNvbnN0IHN0ZDo6c3RyaW5n
JiBmaWxlTmFtZSkKQEAgLTEwNSw2ICsxMTUsOCBAQCBwdWJsaWM6CiBwcm90ZWN0ZWQ6CiAgICAg
c3RkOjpzdHJpbmcgbV9iYXNlVVJMOwogICAgIHN0ZDo6c3RyaW5nIG1fY2hyb21lVVJMOworCisg
ICAgV2ViVmlldyogbV93ZWJWaWV3OwogfTsKIAogVEVTVF9GKFdlYkZyYW1lVGVzdCwgQ29udGVu
dFRleHQpCkBAIC0xMTQsMTcgKzEyNiwxNSBAQCBURVNUX0YoV2ViRnJhbWVUZXN0LCBDb250ZW50
VGV4dCkKICAgICByZWdpc3Rlck1vY2tlZEh0dHBVUkxMb2FkKCJpbnZpc2libGVfaWZyYW1lLmh0
bWwiKTsKICAgICByZWdpc3Rlck1vY2tlZEh0dHBVUkxMb2FkKCJ6ZXJvX3NpemVkX2lmcmFtZS5o
dG1sIik7CiAKLSAgICBXZWJWaWV3KiB3ZWJWaWV3ID0gRnJhbWVUZXN0SGVscGVyczo6Y3JlYXRl
V2ViVmlld0FuZExvYWQobV9iYXNlVVJMICsgImlmcmFtZXNfdGVzdC5odG1sIik7CisgICAgbV93
ZWJWaWV3ID0gRnJhbWVUZXN0SGVscGVyczo6Y3JlYXRlV2ViVmlld0FuZExvYWQobV9iYXNlVVJM
ICsgImlmcmFtZXNfdGVzdC5odG1sIik7CiAKICAgICAvLyBOb3cgcmV0cmlldmUgdGhlIGZyYW1l
cyB0ZXh0IGFuZCB0ZXN0IGl0IG9ubHkgaW5jbHVkZXMgdmlzaWJsZSBlbGVtZW50cy4KLSAgICBz
dGQ6OnN0cmluZyBjb250ZW50ID0gc3RkOjpzdHJpbmcod2ViVmlldy0+bWFpbkZyYW1lKCktPmNv
bnRlbnRBc1RleHQoMTAyNCkudXRmOCgpLmRhdGEoKSk7CisgICAgc3RkOjpzdHJpbmcgY29udGVu
dCA9IHN0ZDo6c3RyaW5nKG1fd2ViVmlldy0+bWFpbkZyYW1lKCktPmNvbnRlbnRBc1RleHQoMTAy
NCkudXRmOCgpLmRhdGEoKSk7CiAgICAgRVhQRUNUX05FKHN0ZDo6c3RyaW5nOjpucG9zLCBjb250
ZW50LmZpbmQoIiB2aXNpYmxlIHBhcmFncmFwaCIpKTsKICAgICBFWFBFQ1RfTkUoc3RkOjpzdHJp
bmc6Om5wb3MsIGNvbnRlbnQuZmluZCgiIHZpc2libGUgaWZyYW1lIikpOwogICAgIEVYUEVDVF9F
UShzdGQ6OnN0cmluZzo6bnBvcywgY29udGVudC5maW5kKCIgaW52aXNpYmxlIHBhcmFyYXBoIikp
OwogICAgIEVYUEVDVF9FUShzdGQ6OnN0cmluZzo6bnBvcywgY29udGVudC5maW5kKCIgaW52aXNp
YmxlIGlmcmFtZSIpKTsKICAgICBFWFBFQ1RfRVEoc3RkOjpzdHJpbmc6Om5wb3MsIGNvbnRlbnQu
ZmluZCgiaWZyYW1lIHdpdGggemVybyBzaXplIikpOwotCi0gICAgd2ViVmlldy0+Y2xvc2UoKTsK
IH0KIAogVEVTVF9GKFdlYkZyYW1lVGVzdCwgRnJhbWVGb3JFbnRlcmVkQ29udGV4dCkKQEAgLTEz
NCwyOCArMTQ0LDI3IEBAIFRFU1RfRihXZWJGcmFtZVRlc3QsIEZyYW1lRm9yRW50ZXJlZENvbnRl
eHQpCiAgICAgcmVnaXN0ZXJNb2NrZWRIdHRwVVJMTG9hZCgiaW52aXNpYmxlX2lmcmFtZS5odG1s
Iik7CiAgICAgcmVnaXN0ZXJNb2NrZWRIdHRwVVJMTG9hZCgiemVyb19zaXplZF9pZnJhbWUuaHRt
bCIpOwogCi0gICAgV2ViVmlldyogd2ViVmlldyA9IEZyYW1lVGVzdEhlbHBlcnM6OmNyZWF0ZVdl
YlZpZXdBbmRMb2FkKG1fYmFzZVVSTCArICJpZnJhbWVzX3Rlc3QuaHRtbCIsIHRydWUpOworICAg
IG1fd2ViVmlldyA9IEZyYW1lVGVzdEhlbHBlcnM6OmNyZWF0ZVdlYlZpZXdBbmRMb2FkKG1fYmFz
ZVVSTCArICJpZnJhbWVzX3Rlc3QuaHRtbCIsIHRydWUpOwogCiAgICAgdjg6OkhhbmRsZVNjb3Bl
IHNjb3BlOwotICAgIEVYUEVDVF9FUSh3ZWJWaWV3LT5tYWluRnJhbWUoKSwKKyAgICBFWFBFQ1Rf
RVEobV93ZWJWaWV3LT5tYWluRnJhbWUoKSwKICAgICAgICAgICAgICAgV2ViRnJhbWU6OmZyYW1l
Rm9yQ29udGV4dCgKLSAgICAgICAgICAgICAgICAgIHdlYlZpZXctPm1haW5GcmFtZSgpLT5tYWlu
V29ybGRTY3JpcHRDb250ZXh0KCkpKTsKLSAgICBFWFBFQ1RfRVEod2ViVmlldy0+bWFpbkZyYW1l
KCktPmZpcnN0Q2hpbGQoKSwKKyAgICAgICAgICAgICAgICAgIG1fd2ViVmlldy0+bWFpbkZyYW1l
KCktPm1haW5Xb3JsZFNjcmlwdENvbnRleHQoKSkpOworICAgIEVYUEVDVF9FUShtX3dlYlZpZXct
Pm1haW5GcmFtZSgpLT5maXJzdENoaWxkKCksCiAgICAgICAgICAgICAgIFdlYkZyYW1lOjpmcmFt
ZUZvckNvbnRleHQoCi0gICAgICAgICAgICAgICAgICB3ZWJWaWV3LT5tYWluRnJhbWUoKS0+Zmly
c3RDaGlsZCgpLT5tYWluV29ybGRTY3JpcHRDb250ZXh0KCkpKTsKLQotICAgIHdlYlZpZXctPmNs
b3NlKCk7CisgICAgICAgICAgICAgICAgICBtX3dlYlZpZXctPm1haW5GcmFtZSgpLT5maXJzdENo
aWxkKCktPm1haW5Xb3JsZFNjcmlwdENvbnRleHQoKSkpOwogfQogCiBURVNUX0YoV2ViRnJhbWVU
ZXN0LCBGb3JtV2l0aE51bGxGcmFtZSkKIHsKICAgICByZWdpc3Rlck1vY2tlZEh0dHBVUkxMb2Fk
KCJmb3JtLmh0bWwiKTsKIAotICAgIFdlYlZpZXcqIHdlYlZpZXcgPSBGcmFtZVRlc3RIZWxwZXJz
OjpjcmVhdGVXZWJWaWV3QW5kTG9hZChtX2Jhc2VVUkwgKyAiZm9ybS5odG1sIik7CisgICAgbV93
ZWJWaWV3ID0gRnJhbWVUZXN0SGVscGVyczo6Y3JlYXRlV2ViVmlld0FuZExvYWQobV9iYXNlVVJM
ICsgImZvcm0uaHRtbCIpOwogCiAgICAgV2ViVmVjdG9yPFdlYkZvcm1FbGVtZW50PiBmb3JtczsK
LSAgICB3ZWJWaWV3LT5tYWluRnJhbWUoKS0+ZG9jdW1lbnQoKS5mb3Jtcyhmb3Jtcyk7Ci0gICAg
d2ViVmlldy0+Y2xvc2UoKTsKKyAgICBtX3dlYlZpZXctPm1haW5GcmFtZSgpLT5kb2N1bWVudCgp
LmZvcm1zKGZvcm1zKTsKKyAgICBtX3dlYlZpZXctPmNsb3NlKCk7CisgICAgbV93ZWJWaWV3ID0g
MDsKIAogICAgIEVYUEVDVF9FUShmb3Jtcy5zaXplKCksIDFVKTsKIApAQCAtMTY4LDE2ICsxNzcs
MTYgQEAgVEVTVF9GKFdlYkZyYW1lVGVzdCwgQ2hyb21lUGFnZUphdmFzY3JpcHQpCiAgICAgcmVn
aXN0ZXJNb2NrZWRDaHJvbWVVUkxMb2FkKCJoaXN0b3J5Lmh0bWwiKTsKICAKICAgICAvLyBQYXNz
IHRydWUgdG8gZW5hYmxlIEphdmFTY3JpcHQuCi0gICAgV2ViVmlldyogd2ViVmlldyA9IEZyYW1l
VGVzdEhlbHBlcnM6OmNyZWF0ZVdlYlZpZXdBbmRMb2FkKG1fY2hyb21lVVJMICsgImhpc3Rvcnku
aHRtbCIsIHRydWUpOworICAgIG1fd2ViVmlldyA9IEZyYW1lVGVzdEhlbHBlcnM6OmNyZWF0ZVdl
YlZpZXdBbmRMb2FkKG1fY2hyb21lVVJMICsgImhpc3RvcnkuaHRtbCIsIHRydWUpOwogCiAgICAg
Ly8gVHJ5IHRvIHJ1biBKUyBhZ2FpbnN0IHRoZSBjaHJvbWUtc3R5bGUgVVJMLgotICAgIEZyYW1l
VGVzdEhlbHBlcnM6OmxvYWRGcmFtZSh3ZWJWaWV3LT5tYWluRnJhbWUoKSwgImphdmFzY3JpcHQ6
ZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZSgnQ2xvYmJl
cmVkJykpIik7CisgICAgRnJhbWVUZXN0SGVscGVyczo6bG9hZEZyYW1lKG1fd2ViVmlldy0+bWFp
bkZyYW1lKCksICJqYXZhc2NyaXB0OmRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoZG9jdW1lbnQu
Y3JlYXRlVGV4dE5vZGUoJ0Nsb2JiZXJlZCcpKSIpOwogCiAgICAgLy8gUmVxdWlyZWQgdG8gc2Vl
IGFueSB1cGRhdGVzIGluIGNvbnRlbnRBc1RleHQuCi0gICAgd2ViVmlldy0+bGF5b3V0KCk7Cisg
ICAgbV93ZWJWaWV3LT5sYXlvdXQoKTsKIAogICAgIC8vIE5vdyByZXRyaWV2ZSB0aGUgZnJhbWUn
cyB0ZXh0IGFuZCBlbnN1cmUgaXQgd2FzIG1vZGlmaWVkIGJ5IHJ1bm5pbmcgamF2YXNjcmlwdC4K
LSAgICBzdGQ6OnN0cmluZyBjb250ZW50ID0gc3RkOjpzdHJpbmcod2ViVmlldy0+bWFpbkZyYW1l
KCktPmNvbnRlbnRBc1RleHQoMTAyNCkudXRmOCgpLmRhdGEoKSk7CisgICAgc3RkOjpzdHJpbmcg
Y29udGVudCA9IHN0ZDo6c3RyaW5nKG1fd2ViVmlldy0+bWFpbkZyYW1lKCktPmNvbnRlbnRBc1Rl
eHQoMTAyNCkudXRmOCgpLmRhdGEoKSk7CiAgICAgRVhQRUNUX05FKHN0ZDo6c3RyaW5nOjpucG9z
LCBjb250ZW50LmZpbmQoIkNsb2JiZXJlZCIpKTsKIH0KIApAQCAtMTg2LDE3ICsxOTUsMTcgQEAg
VEVTVF9GKFdlYkZyYW1lVGVzdCwgQ2hyb21lUGFnZU5vSmF2YXNjcmlwdCkKICAgICByZWdpc3Rl
ck1vY2tlZENocm9tZVVSTExvYWQoImhpc3RvcnkuaHRtbCIpOwogCiAgICAgLy8vIFBhc3MgdHJ1
ZSB0byBlbmFibGUgSmF2YVNjcmlwdC4KLSAgICBXZWJWaWV3KiB3ZWJWaWV3ID0gRnJhbWVUZXN0
SGVscGVyczo6Y3JlYXRlV2ViVmlld0FuZExvYWQobV9jaHJvbWVVUkwgKyAiaGlzdG9yeS5odG1s
IiwgdHJ1ZSk7CisgICAgbV93ZWJWaWV3ID0gRnJhbWVUZXN0SGVscGVyczo6Y3JlYXRlV2ViVmll
d0FuZExvYWQobV9jaHJvbWVVUkwgKyAiaGlzdG9yeS5odG1sIiwgdHJ1ZSk7CiAKICAgICAvLyBU
cnkgdG8gcnVuIEpTIGFnYWluc3QgdGhlIGNocm9tZS1zdHlsZSBVUkwgYWZ0ZXIgcHJvaGliaXRp
bmcgaXQuCiAgICAgV2ViU2VjdXJpdHlQb2xpY3k6OnJlZ2lzdGVyVVJMU2NoZW1lQXNOb3RBbGxv
d2luZ0phdmFzY3JpcHRVUkxzKCJjaHJvbWUiKTsKLSAgICBGcmFtZVRlc3RIZWxwZXJzOjpsb2Fk
RnJhbWUod2ViVmlldy0+bWFpbkZyYW1lKCksICJqYXZhc2NyaXB0OmRvY3VtZW50LmJvZHkuYXBw
ZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoJ0Nsb2JiZXJlZCcpKSIpOworICAgIEZy
YW1lVGVzdEhlbHBlcnM6OmxvYWRGcmFtZShtX3dlYlZpZXctPm1haW5GcmFtZSgpLCAiamF2YXNj
cmlwdDpkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKCdD
bG9iYmVyZWQnKSkiKTsKIAogICAgIC8vIFJlcXVpcmVkIHRvIHNlZSBhbnkgdXBkYXRlcyBpbiBj
b250ZW50QXNUZXh0LgotICAgIHdlYlZpZXctPmxheW91dCgpOworICAgIG1fd2ViVmlldy0+bGF5
b3V0KCk7CiAKICAgICAvLyBOb3cgcmV0cmlldmUgdGhlIGZyYW1lJ3MgdGV4dCBhbmQgZW5zdXJl
IGl0IHdhc24ndCBtb2RpZmllZCBieSBydW5uaW5nIGphdmFzY3JpcHQuCi0gICAgc3RkOjpzdHJp
bmcgY29udGVudCA9IHN0ZDo6c3RyaW5nKHdlYlZpZXctPm1haW5GcmFtZSgpLT5jb250ZW50QXNU
ZXh0KDEwMjQpLnV0ZjgoKS5kYXRhKCkpOworICAgIHN0ZDo6c3RyaW5nIGNvbnRlbnQgPSBzdGQ6
OnN0cmluZyhtX3dlYlZpZXctPm1haW5GcmFtZSgpLT5jb250ZW50QXNUZXh0KDEwMjQpLnV0Zjgo
KS5kYXRhKCkpOwogICAgIEVYUEVDVF9FUShzdGQ6OnN0cmluZzo6bnBvcywgY29udGVudC5maW5k
KCJDbG9iYmVyZWQiKSk7CiB9CiAKQEAgLTIwNSwyNSArMjE0LDI1IEBAIFRFU1RfRihXZWJGcmFt
ZVRlc3QsIERpc3BhdGNoTWVzc2FnZUV2ZW50V2l0aE9yaWdpbkNoZWNrKQogICAgIHJlZ2lzdGVy
TW9ja2VkSHR0cFVSTExvYWQoInBvc3RtZXNzYWdlX3Rlc3QuaHRtbCIpOwogCiAgICAgLy8gUGFz
cyB0cnVlIHRvIGVuYWJsZSBKYXZhU2NyaXB0LgotICAgIFdlYlZpZXcqIHdlYlZpZXcgPSBGcmFt
ZVRlc3RIZWxwZXJzOjpjcmVhdGVXZWJWaWV3QW5kTG9hZChtX2Jhc2VVUkwgKyAicG9zdG1lc3Nh
Z2VfdGVzdC5odG1sIiwgdHJ1ZSk7CisgICAgbV93ZWJWaWV3ID0gRnJhbWVUZXN0SGVscGVyczo6
Y3JlYXRlV2ViVmlld0FuZExvYWQobV9iYXNlVVJMICsgInBvc3RtZXNzYWdlX3Rlc3QuaHRtbCIs
IHRydWUpOwogICAgIAogICAgIC8vIFNlbmQgYSBtZXNzYWdlIHdpdGggdGhlIGNvcnJlY3Qgb3Jp
Z2luLgogICAgIFdlYlNlY3VyaXR5T3JpZ2luIGNvcnJlY3RPcmlnaW4oV2ViU2VjdXJpdHlPcmln
aW46OmNyZWF0ZSh0b0tVUkwobV9iYXNlVVJMKSkpOwotICAgIFdlYkRPTUV2ZW50IGV2ZW50ID0g
d2ViVmlldy0+bWFpbkZyYW1lKCktPmRvY3VtZW50KCkuY3JlYXRlRXZlbnQoIk1lc3NhZ2VFdmVu
dCIpOworICAgIFdlYkRPTUV2ZW50IGV2ZW50ID0gbV93ZWJWaWV3LT5tYWluRnJhbWUoKS0+ZG9j
dW1lbnQoKS5jcmVhdGVFdmVudCgiTWVzc2FnZUV2ZW50Iik7CiAgICAgV2ViRE9NTWVzc2FnZUV2
ZW50IG1lc3NhZ2UgPSBldmVudC50bzxXZWJET01NZXNzYWdlRXZlbnQ+KCk7CiAgICAgV2ViU2Vy
aWFsaXplZFNjcmlwdFZhbHVlIGRhdGEoV2ViU2VyaWFsaXplZFNjcmlwdFZhbHVlOjpmcm9tU3Ry
aW5nKCJmb28iKSk7CiAgICAgbWVzc2FnZS5pbml0TWVzc2FnZUV2ZW50KCJtZXNzYWdlIiwgZmFs
c2UsIGZhbHNlLCBkYXRhLCAiaHR0cDovL29yaWdpbi5jb20iLCAwLCAiIik7Ci0gICAgd2ViVmll
dy0+bWFpbkZyYW1lKCktPmRpc3BhdGNoTWVzc2FnZUV2ZW50V2l0aE9yaWdpbkNoZWNrKGNvcnJl
Y3RPcmlnaW4sIG1lc3NhZ2UpOworICAgIG1fd2ViVmlldy0+bWFpbkZyYW1lKCktPmRpc3BhdGNo
TWVzc2FnZUV2ZW50V2l0aE9yaWdpbkNoZWNrKGNvcnJlY3RPcmlnaW4sIG1lc3NhZ2UpOwogCiAg
ICAgLy8gU2VuZCBhbm90aGVyIG1lc3NhZ2Ugd2l0aCBpbmNvcnJlY3Qgb3JpZ2luLgogICAgIFdl
YlNlY3VyaXR5T3JpZ2luIGluY29ycmVjdE9yaWdpbihXZWJTZWN1cml0eU9yaWdpbjo6Y3JlYXRl
KHRvS1VSTChtX2Nocm9tZVVSTCkpKTsKLSAgICB3ZWJWaWV3LT5tYWluRnJhbWUoKS0+ZGlzcGF0
Y2hNZXNzYWdlRXZlbnRXaXRoT3JpZ2luQ2hlY2soaW5jb3JyZWN0T3JpZ2luLCBtZXNzYWdlKTsK
KyAgICBtX3dlYlZpZXctPm1haW5GcmFtZSgpLT5kaXNwYXRjaE1lc3NhZ2VFdmVudFdpdGhPcmln
aW5DaGVjayhpbmNvcnJlY3RPcmlnaW4sIG1lc3NhZ2UpOwogCiAgICAgLy8gUmVxdWlyZWQgdG8g
c2VlIGFueSB1cGRhdGVzIGluIGNvbnRlbnRBc1RleHQuCi0gICAgd2ViVmlldy0+bGF5b3V0KCk7
CisgICAgbV93ZWJWaWV3LT5sYXlvdXQoKTsKIAogICAgIC8vIFZlcmlmeSB0aGF0IG9ubHkgdGhl
IGZpcnN0IGFkZGl0aW9uIGlzIGluIHRoZSBib2R5IG9mIHRoZSBwYWdlLgotICAgIHN0ZDo6c3Ry
aW5nIGNvbnRlbnQgPSBzdGQ6OnN0cmluZyh3ZWJWaWV3LT5tYWluRnJhbWUoKS0+Y29udGVudEFz
VGV4dCgxMDI0KS51dGY4KCkuZGF0YSgpKTsKKyAgICBzdGQ6OnN0cmluZyBjb250ZW50ID0gc3Rk
OjpzdHJpbmcobV93ZWJWaWV3LT5tYWluRnJhbWUoKS0+Y29udGVudEFzVGV4dCgxMDI0KS51dGY4
KCkuZGF0YSgpKTsKICAgICBFWFBFQ1RfTkUoc3RkOjpzdHJpbmc6Om5wb3MsIGNvbnRlbnQuZmlu
ZCgiTWVzc2FnZSAxLiIpKTsKICAgICBFWFBFQ1RfRVEoc3RkOjpzdHJpbmc6Om5wb3MsIGNvbnRl
bnQuZmluZCgiTWVzc2FnZSAyLiIpKTsKIH0KQEAgLTI0NywxNCArMjU2LDE1IEBAIFRFU1RfRihX
ZWJGcmFtZVRlc3QsIEZyYW1lVmlld05lZWRzTGF5b3V0T25GaXhlZExheW91dFJlc2l6ZSkKIAog
ICAgIC8vIE1ha2Ugc3VyZSB3ZSBpbml0aWFsaXplIHRvIG1pbmltdW0gc2NhbGUsIGV2ZW4gaWYg
dGhlIHdpbmRvdyBzaXplCiAgICAgLy8gb25seSBiZWNvbWVzIGF2YWlsYWJsZSBhZnRlciB0aGUg
bG9hZCBiZWdpbnMuCi0gICAgV2ViVmlld0ltcGwqIHdlYlZpZXdJbXBsID0gc3RhdGljX2Nhc3Q8
V2ViVmlld0ltcGwqPihGcmFtZVRlc3RIZWxwZXJzOjpjcmVhdGVXZWJWaWV3QW5kTG9hZChtX2Jh
c2VVUkwgKyAiZml4ZWRfbGF5b3V0Lmh0bWwiLCB0cnVlLCAwLCAmY2xpZW50KSk7Ci0gICAgd2Vi
Vmlld0ltcGwtPnNldHRpbmdzKCktPnNldEFwcGx5RGV2aWNlU2NhbGVGYWN0b3JJbkNvbXBvc2l0
b3IodHJ1ZSk7Ci0gICAgd2ViVmlld0ltcGwtPnNldHRpbmdzKCktPnNldEFwcGx5UGFnZVNjYWxl
RmFjdG9ySW5Db21wb3NpdG9yKHRydWUpOwotICAgIHdlYlZpZXdJbXBsLT5lbmFibGVGaXhlZExh
eW91dE1vZGUodHJ1ZSk7Ci0gICAgd2ViVmlld0ltcGwtPnNldHRpbmdzKCktPnNldFZpZXdwb3J0
RW5hYmxlZCh0cnVlKTsKLSAgICB3ZWJWaWV3SW1wbC0+cmVzaXplKFdlYlNpemUodmlld3BvcnRX
aWR0aCwgdmlld3BvcnRIZWlnaHQpKTsKLSAgICB3ZWJWaWV3SW1wbC0+bGF5b3V0KCk7Ci0KKyAg
ICBtX3dlYlZpZXcgPSBGcmFtZVRlc3RIZWxwZXJzOjpjcmVhdGVXZWJWaWV3QW5kTG9hZChtX2Jh
c2VVUkwgKyAiZml4ZWRfbGF5b3V0Lmh0bWwiLCB0cnVlLCAwLCAmY2xpZW50KTsKKyAgICBtX3dl
YlZpZXctPnNldHRpbmdzKCktPnNldEFwcGx5RGV2aWNlU2NhbGVGYWN0b3JJbkNvbXBvc2l0b3Io
dHJ1ZSk7CisgICAgbV93ZWJWaWV3LT5zZXR0aW5ncygpLT5zZXRBcHBseVBhZ2VTY2FsZUZhY3Rv
ckluQ29tcG9zaXRvcih0cnVlKTsKKyAgICBtX3dlYlZpZXctPmVuYWJsZUZpeGVkTGF5b3V0TW9k
ZSh0cnVlKTsKKyAgICBtX3dlYlZpZXctPnNldHRpbmdzKCktPnNldFZpZXdwb3J0RW5hYmxlZCh0
cnVlKTsKKyAgICBtX3dlYlZpZXctPnJlc2l6ZShXZWJTaXplKHZpZXdwb3J0V2lkdGgsIHZpZXdw
b3J0SGVpZ2h0KSk7CisgICAgbV93ZWJWaWV3LT5sYXlvdXQoKTsKKworICAgIFdlYlZpZXdJbXBs
KiB3ZWJWaWV3SW1wbCA9IHN0YXRpY19jYXN0PFdlYlZpZXdJbXBsKj4obV93ZWJWaWV3KTsKICAg
ICB3ZWJWaWV3SW1wbC0+bWFpbkZyYW1lSW1wbCgpLT5mcmFtZVZpZXcoKS0+c2V0Rml4ZWRMYXlv
dXRTaXplKFdlYkNvcmU6OkludFNpemUoMTAwLCAxMDApKTsKICAgICBFWFBFQ1RfVFJVRSh3ZWJW
aWV3SW1wbC0+bWFpbkZyYW1lSW1wbCgpLT5mcmFtZVZpZXcoKS0+bmVlZHNMYXlvdXQoKSk7CiAK
QEAgLTI3NSwyNSArMjg1LDI1IEBAIFRFU1RfRihXZWJGcmFtZVRlc3QsIERldmljZVNjYWxlRmFj
dG9yVXNlc0RlZmF1bHRXaXRob3V0Vmlld3BvcnRUYWcpCiAgICAgRml4ZWRMYXlvdXRUZXN0V2Vi
Vmlld0NsaWVudCBjbGllbnQ7CiAgICAgY2xpZW50Lm1fc2NyZWVuSW5mby5kZXZpY2VTY2FsZUZh
Y3RvciA9IDI7CiAKLSAgICBXZWJWaWV3KiB3ZWJWaWV3ID0gc3RhdGljX2Nhc3Q8V2ViVmlldyo+
KEZyYW1lVGVzdEhlbHBlcnM6OmNyZWF0ZVdlYlZpZXdBbmRMb2FkKG1fYmFzZVVSTCArICJub192
aWV3cG9ydF90YWcuaHRtbCIsIHRydWUsIDAsICZjbGllbnQpKTsKKyAgICBtX3dlYlZpZXcgPSBG
cmFtZVRlc3RIZWxwZXJzOjpjcmVhdGVXZWJWaWV3QW5kTG9hZChtX2Jhc2VVUkwgKyAibm9fdmll
d3BvcnRfdGFnLmh0bWwiLCB0cnVlLCAwLCAmY2xpZW50KTsKIAotICAgIHdlYlZpZXctPnNldHRp
bmdzKCktPnNldEFwcGx5RGV2aWNlU2NhbGVGYWN0b3JJbkNvbXBvc2l0b3IodHJ1ZSk7Ci0gICAg
d2ViVmlldy0+c2V0dGluZ3MoKS0+c2V0QXBwbHlQYWdlU2NhbGVGYWN0b3JJbkNvbXBvc2l0b3Io
dHJ1ZSk7Ci0gICAgd2ViVmlldy0+c2V0dGluZ3MoKS0+c2V0Vmlld3BvcnRFbmFibGVkKHRydWUp
OwotICAgIHdlYlZpZXctPmVuYWJsZUZpeGVkTGF5b3V0TW9kZSh0cnVlKTsKLSAgICB3ZWJWaWV3
LT5yZXNpemUoV2ViU2l6ZSh2aWV3cG9ydFdpZHRoLCB2aWV3cG9ydEhlaWdodCkpOwotICAgIHdl
YlZpZXctPmxheW91dCgpOworICAgIG1fd2ViVmlldy0+c2V0dGluZ3MoKS0+c2V0QXBwbHlEZXZp
Y2VTY2FsZUZhY3RvckluQ29tcG9zaXRvcih0cnVlKTsKKyAgICBtX3dlYlZpZXctPnNldHRpbmdz
KCktPnNldEFwcGx5UGFnZVNjYWxlRmFjdG9ySW5Db21wb3NpdG9yKHRydWUpOworICAgIG1fd2Vi
Vmlldy0+c2V0dGluZ3MoKS0+c2V0Vmlld3BvcnRFbmFibGVkKHRydWUpOworICAgIG1fd2ViVmll
dy0+ZW5hYmxlRml4ZWRMYXlvdXRNb2RlKHRydWUpOworICAgIG1fd2ViVmlldy0+cmVzaXplKFdl
YlNpemUodmlld3BvcnRXaWR0aCwgdmlld3BvcnRIZWlnaHQpKTsKKyAgICBtX3dlYlZpZXctPmxh
eW91dCgpOwogCi0gICAgRVhQRUNUX0VRKDIsIHdlYlZpZXctPmRldmljZVNjYWxlRmFjdG9yKCkp
OworICAgIEVYUEVDVF9FUSgyLCBtX3dlYlZpZXctPmRldmljZVNjYWxlRmFjdG9yKCkpOwogCiAg
ICAgLy8gRGV2aWNlIHNjYWxlIGZhY3RvciBzaG91bGQgYmUgaW5kZXBlbmRlbnQgb2YgcGFnZSBz
Y2FsZS4KLSAgICB3ZWJWaWV3LT5zZXRQYWdlU2NhbGVGYWN0b3JMaW1pdHMoMSwgMik7Ci0gICAg
d2ViVmlldy0+c2V0UGFnZVNjYWxlRmFjdG9yUHJlc2VydmluZ1Njcm9sbE9mZnNldCgwLjUpOwot
ICAgIHdlYlZpZXctPmxheW91dCgpOwotICAgIEVYUEVDVF9FUSgxLCB3ZWJWaWV3LT5wYWdlU2Nh
bGVGYWN0b3IoKSk7CisgICAgbV93ZWJWaWV3LT5zZXRQYWdlU2NhbGVGYWN0b3JMaW1pdHMoMSwg
Mik7CisgICAgbV93ZWJWaWV3LT5zZXRQYWdlU2NhbGVGYWN0b3JQcmVzZXJ2aW5nU2Nyb2xsT2Zm
c2V0KDAuNSk7CisgICAgbV93ZWJWaWV3LT5sYXlvdXQoKTsKKyAgICBFWFBFQ1RfRVEoMSwgbV93
ZWJWaWV3LT5wYWdlU2NhbGVGYWN0b3IoKSk7CiAKICAgICAvLyBGb3JjZSB0aGUgbGF5b3V0IHRv
IGhhcHBlbiBiZWZvcmUgbGVhdmluZyB0aGUgdGVzdC4KLSAgICB3ZWJWaWV3LT5tYWluRnJhbWUo
KS0+Y29udGVudEFzVGV4dCgxMDI0KS51dGY4KCk7CisgICAgbV93ZWJWaWV3LT5tYWluRnJhbWUo
KS0+Y29udGVudEFzVGV4dCgxMDI0KS51dGY4KCk7CiB9CiAKIFRFU1RfRihXZWJGcmFtZVRlc3Qs
IEZpeGVkTGF5b3V0SW5pdGlhbGl6ZUF0TWluaW11bVBhZ2VTY2FsZSkKQEAgLTMwNywzMSArMzE3
LDMyIEBAIFRFU1RfRihXZWJGcmFtZVRlc3QsIEZpeGVkTGF5b3V0SW5pdGlhbGl6ZUF0TWluaW11
bVBhZ2VTY2FsZSkKIAogICAgIC8vIE1ha2Ugc3VyZSB3ZSBpbml0aWFsaXplIHRvIG1pbmltdW0g
c2NhbGUsIGV2ZW4gaWYgdGhlIHdpbmRvdyBzaXplCiAgICAgLy8gb25seSBiZWNvbWVzIGF2YWls
YWJsZSBhZnRlciB0aGUgbG9hZCBiZWdpbnMuCi0gICAgV2ViVmlld0ltcGwqIHdlYlZpZXdJbXBs
ID0gc3RhdGljX2Nhc3Q8V2ViVmlld0ltcGwqPihGcmFtZVRlc3RIZWxwZXJzOjpjcmVhdGVXZWJW
aWV3QW5kTG9hZChtX2Jhc2VVUkwgKyAiZml4ZWRfbGF5b3V0Lmh0bWwiLCB0cnVlLCAwLCAmY2xp
ZW50KSk7Ci0gICAgd2ViVmlld0ltcGwtPnNldHRpbmdzKCktPnNldEFwcGx5RGV2aWNlU2NhbGVG
YWN0b3JJbkNvbXBvc2l0b3IodHJ1ZSk7Ci0gICAgd2ViVmlld0ltcGwtPnNldHRpbmdzKCktPnNl
dEFwcGx5UGFnZVNjYWxlRmFjdG9ySW5Db21wb3NpdG9yKHRydWUpOwotICAgIHdlYlZpZXdJbXBs
LT5lbmFibGVGaXhlZExheW91dE1vZGUodHJ1ZSk7Ci0gICAgd2ViVmlld0ltcGwtPnNldHRpbmdz
KCktPnNldFZpZXdwb3J0RW5hYmxlZCh0cnVlKTsKLSAgICB3ZWJWaWV3SW1wbC0+cmVzaXplKFdl
YlNpemUodmlld3BvcnRXaWR0aCwgdmlld3BvcnRIZWlnaHQpKTsKKyAgICBtX3dlYlZpZXcgPSBG
cmFtZVRlc3RIZWxwZXJzOjpjcmVhdGVXZWJWaWV3QW5kTG9hZChtX2Jhc2VVUkwgKyAiZml4ZWRf
bGF5b3V0Lmh0bWwiLCB0cnVlLCAwLCAmY2xpZW50KTsKKyAgICBtX3dlYlZpZXctPnNldHRpbmdz
KCktPnNldEFwcGx5RGV2aWNlU2NhbGVGYWN0b3JJbkNvbXBvc2l0b3IodHJ1ZSk7CisgICAgbV93
ZWJWaWV3LT5zZXR0aW5ncygpLT5zZXRBcHBseVBhZ2VTY2FsZUZhY3RvckluQ29tcG9zaXRvcih0
cnVlKTsKKyAgICBtX3dlYlZpZXctPmVuYWJsZUZpeGVkTGF5b3V0TW9kZSh0cnVlKTsKKyAgICBt
X3dlYlZpZXctPnNldHRpbmdzKCktPnNldFZpZXdwb3J0RW5hYmxlZCh0cnVlKTsKKyAgICBtX3dl
YlZpZXctPnJlc2l6ZShXZWJTaXplKHZpZXdwb3J0V2lkdGgsIHZpZXdwb3J0SGVpZ2h0KSk7CiAK
ICAgICBpbnQgZGVmYXVsdEZpeGVkTGF5b3V0V2lkdGggPSA5ODA7CiAgICAgZmxvYXQgbWluaW11
bVBhZ2VTY2FsZUZhY3RvciA9IHZpZXdwb3J0V2lkdGggLyAoZmxvYXQpIGRlZmF1bHRGaXhlZExh
eW91dFdpZHRoOwotICAgIEVYUEVDVF9FUShtaW5pbXVtUGFnZVNjYWxlRmFjdG9yLCB3ZWJWaWV3
SW1wbC0+cGFnZVNjYWxlRmFjdG9yKCkpOworICAgIEVYUEVDVF9FUShtaW5pbXVtUGFnZVNjYWxl
RmFjdG9yLCBtX3dlYlZpZXctPnBhZ2VTY2FsZUZhY3RvcigpKTsKIAogICAgIC8vIEFzc3VtZSB0
aGUgdXNlciBoYXMgcGluY2ggem9vbWVkIHRvIHBhZ2Ugc2NhbGUgZmFjdG9yIDIuCiAgICAgZmxv
YXQgdXNlclBpbmNoUGFnZVNjYWxlRmFjdG9yID0gMjsKLSAgICB3ZWJWaWV3SW1wbC0+c2V0UGFn
ZVNjYWxlRmFjdG9yUHJlc2VydmluZ1Njcm9sbE9mZnNldCh1c2VyUGluY2hQYWdlU2NhbGVGYWN0
b3IpOwotICAgIHdlYlZpZXdJbXBsLT5tYWluRnJhbWVJbXBsKCktPmZyYW1lVmlldygpLT5sYXlv
dXQoKTsKKyAgICBtX3dlYlZpZXctPnNldFBhZ2VTY2FsZUZhY3RvclByZXNlcnZpbmdTY3JvbGxP
ZmZzZXQodXNlclBpbmNoUGFnZVNjYWxlRmFjdG9yKTsKKyAgICBtX3dlYlZpZXctPmxheW91dCgp
OwogCiAgICAgLy8gTWFrZSBzdXJlIHdlIGRvbid0IHJlc2V0IHRvIGluaXRpYWwgc2NhbGUgaWYg
dGhlIHBhZ2UgY29udGludWVzIHRvIGxvYWQuCiAgICAgYm9vbCBpc05ld05hdmlnYXRpb247Ci0g
ICAgd2ViVmlld0ltcGwtPmRpZENvbW1pdExvYWQoJmlzTmV3TmF2aWdhdGlvbiwgZmFsc2UpOwot
ICAgIHdlYlZpZXdJbXBsLT5kaWRDaGFuZ2VDb250ZW50c1NpemUoKTsKLSAgICBFWFBFQ1RfRVEo
dXNlclBpbmNoUGFnZVNjYWxlRmFjdG9yLCB3ZWJWaWV3SW1wbC0+cGFnZVNjYWxlRmFjdG9yKCkp
OworICAgIFdlYlZpZXdJbXBsKiB3ZWJWaWV3SW1wbCA9IHN0YXRpY19jYXN0PFdlYlZpZXdJbXBs
Kj4obV93ZWJWaWV3KTsKKyAgICB3ZWJWaWV3SW1wbCAtPmRpZENvbW1pdExvYWQoJmlzTmV3TmF2
aWdhdGlvbiwgZmFsc2UpOworICAgIHdlYlZpZXdJbXBsIC0+ZGlkQ2hhbmdlQ29udGVudHNTaXpl
KCk7CisgICAgRVhQRUNUX0VRKHVzZXJQaW5jaFBhZ2VTY2FsZUZhY3RvciwgbV93ZWJWaWV3LT5w
YWdlU2NhbGVGYWN0b3IoKSk7CiAKICAgICAvLyBNYWtlIHN1cmUgd2UgZG9uJ3QgcmVzZXQgdG8g
aW5pdGlhbCBzY2FsZSBpZiB0aGUgdmlld3BvcnQgc2l6ZSBjaGFuZ2VzLgotICAgIHdlYlZpZXdJ
bXBsLT5yZXNpemUoV2ViU2l6ZSh2aWV3cG9ydFdpZHRoLCB2aWV3cG9ydEhlaWdodCArIDEwMCkp
OwotICAgIEVYUEVDVF9FUSh1c2VyUGluY2hQYWdlU2NhbGVGYWN0b3IsIHdlYlZpZXdJbXBsLT5w
YWdlU2NhbGVGYWN0b3IoKSk7CisgICAgbV93ZWJWaWV3LT5yZXNpemUoV2ViU2l6ZSh2aWV3cG9y
dFdpZHRoLCB2aWV3cG9ydEhlaWdodCArIDEwMCkpOworICAgIEVYUEVDVF9FUSh1c2VyUGluY2hQ
YWdlU2NhbGVGYWN0b3IsIG1fd2ViVmlldy0+cGFnZVNjYWxlRmFjdG9yKCkpOwogfQogCiBURVNU
X0YoV2ViRnJhbWVUZXN0LCBTY2FsZUZhY3RvclNob3VsZE5vdE9zY2lsbGF0ZSkKQEAgLTM0Mywx
MSArMzU0LDExIEBAIFRFU1RfRihXZWJGcmFtZVRlc3QsIFNjYWxlRmFjdG9yU2hvdWxkTm90T3Nj
aWxsYXRlKQogICAgIGludCB2aWV3cG9ydFdpZHRoID0gODAwOwogICAgIGludCB2aWV3cG9ydEhl
aWdodCA9IDEwNTc7CiAKLSAgICBXZWJWaWV3SW1wbCogd2ViVmlld0ltcGwgPSBzdGF0aWNfY2Fz
dDxXZWJWaWV3SW1wbCo+KEZyYW1lVGVzdEhlbHBlcnM6OmNyZWF0ZVdlYlZpZXdBbmRMb2FkKG1f
YmFzZVVSTCArICJzY2FsZV9vc2NpbGxhdGUuaHRtbCIsIHRydWUsIDAsICZjbGllbnQpKTsKLSAg
ICB3ZWJWaWV3SW1wbC0+ZW5hYmxlRml4ZWRMYXlvdXRNb2RlKHRydWUpOwotICAgIHdlYlZpZXdJ
bXBsLT5zZXR0aW5ncygpLT5zZXRWaWV3cG9ydEVuYWJsZWQodHJ1ZSk7Ci0gICAgd2ViVmlld0lt
cGwtPnJlc2l6ZShXZWJTaXplKHZpZXdwb3J0V2lkdGgsIHZpZXdwb3J0SGVpZ2h0KSk7Ci0gICAg
d2ViVmlld0ltcGwtPmxheW91dCgpOworICAgIG1fd2ViVmlldyA9IEZyYW1lVGVzdEhlbHBlcnM6
OmNyZWF0ZVdlYlZpZXdBbmRMb2FkKG1fYmFzZVVSTCArICJzY2FsZV9vc2NpbGxhdGUuaHRtbCIs
IHRydWUsIDAsICZjbGllbnQpOworICAgIG1fd2ViVmlldy0+ZW5hYmxlRml4ZWRMYXlvdXRNb2Rl
KHRydWUpOworICAgIG1fd2ViVmlldy0+c2V0dGluZ3MoKS0+c2V0Vmlld3BvcnRFbmFibGVkKHRy
dWUpOworICAgIG1fd2ViVmlldy0+cmVzaXplKFdlYlNpemUodmlld3BvcnRXaWR0aCwgdmlld3Bv
cnRIZWlnaHQpKTsKKyAgICBtX3dlYlZpZXctPmxheW91dCgpOwogfQogCiBURVNUX0YoV2ViRnJh
bWVUZXN0LCBzZXRQYWdlU2NhbGVGYWN0b3JEb2VzTm90TGF5b3V0KQpAQCAtMzU5LDE0ICszNzAs
MTUgQEAgVEVTVF9GKFdlYkZyYW1lVGVzdCwgc2V0UGFnZVNjYWxlRmFjdG9yRG9lc05vdExheW91
dCkKICAgICBpbnQgdmlld3BvcnRXaWR0aCA9IDY0MDsKICAgICBpbnQgdmlld3BvcnRIZWlnaHQg
PSA0ODA7CiAKLSAgICBXZWJWaWV3SW1wbCogd2ViVmlld0ltcGwgPSBzdGF0aWNfY2FzdDxXZWJW
aWV3SW1wbCo+KEZyYW1lVGVzdEhlbHBlcnM6OmNyZWF0ZVdlYlZpZXdBbmRMb2FkKG1fYmFzZVVS
TCArICJmaXhlZF9sYXlvdXQuaHRtbCIsIHRydWUsIDAsICZjbGllbnQpKTsKLSAgICB3ZWJWaWV3
SW1wbC0+c2V0dGluZ3MoKS0+c2V0QXBwbHlEZXZpY2VTY2FsZUZhY3RvckluQ29tcG9zaXRvcih0
cnVlKTsKLSAgICB3ZWJWaWV3SW1wbC0+c2V0dGluZ3MoKS0+c2V0QXBwbHlQYWdlU2NhbGVGYWN0
b3JJbkNvbXBvc2l0b3IodHJ1ZSk7Ci0gICAgd2ViVmlld0ltcGwtPmVuYWJsZUZpeGVkTGF5b3V0
TW9kZSh0cnVlKTsKLSAgICB3ZWJWaWV3SW1wbC0+c2V0dGluZ3MoKS0+c2V0Vmlld3BvcnRFbmFi
bGVkKHRydWUpOwotICAgIHdlYlZpZXdJbXBsLT5yZXNpemUoV2ViU2l6ZSh2aWV3cG9ydFdpZHRo
LCB2aWV3cG9ydEhlaWdodCkpOwotICAgIHdlYlZpZXdJbXBsLT5sYXlvdXQoKTsKKyAgICBtX3dl
YlZpZXcgPSBzdGF0aWNfY2FzdDxXZWJWaWV3SW1wbCo+KEZyYW1lVGVzdEhlbHBlcnM6OmNyZWF0
ZVdlYlZpZXdBbmRMb2FkKG1fYmFzZVVSTCArICJmaXhlZF9sYXlvdXQuaHRtbCIsIHRydWUsIDAs
ICZjbGllbnQpKTsKKyAgICBtX3dlYlZpZXctPnNldHRpbmdzKCktPnNldEFwcGx5RGV2aWNlU2Nh
bGVGYWN0b3JJbkNvbXBvc2l0b3IodHJ1ZSk7CisgICAgbV93ZWJWaWV3LT5zZXR0aW5ncygpLT5z
ZXRBcHBseVBhZ2VTY2FsZUZhY3RvckluQ29tcG9zaXRvcih0cnVlKTsKKyAgICBtX3dlYlZpZXct
PmVuYWJsZUZpeGVkTGF5b3V0TW9kZSh0cnVlKTsKKyAgICBtX3dlYlZpZXctPnNldHRpbmdzKCkt
PnNldFZpZXdwb3J0RW5hYmxlZCh0cnVlKTsKKyAgICBtX3dlYlZpZXctPnJlc2l6ZShXZWJTaXpl
KHZpZXdwb3J0V2lkdGgsIHZpZXdwb3J0SGVpZ2h0KSk7CisgICAgbV93ZWJWaWV3LT5sYXlvdXQo
KTsKIAorICAgIFdlYlZpZXdJbXBsKiB3ZWJWaWV3SW1wbCA9IHN0YXRpY19jYXN0PFdlYlZpZXdJ
bXBsKj4obV93ZWJWaWV3KTsKICAgICBpbnQgcHJldkxheW91dENvdW50ID0gd2ViVmlld0ltcGwt
Pm1haW5GcmFtZUltcGwoKS0+ZnJhbWVWaWV3KCktPmxheW91dENvdW50KCk7CiAgICAgd2ViVmll
d0ltcGwtPnNldFBhZ2VTY2FsZUZhY3RvcigzLCBXZWJQb2ludCgpKTsKICAgICBFWFBFQ1RfRkFM
U0Uod2ViVmlld0ltcGwtPm1haW5GcmFtZUltcGwoKS0+ZnJhbWVWaWV3KCktPm5lZWRzTGF5b3V0
KCkpOwpAQCAtMzgyLDE5ICszOTQsMjAgQEAgVEVTVF9GKFdlYkZyYW1lVGVzdCwgcGFnZVNjYWxl
RmFjdG9yV3JpdHRlblRvSGlzdG9yeUl0ZW0pCiAgICAgaW50IHZpZXdwb3J0V2lkdGggPSA2NDA7
CiAgICAgaW50IHZpZXdwb3J0SGVpZ2h0ID0gNDgwOwogCi0gICAgV2ViVmlld0ltcGwqIHdlYlZp
ZXdJbXBsID0gc3RhdGljX2Nhc3Q8V2ViVmlld0ltcGwqPihGcmFtZVRlc3RIZWxwZXJzOjpjcmVh
dGVXZWJWaWV3QW5kTG9hZChtX2Jhc2VVUkwgKyAiZml4ZWRfbGF5b3V0Lmh0bWwiLCB0cnVlLCAw
LCAmY2xpZW50KSk7Ci0gICAgd2ViVmlld0ltcGwtPnNldHRpbmdzKCktPnNldEFwcGx5RGV2aWNl
U2NhbGVGYWN0b3JJbkNvbXBvc2l0b3IodHJ1ZSk7Ci0gICAgd2ViVmlld0ltcGwtPnNldHRpbmdz
KCktPnNldEFwcGx5UGFnZVNjYWxlRmFjdG9ySW5Db21wb3NpdG9yKHRydWUpOwotICAgIHdlYlZp
ZXdJbXBsLT5lbmFibGVGaXhlZExheW91dE1vZGUodHJ1ZSk7Ci0gICAgd2ViVmlld0ltcGwtPnNl
dHRpbmdzKCktPnNldFZpZXdwb3J0RW5hYmxlZCh0cnVlKTsKLSAgICB3ZWJWaWV3SW1wbC0+cmVz
aXplKFdlYlNpemUodmlld3BvcnRXaWR0aCwgdmlld3BvcnRIZWlnaHQpKTsKLSAgICB3ZWJWaWV3
SW1wbC0+bGF5b3V0KCk7CisgICAgbV93ZWJWaWV3ID0gRnJhbWVUZXN0SGVscGVyczo6Y3JlYXRl
V2ViVmlld0FuZExvYWQobV9iYXNlVVJMICsgImZpeGVkX2xheW91dC5odG1sIiwgdHJ1ZSwgMCwg
JmNsaWVudCk7CisgICAgbV93ZWJWaWV3LT5zZXR0aW5ncygpLT5zZXRBcHBseURldmljZVNjYWxl
RmFjdG9ySW5Db21wb3NpdG9yKHRydWUpOworICAgIG1fd2ViVmlldy0+c2V0dGluZ3MoKS0+c2V0
QXBwbHlQYWdlU2NhbGVGYWN0b3JJbkNvbXBvc2l0b3IodHJ1ZSk7CisgICAgbV93ZWJWaWV3LT5l
bmFibGVGaXhlZExheW91dE1vZGUodHJ1ZSk7CisgICAgbV93ZWJWaWV3LT5zZXR0aW5ncygpLT5z
ZXRWaWV3cG9ydEVuYWJsZWQodHJ1ZSk7CisgICAgbV93ZWJWaWV3LT5yZXNpemUoV2ViU2l6ZSh2
aWV3cG9ydFdpZHRoLCB2aWV3cG9ydEhlaWdodCkpOworICAgIG1fd2ViVmlldy0+bGF5b3V0KCk7
CiAKLSAgICB3ZWJWaWV3SW1wbC0+c2V0UGFnZVNjYWxlRmFjdG9yKDMsIFdlYlBvaW50KCkpOwor
ICAgIFdlYlZpZXdJbXBsKiB3ZWJWaWV3SW1wbCA9IHN0YXRpY19jYXN0PFdlYlZpZXdJbXBsKj4o
bV93ZWJWaWV3KTsKKyAgICBtX3dlYlZpZXctPnNldFBhZ2VTY2FsZUZhY3RvcigzLCBXZWJQb2lu
dCgpKTsKICAgICB3ZWJWaWV3SW1wbC0+cGFnZSgpLT5tYWluRnJhbWUoKS0+bG9hZGVyKCktPmhp
c3RvcnkoKS0+c2F2ZURvY3VtZW50QW5kU2Nyb2xsU3RhdGUoKTsKLSAgICB3ZWJWaWV3SW1wbC0+
c2V0UGFnZVNjYWxlRmFjdG9yKDEsIFdlYlBvaW50KCkpOworICAgIG1fd2ViVmlldy0+c2V0UGFn
ZVNjYWxlRmFjdG9yKDEsIFdlYlBvaW50KCkpOwogICAgIHdlYlZpZXdJbXBsLT5wYWdlKCktPm1h
aW5GcmFtZSgpLT5sb2FkZXIoKS0+aGlzdG9yeSgpLT5yZXN0b3JlU2Nyb2xsUG9zaXRpb25BbmRW
aWV3U3RhdGUoKTsKLSAgICBFWFBFQ1RfRVEoMywgd2ViVmlld0ltcGwtPnBhZ2VTY2FsZUZhY3Rv
cigpKTsKKyAgICBFWFBFQ1RfRVEoMywgbV93ZWJWaWV3LT5wYWdlU2NhbGVGYWN0b3IoKSk7CiB9
CiAKIFRFU1RfRihXZWJGcmFtZVRlc3QsIHBhZ2VTY2FsZUZhY3RvclNocmlua3NWaWV3cG9ydCkK
QEAgLTQwNiwxOSArNDE5LDE5IEBAIFRFU1RfRihXZWJGcmFtZVRlc3QsIHBhZ2VTY2FsZUZhY3Rv
clNocmlua3NWaWV3cG9ydCkKICAgICBpbnQgdmlld3BvcnRXaWR0aCA9IDY0MDsKICAgICBpbnQg
dmlld3BvcnRIZWlnaHQgPSA0ODA7CiAKLSAgICBXZWJWaWV3SW1wbCogd2ViVmlld0ltcGwgPSBz
dGF0aWNfY2FzdDxXZWJWaWV3SW1wbCo+KEZyYW1lVGVzdEhlbHBlcnM6OmNyZWF0ZVdlYlZpZXdB
bmRMb2FkKG1fYmFzZVVSTCArICJmaXhlZF9sYXlvdXQuaHRtbCIsIHRydWUsIDAsICZjbGllbnQp
KTsKLSAgICB3ZWJWaWV3SW1wbC0+c2V0dGluZ3MoKS0+c2V0QXBwbHlEZXZpY2VTY2FsZUZhY3Rv
ckluQ29tcG9zaXRvcih0cnVlKTsKLSAgICB3ZWJWaWV3SW1wbC0+c2V0dGluZ3MoKS0+c2V0QXBw
bHlQYWdlU2NhbGVGYWN0b3JJbkNvbXBvc2l0b3IodHJ1ZSk7Ci0gICAgd2ViVmlld0ltcGwtPmVu
YWJsZUZpeGVkTGF5b3V0TW9kZSh0cnVlKTsKLSAgICB3ZWJWaWV3SW1wbC0+c2V0dGluZ3MoKS0+
c2V0Vmlld3BvcnRFbmFibGVkKHRydWUpOwotICAgIHdlYlZpZXdJbXBsLT5yZXNpemUoV2ViU2l6
ZSh2aWV3cG9ydFdpZHRoLCB2aWV3cG9ydEhlaWdodCkpOwotICAgIHdlYlZpZXdJbXBsLT5sYXlv
dXQoKTsKKyAgICBtX3dlYlZpZXcgPSBGcmFtZVRlc3RIZWxwZXJzOjpjcmVhdGVXZWJWaWV3QW5k
TG9hZChtX2Jhc2VVUkwgKyAiZml4ZWRfbGF5b3V0Lmh0bWwiLCB0cnVlLCAwLCAmY2xpZW50KTsK
KyAgICBtX3dlYlZpZXctPnNldHRpbmdzKCktPnNldEFwcGx5RGV2aWNlU2NhbGVGYWN0b3JJbkNv
bXBvc2l0b3IodHJ1ZSk7CisgICAgbV93ZWJWaWV3LT5zZXR0aW5ncygpLT5zZXRBcHBseVBhZ2VT
Y2FsZUZhY3RvckluQ29tcG9zaXRvcih0cnVlKTsKKyAgICBtX3dlYlZpZXctPmVuYWJsZUZpeGVk
TGF5b3V0TW9kZSh0cnVlKTsKKyAgICBtX3dlYlZpZXctPnNldHRpbmdzKCktPnNldFZpZXdwb3J0
RW5hYmxlZCh0cnVlKTsKKyAgICBtX3dlYlZpZXctPnJlc2l6ZShXZWJTaXplKHZpZXdwb3J0V2lk
dGgsIHZpZXdwb3J0SGVpZ2h0KSk7CisgICAgbV93ZWJWaWV3LT5sYXlvdXQoKTsKIAotICAgIFdl
YkNvcmU6OkZyYW1lVmlldyogdmlldyA9IHdlYlZpZXdJbXBsLT5tYWluRnJhbWVJbXBsKCktPmZy
YW1lVmlldygpOworICAgIFdlYkNvcmU6OkZyYW1lVmlldyogdmlldyA9IHN0YXRpY19jYXN0PFdl
YlZpZXdJbXBsKj4obV93ZWJWaWV3KS0+bWFpbkZyYW1lSW1wbCgpLT5mcmFtZVZpZXcoKTsKICAg
ICBpbnQgdmlld3BvcnRXaWR0aE1pbnVzU2Nyb2xsYmFyID0gNjQwIC0gKHZpZXctPnZlcnRpY2Fs
U2Nyb2xsYmFyKCktPmlzT3ZlcmxheVNjcm9sbGJhcigpID8gMCA6IDE1KTsKICAgICBpbnQgdmll
d3BvcnRIZWlnaHRNaW51c1Njcm9sbGJhciA9IDQ4MCAtICh2aWV3LT5ob3Jpem9udGFsU2Nyb2xs
YmFyKCktPmlzT3ZlcmxheVNjcm9sbGJhcigpID8gMCA6IDE1KTsKIAotICAgIHdlYlZpZXdJbXBs
LT5zZXRQYWdlU2NhbGVGYWN0b3IoMiwgV2ViUG9pbnQoKSk7CisgICAgbV93ZWJWaWV3LT5zZXRQ
YWdlU2NhbGVGYWN0b3IoMiwgV2ViUG9pbnQoKSk7CiAKICAgICBXZWJDb3JlOjpJbnRTaXplIHVu
c2NhbGVkU2l6ZSA9IHZpZXctPnVuc2NhbGVkVmlzaWJsZUNvbnRlbnRTaXplKHRydWUpOwogICAg
IEVYUEVDVF9FUSh2aWV3cG9ydFdpZHRoLCB1bnNjYWxlZFNpemUud2lkdGgoKSk7CkBAIC00NDIs
MTYgKzQ1NSwxNyBAQCBURVNUX0YoV2ViRnJhbWVUZXN0LCBwYWdlU2NhbGVGYWN0b3JEb2VzTm90
QXBwbHlDc3NUcmFuc2Zvcm0pCiAgICAgaW50IHZpZXdwb3J0V2lkdGggPSA2NDA7CiAgICAgaW50
IHZpZXdwb3J0SGVpZ2h0ID0gNDgwOwogCi0gICAgV2ViVmlld0ltcGwqIHdlYlZpZXdJbXBsID0g
c3RhdGljX2Nhc3Q8V2ViVmlld0ltcGwqPihGcmFtZVRlc3RIZWxwZXJzOjpjcmVhdGVXZWJWaWV3
QW5kTG9hZChtX2Jhc2VVUkwgKyAiZml4ZWRfbGF5b3V0Lmh0bWwiLCB0cnVlLCAwLCAmY2xpZW50
KSk7Ci0gICAgd2ViVmlld0ltcGwtPnNldHRpbmdzKCktPnNldEFwcGx5RGV2aWNlU2NhbGVGYWN0
b3JJbkNvbXBvc2l0b3IodHJ1ZSk7Ci0gICAgd2ViVmlld0ltcGwtPnNldHRpbmdzKCktPnNldEFw
cGx5UGFnZVNjYWxlRmFjdG9ySW5Db21wb3NpdG9yKHRydWUpOwotICAgIHdlYlZpZXdJbXBsLT5l
bmFibGVGaXhlZExheW91dE1vZGUodHJ1ZSk7Ci0gICAgd2ViVmlld0ltcGwtPnNldHRpbmdzKCkt
PnNldFZpZXdwb3J0RW5hYmxlZCh0cnVlKTsKLSAgICB3ZWJWaWV3SW1wbC0+cmVzaXplKFdlYlNp
emUodmlld3BvcnRXaWR0aCwgdmlld3BvcnRIZWlnaHQpKTsKLSAgICB3ZWJWaWV3SW1wbC0+bGF5
b3V0KCk7CisgICAgbV93ZWJWaWV3ID0gRnJhbWVUZXN0SGVscGVyczo6Y3JlYXRlV2ViVmlld0Fu
ZExvYWQobV9iYXNlVVJMICsgImZpeGVkX2xheW91dC5odG1sIiwgdHJ1ZSwgMCwgJmNsaWVudCk7
CisgICAgbV93ZWJWaWV3LT5zZXR0aW5ncygpLT5zZXRBcHBseURldmljZVNjYWxlRmFjdG9ySW5D
b21wb3NpdG9yKHRydWUpOworICAgIG1fd2ViVmlldy0+c2V0dGluZ3MoKS0+c2V0QXBwbHlQYWdl
U2NhbGVGYWN0b3JJbkNvbXBvc2l0b3IodHJ1ZSk7CisgICAgbV93ZWJWaWV3LT5lbmFibGVGaXhl
ZExheW91dE1vZGUodHJ1ZSk7CisgICAgbV93ZWJWaWV3LT5zZXR0aW5ncygpLT5zZXRWaWV3cG9y
dEVuYWJsZWQodHJ1ZSk7CisgICAgbV93ZWJWaWV3LT5yZXNpemUoV2ViU2l6ZSh2aWV3cG9ydFdp
ZHRoLCB2aWV3cG9ydEhlaWdodCkpOworICAgIG1fd2ViVmlldy0+bGF5b3V0KCk7CiAKLSAgICB3
ZWJWaWV3SW1wbC0+c2V0UGFnZVNjYWxlRmFjdG9yKDIsIFdlYlBvaW50KCkpOworICAgIG1fd2Vi
Vmlldy0+c2V0UGFnZVNjYWxlRmFjdG9yKDIsIFdlYlBvaW50KCkpOwogCisgICAgV2ViVmlld0lt
cGwqIHdlYlZpZXdJbXBsID0gc3RhdGljX2Nhc3Q8V2ViVmlld0ltcGwqPihtX3dlYlZpZXcpOwog
ICAgIEVYUEVDVF9FUSgxLCB3ZWJWaWV3SW1wbC0+cGFnZSgpLT5tYWluRnJhbWUoKS0+ZnJhbWVT
Y2FsZUZhY3RvcigpKTsKICAgICBFWFBFQ1RfRVEoOTgwLCB3ZWJWaWV3SW1wbC0+cGFnZSgpLT5t
YWluRnJhbWUoKS0+Y29udGVudFJlbmRlcmVyKCktPnVuc2NhbGVkRG9jdW1lbnRSZWN0KCkud2lk
dGgoKSk7CiAgICAgRVhQRUNUX0VRKDk4MCwgd2ViVmlld0ltcGwtPm1haW5GcmFtZUltcGwoKS0+
ZnJhbWVWaWV3KCktPmNvbnRlbnRzU2l6ZSgpLndpZHRoKCkpOwpAQCAtNDY3LDE3ICs0ODEsMTcg
QEAgVEVTVF9GKFdlYkZyYW1lVGVzdCwgcGFnZVNjYWxlRmFjdG9yU2NhbGVzUGFpbnRDbGlwKQog
ICAgIGludCB2aWV3cG9ydFdpZHRoID0gNTA7CiAgICAgaW50IHZpZXdwb3J0SGVpZ2h0ID0gNTA7
CiAKLSAgICBXZWJWaWV3SW1wbCogd2ViVmlld0ltcGwgPSBzdGF0aWNfY2FzdDxXZWJWaWV3SW1w
bCo+KEZyYW1lVGVzdEhlbHBlcnM6OmNyZWF0ZVdlYlZpZXdBbmRMb2FkKG1fYmFzZVVSTCArICJm
aXhlZF9sYXlvdXQuaHRtbCIsIHRydWUsIDAsICZjbGllbnQpKTsKLSAgICB3ZWJWaWV3SW1wbC0+
c2V0dGluZ3MoKS0+c2V0QXBwbHlEZXZpY2VTY2FsZUZhY3RvckluQ29tcG9zaXRvcih0cnVlKTsK
LSAgICB3ZWJWaWV3SW1wbC0+c2V0dGluZ3MoKS0+c2V0QXBwbHlQYWdlU2NhbGVGYWN0b3JJbkNv
bXBvc2l0b3IodHJ1ZSk7Ci0gICAgd2ViVmlld0ltcGwtPmVuYWJsZUZpeGVkTGF5b3V0TW9kZSh0
cnVlKTsKLSAgICB3ZWJWaWV3SW1wbC0+c2V0dGluZ3MoKS0+c2V0Vmlld3BvcnRFbmFibGVkKHRy
dWUpOwotICAgIHdlYlZpZXdJbXBsLT5yZXNpemUoV2ViU2l6ZSh2aWV3cG9ydFdpZHRoLCB2aWV3
cG9ydEhlaWdodCkpOwotICAgIHdlYlZpZXdJbXBsLT5sYXlvdXQoKTsKKyAgICBtX3dlYlZpZXcg
PSBGcmFtZVRlc3RIZWxwZXJzOjpjcmVhdGVXZWJWaWV3QW5kTG9hZChtX2Jhc2VVUkwgKyAiZml4
ZWRfbGF5b3V0Lmh0bWwiLCB0cnVlLCAwLCAmY2xpZW50KTsKKyAgICBtX3dlYlZpZXctPnNldHRp
bmdzKCktPnNldEFwcGx5RGV2aWNlU2NhbGVGYWN0b3JJbkNvbXBvc2l0b3IodHJ1ZSk7CisgICAg
bV93ZWJWaWV3LT5zZXR0aW5ncygpLT5zZXRBcHBseVBhZ2VTY2FsZUZhY3RvckluQ29tcG9zaXRv
cih0cnVlKTsKKyAgICBtX3dlYlZpZXctPmVuYWJsZUZpeGVkTGF5b3V0TW9kZSh0cnVlKTsKKyAg
ICBtX3dlYlZpZXctPnNldHRpbmdzKCktPnNldFZpZXdwb3J0RW5hYmxlZCh0cnVlKTsKKyAgICBt
X3dlYlZpZXctPnJlc2l6ZShXZWJTaXplKHZpZXdwb3J0V2lkdGgsIHZpZXdwb3J0SGVpZ2h0KSk7
CisgICAgbV93ZWJWaWV3LT5sYXlvdXQoKTsKIAogICAgIC8vIFNldCA8MSBwYWdlIHNjYWxlIHNv
IHRoYXQgdGhlIGNsaXAgcmVjdCBzaG91bGQgYmUgbGFyZ2VyIHRoYW4KICAgICAvLyB0aGUgdmll
d3BvcnQgc2l6ZSBhcyBwYXNzZWQgaW50byByZXNpemUoKS4KLSAgICB3ZWJWaWV3SW1wbC0+c2V0
UGFnZVNjYWxlRmFjdG9yKDAuNSwgV2ViUG9pbnQoKSk7CisgICAgbV93ZWJWaWV3LT5zZXRQYWdl
U2NhbGVGYWN0b3IoMC41LCBXZWJQb2ludCgpKTsKIAogICAgIFNrQml0bWFwIGJpdG1hcDsKICAg
ICBiaXRtYXAuc2V0Q29uZmlnKFNrQml0bWFwOjprQVJHQl84ODg4X0NvbmZpZywgMjAwLCAyMDAp
OwpAQCAtNDkxLDcgKzUwNSw3IEBAIFRFU1RfRihXZWJGcmFtZVRlc3QsIHBhZ2VTY2FsZUZhY3Rv
clNjYWxlc1BhaW50Q2xpcCkKIAogICAgIEVYUEVDVF9FUV9SRUNUKFdlYkNvcmU6OkludFJlY3Qo
MCwgMCwgMCwgMCksIHBsYXRmb3JtQ29udGV4dC5vcGFxdWVSZWdpb24oKS5hc1JlY3QoKSk7CiAK
LSAgICBXZWJDb3JlOjpGcmFtZVZpZXcqIHZpZXcgPSB3ZWJWaWV3SW1wbC0+bWFpbkZyYW1lSW1w
bCgpLT5mcmFtZVZpZXcoKTsKKyAgICBXZWJDb3JlOjpGcmFtZVZpZXcqIHZpZXcgPSBzdGF0aWNf
Y2FzdDxXZWJWaWV3SW1wbCo+KG1fd2ViVmlldyktPm1haW5GcmFtZUltcGwoKS0+ZnJhbWVWaWV3
KCk7CiAgICAgV2ViQ29yZTo6SW50UmVjdCBwYWludFJlY3QoMCwgMCwgMjAwLCAyMDApOwogICAg
IHZpZXctPnBhaW50KCZjb250ZXh0LCBwYWludFJlY3QpOwogCkBAIC01MTAsMTkgKzUyNCwxOSBA
QCBURVNUX0YoV2ViRnJhbWVUZXN0LCBDYW5PdmVycmlkZU1heGltdW1TY2FsZUZhY3RvcikKICAg
ICBpbnQgdmlld3BvcnRXaWR0aCA9IDY0MDsKICAgICBpbnQgdmlld3BvcnRIZWlnaHQgPSA0ODA7
CiAKLSAgICBXZWJWaWV3SW1wbCogd2ViVmlld0ltcGwgPSBzdGF0aWNfY2FzdDxXZWJWaWV3SW1w
bCo+KEZyYW1lVGVzdEhlbHBlcnM6OmNyZWF0ZVdlYlZpZXdBbmRMb2FkKG1fYmFzZVVSTCArICJu
b19zY2FsZV9mb3JfeW91Lmh0bWwiLCB0cnVlLCAwLCAmY2xpZW50KSk7Ci0gICAgd2ViVmlld0lt
cGwtPnNldHRpbmdzKCktPnNldEFwcGx5RGV2aWNlU2NhbGVGYWN0b3JJbkNvbXBvc2l0b3IodHJ1
ZSk7Ci0gICAgd2ViVmlld0ltcGwtPnNldHRpbmdzKCktPnNldEFwcGx5UGFnZVNjYWxlRmFjdG9y
SW5Db21wb3NpdG9yKHRydWUpOwotICAgIHdlYlZpZXdJbXBsLT5lbmFibGVGaXhlZExheW91dE1v
ZGUodHJ1ZSk7Ci0gICAgd2ViVmlld0ltcGwtPnNldHRpbmdzKCktPnNldFZpZXdwb3J0RW5hYmxl
ZCh0cnVlKTsKLSAgICB3ZWJWaWV3SW1wbC0+cmVzaXplKFdlYlNpemUodmlld3BvcnRXaWR0aCwg
dmlld3BvcnRIZWlnaHQpKTsKKyAgICBtX3dlYlZpZXcgPSBGcmFtZVRlc3RIZWxwZXJzOjpjcmVh
dGVXZWJWaWV3QW5kTG9hZChtX2Jhc2VVUkwgKyAibm9fc2NhbGVfZm9yX3lvdS5odG1sIiwgdHJ1
ZSwgMCwgJmNsaWVudCk7CisgICAgbV93ZWJWaWV3LT5zZXR0aW5ncygpLT5zZXRBcHBseURldmlj
ZVNjYWxlRmFjdG9ySW5Db21wb3NpdG9yKHRydWUpOworICAgIG1fd2ViVmlldy0+c2V0dGluZ3Mo
KS0+c2V0QXBwbHlQYWdlU2NhbGVGYWN0b3JJbkNvbXBvc2l0b3IodHJ1ZSk7CisgICAgbV93ZWJW
aWV3LT5lbmFibGVGaXhlZExheW91dE1vZGUodHJ1ZSk7CisgICAgbV93ZWJWaWV3LT5zZXR0aW5n
cygpLT5zZXRWaWV3cG9ydEVuYWJsZWQodHJ1ZSk7CisgICAgbV93ZWJWaWV3LT5yZXNpemUoV2Vi
U2l6ZSh2aWV3cG9ydFdpZHRoLCB2aWV3cG9ydEhlaWdodCkpOwogCi0gICAgRVhQRUNUX0VRKDEu
MGYsIHdlYlZpZXdJbXBsLT5tYXhpbXVtUGFnZVNjYWxlRmFjdG9yKCkpOworICAgIEVYUEVDVF9F
USgxLjBmLCBtX3dlYlZpZXctPm1heGltdW1QYWdlU2NhbGVGYWN0b3IoKSk7CiAKLSAgICB3ZWJW
aWV3SW1wbC0+c2V0SWdub3JlVmlld3BvcnRUYWdNYXhpbXVtU2NhbGUodHJ1ZSk7Ci0gICAgd2Vi
Vmlld0ltcGwtPmxheW91dCgpOworICAgIG1fd2ViVmlldy0+c2V0SWdub3JlVmlld3BvcnRUYWdN
YXhpbXVtU2NhbGUodHJ1ZSk7CisgICAgbV93ZWJWaWV3LT5sYXlvdXQoKTsKIAotICAgIEVYUEVD
VF9FUSg0LjBmLCB3ZWJWaWV3SW1wbC0+bWF4aW11bVBhZ2VTY2FsZUZhY3RvcigpKTsKKyAgICBF
WFBFQ1RfRVEoNC4wZiwgbV93ZWJWaWV3LT5tYXhpbXVtUGFnZVNjYWxlRmFjdG9yKCkpOwogfQog
CiAjaWYgRU5BQkxFKEdFU1RVUkVfRVZFTlRTKQpAQCAtNTM5LDE1ICs1NTMsMTUgQEAgVEVTVF9G
KFdlYkZyYW1lVGVzdCwgRGl2QXV0b1pvb21QYXJhbXNUZXN0Q29tcG9zaXRvclNjYWxpbmcpCiAg
ICAgY29uc3QgZmxvYXQgZGV2aWNlU2NhbGVGYWN0b3IgPSAyLjBmOwogICAgIGludCB2aWV3cG9y
dFdpZHRoID0gNjQwIC8gZGV2aWNlU2NhbGVGYWN0b3I7CiAgICAgaW50IHZpZXdwb3J0SGVpZ2h0
ID0gMTI4MCAvIGRldmljZVNjYWxlRmFjdG9yOwotICAgIFdlYktpdDo6V2ViVmlldyogd2ViVmll
dyA9IEZyYW1lVGVzdEhlbHBlcnM6OmNyZWF0ZVdlYlZpZXdBbmRMb2FkKG1fYmFzZVVSTCArICJn
ZXRfc2NhbGVfZm9yX2F1dG9fem9vbV9pbnRvX2Rpdl90ZXN0Lmh0bWwiKTsgLy8KLSAgICB3ZWJW
aWV3LT5zZXR0aW5ncygpLT5zZXRBcHBseURldmljZVNjYWxlRmFjdG9ySW5Db21wb3NpdG9yKHRy
dWUpOwotICAgIHdlYlZpZXctPnNldHRpbmdzKCktPnNldEFwcGx5UGFnZVNjYWxlRmFjdG9ySW5D
b21wb3NpdG9yKHRydWUpOwotICAgIHdlYlZpZXctPnNldERldmljZVNjYWxlRmFjdG9yKGRldmlj
ZVNjYWxlRmFjdG9yKTsKLSAgICB3ZWJWaWV3LT5zZXRQYWdlU2NhbGVGYWN0b3JMaW1pdHMoMC4w
MWYsIDQpOwotICAgIHdlYlZpZXctPnNldFBhZ2VTY2FsZUZhY3RvcigwLjVmLCBXZWJQb2ludCgw
LCAwKSk7Ci0gICAgd2ViVmlldy0+cmVzaXplKFdlYlNpemUodmlld3BvcnRXaWR0aCwgdmlld3Bv
cnRIZWlnaHQpKTsKLSAgICB3ZWJWaWV3LT5lbmFibGVGaXhlZExheW91dE1vZGUodHJ1ZSk7Ci0g
ICAgd2ViVmlldy0+bGF5b3V0KCk7CisgICAgbV93ZWJWaWV3ID0gRnJhbWVUZXN0SGVscGVyczo6
Y3JlYXRlV2ViVmlld0FuZExvYWQobV9iYXNlVVJMICsgImdldF9zY2FsZV9mb3JfYXV0b196b29t
X2ludG9fZGl2X3Rlc3QuaHRtbCIpOyAvLworICAgIG1fd2ViVmlldy0+c2V0dGluZ3MoKS0+c2V0
QXBwbHlEZXZpY2VTY2FsZUZhY3RvckluQ29tcG9zaXRvcih0cnVlKTsKKyAgICBtX3dlYlZpZXct
PnNldHRpbmdzKCktPnNldEFwcGx5UGFnZVNjYWxlRmFjdG9ySW5Db21wb3NpdG9yKHRydWUpOwor
ICAgIG1fd2ViVmlldy0+c2V0RGV2aWNlU2NhbGVGYWN0b3IoZGV2aWNlU2NhbGVGYWN0b3IpOwor
ICAgIG1fd2ViVmlldy0+c2V0UGFnZVNjYWxlRmFjdG9yTGltaXRzKDAuMDFmLCA0KTsKKyAgICBt
X3dlYlZpZXctPnNldFBhZ2VTY2FsZUZhY3RvcigwLjVmLCBXZWJQb2ludCgwLCAwKSk7CisgICAg
bV93ZWJWaWV3LT5yZXNpemUoV2ViU2l6ZSh2aWV3cG9ydFdpZHRoLCB2aWV3cG9ydEhlaWdodCkp
OworICAgIG1fd2ViVmlldy0+ZW5hYmxlRml4ZWRMYXlvdXRNb2RlKHRydWUpOworICAgIG1fd2Vi
Vmlldy0+bGF5b3V0KCk7CiAKICAgICBXZWJSZWN0IHdpZGVEaXYoMjAwLCAxMDAsIDQwMCwgMTUw
KTsKICAgICBXZWJSZWN0IHRhbGxEaXYoMjAwLCAzMDAsIDQwMCwgODAwKTsKQEAgLTU1Nyw3ICs1
NzEsNyBAQCBURVNUX0YoV2ViRnJhbWVUZXN0LCBEaXZBdXRvWm9vbVBhcmFtc1Rlc3RDb21wb3Np
dG9yU2NhbGluZykKICAgICBXZWJQb2ludCBzY3JvbGw7CiAgICAgYm9vbCBpc0FuY2hvcjsKIAot
ICAgIFdlYlZpZXdJbXBsKiB3ZWJWaWV3SW1wbCA9IHN0YXRpY19jYXN0PFdlYlZpZXdJbXBsKj4o
d2ViVmlldyk7CisgICAgV2ViVmlld0ltcGwqIHdlYlZpZXdJbXBsID0gc3RhdGljX2Nhc3Q8V2Vi
Vmlld0ltcGwqPihtX3dlYlZpZXcpOwogICAgIC8vIFRlc3QgZG91YmxlLXRhcCB6b29taW5nIGlu
dG8gd2lkZSBkaXYuCiAgICAgd2ViVmlld0ltcGwtPmNvbXB1dGVTY2FsZUFuZFNjcm9sbEZvckhp
dFJlY3QoZG91YmxlVGFwUG9pbnRXaWRlLCBXZWJWaWV3SW1wbDo6RG91YmxlVGFwLCBzY2FsZSwg
c2Nyb2xsLCBpc0FuY2hvcik7CiAgICAgLy8gVGhlIGRpdiBzaG91bGQgaG9yaXpvbnRhbGx5IGZp
bGwgdGhlIHNjcmVlbiAobW9kdWxvIG1hcmdpbnMpLCBhbmQKQEAgLTYwNSwxNyArNjE5LDE3IEBA
IFRFU1RfRihXZWJGcmFtZVRlc3QsIERpdkF1dG9ab29tTXVsdGlwbGVEaXZzVGVzdENvbXBvc2l0
b3JTY2FsaW5nKQogICAgIGludCB2aWV3cG9ydFdpZHRoID0gNjQwIC8gZGV2aWNlU2NhbGVGYWN0
b3I7CiAgICAgaW50IHZpZXdwb3J0SGVpZ2h0ID0gMTI4MCAvIGRldmljZVNjYWxlRmFjdG9yOwog
ICAgIGZsb2F0IGRvdWJsZVRhcFpvb21BbHJlYWR5TGVnaWJsZVJhdGlvID0gMS4yZjsKLSAgICBX
ZWJLaXQ6OldlYlZpZXcqIHdlYlZpZXcgPSBGcmFtZVRlc3RIZWxwZXJzOjpjcmVhdGVXZWJWaWV3
QW5kTG9hZChtX2Jhc2VVUkwgKyAiZ2V0X211bHRpcGxlX2RpdnNfZm9yX2F1dG9fem9vbV90ZXN0
Lmh0bWwiKTsKLSAgICB3ZWJWaWV3LT5zZXR0aW5ncygpLT5zZXRBcHBseURldmljZVNjYWxlRmFj
dG9ySW5Db21wb3NpdG9yKHRydWUpOwotICAgIHdlYlZpZXctPnNldHRpbmdzKCktPnNldEFwcGx5
UGFnZVNjYWxlRmFjdG9ySW5Db21wb3NpdG9yKHRydWUpOwotICAgIHdlYlZpZXctPmVuYWJsZUZp
eGVkTGF5b3V0TW9kZSh0cnVlKTsKLSAgICB3ZWJWaWV3LT5yZXNpemUoV2ViU2l6ZSh2aWV3cG9y
dFdpZHRoLCB2aWV3cG9ydEhlaWdodCkpOwotICAgIHdlYlZpZXctPnNldFBhZ2VTY2FsZUZhY3Rv
ckxpbWl0cygwLjVmLCA0KTsKLSAgICB3ZWJWaWV3LT5zZXREZXZpY2VTY2FsZUZhY3RvcihkZXZp
Y2VTY2FsZUZhY3Rvcik7Ci0gICAgd2ViVmlldy0+c2V0UGFnZVNjYWxlRmFjdG9yKDAuNWYsIFdl
YlBvaW50KDAsIDApKTsKLSAgICB3ZWJWaWV3LT5sYXlvdXQoKTsKLQotICAgIFdlYlZpZXdJbXBs
KiB3ZWJWaWV3SW1wbCA9IHN0YXRpY19jYXN0PFdlYlZpZXdJbXBsKj4od2ViVmlldyk7CisgICAg
bV93ZWJWaWV3ID0gRnJhbWVUZXN0SGVscGVyczo6Y3JlYXRlV2ViVmlld0FuZExvYWQobV9iYXNl
VVJMICsgImdldF9tdWx0aXBsZV9kaXZzX2Zvcl9hdXRvX3pvb21fdGVzdC5odG1sIik7CisgICAg
bV93ZWJWaWV3LT5zZXR0aW5ncygpLT5zZXRBcHBseURldmljZVNjYWxlRmFjdG9ySW5Db21wb3Np
dG9yKHRydWUpOworICAgIG1fd2ViVmlldy0+c2V0dGluZ3MoKS0+c2V0QXBwbHlQYWdlU2NhbGVG
YWN0b3JJbkNvbXBvc2l0b3IodHJ1ZSk7CisgICAgbV93ZWJWaWV3LT5lbmFibGVGaXhlZExheW91
dE1vZGUodHJ1ZSk7CisgICAgbV93ZWJWaWV3LT5yZXNpemUoV2ViU2l6ZSh2aWV3cG9ydFdpZHRo
LCB2aWV3cG9ydEhlaWdodCkpOworICAgIG1fd2ViVmlldy0+c2V0UGFnZVNjYWxlRmFjdG9yTGlt
aXRzKDAuNWYsIDQpOworICAgIG1fd2ViVmlldy0+c2V0RGV2aWNlU2NhbGVGYWN0b3IoZGV2aWNl
U2NhbGVGYWN0b3IpOworICAgIG1fd2ViVmlldy0+c2V0UGFnZVNjYWxlRmFjdG9yKDAuNWYsIFdl
YlBvaW50KDAsIDApKTsKKyAgICBtX3dlYlZpZXctPmxheW91dCgpOworCisgICAgV2ViVmlld0lt
cGwqIHdlYlZpZXdJbXBsID0gc3RhdGljX2Nhc3Q8V2ViVmlld0ltcGwqPihtX3dlYlZpZXcpOwog
ICAgIHdlYlZpZXdJbXBsLT5zaG91bGRVc2VBbmltYXRlRG91YmxlVGFwVGltZVplcm9Gb3JUZXN0
aW5nKHRydWUpOwogCiAgICAgV2ViUmVjdCB0b3BEaXYoMjAwLCAxMDAsIDIwMCwgMTUwKTsKQEAg
LTY0NywxNSArNjYxLDE1IEBAIFRFU1RfRihXZWJGcmFtZVRlc3QsIERpdkF1dG9ab29tU2NhbGVC
b3VuZHNUZXN0Q29tcG9zaXRvclNjYWxpbmcpCiAgICAgaW50IHZpZXdwb3J0V2lkdGggPSAzMjA7
CiAgICAgaW50IHZpZXdwb3J0SGVpZ2h0ID0gNDgwOwogICAgIGZsb2F0IGRvdWJsZVRhcFpvb21B
bHJlYWR5TGVnaWJsZVJhdGlvID0gMS4yZjsKLSAgICBXZWJLaXQ6OldlYlZpZXcqIHdlYlZpZXcg
PSBGcmFtZVRlc3RIZWxwZXJzOjpjcmVhdGVXZWJWaWV3QW5kTG9hZChtX2Jhc2VVUkwgKyAiZ2V0
X3NjYWxlX2JvdW5kc19jaGVja19mb3JfYXV0b196b29tX3Rlc3QuaHRtbCIpOwotICAgIHdlYlZp
ZXctPnNldHRpbmdzKCktPnNldEFwcGx5RGV2aWNlU2NhbGVGYWN0b3JJbkNvbXBvc2l0b3IodHJ1
ZSk7Ci0gICAgd2ViVmlldy0+c2V0dGluZ3MoKS0+c2V0QXBwbHlQYWdlU2NhbGVGYWN0b3JJbkNv
bXBvc2l0b3IodHJ1ZSk7Ci0gICAgd2ViVmlldy0+ZW5hYmxlRml4ZWRMYXlvdXRNb2RlKHRydWUp
OwotICAgIHdlYlZpZXctPnJlc2l6ZShXZWJTaXplKHZpZXdwb3J0V2lkdGgsIHZpZXdwb3J0SGVp
Z2h0KSk7Ci0gICAgd2ViVmlldy0+c2V0RGV2aWNlU2NhbGVGYWN0b3IoMS41Zik7Ci0gICAgd2Vi
Vmlldy0+bGF5b3V0KCk7Ci0KLSAgICBXZWJWaWV3SW1wbCogd2ViVmlld0ltcGwgPSBzdGF0aWNf
Y2FzdDxXZWJWaWV3SW1wbCo+KHdlYlZpZXcpOworICAgIG1fd2ViVmlldyA9IEZyYW1lVGVzdEhl
bHBlcnM6OmNyZWF0ZVdlYlZpZXdBbmRMb2FkKG1fYmFzZVVSTCArICJnZXRfc2NhbGVfYm91bmRz
X2NoZWNrX2Zvcl9hdXRvX3pvb21fdGVzdC5odG1sIik7CisgICAgbV93ZWJWaWV3LT5zZXR0aW5n
cygpLT5zZXRBcHBseURldmljZVNjYWxlRmFjdG9ySW5Db21wb3NpdG9yKHRydWUpOworICAgIG1f
d2ViVmlldy0+c2V0dGluZ3MoKS0+c2V0QXBwbHlQYWdlU2NhbGVGYWN0b3JJbkNvbXBvc2l0b3Io
dHJ1ZSk7CisgICAgbV93ZWJWaWV3LT5lbmFibGVGaXhlZExheW91dE1vZGUodHJ1ZSk7CisgICAg
bV93ZWJWaWV3LT5yZXNpemUoV2ViU2l6ZSh2aWV3cG9ydFdpZHRoLCB2aWV3cG9ydEhlaWdodCkp
OworICAgIG1fd2ViVmlldy0+c2V0RGV2aWNlU2NhbGVGYWN0b3IoMS41Zik7CisgICAgbV93ZWJW
aWV3LT5sYXlvdXQoKTsKKworICAgIFdlYlZpZXdJbXBsKiB3ZWJWaWV3SW1wbCA9IHN0YXRpY19j
YXN0PFdlYlZpZXdJbXBsKj4obV93ZWJWaWV3KTsKICAgICB3ZWJWaWV3SW1wbC0+c2hvdWxkVXNl
QW5pbWF0ZURvdWJsZVRhcFRpbWVaZXJvRm9yVGVzdGluZyh0cnVlKTsKIAogICAgIFdlYlJlY3Qg
ZGl2KDIwMCwgMTAwLCAyMDAsIDE1MCk7CkBAIC02NjQsOCArNjc4LDggQEAgVEVTVF9GKFdlYkZy
YW1lVGVzdCwgRGl2QXV0b1pvb21TY2FsZUJvdW5kc1Rlc3RDb21wb3NpdG9yU2NhbGluZykKIAog
ICAgIC8vIFRlc3QgZG91YmxlIHRhcCBzY2FsZSBib3VuZHMuCiAgICAgLy8gbWluaW11bVBhZ2VT
Y2FsZSA8IGRvdWJsZVRhcFpvb21BbHJlYWR5TGVnaWJsZVNjYWxlIDwgMQotICAgIHdlYlZpZXct
PnNldFBhZ2VTY2FsZUZhY3RvckxpbWl0cygwLjVmLCA0KTsKLSAgICB3ZWJWaWV3LT5sYXlvdXQo
KTsKKyAgICBtX3dlYlZpZXctPnNldFBhZ2VTY2FsZUZhY3RvckxpbWl0cygwLjVmLCA0KTsKKyAg
ICBtX3dlYlZpZXctPmxheW91dCgpOwogICAgIGZsb2F0IGRvdWJsZVRhcFpvb21BbHJlYWR5TGVn
aWJsZVNjYWxlID0gd2ViVmlld0ltcGwtPm1pbmltdW1QYWdlU2NhbGVGYWN0b3IoKSAqIGRvdWJs
ZVRhcFpvb21BbHJlYWR5TGVnaWJsZVJhdGlvOwogICAgIHNldFNjYWxlQW5kU2Nyb2xsQW5kTGF5
b3V0KHdlYlZpZXdJbXBsLCBXZWJQb2ludCgwLCAwKSwgKHdlYlZpZXdJbXBsLT5taW5pbXVtUGFn
ZVNjYWxlRmFjdG9yKCkpICogKDEgKyBkb3VibGVUYXBab29tQWxyZWFkeUxlZ2libGVSYXRpbykg
LyAyKTsKICAgICBzaW11bGF0ZURvdWJsZVRhcCh3ZWJWaWV3SW1wbCwgZG91YmxlVGFwUG9pbnQs
IHNjYWxlKTsKQEAgLTY3OCw4ICs2OTIsOCBAQCBURVNUX0YoV2ViRnJhbWVUZXN0LCBEaXZBdXRv
Wm9vbVNjYWxlQm91bmRzVGVzdENvbXBvc2l0b3JTY2FsaW5nKQogICAgIC8vIFpvb20gaW4gdG8g
cmVzZXQgZG91YmxlX3RhcF96b29tX2luX2VmZmVjdCBmbGFnLgogICAgIHdlYlZpZXdJbXBsLT5h
cHBseVNjcm9sbEFuZFNjYWxlKFdlYlNpemUoKSwgMS4xZik7CiAgICAgLy8gMSA8IG1pbmltdW1Q
YWdlU2NhbGUgPCBkb3VibGVUYXBab29tQWxyZWFkeUxlZ2libGVTY2FsZQotICAgIHdlYlZpZXct
PnNldFBhZ2VTY2FsZUZhY3RvckxpbWl0cygxLjFmLCA0KTsKLSAgICB3ZWJWaWV3LT5sYXlvdXQo
KTsKKyAgICBtX3dlYlZpZXctPnNldFBhZ2VTY2FsZUZhY3RvckxpbWl0cygxLjFmLCA0KTsKKyAg
ICBtX3dlYlZpZXctPmxheW91dCgpOwogICAgIGRvdWJsZVRhcFpvb21BbHJlYWR5TGVnaWJsZVNj
YWxlID0gd2ViVmlld0ltcGwtPm1pbmltdW1QYWdlU2NhbGVGYWN0b3IoKSAqIGRvdWJsZVRhcFpv
b21BbHJlYWR5TGVnaWJsZVJhdGlvOwogICAgIHNldFNjYWxlQW5kU2Nyb2xsQW5kTGF5b3V0KHdl
YlZpZXdJbXBsLCBXZWJQb2ludCgwLCAwKSwgKHdlYlZpZXdJbXBsLT5taW5pbXVtUGFnZVNjYWxl
RmFjdG9yKCkpICogKDEgKyBkb3VibGVUYXBab29tQWxyZWFkeUxlZ2libGVSYXRpbykgLyAyKTsK
ICAgICBzaW11bGF0ZURvdWJsZVRhcCh3ZWJWaWV3SW1wbCwgZG91YmxlVGFwUG9pbnQsIHNjYWxl
KTsKQEAgLTY5Miw4ICs3MDYsOCBAQCBURVNUX0YoV2ViRnJhbWVUZXN0LCBEaXZBdXRvWm9vbVNj
YWxlQm91bmRzVGVzdENvbXBvc2l0b3JTY2FsaW5nKQogICAgIC8vIFpvb20gaW4gdG8gcmVzZXQg
ZG91YmxlX3RhcF96b29tX2luX2VmZmVjdCBmbGFnLgogICAgIHdlYlZpZXdJbXBsLT5hcHBseVNj
cm9sbEFuZFNjYWxlKFdlYlNpemUoKSwgMS4xZik7CiAgICAgLy8gbWluaW11bVBhZ2VTY2FsZSA8
IDEgPCBkb3VibGVUYXBab29tQWxyZWFkeUxlZ2libGVTY2FsZQotICAgIHdlYlZpZXctPnNldFBh
Z2VTY2FsZUZhY3RvckxpbWl0cygwLjk1ZiwgNCk7Ci0gICAgd2ViVmlldy0+bGF5b3V0KCk7Cisg
ICAgbV93ZWJWaWV3LT5zZXRQYWdlU2NhbGVGYWN0b3JMaW1pdHMoMC45NWYsIDQpOworICAgIG1f
d2ViVmlldy0+bGF5b3V0KCk7CiAgICAgZG91YmxlVGFwWm9vbUFscmVhZHlMZWdpYmxlU2NhbGUg
PSB3ZWJWaWV3SW1wbC0+bWluaW11bVBhZ2VTY2FsZUZhY3RvcigpICogZG91YmxlVGFwWm9vbUFs
cmVhZHlMZWdpYmxlUmF0aW87CiAgICAgc2V0U2NhbGVBbmRTY3JvbGxBbmRMYXlvdXQod2ViVmll
d0ltcGwsIFdlYlBvaW50KDAsIDApLCAod2ViVmlld0ltcGwtPm1pbmltdW1QYWdlU2NhbGVGYWN0
b3IoKSkgKiAoMSArIGRvdWJsZVRhcFpvb21BbHJlYWR5TGVnaWJsZVJhdGlvKSAvIDIpOwogICAg
IHNpbXVsYXRlRG91YmxlVGFwKHdlYlZpZXdJbXBsLCBkb3VibGVUYXBQb2ludCwgc2NhbGUpOwpA
QCAtNzEzLDE0ICs3MjcsMTQgQEAgVEVTVF9GKFdlYkZyYW1lVGVzdCwgRGl2QXV0b1pvb21TY2Fs
ZUZvbnRTY2FsZUZhY3RvclRlc3RDb21wb3NpdG9yU2NhbGluZykKICAgICBpbnQgdmlld3BvcnRI
ZWlnaHQgPSA0ODA7CiAgICAgZmxvYXQgZG91YmxlVGFwWm9vbUFscmVhZHlMZWdpYmxlUmF0aW8g
PSAxLjJmOwogICAgIGZsb2F0IHRleHRBdXRvc2l6aW5nRm9udFNjYWxlRmFjdG9yID0gMS4xM2Y7
Ci0gICAgV2ViS2l0OjpXZWJWaWV3KiB3ZWJWaWV3ID0gRnJhbWVUZXN0SGVscGVyczo6Y3JlYXRl
V2ViVmlld0FuZExvYWQobV9iYXNlVVJMICsgImdldF9zY2FsZV9ib3VuZHNfY2hlY2tfZm9yX2F1
dG9fem9vbV90ZXN0Lmh0bWwiKTsKLSAgICB3ZWJWaWV3LT5zZXR0aW5ncygpLT5zZXRBcHBseURl
dmljZVNjYWxlRmFjdG9ySW5Db21wb3NpdG9yKHRydWUpOwotICAgIHdlYlZpZXctPnNldHRpbmdz
KCktPnNldEFwcGx5UGFnZVNjYWxlRmFjdG9ySW5Db21wb3NpdG9yKHRydWUpOwotICAgIHdlYlZp
ZXctPmVuYWJsZUZpeGVkTGF5b3V0TW9kZSh0cnVlKTsKLSAgICB3ZWJWaWV3LT5yZXNpemUoV2Vi
U2l6ZSh2aWV3cG9ydFdpZHRoLCB2aWV3cG9ydEhlaWdodCkpOwotICAgIHdlYlZpZXctPmxheW91
dCgpOwotCi0gICAgV2ViVmlld0ltcGwqIHdlYlZpZXdJbXBsID0gc3RhdGljX2Nhc3Q8V2ViVmll
d0ltcGwqPih3ZWJWaWV3KTsKKyAgICBtX3dlYlZpZXcgPSBGcmFtZVRlc3RIZWxwZXJzOjpjcmVh
dGVXZWJWaWV3QW5kTG9hZChtX2Jhc2VVUkwgKyAiZ2V0X3NjYWxlX2JvdW5kc19jaGVja19mb3Jf
YXV0b196b29tX3Rlc3QuaHRtbCIpOworICAgIG1fd2ViVmlldy0+c2V0dGluZ3MoKS0+c2V0QXBw
bHlEZXZpY2VTY2FsZUZhY3RvckluQ29tcG9zaXRvcih0cnVlKTsKKyAgICBtX3dlYlZpZXctPnNl
dHRpbmdzKCktPnNldEFwcGx5UGFnZVNjYWxlRmFjdG9ySW5Db21wb3NpdG9yKHRydWUpOworICAg
IG1fd2ViVmlldy0+ZW5hYmxlRml4ZWRMYXlvdXRNb2RlKHRydWUpOworICAgIG1fd2ViVmlldy0+
cmVzaXplKFdlYlNpemUodmlld3BvcnRXaWR0aCwgdmlld3BvcnRIZWlnaHQpKTsKKyAgICBtX3dl
YlZpZXctPmxheW91dCgpOworCisgICAgV2ViVmlld0ltcGwqIHdlYlZpZXdJbXBsID0gc3RhdGlj
X2Nhc3Q8V2ViVmlld0ltcGwqPihtX3dlYlZpZXcpOwogICAgIHdlYlZpZXdJbXBsLT5zaG91bGRV
c2VBbmltYXRlRG91YmxlVGFwVGltZVplcm9Gb3JUZXN0aW5nKHRydWUpOwogICAgIHdlYlZpZXdJ
bXBsLT5wYWdlKCktPnNldHRpbmdzKCktPnNldFRleHRBdXRvc2l6aW5nRm9udFNjYWxlRmFjdG9y
KHRleHRBdXRvc2l6aW5nRm9udFNjYWxlRmFjdG9yKTsKIApAQCAtNzMzLDggKzc0Nyw4IEBAIFRF
U1RfRihXZWJGcmFtZVRlc3QsIERpdkF1dG9ab29tU2NhbGVGb250U2NhbGVGYWN0b3JUZXN0Q29t
cG9zaXRvclNjYWxpbmcpCiAgICAgZmxvYXQgbGVnaWJsZVNjYWxlID0gdGV4dEF1dG9zaXppbmdG
b250U2NhbGVGYWN0b3I7CiAgICAgc2V0U2NhbGVBbmRTY3JvbGxBbmRMYXlvdXQod2ViVmlld0lt
cGwsIFdlYlBvaW50KDAsIDApLCAod2ViVmlld0ltcGwtPm1pbmltdW1QYWdlU2NhbGVGYWN0b3Io
KSkgKiAoMSArIGRvdWJsZVRhcFpvb21BbHJlYWR5TGVnaWJsZVJhdGlvKSAvIDIpOwogICAgIGZs
b2F0IGRvdWJsZVRhcFpvb21BbHJlYWR5TGVnaWJsZVNjYWxlID0gd2ViVmlld0ltcGwtPm1pbmlt
dW1QYWdlU2NhbGVGYWN0b3IoKSAqIGRvdWJsZVRhcFpvb21BbHJlYWR5TGVnaWJsZVJhdGlvOwot
ICAgIHdlYlZpZXctPnNldFBhZ2VTY2FsZUZhY3RvckxpbWl0cygwLjVmLCA0KTsKLSAgICB3ZWJW
aWV3LT5sYXlvdXQoKTsKKyAgICBtX3dlYlZpZXctPnNldFBhZ2VTY2FsZUZhY3RvckxpbWl0cygw
LjVmLCA0KTsKKyAgICBtX3dlYlZpZXctPmxheW91dCgpOwogICAgIHNpbXVsYXRlRG91YmxlVGFw
KHdlYlZpZXdJbXBsLCBkb3VibGVUYXBQb2ludCwgc2NhbGUpOwogICAgIEVYUEVDVF9GTE9BVF9F
UShsZWdpYmxlU2NhbGUsIHNjYWxlKTsKICAgICBzaW11bGF0ZURvdWJsZVRhcCh3ZWJWaWV3SW1w
bCwgZG91YmxlVGFwUG9pbnQsIHNjYWxlKTsKQEAgLTc0NSw4ICs3NTksOCBAQCBURVNUX0YoV2Vi
RnJhbWVUZXN0LCBEaXZBdXRvWm9vbVNjYWxlRm9udFNjYWxlRmFjdG9yVGVzdENvbXBvc2l0b3JT
Y2FsaW5nKQogICAgIC8vIFpvb20gaW4gdG8gcmVzZXQgZG91YmxlX3RhcF96b29tX2luX2VmZmVj
dCBmbGFnLgogICAgIHdlYlZpZXdJbXBsLT5hcHBseVNjcm9sbEFuZFNjYWxlKFdlYlNpemUoKSwg
MS4xZik7CiAgICAgLy8gMSA8IHRleHRBdXRvc2l6aW5nRm9udFNjYWxlRmFjdG9yIDwgbWluaW11
bVBhZ2VTY2FsZSA8IGRvdWJsZVRhcFpvb21BbHJlYWR5TGVnaWJsZVNjYWxlCi0gICAgd2ViVmll
dy0+c2V0UGFnZVNjYWxlRmFjdG9yTGltaXRzKDEuMGYsIDQpOwotICAgIHdlYlZpZXctPmxheW91
dCgpOworICAgIG1fd2ViVmlldy0+c2V0UGFnZVNjYWxlRmFjdG9yTGltaXRzKDEuMGYsIDQpOwor
ICAgIG1fd2ViVmlldy0+bGF5b3V0KCk7CiAgICAgZG91YmxlVGFwWm9vbUFscmVhZHlMZWdpYmxl
U2NhbGUgPSB3ZWJWaWV3SW1wbC0+bWluaW11bVBhZ2VTY2FsZUZhY3RvcigpICogZG91YmxlVGFw
Wm9vbUFscmVhZHlMZWdpYmxlUmF0aW87CiAgICAgc2V0U2NhbGVBbmRTY3JvbGxBbmRMYXlvdXQo
d2ViVmlld0ltcGwsIFdlYlBvaW50KDAsIDApLCAod2ViVmlld0ltcGwtPm1pbmltdW1QYWdlU2Nh
bGVGYWN0b3IoKSkgKiAoMSArIGRvdWJsZVRhcFpvb21BbHJlYWR5TGVnaWJsZVJhdGlvKSAvIDIp
OwogICAgIHNpbXVsYXRlRG91YmxlVGFwKHdlYlZpZXdJbXBsLCBkb3VibGVUYXBQb2ludCwgc2Nh
bGUpOwpAQCAtNzU5LDggKzc3Myw4IEBAIFRFU1RfRihXZWJGcmFtZVRlc3QsIERpdkF1dG9ab29t
U2NhbGVGb250U2NhbGVGYWN0b3JUZXN0Q29tcG9zaXRvclNjYWxpbmcpCiAgICAgLy8gWm9vbSBp
biB0byByZXNldCBkb3VibGVfdGFwX3pvb21faW5fZWZmZWN0IGZsYWcuCiAgICAgd2ViVmlld0lt
cGwtPmFwcGx5U2Nyb2xsQW5kU2NhbGUoV2ViU2l6ZSgpLCAxLjFmKTsKICAgICAvLyBtaW5pbXVt
UGFnZVNjYWxlIDwgMSA8IHRleHRBdXRvc2l6aW5nRm9udFNjYWxlRmFjdG9yIDwgZG91YmxlVGFw
Wm9vbUFscmVhZHlMZWdpYmxlU2NhbGUKLSAgICB3ZWJWaWV3LT5zZXRQYWdlU2NhbGVGYWN0b3JM
aW1pdHMoMC45NWYsIDQpOwotICAgIHdlYlZpZXctPmxheW91dCgpOworICAgIG1fd2ViVmlldy0+
c2V0UGFnZVNjYWxlRmFjdG9yTGltaXRzKDAuOTVmLCA0KTsKKyAgICBtX3dlYlZpZXctPmxheW91
dCgpOwogICAgIGRvdWJsZVRhcFpvb21BbHJlYWR5TGVnaWJsZVNjYWxlID0gd2ViVmlld0ltcGwt
Pm1pbmltdW1QYWdlU2NhbGVGYWN0b3IoKSAqIGRvdWJsZVRhcFpvb21BbHJlYWR5TGVnaWJsZVJh
dGlvOwogICAgIHNldFNjYWxlQW5kU2Nyb2xsQW5kTGF5b3V0KHdlYlZpZXdJbXBsLCBXZWJQb2lu
dCgwLCAwKSwgKHdlYlZpZXdJbXBsLT5taW5pbXVtUGFnZVNjYWxlRmFjdG9yKCkpICogKDEgKyBk
b3VibGVUYXBab29tQWxyZWFkeUxlZ2libGVSYXRpbykgLyAyKTsKICAgICBzaW11bGF0ZURvdWJs
ZVRhcCh3ZWJWaWV3SW1wbCwgZG91YmxlVGFwUG9pbnQsIHNjYWxlKTsKQEAgLTc3Myw4ICs3ODcs
OCBAQCBURVNUX0YoV2ViRnJhbWVUZXN0LCBEaXZBdXRvWm9vbVNjYWxlRm9udFNjYWxlRmFjdG9y
VGVzdENvbXBvc2l0b3JTY2FsaW5nKQogICAgIC8vIFpvb20gaW4gdG8gcmVzZXQgZG91YmxlX3Rh
cF96b29tX2luX2VmZmVjdCBmbGFnLgogICAgIHdlYlZpZXdJbXBsLT5hcHBseVNjcm9sbEFuZFNj
YWxlKFdlYlNpemUoKSwgMS4xZik7CiAgICAgLy8gbWluaW11bVBhZ2VTY2FsZSA8IDEgPCBkb3Vi
bGVUYXBab29tQWxyZWFkeUxlZ2libGVTY2FsZSA8IHRleHRBdXRvc2l6aW5nRm9udFNjYWxlRmFj
dG9yCi0gICAgd2ViVmlldy0+c2V0UGFnZVNjYWxlRmFjdG9yTGltaXRzKDAuOWYsIDQpOwotICAg
IHdlYlZpZXctPmxheW91dCgpOworICAgIG1fd2ViVmlldy0+c2V0UGFnZVNjYWxlRmFjdG9yTGlt
aXRzKDAuOWYsIDQpOworICAgIG1fd2ViVmlldy0+bGF5b3V0KCk7CiAgICAgZG91YmxlVGFwWm9v
bUFscmVhZHlMZWdpYmxlU2NhbGUgPSB3ZWJWaWV3SW1wbC0+bWluaW11bVBhZ2VTY2FsZUZhY3Rv
cigpICogZG91YmxlVGFwWm9vbUFscmVhZHlMZWdpYmxlUmF0aW87CiAgICAgc2V0U2NhbGVBbmRT
Y3JvbGxBbmRMYXlvdXQod2ViVmlld0ltcGwsIFdlYlBvaW50KDAsIDApLCAod2ViVmlld0ltcGwt
Pm1pbmltdW1QYWdlU2NhbGVGYWN0b3IoKSkgKiAoMSArIGRvdWJsZVRhcFpvb21BbHJlYWR5TGVn
aWJsZVJhdGlvKSAvIDIpOwogICAgIHNpbXVsYXRlRG91YmxlVGFwKHdlYlZpZXdJbXBsLCBkb3Vi
bGVUYXBQb2ludCwgc2NhbGUpOwpAQCAtNzk1LDE3ICs4MDksMTcgQEAgVEVTVF9GKFdlYkZyYW1l
VGVzdCwgRGl2U2Nyb2xsSW50b0VkaXRhYmxlVGVzdCkKICAgICBmbG9hdCBsZWZ0Qm94UmF0aW8g
PSAwLjNmOwogICAgIGludCBjYXJldFBhZGRpbmcgPSAxMDsKICAgICBmbG9hdCBtaW5SZWFkYWJs
ZUNhcmV0SGVpZ2h0ID0gMTguMGY7Ci0gICAgV2ViS2l0OjpXZWJWaWV3KiB3ZWJWaWV3ID0gRnJh
bWVUZXN0SGVscGVyczo6Y3JlYXRlV2ViVmlld0FuZExvYWQobV9iYXNlVVJMICsgImdldF9zY2Fs
ZV9mb3Jfem9vbV9pbnRvX2VkaXRhYmxlX3Rlc3QuaHRtbCIpOwotICAgIHdlYlZpZXctPnNldHRp
bmdzKCktPnNldEFwcGx5RGV2aWNlU2NhbGVGYWN0b3JJbkNvbXBvc2l0b3IodHJ1ZSk7Ci0gICAg
d2ViVmlldy0+c2V0dGluZ3MoKS0+c2V0QXBwbHlQYWdlU2NhbGVGYWN0b3JJbkNvbXBvc2l0b3Io
dHJ1ZSk7Ci0gICAgd2ViVmlldy0+ZW5hYmxlRml4ZWRMYXlvdXRNb2RlKHRydWUpOwotICAgIHdl
YlZpZXctPnJlc2l6ZShXZWJTaXplKHZpZXdwb3J0V2lkdGgsIHZpZXdwb3J0SGVpZ2h0KSk7Ci0g
ICAgd2ViVmlldy0+c2V0UGFnZVNjYWxlRmFjdG9yTGltaXRzKDEsIDQpOwotICAgIHdlYlZpZXct
PmxheW91dCgpOwotICAgIHdlYlZpZXctPnNldERldmljZVNjYWxlRmFjdG9yKDEuNWYpOwotICAg
IHdlYlZpZXctPnNldHRpbmdzKCktPnNldEF1dG9ab29tRm9jdXNlZE5vZGVUb0xlZ2libGVTY2Fs
ZSh0cnVlKTsKLQotICAgIFdlYlZpZXdJbXBsKiB3ZWJWaWV3SW1wbCA9IHN0YXRpY19jYXN0PFdl
YlZpZXdJbXBsKj4od2ViVmlldyk7CisgICAgbV93ZWJWaWV3ID0gRnJhbWVUZXN0SGVscGVyczo6
Y3JlYXRlV2ViVmlld0FuZExvYWQobV9iYXNlVVJMICsgImdldF9zY2FsZV9mb3Jfem9vbV9pbnRv
X2VkaXRhYmxlX3Rlc3QuaHRtbCIpOworICAgIG1fd2ViVmlldy0+c2V0dGluZ3MoKS0+c2V0QXBw
bHlEZXZpY2VTY2FsZUZhY3RvckluQ29tcG9zaXRvcih0cnVlKTsKKyAgICBtX3dlYlZpZXctPnNl
dHRpbmdzKCktPnNldEFwcGx5UGFnZVNjYWxlRmFjdG9ySW5Db21wb3NpdG9yKHRydWUpOworICAg
IG1fd2ViVmlldy0+ZW5hYmxlRml4ZWRMYXlvdXRNb2RlKHRydWUpOworICAgIG1fd2ViVmlldy0+
cmVzaXplKFdlYlNpemUodmlld3BvcnRXaWR0aCwgdmlld3BvcnRIZWlnaHQpKTsKKyAgICBtX3dl
YlZpZXctPnNldFBhZ2VTY2FsZUZhY3RvckxpbWl0cygxLCA0KTsKKyAgICBtX3dlYlZpZXctPmxh
eW91dCgpOworICAgIG1fd2ViVmlldy0+c2V0RGV2aWNlU2NhbGVGYWN0b3IoMS41Zik7CisgICAg
bV93ZWJWaWV3LT5zZXR0aW5ncygpLT5zZXRBdXRvWm9vbUZvY3VzZWROb2RlVG9MZWdpYmxlU2Nh
bGUodHJ1ZSk7CisKKyAgICBXZWJWaWV3SW1wbCogd2ViVmlld0ltcGwgPSBzdGF0aWNfY2FzdDxX
ZWJWaWV3SW1wbCo+KG1fd2ViVmlldyk7CiAgICAgd2ViVmlld0ltcGwtPnNob3VsZFVzZUFuaW1h
dGVEb3VibGVUYXBUaW1lWmVyb0ZvclRlc3RpbmcodHJ1ZSk7CiAKICAgICBXZWJSZWN0IGVkaXRC
b3hXaXRoVGV4dCgyMDAsIDIwMCwgMjUwLCAyMCk7CkBAIC04MTMsMTAgKzgyNywxMCBAQCBURVNU
X0YoV2ViRnJhbWVUZXN0LCBEaXZTY3JvbGxJbnRvRWRpdGFibGVUZXN0KQogCiAgICAgLy8gVGVz
dCBzY3JvbGxpbmcgdGhlIGZvY3VzZWQgbm9kZQogICAgIC8vIFRoZSBlZGl0IGJveCBpcyBzaG9y
dGVyIGFuZCBuYXJyb3dlciB0aGFuIHRoZSB2aWV3cG9ydCB3aGVuIGxlZ2libGUuCi0gICAgd2Vi
Vmlldy0+YWR2YW5jZUZvY3VzKGZhbHNlKTsKKyAgICBtX3dlYlZpZXctPmFkdmFuY2VGb2N1cyhm
YWxzZSk7CiAgICAgLy8gU2V0IHRoZSBjYXJldCB0byB0aGUgZW5kIG9mIHRoZSBpbnB1dCBib3gu
Ci0gICAgd2ViVmlldy0+bWFpbkZyYW1lKCktPmRvY3VtZW50KCkuZ2V0RWxlbWVudEJ5SWQoIkVk
aXRCb3hXaXRoVGV4dCIpLnRvPFdlYklucHV0RWxlbWVudD4oKS5zZXRTZWxlY3Rpb25SYW5nZSgx
MDAwLCAxMDAwKTsKLSAgICBzZXRTY2FsZUFuZFNjcm9sbEFuZExheW91dCh3ZWJWaWV3LCBXZWJQ
b2ludCgwLCAwKSwgMSk7CisgICAgbV93ZWJWaWV3LT5tYWluRnJhbWUoKS0+ZG9jdW1lbnQoKS5n
ZXRFbGVtZW50QnlJZCgiRWRpdEJveFdpdGhUZXh0IikudG88V2ViSW5wdXRFbGVtZW50PigpLnNl
dFNlbGVjdGlvblJhbmdlKDEwMDAsIDEwMDApOworICAgIHNldFNjYWxlQW5kU2Nyb2xsQW5kTGF5
b3V0KG1fd2ViVmlldywgV2ViUG9pbnQoMCwgMCksIDEpOwogICAgIFdlYlJlY3QgcmVjdCwgY2Fy
ZXQ7CiAgICAgd2ViVmlld0ltcGwtPnNlbGVjdGlvbkJvdW5kcyhjYXJldCwgcmVjdCk7CiAKQEAg
LTgzNSw4ICs4NDksOCBAQCBURVNUX0YoV2ViRnJhbWVUZXN0LCBEaXZTY3JvbGxJbnRvRWRpdGFi
bGVUZXN0KQogICAgIC8vIFRoZSBlZGl0IGJveCBpcyB3aWRlciB0aGFuIHRoZSB2aWV3cG9ydCB3
aGVuIGxlZ2libGUuCiAgICAgdmlld3BvcnRXaWR0aCA9IDIwMDsKICAgICB2aWV3cG9ydEhlaWdo
dCA9IDE1MDsKLSAgICB3ZWJWaWV3LT5yZXNpemUoV2ViU2l6ZSh2aWV3cG9ydFdpZHRoLCB2aWV3
cG9ydEhlaWdodCkpOwotICAgIHNldFNjYWxlQW5kU2Nyb2xsQW5kTGF5b3V0KHdlYlZpZXcsIFdl
YlBvaW50KDAsIDApLCAxKTsKKyAgICBtX3dlYlZpZXctPnJlc2l6ZShXZWJTaXplKHZpZXdwb3J0
V2lkdGgsIHZpZXdwb3J0SGVpZ2h0KSk7CisgICAgc2V0U2NhbGVBbmRTY3JvbGxBbmRMYXlvdXQo
bV93ZWJWaWV3LCBXZWJQb2ludCgwLCAwKSwgMSk7CiAgICAgd2ViVmlld0ltcGwtPnNlbGVjdGlv
bkJvdW5kcyhjYXJldCwgcmVjdCk7CiAgICAgd2ViVmlld0ltcGwtPmNvbXB1dGVTY2FsZUFuZFNj
cm9sbEZvckZvY3VzZWROb2RlKHdlYlZpZXdJbXBsLT5mb2N1c2VkV2ViQ29yZU5vZGUoKSwgc2Nh
bGUsIHNjcm9sbCwgbmVlZEFuaW1hdGlvbik7CiAgICAgRVhQRUNUX1RSVUUobmVlZEFuaW1hdGlv
bik7CkBAIC04NDUsOSArODU5LDkgQEAgVEVTVF9GKFdlYkZyYW1lVGVzdCwgRGl2U2Nyb2xsSW50
b0VkaXRhYmxlVGVzdCkKICAgICBFWFBFQ1RfTkVBUihoU2Nyb2xsLCBzY3JvbGwueCgpLCAxKTsK
ICAgICBFWFBFQ1RfTkVBUihtaW5SZWFkYWJsZUNhcmV0SGVpZ2h0IC8gY2FyZXQuaGVpZ2h0LCBz
Y2FsZSwgMC4xKTsKIAotICAgIHNldFNjYWxlQW5kU2Nyb2xsQW5kTGF5b3V0KHdlYlZpZXcsIFdl
YlBvaW50KDAsIDApLCAxKTsKKyAgICBzZXRTY2FsZUFuZFNjcm9sbEFuZExheW91dChtX3dlYlZp
ZXcsIFdlYlBvaW50KDAsIDApLCAxKTsKICAgICAvLyBNb3ZlIGZvY3VzIHRvIGVkaXQgYm94IHdp
dGggdGV4dC4KLSAgICB3ZWJWaWV3LT5hZHZhbmNlRm9jdXMoZmFsc2UpOworICAgIG1fd2ViVmll
dy0+YWR2YW5jZUZvY3VzKGZhbHNlKTsKICAgICB3ZWJWaWV3SW1wbC0+c2VsZWN0aW9uQm91bmRz
KGNhcmV0LCByZWN0KTsKICAgICB3ZWJWaWV3SW1wbC0+Y29tcHV0ZVNjYWxlQW5kU2Nyb2xsRm9y
Rm9jdXNlZE5vZGUod2ViVmlld0ltcGwtPmZvY3VzZWRXZWJDb3JlTm9kZSgpLCBzY2FsZSwgc2Ny
b2xsLCBuZWVkQW5pbWF0aW9uKTsKICAgICBFWFBFQ1RfVFJVRShuZWVkQW5pbWF0aW9uKTsKQEAg
LTg2MSw3ICs4NzUsNyBAQCBURVNUX0YoV2ViRnJhbWVUZXN0LCBEaXZTY3JvbGxJbnRvRWRpdGFi
bGVUZXN0KQogICAgIHNldFNjYWxlQW5kU2Nyb2xsQW5kTGF5b3V0KHdlYlZpZXdJbXBsLCBzY3Jv
bGwsIHNjYWxlKTsKIAogICAgIC8vIE1vdmUgZm9jdXMgYmFjayB0byB0aGUgZmlyc3QgZWRpdCBi
b3guCi0gICAgd2ViVmlldy0+YWR2YW5jZUZvY3VzKHRydWUpOworICAgIG1fd2ViVmlldy0+YWR2
YW5jZUZvY3VzKHRydWUpOwogICAgIHdlYlZpZXdJbXBsLT5jb21wdXRlU2NhbGVBbmRTY3JvbGxG
b3JGb2N1c2VkTm9kZSh3ZWJWaWV3SW1wbC0+Zm9jdXNlZFdlYkNvcmVOb2RlKCksIHNjYWxlLCBz
Y3JvbGwsIG5lZWRBbmltYXRpb24pOwogICAgIC8vIFRoZSBwb3NpdGlvbiBzaG91bGQgaGF2ZSBz
dGF5ZWQgdGhlIHNhbWUgc2luY2UgdGhpcyBib3ggd2FzIGFscmVhZHkgb24gc2NyZWVuIHdpdGgg
dGhlIHJpZ2h0IHNjYWxlLgogICAgIEVYUEVDVF9GQUxTRShuZWVkQW5pbWF0aW9uKTsKQEAgLTkw
MCwxMiArOTE0LDE1IEBAIFRFU1RfRihXZWJGcmFtZVRlc3QsIFJlbG9hZERvZXNudFNldFJlZGly
ZWN0KQogICAgIHJlZ2lzdGVyTW9ja2VkSHR0cFVSTExvYWQoImZvcm0uaHRtbCIpOwogCiAgICAg
VGVzdFJlbG9hZERvZXNudFJlZGlyZWN0V2ViRnJhbWVDbGllbnQgd2ViRnJhbWVDbGllbnQ7Ci0g
ICAgV2ViVmlldyogd2ViVmlldyA9IEZyYW1lVGVzdEhlbHBlcnM6OmNyZWF0ZVdlYlZpZXdBbmRM
b2FkKG1fYmFzZVVSTCArICJmb3JtLmh0bWwiLCBmYWxzZSwgJndlYkZyYW1lQ2xpZW50KTsKKyAg
ICBtX3dlYlZpZXcgPSBGcmFtZVRlc3RIZWxwZXJzOjpjcmVhdGVXZWJWaWV3QW5kTG9hZChtX2Jh
c2VVUkwgKyAiZm9ybS5odG1sIiwgZmFsc2UsICZ3ZWJGcmFtZUNsaWVudCk7CiAKLSAgICB3ZWJW
aWV3LT5tYWluRnJhbWUoKS0+cmVsb2FkKHRydWUpOworICAgIG1fd2ViVmlldy0+bWFpbkZyYW1l
KCktPnJlbG9hZCh0cnVlKTsKICAgICAvLyBzdGFydCByZWxvYWQgYmVmb3JlIHJlcXVlc3QgaXMg
ZGVsaXZlcmVkLgotICAgIHdlYlZpZXctPm1haW5GcmFtZSgpLT5yZWxvYWQodHJ1ZSk7Ci0gICAg
d2Via2l0X3N1cHBvcnQ6OlNlcnZlQXN5bmNocm9ub3VzTW9ja2VkUmVxdWVzdHMoKTsKKyAgICBt
X3dlYlZpZXctPm1haW5GcmFtZSgpLT5yZWxvYWQodHJ1ZSk7CisgICAgUGxhdGZvcm06OmN1cnJl
bnQoKS0+dW5pdFRlc3RTdXBwb3J0KCktPnNlcnZlQXN5bmNocm9ub3VzTW9ja2VkUmVxdWVzdHMo
KTsKKworICAgIG1fd2ViVmlldy0+Y2xvc2UoKTsKKyAgICBtX3dlYlZpZXcgPSAwOwogfQogCiBU
RVNUX0YoV2ViRnJhbWVUZXN0LCBSZWxvYWRXaXRoT3ZlcnJpZGVVUkxQcmVzZXJ2ZXNTdGF0ZSkK
QEAgLTkyMSw3ICs5MzgsOCBAQCBURVNUX0YoV2ViRnJhbWVUZXN0LCBSZWxvYWRXaXRoT3ZlcnJp
ZGVVUkxQcmVzZXJ2ZXNTdGF0ZSkKICAgICByZWdpc3Rlck1vY2tlZEh0dHBVUkxMb2FkKHNlY29u
ZFVSTCk7CiAgICAgcmVnaXN0ZXJNb2NrZWRIdHRwVVJMTG9hZCh0aGlyZFVSTCk7CiAKLSAgICBX
ZWJWaWV3SW1wbCogd2ViVmlld0ltcGwgPSBzdGF0aWNfY2FzdDxXZWJWaWV3SW1wbCo+KEZyYW1l
VGVzdEhlbHBlcnM6OmNyZWF0ZVdlYlZpZXdBbmRMb2FkKG1fYmFzZVVSTCArIGZpcnN0VVJMLCB0
cnVlKSk7CisgICAgbV93ZWJWaWV3ID0gRnJhbWVUZXN0SGVscGVyczo6Y3JlYXRlV2ViVmlld0Fu
ZExvYWQobV9iYXNlVVJMICsgZmlyc3RVUkwsIHRydWUpOworICAgIFdlYlZpZXdJbXBsKiB3ZWJW
aWV3SW1wbCA9IHN0YXRpY19jYXN0PFdlYlZpZXdJbXBsKj4obV93ZWJWaWV3KTsKICAgICB3ZWJW
aWV3SW1wbC0+cmVzaXplKFdlYlNpemUocGFnZVdpZHRoLCBwYWdlSGVpZ2h0KSk7CiAgICAgd2Vi
Vmlld0ltcGwtPm1haW5GcmFtZSgpLT5zZXRTY3JvbGxPZmZzZXQoV2ViU2l6ZShwYWdlV2lkdGgg
LyA0LCBwYWdlSGVpZ2h0IC8gNCkpOwogICAgIHdlYlZpZXdJbXBsLT5zZXRQYWdlU2NhbGVGYWN0
b3JQcmVzZXJ2aW5nU2Nyb2xsT2Zmc2V0KHBhZ2VTY2FsZUZhY3Rvcik7CkBAIC05MzEsMTMgKzk0
OSwxMyBAQCBURVNUX0YoV2ViRnJhbWVUZXN0LCBSZWxvYWRXaXRoT3ZlcnJpZGVVUkxQcmVzZXJ2
ZXNTdGF0ZSkKIAogICAgIC8vIFJlbG9hZCB0aGUgcGFnZSB1c2luZyB0aGUgY2FjaGUuCiAgICAg
d2ViVmlld0ltcGwtPm1haW5GcmFtZSgpLT5yZWxvYWRXaXRoT3ZlcnJpZGVVUkwodG9LVVJMKG1f
YmFzZVVSTCArIHNlY29uZFVSTCksIGZhbHNlKTsKLSAgICB3ZWJraXRfc3VwcG9ydDo6U2VydmVB
c3luY2hyb25vdXNNb2NrZWRSZXF1ZXN0cygpOworICAgIFBsYXRmb3JtOjpjdXJyZW50KCktPnVu
aXRUZXN0U3VwcG9ydCgpLT5zZXJ2ZUFzeW5jaHJvbm91c01vY2tlZFJlcXVlc3RzKCk7CiAgICAg
QVNTRVJUX0VRKHByZXZpb3VzT2Zmc2V0LCB3ZWJWaWV3SW1wbC0+bWFpbkZyYW1lKCktPnNjcm9s
bE9mZnNldCgpKTsKICAgICBBU1NFUlRfRVEocHJldmlvdXNTY2FsZSwgd2ViVmlld0ltcGwtPnBh
Z2VTY2FsZUZhY3RvcigpKTsKIAogICAgIC8vIFJlbG9hZCB0aGUgcGFnZSB3aGlsZSBpZ25vcmlu
ZyB0aGUgY2FjaGUuCiAgICAgd2ViVmlld0ltcGwtPm1haW5GcmFtZSgpLT5yZWxvYWRXaXRoT3Zl
cnJpZGVVUkwodG9LVVJMKG1fYmFzZVVSTCArIHRoaXJkVVJMKSwgdHJ1ZSk7Ci0gICAgd2Via2l0
X3N1cHBvcnQ6OlNlcnZlQXN5bmNocm9ub3VzTW9ja2VkUmVxdWVzdHMoKTsKKyAgICBQbGF0Zm9y
bTo6Y3VycmVudCgpLT51bml0VGVzdFN1cHBvcnQoKS0+c2VydmVBc3luY2hyb25vdXNNb2NrZWRS
ZXF1ZXN0cygpOwogICAgIEFTU0VSVF9FUShwcmV2aW91c09mZnNldCwgd2ViVmlld0ltcGwtPm1h
aW5GcmFtZSgpLT5zY3JvbGxPZmZzZXQoKSk7CiAgICAgQVNTRVJUX0VRKHByZXZpb3VzU2NhbGUs
IHdlYlZpZXdJbXBsLT5wYWdlU2NhbGVGYWN0b3IoKSk7CiB9CkBAIC05NDcsMTEgKzk2NSwxMCBA
QCBURVNUX0YoV2ViRnJhbWVUZXN0LCBJZnJhbWVSZWRpcmVjdCkKICAgICByZWdpc3Rlck1vY2tl
ZEh0dHBVUkxMb2FkKCJpZnJhbWVfcmVkaXJlY3QuaHRtbCIpOwogICAgIHJlZ2lzdGVyTW9ja2Vk
SHR0cFVSTExvYWQoInZpc2libGVfaWZyYW1lLmh0bWwiKTsKIAotICAgIFdlYlZpZXcqIHdlYlZp
ZXcgPSBGcmFtZVRlc3RIZWxwZXJzOjpjcmVhdGVXZWJWaWV3QW5kTG9hZChtX2Jhc2VVUkwgKyAi
aWZyYW1lX3JlZGlyZWN0Lmh0bWwiLCB0cnVlKTsKLSAgICB3ZWJraXRfc3VwcG9ydDo6UnVuQWxs
UGVuZGluZ01lc3NhZ2VzKCk7IC8vIFF1ZXVlIHRoZSBpZnJhbWUuCi0gICAgd2Via2l0X3N1cHBv
cnQ6OlNlcnZlQXN5bmNocm9ub3VzTW9ja2VkUmVxdWVzdHMoKTsgLy8gTG9hZCB0aGUgaWZyYW1l
LgorICAgIG1fd2ViVmlldyA9IEZyYW1lVGVzdEhlbHBlcnM6OmNyZWF0ZVdlYlZpZXdBbmRMb2Fk
KG1fYmFzZVVSTCArICJpZnJhbWVfcmVkaXJlY3QuaHRtbCIsIHRydWUpOworICAgIFBsYXRmb3Jt
OjpjdXJyZW50KCktPnVuaXRUZXN0U3VwcG9ydCgpLT5zZXJ2ZUFzeW5jaHJvbm91c01vY2tlZFJl
cXVlc3RzKCk7IC8vIExvYWQgdGhlIGlmcmFtZS4KIAotICAgIFdlYkZyYW1lKiBpZnJhbWUgPSB3
ZWJWaWV3LT5maW5kRnJhbWVCeU5hbWUoV2ViU3RyaW5nOjpmcm9tVVRGOCgiaWZyIikpOworICAg
IFdlYkZyYW1lKiBpZnJhbWUgPSBtX3dlYlZpZXctPmZpbmRGcmFtZUJ5TmFtZShXZWJTdHJpbmc6
OmZyb21VVEY4KCJpZnIiKSk7CiAgICAgQVNTRVJUX1RSVUUoaWZyYW1lKTsKICAgICBXZWJEYXRh
U291cmNlKiBpZnJhbWVEYXRhU291cmNlID0gaWZyYW1lLT5kYXRhU291cmNlKCk7CiAgICAgQVNT
RVJUX1RSVUUoaWZyYW1lRGF0YVNvdXJjZSk7CkBAIC05NjAsOCArOTc3LDYgQEAgVEVTVF9GKFdl
YkZyYW1lVGVzdCwgSWZyYW1lUmVkaXJlY3QpCiAgICAgQVNTRVJUX0VRKDJVLCByZWRpcmVjdHMu
c2l6ZSgpKTsKICAgICBFWFBFQ1RfRVEodG9LVVJMKCJhYm91dDpibGFuayIpLCB0b0tVUkwocmVk
aXJlY3RzWzBdLnNwZWMoKS5kYXRhKCkpKTsKICAgICBFWFBFQ1RfRVEodG9LVVJMKCJodHRwOi8v
d3d3LnRlc3QuY29tL3Zpc2libGVfaWZyYW1lLmh0bWwiKSwgdG9LVVJMKHJlZGlyZWN0c1sxXS5z
cGVjKCkuZGF0YSgpKSk7Ci0KLSAgICB3ZWJWaWV3LT5jbG9zZSgpOwogfQogCiBURVNUX0YoV2Vi
RnJhbWVUZXN0LCBDbGVhckZvY3VzZWROb2RlVGVzdCkKQEAgLTk2OSwxNSArOTg0LDEzIEBAIFRF
U1RfRihXZWJGcmFtZVRlc3QsIENsZWFyRm9jdXNlZE5vZGVUZXN0KQogICAgIHJlZ2lzdGVyTW9j
a2VkSHR0cFVSTExvYWQoImlmcmFtZV9jbGVhcl9mb2N1c2VkX25vZGVfdGVzdC5odG1sIik7CiAg
ICAgcmVnaXN0ZXJNb2NrZWRIdHRwVVJMTG9hZCgiYXV0b2ZvY3VzX2lucHV0X2ZpZWxkX2lmcmFt
ZS5odG1sIik7CiAKLSAgICBXZWJWaWV3SW1wbCogd2ViVmlld0ltcGwgPSBzdGF0aWNfY2FzdDxX
ZWJWaWV3SW1wbCo+KEZyYW1lVGVzdEhlbHBlcnM6OmNyZWF0ZVdlYlZpZXdBbmRMb2FkKG1fYmFz
ZVVSTCArICJpZnJhbWVfY2xlYXJfZm9jdXNlZF9ub2RlX3Rlc3QuaHRtbCIsIHRydWUpKTsKKyAg
ICBtX3dlYlZpZXcgPSBGcmFtZVRlc3RIZWxwZXJzOjpjcmVhdGVXZWJWaWV3QW5kTG9hZChtX2Jh
c2VVUkwgKyAiaWZyYW1lX2NsZWFyX2ZvY3VzZWRfbm9kZV90ZXN0Lmh0bWwiLCB0cnVlKTsKIAog
ICAgIC8vIENsZWFyIHRoZSBmb2N1c2VkIG5vZGUuCi0gICAgd2ViVmlld0ltcGwtPmNsZWFyRm9j
dXNlZE5vZGUoKTsKKyAgICBtX3dlYlZpZXctPmNsZWFyRm9jdXNlZE5vZGUoKTsKIAogICAgIC8v
IE5vdyByZXRyaWV2ZSB0aGUgRm9jdXNlZE5vZGUgYW5kIHRlc3QgaXQgc2hvdWxkIGJlIG51bGwu
Ci0gICAgRVhQRUNUX0VRKDAsIHdlYlZpZXdJbXBsLT5mb2N1c2VkV2ViQ29yZU5vZGUoKSk7Ci0K
LSAgICB3ZWJWaWV3SW1wbC0+Y2xvc2UoKTsKKyAgICBFWFBFQ1RfRVEoMCwgc3RhdGljX2Nhc3Q8
V2ViVmlld0ltcGwqPihtX3dlYlZpZXcpLT5mb2N1c2VkV2ViQ29yZU5vZGUoKSk7CiB9CiAKIC8v
IEltcGxlbWVudGF0aW9uIG9mIFdlYkZyYW1lQ2xpZW50IHRoYXQgdHJhY2tzIHRoZSB2OCBjb250
ZXh0cyB0aGF0IGFyZSBjcmVhdGVkCkBAIC0xMDA4LDcgKzEwMjEsNyBAQCBwdWJsaWM6CiAgICAg
ICAgIGludCB3b3JsZElkOwogICAgIH07CiAKLSAgICB+Q29udGV4dExpZmV0aW1lVGVzdFdlYkZy
YW1lQ2xpZW50KCkKKyAgICB2aXJ0dWFsIH5Db250ZXh0TGlmZXRpbWVUZXN0V2ViRnJhbWVDbGll
bnQoKQogICAgIHsKICAgICAgICAgcmVzZXQoKTsKICAgICB9CkBAIC0xMDQ5LDkgKzEwNjIsOSBA
QCBURVNUX0YoV2ViRnJhbWVUZXN0LCBDb250ZXh0Tm90aWZpY2F0aW9uc0xvYWRVbmxvYWQpCiAK
ICAgICAvLyBMb2FkIGEgZnJhbWUgd2l0aCBhbiBpZnJhbWUsIG1ha2Ugc3VyZSB3ZSBnZXQgdGhl
IHJpZ2h0IGNyZWF0ZSBub3RpZmljYXRpb25zLgogICAgIENvbnRleHRMaWZldGltZVRlc3RXZWJG
cmFtZUNsaWVudCB3ZWJGcmFtZUNsaWVudDsKLSAgICBXZWJWaWV3KiB3ZWJWaWV3ID0gRnJhbWVU
ZXN0SGVscGVyczo6Y3JlYXRlV2ViVmlld0FuZExvYWQobV9iYXNlVVJMICsgImNvbnRleHRfbm90
aWZpY2F0aW9uc190ZXN0Lmh0bWwiLCB0cnVlLCAmd2ViRnJhbWVDbGllbnQpOworICAgIG1fd2Vi
VmlldyA9IEZyYW1lVGVzdEhlbHBlcnM6OmNyZWF0ZVdlYlZpZXdBbmRMb2FkKG1fYmFzZVVSTCAr
ICJjb250ZXh0X25vdGlmaWNhdGlvbnNfdGVzdC5odG1sIiwgdHJ1ZSwgJndlYkZyYW1lQ2xpZW50
KTsKIAotICAgIFdlYkZyYW1lKiBtYWluRnJhbWUgPSB3ZWJWaWV3LT5tYWluRnJhbWUoKTsKKyAg
ICBXZWJGcmFtZSogbWFpbkZyYW1lID0gbV93ZWJWaWV3LT5tYWluRnJhbWUoKTsKICAgICBXZWJG
cmFtZSogY2hpbGRGcmFtZSA9IG1haW5GcmFtZS0+Zmlyc3RDaGlsZCgpOwogCiAgICAgQVNTRVJU
X0VRKDJ1LCB3ZWJGcmFtZUNsaWVudC5jcmVhdGVOb3RpZmljYXRpb25zLnNpemUoKSk7CkBAIC0x
MDY5LDcgKzEwODIsOCBAQCBURVNUX0YoV2ViRnJhbWVUZXN0LCBDb250ZXh0Tm90aWZpY2F0aW9u
c0xvYWRVbmxvYWQpCiAgICAgRVhQRUNUX0VRKDAsIHNlY29uZENyZWF0ZU5vdGlmaWNhdGlvbi0+
d29ybGRJZCk7CiAKICAgICAvLyBDbG9zZSB0aGUgdmlldy4gV2Ugc2hvdWxkIGdldCB0d28gcmVs
ZWFzZSBub3RpZmljYXRpb25zIHRoYXQgYXJlIGV4YWN0bHkgdGhlIHNhbWUgYXMgdGhlIGNyZWF0
ZSBvbmVzLCBpbiByZXZlcnNlIG9yZGVyLgotICAgIHdlYlZpZXctPmNsb3NlKCk7CisgICAgbV93
ZWJWaWV3LT5jbG9zZSgpOworICAgIG1fd2ViVmlldyA9IDA7CiAKICAgICBBU1NFUlRfRVEoMnUs
IHdlYkZyYW1lQ2xpZW50LnJlbGVhc2VOb3RpZmljYXRpb25zLnNpemUoKSk7CiAgICAgQ29udGV4
dExpZmV0aW1lVGVzdFdlYkZyYW1lQ2xpZW50OjpOb3RpZmljYXRpb24qIGZpcnN0UmVsZWFzZU5v
dGlmaWNhdGlvbiA9IHdlYkZyYW1lQ2xpZW50LnJlbGVhc2VOb3RpZmljYXRpb25zWzBdOwpAQCAt
MTA4NywxMSArMTEwMSwxMSBAQCBURVNUX0YoV2ViRnJhbWVUZXN0LCBDb250ZXh0Tm90aWZpY2F0
aW9uc1JlbG9hZCkKICAgICByZWdpc3Rlck1vY2tlZEh0dHBVUkxMb2FkKCJjb250ZXh0X25vdGlm
aWNhdGlvbnNfdGVzdF9mcmFtZS5odG1sIik7CiAKICAgICBDb250ZXh0TGlmZXRpbWVUZXN0V2Vi
RnJhbWVDbGllbnQgd2ViRnJhbWVDbGllbnQ7Ci0gICAgV2ViVmlldyogd2ViVmlldyA9IEZyYW1l
VGVzdEhlbHBlcnM6OmNyZWF0ZVdlYlZpZXdBbmRMb2FkKG1fYmFzZVVSTCArICJjb250ZXh0X25v
dGlmaWNhdGlvbnNfdGVzdC5odG1sIiwgdHJ1ZSwgJndlYkZyYW1lQ2xpZW50KTsKKyAgICBtX3dl
YlZpZXcgPSBGcmFtZVRlc3RIZWxwZXJzOjpjcmVhdGVXZWJWaWV3QW5kTG9hZChtX2Jhc2VVUkwg
KyAiY29udGV4dF9ub3RpZmljYXRpb25zX3Rlc3QuaHRtbCIsIHRydWUsICZ3ZWJGcmFtZUNsaWVu
dCk7CiAKICAgICAvLyBSZWZyZXNoLCB3ZSBzaG91bGQgZ2V0IHR3byByZWxlYXNlIG5vdGlmaWNh
dGlvbnMgYW5kIHR3byBtb3JlIGNyZWF0ZSBub3RpZmljYXRpb25zLgotICAgIHdlYlZpZXctPm1h
aW5GcmFtZSgpLT5yZWxvYWQoZmFsc2UpOwotICAgIHdlYmtpdF9zdXBwb3J0OjpTZXJ2ZUFzeW5j
aHJvbm91c01vY2tlZFJlcXVlc3RzKCk7CisgICAgbV93ZWJWaWV3LT5tYWluRnJhbWUoKS0+cmVs
b2FkKGZhbHNlKTsKKyAgICBQbGF0Zm9ybTo6Y3VycmVudCgpLT51bml0VGVzdFN1cHBvcnQoKS0+
c2VydmVBc3luY2hyb25vdXNNb2NrZWRSZXF1ZXN0cygpOwogICAgIEFTU0VSVF9FUSg0dSwgd2Vi
RnJhbWVDbGllbnQuY3JlYXRlTm90aWZpY2F0aW9ucy5zaXplKCkpOwogICAgIEFTU0VSVF9FUSgy
dSwgd2ViRnJhbWVDbGllbnQucmVsZWFzZU5vdGlmaWNhdGlvbnMuc2l6ZSgpKTsKIApAQCAtMTEw
Miw3ICsxMTE2LDcgQEAgVEVTVF9GKFdlYkZyYW1lVGVzdCwgQ29udGV4dE5vdGlmaWNhdGlvbnNS
ZWxvYWQpCiAgICAgfQogCiAgICAgLy8gVGhlIGxhc3QgdHdvIGNyZWF0ZSBub3RpZmljYXRpb25z
IHNob3VsZCBiZSBmb3IgdGhlIGN1cnJlbnQgZnJhbWVzIGFuZCBjb250ZXh0LgotICAgIFdlYkZy
YW1lKiBtYWluRnJhbWUgPSB3ZWJWaWV3LT5tYWluRnJhbWUoKTsKKyAgICBXZWJGcmFtZSogbWFp
bkZyYW1lID0gbV93ZWJWaWV3LT5tYWluRnJhbWUoKTsKICAgICBXZWJGcmFtZSogY2hpbGRGcmFt
ZSA9IG1haW5GcmFtZS0+Zmlyc3RDaGlsZCgpOwogICAgIENvbnRleHRMaWZldGltZVRlc3RXZWJG
cmFtZUNsaWVudDo6Tm90aWZpY2F0aW9uKiBmaXJzdFJlZnJlc2hOb3RpZmljYXRpb24gPSB3ZWJG
cmFtZUNsaWVudC5jcmVhdGVOb3RpZmljYXRpb25zWzJdOwogICAgIENvbnRleHRMaWZldGltZVRl
c3RXZWJGcmFtZUNsaWVudDo6Tm90aWZpY2F0aW9uKiBzZWNvbmRSZWZyZXNoTm90aWZpY2F0aW9u
ID0gd2ViRnJhbWVDbGllbnQuY3JlYXRlTm90aWZpY2F0aW9uc1szXTsKQEAgLTExMTUsNyArMTEy
OSw4IEBAIFRFU1RfRihXZWJGcmFtZVRlc3QsIENvbnRleHROb3RpZmljYXRpb25zUmVsb2FkKQog
ICAgIEVYUEVDVF9FUShjaGlsZEZyYW1lLT5tYWluV29ybGRTY3JpcHRDb250ZXh0KCksIHNlY29u
ZFJlZnJlc2hOb3RpZmljYXRpb24tPmNvbnRleHQpOwogICAgIEVYUEVDVF9FUSgwLCBzZWNvbmRS
ZWZyZXNoTm90aWZpY2F0aW9uLT53b3JsZElkKTsKIAotICAgIHdlYlZpZXctPmNsb3NlKCk7Cisg
ICAgbV93ZWJWaWV3LT5jbG9zZSgpOworICAgIG1fd2ViVmlldyA9IDA7CiB9CiAKIFRFU1RfRihX
ZWJGcmFtZVRlc3QsIENvbnRleHROb3RpZmljYXRpb25zSXNvbGF0ZWRXb3JsZHMpCkBAIC0xMTI2
LDcgKzExNDEsNyBAQCBURVNUX0YoV2ViRnJhbWVUZXN0LCBDb250ZXh0Tm90aWZpY2F0aW9uc0lz
b2xhdGVkV29ybGRzKQogICAgIHJlZ2lzdGVyTW9ja2VkSHR0cFVSTExvYWQoImNvbnRleHRfbm90
aWZpY2F0aW9uc190ZXN0X2ZyYW1lLmh0bWwiKTsKIAogICAgIENvbnRleHRMaWZldGltZVRlc3RX
ZWJGcmFtZUNsaWVudCB3ZWJGcmFtZUNsaWVudDsKLSAgICBXZWJWaWV3KiB3ZWJWaWV3ID0gRnJh
bWVUZXN0SGVscGVyczo6Y3JlYXRlV2ViVmlld0FuZExvYWQobV9iYXNlVVJMICsgImNvbnRleHRf
bm90aWZpY2F0aW9uc190ZXN0Lmh0bWwiLCB0cnVlLCAmd2ViRnJhbWVDbGllbnQpOworICAgIG1f
d2ViVmlldyA9IEZyYW1lVGVzdEhlbHBlcnM6OmNyZWF0ZVdlYlZpZXdBbmRMb2FkKG1fYmFzZVVS
TCArICJjb250ZXh0X25vdGlmaWNhdGlvbnNfdGVzdC5odG1sIiwgdHJ1ZSwgJndlYkZyYW1lQ2xp
ZW50KTsKIAogICAgIC8vIEFkZCBhbiBpc29sYXRlZCB3b3JsZC4KICAgICB3ZWJGcmFtZUNsaWVu
dC5yZXNldCgpOwpAQCAtMTEzNSwxOCArMTE1MCwxOSBAQCBURVNUX0YoV2ViRnJhbWVUZXN0LCBD
b250ZXh0Tm90aWZpY2F0aW9uc0lzb2xhdGVkV29ybGRzKQogICAgIFdlYlNjcmlwdFNvdXJjZSBz
Y3JpcHRTb3VyY2UoImhpISIpOwogICAgIGludCBudW1Tb3VyY2VzID0gMTsKICAgICBpbnQgZXh0
ZW5zaW9uR3JvdXAgPSAwOwotICAgIHdlYlZpZXctPm1haW5GcmFtZSgpLT5leGVjdXRlU2NyaXB0
SW5Jc29sYXRlZFdvcmxkKGlzb2xhdGVkV29ybGRJZCwgJnNjcmlwdFNvdXJjZSwgbnVtU291cmNl
cywgZXh0ZW5zaW9uR3JvdXApOworICAgIG1fd2ViVmlldy0+bWFpbkZyYW1lKCktPmV4ZWN1dGVT
Y3JpcHRJbklzb2xhdGVkV29ybGQoaXNvbGF0ZWRXb3JsZElkLCAmc2NyaXB0U291cmNlLCBudW1T
b3VyY2VzLCBleHRlbnNpb25Hcm91cCk7CiAKICAgICAvLyBXZSBzaG91bGQgbm93IGhhdmUgYSBu
ZXcgY3JlYXRlIG5vdGlmaWNhdGlvbi4KICAgICBBU1NFUlRfRVEoMXUsIHdlYkZyYW1lQ2xpZW50
LmNyZWF0ZU5vdGlmaWNhdGlvbnMuc2l6ZSgpKTsKICAgICBDb250ZXh0TGlmZXRpbWVUZXN0V2Vi
RnJhbWVDbGllbnQ6Ok5vdGlmaWNhdGlvbiogbm90aWZpY2F0aW9uID0gd2ViRnJhbWVDbGllbnQu
Y3JlYXRlTm90aWZpY2F0aW9uc1swXTsKICAgICBBU1NFUlRfRVEoaXNvbGF0ZWRXb3JsZElkLCBu
b3RpZmljYXRpb24tPndvcmxkSWQpOwotICAgIEFTU0VSVF9FUSh3ZWJWaWV3LT5tYWluRnJhbWUo
KSwgbm90aWZpY2F0aW9uLT5mcmFtZSk7CisgICAgQVNTRVJUX0VRKG1fd2ViVmlldy0+bWFpbkZy
YW1lKCksIG5vdGlmaWNhdGlvbi0+ZnJhbWUpOwogCiAgICAgLy8gV2UgZG9uJ3QgaGF2ZSBhbiBB
UEkgdG8gZW51bWFyYXRlIGlzb2xhdGVkIHdvcmxkcyBmb3IgYSBmcmFtZSwgYnV0IHdlIGNhbiBh
dCBsZWFzdCBhc3NlcnQgdGhhdCB0aGUgY29udGV4dCB3ZSBnb3QgaXMgKm5vdCogdGhlIG1haW4g
d29ybGQncyBjb250ZXh0LgotICAgIEFTU0VSVF9ORSh3ZWJWaWV3LT5tYWluRnJhbWUoKS0+bWFp
bldvcmxkU2NyaXB0Q29udGV4dCgpLCBub3RpZmljYXRpb24tPmNvbnRleHQpOworICAgIEFTU0VS
VF9ORShtX3dlYlZpZXctPm1haW5GcmFtZSgpLT5tYWluV29ybGRTY3JpcHRDb250ZXh0KCksIG5v
dGlmaWNhdGlvbi0+Y29udGV4dCk7CiAKLSAgICB3ZWJWaWV3LT5jbG9zZSgpOworICAgIG1fd2Vi
Vmlldy0+Y2xvc2UoKTsKKyAgICBtX3dlYlZpZXcgPSAwOwogCiAgICAgLy8gV2Ugc2hvdWxkIGhh
dmUgZ290dGVuIHRocmVlIHJlbGVhc2Ugbm90aWZpY2F0aW9ucyAob25lIGZvciBlYWNoIG9mIHRo
ZSBmcmFtZXMsIHBsdXMgb25lIGZvciB0aGUgaXNvbGF0ZWQgY29udGV4dCkuCiAgICAgQVNTRVJU
X0VRKDN1LCB3ZWJGcmFtZUNsaWVudC5yZWxlYXNlTm90aWZpY2F0aW9ucy5zaXplKCkpOwpAQCAt
MTE2Myw4ICsxMTc5LDggQEAgVEVTVF9GKFdlYkZyYW1lVGVzdCwgQ29udGV4dE5vdGlmaWNhdGlv
bnNJc29sYXRlZFdvcmxkcykKIFRFU1RfRihXZWJGcmFtZVRlc3QsIEZpbmRJblBhZ2UpCiB7CiAg
ICAgcmVnaXN0ZXJNb2NrZWRIdHRwVVJMTG9hZCgiZmluZC5odG1sIik7Ci0gICAgV2ViVmlldyog
d2ViVmlldyA9IEZyYW1lVGVzdEhlbHBlcnM6OmNyZWF0ZVdlYlZpZXdBbmRMb2FkKG1fYmFzZVVS
TCArICJmaW5kLmh0bWwiKTsKLSAgICBXZWJGcmFtZSogZnJhbWUgPSB3ZWJWaWV3LT5tYWluRnJh
bWUoKTsKKyAgICBtX3dlYlZpZXcgPSBGcmFtZVRlc3RIZWxwZXJzOjpjcmVhdGVXZWJWaWV3QW5k
TG9hZChtX2Jhc2VVUkwgKyAiZmluZC5odG1sIik7CisgICAgV2ViRnJhbWUqIGZyYW1lID0gbV93
ZWJWaWV3LT5tYWluRnJhbWUoKTsKICAgICBjb25zdCBpbnQgZmluZElkZW50aWZpZXIgPSAxMjM0
NTsKICAgICBXZWJGaW5kT3B0aW9ucyBvcHRpb25zOwogCkBAIC0xMjE0LDIzICsxMjMwLDIxIEBA
IFRFU1RfRihXZWJGcmFtZVRlc3QsIEZpbmRJblBhZ2UpCiAgICAgZnJhbWUtPnN0b3BGaW5kaW5n
KGZhbHNlKTsKICAgICByYW5nZSA9IGZyYW1lLT5zZWxlY3Rpb25SYW5nZSgpOwogICAgIEFTU0VS
VF9UUlVFKHJhbmdlLmlzTnVsbCgpKTsKLQotICAgIHdlYlZpZXctPmNsb3NlKCk7CiB9CiAKIFRF
U1RfRihXZWJGcmFtZVRlc3QsIEdldENvbnRlbnRBc1BsYWluVGV4dCkKIHsKLSAgICBXZWJWaWV3
KiB3ZWJWaWV3ID0gRnJhbWVUZXN0SGVscGVyczo6Y3JlYXRlV2ViVmlld0FuZExvYWQoImFib3V0
OmJsYW5rIiwgdHJ1ZSk7CisgICAgbV93ZWJWaWV3ID0gRnJhbWVUZXN0SGVscGVyczo6Y3JlYXRl
V2ViVmlld0FuZExvYWQoImFib3V0OmJsYW5rIiwgdHJ1ZSk7CiAgICAgLy8gV2Ugc2V0IHRoZSBz
aXplIGJlY2F1c2UgaXQgaW1wYWN0cyBsaW5lIHdyYXBwaW5nLCB3aGljaCBjaGFuZ2VzIHRoZQog
ICAgIC8vIHJlc3VsdGluZyB0ZXh0IHZhbHVlLgotICAgIHdlYlZpZXctPnJlc2l6ZShXZWJTaXpl
KDY0MCwgNDgwKSk7Ci0gICAgV2ViRnJhbWUqIGZyYW1lID0gd2ViVmlldy0+bWFpbkZyYW1lKCk7
CisgICAgbV93ZWJWaWV3LT5yZXNpemUoV2ViU2l6ZSg2NDAsIDQ4MCkpOworICAgIFdlYkZyYW1l
KiBmcmFtZSA9IG1fd2ViVmlldy0+bWFpbkZyYW1lKCk7CiAKICAgICAvLyBHZW5lcmF0ZSBhIHNp
bXBsZSB0ZXN0IGNhc2UuCiAgICAgY29uc3QgY2hhciBzaW1wbGVTb3VyY2VbXSA9ICI8ZGl2PkZv
byBiYXI8L2Rpdj48ZGl2PjwvZGl2PmJheiI7CiAgICAgV2ViQ29yZTo6S1VSTCB0ZXN0VVJMID0g
dG9LVVJMKCJhYm91dDpibGFuayIpOwogICAgIGZyYW1lLT5sb2FkSFRNTFN0cmluZyhzaW1wbGVT
b3VyY2UsIHRlc3RVUkwpOwotICAgIHdlYmtpdF9zdXBwb3J0OjpSdW5BbGxQZW5kaW5nTWVzc2Fn
ZXMoKTsKKyAgICBydW5QZW5kaW5nVGFza3MoKTsKIAogICAgIC8vIE1ha2Ugc3VyZSBpdCBjb21l
cyBvdXQgT0suCiAgICAgY29uc3Qgc3RkOjpzdHJpbmcgZXhwZWN0ZWQoIkZvbyBiYXJcbmJheiIp
OwpAQCAtMTI0NSwxMyArMTI1OSwxMyBAQCBURVNUX0YoV2ViRnJhbWVUZXN0LCBHZXRDb250ZW50
QXNQbGFpblRleHQpCiAgICAgLy8gTm93IGRvIGEgbmV3IHRlc3Qgd2l0aCBhIHN1YmZyYW1lLgog
ICAgIGNvbnN0IGNoYXIgb3V0ZXJGcmFtZVNvdXJjZVtdID0gIkhlbGxvPGlmcmFtZT48L2lmcmFt
ZT4gd29ybGQiOwogICAgIGZyYW1lLT5sb2FkSFRNTFN0cmluZyhvdXRlckZyYW1lU291cmNlLCB0
ZXN0VVJMKTsKLSAgICB3ZWJraXRfc3VwcG9ydDo6UnVuQWxsUGVuZGluZ01lc3NhZ2VzKCk7Cisg
ICAgcnVuUGVuZGluZ1Rhc2tzKCk7CiAKICAgICAvLyBMb2FkIHNvbWV0aGluZyBpbnRvIHRoZSBz
dWJmcmFtZS4KICAgICBXZWJGcmFtZSogc3ViZnJhbWUgPSBmcmFtZS0+ZmluZENoaWxkQnlFeHBy
ZXNzaW9uKFdlYlN0cmluZzo6ZnJvbVVURjgoIi9odG1sL2JvZHkvaWZyYW1lIikpOwogICAgIEFT
U0VSVF9UUlVFKHN1YmZyYW1lKTsKICAgICBzdWJmcmFtZS0+bG9hZEhUTUxTdHJpbmcoInN1Yjxw
PnRleHQiLCB0ZXN0VVJMKTsKLSAgICB3ZWJraXRfc3VwcG9ydDo6UnVuQWxsUGVuZGluZ01lc3Nh
Z2VzKCk7CisgICAgcnVuUGVuZGluZ1Rhc2tzKCk7CiAKICAgICB0ZXh0ID0gZnJhbWUtPmNvbnRl
bnRBc1RleHQoc3RkOjpudW1lcmljX2xpbWl0czxzaXplX3Q+OjptYXgoKSk7CiAgICAgRVhQRUNU
X0VRKCJIZWxsbyB3b3JsZFxuXG5zdWJcbnRleHQiLCBzdGQ6OnN0cmluZyh0ZXh0LnV0ZjgoKS5k
YXRhKCkpKTsKQEAgLTEyNjAsMjAgKzEyNzQsMTggQEAgVEVTVF9GKFdlYkZyYW1lVGVzdCwgR2V0
Q29udGVudEFzUGxhaW5UZXh0KQogICAgIC8vIHdoYXQgd2UnbGwgdGFrZS4gVGhlcmUgdXNlZCB0
byBiZSBhIGNyYXNoIGluIHRoaXMgY2FzZS4KICAgICB0ZXh0ID0gZnJhbWUtPmNvbnRlbnRBc1Rl
eHQoMTIpOwogICAgIEVYUEVDVF9FUSgiSGVsbG8gd29ybGQiLCBzdGQ6OnN0cmluZyh0ZXh0LnV0
ZjgoKS5kYXRhKCkpKTsKLQotICAgIHdlYlZpZXctPmNsb3NlKCk7CiB9CiAKIFRFU1RfRihXZWJG
cmFtZVRlc3QsIEdldEZ1bGxIdG1sT2ZQYWdlKQogewotICAgIFdlYlZpZXcqIHdlYlZpZXcgPSBG
cmFtZVRlc3RIZWxwZXJzOjpjcmVhdGVXZWJWaWV3QW5kTG9hZCgiYWJvdXQ6YmxhbmsiLCB0cnVl
KTsKLSAgICBXZWJGcmFtZSogZnJhbWUgPSB3ZWJWaWV3LT5tYWluRnJhbWUoKTsKKyAgICBtX3dl
YlZpZXcgPSBGcmFtZVRlc3RIZWxwZXJzOjpjcmVhdGVXZWJWaWV3QW5kTG9hZCgiYWJvdXQ6Ymxh
bmsiLCB0cnVlKTsKKyAgICBXZWJGcmFtZSogZnJhbWUgPSBtX3dlYlZpZXctPm1haW5GcmFtZSgp
OwogCiAgICAgLy8gR2VuZXJhdGUgYSBzaW1wbGUgdGVzdCBjYXNlLgogICAgIGNvbnN0IGNoYXIg
c2ltcGxlU291cmNlW10gPSAiPHA+SGVsbG88L3A+PHA+V29ybGQ8L3A+IjsKICAgICBXZWJDb3Jl
OjpLVVJMIHRlc3RVUkwgPSB0b0tVUkwoImFib3V0OmJsYW5rIik7CiAgICAgZnJhbWUtPmxvYWRI
VE1MU3RyaW5nKHNpbXBsZVNvdXJjZSwgdGVzdFVSTCk7Ci0gICAgd2Via2l0X3N1cHBvcnQ6OlJ1
bkFsbFBlbmRpbmdNZXNzYWdlcygpOworICAgIHJ1blBlbmRpbmdUYXNrcygpOwogCiAgICAgV2Vi
U3RyaW5nIHRleHQgPSBmcmFtZS0+Y29udGVudEFzVGV4dChzdGQ6Om51bWVyaWNfbGltaXRzPHNp
emVfdD46Om1heCgpKTsKICAgICBFWFBFQ1RfRVEoIkhlbGxvXG5cbldvcmxkIiwgc3RkOjpzdHJp
bmcodGV4dC51dGY4KCkuZGF0YSgpKSk7CkBAIC0xMjgyLDcgKzEyOTQsNyBAQCBURVNUX0YoV2Vi
RnJhbWVUZXN0LCBHZXRGdWxsSHRtbE9mUGFnZSkKIAogICAgIC8vIExvYWQgYWdhaW4gd2l0aCB0
aGUgb3V0cHV0IGh0bWwuCiAgICAgZnJhbWUtPmxvYWRIVE1MU3RyaW5nKFdlYkRhdGEoaHRtbC5j
X3N0cigpLCBodG1sLmxlbmd0aCgpKSwgdGVzdFVSTCk7Ci0gICAgd2Via2l0X3N1cHBvcnQ6OlJ1
bkFsbFBlbmRpbmdNZXNzYWdlcygpOworICAgIHJ1blBlbmRpbmdUYXNrcygpOwogCiAgICAgRVhQ
RUNUX0VRKGh0bWwsIHN0ZDo6c3RyaW5nKGZyYW1lLT5jb250ZW50QXNNYXJrdXAoKS51dGY4KCku
ZGF0YSgpKSk7CiAKQEAgLTEzMTIsMTAgKzEzMjQsMTMgQEAgVEVTVF9GKFdlYkZyYW1lVGVzdCwg
RXhlY3V0ZVNjcmlwdER1cmluZ0RpZENyZWF0ZVNjcmlwdENvbnRleHQpCiAgICAgcmVnaXN0ZXJN
b2NrZWRIdHRwVVJMTG9hZCgiaGVsbG9fd29ybGQuaHRtbCIpOwogCiAgICAgVGVzdEV4ZWN1dGVT
Y3JpcHREdXJpbmdEaWRDcmVhdGVTY3JpcHRDb250ZXh0IHdlYkZyYW1lQ2xpZW50OwotICAgIFdl
YlZpZXcqIHdlYlZpZXcgPSBGcmFtZVRlc3RIZWxwZXJzOjpjcmVhdGVXZWJWaWV3QW5kTG9hZCht
X2Jhc2VVUkwgKyAiaGVsbG9fd29ybGQuaHRtbCIsIHRydWUsICZ3ZWJGcmFtZUNsaWVudCk7Cisg
ICAgbV93ZWJWaWV3ID0gRnJhbWVUZXN0SGVscGVyczo6Y3JlYXRlV2ViVmlld0FuZExvYWQobV9i
YXNlVVJMICsgImhlbGxvX3dvcmxkLmh0bWwiLCB0cnVlLCAmd2ViRnJhbWVDbGllbnQpOworCisg
ICAgbV93ZWJWaWV3LT5tYWluRnJhbWUoKS0+cmVsb2FkKCk7CisgICAgUGxhdGZvcm06OmN1cnJl
bnQoKS0+dW5pdFRlc3RTdXBwb3J0KCktPnNlcnZlQXN5bmNocm9ub3VzTW9ja2VkUmVxdWVzdHMo
KTsKIAotICAgIHdlYlZpZXctPm1haW5GcmFtZSgpLT5yZWxvYWQoKTsKLSAgICB3ZWJraXRfc3Vw
cG9ydDo6U2VydmVBc3luY2hyb25vdXNNb2NrZWRSZXF1ZXN0cygpOworICAgIG1fd2ViVmlldy0+
Y2xvc2UoKTsKKyAgICBtX3dlYlZpZXcgPSAwOwogfQogCiBjbGFzcyBUZXN0RGlkQ3JlYXRlRnJh
bWVXZWJGcmFtZUNsaWVudCA6IHB1YmxpYyBXZWJGcmFtZUNsaWVudCB7CkBAIC0xMzQzLDEwICsx
MzU4LDEzIEBAIFRFU1RfRihXZWJGcmFtZVRlc3QsIERpZENyZWF0ZUZyYW1lKQogICAgIHJlZ2lz
dGVyTW9ja2VkSHR0cFVSTExvYWQoInplcm9fc2l6ZWRfaWZyYW1lLmh0bWwiKTsKIAogICAgIFRl
c3REaWRDcmVhdGVGcmFtZVdlYkZyYW1lQ2xpZW50IHdlYkZyYW1lQ2xpZW50OwotICAgIFdlYlZp
ZXcqIHdlYlZpZXcgPSBGcmFtZVRlc3RIZWxwZXJzOjpjcmVhdGVXZWJWaWV3QW5kTG9hZChtX2Jh
c2VVUkwgKyAiaWZyYW1lc190ZXN0Lmh0bWwiLCBmYWxzZSwgJndlYkZyYW1lQ2xpZW50KTsKKyAg
ICBtX3dlYlZpZXcgPSBGcmFtZVRlc3RIZWxwZXJzOjpjcmVhdGVXZWJWaWV3QW5kTG9hZChtX2Jh
c2VVUkwgKyAiaWZyYW1lc190ZXN0Lmh0bWwiLCBmYWxzZSwgJndlYkZyYW1lQ2xpZW50KTsKIAog
ICAgIEVYUEVDVF9FUSh3ZWJGcmFtZUNsaWVudC5tX2ZyYW1lQ291bnQsIDMpOyAKLSAgICBFWFBF
Q1RfRVEod2ViRnJhbWVDbGllbnQubV9wYXJlbnQsIHdlYlZpZXctPm1haW5GcmFtZSgpKTsKKyAg
ICBFWFBFQ1RfRVEod2ViRnJhbWVDbGllbnQubV9wYXJlbnQsIG1fd2ViVmlldy0+bWFpbkZyYW1l
KCkpOworCisgICAgbV93ZWJWaWV3LT5jbG9zZSgpOworICAgIG1fd2ViVmlldyA9IDA7CiB9CiAK
IGNsYXNzIEZpbmRVcGRhdGVXZWJGcmFtZUNsaWVudCA6IHB1YmxpYyBXZWJGcmFtZUNsaWVudCB7
CkBAIC0xMzgzLDEwICsxNDAxLDEwIEBAIFRFU1RfRihXZWJGcmFtZVRlc3QsIEZpbmRJblBhZ2VN
YXRjaFJlY3RzKQogICAgIHJlZ2lzdGVyTW9ja2VkSHR0cFVSTExvYWQoImZpbmRfaW5fcGFnZV9m
cmFtZS5odG1sIik7CiAKICAgICBGaW5kVXBkYXRlV2ViRnJhbWVDbGllbnQgY2xpZW50OwotICAg
IFdlYlZpZXcqIHdlYlZpZXcgPSBGcmFtZVRlc3RIZWxwZXJzOjpjcmVhdGVXZWJWaWV3QW5kTG9h
ZChtX2Jhc2VVUkwgKyAiZmluZF9pbl9wYWdlLmh0bWwiLCB0cnVlLCAmY2xpZW50KTsKLSAgICB3
ZWJWaWV3LT5yZXNpemUoV2ViU2l6ZSg2NDAsIDQ4MCkpOwotICAgIHdlYlZpZXctPmxheW91dCgp
OwotICAgIHdlYmtpdF9zdXBwb3J0OjpSdW5BbGxQZW5kaW5nTWVzc2FnZXMoKTsKKyAgICBtX3dl
YlZpZXcgPSBGcmFtZVRlc3RIZWxwZXJzOjpjcmVhdGVXZWJWaWV3QW5kTG9hZChtX2Jhc2VVUkwg
KyAiZmluZF9pbl9wYWdlLmh0bWwiLCB0cnVlLCAmY2xpZW50KTsKKyAgICBtX3dlYlZpZXctPnJl
c2l6ZShXZWJTaXplKDY0MCwgNDgwKSk7CisgICAgbV93ZWJWaWV3LT5sYXlvdXQoKTsKKyAgICBy
dW5QZW5kaW5nVGFza3MoKTsKIAogICAgIC8vIE5vdGUgdGhhdCB0aGUgJ3Jlc3VsdCAxOScgaW4g
dGhlIDxzZWxlY3Q+IGVsZW1lbnQgaXMgbm90IGV4cGVjdGVkIHRvIHByb2R1Y2UgYSBtYXRjaC4K
ICAgICBzdGF0aWMgY29uc3QgY2hhcioga0ZpbmRTdHJpbmcgPSAicmVzdWx0IjsKQEAgLTEzOTUs
NyArMTQxMyw3IEBAIFRFU1RfRihXZWJGcmFtZVRlc3QsIEZpbmRJblBhZ2VNYXRjaFJlY3RzKQog
CiAgICAgV2ViRmluZE9wdGlvbnMgb3B0aW9uczsKICAgICBXZWJTdHJpbmcgc2VhcmNoVGV4dCA9
IFdlYlN0cmluZzo6ZnJvbVVURjgoa0ZpbmRTdHJpbmcpOwotICAgIFdlYkZyYW1lSW1wbCogbWFp
bkZyYW1lID0gc3RhdGljX2Nhc3Q8V2ViRnJhbWVJbXBsKj4od2ViVmlldy0+bWFpbkZyYW1lKCkp
OworICAgIFdlYkZyYW1lSW1wbCogbWFpbkZyYW1lID0gc3RhdGljX2Nhc3Q8V2ViRnJhbWVJbXBs
Kj4obV93ZWJWaWV3LT5tYWluRnJhbWUoKSk7CiAgICAgRVhQRUNUX1RSVUUobWFpbkZyYW1lLT5m
aW5kKGtGaW5kSWRlbnRpZmllciwgc2VhcmNoVGV4dCwgb3B0aW9ucywgZmFsc2UsIDApKTsKIAog
ICAgIG1haW5GcmFtZS0+cmVzZXRNYXRjaENvdW50KCk7CkBAIC0xNDAzLDcgKzE0MjEsNyBAQCBU
RVNUX0YoV2ViRnJhbWVUZXN0LCBGaW5kSW5QYWdlTWF0Y2hSZWN0cykKICAgICBmb3IgKFdlYkZy
YW1lKiBmcmFtZSA9IG1haW5GcmFtZTsgZnJhbWU7IGZyYW1lID0gZnJhbWUtPnRyYXZlcnNlTmV4
dChmYWxzZSkpCiAgICAgICAgIGZyYW1lLT5zY29wZVN0cmluZ01hdGNoZXMoa0ZpbmRJZGVudGlm
aWVyLCBzZWFyY2hUZXh0LCBvcHRpb25zLCB0cnVlKTsKIAotICAgIHdlYmtpdF9zdXBwb3J0OjpS
dW5BbGxQZW5kaW5nTWVzc2FnZXMoKTsKKyAgICBydW5QZW5kaW5nVGFza3MoKTsKICAgICBFWFBF
Q1RfVFJVRShjbGllbnQuZmluZFJlc3VsdHNBcmVSZWFkeSgpKTsKIAogICAgIFdlYlZlY3RvcjxX
ZWJGbG9hdFJlY3Q+IHdlYk1hdGNoUmVjdHM7CkBAIC0xNDkwLDExICsxNTA4LDEyIEBAIFRFU1Rf
RihXZWJGcmFtZVRlc3QsIEZpbmRJblBhZ2VNYXRjaFJlY3RzKQogICAgIEVYUEVDVF9UUlVFKHdl
Yk1hdGNoUmVjdHNbMTddLnkgPiB3ZWJNYXRjaFJlY3RzWzE4XS55KTsKIAogICAgIC8vIFJlc2l6
aW5nIHNob3VsZCB1cGRhdGUgdGhlIHJlY3RzIHZlcnNpb24uCi0gICAgd2ViVmlldy0+cmVzaXpl
KFdlYlNpemUoODAwLCA2MDApKTsKLSAgICB3ZWJraXRfc3VwcG9ydDo6UnVuQWxsUGVuZGluZ01l
c3NhZ2VzKCk7CisgICAgbV93ZWJWaWV3LT5yZXNpemUoV2ViU2l6ZSg4MDAsIDYwMCkpOworICAg
IHJ1blBlbmRpbmdUYXNrcygpOwogICAgIEVYUEVDVF9UUlVFKG1haW5GcmFtZS0+ZmluZE1hdGNo
TWFya2Vyc1ZlcnNpb24oKSAhPSByZWN0c1ZlcnNpb24pOwogCi0gICAgd2ViVmlldy0+Y2xvc2Uo
KTsKKyAgICBtX3dlYlZpZXctPmNsb3NlKCk7CisgICAgbV93ZWJWaWV3ID0gMDsKIH0KIAogVEVT
VF9GKFdlYkZyYW1lVGVzdCwgRmluZEluUGFnZVNraXBzSGlkZGVuRnJhbWVzKQpAQCAtMTUwMiwx
MCArMTUyMSwxMCBAQCBURVNUX0YoV2ViRnJhbWVUZXN0LCBGaW5kSW5QYWdlU2tpcHNIaWRkZW5G
cmFtZXMpCiAgICAgcmVnaXN0ZXJNb2NrZWRIdHRwVVJMTG9hZCgiZmluZF9pbl9oaWRkZW5fZnJh
bWUuaHRtbCIpOwogCiAgICAgRmluZFVwZGF0ZVdlYkZyYW1lQ2xpZW50IGNsaWVudDsKLSAgICBX
ZWJWaWV3KiB3ZWJWaWV3ID0gRnJhbWVUZXN0SGVscGVyczo6Y3JlYXRlV2ViVmlld0FuZExvYWQo
bV9iYXNlVVJMICsgImZpbmRfaW5faGlkZGVuX2ZyYW1lLmh0bWwiLCB0cnVlLCAmY2xpZW50KTsK
LSAgICB3ZWJWaWV3LT5yZXNpemUoV2ViU2l6ZSg2NDAsIDQ4MCkpOwotICAgIHdlYlZpZXctPmxh
eW91dCgpOwotICAgIHdlYmtpdF9zdXBwb3J0OjpSdW5BbGxQZW5kaW5nTWVzc2FnZXMoKTsKKyAg
ICBtX3dlYlZpZXcgPSBGcmFtZVRlc3RIZWxwZXJzOjpjcmVhdGVXZWJWaWV3QW5kTG9hZChtX2Jh
c2VVUkwgKyAiZmluZF9pbl9oaWRkZW5fZnJhbWUuaHRtbCIsIHRydWUsICZjbGllbnQpOworICAg
IG1fd2ViVmlldy0+cmVzaXplKFdlYlNpemUoNjQwLCA0ODApKTsKKyAgICBtX3dlYlZpZXctPmxh
eW91dCgpOworICAgIHJ1blBlbmRpbmdUYXNrcygpOwogCiAgICAgc3RhdGljIGNvbnN0IGNoYXIq
IGtGaW5kU3RyaW5nID0gImhlbGxvIjsKICAgICBzdGF0aWMgY29uc3QgaW50IGtGaW5kSWRlbnRp
ZmllciA9IDEyMzQ1OwpAQCAtMTUxMyw3ICsxNTMyLDcgQEAgVEVTVF9GKFdlYkZyYW1lVGVzdCwg
RmluZEluUGFnZVNraXBzSGlkZGVuRnJhbWVzKQogCiAgICAgV2ViRmluZE9wdGlvbnMgb3B0aW9u
czsKICAgICBXZWJTdHJpbmcgc2VhcmNoVGV4dCA9IFdlYlN0cmluZzo6ZnJvbVVURjgoa0ZpbmRT
dHJpbmcpOwotICAgIFdlYkZyYW1lSW1wbCogbWFpbkZyYW1lID0gc3RhdGljX2Nhc3Q8V2ViRnJh
bWVJbXBsKj4od2ViVmlldy0+bWFpbkZyYW1lKCkpOworICAgIFdlYkZyYW1lSW1wbCogbWFpbkZy
YW1lID0gc3RhdGljX2Nhc3Q8V2ViRnJhbWVJbXBsKj4obV93ZWJWaWV3LT5tYWluRnJhbWUoKSk7
CiAgICAgRVhQRUNUX1RSVUUobWFpbkZyYW1lLT5maW5kKGtGaW5kSWRlbnRpZmllciwgc2VhcmNo
VGV4dCwgb3B0aW9ucywgZmFsc2UsIDApKTsKIAogICAgIG1haW5GcmFtZS0+cmVzZXRNYXRjaENv
dW50KCk7CkBAIC0xNTIxLDExICsxNTQwLDEyIEBAIFRFU1RfRihXZWJGcmFtZVRlc3QsIEZpbmRJ
blBhZ2VTa2lwc0hpZGRlbkZyYW1lcykKICAgICBmb3IgKFdlYkZyYW1lKiBmcmFtZSA9IG1haW5G
cmFtZTsgZnJhbWU7IGZyYW1lID0gZnJhbWUtPnRyYXZlcnNlTmV4dChmYWxzZSkpCiAgICAgICAg
IGZyYW1lLT5zY29wZVN0cmluZ01hdGNoZXMoa0ZpbmRJZGVudGlmaWVyLCBzZWFyY2hUZXh0LCBv
cHRpb25zLCB0cnVlKTsKIAotICAgIHdlYmtpdF9zdXBwb3J0OjpSdW5BbGxQZW5kaW5nTWVzc2Fn
ZXMoKTsKKyAgICBydW5QZW5kaW5nVGFza3MoKTsKICAgICBFWFBFQ1RfVFJVRShjbGllbnQuZmlu
ZFJlc3VsdHNBcmVSZWFkeSgpKTsKICAgICBFWFBFQ1RfRVEoa051bVJlc3VsdHMsIGNsaWVudC5j
b3VudCgpKTsKIAotICAgIHdlYlZpZXctPmNsb3NlKCk7CisgICAgbV93ZWJWaWV3LT5jbG9zZSgp
OworICAgIG1fd2ViVmlldyA9IDA7CiB9CiAKIFRFU1RfRihXZWJGcmFtZVRlc3QsIEZpbmRPbkRl
dGFjaGVkRnJhbWUpCkBAIC0xNTM0LDE3ICsxNTU0LDE3IEBAIFRFU1RfRihXZWJGcmFtZVRlc3Qs
IEZpbmRPbkRldGFjaGVkRnJhbWUpCiAgICAgcmVnaXN0ZXJNb2NrZWRIdHRwVVJMTG9hZCgiZmlu
ZF9pbl9wYWdlX2ZyYW1lLmh0bWwiKTsKIAogICAgIEZpbmRVcGRhdGVXZWJGcmFtZUNsaWVudCBj
bGllbnQ7Ci0gICAgV2ViVmlldyogd2ViVmlldyA9IEZyYW1lVGVzdEhlbHBlcnM6OmNyZWF0ZVdl
YlZpZXdBbmRMb2FkKG1fYmFzZVVSTCArICJmaW5kX2luX3BhZ2UuaHRtbCIsIHRydWUsICZjbGll
bnQpOwotICAgIHdlYlZpZXctPnJlc2l6ZShXZWJTaXplKDY0MCwgNDgwKSk7Ci0gICAgd2ViVmll
dy0+bGF5b3V0KCk7Ci0gICAgd2Via2l0X3N1cHBvcnQ6OlJ1bkFsbFBlbmRpbmdNZXNzYWdlcygp
OworICAgIG1fd2ViVmlldyA9IEZyYW1lVGVzdEhlbHBlcnM6OmNyZWF0ZVdlYlZpZXdBbmRMb2Fk
KG1fYmFzZVVSTCArICJmaW5kX2luX3BhZ2UuaHRtbCIsIHRydWUsICZjbGllbnQpOworICAgIG1f
d2ViVmlldy0+cmVzaXplKFdlYlNpemUoNjQwLCA0ODApKTsKKyAgICBtX3dlYlZpZXctPmxheW91
dCgpOworICAgIHJ1blBlbmRpbmdUYXNrcygpOwogCiAgICAgc3RhdGljIGNvbnN0IGNoYXIqIGtG
aW5kU3RyaW5nID0gInJlc3VsdCI7CiAgICAgc3RhdGljIGNvbnN0IGludCBrRmluZElkZW50aWZp
ZXIgPSAxMjM0NTsKIAogICAgIFdlYkZpbmRPcHRpb25zIG9wdGlvbnM7CiAgICAgV2ViU3RyaW5n
IHNlYXJjaFRleHQgPSBXZWJTdHJpbmc6OmZyb21VVEY4KGtGaW5kU3RyaW5nKTsKLSAgICBXZWJG
cmFtZUltcGwqIG1haW5GcmFtZSA9IHN0YXRpY19jYXN0PFdlYkZyYW1lSW1wbCo+KHdlYlZpZXct
Pm1haW5GcmFtZSgpKTsKKyAgICBXZWJGcmFtZUltcGwqIG1haW5GcmFtZSA9IHN0YXRpY19jYXN0
PFdlYkZyYW1lSW1wbCo+KG1fd2ViVmlldy0+bWFpbkZyYW1lKCkpOwogICAgIFdlYkZyYW1lSW1w
bCogc2Vjb25kRnJhbWUgPSBzdGF0aWNfY2FzdDxXZWJGcmFtZUltcGwqPihtYWluRnJhbWUtPnRy
YXZlcnNlTmV4dChmYWxzZSkpOwogICAgIFJlZlB0cjxXZWJDb3JlOjpGcmFtZT4gaG9sZFNlY29u
ZEZyYW1lID0gc2Vjb25kRnJhbWUtPmZyYW1lKCk7CiAKQEAgLTE1NTQsNyArMTU3NCw3IEBAIFRF
U1RfRihXZWJGcmFtZVRlc3QsIEZpbmRPbkRldGFjaGVkRnJhbWUpCiAgICAgRVhQRUNUX1RSVUUo
bWFpbkZyYW1lLT5maW5kKGtGaW5kSWRlbnRpZmllciwgc2VhcmNoVGV4dCwgb3B0aW9ucywgZmFs
c2UsIDApKTsKICAgICBFWFBFQ1RfRkFMU0Uoc2Vjb25kRnJhbWUtPmZpbmQoa0ZpbmRJZGVudGlm
aWVyLCBzZWFyY2hUZXh0LCBvcHRpb25zLCBmYWxzZSwgMCkpOwogCi0gICAgd2Via2l0X3N1cHBv
cnQ6OlJ1bkFsbFBlbmRpbmdNZXNzYWdlcygpOworICAgIHJ1blBlbmRpbmdUYXNrcygpOwogICAg
IEVYUEVDVF9GQUxTRShjbGllbnQuZmluZFJlc3VsdHNBcmVSZWFkeSgpKTsKIAogICAgIG1haW5G
cmFtZS0+cmVzZXRNYXRjaENvdW50KCk7CkBAIC0xNTYyLDExICsxNTgyLDEzIEBAIFRFU1RfRihX
ZWJGcmFtZVRlc3QsIEZpbmRPbkRldGFjaGVkRnJhbWUpCiAgICAgZm9yIChXZWJGcmFtZSogZnJh
bWUgPSBtYWluRnJhbWU7IGZyYW1lOyBmcmFtZSA9IGZyYW1lLT50cmF2ZXJzZU5leHQoZmFsc2Up
KQogICAgICAgICBmcmFtZS0+c2NvcGVTdHJpbmdNYXRjaGVzKGtGaW5kSWRlbnRpZmllciwgc2Vh
cmNoVGV4dCwgb3B0aW9ucywgdHJ1ZSk7CiAKLSAgICB3ZWJraXRfc3VwcG9ydDo6UnVuQWxsUGVu
ZGluZ01lc3NhZ2VzKCk7CisgICAgcnVuUGVuZGluZ1Rhc2tzKCk7CiAgICAgRVhQRUNUX1RSVUUo
Y2xpZW50LmZpbmRSZXN1bHRzQXJlUmVhZHkoKSk7CiAKICAgICBob2xkU2Vjb25kRnJhbWUucmVs
ZWFzZSgpOwotICAgIHdlYlZpZXctPmNsb3NlKCk7CisKKyAgICBtX3dlYlZpZXctPmNsb3NlKCk7
CisgICAgbV93ZWJWaWV3ID0gMDsKIH0KIAogVEVTVF9GKFdlYkZyYW1lVGVzdCwgRmluZERldGFj
aEZyYW1lQmVmb3JlU2NvcGVTdHJpbmdzKQpAQCAtMTU3NSwyNCArMTU5NywyNCBAQCBURVNUX0Yo
V2ViRnJhbWVUZXN0LCBGaW5kRGV0YWNoRnJhbWVCZWZvcmVTY29wZVN0cmluZ3MpCiAgICAgcmVn
aXN0ZXJNb2NrZWRIdHRwVVJMTG9hZCgiZmluZF9pbl9wYWdlX2ZyYW1lLmh0bWwiKTsKIAogICAg
IEZpbmRVcGRhdGVXZWJGcmFtZUNsaWVudCBjbGllbnQ7Ci0gICAgV2ViVmlldyogd2ViVmlldyA9
IEZyYW1lVGVzdEhlbHBlcnM6OmNyZWF0ZVdlYlZpZXdBbmRMb2FkKG1fYmFzZVVSTCArICJmaW5k
X2luX3BhZ2UuaHRtbCIsIHRydWUsICZjbGllbnQpOwotICAgIHdlYlZpZXctPnJlc2l6ZShXZWJT
aXplKDY0MCwgNDgwKSk7Ci0gICAgd2ViVmlldy0+bGF5b3V0KCk7Ci0gICAgd2Via2l0X3N1cHBv
cnQ6OlJ1bkFsbFBlbmRpbmdNZXNzYWdlcygpOworICAgIG1fd2ViVmlldyA9IEZyYW1lVGVzdEhl
bHBlcnM6OmNyZWF0ZVdlYlZpZXdBbmRMb2FkKG1fYmFzZVVSTCArICJmaW5kX2luX3BhZ2UuaHRt
bCIsIHRydWUsICZjbGllbnQpOworICAgIG1fd2ViVmlldy0+cmVzaXplKFdlYlNpemUoNjQwLCA0
ODApKTsKKyAgICBtX3dlYlZpZXctPmxheW91dCgpOworICAgIHJ1blBlbmRpbmdUYXNrcygpOwog
CiAgICAgc3RhdGljIGNvbnN0IGNoYXIqIGtGaW5kU3RyaW5nID0gInJlc3VsdCI7CiAgICAgc3Rh
dGljIGNvbnN0IGludCBrRmluZElkZW50aWZpZXIgPSAxMjM0NTsKIAogICAgIFdlYkZpbmRPcHRp
b25zIG9wdGlvbnM7CiAgICAgV2ViU3RyaW5nIHNlYXJjaFRleHQgPSBXZWJTdHJpbmc6OmZyb21V
VEY4KGtGaW5kU3RyaW5nKTsKLSAgICBXZWJGcmFtZUltcGwqIG1haW5GcmFtZSA9IHN0YXRpY19j
YXN0PFdlYkZyYW1lSW1wbCo+KHdlYlZpZXctPm1haW5GcmFtZSgpKTsKKyAgICBXZWJGcmFtZUlt
cGwqIG1haW5GcmFtZSA9IHN0YXRpY19jYXN0PFdlYkZyYW1lSW1wbCo+KG1fd2ViVmlldy0+bWFp
bkZyYW1lKCkpOwogICAgIFdlYkZyYW1lSW1wbCogc2Vjb25kRnJhbWUgPSBzdGF0aWNfY2FzdDxX
ZWJGcmFtZUltcGwqPihtYWluRnJhbWUtPnRyYXZlcnNlTmV4dChmYWxzZSkpOwogICAgIFJlZlB0
cjxXZWJDb3JlOjpGcmFtZT4gaG9sZFNlY29uZEZyYW1lID0gc2Vjb25kRnJhbWUtPmZyYW1lKCk7
CiAKICAgICBmb3IgKFdlYkZyYW1lKiBmcmFtZSA9IG1haW5GcmFtZTsgZnJhbWU7IGZyYW1lID0g
ZnJhbWUtPnRyYXZlcnNlTmV4dChmYWxzZSkpCiAgICAgICAgIEVYUEVDVF9UUlVFKGZyYW1lLT5m
aW5kKGtGaW5kSWRlbnRpZmllciwgc2VhcmNoVGV4dCwgb3B0aW9ucywgZmFsc2UsIDApKTsKIAot
ICAgIHdlYmtpdF9zdXBwb3J0OjpSdW5BbGxQZW5kaW5nTWVzc2FnZXMoKTsKKyAgICBydW5QZW5k
aW5nVGFza3MoKTsKICAgICBFWFBFQ1RfRkFMU0UoY2xpZW50LmZpbmRSZXN1bHRzQXJlUmVhZHko
KSk7CiAKICAgICAvLyBEZXRhY2ggdGhlIGZyYW1lIGJldHdlZW4gZmluZGluZyBhbmQgc2NvcGlu
Zy4KQEAgLTE2MDMsMTEgKzE2MjUsMTMgQEAgVEVTVF9GKFdlYkZyYW1lVGVzdCwgRmluZERldGFj
aEZyYW1lQmVmb3JlU2NvcGVTdHJpbmdzKQogICAgIGZvciAoV2ViRnJhbWUqIGZyYW1lID0gbWFp
bkZyYW1lOyBmcmFtZTsgZnJhbWUgPSBmcmFtZS0+dHJhdmVyc2VOZXh0KGZhbHNlKSkKICAgICAg
ICAgZnJhbWUtPnNjb3BlU3RyaW5nTWF0Y2hlcyhrRmluZElkZW50aWZpZXIsIHNlYXJjaFRleHQs
IG9wdGlvbnMsIHRydWUpOwogCi0gICAgd2Via2l0X3N1cHBvcnQ6OlJ1bkFsbFBlbmRpbmdNZXNz
YWdlcygpOworICAgIHJ1blBlbmRpbmdUYXNrcygpOwogICAgIEVYUEVDVF9UUlVFKGNsaWVudC5m
aW5kUmVzdWx0c0FyZVJlYWR5KCkpOwogCiAgICAgaG9sZFNlY29uZEZyYW1lLnJlbGVhc2UoKTsK
LSAgICB3ZWJWaWV3LT5jbG9zZSgpOworCisgICAgbV93ZWJWaWV3LT5jbG9zZSgpOworICAgIG1f
d2ViVmlldyA9IDA7CiB9CiAKIFRFU1RfRihXZWJGcmFtZVRlc3QsIEZpbmREZXRhY2hGcmFtZVdo
aWxlU2NvcGluZ1N0cmluZ3MpCkBAIC0xNjE2LDI0ICsxNjQwLDI0IEBAIFRFU1RfRihXZWJGcmFt
ZVRlc3QsIEZpbmREZXRhY2hGcmFtZVdoaWxlU2NvcGluZ1N0cmluZ3MpCiAgICAgcmVnaXN0ZXJN
b2NrZWRIdHRwVVJMTG9hZCgiZmluZF9pbl9wYWdlX2ZyYW1lLmh0bWwiKTsKIAogICAgIEZpbmRV
cGRhdGVXZWJGcmFtZUNsaWVudCBjbGllbnQ7Ci0gICAgV2ViVmlldyogd2ViVmlldyA9IEZyYW1l
VGVzdEhlbHBlcnM6OmNyZWF0ZVdlYlZpZXdBbmRMb2FkKG1fYmFzZVVSTCArICJmaW5kX2luX3Bh
Z2UuaHRtbCIsIHRydWUsICZjbGllbnQpOwotICAgIHdlYlZpZXctPnJlc2l6ZShXZWJTaXplKDY0
MCwgNDgwKSk7Ci0gICAgd2ViVmlldy0+bGF5b3V0KCk7Ci0gICAgd2Via2l0X3N1cHBvcnQ6OlJ1
bkFsbFBlbmRpbmdNZXNzYWdlcygpOworICAgIG1fd2ViVmlldyA9IEZyYW1lVGVzdEhlbHBlcnM6
OmNyZWF0ZVdlYlZpZXdBbmRMb2FkKG1fYmFzZVVSTCArICJmaW5kX2luX3BhZ2UuaHRtbCIsIHRy
dWUsICZjbGllbnQpOworICAgIG1fd2ViVmlldy0+cmVzaXplKFdlYlNpemUoNjQwLCA0ODApKTsK
KyAgICBtX3dlYlZpZXctPmxheW91dCgpOworICAgIHJ1blBlbmRpbmdUYXNrcygpOwogCiAgICAg
c3RhdGljIGNvbnN0IGNoYXIqIGtGaW5kU3RyaW5nID0gInJlc3VsdCI7CiAgICAgc3RhdGljIGNv
bnN0IGludCBrRmluZElkZW50aWZpZXIgPSAxMjM0NTsKIAogICAgIFdlYkZpbmRPcHRpb25zIG9w
dGlvbnM7CiAgICAgV2ViU3RyaW5nIHNlYXJjaFRleHQgPSBXZWJTdHJpbmc6OmZyb21VVEY4KGtG
aW5kU3RyaW5nKTsKLSAgICBXZWJGcmFtZUltcGwqIG1haW5GcmFtZSA9IHN0YXRpY19jYXN0PFdl
YkZyYW1lSW1wbCo+KHdlYlZpZXctPm1haW5GcmFtZSgpKTsKKyAgICBXZWJGcmFtZUltcGwqIG1h
aW5GcmFtZSA9IHN0YXRpY19jYXN0PFdlYkZyYW1lSW1wbCo+KG1fd2ViVmlldy0+bWFpbkZyYW1l
KCkpOwogICAgIFdlYkZyYW1lSW1wbCogc2Vjb25kRnJhbWUgPSBzdGF0aWNfY2FzdDxXZWJGcmFt
ZUltcGwqPihtYWluRnJhbWUtPnRyYXZlcnNlTmV4dChmYWxzZSkpOwogICAgIFJlZlB0cjxXZWJD
b3JlOjpGcmFtZT4gaG9sZFNlY29uZEZyYW1lID0gc2Vjb25kRnJhbWUtPmZyYW1lKCk7CiAKICAg
ICBmb3IgKFdlYkZyYW1lKiBmcmFtZSA9IG1haW5GcmFtZTsgZnJhbWU7IGZyYW1lID0gZnJhbWUt
PnRyYXZlcnNlTmV4dChmYWxzZSkpCiAgICAgICAgIEVYUEVDVF9UUlVFKGZyYW1lLT5maW5kKGtG
aW5kSWRlbnRpZmllciwgc2VhcmNoVGV4dCwgb3B0aW9ucywgZmFsc2UsIDApKTsKIAotICAgIHdl
YmtpdF9zdXBwb3J0OjpSdW5BbGxQZW5kaW5nTWVzc2FnZXMoKTsKKyAgICBydW5QZW5kaW5nVGFz
a3MoKTsKICAgICBFWFBFQ1RfRkFMU0UoY2xpZW50LmZpbmRSZXN1bHRzQXJlUmVhZHkoKSk7CiAK
ICAgICBtYWluRnJhbWUtPnJlc2V0TWF0Y2hDb3VudCgpOwpAQCAtMTY0NCwxMSArMTY2OCwxMyBA
QCBURVNUX0YoV2ViRnJhbWVUZXN0LCBGaW5kRGV0YWNoRnJhbWVXaGlsZVNjb3BpbmdTdHJpbmdz
KQogICAgIC8vIFRoZSBmaXJzdCBzY29wZVN0cmluZ01hdGNoZXMgd2lsbCBoYXZlIHJlc2V0IHRo
ZSBzdGF0ZS4gRGV0YWNoIGJlZm9yZSBpdCBhY3R1YWxseSBzY29wZXMuCiAgICAgRVhQRUNUX1RS
VUUobWFpbkZyYW1lLT5kb2N1bWVudCgpLmdldEVsZW1lbnRCeUlkKCJmcmFtZSIpLnJlbW92ZSgp
KTsKIAotICAgIHdlYmtpdF9zdXBwb3J0OjpSdW5BbGxQZW5kaW5nTWVzc2FnZXMoKTsKKyAgICBy
dW5QZW5kaW5nVGFza3MoKTsKICAgICBFWFBFQ1RfVFJVRShjbGllbnQuZmluZFJlc3VsdHNBcmVS
ZWFkeSgpKTsKIAogICAgIGhvbGRTZWNvbmRGcmFtZS5yZWxlYXNlKCk7Ci0gICAgd2ViVmlldy0+
Y2xvc2UoKTsKKworICAgIG1fd2ViVmlldy0+Y2xvc2UoKTsKKyAgICBtX3dlYlZpZXcgPSAwOwog
fQogCiBzdGF0aWMgV2ViVmlldyogY3JlYXRlV2ViVmlld0ZvclRleHRTZWxlY3Rpb24oY29uc3Qg
c3RkOjpzdHJpbmcmIHVybCkKQEAgLTE2ODYsNyArMTcxMiw2IEBAIHN0YXRpYyBzdGQ6OnN0cmlu
ZyBzZWxlY3Rpb25Bc1N0cmluZyhXZWJGcmFtZSogZnJhbWUpCiAKIFRFU1RfRihXZWJGcmFtZVRl
c3QsIFNlbGVjdFJhbmdlKQogewotICAgIFdlYlZpZXcqIHdlYlZpZXc7CiAgICAgV2ViRnJhbWUq
IGZyYW1lOwogICAgIFdlYlJlY3Qgc3RhcnRXZWJSZWN0OwogICAgIFdlYlJlY3QgZW5kV2ViUmVj
dDsKQEAgLTE2OTYsNjIgKzE3MjEsNjcgQEAgVEVTVF9GKFdlYkZyYW1lVGVzdCwgU2VsZWN0UmFu
Z2UpCiAgICAgcmVnaXN0ZXJNb2NrZWRIdHRwVVJMTG9hZCgic2VsZWN0X3JhbmdlX2lmcmFtZS5o
dG1sIik7CiAgICAgcmVnaXN0ZXJNb2NrZWRIdHRwVVJMTG9hZCgic2VsZWN0X3JhbmdlX2VkaXRh
YmxlLmh0bWwiKTsKIAotICAgIHdlYlZpZXcgPSBjcmVhdGVXZWJWaWV3Rm9yVGV4dFNlbGVjdGlv
bihtX2Jhc2VVUkwgKyAic2VsZWN0X3JhbmdlX2Jhc2ljLmh0bWwiKTsKLSAgICBmcmFtZSA9IHdl
YlZpZXctPm1haW5GcmFtZSgpOworICAgIG1fd2ViVmlldyA9IGNyZWF0ZVdlYlZpZXdGb3JUZXh0
U2VsZWN0aW9uKG1fYmFzZVVSTCArICJzZWxlY3RfcmFuZ2VfYmFzaWMuaHRtbCIpOworICAgIGZy
YW1lID0gbV93ZWJWaWV3LT5tYWluRnJhbWUoKTsKICAgICBFWFBFQ1RfRVEoIlNvbWUgdGVzdCB0
ZXh0IGZvciB0ZXN0aW5nLiIsIHNlbGVjdGlvbkFzU3RyaW5nKGZyYW1lKSk7Ci0gICAgd2ViVmll
dy0+c2VsZWN0aW9uQm91bmRzKHN0YXJ0V2ViUmVjdCwgZW5kV2ViUmVjdCk7CisgICAgbV93ZWJW
aWV3LT5zZWxlY3Rpb25Cb3VuZHMoc3RhcnRXZWJSZWN0LCBlbmRXZWJSZWN0KTsKICAgICBmcmFt
ZS0+ZXhlY3V0ZUNvbW1hbmQoV2ViU3RyaW5nOjpmcm9tVVRGOCgiVW5zZWxlY3QiKSk7CiAgICAg
RVhQRUNUX0VRKCIiLCBzZWxlY3Rpb25Bc1N0cmluZyhmcmFtZSkpOwogICAgIGZyYW1lLT5zZWxl
Y3RSYW5nZSh0b3BMZWZ0KHN0YXJ0V2ViUmVjdCksIGJvdHRvbVJpZ2h0TWludXNPbmUoZW5kV2Vi
UmVjdCkpOwogICAgIEVYUEVDVF9FUSgiU29tZSB0ZXN0IHRleHQgZm9yIHRlc3RpbmcuIiwgc2Vs
ZWN0aW9uQXNTdHJpbmcoZnJhbWUpKTsKLSAgICB3ZWJWaWV3LT5jbG9zZSgpOworICAgIG1fd2Vi
Vmlldy0+Y2xvc2UoKTsKKyAgICBtX3dlYlZpZXcgPSAwOwogCi0gICAgd2ViVmlldyA9IGNyZWF0
ZVdlYlZpZXdGb3JUZXh0U2VsZWN0aW9uKG1fYmFzZVVSTCArICJzZWxlY3RfcmFuZ2Vfc2Nyb2xs
Lmh0bWwiKTsKLSAgICBmcmFtZSA9IHdlYlZpZXctPm1haW5GcmFtZSgpOworICAgIG1fd2ViVmll
dyA9IGNyZWF0ZVdlYlZpZXdGb3JUZXh0U2VsZWN0aW9uKG1fYmFzZVVSTCArICJzZWxlY3RfcmFu
Z2Vfc2Nyb2xsLmh0bWwiKTsKKyAgICBmcmFtZSA9IG1fd2ViVmlldy0+bWFpbkZyYW1lKCk7CiAg
ICAgRVhQRUNUX0VRKCJTb21lIG9mZnNjcmVlbiB0ZXN0IHRleHQgZm9yIHRlc3RpbmcuIiwgc2Vs
ZWN0aW9uQXNTdHJpbmcoZnJhbWUpKTsKLSAgICB3ZWJWaWV3LT5zZWxlY3Rpb25Cb3VuZHMoc3Rh
cnRXZWJSZWN0LCBlbmRXZWJSZWN0KTsKKyAgICBtX3dlYlZpZXctPnNlbGVjdGlvbkJvdW5kcyhz
dGFydFdlYlJlY3QsIGVuZFdlYlJlY3QpOwogICAgIGZyYW1lLT5leGVjdXRlQ29tbWFuZChXZWJT
dHJpbmc6OmZyb21VVEY4KCJVbnNlbGVjdCIpKTsKICAgICBFWFBFQ1RfRVEoIiIsIHNlbGVjdGlv
bkFzU3RyaW5nKGZyYW1lKSk7CiAgICAgZnJhbWUtPnNlbGVjdFJhbmdlKHRvcExlZnQoc3RhcnRX
ZWJSZWN0KSwgYm90dG9tUmlnaHRNaW51c09uZShlbmRXZWJSZWN0KSk7CiAgICAgRVhQRUNUX0VR
KCJTb21lIG9mZnNjcmVlbiB0ZXN0IHRleHQgZm9yIHRlc3RpbmcuIiwgc2VsZWN0aW9uQXNTdHJp
bmcoZnJhbWUpKTsKLSAgICB3ZWJWaWV3LT5jbG9zZSgpOworICAgIG1fd2ViVmlldy0+Y2xvc2Uo
KTsKKyAgICBtX3dlYlZpZXcgPSAwOwogCi0gICAgd2ViVmlldyA9IGNyZWF0ZVdlYlZpZXdGb3JU
ZXh0U2VsZWN0aW9uKG1fYmFzZVVSTCArICJzZWxlY3RfcmFuZ2VfaWZyYW1lLmh0bWwiKTsKLSAg
ICBmcmFtZSA9IHdlYlZpZXctPm1haW5GcmFtZSgpOworICAgIG1fd2ViVmlldyA9IGNyZWF0ZVdl
YlZpZXdGb3JUZXh0U2VsZWN0aW9uKG1fYmFzZVVSTCArICJzZWxlY3RfcmFuZ2VfaWZyYW1lLmh0
bWwiKTsKKyAgICBmcmFtZSA9IG1fd2ViVmlldy0+bWFpbkZyYW1lKCk7CiAgICAgV2ViRnJhbWUq
IHN1YmZyYW1lID0gZnJhbWUtPmZpbmRDaGlsZEJ5RXhwcmVzc2lvbihXZWJTdHJpbmc6OmZyb21V
VEY4KCIvaHRtbC9ib2R5L2lmcmFtZSIpKTsKICAgICBFWFBFQ1RfRVEoIlNvbWUgdGVzdCB0ZXh0
IGZvciB0ZXN0aW5nLiIsIHNlbGVjdGlvbkFzU3RyaW5nKHN1YmZyYW1lKSk7Ci0gICAgd2ViVmll
dy0+c2VsZWN0aW9uQm91bmRzKHN0YXJ0V2ViUmVjdCwgZW5kV2ViUmVjdCk7CisgICAgbV93ZWJW
aWV3LT5zZWxlY3Rpb25Cb3VuZHMoc3RhcnRXZWJSZWN0LCBlbmRXZWJSZWN0KTsKICAgICBzdWJm
cmFtZS0+ZXhlY3V0ZUNvbW1hbmQoV2ViU3RyaW5nOjpmcm9tVVRGOCgiVW5zZWxlY3QiKSk7CiAg
ICAgRVhQRUNUX0VRKCIiLCBzZWxlY3Rpb25Bc1N0cmluZyhzdWJmcmFtZSkpOwogICAgIHN1YmZy
YW1lLT5zZWxlY3RSYW5nZSh0b3BMZWZ0KHN0YXJ0V2ViUmVjdCksIGJvdHRvbVJpZ2h0TWludXNP
bmUoZW5kV2ViUmVjdCkpOwogICAgIEVYUEVDVF9FUSgiU29tZSB0ZXN0IHRleHQgZm9yIHRlc3Rp
bmcuIiwgc2VsZWN0aW9uQXNTdHJpbmcoc3ViZnJhbWUpKTsKLSAgICB3ZWJWaWV3LT5jbG9zZSgp
OworICAgIG1fd2ViVmlldy0+Y2xvc2UoKTsKKyAgICBtX3dlYlZpZXcgPSAwOwogCiAgICAgLy8g
U2VsZWN0IHRoZSBtaWRkbGUgb2YgYW4gZWRpdGFibGUgZWxlbWVudCwgdGhlbiB0cnkgdG8gZXh0
ZW5kIHRoZSBzZWxlY3Rpb24gdG8gdGhlIHRvcCBvZiB0aGUgZG9jdW1lbnQuCiAgICAgLy8gVGhl
IHNlbGVjdGlvbiByYW5nZSBzaG91bGQgYmUgY2xpcHBlZCB0byB0aGUgYm91bmRzIG9mIHRoZSBl
ZGl0YWJsZSBlbGVtZW50LgotICAgIHdlYlZpZXcgPSBjcmVhdGVXZWJWaWV3Rm9yVGV4dFNlbGVj
dGlvbihtX2Jhc2VVUkwgKyAic2VsZWN0X3JhbmdlX2VkaXRhYmxlLmh0bWwiKTsKLSAgICBmcmFt
ZSA9IHdlYlZpZXctPm1haW5GcmFtZSgpOworICAgIG1fd2ViVmlldyA9IGNyZWF0ZVdlYlZpZXdG
b3JUZXh0U2VsZWN0aW9uKG1fYmFzZVVSTCArICJzZWxlY3RfcmFuZ2VfZWRpdGFibGUuaHRtbCIp
OworICAgIGZyYW1lID0gbV93ZWJWaWV3LT5tYWluRnJhbWUoKTsKICAgICBFWFBFQ1RfRVEoIlRo
aXMgdGV4dCBpcyBpbml0aWFsbHkgc2VsZWN0ZWQuIiwgc2VsZWN0aW9uQXNTdHJpbmcoZnJhbWUp
KTsKLSAgICB3ZWJWaWV3LT5zZWxlY3Rpb25Cb3VuZHMoc3RhcnRXZWJSZWN0LCBlbmRXZWJSZWN0
KTsKKyAgICBtX3dlYlZpZXctPnNlbGVjdGlvbkJvdW5kcyhzdGFydFdlYlJlY3QsIGVuZFdlYlJl
Y3QpOwogICAgIGZyYW1lLT5zZWxlY3RSYW5nZShib3R0b21SaWdodE1pbnVzT25lKGVuZFdlYlJl
Y3QpLCBXZWJQb2ludCgwLCAwKSk7CiAgICAgRVhQRUNUX0VRKCIxNi1jaGFyIGhlYWRlci4gVGhp
cyB0ZXh0IGlzIGluaXRpYWxseSBzZWxlY3RlZC4iLCBzZWxlY3Rpb25Bc1N0cmluZyhmcmFtZSkp
OwotICAgIHdlYlZpZXctPmNsb3NlKCk7CisgICAgbV93ZWJWaWV3LT5jbG9zZSgpOworICAgIG1f
d2ViVmlldyA9IDA7CiAKICAgICAvLyBBcyBhYm92ZSwgYnV0IGV4dGVuZGluZyB0aGUgc2VsZWN0
aW9uIHRvIHRoZSBib3R0b20gb2YgdGhlIGRvY3VtZW50LgotICAgIHdlYlZpZXcgPSBjcmVhdGVX
ZWJWaWV3Rm9yVGV4dFNlbGVjdGlvbihtX2Jhc2VVUkwgKyAic2VsZWN0X3JhbmdlX2VkaXRhYmxl
Lmh0bWwiKTsKLSAgICBmcmFtZSA9IHdlYlZpZXctPm1haW5GcmFtZSgpOworICAgIG1fd2ViVmll
dyA9IGNyZWF0ZVdlYlZpZXdGb3JUZXh0U2VsZWN0aW9uKG1fYmFzZVVSTCArICJzZWxlY3RfcmFu
Z2VfZWRpdGFibGUuaHRtbCIpOworICAgIGZyYW1lID0gbV93ZWJWaWV3LT5tYWluRnJhbWUoKTsK
ICAgICBFWFBFQ1RfRVEoIlRoaXMgdGV4dCBpcyBpbml0aWFsbHkgc2VsZWN0ZWQuIiwgc2VsZWN0
aW9uQXNTdHJpbmcoZnJhbWUpKTsKLSAgICB3ZWJWaWV3LT5zZWxlY3Rpb25Cb3VuZHMoc3RhcnRX
ZWJSZWN0LCBlbmRXZWJSZWN0KTsKKyAgICBtX3dlYlZpZXctPnNlbGVjdGlvbkJvdW5kcyhzdGFy
dFdlYlJlY3QsIGVuZFdlYlJlY3QpOwogICAgIGZyYW1lLT5zZWxlY3RSYW5nZSh0b3BMZWZ0KHN0
YXJ0V2ViUmVjdCksIFdlYlBvaW50KDY0MCwgNDgwKSk7CiAgICAgRVhQRUNUX0VRKCJUaGlzIHRl
eHQgaXMgaW5pdGlhbGx5IHNlbGVjdGVkLiAxNi1jaGFyIGZvb3Rlci4iLCBzZWxlY3Rpb25Bc1N0
cmluZyhmcmFtZSkpOwotICAgIHdlYlZpZXctPmNsb3NlKCk7CisgICAgbV93ZWJWaWV3LT5jbG9z
ZSgpOworICAgIG1fd2ViVmlldyA9IDA7CiB9CiAKIFRFU1RfRihXZWJGcmFtZVRlc3QsIFNlbGVj
dFJhbmdlQ2FuTW92ZVNlbGVjdGlvblN0YXJ0KQogewogICAgIHJlZ2lzdGVyTW9ja2VkSHR0cFVS
TExvYWQoInRleHRfc2VsZWN0aW9uLmh0bWwiKTsKLSAgICBXZWJWaWV3KiB3ZWJWaWV3ID0gY3Jl
YXRlV2ViVmlld0ZvclRleHRTZWxlY3Rpb24obV9iYXNlVVJMICsgInRleHRfc2VsZWN0aW9uLmh0
bWwiKTsKLSAgICBXZWJGcmFtZSogZnJhbWUgPSB3ZWJWaWV3LT5tYWluRnJhbWUoKTsKKyAgICBt
X3dlYlZpZXcgPSBjcmVhdGVXZWJWaWV3Rm9yVGV4dFNlbGVjdGlvbihtX2Jhc2VVUkwgKyAidGV4
dF9zZWxlY3Rpb24uaHRtbCIpOworICAgIFdlYkZyYW1lKiBmcmFtZSA9IG1fd2ViVmlldy0+bWFp
bkZyYW1lKCk7CiAKICAgICAvLyBTZWxlY3Qgc2Vjb25kIHNwYW4uIFdlIGNhbiBtb3ZlIHRoZSBz
dGFydCB0byBpbmNsdWRlIHRoZSBmaXJzdCBzcGFuLgogICAgIGZyYW1lLT5leGVjdXRlU2NyaXB0
KFdlYlNjcmlwdFNvdXJjZSgic2VsZWN0RWxlbWVudCgnaGVhZGVyXzInKTsiKSk7CkBAIC0xNzkw
LDE1ICsxODIwLDEzIEBAIFRFU1RfRihXZWJGcmFtZVRlc3QsIFNlbGVjdFJhbmdlQ2FuTW92ZVNl
bGVjdGlvblN0YXJ0KQogICAgIEVYUEVDVF9FUSgiRWRpdGFibGUgMi4iLCBzZWxlY3Rpb25Bc1N0
cmluZyhmcmFtZSkpOwogICAgIGZyYW1lLT5zZWxlY3RSYW5nZShib3R0b21SaWdodE1pbnVzT25l
KGVsZW1lbnRCb3VuZHMoZnJhbWUsICJlZGl0YWJsZV8yIikpLCB0b3BMZWZ0KGVsZW1lbnRCb3Vu
ZHMoZnJhbWUsICJoZWFkZXJfMiIpKSk7CiAgICAgRVhQRUNUX0VRKCJbIEVkaXRhYmxlIDEuIEVk
aXRhYmxlIDIuIiwgc2VsZWN0aW9uQXNTdHJpbmcoZnJhbWUpKTsKLQotICAgIHdlYlZpZXctPmNs
b3NlKCk7CiB9CiAKIFRFU1RfRihXZWJGcmFtZVRlc3QsIFNlbGVjdFJhbmdlQ2FuTW92ZVNlbGVj
dGlvbkVuZCkKIHsKICAgICByZWdpc3Rlck1vY2tlZEh0dHBVUkxMb2FkKCJ0ZXh0X3NlbGVjdGlv
bi5odG1sIik7Ci0gICAgV2ViVmlldyogd2ViVmlldyA9IGNyZWF0ZVdlYlZpZXdGb3JUZXh0U2Vs
ZWN0aW9uKG1fYmFzZVVSTCArICJ0ZXh0X3NlbGVjdGlvbi5odG1sIik7Ci0gICAgV2ViRnJhbWUq
IGZyYW1lID0gd2ViVmlldy0+bWFpbkZyYW1lKCk7CisgICAgbV93ZWJWaWV3ID0gY3JlYXRlV2Vi
Vmlld0ZvclRleHRTZWxlY3Rpb24obV9iYXNlVVJMICsgInRleHRfc2VsZWN0aW9uLmh0bWwiKTsK
KyAgICBXZWJGcmFtZSogZnJhbWUgPSBtX3dlYlZpZXctPm1haW5GcmFtZSgpOwogCiAgICAgLy8g
U2VsZWN0IGZpcnN0IHNwYW4uIFdlIGNhbiBtb3ZlIHRoZSBlbmQgdG8gaW5jbHVkZSB0aGUgc2Vj
b25kIHNwYW4uCiAgICAgZnJhbWUtPmV4ZWN1dGVTY3JpcHQoV2ViU2NyaXB0U291cmNlKCJzZWxl
Y3RFbGVtZW50KCdoZWFkZXJfMScpOyIpKTsKQEAgLTE4MzcsMTkgKzE4NjUsMTYgQEAgVEVTVF9G
KFdlYkZyYW1lVGVzdCwgU2VsZWN0UmFuZ2VDYW5Nb3ZlU2VsZWN0aW9uRW5kKQogICAgIEVYUEVD
VF9FUSgiRWRpdGFibGUgMS4iLCBzZWxlY3Rpb25Bc1N0cmluZyhmcmFtZSkpOwogICAgIGZyYW1l
LT5zZWxlY3RSYW5nZSh0b3BMZWZ0KGVsZW1lbnRCb3VuZHMoZnJhbWUsICJlZGl0YWJsZV8xIikp
LCBib3R0b21SaWdodE1pbnVzT25lKGVsZW1lbnRCb3VuZHMoZnJhbWUsICJmb290ZXJfMSIpKSk7
CiAgICAgRVhQRUNUX0VRKCJFZGl0YWJsZSAxLiBFZGl0YWJsZSAyLiBdIiwgc2VsZWN0aW9uQXNT
dHJpbmcoZnJhbWUpKTsKLQotICAgIHdlYlZpZXctPmNsb3NlKCk7CiB9CiAKICNpZiBPUyhBTkRS
T0lEKQogVEVTVF9GKFdlYkZyYW1lVGVzdCwgTW92ZUNhcmV0U3RheXNIb3Jpem9udGFsbHlBbGln
bmVkV2hlbk1vdmVkKQogewotICAgIFdlYlZpZXcqIHdlYlZpZXc7CiAgICAgV2ViRnJhbWVJbXBs
KiBmcmFtZTsKICAgICByZWdpc3Rlck1vY2tlZEh0dHBVUkxMb2FkKCJtb3ZlX2NhcmV0Lmh0bWwi
KTsKIAotICAgIHdlYlZpZXcgPSBjcmVhdGVXZWJWaWV3Rm9yVGV4dFNlbGVjdGlvbihtX2Jhc2VV
UkwgKyAibW92ZV9jYXJldC5odG1sIik7Ci0gICAgZnJhbWUgPSAoV2ViRnJhbWVJbXBsKil3ZWJW
aWV3LT5tYWluRnJhbWUoKTsKKyAgICBtX3dlYlZpZXcgPSBjcmVhdGVXZWJWaWV3Rm9yVGV4dFNl
bGVjdGlvbihtX2Jhc2VVUkwgKyAibW92ZV9jYXJldC5odG1sIik7CisgICAgZnJhbWUgPSAoV2Vi
RnJhbWVJbXBsKiltX3dlYlZpZXctPm1haW5GcmFtZSgpOwogCiAgICAgV2ViUmVjdCBpbml0aWFs
U3RhcnRSZWN0OwogICAgIFdlYlJlY3QgaW5pdGlhbEVuZFJlY3Q7CkBAIC0xODU3LDIyICsxODgy
LDIwIEBAIFRFU1RfRihXZWJGcmFtZVRlc3QsIE1vdmVDYXJldFN0YXlzSG9yaXpvbnRhbGx5QWxp
Z25lZFdoZW5Nb3ZlZCkKICAgICBXZWJSZWN0IGVuZFJlY3Q7CiAKICAgICBmcmFtZS0+ZXhlY3V0
ZVNjcmlwdChXZWJTY3JpcHRTb3VyY2UoInNlbGVjdCgpOyIpKTsKLSAgICB3ZWJWaWV3LT5zZWxl
Y3Rpb25Cb3VuZHMoaW5pdGlhbFN0YXJ0UmVjdCwgaW5pdGlhbEVuZFJlY3QpOworICAgIG1fd2Vi
Vmlldy0+c2VsZWN0aW9uQm91bmRzKGluaXRpYWxTdGFydFJlY3QsIGluaXRpYWxFbmRSZWN0KTsK
ICAgICBXZWJQb2ludCBtb3ZlVG8odG9wTGVmdChpbml0aWFsU3RhcnRSZWN0KSk7CiAKICAgICBt
b3ZlVG8ueSArPSA0MDsKICAgICBmcmFtZS0+bW92ZUNhcmV0U2VsZWN0aW9uVG93YXJkc1dpbmRv
d1BvaW50KG1vdmVUbyk7Ci0gICAgd2ViVmlldy0+c2VsZWN0aW9uQm91bmRzKHN0YXJ0UmVjdCwg
ZW5kUmVjdCk7CisgICAgbV93ZWJWaWV3LT5zZWxlY3Rpb25Cb3VuZHMoc3RhcnRSZWN0LCBlbmRS
ZWN0KTsKICAgICBFWFBFQ1RfRVEoc3RhcnRSZWN0LCBpbml0aWFsU3RhcnRSZWN0KTsKICAgICBF
WFBFQ1RfRVEoZW5kUmVjdCwgaW5pdGlhbEVuZFJlY3QpOwogCiAgICAgbW92ZVRvLnkgLT0gODA7
CiAgICAgZnJhbWUtPm1vdmVDYXJldFNlbGVjdGlvblRvd2FyZHNXaW5kb3dQb2ludChtb3ZlVG8p
OwotICAgIHdlYlZpZXctPnNlbGVjdGlvbkJvdW5kcyhzdGFydFJlY3QsIGVuZFJlY3QpOworICAg
IG1fd2ViVmlldy0+c2VsZWN0aW9uQm91bmRzKHN0YXJ0UmVjdCwgZW5kUmVjdCk7CiAgICAgRVhQ
RUNUX0VRKHN0YXJ0UmVjdCwgaW5pdGlhbFN0YXJ0UmVjdCk7CiAgICAgRVhQRUNUX0VRKGVuZFJl
Y3QsIGluaXRpYWxFbmRSZWN0KTsKLQotICAgIHdlYlZpZXctPmNsb3NlKCk7CiB9CiAjZW5kaWYK
IApAQCAtMTkxMCwyMyArMTkzMywyMyBAQCBURVNUX0YoV2ViRnJhbWVUZXN0LCBEaXNhbWJpZ3Vh
dGlvblBvcHVwKQogCiAgICAgLy8gTWFrZSBzdXJlIHdlIGluaXRpYWxpemUgdG8gbWluaW11bSBz
Y2FsZSwgZXZlbiBpZiB0aGUgd2luZG93IHNpemUKICAgICAvLyBvbmx5IGJlY29tZXMgYXZhaWxh
YmxlIGFmdGVyIHRoZSBsb2FkIGJlZ2lucy4KLSAgICBXZWJWaWV3SW1wbCogd2ViVmlld0ltcGwg
PSBzdGF0aWNfY2FzdDxXZWJWaWV3SW1wbCo+KEZyYW1lVGVzdEhlbHBlcnM6OmNyZWF0ZVdlYlZp
ZXdBbmRMb2FkKG1fYmFzZVVSTCArIGh0bWxGaWxlLCB0cnVlLCAwLCAmY2xpZW50KSk7Ci0gICAg
d2ViVmlld0ltcGwtPnNldHRpbmdzKCktPnNldEFwcGx5RGV2aWNlU2NhbGVGYWN0b3JJbkNvbXBv
c2l0b3IodHJ1ZSk7Ci0gICAgd2ViVmlld0ltcGwtPnNldHRpbmdzKCktPnNldEFwcGx5UGFnZVNj
YWxlRmFjdG9ySW5Db21wb3NpdG9yKHRydWUpOwotICAgIHdlYlZpZXdJbXBsLT5yZXNpemUoV2Vi
U2l6ZSgxMDAwLCAxMDAwKSk7Ci0gICAgd2ViVmlld0ltcGwtPmxheW91dCgpOworICAgIG1fd2Vi
VmlldyA9IEZyYW1lVGVzdEhlbHBlcnM6OmNyZWF0ZVdlYlZpZXdBbmRMb2FkKG1fYmFzZVVSTCAr
IGh0bWxGaWxlLCB0cnVlLCAwLCAmY2xpZW50KTsKKyAgICBtX3dlYlZpZXctPnNldHRpbmdzKCkt
PnNldEFwcGx5RGV2aWNlU2NhbGVGYWN0b3JJbkNvbXBvc2l0b3IodHJ1ZSk7CisgICAgbV93ZWJW
aWV3LT5zZXR0aW5ncygpLT5zZXRBcHBseVBhZ2VTY2FsZUZhY3RvckluQ29tcG9zaXRvcih0cnVl
KTsKKyAgICBtX3dlYlZpZXctPnJlc2l6ZShXZWJTaXplKDEwMDAsIDEwMDApKTsKKyAgICBtX3dl
YlZpZXctPmxheW91dCgpOwogCiAgICAgY2xpZW50LnJlc2V0VHJpZ2dlcmVkKCk7Ci0gICAgd2Vi
Vmlld0ltcGwtPmhhbmRsZUlucHV0RXZlbnQoZmF0VGFwKDAsIDApKTsKKyAgICBtX3dlYlZpZXct
PmhhbmRsZUlucHV0RXZlbnQoZmF0VGFwKDAsIDApKTsKICAgICBFWFBFQ1RfRkFMU0UoY2xpZW50
LnRyaWdnZXJlZCgpKTsKIAogICAgIGNsaWVudC5yZXNldFRyaWdnZXJlZCgpOwotICAgIHdlYlZp
ZXdJbXBsLT5oYW5kbGVJbnB1dEV2ZW50KGZhdFRhcCgyMDAsIDExNSkpOworICAgIG1fd2ViVmll
dy0+aGFuZGxlSW5wdXRFdmVudChmYXRUYXAoMjAwLCAxMTUpKTsKICAgICBFWFBFQ1RfRkFMU0Uo
Y2xpZW50LnRyaWdnZXJlZCgpKTsKIAogICAgIGZvciAoaW50IGkgPSAwOyBpIDw9IDQ2OyBpKysp
IHsKICAgICAgICAgY2xpZW50LnJlc2V0VHJpZ2dlcmVkKCk7Ci0gICAgICAgIHdlYlZpZXdJbXBs
LT5oYW5kbGVJbnB1dEV2ZW50KGZhdFRhcCgxMjAsIDIzMCArIGkgKiA1KSk7CisgICAgICAgIG1f
d2ViVmlldy0+aGFuZGxlSW5wdXRFdmVudChmYXRUYXAoMTIwLCAyMzAgKyBpICogNSkpOwogCiAg
ICAgICAgIGludCBqID0gaSAlIDEwOwogICAgICAgICBpZiAoaiA+PSA3ICYmIGogPD0gOSkKQEAg
LTE5MzcsNyArMTk2MCw3IEBAIFRFU1RfRihXZWJGcmFtZVRlc3QsIERpc2FtYmlndWF0aW9uUG9w
dXApCiAKICAgICBmb3IgKGludCBpID0gMDsgaSA8PSA0NjsgaSsrKSB7CiAgICAgICAgIGNsaWVu
dC5yZXNldFRyaWdnZXJlZCgpOwotICAgICAgICB3ZWJWaWV3SW1wbC0+aGFuZGxlSW5wdXRFdmVu
dChmYXRUYXAoMTAgKyBpICogNSwgNTkwKSk7CisgICAgICAgIG1fd2ViVmlldy0+aGFuZGxlSW5w
dXRFdmVudChmYXRUYXAoMTAgKyBpICogNSwgNTkwKSk7CiAKICAgICAgICAgaW50IGogPSBpICUg
MTA7CiAgICAgICAgIGlmIChqID49IDcgJiYgaiA8PSA5KQpAQCAtMTk0Niw2ICsxOTY5LDkgQEAg
VEVTVF9GKFdlYkZyYW1lVGVzdCwgRGlzYW1iaWd1YXRpb25Qb3B1cCkKICAgICAgICAgICAgIEVY
UEVDVF9GQUxTRShjbGllbnQudHJpZ2dlcmVkKCkpOwogICAgIH0KIAorICAgIG1fd2ViVmlldy0+
Y2xvc2UoKTsKKyAgICBtX3dlYlZpZXcgPSAwOworCiB9CiAKIFRFU1RfRihXZWJGcmFtZVRlc3Qs
IERpc2FtYmlndWF0aW9uUG9wdXBOb0NvbnRhaW5lcikKQEAgLTE5NTYsMTUgKzE5ODIsMTggQEAg
VEVTVF9GKFdlYkZyYW1lVGVzdCwgRGlzYW1iaWd1YXRpb25Qb3B1cE5vQ29udGFpbmVyKQogCiAg
ICAgLy8gTWFrZSBzdXJlIHdlIGluaXRpYWxpemUgdG8gbWluaW11bSBzY2FsZSwgZXZlbiBpZiB0
aGUgd2luZG93IHNpemUKICAgICAvLyBvbmx5IGJlY29tZXMgYXZhaWxhYmxlIGFmdGVyIHRoZSBs
b2FkIGJlZ2lucy4KLSAgICBXZWJWaWV3SW1wbCogd2ViVmlld0ltcGwgPSBzdGF0aWNfY2FzdDxX
ZWJWaWV3SW1wbCo+KEZyYW1lVGVzdEhlbHBlcnM6OmNyZWF0ZVdlYlZpZXdBbmRMb2FkKG1fYmFz
ZVVSTCArICJkaXNhbWJpZ3VhdGlvbl9wb3B1cF9ub19jb250YWluZXIuaHRtbCIsIHRydWUsIDAs
ICZjbGllbnQpKTsKLSAgICB3ZWJWaWV3SW1wbC0+c2V0dGluZ3MoKS0+c2V0QXBwbHlEZXZpY2VT
Y2FsZUZhY3RvckluQ29tcG9zaXRvcih0cnVlKTsKLSAgICB3ZWJWaWV3SW1wbC0+c2V0dGluZ3Mo
KS0+c2V0QXBwbHlQYWdlU2NhbGVGYWN0b3JJbkNvbXBvc2l0b3IodHJ1ZSk7Ci0gICAgd2ViVmll
d0ltcGwtPnJlc2l6ZShXZWJTaXplKDEwMDAsIDEwMDApKTsKLSAgICB3ZWJWaWV3SW1wbC0+bGF5
b3V0KCk7CisgICAgbV93ZWJWaWV3ID0gRnJhbWVUZXN0SGVscGVyczo6Y3JlYXRlV2ViVmlld0Fu
ZExvYWQobV9iYXNlVVJMICsgImRpc2FtYmlndWF0aW9uX3BvcHVwX25vX2NvbnRhaW5lci5odG1s
IiwgdHJ1ZSwgMCwgJmNsaWVudCk7CisgICAgbV93ZWJWaWV3LT5zZXR0aW5ncygpLT5zZXRBcHBs
eURldmljZVNjYWxlRmFjdG9ySW5Db21wb3NpdG9yKHRydWUpOworICAgIG1fd2ViVmlldy0+c2V0
dGluZ3MoKS0+c2V0QXBwbHlQYWdlU2NhbGVGYWN0b3JJbkNvbXBvc2l0b3IodHJ1ZSk7CisgICAg
bV93ZWJWaWV3LT5yZXNpemUoV2ViU2l6ZSgxMDAwLCAxMDAwKSk7CisgICAgbV93ZWJWaWV3LT5s
YXlvdXQoKTsKIAogICAgIGNsaWVudC5yZXNldFRyaWdnZXJlZCgpOwotICAgIHdlYlZpZXdJbXBs
LT5oYW5kbGVJbnB1dEV2ZW50KGZhdFRhcCg1MCwgNTApKTsKKyAgICBtX3dlYlZpZXctPmhhbmRs
ZUlucHV0RXZlbnQoZmF0VGFwKDUwLCA1MCkpOwogICAgIEVYUEVDVF9GQUxTRShjbGllbnQudHJp
Z2dlcmVkKCkpOworCisgICAgbV93ZWJWaWV3LT5jbG9zZSgpOworICAgIG1fd2ViVmlldyA9IDA7
CiB9CiAKIFRFU1RfRihXZWJGcmFtZVRlc3QsIERpc2FtYmlndWF0aW9uUG9wdXBNb2JpbGVTaXRl
KQpAQCAtMTk3NiwzMSArMjAwNSwzNCBAQCBURVNUX0YoV2ViRnJhbWVUZXN0LCBEaXNhbWJpZ3Vh
dGlvblBvcHVwTW9iaWxlU2l0ZSkKIAogICAgIC8vIE1ha2Ugc3VyZSB3ZSBpbml0aWFsaXplIHRv
IG1pbmltdW0gc2NhbGUsIGV2ZW4gaWYgdGhlIHdpbmRvdyBzaXplCiAgICAgLy8gb25seSBiZWNv
bWVzIGF2YWlsYWJsZSBhZnRlciB0aGUgbG9hZCBiZWdpbnMuCi0gICAgV2ViVmlld0ltcGwqIHdl
YlZpZXdJbXBsID0gc3RhdGljX2Nhc3Q8V2ViVmlld0ltcGwqPihGcmFtZVRlc3RIZWxwZXJzOjpj
cmVhdGVXZWJWaWV3QW5kTG9hZChtX2Jhc2VVUkwgKyBodG1sRmlsZSwgdHJ1ZSwgMCwgJmNsaWVu
dCkpOwotICAgIHdlYlZpZXdJbXBsLT5zZXR0aW5ncygpLT5zZXRBcHBseURldmljZVNjYWxlRmFj
dG9ySW5Db21wb3NpdG9yKHRydWUpOwotICAgIHdlYlZpZXdJbXBsLT5zZXR0aW5ncygpLT5zZXRB
cHBseVBhZ2VTY2FsZUZhY3RvckluQ29tcG9zaXRvcih0cnVlKTsKLSAgICB3ZWJWaWV3SW1wbC0+
cmVzaXplKFdlYlNpemUoMTAwMCwgMTAwMCkpOwotICAgIHdlYlZpZXdJbXBsLT5sYXlvdXQoKTsK
KyAgICBtX3dlYlZpZXcgPSBGcmFtZVRlc3RIZWxwZXJzOjpjcmVhdGVXZWJWaWV3QW5kTG9hZCht
X2Jhc2VVUkwgKyBodG1sRmlsZSwgdHJ1ZSwgMCwgJmNsaWVudCk7CisgICAgbV93ZWJWaWV3LT5z
ZXR0aW5ncygpLT5zZXRBcHBseURldmljZVNjYWxlRmFjdG9ySW5Db21wb3NpdG9yKHRydWUpOwor
ICAgIG1fd2ViVmlldy0+c2V0dGluZ3MoKS0+c2V0QXBwbHlQYWdlU2NhbGVGYWN0b3JJbkNvbXBv
c2l0b3IodHJ1ZSk7CisgICAgbV93ZWJWaWV3LT5yZXNpemUoV2ViU2l6ZSgxMDAwLCAxMDAwKSk7
CisgICAgbV93ZWJWaWV3LT5sYXlvdXQoKTsKIAogICAgIGNsaWVudC5yZXNldFRyaWdnZXJlZCgp
OwotICAgIHdlYlZpZXdJbXBsLT5oYW5kbGVJbnB1dEV2ZW50KGZhdFRhcCgwLCAwKSk7CisgICAg
bV93ZWJWaWV3LT5oYW5kbGVJbnB1dEV2ZW50KGZhdFRhcCgwLCAwKSk7CiAgICAgRVhQRUNUX0ZB
TFNFKGNsaWVudC50cmlnZ2VyZWQoKSk7CiAKICAgICBjbGllbnQucmVzZXRUcmlnZ2VyZWQoKTsK
LSAgICB3ZWJWaWV3SW1wbC0+aGFuZGxlSW5wdXRFdmVudChmYXRUYXAoMjAwLCAxMTUpKTsKKyAg
ICBtX3dlYlZpZXctPmhhbmRsZUlucHV0RXZlbnQoZmF0VGFwKDIwMCwgMTE1KSk7CiAgICAgRVhQ
RUNUX0ZBTFNFKGNsaWVudC50cmlnZ2VyZWQoKSk7CiAKICAgICBmb3IgKGludCBpID0gMDsgaSA8
PSA0NjsgaSsrKSB7CiAgICAgICAgIGNsaWVudC5yZXNldFRyaWdnZXJlZCgpOwotICAgICAgICB3
ZWJWaWV3SW1wbC0+aGFuZGxlSW5wdXRFdmVudChmYXRUYXAoMTIwLCAyMzAgKyBpICogNSkpOwor
ICAgICAgICBtX3dlYlZpZXctPmhhbmRsZUlucHV0RXZlbnQoZmF0VGFwKDEyMCwgMjMwICsgaSAq
IDUpKTsKICAgICAgICAgRVhQRUNUX0ZBTFNFKGNsaWVudC50cmlnZ2VyZWQoKSk7CiAgICAgfQog
CiAgICAgZm9yIChpbnQgaSA9IDA7IGkgPD0gNDY7IGkrKykgewogICAgICAgICBjbGllbnQucmVz
ZXRUcmlnZ2VyZWQoKTsKLSAgICAgICAgd2ViVmlld0ltcGwtPmhhbmRsZUlucHV0RXZlbnQoZmF0
VGFwKDEwICsgaSAqIDUsIDU5MCkpOworICAgICAgICBtX3dlYlZpZXctPmhhbmRsZUlucHV0RXZl
bnQoZmF0VGFwKDEwICsgaSAqIDUsIDU5MCkpOwogICAgICAgICBFWFBFQ1RfRkFMU0UoY2xpZW50
LnRyaWdnZXJlZCgpKTsKICAgICB9CisKKyAgICBtX3dlYlZpZXctPmNsb3NlKCk7CisgICAgbV93
ZWJWaWV3ID0gMDsKIH0KIAogVEVTVF9GKFdlYkZyYW1lVGVzdCwgRGlzYW1iaWd1YXRpb25Qb3B1
cEJsYWNrbGlzdCkKQEAgLTIwMTUsMjYgKzIwNDcsMjkgQEAgVEVTVF9GKFdlYkZyYW1lVGVzdCwg
RGlzYW1iaWd1YXRpb25Qb3B1cEJsYWNrbGlzdCkKIAogICAgIC8vIE1ha2Ugc3VyZSB3ZSBpbml0
aWFsaXplIHRvIG1pbmltdW0gc2NhbGUsIGV2ZW4gaWYgdGhlIHdpbmRvdyBzaXplCiAgICAgLy8g
b25seSBiZWNvbWVzIGF2YWlsYWJsZSBhZnRlciB0aGUgbG9hZCBiZWdpbnMuCi0gICAgV2ViVmll
d0ltcGwqIHdlYlZpZXdJbXBsID0gc3RhdGljX2Nhc3Q8V2ViVmlld0ltcGwqPihGcmFtZVRlc3RI
ZWxwZXJzOjpjcmVhdGVXZWJWaWV3QW5kTG9hZChtX2Jhc2VVUkwgKyBodG1sRmlsZSwgdHJ1ZSwg
MCwgJmNsaWVudCkpOwotICAgIHdlYlZpZXdJbXBsLT5zZXR0aW5ncygpLT5zZXRBcHBseURldmlj
ZVNjYWxlRmFjdG9ySW5Db21wb3NpdG9yKHRydWUpOwotICAgIHdlYlZpZXdJbXBsLT5zZXR0aW5n
cygpLT5zZXRBcHBseVBhZ2VTY2FsZUZhY3RvckluQ29tcG9zaXRvcih0cnVlKTsKLSAgICB3ZWJW
aWV3SW1wbC0+cmVzaXplKFdlYlNpemUodmlld3BvcnRXaWR0aCwgdmlld3BvcnRIZWlnaHQpKTsK
LSAgICB3ZWJWaWV3SW1wbC0+bGF5b3V0KCk7CisgICAgbV93ZWJWaWV3ID0gRnJhbWVUZXN0SGVs
cGVyczo6Y3JlYXRlV2ViVmlld0FuZExvYWQobV9iYXNlVVJMICsgaHRtbEZpbGUsIHRydWUsIDAs
ICZjbGllbnQpOworICAgIG1fd2ViVmlldy0+c2V0dGluZ3MoKS0+c2V0QXBwbHlEZXZpY2VTY2Fs
ZUZhY3RvckluQ29tcG9zaXRvcih0cnVlKTsKKyAgICBtX3dlYlZpZXctPnNldHRpbmdzKCktPnNl
dEFwcGx5UGFnZVNjYWxlRmFjdG9ySW5Db21wb3NpdG9yKHRydWUpOworICAgIG1fd2ViVmlldy0+
cmVzaXplKFdlYlNpemUodmlld3BvcnRXaWR0aCwgdmlld3BvcnRIZWlnaHQpKTsKKyAgICBtX3dl
YlZpZXctPmxheW91dCgpOwogCiAgICAgLy8gQ2xpY2sgc29tZXdoZXJlIHdoZXJlIHRoZSBwb3B1
cCBzaG91bGRuJ3QgYXBwZWFyLgogICAgIGNsaWVudC5yZXNldFRyaWdnZXJlZCgpOwotICAgIHdl
YlZpZXdJbXBsLT5oYW5kbGVJbnB1dEV2ZW50KGZhdFRhcCh2aWV3cG9ydFdpZHRoIC8gMiwgMCkp
OworICAgIG1fd2ViVmlldy0+aGFuZGxlSW5wdXRFdmVudChmYXRUYXAodmlld3BvcnRXaWR0aCAv
IDIsIDApKTsKICAgICBFWFBFQ1RfRkFMU0UoY2xpZW50LnRyaWdnZXJlZCgpKTsKIAogICAgIC8v
IENsaWNrIGRpcmVjdGx5IGluIGJldHdlZW4gdHdvIGNvbnRhaW5lciBkaXZzIHdpdGggY2xpY2sg
aGFuZGxlcnMsIHdpdGggY2hpbGRyZW4gdGhhdCBkb24ndCBoYW5kbGUgY2xpY2tzLgogICAgIGNs
aWVudC5yZXNldFRyaWdnZXJlZCgpOwotICAgIHdlYlZpZXdJbXBsLT5oYW5kbGVJbnB1dEV2ZW50
KGZhdFRhcCh2aWV3cG9ydFdpZHRoIC8gMiwgZGl2SGVpZ2h0KSk7CisgICAgbV93ZWJWaWV3LT5o
YW5kbGVJbnB1dEV2ZW50KGZhdFRhcCh2aWV3cG9ydFdpZHRoIC8gMiwgZGl2SGVpZ2h0KSk7CiAg
ICAgRVhQRUNUX1RSVUUoY2xpZW50LnRyaWdnZXJlZCgpKTsKIAogICAgIC8vIFRoZSB0aGlyZCBk
aXYgY29udGFpbmVyIHNob3VsZCBiZSBibGFja2xpc3RlZCBpZiB5b3UgY2xpY2sgb24gdGhlIGxp
bmsgaXQgY29udGFpbnMuCiAgICAgY2xpZW50LnJlc2V0VHJpZ2dlcmVkKCk7Ci0gICAgd2ViVmll
d0ltcGwtPmhhbmRsZUlucHV0RXZlbnQoZmF0VGFwKHZpZXdwb3J0V2lkdGggLyAyLCBkaXZIZWln
aHQgKiAzLjI1KSk7CisgICAgbV93ZWJWaWV3LT5oYW5kbGVJbnB1dEV2ZW50KGZhdFRhcCh2aWV3
cG9ydFdpZHRoIC8gMiwgZGl2SGVpZ2h0ICogMy4yNSkpOwogICAgIEVYUEVDVF9GQUxTRShjbGll
bnQudHJpZ2dlcmVkKCkpOworCisgICAgbV93ZWJWaWV3LT5jbG9zZSgpOworICAgIG1fd2ViVmll
dyA9IDA7CiB9CiAKIFRFU1RfRihXZWJGcmFtZVRlc3QsIERpc2FtYmlndWF0aW9uUG9wdXBQYWdl
U2NhbGUpCkBAIC0yMDQ1LDMwICsyMDgwLDMzIEBAIFRFU1RfRihXZWJGcmFtZVRlc3QsIERpc2Ft
YmlndWF0aW9uUG9wdXBQYWdlU2NhbGUpCiAKICAgICAvLyBNYWtlIHN1cmUgd2UgaW5pdGlhbGl6
ZSB0byBtaW5pbXVtIHNjYWxlLCBldmVuIGlmIHRoZSB3aW5kb3cgc2l6ZQogICAgIC8vIG9ubHkg
YmVjb21lcyBhdmFpbGFibGUgYWZ0ZXIgdGhlIGxvYWQgYmVnaW5zLgotICAgIFdlYlZpZXdJbXBs
KiB3ZWJWaWV3SW1wbCA9IHN0YXRpY19jYXN0PFdlYlZpZXdJbXBsKj4oRnJhbWVUZXN0SGVscGVy
czo6Y3JlYXRlV2ViVmlld0FuZExvYWQobV9iYXNlVVJMICsgImRpc2FtYmlndWF0aW9uX3BvcHVw
X3BhZ2Vfc2NhbGUuaHRtbCIsIHRydWUsIDAsICZjbGllbnQpKTsKLSAgICB3ZWJWaWV3SW1wbC0+
c2V0dGluZ3MoKS0+c2V0QXBwbHlEZXZpY2VTY2FsZUZhY3RvckluQ29tcG9zaXRvcih0cnVlKTsK
LSAgICB3ZWJWaWV3SW1wbC0+c2V0dGluZ3MoKS0+c2V0QXBwbHlQYWdlU2NhbGVGYWN0b3JJbkNv
bXBvc2l0b3IodHJ1ZSk7Ci0gICAgd2ViVmlld0ltcGwtPnJlc2l6ZShXZWJTaXplKDEwMDAsIDEw
MDApKTsKLSAgICB3ZWJWaWV3SW1wbC0+bGF5b3V0KCk7CisgICAgbV93ZWJWaWV3ID0gRnJhbWVU
ZXN0SGVscGVyczo6Y3JlYXRlV2ViVmlld0FuZExvYWQobV9iYXNlVVJMICsgImRpc2FtYmlndWF0
aW9uX3BvcHVwX3BhZ2Vfc2NhbGUuaHRtbCIsIHRydWUsIDAsICZjbGllbnQpOworICAgIG1fd2Vi
Vmlldy0+c2V0dGluZ3MoKS0+c2V0QXBwbHlEZXZpY2VTY2FsZUZhY3RvckluQ29tcG9zaXRvcih0
cnVlKTsKKyAgICBtX3dlYlZpZXctPnNldHRpbmdzKCktPnNldEFwcGx5UGFnZVNjYWxlRmFjdG9y
SW5Db21wb3NpdG9yKHRydWUpOworICAgIG1fd2ViVmlldy0+cmVzaXplKFdlYlNpemUoMTAwMCwg
MTAwMCkpOworICAgIG1fd2ViVmlldy0+bGF5b3V0KCk7CiAKICAgICBjbGllbnQucmVzZXRUcmln
Z2VyZWQoKTsKLSAgICB3ZWJWaWV3SW1wbC0+aGFuZGxlSW5wdXRFdmVudChmYXRUYXAoODAsIDgw
KSk7CisgICAgbV93ZWJWaWV3LT5oYW5kbGVJbnB1dEV2ZW50KGZhdFRhcCg4MCwgODApKTsKICAg
ICBFWFBFQ1RfVFJVRShjbGllbnQudHJpZ2dlcmVkKCkpOwogCiAgICAgY2xpZW50LnJlc2V0VHJp
Z2dlcmVkKCk7Ci0gICAgd2ViVmlld0ltcGwtPmhhbmRsZUlucHV0RXZlbnQoZmF0VGFwKDIzMCwg
MTkwKSk7CisgICAgbV93ZWJWaWV3LT5oYW5kbGVJbnB1dEV2ZW50KGZhdFRhcCgyMzAsIDE5MCkp
OwogICAgIEVYUEVDVF9UUlVFKGNsaWVudC50cmlnZ2VyZWQoKSk7CiAKLSAgICB3ZWJWaWV3SW1w
bC0+c2V0UGFnZVNjYWxlRmFjdG9yKDMuMGYsIFdlYlBvaW50KDAsIDApKTsKLSAgICB3ZWJWaWV3
SW1wbC0+bGF5b3V0KCk7CisgICAgbV93ZWJWaWV3LT5zZXRQYWdlU2NhbGVGYWN0b3IoMy4wZiwg
V2ViUG9pbnQoMCwgMCkpOworICAgIG1fd2ViVmlldy0+bGF5b3V0KCk7CiAKICAgICBjbGllbnQu
cmVzZXRUcmlnZ2VyZWQoKTsKLSAgICB3ZWJWaWV3SW1wbC0+aGFuZGxlSW5wdXRFdmVudChmYXRU
YXAoMjQwLCAyNDApKTsKKyAgICBtX3dlYlZpZXctPmhhbmRsZUlucHV0RXZlbnQoZmF0VGFwKDI0
MCwgMjQwKSk7CiAgICAgRVhQRUNUX1RSVUUoY2xpZW50LnRyaWdnZXJlZCgpKTsKIAogICAgIGNs
aWVudC5yZXNldFRyaWdnZXJlZCgpOwotICAgIHdlYlZpZXdJbXBsLT5oYW5kbGVJbnB1dEV2ZW50
KGZhdFRhcCg2OTAsIDU3MCkpOworICAgIG1fd2ViVmlldy0+aGFuZGxlSW5wdXRFdmVudChmYXRU
YXAoNjkwLCA1NzApKTsKICAgICBFWFBFQ1RfRkFMU0UoY2xpZW50LnRyaWdnZXJlZCgpKTsKKwor
ICAgIG1fd2ViVmlldy0+Y2xvc2UoKTsKKyAgICBtX3dlYlZpZXcgPSAwOwogfQogCiBjbGFzcyBU
ZXN0U3Vic3RpdHV0ZURhdGFXZWJGcmFtZUNsaWVudCA6IHB1YmxpYyBXZWJGcmFtZUNsaWVudCB7
CkBAIC0yMDgxLDcgKzIxMTksNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGRpZEZhaWxQ
cm92aXNpb25hbExvYWQoV2ViRnJhbWUqIGZyYW1lLCBjb25zdCBXZWJVUkxFcnJvciYgZXJyb3Ip
CiAgICAgewogICAgICAgICBmcmFtZS0+bG9hZEhUTUxTdHJpbmcoIlRoaXMgc2hvdWxkIGFwcGVh
ciIsIHRvS1VSTCgiZGF0YTp0ZXh0L2h0bWwsY2hyb21ld2ViZGF0YSIpLCBlcnJvci51bnJlYWNo
YWJsZVVSTCwgdHJ1ZSk7Ci0gICAgICAgIHdlYmtpdF9zdXBwb3J0OjpSdW5BbGxQZW5kaW5nTWVz
c2FnZXMoKTsKKyAgICAgICAgcnVuUGVuZGluZ1Rhc2tzKCk7CiAgICAgfQogCiAgICAgdmlydHVh
bCB2b2lkIGRpZENvbW1pdFByb3Zpc2lvbmFsTG9hZChXZWJGcmFtZSogZnJhbWUsIGJvb2wpCkBA
IC0yMTAwLDkgKzIxMzgsOSBAQCBURVNUX0YoV2ViRnJhbWVUZXN0LCBSZXBsYWNlTmF2aWdhdGlv
bkFmdGVySGlzdG9yeU5hdmlnYXRpb24pCiB7CiAgICAgVGVzdFN1YnN0aXR1dGVEYXRhV2ViRnJh
bWVDbGllbnQgd2ViRnJhbWVDbGllbnQ7CiAKLSAgICBXZWJWaWV3KiB3ZWJWaWV3ID0gRnJhbWVU
ZXN0SGVscGVyczo6Y3JlYXRlV2ViVmlld0FuZExvYWQoImFib3V0OmJsYW5rIiwgdHJ1ZSwgJndl
YkZyYW1lQ2xpZW50KTsKLSAgICB3ZWJraXRfc3VwcG9ydDo6UnVuQWxsUGVuZGluZ01lc3NhZ2Vz
KCk7Ci0gICAgV2ViRnJhbWUqIGZyYW1lID0gd2ViVmlldy0+bWFpbkZyYW1lKCk7CisgICAgbV93
ZWJWaWV3ID0gRnJhbWVUZXN0SGVscGVyczo6Y3JlYXRlV2ViVmlld0FuZExvYWQoImFib3V0OmJs
YW5rIiwgdHJ1ZSwgJndlYkZyYW1lQ2xpZW50KTsKKyAgICBydW5QZW5kaW5nVGFza3MoKTsKKyAg
ICBXZWJGcmFtZSogZnJhbWUgPSBtX3dlYlZpZXctPm1haW5GcmFtZSgpOwogCiAgICAgLy8gTG9h
ZCBhIHVybCBhcyBhIGhpc3RvcnkgbmF2aWdhdGlvbiB0aGF0IHdpbGwgcmV0dXJuIGFuIGVycm9y
LiBUZXN0U3Vic3RpdHV0ZURhdGFXZWJGcmFtZUNsaWVudAogICAgIC8vIHdpbGwgc3RhcnQgYSBT
dWJzdGl0dXRlRGF0YSBsb2FkIGluIHJlc3BvbnNlIHRvIHRoZSBsb2FkIGZhaWx1cmUsIHdoaWNo
IHNob3VsZCBnZXQgZnVsbHkgY29tbWl0dGVkLgpAQCAtMjEyMSwxMyArMjE1OSwxNiBAQCBURVNU
X0YoV2ViRnJhbWVUZXN0LCBSZXBsYWNlTmF2aWdhdGlvbkFmdGVySGlzdG9yeU5hdmlnYXRpb24p
CiAgICAgZXJyb3JIaXN0b3J5SXRlbS5pbml0aWFsaXplKCk7CiAgICAgZXJyb3JIaXN0b3J5SXRl
bS5zZXRVUkxTdHJpbmcoV2ViU3RyaW5nOjpmcm9tVVRGOChlcnJvclVSTC5jX3N0cigpLCBlcnJv
clVSTC5sZW5ndGgoKSkpOwogICAgIGVycm9ySGlzdG9yeUl0ZW0uc2V0T3JpZ2luYWxVUkxTdHJp
bmcoV2ViU3RyaW5nOjpmcm9tVVRGOChlcnJvclVSTC5jX3N0cigpLCBlcnJvclVSTC5sZW5ndGgo
KSkpOwotICAgIHdlYmtpdF9zdXBwb3J0OjpSZWdpc3Rlck1vY2tlZEVycm9yVVJMKFVSTFRlc3RI
ZWxwZXJzOjp0b0tVUkwoZXJyb3JVUkwpLCByZXNwb25zZSwgZXJyb3IpOworICAgIFBsYXRmb3Jt
OjpjdXJyZW50KCktPnVuaXRUZXN0U3VwcG9ydCgpLT5yZWdpc3Rlck1vY2tlZEVycm9yVVJMKFVS
TFRlc3RIZWxwZXJzOjp0b0tVUkwoZXJyb3JVUkwpLCByZXNwb25zZSwgZXJyb3IpOwogICAgIGZy
YW1lLT5sb2FkSGlzdG9yeUl0ZW0oZXJyb3JIaXN0b3J5SXRlbSk7Ci0gICAgd2Via2l0X3N1cHBv
cnQ6OlNlcnZlQXN5bmNocm9ub3VzTW9ja2VkUmVxdWVzdHMoKTsKKyAgICBQbGF0Zm9ybTo6Y3Vy
cmVudCgpLT51bml0VGVzdFN1cHBvcnQoKS0+c2VydmVBc3luY2hyb25vdXNNb2NrZWRSZXF1ZXN0
cygpOwogCiAgICAgV2ViU3RyaW5nIHRleHQgPSBmcmFtZS0+Y29udGVudEFzVGV4dChzdGQ6Om51
bWVyaWNfbGltaXRzPHNpemVfdD46Om1heCgpKTsKICAgICBFWFBFQ1RfRVEoIlRoaXMgc2hvdWxk
IGFwcGVhciIsIHN0ZDo6c3RyaW5nKHRleHQudXRmOCgpLmRhdGEoKSkpOwogICAgIEVYUEVDVF9U
UlVFKHdlYkZyYW1lQ2xpZW50LmNvbW1pdENhbGxlZCgpKTsKKworICAgIG1fd2ViVmlldy0+Y2xv
c2UoKTsKKyAgICBtX3dlYlZpZXcgPSAwOwogfQogCiBjbGFzcyBUZXN0V2lsbEluc2VydEJvZHlX
ZWJGcmFtZUNsaWVudCA6IHB1YmxpYyBXZWJGcmFtZUNsaWVudCB7CkBAIC0yMTYxLDExICsyMjAy
LDEzIEBAIFRFU1RfRihXZWJGcmFtZVRlc3QsIEhUTUxEb2N1bWVudCkKICAgICByZWdpc3Rlck1v
Y2tlZEh0dHBVUkxMb2FkKCJjbGlwcGVkLWJvZHkuaHRtbCIpOwogCiAgICAgVGVzdFdpbGxJbnNl
cnRCb2R5V2ViRnJhbWVDbGllbnQgd2ViRnJhbWVDbGllbnQ7Ci0gICAgV2ViVmlldyogd2ViVmll
dyA9IEZyYW1lVGVzdEhlbHBlcnM6OmNyZWF0ZVdlYlZpZXdBbmRMb2FkKG1fYmFzZVVSTCArICJj
bGlwcGVkLWJvZHkuaHRtbCIsIGZhbHNlLCAmd2ViRnJhbWVDbGllbnQpOworICAgIG1fd2ViVmll
dyA9IEZyYW1lVGVzdEhlbHBlcnM6OmNyZWF0ZVdlYlZpZXdBbmRMb2FkKG1fYmFzZVVSTCArICJj
bGlwcGVkLWJvZHkuaHRtbCIsIGZhbHNlLCAmd2ViRnJhbWVDbGllbnQpOwogCiAgICAgRVhQRUNU
X1RSVUUod2ViRnJhbWVDbGllbnQubV9kaWRMb2FkKTsKICAgICBFWFBFQ1RfRVEoMSwgd2ViRnJh
bWVDbGllbnQubV9udW1Cb2RpZXMpOwotICAgIHdlYlZpZXctPmNsb3NlKCk7CisKKyAgICBtX3dl
YlZpZXctPmNsb3NlKCk7CisgICAgbV93ZWJWaWV3ID0gMDsKIH0KIAogVEVTVF9GKFdlYkZyYW1l
VGVzdCwgRW1wdHlEb2N1bWVudCkKQEAgLTIxNzMsMTcgKzIyMTYsMTggQEAgVEVTVF9GKFdlYkZy
YW1lVGVzdCwgRW1wdHlEb2N1bWVudCkKICAgICByZWdpc3Rlck1vY2tlZEh0dHBVUkxMb2FkKCJw
YWdlc2VyaWFsaXplci9ncmVlbl9yZWN0YW5nbGUuc3ZnIik7CiAKICAgICBUZXN0V2lsbEluc2Vy
dEJvZHlXZWJGcmFtZUNsaWVudCB3ZWJGcmFtZUNsaWVudDsKLSAgICBXZWJWaWV3KiB3ZWJWaWV3
ID0gRnJhbWVUZXN0SGVscGVyczo6Y3JlYXRlV2ViVmlldyhmYWxzZSwgJndlYkZyYW1lQ2xpZW50
KTsKKyAgICBtX3dlYlZpZXcgPSBGcmFtZVRlc3RIZWxwZXJzOjpjcmVhdGVXZWJWaWV3KGZhbHNl
LCAmd2ViRnJhbWVDbGllbnQpOwogCiAgICAgRVhQRUNUX0ZBTFNFKHdlYkZyYW1lQ2xpZW50Lm1f
ZGlkTG9hZCk7CiAgICAgRVhQRUNUX0VRKDEsIHdlYkZyYW1lQ2xpZW50Lm1fbnVtQm9kaWVzKTsg
Ly8gVGhlIGVtcHR5IGRvY3VtZW50IHRoYXQgYSBuZXcgZnJhbWUgc3RhcnRzIHdpdGggdHJpZ2dl
cnMgdGhpcy4KLSAgICB3ZWJWaWV3LT5jbG9zZSgpOworICAgIG1fd2ViVmlldy0+Y2xvc2UoKTsK
KyAgICBtX3dlYlZpZXcgPSAwOwogfQogCiBURVNUX0YoV2ViRnJhbWVUZXN0LCBNb3ZlQ2FyZXRT
ZWxlY3Rpb25Ub3dhcmRzV2luZG93UG9pbnRXaXRoTm9TZWxlY3Rpb24pCiB7Ci0gICAgV2ViVmll
dyogd2ViVmlldyA9IEZyYW1lVGVzdEhlbHBlcnM6OmNyZWF0ZVdlYlZpZXdBbmRMb2FkKCJhYm91
dDpibGFuayIsIHRydWUpOwotICAgIFdlYkZyYW1lKiBmcmFtZSA9IHdlYlZpZXctPm1haW5GcmFt
ZSgpOworICAgIG1fd2ViVmlldyA9IEZyYW1lVGVzdEhlbHBlcnM6OmNyZWF0ZVdlYlZpZXdBbmRM
b2FkKCJhYm91dDpibGFuayIsIHRydWUpOworICAgIFdlYkZyYW1lKiBmcmFtZSA9IG1fd2ViVmll
dy0+bWFpbkZyYW1lKCk7CiAKICAgICAvLyBUaGlzIHRlc3QgcGFzc2VzIGlmIHRoaXMgZG9lc24n
dCBjcmFzaC4KICAgICBmcmFtZS0+bW92ZUNhcmV0U2VsZWN0aW9uVG93YXJkc1dpbmRvd1BvaW50
KFdlYlBvaW50KDAsIDApKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVz
dHMvV2ViSW1hZ2VUZXN0LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvV2ViSW1h
Z2VUZXN0LmNwcAppbmRleCAyZjQ0ZTM0YjMyYmYxNjQ4ZGU0YjQ4ZjI4MzY1NzI0NGRiY2U3MTJl
Li41MDI5ZjUxNTdlMjcxOWE0NmIzZDdiZWVlODIxMjIzOTM2YWYxYzZlIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL1dlYkltYWdlVGVzdC5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9jaHJvbWl1bS90ZXN0cy9XZWJJbWFnZVRlc3QuY3BwCkBAIC0zNSw5ICszNSwxMCBA
QAogI2luY2x1ZGUgIkZpbGVTeXN0ZW0uaCIKICNpbmNsdWRlICJTaGFyZWRCdWZmZXIuaCIKICNp
bmNsdWRlIDxndGVzdC9ndGVzdC5oPgorI2luY2x1ZGUgPHB1YmxpYy9QbGF0Zm9ybS5oPgogI2lu
Y2x1ZGUgPHB1YmxpYy9XZWJEYXRhLmg+CiAjaW5jbHVkZSA8cHVibGljL1dlYlNpemUuaD4KLSNp
bmNsdWRlIDx3ZWJraXQvc3VwcG9ydC93ZWJraXRfc3VwcG9ydC5oPgorI2luY2x1ZGUgPHB1Ymxp
Yy9XZWJVbml0VGVzdFN1cHBvcnQuaD4KIAogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiB1c2lu
ZyBuYW1lc3BhY2UgV2ViS2l0OwpAQCAtNDYsNyArNDcsNyBAQCBuYW1lc3BhY2UgewogCiBzdGF0
aWMgUGFzc1JlZlB0cjxTaGFyZWRCdWZmZXI+IHJlYWRGaWxlKGNvbnN0IGNoYXIqIGZpbGVOYW1l
KQogewotICAgIFN0cmluZyBmaWxlUGF0aCA9IHdlYmtpdF9zdXBwb3J0OjpHZXRXZWJLaXRSb290
RGlyKCk7CisgICAgU3RyaW5nIGZpbGVQYXRoID0gUGxhdGZvcm06OmN1cnJlbnQoKS0+dW5pdFRl
c3RTdXBwb3J0KCktPndlYktpdFJvb3REaXIoKTsKICAgICBmaWxlUGF0aC5hcHBlbmQoIi9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL2RhdGEvIik7CiAgICAgZmlsZVBhdGguYXBwZW5kKGZp
bGVOYW1lKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9XZWJQ
YWdlTmV3U2VyaWFsaXplclRlc3QuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9X
ZWJQYWdlTmV3U2VyaWFsaXplclRlc3QuY3BwCmluZGV4IDRhMmI3MmJkZjk0NThmNzBkMTRjZjRk
NGExZmJkOWY4YWRhNmQyZWMuLjE0NWQyZDJjYjQzMzYzNjA1NTJlMzQ0MzNjYjlkM2I1MThjY2Fk
NGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvV2ViUGFnZU5ld1Nl
cmlhbGl6ZXJUZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL1dlYlBh
Z2VOZXdTZXJpYWxpemVyVGVzdC5jcHAKQEAgLTMwLDYgKzMwLDcgQEAKIAogI2luY2x1ZGUgImNv
bmZpZy5oIgogCisjaW5jbHVkZSAiRnJhbWVUZXN0SGVscGVycy5oIgogI2luY2x1ZGUgIlVSTFRl
c3RIZWxwZXJzLmgiCiAjaW5jbHVkZSAiV2ViRnJhbWUuaCIKICNpbmNsdWRlICJXZWJGcmFtZUNs
aWVudC5oIgpAQCAtMzcsMTUgKzM4LDE3IEBACiAjaW5jbHVkZSAiV2ViU2NyaXB0U291cmNlLmgi
CiAjaW5jbHVkZSAiV2ViU2V0dGluZ3MuaCIKICNpbmNsdWRlICJXZWJWaWV3LmgiCisjaW5jbHVk
ZSA8Z3Rlc3QvZ3Rlc3QuaD4KKyNpbmNsdWRlIDxwdWJsaWMvUGxhdGZvcm0uaD4KICNpbmNsdWRl
IDxwdWJsaWMvV2ViU3RyaW5nLmg+CisjaW5jbHVkZSA8cHVibGljL1dlYlRocmVhZC5oPgogI2lu
Y2x1ZGUgPHB1YmxpYy9XZWJVUkwuaD4KICNpbmNsdWRlIDxwdWJsaWMvV2ViVVJMUmVxdWVzdC5o
PgogI2luY2x1ZGUgPHB1YmxpYy9XZWJVUkxSZXNwb25zZS5oPgotCi0jaW5jbHVkZSA8Z3Rlc3Qv
Z3Rlc3QuaD4KLSNpbmNsdWRlIDx3ZWJraXQvc3VwcG9ydC93ZWJraXRfc3VwcG9ydC5oPgorI2lu
Y2x1ZGUgPHB1YmxpYy9XZWJVbml0VGVzdFN1cHBvcnQuaD4KIAogdXNpbmcgbmFtZXNwYWNlIFdl
YktpdDsKK3VzaW5nIFdlYktpdDo6RnJhbWVUZXN0SGVscGVyczo6cnVuUGVuZGluZ1Rhc2tzOwog
dXNpbmcgV2ViS2l0OjpVUkxUZXN0SGVscGVyczo6dG9LVVJMOwogdXNpbmcgV2ViS2l0OjpVUkxU
ZXN0SGVscGVyczo6cmVnaXN0ZXJNb2NrZWRVUkxMb2FkOwogCkBAIC0xMDksNyArMTEyLDcgQEAg
cHJvdGVjdGVkOgogCiAgICAgdmlydHVhbCB2b2lkIFRlYXJEb3duKCkKICAgICB7Ci0gICAgICAg
IHdlYmtpdF9zdXBwb3J0OjpVbnJlZ2lzdGVyQWxsTW9ja2VkVVJMcygpOworICAgICAgICBQbGF0
Zm9ybTo6Y3VycmVudCgpLT51bml0VGVzdFN1cHBvcnQoKS0+dW5yZWdpc3RlckFsbE1vY2tlZFVS
THMoKTsKICAgICAgICAgbV93ZWJWaWV3LT5jbG9zZSgpOwogICAgIH0KIApAQCAtMTM4LDExICsx
NDEsMTEgQEAgcHJvdGVjdGVkOgogICAgICAgICB1cmxSZXF1ZXN0LnNldFVSTCh1cmwpOwogICAg
ICAgICBtX3dlYlZpZXctPm1haW5GcmFtZSgpLT5sb2FkUmVxdWVzdCh1cmxSZXF1ZXN0KTsKICAg
ICAgICAgLy8gTWFrZSBzdXJlIGFueSBwZW5kaW5nIHJlcXVlc3QgZ2V0IHNlcnZlZC4KLSAgICAg
ICAgd2Via2l0X3N1cHBvcnQ6OlNlcnZlQXN5bmNocm9ub3VzTW9ja2VkUmVxdWVzdHMoKTsKKyAg
ICAgICAgUGxhdGZvcm06OmN1cnJlbnQoKS0+dW5pdFRlc3RTdXBwb3J0KCktPnNlcnZlQXN5bmNo
cm9ub3VzTW9ja2VkUmVxdWVzdHMoKTsKICAgICAgICAgLy8gU29tZSByZXF1ZXN0cyBnZXQgZGVs
YXllZCwgcnVuIHRoZSB0aW1lci4KLSAgICAgICAgd2Via2l0X3N1cHBvcnQ6OlJ1bkFsbFBlbmRp
bmdNZXNzYWdlcygpOworICAgICAgICBydW5QZW5kaW5nVGFza3MoKTsKICAgICAgICAgLy8gU2Vy
dmVyIHRoZSBkZWxheWVkIHJlc291cmNlcy4KLSAgICAgICAgd2Via2l0X3N1cHBvcnQ6OlNlcnZl
QXN5bmNocm9ub3VzTW9ja2VkUmVxdWVzdHMoKTsKKyAgICAgICAgUGxhdGZvcm06OmN1cnJlbnQo
KS0+dW5pdFRlc3RTdXBwb3J0KCktPnNlcnZlQXN5bmNocm9ub3VzTW9ja2VkUmVxdWVzdHMoKTsK
ICAgICB9CiAKICAgICBjb25zdCBXZWJTdHJpbmcmIGh0bWxNaW1lVHlwZSgpIGNvbnN0IHsgcmV0
dXJuIG1faHRtbE1pbWVUeXBlOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3Rlc3RzL1dlYlBhZ2VTZXJpYWxpemVyVGVzdC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3Rlc3RzL1dlYlBhZ2VTZXJpYWxpemVyVGVzdC5jcHAKaW5kZXggY2ZlZjM0NzUwMmU0MDYzYzg3
NmNlNzkwZjY3M2I3MDA0N2Y1NTIzMi4uMTFlZmQ5NjI2YjcxZjg4Nzk3NGY0YzA4N2MwNjAwZGQ5
MzMxNTgxOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9XZWJQYWdl
U2VyaWFsaXplclRlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvV2Vi
UGFnZVNlcmlhbGl6ZXJUZXN0LmNwcApAQCAtMzUsMTMgKzM1LDE0IEBACiAjaW5jbHVkZSAiV2Vi
RnJhbWUuaCIKICNpbmNsdWRlICJXZWJGcmFtZUNsaWVudC5oIgogI2luY2x1ZGUgIldlYlZpZXcu
aCIKKyNpbmNsdWRlIDxwdWJsaWMvUGxhdGZvcm0uaD4KICNpbmNsdWRlIDxwdWJsaWMvV2ViU3Ry
aW5nLmg+CiAjaW5jbHVkZSA8cHVibGljL1dlYlVSTC5oPgogI2luY2x1ZGUgPHB1YmxpYy9XZWJV
UkxSZXF1ZXN0Lmg+CiAjaW5jbHVkZSA8cHVibGljL1dlYlVSTFJlc3BvbnNlLmg+CisjaW5jbHVk
ZSA8cHVibGljL1dlYlVuaXRUZXN0U3VwcG9ydC5oPgogCiAjaW5jbHVkZSA8Z3Rlc3QvZ3Rlc3Qu
aD4KLSNpbmNsdWRlIDx3ZWJraXQvc3VwcG9ydC93ZWJraXRfc3VwcG9ydC5oPgogCiB1c2luZyBu
YW1lc3BhY2UgV2ViS2l0OwogdXNpbmcgV2ViS2l0OjpVUkxUZXN0SGVscGVyczo6dG9LVVJMOwpA
QCAtNzAsNyArNzEsNyBAQCBwcm90ZWN0ZWQ6CiAKICAgICB2aXJ0dWFsIHZvaWQgVGVhckRvd24o
KQogICAgIHsKLSAgICAgICAgd2Via2l0X3N1cHBvcnQ6OlVucmVnaXN0ZXJBbGxNb2NrZWRVUkxz
KCk7CisgICAgICAgIFBsYXRmb3JtOjpjdXJyZW50KCktPnVuaXRUZXN0U3VwcG9ydCgpLT51bnJl
Z2lzdGVyQWxsTW9ja2VkVVJMcygpOwogICAgICAgICBtX3dlYlZpZXctPmNsb3NlKCk7CiAgICAg
fQogCkBAIC04Niw3ICs4Nyw3IEBAIHByb3RlY3RlZDoKICAgICAgICAgdXJsUmVxdWVzdC5zZXRV
UkwodXJsKTsKICAgICAgICAgbV93ZWJWaWV3LT5tYWluRnJhbWUoKS0+bG9hZFJlcXVlc3QodXJs
UmVxdWVzdCk7CiAgICAgICAgIC8vIE1ha2Ugc3VyZSBhbnkgcGVuZGluZyByZXF1ZXN0IGdldCBz
ZXJ2ZWQuCi0gICAgICAgIHdlYmtpdF9zdXBwb3J0OjpTZXJ2ZUFzeW5jaHJvbm91c01vY2tlZFJl
cXVlc3RzKCk7CisgICAgICAgIFBsYXRmb3JtOjpjdXJyZW50KCktPnVuaXRUZXN0U3VwcG9ydCgp
LT5zZXJ2ZUFzeW5jaHJvbm91c01vY2tlZFJlcXVlc3RzKCk7CiAgICAgfQogCiAgICAgc3RhdGlj
IGJvb2wgd2ViVmVjdG9yQ29udGFpbnMoY29uc3QgV2ViVmVjdG9yPFdlYlVSTD4mIHZlY3Rvciwg
Y29uc3QgY2hhciogdXJsKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0
cy9XZWJQbHVnaW5Db250YWluZXJUZXN0LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVz
dHMvV2ViUGx1Z2luQ29udGFpbmVyVGVzdC5jcHAKaW5kZXggNTAwODljOWQ0ZDYxMGRmZjM5N2M1
MmY2ZjE0NDk3YTIwNjNjNTc2MS4uMzVhODQ3MThlYjA1YTY1MTEwNjIwZTAwMTM4ZjAzNTEwNmE0
NDUwZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9XZWJQbHVnaW5D
b250YWluZXJUZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL1dlYlBs
dWdpbkNvbnRhaW5lclRlc3QuY3BwCkBAIC00Niw3ICs0Niw5IEBACiAjaW5jbHVkZSAiV2ViVmll
dy5oIgogI2luY2x1ZGUgIldlYlZpZXdJbXBsLmgiCiAjaW5jbHVkZSA8Z3Rlc3QvZ3Rlc3QuaD4K
LSNpbmNsdWRlIDx3ZWJraXQvc3VwcG9ydC93ZWJraXRfc3VwcG9ydC5oPgorI2luY2x1ZGUgPHB1
YmxpYy9QbGF0Zm9ybS5oPgorI2luY2x1ZGUgPHB1YmxpYy9XZWJUaHJlYWQuaD4KKyNpbmNsdWRl
IDxwdWJsaWMvV2ViVW5pdFRlc3RTdXBwb3J0Lmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7
CiAKQEAgLTYxLDcgKzYzLDcgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCB2b2lkIFRlYXJEb3du
KCkKICAgICB7Ci0gICAgICAgIHdlYmtpdF9zdXBwb3J0OjpVbnJlZ2lzdGVyQWxsTW9ja2VkVVJM
cygpOworICAgICAgICBQbGF0Zm9ybTo6Y3VycmVudCgpLT51bml0VGVzdFN1cHBvcnQoKS0+dW5y
ZWdpc3RlckFsbE1vY2tlZFVSTHMoKTsKICAgICB9CiAKIHByb3RlY3RlZDoKQEAgLTkxLDcgKzkz
LDcgQEAgVEVTVF9GKFdlYlBsdWdpbkNvbnRhaW5lclRlc3QsIFdpbmRvd1RvTG9jYWxQb2ludFRl
c3QpCiAgICAgd2ViVmlldy0+c2V0dGluZ3MoKS0+c2V0UGx1Z2luc0VuYWJsZWQodHJ1ZSk7CiAg
ICAgd2ViVmlldy0+cmVzaXplKFdlYlNpemUoMzAwLCAzMDApKTsKICAgICB3ZWJWaWV3LT5sYXlv
dXQoKTsKLSAgICB3ZWJraXRfc3VwcG9ydDo6UnVuQWxsUGVuZGluZ01lc3NhZ2VzKCk7CisgICAg
RnJhbWVUZXN0SGVscGVyczo6cnVuUGVuZGluZ1Rhc2tzKCk7CiAKICAgICBXZWJQbHVnaW5Db250
YWluZXIqIHBsdWdpbkNvbnRhaW5lck9uZSA9IGdldFdlYlBsdWdpbkNvbnRhaW5lcih3ZWJWaWV3
LCBXZWJTdHJpbmc6OmZyb21VVEY4KCJ0cmFuc2xhdGVkLXBsdWdpbiIpKTsKICAgICBBU1NFUlQo
cGx1Z2luQ29udGFpbmVyT25lKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
dGVzdHMvV2ViVmlld1Rlc3QuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9XZWJW
aWV3VGVzdC5jcHAKaW5kZXggZjA4NTIyZjM4N2QxNzYzNWIzOWY3MmE3ODYyODE0YTkxZDI0NDE0
NS4uMjRmZWNmNTU3ZjQzOGFkNDkzNzFmM2YyY2ZlNmRhNWZiZDY0ZmZmMiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9XZWJWaWV3VGVzdC5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9jaHJvbWl1bS90ZXN0cy9XZWJWaWV3VGVzdC5jcHAKQEAgLTQ3LDEwICs0NywxMyBA
QAogI2luY2x1ZGUgIldlYlZpZXdDbGllbnQuaCIKICNpbmNsdWRlICJXZWJWaWV3SW1wbC5oIgog
I2luY2x1ZGUgPGd0ZXN0L2d0ZXN0Lmg+CisjaW5jbHVkZSA8cHVibGljL1BsYXRmb3JtLmg+CiAj
aW5jbHVkZSA8cHVibGljL1dlYlNpemUuaD4KLSNpbmNsdWRlIDx3ZWJraXQvc3VwcG9ydC93ZWJr
aXRfc3VwcG9ydC5oPgorI2luY2x1ZGUgPHB1YmxpYy9XZWJUaHJlYWQuaD4KKyNpbmNsdWRlIDxw
dWJsaWMvV2ViVW5pdFRlc3RTdXBwb3J0Lmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7Cit1
c2luZyBXZWJLaXQ6OkZyYW1lVGVzdEhlbHBlcnM6OnJ1blBlbmRpbmdUYXNrczsKIHVzaW5nIFdl
YktpdDo6VVJMVGVzdEhlbHBlcnM6OnRvS1VSTDsKIAogbmFtZXNwYWNlIHsKQEAgLTE2Myw3ICsx
NjYsNyBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIHZvaWQgVGVhckRvd24oKQogICAgIHsKLSAg
ICAgICAgd2Via2l0X3N1cHBvcnQ6OlVucmVnaXN0ZXJBbGxNb2NrZWRVUkxzKCk7CisgICAgICAg
IFBsYXRmb3JtOjpjdXJyZW50KCktPnVuaXRUZXN0U3VwcG9ydCgpLT51bnJlZ2lzdGVyQWxsTW9j
a2VkVVJMcygpOwogICAgIH0KIAogcHJvdGVjdGVkOgpAQCAtNTY5LDcgKzU3Miw3IEBAIHN0YXRp
YyBib29sIHRhcEVsZW1lbnRCeUlkKFdlYlZpZXcqIHdlYlZpZXcsIFdlYklucHV0RXZlbnQ6OlR5
cGUgdHlwZSwgY29uc3QgV2ViCiAgICAgZXZlbnQueSA9IGNlbnRlci55KCk7CiAKICAgICB3ZWJW
aWV3LT5oYW5kbGVJbnB1dEV2ZW50KGV2ZW50KTsKLSAgICB3ZWJraXRfc3VwcG9ydDo6UnVuQWxs
UGVuZGluZ01lc3NhZ2VzKCk7CisgICAgcnVuUGVuZGluZ1Rhc2tzKCk7CiAgICAgcmV0dXJuIHRy
dWU7CiB9CiAKQEAgLTU4MSw3ICs1ODQsNyBAQCBURVNUX0YoV2ViVmlld1Rlc3QsIERldGVjdENv
bnRlbnRBcm91bmRQb3NpdGlvbikKICAgICBXZWJWaWV3KiB3ZWJWaWV3ID0gRnJhbWVUZXN0SGVs
cGVyczo6Y3JlYXRlV2ViVmlld0FuZExvYWQobV9iYXNlVVJMICsgImNvbnRlbnRfbGlzdGVuZXJz
Lmh0bWwiLCB0cnVlLCAwLCAmY2xpZW50KTsKICAgICB3ZWJWaWV3LT5yZXNpemUoV2ViU2l6ZSg1
MDAsIDMwMCkpOwogICAgIHdlYlZpZXctPmxheW91dCgpOwotICAgIHdlYmtpdF9zdXBwb3J0OjpS
dW5BbGxQZW5kaW5nTWVzc2FnZXMoKTsKKyAgICBydW5QZW5kaW5nVGFza3MoKTsKIAogICAgIFdl
YlN0cmluZyBjbGlja0xpc3RlbmVyID0gV2ViU3RyaW5nOjpmcm9tVVRGOCgiY2xpY2tMaXN0ZW5l
ciIpOwogICAgIFdlYlN0cmluZyB0b3VjaHN0YXJ0TGlzdGVuZXIgPSBXZWJTdHJpbmc6OmZyb21V
VEY4KCJ0b3VjaHN0YXJ0TGlzdGVuZXIiKTsKQEAgLTYxOCw3ICs2MjEsNyBAQCBURVNUX0YoV2Vi
Vmlld1Rlc3QsIERldGVjdENvbnRlbnRBcm91bmRQb3NpdGlvbikKICAgICBXZWJHZXN0dXJlRXZl
bnQgZXZlbnQ7CiAgICAgZXZlbnQudHlwZSA9IFdlYklucHV0RXZlbnQ6Okdlc3R1cmVUYXA7CiAg
ICAgd2ViVmlldy0+aGFuZGxlSW5wdXRFdmVudChldmVudCk7Ci0gICAgd2Via2l0X3N1cHBvcnQ6
OlJ1bkFsbFBlbmRpbmdNZXNzYWdlcygpOworICAgIHJ1blBlbmRpbmdUYXNrcygpOwogICAgIEVY
UEVDVF9UUlVFKGNsaWVudC5wZW5kaW5nSW50ZW50c0NhbmNlbGxlZCgpKTsKICAgICB3ZWJWaWV3
LT5jbG9zZSgpOwogfQpAQCAtNjMzLDcgKzYzNiw3IEBAIFRFU1RfRihXZWJWaWV3VGVzdCwgQ2xp
ZW50VGFwSGFuZGxpbmcpCiAgICAgZXZlbnQueCA9IDM7CiAgICAgZXZlbnQueSA9IDg7CiAgICAg
d2ViVmlldy0+aGFuZGxlSW5wdXRFdmVudChldmVudCk7Ci0gICAgd2Via2l0X3N1cHBvcnQ6OlJ1
bkFsbFBlbmRpbmdNZXNzYWdlcygpOworICAgIHJ1blBlbmRpbmdUYXNrcygpOwogICAgIEVYUEVD
VF9FUSgzLCBjbGllbnQudGFwWCgpKTsKICAgICBFWFBFQ1RfRVEoOCwgY2xpZW50LnRhcFkoKSk7
CiAgICAgY2xpZW50LnJlc2V0KCk7CkBAIC02NDEsNyArNjQ0LDcgQEAgVEVTVF9GKFdlYlZpZXdU
ZXN0LCBDbGllbnRUYXBIYW5kbGluZykKICAgICBldmVudC54ID0gMjU7CiAgICAgZXZlbnQueSA9
IDc7CiAgICAgd2ViVmlldy0+aGFuZGxlSW5wdXRFdmVudChldmVudCk7Ci0gICAgd2Via2l0X3N1
cHBvcnQ6OlJ1bkFsbFBlbmRpbmdNZXNzYWdlcygpOworICAgIHJ1blBlbmRpbmdUYXNrcygpOwog
ICAgIEVYUEVDVF9FUSgyNSwgY2xpZW50LmxvbmdwcmVzc1goKSk7CiAgICAgRVhQRUNUX0VRKDcs
IGNsaWVudC5sb25ncHJlc3NZKCkpOwogICAgIHdlYlZpZXctPmNsb3NlKCk7CkBAIC02NTUsNyAr
NjU4LDcgQEAgVEVTVF9GKFdlYlZpZXdUZXN0LCBMb25nUHJlc3NTZWxlY3Rpb24pCiAgICAgV2Vi
Vmlldyogd2ViVmlldyA9IEZyYW1lVGVzdEhlbHBlcnM6OmNyZWF0ZVdlYlZpZXdBbmRMb2FkKG1f
YmFzZVVSTCArICJsb25ncHJlc3Nfc2VsZWN0aW9uLmh0bWwiLCB0cnVlKTsKICAgICB3ZWJWaWV3
LT5yZXNpemUoV2ViU2l6ZSg1MDAsIDMwMCkpOwogICAgIHdlYlZpZXctPmxheW91dCgpOwotICAg
IHdlYmtpdF9zdXBwb3J0OjpSdW5BbGxQZW5kaW5nTWVzc2FnZXMoKTsKKyAgICBydW5QZW5kaW5n
VGFza3MoKTsKIAogICAgIFdlYlN0cmluZyB0YXJnZXQgPSBXZWJTdHJpbmc6OmZyb21VVEY4KCJ0
YXJnZXQiKTsKICAgICBXZWJTdHJpbmcgb25zZWxlY3RzdGFydGZhbHNlID0gV2ViU3RyaW5nOjpm
cm9tVVRGOCgib25zZWxlY3RzdGFydGZhbHNlIik7CkBAIC02NzUsNyArNjc4LDcgQEAgVEVTVF9G
KFdlYlZpZXdUZXN0LCBTZWxlY3Rpb25PbkRpc2FibGVkSW5wdXQpCiAgICAgV2ViVmlldyogd2Vi
VmlldyA9IEZyYW1lVGVzdEhlbHBlcnM6OmNyZWF0ZVdlYlZpZXdBbmRMb2FkKG1fYmFzZVVSTCAr
ICJzZWxlY3Rpb25fZGlzYWJsZWQuaHRtbCIsIHRydWUpOwogICAgIHdlYlZpZXctPnJlc2l6ZShX
ZWJTaXplKDY0MCwgNDgwKSk7CiAgICAgd2ViVmlldy0+bGF5b3V0KCk7Ci0gICAgd2Via2l0X3N1
cHBvcnQ6OlJ1bkFsbFBlbmRpbmdNZXNzYWdlcygpOworICAgIHJ1blBlbmRpbmdUYXNrcygpOwog
CiAgICAgc3RkOjpzdHJpbmcgdGVzdFdvcmQgPSAiVGhpcyB0ZXh0IHNob3VsZCBiZSBzZWxlY3Rl
ZC4iOwogCkBAIC02OTksNyArNzAyLDcgQEAgVEVTVF9GKFdlYlZpZXdUZXN0LCBTZWxlY3Rpb25P
blJlYWRPbmx5SW5wdXQpCiAgICAgV2ViVmlldyogd2ViVmlldyA9IEZyYW1lVGVzdEhlbHBlcnM6
OmNyZWF0ZVdlYlZpZXdBbmRMb2FkKG1fYmFzZVVSTCArICJzZWxlY3Rpb25fcmVhZG9ubHkuaHRt
bCIsIHRydWUpOwogICAgIHdlYlZpZXctPnJlc2l6ZShXZWJTaXplKDY0MCwgNDgwKSk7CiAgICAg
d2ViVmlldy0+bGF5b3V0KCk7Ci0gICAgd2Via2l0X3N1cHBvcnQ6OlJ1bkFsbFBlbmRpbmdNZXNz
YWdlcygpOworICAgIHJ1blBlbmRpbmdUYXNrcygpOwogCiAgICAgc3RkOjpzdHJpbmcgdGVzdFdv
cmQgPSAiVGhpcyB0ZXh0IHNob3VsZCBiZSBzZWxlY3RlZC4iOwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL2RhdGEvbm9uLWZhc3Qtc2Nyb2xsYWJsZS5odG1sIGIv
U291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9kYXRhL25vbi1mYXN0LXNjcm9sbGFibGUuaHRt
bAppbmRleCBjMjRjYjNhODY1NTNkZWFmNTMwMTYyN2ZhNmY1NGZmYjk5NTM2ZWQ4Li45MWQwN2M1
OTgxMWYyOWMwYjgwZmM4YmUyY2ExM2FkNTIxNGQ1OGEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3Rlc3RzL2RhdGEvbm9uLWZhc3Qtc2Nyb2xsYWJsZS5odG1sCisrKyBiL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvZGF0YS9ub24tZmFzdC1zY3JvbGxhYmxlLmh0bWwK
QEAgLTEyLDEyICsxMiwxNSBAQAogICAgIC5vdXQtb2YtZmxvdyB7CiAgICAgICBwb3NpdGlvbjog
YWJzb2x1dGU7CiAgICAgfQorICAgIC5iaWcgeworICAgICAgbWFyZ2luOiAyMDBweDsKKyAgICB9
CiAgIDwvc3R5bGU+CiA8L2hlYWQ+CiAKIDxib2R5PgogICA8ZGl2IGNsYXNzPSJzY3JvbGxhYmxl
IGJveCI+Ci0gICAgU2Nyb2xsaW5nIGNvbnRlbnQuCisgICAgPHNwYW4gY2xhc3M9ImJpZyI+U2Ny
b2xsaW5nIGNvbnRlbnQ8L3NwYW4+CiAgICAgPGRpdiBjbGFzcz0ib3V0LW9mLWZsb3cgYm94Ij5P
dXQtb2YtZmxvdyBjb250ZW50LjwvZGl2PgogICA8L2Rpdj4KIDwvYm9keT4K
</data>

          </attachment>
      

    </bug>

</bugzilla>