<?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>205539</bug_id>
          
          <creation_ts>2019-12-21 00:11:54 -0800</creation_ts>
          <short_desc>Deprecate _WKWebsitePolicies</short_desc>
          <delta_ts>2020-01-03 09:51:18 -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>WebKit 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>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Alex Christensen">achristensen</reporter>
          <assigned_to name="Alex Christensen">achristensen</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>wenson_hsieh</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1601075</commentid>
    <comment_count>0</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2019-12-21 00:11:54 -0800</bug_when>
    <thetext>Deprecate _WKWebsitePolicies</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1601076</commentid>
    <comment_count>1</comment_count>
      <attachid>386292</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2019-12-21 00:14:35 -0800</bug_when>
    <thetext>Created attachment 386292
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1602184</commentid>
    <comment_count>2</comment_count>
      <attachid>386610</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2020-01-02 11:40:56 -0800</bug_when>
    <thetext>Created attachment 386610
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1602300</commentid>
    <comment_count>3</comment_count>
      <attachid>386650</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2020-01-02 17:38:27 -0800</bug_when>
    <thetext>Created attachment 386650
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1602449</commentid>
    <comment_count>4</comment_count>
      <attachid>386650</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2020-01-03 08:50:30 -0800</bug_when>
    <thetext>Comment on attachment 386650
Patch

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

Nice!

&gt; Source/WebKit/UIProcess/API/Cocoa/WKWebView.mm:-2145
&gt; -    [self _updateWebpagePreferences:websitePolicies.webpagePreferences];

Is this change binary compatible with shipping Safari?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1602450</commentid>
    <comment_count>5</comment_count>
      <attachid>386650</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2020-01-03 08:52:52 -0800</bug_when>
    <thetext>Comment on attachment 386650
Patch

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

&gt;&gt; Source/WebKit/UIProcess/API/Cocoa/WKWebView.mm:-2145
&gt;&gt; -    [self _updateWebpagePreferences:websitePolicies.webpagePreferences];
&gt; 
&gt; Is this change binary compatible with shipping Safari?

This will break a small edge-case feature in shipping Safari when using open source WebKit with it, but this is not important to open source WebKit developers.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1602480</commentid>
    <comment_count>6</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2020-01-03 09:49:58 -0800</bug_when>
    <thetext>The commit-queue encountered the following flaky tests while processing attachment 386650:

highlight/highlight-world-leak.html bug 205643 (author: megan_gardner@apple.com)
imported/w3c/web-platform-tests/media-source/mediasource-h264-play-starved.html bug 205728 (author: aboya@igalia.com)
The commit-queue is continuing to process your patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1602481</commentid>
    <comment_count>7</comment_count>
      <attachid>386650</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2020-01-03 09:50:51 -0800</bug_when>
    <thetext>Comment on attachment 386650
Patch

Clearing flags on attachment: 386650

Committed r254005: &lt;https://trac.webkit.org/changeset/254005&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1602482</commentid>
    <comment_count>8</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2020-01-03 09:50:53 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1602483</commentid>
    <comment_count>9</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2020-01-03 09:51:18 -0800</bug_when>
    <thetext>&lt;rdar://problem/58299901&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>386292</attachid>
            <date>2019-12-21 00:14:35 -0800</date>
            <delta_ts>2020-01-02 11:40:54 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-205539-20191221001434.patch</filename>
            <type>text/plain</type>
            <size>39496</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nCShyZXZpc2lvbiAyNTM4MjMpCisrKyBTb3VyY2UvV2ViS2l0L0NoYW5nZUxv
Zwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIyIEBACisyMDE5LTEyLTIxICBBbGV4IENocmlz
dGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgRGVwcmVjYXRlIF9X
S1dlYnNpdGVQb2xpY2llcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MjA1NTM5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgSXRzIGxhc3QgdXNlIHdhcyByZW1vdmVkIGluIHJkYXI6Ly9wcm9ibGVtLzU4MDY0
ODQ3CisgICAgICAgIGJ1dCB3ZSBuZWVkIHRvIGtlZXAgaXQgaW4gV2ViS2l0IHVudGlsIHRoZSBu
ZXh0IFNhZmFyaSByZWxlYXNlCisgICAgICAgIHRvIGtlZXAgU2FmYXJpIHdvcmtpbmcgd2l0aCBi
dWlsdCB2ZXJzaW9ucyBvZiBvcGVuIHNvdXJjZSBXZWJLaXQgd2l0aCBydW4tc2FmYXJpLgorCisg
ICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW06CisgICAgICAgICgtW1dL
V2ViVmlldyBfdXBkYXRlV2Vic2l0ZVBvbGljaWVzOl0pOgorICAgICAgICAqIFVJUHJvY2Vzcy9B
UEkvQ29jb2EvV0tXZWJWaWV3UHJpdmF0ZS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29j
b2EvX1dLV2Vic2l0ZVBvbGljaWVzLmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9f
V0tXZWJzaXRlUG9saWNpZXMubW06CisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL05hdmlnYXRp
b25TdGF0ZS5tbToKKyAgICAgICAgKFdlYktpdDo6TmF2aWdhdGlvblN0YXRlOjpOYXZpZ2F0aW9u
Q2xpZW50OjpkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uKToKKwogMjAxOS0xMi0xOSAg
QnJlbnQgRnVsZ2hhbSAgPGJmdWxnaGFtQGFwcGxlLmNvbT4KIAogICAgICAgICBMb2cgdGVsZW1l
dHJ5IGZvciBJT1VzZXJDbGllbnQgbG9va3VwcwpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tCShyZXZpc2lvbiAyNTM4MjMpCisrKyBTb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tCSh3b3JraW5nIGNvcHkp
CkBAIC0yMDcwLDcgKzIwNzAsNiBAQCAtICh2b2lkKV9ldmFsdWF0ZUphdmFTY3JpcHRXaXRob3V0
VXNlckdlCiAKIC0gKHZvaWQpX3VwZGF0ZVdlYnNpdGVQb2xpY2llczooX1dLV2Vic2l0ZVBvbGlj
aWVzICopd2Vic2l0ZVBvbGljaWVzCiB7Ci0gICAgW3NlbGYgX3VwZGF0ZVdlYnBhZ2VQcmVmZXJl
bmNlczp3ZWJzaXRlUG9saWNpZXMud2VicGFnZVByZWZlcmVuY2VzXTsKIH0KIAogLSAodm9pZClf
dXBkYXRlV2VicGFnZVByZWZlcmVuY2VzOihXS1dlYnBhZ2VQcmVmZXJlbmNlcyAqKXdlYnBhZ2VQ
cmVmZXJlbmNlcwpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vi
Vmlld1ByaXZhdGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
Q29jb2EvV0tXZWJWaWV3UHJpdmF0ZS5oCShyZXZpc2lvbiAyNTM4MjMpCisrKyBTb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3UHJpdmF0ZS5oCSh3b3JraW5nIGNvcHkp
CkBAIC0xODcsNyArMTg3LDcgQEAgdHlwZWRlZiBOU19PUFRJT05TKE5TVUludGVnZXIsIF9XS1Jl
Y3RFZAogCiAtICh2b2lkKV9jbG9zZTsKIAotLSAodm9pZClfdXBkYXRlV2Vic2l0ZVBvbGljaWVz
OihfV0tXZWJzaXRlUG9saWNpZXMgKil3ZWJzaXRlUG9saWNpZXMgV0tfQVBJX0FWQUlMQUJMRSht
YWNvcygxMC4xMyksIGlvcygxMS4wKSk7CistICh2b2lkKV91cGRhdGVXZWJzaXRlUG9saWNpZXM6
KF9XS1dlYnNpdGVQb2xpY2llcyAqKXdlYnNpdGVQb2xpY2llcyBXS19BUElfREVQUkVDQVRFRF9X
SVRIX1JFUExBQ0VNRU5UKCItX3VwZGF0ZVdlYnBhZ2VQcmVmZXJlbmNlczoiLCBtYWNvcygxMC4x
MywgV0tfTUFDX1RCQSksIGlvcygxMS4zLCBXS19JT1NfVEJBKSk7CiAtICh2b2lkKV91cGRhdGVX
ZWJwYWdlUHJlZmVyZW5jZXM6KFdLV2VicGFnZVByZWZlcmVuY2VzICopd2VicGFnZVByZWZlcmVu
Y2VzIFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoV0tfTUFDX1RCQSksIGlvcyhXS19JT1NfVEJBKSk7
CiAKIC0gKHZvaWQpX2V2YWx1YXRlSmF2YVNjcmlwdFdpdGhvdXRVc2VyR2VzdHVyZTooTlNTdHJp
bmcgKilqYXZhU2NyaXB0U3RyaW5nIGNvbXBsZXRpb25IYW5kbGVyOih2b2lkICheKShpZCwgTlNF
cnJvciAqKSljb21wbGV0aW9uSGFuZGxlciBXS19BUElfQVZBSUxBQkxFKG1hY29zKDEwLjEzKSwg
aW9zKDExLjApKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tX
ZWJzaXRlUG9saWNpZXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvQ29jb2EvX1dLV2Vic2l0ZVBvbGljaWVzLmgJKHJldmlzaW9uIDI1MzgyMykKKysrIFNvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tXZWJzaXRlUG9saWNpZXMuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMjgsNyArMjgsNyBAQAogCiBAY2xhc3MgV0tXZWJzaXRlRGF0YVN0b3JlOwog
Ci1XS19DTEFTU19BVkFJTEFCTEUobWFjb3MoMTAuMTIuMyksIGlvcygxMC4zKSkKK1dLX0FQSV9E
RVBSRUNBVEVEX1dJVEhfUkVQTEFDRU1FTlQoV0tXZWJwYWdlUHJlZmVyZW5jZXMsIG1hY29zKDEw
LjEyLjMsIFdLX01BQ19UQkEpLCBpb3MoMTAuMywgV0tfSU9TX1RCQSkpCiBAaW50ZXJmYWNlIF9X
S1dlYnNpdGVQb2xpY2llcyA6IE5TT2JqZWN0CiAKIEBwcm9wZXJ0eSAobm9uYXRvbWljKSBCT09M
IGNvbnRlbnRCbG9ja2Vyc0VuYWJsZWQ7CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvQ29jb2EvX1dLV2Vic2l0ZVBvbGljaWVzLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tXZWJzaXRlUG9saWNpZXMubW0JKHJldmlzaW9uIDI1
MzgyMykKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tXZWJzaXRlUG9s
aWNpZXMubW0JKHdvcmtpbmcgY29weSkKQEAgLTI5LDcgKzI5LDkgQEAKICNpbXBvcnQgIldLV2Vi
c2l0ZURhdGFTdG9yZUludGVybmFsLmgiCiAjaW1wb3J0ICJfV0tXZWJzaXRlUG9saWNpZXNJbnRl
cm5hbC5oIgogCitJR05PUkVfV0FSTklOR1NfQkVHSU4oImRlcHJlY2F0ZWQtaW1wbGVtZW50YXRp
b25zIikKIEBpbXBsZW1lbnRhdGlvbiBfV0tXZWJzaXRlUG9saWNpZXMKK0lHTk9SRV9XQVJOSU5H
U19FTkQKIAogLSAoaW5zdGFuY2V0eXBlKWluaXQKIHsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0NvY29hL05hdmlnYXRpb25TdGF0ZS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9Db2NvYS9OYXZpZ2F0aW9uU3RhdGUubW0JKHJldmlzaW9uIDI1MzgyMykK
KysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL05hdmlnYXRpb25TdGF0ZS5tbQkod29y
a2luZyBjb3B5KQpAQCAtNTgxLDEwICs1ODEsMTIgQEAgdm9pZCBOYXZpZ2F0aW9uU3RhdGU6Ok5h
dmlnYXRpb25DbGllbnQ6OgogICAgICAgICBSZWZQdHI8QVBJOjpXZWJzaXRlUG9saWNpZXM+IGFw
aVdlYnNpdGVQb2xpY2llczsKICAgICAgICAgaWYgKFtwb2xpY2llc09yUHJlZmVyZW5jZXMgaXNL
aW5kT2ZDbGFzczpXS1dlYnBhZ2VQcmVmZXJlbmNlcy5zZWxmXSkKICAgICAgICAgICAgIGFwaVdl
YnNpdGVQb2xpY2llcyA9ICgoV0tXZWJwYWdlUHJlZmVyZW5jZXMgKilwb2xpY2llc09yUHJlZmVy
ZW5jZXMpLT5fd2Vic2l0ZVBvbGljaWVzLmdldCgpOworQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJB
VElPTlNfQkVHSU4KICAgICAgICAgZWxzZSBpZiAoW3BvbGljaWVzT3JQcmVmZXJlbmNlcyBpc0tp
bmRPZkNsYXNzOl9XS1dlYnNpdGVQb2xpY2llcy5zZWxmXSkKICAgICAgICAgICAgIGFwaVdlYnNp
dGVQb2xpY2llcyA9IFtwb2xpY2llc09yUHJlZmVyZW5jZXMgd2VicGFnZVByZWZlcmVuY2VzXS0+
X3dlYnNpdGVQb2xpY2llcy5nZXQoKTsKICAgICAgICAgZWxzZSBpZiAocG9saWNpZXNPclByZWZl
cmVuY2VzKQogICAgICAgICAgICAgW05TRXhjZXB0aW9uIHJhaXNlOk5TSW52YWxpZEFyZ3VtZW50
RXhjZXB0aW9uIGZvcm1hdDpAIkV4cGVjdGVkIHBvbGljaWVzIG9mIGNsYXNzICVALCBidXQgZ290
ICVAIiwgTlNTdHJpbmdGcm9tQ2xhc3MoX1dLV2Vic2l0ZVBvbGljaWVzLnNlbGYpLCBbcG9saWNp
ZXNPclByZWZlcmVuY2VzIGNsYXNzXV07CitBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19F
TkQKICAgICAgICAgZWxzZQogICAgICAgICAgICAgYXBpV2Vic2l0ZVBvbGljaWVzID0gZGVmYXVs
dFdlYnNpdGVQb2xpY2llczsKIApJbmRleDogVG9vbHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFRvb2xzL0NoYW5nZUxvZwkocmV2aXNpb24gMjUzODYxKQorKysgVG9vbHMvQ2hhbmdlTG9nCSh3
b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMzMgQEAKKzIwMTktMTItMjEgIEFsZXggQ2hyaXN0ZW5z
ZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KKworICAgICAgICBEZXByZWNhdGUgX1dLV2Vi
c2l0ZVBvbGljaWVzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0yMDU1MzkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvUHJvY2Vzc1N3YXBPbk5hdmln
YXRpb24ubW06CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9TZXJ2
aWNlV29ya2VyQmFzaWMubW06CisgICAgICAgICgtW1NXQ3VzdG9tVXNlckFnZW50RGVsZWdhdGUg
X3dlYlZpZXc6ZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbjpwcmVmZXJlbmNlczp1c2Vy
SW5mbzpkZWNpc2lvbkhhbmRsZXI6XSk6CisgICAgICAgICgtW1NXQ3VzdG9tVXNlckFnZW50RGVs
ZWdhdGUgX3dlYlZpZXc6ZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbjp1c2VySW5mbzpk
ZWNpc2lvbkhhbmRsZXI6XSk6IERlbGV0ZWQuCisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0
cy9XZWJLaXRDb2NvYS9XZWJzaXRlUG9saWNpZXMubW06CisgICAgICAgICgtW0NvbnRlbnRCbG9j
a2luZ1dlYnNpdGVQb2xpY2llc0RlbGVnYXRlIHdlYlZpZXc6ZGVjaWRlUG9saWN5Rm9yTmF2aWdh
dGlvbkFjdGlvbjpwcmVmZXJlbmNlczpkZWNpc2lvbkhhbmRsZXI6XSk6CisgICAgICAgIChURVNU
KToKKyAgICAgICAgKC1bQXV0b3BsYXlQb2xpY2llc0RlbGVnYXRlIHdlYlZpZXc6ZGVjaWRlUG9s
aWN5Rm9yTmF2aWdhdGlvbkFjdGlvbjpwcmVmZXJlbmNlczpkZWNpc2lvbkhhbmRsZXI6XSk6Cisg
ICAgICAgICgtW0FzeW5jQXV0b3BsYXlQb2xpY2llc0RlbGVnYXRlIHdlYlZpZXc6ZGVjaWRlUG9s
aWN5Rm9yTmF2aWdhdGlvbkFjdGlvbjpwcmVmZXJlbmNlczpkZWNpc2lvbkhhbmRsZXI6XSk6Cisg
ICAgICAgICgtW1dlYnNpdGVQb2xpY2llc05hdmlnYXRpb25EZWxlZ2F0ZSBfd2ViVmlldzpkZWNp
ZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uOnByZWZlcmVuY2VzOnVzZXJJbmZvOmRlY2lzaW9u
SGFuZGxlcjpdKToKKyAgICAgICAgKC1bQ3VzdG9tVXNlckFnZW50RGVsZWdhdGUgX3dlYlZpZXc6
ZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbjp1c2VySW5mbzpkZWNpc2lvbkhhbmRsZXI6
XSk6CisgICAgICAgICgtW0N1c3RvbUphdmFTY3JpcHRVc2VyQWdlbnREZWxlZ2F0ZSBfd2ViVmll
dzpkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uOnVzZXJJbmZvOmRlY2lzaW9uSGFuZGxl
cjpdKToKKyAgICAgICAgKC1bQ3VzdG9tTmF2aWdhdG9yUGxhdGZvcm1EZWxlZ2F0ZSBfd2ViVmll
dzpkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uOnVzZXJJbmZvOmRlY2lzaW9uSGFuZGxl
cjpdKToKKyAgICAgICAgKC1bV2Vic2l0ZVBvbGljaWVzRGV2aWNlT3JpZW50YXRpb25EZWxlZ2F0
ZSBfd2ViVmlldzpkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uOnByZWZlcmVuY2VzOnVz
ZXJJbmZvOmRlY2lzaW9uSGFuZGxlcjpdKToKKyAgICAgICAgKC1bUG9wVXBQb2xpY2llc0RlbGVn
YXRlIF93ZWJWaWV3OmRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb246ZGVjaXNpb25IYW5k
bGVyOl0pOgorICAgICAgICAoLVtXZWJzaXRlUG9saWNpZXNXZWJzaXRlRGF0YVN0b3JlRGVsZWdh
dGUgd2ViVmlldzpkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uOnByZWZlcmVuY2VzOmRl
Y2lzaW9uSGFuZGxlcjpdKToKKyAgICAgICAgKC1bQ29udGVudEJsb2NraW5nV2Vic2l0ZVBvbGlj
aWVzRGVsZWdhdGUgX3dlYlZpZXc6ZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbjpkZWNp
c2lvbkhhbmRsZXI6XSk6IERlbGV0ZWQuCisgICAgICAgICgtW0F1dG9wbGF5UG9saWNpZXNEZWxl
Z2F0ZSBfd2ViVmlldzpkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uOmRlY2lzaW9uSGFu
ZGxlcjpdKTogRGVsZXRlZC4KKyAgICAgICAgKC1bQXN5bmNBdXRvcGxheVBvbGljaWVzRGVsZWdh
dGUgX3dlYlZpZXc6ZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbjpkZWNpc2lvbkhhbmRs
ZXI6XSk6IERlbGV0ZWQuCisgICAgICAgICgtW1dlYnNpdGVQb2xpY2llc05hdmlnYXRpb25EZWxl
Z2F0ZSBfd2ViVmlldzpkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uOnVzZXJJbmZvOmRl
Y2lzaW9uSGFuZGxlcjpdKTogRGVsZXRlZC4KKyAgICAgICAgKC1bV2Vic2l0ZVBvbGljaWVzRGV2
aWNlT3JpZW50YXRpb25EZWxlZ2F0ZSBfd2ViVmlldzpkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9u
QWN0aW9uOnVzZXJJbmZvOmRlY2lzaW9uSGFuZGxlcjpdKTogRGVsZXRlZC4KKyAgICAgICAgKC1b
V2Vic2l0ZVBvbGljaWVzV2Vic2l0ZURhdGFTdG9yZURlbGVnYXRlIF93ZWJWaWV3OmRlY2lkZVBv
bGljeUZvck5hdmlnYXRpb25BY3Rpb246ZGVjaXNpb25IYW5kbGVyOl0pOiBEZWxldGVkLgorCiAy
MDE5LTEyLTIwICBSeW9zdWtlIE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgogCiAgICAgICAgIFRl
eHRNYW5pcHVsYXRpb25Db250cm9sbGVyIHNob3VsZCByZXNwZWN0IG5ldyB0b2tlbiBvcmRlcnMK
SW5kZXg6IFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvUHJvY2Vzc1N3YXBP
bk5hdmlnYXRpb24ubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9X
ZWJLaXRDb2NvYS9Qcm9jZXNzU3dhcE9uTmF2aWdhdGlvbi5tbQkocmV2aXNpb24gMjUzODIzKQor
KysgVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Qcm9jZXNzU3dhcE9uTmF2
aWdhdGlvbi5tbQkod29ya2luZyBjb3B5KQpAQCAtNDAsNiArNDAsNyBAQAogI2ltcG9ydCA8V2Vi
S2l0L1dLVVJMU2NoZW1lVGFza1ByaXZhdGUuaD4KICNpbXBvcnQgPFdlYktpdC9XS1dlYlZpZXdD
b25maWd1cmF0aW9uUHJpdmF0ZS5oPgogI2ltcG9ydCA8V2ViS2l0L1dLV2ViVmlld1ByaXZhdGVG
b3JUZXN0aW5nLmg+CisjaW1wb3J0IDxXZWJLaXQvV0tXZWJwYWdlUHJlZmVyZW5jZXMuaD4KICNp
bXBvcnQgPFdlYktpdC9XS1dlYnNpdGVEYXRhU3RvcmVQcml2YXRlLmg+CiAjaW1wb3J0IDxXZWJL
aXQvV0tXZWJzaXRlRGF0YVN0b3JlUmVmLmg+CiAjaW1wb3J0IDxXZWJLaXQvV2ViS2l0Lmg+CkBA
IC00Nyw3ICs0OCw2IEBACiAjaW1wb3J0IDxXZWJLaXQvX1dLSW5zcGVjdG9yLmg+CiAjaW1wb3J0
IDxXZWJLaXQvX1dLUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLmg+CiAjaW1wb3J0IDxXZWJLaXQv
X1dLV2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24uaD4KLSNpbXBvcnQgPFdlYktpdC9fV0tX
ZWJzaXRlUG9saWNpZXMuaD4KICNpbXBvcnQgPHd0Zi9CbG9ja1B0ci5oPgogI2ltcG9ydCA8d3Rm
L0RlcXVlLmg+CiAjaW1wb3J0IDx3dGYvSGFzaE1hcC5oPgpJbmRleDogVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9TZXJ2aWNlV29ya2VyQmFzaWMubW0KPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9TZXJ2aWNlV29ya2VyQmFz
aWMubW0JKHJldmlzaW9uIDI1MzgyMykKKysrIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2Vi
S2l0Q29jb2EvU2VydmljZVdvcmtlckJhc2ljLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0zNywxMiAr
MzcsMTIgQEAKICNpbXBvcnQgPFdlYktpdC9XS1VSTFNjaGVtZVRhc2tQcml2YXRlLmg+CiAjaW1w
b3J0IDxXZWJLaXQvV0tXZWJWaWV3Q29uZmlndXJhdGlvblByaXZhdGUuaD4KICNpbXBvcnQgPFdl
YktpdC9XS1dlYlZpZXdQcml2YXRlRm9yVGVzdGluZy5oPgorI2ltcG9ydCA8V2ViS2l0L1dLV2Vi
cGFnZVByZWZlcmVuY2VzUHJpdmF0ZS5oPgogI2ltcG9ydCA8V2ViS2l0L1dLV2Vic2l0ZURhdGFT
dG9yZVByaXZhdGUuaD4KICNpbXBvcnQgPFdlYktpdC9XS1dlYnNpdGVEYXRhU3RvcmVSZWYuaD4K
ICNpbXBvcnQgPFdlYktpdC9XZWJLaXQuaD4KICNpbXBvcnQgPFdlYktpdC9fV0tFeHBlcmltZW50
YWxGZWF0dXJlLmg+CiAjaW1wb3J0IDxXZWJLaXQvX1dLV2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3Vy
YXRpb24uaD4KLSNpbXBvcnQgPFdlYktpdC9fV0tXZWJzaXRlUG9saWNpZXMuaD4KICNpbXBvcnQg
PHd0Zi9EZXF1ZS5oPgogI2ltcG9ydCA8d3RmL0hhc2hNYXAuaD4KICNpbXBvcnQgPHd0Zi9SZXRh
aW5QdHIuaD4KQEAgLTQ3NiwxMSArNDc2LDExIEBAIC0gKGluc3RhbmNldHlwZSlpbml0V2l0aFVz
ZXJBZ2VudDooTlNTdHIKICAgICByZXR1cm4gc2VsZjsKIH0KIAotLSAodm9pZClfd2ViVmlldzoo
V0tXZWJWaWV3ICopd2ViVmlldyBkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uOihXS05h
dmlnYXRpb25BY3Rpb24gKiluYXZpZ2F0aW9uQWN0aW9uIHVzZXJJbmZvOihpZCA8TlNTZWN1cmVD
b2Rpbmc+KXVzZXJJbmZvIGRlY2lzaW9uSGFuZGxlcjoodm9pZCAoXikoV0tOYXZpZ2F0aW9uQWN0
aW9uUG9saWN5LCBfV0tXZWJzaXRlUG9saWNpZXMgKikpZGVjaXNpb25IYW5kbGVyCistICh2b2lk
KV93ZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3IGRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25B
Y3Rpb246KFdLTmF2aWdhdGlvbkFjdGlvbiAqKW5hdmlnYXRpb25BY3Rpb24gcHJlZmVyZW5jZXM6
KFdLV2VicGFnZVByZWZlcmVuY2VzICopcHJlZmVyZW5jZXMgdXNlckluZm86KGlkIDxOU1NlY3Vy
ZUNvZGluZz4pdXNlckluZm8gZGVjaXNpb25IYW5kbGVyOih2b2lkICheKShXS05hdmlnYXRpb25B
Y3Rpb25Qb2xpY3ksIFdLV2VicGFnZVByZWZlcmVuY2VzICopKWRlY2lzaW9uSGFuZGxlcgogewot
ICAgIF9XS1dlYnNpdGVQb2xpY2llcyAqd2Vic2l0ZVBvbGljaWVzID0gW1tbX1dLV2Vic2l0ZVBv
bGljaWVzIGFsbG9jXSBpbml0XSBhdXRvcmVsZWFzZV07CisgICAgV0tXZWJwYWdlUHJlZmVyZW5j
ZXMgKndlYnNpdGVQb2xpY2llcyA9IFtbW1dLV2VicGFnZVByZWZlcmVuY2VzIGFsbG9jXSBpbml0
XSBhdXRvcmVsZWFzZV07CiAgICAgaWYgKG5hdmlnYXRpb25BY3Rpb24udGFyZ2V0RnJhbWUubWFp
bkZyYW1lKQotICAgICAgICBbd2Vic2l0ZVBvbGljaWVzIHNldEN1c3RvbVVzZXJBZ2VudDpfdXNl
ckFnZW50XTsKKyAgICAgICAgW3dlYnNpdGVQb2xpY2llcyBfc2V0Q3VzdG9tVXNlckFnZW50Ol91
c2VyQWdlbnRdOwogCiAgICAgZGVjaXNpb25IYW5kbGVyKFdLTmF2aWdhdGlvbkFjdGlvblBvbGlj
eUFsbG93LCB3ZWJzaXRlUG9saWNpZXMpOwogfQpJbmRleDogVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0cy9XZWJLaXRDb2NvYS9XZWJzaXRlUG9saWNpZXMubW0KPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9XZWJzaXRlUG9saWNpZXMubW0JKHJldmlz
aW9uIDI1MzgyMykKKysrIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvV2Vi
c2l0ZVBvbGljaWVzLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0zOCwxMiArMzgsMTIgQEAKICNpbXBv
cnQgPFdlYktpdC9XS1VSTFNjaGVtZVRhc2tQcml2YXRlLmg+CiAjaW1wb3J0IDxXZWJLaXQvV0tV
c2VyQ29udGVudENvbnRyb2xsZXJQcml2YXRlLmg+CiAjaW1wb3J0IDxXZWJLaXQvV0tXZWJWaWV3
UHJpdmF0ZS5oPgorI2ltcG9ydCA8V2ViS2l0L1dLV2VicGFnZVByZWZlcmVuY2VzUHJpdmF0ZS5o
PgogI2ltcG9ydCA8V2ViS2l0L1dLV2Vic2l0ZURhdGFTdG9yZVByaXZhdGUuaD4KICNpbXBvcnQg
PFdlYktpdC9XS1dlYnNpdGVQb2xpY2llcy5oPgogI2ltcG9ydCA8V2ViS2l0L19XS0N1c3RvbUhl
YWRlckZpZWxkcy5oPgogI2ltcG9ydCA8V2ViS2l0L19XS1VzZXJDb250ZW50RXh0ZW5zaW9uU3Rv
cmVQcml2YXRlLmg+CiAjaW1wb3J0IDxXZWJLaXQvX1dLV2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3Vy
YXRpb24uaD4KLSNpbXBvcnQgPFdlYktpdC9fV0tXZWJzaXRlUG9saWNpZXMuaD4KICNpbXBvcnQg
PHd0Zi9GdW5jdGlvbi5oPgogI2ltcG9ydCA8d3RmL0hhc2hNYXAuaD4KICNpbXBvcnQgPHd0Zi9N
YWluVGhyZWFkLmg+CkBAIC0xMDQsOSArMTA0LDkgQEAgLSAodm9pZCl3ZWJWaWV3OihXS1dlYlZp
ZXcgKil3ZWJWaWV3IHJ1bgogICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7CiB9CiAKLS0gKHZvaWQp
X3dlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcgZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFj
dGlvbjooV0tOYXZpZ2F0aW9uQWN0aW9uICopbmF2aWdhdGlvbkFjdGlvbiBkZWNpc2lvbkhhbmRs
ZXI6KHZvaWQgKF4pKFdLTmF2aWdhdGlvbkFjdGlvblBvbGljeSwgX1dLV2Vic2l0ZVBvbGljaWVz
ICopKWRlY2lzaW9uSGFuZGxlcgorLSAodm9pZCl3ZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3
IGRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb246KFdLTmF2aWdhdGlvbkFjdGlvbiAqKW5h
dmlnYXRpb25BY3Rpb24gcHJlZmVyZW5jZXM6KFdLV2VicGFnZVByZWZlcmVuY2VzICopcHJlZmVy
ZW5jZXMgZGVjaXNpb25IYW5kbGVyOih2b2lkICheKShXS05hdmlnYXRpb25BY3Rpb25Qb2xpY3ks
IFdLV2VicGFnZVByZWZlcmVuY2VzICopKWRlY2lzaW9uSGFuZGxlcgogewotICAgIF9XS1dlYnNp
dGVQb2xpY2llcyAqd2Vic2l0ZVBvbGljaWVzID0gW1tbX1dLV2Vic2l0ZVBvbGljaWVzIGFsbG9j
XSBpbml0XSBhdXRvcmVsZWFzZV07CisgICAgV0tXZWJwYWdlUHJlZmVyZW5jZXMgKndlYnNpdGVQ
b2xpY2llcyA9IFtbW1dLV2VicGFnZVByZWZlcmVuY2VzIGFsbG9jXSBpbml0XSBhdXRvcmVsZWFz
ZV07CiAgICAgc3dpdGNoIChhbGVydENvdW50KSB7CiAgICAgY2FzZSAwOgogICAgICAgICAvLyBW
ZXJpZnkgdGhlIGNvbnRlbnQgYmxvY2tlcnMgYmVoYXZlIGNvcnJlY3RseSB3aXRoIHRoZSBkZWZh
dWx0IGJlaGF2aW9yLgpAQCAtMTE0LDExICsxMTQsMTEgQEAgLSAodm9pZClfd2ViVmlldzooV0tX
ZWJWaWV3ICopd2ViVmlldyBkZQogICAgIGNhc2UgMToKICAgICAgICAgewogICAgICAgICAgICAg
Ly8gVmVyaWZ5IGRpc2FibGluZyBjb250ZW50IGJsb2NrZXJzIHdvcmtzIGNvcnJlY3RseS4KLSAg
ICAgICAgICAgIHdlYnNpdGVQb2xpY2llcy5jb250ZW50QmxvY2tlcnNFbmFibGVkID0gZmFsc2U7
CisgICAgICAgICAgICB3ZWJzaXRlUG9saWNpZXMuX2NvbnRlbnRCbG9ja2Vyc0VuYWJsZWQgPSBm
YWxzZTsKICAgICAgICAgICAgIAogICAgICAgICAgICAgLy8gVmVyaWZ5IGNhbGxpbmcgdGhlIGRl
Y2lzaW9uSGFuZGxlciBhc3luY2hyb25vdXNseSB3b3JrcyBjb3JyZWN0bHkuCiAgICAgICAgICAg
ICBhdXRvIGRlY2lzaW9uSGFuZGxlckNvcHkgPSBCbG9ja19jb3B5KGRlY2lzaW9uSGFuZGxlcik7
Ci0gICAgICAgICAgICBjYWxsT25NYWluVGhyZWFkKFtkZWNpc2lvbkhhbmRsZXJDb3B5LCB3ZWJz
aXRlUG9saWNpZXMgPSBSZXRhaW5QdHI8X1dLV2Vic2l0ZVBvbGljaWVzPih3ZWJzaXRlUG9saWNp
ZXMpXSB7CisgICAgICAgICAgICBjYWxsT25NYWluVGhyZWFkKFtkZWNpc2lvbkhhbmRsZXJDb3B5
LCB3ZWJzaXRlUG9saWNpZXMgPSByZXRhaW5QdHIod2Vic2l0ZVBvbGljaWVzKV0gewogICAgICAg
ICAgICAgICAgIGRlY2lzaW9uSGFuZGxlckNvcHkoV0tOYXZpZ2F0aW9uQWN0aW9uUG9saWN5QWxs
b3csIHdlYnNpdGVQb2xpY2llcy5nZXQoKSk7CiAgICAgICAgICAgICAgICAgQmxvY2tfcmVsZWFz
ZShkZWNpc2lvbkhhbmRsZXJDb3B5KTsKICAgICAgICAgICAgIH0pOwpAQCAtMTI2LDcgKzEyNiw3
IEBAIC0gKHZvaWQpX3dlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcgZGUKICAgICAgICAgcmV0
dXJuOwogICAgIGNhc2UgMjoKICAgICAgICAgLy8gVmVyaWZ5IGVuYWJsaW5nIGNvbnRlbnQgYmxv
Y2tlcnMgaGFzIG5vIGVmZmVjdCB3aGVuIHJlbG9hZGluZyB3aXRob3V0IGNvbnRlbnQgYmxvY2tl
cnMuCi0gICAgICAgIHdlYnNpdGVQb2xpY2llcy5jb250ZW50QmxvY2tlcnNFbmFibGVkID0gdHJ1
ZTsKKyAgICAgICAgd2Vic2l0ZVBvbGljaWVzLl9jb250ZW50QmxvY2tlcnNFbmFibGVkID0gdHJ1
ZTsKICAgICAgICAgYnJlYWs7CiAgICAgZGVmYXVsdDoKICAgICAgICAgRVhQRUNUX1RSVUUoZmFs
c2UpOwpAQCAtMTM2LDcgKzEzNiw3IEBAIC0gKHZvaWQpX3dlYlZpZXc6KFdLV2ViVmlldyAqKXdl
YlZpZXcgZGUKIAogQGVuZAogCi1URVNUKFdlYktpdCwgV2Vic2l0ZVBvbGljaWVzQ29udGVudEJs
b2NrZXJzRW5hYmxlZCkKK1RFU1QoV2VicGFnZVByZWZlcmVuY2VzLCBXZWJzaXRlUG9saWNpZXND
b250ZW50QmxvY2tlcnNFbmFibGVkKQogewogICAgIFtbX1dLVXNlckNvbnRlbnRFeHRlbnNpb25T
dG9yZSBkZWZhdWx0U3RvcmVdIF9yZW1vdmVBbGxDb250ZW50RXh0ZW5zaW9uc107CiAKQEAgLTE4
OCwxMyArMTg4LDEzIEBAIC0gKHZvaWQpd2ViVmlldzooV0tXZWJWaWV3ICopd2ViVmlldyBkZWMK
ICAgICBkZWNpc2lvbkhhbmRsZXIoV0tOYXZpZ2F0aW9uQWN0aW9uUG9saWN5QWxsb3cpOwogfQog
Ci0tICh2b2lkKV93ZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3IGRlY2lkZVBvbGljeUZvck5h
dmlnYXRpb25BY3Rpb246KFdLTmF2aWdhdGlvbkFjdGlvbiAqKW5hdmlnYXRpb25BY3Rpb24gZGVj
aXNpb25IYW5kbGVyOih2b2lkICheKShXS05hdmlnYXRpb25BY3Rpb25Qb2xpY3ksIF9XS1dlYnNp
dGVQb2xpY2llcyAqKSlkZWNpc2lvbkhhbmRsZXIKKy0gKHZvaWQpd2ViVmlldzooV0tXZWJWaWV3
ICopd2ViVmlldyBkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uOihXS05hdmlnYXRpb25B
Y3Rpb24gKiluYXZpZ2F0aW9uQWN0aW9uIHByZWZlcmVuY2VzOihXS1dlYnBhZ2VQcmVmZXJlbmNl
cyAqKXByZWZlcmVuY2VzIGRlY2lzaW9uSGFuZGxlcjoodm9pZCAoXikoV0tOYXZpZ2F0aW9uQWN0
aW9uUG9saWN5LCBXS1dlYnBhZ2VQcmVmZXJlbmNlcyAqKSlkZWNpc2lvbkhhbmRsZXIKIHsKLSAg
ICBfV0tXZWJzaXRlUG9saWNpZXMgKndlYnNpdGVQb2xpY2llcyA9IFtbW19XS1dlYnNpdGVQb2xp
Y2llcyBhbGxvY10gaW5pdF0gYXV0b3JlbGVhc2VdOworICAgIFdLV2VicGFnZVByZWZlcmVuY2Vz
ICp3ZWJzaXRlUG9saWNpZXMgPSBbW1tXS1dlYnBhZ2VQcmVmZXJlbmNlcyBhbGxvY10gaW5pdF0g
YXV0b3JlbGVhc2VdOwogICAgIGlmIChfYWxsb3dlZEF1dG9wbGF5UXVpcmtzRm9yVVJMKQotICAg
ICAgICB3ZWJzaXRlUG9saWNpZXMuYWxsb3dlZEF1dG9wbGF5UXVpcmtzID0gX2FsbG93ZWRBdXRv
cGxheVF1aXJrc0ZvclVSTChuYXZpZ2F0aW9uQWN0aW9uLnJlcXVlc3QuVVJMKTsKKyAgICAgICAg
d2Vic2l0ZVBvbGljaWVzLl9hbGxvd2VkQXV0b3BsYXlRdWlya3MgPSBfYWxsb3dlZEF1dG9wbGF5
UXVpcmtzRm9yVVJMKG5hdmlnYXRpb25BY3Rpb24ucmVxdWVzdC5VUkwpOwogICAgIGlmIChfYXV0
b3BsYXlQb2xpY3lGb3JVUkwpCi0gICAgICAgIHdlYnNpdGVQb2xpY2llcy5hdXRvcGxheVBvbGlj
eSA9IF9hdXRvcGxheVBvbGljeUZvclVSTChuYXZpZ2F0aW9uQWN0aW9uLnJlcXVlc3QuVVJMKTsK
KyAgICAgICAgd2Vic2l0ZVBvbGljaWVzLl9hdXRvcGxheVBvbGljeSA9IF9hdXRvcGxheVBvbGlj
eUZvclVSTChuYXZpZ2F0aW9uQWN0aW9uLnJlcXVlc3QuVVJMKTsKICAgICBkZWNpc2lvbkhhbmRs
ZXIoV0tOYXZpZ2F0aW9uQWN0aW9uUG9saWN5QWxsb3csIHdlYnNpdGVQb2xpY2llcyk7CiB9CiAK
QEAgLTIyMiwxNCArMjIyLDE0IEBAIC0gKHZvaWQpd2ViVmlldzooV0tXZWJWaWV3ICopd2ViVmll
dyBkZWMKICAgICBkZWNpc2lvbkhhbmRsZXIoV0tOYXZpZ2F0aW9uQWN0aW9uUG9saWN5QWxsb3cp
OwogfQogCi0tICh2b2lkKV93ZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3IGRlY2lkZVBvbGlj
eUZvck5hdmlnYXRpb25BY3Rpb246KFdLTmF2aWdhdGlvbkFjdGlvbiAqKW5hdmlnYXRpb25BY3Rp
b24gZGVjaXNpb25IYW5kbGVyOih2b2lkICheKShXS05hdmlnYXRpb25BY3Rpb25Qb2xpY3ksIF9X
S1dlYnNpdGVQb2xpY2llcyAqKSlkZWNpc2lvbkhhbmRsZXIKKy0gKHZvaWQpd2ViVmlldzooV0tX
ZWJWaWV3ICopd2ViVmlldyBkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uOihXS05hdmln
YXRpb25BY3Rpb24gKiluYXZpZ2F0aW9uQWN0aW9uIHByZWZlcmVuY2VzOihXS1dlYnBhZ2VQcmVm
ZXJlbmNlcyAqKXByZWZlcmVuY2VzIGRlY2lzaW9uSGFuZGxlcjoodm9pZCAoXikoV0tOYXZpZ2F0
aW9uQWN0aW9uUG9saWN5LCBXS1dlYnBhZ2VQcmVmZXJlbmNlcyAqKSlkZWNpc2lvbkhhbmRsZXIK
IHsKICAgICBkaXNwYXRjaF9hc3luYyhkaXNwYXRjaF9nZXRfbWFpbl9xdWV1ZSgpLCBeewotICAg
ICAgICBfV0tXZWJzaXRlUG9saWNpZXMgKndlYnNpdGVQb2xpY2llcyA9IFtbW19XS1dlYnNpdGVQ
b2xpY2llcyBhbGxvY10gaW5pdF0gYXV0b3JlbGVhc2VdOworICAgICAgICBXS1dlYnBhZ2VQcmVm
ZXJlbmNlcyAqd2Vic2l0ZVBvbGljaWVzID0gW1tbV0tXZWJwYWdlUHJlZmVyZW5jZXMgYWxsb2Nd
IGluaXRdIGF1dG9yZWxlYXNlXTsKICAgICAgICAgaWYgKF9hbGxvd2VkQXV0b3BsYXlRdWlya3NG
b3JVUkwpCi0gICAgICAgICAgICB3ZWJzaXRlUG9saWNpZXMuYWxsb3dlZEF1dG9wbGF5UXVpcmtz
ID0gX2FsbG93ZWRBdXRvcGxheVF1aXJrc0ZvclVSTChuYXZpZ2F0aW9uQWN0aW9uLnJlcXVlc3Qu
VVJMKTsKKyAgICAgICAgICAgIHdlYnNpdGVQb2xpY2llcy5fYWxsb3dlZEF1dG9wbGF5UXVpcmtz
ID0gX2FsbG93ZWRBdXRvcGxheVF1aXJrc0ZvclVSTChuYXZpZ2F0aW9uQWN0aW9uLnJlcXVlc3Qu
VVJMKTsKICAgICAgICAgaWYgKF9hdXRvcGxheVBvbGljeUZvclVSTCkKLSAgICAgICAgICAgIHdl
YnNpdGVQb2xpY2llcy5hdXRvcGxheVBvbGljeSA9IF9hdXRvcGxheVBvbGljeUZvclVSTChuYXZp
Z2F0aW9uQWN0aW9uLnJlcXVlc3QuVVJMKTsKKyAgICAgICAgICAgIHdlYnNpdGVQb2xpY2llcy5f
YXV0b3BsYXlQb2xpY3kgPSBfYXV0b3BsYXlQb2xpY3lGb3JVUkwobmF2aWdhdGlvbkFjdGlvbi5y
ZXF1ZXN0LlVSTCk7CiAgICAgICAgIGRlY2lzaW9uSGFuZGxlcihXS05hdmlnYXRpb25BY3Rpb25Q
b2xpY3lBbGxvdywgd2Vic2l0ZVBvbGljaWVzKTsKICAgICB9KTsKIH0KQEAgLTI0NSwyNCArMjQ1
LDIyIEBAIC0gKHZvaWQpX3dlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcgaGEKIEBlbmQKIAog
QGludGVyZmFjZSBXZWJzaXRlUG9saWNpZXNOYXZpZ2F0aW9uRGVsZWdhdGUgOiBUZXN0TmF2aWdh
dGlvbkRlbGVnYXRlIDxXS05hdmlnYXRpb25EZWxlZ2F0ZVByaXZhdGU+Ci1AcHJvcGVydHkgKG5v
bmF0b21pYywgY29weSkgdm9pZCAoXmRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb25XaXRo
V2Vic2l0ZVBvbGljaWVzKShXS05hdmlnYXRpb25BY3Rpb24gKiwgaWQgPE5TU2VjdXJlQ29kaW5n
Piwgdm9pZCAoXikoV0tOYXZpZ2F0aW9uQWN0aW9uUG9saWN5LCBfV0tXZWJzaXRlUG9saWNpZXMg
KikpOworQHByb3BlcnR5IChub25hdG9taWMsIGNvcHkpIHZvaWQgKF5kZWNpZGVQb2xpY3lGb3JO
YXZpZ2F0aW9uQWN0aW9uV2l0aFdlYnNpdGVQb2xpY2llcykoV0tOYXZpZ2F0aW9uQWN0aW9uICos
IFdLV2VicGFnZVByZWZlcmVuY2VzICosIGlkIDxOU1NlY3VyZUNvZGluZz4sIHZvaWQgKF4pKFdL
TmF2aWdhdGlvbkFjdGlvblBvbGljeSwgV0tXZWJwYWdlUHJlZmVyZW5jZXMgKikpOwogQGVuZAog
CiBAaW1wbGVtZW50YXRpb24gV2Vic2l0ZVBvbGljaWVzTmF2aWdhdGlvbkRlbGVnYXRlCiAKLUlH
Tk9SRV9XQVJOSU5HU19CRUdJTigiZGVwcmVjYXRlZC1pbXBsZW1lbnRhdGlvbnMiKQotLSAodm9p
ZClfd2ViVmlldzooV0tXZWJWaWV3ICopd2ViVmlldyBkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9u
QWN0aW9uOihXS05hdmlnYXRpb25BY3Rpb24gKiluYXZpZ2F0aW9uQWN0aW9uIHVzZXJJbmZvOihp
ZCA8TlNTZWN1cmVDb2Rpbmc+KXVzZXJJbmZvIGRlY2lzaW9uSGFuZGxlcjoodm9pZCAoXikoV0tO
YXZpZ2F0aW9uQWN0aW9uUG9saWN5LCBfV0tXZWJzaXRlUG9saWNpZXMgKikpZGVjaXNpb25IYW5k
bGVyCi1JR05PUkVfV0FSTklOR1NfRU5ECistICh2b2lkKV93ZWJWaWV3OihXS1dlYlZpZXcgKil3
ZWJWaWV3IGRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb246KFdLTmF2aWdhdGlvbkFjdGlv
biAqKW5hdmlnYXRpb25BY3Rpb24gcHJlZmVyZW5jZXM6KFdLV2VicGFnZVByZWZlcmVuY2VzICop
cHJlZmVyZW5jZXMgdXNlckluZm86KGlkIDxOU1NlY3VyZUNvZGluZz4pdXNlckluZm8gZGVjaXNp
b25IYW5kbGVyOih2b2lkICheKShXS05hdmlnYXRpb25BY3Rpb25Qb2xpY3ksIFdLV2VicGFnZVBy
ZWZlcmVuY2VzICopKWRlY2lzaW9uSGFuZGxlcgogewogICAgIGlmIChfZGVjaWRlUG9saWN5Rm9y
TmF2aWdhdGlvbkFjdGlvbldpdGhXZWJzaXRlUG9saWNpZXMpCi0gICAgICAgIF9kZWNpZGVQb2xp
Y3lGb3JOYXZpZ2F0aW9uQWN0aW9uV2l0aFdlYnNpdGVQb2xpY2llcyhuYXZpZ2F0aW9uQWN0aW9u
LCB1c2VySW5mbywgZGVjaXNpb25IYW5kbGVyKTsKKyAgICAgICAgX2RlY2lkZVBvbGljeUZvck5h
dmlnYXRpb25BY3Rpb25XaXRoV2Vic2l0ZVBvbGljaWVzKG5hdmlnYXRpb25BY3Rpb24sIHByZWZl
cmVuY2VzLCB1c2VySW5mbywgZGVjaXNpb25IYW5kbGVyKTsKICAgICBlbHNlCiAgICAgICAgIGRl
Y2lzaW9uSGFuZGxlcihXS05hdmlnYXRpb25BY3Rpb25Qb2xpY3lBbGxvdywgbmlsKTsKIH0KIAog
QGVuZAogCi1URVNUKFdlYktpdCwgV2Vic2l0ZVBvbGljaWVzQXV0b3BsYXlFbmFibGVkKQorVEVT
VChXZWJwYWdlUHJlZmVyZW5jZXMsIFdlYnNpdGVQb2xpY2llc0F1dG9wbGF5RW5hYmxlZCkKIHsK
ICAgICBhdXRvIGNvbmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtbV0tXZWJWaWV3Q29uZmlndXJhdGlv
biBhbGxvY10gaW5pdF0pOwogCkBAIC0zMTAsOSArMzA4LDkgQEAgVEVTVChXZWJLaXQsIFdlYnNp
dGVQb2xpY2llc0F1dG9wbGF5RW5hYgogICAgIFt3ZWJWaWV3IHdhaXRGb3JNZXNzYWdlOkAiZGlk
LW5vdC1wbGF5Il07CiAKICAgICAvLyBUZXN0IHVwZGF0aW5nIHdlYnNpdGUgcG9saWNpZXMuCi0g
ICAgX1dLV2Vic2l0ZVBvbGljaWVzICp3ZWJzaXRlUG9saWNpZXMgPSBbW1tfV0tXZWJzaXRlUG9s
aWNpZXMgYWxsb2NdIGluaXRdIGF1dG9yZWxlYXNlXTsKLSAgICB3ZWJzaXRlUG9saWNpZXMuYXV0
b3BsYXlQb2xpY3kgPSBfV0tXZWJzaXRlQXV0b3BsYXlQb2xpY3lBbGxvdzsKLSAgICBbd2ViVmll
dyBfdXBkYXRlV2Vic2l0ZVBvbGljaWVzOndlYnNpdGVQb2xpY2llc107CisgICAgV0tXZWJwYWdl
UHJlZmVyZW5jZXMgKndlYnNpdGVQb2xpY2llcyA9IFtbW1dLV2VicGFnZVByZWZlcmVuY2VzIGFs
bG9jXSBpbml0XSBhdXRvcmVsZWFzZV07CisgICAgd2Vic2l0ZVBvbGljaWVzLl9hdXRvcGxheVBv
bGljeSA9IF9XS1dlYnNpdGVBdXRvcGxheVBvbGljeUFsbG93OworICAgIFt3ZWJWaWV3IF91cGRh
dGVXZWJwYWdlUHJlZmVyZW5jZXM6d2Vic2l0ZVBvbGljaWVzXTsKICAgICBbd2ViVmlldyBzdHJp
bmdCeUV2YWx1YXRpbmdKYXZhU2NyaXB0OkAicGxheVZpZGVvKCkiXTsKICAgICBbd2ViVmlldyB3
YWl0Rm9yTWVzc2FnZTpAImF1dG9wbGF5ZWQiXTsKIApAQCAtMzYzLDcgKzM2MSw3IEBAIHN0YXRp
YyB2b2lkIHJ1blVudGlsUmVjZWl2ZXNBdXRvcGxheUV2ZW4KICAgICAgICAgQ0ZSdW5Mb29wUnVu
SW5Nb2RlKGtDRlJ1bkxvb3BEZWZhdWx0TW9kZSwgMC4xLCB0cnVlKTsKIH0KIAotVEVTVChXZWJL
aXQsIFdlYnNpdGVQb2xpY2llc1BsYXlBZnRlclByZXZlbnRlZEF1dG9wbGF5KQorVEVTVChXZWJw
YWdlUHJlZmVyZW5jZXMsIFdlYnNpdGVQb2xpY2llc1BsYXlBZnRlclByZXZlbnRlZEF1dG9wbGF5
KQogewogICAgIGF1dG8gY29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tXS1dlYlZpZXdDb25maWd1
cmF0aW9uIGFsbG9jXSBpbml0XSk7CiAgICAgYXV0byB3ZWJWaWV3ID0gYWRvcHROUyhbW1Rlc3RX
S1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgwLCAwLCAzMzYsIDI3Nikg
Y29uZmlndXJhdGlvbjpjb25maWd1cmF0aW9uLmdldCgpXSk7CkBAIC00MzQsNyArNDMyLDcgQEAg
VEVTVChXZWJLaXQsIFdlYnNpdGVQb2xpY2llc1BsYXlBZnRlclByZQogICAgIEFTU0VSVF9UUlVF
KCpyZWNlaXZlZEF1dG9wbGF5RXZlbnRGbGFncyAmIGtXS0F1dG9wbGF5RXZlbnRGbGFnc1BsYXli
YWNrV2FzUHJldmVudGVkKTsKIH0KIAotVEVTVChXZWJLaXQsIFdlYnNpdGVQb2xpY2llc1BsYXlp
bmdXaXRoVXNlckdlc3R1cmUpCitURVNUKFdlYnBhZ2VQcmVmZXJlbmNlcywgV2Vic2l0ZVBvbGlj
aWVzUGxheWluZ1dpdGhVc2VyR2VzdHVyZSkKIHsKICAgICBhdXRvIGNvbmZpZ3VyYXRpb24gPSBh
ZG9wdE5TKFtbV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF0pOwogICAgIGF1dG8g
d2ViVmlldyA9IGFkb3B0TlMoW1tUZXN0V0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5T
TWFrZVJlY3QoMCwgMCwgODAwLCA2MDApIGNvbmZpZ3VyYXRpb246Y29uZmlndXJhdGlvbi5nZXQo
KV0pOwpAQCAtNDczLDcgKzQ3MSw3IEBAIFRFU1QoV2ViS2l0LCBXZWJzaXRlUG9saWNpZXNQbGF5
aW5nV2l0aFUKICAgICBBU1NFUlRfVFJVRSgqcmVjZWl2ZWRBdXRvcGxheUV2ZW50RmxhZ3MgJiBr
V0tBdXRvcGxheUV2ZW50RmxhZ3NNZWRpYUlzTWFpbkNvbnRlbnQpOwogfQogCi1URVNUKFdlYktp
dCwgV2Vic2l0ZVBvbGljaWVzUGxheWluZ1dpdGhvdXRJbnRlcmZlcmVuY2UpCitURVNUKFdlYnBh
Z2VQcmVmZXJlbmNlcywgV2Vic2l0ZVBvbGljaWVzUGxheWluZ1dpdGhvdXRJbnRlcmZlcmVuY2Up
CiB7CiAgICAgYXV0byBjb25maWd1cmF0aW9uID0gYWRvcHROUyhbW1dLV2ViVmlld0NvbmZpZ3Vy
YXRpb24gYWxsb2NdIGluaXRdKTsKICAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtbVGVzdFdL
V2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU01ha2VSZWN0KDAsIDAsIDMzNiwgMjc2KSBj
b25maWd1cmF0aW9uOmNvbmZpZ3VyYXRpb24uZ2V0KCldKTsKQEAgLTQ5Miw3ICs0OTAsNyBAQCBU
RVNUKFdlYktpdCwgV2Vic2l0ZVBvbGljaWVzUGxheWluZ1dpdGhvCiAgICAgQVNTRVJUX1RSVUUo
KnJlY2VpdmVkQXV0b3BsYXlFdmVudEZsYWdzICYga1dLQXV0b3BsYXlFdmVudEZsYWdzSGFzQXVk
aW8pOwogfQogCi1URVNUKFdlYktpdCwgV2Vic2l0ZVBvbGljaWVzVXNlckludGVyZmVyZW5jZVdp
dGhQbGF5aW5nKQorVEVTVChXZWJwYWdlUHJlZmVyZW5jZXMsIFdlYnNpdGVQb2xpY2llc1VzZXJJ
bnRlcmZlcmVuY2VXaXRoUGxheWluZykKIHsKICAgICBhdXRvIGNvbmZpZ3VyYXRpb24gPSBhZG9w
dE5TKFtbV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF0pOwogICAgIGF1dG8gd2Vi
VmlldyA9IGFkb3B0TlMoW1tUZXN0V0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TTWFr
ZVJlY3QoMCwgMCwgMzM2LCAyNzYpIGNvbmZpZ3VyYXRpb246Y29uZmlndXJhdGlvbi5nZXQoKV0p
OwpAQCAtNTM3LDcgKzUzNSw3IEBAIFRFU1QoV2ViS2l0LCBXZWJzaXRlUG9saWNpZXNVc2VySW50
ZXJmZXIKICAgICBBU1NFUlRfVFJVRSgqcmVjZWl2ZWRBdXRvcGxheUV2ZW50RmxhZ3MgJiBrV0tB
dXRvcGxheUV2ZW50RmxhZ3NIYXNBdWRpbyk7CiB9CiAKLVRFU1QoV2ViS2l0LCBXZWJzaXRlUG9s
aWNpZXNQZXJEb2N1bWVudEF1dG9wbGF5QmVoYXZpb3JNZWRpYUxvYWRpbmcpCitURVNUKFdlYnBh
Z2VQcmVmZXJlbmNlcywgV2Vic2l0ZVBvbGljaWVzUGVyRG9jdW1lbnRBdXRvcGxheUJlaGF2aW9y
TWVkaWFMb2FkaW5nKQogewogICAgIGF1dG8gY29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tXS1dl
YlZpZXdDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0XSk7CiAgICAgYXV0byB3ZWJWaWV3ID0gYWRv
cHROUyhbW1Rlc3RXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgwLCAw
LCA4MDAsIDYwMCkgY29uZmlndXJhdGlvbjpjb25maWd1cmF0aW9uLmdldCgpXSk7CkBAIC01Nzcs
MTYgKzU3NSwxNiBAQCBURVNUKFdlYktpdCwgV2Vic2l0ZVBvbGljaWVzUGVyRG9jdW1lbnRBCiAg
ICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZyZWNlaXZlZExvYWRlZEV2ZW50KTsKIH0KIAot
VEVTVChXZWJLaXQsIFdlYnNpdGVQb2xpY2llc1dpdGhCcmlkZ2luZ0Nhc3QpCitURVNUKFdlYnBh
Z2VQcmVmZXJlbmNlcywgV2Vic2l0ZVBvbGljaWVzV2l0aEJyaWRnaW5nQ2FzdCkKIHsKICAgICBh
dXRvIGNvbmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtbV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBhbGxv
Y10gaW5pdF0pOwogICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tUZXN0V0tXZWJWaWV3IGFs
bG9jXSBpbml0V2l0aEZyYW1lOk5TTWFrZVJlY3QoMCwgMCwgMzM2LCAyNzYpIGNvbmZpZ3VyYXRp
b246Y29uZmlndXJhdGlvbi5nZXQoKV0pOwogICAgIGF1dG8gZGVsZWdhdGUgPSBhZG9wdE5TKFtb
V2Vic2l0ZVBvbGljaWVzTmF2aWdhdGlvbkRlbGVnYXRlIGFsbG9jXSBpbml0XSk7CiAKICAgICBf
X2Jsb2NrIGJvb2wgZGlkSW52b2tlRGVjaXNpb25IYW5kbGVyID0gZmFsc2U7Ci0gICAgW2RlbGVn
YXRlIHNldERlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb25XaXRoV2Vic2l0ZVBvbGljaWVz
Ol4oV0tOYXZpZ2F0aW9uQWN0aW9uICosIGlkIDxOU1NlY3VyZUNvZGluZz4sIHZvaWQgKF5kZWNp
c2lvbkhhbmRsZXIpKFdLTmF2aWdhdGlvbkFjdGlvblBvbGljeSwgX1dLV2Vic2l0ZVBvbGljaWVz
ICopKSB7CisgICAgW2RlbGVnYXRlIHNldERlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb25X
aXRoV2Vic2l0ZVBvbGljaWVzOl4oV0tOYXZpZ2F0aW9uQWN0aW9uICosIFdLV2VicGFnZVByZWZl
cmVuY2VzICosIGlkIDxOU1NlY3VyZUNvZGluZz4sIHZvaWQgKF5kZWNpc2lvbkhhbmRsZXIpKFdL
TmF2aWdhdGlvbkFjdGlvblBvbGljeSwgV0tXZWJwYWdlUHJlZmVyZW5jZXMgKikpIHsKICAgICAg
ICAgYXV0byBwb2xpY2llcyA9IGFkb3B0V0soV0tXZWJzaXRlUG9saWNpZXNDcmVhdGUoKSk7Ci0g
ICAgICAgIGRlY2lzaW9uSGFuZGxlcihXS05hdmlnYXRpb25BY3Rpb25Qb2xpY3lBbGxvdywgKF9f
YnJpZGdlIF9XS1dlYnNpdGVQb2xpY2llcyAqKXBvbGljaWVzLmdldCgpKTsKKyAgICAgICAgZGVj
aXNpb25IYW5kbGVyKFdLTmF2aWdhdGlvbkFjdGlvblBvbGljeUFsbG93LCAoX19icmlkZ2UgV0tX
ZWJwYWdlUHJlZmVyZW5jZXMgKilwb2xpY2llcy5nZXQoKSk7CiAgICAgICAgIGRpZEludm9rZURl
Y2lzaW9uSGFuZGxlciA9IHRydWU7CiAgICAgfV07CiAKQEAgLTU5NiwxNyArNTk0LDE3IEBAIFRF
U1QoV2ViS2l0LCBXZWJzaXRlUG9saWNpZXNXaXRoQnJpZGdpbmcKICAgICBFWFBFQ1RfVFJVRShk
aWRJbnZva2VEZWNpc2lvbkhhbmRsZXIpOwogfQogCi1URVNUKFdlYktpdCwgV2Vic2l0ZVBvbGlj
aWVzV2l0aFVuZXhwZWN0ZWRUeXBlKQorVEVTVChXZWJwYWdlUHJlZmVyZW5jZXMsIFdlYnNpdGVQ
b2xpY2llc1dpdGhVbmV4cGVjdGVkVHlwZSkKIHsKICAgICBhdXRvIGNvbmZpZ3VyYXRpb24gPSBh
ZG9wdE5TKFtbV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF0pOwogICAgIGF1dG8g
d2ViVmlldyA9IGFkb3B0TlMoW1tUZXN0V0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5T
TWFrZVJlY3QoMCwgMCwgMzM2LCAyNzYpIGNvbmZpZ3VyYXRpb246Y29uZmlndXJhdGlvbi5nZXQo
KV0pOwogICAgIGF1dG8gZGVsZWdhdGUgPSBhZG9wdE5TKFtbV2Vic2l0ZVBvbGljaWVzTmF2aWdh
dGlvbkRlbGVnYXRlIGFsbG9jXSBpbml0XSk7CiAKICAgICBfX2Jsb2NrIGJvb2wgZGlkQ2F0Y2hF
eGNlcHRpb24gPSBmYWxzZTsKLSAgICBbZGVsZWdhdGUgc2V0RGVjaWRlUG9saWN5Rm9yTmF2aWdh
dGlvbkFjdGlvbldpdGhXZWJzaXRlUG9saWNpZXM6XihXS05hdmlnYXRpb25BY3Rpb24gKiwgaWQg
PE5TU2VjdXJlQ29kaW5nPiwgdm9pZCAoXmRlY2lzaW9uSGFuZGxlcikoV0tOYXZpZ2F0aW9uQWN0
aW9uUG9saWN5LCBfV0tXZWJzaXRlUG9saWNpZXMgKikpIHsKKyAgICBbZGVsZWdhdGUgc2V0RGVj
aWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbldpdGhXZWJzaXRlUG9saWNpZXM6XihXS05hdmln
YXRpb25BY3Rpb24gKiwgV0tXZWJwYWdlUHJlZmVyZW5jZXMgKiwgaWQgPE5TU2VjdXJlQ29kaW5n
Piwgdm9pZCAoXmRlY2lzaW9uSGFuZGxlcikoV0tOYXZpZ2F0aW9uQWN0aW9uUG9saWN5LCBXS1dl
YnBhZ2VQcmVmZXJlbmNlcyAqKSkgewogICAgICAgICBAdHJ5IHsKICAgICAgICAgICAgIGlkIGZh
a2VQb2xpY2llcyA9IEAiSGVsbG8iOwotICAgICAgICAgICAgZGVjaXNpb25IYW5kbGVyKFdLTmF2
aWdhdGlvbkFjdGlvblBvbGljeUFsbG93LCAoX1dLV2Vic2l0ZVBvbGljaWVzICopZmFrZVBvbGlj
aWVzKTsKKyAgICAgICAgICAgIGRlY2lzaW9uSGFuZGxlcihXS05hdmlnYXRpb25BY3Rpb25Qb2xp
Y3lBbGxvdywgKFdLV2VicGFnZVByZWZlcmVuY2VzICopZmFrZVBvbGljaWVzKTsKICAgICAgICAg
fSBAY2F0Y2ggKE5TRXhjZXB0aW9uICpleGNlcHRpb24pIHsKICAgICAgICAgICAgIGRpZENhdGNo
RXhjZXB0aW9uID0gdHJ1ZTsKICAgICAgICAgfQpAQCAtNjk2LDcgKzY5NCw3IEBAIC0gKHZvaWQp
d2ViVmlldzooV0tXZWJWaWV3ICopd2ViVmlldyBzdG8KIAogQGVuZAogCi1URVNUKFdlYktpdCwg
V2Vic2l0ZVBvbGljaWVzRHVyaW5nUmVkaXJlY3QpCitURVNUKFdlYnBhZ2VQcmVmZXJlbmNlcywg
V2Vic2l0ZVBvbGljaWVzRHVyaW5nUmVkaXJlY3QpCiB7CiAgICAgYXV0byBjb25maWd1cmF0aW9u
ID0gYWRvcHROUyhbW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdKTsKICAgICBh
dXRvIHZpZGVvRGF0YSA9IGFkb3B0TlMoW1tOU0RhdGEgYWxsb2NdIGluaXRXaXRoQ29udGVudHNP
ZlVSTDpbW05TQnVuZGxlIG1haW5CdW5kbGVdIFVSTEZvclJlc291cmNlOkAidGVzdCIgd2l0aEV4
dGVuc2lvbjpAIm1wNCIgc3ViZGlyZWN0b3J5OkAiVGVzdFdlYktpdEFQSS5yZXNvdXJjZXMiXV0p
OwpAQCAtNzE2LDcgKzcxNCw3IEBAIFRFU1QoV2ViS2l0LCBXZWJzaXRlUG9saWNpZXNEdXJpbmdS
ZWRpcmUKICAgICBbd2ViVmlldyB3YWl0Rm9yTWVzc2FnZTpAImF1dG9wbGF5ZWQiXTsKIH0KIAot
VEVTVChXZWJLaXQsIFdlYnNpdGVQb2xpY2llc1VwZGF0ZXMpCitURVNUKFdlYnBhZ2VQcmVmZXJl
bmNlcywgV2Vic2l0ZVBvbGljaWVzVXBkYXRlcykKIHsKICAgICBhdXRvIGNvbmZpZ3VyYXRpb24g
PSBhZG9wdE5TKFtbV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF0pOwogICAgIGF1
dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tUZXN0V0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1l
Ok5TTWFrZVJlY3QoMCwgMCwgODAwLCA2MDApIGNvbmZpZ3VyYXRpb246Y29uZmlndXJhdGlvbi5n
ZXQoKV0pOwpAQCAtNzMyLDkgKzczMCw5IEBAIFRFU1QoV2ViS2l0LCBXZWJzaXRlUG9saWNpZXNV
cGRhdGVzKQogICAgIFt3ZWJWaWV3IGxvYWRSZXF1ZXN0OnJlcXVlc3RXaXRoQXVkaW9dOwogICAg
IFt3ZWJWaWV3IHdhaXRGb3JNZXNzYWdlOkAiZGlkLW5vdC1wbGF5Il07CiAKLSAgICBfV0tXZWJz
aXRlUG9saWNpZXMgKnBvbGljaWVzID0gW1tbX1dLV2Vic2l0ZVBvbGljaWVzIGFsbG9jXSBpbml0
XSBhdXRvcmVsZWFzZV07Ci0gICAgcG9saWNpZXMuYXV0b3BsYXlQb2xpY3kgPSBfV0tXZWJzaXRl
QXV0b3BsYXlQb2xpY3lBbGxvdzsKLSAgICBbd2ViVmlldyBfdXBkYXRlV2Vic2l0ZVBvbGljaWVz
OnBvbGljaWVzXTsKKyAgICBXS1dlYnBhZ2VQcmVmZXJlbmNlcyAqcG9saWNpZXMgPSBbW1tXS1dl
YnBhZ2VQcmVmZXJlbmNlcyBhbGxvY10gaW5pdF0gYXV0b3JlbGVhc2VdOworICAgIHBvbGljaWVz
Ll9hdXRvcGxheVBvbGljeSA9IF9XS1dlYnNpdGVBdXRvcGxheVBvbGljeUFsbG93OworICAgIFt3
ZWJWaWV3IF91cGRhdGVXZWJwYWdlUHJlZmVyZW5jZXM6cG9saWNpZXNdOwogCiAgICAgLy8gTm93
IHRoYXQgd2UgdXBkYXRlZCBvdXIgcG9saWNpZXMsIGEgc2NyaXB0IHNob3VsZCBiZSBhYmxlIHRv
IGF1dG9wbGF5IG1lZGlhLgogICAgIFt3ZWJWaWV3IHN0cmluZ0J5RXZhbHVhdGluZ0phdmFTY3Jp
cHQ6QCJwbGF5VmlkZW8oKSJdOwpAQCAtNzUyLDcgKzc1MCw3IEBAIFRFU1QoV2ViS2l0LCBXZWJz
aXRlUG9saWNpZXNVcGRhdGVzKQogICAgIHJ1blVudGlsUmVjZWl2ZXNBdXRvcGxheUV2ZW50KGtX
S0F1dG9wbGF5RXZlbnREaWRQcmV2ZW50RnJvbUF1dG9wbGF5aW5nKTsKIH0KIAotVEVTVChXZWJL
aXQsIFdlYnNpdGVQb2xpY2llc0FyYml0cmFyeVVzZXJHZXN0dXJlUXVpcmspCitURVNUKFdlYnBh
Z2VQcmVmZXJlbmNlcywgV2Vic2l0ZVBvbGljaWVzQXJiaXRyYXJ5VXNlckdlc3R1cmVRdWlyaykK
IHsKICAgICBhdXRvIGNvbmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtbV0tXZWJWaWV3Q29uZmlndXJh
dGlvbiBhbGxvY10gaW5pdF0pOwogICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tUZXN0V0tX
ZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TTWFrZVJlY3QoMCwgMCwgODAwLCA2MDApIGNv
bmZpZ3VyYXRpb246Y29uZmlndXJhdGlvbi5nZXQoKV0pOwpAQCAtNzg1LDcgKzc4Myw3IEBAIFRF
U1QoV2ViS2l0LCBXZWJzaXRlUG9saWNpZXNBcmJpdHJhcnlVc2UKICAgICBbd2ViVmlldyB3YWl0
Rm9yTWVzc2FnZTpAImF1dG9wbGF5ZWQiXTsKIH0KIAotVEVTVChXZWJLaXQsIFdlYnNpdGVQb2xp
Y2llc0F1dG9wbGF5UXVpcmtzKQorVEVTVChXZWJwYWdlUHJlZmVyZW5jZXMsIFdlYnNpdGVQb2xp
Y2llc0F1dG9wbGF5UXVpcmtzKQogewogICAgIGF1dG8gY29uZmlndXJhdGlvbiA9IGFkb3B0TlMo
W1tXS1dlYlZpZXdDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0XSk7CiAgICAgYXV0byB3ZWJWaWV3
ID0gYWRvcHROUyhbW1Rlc3RXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNNYWtlUmVj
dCgwLCAwLCA4MDAsIDYwMCkgY29uZmlndXJhdGlvbjpjb25maWd1cmF0aW9uLmdldCgpXSk7CkBA
IC04NDMsNyArODQxLDcgQEAgVEVTVChXZWJLaXQsIFdlYnNpdGVQb2xpY2llc0F1dG9wbGF5UXVp
cgogICAgIFt3ZWJWaWV3IHdhaXRGb3JNZXNzYWdlOkAicGxheWluZyJdOwogfQogCi1URVNUKFdl
YktpdCwgV2Vic2l0ZVBvbGljaWVzUGVyRG9jdW1lbnRBdXRvcGxheUJlaGF2aW9yUXVpcmtzKQor
VEVTVChXZWJwYWdlUHJlZmVyZW5jZXMsIFdlYnNpdGVQb2xpY2llc1BlckRvY3VtZW50QXV0b3Bs
YXlCZWhhdmlvclF1aXJrcykKIHsKICAgICBhdXRvIGNvbmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtb
V0tXZWJWaWV3Q29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF0pOwogICAgIGF1dG8gd2ViVmlldyA9
IGFkb3B0TlMoW1tUZXN0V0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TTWFrZVJlY3Qo
MCwgMCwgODAwLCA2MDApIGNvbmZpZ3VyYXRpb246Y29uZmlndXJhdGlvbi5nZXQoKV0pOwpAQCAt
OTA2LDcgKzkwNCw3IEBAIFRFU1QoV2ViS2l0LCBXZWJzaXRlUG9saWNpZXNQZXJEb2N1bWVudEEK
ICAgICBbd2ViVmlldyB3YWl0Rm9yTWVzc2FnZTpAImRpZC1ub3QtcGxheS12aWRlbzIiXTsKIH0K
IAotVEVTVChXZWJLaXQsIFdlYnNpdGVQb2xpY2llc0F1dG9wbGF5UXVpcmtzQXN5bmNQb2xpY3lE
ZWxlZ2F0ZSkKK1RFU1QoV2VicGFnZVByZWZlcmVuY2VzLCBXZWJzaXRlUG9saWNpZXNBdXRvcGxh
eVF1aXJrc0FzeW5jUG9saWN5RGVsZWdhdGUpCiB7CiAgICAgYXV0byBjb25maWd1cmF0aW9uID0g
YWRvcHROUyhbW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdKTsKICAgICBhdXRv
IHdlYlZpZXcgPSBhZG9wdE5TKFtbVGVzdFdLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpO
U01ha2VSZWN0KDAsIDAsIDgwMCwgNjAwKSBjb25maWd1cmF0aW9uOmNvbmZpZ3VyYXRpb24uZ2V0
KCldKTsKQEAgLTk1MCw3ICs5NDgsNyBAQCBURVNUKFdlYktpdCwgV2Vic2l0ZVBvbGljaWVzQXV0
b3BsYXlRdWlyCiB9CiAjZW5kaWYgLy8gUExBVEZPUk0oTUFDKQogCi1URVNUKFdlYktpdCwgSW52
YWxpZEN1c3RvbUhlYWRlcnMpCitURVNUKFdlYnBhZ2VQcmVmZXJlbmNlcywgSW52YWxpZEN1c3Rv
bUhlYWRlcnMpCiB7CiAgICAgYXV0byBjdXN0b21IZWFkZXJGaWVsZHMgPSBhZG9wdE5TKFtbX1dL
Q3VzdG9tSGVhZGVyRmllbGRzIGFsbG9jXSBpbml0XSk7CiAgICAgW2N1c3RvbUhlYWRlckZpZWxk
cyBzZXRGaWVsZHM6QHtAImludmFsaWRoZWFkZXIiIDogQCIiLCBAIm5vbmN1c3RvbSIgOiBAImhl
YWRlciIsIEAiICAgIHgtQ3VzdG9tICI6QCIgIE5lZWRzIENhbm9uaWNhbGl6YXRpb25cdCAiLCBA
Ingtb3RoZXIiIDogQCJvdGhlciB2YWx1ZSJ9XTsKQEAgLTEwOTcsNyArMTA5NSw3IEBAIC0gKHZv
aWQpd2ViVmlldzooV0tXZWJWaWV3ICopd2ViVmlldyBzdG8KIAogQGVuZAogCi1URVNUKFdlYktp
dCwgQ3VzdG9tSGVhZGVyRmllbGRzKQorVEVTVChXZWJwYWdlUHJlZmVyZW5jZXMsIEN1c3RvbUhl
YWRlckZpZWxkcykKIHsKICAgICBhdXRvIGRlbGVnYXRlID0gYWRvcHROUyhbW0N1c3RvbUhlYWRl
ckZpZWxkc0RlbGVnYXRlIGFsbG9jXSBpbml0XSk7CiAgICAgYXV0byBjb25maWd1cmF0aW9uID0g
YWRvcHROUyhbW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdKTsKQEAgLTExNzAs
MTIgKzExNjgsMTIgQEAgQGludGVyZmFjZSBDdXN0b21Vc2VyQWdlbnREZWxlZ2F0ZSA6IE5TTwog
QGltcGxlbWVudGF0aW9uIEN1c3RvbVVzZXJBZ2VudERlbGVnYXRlCiAKIElHTk9SRV9XQVJOSU5H
U19CRUdJTigiZGVwcmVjYXRlZC1pbXBsZW1lbnRhdGlvbnMiKQotLSAodm9pZClfd2ViVmlldzoo
V0tXZWJWaWV3ICopd2ViVmlldyBkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uOihXS05h
dmlnYXRpb25BY3Rpb24gKiluYXZpZ2F0aW9uQWN0aW9uIHVzZXJJbmZvOihpZCA8TlNTZWN1cmVD
b2Rpbmc+KXVzZXJJbmZvIGRlY2lzaW9uSGFuZGxlcjoodm9pZCAoXikoV0tOYXZpZ2F0aW9uQWN0
aW9uUG9saWN5LCBfV0tXZWJzaXRlUG9saWNpZXMgKikpZGVjaXNpb25IYW5kbGVyCistICh2b2lk
KV93ZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3IGRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25B
Y3Rpb246KFdLTmF2aWdhdGlvbkFjdGlvbiAqKW5hdmlnYXRpb25BY3Rpb24gdXNlckluZm86KGlk
IDxOU1NlY3VyZUNvZGluZz4pdXNlckluZm8gZGVjaXNpb25IYW5kbGVyOih2b2lkICheKShXS05h
dmlnYXRpb25BY3Rpb25Qb2xpY3ksIFdLV2VicGFnZVByZWZlcmVuY2VzICopKWRlY2lzaW9uSGFu
ZGxlcgogSUdOT1JFX1dBUk5JTkdTX0VORAogewotICAgIF9XS1dlYnNpdGVQb2xpY2llcyAqd2Vi
c2l0ZVBvbGljaWVzID0gW1tbX1dLV2Vic2l0ZVBvbGljaWVzIGFsbG9jXSBpbml0XSBhdXRvcmVs
ZWFzZV07CisgICAgV0tXZWJwYWdlUHJlZmVyZW5jZXMgKndlYnNpdGVQb2xpY2llcyA9IFtbW1dL
V2VicGFnZVByZWZlcmVuY2VzIGFsbG9jXSBpbml0XSBhdXRvcmVsZWFzZV07CiAgICAgaWYgKG5h
dmlnYXRpb25BY3Rpb24udGFyZ2V0RnJhbWUubWFpbkZyYW1lKQotICAgICAgICBbd2Vic2l0ZVBv
bGljaWVzIHNldEN1c3RvbVVzZXJBZ2VudDpAIkZvbyBDdXN0b20gVXNlckFnZW50Il07CisgICAg
ICAgIFt3ZWJzaXRlUG9saWNpZXMgX3NldEN1c3RvbVVzZXJBZ2VudDpAIkZvbyBDdXN0b20gVXNl
ckFnZW50Il07CiAKICAgICBkZWNpc2lvbkhhbmRsZXIoV0tOYXZpZ2F0aW9uQWN0aW9uUG9saWN5
QWxsb3csIHdlYnNpdGVQb2xpY2llcyk7CiB9CkBAIC0xMjE3LDcgKzEyMTUsNyBAQCBvbmxvYWQg
PSAoKSA9PiB7CiA8L3NjcmlwdD4KIClURVNUUkVTT1VSQ0UiOwogCi1URVNUKFdlYktpdCwgV2Vi
c2l0ZVBvbGljaWVzQ3VzdG9tVXNlckFnZW50KQorVEVTVChXZWJwYWdlUHJlZmVyZW5jZXMsIFdl
YnNpdGVQb2xpY2llc0N1c3RvbVVzZXJBZ2VudCkKIHsKICAgICBhdXRvIGNvbmZpZ3VyYXRpb24g
PSBhZG9wdE5TKFtbV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF0pOwogCkBAIC0x
MjYxLDEzICsxMjU5LDEzIEBAIEBpbnRlcmZhY2UgQ3VzdG9tSmF2YVNjcmlwdFVzZXJBZ2VudERl
bGUKIAogQGltcGxlbWVudGF0aW9uIEN1c3RvbUphdmFTY3JpcHRVc2VyQWdlbnREZWxlZ2F0ZQog
Ci0tICh2b2lkKV93ZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3IGRlY2lkZVBvbGljeUZvck5h
dmlnYXRpb25BY3Rpb246KFdLTmF2aWdhdGlvbkFjdGlvbiAqKW5hdmlnYXRpb25BY3Rpb24gdXNl
ckluZm86KGlkIDxOU1NlY3VyZUNvZGluZz4pdXNlckluZm8gZGVjaXNpb25IYW5kbGVyOih2b2lk
ICheKShXS05hdmlnYXRpb25BY3Rpb25Qb2xpY3ksIF9XS1dlYnNpdGVQb2xpY2llcyAqKSlkZWNp
c2lvbkhhbmRsZXIKKy0gKHZvaWQpX3dlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcgZGVjaWRl
UG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbjooV0tOYXZpZ2F0aW9uQWN0aW9uICopbmF2aWdhdGlv
bkFjdGlvbiB1c2VySW5mbzooaWQgPE5TU2VjdXJlQ29kaW5nPil1c2VySW5mbyBkZWNpc2lvbkhh
bmRsZXI6KHZvaWQgKF4pKFdLTmF2aWdhdGlvbkFjdGlvblBvbGljeSwgV0tXZWJwYWdlUHJlZmVy
ZW5jZXMgKikpZGVjaXNpb25IYW5kbGVyCiB7Ci0gICAgX1dLV2Vic2l0ZVBvbGljaWVzICp3ZWJz
aXRlUG9saWNpZXMgPSBbW1tfV0tXZWJzaXRlUG9saWNpZXMgYWxsb2NdIGluaXRdIGF1dG9yZWxl
YXNlXTsKKyAgICBXS1dlYnBhZ2VQcmVmZXJlbmNlcyAqd2Vic2l0ZVBvbGljaWVzID0gW1tbV0tX
ZWJwYWdlUHJlZmVyZW5jZXMgYWxsb2NdIGluaXRdIGF1dG9yZWxlYXNlXTsKICAgICBpZiAobmF2
aWdhdGlvbkFjdGlvbi50YXJnZXRGcmFtZS5tYWluRnJhbWUpIHsKLSAgICAgICAgW3dlYnNpdGVQ
b2xpY2llcyBzZXRDdXN0b21Vc2VyQWdlbnRBc1NpdGVTcGVjaWZpY1F1aXJrczpAIkZvbyBTaXRl
IFNwZWNpZmljIFF1cmlrcyBVc2VyQWdlbnQiXTsKKyAgICAgICAgW3dlYnNpdGVQb2xpY2llcyBf
c2V0Q3VzdG9tVXNlckFnZW50QXNTaXRlU3BlY2lmaWNRdWlya3M6QCJGb28gU2l0ZSBTcGVjaWZp
YyBRdXJpa3MgVXNlckFnZW50Il07CiAgICAgICAgIGlmIChfc2V0Q3VzdG9tVXNlckFnZW50KQot
ICAgICAgICAgICAgW3dlYnNpdGVQb2xpY2llcyBzZXRDdXN0b21Vc2VyQWdlbnQ6QCJGb28gQ3Vz
dG9tIFJlcXVlc3QgVXNlckFnZW50Il07CisgICAgICAgICAgICBbd2Vic2l0ZVBvbGljaWVzIF9z
ZXRDdXN0b21Vc2VyQWdlbnQ6QCJGb28gQ3VzdG9tIFJlcXVlc3QgVXNlckFnZW50Il07CiAgICAg
fQogCiAgICAgZGVjaXNpb25IYW5kbGVyKFdLTmF2aWdhdGlvbkFjdGlvblBvbGljeUFsbG93LCB3
ZWJzaXRlUG9saWNpZXMpOwpAQCAtMTI4MCw3ICsxMjc4LDcgQEAgLSAodm9pZCl3ZWJWaWV3OihX
S1dlYlZpZXcgKil3ZWJWaWV3IGRpZAogCiBAZW5kCiAKLVRFU1QoV2ViS2l0LCBXZWJzaXRlUG9s
aWNpZXNDdXN0b21Vc2VyQWdlbnRBc1NpdGVTcGVjaWZpY1F1aXJrc0Rpc2FibGVkKQorVEVTVChX
ZWJwYWdlUHJlZmVyZW5jZXMsIFdlYnNpdGVQb2xpY2llc0N1c3RvbVVzZXJBZ2VudEFzU2l0ZVNw
ZWNpZmljUXVpcmtzRGlzYWJsZWQpCiB7CiAgICAgYXV0byBjb25maWd1cmF0aW9uID0gYWRvcHRO
UyhbW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdKTsKIApAQCAtMTMxOSw3ICsx
MzE3LDcgQEAgVEVTVChXZWJLaXQsIFdlYnNpdGVQb2xpY2llc0N1c3RvbVVzZXJBZwogICAgIEVY
UEVDVF9UUlVFKFt1c2VyQWdlbnRTdHJpbmcgY29udGFpbnNTdHJpbmc6QCIoS0hUTUwsIGxpa2Ug
R2Vja28pIl0pOwogfQogCi1URVNUKFdlYktpdCwgV2Vic2l0ZVBvbGljaWVzQ3VzdG9tVXNlckFn
ZW50QXNTaXRlU3BlY2lmaWNRdWlya3MpCitURVNUKFdlYnBhZ2VQcmVmZXJlbmNlcywgV2Vic2l0
ZVBvbGljaWVzQ3VzdG9tVXNlckFnZW50QXNTaXRlU3BlY2lmaWNRdWlya3MpCiB7CiAgICAgYXV0
byBjb25maWd1cmF0aW9uID0gYWRvcHROUyhbW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gYWxsb2Nd
IGluaXRdKTsKIApAQCAtMTM1OCwxMSArMTM1NiwxMSBAQCBAaW50ZXJmYWNlIEN1c3RvbU5hdmln
YXRvclBsYXRmb3JtRGVsZWdhCiAKIEBpbXBsZW1lbnRhdGlvbiBDdXN0b21OYXZpZ2F0b3JQbGF0
Zm9ybURlbGVnYXRlCiAKLS0gKHZvaWQpX3dlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcgZGVj
aWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbjooV0tOYXZpZ2F0aW9uQWN0aW9uICopbmF2aWdh
dGlvbkFjdGlvbiB1c2VySW5mbzooaWQgPE5TU2VjdXJlQ29kaW5nPil1c2VySW5mbyBkZWNpc2lv
bkhhbmRsZXI6KHZvaWQgKF4pKFdLTmF2aWdhdGlvbkFjdGlvblBvbGljeSwgX1dLV2Vic2l0ZVBv
bGljaWVzICopKWRlY2lzaW9uSGFuZGxlcgorLSAodm9pZClfd2ViVmlldzooV0tXZWJWaWV3ICop
d2ViVmlldyBkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uOihXS05hdmlnYXRpb25BY3Rp
b24gKiluYXZpZ2F0aW9uQWN0aW9uIHVzZXJJbmZvOihpZCA8TlNTZWN1cmVDb2Rpbmc+KXVzZXJJ
bmZvIGRlY2lzaW9uSGFuZGxlcjoodm9pZCAoXikoV0tOYXZpZ2F0aW9uQWN0aW9uUG9saWN5LCBX
S1dlYnBhZ2VQcmVmZXJlbmNlcyAqKSlkZWNpc2lvbkhhbmRsZXIKIHsKLSAgICBfV0tXZWJzaXRl
UG9saWNpZXMgKndlYnNpdGVQb2xpY2llcyA9IFtbW19XS1dlYnNpdGVQb2xpY2llcyBhbGxvY10g
aW5pdF0gYXV0b3JlbGVhc2VdOworICAgIFdLV2VicGFnZVByZWZlcmVuY2VzICp3ZWJzaXRlUG9s
aWNpZXMgPSBbW1tXS1dlYnBhZ2VQcmVmZXJlbmNlcyBhbGxvY10gaW5pdF0gYXV0b3JlbGVhc2Vd
OwogICAgIGlmIChuYXZpZ2F0aW9uQWN0aW9uLnRhcmdldEZyYW1lLm1haW5GcmFtZSkKLSAgICAg
ICAgW3dlYnNpdGVQb2xpY2llcyBzZXRDdXN0b21OYXZpZ2F0b3JQbGF0Zm9ybTpAIlRlc3QgQ3Vz
dG9tIFBsYXRmb3JtIl07CisgICAgICAgIFt3ZWJzaXRlUG9saWNpZXMgX3NldEN1c3RvbU5hdmln
YXRvclBsYXRmb3JtOkAiVGVzdCBDdXN0b20gUGxhdGZvcm0iXTsKIAogICAgIGRlY2lzaW9uSGFu
ZGxlcihXS05hdmlnYXRpb25BY3Rpb25Qb2xpY3lBbGxvdywgd2Vic2l0ZVBvbGljaWVzKTsKIH0K
QEAgLTEzNzQsNyArMTM3Miw3IEBAIC0gKHZvaWQpd2ViVmlldzooV0tXZWJWaWV3ICopd2ViVmll
dyBkaWQKIAogQGVuZAogCi1URVNUKFdlYktpdCwgV2Vic2l0ZVBvbGljaWVzQ3VzdG9tTmF2aWdh
dG9yUGxhdGZvcm0pCitURVNUKFdlYnBhZ2VQcmVmZXJlbmNlcywgV2Vic2l0ZVBvbGljaWVzQ3Vz
dG9tTmF2aWdhdG9yUGxhdGZvcm0pCiB7CiAgICAgYXV0byBjb25maWd1cmF0aW9uID0gYWRvcHRO
UyhbW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdKTsKICAgICAKQEAgLTE0MTcs
MTAgKzE0MTUsMTAgQEAgLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoRGV2aWNlT3JpZW50YXRpbwog
ICAgIHJldHVybiBzZWxmOwogfQogCi0tICh2b2lkKV93ZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJW
aWV3IGRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb246KFdLTmF2aWdhdGlvbkFjdGlvbiAq
KW5hdmlnYXRpb25BY3Rpb24gdXNlckluZm86KGlkIDxOU1NlY3VyZUNvZGluZz4pdXNlckluZm8g
ZGVjaXNpb25IYW5kbGVyOih2b2lkICheKShXS05hdmlnYXRpb25BY3Rpb25Qb2xpY3ksIF9XS1dl
YnNpdGVQb2xpY2llcyAqKSlkZWNpc2lvbkhhbmRsZXIKKy0gKHZvaWQpX3dlYlZpZXc6KFdLV2Vi
VmlldyAqKXdlYlZpZXcgZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbjooV0tOYXZpZ2F0
aW9uQWN0aW9uICopbmF2aWdhdGlvbkFjdGlvbiBwcmVmZXJlbmNlczooV0tXZWJwYWdlUHJlZmVy
ZW5jZXMgKilwcmVmZXJlbmNlcyB1c2VySW5mbzooaWQgPE5TU2VjdXJlQ29kaW5nPil1c2VySW5m
byBkZWNpc2lvbkhhbmRsZXI6KHZvaWQgKF4pKFdLTmF2aWdhdGlvbkFjdGlvblBvbGljeSwgV0tX
ZWJwYWdlUHJlZmVyZW5jZXMgKikpZGVjaXNpb25IYW5kbGVyCiB7Ci0gICAgX1dLV2Vic2l0ZVBv
bGljaWVzICp3ZWJzaXRlUG9saWNpZXMgPSBbW1tfV0tXZWJzaXRlUG9saWNpZXMgYWxsb2NdIGlu
aXRdIGF1dG9yZWxlYXNlXTsKLSAgICBbd2Vic2l0ZVBvbGljaWVzIHNldERldmljZU9yaWVudGF0
aW9uQW5kTW90aW9uQWNjZXNzUG9saWN5Ol9hY2Nlc3NQb2xpY3ldOworICAgIFdLV2VicGFnZVBy
ZWZlcmVuY2VzICp3ZWJzaXRlUG9saWNpZXMgPSBbW1tXS1dlYnBhZ2VQcmVmZXJlbmNlcyBhbGxv
Y10gaW5pdF0gYXV0b3JlbGVhc2VdOworICAgIFt3ZWJzaXRlUG9saWNpZXMgX3NldERldmljZU9y
aWVudGF0aW9uQW5kTW90aW9uQWNjZXNzUG9saWN5Ol9hY2Nlc3NQb2xpY3ldOwogCiAgICAgZGVj
aXNpb25IYW5kbGVyKFdLTmF2aWdhdGlvbkFjdGlvblBvbGljeUFsbG93LCB3ZWJzaXRlUG9saWNp
ZXMpOwogfQpAQCAtMTQ5NCwxNyArMTQ5MiwxNyBAQCBzdGF0aWMgdm9pZCBydW5XZWJzaXRlUG9s
aWNpZXNEZXZpY2VPcmllCiAgICAgfQogfQogCi1URVNUKFdlYktpdCwgV2Vic2l0ZVBvbGljaWVz
RGV2aWNlT3JpZW50YXRpb25HcmFudEFjY2VzcykKK1RFU1QoV2VicGFnZVByZWZlcmVuY2VzLCBX
ZWJzaXRlUG9saWNpZXNEZXZpY2VPcmllbnRhdGlvbkdyYW50QWNjZXNzKQogewogICAgIHJ1bldl
YnNpdGVQb2xpY2llc0RldmljZU9yaWVudGF0aW9uRXZlbnRUZXN0KF9XS1dlYnNpdGVEZXZpY2VP
cmllbnRhdGlvbkFuZE1vdGlvbkFjY2Vzc1BvbGljeUdyYW50KTsKIH0KIAotVEVTVChXZWJLaXQs
IFdlYnNpdGVQb2xpY2llc0RldmljZU9yaWVudGF0aW9uRGVueUFjY2VzcykKK1RFU1QoV2VicGFn
ZVByZWZlcmVuY2VzLCBXZWJzaXRlUG9saWNpZXNEZXZpY2VPcmllbnRhdGlvbkRlbnlBY2Nlc3Mp
CiB7CiAgICAgcnVuV2Vic2l0ZVBvbGljaWVzRGV2aWNlT3JpZW50YXRpb25FdmVudFRlc3QoX1dL
V2Vic2l0ZURldmljZU9yaWVudGF0aW9uQW5kTW90aW9uQWNjZXNzUG9saWN5RGVueSk7CiB9CiAK
LVRFU1QoV2ViS2l0LCBXZWJzaXRlUG9saWNpZXNEZXZpY2VPcmllbnRhdGlvbkFza0FjY2VzcykK
K1RFU1QoV2VicGFnZVByZWZlcmVuY2VzLCBXZWJzaXRlUG9saWNpZXNEZXZpY2VPcmllbnRhdGlv
bkFza0FjY2VzcykKIHsKICAgICBydW5XZWJzaXRlUG9saWNpZXNEZXZpY2VPcmllbnRhdGlvbkV2
ZW50VGVzdChfV0tXZWJzaXRlRGV2aWNlT3JpZW50YXRpb25BbmRNb3Rpb25BY2Nlc3NQb2xpY3lB
c2spOwogfQpAQCAtMTUyNCwxMSArMTUyMiwxMSBAQCAtICh2b2lkKXdlYlZpZXc6KFdLV2ViVmll
dyAqKXdlYlZpZXcgZGVjCiAgICAgZGVjaXNpb25IYW5kbGVyKFdLTmF2aWdhdGlvbkFjdGlvblBv
bGljeUFsbG93KTsKIH0KIAotLSAodm9pZClfd2ViVmlldzooV0tXZWJWaWV3ICopd2ViVmlldyBk
ZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uOihXS05hdmlnYXRpb25BY3Rpb24gKiluYXZp
Z2F0aW9uQWN0aW9uIGRlY2lzaW9uSGFuZGxlcjoodm9pZCAoXikoV0tOYXZpZ2F0aW9uQWN0aW9u
UG9saWN5LCBfV0tXZWJzaXRlUG9saWNpZXMgKikpZGVjaXNpb25IYW5kbGVyCistICh2b2lkKV93
ZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3IGRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rp
b246KFdLTmF2aWdhdGlvbkFjdGlvbiAqKW5hdmlnYXRpb25BY3Rpb24gZGVjaXNpb25IYW5kbGVy
Oih2b2lkICheKShXS05hdmlnYXRpb25BY3Rpb25Qb2xpY3ksIFdLV2VicGFnZVByZWZlcmVuY2Vz
ICopKWRlY2lzaW9uSGFuZGxlcgogewotICAgIF9XS1dlYnNpdGVQb2xpY2llcyAqd2Vic2l0ZVBv
bGljaWVzID0gW1tbX1dLV2Vic2l0ZVBvbGljaWVzIGFsbG9jXSBpbml0XSBhdXRvcmVsZWFzZV07
CisgICAgV0tXZWJwYWdlUHJlZmVyZW5jZXMgKndlYnNpdGVQb2xpY2llcyA9IFtbW1dLV2VicGFn
ZVByZWZlcmVuY2VzIGFsbG9jXSBpbml0XSBhdXRvcmVsZWFzZV07CiAgICAgaWYgKF9wb3BVcFBv
bGljeUZvclVSTCkKLSAgICAgICAgd2Vic2l0ZVBvbGljaWVzLnBvcFVwUG9saWN5ID0gX3BvcFVw
UG9saWN5Rm9yVVJMKG5hdmlnYXRpb25BY3Rpb24ucmVxdWVzdC5VUkwpOworICAgICAgICB3ZWJz
aXRlUG9saWNpZXMuX3BvcFVwUG9saWN5ID0gX3BvcFVwUG9saWN5Rm9yVVJMKG5hdmlnYXRpb25B
Y3Rpb24ucmVxdWVzdC5VUkwpOwogICAgIGRlY2lzaW9uSGFuZGxlcihXS05hdmlnYXRpb25BY3Rp
b25Qb2xpY3lBbGxvdywgd2Vic2l0ZVBvbGljaWVzKTsKIH0KIApAQCAtMTUzOSw3ICsxNTM3LDcg
QEAgLSAobnVsbGFibGUgV0tXZWJWaWV3ICopd2ViVmlldzooV0tXZWJWaQogCiBAZW5kCiAKLVRF
U1QoV2ViS2l0LCBXZWJzaXRlUG9saWNpZXNQb3BVcCkKK1RFU1QoV2VicGFnZVByZWZlcmVuY2Vz
LCBXZWJzaXRlUG9saWNpZXNQb3BVcCkKIHsKICAgICBhdXRvIGNvbmZpZ3VyYXRpb24gPSBhZG9w
dE5TKFtbV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF0pOwogCkBAIC0xNTczLDE0
ICsxNTcxLDEyIEBAIEBpbnRlcmZhY2UgV2Vic2l0ZVBvbGljaWVzV2Vic2l0ZURhdGFTdG8KIAog
QGltcGxlbWVudGF0aW9uIFdlYnNpdGVQb2xpY2llc1dlYnNpdGVEYXRhU3RvcmVEZWxlZ2F0ZQog
Ci1JR05PUkVfV0FSTklOR1NfQkVHSU4oImRlcHJlY2F0ZWQtaW1wbGVtZW50YXRpb25zIikKLS0g
KHZvaWQpX3dlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcgZGVjaWRlUG9saWN5Rm9yTmF2aWdh
dGlvbkFjdGlvbjooV0tOYXZpZ2F0aW9uQWN0aW9uICopbmF2aWdhdGlvbkFjdGlvbiBkZWNpc2lv
bkhhbmRsZXI6KHZvaWQgKF4pKFdLTmF2aWdhdGlvbkFjdGlvblBvbGljeSwgX1dLV2Vic2l0ZVBv
bGljaWVzICopKWRlY2lzaW9uSGFuZGxlcgotSUdOT1JFX1dBUk5JTkdTX0VORAorLSAodm9pZCl3
ZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3IGRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rp
b246KFdLTmF2aWdhdGlvbkFjdGlvbiAqKW5hdmlnYXRpb25BY3Rpb24gcHJlZmVyZW5jZXM6KFdL
V2VicGFnZVByZWZlcmVuY2VzICopcHJlZmVyZW5jZXMgZGVjaXNpb25IYW5kbGVyOih2b2lkIChe
KShXS05hdmlnYXRpb25BY3Rpb25Qb2xpY3ksIFdLV2VicGFnZVByZWZlcmVuY2VzICopKWRlY2lz
aW9uSGFuZGxlcgogewogICAgIE5TVVJMICp1cmwgPSBuYXZpZ2F0aW9uQWN0aW9uLnJlcXVlc3Qu
VVJMOwogICAgIGlmIChbdXJsLnBhdGggaXNFcXVhbFRvU3RyaW5nOkAiL2ludmFsaWQiXSkgewot
ICAgICAgICBfV0tXZWJzaXRlUG9saWNpZXMgKndlYnNpdGVQb2xpY2llcyA9IFtbW19XS1dlYnNp
dGVQb2xpY2llcyBhbGxvY10gaW5pdF0gYXV0b3JlbGVhc2VdOwotICAgICAgICB3ZWJzaXRlUG9s
aWNpZXMud2Vic2l0ZURhdGFTdG9yZSA9IFtbW1dLV2Vic2l0ZURhdGFTdG9yZSBhbGxvY10gX2lu
aXRXaXRoQ29uZmlndXJhdGlvbjpbW1tfV0tXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbiBh
bGxvY10gaW5pdF0gYXV0b3JlbGVhc2VdXSBhdXRvcmVsZWFzZV07CisgICAgICAgIFdLV2VicGFn
ZVByZWZlcmVuY2VzICp3ZWJzaXRlUG9saWNpZXMgPSBbW1tXS1dlYnBhZ2VQcmVmZXJlbmNlcyBh
bGxvY10gaW5pdF0gYXV0b3JlbGVhc2VdOworICAgICAgICB3ZWJzaXRlUG9saWNpZXMuX3dlYnNp
dGVEYXRhU3RvcmUgPSBbW1tXS1dlYnNpdGVEYXRhU3RvcmUgYWxsb2NdIF9pbml0V2l0aENvbmZp
Z3VyYXRpb246W1tbX1dLV2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRd
IGF1dG9yZWxlYXNlXV0gYXV0b3JlbGVhc2VdOwogCiAgICAgICAgIGJvb2wgc2F3RXhjZXB0aW9u
ID0gZmFsc2U7CiAgICAgICAgIEB0cnkgewpAQCAtMTU5NSwxMyArMTU5MSwxMyBAQCBJR05PUkVf
V0FSTklOR1NfRU5ECiAgICAgaWYgKFt1cmwucGF0aCBpc0VxdWFsVG9TdHJpbmc6QCIvY2hlY2tT
dG9yYWdlIl0KICAgICAgICAgfHwgW3VybC5wYXRoIGlzRXF1YWxUb1N0cmluZzpAIi9jaGVja0Nv
b2tpZXMiXQogICAgICAgICB8fCBbdXJsLnBhdGggaXNFcXVhbFRvU3RyaW5nOkAiL21haW5GcmFt
ZSJdKSB7Ci0gICAgICAgIF9XS1dlYnNpdGVQb2xpY2llcyAqd2Vic2l0ZVBvbGljaWVzID0gW1tb
X1dLV2Vic2l0ZVBvbGljaWVzIGFsbG9jXSBpbml0XSBhdXRvcmVsZWFzZV07Ci0gICAgICAgIHdl
YnNpdGVQb2xpY2llcy53ZWJzaXRlRGF0YVN0b3JlID0gW1dLV2Vic2l0ZURhdGFTdG9yZSBub25Q
ZXJzaXN0ZW50RGF0YVN0b3JlXTsKKyAgICAgICAgV0tXZWJwYWdlUHJlZmVyZW5jZXMgKndlYnNp
dGVQb2xpY2llcyA9IFtbW1dLV2VicGFnZVByZWZlcmVuY2VzIGFsbG9jXSBpbml0XSBhdXRvcmVs
ZWFzZV07CisgICAgICAgIHdlYnNpdGVQb2xpY2llcy5fd2Vic2l0ZURhdGFTdG9yZSA9IFtXS1dl
YnNpdGVEYXRhU3RvcmUgbm9uUGVyc2lzdGVudERhdGFTdG9yZV07CiAgICAgICAgIGRlY2lzaW9u
SGFuZGxlcihXS05hdmlnYXRpb25BY3Rpb25Qb2xpY3lBbGxvdywgd2Vic2l0ZVBvbGljaWVzKTsK
ICAgICB9CiAgICAgaWYgKFt1cmwucGF0aCBpc0VxdWFsVG9TdHJpbmc6QCIvc3ViRnJhbWUiXSkg
ewotICAgICAgICBfV0tXZWJzaXRlUG9saWNpZXMgKndlYnNpdGVQb2xpY2llcyA9IFtbW19XS1dl
YnNpdGVQb2xpY2llcyBhbGxvY10gaW5pdF0gYXV0b3JlbGVhc2VdOwotICAgICAgICB3ZWJzaXRl
UG9saWNpZXMud2Vic2l0ZURhdGFTdG9yZSA9IFtXS1dlYnNpdGVEYXRhU3RvcmUgbm9uUGVyc2lz
dGVudERhdGFTdG9yZV07CisgICAgICAgIFdLV2VicGFnZVByZWZlcmVuY2VzICp3ZWJzaXRlUG9s
aWNpZXMgPSBbW1tXS1dlYnBhZ2VQcmVmZXJlbmNlcyBhbGxvY10gaW5pdF0gYXV0b3JlbGVhc2Vd
OworICAgICAgICB3ZWJzaXRlUG9saWNpZXMuX3dlYnNpdGVEYXRhU3RvcmUgPSBbV0tXZWJzaXRl
RGF0YVN0b3JlIG5vblBlcnNpc3RlbnREYXRhU3RvcmVdOwogICAgICAgICBib29sIHNhd0V4Y2Vw
dGlvbiA9IGZhbHNlOwogICAgICAgICBAdHJ5IHsKICAgICAgICAgICAgIGRlY2lzaW9uSGFuZGxl
cihXS05hdmlnYXRpb25BY3Rpb25Qb2xpY3lDYW5jZWwsIHdlYnNpdGVQb2xpY2llcyk7CkBAIC0x
NjQ5LDE0ICsxNjQ1LDE0IEBAIFJldGFpblB0cjxXS1dlYlZpZXc+IHdlYnNpdGVEYXRhU3RvcmVU
ZXMKICAgICByZXR1cm4gd2ViVmlldzsKIH0KIAotVEVTVChXZWJLaXQsIFVwZGF0ZVdlYnNpdGVQ
b2xpY2llc0ludmFsaWQpCitURVNUKFdlYnBhZ2VQcmVmZXJlbmNlcywgVXBkYXRlV2Vic2l0ZVBv
bGljaWVzSW52YWxpZCkKIHsKICAgICBhdXRvIHdlYlZpZXcgPSB3ZWJzaXRlRGF0YVN0b3JlVGVz
dFdlYlZpZXcoKTsKLSAgICBhdXRvIHBvbGljaWVzID0gYWRvcHROUyhbW19XS1dlYnNpdGVQb2xp
Y2llcyBhbGxvY10gaW5pdF0pOwotICAgIFtwb2xpY2llcyBzZXRXZWJzaXRlRGF0YVN0b3JlOltX
S1dlYnNpdGVEYXRhU3RvcmUgbm9uUGVyc2lzdGVudERhdGFTdG9yZV1dOworICAgIGF1dG8gcG9s
aWNpZXMgPSBhZG9wdE5TKFtbV0tXZWJwYWdlUHJlZmVyZW5jZXMgYWxsb2NdIGluaXRdKTsKKyAg
ICBbcG9saWNpZXMgX3NldFdlYnNpdGVEYXRhU3RvcmU6W1dLV2Vic2l0ZURhdGFTdG9yZSBub25Q
ZXJzaXN0ZW50RGF0YVN0b3JlXV07CiAgICAgYm9vbCBzYXdFeGNlcHRpb24gPSBmYWxzZTsKICAg
ICBAdHJ5IHsKLSAgICAgICAgW3dlYlZpZXcgX3VwZGF0ZVdlYnNpdGVQb2xpY2llczpwb2xpY2ll
cy5nZXQoKV07CisgICAgICAgIFt3ZWJWaWV3IF91cGRhdGVXZWJwYWdlUHJlZmVyZW5jZXM6cG9s
aWNpZXMuZ2V0KCldOwogICAgIH0gQGNhdGNoIChOU0V4Y2VwdGlvbiAqZXhjZXB0aW9uKSB7CiAg
ICAgICAgIHNhd0V4Y2VwdGlvbiA9IHRydWU7CiAgICAgfQpAQCAtMTY3MCw3ICsxNjY2LDcgQEAg
VEVTVChXZWJLaXQsIFVwZGF0ZVdlYnNpdGVQb2xpY2llc0ludmFsaQogICAgIFRlc3RXZWJLaXRB
UEk6OlV0aWw6OnJ1bigmZG9uZSk7CiB9CiAKLVRFU1QoV2ViS2l0LCBXZWJzaXRlUG9saWNpZXNE
YXRhU3RvcmUpCitURVNUKFdlYnBhZ2VQcmVmZXJlbmNlcywgV2Vic2l0ZVBvbGljaWVzRGF0YVN0
b3JlKQogewogICAgIGF1dG8gY29va2llV2ViVmlldyA9IHdlYnNpdGVEYXRhU3RvcmVUZXN0V2Vi
VmlldygpOwogICAgIE5TU3RyaW5nICphbGVydE9sZENvb2tpZSA9IEAiPHNjcmlwdD52YXIgb2xk
Q29va2llID0gZG9jdW1lbnQuY29va2llOyBkb2N1bWVudC5jb29raWUgPSAna2V5PXZhbHVlJzsg
YWxlcnQoJ29sZCB2YWx1ZTogPCcgKyBvbGRDb29raWUgKyAnPicpOzwvc2NyaXB0PiI7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>386610</attachid>
            <date>2020-01-02 11:40:56 -0800</date>
            <delta_ts>2020-01-02 17:38:26 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-205539-20200102114055.patch</filename>
            <type>text/plain</type>
            <size>39546</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nCShyZXZpc2lvbiAyNTM5NzQpCisrKyBTb3VyY2UvV2ViS2l0L0NoYW5nZUxv
Zwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIyIEBACisyMDIwLTAxLTAyICBBbGV4IENocmlz
dGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgRGVwcmVjYXRlIF9X
S1dlYnNpdGVQb2xpY2llcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MjA1NTM5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgSXRzIGxhc3QgdXNlIHdhcyByZW1vdmVkIGluIHJkYXI6Ly9wcm9ibGVtLzU4MDY0
ODQ3CisgICAgICAgIGJ1dCB3ZSBuZWVkIHRvIGtlZXAgaXQgaW4gV2ViS2l0IHVudGlsIHRoZSBu
ZXh0IFNhZmFyaSByZWxlYXNlCisgICAgICAgIHRvIGtlZXAgU2FmYXJpIHdvcmtpbmcgd2l0aCBi
dWlsdCB2ZXJzaW9ucyBvZiBvcGVuIHNvdXJjZSBXZWJLaXQgd2l0aCBydW4tc2FmYXJpLgorCisg
ICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW06CisgICAgICAgICgtW1dL
V2ViVmlldyBfdXBkYXRlV2Vic2l0ZVBvbGljaWVzOl0pOgorICAgICAgICAqIFVJUHJvY2Vzcy9B
UEkvQ29jb2EvV0tXZWJWaWV3UHJpdmF0ZS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29j
b2EvX1dLV2Vic2l0ZVBvbGljaWVzLmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9f
V0tXZWJzaXRlUG9saWNpZXMubW06CisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL05hdmlnYXRp
b25TdGF0ZS5tbToKKyAgICAgICAgKFdlYktpdDo6TmF2aWdhdGlvblN0YXRlOjpOYXZpZ2F0aW9u
Q2xpZW50OjpkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uKToKKwogMjAyMC0wMS0wMiAg
Q2FybG9zIEdhcmNpYSBDYW1wb3MgIDxjZ2FyY2lhQGlnYWxpYS5jb20+CiAKICAgICAgICAgW0dU
S10gTWFrZSBvbmRlbWFuZCBoYXJkd2FyZSBhY2NlbGVyYXRpb24gcG9saWN5IG5ldmVyIGxlYXZl
IEFDIG1vZGUKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZp
ZXcubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dL
V2ViVmlldy5tbQkocmV2aXNpb24gMjUzOTc0KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL0NvY29hL1dLV2ViVmlldy5tbQkod29ya2luZyBjb3B5KQpAQCAtMjE0Miw3ICsyMTQyLDYg
QEAgLSAodm9pZClfZXZhbHVhdGVKYXZhU2NyaXB0V2l0aG91dFVzZXJHZQogCiAtICh2b2lkKV91
cGRhdGVXZWJzaXRlUG9saWNpZXM6KF9XS1dlYnNpdGVQb2xpY2llcyAqKXdlYnNpdGVQb2xpY2ll
cwogewotICAgIFtzZWxmIF91cGRhdGVXZWJwYWdlUHJlZmVyZW5jZXM6d2Vic2l0ZVBvbGljaWVz
LndlYnBhZ2VQcmVmZXJlbmNlc107CiB9CiAKIC0gKHZvaWQpX3VwZGF0ZVdlYnBhZ2VQcmVmZXJl
bmNlczooV0tXZWJwYWdlUHJlZmVyZW5jZXMgKil3ZWJwYWdlUHJlZmVyZW5jZXMKSW5kZXg6IFNv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdQcml2YXRlLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld1ByaXZh
dGUuaAkocmV2aXNpb24gMjUzOTc0KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0Nv
Y29hL1dLV2ViVmlld1ByaXZhdGUuaAkod29ya2luZyBjb3B5KQpAQCAtMTg3LDcgKzE4Nyw3IEBA
IHR5cGVkZWYgTlNfT1BUSU9OUyhOU1VJbnRlZ2VyLCBfV0tSZWN0RWQKIAogLSAodm9pZClfY2xv
c2U7CiAKLS0gKHZvaWQpX3VwZGF0ZVdlYnNpdGVQb2xpY2llczooX1dLV2Vic2l0ZVBvbGljaWVz
ICopd2Vic2l0ZVBvbGljaWVzIFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoMTAuMTMpLCBpb3MoMTEu
MCkpOworLSAodm9pZClfdXBkYXRlV2Vic2l0ZVBvbGljaWVzOihfV0tXZWJzaXRlUG9saWNpZXMg
Kil3ZWJzaXRlUG9saWNpZXMgV0tfQVBJX0RFUFJFQ0FURURfV0lUSF9SRVBMQUNFTUVOVCgiLV91
cGRhdGVXZWJwYWdlUHJlZmVyZW5jZXM6IiwgbWFjb3MoMTAuMTMsIFdLX01BQ19UQkEpLCBpb3Mo
MTEuMywgV0tfSU9TX1RCQSkpOwogLSAodm9pZClfdXBkYXRlV2VicGFnZVByZWZlcmVuY2VzOihX
S1dlYnBhZ2VQcmVmZXJlbmNlcyAqKXdlYnBhZ2VQcmVmZXJlbmNlcyBXS19BUElfQVZBSUxBQkxF
KG1hY29zKFdLX01BQ19UQkEpLCBpb3MoV0tfSU9TX1RCQSkpOwogCiAtICh2b2lkKV9ldmFsdWF0
ZUphdmFTY3JpcHRXaXRob3V0VXNlckdlc3R1cmU6KE5TU3RyaW5nICopamF2YVNjcmlwdFN0cmlu
ZyBjb21wbGV0aW9uSGFuZGxlcjoodm9pZCAoXikoaWQsIE5TRXJyb3IgKikpY29tcGxldGlvbkhh
bmRsZXIgV0tfQVBJX0FWQUlMQUJMRShtYWNvcygxMC4xMyksIGlvcygxMS4wKSk7CkluZGV4OiBT
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLV2Vic2l0ZVBvbGljaWVzLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS1dlYnNpdGVQ
b2xpY2llcy5oCShyZXZpc2lvbiAyNTM5NzQpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvQ29jb2EvX1dLV2Vic2l0ZVBvbGljaWVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTI4LDcgKzI4
LDcgQEAKIAogQGNsYXNzIFdLV2Vic2l0ZURhdGFTdG9yZTsKIAotV0tfQ0xBU1NfQVZBSUxBQkxF
KG1hY29zKDEwLjEyLjMpLCBpb3MoMTAuMykpCitXS19BUElfREVQUkVDQVRFRF9XSVRIX1JFUExB
Q0VNRU5UKCJXS1dlYnBhZ2VQcmVmZXJlbmNlcyIsIG1hY29zKDEwLjEyLjMsIFdLX01BQ19UQkEp
LCBpb3MoMTAuMywgV0tfSU9TX1RCQSkpCiBAaW50ZXJmYWNlIF9XS1dlYnNpdGVQb2xpY2llcyA6
IE5TT2JqZWN0CiAKIEBwcm9wZXJ0eSAobm9uYXRvbWljKSBCT09MIGNvbnRlbnRCbG9ja2Vyc0Vu
YWJsZWQ7CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLV2Vic2l0
ZVBvbGljaWVzLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9D
b2NvYS9fV0tXZWJzaXRlUG9saWNpZXMubW0JKHJldmlzaW9uIDI1Mzk3NCkKKysrIFNvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tXZWJzaXRlUG9saWNpZXMubW0JKHdvcmtpbmcg
Y29weSkKQEAgLTI5LDcgKzI5LDkgQEAKICNpbXBvcnQgIldLV2Vic2l0ZURhdGFTdG9yZUludGVy
bmFsLmgiCiAjaW1wb3J0ICJfV0tXZWJzaXRlUG9saWNpZXNJbnRlcm5hbC5oIgogCitJR05PUkVf
V0FSTklOR1NfQkVHSU4oImRlcHJlY2F0ZWQtaW1wbGVtZW50YXRpb25zIikKIEBpbXBsZW1lbnRh
dGlvbiBfV0tXZWJzaXRlUG9saWNpZXMKK0lHTk9SRV9XQVJOSU5HU19FTkQKIAogLSAoaW5zdGFu
Y2V0eXBlKWluaXQKIHsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL05hdmln
YXRpb25TdGF0ZS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2Nv
YS9OYXZpZ2F0aW9uU3RhdGUubW0JKHJldmlzaW9uIDI1Mzk3NCkKKysrIFNvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0NvY29hL05hdmlnYXRpb25TdGF0ZS5tbQkod29ya2luZyBjb3B5KQpAQCAtNTgx
LDEwICs1ODEsMTIgQEAgdm9pZCBOYXZpZ2F0aW9uU3RhdGU6Ok5hdmlnYXRpb25DbGllbnQ6Ogog
ICAgICAgICBSZWZQdHI8QVBJOjpXZWJzaXRlUG9saWNpZXM+IGFwaVdlYnNpdGVQb2xpY2llczsK
ICAgICAgICAgaWYgKFtwb2xpY2llc09yUHJlZmVyZW5jZXMgaXNLaW5kT2ZDbGFzczpXS1dlYnBh
Z2VQcmVmZXJlbmNlcy5zZWxmXSkKICAgICAgICAgICAgIGFwaVdlYnNpdGVQb2xpY2llcyA9ICgo
V0tXZWJwYWdlUHJlZmVyZW5jZXMgKilwb2xpY2llc09yUHJlZmVyZW5jZXMpLT5fd2Vic2l0ZVBv
bGljaWVzLmdldCgpOworQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfQkVHSU4KICAgICAg
ICAgZWxzZSBpZiAoW3BvbGljaWVzT3JQcmVmZXJlbmNlcyBpc0tpbmRPZkNsYXNzOl9XS1dlYnNp
dGVQb2xpY2llcy5zZWxmXSkKICAgICAgICAgICAgIGFwaVdlYnNpdGVQb2xpY2llcyA9IFtwb2xp
Y2llc09yUHJlZmVyZW5jZXMgd2VicGFnZVByZWZlcmVuY2VzXS0+X3dlYnNpdGVQb2xpY2llcy5n
ZXQoKTsKICAgICAgICAgZWxzZSBpZiAocG9saWNpZXNPclByZWZlcmVuY2VzKQogICAgICAgICAg
ICAgW05TRXhjZXB0aW9uIHJhaXNlOk5TSW52YWxpZEFyZ3VtZW50RXhjZXB0aW9uIGZvcm1hdDpA
IkV4cGVjdGVkIHBvbGljaWVzIG9mIGNsYXNzICVALCBidXQgZ290ICVAIiwgTlNTdHJpbmdGcm9t
Q2xhc3MoX1dLV2Vic2l0ZVBvbGljaWVzLnNlbGYpLCBbcG9saWNpZXNPclByZWZlcmVuY2VzIGNs
YXNzXV07CitBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19FTkQKICAgICAgICAgZWxzZQog
ICAgICAgICAgICAgYXBpV2Vic2l0ZVBvbGljaWVzID0gZGVmYXVsdFdlYnNpdGVQb2xpY2llczsK
IApJbmRleDogVG9vbHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0NoYW5nZUxvZwko
cmV2aXNpb24gMjUzOTc0KQorKysgVG9vbHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0x
LDMgKzEsMzMgQEAKKzIwMjAtMDEtMDIgIEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5A
d2Via2l0Lm9yZz4KKworICAgICAgICBEZXByZWNhdGUgX1dLV2Vic2l0ZVBvbGljaWVzCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDU1MzkKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFRlc3RXZWJLaXRB
UEkvVGVzdHMvV2ViS2l0Q29jb2EvUHJvY2Vzc1N3YXBPbk5hdmlnYXRpb24ubW06CisgICAgICAg
ICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9TZXJ2aWNlV29ya2VyQmFzaWMubW06
CisgICAgICAgICgtW1NXQ3VzdG9tVXNlckFnZW50RGVsZWdhdGUgX3dlYlZpZXc6ZGVjaWRlUG9s
aWN5Rm9yTmF2aWdhdGlvbkFjdGlvbjpwcmVmZXJlbmNlczp1c2VySW5mbzpkZWNpc2lvbkhhbmRs
ZXI6XSk6CisgICAgICAgICgtW1NXQ3VzdG9tVXNlckFnZW50RGVsZWdhdGUgX3dlYlZpZXc6ZGVj
aWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbjp1c2VySW5mbzpkZWNpc2lvbkhhbmRsZXI6XSk6
IERlbGV0ZWQuCisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9XZWJz
aXRlUG9saWNpZXMubW06CisgICAgICAgICgtW0NvbnRlbnRCbG9ja2luZ1dlYnNpdGVQb2xpY2ll
c0RlbGVnYXRlIHdlYlZpZXc6ZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbjpwcmVmZXJl
bmNlczpkZWNpc2lvbkhhbmRsZXI6XSk6CisgICAgICAgIChURVNUKToKKyAgICAgICAgKC1bQXV0
b3BsYXlQb2xpY2llc0RlbGVnYXRlIHdlYlZpZXc6ZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFj
dGlvbjpwcmVmZXJlbmNlczpkZWNpc2lvbkhhbmRsZXI6XSk6CisgICAgICAgICgtW0FzeW5jQXV0
b3BsYXlQb2xpY2llc0RlbGVnYXRlIHdlYlZpZXc6ZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFj
dGlvbjpwcmVmZXJlbmNlczpkZWNpc2lvbkhhbmRsZXI6XSk6CisgICAgICAgICgtW1dlYnNpdGVQ
b2xpY2llc05hdmlnYXRpb25EZWxlZ2F0ZSBfd2ViVmlldzpkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0
aW9uQWN0aW9uOnByZWZlcmVuY2VzOnVzZXJJbmZvOmRlY2lzaW9uSGFuZGxlcjpdKToKKyAgICAg
ICAgKC1bQ3VzdG9tVXNlckFnZW50RGVsZWdhdGUgX3dlYlZpZXc6ZGVjaWRlUG9saWN5Rm9yTmF2
aWdhdGlvbkFjdGlvbjp1c2VySW5mbzpkZWNpc2lvbkhhbmRsZXI6XSk6CisgICAgICAgICgtW0N1
c3RvbUphdmFTY3JpcHRVc2VyQWdlbnREZWxlZ2F0ZSBfd2ViVmlldzpkZWNpZGVQb2xpY3lGb3JO
YXZpZ2F0aW9uQWN0aW9uOnVzZXJJbmZvOmRlY2lzaW9uSGFuZGxlcjpdKToKKyAgICAgICAgKC1b
Q3VzdG9tTmF2aWdhdG9yUGxhdGZvcm1EZWxlZ2F0ZSBfd2ViVmlldzpkZWNpZGVQb2xpY3lGb3JO
YXZpZ2F0aW9uQWN0aW9uOnVzZXJJbmZvOmRlY2lzaW9uSGFuZGxlcjpdKToKKyAgICAgICAgKC1b
V2Vic2l0ZVBvbGljaWVzRGV2aWNlT3JpZW50YXRpb25EZWxlZ2F0ZSBfd2ViVmlldzpkZWNpZGVQ
b2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uOnByZWZlcmVuY2VzOnVzZXJJbmZvOmRlY2lzaW9uSGFu
ZGxlcjpdKToKKyAgICAgICAgKC1bUG9wVXBQb2xpY2llc0RlbGVnYXRlIF93ZWJWaWV3OmRlY2lk
ZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb246ZGVjaXNpb25IYW5kbGVyOl0pOgorICAgICAgICAo
LVtXZWJzaXRlUG9saWNpZXNXZWJzaXRlRGF0YVN0b3JlRGVsZWdhdGUgd2ViVmlldzpkZWNpZGVQ
b2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uOnByZWZlcmVuY2VzOmRlY2lzaW9uSGFuZGxlcjpdKToK
KyAgICAgICAgKC1bQ29udGVudEJsb2NraW5nV2Vic2l0ZVBvbGljaWVzRGVsZWdhdGUgX3dlYlZp
ZXc6ZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbjpkZWNpc2lvbkhhbmRsZXI6XSk6IERl
bGV0ZWQuCisgICAgICAgICgtW0F1dG9wbGF5UG9saWNpZXNEZWxlZ2F0ZSBfd2ViVmlldzpkZWNp
ZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uOmRlY2lzaW9uSGFuZGxlcjpdKTogRGVsZXRlZC4K
KyAgICAgICAgKC1bQXN5bmNBdXRvcGxheVBvbGljaWVzRGVsZWdhdGUgX3dlYlZpZXc6ZGVjaWRl
UG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbjpkZWNpc2lvbkhhbmRsZXI6XSk6IERlbGV0ZWQuCisg
ICAgICAgICgtW1dlYnNpdGVQb2xpY2llc05hdmlnYXRpb25EZWxlZ2F0ZSBfd2ViVmlldzpkZWNp
ZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uOnVzZXJJbmZvOmRlY2lzaW9uSGFuZGxlcjpdKTog
RGVsZXRlZC4KKyAgICAgICAgKC1bV2Vic2l0ZVBvbGljaWVzRGV2aWNlT3JpZW50YXRpb25EZWxl
Z2F0ZSBfd2ViVmlldzpkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uOnVzZXJJbmZvOmRl
Y2lzaW9uSGFuZGxlcjpdKTogRGVsZXRlZC4KKyAgICAgICAgKC1bV2Vic2l0ZVBvbGljaWVzV2Vi
c2l0ZURhdGFTdG9yZURlbGVnYXRlIF93ZWJWaWV3OmRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25B
Y3Rpb246ZGVjaXNpb25IYW5kbGVyOl0pOiBEZWxldGVkLgorCiAyMDE5LTEyLTMxICBDYXJsb3Mg
QWxiZXJ0byBMb3BleiBQZXJleiAgPGNsb3BlekBpZ2FsaWEuY29tPgogCiAgICAgICAgIFtXUEVd
IE9wZW5KUEVHIG1pc3NpbmcgaW4gaW5zdGFsbCBkZXBlbmRlbmNpZXMgc2NyaXB0LgpJbmRleDog
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Qcm9jZXNzU3dhcE9uTmF2aWdh
dGlvbi5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENv
Y29hL1Byb2Nlc3NTd2FwT25OYXZpZ2F0aW9uLm1tCShyZXZpc2lvbiAyNTM5NzQpCisrKyBUb29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1Byb2Nlc3NTd2FwT25OYXZpZ2F0aW9u
Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC00MCw2ICs0MCw3IEBACiAjaW1wb3J0IDxXZWJLaXQvV0tV
UkxTY2hlbWVUYXNrUHJpdmF0ZS5oPgogI2ltcG9ydCA8V2ViS2l0L1dLV2ViVmlld0NvbmZpZ3Vy
YXRpb25Qcml2YXRlLmg+CiAjaW1wb3J0IDxXZWJLaXQvV0tXZWJWaWV3UHJpdmF0ZUZvclRlc3Rp
bmcuaD4KKyNpbXBvcnQgPFdlYktpdC9XS1dlYnBhZ2VQcmVmZXJlbmNlcy5oPgogI2ltcG9ydCA8
V2ViS2l0L1dLV2Vic2l0ZURhdGFTdG9yZVByaXZhdGUuaD4KICNpbXBvcnQgPFdlYktpdC9XS1dl
YnNpdGVEYXRhU3RvcmVSZWYuaD4KICNpbXBvcnQgPFdlYktpdC9XZWJLaXQuaD4KQEAgLTQ3LDcg
KzQ4LDYgQEAKICNpbXBvcnQgPFdlYktpdC9fV0tJbnNwZWN0b3IuaD4KICNpbXBvcnQgPFdlYktp
dC9fV0tQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24uaD4KICNpbXBvcnQgPFdlYktpdC9fV0tXZWJz
aXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbi5oPgotI2ltcG9ydCA8V2ViS2l0L19XS1dlYnNpdGVQ
b2xpY2llcy5oPgogI2ltcG9ydCA8d3RmL0Jsb2NrUHRyLmg+CiAjaW1wb3J0IDx3dGYvRGVxdWUu
aD4KICNpbXBvcnQgPHd0Zi9IYXNoTWFwLmg+CkluZGV4OiBUb29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RzL1dlYktpdENvY29hL1NlcnZpY2VXb3JrZXJCYXNpYy5tbQo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1NlcnZpY2VXb3JrZXJCYXNpYy5tbQko
cmV2aXNpb24gMjUzOTc0KQorKysgVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2Nv
YS9TZXJ2aWNlV29ya2VyQmFzaWMubW0JKHdvcmtpbmcgY29weSkKQEAgLTM3LDEyICszNywxMiBA
QAogI2ltcG9ydCA8V2ViS2l0L1dLVVJMU2NoZW1lVGFza1ByaXZhdGUuaD4KICNpbXBvcnQgPFdl
YktpdC9XS1dlYlZpZXdDb25maWd1cmF0aW9uUHJpdmF0ZS5oPgogI2ltcG9ydCA8V2ViS2l0L1dL
V2ViVmlld1ByaXZhdGVGb3JUZXN0aW5nLmg+CisjaW1wb3J0IDxXZWJLaXQvV0tXZWJwYWdlUHJl
ZmVyZW5jZXNQcml2YXRlLmg+CiAjaW1wb3J0IDxXZWJLaXQvV0tXZWJzaXRlRGF0YVN0b3JlUHJp
dmF0ZS5oPgogI2ltcG9ydCA8V2ViS2l0L1dLV2Vic2l0ZURhdGFTdG9yZVJlZi5oPgogI2ltcG9y
dCA8V2ViS2l0L1dlYktpdC5oPgogI2ltcG9ydCA8V2ViS2l0L19XS0V4cGVyaW1lbnRhbEZlYXR1
cmUuaD4KICNpbXBvcnQgPFdlYktpdC9fV0tXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbi5o
PgotI2ltcG9ydCA8V2ViS2l0L19XS1dlYnNpdGVQb2xpY2llcy5oPgogI2ltcG9ydCA8d3RmL0Rl
cXVlLmg+CiAjaW1wb3J0IDx3dGYvSGFzaE1hcC5oPgogI2ltcG9ydCA8d3RmL1JldGFpblB0ci5o
PgpAQCAtNDc2LDExICs0NzYsMTEgQEAgLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoVXNlckFnZW50
OihOU1N0cgogICAgIHJldHVybiBzZWxmOwogfQogCi0tICh2b2lkKV93ZWJWaWV3OihXS1dlYlZp
ZXcgKil3ZWJWaWV3IGRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb246KFdLTmF2aWdhdGlv
bkFjdGlvbiAqKW5hdmlnYXRpb25BY3Rpb24gdXNlckluZm86KGlkIDxOU1NlY3VyZUNvZGluZz4p
dXNlckluZm8gZGVjaXNpb25IYW5kbGVyOih2b2lkICheKShXS05hdmlnYXRpb25BY3Rpb25Qb2xp
Y3ksIF9XS1dlYnNpdGVQb2xpY2llcyAqKSlkZWNpc2lvbkhhbmRsZXIKKy0gKHZvaWQpX3dlYlZp
ZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcgZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbjoo
V0tOYXZpZ2F0aW9uQWN0aW9uICopbmF2aWdhdGlvbkFjdGlvbiBwcmVmZXJlbmNlczooV0tXZWJw
YWdlUHJlZmVyZW5jZXMgKilwcmVmZXJlbmNlcyB1c2VySW5mbzooaWQgPE5TU2VjdXJlQ29kaW5n
Pil1c2VySW5mbyBkZWNpc2lvbkhhbmRsZXI6KHZvaWQgKF4pKFdLTmF2aWdhdGlvbkFjdGlvblBv
bGljeSwgV0tXZWJwYWdlUHJlZmVyZW5jZXMgKikpZGVjaXNpb25IYW5kbGVyCiB7Ci0gICAgX1dL
V2Vic2l0ZVBvbGljaWVzICp3ZWJzaXRlUG9saWNpZXMgPSBbW1tfV0tXZWJzaXRlUG9saWNpZXMg
YWxsb2NdIGluaXRdIGF1dG9yZWxlYXNlXTsKKyAgICBXS1dlYnBhZ2VQcmVmZXJlbmNlcyAqd2Vi
c2l0ZVBvbGljaWVzID0gW1tbV0tXZWJwYWdlUHJlZmVyZW5jZXMgYWxsb2NdIGluaXRdIGF1dG9y
ZWxlYXNlXTsKICAgICBpZiAobmF2aWdhdGlvbkFjdGlvbi50YXJnZXRGcmFtZS5tYWluRnJhbWUp
Ci0gICAgICAgIFt3ZWJzaXRlUG9saWNpZXMgc2V0Q3VzdG9tVXNlckFnZW50Ol91c2VyQWdlbnRd
OworICAgICAgICBbd2Vic2l0ZVBvbGljaWVzIF9zZXRDdXN0b21Vc2VyQWdlbnQ6X3VzZXJBZ2Vu
dF07CiAKICAgICBkZWNpc2lvbkhhbmRsZXIoV0tOYXZpZ2F0aW9uQWN0aW9uUG9saWN5QWxsb3cs
IHdlYnNpdGVQb2xpY2llcyk7CiB9CkluZGV4OiBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dl
YktpdENvY29hL1dlYnNpdGVQb2xpY2llcy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9UZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1dlYnNpdGVQb2xpY2llcy5tbQkocmV2aXNpb24gMjUz
OTc0KQorKysgVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9XZWJzaXRlUG9s
aWNpZXMubW0JKHdvcmtpbmcgY29weSkKQEAgLTM4LDEyICszOCwxMiBAQAogI2ltcG9ydCA8V2Vi
S2l0L1dLVVJMU2NoZW1lVGFza1ByaXZhdGUuaD4KICNpbXBvcnQgPFdlYktpdC9XS1VzZXJDb250
ZW50Q29udHJvbGxlclByaXZhdGUuaD4KICNpbXBvcnQgPFdlYktpdC9XS1dlYlZpZXdQcml2YXRl
Lmg+CisjaW1wb3J0IDxXZWJLaXQvV0tXZWJwYWdlUHJlZmVyZW5jZXNQcml2YXRlLmg+CiAjaW1w
b3J0IDxXZWJLaXQvV0tXZWJzaXRlRGF0YVN0b3JlUHJpdmF0ZS5oPgogI2ltcG9ydCA8V2ViS2l0
L1dLV2Vic2l0ZVBvbGljaWVzLmg+CiAjaW1wb3J0IDxXZWJLaXQvX1dLQ3VzdG9tSGVhZGVyRmll
bGRzLmg+CiAjaW1wb3J0IDxXZWJLaXQvX1dLVXNlckNvbnRlbnRFeHRlbnNpb25TdG9yZVByaXZh
dGUuaD4KICNpbXBvcnQgPFdlYktpdC9fV0tXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbi5o
PgotI2ltcG9ydCA8V2ViS2l0L19XS1dlYnNpdGVQb2xpY2llcy5oPgogI2ltcG9ydCA8d3RmL0Z1
bmN0aW9uLmg+CiAjaW1wb3J0IDx3dGYvSGFzaE1hcC5oPgogI2ltcG9ydCA8d3RmL01haW5UaHJl
YWQuaD4KQEAgLTEwNCw5ICsxMDQsOSBAQCAtICh2b2lkKXdlYlZpZXc6KFdLV2ViVmlldyAqKXdl
YlZpZXcgcnVuCiAgICAgY29tcGxldGlvbkhhbmRsZXIoKTsKIH0KIAotLSAodm9pZClfd2ViVmll
dzooV0tXZWJWaWV3ICopd2ViVmlldyBkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uOihX
S05hdmlnYXRpb25BY3Rpb24gKiluYXZpZ2F0aW9uQWN0aW9uIGRlY2lzaW9uSGFuZGxlcjoodm9p
ZCAoXikoV0tOYXZpZ2F0aW9uQWN0aW9uUG9saWN5LCBfV0tXZWJzaXRlUG9saWNpZXMgKikpZGVj
aXNpb25IYW5kbGVyCistICh2b2lkKXdlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcgZGVjaWRl
UG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbjooV0tOYXZpZ2F0aW9uQWN0aW9uICopbmF2aWdhdGlv
bkFjdGlvbiBwcmVmZXJlbmNlczooV0tXZWJwYWdlUHJlZmVyZW5jZXMgKilwcmVmZXJlbmNlcyBk
ZWNpc2lvbkhhbmRsZXI6KHZvaWQgKF4pKFdLTmF2aWdhdGlvbkFjdGlvblBvbGljeSwgV0tXZWJw
YWdlUHJlZmVyZW5jZXMgKikpZGVjaXNpb25IYW5kbGVyCiB7Ci0gICAgX1dLV2Vic2l0ZVBvbGlj
aWVzICp3ZWJzaXRlUG9saWNpZXMgPSBbW1tfV0tXZWJzaXRlUG9saWNpZXMgYWxsb2NdIGluaXRd
IGF1dG9yZWxlYXNlXTsKKyAgICBXS1dlYnBhZ2VQcmVmZXJlbmNlcyAqd2Vic2l0ZVBvbGljaWVz
ID0gW1tbV0tXZWJwYWdlUHJlZmVyZW5jZXMgYWxsb2NdIGluaXRdIGF1dG9yZWxlYXNlXTsKICAg
ICBzd2l0Y2ggKGFsZXJ0Q291bnQpIHsKICAgICBjYXNlIDA6CiAgICAgICAgIC8vIFZlcmlmeSB0
aGUgY29udGVudCBibG9ja2VycyBiZWhhdmUgY29ycmVjdGx5IHdpdGggdGhlIGRlZmF1bHQgYmVo
YXZpb3IuCkBAIC0xMTQsMTEgKzExNCwxMSBAQCAtICh2b2lkKV93ZWJWaWV3OihXS1dlYlZpZXcg
Kil3ZWJWaWV3IGRlCiAgICAgY2FzZSAxOgogICAgICAgICB7CiAgICAgICAgICAgICAvLyBWZXJp
ZnkgZGlzYWJsaW5nIGNvbnRlbnQgYmxvY2tlcnMgd29ya3MgY29ycmVjdGx5LgotICAgICAgICAg
ICAgd2Vic2l0ZVBvbGljaWVzLmNvbnRlbnRCbG9ja2Vyc0VuYWJsZWQgPSBmYWxzZTsKKyAgICAg
ICAgICAgIHdlYnNpdGVQb2xpY2llcy5fY29udGVudEJsb2NrZXJzRW5hYmxlZCA9IGZhbHNlOwog
ICAgICAgICAgICAgCiAgICAgICAgICAgICAvLyBWZXJpZnkgY2FsbGluZyB0aGUgZGVjaXNpb25I
YW5kbGVyIGFzeW5jaHJvbm91c2x5IHdvcmtzIGNvcnJlY3RseS4KICAgICAgICAgICAgIGF1dG8g
ZGVjaXNpb25IYW5kbGVyQ29weSA9IEJsb2NrX2NvcHkoZGVjaXNpb25IYW5kbGVyKTsKLSAgICAg
ICAgICAgIGNhbGxPbk1haW5UaHJlYWQoW2RlY2lzaW9uSGFuZGxlckNvcHksIHdlYnNpdGVQb2xp
Y2llcyA9IFJldGFpblB0cjxfV0tXZWJzaXRlUG9saWNpZXM+KHdlYnNpdGVQb2xpY2llcyldIHsK
KyAgICAgICAgICAgIGNhbGxPbk1haW5UaHJlYWQoW2RlY2lzaW9uSGFuZGxlckNvcHksIHdlYnNp
dGVQb2xpY2llcyA9IHJldGFpblB0cih3ZWJzaXRlUG9saWNpZXMpXSB7CiAgICAgICAgICAgICAg
ICAgZGVjaXNpb25IYW5kbGVyQ29weShXS05hdmlnYXRpb25BY3Rpb25Qb2xpY3lBbGxvdywgd2Vi
c2l0ZVBvbGljaWVzLmdldCgpKTsKICAgICAgICAgICAgICAgICBCbG9ja19yZWxlYXNlKGRlY2lz
aW9uSGFuZGxlckNvcHkpOwogICAgICAgICAgICAgfSk7CkBAIC0xMjYsNyArMTI2LDcgQEAgLSAo
dm9pZClfd2ViVmlldzooV0tXZWJWaWV3ICopd2ViVmlldyBkZQogICAgICAgICByZXR1cm47CiAg
ICAgY2FzZSAyOgogICAgICAgICAvLyBWZXJpZnkgZW5hYmxpbmcgY29udGVudCBibG9ja2VycyBo
YXMgbm8gZWZmZWN0IHdoZW4gcmVsb2FkaW5nIHdpdGhvdXQgY29udGVudCBibG9ja2Vycy4KLSAg
ICAgICAgd2Vic2l0ZVBvbGljaWVzLmNvbnRlbnRCbG9ja2Vyc0VuYWJsZWQgPSB0cnVlOworICAg
ICAgICB3ZWJzaXRlUG9saWNpZXMuX2NvbnRlbnRCbG9ja2Vyc0VuYWJsZWQgPSB0cnVlOwogICAg
ICAgICBicmVhazsKICAgICBkZWZhdWx0OgogICAgICAgICBFWFBFQ1RfVFJVRShmYWxzZSk7CkBA
IC0xMzYsNyArMTM2LDcgQEAgLSAodm9pZClfd2ViVmlldzooV0tXZWJWaWV3ICopd2ViVmlldyBk
ZQogCiBAZW5kCiAKLVRFU1QoV2ViS2l0LCBXZWJzaXRlUG9saWNpZXNDb250ZW50QmxvY2tlcnNF
bmFibGVkKQorVEVTVChXZWJwYWdlUHJlZmVyZW5jZXMsIFdlYnNpdGVQb2xpY2llc0NvbnRlbnRC
bG9ja2Vyc0VuYWJsZWQpCiB7CiAgICAgW1tfV0tVc2VyQ29udGVudEV4dGVuc2lvblN0b3JlIGRl
ZmF1bHRTdG9yZV0gX3JlbW92ZUFsbENvbnRlbnRFeHRlbnNpb25zXTsKIApAQCAtMTg4LDEzICsx
ODgsMTMgQEAgLSAodm9pZCl3ZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3IGRlYwogICAgIGRl
Y2lzaW9uSGFuZGxlcihXS05hdmlnYXRpb25BY3Rpb25Qb2xpY3lBbGxvdyk7CiB9CiAKLS0gKHZv
aWQpX3dlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcgZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlv
bkFjdGlvbjooV0tOYXZpZ2F0aW9uQWN0aW9uICopbmF2aWdhdGlvbkFjdGlvbiBkZWNpc2lvbkhh
bmRsZXI6KHZvaWQgKF4pKFdLTmF2aWdhdGlvbkFjdGlvblBvbGljeSwgX1dLV2Vic2l0ZVBvbGlj
aWVzICopKWRlY2lzaW9uSGFuZGxlcgorLSAodm9pZCl3ZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJW
aWV3IGRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb246KFdLTmF2aWdhdGlvbkFjdGlvbiAq
KW5hdmlnYXRpb25BY3Rpb24gcHJlZmVyZW5jZXM6KFdLV2VicGFnZVByZWZlcmVuY2VzICopcHJl
ZmVyZW5jZXMgZGVjaXNpb25IYW5kbGVyOih2b2lkICheKShXS05hdmlnYXRpb25BY3Rpb25Qb2xp
Y3ksIFdLV2VicGFnZVByZWZlcmVuY2VzICopKWRlY2lzaW9uSGFuZGxlcgogewotICAgIF9XS1dl
YnNpdGVQb2xpY2llcyAqd2Vic2l0ZVBvbGljaWVzID0gW1tbX1dLV2Vic2l0ZVBvbGljaWVzIGFs
bG9jXSBpbml0XSBhdXRvcmVsZWFzZV07CisgICAgV0tXZWJwYWdlUHJlZmVyZW5jZXMgKndlYnNp
dGVQb2xpY2llcyA9IFtbW1dLV2VicGFnZVByZWZlcmVuY2VzIGFsbG9jXSBpbml0XSBhdXRvcmVs
ZWFzZV07CiAgICAgaWYgKF9hbGxvd2VkQXV0b3BsYXlRdWlya3NGb3JVUkwpCi0gICAgICAgIHdl
YnNpdGVQb2xpY2llcy5hbGxvd2VkQXV0b3BsYXlRdWlya3MgPSBfYWxsb3dlZEF1dG9wbGF5UXVp
cmtzRm9yVVJMKG5hdmlnYXRpb25BY3Rpb24ucmVxdWVzdC5VUkwpOworICAgICAgICB3ZWJzaXRl
UG9saWNpZXMuX2FsbG93ZWRBdXRvcGxheVF1aXJrcyA9IF9hbGxvd2VkQXV0b3BsYXlRdWlya3NG
b3JVUkwobmF2aWdhdGlvbkFjdGlvbi5yZXF1ZXN0LlVSTCk7CiAgICAgaWYgKF9hdXRvcGxheVBv
bGljeUZvclVSTCkKLSAgICAgICAgd2Vic2l0ZVBvbGljaWVzLmF1dG9wbGF5UG9saWN5ID0gX2F1
dG9wbGF5UG9saWN5Rm9yVVJMKG5hdmlnYXRpb25BY3Rpb24ucmVxdWVzdC5VUkwpOworICAgICAg
ICB3ZWJzaXRlUG9saWNpZXMuX2F1dG9wbGF5UG9saWN5ID0gX2F1dG9wbGF5UG9saWN5Rm9yVVJM
KG5hdmlnYXRpb25BY3Rpb24ucmVxdWVzdC5VUkwpOwogICAgIGRlY2lzaW9uSGFuZGxlcihXS05h
dmlnYXRpb25BY3Rpb25Qb2xpY3lBbGxvdywgd2Vic2l0ZVBvbGljaWVzKTsKIH0KIApAQCAtMjIy
LDE0ICsyMjIsMTQgQEAgLSAodm9pZCl3ZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3IGRlYwog
ICAgIGRlY2lzaW9uSGFuZGxlcihXS05hdmlnYXRpb25BY3Rpb25Qb2xpY3lBbGxvdyk7CiB9CiAK
LS0gKHZvaWQpX3dlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcgZGVjaWRlUG9saWN5Rm9yTmF2
aWdhdGlvbkFjdGlvbjooV0tOYXZpZ2F0aW9uQWN0aW9uICopbmF2aWdhdGlvbkFjdGlvbiBkZWNp
c2lvbkhhbmRsZXI6KHZvaWQgKF4pKFdLTmF2aWdhdGlvbkFjdGlvblBvbGljeSwgX1dLV2Vic2l0
ZVBvbGljaWVzICopKWRlY2lzaW9uSGFuZGxlcgorLSAodm9pZCl3ZWJWaWV3OihXS1dlYlZpZXcg
Kil3ZWJWaWV3IGRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb246KFdLTmF2aWdhdGlvbkFj
dGlvbiAqKW5hdmlnYXRpb25BY3Rpb24gcHJlZmVyZW5jZXM6KFdLV2VicGFnZVByZWZlcmVuY2Vz
ICopcHJlZmVyZW5jZXMgZGVjaXNpb25IYW5kbGVyOih2b2lkICheKShXS05hdmlnYXRpb25BY3Rp
b25Qb2xpY3ksIFdLV2VicGFnZVByZWZlcmVuY2VzICopKWRlY2lzaW9uSGFuZGxlcgogewogICAg
IGRpc3BhdGNoX2FzeW5jKGRpc3BhdGNoX2dldF9tYWluX3F1ZXVlKCksIF57Ci0gICAgICAgIF9X
S1dlYnNpdGVQb2xpY2llcyAqd2Vic2l0ZVBvbGljaWVzID0gW1tbX1dLV2Vic2l0ZVBvbGljaWVz
IGFsbG9jXSBpbml0XSBhdXRvcmVsZWFzZV07CisgICAgICAgIFdLV2VicGFnZVByZWZlcmVuY2Vz
ICp3ZWJzaXRlUG9saWNpZXMgPSBbW1tXS1dlYnBhZ2VQcmVmZXJlbmNlcyBhbGxvY10gaW5pdF0g
YXV0b3JlbGVhc2VdOwogICAgICAgICBpZiAoX2FsbG93ZWRBdXRvcGxheVF1aXJrc0ZvclVSTCkK
LSAgICAgICAgICAgIHdlYnNpdGVQb2xpY2llcy5hbGxvd2VkQXV0b3BsYXlRdWlya3MgPSBfYWxs
b3dlZEF1dG9wbGF5UXVpcmtzRm9yVVJMKG5hdmlnYXRpb25BY3Rpb24ucmVxdWVzdC5VUkwpOwor
ICAgICAgICAgICAgd2Vic2l0ZVBvbGljaWVzLl9hbGxvd2VkQXV0b3BsYXlRdWlya3MgPSBfYWxs
b3dlZEF1dG9wbGF5UXVpcmtzRm9yVVJMKG5hdmlnYXRpb25BY3Rpb24ucmVxdWVzdC5VUkwpOwog
ICAgICAgICBpZiAoX2F1dG9wbGF5UG9saWN5Rm9yVVJMKQotICAgICAgICAgICAgd2Vic2l0ZVBv
bGljaWVzLmF1dG9wbGF5UG9saWN5ID0gX2F1dG9wbGF5UG9saWN5Rm9yVVJMKG5hdmlnYXRpb25B
Y3Rpb24ucmVxdWVzdC5VUkwpOworICAgICAgICAgICAgd2Vic2l0ZVBvbGljaWVzLl9hdXRvcGxh
eVBvbGljeSA9IF9hdXRvcGxheVBvbGljeUZvclVSTChuYXZpZ2F0aW9uQWN0aW9uLnJlcXVlc3Qu
VVJMKTsKICAgICAgICAgZGVjaXNpb25IYW5kbGVyKFdLTmF2aWdhdGlvbkFjdGlvblBvbGljeUFs
bG93LCB3ZWJzaXRlUG9saWNpZXMpOwogICAgIH0pOwogfQpAQCAtMjQ1LDI0ICsyNDUsMjIgQEAg
LSAodm9pZClfd2ViVmlldzooV0tXZWJWaWV3ICopd2ViVmlldyBoYQogQGVuZAogCiBAaW50ZXJm
YWNlIFdlYnNpdGVQb2xpY2llc05hdmlnYXRpb25EZWxlZ2F0ZSA6IFRlc3ROYXZpZ2F0aW9uRGVs
ZWdhdGUgPFdLTmF2aWdhdGlvbkRlbGVnYXRlUHJpdmF0ZT4KLUBwcm9wZXJ0eSAobm9uYXRvbWlj
LCBjb3B5KSB2b2lkICheZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbldpdGhXZWJzaXRl
UG9saWNpZXMpKFdLTmF2aWdhdGlvbkFjdGlvbiAqLCBpZCA8TlNTZWN1cmVDb2Rpbmc+LCB2b2lk
ICheKShXS05hdmlnYXRpb25BY3Rpb25Qb2xpY3ksIF9XS1dlYnNpdGVQb2xpY2llcyAqKSk7CitA
cHJvcGVydHkgKG5vbmF0b21pYywgY29weSkgdm9pZCAoXmRlY2lkZVBvbGljeUZvck5hdmlnYXRp
b25BY3Rpb25XaXRoV2Vic2l0ZVBvbGljaWVzKShXS05hdmlnYXRpb25BY3Rpb24gKiwgV0tXZWJw
YWdlUHJlZmVyZW5jZXMgKiwgaWQgPE5TU2VjdXJlQ29kaW5nPiwgdm9pZCAoXikoV0tOYXZpZ2F0
aW9uQWN0aW9uUG9saWN5LCBXS1dlYnBhZ2VQcmVmZXJlbmNlcyAqKSk7CiBAZW5kCiAKIEBpbXBs
ZW1lbnRhdGlvbiBXZWJzaXRlUG9saWNpZXNOYXZpZ2F0aW9uRGVsZWdhdGUKIAotSUdOT1JFX1dB
Uk5JTkdTX0JFR0lOKCJkZXByZWNhdGVkLWltcGxlbWVudGF0aW9ucyIpCi0tICh2b2lkKV93ZWJW
aWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3IGRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb246
KFdLTmF2aWdhdGlvbkFjdGlvbiAqKW5hdmlnYXRpb25BY3Rpb24gdXNlckluZm86KGlkIDxOU1Nl
Y3VyZUNvZGluZz4pdXNlckluZm8gZGVjaXNpb25IYW5kbGVyOih2b2lkICheKShXS05hdmlnYXRp
b25BY3Rpb25Qb2xpY3ksIF9XS1dlYnNpdGVQb2xpY2llcyAqKSlkZWNpc2lvbkhhbmRsZXIKLUlH
Tk9SRV9XQVJOSU5HU19FTkQKKy0gKHZvaWQpX3dlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcg
ZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbjooV0tOYXZpZ2F0aW9uQWN0aW9uICopbmF2
aWdhdGlvbkFjdGlvbiBwcmVmZXJlbmNlczooV0tXZWJwYWdlUHJlZmVyZW5jZXMgKilwcmVmZXJl
bmNlcyB1c2VySW5mbzooaWQgPE5TU2VjdXJlQ29kaW5nPil1c2VySW5mbyBkZWNpc2lvbkhhbmRs
ZXI6KHZvaWQgKF4pKFdLTmF2aWdhdGlvbkFjdGlvblBvbGljeSwgV0tXZWJwYWdlUHJlZmVyZW5j
ZXMgKikpZGVjaXNpb25IYW5kbGVyCiB7CiAgICAgaWYgKF9kZWNpZGVQb2xpY3lGb3JOYXZpZ2F0
aW9uQWN0aW9uV2l0aFdlYnNpdGVQb2xpY2llcykKLSAgICAgICAgX2RlY2lkZVBvbGljeUZvck5h
dmlnYXRpb25BY3Rpb25XaXRoV2Vic2l0ZVBvbGljaWVzKG5hdmlnYXRpb25BY3Rpb24sIHVzZXJJ
bmZvLCBkZWNpc2lvbkhhbmRsZXIpOworICAgICAgICBfZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlv
bkFjdGlvbldpdGhXZWJzaXRlUG9saWNpZXMobmF2aWdhdGlvbkFjdGlvbiwgcHJlZmVyZW5jZXMs
IHVzZXJJbmZvLCBkZWNpc2lvbkhhbmRsZXIpOwogICAgIGVsc2UKICAgICAgICAgZGVjaXNpb25I
YW5kbGVyKFdLTmF2aWdhdGlvbkFjdGlvblBvbGljeUFsbG93LCBuaWwpOwogfQogCiBAZW5kCiAK
LVRFU1QoV2ViS2l0LCBXZWJzaXRlUG9saWNpZXNBdXRvcGxheUVuYWJsZWQpCitURVNUKFdlYnBh
Z2VQcmVmZXJlbmNlcywgV2Vic2l0ZVBvbGljaWVzQXV0b3BsYXlFbmFibGVkKQogewogICAgIGF1
dG8gY29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tXS1dlYlZpZXdDb25maWd1cmF0aW9uIGFsbG9j
XSBpbml0XSk7CiAKQEAgLTMxMCw5ICszMDgsOSBAQCBURVNUKFdlYktpdCwgV2Vic2l0ZVBvbGlj
aWVzQXV0b3BsYXlFbmFiCiAgICAgW3dlYlZpZXcgd2FpdEZvck1lc3NhZ2U6QCJkaWQtbm90LXBs
YXkiXTsKIAogICAgIC8vIFRlc3QgdXBkYXRpbmcgd2Vic2l0ZSBwb2xpY2llcy4KLSAgICBfV0tX
ZWJzaXRlUG9saWNpZXMgKndlYnNpdGVQb2xpY2llcyA9IFtbW19XS1dlYnNpdGVQb2xpY2llcyBh
bGxvY10gaW5pdF0gYXV0b3JlbGVhc2VdOwotICAgIHdlYnNpdGVQb2xpY2llcy5hdXRvcGxheVBv
bGljeSA9IF9XS1dlYnNpdGVBdXRvcGxheVBvbGljeUFsbG93OwotICAgIFt3ZWJWaWV3IF91cGRh
dGVXZWJzaXRlUG9saWNpZXM6d2Vic2l0ZVBvbGljaWVzXTsKKyAgICBXS1dlYnBhZ2VQcmVmZXJl
bmNlcyAqd2Vic2l0ZVBvbGljaWVzID0gW1tbV0tXZWJwYWdlUHJlZmVyZW5jZXMgYWxsb2NdIGlu
aXRdIGF1dG9yZWxlYXNlXTsKKyAgICB3ZWJzaXRlUG9saWNpZXMuX2F1dG9wbGF5UG9saWN5ID0g
X1dLV2Vic2l0ZUF1dG9wbGF5UG9saWN5QWxsb3c7CisgICAgW3dlYlZpZXcgX3VwZGF0ZVdlYnBh
Z2VQcmVmZXJlbmNlczp3ZWJzaXRlUG9saWNpZXNdOwogICAgIFt3ZWJWaWV3IHN0cmluZ0J5RXZh
bHVhdGluZ0phdmFTY3JpcHQ6QCJwbGF5VmlkZW8oKSJdOwogICAgIFt3ZWJWaWV3IHdhaXRGb3JN
ZXNzYWdlOkAiYXV0b3BsYXllZCJdOwogCkBAIC0zNjMsNyArMzYxLDcgQEAgc3RhdGljIHZvaWQg
cnVuVW50aWxSZWNlaXZlc0F1dG9wbGF5RXZlbgogICAgICAgICBDRlJ1bkxvb3BSdW5Jbk1vZGUo
a0NGUnVuTG9vcERlZmF1bHRNb2RlLCAwLjEsIHRydWUpOwogfQogCi1URVNUKFdlYktpdCwgV2Vi
c2l0ZVBvbGljaWVzUGxheUFmdGVyUHJldmVudGVkQXV0b3BsYXkpCitURVNUKFdlYnBhZ2VQcmVm
ZXJlbmNlcywgV2Vic2l0ZVBvbGljaWVzUGxheUFmdGVyUHJldmVudGVkQXV0b3BsYXkpCiB7CiAg
ICAgYXV0byBjb25maWd1cmF0aW9uID0gYWRvcHROUyhbW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24g
YWxsb2NdIGluaXRdKTsKICAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtbVGVzdFdLV2ViVmll
dyBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU01ha2VSZWN0KDAsIDAsIDMzNiwgMjc2KSBjb25maWd1
cmF0aW9uOmNvbmZpZ3VyYXRpb24uZ2V0KCldKTsKQEAgLTQzNCw3ICs0MzIsNyBAQCBURVNUKFdl
YktpdCwgV2Vic2l0ZVBvbGljaWVzUGxheUFmdGVyUHJlCiAgICAgQVNTRVJUX1RSVUUoKnJlY2Vp
dmVkQXV0b3BsYXlFdmVudEZsYWdzICYga1dLQXV0b3BsYXlFdmVudEZsYWdzUGxheWJhY2tXYXNQ
cmV2ZW50ZWQpOwogfQogCi1URVNUKFdlYktpdCwgV2Vic2l0ZVBvbGljaWVzUGxheWluZ1dpdGhV
c2VyR2VzdHVyZSkKK1RFU1QoV2VicGFnZVByZWZlcmVuY2VzLCBXZWJzaXRlUG9saWNpZXNQbGF5
aW5nV2l0aFVzZXJHZXN0dXJlKQogewogICAgIGF1dG8gY29uZmlndXJhdGlvbiA9IGFkb3B0TlMo
W1tXS1dlYlZpZXdDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0XSk7CiAgICAgYXV0byB3ZWJWaWV3
ID0gYWRvcHROUyhbW1Rlc3RXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNNYWtlUmVj
dCgwLCAwLCA4MDAsIDYwMCkgY29uZmlndXJhdGlvbjpjb25maWd1cmF0aW9uLmdldCgpXSk7CkBA
IC00NzMsNyArNDcxLDcgQEAgVEVTVChXZWJLaXQsIFdlYnNpdGVQb2xpY2llc1BsYXlpbmdXaXRo
VQogICAgIEFTU0VSVF9UUlVFKCpyZWNlaXZlZEF1dG9wbGF5RXZlbnRGbGFncyAmIGtXS0F1dG9w
bGF5RXZlbnRGbGFnc01lZGlhSXNNYWluQ29udGVudCk7CiB9CiAKLVRFU1QoV2ViS2l0LCBXZWJz
aXRlUG9saWNpZXNQbGF5aW5nV2l0aG91dEludGVyZmVyZW5jZSkKK1RFU1QoV2VicGFnZVByZWZl
cmVuY2VzLCBXZWJzaXRlUG9saWNpZXNQbGF5aW5nV2l0aG91dEludGVyZmVyZW5jZSkKIHsKICAg
ICBhdXRvIGNvbmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtbV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBh
bGxvY10gaW5pdF0pOwogICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tUZXN0V0tXZWJWaWV3
IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TTWFrZVJlY3QoMCwgMCwgMzM2LCAyNzYpIGNvbmZpZ3Vy
YXRpb246Y29uZmlndXJhdGlvbi5nZXQoKV0pOwpAQCAtNDkyLDcgKzQ5MCw3IEBAIFRFU1QoV2Vi
S2l0LCBXZWJzaXRlUG9saWNpZXNQbGF5aW5nV2l0aG8KICAgICBBU1NFUlRfVFJVRSgqcmVjZWl2
ZWRBdXRvcGxheUV2ZW50RmxhZ3MgJiBrV0tBdXRvcGxheUV2ZW50RmxhZ3NIYXNBdWRpbyk7CiB9
CiAKLVRFU1QoV2ViS2l0LCBXZWJzaXRlUG9saWNpZXNVc2VySW50ZXJmZXJlbmNlV2l0aFBsYXlp
bmcpCitURVNUKFdlYnBhZ2VQcmVmZXJlbmNlcywgV2Vic2l0ZVBvbGljaWVzVXNlckludGVyZmVy
ZW5jZVdpdGhQbGF5aW5nKQogewogICAgIGF1dG8gY29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tX
S1dlYlZpZXdDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0XSk7CiAgICAgYXV0byB3ZWJWaWV3ID0g
YWRvcHROUyhbW1Rlc3RXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgw
LCAwLCAzMzYsIDI3NikgY29uZmlndXJhdGlvbjpjb25maWd1cmF0aW9uLmdldCgpXSk7CkBAIC01
MzcsNyArNTM1LDcgQEAgVEVTVChXZWJLaXQsIFdlYnNpdGVQb2xpY2llc1VzZXJJbnRlcmZlcgog
ICAgIEFTU0VSVF9UUlVFKCpyZWNlaXZlZEF1dG9wbGF5RXZlbnRGbGFncyAmIGtXS0F1dG9wbGF5
RXZlbnRGbGFnc0hhc0F1ZGlvKTsKIH0KIAotVEVTVChXZWJLaXQsIFdlYnNpdGVQb2xpY2llc1Bl
ckRvY3VtZW50QXV0b3BsYXlCZWhhdmlvck1lZGlhTG9hZGluZykKK1RFU1QoV2VicGFnZVByZWZl
cmVuY2VzLCBXZWJzaXRlUG9saWNpZXNQZXJEb2N1bWVudEF1dG9wbGF5QmVoYXZpb3JNZWRpYUxv
YWRpbmcpCiB7CiAgICAgYXV0byBjb25maWd1cmF0aW9uID0gYWRvcHROUyhbW1dLV2ViVmlld0Nv
bmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdKTsKICAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtb
VGVzdFdLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU01ha2VSZWN0KDAsIDAsIDgwMCwg
NjAwKSBjb25maWd1cmF0aW9uOmNvbmZpZ3VyYXRpb24uZ2V0KCldKTsKQEAgLTU3NywxNiArNTc1
LDE2IEBAIFRFU1QoV2ViS2l0LCBXZWJzaXRlUG9saWNpZXNQZXJEb2N1bWVudEEKICAgICBUZXN0
V2ViS2l0QVBJOjpVdGlsOjpydW4oJnJlY2VpdmVkTG9hZGVkRXZlbnQpOwogfQogCi1URVNUKFdl
YktpdCwgV2Vic2l0ZVBvbGljaWVzV2l0aEJyaWRnaW5nQ2FzdCkKK1RFU1QoV2VicGFnZVByZWZl
cmVuY2VzLCBXZWJzaXRlUG9saWNpZXNXaXRoQnJpZGdpbmdDYXN0KQogewogICAgIGF1dG8gY29u
ZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tXS1dlYlZpZXdDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0
XSk7CiAgICAgYXV0byB3ZWJWaWV3ID0gYWRvcHROUyhbW1Rlc3RXS1dlYlZpZXcgYWxsb2NdIGlu
aXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgwLCAwLCAzMzYsIDI3NikgY29uZmlndXJhdGlvbjpjb25m
aWd1cmF0aW9uLmdldCgpXSk7CiAgICAgYXV0byBkZWxlZ2F0ZSA9IGFkb3B0TlMoW1tXZWJzaXRl
UG9saWNpZXNOYXZpZ2F0aW9uRGVsZWdhdGUgYWxsb2NdIGluaXRdKTsKIAogICAgIF9fYmxvY2sg
Ym9vbCBkaWRJbnZva2VEZWNpc2lvbkhhbmRsZXIgPSBmYWxzZTsKLSAgICBbZGVsZWdhdGUgc2V0
RGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbldpdGhXZWJzaXRlUG9saWNpZXM6XihXS05h
dmlnYXRpb25BY3Rpb24gKiwgaWQgPE5TU2VjdXJlQ29kaW5nPiwgdm9pZCAoXmRlY2lzaW9uSGFu
ZGxlcikoV0tOYXZpZ2F0aW9uQWN0aW9uUG9saWN5LCBfV0tXZWJzaXRlUG9saWNpZXMgKikpIHsK
KyAgICBbZGVsZWdhdGUgc2V0RGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbldpdGhXZWJz
aXRlUG9saWNpZXM6XihXS05hdmlnYXRpb25BY3Rpb24gKiwgV0tXZWJwYWdlUHJlZmVyZW5jZXMg
KiwgaWQgPE5TU2VjdXJlQ29kaW5nPiwgdm9pZCAoXmRlY2lzaW9uSGFuZGxlcikoV0tOYXZpZ2F0
aW9uQWN0aW9uUG9saWN5LCBXS1dlYnBhZ2VQcmVmZXJlbmNlcyAqKSkgewogICAgICAgICBhdXRv
IHBvbGljaWVzID0gYWRvcHRXSyhXS1dlYnNpdGVQb2xpY2llc0NyZWF0ZSgpKTsKLSAgICAgICAg
ZGVjaXNpb25IYW5kbGVyKFdLTmF2aWdhdGlvbkFjdGlvblBvbGljeUFsbG93LCAoX19icmlkZ2Ug
X1dLV2Vic2l0ZVBvbGljaWVzICopcG9saWNpZXMuZ2V0KCkpOworICAgICAgICBkZWNpc2lvbkhh
bmRsZXIoV0tOYXZpZ2F0aW9uQWN0aW9uUG9saWN5QWxsb3csIChfX2JyaWRnZSBXS1dlYnBhZ2VQ
cmVmZXJlbmNlcyAqKXBvbGljaWVzLmdldCgpKTsKICAgICAgICAgZGlkSW52b2tlRGVjaXNpb25I
YW5kbGVyID0gdHJ1ZTsKICAgICB9XTsKIApAQCAtNTk2LDE3ICs1OTQsMTcgQEAgVEVTVChXZWJL
aXQsIFdlYnNpdGVQb2xpY2llc1dpdGhCcmlkZ2luZwogICAgIEVYUEVDVF9UUlVFKGRpZEludm9r
ZURlY2lzaW9uSGFuZGxlcik7CiB9CiAKLVRFU1QoV2ViS2l0LCBXZWJzaXRlUG9saWNpZXNXaXRo
VW5leHBlY3RlZFR5cGUpCitURVNUKFdlYnBhZ2VQcmVmZXJlbmNlcywgV2Vic2l0ZVBvbGljaWVz
V2l0aFVuZXhwZWN0ZWRUeXBlKQogewogICAgIGF1dG8gY29uZmlndXJhdGlvbiA9IGFkb3B0TlMo
W1tXS1dlYlZpZXdDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0XSk7CiAgICAgYXV0byB3ZWJWaWV3
ID0gYWRvcHROUyhbW1Rlc3RXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNNYWtlUmVj
dCgwLCAwLCAzMzYsIDI3NikgY29uZmlndXJhdGlvbjpjb25maWd1cmF0aW9uLmdldCgpXSk7CiAg
ICAgYXV0byBkZWxlZ2F0ZSA9IGFkb3B0TlMoW1tXZWJzaXRlUG9saWNpZXNOYXZpZ2F0aW9uRGVs
ZWdhdGUgYWxsb2NdIGluaXRdKTsKIAogICAgIF9fYmxvY2sgYm9vbCBkaWRDYXRjaEV4Y2VwdGlv
biA9IGZhbHNlOwotICAgIFtkZWxlZ2F0ZSBzZXREZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0
aW9uV2l0aFdlYnNpdGVQb2xpY2llczpeKFdLTmF2aWdhdGlvbkFjdGlvbiAqLCBpZCA8TlNTZWN1
cmVDb2Rpbmc+LCB2b2lkICheZGVjaXNpb25IYW5kbGVyKShXS05hdmlnYXRpb25BY3Rpb25Qb2xp
Y3ksIF9XS1dlYnNpdGVQb2xpY2llcyAqKSkgeworICAgIFtkZWxlZ2F0ZSBzZXREZWNpZGVQb2xp
Y3lGb3JOYXZpZ2F0aW9uQWN0aW9uV2l0aFdlYnNpdGVQb2xpY2llczpeKFdLTmF2aWdhdGlvbkFj
dGlvbiAqLCBXS1dlYnBhZ2VQcmVmZXJlbmNlcyAqLCBpZCA8TlNTZWN1cmVDb2Rpbmc+LCB2b2lk
ICheZGVjaXNpb25IYW5kbGVyKShXS05hdmlnYXRpb25BY3Rpb25Qb2xpY3ksIFdLV2VicGFnZVBy
ZWZlcmVuY2VzICopKSB7CiAgICAgICAgIEB0cnkgewogICAgICAgICAgICAgaWQgZmFrZVBvbGlj
aWVzID0gQCJIZWxsbyI7Ci0gICAgICAgICAgICBkZWNpc2lvbkhhbmRsZXIoV0tOYXZpZ2F0aW9u
QWN0aW9uUG9saWN5QWxsb3csIChfV0tXZWJzaXRlUG9saWNpZXMgKilmYWtlUG9saWNpZXMpOwor
ICAgICAgICAgICAgZGVjaXNpb25IYW5kbGVyKFdLTmF2aWdhdGlvbkFjdGlvblBvbGljeUFsbG93
LCAoV0tXZWJwYWdlUHJlZmVyZW5jZXMgKilmYWtlUG9saWNpZXMpOwogICAgICAgICB9IEBjYXRj
aCAoTlNFeGNlcHRpb24gKmV4Y2VwdGlvbikgewogICAgICAgICAgICAgZGlkQ2F0Y2hFeGNlcHRp
b24gPSB0cnVlOwogICAgICAgICB9CkBAIC02OTYsNyArNjk0LDcgQEAgLSAodm9pZCl3ZWJWaWV3
OihXS1dlYlZpZXcgKil3ZWJWaWV3IHN0bwogCiBAZW5kCiAKLVRFU1QoV2ViS2l0LCBXZWJzaXRl
UG9saWNpZXNEdXJpbmdSZWRpcmVjdCkKK1RFU1QoV2VicGFnZVByZWZlcmVuY2VzLCBXZWJzaXRl
UG9saWNpZXNEdXJpbmdSZWRpcmVjdCkKIHsKICAgICBhdXRvIGNvbmZpZ3VyYXRpb24gPSBhZG9w
dE5TKFtbV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF0pOwogICAgIGF1dG8gdmlk
ZW9EYXRhID0gYWRvcHROUyhbW05TRGF0YSBhbGxvY10gaW5pdFdpdGhDb250ZW50c09mVVJMOltb
TlNCdW5kbGUgbWFpbkJ1bmRsZV0gVVJMRm9yUmVzb3VyY2U6QCJ0ZXN0IiB3aXRoRXh0ZW5zaW9u
OkAibXA0IiBzdWJkaXJlY3Rvcnk6QCJUZXN0V2ViS2l0QVBJLnJlc291cmNlcyJdXSk7CkBAIC03
MTYsNyArNzE0LDcgQEAgVEVTVChXZWJLaXQsIFdlYnNpdGVQb2xpY2llc0R1cmluZ1JlZGlyZQog
ICAgIFt3ZWJWaWV3IHdhaXRGb3JNZXNzYWdlOkAiYXV0b3BsYXllZCJdOwogfQogCi1URVNUKFdl
YktpdCwgV2Vic2l0ZVBvbGljaWVzVXBkYXRlcykKK1RFU1QoV2VicGFnZVByZWZlcmVuY2VzLCBX
ZWJzaXRlUG9saWNpZXNVcGRhdGVzKQogewogICAgIGF1dG8gY29uZmlndXJhdGlvbiA9IGFkb3B0
TlMoW1tXS1dlYlZpZXdDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0XSk7CiAgICAgYXV0byB3ZWJW
aWV3ID0gYWRvcHROUyhbW1Rlc3RXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNNYWtl
UmVjdCgwLCAwLCA4MDAsIDYwMCkgY29uZmlndXJhdGlvbjpjb25maWd1cmF0aW9uLmdldCgpXSk7
CkBAIC03MzIsOSArNzMwLDkgQEAgVEVTVChXZWJLaXQsIFdlYnNpdGVQb2xpY2llc1VwZGF0ZXMp
CiAgICAgW3dlYlZpZXcgbG9hZFJlcXVlc3Q6cmVxdWVzdFdpdGhBdWRpb107CiAgICAgW3dlYlZp
ZXcgd2FpdEZvck1lc3NhZ2U6QCJkaWQtbm90LXBsYXkiXTsKIAotICAgIF9XS1dlYnNpdGVQb2xp
Y2llcyAqcG9saWNpZXMgPSBbW1tfV0tXZWJzaXRlUG9saWNpZXMgYWxsb2NdIGluaXRdIGF1dG9y
ZWxlYXNlXTsKLSAgICBwb2xpY2llcy5hdXRvcGxheVBvbGljeSA9IF9XS1dlYnNpdGVBdXRvcGxh
eVBvbGljeUFsbG93OwotICAgIFt3ZWJWaWV3IF91cGRhdGVXZWJzaXRlUG9saWNpZXM6cG9saWNp
ZXNdOworICAgIFdLV2VicGFnZVByZWZlcmVuY2VzICpwb2xpY2llcyA9IFtbW1dLV2VicGFnZVBy
ZWZlcmVuY2VzIGFsbG9jXSBpbml0XSBhdXRvcmVsZWFzZV07CisgICAgcG9saWNpZXMuX2F1dG9w
bGF5UG9saWN5ID0gX1dLV2Vic2l0ZUF1dG9wbGF5UG9saWN5QWxsb3c7CisgICAgW3dlYlZpZXcg
X3VwZGF0ZVdlYnBhZ2VQcmVmZXJlbmNlczpwb2xpY2llc107CiAKICAgICAvLyBOb3cgdGhhdCB3
ZSB1cGRhdGVkIG91ciBwb2xpY2llcywgYSBzY3JpcHQgc2hvdWxkIGJlIGFibGUgdG8gYXV0b3Bs
YXkgbWVkaWEuCiAgICAgW3dlYlZpZXcgc3RyaW5nQnlFdmFsdWF0aW5nSmF2YVNjcmlwdDpAInBs
YXlWaWRlbygpIl07CkBAIC03NTIsNyArNzUwLDcgQEAgVEVTVChXZWJLaXQsIFdlYnNpdGVQb2xp
Y2llc1VwZGF0ZXMpCiAgICAgcnVuVW50aWxSZWNlaXZlc0F1dG9wbGF5RXZlbnQoa1dLQXV0b3Bs
YXlFdmVudERpZFByZXZlbnRGcm9tQXV0b3BsYXlpbmcpOwogfQogCi1URVNUKFdlYktpdCwgV2Vi
c2l0ZVBvbGljaWVzQXJiaXRyYXJ5VXNlckdlc3R1cmVRdWlyaykKK1RFU1QoV2VicGFnZVByZWZl
cmVuY2VzLCBXZWJzaXRlUG9saWNpZXNBcmJpdHJhcnlVc2VyR2VzdHVyZVF1aXJrKQogewogICAg
IGF1dG8gY29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tXS1dlYlZpZXdDb25maWd1cmF0aW9uIGFs
bG9jXSBpbml0XSk7CiAgICAgYXV0byB3ZWJWaWV3ID0gYWRvcHROUyhbW1Rlc3RXS1dlYlZpZXcg
YWxsb2NdIGluaXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgwLCAwLCA4MDAsIDYwMCkgY29uZmlndXJh
dGlvbjpjb25maWd1cmF0aW9uLmdldCgpXSk7CkBAIC03ODUsNyArNzgzLDcgQEAgVEVTVChXZWJL
aXQsIFdlYnNpdGVQb2xpY2llc0FyYml0cmFyeVVzZQogICAgIFt3ZWJWaWV3IHdhaXRGb3JNZXNz
YWdlOkAiYXV0b3BsYXllZCJdOwogfQogCi1URVNUKFdlYktpdCwgV2Vic2l0ZVBvbGljaWVzQXV0
b3BsYXlRdWlya3MpCitURVNUKFdlYnBhZ2VQcmVmZXJlbmNlcywgV2Vic2l0ZVBvbGljaWVzQXV0
b3BsYXlRdWlya3MpCiB7CiAgICAgYXV0byBjb25maWd1cmF0aW9uID0gYWRvcHROUyhbW1dLV2Vi
Vmlld0NvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdKTsKICAgICBhdXRvIHdlYlZpZXcgPSBhZG9w
dE5TKFtbVGVzdFdLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU01ha2VSZWN0KDAsIDAs
IDgwMCwgNjAwKSBjb25maWd1cmF0aW9uOmNvbmZpZ3VyYXRpb24uZ2V0KCldKTsKQEAgLTg0Myw3
ICs4NDEsNyBAQCBURVNUKFdlYktpdCwgV2Vic2l0ZVBvbGljaWVzQXV0b3BsYXlRdWlyCiAgICAg
W3dlYlZpZXcgd2FpdEZvck1lc3NhZ2U6QCJwbGF5aW5nIl07CiB9CiAKLVRFU1QoV2ViS2l0LCBX
ZWJzaXRlUG9saWNpZXNQZXJEb2N1bWVudEF1dG9wbGF5QmVoYXZpb3JRdWlya3MpCitURVNUKFdl
YnBhZ2VQcmVmZXJlbmNlcywgV2Vic2l0ZVBvbGljaWVzUGVyRG9jdW1lbnRBdXRvcGxheUJlaGF2
aW9yUXVpcmtzKQogewogICAgIGF1dG8gY29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tXS1dlYlZp
ZXdDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0XSk7CiAgICAgYXV0byB3ZWJWaWV3ID0gYWRvcHRO
UyhbW1Rlc3RXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgwLCAwLCA4
MDAsIDYwMCkgY29uZmlndXJhdGlvbjpjb25maWd1cmF0aW9uLmdldCgpXSk7CkBAIC05MDYsNyAr
OTA0LDcgQEAgVEVTVChXZWJLaXQsIFdlYnNpdGVQb2xpY2llc1BlckRvY3VtZW50QQogICAgIFt3
ZWJWaWV3IHdhaXRGb3JNZXNzYWdlOkAiZGlkLW5vdC1wbGF5LXZpZGVvMiJdOwogfQogCi1URVNU
KFdlYktpdCwgV2Vic2l0ZVBvbGljaWVzQXV0b3BsYXlRdWlya3NBc3luY1BvbGljeURlbGVnYXRl
KQorVEVTVChXZWJwYWdlUHJlZmVyZW5jZXMsIFdlYnNpdGVQb2xpY2llc0F1dG9wbGF5UXVpcmtz
QXN5bmNQb2xpY3lEZWxlZ2F0ZSkKIHsKICAgICBhdXRvIGNvbmZpZ3VyYXRpb24gPSBhZG9wdE5T
KFtbV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF0pOwogICAgIGF1dG8gd2ViVmll
dyA9IGFkb3B0TlMoW1tUZXN0V0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TTWFrZVJl
Y3QoMCwgMCwgODAwLCA2MDApIGNvbmZpZ3VyYXRpb246Y29uZmlndXJhdGlvbi5nZXQoKV0pOwpA
QCAtOTUwLDcgKzk0OCw3IEBAIFRFU1QoV2ViS2l0LCBXZWJzaXRlUG9saWNpZXNBdXRvcGxheVF1
aXIKIH0KICNlbmRpZiAvLyBQTEFURk9STShNQUMpCiAKLVRFU1QoV2ViS2l0LCBJbnZhbGlkQ3Vz
dG9tSGVhZGVycykKK1RFU1QoV2VicGFnZVByZWZlcmVuY2VzLCBJbnZhbGlkQ3VzdG9tSGVhZGVy
cykKIHsKICAgICBhdXRvIGN1c3RvbUhlYWRlckZpZWxkcyA9IGFkb3B0TlMoW1tfV0tDdXN0b21I
ZWFkZXJGaWVsZHMgYWxsb2NdIGluaXRdKTsKICAgICBbY3VzdG9tSGVhZGVyRmllbGRzIHNldEZp
ZWxkczpAe0AiaW52YWxpZGhlYWRlciIgOiBAIiIsIEAibm9uY3VzdG9tIiA6IEAiaGVhZGVyIiwg
QCIgICAgeC1DdXN0b20gIjpAIiAgTmVlZHMgQ2Fub25pY2FsaXphdGlvblx0ICIsIEAieC1vdGhl
ciIgOiBAIm90aGVyIHZhbHVlIn1dOwpAQCAtMTA5Nyw3ICsxMDk1LDcgQEAgLSAodm9pZCl3ZWJW
aWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3IHN0bwogCiBAZW5kCiAKLVRFU1QoV2ViS2l0LCBDdXN0
b21IZWFkZXJGaWVsZHMpCitURVNUKFdlYnBhZ2VQcmVmZXJlbmNlcywgQ3VzdG9tSGVhZGVyRmll
bGRzKQogewogICAgIGF1dG8gZGVsZWdhdGUgPSBhZG9wdE5TKFtbQ3VzdG9tSGVhZGVyRmllbGRz
RGVsZWdhdGUgYWxsb2NdIGluaXRdKTsKICAgICBhdXRvIGNvbmZpZ3VyYXRpb24gPSBhZG9wdE5T
KFtbV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF0pOwpAQCAtMTE3MCwxMiArMTE2
OCwxMiBAQCBAaW50ZXJmYWNlIEN1c3RvbVVzZXJBZ2VudERlbGVnYXRlIDogTlNPCiBAaW1wbGVt
ZW50YXRpb24gQ3VzdG9tVXNlckFnZW50RGVsZWdhdGUKIAogSUdOT1JFX1dBUk5JTkdTX0JFR0lO
KCJkZXByZWNhdGVkLWltcGxlbWVudGF0aW9ucyIpCi0tICh2b2lkKV93ZWJWaWV3OihXS1dlYlZp
ZXcgKil3ZWJWaWV3IGRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb246KFdLTmF2aWdhdGlv
bkFjdGlvbiAqKW5hdmlnYXRpb25BY3Rpb24gdXNlckluZm86KGlkIDxOU1NlY3VyZUNvZGluZz4p
dXNlckluZm8gZGVjaXNpb25IYW5kbGVyOih2b2lkICheKShXS05hdmlnYXRpb25BY3Rpb25Qb2xp
Y3ksIF9XS1dlYnNpdGVQb2xpY2llcyAqKSlkZWNpc2lvbkhhbmRsZXIKKy0gKHZvaWQpX3dlYlZp
ZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcgZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbjoo
V0tOYXZpZ2F0aW9uQWN0aW9uICopbmF2aWdhdGlvbkFjdGlvbiB1c2VySW5mbzooaWQgPE5TU2Vj
dXJlQ29kaW5nPil1c2VySW5mbyBkZWNpc2lvbkhhbmRsZXI6KHZvaWQgKF4pKFdLTmF2aWdhdGlv
bkFjdGlvblBvbGljeSwgV0tXZWJwYWdlUHJlZmVyZW5jZXMgKikpZGVjaXNpb25IYW5kbGVyCiBJ
R05PUkVfV0FSTklOR1NfRU5ECiB7Ci0gICAgX1dLV2Vic2l0ZVBvbGljaWVzICp3ZWJzaXRlUG9s
aWNpZXMgPSBbW1tfV0tXZWJzaXRlUG9saWNpZXMgYWxsb2NdIGluaXRdIGF1dG9yZWxlYXNlXTsK
KyAgICBXS1dlYnBhZ2VQcmVmZXJlbmNlcyAqd2Vic2l0ZVBvbGljaWVzID0gW1tbV0tXZWJwYWdl
UHJlZmVyZW5jZXMgYWxsb2NdIGluaXRdIGF1dG9yZWxlYXNlXTsKICAgICBpZiAobmF2aWdhdGlv
bkFjdGlvbi50YXJnZXRGcmFtZS5tYWluRnJhbWUpCi0gICAgICAgIFt3ZWJzaXRlUG9saWNpZXMg
c2V0Q3VzdG9tVXNlckFnZW50OkAiRm9vIEN1c3RvbSBVc2VyQWdlbnQiXTsKKyAgICAgICAgW3dl
YnNpdGVQb2xpY2llcyBfc2V0Q3VzdG9tVXNlckFnZW50OkAiRm9vIEN1c3RvbSBVc2VyQWdlbnQi
XTsKIAogICAgIGRlY2lzaW9uSGFuZGxlcihXS05hdmlnYXRpb25BY3Rpb25Qb2xpY3lBbGxvdywg
d2Vic2l0ZVBvbGljaWVzKTsKIH0KQEAgLTEyMTcsNyArMTIxNSw3IEBAIG9ubG9hZCA9ICgpID0+
IHsKIDwvc2NyaXB0PgogKVRFU1RSRVNPVVJDRSI7CiAKLVRFU1QoV2ViS2l0LCBXZWJzaXRlUG9s
aWNpZXNDdXN0b21Vc2VyQWdlbnQpCitURVNUKFdlYnBhZ2VQcmVmZXJlbmNlcywgV2Vic2l0ZVBv
bGljaWVzQ3VzdG9tVXNlckFnZW50KQogewogICAgIGF1dG8gY29uZmlndXJhdGlvbiA9IGFkb3B0
TlMoW1tXS1dlYlZpZXdDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0XSk7CiAKQEAgLTEyNjEsMTMg
KzEyNTksMTMgQEAgQGludGVyZmFjZSBDdXN0b21KYXZhU2NyaXB0VXNlckFnZW50RGVsZQogCiBA
aW1wbGVtZW50YXRpb24gQ3VzdG9tSmF2YVNjcmlwdFVzZXJBZ2VudERlbGVnYXRlCiAKLS0gKHZv
aWQpX3dlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcgZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlv
bkFjdGlvbjooV0tOYXZpZ2F0aW9uQWN0aW9uICopbmF2aWdhdGlvbkFjdGlvbiB1c2VySW5mbzoo
aWQgPE5TU2VjdXJlQ29kaW5nPil1c2VySW5mbyBkZWNpc2lvbkhhbmRsZXI6KHZvaWQgKF4pKFdL
TmF2aWdhdGlvbkFjdGlvblBvbGljeSwgX1dLV2Vic2l0ZVBvbGljaWVzICopKWRlY2lzaW9uSGFu
ZGxlcgorLSAodm9pZClfd2ViVmlldzooV0tXZWJWaWV3ICopd2ViVmlldyBkZWNpZGVQb2xpY3lG
b3JOYXZpZ2F0aW9uQWN0aW9uOihXS05hdmlnYXRpb25BY3Rpb24gKiluYXZpZ2F0aW9uQWN0aW9u
IHVzZXJJbmZvOihpZCA8TlNTZWN1cmVDb2Rpbmc+KXVzZXJJbmZvIGRlY2lzaW9uSGFuZGxlcjoo
dm9pZCAoXikoV0tOYXZpZ2F0aW9uQWN0aW9uUG9saWN5LCBXS1dlYnBhZ2VQcmVmZXJlbmNlcyAq
KSlkZWNpc2lvbkhhbmRsZXIKIHsKLSAgICBfV0tXZWJzaXRlUG9saWNpZXMgKndlYnNpdGVQb2xp
Y2llcyA9IFtbW19XS1dlYnNpdGVQb2xpY2llcyBhbGxvY10gaW5pdF0gYXV0b3JlbGVhc2VdOwor
ICAgIFdLV2VicGFnZVByZWZlcmVuY2VzICp3ZWJzaXRlUG9saWNpZXMgPSBbW1tXS1dlYnBhZ2VQ
cmVmZXJlbmNlcyBhbGxvY10gaW5pdF0gYXV0b3JlbGVhc2VdOwogICAgIGlmIChuYXZpZ2F0aW9u
QWN0aW9uLnRhcmdldEZyYW1lLm1haW5GcmFtZSkgewotICAgICAgICBbd2Vic2l0ZVBvbGljaWVz
IHNldEN1c3RvbVVzZXJBZ2VudEFzU2l0ZVNwZWNpZmljUXVpcmtzOkAiRm9vIFNpdGUgU3BlY2lm
aWMgUXVyaWtzIFVzZXJBZ2VudCJdOworICAgICAgICBbd2Vic2l0ZVBvbGljaWVzIF9zZXRDdXN0
b21Vc2VyQWdlbnRBc1NpdGVTcGVjaWZpY1F1aXJrczpAIkZvbyBTaXRlIFNwZWNpZmljIFF1cmlr
cyBVc2VyQWdlbnQiXTsKICAgICAgICAgaWYgKF9zZXRDdXN0b21Vc2VyQWdlbnQpCi0gICAgICAg
ICAgICBbd2Vic2l0ZVBvbGljaWVzIHNldEN1c3RvbVVzZXJBZ2VudDpAIkZvbyBDdXN0b20gUmVx
dWVzdCBVc2VyQWdlbnQiXTsKKyAgICAgICAgICAgIFt3ZWJzaXRlUG9saWNpZXMgX3NldEN1c3Rv
bVVzZXJBZ2VudDpAIkZvbyBDdXN0b20gUmVxdWVzdCBVc2VyQWdlbnQiXTsKICAgICB9CiAKICAg
ICBkZWNpc2lvbkhhbmRsZXIoV0tOYXZpZ2F0aW9uQWN0aW9uUG9saWN5QWxsb3csIHdlYnNpdGVQ
b2xpY2llcyk7CkBAIC0xMjgwLDcgKzEyNzgsNyBAQCAtICh2b2lkKXdlYlZpZXc6KFdLV2ViVmll
dyAqKXdlYlZpZXcgZGlkCiAKIEBlbmQKIAotVEVTVChXZWJLaXQsIFdlYnNpdGVQb2xpY2llc0N1
c3RvbVVzZXJBZ2VudEFzU2l0ZVNwZWNpZmljUXVpcmtzRGlzYWJsZWQpCitURVNUKFdlYnBhZ2VQ
cmVmZXJlbmNlcywgV2Vic2l0ZVBvbGljaWVzQ3VzdG9tVXNlckFnZW50QXNTaXRlU3BlY2lmaWNR
dWlya3NEaXNhYmxlZCkKIHsKICAgICBhdXRvIGNvbmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtbV0tX
ZWJWaWV3Q29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF0pOwogCkBAIC0xMzE5LDcgKzEzMTcsNyBA
QCBURVNUKFdlYktpdCwgV2Vic2l0ZVBvbGljaWVzQ3VzdG9tVXNlckFnCiAgICAgRVhQRUNUX1RS
VUUoW3VzZXJBZ2VudFN0cmluZyBjb250YWluc1N0cmluZzpAIihLSFRNTCwgbGlrZSBHZWNrbyki
XSk7CiB9CiAKLVRFU1QoV2ViS2l0LCBXZWJzaXRlUG9saWNpZXNDdXN0b21Vc2VyQWdlbnRBc1Np
dGVTcGVjaWZpY1F1aXJrcykKK1RFU1QoV2VicGFnZVByZWZlcmVuY2VzLCBXZWJzaXRlUG9saWNp
ZXNDdXN0b21Vc2VyQWdlbnRBc1NpdGVTcGVjaWZpY1F1aXJrcykKIHsKICAgICBhdXRvIGNvbmZp
Z3VyYXRpb24gPSBhZG9wdE5TKFtbV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF0p
OwogCkBAIC0xMzU4LDExICsxMzU2LDExIEBAIEBpbnRlcmZhY2UgQ3VzdG9tTmF2aWdhdG9yUGxh
dGZvcm1EZWxlZ2EKIAogQGltcGxlbWVudGF0aW9uIEN1c3RvbU5hdmlnYXRvclBsYXRmb3JtRGVs
ZWdhdGUKIAotLSAodm9pZClfd2ViVmlldzooV0tXZWJWaWV3ICopd2ViVmlldyBkZWNpZGVQb2xp
Y3lGb3JOYXZpZ2F0aW9uQWN0aW9uOihXS05hdmlnYXRpb25BY3Rpb24gKiluYXZpZ2F0aW9uQWN0
aW9uIHVzZXJJbmZvOihpZCA8TlNTZWN1cmVDb2Rpbmc+KXVzZXJJbmZvIGRlY2lzaW9uSGFuZGxl
cjoodm9pZCAoXikoV0tOYXZpZ2F0aW9uQWN0aW9uUG9saWN5LCBfV0tXZWJzaXRlUG9saWNpZXMg
KikpZGVjaXNpb25IYW5kbGVyCistICh2b2lkKV93ZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3
IGRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb246KFdLTmF2aWdhdGlvbkFjdGlvbiAqKW5h
dmlnYXRpb25BY3Rpb24gdXNlckluZm86KGlkIDxOU1NlY3VyZUNvZGluZz4pdXNlckluZm8gZGVj
aXNpb25IYW5kbGVyOih2b2lkICheKShXS05hdmlnYXRpb25BY3Rpb25Qb2xpY3ksIFdLV2VicGFn
ZVByZWZlcmVuY2VzICopKWRlY2lzaW9uSGFuZGxlcgogewotICAgIF9XS1dlYnNpdGVQb2xpY2ll
cyAqd2Vic2l0ZVBvbGljaWVzID0gW1tbX1dLV2Vic2l0ZVBvbGljaWVzIGFsbG9jXSBpbml0XSBh
dXRvcmVsZWFzZV07CisgICAgV0tXZWJwYWdlUHJlZmVyZW5jZXMgKndlYnNpdGVQb2xpY2llcyA9
IFtbW1dLV2VicGFnZVByZWZlcmVuY2VzIGFsbG9jXSBpbml0XSBhdXRvcmVsZWFzZV07CiAgICAg
aWYgKG5hdmlnYXRpb25BY3Rpb24udGFyZ2V0RnJhbWUubWFpbkZyYW1lKQotICAgICAgICBbd2Vi
c2l0ZVBvbGljaWVzIHNldEN1c3RvbU5hdmlnYXRvclBsYXRmb3JtOkAiVGVzdCBDdXN0b20gUGxh
dGZvcm0iXTsKKyAgICAgICAgW3dlYnNpdGVQb2xpY2llcyBfc2V0Q3VzdG9tTmF2aWdhdG9yUGxh
dGZvcm06QCJUZXN0IEN1c3RvbSBQbGF0Zm9ybSJdOwogCiAgICAgZGVjaXNpb25IYW5kbGVyKFdL
TmF2aWdhdGlvbkFjdGlvblBvbGljeUFsbG93LCB3ZWJzaXRlUG9saWNpZXMpOwogfQpAQCAtMTM3
NCw3ICsxMzcyLDcgQEAgLSAodm9pZCl3ZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3IGRpZAog
CiBAZW5kCiAKLVRFU1QoV2ViS2l0LCBXZWJzaXRlUG9saWNpZXNDdXN0b21OYXZpZ2F0b3JQbGF0
Zm9ybSkKK1RFU1QoV2VicGFnZVByZWZlcmVuY2VzLCBXZWJzaXRlUG9saWNpZXNDdXN0b21OYXZp
Z2F0b3JQbGF0Zm9ybSkKIHsKICAgICBhdXRvIGNvbmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtbV0tX
ZWJWaWV3Q29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF0pOwogICAgIApAQCAtMTQxNywxMCArMTQx
NSwxMCBAQCAtIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhEZXZpY2VPcmllbnRhdGlvCiAgICAgcmV0
dXJuIHNlbGY7CiB9CiAKLS0gKHZvaWQpX3dlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcgZGVj
aWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbjooV0tOYXZpZ2F0aW9uQWN0aW9uICopbmF2aWdh
dGlvbkFjdGlvbiB1c2VySW5mbzooaWQgPE5TU2VjdXJlQ29kaW5nPil1c2VySW5mbyBkZWNpc2lv
bkhhbmRsZXI6KHZvaWQgKF4pKFdLTmF2aWdhdGlvbkFjdGlvblBvbGljeSwgX1dLV2Vic2l0ZVBv
bGljaWVzICopKWRlY2lzaW9uSGFuZGxlcgorLSAodm9pZClfd2ViVmlldzooV0tXZWJWaWV3ICop
d2ViVmlldyBkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uOihXS05hdmlnYXRpb25BY3Rp
b24gKiluYXZpZ2F0aW9uQWN0aW9uIHByZWZlcmVuY2VzOihXS1dlYnBhZ2VQcmVmZXJlbmNlcyAq
KXByZWZlcmVuY2VzIHVzZXJJbmZvOihpZCA8TlNTZWN1cmVDb2Rpbmc+KXVzZXJJbmZvIGRlY2lz
aW9uSGFuZGxlcjoodm9pZCAoXikoV0tOYXZpZ2F0aW9uQWN0aW9uUG9saWN5LCBXS1dlYnBhZ2VQ
cmVmZXJlbmNlcyAqKSlkZWNpc2lvbkhhbmRsZXIKIHsKLSAgICBfV0tXZWJzaXRlUG9saWNpZXMg
KndlYnNpdGVQb2xpY2llcyA9IFtbW19XS1dlYnNpdGVQb2xpY2llcyBhbGxvY10gaW5pdF0gYXV0
b3JlbGVhc2VdOwotICAgIFt3ZWJzaXRlUG9saWNpZXMgc2V0RGV2aWNlT3JpZW50YXRpb25BbmRN
b3Rpb25BY2Nlc3NQb2xpY3k6X2FjY2Vzc1BvbGljeV07CisgICAgV0tXZWJwYWdlUHJlZmVyZW5j
ZXMgKndlYnNpdGVQb2xpY2llcyA9IFtbW1dLV2VicGFnZVByZWZlcmVuY2VzIGFsbG9jXSBpbml0
XSBhdXRvcmVsZWFzZV07CisgICAgW3dlYnNpdGVQb2xpY2llcyBfc2V0RGV2aWNlT3JpZW50YXRp
b25BbmRNb3Rpb25BY2Nlc3NQb2xpY3k6X2FjY2Vzc1BvbGljeV07CiAKICAgICBkZWNpc2lvbkhh
bmRsZXIoV0tOYXZpZ2F0aW9uQWN0aW9uUG9saWN5QWxsb3csIHdlYnNpdGVQb2xpY2llcyk7CiB9
CkBAIC0xNDk0LDE3ICsxNDkyLDE3IEBAIHN0YXRpYyB2b2lkIHJ1bldlYnNpdGVQb2xpY2llc0Rl
dmljZU9yaWUKICAgICB9CiB9CiAKLVRFU1QoV2ViS2l0LCBXZWJzaXRlUG9saWNpZXNEZXZpY2VP
cmllbnRhdGlvbkdyYW50QWNjZXNzKQorVEVTVChXZWJwYWdlUHJlZmVyZW5jZXMsIFdlYnNpdGVQ
b2xpY2llc0RldmljZU9yaWVudGF0aW9uR3JhbnRBY2Nlc3MpCiB7CiAgICAgcnVuV2Vic2l0ZVBv
bGljaWVzRGV2aWNlT3JpZW50YXRpb25FdmVudFRlc3QoX1dLV2Vic2l0ZURldmljZU9yaWVudGF0
aW9uQW5kTW90aW9uQWNjZXNzUG9saWN5R3JhbnQpOwogfQogCi1URVNUKFdlYktpdCwgV2Vic2l0
ZVBvbGljaWVzRGV2aWNlT3JpZW50YXRpb25EZW55QWNjZXNzKQorVEVTVChXZWJwYWdlUHJlZmVy
ZW5jZXMsIFdlYnNpdGVQb2xpY2llc0RldmljZU9yaWVudGF0aW9uRGVueUFjY2VzcykKIHsKICAg
ICBydW5XZWJzaXRlUG9saWNpZXNEZXZpY2VPcmllbnRhdGlvbkV2ZW50VGVzdChfV0tXZWJzaXRl
RGV2aWNlT3JpZW50YXRpb25BbmRNb3Rpb25BY2Nlc3NQb2xpY3lEZW55KTsKIH0KIAotVEVTVChX
ZWJLaXQsIFdlYnNpdGVQb2xpY2llc0RldmljZU9yaWVudGF0aW9uQXNrQWNjZXNzKQorVEVTVChX
ZWJwYWdlUHJlZmVyZW5jZXMsIFdlYnNpdGVQb2xpY2llc0RldmljZU9yaWVudGF0aW9uQXNrQWNj
ZXNzKQogewogICAgIHJ1bldlYnNpdGVQb2xpY2llc0RldmljZU9yaWVudGF0aW9uRXZlbnRUZXN0
KF9XS1dlYnNpdGVEZXZpY2VPcmllbnRhdGlvbkFuZE1vdGlvbkFjY2Vzc1BvbGljeUFzayk7CiB9
CkBAIC0xNTI0LDExICsxNTIyLDExIEBAIC0gKHZvaWQpd2ViVmlldzooV0tXZWJWaWV3ICopd2Vi
VmlldyBkZWMKICAgICBkZWNpc2lvbkhhbmRsZXIoV0tOYXZpZ2F0aW9uQWN0aW9uUG9saWN5QWxs
b3cpOwogfQogCi0tICh2b2lkKV93ZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3IGRlY2lkZVBv
bGljeUZvck5hdmlnYXRpb25BY3Rpb246KFdLTmF2aWdhdGlvbkFjdGlvbiAqKW5hdmlnYXRpb25B
Y3Rpb24gZGVjaXNpb25IYW5kbGVyOih2b2lkICheKShXS05hdmlnYXRpb25BY3Rpb25Qb2xpY3ks
IF9XS1dlYnNpdGVQb2xpY2llcyAqKSlkZWNpc2lvbkhhbmRsZXIKKy0gKHZvaWQpX3dlYlZpZXc6
KFdLV2ViVmlldyAqKXdlYlZpZXcgZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbjooV0tO
YXZpZ2F0aW9uQWN0aW9uICopbmF2aWdhdGlvbkFjdGlvbiBkZWNpc2lvbkhhbmRsZXI6KHZvaWQg
KF4pKFdLTmF2aWdhdGlvbkFjdGlvblBvbGljeSwgV0tXZWJwYWdlUHJlZmVyZW5jZXMgKikpZGVj
aXNpb25IYW5kbGVyCiB7Ci0gICAgX1dLV2Vic2l0ZVBvbGljaWVzICp3ZWJzaXRlUG9saWNpZXMg
PSBbW1tfV0tXZWJzaXRlUG9saWNpZXMgYWxsb2NdIGluaXRdIGF1dG9yZWxlYXNlXTsKKyAgICBX
S1dlYnBhZ2VQcmVmZXJlbmNlcyAqd2Vic2l0ZVBvbGljaWVzID0gW1tbV0tXZWJwYWdlUHJlZmVy
ZW5jZXMgYWxsb2NdIGluaXRdIGF1dG9yZWxlYXNlXTsKICAgICBpZiAoX3BvcFVwUG9saWN5Rm9y
VVJMKQotICAgICAgICB3ZWJzaXRlUG9saWNpZXMucG9wVXBQb2xpY3kgPSBfcG9wVXBQb2xpY3lG
b3JVUkwobmF2aWdhdGlvbkFjdGlvbi5yZXF1ZXN0LlVSTCk7CisgICAgICAgIHdlYnNpdGVQb2xp
Y2llcy5fcG9wVXBQb2xpY3kgPSBfcG9wVXBQb2xpY3lGb3JVUkwobmF2aWdhdGlvbkFjdGlvbi5y
ZXF1ZXN0LlVSTCk7CiAgICAgZGVjaXNpb25IYW5kbGVyKFdLTmF2aWdhdGlvbkFjdGlvblBvbGlj
eUFsbG93LCB3ZWJzaXRlUG9saWNpZXMpOwogfQogCkBAIC0xNTM5LDcgKzE1MzcsNyBAQCAtIChu
dWxsYWJsZSBXS1dlYlZpZXcgKil3ZWJWaWV3OihXS1dlYlZpCiAKIEBlbmQKIAotVEVTVChXZWJL
aXQsIFdlYnNpdGVQb2xpY2llc1BvcFVwKQorVEVTVChXZWJwYWdlUHJlZmVyZW5jZXMsIFdlYnNp
dGVQb2xpY2llc1BvcFVwKQogewogICAgIGF1dG8gY29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tX
S1dlYlZpZXdDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0XSk7CiAKQEAgLTE1NzMsMTQgKzE1NzEs
MTIgQEAgQGludGVyZmFjZSBXZWJzaXRlUG9saWNpZXNXZWJzaXRlRGF0YVN0bwogCiBAaW1wbGVt
ZW50YXRpb24gV2Vic2l0ZVBvbGljaWVzV2Vic2l0ZURhdGFTdG9yZURlbGVnYXRlCiAKLUlHTk9S
RV9XQVJOSU5HU19CRUdJTigiZGVwcmVjYXRlZC1pbXBsZW1lbnRhdGlvbnMiKQotLSAodm9pZClf
d2ViVmlldzooV0tXZWJWaWV3ICopd2ViVmlldyBkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0
aW9uOihXS05hdmlnYXRpb25BY3Rpb24gKiluYXZpZ2F0aW9uQWN0aW9uIGRlY2lzaW9uSGFuZGxl
cjoodm9pZCAoXikoV0tOYXZpZ2F0aW9uQWN0aW9uUG9saWN5LCBfV0tXZWJzaXRlUG9saWNpZXMg
KikpZGVjaXNpb25IYW5kbGVyCi1JR05PUkVfV0FSTklOR1NfRU5ECistICh2b2lkKXdlYlZpZXc6
KFdLV2ViVmlldyAqKXdlYlZpZXcgZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbjooV0tO
YXZpZ2F0aW9uQWN0aW9uICopbmF2aWdhdGlvbkFjdGlvbiBwcmVmZXJlbmNlczooV0tXZWJwYWdl
UHJlZmVyZW5jZXMgKilwcmVmZXJlbmNlcyBkZWNpc2lvbkhhbmRsZXI6KHZvaWQgKF4pKFdLTmF2
aWdhdGlvbkFjdGlvblBvbGljeSwgV0tXZWJwYWdlUHJlZmVyZW5jZXMgKikpZGVjaXNpb25IYW5k
bGVyCiB7CiAgICAgTlNVUkwgKnVybCA9IG5hdmlnYXRpb25BY3Rpb24ucmVxdWVzdC5VUkw7CiAg
ICAgaWYgKFt1cmwucGF0aCBpc0VxdWFsVG9TdHJpbmc6QCIvaW52YWxpZCJdKSB7Ci0gICAgICAg
IF9XS1dlYnNpdGVQb2xpY2llcyAqd2Vic2l0ZVBvbGljaWVzID0gW1tbX1dLV2Vic2l0ZVBvbGlj
aWVzIGFsbG9jXSBpbml0XSBhdXRvcmVsZWFzZV07Ci0gICAgICAgIHdlYnNpdGVQb2xpY2llcy53
ZWJzaXRlRGF0YVN0b3JlID0gW1tbV0tXZWJzaXRlRGF0YVN0b3JlIGFsbG9jXSBfaW5pdFdpdGhD
b25maWd1cmF0aW9uOltbW19XS1dlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uIGFsbG9jXSBp
bml0XSBhdXRvcmVsZWFzZV1dIGF1dG9yZWxlYXNlXTsKKyAgICAgICAgV0tXZWJwYWdlUHJlZmVy
ZW5jZXMgKndlYnNpdGVQb2xpY2llcyA9IFtbW1dLV2VicGFnZVByZWZlcmVuY2VzIGFsbG9jXSBp
bml0XSBhdXRvcmVsZWFzZV07CisgICAgICAgIHdlYnNpdGVQb2xpY2llcy5fd2Vic2l0ZURhdGFT
dG9yZSA9IFtbW1dLV2Vic2l0ZURhdGFTdG9yZSBhbGxvY10gX2luaXRXaXRoQ29uZmlndXJhdGlv
bjpbW1tfV0tXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF0gYXV0b3Jl
bGVhc2VdXSBhdXRvcmVsZWFzZV07CiAKICAgICAgICAgYm9vbCBzYXdFeGNlcHRpb24gPSBmYWxz
ZTsKICAgICAgICAgQHRyeSB7CkBAIC0xNTk1LDEzICsxNTkxLDEzIEBAIElHTk9SRV9XQVJOSU5H
U19FTkQKICAgICBpZiAoW3VybC5wYXRoIGlzRXF1YWxUb1N0cmluZzpAIi9jaGVja1N0b3JhZ2Ui
XQogICAgICAgICB8fCBbdXJsLnBhdGggaXNFcXVhbFRvU3RyaW5nOkAiL2NoZWNrQ29va2llcyJd
CiAgICAgICAgIHx8IFt1cmwucGF0aCBpc0VxdWFsVG9TdHJpbmc6QCIvbWFpbkZyYW1lIl0pIHsK
LSAgICAgICAgX1dLV2Vic2l0ZVBvbGljaWVzICp3ZWJzaXRlUG9saWNpZXMgPSBbW1tfV0tXZWJz
aXRlUG9saWNpZXMgYWxsb2NdIGluaXRdIGF1dG9yZWxlYXNlXTsKLSAgICAgICAgd2Vic2l0ZVBv
bGljaWVzLndlYnNpdGVEYXRhU3RvcmUgPSBbV0tXZWJzaXRlRGF0YVN0b3JlIG5vblBlcnNpc3Rl
bnREYXRhU3RvcmVdOworICAgICAgICBXS1dlYnBhZ2VQcmVmZXJlbmNlcyAqd2Vic2l0ZVBvbGlj
aWVzID0gW1tbV0tXZWJwYWdlUHJlZmVyZW5jZXMgYWxsb2NdIGluaXRdIGF1dG9yZWxlYXNlXTsK
KyAgICAgICAgd2Vic2l0ZVBvbGljaWVzLl93ZWJzaXRlRGF0YVN0b3JlID0gW1dLV2Vic2l0ZURh
dGFTdG9yZSBub25QZXJzaXN0ZW50RGF0YVN0b3JlXTsKICAgICAgICAgZGVjaXNpb25IYW5kbGVy
KFdLTmF2aWdhdGlvbkFjdGlvblBvbGljeUFsbG93LCB3ZWJzaXRlUG9saWNpZXMpOwogICAgIH0K
ICAgICBpZiAoW3VybC5wYXRoIGlzRXF1YWxUb1N0cmluZzpAIi9zdWJGcmFtZSJdKSB7Ci0gICAg
ICAgIF9XS1dlYnNpdGVQb2xpY2llcyAqd2Vic2l0ZVBvbGljaWVzID0gW1tbX1dLV2Vic2l0ZVBv
bGljaWVzIGFsbG9jXSBpbml0XSBhdXRvcmVsZWFzZV07Ci0gICAgICAgIHdlYnNpdGVQb2xpY2ll
cy53ZWJzaXRlRGF0YVN0b3JlID0gW1dLV2Vic2l0ZURhdGFTdG9yZSBub25QZXJzaXN0ZW50RGF0
YVN0b3JlXTsKKyAgICAgICAgV0tXZWJwYWdlUHJlZmVyZW5jZXMgKndlYnNpdGVQb2xpY2llcyA9
IFtbW1dLV2VicGFnZVByZWZlcmVuY2VzIGFsbG9jXSBpbml0XSBhdXRvcmVsZWFzZV07CisgICAg
ICAgIHdlYnNpdGVQb2xpY2llcy5fd2Vic2l0ZURhdGFTdG9yZSA9IFtXS1dlYnNpdGVEYXRhU3Rv
cmUgbm9uUGVyc2lzdGVudERhdGFTdG9yZV07CiAgICAgICAgIGJvb2wgc2F3RXhjZXB0aW9uID0g
ZmFsc2U7CiAgICAgICAgIEB0cnkgewogICAgICAgICAgICAgZGVjaXNpb25IYW5kbGVyKFdLTmF2
aWdhdGlvbkFjdGlvblBvbGljeUNhbmNlbCwgd2Vic2l0ZVBvbGljaWVzKTsKQEAgLTE2NDksMTQg
KzE2NDUsMTQgQEAgUmV0YWluUHRyPFdLV2ViVmlldz4gd2Vic2l0ZURhdGFTdG9yZVRlcwogICAg
IHJldHVybiB3ZWJWaWV3OwogfQogCi1URVNUKFdlYktpdCwgVXBkYXRlV2Vic2l0ZVBvbGljaWVz
SW52YWxpZCkKK1RFU1QoV2VicGFnZVByZWZlcmVuY2VzLCBVcGRhdGVXZWJzaXRlUG9saWNpZXNJ
bnZhbGlkKQogewogICAgIGF1dG8gd2ViVmlldyA9IHdlYnNpdGVEYXRhU3RvcmVUZXN0V2ViVmll
dygpOwotICAgIGF1dG8gcG9saWNpZXMgPSBhZG9wdE5TKFtbX1dLV2Vic2l0ZVBvbGljaWVzIGFs
bG9jXSBpbml0XSk7Ci0gICAgW3BvbGljaWVzIHNldFdlYnNpdGVEYXRhU3RvcmU6W1dLV2Vic2l0
ZURhdGFTdG9yZSBub25QZXJzaXN0ZW50RGF0YVN0b3JlXV07CisgICAgYXV0byBwb2xpY2llcyA9
IGFkb3B0TlMoW1tXS1dlYnBhZ2VQcmVmZXJlbmNlcyBhbGxvY10gaW5pdF0pOworICAgIFtwb2xp
Y2llcyBfc2V0V2Vic2l0ZURhdGFTdG9yZTpbV0tXZWJzaXRlRGF0YVN0b3JlIG5vblBlcnNpc3Rl
bnREYXRhU3RvcmVdXTsKICAgICBib29sIHNhd0V4Y2VwdGlvbiA9IGZhbHNlOwogICAgIEB0cnkg
ewotICAgICAgICBbd2ViVmlldyBfdXBkYXRlV2Vic2l0ZVBvbGljaWVzOnBvbGljaWVzLmdldCgp
XTsKKyAgICAgICAgW3dlYlZpZXcgX3VwZGF0ZVdlYnBhZ2VQcmVmZXJlbmNlczpwb2xpY2llcy5n
ZXQoKV07CiAgICAgfSBAY2F0Y2ggKE5TRXhjZXB0aW9uICpleGNlcHRpb24pIHsKICAgICAgICAg
c2F3RXhjZXB0aW9uID0gdHJ1ZTsKICAgICB9CkBAIC0xNjcwLDcgKzE2NjYsNyBAQCBURVNUKFdl
YktpdCwgVXBkYXRlV2Vic2l0ZVBvbGljaWVzSW52YWxpCiAgICAgVGVzdFdlYktpdEFQSTo6VXRp
bDo6cnVuKCZkb25lKTsKIH0KIAotVEVTVChXZWJLaXQsIFdlYnNpdGVQb2xpY2llc0RhdGFTdG9y
ZSkKK1RFU1QoV2VicGFnZVByZWZlcmVuY2VzLCBXZWJzaXRlUG9saWNpZXNEYXRhU3RvcmUpCiB7
CiAgICAgYXV0byBjb29raWVXZWJWaWV3ID0gd2Vic2l0ZURhdGFTdG9yZVRlc3RXZWJWaWV3KCk7
CiAgICAgTlNTdHJpbmcgKmFsZXJ0T2xkQ29va2llID0gQCI8c2NyaXB0PnZhciBvbGRDb29raWUg
PSBkb2N1bWVudC5jb29raWU7IGRvY3VtZW50LmNvb2tpZSA9ICdrZXk9dmFsdWUnOyBhbGVydCgn
b2xkIHZhbHVlOiA8JyArIG9sZENvb2tpZSArICc+Jyk7PC9zY3JpcHQ+IjsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>386650</attachid>
            <date>2020-01-02 17:38:27 -0800</date>
            <delta_ts>2020-01-03 09:50:51 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-205539-20200102173826.patch</filename>
            <type>text/plain</type>
            <size>39547</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nCShyZXZpc2lvbiAyNTM5NzgpCisrKyBTb3VyY2UvV2ViS2l0L0NoYW5nZUxv
Zwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIyIEBACisyMDIwLTAxLTAyICBBbGV4IENocmlz
dGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgRGVwcmVjYXRlIF9X
S1dlYnNpdGVQb2xpY2llcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MjA1NTM5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgSXRzIGxhc3QgdXNlIHdhcyByZW1vdmVkIGluIHJkYXI6Ly9wcm9ibGVtLzU4MDY0
ODQ3CisgICAgICAgIGJ1dCB3ZSBuZWVkIHRvIGtlZXAgaXQgaW4gV2ViS2l0IHVudGlsIHRoZSBu
ZXh0IFNhZmFyaSByZWxlYXNlCisgICAgICAgIHRvIGtlZXAgU2FmYXJpIHdvcmtpbmcgd2l0aCBi
dWlsdCB2ZXJzaW9ucyBvZiBvcGVuIHNvdXJjZSBXZWJLaXQgd2l0aCBydW4tc2FmYXJpLgorCisg
ICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW06CisgICAgICAgICgtW1dL
V2ViVmlldyBfdXBkYXRlV2Vic2l0ZVBvbGljaWVzOl0pOgorICAgICAgICAqIFVJUHJvY2Vzcy9B
UEkvQ29jb2EvV0tXZWJWaWV3UHJpdmF0ZS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29j
b2EvX1dLV2Vic2l0ZVBvbGljaWVzLmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9f
V0tXZWJzaXRlUG9saWNpZXMubW06CisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL05hdmlnYXRp
b25TdGF0ZS5tbToKKyAgICAgICAgKFdlYktpdDo6TmF2aWdhdGlvblN0YXRlOjpOYXZpZ2F0aW9u
Q2xpZW50OjpkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uKToKKwogMjAyMC0wMS0wMiAg
QWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgogCiAgICAgICAgIEFk
ZCBTUEkgdG8gZGlzYWJsZSBDT1JTIG9uIHJlcXVlc3RzIHRvIFVSTHMgbWF0Y2hpbmcgYSBwYXR0
ZXJuCkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1t
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZp
ZXcubW0JKHJldmlzaW9uIDI1Mzk3NCkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9D
b2NvYS9XS1dlYlZpZXcubW0JKHdvcmtpbmcgY29weSkKQEAgLTIxNDIsNyArMjE0Miw2IEBAIC0g
KHZvaWQpX2V2YWx1YXRlSmF2YVNjcmlwdFdpdGhvdXRVc2VyR2UKIAogLSAodm9pZClfdXBkYXRl
V2Vic2l0ZVBvbGljaWVzOihfV0tXZWJzaXRlUG9saWNpZXMgKil3ZWJzaXRlUG9saWNpZXMKIHsK
LSAgICBbc2VsZiBfdXBkYXRlV2VicGFnZVByZWZlcmVuY2VzOndlYnNpdGVQb2xpY2llcy53ZWJw
YWdlUHJlZmVyZW5jZXNdOwogfQogCiAtICh2b2lkKV91cGRhdGVXZWJwYWdlUHJlZmVyZW5jZXM6
KFdLV2VicGFnZVByZWZlcmVuY2VzICopd2VicGFnZVByZWZlcmVuY2VzCkluZGV4OiBTb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3UHJpdmF0ZS5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdQcml2YXRlLmgJ
KHJldmlzaW9uIDI1Mzk3NCkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9X
S1dlYlZpZXdQcml2YXRlLmgJKHdvcmtpbmcgY29weSkKQEAgLTE4Nyw3ICsxODcsNyBAQCB0eXBl
ZGVmIE5TX09QVElPTlMoTlNVSW50ZWdlciwgX1dLUmVjdEVkCiAKIC0gKHZvaWQpX2Nsb3NlOwog
Ci0tICh2b2lkKV91cGRhdGVXZWJzaXRlUG9saWNpZXM6KF9XS1dlYnNpdGVQb2xpY2llcyAqKXdl
YnNpdGVQb2xpY2llcyBXS19BUElfQVZBSUxBQkxFKG1hY29zKDEwLjEzKSwgaW9zKDExLjApKTsK
Ky0gKHZvaWQpX3VwZGF0ZVdlYnNpdGVQb2xpY2llczooX1dLV2Vic2l0ZVBvbGljaWVzICopd2Vi
c2l0ZVBvbGljaWVzIFdLX0FQSV9ERVBSRUNBVEVEX1dJVEhfUkVQTEFDRU1FTlQoIi1fdXBkYXRl
V2VicGFnZVByZWZlcmVuY2VzOiIsIG1hY29zKDEwLjEzLCBXS19NQUNfVEJBKSwgaW9zKDExLjMs
IFdLX0lPU19UQkEpKTsKIC0gKHZvaWQpX3VwZGF0ZVdlYnBhZ2VQcmVmZXJlbmNlczooV0tXZWJw
YWdlUHJlZmVyZW5jZXMgKil3ZWJwYWdlUHJlZmVyZW5jZXMgV0tfQVBJX0FWQUlMQUJMRShtYWNv
cyhXS19NQUNfVEJBKSwgaW9zKFdLX0lPU19UQkEpKTsKIAogLSAodm9pZClfZXZhbHVhdGVKYXZh
U2NyaXB0V2l0aG91dFVzZXJHZXN0dXJlOihOU1N0cmluZyAqKWphdmFTY3JpcHRTdHJpbmcgY29t
cGxldGlvbkhhbmRsZXI6KHZvaWQgKF4pKGlkLCBOU0Vycm9yICopKWNvbXBsZXRpb25IYW5kbGVy
IFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoMTAuMTMpLCBpb3MoMTEuMCkpOwpJbmRleDogU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS1dlYnNpdGVQb2xpY2llcy5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tXZWJzaXRlUG9saWNp
ZXMuaAkocmV2aXNpb24gMjUzOTc0KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0Nv
Y29hL19XS1dlYnNpdGVQb2xpY2llcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0yOCw3ICsyOCw3IEBA
CiAKIEBjbGFzcyBXS1dlYnNpdGVEYXRhU3RvcmU7CiAKLVdLX0NMQVNTX0FWQUlMQUJMRShtYWNv
cygxMC4xMi4zKSwgaW9zKDEwLjMpKQorV0tfQ0xBU1NfREVQUkVDQVRFRF9XSVRIX1JFUExBQ0VN
RU5UKCJXS1dlYnBhZ2VQcmVmZXJlbmNlcyIsIG1hY29zKDEwLjEyLjMsIFdLX01BQ19UQkEpLCBp
b3MoMTAuMywgV0tfSU9TX1RCQSkpCiBAaW50ZXJmYWNlIF9XS1dlYnNpdGVQb2xpY2llcyA6IE5T
T2JqZWN0CiAKIEBwcm9wZXJ0eSAobm9uYXRvbWljKSBCT09MIGNvbnRlbnRCbG9ja2Vyc0VuYWJs
ZWQ7CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLV2Vic2l0ZVBv
bGljaWVzLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2Nv
YS9fV0tXZWJzaXRlUG9saWNpZXMubW0JKHJldmlzaW9uIDI1Mzk3NCkKKysrIFNvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tXZWJzaXRlUG9saWNpZXMubW0JKHdvcmtpbmcgY29w
eSkKQEAgLTI5LDcgKzI5LDkgQEAKICNpbXBvcnQgIldLV2Vic2l0ZURhdGFTdG9yZUludGVybmFs
LmgiCiAjaW1wb3J0ICJfV0tXZWJzaXRlUG9saWNpZXNJbnRlcm5hbC5oIgogCitJR05PUkVfV0FS
TklOR1NfQkVHSU4oImRlcHJlY2F0ZWQtaW1wbGVtZW50YXRpb25zIikKIEBpbXBsZW1lbnRhdGlv
biBfV0tXZWJzaXRlUG9saWNpZXMKK0lHTk9SRV9XQVJOSU5HU19FTkQKIAogLSAoaW5zdGFuY2V0
eXBlKWluaXQKIHsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL05hdmlnYXRp
b25TdGF0ZS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9O
YXZpZ2F0aW9uU3RhdGUubW0JKHJldmlzaW9uIDI1Mzk3NCkKKysrIFNvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0NvY29hL05hdmlnYXRpb25TdGF0ZS5tbQkod29ya2luZyBjb3B5KQpAQCAtNTgxLDEw
ICs1ODEsMTIgQEAgdm9pZCBOYXZpZ2F0aW9uU3RhdGU6Ok5hdmlnYXRpb25DbGllbnQ6OgogICAg
ICAgICBSZWZQdHI8QVBJOjpXZWJzaXRlUG9saWNpZXM+IGFwaVdlYnNpdGVQb2xpY2llczsKICAg
ICAgICAgaWYgKFtwb2xpY2llc09yUHJlZmVyZW5jZXMgaXNLaW5kT2ZDbGFzczpXS1dlYnBhZ2VQ
cmVmZXJlbmNlcy5zZWxmXSkKICAgICAgICAgICAgIGFwaVdlYnNpdGVQb2xpY2llcyA9ICgoV0tX
ZWJwYWdlUHJlZmVyZW5jZXMgKilwb2xpY2llc09yUHJlZmVyZW5jZXMpLT5fd2Vic2l0ZVBvbGlj
aWVzLmdldCgpOworQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfQkVHSU4KICAgICAgICAg
ZWxzZSBpZiAoW3BvbGljaWVzT3JQcmVmZXJlbmNlcyBpc0tpbmRPZkNsYXNzOl9XS1dlYnNpdGVQ
b2xpY2llcy5zZWxmXSkKICAgICAgICAgICAgIGFwaVdlYnNpdGVQb2xpY2llcyA9IFtwb2xpY2ll
c09yUHJlZmVyZW5jZXMgd2VicGFnZVByZWZlcmVuY2VzXS0+X3dlYnNpdGVQb2xpY2llcy5nZXQo
KTsKICAgICAgICAgZWxzZSBpZiAocG9saWNpZXNPclByZWZlcmVuY2VzKQogICAgICAgICAgICAg
W05TRXhjZXB0aW9uIHJhaXNlOk5TSW52YWxpZEFyZ3VtZW50RXhjZXB0aW9uIGZvcm1hdDpAIkV4
cGVjdGVkIHBvbGljaWVzIG9mIGNsYXNzICVALCBidXQgZ290ICVAIiwgTlNTdHJpbmdGcm9tQ2xh
c3MoX1dLV2Vic2l0ZVBvbGljaWVzLnNlbGYpLCBbcG9saWNpZXNPclByZWZlcmVuY2VzIGNsYXNz
XV07CitBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19FTkQKICAgICAgICAgZWxzZQogICAg
ICAgICAgICAgYXBpV2Vic2l0ZVBvbGljaWVzID0gZGVmYXVsdFdlYnNpdGVQb2xpY2llczsKIApJ
bmRleDogVG9vbHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0NoYW5nZUxvZwkocmV2
aXNpb24gMjUzOTgzKQorKysgVG9vbHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMg
KzEsMzMgQEAKKzIwMjAtMDEtMDIgIEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Vi
a2l0Lm9yZz4KKworICAgICAgICBEZXByZWNhdGUgX1dLV2Vic2l0ZVBvbGljaWVzCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDU1MzkKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFRlc3RXZWJLaXRBUEkv
VGVzdHMvV2ViS2l0Q29jb2EvUHJvY2Vzc1N3YXBPbk5hdmlnYXRpb24ubW06CisgICAgICAgICog
VGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9TZXJ2aWNlV29ya2VyQmFzaWMubW06Cisg
ICAgICAgICgtW1NXQ3VzdG9tVXNlckFnZW50RGVsZWdhdGUgX3dlYlZpZXc6ZGVjaWRlUG9saWN5
Rm9yTmF2aWdhdGlvbkFjdGlvbjpwcmVmZXJlbmNlczp1c2VySW5mbzpkZWNpc2lvbkhhbmRsZXI6
XSk6CisgICAgICAgICgtW1NXQ3VzdG9tVXNlckFnZW50RGVsZWdhdGUgX3dlYlZpZXc6ZGVjaWRl
UG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbjp1c2VySW5mbzpkZWNpc2lvbkhhbmRsZXI6XSk6IERl
bGV0ZWQuCisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9XZWJzaXRl
UG9saWNpZXMubW06CisgICAgICAgICgtW0NvbnRlbnRCbG9ja2luZ1dlYnNpdGVQb2xpY2llc0Rl
bGVnYXRlIHdlYlZpZXc6ZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbjpwcmVmZXJlbmNl
czpkZWNpc2lvbkhhbmRsZXI6XSk6CisgICAgICAgIChURVNUKToKKyAgICAgICAgKC1bQXV0b3Bs
YXlQb2xpY2llc0RlbGVnYXRlIHdlYlZpZXc6ZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlv
bjpwcmVmZXJlbmNlczpkZWNpc2lvbkhhbmRsZXI6XSk6CisgICAgICAgICgtW0FzeW5jQXV0b3Bs
YXlQb2xpY2llc0RlbGVnYXRlIHdlYlZpZXc6ZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlv
bjpwcmVmZXJlbmNlczpkZWNpc2lvbkhhbmRsZXI6XSk6CisgICAgICAgICgtW1dlYnNpdGVQb2xp
Y2llc05hdmlnYXRpb25EZWxlZ2F0ZSBfd2ViVmlldzpkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9u
QWN0aW9uOnByZWZlcmVuY2VzOnVzZXJJbmZvOmRlY2lzaW9uSGFuZGxlcjpdKToKKyAgICAgICAg
KC1bQ3VzdG9tVXNlckFnZW50RGVsZWdhdGUgX3dlYlZpZXc6ZGVjaWRlUG9saWN5Rm9yTmF2aWdh
dGlvbkFjdGlvbjp1c2VySW5mbzpkZWNpc2lvbkhhbmRsZXI6XSk6CisgICAgICAgICgtW0N1c3Rv
bUphdmFTY3JpcHRVc2VyQWdlbnREZWxlZ2F0ZSBfd2ViVmlldzpkZWNpZGVQb2xpY3lGb3JOYXZp
Z2F0aW9uQWN0aW9uOnVzZXJJbmZvOmRlY2lzaW9uSGFuZGxlcjpdKToKKyAgICAgICAgKC1bQ3Vz
dG9tTmF2aWdhdG9yUGxhdGZvcm1EZWxlZ2F0ZSBfd2ViVmlldzpkZWNpZGVQb2xpY3lGb3JOYXZp
Z2F0aW9uQWN0aW9uOnVzZXJJbmZvOmRlY2lzaW9uSGFuZGxlcjpdKToKKyAgICAgICAgKC1bV2Vi
c2l0ZVBvbGljaWVzRGV2aWNlT3JpZW50YXRpb25EZWxlZ2F0ZSBfd2ViVmlldzpkZWNpZGVQb2xp
Y3lGb3JOYXZpZ2F0aW9uQWN0aW9uOnByZWZlcmVuY2VzOnVzZXJJbmZvOmRlY2lzaW9uSGFuZGxl
cjpdKToKKyAgICAgICAgKC1bUG9wVXBQb2xpY2llc0RlbGVnYXRlIF93ZWJWaWV3OmRlY2lkZVBv
bGljeUZvck5hdmlnYXRpb25BY3Rpb246ZGVjaXNpb25IYW5kbGVyOl0pOgorICAgICAgICAoLVtX
ZWJzaXRlUG9saWNpZXNXZWJzaXRlRGF0YVN0b3JlRGVsZWdhdGUgd2ViVmlldzpkZWNpZGVQb2xp
Y3lGb3JOYXZpZ2F0aW9uQWN0aW9uOnByZWZlcmVuY2VzOmRlY2lzaW9uSGFuZGxlcjpdKToKKyAg
ICAgICAgKC1bQ29udGVudEJsb2NraW5nV2Vic2l0ZVBvbGljaWVzRGVsZWdhdGUgX3dlYlZpZXc6
ZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbjpkZWNpc2lvbkhhbmRsZXI6XSk6IERlbGV0
ZWQuCisgICAgICAgICgtW0F1dG9wbGF5UG9saWNpZXNEZWxlZ2F0ZSBfd2ViVmlldzpkZWNpZGVQ
b2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uOmRlY2lzaW9uSGFuZGxlcjpdKTogRGVsZXRlZC4KKyAg
ICAgICAgKC1bQXN5bmNBdXRvcGxheVBvbGljaWVzRGVsZWdhdGUgX3dlYlZpZXc6ZGVjaWRlUG9s
aWN5Rm9yTmF2aWdhdGlvbkFjdGlvbjpkZWNpc2lvbkhhbmRsZXI6XSk6IERlbGV0ZWQuCisgICAg
ICAgICgtW1dlYnNpdGVQb2xpY2llc05hdmlnYXRpb25EZWxlZ2F0ZSBfd2ViVmlldzpkZWNpZGVQ
b2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uOnVzZXJJbmZvOmRlY2lzaW9uSGFuZGxlcjpdKTogRGVs
ZXRlZC4KKyAgICAgICAgKC1bV2Vic2l0ZVBvbGljaWVzRGV2aWNlT3JpZW50YXRpb25EZWxlZ2F0
ZSBfd2ViVmlldzpkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uOnVzZXJJbmZvOmRlY2lz
aW9uSGFuZGxlcjpdKTogRGVsZXRlZC4KKyAgICAgICAgKC1bV2Vic2l0ZVBvbGljaWVzV2Vic2l0
ZURhdGFTdG9yZURlbGVnYXRlIF93ZWJWaWV3OmRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rp
b246ZGVjaXNpb25IYW5kbGVyOl0pOiBEZWxldGVkLgorCiAyMDIwLTAxLTAyICBBbGV4IENocmlz
dGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CiAKICAgICAgICAgQWRkIFNQSSB0byBk
aXNhYmxlIENPUlMgb24gcmVxdWVzdHMgdG8gVVJMcyBtYXRjaGluZyBhIHBhdHRlcm4KSW5kZXg6
IFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvUHJvY2Vzc1N3YXBPbk5hdmln
YXRpb24ubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRD
b2NvYS9Qcm9jZXNzU3dhcE9uTmF2aWdhdGlvbi5tbQkocmV2aXNpb24gMjUzOTc0KQorKysgVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Qcm9jZXNzU3dhcE9uTmF2aWdhdGlv
bi5tbQkod29ya2luZyBjb3B5KQpAQCAtNDAsNiArNDAsNyBAQAogI2ltcG9ydCA8V2ViS2l0L1dL
VVJMU2NoZW1lVGFza1ByaXZhdGUuaD4KICNpbXBvcnQgPFdlYktpdC9XS1dlYlZpZXdDb25maWd1
cmF0aW9uUHJpdmF0ZS5oPgogI2ltcG9ydCA8V2ViS2l0L1dLV2ViVmlld1ByaXZhdGVGb3JUZXN0
aW5nLmg+CisjaW1wb3J0IDxXZWJLaXQvV0tXZWJwYWdlUHJlZmVyZW5jZXMuaD4KICNpbXBvcnQg
PFdlYktpdC9XS1dlYnNpdGVEYXRhU3RvcmVQcml2YXRlLmg+CiAjaW1wb3J0IDxXZWJLaXQvV0tX
ZWJzaXRlRGF0YVN0b3JlUmVmLmg+CiAjaW1wb3J0IDxXZWJLaXQvV2ViS2l0Lmg+CkBAIC00Nyw3
ICs0OCw2IEBACiAjaW1wb3J0IDxXZWJLaXQvX1dLSW5zcGVjdG9yLmg+CiAjaW1wb3J0IDxXZWJL
aXQvX1dLUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLmg+CiAjaW1wb3J0IDxXZWJLaXQvX1dLV2Vi
c2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24uaD4KLSNpbXBvcnQgPFdlYktpdC9fV0tXZWJzaXRl
UG9saWNpZXMuaD4KICNpbXBvcnQgPHd0Zi9CbG9ja1B0ci5oPgogI2ltcG9ydCA8d3RmL0RlcXVl
Lmg+CiAjaW1wb3J0IDx3dGYvSGFzaE1hcC5oPgpJbmRleDogVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0cy9XZWJLaXRDb2NvYS9TZXJ2aWNlV29ya2VyQmFzaWMubW0KPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9TZXJ2aWNlV29ya2VyQmFzaWMubW0J
KHJldmlzaW9uIDI1Mzk3NCkKKysrIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29j
b2EvU2VydmljZVdvcmtlckJhc2ljLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0zNywxMiArMzcsMTIg
QEAKICNpbXBvcnQgPFdlYktpdC9XS1VSTFNjaGVtZVRhc2tQcml2YXRlLmg+CiAjaW1wb3J0IDxX
ZWJLaXQvV0tXZWJWaWV3Q29uZmlndXJhdGlvblByaXZhdGUuaD4KICNpbXBvcnQgPFdlYktpdC9X
S1dlYlZpZXdQcml2YXRlRm9yVGVzdGluZy5oPgorI2ltcG9ydCA8V2ViS2l0L1dLV2VicGFnZVBy
ZWZlcmVuY2VzUHJpdmF0ZS5oPgogI2ltcG9ydCA8V2ViS2l0L1dLV2Vic2l0ZURhdGFTdG9yZVBy
aXZhdGUuaD4KICNpbXBvcnQgPFdlYktpdC9XS1dlYnNpdGVEYXRhU3RvcmVSZWYuaD4KICNpbXBv
cnQgPFdlYktpdC9XZWJLaXQuaD4KICNpbXBvcnQgPFdlYktpdC9fV0tFeHBlcmltZW50YWxGZWF0
dXJlLmg+CiAjaW1wb3J0IDxXZWJLaXQvX1dLV2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24u
aD4KLSNpbXBvcnQgPFdlYktpdC9fV0tXZWJzaXRlUG9saWNpZXMuaD4KICNpbXBvcnQgPHd0Zi9E
ZXF1ZS5oPgogI2ltcG9ydCA8d3RmL0hhc2hNYXAuaD4KICNpbXBvcnQgPHd0Zi9SZXRhaW5QdHIu
aD4KQEAgLTQ3NiwxMSArNDc2LDExIEBAIC0gKGluc3RhbmNldHlwZSlpbml0V2l0aFVzZXJBZ2Vu
dDooTlNTdHIKICAgICByZXR1cm4gc2VsZjsKIH0KIAotLSAodm9pZClfd2ViVmlldzooV0tXZWJW
aWV3ICopd2ViVmlldyBkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uOihXS05hdmlnYXRp
b25BY3Rpb24gKiluYXZpZ2F0aW9uQWN0aW9uIHVzZXJJbmZvOihpZCA8TlNTZWN1cmVDb2Rpbmc+
KXVzZXJJbmZvIGRlY2lzaW9uSGFuZGxlcjoodm9pZCAoXikoV0tOYXZpZ2F0aW9uQWN0aW9uUG9s
aWN5LCBfV0tXZWJzaXRlUG9saWNpZXMgKikpZGVjaXNpb25IYW5kbGVyCistICh2b2lkKV93ZWJW
aWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3IGRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb246
KFdLTmF2aWdhdGlvbkFjdGlvbiAqKW5hdmlnYXRpb25BY3Rpb24gcHJlZmVyZW5jZXM6KFdLV2Vi
cGFnZVByZWZlcmVuY2VzICopcHJlZmVyZW5jZXMgdXNlckluZm86KGlkIDxOU1NlY3VyZUNvZGlu
Zz4pdXNlckluZm8gZGVjaXNpb25IYW5kbGVyOih2b2lkICheKShXS05hdmlnYXRpb25BY3Rpb25Q
b2xpY3ksIFdLV2VicGFnZVByZWZlcmVuY2VzICopKWRlY2lzaW9uSGFuZGxlcgogewotICAgIF9X
S1dlYnNpdGVQb2xpY2llcyAqd2Vic2l0ZVBvbGljaWVzID0gW1tbX1dLV2Vic2l0ZVBvbGljaWVz
IGFsbG9jXSBpbml0XSBhdXRvcmVsZWFzZV07CisgICAgV0tXZWJwYWdlUHJlZmVyZW5jZXMgKndl
YnNpdGVQb2xpY2llcyA9IFtbW1dLV2VicGFnZVByZWZlcmVuY2VzIGFsbG9jXSBpbml0XSBhdXRv
cmVsZWFzZV07CiAgICAgaWYgKG5hdmlnYXRpb25BY3Rpb24udGFyZ2V0RnJhbWUubWFpbkZyYW1l
KQotICAgICAgICBbd2Vic2l0ZVBvbGljaWVzIHNldEN1c3RvbVVzZXJBZ2VudDpfdXNlckFnZW50
XTsKKyAgICAgICAgW3dlYnNpdGVQb2xpY2llcyBfc2V0Q3VzdG9tVXNlckFnZW50Ol91c2VyQWdl
bnRdOwogCiAgICAgZGVjaXNpb25IYW5kbGVyKFdLTmF2aWdhdGlvbkFjdGlvblBvbGljeUFsbG93
LCB3ZWJzaXRlUG9saWNpZXMpOwogfQpJbmRleDogVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9X
ZWJLaXRDb2NvYS9XZWJzaXRlUG9saWNpZXMubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvVGVzdFdl
YktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9XZWJzaXRlUG9saWNpZXMubW0JKHJldmlzaW9uIDI1
Mzk3NCkKKysrIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvV2Vic2l0ZVBv
bGljaWVzLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0zOCwxMiArMzgsMTIgQEAKICNpbXBvcnQgPFdl
YktpdC9XS1VSTFNjaGVtZVRhc2tQcml2YXRlLmg+CiAjaW1wb3J0IDxXZWJLaXQvV0tVc2VyQ29u
dGVudENvbnRyb2xsZXJQcml2YXRlLmg+CiAjaW1wb3J0IDxXZWJLaXQvV0tXZWJWaWV3UHJpdmF0
ZS5oPgorI2ltcG9ydCA8V2ViS2l0L1dLV2VicGFnZVByZWZlcmVuY2VzUHJpdmF0ZS5oPgogI2lt
cG9ydCA8V2ViS2l0L1dLV2Vic2l0ZURhdGFTdG9yZVByaXZhdGUuaD4KICNpbXBvcnQgPFdlYktp
dC9XS1dlYnNpdGVQb2xpY2llcy5oPgogI2ltcG9ydCA8V2ViS2l0L19XS0N1c3RvbUhlYWRlckZp
ZWxkcy5oPgogI2ltcG9ydCA8V2ViS2l0L19XS1VzZXJDb250ZW50RXh0ZW5zaW9uU3RvcmVQcml2
YXRlLmg+CiAjaW1wb3J0IDxXZWJLaXQvX1dLV2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24u
aD4KLSNpbXBvcnQgPFdlYktpdC9fV0tXZWJzaXRlUG9saWNpZXMuaD4KICNpbXBvcnQgPHd0Zi9G
dW5jdGlvbi5oPgogI2ltcG9ydCA8d3RmL0hhc2hNYXAuaD4KICNpbXBvcnQgPHd0Zi9NYWluVGhy
ZWFkLmg+CkBAIC0xMDQsOSArMTA0LDkgQEAgLSAodm9pZCl3ZWJWaWV3OihXS1dlYlZpZXcgKil3
ZWJWaWV3IHJ1bgogICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7CiB9CiAKLS0gKHZvaWQpX3dlYlZp
ZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcgZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbjoo
V0tOYXZpZ2F0aW9uQWN0aW9uICopbmF2aWdhdGlvbkFjdGlvbiBkZWNpc2lvbkhhbmRsZXI6KHZv
aWQgKF4pKFdLTmF2aWdhdGlvbkFjdGlvblBvbGljeSwgX1dLV2Vic2l0ZVBvbGljaWVzICopKWRl
Y2lzaW9uSGFuZGxlcgorLSAodm9pZCl3ZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3IGRlY2lk
ZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb246KFdLTmF2aWdhdGlvbkFjdGlvbiAqKW5hdmlnYXRp
b25BY3Rpb24gcHJlZmVyZW5jZXM6KFdLV2VicGFnZVByZWZlcmVuY2VzICopcHJlZmVyZW5jZXMg
ZGVjaXNpb25IYW5kbGVyOih2b2lkICheKShXS05hdmlnYXRpb25BY3Rpb25Qb2xpY3ksIFdLV2Vi
cGFnZVByZWZlcmVuY2VzICopKWRlY2lzaW9uSGFuZGxlcgogewotICAgIF9XS1dlYnNpdGVQb2xp
Y2llcyAqd2Vic2l0ZVBvbGljaWVzID0gW1tbX1dLV2Vic2l0ZVBvbGljaWVzIGFsbG9jXSBpbml0
XSBhdXRvcmVsZWFzZV07CisgICAgV0tXZWJwYWdlUHJlZmVyZW5jZXMgKndlYnNpdGVQb2xpY2ll
cyA9IFtbW1dLV2VicGFnZVByZWZlcmVuY2VzIGFsbG9jXSBpbml0XSBhdXRvcmVsZWFzZV07CiAg
ICAgc3dpdGNoIChhbGVydENvdW50KSB7CiAgICAgY2FzZSAwOgogICAgICAgICAvLyBWZXJpZnkg
dGhlIGNvbnRlbnQgYmxvY2tlcnMgYmVoYXZlIGNvcnJlY3RseSB3aXRoIHRoZSBkZWZhdWx0IGJl
aGF2aW9yLgpAQCAtMTE0LDExICsxMTQsMTEgQEAgLSAodm9pZClfd2ViVmlldzooV0tXZWJWaWV3
ICopd2ViVmlldyBkZQogICAgIGNhc2UgMToKICAgICAgICAgewogICAgICAgICAgICAgLy8gVmVy
aWZ5IGRpc2FibGluZyBjb250ZW50IGJsb2NrZXJzIHdvcmtzIGNvcnJlY3RseS4KLSAgICAgICAg
ICAgIHdlYnNpdGVQb2xpY2llcy5jb250ZW50QmxvY2tlcnNFbmFibGVkID0gZmFsc2U7CisgICAg
ICAgICAgICB3ZWJzaXRlUG9saWNpZXMuX2NvbnRlbnRCbG9ja2Vyc0VuYWJsZWQgPSBmYWxzZTsK
ICAgICAgICAgICAgIAogICAgICAgICAgICAgLy8gVmVyaWZ5IGNhbGxpbmcgdGhlIGRlY2lzaW9u
SGFuZGxlciBhc3luY2hyb25vdXNseSB3b3JrcyBjb3JyZWN0bHkuCiAgICAgICAgICAgICBhdXRv
IGRlY2lzaW9uSGFuZGxlckNvcHkgPSBCbG9ja19jb3B5KGRlY2lzaW9uSGFuZGxlcik7Ci0gICAg
ICAgICAgICBjYWxsT25NYWluVGhyZWFkKFtkZWNpc2lvbkhhbmRsZXJDb3B5LCB3ZWJzaXRlUG9s
aWNpZXMgPSBSZXRhaW5QdHI8X1dLV2Vic2l0ZVBvbGljaWVzPih3ZWJzaXRlUG9saWNpZXMpXSB7
CisgICAgICAgICAgICBjYWxsT25NYWluVGhyZWFkKFtkZWNpc2lvbkhhbmRsZXJDb3B5LCB3ZWJz
aXRlUG9saWNpZXMgPSByZXRhaW5QdHIod2Vic2l0ZVBvbGljaWVzKV0gewogICAgICAgICAgICAg
ICAgIGRlY2lzaW9uSGFuZGxlckNvcHkoV0tOYXZpZ2F0aW9uQWN0aW9uUG9saWN5QWxsb3csIHdl
YnNpdGVQb2xpY2llcy5nZXQoKSk7CiAgICAgICAgICAgICAgICAgQmxvY2tfcmVsZWFzZShkZWNp
c2lvbkhhbmRsZXJDb3B5KTsKICAgICAgICAgICAgIH0pOwpAQCAtMTI2LDcgKzEyNiw3IEBAIC0g
KHZvaWQpX3dlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcgZGUKICAgICAgICAgcmV0dXJuOwog
ICAgIGNhc2UgMjoKICAgICAgICAgLy8gVmVyaWZ5IGVuYWJsaW5nIGNvbnRlbnQgYmxvY2tlcnMg
aGFzIG5vIGVmZmVjdCB3aGVuIHJlbG9hZGluZyB3aXRob3V0IGNvbnRlbnQgYmxvY2tlcnMuCi0g
ICAgICAgIHdlYnNpdGVQb2xpY2llcy5jb250ZW50QmxvY2tlcnNFbmFibGVkID0gdHJ1ZTsKKyAg
ICAgICAgd2Vic2l0ZVBvbGljaWVzLl9jb250ZW50QmxvY2tlcnNFbmFibGVkID0gdHJ1ZTsKICAg
ICAgICAgYnJlYWs7CiAgICAgZGVmYXVsdDoKICAgICAgICAgRVhQRUNUX1RSVUUoZmFsc2UpOwpA
QCAtMTM2LDcgKzEzNiw3IEBAIC0gKHZvaWQpX3dlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcg
ZGUKIAogQGVuZAogCi1URVNUKFdlYktpdCwgV2Vic2l0ZVBvbGljaWVzQ29udGVudEJsb2NrZXJz
RW5hYmxlZCkKK1RFU1QoV2VicGFnZVByZWZlcmVuY2VzLCBXZWJzaXRlUG9saWNpZXNDb250ZW50
QmxvY2tlcnNFbmFibGVkKQogewogICAgIFtbX1dLVXNlckNvbnRlbnRFeHRlbnNpb25TdG9yZSBk
ZWZhdWx0U3RvcmVdIF9yZW1vdmVBbGxDb250ZW50RXh0ZW5zaW9uc107CiAKQEAgLTE4OCwxMyAr
MTg4LDEzIEBAIC0gKHZvaWQpd2ViVmlldzooV0tXZWJWaWV3ICopd2ViVmlldyBkZWMKICAgICBk
ZWNpc2lvbkhhbmRsZXIoV0tOYXZpZ2F0aW9uQWN0aW9uUG9saWN5QWxsb3cpOwogfQogCi0tICh2
b2lkKV93ZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3IGRlY2lkZVBvbGljeUZvck5hdmlnYXRp
b25BY3Rpb246KFdLTmF2aWdhdGlvbkFjdGlvbiAqKW5hdmlnYXRpb25BY3Rpb24gZGVjaXNpb25I
YW5kbGVyOih2b2lkICheKShXS05hdmlnYXRpb25BY3Rpb25Qb2xpY3ksIF9XS1dlYnNpdGVQb2xp
Y2llcyAqKSlkZWNpc2lvbkhhbmRsZXIKKy0gKHZvaWQpd2ViVmlldzooV0tXZWJWaWV3ICopd2Vi
VmlldyBkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uOihXS05hdmlnYXRpb25BY3Rpb24g
KiluYXZpZ2F0aW9uQWN0aW9uIHByZWZlcmVuY2VzOihXS1dlYnBhZ2VQcmVmZXJlbmNlcyAqKXBy
ZWZlcmVuY2VzIGRlY2lzaW9uSGFuZGxlcjoodm9pZCAoXikoV0tOYXZpZ2F0aW9uQWN0aW9uUG9s
aWN5LCBXS1dlYnBhZ2VQcmVmZXJlbmNlcyAqKSlkZWNpc2lvbkhhbmRsZXIKIHsKLSAgICBfV0tX
ZWJzaXRlUG9saWNpZXMgKndlYnNpdGVQb2xpY2llcyA9IFtbW19XS1dlYnNpdGVQb2xpY2llcyBh
bGxvY10gaW5pdF0gYXV0b3JlbGVhc2VdOworICAgIFdLV2VicGFnZVByZWZlcmVuY2VzICp3ZWJz
aXRlUG9saWNpZXMgPSBbW1tXS1dlYnBhZ2VQcmVmZXJlbmNlcyBhbGxvY10gaW5pdF0gYXV0b3Jl
bGVhc2VdOwogICAgIGlmIChfYWxsb3dlZEF1dG9wbGF5UXVpcmtzRm9yVVJMKQotICAgICAgICB3
ZWJzaXRlUG9saWNpZXMuYWxsb3dlZEF1dG9wbGF5UXVpcmtzID0gX2FsbG93ZWRBdXRvcGxheVF1
aXJrc0ZvclVSTChuYXZpZ2F0aW9uQWN0aW9uLnJlcXVlc3QuVVJMKTsKKyAgICAgICAgd2Vic2l0
ZVBvbGljaWVzLl9hbGxvd2VkQXV0b3BsYXlRdWlya3MgPSBfYWxsb3dlZEF1dG9wbGF5UXVpcmtz
Rm9yVVJMKG5hdmlnYXRpb25BY3Rpb24ucmVxdWVzdC5VUkwpOwogICAgIGlmIChfYXV0b3BsYXlQ
b2xpY3lGb3JVUkwpCi0gICAgICAgIHdlYnNpdGVQb2xpY2llcy5hdXRvcGxheVBvbGljeSA9IF9h
dXRvcGxheVBvbGljeUZvclVSTChuYXZpZ2F0aW9uQWN0aW9uLnJlcXVlc3QuVVJMKTsKKyAgICAg
ICAgd2Vic2l0ZVBvbGljaWVzLl9hdXRvcGxheVBvbGljeSA9IF9hdXRvcGxheVBvbGljeUZvclVS
TChuYXZpZ2F0aW9uQWN0aW9uLnJlcXVlc3QuVVJMKTsKICAgICBkZWNpc2lvbkhhbmRsZXIoV0tO
YXZpZ2F0aW9uQWN0aW9uUG9saWN5QWxsb3csIHdlYnNpdGVQb2xpY2llcyk7CiB9CiAKQEAgLTIy
MiwxNCArMjIyLDE0IEBAIC0gKHZvaWQpd2ViVmlldzooV0tXZWJWaWV3ICopd2ViVmlldyBkZWMK
ICAgICBkZWNpc2lvbkhhbmRsZXIoV0tOYXZpZ2F0aW9uQWN0aW9uUG9saWN5QWxsb3cpOwogfQog
Ci0tICh2b2lkKV93ZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3IGRlY2lkZVBvbGljeUZvck5h
dmlnYXRpb25BY3Rpb246KFdLTmF2aWdhdGlvbkFjdGlvbiAqKW5hdmlnYXRpb25BY3Rpb24gZGVj
aXNpb25IYW5kbGVyOih2b2lkICheKShXS05hdmlnYXRpb25BY3Rpb25Qb2xpY3ksIF9XS1dlYnNp
dGVQb2xpY2llcyAqKSlkZWNpc2lvbkhhbmRsZXIKKy0gKHZvaWQpd2ViVmlldzooV0tXZWJWaWV3
ICopd2ViVmlldyBkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uOihXS05hdmlnYXRpb25B
Y3Rpb24gKiluYXZpZ2F0aW9uQWN0aW9uIHByZWZlcmVuY2VzOihXS1dlYnBhZ2VQcmVmZXJlbmNl
cyAqKXByZWZlcmVuY2VzIGRlY2lzaW9uSGFuZGxlcjoodm9pZCAoXikoV0tOYXZpZ2F0aW9uQWN0
aW9uUG9saWN5LCBXS1dlYnBhZ2VQcmVmZXJlbmNlcyAqKSlkZWNpc2lvbkhhbmRsZXIKIHsKICAg
ICBkaXNwYXRjaF9hc3luYyhkaXNwYXRjaF9nZXRfbWFpbl9xdWV1ZSgpLCBeewotICAgICAgICBf
V0tXZWJzaXRlUG9saWNpZXMgKndlYnNpdGVQb2xpY2llcyA9IFtbW19XS1dlYnNpdGVQb2xpY2ll
cyBhbGxvY10gaW5pdF0gYXV0b3JlbGVhc2VdOworICAgICAgICBXS1dlYnBhZ2VQcmVmZXJlbmNl
cyAqd2Vic2l0ZVBvbGljaWVzID0gW1tbV0tXZWJwYWdlUHJlZmVyZW5jZXMgYWxsb2NdIGluaXRd
IGF1dG9yZWxlYXNlXTsKICAgICAgICAgaWYgKF9hbGxvd2VkQXV0b3BsYXlRdWlya3NGb3JVUkwp
Ci0gICAgICAgICAgICB3ZWJzaXRlUG9saWNpZXMuYWxsb3dlZEF1dG9wbGF5UXVpcmtzID0gX2Fs
bG93ZWRBdXRvcGxheVF1aXJrc0ZvclVSTChuYXZpZ2F0aW9uQWN0aW9uLnJlcXVlc3QuVVJMKTsK
KyAgICAgICAgICAgIHdlYnNpdGVQb2xpY2llcy5fYWxsb3dlZEF1dG9wbGF5UXVpcmtzID0gX2Fs
bG93ZWRBdXRvcGxheVF1aXJrc0ZvclVSTChuYXZpZ2F0aW9uQWN0aW9uLnJlcXVlc3QuVVJMKTsK
ICAgICAgICAgaWYgKF9hdXRvcGxheVBvbGljeUZvclVSTCkKLSAgICAgICAgICAgIHdlYnNpdGVQ
b2xpY2llcy5hdXRvcGxheVBvbGljeSA9IF9hdXRvcGxheVBvbGljeUZvclVSTChuYXZpZ2F0aW9u
QWN0aW9uLnJlcXVlc3QuVVJMKTsKKyAgICAgICAgICAgIHdlYnNpdGVQb2xpY2llcy5fYXV0b3Bs
YXlQb2xpY3kgPSBfYXV0b3BsYXlQb2xpY3lGb3JVUkwobmF2aWdhdGlvbkFjdGlvbi5yZXF1ZXN0
LlVSTCk7CiAgICAgICAgIGRlY2lzaW9uSGFuZGxlcihXS05hdmlnYXRpb25BY3Rpb25Qb2xpY3lB
bGxvdywgd2Vic2l0ZVBvbGljaWVzKTsKICAgICB9KTsKIH0KQEAgLTI0NSwyNCArMjQ1LDIyIEBA
IC0gKHZvaWQpX3dlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcgaGEKIEBlbmQKIAogQGludGVy
ZmFjZSBXZWJzaXRlUG9saWNpZXNOYXZpZ2F0aW9uRGVsZWdhdGUgOiBUZXN0TmF2aWdhdGlvbkRl
bGVnYXRlIDxXS05hdmlnYXRpb25EZWxlZ2F0ZVByaXZhdGU+Ci1AcHJvcGVydHkgKG5vbmF0b21p
YywgY29weSkgdm9pZCAoXmRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb25XaXRoV2Vic2l0
ZVBvbGljaWVzKShXS05hdmlnYXRpb25BY3Rpb24gKiwgaWQgPE5TU2VjdXJlQ29kaW5nPiwgdm9p
ZCAoXikoV0tOYXZpZ2F0aW9uQWN0aW9uUG9saWN5LCBfV0tXZWJzaXRlUG9saWNpZXMgKikpOwor
QHByb3BlcnR5IChub25hdG9taWMsIGNvcHkpIHZvaWQgKF5kZWNpZGVQb2xpY3lGb3JOYXZpZ2F0
aW9uQWN0aW9uV2l0aFdlYnNpdGVQb2xpY2llcykoV0tOYXZpZ2F0aW9uQWN0aW9uICosIFdLV2Vi
cGFnZVByZWZlcmVuY2VzICosIGlkIDxOU1NlY3VyZUNvZGluZz4sIHZvaWQgKF4pKFdLTmF2aWdh
dGlvbkFjdGlvblBvbGljeSwgV0tXZWJwYWdlUHJlZmVyZW5jZXMgKikpOwogQGVuZAogCiBAaW1w
bGVtZW50YXRpb24gV2Vic2l0ZVBvbGljaWVzTmF2aWdhdGlvbkRlbGVnYXRlCiAKLUlHTk9SRV9X
QVJOSU5HU19CRUdJTigiZGVwcmVjYXRlZC1pbXBsZW1lbnRhdGlvbnMiKQotLSAodm9pZClfd2Vi
VmlldzooV0tXZWJWaWV3ICopd2ViVmlldyBkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9u
OihXS05hdmlnYXRpb25BY3Rpb24gKiluYXZpZ2F0aW9uQWN0aW9uIHVzZXJJbmZvOihpZCA8TlNT
ZWN1cmVDb2Rpbmc+KXVzZXJJbmZvIGRlY2lzaW9uSGFuZGxlcjoodm9pZCAoXikoV0tOYXZpZ2F0
aW9uQWN0aW9uUG9saWN5LCBfV0tXZWJzaXRlUG9saWNpZXMgKikpZGVjaXNpb25IYW5kbGVyCi1J
R05PUkVfV0FSTklOR1NfRU5ECistICh2b2lkKV93ZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3
IGRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb246KFdLTmF2aWdhdGlvbkFjdGlvbiAqKW5h
dmlnYXRpb25BY3Rpb24gcHJlZmVyZW5jZXM6KFdLV2VicGFnZVByZWZlcmVuY2VzICopcHJlZmVy
ZW5jZXMgdXNlckluZm86KGlkIDxOU1NlY3VyZUNvZGluZz4pdXNlckluZm8gZGVjaXNpb25IYW5k
bGVyOih2b2lkICheKShXS05hdmlnYXRpb25BY3Rpb25Qb2xpY3ksIFdLV2VicGFnZVByZWZlcmVu
Y2VzICopKWRlY2lzaW9uSGFuZGxlcgogewogICAgIGlmIChfZGVjaWRlUG9saWN5Rm9yTmF2aWdh
dGlvbkFjdGlvbldpdGhXZWJzaXRlUG9saWNpZXMpCi0gICAgICAgIF9kZWNpZGVQb2xpY3lGb3JO
YXZpZ2F0aW9uQWN0aW9uV2l0aFdlYnNpdGVQb2xpY2llcyhuYXZpZ2F0aW9uQWN0aW9uLCB1c2Vy
SW5mbywgZGVjaXNpb25IYW5kbGVyKTsKKyAgICAgICAgX2RlY2lkZVBvbGljeUZvck5hdmlnYXRp
b25BY3Rpb25XaXRoV2Vic2l0ZVBvbGljaWVzKG5hdmlnYXRpb25BY3Rpb24sIHByZWZlcmVuY2Vz
LCB1c2VySW5mbywgZGVjaXNpb25IYW5kbGVyKTsKICAgICBlbHNlCiAgICAgICAgIGRlY2lzaW9u
SGFuZGxlcihXS05hdmlnYXRpb25BY3Rpb25Qb2xpY3lBbGxvdywgbmlsKTsKIH0KIAogQGVuZAog
Ci1URVNUKFdlYktpdCwgV2Vic2l0ZVBvbGljaWVzQXV0b3BsYXlFbmFibGVkKQorVEVTVChXZWJw
YWdlUHJlZmVyZW5jZXMsIFdlYnNpdGVQb2xpY2llc0F1dG9wbGF5RW5hYmxlZCkKIHsKICAgICBh
dXRvIGNvbmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtbV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBhbGxv
Y10gaW5pdF0pOwogCkBAIC0zMTAsOSArMzA4LDkgQEAgVEVTVChXZWJLaXQsIFdlYnNpdGVQb2xp
Y2llc0F1dG9wbGF5RW5hYgogICAgIFt3ZWJWaWV3IHdhaXRGb3JNZXNzYWdlOkAiZGlkLW5vdC1w
bGF5Il07CiAKICAgICAvLyBUZXN0IHVwZGF0aW5nIHdlYnNpdGUgcG9saWNpZXMuCi0gICAgX1dL
V2Vic2l0ZVBvbGljaWVzICp3ZWJzaXRlUG9saWNpZXMgPSBbW1tfV0tXZWJzaXRlUG9saWNpZXMg
YWxsb2NdIGluaXRdIGF1dG9yZWxlYXNlXTsKLSAgICB3ZWJzaXRlUG9saWNpZXMuYXV0b3BsYXlQ
b2xpY3kgPSBfV0tXZWJzaXRlQXV0b3BsYXlQb2xpY3lBbGxvdzsKLSAgICBbd2ViVmlldyBfdXBk
YXRlV2Vic2l0ZVBvbGljaWVzOndlYnNpdGVQb2xpY2llc107CisgICAgV0tXZWJwYWdlUHJlZmVy
ZW5jZXMgKndlYnNpdGVQb2xpY2llcyA9IFtbW1dLV2VicGFnZVByZWZlcmVuY2VzIGFsbG9jXSBp
bml0XSBhdXRvcmVsZWFzZV07CisgICAgd2Vic2l0ZVBvbGljaWVzLl9hdXRvcGxheVBvbGljeSA9
IF9XS1dlYnNpdGVBdXRvcGxheVBvbGljeUFsbG93OworICAgIFt3ZWJWaWV3IF91cGRhdGVXZWJw
YWdlUHJlZmVyZW5jZXM6d2Vic2l0ZVBvbGljaWVzXTsKICAgICBbd2ViVmlldyBzdHJpbmdCeUV2
YWx1YXRpbmdKYXZhU2NyaXB0OkAicGxheVZpZGVvKCkiXTsKICAgICBbd2ViVmlldyB3YWl0Rm9y
TWVzc2FnZTpAImF1dG9wbGF5ZWQiXTsKIApAQCAtMzYzLDcgKzM2MSw3IEBAIHN0YXRpYyB2b2lk
IHJ1blVudGlsUmVjZWl2ZXNBdXRvcGxheUV2ZW4KICAgICAgICAgQ0ZSdW5Mb29wUnVuSW5Nb2Rl
KGtDRlJ1bkxvb3BEZWZhdWx0TW9kZSwgMC4xLCB0cnVlKTsKIH0KIAotVEVTVChXZWJLaXQsIFdl
YnNpdGVQb2xpY2llc1BsYXlBZnRlclByZXZlbnRlZEF1dG9wbGF5KQorVEVTVChXZWJwYWdlUHJl
ZmVyZW5jZXMsIFdlYnNpdGVQb2xpY2llc1BsYXlBZnRlclByZXZlbnRlZEF1dG9wbGF5KQogewog
ICAgIGF1dG8gY29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tXS1dlYlZpZXdDb25maWd1cmF0aW9u
IGFsbG9jXSBpbml0XSk7CiAgICAgYXV0byB3ZWJWaWV3ID0gYWRvcHROUyhbW1Rlc3RXS1dlYlZp
ZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgwLCAwLCAzMzYsIDI3NikgY29uZmln
dXJhdGlvbjpjb25maWd1cmF0aW9uLmdldCgpXSk7CkBAIC00MzQsNyArNDMyLDcgQEAgVEVTVChX
ZWJLaXQsIFdlYnNpdGVQb2xpY2llc1BsYXlBZnRlclByZQogICAgIEFTU0VSVF9UUlVFKCpyZWNl
aXZlZEF1dG9wbGF5RXZlbnRGbGFncyAmIGtXS0F1dG9wbGF5RXZlbnRGbGFnc1BsYXliYWNrV2Fz
UHJldmVudGVkKTsKIH0KIAotVEVTVChXZWJLaXQsIFdlYnNpdGVQb2xpY2llc1BsYXlpbmdXaXRo
VXNlckdlc3R1cmUpCitURVNUKFdlYnBhZ2VQcmVmZXJlbmNlcywgV2Vic2l0ZVBvbGljaWVzUGxh
eWluZ1dpdGhVc2VyR2VzdHVyZSkKIHsKICAgICBhdXRvIGNvbmZpZ3VyYXRpb24gPSBhZG9wdE5T
KFtbV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF0pOwogICAgIGF1dG8gd2ViVmll
dyA9IGFkb3B0TlMoW1tUZXN0V0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TTWFrZVJl
Y3QoMCwgMCwgODAwLCA2MDApIGNvbmZpZ3VyYXRpb246Y29uZmlndXJhdGlvbi5nZXQoKV0pOwpA
QCAtNDczLDcgKzQ3MSw3IEBAIFRFU1QoV2ViS2l0LCBXZWJzaXRlUG9saWNpZXNQbGF5aW5nV2l0
aFUKICAgICBBU1NFUlRfVFJVRSgqcmVjZWl2ZWRBdXRvcGxheUV2ZW50RmxhZ3MgJiBrV0tBdXRv
cGxheUV2ZW50RmxhZ3NNZWRpYUlzTWFpbkNvbnRlbnQpOwogfQogCi1URVNUKFdlYktpdCwgV2Vi
c2l0ZVBvbGljaWVzUGxheWluZ1dpdGhvdXRJbnRlcmZlcmVuY2UpCitURVNUKFdlYnBhZ2VQcmVm
ZXJlbmNlcywgV2Vic2l0ZVBvbGljaWVzUGxheWluZ1dpdGhvdXRJbnRlcmZlcmVuY2UpCiB7CiAg
ICAgYXV0byBjb25maWd1cmF0aW9uID0gYWRvcHROUyhbW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24g
YWxsb2NdIGluaXRdKTsKICAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtbVGVzdFdLV2ViVmll
dyBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU01ha2VSZWN0KDAsIDAsIDMzNiwgMjc2KSBjb25maWd1
cmF0aW9uOmNvbmZpZ3VyYXRpb24uZ2V0KCldKTsKQEAgLTQ5Miw3ICs0OTAsNyBAQCBURVNUKFdl
YktpdCwgV2Vic2l0ZVBvbGljaWVzUGxheWluZ1dpdGhvCiAgICAgQVNTRVJUX1RSVUUoKnJlY2Vp
dmVkQXV0b3BsYXlFdmVudEZsYWdzICYga1dLQXV0b3BsYXlFdmVudEZsYWdzSGFzQXVkaW8pOwog
fQogCi1URVNUKFdlYktpdCwgV2Vic2l0ZVBvbGljaWVzVXNlckludGVyZmVyZW5jZVdpdGhQbGF5
aW5nKQorVEVTVChXZWJwYWdlUHJlZmVyZW5jZXMsIFdlYnNpdGVQb2xpY2llc1VzZXJJbnRlcmZl
cmVuY2VXaXRoUGxheWluZykKIHsKICAgICBhdXRvIGNvbmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtb
V0tXZWJWaWV3Q29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF0pOwogICAgIGF1dG8gd2ViVmlldyA9
IGFkb3B0TlMoW1tUZXN0V0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TTWFrZVJlY3Qo
MCwgMCwgMzM2LCAyNzYpIGNvbmZpZ3VyYXRpb246Y29uZmlndXJhdGlvbi5nZXQoKV0pOwpAQCAt
NTM3LDcgKzUzNSw3IEBAIFRFU1QoV2ViS2l0LCBXZWJzaXRlUG9saWNpZXNVc2VySW50ZXJmZXIK
ICAgICBBU1NFUlRfVFJVRSgqcmVjZWl2ZWRBdXRvcGxheUV2ZW50RmxhZ3MgJiBrV0tBdXRvcGxh
eUV2ZW50RmxhZ3NIYXNBdWRpbyk7CiB9CiAKLVRFU1QoV2ViS2l0LCBXZWJzaXRlUG9saWNpZXNQ
ZXJEb2N1bWVudEF1dG9wbGF5QmVoYXZpb3JNZWRpYUxvYWRpbmcpCitURVNUKFdlYnBhZ2VQcmVm
ZXJlbmNlcywgV2Vic2l0ZVBvbGljaWVzUGVyRG9jdW1lbnRBdXRvcGxheUJlaGF2aW9yTWVkaWFM
b2FkaW5nKQogewogICAgIGF1dG8gY29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tXS1dlYlZpZXdD
b25maWd1cmF0aW9uIGFsbG9jXSBpbml0XSk7CiAgICAgYXV0byB3ZWJWaWV3ID0gYWRvcHROUyhb
W1Rlc3RXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgwLCAwLCA4MDAs
IDYwMCkgY29uZmlndXJhdGlvbjpjb25maWd1cmF0aW9uLmdldCgpXSk7CkBAIC01NzcsMTYgKzU3
NSwxNiBAQCBURVNUKFdlYktpdCwgV2Vic2l0ZVBvbGljaWVzUGVyRG9jdW1lbnRBCiAgICAgVGVz
dFdlYktpdEFQSTo6VXRpbDo6cnVuKCZyZWNlaXZlZExvYWRlZEV2ZW50KTsKIH0KIAotVEVTVChX
ZWJLaXQsIFdlYnNpdGVQb2xpY2llc1dpdGhCcmlkZ2luZ0Nhc3QpCitURVNUKFdlYnBhZ2VQcmVm
ZXJlbmNlcywgV2Vic2l0ZVBvbGljaWVzV2l0aEJyaWRnaW5nQ2FzdCkKIHsKICAgICBhdXRvIGNv
bmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtbV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBhbGxvY10gaW5p
dF0pOwogICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tUZXN0V0tXZWJWaWV3IGFsbG9jXSBp
bml0V2l0aEZyYW1lOk5TTWFrZVJlY3QoMCwgMCwgMzM2LCAyNzYpIGNvbmZpZ3VyYXRpb246Y29u
ZmlndXJhdGlvbi5nZXQoKV0pOwogICAgIGF1dG8gZGVsZWdhdGUgPSBhZG9wdE5TKFtbV2Vic2l0
ZVBvbGljaWVzTmF2aWdhdGlvbkRlbGVnYXRlIGFsbG9jXSBpbml0XSk7CiAKICAgICBfX2Jsb2Nr
IGJvb2wgZGlkSW52b2tlRGVjaXNpb25IYW5kbGVyID0gZmFsc2U7Ci0gICAgW2RlbGVnYXRlIHNl
dERlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb25XaXRoV2Vic2l0ZVBvbGljaWVzOl4oV0tO
YXZpZ2F0aW9uQWN0aW9uICosIGlkIDxOU1NlY3VyZUNvZGluZz4sIHZvaWQgKF5kZWNpc2lvbkhh
bmRsZXIpKFdLTmF2aWdhdGlvbkFjdGlvblBvbGljeSwgX1dLV2Vic2l0ZVBvbGljaWVzICopKSB7
CisgICAgW2RlbGVnYXRlIHNldERlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb25XaXRoV2Vi
c2l0ZVBvbGljaWVzOl4oV0tOYXZpZ2F0aW9uQWN0aW9uICosIFdLV2VicGFnZVByZWZlcmVuY2Vz
ICosIGlkIDxOU1NlY3VyZUNvZGluZz4sIHZvaWQgKF5kZWNpc2lvbkhhbmRsZXIpKFdLTmF2aWdh
dGlvbkFjdGlvblBvbGljeSwgV0tXZWJwYWdlUHJlZmVyZW5jZXMgKikpIHsKICAgICAgICAgYXV0
byBwb2xpY2llcyA9IGFkb3B0V0soV0tXZWJzaXRlUG9saWNpZXNDcmVhdGUoKSk7Ci0gICAgICAg
IGRlY2lzaW9uSGFuZGxlcihXS05hdmlnYXRpb25BY3Rpb25Qb2xpY3lBbGxvdywgKF9fYnJpZGdl
IF9XS1dlYnNpdGVQb2xpY2llcyAqKXBvbGljaWVzLmdldCgpKTsKKyAgICAgICAgZGVjaXNpb25I
YW5kbGVyKFdLTmF2aWdhdGlvbkFjdGlvblBvbGljeUFsbG93LCAoX19icmlkZ2UgV0tXZWJwYWdl
UHJlZmVyZW5jZXMgKilwb2xpY2llcy5nZXQoKSk7CiAgICAgICAgIGRpZEludm9rZURlY2lzaW9u
SGFuZGxlciA9IHRydWU7CiAgICAgfV07CiAKQEAgLTU5NiwxNyArNTk0LDE3IEBAIFRFU1QoV2Vi
S2l0LCBXZWJzaXRlUG9saWNpZXNXaXRoQnJpZGdpbmcKICAgICBFWFBFQ1RfVFJVRShkaWRJbnZv
a2VEZWNpc2lvbkhhbmRsZXIpOwogfQogCi1URVNUKFdlYktpdCwgV2Vic2l0ZVBvbGljaWVzV2l0
aFVuZXhwZWN0ZWRUeXBlKQorVEVTVChXZWJwYWdlUHJlZmVyZW5jZXMsIFdlYnNpdGVQb2xpY2ll
c1dpdGhVbmV4cGVjdGVkVHlwZSkKIHsKICAgICBhdXRvIGNvbmZpZ3VyYXRpb24gPSBhZG9wdE5T
KFtbV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF0pOwogICAgIGF1dG8gd2ViVmll
dyA9IGFkb3B0TlMoW1tUZXN0V0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TTWFrZVJl
Y3QoMCwgMCwgMzM2LCAyNzYpIGNvbmZpZ3VyYXRpb246Y29uZmlndXJhdGlvbi5nZXQoKV0pOwog
ICAgIGF1dG8gZGVsZWdhdGUgPSBhZG9wdE5TKFtbV2Vic2l0ZVBvbGljaWVzTmF2aWdhdGlvbkRl
bGVnYXRlIGFsbG9jXSBpbml0XSk7CiAKICAgICBfX2Jsb2NrIGJvb2wgZGlkQ2F0Y2hFeGNlcHRp
b24gPSBmYWxzZTsKLSAgICBbZGVsZWdhdGUgc2V0RGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFj
dGlvbldpdGhXZWJzaXRlUG9saWNpZXM6XihXS05hdmlnYXRpb25BY3Rpb24gKiwgaWQgPE5TU2Vj
dXJlQ29kaW5nPiwgdm9pZCAoXmRlY2lzaW9uSGFuZGxlcikoV0tOYXZpZ2F0aW9uQWN0aW9uUG9s
aWN5LCBfV0tXZWJzaXRlUG9saWNpZXMgKikpIHsKKyAgICBbZGVsZWdhdGUgc2V0RGVjaWRlUG9s
aWN5Rm9yTmF2aWdhdGlvbkFjdGlvbldpdGhXZWJzaXRlUG9saWNpZXM6XihXS05hdmlnYXRpb25B
Y3Rpb24gKiwgV0tXZWJwYWdlUHJlZmVyZW5jZXMgKiwgaWQgPE5TU2VjdXJlQ29kaW5nPiwgdm9p
ZCAoXmRlY2lzaW9uSGFuZGxlcikoV0tOYXZpZ2F0aW9uQWN0aW9uUG9saWN5LCBXS1dlYnBhZ2VQ
cmVmZXJlbmNlcyAqKSkgewogICAgICAgICBAdHJ5IHsKICAgICAgICAgICAgIGlkIGZha2VQb2xp
Y2llcyA9IEAiSGVsbG8iOwotICAgICAgICAgICAgZGVjaXNpb25IYW5kbGVyKFdLTmF2aWdhdGlv
bkFjdGlvblBvbGljeUFsbG93LCAoX1dLV2Vic2l0ZVBvbGljaWVzICopZmFrZVBvbGljaWVzKTsK
KyAgICAgICAgICAgIGRlY2lzaW9uSGFuZGxlcihXS05hdmlnYXRpb25BY3Rpb25Qb2xpY3lBbGxv
dywgKFdLV2VicGFnZVByZWZlcmVuY2VzICopZmFrZVBvbGljaWVzKTsKICAgICAgICAgfSBAY2F0
Y2ggKE5TRXhjZXB0aW9uICpleGNlcHRpb24pIHsKICAgICAgICAgICAgIGRpZENhdGNoRXhjZXB0
aW9uID0gdHJ1ZTsKICAgICAgICAgfQpAQCAtNjk2LDcgKzY5NCw3IEBAIC0gKHZvaWQpd2ViVmll
dzooV0tXZWJWaWV3ICopd2ViVmlldyBzdG8KIAogQGVuZAogCi1URVNUKFdlYktpdCwgV2Vic2l0
ZVBvbGljaWVzRHVyaW5nUmVkaXJlY3QpCitURVNUKFdlYnBhZ2VQcmVmZXJlbmNlcywgV2Vic2l0
ZVBvbGljaWVzRHVyaW5nUmVkaXJlY3QpCiB7CiAgICAgYXV0byBjb25maWd1cmF0aW9uID0gYWRv
cHROUyhbW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdKTsKICAgICBhdXRvIHZp
ZGVvRGF0YSA9IGFkb3B0TlMoW1tOU0RhdGEgYWxsb2NdIGluaXRXaXRoQ29udGVudHNPZlVSTDpb
W05TQnVuZGxlIG1haW5CdW5kbGVdIFVSTEZvclJlc291cmNlOkAidGVzdCIgd2l0aEV4dGVuc2lv
bjpAIm1wNCIgc3ViZGlyZWN0b3J5OkAiVGVzdFdlYktpdEFQSS5yZXNvdXJjZXMiXV0pOwpAQCAt
NzE2LDcgKzcxNCw3IEBAIFRFU1QoV2ViS2l0LCBXZWJzaXRlUG9saWNpZXNEdXJpbmdSZWRpcmUK
ICAgICBbd2ViVmlldyB3YWl0Rm9yTWVzc2FnZTpAImF1dG9wbGF5ZWQiXTsKIH0KIAotVEVTVChX
ZWJLaXQsIFdlYnNpdGVQb2xpY2llc1VwZGF0ZXMpCitURVNUKFdlYnBhZ2VQcmVmZXJlbmNlcywg
V2Vic2l0ZVBvbGljaWVzVXBkYXRlcykKIHsKICAgICBhdXRvIGNvbmZpZ3VyYXRpb24gPSBhZG9w
dE5TKFtbV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF0pOwogICAgIGF1dG8gd2Vi
VmlldyA9IGFkb3B0TlMoW1tUZXN0V0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TTWFr
ZVJlY3QoMCwgMCwgODAwLCA2MDApIGNvbmZpZ3VyYXRpb246Y29uZmlndXJhdGlvbi5nZXQoKV0p
OwpAQCAtNzMyLDkgKzczMCw5IEBAIFRFU1QoV2ViS2l0LCBXZWJzaXRlUG9saWNpZXNVcGRhdGVz
KQogICAgIFt3ZWJWaWV3IGxvYWRSZXF1ZXN0OnJlcXVlc3RXaXRoQXVkaW9dOwogICAgIFt3ZWJW
aWV3IHdhaXRGb3JNZXNzYWdlOkAiZGlkLW5vdC1wbGF5Il07CiAKLSAgICBfV0tXZWJzaXRlUG9s
aWNpZXMgKnBvbGljaWVzID0gW1tbX1dLV2Vic2l0ZVBvbGljaWVzIGFsbG9jXSBpbml0XSBhdXRv
cmVsZWFzZV07Ci0gICAgcG9saWNpZXMuYXV0b3BsYXlQb2xpY3kgPSBfV0tXZWJzaXRlQXV0b3Bs
YXlQb2xpY3lBbGxvdzsKLSAgICBbd2ViVmlldyBfdXBkYXRlV2Vic2l0ZVBvbGljaWVzOnBvbGlj
aWVzXTsKKyAgICBXS1dlYnBhZ2VQcmVmZXJlbmNlcyAqcG9saWNpZXMgPSBbW1tXS1dlYnBhZ2VQ
cmVmZXJlbmNlcyBhbGxvY10gaW5pdF0gYXV0b3JlbGVhc2VdOworICAgIHBvbGljaWVzLl9hdXRv
cGxheVBvbGljeSA9IF9XS1dlYnNpdGVBdXRvcGxheVBvbGljeUFsbG93OworICAgIFt3ZWJWaWV3
IF91cGRhdGVXZWJwYWdlUHJlZmVyZW5jZXM6cG9saWNpZXNdOwogCiAgICAgLy8gTm93IHRoYXQg
d2UgdXBkYXRlZCBvdXIgcG9saWNpZXMsIGEgc2NyaXB0IHNob3VsZCBiZSBhYmxlIHRvIGF1dG9w
bGF5IG1lZGlhLgogICAgIFt3ZWJWaWV3IHN0cmluZ0J5RXZhbHVhdGluZ0phdmFTY3JpcHQ6QCJw
bGF5VmlkZW8oKSJdOwpAQCAtNzUyLDcgKzc1MCw3IEBAIFRFU1QoV2ViS2l0LCBXZWJzaXRlUG9s
aWNpZXNVcGRhdGVzKQogICAgIHJ1blVudGlsUmVjZWl2ZXNBdXRvcGxheUV2ZW50KGtXS0F1dG9w
bGF5RXZlbnREaWRQcmV2ZW50RnJvbUF1dG9wbGF5aW5nKTsKIH0KIAotVEVTVChXZWJLaXQsIFdl
YnNpdGVQb2xpY2llc0FyYml0cmFyeVVzZXJHZXN0dXJlUXVpcmspCitURVNUKFdlYnBhZ2VQcmVm
ZXJlbmNlcywgV2Vic2l0ZVBvbGljaWVzQXJiaXRyYXJ5VXNlckdlc3R1cmVRdWlyaykKIHsKICAg
ICBhdXRvIGNvbmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtbV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBh
bGxvY10gaW5pdF0pOwogICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tUZXN0V0tXZWJWaWV3
IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TTWFrZVJlY3QoMCwgMCwgODAwLCA2MDApIGNvbmZpZ3Vy
YXRpb246Y29uZmlndXJhdGlvbi5nZXQoKV0pOwpAQCAtNzg1LDcgKzc4Myw3IEBAIFRFU1QoV2Vi
S2l0LCBXZWJzaXRlUG9saWNpZXNBcmJpdHJhcnlVc2UKICAgICBbd2ViVmlldyB3YWl0Rm9yTWVz
c2FnZTpAImF1dG9wbGF5ZWQiXTsKIH0KIAotVEVTVChXZWJLaXQsIFdlYnNpdGVQb2xpY2llc0F1
dG9wbGF5UXVpcmtzKQorVEVTVChXZWJwYWdlUHJlZmVyZW5jZXMsIFdlYnNpdGVQb2xpY2llc0F1
dG9wbGF5UXVpcmtzKQogewogICAgIGF1dG8gY29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tXS1dl
YlZpZXdDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0XSk7CiAgICAgYXV0byB3ZWJWaWV3ID0gYWRv
cHROUyhbW1Rlc3RXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgwLCAw
LCA4MDAsIDYwMCkgY29uZmlndXJhdGlvbjpjb25maWd1cmF0aW9uLmdldCgpXSk7CkBAIC04NDMs
NyArODQxLDcgQEAgVEVTVChXZWJLaXQsIFdlYnNpdGVQb2xpY2llc0F1dG9wbGF5UXVpcgogICAg
IFt3ZWJWaWV3IHdhaXRGb3JNZXNzYWdlOkAicGxheWluZyJdOwogfQogCi1URVNUKFdlYktpdCwg
V2Vic2l0ZVBvbGljaWVzUGVyRG9jdW1lbnRBdXRvcGxheUJlaGF2aW9yUXVpcmtzKQorVEVTVChX
ZWJwYWdlUHJlZmVyZW5jZXMsIFdlYnNpdGVQb2xpY2llc1BlckRvY3VtZW50QXV0b3BsYXlCZWhh
dmlvclF1aXJrcykKIHsKICAgICBhdXRvIGNvbmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtbV0tXZWJW
aWV3Q29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF0pOwogICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0
TlMoW1tUZXN0V0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TTWFrZVJlY3QoMCwgMCwg
ODAwLCA2MDApIGNvbmZpZ3VyYXRpb246Y29uZmlndXJhdGlvbi5nZXQoKV0pOwpAQCAtOTA2LDcg
KzkwNCw3IEBAIFRFU1QoV2ViS2l0LCBXZWJzaXRlUG9saWNpZXNQZXJEb2N1bWVudEEKICAgICBb
d2ViVmlldyB3YWl0Rm9yTWVzc2FnZTpAImRpZC1ub3QtcGxheS12aWRlbzIiXTsKIH0KIAotVEVT
VChXZWJLaXQsIFdlYnNpdGVQb2xpY2llc0F1dG9wbGF5UXVpcmtzQXN5bmNQb2xpY3lEZWxlZ2F0
ZSkKK1RFU1QoV2VicGFnZVByZWZlcmVuY2VzLCBXZWJzaXRlUG9saWNpZXNBdXRvcGxheVF1aXJr
c0FzeW5jUG9saWN5RGVsZWdhdGUpCiB7CiAgICAgYXV0byBjb25maWd1cmF0aW9uID0gYWRvcHRO
UyhbW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdKTsKICAgICBhdXRvIHdlYlZp
ZXcgPSBhZG9wdE5TKFtbVGVzdFdLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU01ha2VS
ZWN0KDAsIDAsIDgwMCwgNjAwKSBjb25maWd1cmF0aW9uOmNvbmZpZ3VyYXRpb24uZ2V0KCldKTsK
QEAgLTk1MCw3ICs5NDgsNyBAQCBURVNUKFdlYktpdCwgV2Vic2l0ZVBvbGljaWVzQXV0b3BsYXlR
dWlyCiB9CiAjZW5kaWYgLy8gUExBVEZPUk0oTUFDKQogCi1URVNUKFdlYktpdCwgSW52YWxpZEN1
c3RvbUhlYWRlcnMpCitURVNUKFdlYnBhZ2VQcmVmZXJlbmNlcywgSW52YWxpZEN1c3RvbUhlYWRl
cnMpCiB7CiAgICAgYXV0byBjdXN0b21IZWFkZXJGaWVsZHMgPSBhZG9wdE5TKFtbX1dLQ3VzdG9t
SGVhZGVyRmllbGRzIGFsbG9jXSBpbml0XSk7CiAgICAgW2N1c3RvbUhlYWRlckZpZWxkcyBzZXRG
aWVsZHM6QHtAImludmFsaWRoZWFkZXIiIDogQCIiLCBAIm5vbmN1c3RvbSIgOiBAImhlYWRlciIs
IEAiICAgIHgtQ3VzdG9tICI6QCIgIE5lZWRzIENhbm9uaWNhbGl6YXRpb25cdCAiLCBAIngtb3Ro
ZXIiIDogQCJvdGhlciB2YWx1ZSJ9XTsKQEAgLTEwOTcsNyArMTA5NSw3IEBAIC0gKHZvaWQpd2Vi
VmlldzooV0tXZWJWaWV3ICopd2ViVmlldyBzdG8KIAogQGVuZAogCi1URVNUKFdlYktpdCwgQ3Vz
dG9tSGVhZGVyRmllbGRzKQorVEVTVChXZWJwYWdlUHJlZmVyZW5jZXMsIEN1c3RvbUhlYWRlckZp
ZWxkcykKIHsKICAgICBhdXRvIGRlbGVnYXRlID0gYWRvcHROUyhbW0N1c3RvbUhlYWRlckZpZWxk
c0RlbGVnYXRlIGFsbG9jXSBpbml0XSk7CiAgICAgYXV0byBjb25maWd1cmF0aW9uID0gYWRvcHRO
UyhbW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdKTsKQEAgLTExNzAsMTIgKzEx
NjgsMTIgQEAgQGludGVyZmFjZSBDdXN0b21Vc2VyQWdlbnREZWxlZ2F0ZSA6IE5TTwogQGltcGxl
bWVudGF0aW9uIEN1c3RvbVVzZXJBZ2VudERlbGVnYXRlCiAKIElHTk9SRV9XQVJOSU5HU19CRUdJ
TigiZGVwcmVjYXRlZC1pbXBsZW1lbnRhdGlvbnMiKQotLSAodm9pZClfd2ViVmlldzooV0tXZWJW
aWV3ICopd2ViVmlldyBkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uOihXS05hdmlnYXRp
b25BY3Rpb24gKiluYXZpZ2F0aW9uQWN0aW9uIHVzZXJJbmZvOihpZCA8TlNTZWN1cmVDb2Rpbmc+
KXVzZXJJbmZvIGRlY2lzaW9uSGFuZGxlcjoodm9pZCAoXikoV0tOYXZpZ2F0aW9uQWN0aW9uUG9s
aWN5LCBfV0tXZWJzaXRlUG9saWNpZXMgKikpZGVjaXNpb25IYW5kbGVyCistICh2b2lkKV93ZWJW
aWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3IGRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb246
KFdLTmF2aWdhdGlvbkFjdGlvbiAqKW5hdmlnYXRpb25BY3Rpb24gdXNlckluZm86KGlkIDxOU1Nl
Y3VyZUNvZGluZz4pdXNlckluZm8gZGVjaXNpb25IYW5kbGVyOih2b2lkICheKShXS05hdmlnYXRp
b25BY3Rpb25Qb2xpY3ksIFdLV2VicGFnZVByZWZlcmVuY2VzICopKWRlY2lzaW9uSGFuZGxlcgog
SUdOT1JFX1dBUk5JTkdTX0VORAogewotICAgIF9XS1dlYnNpdGVQb2xpY2llcyAqd2Vic2l0ZVBv
bGljaWVzID0gW1tbX1dLV2Vic2l0ZVBvbGljaWVzIGFsbG9jXSBpbml0XSBhdXRvcmVsZWFzZV07
CisgICAgV0tXZWJwYWdlUHJlZmVyZW5jZXMgKndlYnNpdGVQb2xpY2llcyA9IFtbW1dLV2VicGFn
ZVByZWZlcmVuY2VzIGFsbG9jXSBpbml0XSBhdXRvcmVsZWFzZV07CiAgICAgaWYgKG5hdmlnYXRp
b25BY3Rpb24udGFyZ2V0RnJhbWUubWFpbkZyYW1lKQotICAgICAgICBbd2Vic2l0ZVBvbGljaWVz
IHNldEN1c3RvbVVzZXJBZ2VudDpAIkZvbyBDdXN0b20gVXNlckFnZW50Il07CisgICAgICAgIFt3
ZWJzaXRlUG9saWNpZXMgX3NldEN1c3RvbVVzZXJBZ2VudDpAIkZvbyBDdXN0b20gVXNlckFnZW50
Il07CiAKICAgICBkZWNpc2lvbkhhbmRsZXIoV0tOYXZpZ2F0aW9uQWN0aW9uUG9saWN5QWxsb3cs
IHdlYnNpdGVQb2xpY2llcyk7CiB9CkBAIC0xMjE3LDcgKzEyMTUsNyBAQCBvbmxvYWQgPSAoKSA9
PiB7CiA8L3NjcmlwdD4KIClURVNUUkVTT1VSQ0UiOwogCi1URVNUKFdlYktpdCwgV2Vic2l0ZVBv
bGljaWVzQ3VzdG9tVXNlckFnZW50KQorVEVTVChXZWJwYWdlUHJlZmVyZW5jZXMsIFdlYnNpdGVQ
b2xpY2llc0N1c3RvbVVzZXJBZ2VudCkKIHsKICAgICBhdXRvIGNvbmZpZ3VyYXRpb24gPSBhZG9w
dE5TKFtbV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF0pOwogCkBAIC0xMjYxLDEz
ICsxMjU5LDEzIEBAIEBpbnRlcmZhY2UgQ3VzdG9tSmF2YVNjcmlwdFVzZXJBZ2VudERlbGUKIAog
QGltcGxlbWVudGF0aW9uIEN1c3RvbUphdmFTY3JpcHRVc2VyQWdlbnREZWxlZ2F0ZQogCi0tICh2
b2lkKV93ZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3IGRlY2lkZVBvbGljeUZvck5hdmlnYXRp
b25BY3Rpb246KFdLTmF2aWdhdGlvbkFjdGlvbiAqKW5hdmlnYXRpb25BY3Rpb24gdXNlckluZm86
KGlkIDxOU1NlY3VyZUNvZGluZz4pdXNlckluZm8gZGVjaXNpb25IYW5kbGVyOih2b2lkICheKShX
S05hdmlnYXRpb25BY3Rpb25Qb2xpY3ksIF9XS1dlYnNpdGVQb2xpY2llcyAqKSlkZWNpc2lvbkhh
bmRsZXIKKy0gKHZvaWQpX3dlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcgZGVjaWRlUG9saWN5
Rm9yTmF2aWdhdGlvbkFjdGlvbjooV0tOYXZpZ2F0aW9uQWN0aW9uICopbmF2aWdhdGlvbkFjdGlv
biB1c2VySW5mbzooaWQgPE5TU2VjdXJlQ29kaW5nPil1c2VySW5mbyBkZWNpc2lvbkhhbmRsZXI6
KHZvaWQgKF4pKFdLTmF2aWdhdGlvbkFjdGlvblBvbGljeSwgV0tXZWJwYWdlUHJlZmVyZW5jZXMg
KikpZGVjaXNpb25IYW5kbGVyCiB7Ci0gICAgX1dLV2Vic2l0ZVBvbGljaWVzICp3ZWJzaXRlUG9s
aWNpZXMgPSBbW1tfV0tXZWJzaXRlUG9saWNpZXMgYWxsb2NdIGluaXRdIGF1dG9yZWxlYXNlXTsK
KyAgICBXS1dlYnBhZ2VQcmVmZXJlbmNlcyAqd2Vic2l0ZVBvbGljaWVzID0gW1tbV0tXZWJwYWdl
UHJlZmVyZW5jZXMgYWxsb2NdIGluaXRdIGF1dG9yZWxlYXNlXTsKICAgICBpZiAobmF2aWdhdGlv
bkFjdGlvbi50YXJnZXRGcmFtZS5tYWluRnJhbWUpIHsKLSAgICAgICAgW3dlYnNpdGVQb2xpY2ll
cyBzZXRDdXN0b21Vc2VyQWdlbnRBc1NpdGVTcGVjaWZpY1F1aXJrczpAIkZvbyBTaXRlIFNwZWNp
ZmljIFF1cmlrcyBVc2VyQWdlbnQiXTsKKyAgICAgICAgW3dlYnNpdGVQb2xpY2llcyBfc2V0Q3Vz
dG9tVXNlckFnZW50QXNTaXRlU3BlY2lmaWNRdWlya3M6QCJGb28gU2l0ZSBTcGVjaWZpYyBRdXJp
a3MgVXNlckFnZW50Il07CiAgICAgICAgIGlmIChfc2V0Q3VzdG9tVXNlckFnZW50KQotICAgICAg
ICAgICAgW3dlYnNpdGVQb2xpY2llcyBzZXRDdXN0b21Vc2VyQWdlbnQ6QCJGb28gQ3VzdG9tIFJl
cXVlc3QgVXNlckFnZW50Il07CisgICAgICAgICAgICBbd2Vic2l0ZVBvbGljaWVzIF9zZXRDdXN0
b21Vc2VyQWdlbnQ6QCJGb28gQ3VzdG9tIFJlcXVlc3QgVXNlckFnZW50Il07CiAgICAgfQogCiAg
ICAgZGVjaXNpb25IYW5kbGVyKFdLTmF2aWdhdGlvbkFjdGlvblBvbGljeUFsbG93LCB3ZWJzaXRl
UG9saWNpZXMpOwpAQCAtMTI4MCw3ICsxMjc4LDcgQEAgLSAodm9pZCl3ZWJWaWV3OihXS1dlYlZp
ZXcgKil3ZWJWaWV3IGRpZAogCiBAZW5kCiAKLVRFU1QoV2ViS2l0LCBXZWJzaXRlUG9saWNpZXND
dXN0b21Vc2VyQWdlbnRBc1NpdGVTcGVjaWZpY1F1aXJrc0Rpc2FibGVkKQorVEVTVChXZWJwYWdl
UHJlZmVyZW5jZXMsIFdlYnNpdGVQb2xpY2llc0N1c3RvbVVzZXJBZ2VudEFzU2l0ZVNwZWNpZmlj
UXVpcmtzRGlzYWJsZWQpCiB7CiAgICAgYXV0byBjb25maWd1cmF0aW9uID0gYWRvcHROUyhbW1dL
V2ViVmlld0NvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdKTsKIApAQCAtMTMxOSw3ICsxMzE3LDcg
QEAgVEVTVChXZWJLaXQsIFdlYnNpdGVQb2xpY2llc0N1c3RvbVVzZXJBZwogICAgIEVYUEVDVF9U
UlVFKFt1c2VyQWdlbnRTdHJpbmcgY29udGFpbnNTdHJpbmc6QCIoS0hUTUwsIGxpa2UgR2Vja28p
Il0pOwogfQogCi1URVNUKFdlYktpdCwgV2Vic2l0ZVBvbGljaWVzQ3VzdG9tVXNlckFnZW50QXNT
aXRlU3BlY2lmaWNRdWlya3MpCitURVNUKFdlYnBhZ2VQcmVmZXJlbmNlcywgV2Vic2l0ZVBvbGlj
aWVzQ3VzdG9tVXNlckFnZW50QXNTaXRlU3BlY2lmaWNRdWlya3MpCiB7CiAgICAgYXV0byBjb25m
aWd1cmF0aW9uID0gYWRvcHROUyhbW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRd
KTsKIApAQCAtMTM1OCwxMSArMTM1NiwxMSBAQCBAaW50ZXJmYWNlIEN1c3RvbU5hdmlnYXRvclBs
YXRmb3JtRGVsZWdhCiAKIEBpbXBsZW1lbnRhdGlvbiBDdXN0b21OYXZpZ2F0b3JQbGF0Zm9ybURl
bGVnYXRlCiAKLS0gKHZvaWQpX3dlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcgZGVjaWRlUG9s
aWN5Rm9yTmF2aWdhdGlvbkFjdGlvbjooV0tOYXZpZ2F0aW9uQWN0aW9uICopbmF2aWdhdGlvbkFj
dGlvbiB1c2VySW5mbzooaWQgPE5TU2VjdXJlQ29kaW5nPil1c2VySW5mbyBkZWNpc2lvbkhhbmRs
ZXI6KHZvaWQgKF4pKFdLTmF2aWdhdGlvbkFjdGlvblBvbGljeSwgX1dLV2Vic2l0ZVBvbGljaWVz
ICopKWRlY2lzaW9uSGFuZGxlcgorLSAodm9pZClfd2ViVmlldzooV0tXZWJWaWV3ICopd2ViVmll
dyBkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uOihXS05hdmlnYXRpb25BY3Rpb24gKilu
YXZpZ2F0aW9uQWN0aW9uIHVzZXJJbmZvOihpZCA8TlNTZWN1cmVDb2Rpbmc+KXVzZXJJbmZvIGRl
Y2lzaW9uSGFuZGxlcjoodm9pZCAoXikoV0tOYXZpZ2F0aW9uQWN0aW9uUG9saWN5LCBXS1dlYnBh
Z2VQcmVmZXJlbmNlcyAqKSlkZWNpc2lvbkhhbmRsZXIKIHsKLSAgICBfV0tXZWJzaXRlUG9saWNp
ZXMgKndlYnNpdGVQb2xpY2llcyA9IFtbW19XS1dlYnNpdGVQb2xpY2llcyBhbGxvY10gaW5pdF0g
YXV0b3JlbGVhc2VdOworICAgIFdLV2VicGFnZVByZWZlcmVuY2VzICp3ZWJzaXRlUG9saWNpZXMg
PSBbW1tXS1dlYnBhZ2VQcmVmZXJlbmNlcyBhbGxvY10gaW5pdF0gYXV0b3JlbGVhc2VdOwogICAg
IGlmIChuYXZpZ2F0aW9uQWN0aW9uLnRhcmdldEZyYW1lLm1haW5GcmFtZSkKLSAgICAgICAgW3dl
YnNpdGVQb2xpY2llcyBzZXRDdXN0b21OYXZpZ2F0b3JQbGF0Zm9ybTpAIlRlc3QgQ3VzdG9tIFBs
YXRmb3JtIl07CisgICAgICAgIFt3ZWJzaXRlUG9saWNpZXMgX3NldEN1c3RvbU5hdmlnYXRvclBs
YXRmb3JtOkAiVGVzdCBDdXN0b20gUGxhdGZvcm0iXTsKIAogICAgIGRlY2lzaW9uSGFuZGxlcihX
S05hdmlnYXRpb25BY3Rpb25Qb2xpY3lBbGxvdywgd2Vic2l0ZVBvbGljaWVzKTsKIH0KQEAgLTEz
NzQsNyArMTM3Miw3IEBAIC0gKHZvaWQpd2ViVmlldzooV0tXZWJWaWV3ICopd2ViVmlldyBkaWQK
IAogQGVuZAogCi1URVNUKFdlYktpdCwgV2Vic2l0ZVBvbGljaWVzQ3VzdG9tTmF2aWdhdG9yUGxh
dGZvcm0pCitURVNUKFdlYnBhZ2VQcmVmZXJlbmNlcywgV2Vic2l0ZVBvbGljaWVzQ3VzdG9tTmF2
aWdhdG9yUGxhdGZvcm0pCiB7CiAgICAgYXV0byBjb25maWd1cmF0aW9uID0gYWRvcHROUyhbW1dL
V2ViVmlld0NvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdKTsKICAgICAKQEAgLTE0MTcsMTAgKzE0
MTUsMTAgQEAgLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoRGV2aWNlT3JpZW50YXRpbwogICAgIHJl
dHVybiBzZWxmOwogfQogCi0tICh2b2lkKV93ZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3IGRl
Y2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb246KFdLTmF2aWdhdGlvbkFjdGlvbiAqKW5hdmln
YXRpb25BY3Rpb24gdXNlckluZm86KGlkIDxOU1NlY3VyZUNvZGluZz4pdXNlckluZm8gZGVjaXNp
b25IYW5kbGVyOih2b2lkICheKShXS05hdmlnYXRpb25BY3Rpb25Qb2xpY3ksIF9XS1dlYnNpdGVQ
b2xpY2llcyAqKSlkZWNpc2lvbkhhbmRsZXIKKy0gKHZvaWQpX3dlYlZpZXc6KFdLV2ViVmlldyAq
KXdlYlZpZXcgZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbjooV0tOYXZpZ2F0aW9uQWN0
aW9uICopbmF2aWdhdGlvbkFjdGlvbiBwcmVmZXJlbmNlczooV0tXZWJwYWdlUHJlZmVyZW5jZXMg
KilwcmVmZXJlbmNlcyB1c2VySW5mbzooaWQgPE5TU2VjdXJlQ29kaW5nPil1c2VySW5mbyBkZWNp
c2lvbkhhbmRsZXI6KHZvaWQgKF4pKFdLTmF2aWdhdGlvbkFjdGlvblBvbGljeSwgV0tXZWJwYWdl
UHJlZmVyZW5jZXMgKikpZGVjaXNpb25IYW5kbGVyCiB7Ci0gICAgX1dLV2Vic2l0ZVBvbGljaWVz
ICp3ZWJzaXRlUG9saWNpZXMgPSBbW1tfV0tXZWJzaXRlUG9saWNpZXMgYWxsb2NdIGluaXRdIGF1
dG9yZWxlYXNlXTsKLSAgICBbd2Vic2l0ZVBvbGljaWVzIHNldERldmljZU9yaWVudGF0aW9uQW5k
TW90aW9uQWNjZXNzUG9saWN5Ol9hY2Nlc3NQb2xpY3ldOworICAgIFdLV2VicGFnZVByZWZlcmVu
Y2VzICp3ZWJzaXRlUG9saWNpZXMgPSBbW1tXS1dlYnBhZ2VQcmVmZXJlbmNlcyBhbGxvY10gaW5p
dF0gYXV0b3JlbGVhc2VdOworICAgIFt3ZWJzaXRlUG9saWNpZXMgX3NldERldmljZU9yaWVudGF0
aW9uQW5kTW90aW9uQWNjZXNzUG9saWN5Ol9hY2Nlc3NQb2xpY3ldOwogCiAgICAgZGVjaXNpb25I
YW5kbGVyKFdLTmF2aWdhdGlvbkFjdGlvblBvbGljeUFsbG93LCB3ZWJzaXRlUG9saWNpZXMpOwog
fQpAQCAtMTQ5NCwxNyArMTQ5MiwxNyBAQCBzdGF0aWMgdm9pZCBydW5XZWJzaXRlUG9saWNpZXNE
ZXZpY2VPcmllCiAgICAgfQogfQogCi1URVNUKFdlYktpdCwgV2Vic2l0ZVBvbGljaWVzRGV2aWNl
T3JpZW50YXRpb25HcmFudEFjY2VzcykKK1RFU1QoV2VicGFnZVByZWZlcmVuY2VzLCBXZWJzaXRl
UG9saWNpZXNEZXZpY2VPcmllbnRhdGlvbkdyYW50QWNjZXNzKQogewogICAgIHJ1bldlYnNpdGVQ
b2xpY2llc0RldmljZU9yaWVudGF0aW9uRXZlbnRUZXN0KF9XS1dlYnNpdGVEZXZpY2VPcmllbnRh
dGlvbkFuZE1vdGlvbkFjY2Vzc1BvbGljeUdyYW50KTsKIH0KIAotVEVTVChXZWJLaXQsIFdlYnNp
dGVQb2xpY2llc0RldmljZU9yaWVudGF0aW9uRGVueUFjY2VzcykKK1RFU1QoV2VicGFnZVByZWZl
cmVuY2VzLCBXZWJzaXRlUG9saWNpZXNEZXZpY2VPcmllbnRhdGlvbkRlbnlBY2Nlc3MpCiB7CiAg
ICAgcnVuV2Vic2l0ZVBvbGljaWVzRGV2aWNlT3JpZW50YXRpb25FdmVudFRlc3QoX1dLV2Vic2l0
ZURldmljZU9yaWVudGF0aW9uQW5kTW90aW9uQWNjZXNzUG9saWN5RGVueSk7CiB9CiAKLVRFU1Qo
V2ViS2l0LCBXZWJzaXRlUG9saWNpZXNEZXZpY2VPcmllbnRhdGlvbkFza0FjY2VzcykKK1RFU1Qo
V2VicGFnZVByZWZlcmVuY2VzLCBXZWJzaXRlUG9saWNpZXNEZXZpY2VPcmllbnRhdGlvbkFza0Fj
Y2VzcykKIHsKICAgICBydW5XZWJzaXRlUG9saWNpZXNEZXZpY2VPcmllbnRhdGlvbkV2ZW50VGVz
dChfV0tXZWJzaXRlRGV2aWNlT3JpZW50YXRpb25BbmRNb3Rpb25BY2Nlc3NQb2xpY3lBc2spOwog
fQpAQCAtMTUyNCwxMSArMTUyMiwxMSBAQCAtICh2b2lkKXdlYlZpZXc6KFdLV2ViVmlldyAqKXdl
YlZpZXcgZGVjCiAgICAgZGVjaXNpb25IYW5kbGVyKFdLTmF2aWdhdGlvbkFjdGlvblBvbGljeUFs
bG93KTsKIH0KIAotLSAodm9pZClfd2ViVmlldzooV0tXZWJWaWV3ICopd2ViVmlldyBkZWNpZGVQ
b2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uOihXS05hdmlnYXRpb25BY3Rpb24gKiluYXZpZ2F0aW9u
QWN0aW9uIGRlY2lzaW9uSGFuZGxlcjoodm9pZCAoXikoV0tOYXZpZ2F0aW9uQWN0aW9uUG9saWN5
LCBfV0tXZWJzaXRlUG9saWNpZXMgKikpZGVjaXNpb25IYW5kbGVyCistICh2b2lkKV93ZWJWaWV3
OihXS1dlYlZpZXcgKil3ZWJWaWV3IGRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb246KFdL
TmF2aWdhdGlvbkFjdGlvbiAqKW5hdmlnYXRpb25BY3Rpb24gZGVjaXNpb25IYW5kbGVyOih2b2lk
ICheKShXS05hdmlnYXRpb25BY3Rpb25Qb2xpY3ksIFdLV2VicGFnZVByZWZlcmVuY2VzICopKWRl
Y2lzaW9uSGFuZGxlcgogewotICAgIF9XS1dlYnNpdGVQb2xpY2llcyAqd2Vic2l0ZVBvbGljaWVz
ID0gW1tbX1dLV2Vic2l0ZVBvbGljaWVzIGFsbG9jXSBpbml0XSBhdXRvcmVsZWFzZV07CisgICAg
V0tXZWJwYWdlUHJlZmVyZW5jZXMgKndlYnNpdGVQb2xpY2llcyA9IFtbW1dLV2VicGFnZVByZWZl
cmVuY2VzIGFsbG9jXSBpbml0XSBhdXRvcmVsZWFzZV07CiAgICAgaWYgKF9wb3BVcFBvbGljeUZv
clVSTCkKLSAgICAgICAgd2Vic2l0ZVBvbGljaWVzLnBvcFVwUG9saWN5ID0gX3BvcFVwUG9saWN5
Rm9yVVJMKG5hdmlnYXRpb25BY3Rpb24ucmVxdWVzdC5VUkwpOworICAgICAgICB3ZWJzaXRlUG9s
aWNpZXMuX3BvcFVwUG9saWN5ID0gX3BvcFVwUG9saWN5Rm9yVVJMKG5hdmlnYXRpb25BY3Rpb24u
cmVxdWVzdC5VUkwpOwogICAgIGRlY2lzaW9uSGFuZGxlcihXS05hdmlnYXRpb25BY3Rpb25Qb2xp
Y3lBbGxvdywgd2Vic2l0ZVBvbGljaWVzKTsKIH0KIApAQCAtMTUzOSw3ICsxNTM3LDcgQEAgLSAo
bnVsbGFibGUgV0tXZWJWaWV3ICopd2ViVmlldzooV0tXZWJWaQogCiBAZW5kCiAKLVRFU1QoV2Vi
S2l0LCBXZWJzaXRlUG9saWNpZXNQb3BVcCkKK1RFU1QoV2VicGFnZVByZWZlcmVuY2VzLCBXZWJz
aXRlUG9saWNpZXNQb3BVcCkKIHsKICAgICBhdXRvIGNvbmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtb
V0tXZWJWaWV3Q29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF0pOwogCkBAIC0xNTczLDE0ICsxNTcx
LDEyIEBAIEBpbnRlcmZhY2UgV2Vic2l0ZVBvbGljaWVzV2Vic2l0ZURhdGFTdG8KIAogQGltcGxl
bWVudGF0aW9uIFdlYnNpdGVQb2xpY2llc1dlYnNpdGVEYXRhU3RvcmVEZWxlZ2F0ZQogCi1JR05P
UkVfV0FSTklOR1NfQkVHSU4oImRlcHJlY2F0ZWQtaW1wbGVtZW50YXRpb25zIikKLS0gKHZvaWQp
X3dlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcgZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFj
dGlvbjooV0tOYXZpZ2F0aW9uQWN0aW9uICopbmF2aWdhdGlvbkFjdGlvbiBkZWNpc2lvbkhhbmRs
ZXI6KHZvaWQgKF4pKFdLTmF2aWdhdGlvbkFjdGlvblBvbGljeSwgX1dLV2Vic2l0ZVBvbGljaWVz
ICopKWRlY2lzaW9uSGFuZGxlcgotSUdOT1JFX1dBUk5JTkdTX0VORAorLSAodm9pZCl3ZWJWaWV3
OihXS1dlYlZpZXcgKil3ZWJWaWV3IGRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb246KFdL
TmF2aWdhdGlvbkFjdGlvbiAqKW5hdmlnYXRpb25BY3Rpb24gcHJlZmVyZW5jZXM6KFdLV2VicGFn
ZVByZWZlcmVuY2VzICopcHJlZmVyZW5jZXMgZGVjaXNpb25IYW5kbGVyOih2b2lkICheKShXS05h
dmlnYXRpb25BY3Rpb25Qb2xpY3ksIFdLV2VicGFnZVByZWZlcmVuY2VzICopKWRlY2lzaW9uSGFu
ZGxlcgogewogICAgIE5TVVJMICp1cmwgPSBuYXZpZ2F0aW9uQWN0aW9uLnJlcXVlc3QuVVJMOwog
ICAgIGlmIChbdXJsLnBhdGggaXNFcXVhbFRvU3RyaW5nOkAiL2ludmFsaWQiXSkgewotICAgICAg
ICBfV0tXZWJzaXRlUG9saWNpZXMgKndlYnNpdGVQb2xpY2llcyA9IFtbW19XS1dlYnNpdGVQb2xp
Y2llcyBhbGxvY10gaW5pdF0gYXV0b3JlbGVhc2VdOwotICAgICAgICB3ZWJzaXRlUG9saWNpZXMu
d2Vic2l0ZURhdGFTdG9yZSA9IFtbW1dLV2Vic2l0ZURhdGFTdG9yZSBhbGxvY10gX2luaXRXaXRo
Q29uZmlndXJhdGlvbjpbW1tfV0tXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbiBhbGxvY10g
aW5pdF0gYXV0b3JlbGVhc2VdXSBhdXRvcmVsZWFzZV07CisgICAgICAgIFdLV2VicGFnZVByZWZl
cmVuY2VzICp3ZWJzaXRlUG9saWNpZXMgPSBbW1tXS1dlYnBhZ2VQcmVmZXJlbmNlcyBhbGxvY10g
aW5pdF0gYXV0b3JlbGVhc2VdOworICAgICAgICB3ZWJzaXRlUG9saWNpZXMuX3dlYnNpdGVEYXRh
U3RvcmUgPSBbW1tXS1dlYnNpdGVEYXRhU3RvcmUgYWxsb2NdIF9pbml0V2l0aENvbmZpZ3VyYXRp
b246W1tbX1dLV2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdIGF1dG9y
ZWxlYXNlXV0gYXV0b3JlbGVhc2VdOwogCiAgICAgICAgIGJvb2wgc2F3RXhjZXB0aW9uID0gZmFs
c2U7CiAgICAgICAgIEB0cnkgewpAQCAtMTU5NSwxMyArMTU5MSwxMyBAQCBJR05PUkVfV0FSTklO
R1NfRU5ECiAgICAgaWYgKFt1cmwucGF0aCBpc0VxdWFsVG9TdHJpbmc6QCIvY2hlY2tTdG9yYWdl
Il0KICAgICAgICAgfHwgW3VybC5wYXRoIGlzRXF1YWxUb1N0cmluZzpAIi9jaGVja0Nvb2tpZXMi
XQogICAgICAgICB8fCBbdXJsLnBhdGggaXNFcXVhbFRvU3RyaW5nOkAiL21haW5GcmFtZSJdKSB7
Ci0gICAgICAgIF9XS1dlYnNpdGVQb2xpY2llcyAqd2Vic2l0ZVBvbGljaWVzID0gW1tbX1dLV2Vi
c2l0ZVBvbGljaWVzIGFsbG9jXSBpbml0XSBhdXRvcmVsZWFzZV07Ci0gICAgICAgIHdlYnNpdGVQ
b2xpY2llcy53ZWJzaXRlRGF0YVN0b3JlID0gW1dLV2Vic2l0ZURhdGFTdG9yZSBub25QZXJzaXN0
ZW50RGF0YVN0b3JlXTsKKyAgICAgICAgV0tXZWJwYWdlUHJlZmVyZW5jZXMgKndlYnNpdGVQb2xp
Y2llcyA9IFtbW1dLV2VicGFnZVByZWZlcmVuY2VzIGFsbG9jXSBpbml0XSBhdXRvcmVsZWFzZV07
CisgICAgICAgIHdlYnNpdGVQb2xpY2llcy5fd2Vic2l0ZURhdGFTdG9yZSA9IFtXS1dlYnNpdGVE
YXRhU3RvcmUgbm9uUGVyc2lzdGVudERhdGFTdG9yZV07CiAgICAgICAgIGRlY2lzaW9uSGFuZGxl
cihXS05hdmlnYXRpb25BY3Rpb25Qb2xpY3lBbGxvdywgd2Vic2l0ZVBvbGljaWVzKTsKICAgICB9
CiAgICAgaWYgKFt1cmwucGF0aCBpc0VxdWFsVG9TdHJpbmc6QCIvc3ViRnJhbWUiXSkgewotICAg
ICAgICBfV0tXZWJzaXRlUG9saWNpZXMgKndlYnNpdGVQb2xpY2llcyA9IFtbW19XS1dlYnNpdGVQ
b2xpY2llcyBhbGxvY10gaW5pdF0gYXV0b3JlbGVhc2VdOwotICAgICAgICB3ZWJzaXRlUG9saWNp
ZXMud2Vic2l0ZURhdGFTdG9yZSA9IFtXS1dlYnNpdGVEYXRhU3RvcmUgbm9uUGVyc2lzdGVudERh
dGFTdG9yZV07CisgICAgICAgIFdLV2VicGFnZVByZWZlcmVuY2VzICp3ZWJzaXRlUG9saWNpZXMg
PSBbW1tXS1dlYnBhZ2VQcmVmZXJlbmNlcyBhbGxvY10gaW5pdF0gYXV0b3JlbGVhc2VdOworICAg
ICAgICB3ZWJzaXRlUG9saWNpZXMuX3dlYnNpdGVEYXRhU3RvcmUgPSBbV0tXZWJzaXRlRGF0YVN0
b3JlIG5vblBlcnNpc3RlbnREYXRhU3RvcmVdOwogICAgICAgICBib29sIHNhd0V4Y2VwdGlvbiA9
IGZhbHNlOwogICAgICAgICBAdHJ5IHsKICAgICAgICAgICAgIGRlY2lzaW9uSGFuZGxlcihXS05h
dmlnYXRpb25BY3Rpb25Qb2xpY3lDYW5jZWwsIHdlYnNpdGVQb2xpY2llcyk7CkBAIC0xNjQ5LDE0
ICsxNjQ1LDE0IEBAIFJldGFpblB0cjxXS1dlYlZpZXc+IHdlYnNpdGVEYXRhU3RvcmVUZXMKICAg
ICByZXR1cm4gd2ViVmlldzsKIH0KIAotVEVTVChXZWJLaXQsIFVwZGF0ZVdlYnNpdGVQb2xpY2ll
c0ludmFsaWQpCitURVNUKFdlYnBhZ2VQcmVmZXJlbmNlcywgVXBkYXRlV2Vic2l0ZVBvbGljaWVz
SW52YWxpZCkKIHsKICAgICBhdXRvIHdlYlZpZXcgPSB3ZWJzaXRlRGF0YVN0b3JlVGVzdFdlYlZp
ZXcoKTsKLSAgICBhdXRvIHBvbGljaWVzID0gYWRvcHROUyhbW19XS1dlYnNpdGVQb2xpY2llcyBh
bGxvY10gaW5pdF0pOwotICAgIFtwb2xpY2llcyBzZXRXZWJzaXRlRGF0YVN0b3JlOltXS1dlYnNp
dGVEYXRhU3RvcmUgbm9uUGVyc2lzdGVudERhdGFTdG9yZV1dOworICAgIGF1dG8gcG9saWNpZXMg
PSBhZG9wdE5TKFtbV0tXZWJwYWdlUHJlZmVyZW5jZXMgYWxsb2NdIGluaXRdKTsKKyAgICBbcG9s
aWNpZXMgX3NldFdlYnNpdGVEYXRhU3RvcmU6W1dLV2Vic2l0ZURhdGFTdG9yZSBub25QZXJzaXN0
ZW50RGF0YVN0b3JlXV07CiAgICAgYm9vbCBzYXdFeGNlcHRpb24gPSBmYWxzZTsKICAgICBAdHJ5
IHsKLSAgICAgICAgW3dlYlZpZXcgX3VwZGF0ZVdlYnNpdGVQb2xpY2llczpwb2xpY2llcy5nZXQo
KV07CisgICAgICAgIFt3ZWJWaWV3IF91cGRhdGVXZWJwYWdlUHJlZmVyZW5jZXM6cG9saWNpZXMu
Z2V0KCldOwogICAgIH0gQGNhdGNoIChOU0V4Y2VwdGlvbiAqZXhjZXB0aW9uKSB7CiAgICAgICAg
IHNhd0V4Y2VwdGlvbiA9IHRydWU7CiAgICAgfQpAQCAtMTY3MCw3ICsxNjY2LDcgQEAgVEVTVChX
ZWJLaXQsIFVwZGF0ZVdlYnNpdGVQb2xpY2llc0ludmFsaQogICAgIFRlc3RXZWJLaXRBUEk6OlV0
aWw6OnJ1bigmZG9uZSk7CiB9CiAKLVRFU1QoV2ViS2l0LCBXZWJzaXRlUG9saWNpZXNEYXRhU3Rv
cmUpCitURVNUKFdlYnBhZ2VQcmVmZXJlbmNlcywgV2Vic2l0ZVBvbGljaWVzRGF0YVN0b3JlKQog
ewogICAgIGF1dG8gY29va2llV2ViVmlldyA9IHdlYnNpdGVEYXRhU3RvcmVUZXN0V2ViVmlldygp
OwogICAgIE5TU3RyaW5nICphbGVydE9sZENvb2tpZSA9IEAiPHNjcmlwdD52YXIgb2xkQ29va2ll
ID0gZG9jdW1lbnQuY29va2llOyBkb2N1bWVudC5jb29raWUgPSAna2V5PXZhbHVlJzsgYWxlcnQo
J29sZCB2YWx1ZTogPCcgKyBvbGRDb29raWUgKyAnPicpOzwvc2NyaXB0PiI7Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>