<?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>164254</bug_id>
          
          <creation_ts>2016-10-31 16:59:56 -0700</creation_ts>
          <short_desc>Rename ViewState to ActivityState</short_desc>
          <delta_ts>2016-11-01 09:00:35 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Page Loading</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>NEW</bug_status>
          <resolution></resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Gavin Barraclough">barraclough</reporter>
          <assigned_to name="Gavin Barraclough">barraclough</assigned_to>
          <cc>beidson</cc>
    
    <cc>cdumez</cc>
    
    <cc>commit-queue</cc>
    
    <cc>ggaren</cc>
    
    <cc>kling</cc>
    
    <cc>koivisto</cc>
    
    <cc>sam</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1246713</commentid>
    <comment_count>0</comment_count>
    <who name="Gavin Barraclough">barraclough</who>
    <bug_when>2016-10-31 16:59:56 -0700</bug_when>
    <thetext>We plan to add a couple more flags to ViewState that aren&apos;t directly related to the view itself – whether there is an ongoing page load, and whether whether there is audio playback. This will allow viewState (now activityState) to fully drive throttling decisions. Renaming this bitfield accordingly.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1246716</commentid>
    <comment_count>1</comment_count>
      <attachid>293497</attachid>
    <who name="Gavin Barraclough">barraclough</who>
    <bug_when>2016-10-31 17:01:46 -0700</bug_when>
    <thetext>Created attachment 293497
Fix</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1246727</commentid>
    <comment_count>2</comment_count>
      <attachid>293499</attachid>
    <who name="Gavin Barraclough">barraclough</who>
    <bug_when>2016-10-31 17:11:12 -0700</bug_when>
    <thetext>Created attachment 293499
Fix</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1246731</commentid>
    <comment_count>3</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-10-31 17:13:44 -0700</bug_when>
    <thetext>Attachment 293499 did not pass style-queue:


ERROR: Source/WebCore/page/Page.h:37:  Alphabetical sorting problem.  [build/include_order] [4]
ERROR: Source/WebKit2/UIProcess/Cocoa/WebViewImpl.mm:87:  Alphabetical sorting problem.  [build/include_order] [4]
ERROR: Source/WebKit2/Shared/WebPageCreationParameters.h:43:  Alphabetical sorting problem.  [build/include_order] [4]
ERROR: Source/WebCore/page/FocusController.h:31:  Alphabetical sorting problem.  [build/include_order] [4]
ERROR: Source/WebCore/page/Page.cpp:97:  Alphabetical sorting problem.  [build/include_order] [4]
ERROR: Source/WebKit2/UIProcess/API/gtk/WebKitWebViewBase.cpp:41:  Alphabetical sorting problem.  [build/include_order] [4]
ERROR: Source/WebKit2/UIProcess/efl/WebView.cpp:41:  Alphabetical sorting problem.  [build/include_order] [4]
ERROR: Source/WebKit2/UIProcess/WebPageProxy.h:76:  Alphabetical sorting problem.  [build/include_order] [4]
ERROR: Source/WebKit2/WebProcess/Plugins/PluginView.h:42:  Alphabetical sorting problem.  [build/include_order] [4]
ERROR: Source/WebKit2/WebProcess/WebPage/DrawingArea.h:36:  Alphabetical sorting problem.  [build/include_order] [4]
ERROR: Source/WebCore/page/PageThrottler.h:31:  Alphabetical sorting problem.  [build/include_order] [4]
ERROR: Source/WebKit2/WebProcess/WebPage/WebPage.h:71:  Alphabetical sorting problem.  [build/include_order] [4]
ERROR: Source/WebCore/Modules/geolocation/GeolocationController.h:33:  Alphabetical sorting problem.  [build/include_order] [4]
Total errors found: 13 in 42 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1246735</commentid>
    <comment_count>4</comment_count>
      <attachid>293501</attachid>
    <who name="Gavin Barraclough">barraclough</who>
    <bug_when>2016-10-31 17:21:01 -0700</bug_when>
    <thetext>Created attachment 293501
Fix</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1246736</commentid>
    <comment_count>5</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-10-31 17:23:38 -0700</bug_when>
    <thetext>Attachment 293501 did not pass style-queue:


ERROR: Source/WebCore/page/PageThrottler.h:30:  Alphabetical sorting problem.  [build/include_order] [4]
Total errors found: 1 in 42 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1246737</commentid>
    <comment_count>6</comment_count>
      <attachid>293502</attachid>
    <who name="Gavin Barraclough">barraclough</who>
    <bug_when>2016-10-31 17:25:08 -0700</bug_when>
    <thetext>Created attachment 293502
Fix</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1246738</commentid>
    <comment_count>7</comment_count>
      <attachid>293503</attachid>
    <who name="Gavin Barraclough">barraclough</who>
    <bug_when>2016-10-31 17:25:50 -0700</bug_when>
    <thetext>Created attachment 293503
Fix</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>293497</attachid>
            <date>2016-10-31 17:01:46 -0700</date>
            <delta_ts>2016-10-31 17:11:12 -0700</delta_ts>
            <desc>Fix</desc>
            <filename>164254.1.patch</filename>
            <type>text/plain</type>
            <size>117869</size>
            <attacher name="Gavin Barraclough">barraclough</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIwODE3NykKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDU1IEBACisyMDE2LTEwLTMxICBHYXZpbiBC
YXJyYWNsb3VnaCAgPGJhcnJhY2xvdWdoQGFwcGxlLmNvbT4KKworICAgICAgICBSZW5hbWUgVmll
d1N0YXRlIHRvIEFjdGl2aXR5U3RhdGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTE2NDI1NAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIFdlIHBsYW4gdG8gYWRkIGEgY291cGxlIG1vcmUgZmxhZ3MgdG8gVmll
d1N0YXRlIHRoYXQgYXJlbid0IGRpcmVjdGx5IHJlbGF0ZWQgdG8gdGhlIHZpZXcKKyAgICAgICAg
aXRzZWxmIC0gd2hldGhlciB0aGVyZSBpcyBhbiBvbmdvaW5nIHBhZ2UgbG9hZCwgYW5kIHdoZXRo
ZXIgd2hldGhlciB0aGVyZSBpcyBhdWRpbyBwbGF5YmFjay4KKyAgICAgICAgVGhpcyB3aWxsIGFs
bG93IHZpZXdTdGF0ZSAobm93IGFjdGl2aXR5U3RhdGUpIHRvIGZ1bGx5IGRyaXZlIHRocm90dGxp
bmcgZGVjaXNpb25zLgorCisgICAgICAgIFJlbmFtaW5nIHRoaXMgYml0ZmllbGQgYWNjb3JkaW5n
bHkuCisgICAgICAgICogTW9kdWxlcy9nZW9sb2NhdGlvbi9HZW9sb2NhdGlvbkNvbnRyb2xsZXIu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6R2VvbG9jYXRpb25Db250cm9sbGVyOjpHZW9sb2NhdGlv
bkNvbnRyb2xsZXIpOgorICAgICAgICAoV2ViQ29yZTo6R2VvbG9jYXRpb25Db250cm9sbGVyOjp+
R2VvbG9jYXRpb25Db250cm9sbGVyKToKKyAgICAgICAgKFdlYkNvcmU6Okdlb2xvY2F0aW9uQ29u
dHJvbGxlcjo6YWN0aXZpdHlTdGF0ZURpZENoYW5nZSk6CisgICAgICAgIChXZWJDb3JlOjpHZW9s
b2NhdGlvbkNvbnRyb2xsZXI6OnZpZXdTdGF0ZURpZENoYW5nZSk6IERlbGV0ZWQuCisgICAgICAg
ICogTW9kdWxlcy9nZW9sb2NhdGlvbi9HZW9sb2NhdGlvbkNvbnRyb2xsZXIuaDoKKyAgICAgICAg
KiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogcGFnZS9BY3Rp
dml0eVN0YXRlLmg6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvVmlld1N0YXRlLmgu
CisgICAgICAgICogcGFnZS9BY3Rpdml0eVN0YXRlQ2hhbmdlT2JzZXJ2ZXIuaDogQ29waWVkIGZy
b20gU291cmNlL1dlYkNvcmUvcGFnZS9WaWV3U3RhdGVDaGFuZ2VPYnNlcnZlci5oLgorICAgICAg
ICAoV2ViQ29yZTo6QWN0aXZpdHlTdGF0ZUNoYW5nZU9ic2VydmVyOjp+QWN0aXZpdHlTdGF0ZUNo
YW5nZU9ic2VydmVyKToKKyAgICAgICAgKFdlYkNvcmU6OlZpZXdTdGF0ZUNoYW5nZU9ic2VydmVy
Ojp+Vmlld1N0YXRlQ2hhbmdlT2JzZXJ2ZXIpOiBEZWxldGVkLgorICAgICAgICAqIHBhZ2UvRm9j
dXNDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZvY3VzQ29udHJvbGxlcjo6Rm9j
dXNDb250cm9sbGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkZvY3VzQ29udHJvbGxlcjo6c2V0Rm9j
dXNlZCk6CisgICAgICAgIChXZWJDb3JlOjpGb2N1c0NvbnRyb2xsZXI6OnNldEFjdGl2aXR5U3Rh
dGUpOgorICAgICAgICAoV2ViQ29yZTo6Rm9jdXNDb250cm9sbGVyOjpzZXRBY3RpdmUpOgorICAg
ICAgICAoV2ViQ29yZTo6Rm9jdXNDb250cm9sbGVyOjpzZXRWaWV3U3RhdGUpOiBEZWxldGVkLgor
ICAgICAgICAqIHBhZ2UvRm9jdXNDb250cm9sbGVyLmg6CisgICAgICAgIChXZWJDb3JlOjpGb2N1
c0NvbnRyb2xsZXI6OmlzQWN0aXZlKToKKyAgICAgICAgKFdlYkNvcmU6OkZvY3VzQ29udHJvbGxl
cjo6aXNGb2N1c2VkKToKKyAgICAgICAgKFdlYkNvcmU6OkZvY3VzQ29udHJvbGxlcjo6Y29udGVu
dElzVmlzaWJsZSk6CisgICAgICAgICogcGFnZS9QYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlBhZ2U6OlBhZ2UpOgorICAgICAgICAoV2ViQ29yZTo6UGFnZTo6c2V0SXNJbldpbmRvdyk6Cisg
ICAgICAgIChXZWJDb3JlOjpQYWdlOjphZGRBY3Rpdml0eVN0YXRlQ2hhbmdlT2JzZXJ2ZXIpOgor
ICAgICAgICAoV2ViQ29yZTo6UGFnZTo6cmVtb3ZlQWN0aXZpdHlTdGF0ZUNoYW5nZU9ic2VydmVy
KToKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2U6OnVwZGF0ZVRpbWVyVGhyb3R0bGluZ1N0YXRlKToK
KyAgICAgICAgKFdlYkNvcmU6OlBhZ2U6OnNldEFjdGl2aXR5U3RhdGUpOgorICAgICAgICAoV2Vi
Q29yZTo6UGFnZTo6aXNWaXNpYmxlQW5kQWN0aXZlKToKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2U6
OnNldElzVmlzaWJsZSk6CisgICAgICAgIChXZWJDb3JlOjpQYWdlOjphZGRWaWV3U3RhdGVDaGFu
Z2VPYnNlcnZlcik6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpQYWdlOjpyZW1vdmVWaWV3
U3RhdGVDaGFuZ2VPYnNlcnZlcik6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpQYWdlOjpz
ZXRWaWV3U3RhdGUpOiBEZWxldGVkLgorICAgICAgICAqIHBhZ2UvUGFnZS5oOgorICAgICAgICAo
V2ViQ29yZTo6UGFnZTo6aXNWaXNpYmxlKToKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2U6OmlzSW5X
aW5kb3cpOgorICAgICAgICAqIHBhZ2UvUGFnZVRocm90dGxlci5oOgorICAgICAgICAqIHBhZ2Uv
Vmlld1N0YXRlLmg6IFJlbW92ZWQuCisgICAgICAgICogcGFnZS9WaWV3U3RhdGVDaGFuZ2VPYnNl
cnZlci5oOiBSZW1vdmVkLgorCiAyMDE2LTEwLTMxICBKb3NlcGggUGVjb3Jhcm8gIDxwZWNvcmFy
b0BhcHBsZS5jb20+CiAKICAgICAgICAgV2ViIEluc3BlY3RvcjogUHJvdmlkZSBhbiBvcHBvcnR1
bml0eSB0byBjbGVhciBTY3JpcHRWYWx1ZXMgYXNzb2NpYXRlZCB3aXRoIGRlYnVnZ2VkIHRhcmdl
dApJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy9nZW9sb2NhdGlvbi9HZW9sb2NhdGlvbkNv
bnRyb2xsZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvZ2VvbG9j
YXRpb24vR2VvbG9jYXRpb25Db250cm9sbGVyLmNwcAkocmV2aXNpb24gMjA4MTc3KQorKysgU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9nZW9sb2NhdGlvbi9HZW9sb2NhdGlvbkNvbnRyb2xsZXIuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0zOCwxNCArMzgsMTQgQEAgR2VvbG9jYXRpb25Db250cm9sbGVy
OjpHZW9sb2NhdGlvbkNvbnRybwogICAgIDogbV9wYWdlKHBhZ2UpCiAgICAgLCBtX2NsaWVudChj
bGllbnQpCiB7Ci0gICAgbV9wYWdlLmFkZFZpZXdTdGF0ZUNoYW5nZU9ic2VydmVyKCp0aGlzKTsK
KyAgICBtX3BhZ2UuYWRkQWN0aXZpdHlTdGF0ZUNoYW5nZU9ic2VydmVyKCp0aGlzKTsKIH0KIAog
R2VvbG9jYXRpb25Db250cm9sbGVyOjp+R2VvbG9jYXRpb25Db250cm9sbGVyKCkKIHsKICAgICBB
U1NFUlQobV9vYnNlcnZlcnMuaXNFbXB0eSgpKTsKIAotICAgIC8vIE5PVEU6IFdlIGRvbid0IGhh
dmUgdG8gcmVtb3ZlIG91cnNlbHZlcyBmcm9tIHBhZ2UncyBWaWV3U3RhdGVDaGFuZ2VPYnNlcnZl
ciBzZXQsIHNpbmNlCisgICAgLy8gTk9URTogV2UgZG9uJ3QgaGF2ZSB0byByZW1vdmUgb3Vyc2Vs
dmVzIGZyb20gcGFnZSdzIEFjdGl2aXR5U3RhdGVDaGFuZ2VPYnNlcnZlciBzZXQsIHNpbmNlCiAg
ICAgLy8gd2UgYXJlIHN1cHBsZW1lbnQgb2YgdGhlIFBhZ2UsIGFuZCBvdXIgZGVzdHJ1Y3RvciBn
ZXR0aW5nIGNhbGxlZCBtZWFucyB0aGUgcGFnZSBpcyBiZWluZwogICAgIC8vIHRvcm4gZG93bi4K
IApAQCAtMTI0LDEyICsxMjQsMTIgQEAgR2VvbG9jYXRpb25Qb3NpdGlvbiogR2VvbG9jYXRpb25D
b250cm9sbAogICAgIHJldHVybiBtX2NsaWVudC5sYXN0UG9zaXRpb24oKTsKIH0KIAotdm9pZCBH
ZW9sb2NhdGlvbkNvbnRyb2xsZXI6OnZpZXdTdGF0ZURpZENoYW5nZShWaWV3U3RhdGU6OkZsYWdz
IG9sZFZpZXdTdGF0ZSwgVmlld1N0YXRlOjpGbGFncyBuZXdWaWV3U3RhdGUpCit2b2lkIEdlb2xv
Y2F0aW9uQ29udHJvbGxlcjo6YWN0aXZpdHlTdGF0ZURpZENoYW5nZShBY3Rpdml0eVN0YXRlOjpG
bGFncyBvbGRBY3Rpdml0eVN0YXRlLCBBY3Rpdml0eVN0YXRlOjpGbGFncyBuZXdBY3Rpdml0eVN0
YXRlKQogewogICAgIC8vIFRvZ2dsZSBHUFMgYmFzZWQgb24gcGFnZSB2aXNpYmlsaXR5IHRvIHNh
dmUgYmF0dGVyeS4KLSAgICBWaWV3U3RhdGU6OkZsYWdzIGNoYW5nZWQgPSBvbGRWaWV3U3RhdGUg
XiBuZXdWaWV3U3RhdGU7Ci0gICAgaWYgKGNoYW5nZWQgJiBWaWV3U3RhdGU6OklzVmlzaWJsZSAm
JiAhbV9vYnNlcnZlcnMuaXNFbXB0eSgpKSB7Ci0gICAgICAgIGlmIChuZXdWaWV3U3RhdGUgJiBW
aWV3U3RhdGU6OklzVmlzaWJsZSkKKyAgICBBY3Rpdml0eVN0YXRlOjpGbGFncyBjaGFuZ2VkID0g
b2xkQWN0aXZpdHlTdGF0ZSBeIG5ld0FjdGl2aXR5U3RhdGU7CisgICAgaWYgKGNoYW5nZWQgJiBB
Y3Rpdml0eVN0YXRlOjpJc1Zpc2libGUgJiYgIW1fb2JzZXJ2ZXJzLmlzRW1wdHkoKSkgeworICAg
ICAgICBpZiAobmV3QWN0aXZpdHlTdGF0ZSAmIEFjdGl2aXR5U3RhdGU6OklzVmlzaWJsZSkKICAg
ICAgICAgICAgIG1fY2xpZW50LnN0YXJ0VXBkYXRpbmcoKTsKICAgICAgICAgZWxzZQogICAgICAg
ICAgICAgbV9jbGllbnQuc3RvcFVwZGF0aW5nKCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2dlb2xvY2F0aW9uL0dlb2xvY2F0aW9uQ29udHJvbGxlci5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL01vZHVsZXMvZ2VvbG9jYXRpb24vR2VvbG9jYXRpb25Db250cm9sbGVyLmgJ
KHJldmlzaW9uIDIwODE3NykKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvZ2VvbG9jYXRpb24v
R2VvbG9jYXRpb25Db250cm9sbGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTMwLDcgKzMwLDcgQEAK
IAogI2luY2x1ZGUgIkdlb2xvY2F0aW9uLmgiCiAjaW5jbHVkZSAiUGFnZS5oIgotI2luY2x1ZGUg
IlZpZXdTdGF0ZUNoYW5nZU9ic2VydmVyLmgiCisjaW5jbHVkZSAiQWN0aXZpdHlTdGF0ZUNoYW5n
ZU9ic2VydmVyLmgiCiAjaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KICNpbmNsdWRlIDx3dGYvTm9u
Y29weWFibGUuaD4KICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CkBAIC00Miw3ICs0Miw3IEBAIGNs
YXNzIEdlb2xvY2F0aW9uRXJyb3I7CiBjbGFzcyBHZW9sb2NhdGlvblBvc2l0aW9uOwogY2xhc3Mg
UGFnZTsKIAotY2xhc3MgR2VvbG9jYXRpb25Db250cm9sbGVyIDogcHVibGljIFN1cHBsZW1lbnQ8
UGFnZT4sIHByaXZhdGUgVmlld1N0YXRlQ2hhbmdlT2JzZXJ2ZXIgeworY2xhc3MgR2VvbG9jYXRp
b25Db250cm9sbGVyIDogcHVibGljIFN1cHBsZW1lbnQ8UGFnZT4sIHByaXZhdGUgQWN0aXZpdHlT
dGF0ZUNoYW5nZU9ic2VydmVyIHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKICAgICBX
VEZfTUFLRV9OT05DT1BZQUJMRShHZW9sb2NhdGlvbkNvbnRyb2xsZXIpOwogcHVibGljOgpAQCAt
NjksNyArNjksNyBAQCBwcml2YXRlOgogICAgIFBhZ2UmIG1fcGFnZTsKICAgICBHZW9sb2NhdGlv
bkNsaWVudCYgbV9jbGllbnQ7CiAKLSAgICB2b2lkIHZpZXdTdGF0ZURpZENoYW5nZShWaWV3U3Rh
dGU6OkZsYWdzIG9sZFZpZXdTdGF0ZSwgVmlld1N0YXRlOjpGbGFncyBuZXdWaWV3U3RhdGUpIG92
ZXJyaWRlOworICAgIHZvaWQgYWN0aXZpdHlTdGF0ZURpZENoYW5nZShBY3Rpdml0eVN0YXRlOjpG
bGFncyBvbGRBY3Rpdml0eVN0YXRlLCBBY3Rpdml0eVN0YXRlOjpGbGFncyBuZXdBY3Rpdml0eVN0
YXRlKSBvdmVycmlkZTsKIAogICAgIFJlZlB0cjxHZW9sb2NhdGlvblBvc2l0aW9uPiBtX2xhc3RQ
b3NpdGlvbjsKIApJbmRleDogU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gMjA4MTc3KQorKysgU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0yNjcxLDYg
KzI2NzEsOCBAQAogCQk3MjRFRDMyQzFBM0E3RTU0MDBGNUYxM0MgLyogRVhUQmxlbmRNaW5NYXgu
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzI0RUQz
MjkxQTNBN0U1NDAwRjVGMTNDIC8qIEVYVEJsZW5kTWluTWF4LmNwcCAqLzsgfTsKIAkJNzI0RUQz
MzExQTNBOEIyMzAwRjVGMTNDIC8qIEpTRVhUQmxlbmRNaW5NYXguY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzI0RUQzMkYxQTNBOEIyMzAwRjVGMTND
IC8qIEpTRVhUQmxlbmRNaW5NYXguY3BwICovOyB9OwogCQk3MjRFRDMzMjFBM0E4QjIzMDBGNUYx
M0MgLyogSlNFWFRCbGVuZE1pbk1heC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNzI0RUQzMzAxQTNBOEIyMzAwRjVGMTNDIC8qIEpTRVhUQmxlbmRNaW5N
YXguaCAqLzsgfTsKKwkJNzI0RUU1NTAxREM4MEQ3RjAwQTkxRkZCIC8qIEFjdGl2aXR5U3RhdGUu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDcyNEVFNTRF
MURDN0YyNUIwMEE5MUZGQiAvKiBBY3Rpdml0eVN0YXRlLmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJNzI0RUU1NTExREM4MEQ4NDAwQTkxRkZCIC8q
IEFjdGl2aXR5U3RhdGVDaGFuZ2VPYnNlcnZlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNzI0RUU1NEYxREM3RjI1QjAwQTkxRkZCIC8qIEFjdGl2aXR5
U3RhdGVDaGFuZ2VPYnNlcnZlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CiAJCTcyN0FGRUQ0MUEyRUE2QUUwMDA0NDJFOCAvKiBFWFRzUkdCLmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDcyN0FGRUQxMUEy
RUE2QTAwMDA0NDJFOCAvKiBFWFRzUkdCLmNwcCAqLzsgfTsKIAkJNzJFNDE3NjMxQTJFOEQyRjAw
NEM1NjJBIC8qIEpTRVhUc1JHQi5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA3MkU0MTc2MTFBMkU4RDJGMDA0QzU2MkEgLyogSlNFWFRzUkdCLmNwcCAq
LzsgfTsKIAkJNzJGMUFEQTIxQTM5MDREQzAwMDE0RTE4IC8qIEVYVEZyYWdEZXB0aC5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3MkYxQUQ5RjFBMzkw
NEMzMDAwMTRFMTggLyogRVhURnJhZ0RlcHRoLmNwcCAqLzsgfTsKQEAgLTI4MzYsNyArMjgzOCw2
IEBACiAJCTdDRDBCQTA1MUI4Rjc5QzkwMDVDRUJCRSAvKiBBY3RpdmVET01DYWxsYmFja01pY3Jv
dGFzay5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0NE
MEJBMDMxQjhGNzlDOTAwNUNFQkJFIC8qIEFjdGl2ZURPTUNhbGxiYWNrTWljcm90YXNrLmggKi87
IH07CiAJCTdDRDQ5NENDMUE4NkVCMUQwMDBBODdFQyAvKiBSZW5kZXJBdHRhY2htZW50LmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdDRDQ5NENBMUE4
NkVCMUQwMDBBODdFQyAvKiBSZW5kZXJBdHRhY2htZW50LmNwcCAqLzsgfTsKIAkJN0NENDk0Q0Qx
QTg2RUIxRDAwMEE4N0VDIC8qIFJlbmRlckF0dGFjaG1lbnQuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdDRDQ5NENCMUE4NkVCMUQwMDBBODdFQyAvKiBS
ZW5kZXJBdHRhY2htZW50LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKLQkJN0NERUVFMUUxOTc2MTBENzAwRTM1MkNEIC8qIFZpZXdTdGF0ZUNoYW5nZU9i
c2VydmVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3
Q0RFRUUxRDE5NzYxMEQ3MDBFMzUyQ0QgLyogVmlld1N0YXRlQ2hhbmdlT2JzZXJ2ZXIuaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk3Q0U2ODM0NDE5
MjE0M0E4MDBGNEQ5MjggLyogVXNlck1lc3NhZ2VIYW5kbGVyRGVzY3JpcHRvci5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3Q0U2ODM0MjE5MjE0M0E4
MDBGNEQ5MjggLyogVXNlck1lc3NhZ2VIYW5kbGVyRGVzY3JpcHRvci5jcHAgKi87IH07CiAJCTdD
RTY4MzQ1MTkyMTQzQTgwMEY0RDkyOCAvKiBVc2VyTWVzc2FnZUhhbmRsZXJEZXNjcmlwdG9yLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3Q0U2ODM0MzE5
MjE0M0E4MDBGNEQ5MjggLyogVXNlck1lc3NhZ2VIYW5kbGVyRGVzY3JpcHRvci5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTdDRTY4MzQ3MTkyMTgy
MTUwMEY0RDkyOCAvKiBVc2VyTWVzc2FnZUhhbmRsZXJEZXNjcmlwdG9yVHlwZXMuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdDRTY4MzQ2MTkyMTgyMTUw
MEY0RDkyOCAvKiBVc2VyTWVzc2FnZUhhbmRsZXJEZXNjcmlwdG9yVHlwZXMuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtMzExMCw3ICszMTExLDYg
QEAKIAkJODYyRjEyQTAxOEMxREQwMjAwNUM1NEFGIC8qIEh5c3RlcmVzaXNBY3Rpdml0eS5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODYyRjEyOUYxOEMx
RENFNDAwNUM1NEFGIC8qIEh5c3RlcmVzaXNBY3Rpdml0eS5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTg2NTEyRURFMTU0QTJBRUYwMEE5MDQyNiAv
KiBQZXJmb3JtYW5jZVJlc291cmNlVGltaW5nLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2NTEyRURCMTU0QTJBRUUwMEE5MDQyNiAvKiBQZXJmb3Jt
YW5jZVJlc291cmNlVGltaW5nLmNwcCAqLzsgfTsKIAkJODY1MTJFREYxNTRBMkFFRjAwQTkwNDI2
IC8qIFBlcmZvcm1hbmNlUmVzb3VyY2VUaW1pbmcuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2NTEyRURDMTU0QTJBRUYwMEE5MDQyNiAvKiBQZXJmb3Jt
YW5jZVJlc291cmNlVGltaW5nLmggKi87IH07Ci0JCTg2NzhEMEJCMTg3OEU4OTEwMDNBQkRFNiAv
KiBWaWV3U3RhdGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDg2NzhEMEJBMTg3OEU4MTAwMDNBQkRFNiAvKiBWaWV3U3RhdGUuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk4NjgxNjBENDE4NzY2QTBBMDAy
MUU3OUQgLyogVXNlckFjdGl2aXR5LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDg2ODE2MEQxMTg3NjY5QzQwMDIxRTc5RCAvKiBVc2VyQWN0aXZpdHku
Y3BwICovOyB9OwogCQk4NjgxNjBENTE4NzY2QTBFMDAyMUU3OUQgLyogVXNlckFjdGl2aXR5TWFj
Lm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODY4MTYw
RDMxODc2NjlFNzAwMjFFNzlEIC8qIFVzZXJBY3Rpdml0eU1hYy5tbSAqLzsgfTsKIAkJODY4MTYw
RDYxODc2NkExMzAwMjFFNzlEIC8qIFVzZXJBY3Rpdml0eS5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODY4MTYwRDIxODc2NjlDNDAwMjFFNzlEIC8qIFVz
ZXJBY3Rpdml0eS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CkBAIC05OTgwLDYgKzk5ODAsOCBAQAogCQk3MjRFRDMyQjFBM0E3RTU0MDBGNUYxM0MgLyog
RVhUQmxlbmRNaW5NYXguaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IEVYVEJsZW5kTWluTWF4
LmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzI0RUQzMkYxQTNBOEIyMzAwRjVG
MTNDIC8qIEpTRVhUQmxlbmRNaW5NYXguY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gSlNFWFRCbGVuZE1pbk1heC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTcyNEVEMzMwMUEzQThCMjMwMEY1RjEzQyAvKiBKU0VYVEJsZW5kTWluTWF4LmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTRVhUQmxlbmRNaW5NYXguaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNzI0RUU1NEUxREM3RjI1QjAwQTkxRkZCIC8qIEFjdGl2aXR5
U3RhdGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQWN0aXZpdHlTdGF0ZS5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3MjRFRTU0RjFEQzdGMjVCMDBBOTFGRkIg
LyogQWN0aXZpdHlTdGF0ZUNoYW5nZU9ic2VydmVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IEFjdGl2aXR5U3RhdGVDaGFuZ2VPYnNlcnZlci5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk3MjdBRkVEMTFBMkVBNkEwMDAwNDQyRTggLyogRVhUc1JHQi5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBFWFRzUkdCLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzI3QUZFRDIxQTJFQTZBMDAwMDQ0MkU4IC8qIEVYVHNSR0Iu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRVhUc1JHQi5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk3MjdBRkVEMzFBMkVBNkEwMDAwNDQyRTggLyogRVhUc1JHQi5p
ZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gRVhUc1JHQi5pZGw7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CkBAIC0xMDE3NCw3ICsxMDE3Niw2IEBACiAJCTdDRDBCQTAzMUI4Rjc5QzkwMDVD
RUJCRSAvKiBBY3RpdmVET01DYWxsYmFja01pY3JvdGFzay5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBBY3RpdmVET01DYWxsYmFja01pY3JvdGFzay5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk3Q0Q0OTRDQTFBODZFQjFEMDAwQTg3RUMgLyogUmVuZGVyQXR0YWNo
bWVudC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSZW5kZXJBdHRh
Y2htZW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0NENDk0Q0IxQTg2RUIx
RDAwMEE4N0VDIC8qIFJlbmRlckF0dGFjaG1lbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gUmVuZGVyQXR0YWNobWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owot
CQk3Q0RFRUUxRDE5NzYxMEQ3MDBFMzUyQ0QgLyogVmlld1N0YXRlQ2hhbmdlT2JzZXJ2ZXIuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVmlld1N0YXRlQ2hhbmdlT2JzZXJ2ZXIu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0NFNjgzNDIxOTIxNDNBODAwRjREOTI4
IC8qIFVzZXJNZXNzYWdlSGFuZGxlckRlc2NyaXB0b3IuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gVXNlck1lc3NhZ2VIYW5kbGVyRGVzY3JpcHRvci5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdDRTY4MzQzMTkyMTQzQTgwMEY0RDkyOCAvKiBVc2Vy
TWVzc2FnZUhhbmRsZXJEZXNjcmlwdG9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IFVzZXJNZXNzYWdlSGFuZGxlckRlc2NyaXB0b3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJN0NFNjgzNDYxOTIxODIxNTAwRjREOTI4IC8qIFVzZXJNZXNzYWdlSGFuZGxlckRl
c2NyaXB0b3JUeXBlcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBVc2VyTWVz
c2FnZUhhbmRsZXJEZXNjcmlwdG9yVHlwZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
QEAgLTEwNTA3LDcgKzEwNTA4LDYgQEAKIAkJODY1MTJFREIxNTRBMkFFRTAwQTkwNDI2IC8qIFBl
cmZvcm1hbmNlUmVzb3VyY2VUaW1pbmcuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gUGVyZm9ybWFuY2VSZXNvdXJjZVRpbWluZy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTg2NTEyRURDMTU0QTJBRUYwMEE5MDQyNiAvKiBQZXJmb3JtYW5jZVJlc291
cmNlVGltaW5nLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFBlcmZvcm1hbmNl
UmVzb3VyY2VUaW1pbmcuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODY1MTJFREQx
NTRBMkFFRjAwQTkwNDI2IC8qIFBlcmZvcm1hbmNlUmVzb3VyY2VUaW1pbmcuaWRsICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gdGV4dDsgcGF0aCA9IFBlcmZvcm1hbmNlUmVzb3VyY2VUaW1pbmcuaWRsOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwotCQk4Njc4RDBCQTE4NzhFODEwMDAzQUJERTYgLyogVmlld1N0YXRl
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IFZpZXdTdGF0ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk4NjgxNjBEMTE4NzY2OUM0MDAyMUU3OUQgLyogVXNlckFjdGl2aXR5LmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IFVzZXJBY3Rpdml0eS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTg2ODE2MEQyMTg3NjY5QzQwMDIxRTc5RCAvKiBVc2VyQWN0aXZpdHkuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gVXNlckFjdGl2aXR5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTg2ODE2
MEQzMTg3NjY5RTcwMDIxRTc5RCAvKiBVc2VyQWN0aXZpdHlNYWMubW0gKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7
IHBhdGggPSBVc2VyQWN0aXZpdHlNYWMubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBA
IC0xNzU2Myw2ICsxNzU2Myw4IEBACiAJCQkJMThBNkNENkYwRDhGMjAyNTAwMURDM0NFIC8qIGlv
cyAqLywKIAkJCQk5M0MwOUE4MjBCMDY0RjA1MDA1QUJENEQgLyogbWFjICovLAogCQkJCTFBRjYy
RUUxMTREQTIyQTcwMDQxNTU2QyAvKiBzY3JvbGxpbmcgKi8sCisJCQkJNzI0RUU1NEUxREM3RjI1
QjAwQTkxRkZCIC8qIEFjdGl2aXR5U3RhdGUuaCAqLywKKwkJCQk3MjRFRTU0RjFEQzdGMjVCMDBB
OTFGRkIgLyogQWN0aXZpdHlTdGF0ZUNoYW5nZU9ic2VydmVyLmggKi8sCiAJCQkJQkNGNDhDRTYx
MzcwRDExNDAwNEU4N0Q2IC8qIEFkanVzdFZpZXdTaXplT3JOb3QuaCAqLywKIAkJCQlDRURBMTJE
NjE1MkNBMUNCMDBEOUUwOEQgLyogQWx0ZXJuYXRpdmVUZXh0Q2xpZW50LmggKi8sCiAJCQkJNDU4
MzBENEIxNjc5QjRGODAwQUNGOEMzIC8qIEF1dG9zY3JvbGxDb250cm9sbGVyLmNwcCAqLywKQEAg
LTE3NzU0LDggKzE3NzU2LDYgQEAKIAkJCQlGNTEzQTNFOTE1RkY0ODQxMDAxNTI2REIgLyogVmFs
aWRhdGlvbk1lc3NhZ2VDbGllbnQuaCAqLywKIAkJCQkyNkY5QTgzNjE4QTA0NkFDMDBBRUI4OEEg
LyogVmlld3BvcnRDb25maWd1cmF0aW9uLmNwcCAqLywKIAkJCQkyNkY5QTgzNzE4QTA0NkFDMDBB
RUI4OEEgLyogVmlld3BvcnRDb25maWd1cmF0aW9uLmggKi8sCi0JCQkJODY3OEQwQkExODc4RTgx
MDAwM0FCREU2IC8qIFZpZXdTdGF0ZS5oICovLAotCQkJCTdDREVFRTFEMTk3NjEwRDcwMEUzNTJD
RCAvKiBWaWV3U3RhdGVDaGFuZ2VPYnNlcnZlci5oICovLAogCQkJCTFBRjRDRUVCMThCQzNDMUIw
MEJDMkQzNCAvKiBWaXNpdGVkTGlua1N0b3JlLmNwcCAqLywKIAkJCQkxQUJBN0ZGRjE4OTczNDEy
MDBEQ0U5RDYgLyogVmlzaXRlZExpbmtTdG9yZS5oICovLAogCQkJCUJFOTgzRDk1MDUyQTJFMEEw
MDg5MkQ4NSAvKiBXZWJDb3JlS2V5Ym9hcmRVSU1vZGUuaCAqLywKQEAgLTI2MzQ4LDYgKzI2MzQ4
LDcgQEAKIAkJCQlDOTA4NDNEMDFCMThFNDdEMDBCNjg1NjQgLyogTWVkaWFSZW1vdGVDb250cm9s
cy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQ0Q4QUNBOEYxRDIzOTcxOTAwRUNDNTlFIC8qIE1lZGlh
UmVtb3RlU29mdExpbmsuaCBpbiBIZWFkZXJzICovLAogCQkJCUNEOEFDQThCMUQyMzk0NjQwMEVD
QzU5RSAvKiBNZWRpYVJlbW90ZVNQSS5oIGluIEhlYWRlcnMgKi8sCisJCQkJNzI0RUU1NTExREM4
MEQ4NDAwQTkxRkZCIC8qIEFjdGl2aXR5U3RhdGVDaGFuZ2VPYnNlcnZlci5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJQ0VFRkNEN0ExOURCMzFGNzAwMzg3NkQ3IC8qIE1lZGlhUmVzb3VyY2VMb2FkZXIu
aCBpbiBIZWFkZXJzICovLAogCQkJCTFCRjlEQjNDMUQzOTczQUQwMDI2QUVCNyAvKiBNZWRpYVNh
bXBsZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUIxMjREOEQxRDM4MEI3MDAwRUNERkIwIC8qIE1l
ZGlhU2FtcGxlQVZGT2JqQy5oIGluIEhlYWRlcnMgKi8sCkBAIC0yNzY1NSw4ICsyNzY1Niw2IEBA
CiAJCQkJQ0VGNDE4Q0YxMTc5Njc4QzAwOUQxMTJDIC8qIFZpZXdwb3J0QXJndW1lbnRzLmggaW4g
SGVhZGVycyAqLywKIAkJCQkyNkY5QTgzOTE4QTA0NkFDMDBBRUI4OEEgLyogVmlld3BvcnRDb25m
aWd1cmF0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQkzRkZGRjlBRTE1OUQ5QjA2MDAyMEJCRDUg
LyogVmlld3BvcnRTdHlsZVJlc29sdmVyLmggaW4gSGVhZGVycyAqLywKLQkJCQk4Njc4RDBCQjE4
NzhFODkxMDAzQUJERTYgLyogVmlld1N0YXRlLmggaW4gSGVhZGVycyAqLywKLQkJCQk3Q0RFRUUx
RTE5NzYxMEQ3MDBFMzUyQ0QgLyogVmlld1N0YXRlQ2hhbmdlT2JzZXJ2ZXIuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTkzMzA5RTIwMDk5RTY0OTIwMDU2RTU4MSAvKiBWaXNpYmxlUG9zaXRpb24uaCBp
biBIZWFkZXJzICovLAogCQkJCUE4ODNERjI4MEYzRDA0NUQwMEYxOUJGNiAvKiBWaXNpYmxlU2Vs
ZWN0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQk5MzMwOUUxRTA5OUU2NDkyMDA1NkU1ODEgLyog
VmlzaWJsZVVuaXRzLmggaW4gSGVhZGVycyAqLywKQEAgLTI3ODE4LDYgKzI3ODE3LDcgQEAKIAkJ
CQlCMTBCNjk4MDE0MEMxNzQwMDBCQzFDMjYgLyogV2ViVlRUVG9rZW4uaCBpbiBIZWFkZXJzICov
LAogCQkJCUIxMEI2OTgyMTQwQzE3NDAwMEJDMUMyNiAvKiBXZWJWVFRUb2tlbml6ZXIuaCBpbiBI
ZWFkZXJzICovLAogCQkJCUNEODIwMzEwMTM5NUFDRTcwMEY5NTZDNiAvKiBXZWJXaW5kb3dBbmlt
YXRpb24uaCBpbiBIZWFkZXJzICovLAorCQkJCTcyNEVFNTUwMURDODBEN0YwMEE5MUZGQiAvKiBB
Y3Rpdml0eVN0YXRlLmggaW4gSGVhZGVycyAqLywKIAkJCQlGNTVCM0RFMDEyNTFGMTJEMDAzRUYy
NjkgLyogV2Vla0lucHV0VHlwZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODUwMzFCNTEwQTQ0RUZD
NzAwRjk5MkUwIC8qIFdoZWVsRXZlbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTJFQkJDM0Q4MUI2
NTk4ODMwMEY1MjUzRCAvKiBXaGVlbEV2ZW50RGVsdGFGaWx0ZXIuaCBpbiBIZWFkZXJzICovLApJ
bmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9BY3Rpdml0eVN0YXRlLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvcGFnZS9BY3Rpdml0eVN0YXRlLmgJKHJldmlzaW9uIDIwODE3NykJKGZy
b20gU291cmNlL1dlYkNvcmUvcGFnZS9WaWV3U3RhdGUuaDoyMDgxNzcpCisrKyBTb3VyY2UvV2Vi
Q29yZS9wYWdlL0FjdGl2aXR5U3RhdGUuaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDQ5IEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI2lmbmRlZiBWaWV3U3RhdGVfaAorI2RlZmluZSBWaWV3U3RhdGVfaAor
CituYW1lc3BhY2UgV2ViQ29yZSB7CisKK3N0cnVjdCBWaWV3U3RhdGUgeworICAgIGVudW0gewor
ICAgICAgICBXaW5kb3dJc0FjdGl2ZSA9IDEgPDwgMCwKKyAgICAgICAgSXNGb2N1c2VkID0gMSA8
PCAxLAorICAgICAgICBJc1Zpc2libGUgPSAxIDw8IDIsCisgICAgICAgIElzVmlzaWJsZU9yT2Nj
bHVkZWQgPSAxIDw8IDMsCisgICAgICAgIElzSW5XaW5kb3cgPSAxIDw8IDQsCisgICAgICAgIElz
VmlzdWFsbHlJZGxlID0gMSA8PCA1LAorICAgIH07CisKKyAgICB0eXBlZGVmIHVuc2lnbmVkIEZs
YWdzOworCisgICAgc3RhdGljIGNvbnN0IEZsYWdzIE5vRmxhZ3MgPSAwOworICAgIHN0YXRpYyBj
b25zdCBGbGFncyBBbGxGbGFncyA9IFdpbmRvd0lzQWN0aXZlIHwgSXNGb2N1c2VkIHwgSXNWaXNp
YmxlIHwgSXNWaXNpYmxlT3JPY2NsdWRlZCB8IElzSW5XaW5kb3cgfCBJc1Zpc3VhbGx5SWRsZTsK
K307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIFZpZXdTdGF0ZV9oCklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL0FjdGl2aXR5U3RhdGUuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9wYWdlL0FjdGl2aXR5U3RhdGUuaAkocmV2aXNpb24gMjA4MTc3KQorKysg
U291cmNlL1dlYkNvcmUvcGFnZS9BY3Rpdml0eVN0YXRlLmgJKHdvcmtpbmcgY29weSkKQEAgLTIz
LDEyICsyMywxMiBAQAogICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAK
LSNpZm5kZWYgVmlld1N0YXRlX2gKLSNkZWZpbmUgVmlld1N0YXRlX2gKKyNpZm5kZWYgQWN0aXZp
dHlTdGF0ZV9oCisjZGVmaW5lIEFjdGl2aXR5U3RhdGVfaAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKLXN0cnVjdCBWaWV3U3RhdGUgeworc3RydWN0IEFjdGl2aXR5U3RhdGUgewogICAgIGVudW0g
ewogICAgICAgICBXaW5kb3dJc0FjdGl2ZSA9IDEgPDwgMCwKICAgICAgICAgSXNGb2N1c2VkID0g
MSA8PCAxLApAQCAtNDYsNCArNDYsNCBAQCBzdHJ1Y3QgVmlld1N0YXRlIHsKIAogfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQogCi0jZW5kaWYgLy8gVmlld1N0YXRlX2gKKyNlbmRpZiAvLyBBY3Rpdml0
eVN0YXRlX2gKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvQWN0aXZpdHlTdGF0ZUNoYW5nZU9i
c2VydmVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9BY3Rpdml0eVN0YXRl
Q2hhbmdlT2JzZXJ2ZXIuaAkocmV2aXNpb24gMjA4MTc3KQkoZnJvbSBTb3VyY2UvV2ViQ29yZS9w
YWdlL1ZpZXdTdGF0ZUNoYW5nZU9ic2VydmVyLmg6MjA4MTc3KQorKysgU291cmNlL1dlYkNvcmUv
cGFnZS9BY3Rpdml0eVN0YXRlQ2hhbmdlT2JzZXJ2ZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMCww
ICsxLDQ0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4K
KyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBWaWV3U3RhdGVDaGFuZ2VPYnNlcnZlcl9o
CisjZGVmaW5lIFZpZXdTdGF0ZUNoYW5nZU9ic2VydmVyX2gKKworI2luY2x1ZGUgIlZpZXdTdGF0
ZS5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIFZpZXdTdGF0ZUNoYW5nZU9ic2Vy
dmVyIHsKK3B1YmxpYzoKKyAgICB2aXJ0dWFsIH5WaWV3U3RhdGVDaGFuZ2VPYnNlcnZlcigpCisg
ICAgeworICAgIH0KKyAgICAKKyAgICB2aXJ0dWFsIHZvaWQgdmlld1N0YXRlRGlkQ2hhbmdlKFZp
ZXdTdGF0ZTo6RmxhZ3Mgb2xkVmlld1N0YXRlLCBWaWV3U3RhdGU6OkZsYWdzIG5ld1ZpZXdTdGF0
ZSkgPSAwOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gVmlld1N0
YXRlQ2hhbmdlT2JzZXJ2ZXJfaApJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9BY3Rpdml0eVN0
YXRlQ2hhbmdlT2JzZXJ2ZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL0Fj
dGl2aXR5U3RhdGVDaGFuZ2VPYnNlcnZlci5oCShyZXZpc2lvbiAyMDgxNzcpCisrKyBTb3VyY2Uv
V2ViQ29yZS9wYWdlL0FjdGl2aXR5U3RhdGVDaGFuZ2VPYnNlcnZlci5oCSh3b3JraW5nIGNvcHkp
CkBAIC0yMywyMiArMjMsMjIgQEAKICAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
ICAqLwogCi0jaWZuZGVmIFZpZXdTdGF0ZUNoYW5nZU9ic2VydmVyX2gKLSNkZWZpbmUgVmlld1N0
YXRlQ2hhbmdlT2JzZXJ2ZXJfaAorI2lmbmRlZiBBY3Rpdml0eVN0YXRlQ2hhbmdlT2JzZXJ2ZXJf
aAorI2RlZmluZSBBY3Rpdml0eVN0YXRlQ2hhbmdlT2JzZXJ2ZXJfaAogCi0jaW5jbHVkZSAiVmll
d1N0YXRlLmgiCisjaW5jbHVkZSAiQWN0aXZpdHlTdGF0ZS5oIgogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKLWNsYXNzIFZpZXdTdGF0ZUNoYW5nZU9ic2VydmVyIHsKK2NsYXNzIEFjdGl2aXR5U3Rh
dGVDaGFuZ2VPYnNlcnZlciB7CiBwdWJsaWM6Ci0gICAgdmlydHVhbCB+Vmlld1N0YXRlQ2hhbmdl
T2JzZXJ2ZXIoKQorICAgIHZpcnR1YWwgfkFjdGl2aXR5U3RhdGVDaGFuZ2VPYnNlcnZlcigpCiAg
ICAgewogICAgIH0KICAgICAKLSAgICB2aXJ0dWFsIHZvaWQgdmlld1N0YXRlRGlkQ2hhbmdlKFZp
ZXdTdGF0ZTo6RmxhZ3Mgb2xkVmlld1N0YXRlLCBWaWV3U3RhdGU6OkZsYWdzIG5ld1ZpZXdTdGF0
ZSkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBhY3Rpdml0eVN0YXRlRGlkQ2hhbmdlKEFjdGl2aXR5
U3RhdGU6OkZsYWdzIG9sZEFjdGl2aXR5U3RhdGUsIEFjdGl2aXR5U3RhdGU6OkZsYWdzIG5ld0Fj
dGl2aXR5U3RhdGUpID0gMDsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAotI2VuZGlm
IC8vIFZpZXdTdGF0ZUNoYW5nZU9ic2VydmVyX2gKKyNlbmRpZiAvLyBBY3Rpdml0eVN0YXRlQ2hh
bmdlT2JzZXJ2ZXJfaApJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9Gb2N1c0NvbnRyb2xsZXIu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvRm9jdXNDb250cm9sbGVyLmNw
cAkocmV2aXNpb24gMjA4MTc3KQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9Gb2N1c0NvbnRyb2xs
ZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMTMsMTAgKzMxMywxMCBAQCBzdGF0aWMgaW5saW5l
IGludCBzaGFkb3dBZGp1c3RlZFRhYkluZGV4CiAgICAgcmV0dXJuIGVsZW1lbnQudGFiSW5kZXgo
KTsKIH0KIAotRm9jdXNDb250cm9sbGVyOjpGb2N1c0NvbnRyb2xsZXIoUGFnZSYgcGFnZSwgVmll
d1N0YXRlOjpGbGFncyB2aWV3U3RhdGUpCitGb2N1c0NvbnRyb2xsZXI6OkZvY3VzQ29udHJvbGxl
cihQYWdlJiBwYWdlLCBBY3Rpdml0eVN0YXRlOjpGbGFncyBhY3Rpdml0eVN0YXRlKQogICAgIDog
bV9wYWdlKHBhZ2UpCiAgICAgLCBtX2lzQ2hhbmdpbmdGb2N1c2VkRnJhbWUoZmFsc2UpCi0gICAg
LCBtX3ZpZXdTdGF0ZSh2aWV3U3RhdGUpCisgICAgLCBtX2FjdGl2aXR5U3RhdGUoYWN0aXZpdHlT
dGF0ZSkKICAgICAsIG1fZm9jdXNSZXBhaW50VGltZXIoKnRoaXMsICZGb2N1c0NvbnRyb2xsZXI6
OmZvY3VzUmVwYWludFRpbWVyRmlyZWQpCiB7CiB9CkBAIC0zNTksNyArMzU5LDcgQEAgRnJhbWUm
IEZvY3VzQ29udHJvbGxlcjo6Zm9jdXNlZE9yTWFpbkZyYQogCiB2b2lkIEZvY3VzQ29udHJvbGxl
cjo6c2V0Rm9jdXNlZChib29sIGZvY3VzZWQpCiB7Ci0gICAgbV9wYWdlLnNldFZpZXdTdGF0ZShm
b2N1c2VkID8gbV92aWV3U3RhdGUgfCBWaWV3U3RhdGU6OklzRm9jdXNlZCA6IG1fdmlld1N0YXRl
ICYgflZpZXdTdGF0ZTo6SXNGb2N1c2VkKTsKKyAgICBtX3BhZ2Uuc2V0QWN0aXZpdHlTdGF0ZShm
b2N1c2VkID8gbV9hY3Rpdml0eVN0YXRlIHwgQWN0aXZpdHlTdGF0ZTo6SXNGb2N1c2VkIDogbV9h
Y3Rpdml0eVN0YXRlICYgfkFjdGl2aXR5U3RhdGU6OklzRm9jdXNlZCk7CiB9CiAKIHZvaWQgRm9j
dXNDb250cm9sbGVyOjpzZXRGb2N1c2VkSW50ZXJuYWwoYm9vbCBmb2N1c2VkKQpAQCAtODI1LDIz
ICs4MjUsMjMgQEAgYm9vbCBGb2N1c0NvbnRyb2xsZXI6OnNldEZvY3VzZWRFbGVtZW50KAogICAg
IHJldHVybiB0cnVlOwogfQogCi12b2lkIEZvY3VzQ29udHJvbGxlcjo6c2V0Vmlld1N0YXRlKFZp
ZXdTdGF0ZTo6RmxhZ3Mgdmlld1N0YXRlKQordm9pZCBGb2N1c0NvbnRyb2xsZXI6OnNldEFjdGl2
aXR5U3RhdGUoQWN0aXZpdHlTdGF0ZTo6RmxhZ3MgYWN0aXZpdHlTdGF0ZSkKIHsKLSAgICBWaWV3
U3RhdGU6OkZsYWdzIGNoYW5nZWQgPSBtX3ZpZXdTdGF0ZSBeIHZpZXdTdGF0ZTsKLSAgICBtX3Zp
ZXdTdGF0ZSA9IHZpZXdTdGF0ZTsKKyAgICBBY3Rpdml0eVN0YXRlOjpGbGFncyBjaGFuZ2VkID0g
bV9hY3Rpdml0eVN0YXRlIF4gYWN0aXZpdHlTdGF0ZTsKKyAgICBtX2FjdGl2aXR5U3RhdGUgPSBh
Y3Rpdml0eVN0YXRlOwogCi0gICAgaWYgKGNoYW5nZWQgJiBWaWV3U3RhdGU6OklzRm9jdXNlZCkK
LSAgICAgICAgc2V0Rm9jdXNlZEludGVybmFsKHZpZXdTdGF0ZSAmIFZpZXdTdGF0ZTo6SXNGb2N1
c2VkKTsKLSAgICBpZiAoY2hhbmdlZCAmIFZpZXdTdGF0ZTo6V2luZG93SXNBY3RpdmUpIHsKLSAg
ICAgICAgc2V0QWN0aXZlSW50ZXJuYWwodmlld1N0YXRlICYgVmlld1N0YXRlOjpXaW5kb3dJc0Fj
dGl2ZSk7Ci0gICAgICAgIGlmIChjaGFuZ2VkICYgVmlld1N0YXRlOjpJc1Zpc2libGUpCi0gICAg
ICAgICAgICBzZXRJc1Zpc2libGVBbmRBY3RpdmVJbnRlcm5hbCh2aWV3U3RhdGUgJiBWaWV3U3Rh
dGU6OldpbmRvd0lzQWN0aXZlKTsKKyAgICBpZiAoY2hhbmdlZCAmIEFjdGl2aXR5U3RhdGU6Oklz
Rm9jdXNlZCkKKyAgICAgICAgc2V0Rm9jdXNlZEludGVybmFsKGFjdGl2aXR5U3RhdGUgJiBBY3Rp
dml0eVN0YXRlOjpJc0ZvY3VzZWQpOworICAgIGlmIChjaGFuZ2VkICYgQWN0aXZpdHlTdGF0ZTo6
V2luZG93SXNBY3RpdmUpIHsKKyAgICAgICAgc2V0QWN0aXZlSW50ZXJuYWwoYWN0aXZpdHlTdGF0
ZSAmIEFjdGl2aXR5U3RhdGU6OldpbmRvd0lzQWN0aXZlKTsKKyAgICAgICAgaWYgKGNoYW5nZWQg
JiBBY3Rpdml0eVN0YXRlOjpJc1Zpc2libGUpCisgICAgICAgICAgICBzZXRJc1Zpc2libGVBbmRB
Y3RpdmVJbnRlcm5hbChhY3Rpdml0eVN0YXRlICYgQWN0aXZpdHlTdGF0ZTo6V2luZG93SXNBY3Rp
dmUpOwogICAgIH0KIH0KIAogdm9pZCBGb2N1c0NvbnRyb2xsZXI6OnNldEFjdGl2ZShib29sIGFj
dGl2ZSkKIHsKLSAgICBtX3BhZ2Uuc2V0Vmlld1N0YXRlKGFjdGl2ZSA/IG1fdmlld1N0YXRlIHwg
Vmlld1N0YXRlOjpXaW5kb3dJc0FjdGl2ZSA6IG1fdmlld1N0YXRlICYgflZpZXdTdGF0ZTo6V2lu
ZG93SXNBY3RpdmUpOworICAgIG1fcGFnZS5zZXRBY3Rpdml0eVN0YXRlKGFjdGl2ZSA/IG1fYWN0
aXZpdHlTdGF0ZSB8IEFjdGl2aXR5U3RhdGU6OldpbmRvd0lzQWN0aXZlIDogbV9hY3Rpdml0eVN0
YXRlICYgfkFjdGl2aXR5U3RhdGU6OldpbmRvd0lzQWN0aXZlKTsKIH0KIAogdm9pZCBGb2N1c0Nv
bnRyb2xsZXI6OnNldEFjdGl2ZUludGVybmFsKGJvb2wgYWN0aXZlKQpJbmRleDogU291cmNlL1dl
YkNvcmUvcGFnZS9Gb2N1c0NvbnRyb2xsZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9wYWdlL0ZvY3VzQ29udHJvbGxlci5oCShyZXZpc2lvbiAyMDgxNzcpCisrKyBTb3VyY2UvV2Vi
Q29yZS9wYWdlL0ZvY3VzQ29udHJvbGxlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0yOSw3ICsyOSw3
IEBACiAjaW5jbHVkZSAiRm9jdXNEaXJlY3Rpb24uaCIKICNpbmNsdWRlICJMYXlvdXRSZWN0Lmgi
CiAjaW5jbHVkZSAiVGltZXIuaCIKLSNpbmNsdWRlICJWaWV3U3RhdGUuaCIKKyNpbmNsdWRlICJB
Y3Rpdml0eVN0YXRlLmgiCiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KICNpbmNsdWRlIDx3dGYv
Tm9uY29weWFibGUuaD4KICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CkBAIC01Miw3ICs1Miw3IEBA
IGNsYXNzIFRyZWVTY29wZTsKIGNsYXNzIEZvY3VzQ29udHJvbGxlciB7CiAgICAgV1RGX01BS0Vf
Tk9OQ09QWUFCTEUoRm9jdXNDb250cm9sbGVyKTsgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBw
dWJsaWM6Ci0gICAgZXhwbGljaXQgRm9jdXNDb250cm9sbGVyKFBhZ2UmLCBWaWV3U3RhdGU6OkZs
YWdzKTsKKyAgICBleHBsaWNpdCBGb2N1c0NvbnRyb2xsZXIoUGFnZSYsIEFjdGl2aXR5U3RhdGU6
OkZsYWdzKTsKIAogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0Rm9jdXNlZEZyYW1lKFBhc3NS
ZWZQdHI8RnJhbWU+KTsKICAgICBGcmFtZSogZm9jdXNlZEZyYW1lKCkgY29uc3QgeyByZXR1cm4g
bV9mb2N1c2VkRnJhbWUuZ2V0KCk7IH0KQEAgLTYzLDE1ICs2MywxNSBAQCBwdWJsaWM6CiAKICAg
ICBXRUJDT1JFX0VYUE9SVCBib29sIHNldEZvY3VzZWRFbGVtZW50KEVsZW1lbnQqLCBQYXNzUmVm
UHRyPEZyYW1lPiwgRm9jdXNEaXJlY3Rpb24gPSBGb2N1c0RpcmVjdGlvbk5vbmUpOwogCi0gICAg
dm9pZCBzZXRWaWV3U3RhdGUoVmlld1N0YXRlOjpGbGFncyk7CisgICAgdm9pZCBzZXRBY3Rpdml0
eVN0YXRlKEFjdGl2aXR5U3RhdGU6OkZsYWdzKTsKIAogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQg
c2V0QWN0aXZlKGJvb2wpOwotICAgIGJvb2wgaXNBY3RpdmUoKSBjb25zdCB7IHJldHVybiBtX3Zp
ZXdTdGF0ZSAmIFZpZXdTdGF0ZTo6V2luZG93SXNBY3RpdmU7IH0KKyAgICBib29sIGlzQWN0aXZl
KCkgY29uc3QgeyByZXR1cm4gbV9hY3Rpdml0eVN0YXRlICYgQWN0aXZpdHlTdGF0ZTo6V2luZG93
SXNBY3RpdmU7IH0KIAogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0Rm9jdXNlZChib29sKTsK
LSAgICBib29sIGlzRm9jdXNlZCgpIGNvbnN0IHsgcmV0dXJuIG1fdmlld1N0YXRlICYgVmlld1N0
YXRlOjpJc0ZvY3VzZWQ7IH0KKyAgICBib29sIGlzRm9jdXNlZCgpIGNvbnN0IHsgcmV0dXJuIG1f
YWN0aXZpdHlTdGF0ZSAmIEFjdGl2aXR5U3RhdGU6OklzRm9jdXNlZDsgfQogCi0gICAgYm9vbCBj
b250ZW50SXNWaXNpYmxlKCkgY29uc3QgeyByZXR1cm4gbV92aWV3U3RhdGUgJiBWaWV3U3RhdGU6
OklzVmlzaWJsZTsgfQorICAgIGJvb2wgY29udGVudElzVmlzaWJsZSgpIGNvbnN0IHsgcmV0dXJu
IG1fYWN0aXZpdHlTdGF0ZSAmIEFjdGl2aXR5U3RhdGU6OklzVmlzaWJsZTsgfQogCiAgICAgLy8g
VGhlc2UgbWV0aG9kcyBhcmUgdXNlZCBpbiBXZWJDb3JlL2JpbmRpbmdzL29iamMvRE9NLm1tLgog
ICAgIFdFQkNPUkVfRVhQT1JUIEVsZW1lbnQqIG5leHRGb2N1c2FibGVFbGVtZW50KE5vZGUmKTsK
QEAgLTEyMCw3ICsxMjAsNyBAQCBwcml2YXRlOgogICAgIFBhZ2UmIG1fcGFnZTsKICAgICBSZWZQ
dHI8RnJhbWU+IG1fZm9jdXNlZEZyYW1lOwogICAgIGJvb2wgbV9pc0NoYW5naW5nRm9jdXNlZEZy
YW1lOwotICAgIFZpZXdTdGF0ZTo6RmxhZ3MgbV92aWV3U3RhdGU7CisgICAgQWN0aXZpdHlTdGF0
ZTo6RmxhZ3MgbV9hY3Rpdml0eVN0YXRlOwogCiAgICAgVGltZXIgbV9mb2N1c1JlcGFpbnRUaW1l
cjsKICAgICBkb3VibGUgbV9mb2N1c1NldFRpbWU7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdl
L1BhZ2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAJKHJl
dmlzaW9uIDIwODE3NykKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTk0LDcgKzk0LDcgQEAKICNpbmNsdWRlICJUZXh0UmVzb3VyY2VEZWNvZGVyLmgi
CiAjaW5jbHVkZSAiVXNlckNvbnRlbnRQcm92aWRlci5oIgogI2luY2x1ZGUgIlVzZXJJbnB1dEJy
aWRnZS5oIgotI2luY2x1ZGUgIlZpZXdTdGF0ZUNoYW5nZU9ic2VydmVyLmgiCisjaW5jbHVkZSAi
QWN0aXZpdHlTdGF0ZUNoYW5nZU9ic2VydmVyLmgiCiAjaW5jbHVkZSAiVmlzaXRlZExpbmtTdGF0
ZS5oIgogI2luY2x1ZGUgIlZpc2l0ZWRMaW5rU3RvcmUuaCIKICNpbmNsdWRlICJWb2lkQ2FsbGJh
Y2suaCIKQEAgLTE1Niw3ICsxNTYsNyBAQCBzdGF0aWMgdm9pZCBuZXR3b3JrU3RhdGVDaGFuZ2Vk
KGJvb2wgaXNPCiAgICAgfQogfQogCi1zdGF0aWMgY29uc3QgVmlld1N0YXRlOjpGbGFncyBQYWdl
SW5pdGlhbFZpZXdTdGF0ZSA9IFZpZXdTdGF0ZTo6SXNWaXNpYmxlIHwgVmlld1N0YXRlOjpJc0lu
V2luZG93Oworc3RhdGljIGNvbnN0IEFjdGl2aXR5U3RhdGU6OkZsYWdzIFBhZ2VJbml0aWFsQWN0
aXZpdHlTdGF0ZSA9IEFjdGl2aXR5U3RhdGU6OklzVmlzaWJsZSB8IEFjdGl2aXR5U3RhdGU6Oklz
SW5XaW5kb3c7CiAKIFBhZ2U6OlBhZ2UoUGFnZUNvbmZpZ3VyYXRpb24mJiBwYWdlQ29uZmlndXJh
dGlvbikKICAgICA6IG1fY2hyb21lKHN0ZDo6bWFrZV91bmlxdWU8Q2hyb21lPigqdGhpcywgKnBh
Z2VDb25maWd1cmF0aW9uLmNocm9tZUNsaWVudCkpCkBAIC0xNjQsNyArMTY0LDcgQEAgUGFnZTo6
UGFnZShQYWdlQ29uZmlndXJhdGlvbiYmIHBhZ2VDb25maQogI2lmIEVOQUJMRShEUkFHX1NVUFBP
UlQpCiAgICAgLCBtX2RyYWdDb250cm9sbGVyKHN0ZDo6bWFrZV91bmlxdWU8RHJhZ0NvbnRyb2xs
ZXI+KCp0aGlzLCAqcGFnZUNvbmZpZ3VyYXRpb24uZHJhZ0NsaWVudCkpCiAjZW5kaWYKLSAgICAs
IG1fZm9jdXNDb250cm9sbGVyKHN0ZDo6bWFrZV91bmlxdWU8Rm9jdXNDb250cm9sbGVyPigqdGhp
cywgUGFnZUluaXRpYWxWaWV3U3RhdGUpKQorICAgICwgbV9mb2N1c0NvbnRyb2xsZXIoc3RkOjpt
YWtlX3VuaXF1ZTxGb2N1c0NvbnRyb2xsZXI+KCp0aGlzLCBQYWdlSW5pdGlhbEFjdGl2aXR5U3Rh
dGUpKQogI2lmIEVOQUJMRShDT05URVhUX01FTlVTKQogICAgICwgbV9jb250ZXh0TWVudUNvbnRy
b2xsZXIoc3RkOjptYWtlX3VuaXF1ZTxDb250ZXh0TWVudUNvbnRyb2xsZXI+KCp0aGlzLCAqcGFn
ZUNvbmZpZ3VyYXRpb24uY29udGV4dE1lbnVDbGllbnQpKQogI2VuZGlmCkBAIC0yMTQsNyArMjE0
LDcgQEAgUGFnZTo6UGFnZShQYWdlQ29uZmlndXJhdGlvbiYmIHBhZ2VDb25maQogICAgICwgbV90
aW1lckFsaWdubWVudEludGVydmFsSW5jcmVhc2VUaW1lcigqdGhpcywgJlBhZ2U6OnRpbWVyQWxp
Z25tZW50SW50ZXJ2YWxJbmNyZWFzZVRpbWVyRmlyZWQpCiAgICAgLCBtX2lzRWRpdGFibGUoZmFs
c2UpCiAgICAgLCBtX2lzUHJlcmVuZGVyKGZhbHNlKQotICAgICwgbV92aWV3U3RhdGUoUGFnZUlu
aXRpYWxWaWV3U3RhdGUpCisgICAgLCBtX2FjdGl2aXR5U3RhdGUoUGFnZUluaXRpYWxBY3Rpdml0
eVN0YXRlKQogICAgICwgbV9yZXF1ZXN0ZWRMYXlvdXRNaWxlc3RvbmVzKDApCiAgICAgLCBtX2hl
YWRlckhlaWdodCgwKQogICAgICwgbV9mb290ZXJIZWlnaHQoMCkKQEAgLTEwMTMsNyArMTAxMyw3
IEBAIHVuc2lnbmVkIFBhZ2U6OnBhZ2VDb3VudCgpIGNvbnN0CiAKIHZvaWQgUGFnZTo6c2V0SXNJ
bldpbmRvdyhib29sIGlzSW5XaW5kb3cpCiB7Ci0gICAgc2V0Vmlld1N0YXRlKGlzSW5XaW5kb3cg
PyBtX3ZpZXdTdGF0ZSB8IFZpZXdTdGF0ZTo6SXNJbldpbmRvdyA6IG1fdmlld1N0YXRlICYgflZp
ZXdTdGF0ZTo6SXNJbldpbmRvdyk7CisgICAgc2V0QWN0aXZpdHlTdGF0ZShpc0luV2luZG93ID8g
bV9hY3Rpdml0eVN0YXRlIHwgQWN0aXZpdHlTdGF0ZTo6SXNJbldpbmRvdyA6IG1fYWN0aXZpdHlT
dGF0ZSAmIH5BY3Rpdml0eVN0YXRlOjpJc0luV2luZG93KTsKIH0KIAogdm9pZCBQYWdlOjpzZXRJ
c0luV2luZG93SW50ZXJuYWwoYm9vbCBpc0luV2luZG93KQpAQCAtMTAyNywxNCArMTAyNywxNCBA
QCB2b2lkIFBhZ2U6OnNldElzSW5XaW5kb3dJbnRlcm5hbChib29sIGlzCiAgICAgICAgIHJlc3Vt
ZUFuaW1hdGluZ0ltYWdlcygpOwogfQogCi12b2lkIFBhZ2U6OmFkZFZpZXdTdGF0ZUNoYW5nZU9i
c2VydmVyKFZpZXdTdGF0ZUNoYW5nZU9ic2VydmVyJiBvYnNlcnZlcikKK3ZvaWQgUGFnZTo6YWRk
QWN0aXZpdHlTdGF0ZUNoYW5nZU9ic2VydmVyKEFjdGl2aXR5U3RhdGVDaGFuZ2VPYnNlcnZlciYg
b2JzZXJ2ZXIpCiB7Ci0gICAgbV92aWV3U3RhdGVDaGFuZ2VPYnNlcnZlcnMuYWRkKCZvYnNlcnZl
cik7CisgICAgbV9hY3Rpdml0eVN0YXRlQ2hhbmdlT2JzZXJ2ZXJzLmFkZCgmb2JzZXJ2ZXIpOwog
fQogCi12b2lkIFBhZ2U6OnJlbW92ZVZpZXdTdGF0ZUNoYW5nZU9ic2VydmVyKFZpZXdTdGF0ZUNo
YW5nZU9ic2VydmVyJiBvYnNlcnZlcikKK3ZvaWQgUGFnZTo6cmVtb3ZlQWN0aXZpdHlTdGF0ZUNo
YW5nZU9ic2VydmVyKEFjdGl2aXR5U3RhdGVDaGFuZ2VPYnNlcnZlciYgb2JzZXJ2ZXIpCiB7Ci0g
ICAgbV92aWV3U3RhdGVDaGFuZ2VPYnNlcnZlcnMucmVtb3ZlKCZvYnNlcnZlcik7CisgICAgbV9h
Y3Rpdml0eVN0YXRlQ2hhbmdlT2JzZXJ2ZXJzLnJlbW92ZSgmb2JzZXJ2ZXIpOwogfQogCiB2b2lk
IFBhZ2U6OnN1c3BlbmRTY3JpcHRlZEFuaW1hdGlvbnMoKQpAQCAtMTIyMCwxNCArMTIyMCwxNCBA
QCB2b2lkIFBhZ2U6OmhpZGRlblBhZ2VET01UaW1lclRocm90dGxpbmdTCiB2b2lkIFBhZ2U6OnVw
ZGF0ZVRpbWVyVGhyb3R0bGluZ1N0YXRlKCkKIHsKICAgICAvLyBUaW1lciB0aHJvdHRsaW5nIGRp
c2FibGVkIGlmIHBhZ2UgaXMgdmlzdWFsbHkgYWN0aXZlLCBvciBkaXNhYmxlZCBieSBzZXR0aW5n
LgotICAgIGlmICghbV9zZXR0aW5ncy0+aGlkZGVuUGFnZURPTVRpbWVyVGhyb3R0bGluZ0VuYWJs
ZWQoKSB8fCAhKG1fdmlld1N0YXRlICYgVmlld1N0YXRlOjpJc1Zpc3VhbGx5SWRsZSkpIHsKKyAg
ICBpZiAoIW1fc2V0dGluZ3MtPmhpZGRlblBhZ2VET01UaW1lclRocm90dGxpbmdFbmFibGVkKCkg
fHwgIShtX2FjdGl2aXR5U3RhdGUgJiBBY3Rpdml0eVN0YXRlOjpJc1Zpc3VhbGx5SWRsZSkpIHsK
ICAgICAgICAgc2V0VGltZXJUaHJvdHRsaW5nU3RhdGUoVGltZXJUaHJvdHRsaW5nU3RhdGU6OkRp
c2FibGVkKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAogICAgIC8vIElmIHRoZSBwYWdlIGlz
IHZpc2libGUgKGJ1dCBpZGxlKSwgdGhlcmUgaXMgYW55IGFjdGl2aXR5IChsb2FkaW5nLCBtZWRp
YSBwbGF5aW5nLCBldGMpLCBvciBwZXIgc2V0dGluZywKICAgICAvLyB3ZSBhbGxvdyB0aW1lciB0
aHJvdHRsaW5nLCBidXQgbm90IGluY3JlYXNpbmcgdGltZXIgdGhyb3R0bGluZy4KLSAgICBpZiAo
IW1fc2V0dGluZ3MtPmhpZGRlblBhZ2VET01UaW1lclRocm90dGxpbmdBdXRvSW5jcmVhc2VzKCkg
fHwgbV92aWV3U3RhdGUgJiBWaWV3U3RhdGU6OklzVmlzaWJsZSB8fCBtX3BhZ2VUaHJvdHRsZXIu
YWN0aXZpdHlTdGF0ZSgpKSB7CisgICAgaWYgKCFtX3NldHRpbmdzLT5oaWRkZW5QYWdlRE9NVGlt
ZXJUaHJvdHRsaW5nQXV0b0luY3JlYXNlcygpIHx8IG1fYWN0aXZpdHlTdGF0ZSAmIEFjdGl2aXR5
U3RhdGU6OklzVmlzaWJsZSB8fCBtX3BhZ2VUaHJvdHRsZXIuYWN0aXZpdHlTdGF0ZSgpKSB7CiAg
ICAgICAgIHNldFRpbWVyVGhyb3R0bGluZ1N0YXRlKFRpbWVyVGhyb3R0bGluZ1N0YXRlOjpFbmFi
bGVkKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAgLTE0MzgsMzEgKzE0MzgsMzEgQEAgdm9p
ZCBQYWdlOjpyZXN1bWVBbmltYXRpbmdJbWFnZXMoKQogICAgICAgICB2aWV3LT5yZXN1bWVWaXNp
YmxlSW1hZ2VBbmltYXRpb25zSW5jbHVkaW5nU3ViZnJhbWVzKCk7CiB9CiAKLXZvaWQgUGFnZTo6
c2V0Vmlld1N0YXRlKFZpZXdTdGF0ZTo6RmxhZ3Mgdmlld1N0YXRlKQordm9pZCBQYWdlOjpzZXRB
Y3Rpdml0eVN0YXRlKEFjdGl2aXR5U3RhdGU6OkZsYWdzIGFjdGl2aXR5U3RhdGUpCiB7Ci0gICAg
Vmlld1N0YXRlOjpGbGFncyBjaGFuZ2VkID0gbV92aWV3U3RhdGUgXiB2aWV3U3RhdGU7CisgICAg
QWN0aXZpdHlTdGF0ZTo6RmxhZ3MgY2hhbmdlZCA9IG1fYWN0aXZpdHlTdGF0ZSBeIGFjdGl2aXR5
U3RhdGU7CiAgICAgaWYgKCFjaGFuZ2VkKQogICAgICAgICByZXR1cm47CiAKLSAgICBWaWV3U3Rh
dGU6OkZsYWdzIG9sZFZpZXdTdGF0ZSA9IG1fdmlld1N0YXRlOworICAgIEFjdGl2aXR5U3RhdGU6
OkZsYWdzIG9sZEFjdGl2aXR5U3RhdGUgPSBtX2FjdGl2aXR5U3RhdGU7CiAKICAgICBib29sIHdh
c1Zpc2libGVBbmRBY3RpdmUgPSBpc1Zpc2libGVBbmRBY3RpdmUoKTsKLSAgICBtX3ZpZXdTdGF0
ZSA9IHZpZXdTdGF0ZTsKKyAgICBtX2FjdGl2aXR5U3RhdGUgPSBhY3Rpdml0eVN0YXRlOwogCi0g
ICAgbV9mb2N1c0NvbnRyb2xsZXItPnNldFZpZXdTdGF0ZSh2aWV3U3RhdGUpOworICAgIG1fZm9j
dXNDb250cm9sbGVyLT5zZXRBY3Rpdml0eVN0YXRlKGFjdGl2aXR5U3RhdGUpOwogCi0gICAgaWYg
KGNoYW5nZWQgJiBWaWV3U3RhdGU6OklzVmlzaWJsZSkKLSAgICAgICAgc2V0SXNWaXNpYmxlSW50
ZXJuYWwodmlld1N0YXRlICYgVmlld1N0YXRlOjpJc1Zpc2libGUpOwotICAgIGlmIChjaGFuZ2Vk
ICYgVmlld1N0YXRlOjpJc0luV2luZG93KQotICAgICAgICBzZXRJc0luV2luZG93SW50ZXJuYWwo
dmlld1N0YXRlICYgVmlld1N0YXRlOjpJc0luV2luZG93KTsKLSAgICBpZiAoY2hhbmdlZCAmIFZp
ZXdTdGF0ZTo6SXNWaXN1YWxseUlkbGUpCi0gICAgICAgIHNldElzVmlzdWFsbHlJZGxlSW50ZXJu
YWwodmlld1N0YXRlICYgVmlld1N0YXRlOjpJc1Zpc3VhbGx5SWRsZSk7CisgICAgaWYgKGNoYW5n
ZWQgJiBBY3Rpdml0eVN0YXRlOjpJc1Zpc2libGUpCisgICAgICAgIHNldElzVmlzaWJsZUludGVy
bmFsKGFjdGl2aXR5U3RhdGUgJiBBY3Rpdml0eVN0YXRlOjpJc1Zpc2libGUpOworICAgIGlmIChj
aGFuZ2VkICYgQWN0aXZpdHlTdGF0ZTo6SXNJbldpbmRvdykKKyAgICAgICAgc2V0SXNJbldpbmRv
d0ludGVybmFsKGFjdGl2aXR5U3RhdGUgJiBBY3Rpdml0eVN0YXRlOjpJc0luV2luZG93KTsKKyAg
ICBpZiAoY2hhbmdlZCAmIEFjdGl2aXR5U3RhdGU6OklzVmlzdWFsbHlJZGxlKQorICAgICAgICBz
ZXRJc1Zpc3VhbGx5SWRsZUludGVybmFsKGFjdGl2aXR5U3RhdGUgJiBBY3Rpdml0eVN0YXRlOjpJ
c1Zpc3VhbGx5SWRsZSk7CiAKLSAgICBpZiAoY2hhbmdlZCAmIChWaWV3U3RhdGU6OklzVmlzaWJs
ZSB8IFZpZXdTdGF0ZTo6SXNWaXN1YWxseUlkbGUpKQorICAgIGlmIChjaGFuZ2VkICYgKEFjdGl2
aXR5U3RhdGU6OklzVmlzaWJsZSB8IEFjdGl2aXR5U3RhdGU6OklzVmlzdWFsbHlJZGxlKSkKICAg
ICAgICAgdXBkYXRlVGltZXJUaHJvdHRsaW5nU3RhdGUoKTsKIAotICAgIGZvciAoYXV0byogb2Jz
ZXJ2ZXIgOiBtX3ZpZXdTdGF0ZUNoYW5nZU9ic2VydmVycykKLSAgICAgICAgb2JzZXJ2ZXItPnZp
ZXdTdGF0ZURpZENoYW5nZShvbGRWaWV3U3RhdGUsIG1fdmlld1N0YXRlKTsKKyAgICBmb3IgKGF1
dG8qIG9ic2VydmVyIDogbV9hY3Rpdml0eVN0YXRlQ2hhbmdlT2JzZXJ2ZXJzKQorICAgICAgICBv
YnNlcnZlci0+YWN0aXZpdHlTdGF0ZURpZENoYW5nZShvbGRBY3Rpdml0eVN0YXRlLCBtX2FjdGl2
aXR5U3RhdGUpOwogCiAgICAgaWYgKHdhc1Zpc2libGVBbmRBY3RpdmUgIT0gaXNWaXNpYmxlQW5k
QWN0aXZlKCkpCiAgICAgICAgIFBsYXRmb3JtTWVkaWFTZXNzaW9uTWFuYWdlcjo6dXBkYXRlTm93
UGxheWluZ0luZm9JZk5lY2Vzc2FyeSgpOwpAQCAtMTQ3MCwxNSArMTQ3MCwxNSBAQCB2b2lkIFBh
Z2U6OnNldFZpZXdTdGF0ZShWaWV3U3RhdGU6OkZsYWdzCiAKIGJvb2wgUGFnZTo6aXNWaXNpYmxl
QW5kQWN0aXZlKCkgY29uc3QKIHsKLSAgICByZXR1cm4gKG1fdmlld1N0YXRlICYgVmlld1N0YXRl
OjpJc1Zpc2libGUpICYmIChtX3ZpZXdTdGF0ZSAmIFZpZXdTdGF0ZTo6V2luZG93SXNBY3RpdmUp
OworICAgIHJldHVybiAobV9hY3Rpdml0eVN0YXRlICYgQWN0aXZpdHlTdGF0ZTo6SXNWaXNpYmxl
KSAmJiAobV9hY3Rpdml0eVN0YXRlICYgQWN0aXZpdHlTdGF0ZTo6V2luZG93SXNBY3RpdmUpOwog
fQogCiB2b2lkIFBhZ2U6OnNldElzVmlzaWJsZShib29sIGlzVmlzaWJsZSkKIHsKICAgICBpZiAo
aXNWaXNpYmxlKQotICAgICAgICBzZXRWaWV3U3RhdGUoKG1fdmlld1N0YXRlICYgflZpZXdTdGF0
ZTo6SXNWaXN1YWxseUlkbGUpIHwgVmlld1N0YXRlOjpJc1Zpc2libGUgfCBWaWV3U3RhdGU6Oklz
VmlzaWJsZU9yT2NjbHVkZWQpOworICAgICAgICBzZXRBY3Rpdml0eVN0YXRlKChtX2FjdGl2aXR5
U3RhdGUgJiB+QWN0aXZpdHlTdGF0ZTo6SXNWaXN1YWxseUlkbGUpIHwgQWN0aXZpdHlTdGF0ZTo6
SXNWaXNpYmxlIHwgQWN0aXZpdHlTdGF0ZTo6SXNWaXNpYmxlT3JPY2NsdWRlZCk7CiAgICAgZWxz
ZQotICAgICAgICBzZXRWaWV3U3RhdGUoKG1fdmlld1N0YXRlICYgfihWaWV3U3RhdGU6OklzVmlz
aWJsZSB8IFZpZXdTdGF0ZTo6SXNWaXNpYmxlT3JPY2NsdWRlZCkpIHwgVmlld1N0YXRlOjpJc1Zp
c3VhbGx5SWRsZSk7CisgICAgICAgIHNldEFjdGl2aXR5U3RhdGUoKG1fYWN0aXZpdHlTdGF0ZSAm
IH4oQWN0aXZpdHlTdGF0ZTo6SXNWaXNpYmxlIHwgQWN0aXZpdHlTdGF0ZTo6SXNWaXNpYmxlT3JP
Y2NsdWRlZCkpIHwgQWN0aXZpdHlTdGF0ZTo6SXNWaXN1YWxseUlkbGUpOwogfQogCiB2b2lkIFBh
Z2U6OnNldElzVmlzaWJsZUludGVybmFsKGJvb2wgaXNWaXNpYmxlKQpJbmRleDogU291cmNlL1dl
YkNvcmUvcGFnZS9QYWdlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9QYWdl
LmgJKHJldmlzaW9uIDIwODE3NykKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zNCw3ICszNCw3IEBACiAjaW5jbHVkZSAiU2Vzc2lvbklELmgiCiAjaW5j
bHVkZSAiU3VwcGxlbWVudGFibGUuaCIKICNpbmNsdWRlICJVc2VySW50ZXJmYWNlTGF5b3V0RGly
ZWN0aW9uLmgiCi0jaW5jbHVkZSAiVmlld1N0YXRlLmgiCisjaW5jbHVkZSAiQWN0aXZpdHlTdGF0
ZS5oIgogI2luY2x1ZGUgIlZpZXdwb3J0QXJndW1lbnRzLmgiCiAjaW5jbHVkZSAiV2hlZWxFdmVu
dFRlc3RUcmlnZ2VyLmgiCiAjaW5jbHVkZSA8bWVtb3J5PgpAQCAtMTI2LDcgKzEyNiw3IEBAIGNs
YXNzIFN0b3JhZ2VOYW1lc3BhY2U7CiBjbGFzcyBTdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXI7CiBj
bGFzcyBVc2VyQ29udGVudFByb3ZpZGVyOwogY2xhc3MgVmFsaWRhdGlvbk1lc3NhZ2VDbGllbnQ7
Ci1jbGFzcyBWaWV3U3RhdGVDaGFuZ2VPYnNlcnZlcjsKK2NsYXNzIEFjdGl2aXR5U3RhdGVDaGFu
Z2VPYnNlcnZlcjsKIGNsYXNzIFZpc2l0ZWRMaW5rU3RvcmU7CiAKIHR5cGVkZWYgdWludDY0X3Qg
TGlua0hhc2g7CkBAIC0zMzQsMjIgKzMzNCwyMiBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBP
UlQgRGlhZ25vc3RpY0xvZ2dpbmdDbGllbnQmIGRpYWdub3N0aWNMb2dnaW5nQ2xpZW50KCkgY29u
c3Q7CiAKICAgICAvLyBOb3RpZmljYXRpb25zIHdoZW4gdGhlIFBhZ2Ugc3RhcnRzIGFuZCBzdG9w
cyBiZWluZyBwcmVzZW50ZWQgdmlhIGEgbmF0aXZlIHdpbmRvdy4KLSAgICBXRUJDT1JFX0VYUE9S
VCB2b2lkIHNldFZpZXdTdGF0ZShWaWV3U3RhdGU6OkZsYWdzKTsKKyAgICBXRUJDT1JFX0VYUE9S
VCB2b2lkIHNldEFjdGl2aXR5U3RhdGUoQWN0aXZpdHlTdGF0ZTo6RmxhZ3MpOwogICAgIGJvb2wg
aXNWaXNpYmxlQW5kQWN0aXZlKCkgY29uc3Q7CiAgICAgdm9pZCBwYWdlQWN0aXZpdHlTdGF0ZUNo
YW5nZWQoKSB7IHVwZGF0ZVRpbWVyVGhyb3R0bGluZ1N0YXRlKCk7IH0KICAgICBXRUJDT1JFX0VY
UE9SVCB2b2lkIHNldElzVmlzaWJsZShib29sKTsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNl
dElzUHJlcmVuZGVyKCk7Ci0gICAgYm9vbCBpc1Zpc2libGUoKSBjb25zdCB7IHJldHVybiBtX3Zp
ZXdTdGF0ZSAmIFZpZXdTdGF0ZTo6SXNWaXNpYmxlOyB9CisgICAgYm9vbCBpc1Zpc2libGUoKSBj
b25zdCB7IHJldHVybiBtX2FjdGl2aXR5U3RhdGUgJiBBY3Rpdml0eVN0YXRlOjpJc1Zpc2libGU7
IH0KIAogICAgIC8vIE5vdGlmaWNhdGlvbiB0aGF0IHRoaXMgUGFnZSB3YXMgbW92ZWQgaW50byBv
ciBvdXQgb2YgYSBuYXRpdmUgd2luZG93LgogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0SXNJ
bldpbmRvdyhib29sKTsKLSAgICBib29sIGlzSW5XaW5kb3coKSBjb25zdCB7IHJldHVybiBtX3Zp
ZXdTdGF0ZSAmIFZpZXdTdGF0ZTo6SXNJbldpbmRvdzsgfQorICAgIGJvb2wgaXNJbldpbmRvdygp
IGNvbnN0IHsgcmV0dXJuIG1fYWN0aXZpdHlTdGF0ZSAmIEFjdGl2aXR5U3RhdGU6OklzSW5XaW5k
b3c7IH0KIAogICAgIHZvaWQgc2V0SXNDbG9zaW5nKCkgeyBtX2lzQ2xvc2luZyA9IHRydWU7IH0K
ICAgICBib29sIGlzQ2xvc2luZygpIGNvbnN0IHsgcmV0dXJuIG1faXNDbG9zaW5nOyB9CiAKLSAg
ICB2b2lkIGFkZFZpZXdTdGF0ZUNoYW5nZU9ic2VydmVyKFZpZXdTdGF0ZUNoYW5nZU9ic2VydmVy
Jik7Ci0gICAgdm9pZCByZW1vdmVWaWV3U3RhdGVDaGFuZ2VPYnNlcnZlcihWaWV3U3RhdGVDaGFu
Z2VPYnNlcnZlciYpOworICAgIHZvaWQgYWRkQWN0aXZpdHlTdGF0ZUNoYW5nZU9ic2VydmVyKEFj
dGl2aXR5U3RhdGVDaGFuZ2VPYnNlcnZlciYpOworICAgIHZvaWQgcmVtb3ZlQWN0aXZpdHlTdGF0
ZUNoYW5nZU9ic2VydmVyKEFjdGl2aXR5U3RhdGVDaGFuZ2VPYnNlcnZlciYpOwogCiAgICAgV0VC
Q09SRV9FWFBPUlQgdm9pZCBzdXNwZW5kU2NyaXB0ZWRBbmltYXRpb25zKCk7CiAgICAgV0VCQ09S
RV9FWFBPUlQgdm9pZCByZXN1bWVTY3JpcHRlZEFuaW1hdGlvbnMoKTsKQEAgLTY2Niw3ICs2NjYs
NyBAQCBwcml2YXRlOgogCiAgICAgYm9vbCBtX2lzRWRpdGFibGU7CiAgICAgYm9vbCBtX2lzUHJl
cmVuZGVyOwotICAgIFZpZXdTdGF0ZTo6RmxhZ3MgbV92aWV3U3RhdGU7CisgICAgQWN0aXZpdHlT
dGF0ZTo6RmxhZ3MgbV9hY3Rpdml0eVN0YXRlOwogICAgIFBhZ2VBY3Rpdml0eVN0YXRlOjpGbGFn
cyBtX3BhZ2VBY3Rpdml0eVN0YXRlOwogCiAgICAgTGF5b3V0TWlsZXN0b25lcyBtX3JlcXVlc3Rl
ZExheW91dE1pbGVzdG9uZXM7CkBAIC03MTEsNyArNzExLDcgQEAgcHJpdmF0ZToKICAgICBSZWY8
VmlzaXRlZExpbmtTdG9yZT4gbV92aXNpdGVkTGlua1N0b3JlOwogICAgIFJlZlB0cjxXaGVlbEV2
ZW50VGVzdFRyaWdnZXI+IG1fdGVzdFRyaWdnZXI7CiAKLSAgICBIYXNoU2V0PFZpZXdTdGF0ZUNo
YW5nZU9ic2VydmVyKj4gbV92aWV3U3RhdGVDaGFuZ2VPYnNlcnZlcnM7CisgICAgSGFzaFNldDxB
Y3Rpdml0eVN0YXRlQ2hhbmdlT2JzZXJ2ZXIqPiBtX2FjdGl2aXR5U3RhdGVDaGFuZ2VPYnNlcnZl
cnM7CiAKICNpZiBFTkFCTEUoUkVTT1VSQ0VfVVNBR0UpCiAgICAgc3RkOjp1bmlxdWVfcHRyPFJl
c291cmNlVXNhZ2VPdmVybGF5PiBtX3Jlc291cmNlVXNhZ2VPdmVybGF5OwpJbmRleDogU291cmNl
L1dlYkNvcmUvcGFnZS9QYWdlVGhyb3R0bGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvcGFnZS9QYWdlVGhyb3R0bGVyLmgJKHJldmlzaW9uIDIwODE3NykKKysrIFNvdXJjZS9XZWJD
b3JlL3BhZ2UvUGFnZVRocm90dGxlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0yOSw3ICsyOSw3IEBA
CiAjaW5jbHVkZSAiVGltZXIuaCIKIAogI2luY2x1ZGUgIlVzZXJBY3Rpdml0eS5oIgotI2luY2x1
ZGUgIlZpZXdTdGF0ZS5oIgorI2luY2x1ZGUgIkFjdGl2aXR5U3RhdGUuaCIKICNpbmNsdWRlIDx3
dGYvUmVmQ291bnRlci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9wYWdlL1ZpZXdTdGF0ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2Uv
Vmlld1N0YXRlLmgJKHJldmlzaW9uIDIwODE3NykKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvVmll
d1N0YXRlLmgJKG5vbmV4aXN0ZW50KQpAQCAtMSw0OSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0
IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0g
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0g
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklC
VVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRT
IENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2lm
bmRlZiBWaWV3U3RhdGVfaAotI2RlZmluZSBWaWV3U3RhdGVfaAotCi1uYW1lc3BhY2UgV2ViQ29y
ZSB7Ci0KLXN0cnVjdCBWaWV3U3RhdGUgewotICAgIGVudW0gewotICAgICAgICBXaW5kb3dJc0Fj
dGl2ZSA9IDEgPDwgMCwKLSAgICAgICAgSXNGb2N1c2VkID0gMSA8PCAxLAotICAgICAgICBJc1Zp
c2libGUgPSAxIDw8IDIsCi0gICAgICAgIElzVmlzaWJsZU9yT2NjbHVkZWQgPSAxIDw8IDMsCi0g
ICAgICAgIElzSW5XaW5kb3cgPSAxIDw8IDQsCi0gICAgICAgIElzVmlzdWFsbHlJZGxlID0gMSA8
PCA1LAotICAgIH07Ci0KLSAgICB0eXBlZGVmIHVuc2lnbmVkIEZsYWdzOwotCi0gICAgc3RhdGlj
IGNvbnN0IEZsYWdzIE5vRmxhZ3MgPSAwOwotICAgIHN0YXRpYyBjb25zdCBGbGFncyBBbGxGbGFn
cyA9IFdpbmRvd0lzQWN0aXZlIHwgSXNGb2N1c2VkIHwgSXNWaXNpYmxlIHwgSXNWaXNpYmxlT3JP
Y2NsdWRlZCB8IElzSW5XaW5kb3cgfCBJc1Zpc3VhbGx5SWRsZTsKLX07Ci0KLX0gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIFZpZXdTdGF0ZV9oCkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9wYWdlL1ZpZXdTdGF0ZUNoYW5nZU9ic2VydmVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvcGFnZS9WaWV3U3RhdGVDaGFuZ2VPYnNlcnZlci5oCShyZXZpc2lvbiAyMDgxNzcpCisr
KyBTb3VyY2UvV2ViQ29yZS9wYWdlL1ZpZXdTdGF0ZUNoYW5nZU9ic2VydmVyLmgJKG5vbmV4aXN0
ZW50KQpAQCAtMSw0NCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE0IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwot
ICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0g
KiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICog
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2lmbmRlZiBWaWV3U3RhdGVDaGFu
Z2VPYnNlcnZlcl9oCi0jZGVmaW5lIFZpZXdTdGF0ZUNoYW5nZU9ic2VydmVyX2gKLQotI2luY2x1
ZGUgIlZpZXdTdGF0ZS5oIgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLWNsYXNzIFZpZXdTdGF0
ZUNoYW5nZU9ic2VydmVyIHsKLXB1YmxpYzoKLSAgICB2aXJ0dWFsIH5WaWV3U3RhdGVDaGFuZ2VP
YnNlcnZlcigpCi0gICAgewotICAgIH0KLSAgICAKLSAgICB2aXJ0dWFsIHZvaWQgdmlld1N0YXRl
RGlkQ2hhbmdlKFZpZXdTdGF0ZTo6RmxhZ3Mgb2xkVmlld1N0YXRlLCBWaWV3U3RhdGU6OkZsYWdz
IG5ld1ZpZXdTdGF0ZSkgPSAwOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5k
aWYgLy8gVmlld1N0YXRlQ2hhbmdlT2JzZXJ2ZXJfaApJbmRleDogU291cmNlL1dlYktpdDIvQ2hh
bmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwkocmV2aXNpb24g
MjA4MTk1KQorKysgU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0x
LDMgKzEsMTM0IEBACisyMDE2LTEwLTMxICBHYXZpbiBCYXJyYWNsb3VnaCAgPGJhcnJhY2xvdWdo
QGFwcGxlLmNvbT4KKworICAgICAgICBSZW5hbWUgVmlld1N0YXRlIHRvIEFjdGl2aXR5U3RhdGUK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2NDI1NAor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFdlIHBsYW4g
dG8gYWRkIGEgY291cGxlIG1vcmUgZmxhZ3MgdG8gVmlld1N0YXRlIHRoYXQgYXJlbid0IGRpcmVj
dGx5IHJlbGF0ZWQgdG8gdGhlIHZpZXcKKyAgICAgICAgaXRzZWxmIC0gd2hldGhlciB0aGVyZSBp
cyBhbiBvbmdvaW5nIHBhZ2UgbG9hZCwgYW5kIHdoZXRoZXIgd2hldGhlciB0aGVyZSBpcyBhdWRp
byBwbGF5YmFjay4KKyAgICAgICAgVGhpcyB3aWxsIGFsbG93IHZpZXdTdGF0ZSAobm93IGFjdGl2
aXR5U3RhdGUpIHRvIGZ1bGx5IGRyaXZlIHRocm90dGxpbmcgZGVjaXNpb25zLgorCisgICAgICAg
IFJlbmFtaW5nIHRoaXMgYml0ZmllbGQgYWNjb3JkaW5nbHkuCisKKyAgICAgICAgKiBTaGFyZWQv
V2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycy5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VD
cmVhdGlvblBhcmFtZXRlcnM6OmVuY29kZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VDcmVh
dGlvblBhcmFtZXRlcnM6OmRlY29kZSk6CisgICAgICAgICogU2hhcmVkL1dlYlBhZ2VDcmVhdGlv
blBhcmFtZXRlcnMuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5t
bToKKyAgICAgICAgKC1bV0tXZWJWaWV3IGRpZE1vdmVUb1dpbmRvd10pOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXdCYXNlLmNwcDoKKyAgICAgICAgKF9XZWJLaXRX
ZWJWaWV3QmFzZVByaXZhdGU6Ol9XZWJLaXRXZWJWaWV3QmFzZVByaXZhdGUpOgorICAgICAgICAo
X1dlYktpdFdlYlZpZXdCYXNlUHJpdmF0ZTo6dXBkYXRlQWN0aXZpdHlTdGF0ZVRpbWVyRmlyZWQp
OgorICAgICAgICAod2Via2l0V2ViVmlld0Jhc2VTY2hlZHVsZVVwZGF0ZUFjdGl2aXR5U3RhdGUp
OgorICAgICAgICAodG9wbGV2ZWxXaW5kb3dGb2N1c0luRXZlbnQpOgorICAgICAgICAodG9wbGV2
ZWxXaW5kb3dGb2N1c091dEV2ZW50KToKKyAgICAgICAgKHRvcGxldmVsV2luZG93U3RhdGVFdmVu
dCk6CisgICAgICAgICh3ZWJraXRXZWJWaWV3QmFzZVNldFRvcGxldmVsT25TY3JlZW5XaW5kb3cp
OgorICAgICAgICAod2Via2l0V2ViVmlld0Jhc2VNYXApOgorICAgICAgICAod2Via2l0V2ViVmll
d0Jhc2VVbm1hcCk6CisgICAgICAgICh3ZWJraXRXZWJWaWV3QmFzZVNldEZvY3VzKToKKyAgICAg
ICAgKHdlYmtpdFdlYlZpZXdCYXNlSXNJbldpbmRvd0FjdGl2ZSk6CisgICAgICAgICh3ZWJraXRX
ZWJWaWV3QmFzZUlzRm9jdXNlZCk6CisgICAgICAgICh3ZWJraXRXZWJWaWV3QmFzZUlzVmlzaWJs
ZSk6CisgICAgICAgICh3ZWJraXRXZWJWaWV3QmFzZUlzSW5XaW5kb3cpOgorICAgICAgICAoX1dl
YktpdFdlYlZpZXdCYXNlUHJpdmF0ZTo6dXBkYXRlVmlld1N0YXRlVGltZXJGaXJlZCk6IERlbGV0
ZWQuCisgICAgICAgICh3ZWJraXRXZWJWaWV3QmFzZVNjaGVkdWxlVXBkYXRlVmlld1N0YXRlKTog
RGVsZXRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwubW06CisgICAg
ICAgIChXZWJLaXQ6OldlYlZpZXdJbXBsOjpiZWNvbWVGaXJzdFJlc3BvbmRlcik6CisgICAgICAg
IChXZWJLaXQ6OldlYlZpZXdJbXBsOjpyZXNpZ25GaXJzdFJlc3BvbmRlcik6CisgICAgICAgIChX
ZWJLaXQ6OldlYlZpZXdJbXBsOjp3aW5kb3dEaWRPcmRlck9mZlNjcmVlbik6CisgICAgICAgIChX
ZWJLaXQ6OldlYlZpZXdJbXBsOjp3aW5kb3dEaWRPcmRlck9uU2NyZWVuKToKKyAgICAgICAgKFdl
YktpdDo6V2ViVmlld0ltcGw6OndpbmRvd0RpZEJlY29tZUtleSk6CisgICAgICAgIChXZWJLaXQ6
OldlYlZpZXdJbXBsOjp3aW5kb3dEaWRSZXNpZ25LZXkpOgorICAgICAgICAoV2ViS2l0OjpXZWJW
aWV3SW1wbDo6d2luZG93RGlkTWluaWF0dXJpemUpOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3
SW1wbDo6d2luZG93RGlkRGVtaW5pYXR1cml6ZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXdJ
bXBsOjp3aW5kb3dEaWRDaGFuZ2VPY2NsdXNpb25TdGF0ZSk6CisgICAgICAgIChXZWJLaXQ6Oldl
YlZpZXdJbXBsOjp2aWV3RGlkTW92ZVRvV2luZG93KToKKyAgICAgICAgKFdlYktpdDo6V2ViVmll
d0ltcGw6OnZpZXdEaWRIaWRlKToKKyAgICAgICAgKFdlYktpdDo6V2ViVmlld0ltcGw6OnZpZXdE
aWRVbmhpZGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6YWN0aXZlU3BhY2VEaWRD
aGFuZ2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6ZW5kRGVmZXJyaW5nVmlld0lu
V2luZG93Q2hhbmdlcyk6CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXdJbXBsOjplbmREZWZlcnJp
bmdWaWV3SW5XaW5kb3dDaGFuZ2VzU3luYyk6CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXdJbXBs
OjpwcmVwYXJlRm9yTW92ZVRvV2luZG93KToKKyAgICAgICAgKiBVSVByb2Nlc3MvRHJhd2luZ0Fy
ZWFQcm94eS5oOgorICAgICAgICAoV2ViS2l0OjpEcmF3aW5nQXJlYVByb3h5Ojp3YWl0Rm9yRGlk
VXBkYXRlQWN0aXZpdHlTdGF0ZSk6CisgICAgICAgIChXZWJLaXQ6OkRyYXdpbmdBcmVhUHJveHk6
OndhaXRGb3JEaWRVcGRhdGVWaWV3U3RhdGUpOiBEZWxldGVkLgorICAgICAgICAqIFVJUHJvY2Vz
cy9XZWJQYWdlUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OldlYlBh
Z2VQcm94eSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6cmVhdHRhY2hUb1dlYlBy
b2Nlc3MpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnNldFN1cHByZXNzVmlzaWJp
bGl0eVVwZGF0ZXMpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnVwZGF0ZUFjdGl2
aXR5U3RhdGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmFjdGl2aXR5U3RhdGVE
aWRDaGFuZ2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmRpc3BhdGNoQWN0aXZp
dHlTdGF0ZUNoYW5nZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6dXBkYXRlVGhy
b3R0bGVTdGF0ZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6d2FpdEZvckRpZFVw
ZGF0ZUFjdGl2aXR5U3RhdGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmNyZWF0
aW9uUGFyYW1ldGVycyk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6aW5zdGFsbEFj
dGl2aXR5U3RhdGVDaGFuZ2VDb21wbGV0aW9uSGFuZGxlcik6CisgICAgICAgIChXZWJLaXQ6Oldl
YlBhZ2VQcm94eTo6dXBkYXRlVmlld1N0YXRlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6
V2ViUGFnZVByb3h5Ojp2aWV3U3RhdGVEaWRDaGFuZ2UpOiBEZWxldGVkLgorICAgICAgICAoV2Vi
S2l0OjpXZWJQYWdlUHJveHk6OmRpc3BhdGNoVmlld1N0YXRlQ2hhbmdlKTogRGVsZXRlZC4KKyAg
ICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5Ojp3YWl0Rm9yRGlkVXBkYXRlVmlld1N0YXRlKTog
RGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjppbnN0YWxsVmlld1N0YXRl
Q2hhbmdlQ29tcGxldGlvbkhhbmRsZXIpOiBEZWxldGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9X
ZWJQYWdlUHJveHkuaDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5Ojppc0luV2luZG93
KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpkaWRVcGRhdGVBY3Rpdml0eVN0YXRl
KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5Ojppc1ZpZXdWaXNpYmxlKToKKyAgICAg
ICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpkaWRVcGRhdGVWaWV3U3RhdGUpOiBEZWxldGVkLgor
ICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW46CisgICAgICAgICog
VUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nl
c3NQcm94eTo6d2luZG93U2VydmVyQ29ubmVjdGlvblN0YXRlQ2hhbmdlZCk6CisgICAgICAgICog
VUlQcm9jZXNzL2VmbC9XZWJWaWV3LmNwcDoKKyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL1dLQ29u
dGVudFZpZXcubW06CisgICAgICAgICgtW1dLQ29udGVudFZpZXcgX2FwcGxpY2F0aW9uRGlkRW50
ZXJCYWNrZ3JvdW5kXSk6CisgICAgICAgICgtW1dLQ29udGVudFZpZXcgX2FwcGxpY2F0aW9uV2ls
bEVudGVyRm9yZWdyb3VuZF0pOgorICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvV0tQREZWaWV3Lm1t
OgorICAgICAgICAoLVtXS1BERlZpZXcgX2FwcGxpY2F0aW9uRGlkRW50ZXJCYWNrZ3JvdW5kXSk6
CisgICAgICAgICgtW1dLUERGVmlldyBfYXBwbGljYXRpb25XaWxsRW50ZXJGb3JlZ3JvdW5kXSk6
CisgICAgICAgICogVUlQcm9jZXNzL2lvcy9XZWJQYWdlUHJveHlJT1MubW06CisgICAgICAgIChX
ZWJLaXQ6OldlYlBhZ2VQcm94eTo6c3luY2hyb25pemVEeW5hbWljVmlld3BvcnRVcGRhdGUpOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9tYWMvUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWFQcm94eS5o
OgorICAgICAgICAqIFVJUHJvY2Vzcy9tYWMvUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWFQcm94
eS5tbToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWFQcm94eTo6
ZGlkUmVmcmVzaERpc3BsYXkpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVMYXllclRyZWVEcmF3
aW5nQXJlYVByb3h5Ojp3YWl0Rm9yRGlkVXBkYXRlQWN0aXZpdHlTdGF0ZSk6CisgICAgICAgIChX
ZWJLaXQ6OlJlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhUHJveHk6OndhaXRGb3JEaWRVcGRhdGVW
aWV3U3RhdGUpOiBEZWxldGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9tYWMvVGlsZWRDb3JlQW5p
bWF0aW9uRHJhd2luZ0FyZWFQcm94eS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9tYWMvVGlsZWRD
b3JlQW5pbWF0aW9uRHJhd2luZ0FyZWFQcm94eS5tbToKKyAgICAgICAgKFdlYktpdDo6VGlsZWRD
b3JlQW5pbWF0aW9uRHJhd2luZ0FyZWFQcm94eTo6d2FpdEZvckRpZFVwZGF0ZUFjdGl2aXR5U3Rh
dGUpOgorICAgICAgICAoV2ViS2l0OjpUaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYVByb3h5
Ojp3YWl0Rm9yRGlkVXBkYXRlVmlld1N0YXRlKTogRGVsZXRlZC4KKyAgICAgICAgKiBXZWJQcm9j
ZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5jcHA6CisgICAgICAgIChXZWJLaXQ6OlBsdWdpblZpZXc6
OmFjdGl2aXR5U3RhdGVEaWRDaGFuZ2UpOgorICAgICAgICAoV2ViS2l0OjpQbHVnaW5WaWV3Ojp2
aWV3U3RhdGVEaWRDaGFuZ2UpOiBEZWxldGVkLgorICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lu
cy9QbHVnaW5WaWV3Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL0FjY2VsZXJhdGVk
RHJhd2luZ0FyZWEuY3BwOgorICAgICAgICAoV2ViS2l0OjpBY2NlbGVyYXRlZERyYXdpbmdBcmVh
OjphY3Rpdml0eVN0YXRlRGlkQ2hhbmdlKToKKyAgICAgICAgKFdlYktpdDo6QWNjZWxlcmF0ZWRE
cmF3aW5nQXJlYTo6dmlld1N0YXRlRGlkQ2hhbmdlKTogRGVsZXRlZC4KKyAgICAgICAgKiBXZWJQ
cm9jZXNzL1dlYlBhZ2UvQWNjZWxlcmF0ZWREcmF3aW5nQXJlYS5oOgorICAgICAgICAqIFdlYlBy
b2Nlc3MvV2ViUGFnZS9EcmF3aW5nQXJlYS5oOgorICAgICAgICAoV2ViS2l0OjpEcmF3aW5nQXJl
YTo6YWN0aXZpdHlTdGF0ZURpZENoYW5nZSk6CisgICAgICAgIChXZWJLaXQ6OkRyYXdpbmdBcmVh
Ojp2aWV3U3RhdGVEaWRDaGFuZ2UpOiBEZWxldGVkLgorICAgICAgICAqIFdlYlByb2Nlc3MvV2Vi
UGFnZS9XZWJQYWdlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6bV91c2VySW50ZXJmYWNlTGF5b3V0
RGlyZWN0aW9uKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6cmVpbml0aWFsaXplV2ViUGFn
ZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnVwZGF0ZUlzSW5XaW5kb3cpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJQYWdlOjpzZXRBY3Rpdml0eVN0YXRlKToKKyAgICAgICAgKFdlYktpdDo6
V2ViUGFnZTo6c2V0Vmlld1N0YXRlKTogRGVsZXRlZC4KKyAgICAgICAgKiBXZWJQcm9jZXNzL1dl
YlBhZ2UvV2ViUGFnZS5oOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjppc1Zpc2libGUpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjppc1Zpc2libGVPck9jY2x1ZGVkKToKKyAgICAgICAg
KiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBXZWJQ
cm9jZXNzL1dlYlBhZ2UvbWFjL1JlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhLmg6CisgICAgICAg
ICogV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9SZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYS5tbToK
KyAgICAgICAgKFdlYktpdDo6UmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWE6OmFjdGl2aXR5U3Rh
dGVEaWRDaGFuZ2UpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVMYXllclRyZWVEcmF3aW5nQXJl
YTo6dmlld1N0YXRlRGlkQ2hhbmdlKTogRGVsZXRlZC4KKyAgICAgICAgKiBXZWJQcm9jZXNzL1dl
YlBhZ2UvbWFjL1RpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhLmg6CisgICAgICAgICogV2Vi
UHJvY2Vzcy9XZWJQYWdlL21hYy9UaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYS5tbToKKyAg
ICAgICAgKFdlYktpdDo6VGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWE6OlRpbGVkQ29yZUFu
aW1hdGlvbkRyYXdpbmdBcmVhKToKKyAgICAgICAgKFdlYktpdDo6VGlsZWRDb3JlQW5pbWF0aW9u
RHJhd2luZ0FyZWE6OmFjdGl2aXR5U3RhdGVEaWRDaGFuZ2UpOgorICAgICAgICAoV2ViS2l0OjpU
aWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYTo6ZGlkVXBkYXRlQWN0aXZpdHlTdGF0ZVRpbWVy
RmlyZWQpOgorICAgICAgICAoV2ViS2l0OjpUaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYTo6
dmlld1N0YXRlRGlkQ2hhbmdlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6VGlsZWRDb3Jl
QW5pbWF0aW9uRHJhd2luZ0FyZWE6OmRpZFVwZGF0ZVZpZXdTdGF0ZVRpbWVyRmlyZWQpOiBEZWxl
dGVkLgorCiAyMDE2LTEwLTMxICBCcmFkeSBFaWRzb24gIDxiZWlkc29uQGFwcGxlLmNvbT4KIAog
ICAgICAgICBJbmRleGVkREIgMi4wOiBTdXBwb3J0IElEQk9iamVjdFN0b3JlIGdldEFsbC9nZXRB
bGxLZXlzLgpJbmRleDogU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYlBhZ2VDcmVhdGlvblBhcmFt
ZXRlcnMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJQYWdlQ3Jl
YXRpb25QYXJhbWV0ZXJzLmNwcAkocmV2aXNpb24gMjA4MTc3KQorKysgU291cmNlL1dlYktpdDIv
U2hhcmVkL1dlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0z
Myw3ICszMyw3IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogdm9pZCBXZWJQYWdlQ3JlYXRpb25QYXJh
bWV0ZXJzOjplbmNvZGUoSVBDOjpFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAogewogICAgIGVuY29k
ZXIgPDwgdmlld1NpemU7Ci0gICAgZW5jb2RlciA8PCB2aWV3U3RhdGU7CisgICAgZW5jb2RlciA8
PCBhY3Rpdml0eVN0YXRlOwogCiAgICAgZW5jb2RlciA8PCBzdG9yZTsKICAgICBlbmNvZGVyLmVu
Y29kZUVudW0oZHJhd2luZ0FyZWFUeXBlKTsKQEAgLTk0LDcgKzk0LDcgQEAgYm9vbCBXZWJQYWdl
Q3JlYXRpb25QYXJhbWV0ZXJzOjpkZWNvZGUoSQogewogICAgIGlmICghZGVjb2Rlci5kZWNvZGUo
cGFyYW1ldGVycy52aWV3U2l6ZSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBpZiAoIWRl
Y29kZXIuZGVjb2RlKHBhcmFtZXRlcnMudmlld1N0YXRlKSkKKyAgICBpZiAoIWRlY29kZXIuZGVj
b2RlKHBhcmFtZXRlcnMuYWN0aXZpdHlTdGF0ZSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAg
ICBpZiAoIWRlY29kZXIuZGVjb2RlKHBhcmFtZXRlcnMuc3RvcmUpKQogICAgICAgICByZXR1cm4g
ZmFsc2U7CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViUGFnZUNyZWF0aW9uUGFyYW1l
dGVycy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJQYWdlQ3JlYXRp
b25QYXJhbWV0ZXJzLmgJKHJldmlzaW9uIDIwODE3NykKKysrIFNvdXJjZS9XZWJLaXQyL1NoYXJl
ZC9XZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzLmgJKHdvcmtpbmcgY29weSkKQEAgLTQwLDcgKzQw
LDcgQEAKICNpbmNsdWRlIDxXZWJDb3JlL1Njcm9sbFR5cGVzLmg+CiAjaW5jbHVkZSA8V2ViQ29y
ZS9TZXNzaW9uSUQuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1VzZXJJbnRlcmZhY2VMYXlvdXREaXJl
Y3Rpb24uaD4KLSNpbmNsdWRlIDxXZWJDb3JlL1ZpZXdTdGF0ZS5oPgorI2luY2x1ZGUgPFdlYkNv
cmUvQWN0aXZpdHlTdGF0ZS5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCiAj
aWYgUExBVEZPUk0oTUFDKQpAQCAtNjAsNyArNjAsNyBAQCBzdHJ1Y3QgV2ViUGFnZUNyZWF0aW9u
UGFyYW1ldGVycyB7CiAKICAgICBXZWJDb3JlOjpJbnRTaXplIHZpZXdTaXplOwogCi0gICAgV2Vi
Q29yZTo6Vmlld1N0YXRlOjpGbGFncyB2aWV3U3RhdGU7CisgICAgV2ViQ29yZTo6QWN0aXZpdHlT
dGF0ZTo6RmxhZ3MgYWN0aXZpdHlTdGF0ZTsKICAgICAKICAgICBXZWJQcmVmZXJlbmNlc1N0b3Jl
IHN0b3JlOwogICAgIERyYXdpbmdBcmVhVHlwZSBkcmF3aW5nQXJlYVR5cGU7CkluZGV4OiBTb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvRHJhd2luZ0FyZWFQcm94eS5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9EcmF3aW5nQXJlYVByb3h5LmgJKHJldmlzaW9uIDIwODE3
NykKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9EcmF3aW5nQXJlYVByb3h5LmgJKHdvcmtp
bmcgY29weSkKQEAgLTg5LDcgKzg5LDcgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCB2b2lkIHVw
ZGF0ZURlYnVnSW5kaWNhdG9yKCkgeyB9CiAKLSAgICB2aXJ0dWFsIHZvaWQgd2FpdEZvckRpZFVw
ZGF0ZVZpZXdTdGF0ZSgpIHsgfQorICAgIHZpcnR1YWwgdm9pZCB3YWl0Rm9yRGlkVXBkYXRlQWN0
aXZpdHlTdGF0ZSgpIHsgfQogICAgIAogICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaEFmdGVyRW5z
dXJpbmdEcmF3aW5nKHN0ZDo6ZnVuY3Rpb248dm9pZCAoQ2FsbGJhY2tCYXNlOjpFcnJvcik+KSB7
IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOyB9CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9XZWJQYWdlUHJveHkuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9XZWJQYWdlUHJveHkuY3BwCShyZXZpc2lvbiAyMDgxNzcpCisrKyBTb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzU3LDcgKzM1Nyw3
IEBAIFdlYlBhZ2VQcm94eTo6V2ViUGFnZVByb3h5KFBhZ2VDbGllbnQmIHAKICAgICAsIG1fZ2Vv
bG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXIoKnRoaXMpCiAgICAgLCBtX25vdGlmaWNh
dGlvblBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlcigqdGhpcykKICAgICAsIG1fdXNlck1lZGlhUGVy
bWlzc2lvblJlcXVlc3RNYW5hZ2VyKCp0aGlzKQotICAgICwgbV92aWV3U3RhdGUoVmlld1N0YXRl
OjpOb0ZsYWdzKQorICAgICwgbV9hY3Rpdml0eVN0YXRlKEFjdGl2aXR5U3RhdGU6Ok5vRmxhZ3Mp
CiAgICAgLCBtX3ZpZXdXYXNFdmVySW5XaW5kb3coZmFsc2UpCiAjaWYgUExBVEZPUk0oSU9TKQog
ICAgICwgbV9hbHdheXNSdW5zQXRGb3JlZ3JvdW5kUHJpb3JpdHkobV9jb25maWd1cmF0aW9uLT5h
bHdheXNSdW5zQXRGb3JlZ3JvdW5kUHJpb3JpdHkoKSkKQEAgLTQ0OSwyNiArNDQ5LDI2IEBAIFdl
YlBhZ2VQcm94eTo6V2ViUGFnZVByb3h5KFBhZ2VDbGllbnQmIHAKICAgICAsIG1fYXV0b1Npemlu
Z1Nob3VsZEV4cGFuZFRvVmlld0hlaWdodChmYWxzZSkKICAgICAsIG1fbWVkaWFWb2x1bWUoMSkK
ICAgICAsIG1fbWF5U3RhcnRNZWRpYVdoZW5JbldpbmRvdyh0cnVlKQotICAgICwgbV93YWl0aW5n
Rm9yRGlkVXBkYXRlVmlld1N0YXRlKGZhbHNlKQorICAgICwgbV93YWl0aW5nRm9yRGlkVXBkYXRl
QWN0aXZpdHlTdGF0ZShmYWxzZSkKICNpZiBQTEFURk9STShDT0NPQSkKICAgICAsIG1fc2Nyb2xs
UGVyZm9ybWFuY2VEYXRhQ29sbGVjdGlvbkVuYWJsZWQoZmFsc2UpCiAjZW5kaWYKICAgICAsIG1f
c2Nyb2xsUGlubmluZ0JlaGF2aW9yKERvTm90UGluKQogICAgICwgbV9uYXZpZ2F0aW9uSUQoMCkK
ICAgICAsIG1fY29uZmlndXJhdGlvblByZWZlcmVuY2VWYWx1ZXMobV9jb25maWd1cmF0aW9uLT5w
cmVmZXJlbmNlVmFsdWVzKCkpCi0gICAgLCBtX3BvdGVudGlhbGx5Q2hhbmdlZFZpZXdTdGF0ZUZs
YWdzKFZpZXdTdGF0ZTo6Tm9GbGFncykKLSAgICAsIG1fdmlld1N0YXRlQ2hhbmdlV2FudHNTeW5j
aHJvbm91c1JlcGx5KGZhbHNlKQorICAgICwgbV9wb3RlbnRpYWxseUNoYW5nZWRBY3Rpdml0eVN0
YXRlRmxhZ3MoQWN0aXZpdHlTdGF0ZTo6Tm9GbGFncykKKyAgICAsIG1fYWN0aXZpdHlTdGF0ZUNo
YW5nZVdhbnRzU3luY2hyb25vdXNSZXBseShmYWxzZSkKICAgICAsIG1fd2Vha1B0ckZhY3Rvcnko
dGhpcykKIHsKICAgICBtX3dlYlByb2Nlc3NMaWZldGltZVRyYWNrZXIuYWRkT2JzZXJ2ZXIobV92
aXNpdGVkTGlua1N0b3JlKTsKICAgICBtX3dlYlByb2Nlc3NMaWZldGltZVRyYWNrZXIuYWRkT2Jz
ZXJ2ZXIobV93ZWJzaXRlRGF0YVN0b3JlKTsKIAotICAgIHVwZGF0ZVZpZXdTdGF0ZSgpOworICAg
IHVwZGF0ZUFjdGl2aXR5U3RhdGUoKTsKICAgICB1cGRhdGVUaHJvdHRsZVN0YXRlKCk7CiAgICAg
dXBkYXRlSGlkZGVuUGFnZVRocm90dGxpbmdBdXRvSW5jcmVhc2VzKCk7CiAgICAgCiAjaWYgSEFW
RShPVVRfT0ZfUFJPQ0VTU19MQVlFUl9IT1NUSU5HKQotICAgIG1fbGF5ZXJIb3N0aW5nTW9kZSA9
IG1fdmlld1N0YXRlICYgVmlld1N0YXRlOjpJc0luV2luZG93ID8gbV9wYWdlQ2xpZW50LnZpZXdM
YXllckhvc3RpbmdNb2RlKCkgOiBMYXllckhvc3RpbmdNb2RlOjpPdXRPZlByb2Nlc3M7CisgICAg
bV9sYXllckhvc3RpbmdNb2RlID0gbV9hY3Rpdml0eVN0YXRlICYgQWN0aXZpdHlTdGF0ZTo6SXNJ
bldpbmRvdyA/IG1fcGFnZUNsaWVudC52aWV3TGF5ZXJIb3N0aW5nTW9kZSgpIDogTGF5ZXJIb3N0
aW5nTW9kZTo6T3V0T2ZQcm9jZXNzOwogI2VuZGlmCiAKICAgICBwbGF0Zm9ybUluaXRpYWxpemUo
KTsKQEAgLTUwNiw5ICs1MDYsOSBAQCBXZWJQYWdlUHJveHk6OldlYlBhZ2VQcm94eShQYWdlQ2xp
ZW50JiBwCiAgICAgfQogCiAjaWYgUExBVEZPUk0oQ09DT0EpCi0gICAgY29uc3QgQ0ZJbmRleCB2
aWV3U3RhdGVDaGFuZ2VSdW5Mb29wT3JkZXIgPSAoQ0ZJbmRleClSdW5Mb29wT2JzZXJ2ZXI6Oldl
bGxLbm93blJ1bkxvb3BPcmRlcnM6OkNvcmVBbmltYXRpb25Db21taXQgLSAxOwotICAgIG1fdmll
d1N0YXRlQ2hhbmdlRGlzcGF0Y2hlciA9IHN0ZDo6bWFrZV91bmlxdWU8UnVuTG9vcE9ic2VydmVy
Pih2aWV3U3RhdGVDaGFuZ2VSdW5Mb29wT3JkZXIsIFt0aGlzXSB7Ci0gICAgICAgIHRoaXMtPmRp
c3BhdGNoVmlld1N0YXRlQ2hhbmdlKCk7CisgICAgY29uc3QgQ0ZJbmRleCBhY3Rpdml0eVN0YXRl
Q2hhbmdlUnVuTG9vcE9yZGVyID0gKENGSW5kZXgpUnVuTG9vcE9ic2VydmVyOjpXZWxsS25vd25S
dW5Mb29wT3JkZXJzOjpDb3JlQW5pbWF0aW9uQ29tbWl0IC0gMTsKKyAgICBtX2FjdGl2aXR5U3Rh
dGVDaGFuZ2VEaXNwYXRjaGVyID0gc3RkOjptYWtlX3VuaXF1ZTxSdW5Mb29wT2JzZXJ2ZXI+KGFj
dGl2aXR5U3RhdGVDaGFuZ2VSdW5Mb29wT3JkZXIsIFt0aGlzXSB7CisgICAgICAgIHRoaXMtPmRp
c3BhdGNoQWN0aXZpdHlTdGF0ZUNoYW5nZSgpOwogICAgIH0pOwogI2VuZGlmCiB9CkBAIC03MjAs
NyArNzIwLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnJlYXR0YWNoVG9XZWJQcm9jZXNzKAogICAg
IG1fcHJvY2Vzcy0+YWRkRXhpc3RpbmdXZWJQYWdlKHRoaXMsIG1fcGFnZUlEKTsKICAgICBtX3By
b2Nlc3MtPmFkZE1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6V2ViUGFnZVByb3h5OjptZXNzYWdl
UmVjZWl2ZXJOYW1lKCksIG1fcGFnZUlELCAqdGhpcyk7CiAKLSAgICB1cGRhdGVWaWV3U3RhdGUo
KTsKKyAgICB1cGRhdGVBY3Rpdml0eVN0YXRlKCk7CiAgICAgdXBkYXRlVGhyb3R0bGVTdGF0ZSgp
OwogCiAgICAgbV9pbnNwZWN0b3IgPSBXZWJJbnNwZWN0b3JQcm94eTo6Y3JlYXRlKHRoaXMpOwpA
QCAtMTQ0Miw0OCArMTQ0Miw0OCBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6c2V0U3VwcHJlc3NWaXNp
YmlsaXR5CiAKICAgICBpZiAoIW1fc3VwcHJlc3NWaXNpYmlsaXR5VXBkYXRlcykgewogI2lmIFBM
QVRGT1JNKENPQ09BKQotICAgICAgICBtX3ZpZXdTdGF0ZUNoYW5nZURpc3BhdGNoZXItPnNjaGVk
dWxlKCk7CisgICAgICAgIG1fYWN0aXZpdHlTdGF0ZUNoYW5nZURpc3BhdGNoZXItPnNjaGVkdWxl
KCk7CiAjZWxzZQotICAgICAgICBkaXNwYXRjaFZpZXdTdGF0ZUNoYW5nZSgpOworICAgICAgICBk
aXNwYXRjaEFjdGl2aXR5U3RhdGVDaGFuZ2UoKTsKICNlbmRpZgogICAgIH0KIH0KIAotdm9pZCBX
ZWJQYWdlUHJveHk6OnVwZGF0ZVZpZXdTdGF0ZShWaWV3U3RhdGU6OkZsYWdzIGZsYWdzVG9VcGRh
dGUpCit2b2lkIFdlYlBhZ2VQcm94eTo6dXBkYXRlQWN0aXZpdHlTdGF0ZShBY3Rpdml0eVN0YXRl
OjpGbGFncyBmbGFnc1RvVXBkYXRlKQogewotICAgIG1fdmlld1N0YXRlICY9IH5mbGFnc1RvVXBk
YXRlOwotICAgIGlmIChmbGFnc1RvVXBkYXRlICYgVmlld1N0YXRlOjpJc0ZvY3VzZWQgJiYgbV9w
YWdlQ2xpZW50LmlzVmlld0ZvY3VzZWQoKSkKLSAgICAgICAgbV92aWV3U3RhdGUgfD0gVmlld1N0
YXRlOjpJc0ZvY3VzZWQ7Ci0gICAgaWYgKGZsYWdzVG9VcGRhdGUgJiBWaWV3U3RhdGU6OldpbmRv
d0lzQWN0aXZlICYmIG1fcGFnZUNsaWVudC5pc1ZpZXdXaW5kb3dBY3RpdmUoKSkKLSAgICAgICAg
bV92aWV3U3RhdGUgfD0gVmlld1N0YXRlOjpXaW5kb3dJc0FjdGl2ZTsKLSAgICBpZiAoZmxhZ3NU
b1VwZGF0ZSAmIFZpZXdTdGF0ZTo6SXNWaXNpYmxlICYmIG1fcGFnZUNsaWVudC5pc1ZpZXdWaXNp
YmxlKCkpCi0gICAgICAgIG1fdmlld1N0YXRlIHw9IFZpZXdTdGF0ZTo6SXNWaXNpYmxlOwotICAg
IGlmIChmbGFnc1RvVXBkYXRlICYgVmlld1N0YXRlOjpJc1Zpc2libGVPck9jY2x1ZGVkICYmIG1f
cGFnZUNsaWVudC5pc1ZpZXdWaXNpYmxlT3JPY2NsdWRlZCgpKQotICAgICAgICBtX3ZpZXdTdGF0
ZSB8PSBWaWV3U3RhdGU6OklzVmlzaWJsZU9yT2NjbHVkZWQ7Ci0gICAgaWYgKGZsYWdzVG9VcGRh
dGUgJiBWaWV3U3RhdGU6OklzSW5XaW5kb3cgJiYgbV9wYWdlQ2xpZW50LmlzVmlld0luV2luZG93
KCkpCi0gICAgICAgIG1fdmlld1N0YXRlIHw9IFZpZXdTdGF0ZTo6SXNJbldpbmRvdzsKLSAgICBp
ZiAoZmxhZ3NUb1VwZGF0ZSAmIFZpZXdTdGF0ZTo6SXNWaXN1YWxseUlkbGUgJiYgbV9wYWdlQ2xp
ZW50LmlzVmlzdWFsbHlJZGxlKCkpCi0gICAgICAgIG1fdmlld1N0YXRlIHw9IFZpZXdTdGF0ZTo6
SXNWaXN1YWxseUlkbGU7CisgICAgbV9hY3Rpdml0eVN0YXRlICY9IH5mbGFnc1RvVXBkYXRlOwor
ICAgIGlmIChmbGFnc1RvVXBkYXRlICYgQWN0aXZpdHlTdGF0ZTo6SXNGb2N1c2VkICYmIG1fcGFn
ZUNsaWVudC5pc1ZpZXdGb2N1c2VkKCkpCisgICAgICAgIG1fYWN0aXZpdHlTdGF0ZSB8PSBBY3Rp
dml0eVN0YXRlOjpJc0ZvY3VzZWQ7CisgICAgaWYgKGZsYWdzVG9VcGRhdGUgJiBBY3Rpdml0eVN0
YXRlOjpXaW5kb3dJc0FjdGl2ZSAmJiBtX3BhZ2VDbGllbnQuaXNWaWV3V2luZG93QWN0aXZlKCkp
CisgICAgICAgIG1fYWN0aXZpdHlTdGF0ZSB8PSBBY3Rpdml0eVN0YXRlOjpXaW5kb3dJc0FjdGl2
ZTsKKyAgICBpZiAoZmxhZ3NUb1VwZGF0ZSAmIEFjdGl2aXR5U3RhdGU6OklzVmlzaWJsZSAmJiBt
X3BhZ2VDbGllbnQuaXNWaWV3VmlzaWJsZSgpKQorICAgICAgICBtX2FjdGl2aXR5U3RhdGUgfD0g
QWN0aXZpdHlTdGF0ZTo6SXNWaXNpYmxlOworICAgIGlmIChmbGFnc1RvVXBkYXRlICYgQWN0aXZp
dHlTdGF0ZTo6SXNWaXNpYmxlT3JPY2NsdWRlZCAmJiBtX3BhZ2VDbGllbnQuaXNWaWV3VmlzaWJs
ZU9yT2NjbHVkZWQoKSkKKyAgICAgICAgbV9hY3Rpdml0eVN0YXRlIHw9IEFjdGl2aXR5U3RhdGU6
OklzVmlzaWJsZU9yT2NjbHVkZWQ7CisgICAgaWYgKGZsYWdzVG9VcGRhdGUgJiBBY3Rpdml0eVN0
YXRlOjpJc0luV2luZG93ICYmIG1fcGFnZUNsaWVudC5pc1ZpZXdJbldpbmRvdygpKQorICAgICAg
ICBtX2FjdGl2aXR5U3RhdGUgfD0gQWN0aXZpdHlTdGF0ZTo6SXNJbldpbmRvdzsKKyAgICBpZiAo
ZmxhZ3NUb1VwZGF0ZSAmIEFjdGl2aXR5U3RhdGU6OklzVmlzdWFsbHlJZGxlICYmIG1fcGFnZUNs
aWVudC5pc1Zpc3VhbGx5SWRsZSgpKQorICAgICAgICBtX2FjdGl2aXR5U3RhdGUgfD0gQWN0aXZp
dHlTdGF0ZTo6SXNWaXN1YWxseUlkbGU7CiB9CiAKLXZvaWQgV2ViUGFnZVByb3h5Ojp2aWV3U3Rh
dGVEaWRDaGFuZ2UoVmlld1N0YXRlOjpGbGFncyBtYXlIYXZlQ2hhbmdlZCwgYm9vbCB3YW50c1N5
bmNocm9ub3VzUmVwbHksIFZpZXdTdGF0ZUNoYW5nZURpc3BhdGNoTW9kZSBkaXNwYXRjaE1vZGUp
Cit2b2lkIFdlYlBhZ2VQcm94eTo6YWN0aXZpdHlTdGF0ZURpZENoYW5nZShBY3Rpdml0eVN0YXRl
OjpGbGFncyBtYXlIYXZlQ2hhbmdlZCwgYm9vbCB3YW50c1N5bmNocm9ub3VzUmVwbHksIEFjdGl2
aXR5U3RhdGVDaGFuZ2VEaXNwYXRjaE1vZGUgZGlzcGF0Y2hNb2RlKQogewotICAgIG1fcG90ZW50
aWFsbHlDaGFuZ2VkVmlld1N0YXRlRmxhZ3MgfD0gbWF5SGF2ZUNoYW5nZWQ7Ci0gICAgbV92aWV3
U3RhdGVDaGFuZ2VXYW50c1N5bmNocm9ub3VzUmVwbHkgPSBtX3ZpZXdTdGF0ZUNoYW5nZVdhbnRz
U3luY2hyb25vdXNSZXBseSB8fCB3YW50c1N5bmNocm9ub3VzUmVwbHk7CisgICAgbV9wb3RlbnRp
YWxseUNoYW5nZWRBY3Rpdml0eVN0YXRlRmxhZ3MgfD0gbWF5SGF2ZUNoYW5nZWQ7CisgICAgbV9h
Y3Rpdml0eVN0YXRlQ2hhbmdlV2FudHNTeW5jaHJvbm91c1JlcGx5ID0gbV9hY3Rpdml0eVN0YXRl
Q2hhbmdlV2FudHNTeW5jaHJvbm91c1JlcGx5IHx8IHdhbnRzU3luY2hyb25vdXNSZXBseTsKIAot
ICAgIGlmIChtX3N1cHByZXNzVmlzaWJpbGl0eVVwZGF0ZXMgJiYgZGlzcGF0Y2hNb2RlICE9IFZp
ZXdTdGF0ZUNoYW5nZURpc3BhdGNoTW9kZTo6SW1tZWRpYXRlKQorICAgIGlmIChtX3N1cHByZXNz
VmlzaWJpbGl0eVVwZGF0ZXMgJiYgZGlzcGF0Y2hNb2RlICE9IEFjdGl2aXR5U3RhdGVDaGFuZ2VE
aXNwYXRjaE1vZGU6OkltbWVkaWF0ZSkKICAgICAgICAgcmV0dXJuOwogCiAjaWYgUExBVEZPUk0o
Q09DT0EpCi0gICAgYm9vbCBpc05ld2x5SW5XaW5kb3cgPSAhaXNJbldpbmRvdygpICYmIChtYXlI
YXZlQ2hhbmdlZCAmIFZpZXdTdGF0ZTo6SXNJbldpbmRvdykgJiYgbV9wYWdlQ2xpZW50LmlzVmll
d0luV2luZG93KCk7Ci0gICAgaWYgKGRpc3BhdGNoTW9kZSA9PSBWaWV3U3RhdGVDaGFuZ2VEaXNw
YXRjaE1vZGU6OkltbWVkaWF0ZSB8fCBpc05ld2x5SW5XaW5kb3cpIHsKLSAgICAgICAgZGlzcGF0
Y2hWaWV3U3RhdGVDaGFuZ2UoKTsKKyAgICBib29sIGlzTmV3bHlJbldpbmRvdyA9ICFpc0luV2lu
ZG93KCkgJiYgKG1heUhhdmVDaGFuZ2VkICYgQWN0aXZpdHlTdGF0ZTo6SXNJbldpbmRvdykgJiYg
bV9wYWdlQ2xpZW50LmlzVmlld0luV2luZG93KCk7CisgICAgaWYgKGRpc3BhdGNoTW9kZSA9PSBB
Y3Rpdml0eVN0YXRlQ2hhbmdlRGlzcGF0Y2hNb2RlOjpJbW1lZGlhdGUgfHwgaXNOZXdseUluV2lu
ZG93KSB7CisgICAgICAgIGRpc3BhdGNoQWN0aXZpdHlTdGF0ZUNoYW5nZSgpOwogICAgICAgICBy
ZXR1cm47CiAgICAgfQotICAgIG1fdmlld1N0YXRlQ2hhbmdlRGlzcGF0Y2hlci0+c2NoZWR1bGUo
KTsKKyAgICBtX2FjdGl2aXR5U3RhdGVDaGFuZ2VEaXNwYXRjaGVyLT5zY2hlZHVsZSgpOwogI2Vs
c2UKICAgICBVTlVTRURfUEFSQU0oZGlzcGF0Y2hNb2RlKTsKLSAgICBkaXNwYXRjaFZpZXdTdGF0
ZUNoYW5nZSgpOworICAgIGRpc3BhdGNoQWN0aXZpdHlTdGF0ZUNoYW5nZSgpOwogI2VuZGlmCiB9
CiAKQEAgLTE1MTAsNTQgKzE1MTAsNTQgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnZpZXdEaWRFbnRl
cldpbmRvdygpCiAgICAgfQogfQogCi12b2lkIFdlYlBhZ2VQcm94eTo6ZGlzcGF0Y2hWaWV3U3Rh
dGVDaGFuZ2UoKQordm9pZCBXZWJQYWdlUHJveHk6OmRpc3BhdGNoQWN0aXZpdHlTdGF0ZUNoYW5n
ZSgpCiB7CiAjaWYgUExBVEZPUk0oQ09DT0EpCi0gICAgbV92aWV3U3RhdGVDaGFuZ2VEaXNwYXRj
aGVyLT5pbnZhbGlkYXRlKCk7CisgICAgbV9hY3Rpdml0eVN0YXRlQ2hhbmdlRGlzcGF0Y2hlci0+
aW52YWxpZGF0ZSgpOwogI2VuZGlmCiAKICAgICBpZiAoIWlzVmFsaWQoKSkKICAgICAgICAgcmV0
dXJuOwogCiAgICAgLy8gSWYgdGhlIHZpc2liaWxpdHkgc3RhdGUgbWF5IGhhdmUgY2hhbmdlZCwg
dGhlbiBzbyBtYXkgdGhlIHZpc3VhbGx5IGlkbGUgJiBvY2NsdWRlZCBhZ25vc3RpYyBzdGF0ZS4K
LSAgICBpZiAobV9wb3RlbnRpYWxseUNoYW5nZWRWaWV3U3RhdGVGbGFncyAmIFZpZXdTdGF0ZTo6
SXNWaXNpYmxlKQotICAgICAgICBtX3BvdGVudGlhbGx5Q2hhbmdlZFZpZXdTdGF0ZUZsYWdzIHw9
IFZpZXdTdGF0ZTo6SXNWaXNpYmxlT3JPY2NsdWRlZCB8IFZpZXdTdGF0ZTo6SXNWaXN1YWxseUlk
bGU7CisgICAgaWYgKG1fcG90ZW50aWFsbHlDaGFuZ2VkQWN0aXZpdHlTdGF0ZUZsYWdzICYgQWN0
aXZpdHlTdGF0ZTo6SXNWaXNpYmxlKQorICAgICAgICBtX3BvdGVudGlhbGx5Q2hhbmdlZEFjdGl2
aXR5U3RhdGVGbGFncyB8PSBBY3Rpdml0eVN0YXRlOjpJc1Zpc2libGVPck9jY2x1ZGVkIHwgQWN0
aXZpdHlTdGF0ZTo6SXNWaXN1YWxseUlkbGU7CiAKICAgICAvLyBSZWNvcmQgdGhlIHByaW9yIHZp
ZXcgc3RhdGUsIHVwZGF0ZSB0aGUgZmxhZ3MgdGhhdCBtYXkgaGF2ZSBjaGFuZ2VkLAogICAgIC8v
IGFuZCBjaGVjayB3aGljaCBmbGFncyBoYXZlIGFjdHVhbGx5IGNoYW5nZWQuCi0gICAgVmlld1N0
YXRlOjpGbGFncyBwcmV2aW91c1ZpZXdTdGF0ZSA9IG1fdmlld1N0YXRlOwotICAgIHVwZGF0ZVZp
ZXdTdGF0ZShtX3BvdGVudGlhbGx5Q2hhbmdlZFZpZXdTdGF0ZUZsYWdzKTsKLSAgICBWaWV3U3Rh
dGU6OkZsYWdzIGNoYW5nZWQgPSBtX3ZpZXdTdGF0ZSBeIHByZXZpb3VzVmlld1N0YXRlOworICAg
IEFjdGl2aXR5U3RhdGU6OkZsYWdzIHByZXZpb3VzQWN0aXZpdHlTdGF0ZSA9IG1fYWN0aXZpdHlT
dGF0ZTsKKyAgICB1cGRhdGVBY3Rpdml0eVN0YXRlKG1fcG90ZW50aWFsbHlDaGFuZ2VkQWN0aXZp
dHlTdGF0ZUZsYWdzKTsKKyAgICBBY3Rpdml0eVN0YXRlOjpGbGFncyBjaGFuZ2VkID0gbV9hY3Rp
dml0eVN0YXRlIF4gcHJldmlvdXNBY3Rpdml0eVN0YXRlOwogCi0gICAgYm9vbCBpc05vd0luV2lu
ZG93ID0gKGNoYW5nZWQgJiBWaWV3U3RhdGU6OklzSW5XaW5kb3cpICYmIGlzSW5XaW5kb3coKTsK
KyAgICBib29sIGlzTm93SW5XaW5kb3cgPSAoY2hhbmdlZCAmIEFjdGl2aXR5U3RhdGU6OklzSW5X
aW5kb3cpICYmIGlzSW5XaW5kb3coKTsKICAgICAvLyBXZSBhbHdheXMgd2FudCB0byB3YWl0IGZv
ciB0aGUgV2ViIHByb2Nlc3MgdG8gcmVwbHkgaWYgd2UndmUgYmVlbiBpbi13aW5kb3cgYmVmb3Jl
IGFuZCBhcmUgY29taW5nIGJhY2sgaW4td2luZG93LgogICAgIGlmIChtX3ZpZXdXYXNFdmVySW5X
aW5kb3cgJiYgaXNOb3dJbldpbmRvdyAmJiBtX2RyYXdpbmdBcmVhLT5oYXNWaXNpYmxlQ29udGVu
dCgpICYmIG1fd2FpdHNGb3JQYWludEFmdGVyVmlld0RpZE1vdmVUb1dpbmRvdykKLSAgICAgICAg
bV92aWV3U3RhdGVDaGFuZ2VXYW50c1N5bmNocm9ub3VzUmVwbHkgPSB0cnVlOworICAgICAgICBt
X2FjdGl2aXR5U3RhdGVDaGFuZ2VXYW50c1N5bmNocm9ub3VzUmVwbHkgPSB0cnVlOwogCiAgICAg
Ly8gRG9uJ3Qgd2FpdCBzeW5jaHJvbm91c2x5IGlmIHRoZSB2aWV3IHN0YXRlIGlzIG5vdCB2aXNp
YmxlLiAoVGhpcyBtYXR0ZXJzIGluIHBhcnRpY3VsYXIgb24gaU9TLCB3aGVyZSBhIGhpZGRlbiBw
YWdlIG1heSBiZSBzdXNwZW5kZWQuKQotICAgIGlmICghKG1fdmlld1N0YXRlICYgVmlld1N0YXRl
OjpJc1Zpc2libGUpKQotICAgICAgICBtX3ZpZXdTdGF0ZUNoYW5nZVdhbnRzU3luY2hyb25vdXNS
ZXBseSA9IGZhbHNlOworICAgIGlmICghKG1fYWN0aXZpdHlTdGF0ZSAmIEFjdGl2aXR5U3RhdGU6
OklzVmlzaWJsZSkpCisgICAgICAgIG1fYWN0aXZpdHlTdGF0ZUNoYW5nZVdhbnRzU3luY2hyb25v
dXNSZXBseSA9IGZhbHNlOwogCi0gICAgaWYgKGNoYW5nZWQgfHwgbV92aWV3U3RhdGVDaGFuZ2VX
YW50c1N5bmNocm9ub3VzUmVwbHkgfHwgIW1fbmV4dFZpZXdTdGF0ZUNoYW5nZUNhbGxiYWNrcy5p
c0VtcHR5KCkpCi0gICAgICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U2V0
Vmlld1N0YXRlKG1fdmlld1N0YXRlLCBtX3ZpZXdTdGF0ZUNoYW5nZVdhbnRzU3luY2hyb25vdXNS
ZXBseSwgbV9uZXh0Vmlld1N0YXRlQ2hhbmdlQ2FsbGJhY2tzKSwgbV9wYWdlSUQpOworICAgIGlm
IChjaGFuZ2VkIHx8IG1fYWN0aXZpdHlTdGF0ZUNoYW5nZVdhbnRzU3luY2hyb25vdXNSZXBseSB8
fCAhbV9uZXh0QWN0aXZpdHlTdGF0ZUNoYW5nZUNhbGxiYWNrcy5pc0VtcHR5KCkpCisgICAgICAg
IG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U2V0QWN0aXZpdHlTdGF0ZShtX2Fj
dGl2aXR5U3RhdGUsIG1fYWN0aXZpdHlTdGF0ZUNoYW5nZVdhbnRzU3luY2hyb25vdXNSZXBseSwg
bV9uZXh0QWN0aXZpdHlTdGF0ZUNoYW5nZUNhbGxiYWNrcyksIG1fcGFnZUlEKTsKIAotICAgIG1f
bmV4dFZpZXdTdGF0ZUNoYW5nZUNhbGxiYWNrcy5jbGVhcigpOworICAgIG1fbmV4dEFjdGl2aXR5
U3RhdGVDaGFuZ2VDYWxsYmFja3MuY2xlYXIoKTsKIAotICAgIC8vIFRoaXMgbXVzdCBoYXBwZW4g
YWZ0ZXIgdGhlIFNldFZpZXdTdGF0ZSBtZXNzYWdlIGlzIHNlbnQsIHRvIGVuc3VyZSB0aGUgcGFn
ZSB2aXNpYmlsaXR5IGV2ZW50IGNhbiBmaXJlLgorICAgIC8vIFRoaXMgbXVzdCBoYXBwZW4gYWZ0
ZXIgdGhlIFNldEFjdGl2aXR5U3RhdGUgbWVzc2FnZSBpcyBzZW50LCB0byBlbnN1cmUgdGhlIHBh
Z2UgdmlzaWJpbGl0eSBldmVudCBjYW4gZmlyZS4KICAgICB1cGRhdGVUaHJvdHRsZVN0YXRlKCk7
CiAKICAgICAvLyBJZiB3ZSd2ZSBzdGFydGVkIHRoZSByZXNwb25zaXZlbmVzcyB0aW1lciBhcyBw
YXJ0IG9mIHRlbGxpbmcgdGhlIHdlYiBwcm9jZXNzIHRvIHVwZGF0ZSB0aGUgYmFja2luZyBzdG9y
ZQogICAgIC8vIHN0YXRlLCBpdCBtaWdodCBub3Qgc2VuZCBiYWNrIGEgcmVwbHkgKHNpbmNlIGl0
IHdvbid0IHBhaW50IGFueXRoaW5nIGlmIHRoZSB3ZWIgcGFnZSBpcyBoaWRkZW4pIHNvIHdlCiAg
ICAgLy8gc3RvcCB0aGUgdW5yZXNwb25zaXZlbmVzcyB0aW1lciBoZXJlLgotICAgIGlmICgoY2hh
bmdlZCAmIFZpZXdTdGF0ZTo6SXNWaXNpYmxlKSAmJiAhaXNWaWV3VmlzaWJsZSgpKQorICAgIGlm
ICgoY2hhbmdlZCAmIEFjdGl2aXR5U3RhdGU6OklzVmlzaWJsZSkgJiYgIWlzVmlld1Zpc2libGUo
KSkKICAgICAgICAgbV9wcm9jZXNzLT5yZXNwb25zaXZlbmVzc1RpbWVyKCkuc3RvcCgpOwogCiAj
aWYgRU5BQkxFKFBPSU5URVJfTE9DSykKLSAgICBpZiAoKGNoYW5nZWQgJiBWaWV3U3RhdGU6Oklz
VmlzaWJsZSkgJiYgIWlzVmlld1Zpc2libGUoKSkKKyAgICBpZiAoKGNoYW5nZWQgJiBBY3Rpdml0
eVN0YXRlOjpJc1Zpc2libGUpICYmICFpc1ZpZXdWaXNpYmxlKCkpCiAgICAgICAgIHJlcXVlc3RQ
b2ludGVyVW5sb2NrKCk7CiAjZW5kaWYKIAotICAgIGlmIChjaGFuZ2VkICYgVmlld1N0YXRlOjpJ
c0luV2luZG93KSB7CisgICAgaWYgKGNoYW5nZWQgJiBBY3Rpdml0eVN0YXRlOjpJc0luV2luZG93
KSB7CiAgICAgICAgIGlmIChpc0luV2luZG93KCkpCiAgICAgICAgICAgICB2aWV3RGlkRW50ZXJX
aW5kb3coKTsKICAgICAgICAgZWxzZQpAQCAtMTU2NiwxMSArMTU2NiwxMSBAQCB2b2lkIFdlYlBh
Z2VQcm94eTo6ZGlzcGF0Y2hWaWV3U3RhdGVDaGFuCiAKICAgICB1cGRhdGVCYWNraW5nU3RvcmVE
aXNjYXJkYWJsZVN0YXRlKCk7CiAKLSAgICBpZiAobV92aWV3U3RhdGVDaGFuZ2VXYW50c1N5bmNo
cm9ub3VzUmVwbHkpCi0gICAgICAgIHdhaXRGb3JEaWRVcGRhdGVWaWV3U3RhdGUoKTsKKyAgICBp
ZiAobV9hY3Rpdml0eVN0YXRlQ2hhbmdlV2FudHNTeW5jaHJvbm91c1JlcGx5KQorICAgICAgICB3
YWl0Rm9yRGlkVXBkYXRlQWN0aXZpdHlTdGF0ZSgpOwogCi0gICAgbV9wb3RlbnRpYWxseUNoYW5n
ZWRWaWV3U3RhdGVGbGFncyA9IFZpZXdTdGF0ZTo6Tm9GbGFnczsKLSAgICBtX3ZpZXdTdGF0ZUNo
YW5nZVdhbnRzU3luY2hyb25vdXNSZXBseSA9IGZhbHNlOworICAgIG1fcG90ZW50aWFsbHlDaGFu
Z2VkQWN0aXZpdHlTdGF0ZUZsYWdzID0gQWN0aXZpdHlTdGF0ZTo6Tm9GbGFnczsKKyAgICBtX2Fj
dGl2aXR5U3RhdGVDaGFuZ2VXYW50c1N5bmNocm9ub3VzUmVwbHkgPSBmYWxzZTsKICAgICBtX3Zp
ZXdXYXNFdmVySW5XaW5kb3cgfD0gaXNOb3dJbldpbmRvdzsKIH0KIApAQCAtMTU5MiwxMyArMTU5
MiwxMyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6dXBkYXRlVGhyb3R0bGVTdGF0ZSgpCiAgICAgLy8g
V2Ugc2hvdWxkIHN1cHByZXNzIGlmIHRoZSBwYWdlIGlzIG5vdCBhY3RpdmUsIGlzIHZpc3VhbGx5
IGlkbGUsIGFuZCBzdXByZXNzaW9uIGlzIGVuYWJsZWQuCiAgICAgYm9vbCBpc0xvYWRpbmcgPSBt
X3BhZ2VMb2FkU3RhdGUuaXNMb2FkaW5nKCk7CiAgICAgYm9vbCBpc1BsYXlpbmdBdWRpbyA9IG1f
bWVkaWFTdGF0ZSAmIE1lZGlhUHJvZHVjZXI6OklzUGxheWluZ0F1ZGlvICYmICEobV9tdXRlZFN0
YXRlICYgTWVkaWFQcm9kdWNlcjo6QXVkaW9Jc011dGVkKTsKLSAgICBib29sIHBhZ2VTaG91bGRC
ZVN1cHByZXNzZWQgPSAhaXNMb2FkaW5nICYmICFpc1BsYXlpbmdBdWRpbyAmJiBwcm9jZXNzU3Vw
cHJlc3Npb25FbmFibGVkICYmIChtX3ZpZXdTdGF0ZSAmIFZpZXdTdGF0ZTo6SXNWaXN1YWxseUlk
bGUpOworICAgIGJvb2wgcGFnZVNob3VsZEJlU3VwcHJlc3NlZCA9ICFpc0xvYWRpbmcgJiYgIWlz
UGxheWluZ0F1ZGlvICYmIHByb2Nlc3NTdXBwcmVzc2lvbkVuYWJsZWQgJiYgKG1fYWN0aXZpdHlT
dGF0ZSAmIEFjdGl2aXR5U3RhdGU6OklzVmlzdWFsbHlJZGxlKTsKICAgICBpZiAobV9wYWdlU3Vw
cHJlc3NlZCAhPSBwYWdlU2hvdWxkQmVTdXBwcmVzc2VkKSB7CiAgICAgICAgIG1fcGFnZVN1cHBy
ZXNzZWQgPSBwYWdlU2hvdWxkQmVTdXBwcmVzc2VkOwogICAgICAgICBtX3Byb2Nlc3MtPnNlbmQo
TWVzc2FnZXM6OldlYlBhZ2U6OlNldFBhZ2VTdXBwcmVzc2VkKG1fcGFnZVN1cHByZXNzZWQpLCBt
X3BhZ2VJRCk7CiAgICAgfQogCi0gICAgaWYgKG1fdmlld1N0YXRlICYgVmlld1N0YXRlOjpJc1Zp
c3VhbGx5SWRsZSkKKyAgICBpZiAobV9hY3Rpdml0eVN0YXRlICYgQWN0aXZpdHlTdGF0ZTo6SXNW
aXN1YWxseUlkbGUpCiAgICAgICAgIG1fcGFnZUlzVXNlck9ic2VydmFibGVDb3VudCA9IG51bGxw
dHI7CiAgICAgZWxzZSBpZiAoIW1fcGFnZUlzVXNlck9ic2VydmFibGVDb3VudCkKICAgICAgICAg
bV9wYWdlSXNVc2VyT2JzZXJ2YWJsZUNvdW50ID0gbV9wcm9jZXNzLT5wcm9jZXNzUG9vbCgpLnVz
ZXJPYnNlcnZhYmxlUGFnZUNvdW50KCk7CkBAIC0xNjQwLDcgKzE2NDAsNyBAQCB2b2lkIFdlYlBh
Z2VQcm94eTo6bGF5ZXJIb3N0aW5nTW9kZURpZENoCiAgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3Nh
Z2VzOjpXZWJQYWdlOjpTZXRMYXllckhvc3RpbmdNb2RlKGxheWVySG9zdGluZ01vZGUpLCBtX3Bh
Z2VJRCk7CiB9CiAKLXZvaWQgV2ViUGFnZVByb3h5Ojp3YWl0Rm9yRGlkVXBkYXRlVmlld1N0YXRl
KCkKK3ZvaWQgV2ViUGFnZVByb3h5Ojp3YWl0Rm9yRGlkVXBkYXRlQWN0aXZpdHlTdGF0ZSgpCiB7
CiAgICAgaWYgKCFpc1ZhbGlkKCkpCiAgICAgICAgIHJldHVybjsKQEAgLTE2NDksMTEgKzE2NDks
MTEgQEAgdm9pZCBXZWJQYWdlUHJveHk6OndhaXRGb3JEaWRVcGRhdGVWaWV3UwogICAgICAgICBy
ZXR1cm47CiAKICAgICAvLyBJZiB3ZSBoYXZlIHByZXZpb3VzbHkgdGltZWQgb3V0IHdpdGggbm8g
cmVzcG9uc2UgZnJvbSB0aGUgV2ViUHJvY2VzcywgZG9uJ3QgYmxvY2sgdGhlIFVJUHJvY2VzcyBh
Z2FpbiB1bnRpbCBpdCBzdGFydHMgcmVzcG9uZGluZy4KLSAgICBpZiAobV93YWl0aW5nRm9yRGlk
VXBkYXRlVmlld1N0YXRlKQorICAgIGlmIChtX3dhaXRpbmdGb3JEaWRVcGRhdGVBY3Rpdml0eVN0
YXRlKQogICAgICAgICByZXR1cm47CiAKICNpZiBQTEFURk9STShJT1MpCi0gICAgLy8gSGFpbCBN
YXJ5IGNoZWNrLiBTaG91bGQgbm90IGJlIHBvc3NpYmxlIChkaXNwYXRjaFZpZXdTdGF0ZUNoYW5n
ZSBzaG91bGQgZm9yY2UgYXN5bmMgaWYgbm90IHZpc2libGUsCisgICAgLy8gSGFpbCBNYXJ5IGNo
ZWNrLiBTaG91bGQgbm90IGJlIHBvc3NpYmxlIChkaXNwYXRjaEFjdGl2aXR5U3RhdGVDaGFuZ2Ug
c2hvdWxkIGZvcmNlIGFzeW5jIGlmIG5vdCB2aXNpYmxlLAogICAgIC8vIGFuZCBpZiB2aXNpYmxl
IHdlIHNob3VsZCBiZSBob2xkaW5nIGFuIGFzc2VydGlvbikgLSBidXQgd2Ugc2hvdWxkIG5ldmVy
IGJsb2NrIG9uIGEgc3VzcGVuZGVkIHByb2Nlc3MuCiAgICAgaWYgKCFtX2FjdGl2aXR5VG9rZW4p
IHsKICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CkBAIC0xNjYxLDkgKzE2NjEsOSBAQCB2
b2lkIFdlYlBhZ2VQcm94eTo6d2FpdEZvckRpZFVwZGF0ZVZpZXdTCiAgICAgfQogI2VuZGlmCiAK
LSAgICBtX3dhaXRpbmdGb3JEaWRVcGRhdGVWaWV3U3RhdGUgPSB0cnVlOworICAgIG1fd2FpdGlu
Z0ZvckRpZFVwZGF0ZUFjdGl2aXR5U3RhdGUgPSB0cnVlOwogCi0gICAgbV9kcmF3aW5nQXJlYS0+
d2FpdEZvckRpZFVwZGF0ZVZpZXdTdGF0ZSgpOworICAgIG1fZHJhd2luZ0FyZWEtPndhaXRGb3JE
aWRVcGRhdGVBY3Rpdml0eVN0YXRlKCk7CiB9CiAKIEludFNpemUgV2ViUGFnZVByb3h5Ojp2aWV3
U2l6ZSgpIGNvbnN0CkBAIC01NDYzLDcgKzU0NjMsNyBAQCBXZWJQYWdlQ3JlYXRpb25QYXJhbWV0
ZXJzIFdlYlBhZ2VQcm94eTo6CiAgICAgV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycyBwYXJhbWV0
ZXJzOwogCiAgICAgcGFyYW1ldGVycy52aWV3U2l6ZSA9IG1fcGFnZUNsaWVudC52aWV3U2l6ZSgp
OwotICAgIHBhcmFtZXRlcnMudmlld1N0YXRlID0gbV92aWV3U3RhdGU7CisgICAgcGFyYW1ldGVy
cy5hY3Rpdml0eVN0YXRlID0gbV9hY3Rpdml0eVN0YXRlOwogICAgIHBhcmFtZXRlcnMuZHJhd2lu
Z0FyZWFUeXBlID0gbV9kcmF3aW5nQXJlYS0+dHlwZSgpOwogICAgIHBhcmFtZXRlcnMuc3RvcmUg
PSBwcmVmZXJlbmNlc1N0b3JlKCk7CiAgICAgcGFyYW1ldGVycy5wYWdlR3JvdXBEYXRhID0gbV9w
YWdlR3JvdXAtPmRhdGEoKTsKQEAgLTY0NzQsNyArNjQ3NCw3IEBAIHZvaWQqIFdlYlBhZ2VQcm94
eTo6aW1tZWRpYXRlQWN0aW9uQW5pbWEKICAgICByZXR1cm4gbV9wYWdlQ2xpZW50LmltbWVkaWF0
ZUFjdGlvbkFuaW1hdGlvbkNvbnRyb2xsZXJGb3JIaXRUZXN0UmVzdWx0KGhpdFRlc3RSZXN1bHQs
IHR5cGUsIHVzZXJEYXRhKTsKIH0KIAotdm9pZCBXZWJQYWdlUHJveHk6Omluc3RhbGxWaWV3U3Rh
dGVDaGFuZ2VDb21wbGV0aW9uSGFuZGxlcih2b2lkICheY29tcGxldGlvbkhhbmRsZXIpKCkpCit2
b2lkIFdlYlBhZ2VQcm94eTo6aW5zdGFsbEFjdGl2aXR5U3RhdGVDaGFuZ2VDb21wbGV0aW9uSGFu
ZGxlcih2b2lkICheY29tcGxldGlvbkhhbmRsZXIpKCkpCiB7CiAgICAgaWYgKCFpc1ZhbGlkKCkp
IHsKICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoKTsKQEAgLTY0ODcsNyArNjQ4Nyw3IEBAIHZv
aWQgV2ViUGFnZVByb3h5OjppbnN0YWxsVmlld1N0YXRlQ2hhbmcKICAgICAgICAgQmxvY2tfcmVs
ZWFzZShjb3BpZWRDb21wbGV0aW9uSGFuZGxlcik7CiAgICAgfSwgbV9wcm9jZXNzLT50aHJvdHRs
ZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHlUb2tlbigpKTsKICAgICB1aW50NjRfdCBjYWxsYmFja0lE
ID0gbV9jYWxsYmFja3MucHV0KFdURk1vdmUodm9pZENhbGxiYWNrKSk7Ci0gICAgbV9uZXh0Vmll
d1N0YXRlQ2hhbmdlQ2FsbGJhY2tzLmFwcGVuZChjYWxsYmFja0lEKTsKKyAgICBtX25leHRBY3Rp
dml0eVN0YXRlQ2hhbmdlQ2FsbGJhY2tzLmFwcGVuZChjYWxsYmFja0lEKTsKIH0KIAogdm9pZCBX
ZWJQYWdlUHJveHk6OmhhbmRsZUFjY2VwdGVkQ2FuZGlkYXRlKFdlYkNvcmU6OlRleHRDaGVja2lu
Z1Jlc3VsdCBhY2NlcHRlZENhbmRpZGF0ZSkKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9XZWJQYWdlUHJveHkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
V2ViUGFnZVByb3h5LmgJKHJldmlzaW9uIDIwODE3NykKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9XZWJQYWdlUHJveHkuaAkod29ya2luZyBjb3B5KQpAQCAtNzMsNyArNzMsNyBAQAogI2lu
Y2x1ZGUgPFdlYkNvcmUvVGV4dENoZWNraW5nLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9UZXh0R3Jh
bnVsYXJpdHkuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1VzZXJJbnRlcmZhY2VMYXlvdXREaXJlY3Rp
b24uaD4KLSNpbmNsdWRlIDxXZWJDb3JlL1ZpZXdTdGF0ZS5oPgorI2luY2x1ZGUgPFdlYkNvcmUv
QWN0aXZpdHlTdGF0ZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvVmlzaWJsZVNlbGVjdGlvbi5oPgog
I2luY2x1ZGUgPG1lbW9yeT4KICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgpAQCAtNDI4LDE2ICs0
MjgsMTYgQEAgcHVibGljOgogICAgIHZvaWQgc2V0RGVsZWdhdGVzU2Nyb2xsaW5nKGJvb2wgZGVs
ZWdhdGVzU2Nyb2xsaW5nKSB7IG1fZGVsZWdhdGVzU2Nyb2xsaW5nID0gZGVsZWdhdGVzU2Nyb2xs
aW5nOyB9CiAgICAgYm9vbCBkZWxlZ2F0ZXNTY3JvbGxpbmcoKSBjb25zdCB7IHJldHVybiBtX2Rl
bGVnYXRlc1Njcm9sbGluZzsgfQogCi0gICAgZW51bSBjbGFzcyBWaWV3U3RhdGVDaGFuZ2VEaXNw
YXRjaE1vZGUgeyBEZWZlcnJhYmxlLCBJbW1lZGlhdGUgfTsKLSAgICB2b2lkIHZpZXdTdGF0ZURp
ZENoYW5nZShXZWJDb3JlOjpWaWV3U3RhdGU6OkZsYWdzIG1heUhhdmVDaGFuZ2VkLCBib29sIHdh
bnRzU3luY2hyb25vdXNSZXBseSA9IGZhbHNlLCBWaWV3U3RhdGVDaGFuZ2VEaXNwYXRjaE1vZGUg
PSBWaWV3U3RhdGVDaGFuZ2VEaXNwYXRjaE1vZGU6OkRlZmVycmFibGUpOwotICAgIGJvb2wgaXNJ
bldpbmRvdygpIGNvbnN0IHsgcmV0dXJuIG1fdmlld1N0YXRlICYgV2ViQ29yZTo6Vmlld1N0YXRl
OjpJc0luV2luZG93OyB9Ci0gICAgdm9pZCB3YWl0Rm9yRGlkVXBkYXRlVmlld1N0YXRlKCk7Ci0g
ICAgdm9pZCBkaWRVcGRhdGVWaWV3U3RhdGUoKSB7IG1fd2FpdGluZ0ZvckRpZFVwZGF0ZVZpZXdT
dGF0ZSA9IGZhbHNlOyB9CisgICAgZW51bSBjbGFzcyBBY3Rpdml0eVN0YXRlQ2hhbmdlRGlzcGF0
Y2hNb2RlIHsgRGVmZXJyYWJsZSwgSW1tZWRpYXRlIH07CisgICAgdm9pZCBhY3Rpdml0eVN0YXRl
RGlkQ2hhbmdlKFdlYkNvcmU6OkFjdGl2aXR5U3RhdGU6OkZsYWdzIG1heUhhdmVDaGFuZ2VkLCBi
b29sIHdhbnRzU3luY2hyb25vdXNSZXBseSA9IGZhbHNlLCBBY3Rpdml0eVN0YXRlQ2hhbmdlRGlz
cGF0Y2hNb2RlID0gQWN0aXZpdHlTdGF0ZUNoYW5nZURpc3BhdGNoTW9kZTo6RGVmZXJyYWJsZSk7
CisgICAgYm9vbCBpc0luV2luZG93KCkgY29uc3QgeyByZXR1cm4gbV9hY3Rpdml0eVN0YXRlICYg
V2ViQ29yZTo6QWN0aXZpdHlTdGF0ZTo6SXNJbldpbmRvdzsgfQorICAgIHZvaWQgd2FpdEZvckRp
ZFVwZGF0ZUFjdGl2aXR5U3RhdGUoKTsKKyAgICB2b2lkIGRpZFVwZGF0ZUFjdGl2aXR5U3RhdGUo
KSB7IG1fd2FpdGluZ0ZvckRpZFVwZGF0ZUFjdGl2aXR5U3RhdGUgPSBmYWxzZTsgfQogCiAgICAg
dm9pZCBsYXllckhvc3RpbmdNb2RlRGlkQ2hhbmdlKCk7CiAKICAgICBXZWJDb3JlOjpJbnRTaXpl
IHZpZXdTaXplKCkgY29uc3Q7Ci0gICAgYm9vbCBpc1ZpZXdWaXNpYmxlKCkgY29uc3QgeyByZXR1
cm4gbV92aWV3U3RhdGUgJiBXZWJDb3JlOjpWaWV3U3RhdGU6OklzVmlzaWJsZTsgfQorICAgIGJv
b2wgaXNWaWV3VmlzaWJsZSgpIGNvbnN0IHsgcmV0dXJuIG1fYWN0aXZpdHlTdGF0ZSAmIFdlYkNv
cmU6OkFjdGl2aXR5U3RhdGU6OklzVmlzaWJsZTsgfQogICAgIGJvb2wgaXNWaWV3V2luZG93QWN0
aXZlKCkgY29uc3Q7CiAKICAgICB2b2lkIGFkZE1JTUVUeXBlV2l0aEN1c3RvbUNvbnRlbnRQcm92
aWRlcihjb25zdCBTdHJpbmcmIG1pbWVUeXBlKTsKQEAgLTEwNjYsNyArMTA2Niw3IEBAIHB1Ymxp
YzoKIAogICAgIHZvaWQqIGltbWVkaWF0ZUFjdGlvbkFuaW1hdGlvbkNvbnRyb2xsZXJGb3JIaXRU
ZXN0UmVzdWx0KFJlZlB0cjxBUEk6OkhpdFRlc3RSZXN1bHQ+LCB1aW50NjRfdCwgUmVmUHRyPEFQ
STo6T2JqZWN0Pik7CiAKLSAgICB2b2lkIGluc3RhbGxWaWV3U3RhdGVDaGFuZ2VDb21wbGV0aW9u
SGFuZGxlcih2b2lkKF5jb21wbGV0aW9uSGFuZGxlcikoKSk7CisgICAgdm9pZCBpbnN0YWxsQWN0
aXZpdHlTdGF0ZUNoYW5nZUNvbXBsZXRpb25IYW5kbGVyKHZvaWQoXmNvbXBsZXRpb25IYW5kbGVy
KSgpKTsKIAogICAgIHZvaWQgaGFuZGxlQWNjZXB0ZWRDYW5kaWRhdGUoV2ViQ29yZTo6VGV4dENo
ZWNraW5nUmVzdWx0KTsKICAgICB2b2lkIGRpZEhhbmRsZUFjY2VwdGVkQ2FuZGlkYXRlKCk7CkBA
IC0xMTQ4LDcgKzExNDgsNyBAQCBwcml2YXRlOgogICAgIFdlYlBhZ2VQcm94eShQYWdlQ2xpZW50
JiwgV2ViUHJvY2Vzc1Byb3h5JiwgdWludDY0X3QgcGFnZUlELCBSZWY8QVBJOjpQYWdlQ29uZmln
dXJhdGlvbj4mJik7CiAgICAgdm9pZCBwbGF0Zm9ybUluaXRpYWxpemUoKTsKIAotICAgIHZvaWQg
dXBkYXRlVmlld1N0YXRlKFdlYkNvcmU6OlZpZXdTdGF0ZTo6RmxhZ3MgZmxhZ3NUb1VwZGF0ZSA9
IFdlYkNvcmU6OlZpZXdTdGF0ZTo6QWxsRmxhZ3MpOworICAgIHZvaWQgdXBkYXRlQWN0aXZpdHlT
dGF0ZShXZWJDb3JlOjpBY3Rpdml0eVN0YXRlOjpGbGFncyBmbGFnc1RvVXBkYXRlID0gV2ViQ29y
ZTo6QWN0aXZpdHlTdGF0ZTo6QWxsRmxhZ3MpOwogICAgIHZvaWQgdXBkYXRlVGhyb3R0bGVTdGF0
ZSgpOwogICAgIHZvaWQgdXBkYXRlSGlkZGVuUGFnZVRocm90dGxpbmdBdXRvSW5jcmVhc2VzKCk7
CiAKQEAgLTE1MzMsNyArMTUzMyw3IEBAIHByaXZhdGU6CiAKICAgICBXZWJQcmVmZXJlbmNlc1N0
b3JlIHByZWZlcmVuY2VzU3RvcmUoKSBjb25zdDsKIAotICAgIHZvaWQgZGlzcGF0Y2hWaWV3U3Rh
dGVDaGFuZ2UoKTsKKyAgICB2b2lkIGRpc3BhdGNoQWN0aXZpdHlTdGF0ZUNoYW5nZSgpOwogICAg
IHZvaWQgdmlld0RpZExlYXZlV2luZG93KCk7CiAgICAgdm9pZCB2aWV3RGlkRW50ZXJXaW5kb3co
KTsKIApAQCAtMTY1OCw3ICsxNjU4LDcgQEAgcHJpdmF0ZToKIAogICAgIFVzZXJNZWRpYVBlcm1p
c3Npb25SZXF1ZXN0TWFuYWdlclByb3h5IG1fdXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5h
Z2VyOwogCi0gICAgV2ViQ29yZTo6Vmlld1N0YXRlOjpGbGFncyBtX3ZpZXdTdGF0ZTsKKyAgICBX
ZWJDb3JlOjpBY3Rpdml0eVN0YXRlOjpGbGFncyBtX2FjdGl2aXR5U3RhdGU7CiAgICAgYm9vbCBt
X3ZpZXdXYXNFdmVySW5XaW5kb3c7CiAjaWYgUExBVEZPUk0oSU9TKQogICAgIGJvb2wgbV9hbGxv
d3NNZWRpYURvY3VtZW50SW5saW5lUGxheWJhY2sgeyBmYWxzZSB9OwpAQCAtMTg2MCwxNCArMTg2
MCwxNCBAQCBwcml2YXRlOgogICAgIFdlYkNvcmU6Ok1lZGlhUHJvZHVjZXI6Ok11dGVkU3RhdGVG
bGFncyBtX211dGVkU3RhdGUgeyBXZWJDb3JlOjpNZWRpYVByb2R1Y2VyOjpOb25lTXV0ZWQgfTsK
ICAgICBib29sIG1fbWF5U3RhcnRNZWRpYVdoZW5JbldpbmRvdzsKIAotICAgIGJvb2wgbV93YWl0
aW5nRm9yRGlkVXBkYXRlVmlld1N0YXRlOworICAgIGJvb2wgbV93YWl0aW5nRm9yRGlkVXBkYXRl
QWN0aXZpdHlTdGF0ZTsKIAogICAgIGJvb2wgbV9zaG91bGRTY2FsZVZpZXdUb0ZpdERvY3VtZW50
IHsgZmFsc2UgfTsKICAgICBib29sIG1fc3VwcHJlc3NBdXRvbWF0aWNOYXZpZ2F0aW9uU25hcHNo
b3R0aW5nIHsgZmFsc2UgfTsKIAogI2lmIFBMQVRGT1JNKENPQ09BKQogICAgIEhhc2hNYXA8U3Ry
aW5nLCBTdHJpbmc+IG1fdGVtcG9yYXJ5UERGRmlsZXM7Ci0gICAgc3RkOjp1bmlxdWVfcHRyPFdl
YkNvcmU6OlJ1bkxvb3BPYnNlcnZlcj4gbV92aWV3U3RhdGVDaGFuZ2VEaXNwYXRjaGVyOworICAg
IHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpSdW5Mb29wT2JzZXJ2ZXI+IG1fYWN0aXZpdHlTdGF0
ZUNoYW5nZURpc3BhdGNoZXI7CiAKICAgICBzdGQ6OnVuaXF1ZV9wdHI8UmVtb3RlTGF5ZXJUcmVl
U2Nyb2xsaW5nUGVyZm9ybWFuY2VEYXRhPiBtX3Njcm9sbGluZ1BlcmZvcm1hbmNlRGF0YTsKICAg
ICBib29sIG1fc2Nyb2xsUGVyZm9ybWFuY2VEYXRhQ29sbGVjdGlvbkVuYWJsZWQ7CkBAIC0xODgy
LDkgKzE4ODIsOSBAQCBwcml2YXRlOgogICAgIHVpbnQ2NF90IG1fbmF2aWdhdGlvbklEOwogCiAg
ICAgV2ViUHJlZmVyZW5jZXNTdG9yZTo6VmFsdWVNYXAgbV9jb25maWd1cmF0aW9uUHJlZmVyZW5j
ZVZhbHVlczsKLSAgICBXZWJDb3JlOjpWaWV3U3RhdGU6OkZsYWdzIG1fcG90ZW50aWFsbHlDaGFu
Z2VkVmlld1N0YXRlRmxhZ3M7Ci0gICAgYm9vbCBtX3ZpZXdTdGF0ZUNoYW5nZVdhbnRzU3luY2hy
b25vdXNSZXBseTsKLSAgICBWZWN0b3I8dWludDY0X3Q+IG1fbmV4dFZpZXdTdGF0ZUNoYW5nZUNh
bGxiYWNrczsKKyAgICBXZWJDb3JlOjpBY3Rpdml0eVN0YXRlOjpGbGFncyBtX3BvdGVudGlhbGx5
Q2hhbmdlZEFjdGl2aXR5U3RhdGVGbGFnczsKKyAgICBib29sIG1fYWN0aXZpdHlTdGF0ZUNoYW5n
ZVdhbnRzU3luY2hyb25vdXNSZXBseTsKKyAgICBWZWN0b3I8dWludDY0X3Q+IG1fbmV4dEFjdGl2
aXR5U3RhdGVDaGFuZ2VDYWxsYmFja3M7CiAKICAgICBXZWJDb3JlOjpNZWRpYVByb2R1Y2VyOjpN
ZWRpYVN0YXRlRmxhZ3MgbV9tZWRpYVN0YXRlIHsgV2ViQ29yZTo6TWVkaWFQcm9kdWNlcjo6SXNO
b3RQbGF5aW5nIH07CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJv
eHkubWVzc2FnZXMuaW4KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dl
YlBhZ2VQcm94eS5tZXNzYWdlcy5pbgkocmV2aXNpb24gMjA4MTc3KQorKysgU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbgkod29ya2luZyBjb3B5KQpAQCAt
NDA3LDcgKzQwNyw3IEBAIG1lc3NhZ2VzIC0+IFdlYlBhZ2VQcm94eSB7CiAgICAgRmluZFBsdWdp
bihTdHJpbmcgbWltZVR5cGUsIHVpbnQzMl90IHByb2Nlc3NUeXBlLCBTdHJpbmcgdXJsU3RyaW5n
LCBTdHJpbmcgZnJhbWVVUkxTdHJpbmcsIFN0cmluZyBwYWdlVVJMU3RyaW5nLCBib29sIGFsbG93
T25seUFwcGxpY2F0aW9uUGx1Z2lucykgLT4gKHVpbnQ2NF90IHBsdWdpblByb2Nlc3NUb2tlbiwg
U3RyaW5nIG5ld01JTUVUeXBlLCB1aW50MzJfdCBwbHVnaW5Mb2FkUG9saWN5LCBTdHJpbmcgdW5h
dmFpbGFiaWxpdHlEZXNjcmlwdGlvbikKICNlbmRpZgogCi0gICAgRGlkVXBkYXRlVmlld1N0YXRl
KCkKKyAgICBEaWRVcGRhdGVBY3Rpdml0eVN0YXRlKCkKIAogICAgIERpZFNhdmVUb1BhZ2VDYWNo
ZSgpCiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHku
Y3BwCShyZXZpc2lvbiAyMDgxNzcpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUHJv
Y2Vzc1Byb3h5LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzE1LDcgKzcxNSw3IEBAIHZvaWQgV2Vi
UHJvY2Vzc1Byb3h5OjpyZWxlYXNlUGFnZUNhY2hlKCkKIHZvaWQgV2ViUHJvY2Vzc1Byb3h5Ojp3
aW5kb3dTZXJ2ZXJDb25uZWN0aW9uU3RhdGVDaGFuZ2VkKCkKIHsKICAgICBmb3IgKGNvbnN0IGF1
dG8mIHBhZ2UgOiBtX3BhZ2VNYXAudmFsdWVzKCkpCi0gICAgICAgIHBhZ2UtPnZpZXdTdGF0ZURp
ZENoYW5nZShWaWV3U3RhdGU6OklzVmlzdWFsbHlJZGxlKTsKKyAgICAgICAgcGFnZS0+YWN0aXZp
dHlTdGF0ZURpZENoYW5nZShBY3Rpdml0eVN0YXRlOjpJc1Zpc3VhbGx5SWRsZSk7CiB9CiAKIHZv
aWQgV2ViUHJvY2Vzc1Byb3h5OjpmZXRjaFdlYnNpdGVEYXRhKFNlc3Npb25JRCBzZXNzaW9uSUQs
IE9wdGlvblNldDxXZWJzaXRlRGF0YVR5cGU+IGRhdGFUeXBlcywgRnVuY3Rpb248dm9pZCAoV2Vi
c2l0ZURhdGEpPiBjb21wbGV0aW9uSGFuZGxlcikKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tCShyZXZpc2lvbiAyMDgxNzcpCisrKyBT
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbQkod29ya2luZyBj
b3B5KQpAQCAtMTczMCw3ICsxNzMwLDcgQEAgLSAoQk9PTClfem9vbVRvUmVjdDooV2ViQ29yZTo6
RmxvYXRSZWN0KQogCiAtICh2b2lkKWRpZE1vdmVUb1dpbmRvdwogewotICAgIF9wYWdlLT52aWV3
U3RhdGVEaWRDaGFuZ2UoV2ViQ29yZTo6Vmlld1N0YXRlOjpBbGxGbGFncyk7CisgICAgX3BhZ2Ut
PmFjdGl2aXR5U3RhdGVEaWRDaGFuZ2UoV2ViQ29yZTo6QWN0aXZpdHlTdGF0ZTo6QWxsRmxhZ3Mp
OwogfQogCiAtICh2b2lkKXNldE9wYXF1ZTooQk9PTClvcGFxdWUKSW5kZXg6IFNvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXdCYXNlLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3QmFzZS5jcHAJ
KHJldmlzaW9uIDIwODE3NykKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dl
YktpdFdlYlZpZXdCYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzgsNyArMzgsNyBAQAogI2lu
Y2x1ZGUgIk5hdGl2ZVdlYk1vdXNlRXZlbnQuaCIKICNpbmNsdWRlICJOYXRpdmVXZWJXaGVlbEV2
ZW50LmgiCiAjaW5jbHVkZSAiUGFnZUNsaWVudEltcGwuaCIKLSNpbmNsdWRlICJWaWV3U3RhdGUu
aCIKKyNpbmNsdWRlICJBY3Rpdml0eVN0YXRlLmgiCiAjaW5jbHVkZSAiV2ViRXZlbnRGYWN0b3J5
LmgiCiAjaW5jbHVkZSAiV2ViRnVsbFNjcmVlbkNsaWVudEd0ay5oIgogI2luY2x1ZGUgIldlYklu
c3BlY3RvclByb3h5LmgiCkBAIC0xNDYsMTYgKzE0NiwxNiBAQCB0eXBlZGVmIEhhc2hNYXA8dWlu
dDMyX3QsIEdVbmlxdWVQdHI8R2RrCiAKIHN0cnVjdCBfV2ViS2l0V2ViVmlld0Jhc2VQcml2YXRl
IHsKICAgICBfV2ViS2l0V2ViVmlld0Jhc2VQcml2YXRlKCkKLSAgICAgICAgOiB1cGRhdGVWaWV3
U3RhdGVUaW1lcihSdW5Mb29wOjptYWluKCksIHRoaXMsICZfV2ViS2l0V2ViVmlld0Jhc2VQcml2
YXRlOjp1cGRhdGVWaWV3U3RhdGVUaW1lckZpcmVkKQorICAgICAgICA6IHVwZGF0ZUFjdGl2aXR5
U3RhdGVUaW1lcihSdW5Mb29wOjptYWluKCksIHRoaXMsICZfV2ViS2l0V2ViVmlld0Jhc2VQcml2
YXRlOjp1cGRhdGVBY3Rpdml0eVN0YXRlVGltZXJGaXJlZCkKICAgICB7CiAgICAgfQogCi0gICAg
dm9pZCB1cGRhdGVWaWV3U3RhdGVUaW1lckZpcmVkKCkKKyAgICB2b2lkIHVwZGF0ZUFjdGl2aXR5
U3RhdGVUaW1lckZpcmVkKCkKICAgICB7CiAgICAgICAgIGlmICghcGFnZVByb3h5KQogICAgICAg
ICAgICAgcmV0dXJuOwotICAgICAgICBwYWdlUHJveHktPnZpZXdTdGF0ZURpZENoYW5nZSh2aWV3
U3RhdGVGbGFnc1RvVXBkYXRlKTsKLSAgICAgICAgdmlld1N0YXRlRmxhZ3NUb1VwZGF0ZSA9IFZp
ZXdTdGF0ZTo6Tm9GbGFnczsKKyAgICAgICAgcGFnZVByb3h5LT5hY3Rpdml0eVN0YXRlRGlkQ2hh
bmdlKGFjdGl2aXR5U3RhdGVGbGFnc1RvVXBkYXRlKTsKKyAgICAgICAgYWN0aXZpdHlTdGF0ZUZs
YWdzVG9VcGRhdGUgPSBBY3Rpdml0eVN0YXRlOjpOb0ZsYWdzOwogICAgIH0KIAogICAgIFdlYktp
dFdlYlZpZXdDaGlsZHJlbk1hcCBjaGlsZHJlbjsKQEAgLTE4NSw5ICsxODUsOSBAQCBzdHJ1Y3Qg
X1dlYktpdFdlYlZpZXdCYXNlUHJpdmF0ZSB7CiAgICAgdW5zaWduZWQgbG9uZyB0b3BsZXZlbFdp
bmRvd1JlYWxpemVkSUQ7CiAKICAgICAvLyBWaWV3IFN0YXRlLgotICAgIFZpZXdTdGF0ZTo6Rmxh
Z3Mgdmlld1N0YXRlOwotICAgIFZpZXdTdGF0ZTo6RmxhZ3Mgdmlld1N0YXRlRmxhZ3NUb1VwZGF0
ZTsKLSAgICBSdW5Mb29wOjpUaW1lcjxXZWJLaXRXZWJWaWV3QmFzZVByaXZhdGU+IHVwZGF0ZVZp
ZXdTdGF0ZVRpbWVyOworICAgIEFjdGl2aXR5U3RhdGU6OkZsYWdzIGFjdGl2aXR5U3RhdGU7Cisg
ICAgQWN0aXZpdHlTdGF0ZTo6RmxhZ3MgYWN0aXZpdHlTdGF0ZUZsYWdzVG9VcGRhdGU7CisgICAg
UnVuTG9vcDo6VGltZXI8V2ViS2l0V2ViVmlld0Jhc2VQcml2YXRlPiB1cGRhdGVBY3Rpdml0eVN0
YXRlVGltZXI7CiAKICAgICBXZWJLaXRXZWJWaWV3QmFzZURvd25sb2FkUmVxdWVzdEhhbmRsZXIg
ZG93bmxvYWRIYW5kbGVyOwogCkBAIC0yMTIsMTQgKzIxMiwxNCBAQCBzdHJ1Y3QgX1dlYktpdFdl
YlZpZXdCYXNlUHJpdmF0ZSB7CiAKIFdFQktJVF9ERUZJTkVfVFlQRShXZWJLaXRXZWJWaWV3QmFz
ZSwgd2Via2l0X3dlYl92aWV3X2Jhc2UsIEdUS19UWVBFX0NPTlRBSU5FUikKIAotc3RhdGljIHZv
aWQgd2Via2l0V2ViVmlld0Jhc2VTY2hlZHVsZVVwZGF0ZVZpZXdTdGF0ZShXZWJLaXRXZWJWaWV3
QmFzZSogd2ViVmlld0Jhc2UsIFZpZXdTdGF0ZTo6RmxhZ3MgZmxhZ3NUb1VwZGF0ZSkKK3N0YXRp
YyB2b2lkIHdlYmtpdFdlYlZpZXdCYXNlU2NoZWR1bGVVcGRhdGVBY3Rpdml0eVN0YXRlKFdlYktp
dFdlYlZpZXdCYXNlKiB3ZWJWaWV3QmFzZSwgQWN0aXZpdHlTdGF0ZTo6RmxhZ3MgZmxhZ3NUb1Vw
ZGF0ZSkKIHsKICAgICBXZWJLaXRXZWJWaWV3QmFzZVByaXZhdGUqIHByaXYgPSB3ZWJWaWV3QmFz
ZS0+cHJpdjsKLSAgICBwcml2LT52aWV3U3RhdGVGbGFnc1RvVXBkYXRlIHw9IGZsYWdzVG9VcGRh
dGU7Ci0gICAgaWYgKHByaXYtPnVwZGF0ZVZpZXdTdGF0ZVRpbWVyLmlzQWN0aXZlKCkpCisgICAg
cHJpdi0+YWN0aXZpdHlTdGF0ZUZsYWdzVG9VcGRhdGUgfD0gZmxhZ3NUb1VwZGF0ZTsKKyAgICBp
ZiAocHJpdi0+dXBkYXRlQWN0aXZpdHlTdGF0ZVRpbWVyLmlzQWN0aXZlKCkpCiAgICAgICAgIHJl
dHVybjsKIAotICAgIHByaXYtPnVwZGF0ZVZpZXdTdGF0ZVRpbWVyLnN0YXJ0T25lU2hvdCgwKTsK
KyAgICBwcml2LT51cGRhdGVBY3Rpdml0eVN0YXRlVGltZXIuc3RhcnRPbmVTaG90KDApOwogfQog
CiBzdGF0aWMgZ2Jvb2xlYW4gdG9wbGV2ZWxXaW5kb3dGb2N1c0luRXZlbnQoR3RrV2lkZ2V0KiB3
aWRnZXQsIEdka0V2ZW50Rm9jdXMqLCBXZWJLaXRXZWJWaWV3QmFzZSogd2ViVmlld0Jhc2UpCkBA
IC0yMjksMTEgKzIyOSwxMSBAQCBzdGF0aWMgZ2Jvb2xlYW4gdG9wbGV2ZWxXaW5kb3dGb2N1c0lu
RXZlCiAgICAgICAgIHJldHVybiBGQUxTRTsKIAogICAgIFdlYktpdFdlYlZpZXdCYXNlUHJpdmF0
ZSogcHJpdiA9IHdlYlZpZXdCYXNlLT5wcml2OwotICAgIGlmIChwcml2LT52aWV3U3RhdGUgJiBW
aWV3U3RhdGU6OldpbmRvd0lzQWN0aXZlKQorICAgIGlmIChwcml2LT5hY3Rpdml0eVN0YXRlICYg
QWN0aXZpdHlTdGF0ZTo6V2luZG93SXNBY3RpdmUpCiAgICAgICAgIHJldHVybiBGQUxTRTsKIAot
ICAgIHByaXYtPnZpZXdTdGF0ZSB8PSBWaWV3U3RhdGU6OldpbmRvd0lzQWN0aXZlOwotICAgIHdl
YmtpdFdlYlZpZXdCYXNlU2NoZWR1bGVVcGRhdGVWaWV3U3RhdGUod2ViVmlld0Jhc2UsIFZpZXdT
dGF0ZTo6V2luZG93SXNBY3RpdmUpOworICAgIHByaXYtPmFjdGl2aXR5U3RhdGUgfD0gQWN0aXZp
dHlTdGF0ZTo6V2luZG93SXNBY3RpdmU7CisgICAgd2Via2l0V2ViVmlld0Jhc2VTY2hlZHVsZVVw
ZGF0ZUFjdGl2aXR5U3RhdGUod2ViVmlld0Jhc2UsIEFjdGl2aXR5U3RhdGU6OldpbmRvd0lzQWN0
aXZlKTsKIAogICAgIHJldHVybiBGQUxTRTsKIH0KQEAgLTI0MSwxMSArMjQxLDExIEBAIHN0YXRp
YyBnYm9vbGVhbiB0b3BsZXZlbFdpbmRvd0ZvY3VzSW5FdmUKIHN0YXRpYyBnYm9vbGVhbiB0b3Bs
ZXZlbFdpbmRvd0ZvY3VzT3V0RXZlbnQoR3RrV2lkZ2V0KiwgR2RrRXZlbnRGb2N1cyosIFdlYktp
dFdlYlZpZXdCYXNlKiB3ZWJWaWV3QmFzZSkKIHsKICAgICBXZWJLaXRXZWJWaWV3QmFzZVByaXZh
dGUqIHByaXYgPSB3ZWJWaWV3QmFzZS0+cHJpdjsKLSAgICBpZiAoIShwcml2LT52aWV3U3RhdGUg
JiBWaWV3U3RhdGU6OldpbmRvd0lzQWN0aXZlKSkKKyAgICBpZiAoIShwcml2LT5hY3Rpdml0eVN0
YXRlICYgQWN0aXZpdHlTdGF0ZTo6V2luZG93SXNBY3RpdmUpKQogICAgICAgICByZXR1cm4gRkFM
U0U7CiAKLSAgICBwcml2LT52aWV3U3RhdGUgJj0gflZpZXdTdGF0ZTo6V2luZG93SXNBY3RpdmU7
Ci0gICAgd2Via2l0V2ViVmlld0Jhc2VTY2hlZHVsZVVwZGF0ZVZpZXdTdGF0ZSh3ZWJWaWV3QmFz
ZSwgVmlld1N0YXRlOjpXaW5kb3dJc0FjdGl2ZSk7CisgICAgcHJpdi0+YWN0aXZpdHlTdGF0ZSAm
PSB+QWN0aXZpdHlTdGF0ZTo6V2luZG93SXNBY3RpdmU7CisgICAgd2Via2l0V2ViVmlld0Jhc2VT
Y2hlZHVsZVVwZGF0ZUFjdGl2aXR5U3RhdGUod2ViVmlld0Jhc2UsIEFjdGl2aXR5U3RhdGU6Oldp
bmRvd0lzQWN0aXZlKTsKIAogICAgIHJldHVybiBGQUxTRTsKIH0KQEAgLTI1NywxNCArMjU3LDE0
IEBAIHN0YXRpYyBnYm9vbGVhbiB0b3BsZXZlbFdpbmRvd1N0YXRlRXZlbnQKICAgICAgICAgcmV0
dXJuIEZBTFNFOwogCiAgICAgYm9vbCB2aXNpYmxlID0gIShldmVudC0+bmV3X3dpbmRvd19zdGF0
ZSAmIEdES19XSU5ET1dfU1RBVEVfSUNPTklGSUVEKTsKLSAgICBpZiAoKHZpc2libGUgJiYgcHJp
di0+dmlld1N0YXRlICYgVmlld1N0YXRlOjpJc1Zpc2libGUpIHx8ICghdmlzaWJsZSAmJiAhKHBy
aXYtPnZpZXdTdGF0ZSAmIFZpZXdTdGF0ZTo6SXNWaXNpYmxlKSkpCisgICAgaWYgKCh2aXNpYmxl
ICYmIHByaXYtPmFjdGl2aXR5U3RhdGUgJiBBY3Rpdml0eVN0YXRlOjpJc1Zpc2libGUpIHx8ICgh
dmlzaWJsZSAmJiAhKHByaXYtPmFjdGl2aXR5U3RhdGUgJiBBY3Rpdml0eVN0YXRlOjpJc1Zpc2li
bGUpKSkKICAgICAgICAgcmV0dXJuIEZBTFNFOwogCiAgICAgaWYgKHZpc2libGUpCi0gICAgICAg
IHByaXYtPnZpZXdTdGF0ZSB8PSBWaWV3U3RhdGU6OklzVmlzaWJsZTsKKyAgICAgICAgcHJpdi0+
YWN0aXZpdHlTdGF0ZSB8PSBBY3Rpdml0eVN0YXRlOjpJc1Zpc2libGU7CiAgICAgZWxzZQotICAg
ICAgICBwcml2LT52aWV3U3RhdGUgJj0gflZpZXdTdGF0ZTo6SXNWaXNpYmxlOwotICAgIHdlYmtp
dFdlYlZpZXdCYXNlU2NoZWR1bGVVcGRhdGVWaWV3U3RhdGUod2ViVmlld0Jhc2UsIFZpZXdTdGF0
ZTo6SXNWaXNpYmxlKTsKKyAgICAgICAgcHJpdi0+YWN0aXZpdHlTdGF0ZSAmPSB+QWN0aXZpdHlT
dGF0ZTo6SXNWaXNpYmxlOworICAgIHdlYmtpdFdlYlZpZXdCYXNlU2NoZWR1bGVVcGRhdGVBY3Rp
dml0eVN0YXRlKHdlYlZpZXdCYXNlLCBBY3Rpdml0eVN0YXRlOjpJc1Zpc2libGUpOwogCiAgICAg
cmV0dXJuIEZBTFNFOwogfQpAQCAtMzA2LDE3ICszMDYsMTcgQEAgc3RhdGljIHZvaWQgd2Via2l0
V2ViVmlld0Jhc2VTZXRUb3BsZXZlbAogICAgIHByaXYtPnRvcGxldmVsT25TY3JlZW5XaW5kb3cg
PSB3aW5kb3c7CiAKICAgICBpZiAoIXByaXYtPnRvcGxldmVsT25TY3JlZW5XaW5kb3cpIHsKLSAg
ICAgICAgVmlld1N0YXRlOjpGbGFncyBmbGFnc1RvVXBkYXRlID0gMDsKLSAgICAgICAgaWYgKHBy
aXYtPnZpZXdTdGF0ZSAmIFZpZXdTdGF0ZTo6SXNJbldpbmRvdykgewotICAgICAgICAgICAgcHJp
di0+dmlld1N0YXRlICY9IH5WaWV3U3RhdGU6OklzSW5XaW5kb3c7Ci0gICAgICAgICAgICBmbGFn
c1RvVXBkYXRlIHw9IFZpZXdTdGF0ZTo6SXNJbldpbmRvdzsKKyAgICAgICAgQWN0aXZpdHlTdGF0
ZTo6RmxhZ3MgZmxhZ3NUb1VwZGF0ZSA9IDA7CisgICAgICAgIGlmIChwcml2LT5hY3Rpdml0eVN0
YXRlICYgQWN0aXZpdHlTdGF0ZTo6SXNJbldpbmRvdykgeworICAgICAgICAgICAgcHJpdi0+YWN0
aXZpdHlTdGF0ZSAmPSB+QWN0aXZpdHlTdGF0ZTo6SXNJbldpbmRvdzsKKyAgICAgICAgICAgIGZs
YWdzVG9VcGRhdGUgfD0gQWN0aXZpdHlTdGF0ZTo6SXNJbldpbmRvdzsKICAgICAgICAgfQotICAg
ICAgICBpZiAocHJpdi0+dmlld1N0YXRlICYgVmlld1N0YXRlOjpXaW5kb3dJc0FjdGl2ZSkgewot
ICAgICAgICAgICAgcHJpdi0+dmlld1N0YXRlICY9IH5WaWV3U3RhdGU6OldpbmRvd0lzQWN0aXZl
OwotICAgICAgICAgICAgZmxhZ3NUb1VwZGF0ZSB8PSBWaWV3U3RhdGU6OklzSW5XaW5kb3c7Cisg
ICAgICAgIGlmIChwcml2LT5hY3Rpdml0eVN0YXRlICYgQWN0aXZpdHlTdGF0ZTo6V2luZG93SXNB
Y3RpdmUpIHsKKyAgICAgICAgICAgIHByaXYtPmFjdGl2aXR5U3RhdGUgJj0gfkFjdGl2aXR5U3Rh
dGU6OldpbmRvd0lzQWN0aXZlOworICAgICAgICAgICAgZmxhZ3NUb1VwZGF0ZSB8PSBBY3Rpdml0
eVN0YXRlOjpJc0luV2luZG93OwogICAgICAgICB9CiAgICAgICAgIGlmIChmbGFnc1RvVXBkYXRl
KQotICAgICAgICAgICAgd2Via2l0V2ViVmlld0Jhc2VTY2hlZHVsZVVwZGF0ZVZpZXdTdGF0ZSh3
ZWJWaWV3QmFzZSwgZmxhZ3NUb1VwZGF0ZSk7CisgICAgICAgICAgICB3ZWJraXRXZWJWaWV3QmFz
ZVNjaGVkdWxlVXBkYXRlQWN0aXZpdHlTdGF0ZSh3ZWJWaWV3QmFzZSwgZmxhZ3NUb1VwZGF0ZSk7
CiAKICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAgLTYzMSwyMCArNjMxLDIwIEBAIHN0YXRpYyB2
b2lkIHdlYmtpdFdlYlZpZXdCYXNlTWFwKEd0a1dpZGcKIAogICAgIFdlYktpdFdlYlZpZXdCYXNl
KiB3ZWJWaWV3QmFzZSA9IFdFQktJVF9XRUJfVklFV19CQVNFKHdpZGdldCk7CiAgICAgV2ViS2l0
V2ViVmlld0Jhc2VQcml2YXRlKiBwcml2ID0gd2ViVmlld0Jhc2UtPnByaXY7Ci0gICAgVmlld1N0
YXRlOjpGbGFncyBmbGFnc1RvVXBkYXRlID0gMDsKLSAgICBpZiAoIShwcml2LT52aWV3U3RhdGUg
JiBWaWV3U3RhdGU6OklzVmlzaWJsZSkpCi0gICAgICAgIGZsYWdzVG9VcGRhdGUgfD0gVmlld1N0
YXRlOjpJc1Zpc2libGU7CisgICAgQWN0aXZpdHlTdGF0ZTo6RmxhZ3MgZmxhZ3NUb1VwZGF0ZSA9
IDA7CisgICAgaWYgKCEocHJpdi0+YWN0aXZpdHlTdGF0ZSAmIEFjdGl2aXR5U3RhdGU6OklzVmlz
aWJsZSkpCisgICAgICAgIGZsYWdzVG9VcGRhdGUgfD0gQWN0aXZpdHlTdGF0ZTo6SXNWaXNpYmxl
OwogICAgIGlmIChwcml2LT50b3BsZXZlbE9uU2NyZWVuV2luZG93KSB7Ci0gICAgICAgIGlmICgh
KHByaXYtPnZpZXdTdGF0ZSAmIFZpZXdTdGF0ZTo6SXNJbldpbmRvdykpCi0gICAgICAgICAgICBm
bGFnc1RvVXBkYXRlIHw9IFZpZXdTdGF0ZTo6SXNJbldpbmRvdzsKLSAgICAgICAgaWYgKGd0a193
aW5kb3dfaXNfYWN0aXZlKEdUS19XSU5ET1cocHJpdi0+dG9wbGV2ZWxPblNjcmVlbldpbmRvdykp
ICYmICEocHJpdi0+dmlld1N0YXRlICYgVmlld1N0YXRlOjpXaW5kb3dJc0FjdGl2ZSkpCi0gICAg
ICAgICAgICBmbGFnc1RvVXBkYXRlIHw9IFZpZXdTdGF0ZTo6V2luZG93SXNBY3RpdmU7CisgICAg
ICAgIGlmICghKHByaXYtPmFjdGl2aXR5U3RhdGUgJiBBY3Rpdml0eVN0YXRlOjpJc0luV2luZG93
KSkKKyAgICAgICAgICAgIGZsYWdzVG9VcGRhdGUgfD0gQWN0aXZpdHlTdGF0ZTo6SXNJbldpbmRv
dzsKKyAgICAgICAgaWYgKGd0a193aW5kb3dfaXNfYWN0aXZlKEdUS19XSU5ET1cocHJpdi0+dG9w
bGV2ZWxPblNjcmVlbldpbmRvdykpICYmICEocHJpdi0+YWN0aXZpdHlTdGF0ZSAmIEFjdGl2aXR5
U3RhdGU6OldpbmRvd0lzQWN0aXZlKSkKKyAgICAgICAgICAgIGZsYWdzVG9VcGRhdGUgfD0gQWN0
aXZpdHlTdGF0ZTo6V2luZG93SXNBY3RpdmU7CiAgICAgfQogICAgIGlmICghZmxhZ3NUb1VwZGF0
ZSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgcHJpdi0+dmlld1N0YXRlIHw9IGZsYWdzVG9VcGRh
dGU7Ci0gICAgd2Via2l0V2ViVmlld0Jhc2VTY2hlZHVsZVVwZGF0ZVZpZXdTdGF0ZSh3ZWJWaWV3
QmFzZSwgZmxhZ3NUb1VwZGF0ZSk7CisgICAgcHJpdi0+YWN0aXZpdHlTdGF0ZSB8PSBmbGFnc1Rv
VXBkYXRlOworICAgIHdlYmtpdFdlYlZpZXdCYXNlU2NoZWR1bGVVcGRhdGVBY3Rpdml0eVN0YXRl
KHdlYlZpZXdCYXNlLCBmbGFnc1RvVXBkYXRlKTsKIH0KIAogc3RhdGljIHZvaWQgd2Via2l0V2Vi
Vmlld0Jhc2VVbm1hcChHdGtXaWRnZXQqIHdpZGdldCkKQEAgLTY1MywxMSArNjUzLDExIEBAIHN0
YXRpYyB2b2lkIHdlYmtpdFdlYlZpZXdCYXNlVW5tYXAoR3RrV2kKIAogICAgIFdlYktpdFdlYlZp
ZXdCYXNlKiB3ZWJWaWV3QmFzZSA9IFdFQktJVF9XRUJfVklFV19CQVNFKHdpZGdldCk7CiAgICAg
V2ViS2l0V2ViVmlld0Jhc2VQcml2YXRlKiBwcml2ID0gd2ViVmlld0Jhc2UtPnByaXY7Ci0gICAg
aWYgKCEocHJpdi0+dmlld1N0YXRlICYgVmlld1N0YXRlOjpJc1Zpc2libGUpKQorICAgIGlmICgh
KHByaXYtPmFjdGl2aXR5U3RhdGUgJiBBY3Rpdml0eVN0YXRlOjpJc1Zpc2libGUpKQogICAgICAg
ICByZXR1cm47CiAKLSAgICBwcml2LT52aWV3U3RhdGUgJj0gflZpZXdTdGF0ZTo6SXNWaXNpYmxl
OwotICAgIHdlYmtpdFdlYlZpZXdCYXNlU2NoZWR1bGVVcGRhdGVWaWV3U3RhdGUod2ViVmlld0Jh
c2UsIFZpZXdTdGF0ZTo6SXNWaXNpYmxlKTsKKyAgICBwcml2LT5hY3Rpdml0eVN0YXRlICY9IH5B
Y3Rpdml0eVN0YXRlOjpJc1Zpc2libGU7CisgICAgd2Via2l0V2ViVmlld0Jhc2VTY2hlZHVsZVVw
ZGF0ZUFjdGl2aXR5U3RhdGUod2ViVmlld0Jhc2UsIEFjdGl2aXR5U3RhdGU6OklzVmlzaWJsZSk7
CiB9CiAKIHN0YXRpYyBnYm9vbGVhbiB3ZWJraXRXZWJWaWV3QmFzZUZvY3VzSW5FdmVudChHdGtX
aWRnZXQqIHdpZGdldCwgR2RrRXZlbnRGb2N1cyogZXZlbnQpCkBAIC0xMzc5LDQ2ICsxMzc5LDQ2
IEBAIEdka0V2ZW50KiB3ZWJraXRXZWJWaWV3QmFzZVRha2VDb250ZXh0TWUKIHZvaWQgd2Via2l0
V2ViVmlld0Jhc2VTZXRGb2N1cyhXZWJLaXRXZWJWaWV3QmFzZSogd2ViVmlld0Jhc2UsIGJvb2wg
Zm9jdXNlZCkKIHsKICAgICBXZWJLaXRXZWJWaWV3QmFzZVByaXZhdGUqIHByaXYgPSB3ZWJWaWV3
QmFzZS0+cHJpdjsKLSAgICBpZiAoKGZvY3VzZWQgJiYgcHJpdi0+dmlld1N0YXRlICYgVmlld1N0
YXRlOjpJc0ZvY3VzZWQpIHx8ICghZm9jdXNlZCAmJiAhKHByaXYtPnZpZXdTdGF0ZSAmIFZpZXdT
dGF0ZTo6SXNGb2N1c2VkKSkpCisgICAgaWYgKChmb2N1c2VkICYmIHByaXYtPmFjdGl2aXR5U3Rh
dGUgJiBBY3Rpdml0eVN0YXRlOjpJc0ZvY3VzZWQpIHx8ICghZm9jdXNlZCAmJiAhKHByaXYtPmFj
dGl2aXR5U3RhdGUgJiBBY3Rpdml0eVN0YXRlOjpJc0ZvY3VzZWQpKSkKICAgICAgICAgcmV0dXJu
OwogCi0gICAgVmlld1N0YXRlOjpGbGFncyBmbGFnc1RvVXBkYXRlID0gVmlld1N0YXRlOjpJc0Zv
Y3VzZWQ7CisgICAgQWN0aXZpdHlTdGF0ZTo6RmxhZ3MgZmxhZ3NUb1VwZGF0ZSA9IEFjdGl2aXR5
U3RhdGU6OklzRm9jdXNlZDsKICAgICBpZiAoZm9jdXNlZCkgewotICAgICAgICBwcml2LT52aWV3
U3RhdGUgfD0gVmlld1N0YXRlOjpJc0ZvY3VzZWQ7CisgICAgICAgIHByaXYtPmFjdGl2aXR5U3Rh
dGUgfD0gQWN0aXZpdHlTdGF0ZTo6SXNGb2N1c2VkOwogCiAgICAgICAgIC8vIElmIHRoZSB2aWV3
IGhhcyByZWNlaXZlZCB0aGUgZm9jdXMgYW5kIHRoZSB3aW5kb3cgaXMgbm90IGFjdGl2ZQogICAg
ICAgICAvLyBtYXJrIHRoZSBjdXJyZW50IHdpbmRvdyBhcyBhY3RpdmUgbm93LiBUaGlzIGNhbiBo
YXBwZW4gaWYgdGhlCiAgICAgICAgIC8vIHRvcGxldmVsIHdpbmRvdyBpcyBhIEdUS19XSU5ET1df
UE9QVVAgYW5kIHRoZSBmb2N1cyBoYXMgYmVlbgogICAgICAgICAvLyBzZXQgcHJvZ3JhbWF0aWNh
bGx5IGxpa2UgV2ViS2l0VGVzdFJ1bm5lciBkb2VzLCBiZWNhdXNlIFBPUFVQCiAgICAgICAgIC8v
IGNhbid0IGJlIGZvY3VzZWQuCi0gICAgICAgIGlmICghKHByaXYtPnZpZXdTdGF0ZSAmIFZpZXdT
dGF0ZTo6V2luZG93SXNBY3RpdmUpKSB7Ci0gICAgICAgICAgICBwcml2LT52aWV3U3RhdGUgfD0g
Vmlld1N0YXRlOjpXaW5kb3dJc0FjdGl2ZTsKLSAgICAgICAgICAgIGZsYWdzVG9VcGRhdGUgfD0g
Vmlld1N0YXRlOjpXaW5kb3dJc0FjdGl2ZTsKKyAgICAgICAgaWYgKCEocHJpdi0+YWN0aXZpdHlT
dGF0ZSAmIEFjdGl2aXR5U3RhdGU6OldpbmRvd0lzQWN0aXZlKSkgeworICAgICAgICAgICAgcHJp
di0+YWN0aXZpdHlTdGF0ZSB8PSBBY3Rpdml0eVN0YXRlOjpXaW5kb3dJc0FjdGl2ZTsKKyAgICAg
ICAgICAgIGZsYWdzVG9VcGRhdGUgfD0gQWN0aXZpdHlTdGF0ZTo6V2luZG93SXNBY3RpdmU7CiAg
ICAgICAgIH0KICAgICB9IGVsc2UKLSAgICAgICAgcHJpdi0+dmlld1N0YXRlICY9IH5WaWV3U3Rh
dGU6OklzRm9jdXNlZDsKKyAgICAgICAgcHJpdi0+YWN0aXZpdHlTdGF0ZSAmPSB+QWN0aXZpdHlT
dGF0ZTo6SXNGb2N1c2VkOwogCi0gICAgd2Via2l0V2ViVmlld0Jhc2VTY2hlZHVsZVVwZGF0ZVZp
ZXdTdGF0ZSh3ZWJWaWV3QmFzZSwgZmxhZ3NUb1VwZGF0ZSk7CisgICAgd2Via2l0V2ViVmlld0Jh
c2VTY2hlZHVsZVVwZGF0ZUFjdGl2aXR5U3RhdGUod2ViVmlld0Jhc2UsIGZsYWdzVG9VcGRhdGUp
OwogfQogCiBib29sIHdlYmtpdFdlYlZpZXdCYXNlSXNJbldpbmRvd0FjdGl2ZShXZWJLaXRXZWJW
aWV3QmFzZSogd2ViVmlld0Jhc2UpCiB7Ci0gICAgcmV0dXJuIHdlYlZpZXdCYXNlLT5wcml2LT52
aWV3U3RhdGUgJiBWaWV3U3RhdGU6OldpbmRvd0lzQWN0aXZlOworICAgIHJldHVybiB3ZWJWaWV3
QmFzZS0+cHJpdi0+YWN0aXZpdHlTdGF0ZSAmIEFjdGl2aXR5U3RhdGU6OldpbmRvd0lzQWN0aXZl
OwogfQogCiBib29sIHdlYmtpdFdlYlZpZXdCYXNlSXNGb2N1c2VkKFdlYktpdFdlYlZpZXdCYXNl
KiB3ZWJWaWV3QmFzZSkKIHsKLSAgICByZXR1cm4gd2ViVmlld0Jhc2UtPnByaXYtPnZpZXdTdGF0
ZSAmIFZpZXdTdGF0ZTo6SXNGb2N1c2VkOworICAgIHJldHVybiB3ZWJWaWV3QmFzZS0+cHJpdi0+
YWN0aXZpdHlTdGF0ZSAmIEFjdGl2aXR5U3RhdGU6OklzRm9jdXNlZDsKIH0KIAogYm9vbCB3ZWJr
aXRXZWJWaWV3QmFzZUlzVmlzaWJsZShXZWJLaXRXZWJWaWV3QmFzZSogd2ViVmlld0Jhc2UpCiB7
Ci0gICAgcmV0dXJuIHdlYlZpZXdCYXNlLT5wcml2LT52aWV3U3RhdGUgJiBWaWV3U3RhdGU6Oklz
VmlzaWJsZTsKKyAgICByZXR1cm4gd2ViVmlld0Jhc2UtPnByaXYtPmFjdGl2aXR5U3RhdGUgJiBB
Y3Rpdml0eVN0YXRlOjpJc1Zpc2libGU7CiB9CiAKIGJvb2wgd2Via2l0V2ViVmlld0Jhc2VJc0lu
V2luZG93KFdlYktpdFdlYlZpZXdCYXNlKiB3ZWJWaWV3QmFzZSkKIHsKLSAgICByZXR1cm4gd2Vi
Vmlld0Jhc2UtPnByaXYtPnZpZXdTdGF0ZSAmIFZpZXdTdGF0ZTo6SXNJbldpbmRvdzsKKyAgICBy
ZXR1cm4gd2ViVmlld0Jhc2UtPnByaXYtPmFjdGl2aXR5U3RhdGUgJiBBY3Rpdml0eVN0YXRlOjpJ
c0luV2luZG93OwogfQogCiB2b2lkIHdlYmtpdFdlYlZpZXdCYXNlU2V0RG93bmxvYWRSZXF1ZXN0
SGFuZGxlcihXZWJLaXRXZWJWaWV3QmFzZSogd2ViVmlld0Jhc2UsIFdlYktpdFdlYlZpZXdCYXNl
RG93bmxvYWRSZXF1ZXN0SGFuZGxlciBkb3dubG9hZEhhbmRsZXIpCkluZGV4OiBTb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwubW0KPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJbXBsLm1tCShyZXZpc2lvbiAyMDgxNzcp
CisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwubW0JKHdvcmtp
bmcgY29weSkKQEAgLTg0LDcgKzg0LDcgQEAKICNpbXBvcnQgPFdlYkNvcmUvU29mdExpbmtpbmcu
aD4KICNpbXBvcnQgPFdlYkNvcmUvVGV4dEFsdGVybmF0aXZlV2l0aFJhbmdlLmg+CiAjaW1wb3J0
IDxXZWJDb3JlL1RleHRVbmRvSW5zZXJ0aW9uTWFya3VwTWFjLmg+Ci0jaW1wb3J0IDxXZWJDb3Jl
L1ZpZXdTdGF0ZS5oPgorI2ltcG9ydCA8V2ViQ29yZS9BY3Rpdml0eVN0YXRlLmg+CiAjaW1wb3J0
IDxXZWJDb3JlL1dlYkFjdGlvbkRpc2FibGluZ0NBTGF5ZXJEZWxlZ2F0ZS5oPgogI2ltcG9ydCA8
V2ViQ29yZS9XZWJDb3JlQ0FMYXllckV4dHJhcy5oPgogI2ltcG9ydCA8V2ViQ29yZS9XZWJDb3Jl
RnVsbFNjcmVlblBsYWNlaG9sZGVyVmlldy5oPgpAQCAtNjA5LDcgKzYwOSw3IEBAIGJvb2wgV2Vi
Vmlld0ltcGw6OmJlY29tZUZpcnN0UmVzcG9uZGVyKCkKICAgICBtX2luQmVjb21lRmlyc3RSZXNw
b25kZXIgPSB0cnVlOwogCiAgICAgdXBkYXRlU2VjdXJlSW5wdXRTdGF0ZSgpOwotICAgIG1fcGFn
ZS0+dmlld1N0YXRlRGlkQ2hhbmdlKFdlYkNvcmU6OlZpZXdTdGF0ZTo6SXNGb2N1c2VkKTsKKyAg
ICBtX3BhZ2UtPmFjdGl2aXR5U3RhdGVEaWRDaGFuZ2UoV2ViQ29yZTo6QWN0aXZpdHlTdGF0ZTo6
SXNGb2N1c2VkKTsKICAgICAvLyBSZXN0b3JlIHRoZSBzZWxlY3Rpb24gaW4gdGhlIGVkaXRhYmxl
IHJlZ2lvbiBpZiByZXNpZ25pbmcgZmlyc3QgcmVzcG9uZGVyIGNsZWFyZWQgc2VsZWN0aW9uLgog
ICAgIG1fcGFnZS0+cmVzdG9yZVNlbGVjdGlvbkluRm9jdXNlZEVkaXRhYmxlRWxlbWVudCgpOwog
CkBAIC02NTYsNyArNjU2LDcgQEAgYm9vbCBXZWJWaWV3SW1wbDo6cmVzaWduRmlyc3RSZXNwb25k
ZXIoKQogICAgIGlmICghbV9wYWdlLT5tYWludGFpbnNJbmFjdGl2ZVNlbGVjdGlvbigpKQogICAg
ICAgICBtX3BhZ2UtPmNsZWFyU2VsZWN0aW9uKCk7CiAKLSAgICBtX3BhZ2UtPnZpZXdTdGF0ZURp
ZENoYW5nZShXZWJDb3JlOjpWaWV3U3RhdGU6OklzRm9jdXNlZCk7CisgICAgbV9wYWdlLT5hY3Rp
dml0eVN0YXRlRGlkQ2hhbmdlKFdlYkNvcmU6OkFjdGl2aXR5U3RhdGU6OklzRm9jdXNlZCk7CiAg
ICAgCiAgICAgbV9pblJlc2lnbkZpcnN0UmVzcG9uZGVyID0gZmFsc2U7CiAgICAgCkBAIC0xMDUx
LDEyICsxMDUxLDEyIEBAIGZsb2F0IFdlYlZpZXdJbXBsOjppbnRyaW5zaWNEZXZpY2VTY2FsZUYK
IAogdm9pZCBXZWJWaWV3SW1wbDo6d2luZG93RGlkT3JkZXJPZmZTY3JlZW4oKQogewotICAgIG1f
cGFnZS0+dmlld1N0YXRlRGlkQ2hhbmdlKFdlYkNvcmU6OlZpZXdTdGF0ZTo6SXNWaXNpYmxlIHwg
V2ViQ29yZTo6Vmlld1N0YXRlOjpXaW5kb3dJc0FjdGl2ZSk7CisgICAgbV9wYWdlLT5hY3Rpdml0
eVN0YXRlRGlkQ2hhbmdlKFdlYkNvcmU6OkFjdGl2aXR5U3RhdGU6OklzVmlzaWJsZSB8IFdlYkNv
cmU6OkFjdGl2aXR5U3RhdGU6OldpbmRvd0lzQWN0aXZlKTsKIH0KIAogdm9pZCBXZWJWaWV3SW1w
bDo6d2luZG93RGlkT3JkZXJPblNjcmVlbigpCiB7Ci0gICAgbV9wYWdlLT52aWV3U3RhdGVEaWRD
aGFuZ2UoV2ViQ29yZTo6Vmlld1N0YXRlOjpJc1Zpc2libGUgfCBXZWJDb3JlOjpWaWV3U3RhdGU6
OldpbmRvd0lzQWN0aXZlKTsKKyAgICBtX3BhZ2UtPmFjdGl2aXR5U3RhdGVEaWRDaGFuZ2UoV2Vi
Q29yZTo6QWN0aXZpdHlTdGF0ZTo6SXNWaXNpYmxlIHwgV2ViQ29yZTo6QWN0aXZpdHlTdGF0ZTo6
V2luZG93SXNBY3RpdmUpOwogfQogCiB2b2lkIFdlYlZpZXdJbXBsOjp3aW5kb3dEaWRCZWNvbWVL
ZXkoTlNXaW5kb3cgKmtleVdpbmRvdykKQEAgLTEwNjYsNyArMTA2Niw3IEBAIHZvaWQgV2ViVmll
d0ltcGw6OndpbmRvd0RpZEJlY29tZUtleShOU1cKICAgICAgICAgVUlHYW1lcGFkUHJvdmlkZXI6
OnNpbmdsZXRvbigpLnZpZXdCZWNhbWVBY3RpdmUobV9wYWdlLmdldCgpKTsKICNlbmRpZgogICAg
ICAgICB1cGRhdGVTZWN1cmVJbnB1dFN0YXRlKCk7Ci0gICAgICAgIG1fcGFnZS0+dmlld1N0YXRl
RGlkQ2hhbmdlKFdlYkNvcmU6OlZpZXdTdGF0ZTo6V2luZG93SXNBY3RpdmUpOworICAgICAgICBt
X3BhZ2UtPmFjdGl2aXR5U3RhdGVEaWRDaGFuZ2UoV2ViQ29yZTo6QWN0aXZpdHlTdGF0ZTo6V2lu
ZG93SXNBY3RpdmUpOwogICAgIH0KIH0KIApAQCAtMTA3NywxOCArMTA3NywxOCBAQCB2b2lkIFdl
YlZpZXdJbXBsOjp3aW5kb3dEaWRSZXNpZ25LZXkoTlNXCiAgICAgICAgIFVJR2FtZXBhZFByb3Zp
ZGVyOjpzaW5nbGV0b24oKS52aWV3QmVjYW1lSW5hY3RpdmUobV9wYWdlLmdldCgpKTsKICNlbmRp
ZgogICAgICAgICB1cGRhdGVTZWN1cmVJbnB1dFN0YXRlKCk7Ci0gICAgICAgIG1fcGFnZS0+dmll
d1N0YXRlRGlkQ2hhbmdlKFdlYkNvcmU6OlZpZXdTdGF0ZTo6V2luZG93SXNBY3RpdmUpOworICAg
ICAgICBtX3BhZ2UtPmFjdGl2aXR5U3RhdGVEaWRDaGFuZ2UoV2ViQ29yZTo6QWN0aXZpdHlTdGF0
ZTo6V2luZG93SXNBY3RpdmUpOwogICAgIH0KIH0KIAogdm9pZCBXZWJWaWV3SW1wbDo6d2luZG93
RGlkTWluaWF0dXJpemUoKQogewotICAgIG1fcGFnZS0+dmlld1N0YXRlRGlkQ2hhbmdlKFdlYkNv
cmU6OlZpZXdTdGF0ZTo6SXNWaXNpYmxlKTsKKyAgICBtX3BhZ2UtPmFjdGl2aXR5U3RhdGVEaWRD
aGFuZ2UoV2ViQ29yZTo6QWN0aXZpdHlTdGF0ZTo6SXNWaXNpYmxlKTsKIH0KIAogdm9pZCBXZWJW
aWV3SW1wbDo6d2luZG93RGlkRGVtaW5pYXR1cml6ZSgpCiB7Ci0gICAgbV9wYWdlLT52aWV3U3Rh
dGVEaWRDaGFuZ2UoV2ViQ29yZTo6Vmlld1N0YXRlOjpJc1Zpc2libGUpOworICAgIG1fcGFnZS0+
YWN0aXZpdHlTdGF0ZURpZENoYW5nZShXZWJDb3JlOjpBY3Rpdml0eVN0YXRlOjpJc1Zpc2libGUp
OwogfQogCiB2b2lkIFdlYlZpZXdJbXBsOjp3aW5kb3dEaWRNb3ZlKCkKQEAgLTExMjMsNyArMTEy
Myw3IEBAIHZvaWQgV2ViVmlld0ltcGw6OndpbmRvd0RpZENoYW5nZUxheWVySG8KIAogdm9pZCBX
ZWJWaWV3SW1wbDo6d2luZG93RGlkQ2hhbmdlT2NjbHVzaW9uU3RhdGUoKQogewotICAgIG1fcGFn
ZS0+dmlld1N0YXRlRGlkQ2hhbmdlKFdlYkNvcmU6OlZpZXdTdGF0ZTo6SXNWaXNpYmxlKTsKKyAg
ICBtX3BhZ2UtPmFjdGl2aXR5U3RhdGVEaWRDaGFuZ2UoV2ViQ29yZTo6QWN0aXZpdHlTdGF0ZTo6
SXNWaXNpYmxlKTsKIH0KIAogYm9vbCBXZWJWaWV3SW1wbDo6bWlnaHRCZWdpbkRyYWdXaGlsZUlu
YWN0aXZlKCkKQEAgLTEyMTQsMTIgKzEyMTQsMTIgQEAgdm9pZCBXZWJWaWV3SW1wbDo6dmlld0Rp
ZE1vdmVUb1dpbmRvdygpCiAgICAgaWYgKHdpbmRvdykgewogICAgICAgICB3aW5kb3dEaWRDaGFu
Z2VTY3JlZW4oKTsKIAotICAgICAgICBXZWJDb3JlOjpWaWV3U3RhdGU6OkZsYWdzIHZpZXdTdGF0
ZUNoYW5nZXMgPSBXZWJDb3JlOjpWaWV3U3RhdGU6OldpbmRvd0lzQWN0aXZlIHwgV2ViQ29yZTo6
Vmlld1N0YXRlOjpJc1Zpc2libGU7CisgICAgICAgIFdlYkNvcmU6OkFjdGl2aXR5U3RhdGU6OkZs
YWdzIGFjdGl2aXR5U3RhdGVDaGFuZ2VzID0gV2ViQ29yZTo6QWN0aXZpdHlTdGF0ZTo6V2luZG93
SXNBY3RpdmUgfCBXZWJDb3JlOjpBY3Rpdml0eVN0YXRlOjpJc1Zpc2libGU7CiAgICAgICAgIGlm
IChtX3Nob3VsZERlZmVyVmlld0luV2luZG93Q2hhbmdlcykKICAgICAgICAgICAgIG1fdmlld0lu
V2luZG93Q2hhbmdlV2FzRGVmZXJyZWQgPSB0cnVlOwogICAgICAgICBlbHNlCi0gICAgICAgICAg
ICB2aWV3U3RhdGVDaGFuZ2VzIHw9IFdlYkNvcmU6OlZpZXdTdGF0ZTo6SXNJbldpbmRvdzsKLSAg
ICAgICAgbV9wYWdlLT52aWV3U3RhdGVEaWRDaGFuZ2Uodmlld1N0YXRlQ2hhbmdlcyk7CisgICAg
ICAgICAgICBhY3Rpdml0eVN0YXRlQ2hhbmdlcyB8PSBXZWJDb3JlOjpBY3Rpdml0eVN0YXRlOjpJ
c0luV2luZG93OworICAgICAgICBtX3BhZ2UtPmFjdGl2aXR5U3RhdGVEaWRDaGFuZ2UoYWN0aXZp
dHlTdGF0ZUNoYW5nZXMpOwogCiAgICAgICAgIHVwZGF0ZVdpbmRvd0FuZFZpZXdGcmFtZXMoKTsK
IApAQCAtMTI0MywxMiArMTI0MywxMiBAQCB2b2lkIFdlYlZpZXdJbXBsOjp2aWV3RGlkTW92ZVRv
V2luZG93KCkKICAgICAgICAgaWYgKG1faW1tZWRpYXRlQWN0aW9uR2VzdHVyZVJlY29nbml6ZXIg
JiYgIVtbbV92aWV3IGdlc3R1cmVSZWNvZ25pemVyc10gY29udGFpbnNPYmplY3Q6bV9pbW1lZGlh
dGVBY3Rpb25HZXN0dXJlUmVjb2duaXplci5nZXQoKV0gJiYgIW1faWdub3Jlc05vbldoZWVsRXZl
bnRzICYmIG1fYWxsb3dzTGlua1ByZXZpZXcpCiAgICAgICAgICAgICBbbV92aWV3IGFkZEdlc3R1
cmVSZWNvZ25pemVyOm1faW1tZWRpYXRlQWN0aW9uR2VzdHVyZVJlY29nbml6ZXIuZ2V0KCldOwog
ICAgIH0gZWxzZSB7Ci0gICAgICAgIFdlYkNvcmU6OlZpZXdTdGF0ZTo6RmxhZ3Mgdmlld1N0YXRl
Q2hhbmdlcyA9IFdlYkNvcmU6OlZpZXdTdGF0ZTo6V2luZG93SXNBY3RpdmUgfCBXZWJDb3JlOjpW
aWV3U3RhdGU6OklzVmlzaWJsZTsKKyAgICAgICAgV2ViQ29yZTo6QWN0aXZpdHlTdGF0ZTo6Rmxh
Z3MgYWN0aXZpdHlTdGF0ZUNoYW5nZXMgPSBXZWJDb3JlOjpBY3Rpdml0eVN0YXRlOjpXaW5kb3dJ
c0FjdGl2ZSB8IFdlYkNvcmU6OkFjdGl2aXR5U3RhdGU6OklzVmlzaWJsZTsKICAgICAgICAgaWYg
KG1fc2hvdWxkRGVmZXJWaWV3SW5XaW5kb3dDaGFuZ2VzKQogICAgICAgICAgICAgbV92aWV3SW5X
aW5kb3dDaGFuZ2VXYXNEZWZlcnJlZCA9IHRydWU7CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAg
IHZpZXdTdGF0ZUNoYW5nZXMgfD0gV2ViQ29yZTo6Vmlld1N0YXRlOjpJc0luV2luZG93OwotICAg
ICAgICBtX3BhZ2UtPnZpZXdTdGF0ZURpZENoYW5nZSh2aWV3U3RhdGVDaGFuZ2VzKTsKKyAgICAg
ICAgICAgIGFjdGl2aXR5U3RhdGVDaGFuZ2VzIHw9IFdlYkNvcmU6OkFjdGl2aXR5U3RhdGU6Oklz
SW5XaW5kb3c7CisgICAgICAgIG1fcGFnZS0+YWN0aXZpdHlTdGF0ZURpZENoYW5nZShhY3Rpdml0
eVN0YXRlQ2hhbmdlcyk7CiAKICAgICAgICAgW05TRXZlbnQgcmVtb3ZlTW9uaXRvcjptX2ZsYWdz
Q2hhbmdlZEV2ZW50TW9uaXRvcl07CiAgICAgICAgIG1fZmxhZ3NDaGFuZ2VkRXZlbnRNb25pdG9y
ID0gbmlsOwpAQCAtMTI3OCwxNyArMTI3OCwxNyBAQCB2b2lkIFdlYlZpZXdJbXBsOjp2aWV3RGlk
Q2hhbmdlQmFja2luZ1ByCiAKIHZvaWQgV2ViVmlld0ltcGw6OnZpZXdEaWRIaWRlKCkKIHsKLSAg
ICBtX3BhZ2UtPnZpZXdTdGF0ZURpZENoYW5nZShXZWJDb3JlOjpWaWV3U3RhdGU6OklzVmlzaWJs
ZSk7CisgICAgbV9wYWdlLT5hY3Rpdml0eVN0YXRlRGlkQ2hhbmdlKFdlYkNvcmU6OkFjdGl2aXR5
U3RhdGU6OklzVmlzaWJsZSk7CiB9CiAKIHZvaWQgV2ViVmlld0ltcGw6OnZpZXdEaWRVbmhpZGUo
KQogewotICAgIG1fcGFnZS0+dmlld1N0YXRlRGlkQ2hhbmdlKFdlYkNvcmU6OlZpZXdTdGF0ZTo6
SXNWaXNpYmxlKTsKKyAgICBtX3BhZ2UtPmFjdGl2aXR5U3RhdGVEaWRDaGFuZ2UoV2ViQ29yZTo6
QWN0aXZpdHlTdGF0ZTo6SXNWaXNpYmxlKTsKIH0KIAogdm9pZCBXZWJWaWV3SW1wbDo6YWN0aXZl
U3BhY2VEaWRDaGFuZ2UoKQogewotICAgIG1fcGFnZS0+dmlld1N0YXRlRGlkQ2hhbmdlKFdlYkNv
cmU6OlZpZXdTdGF0ZTo6SXNWaXNpYmxlKTsKKyAgICBtX3BhZ2UtPmFjdGl2aXR5U3RhdGVEaWRD
aGFuZ2UoV2ViQ29yZTo6QWN0aXZpdHlTdGF0ZTo6SXNWaXNpYmxlKTsKIH0KIAogTlNWaWV3ICpX
ZWJWaWV3SW1wbDo6aGl0VGVzdChDR1BvaW50IHBvaW50KQpAQCAtMTM4Myw3ICsxMzgzLDcgQEAg
dm9pZCBXZWJWaWV3SW1wbDo6ZW5kRGVmZXJyaW5nVmlld0luV2luZAogCiAgICAgaWYgKG1fdmll
d0luV2luZG93Q2hhbmdlV2FzRGVmZXJyZWQpIHsKICAgICAgICAgZGlzcGF0Y2hTZXRUb3BDb250
ZW50SW5zZXQoKTsKLSAgICAgICAgbV9wYWdlLT52aWV3U3RhdGVEaWRDaGFuZ2UoV2ViQ29yZTo6
Vmlld1N0YXRlOjpJc0luV2luZG93KTsKKyAgICAgICAgbV9wYWdlLT5hY3Rpdml0eVN0YXRlRGlk
Q2hhbmdlKFdlYkNvcmU6OkFjdGl2aXR5U3RhdGU6OklzSW5XaW5kb3cpOwogICAgICAgICBtX3Zp
ZXdJbldpbmRvd0NoYW5nZVdhc0RlZmVycmVkID0gZmFsc2U7CiAgICAgfQogfQpAQCAtMTM5OSw3
ICsxMzk5LDcgQEAgdm9pZCBXZWJWaWV3SW1wbDo6ZW5kRGVmZXJyaW5nVmlld0luV2luZAogCiAg
ICAgaWYgKG1fdmlld0luV2luZG93Q2hhbmdlV2FzRGVmZXJyZWQpIHsKICAgICAgICAgZGlzcGF0
Y2hTZXRUb3BDb250ZW50SW5zZXQoKTsKLSAgICAgICAgbV9wYWdlLT52aWV3U3RhdGVEaWRDaGFu
Z2UoV2ViQ29yZTo6Vmlld1N0YXRlOjpJc0luV2luZG93KTsKKyAgICAgICAgbV9wYWdlLT5hY3Rp
dml0eVN0YXRlRGlkQ2hhbmdlKFdlYkNvcmU6OkFjdGl2aXR5U3RhdGU6OklzSW5XaW5kb3cpOwog
ICAgICAgICBtX3ZpZXdJbldpbmRvd0NoYW5nZVdhc0RlZmVycmVkID0gZmFsc2U7CiAgICAgfQog
fQpAQCAtMTQxNCw3ICsxNDE0LDcgQEAgdm9pZCBXZWJWaWV3SW1wbDo6cHJlcGFyZUZvck1vdmVU
b1dpbmRvdwogICAgIG1fc2hvdWxkRGVmZXJWaWV3SW5XaW5kb3dDaGFuZ2VzID0gZmFsc2U7CiAK
ICAgICBhdXRvIHdlYWtUaGlzID0gY3JlYXRlV2Vha1B0cigpOwotICAgIG1fcGFnZS0+aW5zdGFs
bFZpZXdTdGF0ZUNoYW5nZUNvbXBsZXRpb25IYW5kbGVyKFt3ZWFrVGhpcywgY29tcGxldGlvbkhh
bmRsZXJdKCkgeworICAgIG1fcGFnZS0+aW5zdGFsbEFjdGl2aXR5U3RhdGVDaGFuZ2VDb21wbGV0
aW9uSGFuZGxlcihbd2Vha1RoaXMsIGNvbXBsZXRpb25IYW5kbGVyXSgpIHsKICAgICAgICAgY29t
cGxldGlvbkhhbmRsZXIoKTsKIAogICAgICAgICBpZiAoIXdlYWtUaGlzKQpAQCAtMTQyNSw3ICsx
NDI1LDcgQEAgdm9pZCBXZWJWaWV3SW1wbDo6cHJlcGFyZUZvck1vdmVUb1dpbmRvdwogICAgIH0p
OwogCiAgICAgZGlzcGF0Y2hTZXRUb3BDb250ZW50SW5zZXQoKTsKLSAgICBtX3BhZ2UtPnZpZXdT
dGF0ZURpZENoYW5nZShXZWJDb3JlOjpWaWV3U3RhdGU6OklzSW5XaW5kb3csIGZhbHNlLCBXZWJQ
YWdlUHJveHk6OlZpZXdTdGF0ZUNoYW5nZURpc3BhdGNoTW9kZTo6SW1tZWRpYXRlKTsKKyAgICBt
X3BhZ2UtPmFjdGl2aXR5U3RhdGVEaWRDaGFuZ2UoV2ViQ29yZTo6QWN0aXZpdHlTdGF0ZTo6SXNJ
bldpbmRvdywgZmFsc2UsIFdlYlBhZ2VQcm94eTo6QWN0aXZpdHlTdGF0ZUNoYW5nZURpc3BhdGNo
TW9kZTo6SW1tZWRpYXRlKTsKICAgICBtX3ZpZXdJbldpbmRvd0NoYW5nZVdhc0RlZmVycmVkID0g
ZmFsc2U7CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvV2ViVmlldy5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9XZWJWaWV3LmNw
cAkocmV2aXNpb24gMjA4MTc3KQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9XZWJW
aWV3LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzgsNyArMzgsNyBAQAogI2luY2x1ZGUgIklucHV0
TWV0aG9kQ29udGV4dEVmbC5oIgogI2luY2x1ZGUgIk5hdGl2ZVdlYk1vdXNlRXZlbnQuaCIKICNp
bmNsdWRlICJOb3RJbXBsZW1lbnRlZC5oIgotI2luY2x1ZGUgIlZpZXdTdGF0ZS5oIgorI2luY2x1
ZGUgIkFjdGl2aXR5U3RhdGUuaCIKICNpbmNsdWRlICJXZWJCYWNrRm9yd2FyZExpc3QuaCIKICNp
bmNsdWRlICJXZWJCYWNrRm9yd2FyZExpc3RJdGVtLmgiCiAjaW5jbHVkZSAiV2ViQ29udGV4dE1l
bnVQcm94eUVmbC5oIgpJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2lvcy9XS0NvbnRl
bnRWaWV3Lm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9pb3MvV0tD
b250ZW50Vmlldy5tbQkocmV2aXNpb24gMjA4MTc3KQorKysgU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL2lvcy9XS0NvbnRlbnRWaWV3Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC02MDIsNyArNjAyLDcg
QEAgLSAodm9pZClfYXBwbGljYXRpb25XaWxsUmVzaWduQWN0aXZlOihOUwogLSAodm9pZClfYXBw
bGljYXRpb25EaWRFbnRlckJhY2tncm91bmQKIHsKICAgICBfcGFnZS0+YXBwbGljYXRpb25EaWRF
bnRlckJhY2tncm91bmQoKTsKLSAgICBfcGFnZS0+dmlld1N0YXRlRGlkQ2hhbmdlKFZpZXdTdGF0
ZTo6QWxsRmxhZ3MgJiB+Vmlld1N0YXRlOjpJc0luV2luZG93KTsKKyAgICBfcGFnZS0+YWN0aXZp
dHlTdGF0ZURpZENoYW5nZShBY3Rpdml0eVN0YXRlOjpBbGxGbGFncyAmIH5BY3Rpdml0eVN0YXRl
OjpJc0luV2luZG93KTsKIH0KIAogLSAodm9pZClfYXBwbGljYXRpb25EaWRDcmVhdGVXaW5kb3dD
b250ZXh0CkBAIC02MTksNyArNjE5LDcgQEAgLSAodm9pZClfYXBwbGljYXRpb25EaWRGaW5pc2hT
bmFwc2hvdHRpbgogLSAodm9pZClfYXBwbGljYXRpb25XaWxsRW50ZXJGb3JlZ3JvdW5kCiB7CiAg
ICAgX3BhZ2UtPmFwcGxpY2F0aW9uV2lsbEVudGVyRm9yZWdyb3VuZCgpOwotICAgIF9wYWdlLT52
aWV3U3RhdGVEaWRDaGFuZ2UoVmlld1N0YXRlOjpBbGxGbGFncyAmIH5WaWV3U3RhdGU6OklzSW5X
aW5kb3csIHRydWUsIFdlYlBhZ2VQcm94eTo6Vmlld1N0YXRlQ2hhbmdlRGlzcGF0Y2hNb2RlOjpJ
bW1lZGlhdGUpOworICAgIF9wYWdlLT5hY3Rpdml0eVN0YXRlRGlkQ2hhbmdlKEFjdGl2aXR5U3Rh
dGU6OkFsbEZsYWdzICYgfkFjdGl2aXR5U3RhdGU6OklzSW5XaW5kb3csIHRydWUsIFdlYlBhZ2VQ
cm94eTo6QWN0aXZpdHlTdGF0ZUNoYW5nZURpc3BhdGNoTW9kZTo6SW1tZWRpYXRlKTsKIH0KIAog
LSAodm9pZClfYXBwbGljYXRpb25EaWRCZWNvbWVBY3RpdmU6KE5TTm90aWZpY2F0aW9uKilub3Rp
ZmljYXRpb24KSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9pb3MvV0tQREZWaWV3Lm1t
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9pb3MvV0tQREZWaWV3Lm1t
CShyZXZpc2lvbiAyMDgxNzcpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvaW9zL1dLUERG
Vmlldy5tbQkod29ya2luZyBjb3B5KQpAQCAtODc4LDcgKzg3OCw3IEBAIC0gKEJPT0wpaXNCYWNr
Z3JvdW5kCiAtICh2b2lkKV9hcHBsaWNhdGlvbkRpZEVudGVyQmFja2dyb3VuZAogewogICAgIF93
ZWJWaWV3LT5fcGFnZS0+YXBwbGljYXRpb25EaWRFbnRlckJhY2tncm91bmQoKTsKLSAgICBfd2Vi
Vmlldy0+X3BhZ2UtPnZpZXdTdGF0ZURpZENoYW5nZShWaWV3U3RhdGU6OkFsbEZsYWdzICYgflZp
ZXdTdGF0ZTo6SXNJbldpbmRvdyk7CisgICAgX3dlYlZpZXctPl9wYWdlLT5hY3Rpdml0eVN0YXRl
RGlkQ2hhbmdlKEFjdGl2aXR5U3RhdGU6OkFsbEZsYWdzICYgfkFjdGl2aXR5U3RhdGU6OklzSW5X
aW5kb3cpOwogfQogCiAtICh2b2lkKV9hcHBsaWNhdGlvbkRpZENyZWF0ZVdpbmRvd0NvbnRleHQK
QEAgLTg5NSw3ICs4OTUsNyBAQCAtICh2b2lkKV9hcHBsaWNhdGlvbldpbGxFbnRlckZvcmVncm91
bmQKICAgICBfd2ViVmlldy0+X3BhZ2UtPmFwcGxpY2F0aW9uV2lsbEVudGVyRm9yZWdyb3VuZCgp
OwogICAgIGlmIChhdXRvIGRyYXdpbmdBcmVhID0gX3dlYlZpZXctPl9wYWdlLT5kcmF3aW5nQXJl
YSgpKQogICAgICAgICBkcmF3aW5nQXJlYS0+aGlkZUNvbnRlbnRVbnRpbEFueVVwZGF0ZSgpOwot
ICAgIF93ZWJWaWV3LT5fcGFnZS0+dmlld1N0YXRlRGlkQ2hhbmdlKFZpZXdTdGF0ZTo6QWxsRmxh
Z3MgJiB+Vmlld1N0YXRlOjpJc0luV2luZG93LCB0cnVlLCBXZWJQYWdlUHJveHk6OlZpZXdTdGF0
ZUNoYW5nZURpc3BhdGNoTW9kZTo6SW1tZWRpYXRlKTsKKyAgICBfd2ViVmlldy0+X3BhZ2UtPmFj
dGl2aXR5U3RhdGVEaWRDaGFuZ2UoQWN0aXZpdHlTdGF0ZTo6QWxsRmxhZ3MgJiB+QWN0aXZpdHlT
dGF0ZTo6SXNJbldpbmRvdywgdHJ1ZSwgV2ViUGFnZVByb3h5OjpBY3Rpdml0eVN0YXRlQ2hhbmdl
RGlzcGF0Y2hNb2RlOjpJbW1lZGlhdGUpOwogfQogCiBAZW5kCkluZGV4OiBTb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvaW9zL1dlYlBhZ2VQcm94eUlPUy5tbQo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvaW9zL1dlYlBhZ2VQcm94eUlPUy5tbQkocmV2aXNpb24gMjA4MTc3
KQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2lvcy9XZWJQYWdlUHJveHlJT1MubW0JKHdv
cmtpbmcgY29weSkKQEAgLTMwMyw3ICszMDMsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6c3luY2hy
b25pemVEeW5hbWljVmllCiAgICAgLy8gSWYgbV9keW5hbWljVmlld3BvcnRTaXplVXBkYXRlV2Fp
dGluZ0ZvclRhcmdldCBpcyBmYWxzZSwgd2UgYXJlIHdhaXRpbmcgZm9yIHRoZSBuZXh0IHZhbGlk
IGZyYW1lIHdpdGggdGhlIGhvcGUgaXQgaXMgdGhlIG9uZSBmb3IgdGhlIG5ldyB0YXJnZXQuCiAg
ICAgLy8gSWYgbV9keW5hbWljVmlld3BvcnRTaXplVXBkYXRlV2FpdGluZ0ZvclRhcmdldCBpcyBz
dGlsbCB0cnVlLCB0aGlzIGlzIGEgZGVzcGVyYXRlIGF0dGVtcHQgdG8gZ2V0IHRoZSB2YWxpZCBm
cmFtZSBiZWZvcmUgZmluaXNoaW5nIHRoZSBhbmltYXRpb24uCiAgICAgaWYgKG1fZHluYW1pY1Zp
ZXdwb3J0U2l6ZVVwZGF0ZVdhaXRpbmdGb3JMYXllclRyZWVDb21taXQpCi0gICAgICAgIG1fZHJh
d2luZ0FyZWEtPndhaXRGb3JEaWRVcGRhdGVWaWV3U3RhdGUoKTsKKyAgICAgICAgbV9kcmF3aW5n
QXJlYS0+d2FpdEZvckRpZFVwZGF0ZUFjdGl2aXR5U3RhdGUoKTsKIAogICAgIG1fZHluYW1pY1Zp
ZXdwb3J0U2l6ZVVwZGF0ZVdhaXRpbmdGb3JUYXJnZXQgPSBmYWxzZTsKICAgICBtX2R5bmFtaWNW
aWV3cG9ydFNpemVVcGRhdGVXYWl0aW5nRm9yTGF5ZXJUcmVlQ29tbWl0ID0gZmFsc2U7CkluZGV4
OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1JlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVh
UHJveHkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1JlbW90
ZUxheWVyVHJlZURyYXdpbmdBcmVhUHJveHkuaAkocmV2aXNpb24gMjA4MTc3KQorKysgU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL21hYy9SZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYVByb3h5LmgJ
KHdvcmtpbmcgY29weSkKQEAgLTczLDcgKzczLDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHVwZGF0
ZURlYnVnSW5kaWNhdG9yUG9zaXRpb24oKTsKICAgICB2b2lkIGluaXRpYWxpemVEZWJ1Z0luZGlj
YXRvcigpOwogCi0gICAgdm9pZCB3YWl0Rm9yRGlkVXBkYXRlVmlld1N0YXRlKCkgb3ZlcnJpZGU7
CisgICAgdm9pZCB3YWl0Rm9yRGlkVXBkYXRlQWN0aXZpdHlTdGF0ZSgpIG92ZXJyaWRlOwogICAg
IHZvaWQgaGlkZUNvbnRlbnRVbnRpbFBlbmRpbmdVcGRhdGUoKSBvdmVycmlkZTsKICAgICB2b2lk
IGhpZGVDb250ZW50VW50aWxBbnlVcGRhdGUoKSBvdmVycmlkZTsKICAgICBib29sIGhhc1Zpc2li
bGVDb250ZW50KCkgY29uc3Qgb3ZlcnJpZGU7CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvbWFjL1JlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhUHJveHkubW0KPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9SZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYVBy
b3h5Lm1tCShyZXZpc2lvbiAyMDgxNzcpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFj
L1JlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhUHJveHkubW0JKHdvcmtpbmcgY29weSkKQEAgLTQx
OCwxOCArNDE4LDE4IEBAIHZvaWQgUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWFQcm94eTo6ZGkK
IAogICAgIG1fbGFzdFZpc2libGVUcmFuc2FjdGlvbklEID0gbV90cmFuc2FjdGlvbklERm9yUGVu
ZGluZ0NBQ29tbWl0OwogCi0gICAgbV93ZWJQYWdlUHJveHkuZGlkVXBkYXRlVmlld1N0YXRlKCk7
CisgICAgbV93ZWJQYWdlUHJveHkuZGlkVXBkYXRlQWN0aXZpdHlTdGF0ZSgpOwogfQogCi12b2lk
IFJlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhUHJveHk6OndhaXRGb3JEaWRVcGRhdGVWaWV3U3Rh
dGUoKQordm9pZCBSZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYVByb3h5Ojp3YWl0Rm9yRGlkVXBk
YXRlQWN0aXZpdHlTdGF0ZSgpCiB7CiAgICAgLy8gV2UgbXVzdCBzZW5kIHRoZSBkaWRVcGRhdGUg
bWVzc2FnZSBiZWZvcmUgYmxvY2tpbmcgb24gdGhlIG5leHQgY29tbWl0LCBvdGhlcndpc2UKICAg
ICAvLyB3ZSBjYW4gYmUgZ3VhcmFudGVlZCB0aGF0IHRoZSBuZXh0IGNvbW1pdCB3b24ndCBjb21l
IHVudGlsIGFmdGVyIHRoZSB3YWl0Rm9yQW5kRGlzcGF0Y2hJbW1lZGlhdGVseSB0aW1lcyBvdXQu
CiAgICAgaWYgKG1fZGlkVXBkYXRlTWVzc2FnZVN0YXRlICE9IERvZXNOb3ROZWVkRGlkVXBkYXRl
KQogICAgICAgICBkaWRSZWZyZXNoRGlzcGxheShtb25vdG9uaWNhbGx5SW5jcmVhc2luZ1RpbWUo
KSk7CiAKLSAgICBzdGF0aWMgc3RkOjpjaHJvbm86Om1pbGxpc2Vjb25kcyB2aWV3U3RhdGVVcGRh
dGVUaW1lb3V0ID0gW10gewotICAgICAgICBpZiAoaWQgdmFsdWUgPSBbW05TVXNlckRlZmF1bHRz
IHN0YW5kYXJkVXNlckRlZmF1bHRzXSBvYmplY3RGb3JLZXk6QCJXZWJLaXRPdmVycmlkZVZpZXdT
dGF0ZVVwZGF0ZVRpbWVvdXQiXSkKKyAgICBzdGF0aWMgc3RkOjpjaHJvbm86Om1pbGxpc2Vjb25k
cyBhY3Rpdml0eVN0YXRlVXBkYXRlVGltZW91dCA9IFtdIHsKKyAgICAgICAgaWYgKGlkIHZhbHVl
ID0gW1tOU1VzZXJEZWZhdWx0cyBzdGFuZGFyZFVzZXJEZWZhdWx0c10gb2JqZWN0Rm9yS2V5OkAi
V2ViS2l0T3ZlcnJpZGVBY3Rpdml0eVN0YXRlVXBkYXRlVGltZW91dCJdKQogICAgICAgICAgICAg
cmV0dXJuIHN0ZDo6Y2hyb25vOjpkdXJhdGlvbl9jYXN0PHN0ZDo6Y2hyb25vOjptaWxsaXNlY29u
ZHM+KHN0ZDo6Y2hyb25vOjpkdXJhdGlvbjxkb3VibGU+KFt2YWx1ZSBkb3VibGVWYWx1ZV0pKTsK
IAogI2lmIFBMQVRGT1JNKElPUykKQEAgLTQzOCw3ICs0MzgsNyBAQCB2b2lkIFJlbW90ZUxheWVy
VHJlZURyYXdpbmdBcmVhUHJveHk6OndhCiAgICAgICAgIHJldHVybiBzdGQ6OmNocm9ubzo6bWls
bGlzZWNvbmRzKDI1MCk7CiAjZW5kaWYKICAgICB9KCk7Ci0gICAgbV93ZWJQYWdlUHJveHkucHJv
Y2VzcygpLmNvbm5lY3Rpb24oKS0+d2FpdEZvckFuZERpc3BhdGNoSW1tZWRpYXRlbHk8TWVzc2Fn
ZXM6OlJlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhUHJveHk6OkNvbW1pdExheWVyVHJlZT4obV93
ZWJQYWdlUHJveHkucGFnZUlEKCksIHZpZXdTdGF0ZVVwZGF0ZVRpbWVvdXQsIElQQzo6V2FpdEZv
ck9wdGlvbjo6SW50ZXJydXB0V2FpdGluZ0lmU3luY01lc3NhZ2VBcnJpdmVzKTsKKyAgICBtX3dl
YlBhZ2VQcm94eS5wcm9jZXNzKCkuY29ubmVjdGlvbigpLT53YWl0Rm9yQW5kRGlzcGF0Y2hJbW1l
ZGlhdGVseTxNZXNzYWdlczo6UmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWFQcm94eTo6Q29tbWl0
TGF5ZXJUcmVlPihtX3dlYlBhZ2VQcm94eS5wYWdlSUQoKSwgYWN0aXZpdHlTdGF0ZVVwZGF0ZVRp
bWVvdXQsIElQQzo6V2FpdEZvck9wdGlvbjo6SW50ZXJydXB0V2FpdGluZ0lmU3luY01lc3NhZ2VB
cnJpdmVzKTsKIH0KIAogdm9pZCBSZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYVByb3h5OjpkaXNw
YXRjaEFmdGVyRW5zdXJpbmdEcmF3aW5nKHN0ZDo6ZnVuY3Rpb248dm9pZCAoQ2FsbGJhY2tCYXNl
OjpFcnJvcik+IGNhbGxiYWNrRnVuY3Rpb24pCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvbWFjL1RpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhUHJveHkuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1RpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdB
cmVhUHJveHkuaAkocmV2aXNpb24gMjA4MTc3KQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L21hYy9UaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYVByb3h5LmgJKHdvcmtpbmcgY29weSkK
QEAgLTUyLDcgKzUyLDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGFkanVzdFRyYW5zaWVudFpvb20o
ZG91YmxlIHNjYWxlLCBXZWJDb3JlOjpGbG9hdFBvaW50IG9yaWdpbikgb3ZlcnJpZGU7CiAgICAg
dm9pZCBjb21taXRUcmFuc2llbnRab29tKGRvdWJsZSBzY2FsZSwgV2ViQ29yZTo6RmxvYXRQb2lu
dCBvcmlnaW4pIG92ZXJyaWRlOwogCi0gICAgdm9pZCB3YWl0Rm9yRGlkVXBkYXRlVmlld1N0YXRl
KCkgb3ZlcnJpZGU7CisgICAgdm9pZCB3YWl0Rm9yRGlkVXBkYXRlQWN0aXZpdHlTdGF0ZSgpIG92
ZXJyaWRlOwogICAgIHZvaWQgZGlzcGF0Y2hBZnRlckVuc3VyaW5nRHJhd2luZyhzdGQ6OmZ1bmN0
aW9uPHZvaWQgKENhbGxiYWNrQmFzZTo6RXJyb3IpPikgb3ZlcnJpZGU7CiAKICAgICB2b2lkIHdp
bGxTZW5kVXBkYXRlR2VvbWV0cnkoKSBvdmVycmlkZTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9tYWMvVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWFQcm94eS5tbQo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1RpbGVkQ29yZUFuaW1hdGlvbkRy
YXdpbmdBcmVhUHJveHkubW0JKHJldmlzaW9uIDIwODE3NykKKysrIFNvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9tYWMvVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWFQcm94eS5tbQkod29ya2lu
ZyBjb3B5KQpAQCAtMTMxLDEwICsxMzEsMTAgQEAgdm9pZCBUaWxlZENvcmVBbmltYXRpb25EcmF3
aW5nQXJlYVByb3h5OgogICAgICAgICBzZW5kVXBkYXRlR2VvbWV0cnkoKTsKIH0KIAotdm9pZCBU
aWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYVByb3h5Ojp3YWl0Rm9yRGlkVXBkYXRlVmlld1N0
YXRlKCkKK3ZvaWQgVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWFQcm94eTo6d2FpdEZvckRp
ZFVwZGF0ZUFjdGl2aXR5U3RhdGUoKQogewotICAgIGF1dG8gdmlld1N0YXRlVXBkYXRlVGltZW91
dCA9IHN0ZDo6Y2hyb25vOjptaWxsaXNlY29uZHMoMjUwKTsKLSAgICBtX3dlYlBhZ2VQcm94eS5w
cm9jZXNzKCkuY29ubmVjdGlvbigpLT53YWl0Rm9yQW5kRGlzcGF0Y2hJbW1lZGlhdGVseTxNZXNz
YWdlczo6V2ViUGFnZVByb3h5OjpEaWRVcGRhdGVWaWV3U3RhdGU+KG1fd2ViUGFnZVByb3h5LnBh
Z2VJRCgpLCB2aWV3U3RhdGVVcGRhdGVUaW1lb3V0LCBJUEM6OldhaXRGb3JPcHRpb246OkludGVy
cnVwdFdhaXRpbmdJZlN5bmNNZXNzYWdlQXJyaXZlcyk7CisgICAgYXV0byBhY3Rpdml0eVN0YXRl
VXBkYXRlVGltZW91dCA9IHN0ZDo6Y2hyb25vOjptaWxsaXNlY29uZHMoMjUwKTsKKyAgICBtX3dl
YlBhZ2VQcm94eS5wcm9jZXNzKCkuY29ubmVjdGlvbigpLT53YWl0Rm9yQW5kRGlzcGF0Y2hJbW1l
ZGlhdGVseTxNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpEaWRVcGRhdGVBY3Rpdml0eVN0YXRlPiht
X3dlYlBhZ2VQcm94eS5wYWdlSUQoKSwgYWN0aXZpdHlTdGF0ZVVwZGF0ZVRpbWVvdXQsIElQQzo6
V2FpdEZvck9wdGlvbjo6SW50ZXJydXB0V2FpdGluZ0lmU3luY01lc3NhZ2VBcnJpdmVzKTsKIH0K
IAogdm9pZCBUaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYVByb3h5OjppbnRyaW5zaWNDb250
ZW50U2l6ZURpZENoYW5nZShjb25zdCBJbnRTaXplJiBuZXdJbnRyaW5zaWNDb250ZW50U2l6ZSkK
SW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmll
dy5jcHAJKHJldmlzaW9uIDIwODE3NykKKysrIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1
Z2lucy9QbHVnaW5WaWV3LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTM1LDE0ICs1MzUsMTQgQEAg
dm9pZCBQbHVnaW5WaWV3Ojp3ZWJQYWdlRGVzdHJveWVkKCkKICAgICBtX3dlYlBhZ2UgPSAwOwog
fQogCi12b2lkIFBsdWdpblZpZXc6OnZpZXdTdGF0ZURpZENoYW5nZShWaWV3U3RhdGU6OkZsYWdz
IGNoYW5nZWQpCit2b2lkIFBsdWdpblZpZXc6OmFjdGl2aXR5U3RhdGVEaWRDaGFuZ2UoQWN0aXZp
dHlTdGF0ZTo6RmxhZ3MgY2hhbmdlZCkKIHsKICAgICBpZiAoIW1fcGx1Z2luIHx8ICFtX2lzSW5p
dGlhbGl6ZWQpCiAgICAgICAgIHJldHVybjsKIAotICAgIGlmIChjaGFuZ2VkICYgVmlld1N0YXRl
OjpJc1Zpc2libGVPck9jY2x1ZGVkKQorICAgIGlmIChjaGFuZ2VkICYgQWN0aXZpdHlTdGF0ZTo6
SXNWaXNpYmxlT3JPY2NsdWRlZCkKICAgICAgICAgbV9wbHVnaW4tPndpbmRvd1Zpc2liaWxpdHlD
aGFuZ2VkKG1fd2ViUGFnZS0+aXNWaXNpYmxlT3JPY2NsdWRlZCgpKTsKLSAgICBpZiAoY2hhbmdl
ZCAmIFZpZXdTdGF0ZTo6V2luZG93SXNBY3RpdmUpCisgICAgaWYgKGNoYW5nZWQgJiBBY3Rpdml0
eVN0YXRlOjpXaW5kb3dJc0FjdGl2ZSkKICAgICAgICAgbV9wbHVnaW4tPndpbmRvd0ZvY3VzQ2hh
bmdlZChtX3dlYlBhZ2UtPndpbmRvd0lzRm9jdXNlZCgpKTsKIH0KIApJbmRleDogU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5oCShyZXZpc2lvbiAyMDgx
NzcpCisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5oCSh3
b3JraW5nIGNvcHkpCkBAIC0zOSw3ICszOSw3IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9SZXNvdXJj
ZUVycm9yLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9SZXNvdXJjZVJlc3BvbnNlLmg+CiAjaW5jbHVk
ZSA8V2ViQ29yZS9UaW1lci5oPgotI2luY2x1ZGUgPFdlYkNvcmUvVmlld1N0YXRlLmg+CisjaW5j
bHVkZSA8V2ViQ29yZS9BY3Rpdml0eVN0YXRlLmg+CiAjaW5jbHVkZSA8bWVtb3J5PgogI2luY2x1
ZGUgPHd0Zi9EZXF1ZS5oPgogI2luY2x1ZGUgPHd0Zi9SdW5Mb29wLmg+CkBAIC03Nyw3ICs3Nyw3
IEBAIHB1YmxpYzoKICAgICB2b2lkIG1hbnVhbExvYWREaWRGaW5pc2hMb2FkaW5nKCk7CiAgICAg
dm9pZCBtYW51YWxMb2FkRGlkRmFpbChjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJik7CiAK
LSAgICB2b2lkIHZpZXdTdGF0ZURpZENoYW5nZShXZWJDb3JlOjpWaWV3U3RhdGU6OkZsYWdzIGNo
YW5nZWQpOworICAgIHZvaWQgYWN0aXZpdHlTdGF0ZURpZENoYW5nZShXZWJDb3JlOjpBY3Rpdml0
eVN0YXRlOjpGbGFncyBjaGFuZ2VkKTsKICAgICB2b2lkIHNldExheWVySG9zdGluZ01vZGUoTGF5
ZXJIb3N0aW5nTW9kZSk7CiAKICNpZiBQTEFURk9STShDT0NPQSkKSW5kZXg6IFNvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9BY2NlbGVyYXRlZERyYXdpbmdBcmVhLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvQWNjZWxlcmF0ZWREcmF3
aW5nQXJlYS5jcHAJKHJldmlzaW9uIDIwODE3NykKKysrIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvV2ViUGFnZS9BY2NlbGVyYXRlZERyYXdpbmdBcmVhLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MzY5LDkgKzM2OSw5IEBAIHZvaWQgQWNjZWxlcmF0ZWREcmF3aW5nQXJlYTo6ZGVzdHJveU5hdGkK
IH0KICNlbmRpZgogCi12b2lkIEFjY2VsZXJhdGVkRHJhd2luZ0FyZWE6OnZpZXdTdGF0ZURpZENo
YW5nZShWaWV3U3RhdGU6OkZsYWdzIGNoYW5nZWQsIGJvb2wsIGNvbnN0IFZlY3Rvcjx1aW50NjRf
dD4mKQordm9pZCBBY2NlbGVyYXRlZERyYXdpbmdBcmVhOjphY3Rpdml0eVN0YXRlRGlkQ2hhbmdl
KEFjdGl2aXR5U3RhdGU6OkZsYWdzIGNoYW5nZWQsIGJvb2wsIGNvbnN0IFZlY3Rvcjx1aW50NjRf
dD4mKQogewotICAgIGlmIChjaGFuZ2VkICYgVmlld1N0YXRlOjpJc1Zpc2libGUpIHsKKyAgICBp
ZiAoY2hhbmdlZCAmIEFjdGl2aXR5U3RhdGU6OklzVmlzaWJsZSkgewogICAgICAgICBpZiAobV93
ZWJQYWdlLmlzVmlzaWJsZSgpKQogICAgICAgICAgICAgcmVzdW1lUGFpbnRpbmcoKTsKICAgICAg
ICAgZWxzZQpJbmRleDogU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0FjY2VsZXJh
dGVkRHJhd2luZ0FyZWEuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1dlYlBhZ2UvQWNjZWxlcmF0ZWREcmF3aW5nQXJlYS5oCShyZXZpc2lvbiAyMDgxNzcpCisrKyBT
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvQWNjZWxlcmF0ZWREcmF3aW5nQXJlYS5o
CSh3b3JraW5nIGNvcHkpCkBAIC02OCw3ICs2OCw3IEBAIHByb3RlY3RlZDoKICAgICB2b2lkIGRl
c3Ryb3lOYXRpdmVTdXJmYWNlSGFuZGxlRm9yQ29tcG9zaXRpbmcoYm9vbCYpIG92ZXJyaWRlOwog
I2VuZGlmCiAKLSAgICB2b2lkIHZpZXdTdGF0ZURpZENoYW5nZShXZWJDb3JlOjpWaWV3U3RhdGU6
OkZsYWdzLCBib29sIC8qIHdhbnRzRGlkVXBkYXRlVmlld1N0YXRlICovLCBjb25zdCBWZWN0b3I8
dWludDY0X3Q+JiAvKiBjYWxsYmFja0lEcyAqLykgb3ZlcnJpZGU7CisgICAgdm9pZCBhY3Rpdml0
eVN0YXRlRGlkQ2hhbmdlKFdlYkNvcmU6OkFjdGl2aXR5U3RhdGU6OkZsYWdzLCBib29sIC8qIHdh
bnRzRGlkVXBkYXRlQWN0aXZpdHlTdGF0ZSAqLywgY29uc3QgVmVjdG9yPHVpbnQ2NF90PiYgLyog
Y2FsbGJhY2tJRHMgKi8pIG92ZXJyaWRlOwogICAgIHZvaWQgYXR0YWNoVmlld092ZXJsYXlHcmFw
aGljc0xheWVyKFdlYkNvcmU6OkZyYW1lKiwgV2ViQ29yZTo6R3JhcGhpY3NMYXllciopIG92ZXJy
aWRlOwogCiAgICAgdm9pZCBsYXllckhvc3REaWRGbHVzaExheWVycygpIG92ZXJyaWRlOwpJbmRl
eDogU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0RyYXdpbmdBcmVhLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0RyYXdpbmdBcmVhLmgJ
KHJldmlzaW9uIDIwODE3NykKKysrIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9E
cmF3aW5nQXJlYS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMyw3ICszMyw3IEBACiAjaW5jbHVkZSA8
V2ViQ29yZS9MYXllckZsdXNoVGhyb3R0bGVTdGF0ZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvTGF5
b3V0TWlsZXN0b25lcy5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUGxhdGZvcm1TY3JlZW4uaD4KLSNp
bmNsdWRlIDxXZWJDb3JlL1ZpZXdTdGF0ZS5oPgorI2luY2x1ZGUgPFdlYkNvcmUvQWN0aXZpdHlT
dGF0ZS5oPgogI2luY2x1ZGUgPGZ1bmN0aW9uYWw+CiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4K
ICNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KQEAgLTEyMCw3ICsxMjAsNyBAQCBwdWJsaWM6
CiAKICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hBZnRlckVuc3VyaW5nVXBkYXRlZFNjcm9sbFBv
c2l0aW9uKHN0ZDo6ZnVuY3Rpb248dm9pZCAoKT4pOwogCi0gICAgdmlydHVhbCB2b2lkIHZpZXdT
dGF0ZURpZENoYW5nZShXZWJDb3JlOjpWaWV3U3RhdGU6OkZsYWdzLCBib29sIC8qIHdhbnRzRGlk
VXBkYXRlVmlld1N0YXRlICovLCBjb25zdCBWZWN0b3I8dWludDY0X3Q+JiAvKiBjYWxsYmFja0lE
cyAqLykgeyB9CisgICAgdmlydHVhbCB2b2lkIGFjdGl2aXR5U3RhdGVEaWRDaGFuZ2UoV2ViQ29y
ZTo6QWN0aXZpdHlTdGF0ZTo6RmxhZ3MsIGJvb2wgLyogd2FudHNEaWRVcGRhdGVBY3Rpdml0eVN0
YXRlICovLCBjb25zdCBWZWN0b3I8dWludDY0X3Q+JiAvKiBjYWxsYmFja0lEcyAqLykgeyB9CiAg
ICAgdmlydHVhbCB2b2lkIHNldExheWVySG9zdGluZ01vZGUoTGF5ZXJIb3N0aW5nTW9kZSkgeyB9
CiAKICAgICB2aXJ0dWFsIGJvb2wgbWFya0xheWVyc1ZvbGF0aWxlSW1tZWRpYXRlbHlJZlBvc3Np
YmxlKCkgeyByZXR1cm4gdHJ1ZTsgfQpJbmRleDogU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9X
ZWJQYWdlL1dlYlBhZ2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvV2ViUGFnZS9XZWJQYWdlLmNwcAkocmV2aXNpb24gMjA4MTc3KQorKysgU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNzYs
NyArMzc2LDcgQEAgV2ViUGFnZTo6V2ViUGFnZSh1aW50NjRfdCBwYWdlSUQsIGNvbnN0IAogICAg
ICwgbV9tYXhpbXVtUmVuZGVyaW5nU3VwcHJlc3Npb25Ub2tlbigwKQogICAgICwgbV9zY3JvbGxQ
aW5uaW5nQmVoYXZpb3IoRG9Ob3RQaW4pCiAgICAgLCBtX3VzZUFzeW5jU2Nyb2xsaW5nKGZhbHNl
KQotICAgICwgbV92aWV3U3RhdGUocGFyYW1ldGVycy52aWV3U3RhdGUpCisgICAgLCBtX2FjdGl2
aXR5U3RhdGUocGFyYW1ldGVycy5hY3Rpdml0eVN0YXRlKQogICAgICwgbV91c2VyQWN0aXZpdHko
IlByb2Nlc3Mgc3VwcHJlc3Npb24gZGlzYWJsZWQgZm9yIHBhZ2UuIikKICAgICAsIG1fdXNlckFj
dGl2aXR5SHlzdGVyZXNpcyhbdGhpc10oSHlzdGVyZXNpc1N0YXRlKSB7IHVwZGF0ZVVzZXJBY3Rp
dml0eSgpOyB9KQogICAgICwgbV9wZW5kaW5nTmF2aWdhdGlvbklEKDApCkBAIC00OTMsNyArNDkz
LDcgQEAgV2ViUGFnZTo6V2ViUGFnZSh1aW50NjRfdCBwYWdlSUQsIGNvbnN0IAogICAgIHNldFBh
Z2luYXRpb25MaW5lR3JpZEVuYWJsZWQocGFyYW1ldGVycy5wYWdpbmF0aW9uTGluZUdyaWRFbmFi
bGVkKTsKICAgICAKICAgICAvLyBJZiB0aGUgcGFnZSBpcyBjcmVhdGVkIG9mZi1zY3JlZW4sIGl0
cyB2aXNpYmlsaXR5U3RhdGUgc2hvdWxkIGJlIHByZXJlbmRlci4KLSAgICBtX3BhZ2UtPnNldFZp
ZXdTdGF0ZShtX3ZpZXdTdGF0ZSk7CisgICAgbV9wYWdlLT5zZXRBY3Rpdml0eVN0YXRlKG1fYWN0
aXZpdHlTdGF0ZSk7CiAgICAgaWYgKCFpc1Zpc2libGUoKSkKICAgICAgICAgbV9wYWdlLT5zZXRJ
c1ByZXJlbmRlcigpOwogICAgIHNldFBhZ2VTdXBwcmVzc2VkKGZhbHNlKTsKQEAgLTU3NSw4ICs1
NzUsOCBAQCBXZWJQYWdlOjpXZWJQYWdlKHVpbnQ2NF90IHBhZ2VJRCwgY29uc3QgCiAKIHZvaWQg
V2ViUGFnZTo6cmVpbml0aWFsaXplV2ViUGFnZShjb25zdCBXZWJQYWdlQ3JlYXRpb25QYXJhbWV0
ZXJzJiBwYXJhbWV0ZXJzKQogewotICAgIGlmIChtX3ZpZXdTdGF0ZSAhPSBwYXJhbWV0ZXJzLnZp
ZXdTdGF0ZSkKLSAgICAgICAgc2V0Vmlld1N0YXRlKHBhcmFtZXRlcnMudmlld1N0YXRlLCBmYWxz
ZSwgVmVjdG9yPHVpbnQ2NF90PigpKTsKKyAgICBpZiAobV9hY3Rpdml0eVN0YXRlICE9IHBhcmFt
ZXRlcnMuYWN0aXZpdHlTdGF0ZSkKKyAgICAgICAgc2V0QWN0aXZpdHlTdGF0ZShwYXJhbWV0ZXJz
LmFjdGl2aXR5U3RhdGUsIGZhbHNlLCBWZWN0b3I8dWludDY0X3Q+KCkpOwogICAgIGlmIChtX2xh
eWVySG9zdGluZ01vZGUgIT0gcGFyYW1ldGVycy5sYXllckhvc3RpbmdNb2RlKQogICAgICAgICBz
ZXRMYXllckhvc3RpbmdNb2RlKHBhcmFtZXRlcnMubGF5ZXJIb3N0aW5nTW9kZSk7CiB9CkBAIC0y
NTY3LDcgKzI1NjcsNyBAQCB2b2lkIFdlYlBhZ2U6OnNldENhblN0YXJ0TWVkaWFUaW1lckZpcmVk
CiAKIHZvaWQgV2ViUGFnZTo6dXBkYXRlSXNJbldpbmRvdyhib29sIGlzSW5pdGlhbFN0YXRlKQog
ewotICAgIGJvb2wgaXNJbldpbmRvdyA9IG1fdmlld1N0YXRlICYgV2ViQ29yZTo6Vmlld1N0YXRl
OjpJc0luV2luZG93OworICAgIGJvb2wgaXNJbldpbmRvdyA9IG1fYWN0aXZpdHlTdGF0ZSAmIFdl
YkNvcmU6OkFjdGl2aXR5U3RhdGU6OklzSW5XaW5kb3c7CiAKICAgICBpZiAoIWlzSW5XaW5kb3cp
IHsKICAgICAgICAgbV9zZXRDYW5TdGFydE1lZGlhVGltZXIuc3RvcCgpOwpAQCAtMjU5MCwxOCAr
MjU5MCwxOCBAQCB2b2lkIFdlYlBhZ2U6OnVwZGF0ZUlzSW5XaW5kb3coYm9vbCBpc0luCiAgICAg
ICAgIGxheW91dElmTmVlZGVkKCk7CiB9CiAKLXZvaWQgV2ViUGFnZTo6c2V0Vmlld1N0YXRlKFZp
ZXdTdGF0ZTo6RmxhZ3Mgdmlld1N0YXRlLCBib29sIHdhbnRzRGlkVXBkYXRlVmlld1N0YXRlLCBj
b25zdCBWZWN0b3I8dWludDY0X3Q+JiBjYWxsYmFja0lEcykKK3ZvaWQgV2ViUGFnZTo6c2V0QWN0
aXZpdHlTdGF0ZShBY3Rpdml0eVN0YXRlOjpGbGFncyBhY3Rpdml0eVN0YXRlLCBib29sIHdhbnRz
RGlkVXBkYXRlQWN0aXZpdHlTdGF0ZSwgY29uc3QgVmVjdG9yPHVpbnQ2NF90PiYgY2FsbGJhY2tJ
RHMpCiB7Ci0gICAgVmlld1N0YXRlOjpGbGFncyBjaGFuZ2VkID0gbV92aWV3U3RhdGUgXiB2aWV3
U3RhdGU7Ci0gICAgbV92aWV3U3RhdGUgPSB2aWV3U3RhdGU7CisgICAgQWN0aXZpdHlTdGF0ZTo6
RmxhZ3MgY2hhbmdlZCA9IG1fYWN0aXZpdHlTdGF0ZSBeIGFjdGl2aXR5U3RhdGU7CisgICAgbV9h
Y3Rpdml0eVN0YXRlID0gYWN0aXZpdHlTdGF0ZTsKIAotICAgIG1fcGFnZS0+c2V0Vmlld1N0YXRl
KHZpZXdTdGF0ZSk7CisgICAgbV9wYWdlLT5zZXRBY3Rpdml0eVN0YXRlKGFjdGl2aXR5U3RhdGUp
OwogICAgIGZvciAoYXV0byogcGx1Z2luVmlldyA6IG1fcGx1Z2luVmlld3MpCi0gICAgICAgIHBs
dWdpblZpZXctPnZpZXdTdGF0ZURpZENoYW5nZShjaGFuZ2VkKTsKKyAgICAgICAgcGx1Z2luVmll
dy0+YWN0aXZpdHlTdGF0ZURpZENoYW5nZShjaGFuZ2VkKTsKIAotICAgIG1fZHJhd2luZ0FyZWEt
PnZpZXdTdGF0ZURpZENoYW5nZShjaGFuZ2VkLCB3YW50c0RpZFVwZGF0ZVZpZXdTdGF0ZSwgY2Fs
bGJhY2tJRHMpOworICAgIG1fZHJhd2luZ0FyZWEtPmFjdGl2aXR5U3RhdGVEaWRDaGFuZ2UoY2hh
bmdlZCwgd2FudHNEaWRVcGRhdGVBY3Rpdml0eVN0YXRlLCBjYWxsYmFja0lEcyk7CiAKLSAgICBp
ZiAoY2hhbmdlZCAmIFZpZXdTdGF0ZTo6SXNJbldpbmRvdykKKyAgICBpZiAoY2hhbmdlZCAmIEFj
dGl2aXR5U3RhdGU6OklzSW5XaW5kb3cpCiAgICAgICAgIHVwZGF0ZUlzSW5XaW5kb3coKTsKIH0K
IApJbmRleDogU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCShy
ZXZpc2lvbiAyMDgxNzcpCisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2Vi
UGFnZS5oCSh3b3JraW5nIGNvcHkpCkBAIC02OCw3ICs2OCw3IEBACiAjaW5jbHVkZSA8V2ViQ29y
ZS9Vc2VyQ29udGVudFR5cGVzLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9Vc2VySW50ZXJmYWNlTGF5
b3V0RGlyZWN0aW9uLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9Vc2VyU2NyaXB0VHlwZXMuaD4KLSNp
bmNsdWRlIDxXZWJDb3JlL1ZpZXdTdGF0ZS5oPgorI2luY2x1ZGUgPFdlYkNvcmUvQWN0aXZpdHlT
dGF0ZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvVmlld3BvcnRDb25maWd1cmF0aW9uLmg+CiAjaW5j
bHVkZSA8V2ViQ29yZS9XZWJDb3JlS2V5Ym9hcmRVSU1vZGUuaD4KICNpbmNsdWRlIDxtZW1vcnk+
CkBAIC00MzYsOCArNDM2LDggQEAgcHVibGljOgogICAgIHZvaWQgYWRkUGx1Z2luVmlldyhQbHVn
aW5WaWV3Kik7CiAgICAgdm9pZCByZW1vdmVQbHVnaW5WaWV3KFBsdWdpblZpZXcqKTsKIAotICAg
IGJvb2wgaXNWaXNpYmxlKCkgY29uc3QgeyByZXR1cm4gbV92aWV3U3RhdGUgJiBXZWJDb3JlOjpW
aWV3U3RhdGU6OklzVmlzaWJsZTsgfQotICAgIGJvb2wgaXNWaXNpYmxlT3JPY2NsdWRlZCgpIGNv
bnN0IHsgcmV0dXJuIG1fdmlld1N0YXRlICYgV2ViQ29yZTo6Vmlld1N0YXRlOjpJc1Zpc2libGVP
ck9jY2x1ZGVkOyB9CisgICAgYm9vbCBpc1Zpc2libGUoKSBjb25zdCB7IHJldHVybiBtX2FjdGl2
aXR5U3RhdGUgJiBXZWJDb3JlOjpBY3Rpdml0eVN0YXRlOjpJc1Zpc2libGU7IH0KKyAgICBib29s
IGlzVmlzaWJsZU9yT2NjbHVkZWQoKSBjb25zdCB7IHJldHVybiBtX2FjdGl2aXR5U3RhdGUgJiBX
ZWJDb3JlOjpBY3Rpdml0eVN0YXRlOjpJc1Zpc2libGVPck9jY2x1ZGVkOyB9CiAKICAgICBMYXll
ckhvc3RpbmdNb2RlIGxheWVySG9zdGluZ01vZGUoKSBjb25zdCB7IHJldHVybiBtX2xheWVySG9z
dGluZ01vZGU7IH0KICAgICB2b2lkIHNldExheWVySG9zdGluZ01vZGUoTGF5ZXJIb3N0aW5nTW9k
ZSk7CkBAIC0xMDQxLDcgKzEwNDEsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgdHJ5UmVzdG9yZVNj
cm9sbFBvc2l0aW9uKCk7CiAgICAgdm9pZCBzZXRJbml0aWFsRm9jdXMoYm9vbCBmb3J3YXJkLCBi
b29sIGlzS2V5Ym9hcmRFdmVudFZhbGlkLCBjb25zdCBXZWJLZXlib2FyZEV2ZW50JiwgdWludDY0
X3QgY2FsbGJhY2tJRCk7CiAgICAgdm9pZCB1cGRhdGVJc0luV2luZG93KGJvb2wgaXNJbml0aWFs
U3RhdGUgPSBmYWxzZSk7Ci0gICAgdm9pZCBzZXRWaWV3U3RhdGUoV2ViQ29yZTo6Vmlld1N0YXRl
OjpGbGFncywgYm9vbCB3YW50c0RpZFVwZGF0ZVZpZXdTdGF0ZSwgY29uc3QgVmVjdG9yPHVpbnQ2
NF90PiYgY2FsbGJhY2tJRHMpOworICAgIHZvaWQgc2V0QWN0aXZpdHlTdGF0ZShXZWJDb3JlOjpB
Y3Rpdml0eVN0YXRlOjpGbGFncywgYm9vbCB3YW50c0RpZFVwZGF0ZUFjdGl2aXR5U3RhdGUsIGNv
bnN0IFZlY3Rvcjx1aW50NjRfdD4mIGNhbGxiYWNrSURzKTsKICAgICB2b2lkIHZhbGlkYXRlQ29t
bWFuZChjb25zdCBTdHJpbmcmLCB1aW50NjRfdCk7CiAgICAgdm9pZCBleGVjdXRlRWRpdENvbW1h
bmQoY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJik7CiAgICAgdm9pZCBzZXRFZGl0YWJsZShi
b29sKTsKQEAgLTE0ODUsNyArMTQ4NSw3IEBAIHByaXZhdGU6CiAKICAgICBib29sIG1fdXNlQXN5
bmNTY3JvbGxpbmc7CiAKLSAgICBXZWJDb3JlOjpWaWV3U3RhdGU6OkZsYWdzIG1fdmlld1N0YXRl
OworICAgIFdlYkNvcmU6OkFjdGl2aXR5U3RhdGU6OkZsYWdzIG1fYWN0aXZpdHlTdGF0ZTsKIAog
ICAgIFVzZXJBY3Rpdml0eSBtX3VzZXJBY3Rpdml0eTsKICAgICBXZWJDb3JlOjpIeXN0ZXJlc2lz
QWN0aXZpdHkgbV91c2VyQWN0aXZpdHlIeXN0ZXJlc2lzOwpJbmRleDogU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4KPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4JKHJldmlz
aW9uIDIwODE3NykKKysrIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdl
Lm1lc3NhZ2VzLmluCSh3b3JraW5nIGNvcHkpCkBAIC0yMiw3ICsyMiw3IEBACiAKIG1lc3NhZ2Vz
IC0+IFdlYlBhZ2UgTGVnYWN5UmVjZWl2ZXIgewogICAgIFNldEluaXRpYWxGb2N1cyhib29sIGZv
cndhcmQsIGJvb2wgaXNLZXlib2FyZEV2ZW50VmFsaWQsIFdlYktpdDo6V2ViS2V5Ym9hcmRFdmVu
dCBldmVudCwgdWludDY0X3QgY2FsbGJhY2tJRCkKLSAgICBTZXRWaWV3U3RhdGUodW5zaWduZWQg
dmlld1N0YXRlLCBib29sIHdhbnRzRGlkVXBkYXRlVmlld1N0YXRlLCBWZWN0b3I8dWludDY0X3Q+
IGNhbGxiYWNrSURzKQorICAgIFNldEFjdGl2aXR5U3RhdGUodW5zaWduZWQgYWN0aXZpdHlTdGF0
ZSwgYm9vbCB3YW50c0RpZFVwZGF0ZUFjdGl2aXR5U3RhdGUsIFZlY3Rvcjx1aW50NjRfdD4gY2Fs
bGJhY2tJRHMpCiAgICAgU2V0TGF5ZXJIb3N0aW5nTW9kZShlbnVtIFdlYktpdDo6TGF5ZXJIb3N0
aW5nTW9kZSBsYXllckhvc3RpbmdNb2RlKQogICAgIFNldFBhZ2VTdXBwcmVzc2VkKGJvb2wgcGFn
ZVN1cHByZXNzZWQpCiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9t
YWMvUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWEuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1JlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhLmgJ
KHJldmlzaW9uIDIwODE3NykKKysrIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9t
YWMvUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWEuaAkod29ya2luZyBjb3B5KQpAQCAtMTAyLDcg
KzEwMiw3IEBAIHByaXZhdGU6CiAKICAgICB2b2lkIG1haW5GcmFtZUNvbnRlbnRTaXplQ2hhbmdl
ZChjb25zdCBXZWJDb3JlOjpJbnRTaXplJikgb3ZlcnJpZGU7CiAKLSAgICB2b2lkIHZpZXdTdGF0
ZURpZENoYW5nZShXZWJDb3JlOjpWaWV3U3RhdGU6OkZsYWdzIGNoYW5nZWQsIGJvb2wgd2FudHNE
aWRVcGRhdGVWaWV3U3RhdGUsIGNvbnN0IFZlY3Rvcjx1aW50NjRfdD4mIGNhbGxiYWNrSURzKSBv
dmVycmlkZTsKKyAgICB2b2lkIGFjdGl2aXR5U3RhdGVEaWRDaGFuZ2UoV2ViQ29yZTo6QWN0aXZp
dHlTdGF0ZTo6RmxhZ3MgY2hhbmdlZCwgYm9vbCB3YW50c0RpZFVwZGF0ZUFjdGl2aXR5U3RhdGUs
IGNvbnN0IFZlY3Rvcjx1aW50NjRfdD4mIGNhbGxiYWNrSURzKSBvdmVycmlkZTsKIAogICAgIGJv
b2wgYWRqdXN0TGF5ZXJGbHVzaFRocm90dGxpbmcoV2ViQ29yZTo6TGF5ZXJGbHVzaFRocm90dGxl
U3RhdGU6OkZsYWdzKSBvdmVycmlkZTsKIApJbmRleDogU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9XZWJQYWdlL21hYy9SZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYS5tbQo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1JlbW90ZUxheWVyVHJlZURy
YXdpbmdBcmVhLm1tCShyZXZpc2lvbiAyMDgxNzcpCisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1dlYlBhZ2UvbWFjL1JlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhLm1tCSh3b3JraW5nIGNv
cHkpCkBAIC00OTcsMTEgKzQ5NywxMSBAQCB2b2lkIFJlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVh
OjpCYWNraW5nCiAgICAgbV9jb25uZWN0aW9uLT5zZW5kTWVzc2FnZShXVEZNb3ZlKG1fY29tbWl0
RW5jb2RlciksIHsgfSk7CiB9CiAKLXZvaWQgUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWE6OnZp
ZXdTdGF0ZURpZENoYW5nZShWaWV3U3RhdGU6OkZsYWdzLCBib29sIHdhbnRzRGlkVXBkYXRlVmll
d1N0YXRlLCBjb25zdCBWZWN0b3I8dWludDY0X3Q+JikKK3ZvaWQgUmVtb3RlTGF5ZXJUcmVlRHJh
d2luZ0FyZWE6OmFjdGl2aXR5U3RhdGVEaWRDaGFuZ2UoQWN0aXZpdHlTdGF0ZTo6RmxhZ3MsIGJv
b2wgd2FudHNEaWRVcGRhdGVBY3Rpdml0eVN0YXRlLCBjb25zdCBWZWN0b3I8dWludDY0X3Q+JikK
IHsKICAgICAvLyBGSVhNRTogU2hvdWxkIHdlIHN1c3BlbmQgcGFpbnRpbmcgd2hpbGUgbm90IHZp
c2libGUsIGxpa2UgVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWE/IFByb2JhYmx5LgogCi0g
ICAgaWYgKHdhbnRzRGlkVXBkYXRlVmlld1N0YXRlKQorICAgIGlmICh3YW50c0RpZFVwZGF0ZUFj
dGl2aXR5U3RhdGUpCiAgICAgICAgIHNjaGVkdWxlQ29tcG9zaXRpbmdMYXllckZsdXNoSW1tZWRp
YXRlbHkoKTsKIH0KIApJbmRleDogU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL21h
Yy9UaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYS5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0Fy
ZWEuaAkocmV2aXNpb24gMjA4MTc3KQorKysgU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQ
YWdlL21hYy9UaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYS5oCSh3b3JraW5nIGNvcHkpCkBA
IC04MSw4ICs4MSw4IEBAIHByaXZhdGU6CiAKICAgICBib29sIHNob3VsZFVzZVRpbGVkQmFja2lu
Z0ZvckZyYW1lVmlldyhjb25zdCBXZWJDb3JlOjpGcmFtZVZpZXcqKSBvdmVycmlkZTsKIAotICAg
IHZvaWQgdmlld1N0YXRlRGlkQ2hhbmdlKFdlYkNvcmU6OlZpZXdTdGF0ZTo6RmxhZ3MgY2hhbmdl
ZCwgYm9vbCB3YW50c0RpZFVwZGF0ZVZpZXdTdGF0ZSwgY29uc3QgVmVjdG9yPHVpbnQ2NF90PiYp
IG92ZXJyaWRlOwotICAgIHZvaWQgZGlkVXBkYXRlVmlld1N0YXRlVGltZXJGaXJlZCgpOworICAg
IHZvaWQgYWN0aXZpdHlTdGF0ZURpZENoYW5nZShXZWJDb3JlOjpBY3Rpdml0eVN0YXRlOjpGbGFn
cyBjaGFuZ2VkLCBib29sIHdhbnRzRGlkVXBkYXRlQWN0aXZpdHlTdGF0ZSwgY29uc3QgVmVjdG9y
PHVpbnQ2NF90PiYpIG92ZXJyaWRlOworICAgIHZvaWQgZGlkVXBkYXRlQWN0aXZpdHlTdGF0ZVRp
bWVyRmlyZWQoKTsKIAogICAgIHZvaWQgYXR0YWNoVmlld092ZXJsYXlHcmFwaGljc0xheWVyKFdl
YkNvcmU6OkZyYW1lKiwgV2ViQ29yZTo6R3JhcGhpY3NMYXllciopIG92ZXJyaWRlOwogCkBAIC0x
NDYsOSArMTQ2LDkgQEAgcHJpdmF0ZToKIAogICAgIFdlYkNvcmU6OlRyYW5zZm9ybWF0aW9uTWF0
cml4IG1fdHJhbnNmb3JtOwogCi0gICAgUnVuTG9vcDo6VGltZXI8VGlsZWRDb3JlQW5pbWF0aW9u
RHJhd2luZ0FyZWE+IG1fc2VuZERpZFVwZGF0ZVZpZXdTdGF0ZVRpbWVyOwotICAgIFZlY3Rvcjx1
aW50NjRfdD4gbV9uZXh0Vmlld1N0YXRlQ2hhbmdlQ2FsbGJhY2tJRHM7Ci0gICAgYm9vbCBtX3dh
bnRzRGlkVXBkYXRlVmlld1N0YXRlOworICAgIFJ1bkxvb3A6OlRpbWVyPFRpbGVkQ29yZUFuaW1h
dGlvbkRyYXdpbmdBcmVhPiBtX3NlbmREaWRVcGRhdGVBY3Rpdml0eVN0YXRlVGltZXI7CisgICAg
VmVjdG9yPHVpbnQ2NF90PiBtX25leHRBY3Rpdml0eVN0YXRlQ2hhbmdlQ2FsbGJhY2tJRHM7Cisg
ICAgYm9vbCBtX3dhbnRzRGlkVXBkYXRlQWN0aXZpdHlTdGF0ZTsKIAogICAgIFdlYkNvcmU6Okdy
YXBoaWNzTGF5ZXIqIG1fdmlld092ZXJsYXlSb290TGF5ZXI7CiAKSW5kZXg6IFNvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWEu
bW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9U
aWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYS5tbQkocmV2aXNpb24gMjA4MTc3KQorKysgU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9UaWxlZENvcmVBbmltYXRpb25EcmF3
aW5nQXJlYS5tbQkod29ya2luZyBjb3B5KQpAQCAtNzcsMTAgKzc3LDEwIEBAIFRpbGVkQ29yZUFu
aW1hdGlvbkRyYXdpbmdBcmVhOjpUaWxlZENvcmUKICAgICA6IERyYXdpbmdBcmVhKERyYXdpbmdB
cmVhVHlwZVRpbGVkQ29yZUFuaW1hdGlvbiwgd2ViUGFnZSkKICAgICAsIG1fbGF5ZXJUcmVlU3Rh
dGVJc0Zyb3plbihmYWxzZSkKICAgICAsIG1fbGF5ZXJGbHVzaFNjaGVkdWxlcih0aGlzKQotICAg
ICwgbV9pc1BhaW50aW5nU3VzcGVuZGVkKCEocGFyYW1ldGVycy52aWV3U3RhdGUgJiBWaWV3U3Rh
dGU6OklzVmlzaWJsZSkpCisgICAgLCBtX2lzUGFpbnRpbmdTdXNwZW5kZWQoIShwYXJhbWV0ZXJz
LmFjdGl2aXR5U3RhdGUgJiBBY3Rpdml0eVN0YXRlOjpJc1Zpc2libGUpKQogICAgICwgbV90cmFu
c2llbnRab29tU2NhbGUoMSkKLSAgICAsIG1fc2VuZERpZFVwZGF0ZVZpZXdTdGF0ZVRpbWVyKFJ1
bkxvb3A6Om1haW4oKSwgdGhpcywgJlRpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhOjpkaWRV
cGRhdGVWaWV3U3RhdGVUaW1lckZpcmVkKQotICAgICwgbV93YW50c0RpZFVwZGF0ZVZpZXdTdGF0
ZShmYWxzZSkKKyAgICAsIG1fc2VuZERpZFVwZGF0ZUFjdGl2aXR5U3RhdGVUaW1lcihSdW5Mb29w
OjptYWluKCksIHRoaXMsICZUaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYTo6ZGlkVXBkYXRl
QWN0aXZpdHlTdGF0ZVRpbWVyRmlyZWQpCisgICAgLCBtX3dhbnRzRGlkVXBkYXRlQWN0aXZpdHlT
dGF0ZShmYWxzZSkKICAgICAsIG1fdmlld092ZXJsYXlSb290TGF5ZXIobnVsbHB0cikKIHsKICAg
ICBtX3dlYlBhZ2UuY29yZVBhZ2UoKS0+c2V0dGluZ3MoKS5zZXRGb3JjZUNvbXBvc2l0aW5nTW9k
ZSh0cnVlKTsKQEAgLTQ0NywzNCArNDQ3LDM0IEBAIGJvb2wgVGlsZWRDb3JlQW5pbWF0aW9uRHJh
d2luZ0FyZWE6OmZsdXMKICAgICB9CiB9CiAKLXZvaWQgVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2lu
Z0FyZWE6OnZpZXdTdGF0ZURpZENoYW5nZShWaWV3U3RhdGU6OkZsYWdzIGNoYW5nZWQsIGJvb2wg
d2FudHNEaWRVcGRhdGVWaWV3U3RhdGUsIGNvbnN0IFZlY3Rvcjx1aW50NjRfdD4mIG5leHRWaWV3
U3RhdGVDaGFuZ2VDYWxsYmFja0lEcykKK3ZvaWQgVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0Fy
ZWE6OmFjdGl2aXR5U3RhdGVEaWRDaGFuZ2UoQWN0aXZpdHlTdGF0ZTo6RmxhZ3MgY2hhbmdlZCwg
Ym9vbCB3YW50c0RpZFVwZGF0ZUFjdGl2aXR5U3RhdGUsIGNvbnN0IFZlY3Rvcjx1aW50NjRfdD4m
IG5leHRBY3Rpdml0eVN0YXRlQ2hhbmdlQ2FsbGJhY2tJRHMpCiB7Ci0gICAgbV9uZXh0Vmlld1N0
YXRlQ2hhbmdlQ2FsbGJhY2tJRHMuYXBwZW5kVmVjdG9yKG5leHRWaWV3U3RhdGVDaGFuZ2VDYWxs
YmFja0lEcyk7Ci0gICAgbV93YW50c0RpZFVwZGF0ZVZpZXdTdGF0ZSB8PSB3YW50c0RpZFVwZGF0
ZVZpZXdTdGF0ZTsKKyAgICBtX25leHRBY3Rpdml0eVN0YXRlQ2hhbmdlQ2FsbGJhY2tJRHMuYXBw
ZW5kVmVjdG9yKG5leHRBY3Rpdml0eVN0YXRlQ2hhbmdlQ2FsbGJhY2tJRHMpOworICAgIG1fd2Fu
dHNEaWRVcGRhdGVBY3Rpdml0eVN0YXRlIHw9IHdhbnRzRGlkVXBkYXRlQWN0aXZpdHlTdGF0ZTsK
IAotICAgIGlmIChjaGFuZ2VkICYgVmlld1N0YXRlOjpJc1Zpc2libGUpIHsKKyAgICBpZiAoY2hh
bmdlZCAmIEFjdGl2aXR5U3RhdGU6OklzVmlzaWJsZSkgewogICAgICAgICBpZiAobV93ZWJQYWdl
LmlzVmlzaWJsZSgpKQogICAgICAgICAgICAgcmVzdW1lUGFpbnRpbmcoKTsKICAgICAgICAgZWxz
ZQogICAgICAgICAgICAgc3VzcGVuZFBhaW50aW5nKCk7CiAgICAgfQogCi0gICAgaWYgKG1fd2Fu
dHNEaWRVcGRhdGVWaWV3U3RhdGUgfHwgIW1fbmV4dFZpZXdTdGF0ZUNoYW5nZUNhbGxiYWNrSURz
LmlzRW1wdHkoKSkKLSAgICAgICAgbV9zZW5kRGlkVXBkYXRlVmlld1N0YXRlVGltZXIuc3RhcnRP
bmVTaG90KDApOworICAgIGlmIChtX3dhbnRzRGlkVXBkYXRlQWN0aXZpdHlTdGF0ZSB8fCAhbV9u
ZXh0QWN0aXZpdHlTdGF0ZUNoYW5nZUNhbGxiYWNrSURzLmlzRW1wdHkoKSkKKyAgICAgICAgbV9z
ZW5kRGlkVXBkYXRlQWN0aXZpdHlTdGF0ZVRpbWVyLnN0YXJ0T25lU2hvdCgwKTsKIH0KIAotdm9p
ZCBUaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYTo6ZGlkVXBkYXRlVmlld1N0YXRlVGltZXJG
aXJlZCgpCit2b2lkIFRpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhOjpkaWRVcGRhdGVBY3Rp
dml0eVN0YXRlVGltZXJGaXJlZCgpCiB7CiAgICAgW0NBVHJhbnNhY3Rpb24gZmx1c2hdOwogCi0g
ICAgaWYgKG1fd2FudHNEaWRVcGRhdGVWaWV3U3RhdGUpCi0gICAgICAgIG1fd2ViUGFnZS5zZW5k
KE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkRpZFVwZGF0ZVZpZXdTdGF0ZSgpKTsKKyAgICBpZiAo
bV93YW50c0RpZFVwZGF0ZUFjdGl2aXR5U3RhdGUpCisgICAgICAgIG1fd2ViUGFnZS5zZW5kKE1l
c3NhZ2VzOjpXZWJQYWdlUHJveHk6OkRpZFVwZGF0ZUFjdGl2aXR5U3RhdGUoKSk7CiAKLSAgICBm
b3IgKHVpbnQ2NF90IGNhbGxiYWNrSUQgOiBtX25leHRWaWV3U3RhdGVDaGFuZ2VDYWxsYmFja0lE
cykKKyAgICBmb3IgKHVpbnQ2NF90IGNhbGxiYWNrSUQgOiBtX25leHRBY3Rpdml0eVN0YXRlQ2hh
bmdlQ2FsbGJhY2tJRHMpCiAgICAgICAgIG1fd2ViUGFnZS5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdl
UHJveHk6OlZvaWRDYWxsYmFjayhjYWxsYmFja0lEKSk7CiAKLSAgICBtX25leHRWaWV3U3RhdGVD
aGFuZ2VDYWxsYmFja0lEcy5jbGVhcigpOwotICAgIG1fd2FudHNEaWRVcGRhdGVWaWV3U3RhdGUg
PSBmYWxzZTsKKyAgICBtX25leHRBY3Rpdml0eVN0YXRlQ2hhbmdlQ2FsbGJhY2tJRHMuY2xlYXIo
KTsKKyAgICBtX3dhbnRzRGlkVXBkYXRlQWN0aXZpdHlTdGF0ZSA9IGZhbHNlOwogfQogCiB2b2lk
IFRpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhOjpzdXNwZW5kUGFpbnRpbmcoKQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>293499</attachid>
            <date>2016-10-31 17:11:12 -0700</date>
            <delta_ts>2016-10-31 17:21:01 -0700</delta_ts>
            <desc>Fix</desc>
            <filename>164254.2.patch</filename>
            <type>text/plain</type>
            <size>117003</size>
            <attacher name="Gavin Barraclough">barraclough</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIwODE5NykKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDU1IEBACisyMDE2LTEwLTMxICBHYXZpbiBC
YXJyYWNsb3VnaCAgPGJhcnJhY2xvdWdoQGFwcGxlLmNvbT4KKworICAgICAgICBSZW5hbWUgVmll
d1N0YXRlIHRvIEFjdGl2aXR5U3RhdGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTE2NDI1NAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIFdlIHBsYW4gdG8gYWRkIGEgY291cGxlIG1vcmUgZmxhZ3MgdG8gVmll
d1N0YXRlIHRoYXQgYXJlbid0IGRpcmVjdGx5IHJlbGF0ZWQgdG8gdGhlIHZpZXcKKyAgICAgICAg
aXRzZWxmIC0gd2hldGhlciB0aGVyZSBpcyBhbiBvbmdvaW5nIHBhZ2UgbG9hZCwgYW5kIHdoZXRo
ZXIgd2hldGhlciB0aGVyZSBpcyBhdWRpbyBwbGF5YmFjay4KKyAgICAgICAgVGhpcyB3aWxsIGFs
bG93IHZpZXdTdGF0ZSAobm93IGFjdGl2aXR5U3RhdGUpIHRvIGZ1bGx5IGRyaXZlIHRocm90dGxp
bmcgZGVjaXNpb25zLgorCisgICAgICAgIFJlbmFtaW5nIHRoaXMgYml0ZmllbGQgYWNjb3JkaW5n
bHkuCisgICAgICAgICogTW9kdWxlcy9nZW9sb2NhdGlvbi9HZW9sb2NhdGlvbkNvbnRyb2xsZXIu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6R2VvbG9jYXRpb25Db250cm9sbGVyOjpHZW9sb2NhdGlv
bkNvbnRyb2xsZXIpOgorICAgICAgICAoV2ViQ29yZTo6R2VvbG9jYXRpb25Db250cm9sbGVyOjp+
R2VvbG9jYXRpb25Db250cm9sbGVyKToKKyAgICAgICAgKFdlYkNvcmU6Okdlb2xvY2F0aW9uQ29u
dHJvbGxlcjo6YWN0aXZpdHlTdGF0ZURpZENoYW5nZSk6CisgICAgICAgIChXZWJDb3JlOjpHZW9s
b2NhdGlvbkNvbnRyb2xsZXI6OnZpZXdTdGF0ZURpZENoYW5nZSk6IERlbGV0ZWQuCisgICAgICAg
ICogTW9kdWxlcy9nZW9sb2NhdGlvbi9HZW9sb2NhdGlvbkNvbnRyb2xsZXIuaDoKKyAgICAgICAg
KiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogcGFnZS9BY3Rp
dml0eVN0YXRlLmg6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvVmlld1N0YXRlLmgu
CisgICAgICAgICogcGFnZS9BY3Rpdml0eVN0YXRlQ2hhbmdlT2JzZXJ2ZXIuaDogQ29waWVkIGZy
b20gU291cmNlL1dlYkNvcmUvcGFnZS9WaWV3U3RhdGVDaGFuZ2VPYnNlcnZlci5oLgorICAgICAg
ICAoV2ViQ29yZTo6QWN0aXZpdHlTdGF0ZUNoYW5nZU9ic2VydmVyOjp+QWN0aXZpdHlTdGF0ZUNo
YW5nZU9ic2VydmVyKToKKyAgICAgICAgKFdlYkNvcmU6OlZpZXdTdGF0ZUNoYW5nZU9ic2VydmVy
Ojp+Vmlld1N0YXRlQ2hhbmdlT2JzZXJ2ZXIpOiBEZWxldGVkLgorICAgICAgICAqIHBhZ2UvRm9j
dXNDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZvY3VzQ29udHJvbGxlcjo6Rm9j
dXNDb250cm9sbGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkZvY3VzQ29udHJvbGxlcjo6c2V0Rm9j
dXNlZCk6CisgICAgICAgIChXZWJDb3JlOjpGb2N1c0NvbnRyb2xsZXI6OnNldEFjdGl2aXR5U3Rh
dGUpOgorICAgICAgICAoV2ViQ29yZTo6Rm9jdXNDb250cm9sbGVyOjpzZXRBY3RpdmUpOgorICAg
ICAgICAoV2ViQ29yZTo6Rm9jdXNDb250cm9sbGVyOjpzZXRWaWV3U3RhdGUpOiBEZWxldGVkLgor
ICAgICAgICAqIHBhZ2UvRm9jdXNDb250cm9sbGVyLmg6CisgICAgICAgIChXZWJDb3JlOjpGb2N1
c0NvbnRyb2xsZXI6OmlzQWN0aXZlKToKKyAgICAgICAgKFdlYkNvcmU6OkZvY3VzQ29udHJvbGxl
cjo6aXNGb2N1c2VkKToKKyAgICAgICAgKFdlYkNvcmU6OkZvY3VzQ29udHJvbGxlcjo6Y29udGVu
dElzVmlzaWJsZSk6CisgICAgICAgICogcGFnZS9QYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlBhZ2U6OlBhZ2UpOgorICAgICAgICAoV2ViQ29yZTo6UGFnZTo6c2V0SXNJbldpbmRvdyk6Cisg
ICAgICAgIChXZWJDb3JlOjpQYWdlOjphZGRBY3Rpdml0eVN0YXRlQ2hhbmdlT2JzZXJ2ZXIpOgor
ICAgICAgICAoV2ViQ29yZTo6UGFnZTo6cmVtb3ZlQWN0aXZpdHlTdGF0ZUNoYW5nZU9ic2VydmVy
KToKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2U6OnVwZGF0ZVRpbWVyVGhyb3R0bGluZ1N0YXRlKToK
KyAgICAgICAgKFdlYkNvcmU6OlBhZ2U6OnNldEFjdGl2aXR5U3RhdGUpOgorICAgICAgICAoV2Vi
Q29yZTo6UGFnZTo6aXNWaXNpYmxlQW5kQWN0aXZlKToKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2U6
OnNldElzVmlzaWJsZSk6CisgICAgICAgIChXZWJDb3JlOjpQYWdlOjphZGRWaWV3U3RhdGVDaGFu
Z2VPYnNlcnZlcik6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpQYWdlOjpyZW1vdmVWaWV3
U3RhdGVDaGFuZ2VPYnNlcnZlcik6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpQYWdlOjpz
ZXRWaWV3U3RhdGUpOiBEZWxldGVkLgorICAgICAgICAqIHBhZ2UvUGFnZS5oOgorICAgICAgICAo
V2ViQ29yZTo6UGFnZTo6aXNWaXNpYmxlKToKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2U6OmlzSW5X
aW5kb3cpOgorICAgICAgICAqIHBhZ2UvUGFnZVRocm90dGxlci5oOgorICAgICAgICAqIHBhZ2Uv
Vmlld1N0YXRlLmg6IFJlbW92ZWQuCisgICAgICAgICogcGFnZS9WaWV3U3RhdGVDaGFuZ2VPYnNl
cnZlci5oOiBSZW1vdmVkLgorCiAyMDE2LTEwLTMxICBOYW4gV2FuZyAgPG5fd2FuZ0BhcHBsZS5j
b20+CiAKICAgICAgICAgQVg6IGFyaWEtc29ydCBpcyBub3QgZXhwb3NlZCBvbiBpT1MKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvZ2VvbG9jYXRpb24vR2VvbG9jYXRpb25Db250cm9sbGVy
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2dlb2xvY2F0aW9uL0dl
b2xvY2F0aW9uQ29udHJvbGxlci5jcHAJKHJldmlzaW9uIDIwODE5NykKKysrIFNvdXJjZS9XZWJD
b3JlL01vZHVsZXMvZ2VvbG9jYXRpb24vR2VvbG9jYXRpb25Db250cm9sbGVyLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMzgsMTQgKzM4LDE0IEBAIEdlb2xvY2F0aW9uQ29udHJvbGxlcjo6R2VvbG9j
YXRpb25Db250cm8KICAgICA6IG1fcGFnZShwYWdlKQogICAgICwgbV9jbGllbnQoY2xpZW50KQog
ewotICAgIG1fcGFnZS5hZGRWaWV3U3RhdGVDaGFuZ2VPYnNlcnZlcigqdGhpcyk7CisgICAgbV9w
YWdlLmFkZEFjdGl2aXR5U3RhdGVDaGFuZ2VPYnNlcnZlcigqdGhpcyk7CiB9CiAKIEdlb2xvY2F0
aW9uQ29udHJvbGxlcjo6fkdlb2xvY2F0aW9uQ29udHJvbGxlcigpCiB7CiAgICAgQVNTRVJUKG1f
b2JzZXJ2ZXJzLmlzRW1wdHkoKSk7CiAKLSAgICAvLyBOT1RFOiBXZSBkb24ndCBoYXZlIHRvIHJl
bW92ZSBvdXJzZWx2ZXMgZnJvbSBwYWdlJ3MgVmlld1N0YXRlQ2hhbmdlT2JzZXJ2ZXIgc2V0LCBz
aW5jZQorICAgIC8vIE5PVEU6IFdlIGRvbid0IGhhdmUgdG8gcmVtb3ZlIG91cnNlbHZlcyBmcm9t
IHBhZ2UncyBBY3Rpdml0eVN0YXRlQ2hhbmdlT2JzZXJ2ZXIgc2V0LCBzaW5jZQogICAgIC8vIHdl
IGFyZSBzdXBwbGVtZW50IG9mIHRoZSBQYWdlLCBhbmQgb3VyIGRlc3RydWN0b3IgZ2V0dGluZyBj
YWxsZWQgbWVhbnMgdGhlIHBhZ2UgaXMgYmVpbmcKICAgICAvLyB0b3JuIGRvd24uCiAKQEAgLTEy
NCwxMiArMTI0LDEyIEBAIEdlb2xvY2F0aW9uUG9zaXRpb24qIEdlb2xvY2F0aW9uQ29udHJvbGwK
ICAgICByZXR1cm4gbV9jbGllbnQubGFzdFBvc2l0aW9uKCk7CiB9CiAKLXZvaWQgR2VvbG9jYXRp
b25Db250cm9sbGVyOjp2aWV3U3RhdGVEaWRDaGFuZ2UoVmlld1N0YXRlOjpGbGFncyBvbGRWaWV3
U3RhdGUsIFZpZXdTdGF0ZTo6RmxhZ3MgbmV3Vmlld1N0YXRlKQordm9pZCBHZW9sb2NhdGlvbkNv
bnRyb2xsZXI6OmFjdGl2aXR5U3RhdGVEaWRDaGFuZ2UoQWN0aXZpdHlTdGF0ZTo6RmxhZ3Mgb2xk
QWN0aXZpdHlTdGF0ZSwgQWN0aXZpdHlTdGF0ZTo6RmxhZ3MgbmV3QWN0aXZpdHlTdGF0ZSkKIHsK
ICAgICAvLyBUb2dnbGUgR1BTIGJhc2VkIG9uIHBhZ2UgdmlzaWJpbGl0eSB0byBzYXZlIGJhdHRl
cnkuCi0gICAgVmlld1N0YXRlOjpGbGFncyBjaGFuZ2VkID0gb2xkVmlld1N0YXRlIF4gbmV3Vmll
d1N0YXRlOwotICAgIGlmIChjaGFuZ2VkICYgVmlld1N0YXRlOjpJc1Zpc2libGUgJiYgIW1fb2Jz
ZXJ2ZXJzLmlzRW1wdHkoKSkgewotICAgICAgICBpZiAobmV3Vmlld1N0YXRlICYgVmlld1N0YXRl
OjpJc1Zpc2libGUpCisgICAgQWN0aXZpdHlTdGF0ZTo6RmxhZ3MgY2hhbmdlZCA9IG9sZEFjdGl2
aXR5U3RhdGUgXiBuZXdBY3Rpdml0eVN0YXRlOworICAgIGlmIChjaGFuZ2VkICYgQWN0aXZpdHlT
dGF0ZTo6SXNWaXNpYmxlICYmICFtX29ic2VydmVycy5pc0VtcHR5KCkpIHsKKyAgICAgICAgaWYg
KG5ld0FjdGl2aXR5U3RhdGUgJiBBY3Rpdml0eVN0YXRlOjpJc1Zpc2libGUpCiAgICAgICAgICAg
ICBtX2NsaWVudC5zdGFydFVwZGF0aW5nKCk7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIG1f
Y2xpZW50LnN0b3BVcGRhdGluZygpOwpJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy9nZW9s
b2NhdGlvbi9HZW9sb2NhdGlvbkNvbnRyb2xsZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2dlb2xvY2F0aW9uL0dlb2xvY2F0aW9uQ29udHJvbGxlci5oCShyZXZpc2lv
biAyMDgxOTcpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2dlb2xvY2F0aW9uL0dlb2xvY2F0
aW9uQ29udHJvbGxlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMCw3ICszMCw3IEBACiAKICNpbmNs
dWRlICJHZW9sb2NhdGlvbi5oIgogI2luY2x1ZGUgIlBhZ2UuaCIKLSNpbmNsdWRlICJWaWV3U3Rh
dGVDaGFuZ2VPYnNlcnZlci5oIgorI2luY2x1ZGUgIkFjdGl2aXR5U3RhdGVDaGFuZ2VPYnNlcnZl
ci5oIgogI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CiAjaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxl
Lmg+CiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgpAQCAtNDIsNyArNDIsNyBAQCBjbGFzcyBHZW9s
b2NhdGlvbkVycm9yOwogY2xhc3MgR2VvbG9jYXRpb25Qb3NpdGlvbjsKIGNsYXNzIFBhZ2U7CiAK
LWNsYXNzIEdlb2xvY2F0aW9uQ29udHJvbGxlciA6IHB1YmxpYyBTdXBwbGVtZW50PFBhZ2U+LCBw
cml2YXRlIFZpZXdTdGF0ZUNoYW5nZU9ic2VydmVyIHsKK2NsYXNzIEdlb2xvY2F0aW9uQ29udHJv
bGxlciA6IHB1YmxpYyBTdXBwbGVtZW50PFBhZ2U+LCBwcml2YXRlIEFjdGl2aXR5U3RhdGVDaGFu
Z2VPYnNlcnZlciB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiAgICAgV1RGX01BS0Vf
Tk9OQ09QWUFCTEUoR2VvbG9jYXRpb25Db250cm9sbGVyKTsKIHB1YmxpYzoKQEAgLTY5LDcgKzY5
LDcgQEAgcHJpdmF0ZToKICAgICBQYWdlJiBtX3BhZ2U7CiAgICAgR2VvbG9jYXRpb25DbGllbnQm
IG1fY2xpZW50OwogCi0gICAgdm9pZCB2aWV3U3RhdGVEaWRDaGFuZ2UoVmlld1N0YXRlOjpGbGFn
cyBvbGRWaWV3U3RhdGUsIFZpZXdTdGF0ZTo6RmxhZ3MgbmV3Vmlld1N0YXRlKSBvdmVycmlkZTsK
KyAgICB2b2lkIGFjdGl2aXR5U3RhdGVEaWRDaGFuZ2UoQWN0aXZpdHlTdGF0ZTo6RmxhZ3Mgb2xk
QWN0aXZpdHlTdGF0ZSwgQWN0aXZpdHlTdGF0ZTo6RmxhZ3MgbmV3QWN0aXZpdHlTdGF0ZSkgb3Zl
cnJpZGU7CiAKICAgICBSZWZQdHI8R2VvbG9jYXRpb25Qb3NpdGlvbj4gbV9sYXN0UG9zaXRpb247
CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
ago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2oJKHJldmlzaW9uIDIwODE5NykKKysrIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtMjY4Niw2ICsyNjg2LDgg
QEAKIAkJNzI0RUQzMkMxQTNBN0U1NDAwRjVGMTNDIC8qIEVYVEJsZW5kTWluTWF4LmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDcyNEVEMzI5MUEzQTdF
NTQwMEY1RjEzQyAvKiBFWFRCbGVuZE1pbk1heC5jcHAgKi87IH07CiAJCTcyNEVEMzMxMUEzQThC
MjMwMEY1RjEzQyAvKiBKU0VYVEJsZW5kTWluTWF4LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDcyNEVEMzJGMUEzQThCMjMwMEY1RjEzQyAvKiBKU0VY
VEJsZW5kTWluTWF4LmNwcCAqLzsgfTsKIAkJNzI0RUQzMzIxQTNBOEIyMzAwRjVGMTNDIC8qIEpT
RVhUQmxlbmRNaW5NYXguaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDcyNEVEMzMwMUEzQThCMjMwMEY1RjEzQyAvKiBKU0VYVEJsZW5kTWluTWF4LmggKi87
IH07CisJCTcyNEVFNTUwMURDODBEN0YwMEE5MUZGQiAvKiBBY3Rpdml0eVN0YXRlLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3MjRFRTU0RTFEQzdGMjVC
MDBBOTFGRkIgLyogQWN0aXZpdHlTdGF0ZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CisJCTcyNEVFNTUxMURDODBEODQwMEE5MUZGQiAvKiBBY3Rpdml0
eVN0YXRlQ2hhbmdlT2JzZXJ2ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDcyNEVFNTRGMURDN0YyNUIwMEE5MUZGQiAvKiBBY3Rpdml0eVN0YXRlQ2hh
bmdlT2JzZXJ2ZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OwogCQk3MjdBRkVENDFBMkVBNkFFMDAwNDQyRTggLyogRVhUc1JHQi5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3MjdBRkVEMTFBMkVBNkEwMDAw
NDQyRTggLyogRVhUc1JHQi5jcHAgKi87IH07CiAJCTcyRTQxNzYzMUEyRThEMkYwMDRDNTYyQSAv
KiBKU0VYVHNSR0IuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNzJFNDE3NjExQTJFOEQyRjAwNEM1NjJBIC8qIEpTRVhUc1JHQi5jcHAgKi87IH07CiAJ
CTcyRjFBREEyMUEzOTA0REMwMDAxNEUxOCAvKiBFWFRGcmFnRGVwdGguY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzJGMUFEOUYxQTM5MDRDMzAwMDE0
RTE4IC8qIEVYVEZyYWdEZXB0aC5jcHAgKi87IH07CkBAIC0yODUxLDcgKzI4NTMsNiBAQAogCQk3
Q0QwQkEwNTFCOEY3OUM5MDA1Q0VCQkUgLyogQWN0aXZlRE9NQ2FsbGJhY2tNaWNyb3Rhc2suaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdDRDBCQTAzMUI4
Rjc5QzkwMDVDRUJCRSAvKiBBY3RpdmVET01DYWxsYmFja01pY3JvdGFzay5oICovOyB9OwogCQk3
Q0Q0OTRDQzFBODZFQjFEMDAwQTg3RUMgLyogUmVuZGVyQXR0YWNobWVudC5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3Q0Q0OTRDQTFBODZFQjFEMDAw
QTg3RUMgLyogUmVuZGVyQXR0YWNobWVudC5jcHAgKi87IH07CiAJCTdDRDQ5NENEMUE4NkVCMUQw
MDBBODdFQyAvKiBSZW5kZXJBdHRhY2htZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA3Q0Q0OTRDQjFBODZFQjFEMDAwQTg3RUMgLyogUmVuZGVyQXR0
YWNobWVudC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
Ci0JCTdDREVFRTFFMTk3NjEwRDcwMEUzNTJDRCAvKiBWaWV3U3RhdGVDaGFuZ2VPYnNlcnZlci5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0NERUVFMUQx
OTc2MTBENzAwRTM1MkNEIC8qIFZpZXdTdGF0ZUNoYW5nZU9ic2VydmVyLmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJN0NFNjgzNDQxOTIxNDNBODAw
RjREOTI4IC8qIFVzZXJNZXNzYWdlSGFuZGxlckRlc2NyaXB0b3IuY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0NFNjgzNDIxOTIxNDNBODAwRjREOTI4
IC8qIFVzZXJNZXNzYWdlSGFuZGxlckRlc2NyaXB0b3IuY3BwICovOyB9OwogCQk3Q0U2ODM0NTE5
MjE0M0E4MDBGNEQ5MjggLyogVXNlck1lc3NhZ2VIYW5kbGVyRGVzY3JpcHRvci5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0NFNjgzNDMxOTIxNDNBODAw
RjREOTI4IC8qIFVzZXJNZXNzYWdlSGFuZGxlckRlc2NyaXB0b3IuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk3Q0U2ODM0NzE5MjE4MjE1MDBGNEQ5
MjggLyogVXNlck1lc3NhZ2VIYW5kbGVyRGVzY3JpcHRvclR5cGVzLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3Q0U2ODM0NjE5MjE4MjE1MDBGNEQ5Mjgg
LyogVXNlck1lc3NhZ2VIYW5kbGVyRGVzY3JpcHRvclR5cGVzLmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTMxMjUsNyArMzEyNiw2IEBACiAJCTg2
MkYxMkEwMThDMUREMDIwMDVDNTRBRiAvKiBIeXN0ZXJlc2lzQWN0aXZpdHkuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2MkYxMjlGMThDMURDRTQwMDVD
NTRBRiAvKiBIeXN0ZXJlc2lzQWN0aXZpdHkuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OwogCQk4NjUxMkVERTE1NEEyQUVGMDBBOTA0MjYgLyogUGVyZm9y
bWFuY2VSZXNvdXJjZVRpbWluZy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA4NjUxMkVEQjE1NEEyQUVFMDBBOTA0MjYgLyogUGVyZm9ybWFuY2VSZXNv
dXJjZVRpbWluZy5jcHAgKi87IH07CiAJCTg2NTEyRURGMTU0QTJBRUYwMEE5MDQyNiAvKiBQZXJm
b3JtYW5jZVJlc291cmNlVGltaW5nLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA4NjUxMkVEQzE1NEEyQUVGMDBBOTA0MjYgLyogUGVyZm9ybWFuY2VSZXNv
dXJjZVRpbWluZy5oICovOyB9OwotCQk4Njc4RDBCQjE4NzhFODkxMDAzQUJERTYgLyogVmlld1N0
YXRlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4Njc4
RDBCQTE4NzhFODEwMDAzQUJERTYgLyogVmlld1N0YXRlLmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJODY4MTYwRDQxODc2NkEwQTAwMjFFNzlEIC8q
IFVzZXJBY3Rpdml0eS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA4NjgxNjBEMTE4NzY2OUM0MDAyMUU3OUQgLyogVXNlckFjdGl2aXR5LmNwcCAqLzsg
fTsKIAkJODY4MTYwRDUxODc2NkEwRTAwMjFFNzlEIC8qIFVzZXJBY3Rpdml0eU1hYy5tbSBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2ODE2MEQzMTg3NjY5
RTcwMDIxRTc5RCAvKiBVc2VyQWN0aXZpdHlNYWMubW0gKi87IH07CiAJCTg2ODE2MEQ2MTg3NjZB
MTMwMDIxRTc5RCAvKiBVc2VyQWN0aXZpdHkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDg2ODE2MEQyMTg3NjY5QzQwMDIxRTc5RCAvKiBVc2VyQWN0aXZp
dHkuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAt
MTAwMTIsNiArMTAwMTIsOCBAQAogCQk3MjRFRDMyQjFBM0E3RTU0MDBGNUYxM0MgLyogRVhUQmxl
bmRNaW5NYXguaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IEVYVEJsZW5kTWluTWF4LmlkbDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzI0RUQzMkYxQTNBOEIyMzAwRjVGMTNDIC8q
IEpTRVhUQmxlbmRNaW5NYXguY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gSlNFWFRCbGVuZE1pbk1heC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTcy
NEVEMzMwMUEzQThCMjMwMEY1RjEzQyAvKiBKU0VYVEJsZW5kTWluTWF4LmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTRVhUQmxlbmRNaW5NYXguaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJNzI0RUU1NEUxREM3RjI1QjAwQTkxRkZCIC8qIEFjdGl2aXR5U3RhdGUu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQWN0aXZpdHlTdGF0ZS5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3MjRFRTU0RjFEQzdGMjVCMDBBOTFGRkIgLyogQWN0
aXZpdHlTdGF0ZUNoYW5nZU9ic2VydmVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IEFjdGl2aXR5U3RhdGVDaGFuZ2VPYnNlcnZlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk3MjdBRkVEMTFBMkVBNkEwMDAwNDQyRTggLyogRVhUc1JHQi5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBFWFRzUkdCLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJNzI3QUZFRDIxQTJFQTZBMDAwMDQ0MkU4IC8qIEVYVHNSR0IuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRVhUc1JHQi5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk3MjdBRkVEMzFBMkVBNkEwMDAwNDQyRTggLyogRVhUc1JHQi5pZGwgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSB0ZXh0OyBwYXRoID0gRVhUc1JHQi5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CkBAIC0xMDIwNiw3ICsxMDIwOCw2IEBACiAJCTdDRDBCQTAzMUI4Rjc5QzkwMDVDRUJCRSAv
KiBBY3RpdmVET01DYWxsYmFja01pY3JvdGFzay5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBBY3RpdmVET01DYWxsYmFja01pY3JvdGFzay5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk3Q0Q0OTRDQTFBODZFQjFEMDAwQTg3RUMgLyogUmVuZGVyQXR0YWNobWVudC5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSZW5kZXJBdHRhY2htZW50
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0NENDk0Q0IxQTg2RUIxRDAwMEE4
N0VDIC8qIFJlbmRlckF0dGFjaG1lbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gUmVuZGVyQXR0YWNobWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk3Q0RF
RUUxRDE5NzYxMEQ3MDBFMzUyQ0QgLyogVmlld1N0YXRlQ2hhbmdlT2JzZXJ2ZXIuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVmlld1N0YXRlQ2hhbmdlT2JzZXJ2ZXIuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0NFNjgzNDIxOTIxNDNBODAwRjREOTI4IC8qIFVz
ZXJNZXNzYWdlSGFuZGxlckRlc2NyaXB0b3IuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gVXNlck1lc3NhZ2VIYW5kbGVyRGVzY3JpcHRvci5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTdDRTY4MzQzMTkyMTQzQTgwMEY0RDkyOCAvKiBVc2VyTWVzc2Fn
ZUhhbmRsZXJEZXNjcmlwdG9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFVz
ZXJNZXNzYWdlSGFuZGxlckRlc2NyaXB0b3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJN0NFNjgzNDYxOTIxODIxNTAwRjREOTI4IC8qIFVzZXJNZXNzYWdlSGFuZGxlckRlc2NyaXB0
b3JUeXBlcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBVc2VyTWVzc2FnZUhh
bmRsZXJEZXNjcmlwdG9yVHlwZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTEw
NTM5LDcgKzEwNTQwLDYgQEAKIAkJODY1MTJFREIxNTRBMkFFRTAwQTkwNDI2IC8qIFBlcmZvcm1h
bmNlUmVzb3VyY2VUaW1pbmcuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gUGVyZm9ybWFuY2VSZXNvdXJjZVRpbWluZy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTg2NTEyRURDMTU0QTJBRUYwMEE5MDQyNiAvKiBQZXJmb3JtYW5jZVJlc291cmNlVGlt
aW5nLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFBlcmZvcm1hbmNlUmVzb3Vy
Y2VUaW1pbmcuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODY1MTJFREQxNTRBMkFF
RjAwQTkwNDI2IC8qIFBlcmZvcm1hbmNlUmVzb3VyY2VUaW1pbmcuaWRsICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4
dDsgcGF0aCA9IFBlcmZvcm1hbmNlUmVzb3VyY2VUaW1pbmcuaWRsOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwotCQk4Njc4RDBCQTE4NzhFODEwMDAzQUJERTYgLyogVmlld1N0YXRlLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IFZpZXdTdGF0ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4
NjgxNjBEMTE4NzY2OUM0MDAyMUU3OUQgLyogVXNlckFjdGl2aXR5LmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IFVzZXJBY3Rpdml0eS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTg2
ODE2MEQyMTg3NjY5QzQwMDIxRTc5RCAvKiBVc2VyQWN0aXZpdHkuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
VXNlckFjdGl2aXR5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTg2ODE2MEQzMTg3
NjY5RTcwMDIxRTc5RCAvKiBVc2VyQWN0aXZpdHlNYWMubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGgg
PSBVc2VyQWN0aXZpdHlNYWMubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xNzU5
Nyw2ICsxNzU5Nyw4IEBACiAJCQkJMThBNkNENkYwRDhGMjAyNTAwMURDM0NFIC8qIGlvcyAqLywK
IAkJCQk5M0MwOUE4MjBCMDY0RjA1MDA1QUJENEQgLyogbWFjICovLAogCQkJCTFBRjYyRUUxMTRE
QTIyQTcwMDQxNTU2QyAvKiBzY3JvbGxpbmcgKi8sCisJCQkJNzI0RUU1NEUxREM3RjI1QjAwQTkx
RkZCIC8qIEFjdGl2aXR5U3RhdGUuaCAqLywKKwkJCQk3MjRFRTU0RjFEQzdGMjVCMDBBOTFGRkIg
LyogQWN0aXZpdHlTdGF0ZUNoYW5nZU9ic2VydmVyLmggKi8sCiAJCQkJQkNGNDhDRTYxMzcwRDEx
NDAwNEU4N0Q2IC8qIEFkanVzdFZpZXdTaXplT3JOb3QuaCAqLywKIAkJCQlDRURBMTJENjE1MkNB
MUNCMDBEOUUwOEQgLyogQWx0ZXJuYXRpdmVUZXh0Q2xpZW50LmggKi8sCiAJCQkJNDU4MzBENEIx
Njc5QjRGODAwQUNGOEMzIC8qIEF1dG9zY3JvbGxDb250cm9sbGVyLmNwcCAqLywKQEAgLTE3Nzk2
LDggKzE3Nzk4LDYgQEAKIAkJCQlGNTEzQTNFOTE1RkY0ODQxMDAxNTI2REIgLyogVmFsaWRhdGlv
bk1lc3NhZ2VDbGllbnQuaCAqLywKIAkJCQkyNkY5QTgzNjE4QTA0NkFDMDBBRUI4OEEgLyogVmll
d3BvcnRDb25maWd1cmF0aW9uLmNwcCAqLywKIAkJCQkyNkY5QTgzNzE4QTA0NkFDMDBBRUI4OEEg
LyogVmlld3BvcnRDb25maWd1cmF0aW9uLmggKi8sCi0JCQkJODY3OEQwQkExODc4RTgxMDAwM0FC
REU2IC8qIFZpZXdTdGF0ZS5oICovLAotCQkJCTdDREVFRTFEMTk3NjEwRDcwMEUzNTJDRCAvKiBW
aWV3U3RhdGVDaGFuZ2VPYnNlcnZlci5oICovLAogCQkJCTFBRjRDRUVCMThCQzNDMUIwMEJDMkQz
NCAvKiBWaXNpdGVkTGlua1N0b3JlLmNwcCAqLywKIAkJCQkxQUJBN0ZGRjE4OTczNDEyMDBEQ0U5
RDYgLyogVmlzaXRlZExpbmtTdG9yZS5oICovLAogCQkJCUJFOTgzRDk1MDUyQTJFMEEwMDg5MkQ4
NSAvKiBXZWJDb3JlS2V5Ym9hcmRVSU1vZGUuaCAqLywKQEAgLTI2NDA1LDYgKzI2NDA1LDcgQEAK
IAkJCQlDOTA4NDNEMDFCMThFNDdEMDBCNjg1NjQgLyogTWVkaWFSZW1vdGVDb250cm9scy5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJQ0Q4QUNBOEYxRDIzOTcxOTAwRUNDNTlFIC8qIE1lZGlhUmVtb3Rl
U29mdExpbmsuaCBpbiBIZWFkZXJzICovLAogCQkJCUNEOEFDQThCMUQyMzk0NjQwMEVDQzU5RSAv
KiBNZWRpYVJlbW90ZVNQSS5oIGluIEhlYWRlcnMgKi8sCisJCQkJNzI0RUU1NTExREM4MEQ4NDAw
QTkxRkZCIC8qIEFjdGl2aXR5U3RhdGVDaGFuZ2VPYnNlcnZlci5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJQ0VFRkNEN0ExOURCMzFGNzAwMzg3NkQ3IC8qIE1lZGlhUmVzb3VyY2VMb2FkZXIuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTFCRjlEQjNDMUQzOTczQUQwMDI2QUVCNyAvKiBNZWRpYVNhbXBsZS5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJMUIxMjREOEQxRDM4MEI3MDAwRUNERkIwIC8qIE1lZGlhU2Ft
cGxlQVZGT2JqQy5oIGluIEhlYWRlcnMgKi8sCkBAIC0yNzcxMiw4ICsyNzcxMyw2IEBACiAJCQkJ
Q0VGNDE4Q0YxMTc5Njc4QzAwOUQxMTJDIC8qIFZpZXdwb3J0QXJndW1lbnRzLmggaW4gSGVhZGVy
cyAqLywKIAkJCQkyNkY5QTgzOTE4QTA0NkFDMDBBRUI4OEEgLyogVmlld3BvcnRDb25maWd1cmF0
aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQkzRkZGRjlBRTE1OUQ5QjA2MDAyMEJCRDUgLyogVmll
d3BvcnRTdHlsZVJlc29sdmVyLmggaW4gSGVhZGVycyAqLywKLQkJCQk4Njc4RDBCQjE4NzhFODkx
MDAzQUJERTYgLyogVmlld1N0YXRlLmggaW4gSGVhZGVycyAqLywKLQkJCQk3Q0RFRUUxRTE5NzYx
MEQ3MDBFMzUyQ0QgLyogVmlld1N0YXRlQ2hhbmdlT2JzZXJ2ZXIuaCBpbiBIZWFkZXJzICovLAog
CQkJCTkzMzA5RTIwMDk5RTY0OTIwMDU2RTU4MSAvKiBWaXNpYmxlUG9zaXRpb24uaCBpbiBIZWFk
ZXJzICovLAogCQkJCUE4ODNERjI4MEYzRDA0NUQwMEYxOUJGNiAvKiBWaXNpYmxlU2VsZWN0aW9u
LmggaW4gSGVhZGVycyAqLywKIAkJCQk5MzMwOUUxRTA5OUU2NDkyMDA1NkU1ODEgLyogVmlzaWJs
ZVVuaXRzLmggaW4gSGVhZGVycyAqLywKQEAgLTI3ODc1LDYgKzI3ODc0LDcgQEAKIAkJCQlCMTBC
Njk4MDE0MEMxNzQwMDBCQzFDMjYgLyogV2ViVlRUVG9rZW4uaCBpbiBIZWFkZXJzICovLAogCQkJ
CUIxMEI2OTgyMTQwQzE3NDAwMEJDMUMyNiAvKiBXZWJWVFRUb2tlbml6ZXIuaCBpbiBIZWFkZXJz
ICovLAogCQkJCUNEODIwMzEwMTM5NUFDRTcwMEY5NTZDNiAvKiBXZWJXaW5kb3dBbmltYXRpb24u
aCBpbiBIZWFkZXJzICovLAorCQkJCTcyNEVFNTUwMURDODBEN0YwMEE5MUZGQiAvKiBBY3Rpdml0
eVN0YXRlLmggaW4gSGVhZGVycyAqLywKIAkJCQlGNTVCM0RFMDEyNTFGMTJEMDAzRUYyNjkgLyog
V2Vla0lucHV0VHlwZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODUwMzFCNTEwQTQ0RUZDNzAwRjk5
MkUwIC8qIFdoZWVsRXZlbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTJFQkJDM0Q4MUI2NTk4ODMw
MEY1MjUzRCAvKiBXaGVlbEV2ZW50RGVsdGFGaWx0ZXIuaCBpbiBIZWFkZXJzICovLApJbmRleDog
U291cmNlL1dlYkNvcmUvcGFnZS9BY3Rpdml0eVN0YXRlLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvcGFnZS9BY3Rpdml0eVN0YXRlLmgJKHJldmlzaW9uIDIwODE5NykJKGZyb20gU291
cmNlL1dlYkNvcmUvcGFnZS9WaWV3U3RhdGUuaDoyMDgxOTcpCisrKyBTb3VyY2UvV2ViQ29yZS9w
YWdlL0FjdGl2aXR5U3RhdGUuaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDQ2IEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5E
IElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworI3ByYWdtYSBvbmNlCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworc3RydWN0IFZp
ZXdTdGF0ZSB7CisgICAgZW51bSB7CisgICAgICAgIFdpbmRvd0lzQWN0aXZlID0gMSA8PCAwLAor
ICAgICAgICBJc0ZvY3VzZWQgPSAxIDw8IDEsCisgICAgICAgIElzVmlzaWJsZSA9IDEgPDwgMiwK
KyAgICAgICAgSXNWaXNpYmxlT3JPY2NsdWRlZCA9IDEgPDwgMywKKyAgICAgICAgSXNJbldpbmRv
dyA9IDEgPDwgNCwKKyAgICAgICAgSXNWaXN1YWxseUlkbGUgPSAxIDw8IDUsCisgICAgfTsKKwor
ICAgIHR5cGVkZWYgdW5zaWduZWQgRmxhZ3M7CisKKyAgICBzdGF0aWMgY29uc3QgRmxhZ3MgTm9G
bGFncyA9IDA7CisgICAgc3RhdGljIGNvbnN0IEZsYWdzIEFsbEZsYWdzID0gV2luZG93SXNBY3Rp
dmUgfCBJc0ZvY3VzZWQgfCBJc1Zpc2libGUgfCBJc1Zpc2libGVPck9jY2x1ZGVkIHwgSXNJbldp
bmRvdyB8IElzVmlzdWFsbHlJZGxlOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRl
eDogU291cmNlL1dlYkNvcmUvcGFnZS9BY3Rpdml0eVN0YXRlLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvcGFnZS9BY3Rpdml0eVN0YXRlLmgJKHJldmlzaW9uIDIwODE5NykKKysrIFNv
dXJjZS9XZWJDb3JlL3BhZ2UvQWN0aXZpdHlTdGF0ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNyw3
ICsyNyw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotc3RydWN0IFZpZXdTdGF0ZSB7Citz
dHJ1Y3QgQWN0aXZpdHlTdGF0ZSB7CiAgICAgZW51bSB7CiAgICAgICAgIFdpbmRvd0lzQWN0aXZl
ID0gMSA8PCAwLAogICAgICAgICBJc0ZvY3VzZWQgPSAxIDw8IDEsCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9wYWdlL0FjdGl2aXR5U3RhdGVDaGFuZ2VPYnNlcnZlci5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3BhZ2UvQWN0aXZpdHlTdGF0ZUNoYW5nZU9ic2VydmVyLmgJKHJldmlzaW9u
IDIwODE5NykJKGZyb20gU291cmNlL1dlYkNvcmUvcGFnZS9WaWV3U3RhdGVDaGFuZ2VPYnNlcnZl
ci5oOjIwODE5NykKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvQWN0aXZpdHlTdGF0ZUNoYW5nZU9i
c2VydmVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw0MSBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJ
QlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElU
UyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNw
cmFnbWEgb25jZQorCisjaW5jbHVkZSAiVmlld1N0YXRlLmgiCisKK25hbWVzcGFjZSBXZWJDb3Jl
IHsKKworY2xhc3MgVmlld1N0YXRlQ2hhbmdlT2JzZXJ2ZXIgeworcHVibGljOgorICAgIHZpcnR1
YWwgflZpZXdTdGF0ZUNoYW5nZU9ic2VydmVyKCkKKyAgICB7CisgICAgfQorICAgIAorICAgIHZp
cnR1YWwgdm9pZCB2aWV3U3RhdGVEaWRDaGFuZ2UoVmlld1N0YXRlOjpGbGFncyBvbGRWaWV3U3Rh
dGUsIFZpZXdTdGF0ZTo6RmxhZ3MgbmV3Vmlld1N0YXRlKSA9IDA7Cit9OworCit9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL0FjdGl2aXR5U3RhdGVDaGFu
Z2VPYnNlcnZlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvQWN0aXZpdHlT
dGF0ZUNoYW5nZU9ic2VydmVyLmgJKHJldmlzaW9uIDIwODE5NykKKysrIFNvdXJjZS9XZWJDb3Jl
L3BhZ2UvQWN0aXZpdHlTdGF0ZUNoYW5nZU9ic2VydmVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTI1
LDE3ICsyNSwxNyBAQAogCiAjcHJhZ21hIG9uY2UKIAotI2luY2x1ZGUgIlZpZXdTdGF0ZS5oIgor
I2luY2x1ZGUgIkFjdGl2aXR5U3RhdGUuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFz
cyBWaWV3U3RhdGVDaGFuZ2VPYnNlcnZlciB7CitjbGFzcyBBY3Rpdml0eVN0YXRlQ2hhbmdlT2Jz
ZXJ2ZXIgewogcHVibGljOgotICAgIHZpcnR1YWwgflZpZXdTdGF0ZUNoYW5nZU9ic2VydmVyKCkK
KyAgICB2aXJ0dWFsIH5BY3Rpdml0eVN0YXRlQ2hhbmdlT2JzZXJ2ZXIoKQogICAgIHsKICAgICB9
CiAgICAgCi0gICAgdmlydHVhbCB2b2lkIHZpZXdTdGF0ZURpZENoYW5nZShWaWV3U3RhdGU6OkZs
YWdzIG9sZFZpZXdTdGF0ZSwgVmlld1N0YXRlOjpGbGFncyBuZXdWaWV3U3RhdGUpID0gMDsKKyAg
ICB2aXJ0dWFsIHZvaWQgYWN0aXZpdHlTdGF0ZURpZENoYW5nZShBY3Rpdml0eVN0YXRlOjpGbGFn
cyBvbGRBY3Rpdml0eVN0YXRlLCBBY3Rpdml0eVN0YXRlOjpGbGFncyBuZXdBY3Rpdml0eVN0YXRl
KSA9IDA7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9wYWdlL0ZvY3VzQ29udHJvbGxlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
cGFnZS9Gb2N1c0NvbnRyb2xsZXIuY3BwCShyZXZpc2lvbiAyMDgxOTcpCisrKyBTb3VyY2UvV2Vi
Q29yZS9wYWdlL0ZvY3VzQ29udHJvbGxlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMxMywxMCAr
MzEzLDEwIEBAIHN0YXRpYyBpbmxpbmUgaW50IHNoYWRvd0FkanVzdGVkVGFiSW5kZXgKICAgICBy
ZXR1cm4gZWxlbWVudC50YWJJbmRleCgpOwogfQogCi1Gb2N1c0NvbnRyb2xsZXI6OkZvY3VzQ29u
dHJvbGxlcihQYWdlJiBwYWdlLCBWaWV3U3RhdGU6OkZsYWdzIHZpZXdTdGF0ZSkKK0ZvY3VzQ29u
dHJvbGxlcjo6Rm9jdXNDb250cm9sbGVyKFBhZ2UmIHBhZ2UsIEFjdGl2aXR5U3RhdGU6OkZsYWdz
IGFjdGl2aXR5U3RhdGUpCiAgICAgOiBtX3BhZ2UocGFnZSkKICAgICAsIG1faXNDaGFuZ2luZ0Zv
Y3VzZWRGcmFtZShmYWxzZSkKLSAgICAsIG1fdmlld1N0YXRlKHZpZXdTdGF0ZSkKKyAgICAsIG1f
YWN0aXZpdHlTdGF0ZShhY3Rpdml0eVN0YXRlKQogICAgICwgbV9mb2N1c1JlcGFpbnRUaW1lcigq
dGhpcywgJkZvY3VzQ29udHJvbGxlcjo6Zm9jdXNSZXBhaW50VGltZXJGaXJlZCkKIHsKIH0KQEAg
LTM1OSw3ICszNTksNyBAQCBGcmFtZSYgRm9jdXNDb250cm9sbGVyOjpmb2N1c2VkT3JNYWluRnJh
CiAKIHZvaWQgRm9jdXNDb250cm9sbGVyOjpzZXRGb2N1c2VkKGJvb2wgZm9jdXNlZCkKIHsKLSAg
ICBtX3BhZ2Uuc2V0Vmlld1N0YXRlKGZvY3VzZWQgPyBtX3ZpZXdTdGF0ZSB8IFZpZXdTdGF0ZTo6
SXNGb2N1c2VkIDogbV92aWV3U3RhdGUgJiB+Vmlld1N0YXRlOjpJc0ZvY3VzZWQpOworICAgIG1f
cGFnZS5zZXRBY3Rpdml0eVN0YXRlKGZvY3VzZWQgPyBtX2FjdGl2aXR5U3RhdGUgfCBBY3Rpdml0
eVN0YXRlOjpJc0ZvY3VzZWQgOiBtX2FjdGl2aXR5U3RhdGUgJiB+QWN0aXZpdHlTdGF0ZTo6SXNG
b2N1c2VkKTsKIH0KIAogdm9pZCBGb2N1c0NvbnRyb2xsZXI6OnNldEZvY3VzZWRJbnRlcm5hbChi
b29sIGZvY3VzZWQpCkBAIC04MjUsMjMgKzgyNSwyMyBAQCBib29sIEZvY3VzQ29udHJvbGxlcjo6
c2V0Rm9jdXNlZEVsZW1lbnQoCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLXZvaWQgRm9jdXNDb250
cm9sbGVyOjpzZXRWaWV3U3RhdGUoVmlld1N0YXRlOjpGbGFncyB2aWV3U3RhdGUpCit2b2lkIEZv
Y3VzQ29udHJvbGxlcjo6c2V0QWN0aXZpdHlTdGF0ZShBY3Rpdml0eVN0YXRlOjpGbGFncyBhY3Rp
dml0eVN0YXRlKQogewotICAgIFZpZXdTdGF0ZTo6RmxhZ3MgY2hhbmdlZCA9IG1fdmlld1N0YXRl
IF4gdmlld1N0YXRlOwotICAgIG1fdmlld1N0YXRlID0gdmlld1N0YXRlOworICAgIEFjdGl2aXR5
U3RhdGU6OkZsYWdzIGNoYW5nZWQgPSBtX2FjdGl2aXR5U3RhdGUgXiBhY3Rpdml0eVN0YXRlOwor
ICAgIG1fYWN0aXZpdHlTdGF0ZSA9IGFjdGl2aXR5U3RhdGU7CiAKLSAgICBpZiAoY2hhbmdlZCAm
IFZpZXdTdGF0ZTo6SXNGb2N1c2VkKQotICAgICAgICBzZXRGb2N1c2VkSW50ZXJuYWwodmlld1N0
YXRlICYgVmlld1N0YXRlOjpJc0ZvY3VzZWQpOwotICAgIGlmIChjaGFuZ2VkICYgVmlld1N0YXRl
OjpXaW5kb3dJc0FjdGl2ZSkgewotICAgICAgICBzZXRBY3RpdmVJbnRlcm5hbCh2aWV3U3RhdGUg
JiBWaWV3U3RhdGU6OldpbmRvd0lzQWN0aXZlKTsKLSAgICAgICAgaWYgKGNoYW5nZWQgJiBWaWV3
U3RhdGU6OklzVmlzaWJsZSkKLSAgICAgICAgICAgIHNldElzVmlzaWJsZUFuZEFjdGl2ZUludGVy
bmFsKHZpZXdTdGF0ZSAmIFZpZXdTdGF0ZTo6V2luZG93SXNBY3RpdmUpOworICAgIGlmIChjaGFu
Z2VkICYgQWN0aXZpdHlTdGF0ZTo6SXNGb2N1c2VkKQorICAgICAgICBzZXRGb2N1c2VkSW50ZXJu
YWwoYWN0aXZpdHlTdGF0ZSAmIEFjdGl2aXR5U3RhdGU6OklzRm9jdXNlZCk7CisgICAgaWYgKGNo
YW5nZWQgJiBBY3Rpdml0eVN0YXRlOjpXaW5kb3dJc0FjdGl2ZSkgeworICAgICAgICBzZXRBY3Rp
dmVJbnRlcm5hbChhY3Rpdml0eVN0YXRlICYgQWN0aXZpdHlTdGF0ZTo6V2luZG93SXNBY3RpdmUp
OworICAgICAgICBpZiAoY2hhbmdlZCAmIEFjdGl2aXR5U3RhdGU6OklzVmlzaWJsZSkKKyAgICAg
ICAgICAgIHNldElzVmlzaWJsZUFuZEFjdGl2ZUludGVybmFsKGFjdGl2aXR5U3RhdGUgJiBBY3Rp
dml0eVN0YXRlOjpXaW5kb3dJc0FjdGl2ZSk7CiAgICAgfQogfQogCiB2b2lkIEZvY3VzQ29udHJv
bGxlcjo6c2V0QWN0aXZlKGJvb2wgYWN0aXZlKQogewotICAgIG1fcGFnZS5zZXRWaWV3U3RhdGUo
YWN0aXZlID8gbV92aWV3U3RhdGUgfCBWaWV3U3RhdGU6OldpbmRvd0lzQWN0aXZlIDogbV92aWV3
U3RhdGUgJiB+Vmlld1N0YXRlOjpXaW5kb3dJc0FjdGl2ZSk7CisgICAgbV9wYWdlLnNldEFjdGl2
aXR5U3RhdGUoYWN0aXZlID8gbV9hY3Rpdml0eVN0YXRlIHwgQWN0aXZpdHlTdGF0ZTo6V2luZG93
SXNBY3RpdmUgOiBtX2FjdGl2aXR5U3RhdGUgJiB+QWN0aXZpdHlTdGF0ZTo6V2luZG93SXNBY3Rp
dmUpOwogfQogCiB2b2lkIEZvY3VzQ29udHJvbGxlcjo6c2V0QWN0aXZlSW50ZXJuYWwoYm9vbCBh
Y3RpdmUpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL0ZvY3VzQ29udHJvbGxlci5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvRm9jdXNDb250cm9sbGVyLmgJKHJldmlzaW9u
IDIwODE5NykKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvRm9jdXNDb250cm9sbGVyLmgJKHdvcmtp
bmcgY29weSkKQEAgLTI4LDcgKzI4LDcgQEAKICNpbmNsdWRlICJGb2N1c0RpcmVjdGlvbi5oIgog
I2luY2x1ZGUgIkxheW91dFJlY3QuaCIKICNpbmNsdWRlICJUaW1lci5oIgotI2luY2x1ZGUgIlZp
ZXdTdGF0ZS5oIgorI2luY2x1ZGUgIkFjdGl2aXR5U3RhdGUuaCIKICNpbmNsdWRlIDx3dGYvRm9y
d2FyZC5oPgogI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgogI2luY2x1ZGUgPHd0Zi9SZWZQ
dHIuaD4KQEAgLTUxLDcgKzUxLDcgQEAgY2xhc3MgVHJlZVNjb3BlOwogY2xhc3MgRm9jdXNDb250
cm9sbGVyIHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShGb2N1c0NvbnRyb2xsZXIpOyBXVEZf
TUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKLSAgICBleHBsaWNpdCBGb2N1c0NvbnRyb2xs
ZXIoUGFnZSYsIFZpZXdTdGF0ZTo6RmxhZ3MpOworICAgIGV4cGxpY2l0IEZvY3VzQ29udHJvbGxl
cihQYWdlJiwgQWN0aXZpdHlTdGF0ZTo6RmxhZ3MpOwogCiAgICAgV0VCQ09SRV9FWFBPUlQgdm9p
ZCBzZXRGb2N1c2VkRnJhbWUoUGFzc1JlZlB0cjxGcmFtZT4pOwogICAgIEZyYW1lKiBmb2N1c2Vk
RnJhbWUoKSBjb25zdCB7IHJldHVybiBtX2ZvY3VzZWRGcmFtZS5nZXQoKTsgfQpAQCAtNjIsMTUg
KzYyLDE1IEBAIHB1YmxpYzoKIAogICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgc2V0Rm9jdXNlZEVs
ZW1lbnQoRWxlbWVudCosIFBhc3NSZWZQdHI8RnJhbWU+LCBGb2N1c0RpcmVjdGlvbiA9IEZvY3Vz
RGlyZWN0aW9uTm9uZSk7CiAKLSAgICB2b2lkIHNldFZpZXdTdGF0ZShWaWV3U3RhdGU6OkZsYWdz
KTsKKyAgICB2b2lkIHNldEFjdGl2aXR5U3RhdGUoQWN0aXZpdHlTdGF0ZTo6RmxhZ3MpOwogCiAg
ICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRBY3RpdmUoYm9vbCk7Ci0gICAgYm9vbCBpc0FjdGl2
ZSgpIGNvbnN0IHsgcmV0dXJuIG1fdmlld1N0YXRlICYgVmlld1N0YXRlOjpXaW5kb3dJc0FjdGl2
ZTsgfQorICAgIGJvb2wgaXNBY3RpdmUoKSBjb25zdCB7IHJldHVybiBtX2FjdGl2aXR5U3RhdGUg
JiBBY3Rpdml0eVN0YXRlOjpXaW5kb3dJc0FjdGl2ZTsgfQogCiAgICAgV0VCQ09SRV9FWFBPUlQg
dm9pZCBzZXRGb2N1c2VkKGJvb2wpOwotICAgIGJvb2wgaXNGb2N1c2VkKCkgY29uc3QgeyByZXR1
cm4gbV92aWV3U3RhdGUgJiBWaWV3U3RhdGU6OklzRm9jdXNlZDsgfQorICAgIGJvb2wgaXNGb2N1
c2VkKCkgY29uc3QgeyByZXR1cm4gbV9hY3Rpdml0eVN0YXRlICYgQWN0aXZpdHlTdGF0ZTo6SXNG
b2N1c2VkOyB9CiAKLSAgICBib29sIGNvbnRlbnRJc1Zpc2libGUoKSBjb25zdCB7IHJldHVybiBt
X3ZpZXdTdGF0ZSAmIFZpZXdTdGF0ZTo6SXNWaXNpYmxlOyB9CisgICAgYm9vbCBjb250ZW50SXNW
aXNpYmxlKCkgY29uc3QgeyByZXR1cm4gbV9hY3Rpdml0eVN0YXRlICYgQWN0aXZpdHlTdGF0ZTo6
SXNWaXNpYmxlOyB9CiAKICAgICAvLyBUaGVzZSBtZXRob2RzIGFyZSB1c2VkIGluIFdlYkNvcmUv
YmluZGluZ3Mvb2JqYy9ET00ubW0uCiAgICAgV0VCQ09SRV9FWFBPUlQgRWxlbWVudCogbmV4dEZv
Y3VzYWJsZUVsZW1lbnQoTm9kZSYpOwpAQCAtMTE5LDcgKzExOSw3IEBAIHByaXZhdGU6CiAgICAg
UGFnZSYgbV9wYWdlOwogICAgIFJlZlB0cjxGcmFtZT4gbV9mb2N1c2VkRnJhbWU7CiAgICAgYm9v
bCBtX2lzQ2hhbmdpbmdGb2N1c2VkRnJhbWU7Ci0gICAgVmlld1N0YXRlOjpGbGFncyBtX3ZpZXdT
dGF0ZTsKKyAgICBBY3Rpdml0eVN0YXRlOjpGbGFncyBtX2FjdGl2aXR5U3RhdGU7CiAKICAgICBU
aW1lciBtX2ZvY3VzUmVwYWludFRpbWVyOwogICAgIGRvdWJsZSBtX2ZvY3VzU2V0VGltZTsKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvcGFnZS9QYWdlLmNwcAkocmV2aXNpb24gMjA4MTk3KQorKysgU291cmNlL1dlYkNvcmUv
cGFnZS9QYWdlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtOTQsNyArOTQsNyBAQAogI2luY2x1ZGUg
IlRleHRSZXNvdXJjZURlY29kZXIuaCIKICNpbmNsdWRlICJVc2VyQ29udGVudFByb3ZpZGVyLmgi
CiAjaW5jbHVkZSAiVXNlcklucHV0QnJpZGdlLmgiCi0jaW5jbHVkZSAiVmlld1N0YXRlQ2hhbmdl
T2JzZXJ2ZXIuaCIKKyNpbmNsdWRlICJBY3Rpdml0eVN0YXRlQ2hhbmdlT2JzZXJ2ZXIuaCIKICNp
bmNsdWRlICJWaXNpdGVkTGlua1N0YXRlLmgiCiAjaW5jbHVkZSAiVmlzaXRlZExpbmtTdG9yZS5o
IgogI2luY2x1ZGUgIlZvaWRDYWxsYmFjay5oIgpAQCAtMTU2LDcgKzE1Niw3IEBAIHN0YXRpYyB2
b2lkIG5ldHdvcmtTdGF0ZUNoYW5nZWQoYm9vbCBpc08KICAgICB9CiB9CiAKLXN0YXRpYyBjb25z
dCBWaWV3U3RhdGU6OkZsYWdzIFBhZ2VJbml0aWFsVmlld1N0YXRlID0gVmlld1N0YXRlOjpJc1Zp
c2libGUgfCBWaWV3U3RhdGU6OklzSW5XaW5kb3c7CitzdGF0aWMgY29uc3QgQWN0aXZpdHlTdGF0
ZTo6RmxhZ3MgUGFnZUluaXRpYWxBY3Rpdml0eVN0YXRlID0gQWN0aXZpdHlTdGF0ZTo6SXNWaXNp
YmxlIHwgQWN0aXZpdHlTdGF0ZTo6SXNJbldpbmRvdzsKIAogUGFnZTo6UGFnZShQYWdlQ29uZmln
dXJhdGlvbiYmIHBhZ2VDb25maWd1cmF0aW9uKQogICAgIDogbV9jaHJvbWUoc3RkOjptYWtlX3Vu
aXF1ZTxDaHJvbWU+KCp0aGlzLCAqcGFnZUNvbmZpZ3VyYXRpb24uY2hyb21lQ2xpZW50KSkKQEAg
LTE2NCw3ICsxNjQsNyBAQCBQYWdlOjpQYWdlKFBhZ2VDb25maWd1cmF0aW9uJiYgcGFnZUNvbmZp
CiAjaWYgRU5BQkxFKERSQUdfU1VQUE9SVCkKICAgICAsIG1fZHJhZ0NvbnRyb2xsZXIoc3RkOjpt
YWtlX3VuaXF1ZTxEcmFnQ29udHJvbGxlcj4oKnRoaXMsICpwYWdlQ29uZmlndXJhdGlvbi5kcmFn
Q2xpZW50KSkKICNlbmRpZgotICAgICwgbV9mb2N1c0NvbnRyb2xsZXIoc3RkOjptYWtlX3VuaXF1
ZTxGb2N1c0NvbnRyb2xsZXI+KCp0aGlzLCBQYWdlSW5pdGlhbFZpZXdTdGF0ZSkpCisgICAgLCBt
X2ZvY3VzQ29udHJvbGxlcihzdGQ6Om1ha2VfdW5pcXVlPEZvY3VzQ29udHJvbGxlcj4oKnRoaXMs
IFBhZ2VJbml0aWFsQWN0aXZpdHlTdGF0ZSkpCiAjaWYgRU5BQkxFKENPTlRFWFRfTUVOVVMpCiAg
ICAgLCBtX2NvbnRleHRNZW51Q29udHJvbGxlcihzdGQ6Om1ha2VfdW5pcXVlPENvbnRleHRNZW51
Q29udHJvbGxlcj4oKnRoaXMsICpwYWdlQ29uZmlndXJhdGlvbi5jb250ZXh0TWVudUNsaWVudCkp
CiAjZW5kaWYKQEAgLTIxNCw3ICsyMTQsNyBAQCBQYWdlOjpQYWdlKFBhZ2VDb25maWd1cmF0aW9u
JiYgcGFnZUNvbmZpCiAgICAgLCBtX3RpbWVyQWxpZ25tZW50SW50ZXJ2YWxJbmNyZWFzZVRpbWVy
KCp0aGlzLCAmUGFnZTo6dGltZXJBbGlnbm1lbnRJbnRlcnZhbEluY3JlYXNlVGltZXJGaXJlZCkK
ICAgICAsIG1faXNFZGl0YWJsZShmYWxzZSkKICAgICAsIG1faXNQcmVyZW5kZXIoZmFsc2UpCi0g
ICAgLCBtX3ZpZXdTdGF0ZShQYWdlSW5pdGlhbFZpZXdTdGF0ZSkKKyAgICAsIG1fYWN0aXZpdHlT
dGF0ZShQYWdlSW5pdGlhbEFjdGl2aXR5U3RhdGUpCiAgICAgLCBtX3JlcXVlc3RlZExheW91dE1p
bGVzdG9uZXMoMCkKICAgICAsIG1faGVhZGVySGVpZ2h0KDApCiAgICAgLCBtX2Zvb3RlckhlaWdo
dCgwKQpAQCAtMTAxMyw3ICsxMDEzLDcgQEAgdW5zaWduZWQgUGFnZTo6cGFnZUNvdW50KCkgY29u
c3QKIAogdm9pZCBQYWdlOjpzZXRJc0luV2luZG93KGJvb2wgaXNJbldpbmRvdykKIHsKLSAgICBz
ZXRWaWV3U3RhdGUoaXNJbldpbmRvdyA/IG1fdmlld1N0YXRlIHwgVmlld1N0YXRlOjpJc0luV2lu
ZG93IDogbV92aWV3U3RhdGUgJiB+Vmlld1N0YXRlOjpJc0luV2luZG93KTsKKyAgICBzZXRBY3Rp
dml0eVN0YXRlKGlzSW5XaW5kb3cgPyBtX2FjdGl2aXR5U3RhdGUgfCBBY3Rpdml0eVN0YXRlOjpJ
c0luV2luZG93IDogbV9hY3Rpdml0eVN0YXRlICYgfkFjdGl2aXR5U3RhdGU6OklzSW5XaW5kb3cp
OwogfQogCiB2b2lkIFBhZ2U6OnNldElzSW5XaW5kb3dJbnRlcm5hbChib29sIGlzSW5XaW5kb3cp
CkBAIC0xMDI3LDE0ICsxMDI3LDE0IEBAIHZvaWQgUGFnZTo6c2V0SXNJbldpbmRvd0ludGVybmFs
KGJvb2wgaXMKICAgICAgICAgcmVzdW1lQW5pbWF0aW5nSW1hZ2VzKCk7CiB9CiAKLXZvaWQgUGFn
ZTo6YWRkVmlld1N0YXRlQ2hhbmdlT2JzZXJ2ZXIoVmlld1N0YXRlQ2hhbmdlT2JzZXJ2ZXImIG9i
c2VydmVyKQordm9pZCBQYWdlOjphZGRBY3Rpdml0eVN0YXRlQ2hhbmdlT2JzZXJ2ZXIoQWN0aXZp
dHlTdGF0ZUNoYW5nZU9ic2VydmVyJiBvYnNlcnZlcikKIHsKLSAgICBtX3ZpZXdTdGF0ZUNoYW5n
ZU9ic2VydmVycy5hZGQoJm9ic2VydmVyKTsKKyAgICBtX2FjdGl2aXR5U3RhdGVDaGFuZ2VPYnNl
cnZlcnMuYWRkKCZvYnNlcnZlcik7CiB9CiAKLXZvaWQgUGFnZTo6cmVtb3ZlVmlld1N0YXRlQ2hh
bmdlT2JzZXJ2ZXIoVmlld1N0YXRlQ2hhbmdlT2JzZXJ2ZXImIG9ic2VydmVyKQordm9pZCBQYWdl
OjpyZW1vdmVBY3Rpdml0eVN0YXRlQ2hhbmdlT2JzZXJ2ZXIoQWN0aXZpdHlTdGF0ZUNoYW5nZU9i
c2VydmVyJiBvYnNlcnZlcikKIHsKLSAgICBtX3ZpZXdTdGF0ZUNoYW5nZU9ic2VydmVycy5yZW1v
dmUoJm9ic2VydmVyKTsKKyAgICBtX2FjdGl2aXR5U3RhdGVDaGFuZ2VPYnNlcnZlcnMucmVtb3Zl
KCZvYnNlcnZlcik7CiB9CiAKIHZvaWQgUGFnZTo6c3VzcGVuZFNjcmlwdGVkQW5pbWF0aW9ucygp
CkBAIC0xMjIwLDE0ICsxMjIwLDE0IEBAIHZvaWQgUGFnZTo6aGlkZGVuUGFnZURPTVRpbWVyVGhy
b3R0bGluZ1MKIHZvaWQgUGFnZTo6dXBkYXRlVGltZXJUaHJvdHRsaW5nU3RhdGUoKQogewogICAg
IC8vIFRpbWVyIHRocm90dGxpbmcgZGlzYWJsZWQgaWYgcGFnZSBpcyB2aXN1YWxseSBhY3RpdmUs
IG9yIGRpc2FibGVkIGJ5IHNldHRpbmcuCi0gICAgaWYgKCFtX3NldHRpbmdzLT5oaWRkZW5QYWdl
RE9NVGltZXJUaHJvdHRsaW5nRW5hYmxlZCgpIHx8ICEobV92aWV3U3RhdGUgJiBWaWV3U3RhdGU6
OklzVmlzdWFsbHlJZGxlKSkgeworICAgIGlmICghbV9zZXR0aW5ncy0+aGlkZGVuUGFnZURPTVRp
bWVyVGhyb3R0bGluZ0VuYWJsZWQoKSB8fCAhKG1fYWN0aXZpdHlTdGF0ZSAmIEFjdGl2aXR5U3Rh
dGU6OklzVmlzdWFsbHlJZGxlKSkgewogICAgICAgICBzZXRUaW1lclRocm90dGxpbmdTdGF0ZShU
aW1lclRocm90dGxpbmdTdGF0ZTo6RGlzYWJsZWQpOwogICAgICAgICByZXR1cm47CiAgICAgfQog
CiAgICAgLy8gSWYgdGhlIHBhZ2UgaXMgdmlzaWJsZSAoYnV0IGlkbGUpLCB0aGVyZSBpcyBhbnkg
YWN0aXZpdHkgKGxvYWRpbmcsIG1lZGlhIHBsYXlpbmcsIGV0YyksIG9yIHBlciBzZXR0aW5nLAog
ICAgIC8vIHdlIGFsbG93IHRpbWVyIHRocm90dGxpbmcsIGJ1dCBub3QgaW5jcmVhc2luZyB0aW1l
ciB0aHJvdHRsaW5nLgotICAgIGlmICghbV9zZXR0aW5ncy0+aGlkZGVuUGFnZURPTVRpbWVyVGhy
b3R0bGluZ0F1dG9JbmNyZWFzZXMoKSB8fCBtX3ZpZXdTdGF0ZSAmIFZpZXdTdGF0ZTo6SXNWaXNp
YmxlIHx8IG1fcGFnZVRocm90dGxlci5hY3Rpdml0eVN0YXRlKCkpIHsKKyAgICBpZiAoIW1fc2V0
dGluZ3MtPmhpZGRlblBhZ2VET01UaW1lclRocm90dGxpbmdBdXRvSW5jcmVhc2VzKCkgfHwgbV9h
Y3Rpdml0eVN0YXRlICYgQWN0aXZpdHlTdGF0ZTo6SXNWaXNpYmxlIHx8IG1fcGFnZVRocm90dGxl
ci5hY3Rpdml0eVN0YXRlKCkpIHsKICAgICAgICAgc2V0VGltZXJUaHJvdHRsaW5nU3RhdGUoVGlt
ZXJUaHJvdHRsaW5nU3RhdGU6OkVuYWJsZWQpOwogICAgICAgICByZXR1cm47CiAgICAgfQpAQCAt
MTQzOCwzMSArMTQzOCwzMSBAQCB2b2lkIFBhZ2U6OnJlc3VtZUFuaW1hdGluZ0ltYWdlcygpCiAg
ICAgICAgIHZpZXctPnJlc3VtZVZpc2libGVJbWFnZUFuaW1hdGlvbnNJbmNsdWRpbmdTdWJmcmFt
ZXMoKTsKIH0KIAotdm9pZCBQYWdlOjpzZXRWaWV3U3RhdGUoVmlld1N0YXRlOjpGbGFncyB2aWV3
U3RhdGUpCit2b2lkIFBhZ2U6OnNldEFjdGl2aXR5U3RhdGUoQWN0aXZpdHlTdGF0ZTo6RmxhZ3Mg
YWN0aXZpdHlTdGF0ZSkKIHsKLSAgICBWaWV3U3RhdGU6OkZsYWdzIGNoYW5nZWQgPSBtX3ZpZXdT
dGF0ZSBeIHZpZXdTdGF0ZTsKKyAgICBBY3Rpdml0eVN0YXRlOjpGbGFncyBjaGFuZ2VkID0gbV9h
Y3Rpdml0eVN0YXRlIF4gYWN0aXZpdHlTdGF0ZTsKICAgICBpZiAoIWNoYW5nZWQpCiAgICAgICAg
IHJldHVybjsKIAotICAgIFZpZXdTdGF0ZTo6RmxhZ3Mgb2xkVmlld1N0YXRlID0gbV92aWV3U3Rh
dGU7CisgICAgQWN0aXZpdHlTdGF0ZTo6RmxhZ3Mgb2xkQWN0aXZpdHlTdGF0ZSA9IG1fYWN0aXZp
dHlTdGF0ZTsKIAogICAgIGJvb2wgd2FzVmlzaWJsZUFuZEFjdGl2ZSA9IGlzVmlzaWJsZUFuZEFj
dGl2ZSgpOwotICAgIG1fdmlld1N0YXRlID0gdmlld1N0YXRlOworICAgIG1fYWN0aXZpdHlTdGF0
ZSA9IGFjdGl2aXR5U3RhdGU7CiAKLSAgICBtX2ZvY3VzQ29udHJvbGxlci0+c2V0Vmlld1N0YXRl
KHZpZXdTdGF0ZSk7CisgICAgbV9mb2N1c0NvbnRyb2xsZXItPnNldEFjdGl2aXR5U3RhdGUoYWN0
aXZpdHlTdGF0ZSk7CiAKLSAgICBpZiAoY2hhbmdlZCAmIFZpZXdTdGF0ZTo6SXNWaXNpYmxlKQot
ICAgICAgICBzZXRJc1Zpc2libGVJbnRlcm5hbCh2aWV3U3RhdGUgJiBWaWV3U3RhdGU6OklzVmlz
aWJsZSk7Ci0gICAgaWYgKGNoYW5nZWQgJiBWaWV3U3RhdGU6OklzSW5XaW5kb3cpCi0gICAgICAg
IHNldElzSW5XaW5kb3dJbnRlcm5hbCh2aWV3U3RhdGUgJiBWaWV3U3RhdGU6OklzSW5XaW5kb3cp
OwotICAgIGlmIChjaGFuZ2VkICYgVmlld1N0YXRlOjpJc1Zpc3VhbGx5SWRsZSkKLSAgICAgICAg
c2V0SXNWaXN1YWxseUlkbGVJbnRlcm5hbCh2aWV3U3RhdGUgJiBWaWV3U3RhdGU6OklzVmlzdWFs
bHlJZGxlKTsKKyAgICBpZiAoY2hhbmdlZCAmIEFjdGl2aXR5U3RhdGU6OklzVmlzaWJsZSkKKyAg
ICAgICAgc2V0SXNWaXNpYmxlSW50ZXJuYWwoYWN0aXZpdHlTdGF0ZSAmIEFjdGl2aXR5U3RhdGU6
OklzVmlzaWJsZSk7CisgICAgaWYgKGNoYW5nZWQgJiBBY3Rpdml0eVN0YXRlOjpJc0luV2luZG93
KQorICAgICAgICBzZXRJc0luV2luZG93SW50ZXJuYWwoYWN0aXZpdHlTdGF0ZSAmIEFjdGl2aXR5
U3RhdGU6OklzSW5XaW5kb3cpOworICAgIGlmIChjaGFuZ2VkICYgQWN0aXZpdHlTdGF0ZTo6SXNW
aXN1YWxseUlkbGUpCisgICAgICAgIHNldElzVmlzdWFsbHlJZGxlSW50ZXJuYWwoYWN0aXZpdHlT
dGF0ZSAmIEFjdGl2aXR5U3RhdGU6OklzVmlzdWFsbHlJZGxlKTsKIAotICAgIGlmIChjaGFuZ2Vk
ICYgKFZpZXdTdGF0ZTo6SXNWaXNpYmxlIHwgVmlld1N0YXRlOjpJc1Zpc3VhbGx5SWRsZSkpCisg
ICAgaWYgKGNoYW5nZWQgJiAoQWN0aXZpdHlTdGF0ZTo6SXNWaXNpYmxlIHwgQWN0aXZpdHlTdGF0
ZTo6SXNWaXN1YWxseUlkbGUpKQogICAgICAgICB1cGRhdGVUaW1lclRocm90dGxpbmdTdGF0ZSgp
OwogCi0gICAgZm9yIChhdXRvKiBvYnNlcnZlciA6IG1fdmlld1N0YXRlQ2hhbmdlT2JzZXJ2ZXJz
KQotICAgICAgICBvYnNlcnZlci0+dmlld1N0YXRlRGlkQ2hhbmdlKG9sZFZpZXdTdGF0ZSwgbV92
aWV3U3RhdGUpOworICAgIGZvciAoYXV0byogb2JzZXJ2ZXIgOiBtX2FjdGl2aXR5U3RhdGVDaGFu
Z2VPYnNlcnZlcnMpCisgICAgICAgIG9ic2VydmVyLT5hY3Rpdml0eVN0YXRlRGlkQ2hhbmdlKG9s
ZEFjdGl2aXR5U3RhdGUsIG1fYWN0aXZpdHlTdGF0ZSk7CiAKICAgICBpZiAod2FzVmlzaWJsZUFu
ZEFjdGl2ZSAhPSBpc1Zpc2libGVBbmRBY3RpdmUoKSkKICAgICAgICAgUGxhdGZvcm1NZWRpYVNl
c3Npb25NYW5hZ2VyOjp1cGRhdGVOb3dQbGF5aW5nSW5mb0lmTmVjZXNzYXJ5KCk7CkBAIC0xNDcw
LDE1ICsxNDcwLDE1IEBAIHZvaWQgUGFnZTo6c2V0Vmlld1N0YXRlKFZpZXdTdGF0ZTo6RmxhZ3MK
IAogYm9vbCBQYWdlOjppc1Zpc2libGVBbmRBY3RpdmUoKSBjb25zdAogewotICAgIHJldHVybiAo
bV92aWV3U3RhdGUgJiBWaWV3U3RhdGU6OklzVmlzaWJsZSkgJiYgKG1fdmlld1N0YXRlICYgVmll
d1N0YXRlOjpXaW5kb3dJc0FjdGl2ZSk7CisgICAgcmV0dXJuIChtX2FjdGl2aXR5U3RhdGUgJiBB
Y3Rpdml0eVN0YXRlOjpJc1Zpc2libGUpICYmIChtX2FjdGl2aXR5U3RhdGUgJiBBY3Rpdml0eVN0
YXRlOjpXaW5kb3dJc0FjdGl2ZSk7CiB9CiAKIHZvaWQgUGFnZTo6c2V0SXNWaXNpYmxlKGJvb2wg
aXNWaXNpYmxlKQogewogICAgIGlmIChpc1Zpc2libGUpCi0gICAgICAgIHNldFZpZXdTdGF0ZSgo
bV92aWV3U3RhdGUgJiB+Vmlld1N0YXRlOjpJc1Zpc3VhbGx5SWRsZSkgfCBWaWV3U3RhdGU6Oklz
VmlzaWJsZSB8IFZpZXdTdGF0ZTo6SXNWaXNpYmxlT3JPY2NsdWRlZCk7CisgICAgICAgIHNldEFj
dGl2aXR5U3RhdGUoKG1fYWN0aXZpdHlTdGF0ZSAmIH5BY3Rpdml0eVN0YXRlOjpJc1Zpc3VhbGx5
SWRsZSkgfCBBY3Rpdml0eVN0YXRlOjpJc1Zpc2libGUgfCBBY3Rpdml0eVN0YXRlOjpJc1Zpc2li
bGVPck9jY2x1ZGVkKTsKICAgICBlbHNlCi0gICAgICAgIHNldFZpZXdTdGF0ZSgobV92aWV3U3Rh
dGUgJiB+KFZpZXdTdGF0ZTo6SXNWaXNpYmxlIHwgVmlld1N0YXRlOjpJc1Zpc2libGVPck9jY2x1
ZGVkKSkgfCBWaWV3U3RhdGU6OklzVmlzdWFsbHlJZGxlKTsKKyAgICAgICAgc2V0QWN0aXZpdHlT
dGF0ZSgobV9hY3Rpdml0eVN0YXRlICYgfihBY3Rpdml0eVN0YXRlOjpJc1Zpc2libGUgfCBBY3Rp
dml0eVN0YXRlOjpJc1Zpc2libGVPck9jY2x1ZGVkKSkgfCBBY3Rpdml0eVN0YXRlOjpJc1Zpc3Vh
bGx5SWRsZSk7CiB9CiAKIHZvaWQgUGFnZTo6c2V0SXNWaXNpYmxlSW50ZXJuYWwoYm9vbCBpc1Zp
c2libGUpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuaAkocmV2aXNpb24gMjA4MTk3KQorKysgU291cmNlL1dl
YkNvcmUvcGFnZS9QYWdlLmgJKHdvcmtpbmcgY29weSkKQEAgLTM0LDcgKzM0LDcgQEAKICNpbmNs
dWRlICJTZXNzaW9uSUQuaCIKICNpbmNsdWRlICJTdXBwbGVtZW50YWJsZS5oIgogI2luY2x1ZGUg
IlVzZXJJbnRlcmZhY2VMYXlvdXREaXJlY3Rpb24uaCIKLSNpbmNsdWRlICJWaWV3U3RhdGUuaCIK
KyNpbmNsdWRlICJBY3Rpdml0eVN0YXRlLmgiCiAjaW5jbHVkZSAiVmlld3BvcnRBcmd1bWVudHMu
aCIKICNpbmNsdWRlICJXaGVlbEV2ZW50VGVzdFRyaWdnZXIuaCIKICNpbmNsdWRlIDxtZW1vcnk+
CkBAIC0xMjYsNyArMTI2LDcgQEAgY2xhc3MgU3RvcmFnZU5hbWVzcGFjZTsKIGNsYXNzIFN0b3Jh
Z2VOYW1lc3BhY2VQcm92aWRlcjsKIGNsYXNzIFVzZXJDb250ZW50UHJvdmlkZXI7CiBjbGFzcyBW
YWxpZGF0aW9uTWVzc2FnZUNsaWVudDsKLWNsYXNzIFZpZXdTdGF0ZUNoYW5nZU9ic2VydmVyOwor
Y2xhc3MgQWN0aXZpdHlTdGF0ZUNoYW5nZU9ic2VydmVyOwogY2xhc3MgVmlzaXRlZExpbmtTdG9y
ZTsKIAogdHlwZWRlZiB1aW50NjRfdCBMaW5rSGFzaDsKQEAgLTMzNCwyMiArMzM0LDIyIEBAIHB1
YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCBEaWFnbm9zdGljTG9nZ2luZ0NsaWVudCYgZGlhZ25v
c3RpY0xvZ2dpbmdDbGllbnQoKSBjb25zdDsKIAogICAgIC8vIE5vdGlmaWNhdGlvbnMgd2hlbiB0
aGUgUGFnZSBzdGFydHMgYW5kIHN0b3BzIGJlaW5nIHByZXNlbnRlZCB2aWEgYSBuYXRpdmUgd2lu
ZG93LgotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0Vmlld1N0YXRlKFZpZXdTdGF0ZTo6Rmxh
Z3MpOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0QWN0aXZpdHlTdGF0ZShBY3Rpdml0eVN0
YXRlOjpGbGFncyk7CiAgICAgYm9vbCBpc1Zpc2libGVBbmRBY3RpdmUoKSBjb25zdDsKICAgICB2
b2lkIHBhZ2VBY3Rpdml0eVN0YXRlQ2hhbmdlZCgpIHsgdXBkYXRlVGltZXJUaHJvdHRsaW5nU3Rh
dGUoKTsgfQogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0SXNWaXNpYmxlKGJvb2wpOwogICAg
IFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0SXNQcmVyZW5kZXIoKTsKLSAgICBib29sIGlzVmlzaWJs
ZSgpIGNvbnN0IHsgcmV0dXJuIG1fdmlld1N0YXRlICYgVmlld1N0YXRlOjpJc1Zpc2libGU7IH0K
KyAgICBib29sIGlzVmlzaWJsZSgpIGNvbnN0IHsgcmV0dXJuIG1fYWN0aXZpdHlTdGF0ZSAmIEFj
dGl2aXR5U3RhdGU6OklzVmlzaWJsZTsgfQogCiAgICAgLy8gTm90aWZpY2F0aW9uIHRoYXQgdGhp
cyBQYWdlIHdhcyBtb3ZlZCBpbnRvIG9yIG91dCBvZiBhIG5hdGl2ZSB3aW5kb3cuCiAgICAgV0VC
Q09SRV9FWFBPUlQgdm9pZCBzZXRJc0luV2luZG93KGJvb2wpOwotICAgIGJvb2wgaXNJbldpbmRv
dygpIGNvbnN0IHsgcmV0dXJuIG1fdmlld1N0YXRlICYgVmlld1N0YXRlOjpJc0luV2luZG93OyB9
CisgICAgYm9vbCBpc0luV2luZG93KCkgY29uc3QgeyByZXR1cm4gbV9hY3Rpdml0eVN0YXRlICYg
QWN0aXZpdHlTdGF0ZTo6SXNJbldpbmRvdzsgfQogCiAgICAgdm9pZCBzZXRJc0Nsb3NpbmcoKSB7
IG1faXNDbG9zaW5nID0gdHJ1ZTsgfQogICAgIGJvb2wgaXNDbG9zaW5nKCkgY29uc3QgeyByZXR1
cm4gbV9pc0Nsb3Npbmc7IH0KIAotICAgIHZvaWQgYWRkVmlld1N0YXRlQ2hhbmdlT2JzZXJ2ZXIo
Vmlld1N0YXRlQ2hhbmdlT2JzZXJ2ZXImKTsKLSAgICB2b2lkIHJlbW92ZVZpZXdTdGF0ZUNoYW5n
ZU9ic2VydmVyKFZpZXdTdGF0ZUNoYW5nZU9ic2VydmVyJik7CisgICAgdm9pZCBhZGRBY3Rpdml0
eVN0YXRlQ2hhbmdlT2JzZXJ2ZXIoQWN0aXZpdHlTdGF0ZUNoYW5nZU9ic2VydmVyJik7CisgICAg
dm9pZCByZW1vdmVBY3Rpdml0eVN0YXRlQ2hhbmdlT2JzZXJ2ZXIoQWN0aXZpdHlTdGF0ZUNoYW5n
ZU9ic2VydmVyJik7CiAKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHN1c3BlbmRTY3JpcHRlZEFu
aW1hdGlvbnMoKTsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHJlc3VtZVNjcmlwdGVkQW5pbWF0
aW9ucygpOwpAQCAtNjY2LDcgKzY2Niw3IEBAIHByaXZhdGU6CiAKICAgICBib29sIG1faXNFZGl0
YWJsZTsKICAgICBib29sIG1faXNQcmVyZW5kZXI7Ci0gICAgVmlld1N0YXRlOjpGbGFncyBtX3Zp
ZXdTdGF0ZTsKKyAgICBBY3Rpdml0eVN0YXRlOjpGbGFncyBtX2FjdGl2aXR5U3RhdGU7CiAgICAg
UGFnZUFjdGl2aXR5U3RhdGU6OkZsYWdzIG1fcGFnZUFjdGl2aXR5U3RhdGU7CiAKICAgICBMYXlv
dXRNaWxlc3RvbmVzIG1fcmVxdWVzdGVkTGF5b3V0TWlsZXN0b25lczsKQEAgLTcxMSw3ICs3MTEs
NyBAQCBwcml2YXRlOgogICAgIFJlZjxWaXNpdGVkTGlua1N0b3JlPiBtX3Zpc2l0ZWRMaW5rU3Rv
cmU7CiAgICAgUmVmUHRyPFdoZWVsRXZlbnRUZXN0VHJpZ2dlcj4gbV90ZXN0VHJpZ2dlcjsKIAot
ICAgIEhhc2hTZXQ8Vmlld1N0YXRlQ2hhbmdlT2JzZXJ2ZXIqPiBtX3ZpZXdTdGF0ZUNoYW5nZU9i
c2VydmVyczsKKyAgICBIYXNoU2V0PEFjdGl2aXR5U3RhdGVDaGFuZ2VPYnNlcnZlcio+IG1fYWN0
aXZpdHlTdGF0ZUNoYW5nZU9ic2VydmVyczsKIAogI2lmIEVOQUJMRShSRVNPVVJDRV9VU0FHRSkK
ICAgICBzdGQ6OnVuaXF1ZV9wdHI8UmVzb3VyY2VVc2FnZU92ZXJsYXk+IG1fcmVzb3VyY2VVc2Fn
ZU92ZXJsYXk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VUaHJvdHRsZXIuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VUaHJvdHRsZXIuaAkocmV2aXNpb24g
MjA4MTk3KQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlVGhyb3R0bGVyLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTI4LDcgKzI4LDcgQEAKICNpbmNsdWRlICJUaW1lci5oIgogCiAjaW5jbHVkZSAi
VXNlckFjdGl2aXR5LmgiCi0jaW5jbHVkZSAiVmlld1N0YXRlLmgiCisjaW5jbHVkZSAiQWN0aXZp
dHlTdGF0ZS5oIgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVyLmg+CiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvVmlld1N0YXRlLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvcGFnZS9WaWV3U3RhdGUuaAkocmV2aXNpb24gMjA4MTk3KQorKysg
U291cmNlL1dlYkNvcmUvcGFnZS9WaWV3U3RhdGUuaAkobm9uZXhpc3RlbnQpCkBAIC0xLDQ2ICsw
LDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0g
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAot
ICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0g
KiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICog
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotbmFtZXNwYWNlIFdlYkNvcmUgewot
Ci1zdHJ1Y3QgVmlld1N0YXRlIHsKLSAgICBlbnVtIHsKLSAgICAgICAgV2luZG93SXNBY3RpdmUg
PSAxIDw8IDAsCi0gICAgICAgIElzRm9jdXNlZCA9IDEgPDwgMSwKLSAgICAgICAgSXNWaXNpYmxl
ID0gMSA8PCAyLAotICAgICAgICBJc1Zpc2libGVPck9jY2x1ZGVkID0gMSA8PCAzLAotICAgICAg
ICBJc0luV2luZG93ID0gMSA8PCA0LAotICAgICAgICBJc1Zpc3VhbGx5SWRsZSA9IDEgPDwgNSwK
LSAgICB9OwotCi0gICAgdHlwZWRlZiB1bnNpZ25lZCBGbGFnczsKLQotICAgIHN0YXRpYyBjb25z
dCBGbGFncyBOb0ZsYWdzID0gMDsKLSAgICBzdGF0aWMgY29uc3QgRmxhZ3MgQWxsRmxhZ3MgPSBX
aW5kb3dJc0FjdGl2ZSB8IElzRm9jdXNlZCB8IElzVmlzaWJsZSB8IElzVmlzaWJsZU9yT2NjbHVk
ZWQgfCBJc0luV2luZG93IHwgSXNWaXN1YWxseUlkbGU7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL1ZpZXdTdGF0ZUNoYW5nZU9ic2VydmVy
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9WaWV3U3RhdGVDaGFuZ2VPYnNl
cnZlci5oCShyZXZpc2lvbiAyMDgxOTcpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL1ZpZXdTdGF0
ZUNoYW5nZU9ic2VydmVyLmgJKG5vbmV4aXN0ZW50KQpAQCAtMSw0MSArMCwwIEBACi0vKgotICog
Q29weXJpZ2h0IChDKSAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0g
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElU
UyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YK
LSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
Ci0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0g
Ki8KLQotI3ByYWdtYSBvbmNlCi0KLSNpbmNsdWRlICJWaWV3U3RhdGUuaCIKLQotbmFtZXNwYWNl
IFdlYkNvcmUgewotCi1jbGFzcyBWaWV3U3RhdGVDaGFuZ2VPYnNlcnZlciB7Ci1wdWJsaWM6Ci0g
ICAgdmlydHVhbCB+Vmlld1N0YXRlQ2hhbmdlT2JzZXJ2ZXIoKQotICAgIHsKLSAgICB9Ci0gICAg
Ci0gICAgdmlydHVhbCB2b2lkIHZpZXdTdGF0ZURpZENoYW5nZShWaWV3U3RhdGU6OkZsYWdzIG9s
ZFZpZXdTdGF0ZSwgVmlld1N0YXRlOjpGbGFncyBuZXdWaWV3U3RhdGUpID0gMDsKLX07Ci0KLX0g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cJKHJldmlzaW9uIDIwODE5NykKKysr
IFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEzNCBA
QAorMjAxNi0xMC0zMSAgR2F2aW4gQmFycmFjbG91Z2ggIDxiYXJyYWNsb3VnaEBhcHBsZS5jb20+
CisKKyAgICAgICAgUmVuYW1lIFZpZXdTdGF0ZSB0byBBY3Rpdml0eVN0YXRlCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjQyNTQKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBXZSBwbGFuIHRvIGFkZCBhIGNv
dXBsZSBtb3JlIGZsYWdzIHRvIFZpZXdTdGF0ZSB0aGF0IGFyZW4ndCBkaXJlY3RseSByZWxhdGVk
IHRvIHRoZSB2aWV3CisgICAgICAgIGl0c2VsZiAtIHdoZXRoZXIgdGhlcmUgaXMgYW4gb25nb2lu
ZyBwYWdlIGxvYWQsIGFuZCB3aGV0aGVyIHdoZXRoZXIgdGhlcmUgaXMgYXVkaW8gcGxheWJhY2su
CisgICAgICAgIFRoaXMgd2lsbCBhbGxvdyB2aWV3U3RhdGUgKG5vdyBhY3Rpdml0eVN0YXRlKSB0
byBmdWxseSBkcml2ZSB0aHJvdHRsaW5nIGRlY2lzaW9ucy4KKworICAgICAgICBSZW5hbWluZyB0
aGlzIGJpdGZpZWxkIGFjY29yZGluZ2x5LgorCisgICAgICAgICogU2hhcmVkL1dlYlBhZ2VDcmVh
dGlvblBhcmFtZXRlcnMuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlQ3JlYXRpb25QYXJh
bWV0ZXJzOjplbmNvZGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlQ3JlYXRpb25QYXJhbWV0
ZXJzOjpkZWNvZGUpOgorICAgICAgICAqIFNoYXJlZC9XZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJz
Lmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW06CisgICAgICAg
ICgtW1dLV2ViVmlldyBkaWRNb3ZlVG9XaW5kb3ddKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJ
L2d0ay9XZWJLaXRXZWJWaWV3QmFzZS5jcHA6CisgICAgICAgIChfV2ViS2l0V2ViVmlld0Jhc2VQ
cml2YXRlOjpfV2ViS2l0V2ViVmlld0Jhc2VQcml2YXRlKToKKyAgICAgICAgKF9XZWJLaXRXZWJW
aWV3QmFzZVByaXZhdGU6OnVwZGF0ZUFjdGl2aXR5U3RhdGVUaW1lckZpcmVkKToKKyAgICAgICAg
KHdlYmtpdFdlYlZpZXdCYXNlU2NoZWR1bGVVcGRhdGVBY3Rpdml0eVN0YXRlKToKKyAgICAgICAg
KHRvcGxldmVsV2luZG93Rm9jdXNJbkV2ZW50KToKKyAgICAgICAgKHRvcGxldmVsV2luZG93Rm9j
dXNPdXRFdmVudCk6CisgICAgICAgICh0b3BsZXZlbFdpbmRvd1N0YXRlRXZlbnQpOgorICAgICAg
ICAod2Via2l0V2ViVmlld0Jhc2VTZXRUb3BsZXZlbE9uU2NyZWVuV2luZG93KToKKyAgICAgICAg
KHdlYmtpdFdlYlZpZXdCYXNlTWFwKToKKyAgICAgICAgKHdlYmtpdFdlYlZpZXdCYXNlVW5tYXAp
OgorICAgICAgICAod2Via2l0V2ViVmlld0Jhc2VTZXRGb2N1cyk6CisgICAgICAgICh3ZWJraXRX
ZWJWaWV3QmFzZUlzSW5XaW5kb3dBY3RpdmUpOgorICAgICAgICAod2Via2l0V2ViVmlld0Jhc2VJ
c0ZvY3VzZWQpOgorICAgICAgICAod2Via2l0V2ViVmlld0Jhc2VJc1Zpc2libGUpOgorICAgICAg
ICAod2Via2l0V2ViVmlld0Jhc2VJc0luV2luZG93KToKKyAgICAgICAgKF9XZWJLaXRXZWJWaWV3
QmFzZVByaXZhdGU6OnVwZGF0ZVZpZXdTdGF0ZVRpbWVyRmlyZWQpOiBEZWxldGVkLgorICAgICAg
ICAod2Via2l0V2ViVmlld0Jhc2VTY2hlZHVsZVVwZGF0ZVZpZXdTdGF0ZSk6IERlbGV0ZWQuCisg
ICAgICAgICogVUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJbXBsLm1tOgorICAgICAgICAoV2ViS2l0
OjpXZWJWaWV3SW1wbDo6YmVjb21lRmlyc3RSZXNwb25kZXIpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJWaWV3SW1wbDo6cmVzaWduRmlyc3RSZXNwb25kZXIpOgorICAgICAgICAoV2ViS2l0OjpXZWJW
aWV3SW1wbDo6d2luZG93RGlkT3JkZXJPZmZTY3JlZW4pOgorICAgICAgICAoV2ViS2l0OjpXZWJW
aWV3SW1wbDo6d2luZG93RGlkT3JkZXJPblNjcmVlbik6CisgICAgICAgIChXZWJLaXQ6OldlYlZp
ZXdJbXBsOjp3aW5kb3dEaWRCZWNvbWVLZXkpOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1w
bDo6d2luZG93RGlkUmVzaWduS2V5KToKKyAgICAgICAgKFdlYktpdDo6V2ViVmlld0ltcGw6Ondp
bmRvd0RpZE1pbmlhdHVyaXplKToKKyAgICAgICAgKFdlYktpdDo6V2ViVmlld0ltcGw6OndpbmRv
d0RpZERlbWluaWF0dXJpemUpOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6d2luZG93
RGlkQ2hhbmdlT2NjbHVzaW9uU3RhdGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6
dmlld0RpZE1vdmVUb1dpbmRvdyk6CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXdJbXBsOjp2aWV3
RGlkSGlkZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXdJbXBsOjp2aWV3RGlkVW5oaWRlKToK
KyAgICAgICAgKFdlYktpdDo6V2ViVmlld0ltcGw6OmFjdGl2ZVNwYWNlRGlkQ2hhbmdlKToKKyAg
ICAgICAgKFdlYktpdDo6V2ViVmlld0ltcGw6OmVuZERlZmVycmluZ1ZpZXdJbldpbmRvd0NoYW5n
ZXMpOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6ZW5kRGVmZXJyaW5nVmlld0luV2lu
ZG93Q2hhbmdlc1N5bmMpOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6cHJlcGFyZUZv
ck1vdmVUb1dpbmRvdyk6CisgICAgICAgICogVUlQcm9jZXNzL0RyYXdpbmdBcmVhUHJveHkuaDoK
KyAgICAgICAgKFdlYktpdDo6RHJhd2luZ0FyZWFQcm94eTo6d2FpdEZvckRpZFVwZGF0ZUFjdGl2
aXR5U3RhdGUpOgorICAgICAgICAoV2ViS2l0OjpEcmF3aW5nQXJlYVByb3h5Ojp3YWl0Rm9yRGlk
VXBkYXRlVmlld1N0YXRlKTogRGVsZXRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVBy
b3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpXZWJQYWdlUHJveHkpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnJlYXR0YWNoVG9XZWJQcm9jZXNzKToKKyAg
ICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpzZXRTdXBwcmVzc1Zpc2liaWxpdHlVcGRhdGVz
KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5Ojp1cGRhdGVBY3Rpdml0eVN0YXRlKToK
KyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjphY3Rpdml0eVN0YXRlRGlkQ2hhbmdlKToK
KyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpkaXNwYXRjaEFjdGl2aXR5U3RhdGVDaGFu
Z2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnVwZGF0ZVRocm90dGxlU3RhdGUp
OgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OndhaXRGb3JEaWRVcGRhdGVBY3Rpdml0
eVN0YXRlKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpjcmVhdGlvblBhcmFtZXRl
cnMpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6Omluc3RhbGxBY3Rpdml0eVN0YXRl
Q2hhbmdlQ29tcGxldGlvbkhhbmRsZXIpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6
OnVwZGF0ZVZpZXdTdGF0ZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94
eTo6dmlld1N0YXRlRGlkQ2hhbmdlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViUGFn
ZVByb3h5OjpkaXNwYXRjaFZpZXdTdGF0ZUNoYW5nZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJL
aXQ6OldlYlBhZ2VQcm94eTo6d2FpdEZvckRpZFVwZGF0ZVZpZXdTdGF0ZSk6IERlbGV0ZWQuCisg
ICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6aW5zdGFsbFZpZXdTdGF0ZUNoYW5nZUNvbXBs
ZXRpb25IYW5kbGVyKTogRGVsZXRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5
Lmg6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6aXNJbldpbmRvdyk6CisgICAgICAg
IChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6ZGlkVXBkYXRlQWN0aXZpdHlTdGF0ZSk6CisgICAgICAg
IChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6aXNWaWV3VmlzaWJsZSk6CisgICAgICAgIChXZWJLaXQ6
OldlYlBhZ2VQcm94eTo6ZGlkVXBkYXRlVmlld1N0YXRlKTogRGVsZXRlZC4KKyAgICAgICAgKiBV
SVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluOgorICAgICAgICAqIFVJUHJvY2Vzcy9X
ZWJQcm9jZXNzUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUHJveHk6Ondp
bmRvd1NlcnZlckNvbm5lY3Rpb25TdGF0ZUNoYW5nZWQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9l
ZmwvV2ViVmlldy5jcHA6CisgICAgICAgICogVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3Lm1t
OgorICAgICAgICAoLVtXS0NvbnRlbnRWaWV3IF9hcHBsaWNhdGlvbkRpZEVudGVyQmFja2dyb3Vu
ZF0pOgorICAgICAgICAoLVtXS0NvbnRlbnRWaWV3IF9hcHBsaWNhdGlvbldpbGxFbnRlckZvcmVn
cm91bmRdKToKKyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL1dLUERGVmlldy5tbToKKyAgICAgICAg
KC1bV0tQREZWaWV3IF9hcHBsaWNhdGlvbkRpZEVudGVyQmFja2dyb3VuZF0pOgorICAgICAgICAo
LVtXS1BERlZpZXcgX2FwcGxpY2F0aW9uV2lsbEVudGVyRm9yZWdyb3VuZF0pOgorICAgICAgICAq
IFVJUHJvY2Vzcy9pb3MvV2ViUGFnZVByb3h5SU9TLm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJQ
YWdlUHJveHk6OnN5bmNocm9uaXplRHluYW1pY1ZpZXdwb3J0VXBkYXRlKToKKyAgICAgICAgKiBV
SVByb2Nlc3MvbWFjL1JlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhUHJveHkuaDoKKyAgICAgICAg
KiBVSVByb2Nlc3MvbWFjL1JlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhUHJveHkubW06CisgICAg
ICAgIChXZWJLaXQ6OlJlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhUHJveHk6OmRpZFJlZnJlc2hE
aXNwbGF5KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWFQcm94
eTo6d2FpdEZvckRpZFVwZGF0ZUFjdGl2aXR5U3RhdGUpOgorICAgICAgICAoV2ViS2l0OjpSZW1v
dGVMYXllclRyZWVEcmF3aW5nQXJlYVByb3h5Ojp3YWl0Rm9yRGlkVXBkYXRlVmlld1N0YXRlKTog
RGVsZXRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvbWFjL1RpbGVkQ29yZUFuaW1hdGlvbkRyYXdp
bmdBcmVhUHJveHkuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvbWFjL1RpbGVkQ29yZUFuaW1hdGlv
bkRyYXdpbmdBcmVhUHJveHkubW06CisgICAgICAgIChXZWJLaXQ6OlRpbGVkQ29yZUFuaW1hdGlv
bkRyYXdpbmdBcmVhUHJveHk6OndhaXRGb3JEaWRVcGRhdGVBY3Rpdml0eVN0YXRlKToKKyAgICAg
ICAgKFdlYktpdDo6VGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWFQcm94eTo6d2FpdEZvckRp
ZFVwZGF0ZVZpZXdTdGF0ZSk6IERlbGV0ZWQuCisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5z
L1BsdWdpblZpZXcuY3BwOgorICAgICAgICAoV2ViS2l0OjpQbHVnaW5WaWV3OjphY3Rpdml0eVN0
YXRlRGlkQ2hhbmdlKToKKyAgICAgICAgKFdlYktpdDo6UGx1Z2luVmlldzo6dmlld1N0YXRlRGlk
Q2hhbmdlKTogRGVsZXRlZC4KKyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmll
dy5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9BY2NlbGVyYXRlZERyYXdpbmdBcmVh
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6QWNjZWxlcmF0ZWREcmF3aW5nQXJlYTo6YWN0aXZpdHlT
dGF0ZURpZENoYW5nZSk6CisgICAgICAgIChXZWJLaXQ6OkFjY2VsZXJhdGVkRHJhd2luZ0FyZWE6
OnZpZXdTdGF0ZURpZENoYW5nZSk6IERlbGV0ZWQuCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQ
YWdlL0FjY2VsZXJhdGVkRHJhd2luZ0FyZWEuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBh
Z2UvRHJhd2luZ0FyZWEuaDoKKyAgICAgICAgKFdlYktpdDo6RHJhd2luZ0FyZWE6OmFjdGl2aXR5
U3RhdGVEaWRDaGFuZ2UpOgorICAgICAgICAoV2ViS2l0OjpEcmF3aW5nQXJlYTo6dmlld1N0YXRl
RGlkQ2hhbmdlKTogRGVsZXRlZC4KKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFn
ZS5jcHA6CisgICAgICAgIChXZWJLaXQ6Om1fdXNlckludGVyZmFjZUxheW91dERpcmVjdGlvbik6
CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnJlaW5pdGlhbGl6ZVdlYlBhZ2UpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJQYWdlOjp1cGRhdGVJc0luV2luZG93KToKKyAgICAgICAgKFdlYktpdDo6
V2ViUGFnZTo6c2V0QWN0aXZpdHlTdGF0ZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnNl
dFZpZXdTdGF0ZSk6IERlbGV0ZWQuCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBh
Z2UuaDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6aXNWaXNpYmxlKToKKyAgICAgICAgKFdl
YktpdDo6V2ViUGFnZTo6aXNWaXNpYmxlT3JPY2NsdWRlZCk6CisgICAgICAgICogV2ViUHJvY2Vz
cy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW46CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQ
YWdlL21hYy9SZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYS5oOgorICAgICAgICAqIFdlYlByb2Nl
c3MvV2ViUGFnZS9tYWMvUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWEubW06CisgICAgICAgIChX
ZWJLaXQ6OlJlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhOjphY3Rpdml0eVN0YXRlRGlkQ2hhbmdl
KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWE6OnZpZXdTdGF0
ZURpZENoYW5nZSk6IERlbGV0ZWQuCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9U
aWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYS5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2Vi
UGFnZS9tYWMvVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWEubW06CisgICAgICAgIChXZWJL
aXQ6OlRpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhOjpUaWxlZENvcmVBbmltYXRpb25EcmF3
aW5nQXJlYSk6CisgICAgICAgIChXZWJLaXQ6OlRpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVh
OjphY3Rpdml0eVN0YXRlRGlkQ2hhbmdlKToKKyAgICAgICAgKFdlYktpdDo6VGlsZWRDb3JlQW5p
bWF0aW9uRHJhd2luZ0FyZWE6OmRpZFVwZGF0ZUFjdGl2aXR5U3RhdGVUaW1lckZpcmVkKToKKyAg
ICAgICAgKFdlYktpdDo6VGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWE6OnZpZXdTdGF0ZURp
ZENoYW5nZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OlRpbGVkQ29yZUFuaW1hdGlvbkRy
YXdpbmdBcmVhOjpkaWRVcGRhdGVWaWV3U3RhdGVUaW1lckZpcmVkKTogRGVsZXRlZC4KKwogMjAx
Ni0xMC0zMSAgQnJhZHkgRWlkc29uICA8YmVpZHNvbkBhcHBsZS5jb20+CiAKICAgICAgICAgSW5k
ZXhlZERCIDIuMDogU3VwcG9ydCBJREJPYmplY3RTdG9yZSBnZXRBbGwvZ2V0QWxsS2V5cy4KSW5k
ZXg6IFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViUGFnZUNyZWF0aW9uUGFyYW1l
dGVycy5jcHAJKHJldmlzaW9uIDIwODE5NykKKysrIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJQ
YWdlQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzMsNyArMzMsNyBA
QCBuYW1lc3BhY2UgV2ViS2l0IHsKIHZvaWQgV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVyczo6ZW5j
b2RlKElQQzo6RW5jb2RlciYgZW5jb2RlcikgY29uc3QKIHsKICAgICBlbmNvZGVyIDw8IHZpZXdT
aXplOwotICAgIGVuY29kZXIgPDwgdmlld1N0YXRlOworICAgIGVuY29kZXIgPDwgYWN0aXZpdHlT
dGF0ZTsKIAogICAgIGVuY29kZXIgPDwgc3RvcmU7CiAgICAgZW5jb2Rlci5lbmNvZGVFbnVtKGRy
YXdpbmdBcmVhVHlwZSk7CkBAIC05NCw3ICs5NCw3IEBAIGJvb2wgV2ViUGFnZUNyZWF0aW9uUGFy
YW1ldGVyczo6ZGVjb2RlKEkKIHsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHBhcmFtZXRlcnMu
dmlld1NpemUpKQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgaWYgKCFkZWNvZGVyLmRlY29k
ZShwYXJhbWV0ZXJzLnZpZXdTdGF0ZSkpCisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShwYXJhbWV0
ZXJzLmFjdGl2aXR5U3RhdGUpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgaWYgKCFkZWNv
ZGVyLmRlY29kZShwYXJhbWV0ZXJzLnN0b3JlKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpJbmRl
eDogU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVy
cy5oCShyZXZpc2lvbiAyMDgxOTcpCisrKyBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViUGFnZUNy
ZWF0aW9uUGFyYW1ldGVycy5oCSh3b3JraW5nIGNvcHkpCkBAIC00MCw3ICs0MCw3IEBACiAjaW5j
bHVkZSA8V2ViQ29yZS9TY3JvbGxUeXBlcy5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU2Vzc2lvbklE
Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9Vc2VySW50ZXJmYWNlTGF5b3V0RGlyZWN0aW9uLmg+Ci0j
aW5jbHVkZSA8V2ViQ29yZS9WaWV3U3RhdGUuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL0FjdGl2aXR5
U3RhdGUuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAogI2lmIFBMQVRGT1JN
KE1BQykKQEAgLTYwLDcgKzYwLDcgQEAgc3RydWN0IFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMg
ewogCiAgICAgV2ViQ29yZTo6SW50U2l6ZSB2aWV3U2l6ZTsKIAotICAgIFdlYkNvcmU6OlZpZXdT
dGF0ZTo6RmxhZ3Mgdmlld1N0YXRlOworICAgIFdlYkNvcmU6OkFjdGl2aXR5U3RhdGU6OkZsYWdz
IGFjdGl2aXR5U3RhdGU7CiAgICAgCiAgICAgV2ViUHJlZmVyZW5jZXNTdG9yZSBzdG9yZTsKICAg
ICBEcmF3aW5nQXJlYVR5cGUgZHJhd2luZ0FyZWFUeXBlOwpJbmRleDogU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0RyYXdpbmdBcmVhUHJveHkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvRHJhd2luZ0FyZWFQcm94eS5oCShyZXZpc2lvbiAyMDgxOTcpCisrKyBTb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvRHJhd2luZ0FyZWFQcm94eS5oCSh3b3JraW5nIGNvcHkpCkBA
IC04OSw3ICs4OSw3IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVEZWJ1Z0lu
ZGljYXRvcigpIHsgfQogCi0gICAgdmlydHVhbCB2b2lkIHdhaXRGb3JEaWRVcGRhdGVWaWV3U3Rh
dGUoKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgd2FpdEZvckRpZFVwZGF0ZUFjdGl2aXR5U3RhdGUo
KSB7IH0KICAgICAKICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hBZnRlckVuc3VyaW5nRHJhd2lu
ZyhzdGQ6OmZ1bmN0aW9uPHZvaWQgKENhbGxiYWNrQmFzZTo6RXJyb3IpPikgeyBBU1NFUlRfTk9U
X1JFQUNIRUQoKTsgfQogCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVBy
b3h5LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVBy
b3h5LmNwcAkocmV2aXNpb24gMjA4MTk3KQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dl
YlBhZ2VQcm94eS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM1Nyw3ICszNTcsNyBAQCBXZWJQYWdl
UHJveHk6OldlYlBhZ2VQcm94eShQYWdlQ2xpZW50JiBwCiAgICAgLCBtX2dlb2xvY2F0aW9uUGVy
bWlzc2lvblJlcXVlc3RNYW5hZ2VyKCp0aGlzKQogICAgICwgbV9ub3RpZmljYXRpb25QZXJtaXNz
aW9uUmVxdWVzdE1hbmFnZXIoKnRoaXMpCiAgICAgLCBtX3VzZXJNZWRpYVBlcm1pc3Npb25SZXF1
ZXN0TWFuYWdlcigqdGhpcykKLSAgICAsIG1fdmlld1N0YXRlKFZpZXdTdGF0ZTo6Tm9GbGFncykK
KyAgICAsIG1fYWN0aXZpdHlTdGF0ZShBY3Rpdml0eVN0YXRlOjpOb0ZsYWdzKQogICAgICwgbV92
aWV3V2FzRXZlckluV2luZG93KGZhbHNlKQogI2lmIFBMQVRGT1JNKElPUykKICAgICAsIG1fYWx3
YXlzUnVuc0F0Rm9yZWdyb3VuZFByaW9yaXR5KG1fY29uZmlndXJhdGlvbi0+YWx3YXlzUnVuc0F0
Rm9yZWdyb3VuZFByaW9yaXR5KCkpCkBAIC00NDksMjYgKzQ0OSwyNiBAQCBXZWJQYWdlUHJveHk6
OldlYlBhZ2VQcm94eShQYWdlQ2xpZW50JiBwCiAgICAgLCBtX2F1dG9TaXppbmdTaG91bGRFeHBh
bmRUb1ZpZXdIZWlnaHQoZmFsc2UpCiAgICAgLCBtX21lZGlhVm9sdW1lKDEpCiAgICAgLCBtX21h
eVN0YXJ0TWVkaWFXaGVuSW5XaW5kb3codHJ1ZSkKLSAgICAsIG1fd2FpdGluZ0ZvckRpZFVwZGF0
ZVZpZXdTdGF0ZShmYWxzZSkKKyAgICAsIG1fd2FpdGluZ0ZvckRpZFVwZGF0ZUFjdGl2aXR5U3Rh
dGUoZmFsc2UpCiAjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgLCBtX3Njcm9sbFBlcmZvcm1hbmNl
RGF0YUNvbGxlY3Rpb25FbmFibGVkKGZhbHNlKQogI2VuZGlmCiAgICAgLCBtX3Njcm9sbFBpbm5p
bmdCZWhhdmlvcihEb05vdFBpbikKICAgICAsIG1fbmF2aWdhdGlvbklEKDApCiAgICAgLCBtX2Nv
bmZpZ3VyYXRpb25QcmVmZXJlbmNlVmFsdWVzKG1fY29uZmlndXJhdGlvbi0+cHJlZmVyZW5jZVZh
bHVlcygpKQotICAgICwgbV9wb3RlbnRpYWxseUNoYW5nZWRWaWV3U3RhdGVGbGFncyhWaWV3U3Rh
dGU6Ok5vRmxhZ3MpCi0gICAgLCBtX3ZpZXdTdGF0ZUNoYW5nZVdhbnRzU3luY2hyb25vdXNSZXBs
eShmYWxzZSkKKyAgICAsIG1fcG90ZW50aWFsbHlDaGFuZ2VkQWN0aXZpdHlTdGF0ZUZsYWdzKEFj
dGl2aXR5U3RhdGU6Ok5vRmxhZ3MpCisgICAgLCBtX2FjdGl2aXR5U3RhdGVDaGFuZ2VXYW50c1N5
bmNocm9ub3VzUmVwbHkoZmFsc2UpCiAgICAgLCBtX3dlYWtQdHJGYWN0b3J5KHRoaXMpCiB7CiAg
ICAgbV93ZWJQcm9jZXNzTGlmZXRpbWVUcmFja2VyLmFkZE9ic2VydmVyKG1fdmlzaXRlZExpbmtT
dG9yZSk7CiAgICAgbV93ZWJQcm9jZXNzTGlmZXRpbWVUcmFja2VyLmFkZE9ic2VydmVyKG1fd2Vi
c2l0ZURhdGFTdG9yZSk7CiAKLSAgICB1cGRhdGVWaWV3U3RhdGUoKTsKKyAgICB1cGRhdGVBY3Rp
dml0eVN0YXRlKCk7CiAgICAgdXBkYXRlVGhyb3R0bGVTdGF0ZSgpOwogICAgIHVwZGF0ZUhpZGRl
blBhZ2VUaHJvdHRsaW5nQXV0b0luY3JlYXNlcygpOwogICAgIAogI2lmIEhBVkUoT1VUX09GX1BS
T0NFU1NfTEFZRVJfSE9TVElORykKLSAgICBtX2xheWVySG9zdGluZ01vZGUgPSBtX3ZpZXdTdGF0
ZSAmIFZpZXdTdGF0ZTo6SXNJbldpbmRvdyA/IG1fcGFnZUNsaWVudC52aWV3TGF5ZXJIb3N0aW5n
TW9kZSgpIDogTGF5ZXJIb3N0aW5nTW9kZTo6T3V0T2ZQcm9jZXNzOworICAgIG1fbGF5ZXJIb3N0
aW5nTW9kZSA9IG1fYWN0aXZpdHlTdGF0ZSAmIEFjdGl2aXR5U3RhdGU6OklzSW5XaW5kb3cgPyBt
X3BhZ2VDbGllbnQudmlld0xheWVySG9zdGluZ01vZGUoKSA6IExheWVySG9zdGluZ01vZGU6Ok91
dE9mUHJvY2VzczsKICNlbmRpZgogCiAgICAgcGxhdGZvcm1Jbml0aWFsaXplKCk7CkBAIC01MDYs
OSArNTA2LDkgQEAgV2ViUGFnZVByb3h5OjpXZWJQYWdlUHJveHkoUGFnZUNsaWVudCYgcAogICAg
IH0KIAogI2lmIFBMQVRGT1JNKENPQ09BKQotICAgIGNvbnN0IENGSW5kZXggdmlld1N0YXRlQ2hh
bmdlUnVuTG9vcE9yZGVyID0gKENGSW5kZXgpUnVuTG9vcE9ic2VydmVyOjpXZWxsS25vd25SdW5M
b29wT3JkZXJzOjpDb3JlQW5pbWF0aW9uQ29tbWl0IC0gMTsKLSAgICBtX3ZpZXdTdGF0ZUNoYW5n
ZURpc3BhdGNoZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPFJ1bkxvb3BPYnNlcnZlcj4odmlld1N0YXRl
Q2hhbmdlUnVuTG9vcE9yZGVyLCBbdGhpc10gewotICAgICAgICB0aGlzLT5kaXNwYXRjaFZpZXdT
dGF0ZUNoYW5nZSgpOworICAgIGNvbnN0IENGSW5kZXggYWN0aXZpdHlTdGF0ZUNoYW5nZVJ1bkxv
b3BPcmRlciA9IChDRkluZGV4KVJ1bkxvb3BPYnNlcnZlcjo6V2VsbEtub3duUnVuTG9vcE9yZGVy
czo6Q29yZUFuaW1hdGlvbkNvbW1pdCAtIDE7CisgICAgbV9hY3Rpdml0eVN0YXRlQ2hhbmdlRGlz
cGF0Y2hlciA9IHN0ZDo6bWFrZV91bmlxdWU8UnVuTG9vcE9ic2VydmVyPihhY3Rpdml0eVN0YXRl
Q2hhbmdlUnVuTG9vcE9yZGVyLCBbdGhpc10geworICAgICAgICB0aGlzLT5kaXNwYXRjaEFjdGl2
aXR5U3RhdGVDaGFuZ2UoKTsKICAgICB9KTsKICNlbmRpZgogfQpAQCAtNzIwLDcgKzcyMCw3IEBA
IHZvaWQgV2ViUGFnZVByb3h5OjpyZWF0dGFjaFRvV2ViUHJvY2VzcygKICAgICBtX3Byb2Nlc3Mt
PmFkZEV4aXN0aW5nV2ViUGFnZSh0aGlzLCBtX3BhZ2VJRCk7CiAgICAgbV9wcm9jZXNzLT5hZGRN
ZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6bWVzc2FnZVJlY2VpdmVyTmFt
ZSgpLCBtX3BhZ2VJRCwgKnRoaXMpOwogCi0gICAgdXBkYXRlVmlld1N0YXRlKCk7CisgICAgdXBk
YXRlQWN0aXZpdHlTdGF0ZSgpOwogICAgIHVwZGF0ZVRocm90dGxlU3RhdGUoKTsKIAogICAgIG1f
aW5zcGVjdG9yID0gV2ViSW5zcGVjdG9yUHJveHk6OmNyZWF0ZSh0aGlzKTsKQEAgLTE0NDIsNDgg
KzE0NDIsNDggQEAgdm9pZCBXZWJQYWdlUHJveHk6OnNldFN1cHByZXNzVmlzaWJpbGl0eQogCiAg
ICAgaWYgKCFtX3N1cHByZXNzVmlzaWJpbGl0eVVwZGF0ZXMpIHsKICNpZiBQTEFURk9STShDT0NP
QSkKLSAgICAgICAgbV92aWV3U3RhdGVDaGFuZ2VEaXNwYXRjaGVyLT5zY2hlZHVsZSgpOworICAg
ICAgICBtX2FjdGl2aXR5U3RhdGVDaGFuZ2VEaXNwYXRjaGVyLT5zY2hlZHVsZSgpOwogI2Vsc2UK
LSAgICAgICAgZGlzcGF0Y2hWaWV3U3RhdGVDaGFuZ2UoKTsKKyAgICAgICAgZGlzcGF0Y2hBY3Rp
dml0eVN0YXRlQ2hhbmdlKCk7CiAjZW5kaWYKICAgICB9CiB9CiAKLXZvaWQgV2ViUGFnZVByb3h5
Ojp1cGRhdGVWaWV3U3RhdGUoVmlld1N0YXRlOjpGbGFncyBmbGFnc1RvVXBkYXRlKQordm9pZCBX
ZWJQYWdlUHJveHk6OnVwZGF0ZUFjdGl2aXR5U3RhdGUoQWN0aXZpdHlTdGF0ZTo6RmxhZ3MgZmxh
Z3NUb1VwZGF0ZSkKIHsKLSAgICBtX3ZpZXdTdGF0ZSAmPSB+ZmxhZ3NUb1VwZGF0ZTsKLSAgICBp
ZiAoZmxhZ3NUb1VwZGF0ZSAmIFZpZXdTdGF0ZTo6SXNGb2N1c2VkICYmIG1fcGFnZUNsaWVudC5p
c1ZpZXdGb2N1c2VkKCkpCi0gICAgICAgIG1fdmlld1N0YXRlIHw9IFZpZXdTdGF0ZTo6SXNGb2N1
c2VkOwotICAgIGlmIChmbGFnc1RvVXBkYXRlICYgVmlld1N0YXRlOjpXaW5kb3dJc0FjdGl2ZSAm
JiBtX3BhZ2VDbGllbnQuaXNWaWV3V2luZG93QWN0aXZlKCkpCi0gICAgICAgIG1fdmlld1N0YXRl
IHw9IFZpZXdTdGF0ZTo6V2luZG93SXNBY3RpdmU7Ci0gICAgaWYgKGZsYWdzVG9VcGRhdGUgJiBW
aWV3U3RhdGU6OklzVmlzaWJsZSAmJiBtX3BhZ2VDbGllbnQuaXNWaWV3VmlzaWJsZSgpKQotICAg
ICAgICBtX3ZpZXdTdGF0ZSB8PSBWaWV3U3RhdGU6OklzVmlzaWJsZTsKLSAgICBpZiAoZmxhZ3NU
b1VwZGF0ZSAmIFZpZXdTdGF0ZTo6SXNWaXNpYmxlT3JPY2NsdWRlZCAmJiBtX3BhZ2VDbGllbnQu
aXNWaWV3VmlzaWJsZU9yT2NjbHVkZWQoKSkKLSAgICAgICAgbV92aWV3U3RhdGUgfD0gVmlld1N0
YXRlOjpJc1Zpc2libGVPck9jY2x1ZGVkOwotICAgIGlmIChmbGFnc1RvVXBkYXRlICYgVmlld1N0
YXRlOjpJc0luV2luZG93ICYmIG1fcGFnZUNsaWVudC5pc1ZpZXdJbldpbmRvdygpKQotICAgICAg
ICBtX3ZpZXdTdGF0ZSB8PSBWaWV3U3RhdGU6OklzSW5XaW5kb3c7Ci0gICAgaWYgKGZsYWdzVG9V
cGRhdGUgJiBWaWV3U3RhdGU6OklzVmlzdWFsbHlJZGxlICYmIG1fcGFnZUNsaWVudC5pc1Zpc3Vh
bGx5SWRsZSgpKQotICAgICAgICBtX3ZpZXdTdGF0ZSB8PSBWaWV3U3RhdGU6OklzVmlzdWFsbHlJ
ZGxlOworICAgIG1fYWN0aXZpdHlTdGF0ZSAmPSB+ZmxhZ3NUb1VwZGF0ZTsKKyAgICBpZiAoZmxh
Z3NUb1VwZGF0ZSAmIEFjdGl2aXR5U3RhdGU6OklzRm9jdXNlZCAmJiBtX3BhZ2VDbGllbnQuaXNW
aWV3Rm9jdXNlZCgpKQorICAgICAgICBtX2FjdGl2aXR5U3RhdGUgfD0gQWN0aXZpdHlTdGF0ZTo6
SXNGb2N1c2VkOworICAgIGlmIChmbGFnc1RvVXBkYXRlICYgQWN0aXZpdHlTdGF0ZTo6V2luZG93
SXNBY3RpdmUgJiYgbV9wYWdlQ2xpZW50LmlzVmlld1dpbmRvd0FjdGl2ZSgpKQorICAgICAgICBt
X2FjdGl2aXR5U3RhdGUgfD0gQWN0aXZpdHlTdGF0ZTo6V2luZG93SXNBY3RpdmU7CisgICAgaWYg
KGZsYWdzVG9VcGRhdGUgJiBBY3Rpdml0eVN0YXRlOjpJc1Zpc2libGUgJiYgbV9wYWdlQ2xpZW50
LmlzVmlld1Zpc2libGUoKSkKKyAgICAgICAgbV9hY3Rpdml0eVN0YXRlIHw9IEFjdGl2aXR5U3Rh
dGU6OklzVmlzaWJsZTsKKyAgICBpZiAoZmxhZ3NUb1VwZGF0ZSAmIEFjdGl2aXR5U3RhdGU6Oklz
VmlzaWJsZU9yT2NjbHVkZWQgJiYgbV9wYWdlQ2xpZW50LmlzVmlld1Zpc2libGVPck9jY2x1ZGVk
KCkpCisgICAgICAgIG1fYWN0aXZpdHlTdGF0ZSB8PSBBY3Rpdml0eVN0YXRlOjpJc1Zpc2libGVP
ck9jY2x1ZGVkOworICAgIGlmIChmbGFnc1RvVXBkYXRlICYgQWN0aXZpdHlTdGF0ZTo6SXNJbldp
bmRvdyAmJiBtX3BhZ2VDbGllbnQuaXNWaWV3SW5XaW5kb3coKSkKKyAgICAgICAgbV9hY3Rpdml0
eVN0YXRlIHw9IEFjdGl2aXR5U3RhdGU6OklzSW5XaW5kb3c7CisgICAgaWYgKGZsYWdzVG9VcGRh
dGUgJiBBY3Rpdml0eVN0YXRlOjpJc1Zpc3VhbGx5SWRsZSAmJiBtX3BhZ2VDbGllbnQuaXNWaXN1
YWxseUlkbGUoKSkKKyAgICAgICAgbV9hY3Rpdml0eVN0YXRlIHw9IEFjdGl2aXR5U3RhdGU6Oklz
VmlzdWFsbHlJZGxlOwogfQogCi12b2lkIFdlYlBhZ2VQcm94eTo6dmlld1N0YXRlRGlkQ2hhbmdl
KFZpZXdTdGF0ZTo6RmxhZ3MgbWF5SGF2ZUNoYW5nZWQsIGJvb2wgd2FudHNTeW5jaHJvbm91c1Jl
cGx5LCBWaWV3U3RhdGVDaGFuZ2VEaXNwYXRjaE1vZGUgZGlzcGF0Y2hNb2RlKQordm9pZCBXZWJQ
YWdlUHJveHk6OmFjdGl2aXR5U3RhdGVEaWRDaGFuZ2UoQWN0aXZpdHlTdGF0ZTo6RmxhZ3MgbWF5
SGF2ZUNoYW5nZWQsIGJvb2wgd2FudHNTeW5jaHJvbm91c1JlcGx5LCBBY3Rpdml0eVN0YXRlQ2hh
bmdlRGlzcGF0Y2hNb2RlIGRpc3BhdGNoTW9kZSkKIHsKLSAgICBtX3BvdGVudGlhbGx5Q2hhbmdl
ZFZpZXdTdGF0ZUZsYWdzIHw9IG1heUhhdmVDaGFuZ2VkOwotICAgIG1fdmlld1N0YXRlQ2hhbmdl
V2FudHNTeW5jaHJvbm91c1JlcGx5ID0gbV92aWV3U3RhdGVDaGFuZ2VXYW50c1N5bmNocm9ub3Vz
UmVwbHkgfHwgd2FudHNTeW5jaHJvbm91c1JlcGx5OworICAgIG1fcG90ZW50aWFsbHlDaGFuZ2Vk
QWN0aXZpdHlTdGF0ZUZsYWdzIHw9IG1heUhhdmVDaGFuZ2VkOworICAgIG1fYWN0aXZpdHlTdGF0
ZUNoYW5nZVdhbnRzU3luY2hyb25vdXNSZXBseSA9IG1fYWN0aXZpdHlTdGF0ZUNoYW5nZVdhbnRz
U3luY2hyb25vdXNSZXBseSB8fCB3YW50c1N5bmNocm9ub3VzUmVwbHk7CiAKLSAgICBpZiAobV9z
dXBwcmVzc1Zpc2liaWxpdHlVcGRhdGVzICYmIGRpc3BhdGNoTW9kZSAhPSBWaWV3U3RhdGVDaGFu
Z2VEaXNwYXRjaE1vZGU6OkltbWVkaWF0ZSkKKyAgICBpZiAobV9zdXBwcmVzc1Zpc2liaWxpdHlV
cGRhdGVzICYmIGRpc3BhdGNoTW9kZSAhPSBBY3Rpdml0eVN0YXRlQ2hhbmdlRGlzcGF0Y2hNb2Rl
OjpJbW1lZGlhdGUpCiAgICAgICAgIHJldHVybjsKIAogI2lmIFBMQVRGT1JNKENPQ09BKQotICAg
IGJvb2wgaXNOZXdseUluV2luZG93ID0gIWlzSW5XaW5kb3coKSAmJiAobWF5SGF2ZUNoYW5nZWQg
JiBWaWV3U3RhdGU6OklzSW5XaW5kb3cpICYmIG1fcGFnZUNsaWVudC5pc1ZpZXdJbldpbmRvdygp
OwotICAgIGlmIChkaXNwYXRjaE1vZGUgPT0gVmlld1N0YXRlQ2hhbmdlRGlzcGF0Y2hNb2RlOjpJ
bW1lZGlhdGUgfHwgaXNOZXdseUluV2luZG93KSB7Ci0gICAgICAgIGRpc3BhdGNoVmlld1N0YXRl
Q2hhbmdlKCk7CisgICAgYm9vbCBpc05ld2x5SW5XaW5kb3cgPSAhaXNJbldpbmRvdygpICYmICht
YXlIYXZlQ2hhbmdlZCAmIEFjdGl2aXR5U3RhdGU6OklzSW5XaW5kb3cpICYmIG1fcGFnZUNsaWVu
dC5pc1ZpZXdJbldpbmRvdygpOworICAgIGlmIChkaXNwYXRjaE1vZGUgPT0gQWN0aXZpdHlTdGF0
ZUNoYW5nZURpc3BhdGNoTW9kZTo6SW1tZWRpYXRlIHx8IGlzTmV3bHlJbldpbmRvdykgeworICAg
ICAgICBkaXNwYXRjaEFjdGl2aXR5U3RhdGVDaGFuZ2UoKTsKICAgICAgICAgcmV0dXJuOwogICAg
IH0KLSAgICBtX3ZpZXdTdGF0ZUNoYW5nZURpc3BhdGNoZXItPnNjaGVkdWxlKCk7CisgICAgbV9h
Y3Rpdml0eVN0YXRlQ2hhbmdlRGlzcGF0Y2hlci0+c2NoZWR1bGUoKTsKICNlbHNlCiAgICAgVU5V
U0VEX1BBUkFNKGRpc3BhdGNoTW9kZSk7Ci0gICAgZGlzcGF0Y2hWaWV3U3RhdGVDaGFuZ2UoKTsK
KyAgICBkaXNwYXRjaEFjdGl2aXR5U3RhdGVDaGFuZ2UoKTsKICNlbmRpZgogfQogCkBAIC0xNTEw
LDU0ICsxNTEwLDU0IEBAIHZvaWQgV2ViUGFnZVByb3h5Ojp2aWV3RGlkRW50ZXJXaW5kb3coKQog
ICAgIH0KIH0KIAotdm9pZCBXZWJQYWdlUHJveHk6OmRpc3BhdGNoVmlld1N0YXRlQ2hhbmdlKCkK
K3ZvaWQgV2ViUGFnZVByb3h5OjpkaXNwYXRjaEFjdGl2aXR5U3RhdGVDaGFuZ2UoKQogewogI2lm
IFBMQVRGT1JNKENPQ09BKQotICAgIG1fdmlld1N0YXRlQ2hhbmdlRGlzcGF0Y2hlci0+aW52YWxp
ZGF0ZSgpOworICAgIG1fYWN0aXZpdHlTdGF0ZUNoYW5nZURpc3BhdGNoZXItPmludmFsaWRhdGUo
KTsKICNlbmRpZgogCiAgICAgaWYgKCFpc1ZhbGlkKCkpCiAgICAgICAgIHJldHVybjsKIAogICAg
IC8vIElmIHRoZSB2aXNpYmlsaXR5IHN0YXRlIG1heSBoYXZlIGNoYW5nZWQsIHRoZW4gc28gbWF5
IHRoZSB2aXN1YWxseSBpZGxlICYgb2NjbHVkZWQgYWdub3N0aWMgc3RhdGUuCi0gICAgaWYgKG1f
cG90ZW50aWFsbHlDaGFuZ2VkVmlld1N0YXRlRmxhZ3MgJiBWaWV3U3RhdGU6OklzVmlzaWJsZSkK
LSAgICAgICAgbV9wb3RlbnRpYWxseUNoYW5nZWRWaWV3U3RhdGVGbGFncyB8PSBWaWV3U3RhdGU6
OklzVmlzaWJsZU9yT2NjbHVkZWQgfCBWaWV3U3RhdGU6OklzVmlzdWFsbHlJZGxlOworICAgIGlm
IChtX3BvdGVudGlhbGx5Q2hhbmdlZEFjdGl2aXR5U3RhdGVGbGFncyAmIEFjdGl2aXR5U3RhdGU6
OklzVmlzaWJsZSkKKyAgICAgICAgbV9wb3RlbnRpYWxseUNoYW5nZWRBY3Rpdml0eVN0YXRlRmxh
Z3MgfD0gQWN0aXZpdHlTdGF0ZTo6SXNWaXNpYmxlT3JPY2NsdWRlZCB8IEFjdGl2aXR5U3RhdGU6
OklzVmlzdWFsbHlJZGxlOwogCiAgICAgLy8gUmVjb3JkIHRoZSBwcmlvciB2aWV3IHN0YXRlLCB1
cGRhdGUgdGhlIGZsYWdzIHRoYXQgbWF5IGhhdmUgY2hhbmdlZCwKICAgICAvLyBhbmQgY2hlY2sg
d2hpY2ggZmxhZ3MgaGF2ZSBhY3R1YWxseSBjaGFuZ2VkLgotICAgIFZpZXdTdGF0ZTo6RmxhZ3Mg
cHJldmlvdXNWaWV3U3RhdGUgPSBtX3ZpZXdTdGF0ZTsKLSAgICB1cGRhdGVWaWV3U3RhdGUobV9w
b3RlbnRpYWxseUNoYW5nZWRWaWV3U3RhdGVGbGFncyk7Ci0gICAgVmlld1N0YXRlOjpGbGFncyBj
aGFuZ2VkID0gbV92aWV3U3RhdGUgXiBwcmV2aW91c1ZpZXdTdGF0ZTsKKyAgICBBY3Rpdml0eVN0
YXRlOjpGbGFncyBwcmV2aW91c0FjdGl2aXR5U3RhdGUgPSBtX2FjdGl2aXR5U3RhdGU7CisgICAg
dXBkYXRlQWN0aXZpdHlTdGF0ZShtX3BvdGVudGlhbGx5Q2hhbmdlZEFjdGl2aXR5U3RhdGVGbGFn
cyk7CisgICAgQWN0aXZpdHlTdGF0ZTo6RmxhZ3MgY2hhbmdlZCA9IG1fYWN0aXZpdHlTdGF0ZSBe
IHByZXZpb3VzQWN0aXZpdHlTdGF0ZTsKIAotICAgIGJvb2wgaXNOb3dJbldpbmRvdyA9IChjaGFu
Z2VkICYgVmlld1N0YXRlOjpJc0luV2luZG93KSAmJiBpc0luV2luZG93KCk7CisgICAgYm9vbCBp
c05vd0luV2luZG93ID0gKGNoYW5nZWQgJiBBY3Rpdml0eVN0YXRlOjpJc0luV2luZG93KSAmJiBp
c0luV2luZG93KCk7CiAgICAgLy8gV2UgYWx3YXlzIHdhbnQgdG8gd2FpdCBmb3IgdGhlIFdlYiBw
cm9jZXNzIHRvIHJlcGx5IGlmIHdlJ3ZlIGJlZW4gaW4td2luZG93IGJlZm9yZSBhbmQgYXJlIGNv
bWluZyBiYWNrIGluLXdpbmRvdy4KICAgICBpZiAobV92aWV3V2FzRXZlckluV2luZG93ICYmIGlz
Tm93SW5XaW5kb3cgJiYgbV9kcmF3aW5nQXJlYS0+aGFzVmlzaWJsZUNvbnRlbnQoKSAmJiBtX3dh
aXRzRm9yUGFpbnRBZnRlclZpZXdEaWRNb3ZlVG9XaW5kb3cpCi0gICAgICAgIG1fdmlld1N0YXRl
Q2hhbmdlV2FudHNTeW5jaHJvbm91c1JlcGx5ID0gdHJ1ZTsKKyAgICAgICAgbV9hY3Rpdml0eVN0
YXRlQ2hhbmdlV2FudHNTeW5jaHJvbm91c1JlcGx5ID0gdHJ1ZTsKIAogICAgIC8vIERvbid0IHdh
aXQgc3luY2hyb25vdXNseSBpZiB0aGUgdmlldyBzdGF0ZSBpcyBub3QgdmlzaWJsZS4gKFRoaXMg
bWF0dGVycyBpbiBwYXJ0aWN1bGFyIG9uIGlPUywgd2hlcmUgYSBoaWRkZW4gcGFnZSBtYXkgYmUg
c3VzcGVuZGVkLikKLSAgICBpZiAoIShtX3ZpZXdTdGF0ZSAmIFZpZXdTdGF0ZTo6SXNWaXNpYmxl
KSkKLSAgICAgICAgbV92aWV3U3RhdGVDaGFuZ2VXYW50c1N5bmNocm9ub3VzUmVwbHkgPSBmYWxz
ZTsKKyAgICBpZiAoIShtX2FjdGl2aXR5U3RhdGUgJiBBY3Rpdml0eVN0YXRlOjpJc1Zpc2libGUp
KQorICAgICAgICBtX2FjdGl2aXR5U3RhdGVDaGFuZ2VXYW50c1N5bmNocm9ub3VzUmVwbHkgPSBm
YWxzZTsKIAotICAgIGlmIChjaGFuZ2VkIHx8IG1fdmlld1N0YXRlQ2hhbmdlV2FudHNTeW5jaHJv
bm91c1JlcGx5IHx8ICFtX25leHRWaWV3U3RhdGVDaGFuZ2VDYWxsYmFja3MuaXNFbXB0eSgpKQot
ICAgICAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNldFZpZXdTdGF0ZSht
X3ZpZXdTdGF0ZSwgbV92aWV3U3RhdGVDaGFuZ2VXYW50c1N5bmNocm9ub3VzUmVwbHksIG1fbmV4
dFZpZXdTdGF0ZUNoYW5nZUNhbGxiYWNrcyksIG1fcGFnZUlEKTsKKyAgICBpZiAoY2hhbmdlZCB8
fCBtX2FjdGl2aXR5U3RhdGVDaGFuZ2VXYW50c1N5bmNocm9ub3VzUmVwbHkgfHwgIW1fbmV4dEFj
dGl2aXR5U3RhdGVDaGFuZ2VDYWxsYmFja3MuaXNFbXB0eSgpKQorICAgICAgICBtX3Byb2Nlc3Mt
PnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNldEFjdGl2aXR5U3RhdGUobV9hY3Rpdml0eVN0YXRl
LCBtX2FjdGl2aXR5U3RhdGVDaGFuZ2VXYW50c1N5bmNocm9ub3VzUmVwbHksIG1fbmV4dEFjdGl2
aXR5U3RhdGVDaGFuZ2VDYWxsYmFja3MpLCBtX3BhZ2VJRCk7CiAKLSAgICBtX25leHRWaWV3U3Rh
dGVDaGFuZ2VDYWxsYmFja3MuY2xlYXIoKTsKKyAgICBtX25leHRBY3Rpdml0eVN0YXRlQ2hhbmdl
Q2FsbGJhY2tzLmNsZWFyKCk7CiAKLSAgICAvLyBUaGlzIG11c3QgaGFwcGVuIGFmdGVyIHRoZSBT
ZXRWaWV3U3RhdGUgbWVzc2FnZSBpcyBzZW50LCB0byBlbnN1cmUgdGhlIHBhZ2UgdmlzaWJpbGl0
eSBldmVudCBjYW4gZmlyZS4KKyAgICAvLyBUaGlzIG11c3QgaGFwcGVuIGFmdGVyIHRoZSBTZXRB
Y3Rpdml0eVN0YXRlIG1lc3NhZ2UgaXMgc2VudCwgdG8gZW5zdXJlIHRoZSBwYWdlIHZpc2liaWxp
dHkgZXZlbnQgY2FuIGZpcmUuCiAgICAgdXBkYXRlVGhyb3R0bGVTdGF0ZSgpOwogCiAgICAgLy8g
SWYgd2UndmUgc3RhcnRlZCB0aGUgcmVzcG9uc2l2ZW5lc3MgdGltZXIgYXMgcGFydCBvZiB0ZWxs
aW5nIHRoZSB3ZWIgcHJvY2VzcyB0byB1cGRhdGUgdGhlIGJhY2tpbmcgc3RvcmUKICAgICAvLyBz
dGF0ZSwgaXQgbWlnaHQgbm90IHNlbmQgYmFjayBhIHJlcGx5IChzaW5jZSBpdCB3b24ndCBwYWlu
dCBhbnl0aGluZyBpZiB0aGUgd2ViIHBhZ2UgaXMgaGlkZGVuKSBzbyB3ZQogICAgIC8vIHN0b3Ag
dGhlIHVucmVzcG9uc2l2ZW5lc3MgdGltZXIgaGVyZS4KLSAgICBpZiAoKGNoYW5nZWQgJiBWaWV3
U3RhdGU6OklzVmlzaWJsZSkgJiYgIWlzVmlld1Zpc2libGUoKSkKKyAgICBpZiAoKGNoYW5nZWQg
JiBBY3Rpdml0eVN0YXRlOjpJc1Zpc2libGUpICYmICFpc1ZpZXdWaXNpYmxlKCkpCiAgICAgICAg
IG1fcHJvY2Vzcy0+cmVzcG9uc2l2ZW5lc3NUaW1lcigpLnN0b3AoKTsKIAogI2lmIEVOQUJMRShQ
T0lOVEVSX0xPQ0spCi0gICAgaWYgKChjaGFuZ2VkICYgVmlld1N0YXRlOjpJc1Zpc2libGUpICYm
ICFpc1ZpZXdWaXNpYmxlKCkpCisgICAgaWYgKChjaGFuZ2VkICYgQWN0aXZpdHlTdGF0ZTo6SXNW
aXNpYmxlKSAmJiAhaXNWaWV3VmlzaWJsZSgpKQogICAgICAgICByZXF1ZXN0UG9pbnRlclVubG9j
aygpOwogI2VuZGlmCiAKLSAgICBpZiAoY2hhbmdlZCAmIFZpZXdTdGF0ZTo6SXNJbldpbmRvdykg
eworICAgIGlmIChjaGFuZ2VkICYgQWN0aXZpdHlTdGF0ZTo6SXNJbldpbmRvdykgewogICAgICAg
ICBpZiAoaXNJbldpbmRvdygpKQogICAgICAgICAgICAgdmlld0RpZEVudGVyV2luZG93KCk7CiAg
ICAgICAgIGVsc2UKQEAgLTE1NjYsMTEgKzE1NjYsMTEgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmRp
c3BhdGNoVmlld1N0YXRlQ2hhbgogCiAgICAgdXBkYXRlQmFja2luZ1N0b3JlRGlzY2FyZGFibGVT
dGF0ZSgpOwogCi0gICAgaWYgKG1fdmlld1N0YXRlQ2hhbmdlV2FudHNTeW5jaHJvbm91c1JlcGx5
KQotICAgICAgICB3YWl0Rm9yRGlkVXBkYXRlVmlld1N0YXRlKCk7CisgICAgaWYgKG1fYWN0aXZp
dHlTdGF0ZUNoYW5nZVdhbnRzU3luY2hyb25vdXNSZXBseSkKKyAgICAgICAgd2FpdEZvckRpZFVw
ZGF0ZUFjdGl2aXR5U3RhdGUoKTsKIAotICAgIG1fcG90ZW50aWFsbHlDaGFuZ2VkVmlld1N0YXRl
RmxhZ3MgPSBWaWV3U3RhdGU6Ok5vRmxhZ3M7Ci0gICAgbV92aWV3U3RhdGVDaGFuZ2VXYW50c1N5
bmNocm9ub3VzUmVwbHkgPSBmYWxzZTsKKyAgICBtX3BvdGVudGlhbGx5Q2hhbmdlZEFjdGl2aXR5
U3RhdGVGbGFncyA9IEFjdGl2aXR5U3RhdGU6Ok5vRmxhZ3M7CisgICAgbV9hY3Rpdml0eVN0YXRl
Q2hhbmdlV2FudHNTeW5jaHJvbm91c1JlcGx5ID0gZmFsc2U7CiAgICAgbV92aWV3V2FzRXZlcklu
V2luZG93IHw9IGlzTm93SW5XaW5kb3c7CiB9CiAKQEAgLTE1OTIsMTMgKzE1OTIsMTMgQEAgdm9p
ZCBXZWJQYWdlUHJveHk6OnVwZGF0ZVRocm90dGxlU3RhdGUoKQogICAgIC8vIFdlIHNob3VsZCBz
dXBwcmVzcyBpZiB0aGUgcGFnZSBpcyBub3QgYWN0aXZlLCBpcyB2aXN1YWxseSBpZGxlLCBhbmQg
c3VwcmVzc2lvbiBpcyBlbmFibGVkLgogICAgIGJvb2wgaXNMb2FkaW5nID0gbV9wYWdlTG9hZFN0
YXRlLmlzTG9hZGluZygpOwogICAgIGJvb2wgaXNQbGF5aW5nQXVkaW8gPSBtX21lZGlhU3RhdGUg
JiBNZWRpYVByb2R1Y2VyOjpJc1BsYXlpbmdBdWRpbyAmJiAhKG1fbXV0ZWRTdGF0ZSAmIE1lZGlh
UHJvZHVjZXI6OkF1ZGlvSXNNdXRlZCk7Ci0gICAgYm9vbCBwYWdlU2hvdWxkQmVTdXBwcmVzc2Vk
ID0gIWlzTG9hZGluZyAmJiAhaXNQbGF5aW5nQXVkaW8gJiYgcHJvY2Vzc1N1cHByZXNzaW9uRW5h
YmxlZCAmJiAobV92aWV3U3RhdGUgJiBWaWV3U3RhdGU6OklzVmlzdWFsbHlJZGxlKTsKKyAgICBi
b29sIHBhZ2VTaG91bGRCZVN1cHByZXNzZWQgPSAhaXNMb2FkaW5nICYmICFpc1BsYXlpbmdBdWRp
byAmJiBwcm9jZXNzU3VwcHJlc3Npb25FbmFibGVkICYmIChtX2FjdGl2aXR5U3RhdGUgJiBBY3Rp
dml0eVN0YXRlOjpJc1Zpc3VhbGx5SWRsZSk7CiAgICAgaWYgKG1fcGFnZVN1cHByZXNzZWQgIT0g
cGFnZVNob3VsZEJlU3VwcHJlc3NlZCkgewogICAgICAgICBtX3BhZ2VTdXBwcmVzc2VkID0gcGFn
ZVNob3VsZEJlU3VwcHJlc3NlZDsKICAgICAgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpX
ZWJQYWdlOjpTZXRQYWdlU3VwcHJlc3NlZChtX3BhZ2VTdXBwcmVzc2VkKSwgbV9wYWdlSUQpOwog
ICAgIH0KIAotICAgIGlmIChtX3ZpZXdTdGF0ZSAmIFZpZXdTdGF0ZTo6SXNWaXN1YWxseUlkbGUp
CisgICAgaWYgKG1fYWN0aXZpdHlTdGF0ZSAmIEFjdGl2aXR5U3RhdGU6OklzVmlzdWFsbHlJZGxl
KQogICAgICAgICBtX3BhZ2VJc1VzZXJPYnNlcnZhYmxlQ291bnQgPSBudWxscHRyOwogICAgIGVs
c2UgaWYgKCFtX3BhZ2VJc1VzZXJPYnNlcnZhYmxlQ291bnQpCiAgICAgICAgIG1fcGFnZUlzVXNl
ck9ic2VydmFibGVDb3VudCA9IG1fcHJvY2Vzcy0+cHJvY2Vzc1Bvb2woKS51c2VyT2JzZXJ2YWJs
ZVBhZ2VDb3VudCgpOwpAQCAtMTY0MCw3ICsxNjQwLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6Omxh
eWVySG9zdGluZ01vZGVEaWRDaAogICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFn
ZTo6U2V0TGF5ZXJIb3N0aW5nTW9kZShsYXllckhvc3RpbmdNb2RlKSwgbV9wYWdlSUQpOwogfQog
Ci12b2lkIFdlYlBhZ2VQcm94eTo6d2FpdEZvckRpZFVwZGF0ZVZpZXdTdGF0ZSgpCit2b2lkIFdl
YlBhZ2VQcm94eTo6d2FpdEZvckRpZFVwZGF0ZUFjdGl2aXR5U3RhdGUoKQogewogICAgIGlmICgh
aXNWYWxpZCgpKQogICAgICAgICByZXR1cm47CkBAIC0xNjQ5LDExICsxNjQ5LDExIEBAIHZvaWQg
V2ViUGFnZVByb3h5Ojp3YWl0Rm9yRGlkVXBkYXRlVmlld1MKICAgICAgICAgcmV0dXJuOwogCiAg
ICAgLy8gSWYgd2UgaGF2ZSBwcmV2aW91c2x5IHRpbWVkIG91dCB3aXRoIG5vIHJlc3BvbnNlIGZy
b20gdGhlIFdlYlByb2Nlc3MsIGRvbid0IGJsb2NrIHRoZSBVSVByb2Nlc3MgYWdhaW4gdW50aWwg
aXQgc3RhcnRzIHJlc3BvbmRpbmcuCi0gICAgaWYgKG1fd2FpdGluZ0ZvckRpZFVwZGF0ZVZpZXdT
dGF0ZSkKKyAgICBpZiAobV93YWl0aW5nRm9yRGlkVXBkYXRlQWN0aXZpdHlTdGF0ZSkKICAgICAg
ICAgcmV0dXJuOwogCiAjaWYgUExBVEZPUk0oSU9TKQotICAgIC8vIEhhaWwgTWFyeSBjaGVjay4g
U2hvdWxkIG5vdCBiZSBwb3NzaWJsZSAoZGlzcGF0Y2hWaWV3U3RhdGVDaGFuZ2Ugc2hvdWxkIGZv
cmNlIGFzeW5jIGlmIG5vdCB2aXNpYmxlLAorICAgIC8vIEhhaWwgTWFyeSBjaGVjay4gU2hvdWxk
IG5vdCBiZSBwb3NzaWJsZSAoZGlzcGF0Y2hBY3Rpdml0eVN0YXRlQ2hhbmdlIHNob3VsZCBmb3Jj
ZSBhc3luYyBpZiBub3QgdmlzaWJsZSwKICAgICAvLyBhbmQgaWYgdmlzaWJsZSB3ZSBzaG91bGQg
YmUgaG9sZGluZyBhbiBhc3NlcnRpb24pIC0gYnV0IHdlIHNob3VsZCBuZXZlciBibG9jayBvbiBh
IHN1c3BlbmRlZCBwcm9jZXNzLgogICAgIGlmICghbV9hY3Rpdml0eVRva2VuKSB7CiAgICAgICAg
IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwpAQCAtMTY2MSw5ICsxNjYxLDkgQEAgdm9pZCBXZWJQYWdl
UHJveHk6OndhaXRGb3JEaWRVcGRhdGVWaWV3UwogICAgIH0KICNlbmRpZgogCi0gICAgbV93YWl0
aW5nRm9yRGlkVXBkYXRlVmlld1N0YXRlID0gdHJ1ZTsKKyAgICBtX3dhaXRpbmdGb3JEaWRVcGRh
dGVBY3Rpdml0eVN0YXRlID0gdHJ1ZTsKIAotICAgIG1fZHJhd2luZ0FyZWEtPndhaXRGb3JEaWRV
cGRhdGVWaWV3U3RhdGUoKTsKKyAgICBtX2RyYXdpbmdBcmVhLT53YWl0Rm9yRGlkVXBkYXRlQWN0
aXZpdHlTdGF0ZSgpOwogfQogCiBJbnRTaXplIFdlYlBhZ2VQcm94eTo6dmlld1NpemUoKSBjb25z
dApAQCAtNTQ2Myw3ICs1NDYzLDcgQEAgV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycyBXZWJQYWdl
UHJveHk6OgogICAgIFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMgcGFyYW1ldGVyczsKIAogICAg
IHBhcmFtZXRlcnMudmlld1NpemUgPSBtX3BhZ2VDbGllbnQudmlld1NpemUoKTsKLSAgICBwYXJh
bWV0ZXJzLnZpZXdTdGF0ZSA9IG1fdmlld1N0YXRlOworICAgIHBhcmFtZXRlcnMuYWN0aXZpdHlT
dGF0ZSA9IG1fYWN0aXZpdHlTdGF0ZTsKICAgICBwYXJhbWV0ZXJzLmRyYXdpbmdBcmVhVHlwZSA9
IG1fZHJhd2luZ0FyZWEtPnR5cGUoKTsKICAgICBwYXJhbWV0ZXJzLnN0b3JlID0gcHJlZmVyZW5j
ZXNTdG9yZSgpOwogICAgIHBhcmFtZXRlcnMucGFnZUdyb3VwRGF0YSA9IG1fcGFnZUdyb3VwLT5k
YXRhKCk7CkBAIC02NDc0LDcgKzY0NzQsNyBAQCB2b2lkKiBXZWJQYWdlUHJveHk6OmltbWVkaWF0
ZUFjdGlvbkFuaW1hCiAgICAgcmV0dXJuIG1fcGFnZUNsaWVudC5pbW1lZGlhdGVBY3Rpb25Bbmlt
YXRpb25Db250cm9sbGVyRm9ySGl0VGVzdFJlc3VsdChoaXRUZXN0UmVzdWx0LCB0eXBlLCB1c2Vy
RGF0YSk7CiB9CiAKLXZvaWQgV2ViUGFnZVByb3h5OjppbnN0YWxsVmlld1N0YXRlQ2hhbmdlQ29t
cGxldGlvbkhhbmRsZXIodm9pZCAoXmNvbXBsZXRpb25IYW5kbGVyKSgpKQordm9pZCBXZWJQYWdl
UHJveHk6Omluc3RhbGxBY3Rpdml0eVN0YXRlQ2hhbmdlQ29tcGxldGlvbkhhbmRsZXIodm9pZCAo
XmNvbXBsZXRpb25IYW5kbGVyKSgpKQogewogICAgIGlmICghaXNWYWxpZCgpKSB7CiAgICAgICAg
IGNvbXBsZXRpb25IYW5kbGVyKCk7CkBAIC02NDg3LDcgKzY0ODcsNyBAQCB2b2lkIFdlYlBhZ2VQ
cm94eTo6aW5zdGFsbFZpZXdTdGF0ZUNoYW5nCiAgICAgICAgIEJsb2NrX3JlbGVhc2UoY29waWVk
Q29tcGxldGlvbkhhbmRsZXIpOwogICAgIH0sIG1fcHJvY2Vzcy0+dGhyb3R0bGVyKCkuYmFja2dy
b3VuZEFjdGl2aXR5VG9rZW4oKSk7CiAgICAgdWludDY0X3QgY2FsbGJhY2tJRCA9IG1fY2FsbGJh
Y2tzLnB1dChXVEZNb3ZlKHZvaWRDYWxsYmFjaykpOwotICAgIG1fbmV4dFZpZXdTdGF0ZUNoYW5n
ZUNhbGxiYWNrcy5hcHBlbmQoY2FsbGJhY2tJRCk7CisgICAgbV9uZXh0QWN0aXZpdHlTdGF0ZUNo
YW5nZUNhbGxiYWNrcy5hcHBlbmQoY2FsbGJhY2tJRCk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5
OjpoYW5kbGVBY2NlcHRlZENhbmRpZGF0ZShXZWJDb3JlOjpUZXh0Q2hlY2tpbmdSZXN1bHQgYWNj
ZXB0ZWRDYW5kaWRhdGUpCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVBy
b3h5LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94
eS5oCShyZXZpc2lvbiAyMDgxOTcpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFn
ZVByb3h5LmgJKHdvcmtpbmcgY29weSkKQEAgLTczLDcgKzczLDcgQEAKICNpbmNsdWRlIDxXZWJD
b3JlL1RleHRDaGVja2luZy5oPgogI2luY2x1ZGUgPFdlYkNvcmUvVGV4dEdyYW51bGFyaXR5Lmg+
CiAjaW5jbHVkZSA8V2ViQ29yZS9Vc2VySW50ZXJmYWNlTGF5b3V0RGlyZWN0aW9uLmg+Ci0jaW5j
bHVkZSA8V2ViQ29yZS9WaWV3U3RhdGUuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL0FjdGl2aXR5U3Rh
dGUuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1Zpc2libGVTZWxlY3Rpb24uaD4KICNpbmNsdWRlIDxt
ZW1vcnk+CiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KQEAgLTQyOCwxNiArNDI4LDE2IEBAIHB1
YmxpYzoKICAgICB2b2lkIHNldERlbGVnYXRlc1Njcm9sbGluZyhib29sIGRlbGVnYXRlc1Njcm9s
bGluZykgeyBtX2RlbGVnYXRlc1Njcm9sbGluZyA9IGRlbGVnYXRlc1Njcm9sbGluZzsgfQogICAg
IGJvb2wgZGVsZWdhdGVzU2Nyb2xsaW5nKCkgY29uc3QgeyByZXR1cm4gbV9kZWxlZ2F0ZXNTY3Jv
bGxpbmc7IH0KIAotICAgIGVudW0gY2xhc3MgVmlld1N0YXRlQ2hhbmdlRGlzcGF0Y2hNb2RlIHsg
RGVmZXJyYWJsZSwgSW1tZWRpYXRlIH07Ci0gICAgdm9pZCB2aWV3U3RhdGVEaWRDaGFuZ2UoV2Vi
Q29yZTo6Vmlld1N0YXRlOjpGbGFncyBtYXlIYXZlQ2hhbmdlZCwgYm9vbCB3YW50c1N5bmNocm9u
b3VzUmVwbHkgPSBmYWxzZSwgVmlld1N0YXRlQ2hhbmdlRGlzcGF0Y2hNb2RlID0gVmlld1N0YXRl
Q2hhbmdlRGlzcGF0Y2hNb2RlOjpEZWZlcnJhYmxlKTsKLSAgICBib29sIGlzSW5XaW5kb3coKSBj
b25zdCB7IHJldHVybiBtX3ZpZXdTdGF0ZSAmIFdlYkNvcmU6OlZpZXdTdGF0ZTo6SXNJbldpbmRv
dzsgfQotICAgIHZvaWQgd2FpdEZvckRpZFVwZGF0ZVZpZXdTdGF0ZSgpOwotICAgIHZvaWQgZGlk
VXBkYXRlVmlld1N0YXRlKCkgeyBtX3dhaXRpbmdGb3JEaWRVcGRhdGVWaWV3U3RhdGUgPSBmYWxz
ZTsgfQorICAgIGVudW0gY2xhc3MgQWN0aXZpdHlTdGF0ZUNoYW5nZURpc3BhdGNoTW9kZSB7IERl
ZmVycmFibGUsIEltbWVkaWF0ZSB9OworICAgIHZvaWQgYWN0aXZpdHlTdGF0ZURpZENoYW5nZShX
ZWJDb3JlOjpBY3Rpdml0eVN0YXRlOjpGbGFncyBtYXlIYXZlQ2hhbmdlZCwgYm9vbCB3YW50c1N5
bmNocm9ub3VzUmVwbHkgPSBmYWxzZSwgQWN0aXZpdHlTdGF0ZUNoYW5nZURpc3BhdGNoTW9kZSA9
IEFjdGl2aXR5U3RhdGVDaGFuZ2VEaXNwYXRjaE1vZGU6OkRlZmVycmFibGUpOworICAgIGJvb2wg
aXNJbldpbmRvdygpIGNvbnN0IHsgcmV0dXJuIG1fYWN0aXZpdHlTdGF0ZSAmIFdlYkNvcmU6OkFj
dGl2aXR5U3RhdGU6OklzSW5XaW5kb3c7IH0KKyAgICB2b2lkIHdhaXRGb3JEaWRVcGRhdGVBY3Rp
dml0eVN0YXRlKCk7CisgICAgdm9pZCBkaWRVcGRhdGVBY3Rpdml0eVN0YXRlKCkgeyBtX3dhaXRp
bmdGb3JEaWRVcGRhdGVBY3Rpdml0eVN0YXRlID0gZmFsc2U7IH0KIAogICAgIHZvaWQgbGF5ZXJI
b3N0aW5nTW9kZURpZENoYW5nZSgpOwogCiAgICAgV2ViQ29yZTo6SW50U2l6ZSB2aWV3U2l6ZSgp
IGNvbnN0OwotICAgIGJvb2wgaXNWaWV3VmlzaWJsZSgpIGNvbnN0IHsgcmV0dXJuIG1fdmlld1N0
YXRlICYgV2ViQ29yZTo6Vmlld1N0YXRlOjpJc1Zpc2libGU7IH0KKyAgICBib29sIGlzVmlld1Zp
c2libGUoKSBjb25zdCB7IHJldHVybiBtX2FjdGl2aXR5U3RhdGUgJiBXZWJDb3JlOjpBY3Rpdml0
eVN0YXRlOjpJc1Zpc2libGU7IH0KICAgICBib29sIGlzVmlld1dpbmRvd0FjdGl2ZSgpIGNvbnN0
OwogCiAgICAgdm9pZCBhZGRNSU1FVHlwZVdpdGhDdXN0b21Db250ZW50UHJvdmlkZXIoY29uc3Qg
U3RyaW5nJiBtaW1lVHlwZSk7CkBAIC0xMDY2LDcgKzEwNjYsNyBAQCBwdWJsaWM6CiAKICAgICB2
b2lkKiBpbW1lZGlhdGVBY3Rpb25BbmltYXRpb25Db250cm9sbGVyRm9ySGl0VGVzdFJlc3VsdChS
ZWZQdHI8QVBJOjpIaXRUZXN0UmVzdWx0PiwgdWludDY0X3QsIFJlZlB0cjxBUEk6Ok9iamVjdD4p
OwogCi0gICAgdm9pZCBpbnN0YWxsVmlld1N0YXRlQ2hhbmdlQ29tcGxldGlvbkhhbmRsZXIodm9p
ZCheY29tcGxldGlvbkhhbmRsZXIpKCkpOworICAgIHZvaWQgaW5zdGFsbEFjdGl2aXR5U3RhdGVD
aGFuZ2VDb21wbGV0aW9uSGFuZGxlcih2b2lkKF5jb21wbGV0aW9uSGFuZGxlcikoKSk7CiAKICAg
ICB2b2lkIGhhbmRsZUFjY2VwdGVkQ2FuZGlkYXRlKFdlYkNvcmU6OlRleHRDaGVja2luZ1Jlc3Vs
dCk7CiAgICAgdm9pZCBkaWRIYW5kbGVBY2NlcHRlZENhbmRpZGF0ZSgpOwpAQCAtMTE0OCw3ICsx
MTQ4LDcgQEAgcHJpdmF0ZToKICAgICBXZWJQYWdlUHJveHkoUGFnZUNsaWVudCYsIFdlYlByb2Nl
c3NQcm94eSYsIHVpbnQ2NF90IHBhZ2VJRCwgUmVmPEFQSTo6UGFnZUNvbmZpZ3VyYXRpb24+JiYp
OwogICAgIHZvaWQgcGxhdGZvcm1Jbml0aWFsaXplKCk7CiAKLSAgICB2b2lkIHVwZGF0ZVZpZXdT
dGF0ZShXZWJDb3JlOjpWaWV3U3RhdGU6OkZsYWdzIGZsYWdzVG9VcGRhdGUgPSBXZWJDb3JlOjpW
aWV3U3RhdGU6OkFsbEZsYWdzKTsKKyAgICB2b2lkIHVwZGF0ZUFjdGl2aXR5U3RhdGUoV2ViQ29y
ZTo6QWN0aXZpdHlTdGF0ZTo6RmxhZ3MgZmxhZ3NUb1VwZGF0ZSA9IFdlYkNvcmU6OkFjdGl2aXR5
U3RhdGU6OkFsbEZsYWdzKTsKICAgICB2b2lkIHVwZGF0ZVRocm90dGxlU3RhdGUoKTsKICAgICB2
b2lkIHVwZGF0ZUhpZGRlblBhZ2VUaHJvdHRsaW5nQXV0b0luY3JlYXNlcygpOwogCkBAIC0xNTMz
LDcgKzE1MzMsNyBAQCBwcml2YXRlOgogCiAgICAgV2ViUHJlZmVyZW5jZXNTdG9yZSBwcmVmZXJl
bmNlc1N0b3JlKCkgY29uc3Q7CiAKLSAgICB2b2lkIGRpc3BhdGNoVmlld1N0YXRlQ2hhbmdlKCk7
CisgICAgdm9pZCBkaXNwYXRjaEFjdGl2aXR5U3RhdGVDaGFuZ2UoKTsKICAgICB2b2lkIHZpZXdE
aWRMZWF2ZVdpbmRvdygpOwogICAgIHZvaWQgdmlld0RpZEVudGVyV2luZG93KCk7CiAKQEAgLTE2
NTgsNyArMTY1OCw3IEBAIHByaXZhdGU6CiAKICAgICBVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVz
dE1hbmFnZXJQcm94eSBtX3VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlcjsKIAotICAg
IFdlYkNvcmU6OlZpZXdTdGF0ZTo6RmxhZ3MgbV92aWV3U3RhdGU7CisgICAgV2ViQ29yZTo6QWN0
aXZpdHlTdGF0ZTo6RmxhZ3MgbV9hY3Rpdml0eVN0YXRlOwogICAgIGJvb2wgbV92aWV3V2FzRXZl
ckluV2luZG93OwogI2lmIFBMQVRGT1JNKElPUykKICAgICBib29sIG1fYWxsb3dzTWVkaWFEb2N1
bWVudElubGluZVBsYXliYWNrIHsgZmFsc2UgfTsKQEAgLTE4NjAsMTQgKzE4NjAsMTQgQEAgcHJp
dmF0ZToKICAgICBXZWJDb3JlOjpNZWRpYVByb2R1Y2VyOjpNdXRlZFN0YXRlRmxhZ3MgbV9tdXRl
ZFN0YXRlIHsgV2ViQ29yZTo6TWVkaWFQcm9kdWNlcjo6Tm9uZU11dGVkIH07CiAgICAgYm9vbCBt
X21heVN0YXJ0TWVkaWFXaGVuSW5XaW5kb3c7CiAKLSAgICBib29sIG1fd2FpdGluZ0ZvckRpZFVw
ZGF0ZVZpZXdTdGF0ZTsKKyAgICBib29sIG1fd2FpdGluZ0ZvckRpZFVwZGF0ZUFjdGl2aXR5U3Rh
dGU7CiAKICAgICBib29sIG1fc2hvdWxkU2NhbGVWaWV3VG9GaXREb2N1bWVudCB7IGZhbHNlIH07
CiAgICAgYm9vbCBtX3N1cHByZXNzQXV0b21hdGljTmF2aWdhdGlvblNuYXBzaG90dGluZyB7IGZh
bHNlIH07CiAKICNpZiBQTEFURk9STShDT0NPQSkKICAgICBIYXNoTWFwPFN0cmluZywgU3RyaW5n
PiBtX3RlbXBvcmFyeVBERkZpbGVzOwotICAgIHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpSdW5M
b29wT2JzZXJ2ZXI+IG1fdmlld1N0YXRlQ2hhbmdlRGlzcGF0Y2hlcjsKKyAgICBzdGQ6OnVuaXF1
ZV9wdHI8V2ViQ29yZTo6UnVuTG9vcE9ic2VydmVyPiBtX2FjdGl2aXR5U3RhdGVDaGFuZ2VEaXNw
YXRjaGVyOwogCiAgICAgc3RkOjp1bmlxdWVfcHRyPFJlbW90ZUxheWVyVHJlZVNjcm9sbGluZ1Bl
cmZvcm1hbmNlRGF0YT4gbV9zY3JvbGxpbmdQZXJmb3JtYW5jZURhdGE7CiAgICAgYm9vbCBtX3Nj
cm9sbFBlcmZvcm1hbmNlRGF0YUNvbGxlY3Rpb25FbmFibGVkOwpAQCAtMTg4Miw5ICsxODgyLDkg
QEAgcHJpdmF0ZToKICAgICB1aW50NjRfdCBtX25hdmlnYXRpb25JRDsKIAogICAgIFdlYlByZWZl
cmVuY2VzU3RvcmU6OlZhbHVlTWFwIG1fY29uZmlndXJhdGlvblByZWZlcmVuY2VWYWx1ZXM7Ci0g
ICAgV2ViQ29yZTo6Vmlld1N0YXRlOjpGbGFncyBtX3BvdGVudGlhbGx5Q2hhbmdlZFZpZXdTdGF0
ZUZsYWdzOwotICAgIGJvb2wgbV92aWV3U3RhdGVDaGFuZ2VXYW50c1N5bmNocm9ub3VzUmVwbHk7
Ci0gICAgVmVjdG9yPHVpbnQ2NF90PiBtX25leHRWaWV3U3RhdGVDaGFuZ2VDYWxsYmFja3M7Cisg
ICAgV2ViQ29yZTo6QWN0aXZpdHlTdGF0ZTo6RmxhZ3MgbV9wb3RlbnRpYWxseUNoYW5nZWRBY3Rp
dml0eVN0YXRlRmxhZ3M7CisgICAgYm9vbCBtX2FjdGl2aXR5U3RhdGVDaGFuZ2VXYW50c1N5bmNo
cm9ub3VzUmVwbHk7CisgICAgVmVjdG9yPHVpbnQ2NF90PiBtX25leHRBY3Rpdml0eVN0YXRlQ2hh
bmdlQ2FsbGJhY2tzOwogCiAgICAgV2ViQ29yZTo6TWVkaWFQcm9kdWNlcjo6TWVkaWFTdGF0ZUZs
YWdzIG1fbWVkaWFTdGF0ZSB7IFdlYkNvcmU6Ok1lZGlhUHJvZHVjZXI6OklzTm90UGxheWluZyB9
OwogCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2Vz
LmluCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHku
bWVzc2FnZXMuaW4JKHJldmlzaW9uIDIwODE5NykKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW4JKHdvcmtpbmcgY29weSkKQEAgLTQwNyw3ICs0MDcs
NyBAQCBtZXNzYWdlcyAtPiBXZWJQYWdlUHJveHkgewogICAgIEZpbmRQbHVnaW4oU3RyaW5nIG1p
bWVUeXBlLCB1aW50MzJfdCBwcm9jZXNzVHlwZSwgU3RyaW5nIHVybFN0cmluZywgU3RyaW5nIGZy
YW1lVVJMU3RyaW5nLCBTdHJpbmcgcGFnZVVSTFN0cmluZywgYm9vbCBhbGxvd09ubHlBcHBsaWNh
dGlvblBsdWdpbnMpIC0+ICh1aW50NjRfdCBwbHVnaW5Qcm9jZXNzVG9rZW4sIFN0cmluZyBuZXdN
SU1FVHlwZSwgdWludDMyX3QgcGx1Z2luTG9hZFBvbGljeSwgU3RyaW5nIHVuYXZhaWxhYmlsaXR5
RGVzY3JpcHRpb24pCiAjZW5kaWYKIAotICAgIERpZFVwZGF0ZVZpZXdTdGF0ZSgpCisgICAgRGlk
VXBkYXRlQWN0aXZpdHlTdGF0ZSgpCiAKICAgICBEaWRTYXZlVG9QYWdlQ2FjaGUoKQogCkluZGV4
OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcAkocmV2aXNp
b24gMjA4MTk3KQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTcxNSw3ICs3MTUsNyBAQCB2b2lkIFdlYlByb2Nlc3NQcm94
eTo6cmVsZWFzZVBhZ2VDYWNoZSgpCiB2b2lkIFdlYlByb2Nlc3NQcm94eTo6d2luZG93U2VydmVy
Q29ubmVjdGlvblN0YXRlQ2hhbmdlZCgpCiB7CiAgICAgZm9yIChjb25zdCBhdXRvJiBwYWdlIDog
bV9wYWdlTWFwLnZhbHVlcygpKQotICAgICAgICBwYWdlLT52aWV3U3RhdGVEaWRDaGFuZ2UoVmll
d1N0YXRlOjpJc1Zpc3VhbGx5SWRsZSk7CisgICAgICAgIHBhZ2UtPmFjdGl2aXR5U3RhdGVEaWRD
aGFuZ2UoQWN0aXZpdHlTdGF0ZTo6SXNWaXN1YWxseUlkbGUpOwogfQogCiB2b2lkIFdlYlByb2Nl
c3NQcm94eTo6ZmV0Y2hXZWJzaXRlRGF0YShTZXNzaW9uSUQgc2Vzc2lvbklELCBPcHRpb25TZXQ8
V2Vic2l0ZURhdGFUeXBlPiBkYXRhVHlwZXMsIEZ1bmN0aW9uPHZvaWQgKFdlYnNpdGVEYXRhKT4g
Y29tcGxldGlvbkhhbmRsZXIpCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0Nv
Y29hL1dLV2ViVmlldy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL0NvY29hL1dLV2ViVmlldy5tbQkocmV2aXNpb24gMjA4MTk3KQorKysgU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0JKHdvcmtpbmcgY29weSkKQEAgLTE3
MzAsNyArMTczMCw3IEBAIC0gKEJPT0wpX3pvb21Ub1JlY3Q6KFdlYkNvcmU6OkZsb2F0UmVjdCkK
IAogLSAodm9pZClkaWRNb3ZlVG9XaW5kb3cKIHsKLSAgICBfcGFnZS0+dmlld1N0YXRlRGlkQ2hh
bmdlKFdlYkNvcmU6OlZpZXdTdGF0ZTo6QWxsRmxhZ3MpOworICAgIF9wYWdlLT5hY3Rpdml0eVN0
YXRlRGlkQ2hhbmdlKFdlYkNvcmU6OkFjdGl2aXR5U3RhdGU6OkFsbEZsYWdzKTsKIH0KIAogLSAo
dm9pZClzZXRPcGFxdWU6KEJPT0wpb3BhcXVlCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3QmFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlld0Jhc2UuY3BwCShyZXZpc2lvbiAy
MDgxOTcpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3
QmFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM4LDcgKzM4LDcgQEAKICNpbmNsdWRlICJOYXRp
dmVXZWJNb3VzZUV2ZW50LmgiCiAjaW5jbHVkZSAiTmF0aXZlV2ViV2hlZWxFdmVudC5oIgogI2lu
Y2x1ZGUgIlBhZ2VDbGllbnRJbXBsLmgiCi0jaW5jbHVkZSAiVmlld1N0YXRlLmgiCisjaW5jbHVk
ZSAiQWN0aXZpdHlTdGF0ZS5oIgogI2luY2x1ZGUgIldlYkV2ZW50RmFjdG9yeS5oIgogI2luY2x1
ZGUgIldlYkZ1bGxTY3JlZW5DbGllbnRHdGsuaCIKICNpbmNsdWRlICJXZWJJbnNwZWN0b3JQcm94
eS5oIgpAQCAtMTQ2LDE2ICsxNDYsMTYgQEAgdHlwZWRlZiBIYXNoTWFwPHVpbnQzMl90LCBHVW5p
cXVlUHRyPEdkawogCiBzdHJ1Y3QgX1dlYktpdFdlYlZpZXdCYXNlUHJpdmF0ZSB7CiAgICAgX1dl
YktpdFdlYlZpZXdCYXNlUHJpdmF0ZSgpCi0gICAgICAgIDogdXBkYXRlVmlld1N0YXRlVGltZXIo
UnVuTG9vcDo6bWFpbigpLCB0aGlzLCAmX1dlYktpdFdlYlZpZXdCYXNlUHJpdmF0ZTo6dXBkYXRl
Vmlld1N0YXRlVGltZXJGaXJlZCkKKyAgICAgICAgOiB1cGRhdGVBY3Rpdml0eVN0YXRlVGltZXIo
UnVuTG9vcDo6bWFpbigpLCB0aGlzLCAmX1dlYktpdFdlYlZpZXdCYXNlUHJpdmF0ZTo6dXBkYXRl
QWN0aXZpdHlTdGF0ZVRpbWVyRmlyZWQpCiAgICAgewogICAgIH0KIAotICAgIHZvaWQgdXBkYXRl
Vmlld1N0YXRlVGltZXJGaXJlZCgpCisgICAgdm9pZCB1cGRhdGVBY3Rpdml0eVN0YXRlVGltZXJG
aXJlZCgpCiAgICAgewogICAgICAgICBpZiAoIXBhZ2VQcm94eSkKICAgICAgICAgICAgIHJldHVy
bjsKLSAgICAgICAgcGFnZVByb3h5LT52aWV3U3RhdGVEaWRDaGFuZ2Uodmlld1N0YXRlRmxhZ3NU
b1VwZGF0ZSk7Ci0gICAgICAgIHZpZXdTdGF0ZUZsYWdzVG9VcGRhdGUgPSBWaWV3U3RhdGU6Ok5v
RmxhZ3M7CisgICAgICAgIHBhZ2VQcm94eS0+YWN0aXZpdHlTdGF0ZURpZENoYW5nZShhY3Rpdml0
eVN0YXRlRmxhZ3NUb1VwZGF0ZSk7CisgICAgICAgIGFjdGl2aXR5U3RhdGVGbGFnc1RvVXBkYXRl
ID0gQWN0aXZpdHlTdGF0ZTo6Tm9GbGFnczsKICAgICB9CiAKICAgICBXZWJLaXRXZWJWaWV3Q2hp
bGRyZW5NYXAgY2hpbGRyZW47CkBAIC0xODUsOSArMTg1LDkgQEAgc3RydWN0IF9XZWJLaXRXZWJW
aWV3QmFzZVByaXZhdGUgewogICAgIHVuc2lnbmVkIGxvbmcgdG9wbGV2ZWxXaW5kb3dSZWFsaXpl
ZElEOwogCiAgICAgLy8gVmlldyBTdGF0ZS4KLSAgICBWaWV3U3RhdGU6OkZsYWdzIHZpZXdTdGF0
ZTsKLSAgICBWaWV3U3RhdGU6OkZsYWdzIHZpZXdTdGF0ZUZsYWdzVG9VcGRhdGU7Ci0gICAgUnVu
TG9vcDo6VGltZXI8V2ViS2l0V2ViVmlld0Jhc2VQcml2YXRlPiB1cGRhdGVWaWV3U3RhdGVUaW1l
cjsKKyAgICBBY3Rpdml0eVN0YXRlOjpGbGFncyBhY3Rpdml0eVN0YXRlOworICAgIEFjdGl2aXR5
U3RhdGU6OkZsYWdzIGFjdGl2aXR5U3RhdGVGbGFnc1RvVXBkYXRlOworICAgIFJ1bkxvb3A6OlRp
bWVyPFdlYktpdFdlYlZpZXdCYXNlUHJpdmF0ZT4gdXBkYXRlQWN0aXZpdHlTdGF0ZVRpbWVyOwog
CiAgICAgV2ViS2l0V2ViVmlld0Jhc2VEb3dubG9hZFJlcXVlc3RIYW5kbGVyIGRvd25sb2FkSGFu
ZGxlcjsKIApAQCAtMjEyLDE0ICsyMTIsMTQgQEAgc3RydWN0IF9XZWJLaXRXZWJWaWV3QmFzZVBy
aXZhdGUgewogCiBXRUJLSVRfREVGSU5FX1RZUEUoV2ViS2l0V2ViVmlld0Jhc2UsIHdlYmtpdF93
ZWJfdmlld19iYXNlLCBHVEtfVFlQRV9DT05UQUlORVIpCiAKLXN0YXRpYyB2b2lkIHdlYmtpdFdl
YlZpZXdCYXNlU2NoZWR1bGVVcGRhdGVWaWV3U3RhdGUoV2ViS2l0V2ViVmlld0Jhc2UqIHdlYlZp
ZXdCYXNlLCBWaWV3U3RhdGU6OkZsYWdzIGZsYWdzVG9VcGRhdGUpCitzdGF0aWMgdm9pZCB3ZWJr
aXRXZWJWaWV3QmFzZVNjaGVkdWxlVXBkYXRlQWN0aXZpdHlTdGF0ZShXZWJLaXRXZWJWaWV3QmFz
ZSogd2ViVmlld0Jhc2UsIEFjdGl2aXR5U3RhdGU6OkZsYWdzIGZsYWdzVG9VcGRhdGUpCiB7CiAg
ICAgV2ViS2l0V2ViVmlld0Jhc2VQcml2YXRlKiBwcml2ID0gd2ViVmlld0Jhc2UtPnByaXY7Ci0g
ICAgcHJpdi0+dmlld1N0YXRlRmxhZ3NUb1VwZGF0ZSB8PSBmbGFnc1RvVXBkYXRlOwotICAgIGlm
IChwcml2LT51cGRhdGVWaWV3U3RhdGVUaW1lci5pc0FjdGl2ZSgpKQorICAgIHByaXYtPmFjdGl2
aXR5U3RhdGVGbGFnc1RvVXBkYXRlIHw9IGZsYWdzVG9VcGRhdGU7CisgICAgaWYgKHByaXYtPnVw
ZGF0ZUFjdGl2aXR5U3RhdGVUaW1lci5pc0FjdGl2ZSgpKQogICAgICAgICByZXR1cm47CiAKLSAg
ICBwcml2LT51cGRhdGVWaWV3U3RhdGVUaW1lci5zdGFydE9uZVNob3QoMCk7CisgICAgcHJpdi0+
dXBkYXRlQWN0aXZpdHlTdGF0ZVRpbWVyLnN0YXJ0T25lU2hvdCgwKTsKIH0KIAogc3RhdGljIGdi
b29sZWFuIHRvcGxldmVsV2luZG93Rm9jdXNJbkV2ZW50KEd0a1dpZGdldCogd2lkZ2V0LCBHZGtF
dmVudEZvY3VzKiwgV2ViS2l0V2ViVmlld0Jhc2UqIHdlYlZpZXdCYXNlKQpAQCAtMjI5LDExICsy
MjksMTEgQEAgc3RhdGljIGdib29sZWFuIHRvcGxldmVsV2luZG93Rm9jdXNJbkV2ZQogICAgICAg
ICByZXR1cm4gRkFMU0U7CiAKICAgICBXZWJLaXRXZWJWaWV3QmFzZVByaXZhdGUqIHByaXYgPSB3
ZWJWaWV3QmFzZS0+cHJpdjsKLSAgICBpZiAocHJpdi0+dmlld1N0YXRlICYgVmlld1N0YXRlOjpX
aW5kb3dJc0FjdGl2ZSkKKyAgICBpZiAocHJpdi0+YWN0aXZpdHlTdGF0ZSAmIEFjdGl2aXR5U3Rh
dGU6OldpbmRvd0lzQWN0aXZlKQogICAgICAgICByZXR1cm4gRkFMU0U7CiAKLSAgICBwcml2LT52
aWV3U3RhdGUgfD0gVmlld1N0YXRlOjpXaW5kb3dJc0FjdGl2ZTsKLSAgICB3ZWJraXRXZWJWaWV3
QmFzZVNjaGVkdWxlVXBkYXRlVmlld1N0YXRlKHdlYlZpZXdCYXNlLCBWaWV3U3RhdGU6OldpbmRv
d0lzQWN0aXZlKTsKKyAgICBwcml2LT5hY3Rpdml0eVN0YXRlIHw9IEFjdGl2aXR5U3RhdGU6Oldp
bmRvd0lzQWN0aXZlOworICAgIHdlYmtpdFdlYlZpZXdCYXNlU2NoZWR1bGVVcGRhdGVBY3Rpdml0
eVN0YXRlKHdlYlZpZXdCYXNlLCBBY3Rpdml0eVN0YXRlOjpXaW5kb3dJc0FjdGl2ZSk7CiAKICAg
ICByZXR1cm4gRkFMU0U7CiB9CkBAIC0yNDEsMTEgKzI0MSwxMSBAQCBzdGF0aWMgZ2Jvb2xlYW4g
dG9wbGV2ZWxXaW5kb3dGb2N1c0luRXZlCiBzdGF0aWMgZ2Jvb2xlYW4gdG9wbGV2ZWxXaW5kb3dG
b2N1c091dEV2ZW50KEd0a1dpZGdldCosIEdka0V2ZW50Rm9jdXMqLCBXZWJLaXRXZWJWaWV3QmFz
ZSogd2ViVmlld0Jhc2UpCiB7CiAgICAgV2ViS2l0V2ViVmlld0Jhc2VQcml2YXRlKiBwcml2ID0g
d2ViVmlld0Jhc2UtPnByaXY7Ci0gICAgaWYgKCEocHJpdi0+dmlld1N0YXRlICYgVmlld1N0YXRl
OjpXaW5kb3dJc0FjdGl2ZSkpCisgICAgaWYgKCEocHJpdi0+YWN0aXZpdHlTdGF0ZSAmIEFjdGl2
aXR5U3RhdGU6OldpbmRvd0lzQWN0aXZlKSkKICAgICAgICAgcmV0dXJuIEZBTFNFOwogCi0gICAg
cHJpdi0+dmlld1N0YXRlICY9IH5WaWV3U3RhdGU6OldpbmRvd0lzQWN0aXZlOwotICAgIHdlYmtp
dFdlYlZpZXdCYXNlU2NoZWR1bGVVcGRhdGVWaWV3U3RhdGUod2ViVmlld0Jhc2UsIFZpZXdTdGF0
ZTo6V2luZG93SXNBY3RpdmUpOworICAgIHByaXYtPmFjdGl2aXR5U3RhdGUgJj0gfkFjdGl2aXR5
U3RhdGU6OldpbmRvd0lzQWN0aXZlOworICAgIHdlYmtpdFdlYlZpZXdCYXNlU2NoZWR1bGVVcGRh
dGVBY3Rpdml0eVN0YXRlKHdlYlZpZXdCYXNlLCBBY3Rpdml0eVN0YXRlOjpXaW5kb3dJc0FjdGl2
ZSk7CiAKICAgICByZXR1cm4gRkFMU0U7CiB9CkBAIC0yNTcsMTQgKzI1NywxNCBAQCBzdGF0aWMg
Z2Jvb2xlYW4gdG9wbGV2ZWxXaW5kb3dTdGF0ZUV2ZW50CiAgICAgICAgIHJldHVybiBGQUxTRTsK
IAogICAgIGJvb2wgdmlzaWJsZSA9ICEoZXZlbnQtPm5ld193aW5kb3dfc3RhdGUgJiBHREtfV0lO
RE9XX1NUQVRFX0lDT05JRklFRCk7Ci0gICAgaWYgKCh2aXNpYmxlICYmIHByaXYtPnZpZXdTdGF0
ZSAmIFZpZXdTdGF0ZTo6SXNWaXNpYmxlKSB8fCAoIXZpc2libGUgJiYgIShwcml2LT52aWV3U3Rh
dGUgJiBWaWV3U3RhdGU6OklzVmlzaWJsZSkpKQorICAgIGlmICgodmlzaWJsZSAmJiBwcml2LT5h
Y3Rpdml0eVN0YXRlICYgQWN0aXZpdHlTdGF0ZTo6SXNWaXNpYmxlKSB8fCAoIXZpc2libGUgJiYg
IShwcml2LT5hY3Rpdml0eVN0YXRlICYgQWN0aXZpdHlTdGF0ZTo6SXNWaXNpYmxlKSkpCiAgICAg
ICAgIHJldHVybiBGQUxTRTsKIAogICAgIGlmICh2aXNpYmxlKQotICAgICAgICBwcml2LT52aWV3
U3RhdGUgfD0gVmlld1N0YXRlOjpJc1Zpc2libGU7CisgICAgICAgIHByaXYtPmFjdGl2aXR5U3Rh
dGUgfD0gQWN0aXZpdHlTdGF0ZTo6SXNWaXNpYmxlOwogICAgIGVsc2UKLSAgICAgICAgcHJpdi0+
dmlld1N0YXRlICY9IH5WaWV3U3RhdGU6OklzVmlzaWJsZTsKLSAgICB3ZWJraXRXZWJWaWV3QmFz
ZVNjaGVkdWxlVXBkYXRlVmlld1N0YXRlKHdlYlZpZXdCYXNlLCBWaWV3U3RhdGU6OklzVmlzaWJs
ZSk7CisgICAgICAgIHByaXYtPmFjdGl2aXR5U3RhdGUgJj0gfkFjdGl2aXR5U3RhdGU6OklzVmlz
aWJsZTsKKyAgICB3ZWJraXRXZWJWaWV3QmFzZVNjaGVkdWxlVXBkYXRlQWN0aXZpdHlTdGF0ZSh3
ZWJWaWV3QmFzZSwgQWN0aXZpdHlTdGF0ZTo6SXNWaXNpYmxlKTsKIAogICAgIHJldHVybiBGQUxT
RTsKIH0KQEAgLTMwNiwxNyArMzA2LDE3IEBAIHN0YXRpYyB2b2lkIHdlYmtpdFdlYlZpZXdCYXNl
U2V0VG9wbGV2ZWwKICAgICBwcml2LT50b3BsZXZlbE9uU2NyZWVuV2luZG93ID0gd2luZG93Owog
CiAgICAgaWYgKCFwcml2LT50b3BsZXZlbE9uU2NyZWVuV2luZG93KSB7Ci0gICAgICAgIFZpZXdT
dGF0ZTo6RmxhZ3MgZmxhZ3NUb1VwZGF0ZSA9IDA7Ci0gICAgICAgIGlmIChwcml2LT52aWV3U3Rh
dGUgJiBWaWV3U3RhdGU6OklzSW5XaW5kb3cpIHsKLSAgICAgICAgICAgIHByaXYtPnZpZXdTdGF0
ZSAmPSB+Vmlld1N0YXRlOjpJc0luV2luZG93OwotICAgICAgICAgICAgZmxhZ3NUb1VwZGF0ZSB8
PSBWaWV3U3RhdGU6OklzSW5XaW5kb3c7CisgICAgICAgIEFjdGl2aXR5U3RhdGU6OkZsYWdzIGZs
YWdzVG9VcGRhdGUgPSAwOworICAgICAgICBpZiAocHJpdi0+YWN0aXZpdHlTdGF0ZSAmIEFjdGl2
aXR5U3RhdGU6OklzSW5XaW5kb3cpIHsKKyAgICAgICAgICAgIHByaXYtPmFjdGl2aXR5U3RhdGUg
Jj0gfkFjdGl2aXR5U3RhdGU6OklzSW5XaW5kb3c7CisgICAgICAgICAgICBmbGFnc1RvVXBkYXRl
IHw9IEFjdGl2aXR5U3RhdGU6OklzSW5XaW5kb3c7CiAgICAgICAgIH0KLSAgICAgICAgaWYgKHBy
aXYtPnZpZXdTdGF0ZSAmIFZpZXdTdGF0ZTo6V2luZG93SXNBY3RpdmUpIHsKLSAgICAgICAgICAg
IHByaXYtPnZpZXdTdGF0ZSAmPSB+Vmlld1N0YXRlOjpXaW5kb3dJc0FjdGl2ZTsKLSAgICAgICAg
ICAgIGZsYWdzVG9VcGRhdGUgfD0gVmlld1N0YXRlOjpJc0luV2luZG93OworICAgICAgICBpZiAo
cHJpdi0+YWN0aXZpdHlTdGF0ZSAmIEFjdGl2aXR5U3RhdGU6OldpbmRvd0lzQWN0aXZlKSB7Cisg
ICAgICAgICAgICBwcml2LT5hY3Rpdml0eVN0YXRlICY9IH5BY3Rpdml0eVN0YXRlOjpXaW5kb3dJ
c0FjdGl2ZTsKKyAgICAgICAgICAgIGZsYWdzVG9VcGRhdGUgfD0gQWN0aXZpdHlTdGF0ZTo6SXNJ
bldpbmRvdzsKICAgICAgICAgfQogICAgICAgICBpZiAoZmxhZ3NUb1VwZGF0ZSkKLSAgICAgICAg
ICAgIHdlYmtpdFdlYlZpZXdCYXNlU2NoZWR1bGVVcGRhdGVWaWV3U3RhdGUod2ViVmlld0Jhc2Us
IGZsYWdzVG9VcGRhdGUpOworICAgICAgICAgICAgd2Via2l0V2ViVmlld0Jhc2VTY2hlZHVsZVVw
ZGF0ZUFjdGl2aXR5U3RhdGUod2ViVmlld0Jhc2UsIGZsYWdzVG9VcGRhdGUpOwogCiAgICAgICAg
IHJldHVybjsKICAgICB9CkBAIC02MzEsMjAgKzYzMSwyMCBAQCBzdGF0aWMgdm9pZCB3ZWJraXRX
ZWJWaWV3QmFzZU1hcChHdGtXaWRnCiAKICAgICBXZWJLaXRXZWJWaWV3QmFzZSogd2ViVmlld0Jh
c2UgPSBXRUJLSVRfV0VCX1ZJRVdfQkFTRSh3aWRnZXQpOwogICAgIFdlYktpdFdlYlZpZXdCYXNl
UHJpdmF0ZSogcHJpdiA9IHdlYlZpZXdCYXNlLT5wcml2OwotICAgIFZpZXdTdGF0ZTo6RmxhZ3Mg
ZmxhZ3NUb1VwZGF0ZSA9IDA7Ci0gICAgaWYgKCEocHJpdi0+dmlld1N0YXRlICYgVmlld1N0YXRl
OjpJc1Zpc2libGUpKQotICAgICAgICBmbGFnc1RvVXBkYXRlIHw9IFZpZXdTdGF0ZTo6SXNWaXNp
YmxlOworICAgIEFjdGl2aXR5U3RhdGU6OkZsYWdzIGZsYWdzVG9VcGRhdGUgPSAwOworICAgIGlm
ICghKHByaXYtPmFjdGl2aXR5U3RhdGUgJiBBY3Rpdml0eVN0YXRlOjpJc1Zpc2libGUpKQorICAg
ICAgICBmbGFnc1RvVXBkYXRlIHw9IEFjdGl2aXR5U3RhdGU6OklzVmlzaWJsZTsKICAgICBpZiAo
cHJpdi0+dG9wbGV2ZWxPblNjcmVlbldpbmRvdykgewotICAgICAgICBpZiAoIShwcml2LT52aWV3
U3RhdGUgJiBWaWV3U3RhdGU6OklzSW5XaW5kb3cpKQotICAgICAgICAgICAgZmxhZ3NUb1VwZGF0
ZSB8PSBWaWV3U3RhdGU6OklzSW5XaW5kb3c7Ci0gICAgICAgIGlmIChndGtfd2luZG93X2lzX2Fj
dGl2ZShHVEtfV0lORE9XKHByaXYtPnRvcGxldmVsT25TY3JlZW5XaW5kb3cpKSAmJiAhKHByaXYt
PnZpZXdTdGF0ZSAmIFZpZXdTdGF0ZTo6V2luZG93SXNBY3RpdmUpKQotICAgICAgICAgICAgZmxh
Z3NUb1VwZGF0ZSB8PSBWaWV3U3RhdGU6OldpbmRvd0lzQWN0aXZlOworICAgICAgICBpZiAoIShw
cml2LT5hY3Rpdml0eVN0YXRlICYgQWN0aXZpdHlTdGF0ZTo6SXNJbldpbmRvdykpCisgICAgICAg
ICAgICBmbGFnc1RvVXBkYXRlIHw9IEFjdGl2aXR5U3RhdGU6OklzSW5XaW5kb3c7CisgICAgICAg
IGlmIChndGtfd2luZG93X2lzX2FjdGl2ZShHVEtfV0lORE9XKHByaXYtPnRvcGxldmVsT25TY3Jl
ZW5XaW5kb3cpKSAmJiAhKHByaXYtPmFjdGl2aXR5U3RhdGUgJiBBY3Rpdml0eVN0YXRlOjpXaW5k
b3dJc0FjdGl2ZSkpCisgICAgICAgICAgICBmbGFnc1RvVXBkYXRlIHw9IEFjdGl2aXR5U3RhdGU6
OldpbmRvd0lzQWN0aXZlOwogICAgIH0KICAgICBpZiAoIWZsYWdzVG9VcGRhdGUpCiAgICAgICAg
IHJldHVybjsKIAotICAgIHByaXYtPnZpZXdTdGF0ZSB8PSBmbGFnc1RvVXBkYXRlOwotICAgIHdl
YmtpdFdlYlZpZXdCYXNlU2NoZWR1bGVVcGRhdGVWaWV3U3RhdGUod2ViVmlld0Jhc2UsIGZsYWdz
VG9VcGRhdGUpOworICAgIHByaXYtPmFjdGl2aXR5U3RhdGUgfD0gZmxhZ3NUb1VwZGF0ZTsKKyAg
ICB3ZWJraXRXZWJWaWV3QmFzZVNjaGVkdWxlVXBkYXRlQWN0aXZpdHlTdGF0ZSh3ZWJWaWV3QmFz
ZSwgZmxhZ3NUb1VwZGF0ZSk7CiB9CiAKIHN0YXRpYyB2b2lkIHdlYmtpdFdlYlZpZXdCYXNlVW5t
YXAoR3RrV2lkZ2V0KiB3aWRnZXQpCkBAIC02NTMsMTEgKzY1MywxMSBAQCBzdGF0aWMgdm9pZCB3
ZWJraXRXZWJWaWV3QmFzZVVubWFwKEd0a1dpCiAKICAgICBXZWJLaXRXZWJWaWV3QmFzZSogd2Vi
Vmlld0Jhc2UgPSBXRUJLSVRfV0VCX1ZJRVdfQkFTRSh3aWRnZXQpOwogICAgIFdlYktpdFdlYlZp
ZXdCYXNlUHJpdmF0ZSogcHJpdiA9IHdlYlZpZXdCYXNlLT5wcml2OwotICAgIGlmICghKHByaXYt
PnZpZXdTdGF0ZSAmIFZpZXdTdGF0ZTo6SXNWaXNpYmxlKSkKKyAgICBpZiAoIShwcml2LT5hY3Rp
dml0eVN0YXRlICYgQWN0aXZpdHlTdGF0ZTo6SXNWaXNpYmxlKSkKICAgICAgICAgcmV0dXJuOwog
Ci0gICAgcHJpdi0+dmlld1N0YXRlICY9IH5WaWV3U3RhdGU6OklzVmlzaWJsZTsKLSAgICB3ZWJr
aXRXZWJWaWV3QmFzZVNjaGVkdWxlVXBkYXRlVmlld1N0YXRlKHdlYlZpZXdCYXNlLCBWaWV3U3Rh
dGU6OklzVmlzaWJsZSk7CisgICAgcHJpdi0+YWN0aXZpdHlTdGF0ZSAmPSB+QWN0aXZpdHlTdGF0
ZTo6SXNWaXNpYmxlOworICAgIHdlYmtpdFdlYlZpZXdCYXNlU2NoZWR1bGVVcGRhdGVBY3Rpdml0
eVN0YXRlKHdlYlZpZXdCYXNlLCBBY3Rpdml0eVN0YXRlOjpJc1Zpc2libGUpOwogfQogCiBzdGF0
aWMgZ2Jvb2xlYW4gd2Via2l0V2ViVmlld0Jhc2VGb2N1c0luRXZlbnQoR3RrV2lkZ2V0KiB3aWRn
ZXQsIEdka0V2ZW50Rm9jdXMqIGV2ZW50KQpAQCAtMTM3OSw0NiArMTM3OSw0NiBAQCBHZGtFdmVu
dCogd2Via2l0V2ViVmlld0Jhc2VUYWtlQ29udGV4dE1lCiB2b2lkIHdlYmtpdFdlYlZpZXdCYXNl
U2V0Rm9jdXMoV2ViS2l0V2ViVmlld0Jhc2UqIHdlYlZpZXdCYXNlLCBib29sIGZvY3VzZWQpCiB7
CiAgICAgV2ViS2l0V2ViVmlld0Jhc2VQcml2YXRlKiBwcml2ID0gd2ViVmlld0Jhc2UtPnByaXY7
Ci0gICAgaWYgKChmb2N1c2VkICYmIHByaXYtPnZpZXdTdGF0ZSAmIFZpZXdTdGF0ZTo6SXNGb2N1
c2VkKSB8fCAoIWZvY3VzZWQgJiYgIShwcml2LT52aWV3U3RhdGUgJiBWaWV3U3RhdGU6OklzRm9j
dXNlZCkpKQorICAgIGlmICgoZm9jdXNlZCAmJiBwcml2LT5hY3Rpdml0eVN0YXRlICYgQWN0aXZp
dHlTdGF0ZTo6SXNGb2N1c2VkKSB8fCAoIWZvY3VzZWQgJiYgIShwcml2LT5hY3Rpdml0eVN0YXRl
ICYgQWN0aXZpdHlTdGF0ZTo6SXNGb2N1c2VkKSkpCiAgICAgICAgIHJldHVybjsKIAotICAgIFZp
ZXdTdGF0ZTo6RmxhZ3MgZmxhZ3NUb1VwZGF0ZSA9IFZpZXdTdGF0ZTo6SXNGb2N1c2VkOworICAg
IEFjdGl2aXR5U3RhdGU6OkZsYWdzIGZsYWdzVG9VcGRhdGUgPSBBY3Rpdml0eVN0YXRlOjpJc0Zv
Y3VzZWQ7CiAgICAgaWYgKGZvY3VzZWQpIHsKLSAgICAgICAgcHJpdi0+dmlld1N0YXRlIHw9IFZp
ZXdTdGF0ZTo6SXNGb2N1c2VkOworICAgICAgICBwcml2LT5hY3Rpdml0eVN0YXRlIHw9IEFjdGl2
aXR5U3RhdGU6OklzRm9jdXNlZDsKIAogICAgICAgICAvLyBJZiB0aGUgdmlldyBoYXMgcmVjZWl2
ZWQgdGhlIGZvY3VzIGFuZCB0aGUgd2luZG93IGlzIG5vdCBhY3RpdmUKICAgICAgICAgLy8gbWFy
ayB0aGUgY3VycmVudCB3aW5kb3cgYXMgYWN0aXZlIG5vdy4gVGhpcyBjYW4gaGFwcGVuIGlmIHRo
ZQogICAgICAgICAvLyB0b3BsZXZlbCB3aW5kb3cgaXMgYSBHVEtfV0lORE9XX1BPUFVQIGFuZCB0
aGUgZm9jdXMgaGFzIGJlZW4KICAgICAgICAgLy8gc2V0IHByb2dyYW1hdGljYWxseSBsaWtlIFdl
YktpdFRlc3RSdW5uZXIgZG9lcywgYmVjYXVzZSBQT1BVUAogICAgICAgICAvLyBjYW4ndCBiZSBm
b2N1c2VkLgotICAgICAgICBpZiAoIShwcml2LT52aWV3U3RhdGUgJiBWaWV3U3RhdGU6OldpbmRv
d0lzQWN0aXZlKSkgewotICAgICAgICAgICAgcHJpdi0+dmlld1N0YXRlIHw9IFZpZXdTdGF0ZTo6
V2luZG93SXNBY3RpdmU7Ci0gICAgICAgICAgICBmbGFnc1RvVXBkYXRlIHw9IFZpZXdTdGF0ZTo6
V2luZG93SXNBY3RpdmU7CisgICAgICAgIGlmICghKHByaXYtPmFjdGl2aXR5U3RhdGUgJiBBY3Rp
dml0eVN0YXRlOjpXaW5kb3dJc0FjdGl2ZSkpIHsKKyAgICAgICAgICAgIHByaXYtPmFjdGl2aXR5
U3RhdGUgfD0gQWN0aXZpdHlTdGF0ZTo6V2luZG93SXNBY3RpdmU7CisgICAgICAgICAgICBmbGFn
c1RvVXBkYXRlIHw9IEFjdGl2aXR5U3RhdGU6OldpbmRvd0lzQWN0aXZlOwogICAgICAgICB9CiAg
ICAgfSBlbHNlCi0gICAgICAgIHByaXYtPnZpZXdTdGF0ZSAmPSB+Vmlld1N0YXRlOjpJc0ZvY3Vz
ZWQ7CisgICAgICAgIHByaXYtPmFjdGl2aXR5U3RhdGUgJj0gfkFjdGl2aXR5U3RhdGU6OklzRm9j
dXNlZDsKIAotICAgIHdlYmtpdFdlYlZpZXdCYXNlU2NoZWR1bGVVcGRhdGVWaWV3U3RhdGUod2Vi
Vmlld0Jhc2UsIGZsYWdzVG9VcGRhdGUpOworICAgIHdlYmtpdFdlYlZpZXdCYXNlU2NoZWR1bGVV
cGRhdGVBY3Rpdml0eVN0YXRlKHdlYlZpZXdCYXNlLCBmbGFnc1RvVXBkYXRlKTsKIH0KIAogYm9v
bCB3ZWJraXRXZWJWaWV3QmFzZUlzSW5XaW5kb3dBY3RpdmUoV2ViS2l0V2ViVmlld0Jhc2UqIHdl
YlZpZXdCYXNlKQogewotICAgIHJldHVybiB3ZWJWaWV3QmFzZS0+cHJpdi0+dmlld1N0YXRlICYg
Vmlld1N0YXRlOjpXaW5kb3dJc0FjdGl2ZTsKKyAgICByZXR1cm4gd2ViVmlld0Jhc2UtPnByaXYt
PmFjdGl2aXR5U3RhdGUgJiBBY3Rpdml0eVN0YXRlOjpXaW5kb3dJc0FjdGl2ZTsKIH0KIAogYm9v
bCB3ZWJraXRXZWJWaWV3QmFzZUlzRm9jdXNlZChXZWJLaXRXZWJWaWV3QmFzZSogd2ViVmlld0Jh
c2UpCiB7Ci0gICAgcmV0dXJuIHdlYlZpZXdCYXNlLT5wcml2LT52aWV3U3RhdGUgJiBWaWV3U3Rh
dGU6OklzRm9jdXNlZDsKKyAgICByZXR1cm4gd2ViVmlld0Jhc2UtPnByaXYtPmFjdGl2aXR5U3Rh
dGUgJiBBY3Rpdml0eVN0YXRlOjpJc0ZvY3VzZWQ7CiB9CiAKIGJvb2wgd2Via2l0V2ViVmlld0Jh
c2VJc1Zpc2libGUoV2ViS2l0V2ViVmlld0Jhc2UqIHdlYlZpZXdCYXNlKQogewotICAgIHJldHVy
biB3ZWJWaWV3QmFzZS0+cHJpdi0+dmlld1N0YXRlICYgVmlld1N0YXRlOjpJc1Zpc2libGU7Cisg
ICAgcmV0dXJuIHdlYlZpZXdCYXNlLT5wcml2LT5hY3Rpdml0eVN0YXRlICYgQWN0aXZpdHlTdGF0
ZTo6SXNWaXNpYmxlOwogfQogCiBib29sIHdlYmtpdFdlYlZpZXdCYXNlSXNJbldpbmRvdyhXZWJL
aXRXZWJWaWV3QmFzZSogd2ViVmlld0Jhc2UpCiB7Ci0gICAgcmV0dXJuIHdlYlZpZXdCYXNlLT5w
cml2LT52aWV3U3RhdGUgJiBWaWV3U3RhdGU6OklzSW5XaW5kb3c7CisgICAgcmV0dXJuIHdlYlZp
ZXdCYXNlLT5wcml2LT5hY3Rpdml0eVN0YXRlICYgQWN0aXZpdHlTdGF0ZTo6SXNJbldpbmRvdzsK
IH0KIAogdm9pZCB3ZWJraXRXZWJWaWV3QmFzZVNldERvd25sb2FkUmVxdWVzdEhhbmRsZXIoV2Vi
S2l0V2ViVmlld0Jhc2UqIHdlYlZpZXdCYXNlLCBXZWJLaXRXZWJWaWV3QmFzZURvd25sb2FkUmVx
dWVzdEhhbmRsZXIgZG93bmxvYWRIYW5kbGVyKQpJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0NvY29hL1dlYlZpZXdJbXBsLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9Db2NvYS9XZWJWaWV3SW1wbC5tbQkocmV2aXNpb24gMjA4MTk3KQorKysgU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJbXBsLm1tCSh3b3JraW5nIGNvcHkpCkBA
IC04NCw3ICs4NCw3IEBACiAjaW1wb3J0IDxXZWJDb3JlL1NvZnRMaW5raW5nLmg+CiAjaW1wb3J0
IDxXZWJDb3JlL1RleHRBbHRlcm5hdGl2ZVdpdGhSYW5nZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9U
ZXh0VW5kb0luc2VydGlvbk1hcmt1cE1hYy5oPgotI2ltcG9ydCA8V2ViQ29yZS9WaWV3U3RhdGUu
aD4KKyNpbXBvcnQgPFdlYkNvcmUvQWN0aXZpdHlTdGF0ZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9X
ZWJBY3Rpb25EaXNhYmxpbmdDQUxheWVyRGVsZWdhdGUuaD4KICNpbXBvcnQgPFdlYkNvcmUvV2Vi
Q29yZUNBTGF5ZXJFeHRyYXMuaD4KICNpbXBvcnQgPFdlYkNvcmUvV2ViQ29yZUZ1bGxTY3JlZW5Q
bGFjZWhvbGRlclZpZXcuaD4KQEAgLTYwOSw3ICs2MDksNyBAQCBib29sIFdlYlZpZXdJbXBsOjpi
ZWNvbWVGaXJzdFJlc3BvbmRlcigpCiAgICAgbV9pbkJlY29tZUZpcnN0UmVzcG9uZGVyID0gdHJ1
ZTsKIAogICAgIHVwZGF0ZVNlY3VyZUlucHV0U3RhdGUoKTsKLSAgICBtX3BhZ2UtPnZpZXdTdGF0
ZURpZENoYW5nZShXZWJDb3JlOjpWaWV3U3RhdGU6OklzRm9jdXNlZCk7CisgICAgbV9wYWdlLT5h
Y3Rpdml0eVN0YXRlRGlkQ2hhbmdlKFdlYkNvcmU6OkFjdGl2aXR5U3RhdGU6OklzRm9jdXNlZCk7
CiAgICAgLy8gUmVzdG9yZSB0aGUgc2VsZWN0aW9uIGluIHRoZSBlZGl0YWJsZSByZWdpb24gaWYg
cmVzaWduaW5nIGZpcnN0IHJlc3BvbmRlciBjbGVhcmVkIHNlbGVjdGlvbi4KICAgICBtX3BhZ2Ut
PnJlc3RvcmVTZWxlY3Rpb25JbkZvY3VzZWRFZGl0YWJsZUVsZW1lbnQoKTsKIApAQCAtNjU2LDcg
KzY1Niw3IEBAIGJvb2wgV2ViVmlld0ltcGw6OnJlc2lnbkZpcnN0UmVzcG9uZGVyKCkKICAgICBp
ZiAoIW1fcGFnZS0+bWFpbnRhaW5zSW5hY3RpdmVTZWxlY3Rpb24oKSkKICAgICAgICAgbV9wYWdl
LT5jbGVhclNlbGVjdGlvbigpOwogCi0gICAgbV9wYWdlLT52aWV3U3RhdGVEaWRDaGFuZ2UoV2Vi
Q29yZTo6Vmlld1N0YXRlOjpJc0ZvY3VzZWQpOworICAgIG1fcGFnZS0+YWN0aXZpdHlTdGF0ZURp
ZENoYW5nZShXZWJDb3JlOjpBY3Rpdml0eVN0YXRlOjpJc0ZvY3VzZWQpOwogICAgIAogICAgIG1f
aW5SZXNpZ25GaXJzdFJlc3BvbmRlciA9IGZhbHNlOwogICAgIApAQCAtMTA1MSwxMiArMTA1MSwx
MiBAQCBmbG9hdCBXZWJWaWV3SW1wbDo6aW50cmluc2ljRGV2aWNlU2NhbGVGCiAKIHZvaWQgV2Vi
Vmlld0ltcGw6OndpbmRvd0RpZE9yZGVyT2ZmU2NyZWVuKCkKIHsKLSAgICBtX3BhZ2UtPnZpZXdT
dGF0ZURpZENoYW5nZShXZWJDb3JlOjpWaWV3U3RhdGU6OklzVmlzaWJsZSB8IFdlYkNvcmU6OlZp
ZXdTdGF0ZTo6V2luZG93SXNBY3RpdmUpOworICAgIG1fcGFnZS0+YWN0aXZpdHlTdGF0ZURpZENo
YW5nZShXZWJDb3JlOjpBY3Rpdml0eVN0YXRlOjpJc1Zpc2libGUgfCBXZWJDb3JlOjpBY3Rpdml0
eVN0YXRlOjpXaW5kb3dJc0FjdGl2ZSk7CiB9CiAKIHZvaWQgV2ViVmlld0ltcGw6OndpbmRvd0Rp
ZE9yZGVyT25TY3JlZW4oKQogewotICAgIG1fcGFnZS0+dmlld1N0YXRlRGlkQ2hhbmdlKFdlYkNv
cmU6OlZpZXdTdGF0ZTo6SXNWaXNpYmxlIHwgV2ViQ29yZTo6Vmlld1N0YXRlOjpXaW5kb3dJc0Fj
dGl2ZSk7CisgICAgbV9wYWdlLT5hY3Rpdml0eVN0YXRlRGlkQ2hhbmdlKFdlYkNvcmU6OkFjdGl2
aXR5U3RhdGU6OklzVmlzaWJsZSB8IFdlYkNvcmU6OkFjdGl2aXR5U3RhdGU6OldpbmRvd0lzQWN0
aXZlKTsKIH0KIAogdm9pZCBXZWJWaWV3SW1wbDo6d2luZG93RGlkQmVjb21lS2V5KE5TV2luZG93
ICprZXlXaW5kb3cpCkBAIC0xMDY2LDcgKzEwNjYsNyBAQCB2b2lkIFdlYlZpZXdJbXBsOjp3aW5k
b3dEaWRCZWNvbWVLZXkoTlNXCiAgICAgICAgIFVJR2FtZXBhZFByb3ZpZGVyOjpzaW5nbGV0b24o
KS52aWV3QmVjYW1lQWN0aXZlKG1fcGFnZS5nZXQoKSk7CiAjZW5kaWYKICAgICAgICAgdXBkYXRl
U2VjdXJlSW5wdXRTdGF0ZSgpOwotICAgICAgICBtX3BhZ2UtPnZpZXdTdGF0ZURpZENoYW5nZShX
ZWJDb3JlOjpWaWV3U3RhdGU6OldpbmRvd0lzQWN0aXZlKTsKKyAgICAgICAgbV9wYWdlLT5hY3Rp
dml0eVN0YXRlRGlkQ2hhbmdlKFdlYkNvcmU6OkFjdGl2aXR5U3RhdGU6OldpbmRvd0lzQWN0aXZl
KTsKICAgICB9CiB9CiAKQEAgLTEwNzcsMTggKzEwNzcsMTggQEAgdm9pZCBXZWJWaWV3SW1wbDo6
d2luZG93RGlkUmVzaWduS2V5KE5TVwogICAgICAgICBVSUdhbWVwYWRQcm92aWRlcjo6c2luZ2xl
dG9uKCkudmlld0JlY2FtZUluYWN0aXZlKG1fcGFnZS5nZXQoKSk7CiAjZW5kaWYKICAgICAgICAg
dXBkYXRlU2VjdXJlSW5wdXRTdGF0ZSgpOwotICAgICAgICBtX3BhZ2UtPnZpZXdTdGF0ZURpZENo
YW5nZShXZWJDb3JlOjpWaWV3U3RhdGU6OldpbmRvd0lzQWN0aXZlKTsKKyAgICAgICAgbV9wYWdl
LT5hY3Rpdml0eVN0YXRlRGlkQ2hhbmdlKFdlYkNvcmU6OkFjdGl2aXR5U3RhdGU6OldpbmRvd0lz
QWN0aXZlKTsKICAgICB9CiB9CiAKIHZvaWQgV2ViVmlld0ltcGw6OndpbmRvd0RpZE1pbmlhdHVy
aXplKCkKIHsKLSAgICBtX3BhZ2UtPnZpZXdTdGF0ZURpZENoYW5nZShXZWJDb3JlOjpWaWV3U3Rh
dGU6OklzVmlzaWJsZSk7CisgICAgbV9wYWdlLT5hY3Rpdml0eVN0YXRlRGlkQ2hhbmdlKFdlYkNv
cmU6OkFjdGl2aXR5U3RhdGU6OklzVmlzaWJsZSk7CiB9CiAKIHZvaWQgV2ViVmlld0ltcGw6Ondp
bmRvd0RpZERlbWluaWF0dXJpemUoKQogewotICAgIG1fcGFnZS0+dmlld1N0YXRlRGlkQ2hhbmdl
KFdlYkNvcmU6OlZpZXdTdGF0ZTo6SXNWaXNpYmxlKTsKKyAgICBtX3BhZ2UtPmFjdGl2aXR5U3Rh
dGVEaWRDaGFuZ2UoV2ViQ29yZTo6QWN0aXZpdHlTdGF0ZTo6SXNWaXNpYmxlKTsKIH0KIAogdm9p
ZCBXZWJWaWV3SW1wbDo6d2luZG93RGlkTW92ZSgpCkBAIC0xMTIzLDcgKzExMjMsNyBAQCB2b2lk
IFdlYlZpZXdJbXBsOjp3aW5kb3dEaWRDaGFuZ2VMYXllckhvCiAKIHZvaWQgV2ViVmlld0ltcGw6
OndpbmRvd0RpZENoYW5nZU9jY2x1c2lvblN0YXRlKCkKIHsKLSAgICBtX3BhZ2UtPnZpZXdTdGF0
ZURpZENoYW5nZShXZWJDb3JlOjpWaWV3U3RhdGU6OklzVmlzaWJsZSk7CisgICAgbV9wYWdlLT5h
Y3Rpdml0eVN0YXRlRGlkQ2hhbmdlKFdlYkNvcmU6OkFjdGl2aXR5U3RhdGU6OklzVmlzaWJsZSk7
CiB9CiAKIGJvb2wgV2ViVmlld0ltcGw6Om1pZ2h0QmVnaW5EcmFnV2hpbGVJbmFjdGl2ZSgpCkBA
IC0xMjE0LDEyICsxMjE0LDEyIEBAIHZvaWQgV2ViVmlld0ltcGw6OnZpZXdEaWRNb3ZlVG9XaW5k
b3coKQogICAgIGlmICh3aW5kb3cpIHsKICAgICAgICAgd2luZG93RGlkQ2hhbmdlU2NyZWVuKCk7
CiAKLSAgICAgICAgV2ViQ29yZTo6Vmlld1N0YXRlOjpGbGFncyB2aWV3U3RhdGVDaGFuZ2VzID0g
V2ViQ29yZTo6Vmlld1N0YXRlOjpXaW5kb3dJc0FjdGl2ZSB8IFdlYkNvcmU6OlZpZXdTdGF0ZTo6
SXNWaXNpYmxlOworICAgICAgICBXZWJDb3JlOjpBY3Rpdml0eVN0YXRlOjpGbGFncyBhY3Rpdml0
eVN0YXRlQ2hhbmdlcyA9IFdlYkNvcmU6OkFjdGl2aXR5U3RhdGU6OldpbmRvd0lzQWN0aXZlIHwg
V2ViQ29yZTo6QWN0aXZpdHlTdGF0ZTo6SXNWaXNpYmxlOwogICAgICAgICBpZiAobV9zaG91bGRE
ZWZlclZpZXdJbldpbmRvd0NoYW5nZXMpCiAgICAgICAgICAgICBtX3ZpZXdJbldpbmRvd0NoYW5n
ZVdhc0RlZmVycmVkID0gdHJ1ZTsKICAgICAgICAgZWxzZQotICAgICAgICAgICAgdmlld1N0YXRl
Q2hhbmdlcyB8PSBXZWJDb3JlOjpWaWV3U3RhdGU6OklzSW5XaW5kb3c7Ci0gICAgICAgIG1fcGFn
ZS0+dmlld1N0YXRlRGlkQ2hhbmdlKHZpZXdTdGF0ZUNoYW5nZXMpOworICAgICAgICAgICAgYWN0
aXZpdHlTdGF0ZUNoYW5nZXMgfD0gV2ViQ29yZTo6QWN0aXZpdHlTdGF0ZTo6SXNJbldpbmRvdzsK
KyAgICAgICAgbV9wYWdlLT5hY3Rpdml0eVN0YXRlRGlkQ2hhbmdlKGFjdGl2aXR5U3RhdGVDaGFu
Z2VzKTsKIAogICAgICAgICB1cGRhdGVXaW5kb3dBbmRWaWV3RnJhbWVzKCk7CiAKQEAgLTEyNDMs
MTIgKzEyNDMsMTIgQEAgdm9pZCBXZWJWaWV3SW1wbDo6dmlld0RpZE1vdmVUb1dpbmRvdygpCiAg
ICAgICAgIGlmIChtX2ltbWVkaWF0ZUFjdGlvbkdlc3R1cmVSZWNvZ25pemVyICYmICFbW21fdmll
dyBnZXN0dXJlUmVjb2duaXplcnNdIGNvbnRhaW5zT2JqZWN0Om1faW1tZWRpYXRlQWN0aW9uR2Vz
dHVyZVJlY29nbml6ZXIuZ2V0KCldICYmICFtX2lnbm9yZXNOb25XaGVlbEV2ZW50cyAmJiBtX2Fs
bG93c0xpbmtQcmV2aWV3KQogICAgICAgICAgICAgW21fdmlldyBhZGRHZXN0dXJlUmVjb2duaXpl
cjptX2ltbWVkaWF0ZUFjdGlvbkdlc3R1cmVSZWNvZ25pemVyLmdldCgpXTsKICAgICB9IGVsc2Ug
ewotICAgICAgICBXZWJDb3JlOjpWaWV3U3RhdGU6OkZsYWdzIHZpZXdTdGF0ZUNoYW5nZXMgPSBX
ZWJDb3JlOjpWaWV3U3RhdGU6OldpbmRvd0lzQWN0aXZlIHwgV2ViQ29yZTo6Vmlld1N0YXRlOjpJ
c1Zpc2libGU7CisgICAgICAgIFdlYkNvcmU6OkFjdGl2aXR5U3RhdGU6OkZsYWdzIGFjdGl2aXR5
U3RhdGVDaGFuZ2VzID0gV2ViQ29yZTo6QWN0aXZpdHlTdGF0ZTo6V2luZG93SXNBY3RpdmUgfCBX
ZWJDb3JlOjpBY3Rpdml0eVN0YXRlOjpJc1Zpc2libGU7CiAgICAgICAgIGlmIChtX3Nob3VsZERl
ZmVyVmlld0luV2luZG93Q2hhbmdlcykKICAgICAgICAgICAgIG1fdmlld0luV2luZG93Q2hhbmdl
V2FzRGVmZXJyZWQgPSB0cnVlOwogICAgICAgICBlbHNlCi0gICAgICAgICAgICB2aWV3U3RhdGVD
aGFuZ2VzIHw9IFdlYkNvcmU6OlZpZXdTdGF0ZTo6SXNJbldpbmRvdzsKLSAgICAgICAgbV9wYWdl
LT52aWV3U3RhdGVEaWRDaGFuZ2Uodmlld1N0YXRlQ2hhbmdlcyk7CisgICAgICAgICAgICBhY3Rp
dml0eVN0YXRlQ2hhbmdlcyB8PSBXZWJDb3JlOjpBY3Rpdml0eVN0YXRlOjpJc0luV2luZG93Owor
ICAgICAgICBtX3BhZ2UtPmFjdGl2aXR5U3RhdGVEaWRDaGFuZ2UoYWN0aXZpdHlTdGF0ZUNoYW5n
ZXMpOwogCiAgICAgICAgIFtOU0V2ZW50IHJlbW92ZU1vbml0b3I6bV9mbGFnc0NoYW5nZWRFdmVu
dE1vbml0b3JdOwogICAgICAgICBtX2ZsYWdzQ2hhbmdlZEV2ZW50TW9uaXRvciA9IG5pbDsKQEAg
LTEyNzgsMTcgKzEyNzgsMTcgQEAgdm9pZCBXZWJWaWV3SW1wbDo6dmlld0RpZENoYW5nZUJhY2tp
bmdQcgogCiB2b2lkIFdlYlZpZXdJbXBsOjp2aWV3RGlkSGlkZSgpCiB7Ci0gICAgbV9wYWdlLT52
aWV3U3RhdGVEaWRDaGFuZ2UoV2ViQ29yZTo6Vmlld1N0YXRlOjpJc1Zpc2libGUpOworICAgIG1f
cGFnZS0+YWN0aXZpdHlTdGF0ZURpZENoYW5nZShXZWJDb3JlOjpBY3Rpdml0eVN0YXRlOjpJc1Zp
c2libGUpOwogfQogCiB2b2lkIFdlYlZpZXdJbXBsOjp2aWV3RGlkVW5oaWRlKCkKIHsKLSAgICBt
X3BhZ2UtPnZpZXdTdGF0ZURpZENoYW5nZShXZWJDb3JlOjpWaWV3U3RhdGU6OklzVmlzaWJsZSk7
CisgICAgbV9wYWdlLT5hY3Rpdml0eVN0YXRlRGlkQ2hhbmdlKFdlYkNvcmU6OkFjdGl2aXR5U3Rh
dGU6OklzVmlzaWJsZSk7CiB9CiAKIHZvaWQgV2ViVmlld0ltcGw6OmFjdGl2ZVNwYWNlRGlkQ2hh
bmdlKCkKIHsKLSAgICBtX3BhZ2UtPnZpZXdTdGF0ZURpZENoYW5nZShXZWJDb3JlOjpWaWV3U3Rh
dGU6OklzVmlzaWJsZSk7CisgICAgbV9wYWdlLT5hY3Rpdml0eVN0YXRlRGlkQ2hhbmdlKFdlYkNv
cmU6OkFjdGl2aXR5U3RhdGU6OklzVmlzaWJsZSk7CiB9CiAKIE5TVmlldyAqV2ViVmlld0ltcGw6
OmhpdFRlc3QoQ0dQb2ludCBwb2ludCkKQEAgLTEzODMsNyArMTM4Myw3IEBAIHZvaWQgV2ViVmll
d0ltcGw6OmVuZERlZmVycmluZ1ZpZXdJbldpbmQKIAogICAgIGlmIChtX3ZpZXdJbldpbmRvd0No
YW5nZVdhc0RlZmVycmVkKSB7CiAgICAgICAgIGRpc3BhdGNoU2V0VG9wQ29udGVudEluc2V0KCk7
Ci0gICAgICAgIG1fcGFnZS0+dmlld1N0YXRlRGlkQ2hhbmdlKFdlYkNvcmU6OlZpZXdTdGF0ZTo6
SXNJbldpbmRvdyk7CisgICAgICAgIG1fcGFnZS0+YWN0aXZpdHlTdGF0ZURpZENoYW5nZShXZWJD
b3JlOjpBY3Rpdml0eVN0YXRlOjpJc0luV2luZG93KTsKICAgICAgICAgbV92aWV3SW5XaW5kb3dD
aGFuZ2VXYXNEZWZlcnJlZCA9IGZhbHNlOwogICAgIH0KIH0KQEAgLTEzOTksNyArMTM5OSw3IEBA
IHZvaWQgV2ViVmlld0ltcGw6OmVuZERlZmVycmluZ1ZpZXdJbldpbmQKIAogICAgIGlmIChtX3Zp
ZXdJbldpbmRvd0NoYW5nZVdhc0RlZmVycmVkKSB7CiAgICAgICAgIGRpc3BhdGNoU2V0VG9wQ29u
dGVudEluc2V0KCk7Ci0gICAgICAgIG1fcGFnZS0+dmlld1N0YXRlRGlkQ2hhbmdlKFdlYkNvcmU6
OlZpZXdTdGF0ZTo6SXNJbldpbmRvdyk7CisgICAgICAgIG1fcGFnZS0+YWN0aXZpdHlTdGF0ZURp
ZENoYW5nZShXZWJDb3JlOjpBY3Rpdml0eVN0YXRlOjpJc0luV2luZG93KTsKICAgICAgICAgbV92
aWV3SW5XaW5kb3dDaGFuZ2VXYXNEZWZlcnJlZCA9IGZhbHNlOwogICAgIH0KIH0KQEAgLTE0MTQs
NyArMTQxNCw3IEBAIHZvaWQgV2ViVmlld0ltcGw6OnByZXBhcmVGb3JNb3ZlVG9XaW5kb3cKICAg
ICBtX3Nob3VsZERlZmVyVmlld0luV2luZG93Q2hhbmdlcyA9IGZhbHNlOwogCiAgICAgYXV0byB3
ZWFrVGhpcyA9IGNyZWF0ZVdlYWtQdHIoKTsKLSAgICBtX3BhZ2UtPmluc3RhbGxWaWV3U3RhdGVD
aGFuZ2VDb21wbGV0aW9uSGFuZGxlcihbd2Vha1RoaXMsIGNvbXBsZXRpb25IYW5kbGVyXSgpIHsK
KyAgICBtX3BhZ2UtPmluc3RhbGxBY3Rpdml0eVN0YXRlQ2hhbmdlQ29tcGxldGlvbkhhbmRsZXIo
W3dlYWtUaGlzLCBjb21wbGV0aW9uSGFuZGxlcl0oKSB7CiAgICAgICAgIGNvbXBsZXRpb25IYW5k
bGVyKCk7CiAKICAgICAgICAgaWYgKCF3ZWFrVGhpcykKQEAgLTE0MjUsNyArMTQyNSw3IEBAIHZv
aWQgV2ViVmlld0ltcGw6OnByZXBhcmVGb3JNb3ZlVG9XaW5kb3cKICAgICB9KTsKIAogICAgIGRp
c3BhdGNoU2V0VG9wQ29udGVudEluc2V0KCk7Ci0gICAgbV9wYWdlLT52aWV3U3RhdGVEaWRDaGFu
Z2UoV2ViQ29yZTo6Vmlld1N0YXRlOjpJc0luV2luZG93LCBmYWxzZSwgV2ViUGFnZVByb3h5OjpW
aWV3U3RhdGVDaGFuZ2VEaXNwYXRjaE1vZGU6OkltbWVkaWF0ZSk7CisgICAgbV9wYWdlLT5hY3Rp
dml0eVN0YXRlRGlkQ2hhbmdlKFdlYkNvcmU6OkFjdGl2aXR5U3RhdGU6OklzSW5XaW5kb3csIGZh
bHNlLCBXZWJQYWdlUHJveHk6OkFjdGl2aXR5U3RhdGVDaGFuZ2VEaXNwYXRjaE1vZGU6OkltbWVk
aWF0ZSk7CiAgICAgbV92aWV3SW5XaW5kb3dDaGFuZ2VXYXNEZWZlcnJlZCA9IGZhbHNlOwogfQog
CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1dlYlZpZXcuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvV2ViVmlldy5jcHAJKHJldmlzaW9u
IDIwODE5NykKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvV2ViVmlldy5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTM4LDcgKzM4LDcgQEAKICNpbmNsdWRlICJJbnB1dE1ldGhvZENvbnRl
eHRFZmwuaCIKICNpbmNsdWRlICJOYXRpdmVXZWJNb3VzZUV2ZW50LmgiCiAjaW5jbHVkZSAiTm90
SW1wbGVtZW50ZWQuaCIKLSNpbmNsdWRlICJWaWV3U3RhdGUuaCIKKyNpbmNsdWRlICJBY3Rpdml0
eVN0YXRlLmgiCiAjaW5jbHVkZSAiV2ViQmFja0ZvcndhcmRMaXN0LmgiCiAjaW5jbHVkZSAiV2Vi
QmFja0ZvcndhcmRMaXN0SXRlbS5oIgogI2luY2x1ZGUgIldlYkNvbnRleHRNZW51UHJveHlFZmwu
aCIKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlldy5tbQo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXcu
bW0JKHJldmlzaW9uIDIwODE5NykKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9pb3MvV0tD
b250ZW50Vmlldy5tbQkod29ya2luZyBjb3B5KQpAQCAtNjAyLDcgKzYwMiw3IEBAIC0gKHZvaWQp
X2FwcGxpY2F0aW9uV2lsbFJlc2lnbkFjdGl2ZTooTlMKIC0gKHZvaWQpX2FwcGxpY2F0aW9uRGlk
RW50ZXJCYWNrZ3JvdW5kCiB7CiAgICAgX3BhZ2UtPmFwcGxpY2F0aW9uRGlkRW50ZXJCYWNrZ3Jv
dW5kKCk7Ci0gICAgX3BhZ2UtPnZpZXdTdGF0ZURpZENoYW5nZShWaWV3U3RhdGU6OkFsbEZsYWdz
ICYgflZpZXdTdGF0ZTo6SXNJbldpbmRvdyk7CisgICAgX3BhZ2UtPmFjdGl2aXR5U3RhdGVEaWRD
aGFuZ2UoQWN0aXZpdHlTdGF0ZTo6QWxsRmxhZ3MgJiB+QWN0aXZpdHlTdGF0ZTo6SXNJbldpbmRv
dyk7CiB9CiAKIC0gKHZvaWQpX2FwcGxpY2F0aW9uRGlkQ3JlYXRlV2luZG93Q29udGV4dApAQCAt
NjE5LDcgKzYxOSw3IEBAIC0gKHZvaWQpX2FwcGxpY2F0aW9uRGlkRmluaXNoU25hcHNob3R0aW4K
IC0gKHZvaWQpX2FwcGxpY2F0aW9uV2lsbEVudGVyRm9yZWdyb3VuZAogewogICAgIF9wYWdlLT5h
cHBsaWNhdGlvbldpbGxFbnRlckZvcmVncm91bmQoKTsKLSAgICBfcGFnZS0+dmlld1N0YXRlRGlk
Q2hhbmdlKFZpZXdTdGF0ZTo6QWxsRmxhZ3MgJiB+Vmlld1N0YXRlOjpJc0luV2luZG93LCB0cnVl
LCBXZWJQYWdlUHJveHk6OlZpZXdTdGF0ZUNoYW5nZURpc3BhdGNoTW9kZTo6SW1tZWRpYXRlKTsK
KyAgICBfcGFnZS0+YWN0aXZpdHlTdGF0ZURpZENoYW5nZShBY3Rpdml0eVN0YXRlOjpBbGxGbGFn
cyAmIH5BY3Rpdml0eVN0YXRlOjpJc0luV2luZG93LCB0cnVlLCBXZWJQYWdlUHJveHk6OkFjdGl2
aXR5U3RhdGVDaGFuZ2VEaXNwYXRjaE1vZGU6OkltbWVkaWF0ZSk7CiB9CiAKIC0gKHZvaWQpX2Fw
cGxpY2F0aW9uRGlkQmVjb21lQWN0aXZlOihOU05vdGlmaWNhdGlvbiopbm90aWZpY2F0aW9uCklu
ZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvaW9zL1dLUERGVmlldy5tbQo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvaW9zL1dLUERGVmlldy5tbQkocmV2aXNpb24g
MjA4MTk3KQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2lvcy9XS1BERlZpZXcubW0JKHdv
cmtpbmcgY29weSkKQEAgLTg3OCw3ICs4NzgsNyBAQCAtIChCT09MKWlzQmFja2dyb3VuZAogLSAo
dm9pZClfYXBwbGljYXRpb25EaWRFbnRlckJhY2tncm91bmQKIHsKICAgICBfd2ViVmlldy0+X3Bh
Z2UtPmFwcGxpY2F0aW9uRGlkRW50ZXJCYWNrZ3JvdW5kKCk7Ci0gICAgX3dlYlZpZXctPl9wYWdl
LT52aWV3U3RhdGVEaWRDaGFuZ2UoVmlld1N0YXRlOjpBbGxGbGFncyAmIH5WaWV3U3RhdGU6Oklz
SW5XaW5kb3cpOworICAgIF93ZWJWaWV3LT5fcGFnZS0+YWN0aXZpdHlTdGF0ZURpZENoYW5nZShB
Y3Rpdml0eVN0YXRlOjpBbGxGbGFncyAmIH5BY3Rpdml0eVN0YXRlOjpJc0luV2luZG93KTsKIH0K
IAogLSAodm9pZClfYXBwbGljYXRpb25EaWRDcmVhdGVXaW5kb3dDb250ZXh0CkBAIC04OTUsNyAr
ODk1LDcgQEAgLSAodm9pZClfYXBwbGljYXRpb25XaWxsRW50ZXJGb3JlZ3JvdW5kCiAgICAgX3dl
YlZpZXctPl9wYWdlLT5hcHBsaWNhdGlvbldpbGxFbnRlckZvcmVncm91bmQoKTsKICAgICBpZiAo
YXV0byBkcmF3aW5nQXJlYSA9IF93ZWJWaWV3LT5fcGFnZS0+ZHJhd2luZ0FyZWEoKSkKICAgICAg
ICAgZHJhd2luZ0FyZWEtPmhpZGVDb250ZW50VW50aWxBbnlVcGRhdGUoKTsKLSAgICBfd2ViVmll
dy0+X3BhZ2UtPnZpZXdTdGF0ZURpZENoYW5nZShWaWV3U3RhdGU6OkFsbEZsYWdzICYgflZpZXdT
dGF0ZTo6SXNJbldpbmRvdywgdHJ1ZSwgV2ViUGFnZVByb3h5OjpWaWV3U3RhdGVDaGFuZ2VEaXNw
YXRjaE1vZGU6OkltbWVkaWF0ZSk7CisgICAgX3dlYlZpZXctPl9wYWdlLT5hY3Rpdml0eVN0YXRl
RGlkQ2hhbmdlKEFjdGl2aXR5U3RhdGU6OkFsbEZsYWdzICYgfkFjdGl2aXR5U3RhdGU6OklzSW5X
aW5kb3csIHRydWUsIFdlYlBhZ2VQcm94eTo6QWN0aXZpdHlTdGF0ZUNoYW5nZURpc3BhdGNoTW9k
ZTo6SW1tZWRpYXRlKTsKIH0KIAogQGVuZApJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L2lvcy9XZWJQYWdlUHJveHlJT1MubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL2lvcy9XZWJQYWdlUHJveHlJT1MubW0JKHJldmlzaW9uIDIwODE5NykKKysrIFNvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9pb3MvV2ViUGFnZVByb3h5SU9TLm1tCSh3b3JraW5nIGNvcHkp
CkBAIC0zMDMsNyArMzAzLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnN5bmNocm9uaXplRHluYW1p
Y1ZpZQogICAgIC8vIElmIG1fZHluYW1pY1ZpZXdwb3J0U2l6ZVVwZGF0ZVdhaXRpbmdGb3JUYXJn
ZXQgaXMgZmFsc2UsIHdlIGFyZSB3YWl0aW5nIGZvciB0aGUgbmV4dCB2YWxpZCBmcmFtZSB3aXRo
IHRoZSBob3BlIGl0IGlzIHRoZSBvbmUgZm9yIHRoZSBuZXcgdGFyZ2V0LgogICAgIC8vIElmIG1f
ZHluYW1pY1ZpZXdwb3J0U2l6ZVVwZGF0ZVdhaXRpbmdGb3JUYXJnZXQgaXMgc3RpbGwgdHJ1ZSwg
dGhpcyBpcyBhIGRlc3BlcmF0ZSBhdHRlbXB0IHRvIGdldCB0aGUgdmFsaWQgZnJhbWUgYmVmb3Jl
IGZpbmlzaGluZyB0aGUgYW5pbWF0aW9uLgogICAgIGlmIChtX2R5bmFtaWNWaWV3cG9ydFNpemVV
cGRhdGVXYWl0aW5nRm9yTGF5ZXJUcmVlQ29tbWl0KQotICAgICAgICBtX2RyYXdpbmdBcmVhLT53
YWl0Rm9yRGlkVXBkYXRlVmlld1N0YXRlKCk7CisgICAgICAgIG1fZHJhd2luZ0FyZWEtPndhaXRG
b3JEaWRVcGRhdGVBY3Rpdml0eVN0YXRlKCk7CiAKICAgICBtX2R5bmFtaWNWaWV3cG9ydFNpemVV
cGRhdGVXYWl0aW5nRm9yVGFyZ2V0ID0gZmFsc2U7CiAgICAgbV9keW5hbWljVmlld3BvcnRTaXpl
VXBkYXRlV2FpdGluZ0ZvckxheWVyVHJlZUNvbW1pdCA9IGZhbHNlOwpJbmRleDogU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL21hYy9SZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYVByb3h5LmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9SZW1vdGVMYXllclRyZWVE
cmF3aW5nQXJlYVByb3h5LmgJKHJldmlzaW9uIDIwODE5NykKKysrIFNvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9tYWMvUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWFQcm94eS5oCSh3b3JraW5nIGNv
cHkpCkBAIC03Myw3ICs3Myw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCB1cGRhdGVEZWJ1Z0luZGlj
YXRvclBvc2l0aW9uKCk7CiAgICAgdm9pZCBpbml0aWFsaXplRGVidWdJbmRpY2F0b3IoKTsKIAot
ICAgIHZvaWQgd2FpdEZvckRpZFVwZGF0ZVZpZXdTdGF0ZSgpIG92ZXJyaWRlOworICAgIHZvaWQg
d2FpdEZvckRpZFVwZGF0ZUFjdGl2aXR5U3RhdGUoKSBvdmVycmlkZTsKICAgICB2b2lkIGhpZGVD
b250ZW50VW50aWxQZW5kaW5nVXBkYXRlKCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBoaWRlQ29udGVu
dFVudGlsQW55VXBkYXRlKCkgb3ZlcnJpZGU7CiAgICAgYm9vbCBoYXNWaXNpYmxlQ29udGVudCgp
IGNvbnN0IG92ZXJyaWRlOwpJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9SZW1v
dGVMYXllclRyZWVEcmF3aW5nQXJlYVByb3h5Lm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9tYWMvUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWFQcm94eS5tbQkocmV2
aXNpb24gMjA4MTk3KQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9SZW1vdGVMYXll
clRyZWVEcmF3aW5nQXJlYVByb3h5Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC00MTgsMTggKzQxOCwx
OCBAQCB2b2lkIFJlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhUHJveHk6OmRpCiAKICAgICBtX2xh
c3RWaXNpYmxlVHJhbnNhY3Rpb25JRCA9IG1fdHJhbnNhY3Rpb25JREZvclBlbmRpbmdDQUNvbW1p
dDsKIAotICAgIG1fd2ViUGFnZVByb3h5LmRpZFVwZGF0ZVZpZXdTdGF0ZSgpOworICAgIG1fd2Vi
UGFnZVByb3h5LmRpZFVwZGF0ZUFjdGl2aXR5U3RhdGUoKTsKIH0KIAotdm9pZCBSZW1vdGVMYXll
clRyZWVEcmF3aW5nQXJlYVByb3h5Ojp3YWl0Rm9yRGlkVXBkYXRlVmlld1N0YXRlKCkKK3ZvaWQg
UmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWFQcm94eTo6d2FpdEZvckRpZFVwZGF0ZUFjdGl2aXR5
U3RhdGUoKQogewogICAgIC8vIFdlIG11c3Qgc2VuZCB0aGUgZGlkVXBkYXRlIG1lc3NhZ2UgYmVm
b3JlIGJsb2NraW5nIG9uIHRoZSBuZXh0IGNvbW1pdCwgb3RoZXJ3aXNlCiAgICAgLy8gd2UgY2Fu
IGJlIGd1YXJhbnRlZWQgdGhhdCB0aGUgbmV4dCBjb21taXQgd29uJ3QgY29tZSB1bnRpbCBhZnRl
ciB0aGUgd2FpdEZvckFuZERpc3BhdGNoSW1tZWRpYXRlbHkgdGltZXMgb3V0LgogICAgIGlmICht
X2RpZFVwZGF0ZU1lc3NhZ2VTdGF0ZSAhPSBEb2VzTm90TmVlZERpZFVwZGF0ZSkKICAgICAgICAg
ZGlkUmVmcmVzaERpc3BsYXkobW9ub3RvbmljYWxseUluY3JlYXNpbmdUaW1lKCkpOwogCi0gICAg
c3RhdGljIHN0ZDo6Y2hyb25vOjptaWxsaXNlY29uZHMgdmlld1N0YXRlVXBkYXRlVGltZW91dCA9
IFtdIHsKLSAgICAgICAgaWYgKGlkIHZhbHVlID0gW1tOU1VzZXJEZWZhdWx0cyBzdGFuZGFyZFVz
ZXJEZWZhdWx0c10gb2JqZWN0Rm9yS2V5OkAiV2ViS2l0T3ZlcnJpZGVWaWV3U3RhdGVVcGRhdGVU
aW1lb3V0Il0pCisgICAgc3RhdGljIHN0ZDo6Y2hyb25vOjptaWxsaXNlY29uZHMgYWN0aXZpdHlT
dGF0ZVVwZGF0ZVRpbWVvdXQgPSBbXSB7CisgICAgICAgIGlmIChpZCB2YWx1ZSA9IFtbTlNVc2Vy
RGVmYXVsdHMgc3RhbmRhcmRVc2VyRGVmYXVsdHNdIG9iamVjdEZvcktleTpAIldlYktpdE92ZXJy
aWRlQWN0aXZpdHlTdGF0ZVVwZGF0ZVRpbWVvdXQiXSkKICAgICAgICAgICAgIHJldHVybiBzdGQ6
OmNocm9ubzo6ZHVyYXRpb25fY2FzdDxzdGQ6OmNocm9ubzo6bWlsbGlzZWNvbmRzPihzdGQ6OmNo
cm9ubzo6ZHVyYXRpb248ZG91YmxlPihbdmFsdWUgZG91YmxlVmFsdWVdKSk7CiAKICNpZiBQTEFU
Rk9STShJT1MpCkBAIC00MzgsNyArNDM4LDcgQEAgdm9pZCBSZW1vdGVMYXllclRyZWVEcmF3aW5n
QXJlYVByb3h5Ojp3YQogICAgICAgICByZXR1cm4gc3RkOjpjaHJvbm86Om1pbGxpc2Vjb25kcygy
NTApOwogI2VuZGlmCiAgICAgfSgpOwotICAgIG1fd2ViUGFnZVByb3h5LnByb2Nlc3MoKS5jb25u
ZWN0aW9uKCktPndhaXRGb3JBbmREaXNwYXRjaEltbWVkaWF0ZWx5PE1lc3NhZ2VzOjpSZW1vdGVM
YXllclRyZWVEcmF3aW5nQXJlYVByb3h5OjpDb21taXRMYXllclRyZWU+KG1fd2ViUGFnZVByb3h5
LnBhZ2VJRCgpLCB2aWV3U3RhdGVVcGRhdGVUaW1lb3V0LCBJUEM6OldhaXRGb3JPcHRpb246Oklu
dGVycnVwdFdhaXRpbmdJZlN5bmNNZXNzYWdlQXJyaXZlcyk7CisgICAgbV93ZWJQYWdlUHJveHku
cHJvY2VzcygpLmNvbm5lY3Rpb24oKS0+d2FpdEZvckFuZERpc3BhdGNoSW1tZWRpYXRlbHk8TWVz
c2FnZXM6OlJlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhUHJveHk6OkNvbW1pdExheWVyVHJlZT4o
bV93ZWJQYWdlUHJveHkucGFnZUlEKCksIGFjdGl2aXR5U3RhdGVVcGRhdGVUaW1lb3V0LCBJUEM6
OldhaXRGb3JPcHRpb246OkludGVycnVwdFdhaXRpbmdJZlN5bmNNZXNzYWdlQXJyaXZlcyk7CiB9
CiAKIHZvaWQgUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWFQcm94eTo6ZGlzcGF0Y2hBZnRlckVu
c3VyaW5nRHJhd2luZyhzdGQ6OmZ1bmN0aW9uPHZvaWQgKENhbGxiYWNrQmFzZTo6RXJyb3IpPiBj
YWxsYmFja0Z1bmN0aW9uKQpJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9UaWxl
ZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYVByb3h5LmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL21hYy9UaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYVByb3h5LmgJ
KHJldmlzaW9uIDIwODE5NykKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvVGlsZWRD
b3JlQW5pbWF0aW9uRHJhd2luZ0FyZWFQcm94eS5oCSh3b3JraW5nIGNvcHkpCkBAIC01Miw3ICs1
Miw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBhZGp1c3RUcmFuc2llbnRab29tKGRvdWJsZSBzY2Fs
ZSwgV2ViQ29yZTo6RmxvYXRQb2ludCBvcmlnaW4pIG92ZXJyaWRlOwogICAgIHZvaWQgY29tbWl0
VHJhbnNpZW50Wm9vbShkb3VibGUgc2NhbGUsIFdlYkNvcmU6OkZsb2F0UG9pbnQgb3JpZ2luKSBv
dmVycmlkZTsKIAotICAgIHZvaWQgd2FpdEZvckRpZFVwZGF0ZVZpZXdTdGF0ZSgpIG92ZXJyaWRl
OworICAgIHZvaWQgd2FpdEZvckRpZFVwZGF0ZUFjdGl2aXR5U3RhdGUoKSBvdmVycmlkZTsKICAg
ICB2b2lkIGRpc3BhdGNoQWZ0ZXJFbnN1cmluZ0RyYXdpbmcoc3RkOjpmdW5jdGlvbjx2b2lkIChD
YWxsYmFja0Jhc2U6OkVycm9yKT4pIG92ZXJyaWRlOwogCiAgICAgdm9pZCB3aWxsU2VuZFVwZGF0
ZUdlb21ldHJ5KCkgb3ZlcnJpZGU7CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFj
L1RpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhUHJveHkubW0KPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9UaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYVBy
b3h5Lm1tCShyZXZpc2lvbiAyMDgxOTcpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFj
L1RpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhUHJveHkubW0JKHdvcmtpbmcgY29weSkKQEAg
LTEzMSwxMCArMTMxLDEwIEBAIHZvaWQgVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWFQcm94
eToKICAgICAgICAgc2VuZFVwZGF0ZUdlb21ldHJ5KCk7CiB9CiAKLXZvaWQgVGlsZWRDb3JlQW5p
bWF0aW9uRHJhd2luZ0FyZWFQcm94eTo6d2FpdEZvckRpZFVwZGF0ZVZpZXdTdGF0ZSgpCit2b2lk
IFRpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhUHJveHk6OndhaXRGb3JEaWRVcGRhdGVBY3Rp
dml0eVN0YXRlKCkKIHsKLSAgICBhdXRvIHZpZXdTdGF0ZVVwZGF0ZVRpbWVvdXQgPSBzdGQ6OmNo
cm9ubzo6bWlsbGlzZWNvbmRzKDI1MCk7Ci0gICAgbV93ZWJQYWdlUHJveHkucHJvY2VzcygpLmNv
bm5lY3Rpb24oKS0+d2FpdEZvckFuZERpc3BhdGNoSW1tZWRpYXRlbHk8TWVzc2FnZXM6OldlYlBh
Z2VQcm94eTo6RGlkVXBkYXRlVmlld1N0YXRlPihtX3dlYlBhZ2VQcm94eS5wYWdlSUQoKSwgdmll
d1N0YXRlVXBkYXRlVGltZW91dCwgSVBDOjpXYWl0Rm9yT3B0aW9uOjpJbnRlcnJ1cHRXYWl0aW5n
SWZTeW5jTWVzc2FnZUFycml2ZXMpOworICAgIGF1dG8gYWN0aXZpdHlTdGF0ZVVwZGF0ZVRpbWVv
dXQgPSBzdGQ6OmNocm9ubzo6bWlsbGlzZWNvbmRzKDI1MCk7CisgICAgbV93ZWJQYWdlUHJveHku
cHJvY2VzcygpLmNvbm5lY3Rpb24oKS0+d2FpdEZvckFuZERpc3BhdGNoSW1tZWRpYXRlbHk8TWVz
c2FnZXM6OldlYlBhZ2VQcm94eTo6RGlkVXBkYXRlQWN0aXZpdHlTdGF0ZT4obV93ZWJQYWdlUHJv
eHkucGFnZUlEKCksIGFjdGl2aXR5U3RhdGVVcGRhdGVUaW1lb3V0LCBJUEM6OldhaXRGb3JPcHRp
b246OkludGVycnVwdFdhaXRpbmdJZlN5bmNNZXNzYWdlQXJyaXZlcyk7CiB9CiAKIHZvaWQgVGls
ZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWFQcm94eTo6aW50cmluc2ljQ29udGVudFNpemVEaWRD
aGFuZ2UoY29uc3QgSW50U2l6ZSYgbmV3SW50cmluc2ljQ29udGVudFNpemUpCkluZGV4OiBTb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuY3BwCShyZXZp
c2lvbiAyMDgxOTcpCisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2lu
Vmlldy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUzNSwxNCArNTM1LDE0IEBAIHZvaWQgUGx1Z2lu
Vmlldzo6d2ViUGFnZURlc3Ryb3llZCgpCiAgICAgbV93ZWJQYWdlID0gMDsKIH0KIAotdm9pZCBQ
bHVnaW5WaWV3Ojp2aWV3U3RhdGVEaWRDaGFuZ2UoVmlld1N0YXRlOjpGbGFncyBjaGFuZ2VkKQor
dm9pZCBQbHVnaW5WaWV3OjphY3Rpdml0eVN0YXRlRGlkQ2hhbmdlKEFjdGl2aXR5U3RhdGU6OkZs
YWdzIGNoYW5nZWQpCiB7CiAgICAgaWYgKCFtX3BsdWdpbiB8fCAhbV9pc0luaXRpYWxpemVkKQog
ICAgICAgICByZXR1cm47CiAKLSAgICBpZiAoY2hhbmdlZCAmIFZpZXdTdGF0ZTo6SXNWaXNpYmxl
T3JPY2NsdWRlZCkKKyAgICBpZiAoY2hhbmdlZCAmIEFjdGl2aXR5U3RhdGU6OklzVmlzaWJsZU9y
T2NjbHVkZWQpCiAgICAgICAgIG1fcGx1Z2luLT53aW5kb3dWaXNpYmlsaXR5Q2hhbmdlZChtX3dl
YlBhZ2UtPmlzVmlzaWJsZU9yT2NjbHVkZWQoKSk7Ci0gICAgaWYgKGNoYW5nZWQgJiBWaWV3U3Rh
dGU6OldpbmRvd0lzQWN0aXZlKQorICAgIGlmIChjaGFuZ2VkICYgQWN0aXZpdHlTdGF0ZTo6V2lu
ZG93SXNBY3RpdmUpCiAgICAgICAgIG1fcGx1Z2luLT53aW5kb3dGb2N1c0NoYW5nZWQobV93ZWJQ
YWdlLT53aW5kb3dJc0ZvY3VzZWQoKSk7CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuaAkocmV2aXNpb24gMjA4MTk3KQorKysgU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuaAkod29ya2luZyBjb3B5
KQpAQCAtMzksNyArMzksNyBAQAogI2luY2x1ZGUgPFdlYkNvcmUvUmVzb3VyY2VFcnJvci5oPgog
I2luY2x1ZGUgPFdlYkNvcmUvUmVzb3VyY2VSZXNwb25zZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUv
VGltZXIuaD4KLSNpbmNsdWRlIDxXZWJDb3JlL1ZpZXdTdGF0ZS5oPgorI2luY2x1ZGUgPFdlYkNv
cmUvQWN0aXZpdHlTdGF0ZS5oPgogI2luY2x1ZGUgPG1lbW9yeT4KICNpbmNsdWRlIDx3dGYvRGVx
dWUuaD4KICNpbmNsdWRlIDx3dGYvUnVuTG9vcC5oPgpAQCAtNzcsNyArNzcsNyBAQCBwdWJsaWM6
CiAgICAgdm9pZCBtYW51YWxMb2FkRGlkRmluaXNoTG9hZGluZygpOwogICAgIHZvaWQgbWFudWFs
TG9hZERpZEZhaWwoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYpOwogCi0gICAgdm9pZCB2
aWV3U3RhdGVEaWRDaGFuZ2UoV2ViQ29yZTo6Vmlld1N0YXRlOjpGbGFncyBjaGFuZ2VkKTsKKyAg
ICB2b2lkIGFjdGl2aXR5U3RhdGVEaWRDaGFuZ2UoV2ViQ29yZTo6QWN0aXZpdHlTdGF0ZTo6Rmxh
Z3MgY2hhbmdlZCk7CiAgICAgdm9pZCBzZXRMYXllckhvc3RpbmdNb2RlKExheWVySG9zdGluZ01v
ZGUpOwogCiAjaWYgUExBVEZPUk0oQ09DT0EpCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1dlYlBhZ2UvQWNjZWxlcmF0ZWREcmF3aW5nQXJlYS5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0FjY2VsZXJhdGVkRHJhd2luZ0FyZWEuY3Bw
CShyZXZpc2lvbiAyMDgxOTcpCisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2Uv
QWNjZWxlcmF0ZWREcmF3aW5nQXJlYS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM2OSw5ICszNjks
OSBAQCB2b2lkIEFjY2VsZXJhdGVkRHJhd2luZ0FyZWE6OmRlc3Ryb3lOYXRpCiB9CiAjZW5kaWYK
IAotdm9pZCBBY2NlbGVyYXRlZERyYXdpbmdBcmVhOjp2aWV3U3RhdGVEaWRDaGFuZ2UoVmlld1N0
YXRlOjpGbGFncyBjaGFuZ2VkLCBib29sLCBjb25zdCBWZWN0b3I8dWludDY0X3Q+JikKK3ZvaWQg
QWNjZWxlcmF0ZWREcmF3aW5nQXJlYTo6YWN0aXZpdHlTdGF0ZURpZENoYW5nZShBY3Rpdml0eVN0
YXRlOjpGbGFncyBjaGFuZ2VkLCBib29sLCBjb25zdCBWZWN0b3I8dWludDY0X3Q+JikKIHsKLSAg
ICBpZiAoY2hhbmdlZCAmIFZpZXdTdGF0ZTo6SXNWaXNpYmxlKSB7CisgICAgaWYgKGNoYW5nZWQg
JiBBY3Rpdml0eVN0YXRlOjpJc1Zpc2libGUpIHsKICAgICAgICAgaWYgKG1fd2ViUGFnZS5pc1Zp
c2libGUoKSkKICAgICAgICAgICAgIHJlc3VtZVBhaW50aW5nKCk7CiAgICAgICAgIGVsc2UKSW5k
ZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9BY2NlbGVyYXRlZERyYXdpbmdB
cmVhLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0Fj
Y2VsZXJhdGVkRHJhd2luZ0FyZWEuaAkocmV2aXNpb24gMjA4MTk3KQorKysgU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0FjY2VsZXJhdGVkRHJhd2luZ0FyZWEuaAkod29ya2luZyBj
b3B5KQpAQCAtNjgsNyArNjgsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgdm9pZCBkZXN0cm95TmF0aXZl
U3VyZmFjZUhhbmRsZUZvckNvbXBvc2l0aW5nKGJvb2wmKSBvdmVycmlkZTsKICNlbmRpZgogCi0g
ICAgdm9pZCB2aWV3U3RhdGVEaWRDaGFuZ2UoV2ViQ29yZTo6Vmlld1N0YXRlOjpGbGFncywgYm9v
bCAvKiB3YW50c0RpZFVwZGF0ZVZpZXdTdGF0ZSAqLywgY29uc3QgVmVjdG9yPHVpbnQ2NF90PiYg
LyogY2FsbGJhY2tJRHMgKi8pIG92ZXJyaWRlOworICAgIHZvaWQgYWN0aXZpdHlTdGF0ZURpZENo
YW5nZShXZWJDb3JlOjpBY3Rpdml0eVN0YXRlOjpGbGFncywgYm9vbCAvKiB3YW50c0RpZFVwZGF0
ZUFjdGl2aXR5U3RhdGUgKi8sIGNvbnN0IFZlY3Rvcjx1aW50NjRfdD4mIC8qIGNhbGxiYWNrSURz
ICovKSBvdmVycmlkZTsKICAgICB2b2lkIGF0dGFjaFZpZXdPdmVybGF5R3JhcGhpY3NMYXllcihX
ZWJDb3JlOjpGcmFtZSosIFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXIqKSBvdmVycmlkZTsKIAogICAg
IHZvaWQgbGF5ZXJIb3N0RGlkRmx1c2hMYXllcnMoKSBvdmVycmlkZTsKSW5kZXg6IFNvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9EcmF3aW5nQXJlYS5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9EcmF3aW5nQXJlYS5oCShyZXZpc2lvbiAy
MDgxOTcpCisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvRHJhd2luZ0FyZWEu
aAkod29ya2luZyBjb3B5KQpAQCAtMzMsNyArMzMsNyBAQAogI2luY2x1ZGUgPFdlYkNvcmUvTGF5
ZXJGbHVzaFRocm90dGxlU3RhdGUuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0xheW91dE1pbGVzdG9u
ZXMuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1BsYXRmb3JtU2NyZWVuLmg+Ci0jaW5jbHVkZSA8V2Vi
Q29yZS9WaWV3U3RhdGUuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL0FjdGl2aXR5U3RhdGUuaD4KICNp
bmNsdWRlIDxmdW5jdGlvbmFsPgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAjaW5jbHVkZSA8
d3RmL05vbmNvcHlhYmxlLmg+CkBAIC0xMjAsNyArMTIwLDcgQEAgcHVibGljOgogCiAgICAgdmly
dHVhbCB2b2lkIGRpc3BhdGNoQWZ0ZXJFbnN1cmluZ1VwZGF0ZWRTY3JvbGxQb3NpdGlvbihzdGQ6
OmZ1bmN0aW9uPHZvaWQgKCk+KTsKIAotICAgIHZpcnR1YWwgdm9pZCB2aWV3U3RhdGVEaWRDaGFu
Z2UoV2ViQ29yZTo6Vmlld1N0YXRlOjpGbGFncywgYm9vbCAvKiB3YW50c0RpZFVwZGF0ZVZpZXdT
dGF0ZSAqLywgY29uc3QgVmVjdG9yPHVpbnQ2NF90PiYgLyogY2FsbGJhY2tJRHMgKi8pIHsgfQor
ICAgIHZpcnR1YWwgdm9pZCBhY3Rpdml0eVN0YXRlRGlkQ2hhbmdlKFdlYkNvcmU6OkFjdGl2aXR5
U3RhdGU6OkZsYWdzLCBib29sIC8qIHdhbnRzRGlkVXBkYXRlQWN0aXZpdHlTdGF0ZSAqLywgY29u
c3QgVmVjdG9yPHVpbnQ2NF90PiYgLyogY2FsbGJhY2tJRHMgKi8pIHsgfQogICAgIHZpcnR1YWwg
dm9pZCBzZXRMYXllckhvc3RpbmdNb2RlKExheWVySG9zdGluZ01vZGUpIHsgfQogCiAgICAgdmly
dHVhbCBib29sIG1hcmtMYXllcnNWb2xhdGlsZUltbWVkaWF0ZWx5SWZQb3NzaWJsZSgpIHsgcmV0
dXJuIHRydWU7IH0KSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQ
YWdlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2Uv
V2ViUGFnZS5jcHAJKHJldmlzaW9uIDIwODE5NykKKysrIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvV2ViUGFnZS9XZWJQYWdlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzc2LDcgKzM3Niw3IEBA
IFdlYlBhZ2U6OldlYlBhZ2UodWludDY0X3QgcGFnZUlELCBjb25zdCAKICAgICAsIG1fbWF4aW11
bVJlbmRlcmluZ1N1cHByZXNzaW9uVG9rZW4oMCkKICAgICAsIG1fc2Nyb2xsUGlubmluZ0JlaGF2
aW9yKERvTm90UGluKQogICAgICwgbV91c2VBc3luY1Njcm9sbGluZyhmYWxzZSkKLSAgICAsIG1f
dmlld1N0YXRlKHBhcmFtZXRlcnMudmlld1N0YXRlKQorICAgICwgbV9hY3Rpdml0eVN0YXRlKHBh
cmFtZXRlcnMuYWN0aXZpdHlTdGF0ZSkKICAgICAsIG1fdXNlckFjdGl2aXR5KCJQcm9jZXNzIHN1
cHByZXNzaW9uIGRpc2FibGVkIGZvciBwYWdlLiIpCiAgICAgLCBtX3VzZXJBY3Rpdml0eUh5c3Rl
cmVzaXMoW3RoaXNdKEh5c3RlcmVzaXNTdGF0ZSkgeyB1cGRhdGVVc2VyQWN0aXZpdHkoKTsgfSkK
ICAgICAsIG1fcGVuZGluZ05hdmlnYXRpb25JRCgwKQpAQCAtNDkzLDcgKzQ5Myw3IEBAIFdlYlBh
Z2U6OldlYlBhZ2UodWludDY0X3QgcGFnZUlELCBjb25zdCAKICAgICBzZXRQYWdpbmF0aW9uTGlu
ZUdyaWRFbmFibGVkKHBhcmFtZXRlcnMucGFnaW5hdGlvbkxpbmVHcmlkRW5hYmxlZCk7CiAgICAg
CiAgICAgLy8gSWYgdGhlIHBhZ2UgaXMgY3JlYXRlZCBvZmYtc2NyZWVuLCBpdHMgdmlzaWJpbGl0
eVN0YXRlIHNob3VsZCBiZSBwcmVyZW5kZXIuCi0gICAgbV9wYWdlLT5zZXRWaWV3U3RhdGUobV92
aWV3U3RhdGUpOworICAgIG1fcGFnZS0+c2V0QWN0aXZpdHlTdGF0ZShtX2FjdGl2aXR5U3RhdGUp
OwogICAgIGlmICghaXNWaXNpYmxlKCkpCiAgICAgICAgIG1fcGFnZS0+c2V0SXNQcmVyZW5kZXIo
KTsKICAgICBzZXRQYWdlU3VwcHJlc3NlZChmYWxzZSk7CkBAIC01NzUsOCArNTc1LDggQEAgV2Vi
UGFnZTo6V2ViUGFnZSh1aW50NjRfdCBwYWdlSUQsIGNvbnN0IAogCiB2b2lkIFdlYlBhZ2U6OnJl
aW5pdGlhbGl6ZVdlYlBhZ2UoY29uc3QgV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycyYgcGFyYW1l
dGVycykKIHsKLSAgICBpZiAobV92aWV3U3RhdGUgIT0gcGFyYW1ldGVycy52aWV3U3RhdGUpCi0g
ICAgICAgIHNldFZpZXdTdGF0ZShwYXJhbWV0ZXJzLnZpZXdTdGF0ZSwgZmFsc2UsIFZlY3Rvcjx1
aW50NjRfdD4oKSk7CisgICAgaWYgKG1fYWN0aXZpdHlTdGF0ZSAhPSBwYXJhbWV0ZXJzLmFjdGl2
aXR5U3RhdGUpCisgICAgICAgIHNldEFjdGl2aXR5U3RhdGUocGFyYW1ldGVycy5hY3Rpdml0eVN0
YXRlLCBmYWxzZSwgVmVjdG9yPHVpbnQ2NF90PigpKTsKICAgICBpZiAobV9sYXllckhvc3RpbmdN
b2RlICE9IHBhcmFtZXRlcnMubGF5ZXJIb3N0aW5nTW9kZSkKICAgICAgICAgc2V0TGF5ZXJIb3N0
aW5nTW9kZShwYXJhbWV0ZXJzLmxheWVySG9zdGluZ01vZGUpOwogfQpAQCAtMjU2Nyw3ICsyNTY3
LDcgQEAgdm9pZCBXZWJQYWdlOjpzZXRDYW5TdGFydE1lZGlhVGltZXJGaXJlZAogCiB2b2lkIFdl
YlBhZ2U6OnVwZGF0ZUlzSW5XaW5kb3coYm9vbCBpc0luaXRpYWxTdGF0ZSkKIHsKLSAgICBib29s
IGlzSW5XaW5kb3cgPSBtX3ZpZXdTdGF0ZSAmIFdlYkNvcmU6OlZpZXdTdGF0ZTo6SXNJbldpbmRv
dzsKKyAgICBib29sIGlzSW5XaW5kb3cgPSBtX2FjdGl2aXR5U3RhdGUgJiBXZWJDb3JlOjpBY3Rp
dml0eVN0YXRlOjpJc0luV2luZG93OwogCiAgICAgaWYgKCFpc0luV2luZG93KSB7CiAgICAgICAg
IG1fc2V0Q2FuU3RhcnRNZWRpYVRpbWVyLnN0b3AoKTsKQEAgLTI1OTAsMTggKzI1OTAsMTggQEAg
dm9pZCBXZWJQYWdlOjp1cGRhdGVJc0luV2luZG93KGJvb2wgaXNJbgogICAgICAgICBsYXlvdXRJ
Zk5lZWRlZCgpOwogfQogCi12b2lkIFdlYlBhZ2U6OnNldFZpZXdTdGF0ZShWaWV3U3RhdGU6OkZs
YWdzIHZpZXdTdGF0ZSwgYm9vbCB3YW50c0RpZFVwZGF0ZVZpZXdTdGF0ZSwgY29uc3QgVmVjdG9y
PHVpbnQ2NF90PiYgY2FsbGJhY2tJRHMpCit2b2lkIFdlYlBhZ2U6OnNldEFjdGl2aXR5U3RhdGUo
QWN0aXZpdHlTdGF0ZTo6RmxhZ3MgYWN0aXZpdHlTdGF0ZSwgYm9vbCB3YW50c0RpZFVwZGF0ZUFj
dGl2aXR5U3RhdGUsIGNvbnN0IFZlY3Rvcjx1aW50NjRfdD4mIGNhbGxiYWNrSURzKQogewotICAg
IFZpZXdTdGF0ZTo6RmxhZ3MgY2hhbmdlZCA9IG1fdmlld1N0YXRlIF4gdmlld1N0YXRlOwotICAg
IG1fdmlld1N0YXRlID0gdmlld1N0YXRlOworICAgIEFjdGl2aXR5U3RhdGU6OkZsYWdzIGNoYW5n
ZWQgPSBtX2FjdGl2aXR5U3RhdGUgXiBhY3Rpdml0eVN0YXRlOworICAgIG1fYWN0aXZpdHlTdGF0
ZSA9IGFjdGl2aXR5U3RhdGU7CiAKLSAgICBtX3BhZ2UtPnNldFZpZXdTdGF0ZSh2aWV3U3RhdGUp
OworICAgIG1fcGFnZS0+c2V0QWN0aXZpdHlTdGF0ZShhY3Rpdml0eVN0YXRlKTsKICAgICBmb3Ig
KGF1dG8qIHBsdWdpblZpZXcgOiBtX3BsdWdpblZpZXdzKQotICAgICAgICBwbHVnaW5WaWV3LT52
aWV3U3RhdGVEaWRDaGFuZ2UoY2hhbmdlZCk7CisgICAgICAgIHBsdWdpblZpZXctPmFjdGl2aXR5
U3RhdGVEaWRDaGFuZ2UoY2hhbmdlZCk7CiAKLSAgICBtX2RyYXdpbmdBcmVhLT52aWV3U3RhdGVE
aWRDaGFuZ2UoY2hhbmdlZCwgd2FudHNEaWRVcGRhdGVWaWV3U3RhdGUsIGNhbGxiYWNrSURzKTsK
KyAgICBtX2RyYXdpbmdBcmVhLT5hY3Rpdml0eVN0YXRlRGlkQ2hhbmdlKGNoYW5nZWQsIHdhbnRz
RGlkVXBkYXRlQWN0aXZpdHlTdGF0ZSwgY2FsbGJhY2tJRHMpOwogCi0gICAgaWYgKGNoYW5nZWQg
JiBWaWV3U3RhdGU6OklzSW5XaW5kb3cpCisgICAgaWYgKGNoYW5nZWQgJiBBY3Rpdml0eVN0YXRl
OjpJc0luV2luZG93KQogICAgICAgICB1cGRhdGVJc0luV2luZG93KCk7CiB9CiAKSW5kZXg6IFNv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAkocmV2aXNpb24gMjA4
MTk3KQorKysgU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAkod29y
a2luZyBjb3B5KQpAQCAtNjgsNyArNjgsNyBAQAogI2luY2x1ZGUgPFdlYkNvcmUvVXNlckNvbnRl
bnRUeXBlcy5oPgogI2luY2x1ZGUgPFdlYkNvcmUvVXNlckludGVyZmFjZUxheW91dERpcmVjdGlv
bi5oPgogI2luY2x1ZGUgPFdlYkNvcmUvVXNlclNjcmlwdFR5cGVzLmg+Ci0jaW5jbHVkZSA8V2Vi
Q29yZS9WaWV3U3RhdGUuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL0FjdGl2aXR5U3RhdGUuaD4KICNp
bmNsdWRlIDxXZWJDb3JlL1ZpZXdwb3J0Q29uZmlndXJhdGlvbi5oPgogI2luY2x1ZGUgPFdlYkNv
cmUvV2ViQ29yZUtleWJvYXJkVUlNb2RlLmg+CiAjaW5jbHVkZSA8bWVtb3J5PgpAQCAtNDM2LDgg
KzQzNiw4IEBAIHB1YmxpYzoKICAgICB2b2lkIGFkZFBsdWdpblZpZXcoUGx1Z2luVmlldyopOwog
ICAgIHZvaWQgcmVtb3ZlUGx1Z2luVmlldyhQbHVnaW5WaWV3Kik7CiAKLSAgICBib29sIGlzVmlz
aWJsZSgpIGNvbnN0IHsgcmV0dXJuIG1fdmlld1N0YXRlICYgV2ViQ29yZTo6Vmlld1N0YXRlOjpJ
c1Zpc2libGU7IH0KLSAgICBib29sIGlzVmlzaWJsZU9yT2NjbHVkZWQoKSBjb25zdCB7IHJldHVy
biBtX3ZpZXdTdGF0ZSAmIFdlYkNvcmU6OlZpZXdTdGF0ZTo6SXNWaXNpYmxlT3JPY2NsdWRlZDsg
fQorICAgIGJvb2wgaXNWaXNpYmxlKCkgY29uc3QgeyByZXR1cm4gbV9hY3Rpdml0eVN0YXRlICYg
V2ViQ29yZTo6QWN0aXZpdHlTdGF0ZTo6SXNWaXNpYmxlOyB9CisgICAgYm9vbCBpc1Zpc2libGVP
ck9jY2x1ZGVkKCkgY29uc3QgeyByZXR1cm4gbV9hY3Rpdml0eVN0YXRlICYgV2ViQ29yZTo6QWN0
aXZpdHlTdGF0ZTo6SXNWaXNpYmxlT3JPY2NsdWRlZDsgfQogCiAgICAgTGF5ZXJIb3N0aW5nTW9k
ZSBsYXllckhvc3RpbmdNb2RlKCkgY29uc3QgeyByZXR1cm4gbV9sYXllckhvc3RpbmdNb2RlOyB9
CiAgICAgdm9pZCBzZXRMYXllckhvc3RpbmdNb2RlKExheWVySG9zdGluZ01vZGUpOwpAQCAtMTA0
MSw3ICsxMDQxLDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHRyeVJlc3RvcmVTY3JvbGxQb3NpdGlv
bigpOwogICAgIHZvaWQgc2V0SW5pdGlhbEZvY3VzKGJvb2wgZm9yd2FyZCwgYm9vbCBpc0tleWJv
YXJkRXZlbnRWYWxpZCwgY29uc3QgV2ViS2V5Ym9hcmRFdmVudCYsIHVpbnQ2NF90IGNhbGxiYWNr
SUQpOwogICAgIHZvaWQgdXBkYXRlSXNJbldpbmRvdyhib29sIGlzSW5pdGlhbFN0YXRlID0gZmFs
c2UpOwotICAgIHZvaWQgc2V0Vmlld1N0YXRlKFdlYkNvcmU6OlZpZXdTdGF0ZTo6RmxhZ3MsIGJv
b2wgd2FudHNEaWRVcGRhdGVWaWV3U3RhdGUsIGNvbnN0IFZlY3Rvcjx1aW50NjRfdD4mIGNhbGxi
YWNrSURzKTsKKyAgICB2b2lkIHNldEFjdGl2aXR5U3RhdGUoV2ViQ29yZTo6QWN0aXZpdHlTdGF0
ZTo6RmxhZ3MsIGJvb2wgd2FudHNEaWRVcGRhdGVBY3Rpdml0eVN0YXRlLCBjb25zdCBWZWN0b3I8
dWludDY0X3Q+JiBjYWxsYmFja0lEcyk7CiAgICAgdm9pZCB2YWxpZGF0ZUNvbW1hbmQoY29uc3Qg
U3RyaW5nJiwgdWludDY0X3QpOwogICAgIHZvaWQgZXhlY3V0ZUVkaXRDb21tYW5kKGNvbnN0IFN0
cmluZyYsIGNvbnN0IFN0cmluZyYpOwogICAgIHZvaWQgc2V0RWRpdGFibGUoYm9vbCk7CkBAIC0x
NDg1LDcgKzE0ODUsNyBAQCBwcml2YXRlOgogCiAgICAgYm9vbCBtX3VzZUFzeW5jU2Nyb2xsaW5n
OwogCi0gICAgV2ViQ29yZTo6Vmlld1N0YXRlOjpGbGFncyBtX3ZpZXdTdGF0ZTsKKyAgICBXZWJD
b3JlOjpBY3Rpdml0eVN0YXRlOjpGbGFncyBtX2FjdGl2aXR5U3RhdGU7CiAKICAgICBVc2VyQWN0
aXZpdHkgbV91c2VyQWN0aXZpdHk7CiAgICAgV2ViQ29yZTo6SHlzdGVyZXNpc0FjdGl2aXR5IG1f
dXNlckFjdGl2aXR5SHlzdGVyZXNpczsKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
V2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluCShyZXZpc2lvbiAyMDgxOTcp
CisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5p
bgkod29ya2luZyBjb3B5KQpAQCAtMjIsNyArMjIsNyBAQAogCiBtZXNzYWdlcyAtPiBXZWJQYWdl
IExlZ2FjeVJlY2VpdmVyIHsKICAgICBTZXRJbml0aWFsRm9jdXMoYm9vbCBmb3J3YXJkLCBib29s
IGlzS2V5Ym9hcmRFdmVudFZhbGlkLCBXZWJLaXQ6OldlYktleWJvYXJkRXZlbnQgZXZlbnQsIHVp
bnQ2NF90IGNhbGxiYWNrSUQpCi0gICAgU2V0Vmlld1N0YXRlKHVuc2lnbmVkIHZpZXdTdGF0ZSwg
Ym9vbCB3YW50c0RpZFVwZGF0ZVZpZXdTdGF0ZSwgVmVjdG9yPHVpbnQ2NF90PiBjYWxsYmFja0lE
cykKKyAgICBTZXRBY3Rpdml0eVN0YXRlKHVuc2lnbmVkIGFjdGl2aXR5U3RhdGUsIGJvb2wgd2Fu
dHNEaWRVcGRhdGVBY3Rpdml0eVN0YXRlLCBWZWN0b3I8dWludDY0X3Q+IGNhbGxiYWNrSURzKQog
ICAgIFNldExheWVySG9zdGluZ01vZGUoZW51bSBXZWJLaXQ6OkxheWVySG9zdGluZ01vZGUgbGF5
ZXJIb3N0aW5nTW9kZSkKICAgICBTZXRQYWdlU3VwcHJlc3NlZChib29sIHBhZ2VTdXBwcmVzc2Vk
KQogCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1JlbW90ZUxh
eWVyVHJlZURyYXdpbmdBcmVhLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9XZWJQYWdlL21hYy9SZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYS5oCShyZXZpc2lvbiAy
MDgxOTcpCisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1JlbW90ZUxh
eWVyVHJlZURyYXdpbmdBcmVhLmgJKHdvcmtpbmcgY29weSkKQEAgLTEwMiw3ICsxMDIsNyBAQCBw
cml2YXRlOgogCiAgICAgdm9pZCBtYWluRnJhbWVDb250ZW50U2l6ZUNoYW5nZWQoY29uc3QgV2Vi
Q29yZTo6SW50U2l6ZSYpIG92ZXJyaWRlOwogCi0gICAgdm9pZCB2aWV3U3RhdGVEaWRDaGFuZ2Uo
V2ViQ29yZTo6Vmlld1N0YXRlOjpGbGFncyBjaGFuZ2VkLCBib29sIHdhbnRzRGlkVXBkYXRlVmll
d1N0YXRlLCBjb25zdCBWZWN0b3I8dWludDY0X3Q+JiBjYWxsYmFja0lEcykgb3ZlcnJpZGU7Cisg
ICAgdm9pZCBhY3Rpdml0eVN0YXRlRGlkQ2hhbmdlKFdlYkNvcmU6OkFjdGl2aXR5U3RhdGU6OkZs
YWdzIGNoYW5nZWQsIGJvb2wgd2FudHNEaWRVcGRhdGVBY3Rpdml0eVN0YXRlLCBjb25zdCBWZWN0
b3I8dWludDY0X3Q+JiBjYWxsYmFja0lEcykgb3ZlcnJpZGU7CiAKICAgICBib29sIGFkanVzdExh
eWVyRmx1c2hUaHJvdHRsaW5nKFdlYkNvcmU6OkxheWVyRmx1c2hUaHJvdHRsZVN0YXRlOjpGbGFn
cykgb3ZlcnJpZGU7CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9t
YWMvUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWEubW0KPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9SZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYS5t
bQkocmV2aXNpb24gMjA4MTk3KQorKysgU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdl
L21hYy9SZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYS5tbQkod29ya2luZyBjb3B5KQpAQCAtNDk3
LDExICs0OTcsMTEgQEAgdm9pZCBSZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYTo6QmFja2luZwog
ICAgIG1fY29ubmVjdGlvbi0+c2VuZE1lc3NhZ2UoV1RGTW92ZShtX2NvbW1pdEVuY29kZXIpLCB7
IH0pOwogfQogCi12b2lkIFJlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhOjp2aWV3U3RhdGVEaWRD
aGFuZ2UoVmlld1N0YXRlOjpGbGFncywgYm9vbCB3YW50c0RpZFVwZGF0ZVZpZXdTdGF0ZSwgY29u
c3QgVmVjdG9yPHVpbnQ2NF90PiYpCit2b2lkIFJlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhOjph
Y3Rpdml0eVN0YXRlRGlkQ2hhbmdlKEFjdGl2aXR5U3RhdGU6OkZsYWdzLCBib29sIHdhbnRzRGlk
VXBkYXRlQWN0aXZpdHlTdGF0ZSwgY29uc3QgVmVjdG9yPHVpbnQ2NF90PiYpCiB7CiAgICAgLy8g
RklYTUU6IFNob3VsZCB3ZSBzdXNwZW5kIHBhaW50aW5nIHdoaWxlIG5vdCB2aXNpYmxlLCBsaWtl
IFRpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhPyBQcm9iYWJseS4KIAotICAgIGlmICh3YW50
c0RpZFVwZGF0ZVZpZXdTdGF0ZSkKKyAgICBpZiAod2FudHNEaWRVcGRhdGVBY3Rpdml0eVN0YXRl
KQogICAgICAgICBzY2hlZHVsZUNvbXBvc2l0aW5nTGF5ZXJGbHVzaEltbWVkaWF0ZWx5KCk7CiB9
CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvVGlsZWRDb3Jl
QW5pbWF0aW9uRHJhd2luZ0FyZWEuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1dlYlBhZ2UvbWFjL1RpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhLmgJKHJldmlz
aW9uIDIwODE5NykKKysrIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvVGls
ZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWEuaAkod29ya2luZyBjb3B5KQpAQCAtODEsOCArODEs
OCBAQCBwcml2YXRlOgogCiAgICAgYm9vbCBzaG91bGRVc2VUaWxlZEJhY2tpbmdGb3JGcmFtZVZp
ZXcoY29uc3QgV2ViQ29yZTo6RnJhbWVWaWV3Kikgb3ZlcnJpZGU7CiAKLSAgICB2b2lkIHZpZXdT
dGF0ZURpZENoYW5nZShXZWJDb3JlOjpWaWV3U3RhdGU6OkZsYWdzIGNoYW5nZWQsIGJvb2wgd2Fu
dHNEaWRVcGRhdGVWaWV3U3RhdGUsIGNvbnN0IFZlY3Rvcjx1aW50NjRfdD4mKSBvdmVycmlkZTsK
LSAgICB2b2lkIGRpZFVwZGF0ZVZpZXdTdGF0ZVRpbWVyRmlyZWQoKTsKKyAgICB2b2lkIGFjdGl2
aXR5U3RhdGVEaWRDaGFuZ2UoV2ViQ29yZTo6QWN0aXZpdHlTdGF0ZTo6RmxhZ3MgY2hhbmdlZCwg
Ym9vbCB3YW50c0RpZFVwZGF0ZUFjdGl2aXR5U3RhdGUsIGNvbnN0IFZlY3Rvcjx1aW50NjRfdD4m
KSBvdmVycmlkZTsKKyAgICB2b2lkIGRpZFVwZGF0ZUFjdGl2aXR5U3RhdGVUaW1lckZpcmVkKCk7
CiAKICAgICB2b2lkIGF0dGFjaFZpZXdPdmVybGF5R3JhcGhpY3NMYXllcihXZWJDb3JlOjpGcmFt
ZSosIFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXIqKSBvdmVycmlkZTsKIApAQCAtMTQ2LDkgKzE0Niw5
IEBAIHByaXZhdGU6CiAKICAgICBXZWJDb3JlOjpUcmFuc2Zvcm1hdGlvbk1hdHJpeCBtX3RyYW5z
Zm9ybTsKIAotICAgIFJ1bkxvb3A6OlRpbWVyPFRpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVh
PiBtX3NlbmREaWRVcGRhdGVWaWV3U3RhdGVUaW1lcjsKLSAgICBWZWN0b3I8dWludDY0X3Q+IG1f
bmV4dFZpZXdTdGF0ZUNoYW5nZUNhbGxiYWNrSURzOwotICAgIGJvb2wgbV93YW50c0RpZFVwZGF0
ZVZpZXdTdGF0ZTsKKyAgICBSdW5Mb29wOjpUaW1lcjxUaWxlZENvcmVBbmltYXRpb25EcmF3aW5n
QXJlYT4gbV9zZW5kRGlkVXBkYXRlQWN0aXZpdHlTdGF0ZVRpbWVyOworICAgIFZlY3Rvcjx1aW50
NjRfdD4gbV9uZXh0QWN0aXZpdHlTdGF0ZUNoYW5nZUNhbGxiYWNrSURzOworICAgIGJvb2wgbV93
YW50c0RpZFVwZGF0ZUFjdGl2aXR5U3RhdGU7CiAKICAgICBXZWJDb3JlOjpHcmFwaGljc0xheWVy
KiBtX3ZpZXdPdmVybGF5Um9vdExheWVyOwogCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1dlYlBhZ2UvbWFjL1RpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhLm1tCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvVGlsZWRDb3JlQW5p
bWF0aW9uRHJhd2luZ0FyZWEubW0JKHJldmlzaW9uIDIwODE5NykKKysrIFNvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWEubW0J
KHdvcmtpbmcgY29weSkKQEAgLTc3LDEwICs3NywxMCBAQCBUaWxlZENvcmVBbmltYXRpb25EcmF3
aW5nQXJlYTo6VGlsZWRDb3JlCiAgICAgOiBEcmF3aW5nQXJlYShEcmF3aW5nQXJlYVR5cGVUaWxl
ZENvcmVBbmltYXRpb24sIHdlYlBhZ2UpCiAgICAgLCBtX2xheWVyVHJlZVN0YXRlSXNGcm96ZW4o
ZmFsc2UpCiAgICAgLCBtX2xheWVyRmx1c2hTY2hlZHVsZXIodGhpcykKLSAgICAsIG1faXNQYWlu
dGluZ1N1c3BlbmRlZCghKHBhcmFtZXRlcnMudmlld1N0YXRlICYgVmlld1N0YXRlOjpJc1Zpc2li
bGUpKQorICAgICwgbV9pc1BhaW50aW5nU3VzcGVuZGVkKCEocGFyYW1ldGVycy5hY3Rpdml0eVN0
YXRlICYgQWN0aXZpdHlTdGF0ZTo6SXNWaXNpYmxlKSkKICAgICAsIG1fdHJhbnNpZW50Wm9vbVNj
YWxlKDEpCi0gICAgLCBtX3NlbmREaWRVcGRhdGVWaWV3U3RhdGVUaW1lcihSdW5Mb29wOjptYWlu
KCksIHRoaXMsICZUaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYTo6ZGlkVXBkYXRlVmlld1N0
YXRlVGltZXJGaXJlZCkKLSAgICAsIG1fd2FudHNEaWRVcGRhdGVWaWV3U3RhdGUoZmFsc2UpCisg
ICAgLCBtX3NlbmREaWRVcGRhdGVBY3Rpdml0eVN0YXRlVGltZXIoUnVuTG9vcDo6bWFpbigpLCB0
aGlzLCAmVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWE6OmRpZFVwZGF0ZUFjdGl2aXR5U3Rh
dGVUaW1lckZpcmVkKQorICAgICwgbV93YW50c0RpZFVwZGF0ZUFjdGl2aXR5U3RhdGUoZmFsc2Up
CiAgICAgLCBtX3ZpZXdPdmVybGF5Um9vdExheWVyKG51bGxwdHIpCiB7CiAgICAgbV93ZWJQYWdl
LmNvcmVQYWdlKCktPnNldHRpbmdzKCkuc2V0Rm9yY2VDb21wb3NpdGluZ01vZGUodHJ1ZSk7CkBA
IC00NDcsMzQgKzQ0NywzNCBAQCBib29sIFRpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhOjpm
bHVzCiAgICAgfQogfQogCi12b2lkIFRpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhOjp2aWV3
U3RhdGVEaWRDaGFuZ2UoVmlld1N0YXRlOjpGbGFncyBjaGFuZ2VkLCBib29sIHdhbnRzRGlkVXBk
YXRlVmlld1N0YXRlLCBjb25zdCBWZWN0b3I8dWludDY0X3Q+JiBuZXh0Vmlld1N0YXRlQ2hhbmdl
Q2FsbGJhY2tJRHMpCit2b2lkIFRpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhOjphY3Rpdml0
eVN0YXRlRGlkQ2hhbmdlKEFjdGl2aXR5U3RhdGU6OkZsYWdzIGNoYW5nZWQsIGJvb2wgd2FudHNE
aWRVcGRhdGVBY3Rpdml0eVN0YXRlLCBjb25zdCBWZWN0b3I8dWludDY0X3Q+JiBuZXh0QWN0aXZp
dHlTdGF0ZUNoYW5nZUNhbGxiYWNrSURzKQogewotICAgIG1fbmV4dFZpZXdTdGF0ZUNoYW5nZUNh
bGxiYWNrSURzLmFwcGVuZFZlY3RvcihuZXh0Vmlld1N0YXRlQ2hhbmdlQ2FsbGJhY2tJRHMpOwot
ICAgIG1fd2FudHNEaWRVcGRhdGVWaWV3U3RhdGUgfD0gd2FudHNEaWRVcGRhdGVWaWV3U3RhdGU7
CisgICAgbV9uZXh0QWN0aXZpdHlTdGF0ZUNoYW5nZUNhbGxiYWNrSURzLmFwcGVuZFZlY3Rvcihu
ZXh0QWN0aXZpdHlTdGF0ZUNoYW5nZUNhbGxiYWNrSURzKTsKKyAgICBtX3dhbnRzRGlkVXBkYXRl
QWN0aXZpdHlTdGF0ZSB8PSB3YW50c0RpZFVwZGF0ZUFjdGl2aXR5U3RhdGU7CiAKLSAgICBpZiAo
Y2hhbmdlZCAmIFZpZXdTdGF0ZTo6SXNWaXNpYmxlKSB7CisgICAgaWYgKGNoYW5nZWQgJiBBY3Rp
dml0eVN0YXRlOjpJc1Zpc2libGUpIHsKICAgICAgICAgaWYgKG1fd2ViUGFnZS5pc1Zpc2libGUo
KSkKICAgICAgICAgICAgIHJlc3VtZVBhaW50aW5nKCk7CiAgICAgICAgIGVsc2UKICAgICAgICAg
ICAgIHN1c3BlbmRQYWludGluZygpOwogICAgIH0KIAotICAgIGlmIChtX3dhbnRzRGlkVXBkYXRl
Vmlld1N0YXRlIHx8ICFtX25leHRWaWV3U3RhdGVDaGFuZ2VDYWxsYmFja0lEcy5pc0VtcHR5KCkp
Ci0gICAgICAgIG1fc2VuZERpZFVwZGF0ZVZpZXdTdGF0ZVRpbWVyLnN0YXJ0T25lU2hvdCgwKTsK
KyAgICBpZiAobV93YW50c0RpZFVwZGF0ZUFjdGl2aXR5U3RhdGUgfHwgIW1fbmV4dEFjdGl2aXR5
U3RhdGVDaGFuZ2VDYWxsYmFja0lEcy5pc0VtcHR5KCkpCisgICAgICAgIG1fc2VuZERpZFVwZGF0
ZUFjdGl2aXR5U3RhdGVUaW1lci5zdGFydE9uZVNob3QoMCk7CiB9CiAKLXZvaWQgVGlsZWRDb3Jl
QW5pbWF0aW9uRHJhd2luZ0FyZWE6OmRpZFVwZGF0ZVZpZXdTdGF0ZVRpbWVyRmlyZWQoKQordm9p
ZCBUaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYTo6ZGlkVXBkYXRlQWN0aXZpdHlTdGF0ZVRp
bWVyRmlyZWQoKQogewogICAgIFtDQVRyYW5zYWN0aW9uIGZsdXNoXTsKIAotICAgIGlmIChtX3dh
bnRzRGlkVXBkYXRlVmlld1N0YXRlKQotICAgICAgICBtX3dlYlBhZ2Uuc2VuZChNZXNzYWdlczo6
V2ViUGFnZVByb3h5OjpEaWRVcGRhdGVWaWV3U3RhdGUoKSk7CisgICAgaWYgKG1fd2FudHNEaWRV
cGRhdGVBY3Rpdml0eVN0YXRlKQorICAgICAgICBtX3dlYlBhZ2Uuc2VuZChNZXNzYWdlczo6V2Vi
UGFnZVByb3h5OjpEaWRVcGRhdGVBY3Rpdml0eVN0YXRlKCkpOwogCi0gICAgZm9yICh1aW50NjRf
dCBjYWxsYmFja0lEIDogbV9uZXh0Vmlld1N0YXRlQ2hhbmdlQ2FsbGJhY2tJRHMpCisgICAgZm9y
ICh1aW50NjRfdCBjYWxsYmFja0lEIDogbV9uZXh0QWN0aXZpdHlTdGF0ZUNoYW5nZUNhbGxiYWNr
SURzKQogICAgICAgICBtX3dlYlBhZ2Uuc2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpWb2lk
Q2FsbGJhY2soY2FsbGJhY2tJRCkpOwogCi0gICAgbV9uZXh0Vmlld1N0YXRlQ2hhbmdlQ2FsbGJh
Y2tJRHMuY2xlYXIoKTsKLSAgICBtX3dhbnRzRGlkVXBkYXRlVmlld1N0YXRlID0gZmFsc2U7Cisg
ICAgbV9uZXh0QWN0aXZpdHlTdGF0ZUNoYW5nZUNhbGxiYWNrSURzLmNsZWFyKCk7CisgICAgbV93
YW50c0RpZFVwZGF0ZUFjdGl2aXR5U3RhdGUgPSBmYWxzZTsKIH0KIAogdm9pZCBUaWxlZENvcmVB
bmltYXRpb25EcmF3aW5nQXJlYTo6c3VzcGVuZFBhaW50aW5nKCkK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>293501</attachid>
            <date>2016-10-31 17:21:01 -0700</date>
            <delta_ts>2016-10-31 17:25:08 -0700</delta_ts>
            <desc>Fix</desc>
            <filename>164254.3.patch</filename>
            <type>text/plain</type>
            <size>119045</size>
            <attacher name="Gavin Barraclough">barraclough</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIwODE5NykKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDU1IEBACisyMDE2LTEwLTMxICBHYXZpbiBC
YXJyYWNsb3VnaCAgPGJhcnJhY2xvdWdoQGFwcGxlLmNvbT4KKworICAgICAgICBSZW5hbWUgVmll
d1N0YXRlIHRvIEFjdGl2aXR5U3RhdGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTE2NDI1NAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIFdlIHBsYW4gdG8gYWRkIGEgY291cGxlIG1vcmUgZmxhZ3MgdG8gVmll
d1N0YXRlIHRoYXQgYXJlbid0IGRpcmVjdGx5IHJlbGF0ZWQgdG8gdGhlIHZpZXcKKyAgICAgICAg
aXRzZWxmIC0gd2hldGhlciB0aGVyZSBpcyBhbiBvbmdvaW5nIHBhZ2UgbG9hZCwgYW5kIHdoZXRo
ZXIgd2hldGhlciB0aGVyZSBpcyBhdWRpbyBwbGF5YmFjay4KKyAgICAgICAgVGhpcyB3aWxsIGFs
bG93IHZpZXdTdGF0ZSAobm93IGFjdGl2aXR5U3RhdGUpIHRvIGZ1bGx5IGRyaXZlIHRocm90dGxp
bmcgZGVjaXNpb25zLgorCisgICAgICAgIFJlbmFtaW5nIHRoaXMgYml0ZmllbGQgYWNjb3JkaW5n
bHkuCisgICAgICAgICogTW9kdWxlcy9nZW9sb2NhdGlvbi9HZW9sb2NhdGlvbkNvbnRyb2xsZXIu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6R2VvbG9jYXRpb25Db250cm9sbGVyOjpHZW9sb2NhdGlv
bkNvbnRyb2xsZXIpOgorICAgICAgICAoV2ViQ29yZTo6R2VvbG9jYXRpb25Db250cm9sbGVyOjp+
R2VvbG9jYXRpb25Db250cm9sbGVyKToKKyAgICAgICAgKFdlYkNvcmU6Okdlb2xvY2F0aW9uQ29u
dHJvbGxlcjo6YWN0aXZpdHlTdGF0ZURpZENoYW5nZSk6CisgICAgICAgIChXZWJDb3JlOjpHZW9s
b2NhdGlvbkNvbnRyb2xsZXI6OnZpZXdTdGF0ZURpZENoYW5nZSk6IERlbGV0ZWQuCisgICAgICAg
ICogTW9kdWxlcy9nZW9sb2NhdGlvbi9HZW9sb2NhdGlvbkNvbnRyb2xsZXIuaDoKKyAgICAgICAg
KiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogcGFnZS9BY3Rp
dml0eVN0YXRlLmg6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvVmlld1N0YXRlLmgu
CisgICAgICAgICogcGFnZS9BY3Rpdml0eVN0YXRlQ2hhbmdlT2JzZXJ2ZXIuaDogQ29waWVkIGZy
b20gU291cmNlL1dlYkNvcmUvcGFnZS9WaWV3U3RhdGVDaGFuZ2VPYnNlcnZlci5oLgorICAgICAg
ICAoV2ViQ29yZTo6QWN0aXZpdHlTdGF0ZUNoYW5nZU9ic2VydmVyOjp+QWN0aXZpdHlTdGF0ZUNo
YW5nZU9ic2VydmVyKToKKyAgICAgICAgKFdlYkNvcmU6OlZpZXdTdGF0ZUNoYW5nZU9ic2VydmVy
Ojp+Vmlld1N0YXRlQ2hhbmdlT2JzZXJ2ZXIpOiBEZWxldGVkLgorICAgICAgICAqIHBhZ2UvRm9j
dXNDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZvY3VzQ29udHJvbGxlcjo6Rm9j
dXNDb250cm9sbGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkZvY3VzQ29udHJvbGxlcjo6c2V0Rm9j
dXNlZCk6CisgICAgICAgIChXZWJDb3JlOjpGb2N1c0NvbnRyb2xsZXI6OnNldEFjdGl2aXR5U3Rh
dGUpOgorICAgICAgICAoV2ViQ29yZTo6Rm9jdXNDb250cm9sbGVyOjpzZXRBY3RpdmUpOgorICAg
ICAgICAoV2ViQ29yZTo6Rm9jdXNDb250cm9sbGVyOjpzZXRWaWV3U3RhdGUpOiBEZWxldGVkLgor
ICAgICAgICAqIHBhZ2UvRm9jdXNDb250cm9sbGVyLmg6CisgICAgICAgIChXZWJDb3JlOjpGb2N1
c0NvbnRyb2xsZXI6OmlzQWN0aXZlKToKKyAgICAgICAgKFdlYkNvcmU6OkZvY3VzQ29udHJvbGxl
cjo6aXNGb2N1c2VkKToKKyAgICAgICAgKFdlYkNvcmU6OkZvY3VzQ29udHJvbGxlcjo6Y29udGVu
dElzVmlzaWJsZSk6CisgICAgICAgICogcGFnZS9QYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlBhZ2U6OlBhZ2UpOgorICAgICAgICAoV2ViQ29yZTo6UGFnZTo6c2V0SXNJbldpbmRvdyk6Cisg
ICAgICAgIChXZWJDb3JlOjpQYWdlOjphZGRBY3Rpdml0eVN0YXRlQ2hhbmdlT2JzZXJ2ZXIpOgor
ICAgICAgICAoV2ViQ29yZTo6UGFnZTo6cmVtb3ZlQWN0aXZpdHlTdGF0ZUNoYW5nZU9ic2VydmVy
KToKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2U6OnVwZGF0ZVRpbWVyVGhyb3R0bGluZ1N0YXRlKToK
KyAgICAgICAgKFdlYkNvcmU6OlBhZ2U6OnNldEFjdGl2aXR5U3RhdGUpOgorICAgICAgICAoV2Vi
Q29yZTo6UGFnZTo6aXNWaXNpYmxlQW5kQWN0aXZlKToKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2U6
OnNldElzVmlzaWJsZSk6CisgICAgICAgIChXZWJDb3JlOjpQYWdlOjphZGRWaWV3U3RhdGVDaGFu
Z2VPYnNlcnZlcik6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpQYWdlOjpyZW1vdmVWaWV3
U3RhdGVDaGFuZ2VPYnNlcnZlcik6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpQYWdlOjpz
ZXRWaWV3U3RhdGUpOiBEZWxldGVkLgorICAgICAgICAqIHBhZ2UvUGFnZS5oOgorICAgICAgICAo
V2ViQ29yZTo6UGFnZTo6aXNWaXNpYmxlKToKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2U6OmlzSW5X
aW5kb3cpOgorICAgICAgICAqIHBhZ2UvUGFnZVRocm90dGxlci5oOgorICAgICAgICAqIHBhZ2Uv
Vmlld1N0YXRlLmg6IFJlbW92ZWQuCisgICAgICAgICogcGFnZS9WaWV3U3RhdGVDaGFuZ2VPYnNl
cnZlci5oOiBSZW1vdmVkLgorCiAyMDE2LTEwLTMxICBOYW4gV2FuZyAgPG5fd2FuZ0BhcHBsZS5j
b20+CiAKICAgICAgICAgQVg6IGFyaWEtc29ydCBpcyBub3QgZXhwb3NlZCBvbiBpT1MKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvZ2VvbG9jYXRpb24vR2VvbG9jYXRpb25Db250cm9sbGVy
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2dlb2xvY2F0aW9uL0dl
b2xvY2F0aW9uQ29udHJvbGxlci5jcHAJKHJldmlzaW9uIDIwODE5NykKKysrIFNvdXJjZS9XZWJD
b3JlL01vZHVsZXMvZ2VvbG9jYXRpb24vR2VvbG9jYXRpb25Db250cm9sbGVyLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMzgsMTQgKzM4LDE0IEBAIEdlb2xvY2F0aW9uQ29udHJvbGxlcjo6R2VvbG9j
YXRpb25Db250cm8KICAgICA6IG1fcGFnZShwYWdlKQogICAgICwgbV9jbGllbnQoY2xpZW50KQog
ewotICAgIG1fcGFnZS5hZGRWaWV3U3RhdGVDaGFuZ2VPYnNlcnZlcigqdGhpcyk7CisgICAgbV9w
YWdlLmFkZEFjdGl2aXR5U3RhdGVDaGFuZ2VPYnNlcnZlcigqdGhpcyk7CiB9CiAKIEdlb2xvY2F0
aW9uQ29udHJvbGxlcjo6fkdlb2xvY2F0aW9uQ29udHJvbGxlcigpCiB7CiAgICAgQVNTRVJUKG1f
b2JzZXJ2ZXJzLmlzRW1wdHkoKSk7CiAKLSAgICAvLyBOT1RFOiBXZSBkb24ndCBoYXZlIHRvIHJl
bW92ZSBvdXJzZWx2ZXMgZnJvbSBwYWdlJ3MgVmlld1N0YXRlQ2hhbmdlT2JzZXJ2ZXIgc2V0LCBz
aW5jZQorICAgIC8vIE5PVEU6IFdlIGRvbid0IGhhdmUgdG8gcmVtb3ZlIG91cnNlbHZlcyBmcm9t
IHBhZ2UncyBBY3Rpdml0eVN0YXRlQ2hhbmdlT2JzZXJ2ZXIgc2V0LCBzaW5jZQogICAgIC8vIHdl
IGFyZSBzdXBwbGVtZW50IG9mIHRoZSBQYWdlLCBhbmQgb3VyIGRlc3RydWN0b3IgZ2V0dGluZyBj
YWxsZWQgbWVhbnMgdGhlIHBhZ2UgaXMgYmVpbmcKICAgICAvLyB0b3JuIGRvd24uCiAKQEAgLTEy
NCwxMiArMTI0LDEyIEBAIEdlb2xvY2F0aW9uUG9zaXRpb24qIEdlb2xvY2F0aW9uQ29udHJvbGwK
ICAgICByZXR1cm4gbV9jbGllbnQubGFzdFBvc2l0aW9uKCk7CiB9CiAKLXZvaWQgR2VvbG9jYXRp
b25Db250cm9sbGVyOjp2aWV3U3RhdGVEaWRDaGFuZ2UoVmlld1N0YXRlOjpGbGFncyBvbGRWaWV3
U3RhdGUsIFZpZXdTdGF0ZTo6RmxhZ3MgbmV3Vmlld1N0YXRlKQordm9pZCBHZW9sb2NhdGlvbkNv
bnRyb2xsZXI6OmFjdGl2aXR5U3RhdGVEaWRDaGFuZ2UoQWN0aXZpdHlTdGF0ZTo6RmxhZ3Mgb2xk
QWN0aXZpdHlTdGF0ZSwgQWN0aXZpdHlTdGF0ZTo6RmxhZ3MgbmV3QWN0aXZpdHlTdGF0ZSkKIHsK
ICAgICAvLyBUb2dnbGUgR1BTIGJhc2VkIG9uIHBhZ2UgdmlzaWJpbGl0eSB0byBzYXZlIGJhdHRl
cnkuCi0gICAgVmlld1N0YXRlOjpGbGFncyBjaGFuZ2VkID0gb2xkVmlld1N0YXRlIF4gbmV3Vmll
d1N0YXRlOwotICAgIGlmIChjaGFuZ2VkICYgVmlld1N0YXRlOjpJc1Zpc2libGUgJiYgIW1fb2Jz
ZXJ2ZXJzLmlzRW1wdHkoKSkgewotICAgICAgICBpZiAobmV3Vmlld1N0YXRlICYgVmlld1N0YXRl
OjpJc1Zpc2libGUpCisgICAgQWN0aXZpdHlTdGF0ZTo6RmxhZ3MgY2hhbmdlZCA9IG9sZEFjdGl2
aXR5U3RhdGUgXiBuZXdBY3Rpdml0eVN0YXRlOworICAgIGlmIChjaGFuZ2VkICYgQWN0aXZpdHlT
dGF0ZTo6SXNWaXNpYmxlICYmICFtX29ic2VydmVycy5pc0VtcHR5KCkpIHsKKyAgICAgICAgaWYg
KG5ld0FjdGl2aXR5U3RhdGUgJiBBY3Rpdml0eVN0YXRlOjpJc1Zpc2libGUpCiAgICAgICAgICAg
ICBtX2NsaWVudC5zdGFydFVwZGF0aW5nKCk7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIG1f
Y2xpZW50LnN0b3BVcGRhdGluZygpOwpJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy9nZW9s
b2NhdGlvbi9HZW9sb2NhdGlvbkNvbnRyb2xsZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2dlb2xvY2F0aW9uL0dlb2xvY2F0aW9uQ29udHJvbGxlci5oCShyZXZpc2lv
biAyMDgxOTcpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2dlb2xvY2F0aW9uL0dlb2xvY2F0
aW9uQ29udHJvbGxlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0yOCw5ICsyOCw5IEBACiAKICNpZiBF
TkFCTEUoR0VPTE9DQVRJT04pCiAKKyNpbmNsdWRlICJBY3Rpdml0eVN0YXRlQ2hhbmdlT2JzZXJ2
ZXIuaCIKICNpbmNsdWRlICJHZW9sb2NhdGlvbi5oIgogI2luY2x1ZGUgIlBhZ2UuaCIKLSNpbmNs
dWRlICJWaWV3U3RhdGVDaGFuZ2VPYnNlcnZlci5oIgogI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+
CiAjaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+CiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgpA
QCAtNDIsNyArNDIsNyBAQCBjbGFzcyBHZW9sb2NhdGlvbkVycm9yOwogY2xhc3MgR2VvbG9jYXRp
b25Qb3NpdGlvbjsKIGNsYXNzIFBhZ2U7CiAKLWNsYXNzIEdlb2xvY2F0aW9uQ29udHJvbGxlciA6
IHB1YmxpYyBTdXBwbGVtZW50PFBhZ2U+LCBwcml2YXRlIFZpZXdTdGF0ZUNoYW5nZU9ic2VydmVy
IHsKK2NsYXNzIEdlb2xvY2F0aW9uQ29udHJvbGxlciA6IHB1YmxpYyBTdXBwbGVtZW50PFBhZ2U+
LCBwcml2YXRlIEFjdGl2aXR5U3RhdGVDaGFuZ2VPYnNlcnZlciB7CiAgICAgV1RGX01BS0VfRkFT
VF9BTExPQ0FURUQ7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoR2VvbG9jYXRpb25Db250cm9s
bGVyKTsKIHB1YmxpYzoKQEAgLTY5LDcgKzY5LDcgQEAgcHJpdmF0ZToKICAgICBQYWdlJiBtX3Bh
Z2U7CiAgICAgR2VvbG9jYXRpb25DbGllbnQmIG1fY2xpZW50OwogCi0gICAgdm9pZCB2aWV3U3Rh
dGVEaWRDaGFuZ2UoVmlld1N0YXRlOjpGbGFncyBvbGRWaWV3U3RhdGUsIFZpZXdTdGF0ZTo6Rmxh
Z3MgbmV3Vmlld1N0YXRlKSBvdmVycmlkZTsKKyAgICB2b2lkIGFjdGl2aXR5U3RhdGVEaWRDaGFu
Z2UoQWN0aXZpdHlTdGF0ZTo6RmxhZ3Mgb2xkQWN0aXZpdHlTdGF0ZSwgQWN0aXZpdHlTdGF0ZTo6
RmxhZ3MgbmV3QWN0aXZpdHlTdGF0ZSkgb3ZlcnJpZGU7CiAKICAgICBSZWZQdHI8R2VvbG9jYXRp
b25Qb3NpdGlvbj4gbV9sYXN0UG9zaXRpb247CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1dlYkNv
cmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDIwODE5NykKKysr
IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2lu
ZyBjb3B5KQpAQCAtMjY4Niw2ICsyNjg2LDggQEAKIAkJNzI0RUQzMkMxQTNBN0U1NDAwRjVGMTND
IC8qIEVYVEJsZW5kTWluTWF4LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDcyNEVEMzI5MUEzQTdFNTQwMEY1RjEzQyAvKiBFWFRCbGVuZE1pbk1heC5j
cHAgKi87IH07CiAJCTcyNEVEMzMxMUEzQThCMjMwMEY1RjEzQyAvKiBKU0VYVEJsZW5kTWluTWF4
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDcyNEVE
MzJGMUEzQThCMjMwMEY1RjEzQyAvKiBKU0VYVEJsZW5kTWluTWF4LmNwcCAqLzsgfTsKIAkJNzI0
RUQzMzIxQTNBOEIyMzAwRjVGMTNDIC8qIEpTRVhUQmxlbmRNaW5NYXguaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDcyNEVEMzMwMUEzQThCMjMwMEY1RjEz
QyAvKiBKU0VYVEJsZW5kTWluTWF4LmggKi87IH07CisJCTcyNEVFNTUwMURDODBEN0YwMEE5MUZG
QiAvKiBBY3Rpdml0eVN0YXRlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA3MjRFRTU0RTFEQzdGMjVCMDBBOTFGRkIgLyogQWN0aXZpdHlTdGF0ZS5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTcyNEVFNTUx
MURDODBEODQwMEE5MUZGQiAvKiBBY3Rpdml0eVN0YXRlQ2hhbmdlT2JzZXJ2ZXIuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDcyNEVFNTRGMURDN0YyNUIw
MEE5MUZGQiAvKiBBY3Rpdml0eVN0YXRlQ2hhbmdlT2JzZXJ2ZXIuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk3MjdBRkVENDFBMkVBNkFFMDAwNDQy
RTggLyogRVhUc1JHQi5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA3MjdBRkVEMTFBMkVBNkEwMDAwNDQyRTggLyogRVhUc1JHQi5jcHAgKi87IH07CiAJ
CTcyRTQxNzYzMUEyRThEMkYwMDRDNTYyQSAvKiBKU0VYVHNSR0IuY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzJFNDE3NjExQTJFOEQyRjAwNEM1NjJB
IC8qIEpTRVhUc1JHQi5jcHAgKi87IH07CiAJCTcyRjFBREEyMUEzOTA0REMwMDAxNEUxOCAvKiBF
WFRGcmFnRGVwdGguY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNzJGMUFEOUYxQTM5MDRDMzAwMDE0RTE4IC8qIEVYVEZyYWdEZXB0aC5jcHAgKi87IH07
CkBAIC0yODUxLDcgKzI4NTMsNiBAQAogCQk3Q0QwQkEwNTFCOEY3OUM5MDA1Q0VCQkUgLyogQWN0
aXZlRE9NQ2FsbGJhY2tNaWNyb3Rhc2suaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDdDRDBCQTAzMUI4Rjc5QzkwMDVDRUJCRSAvKiBBY3RpdmVET01DYWxs
YmFja01pY3JvdGFzay5oICovOyB9OwogCQk3Q0Q0OTRDQzFBODZFQjFEMDAwQTg3RUMgLyogUmVu
ZGVyQXR0YWNobWVudC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA3Q0Q0OTRDQTFBODZFQjFEMDAwQTg3RUMgLyogUmVuZGVyQXR0YWNobWVudC5jcHAg
Ki87IH07CiAJCTdDRDQ5NENEMUE4NkVCMUQwMDBBODdFQyAvKiBSZW5kZXJBdHRhY2htZW50Lmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3Q0Q0OTRDQjFB
ODZFQjFEMDAwQTg3RUMgLyogUmVuZGVyQXR0YWNobWVudC5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07Ci0JCTdDREVFRTFFMTk3NjEwRDcwMEUzNTJDRCAv
KiBWaWV3U3RhdGVDaGFuZ2VPYnNlcnZlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gN0NERUVFMUQxOTc2MTBENzAwRTM1MkNEIC8qIFZpZXdTdGF0ZUNo
YW5nZU9ic2VydmVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKIAkJN0NFNjgzNDQxOTIxNDNBODAwRjREOTI4IC8qIFVzZXJNZXNzYWdlSGFuZGxlckRl
c2NyaXB0b3IuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gN0NFNjgzNDIxOTIxNDNBODAwRjREOTI4IC8qIFVzZXJNZXNzYWdlSGFuZGxlckRlc2NyaXB0
b3IuY3BwICovOyB9OwogCQk3Q0U2ODM0NTE5MjE0M0E4MDBGNEQ5MjggLyogVXNlck1lc3NhZ2VI
YW5kbGVyRGVzY3JpcHRvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gN0NFNjgzNDMxOTIxNDNBODAwRjREOTI4IC8qIFVzZXJNZXNzYWdlSGFuZGxlckRl
c2NyaXB0b3IuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OwogCQk3Q0U2ODM0NzE5MjE4MjE1MDBGNEQ5MjggLyogVXNlck1lc3NhZ2VIYW5kbGVyRGVzY3Jp
cHRvclR5cGVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA3Q0U2ODM0NjE5MjE4MjE1MDBGNEQ5MjggLyogVXNlck1lc3NhZ2VIYW5kbGVyRGVzY3JpcHRv
clR5cGVzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
QEAgLTMxMjUsNyArMzEyNiw2IEBACiAJCTg2MkYxMkEwMThDMUREMDIwMDVDNTRBRiAvKiBIeXN0
ZXJlc2lzQWN0aXZpdHkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDg2MkYxMjlGMThDMURDRTQwMDVDNTRBRiAvKiBIeXN0ZXJlc2lzQWN0aXZpdHkuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk4NjUxMkVE
RTE1NEEyQUVGMDBBOTA0MjYgLyogUGVyZm9ybWFuY2VSZXNvdXJjZVRpbWluZy5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NjUxMkVEQjE1NEEyQUVF
MDBBOTA0MjYgLyogUGVyZm9ybWFuY2VSZXNvdXJjZVRpbWluZy5jcHAgKi87IH07CiAJCTg2NTEy
RURGMTU0QTJBRUYwMEE5MDQyNiAvKiBQZXJmb3JtYW5jZVJlc291cmNlVGltaW5nLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NjUxMkVEQzE1NEEyQUVG
MDBBOTA0MjYgLyogUGVyZm9ybWFuY2VSZXNvdXJjZVRpbWluZy5oICovOyB9OwotCQk4Njc4RDBC
QjE4NzhFODkxMDAzQUJERTYgLyogVmlld1N0YXRlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4Njc4RDBCQTE4NzhFODEwMDAzQUJERTYgLyogVmlld1N0
YXRlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJ
ODY4MTYwRDQxODc2NkEwQTAwMjFFNzlEIC8qIFVzZXJBY3Rpdml0eS5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NjgxNjBEMTE4NzY2OUM0MDAyMUU3
OUQgLyogVXNlckFjdGl2aXR5LmNwcCAqLzsgfTsKIAkJODY4MTYwRDUxODc2NkEwRTAwMjFFNzlE
IC8qIFVzZXJBY3Rpdml0eU1hYy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDg2ODE2MEQzMTg3NjY5RTcwMDIxRTc5RCAvKiBVc2VyQWN0aXZpdHlNYWMu
bW0gKi87IH07CiAJCTg2ODE2MEQ2MTg3NjZBMTMwMDIxRTc5RCAvKiBVc2VyQWN0aXZpdHkuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2ODE2MEQyMTg3
NjY5QzQwMDIxRTc5RCAvKiBVc2VyQWN0aXZpdHkuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtMTAwMTIsNiArMTAwMTIsOCBAQAogCQk3MjRFRDMy
QjFBM0E3RTU0MDBGNUYxM0MgLyogRVhUQmxlbmRNaW5NYXguaWRsICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsg
cGF0aCA9IEVYVEJsZW5kTWluTWF4LmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
NzI0RUQzMkYxQTNBOEIyMzAwRjVGMTNDIC8qIEpTRVhUQmxlbmRNaW5NYXguY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNFWFRCbGVuZE1pbk1heC5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTcyNEVEMzMwMUEzQThCMjMwMEY1RjEzQyAvKiBKU0VY
VEJsZW5kTWluTWF4LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTRVhUQmxl
bmRNaW5NYXguaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNzI0RUU1NEUxREM3RjI1
QjAwQTkxRkZCIC8qIEFjdGl2aXR5U3RhdGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gQWN0aXZpdHlTdGF0ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3MjRF
RTU0RjFEQzdGMjVCMDBBOTFGRkIgLyogQWN0aXZpdHlTdGF0ZUNoYW5nZU9ic2VydmVyLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEFjdGl2aXR5U3RhdGVDaGFuZ2VPYnNlcnZl
ci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3MjdBRkVEMTFBMkVBNkEwMDAwNDQy
RTggLyogRVhUc1JHQi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBF
WFRzUkdCLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzI3QUZFRDIxQTJFQTZB
MDAwMDQ0MkU4IC8qIEVYVHNSR0IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
RVhUc1JHQi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3MjdBRkVEMzFBMkVBNkEw
MDAwNDQyRTggLyogRVhUc1JHQi5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gRVhUc1JHQi5p
ZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xMDIwNiw3ICsxMDIwOCw2IEBACiAJ
CTdDRDBCQTAzMUI4Rjc5QzkwMDVDRUJCRSAvKiBBY3RpdmVET01DYWxsYmFja01pY3JvdGFzay5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBY3RpdmVET01DYWxsYmFja01pY3Jv
dGFzay5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3Q0Q0OTRDQTFBODZFQjFEMDAw
QTg3RUMgLyogUmVuZGVyQXR0YWNobWVudC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBSZW5kZXJBdHRhY2htZW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJN0NENDk0Q0IxQTg2RUIxRDAwMEE4N0VDIC8qIFJlbmRlckF0dGFjaG1lbnQuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVuZGVyQXR0YWNobWVudC5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwotCQk3Q0RFRUUxRDE5NzYxMEQ3MDBFMzUyQ0QgLyogVmlld1N0
YXRlQ2hhbmdlT2JzZXJ2ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVmll
d1N0YXRlQ2hhbmdlT2JzZXJ2ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0NF
NjgzNDIxOTIxNDNBODAwRjREOTI4IC8qIFVzZXJNZXNzYWdlSGFuZGxlckRlc2NyaXB0b3IuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gVXNlck1lc3NhZ2VIYW5kbGVy
RGVzY3JpcHRvci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdDRTY4MzQzMTky
MTQzQTgwMEY0RDkyOCAvKiBVc2VyTWVzc2FnZUhhbmRsZXJEZXNjcmlwdG9yLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFVzZXJNZXNzYWdlSGFuZGxlckRlc2NyaXB0b3IuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0NFNjgzNDYxOTIxODIxNTAwRjREOTI4IC8q
IFVzZXJNZXNzYWdlSGFuZGxlckRlc2NyaXB0b3JUeXBlcy5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBVc2VyTWVzc2FnZUhhbmRsZXJEZXNjcmlwdG9yVHlwZXMuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTEwNTM5LDcgKzEwNTQwLDYgQEAKIAkJODY1MTJFREIx
NTRBMkFFRTAwQTkwNDI2IC8qIFBlcmZvcm1hbmNlUmVzb3VyY2VUaW1pbmcuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUGVyZm9ybWFuY2VSZXNvdXJjZVRpbWluZy5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTg2NTEyRURDMTU0QTJBRUYwMEE5MDQy
NiAvKiBQZXJmb3JtYW5jZVJlc291cmNlVGltaW5nLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IFBlcmZvcm1hbmNlUmVzb3VyY2VUaW1pbmcuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJODY1MTJFREQxNTRBMkFFRjAwQTkwNDI2IC8qIFBlcmZvcm1hbmNlUmVzb3Vy
Y2VUaW1pbmcuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IFBlcmZvcm1hbmNlUmVzb3VyY2VU
aW1pbmcuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk4Njc4RDBCQTE4NzhFODEw
MDAzQUJERTYgLyogVmlld1N0YXRlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFZpZXdTdGF0ZS5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4NjgxNjBEMTE4NzY2OUM0MDAyMUU3OUQgLyogVXNl
ckFjdGl2aXR5LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFVzZXJBY3Rpdml0eS5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTg2ODE2MEQyMTg3NjY5QzQwMDIxRTc5RCAvKiBVc2Vy
QWN0aXZpdHkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVXNlckFjdGl2aXR5Lmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTg2ODE2MEQzMTg3NjY5RTcwMDIxRTc5RCAvKiBVc2VyQWN0aXZpdHlN
YWMubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBVc2VyQWN0aXZpdHlNYWMubW07IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xNzU5Nyw2ICsxNzU5Nyw4IEBACiAJCQkJMThBNkNENkYw
RDhGMjAyNTAwMURDM0NFIC8qIGlvcyAqLywKIAkJCQk5M0MwOUE4MjBCMDY0RjA1MDA1QUJENEQg
LyogbWFjICovLAogCQkJCTFBRjYyRUUxMTREQTIyQTcwMDQxNTU2QyAvKiBzY3JvbGxpbmcgKi8s
CisJCQkJNzI0RUU1NEUxREM3RjI1QjAwQTkxRkZCIC8qIEFjdGl2aXR5U3RhdGUuaCAqLywKKwkJ
CQk3MjRFRTU0RjFEQzdGMjVCMDBBOTFGRkIgLyogQWN0aXZpdHlTdGF0ZUNoYW5nZU9ic2VydmVy
LmggKi8sCiAJCQkJQkNGNDhDRTYxMzcwRDExNDAwNEU4N0Q2IC8qIEFkanVzdFZpZXdTaXplT3JO
b3QuaCAqLywKIAkJCQlDRURBMTJENjE1MkNBMUNCMDBEOUUwOEQgLyogQWx0ZXJuYXRpdmVUZXh0
Q2xpZW50LmggKi8sCiAJCQkJNDU4MzBENEIxNjc5QjRGODAwQUNGOEMzIC8qIEF1dG9zY3JvbGxD
b250cm9sbGVyLmNwcCAqLywKQEAgLTE3Nzk2LDggKzE3Nzk4LDYgQEAKIAkJCQlGNTEzQTNFOTE1
RkY0ODQxMDAxNTI2REIgLyogVmFsaWRhdGlvbk1lc3NhZ2VDbGllbnQuaCAqLywKIAkJCQkyNkY5
QTgzNjE4QTA0NkFDMDBBRUI4OEEgLyogVmlld3BvcnRDb25maWd1cmF0aW9uLmNwcCAqLywKIAkJ
CQkyNkY5QTgzNzE4QTA0NkFDMDBBRUI4OEEgLyogVmlld3BvcnRDb25maWd1cmF0aW9uLmggKi8s
Ci0JCQkJODY3OEQwQkExODc4RTgxMDAwM0FCREU2IC8qIFZpZXdTdGF0ZS5oICovLAotCQkJCTdD
REVFRTFEMTk3NjEwRDcwMEUzNTJDRCAvKiBWaWV3U3RhdGVDaGFuZ2VPYnNlcnZlci5oICovLAog
CQkJCTFBRjRDRUVCMThCQzNDMUIwMEJDMkQzNCAvKiBWaXNpdGVkTGlua1N0b3JlLmNwcCAqLywK
IAkJCQkxQUJBN0ZGRjE4OTczNDEyMDBEQ0U5RDYgLyogVmlzaXRlZExpbmtTdG9yZS5oICovLAog
CQkJCUJFOTgzRDk1MDUyQTJFMEEwMDg5MkQ4NSAvKiBXZWJDb3JlS2V5Ym9hcmRVSU1vZGUuaCAq
LywKQEAgLTI2NDA1LDYgKzI2NDA1LDcgQEAKIAkJCQlDOTA4NDNEMDFCMThFNDdEMDBCNjg1NjQg
LyogTWVkaWFSZW1vdGVDb250cm9scy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQ0Q4QUNBOEYxRDIz
OTcxOTAwRUNDNTlFIC8qIE1lZGlhUmVtb3RlU29mdExpbmsuaCBpbiBIZWFkZXJzICovLAogCQkJ
CUNEOEFDQThCMUQyMzk0NjQwMEVDQzU5RSAvKiBNZWRpYVJlbW90ZVNQSS5oIGluIEhlYWRlcnMg
Ki8sCisJCQkJNzI0RUU1NTExREM4MEQ4NDAwQTkxRkZCIC8qIEFjdGl2aXR5U3RhdGVDaGFuZ2VP
YnNlcnZlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQ0VFRkNEN0ExOURCMzFGNzAwMzg3NkQ3IC8q
IE1lZGlhUmVzb3VyY2VMb2FkZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTFCRjlEQjNDMUQzOTcz
QUQwMDI2QUVCNyAvKiBNZWRpYVNhbXBsZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUIxMjREOEQx
RDM4MEI3MDAwRUNERkIwIC8qIE1lZGlhU2FtcGxlQVZGT2JqQy5oIGluIEhlYWRlcnMgKi8sCkBA
IC0yNzcxMiw4ICsyNzcxMyw2IEBACiAJCQkJQ0VGNDE4Q0YxMTc5Njc4QzAwOUQxMTJDIC8qIFZp
ZXdwb3J0QXJndW1lbnRzLmggaW4gSGVhZGVycyAqLywKIAkJCQkyNkY5QTgzOTE4QTA0NkFDMDBB
RUI4OEEgLyogVmlld3BvcnRDb25maWd1cmF0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQkzRkZG
RjlBRTE1OUQ5QjA2MDAyMEJCRDUgLyogVmlld3BvcnRTdHlsZVJlc29sdmVyLmggaW4gSGVhZGVy
cyAqLywKLQkJCQk4Njc4RDBCQjE4NzhFODkxMDAzQUJERTYgLyogVmlld1N0YXRlLmggaW4gSGVh
ZGVycyAqLywKLQkJCQk3Q0RFRUUxRTE5NzYxMEQ3MDBFMzUyQ0QgLyogVmlld1N0YXRlQ2hhbmdl
T2JzZXJ2ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTkzMzA5RTIwMDk5RTY0OTIwMDU2RTU4MSAv
KiBWaXNpYmxlUG9zaXRpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCUE4ODNERjI4MEYzRDA0NUQw
MEYxOUJGNiAvKiBWaXNpYmxlU2VsZWN0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQk5MzMwOUUx
RTA5OUU2NDkyMDA1NkU1ODEgLyogVmlzaWJsZVVuaXRzLmggaW4gSGVhZGVycyAqLywKQEAgLTI3
ODc1LDYgKzI3ODc0LDcgQEAKIAkJCQlCMTBCNjk4MDE0MEMxNzQwMDBCQzFDMjYgLyogV2ViVlRU
VG9rZW4uaCBpbiBIZWFkZXJzICovLAogCQkJCUIxMEI2OTgyMTQwQzE3NDAwMEJDMUMyNiAvKiBX
ZWJWVFRUb2tlbml6ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUNEODIwMzEwMTM5NUFDRTcwMEY5
NTZDNiAvKiBXZWJXaW5kb3dBbmltYXRpb24uaCBpbiBIZWFkZXJzICovLAorCQkJCTcyNEVFNTUw
MURDODBEN0YwMEE5MUZGQiAvKiBBY3Rpdml0eVN0YXRlLmggaW4gSGVhZGVycyAqLywKIAkJCQlG
NTVCM0RFMDEyNTFGMTJEMDAzRUYyNjkgLyogV2Vla0lucHV0VHlwZS5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJODUwMzFCNTEwQTQ0RUZDNzAwRjk5MkUwIC8qIFdoZWVsRXZlbnQuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTJFQkJDM0Q4MUI2NTk4ODMwMEY1MjUzRCAvKiBXaGVlbEV2ZW50RGVsdGFGaWx0
ZXIuaCBpbiBIZWFkZXJzICovLApJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9BY3Rpdml0eVN0
YXRlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9BY3Rpdml0eVN0YXRlLmgJ
KHJldmlzaW9uIDIwODE5NykJKGZyb20gU291cmNlL1dlYkNvcmUvcGFnZS9WaWV3U3RhdGUuaDoy
MDgxOTcpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL0FjdGl2aXR5U3RhdGUuaAkod29ya2luZyBj
b3B5KQpAQCAtMCwwICsxLDQ2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisg
KiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICog
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKK25hbWVz
cGFjZSBXZWJDb3JlIHsKKworc3RydWN0IFZpZXdTdGF0ZSB7CisgICAgZW51bSB7CisgICAgICAg
IFdpbmRvd0lzQWN0aXZlID0gMSA8PCAwLAorICAgICAgICBJc0ZvY3VzZWQgPSAxIDw8IDEsCisg
ICAgICAgIElzVmlzaWJsZSA9IDEgPDwgMiwKKyAgICAgICAgSXNWaXNpYmxlT3JPY2NsdWRlZCA9
IDEgPDwgMywKKyAgICAgICAgSXNJbldpbmRvdyA9IDEgPDwgNCwKKyAgICAgICAgSXNWaXN1YWxs
eUlkbGUgPSAxIDw8IDUsCisgICAgfTsKKworICAgIHR5cGVkZWYgdW5zaWduZWQgRmxhZ3M7CisK
KyAgICBzdGF0aWMgY29uc3QgRmxhZ3MgTm9GbGFncyA9IDA7CisgICAgc3RhdGljIGNvbnN0IEZs
YWdzIEFsbEZsYWdzID0gV2luZG93SXNBY3RpdmUgfCBJc0ZvY3VzZWQgfCBJc1Zpc2libGUgfCBJ
c1Zpc2libGVPck9jY2x1ZGVkIHwgSXNJbldpbmRvdyB8IElzVmlzdWFsbHlJZGxlOworfTsKKwor
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9BY3Rpdml0
eVN0YXRlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9BY3Rpdml0eVN0YXRl
LmgJKHJldmlzaW9uIDIwODE5NykKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvQWN0aXZpdHlTdGF0
ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNyw3ICsyNyw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAotc3RydWN0IFZpZXdTdGF0ZSB7CitzdHJ1Y3QgQWN0aXZpdHlTdGF0ZSB7CiAgICAgZW51
bSB7CiAgICAgICAgIFdpbmRvd0lzQWN0aXZlID0gMSA8PCAwLAogICAgICAgICBJc0ZvY3VzZWQg
PSAxIDw8IDEsCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL0FjdGl2aXR5U3RhdGVDaGFuZ2VP
YnNlcnZlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvQWN0aXZpdHlTdGF0
ZUNoYW5nZU9ic2VydmVyLmgJKHJldmlzaW9uIDIwODE5NykJKGZyb20gU291cmNlL1dlYkNvcmUv
cGFnZS9WaWV3U3RhdGVDaGFuZ2VPYnNlcnZlci5oOjIwODE5NykKKysrIFNvdXJjZS9XZWJDb3Jl
L3BhZ2UvQWN0aXZpdHlTdGF0ZUNoYW5nZU9ic2VydmVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTAs
MCArMSw0MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
CisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiVmlld1N0
YXRlLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgVmlld1N0YXRlQ2hhbmdlT2Jz
ZXJ2ZXIgeworcHVibGljOgorICAgIHZpcnR1YWwgflZpZXdTdGF0ZUNoYW5nZU9ic2VydmVyKCkK
KyAgICB7CisgICAgfQorICAgIAorICAgIHZpcnR1YWwgdm9pZCB2aWV3U3RhdGVEaWRDaGFuZ2Uo
Vmlld1N0YXRlOjpGbGFncyBvbGRWaWV3U3RhdGUsIFZpZXdTdGF0ZTo6RmxhZ3MgbmV3Vmlld1N0
YXRlKSA9IDA7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9wYWdlL0FjdGl2aXR5U3RhdGVDaGFuZ2VPYnNlcnZlci5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3BhZ2UvQWN0aXZpdHlTdGF0ZUNoYW5nZU9ic2VydmVyLmgJKHJldmlzaW9u
IDIwODE5NykKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvQWN0aXZpdHlTdGF0ZUNoYW5nZU9ic2Vy
dmVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTI1LDE3ICsyNSwxNyBAQAogCiAjcHJhZ21hIG9uY2UK
IAotI2luY2x1ZGUgIlZpZXdTdGF0ZS5oIgorI2luY2x1ZGUgIkFjdGl2aXR5U3RhdGUuaCIKIAog
bmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBWaWV3U3RhdGVDaGFuZ2VPYnNlcnZlciB7Citj
bGFzcyBBY3Rpdml0eVN0YXRlQ2hhbmdlT2JzZXJ2ZXIgewogcHVibGljOgotICAgIHZpcnR1YWwg
flZpZXdTdGF0ZUNoYW5nZU9ic2VydmVyKCkKKyAgICB2aXJ0dWFsIH5BY3Rpdml0eVN0YXRlQ2hh
bmdlT2JzZXJ2ZXIoKQogICAgIHsKICAgICB9CiAgICAgCi0gICAgdmlydHVhbCB2b2lkIHZpZXdT
dGF0ZURpZENoYW5nZShWaWV3U3RhdGU6OkZsYWdzIG9sZFZpZXdTdGF0ZSwgVmlld1N0YXRlOjpG
bGFncyBuZXdWaWV3U3RhdGUpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgYWN0aXZpdHlTdGF0ZURp
ZENoYW5nZShBY3Rpdml0eVN0YXRlOjpGbGFncyBvbGRBY3Rpdml0eVN0YXRlLCBBY3Rpdml0eVN0
YXRlOjpGbGFncyBuZXdBY3Rpdml0eVN0YXRlKSA9IDA7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL0ZvY3VzQ29udHJvbGxlci5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9Gb2N1c0NvbnRyb2xsZXIuY3BwCShyZXZp
c2lvbiAyMDgxOTcpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL0ZvY3VzQ29udHJvbGxlci5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTMxMywxMCArMzEzLDEwIEBAIHN0YXRpYyBpbmxpbmUgaW50IHNo
YWRvd0FkanVzdGVkVGFiSW5kZXgKICAgICByZXR1cm4gZWxlbWVudC50YWJJbmRleCgpOwogfQog
Ci1Gb2N1c0NvbnRyb2xsZXI6OkZvY3VzQ29udHJvbGxlcihQYWdlJiBwYWdlLCBWaWV3U3RhdGU6
OkZsYWdzIHZpZXdTdGF0ZSkKK0ZvY3VzQ29udHJvbGxlcjo6Rm9jdXNDb250cm9sbGVyKFBhZ2Um
IHBhZ2UsIEFjdGl2aXR5U3RhdGU6OkZsYWdzIGFjdGl2aXR5U3RhdGUpCiAgICAgOiBtX3BhZ2Uo
cGFnZSkKICAgICAsIG1faXNDaGFuZ2luZ0ZvY3VzZWRGcmFtZShmYWxzZSkKLSAgICAsIG1fdmll
d1N0YXRlKHZpZXdTdGF0ZSkKKyAgICAsIG1fYWN0aXZpdHlTdGF0ZShhY3Rpdml0eVN0YXRlKQog
ICAgICwgbV9mb2N1c1JlcGFpbnRUaW1lcigqdGhpcywgJkZvY3VzQ29udHJvbGxlcjo6Zm9jdXNS
ZXBhaW50VGltZXJGaXJlZCkKIHsKIH0KQEAgLTM1OSw3ICszNTksNyBAQCBGcmFtZSYgRm9jdXND
b250cm9sbGVyOjpmb2N1c2VkT3JNYWluRnJhCiAKIHZvaWQgRm9jdXNDb250cm9sbGVyOjpzZXRG
b2N1c2VkKGJvb2wgZm9jdXNlZCkKIHsKLSAgICBtX3BhZ2Uuc2V0Vmlld1N0YXRlKGZvY3VzZWQg
PyBtX3ZpZXdTdGF0ZSB8IFZpZXdTdGF0ZTo6SXNGb2N1c2VkIDogbV92aWV3U3RhdGUgJiB+Vmll
d1N0YXRlOjpJc0ZvY3VzZWQpOworICAgIG1fcGFnZS5zZXRBY3Rpdml0eVN0YXRlKGZvY3VzZWQg
PyBtX2FjdGl2aXR5U3RhdGUgfCBBY3Rpdml0eVN0YXRlOjpJc0ZvY3VzZWQgOiBtX2FjdGl2aXR5
U3RhdGUgJiB+QWN0aXZpdHlTdGF0ZTo6SXNGb2N1c2VkKTsKIH0KIAogdm9pZCBGb2N1c0NvbnRy
b2xsZXI6OnNldEZvY3VzZWRJbnRlcm5hbChib29sIGZvY3VzZWQpCkBAIC04MjUsMjMgKzgyNSwy
MyBAQCBib29sIEZvY3VzQ29udHJvbGxlcjo6c2V0Rm9jdXNlZEVsZW1lbnQoCiAgICAgcmV0dXJu
IHRydWU7CiB9CiAKLXZvaWQgRm9jdXNDb250cm9sbGVyOjpzZXRWaWV3U3RhdGUoVmlld1N0YXRl
OjpGbGFncyB2aWV3U3RhdGUpCit2b2lkIEZvY3VzQ29udHJvbGxlcjo6c2V0QWN0aXZpdHlTdGF0
ZShBY3Rpdml0eVN0YXRlOjpGbGFncyBhY3Rpdml0eVN0YXRlKQogewotICAgIFZpZXdTdGF0ZTo6
RmxhZ3MgY2hhbmdlZCA9IG1fdmlld1N0YXRlIF4gdmlld1N0YXRlOwotICAgIG1fdmlld1N0YXRl
ID0gdmlld1N0YXRlOworICAgIEFjdGl2aXR5U3RhdGU6OkZsYWdzIGNoYW5nZWQgPSBtX2FjdGl2
aXR5U3RhdGUgXiBhY3Rpdml0eVN0YXRlOworICAgIG1fYWN0aXZpdHlTdGF0ZSA9IGFjdGl2aXR5
U3RhdGU7CiAKLSAgICBpZiAoY2hhbmdlZCAmIFZpZXdTdGF0ZTo6SXNGb2N1c2VkKQotICAgICAg
ICBzZXRGb2N1c2VkSW50ZXJuYWwodmlld1N0YXRlICYgVmlld1N0YXRlOjpJc0ZvY3VzZWQpOwot
ICAgIGlmIChjaGFuZ2VkICYgVmlld1N0YXRlOjpXaW5kb3dJc0FjdGl2ZSkgewotICAgICAgICBz
ZXRBY3RpdmVJbnRlcm5hbCh2aWV3U3RhdGUgJiBWaWV3U3RhdGU6OldpbmRvd0lzQWN0aXZlKTsK
LSAgICAgICAgaWYgKGNoYW5nZWQgJiBWaWV3U3RhdGU6OklzVmlzaWJsZSkKLSAgICAgICAgICAg
IHNldElzVmlzaWJsZUFuZEFjdGl2ZUludGVybmFsKHZpZXdTdGF0ZSAmIFZpZXdTdGF0ZTo6V2lu
ZG93SXNBY3RpdmUpOworICAgIGlmIChjaGFuZ2VkICYgQWN0aXZpdHlTdGF0ZTo6SXNGb2N1c2Vk
KQorICAgICAgICBzZXRGb2N1c2VkSW50ZXJuYWwoYWN0aXZpdHlTdGF0ZSAmIEFjdGl2aXR5U3Rh
dGU6OklzRm9jdXNlZCk7CisgICAgaWYgKGNoYW5nZWQgJiBBY3Rpdml0eVN0YXRlOjpXaW5kb3dJ
c0FjdGl2ZSkgeworICAgICAgICBzZXRBY3RpdmVJbnRlcm5hbChhY3Rpdml0eVN0YXRlICYgQWN0
aXZpdHlTdGF0ZTo6V2luZG93SXNBY3RpdmUpOworICAgICAgICBpZiAoY2hhbmdlZCAmIEFjdGl2
aXR5U3RhdGU6OklzVmlzaWJsZSkKKyAgICAgICAgICAgIHNldElzVmlzaWJsZUFuZEFjdGl2ZUlu
dGVybmFsKGFjdGl2aXR5U3RhdGUgJiBBY3Rpdml0eVN0YXRlOjpXaW5kb3dJc0FjdGl2ZSk7CiAg
ICAgfQogfQogCiB2b2lkIEZvY3VzQ29udHJvbGxlcjo6c2V0QWN0aXZlKGJvb2wgYWN0aXZlKQog
ewotICAgIG1fcGFnZS5zZXRWaWV3U3RhdGUoYWN0aXZlID8gbV92aWV3U3RhdGUgfCBWaWV3U3Rh
dGU6OldpbmRvd0lzQWN0aXZlIDogbV92aWV3U3RhdGUgJiB+Vmlld1N0YXRlOjpXaW5kb3dJc0Fj
dGl2ZSk7CisgICAgbV9wYWdlLnNldEFjdGl2aXR5U3RhdGUoYWN0aXZlID8gbV9hY3Rpdml0eVN0
YXRlIHwgQWN0aXZpdHlTdGF0ZTo6V2luZG93SXNBY3RpdmUgOiBtX2FjdGl2aXR5U3RhdGUgJiB+
QWN0aXZpdHlTdGF0ZTo6V2luZG93SXNBY3RpdmUpOwogfQogCiB2b2lkIEZvY3VzQ29udHJvbGxl
cjo6c2V0QWN0aXZlSW50ZXJuYWwoYm9vbCBhY3RpdmUpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9w
YWdlL0ZvY3VzQ29udHJvbGxlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2Uv
Rm9jdXNDb250cm9sbGVyLmgJKHJldmlzaW9uIDIwODE5NykKKysrIFNvdXJjZS9XZWJDb3JlL3Bh
Z2UvRm9jdXNDb250cm9sbGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTI1LDEwICsyNSwxMCBAQAog
CiAjcHJhZ21hIG9uY2UKIAorI2luY2x1ZGUgIkFjdGl2aXR5U3RhdGUuaCIKICNpbmNsdWRlICJG
b2N1c0RpcmVjdGlvbi5oIgogI2luY2x1ZGUgIkxheW91dFJlY3QuaCIKICNpbmNsdWRlICJUaW1l
ci5oIgotI2luY2x1ZGUgIlZpZXdTdGF0ZS5oIgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAj
aW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+CiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgpAQCAt
NTEsNyArNTEsNyBAQCBjbGFzcyBUcmVlU2NvcGU7CiBjbGFzcyBGb2N1c0NvbnRyb2xsZXIgewog
ICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEZvY3VzQ29udHJvbGxlcik7IFdURl9NQUtFX0ZBU1Rf
QUxMT0NBVEVEOwogcHVibGljOgotICAgIGV4cGxpY2l0IEZvY3VzQ29udHJvbGxlcihQYWdlJiwg
Vmlld1N0YXRlOjpGbGFncyk7CisgICAgZXhwbGljaXQgRm9jdXNDb250cm9sbGVyKFBhZ2UmLCBB
Y3Rpdml0eVN0YXRlOjpGbGFncyk7CiAKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldEZvY3Vz
ZWRGcmFtZShQYXNzUmVmUHRyPEZyYW1lPik7CiAgICAgRnJhbWUqIGZvY3VzZWRGcmFtZSgpIGNv
bnN0IHsgcmV0dXJuIG1fZm9jdXNlZEZyYW1lLmdldCgpOyB9CkBAIC02MiwxNSArNjIsMTUgQEAg
cHVibGljOgogCiAgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBzZXRGb2N1c2VkRWxlbWVudChFbGVt
ZW50KiwgUGFzc1JlZlB0cjxGcmFtZT4sIEZvY3VzRGlyZWN0aW9uID0gRm9jdXNEaXJlY3Rpb25O
b25lKTsKIAotICAgIHZvaWQgc2V0Vmlld1N0YXRlKFZpZXdTdGF0ZTo6RmxhZ3MpOworICAgIHZv
aWQgc2V0QWN0aXZpdHlTdGF0ZShBY3Rpdml0eVN0YXRlOjpGbGFncyk7CiAKICAgICBXRUJDT1JF
X0VYUE9SVCB2b2lkIHNldEFjdGl2ZShib29sKTsKLSAgICBib29sIGlzQWN0aXZlKCkgY29uc3Qg
eyByZXR1cm4gbV92aWV3U3RhdGUgJiBWaWV3U3RhdGU6OldpbmRvd0lzQWN0aXZlOyB9CisgICAg
Ym9vbCBpc0FjdGl2ZSgpIGNvbnN0IHsgcmV0dXJuIG1fYWN0aXZpdHlTdGF0ZSAmIEFjdGl2aXR5
U3RhdGU6OldpbmRvd0lzQWN0aXZlOyB9CiAKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldEZv
Y3VzZWQoYm9vbCk7Ci0gICAgYm9vbCBpc0ZvY3VzZWQoKSBjb25zdCB7IHJldHVybiBtX3ZpZXdT
dGF0ZSAmIFZpZXdTdGF0ZTo6SXNGb2N1c2VkOyB9CisgICAgYm9vbCBpc0ZvY3VzZWQoKSBjb25z
dCB7IHJldHVybiBtX2FjdGl2aXR5U3RhdGUgJiBBY3Rpdml0eVN0YXRlOjpJc0ZvY3VzZWQ7IH0K
IAotICAgIGJvb2wgY29udGVudElzVmlzaWJsZSgpIGNvbnN0IHsgcmV0dXJuIG1fdmlld1N0YXRl
ICYgVmlld1N0YXRlOjpJc1Zpc2libGU7IH0KKyAgICBib29sIGNvbnRlbnRJc1Zpc2libGUoKSBj
b25zdCB7IHJldHVybiBtX2FjdGl2aXR5U3RhdGUgJiBBY3Rpdml0eVN0YXRlOjpJc1Zpc2libGU7
IH0KIAogICAgIC8vIFRoZXNlIG1ldGhvZHMgYXJlIHVzZWQgaW4gV2ViQ29yZS9iaW5kaW5ncy9v
YmpjL0RPTS5tbS4KICAgICBXRUJDT1JFX0VYUE9SVCBFbGVtZW50KiBuZXh0Rm9jdXNhYmxlRWxl
bWVudChOb2RlJik7CkBAIC0xMTksNyArMTE5LDcgQEAgcHJpdmF0ZToKICAgICBQYWdlJiBtX3Bh
Z2U7CiAgICAgUmVmUHRyPEZyYW1lPiBtX2ZvY3VzZWRGcmFtZTsKICAgICBib29sIG1faXNDaGFu
Z2luZ0ZvY3VzZWRGcmFtZTsKLSAgICBWaWV3U3RhdGU6OkZsYWdzIG1fdmlld1N0YXRlOworICAg
IEFjdGl2aXR5U3RhdGU6OkZsYWdzIG1fYWN0aXZpdHlTdGF0ZTsKIAogICAgIFRpbWVyIG1fZm9j
dXNSZXBhaW50VGltZXI7CiAgICAgZG91YmxlIG1fZm9jdXNTZXRUaW1lOwpJbmRleDogU291cmNl
L1dlYkNvcmUvcGFnZS9QYWdlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdl
L1BhZ2UuY3BwCShyZXZpc2lvbiAyMDgxOTcpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2Uu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMCw2ICsyMCw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgi
CiAjaW5jbHVkZSAiUGFnZS5oIgogCisjaW5jbHVkZSAiQWN0aXZpdHlTdGF0ZUNoYW5nZU9ic2Vy
dmVyLmgiCiAjaW5jbHVkZSAiQWx0ZXJuYXRpdmVUZXh0Q2xpZW50LmgiCiAjaW5jbHVkZSAiQW5p
bWF0aW9uQ29udHJvbGxlci5oIgogI2luY2x1ZGUgIkFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlLmgi
CkBAIC05NCw3ICs5NSw2IEBACiAjaW5jbHVkZSAiVGV4dFJlc291cmNlRGVjb2Rlci5oIgogI2lu
Y2x1ZGUgIlVzZXJDb250ZW50UHJvdmlkZXIuaCIKICNpbmNsdWRlICJVc2VySW5wdXRCcmlkZ2Uu
aCIKLSNpbmNsdWRlICJWaWV3U3RhdGVDaGFuZ2VPYnNlcnZlci5oIgogI2luY2x1ZGUgIlZpc2l0
ZWRMaW5rU3RhdGUuaCIKICNpbmNsdWRlICJWaXNpdGVkTGlua1N0b3JlLmgiCiAjaW5jbHVkZSAi
Vm9pZENhbGxiYWNrLmgiCkBAIC0xNTYsNyArMTU2LDcgQEAgc3RhdGljIHZvaWQgbmV0d29ya1N0
YXRlQ2hhbmdlZChib29sIGlzTwogICAgIH0KIH0KIAotc3RhdGljIGNvbnN0IFZpZXdTdGF0ZTo6
RmxhZ3MgUGFnZUluaXRpYWxWaWV3U3RhdGUgPSBWaWV3U3RhdGU6OklzVmlzaWJsZSB8IFZpZXdT
dGF0ZTo6SXNJbldpbmRvdzsKK3N0YXRpYyBjb25zdCBBY3Rpdml0eVN0YXRlOjpGbGFncyBQYWdl
SW5pdGlhbEFjdGl2aXR5U3RhdGUgPSBBY3Rpdml0eVN0YXRlOjpJc1Zpc2libGUgfCBBY3Rpdml0
eVN0YXRlOjpJc0luV2luZG93OwogCiBQYWdlOjpQYWdlKFBhZ2VDb25maWd1cmF0aW9uJiYgcGFn
ZUNvbmZpZ3VyYXRpb24pCiAgICAgOiBtX2Nocm9tZShzdGQ6Om1ha2VfdW5pcXVlPENocm9tZT4o
KnRoaXMsICpwYWdlQ29uZmlndXJhdGlvbi5jaHJvbWVDbGllbnQpKQpAQCAtMTY0LDcgKzE2NCw3
IEBAIFBhZ2U6OlBhZ2UoUGFnZUNvbmZpZ3VyYXRpb24mJiBwYWdlQ29uZmkKICNpZiBFTkFCTEUo
RFJBR19TVVBQT1JUKQogICAgICwgbV9kcmFnQ29udHJvbGxlcihzdGQ6Om1ha2VfdW5pcXVlPERy
YWdDb250cm9sbGVyPigqdGhpcywgKnBhZ2VDb25maWd1cmF0aW9uLmRyYWdDbGllbnQpKQogI2Vu
ZGlmCi0gICAgLCBtX2ZvY3VzQ29udHJvbGxlcihzdGQ6Om1ha2VfdW5pcXVlPEZvY3VzQ29udHJv
bGxlcj4oKnRoaXMsIFBhZ2VJbml0aWFsVmlld1N0YXRlKSkKKyAgICAsIG1fZm9jdXNDb250cm9s
bGVyKHN0ZDo6bWFrZV91bmlxdWU8Rm9jdXNDb250cm9sbGVyPigqdGhpcywgUGFnZUluaXRpYWxB
Y3Rpdml0eVN0YXRlKSkKICNpZiBFTkFCTEUoQ09OVEVYVF9NRU5VUykKICAgICAsIG1fY29udGV4
dE1lbnVDb250cm9sbGVyKHN0ZDo6bWFrZV91bmlxdWU8Q29udGV4dE1lbnVDb250cm9sbGVyPigq
dGhpcywgKnBhZ2VDb25maWd1cmF0aW9uLmNvbnRleHRNZW51Q2xpZW50KSkKICNlbmRpZgpAQCAt
MjE0LDcgKzIxNCw3IEBAIFBhZ2U6OlBhZ2UoUGFnZUNvbmZpZ3VyYXRpb24mJiBwYWdlQ29uZmkK
ICAgICAsIG1fdGltZXJBbGlnbm1lbnRJbnRlcnZhbEluY3JlYXNlVGltZXIoKnRoaXMsICZQYWdl
Ojp0aW1lckFsaWdubWVudEludGVydmFsSW5jcmVhc2VUaW1lckZpcmVkKQogICAgICwgbV9pc0Vk
aXRhYmxlKGZhbHNlKQogICAgICwgbV9pc1ByZXJlbmRlcihmYWxzZSkKLSAgICAsIG1fdmlld1N0
YXRlKFBhZ2VJbml0aWFsVmlld1N0YXRlKQorICAgICwgbV9hY3Rpdml0eVN0YXRlKFBhZ2VJbml0
aWFsQWN0aXZpdHlTdGF0ZSkKICAgICAsIG1fcmVxdWVzdGVkTGF5b3V0TWlsZXN0b25lcygwKQog
ICAgICwgbV9oZWFkZXJIZWlnaHQoMCkKICAgICAsIG1fZm9vdGVySGVpZ2h0KDApCkBAIC0xMDEz
LDcgKzEwMTMsNyBAQCB1bnNpZ25lZCBQYWdlOjpwYWdlQ291bnQoKSBjb25zdAogCiB2b2lkIFBh
Z2U6OnNldElzSW5XaW5kb3coYm9vbCBpc0luV2luZG93KQogewotICAgIHNldFZpZXdTdGF0ZShp
c0luV2luZG93ID8gbV92aWV3U3RhdGUgfCBWaWV3U3RhdGU6OklzSW5XaW5kb3cgOiBtX3ZpZXdT
dGF0ZSAmIH5WaWV3U3RhdGU6OklzSW5XaW5kb3cpOworICAgIHNldEFjdGl2aXR5U3RhdGUoaXNJ
bldpbmRvdyA/IG1fYWN0aXZpdHlTdGF0ZSB8IEFjdGl2aXR5U3RhdGU6OklzSW5XaW5kb3cgOiBt
X2FjdGl2aXR5U3RhdGUgJiB+QWN0aXZpdHlTdGF0ZTo6SXNJbldpbmRvdyk7CiB9CiAKIHZvaWQg
UGFnZTo6c2V0SXNJbldpbmRvd0ludGVybmFsKGJvb2wgaXNJbldpbmRvdykKQEAgLTEwMjcsMTQg
KzEwMjcsMTQgQEAgdm9pZCBQYWdlOjpzZXRJc0luV2luZG93SW50ZXJuYWwoYm9vbCBpcwogICAg
ICAgICByZXN1bWVBbmltYXRpbmdJbWFnZXMoKTsKIH0KIAotdm9pZCBQYWdlOjphZGRWaWV3U3Rh
dGVDaGFuZ2VPYnNlcnZlcihWaWV3U3RhdGVDaGFuZ2VPYnNlcnZlciYgb2JzZXJ2ZXIpCit2b2lk
IFBhZ2U6OmFkZEFjdGl2aXR5U3RhdGVDaGFuZ2VPYnNlcnZlcihBY3Rpdml0eVN0YXRlQ2hhbmdl
T2JzZXJ2ZXImIG9ic2VydmVyKQogewotICAgIG1fdmlld1N0YXRlQ2hhbmdlT2JzZXJ2ZXJzLmFk
ZCgmb2JzZXJ2ZXIpOworICAgIG1fYWN0aXZpdHlTdGF0ZUNoYW5nZU9ic2VydmVycy5hZGQoJm9i
c2VydmVyKTsKIH0KIAotdm9pZCBQYWdlOjpyZW1vdmVWaWV3U3RhdGVDaGFuZ2VPYnNlcnZlcihW
aWV3U3RhdGVDaGFuZ2VPYnNlcnZlciYgb2JzZXJ2ZXIpCit2b2lkIFBhZ2U6OnJlbW92ZUFjdGl2
aXR5U3RhdGVDaGFuZ2VPYnNlcnZlcihBY3Rpdml0eVN0YXRlQ2hhbmdlT2JzZXJ2ZXImIG9ic2Vy
dmVyKQogewotICAgIG1fdmlld1N0YXRlQ2hhbmdlT2JzZXJ2ZXJzLnJlbW92ZSgmb2JzZXJ2ZXIp
OworICAgIG1fYWN0aXZpdHlTdGF0ZUNoYW5nZU9ic2VydmVycy5yZW1vdmUoJm9ic2VydmVyKTsK
IH0KIAogdm9pZCBQYWdlOjpzdXNwZW5kU2NyaXB0ZWRBbmltYXRpb25zKCkKQEAgLTEyMjAsMTQg
KzEyMjAsMTQgQEAgdm9pZCBQYWdlOjpoaWRkZW5QYWdlRE9NVGltZXJUaHJvdHRsaW5nUwogdm9p
ZCBQYWdlOjp1cGRhdGVUaW1lclRocm90dGxpbmdTdGF0ZSgpCiB7CiAgICAgLy8gVGltZXIgdGhy
b3R0bGluZyBkaXNhYmxlZCBpZiBwYWdlIGlzIHZpc3VhbGx5IGFjdGl2ZSwgb3IgZGlzYWJsZWQg
Ynkgc2V0dGluZy4KLSAgICBpZiAoIW1fc2V0dGluZ3MtPmhpZGRlblBhZ2VET01UaW1lclRocm90
dGxpbmdFbmFibGVkKCkgfHwgIShtX3ZpZXdTdGF0ZSAmIFZpZXdTdGF0ZTo6SXNWaXN1YWxseUlk
bGUpKSB7CisgICAgaWYgKCFtX3NldHRpbmdzLT5oaWRkZW5QYWdlRE9NVGltZXJUaHJvdHRsaW5n
RW5hYmxlZCgpIHx8ICEobV9hY3Rpdml0eVN0YXRlICYgQWN0aXZpdHlTdGF0ZTo6SXNWaXN1YWxs
eUlkbGUpKSB7CiAgICAgICAgIHNldFRpbWVyVGhyb3R0bGluZ1N0YXRlKFRpbWVyVGhyb3R0bGlu
Z1N0YXRlOjpEaXNhYmxlZCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKICAgICAvLyBJZiB0
aGUgcGFnZSBpcyB2aXNpYmxlIChidXQgaWRsZSksIHRoZXJlIGlzIGFueSBhY3Rpdml0eSAobG9h
ZGluZywgbWVkaWEgcGxheWluZywgZXRjKSwgb3IgcGVyIHNldHRpbmcsCiAgICAgLy8gd2UgYWxs
b3cgdGltZXIgdGhyb3R0bGluZywgYnV0IG5vdCBpbmNyZWFzaW5nIHRpbWVyIHRocm90dGxpbmcu
Ci0gICAgaWYgKCFtX3NldHRpbmdzLT5oaWRkZW5QYWdlRE9NVGltZXJUaHJvdHRsaW5nQXV0b0lu
Y3JlYXNlcygpIHx8IG1fdmlld1N0YXRlICYgVmlld1N0YXRlOjpJc1Zpc2libGUgfHwgbV9wYWdl
VGhyb3R0bGVyLmFjdGl2aXR5U3RhdGUoKSkgeworICAgIGlmICghbV9zZXR0aW5ncy0+aGlkZGVu
UGFnZURPTVRpbWVyVGhyb3R0bGluZ0F1dG9JbmNyZWFzZXMoKSB8fCBtX2FjdGl2aXR5U3RhdGUg
JiBBY3Rpdml0eVN0YXRlOjpJc1Zpc2libGUgfHwgbV9wYWdlVGhyb3R0bGVyLmFjdGl2aXR5U3Rh
dGUoKSkgewogICAgICAgICBzZXRUaW1lclRocm90dGxpbmdTdGF0ZShUaW1lclRocm90dGxpbmdT
dGF0ZTo6RW5hYmxlZCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CkBAIC0xNDM4LDMxICsxNDM4
LDMxIEBAIHZvaWQgUGFnZTo6cmVzdW1lQW5pbWF0aW5nSW1hZ2VzKCkKICAgICAgICAgdmlldy0+
cmVzdW1lVmlzaWJsZUltYWdlQW5pbWF0aW9uc0luY2x1ZGluZ1N1YmZyYW1lcygpOwogfQogCi12
b2lkIFBhZ2U6OnNldFZpZXdTdGF0ZShWaWV3U3RhdGU6OkZsYWdzIHZpZXdTdGF0ZSkKK3ZvaWQg
UGFnZTo6c2V0QWN0aXZpdHlTdGF0ZShBY3Rpdml0eVN0YXRlOjpGbGFncyBhY3Rpdml0eVN0YXRl
KQogewotICAgIFZpZXdTdGF0ZTo6RmxhZ3MgY2hhbmdlZCA9IG1fdmlld1N0YXRlIF4gdmlld1N0
YXRlOworICAgIEFjdGl2aXR5U3RhdGU6OkZsYWdzIGNoYW5nZWQgPSBtX2FjdGl2aXR5U3RhdGUg
XiBhY3Rpdml0eVN0YXRlOwogICAgIGlmICghY2hhbmdlZCkKICAgICAgICAgcmV0dXJuOwogCi0g
ICAgVmlld1N0YXRlOjpGbGFncyBvbGRWaWV3U3RhdGUgPSBtX3ZpZXdTdGF0ZTsKKyAgICBBY3Rp
dml0eVN0YXRlOjpGbGFncyBvbGRBY3Rpdml0eVN0YXRlID0gbV9hY3Rpdml0eVN0YXRlOwogCiAg
ICAgYm9vbCB3YXNWaXNpYmxlQW5kQWN0aXZlID0gaXNWaXNpYmxlQW5kQWN0aXZlKCk7Ci0gICAg
bV92aWV3U3RhdGUgPSB2aWV3U3RhdGU7CisgICAgbV9hY3Rpdml0eVN0YXRlID0gYWN0aXZpdHlT
dGF0ZTsKIAotICAgIG1fZm9jdXNDb250cm9sbGVyLT5zZXRWaWV3U3RhdGUodmlld1N0YXRlKTsK
KyAgICBtX2ZvY3VzQ29udHJvbGxlci0+c2V0QWN0aXZpdHlTdGF0ZShhY3Rpdml0eVN0YXRlKTsK
IAotICAgIGlmIChjaGFuZ2VkICYgVmlld1N0YXRlOjpJc1Zpc2libGUpCi0gICAgICAgIHNldElz
VmlzaWJsZUludGVybmFsKHZpZXdTdGF0ZSAmIFZpZXdTdGF0ZTo6SXNWaXNpYmxlKTsKLSAgICBp
ZiAoY2hhbmdlZCAmIFZpZXdTdGF0ZTo6SXNJbldpbmRvdykKLSAgICAgICAgc2V0SXNJbldpbmRv
d0ludGVybmFsKHZpZXdTdGF0ZSAmIFZpZXdTdGF0ZTo6SXNJbldpbmRvdyk7Ci0gICAgaWYgKGNo
YW5nZWQgJiBWaWV3U3RhdGU6OklzVmlzdWFsbHlJZGxlKQotICAgICAgICBzZXRJc1Zpc3VhbGx5
SWRsZUludGVybmFsKHZpZXdTdGF0ZSAmIFZpZXdTdGF0ZTo6SXNWaXN1YWxseUlkbGUpOworICAg
IGlmIChjaGFuZ2VkICYgQWN0aXZpdHlTdGF0ZTo6SXNWaXNpYmxlKQorICAgICAgICBzZXRJc1Zp
c2libGVJbnRlcm5hbChhY3Rpdml0eVN0YXRlICYgQWN0aXZpdHlTdGF0ZTo6SXNWaXNpYmxlKTsK
KyAgICBpZiAoY2hhbmdlZCAmIEFjdGl2aXR5U3RhdGU6OklzSW5XaW5kb3cpCisgICAgICAgIHNl
dElzSW5XaW5kb3dJbnRlcm5hbChhY3Rpdml0eVN0YXRlICYgQWN0aXZpdHlTdGF0ZTo6SXNJbldp
bmRvdyk7CisgICAgaWYgKGNoYW5nZWQgJiBBY3Rpdml0eVN0YXRlOjpJc1Zpc3VhbGx5SWRsZSkK
KyAgICAgICAgc2V0SXNWaXN1YWxseUlkbGVJbnRlcm5hbChhY3Rpdml0eVN0YXRlICYgQWN0aXZp
dHlTdGF0ZTo6SXNWaXN1YWxseUlkbGUpOwogCi0gICAgaWYgKGNoYW5nZWQgJiAoVmlld1N0YXRl
OjpJc1Zpc2libGUgfCBWaWV3U3RhdGU6OklzVmlzdWFsbHlJZGxlKSkKKyAgICBpZiAoY2hhbmdl
ZCAmIChBY3Rpdml0eVN0YXRlOjpJc1Zpc2libGUgfCBBY3Rpdml0eVN0YXRlOjpJc1Zpc3VhbGx5
SWRsZSkpCiAgICAgICAgIHVwZGF0ZVRpbWVyVGhyb3R0bGluZ1N0YXRlKCk7CiAKLSAgICBmb3Ig
KGF1dG8qIG9ic2VydmVyIDogbV92aWV3U3RhdGVDaGFuZ2VPYnNlcnZlcnMpCi0gICAgICAgIG9i
c2VydmVyLT52aWV3U3RhdGVEaWRDaGFuZ2Uob2xkVmlld1N0YXRlLCBtX3ZpZXdTdGF0ZSk7Cisg
ICAgZm9yIChhdXRvKiBvYnNlcnZlciA6IG1fYWN0aXZpdHlTdGF0ZUNoYW5nZU9ic2VydmVycykK
KyAgICAgICAgb2JzZXJ2ZXItPmFjdGl2aXR5U3RhdGVEaWRDaGFuZ2Uob2xkQWN0aXZpdHlTdGF0
ZSwgbV9hY3Rpdml0eVN0YXRlKTsKIAogICAgIGlmICh3YXNWaXNpYmxlQW5kQWN0aXZlICE9IGlz
VmlzaWJsZUFuZEFjdGl2ZSgpKQogICAgICAgICBQbGF0Zm9ybU1lZGlhU2Vzc2lvbk1hbmFnZXI6
OnVwZGF0ZU5vd1BsYXlpbmdJbmZvSWZOZWNlc3NhcnkoKTsKQEAgLTE0NzAsMTUgKzE0NzAsMTUg
QEAgdm9pZCBQYWdlOjpzZXRWaWV3U3RhdGUoVmlld1N0YXRlOjpGbGFncwogCiBib29sIFBhZ2U6
OmlzVmlzaWJsZUFuZEFjdGl2ZSgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIChtX3ZpZXdTdGF0ZSAm
IFZpZXdTdGF0ZTo6SXNWaXNpYmxlKSAmJiAobV92aWV3U3RhdGUgJiBWaWV3U3RhdGU6OldpbmRv
d0lzQWN0aXZlKTsKKyAgICByZXR1cm4gKG1fYWN0aXZpdHlTdGF0ZSAmIEFjdGl2aXR5U3RhdGU6
OklzVmlzaWJsZSkgJiYgKG1fYWN0aXZpdHlTdGF0ZSAmIEFjdGl2aXR5U3RhdGU6OldpbmRvd0lz
QWN0aXZlKTsKIH0KIAogdm9pZCBQYWdlOjpzZXRJc1Zpc2libGUoYm9vbCBpc1Zpc2libGUpCiB7
CiAgICAgaWYgKGlzVmlzaWJsZSkKLSAgICAgICAgc2V0Vmlld1N0YXRlKChtX3ZpZXdTdGF0ZSAm
IH5WaWV3U3RhdGU6OklzVmlzdWFsbHlJZGxlKSB8IFZpZXdTdGF0ZTo6SXNWaXNpYmxlIHwgVmll
d1N0YXRlOjpJc1Zpc2libGVPck9jY2x1ZGVkKTsKKyAgICAgICAgc2V0QWN0aXZpdHlTdGF0ZSgo
bV9hY3Rpdml0eVN0YXRlICYgfkFjdGl2aXR5U3RhdGU6OklzVmlzdWFsbHlJZGxlKSB8IEFjdGl2
aXR5U3RhdGU6OklzVmlzaWJsZSB8IEFjdGl2aXR5U3RhdGU6OklzVmlzaWJsZU9yT2NjbHVkZWQp
OwogICAgIGVsc2UKLSAgICAgICAgc2V0Vmlld1N0YXRlKChtX3ZpZXdTdGF0ZSAmIH4oVmlld1N0
YXRlOjpJc1Zpc2libGUgfCBWaWV3U3RhdGU6OklzVmlzaWJsZU9yT2NjbHVkZWQpKSB8IFZpZXdT
dGF0ZTo6SXNWaXN1YWxseUlkbGUpOworICAgICAgICBzZXRBY3Rpdml0eVN0YXRlKChtX2FjdGl2
aXR5U3RhdGUgJiB+KEFjdGl2aXR5U3RhdGU6OklzVmlzaWJsZSB8IEFjdGl2aXR5U3RhdGU6Oklz
VmlzaWJsZU9yT2NjbHVkZWQpKSB8IEFjdGl2aXR5U3RhdGU6OklzVmlzdWFsbHlJZGxlKTsKIH0K
IAogdm9pZCBQYWdlOjpzZXRJc1Zpc2libGVJbnRlcm5hbChib29sIGlzVmlzaWJsZSkKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L3BhZ2UvUGFnZS5oCShyZXZpc2lvbiAyMDgxOTcpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL1Bh
Z2UuaAkod29ya2luZyBjb3B5KQpAQCAtMjAsNiArMjAsNyBAQAogCiAjcHJhZ21hIG9uY2UKIAor
I2luY2x1ZGUgIkFjdGl2aXR5U3RhdGUuaCIKICNpbmNsdWRlICJGaW5kT3B0aW9ucy5oIgogI2lu
Y2x1ZGUgIkZyYW1lTG9hZGVyVHlwZXMuaCIKICNpbmNsdWRlICJMYXlvdXRNaWxlc3RvbmVzLmgi
CkBAIC0zNCw3ICszNSw2IEBACiAjaW5jbHVkZSAiU2Vzc2lvbklELmgiCiAjaW5jbHVkZSAiU3Vw
cGxlbWVudGFibGUuaCIKICNpbmNsdWRlICJVc2VySW50ZXJmYWNlTGF5b3V0RGlyZWN0aW9uLmgi
Ci0jaW5jbHVkZSAiVmlld1N0YXRlLmgiCiAjaW5jbHVkZSAiVmlld3BvcnRBcmd1bWVudHMuaCIK
ICNpbmNsdWRlICJXaGVlbEV2ZW50VGVzdFRyaWdnZXIuaCIKICNpbmNsdWRlIDxtZW1vcnk+CkBA
IC0xMjYsNyArMTI2LDcgQEAgY2xhc3MgU3RvcmFnZU5hbWVzcGFjZTsKIGNsYXNzIFN0b3JhZ2VO
YW1lc3BhY2VQcm92aWRlcjsKIGNsYXNzIFVzZXJDb250ZW50UHJvdmlkZXI7CiBjbGFzcyBWYWxp
ZGF0aW9uTWVzc2FnZUNsaWVudDsKLWNsYXNzIFZpZXdTdGF0ZUNoYW5nZU9ic2VydmVyOworY2xh
c3MgQWN0aXZpdHlTdGF0ZUNoYW5nZU9ic2VydmVyOwogY2xhc3MgVmlzaXRlZExpbmtTdG9yZTsK
IAogdHlwZWRlZiB1aW50NjRfdCBMaW5rSGFzaDsKQEAgLTMzNCwyMiArMzM0LDIyIEBAIHB1Ymxp
YzoKICAgICBXRUJDT1JFX0VYUE9SVCBEaWFnbm9zdGljTG9nZ2luZ0NsaWVudCYgZGlhZ25vc3Rp
Y0xvZ2dpbmdDbGllbnQoKSBjb25zdDsKIAogICAgIC8vIE5vdGlmaWNhdGlvbnMgd2hlbiB0aGUg
UGFnZSBzdGFydHMgYW5kIHN0b3BzIGJlaW5nIHByZXNlbnRlZCB2aWEgYSBuYXRpdmUgd2luZG93
LgotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0Vmlld1N0YXRlKFZpZXdTdGF0ZTo6RmxhZ3Mp
OworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0QWN0aXZpdHlTdGF0ZShBY3Rpdml0eVN0YXRl
OjpGbGFncyk7CiAgICAgYm9vbCBpc1Zpc2libGVBbmRBY3RpdmUoKSBjb25zdDsKICAgICB2b2lk
IHBhZ2VBY3Rpdml0eVN0YXRlQ2hhbmdlZCgpIHsgdXBkYXRlVGltZXJUaHJvdHRsaW5nU3RhdGUo
KTsgfQogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0SXNWaXNpYmxlKGJvb2wpOwogICAgIFdF
QkNPUkVfRVhQT1JUIHZvaWQgc2V0SXNQcmVyZW5kZXIoKTsKLSAgICBib29sIGlzVmlzaWJsZSgp
IGNvbnN0IHsgcmV0dXJuIG1fdmlld1N0YXRlICYgVmlld1N0YXRlOjpJc1Zpc2libGU7IH0KKyAg
ICBib29sIGlzVmlzaWJsZSgpIGNvbnN0IHsgcmV0dXJuIG1fYWN0aXZpdHlTdGF0ZSAmIEFjdGl2
aXR5U3RhdGU6OklzVmlzaWJsZTsgfQogCiAgICAgLy8gTm90aWZpY2F0aW9uIHRoYXQgdGhpcyBQ
YWdlIHdhcyBtb3ZlZCBpbnRvIG9yIG91dCBvZiBhIG5hdGl2ZSB3aW5kb3cuCiAgICAgV0VCQ09S
RV9FWFBPUlQgdm9pZCBzZXRJc0luV2luZG93KGJvb2wpOwotICAgIGJvb2wgaXNJbldpbmRvdygp
IGNvbnN0IHsgcmV0dXJuIG1fdmlld1N0YXRlICYgVmlld1N0YXRlOjpJc0luV2luZG93OyB9Cisg
ICAgYm9vbCBpc0luV2luZG93KCkgY29uc3QgeyByZXR1cm4gbV9hY3Rpdml0eVN0YXRlICYgQWN0
aXZpdHlTdGF0ZTo6SXNJbldpbmRvdzsgfQogCiAgICAgdm9pZCBzZXRJc0Nsb3NpbmcoKSB7IG1f
aXNDbG9zaW5nID0gdHJ1ZTsgfQogICAgIGJvb2wgaXNDbG9zaW5nKCkgY29uc3QgeyByZXR1cm4g
bV9pc0Nsb3Npbmc7IH0KIAotICAgIHZvaWQgYWRkVmlld1N0YXRlQ2hhbmdlT2JzZXJ2ZXIoVmll
d1N0YXRlQ2hhbmdlT2JzZXJ2ZXImKTsKLSAgICB2b2lkIHJlbW92ZVZpZXdTdGF0ZUNoYW5nZU9i
c2VydmVyKFZpZXdTdGF0ZUNoYW5nZU9ic2VydmVyJik7CisgICAgdm9pZCBhZGRBY3Rpdml0eVN0
YXRlQ2hhbmdlT2JzZXJ2ZXIoQWN0aXZpdHlTdGF0ZUNoYW5nZU9ic2VydmVyJik7CisgICAgdm9p
ZCByZW1vdmVBY3Rpdml0eVN0YXRlQ2hhbmdlT2JzZXJ2ZXIoQWN0aXZpdHlTdGF0ZUNoYW5nZU9i
c2VydmVyJik7CiAKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHN1c3BlbmRTY3JpcHRlZEFuaW1h
dGlvbnMoKTsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHJlc3VtZVNjcmlwdGVkQW5pbWF0aW9u
cygpOwpAQCAtNjY2LDcgKzY2Niw3IEBAIHByaXZhdGU6CiAKICAgICBib29sIG1faXNFZGl0YWJs
ZTsKICAgICBib29sIG1faXNQcmVyZW5kZXI7Ci0gICAgVmlld1N0YXRlOjpGbGFncyBtX3ZpZXdT
dGF0ZTsKKyAgICBBY3Rpdml0eVN0YXRlOjpGbGFncyBtX2FjdGl2aXR5U3RhdGU7CiAgICAgUGFn
ZUFjdGl2aXR5U3RhdGU6OkZsYWdzIG1fcGFnZUFjdGl2aXR5U3RhdGU7CiAKICAgICBMYXlvdXRN
aWxlc3RvbmVzIG1fcmVxdWVzdGVkTGF5b3V0TWlsZXN0b25lczsKQEAgLTcxMSw3ICs3MTEsNyBA
QCBwcml2YXRlOgogICAgIFJlZjxWaXNpdGVkTGlua1N0b3JlPiBtX3Zpc2l0ZWRMaW5rU3RvcmU7
CiAgICAgUmVmUHRyPFdoZWVsRXZlbnRUZXN0VHJpZ2dlcj4gbV90ZXN0VHJpZ2dlcjsKIAotICAg
IEhhc2hTZXQ8Vmlld1N0YXRlQ2hhbmdlT2JzZXJ2ZXIqPiBtX3ZpZXdTdGF0ZUNoYW5nZU9ic2Vy
dmVyczsKKyAgICBIYXNoU2V0PEFjdGl2aXR5U3RhdGVDaGFuZ2VPYnNlcnZlcio+IG1fYWN0aXZp
dHlTdGF0ZUNoYW5nZU9ic2VydmVyczsKIAogI2lmIEVOQUJMRShSRVNPVVJDRV9VU0FHRSkKICAg
ICBzdGQ6OnVuaXF1ZV9wdHI8UmVzb3VyY2VVc2FnZU92ZXJsYXk+IG1fcmVzb3VyY2VVc2FnZU92
ZXJsYXk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VUaHJvdHRsZXIuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VUaHJvdHRsZXIuaAkocmV2aXNpb24gMjA4
MTk3KQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlVGhyb3R0bGVyLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTI3LDggKzI3LDggQEAKIAogI2luY2x1ZGUgIlRpbWVyLmgiCiAKKyNpbmNsdWRlICJB
Y3Rpdml0eVN0YXRlLmgiCiAjaW5jbHVkZSAiVXNlckFjdGl2aXR5LmgiCi0jaW5jbHVkZSAiVmll
d1N0YXRlLmgiCiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZXIuaD4KIAogbmFtZXNwYWNlIFdlYkNv
cmUgewpJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9WaWV3U3RhdGUuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9wYWdlL1ZpZXdTdGF0ZS5oCShyZXZpc2lvbiAyMDgxOTcpCisrKyBT
b3VyY2UvV2ViQ29yZS9wYWdlL1ZpZXdTdGF0ZS5oCShub25leGlzdGVudCkKQEAgLTEsNDYgKzAs
MCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0g
KiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAq
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0K
LXN0cnVjdCBWaWV3U3RhdGUgewotICAgIGVudW0gewotICAgICAgICBXaW5kb3dJc0FjdGl2ZSA9
IDEgPDwgMCwKLSAgICAgICAgSXNGb2N1c2VkID0gMSA8PCAxLAotICAgICAgICBJc1Zpc2libGUg
PSAxIDw8IDIsCi0gICAgICAgIElzVmlzaWJsZU9yT2NjbHVkZWQgPSAxIDw8IDMsCi0gICAgICAg
IElzSW5XaW5kb3cgPSAxIDw8IDQsCi0gICAgICAgIElzVmlzdWFsbHlJZGxlID0gMSA8PCA1LAot
ICAgIH07Ci0KLSAgICB0eXBlZGVmIHVuc2lnbmVkIEZsYWdzOwotCi0gICAgc3RhdGljIGNvbnN0
IEZsYWdzIE5vRmxhZ3MgPSAwOwotICAgIHN0YXRpYyBjb25zdCBGbGFncyBBbGxGbGFncyA9IFdp
bmRvd0lzQWN0aXZlIHwgSXNGb2N1c2VkIHwgSXNWaXNpYmxlIHwgSXNWaXNpYmxlT3JPY2NsdWRl
ZCB8IElzSW5XaW5kb3cgfCBJc1Zpc3VhbGx5SWRsZTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvVmlld1N0YXRlQ2hhbmdlT2JzZXJ2ZXIu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL1ZpZXdTdGF0ZUNoYW5nZU9ic2Vy
dmVyLmgJKHJldmlzaW9uIDIwODE5NykKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvVmlld1N0YXRl
Q2hhbmdlT2JzZXJ2ZXIuaAkobm9uZXhpc3RlbnQpCkBAIC0xLDQxICswLDAgQEAKLS8qCi0gKiBD
b3B5cmlnaHQgKEMpIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgot
ICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkK
LSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAq
LwotCi0jcHJhZ21hIG9uY2UKLQotI2luY2x1ZGUgIlZpZXdTdGF0ZS5oIgotCi1uYW1lc3BhY2Ug
V2ViQ29yZSB7Ci0KLWNsYXNzIFZpZXdTdGF0ZUNoYW5nZU9ic2VydmVyIHsKLXB1YmxpYzoKLSAg
ICB2aXJ0dWFsIH5WaWV3U3RhdGVDaGFuZ2VPYnNlcnZlcigpCi0gICAgewotICAgIH0KLSAgICAK
LSAgICB2aXJ0dWFsIHZvaWQgdmlld1N0YXRlRGlkQ2hhbmdlKFZpZXdTdGF0ZTo6RmxhZ3Mgb2xk
Vmlld1N0YXRlLCBWaWV3U3RhdGU6OkZsYWdzIG5ld1ZpZXdTdGF0ZSkgPSAwOwotfTsKLQotfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwkocmV2aXNpb24gMjA4MTk3KQorKysg
U291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTM0IEBA
CisyMDE2LTEwLTMxICBHYXZpbiBCYXJyYWNsb3VnaCAgPGJhcnJhY2xvdWdoQGFwcGxlLmNvbT4K
KworICAgICAgICBSZW5hbWUgVmlld1N0YXRlIHRvIEFjdGl2aXR5U3RhdGUKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2NDI1NAorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFdlIHBsYW4gdG8gYWRkIGEgY291
cGxlIG1vcmUgZmxhZ3MgdG8gVmlld1N0YXRlIHRoYXQgYXJlbid0IGRpcmVjdGx5IHJlbGF0ZWQg
dG8gdGhlIHZpZXcKKyAgICAgICAgaXRzZWxmIC0gd2hldGhlciB0aGVyZSBpcyBhbiBvbmdvaW5n
IHBhZ2UgbG9hZCwgYW5kIHdoZXRoZXIgd2hldGhlciB0aGVyZSBpcyBhdWRpbyBwbGF5YmFjay4K
KyAgICAgICAgVGhpcyB3aWxsIGFsbG93IHZpZXdTdGF0ZSAobm93IGFjdGl2aXR5U3RhdGUpIHRv
IGZ1bGx5IGRyaXZlIHRocm90dGxpbmcgZGVjaXNpb25zLgorCisgICAgICAgIFJlbmFtaW5nIHRo
aXMgYml0ZmllbGQgYWNjb3JkaW5nbHkuCisKKyAgICAgICAgKiBTaGFyZWQvV2ViUGFnZUNyZWF0
aW9uUGFyYW1ldGVycy5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VDcmVhdGlvblBhcmFt
ZXRlcnM6OmVuY29kZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VDcmVhdGlvblBhcmFtZXRl
cnM6OmRlY29kZSk6CisgICAgICAgICogU2hhcmVkL1dlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMu
aDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbToKKyAgICAgICAg
KC1bV0tXZWJWaWV3IGRpZE1vdmVUb1dpbmRvd10pOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkv
Z3RrL1dlYktpdFdlYlZpZXdCYXNlLmNwcDoKKyAgICAgICAgKF9XZWJLaXRXZWJWaWV3QmFzZVBy
aXZhdGU6Ol9XZWJLaXRXZWJWaWV3QmFzZVByaXZhdGUpOgorICAgICAgICAoX1dlYktpdFdlYlZp
ZXdCYXNlUHJpdmF0ZTo6dXBkYXRlQWN0aXZpdHlTdGF0ZVRpbWVyRmlyZWQpOgorICAgICAgICAo
d2Via2l0V2ViVmlld0Jhc2VTY2hlZHVsZVVwZGF0ZUFjdGl2aXR5U3RhdGUpOgorICAgICAgICAo
dG9wbGV2ZWxXaW5kb3dGb2N1c0luRXZlbnQpOgorICAgICAgICAodG9wbGV2ZWxXaW5kb3dGb2N1
c091dEV2ZW50KToKKyAgICAgICAgKHRvcGxldmVsV2luZG93U3RhdGVFdmVudCk6CisgICAgICAg
ICh3ZWJraXRXZWJWaWV3QmFzZVNldFRvcGxldmVsT25TY3JlZW5XaW5kb3cpOgorICAgICAgICAo
d2Via2l0V2ViVmlld0Jhc2VNYXApOgorICAgICAgICAod2Via2l0V2ViVmlld0Jhc2VVbm1hcCk6
CisgICAgICAgICh3ZWJraXRXZWJWaWV3QmFzZVNldEZvY3VzKToKKyAgICAgICAgKHdlYmtpdFdl
YlZpZXdCYXNlSXNJbldpbmRvd0FjdGl2ZSk6CisgICAgICAgICh3ZWJraXRXZWJWaWV3QmFzZUlz
Rm9jdXNlZCk6CisgICAgICAgICh3ZWJraXRXZWJWaWV3QmFzZUlzVmlzaWJsZSk6CisgICAgICAg
ICh3ZWJraXRXZWJWaWV3QmFzZUlzSW5XaW5kb3cpOgorICAgICAgICAoX1dlYktpdFdlYlZpZXdC
YXNlUHJpdmF0ZTo6dXBkYXRlVmlld1N0YXRlVGltZXJGaXJlZCk6IERlbGV0ZWQuCisgICAgICAg
ICh3ZWJraXRXZWJWaWV3QmFzZVNjaGVkdWxlVXBkYXRlVmlld1N0YXRlKTogRGVsZXRlZC4KKyAg
ICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwubW06CisgICAgICAgIChXZWJLaXQ6
OldlYlZpZXdJbXBsOjpiZWNvbWVGaXJzdFJlc3BvbmRlcik6CisgICAgICAgIChXZWJLaXQ6Oldl
YlZpZXdJbXBsOjpyZXNpZ25GaXJzdFJlc3BvbmRlcik6CisgICAgICAgIChXZWJLaXQ6OldlYlZp
ZXdJbXBsOjp3aW5kb3dEaWRPcmRlck9mZlNjcmVlbik6CisgICAgICAgIChXZWJLaXQ6OldlYlZp
ZXdJbXBsOjp3aW5kb3dEaWRPcmRlck9uU2NyZWVuKToKKyAgICAgICAgKFdlYktpdDo6V2ViVmll
d0ltcGw6OndpbmRvd0RpZEJlY29tZUtleSk6CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXdJbXBs
Ojp3aW5kb3dEaWRSZXNpZ25LZXkpOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6d2lu
ZG93RGlkTWluaWF0dXJpemUpOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6d2luZG93
RGlkRGVtaW5pYXR1cml6ZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXdJbXBsOjp3aW5kb3dE
aWRDaGFuZ2VPY2NsdXNpb25TdGF0ZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXdJbXBsOjp2
aWV3RGlkTW92ZVRvV2luZG93KToKKyAgICAgICAgKFdlYktpdDo6V2ViVmlld0ltcGw6OnZpZXdE
aWRIaWRlKToKKyAgICAgICAgKFdlYktpdDo6V2ViVmlld0ltcGw6OnZpZXdEaWRVbmhpZGUpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6YWN0aXZlU3BhY2VEaWRDaGFuZ2UpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6ZW5kRGVmZXJyaW5nVmlld0luV2luZG93Q2hhbmdl
cyk6CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXdJbXBsOjplbmREZWZlcnJpbmdWaWV3SW5XaW5k
b3dDaGFuZ2VzU3luYyk6CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXdJbXBsOjpwcmVwYXJlRm9y
TW92ZVRvV2luZG93KToKKyAgICAgICAgKiBVSVByb2Nlc3MvRHJhd2luZ0FyZWFQcm94eS5oOgor
ICAgICAgICAoV2ViS2l0OjpEcmF3aW5nQXJlYVByb3h5Ojp3YWl0Rm9yRGlkVXBkYXRlQWN0aXZp
dHlTdGF0ZSk6CisgICAgICAgIChXZWJLaXQ6OkRyYXdpbmdBcmVhUHJveHk6OndhaXRGb3JEaWRV
cGRhdGVWaWV3U3RhdGUpOiBEZWxldGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJv
eHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OldlYlBhZ2VQcm94eSk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6cmVhdHRhY2hUb1dlYlByb2Nlc3MpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnNldFN1cHByZXNzVmlzaWJpbGl0eVVwZGF0ZXMp
OgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnVwZGF0ZUFjdGl2aXR5U3RhdGUpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmFjdGl2aXR5U3RhdGVEaWRDaGFuZ2UpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmRpc3BhdGNoQWN0aXZpdHlTdGF0ZUNoYW5n
ZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6dXBkYXRlVGhyb3R0bGVTdGF0ZSk6
CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6d2FpdEZvckRpZFVwZGF0ZUFjdGl2aXR5
U3RhdGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmNyZWF0aW9uUGFyYW1ldGVy
cyk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6aW5zdGFsbEFjdGl2aXR5U3RhdGVD
aGFuZ2VDb21wbGV0aW9uSGFuZGxlcik6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6
dXBkYXRlVmlld1N0YXRlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5
Ojp2aWV3U3RhdGVEaWRDaGFuZ2UpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdl
UHJveHk6OmRpc3BhdGNoVmlld1N0YXRlQ2hhbmdlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktp
dDo6V2ViUGFnZVByb3h5Ojp3YWl0Rm9yRGlkVXBkYXRlVmlld1N0YXRlKTogRGVsZXRlZC4KKyAg
ICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjppbnN0YWxsVmlld1N0YXRlQ2hhbmdlQ29tcGxl
dGlvbkhhbmRsZXIpOiBEZWxldGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHku
aDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5Ojppc0luV2luZG93KToKKyAgICAgICAg
KFdlYktpdDo6V2ViUGFnZVByb3h5OjpkaWRVcGRhdGVBY3Rpdml0eVN0YXRlKToKKyAgICAgICAg
KFdlYktpdDo6V2ViUGFnZVByb3h5Ojppc1ZpZXdWaXNpYmxlKToKKyAgICAgICAgKFdlYktpdDo6
V2ViUGFnZVByb3h5OjpkaWRVcGRhdGVWaWV3U3RhdGUpOiBEZWxldGVkLgorICAgICAgICAqIFVJ
UHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW46CisgICAgICAgICogVUlQcm9jZXNzL1dl
YlByb2Nlc3NQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQcm94eTo6d2lu
ZG93U2VydmVyQ29ubmVjdGlvblN0YXRlQ2hhbmdlZCk6CisgICAgICAgICogVUlQcm9jZXNzL2Vm
bC9XZWJWaWV3LmNwcDoKKyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXcubW06
CisgICAgICAgICgtW1dLQ29udGVudFZpZXcgX2FwcGxpY2F0aW9uRGlkRW50ZXJCYWNrZ3JvdW5k
XSk6CisgICAgICAgICgtW1dLQ29udGVudFZpZXcgX2FwcGxpY2F0aW9uV2lsbEVudGVyRm9yZWdy
b3VuZF0pOgorICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvV0tQREZWaWV3Lm1tOgorICAgICAgICAo
LVtXS1BERlZpZXcgX2FwcGxpY2F0aW9uRGlkRW50ZXJCYWNrZ3JvdW5kXSk6CisgICAgICAgICgt
W1dLUERGVmlldyBfYXBwbGljYXRpb25XaWxsRW50ZXJGb3JlZ3JvdW5kXSk6CisgICAgICAgICog
VUlQcm9jZXNzL2lvcy9XZWJQYWdlUHJveHlJT1MubW06CisgICAgICAgIChXZWJLaXQ6OldlYlBh
Z2VQcm94eTo6c3luY2hyb25pemVEeW5hbWljVmlld3BvcnRVcGRhdGUpOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9tYWMvUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWFQcm94eS5oOgorICAgICAgICAq
IFVJUHJvY2Vzcy9tYWMvUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWFQcm94eS5tbToKKyAgICAg
ICAgKFdlYktpdDo6UmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWFQcm94eTo6ZGlkUmVmcmVzaERp
c3BsYXkpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYVByb3h5
Ojp3YWl0Rm9yRGlkVXBkYXRlQWN0aXZpdHlTdGF0ZSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90
ZUxheWVyVHJlZURyYXdpbmdBcmVhUHJveHk6OndhaXRGb3JEaWRVcGRhdGVWaWV3U3RhdGUpOiBE
ZWxldGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9tYWMvVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2lu
Z0FyZWFQcm94eS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9tYWMvVGlsZWRDb3JlQW5pbWF0aW9u
RHJhd2luZ0FyZWFQcm94eS5tbToKKyAgICAgICAgKFdlYktpdDo6VGlsZWRDb3JlQW5pbWF0aW9u
RHJhd2luZ0FyZWFQcm94eTo6d2FpdEZvckRpZFVwZGF0ZUFjdGl2aXR5U3RhdGUpOgorICAgICAg
ICAoV2ViS2l0OjpUaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYVByb3h5Ojp3YWl0Rm9yRGlk
VXBkYXRlVmlld1N0YXRlKTogRGVsZXRlZC4KKyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMv
UGx1Z2luVmlldy5jcHA6CisgICAgICAgIChXZWJLaXQ6OlBsdWdpblZpZXc6OmFjdGl2aXR5U3Rh
dGVEaWRDaGFuZ2UpOgorICAgICAgICAoV2ViS2l0OjpQbHVnaW5WaWV3Ojp2aWV3U3RhdGVEaWRD
aGFuZ2UpOiBEZWxldGVkLgorICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3
Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL0FjY2VsZXJhdGVkRHJhd2luZ0FyZWEu
Y3BwOgorICAgICAgICAoV2ViS2l0OjpBY2NlbGVyYXRlZERyYXdpbmdBcmVhOjphY3Rpdml0eVN0
YXRlRGlkQ2hhbmdlKToKKyAgICAgICAgKFdlYktpdDo6QWNjZWxlcmF0ZWREcmF3aW5nQXJlYTo6
dmlld1N0YXRlRGlkQ2hhbmdlKTogRGVsZXRlZC4KKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBh
Z2UvQWNjZWxlcmF0ZWREcmF3aW5nQXJlYS5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFn
ZS9EcmF3aW5nQXJlYS5oOgorICAgICAgICAoV2ViS2l0OjpEcmF3aW5nQXJlYTo6YWN0aXZpdHlT
dGF0ZURpZENoYW5nZSk6CisgICAgICAgIChXZWJLaXQ6OkRyYXdpbmdBcmVhOjp2aWV3U3RhdGVE
aWRDaGFuZ2UpOiBEZWxldGVkLgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdl
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6bV91c2VySW50ZXJmYWNlTGF5b3V0RGlyZWN0aW9uKToK
KyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6cmVpbml0aWFsaXplV2ViUGFnZSk6CisgICAgICAg
IChXZWJLaXQ6OldlYlBhZ2U6OnVwZGF0ZUlzSW5XaW5kb3cpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJQYWdlOjpzZXRBY3Rpdml0eVN0YXRlKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6c2V0
Vmlld1N0YXRlKTogRGVsZXRlZC4KKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFn
ZS5oOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjppc1Zpc2libGUpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJQYWdlOjppc1Zpc2libGVPck9jY2x1ZGVkKToKKyAgICAgICAgKiBXZWJQcm9jZXNz
L1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBh
Z2UvbWFjL1JlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhLmg6CisgICAgICAgICogV2ViUHJvY2Vz
cy9XZWJQYWdlL21hYy9SZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYS5tbToKKyAgICAgICAgKFdl
YktpdDo6UmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWE6OmFjdGl2aXR5U3RhdGVEaWRDaGFuZ2Up
OgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYTo6dmlld1N0YXRl
RGlkQ2hhbmdlKTogRGVsZXRlZC4KKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1Rp
bGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQ
YWdlL21hYy9UaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYS5tbToKKyAgICAgICAgKFdlYktp
dDo6VGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWE6OlRpbGVkQ29yZUFuaW1hdGlvbkRyYXdp
bmdBcmVhKToKKyAgICAgICAgKFdlYktpdDo6VGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWE6
OmFjdGl2aXR5U3RhdGVEaWRDaGFuZ2UpOgorICAgICAgICAoV2ViS2l0OjpUaWxlZENvcmVBbmlt
YXRpb25EcmF3aW5nQXJlYTo6ZGlkVXBkYXRlQWN0aXZpdHlTdGF0ZVRpbWVyRmlyZWQpOgorICAg
ICAgICAoV2ViS2l0OjpUaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYTo6dmlld1N0YXRlRGlk
Q2hhbmdlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6VGlsZWRDb3JlQW5pbWF0aW9uRHJh
d2luZ0FyZWE6OmRpZFVwZGF0ZVZpZXdTdGF0ZVRpbWVyRmlyZWQpOiBEZWxldGVkLgorCiAyMDE2
LTEwLTMxICBCcmFkeSBFaWRzb24gIDxiZWlkc29uQGFwcGxlLmNvbT4KIAogICAgICAgICBJbmRl
eGVkREIgMi4wOiBTdXBwb3J0IElEQk9iamVjdFN0b3JlIGdldEFsbC9nZXRBbGxLZXlzLgpJbmRl
eDogU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJQYWdlQ3JlYXRpb25QYXJhbWV0
ZXJzLmNwcAkocmV2aXNpb24gMjA4MTk3KQorKysgU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYlBh
Z2VDcmVhdGlvblBhcmFtZXRlcnMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMyw3ICszMyw3IEBA
IG5hbWVzcGFjZSBXZWJLaXQgewogdm9pZCBXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzOjplbmNv
ZGUoSVBDOjpFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAogewogICAgIGVuY29kZXIgPDwgdmlld1Np
emU7Ci0gICAgZW5jb2RlciA8PCB2aWV3U3RhdGU7CisgICAgZW5jb2RlciA8PCBhY3Rpdml0eVN0
YXRlOwogCiAgICAgZW5jb2RlciA8PCBzdG9yZTsKICAgICBlbmNvZGVyLmVuY29kZUVudW0oZHJh
d2luZ0FyZWFUeXBlKTsKQEAgLTk0LDcgKzk0LDcgQEAgYm9vbCBXZWJQYWdlQ3JlYXRpb25QYXJh
bWV0ZXJzOjpkZWNvZGUoSQogewogICAgIGlmICghZGVjb2Rlci5kZWNvZGUocGFyYW1ldGVycy52
aWV3U2l6ZSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBpZiAoIWRlY29kZXIuZGVjb2Rl
KHBhcmFtZXRlcnMudmlld1N0YXRlKSkKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHBhcmFtZXRl
cnMuYWN0aXZpdHlTdGF0ZSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBpZiAoIWRlY29k
ZXIuZGVjb2RlKHBhcmFtZXRlcnMuc3RvcmUpKQogICAgICAgICByZXR1cm4gZmFsc2U7CkluZGV4
OiBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycy5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJz
LmgJKHJldmlzaW9uIDIwODE5NykKKysrIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJQYWdlQ3Jl
YXRpb25QYXJhbWV0ZXJzLmgJKHdvcmtpbmcgY29weSkKQEAgLTMyLDYgKzMyLDcgQEAKICNpbmNs
dWRlICJXZWJDb3JlQXJndW1lbnRDb2RlcnMuaCIKICNpbmNsdWRlICJXZWJQYWdlR3JvdXBEYXRh
LmgiCiAjaW5jbHVkZSAiV2ViUHJlZmVyZW5jZXNTdG9yZS5oIgorI2luY2x1ZGUgPFdlYkNvcmUv
QWN0aXZpdHlTdGF0ZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvQ29sb3IuaD4KICNpbmNsdWRlIDxX
ZWJDb3JlL0Zsb2F0U2l6ZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvSW50U2l6ZS5oPgpAQCAtNDAs
NyArNDEsNiBAQAogI2luY2x1ZGUgPFdlYkNvcmUvU2Nyb2xsVHlwZXMuaD4KICNpbmNsdWRlIDxX
ZWJDb3JlL1Nlc3Npb25JRC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvVXNlckludGVyZmFjZUxheW91
dERpcmVjdGlvbi5oPgotI2luY2x1ZGUgPFdlYkNvcmUvVmlld1N0YXRlLmg+CiAjaW5jbHVkZSA8
d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKICNpZiBQTEFURk9STShNQUMpCkBAIC02MCw3ICs2MCw3
IEBAIHN0cnVjdCBXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzIHsKIAogICAgIFdlYkNvcmU6Oklu
dFNpemUgdmlld1NpemU7CiAKLSAgICBXZWJDb3JlOjpWaWV3U3RhdGU6OkZsYWdzIHZpZXdTdGF0
ZTsKKyAgICBXZWJDb3JlOjpBY3Rpdml0eVN0YXRlOjpGbGFncyBhY3Rpdml0eVN0YXRlOwogICAg
IAogICAgIFdlYlByZWZlcmVuY2VzU3RvcmUgc3RvcmU7CiAgICAgRHJhd2luZ0FyZWFUeXBlIGRy
YXdpbmdBcmVhVHlwZTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9EcmF3aW5nQXJl
YVByb3h5LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0RyYXdpbmdB
cmVhUHJveHkuaAkocmV2aXNpb24gMjA4MTk3KQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0RyYXdpbmdBcmVhUHJveHkuaAkod29ya2luZyBjb3B5KQpAQCAtODksNyArODksNyBAQCBwdWJs
aWM6CiAKICAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlRGVidWdJbmRpY2F0b3IoKSB7IH0KIAotICAg
IHZpcnR1YWwgdm9pZCB3YWl0Rm9yRGlkVXBkYXRlVmlld1N0YXRlKCkgeyB9CisgICAgdmlydHVh
bCB2b2lkIHdhaXRGb3JEaWRVcGRhdGVBY3Rpdml0eVN0YXRlKCkgeyB9CiAgICAgCiAgICAgdmly
dHVhbCB2b2lkIGRpc3BhdGNoQWZ0ZXJFbnN1cmluZ0RyYXdpbmcoc3RkOjpmdW5jdGlvbjx2b2lk
IChDYWxsYmFja0Jhc2U6OkVycm9yKT4pIHsgQVNTRVJUX05PVF9SRUFDSEVEKCk7IH0KIApJbmRl
eDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAJKHJldmlzaW9uIDIw
ODE5NykKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zNTcsNyArMzU3LDcgQEAgV2ViUGFnZVByb3h5OjpXZWJQYWdlUHJveHko
UGFnZUNsaWVudCYgcAogICAgICwgbV9nZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0TWFuYWdl
cigqdGhpcykKICAgICAsIG1fbm90aWZpY2F0aW9uUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyKCp0
aGlzKQogICAgICwgbV91c2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXIoKnRoaXMpCi0g
ICAgLCBtX3ZpZXdTdGF0ZShWaWV3U3RhdGU6Ok5vRmxhZ3MpCisgICAgLCBtX2FjdGl2aXR5U3Rh
dGUoQWN0aXZpdHlTdGF0ZTo6Tm9GbGFncykKICAgICAsIG1fdmlld1dhc0V2ZXJJbldpbmRvdyhm
YWxzZSkKICNpZiBQTEFURk9STShJT1MpCiAgICAgLCBtX2Fsd2F5c1J1bnNBdEZvcmVncm91bmRQ
cmlvcml0eShtX2NvbmZpZ3VyYXRpb24tPmFsd2F5c1J1bnNBdEZvcmVncm91bmRQcmlvcml0eSgp
KQpAQCAtNDQ5LDI2ICs0NDksMjYgQEAgV2ViUGFnZVByb3h5OjpXZWJQYWdlUHJveHkoUGFnZUNs
aWVudCYgcAogICAgICwgbV9hdXRvU2l6aW5nU2hvdWxkRXhwYW5kVG9WaWV3SGVpZ2h0KGZhbHNl
KQogICAgICwgbV9tZWRpYVZvbHVtZSgxKQogICAgICwgbV9tYXlTdGFydE1lZGlhV2hlbkluV2lu
ZG93KHRydWUpCi0gICAgLCBtX3dhaXRpbmdGb3JEaWRVcGRhdGVWaWV3U3RhdGUoZmFsc2UpCisg
ICAgLCBtX3dhaXRpbmdGb3JEaWRVcGRhdGVBY3Rpdml0eVN0YXRlKGZhbHNlKQogI2lmIFBMQVRG
T1JNKENPQ09BKQogICAgICwgbV9zY3JvbGxQZXJmb3JtYW5jZURhdGFDb2xsZWN0aW9uRW5hYmxl
ZChmYWxzZSkKICNlbmRpZgogICAgICwgbV9zY3JvbGxQaW5uaW5nQmVoYXZpb3IoRG9Ob3RQaW4p
CiAgICAgLCBtX25hdmlnYXRpb25JRCgwKQogICAgICwgbV9jb25maWd1cmF0aW9uUHJlZmVyZW5j
ZVZhbHVlcyhtX2NvbmZpZ3VyYXRpb24tPnByZWZlcmVuY2VWYWx1ZXMoKSkKLSAgICAsIG1fcG90
ZW50aWFsbHlDaGFuZ2VkVmlld1N0YXRlRmxhZ3MoVmlld1N0YXRlOjpOb0ZsYWdzKQotICAgICwg
bV92aWV3U3RhdGVDaGFuZ2VXYW50c1N5bmNocm9ub3VzUmVwbHkoZmFsc2UpCisgICAgLCBtX3Bv
dGVudGlhbGx5Q2hhbmdlZEFjdGl2aXR5U3RhdGVGbGFncyhBY3Rpdml0eVN0YXRlOjpOb0ZsYWdz
KQorICAgICwgbV9hY3Rpdml0eVN0YXRlQ2hhbmdlV2FudHNTeW5jaHJvbm91c1JlcGx5KGZhbHNl
KQogICAgICwgbV93ZWFrUHRyRmFjdG9yeSh0aGlzKQogewogICAgIG1fd2ViUHJvY2Vzc0xpZmV0
aW1lVHJhY2tlci5hZGRPYnNlcnZlcihtX3Zpc2l0ZWRMaW5rU3RvcmUpOwogICAgIG1fd2ViUHJv
Y2Vzc0xpZmV0aW1lVHJhY2tlci5hZGRPYnNlcnZlcihtX3dlYnNpdGVEYXRhU3RvcmUpOwogCi0g
ICAgdXBkYXRlVmlld1N0YXRlKCk7CisgICAgdXBkYXRlQWN0aXZpdHlTdGF0ZSgpOwogICAgIHVw
ZGF0ZVRocm90dGxlU3RhdGUoKTsKICAgICB1cGRhdGVIaWRkZW5QYWdlVGhyb3R0bGluZ0F1dG9J
bmNyZWFzZXMoKTsKICAgICAKICNpZiBIQVZFKE9VVF9PRl9QUk9DRVNTX0xBWUVSX0hPU1RJTkcp
Ci0gICAgbV9sYXllckhvc3RpbmdNb2RlID0gbV92aWV3U3RhdGUgJiBWaWV3U3RhdGU6OklzSW5X
aW5kb3cgPyBtX3BhZ2VDbGllbnQudmlld0xheWVySG9zdGluZ01vZGUoKSA6IExheWVySG9zdGlu
Z01vZGU6Ok91dE9mUHJvY2VzczsKKyAgICBtX2xheWVySG9zdGluZ01vZGUgPSBtX2FjdGl2aXR5
U3RhdGUgJiBBY3Rpdml0eVN0YXRlOjpJc0luV2luZG93ID8gbV9wYWdlQ2xpZW50LnZpZXdMYXll
ckhvc3RpbmdNb2RlKCkgOiBMYXllckhvc3RpbmdNb2RlOjpPdXRPZlByb2Nlc3M7CiAjZW5kaWYK
IAogICAgIHBsYXRmb3JtSW5pdGlhbGl6ZSgpOwpAQCAtNTA2LDkgKzUwNiw5IEBAIFdlYlBhZ2VQ
cm94eTo6V2ViUGFnZVByb3h5KFBhZ2VDbGllbnQmIHAKICAgICB9CiAKICNpZiBQTEFURk9STShD
T0NPQSkKLSAgICBjb25zdCBDRkluZGV4IHZpZXdTdGF0ZUNoYW5nZVJ1bkxvb3BPcmRlciA9IChD
RkluZGV4KVJ1bkxvb3BPYnNlcnZlcjo6V2VsbEtub3duUnVuTG9vcE9yZGVyczo6Q29yZUFuaW1h
dGlvbkNvbW1pdCAtIDE7Ci0gICAgbV92aWV3U3RhdGVDaGFuZ2VEaXNwYXRjaGVyID0gc3RkOjpt
YWtlX3VuaXF1ZTxSdW5Mb29wT2JzZXJ2ZXI+KHZpZXdTdGF0ZUNoYW5nZVJ1bkxvb3BPcmRlciwg
W3RoaXNdIHsKLSAgICAgICAgdGhpcy0+ZGlzcGF0Y2hWaWV3U3RhdGVDaGFuZ2UoKTsKKyAgICBj
b25zdCBDRkluZGV4IGFjdGl2aXR5U3RhdGVDaGFuZ2VSdW5Mb29wT3JkZXIgPSAoQ0ZJbmRleClS
dW5Mb29wT2JzZXJ2ZXI6OldlbGxLbm93blJ1bkxvb3BPcmRlcnM6OkNvcmVBbmltYXRpb25Db21t
aXQgLSAxOworICAgIG1fYWN0aXZpdHlTdGF0ZUNoYW5nZURpc3BhdGNoZXIgPSBzdGQ6Om1ha2Vf
dW5pcXVlPFJ1bkxvb3BPYnNlcnZlcj4oYWN0aXZpdHlTdGF0ZUNoYW5nZVJ1bkxvb3BPcmRlciwg
W3RoaXNdIHsKKyAgICAgICAgdGhpcy0+ZGlzcGF0Y2hBY3Rpdml0eVN0YXRlQ2hhbmdlKCk7CiAg
ICAgfSk7CiAjZW5kaWYKIH0KQEAgLTcyMCw3ICs3MjAsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6
cmVhdHRhY2hUb1dlYlByb2Nlc3MoCiAgICAgbV9wcm9jZXNzLT5hZGRFeGlzdGluZ1dlYlBhZ2Uo
dGhpcywgbV9wYWdlSUQpOwogICAgIG1fcHJvY2Vzcy0+YWRkTWVzc2FnZVJlY2VpdmVyKE1lc3Nh
Z2VzOjpXZWJQYWdlUHJveHk6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgbV9wYWdlSUQsICp0aGlz
KTsKIAotICAgIHVwZGF0ZVZpZXdTdGF0ZSgpOworICAgIHVwZGF0ZUFjdGl2aXR5U3RhdGUoKTsK
ICAgICB1cGRhdGVUaHJvdHRsZVN0YXRlKCk7CiAKICAgICBtX2luc3BlY3RvciA9IFdlYkluc3Bl
Y3RvclByb3h5OjpjcmVhdGUodGhpcyk7CkBAIC0xNDQyLDQ4ICsxNDQyLDQ4IEBAIHZvaWQgV2Vi
UGFnZVByb3h5OjpzZXRTdXBwcmVzc1Zpc2liaWxpdHkKIAogICAgIGlmICghbV9zdXBwcmVzc1Zp
c2liaWxpdHlVcGRhdGVzKSB7CiAjaWYgUExBVEZPUk0oQ09DT0EpCi0gICAgICAgIG1fdmlld1N0
YXRlQ2hhbmdlRGlzcGF0Y2hlci0+c2NoZWR1bGUoKTsKKyAgICAgICAgbV9hY3Rpdml0eVN0YXRl
Q2hhbmdlRGlzcGF0Y2hlci0+c2NoZWR1bGUoKTsKICNlbHNlCi0gICAgICAgIGRpc3BhdGNoVmll
d1N0YXRlQ2hhbmdlKCk7CisgICAgICAgIGRpc3BhdGNoQWN0aXZpdHlTdGF0ZUNoYW5nZSgpOwog
I2VuZGlmCiAgICAgfQogfQogCi12b2lkIFdlYlBhZ2VQcm94eTo6dXBkYXRlVmlld1N0YXRlKFZp
ZXdTdGF0ZTo6RmxhZ3MgZmxhZ3NUb1VwZGF0ZSkKK3ZvaWQgV2ViUGFnZVByb3h5Ojp1cGRhdGVB
Y3Rpdml0eVN0YXRlKEFjdGl2aXR5U3RhdGU6OkZsYWdzIGZsYWdzVG9VcGRhdGUpCiB7Ci0gICAg
bV92aWV3U3RhdGUgJj0gfmZsYWdzVG9VcGRhdGU7Ci0gICAgaWYgKGZsYWdzVG9VcGRhdGUgJiBW
aWV3U3RhdGU6OklzRm9jdXNlZCAmJiBtX3BhZ2VDbGllbnQuaXNWaWV3Rm9jdXNlZCgpKQotICAg
ICAgICBtX3ZpZXdTdGF0ZSB8PSBWaWV3U3RhdGU6OklzRm9jdXNlZDsKLSAgICBpZiAoZmxhZ3NU
b1VwZGF0ZSAmIFZpZXdTdGF0ZTo6V2luZG93SXNBY3RpdmUgJiYgbV9wYWdlQ2xpZW50LmlzVmll
d1dpbmRvd0FjdGl2ZSgpKQotICAgICAgICBtX3ZpZXdTdGF0ZSB8PSBWaWV3U3RhdGU6OldpbmRv
d0lzQWN0aXZlOwotICAgIGlmIChmbGFnc1RvVXBkYXRlICYgVmlld1N0YXRlOjpJc1Zpc2libGUg
JiYgbV9wYWdlQ2xpZW50LmlzVmlld1Zpc2libGUoKSkKLSAgICAgICAgbV92aWV3U3RhdGUgfD0g
Vmlld1N0YXRlOjpJc1Zpc2libGU7Ci0gICAgaWYgKGZsYWdzVG9VcGRhdGUgJiBWaWV3U3RhdGU6
OklzVmlzaWJsZU9yT2NjbHVkZWQgJiYgbV9wYWdlQ2xpZW50LmlzVmlld1Zpc2libGVPck9jY2x1
ZGVkKCkpCi0gICAgICAgIG1fdmlld1N0YXRlIHw9IFZpZXdTdGF0ZTo6SXNWaXNpYmxlT3JPY2Ns
dWRlZDsKLSAgICBpZiAoZmxhZ3NUb1VwZGF0ZSAmIFZpZXdTdGF0ZTo6SXNJbldpbmRvdyAmJiBt
X3BhZ2VDbGllbnQuaXNWaWV3SW5XaW5kb3coKSkKLSAgICAgICAgbV92aWV3U3RhdGUgfD0gVmll
d1N0YXRlOjpJc0luV2luZG93OwotICAgIGlmIChmbGFnc1RvVXBkYXRlICYgVmlld1N0YXRlOjpJ
c1Zpc3VhbGx5SWRsZSAmJiBtX3BhZ2VDbGllbnQuaXNWaXN1YWxseUlkbGUoKSkKLSAgICAgICAg
bV92aWV3U3RhdGUgfD0gVmlld1N0YXRlOjpJc1Zpc3VhbGx5SWRsZTsKKyAgICBtX2FjdGl2aXR5
U3RhdGUgJj0gfmZsYWdzVG9VcGRhdGU7CisgICAgaWYgKGZsYWdzVG9VcGRhdGUgJiBBY3Rpdml0
eVN0YXRlOjpJc0ZvY3VzZWQgJiYgbV9wYWdlQ2xpZW50LmlzVmlld0ZvY3VzZWQoKSkKKyAgICAg
ICAgbV9hY3Rpdml0eVN0YXRlIHw9IEFjdGl2aXR5U3RhdGU6OklzRm9jdXNlZDsKKyAgICBpZiAo
ZmxhZ3NUb1VwZGF0ZSAmIEFjdGl2aXR5U3RhdGU6OldpbmRvd0lzQWN0aXZlICYmIG1fcGFnZUNs
aWVudC5pc1ZpZXdXaW5kb3dBY3RpdmUoKSkKKyAgICAgICAgbV9hY3Rpdml0eVN0YXRlIHw9IEFj
dGl2aXR5U3RhdGU6OldpbmRvd0lzQWN0aXZlOworICAgIGlmIChmbGFnc1RvVXBkYXRlICYgQWN0
aXZpdHlTdGF0ZTo6SXNWaXNpYmxlICYmIG1fcGFnZUNsaWVudC5pc1ZpZXdWaXNpYmxlKCkpCisg
ICAgICAgIG1fYWN0aXZpdHlTdGF0ZSB8PSBBY3Rpdml0eVN0YXRlOjpJc1Zpc2libGU7CisgICAg
aWYgKGZsYWdzVG9VcGRhdGUgJiBBY3Rpdml0eVN0YXRlOjpJc1Zpc2libGVPck9jY2x1ZGVkICYm
IG1fcGFnZUNsaWVudC5pc1ZpZXdWaXNpYmxlT3JPY2NsdWRlZCgpKQorICAgICAgICBtX2FjdGl2
aXR5U3RhdGUgfD0gQWN0aXZpdHlTdGF0ZTo6SXNWaXNpYmxlT3JPY2NsdWRlZDsKKyAgICBpZiAo
ZmxhZ3NUb1VwZGF0ZSAmIEFjdGl2aXR5U3RhdGU6OklzSW5XaW5kb3cgJiYgbV9wYWdlQ2xpZW50
LmlzVmlld0luV2luZG93KCkpCisgICAgICAgIG1fYWN0aXZpdHlTdGF0ZSB8PSBBY3Rpdml0eVN0
YXRlOjpJc0luV2luZG93OworICAgIGlmIChmbGFnc1RvVXBkYXRlICYgQWN0aXZpdHlTdGF0ZTo6
SXNWaXN1YWxseUlkbGUgJiYgbV9wYWdlQ2xpZW50LmlzVmlzdWFsbHlJZGxlKCkpCisgICAgICAg
IG1fYWN0aXZpdHlTdGF0ZSB8PSBBY3Rpdml0eVN0YXRlOjpJc1Zpc3VhbGx5SWRsZTsKIH0KIAot
dm9pZCBXZWJQYWdlUHJveHk6OnZpZXdTdGF0ZURpZENoYW5nZShWaWV3U3RhdGU6OkZsYWdzIG1h
eUhhdmVDaGFuZ2VkLCBib29sIHdhbnRzU3luY2hyb25vdXNSZXBseSwgVmlld1N0YXRlQ2hhbmdl
RGlzcGF0Y2hNb2RlIGRpc3BhdGNoTW9kZSkKK3ZvaWQgV2ViUGFnZVByb3h5OjphY3Rpdml0eVN0
YXRlRGlkQ2hhbmdlKEFjdGl2aXR5U3RhdGU6OkZsYWdzIG1heUhhdmVDaGFuZ2VkLCBib29sIHdh
bnRzU3luY2hyb25vdXNSZXBseSwgQWN0aXZpdHlTdGF0ZUNoYW5nZURpc3BhdGNoTW9kZSBkaXNw
YXRjaE1vZGUpCiB7Ci0gICAgbV9wb3RlbnRpYWxseUNoYW5nZWRWaWV3U3RhdGVGbGFncyB8PSBt
YXlIYXZlQ2hhbmdlZDsKLSAgICBtX3ZpZXdTdGF0ZUNoYW5nZVdhbnRzU3luY2hyb25vdXNSZXBs
eSA9IG1fdmlld1N0YXRlQ2hhbmdlV2FudHNTeW5jaHJvbm91c1JlcGx5IHx8IHdhbnRzU3luY2hy
b25vdXNSZXBseTsKKyAgICBtX3BvdGVudGlhbGx5Q2hhbmdlZEFjdGl2aXR5U3RhdGVGbGFncyB8
PSBtYXlIYXZlQ2hhbmdlZDsKKyAgICBtX2FjdGl2aXR5U3RhdGVDaGFuZ2VXYW50c1N5bmNocm9u
b3VzUmVwbHkgPSBtX2FjdGl2aXR5U3RhdGVDaGFuZ2VXYW50c1N5bmNocm9ub3VzUmVwbHkgfHwg
d2FudHNTeW5jaHJvbm91c1JlcGx5OwogCi0gICAgaWYgKG1fc3VwcHJlc3NWaXNpYmlsaXR5VXBk
YXRlcyAmJiBkaXNwYXRjaE1vZGUgIT0gVmlld1N0YXRlQ2hhbmdlRGlzcGF0Y2hNb2RlOjpJbW1l
ZGlhdGUpCisgICAgaWYgKG1fc3VwcHJlc3NWaXNpYmlsaXR5VXBkYXRlcyAmJiBkaXNwYXRjaE1v
ZGUgIT0gQWN0aXZpdHlTdGF0ZUNoYW5nZURpc3BhdGNoTW9kZTo6SW1tZWRpYXRlKQogICAgICAg
ICByZXR1cm47CiAKICNpZiBQTEFURk9STShDT0NPQSkKLSAgICBib29sIGlzTmV3bHlJbldpbmRv
dyA9ICFpc0luV2luZG93KCkgJiYgKG1heUhhdmVDaGFuZ2VkICYgVmlld1N0YXRlOjpJc0luV2lu
ZG93KSAmJiBtX3BhZ2VDbGllbnQuaXNWaWV3SW5XaW5kb3coKTsKLSAgICBpZiAoZGlzcGF0Y2hN
b2RlID09IFZpZXdTdGF0ZUNoYW5nZURpc3BhdGNoTW9kZTo6SW1tZWRpYXRlIHx8IGlzTmV3bHlJ
bldpbmRvdykgewotICAgICAgICBkaXNwYXRjaFZpZXdTdGF0ZUNoYW5nZSgpOworICAgIGJvb2wg
aXNOZXdseUluV2luZG93ID0gIWlzSW5XaW5kb3coKSAmJiAobWF5SGF2ZUNoYW5nZWQgJiBBY3Rp
dml0eVN0YXRlOjpJc0luV2luZG93KSAmJiBtX3BhZ2VDbGllbnQuaXNWaWV3SW5XaW5kb3coKTsK
KyAgICBpZiAoZGlzcGF0Y2hNb2RlID09IEFjdGl2aXR5U3RhdGVDaGFuZ2VEaXNwYXRjaE1vZGU6
OkltbWVkaWF0ZSB8fCBpc05ld2x5SW5XaW5kb3cpIHsKKyAgICAgICAgZGlzcGF0Y2hBY3Rpdml0
eVN0YXRlQ2hhbmdlKCk7CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgbV92aWV3U3RhdGVD
aGFuZ2VEaXNwYXRjaGVyLT5zY2hlZHVsZSgpOworICAgIG1fYWN0aXZpdHlTdGF0ZUNoYW5nZURp
c3BhdGNoZXItPnNjaGVkdWxlKCk7CiAjZWxzZQogICAgIFVOVVNFRF9QQVJBTShkaXNwYXRjaE1v
ZGUpOwotICAgIGRpc3BhdGNoVmlld1N0YXRlQ2hhbmdlKCk7CisgICAgZGlzcGF0Y2hBY3Rpdml0
eVN0YXRlQ2hhbmdlKCk7CiAjZW5kaWYKIH0KIApAQCAtMTUxMCw1NCArMTUxMCw1NCBAQCB2b2lk
IFdlYlBhZ2VQcm94eTo6dmlld0RpZEVudGVyV2luZG93KCkKICAgICB9CiB9CiAKLXZvaWQgV2Vi
UGFnZVByb3h5OjpkaXNwYXRjaFZpZXdTdGF0ZUNoYW5nZSgpCit2b2lkIFdlYlBhZ2VQcm94eTo6
ZGlzcGF0Y2hBY3Rpdml0eVN0YXRlQ2hhbmdlKCkKIHsKICNpZiBQTEFURk9STShDT0NPQSkKLSAg
ICBtX3ZpZXdTdGF0ZUNoYW5nZURpc3BhdGNoZXItPmludmFsaWRhdGUoKTsKKyAgICBtX2FjdGl2
aXR5U3RhdGVDaGFuZ2VEaXNwYXRjaGVyLT5pbnZhbGlkYXRlKCk7CiAjZW5kaWYKIAogICAgIGlm
ICghaXNWYWxpZCgpKQogICAgICAgICByZXR1cm47CiAKICAgICAvLyBJZiB0aGUgdmlzaWJpbGl0
eSBzdGF0ZSBtYXkgaGF2ZSBjaGFuZ2VkLCB0aGVuIHNvIG1heSB0aGUgdmlzdWFsbHkgaWRsZSAm
IG9jY2x1ZGVkIGFnbm9zdGljIHN0YXRlLgotICAgIGlmIChtX3BvdGVudGlhbGx5Q2hhbmdlZFZp
ZXdTdGF0ZUZsYWdzICYgVmlld1N0YXRlOjpJc1Zpc2libGUpCi0gICAgICAgIG1fcG90ZW50aWFs
bHlDaGFuZ2VkVmlld1N0YXRlRmxhZ3MgfD0gVmlld1N0YXRlOjpJc1Zpc2libGVPck9jY2x1ZGVk
IHwgVmlld1N0YXRlOjpJc1Zpc3VhbGx5SWRsZTsKKyAgICBpZiAobV9wb3RlbnRpYWxseUNoYW5n
ZWRBY3Rpdml0eVN0YXRlRmxhZ3MgJiBBY3Rpdml0eVN0YXRlOjpJc1Zpc2libGUpCisgICAgICAg
IG1fcG90ZW50aWFsbHlDaGFuZ2VkQWN0aXZpdHlTdGF0ZUZsYWdzIHw9IEFjdGl2aXR5U3RhdGU6
OklzVmlzaWJsZU9yT2NjbHVkZWQgfCBBY3Rpdml0eVN0YXRlOjpJc1Zpc3VhbGx5SWRsZTsKIAog
ICAgIC8vIFJlY29yZCB0aGUgcHJpb3IgdmlldyBzdGF0ZSwgdXBkYXRlIHRoZSBmbGFncyB0aGF0
IG1heSBoYXZlIGNoYW5nZWQsCiAgICAgLy8gYW5kIGNoZWNrIHdoaWNoIGZsYWdzIGhhdmUgYWN0
dWFsbHkgY2hhbmdlZC4KLSAgICBWaWV3U3RhdGU6OkZsYWdzIHByZXZpb3VzVmlld1N0YXRlID0g
bV92aWV3U3RhdGU7Ci0gICAgdXBkYXRlVmlld1N0YXRlKG1fcG90ZW50aWFsbHlDaGFuZ2VkVmll
d1N0YXRlRmxhZ3MpOwotICAgIFZpZXdTdGF0ZTo6RmxhZ3MgY2hhbmdlZCA9IG1fdmlld1N0YXRl
IF4gcHJldmlvdXNWaWV3U3RhdGU7CisgICAgQWN0aXZpdHlTdGF0ZTo6RmxhZ3MgcHJldmlvdXNB
Y3Rpdml0eVN0YXRlID0gbV9hY3Rpdml0eVN0YXRlOworICAgIHVwZGF0ZUFjdGl2aXR5U3RhdGUo
bV9wb3RlbnRpYWxseUNoYW5nZWRBY3Rpdml0eVN0YXRlRmxhZ3MpOworICAgIEFjdGl2aXR5U3Rh
dGU6OkZsYWdzIGNoYW5nZWQgPSBtX2FjdGl2aXR5U3RhdGUgXiBwcmV2aW91c0FjdGl2aXR5U3Rh
dGU7CiAKLSAgICBib29sIGlzTm93SW5XaW5kb3cgPSAoY2hhbmdlZCAmIFZpZXdTdGF0ZTo6SXNJ
bldpbmRvdykgJiYgaXNJbldpbmRvdygpOworICAgIGJvb2wgaXNOb3dJbldpbmRvdyA9IChjaGFu
Z2VkICYgQWN0aXZpdHlTdGF0ZTo6SXNJbldpbmRvdykgJiYgaXNJbldpbmRvdygpOwogICAgIC8v
IFdlIGFsd2F5cyB3YW50IHRvIHdhaXQgZm9yIHRoZSBXZWIgcHJvY2VzcyB0byByZXBseSBpZiB3
ZSd2ZSBiZWVuIGluLXdpbmRvdyBiZWZvcmUgYW5kIGFyZSBjb21pbmcgYmFjayBpbi13aW5kb3cu
CiAgICAgaWYgKG1fdmlld1dhc0V2ZXJJbldpbmRvdyAmJiBpc05vd0luV2luZG93ICYmIG1fZHJh
d2luZ0FyZWEtPmhhc1Zpc2libGVDb250ZW50KCkgJiYgbV93YWl0c0ZvclBhaW50QWZ0ZXJWaWV3
RGlkTW92ZVRvV2luZG93KQotICAgICAgICBtX3ZpZXdTdGF0ZUNoYW5nZVdhbnRzU3luY2hyb25v
dXNSZXBseSA9IHRydWU7CisgICAgICAgIG1fYWN0aXZpdHlTdGF0ZUNoYW5nZVdhbnRzU3luY2hy
b25vdXNSZXBseSA9IHRydWU7CiAKICAgICAvLyBEb24ndCB3YWl0IHN5bmNocm9ub3VzbHkgaWYg
dGhlIHZpZXcgc3RhdGUgaXMgbm90IHZpc2libGUuIChUaGlzIG1hdHRlcnMgaW4gcGFydGljdWxh
ciBvbiBpT1MsIHdoZXJlIGEgaGlkZGVuIHBhZ2UgbWF5IGJlIHN1c3BlbmRlZC4pCi0gICAgaWYg
KCEobV92aWV3U3RhdGUgJiBWaWV3U3RhdGU6OklzVmlzaWJsZSkpCi0gICAgICAgIG1fdmlld1N0
YXRlQ2hhbmdlV2FudHNTeW5jaHJvbm91c1JlcGx5ID0gZmFsc2U7CisgICAgaWYgKCEobV9hY3Rp
dml0eVN0YXRlICYgQWN0aXZpdHlTdGF0ZTo6SXNWaXNpYmxlKSkKKyAgICAgICAgbV9hY3Rpdml0
eVN0YXRlQ2hhbmdlV2FudHNTeW5jaHJvbm91c1JlcGx5ID0gZmFsc2U7CiAKLSAgICBpZiAoY2hh
bmdlZCB8fCBtX3ZpZXdTdGF0ZUNoYW5nZVdhbnRzU3luY2hyb25vdXNSZXBseSB8fCAhbV9uZXh0
Vmlld1N0YXRlQ2hhbmdlQ2FsbGJhY2tzLmlzRW1wdHkoKSkKLSAgICAgICAgbV9wcm9jZXNzLT5z
ZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTZXRWaWV3U3RhdGUobV92aWV3U3RhdGUsIG1fdmlld1N0
YXRlQ2hhbmdlV2FudHNTeW5jaHJvbm91c1JlcGx5LCBtX25leHRWaWV3U3RhdGVDaGFuZ2VDYWxs
YmFja3MpLCBtX3BhZ2VJRCk7CisgICAgaWYgKGNoYW5nZWQgfHwgbV9hY3Rpdml0eVN0YXRlQ2hh
bmdlV2FudHNTeW5jaHJvbm91c1JlcGx5IHx8ICFtX25leHRBY3Rpdml0eVN0YXRlQ2hhbmdlQ2Fs
bGJhY2tzLmlzRW1wdHkoKSkKKyAgICAgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQ
YWdlOjpTZXRBY3Rpdml0eVN0YXRlKG1fYWN0aXZpdHlTdGF0ZSwgbV9hY3Rpdml0eVN0YXRlQ2hh
bmdlV2FudHNTeW5jaHJvbm91c1JlcGx5LCBtX25leHRBY3Rpdml0eVN0YXRlQ2hhbmdlQ2FsbGJh
Y2tzKSwgbV9wYWdlSUQpOwogCi0gICAgbV9uZXh0Vmlld1N0YXRlQ2hhbmdlQ2FsbGJhY2tzLmNs
ZWFyKCk7CisgICAgbV9uZXh0QWN0aXZpdHlTdGF0ZUNoYW5nZUNhbGxiYWNrcy5jbGVhcigpOwog
Ci0gICAgLy8gVGhpcyBtdXN0IGhhcHBlbiBhZnRlciB0aGUgU2V0Vmlld1N0YXRlIG1lc3NhZ2Ug
aXMgc2VudCwgdG8gZW5zdXJlIHRoZSBwYWdlIHZpc2liaWxpdHkgZXZlbnQgY2FuIGZpcmUuCisg
ICAgLy8gVGhpcyBtdXN0IGhhcHBlbiBhZnRlciB0aGUgU2V0QWN0aXZpdHlTdGF0ZSBtZXNzYWdl
IGlzIHNlbnQsIHRvIGVuc3VyZSB0aGUgcGFnZSB2aXNpYmlsaXR5IGV2ZW50IGNhbiBmaXJlLgog
ICAgIHVwZGF0ZVRocm90dGxlU3RhdGUoKTsKIAogICAgIC8vIElmIHdlJ3ZlIHN0YXJ0ZWQgdGhl
IHJlc3BvbnNpdmVuZXNzIHRpbWVyIGFzIHBhcnQgb2YgdGVsbGluZyB0aGUgd2ViIHByb2Nlc3Mg
dG8gdXBkYXRlIHRoZSBiYWNraW5nIHN0b3JlCiAgICAgLy8gc3RhdGUsIGl0IG1pZ2h0IG5vdCBz
ZW5kIGJhY2sgYSByZXBseSAoc2luY2UgaXQgd29uJ3QgcGFpbnQgYW55dGhpbmcgaWYgdGhlIHdl
YiBwYWdlIGlzIGhpZGRlbikgc28gd2UKICAgICAvLyBzdG9wIHRoZSB1bnJlc3BvbnNpdmVuZXNz
IHRpbWVyIGhlcmUuCi0gICAgaWYgKChjaGFuZ2VkICYgVmlld1N0YXRlOjpJc1Zpc2libGUpICYm
ICFpc1ZpZXdWaXNpYmxlKCkpCisgICAgaWYgKChjaGFuZ2VkICYgQWN0aXZpdHlTdGF0ZTo6SXNW
aXNpYmxlKSAmJiAhaXNWaWV3VmlzaWJsZSgpKQogICAgICAgICBtX3Byb2Nlc3MtPnJlc3BvbnNp
dmVuZXNzVGltZXIoKS5zdG9wKCk7CiAKICNpZiBFTkFCTEUoUE9JTlRFUl9MT0NLKQotICAgIGlm
ICgoY2hhbmdlZCAmIFZpZXdTdGF0ZTo6SXNWaXNpYmxlKSAmJiAhaXNWaWV3VmlzaWJsZSgpKQor
ICAgIGlmICgoY2hhbmdlZCAmIEFjdGl2aXR5U3RhdGU6OklzVmlzaWJsZSkgJiYgIWlzVmlld1Zp
c2libGUoKSkKICAgICAgICAgcmVxdWVzdFBvaW50ZXJVbmxvY2soKTsKICNlbmRpZgogCi0gICAg
aWYgKGNoYW5nZWQgJiBWaWV3U3RhdGU6OklzSW5XaW5kb3cpIHsKKyAgICBpZiAoY2hhbmdlZCAm
IEFjdGl2aXR5U3RhdGU6OklzSW5XaW5kb3cpIHsKICAgICAgICAgaWYgKGlzSW5XaW5kb3coKSkK
ICAgICAgICAgICAgIHZpZXdEaWRFbnRlcldpbmRvdygpOwogICAgICAgICBlbHNlCkBAIC0xNTY2
LDExICsxNTY2LDExIEBAIHZvaWQgV2ViUGFnZVByb3h5OjpkaXNwYXRjaFZpZXdTdGF0ZUNoYW4K
IAogICAgIHVwZGF0ZUJhY2tpbmdTdG9yZURpc2NhcmRhYmxlU3RhdGUoKTsKIAotICAgIGlmICht
X3ZpZXdTdGF0ZUNoYW5nZVdhbnRzU3luY2hyb25vdXNSZXBseSkKLSAgICAgICAgd2FpdEZvckRp
ZFVwZGF0ZVZpZXdTdGF0ZSgpOworICAgIGlmIChtX2FjdGl2aXR5U3RhdGVDaGFuZ2VXYW50c1N5
bmNocm9ub3VzUmVwbHkpCisgICAgICAgIHdhaXRGb3JEaWRVcGRhdGVBY3Rpdml0eVN0YXRlKCk7
CiAKLSAgICBtX3BvdGVudGlhbGx5Q2hhbmdlZFZpZXdTdGF0ZUZsYWdzID0gVmlld1N0YXRlOjpO
b0ZsYWdzOwotICAgIG1fdmlld1N0YXRlQ2hhbmdlV2FudHNTeW5jaHJvbm91c1JlcGx5ID0gZmFs
c2U7CisgICAgbV9wb3RlbnRpYWxseUNoYW5nZWRBY3Rpdml0eVN0YXRlRmxhZ3MgPSBBY3Rpdml0
eVN0YXRlOjpOb0ZsYWdzOworICAgIG1fYWN0aXZpdHlTdGF0ZUNoYW5nZVdhbnRzU3luY2hyb25v
dXNSZXBseSA9IGZhbHNlOwogICAgIG1fdmlld1dhc0V2ZXJJbldpbmRvdyB8PSBpc05vd0luV2lu
ZG93OwogfQogCkBAIC0xNTkyLDEzICsxNTkyLDEzIEBAIHZvaWQgV2ViUGFnZVByb3h5Ojp1cGRh
dGVUaHJvdHRsZVN0YXRlKCkKICAgICAvLyBXZSBzaG91bGQgc3VwcHJlc3MgaWYgdGhlIHBhZ2Ug
aXMgbm90IGFjdGl2ZSwgaXMgdmlzdWFsbHkgaWRsZSwgYW5kIHN1cHJlc3Npb24gaXMgZW5hYmxl
ZC4KICAgICBib29sIGlzTG9hZGluZyA9IG1fcGFnZUxvYWRTdGF0ZS5pc0xvYWRpbmcoKTsKICAg
ICBib29sIGlzUGxheWluZ0F1ZGlvID0gbV9tZWRpYVN0YXRlICYgTWVkaWFQcm9kdWNlcjo6SXNQ
bGF5aW5nQXVkaW8gJiYgIShtX211dGVkU3RhdGUgJiBNZWRpYVByb2R1Y2VyOjpBdWRpb0lzTXV0
ZWQpOwotICAgIGJvb2wgcGFnZVNob3VsZEJlU3VwcHJlc3NlZCA9ICFpc0xvYWRpbmcgJiYgIWlz
UGxheWluZ0F1ZGlvICYmIHByb2Nlc3NTdXBwcmVzc2lvbkVuYWJsZWQgJiYgKG1fdmlld1N0YXRl
ICYgVmlld1N0YXRlOjpJc1Zpc3VhbGx5SWRsZSk7CisgICAgYm9vbCBwYWdlU2hvdWxkQmVTdXBw
cmVzc2VkID0gIWlzTG9hZGluZyAmJiAhaXNQbGF5aW5nQXVkaW8gJiYgcHJvY2Vzc1N1cHByZXNz
aW9uRW5hYmxlZCAmJiAobV9hY3Rpdml0eVN0YXRlICYgQWN0aXZpdHlTdGF0ZTo6SXNWaXN1YWxs
eUlkbGUpOwogICAgIGlmIChtX3BhZ2VTdXBwcmVzc2VkICE9IHBhZ2VTaG91bGRCZVN1cHByZXNz
ZWQpIHsKICAgICAgICAgbV9wYWdlU3VwcHJlc3NlZCA9IHBhZ2VTaG91bGRCZVN1cHByZXNzZWQ7
CiAgICAgICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U2V0UGFnZVN1cHBy
ZXNzZWQobV9wYWdlU3VwcHJlc3NlZCksIG1fcGFnZUlEKTsKICAgICB9CiAKLSAgICBpZiAobV92
aWV3U3RhdGUgJiBWaWV3U3RhdGU6OklzVmlzdWFsbHlJZGxlKQorICAgIGlmIChtX2FjdGl2aXR5
U3RhdGUgJiBBY3Rpdml0eVN0YXRlOjpJc1Zpc3VhbGx5SWRsZSkKICAgICAgICAgbV9wYWdlSXNV
c2VyT2JzZXJ2YWJsZUNvdW50ID0gbnVsbHB0cjsKICAgICBlbHNlIGlmICghbV9wYWdlSXNVc2Vy
T2JzZXJ2YWJsZUNvdW50KQogICAgICAgICBtX3BhZ2VJc1VzZXJPYnNlcnZhYmxlQ291bnQgPSBt
X3Byb2Nlc3MtPnByb2Nlc3NQb29sKCkudXNlck9ic2VydmFibGVQYWdlQ291bnQoKTsKQEAgLTE2
NDAsNyArMTY0MCw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpsYXllckhvc3RpbmdNb2RlRGlkQ2gK
ICAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNldExheWVySG9zdGluZ01v
ZGUobGF5ZXJIb3N0aW5nTW9kZSksIG1fcGFnZUlEKTsKIH0KIAotdm9pZCBXZWJQYWdlUHJveHk6
OndhaXRGb3JEaWRVcGRhdGVWaWV3U3RhdGUoKQordm9pZCBXZWJQYWdlUHJveHk6OndhaXRGb3JE
aWRVcGRhdGVBY3Rpdml0eVN0YXRlKCkKIHsKICAgICBpZiAoIWlzVmFsaWQoKSkKICAgICAgICAg
cmV0dXJuOwpAQCAtMTY0OSwxMSArMTY0OSwxMSBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6d2FpdEZv
ckRpZFVwZGF0ZVZpZXdTCiAgICAgICAgIHJldHVybjsKIAogICAgIC8vIElmIHdlIGhhdmUgcHJl
dmlvdXNseSB0aW1lZCBvdXQgd2l0aCBubyByZXNwb25zZSBmcm9tIHRoZSBXZWJQcm9jZXNzLCBk
b24ndCBibG9jayB0aGUgVUlQcm9jZXNzIGFnYWluIHVudGlsIGl0IHN0YXJ0cyByZXNwb25kaW5n
LgotICAgIGlmIChtX3dhaXRpbmdGb3JEaWRVcGRhdGVWaWV3U3RhdGUpCisgICAgaWYgKG1fd2Fp
dGluZ0ZvckRpZFVwZGF0ZUFjdGl2aXR5U3RhdGUpCiAgICAgICAgIHJldHVybjsKIAogI2lmIFBM
QVRGT1JNKElPUykKLSAgICAvLyBIYWlsIE1hcnkgY2hlY2suIFNob3VsZCBub3QgYmUgcG9zc2li
bGUgKGRpc3BhdGNoVmlld1N0YXRlQ2hhbmdlIHNob3VsZCBmb3JjZSBhc3luYyBpZiBub3Qgdmlz
aWJsZSwKKyAgICAvLyBIYWlsIE1hcnkgY2hlY2suIFNob3VsZCBub3QgYmUgcG9zc2libGUgKGRp
c3BhdGNoQWN0aXZpdHlTdGF0ZUNoYW5nZSBzaG91bGQgZm9yY2UgYXN5bmMgaWYgbm90IHZpc2li
bGUsCiAgICAgLy8gYW5kIGlmIHZpc2libGUgd2Ugc2hvdWxkIGJlIGhvbGRpbmcgYW4gYXNzZXJ0
aW9uKSAtIGJ1dCB3ZSBzaG91bGQgbmV2ZXIgYmxvY2sgb24gYSBzdXNwZW5kZWQgcHJvY2Vzcy4K
ICAgICBpZiAoIW1fYWN0aXZpdHlUb2tlbikgewogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQo
KTsKQEAgLTE2NjEsOSArMTY2MSw5IEBAIHZvaWQgV2ViUGFnZVByb3h5Ojp3YWl0Rm9yRGlkVXBk
YXRlVmlld1MKICAgICB9CiAjZW5kaWYKIAotICAgIG1fd2FpdGluZ0ZvckRpZFVwZGF0ZVZpZXdT
dGF0ZSA9IHRydWU7CisgICAgbV93YWl0aW5nRm9yRGlkVXBkYXRlQWN0aXZpdHlTdGF0ZSA9IHRy
dWU7CiAKLSAgICBtX2RyYXdpbmdBcmVhLT53YWl0Rm9yRGlkVXBkYXRlVmlld1N0YXRlKCk7Cisg
ICAgbV9kcmF3aW5nQXJlYS0+d2FpdEZvckRpZFVwZGF0ZUFjdGl2aXR5U3RhdGUoKTsKIH0KIAog
SW50U2l6ZSBXZWJQYWdlUHJveHk6OnZpZXdTaXplKCkgY29uc3QKQEAgLTU0NjMsNyArNTQ2Myw3
IEBAIFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMgV2ViUGFnZVByb3h5OjoKICAgICBXZWJQYWdl
Q3JlYXRpb25QYXJhbWV0ZXJzIHBhcmFtZXRlcnM7CiAKICAgICBwYXJhbWV0ZXJzLnZpZXdTaXpl
ID0gbV9wYWdlQ2xpZW50LnZpZXdTaXplKCk7Ci0gICAgcGFyYW1ldGVycy52aWV3U3RhdGUgPSBt
X3ZpZXdTdGF0ZTsKKyAgICBwYXJhbWV0ZXJzLmFjdGl2aXR5U3RhdGUgPSBtX2FjdGl2aXR5U3Rh
dGU7CiAgICAgcGFyYW1ldGVycy5kcmF3aW5nQXJlYVR5cGUgPSBtX2RyYXdpbmdBcmVhLT50eXBl
KCk7CiAgICAgcGFyYW1ldGVycy5zdG9yZSA9IHByZWZlcmVuY2VzU3RvcmUoKTsKICAgICBwYXJh
bWV0ZXJzLnBhZ2VHcm91cERhdGEgPSBtX3BhZ2VHcm91cC0+ZGF0YSgpOwpAQCAtNjQ3NCw3ICs2
NDc0LDcgQEAgdm9pZCogV2ViUGFnZVByb3h5OjppbW1lZGlhdGVBY3Rpb25BbmltYQogICAgIHJl
dHVybiBtX3BhZ2VDbGllbnQuaW1tZWRpYXRlQWN0aW9uQW5pbWF0aW9uQ29udHJvbGxlckZvckhp
dFRlc3RSZXN1bHQoaGl0VGVzdFJlc3VsdCwgdHlwZSwgdXNlckRhdGEpOwogfQogCi12b2lkIFdl
YlBhZ2VQcm94eTo6aW5zdGFsbFZpZXdTdGF0ZUNoYW5nZUNvbXBsZXRpb25IYW5kbGVyKHZvaWQg
KF5jb21wbGV0aW9uSGFuZGxlcikoKSkKK3ZvaWQgV2ViUGFnZVByb3h5OjppbnN0YWxsQWN0aXZp
dHlTdGF0ZUNoYW5nZUNvbXBsZXRpb25IYW5kbGVyKHZvaWQgKF5jb21wbGV0aW9uSGFuZGxlciko
KSkKIHsKICAgICBpZiAoIWlzVmFsaWQoKSkgewogICAgICAgICBjb21wbGV0aW9uSGFuZGxlcigp
OwpAQCAtNjQ4Nyw3ICs2NDg3LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6Omluc3RhbGxWaWV3U3Rh
dGVDaGFuZwogICAgICAgICBCbG9ja19yZWxlYXNlKGNvcGllZENvbXBsZXRpb25IYW5kbGVyKTsK
ICAgICB9LCBtX3Byb2Nlc3MtPnRocm90dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eVRva2VuKCkp
OwogICAgIHVpbnQ2NF90IGNhbGxiYWNrSUQgPSBtX2NhbGxiYWNrcy5wdXQoV1RGTW92ZSh2b2lk
Q2FsbGJhY2spKTsKLSAgICBtX25leHRWaWV3U3RhdGVDaGFuZ2VDYWxsYmFja3MuYXBwZW5kKGNh
bGxiYWNrSUQpOworICAgIG1fbmV4dEFjdGl2aXR5U3RhdGVDaGFuZ2VDYWxsYmFja3MuYXBwZW5k
KGNhbGxiYWNrSUQpOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6aGFuZGxlQWNjZXB0ZWRDYW5k
aWRhdGUoV2ViQ29yZTo6VGV4dENoZWNraW5nUmVzdWx0IGFjY2VwdGVkQ2FuZGlkYXRlKQpJbmRl
eDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAkocmV2aXNpb24gMjA4MTk3
KQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCSh3b3JraW5nIGNv
cHkpCkBAIC02MCw2ICs2MCw3IEBACiAjaW5jbHVkZSAiV2ViUGFnZVByb3h5TWVzc2FnZXMuaCIK
ICNpbmNsdWRlICJXZWJQb3B1cE1lbnVQcm94eS5oIgogI2luY2x1ZGUgIldlYlByb2Nlc3NMaWZl
dGltZVRyYWNrZXIuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL0FjdGl2aXR5U3RhdGUuaD4KICNpbmNs
dWRlIDxXZWJDb3JlL0NvbG9yLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9EcmFnQWN0aW9ucy5oPgog
I2luY2x1ZGUgPFdlYkNvcmUvRXZlbnRUcmFja2luZ1JlZ2lvbnMuaD4KQEAgLTczLDcgKzc0LDYg
QEAKICNpbmNsdWRlIDxXZWJDb3JlL1RleHRDaGVja2luZy5oPgogI2luY2x1ZGUgPFdlYkNvcmUv
VGV4dEdyYW51bGFyaXR5Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9Vc2VySW50ZXJmYWNlTGF5b3V0
RGlyZWN0aW9uLmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9WaWV3U3RhdGUuaD4KICNpbmNsdWRlIDxX
ZWJDb3JlL1Zpc2libGVTZWxlY3Rpb24uaD4KICNpbmNsdWRlIDxtZW1vcnk+CiAjaW5jbHVkZSA8
d3RmL0hhc2hNYXAuaD4KQEAgLTQyOCwxNiArNDI4LDE2IEBAIHB1YmxpYzoKICAgICB2b2lkIHNl
dERlbGVnYXRlc1Njcm9sbGluZyhib29sIGRlbGVnYXRlc1Njcm9sbGluZykgeyBtX2RlbGVnYXRl
c1Njcm9sbGluZyA9IGRlbGVnYXRlc1Njcm9sbGluZzsgfQogICAgIGJvb2wgZGVsZWdhdGVzU2Ny
b2xsaW5nKCkgY29uc3QgeyByZXR1cm4gbV9kZWxlZ2F0ZXNTY3JvbGxpbmc7IH0KIAotICAgIGVu
dW0gY2xhc3MgVmlld1N0YXRlQ2hhbmdlRGlzcGF0Y2hNb2RlIHsgRGVmZXJyYWJsZSwgSW1tZWRp
YXRlIH07Ci0gICAgdm9pZCB2aWV3U3RhdGVEaWRDaGFuZ2UoV2ViQ29yZTo6Vmlld1N0YXRlOjpG
bGFncyBtYXlIYXZlQ2hhbmdlZCwgYm9vbCB3YW50c1N5bmNocm9ub3VzUmVwbHkgPSBmYWxzZSwg
Vmlld1N0YXRlQ2hhbmdlRGlzcGF0Y2hNb2RlID0gVmlld1N0YXRlQ2hhbmdlRGlzcGF0Y2hNb2Rl
OjpEZWZlcnJhYmxlKTsKLSAgICBib29sIGlzSW5XaW5kb3coKSBjb25zdCB7IHJldHVybiBtX3Zp
ZXdTdGF0ZSAmIFdlYkNvcmU6OlZpZXdTdGF0ZTo6SXNJbldpbmRvdzsgfQotICAgIHZvaWQgd2Fp
dEZvckRpZFVwZGF0ZVZpZXdTdGF0ZSgpOwotICAgIHZvaWQgZGlkVXBkYXRlVmlld1N0YXRlKCkg
eyBtX3dhaXRpbmdGb3JEaWRVcGRhdGVWaWV3U3RhdGUgPSBmYWxzZTsgfQorICAgIGVudW0gY2xh
c3MgQWN0aXZpdHlTdGF0ZUNoYW5nZURpc3BhdGNoTW9kZSB7IERlZmVycmFibGUsIEltbWVkaWF0
ZSB9OworICAgIHZvaWQgYWN0aXZpdHlTdGF0ZURpZENoYW5nZShXZWJDb3JlOjpBY3Rpdml0eVN0
YXRlOjpGbGFncyBtYXlIYXZlQ2hhbmdlZCwgYm9vbCB3YW50c1N5bmNocm9ub3VzUmVwbHkgPSBm
YWxzZSwgQWN0aXZpdHlTdGF0ZUNoYW5nZURpc3BhdGNoTW9kZSA9IEFjdGl2aXR5U3RhdGVDaGFu
Z2VEaXNwYXRjaE1vZGU6OkRlZmVycmFibGUpOworICAgIGJvb2wgaXNJbldpbmRvdygpIGNvbnN0
IHsgcmV0dXJuIG1fYWN0aXZpdHlTdGF0ZSAmIFdlYkNvcmU6OkFjdGl2aXR5U3RhdGU6OklzSW5X
aW5kb3c7IH0KKyAgICB2b2lkIHdhaXRGb3JEaWRVcGRhdGVBY3Rpdml0eVN0YXRlKCk7CisgICAg
dm9pZCBkaWRVcGRhdGVBY3Rpdml0eVN0YXRlKCkgeyBtX3dhaXRpbmdGb3JEaWRVcGRhdGVBY3Rp
dml0eVN0YXRlID0gZmFsc2U7IH0KIAogICAgIHZvaWQgbGF5ZXJIb3N0aW5nTW9kZURpZENoYW5n
ZSgpOwogCiAgICAgV2ViQ29yZTo6SW50U2l6ZSB2aWV3U2l6ZSgpIGNvbnN0OwotICAgIGJvb2wg
aXNWaWV3VmlzaWJsZSgpIGNvbnN0IHsgcmV0dXJuIG1fdmlld1N0YXRlICYgV2ViQ29yZTo6Vmll
d1N0YXRlOjpJc1Zpc2libGU7IH0KKyAgICBib29sIGlzVmlld1Zpc2libGUoKSBjb25zdCB7IHJl
dHVybiBtX2FjdGl2aXR5U3RhdGUgJiBXZWJDb3JlOjpBY3Rpdml0eVN0YXRlOjpJc1Zpc2libGU7
IH0KICAgICBib29sIGlzVmlld1dpbmRvd0FjdGl2ZSgpIGNvbnN0OwogCiAgICAgdm9pZCBhZGRN
SU1FVHlwZVdpdGhDdXN0b21Db250ZW50UHJvdmlkZXIoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSk7
CkBAIC0xMDY2LDcgKzEwNjYsNyBAQCBwdWJsaWM6CiAKICAgICB2b2lkKiBpbW1lZGlhdGVBY3Rp
b25BbmltYXRpb25Db250cm9sbGVyRm9ySGl0VGVzdFJlc3VsdChSZWZQdHI8QVBJOjpIaXRUZXN0
UmVzdWx0PiwgdWludDY0X3QsIFJlZlB0cjxBUEk6Ok9iamVjdD4pOwogCi0gICAgdm9pZCBpbnN0
YWxsVmlld1N0YXRlQ2hhbmdlQ29tcGxldGlvbkhhbmRsZXIodm9pZCheY29tcGxldGlvbkhhbmRs
ZXIpKCkpOworICAgIHZvaWQgaW5zdGFsbEFjdGl2aXR5U3RhdGVDaGFuZ2VDb21wbGV0aW9uSGFu
ZGxlcih2b2lkKF5jb21wbGV0aW9uSGFuZGxlcikoKSk7CiAKICAgICB2b2lkIGhhbmRsZUFjY2Vw
dGVkQ2FuZGlkYXRlKFdlYkNvcmU6OlRleHRDaGVja2luZ1Jlc3VsdCk7CiAgICAgdm9pZCBkaWRI
YW5kbGVBY2NlcHRlZENhbmRpZGF0ZSgpOwpAQCAtMTE0OCw3ICsxMTQ4LDcgQEAgcHJpdmF0ZToK
ICAgICBXZWJQYWdlUHJveHkoUGFnZUNsaWVudCYsIFdlYlByb2Nlc3NQcm94eSYsIHVpbnQ2NF90
IHBhZ2VJRCwgUmVmPEFQSTo6UGFnZUNvbmZpZ3VyYXRpb24+JiYpOwogICAgIHZvaWQgcGxhdGZv
cm1Jbml0aWFsaXplKCk7CiAKLSAgICB2b2lkIHVwZGF0ZVZpZXdTdGF0ZShXZWJDb3JlOjpWaWV3
U3RhdGU6OkZsYWdzIGZsYWdzVG9VcGRhdGUgPSBXZWJDb3JlOjpWaWV3U3RhdGU6OkFsbEZsYWdz
KTsKKyAgICB2b2lkIHVwZGF0ZUFjdGl2aXR5U3RhdGUoV2ViQ29yZTo6QWN0aXZpdHlTdGF0ZTo6
RmxhZ3MgZmxhZ3NUb1VwZGF0ZSA9IFdlYkNvcmU6OkFjdGl2aXR5U3RhdGU6OkFsbEZsYWdzKTsK
ICAgICB2b2lkIHVwZGF0ZVRocm90dGxlU3RhdGUoKTsKICAgICB2b2lkIHVwZGF0ZUhpZGRlblBh
Z2VUaHJvdHRsaW5nQXV0b0luY3JlYXNlcygpOwogCkBAIC0xNTMzLDcgKzE1MzMsNyBAQCBwcml2
YXRlOgogCiAgICAgV2ViUHJlZmVyZW5jZXNTdG9yZSBwcmVmZXJlbmNlc1N0b3JlKCkgY29uc3Q7
CiAKLSAgICB2b2lkIGRpc3BhdGNoVmlld1N0YXRlQ2hhbmdlKCk7CisgICAgdm9pZCBkaXNwYXRj
aEFjdGl2aXR5U3RhdGVDaGFuZ2UoKTsKICAgICB2b2lkIHZpZXdEaWRMZWF2ZVdpbmRvdygpOwog
ICAgIHZvaWQgdmlld0RpZEVudGVyV2luZG93KCk7CiAKQEAgLTE2NTgsNyArMTY1OCw3IEBAIHBy
aXZhdGU6CiAKICAgICBVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eSBtX3Vz
ZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlcjsKIAotICAgIFdlYkNvcmU6OlZpZXdTdGF0
ZTo6RmxhZ3MgbV92aWV3U3RhdGU7CisgICAgV2ViQ29yZTo6QWN0aXZpdHlTdGF0ZTo6RmxhZ3Mg
bV9hY3Rpdml0eVN0YXRlOwogICAgIGJvb2wgbV92aWV3V2FzRXZlckluV2luZG93OwogI2lmIFBM
QVRGT1JNKElPUykKICAgICBib29sIG1fYWxsb3dzTWVkaWFEb2N1bWVudElubGluZVBsYXliYWNr
IHsgZmFsc2UgfTsKQEAgLTE4NjAsMTQgKzE4NjAsMTQgQEAgcHJpdmF0ZToKICAgICBXZWJDb3Jl
OjpNZWRpYVByb2R1Y2VyOjpNdXRlZFN0YXRlRmxhZ3MgbV9tdXRlZFN0YXRlIHsgV2ViQ29yZTo6
TWVkaWFQcm9kdWNlcjo6Tm9uZU11dGVkIH07CiAgICAgYm9vbCBtX21heVN0YXJ0TWVkaWFXaGVu
SW5XaW5kb3c7CiAKLSAgICBib29sIG1fd2FpdGluZ0ZvckRpZFVwZGF0ZVZpZXdTdGF0ZTsKKyAg
ICBib29sIG1fd2FpdGluZ0ZvckRpZFVwZGF0ZUFjdGl2aXR5U3RhdGU7CiAKICAgICBib29sIG1f
c2hvdWxkU2NhbGVWaWV3VG9GaXREb2N1bWVudCB7IGZhbHNlIH07CiAgICAgYm9vbCBtX3N1cHBy
ZXNzQXV0b21hdGljTmF2aWdhdGlvblNuYXBzaG90dGluZyB7IGZhbHNlIH07CiAKICNpZiBQTEFU
Rk9STShDT0NPQSkKICAgICBIYXNoTWFwPFN0cmluZywgU3RyaW5nPiBtX3RlbXBvcmFyeVBERkZp
bGVzOwotICAgIHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpSdW5Mb29wT2JzZXJ2ZXI+IG1fdmll
d1N0YXRlQ2hhbmdlRGlzcGF0Y2hlcjsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6UnVu
TG9vcE9ic2VydmVyPiBtX2FjdGl2aXR5U3RhdGVDaGFuZ2VEaXNwYXRjaGVyOwogCiAgICAgc3Rk
Ojp1bmlxdWVfcHRyPFJlbW90ZUxheWVyVHJlZVNjcm9sbGluZ1BlcmZvcm1hbmNlRGF0YT4gbV9z
Y3JvbGxpbmdQZXJmb3JtYW5jZURhdGE7CiAgICAgYm9vbCBtX3Njcm9sbFBlcmZvcm1hbmNlRGF0
YUNvbGxlY3Rpb25FbmFibGVkOwpAQCAtMTg4Miw5ICsxODgyLDkgQEAgcHJpdmF0ZToKICAgICB1
aW50NjRfdCBtX25hdmlnYXRpb25JRDsKIAogICAgIFdlYlByZWZlcmVuY2VzU3RvcmU6OlZhbHVl
TWFwIG1fY29uZmlndXJhdGlvblByZWZlcmVuY2VWYWx1ZXM7Ci0gICAgV2ViQ29yZTo6Vmlld1N0
YXRlOjpGbGFncyBtX3BvdGVudGlhbGx5Q2hhbmdlZFZpZXdTdGF0ZUZsYWdzOwotICAgIGJvb2wg
bV92aWV3U3RhdGVDaGFuZ2VXYW50c1N5bmNocm9ub3VzUmVwbHk7Ci0gICAgVmVjdG9yPHVpbnQ2
NF90PiBtX25leHRWaWV3U3RhdGVDaGFuZ2VDYWxsYmFja3M7CisgICAgV2ViQ29yZTo6QWN0aXZp
dHlTdGF0ZTo6RmxhZ3MgbV9wb3RlbnRpYWxseUNoYW5nZWRBY3Rpdml0eVN0YXRlRmxhZ3M7Cisg
ICAgYm9vbCBtX2FjdGl2aXR5U3RhdGVDaGFuZ2VXYW50c1N5bmNocm9ub3VzUmVwbHk7CisgICAg
VmVjdG9yPHVpbnQ2NF90PiBtX25leHRBY3Rpdml0eVN0YXRlQ2hhbmdlQ2FsbGJhY2tzOwogCiAg
ICAgV2ViQ29yZTo6TWVkaWFQcm9kdWNlcjo6TWVkaWFTdGF0ZUZsYWdzIG1fbWVkaWFTdGF0ZSB7
IFdlYkNvcmU6Ok1lZGlhUHJvZHVjZXI6OklzTm90UGxheWluZyB9OwogCkluZGV4OiBTb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW4JKHJldmlz
aW9uIDIwODE5NykKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVz
c2FnZXMuaW4JKHdvcmtpbmcgY29weSkKQEAgLTQwNyw3ICs0MDcsNyBAQCBtZXNzYWdlcyAtPiBX
ZWJQYWdlUHJveHkgewogICAgIEZpbmRQbHVnaW4oU3RyaW5nIG1pbWVUeXBlLCB1aW50MzJfdCBw
cm9jZXNzVHlwZSwgU3RyaW5nIHVybFN0cmluZywgU3RyaW5nIGZyYW1lVVJMU3RyaW5nLCBTdHJp
bmcgcGFnZVVSTFN0cmluZywgYm9vbCBhbGxvd09ubHlBcHBsaWNhdGlvblBsdWdpbnMpIC0+ICh1
aW50NjRfdCBwbHVnaW5Qcm9jZXNzVG9rZW4sIFN0cmluZyBuZXdNSU1FVHlwZSwgdWludDMyX3Qg
cGx1Z2luTG9hZFBvbGljeSwgU3RyaW5nIHVuYXZhaWxhYmlsaXR5RGVzY3JpcHRpb24pCiAjZW5k
aWYKIAotICAgIERpZFVwZGF0ZVZpZXdTdGF0ZSgpCisgICAgRGlkVXBkYXRlQWN0aXZpdHlTdGF0
ZSgpCiAKICAgICBEaWRTYXZlVG9QYWdlQ2FjaGUoKQogCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcAkocmV2aXNpb24gMjA4MTk3KQorKysgU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTcxNSw3ICs3MTUsNyBAQCB2b2lkIFdlYlByb2Nlc3NQcm94eTo6cmVsZWFzZVBhZ2VDYWNo
ZSgpCiB2b2lkIFdlYlByb2Nlc3NQcm94eTo6d2luZG93U2VydmVyQ29ubmVjdGlvblN0YXRlQ2hh
bmdlZCgpCiB7CiAgICAgZm9yIChjb25zdCBhdXRvJiBwYWdlIDogbV9wYWdlTWFwLnZhbHVlcygp
KQotICAgICAgICBwYWdlLT52aWV3U3RhdGVEaWRDaGFuZ2UoVmlld1N0YXRlOjpJc1Zpc3VhbGx5
SWRsZSk7CisgICAgICAgIHBhZ2UtPmFjdGl2aXR5U3RhdGVEaWRDaGFuZ2UoQWN0aXZpdHlTdGF0
ZTo6SXNWaXN1YWxseUlkbGUpOwogfQogCiB2b2lkIFdlYlByb2Nlc3NQcm94eTo6ZmV0Y2hXZWJz
aXRlRGF0YShTZXNzaW9uSUQgc2Vzc2lvbklELCBPcHRpb25TZXQ8V2Vic2l0ZURhdGFUeXBlPiBk
YXRhVHlwZXMsIEZ1bmN0aW9uPHZvaWQgKFdlYnNpdGVEYXRhKT4gY29tcGxldGlvbkhhbmRsZXIp
CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbQo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmll
dy5tbQkocmV2aXNpb24gMjA4MTk3KQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9D
b2NvYS9XS1dlYlZpZXcubW0JKHdvcmtpbmcgY29weSkKQEAgLTE3MzAsNyArMTczMCw3IEBAIC0g
KEJPT0wpX3pvb21Ub1JlY3Q6KFdlYkNvcmU6OkZsb2F0UmVjdCkKIAogLSAodm9pZClkaWRNb3Zl
VG9XaW5kb3cKIHsKLSAgICBfcGFnZS0+dmlld1N0YXRlRGlkQ2hhbmdlKFdlYkNvcmU6OlZpZXdT
dGF0ZTo6QWxsRmxhZ3MpOworICAgIF9wYWdlLT5hY3Rpdml0eVN0YXRlRGlkQ2hhbmdlKFdlYkNv
cmU6OkFjdGl2aXR5U3RhdGU6OkFsbEZsYWdzKTsKIH0KIAogLSAodm9pZClzZXRPcGFxdWU6KEJP
T0wpb3BhcXVlCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRX
ZWJWaWV3QmFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9ndGsvV2ViS2l0V2ViVmlld0Jhc2UuY3BwCShyZXZpc2lvbiAyMDgxOTcpCisrKyBTb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3QmFzZS5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTMxLDYgKzMxLDcgQEAKIAogI2luY2x1ZGUgIkFQSVBhZ2VDb25maWd1cmF0aW9u
LmgiCiAjaW5jbHVkZSAiQWNjZWxlcmF0ZWRCYWNraW5nU3RvcmUuaCIKKyNpbmNsdWRlICJBY3Rp
dml0eVN0YXRlLmgiCiAjaW5jbHVkZSAiRHJhd2luZ0FyZWFQcm94eUltcGwuaCIKICNpbmNsdWRl
ICJJbnB1dE1ldGhvZEZpbHRlci5oIgogI2luY2x1ZGUgIktleUJpbmRpbmdUcmFuc2xhdG9yLmgi
CkBAIC0zOCw3ICszOSw2IEBACiAjaW5jbHVkZSAiTmF0aXZlV2ViTW91c2VFdmVudC5oIgogI2lu
Y2x1ZGUgIk5hdGl2ZVdlYldoZWVsRXZlbnQuaCIKICNpbmNsdWRlICJQYWdlQ2xpZW50SW1wbC5o
IgotI2luY2x1ZGUgIlZpZXdTdGF0ZS5oIgogI2luY2x1ZGUgIldlYkV2ZW50RmFjdG9yeS5oIgog
I2luY2x1ZGUgIldlYkZ1bGxTY3JlZW5DbGllbnRHdGsuaCIKICNpbmNsdWRlICJXZWJJbnNwZWN0
b3JQcm94eS5oIgpAQCAtMTQ2LDE2ICsxNDYsMTYgQEAgdHlwZWRlZiBIYXNoTWFwPHVpbnQzMl90
LCBHVW5pcXVlUHRyPEdkawogCiBzdHJ1Y3QgX1dlYktpdFdlYlZpZXdCYXNlUHJpdmF0ZSB7CiAg
ICAgX1dlYktpdFdlYlZpZXdCYXNlUHJpdmF0ZSgpCi0gICAgICAgIDogdXBkYXRlVmlld1N0YXRl
VGltZXIoUnVuTG9vcDo6bWFpbigpLCB0aGlzLCAmX1dlYktpdFdlYlZpZXdCYXNlUHJpdmF0ZTo6
dXBkYXRlVmlld1N0YXRlVGltZXJGaXJlZCkKKyAgICAgICAgOiB1cGRhdGVBY3Rpdml0eVN0YXRl
VGltZXIoUnVuTG9vcDo6bWFpbigpLCB0aGlzLCAmX1dlYktpdFdlYlZpZXdCYXNlUHJpdmF0ZTo6
dXBkYXRlQWN0aXZpdHlTdGF0ZVRpbWVyRmlyZWQpCiAgICAgewogICAgIH0KIAotICAgIHZvaWQg
dXBkYXRlVmlld1N0YXRlVGltZXJGaXJlZCgpCisgICAgdm9pZCB1cGRhdGVBY3Rpdml0eVN0YXRl
VGltZXJGaXJlZCgpCiAgICAgewogICAgICAgICBpZiAoIXBhZ2VQcm94eSkKICAgICAgICAgICAg
IHJldHVybjsKLSAgICAgICAgcGFnZVByb3h5LT52aWV3U3RhdGVEaWRDaGFuZ2Uodmlld1N0YXRl
RmxhZ3NUb1VwZGF0ZSk7Ci0gICAgICAgIHZpZXdTdGF0ZUZsYWdzVG9VcGRhdGUgPSBWaWV3U3Rh
dGU6Ok5vRmxhZ3M7CisgICAgICAgIHBhZ2VQcm94eS0+YWN0aXZpdHlTdGF0ZURpZENoYW5nZShh
Y3Rpdml0eVN0YXRlRmxhZ3NUb1VwZGF0ZSk7CisgICAgICAgIGFjdGl2aXR5U3RhdGVGbGFnc1Rv
VXBkYXRlID0gQWN0aXZpdHlTdGF0ZTo6Tm9GbGFnczsKICAgICB9CiAKICAgICBXZWJLaXRXZWJW
aWV3Q2hpbGRyZW5NYXAgY2hpbGRyZW47CkBAIC0xODUsOSArMTg1LDkgQEAgc3RydWN0IF9XZWJL
aXRXZWJWaWV3QmFzZVByaXZhdGUgewogICAgIHVuc2lnbmVkIGxvbmcgdG9wbGV2ZWxXaW5kb3dS
ZWFsaXplZElEOwogCiAgICAgLy8gVmlldyBTdGF0ZS4KLSAgICBWaWV3U3RhdGU6OkZsYWdzIHZp
ZXdTdGF0ZTsKLSAgICBWaWV3U3RhdGU6OkZsYWdzIHZpZXdTdGF0ZUZsYWdzVG9VcGRhdGU7Ci0g
ICAgUnVuTG9vcDo6VGltZXI8V2ViS2l0V2ViVmlld0Jhc2VQcml2YXRlPiB1cGRhdGVWaWV3U3Rh
dGVUaW1lcjsKKyAgICBBY3Rpdml0eVN0YXRlOjpGbGFncyBhY3Rpdml0eVN0YXRlOworICAgIEFj
dGl2aXR5U3RhdGU6OkZsYWdzIGFjdGl2aXR5U3RhdGVGbGFnc1RvVXBkYXRlOworICAgIFJ1bkxv
b3A6OlRpbWVyPFdlYktpdFdlYlZpZXdCYXNlUHJpdmF0ZT4gdXBkYXRlQWN0aXZpdHlTdGF0ZVRp
bWVyOwogCiAgICAgV2ViS2l0V2ViVmlld0Jhc2VEb3dubG9hZFJlcXVlc3RIYW5kbGVyIGRvd25s
b2FkSGFuZGxlcjsKIApAQCAtMjEyLDE0ICsyMTIsMTQgQEAgc3RydWN0IF9XZWJLaXRXZWJWaWV3
QmFzZVByaXZhdGUgewogCiBXRUJLSVRfREVGSU5FX1RZUEUoV2ViS2l0V2ViVmlld0Jhc2UsIHdl
YmtpdF93ZWJfdmlld19iYXNlLCBHVEtfVFlQRV9DT05UQUlORVIpCiAKLXN0YXRpYyB2b2lkIHdl
YmtpdFdlYlZpZXdCYXNlU2NoZWR1bGVVcGRhdGVWaWV3U3RhdGUoV2ViS2l0V2ViVmlld0Jhc2Uq
IHdlYlZpZXdCYXNlLCBWaWV3U3RhdGU6OkZsYWdzIGZsYWdzVG9VcGRhdGUpCitzdGF0aWMgdm9p
ZCB3ZWJraXRXZWJWaWV3QmFzZVNjaGVkdWxlVXBkYXRlQWN0aXZpdHlTdGF0ZShXZWJLaXRXZWJW
aWV3QmFzZSogd2ViVmlld0Jhc2UsIEFjdGl2aXR5U3RhdGU6OkZsYWdzIGZsYWdzVG9VcGRhdGUp
CiB7CiAgICAgV2ViS2l0V2ViVmlld0Jhc2VQcml2YXRlKiBwcml2ID0gd2ViVmlld0Jhc2UtPnBy
aXY7Ci0gICAgcHJpdi0+dmlld1N0YXRlRmxhZ3NUb1VwZGF0ZSB8PSBmbGFnc1RvVXBkYXRlOwot
ICAgIGlmIChwcml2LT51cGRhdGVWaWV3U3RhdGVUaW1lci5pc0FjdGl2ZSgpKQorICAgIHByaXYt
PmFjdGl2aXR5U3RhdGVGbGFnc1RvVXBkYXRlIHw9IGZsYWdzVG9VcGRhdGU7CisgICAgaWYgKHBy
aXYtPnVwZGF0ZUFjdGl2aXR5U3RhdGVUaW1lci5pc0FjdGl2ZSgpKQogICAgICAgICByZXR1cm47
CiAKLSAgICBwcml2LT51cGRhdGVWaWV3U3RhdGVUaW1lci5zdGFydE9uZVNob3QoMCk7CisgICAg
cHJpdi0+dXBkYXRlQWN0aXZpdHlTdGF0ZVRpbWVyLnN0YXJ0T25lU2hvdCgwKTsKIH0KIAogc3Rh
dGljIGdib29sZWFuIHRvcGxldmVsV2luZG93Rm9jdXNJbkV2ZW50KEd0a1dpZGdldCogd2lkZ2V0
LCBHZGtFdmVudEZvY3VzKiwgV2ViS2l0V2ViVmlld0Jhc2UqIHdlYlZpZXdCYXNlKQpAQCAtMjI5
LDExICsyMjksMTEgQEAgc3RhdGljIGdib29sZWFuIHRvcGxldmVsV2luZG93Rm9jdXNJbkV2ZQog
ICAgICAgICByZXR1cm4gRkFMU0U7CiAKICAgICBXZWJLaXRXZWJWaWV3QmFzZVByaXZhdGUqIHBy
aXYgPSB3ZWJWaWV3QmFzZS0+cHJpdjsKLSAgICBpZiAocHJpdi0+dmlld1N0YXRlICYgVmlld1N0
YXRlOjpXaW5kb3dJc0FjdGl2ZSkKKyAgICBpZiAocHJpdi0+YWN0aXZpdHlTdGF0ZSAmIEFjdGl2
aXR5U3RhdGU6OldpbmRvd0lzQWN0aXZlKQogICAgICAgICByZXR1cm4gRkFMU0U7CiAKLSAgICBw
cml2LT52aWV3U3RhdGUgfD0gVmlld1N0YXRlOjpXaW5kb3dJc0FjdGl2ZTsKLSAgICB3ZWJraXRX
ZWJWaWV3QmFzZVNjaGVkdWxlVXBkYXRlVmlld1N0YXRlKHdlYlZpZXdCYXNlLCBWaWV3U3RhdGU6
OldpbmRvd0lzQWN0aXZlKTsKKyAgICBwcml2LT5hY3Rpdml0eVN0YXRlIHw9IEFjdGl2aXR5U3Rh
dGU6OldpbmRvd0lzQWN0aXZlOworICAgIHdlYmtpdFdlYlZpZXdCYXNlU2NoZWR1bGVVcGRhdGVB
Y3Rpdml0eVN0YXRlKHdlYlZpZXdCYXNlLCBBY3Rpdml0eVN0YXRlOjpXaW5kb3dJc0FjdGl2ZSk7
CiAKICAgICByZXR1cm4gRkFMU0U7CiB9CkBAIC0yNDEsMTEgKzI0MSwxMSBAQCBzdGF0aWMgZ2Jv
b2xlYW4gdG9wbGV2ZWxXaW5kb3dGb2N1c0luRXZlCiBzdGF0aWMgZ2Jvb2xlYW4gdG9wbGV2ZWxX
aW5kb3dGb2N1c091dEV2ZW50KEd0a1dpZGdldCosIEdka0V2ZW50Rm9jdXMqLCBXZWJLaXRXZWJW
aWV3QmFzZSogd2ViVmlld0Jhc2UpCiB7CiAgICAgV2ViS2l0V2ViVmlld0Jhc2VQcml2YXRlKiBw
cml2ID0gd2ViVmlld0Jhc2UtPnByaXY7Ci0gICAgaWYgKCEocHJpdi0+dmlld1N0YXRlICYgVmll
d1N0YXRlOjpXaW5kb3dJc0FjdGl2ZSkpCisgICAgaWYgKCEocHJpdi0+YWN0aXZpdHlTdGF0ZSAm
IEFjdGl2aXR5U3RhdGU6OldpbmRvd0lzQWN0aXZlKSkKICAgICAgICAgcmV0dXJuIEZBTFNFOwog
Ci0gICAgcHJpdi0+dmlld1N0YXRlICY9IH5WaWV3U3RhdGU6OldpbmRvd0lzQWN0aXZlOwotICAg
IHdlYmtpdFdlYlZpZXdCYXNlU2NoZWR1bGVVcGRhdGVWaWV3U3RhdGUod2ViVmlld0Jhc2UsIFZp
ZXdTdGF0ZTo6V2luZG93SXNBY3RpdmUpOworICAgIHByaXYtPmFjdGl2aXR5U3RhdGUgJj0gfkFj
dGl2aXR5U3RhdGU6OldpbmRvd0lzQWN0aXZlOworICAgIHdlYmtpdFdlYlZpZXdCYXNlU2NoZWR1
bGVVcGRhdGVBY3Rpdml0eVN0YXRlKHdlYlZpZXdCYXNlLCBBY3Rpdml0eVN0YXRlOjpXaW5kb3dJ
c0FjdGl2ZSk7CiAKICAgICByZXR1cm4gRkFMU0U7CiB9CkBAIC0yNTcsMTQgKzI1NywxNCBAQCBz
dGF0aWMgZ2Jvb2xlYW4gdG9wbGV2ZWxXaW5kb3dTdGF0ZUV2ZW50CiAgICAgICAgIHJldHVybiBG
QUxTRTsKIAogICAgIGJvb2wgdmlzaWJsZSA9ICEoZXZlbnQtPm5ld193aW5kb3dfc3RhdGUgJiBH
REtfV0lORE9XX1NUQVRFX0lDT05JRklFRCk7Ci0gICAgaWYgKCh2aXNpYmxlICYmIHByaXYtPnZp
ZXdTdGF0ZSAmIFZpZXdTdGF0ZTo6SXNWaXNpYmxlKSB8fCAoIXZpc2libGUgJiYgIShwcml2LT52
aWV3U3RhdGUgJiBWaWV3U3RhdGU6OklzVmlzaWJsZSkpKQorICAgIGlmICgodmlzaWJsZSAmJiBw
cml2LT5hY3Rpdml0eVN0YXRlICYgQWN0aXZpdHlTdGF0ZTo6SXNWaXNpYmxlKSB8fCAoIXZpc2li
bGUgJiYgIShwcml2LT5hY3Rpdml0eVN0YXRlICYgQWN0aXZpdHlTdGF0ZTo6SXNWaXNpYmxlKSkp
CiAgICAgICAgIHJldHVybiBGQUxTRTsKIAogICAgIGlmICh2aXNpYmxlKQotICAgICAgICBwcml2
LT52aWV3U3RhdGUgfD0gVmlld1N0YXRlOjpJc1Zpc2libGU7CisgICAgICAgIHByaXYtPmFjdGl2
aXR5U3RhdGUgfD0gQWN0aXZpdHlTdGF0ZTo6SXNWaXNpYmxlOwogICAgIGVsc2UKLSAgICAgICAg
cHJpdi0+dmlld1N0YXRlICY9IH5WaWV3U3RhdGU6OklzVmlzaWJsZTsKLSAgICB3ZWJraXRXZWJW
aWV3QmFzZVNjaGVkdWxlVXBkYXRlVmlld1N0YXRlKHdlYlZpZXdCYXNlLCBWaWV3U3RhdGU6Oklz
VmlzaWJsZSk7CisgICAgICAgIHByaXYtPmFjdGl2aXR5U3RhdGUgJj0gfkFjdGl2aXR5U3RhdGU6
OklzVmlzaWJsZTsKKyAgICB3ZWJraXRXZWJWaWV3QmFzZVNjaGVkdWxlVXBkYXRlQWN0aXZpdHlT
dGF0ZSh3ZWJWaWV3QmFzZSwgQWN0aXZpdHlTdGF0ZTo6SXNWaXNpYmxlKTsKIAogICAgIHJldHVy
biBGQUxTRTsKIH0KQEAgLTMwNiwxNyArMzA2LDE3IEBAIHN0YXRpYyB2b2lkIHdlYmtpdFdlYlZp
ZXdCYXNlU2V0VG9wbGV2ZWwKICAgICBwcml2LT50b3BsZXZlbE9uU2NyZWVuV2luZG93ID0gd2lu
ZG93OwogCiAgICAgaWYgKCFwcml2LT50b3BsZXZlbE9uU2NyZWVuV2luZG93KSB7Ci0gICAgICAg
IFZpZXdTdGF0ZTo6RmxhZ3MgZmxhZ3NUb1VwZGF0ZSA9IDA7Ci0gICAgICAgIGlmIChwcml2LT52
aWV3U3RhdGUgJiBWaWV3U3RhdGU6OklzSW5XaW5kb3cpIHsKLSAgICAgICAgICAgIHByaXYtPnZp
ZXdTdGF0ZSAmPSB+Vmlld1N0YXRlOjpJc0luV2luZG93OwotICAgICAgICAgICAgZmxhZ3NUb1Vw
ZGF0ZSB8PSBWaWV3U3RhdGU6OklzSW5XaW5kb3c7CisgICAgICAgIEFjdGl2aXR5U3RhdGU6OkZs
YWdzIGZsYWdzVG9VcGRhdGUgPSAwOworICAgICAgICBpZiAocHJpdi0+YWN0aXZpdHlTdGF0ZSAm
IEFjdGl2aXR5U3RhdGU6OklzSW5XaW5kb3cpIHsKKyAgICAgICAgICAgIHByaXYtPmFjdGl2aXR5
U3RhdGUgJj0gfkFjdGl2aXR5U3RhdGU6OklzSW5XaW5kb3c7CisgICAgICAgICAgICBmbGFnc1Rv
VXBkYXRlIHw9IEFjdGl2aXR5U3RhdGU6OklzSW5XaW5kb3c7CiAgICAgICAgIH0KLSAgICAgICAg
aWYgKHByaXYtPnZpZXdTdGF0ZSAmIFZpZXdTdGF0ZTo6V2luZG93SXNBY3RpdmUpIHsKLSAgICAg
ICAgICAgIHByaXYtPnZpZXdTdGF0ZSAmPSB+Vmlld1N0YXRlOjpXaW5kb3dJc0FjdGl2ZTsKLSAg
ICAgICAgICAgIGZsYWdzVG9VcGRhdGUgfD0gVmlld1N0YXRlOjpJc0luV2luZG93OworICAgICAg
ICBpZiAocHJpdi0+YWN0aXZpdHlTdGF0ZSAmIEFjdGl2aXR5U3RhdGU6OldpbmRvd0lzQWN0aXZl
KSB7CisgICAgICAgICAgICBwcml2LT5hY3Rpdml0eVN0YXRlICY9IH5BY3Rpdml0eVN0YXRlOjpX
aW5kb3dJc0FjdGl2ZTsKKyAgICAgICAgICAgIGZsYWdzVG9VcGRhdGUgfD0gQWN0aXZpdHlTdGF0
ZTo6SXNJbldpbmRvdzsKICAgICAgICAgfQogICAgICAgICBpZiAoZmxhZ3NUb1VwZGF0ZSkKLSAg
ICAgICAgICAgIHdlYmtpdFdlYlZpZXdCYXNlU2NoZWR1bGVVcGRhdGVWaWV3U3RhdGUod2ViVmll
d0Jhc2UsIGZsYWdzVG9VcGRhdGUpOworICAgICAgICAgICAgd2Via2l0V2ViVmlld0Jhc2VTY2hl
ZHVsZVVwZGF0ZUFjdGl2aXR5U3RhdGUod2ViVmlld0Jhc2UsIGZsYWdzVG9VcGRhdGUpOwogCiAg
ICAgICAgIHJldHVybjsKICAgICB9CkBAIC02MzEsMjAgKzYzMSwyMCBAQCBzdGF0aWMgdm9pZCB3
ZWJraXRXZWJWaWV3QmFzZU1hcChHdGtXaWRnCiAKICAgICBXZWJLaXRXZWJWaWV3QmFzZSogd2Vi
Vmlld0Jhc2UgPSBXRUJLSVRfV0VCX1ZJRVdfQkFTRSh3aWRnZXQpOwogICAgIFdlYktpdFdlYlZp
ZXdCYXNlUHJpdmF0ZSogcHJpdiA9IHdlYlZpZXdCYXNlLT5wcml2OwotICAgIFZpZXdTdGF0ZTo6
RmxhZ3MgZmxhZ3NUb1VwZGF0ZSA9IDA7Ci0gICAgaWYgKCEocHJpdi0+dmlld1N0YXRlICYgVmll
d1N0YXRlOjpJc1Zpc2libGUpKQotICAgICAgICBmbGFnc1RvVXBkYXRlIHw9IFZpZXdTdGF0ZTo6
SXNWaXNpYmxlOworICAgIEFjdGl2aXR5U3RhdGU6OkZsYWdzIGZsYWdzVG9VcGRhdGUgPSAwOwor
ICAgIGlmICghKHByaXYtPmFjdGl2aXR5U3RhdGUgJiBBY3Rpdml0eVN0YXRlOjpJc1Zpc2libGUp
KQorICAgICAgICBmbGFnc1RvVXBkYXRlIHw9IEFjdGl2aXR5U3RhdGU6OklzVmlzaWJsZTsKICAg
ICBpZiAocHJpdi0+dG9wbGV2ZWxPblNjcmVlbldpbmRvdykgewotICAgICAgICBpZiAoIShwcml2
LT52aWV3U3RhdGUgJiBWaWV3U3RhdGU6OklzSW5XaW5kb3cpKQotICAgICAgICAgICAgZmxhZ3NU
b1VwZGF0ZSB8PSBWaWV3U3RhdGU6OklzSW5XaW5kb3c7Ci0gICAgICAgIGlmIChndGtfd2luZG93
X2lzX2FjdGl2ZShHVEtfV0lORE9XKHByaXYtPnRvcGxldmVsT25TY3JlZW5XaW5kb3cpKSAmJiAh
KHByaXYtPnZpZXdTdGF0ZSAmIFZpZXdTdGF0ZTo6V2luZG93SXNBY3RpdmUpKQotICAgICAgICAg
ICAgZmxhZ3NUb1VwZGF0ZSB8PSBWaWV3U3RhdGU6OldpbmRvd0lzQWN0aXZlOworICAgICAgICBp
ZiAoIShwcml2LT5hY3Rpdml0eVN0YXRlICYgQWN0aXZpdHlTdGF0ZTo6SXNJbldpbmRvdykpCisg
ICAgICAgICAgICBmbGFnc1RvVXBkYXRlIHw9IEFjdGl2aXR5U3RhdGU6OklzSW5XaW5kb3c7Cisg
ICAgICAgIGlmIChndGtfd2luZG93X2lzX2FjdGl2ZShHVEtfV0lORE9XKHByaXYtPnRvcGxldmVs
T25TY3JlZW5XaW5kb3cpKSAmJiAhKHByaXYtPmFjdGl2aXR5U3RhdGUgJiBBY3Rpdml0eVN0YXRl
OjpXaW5kb3dJc0FjdGl2ZSkpCisgICAgICAgICAgICBmbGFnc1RvVXBkYXRlIHw9IEFjdGl2aXR5
U3RhdGU6OldpbmRvd0lzQWN0aXZlOwogICAgIH0KICAgICBpZiAoIWZsYWdzVG9VcGRhdGUpCiAg
ICAgICAgIHJldHVybjsKIAotICAgIHByaXYtPnZpZXdTdGF0ZSB8PSBmbGFnc1RvVXBkYXRlOwot
ICAgIHdlYmtpdFdlYlZpZXdCYXNlU2NoZWR1bGVVcGRhdGVWaWV3U3RhdGUod2ViVmlld0Jhc2Us
IGZsYWdzVG9VcGRhdGUpOworICAgIHByaXYtPmFjdGl2aXR5U3RhdGUgfD0gZmxhZ3NUb1VwZGF0
ZTsKKyAgICB3ZWJraXRXZWJWaWV3QmFzZVNjaGVkdWxlVXBkYXRlQWN0aXZpdHlTdGF0ZSh3ZWJW
aWV3QmFzZSwgZmxhZ3NUb1VwZGF0ZSk7CiB9CiAKIHN0YXRpYyB2b2lkIHdlYmtpdFdlYlZpZXdC
YXNlVW5tYXAoR3RrV2lkZ2V0KiB3aWRnZXQpCkBAIC02NTMsMTEgKzY1MywxMSBAQCBzdGF0aWMg
dm9pZCB3ZWJraXRXZWJWaWV3QmFzZVVubWFwKEd0a1dpCiAKICAgICBXZWJLaXRXZWJWaWV3QmFz
ZSogd2ViVmlld0Jhc2UgPSBXRUJLSVRfV0VCX1ZJRVdfQkFTRSh3aWRnZXQpOwogICAgIFdlYktp
dFdlYlZpZXdCYXNlUHJpdmF0ZSogcHJpdiA9IHdlYlZpZXdCYXNlLT5wcml2OwotICAgIGlmICgh
KHByaXYtPnZpZXdTdGF0ZSAmIFZpZXdTdGF0ZTo6SXNWaXNpYmxlKSkKKyAgICBpZiAoIShwcml2
LT5hY3Rpdml0eVN0YXRlICYgQWN0aXZpdHlTdGF0ZTo6SXNWaXNpYmxlKSkKICAgICAgICAgcmV0
dXJuOwogCi0gICAgcHJpdi0+dmlld1N0YXRlICY9IH5WaWV3U3RhdGU6OklzVmlzaWJsZTsKLSAg
ICB3ZWJraXRXZWJWaWV3QmFzZVNjaGVkdWxlVXBkYXRlVmlld1N0YXRlKHdlYlZpZXdCYXNlLCBW
aWV3U3RhdGU6OklzVmlzaWJsZSk7CisgICAgcHJpdi0+YWN0aXZpdHlTdGF0ZSAmPSB+QWN0aXZp
dHlTdGF0ZTo6SXNWaXNpYmxlOworICAgIHdlYmtpdFdlYlZpZXdCYXNlU2NoZWR1bGVVcGRhdGVB
Y3Rpdml0eVN0YXRlKHdlYlZpZXdCYXNlLCBBY3Rpdml0eVN0YXRlOjpJc1Zpc2libGUpOwogfQog
CiBzdGF0aWMgZ2Jvb2xlYW4gd2Via2l0V2ViVmlld0Jhc2VGb2N1c0luRXZlbnQoR3RrV2lkZ2V0
KiB3aWRnZXQsIEdka0V2ZW50Rm9jdXMqIGV2ZW50KQpAQCAtMTM3OSw0NiArMTM3OSw0NiBAQCBH
ZGtFdmVudCogd2Via2l0V2ViVmlld0Jhc2VUYWtlQ29udGV4dE1lCiB2b2lkIHdlYmtpdFdlYlZp
ZXdCYXNlU2V0Rm9jdXMoV2ViS2l0V2ViVmlld0Jhc2UqIHdlYlZpZXdCYXNlLCBib29sIGZvY3Vz
ZWQpCiB7CiAgICAgV2ViS2l0V2ViVmlld0Jhc2VQcml2YXRlKiBwcml2ID0gd2ViVmlld0Jhc2Ut
PnByaXY7Ci0gICAgaWYgKChmb2N1c2VkICYmIHByaXYtPnZpZXdTdGF0ZSAmIFZpZXdTdGF0ZTo6
SXNGb2N1c2VkKSB8fCAoIWZvY3VzZWQgJiYgIShwcml2LT52aWV3U3RhdGUgJiBWaWV3U3RhdGU6
OklzRm9jdXNlZCkpKQorICAgIGlmICgoZm9jdXNlZCAmJiBwcml2LT5hY3Rpdml0eVN0YXRlICYg
QWN0aXZpdHlTdGF0ZTo6SXNGb2N1c2VkKSB8fCAoIWZvY3VzZWQgJiYgIShwcml2LT5hY3Rpdml0
eVN0YXRlICYgQWN0aXZpdHlTdGF0ZTo6SXNGb2N1c2VkKSkpCiAgICAgICAgIHJldHVybjsKIAot
ICAgIFZpZXdTdGF0ZTo6RmxhZ3MgZmxhZ3NUb1VwZGF0ZSA9IFZpZXdTdGF0ZTo6SXNGb2N1c2Vk
OworICAgIEFjdGl2aXR5U3RhdGU6OkZsYWdzIGZsYWdzVG9VcGRhdGUgPSBBY3Rpdml0eVN0YXRl
OjpJc0ZvY3VzZWQ7CiAgICAgaWYgKGZvY3VzZWQpIHsKLSAgICAgICAgcHJpdi0+dmlld1N0YXRl
IHw9IFZpZXdTdGF0ZTo6SXNGb2N1c2VkOworICAgICAgICBwcml2LT5hY3Rpdml0eVN0YXRlIHw9
IEFjdGl2aXR5U3RhdGU6OklzRm9jdXNlZDsKIAogICAgICAgICAvLyBJZiB0aGUgdmlldyBoYXMg
cmVjZWl2ZWQgdGhlIGZvY3VzIGFuZCB0aGUgd2luZG93IGlzIG5vdCBhY3RpdmUKICAgICAgICAg
Ly8gbWFyayB0aGUgY3VycmVudCB3aW5kb3cgYXMgYWN0aXZlIG5vdy4gVGhpcyBjYW4gaGFwcGVu
IGlmIHRoZQogICAgICAgICAvLyB0b3BsZXZlbCB3aW5kb3cgaXMgYSBHVEtfV0lORE9XX1BPUFVQ
IGFuZCB0aGUgZm9jdXMgaGFzIGJlZW4KICAgICAgICAgLy8gc2V0IHByb2dyYW1hdGljYWxseSBs
aWtlIFdlYktpdFRlc3RSdW5uZXIgZG9lcywgYmVjYXVzZSBQT1BVUAogICAgICAgICAvLyBjYW4n
dCBiZSBmb2N1c2VkLgotICAgICAgICBpZiAoIShwcml2LT52aWV3U3RhdGUgJiBWaWV3U3RhdGU6
OldpbmRvd0lzQWN0aXZlKSkgewotICAgICAgICAgICAgcHJpdi0+dmlld1N0YXRlIHw9IFZpZXdT
dGF0ZTo6V2luZG93SXNBY3RpdmU7Ci0gICAgICAgICAgICBmbGFnc1RvVXBkYXRlIHw9IFZpZXdT
dGF0ZTo6V2luZG93SXNBY3RpdmU7CisgICAgICAgIGlmICghKHByaXYtPmFjdGl2aXR5U3RhdGUg
JiBBY3Rpdml0eVN0YXRlOjpXaW5kb3dJc0FjdGl2ZSkpIHsKKyAgICAgICAgICAgIHByaXYtPmFj
dGl2aXR5U3RhdGUgfD0gQWN0aXZpdHlTdGF0ZTo6V2luZG93SXNBY3RpdmU7CisgICAgICAgICAg
ICBmbGFnc1RvVXBkYXRlIHw9IEFjdGl2aXR5U3RhdGU6OldpbmRvd0lzQWN0aXZlOwogICAgICAg
ICB9CiAgICAgfSBlbHNlCi0gICAgICAgIHByaXYtPnZpZXdTdGF0ZSAmPSB+Vmlld1N0YXRlOjpJ
c0ZvY3VzZWQ7CisgICAgICAgIHByaXYtPmFjdGl2aXR5U3RhdGUgJj0gfkFjdGl2aXR5U3RhdGU6
OklzRm9jdXNlZDsKIAotICAgIHdlYmtpdFdlYlZpZXdCYXNlU2NoZWR1bGVVcGRhdGVWaWV3U3Rh
dGUod2ViVmlld0Jhc2UsIGZsYWdzVG9VcGRhdGUpOworICAgIHdlYmtpdFdlYlZpZXdCYXNlU2No
ZWR1bGVVcGRhdGVBY3Rpdml0eVN0YXRlKHdlYlZpZXdCYXNlLCBmbGFnc1RvVXBkYXRlKTsKIH0K
IAogYm9vbCB3ZWJraXRXZWJWaWV3QmFzZUlzSW5XaW5kb3dBY3RpdmUoV2ViS2l0V2ViVmlld0Jh
c2UqIHdlYlZpZXdCYXNlKQogewotICAgIHJldHVybiB3ZWJWaWV3QmFzZS0+cHJpdi0+dmlld1N0
YXRlICYgVmlld1N0YXRlOjpXaW5kb3dJc0FjdGl2ZTsKKyAgICByZXR1cm4gd2ViVmlld0Jhc2Ut
PnByaXYtPmFjdGl2aXR5U3RhdGUgJiBBY3Rpdml0eVN0YXRlOjpXaW5kb3dJc0FjdGl2ZTsKIH0K
IAogYm9vbCB3ZWJraXRXZWJWaWV3QmFzZUlzRm9jdXNlZChXZWJLaXRXZWJWaWV3QmFzZSogd2Vi
Vmlld0Jhc2UpCiB7Ci0gICAgcmV0dXJuIHdlYlZpZXdCYXNlLT5wcml2LT52aWV3U3RhdGUgJiBW
aWV3U3RhdGU6OklzRm9jdXNlZDsKKyAgICByZXR1cm4gd2ViVmlld0Jhc2UtPnByaXYtPmFjdGl2
aXR5U3RhdGUgJiBBY3Rpdml0eVN0YXRlOjpJc0ZvY3VzZWQ7CiB9CiAKIGJvb2wgd2Via2l0V2Vi
Vmlld0Jhc2VJc1Zpc2libGUoV2ViS2l0V2ViVmlld0Jhc2UqIHdlYlZpZXdCYXNlKQogewotICAg
IHJldHVybiB3ZWJWaWV3QmFzZS0+cHJpdi0+dmlld1N0YXRlICYgVmlld1N0YXRlOjpJc1Zpc2li
bGU7CisgICAgcmV0dXJuIHdlYlZpZXdCYXNlLT5wcml2LT5hY3Rpdml0eVN0YXRlICYgQWN0aXZp
dHlTdGF0ZTo6SXNWaXNpYmxlOwogfQogCiBib29sIHdlYmtpdFdlYlZpZXdCYXNlSXNJbldpbmRv
dyhXZWJLaXRXZWJWaWV3QmFzZSogd2ViVmlld0Jhc2UpCiB7Ci0gICAgcmV0dXJuIHdlYlZpZXdC
YXNlLT5wcml2LT52aWV3U3RhdGUgJiBWaWV3U3RhdGU6OklzSW5XaW5kb3c7CisgICAgcmV0dXJu
IHdlYlZpZXdCYXNlLT5wcml2LT5hY3Rpdml0eVN0YXRlICYgQWN0aXZpdHlTdGF0ZTo6SXNJbldp
bmRvdzsKIH0KIAogdm9pZCB3ZWJraXRXZWJWaWV3QmFzZVNldERvd25sb2FkUmVxdWVzdEhhbmRs
ZXIoV2ViS2l0V2ViVmlld0Jhc2UqIHdlYlZpZXdCYXNlLCBXZWJLaXRXZWJWaWV3QmFzZURvd25s
b2FkUmVxdWVzdEhhbmRsZXIgZG93bmxvYWRIYW5kbGVyKQpJbmRleDogU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJbXBsLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9Db2NvYS9XZWJWaWV3SW1wbC5tbQkocmV2aXNpb24gMjA4MTk3KQorKysg
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJbXBsLm1tCSh3b3JraW5nIGNv
cHkpCkBAIC02Niw2ICs2Niw3IEBACiAjaW1wb3J0ICJfV0tUaHVtYm5haWxWaWV3SW50ZXJuYWwu
aCIKICNpbXBvcnQgPEhJVG9vbGJveC9DYXJib25FdmVudHNDb3JlLmg+CiAjaW1wb3J0IDxXZWJD
b3JlL0FYT2JqZWN0Q2FjaGUuaD4KKyNpbXBvcnQgPFdlYkNvcmUvQWN0aXZpdHlTdGF0ZS5oPgog
I2ltcG9ydCA8V2ViQ29yZS9Db2xvck1hYy5oPgogI2ltcG9ydCA8V2ViQ29yZS9Db3JlR3JhcGhp
Y3NTUEkuaD4KICNpbXBvcnQgPFdlYkNvcmUvRGF0YURldGVjdG9yc1NQSS5oPgpAQCAtODQsNyAr
ODUsNiBAQAogI2ltcG9ydCA8V2ViQ29yZS9Tb2Z0TGlua2luZy5oPgogI2ltcG9ydCA8V2ViQ29y
ZS9UZXh0QWx0ZXJuYXRpdmVXaXRoUmFuZ2UuaD4KICNpbXBvcnQgPFdlYkNvcmUvVGV4dFVuZG9J
bnNlcnRpb25NYXJrdXBNYWMuaD4KLSNpbXBvcnQgPFdlYkNvcmUvVmlld1N0YXRlLmg+CiAjaW1w
b3J0IDxXZWJDb3JlL1dlYkFjdGlvbkRpc2FibGluZ0NBTGF5ZXJEZWxlZ2F0ZS5oPgogI2ltcG9y
dCA8V2ViQ29yZS9XZWJDb3JlQ0FMYXllckV4dHJhcy5oPgogI2ltcG9ydCA8V2ViQ29yZS9XZWJD
b3JlRnVsbFNjcmVlblBsYWNlaG9sZGVyVmlldy5oPgpAQCAtNjA5LDcgKzYwOSw3IEBAIGJvb2wg
V2ViVmlld0ltcGw6OmJlY29tZUZpcnN0UmVzcG9uZGVyKCkKICAgICBtX2luQmVjb21lRmlyc3RS
ZXNwb25kZXIgPSB0cnVlOwogCiAgICAgdXBkYXRlU2VjdXJlSW5wdXRTdGF0ZSgpOwotICAgIG1f
cGFnZS0+dmlld1N0YXRlRGlkQ2hhbmdlKFdlYkNvcmU6OlZpZXdTdGF0ZTo6SXNGb2N1c2VkKTsK
KyAgICBtX3BhZ2UtPmFjdGl2aXR5U3RhdGVEaWRDaGFuZ2UoV2ViQ29yZTo6QWN0aXZpdHlTdGF0
ZTo6SXNGb2N1c2VkKTsKICAgICAvLyBSZXN0b3JlIHRoZSBzZWxlY3Rpb24gaW4gdGhlIGVkaXRh
YmxlIHJlZ2lvbiBpZiByZXNpZ25pbmcgZmlyc3QgcmVzcG9uZGVyIGNsZWFyZWQgc2VsZWN0aW9u
LgogICAgIG1fcGFnZS0+cmVzdG9yZVNlbGVjdGlvbkluRm9jdXNlZEVkaXRhYmxlRWxlbWVudCgp
OwogCkBAIC02NTYsNyArNjU2LDcgQEAgYm9vbCBXZWJWaWV3SW1wbDo6cmVzaWduRmlyc3RSZXNw
b25kZXIoKQogICAgIGlmICghbV9wYWdlLT5tYWludGFpbnNJbmFjdGl2ZVNlbGVjdGlvbigpKQog
ICAgICAgICBtX3BhZ2UtPmNsZWFyU2VsZWN0aW9uKCk7CiAKLSAgICBtX3BhZ2UtPnZpZXdTdGF0
ZURpZENoYW5nZShXZWJDb3JlOjpWaWV3U3RhdGU6OklzRm9jdXNlZCk7CisgICAgbV9wYWdlLT5h
Y3Rpdml0eVN0YXRlRGlkQ2hhbmdlKFdlYkNvcmU6OkFjdGl2aXR5U3RhdGU6OklzRm9jdXNlZCk7
CiAgICAgCiAgICAgbV9pblJlc2lnbkZpcnN0UmVzcG9uZGVyID0gZmFsc2U7CiAgICAgCkBAIC0x
MDUxLDEyICsxMDUxLDEyIEBAIGZsb2F0IFdlYlZpZXdJbXBsOjppbnRyaW5zaWNEZXZpY2VTY2Fs
ZUYKIAogdm9pZCBXZWJWaWV3SW1wbDo6d2luZG93RGlkT3JkZXJPZmZTY3JlZW4oKQogewotICAg
IG1fcGFnZS0+dmlld1N0YXRlRGlkQ2hhbmdlKFdlYkNvcmU6OlZpZXdTdGF0ZTo6SXNWaXNpYmxl
IHwgV2ViQ29yZTo6Vmlld1N0YXRlOjpXaW5kb3dJc0FjdGl2ZSk7CisgICAgbV9wYWdlLT5hY3Rp
dml0eVN0YXRlRGlkQ2hhbmdlKFdlYkNvcmU6OkFjdGl2aXR5U3RhdGU6OklzVmlzaWJsZSB8IFdl
YkNvcmU6OkFjdGl2aXR5U3RhdGU6OldpbmRvd0lzQWN0aXZlKTsKIH0KIAogdm9pZCBXZWJWaWV3
SW1wbDo6d2luZG93RGlkT3JkZXJPblNjcmVlbigpCiB7Ci0gICAgbV9wYWdlLT52aWV3U3RhdGVE
aWRDaGFuZ2UoV2ViQ29yZTo6Vmlld1N0YXRlOjpJc1Zpc2libGUgfCBXZWJDb3JlOjpWaWV3U3Rh
dGU6OldpbmRvd0lzQWN0aXZlKTsKKyAgICBtX3BhZ2UtPmFjdGl2aXR5U3RhdGVEaWRDaGFuZ2Uo
V2ViQ29yZTo6QWN0aXZpdHlTdGF0ZTo6SXNWaXNpYmxlIHwgV2ViQ29yZTo6QWN0aXZpdHlTdGF0
ZTo6V2luZG93SXNBY3RpdmUpOwogfQogCiB2b2lkIFdlYlZpZXdJbXBsOjp3aW5kb3dEaWRCZWNv
bWVLZXkoTlNXaW5kb3cgKmtleVdpbmRvdykKQEAgLTEwNjYsNyArMTA2Niw3IEBAIHZvaWQgV2Vi
Vmlld0ltcGw6OndpbmRvd0RpZEJlY29tZUtleShOU1cKICAgICAgICAgVUlHYW1lcGFkUHJvdmlk
ZXI6OnNpbmdsZXRvbigpLnZpZXdCZWNhbWVBY3RpdmUobV9wYWdlLmdldCgpKTsKICNlbmRpZgog
ICAgICAgICB1cGRhdGVTZWN1cmVJbnB1dFN0YXRlKCk7Ci0gICAgICAgIG1fcGFnZS0+dmlld1N0
YXRlRGlkQ2hhbmdlKFdlYkNvcmU6OlZpZXdTdGF0ZTo6V2luZG93SXNBY3RpdmUpOworICAgICAg
ICBtX3BhZ2UtPmFjdGl2aXR5U3RhdGVEaWRDaGFuZ2UoV2ViQ29yZTo6QWN0aXZpdHlTdGF0ZTo6
V2luZG93SXNBY3RpdmUpOwogICAgIH0KIH0KIApAQCAtMTA3NywxOCArMTA3NywxOCBAQCB2b2lk
IFdlYlZpZXdJbXBsOjp3aW5kb3dEaWRSZXNpZ25LZXkoTlNXCiAgICAgICAgIFVJR2FtZXBhZFBy
b3ZpZGVyOjpzaW5nbGV0b24oKS52aWV3QmVjYW1lSW5hY3RpdmUobV9wYWdlLmdldCgpKTsKICNl
bmRpZgogICAgICAgICB1cGRhdGVTZWN1cmVJbnB1dFN0YXRlKCk7Ci0gICAgICAgIG1fcGFnZS0+
dmlld1N0YXRlRGlkQ2hhbmdlKFdlYkNvcmU6OlZpZXdTdGF0ZTo6V2luZG93SXNBY3RpdmUpOwor
ICAgICAgICBtX3BhZ2UtPmFjdGl2aXR5U3RhdGVEaWRDaGFuZ2UoV2ViQ29yZTo6QWN0aXZpdHlT
dGF0ZTo6V2luZG93SXNBY3RpdmUpOwogICAgIH0KIH0KIAogdm9pZCBXZWJWaWV3SW1wbDo6d2lu
ZG93RGlkTWluaWF0dXJpemUoKQogewotICAgIG1fcGFnZS0+dmlld1N0YXRlRGlkQ2hhbmdlKFdl
YkNvcmU6OlZpZXdTdGF0ZTo6SXNWaXNpYmxlKTsKKyAgICBtX3BhZ2UtPmFjdGl2aXR5U3RhdGVE
aWRDaGFuZ2UoV2ViQ29yZTo6QWN0aXZpdHlTdGF0ZTo6SXNWaXNpYmxlKTsKIH0KIAogdm9pZCBX
ZWJWaWV3SW1wbDo6d2luZG93RGlkRGVtaW5pYXR1cml6ZSgpCiB7Ci0gICAgbV9wYWdlLT52aWV3
U3RhdGVEaWRDaGFuZ2UoV2ViQ29yZTo6Vmlld1N0YXRlOjpJc1Zpc2libGUpOworICAgIG1fcGFn
ZS0+YWN0aXZpdHlTdGF0ZURpZENoYW5nZShXZWJDb3JlOjpBY3Rpdml0eVN0YXRlOjpJc1Zpc2li
bGUpOwogfQogCiB2b2lkIFdlYlZpZXdJbXBsOjp3aW5kb3dEaWRNb3ZlKCkKQEAgLTExMjMsNyAr
MTEyMyw3IEBAIHZvaWQgV2ViVmlld0ltcGw6OndpbmRvd0RpZENoYW5nZUxheWVySG8KIAogdm9p
ZCBXZWJWaWV3SW1wbDo6d2luZG93RGlkQ2hhbmdlT2NjbHVzaW9uU3RhdGUoKQogewotICAgIG1f
cGFnZS0+dmlld1N0YXRlRGlkQ2hhbmdlKFdlYkNvcmU6OlZpZXdTdGF0ZTo6SXNWaXNpYmxlKTsK
KyAgICBtX3BhZ2UtPmFjdGl2aXR5U3RhdGVEaWRDaGFuZ2UoV2ViQ29yZTo6QWN0aXZpdHlTdGF0
ZTo6SXNWaXNpYmxlKTsKIH0KIAogYm9vbCBXZWJWaWV3SW1wbDo6bWlnaHRCZWdpbkRyYWdXaGls
ZUluYWN0aXZlKCkKQEAgLTEyMTQsMTIgKzEyMTQsMTIgQEAgdm9pZCBXZWJWaWV3SW1wbDo6dmll
d0RpZE1vdmVUb1dpbmRvdygpCiAgICAgaWYgKHdpbmRvdykgewogICAgICAgICB3aW5kb3dEaWRD
aGFuZ2VTY3JlZW4oKTsKIAotICAgICAgICBXZWJDb3JlOjpWaWV3U3RhdGU6OkZsYWdzIHZpZXdT
dGF0ZUNoYW5nZXMgPSBXZWJDb3JlOjpWaWV3U3RhdGU6OldpbmRvd0lzQWN0aXZlIHwgV2ViQ29y
ZTo6Vmlld1N0YXRlOjpJc1Zpc2libGU7CisgICAgICAgIFdlYkNvcmU6OkFjdGl2aXR5U3RhdGU6
OkZsYWdzIGFjdGl2aXR5U3RhdGVDaGFuZ2VzID0gV2ViQ29yZTo6QWN0aXZpdHlTdGF0ZTo6V2lu
ZG93SXNBY3RpdmUgfCBXZWJDb3JlOjpBY3Rpdml0eVN0YXRlOjpJc1Zpc2libGU7CiAgICAgICAg
IGlmIChtX3Nob3VsZERlZmVyVmlld0luV2luZG93Q2hhbmdlcykKICAgICAgICAgICAgIG1fdmll
d0luV2luZG93Q2hhbmdlV2FzRGVmZXJyZWQgPSB0cnVlOwogICAgICAgICBlbHNlCi0gICAgICAg
ICAgICB2aWV3U3RhdGVDaGFuZ2VzIHw9IFdlYkNvcmU6OlZpZXdTdGF0ZTo6SXNJbldpbmRvdzsK
LSAgICAgICAgbV9wYWdlLT52aWV3U3RhdGVEaWRDaGFuZ2Uodmlld1N0YXRlQ2hhbmdlcyk7Cisg
ICAgICAgICAgICBhY3Rpdml0eVN0YXRlQ2hhbmdlcyB8PSBXZWJDb3JlOjpBY3Rpdml0eVN0YXRl
OjpJc0luV2luZG93OworICAgICAgICBtX3BhZ2UtPmFjdGl2aXR5U3RhdGVEaWRDaGFuZ2UoYWN0
aXZpdHlTdGF0ZUNoYW5nZXMpOwogCiAgICAgICAgIHVwZGF0ZVdpbmRvd0FuZFZpZXdGcmFtZXMo
KTsKIApAQCAtMTI0MywxMiArMTI0MywxMiBAQCB2b2lkIFdlYlZpZXdJbXBsOjp2aWV3RGlkTW92
ZVRvV2luZG93KCkKICAgICAgICAgaWYgKG1faW1tZWRpYXRlQWN0aW9uR2VzdHVyZVJlY29nbml6
ZXIgJiYgIVtbbV92aWV3IGdlc3R1cmVSZWNvZ25pemVyc10gY29udGFpbnNPYmplY3Q6bV9pbW1l
ZGlhdGVBY3Rpb25HZXN0dXJlUmVjb2duaXplci5nZXQoKV0gJiYgIW1faWdub3Jlc05vbldoZWVs
RXZlbnRzICYmIG1fYWxsb3dzTGlua1ByZXZpZXcpCiAgICAgICAgICAgICBbbV92aWV3IGFkZEdl
c3R1cmVSZWNvZ25pemVyOm1faW1tZWRpYXRlQWN0aW9uR2VzdHVyZVJlY29nbml6ZXIuZ2V0KCld
OwogICAgIH0gZWxzZSB7Ci0gICAgICAgIFdlYkNvcmU6OlZpZXdTdGF0ZTo6RmxhZ3Mgdmlld1N0
YXRlQ2hhbmdlcyA9IFdlYkNvcmU6OlZpZXdTdGF0ZTo6V2luZG93SXNBY3RpdmUgfCBXZWJDb3Jl
OjpWaWV3U3RhdGU6OklzVmlzaWJsZTsKKyAgICAgICAgV2ViQ29yZTo6QWN0aXZpdHlTdGF0ZTo6
RmxhZ3MgYWN0aXZpdHlTdGF0ZUNoYW5nZXMgPSBXZWJDb3JlOjpBY3Rpdml0eVN0YXRlOjpXaW5k
b3dJc0FjdGl2ZSB8IFdlYkNvcmU6OkFjdGl2aXR5U3RhdGU6OklzVmlzaWJsZTsKICAgICAgICAg
aWYgKG1fc2hvdWxkRGVmZXJWaWV3SW5XaW5kb3dDaGFuZ2VzKQogICAgICAgICAgICAgbV92aWV3
SW5XaW5kb3dDaGFuZ2VXYXNEZWZlcnJlZCA9IHRydWU7CiAgICAgICAgIGVsc2UKLSAgICAgICAg
ICAgIHZpZXdTdGF0ZUNoYW5nZXMgfD0gV2ViQ29yZTo6Vmlld1N0YXRlOjpJc0luV2luZG93Owot
ICAgICAgICBtX3BhZ2UtPnZpZXdTdGF0ZURpZENoYW5nZSh2aWV3U3RhdGVDaGFuZ2VzKTsKKyAg
ICAgICAgICAgIGFjdGl2aXR5U3RhdGVDaGFuZ2VzIHw9IFdlYkNvcmU6OkFjdGl2aXR5U3RhdGU6
OklzSW5XaW5kb3c7CisgICAgICAgIG1fcGFnZS0+YWN0aXZpdHlTdGF0ZURpZENoYW5nZShhY3Rp
dml0eVN0YXRlQ2hhbmdlcyk7CiAKICAgICAgICAgW05TRXZlbnQgcmVtb3ZlTW9uaXRvcjptX2Zs
YWdzQ2hhbmdlZEV2ZW50TW9uaXRvcl07CiAgICAgICAgIG1fZmxhZ3NDaGFuZ2VkRXZlbnRNb25p
dG9yID0gbmlsOwpAQCAtMTI3OCwxNyArMTI3OCwxNyBAQCB2b2lkIFdlYlZpZXdJbXBsOjp2aWV3
RGlkQ2hhbmdlQmFja2luZ1ByCiAKIHZvaWQgV2ViVmlld0ltcGw6OnZpZXdEaWRIaWRlKCkKIHsK
LSAgICBtX3BhZ2UtPnZpZXdTdGF0ZURpZENoYW5nZShXZWJDb3JlOjpWaWV3U3RhdGU6OklzVmlz
aWJsZSk7CisgICAgbV9wYWdlLT5hY3Rpdml0eVN0YXRlRGlkQ2hhbmdlKFdlYkNvcmU6OkFjdGl2
aXR5U3RhdGU6OklzVmlzaWJsZSk7CiB9CiAKIHZvaWQgV2ViVmlld0ltcGw6OnZpZXdEaWRVbmhp
ZGUoKQogewotICAgIG1fcGFnZS0+dmlld1N0YXRlRGlkQ2hhbmdlKFdlYkNvcmU6OlZpZXdTdGF0
ZTo6SXNWaXNpYmxlKTsKKyAgICBtX3BhZ2UtPmFjdGl2aXR5U3RhdGVEaWRDaGFuZ2UoV2ViQ29y
ZTo6QWN0aXZpdHlTdGF0ZTo6SXNWaXNpYmxlKTsKIH0KIAogdm9pZCBXZWJWaWV3SW1wbDo6YWN0
aXZlU3BhY2VEaWRDaGFuZ2UoKQogewotICAgIG1fcGFnZS0+dmlld1N0YXRlRGlkQ2hhbmdlKFdl
YkNvcmU6OlZpZXdTdGF0ZTo6SXNWaXNpYmxlKTsKKyAgICBtX3BhZ2UtPmFjdGl2aXR5U3RhdGVE
aWRDaGFuZ2UoV2ViQ29yZTo6QWN0aXZpdHlTdGF0ZTo6SXNWaXNpYmxlKTsKIH0KIAogTlNWaWV3
ICpXZWJWaWV3SW1wbDo6aGl0VGVzdChDR1BvaW50IHBvaW50KQpAQCAtMTM4Myw3ICsxMzgzLDcg
QEAgdm9pZCBXZWJWaWV3SW1wbDo6ZW5kRGVmZXJyaW5nVmlld0luV2luZAogCiAgICAgaWYgKG1f
dmlld0luV2luZG93Q2hhbmdlV2FzRGVmZXJyZWQpIHsKICAgICAgICAgZGlzcGF0Y2hTZXRUb3BD
b250ZW50SW5zZXQoKTsKLSAgICAgICAgbV9wYWdlLT52aWV3U3RhdGVEaWRDaGFuZ2UoV2ViQ29y
ZTo6Vmlld1N0YXRlOjpJc0luV2luZG93KTsKKyAgICAgICAgbV9wYWdlLT5hY3Rpdml0eVN0YXRl
RGlkQ2hhbmdlKFdlYkNvcmU6OkFjdGl2aXR5U3RhdGU6OklzSW5XaW5kb3cpOwogICAgICAgICBt
X3ZpZXdJbldpbmRvd0NoYW5nZVdhc0RlZmVycmVkID0gZmFsc2U7CiAgICAgfQogfQpAQCAtMTM5
OSw3ICsxMzk5LDcgQEAgdm9pZCBXZWJWaWV3SW1wbDo6ZW5kRGVmZXJyaW5nVmlld0luV2luZAog
CiAgICAgaWYgKG1fdmlld0luV2luZG93Q2hhbmdlV2FzRGVmZXJyZWQpIHsKICAgICAgICAgZGlz
cGF0Y2hTZXRUb3BDb250ZW50SW5zZXQoKTsKLSAgICAgICAgbV9wYWdlLT52aWV3U3RhdGVEaWRD
aGFuZ2UoV2ViQ29yZTo6Vmlld1N0YXRlOjpJc0luV2luZG93KTsKKyAgICAgICAgbV9wYWdlLT5h
Y3Rpdml0eVN0YXRlRGlkQ2hhbmdlKFdlYkNvcmU6OkFjdGl2aXR5U3RhdGU6OklzSW5XaW5kb3cp
OwogICAgICAgICBtX3ZpZXdJbldpbmRvd0NoYW5nZVdhc0RlZmVycmVkID0gZmFsc2U7CiAgICAg
fQogfQpAQCAtMTQxNCw3ICsxNDE0LDcgQEAgdm9pZCBXZWJWaWV3SW1wbDo6cHJlcGFyZUZvck1v
dmVUb1dpbmRvdwogICAgIG1fc2hvdWxkRGVmZXJWaWV3SW5XaW5kb3dDaGFuZ2VzID0gZmFsc2U7
CiAKICAgICBhdXRvIHdlYWtUaGlzID0gY3JlYXRlV2Vha1B0cigpOwotICAgIG1fcGFnZS0+aW5z
dGFsbFZpZXdTdGF0ZUNoYW5nZUNvbXBsZXRpb25IYW5kbGVyKFt3ZWFrVGhpcywgY29tcGxldGlv
bkhhbmRsZXJdKCkgeworICAgIG1fcGFnZS0+aW5zdGFsbEFjdGl2aXR5U3RhdGVDaGFuZ2VDb21w
bGV0aW9uSGFuZGxlcihbd2Vha1RoaXMsIGNvbXBsZXRpb25IYW5kbGVyXSgpIHsKICAgICAgICAg
Y29tcGxldGlvbkhhbmRsZXIoKTsKIAogICAgICAgICBpZiAoIXdlYWtUaGlzKQpAQCAtMTQyNSw3
ICsxNDI1LDcgQEAgdm9pZCBXZWJWaWV3SW1wbDo6cHJlcGFyZUZvck1vdmVUb1dpbmRvdwogICAg
IH0pOwogCiAgICAgZGlzcGF0Y2hTZXRUb3BDb250ZW50SW5zZXQoKTsKLSAgICBtX3BhZ2UtPnZp
ZXdTdGF0ZURpZENoYW5nZShXZWJDb3JlOjpWaWV3U3RhdGU6OklzSW5XaW5kb3csIGZhbHNlLCBX
ZWJQYWdlUHJveHk6OlZpZXdTdGF0ZUNoYW5nZURpc3BhdGNoTW9kZTo6SW1tZWRpYXRlKTsKKyAg
ICBtX3BhZ2UtPmFjdGl2aXR5U3RhdGVEaWRDaGFuZ2UoV2ViQ29yZTo6QWN0aXZpdHlTdGF0ZTo6
SXNJbldpbmRvdywgZmFsc2UsIFdlYlBhZ2VQcm94eTo6QWN0aXZpdHlTdGF0ZUNoYW5nZURpc3Bh
dGNoTW9kZTo6SW1tZWRpYXRlKTsKICAgICBtX3ZpZXdJbldpbmRvd0NoYW5nZVdhc0RlZmVycmVk
ID0gZmFsc2U7CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvV2ViVmll
dy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9XZWJWaWV3
LmNwcAkocmV2aXNpb24gMjA4MTk3KQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9X
ZWJWaWV3LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzAsNiArMzAsNyBAQAogI2lmIFVTRShDT09S
RElOQVRFRF9HUkFQSElDUykKICNpbmNsdWRlICJBUElQYWdlQ29uZmlndXJhdGlvbi5oIgogI2lu
Y2x1ZGUgIkFjY2VsZXJhdGVkRHJhd2luZ0FyZWFQcm94eS5oIgorI2luY2x1ZGUgIkFjdGl2aXR5
U3RhdGUuaCIKICNpbmNsdWRlICJDb29yZGluYXRlZEdyYXBoaWNzU2NlbmUuaCIKICNpbmNsdWRl
ICJDb29yZGluYXRlZExheWVyVHJlZUhvc3RQcm94eS5oIgogI2luY2x1ZGUgIkRvd25sb2FkTWFu
YWdlckVmbC5oIgpAQCAtMzgsNyArMzksNiBAQAogI2luY2x1ZGUgIklucHV0TWV0aG9kQ29udGV4
dEVmbC5oIgogI2luY2x1ZGUgIk5hdGl2ZVdlYk1vdXNlRXZlbnQuaCIKICNpbmNsdWRlICJOb3RJ
bXBsZW1lbnRlZC5oIgotI2luY2x1ZGUgIlZpZXdTdGF0ZS5oIgogI2luY2x1ZGUgIldlYkJhY2tG
b3J3YXJkTGlzdC5oIgogI2luY2x1ZGUgIldlYkJhY2tGb3J3YXJkTGlzdEl0ZW0uaCIKICNpbmNs
dWRlICJXZWJDb250ZXh0TWVudVByb3h5RWZsLmgiCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvaW9zL1dLQ29udGVudFZpZXcubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3Lm1tCShyZXZpc2lvbiAyMDgxOTcpCisrKyBTb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXcubW0JKHdvcmtpbmcgY29weSkK
QEAgLTYwMiw3ICs2MDIsNyBAQCAtICh2b2lkKV9hcHBsaWNhdGlvbldpbGxSZXNpZ25BY3RpdmU6
KE5TCiAtICh2b2lkKV9hcHBsaWNhdGlvbkRpZEVudGVyQmFja2dyb3VuZAogewogICAgIF9wYWdl
LT5hcHBsaWNhdGlvbkRpZEVudGVyQmFja2dyb3VuZCgpOwotICAgIF9wYWdlLT52aWV3U3RhdGVE
aWRDaGFuZ2UoVmlld1N0YXRlOjpBbGxGbGFncyAmIH5WaWV3U3RhdGU6OklzSW5XaW5kb3cpOwor
ICAgIF9wYWdlLT5hY3Rpdml0eVN0YXRlRGlkQ2hhbmdlKEFjdGl2aXR5U3RhdGU6OkFsbEZsYWdz
ICYgfkFjdGl2aXR5U3RhdGU6OklzSW5XaW5kb3cpOwogfQogCiAtICh2b2lkKV9hcHBsaWNhdGlv
bkRpZENyZWF0ZVdpbmRvd0NvbnRleHQKQEAgLTYxOSw3ICs2MTksNyBAQCAtICh2b2lkKV9hcHBs
aWNhdGlvbkRpZEZpbmlzaFNuYXBzaG90dGluCiAtICh2b2lkKV9hcHBsaWNhdGlvbldpbGxFbnRl
ckZvcmVncm91bmQKIHsKICAgICBfcGFnZS0+YXBwbGljYXRpb25XaWxsRW50ZXJGb3JlZ3JvdW5k
KCk7Ci0gICAgX3BhZ2UtPnZpZXdTdGF0ZURpZENoYW5nZShWaWV3U3RhdGU6OkFsbEZsYWdzICYg
flZpZXdTdGF0ZTo6SXNJbldpbmRvdywgdHJ1ZSwgV2ViUGFnZVByb3h5OjpWaWV3U3RhdGVDaGFu
Z2VEaXNwYXRjaE1vZGU6OkltbWVkaWF0ZSk7CisgICAgX3BhZ2UtPmFjdGl2aXR5U3RhdGVEaWRD
aGFuZ2UoQWN0aXZpdHlTdGF0ZTo6QWxsRmxhZ3MgJiB+QWN0aXZpdHlTdGF0ZTo6SXNJbldpbmRv
dywgdHJ1ZSwgV2ViUGFnZVByb3h5OjpBY3Rpdml0eVN0YXRlQ2hhbmdlRGlzcGF0Y2hNb2RlOjpJ
bW1lZGlhdGUpOwogfQogCiAtICh2b2lkKV9hcHBsaWNhdGlvbkRpZEJlY29tZUFjdGl2ZTooTlNO
b3RpZmljYXRpb24qKW5vdGlmaWNhdGlvbgpJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L2lvcy9XS1BERlZpZXcubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L2lvcy9XS1BERlZpZXcubW0JKHJldmlzaW9uIDIwODE5NykKKysrIFNvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9pb3MvV0tQREZWaWV3Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC04NzgsNyArODc4LDcg
QEAgLSAoQk9PTClpc0JhY2tncm91bmQKIC0gKHZvaWQpX2FwcGxpY2F0aW9uRGlkRW50ZXJCYWNr
Z3JvdW5kCiB7CiAgICAgX3dlYlZpZXctPl9wYWdlLT5hcHBsaWNhdGlvbkRpZEVudGVyQmFja2dy
b3VuZCgpOwotICAgIF93ZWJWaWV3LT5fcGFnZS0+dmlld1N0YXRlRGlkQ2hhbmdlKFZpZXdTdGF0
ZTo6QWxsRmxhZ3MgJiB+Vmlld1N0YXRlOjpJc0luV2luZG93KTsKKyAgICBfd2ViVmlldy0+X3Bh
Z2UtPmFjdGl2aXR5U3RhdGVEaWRDaGFuZ2UoQWN0aXZpdHlTdGF0ZTo6QWxsRmxhZ3MgJiB+QWN0
aXZpdHlTdGF0ZTo6SXNJbldpbmRvdyk7CiB9CiAKIC0gKHZvaWQpX2FwcGxpY2F0aW9uRGlkQ3Jl
YXRlV2luZG93Q29udGV4dApAQCAtODk1LDcgKzg5NSw3IEBAIC0gKHZvaWQpX2FwcGxpY2F0aW9u
V2lsbEVudGVyRm9yZWdyb3VuZAogICAgIF93ZWJWaWV3LT5fcGFnZS0+YXBwbGljYXRpb25XaWxs
RW50ZXJGb3JlZ3JvdW5kKCk7CiAgICAgaWYgKGF1dG8gZHJhd2luZ0FyZWEgPSBfd2ViVmlldy0+
X3BhZ2UtPmRyYXdpbmdBcmVhKCkpCiAgICAgICAgIGRyYXdpbmdBcmVhLT5oaWRlQ29udGVudFVu
dGlsQW55VXBkYXRlKCk7Ci0gICAgX3dlYlZpZXctPl9wYWdlLT52aWV3U3RhdGVEaWRDaGFuZ2Uo
Vmlld1N0YXRlOjpBbGxGbGFncyAmIH5WaWV3U3RhdGU6OklzSW5XaW5kb3csIHRydWUsIFdlYlBh
Z2VQcm94eTo6Vmlld1N0YXRlQ2hhbmdlRGlzcGF0Y2hNb2RlOjpJbW1lZGlhdGUpOworICAgIF93
ZWJWaWV3LT5fcGFnZS0+YWN0aXZpdHlTdGF0ZURpZENoYW5nZShBY3Rpdml0eVN0YXRlOjpBbGxG
bGFncyAmIH5BY3Rpdml0eVN0YXRlOjpJc0luV2luZG93LCB0cnVlLCBXZWJQYWdlUHJveHk6OkFj
dGl2aXR5U3RhdGVDaGFuZ2VEaXNwYXRjaE1vZGU6OkltbWVkaWF0ZSk7CiB9CiAKIEBlbmQKSW5k
ZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9pb3MvV2ViUGFnZVByb3h5SU9TLm1tCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9pb3MvV2ViUGFnZVByb3h5SU9TLm1t
CShyZXZpc2lvbiAyMDgxOTcpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvaW9zL1dlYlBh
Z2VQcm94eUlPUy5tbQkod29ya2luZyBjb3B5KQpAQCAtMzAzLDcgKzMwMyw3IEBAIHZvaWQgV2Vi
UGFnZVByb3h5OjpzeW5jaHJvbml6ZUR5bmFtaWNWaWUKICAgICAvLyBJZiBtX2R5bmFtaWNWaWV3
cG9ydFNpemVVcGRhdGVXYWl0aW5nRm9yVGFyZ2V0IGlzIGZhbHNlLCB3ZSBhcmUgd2FpdGluZyBm
b3IgdGhlIG5leHQgdmFsaWQgZnJhbWUgd2l0aCB0aGUgaG9wZSBpdCBpcyB0aGUgb25lIGZvciB0
aGUgbmV3IHRhcmdldC4KICAgICAvLyBJZiBtX2R5bmFtaWNWaWV3cG9ydFNpemVVcGRhdGVXYWl0
aW5nRm9yVGFyZ2V0IGlzIHN0aWxsIHRydWUsIHRoaXMgaXMgYSBkZXNwZXJhdGUgYXR0ZW1wdCB0
byBnZXQgdGhlIHZhbGlkIGZyYW1lIGJlZm9yZSBmaW5pc2hpbmcgdGhlIGFuaW1hdGlvbi4KICAg
ICBpZiAobV9keW5hbWljVmlld3BvcnRTaXplVXBkYXRlV2FpdGluZ0ZvckxheWVyVHJlZUNvbW1p
dCkKLSAgICAgICAgbV9kcmF3aW5nQXJlYS0+d2FpdEZvckRpZFVwZGF0ZVZpZXdTdGF0ZSgpOwor
ICAgICAgICBtX2RyYXdpbmdBcmVhLT53YWl0Rm9yRGlkVXBkYXRlQWN0aXZpdHlTdGF0ZSgpOwog
CiAgICAgbV9keW5hbWljVmlld3BvcnRTaXplVXBkYXRlV2FpdGluZ0ZvclRhcmdldCA9IGZhbHNl
OwogICAgIG1fZHluYW1pY1ZpZXdwb3J0U2l6ZVVwZGF0ZVdhaXRpbmdGb3JMYXllclRyZWVDb21t
aXQgPSBmYWxzZTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvUmVtb3RlTGF5
ZXJUcmVlRHJhd2luZ0FyZWFQcm94eS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9tYWMvUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWFQcm94eS5oCShyZXZpc2lvbiAy
MDgxOTcpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1JlbW90ZUxheWVyVHJlZURy
YXdpbmdBcmVhUHJveHkuaAkod29ya2luZyBjb3B5KQpAQCAtNzMsNyArNzMsNyBAQCBwcml2YXRl
OgogICAgIHZvaWQgdXBkYXRlRGVidWdJbmRpY2F0b3JQb3NpdGlvbigpOwogICAgIHZvaWQgaW5p
dGlhbGl6ZURlYnVnSW5kaWNhdG9yKCk7CiAKLSAgICB2b2lkIHdhaXRGb3JEaWRVcGRhdGVWaWV3
U3RhdGUoKSBvdmVycmlkZTsKKyAgICB2b2lkIHdhaXRGb3JEaWRVcGRhdGVBY3Rpdml0eVN0YXRl
KCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBoaWRlQ29udGVudFVudGlsUGVuZGluZ1VwZGF0ZSgpIG92
ZXJyaWRlOwogICAgIHZvaWQgaGlkZUNvbnRlbnRVbnRpbEFueVVwZGF0ZSgpIG92ZXJyaWRlOwog
ICAgIGJvb2wgaGFzVmlzaWJsZUNvbnRlbnQoKSBjb25zdCBvdmVycmlkZTsKSW5kZXg6IFNvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWFQcm94eS5t
bQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1JlbW90ZUxheWVy
VHJlZURyYXdpbmdBcmVhUHJveHkubW0JKHJldmlzaW9uIDIwODE5NykKKysrIFNvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9tYWMvUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWFQcm94eS5tbQkod29y
a2luZyBjb3B5KQpAQCAtNDE4LDE4ICs0MTgsMTggQEAgdm9pZCBSZW1vdGVMYXllclRyZWVEcmF3
aW5nQXJlYVByb3h5OjpkaQogCiAgICAgbV9sYXN0VmlzaWJsZVRyYW5zYWN0aW9uSUQgPSBtX3Ry
YW5zYWN0aW9uSURGb3JQZW5kaW5nQ0FDb21taXQ7CiAKLSAgICBtX3dlYlBhZ2VQcm94eS5kaWRV
cGRhdGVWaWV3U3RhdGUoKTsKKyAgICBtX3dlYlBhZ2VQcm94eS5kaWRVcGRhdGVBY3Rpdml0eVN0
YXRlKCk7CiB9CiAKLXZvaWQgUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWFQcm94eTo6d2FpdEZv
ckRpZFVwZGF0ZVZpZXdTdGF0ZSgpCit2b2lkIFJlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhUHJv
eHk6OndhaXRGb3JEaWRVcGRhdGVBY3Rpdml0eVN0YXRlKCkKIHsKICAgICAvLyBXZSBtdXN0IHNl
bmQgdGhlIGRpZFVwZGF0ZSBtZXNzYWdlIGJlZm9yZSBibG9ja2luZyBvbiB0aGUgbmV4dCBjb21t
aXQsIG90aGVyd2lzZQogICAgIC8vIHdlIGNhbiBiZSBndWFyYW50ZWVkIHRoYXQgdGhlIG5leHQg
Y29tbWl0IHdvbid0IGNvbWUgdW50aWwgYWZ0ZXIgdGhlIHdhaXRGb3JBbmREaXNwYXRjaEltbWVk
aWF0ZWx5IHRpbWVzIG91dC4KICAgICBpZiAobV9kaWRVcGRhdGVNZXNzYWdlU3RhdGUgIT0gRG9l
c05vdE5lZWREaWRVcGRhdGUpCiAgICAgICAgIGRpZFJlZnJlc2hEaXNwbGF5KG1vbm90b25pY2Fs
bHlJbmNyZWFzaW5nVGltZSgpKTsKIAotICAgIHN0YXRpYyBzdGQ6OmNocm9ubzo6bWlsbGlzZWNv
bmRzIHZpZXdTdGF0ZVVwZGF0ZVRpbWVvdXQgPSBbXSB7Ci0gICAgICAgIGlmIChpZCB2YWx1ZSA9
IFtbTlNVc2VyRGVmYXVsdHMgc3RhbmRhcmRVc2VyRGVmYXVsdHNdIG9iamVjdEZvcktleTpAIldl
YktpdE92ZXJyaWRlVmlld1N0YXRlVXBkYXRlVGltZW91dCJdKQorICAgIHN0YXRpYyBzdGQ6OmNo
cm9ubzo6bWlsbGlzZWNvbmRzIGFjdGl2aXR5U3RhdGVVcGRhdGVUaW1lb3V0ID0gW10geworICAg
ICAgICBpZiAoaWQgdmFsdWUgPSBbW05TVXNlckRlZmF1bHRzIHN0YW5kYXJkVXNlckRlZmF1bHRz
XSBvYmplY3RGb3JLZXk6QCJXZWJLaXRPdmVycmlkZUFjdGl2aXR5U3RhdGVVcGRhdGVUaW1lb3V0
Il0pCiAgICAgICAgICAgICByZXR1cm4gc3RkOjpjaHJvbm86OmR1cmF0aW9uX2Nhc3Q8c3RkOjpj
aHJvbm86Om1pbGxpc2Vjb25kcz4oc3RkOjpjaHJvbm86OmR1cmF0aW9uPGRvdWJsZT4oW3ZhbHVl
IGRvdWJsZVZhbHVlXSkpOwogCiAjaWYgUExBVEZPUk0oSU9TKQpAQCAtNDM4LDcgKzQzOCw3IEBA
IHZvaWQgUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWFQcm94eTo6d2EKICAgICAgICAgcmV0dXJu
IHN0ZDo6Y2hyb25vOjptaWxsaXNlY29uZHMoMjUwKTsKICNlbmRpZgogICAgIH0oKTsKLSAgICBt
X3dlYlBhZ2VQcm94eS5wcm9jZXNzKCkuY29ubmVjdGlvbigpLT53YWl0Rm9yQW5kRGlzcGF0Y2hJ
bW1lZGlhdGVseTxNZXNzYWdlczo6UmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWFQcm94eTo6Q29t
bWl0TGF5ZXJUcmVlPihtX3dlYlBhZ2VQcm94eS5wYWdlSUQoKSwgdmlld1N0YXRlVXBkYXRlVGlt
ZW91dCwgSVBDOjpXYWl0Rm9yT3B0aW9uOjpJbnRlcnJ1cHRXYWl0aW5nSWZTeW5jTWVzc2FnZUFy
cml2ZXMpOworICAgIG1fd2ViUGFnZVByb3h5LnByb2Nlc3MoKS5jb25uZWN0aW9uKCktPndhaXRG
b3JBbmREaXNwYXRjaEltbWVkaWF0ZWx5PE1lc3NhZ2VzOjpSZW1vdGVMYXllclRyZWVEcmF3aW5n
QXJlYVByb3h5OjpDb21taXRMYXllclRyZWU+KG1fd2ViUGFnZVByb3h5LnBhZ2VJRCgpLCBhY3Rp
dml0eVN0YXRlVXBkYXRlVGltZW91dCwgSVBDOjpXYWl0Rm9yT3B0aW9uOjpJbnRlcnJ1cHRXYWl0
aW5nSWZTeW5jTWVzc2FnZUFycml2ZXMpOwogfQogCiB2b2lkIFJlbW90ZUxheWVyVHJlZURyYXdp
bmdBcmVhUHJveHk6OmRpc3BhdGNoQWZ0ZXJFbnN1cmluZ0RyYXdpbmcoc3RkOjpmdW5jdGlvbjx2
b2lkIChDYWxsYmFja0Jhc2U6OkVycm9yKT4gY2FsbGJhY2tGdW5jdGlvbikKSW5kZXg6IFNvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWFQcm94
eS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvVGlsZWRDb3Jl
QW5pbWF0aW9uRHJhd2luZ0FyZWFQcm94eS5oCShyZXZpc2lvbiAyMDgxOTcpCisrKyBTb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1RpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhUHJveHku
aAkod29ya2luZyBjb3B5KQpAQCAtNTIsNyArNTIsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgYWRq
dXN0VHJhbnNpZW50Wm9vbShkb3VibGUgc2NhbGUsIFdlYkNvcmU6OkZsb2F0UG9pbnQgb3JpZ2lu
KSBvdmVycmlkZTsKICAgICB2b2lkIGNvbW1pdFRyYW5zaWVudFpvb20oZG91YmxlIHNjYWxlLCBX
ZWJDb3JlOjpGbG9hdFBvaW50IG9yaWdpbikgb3ZlcnJpZGU7CiAKLSAgICB2b2lkIHdhaXRGb3JE
aWRVcGRhdGVWaWV3U3RhdGUoKSBvdmVycmlkZTsKKyAgICB2b2lkIHdhaXRGb3JEaWRVcGRhdGVB
Y3Rpdml0eVN0YXRlKCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaXNwYXRjaEFmdGVyRW5zdXJpbmdE
cmF3aW5nKHN0ZDo6ZnVuY3Rpb248dm9pZCAoQ2FsbGJhY2tCYXNlOjpFcnJvcik+KSBvdmVycmlk
ZTsKIAogICAgIHZvaWQgd2lsbFNlbmRVcGRhdGVHZW9tZXRyeSgpIG92ZXJyaWRlOwpJbmRleDog
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9UaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJl
YVByb3h5Lm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvVGls
ZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWFQcm94eS5tbQkocmV2aXNpb24gMjA4MTk3KQorKysg
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9UaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJl
YVByb3h5Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC0xMzEsMTAgKzEzMSwxMCBAQCB2b2lkIFRpbGVk
Q29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhUHJveHk6CiAgICAgICAgIHNlbmRVcGRhdGVHZW9tZXRy
eSgpOwogfQogCi12b2lkIFRpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhUHJveHk6OndhaXRG
b3JEaWRVcGRhdGVWaWV3U3RhdGUoKQordm9pZCBUaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJl
YVByb3h5Ojp3YWl0Rm9yRGlkVXBkYXRlQWN0aXZpdHlTdGF0ZSgpCiB7Ci0gICAgYXV0byB2aWV3
U3RhdGVVcGRhdGVUaW1lb3V0ID0gc3RkOjpjaHJvbm86Om1pbGxpc2Vjb25kcygyNTApOwotICAg
IG1fd2ViUGFnZVByb3h5LnByb2Nlc3MoKS5jb25uZWN0aW9uKCktPndhaXRGb3JBbmREaXNwYXRj
aEltbWVkaWF0ZWx5PE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkRpZFVwZGF0ZVZpZXdTdGF0ZT4o
bV93ZWJQYWdlUHJveHkucGFnZUlEKCksIHZpZXdTdGF0ZVVwZGF0ZVRpbWVvdXQsIElQQzo6V2Fp
dEZvck9wdGlvbjo6SW50ZXJydXB0V2FpdGluZ0lmU3luY01lc3NhZ2VBcnJpdmVzKTsKKyAgICBh
dXRvIGFjdGl2aXR5U3RhdGVVcGRhdGVUaW1lb3V0ID0gc3RkOjpjaHJvbm86Om1pbGxpc2Vjb25k
cygyNTApOworICAgIG1fd2ViUGFnZVByb3h5LnByb2Nlc3MoKS5jb25uZWN0aW9uKCktPndhaXRG
b3JBbmREaXNwYXRjaEltbWVkaWF0ZWx5PE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkRpZFVwZGF0
ZUFjdGl2aXR5U3RhdGU+KG1fd2ViUGFnZVByb3h5LnBhZ2VJRCgpLCBhY3Rpdml0eVN0YXRlVXBk
YXRlVGltZW91dCwgSVBDOjpXYWl0Rm9yT3B0aW9uOjpJbnRlcnJ1cHRXYWl0aW5nSWZTeW5jTWVz
c2FnZUFycml2ZXMpOwogfQogCiB2b2lkIFRpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhUHJv
eHk6OmludHJpbnNpY0NvbnRlbnRTaXplRGlkQ2hhbmdlKGNvbnN0IEludFNpemUmIG5ld0ludHJp
bnNpY0NvbnRlbnRTaXplKQpJbmRleDogU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5z
L1BsdWdpblZpZXcuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
UGx1Z2lucy9QbHVnaW5WaWV3LmNwcAkocmV2aXNpb24gMjA4MTk3KQorKysgU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01
MzUsMTQgKzUzNSwxNCBAQCB2b2lkIFBsdWdpblZpZXc6OndlYlBhZ2VEZXN0cm95ZWQoKQogICAg
IG1fd2ViUGFnZSA9IDA7CiB9CiAKLXZvaWQgUGx1Z2luVmlldzo6dmlld1N0YXRlRGlkQ2hhbmdl
KFZpZXdTdGF0ZTo6RmxhZ3MgY2hhbmdlZCkKK3ZvaWQgUGx1Z2luVmlldzo6YWN0aXZpdHlTdGF0
ZURpZENoYW5nZShBY3Rpdml0eVN0YXRlOjpGbGFncyBjaGFuZ2VkKQogewogICAgIGlmICghbV9w
bHVnaW4gfHwgIW1faXNJbml0aWFsaXplZCkKICAgICAgICAgcmV0dXJuOwogCi0gICAgaWYgKGNo
YW5nZWQgJiBWaWV3U3RhdGU6OklzVmlzaWJsZU9yT2NjbHVkZWQpCisgICAgaWYgKGNoYW5nZWQg
JiBBY3Rpdml0eVN0YXRlOjpJc1Zpc2libGVPck9jY2x1ZGVkKQogICAgICAgICBtX3BsdWdpbi0+
d2luZG93VmlzaWJpbGl0eUNoYW5nZWQobV93ZWJQYWdlLT5pc1Zpc2libGVPck9jY2x1ZGVkKCkp
OwotICAgIGlmIChjaGFuZ2VkICYgVmlld1N0YXRlOjpXaW5kb3dJc0FjdGl2ZSkKKyAgICBpZiAo
Y2hhbmdlZCAmIEFjdGl2aXR5U3RhdGU6OldpbmRvd0lzQWN0aXZlKQogICAgICAgICBtX3BsdWdp
bi0+d2luZG93Rm9jdXNDaGFuZ2VkKG1fd2ViUGFnZS0+d2luZG93SXNGb2N1c2VkKCkpOwogfQog
CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3
LmgJKHJldmlzaW9uIDIwODE5NykKKysrIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lu
cy9QbHVnaW5WaWV3LmgJKHdvcmtpbmcgY29weSkKQEAgLTMxLDYgKzMxLDcgQEAKICNpbmNsdWRl
ICJQbHVnaW4uaCIKICNpbmNsdWRlICJQbHVnaW5Db250cm9sbGVyLmgiCiAjaW5jbHVkZSAiV2Vi
RnJhbWUuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL0FjdGl2aXR5U3RhdGUuaD4KICNpbmNsdWRlIDxX
ZWJDb3JlL0ZpbmRPcHRpb25zLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9JbWFnZS5oPgogI2luY2x1
ZGUgPFdlYkNvcmUvTWVkaWFDYW5TdGFydExpc3RlbmVyLmg+CkBAIC0zOSw3ICs0MCw2IEBACiAj
aW5jbHVkZSA8V2ViQ29yZS9SZXNvdXJjZUVycm9yLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9SZXNv
dXJjZVJlc3BvbnNlLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9UaW1lci5oPgotI2luY2x1ZGUgPFdl
YkNvcmUvVmlld1N0YXRlLmg+CiAjaW5jbHVkZSA8bWVtb3J5PgogI2luY2x1ZGUgPHd0Zi9EZXF1
ZS5oPgogI2luY2x1ZGUgPHd0Zi9SdW5Mb29wLmg+CkBAIC03Nyw3ICs3Nyw3IEBAIHB1YmxpYzoK
ICAgICB2b2lkIG1hbnVhbExvYWREaWRGaW5pc2hMb2FkaW5nKCk7CiAgICAgdm9pZCBtYW51YWxM
b2FkRGlkRmFpbChjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJik7CiAKLSAgICB2b2lkIHZp
ZXdTdGF0ZURpZENoYW5nZShXZWJDb3JlOjpWaWV3U3RhdGU6OkZsYWdzIGNoYW5nZWQpOworICAg
IHZvaWQgYWN0aXZpdHlTdGF0ZURpZENoYW5nZShXZWJDb3JlOjpBY3Rpdml0eVN0YXRlOjpGbGFn
cyBjaGFuZ2VkKTsKICAgICB2b2lkIHNldExheWVySG9zdGluZ01vZGUoTGF5ZXJIb3N0aW5nTW9k
ZSk7CiAKICNpZiBQTEFURk9STShDT0NPQSkKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvV2ViUGFnZS9BY2NlbGVyYXRlZERyYXdpbmdBcmVhLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvQWNjZWxlcmF0ZWREcmF3aW5nQXJlYS5jcHAJ
KHJldmlzaW9uIDIwODE5NykKKysrIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9B
Y2NlbGVyYXRlZERyYXdpbmdBcmVhLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzY5LDkgKzM2OSw5
IEBAIHZvaWQgQWNjZWxlcmF0ZWREcmF3aW5nQXJlYTo6ZGVzdHJveU5hdGkKIH0KICNlbmRpZgog
Ci12b2lkIEFjY2VsZXJhdGVkRHJhd2luZ0FyZWE6OnZpZXdTdGF0ZURpZENoYW5nZShWaWV3U3Rh
dGU6OkZsYWdzIGNoYW5nZWQsIGJvb2wsIGNvbnN0IFZlY3Rvcjx1aW50NjRfdD4mKQordm9pZCBB
Y2NlbGVyYXRlZERyYXdpbmdBcmVhOjphY3Rpdml0eVN0YXRlRGlkQ2hhbmdlKEFjdGl2aXR5U3Rh
dGU6OkZsYWdzIGNoYW5nZWQsIGJvb2wsIGNvbnN0IFZlY3Rvcjx1aW50NjRfdD4mKQogewotICAg
IGlmIChjaGFuZ2VkICYgVmlld1N0YXRlOjpJc1Zpc2libGUpIHsKKyAgICBpZiAoY2hhbmdlZCAm
IEFjdGl2aXR5U3RhdGU6OklzVmlzaWJsZSkgewogICAgICAgICBpZiAobV93ZWJQYWdlLmlzVmlz
aWJsZSgpKQogICAgICAgICAgICAgcmVzdW1lUGFpbnRpbmcoKTsKICAgICAgICAgZWxzZQpJbmRl
eDogU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0FjY2VsZXJhdGVkRHJhd2luZ0Fy
ZWEuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvQWNj
ZWxlcmF0ZWREcmF3aW5nQXJlYS5oCShyZXZpc2lvbiAyMDgxOTcpCisrKyBTb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvQWNjZWxlcmF0ZWREcmF3aW5nQXJlYS5oCSh3b3JraW5nIGNv
cHkpCkBAIC02OCw3ICs2OCw3IEBAIHByb3RlY3RlZDoKICAgICB2b2lkIGRlc3Ryb3lOYXRpdmVT
dXJmYWNlSGFuZGxlRm9yQ29tcG9zaXRpbmcoYm9vbCYpIG92ZXJyaWRlOwogI2VuZGlmCiAKLSAg
ICB2b2lkIHZpZXdTdGF0ZURpZENoYW5nZShXZWJDb3JlOjpWaWV3U3RhdGU6OkZsYWdzLCBib29s
IC8qIHdhbnRzRGlkVXBkYXRlVmlld1N0YXRlICovLCBjb25zdCBWZWN0b3I8dWludDY0X3Q+JiAv
KiBjYWxsYmFja0lEcyAqLykgb3ZlcnJpZGU7CisgICAgdm9pZCBhY3Rpdml0eVN0YXRlRGlkQ2hh
bmdlKFdlYkNvcmU6OkFjdGl2aXR5U3RhdGU6OkZsYWdzLCBib29sIC8qIHdhbnRzRGlkVXBkYXRl
QWN0aXZpdHlTdGF0ZSAqLywgY29uc3QgVmVjdG9yPHVpbnQ2NF90PiYgLyogY2FsbGJhY2tJRHMg
Ki8pIG92ZXJyaWRlOwogICAgIHZvaWQgYXR0YWNoVmlld092ZXJsYXlHcmFwaGljc0xheWVyKFdl
YkNvcmU6OkZyYW1lKiwgV2ViQ29yZTo6R3JhcGhpY3NMYXllciopIG92ZXJyaWRlOwogCiAgICAg
dm9pZCBsYXllckhvc3REaWRGbHVzaExheWVycygpIG92ZXJyaWRlOwpJbmRleDogU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0RyYXdpbmdBcmVhLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0RyYXdpbmdBcmVhLmgJKHJldmlzaW9uIDIw
ODE5NykKKysrIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9EcmF3aW5nQXJlYS5o
CSh3b3JraW5nIGNvcHkpCkBAIC0yOCwxMiArMjgsMTIgQEAKICNpbmNsdWRlICJEcmF3aW5nQXJl
YUluZm8uaCIKICNpbmNsdWRlICJMYXllclRyZWVDb250ZXh0LmgiCiAjaW5jbHVkZSAiTWVzc2Fn
ZVJlY2VpdmVyLmgiCisjaW5jbHVkZSA8V2ViQ29yZS9BY3Rpdml0eVN0YXRlLmg+CiAjaW5jbHVk
ZSA8V2ViQ29yZS9GbG9hdFJlY3QuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0ludFJlY3QuaD4KICNp
bmNsdWRlIDxXZWJDb3JlL0xheWVyRmx1c2hUaHJvdHRsZVN0YXRlLmg+CiAjaW5jbHVkZSA8V2Vi
Q29yZS9MYXlvdXRNaWxlc3RvbmVzLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9QbGF0Zm9ybVNjcmVl
bi5oPgotI2luY2x1ZGUgPFdlYkNvcmUvVmlld1N0YXRlLmg+CiAjaW5jbHVkZSA8ZnVuY3Rpb25h
bD4KICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5o
PgpAQCAtMTIwLDcgKzEyMCw3IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRj
aEFmdGVyRW5zdXJpbmdVcGRhdGVkU2Nyb2xsUG9zaXRpb24oc3RkOjpmdW5jdGlvbjx2b2lkICgp
Pik7CiAKLSAgICB2aXJ0dWFsIHZvaWQgdmlld1N0YXRlRGlkQ2hhbmdlKFdlYkNvcmU6OlZpZXdT
dGF0ZTo6RmxhZ3MsIGJvb2wgLyogd2FudHNEaWRVcGRhdGVWaWV3U3RhdGUgKi8sIGNvbnN0IFZl
Y3Rvcjx1aW50NjRfdD4mIC8qIGNhbGxiYWNrSURzICovKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQg
YWN0aXZpdHlTdGF0ZURpZENoYW5nZShXZWJDb3JlOjpBY3Rpdml0eVN0YXRlOjpGbGFncywgYm9v
bCAvKiB3YW50c0RpZFVwZGF0ZUFjdGl2aXR5U3RhdGUgKi8sIGNvbnN0IFZlY3Rvcjx1aW50NjRf
dD4mIC8qIGNhbGxiYWNrSURzICovKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgc2V0TGF5ZXJIb3N0
aW5nTW9kZShMYXllckhvc3RpbmdNb2RlKSB7IH0KIAogICAgIHZpcnR1YWwgYm9vbCBtYXJrTGF5
ZXJzVm9sYXRpbGVJbW1lZGlhdGVseUlmUG9zc2libGUoKSB7IHJldHVybiB0cnVlOyB9CkluZGV4
OiBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCShyZXZp
c2lvbiAyMDgxOTcpCisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFn
ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM3Niw3ICszNzYsNyBAQCBXZWJQYWdlOjpXZWJQYWdl
KHVpbnQ2NF90IHBhZ2VJRCwgY29uc3QgCiAgICAgLCBtX21heGltdW1SZW5kZXJpbmdTdXBwcmVz
c2lvblRva2VuKDApCiAgICAgLCBtX3Njcm9sbFBpbm5pbmdCZWhhdmlvcihEb05vdFBpbikKICAg
ICAsIG1fdXNlQXN5bmNTY3JvbGxpbmcoZmFsc2UpCi0gICAgLCBtX3ZpZXdTdGF0ZShwYXJhbWV0
ZXJzLnZpZXdTdGF0ZSkKKyAgICAsIG1fYWN0aXZpdHlTdGF0ZShwYXJhbWV0ZXJzLmFjdGl2aXR5
U3RhdGUpCiAgICAgLCBtX3VzZXJBY3Rpdml0eSgiUHJvY2VzcyBzdXBwcmVzc2lvbiBkaXNhYmxl
ZCBmb3IgcGFnZS4iKQogICAgICwgbV91c2VyQWN0aXZpdHlIeXN0ZXJlc2lzKFt0aGlzXShIeXN0
ZXJlc2lzU3RhdGUpIHsgdXBkYXRlVXNlckFjdGl2aXR5KCk7IH0pCiAgICAgLCBtX3BlbmRpbmdO
YXZpZ2F0aW9uSUQoMCkKQEAgLTQ5Myw3ICs0OTMsNyBAQCBXZWJQYWdlOjpXZWJQYWdlKHVpbnQ2
NF90IHBhZ2VJRCwgY29uc3QgCiAgICAgc2V0UGFnaW5hdGlvbkxpbmVHcmlkRW5hYmxlZChwYXJh
bWV0ZXJzLnBhZ2luYXRpb25MaW5lR3JpZEVuYWJsZWQpOwogICAgIAogICAgIC8vIElmIHRoZSBw
YWdlIGlzIGNyZWF0ZWQgb2ZmLXNjcmVlbiwgaXRzIHZpc2liaWxpdHlTdGF0ZSBzaG91bGQgYmUg
cHJlcmVuZGVyLgotICAgIG1fcGFnZS0+c2V0Vmlld1N0YXRlKG1fdmlld1N0YXRlKTsKKyAgICBt
X3BhZ2UtPnNldEFjdGl2aXR5U3RhdGUobV9hY3Rpdml0eVN0YXRlKTsKICAgICBpZiAoIWlzVmlz
aWJsZSgpKQogICAgICAgICBtX3BhZ2UtPnNldElzUHJlcmVuZGVyKCk7CiAgICAgc2V0UGFnZVN1
cHByZXNzZWQoZmFsc2UpOwpAQCAtNTc1LDggKzU3NSw4IEBAIFdlYlBhZ2U6OldlYlBhZ2UodWlu
dDY0X3QgcGFnZUlELCBjb25zdCAKIAogdm9pZCBXZWJQYWdlOjpyZWluaXRpYWxpemVXZWJQYWdl
KGNvbnN0IFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMmIHBhcmFtZXRlcnMpCiB7Ci0gICAgaWYg
KG1fdmlld1N0YXRlICE9IHBhcmFtZXRlcnMudmlld1N0YXRlKQotICAgICAgICBzZXRWaWV3U3Rh
dGUocGFyYW1ldGVycy52aWV3U3RhdGUsIGZhbHNlLCBWZWN0b3I8dWludDY0X3Q+KCkpOworICAg
IGlmIChtX2FjdGl2aXR5U3RhdGUgIT0gcGFyYW1ldGVycy5hY3Rpdml0eVN0YXRlKQorICAgICAg
ICBzZXRBY3Rpdml0eVN0YXRlKHBhcmFtZXRlcnMuYWN0aXZpdHlTdGF0ZSwgZmFsc2UsIFZlY3Rv
cjx1aW50NjRfdD4oKSk7CiAgICAgaWYgKG1fbGF5ZXJIb3N0aW5nTW9kZSAhPSBwYXJhbWV0ZXJz
LmxheWVySG9zdGluZ01vZGUpCiAgICAgICAgIHNldExheWVySG9zdGluZ01vZGUocGFyYW1ldGVy
cy5sYXllckhvc3RpbmdNb2RlKTsKIH0KQEAgLTI1NjcsNyArMjU2Nyw3IEBAIHZvaWQgV2ViUGFn
ZTo6c2V0Q2FuU3RhcnRNZWRpYVRpbWVyRmlyZWQKIAogdm9pZCBXZWJQYWdlOjp1cGRhdGVJc0lu
V2luZG93KGJvb2wgaXNJbml0aWFsU3RhdGUpCiB7Ci0gICAgYm9vbCBpc0luV2luZG93ID0gbV92
aWV3U3RhdGUgJiBXZWJDb3JlOjpWaWV3U3RhdGU6OklzSW5XaW5kb3c7CisgICAgYm9vbCBpc0lu
V2luZG93ID0gbV9hY3Rpdml0eVN0YXRlICYgV2ViQ29yZTo6QWN0aXZpdHlTdGF0ZTo6SXNJbldp
bmRvdzsKIAogICAgIGlmICghaXNJbldpbmRvdykgewogICAgICAgICBtX3NldENhblN0YXJ0TWVk
aWFUaW1lci5zdG9wKCk7CkBAIC0yNTkwLDE4ICsyNTkwLDE4IEBAIHZvaWQgV2ViUGFnZTo6dXBk
YXRlSXNJbldpbmRvdyhib29sIGlzSW4KICAgICAgICAgbGF5b3V0SWZOZWVkZWQoKTsKIH0KIAot
dm9pZCBXZWJQYWdlOjpzZXRWaWV3U3RhdGUoVmlld1N0YXRlOjpGbGFncyB2aWV3U3RhdGUsIGJv
b2wgd2FudHNEaWRVcGRhdGVWaWV3U3RhdGUsIGNvbnN0IFZlY3Rvcjx1aW50NjRfdD4mIGNhbGxi
YWNrSURzKQordm9pZCBXZWJQYWdlOjpzZXRBY3Rpdml0eVN0YXRlKEFjdGl2aXR5U3RhdGU6OkZs
YWdzIGFjdGl2aXR5U3RhdGUsIGJvb2wgd2FudHNEaWRVcGRhdGVBY3Rpdml0eVN0YXRlLCBjb25z
dCBWZWN0b3I8dWludDY0X3Q+JiBjYWxsYmFja0lEcykKIHsKLSAgICBWaWV3U3RhdGU6OkZsYWdz
IGNoYW5nZWQgPSBtX3ZpZXdTdGF0ZSBeIHZpZXdTdGF0ZTsKLSAgICBtX3ZpZXdTdGF0ZSA9IHZp
ZXdTdGF0ZTsKKyAgICBBY3Rpdml0eVN0YXRlOjpGbGFncyBjaGFuZ2VkID0gbV9hY3Rpdml0eVN0
YXRlIF4gYWN0aXZpdHlTdGF0ZTsKKyAgICBtX2FjdGl2aXR5U3RhdGUgPSBhY3Rpdml0eVN0YXRl
OwogCi0gICAgbV9wYWdlLT5zZXRWaWV3U3RhdGUodmlld1N0YXRlKTsKKyAgICBtX3BhZ2UtPnNl
dEFjdGl2aXR5U3RhdGUoYWN0aXZpdHlTdGF0ZSk7CiAgICAgZm9yIChhdXRvKiBwbHVnaW5WaWV3
IDogbV9wbHVnaW5WaWV3cykKLSAgICAgICAgcGx1Z2luVmlldy0+dmlld1N0YXRlRGlkQ2hhbmdl
KGNoYW5nZWQpOworICAgICAgICBwbHVnaW5WaWV3LT5hY3Rpdml0eVN0YXRlRGlkQ2hhbmdlKGNo
YW5nZWQpOwogCi0gICAgbV9kcmF3aW5nQXJlYS0+dmlld1N0YXRlRGlkQ2hhbmdlKGNoYW5nZWQs
IHdhbnRzRGlkVXBkYXRlVmlld1N0YXRlLCBjYWxsYmFja0lEcyk7CisgICAgbV9kcmF3aW5nQXJl
YS0+YWN0aXZpdHlTdGF0ZURpZENoYW5nZShjaGFuZ2VkLCB3YW50c0RpZFVwZGF0ZUFjdGl2aXR5
U3RhdGUsIGNhbGxiYWNrSURzKTsKIAotICAgIGlmIChjaGFuZ2VkICYgVmlld1N0YXRlOjpJc0lu
V2luZG93KQorICAgIGlmIChjaGFuZ2VkICYgQWN0aXZpdHlTdGF0ZTo6SXNJbldpbmRvdykKICAg
ICAgICAgdXBkYXRlSXNJbldpbmRvdygpOwogfQogCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgJKHJldmlzaW9uIDIwODE5NykKKysrIFNvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ4
LDYgKzQ4LDcgQEAKICNpbmNsdWRlICJTaGFyZWFibGVCaXRtYXAuaCIKICNpbmNsdWRlICJVc2Vy
RGF0YS5oIgogI2luY2x1ZGUgIlVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlci5oIgor
I2luY2x1ZGUgPFdlYkNvcmUvQWN0aXZpdHlTdGF0ZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRGlj
dGF0aW9uQWx0ZXJuYXRpdmUuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0RpY3Rpb25hcnlQb3B1cElu
Zm8uaD4KICNpbmNsdWRlIDxXZWJDb3JlL0RyYWdEYXRhLmg+CkBAIC02OCw3ICs2OSw2IEBACiAj
aW5jbHVkZSA8V2ViQ29yZS9Vc2VyQ29udGVudFR5cGVzLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9V
c2VySW50ZXJmYWNlTGF5b3V0RGlyZWN0aW9uLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9Vc2VyU2Ny
aXB0VHlwZXMuaD4KLSNpbmNsdWRlIDxXZWJDb3JlL1ZpZXdTdGF0ZS5oPgogI2luY2x1ZGUgPFdl
YkNvcmUvVmlld3BvcnRDb25maWd1cmF0aW9uLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9XZWJDb3Jl
S2V5Ym9hcmRVSU1vZGUuaD4KICNpbmNsdWRlIDxtZW1vcnk+CkBAIC00MzYsOCArNDM2LDggQEAg
cHVibGljOgogICAgIHZvaWQgYWRkUGx1Z2luVmlldyhQbHVnaW5WaWV3Kik7CiAgICAgdm9pZCBy
ZW1vdmVQbHVnaW5WaWV3KFBsdWdpblZpZXcqKTsKIAotICAgIGJvb2wgaXNWaXNpYmxlKCkgY29u
c3QgeyByZXR1cm4gbV92aWV3U3RhdGUgJiBXZWJDb3JlOjpWaWV3U3RhdGU6OklzVmlzaWJsZTsg
fQotICAgIGJvb2wgaXNWaXNpYmxlT3JPY2NsdWRlZCgpIGNvbnN0IHsgcmV0dXJuIG1fdmlld1N0
YXRlICYgV2ViQ29yZTo6Vmlld1N0YXRlOjpJc1Zpc2libGVPck9jY2x1ZGVkOyB9CisgICAgYm9v
bCBpc1Zpc2libGUoKSBjb25zdCB7IHJldHVybiBtX2FjdGl2aXR5U3RhdGUgJiBXZWJDb3JlOjpB
Y3Rpdml0eVN0YXRlOjpJc1Zpc2libGU7IH0KKyAgICBib29sIGlzVmlzaWJsZU9yT2NjbHVkZWQo
KSBjb25zdCB7IHJldHVybiBtX2FjdGl2aXR5U3RhdGUgJiBXZWJDb3JlOjpBY3Rpdml0eVN0YXRl
OjpJc1Zpc2libGVPck9jY2x1ZGVkOyB9CiAKICAgICBMYXllckhvc3RpbmdNb2RlIGxheWVySG9z
dGluZ01vZGUoKSBjb25zdCB7IHJldHVybiBtX2xheWVySG9zdGluZ01vZGU7IH0KICAgICB2b2lk
IHNldExheWVySG9zdGluZ01vZGUoTGF5ZXJIb3N0aW5nTW9kZSk7CkBAIC0xMDQxLDcgKzEwNDEs
NyBAQCBwcml2YXRlOgogICAgIHZvaWQgdHJ5UmVzdG9yZVNjcm9sbFBvc2l0aW9uKCk7CiAgICAg
dm9pZCBzZXRJbml0aWFsRm9jdXMoYm9vbCBmb3J3YXJkLCBib29sIGlzS2V5Ym9hcmRFdmVudFZh
bGlkLCBjb25zdCBXZWJLZXlib2FyZEV2ZW50JiwgdWludDY0X3QgY2FsbGJhY2tJRCk7CiAgICAg
dm9pZCB1cGRhdGVJc0luV2luZG93KGJvb2wgaXNJbml0aWFsU3RhdGUgPSBmYWxzZSk7Ci0gICAg
dm9pZCBzZXRWaWV3U3RhdGUoV2ViQ29yZTo6Vmlld1N0YXRlOjpGbGFncywgYm9vbCB3YW50c0Rp
ZFVwZGF0ZVZpZXdTdGF0ZSwgY29uc3QgVmVjdG9yPHVpbnQ2NF90PiYgY2FsbGJhY2tJRHMpOwor
ICAgIHZvaWQgc2V0QWN0aXZpdHlTdGF0ZShXZWJDb3JlOjpBY3Rpdml0eVN0YXRlOjpGbGFncywg
Ym9vbCB3YW50c0RpZFVwZGF0ZUFjdGl2aXR5U3RhdGUsIGNvbnN0IFZlY3Rvcjx1aW50NjRfdD4m
IGNhbGxiYWNrSURzKTsKICAgICB2b2lkIHZhbGlkYXRlQ29tbWFuZChjb25zdCBTdHJpbmcmLCB1
aW50NjRfdCk7CiAgICAgdm9pZCBleGVjdXRlRWRpdENvbW1hbmQoY29uc3QgU3RyaW5nJiwgY29u
c3QgU3RyaW5nJik7CiAgICAgdm9pZCBzZXRFZGl0YWJsZShib29sKTsKQEAgLTE0ODUsNyArMTQ4
NSw3IEBAIHByaXZhdGU6CiAKICAgICBib29sIG1fdXNlQXN5bmNTY3JvbGxpbmc7CiAKLSAgICBX
ZWJDb3JlOjpWaWV3U3RhdGU6OkZsYWdzIG1fdmlld1N0YXRlOworICAgIFdlYkNvcmU6OkFjdGl2
aXR5U3RhdGU6OkZsYWdzIG1fYWN0aXZpdHlTdGF0ZTsKIAogICAgIFVzZXJBY3Rpdml0eSBtX3Vz
ZXJBY3Rpdml0eTsKICAgICBXZWJDb3JlOjpIeXN0ZXJlc2lzQWN0aXZpdHkgbV91c2VyQWN0aXZp
dHlIeXN0ZXJlc2lzOwpJbmRleDogU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dl
YlBhZ2UubWVzc2FnZXMuaW4KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4JKHJldmlzaW9uIDIwODE5NykKKysrIFNvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluCSh3b3JraW5n
IGNvcHkpCkBAIC0yMiw3ICsyMiw3IEBACiAKIG1lc3NhZ2VzIC0+IFdlYlBhZ2UgTGVnYWN5UmVj
ZWl2ZXIgewogICAgIFNldEluaXRpYWxGb2N1cyhib29sIGZvcndhcmQsIGJvb2wgaXNLZXlib2Fy
ZEV2ZW50VmFsaWQsIFdlYktpdDo6V2ViS2V5Ym9hcmRFdmVudCBldmVudCwgdWludDY0X3QgY2Fs
bGJhY2tJRCkKLSAgICBTZXRWaWV3U3RhdGUodW5zaWduZWQgdmlld1N0YXRlLCBib29sIHdhbnRz
RGlkVXBkYXRlVmlld1N0YXRlLCBWZWN0b3I8dWludDY0X3Q+IGNhbGxiYWNrSURzKQorICAgIFNl
dEFjdGl2aXR5U3RhdGUodW5zaWduZWQgYWN0aXZpdHlTdGF0ZSwgYm9vbCB3YW50c0RpZFVwZGF0
ZUFjdGl2aXR5U3RhdGUsIFZlY3Rvcjx1aW50NjRfdD4gY2FsbGJhY2tJRHMpCiAgICAgU2V0TGF5
ZXJIb3N0aW5nTW9kZShlbnVtIFdlYktpdDo6TGF5ZXJIb3N0aW5nTW9kZSBsYXllckhvc3RpbmdN
b2RlKQogICAgIFNldFBhZ2VTdXBwcmVzc2VkKGJvb2wgcGFnZVN1cHByZXNzZWQpCiAKSW5kZXg6
IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvUmVtb3RlTGF5ZXJUcmVlRHJh
d2luZ0FyZWEuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBh
Z2UvbWFjL1JlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhLmgJKHJldmlzaW9uIDIwODE5NykKKysr
IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvUmVtb3RlTGF5ZXJUcmVlRHJh
d2luZ0FyZWEuaAkod29ya2luZyBjb3B5KQpAQCAtMTAyLDcgKzEwMiw3IEBAIHByaXZhdGU6CiAK
ICAgICB2b2lkIG1haW5GcmFtZUNvbnRlbnRTaXplQ2hhbmdlZChjb25zdCBXZWJDb3JlOjpJbnRT
aXplJikgb3ZlcnJpZGU7CiAKLSAgICB2b2lkIHZpZXdTdGF0ZURpZENoYW5nZShXZWJDb3JlOjpW
aWV3U3RhdGU6OkZsYWdzIGNoYW5nZWQsIGJvb2wgd2FudHNEaWRVcGRhdGVWaWV3U3RhdGUsIGNv
bnN0IFZlY3Rvcjx1aW50NjRfdD4mIGNhbGxiYWNrSURzKSBvdmVycmlkZTsKKyAgICB2b2lkIGFj
dGl2aXR5U3RhdGVEaWRDaGFuZ2UoV2ViQ29yZTo6QWN0aXZpdHlTdGF0ZTo6RmxhZ3MgY2hhbmdl
ZCwgYm9vbCB3YW50c0RpZFVwZGF0ZUFjdGl2aXR5U3RhdGUsIGNvbnN0IFZlY3Rvcjx1aW50NjRf
dD4mIGNhbGxiYWNrSURzKSBvdmVycmlkZTsKIAogICAgIGJvb2wgYWRqdXN0TGF5ZXJGbHVzaFRo
cm90dGxpbmcoV2ViQ29yZTo6TGF5ZXJGbHVzaFRocm90dGxlU3RhdGU6OkZsYWdzKSBvdmVycmlk
ZTsKIApJbmRleDogU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9SZW1vdGVM
YXllclRyZWVEcmF3aW5nQXJlYS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1dlYlBhZ2UvbWFjL1JlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhLm1tCShyZXZpc2lv
biAyMDgxOTcpCisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1JlbW90
ZUxheWVyVHJlZURyYXdpbmdBcmVhLm1tCSh3b3JraW5nIGNvcHkpCkBAIC00OTcsMTEgKzQ5Nywx
MSBAQCB2b2lkIFJlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhOjpCYWNraW5nCiAgICAgbV9jb25u
ZWN0aW9uLT5zZW5kTWVzc2FnZShXVEZNb3ZlKG1fY29tbWl0RW5jb2RlciksIHsgfSk7CiB9CiAK
LXZvaWQgUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWE6OnZpZXdTdGF0ZURpZENoYW5nZShWaWV3
U3RhdGU6OkZsYWdzLCBib29sIHdhbnRzRGlkVXBkYXRlVmlld1N0YXRlLCBjb25zdCBWZWN0b3I8
dWludDY0X3Q+JikKK3ZvaWQgUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWE6OmFjdGl2aXR5U3Rh
dGVEaWRDaGFuZ2UoQWN0aXZpdHlTdGF0ZTo6RmxhZ3MsIGJvb2wgd2FudHNEaWRVcGRhdGVBY3Rp
dml0eVN0YXRlLCBjb25zdCBWZWN0b3I8dWludDY0X3Q+JikKIHsKICAgICAvLyBGSVhNRTogU2hv
dWxkIHdlIHN1c3BlbmQgcGFpbnRpbmcgd2hpbGUgbm90IHZpc2libGUsIGxpa2UgVGlsZWRDb3Jl
QW5pbWF0aW9uRHJhd2luZ0FyZWE/IFByb2JhYmx5LgogCi0gICAgaWYgKHdhbnRzRGlkVXBkYXRl
Vmlld1N0YXRlKQorICAgIGlmICh3YW50c0RpZFVwZGF0ZUFjdGl2aXR5U3RhdGUpCiAgICAgICAg
IHNjaGVkdWxlQ29tcG9zaXRpbmdMYXllckZsdXNoSW1tZWRpYXRlbHkoKTsKIH0KIApJbmRleDog
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9UaWxlZENvcmVBbmltYXRpb25E
cmF3aW5nQXJlYS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2Vi
UGFnZS9tYWMvVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWEuaAkocmV2aXNpb24gMjA4MTk3
KQorKysgU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9UaWxlZENvcmVBbmlt
YXRpb25EcmF3aW5nQXJlYS5oCSh3b3JraW5nIGNvcHkpCkBAIC04MSw4ICs4MSw4IEBAIHByaXZh
dGU6CiAKICAgICBib29sIHNob3VsZFVzZVRpbGVkQmFja2luZ0ZvckZyYW1lVmlldyhjb25zdCBX
ZWJDb3JlOjpGcmFtZVZpZXcqKSBvdmVycmlkZTsKIAotICAgIHZvaWQgdmlld1N0YXRlRGlkQ2hh
bmdlKFdlYkNvcmU6OlZpZXdTdGF0ZTo6RmxhZ3MgY2hhbmdlZCwgYm9vbCB3YW50c0RpZFVwZGF0
ZVZpZXdTdGF0ZSwgY29uc3QgVmVjdG9yPHVpbnQ2NF90PiYpIG92ZXJyaWRlOwotICAgIHZvaWQg
ZGlkVXBkYXRlVmlld1N0YXRlVGltZXJGaXJlZCgpOworICAgIHZvaWQgYWN0aXZpdHlTdGF0ZURp
ZENoYW5nZShXZWJDb3JlOjpBY3Rpdml0eVN0YXRlOjpGbGFncyBjaGFuZ2VkLCBib29sIHdhbnRz
RGlkVXBkYXRlQWN0aXZpdHlTdGF0ZSwgY29uc3QgVmVjdG9yPHVpbnQ2NF90PiYpIG92ZXJyaWRl
OworICAgIHZvaWQgZGlkVXBkYXRlQWN0aXZpdHlTdGF0ZVRpbWVyRmlyZWQoKTsKIAogICAgIHZv
aWQgYXR0YWNoVmlld092ZXJsYXlHcmFwaGljc0xheWVyKFdlYkNvcmU6OkZyYW1lKiwgV2ViQ29y
ZTo6R3JhcGhpY3NMYXllciopIG92ZXJyaWRlOwogCkBAIC0xNDYsOSArMTQ2LDkgQEAgcHJpdmF0
ZToKIAogICAgIFdlYkNvcmU6OlRyYW5zZm9ybWF0aW9uTWF0cml4IG1fdHJhbnNmb3JtOwogCi0g
ICAgUnVuTG9vcDo6VGltZXI8VGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWE+IG1fc2VuZERp
ZFVwZGF0ZVZpZXdTdGF0ZVRpbWVyOwotICAgIFZlY3Rvcjx1aW50NjRfdD4gbV9uZXh0Vmlld1N0
YXRlQ2hhbmdlQ2FsbGJhY2tJRHM7Ci0gICAgYm9vbCBtX3dhbnRzRGlkVXBkYXRlVmlld1N0YXRl
OworICAgIFJ1bkxvb3A6OlRpbWVyPFRpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhPiBtX3Nl
bmREaWRVcGRhdGVBY3Rpdml0eVN0YXRlVGltZXI7CisgICAgVmVjdG9yPHVpbnQ2NF90PiBtX25l
eHRBY3Rpdml0eVN0YXRlQ2hhbmdlQ2FsbGJhY2tJRHM7CisgICAgYm9vbCBtX3dhbnRzRGlkVXBk
YXRlQWN0aXZpdHlTdGF0ZTsKIAogICAgIFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXIqIG1fdmlld092
ZXJsYXlSb290TGF5ZXI7CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFn
ZS9tYWMvVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWEubW0KPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9UaWxlZENvcmVBbmltYXRpb25EcmF3
aW5nQXJlYS5tbQkocmV2aXNpb24gMjA4MTk3KQorKysgU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9XZWJQYWdlL21hYy9UaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYS5tbQkod29ya2luZyBj
b3B5KQpAQCAtNzcsMTAgKzc3LDEwIEBAIFRpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhOjpU
aWxlZENvcmUKICAgICA6IERyYXdpbmdBcmVhKERyYXdpbmdBcmVhVHlwZVRpbGVkQ29yZUFuaW1h
dGlvbiwgd2ViUGFnZSkKICAgICAsIG1fbGF5ZXJUcmVlU3RhdGVJc0Zyb3plbihmYWxzZSkKICAg
ICAsIG1fbGF5ZXJGbHVzaFNjaGVkdWxlcih0aGlzKQotICAgICwgbV9pc1BhaW50aW5nU3VzcGVu
ZGVkKCEocGFyYW1ldGVycy52aWV3U3RhdGUgJiBWaWV3U3RhdGU6OklzVmlzaWJsZSkpCisgICAg
LCBtX2lzUGFpbnRpbmdTdXNwZW5kZWQoIShwYXJhbWV0ZXJzLmFjdGl2aXR5U3RhdGUgJiBBY3Rp
dml0eVN0YXRlOjpJc1Zpc2libGUpKQogICAgICwgbV90cmFuc2llbnRab29tU2NhbGUoMSkKLSAg
ICAsIG1fc2VuZERpZFVwZGF0ZVZpZXdTdGF0ZVRpbWVyKFJ1bkxvb3A6Om1haW4oKSwgdGhpcywg
JlRpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhOjpkaWRVcGRhdGVWaWV3U3RhdGVUaW1lckZp
cmVkKQotICAgICwgbV93YW50c0RpZFVwZGF0ZVZpZXdTdGF0ZShmYWxzZSkKKyAgICAsIG1fc2Vu
ZERpZFVwZGF0ZUFjdGl2aXR5U3RhdGVUaW1lcihSdW5Mb29wOjptYWluKCksIHRoaXMsICZUaWxl
ZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYTo6ZGlkVXBkYXRlQWN0aXZpdHlTdGF0ZVRpbWVyRmly
ZWQpCisgICAgLCBtX3dhbnRzRGlkVXBkYXRlQWN0aXZpdHlTdGF0ZShmYWxzZSkKICAgICAsIG1f
dmlld092ZXJsYXlSb290TGF5ZXIobnVsbHB0cikKIHsKICAgICBtX3dlYlBhZ2UuY29yZVBhZ2Uo
KS0+c2V0dGluZ3MoKS5zZXRGb3JjZUNvbXBvc2l0aW5nTW9kZSh0cnVlKTsKQEAgLTQ0NywzNCAr
NDQ3LDM0IEBAIGJvb2wgVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWE6OmZsdXMKICAgICB9
CiB9CiAKLXZvaWQgVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWE6OnZpZXdTdGF0ZURpZENo
YW5nZShWaWV3U3RhdGU6OkZsYWdzIGNoYW5nZWQsIGJvb2wgd2FudHNEaWRVcGRhdGVWaWV3U3Rh
dGUsIGNvbnN0IFZlY3Rvcjx1aW50NjRfdD4mIG5leHRWaWV3U3RhdGVDaGFuZ2VDYWxsYmFja0lE
cykKK3ZvaWQgVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWE6OmFjdGl2aXR5U3RhdGVEaWRD
aGFuZ2UoQWN0aXZpdHlTdGF0ZTo6RmxhZ3MgY2hhbmdlZCwgYm9vbCB3YW50c0RpZFVwZGF0ZUFj
dGl2aXR5U3RhdGUsIGNvbnN0IFZlY3Rvcjx1aW50NjRfdD4mIG5leHRBY3Rpdml0eVN0YXRlQ2hh
bmdlQ2FsbGJhY2tJRHMpCiB7Ci0gICAgbV9uZXh0Vmlld1N0YXRlQ2hhbmdlQ2FsbGJhY2tJRHMu
YXBwZW5kVmVjdG9yKG5leHRWaWV3U3RhdGVDaGFuZ2VDYWxsYmFja0lEcyk7Ci0gICAgbV93YW50
c0RpZFVwZGF0ZVZpZXdTdGF0ZSB8PSB3YW50c0RpZFVwZGF0ZVZpZXdTdGF0ZTsKKyAgICBtX25l
eHRBY3Rpdml0eVN0YXRlQ2hhbmdlQ2FsbGJhY2tJRHMuYXBwZW5kVmVjdG9yKG5leHRBY3Rpdml0
eVN0YXRlQ2hhbmdlQ2FsbGJhY2tJRHMpOworICAgIG1fd2FudHNEaWRVcGRhdGVBY3Rpdml0eVN0
YXRlIHw9IHdhbnRzRGlkVXBkYXRlQWN0aXZpdHlTdGF0ZTsKIAotICAgIGlmIChjaGFuZ2VkICYg
Vmlld1N0YXRlOjpJc1Zpc2libGUpIHsKKyAgICBpZiAoY2hhbmdlZCAmIEFjdGl2aXR5U3RhdGU6
OklzVmlzaWJsZSkgewogICAgICAgICBpZiAobV93ZWJQYWdlLmlzVmlzaWJsZSgpKQogICAgICAg
ICAgICAgcmVzdW1lUGFpbnRpbmcoKTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgc3VzcGVu
ZFBhaW50aW5nKCk7CiAgICAgfQogCi0gICAgaWYgKG1fd2FudHNEaWRVcGRhdGVWaWV3U3RhdGUg
fHwgIW1fbmV4dFZpZXdTdGF0ZUNoYW5nZUNhbGxiYWNrSURzLmlzRW1wdHkoKSkKLSAgICAgICAg
bV9zZW5kRGlkVXBkYXRlVmlld1N0YXRlVGltZXIuc3RhcnRPbmVTaG90KDApOworICAgIGlmICht
X3dhbnRzRGlkVXBkYXRlQWN0aXZpdHlTdGF0ZSB8fCAhbV9uZXh0QWN0aXZpdHlTdGF0ZUNoYW5n
ZUNhbGxiYWNrSURzLmlzRW1wdHkoKSkKKyAgICAgICAgbV9zZW5kRGlkVXBkYXRlQWN0aXZpdHlT
dGF0ZVRpbWVyLnN0YXJ0T25lU2hvdCgwKTsKIH0KIAotdm9pZCBUaWxlZENvcmVBbmltYXRpb25E
cmF3aW5nQXJlYTo6ZGlkVXBkYXRlVmlld1N0YXRlVGltZXJGaXJlZCgpCit2b2lkIFRpbGVkQ29y
ZUFuaW1hdGlvbkRyYXdpbmdBcmVhOjpkaWRVcGRhdGVBY3Rpdml0eVN0YXRlVGltZXJGaXJlZCgp
CiB7CiAgICAgW0NBVHJhbnNhY3Rpb24gZmx1c2hdOwogCi0gICAgaWYgKG1fd2FudHNEaWRVcGRh
dGVWaWV3U3RhdGUpCi0gICAgICAgIG1fd2ViUGFnZS5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJv
eHk6OkRpZFVwZGF0ZVZpZXdTdGF0ZSgpKTsKKyAgICBpZiAobV93YW50c0RpZFVwZGF0ZUFjdGl2
aXR5U3RhdGUpCisgICAgICAgIG1fd2ViUGFnZS5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6
OkRpZFVwZGF0ZUFjdGl2aXR5U3RhdGUoKSk7CiAKLSAgICBmb3IgKHVpbnQ2NF90IGNhbGxiYWNr
SUQgOiBtX25leHRWaWV3U3RhdGVDaGFuZ2VDYWxsYmFja0lEcykKKyAgICBmb3IgKHVpbnQ2NF90
IGNhbGxiYWNrSUQgOiBtX25leHRBY3Rpdml0eVN0YXRlQ2hhbmdlQ2FsbGJhY2tJRHMpCiAgICAg
ICAgIG1fd2ViUGFnZS5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OlZvaWRDYWxsYmFjayhj
YWxsYmFja0lEKSk7CiAKLSAgICBtX25leHRWaWV3U3RhdGVDaGFuZ2VDYWxsYmFja0lEcy5jbGVh
cigpOwotICAgIG1fd2FudHNEaWRVcGRhdGVWaWV3U3RhdGUgPSBmYWxzZTsKKyAgICBtX25leHRB
Y3Rpdml0eVN0YXRlQ2hhbmdlQ2FsbGJhY2tJRHMuY2xlYXIoKTsKKyAgICBtX3dhbnRzRGlkVXBk
YXRlQWN0aXZpdHlTdGF0ZSA9IGZhbHNlOwogfQogCiB2b2lkIFRpbGVkQ29yZUFuaW1hdGlvbkRy
YXdpbmdBcmVhOjpzdXNwZW5kUGFpbnRpbmcoKQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>293502</attachid>
            <date>2016-10-31 17:25:08 -0700</date>
            <delta_ts>2016-10-31 17:25:50 -0700</delta_ts>
            <desc>Fix</desc>
            <filename>164254.4.patch</filename>
            <type>text/plain</type>
            <size>119062</size>
            <attacher name="Gavin Barraclough">barraclough</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIwODE5NykKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDU1IEBACisyMDE2LTEwLTMxICBHYXZpbiBC
YXJyYWNsb3VnaCAgPGJhcnJhY2xvdWdoQGFwcGxlLmNvbT4KKworICAgICAgICBSZW5hbWUgVmll
d1N0YXRlIHRvIEFjdGl2aXR5U3RhdGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTE2NDI1NAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIFdlIHBsYW4gdG8gYWRkIGEgY291cGxlIG1vcmUgZmxhZ3MgdG8gVmll
d1N0YXRlIHRoYXQgYXJlbid0IGRpcmVjdGx5IHJlbGF0ZWQgdG8gdGhlIHZpZXcKKyAgICAgICAg
aXRzZWxmIC0gd2hldGhlciB0aGVyZSBpcyBhbiBvbmdvaW5nIHBhZ2UgbG9hZCwgYW5kIHdoZXRo
ZXIgd2hldGhlciB0aGVyZSBpcyBhdWRpbyBwbGF5YmFjay4KKyAgICAgICAgVGhpcyB3aWxsIGFs
bG93IHZpZXdTdGF0ZSAobm93IGFjdGl2aXR5U3RhdGUpIHRvIGZ1bGx5IGRyaXZlIHRocm90dGxp
bmcgZGVjaXNpb25zLgorCisgICAgICAgIFJlbmFtaW5nIHRoaXMgYml0ZmllbGQgYWNjb3JkaW5n
bHkuCisgICAgICAgICogTW9kdWxlcy9nZW9sb2NhdGlvbi9HZW9sb2NhdGlvbkNvbnRyb2xsZXIu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6R2VvbG9jYXRpb25Db250cm9sbGVyOjpHZW9sb2NhdGlv
bkNvbnRyb2xsZXIpOgorICAgICAgICAoV2ViQ29yZTo6R2VvbG9jYXRpb25Db250cm9sbGVyOjp+
R2VvbG9jYXRpb25Db250cm9sbGVyKToKKyAgICAgICAgKFdlYkNvcmU6Okdlb2xvY2F0aW9uQ29u
dHJvbGxlcjo6YWN0aXZpdHlTdGF0ZURpZENoYW5nZSk6CisgICAgICAgIChXZWJDb3JlOjpHZW9s
b2NhdGlvbkNvbnRyb2xsZXI6OnZpZXdTdGF0ZURpZENoYW5nZSk6IERlbGV0ZWQuCisgICAgICAg
ICogTW9kdWxlcy9nZW9sb2NhdGlvbi9HZW9sb2NhdGlvbkNvbnRyb2xsZXIuaDoKKyAgICAgICAg
KiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogcGFnZS9BY3Rp
dml0eVN0YXRlLmg6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvVmlld1N0YXRlLmgu
CisgICAgICAgICogcGFnZS9BY3Rpdml0eVN0YXRlQ2hhbmdlT2JzZXJ2ZXIuaDogQ29waWVkIGZy
b20gU291cmNlL1dlYkNvcmUvcGFnZS9WaWV3U3RhdGVDaGFuZ2VPYnNlcnZlci5oLgorICAgICAg
ICAoV2ViQ29yZTo6QWN0aXZpdHlTdGF0ZUNoYW5nZU9ic2VydmVyOjp+QWN0aXZpdHlTdGF0ZUNo
YW5nZU9ic2VydmVyKToKKyAgICAgICAgKFdlYkNvcmU6OlZpZXdTdGF0ZUNoYW5nZU9ic2VydmVy
Ojp+Vmlld1N0YXRlQ2hhbmdlT2JzZXJ2ZXIpOiBEZWxldGVkLgorICAgICAgICAqIHBhZ2UvRm9j
dXNDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZvY3VzQ29udHJvbGxlcjo6Rm9j
dXNDb250cm9sbGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkZvY3VzQ29udHJvbGxlcjo6c2V0Rm9j
dXNlZCk6CisgICAgICAgIChXZWJDb3JlOjpGb2N1c0NvbnRyb2xsZXI6OnNldEFjdGl2aXR5U3Rh
dGUpOgorICAgICAgICAoV2ViQ29yZTo6Rm9jdXNDb250cm9sbGVyOjpzZXRBY3RpdmUpOgorICAg
ICAgICAoV2ViQ29yZTo6Rm9jdXNDb250cm9sbGVyOjpzZXRWaWV3U3RhdGUpOiBEZWxldGVkLgor
ICAgICAgICAqIHBhZ2UvRm9jdXNDb250cm9sbGVyLmg6CisgICAgICAgIChXZWJDb3JlOjpGb2N1
c0NvbnRyb2xsZXI6OmlzQWN0aXZlKToKKyAgICAgICAgKFdlYkNvcmU6OkZvY3VzQ29udHJvbGxl
cjo6aXNGb2N1c2VkKToKKyAgICAgICAgKFdlYkNvcmU6OkZvY3VzQ29udHJvbGxlcjo6Y29udGVu
dElzVmlzaWJsZSk6CisgICAgICAgICogcGFnZS9QYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlBhZ2U6OlBhZ2UpOgorICAgICAgICAoV2ViQ29yZTo6UGFnZTo6c2V0SXNJbldpbmRvdyk6Cisg
ICAgICAgIChXZWJDb3JlOjpQYWdlOjphZGRBY3Rpdml0eVN0YXRlQ2hhbmdlT2JzZXJ2ZXIpOgor
ICAgICAgICAoV2ViQ29yZTo6UGFnZTo6cmVtb3ZlQWN0aXZpdHlTdGF0ZUNoYW5nZU9ic2VydmVy
KToKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2U6OnVwZGF0ZVRpbWVyVGhyb3R0bGluZ1N0YXRlKToK
KyAgICAgICAgKFdlYkNvcmU6OlBhZ2U6OnNldEFjdGl2aXR5U3RhdGUpOgorICAgICAgICAoV2Vi
Q29yZTo6UGFnZTo6aXNWaXNpYmxlQW5kQWN0aXZlKToKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2U6
OnNldElzVmlzaWJsZSk6CisgICAgICAgIChXZWJDb3JlOjpQYWdlOjphZGRWaWV3U3RhdGVDaGFu
Z2VPYnNlcnZlcik6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpQYWdlOjpyZW1vdmVWaWV3
U3RhdGVDaGFuZ2VPYnNlcnZlcik6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpQYWdlOjpz
ZXRWaWV3U3RhdGUpOiBEZWxldGVkLgorICAgICAgICAqIHBhZ2UvUGFnZS5oOgorICAgICAgICAo
V2ViQ29yZTo6UGFnZTo6aXNWaXNpYmxlKToKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2U6OmlzSW5X
aW5kb3cpOgorICAgICAgICAqIHBhZ2UvUGFnZVRocm90dGxlci5oOgorICAgICAgICAqIHBhZ2Uv
Vmlld1N0YXRlLmg6IFJlbW92ZWQuCisgICAgICAgICogcGFnZS9WaWV3U3RhdGVDaGFuZ2VPYnNl
cnZlci5oOiBSZW1vdmVkLgorCiAyMDE2LTEwLTMxICBOYW4gV2FuZyAgPG5fd2FuZ0BhcHBsZS5j
b20+CiAKICAgICAgICAgQVg6IGFyaWEtc29ydCBpcyBub3QgZXhwb3NlZCBvbiBpT1MKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvZ2VvbG9jYXRpb24vR2VvbG9jYXRpb25Db250cm9sbGVy
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2dlb2xvY2F0aW9uL0dl
b2xvY2F0aW9uQ29udHJvbGxlci5jcHAJKHJldmlzaW9uIDIwODE5NykKKysrIFNvdXJjZS9XZWJD
b3JlL01vZHVsZXMvZ2VvbG9jYXRpb24vR2VvbG9jYXRpb25Db250cm9sbGVyLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMzgsMTQgKzM4LDE0IEBAIEdlb2xvY2F0aW9uQ29udHJvbGxlcjo6R2VvbG9j
YXRpb25Db250cm8KICAgICA6IG1fcGFnZShwYWdlKQogICAgICwgbV9jbGllbnQoY2xpZW50KQog
ewotICAgIG1fcGFnZS5hZGRWaWV3U3RhdGVDaGFuZ2VPYnNlcnZlcigqdGhpcyk7CisgICAgbV9w
YWdlLmFkZEFjdGl2aXR5U3RhdGVDaGFuZ2VPYnNlcnZlcigqdGhpcyk7CiB9CiAKIEdlb2xvY2F0
aW9uQ29udHJvbGxlcjo6fkdlb2xvY2F0aW9uQ29udHJvbGxlcigpCiB7CiAgICAgQVNTRVJUKG1f
b2JzZXJ2ZXJzLmlzRW1wdHkoKSk7CiAKLSAgICAvLyBOT1RFOiBXZSBkb24ndCBoYXZlIHRvIHJl
bW92ZSBvdXJzZWx2ZXMgZnJvbSBwYWdlJ3MgVmlld1N0YXRlQ2hhbmdlT2JzZXJ2ZXIgc2V0LCBz
aW5jZQorICAgIC8vIE5PVEU6IFdlIGRvbid0IGhhdmUgdG8gcmVtb3ZlIG91cnNlbHZlcyBmcm9t
IHBhZ2UncyBBY3Rpdml0eVN0YXRlQ2hhbmdlT2JzZXJ2ZXIgc2V0LCBzaW5jZQogICAgIC8vIHdl
IGFyZSBzdXBwbGVtZW50IG9mIHRoZSBQYWdlLCBhbmQgb3VyIGRlc3RydWN0b3IgZ2V0dGluZyBj
YWxsZWQgbWVhbnMgdGhlIHBhZ2UgaXMgYmVpbmcKICAgICAvLyB0b3JuIGRvd24uCiAKQEAgLTEy
NCwxMiArMTI0LDEyIEBAIEdlb2xvY2F0aW9uUG9zaXRpb24qIEdlb2xvY2F0aW9uQ29udHJvbGwK
ICAgICByZXR1cm4gbV9jbGllbnQubGFzdFBvc2l0aW9uKCk7CiB9CiAKLXZvaWQgR2VvbG9jYXRp
b25Db250cm9sbGVyOjp2aWV3U3RhdGVEaWRDaGFuZ2UoVmlld1N0YXRlOjpGbGFncyBvbGRWaWV3
U3RhdGUsIFZpZXdTdGF0ZTo6RmxhZ3MgbmV3Vmlld1N0YXRlKQordm9pZCBHZW9sb2NhdGlvbkNv
bnRyb2xsZXI6OmFjdGl2aXR5U3RhdGVEaWRDaGFuZ2UoQWN0aXZpdHlTdGF0ZTo6RmxhZ3Mgb2xk
QWN0aXZpdHlTdGF0ZSwgQWN0aXZpdHlTdGF0ZTo6RmxhZ3MgbmV3QWN0aXZpdHlTdGF0ZSkKIHsK
ICAgICAvLyBUb2dnbGUgR1BTIGJhc2VkIG9uIHBhZ2UgdmlzaWJpbGl0eSB0byBzYXZlIGJhdHRl
cnkuCi0gICAgVmlld1N0YXRlOjpGbGFncyBjaGFuZ2VkID0gb2xkVmlld1N0YXRlIF4gbmV3Vmll
d1N0YXRlOwotICAgIGlmIChjaGFuZ2VkICYgVmlld1N0YXRlOjpJc1Zpc2libGUgJiYgIW1fb2Jz
ZXJ2ZXJzLmlzRW1wdHkoKSkgewotICAgICAgICBpZiAobmV3Vmlld1N0YXRlICYgVmlld1N0YXRl
OjpJc1Zpc2libGUpCisgICAgQWN0aXZpdHlTdGF0ZTo6RmxhZ3MgY2hhbmdlZCA9IG9sZEFjdGl2
aXR5U3RhdGUgXiBuZXdBY3Rpdml0eVN0YXRlOworICAgIGlmIChjaGFuZ2VkICYgQWN0aXZpdHlT
dGF0ZTo6SXNWaXNpYmxlICYmICFtX29ic2VydmVycy5pc0VtcHR5KCkpIHsKKyAgICAgICAgaWYg
KG5ld0FjdGl2aXR5U3RhdGUgJiBBY3Rpdml0eVN0YXRlOjpJc1Zpc2libGUpCiAgICAgICAgICAg
ICBtX2NsaWVudC5zdGFydFVwZGF0aW5nKCk7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIG1f
Y2xpZW50LnN0b3BVcGRhdGluZygpOwpJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy9nZW9s
b2NhdGlvbi9HZW9sb2NhdGlvbkNvbnRyb2xsZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2dlb2xvY2F0aW9uL0dlb2xvY2F0aW9uQ29udHJvbGxlci5oCShyZXZpc2lv
biAyMDgxOTcpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2dlb2xvY2F0aW9uL0dlb2xvY2F0
aW9uQ29udHJvbGxlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0yOCw5ICsyOCw5IEBACiAKICNpZiBF
TkFCTEUoR0VPTE9DQVRJT04pCiAKKyNpbmNsdWRlICJBY3Rpdml0eVN0YXRlQ2hhbmdlT2JzZXJ2
ZXIuaCIKICNpbmNsdWRlICJHZW9sb2NhdGlvbi5oIgogI2luY2x1ZGUgIlBhZ2UuaCIKLSNpbmNs
dWRlICJWaWV3U3RhdGVDaGFuZ2VPYnNlcnZlci5oIgogI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+
CiAjaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+CiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgpA
QCAtNDIsNyArNDIsNyBAQCBjbGFzcyBHZW9sb2NhdGlvbkVycm9yOwogY2xhc3MgR2VvbG9jYXRp
b25Qb3NpdGlvbjsKIGNsYXNzIFBhZ2U7CiAKLWNsYXNzIEdlb2xvY2F0aW9uQ29udHJvbGxlciA6
IHB1YmxpYyBTdXBwbGVtZW50PFBhZ2U+LCBwcml2YXRlIFZpZXdTdGF0ZUNoYW5nZU9ic2VydmVy
IHsKK2NsYXNzIEdlb2xvY2F0aW9uQ29udHJvbGxlciA6IHB1YmxpYyBTdXBwbGVtZW50PFBhZ2U+
LCBwcml2YXRlIEFjdGl2aXR5U3RhdGVDaGFuZ2VPYnNlcnZlciB7CiAgICAgV1RGX01BS0VfRkFT
VF9BTExPQ0FURUQ7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoR2VvbG9jYXRpb25Db250cm9s
bGVyKTsKIHB1YmxpYzoKQEAgLTY5LDcgKzY5LDcgQEAgcHJpdmF0ZToKICAgICBQYWdlJiBtX3Bh
Z2U7CiAgICAgR2VvbG9jYXRpb25DbGllbnQmIG1fY2xpZW50OwogCi0gICAgdm9pZCB2aWV3U3Rh
dGVEaWRDaGFuZ2UoVmlld1N0YXRlOjpGbGFncyBvbGRWaWV3U3RhdGUsIFZpZXdTdGF0ZTo6Rmxh
Z3MgbmV3Vmlld1N0YXRlKSBvdmVycmlkZTsKKyAgICB2b2lkIGFjdGl2aXR5U3RhdGVEaWRDaGFu
Z2UoQWN0aXZpdHlTdGF0ZTo6RmxhZ3Mgb2xkQWN0aXZpdHlTdGF0ZSwgQWN0aXZpdHlTdGF0ZTo6
RmxhZ3MgbmV3QWN0aXZpdHlTdGF0ZSkgb3ZlcnJpZGU7CiAKICAgICBSZWZQdHI8R2VvbG9jYXRp
b25Qb3NpdGlvbj4gbV9sYXN0UG9zaXRpb247CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1dlYkNv
cmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDIwODE5NykKKysr
IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2lu
ZyBjb3B5KQpAQCAtMjY4Niw2ICsyNjg2LDggQEAKIAkJNzI0RUQzMkMxQTNBN0U1NDAwRjVGMTND
IC8qIEVYVEJsZW5kTWluTWF4LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDcyNEVEMzI5MUEzQTdFNTQwMEY1RjEzQyAvKiBFWFRCbGVuZE1pbk1heC5j
cHAgKi87IH07CiAJCTcyNEVEMzMxMUEzQThCMjMwMEY1RjEzQyAvKiBKU0VYVEJsZW5kTWluTWF4
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDcyNEVE
MzJGMUEzQThCMjMwMEY1RjEzQyAvKiBKU0VYVEJsZW5kTWluTWF4LmNwcCAqLzsgfTsKIAkJNzI0
RUQzMzIxQTNBOEIyMzAwRjVGMTNDIC8qIEpTRVhUQmxlbmRNaW5NYXguaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDcyNEVEMzMwMUEzQThCMjMwMEY1RjEz
QyAvKiBKU0VYVEJsZW5kTWluTWF4LmggKi87IH07CisJCTcyNEVFNTUwMURDODBEN0YwMEE5MUZG
QiAvKiBBY3Rpdml0eVN0YXRlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA3MjRFRTU0RTFEQzdGMjVCMDBBOTFGRkIgLyogQWN0aXZpdHlTdGF0ZS5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTcyNEVFNTUx
MURDODBEODQwMEE5MUZGQiAvKiBBY3Rpdml0eVN0YXRlQ2hhbmdlT2JzZXJ2ZXIuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDcyNEVFNTRGMURDN0YyNUIw
MEE5MUZGQiAvKiBBY3Rpdml0eVN0YXRlQ2hhbmdlT2JzZXJ2ZXIuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk3MjdBRkVENDFBMkVBNkFFMDAwNDQy
RTggLyogRVhUc1JHQi5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA3MjdBRkVEMTFBMkVBNkEwMDAwNDQyRTggLyogRVhUc1JHQi5jcHAgKi87IH07CiAJ
CTcyRTQxNzYzMUEyRThEMkYwMDRDNTYyQSAvKiBKU0VYVHNSR0IuY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzJFNDE3NjExQTJFOEQyRjAwNEM1NjJB
IC8qIEpTRVhUc1JHQi5jcHAgKi87IH07CiAJCTcyRjFBREEyMUEzOTA0REMwMDAxNEUxOCAvKiBF
WFRGcmFnRGVwdGguY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNzJGMUFEOUYxQTM5MDRDMzAwMDE0RTE4IC8qIEVYVEZyYWdEZXB0aC5jcHAgKi87IH07
CkBAIC0yODUxLDcgKzI4NTMsNiBAQAogCQk3Q0QwQkEwNTFCOEY3OUM5MDA1Q0VCQkUgLyogQWN0
aXZlRE9NQ2FsbGJhY2tNaWNyb3Rhc2suaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDdDRDBCQTAzMUI4Rjc5QzkwMDVDRUJCRSAvKiBBY3RpdmVET01DYWxs
YmFja01pY3JvdGFzay5oICovOyB9OwogCQk3Q0Q0OTRDQzFBODZFQjFEMDAwQTg3RUMgLyogUmVu
ZGVyQXR0YWNobWVudC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA3Q0Q0OTRDQTFBODZFQjFEMDAwQTg3RUMgLyogUmVuZGVyQXR0YWNobWVudC5jcHAg
Ki87IH07CiAJCTdDRDQ5NENEMUE4NkVCMUQwMDBBODdFQyAvKiBSZW5kZXJBdHRhY2htZW50Lmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3Q0Q0OTRDQjFB
ODZFQjFEMDAwQTg3RUMgLyogUmVuZGVyQXR0YWNobWVudC5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07Ci0JCTdDREVFRTFFMTk3NjEwRDcwMEUzNTJDRCAv
KiBWaWV3U3RhdGVDaGFuZ2VPYnNlcnZlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gN0NERUVFMUQxOTc2MTBENzAwRTM1MkNEIC8qIFZpZXdTdGF0ZUNo
YW5nZU9ic2VydmVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKIAkJN0NFNjgzNDQxOTIxNDNBODAwRjREOTI4IC8qIFVzZXJNZXNzYWdlSGFuZGxlckRl
c2NyaXB0b3IuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gN0NFNjgzNDIxOTIxNDNBODAwRjREOTI4IC8qIFVzZXJNZXNzYWdlSGFuZGxlckRlc2NyaXB0
b3IuY3BwICovOyB9OwogCQk3Q0U2ODM0NTE5MjE0M0E4MDBGNEQ5MjggLyogVXNlck1lc3NhZ2VI
YW5kbGVyRGVzY3JpcHRvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gN0NFNjgzNDMxOTIxNDNBODAwRjREOTI4IC8qIFVzZXJNZXNzYWdlSGFuZGxlckRl
c2NyaXB0b3IuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OwogCQk3Q0U2ODM0NzE5MjE4MjE1MDBGNEQ5MjggLyogVXNlck1lc3NhZ2VIYW5kbGVyRGVzY3Jp
cHRvclR5cGVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA3Q0U2ODM0NjE5MjE4MjE1MDBGNEQ5MjggLyogVXNlck1lc3NhZ2VIYW5kbGVyRGVzY3JpcHRv
clR5cGVzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
QEAgLTMxMjUsNyArMzEyNiw2IEBACiAJCTg2MkYxMkEwMThDMUREMDIwMDVDNTRBRiAvKiBIeXN0
ZXJlc2lzQWN0aXZpdHkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDg2MkYxMjlGMThDMURDRTQwMDVDNTRBRiAvKiBIeXN0ZXJlc2lzQWN0aXZpdHkuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk4NjUxMkVE
RTE1NEEyQUVGMDBBOTA0MjYgLyogUGVyZm9ybWFuY2VSZXNvdXJjZVRpbWluZy5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NjUxMkVEQjE1NEEyQUVF
MDBBOTA0MjYgLyogUGVyZm9ybWFuY2VSZXNvdXJjZVRpbWluZy5jcHAgKi87IH07CiAJCTg2NTEy
RURGMTU0QTJBRUYwMEE5MDQyNiAvKiBQZXJmb3JtYW5jZVJlc291cmNlVGltaW5nLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NjUxMkVEQzE1NEEyQUVG
MDBBOTA0MjYgLyogUGVyZm9ybWFuY2VSZXNvdXJjZVRpbWluZy5oICovOyB9OwotCQk4Njc4RDBC
QjE4NzhFODkxMDAzQUJERTYgLyogVmlld1N0YXRlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4Njc4RDBCQTE4NzhFODEwMDAzQUJERTYgLyogVmlld1N0
YXRlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJ
ODY4MTYwRDQxODc2NkEwQTAwMjFFNzlEIC8qIFVzZXJBY3Rpdml0eS5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NjgxNjBEMTE4NzY2OUM0MDAyMUU3
OUQgLyogVXNlckFjdGl2aXR5LmNwcCAqLzsgfTsKIAkJODY4MTYwRDUxODc2NkEwRTAwMjFFNzlE
IC8qIFVzZXJBY3Rpdml0eU1hYy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDg2ODE2MEQzMTg3NjY5RTcwMDIxRTc5RCAvKiBVc2VyQWN0aXZpdHlNYWMu
bW0gKi87IH07CiAJCTg2ODE2MEQ2MTg3NjZBMTMwMDIxRTc5RCAvKiBVc2VyQWN0aXZpdHkuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2ODE2MEQyMTg3
NjY5QzQwMDIxRTc5RCAvKiBVc2VyQWN0aXZpdHkuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtMTAwMTIsNiArMTAwMTIsOCBAQAogCQk3MjRFRDMy
QjFBM0E3RTU0MDBGNUYxM0MgLyogRVhUQmxlbmRNaW5NYXguaWRsICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsg
cGF0aCA9IEVYVEJsZW5kTWluTWF4LmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
NzI0RUQzMkYxQTNBOEIyMzAwRjVGMTNDIC8qIEpTRVhUQmxlbmRNaW5NYXguY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNFWFRCbGVuZE1pbk1heC5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTcyNEVEMzMwMUEzQThCMjMwMEY1RjEzQyAvKiBKU0VY
VEJsZW5kTWluTWF4LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTRVhUQmxl
bmRNaW5NYXguaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNzI0RUU1NEUxREM3RjI1
QjAwQTkxRkZCIC8qIEFjdGl2aXR5U3RhdGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gQWN0aXZpdHlTdGF0ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3MjRF
RTU0RjFEQzdGMjVCMDBBOTFGRkIgLyogQWN0aXZpdHlTdGF0ZUNoYW5nZU9ic2VydmVyLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEFjdGl2aXR5U3RhdGVDaGFuZ2VPYnNlcnZl
ci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3MjdBRkVEMTFBMkVBNkEwMDAwNDQy
RTggLyogRVhUc1JHQi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBF
WFRzUkdCLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzI3QUZFRDIxQTJFQTZB
MDAwMDQ0MkU4IC8qIEVYVHNSR0IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
RVhUc1JHQi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3MjdBRkVEMzFBMkVBNkEw
MDAwNDQyRTggLyogRVhUc1JHQi5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gRVhUc1JHQi5p
ZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xMDIwNiw3ICsxMDIwOCw2IEBACiAJ
CTdDRDBCQTAzMUI4Rjc5QzkwMDVDRUJCRSAvKiBBY3RpdmVET01DYWxsYmFja01pY3JvdGFzay5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBY3RpdmVET01DYWxsYmFja01pY3Jv
dGFzay5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3Q0Q0OTRDQTFBODZFQjFEMDAw
QTg3RUMgLyogUmVuZGVyQXR0YWNobWVudC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBSZW5kZXJBdHRhY2htZW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJN0NENDk0Q0IxQTg2RUIxRDAwMEE4N0VDIC8qIFJlbmRlckF0dGFjaG1lbnQuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVuZGVyQXR0YWNobWVudC5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwotCQk3Q0RFRUUxRDE5NzYxMEQ3MDBFMzUyQ0QgLyogVmlld1N0
YXRlQ2hhbmdlT2JzZXJ2ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVmll
d1N0YXRlQ2hhbmdlT2JzZXJ2ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0NF
NjgzNDIxOTIxNDNBODAwRjREOTI4IC8qIFVzZXJNZXNzYWdlSGFuZGxlckRlc2NyaXB0b3IuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gVXNlck1lc3NhZ2VIYW5kbGVy
RGVzY3JpcHRvci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdDRTY4MzQzMTky
MTQzQTgwMEY0RDkyOCAvKiBVc2VyTWVzc2FnZUhhbmRsZXJEZXNjcmlwdG9yLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFVzZXJNZXNzYWdlSGFuZGxlckRlc2NyaXB0b3IuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0NFNjgzNDYxOTIxODIxNTAwRjREOTI4IC8q
IFVzZXJNZXNzYWdlSGFuZGxlckRlc2NyaXB0b3JUeXBlcy5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBVc2VyTWVzc2FnZUhhbmRsZXJEZXNjcmlwdG9yVHlwZXMuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTEwNTM5LDcgKzEwNTQwLDYgQEAKIAkJODY1MTJFREIx
NTRBMkFFRTAwQTkwNDI2IC8qIFBlcmZvcm1hbmNlUmVzb3VyY2VUaW1pbmcuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUGVyZm9ybWFuY2VSZXNvdXJjZVRpbWluZy5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTg2NTEyRURDMTU0QTJBRUYwMEE5MDQy
NiAvKiBQZXJmb3JtYW5jZVJlc291cmNlVGltaW5nLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IFBlcmZvcm1hbmNlUmVzb3VyY2VUaW1pbmcuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJODY1MTJFREQxNTRBMkFFRjAwQTkwNDI2IC8qIFBlcmZvcm1hbmNlUmVzb3Vy
Y2VUaW1pbmcuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IFBlcmZvcm1hbmNlUmVzb3VyY2VU
aW1pbmcuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk4Njc4RDBCQTE4NzhFODEw
MDAzQUJERTYgLyogVmlld1N0YXRlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFZpZXdTdGF0ZS5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4NjgxNjBEMTE4NzY2OUM0MDAyMUU3OUQgLyogVXNl
ckFjdGl2aXR5LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFVzZXJBY3Rpdml0eS5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTg2ODE2MEQyMTg3NjY5QzQwMDIxRTc5RCAvKiBVc2Vy
QWN0aXZpdHkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVXNlckFjdGl2aXR5Lmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTg2ODE2MEQzMTg3NjY5RTcwMDIxRTc5RCAvKiBVc2VyQWN0aXZpdHlN
YWMubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBVc2VyQWN0aXZpdHlNYWMubW07IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xNzU5Nyw2ICsxNzU5Nyw4IEBACiAJCQkJMThBNkNENkYw
RDhGMjAyNTAwMURDM0NFIC8qIGlvcyAqLywKIAkJCQk5M0MwOUE4MjBCMDY0RjA1MDA1QUJENEQg
LyogbWFjICovLAogCQkJCTFBRjYyRUUxMTREQTIyQTcwMDQxNTU2QyAvKiBzY3JvbGxpbmcgKi8s
CisJCQkJNzI0RUU1NEUxREM3RjI1QjAwQTkxRkZCIC8qIEFjdGl2aXR5U3RhdGUuaCAqLywKKwkJ
CQk3MjRFRTU0RjFEQzdGMjVCMDBBOTFGRkIgLyogQWN0aXZpdHlTdGF0ZUNoYW5nZU9ic2VydmVy
LmggKi8sCiAJCQkJQkNGNDhDRTYxMzcwRDExNDAwNEU4N0Q2IC8qIEFkanVzdFZpZXdTaXplT3JO
b3QuaCAqLywKIAkJCQlDRURBMTJENjE1MkNBMUNCMDBEOUUwOEQgLyogQWx0ZXJuYXRpdmVUZXh0
Q2xpZW50LmggKi8sCiAJCQkJNDU4MzBENEIxNjc5QjRGODAwQUNGOEMzIC8qIEF1dG9zY3JvbGxD
b250cm9sbGVyLmNwcCAqLywKQEAgLTE3Nzk2LDggKzE3Nzk4LDYgQEAKIAkJCQlGNTEzQTNFOTE1
RkY0ODQxMDAxNTI2REIgLyogVmFsaWRhdGlvbk1lc3NhZ2VDbGllbnQuaCAqLywKIAkJCQkyNkY5
QTgzNjE4QTA0NkFDMDBBRUI4OEEgLyogVmlld3BvcnRDb25maWd1cmF0aW9uLmNwcCAqLywKIAkJ
CQkyNkY5QTgzNzE4QTA0NkFDMDBBRUI4OEEgLyogVmlld3BvcnRDb25maWd1cmF0aW9uLmggKi8s
Ci0JCQkJODY3OEQwQkExODc4RTgxMDAwM0FCREU2IC8qIFZpZXdTdGF0ZS5oICovLAotCQkJCTdD
REVFRTFEMTk3NjEwRDcwMEUzNTJDRCAvKiBWaWV3U3RhdGVDaGFuZ2VPYnNlcnZlci5oICovLAog
CQkJCTFBRjRDRUVCMThCQzNDMUIwMEJDMkQzNCAvKiBWaXNpdGVkTGlua1N0b3JlLmNwcCAqLywK
IAkJCQkxQUJBN0ZGRjE4OTczNDEyMDBEQ0U5RDYgLyogVmlzaXRlZExpbmtTdG9yZS5oICovLAog
CQkJCUJFOTgzRDk1MDUyQTJFMEEwMDg5MkQ4NSAvKiBXZWJDb3JlS2V5Ym9hcmRVSU1vZGUuaCAq
LywKQEAgLTI2NDA1LDYgKzI2NDA1LDcgQEAKIAkJCQlDOTA4NDNEMDFCMThFNDdEMDBCNjg1NjQg
LyogTWVkaWFSZW1vdGVDb250cm9scy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQ0Q4QUNBOEYxRDIz
OTcxOTAwRUNDNTlFIC8qIE1lZGlhUmVtb3RlU29mdExpbmsuaCBpbiBIZWFkZXJzICovLAogCQkJ
CUNEOEFDQThCMUQyMzk0NjQwMEVDQzU5RSAvKiBNZWRpYVJlbW90ZVNQSS5oIGluIEhlYWRlcnMg
Ki8sCisJCQkJNzI0RUU1NTExREM4MEQ4NDAwQTkxRkZCIC8qIEFjdGl2aXR5U3RhdGVDaGFuZ2VP
YnNlcnZlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQ0VFRkNEN0ExOURCMzFGNzAwMzg3NkQ3IC8q
IE1lZGlhUmVzb3VyY2VMb2FkZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTFCRjlEQjNDMUQzOTcz
QUQwMDI2QUVCNyAvKiBNZWRpYVNhbXBsZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUIxMjREOEQx
RDM4MEI3MDAwRUNERkIwIC8qIE1lZGlhU2FtcGxlQVZGT2JqQy5oIGluIEhlYWRlcnMgKi8sCkBA
IC0yNzcxMiw4ICsyNzcxMyw2IEBACiAJCQkJQ0VGNDE4Q0YxMTc5Njc4QzAwOUQxMTJDIC8qIFZp
ZXdwb3J0QXJndW1lbnRzLmggaW4gSGVhZGVycyAqLywKIAkJCQkyNkY5QTgzOTE4QTA0NkFDMDBB
RUI4OEEgLyogVmlld3BvcnRDb25maWd1cmF0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQkzRkZG
RjlBRTE1OUQ5QjA2MDAyMEJCRDUgLyogVmlld3BvcnRTdHlsZVJlc29sdmVyLmggaW4gSGVhZGVy
cyAqLywKLQkJCQk4Njc4RDBCQjE4NzhFODkxMDAzQUJERTYgLyogVmlld1N0YXRlLmggaW4gSGVh
ZGVycyAqLywKLQkJCQk3Q0RFRUUxRTE5NzYxMEQ3MDBFMzUyQ0QgLyogVmlld1N0YXRlQ2hhbmdl
T2JzZXJ2ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTkzMzA5RTIwMDk5RTY0OTIwMDU2RTU4MSAv
KiBWaXNpYmxlUG9zaXRpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCUE4ODNERjI4MEYzRDA0NUQw
MEYxOUJGNiAvKiBWaXNpYmxlU2VsZWN0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQk5MzMwOUUx
RTA5OUU2NDkyMDA1NkU1ODEgLyogVmlzaWJsZVVuaXRzLmggaW4gSGVhZGVycyAqLywKQEAgLTI3
ODc1LDYgKzI3ODc0LDcgQEAKIAkJCQlCMTBCNjk4MDE0MEMxNzQwMDBCQzFDMjYgLyogV2ViVlRU
VG9rZW4uaCBpbiBIZWFkZXJzICovLAogCQkJCUIxMEI2OTgyMTQwQzE3NDAwMEJDMUMyNiAvKiBX
ZWJWVFRUb2tlbml6ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUNEODIwMzEwMTM5NUFDRTcwMEY5
NTZDNiAvKiBXZWJXaW5kb3dBbmltYXRpb24uaCBpbiBIZWFkZXJzICovLAorCQkJCTcyNEVFNTUw
MURDODBEN0YwMEE5MUZGQiAvKiBBY3Rpdml0eVN0YXRlLmggaW4gSGVhZGVycyAqLywKIAkJCQlG
NTVCM0RFMDEyNTFGMTJEMDAzRUYyNjkgLyogV2Vla0lucHV0VHlwZS5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJODUwMzFCNTEwQTQ0RUZDNzAwRjk5MkUwIC8qIFdoZWVsRXZlbnQuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTJFQkJDM0Q4MUI2NTk4ODMwMEY1MjUzRCAvKiBXaGVlbEV2ZW50RGVsdGFGaWx0
ZXIuaCBpbiBIZWFkZXJzICovLApJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9BY3Rpdml0eVN0
YXRlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9BY3Rpdml0eVN0YXRlLmgJ
KHJldmlzaW9uIDIwODE5NykJKGZyb20gU291cmNlL1dlYkNvcmUvcGFnZS9WaWV3U3RhdGUuaDoy
MDgxOTcpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL0FjdGl2aXR5U3RhdGUuaAkod29ya2luZyBj
b3B5KQpAQCAtMCwwICsxLDQ2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisg
KiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICog
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKK25hbWVz
cGFjZSBXZWJDb3JlIHsKKworc3RydWN0IFZpZXdTdGF0ZSB7CisgICAgZW51bSB7CisgICAgICAg
IFdpbmRvd0lzQWN0aXZlID0gMSA8PCAwLAorICAgICAgICBJc0ZvY3VzZWQgPSAxIDw8IDEsCisg
ICAgICAgIElzVmlzaWJsZSA9IDEgPDwgMiwKKyAgICAgICAgSXNWaXNpYmxlT3JPY2NsdWRlZCA9
IDEgPDwgMywKKyAgICAgICAgSXNJbldpbmRvdyA9IDEgPDwgNCwKKyAgICAgICAgSXNWaXN1YWxs
eUlkbGUgPSAxIDw8IDUsCisgICAgfTsKKworICAgIHR5cGVkZWYgdW5zaWduZWQgRmxhZ3M7CisK
KyAgICBzdGF0aWMgY29uc3QgRmxhZ3MgTm9GbGFncyA9IDA7CisgICAgc3RhdGljIGNvbnN0IEZs
YWdzIEFsbEZsYWdzID0gV2luZG93SXNBY3RpdmUgfCBJc0ZvY3VzZWQgfCBJc1Zpc2libGUgfCBJ
c1Zpc2libGVPck9jY2x1ZGVkIHwgSXNJbldpbmRvdyB8IElzVmlzdWFsbHlJZGxlOworfTsKKwor
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9BY3Rpdml0
eVN0YXRlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9BY3Rpdml0eVN0YXRl
LmgJKHJldmlzaW9uIDIwODE5NykKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvQWN0aXZpdHlTdGF0
ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNyw3ICsyNyw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAotc3RydWN0IFZpZXdTdGF0ZSB7CitzdHJ1Y3QgQWN0aXZpdHlTdGF0ZSB7CiAgICAgZW51
bSB7CiAgICAgICAgIFdpbmRvd0lzQWN0aXZlID0gMSA8PCAwLAogICAgICAgICBJc0ZvY3VzZWQg
PSAxIDw8IDEsCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL0FjdGl2aXR5U3RhdGVDaGFuZ2VP
YnNlcnZlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvQWN0aXZpdHlTdGF0
ZUNoYW5nZU9ic2VydmVyLmgJKHJldmlzaW9uIDIwODE5NykJKGZyb20gU291cmNlL1dlYkNvcmUv
cGFnZS9WaWV3U3RhdGVDaGFuZ2VPYnNlcnZlci5oOjIwODE5NykKKysrIFNvdXJjZS9XZWJDb3Jl
L3BhZ2UvQWN0aXZpdHlTdGF0ZUNoYW5nZU9ic2VydmVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTAs
MCArMSw0MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
CisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiVmlld1N0
YXRlLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgVmlld1N0YXRlQ2hhbmdlT2Jz
ZXJ2ZXIgeworcHVibGljOgorICAgIHZpcnR1YWwgflZpZXdTdGF0ZUNoYW5nZU9ic2VydmVyKCkK
KyAgICB7CisgICAgfQorICAgIAorICAgIHZpcnR1YWwgdm9pZCB2aWV3U3RhdGVEaWRDaGFuZ2Uo
Vmlld1N0YXRlOjpGbGFncyBvbGRWaWV3U3RhdGUsIFZpZXdTdGF0ZTo6RmxhZ3MgbmV3Vmlld1N0
YXRlKSA9IDA7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9wYWdlL0FjdGl2aXR5U3RhdGVDaGFuZ2VPYnNlcnZlci5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3BhZ2UvQWN0aXZpdHlTdGF0ZUNoYW5nZU9ic2VydmVyLmgJKHJldmlzaW9u
IDIwODE5NykKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvQWN0aXZpdHlTdGF0ZUNoYW5nZU9ic2Vy
dmVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTI1LDE3ICsyNSwxNyBAQAogCiAjcHJhZ21hIG9uY2UK
IAotI2luY2x1ZGUgIlZpZXdTdGF0ZS5oIgorI2luY2x1ZGUgIkFjdGl2aXR5U3RhdGUuaCIKIAog
bmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBWaWV3U3RhdGVDaGFuZ2VPYnNlcnZlciB7Citj
bGFzcyBBY3Rpdml0eVN0YXRlQ2hhbmdlT2JzZXJ2ZXIgewogcHVibGljOgotICAgIHZpcnR1YWwg
flZpZXdTdGF0ZUNoYW5nZU9ic2VydmVyKCkKKyAgICB2aXJ0dWFsIH5BY3Rpdml0eVN0YXRlQ2hh
bmdlT2JzZXJ2ZXIoKQogICAgIHsKICAgICB9CiAgICAgCi0gICAgdmlydHVhbCB2b2lkIHZpZXdT
dGF0ZURpZENoYW5nZShWaWV3U3RhdGU6OkZsYWdzIG9sZFZpZXdTdGF0ZSwgVmlld1N0YXRlOjpG
bGFncyBuZXdWaWV3U3RhdGUpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgYWN0aXZpdHlTdGF0ZURp
ZENoYW5nZShBY3Rpdml0eVN0YXRlOjpGbGFncyBvbGRBY3Rpdml0eVN0YXRlLCBBY3Rpdml0eVN0
YXRlOjpGbGFncyBuZXdBY3Rpdml0eVN0YXRlKSA9IDA7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL0ZvY3VzQ29udHJvbGxlci5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9Gb2N1c0NvbnRyb2xsZXIuY3BwCShyZXZp
c2lvbiAyMDgxOTcpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL0ZvY3VzQ29udHJvbGxlci5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTMxMywxMCArMzEzLDEwIEBAIHN0YXRpYyBpbmxpbmUgaW50IHNo
YWRvd0FkanVzdGVkVGFiSW5kZXgKICAgICByZXR1cm4gZWxlbWVudC50YWJJbmRleCgpOwogfQog
Ci1Gb2N1c0NvbnRyb2xsZXI6OkZvY3VzQ29udHJvbGxlcihQYWdlJiBwYWdlLCBWaWV3U3RhdGU6
OkZsYWdzIHZpZXdTdGF0ZSkKK0ZvY3VzQ29udHJvbGxlcjo6Rm9jdXNDb250cm9sbGVyKFBhZ2Um
IHBhZ2UsIEFjdGl2aXR5U3RhdGU6OkZsYWdzIGFjdGl2aXR5U3RhdGUpCiAgICAgOiBtX3BhZ2Uo
cGFnZSkKICAgICAsIG1faXNDaGFuZ2luZ0ZvY3VzZWRGcmFtZShmYWxzZSkKLSAgICAsIG1fdmll
d1N0YXRlKHZpZXdTdGF0ZSkKKyAgICAsIG1fYWN0aXZpdHlTdGF0ZShhY3Rpdml0eVN0YXRlKQog
ICAgICwgbV9mb2N1c1JlcGFpbnRUaW1lcigqdGhpcywgJkZvY3VzQ29udHJvbGxlcjo6Zm9jdXNS
ZXBhaW50VGltZXJGaXJlZCkKIHsKIH0KQEAgLTM1OSw3ICszNTksNyBAQCBGcmFtZSYgRm9jdXND
b250cm9sbGVyOjpmb2N1c2VkT3JNYWluRnJhCiAKIHZvaWQgRm9jdXNDb250cm9sbGVyOjpzZXRG
b2N1c2VkKGJvb2wgZm9jdXNlZCkKIHsKLSAgICBtX3BhZ2Uuc2V0Vmlld1N0YXRlKGZvY3VzZWQg
PyBtX3ZpZXdTdGF0ZSB8IFZpZXdTdGF0ZTo6SXNGb2N1c2VkIDogbV92aWV3U3RhdGUgJiB+Vmll
d1N0YXRlOjpJc0ZvY3VzZWQpOworICAgIG1fcGFnZS5zZXRBY3Rpdml0eVN0YXRlKGZvY3VzZWQg
PyBtX2FjdGl2aXR5U3RhdGUgfCBBY3Rpdml0eVN0YXRlOjpJc0ZvY3VzZWQgOiBtX2FjdGl2aXR5
U3RhdGUgJiB+QWN0aXZpdHlTdGF0ZTo6SXNGb2N1c2VkKTsKIH0KIAogdm9pZCBGb2N1c0NvbnRy
b2xsZXI6OnNldEZvY3VzZWRJbnRlcm5hbChib29sIGZvY3VzZWQpCkBAIC04MjUsMjMgKzgyNSwy
MyBAQCBib29sIEZvY3VzQ29udHJvbGxlcjo6c2V0Rm9jdXNlZEVsZW1lbnQoCiAgICAgcmV0dXJu
IHRydWU7CiB9CiAKLXZvaWQgRm9jdXNDb250cm9sbGVyOjpzZXRWaWV3U3RhdGUoVmlld1N0YXRl
OjpGbGFncyB2aWV3U3RhdGUpCit2b2lkIEZvY3VzQ29udHJvbGxlcjo6c2V0QWN0aXZpdHlTdGF0
ZShBY3Rpdml0eVN0YXRlOjpGbGFncyBhY3Rpdml0eVN0YXRlKQogewotICAgIFZpZXdTdGF0ZTo6
RmxhZ3MgY2hhbmdlZCA9IG1fdmlld1N0YXRlIF4gdmlld1N0YXRlOwotICAgIG1fdmlld1N0YXRl
ID0gdmlld1N0YXRlOworICAgIEFjdGl2aXR5U3RhdGU6OkZsYWdzIGNoYW5nZWQgPSBtX2FjdGl2
aXR5U3RhdGUgXiBhY3Rpdml0eVN0YXRlOworICAgIG1fYWN0aXZpdHlTdGF0ZSA9IGFjdGl2aXR5
U3RhdGU7CiAKLSAgICBpZiAoY2hhbmdlZCAmIFZpZXdTdGF0ZTo6SXNGb2N1c2VkKQotICAgICAg
ICBzZXRGb2N1c2VkSW50ZXJuYWwodmlld1N0YXRlICYgVmlld1N0YXRlOjpJc0ZvY3VzZWQpOwot
ICAgIGlmIChjaGFuZ2VkICYgVmlld1N0YXRlOjpXaW5kb3dJc0FjdGl2ZSkgewotICAgICAgICBz
ZXRBY3RpdmVJbnRlcm5hbCh2aWV3U3RhdGUgJiBWaWV3U3RhdGU6OldpbmRvd0lzQWN0aXZlKTsK
LSAgICAgICAgaWYgKGNoYW5nZWQgJiBWaWV3U3RhdGU6OklzVmlzaWJsZSkKLSAgICAgICAgICAg
IHNldElzVmlzaWJsZUFuZEFjdGl2ZUludGVybmFsKHZpZXdTdGF0ZSAmIFZpZXdTdGF0ZTo6V2lu
ZG93SXNBY3RpdmUpOworICAgIGlmIChjaGFuZ2VkICYgQWN0aXZpdHlTdGF0ZTo6SXNGb2N1c2Vk
KQorICAgICAgICBzZXRGb2N1c2VkSW50ZXJuYWwoYWN0aXZpdHlTdGF0ZSAmIEFjdGl2aXR5U3Rh
dGU6OklzRm9jdXNlZCk7CisgICAgaWYgKGNoYW5nZWQgJiBBY3Rpdml0eVN0YXRlOjpXaW5kb3dJ
c0FjdGl2ZSkgeworICAgICAgICBzZXRBY3RpdmVJbnRlcm5hbChhY3Rpdml0eVN0YXRlICYgQWN0
aXZpdHlTdGF0ZTo6V2luZG93SXNBY3RpdmUpOworICAgICAgICBpZiAoY2hhbmdlZCAmIEFjdGl2
aXR5U3RhdGU6OklzVmlzaWJsZSkKKyAgICAgICAgICAgIHNldElzVmlzaWJsZUFuZEFjdGl2ZUlu
dGVybmFsKGFjdGl2aXR5U3RhdGUgJiBBY3Rpdml0eVN0YXRlOjpXaW5kb3dJc0FjdGl2ZSk7CiAg
ICAgfQogfQogCiB2b2lkIEZvY3VzQ29udHJvbGxlcjo6c2V0QWN0aXZlKGJvb2wgYWN0aXZlKQog
ewotICAgIG1fcGFnZS5zZXRWaWV3U3RhdGUoYWN0aXZlID8gbV92aWV3U3RhdGUgfCBWaWV3U3Rh
dGU6OldpbmRvd0lzQWN0aXZlIDogbV92aWV3U3RhdGUgJiB+Vmlld1N0YXRlOjpXaW5kb3dJc0Fj
dGl2ZSk7CisgICAgbV9wYWdlLnNldEFjdGl2aXR5U3RhdGUoYWN0aXZlID8gbV9hY3Rpdml0eVN0
YXRlIHwgQWN0aXZpdHlTdGF0ZTo6V2luZG93SXNBY3RpdmUgOiBtX2FjdGl2aXR5U3RhdGUgJiB+
QWN0aXZpdHlTdGF0ZTo6V2luZG93SXNBY3RpdmUpOwogfQogCiB2b2lkIEZvY3VzQ29udHJvbGxl
cjo6c2V0QWN0aXZlSW50ZXJuYWwoYm9vbCBhY3RpdmUpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9w
YWdlL0ZvY3VzQ29udHJvbGxlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2Uv
Rm9jdXNDb250cm9sbGVyLmgJKHJldmlzaW9uIDIwODE5NykKKysrIFNvdXJjZS9XZWJDb3JlL3Bh
Z2UvRm9jdXNDb250cm9sbGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTI1LDEwICsyNSwxMCBAQAog
CiAjcHJhZ21hIG9uY2UKIAorI2luY2x1ZGUgIkFjdGl2aXR5U3RhdGUuaCIKICNpbmNsdWRlICJG
b2N1c0RpcmVjdGlvbi5oIgogI2luY2x1ZGUgIkxheW91dFJlY3QuaCIKICNpbmNsdWRlICJUaW1l
ci5oIgotI2luY2x1ZGUgIlZpZXdTdGF0ZS5oIgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAj
aW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+CiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgpAQCAt
NTEsNyArNTEsNyBAQCBjbGFzcyBUcmVlU2NvcGU7CiBjbGFzcyBGb2N1c0NvbnRyb2xsZXIgewog
ICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEZvY3VzQ29udHJvbGxlcik7IFdURl9NQUtFX0ZBU1Rf
QUxMT0NBVEVEOwogcHVibGljOgotICAgIGV4cGxpY2l0IEZvY3VzQ29udHJvbGxlcihQYWdlJiwg
Vmlld1N0YXRlOjpGbGFncyk7CisgICAgZXhwbGljaXQgRm9jdXNDb250cm9sbGVyKFBhZ2UmLCBB
Y3Rpdml0eVN0YXRlOjpGbGFncyk7CiAKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldEZvY3Vz
ZWRGcmFtZShQYXNzUmVmUHRyPEZyYW1lPik7CiAgICAgRnJhbWUqIGZvY3VzZWRGcmFtZSgpIGNv
bnN0IHsgcmV0dXJuIG1fZm9jdXNlZEZyYW1lLmdldCgpOyB9CkBAIC02MiwxNSArNjIsMTUgQEAg
cHVibGljOgogCiAgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBzZXRGb2N1c2VkRWxlbWVudChFbGVt
ZW50KiwgUGFzc1JlZlB0cjxGcmFtZT4sIEZvY3VzRGlyZWN0aW9uID0gRm9jdXNEaXJlY3Rpb25O
b25lKTsKIAotICAgIHZvaWQgc2V0Vmlld1N0YXRlKFZpZXdTdGF0ZTo6RmxhZ3MpOworICAgIHZv
aWQgc2V0QWN0aXZpdHlTdGF0ZShBY3Rpdml0eVN0YXRlOjpGbGFncyk7CiAKICAgICBXRUJDT1JF
X0VYUE9SVCB2b2lkIHNldEFjdGl2ZShib29sKTsKLSAgICBib29sIGlzQWN0aXZlKCkgY29uc3Qg
eyByZXR1cm4gbV92aWV3U3RhdGUgJiBWaWV3U3RhdGU6OldpbmRvd0lzQWN0aXZlOyB9CisgICAg
Ym9vbCBpc0FjdGl2ZSgpIGNvbnN0IHsgcmV0dXJuIG1fYWN0aXZpdHlTdGF0ZSAmIEFjdGl2aXR5
U3RhdGU6OldpbmRvd0lzQWN0aXZlOyB9CiAKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldEZv
Y3VzZWQoYm9vbCk7Ci0gICAgYm9vbCBpc0ZvY3VzZWQoKSBjb25zdCB7IHJldHVybiBtX3ZpZXdT
dGF0ZSAmIFZpZXdTdGF0ZTo6SXNGb2N1c2VkOyB9CisgICAgYm9vbCBpc0ZvY3VzZWQoKSBjb25z
dCB7IHJldHVybiBtX2FjdGl2aXR5U3RhdGUgJiBBY3Rpdml0eVN0YXRlOjpJc0ZvY3VzZWQ7IH0K
IAotICAgIGJvb2wgY29udGVudElzVmlzaWJsZSgpIGNvbnN0IHsgcmV0dXJuIG1fdmlld1N0YXRl
ICYgVmlld1N0YXRlOjpJc1Zpc2libGU7IH0KKyAgICBib29sIGNvbnRlbnRJc1Zpc2libGUoKSBj
b25zdCB7IHJldHVybiBtX2FjdGl2aXR5U3RhdGUgJiBBY3Rpdml0eVN0YXRlOjpJc1Zpc2libGU7
IH0KIAogICAgIC8vIFRoZXNlIG1ldGhvZHMgYXJlIHVzZWQgaW4gV2ViQ29yZS9iaW5kaW5ncy9v
YmpjL0RPTS5tbS4KICAgICBXRUJDT1JFX0VYUE9SVCBFbGVtZW50KiBuZXh0Rm9jdXNhYmxlRWxl
bWVudChOb2RlJik7CkBAIC0xMTksNyArMTE5LDcgQEAgcHJpdmF0ZToKICAgICBQYWdlJiBtX3Bh
Z2U7CiAgICAgUmVmUHRyPEZyYW1lPiBtX2ZvY3VzZWRGcmFtZTsKICAgICBib29sIG1faXNDaGFu
Z2luZ0ZvY3VzZWRGcmFtZTsKLSAgICBWaWV3U3RhdGU6OkZsYWdzIG1fdmlld1N0YXRlOworICAg
IEFjdGl2aXR5U3RhdGU6OkZsYWdzIG1fYWN0aXZpdHlTdGF0ZTsKIAogICAgIFRpbWVyIG1fZm9j
dXNSZXBhaW50VGltZXI7CiAgICAgZG91YmxlIG1fZm9jdXNTZXRUaW1lOwpJbmRleDogU291cmNl
L1dlYkNvcmUvcGFnZS9QYWdlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdl
L1BhZ2UuY3BwCShyZXZpc2lvbiAyMDgxOTcpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2Uu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMCw2ICsyMCw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgi
CiAjaW5jbHVkZSAiUGFnZS5oIgogCisjaW5jbHVkZSAiQWN0aXZpdHlTdGF0ZUNoYW5nZU9ic2Vy
dmVyLmgiCiAjaW5jbHVkZSAiQWx0ZXJuYXRpdmVUZXh0Q2xpZW50LmgiCiAjaW5jbHVkZSAiQW5p
bWF0aW9uQ29udHJvbGxlci5oIgogI2luY2x1ZGUgIkFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlLmgi
CkBAIC05NCw3ICs5NSw2IEBACiAjaW5jbHVkZSAiVGV4dFJlc291cmNlRGVjb2Rlci5oIgogI2lu
Y2x1ZGUgIlVzZXJDb250ZW50UHJvdmlkZXIuaCIKICNpbmNsdWRlICJVc2VySW5wdXRCcmlkZ2Uu
aCIKLSNpbmNsdWRlICJWaWV3U3RhdGVDaGFuZ2VPYnNlcnZlci5oIgogI2luY2x1ZGUgIlZpc2l0
ZWRMaW5rU3RhdGUuaCIKICNpbmNsdWRlICJWaXNpdGVkTGlua1N0b3JlLmgiCiAjaW5jbHVkZSAi
Vm9pZENhbGxiYWNrLmgiCkBAIC0xNTYsNyArMTU2LDcgQEAgc3RhdGljIHZvaWQgbmV0d29ya1N0
YXRlQ2hhbmdlZChib29sIGlzTwogICAgIH0KIH0KIAotc3RhdGljIGNvbnN0IFZpZXdTdGF0ZTo6
RmxhZ3MgUGFnZUluaXRpYWxWaWV3U3RhdGUgPSBWaWV3U3RhdGU6OklzVmlzaWJsZSB8IFZpZXdT
dGF0ZTo6SXNJbldpbmRvdzsKK3N0YXRpYyBjb25zdCBBY3Rpdml0eVN0YXRlOjpGbGFncyBQYWdl
SW5pdGlhbEFjdGl2aXR5U3RhdGUgPSBBY3Rpdml0eVN0YXRlOjpJc1Zpc2libGUgfCBBY3Rpdml0
eVN0YXRlOjpJc0luV2luZG93OwogCiBQYWdlOjpQYWdlKFBhZ2VDb25maWd1cmF0aW9uJiYgcGFn
ZUNvbmZpZ3VyYXRpb24pCiAgICAgOiBtX2Nocm9tZShzdGQ6Om1ha2VfdW5pcXVlPENocm9tZT4o
KnRoaXMsICpwYWdlQ29uZmlndXJhdGlvbi5jaHJvbWVDbGllbnQpKQpAQCAtMTY0LDcgKzE2NCw3
IEBAIFBhZ2U6OlBhZ2UoUGFnZUNvbmZpZ3VyYXRpb24mJiBwYWdlQ29uZmkKICNpZiBFTkFCTEUo
RFJBR19TVVBQT1JUKQogICAgICwgbV9kcmFnQ29udHJvbGxlcihzdGQ6Om1ha2VfdW5pcXVlPERy
YWdDb250cm9sbGVyPigqdGhpcywgKnBhZ2VDb25maWd1cmF0aW9uLmRyYWdDbGllbnQpKQogI2Vu
ZGlmCi0gICAgLCBtX2ZvY3VzQ29udHJvbGxlcihzdGQ6Om1ha2VfdW5pcXVlPEZvY3VzQ29udHJv
bGxlcj4oKnRoaXMsIFBhZ2VJbml0aWFsVmlld1N0YXRlKSkKKyAgICAsIG1fZm9jdXNDb250cm9s
bGVyKHN0ZDo6bWFrZV91bmlxdWU8Rm9jdXNDb250cm9sbGVyPigqdGhpcywgUGFnZUluaXRpYWxB
Y3Rpdml0eVN0YXRlKSkKICNpZiBFTkFCTEUoQ09OVEVYVF9NRU5VUykKICAgICAsIG1fY29udGV4
dE1lbnVDb250cm9sbGVyKHN0ZDo6bWFrZV91bmlxdWU8Q29udGV4dE1lbnVDb250cm9sbGVyPigq
dGhpcywgKnBhZ2VDb25maWd1cmF0aW9uLmNvbnRleHRNZW51Q2xpZW50KSkKICNlbmRpZgpAQCAt
MjE0LDcgKzIxNCw3IEBAIFBhZ2U6OlBhZ2UoUGFnZUNvbmZpZ3VyYXRpb24mJiBwYWdlQ29uZmkK
ICAgICAsIG1fdGltZXJBbGlnbm1lbnRJbnRlcnZhbEluY3JlYXNlVGltZXIoKnRoaXMsICZQYWdl
Ojp0aW1lckFsaWdubWVudEludGVydmFsSW5jcmVhc2VUaW1lckZpcmVkKQogICAgICwgbV9pc0Vk
aXRhYmxlKGZhbHNlKQogICAgICwgbV9pc1ByZXJlbmRlcihmYWxzZSkKLSAgICAsIG1fdmlld1N0
YXRlKFBhZ2VJbml0aWFsVmlld1N0YXRlKQorICAgICwgbV9hY3Rpdml0eVN0YXRlKFBhZ2VJbml0
aWFsQWN0aXZpdHlTdGF0ZSkKICAgICAsIG1fcmVxdWVzdGVkTGF5b3V0TWlsZXN0b25lcygwKQog
ICAgICwgbV9oZWFkZXJIZWlnaHQoMCkKICAgICAsIG1fZm9vdGVySGVpZ2h0KDApCkBAIC0xMDEz
LDcgKzEwMTMsNyBAQCB1bnNpZ25lZCBQYWdlOjpwYWdlQ291bnQoKSBjb25zdAogCiB2b2lkIFBh
Z2U6OnNldElzSW5XaW5kb3coYm9vbCBpc0luV2luZG93KQogewotICAgIHNldFZpZXdTdGF0ZShp
c0luV2luZG93ID8gbV92aWV3U3RhdGUgfCBWaWV3U3RhdGU6OklzSW5XaW5kb3cgOiBtX3ZpZXdT
dGF0ZSAmIH5WaWV3U3RhdGU6OklzSW5XaW5kb3cpOworICAgIHNldEFjdGl2aXR5U3RhdGUoaXNJ
bldpbmRvdyA/IG1fYWN0aXZpdHlTdGF0ZSB8IEFjdGl2aXR5U3RhdGU6OklzSW5XaW5kb3cgOiBt
X2FjdGl2aXR5U3RhdGUgJiB+QWN0aXZpdHlTdGF0ZTo6SXNJbldpbmRvdyk7CiB9CiAKIHZvaWQg
UGFnZTo6c2V0SXNJbldpbmRvd0ludGVybmFsKGJvb2wgaXNJbldpbmRvdykKQEAgLTEwMjcsMTQg
KzEwMjcsMTQgQEAgdm9pZCBQYWdlOjpzZXRJc0luV2luZG93SW50ZXJuYWwoYm9vbCBpcwogICAg
ICAgICByZXN1bWVBbmltYXRpbmdJbWFnZXMoKTsKIH0KIAotdm9pZCBQYWdlOjphZGRWaWV3U3Rh
dGVDaGFuZ2VPYnNlcnZlcihWaWV3U3RhdGVDaGFuZ2VPYnNlcnZlciYgb2JzZXJ2ZXIpCit2b2lk
IFBhZ2U6OmFkZEFjdGl2aXR5U3RhdGVDaGFuZ2VPYnNlcnZlcihBY3Rpdml0eVN0YXRlQ2hhbmdl
T2JzZXJ2ZXImIG9ic2VydmVyKQogewotICAgIG1fdmlld1N0YXRlQ2hhbmdlT2JzZXJ2ZXJzLmFk
ZCgmb2JzZXJ2ZXIpOworICAgIG1fYWN0aXZpdHlTdGF0ZUNoYW5nZU9ic2VydmVycy5hZGQoJm9i
c2VydmVyKTsKIH0KIAotdm9pZCBQYWdlOjpyZW1vdmVWaWV3U3RhdGVDaGFuZ2VPYnNlcnZlcihW
aWV3U3RhdGVDaGFuZ2VPYnNlcnZlciYgb2JzZXJ2ZXIpCit2b2lkIFBhZ2U6OnJlbW92ZUFjdGl2
aXR5U3RhdGVDaGFuZ2VPYnNlcnZlcihBY3Rpdml0eVN0YXRlQ2hhbmdlT2JzZXJ2ZXImIG9ic2Vy
dmVyKQogewotICAgIG1fdmlld1N0YXRlQ2hhbmdlT2JzZXJ2ZXJzLnJlbW92ZSgmb2JzZXJ2ZXIp
OworICAgIG1fYWN0aXZpdHlTdGF0ZUNoYW5nZU9ic2VydmVycy5yZW1vdmUoJm9ic2VydmVyKTsK
IH0KIAogdm9pZCBQYWdlOjpzdXNwZW5kU2NyaXB0ZWRBbmltYXRpb25zKCkKQEAgLTEyMjAsMTQg
KzEyMjAsMTQgQEAgdm9pZCBQYWdlOjpoaWRkZW5QYWdlRE9NVGltZXJUaHJvdHRsaW5nUwogdm9p
ZCBQYWdlOjp1cGRhdGVUaW1lclRocm90dGxpbmdTdGF0ZSgpCiB7CiAgICAgLy8gVGltZXIgdGhy
b3R0bGluZyBkaXNhYmxlZCBpZiBwYWdlIGlzIHZpc3VhbGx5IGFjdGl2ZSwgb3IgZGlzYWJsZWQg
Ynkgc2V0dGluZy4KLSAgICBpZiAoIW1fc2V0dGluZ3MtPmhpZGRlblBhZ2VET01UaW1lclRocm90
dGxpbmdFbmFibGVkKCkgfHwgIShtX3ZpZXdTdGF0ZSAmIFZpZXdTdGF0ZTo6SXNWaXN1YWxseUlk
bGUpKSB7CisgICAgaWYgKCFtX3NldHRpbmdzLT5oaWRkZW5QYWdlRE9NVGltZXJUaHJvdHRsaW5n
RW5hYmxlZCgpIHx8ICEobV9hY3Rpdml0eVN0YXRlICYgQWN0aXZpdHlTdGF0ZTo6SXNWaXN1YWxs
eUlkbGUpKSB7CiAgICAgICAgIHNldFRpbWVyVGhyb3R0bGluZ1N0YXRlKFRpbWVyVGhyb3R0bGlu
Z1N0YXRlOjpEaXNhYmxlZCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKICAgICAvLyBJZiB0
aGUgcGFnZSBpcyB2aXNpYmxlIChidXQgaWRsZSksIHRoZXJlIGlzIGFueSBhY3Rpdml0eSAobG9h
ZGluZywgbWVkaWEgcGxheWluZywgZXRjKSwgb3IgcGVyIHNldHRpbmcsCiAgICAgLy8gd2UgYWxs
b3cgdGltZXIgdGhyb3R0bGluZywgYnV0IG5vdCBpbmNyZWFzaW5nIHRpbWVyIHRocm90dGxpbmcu
Ci0gICAgaWYgKCFtX3NldHRpbmdzLT5oaWRkZW5QYWdlRE9NVGltZXJUaHJvdHRsaW5nQXV0b0lu
Y3JlYXNlcygpIHx8IG1fdmlld1N0YXRlICYgVmlld1N0YXRlOjpJc1Zpc2libGUgfHwgbV9wYWdl
VGhyb3R0bGVyLmFjdGl2aXR5U3RhdGUoKSkgeworICAgIGlmICghbV9zZXR0aW5ncy0+aGlkZGVu
UGFnZURPTVRpbWVyVGhyb3R0bGluZ0F1dG9JbmNyZWFzZXMoKSB8fCBtX2FjdGl2aXR5U3RhdGUg
JiBBY3Rpdml0eVN0YXRlOjpJc1Zpc2libGUgfHwgbV9wYWdlVGhyb3R0bGVyLmFjdGl2aXR5U3Rh
dGUoKSkgewogICAgICAgICBzZXRUaW1lclRocm90dGxpbmdTdGF0ZShUaW1lclRocm90dGxpbmdT
dGF0ZTo6RW5hYmxlZCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CkBAIC0xNDM4LDMxICsxNDM4
LDMxIEBAIHZvaWQgUGFnZTo6cmVzdW1lQW5pbWF0aW5nSW1hZ2VzKCkKICAgICAgICAgdmlldy0+
cmVzdW1lVmlzaWJsZUltYWdlQW5pbWF0aW9uc0luY2x1ZGluZ1N1YmZyYW1lcygpOwogfQogCi12
b2lkIFBhZ2U6OnNldFZpZXdTdGF0ZShWaWV3U3RhdGU6OkZsYWdzIHZpZXdTdGF0ZSkKK3ZvaWQg
UGFnZTo6c2V0QWN0aXZpdHlTdGF0ZShBY3Rpdml0eVN0YXRlOjpGbGFncyBhY3Rpdml0eVN0YXRl
KQogewotICAgIFZpZXdTdGF0ZTo6RmxhZ3MgY2hhbmdlZCA9IG1fdmlld1N0YXRlIF4gdmlld1N0
YXRlOworICAgIEFjdGl2aXR5U3RhdGU6OkZsYWdzIGNoYW5nZWQgPSBtX2FjdGl2aXR5U3RhdGUg
XiBhY3Rpdml0eVN0YXRlOwogICAgIGlmICghY2hhbmdlZCkKICAgICAgICAgcmV0dXJuOwogCi0g
ICAgVmlld1N0YXRlOjpGbGFncyBvbGRWaWV3U3RhdGUgPSBtX3ZpZXdTdGF0ZTsKKyAgICBBY3Rp
dml0eVN0YXRlOjpGbGFncyBvbGRBY3Rpdml0eVN0YXRlID0gbV9hY3Rpdml0eVN0YXRlOwogCiAg
ICAgYm9vbCB3YXNWaXNpYmxlQW5kQWN0aXZlID0gaXNWaXNpYmxlQW5kQWN0aXZlKCk7Ci0gICAg
bV92aWV3U3RhdGUgPSB2aWV3U3RhdGU7CisgICAgbV9hY3Rpdml0eVN0YXRlID0gYWN0aXZpdHlT
dGF0ZTsKIAotICAgIG1fZm9jdXNDb250cm9sbGVyLT5zZXRWaWV3U3RhdGUodmlld1N0YXRlKTsK
KyAgICBtX2ZvY3VzQ29udHJvbGxlci0+c2V0QWN0aXZpdHlTdGF0ZShhY3Rpdml0eVN0YXRlKTsK
IAotICAgIGlmIChjaGFuZ2VkICYgVmlld1N0YXRlOjpJc1Zpc2libGUpCi0gICAgICAgIHNldElz
VmlzaWJsZUludGVybmFsKHZpZXdTdGF0ZSAmIFZpZXdTdGF0ZTo6SXNWaXNpYmxlKTsKLSAgICBp
ZiAoY2hhbmdlZCAmIFZpZXdTdGF0ZTo6SXNJbldpbmRvdykKLSAgICAgICAgc2V0SXNJbldpbmRv
d0ludGVybmFsKHZpZXdTdGF0ZSAmIFZpZXdTdGF0ZTo6SXNJbldpbmRvdyk7Ci0gICAgaWYgKGNo
YW5nZWQgJiBWaWV3U3RhdGU6OklzVmlzdWFsbHlJZGxlKQotICAgICAgICBzZXRJc1Zpc3VhbGx5
SWRsZUludGVybmFsKHZpZXdTdGF0ZSAmIFZpZXdTdGF0ZTo6SXNWaXN1YWxseUlkbGUpOworICAg
IGlmIChjaGFuZ2VkICYgQWN0aXZpdHlTdGF0ZTo6SXNWaXNpYmxlKQorICAgICAgICBzZXRJc1Zp
c2libGVJbnRlcm5hbChhY3Rpdml0eVN0YXRlICYgQWN0aXZpdHlTdGF0ZTo6SXNWaXNpYmxlKTsK
KyAgICBpZiAoY2hhbmdlZCAmIEFjdGl2aXR5U3RhdGU6OklzSW5XaW5kb3cpCisgICAgICAgIHNl
dElzSW5XaW5kb3dJbnRlcm5hbChhY3Rpdml0eVN0YXRlICYgQWN0aXZpdHlTdGF0ZTo6SXNJbldp
bmRvdyk7CisgICAgaWYgKGNoYW5nZWQgJiBBY3Rpdml0eVN0YXRlOjpJc1Zpc3VhbGx5SWRsZSkK
KyAgICAgICAgc2V0SXNWaXN1YWxseUlkbGVJbnRlcm5hbChhY3Rpdml0eVN0YXRlICYgQWN0aXZp
dHlTdGF0ZTo6SXNWaXN1YWxseUlkbGUpOwogCi0gICAgaWYgKGNoYW5nZWQgJiAoVmlld1N0YXRl
OjpJc1Zpc2libGUgfCBWaWV3U3RhdGU6OklzVmlzdWFsbHlJZGxlKSkKKyAgICBpZiAoY2hhbmdl
ZCAmIChBY3Rpdml0eVN0YXRlOjpJc1Zpc2libGUgfCBBY3Rpdml0eVN0YXRlOjpJc1Zpc3VhbGx5
SWRsZSkpCiAgICAgICAgIHVwZGF0ZVRpbWVyVGhyb3R0bGluZ1N0YXRlKCk7CiAKLSAgICBmb3Ig
KGF1dG8qIG9ic2VydmVyIDogbV92aWV3U3RhdGVDaGFuZ2VPYnNlcnZlcnMpCi0gICAgICAgIG9i
c2VydmVyLT52aWV3U3RhdGVEaWRDaGFuZ2Uob2xkVmlld1N0YXRlLCBtX3ZpZXdTdGF0ZSk7Cisg
ICAgZm9yIChhdXRvKiBvYnNlcnZlciA6IG1fYWN0aXZpdHlTdGF0ZUNoYW5nZU9ic2VydmVycykK
KyAgICAgICAgb2JzZXJ2ZXItPmFjdGl2aXR5U3RhdGVEaWRDaGFuZ2Uob2xkQWN0aXZpdHlTdGF0
ZSwgbV9hY3Rpdml0eVN0YXRlKTsKIAogICAgIGlmICh3YXNWaXNpYmxlQW5kQWN0aXZlICE9IGlz
VmlzaWJsZUFuZEFjdGl2ZSgpKQogICAgICAgICBQbGF0Zm9ybU1lZGlhU2Vzc2lvbk1hbmFnZXI6
OnVwZGF0ZU5vd1BsYXlpbmdJbmZvSWZOZWNlc3NhcnkoKTsKQEAgLTE0NzAsMTUgKzE0NzAsMTUg
QEAgdm9pZCBQYWdlOjpzZXRWaWV3U3RhdGUoVmlld1N0YXRlOjpGbGFncwogCiBib29sIFBhZ2U6
OmlzVmlzaWJsZUFuZEFjdGl2ZSgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIChtX3ZpZXdTdGF0ZSAm
IFZpZXdTdGF0ZTo6SXNWaXNpYmxlKSAmJiAobV92aWV3U3RhdGUgJiBWaWV3U3RhdGU6OldpbmRv
d0lzQWN0aXZlKTsKKyAgICByZXR1cm4gKG1fYWN0aXZpdHlTdGF0ZSAmIEFjdGl2aXR5U3RhdGU6
OklzVmlzaWJsZSkgJiYgKG1fYWN0aXZpdHlTdGF0ZSAmIEFjdGl2aXR5U3RhdGU6OldpbmRvd0lz
QWN0aXZlKTsKIH0KIAogdm9pZCBQYWdlOjpzZXRJc1Zpc2libGUoYm9vbCBpc1Zpc2libGUpCiB7
CiAgICAgaWYgKGlzVmlzaWJsZSkKLSAgICAgICAgc2V0Vmlld1N0YXRlKChtX3ZpZXdTdGF0ZSAm
IH5WaWV3U3RhdGU6OklzVmlzdWFsbHlJZGxlKSB8IFZpZXdTdGF0ZTo6SXNWaXNpYmxlIHwgVmll
d1N0YXRlOjpJc1Zpc2libGVPck9jY2x1ZGVkKTsKKyAgICAgICAgc2V0QWN0aXZpdHlTdGF0ZSgo
bV9hY3Rpdml0eVN0YXRlICYgfkFjdGl2aXR5U3RhdGU6OklzVmlzdWFsbHlJZGxlKSB8IEFjdGl2
aXR5U3RhdGU6OklzVmlzaWJsZSB8IEFjdGl2aXR5U3RhdGU6OklzVmlzaWJsZU9yT2NjbHVkZWQp
OwogICAgIGVsc2UKLSAgICAgICAgc2V0Vmlld1N0YXRlKChtX3ZpZXdTdGF0ZSAmIH4oVmlld1N0
YXRlOjpJc1Zpc2libGUgfCBWaWV3U3RhdGU6OklzVmlzaWJsZU9yT2NjbHVkZWQpKSB8IFZpZXdT
dGF0ZTo6SXNWaXN1YWxseUlkbGUpOworICAgICAgICBzZXRBY3Rpdml0eVN0YXRlKChtX2FjdGl2
aXR5U3RhdGUgJiB+KEFjdGl2aXR5U3RhdGU6OklzVmlzaWJsZSB8IEFjdGl2aXR5U3RhdGU6Oklz
VmlzaWJsZU9yT2NjbHVkZWQpKSB8IEFjdGl2aXR5U3RhdGU6OklzVmlzdWFsbHlJZGxlKTsKIH0K
IAogdm9pZCBQYWdlOjpzZXRJc1Zpc2libGVJbnRlcm5hbChib29sIGlzVmlzaWJsZSkKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L3BhZ2UvUGFnZS5oCShyZXZpc2lvbiAyMDgxOTcpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL1Bh
Z2UuaAkod29ya2luZyBjb3B5KQpAQCAtMjAsNiArMjAsNyBAQAogCiAjcHJhZ21hIG9uY2UKIAor
I2luY2x1ZGUgIkFjdGl2aXR5U3RhdGUuaCIKICNpbmNsdWRlICJGaW5kT3B0aW9ucy5oIgogI2lu
Y2x1ZGUgIkZyYW1lTG9hZGVyVHlwZXMuaCIKICNpbmNsdWRlICJMYXlvdXRNaWxlc3RvbmVzLmgi
CkBAIC0zNCw3ICszNSw2IEBACiAjaW5jbHVkZSAiU2Vzc2lvbklELmgiCiAjaW5jbHVkZSAiU3Vw
cGxlbWVudGFibGUuaCIKICNpbmNsdWRlICJVc2VySW50ZXJmYWNlTGF5b3V0RGlyZWN0aW9uLmgi
Ci0jaW5jbHVkZSAiVmlld1N0YXRlLmgiCiAjaW5jbHVkZSAiVmlld3BvcnRBcmd1bWVudHMuaCIK
ICNpbmNsdWRlICJXaGVlbEV2ZW50VGVzdFRyaWdnZXIuaCIKICNpbmNsdWRlIDxtZW1vcnk+CkBA
IC0xMjYsNyArMTI2LDcgQEAgY2xhc3MgU3RvcmFnZU5hbWVzcGFjZTsKIGNsYXNzIFN0b3JhZ2VO
YW1lc3BhY2VQcm92aWRlcjsKIGNsYXNzIFVzZXJDb250ZW50UHJvdmlkZXI7CiBjbGFzcyBWYWxp
ZGF0aW9uTWVzc2FnZUNsaWVudDsKLWNsYXNzIFZpZXdTdGF0ZUNoYW5nZU9ic2VydmVyOworY2xh
c3MgQWN0aXZpdHlTdGF0ZUNoYW5nZU9ic2VydmVyOwogY2xhc3MgVmlzaXRlZExpbmtTdG9yZTsK
IAogdHlwZWRlZiB1aW50NjRfdCBMaW5rSGFzaDsKQEAgLTMzNCwyMiArMzM0LDIyIEBAIHB1Ymxp
YzoKICAgICBXRUJDT1JFX0VYUE9SVCBEaWFnbm9zdGljTG9nZ2luZ0NsaWVudCYgZGlhZ25vc3Rp
Y0xvZ2dpbmdDbGllbnQoKSBjb25zdDsKIAogICAgIC8vIE5vdGlmaWNhdGlvbnMgd2hlbiB0aGUg
UGFnZSBzdGFydHMgYW5kIHN0b3BzIGJlaW5nIHByZXNlbnRlZCB2aWEgYSBuYXRpdmUgd2luZG93
LgotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0Vmlld1N0YXRlKFZpZXdTdGF0ZTo6RmxhZ3Mp
OworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0QWN0aXZpdHlTdGF0ZShBY3Rpdml0eVN0YXRl
OjpGbGFncyk7CiAgICAgYm9vbCBpc1Zpc2libGVBbmRBY3RpdmUoKSBjb25zdDsKICAgICB2b2lk
IHBhZ2VBY3Rpdml0eVN0YXRlQ2hhbmdlZCgpIHsgdXBkYXRlVGltZXJUaHJvdHRsaW5nU3RhdGUo
KTsgfQogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0SXNWaXNpYmxlKGJvb2wpOwogICAgIFdF
QkNPUkVfRVhQT1JUIHZvaWQgc2V0SXNQcmVyZW5kZXIoKTsKLSAgICBib29sIGlzVmlzaWJsZSgp
IGNvbnN0IHsgcmV0dXJuIG1fdmlld1N0YXRlICYgVmlld1N0YXRlOjpJc1Zpc2libGU7IH0KKyAg
ICBib29sIGlzVmlzaWJsZSgpIGNvbnN0IHsgcmV0dXJuIG1fYWN0aXZpdHlTdGF0ZSAmIEFjdGl2
aXR5U3RhdGU6OklzVmlzaWJsZTsgfQogCiAgICAgLy8gTm90aWZpY2F0aW9uIHRoYXQgdGhpcyBQ
YWdlIHdhcyBtb3ZlZCBpbnRvIG9yIG91dCBvZiBhIG5hdGl2ZSB3aW5kb3cuCiAgICAgV0VCQ09S
RV9FWFBPUlQgdm9pZCBzZXRJc0luV2luZG93KGJvb2wpOwotICAgIGJvb2wgaXNJbldpbmRvdygp
IGNvbnN0IHsgcmV0dXJuIG1fdmlld1N0YXRlICYgVmlld1N0YXRlOjpJc0luV2luZG93OyB9Cisg
ICAgYm9vbCBpc0luV2luZG93KCkgY29uc3QgeyByZXR1cm4gbV9hY3Rpdml0eVN0YXRlICYgQWN0
aXZpdHlTdGF0ZTo6SXNJbldpbmRvdzsgfQogCiAgICAgdm9pZCBzZXRJc0Nsb3NpbmcoKSB7IG1f
aXNDbG9zaW5nID0gdHJ1ZTsgfQogICAgIGJvb2wgaXNDbG9zaW5nKCkgY29uc3QgeyByZXR1cm4g
bV9pc0Nsb3Npbmc7IH0KIAotICAgIHZvaWQgYWRkVmlld1N0YXRlQ2hhbmdlT2JzZXJ2ZXIoVmll
d1N0YXRlQ2hhbmdlT2JzZXJ2ZXImKTsKLSAgICB2b2lkIHJlbW92ZVZpZXdTdGF0ZUNoYW5nZU9i
c2VydmVyKFZpZXdTdGF0ZUNoYW5nZU9ic2VydmVyJik7CisgICAgdm9pZCBhZGRBY3Rpdml0eVN0
YXRlQ2hhbmdlT2JzZXJ2ZXIoQWN0aXZpdHlTdGF0ZUNoYW5nZU9ic2VydmVyJik7CisgICAgdm9p
ZCByZW1vdmVBY3Rpdml0eVN0YXRlQ2hhbmdlT2JzZXJ2ZXIoQWN0aXZpdHlTdGF0ZUNoYW5nZU9i
c2VydmVyJik7CiAKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHN1c3BlbmRTY3JpcHRlZEFuaW1h
dGlvbnMoKTsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHJlc3VtZVNjcmlwdGVkQW5pbWF0aW9u
cygpOwpAQCAtNjY2LDcgKzY2Niw3IEBAIHByaXZhdGU6CiAKICAgICBib29sIG1faXNFZGl0YWJs
ZTsKICAgICBib29sIG1faXNQcmVyZW5kZXI7Ci0gICAgVmlld1N0YXRlOjpGbGFncyBtX3ZpZXdT
dGF0ZTsKKyAgICBBY3Rpdml0eVN0YXRlOjpGbGFncyBtX2FjdGl2aXR5U3RhdGU7CiAgICAgUGFn
ZUFjdGl2aXR5U3RhdGU6OkZsYWdzIG1fcGFnZUFjdGl2aXR5U3RhdGU7CiAKICAgICBMYXlvdXRN
aWxlc3RvbmVzIG1fcmVxdWVzdGVkTGF5b3V0TWlsZXN0b25lczsKQEAgLTcxMSw3ICs3MTEsNyBA
QCBwcml2YXRlOgogICAgIFJlZjxWaXNpdGVkTGlua1N0b3JlPiBtX3Zpc2l0ZWRMaW5rU3RvcmU7
CiAgICAgUmVmUHRyPFdoZWVsRXZlbnRUZXN0VHJpZ2dlcj4gbV90ZXN0VHJpZ2dlcjsKIAotICAg
IEhhc2hTZXQ8Vmlld1N0YXRlQ2hhbmdlT2JzZXJ2ZXIqPiBtX3ZpZXdTdGF0ZUNoYW5nZU9ic2Vy
dmVyczsKKyAgICBIYXNoU2V0PEFjdGl2aXR5U3RhdGVDaGFuZ2VPYnNlcnZlcio+IG1fYWN0aXZp
dHlTdGF0ZUNoYW5nZU9ic2VydmVyczsKIAogI2lmIEVOQUJMRShSRVNPVVJDRV9VU0FHRSkKICAg
ICBzdGQ6OnVuaXF1ZV9wdHI8UmVzb3VyY2VVc2FnZU92ZXJsYXk+IG1fcmVzb3VyY2VVc2FnZU92
ZXJsYXk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VUaHJvdHRsZXIuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VUaHJvdHRsZXIuaAkocmV2aXNpb24gMjA4
MTk3KQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlVGhyb3R0bGVyLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTI1LDEwICsyNSw5IEBACiAKICNwcmFnbWEgb25jZQogCisjaW5jbHVkZSAiQWN0aXZp
dHlTdGF0ZS5oIgogI2luY2x1ZGUgIlRpbWVyLmgiCi0KICNpbmNsdWRlICJVc2VyQWN0aXZpdHku
aCIKLSNpbmNsdWRlICJWaWV3U3RhdGUuaCIKICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlci5oPgog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL1ZpZXdTdGF0
ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvVmlld1N0YXRlLmgJKHJldmlz
aW9uIDIwODE5NykKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvVmlld1N0YXRlLmgJKG5vbmV4aXN0
ZW50KQpAQCAtMSw0NiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwot
ICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0g
KiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICog
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLW5hbWVz
cGFjZSBXZWJDb3JlIHsKLQotc3RydWN0IFZpZXdTdGF0ZSB7Ci0gICAgZW51bSB7Ci0gICAgICAg
IFdpbmRvd0lzQWN0aXZlID0gMSA8PCAwLAotICAgICAgICBJc0ZvY3VzZWQgPSAxIDw8IDEsCi0g
ICAgICAgIElzVmlzaWJsZSA9IDEgPDwgMiwKLSAgICAgICAgSXNWaXNpYmxlT3JPY2NsdWRlZCA9
IDEgPDwgMywKLSAgICAgICAgSXNJbldpbmRvdyA9IDEgPDwgNCwKLSAgICAgICAgSXNWaXN1YWxs
eUlkbGUgPSAxIDw8IDUsCi0gICAgfTsKLQotICAgIHR5cGVkZWYgdW5zaWduZWQgRmxhZ3M7Ci0K
LSAgICBzdGF0aWMgY29uc3QgRmxhZ3MgTm9GbGFncyA9IDA7Ci0gICAgc3RhdGljIGNvbnN0IEZs
YWdzIEFsbEZsYWdzID0gV2luZG93SXNBY3RpdmUgfCBJc0ZvY3VzZWQgfCBJc1Zpc2libGUgfCBJ
c1Zpc2libGVPck9jY2x1ZGVkIHwgSXNJbldpbmRvdyB8IElzVmlzdWFsbHlJZGxlOwotfTsKLQot
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9WaWV3U3Rh
dGVDaGFuZ2VPYnNlcnZlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvVmll
d1N0YXRlQ2hhbmdlT2JzZXJ2ZXIuaAkocmV2aXNpb24gMjA4MTk3KQorKysgU291cmNlL1dlYkNv
cmUvcGFnZS9WaWV3U3RhdGVDaGFuZ2VPYnNlcnZlci5oCShub25leGlzdGVudCkKQEAgLTEsNDEg
KzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0g
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
LSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
Ci0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IK
LSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0g
KiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaW5jbHVkZSAiVmlld1N0YXRl
LmgiCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotY2xhc3MgVmlld1N0YXRlQ2hhbmdlT2JzZXJ2
ZXIgewotcHVibGljOgotICAgIHZpcnR1YWwgflZpZXdTdGF0ZUNoYW5nZU9ic2VydmVyKCkKLSAg
ICB7Ci0gICAgfQotICAgIAotICAgIHZpcnR1YWwgdm9pZCB2aWV3U3RhdGVEaWRDaGFuZ2UoVmll
d1N0YXRlOjpGbGFncyBvbGRWaWV3U3RhdGUsIFZpZXdTdGF0ZTo6RmxhZ3MgbmV3Vmlld1N0YXRl
KSA9IDA7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBTb3VyY2UvV2ViS2l0
Mi9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCShyZXZp
c2lvbiAyMDgxOTcpCisrKyBTb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkK
QEAgLTEsMyArMSwxMzQgQEAKKzIwMTYtMTAtMzEgIEdhdmluIEJhcnJhY2xvdWdoICA8YmFycmFj
bG91Z2hAYXBwbGUuY29tPgorCisgICAgICAgIFJlbmFtZSBWaWV3U3RhdGUgdG8gQWN0aXZpdHlT
dGF0ZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY0
MjU0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgV2Ug
cGxhbiB0byBhZGQgYSBjb3VwbGUgbW9yZSBmbGFncyB0byBWaWV3U3RhdGUgdGhhdCBhcmVuJ3Qg
ZGlyZWN0bHkgcmVsYXRlZCB0byB0aGUgdmlldworICAgICAgICBpdHNlbGYgLSB3aGV0aGVyIHRo
ZXJlIGlzIGFuIG9uZ29pbmcgcGFnZSBsb2FkLCBhbmQgd2hldGhlciB3aGV0aGVyIHRoZXJlIGlz
IGF1ZGlvIHBsYXliYWNrLgorICAgICAgICBUaGlzIHdpbGwgYWxsb3cgdmlld1N0YXRlIChub3cg
YWN0aXZpdHlTdGF0ZSkgdG8gZnVsbHkgZHJpdmUgdGhyb3R0bGluZyBkZWNpc2lvbnMuCisKKyAg
ICAgICAgUmVuYW1pbmcgdGhpcyBiaXRmaWVsZCBhY2NvcmRpbmdseS4KKworICAgICAgICAqIFNo
YXJlZC9XZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2Vi
UGFnZUNyZWF0aW9uUGFyYW1ldGVyczo6ZW5jb2RlKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFn
ZUNyZWF0aW9uUGFyYW1ldGVyczo6ZGVjb2RlKToKKyAgICAgICAgKiBTaGFyZWQvV2ViUGFnZUNy
ZWF0aW9uUGFyYW1ldGVycy5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJW
aWV3Lm1tOgorICAgICAgICAoLVtXS1dlYlZpZXcgZGlkTW92ZVRvV2luZG93XSk6CisgICAgICAg
ICogVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlld0Jhc2UuY3BwOgorICAgICAgICAoX1dl
YktpdFdlYlZpZXdCYXNlUHJpdmF0ZTo6X1dlYktpdFdlYlZpZXdCYXNlUHJpdmF0ZSk6CisgICAg
ICAgIChfV2ViS2l0V2ViVmlld0Jhc2VQcml2YXRlOjp1cGRhdGVBY3Rpdml0eVN0YXRlVGltZXJG
aXJlZCk6CisgICAgICAgICh3ZWJraXRXZWJWaWV3QmFzZVNjaGVkdWxlVXBkYXRlQWN0aXZpdHlT
dGF0ZSk6CisgICAgICAgICh0b3BsZXZlbFdpbmRvd0ZvY3VzSW5FdmVudCk6CisgICAgICAgICh0
b3BsZXZlbFdpbmRvd0ZvY3VzT3V0RXZlbnQpOgorICAgICAgICAodG9wbGV2ZWxXaW5kb3dTdGF0
ZUV2ZW50KToKKyAgICAgICAgKHdlYmtpdFdlYlZpZXdCYXNlU2V0VG9wbGV2ZWxPblNjcmVlbldp
bmRvdyk6CisgICAgICAgICh3ZWJraXRXZWJWaWV3QmFzZU1hcCk6CisgICAgICAgICh3ZWJraXRX
ZWJWaWV3QmFzZVVubWFwKToKKyAgICAgICAgKHdlYmtpdFdlYlZpZXdCYXNlU2V0Rm9jdXMpOgor
ICAgICAgICAod2Via2l0V2ViVmlld0Jhc2VJc0luV2luZG93QWN0aXZlKToKKyAgICAgICAgKHdl
YmtpdFdlYlZpZXdCYXNlSXNGb2N1c2VkKToKKyAgICAgICAgKHdlYmtpdFdlYlZpZXdCYXNlSXNW
aXNpYmxlKToKKyAgICAgICAgKHdlYmtpdFdlYlZpZXdCYXNlSXNJbldpbmRvdyk6CisgICAgICAg
IChfV2ViS2l0V2ViVmlld0Jhc2VQcml2YXRlOjp1cGRhdGVWaWV3U3RhdGVUaW1lckZpcmVkKTog
RGVsZXRlZC4KKyAgICAgICAgKHdlYmtpdFdlYlZpZXdCYXNlU2NoZWR1bGVVcGRhdGVWaWV3U3Rh
dGUpOiBEZWxldGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9XZWJWaWV3SW1wbC5tbToK
KyAgICAgICAgKFdlYktpdDo6V2ViVmlld0ltcGw6OmJlY29tZUZpcnN0UmVzcG9uZGVyKToKKyAg
ICAgICAgKFdlYktpdDo6V2ViVmlld0ltcGw6OnJlc2lnbkZpcnN0UmVzcG9uZGVyKToKKyAgICAg
ICAgKFdlYktpdDo6V2ViVmlld0ltcGw6OndpbmRvd0RpZE9yZGVyT2ZmU2NyZWVuKToKKyAgICAg
ICAgKFdlYktpdDo6V2ViVmlld0ltcGw6OndpbmRvd0RpZE9yZGVyT25TY3JlZW4pOgorICAgICAg
ICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6d2luZG93RGlkQmVjb21lS2V5KToKKyAgICAgICAgKFdl
YktpdDo6V2ViVmlld0ltcGw6OndpbmRvd0RpZFJlc2lnbktleSk6CisgICAgICAgIChXZWJLaXQ6
OldlYlZpZXdJbXBsOjp3aW5kb3dEaWRNaW5pYXR1cml6ZSk6CisgICAgICAgIChXZWJLaXQ6Oldl
YlZpZXdJbXBsOjp3aW5kb3dEaWREZW1pbmlhdHVyaXplKToKKyAgICAgICAgKFdlYktpdDo6V2Vi
Vmlld0ltcGw6OndpbmRvd0RpZENoYW5nZU9jY2x1c2lvblN0YXRlKToKKyAgICAgICAgKFdlYktp
dDo6V2ViVmlld0ltcGw6OnZpZXdEaWRNb3ZlVG9XaW5kb3cpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJWaWV3SW1wbDo6dmlld0RpZEhpZGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6
dmlld0RpZFVuaGlkZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXdJbXBsOjphY3RpdmVTcGFj
ZURpZENoYW5nZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXdJbXBsOjplbmREZWZlcnJpbmdW
aWV3SW5XaW5kb3dDaGFuZ2VzKToKKyAgICAgICAgKFdlYktpdDo6V2ViVmlld0ltcGw6OmVuZERl
ZmVycmluZ1ZpZXdJbldpbmRvd0NoYW5nZXNTeW5jKToKKyAgICAgICAgKFdlYktpdDo6V2ViVmll
d0ltcGw6OnByZXBhcmVGb3JNb3ZlVG9XaW5kb3cpOgorICAgICAgICAqIFVJUHJvY2Vzcy9EcmF3
aW5nQXJlYVByb3h5Lmg6CisgICAgICAgIChXZWJLaXQ6OkRyYXdpbmdBcmVhUHJveHk6OndhaXRG
b3JEaWRVcGRhdGVBY3Rpdml0eVN0YXRlKToKKyAgICAgICAgKFdlYktpdDo6RHJhd2luZ0FyZWFQ
cm94eTo6d2FpdEZvckRpZFVwZGF0ZVZpZXdTdGF0ZSk6IERlbGV0ZWQuCisgICAgICAgICogVUlQ
cm9jZXNzL1dlYlBhZ2VQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6
V2ViUGFnZVByb3h5KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpyZWF0dGFjaFRv
V2ViUHJvY2Vzcyk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6c2V0U3VwcHJlc3NW
aXNpYmlsaXR5VXBkYXRlcyk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6dXBkYXRl
QWN0aXZpdHlTdGF0ZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6YWN0aXZpdHlT
dGF0ZURpZENoYW5nZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6ZGlzcGF0Y2hB
Y3Rpdml0eVN0YXRlQ2hhbmdlKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5Ojp1cGRh
dGVUaHJvdHRsZVN0YXRlKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5Ojp3YWl0Rm9y
RGlkVXBkYXRlQWN0aXZpdHlTdGF0ZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6
Y3JlYXRpb25QYXJhbWV0ZXJzKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjppbnN0
YWxsQWN0aXZpdHlTdGF0ZUNoYW5nZUNvbXBsZXRpb25IYW5kbGVyKToKKyAgICAgICAgKFdlYktp
dDo6V2ViUGFnZVByb3h5Ojp1cGRhdGVWaWV3U3RhdGUpOiBEZWxldGVkLgorICAgICAgICAoV2Vi
S2l0OjpXZWJQYWdlUHJveHk6OnZpZXdTdGF0ZURpZENoYW5nZSk6IERlbGV0ZWQuCisgICAgICAg
IChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6ZGlzcGF0Y2hWaWV3U3RhdGVDaGFuZ2UpOiBEZWxldGVk
LgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OndhaXRGb3JEaWRVcGRhdGVWaWV3U3Rh
dGUpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6Omluc3RhbGxWaWV3
U3RhdGVDaGFuZ2VDb21wbGV0aW9uSGFuZGxlcik6IERlbGV0ZWQuCisgICAgICAgICogVUlQcm9j
ZXNzL1dlYlBhZ2VQcm94eS5oOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmlzSW5X
aW5kb3cpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmRpZFVwZGF0ZUFjdGl2aXR5
U3RhdGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmlzVmlld1Zpc2libGUpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmRpZFVwZGF0ZVZpZXdTdGF0ZSk6IERlbGV0
ZWQuCisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbjoKKyAgICAg
ICAgKiBVSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2Vi
UHJvY2Vzc1Byb3h5Ojp3aW5kb3dTZXJ2ZXJDb25uZWN0aW9uU3RhdGVDaGFuZ2VkKToKKyAgICAg
ICAgKiBVSVByb2Nlc3MvZWZsL1dlYlZpZXcuY3BwOgorICAgICAgICAqIFVJUHJvY2Vzcy9pb3Mv
V0tDb250ZW50Vmlldy5tbToKKyAgICAgICAgKC1bV0tDb250ZW50VmlldyBfYXBwbGljYXRpb25E
aWRFbnRlckJhY2tncm91bmRdKToKKyAgICAgICAgKC1bV0tDb250ZW50VmlldyBfYXBwbGljYXRp
b25XaWxsRW50ZXJGb3JlZ3JvdW5kXSk6CisgICAgICAgICogVUlQcm9jZXNzL2lvcy9XS1BERlZp
ZXcubW06CisgICAgICAgICgtW1dLUERGVmlldyBfYXBwbGljYXRpb25EaWRFbnRlckJhY2tncm91
bmRdKToKKyAgICAgICAgKC1bV0tQREZWaWV3IF9hcHBsaWNhdGlvbldpbGxFbnRlckZvcmVncm91
bmRdKToKKyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL1dlYlBhZ2VQcm94eUlPUy5tbToKKyAgICAg
ICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpzeW5jaHJvbml6ZUR5bmFtaWNWaWV3cG9ydFVwZGF0
ZSk6CisgICAgICAgICogVUlQcm9jZXNzL21hYy9SZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYVBy
b3h5Lmg6CisgICAgICAgICogVUlQcm9jZXNzL21hYy9SZW1vdGVMYXllclRyZWVEcmF3aW5nQXJl
YVByb3h5Lm1tOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYVBy
b3h5OjpkaWRSZWZyZXNoRGlzcGxheSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUxheWVyVHJl
ZURyYXdpbmdBcmVhUHJveHk6OndhaXRGb3JEaWRVcGRhdGVBY3Rpdml0eVN0YXRlKToKKyAgICAg
ICAgKFdlYktpdDo6UmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWFQcm94eTo6d2FpdEZvckRpZFVw
ZGF0ZVZpZXdTdGF0ZSk6IERlbGV0ZWQuCisgICAgICAgICogVUlQcm9jZXNzL21hYy9UaWxlZENv
cmVBbmltYXRpb25EcmF3aW5nQXJlYVByb3h5Lmg6CisgICAgICAgICogVUlQcm9jZXNzL21hYy9U
aWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYVByb3h5Lm1tOgorICAgICAgICAoV2ViS2l0OjpU
aWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYVByb3h5Ojp3YWl0Rm9yRGlkVXBkYXRlQWN0aXZp
dHlTdGF0ZSk6CisgICAgICAgIChXZWJLaXQ6OlRpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVh
UHJveHk6OndhaXRGb3JEaWRVcGRhdGVWaWV3U3RhdGUpOiBEZWxldGVkLgorICAgICAgICAqIFdl
YlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmNwcDoKKyAgICAgICAgKFdlYktpdDo6UGx1Z2lu
Vmlldzo6YWN0aXZpdHlTdGF0ZURpZENoYW5nZSk6CisgICAgICAgIChXZWJLaXQ6OlBsdWdpblZp
ZXc6OnZpZXdTdGF0ZURpZENoYW5nZSk6IERlbGV0ZWQuCisgICAgICAgICogV2ViUHJvY2Vzcy9Q
bHVnaW5zL1BsdWdpblZpZXcuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvQWNjZWxl
cmF0ZWREcmF3aW5nQXJlYS5jcHA6CisgICAgICAgIChXZWJLaXQ6OkFjY2VsZXJhdGVkRHJhd2lu
Z0FyZWE6OmFjdGl2aXR5U3RhdGVEaWRDaGFuZ2UpOgorICAgICAgICAoV2ViS2l0OjpBY2NlbGVy
YXRlZERyYXdpbmdBcmVhOjp2aWV3U3RhdGVEaWRDaGFuZ2UpOiBEZWxldGVkLgorICAgICAgICAq
IFdlYlByb2Nlc3MvV2ViUGFnZS9BY2NlbGVyYXRlZERyYXdpbmdBcmVhLmg6CisgICAgICAgICog
V2ViUHJvY2Vzcy9XZWJQYWdlL0RyYXdpbmdBcmVhLmg6CisgICAgICAgIChXZWJLaXQ6OkRyYXdp
bmdBcmVhOjphY3Rpdml0eVN0YXRlRGlkQ2hhbmdlKToKKyAgICAgICAgKFdlYktpdDo6RHJhd2lu
Z0FyZWE6OnZpZXdTdGF0ZURpZENoYW5nZSk6IERlbGV0ZWQuCisgICAgICAgICogV2ViUHJvY2Vz
cy9XZWJQYWdlL1dlYlBhZ2UuY3BwOgorICAgICAgICAoV2ViS2l0OjptX3VzZXJJbnRlcmZhY2VM
YXlvdXREaXJlY3Rpb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpyZWluaXRpYWxpemVX
ZWJQYWdlKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6dXBkYXRlSXNJbldpbmRvdyk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnNldEFjdGl2aXR5U3RhdGUpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJQYWdlOjpzZXRWaWV3U3RhdGUpOiBEZWxldGVkLgorICAgICAgICAqIFdlYlByb2Nl
c3MvV2ViUGFnZS9XZWJQYWdlLmg6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OmlzVmlzaWJs
ZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OmlzVmlzaWJsZU9yT2NjbHVkZWQpOgorICAg
ICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluOgorICAgICAgICAq
IFdlYlByb2Nlc3MvV2ViUGFnZS9tYWMvUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWEuaDoKKyAg
ICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1JlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVh
Lm1tOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYTo6YWN0aXZp
dHlTdGF0ZURpZENoYW5nZSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUxheWVyVHJlZURyYXdp
bmdBcmVhOjp2aWV3U3RhdGVEaWRDaGFuZ2UpOiBEZWxldGVkLgorICAgICAgICAqIFdlYlByb2Nl
c3MvV2ViUGFnZS9tYWMvVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWEuaDoKKyAgICAgICAg
KiBXZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1RpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhLm1t
OgorICAgICAgICAoV2ViS2l0OjpUaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYTo6VGlsZWRD
b3JlQW5pbWF0aW9uRHJhd2luZ0FyZWEpOgorICAgICAgICAoV2ViS2l0OjpUaWxlZENvcmVBbmlt
YXRpb25EcmF3aW5nQXJlYTo6YWN0aXZpdHlTdGF0ZURpZENoYW5nZSk6CisgICAgICAgIChXZWJL
aXQ6OlRpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhOjpkaWRVcGRhdGVBY3Rpdml0eVN0YXRl
VGltZXJGaXJlZCk6CisgICAgICAgIChXZWJLaXQ6OlRpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdB
cmVhOjp2aWV3U3RhdGVEaWRDaGFuZ2UpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpUaWxl
ZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYTo6ZGlkVXBkYXRlVmlld1N0YXRlVGltZXJGaXJlZCk6
IERlbGV0ZWQuCisKIDIwMTYtMTAtMzEgIEJyYWR5IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUuY29t
PgogCiAgICAgICAgIEluZGV4ZWREQiAyLjA6IFN1cHBvcnQgSURCT2JqZWN0U3RvcmUgZ2V0QWxs
L2dldEFsbEtleXMuCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViUGFnZUNyZWF0aW9u
UGFyYW1ldGVycy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYlBh
Z2VDcmVhdGlvblBhcmFtZXRlcnMuY3BwCShyZXZpc2lvbiAyMDgxOTcpCisrKyBTb3VyY2UvV2Vi
S2l0Mi9TaGFyZWQvV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycy5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTMzLDcgKzMzLDcgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiB2b2lkIFdlYlBhZ2VDcmVhdGlv
blBhcmFtZXRlcnM6OmVuY29kZShJUEM6OkVuY29kZXImIGVuY29kZXIpIGNvbnN0CiB7CiAgICAg
ZW5jb2RlciA8PCB2aWV3U2l6ZTsKLSAgICBlbmNvZGVyIDw8IHZpZXdTdGF0ZTsKKyAgICBlbmNv
ZGVyIDw8IGFjdGl2aXR5U3RhdGU7CiAKICAgICBlbmNvZGVyIDw8IHN0b3JlOwogICAgIGVuY29k
ZXIuZW5jb2RlRW51bShkcmF3aW5nQXJlYVR5cGUpOwpAQCAtOTQsNyArOTQsNyBAQCBib29sIFdl
YlBhZ2VDcmVhdGlvblBhcmFtZXRlcnM6OmRlY29kZShJCiB7CiAgICAgaWYgKCFkZWNvZGVyLmRl
Y29kZShwYXJhbWV0ZXJzLnZpZXdTaXplKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIGlm
ICghZGVjb2Rlci5kZWNvZGUocGFyYW1ldGVycy52aWV3U3RhdGUpKQorICAgIGlmICghZGVjb2Rl
ci5kZWNvZGUocGFyYW1ldGVycy5hY3Rpdml0eVN0YXRlKSkKICAgICAgICAgcmV0dXJuIGZhbHNl
OwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUocGFyYW1ldGVycy5zdG9yZSkpCiAgICAgICAgIHJl
dHVybiBmYWxzZTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJQYWdlQ3JlYXRpb25Q
YXJhbWV0ZXJzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYlBhZ2VD
cmVhdGlvblBhcmFtZXRlcnMuaAkocmV2aXNpb24gMjA4MTk3KQorKysgU291cmNlL1dlYktpdDIv
U2hhcmVkL1dlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMuaAkod29ya2luZyBjb3B5KQpAQCAtMzIs
NiArMzIsNyBAQAogI2luY2x1ZGUgIldlYkNvcmVBcmd1bWVudENvZGVycy5oIgogI2luY2x1ZGUg
IldlYlBhZ2VHcm91cERhdGEuaCIKICNpbmNsdWRlICJXZWJQcmVmZXJlbmNlc1N0b3JlLmgiCisj
aW5jbHVkZSA8V2ViQ29yZS9BY3Rpdml0eVN0YXRlLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9Db2xv
ci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRmxvYXRTaXplLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9J
bnRTaXplLmg+CkBAIC00MCw3ICs0MSw2IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9TY3JvbGxUeXBl
cy5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU2Vzc2lvbklELmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9V
c2VySW50ZXJmYWNlTGF5b3V0RGlyZWN0aW9uLmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9WaWV3U3Rh
dGUuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAogI2lmIFBMQVRGT1JNKE1B
QykKQEAgLTYwLDcgKzYwLDcgQEAgc3RydWN0IFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMgewog
CiAgICAgV2ViQ29yZTo6SW50U2l6ZSB2aWV3U2l6ZTsKIAotICAgIFdlYkNvcmU6OlZpZXdTdGF0
ZTo6RmxhZ3Mgdmlld1N0YXRlOworICAgIFdlYkNvcmU6OkFjdGl2aXR5U3RhdGU6OkZsYWdzIGFj
dGl2aXR5U3RhdGU7CiAgICAgCiAgICAgV2ViUHJlZmVyZW5jZXNTdG9yZSBzdG9yZTsKICAgICBE
cmF3aW5nQXJlYVR5cGUgZHJhd2luZ0FyZWFUeXBlOwpJbmRleDogU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0RyYXdpbmdBcmVhUHJveHkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvRHJhd2luZ0FyZWFQcm94eS5oCShyZXZpc2lvbiAyMDgxOTcpCisrKyBTb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvRHJhd2luZ0FyZWFQcm94eS5oCSh3b3JraW5nIGNvcHkpCkBAIC04
OSw3ICs4OSw3IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVEZWJ1Z0luZGlj
YXRvcigpIHsgfQogCi0gICAgdmlydHVhbCB2b2lkIHdhaXRGb3JEaWRVcGRhdGVWaWV3U3RhdGUo
KSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgd2FpdEZvckRpZFVwZGF0ZUFjdGl2aXR5U3RhdGUoKSB7
IH0KICAgICAKICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hBZnRlckVuc3VyaW5nRHJhd2luZyhz
dGQ6OmZ1bmN0aW9uPHZvaWQgKENhbGxiYWNrQmFzZTo6RXJyb3IpPikgeyBBU1NFUlRfTk9UX1JF
QUNIRUQoKTsgfQogCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5
LmNwcAkocmV2aXNpb24gMjA4MTk3KQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBh
Z2VQcm94eS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM1Nyw3ICszNTcsNyBAQCBXZWJQYWdlUHJv
eHk6OldlYlBhZ2VQcm94eShQYWdlQ2xpZW50JiBwCiAgICAgLCBtX2dlb2xvY2F0aW9uUGVybWlz
c2lvblJlcXVlc3RNYW5hZ2VyKCp0aGlzKQogICAgICwgbV9ub3RpZmljYXRpb25QZXJtaXNzaW9u
UmVxdWVzdE1hbmFnZXIoKnRoaXMpCiAgICAgLCBtX3VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0
TWFuYWdlcigqdGhpcykKLSAgICAsIG1fdmlld1N0YXRlKFZpZXdTdGF0ZTo6Tm9GbGFncykKKyAg
ICAsIG1fYWN0aXZpdHlTdGF0ZShBY3Rpdml0eVN0YXRlOjpOb0ZsYWdzKQogICAgICwgbV92aWV3
V2FzRXZlckluV2luZG93KGZhbHNlKQogI2lmIFBMQVRGT1JNKElPUykKICAgICAsIG1fYWx3YXlz
UnVuc0F0Rm9yZWdyb3VuZFByaW9yaXR5KG1fY29uZmlndXJhdGlvbi0+YWx3YXlzUnVuc0F0Rm9y
ZWdyb3VuZFByaW9yaXR5KCkpCkBAIC00NDksMjYgKzQ0OSwyNiBAQCBXZWJQYWdlUHJveHk6Oldl
YlBhZ2VQcm94eShQYWdlQ2xpZW50JiBwCiAgICAgLCBtX2F1dG9TaXppbmdTaG91bGRFeHBhbmRU
b1ZpZXdIZWlnaHQoZmFsc2UpCiAgICAgLCBtX21lZGlhVm9sdW1lKDEpCiAgICAgLCBtX21heVN0
YXJ0TWVkaWFXaGVuSW5XaW5kb3codHJ1ZSkKLSAgICAsIG1fd2FpdGluZ0ZvckRpZFVwZGF0ZVZp
ZXdTdGF0ZShmYWxzZSkKKyAgICAsIG1fd2FpdGluZ0ZvckRpZFVwZGF0ZUFjdGl2aXR5U3RhdGUo
ZmFsc2UpCiAjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgLCBtX3Njcm9sbFBlcmZvcm1hbmNlRGF0
YUNvbGxlY3Rpb25FbmFibGVkKGZhbHNlKQogI2VuZGlmCiAgICAgLCBtX3Njcm9sbFBpbm5pbmdC
ZWhhdmlvcihEb05vdFBpbikKICAgICAsIG1fbmF2aWdhdGlvbklEKDApCiAgICAgLCBtX2NvbmZp
Z3VyYXRpb25QcmVmZXJlbmNlVmFsdWVzKG1fY29uZmlndXJhdGlvbi0+cHJlZmVyZW5jZVZhbHVl
cygpKQotICAgICwgbV9wb3RlbnRpYWxseUNoYW5nZWRWaWV3U3RhdGVGbGFncyhWaWV3U3RhdGU6
Ok5vRmxhZ3MpCi0gICAgLCBtX3ZpZXdTdGF0ZUNoYW5nZVdhbnRzU3luY2hyb25vdXNSZXBseShm
YWxzZSkKKyAgICAsIG1fcG90ZW50aWFsbHlDaGFuZ2VkQWN0aXZpdHlTdGF0ZUZsYWdzKEFjdGl2
aXR5U3RhdGU6Ok5vRmxhZ3MpCisgICAgLCBtX2FjdGl2aXR5U3RhdGVDaGFuZ2VXYW50c1N5bmNo
cm9ub3VzUmVwbHkoZmFsc2UpCiAgICAgLCBtX3dlYWtQdHJGYWN0b3J5KHRoaXMpCiB7CiAgICAg
bV93ZWJQcm9jZXNzTGlmZXRpbWVUcmFja2VyLmFkZE9ic2VydmVyKG1fdmlzaXRlZExpbmtTdG9y
ZSk7CiAgICAgbV93ZWJQcm9jZXNzTGlmZXRpbWVUcmFja2VyLmFkZE9ic2VydmVyKG1fd2Vic2l0
ZURhdGFTdG9yZSk7CiAKLSAgICB1cGRhdGVWaWV3U3RhdGUoKTsKKyAgICB1cGRhdGVBY3Rpdml0
eVN0YXRlKCk7CiAgICAgdXBkYXRlVGhyb3R0bGVTdGF0ZSgpOwogICAgIHVwZGF0ZUhpZGRlblBh
Z2VUaHJvdHRsaW5nQXV0b0luY3JlYXNlcygpOwogICAgIAogI2lmIEhBVkUoT1VUX09GX1BST0NF
U1NfTEFZRVJfSE9TVElORykKLSAgICBtX2xheWVySG9zdGluZ01vZGUgPSBtX3ZpZXdTdGF0ZSAm
IFZpZXdTdGF0ZTo6SXNJbldpbmRvdyA/IG1fcGFnZUNsaWVudC52aWV3TGF5ZXJIb3N0aW5nTW9k
ZSgpIDogTGF5ZXJIb3N0aW5nTW9kZTo6T3V0T2ZQcm9jZXNzOworICAgIG1fbGF5ZXJIb3N0aW5n
TW9kZSA9IG1fYWN0aXZpdHlTdGF0ZSAmIEFjdGl2aXR5U3RhdGU6OklzSW5XaW5kb3cgPyBtX3Bh
Z2VDbGllbnQudmlld0xheWVySG9zdGluZ01vZGUoKSA6IExheWVySG9zdGluZ01vZGU6Ok91dE9m
UHJvY2VzczsKICNlbmRpZgogCiAgICAgcGxhdGZvcm1Jbml0aWFsaXplKCk7CkBAIC01MDYsOSAr
NTA2LDkgQEAgV2ViUGFnZVByb3h5OjpXZWJQYWdlUHJveHkoUGFnZUNsaWVudCYgcAogICAgIH0K
IAogI2lmIFBMQVRGT1JNKENPQ09BKQotICAgIGNvbnN0IENGSW5kZXggdmlld1N0YXRlQ2hhbmdl
UnVuTG9vcE9yZGVyID0gKENGSW5kZXgpUnVuTG9vcE9ic2VydmVyOjpXZWxsS25vd25SdW5Mb29w
T3JkZXJzOjpDb3JlQW5pbWF0aW9uQ29tbWl0IC0gMTsKLSAgICBtX3ZpZXdTdGF0ZUNoYW5nZURp
c3BhdGNoZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPFJ1bkxvb3BPYnNlcnZlcj4odmlld1N0YXRlQ2hh
bmdlUnVuTG9vcE9yZGVyLCBbdGhpc10gewotICAgICAgICB0aGlzLT5kaXNwYXRjaFZpZXdTdGF0
ZUNoYW5nZSgpOworICAgIGNvbnN0IENGSW5kZXggYWN0aXZpdHlTdGF0ZUNoYW5nZVJ1bkxvb3BP
cmRlciA9IChDRkluZGV4KVJ1bkxvb3BPYnNlcnZlcjo6V2VsbEtub3duUnVuTG9vcE9yZGVyczo6
Q29yZUFuaW1hdGlvbkNvbW1pdCAtIDE7CisgICAgbV9hY3Rpdml0eVN0YXRlQ2hhbmdlRGlzcGF0
Y2hlciA9IHN0ZDo6bWFrZV91bmlxdWU8UnVuTG9vcE9ic2VydmVyPihhY3Rpdml0eVN0YXRlQ2hh
bmdlUnVuTG9vcE9yZGVyLCBbdGhpc10geworICAgICAgICB0aGlzLT5kaXNwYXRjaEFjdGl2aXR5
U3RhdGVDaGFuZ2UoKTsKICAgICB9KTsKICNlbmRpZgogfQpAQCAtNzIwLDcgKzcyMCw3IEBAIHZv
aWQgV2ViUGFnZVByb3h5OjpyZWF0dGFjaFRvV2ViUHJvY2VzcygKICAgICBtX3Byb2Nlc3MtPmFk
ZEV4aXN0aW5nV2ViUGFnZSh0aGlzLCBtX3BhZ2VJRCk7CiAgICAgbV9wcm9jZXNzLT5hZGRNZXNz
YWdlUmVjZWl2ZXIoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6bWVzc2FnZVJlY2VpdmVyTmFtZSgp
LCBtX3BhZ2VJRCwgKnRoaXMpOwogCi0gICAgdXBkYXRlVmlld1N0YXRlKCk7CisgICAgdXBkYXRl
QWN0aXZpdHlTdGF0ZSgpOwogICAgIHVwZGF0ZVRocm90dGxlU3RhdGUoKTsKIAogICAgIG1faW5z
cGVjdG9yID0gV2ViSW5zcGVjdG9yUHJveHk6OmNyZWF0ZSh0aGlzKTsKQEAgLTE0NDIsNDggKzE0
NDIsNDggQEAgdm9pZCBXZWJQYWdlUHJveHk6OnNldFN1cHByZXNzVmlzaWJpbGl0eQogCiAgICAg
aWYgKCFtX3N1cHByZXNzVmlzaWJpbGl0eVVwZGF0ZXMpIHsKICNpZiBQTEFURk9STShDT0NPQSkK
LSAgICAgICAgbV92aWV3U3RhdGVDaGFuZ2VEaXNwYXRjaGVyLT5zY2hlZHVsZSgpOworICAgICAg
ICBtX2FjdGl2aXR5U3RhdGVDaGFuZ2VEaXNwYXRjaGVyLT5zY2hlZHVsZSgpOwogI2Vsc2UKLSAg
ICAgICAgZGlzcGF0Y2hWaWV3U3RhdGVDaGFuZ2UoKTsKKyAgICAgICAgZGlzcGF0Y2hBY3Rpdml0
eVN0YXRlQ2hhbmdlKCk7CiAjZW5kaWYKICAgICB9CiB9CiAKLXZvaWQgV2ViUGFnZVByb3h5Ojp1
cGRhdGVWaWV3U3RhdGUoVmlld1N0YXRlOjpGbGFncyBmbGFnc1RvVXBkYXRlKQordm9pZCBXZWJQ
YWdlUHJveHk6OnVwZGF0ZUFjdGl2aXR5U3RhdGUoQWN0aXZpdHlTdGF0ZTo6RmxhZ3MgZmxhZ3NU
b1VwZGF0ZSkKIHsKLSAgICBtX3ZpZXdTdGF0ZSAmPSB+ZmxhZ3NUb1VwZGF0ZTsKLSAgICBpZiAo
ZmxhZ3NUb1VwZGF0ZSAmIFZpZXdTdGF0ZTo6SXNGb2N1c2VkICYmIG1fcGFnZUNsaWVudC5pc1Zp
ZXdGb2N1c2VkKCkpCi0gICAgICAgIG1fdmlld1N0YXRlIHw9IFZpZXdTdGF0ZTo6SXNGb2N1c2Vk
OwotICAgIGlmIChmbGFnc1RvVXBkYXRlICYgVmlld1N0YXRlOjpXaW5kb3dJc0FjdGl2ZSAmJiBt
X3BhZ2VDbGllbnQuaXNWaWV3V2luZG93QWN0aXZlKCkpCi0gICAgICAgIG1fdmlld1N0YXRlIHw9
IFZpZXdTdGF0ZTo6V2luZG93SXNBY3RpdmU7Ci0gICAgaWYgKGZsYWdzVG9VcGRhdGUgJiBWaWV3
U3RhdGU6OklzVmlzaWJsZSAmJiBtX3BhZ2VDbGllbnQuaXNWaWV3VmlzaWJsZSgpKQotICAgICAg
ICBtX3ZpZXdTdGF0ZSB8PSBWaWV3U3RhdGU6OklzVmlzaWJsZTsKLSAgICBpZiAoZmxhZ3NUb1Vw
ZGF0ZSAmIFZpZXdTdGF0ZTo6SXNWaXNpYmxlT3JPY2NsdWRlZCAmJiBtX3BhZ2VDbGllbnQuaXNW
aWV3VmlzaWJsZU9yT2NjbHVkZWQoKSkKLSAgICAgICAgbV92aWV3U3RhdGUgfD0gVmlld1N0YXRl
OjpJc1Zpc2libGVPck9jY2x1ZGVkOwotICAgIGlmIChmbGFnc1RvVXBkYXRlICYgVmlld1N0YXRl
OjpJc0luV2luZG93ICYmIG1fcGFnZUNsaWVudC5pc1ZpZXdJbldpbmRvdygpKQotICAgICAgICBt
X3ZpZXdTdGF0ZSB8PSBWaWV3U3RhdGU6OklzSW5XaW5kb3c7Ci0gICAgaWYgKGZsYWdzVG9VcGRh
dGUgJiBWaWV3U3RhdGU6OklzVmlzdWFsbHlJZGxlICYmIG1fcGFnZUNsaWVudC5pc1Zpc3VhbGx5
SWRsZSgpKQotICAgICAgICBtX3ZpZXdTdGF0ZSB8PSBWaWV3U3RhdGU6OklzVmlzdWFsbHlJZGxl
OworICAgIG1fYWN0aXZpdHlTdGF0ZSAmPSB+ZmxhZ3NUb1VwZGF0ZTsKKyAgICBpZiAoZmxhZ3NU
b1VwZGF0ZSAmIEFjdGl2aXR5U3RhdGU6OklzRm9jdXNlZCAmJiBtX3BhZ2VDbGllbnQuaXNWaWV3
Rm9jdXNlZCgpKQorICAgICAgICBtX2FjdGl2aXR5U3RhdGUgfD0gQWN0aXZpdHlTdGF0ZTo6SXNG
b2N1c2VkOworICAgIGlmIChmbGFnc1RvVXBkYXRlICYgQWN0aXZpdHlTdGF0ZTo6V2luZG93SXNB
Y3RpdmUgJiYgbV9wYWdlQ2xpZW50LmlzVmlld1dpbmRvd0FjdGl2ZSgpKQorICAgICAgICBtX2Fj
dGl2aXR5U3RhdGUgfD0gQWN0aXZpdHlTdGF0ZTo6V2luZG93SXNBY3RpdmU7CisgICAgaWYgKGZs
YWdzVG9VcGRhdGUgJiBBY3Rpdml0eVN0YXRlOjpJc1Zpc2libGUgJiYgbV9wYWdlQ2xpZW50Lmlz
Vmlld1Zpc2libGUoKSkKKyAgICAgICAgbV9hY3Rpdml0eVN0YXRlIHw9IEFjdGl2aXR5U3RhdGU6
OklzVmlzaWJsZTsKKyAgICBpZiAoZmxhZ3NUb1VwZGF0ZSAmIEFjdGl2aXR5U3RhdGU6OklzVmlz
aWJsZU9yT2NjbHVkZWQgJiYgbV9wYWdlQ2xpZW50LmlzVmlld1Zpc2libGVPck9jY2x1ZGVkKCkp
CisgICAgICAgIG1fYWN0aXZpdHlTdGF0ZSB8PSBBY3Rpdml0eVN0YXRlOjpJc1Zpc2libGVPck9j
Y2x1ZGVkOworICAgIGlmIChmbGFnc1RvVXBkYXRlICYgQWN0aXZpdHlTdGF0ZTo6SXNJbldpbmRv
dyAmJiBtX3BhZ2VDbGllbnQuaXNWaWV3SW5XaW5kb3coKSkKKyAgICAgICAgbV9hY3Rpdml0eVN0
YXRlIHw9IEFjdGl2aXR5U3RhdGU6OklzSW5XaW5kb3c7CisgICAgaWYgKGZsYWdzVG9VcGRhdGUg
JiBBY3Rpdml0eVN0YXRlOjpJc1Zpc3VhbGx5SWRsZSAmJiBtX3BhZ2VDbGllbnQuaXNWaXN1YWxs
eUlkbGUoKSkKKyAgICAgICAgbV9hY3Rpdml0eVN0YXRlIHw9IEFjdGl2aXR5U3RhdGU6OklzVmlz
dWFsbHlJZGxlOwogfQogCi12b2lkIFdlYlBhZ2VQcm94eTo6dmlld1N0YXRlRGlkQ2hhbmdlKFZp
ZXdTdGF0ZTo6RmxhZ3MgbWF5SGF2ZUNoYW5nZWQsIGJvb2wgd2FudHNTeW5jaHJvbm91c1JlcGx5
LCBWaWV3U3RhdGVDaGFuZ2VEaXNwYXRjaE1vZGUgZGlzcGF0Y2hNb2RlKQordm9pZCBXZWJQYWdl
UHJveHk6OmFjdGl2aXR5U3RhdGVEaWRDaGFuZ2UoQWN0aXZpdHlTdGF0ZTo6RmxhZ3MgbWF5SGF2
ZUNoYW5nZWQsIGJvb2wgd2FudHNTeW5jaHJvbm91c1JlcGx5LCBBY3Rpdml0eVN0YXRlQ2hhbmdl
RGlzcGF0Y2hNb2RlIGRpc3BhdGNoTW9kZSkKIHsKLSAgICBtX3BvdGVudGlhbGx5Q2hhbmdlZFZp
ZXdTdGF0ZUZsYWdzIHw9IG1heUhhdmVDaGFuZ2VkOwotICAgIG1fdmlld1N0YXRlQ2hhbmdlV2Fu
dHNTeW5jaHJvbm91c1JlcGx5ID0gbV92aWV3U3RhdGVDaGFuZ2VXYW50c1N5bmNocm9ub3VzUmVw
bHkgfHwgd2FudHNTeW5jaHJvbm91c1JlcGx5OworICAgIG1fcG90ZW50aWFsbHlDaGFuZ2VkQWN0
aXZpdHlTdGF0ZUZsYWdzIHw9IG1heUhhdmVDaGFuZ2VkOworICAgIG1fYWN0aXZpdHlTdGF0ZUNo
YW5nZVdhbnRzU3luY2hyb25vdXNSZXBseSA9IG1fYWN0aXZpdHlTdGF0ZUNoYW5nZVdhbnRzU3lu
Y2hyb25vdXNSZXBseSB8fCB3YW50c1N5bmNocm9ub3VzUmVwbHk7CiAKLSAgICBpZiAobV9zdXBw
cmVzc1Zpc2liaWxpdHlVcGRhdGVzICYmIGRpc3BhdGNoTW9kZSAhPSBWaWV3U3RhdGVDaGFuZ2VE
aXNwYXRjaE1vZGU6OkltbWVkaWF0ZSkKKyAgICBpZiAobV9zdXBwcmVzc1Zpc2liaWxpdHlVcGRh
dGVzICYmIGRpc3BhdGNoTW9kZSAhPSBBY3Rpdml0eVN0YXRlQ2hhbmdlRGlzcGF0Y2hNb2RlOjpJ
bW1lZGlhdGUpCiAgICAgICAgIHJldHVybjsKIAogI2lmIFBMQVRGT1JNKENPQ09BKQotICAgIGJv
b2wgaXNOZXdseUluV2luZG93ID0gIWlzSW5XaW5kb3coKSAmJiAobWF5SGF2ZUNoYW5nZWQgJiBW
aWV3U3RhdGU6OklzSW5XaW5kb3cpICYmIG1fcGFnZUNsaWVudC5pc1ZpZXdJbldpbmRvdygpOwot
ICAgIGlmIChkaXNwYXRjaE1vZGUgPT0gVmlld1N0YXRlQ2hhbmdlRGlzcGF0Y2hNb2RlOjpJbW1l
ZGlhdGUgfHwgaXNOZXdseUluV2luZG93KSB7Ci0gICAgICAgIGRpc3BhdGNoVmlld1N0YXRlQ2hh
bmdlKCk7CisgICAgYm9vbCBpc05ld2x5SW5XaW5kb3cgPSAhaXNJbldpbmRvdygpICYmIChtYXlI
YXZlQ2hhbmdlZCAmIEFjdGl2aXR5U3RhdGU6OklzSW5XaW5kb3cpICYmIG1fcGFnZUNsaWVudC5p
c1ZpZXdJbldpbmRvdygpOworICAgIGlmIChkaXNwYXRjaE1vZGUgPT0gQWN0aXZpdHlTdGF0ZUNo
YW5nZURpc3BhdGNoTW9kZTo6SW1tZWRpYXRlIHx8IGlzTmV3bHlJbldpbmRvdykgeworICAgICAg
ICBkaXNwYXRjaEFjdGl2aXR5U3RhdGVDaGFuZ2UoKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0K
LSAgICBtX3ZpZXdTdGF0ZUNoYW5nZURpc3BhdGNoZXItPnNjaGVkdWxlKCk7CisgICAgbV9hY3Rp
dml0eVN0YXRlQ2hhbmdlRGlzcGF0Y2hlci0+c2NoZWR1bGUoKTsKICNlbHNlCiAgICAgVU5VU0VE
X1BBUkFNKGRpc3BhdGNoTW9kZSk7Ci0gICAgZGlzcGF0Y2hWaWV3U3RhdGVDaGFuZ2UoKTsKKyAg
ICBkaXNwYXRjaEFjdGl2aXR5U3RhdGVDaGFuZ2UoKTsKICNlbmRpZgogfQogCkBAIC0xNTEwLDU0
ICsxNTEwLDU0IEBAIHZvaWQgV2ViUGFnZVByb3h5Ojp2aWV3RGlkRW50ZXJXaW5kb3coKQogICAg
IH0KIH0KIAotdm9pZCBXZWJQYWdlUHJveHk6OmRpc3BhdGNoVmlld1N0YXRlQ2hhbmdlKCkKK3Zv
aWQgV2ViUGFnZVByb3h5OjpkaXNwYXRjaEFjdGl2aXR5U3RhdGVDaGFuZ2UoKQogewogI2lmIFBM
QVRGT1JNKENPQ09BKQotICAgIG1fdmlld1N0YXRlQ2hhbmdlRGlzcGF0Y2hlci0+aW52YWxpZGF0
ZSgpOworICAgIG1fYWN0aXZpdHlTdGF0ZUNoYW5nZURpc3BhdGNoZXItPmludmFsaWRhdGUoKTsK
ICNlbmRpZgogCiAgICAgaWYgKCFpc1ZhbGlkKCkpCiAgICAgICAgIHJldHVybjsKIAogICAgIC8v
IElmIHRoZSB2aXNpYmlsaXR5IHN0YXRlIG1heSBoYXZlIGNoYW5nZWQsIHRoZW4gc28gbWF5IHRo
ZSB2aXN1YWxseSBpZGxlICYgb2NjbHVkZWQgYWdub3N0aWMgc3RhdGUuCi0gICAgaWYgKG1fcG90
ZW50aWFsbHlDaGFuZ2VkVmlld1N0YXRlRmxhZ3MgJiBWaWV3U3RhdGU6OklzVmlzaWJsZSkKLSAg
ICAgICAgbV9wb3RlbnRpYWxseUNoYW5nZWRWaWV3U3RhdGVGbGFncyB8PSBWaWV3U3RhdGU6Oklz
VmlzaWJsZU9yT2NjbHVkZWQgfCBWaWV3U3RhdGU6OklzVmlzdWFsbHlJZGxlOworICAgIGlmICht
X3BvdGVudGlhbGx5Q2hhbmdlZEFjdGl2aXR5U3RhdGVGbGFncyAmIEFjdGl2aXR5U3RhdGU6Oklz
VmlzaWJsZSkKKyAgICAgICAgbV9wb3RlbnRpYWxseUNoYW5nZWRBY3Rpdml0eVN0YXRlRmxhZ3Mg
fD0gQWN0aXZpdHlTdGF0ZTo6SXNWaXNpYmxlT3JPY2NsdWRlZCB8IEFjdGl2aXR5U3RhdGU6Oklz
VmlzdWFsbHlJZGxlOwogCiAgICAgLy8gUmVjb3JkIHRoZSBwcmlvciB2aWV3IHN0YXRlLCB1cGRh
dGUgdGhlIGZsYWdzIHRoYXQgbWF5IGhhdmUgY2hhbmdlZCwKICAgICAvLyBhbmQgY2hlY2sgd2hp
Y2ggZmxhZ3MgaGF2ZSBhY3R1YWxseSBjaGFuZ2VkLgotICAgIFZpZXdTdGF0ZTo6RmxhZ3MgcHJl
dmlvdXNWaWV3U3RhdGUgPSBtX3ZpZXdTdGF0ZTsKLSAgICB1cGRhdGVWaWV3U3RhdGUobV9wb3Rl
bnRpYWxseUNoYW5nZWRWaWV3U3RhdGVGbGFncyk7Ci0gICAgVmlld1N0YXRlOjpGbGFncyBjaGFu
Z2VkID0gbV92aWV3U3RhdGUgXiBwcmV2aW91c1ZpZXdTdGF0ZTsKKyAgICBBY3Rpdml0eVN0YXRl
OjpGbGFncyBwcmV2aW91c0FjdGl2aXR5U3RhdGUgPSBtX2FjdGl2aXR5U3RhdGU7CisgICAgdXBk
YXRlQWN0aXZpdHlTdGF0ZShtX3BvdGVudGlhbGx5Q2hhbmdlZEFjdGl2aXR5U3RhdGVGbGFncyk7
CisgICAgQWN0aXZpdHlTdGF0ZTo6RmxhZ3MgY2hhbmdlZCA9IG1fYWN0aXZpdHlTdGF0ZSBeIHBy
ZXZpb3VzQWN0aXZpdHlTdGF0ZTsKIAotICAgIGJvb2wgaXNOb3dJbldpbmRvdyA9IChjaGFuZ2Vk
ICYgVmlld1N0YXRlOjpJc0luV2luZG93KSAmJiBpc0luV2luZG93KCk7CisgICAgYm9vbCBpc05v
d0luV2luZG93ID0gKGNoYW5nZWQgJiBBY3Rpdml0eVN0YXRlOjpJc0luV2luZG93KSAmJiBpc0lu
V2luZG93KCk7CiAgICAgLy8gV2UgYWx3YXlzIHdhbnQgdG8gd2FpdCBmb3IgdGhlIFdlYiBwcm9j
ZXNzIHRvIHJlcGx5IGlmIHdlJ3ZlIGJlZW4gaW4td2luZG93IGJlZm9yZSBhbmQgYXJlIGNvbWlu
ZyBiYWNrIGluLXdpbmRvdy4KICAgICBpZiAobV92aWV3V2FzRXZlckluV2luZG93ICYmIGlzTm93
SW5XaW5kb3cgJiYgbV9kcmF3aW5nQXJlYS0+aGFzVmlzaWJsZUNvbnRlbnQoKSAmJiBtX3dhaXRz
Rm9yUGFpbnRBZnRlclZpZXdEaWRNb3ZlVG9XaW5kb3cpCi0gICAgICAgIG1fdmlld1N0YXRlQ2hh
bmdlV2FudHNTeW5jaHJvbm91c1JlcGx5ID0gdHJ1ZTsKKyAgICAgICAgbV9hY3Rpdml0eVN0YXRl
Q2hhbmdlV2FudHNTeW5jaHJvbm91c1JlcGx5ID0gdHJ1ZTsKIAogICAgIC8vIERvbid0IHdhaXQg
c3luY2hyb25vdXNseSBpZiB0aGUgdmlldyBzdGF0ZSBpcyBub3QgdmlzaWJsZS4gKFRoaXMgbWF0
dGVycyBpbiBwYXJ0aWN1bGFyIG9uIGlPUywgd2hlcmUgYSBoaWRkZW4gcGFnZSBtYXkgYmUgc3Vz
cGVuZGVkLikKLSAgICBpZiAoIShtX3ZpZXdTdGF0ZSAmIFZpZXdTdGF0ZTo6SXNWaXNpYmxlKSkK
LSAgICAgICAgbV92aWV3U3RhdGVDaGFuZ2VXYW50c1N5bmNocm9ub3VzUmVwbHkgPSBmYWxzZTsK
KyAgICBpZiAoIShtX2FjdGl2aXR5U3RhdGUgJiBBY3Rpdml0eVN0YXRlOjpJc1Zpc2libGUpKQor
ICAgICAgICBtX2FjdGl2aXR5U3RhdGVDaGFuZ2VXYW50c1N5bmNocm9ub3VzUmVwbHkgPSBmYWxz
ZTsKIAotICAgIGlmIChjaGFuZ2VkIHx8IG1fdmlld1N0YXRlQ2hhbmdlV2FudHNTeW5jaHJvbm91
c1JlcGx5IHx8ICFtX25leHRWaWV3U3RhdGVDaGFuZ2VDYWxsYmFja3MuaXNFbXB0eSgpKQotICAg
ICAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNldFZpZXdTdGF0ZShtX3Zp
ZXdTdGF0ZSwgbV92aWV3U3RhdGVDaGFuZ2VXYW50c1N5bmNocm9ub3VzUmVwbHksIG1fbmV4dFZp
ZXdTdGF0ZUNoYW5nZUNhbGxiYWNrcyksIG1fcGFnZUlEKTsKKyAgICBpZiAoY2hhbmdlZCB8fCBt
X2FjdGl2aXR5U3RhdGVDaGFuZ2VXYW50c1N5bmNocm9ub3VzUmVwbHkgfHwgIW1fbmV4dEFjdGl2
aXR5U3RhdGVDaGFuZ2VDYWxsYmFja3MuaXNFbXB0eSgpKQorICAgICAgICBtX3Byb2Nlc3MtPnNl
bmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNldEFjdGl2aXR5U3RhdGUobV9hY3Rpdml0eVN0YXRlLCBt
X2FjdGl2aXR5U3RhdGVDaGFuZ2VXYW50c1N5bmNocm9ub3VzUmVwbHksIG1fbmV4dEFjdGl2aXR5
U3RhdGVDaGFuZ2VDYWxsYmFja3MpLCBtX3BhZ2VJRCk7CiAKLSAgICBtX25leHRWaWV3U3RhdGVD
aGFuZ2VDYWxsYmFja3MuY2xlYXIoKTsKKyAgICBtX25leHRBY3Rpdml0eVN0YXRlQ2hhbmdlQ2Fs
bGJhY2tzLmNsZWFyKCk7CiAKLSAgICAvLyBUaGlzIG11c3QgaGFwcGVuIGFmdGVyIHRoZSBTZXRW
aWV3U3RhdGUgbWVzc2FnZSBpcyBzZW50LCB0byBlbnN1cmUgdGhlIHBhZ2UgdmlzaWJpbGl0eSBl
dmVudCBjYW4gZmlyZS4KKyAgICAvLyBUaGlzIG11c3QgaGFwcGVuIGFmdGVyIHRoZSBTZXRBY3Rp
dml0eVN0YXRlIG1lc3NhZ2UgaXMgc2VudCwgdG8gZW5zdXJlIHRoZSBwYWdlIHZpc2liaWxpdHkg
ZXZlbnQgY2FuIGZpcmUuCiAgICAgdXBkYXRlVGhyb3R0bGVTdGF0ZSgpOwogCiAgICAgLy8gSWYg
d2UndmUgc3RhcnRlZCB0aGUgcmVzcG9uc2l2ZW5lc3MgdGltZXIgYXMgcGFydCBvZiB0ZWxsaW5n
IHRoZSB3ZWIgcHJvY2VzcyB0byB1cGRhdGUgdGhlIGJhY2tpbmcgc3RvcmUKICAgICAvLyBzdGF0
ZSwgaXQgbWlnaHQgbm90IHNlbmQgYmFjayBhIHJlcGx5IChzaW5jZSBpdCB3b24ndCBwYWludCBh
bnl0aGluZyBpZiB0aGUgd2ViIHBhZ2UgaXMgaGlkZGVuKSBzbyB3ZQogICAgIC8vIHN0b3AgdGhl
IHVucmVzcG9uc2l2ZW5lc3MgdGltZXIgaGVyZS4KLSAgICBpZiAoKGNoYW5nZWQgJiBWaWV3U3Rh
dGU6OklzVmlzaWJsZSkgJiYgIWlzVmlld1Zpc2libGUoKSkKKyAgICBpZiAoKGNoYW5nZWQgJiBB
Y3Rpdml0eVN0YXRlOjpJc1Zpc2libGUpICYmICFpc1ZpZXdWaXNpYmxlKCkpCiAgICAgICAgIG1f
cHJvY2Vzcy0+cmVzcG9uc2l2ZW5lc3NUaW1lcigpLnN0b3AoKTsKIAogI2lmIEVOQUJMRShQT0lO
VEVSX0xPQ0spCi0gICAgaWYgKChjaGFuZ2VkICYgVmlld1N0YXRlOjpJc1Zpc2libGUpICYmICFp
c1ZpZXdWaXNpYmxlKCkpCisgICAgaWYgKChjaGFuZ2VkICYgQWN0aXZpdHlTdGF0ZTo6SXNWaXNp
YmxlKSAmJiAhaXNWaWV3VmlzaWJsZSgpKQogICAgICAgICByZXF1ZXN0UG9pbnRlclVubG9jaygp
OwogI2VuZGlmCiAKLSAgICBpZiAoY2hhbmdlZCAmIFZpZXdTdGF0ZTo6SXNJbldpbmRvdykgewor
ICAgIGlmIChjaGFuZ2VkICYgQWN0aXZpdHlTdGF0ZTo6SXNJbldpbmRvdykgewogICAgICAgICBp
ZiAoaXNJbldpbmRvdygpKQogICAgICAgICAgICAgdmlld0RpZEVudGVyV2luZG93KCk7CiAgICAg
ICAgIGVsc2UKQEAgLTE1NjYsMTEgKzE1NjYsMTEgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmRpc3Bh
dGNoVmlld1N0YXRlQ2hhbgogCiAgICAgdXBkYXRlQmFja2luZ1N0b3JlRGlzY2FyZGFibGVTdGF0
ZSgpOwogCi0gICAgaWYgKG1fdmlld1N0YXRlQ2hhbmdlV2FudHNTeW5jaHJvbm91c1JlcGx5KQot
ICAgICAgICB3YWl0Rm9yRGlkVXBkYXRlVmlld1N0YXRlKCk7CisgICAgaWYgKG1fYWN0aXZpdHlT
dGF0ZUNoYW5nZVdhbnRzU3luY2hyb25vdXNSZXBseSkKKyAgICAgICAgd2FpdEZvckRpZFVwZGF0
ZUFjdGl2aXR5U3RhdGUoKTsKIAotICAgIG1fcG90ZW50aWFsbHlDaGFuZ2VkVmlld1N0YXRlRmxh
Z3MgPSBWaWV3U3RhdGU6Ok5vRmxhZ3M7Ci0gICAgbV92aWV3U3RhdGVDaGFuZ2VXYW50c1N5bmNo
cm9ub3VzUmVwbHkgPSBmYWxzZTsKKyAgICBtX3BvdGVudGlhbGx5Q2hhbmdlZEFjdGl2aXR5U3Rh
dGVGbGFncyA9IEFjdGl2aXR5U3RhdGU6Ok5vRmxhZ3M7CisgICAgbV9hY3Rpdml0eVN0YXRlQ2hh
bmdlV2FudHNTeW5jaHJvbm91c1JlcGx5ID0gZmFsc2U7CiAgICAgbV92aWV3V2FzRXZlckluV2lu
ZG93IHw9IGlzTm93SW5XaW5kb3c7CiB9CiAKQEAgLTE1OTIsMTMgKzE1OTIsMTMgQEAgdm9pZCBX
ZWJQYWdlUHJveHk6OnVwZGF0ZVRocm90dGxlU3RhdGUoKQogICAgIC8vIFdlIHNob3VsZCBzdXBw
cmVzcyBpZiB0aGUgcGFnZSBpcyBub3QgYWN0aXZlLCBpcyB2aXN1YWxseSBpZGxlLCBhbmQgc3Vw
cmVzc2lvbiBpcyBlbmFibGVkLgogICAgIGJvb2wgaXNMb2FkaW5nID0gbV9wYWdlTG9hZFN0YXRl
LmlzTG9hZGluZygpOwogICAgIGJvb2wgaXNQbGF5aW5nQXVkaW8gPSBtX21lZGlhU3RhdGUgJiBN
ZWRpYVByb2R1Y2VyOjpJc1BsYXlpbmdBdWRpbyAmJiAhKG1fbXV0ZWRTdGF0ZSAmIE1lZGlhUHJv
ZHVjZXI6OkF1ZGlvSXNNdXRlZCk7Ci0gICAgYm9vbCBwYWdlU2hvdWxkQmVTdXBwcmVzc2VkID0g
IWlzTG9hZGluZyAmJiAhaXNQbGF5aW5nQXVkaW8gJiYgcHJvY2Vzc1N1cHByZXNzaW9uRW5hYmxl
ZCAmJiAobV92aWV3U3RhdGUgJiBWaWV3U3RhdGU6OklzVmlzdWFsbHlJZGxlKTsKKyAgICBib29s
IHBhZ2VTaG91bGRCZVN1cHByZXNzZWQgPSAhaXNMb2FkaW5nICYmICFpc1BsYXlpbmdBdWRpbyAm
JiBwcm9jZXNzU3VwcHJlc3Npb25FbmFibGVkICYmIChtX2FjdGl2aXR5U3RhdGUgJiBBY3Rpdml0
eVN0YXRlOjpJc1Zpc3VhbGx5SWRsZSk7CiAgICAgaWYgKG1fcGFnZVN1cHByZXNzZWQgIT0gcGFn
ZVNob3VsZEJlU3VwcHJlc3NlZCkgewogICAgICAgICBtX3BhZ2VTdXBwcmVzc2VkID0gcGFnZVNo
b3VsZEJlU3VwcHJlc3NlZDsKICAgICAgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQ
YWdlOjpTZXRQYWdlU3VwcHJlc3NlZChtX3BhZ2VTdXBwcmVzc2VkKSwgbV9wYWdlSUQpOwogICAg
IH0KIAotICAgIGlmIChtX3ZpZXdTdGF0ZSAmIFZpZXdTdGF0ZTo6SXNWaXN1YWxseUlkbGUpCisg
ICAgaWYgKG1fYWN0aXZpdHlTdGF0ZSAmIEFjdGl2aXR5U3RhdGU6OklzVmlzdWFsbHlJZGxlKQog
ICAgICAgICBtX3BhZ2VJc1VzZXJPYnNlcnZhYmxlQ291bnQgPSBudWxscHRyOwogICAgIGVsc2Ug
aWYgKCFtX3BhZ2VJc1VzZXJPYnNlcnZhYmxlQ291bnQpCiAgICAgICAgIG1fcGFnZUlzVXNlck9i
c2VydmFibGVDb3VudCA9IG1fcHJvY2Vzcy0+cHJvY2Vzc1Bvb2woKS51c2VyT2JzZXJ2YWJsZVBh
Z2VDb3VudCgpOwpAQCAtMTY0MCw3ICsxNjQwLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmxheWVy
SG9zdGluZ01vZGVEaWRDaAogICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6
U2V0TGF5ZXJIb3N0aW5nTW9kZShsYXllckhvc3RpbmdNb2RlKSwgbV9wYWdlSUQpOwogfQogCi12
b2lkIFdlYlBhZ2VQcm94eTo6d2FpdEZvckRpZFVwZGF0ZVZpZXdTdGF0ZSgpCit2b2lkIFdlYlBh
Z2VQcm94eTo6d2FpdEZvckRpZFVwZGF0ZUFjdGl2aXR5U3RhdGUoKQogewogICAgIGlmICghaXNW
YWxpZCgpKQogICAgICAgICByZXR1cm47CkBAIC0xNjQ5LDExICsxNjQ5LDExIEBAIHZvaWQgV2Vi
UGFnZVByb3h5Ojp3YWl0Rm9yRGlkVXBkYXRlVmlld1MKICAgICAgICAgcmV0dXJuOwogCiAgICAg
Ly8gSWYgd2UgaGF2ZSBwcmV2aW91c2x5IHRpbWVkIG91dCB3aXRoIG5vIHJlc3BvbnNlIGZyb20g
dGhlIFdlYlByb2Nlc3MsIGRvbid0IGJsb2NrIHRoZSBVSVByb2Nlc3MgYWdhaW4gdW50aWwgaXQg
c3RhcnRzIHJlc3BvbmRpbmcuCi0gICAgaWYgKG1fd2FpdGluZ0ZvckRpZFVwZGF0ZVZpZXdTdGF0
ZSkKKyAgICBpZiAobV93YWl0aW5nRm9yRGlkVXBkYXRlQWN0aXZpdHlTdGF0ZSkKICAgICAgICAg
cmV0dXJuOwogCiAjaWYgUExBVEZPUk0oSU9TKQotICAgIC8vIEhhaWwgTWFyeSBjaGVjay4gU2hv
dWxkIG5vdCBiZSBwb3NzaWJsZSAoZGlzcGF0Y2hWaWV3U3RhdGVDaGFuZ2Ugc2hvdWxkIGZvcmNl
IGFzeW5jIGlmIG5vdCB2aXNpYmxlLAorICAgIC8vIEhhaWwgTWFyeSBjaGVjay4gU2hvdWxkIG5v
dCBiZSBwb3NzaWJsZSAoZGlzcGF0Y2hBY3Rpdml0eVN0YXRlQ2hhbmdlIHNob3VsZCBmb3JjZSBh
c3luYyBpZiBub3QgdmlzaWJsZSwKICAgICAvLyBhbmQgaWYgdmlzaWJsZSB3ZSBzaG91bGQgYmUg
aG9sZGluZyBhbiBhc3NlcnRpb24pIC0gYnV0IHdlIHNob3VsZCBuZXZlciBibG9jayBvbiBhIHN1
c3BlbmRlZCBwcm9jZXNzLgogICAgIGlmICghbV9hY3Rpdml0eVRva2VuKSB7CiAgICAgICAgIEFT
U0VSVF9OT1RfUkVBQ0hFRCgpOwpAQCAtMTY2MSw5ICsxNjYxLDkgQEAgdm9pZCBXZWJQYWdlUHJv
eHk6OndhaXRGb3JEaWRVcGRhdGVWaWV3UwogICAgIH0KICNlbmRpZgogCi0gICAgbV93YWl0aW5n
Rm9yRGlkVXBkYXRlVmlld1N0YXRlID0gdHJ1ZTsKKyAgICBtX3dhaXRpbmdGb3JEaWRVcGRhdGVB
Y3Rpdml0eVN0YXRlID0gdHJ1ZTsKIAotICAgIG1fZHJhd2luZ0FyZWEtPndhaXRGb3JEaWRVcGRh
dGVWaWV3U3RhdGUoKTsKKyAgICBtX2RyYXdpbmdBcmVhLT53YWl0Rm9yRGlkVXBkYXRlQWN0aXZp
dHlTdGF0ZSgpOwogfQogCiBJbnRTaXplIFdlYlBhZ2VQcm94eTo6dmlld1NpemUoKSBjb25zdApA
QCAtNTQ2Myw3ICs1NDYzLDcgQEAgV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycyBXZWJQYWdlUHJv
eHk6OgogICAgIFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMgcGFyYW1ldGVyczsKIAogICAgIHBh
cmFtZXRlcnMudmlld1NpemUgPSBtX3BhZ2VDbGllbnQudmlld1NpemUoKTsKLSAgICBwYXJhbWV0
ZXJzLnZpZXdTdGF0ZSA9IG1fdmlld1N0YXRlOworICAgIHBhcmFtZXRlcnMuYWN0aXZpdHlTdGF0
ZSA9IG1fYWN0aXZpdHlTdGF0ZTsKICAgICBwYXJhbWV0ZXJzLmRyYXdpbmdBcmVhVHlwZSA9IG1f
ZHJhd2luZ0FyZWEtPnR5cGUoKTsKICAgICBwYXJhbWV0ZXJzLnN0b3JlID0gcHJlZmVyZW5jZXNT
dG9yZSgpOwogICAgIHBhcmFtZXRlcnMucGFnZUdyb3VwRGF0YSA9IG1fcGFnZUdyb3VwLT5kYXRh
KCk7CkBAIC02NDc0LDcgKzY0NzQsNyBAQCB2b2lkKiBXZWJQYWdlUHJveHk6OmltbWVkaWF0ZUFj
dGlvbkFuaW1hCiAgICAgcmV0dXJuIG1fcGFnZUNsaWVudC5pbW1lZGlhdGVBY3Rpb25BbmltYXRp
b25Db250cm9sbGVyRm9ySGl0VGVzdFJlc3VsdChoaXRUZXN0UmVzdWx0LCB0eXBlLCB1c2VyRGF0
YSk7CiB9CiAKLXZvaWQgV2ViUGFnZVByb3h5OjppbnN0YWxsVmlld1N0YXRlQ2hhbmdlQ29tcGxl
dGlvbkhhbmRsZXIodm9pZCAoXmNvbXBsZXRpb25IYW5kbGVyKSgpKQordm9pZCBXZWJQYWdlUHJv
eHk6Omluc3RhbGxBY3Rpdml0eVN0YXRlQ2hhbmdlQ29tcGxldGlvbkhhbmRsZXIodm9pZCAoXmNv
bXBsZXRpb25IYW5kbGVyKSgpKQogewogICAgIGlmICghaXNWYWxpZCgpKSB7CiAgICAgICAgIGNv
bXBsZXRpb25IYW5kbGVyKCk7CkBAIC02NDg3LDcgKzY0ODcsNyBAQCB2b2lkIFdlYlBhZ2VQcm94
eTo6aW5zdGFsbFZpZXdTdGF0ZUNoYW5nCiAgICAgICAgIEJsb2NrX3JlbGVhc2UoY29waWVkQ29t
cGxldGlvbkhhbmRsZXIpOwogICAgIH0sIG1fcHJvY2Vzcy0+dGhyb3R0bGVyKCkuYmFja2dyb3Vu
ZEFjdGl2aXR5VG9rZW4oKSk7CiAgICAgdWludDY0X3QgY2FsbGJhY2tJRCA9IG1fY2FsbGJhY2tz
LnB1dChXVEZNb3ZlKHZvaWRDYWxsYmFjaykpOwotICAgIG1fbmV4dFZpZXdTdGF0ZUNoYW5nZUNh
bGxiYWNrcy5hcHBlbmQoY2FsbGJhY2tJRCk7CisgICAgbV9uZXh0QWN0aXZpdHlTdGF0ZUNoYW5n
ZUNhbGxiYWNrcy5hcHBlbmQoY2FsbGJhY2tJRCk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5Ojpo
YW5kbGVBY2NlcHRlZENhbmRpZGF0ZShXZWJDb3JlOjpUZXh0Q2hlY2tpbmdSZXN1bHQgYWNjZXB0
ZWRDYW5kaWRhdGUpCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5o
CShyZXZpc2lvbiAyMDgxOTcpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVBy
b3h5LmgJKHdvcmtpbmcgY29weSkKQEAgLTYwLDYgKzYwLDcgQEAKICNpbmNsdWRlICJXZWJQYWdl
UHJveHlNZXNzYWdlcy5oIgogI2luY2x1ZGUgIldlYlBvcHVwTWVudVByb3h5LmgiCiAjaW5jbHVk
ZSAiV2ViUHJvY2Vzc0xpZmV0aW1lVHJhY2tlci5oIgorI2luY2x1ZGUgPFdlYkNvcmUvQWN0aXZp
dHlTdGF0ZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvQ29sb3IuaD4KICNpbmNsdWRlIDxXZWJDb3Jl
L0RyYWdBY3Rpb25zLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9FdmVudFRyYWNraW5nUmVnaW9ucy5o
PgpAQCAtNzMsNyArNzQsNiBAQAogI2luY2x1ZGUgPFdlYkNvcmUvVGV4dENoZWNraW5nLmg+CiAj
aW5jbHVkZSA8V2ViQ29yZS9UZXh0R3JhbnVsYXJpdHkuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1Vz
ZXJJbnRlcmZhY2VMYXlvdXREaXJlY3Rpb24uaD4KLSNpbmNsdWRlIDxXZWJDb3JlL1ZpZXdTdGF0
ZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvVmlzaWJsZVNlbGVjdGlvbi5oPgogI2luY2x1ZGUgPG1l
bW9yeT4KICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgpAQCAtNDI4LDE2ICs0MjgsMTYgQEAgcHVi
bGljOgogICAgIHZvaWQgc2V0RGVsZWdhdGVzU2Nyb2xsaW5nKGJvb2wgZGVsZWdhdGVzU2Nyb2xs
aW5nKSB7IG1fZGVsZWdhdGVzU2Nyb2xsaW5nID0gZGVsZWdhdGVzU2Nyb2xsaW5nOyB9CiAgICAg
Ym9vbCBkZWxlZ2F0ZXNTY3JvbGxpbmcoKSBjb25zdCB7IHJldHVybiBtX2RlbGVnYXRlc1Njcm9s
bGluZzsgfQogCi0gICAgZW51bSBjbGFzcyBWaWV3U3RhdGVDaGFuZ2VEaXNwYXRjaE1vZGUgeyBE
ZWZlcnJhYmxlLCBJbW1lZGlhdGUgfTsKLSAgICB2b2lkIHZpZXdTdGF0ZURpZENoYW5nZShXZWJD
b3JlOjpWaWV3U3RhdGU6OkZsYWdzIG1heUhhdmVDaGFuZ2VkLCBib29sIHdhbnRzU3luY2hyb25v
dXNSZXBseSA9IGZhbHNlLCBWaWV3U3RhdGVDaGFuZ2VEaXNwYXRjaE1vZGUgPSBWaWV3U3RhdGVD
aGFuZ2VEaXNwYXRjaE1vZGU6OkRlZmVycmFibGUpOwotICAgIGJvb2wgaXNJbldpbmRvdygpIGNv
bnN0IHsgcmV0dXJuIG1fdmlld1N0YXRlICYgV2ViQ29yZTo6Vmlld1N0YXRlOjpJc0luV2luZG93
OyB9Ci0gICAgdm9pZCB3YWl0Rm9yRGlkVXBkYXRlVmlld1N0YXRlKCk7Ci0gICAgdm9pZCBkaWRV
cGRhdGVWaWV3U3RhdGUoKSB7IG1fd2FpdGluZ0ZvckRpZFVwZGF0ZVZpZXdTdGF0ZSA9IGZhbHNl
OyB9CisgICAgZW51bSBjbGFzcyBBY3Rpdml0eVN0YXRlQ2hhbmdlRGlzcGF0Y2hNb2RlIHsgRGVm
ZXJyYWJsZSwgSW1tZWRpYXRlIH07CisgICAgdm9pZCBhY3Rpdml0eVN0YXRlRGlkQ2hhbmdlKFdl
YkNvcmU6OkFjdGl2aXR5U3RhdGU6OkZsYWdzIG1heUhhdmVDaGFuZ2VkLCBib29sIHdhbnRzU3lu
Y2hyb25vdXNSZXBseSA9IGZhbHNlLCBBY3Rpdml0eVN0YXRlQ2hhbmdlRGlzcGF0Y2hNb2RlID0g
QWN0aXZpdHlTdGF0ZUNoYW5nZURpc3BhdGNoTW9kZTo6RGVmZXJyYWJsZSk7CisgICAgYm9vbCBp
c0luV2luZG93KCkgY29uc3QgeyByZXR1cm4gbV9hY3Rpdml0eVN0YXRlICYgV2ViQ29yZTo6QWN0
aXZpdHlTdGF0ZTo6SXNJbldpbmRvdzsgfQorICAgIHZvaWQgd2FpdEZvckRpZFVwZGF0ZUFjdGl2
aXR5U3RhdGUoKTsKKyAgICB2b2lkIGRpZFVwZGF0ZUFjdGl2aXR5U3RhdGUoKSB7IG1fd2FpdGlu
Z0ZvckRpZFVwZGF0ZUFjdGl2aXR5U3RhdGUgPSBmYWxzZTsgfQogCiAgICAgdm9pZCBsYXllckhv
c3RpbmdNb2RlRGlkQ2hhbmdlKCk7CiAKICAgICBXZWJDb3JlOjpJbnRTaXplIHZpZXdTaXplKCkg
Y29uc3Q7Ci0gICAgYm9vbCBpc1ZpZXdWaXNpYmxlKCkgY29uc3QgeyByZXR1cm4gbV92aWV3U3Rh
dGUgJiBXZWJDb3JlOjpWaWV3U3RhdGU6OklzVmlzaWJsZTsgfQorICAgIGJvb2wgaXNWaWV3Vmlz
aWJsZSgpIGNvbnN0IHsgcmV0dXJuIG1fYWN0aXZpdHlTdGF0ZSAmIFdlYkNvcmU6OkFjdGl2aXR5
U3RhdGU6OklzVmlzaWJsZTsgfQogICAgIGJvb2wgaXNWaWV3V2luZG93QWN0aXZlKCkgY29uc3Q7
CiAKICAgICB2b2lkIGFkZE1JTUVUeXBlV2l0aEN1c3RvbUNvbnRlbnRQcm92aWRlcihjb25zdCBT
dHJpbmcmIG1pbWVUeXBlKTsKQEAgLTEwNjYsNyArMTA2Niw3IEBAIHB1YmxpYzoKIAogICAgIHZv
aWQqIGltbWVkaWF0ZUFjdGlvbkFuaW1hdGlvbkNvbnRyb2xsZXJGb3JIaXRUZXN0UmVzdWx0KFJl
ZlB0cjxBUEk6OkhpdFRlc3RSZXN1bHQ+LCB1aW50NjRfdCwgUmVmUHRyPEFQSTo6T2JqZWN0Pik7
CiAKLSAgICB2b2lkIGluc3RhbGxWaWV3U3RhdGVDaGFuZ2VDb21wbGV0aW9uSGFuZGxlcih2b2lk
KF5jb21wbGV0aW9uSGFuZGxlcikoKSk7CisgICAgdm9pZCBpbnN0YWxsQWN0aXZpdHlTdGF0ZUNo
YW5nZUNvbXBsZXRpb25IYW5kbGVyKHZvaWQoXmNvbXBsZXRpb25IYW5kbGVyKSgpKTsKIAogICAg
IHZvaWQgaGFuZGxlQWNjZXB0ZWRDYW5kaWRhdGUoV2ViQ29yZTo6VGV4dENoZWNraW5nUmVzdWx0
KTsKICAgICB2b2lkIGRpZEhhbmRsZUFjY2VwdGVkQ2FuZGlkYXRlKCk7CkBAIC0xMTQ4LDcgKzEx
NDgsNyBAQCBwcml2YXRlOgogICAgIFdlYlBhZ2VQcm94eShQYWdlQ2xpZW50JiwgV2ViUHJvY2Vz
c1Byb3h5JiwgdWludDY0X3QgcGFnZUlELCBSZWY8QVBJOjpQYWdlQ29uZmlndXJhdGlvbj4mJik7
CiAgICAgdm9pZCBwbGF0Zm9ybUluaXRpYWxpemUoKTsKIAotICAgIHZvaWQgdXBkYXRlVmlld1N0
YXRlKFdlYkNvcmU6OlZpZXdTdGF0ZTo6RmxhZ3MgZmxhZ3NUb1VwZGF0ZSA9IFdlYkNvcmU6OlZp
ZXdTdGF0ZTo6QWxsRmxhZ3MpOworICAgIHZvaWQgdXBkYXRlQWN0aXZpdHlTdGF0ZShXZWJDb3Jl
OjpBY3Rpdml0eVN0YXRlOjpGbGFncyBmbGFnc1RvVXBkYXRlID0gV2ViQ29yZTo6QWN0aXZpdHlT
dGF0ZTo6QWxsRmxhZ3MpOwogICAgIHZvaWQgdXBkYXRlVGhyb3R0bGVTdGF0ZSgpOwogICAgIHZv
aWQgdXBkYXRlSGlkZGVuUGFnZVRocm90dGxpbmdBdXRvSW5jcmVhc2VzKCk7CiAKQEAgLTE1MzMs
NyArMTUzMyw3IEBAIHByaXZhdGU6CiAKICAgICBXZWJQcmVmZXJlbmNlc1N0b3JlIHByZWZlcmVu
Y2VzU3RvcmUoKSBjb25zdDsKIAotICAgIHZvaWQgZGlzcGF0Y2hWaWV3U3RhdGVDaGFuZ2UoKTsK
KyAgICB2b2lkIGRpc3BhdGNoQWN0aXZpdHlTdGF0ZUNoYW5nZSgpOwogICAgIHZvaWQgdmlld0Rp
ZExlYXZlV2luZG93KCk7CiAgICAgdm9pZCB2aWV3RGlkRW50ZXJXaW5kb3coKTsKIApAQCAtMTY1
OCw3ICsxNjU4LDcgQEAgcHJpdmF0ZToKIAogICAgIFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0
TWFuYWdlclByb3h5IG1fdXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyOwogCi0gICAg
V2ViQ29yZTo6Vmlld1N0YXRlOjpGbGFncyBtX3ZpZXdTdGF0ZTsKKyAgICBXZWJDb3JlOjpBY3Rp
dml0eVN0YXRlOjpGbGFncyBtX2FjdGl2aXR5U3RhdGU7CiAgICAgYm9vbCBtX3ZpZXdXYXNFdmVy
SW5XaW5kb3c7CiAjaWYgUExBVEZPUk0oSU9TKQogICAgIGJvb2wgbV9hbGxvd3NNZWRpYURvY3Vt
ZW50SW5saW5lUGxheWJhY2sgeyBmYWxzZSB9OwpAQCAtMTg2MCwxNCArMTg2MCwxNCBAQCBwcml2
YXRlOgogICAgIFdlYkNvcmU6Ok1lZGlhUHJvZHVjZXI6Ok11dGVkU3RhdGVGbGFncyBtX211dGVk
U3RhdGUgeyBXZWJDb3JlOjpNZWRpYVByb2R1Y2VyOjpOb25lTXV0ZWQgfTsKICAgICBib29sIG1f
bWF5U3RhcnRNZWRpYVdoZW5JbldpbmRvdzsKIAotICAgIGJvb2wgbV93YWl0aW5nRm9yRGlkVXBk
YXRlVmlld1N0YXRlOworICAgIGJvb2wgbV93YWl0aW5nRm9yRGlkVXBkYXRlQWN0aXZpdHlTdGF0
ZTsKIAogICAgIGJvb2wgbV9zaG91bGRTY2FsZVZpZXdUb0ZpdERvY3VtZW50IHsgZmFsc2UgfTsK
ICAgICBib29sIG1fc3VwcHJlc3NBdXRvbWF0aWNOYXZpZ2F0aW9uU25hcHNob3R0aW5nIHsgZmFs
c2UgfTsKIAogI2lmIFBMQVRGT1JNKENPQ09BKQogICAgIEhhc2hNYXA8U3RyaW5nLCBTdHJpbmc+
IG1fdGVtcG9yYXJ5UERGRmlsZXM7Ci0gICAgc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6OlJ1bkxv
b3BPYnNlcnZlcj4gbV92aWV3U3RhdGVDaGFuZ2VEaXNwYXRjaGVyOworICAgIHN0ZDo6dW5pcXVl
X3B0cjxXZWJDb3JlOjpSdW5Mb29wT2JzZXJ2ZXI+IG1fYWN0aXZpdHlTdGF0ZUNoYW5nZURpc3Bh
dGNoZXI7CiAKICAgICBzdGQ6OnVuaXF1ZV9wdHI8UmVtb3RlTGF5ZXJUcmVlU2Nyb2xsaW5nUGVy
Zm9ybWFuY2VEYXRhPiBtX3Njcm9sbGluZ1BlcmZvcm1hbmNlRGF0YTsKICAgICBib29sIG1fc2Ny
b2xsUGVyZm9ybWFuY2VEYXRhQ29sbGVjdGlvbkVuYWJsZWQ7CkBAIC0xODgyLDkgKzE4ODIsOSBA
QCBwcml2YXRlOgogICAgIHVpbnQ2NF90IG1fbmF2aWdhdGlvbklEOwogCiAgICAgV2ViUHJlZmVy
ZW5jZXNTdG9yZTo6VmFsdWVNYXAgbV9jb25maWd1cmF0aW9uUHJlZmVyZW5jZVZhbHVlczsKLSAg
ICBXZWJDb3JlOjpWaWV3U3RhdGU6OkZsYWdzIG1fcG90ZW50aWFsbHlDaGFuZ2VkVmlld1N0YXRl
RmxhZ3M7Ci0gICAgYm9vbCBtX3ZpZXdTdGF0ZUNoYW5nZVdhbnRzU3luY2hyb25vdXNSZXBseTsK
LSAgICBWZWN0b3I8dWludDY0X3Q+IG1fbmV4dFZpZXdTdGF0ZUNoYW5nZUNhbGxiYWNrczsKKyAg
ICBXZWJDb3JlOjpBY3Rpdml0eVN0YXRlOjpGbGFncyBtX3BvdGVudGlhbGx5Q2hhbmdlZEFjdGl2
aXR5U3RhdGVGbGFnczsKKyAgICBib29sIG1fYWN0aXZpdHlTdGF0ZUNoYW5nZVdhbnRzU3luY2hy
b25vdXNSZXBseTsKKyAgICBWZWN0b3I8dWludDY0X3Q+IG1fbmV4dEFjdGl2aXR5U3RhdGVDaGFu
Z2VDYWxsYmFja3M7CiAKICAgICBXZWJDb3JlOjpNZWRpYVByb2R1Y2VyOjpNZWRpYVN0YXRlRmxh
Z3MgbV9tZWRpYVN0YXRlIHsgV2ViQ29yZTo6TWVkaWFQcm9kdWNlcjo6SXNOb3RQbGF5aW5nIH07
CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMu
aW4KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5t
ZXNzYWdlcy5pbgkocmV2aXNpb24gMjA4MTk3KQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbgkod29ya2luZyBjb3B5KQpAQCAtNDA3LDcgKzQwNyw3
IEBAIG1lc3NhZ2VzIC0+IFdlYlBhZ2VQcm94eSB7CiAgICAgRmluZFBsdWdpbihTdHJpbmcgbWlt
ZVR5cGUsIHVpbnQzMl90IHByb2Nlc3NUeXBlLCBTdHJpbmcgdXJsU3RyaW5nLCBTdHJpbmcgZnJh
bWVVUkxTdHJpbmcsIFN0cmluZyBwYWdlVVJMU3RyaW5nLCBib29sIGFsbG93T25seUFwcGxpY2F0
aW9uUGx1Z2lucykgLT4gKHVpbnQ2NF90IHBsdWdpblByb2Nlc3NUb2tlbiwgU3RyaW5nIG5ld01J
TUVUeXBlLCB1aW50MzJfdCBwbHVnaW5Mb2FkUG9saWN5LCBTdHJpbmcgdW5hdmFpbGFiaWxpdHlE
ZXNjcmlwdGlvbikKICNlbmRpZgogCi0gICAgRGlkVXBkYXRlVmlld1N0YXRlKCkKKyAgICBEaWRV
cGRhdGVBY3Rpdml0eVN0YXRlKCkKIAogICAgIERpZFNhdmVUb1BhZ2VDYWNoZSgpCiAKSW5kZXg6
IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwCShyZXZpc2lv
biAyMDgxOTcpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNw
cAkod29ya2luZyBjb3B5KQpAQCAtNzE1LDcgKzcxNSw3IEBAIHZvaWQgV2ViUHJvY2Vzc1Byb3h5
OjpyZWxlYXNlUGFnZUNhY2hlKCkKIHZvaWQgV2ViUHJvY2Vzc1Byb3h5Ojp3aW5kb3dTZXJ2ZXJD
b25uZWN0aW9uU3RhdGVDaGFuZ2VkKCkKIHsKICAgICBmb3IgKGNvbnN0IGF1dG8mIHBhZ2UgOiBt
X3BhZ2VNYXAudmFsdWVzKCkpCi0gICAgICAgIHBhZ2UtPnZpZXdTdGF0ZURpZENoYW5nZShWaWV3
U3RhdGU6OklzVmlzdWFsbHlJZGxlKTsKKyAgICAgICAgcGFnZS0+YWN0aXZpdHlTdGF0ZURpZENo
YW5nZShBY3Rpdml0eVN0YXRlOjpJc1Zpc3VhbGx5SWRsZSk7CiB9CiAKIHZvaWQgV2ViUHJvY2Vz
c1Byb3h5OjpmZXRjaFdlYnNpdGVEYXRhKFNlc3Npb25JRCBzZXNzaW9uSUQsIE9wdGlvblNldDxX
ZWJzaXRlRGF0YVR5cGU+IGRhdGFUeXBlcywgRnVuY3Rpb248dm9pZCAoV2Vic2l0ZURhdGEpPiBj
b21wbGV0aW9uSGFuZGxlcikKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29j
b2EvV0tXZWJWaWV3Lm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvQ29jb2EvV0tXZWJWaWV3Lm1tCShyZXZpc2lvbiAyMDgxOTcpCisrKyBTb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbQkod29ya2luZyBjb3B5KQpAQCAtMTcz
MCw3ICsxNzMwLDcgQEAgLSAoQk9PTClfem9vbVRvUmVjdDooV2ViQ29yZTo6RmxvYXRSZWN0KQog
CiAtICh2b2lkKWRpZE1vdmVUb1dpbmRvdwogewotICAgIF9wYWdlLT52aWV3U3RhdGVEaWRDaGFu
Z2UoV2ViQ29yZTo6Vmlld1N0YXRlOjpBbGxGbGFncyk7CisgICAgX3BhZ2UtPmFjdGl2aXR5U3Rh
dGVEaWRDaGFuZ2UoV2ViQ29yZTo6QWN0aXZpdHlTdGF0ZTo6QWxsRmxhZ3MpOwogfQogCiAtICh2
b2lkKXNldE9wYXF1ZTooQk9PTClvcGFxdWUKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvZ3RrL1dlYktpdFdlYlZpZXdCYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3QmFzZS5jcHAJKHJldmlzaW9uIDIw
ODE5NykKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXdC
YXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzEsNiArMzEsNyBAQAogCiAjaW5jbHVkZSAiQVBJ
UGFnZUNvbmZpZ3VyYXRpb24uaCIKICNpbmNsdWRlICJBY2NlbGVyYXRlZEJhY2tpbmdTdG9yZS5o
IgorI2luY2x1ZGUgIkFjdGl2aXR5U3RhdGUuaCIKICNpbmNsdWRlICJEcmF3aW5nQXJlYVByb3h5
SW1wbC5oIgogI2luY2x1ZGUgIklucHV0TWV0aG9kRmlsdGVyLmgiCiAjaW5jbHVkZSAiS2V5Qmlu
ZGluZ1RyYW5zbGF0b3IuaCIKQEAgLTM4LDcgKzM5LDYgQEAKICNpbmNsdWRlICJOYXRpdmVXZWJN
b3VzZUV2ZW50LmgiCiAjaW5jbHVkZSAiTmF0aXZlV2ViV2hlZWxFdmVudC5oIgogI2luY2x1ZGUg
IlBhZ2VDbGllbnRJbXBsLmgiCi0jaW5jbHVkZSAiVmlld1N0YXRlLmgiCiAjaW5jbHVkZSAiV2Vi
RXZlbnRGYWN0b3J5LmgiCiAjaW5jbHVkZSAiV2ViRnVsbFNjcmVlbkNsaWVudEd0ay5oIgogI2lu
Y2x1ZGUgIldlYkluc3BlY3RvclByb3h5LmgiCkBAIC0xNDYsMTYgKzE0NiwxNiBAQCB0eXBlZGVm
IEhhc2hNYXA8dWludDMyX3QsIEdVbmlxdWVQdHI8R2RrCiAKIHN0cnVjdCBfV2ViS2l0V2ViVmll
d0Jhc2VQcml2YXRlIHsKICAgICBfV2ViS2l0V2ViVmlld0Jhc2VQcml2YXRlKCkKLSAgICAgICAg
OiB1cGRhdGVWaWV3U3RhdGVUaW1lcihSdW5Mb29wOjptYWluKCksIHRoaXMsICZfV2ViS2l0V2Vi
Vmlld0Jhc2VQcml2YXRlOjp1cGRhdGVWaWV3U3RhdGVUaW1lckZpcmVkKQorICAgICAgICA6IHVw
ZGF0ZUFjdGl2aXR5U3RhdGVUaW1lcihSdW5Mb29wOjptYWluKCksIHRoaXMsICZfV2ViS2l0V2Vi
Vmlld0Jhc2VQcml2YXRlOjp1cGRhdGVBY3Rpdml0eVN0YXRlVGltZXJGaXJlZCkKICAgICB7CiAg
ICAgfQogCi0gICAgdm9pZCB1cGRhdGVWaWV3U3RhdGVUaW1lckZpcmVkKCkKKyAgICB2b2lkIHVw
ZGF0ZUFjdGl2aXR5U3RhdGVUaW1lckZpcmVkKCkKICAgICB7CiAgICAgICAgIGlmICghcGFnZVBy
b3h5KQogICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICBwYWdlUHJveHktPnZpZXdTdGF0ZURp
ZENoYW5nZSh2aWV3U3RhdGVGbGFnc1RvVXBkYXRlKTsKLSAgICAgICAgdmlld1N0YXRlRmxhZ3NU
b1VwZGF0ZSA9IFZpZXdTdGF0ZTo6Tm9GbGFnczsKKyAgICAgICAgcGFnZVByb3h5LT5hY3Rpdml0
eVN0YXRlRGlkQ2hhbmdlKGFjdGl2aXR5U3RhdGVGbGFnc1RvVXBkYXRlKTsKKyAgICAgICAgYWN0
aXZpdHlTdGF0ZUZsYWdzVG9VcGRhdGUgPSBBY3Rpdml0eVN0YXRlOjpOb0ZsYWdzOwogICAgIH0K
IAogICAgIFdlYktpdFdlYlZpZXdDaGlsZHJlbk1hcCBjaGlsZHJlbjsKQEAgLTE4NSw5ICsxODUs
OSBAQCBzdHJ1Y3QgX1dlYktpdFdlYlZpZXdCYXNlUHJpdmF0ZSB7CiAgICAgdW5zaWduZWQgbG9u
ZyB0b3BsZXZlbFdpbmRvd1JlYWxpemVkSUQ7CiAKICAgICAvLyBWaWV3IFN0YXRlLgotICAgIFZp
ZXdTdGF0ZTo6RmxhZ3Mgdmlld1N0YXRlOwotICAgIFZpZXdTdGF0ZTo6RmxhZ3Mgdmlld1N0YXRl
RmxhZ3NUb1VwZGF0ZTsKLSAgICBSdW5Mb29wOjpUaW1lcjxXZWJLaXRXZWJWaWV3QmFzZVByaXZh
dGU+IHVwZGF0ZVZpZXdTdGF0ZVRpbWVyOworICAgIEFjdGl2aXR5U3RhdGU6OkZsYWdzIGFjdGl2
aXR5U3RhdGU7CisgICAgQWN0aXZpdHlTdGF0ZTo6RmxhZ3MgYWN0aXZpdHlTdGF0ZUZsYWdzVG9V
cGRhdGU7CisgICAgUnVuTG9vcDo6VGltZXI8V2ViS2l0V2ViVmlld0Jhc2VQcml2YXRlPiB1cGRh
dGVBY3Rpdml0eVN0YXRlVGltZXI7CiAKICAgICBXZWJLaXRXZWJWaWV3QmFzZURvd25sb2FkUmVx
dWVzdEhhbmRsZXIgZG93bmxvYWRIYW5kbGVyOwogCkBAIC0yMTIsMTQgKzIxMiwxNCBAQCBzdHJ1
Y3QgX1dlYktpdFdlYlZpZXdCYXNlUHJpdmF0ZSB7CiAKIFdFQktJVF9ERUZJTkVfVFlQRShXZWJL
aXRXZWJWaWV3QmFzZSwgd2Via2l0X3dlYl92aWV3X2Jhc2UsIEdUS19UWVBFX0NPTlRBSU5FUikK
IAotc3RhdGljIHZvaWQgd2Via2l0V2ViVmlld0Jhc2VTY2hlZHVsZVVwZGF0ZVZpZXdTdGF0ZShX
ZWJLaXRXZWJWaWV3QmFzZSogd2ViVmlld0Jhc2UsIFZpZXdTdGF0ZTo6RmxhZ3MgZmxhZ3NUb1Vw
ZGF0ZSkKK3N0YXRpYyB2b2lkIHdlYmtpdFdlYlZpZXdCYXNlU2NoZWR1bGVVcGRhdGVBY3Rpdml0
eVN0YXRlKFdlYktpdFdlYlZpZXdCYXNlKiB3ZWJWaWV3QmFzZSwgQWN0aXZpdHlTdGF0ZTo6Rmxh
Z3MgZmxhZ3NUb1VwZGF0ZSkKIHsKICAgICBXZWJLaXRXZWJWaWV3QmFzZVByaXZhdGUqIHByaXYg
PSB3ZWJWaWV3QmFzZS0+cHJpdjsKLSAgICBwcml2LT52aWV3U3RhdGVGbGFnc1RvVXBkYXRlIHw9
IGZsYWdzVG9VcGRhdGU7Ci0gICAgaWYgKHByaXYtPnVwZGF0ZVZpZXdTdGF0ZVRpbWVyLmlzQWN0
aXZlKCkpCisgICAgcHJpdi0+YWN0aXZpdHlTdGF0ZUZsYWdzVG9VcGRhdGUgfD0gZmxhZ3NUb1Vw
ZGF0ZTsKKyAgICBpZiAocHJpdi0+dXBkYXRlQWN0aXZpdHlTdGF0ZVRpbWVyLmlzQWN0aXZlKCkp
CiAgICAgICAgIHJldHVybjsKIAotICAgIHByaXYtPnVwZGF0ZVZpZXdTdGF0ZVRpbWVyLnN0YXJ0
T25lU2hvdCgwKTsKKyAgICBwcml2LT51cGRhdGVBY3Rpdml0eVN0YXRlVGltZXIuc3RhcnRPbmVT
aG90KDApOwogfQogCiBzdGF0aWMgZ2Jvb2xlYW4gdG9wbGV2ZWxXaW5kb3dGb2N1c0luRXZlbnQo
R3RrV2lkZ2V0KiB3aWRnZXQsIEdka0V2ZW50Rm9jdXMqLCBXZWJLaXRXZWJWaWV3QmFzZSogd2Vi
Vmlld0Jhc2UpCkBAIC0yMjksMTEgKzIyOSwxMSBAQCBzdGF0aWMgZ2Jvb2xlYW4gdG9wbGV2ZWxX
aW5kb3dGb2N1c0luRXZlCiAgICAgICAgIHJldHVybiBGQUxTRTsKIAogICAgIFdlYktpdFdlYlZp
ZXdCYXNlUHJpdmF0ZSogcHJpdiA9IHdlYlZpZXdCYXNlLT5wcml2OwotICAgIGlmIChwcml2LT52
aWV3U3RhdGUgJiBWaWV3U3RhdGU6OldpbmRvd0lzQWN0aXZlKQorICAgIGlmIChwcml2LT5hY3Rp
dml0eVN0YXRlICYgQWN0aXZpdHlTdGF0ZTo6V2luZG93SXNBY3RpdmUpCiAgICAgICAgIHJldHVy
biBGQUxTRTsKIAotICAgIHByaXYtPnZpZXdTdGF0ZSB8PSBWaWV3U3RhdGU6OldpbmRvd0lzQWN0
aXZlOwotICAgIHdlYmtpdFdlYlZpZXdCYXNlU2NoZWR1bGVVcGRhdGVWaWV3U3RhdGUod2ViVmll
d0Jhc2UsIFZpZXdTdGF0ZTo6V2luZG93SXNBY3RpdmUpOworICAgIHByaXYtPmFjdGl2aXR5U3Rh
dGUgfD0gQWN0aXZpdHlTdGF0ZTo6V2luZG93SXNBY3RpdmU7CisgICAgd2Via2l0V2ViVmlld0Jh
c2VTY2hlZHVsZVVwZGF0ZUFjdGl2aXR5U3RhdGUod2ViVmlld0Jhc2UsIEFjdGl2aXR5U3RhdGU6
OldpbmRvd0lzQWN0aXZlKTsKIAogICAgIHJldHVybiBGQUxTRTsKIH0KQEAgLTI0MSwxMSArMjQx
LDExIEBAIHN0YXRpYyBnYm9vbGVhbiB0b3BsZXZlbFdpbmRvd0ZvY3VzSW5FdmUKIHN0YXRpYyBn
Ym9vbGVhbiB0b3BsZXZlbFdpbmRvd0ZvY3VzT3V0RXZlbnQoR3RrV2lkZ2V0KiwgR2RrRXZlbnRG
b2N1cyosIFdlYktpdFdlYlZpZXdCYXNlKiB3ZWJWaWV3QmFzZSkKIHsKICAgICBXZWJLaXRXZWJW
aWV3QmFzZVByaXZhdGUqIHByaXYgPSB3ZWJWaWV3QmFzZS0+cHJpdjsKLSAgICBpZiAoIShwcml2
LT52aWV3U3RhdGUgJiBWaWV3U3RhdGU6OldpbmRvd0lzQWN0aXZlKSkKKyAgICBpZiAoIShwcml2
LT5hY3Rpdml0eVN0YXRlICYgQWN0aXZpdHlTdGF0ZTo6V2luZG93SXNBY3RpdmUpKQogICAgICAg
ICByZXR1cm4gRkFMU0U7CiAKLSAgICBwcml2LT52aWV3U3RhdGUgJj0gflZpZXdTdGF0ZTo6V2lu
ZG93SXNBY3RpdmU7Ci0gICAgd2Via2l0V2ViVmlld0Jhc2VTY2hlZHVsZVVwZGF0ZVZpZXdTdGF0
ZSh3ZWJWaWV3QmFzZSwgVmlld1N0YXRlOjpXaW5kb3dJc0FjdGl2ZSk7CisgICAgcHJpdi0+YWN0
aXZpdHlTdGF0ZSAmPSB+QWN0aXZpdHlTdGF0ZTo6V2luZG93SXNBY3RpdmU7CisgICAgd2Via2l0
V2ViVmlld0Jhc2VTY2hlZHVsZVVwZGF0ZUFjdGl2aXR5U3RhdGUod2ViVmlld0Jhc2UsIEFjdGl2
aXR5U3RhdGU6OldpbmRvd0lzQWN0aXZlKTsKIAogICAgIHJldHVybiBGQUxTRTsKIH0KQEAgLTI1
NywxNCArMjU3LDE0IEBAIHN0YXRpYyBnYm9vbGVhbiB0b3BsZXZlbFdpbmRvd1N0YXRlRXZlbnQK
ICAgICAgICAgcmV0dXJuIEZBTFNFOwogCiAgICAgYm9vbCB2aXNpYmxlID0gIShldmVudC0+bmV3
X3dpbmRvd19zdGF0ZSAmIEdES19XSU5ET1dfU1RBVEVfSUNPTklGSUVEKTsKLSAgICBpZiAoKHZp
c2libGUgJiYgcHJpdi0+dmlld1N0YXRlICYgVmlld1N0YXRlOjpJc1Zpc2libGUpIHx8ICghdmlz
aWJsZSAmJiAhKHByaXYtPnZpZXdTdGF0ZSAmIFZpZXdTdGF0ZTo6SXNWaXNpYmxlKSkpCisgICAg
aWYgKCh2aXNpYmxlICYmIHByaXYtPmFjdGl2aXR5U3RhdGUgJiBBY3Rpdml0eVN0YXRlOjpJc1Zp
c2libGUpIHx8ICghdmlzaWJsZSAmJiAhKHByaXYtPmFjdGl2aXR5U3RhdGUgJiBBY3Rpdml0eVN0
YXRlOjpJc1Zpc2libGUpKSkKICAgICAgICAgcmV0dXJuIEZBTFNFOwogCiAgICAgaWYgKHZpc2li
bGUpCi0gICAgICAgIHByaXYtPnZpZXdTdGF0ZSB8PSBWaWV3U3RhdGU6OklzVmlzaWJsZTsKKyAg
ICAgICAgcHJpdi0+YWN0aXZpdHlTdGF0ZSB8PSBBY3Rpdml0eVN0YXRlOjpJc1Zpc2libGU7CiAg
ICAgZWxzZQotICAgICAgICBwcml2LT52aWV3U3RhdGUgJj0gflZpZXdTdGF0ZTo6SXNWaXNpYmxl
OwotICAgIHdlYmtpdFdlYlZpZXdCYXNlU2NoZWR1bGVVcGRhdGVWaWV3U3RhdGUod2ViVmlld0Jh
c2UsIFZpZXdTdGF0ZTo6SXNWaXNpYmxlKTsKKyAgICAgICAgcHJpdi0+YWN0aXZpdHlTdGF0ZSAm
PSB+QWN0aXZpdHlTdGF0ZTo6SXNWaXNpYmxlOworICAgIHdlYmtpdFdlYlZpZXdCYXNlU2NoZWR1
bGVVcGRhdGVBY3Rpdml0eVN0YXRlKHdlYlZpZXdCYXNlLCBBY3Rpdml0eVN0YXRlOjpJc1Zpc2li
bGUpOwogCiAgICAgcmV0dXJuIEZBTFNFOwogfQpAQCAtMzA2LDE3ICszMDYsMTcgQEAgc3RhdGlj
IHZvaWQgd2Via2l0V2ViVmlld0Jhc2VTZXRUb3BsZXZlbAogICAgIHByaXYtPnRvcGxldmVsT25T
Y3JlZW5XaW5kb3cgPSB3aW5kb3c7CiAKICAgICBpZiAoIXByaXYtPnRvcGxldmVsT25TY3JlZW5X
aW5kb3cpIHsKLSAgICAgICAgVmlld1N0YXRlOjpGbGFncyBmbGFnc1RvVXBkYXRlID0gMDsKLSAg
ICAgICAgaWYgKHByaXYtPnZpZXdTdGF0ZSAmIFZpZXdTdGF0ZTo6SXNJbldpbmRvdykgewotICAg
ICAgICAgICAgcHJpdi0+dmlld1N0YXRlICY9IH5WaWV3U3RhdGU6OklzSW5XaW5kb3c7Ci0gICAg
ICAgICAgICBmbGFnc1RvVXBkYXRlIHw9IFZpZXdTdGF0ZTo6SXNJbldpbmRvdzsKKyAgICAgICAg
QWN0aXZpdHlTdGF0ZTo6RmxhZ3MgZmxhZ3NUb1VwZGF0ZSA9IDA7CisgICAgICAgIGlmIChwcml2
LT5hY3Rpdml0eVN0YXRlICYgQWN0aXZpdHlTdGF0ZTo6SXNJbldpbmRvdykgeworICAgICAgICAg
ICAgcHJpdi0+YWN0aXZpdHlTdGF0ZSAmPSB+QWN0aXZpdHlTdGF0ZTo6SXNJbldpbmRvdzsKKyAg
ICAgICAgICAgIGZsYWdzVG9VcGRhdGUgfD0gQWN0aXZpdHlTdGF0ZTo6SXNJbldpbmRvdzsKICAg
ICAgICAgfQotICAgICAgICBpZiAocHJpdi0+dmlld1N0YXRlICYgVmlld1N0YXRlOjpXaW5kb3dJ
c0FjdGl2ZSkgewotICAgICAgICAgICAgcHJpdi0+dmlld1N0YXRlICY9IH5WaWV3U3RhdGU6Oldp
bmRvd0lzQWN0aXZlOwotICAgICAgICAgICAgZmxhZ3NUb1VwZGF0ZSB8PSBWaWV3U3RhdGU6Oklz
SW5XaW5kb3c7CisgICAgICAgIGlmIChwcml2LT5hY3Rpdml0eVN0YXRlICYgQWN0aXZpdHlTdGF0
ZTo6V2luZG93SXNBY3RpdmUpIHsKKyAgICAgICAgICAgIHByaXYtPmFjdGl2aXR5U3RhdGUgJj0g
fkFjdGl2aXR5U3RhdGU6OldpbmRvd0lzQWN0aXZlOworICAgICAgICAgICAgZmxhZ3NUb1VwZGF0
ZSB8PSBBY3Rpdml0eVN0YXRlOjpJc0luV2luZG93OwogICAgICAgICB9CiAgICAgICAgIGlmIChm
bGFnc1RvVXBkYXRlKQotICAgICAgICAgICAgd2Via2l0V2ViVmlld0Jhc2VTY2hlZHVsZVVwZGF0
ZVZpZXdTdGF0ZSh3ZWJWaWV3QmFzZSwgZmxhZ3NUb1VwZGF0ZSk7CisgICAgICAgICAgICB3ZWJr
aXRXZWJWaWV3QmFzZVNjaGVkdWxlVXBkYXRlQWN0aXZpdHlTdGF0ZSh3ZWJWaWV3QmFzZSwgZmxh
Z3NUb1VwZGF0ZSk7CiAKICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAgLTYzMSwyMCArNjMxLDIw
IEBAIHN0YXRpYyB2b2lkIHdlYmtpdFdlYlZpZXdCYXNlTWFwKEd0a1dpZGcKIAogICAgIFdlYktp
dFdlYlZpZXdCYXNlKiB3ZWJWaWV3QmFzZSA9IFdFQktJVF9XRUJfVklFV19CQVNFKHdpZGdldCk7
CiAgICAgV2ViS2l0V2ViVmlld0Jhc2VQcml2YXRlKiBwcml2ID0gd2ViVmlld0Jhc2UtPnByaXY7
Ci0gICAgVmlld1N0YXRlOjpGbGFncyBmbGFnc1RvVXBkYXRlID0gMDsKLSAgICBpZiAoIShwcml2
LT52aWV3U3RhdGUgJiBWaWV3U3RhdGU6OklzVmlzaWJsZSkpCi0gICAgICAgIGZsYWdzVG9VcGRh
dGUgfD0gVmlld1N0YXRlOjpJc1Zpc2libGU7CisgICAgQWN0aXZpdHlTdGF0ZTo6RmxhZ3MgZmxh
Z3NUb1VwZGF0ZSA9IDA7CisgICAgaWYgKCEocHJpdi0+YWN0aXZpdHlTdGF0ZSAmIEFjdGl2aXR5
U3RhdGU6OklzVmlzaWJsZSkpCisgICAgICAgIGZsYWdzVG9VcGRhdGUgfD0gQWN0aXZpdHlTdGF0
ZTo6SXNWaXNpYmxlOwogICAgIGlmIChwcml2LT50b3BsZXZlbE9uU2NyZWVuV2luZG93KSB7Ci0g
ICAgICAgIGlmICghKHByaXYtPnZpZXdTdGF0ZSAmIFZpZXdTdGF0ZTo6SXNJbldpbmRvdykpCi0g
ICAgICAgICAgICBmbGFnc1RvVXBkYXRlIHw9IFZpZXdTdGF0ZTo6SXNJbldpbmRvdzsKLSAgICAg
ICAgaWYgKGd0a193aW5kb3dfaXNfYWN0aXZlKEdUS19XSU5ET1cocHJpdi0+dG9wbGV2ZWxPblNj
cmVlbldpbmRvdykpICYmICEocHJpdi0+dmlld1N0YXRlICYgVmlld1N0YXRlOjpXaW5kb3dJc0Fj
dGl2ZSkpCi0gICAgICAgICAgICBmbGFnc1RvVXBkYXRlIHw9IFZpZXdTdGF0ZTo6V2luZG93SXNB
Y3RpdmU7CisgICAgICAgIGlmICghKHByaXYtPmFjdGl2aXR5U3RhdGUgJiBBY3Rpdml0eVN0YXRl
OjpJc0luV2luZG93KSkKKyAgICAgICAgICAgIGZsYWdzVG9VcGRhdGUgfD0gQWN0aXZpdHlTdGF0
ZTo6SXNJbldpbmRvdzsKKyAgICAgICAgaWYgKGd0a193aW5kb3dfaXNfYWN0aXZlKEdUS19XSU5E
T1cocHJpdi0+dG9wbGV2ZWxPblNjcmVlbldpbmRvdykpICYmICEocHJpdi0+YWN0aXZpdHlTdGF0
ZSAmIEFjdGl2aXR5U3RhdGU6OldpbmRvd0lzQWN0aXZlKSkKKyAgICAgICAgICAgIGZsYWdzVG9V
cGRhdGUgfD0gQWN0aXZpdHlTdGF0ZTo6V2luZG93SXNBY3RpdmU7CiAgICAgfQogICAgIGlmICgh
ZmxhZ3NUb1VwZGF0ZSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgcHJpdi0+dmlld1N0YXRlIHw9
IGZsYWdzVG9VcGRhdGU7Ci0gICAgd2Via2l0V2ViVmlld0Jhc2VTY2hlZHVsZVVwZGF0ZVZpZXdT
dGF0ZSh3ZWJWaWV3QmFzZSwgZmxhZ3NUb1VwZGF0ZSk7CisgICAgcHJpdi0+YWN0aXZpdHlTdGF0
ZSB8PSBmbGFnc1RvVXBkYXRlOworICAgIHdlYmtpdFdlYlZpZXdCYXNlU2NoZWR1bGVVcGRhdGVB
Y3Rpdml0eVN0YXRlKHdlYlZpZXdCYXNlLCBmbGFnc1RvVXBkYXRlKTsKIH0KIAogc3RhdGljIHZv
aWQgd2Via2l0V2ViVmlld0Jhc2VVbm1hcChHdGtXaWRnZXQqIHdpZGdldCkKQEAgLTY1MywxMSAr
NjUzLDExIEBAIHN0YXRpYyB2b2lkIHdlYmtpdFdlYlZpZXdCYXNlVW5tYXAoR3RrV2kKIAogICAg
IFdlYktpdFdlYlZpZXdCYXNlKiB3ZWJWaWV3QmFzZSA9IFdFQktJVF9XRUJfVklFV19CQVNFKHdp
ZGdldCk7CiAgICAgV2ViS2l0V2ViVmlld0Jhc2VQcml2YXRlKiBwcml2ID0gd2ViVmlld0Jhc2Ut
PnByaXY7Ci0gICAgaWYgKCEocHJpdi0+dmlld1N0YXRlICYgVmlld1N0YXRlOjpJc1Zpc2libGUp
KQorICAgIGlmICghKHByaXYtPmFjdGl2aXR5U3RhdGUgJiBBY3Rpdml0eVN0YXRlOjpJc1Zpc2li
bGUpKQogICAgICAgICByZXR1cm47CiAKLSAgICBwcml2LT52aWV3U3RhdGUgJj0gflZpZXdTdGF0
ZTo6SXNWaXNpYmxlOwotICAgIHdlYmtpdFdlYlZpZXdCYXNlU2NoZWR1bGVVcGRhdGVWaWV3U3Rh
dGUod2ViVmlld0Jhc2UsIFZpZXdTdGF0ZTo6SXNWaXNpYmxlKTsKKyAgICBwcml2LT5hY3Rpdml0
eVN0YXRlICY9IH5BY3Rpdml0eVN0YXRlOjpJc1Zpc2libGU7CisgICAgd2Via2l0V2ViVmlld0Jh
c2VTY2hlZHVsZVVwZGF0ZUFjdGl2aXR5U3RhdGUod2ViVmlld0Jhc2UsIEFjdGl2aXR5U3RhdGU6
OklzVmlzaWJsZSk7CiB9CiAKIHN0YXRpYyBnYm9vbGVhbiB3ZWJraXRXZWJWaWV3QmFzZUZvY3Vz
SW5FdmVudChHdGtXaWRnZXQqIHdpZGdldCwgR2RrRXZlbnRGb2N1cyogZXZlbnQpCkBAIC0xMzc5
LDQ2ICsxMzc5LDQ2IEBAIEdka0V2ZW50KiB3ZWJraXRXZWJWaWV3QmFzZVRha2VDb250ZXh0TWUK
IHZvaWQgd2Via2l0V2ViVmlld0Jhc2VTZXRGb2N1cyhXZWJLaXRXZWJWaWV3QmFzZSogd2ViVmll
d0Jhc2UsIGJvb2wgZm9jdXNlZCkKIHsKICAgICBXZWJLaXRXZWJWaWV3QmFzZVByaXZhdGUqIHBy
aXYgPSB3ZWJWaWV3QmFzZS0+cHJpdjsKLSAgICBpZiAoKGZvY3VzZWQgJiYgcHJpdi0+dmlld1N0
YXRlICYgVmlld1N0YXRlOjpJc0ZvY3VzZWQpIHx8ICghZm9jdXNlZCAmJiAhKHByaXYtPnZpZXdT
dGF0ZSAmIFZpZXdTdGF0ZTo6SXNGb2N1c2VkKSkpCisgICAgaWYgKChmb2N1c2VkICYmIHByaXYt
PmFjdGl2aXR5U3RhdGUgJiBBY3Rpdml0eVN0YXRlOjpJc0ZvY3VzZWQpIHx8ICghZm9jdXNlZCAm
JiAhKHByaXYtPmFjdGl2aXR5U3RhdGUgJiBBY3Rpdml0eVN0YXRlOjpJc0ZvY3VzZWQpKSkKICAg
ICAgICAgcmV0dXJuOwogCi0gICAgVmlld1N0YXRlOjpGbGFncyBmbGFnc1RvVXBkYXRlID0gVmll
d1N0YXRlOjpJc0ZvY3VzZWQ7CisgICAgQWN0aXZpdHlTdGF0ZTo6RmxhZ3MgZmxhZ3NUb1VwZGF0
ZSA9IEFjdGl2aXR5U3RhdGU6OklzRm9jdXNlZDsKICAgICBpZiAoZm9jdXNlZCkgewotICAgICAg
ICBwcml2LT52aWV3U3RhdGUgfD0gVmlld1N0YXRlOjpJc0ZvY3VzZWQ7CisgICAgICAgIHByaXYt
PmFjdGl2aXR5U3RhdGUgfD0gQWN0aXZpdHlTdGF0ZTo6SXNGb2N1c2VkOwogCiAgICAgICAgIC8v
IElmIHRoZSB2aWV3IGhhcyByZWNlaXZlZCB0aGUgZm9jdXMgYW5kIHRoZSB3aW5kb3cgaXMgbm90
IGFjdGl2ZQogICAgICAgICAvLyBtYXJrIHRoZSBjdXJyZW50IHdpbmRvdyBhcyBhY3RpdmUgbm93
LiBUaGlzIGNhbiBoYXBwZW4gaWYgdGhlCiAgICAgICAgIC8vIHRvcGxldmVsIHdpbmRvdyBpcyBh
IEdUS19XSU5ET1dfUE9QVVAgYW5kIHRoZSBmb2N1cyBoYXMgYmVlbgogICAgICAgICAvLyBzZXQg
cHJvZ3JhbWF0aWNhbGx5IGxpa2UgV2ViS2l0VGVzdFJ1bm5lciBkb2VzLCBiZWNhdXNlIFBPUFVQ
CiAgICAgICAgIC8vIGNhbid0IGJlIGZvY3VzZWQuCi0gICAgICAgIGlmICghKHByaXYtPnZpZXdT
dGF0ZSAmIFZpZXdTdGF0ZTo6V2luZG93SXNBY3RpdmUpKSB7Ci0gICAgICAgICAgICBwcml2LT52
aWV3U3RhdGUgfD0gVmlld1N0YXRlOjpXaW5kb3dJc0FjdGl2ZTsKLSAgICAgICAgICAgIGZsYWdz
VG9VcGRhdGUgfD0gVmlld1N0YXRlOjpXaW5kb3dJc0FjdGl2ZTsKKyAgICAgICAgaWYgKCEocHJp
di0+YWN0aXZpdHlTdGF0ZSAmIEFjdGl2aXR5U3RhdGU6OldpbmRvd0lzQWN0aXZlKSkgeworICAg
ICAgICAgICAgcHJpdi0+YWN0aXZpdHlTdGF0ZSB8PSBBY3Rpdml0eVN0YXRlOjpXaW5kb3dJc0Fj
dGl2ZTsKKyAgICAgICAgICAgIGZsYWdzVG9VcGRhdGUgfD0gQWN0aXZpdHlTdGF0ZTo6V2luZG93
SXNBY3RpdmU7CiAgICAgICAgIH0KICAgICB9IGVsc2UKLSAgICAgICAgcHJpdi0+dmlld1N0YXRl
ICY9IH5WaWV3U3RhdGU6OklzRm9jdXNlZDsKKyAgICAgICAgcHJpdi0+YWN0aXZpdHlTdGF0ZSAm
PSB+QWN0aXZpdHlTdGF0ZTo6SXNGb2N1c2VkOwogCi0gICAgd2Via2l0V2ViVmlld0Jhc2VTY2hl
ZHVsZVVwZGF0ZVZpZXdTdGF0ZSh3ZWJWaWV3QmFzZSwgZmxhZ3NUb1VwZGF0ZSk7CisgICAgd2Vi
a2l0V2ViVmlld0Jhc2VTY2hlZHVsZVVwZGF0ZUFjdGl2aXR5U3RhdGUod2ViVmlld0Jhc2UsIGZs
YWdzVG9VcGRhdGUpOwogfQogCiBib29sIHdlYmtpdFdlYlZpZXdCYXNlSXNJbldpbmRvd0FjdGl2
ZShXZWJLaXRXZWJWaWV3QmFzZSogd2ViVmlld0Jhc2UpCiB7Ci0gICAgcmV0dXJuIHdlYlZpZXdC
YXNlLT5wcml2LT52aWV3U3RhdGUgJiBWaWV3U3RhdGU6OldpbmRvd0lzQWN0aXZlOworICAgIHJl
dHVybiB3ZWJWaWV3QmFzZS0+cHJpdi0+YWN0aXZpdHlTdGF0ZSAmIEFjdGl2aXR5U3RhdGU6Oldp
bmRvd0lzQWN0aXZlOwogfQogCiBib29sIHdlYmtpdFdlYlZpZXdCYXNlSXNGb2N1c2VkKFdlYktp
dFdlYlZpZXdCYXNlKiB3ZWJWaWV3QmFzZSkKIHsKLSAgICByZXR1cm4gd2ViVmlld0Jhc2UtPnBy
aXYtPnZpZXdTdGF0ZSAmIFZpZXdTdGF0ZTo6SXNGb2N1c2VkOworICAgIHJldHVybiB3ZWJWaWV3
QmFzZS0+cHJpdi0+YWN0aXZpdHlTdGF0ZSAmIEFjdGl2aXR5U3RhdGU6OklzRm9jdXNlZDsKIH0K
IAogYm9vbCB3ZWJraXRXZWJWaWV3QmFzZUlzVmlzaWJsZShXZWJLaXRXZWJWaWV3QmFzZSogd2Vi
Vmlld0Jhc2UpCiB7Ci0gICAgcmV0dXJuIHdlYlZpZXdCYXNlLT5wcml2LT52aWV3U3RhdGUgJiBW
aWV3U3RhdGU6OklzVmlzaWJsZTsKKyAgICByZXR1cm4gd2ViVmlld0Jhc2UtPnByaXYtPmFjdGl2
aXR5U3RhdGUgJiBBY3Rpdml0eVN0YXRlOjpJc1Zpc2libGU7CiB9CiAKIGJvb2wgd2Via2l0V2Vi
Vmlld0Jhc2VJc0luV2luZG93KFdlYktpdFdlYlZpZXdCYXNlKiB3ZWJWaWV3QmFzZSkKIHsKLSAg
ICByZXR1cm4gd2ViVmlld0Jhc2UtPnByaXYtPnZpZXdTdGF0ZSAmIFZpZXdTdGF0ZTo6SXNJbldp
bmRvdzsKKyAgICByZXR1cm4gd2ViVmlld0Jhc2UtPnByaXYtPmFjdGl2aXR5U3RhdGUgJiBBY3Rp
dml0eVN0YXRlOjpJc0luV2luZG93OwogfQogCiB2b2lkIHdlYmtpdFdlYlZpZXdCYXNlU2V0RG93
bmxvYWRSZXF1ZXN0SGFuZGxlcihXZWJLaXRXZWJWaWV3QmFzZSogd2ViVmlld0Jhc2UsIFdlYktp
dFdlYlZpZXdCYXNlRG93bmxvYWRSZXF1ZXN0SGFuZGxlciBkb3dubG9hZEhhbmRsZXIpCkluZGV4
OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwubW0KPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJbXBsLm1tCShyZXZp
c2lvbiAyMDgxOTcpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29jb2EvV2ViVmlld0lt
cGwubW0JKHdvcmtpbmcgY29weSkKQEAgLTY2LDYgKzY2LDcgQEAKICNpbXBvcnQgIl9XS1RodW1i
bmFpbFZpZXdJbnRlcm5hbC5oIgogI2ltcG9ydCA8SElUb29sYm94L0NhcmJvbkV2ZW50c0NvcmUu
aD4KICNpbXBvcnQgPFdlYkNvcmUvQVhPYmplY3RDYWNoZS5oPgorI2ltcG9ydCA8V2ViQ29yZS9B
Y3Rpdml0eVN0YXRlLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0NvbG9yTWFjLmg+CiAjaW1wb3J0IDxX
ZWJDb3JlL0NvcmVHcmFwaGljc1NQSS5oPgogI2ltcG9ydCA8V2ViQ29yZS9EYXRhRGV0ZWN0b3Jz
U1BJLmg+CkBAIC04NCw3ICs4NSw2IEBACiAjaW1wb3J0IDxXZWJDb3JlL1NvZnRMaW5raW5nLmg+
CiAjaW1wb3J0IDxXZWJDb3JlL1RleHRBbHRlcm5hdGl2ZVdpdGhSYW5nZS5oPgogI2ltcG9ydCA8
V2ViQ29yZS9UZXh0VW5kb0luc2VydGlvbk1hcmt1cE1hYy5oPgotI2ltcG9ydCA8V2ViQ29yZS9W
aWV3U3RhdGUuaD4KICNpbXBvcnQgPFdlYkNvcmUvV2ViQWN0aW9uRGlzYWJsaW5nQ0FMYXllckRl
bGVnYXRlLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1dlYkNvcmVDQUxheWVyRXh0cmFzLmg+CiAjaW1w
b3J0IDxXZWJDb3JlL1dlYkNvcmVGdWxsU2NyZWVuUGxhY2Vob2xkZXJWaWV3Lmg+CkBAIC02MDks
NyArNjA5LDcgQEAgYm9vbCBXZWJWaWV3SW1wbDo6YmVjb21lRmlyc3RSZXNwb25kZXIoKQogICAg
IG1faW5CZWNvbWVGaXJzdFJlc3BvbmRlciA9IHRydWU7CiAKICAgICB1cGRhdGVTZWN1cmVJbnB1
dFN0YXRlKCk7Ci0gICAgbV9wYWdlLT52aWV3U3RhdGVEaWRDaGFuZ2UoV2ViQ29yZTo6Vmlld1N0
YXRlOjpJc0ZvY3VzZWQpOworICAgIG1fcGFnZS0+YWN0aXZpdHlTdGF0ZURpZENoYW5nZShXZWJD
b3JlOjpBY3Rpdml0eVN0YXRlOjpJc0ZvY3VzZWQpOwogICAgIC8vIFJlc3RvcmUgdGhlIHNlbGVj
dGlvbiBpbiB0aGUgZWRpdGFibGUgcmVnaW9uIGlmIHJlc2lnbmluZyBmaXJzdCByZXNwb25kZXIg
Y2xlYXJlZCBzZWxlY3Rpb24uCiAgICAgbV9wYWdlLT5yZXN0b3JlU2VsZWN0aW9uSW5Gb2N1c2Vk
RWRpdGFibGVFbGVtZW50KCk7CiAKQEAgLTY1Niw3ICs2NTYsNyBAQCBib29sIFdlYlZpZXdJbXBs
OjpyZXNpZ25GaXJzdFJlc3BvbmRlcigpCiAgICAgaWYgKCFtX3BhZ2UtPm1haW50YWluc0luYWN0
aXZlU2VsZWN0aW9uKCkpCiAgICAgICAgIG1fcGFnZS0+Y2xlYXJTZWxlY3Rpb24oKTsKIAotICAg
IG1fcGFnZS0+dmlld1N0YXRlRGlkQ2hhbmdlKFdlYkNvcmU6OlZpZXdTdGF0ZTo6SXNGb2N1c2Vk
KTsKKyAgICBtX3BhZ2UtPmFjdGl2aXR5U3RhdGVEaWRDaGFuZ2UoV2ViQ29yZTo6QWN0aXZpdHlT
dGF0ZTo6SXNGb2N1c2VkKTsKICAgICAKICAgICBtX2luUmVzaWduRmlyc3RSZXNwb25kZXIgPSBm
YWxzZTsKICAgICAKQEAgLTEwNTEsMTIgKzEwNTEsMTIgQEAgZmxvYXQgV2ViVmlld0ltcGw6Omlu
dHJpbnNpY0RldmljZVNjYWxlRgogCiB2b2lkIFdlYlZpZXdJbXBsOjp3aW5kb3dEaWRPcmRlck9m
ZlNjcmVlbigpCiB7Ci0gICAgbV9wYWdlLT52aWV3U3RhdGVEaWRDaGFuZ2UoV2ViQ29yZTo6Vmll
d1N0YXRlOjpJc1Zpc2libGUgfCBXZWJDb3JlOjpWaWV3U3RhdGU6OldpbmRvd0lzQWN0aXZlKTsK
KyAgICBtX3BhZ2UtPmFjdGl2aXR5U3RhdGVEaWRDaGFuZ2UoV2ViQ29yZTo6QWN0aXZpdHlTdGF0
ZTo6SXNWaXNpYmxlIHwgV2ViQ29yZTo6QWN0aXZpdHlTdGF0ZTo6V2luZG93SXNBY3RpdmUpOwog
fQogCiB2b2lkIFdlYlZpZXdJbXBsOjp3aW5kb3dEaWRPcmRlck9uU2NyZWVuKCkKIHsKLSAgICBt
X3BhZ2UtPnZpZXdTdGF0ZURpZENoYW5nZShXZWJDb3JlOjpWaWV3U3RhdGU6OklzVmlzaWJsZSB8
IFdlYkNvcmU6OlZpZXdTdGF0ZTo6V2luZG93SXNBY3RpdmUpOworICAgIG1fcGFnZS0+YWN0aXZp
dHlTdGF0ZURpZENoYW5nZShXZWJDb3JlOjpBY3Rpdml0eVN0YXRlOjpJc1Zpc2libGUgfCBXZWJD
b3JlOjpBY3Rpdml0eVN0YXRlOjpXaW5kb3dJc0FjdGl2ZSk7CiB9CiAKIHZvaWQgV2ViVmlld0lt
cGw6OndpbmRvd0RpZEJlY29tZUtleShOU1dpbmRvdyAqa2V5V2luZG93KQpAQCAtMTA2Niw3ICsx
MDY2LDcgQEAgdm9pZCBXZWJWaWV3SW1wbDo6d2luZG93RGlkQmVjb21lS2V5KE5TVwogICAgICAg
ICBVSUdhbWVwYWRQcm92aWRlcjo6c2luZ2xldG9uKCkudmlld0JlY2FtZUFjdGl2ZShtX3BhZ2Uu
Z2V0KCkpOwogI2VuZGlmCiAgICAgICAgIHVwZGF0ZVNlY3VyZUlucHV0U3RhdGUoKTsKLSAgICAg
ICAgbV9wYWdlLT52aWV3U3RhdGVEaWRDaGFuZ2UoV2ViQ29yZTo6Vmlld1N0YXRlOjpXaW5kb3dJ
c0FjdGl2ZSk7CisgICAgICAgIG1fcGFnZS0+YWN0aXZpdHlTdGF0ZURpZENoYW5nZShXZWJDb3Jl
OjpBY3Rpdml0eVN0YXRlOjpXaW5kb3dJc0FjdGl2ZSk7CiAgICAgfQogfQogCkBAIC0xMDc3LDE4
ICsxMDc3LDE4IEBAIHZvaWQgV2ViVmlld0ltcGw6OndpbmRvd0RpZFJlc2lnbktleShOU1cKICAg
ICAgICAgVUlHYW1lcGFkUHJvdmlkZXI6OnNpbmdsZXRvbigpLnZpZXdCZWNhbWVJbmFjdGl2ZSht
X3BhZ2UuZ2V0KCkpOwogI2VuZGlmCiAgICAgICAgIHVwZGF0ZVNlY3VyZUlucHV0U3RhdGUoKTsK
LSAgICAgICAgbV9wYWdlLT52aWV3U3RhdGVEaWRDaGFuZ2UoV2ViQ29yZTo6Vmlld1N0YXRlOjpX
aW5kb3dJc0FjdGl2ZSk7CisgICAgICAgIG1fcGFnZS0+YWN0aXZpdHlTdGF0ZURpZENoYW5nZShX
ZWJDb3JlOjpBY3Rpdml0eVN0YXRlOjpXaW5kb3dJc0FjdGl2ZSk7CiAgICAgfQogfQogCiB2b2lk
IFdlYlZpZXdJbXBsOjp3aW5kb3dEaWRNaW5pYXR1cml6ZSgpCiB7Ci0gICAgbV9wYWdlLT52aWV3
U3RhdGVEaWRDaGFuZ2UoV2ViQ29yZTo6Vmlld1N0YXRlOjpJc1Zpc2libGUpOworICAgIG1fcGFn
ZS0+YWN0aXZpdHlTdGF0ZURpZENoYW5nZShXZWJDb3JlOjpBY3Rpdml0eVN0YXRlOjpJc1Zpc2li
bGUpOwogfQogCiB2b2lkIFdlYlZpZXdJbXBsOjp3aW5kb3dEaWREZW1pbmlhdHVyaXplKCkKIHsK
LSAgICBtX3BhZ2UtPnZpZXdTdGF0ZURpZENoYW5nZShXZWJDb3JlOjpWaWV3U3RhdGU6OklzVmlz
aWJsZSk7CisgICAgbV9wYWdlLT5hY3Rpdml0eVN0YXRlRGlkQ2hhbmdlKFdlYkNvcmU6OkFjdGl2
aXR5U3RhdGU6OklzVmlzaWJsZSk7CiB9CiAKIHZvaWQgV2ViVmlld0ltcGw6OndpbmRvd0RpZE1v
dmUoKQpAQCAtMTEyMyw3ICsxMTIzLDcgQEAgdm9pZCBXZWJWaWV3SW1wbDo6d2luZG93RGlkQ2hh
bmdlTGF5ZXJIbwogCiB2b2lkIFdlYlZpZXdJbXBsOjp3aW5kb3dEaWRDaGFuZ2VPY2NsdXNpb25T
dGF0ZSgpCiB7Ci0gICAgbV9wYWdlLT52aWV3U3RhdGVEaWRDaGFuZ2UoV2ViQ29yZTo6Vmlld1N0
YXRlOjpJc1Zpc2libGUpOworICAgIG1fcGFnZS0+YWN0aXZpdHlTdGF0ZURpZENoYW5nZShXZWJD
b3JlOjpBY3Rpdml0eVN0YXRlOjpJc1Zpc2libGUpOwogfQogCiBib29sIFdlYlZpZXdJbXBsOjpt
aWdodEJlZ2luRHJhZ1doaWxlSW5hY3RpdmUoKQpAQCAtMTIxNCwxMiArMTIxNCwxMiBAQCB2b2lk
IFdlYlZpZXdJbXBsOjp2aWV3RGlkTW92ZVRvV2luZG93KCkKICAgICBpZiAod2luZG93KSB7CiAg
ICAgICAgIHdpbmRvd0RpZENoYW5nZVNjcmVlbigpOwogCi0gICAgICAgIFdlYkNvcmU6OlZpZXdT
dGF0ZTo6RmxhZ3Mgdmlld1N0YXRlQ2hhbmdlcyA9IFdlYkNvcmU6OlZpZXdTdGF0ZTo6V2luZG93
SXNBY3RpdmUgfCBXZWJDb3JlOjpWaWV3U3RhdGU6OklzVmlzaWJsZTsKKyAgICAgICAgV2ViQ29y
ZTo6QWN0aXZpdHlTdGF0ZTo6RmxhZ3MgYWN0aXZpdHlTdGF0ZUNoYW5nZXMgPSBXZWJDb3JlOjpB
Y3Rpdml0eVN0YXRlOjpXaW5kb3dJc0FjdGl2ZSB8IFdlYkNvcmU6OkFjdGl2aXR5U3RhdGU6Oklz
VmlzaWJsZTsKICAgICAgICAgaWYgKG1fc2hvdWxkRGVmZXJWaWV3SW5XaW5kb3dDaGFuZ2VzKQog
ICAgICAgICAgICAgbV92aWV3SW5XaW5kb3dDaGFuZ2VXYXNEZWZlcnJlZCA9IHRydWU7CiAgICAg
ICAgIGVsc2UKLSAgICAgICAgICAgIHZpZXdTdGF0ZUNoYW5nZXMgfD0gV2ViQ29yZTo6Vmlld1N0
YXRlOjpJc0luV2luZG93OwotICAgICAgICBtX3BhZ2UtPnZpZXdTdGF0ZURpZENoYW5nZSh2aWV3
U3RhdGVDaGFuZ2VzKTsKKyAgICAgICAgICAgIGFjdGl2aXR5U3RhdGVDaGFuZ2VzIHw9IFdlYkNv
cmU6OkFjdGl2aXR5U3RhdGU6OklzSW5XaW5kb3c7CisgICAgICAgIG1fcGFnZS0+YWN0aXZpdHlT
dGF0ZURpZENoYW5nZShhY3Rpdml0eVN0YXRlQ2hhbmdlcyk7CiAKICAgICAgICAgdXBkYXRlV2lu
ZG93QW5kVmlld0ZyYW1lcygpOwogCkBAIC0xMjQzLDEyICsxMjQzLDEyIEBAIHZvaWQgV2ViVmll
d0ltcGw6OnZpZXdEaWRNb3ZlVG9XaW5kb3coKQogICAgICAgICBpZiAobV9pbW1lZGlhdGVBY3Rp
b25HZXN0dXJlUmVjb2duaXplciAmJiAhW1ttX3ZpZXcgZ2VzdHVyZVJlY29nbml6ZXJzXSBjb250
YWluc09iamVjdDptX2ltbWVkaWF0ZUFjdGlvbkdlc3R1cmVSZWNvZ25pemVyLmdldCgpXSAmJiAh
bV9pZ25vcmVzTm9uV2hlZWxFdmVudHMgJiYgbV9hbGxvd3NMaW5rUHJldmlldykKICAgICAgICAg
ICAgIFttX3ZpZXcgYWRkR2VzdHVyZVJlY29nbml6ZXI6bV9pbW1lZGlhdGVBY3Rpb25HZXN0dXJl
UmVjb2duaXplci5nZXQoKV07CiAgICAgfSBlbHNlIHsKLSAgICAgICAgV2ViQ29yZTo6Vmlld1N0
YXRlOjpGbGFncyB2aWV3U3RhdGVDaGFuZ2VzID0gV2ViQ29yZTo6Vmlld1N0YXRlOjpXaW5kb3dJ
c0FjdGl2ZSB8IFdlYkNvcmU6OlZpZXdTdGF0ZTo6SXNWaXNpYmxlOworICAgICAgICBXZWJDb3Jl
OjpBY3Rpdml0eVN0YXRlOjpGbGFncyBhY3Rpdml0eVN0YXRlQ2hhbmdlcyA9IFdlYkNvcmU6OkFj
dGl2aXR5U3RhdGU6OldpbmRvd0lzQWN0aXZlIHwgV2ViQ29yZTo6QWN0aXZpdHlTdGF0ZTo6SXNW
aXNpYmxlOwogICAgICAgICBpZiAobV9zaG91bGREZWZlclZpZXdJbldpbmRvd0NoYW5nZXMpCiAg
ICAgICAgICAgICBtX3ZpZXdJbldpbmRvd0NoYW5nZVdhc0RlZmVycmVkID0gdHJ1ZTsKICAgICAg
ICAgZWxzZQotICAgICAgICAgICAgdmlld1N0YXRlQ2hhbmdlcyB8PSBXZWJDb3JlOjpWaWV3U3Rh
dGU6OklzSW5XaW5kb3c7Ci0gICAgICAgIG1fcGFnZS0+dmlld1N0YXRlRGlkQ2hhbmdlKHZpZXdT
dGF0ZUNoYW5nZXMpOworICAgICAgICAgICAgYWN0aXZpdHlTdGF0ZUNoYW5nZXMgfD0gV2ViQ29y
ZTo6QWN0aXZpdHlTdGF0ZTo6SXNJbldpbmRvdzsKKyAgICAgICAgbV9wYWdlLT5hY3Rpdml0eVN0
YXRlRGlkQ2hhbmdlKGFjdGl2aXR5U3RhdGVDaGFuZ2VzKTsKIAogICAgICAgICBbTlNFdmVudCBy
ZW1vdmVNb25pdG9yOm1fZmxhZ3NDaGFuZ2VkRXZlbnRNb25pdG9yXTsKICAgICAgICAgbV9mbGFn
c0NoYW5nZWRFdmVudE1vbml0b3IgPSBuaWw7CkBAIC0xMjc4LDE3ICsxMjc4LDE3IEBAIHZvaWQg
V2ViVmlld0ltcGw6OnZpZXdEaWRDaGFuZ2VCYWNraW5nUHIKIAogdm9pZCBXZWJWaWV3SW1wbDo6
dmlld0RpZEhpZGUoKQogewotICAgIG1fcGFnZS0+dmlld1N0YXRlRGlkQ2hhbmdlKFdlYkNvcmU6
OlZpZXdTdGF0ZTo6SXNWaXNpYmxlKTsKKyAgICBtX3BhZ2UtPmFjdGl2aXR5U3RhdGVEaWRDaGFu
Z2UoV2ViQ29yZTo6QWN0aXZpdHlTdGF0ZTo6SXNWaXNpYmxlKTsKIH0KIAogdm9pZCBXZWJWaWV3
SW1wbDo6dmlld0RpZFVuaGlkZSgpCiB7Ci0gICAgbV9wYWdlLT52aWV3U3RhdGVEaWRDaGFuZ2Uo
V2ViQ29yZTo6Vmlld1N0YXRlOjpJc1Zpc2libGUpOworICAgIG1fcGFnZS0+YWN0aXZpdHlTdGF0
ZURpZENoYW5nZShXZWJDb3JlOjpBY3Rpdml0eVN0YXRlOjpJc1Zpc2libGUpOwogfQogCiB2b2lk
IFdlYlZpZXdJbXBsOjphY3RpdmVTcGFjZURpZENoYW5nZSgpCiB7Ci0gICAgbV9wYWdlLT52aWV3
U3RhdGVEaWRDaGFuZ2UoV2ViQ29yZTo6Vmlld1N0YXRlOjpJc1Zpc2libGUpOworICAgIG1fcGFn
ZS0+YWN0aXZpdHlTdGF0ZURpZENoYW5nZShXZWJDb3JlOjpBY3Rpdml0eVN0YXRlOjpJc1Zpc2li
bGUpOwogfQogCiBOU1ZpZXcgKldlYlZpZXdJbXBsOjpoaXRUZXN0KENHUG9pbnQgcG9pbnQpCkBA
IC0xMzgzLDcgKzEzODMsNyBAQCB2b2lkIFdlYlZpZXdJbXBsOjplbmREZWZlcnJpbmdWaWV3SW5X
aW5kCiAKICAgICBpZiAobV92aWV3SW5XaW5kb3dDaGFuZ2VXYXNEZWZlcnJlZCkgewogICAgICAg
ICBkaXNwYXRjaFNldFRvcENvbnRlbnRJbnNldCgpOwotICAgICAgICBtX3BhZ2UtPnZpZXdTdGF0
ZURpZENoYW5nZShXZWJDb3JlOjpWaWV3U3RhdGU6OklzSW5XaW5kb3cpOworICAgICAgICBtX3Bh
Z2UtPmFjdGl2aXR5U3RhdGVEaWRDaGFuZ2UoV2ViQ29yZTo6QWN0aXZpdHlTdGF0ZTo6SXNJbldp
bmRvdyk7CiAgICAgICAgIG1fdmlld0luV2luZG93Q2hhbmdlV2FzRGVmZXJyZWQgPSBmYWxzZTsK
ICAgICB9CiB9CkBAIC0xMzk5LDcgKzEzOTksNyBAQCB2b2lkIFdlYlZpZXdJbXBsOjplbmREZWZl
cnJpbmdWaWV3SW5XaW5kCiAKICAgICBpZiAobV92aWV3SW5XaW5kb3dDaGFuZ2VXYXNEZWZlcnJl
ZCkgewogICAgICAgICBkaXNwYXRjaFNldFRvcENvbnRlbnRJbnNldCgpOwotICAgICAgICBtX3Bh
Z2UtPnZpZXdTdGF0ZURpZENoYW5nZShXZWJDb3JlOjpWaWV3U3RhdGU6OklzSW5XaW5kb3cpOwor
ICAgICAgICBtX3BhZ2UtPmFjdGl2aXR5U3RhdGVEaWRDaGFuZ2UoV2ViQ29yZTo6QWN0aXZpdHlT
dGF0ZTo6SXNJbldpbmRvdyk7CiAgICAgICAgIG1fdmlld0luV2luZG93Q2hhbmdlV2FzRGVmZXJy
ZWQgPSBmYWxzZTsKICAgICB9CiB9CkBAIC0xNDE0LDcgKzE0MTQsNyBAQCB2b2lkIFdlYlZpZXdJ
bXBsOjpwcmVwYXJlRm9yTW92ZVRvV2luZG93CiAgICAgbV9zaG91bGREZWZlclZpZXdJbldpbmRv
d0NoYW5nZXMgPSBmYWxzZTsKIAogICAgIGF1dG8gd2Vha1RoaXMgPSBjcmVhdGVXZWFrUHRyKCk7
Ci0gICAgbV9wYWdlLT5pbnN0YWxsVmlld1N0YXRlQ2hhbmdlQ29tcGxldGlvbkhhbmRsZXIoW3dl
YWtUaGlzLCBjb21wbGV0aW9uSGFuZGxlcl0oKSB7CisgICAgbV9wYWdlLT5pbnN0YWxsQWN0aXZp
dHlTdGF0ZUNoYW5nZUNvbXBsZXRpb25IYW5kbGVyKFt3ZWFrVGhpcywgY29tcGxldGlvbkhhbmRs
ZXJdKCkgewogICAgICAgICBjb21wbGV0aW9uSGFuZGxlcigpOwogCiAgICAgICAgIGlmICghd2Vh
a1RoaXMpCkBAIC0xNDI1LDcgKzE0MjUsNyBAQCB2b2lkIFdlYlZpZXdJbXBsOjpwcmVwYXJlRm9y
TW92ZVRvV2luZG93CiAgICAgfSk7CiAKICAgICBkaXNwYXRjaFNldFRvcENvbnRlbnRJbnNldCgp
OwotICAgIG1fcGFnZS0+dmlld1N0YXRlRGlkQ2hhbmdlKFdlYkNvcmU6OlZpZXdTdGF0ZTo6SXNJ
bldpbmRvdywgZmFsc2UsIFdlYlBhZ2VQcm94eTo6Vmlld1N0YXRlQ2hhbmdlRGlzcGF0Y2hNb2Rl
OjpJbW1lZGlhdGUpOworICAgIG1fcGFnZS0+YWN0aXZpdHlTdGF0ZURpZENoYW5nZShXZWJDb3Jl
OjpBY3Rpdml0eVN0YXRlOjpJc0luV2luZG93LCBmYWxzZSwgV2ViUGFnZVByb3h5OjpBY3Rpdml0
eVN0YXRlQ2hhbmdlRGlzcGF0Y2hNb2RlOjpJbW1lZGlhdGUpOwogICAgIG1fdmlld0luV2luZG93
Q2hhbmdlV2FzRGVmZXJyZWQgPSBmYWxzZTsKIH0KIApJbmRleDogU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL2VmbC9XZWJWaWV3LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvZWZsL1dlYlZpZXcuY3BwCShyZXZpc2lvbiAyMDgxOTcpCisrKyBTb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvZWZsL1dlYlZpZXcuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMCw2ICszMCw3
IEBACiAjaWYgVVNFKENPT1JESU5BVEVEX0dSQVBISUNTKQogI2luY2x1ZGUgIkFQSVBhZ2VDb25m
aWd1cmF0aW9uLmgiCiAjaW5jbHVkZSAiQWNjZWxlcmF0ZWREcmF3aW5nQXJlYVByb3h5LmgiCisj
aW5jbHVkZSAiQWN0aXZpdHlTdGF0ZS5oIgogI2luY2x1ZGUgIkNvb3JkaW5hdGVkR3JhcGhpY3NT
Y2VuZS5oIgogI2luY2x1ZGUgIkNvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdFByb3h5LmgiCiAjaW5j
bHVkZSAiRG93bmxvYWRNYW5hZ2VyRWZsLmgiCkBAIC0zOCw3ICszOSw2IEBACiAjaW5jbHVkZSAi
SW5wdXRNZXRob2RDb250ZXh0RWZsLmgiCiAjaW5jbHVkZSAiTmF0aXZlV2ViTW91c2VFdmVudC5o
IgogI2luY2x1ZGUgIk5vdEltcGxlbWVudGVkLmgiCi0jaW5jbHVkZSAiVmlld1N0YXRlLmgiCiAj
aW5jbHVkZSAiV2ViQmFja0ZvcndhcmRMaXN0LmgiCiAjaW5jbHVkZSAiV2ViQmFja0ZvcndhcmRM
aXN0SXRlbS5oIgogI2luY2x1ZGUgIldlYkNvbnRleHRNZW51UHJveHlFZmwuaCIKSW5kZXg6IFNv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlldy5tbQo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXcubW0JKHJldmlzaW9u
IDIwODE5NykKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlldy5t
bQkod29ya2luZyBjb3B5KQpAQCAtNjAyLDcgKzYwMiw3IEBAIC0gKHZvaWQpX2FwcGxpY2F0aW9u
V2lsbFJlc2lnbkFjdGl2ZTooTlMKIC0gKHZvaWQpX2FwcGxpY2F0aW9uRGlkRW50ZXJCYWNrZ3Jv
dW5kCiB7CiAgICAgX3BhZ2UtPmFwcGxpY2F0aW9uRGlkRW50ZXJCYWNrZ3JvdW5kKCk7Ci0gICAg
X3BhZ2UtPnZpZXdTdGF0ZURpZENoYW5nZShWaWV3U3RhdGU6OkFsbEZsYWdzICYgflZpZXdTdGF0
ZTo6SXNJbldpbmRvdyk7CisgICAgX3BhZ2UtPmFjdGl2aXR5U3RhdGVEaWRDaGFuZ2UoQWN0aXZp
dHlTdGF0ZTo6QWxsRmxhZ3MgJiB+QWN0aXZpdHlTdGF0ZTo6SXNJbldpbmRvdyk7CiB9CiAKIC0g
KHZvaWQpX2FwcGxpY2F0aW9uRGlkQ3JlYXRlV2luZG93Q29udGV4dApAQCAtNjE5LDcgKzYxOSw3
IEBAIC0gKHZvaWQpX2FwcGxpY2F0aW9uRGlkRmluaXNoU25hcHNob3R0aW4KIC0gKHZvaWQpX2Fw
cGxpY2F0aW9uV2lsbEVudGVyRm9yZWdyb3VuZAogewogICAgIF9wYWdlLT5hcHBsaWNhdGlvbldp
bGxFbnRlckZvcmVncm91bmQoKTsKLSAgICBfcGFnZS0+dmlld1N0YXRlRGlkQ2hhbmdlKFZpZXdT
dGF0ZTo6QWxsRmxhZ3MgJiB+Vmlld1N0YXRlOjpJc0luV2luZG93LCB0cnVlLCBXZWJQYWdlUHJv
eHk6OlZpZXdTdGF0ZUNoYW5nZURpc3BhdGNoTW9kZTo6SW1tZWRpYXRlKTsKKyAgICBfcGFnZS0+
YWN0aXZpdHlTdGF0ZURpZENoYW5nZShBY3Rpdml0eVN0YXRlOjpBbGxGbGFncyAmIH5BY3Rpdml0
eVN0YXRlOjpJc0luV2luZG93LCB0cnVlLCBXZWJQYWdlUHJveHk6OkFjdGl2aXR5U3RhdGVDaGFu
Z2VEaXNwYXRjaE1vZGU6OkltbWVkaWF0ZSk7CiB9CiAKIC0gKHZvaWQpX2FwcGxpY2F0aW9uRGlk
QmVjb21lQWN0aXZlOihOU05vdGlmaWNhdGlvbiopbm90aWZpY2F0aW9uCkluZGV4OiBTb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvaW9zL1dLUERGVmlldy5tbQo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvaW9zL1dLUERGVmlldy5tbQkocmV2aXNpb24gMjA4MTk3KQorKysg
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2lvcy9XS1BERlZpZXcubW0JKHdvcmtpbmcgY29weSkK
QEAgLTg3OCw3ICs4NzgsNyBAQCAtIChCT09MKWlzQmFja2dyb3VuZAogLSAodm9pZClfYXBwbGlj
YXRpb25EaWRFbnRlckJhY2tncm91bmQKIHsKICAgICBfd2ViVmlldy0+X3BhZ2UtPmFwcGxpY2F0
aW9uRGlkRW50ZXJCYWNrZ3JvdW5kKCk7Ci0gICAgX3dlYlZpZXctPl9wYWdlLT52aWV3U3RhdGVE
aWRDaGFuZ2UoVmlld1N0YXRlOjpBbGxGbGFncyAmIH5WaWV3U3RhdGU6OklzSW5XaW5kb3cpOwor
ICAgIF93ZWJWaWV3LT5fcGFnZS0+YWN0aXZpdHlTdGF0ZURpZENoYW5nZShBY3Rpdml0eVN0YXRl
OjpBbGxGbGFncyAmIH5BY3Rpdml0eVN0YXRlOjpJc0luV2luZG93KTsKIH0KIAogLSAodm9pZClf
YXBwbGljYXRpb25EaWRDcmVhdGVXaW5kb3dDb250ZXh0CkBAIC04OTUsNyArODk1LDcgQEAgLSAo
dm9pZClfYXBwbGljYXRpb25XaWxsRW50ZXJGb3JlZ3JvdW5kCiAgICAgX3dlYlZpZXctPl9wYWdl
LT5hcHBsaWNhdGlvbldpbGxFbnRlckZvcmVncm91bmQoKTsKICAgICBpZiAoYXV0byBkcmF3aW5n
QXJlYSA9IF93ZWJWaWV3LT5fcGFnZS0+ZHJhd2luZ0FyZWEoKSkKICAgICAgICAgZHJhd2luZ0Fy
ZWEtPmhpZGVDb250ZW50VW50aWxBbnlVcGRhdGUoKTsKLSAgICBfd2ViVmlldy0+X3BhZ2UtPnZp
ZXdTdGF0ZURpZENoYW5nZShWaWV3U3RhdGU6OkFsbEZsYWdzICYgflZpZXdTdGF0ZTo6SXNJbldp
bmRvdywgdHJ1ZSwgV2ViUGFnZVByb3h5OjpWaWV3U3RhdGVDaGFuZ2VEaXNwYXRjaE1vZGU6Oklt
bWVkaWF0ZSk7CisgICAgX3dlYlZpZXctPl9wYWdlLT5hY3Rpdml0eVN0YXRlRGlkQ2hhbmdlKEFj
dGl2aXR5U3RhdGU6OkFsbEZsYWdzICYgfkFjdGl2aXR5U3RhdGU6OklzSW5XaW5kb3csIHRydWUs
IFdlYlBhZ2VQcm94eTo6QWN0aXZpdHlTdGF0ZUNoYW5nZURpc3BhdGNoTW9kZTo6SW1tZWRpYXRl
KTsKIH0KIAogQGVuZApJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2lvcy9XZWJQYWdl
UHJveHlJT1MubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2lvcy9X
ZWJQYWdlUHJveHlJT1MubW0JKHJldmlzaW9uIDIwODE5NykKKysrIFNvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9pb3MvV2ViUGFnZVByb3h5SU9TLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0zMDMsNyAr
MzAzLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnN5bmNocm9uaXplRHluYW1pY1ZpZQogICAgIC8v
IElmIG1fZHluYW1pY1ZpZXdwb3J0U2l6ZVVwZGF0ZVdhaXRpbmdGb3JUYXJnZXQgaXMgZmFsc2Us
IHdlIGFyZSB3YWl0aW5nIGZvciB0aGUgbmV4dCB2YWxpZCBmcmFtZSB3aXRoIHRoZSBob3BlIGl0
IGlzIHRoZSBvbmUgZm9yIHRoZSBuZXcgdGFyZ2V0LgogICAgIC8vIElmIG1fZHluYW1pY1ZpZXdw
b3J0U2l6ZVVwZGF0ZVdhaXRpbmdGb3JUYXJnZXQgaXMgc3RpbGwgdHJ1ZSwgdGhpcyBpcyBhIGRl
c3BlcmF0ZSBhdHRlbXB0IHRvIGdldCB0aGUgdmFsaWQgZnJhbWUgYmVmb3JlIGZpbmlzaGluZyB0
aGUgYW5pbWF0aW9uLgogICAgIGlmIChtX2R5bmFtaWNWaWV3cG9ydFNpemVVcGRhdGVXYWl0aW5n
Rm9yTGF5ZXJUcmVlQ29tbWl0KQotICAgICAgICBtX2RyYXdpbmdBcmVhLT53YWl0Rm9yRGlkVXBk
YXRlVmlld1N0YXRlKCk7CisgICAgICAgIG1fZHJhd2luZ0FyZWEtPndhaXRGb3JEaWRVcGRhdGVB
Y3Rpdml0eVN0YXRlKCk7CiAKICAgICBtX2R5bmFtaWNWaWV3cG9ydFNpemVVcGRhdGVXYWl0aW5n
Rm9yVGFyZ2V0ID0gZmFsc2U7CiAgICAgbV9keW5hbWljVmlld3BvcnRTaXplVXBkYXRlV2FpdGlu
Z0ZvckxheWVyVHJlZUNvbW1pdCA9IGZhbHNlOwpJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL21hYy9SZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYVByb3h5LmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9SZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYVBy
b3h5LmgJKHJldmlzaW9uIDIwODE5NykKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMv
UmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWFQcm94eS5oCSh3b3JraW5nIGNvcHkpCkBAIC03Myw3
ICs3Myw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCB1cGRhdGVEZWJ1Z0luZGljYXRvclBvc2l0aW9u
KCk7CiAgICAgdm9pZCBpbml0aWFsaXplRGVidWdJbmRpY2F0b3IoKTsKIAotICAgIHZvaWQgd2Fp
dEZvckRpZFVwZGF0ZVZpZXdTdGF0ZSgpIG92ZXJyaWRlOworICAgIHZvaWQgd2FpdEZvckRpZFVw
ZGF0ZUFjdGl2aXR5U3RhdGUoKSBvdmVycmlkZTsKICAgICB2b2lkIGhpZGVDb250ZW50VW50aWxQ
ZW5kaW5nVXBkYXRlKCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBoaWRlQ29udGVudFVudGlsQW55VXBk
YXRlKCkgb3ZlcnJpZGU7CiAgICAgYm9vbCBoYXNWaXNpYmxlQ29udGVudCgpIGNvbnN0IG92ZXJy
aWRlOwpJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9SZW1vdGVMYXllclRyZWVE
cmF3aW5nQXJlYVByb3h5Lm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9tYWMvUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWFQcm94eS5tbQkocmV2aXNpb24gMjA4MTk3
KQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9SZW1vdGVMYXllclRyZWVEcmF3aW5n
QXJlYVByb3h5Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC00MTgsMTggKzQxOCwxOCBAQCB2b2lkIFJl
bW90ZUxheWVyVHJlZURyYXdpbmdBcmVhUHJveHk6OmRpCiAKICAgICBtX2xhc3RWaXNpYmxlVHJh
bnNhY3Rpb25JRCA9IG1fdHJhbnNhY3Rpb25JREZvclBlbmRpbmdDQUNvbW1pdDsKIAotICAgIG1f
d2ViUGFnZVByb3h5LmRpZFVwZGF0ZVZpZXdTdGF0ZSgpOworICAgIG1fd2ViUGFnZVByb3h5LmRp
ZFVwZGF0ZUFjdGl2aXR5U3RhdGUoKTsKIH0KIAotdm9pZCBSZW1vdGVMYXllclRyZWVEcmF3aW5n
QXJlYVByb3h5Ojp3YWl0Rm9yRGlkVXBkYXRlVmlld1N0YXRlKCkKK3ZvaWQgUmVtb3RlTGF5ZXJU
cmVlRHJhd2luZ0FyZWFQcm94eTo6d2FpdEZvckRpZFVwZGF0ZUFjdGl2aXR5U3RhdGUoKQogewog
ICAgIC8vIFdlIG11c3Qgc2VuZCB0aGUgZGlkVXBkYXRlIG1lc3NhZ2UgYmVmb3JlIGJsb2NraW5n
IG9uIHRoZSBuZXh0IGNvbW1pdCwgb3RoZXJ3aXNlCiAgICAgLy8gd2UgY2FuIGJlIGd1YXJhbnRl
ZWQgdGhhdCB0aGUgbmV4dCBjb21taXQgd29uJ3QgY29tZSB1bnRpbCBhZnRlciB0aGUgd2FpdEZv
ckFuZERpc3BhdGNoSW1tZWRpYXRlbHkgdGltZXMgb3V0LgogICAgIGlmIChtX2RpZFVwZGF0ZU1l
c3NhZ2VTdGF0ZSAhPSBEb2VzTm90TmVlZERpZFVwZGF0ZSkKICAgICAgICAgZGlkUmVmcmVzaERp
c3BsYXkobW9ub3RvbmljYWxseUluY3JlYXNpbmdUaW1lKCkpOwogCi0gICAgc3RhdGljIHN0ZDo6
Y2hyb25vOjptaWxsaXNlY29uZHMgdmlld1N0YXRlVXBkYXRlVGltZW91dCA9IFtdIHsKLSAgICAg
ICAgaWYgKGlkIHZhbHVlID0gW1tOU1VzZXJEZWZhdWx0cyBzdGFuZGFyZFVzZXJEZWZhdWx0c10g
b2JqZWN0Rm9yS2V5OkAiV2ViS2l0T3ZlcnJpZGVWaWV3U3RhdGVVcGRhdGVUaW1lb3V0Il0pCisg
ICAgc3RhdGljIHN0ZDo6Y2hyb25vOjptaWxsaXNlY29uZHMgYWN0aXZpdHlTdGF0ZVVwZGF0ZVRp
bWVvdXQgPSBbXSB7CisgICAgICAgIGlmIChpZCB2YWx1ZSA9IFtbTlNVc2VyRGVmYXVsdHMgc3Rh
bmRhcmRVc2VyRGVmYXVsdHNdIG9iamVjdEZvcktleTpAIldlYktpdE92ZXJyaWRlQWN0aXZpdHlT
dGF0ZVVwZGF0ZVRpbWVvdXQiXSkKICAgICAgICAgICAgIHJldHVybiBzdGQ6OmNocm9ubzo6ZHVy
YXRpb25fY2FzdDxzdGQ6OmNocm9ubzo6bWlsbGlzZWNvbmRzPihzdGQ6OmNocm9ubzo6ZHVyYXRp
b248ZG91YmxlPihbdmFsdWUgZG91YmxlVmFsdWVdKSk7CiAKICNpZiBQTEFURk9STShJT1MpCkBA
IC00MzgsNyArNDM4LDcgQEAgdm9pZCBSZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYVByb3h5Ojp3
YQogICAgICAgICByZXR1cm4gc3RkOjpjaHJvbm86Om1pbGxpc2Vjb25kcygyNTApOwogI2VuZGlm
CiAgICAgfSgpOwotICAgIG1fd2ViUGFnZVByb3h5LnByb2Nlc3MoKS5jb25uZWN0aW9uKCktPndh
aXRGb3JBbmREaXNwYXRjaEltbWVkaWF0ZWx5PE1lc3NhZ2VzOjpSZW1vdGVMYXllclRyZWVEcmF3
aW5nQXJlYVByb3h5OjpDb21taXRMYXllclRyZWU+KG1fd2ViUGFnZVByb3h5LnBhZ2VJRCgpLCB2
aWV3U3RhdGVVcGRhdGVUaW1lb3V0LCBJUEM6OldhaXRGb3JPcHRpb246OkludGVycnVwdFdhaXRp
bmdJZlN5bmNNZXNzYWdlQXJyaXZlcyk7CisgICAgbV93ZWJQYWdlUHJveHkucHJvY2VzcygpLmNv
bm5lY3Rpb24oKS0+d2FpdEZvckFuZERpc3BhdGNoSW1tZWRpYXRlbHk8TWVzc2FnZXM6OlJlbW90
ZUxheWVyVHJlZURyYXdpbmdBcmVhUHJveHk6OkNvbW1pdExheWVyVHJlZT4obV93ZWJQYWdlUHJv
eHkucGFnZUlEKCksIGFjdGl2aXR5U3RhdGVVcGRhdGVUaW1lb3V0LCBJUEM6OldhaXRGb3JPcHRp
b246OkludGVycnVwdFdhaXRpbmdJZlN5bmNNZXNzYWdlQXJyaXZlcyk7CiB9CiAKIHZvaWQgUmVt
b3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWFQcm94eTo6ZGlzcGF0Y2hBZnRlckVuc3VyaW5nRHJhd2lu
ZyhzdGQ6OmZ1bmN0aW9uPHZvaWQgKENhbGxiYWNrQmFzZTo6RXJyb3IpPiBjYWxsYmFja0Z1bmN0
aW9uKQpJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9UaWxlZENvcmVBbmltYXRp
b25EcmF3aW5nQXJlYVByb3h5LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL21hYy9UaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYVByb3h5LmgJKHJldmlzaW9uIDIw
ODE5NykKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvVGlsZWRDb3JlQW5pbWF0aW9u
RHJhd2luZ0FyZWFQcm94eS5oCSh3b3JraW5nIGNvcHkpCkBAIC01Miw3ICs1Miw3IEBAIHByaXZh
dGU6CiAgICAgdm9pZCBhZGp1c3RUcmFuc2llbnRab29tKGRvdWJsZSBzY2FsZSwgV2ViQ29yZTo6
RmxvYXRQb2ludCBvcmlnaW4pIG92ZXJyaWRlOwogICAgIHZvaWQgY29tbWl0VHJhbnNpZW50Wm9v
bShkb3VibGUgc2NhbGUsIFdlYkNvcmU6OkZsb2F0UG9pbnQgb3JpZ2luKSBvdmVycmlkZTsKIAot
ICAgIHZvaWQgd2FpdEZvckRpZFVwZGF0ZVZpZXdTdGF0ZSgpIG92ZXJyaWRlOworICAgIHZvaWQg
d2FpdEZvckRpZFVwZGF0ZUFjdGl2aXR5U3RhdGUoKSBvdmVycmlkZTsKICAgICB2b2lkIGRpc3Bh
dGNoQWZ0ZXJFbnN1cmluZ0RyYXdpbmcoc3RkOjpmdW5jdGlvbjx2b2lkIChDYWxsYmFja0Jhc2U6
OkVycm9yKT4pIG92ZXJyaWRlOwogCiAgICAgdm9pZCB3aWxsU2VuZFVwZGF0ZUdlb21ldHJ5KCkg
b3ZlcnJpZGU7CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1RpbGVkQ29yZUFu
aW1hdGlvbkRyYXdpbmdBcmVhUHJveHkubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL21hYy9UaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYVByb3h5Lm1tCShyZXZp
c2lvbiAyMDgxOTcpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1RpbGVkQ29yZUFu
aW1hdGlvbkRyYXdpbmdBcmVhUHJveHkubW0JKHdvcmtpbmcgY29weSkKQEAgLTEzMSwxMCArMTMx
LDEwIEBAIHZvaWQgVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWFQcm94eToKICAgICAgICAg
c2VuZFVwZGF0ZUdlb21ldHJ5KCk7CiB9CiAKLXZvaWQgVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2lu
Z0FyZWFQcm94eTo6d2FpdEZvckRpZFVwZGF0ZVZpZXdTdGF0ZSgpCit2b2lkIFRpbGVkQ29yZUFu
aW1hdGlvbkRyYXdpbmdBcmVhUHJveHk6OndhaXRGb3JEaWRVcGRhdGVBY3Rpdml0eVN0YXRlKCkK
IHsKLSAgICBhdXRvIHZpZXdTdGF0ZVVwZGF0ZVRpbWVvdXQgPSBzdGQ6OmNocm9ubzo6bWlsbGlz
ZWNvbmRzKDI1MCk7Ci0gICAgbV93ZWJQYWdlUHJveHkucHJvY2VzcygpLmNvbm5lY3Rpb24oKS0+
d2FpdEZvckFuZERpc3BhdGNoSW1tZWRpYXRlbHk8TWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RGlk
VXBkYXRlVmlld1N0YXRlPihtX3dlYlBhZ2VQcm94eS5wYWdlSUQoKSwgdmlld1N0YXRlVXBkYXRl
VGltZW91dCwgSVBDOjpXYWl0Rm9yT3B0aW9uOjpJbnRlcnJ1cHRXYWl0aW5nSWZTeW5jTWVzc2Fn
ZUFycml2ZXMpOworICAgIGF1dG8gYWN0aXZpdHlTdGF0ZVVwZGF0ZVRpbWVvdXQgPSBzdGQ6OmNo
cm9ubzo6bWlsbGlzZWNvbmRzKDI1MCk7CisgICAgbV93ZWJQYWdlUHJveHkucHJvY2VzcygpLmNv
bm5lY3Rpb24oKS0+d2FpdEZvckFuZERpc3BhdGNoSW1tZWRpYXRlbHk8TWVzc2FnZXM6OldlYlBh
Z2VQcm94eTo6RGlkVXBkYXRlQWN0aXZpdHlTdGF0ZT4obV93ZWJQYWdlUHJveHkucGFnZUlEKCks
IGFjdGl2aXR5U3RhdGVVcGRhdGVUaW1lb3V0LCBJUEM6OldhaXRGb3JPcHRpb246OkludGVycnVw
dFdhaXRpbmdJZlN5bmNNZXNzYWdlQXJyaXZlcyk7CiB9CiAKIHZvaWQgVGlsZWRDb3JlQW5pbWF0
aW9uRHJhd2luZ0FyZWFQcm94eTo6aW50cmluc2ljQ29udGVudFNpemVEaWRDaGFuZ2UoY29uc3Qg
SW50U2l6ZSYgbmV3SW50cmluc2ljQ29udGVudFNpemUpCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuY3BwCShyZXZpc2lvbiAyMDgxOTcp
CisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTUzNSwxNCArNTM1LDE0IEBAIHZvaWQgUGx1Z2luVmlldzo6d2ViUGFn
ZURlc3Ryb3llZCgpCiAgICAgbV93ZWJQYWdlID0gMDsKIH0KIAotdm9pZCBQbHVnaW5WaWV3Ojp2
aWV3U3RhdGVEaWRDaGFuZ2UoVmlld1N0YXRlOjpGbGFncyBjaGFuZ2VkKQordm9pZCBQbHVnaW5W
aWV3OjphY3Rpdml0eVN0YXRlRGlkQ2hhbmdlKEFjdGl2aXR5U3RhdGU6OkZsYWdzIGNoYW5nZWQp
CiB7CiAgICAgaWYgKCFtX3BsdWdpbiB8fCAhbV9pc0luaXRpYWxpemVkKQogICAgICAgICByZXR1
cm47CiAKLSAgICBpZiAoY2hhbmdlZCAmIFZpZXdTdGF0ZTo6SXNWaXNpYmxlT3JPY2NsdWRlZCkK
KyAgICBpZiAoY2hhbmdlZCAmIEFjdGl2aXR5U3RhdGU6OklzVmlzaWJsZU9yT2NjbHVkZWQpCiAg
ICAgICAgIG1fcGx1Z2luLT53aW5kb3dWaXNpYmlsaXR5Q2hhbmdlZChtX3dlYlBhZ2UtPmlzVmlz
aWJsZU9yT2NjbHVkZWQoKSk7Ci0gICAgaWYgKGNoYW5nZWQgJiBWaWV3U3RhdGU6OldpbmRvd0lz
QWN0aXZlKQorICAgIGlmIChjaGFuZ2VkICYgQWN0aXZpdHlTdGF0ZTo6V2luZG93SXNBY3RpdmUp
CiAgICAgICAgIG1fcGx1Z2luLT53aW5kb3dGb2N1c0NoYW5nZWQobV93ZWJQYWdlLT53aW5kb3dJ
c0ZvY3VzZWQoKSk7CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lu
cy9QbHVnaW5WaWV3LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9Q
bHVnaW5zL1BsdWdpblZpZXcuaAkocmV2aXNpb24gMjA4MTk3KQorKysgU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuaAkod29ya2luZyBjb3B5KQpAQCAtMzEsNiAr
MzEsNyBAQAogI2luY2x1ZGUgIlBsdWdpbi5oIgogI2luY2x1ZGUgIlBsdWdpbkNvbnRyb2xsZXIu
aCIKICNpbmNsdWRlICJXZWJGcmFtZS5oIgorI2luY2x1ZGUgPFdlYkNvcmUvQWN0aXZpdHlTdGF0
ZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRmluZE9wdGlvbnMuaD4KICNpbmNsdWRlIDxXZWJDb3Jl
L0ltYWdlLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9NZWRpYUNhblN0YXJ0TGlzdGVuZXIuaD4KQEAg
LTM5LDcgKzQwLDYgQEAKICNpbmNsdWRlIDxXZWJDb3JlL1Jlc291cmNlRXJyb3IuaD4KICNpbmNs
dWRlIDxXZWJDb3JlL1Jlc291cmNlUmVzcG9uc2UuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1RpbWVy
Lmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9WaWV3U3RhdGUuaD4KICNpbmNsdWRlIDxtZW1vcnk+CiAj
aW5jbHVkZSA8d3RmL0RlcXVlLmg+CiAjaW5jbHVkZSA8d3RmL1J1bkxvb3AuaD4KQEAgLTc3LDcg
Kzc3LDcgQEAgcHVibGljOgogICAgIHZvaWQgbWFudWFsTG9hZERpZEZpbmlzaExvYWRpbmcoKTsK
ICAgICB2b2lkIG1hbnVhbExvYWREaWRGYWlsKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3Im
KTsKIAotICAgIHZvaWQgdmlld1N0YXRlRGlkQ2hhbmdlKFdlYkNvcmU6OlZpZXdTdGF0ZTo6Rmxh
Z3MgY2hhbmdlZCk7CisgICAgdm9pZCBhY3Rpdml0eVN0YXRlRGlkQ2hhbmdlKFdlYkNvcmU6OkFj
dGl2aXR5U3RhdGU6OkZsYWdzIGNoYW5nZWQpOwogICAgIHZvaWQgc2V0TGF5ZXJIb3N0aW5nTW9k
ZShMYXllckhvc3RpbmdNb2RlKTsKIAogI2lmIFBMQVRGT1JNKENPQ09BKQpJbmRleDogU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0FjY2VsZXJhdGVkRHJhd2luZ0FyZWEuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9BY2NlbGVyYXRl
ZERyYXdpbmdBcmVhLmNwcAkocmV2aXNpb24gMjA4MTk3KQorKysgU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9XZWJQYWdlL0FjY2VsZXJhdGVkRHJhd2luZ0FyZWEuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0zNjksOSArMzY5LDkgQEAgdm9pZCBBY2NlbGVyYXRlZERyYXdpbmdBcmVhOjpkZXN0cm95
TmF0aQogfQogI2VuZGlmCiAKLXZvaWQgQWNjZWxlcmF0ZWREcmF3aW5nQXJlYTo6dmlld1N0YXRl
RGlkQ2hhbmdlKFZpZXdTdGF0ZTo6RmxhZ3MgY2hhbmdlZCwgYm9vbCwgY29uc3QgVmVjdG9yPHVp
bnQ2NF90PiYpCit2b2lkIEFjY2VsZXJhdGVkRHJhd2luZ0FyZWE6OmFjdGl2aXR5U3RhdGVEaWRD
aGFuZ2UoQWN0aXZpdHlTdGF0ZTo6RmxhZ3MgY2hhbmdlZCwgYm9vbCwgY29uc3QgVmVjdG9yPHVp
bnQ2NF90PiYpCiB7Ci0gICAgaWYgKGNoYW5nZWQgJiBWaWV3U3RhdGU6OklzVmlzaWJsZSkgewor
ICAgIGlmIChjaGFuZ2VkICYgQWN0aXZpdHlTdGF0ZTo6SXNWaXNpYmxlKSB7CiAgICAgICAgIGlm
IChtX3dlYlBhZ2UuaXNWaXNpYmxlKCkpCiAgICAgICAgICAgICByZXN1bWVQYWludGluZygpOwog
ICAgICAgICBlbHNlCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvQWNj
ZWxlcmF0ZWREcmF3aW5nQXJlYS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvV2ViUGFnZS9BY2NlbGVyYXRlZERyYXdpbmdBcmVhLmgJKHJldmlzaW9uIDIwODE5NykK
KysrIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9BY2NlbGVyYXRlZERyYXdpbmdB
cmVhLmgJKHdvcmtpbmcgY29weSkKQEAgLTY4LDcgKzY4LDcgQEAgcHJvdGVjdGVkOgogICAgIHZv
aWQgZGVzdHJveU5hdGl2ZVN1cmZhY2VIYW5kbGVGb3JDb21wb3NpdGluZyhib29sJikgb3ZlcnJp
ZGU7CiAjZW5kaWYKIAotICAgIHZvaWQgdmlld1N0YXRlRGlkQ2hhbmdlKFdlYkNvcmU6OlZpZXdT
dGF0ZTo6RmxhZ3MsIGJvb2wgLyogd2FudHNEaWRVcGRhdGVWaWV3U3RhdGUgKi8sIGNvbnN0IFZl
Y3Rvcjx1aW50NjRfdD4mIC8qIGNhbGxiYWNrSURzICovKSBvdmVycmlkZTsKKyAgICB2b2lkIGFj
dGl2aXR5U3RhdGVEaWRDaGFuZ2UoV2ViQ29yZTo6QWN0aXZpdHlTdGF0ZTo6RmxhZ3MsIGJvb2wg
Lyogd2FudHNEaWRVcGRhdGVBY3Rpdml0eVN0YXRlICovLCBjb25zdCBWZWN0b3I8dWludDY0X3Q+
JiAvKiBjYWxsYmFja0lEcyAqLykgb3ZlcnJpZGU7CiAgICAgdm9pZCBhdHRhY2hWaWV3T3Zlcmxh
eUdyYXBoaWNzTGF5ZXIoV2ViQ29yZTo6RnJhbWUqLCBXZWJDb3JlOjpHcmFwaGljc0xheWVyKikg
b3ZlcnJpZGU7CiAKICAgICB2b2lkIGxheWVySG9zdERpZEZsdXNoTGF5ZXJzKCkgb3ZlcnJpZGU7
CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvRHJhd2luZ0FyZWEuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvRHJhd2luZ0Fy
ZWEuaAkocmV2aXNpb24gMjA4MTk3KQorKysgU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQ
YWdlL0RyYXdpbmdBcmVhLmgJKHdvcmtpbmcgY29weSkKQEAgLTI4LDEyICsyOCwxMiBAQAogI2lu
Y2x1ZGUgIkRyYXdpbmdBcmVhSW5mby5oIgogI2luY2x1ZGUgIkxheWVyVHJlZUNvbnRleHQuaCIK
ICNpbmNsdWRlICJNZXNzYWdlUmVjZWl2ZXIuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL0FjdGl2aXR5
U3RhdGUuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0Zsb2F0UmVjdC5oPgogI2luY2x1ZGUgPFdlYkNv
cmUvSW50UmVjdC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvTGF5ZXJGbHVzaFRocm90dGxlU3RhdGUu
aD4KICNpbmNsdWRlIDxXZWJDb3JlL0xheW91dE1pbGVzdG9uZXMuaD4KICNpbmNsdWRlIDxXZWJD
b3JlL1BsYXRmb3JtU2NyZWVuLmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9WaWV3U3RhdGUuaD4KICNp
bmNsdWRlIDxmdW5jdGlvbmFsPgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAjaW5jbHVkZSA8
d3RmL05vbmNvcHlhYmxlLmg+CkBAIC0xMjAsNyArMTIwLDcgQEAgcHVibGljOgogCiAgICAgdmly
dHVhbCB2b2lkIGRpc3BhdGNoQWZ0ZXJFbnN1cmluZ1VwZGF0ZWRTY3JvbGxQb3NpdGlvbihzdGQ6
OmZ1bmN0aW9uPHZvaWQgKCk+KTsKIAotICAgIHZpcnR1YWwgdm9pZCB2aWV3U3RhdGVEaWRDaGFu
Z2UoV2ViQ29yZTo6Vmlld1N0YXRlOjpGbGFncywgYm9vbCAvKiB3YW50c0RpZFVwZGF0ZVZpZXdT
dGF0ZSAqLywgY29uc3QgVmVjdG9yPHVpbnQ2NF90PiYgLyogY2FsbGJhY2tJRHMgKi8pIHsgfQor
ICAgIHZpcnR1YWwgdm9pZCBhY3Rpdml0eVN0YXRlRGlkQ2hhbmdlKFdlYkNvcmU6OkFjdGl2aXR5
U3RhdGU6OkZsYWdzLCBib29sIC8qIHdhbnRzRGlkVXBkYXRlQWN0aXZpdHlTdGF0ZSAqLywgY29u
c3QgVmVjdG9yPHVpbnQ2NF90PiYgLyogY2FsbGJhY2tJRHMgKi8pIHsgfQogICAgIHZpcnR1YWwg
dm9pZCBzZXRMYXllckhvc3RpbmdNb2RlKExheWVySG9zdGluZ01vZGUpIHsgfQogCiAgICAgdmly
dHVhbCBib29sIG1hcmtMYXllcnNWb2xhdGlsZUltbWVkaWF0ZWx5SWZQb3NzaWJsZSgpIHsgcmV0
dXJuIHRydWU7IH0KSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQ
YWdlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2Uv
V2ViUGFnZS5jcHAJKHJldmlzaW9uIDIwODE5NykKKysrIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvV2ViUGFnZS9XZWJQYWdlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzc2LDcgKzM3Niw3IEBA
IFdlYlBhZ2U6OldlYlBhZ2UodWludDY0X3QgcGFnZUlELCBjb25zdCAKICAgICAsIG1fbWF4aW11
bVJlbmRlcmluZ1N1cHByZXNzaW9uVG9rZW4oMCkKICAgICAsIG1fc2Nyb2xsUGlubmluZ0JlaGF2
aW9yKERvTm90UGluKQogICAgICwgbV91c2VBc3luY1Njcm9sbGluZyhmYWxzZSkKLSAgICAsIG1f
dmlld1N0YXRlKHBhcmFtZXRlcnMudmlld1N0YXRlKQorICAgICwgbV9hY3Rpdml0eVN0YXRlKHBh
cmFtZXRlcnMuYWN0aXZpdHlTdGF0ZSkKICAgICAsIG1fdXNlckFjdGl2aXR5KCJQcm9jZXNzIHN1
cHByZXNzaW9uIGRpc2FibGVkIGZvciBwYWdlLiIpCiAgICAgLCBtX3VzZXJBY3Rpdml0eUh5c3Rl
cmVzaXMoW3RoaXNdKEh5c3RlcmVzaXNTdGF0ZSkgeyB1cGRhdGVVc2VyQWN0aXZpdHkoKTsgfSkK
ICAgICAsIG1fcGVuZGluZ05hdmlnYXRpb25JRCgwKQpAQCAtNDkzLDcgKzQ5Myw3IEBAIFdlYlBh
Z2U6OldlYlBhZ2UodWludDY0X3QgcGFnZUlELCBjb25zdCAKICAgICBzZXRQYWdpbmF0aW9uTGlu
ZUdyaWRFbmFibGVkKHBhcmFtZXRlcnMucGFnaW5hdGlvbkxpbmVHcmlkRW5hYmxlZCk7CiAgICAg
CiAgICAgLy8gSWYgdGhlIHBhZ2UgaXMgY3JlYXRlZCBvZmYtc2NyZWVuLCBpdHMgdmlzaWJpbGl0
eVN0YXRlIHNob3VsZCBiZSBwcmVyZW5kZXIuCi0gICAgbV9wYWdlLT5zZXRWaWV3U3RhdGUobV92
aWV3U3RhdGUpOworICAgIG1fcGFnZS0+c2V0QWN0aXZpdHlTdGF0ZShtX2FjdGl2aXR5U3RhdGUp
OwogICAgIGlmICghaXNWaXNpYmxlKCkpCiAgICAgICAgIG1fcGFnZS0+c2V0SXNQcmVyZW5kZXIo
KTsKICAgICBzZXRQYWdlU3VwcHJlc3NlZChmYWxzZSk7CkBAIC01NzUsOCArNTc1LDggQEAgV2Vi
UGFnZTo6V2ViUGFnZSh1aW50NjRfdCBwYWdlSUQsIGNvbnN0IAogCiB2b2lkIFdlYlBhZ2U6OnJl
aW5pdGlhbGl6ZVdlYlBhZ2UoY29uc3QgV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycyYgcGFyYW1l
dGVycykKIHsKLSAgICBpZiAobV92aWV3U3RhdGUgIT0gcGFyYW1ldGVycy52aWV3U3RhdGUpCi0g
ICAgICAgIHNldFZpZXdTdGF0ZShwYXJhbWV0ZXJzLnZpZXdTdGF0ZSwgZmFsc2UsIFZlY3Rvcjx1
aW50NjRfdD4oKSk7CisgICAgaWYgKG1fYWN0aXZpdHlTdGF0ZSAhPSBwYXJhbWV0ZXJzLmFjdGl2
aXR5U3RhdGUpCisgICAgICAgIHNldEFjdGl2aXR5U3RhdGUocGFyYW1ldGVycy5hY3Rpdml0eVN0
YXRlLCBmYWxzZSwgVmVjdG9yPHVpbnQ2NF90PigpKTsKICAgICBpZiAobV9sYXllckhvc3RpbmdN
b2RlICE9IHBhcmFtZXRlcnMubGF5ZXJIb3N0aW5nTW9kZSkKICAgICAgICAgc2V0TGF5ZXJIb3N0
aW5nTW9kZShwYXJhbWV0ZXJzLmxheWVySG9zdGluZ01vZGUpOwogfQpAQCAtMjU2Nyw3ICsyNTY3
LDcgQEAgdm9pZCBXZWJQYWdlOjpzZXRDYW5TdGFydE1lZGlhVGltZXJGaXJlZAogCiB2b2lkIFdl
YlBhZ2U6OnVwZGF0ZUlzSW5XaW5kb3coYm9vbCBpc0luaXRpYWxTdGF0ZSkKIHsKLSAgICBib29s
IGlzSW5XaW5kb3cgPSBtX3ZpZXdTdGF0ZSAmIFdlYkNvcmU6OlZpZXdTdGF0ZTo6SXNJbldpbmRv
dzsKKyAgICBib29sIGlzSW5XaW5kb3cgPSBtX2FjdGl2aXR5U3RhdGUgJiBXZWJDb3JlOjpBY3Rp
dml0eVN0YXRlOjpJc0luV2luZG93OwogCiAgICAgaWYgKCFpc0luV2luZG93KSB7CiAgICAgICAg
IG1fc2V0Q2FuU3RhcnRNZWRpYVRpbWVyLnN0b3AoKTsKQEAgLTI1OTAsMTggKzI1OTAsMTggQEAg
dm9pZCBXZWJQYWdlOjp1cGRhdGVJc0luV2luZG93KGJvb2wgaXNJbgogICAgICAgICBsYXlvdXRJ
Zk5lZWRlZCgpOwogfQogCi12b2lkIFdlYlBhZ2U6OnNldFZpZXdTdGF0ZShWaWV3U3RhdGU6OkZs
YWdzIHZpZXdTdGF0ZSwgYm9vbCB3YW50c0RpZFVwZGF0ZVZpZXdTdGF0ZSwgY29uc3QgVmVjdG9y
PHVpbnQ2NF90PiYgY2FsbGJhY2tJRHMpCit2b2lkIFdlYlBhZ2U6OnNldEFjdGl2aXR5U3RhdGUo
QWN0aXZpdHlTdGF0ZTo6RmxhZ3MgYWN0aXZpdHlTdGF0ZSwgYm9vbCB3YW50c0RpZFVwZGF0ZUFj
dGl2aXR5U3RhdGUsIGNvbnN0IFZlY3Rvcjx1aW50NjRfdD4mIGNhbGxiYWNrSURzKQogewotICAg
IFZpZXdTdGF0ZTo6RmxhZ3MgY2hhbmdlZCA9IG1fdmlld1N0YXRlIF4gdmlld1N0YXRlOwotICAg
IG1fdmlld1N0YXRlID0gdmlld1N0YXRlOworICAgIEFjdGl2aXR5U3RhdGU6OkZsYWdzIGNoYW5n
ZWQgPSBtX2FjdGl2aXR5U3RhdGUgXiBhY3Rpdml0eVN0YXRlOworICAgIG1fYWN0aXZpdHlTdGF0
ZSA9IGFjdGl2aXR5U3RhdGU7CiAKLSAgICBtX3BhZ2UtPnNldFZpZXdTdGF0ZSh2aWV3U3RhdGUp
OworICAgIG1fcGFnZS0+c2V0QWN0aXZpdHlTdGF0ZShhY3Rpdml0eVN0YXRlKTsKICAgICBmb3Ig
KGF1dG8qIHBsdWdpblZpZXcgOiBtX3BsdWdpblZpZXdzKQotICAgICAgICBwbHVnaW5WaWV3LT52
aWV3U3RhdGVEaWRDaGFuZ2UoY2hhbmdlZCk7CisgICAgICAgIHBsdWdpblZpZXctPmFjdGl2aXR5
U3RhdGVEaWRDaGFuZ2UoY2hhbmdlZCk7CiAKLSAgICBtX2RyYXdpbmdBcmVhLT52aWV3U3RhdGVE
aWRDaGFuZ2UoY2hhbmdlZCwgd2FudHNEaWRVcGRhdGVWaWV3U3RhdGUsIGNhbGxiYWNrSURzKTsK
KyAgICBtX2RyYXdpbmdBcmVhLT5hY3Rpdml0eVN0YXRlRGlkQ2hhbmdlKGNoYW5nZWQsIHdhbnRz
RGlkVXBkYXRlQWN0aXZpdHlTdGF0ZSwgY2FsbGJhY2tJRHMpOwogCi0gICAgaWYgKGNoYW5nZWQg
JiBWaWV3U3RhdGU6OklzSW5XaW5kb3cpCisgICAgaWYgKGNoYW5nZWQgJiBBY3Rpdml0eVN0YXRl
OjpJc0luV2luZG93KQogICAgICAgICB1cGRhdGVJc0luV2luZG93KCk7CiB9CiAKSW5kZXg6IFNv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAkocmV2aXNpb24gMjA4
MTk3KQorKysgU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAkod29y
a2luZyBjb3B5KQpAQCAtNDgsNiArNDgsNyBAQAogI2luY2x1ZGUgIlNoYXJlYWJsZUJpdG1hcC5o
IgogI2luY2x1ZGUgIlVzZXJEYXRhLmgiCiAjaW5jbHVkZSAiVXNlck1lZGlhUGVybWlzc2lvblJl
cXVlc3RNYW5hZ2VyLmgiCisjaW5jbHVkZSA8V2ViQ29yZS9BY3Rpdml0eVN0YXRlLmg+CiAjaW5j
bHVkZSA8V2ViQ29yZS9EaWN0YXRpb25BbHRlcm5hdGl2ZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUv
RGljdGlvbmFyeVBvcHVwSW5mby5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRHJhZ0RhdGEuaD4KQEAg
LTY4LDcgKzY5LDYgQEAKICNpbmNsdWRlIDxXZWJDb3JlL1VzZXJDb250ZW50VHlwZXMuaD4KICNp
bmNsdWRlIDxXZWJDb3JlL1VzZXJJbnRlcmZhY2VMYXlvdXREaXJlY3Rpb24uaD4KICNpbmNsdWRl
IDxXZWJDb3JlL1VzZXJTY3JpcHRUeXBlcy5oPgotI2luY2x1ZGUgPFdlYkNvcmUvVmlld1N0YXRl
Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9WaWV3cG9ydENvbmZpZ3VyYXRpb24uaD4KICNpbmNsdWRl
IDxXZWJDb3JlL1dlYkNvcmVLZXlib2FyZFVJTW9kZS5oPgogI2luY2x1ZGUgPG1lbW9yeT4KQEAg
LTQzNiw4ICs0MzYsOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBhZGRQbHVnaW5WaWV3KFBsdWdpblZp
ZXcqKTsKICAgICB2b2lkIHJlbW92ZVBsdWdpblZpZXcoUGx1Z2luVmlldyopOwogCi0gICAgYm9v
bCBpc1Zpc2libGUoKSBjb25zdCB7IHJldHVybiBtX3ZpZXdTdGF0ZSAmIFdlYkNvcmU6OlZpZXdT
dGF0ZTo6SXNWaXNpYmxlOyB9Ci0gICAgYm9vbCBpc1Zpc2libGVPck9jY2x1ZGVkKCkgY29uc3Qg
eyByZXR1cm4gbV92aWV3U3RhdGUgJiBXZWJDb3JlOjpWaWV3U3RhdGU6OklzVmlzaWJsZU9yT2Nj
bHVkZWQ7IH0KKyAgICBib29sIGlzVmlzaWJsZSgpIGNvbnN0IHsgcmV0dXJuIG1fYWN0aXZpdHlT
dGF0ZSAmIFdlYkNvcmU6OkFjdGl2aXR5U3RhdGU6OklzVmlzaWJsZTsgfQorICAgIGJvb2wgaXNW
aXNpYmxlT3JPY2NsdWRlZCgpIGNvbnN0IHsgcmV0dXJuIG1fYWN0aXZpdHlTdGF0ZSAmIFdlYkNv
cmU6OkFjdGl2aXR5U3RhdGU6OklzVmlzaWJsZU9yT2NjbHVkZWQ7IH0KIAogICAgIExheWVySG9z
dGluZ01vZGUgbGF5ZXJIb3N0aW5nTW9kZSgpIGNvbnN0IHsgcmV0dXJuIG1fbGF5ZXJIb3N0aW5n
TW9kZTsgfQogICAgIHZvaWQgc2V0TGF5ZXJIb3N0aW5nTW9kZShMYXllckhvc3RpbmdNb2RlKTsK
QEAgLTEwNDEsNyArMTA0MSw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCB0cnlSZXN0b3JlU2Nyb2xs
UG9zaXRpb24oKTsKICAgICB2b2lkIHNldEluaXRpYWxGb2N1cyhib29sIGZvcndhcmQsIGJvb2wg
aXNLZXlib2FyZEV2ZW50VmFsaWQsIGNvbnN0IFdlYktleWJvYXJkRXZlbnQmLCB1aW50NjRfdCBj
YWxsYmFja0lEKTsKICAgICB2b2lkIHVwZGF0ZUlzSW5XaW5kb3coYm9vbCBpc0luaXRpYWxTdGF0
ZSA9IGZhbHNlKTsKLSAgICB2b2lkIHNldFZpZXdTdGF0ZShXZWJDb3JlOjpWaWV3U3RhdGU6OkZs
YWdzLCBib29sIHdhbnRzRGlkVXBkYXRlVmlld1N0YXRlLCBjb25zdCBWZWN0b3I8dWludDY0X3Q+
JiBjYWxsYmFja0lEcyk7CisgICAgdm9pZCBzZXRBY3Rpdml0eVN0YXRlKFdlYkNvcmU6OkFjdGl2
aXR5U3RhdGU6OkZsYWdzLCBib29sIHdhbnRzRGlkVXBkYXRlQWN0aXZpdHlTdGF0ZSwgY29uc3Qg
VmVjdG9yPHVpbnQ2NF90PiYgY2FsbGJhY2tJRHMpOwogICAgIHZvaWQgdmFsaWRhdGVDb21tYW5k
KGNvbnN0IFN0cmluZyYsIHVpbnQ2NF90KTsKICAgICB2b2lkIGV4ZWN1dGVFZGl0Q29tbWFuZChj
b25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmKTsKICAgICB2b2lkIHNldEVkaXRhYmxlKGJvb2wp
OwpAQCAtMTQ4NSw3ICsxNDg1LDcgQEAgcHJpdmF0ZToKIAogICAgIGJvb2wgbV91c2VBc3luY1Nj
cm9sbGluZzsKIAotICAgIFdlYkNvcmU6OlZpZXdTdGF0ZTo6RmxhZ3MgbV92aWV3U3RhdGU7Cisg
ICAgV2ViQ29yZTo6QWN0aXZpdHlTdGF0ZTo6RmxhZ3MgbV9hY3Rpdml0eVN0YXRlOwogCiAgICAg
VXNlckFjdGl2aXR5IG1fdXNlckFjdGl2aXR5OwogICAgIFdlYkNvcmU6Okh5c3RlcmVzaXNBY3Rp
dml0eSBtX3VzZXJBY3Rpdml0eUh5c3RlcmVzaXM7CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbgo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbgkocmV2aXNpb24g
MjA4MTk3KQorKysgU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVz
c2FnZXMuaW4JKHdvcmtpbmcgY29weSkKQEAgLTIyLDcgKzIyLDcgQEAKIAogbWVzc2FnZXMgLT4g
V2ViUGFnZSBMZWdhY3lSZWNlaXZlciB7CiAgICAgU2V0SW5pdGlhbEZvY3VzKGJvb2wgZm9yd2Fy
ZCwgYm9vbCBpc0tleWJvYXJkRXZlbnRWYWxpZCwgV2ViS2l0OjpXZWJLZXlib2FyZEV2ZW50IGV2
ZW50LCB1aW50NjRfdCBjYWxsYmFja0lEKQotICAgIFNldFZpZXdTdGF0ZSh1bnNpZ25lZCB2aWV3
U3RhdGUsIGJvb2wgd2FudHNEaWRVcGRhdGVWaWV3U3RhdGUsIFZlY3Rvcjx1aW50NjRfdD4gY2Fs
bGJhY2tJRHMpCisgICAgU2V0QWN0aXZpdHlTdGF0ZSh1bnNpZ25lZCBhY3Rpdml0eVN0YXRlLCBi
b29sIHdhbnRzRGlkVXBkYXRlQWN0aXZpdHlTdGF0ZSwgVmVjdG9yPHVpbnQ2NF90PiBjYWxsYmFj
a0lEcykKICAgICBTZXRMYXllckhvc3RpbmdNb2RlKGVudW0gV2ViS2l0OjpMYXllckhvc3RpbmdN
b2RlIGxheWVySG9zdGluZ01vZGUpCiAgICAgU2V0UGFnZVN1cHByZXNzZWQoYm9vbCBwYWdlU3Vw
cHJlc3NlZCkKIApJbmRleDogU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9S
ZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWEuaAkocmV2
aXNpb24gMjA4MTk3KQorKysgU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9S
ZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMDIsNyArMTAy
LDcgQEAgcHJpdmF0ZToKIAogICAgIHZvaWQgbWFpbkZyYW1lQ29udGVudFNpemVDaGFuZ2VkKGNv
bnN0IFdlYkNvcmU6OkludFNpemUmKSBvdmVycmlkZTsKIAotICAgIHZvaWQgdmlld1N0YXRlRGlk
Q2hhbmdlKFdlYkNvcmU6OlZpZXdTdGF0ZTo6RmxhZ3MgY2hhbmdlZCwgYm9vbCB3YW50c0RpZFVw
ZGF0ZVZpZXdTdGF0ZSwgY29uc3QgVmVjdG9yPHVpbnQ2NF90PiYgY2FsbGJhY2tJRHMpIG92ZXJy
aWRlOworICAgIHZvaWQgYWN0aXZpdHlTdGF0ZURpZENoYW5nZShXZWJDb3JlOjpBY3Rpdml0eVN0
YXRlOjpGbGFncyBjaGFuZ2VkLCBib29sIHdhbnRzRGlkVXBkYXRlQWN0aXZpdHlTdGF0ZSwgY29u
c3QgVmVjdG9yPHVpbnQ2NF90PiYgY2FsbGJhY2tJRHMpIG92ZXJyaWRlOwogCiAgICAgYm9vbCBh
ZGp1c3RMYXllckZsdXNoVGhyb3R0bGluZyhXZWJDb3JlOjpMYXllckZsdXNoVGhyb3R0bGVTdGF0
ZTo6RmxhZ3MpIG92ZXJyaWRlOwogCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dl
YlBhZ2UvbWFjL1JlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhLm1tCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvUmVtb3RlTGF5ZXJUcmVlRHJhd2lu
Z0FyZWEubW0JKHJldmlzaW9uIDIwODE5NykKKysrIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
V2ViUGFnZS9tYWMvUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWEubW0JKHdvcmtpbmcgY29weSkK
QEAgLTQ5NywxMSArNDk3LDExIEBAIHZvaWQgUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWE6OkJh
Y2tpbmcKICAgICBtX2Nvbm5lY3Rpb24tPnNlbmRNZXNzYWdlKFdURk1vdmUobV9jb21taXRFbmNv
ZGVyKSwgeyB9KTsKIH0KIAotdm9pZCBSZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYTo6dmlld1N0
YXRlRGlkQ2hhbmdlKFZpZXdTdGF0ZTo6RmxhZ3MsIGJvb2wgd2FudHNEaWRVcGRhdGVWaWV3U3Rh
dGUsIGNvbnN0IFZlY3Rvcjx1aW50NjRfdD4mKQordm9pZCBSZW1vdGVMYXllclRyZWVEcmF3aW5n
QXJlYTo6YWN0aXZpdHlTdGF0ZURpZENoYW5nZShBY3Rpdml0eVN0YXRlOjpGbGFncywgYm9vbCB3
YW50c0RpZFVwZGF0ZUFjdGl2aXR5U3RhdGUsIGNvbnN0IFZlY3Rvcjx1aW50NjRfdD4mKQogewog
ICAgIC8vIEZJWE1FOiBTaG91bGQgd2Ugc3VzcGVuZCBwYWludGluZyB3aGlsZSBub3QgdmlzaWJs
ZSwgbGlrZSBUaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYT8gUHJvYmFibHkuCiAKLSAgICBp
ZiAod2FudHNEaWRVcGRhdGVWaWV3U3RhdGUpCisgICAgaWYgKHdhbnRzRGlkVXBkYXRlQWN0aXZp
dHlTdGF0ZSkKICAgICAgICAgc2NoZWR1bGVDb21wb3NpdGluZ0xheWVyRmx1c2hJbW1lZGlhdGVs
eSgpOwogfQogCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1Rp
bGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9UaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYS5o
CShyZXZpc2lvbiAyMDgxOTcpCisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2Uv
bWFjL1RpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhLmgJKHdvcmtpbmcgY29weSkKQEAgLTgx
LDggKzgxLDggQEAgcHJpdmF0ZToKIAogICAgIGJvb2wgc2hvdWxkVXNlVGlsZWRCYWNraW5nRm9y
RnJhbWVWaWV3KGNvbnN0IFdlYkNvcmU6OkZyYW1lVmlldyopIG92ZXJyaWRlOwogCi0gICAgdm9p
ZCB2aWV3U3RhdGVEaWRDaGFuZ2UoV2ViQ29yZTo6Vmlld1N0YXRlOjpGbGFncyBjaGFuZ2VkLCBi
b29sIHdhbnRzRGlkVXBkYXRlVmlld1N0YXRlLCBjb25zdCBWZWN0b3I8dWludDY0X3Q+Jikgb3Zl
cnJpZGU7Ci0gICAgdm9pZCBkaWRVcGRhdGVWaWV3U3RhdGVUaW1lckZpcmVkKCk7CisgICAgdm9p
ZCBhY3Rpdml0eVN0YXRlRGlkQ2hhbmdlKFdlYkNvcmU6OkFjdGl2aXR5U3RhdGU6OkZsYWdzIGNo
YW5nZWQsIGJvb2wgd2FudHNEaWRVcGRhdGVBY3Rpdml0eVN0YXRlLCBjb25zdCBWZWN0b3I8dWlu
dDY0X3Q+Jikgb3ZlcnJpZGU7CisgICAgdm9pZCBkaWRVcGRhdGVBY3Rpdml0eVN0YXRlVGltZXJG
aXJlZCgpOwogCiAgICAgdm9pZCBhdHRhY2hWaWV3T3ZlcmxheUdyYXBoaWNzTGF5ZXIoV2ViQ29y
ZTo6RnJhbWUqLCBXZWJDb3JlOjpHcmFwaGljc0xheWVyKikgb3ZlcnJpZGU7CiAKQEAgLTE0Niw5
ICsxNDYsOSBAQCBwcml2YXRlOgogCiAgICAgV2ViQ29yZTo6VHJhbnNmb3JtYXRpb25NYXRyaXgg
bV90cmFuc2Zvcm07CiAKLSAgICBSdW5Mb29wOjpUaW1lcjxUaWxlZENvcmVBbmltYXRpb25EcmF3
aW5nQXJlYT4gbV9zZW5kRGlkVXBkYXRlVmlld1N0YXRlVGltZXI7Ci0gICAgVmVjdG9yPHVpbnQ2
NF90PiBtX25leHRWaWV3U3RhdGVDaGFuZ2VDYWxsYmFja0lEczsKLSAgICBib29sIG1fd2FudHNE
aWRVcGRhdGVWaWV3U3RhdGU7CisgICAgUnVuTG9vcDo6VGltZXI8VGlsZWRDb3JlQW5pbWF0aW9u
RHJhd2luZ0FyZWE+IG1fc2VuZERpZFVwZGF0ZUFjdGl2aXR5U3RhdGVUaW1lcjsKKyAgICBWZWN0
b3I8dWludDY0X3Q+IG1fbmV4dEFjdGl2aXR5U3RhdGVDaGFuZ2VDYWxsYmFja0lEczsKKyAgICBi
b29sIG1fd2FudHNEaWRVcGRhdGVBY3Rpdml0eVN0YXRlOwogCiAgICAgV2ViQ29yZTo6R3JhcGhp
Y3NMYXllciogbV92aWV3T3ZlcmxheVJvb3RMYXllcjsKIApJbmRleDogU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9UaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYS5tbQo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1RpbGVk
Q29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhLm1tCShyZXZpc2lvbiAyMDgxOTcpCisrKyBTb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1RpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdB
cmVhLm1tCSh3b3JraW5nIGNvcHkpCkBAIC03NywxMCArNzcsMTAgQEAgVGlsZWRDb3JlQW5pbWF0
aW9uRHJhd2luZ0FyZWE6OlRpbGVkQ29yZQogICAgIDogRHJhd2luZ0FyZWEoRHJhd2luZ0FyZWFU
eXBlVGlsZWRDb3JlQW5pbWF0aW9uLCB3ZWJQYWdlKQogICAgICwgbV9sYXllclRyZWVTdGF0ZUlz
RnJvemVuKGZhbHNlKQogICAgICwgbV9sYXllckZsdXNoU2NoZWR1bGVyKHRoaXMpCi0gICAgLCBt
X2lzUGFpbnRpbmdTdXNwZW5kZWQoIShwYXJhbWV0ZXJzLnZpZXdTdGF0ZSAmIFZpZXdTdGF0ZTo6
SXNWaXNpYmxlKSkKKyAgICAsIG1faXNQYWludGluZ1N1c3BlbmRlZCghKHBhcmFtZXRlcnMuYWN0
aXZpdHlTdGF0ZSAmIEFjdGl2aXR5U3RhdGU6OklzVmlzaWJsZSkpCiAgICAgLCBtX3RyYW5zaWVu
dFpvb21TY2FsZSgxKQotICAgICwgbV9zZW5kRGlkVXBkYXRlVmlld1N0YXRlVGltZXIoUnVuTG9v
cDo6bWFpbigpLCB0aGlzLCAmVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWE6OmRpZFVwZGF0
ZVZpZXdTdGF0ZVRpbWVyRmlyZWQpCi0gICAgLCBtX3dhbnRzRGlkVXBkYXRlVmlld1N0YXRlKGZh
bHNlKQorICAgICwgbV9zZW5kRGlkVXBkYXRlQWN0aXZpdHlTdGF0ZVRpbWVyKFJ1bkxvb3A6Om1h
aW4oKSwgdGhpcywgJlRpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhOjpkaWRVcGRhdGVBY3Rp
dml0eVN0YXRlVGltZXJGaXJlZCkKKyAgICAsIG1fd2FudHNEaWRVcGRhdGVBY3Rpdml0eVN0YXRl
KGZhbHNlKQogICAgICwgbV92aWV3T3ZlcmxheVJvb3RMYXllcihudWxscHRyKQogewogICAgIG1f
d2ViUGFnZS5jb3JlUGFnZSgpLT5zZXR0aW5ncygpLnNldEZvcmNlQ29tcG9zaXRpbmdNb2RlKHRy
dWUpOwpAQCAtNDQ3LDM0ICs0NDcsMzQgQEAgYm9vbCBUaWxlZENvcmVBbmltYXRpb25EcmF3aW5n
QXJlYTo6Zmx1cwogICAgIH0KIH0KIAotdm9pZCBUaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJl
YTo6dmlld1N0YXRlRGlkQ2hhbmdlKFZpZXdTdGF0ZTo6RmxhZ3MgY2hhbmdlZCwgYm9vbCB3YW50
c0RpZFVwZGF0ZVZpZXdTdGF0ZSwgY29uc3QgVmVjdG9yPHVpbnQ2NF90PiYgbmV4dFZpZXdTdGF0
ZUNoYW5nZUNhbGxiYWNrSURzKQordm9pZCBUaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYTo6
YWN0aXZpdHlTdGF0ZURpZENoYW5nZShBY3Rpdml0eVN0YXRlOjpGbGFncyBjaGFuZ2VkLCBib29s
IHdhbnRzRGlkVXBkYXRlQWN0aXZpdHlTdGF0ZSwgY29uc3QgVmVjdG9yPHVpbnQ2NF90PiYgbmV4
dEFjdGl2aXR5U3RhdGVDaGFuZ2VDYWxsYmFja0lEcykKIHsKLSAgICBtX25leHRWaWV3U3RhdGVD
aGFuZ2VDYWxsYmFja0lEcy5hcHBlbmRWZWN0b3IobmV4dFZpZXdTdGF0ZUNoYW5nZUNhbGxiYWNr
SURzKTsKLSAgICBtX3dhbnRzRGlkVXBkYXRlVmlld1N0YXRlIHw9IHdhbnRzRGlkVXBkYXRlVmll
d1N0YXRlOworICAgIG1fbmV4dEFjdGl2aXR5U3RhdGVDaGFuZ2VDYWxsYmFja0lEcy5hcHBlbmRW
ZWN0b3IobmV4dEFjdGl2aXR5U3RhdGVDaGFuZ2VDYWxsYmFja0lEcyk7CisgICAgbV93YW50c0Rp
ZFVwZGF0ZUFjdGl2aXR5U3RhdGUgfD0gd2FudHNEaWRVcGRhdGVBY3Rpdml0eVN0YXRlOwogCi0g
ICAgaWYgKGNoYW5nZWQgJiBWaWV3U3RhdGU6OklzVmlzaWJsZSkgeworICAgIGlmIChjaGFuZ2Vk
ICYgQWN0aXZpdHlTdGF0ZTo6SXNWaXNpYmxlKSB7CiAgICAgICAgIGlmIChtX3dlYlBhZ2UuaXNW
aXNpYmxlKCkpCiAgICAgICAgICAgICByZXN1bWVQYWludGluZygpOwogICAgICAgICBlbHNlCiAg
ICAgICAgICAgICBzdXNwZW5kUGFpbnRpbmcoKTsKICAgICB9CiAKLSAgICBpZiAobV93YW50c0Rp
ZFVwZGF0ZVZpZXdTdGF0ZSB8fCAhbV9uZXh0Vmlld1N0YXRlQ2hhbmdlQ2FsbGJhY2tJRHMuaXNF
bXB0eSgpKQotICAgICAgICBtX3NlbmREaWRVcGRhdGVWaWV3U3RhdGVUaW1lci5zdGFydE9uZVNo
b3QoMCk7CisgICAgaWYgKG1fd2FudHNEaWRVcGRhdGVBY3Rpdml0eVN0YXRlIHx8ICFtX25leHRB
Y3Rpdml0eVN0YXRlQ2hhbmdlQ2FsbGJhY2tJRHMuaXNFbXB0eSgpKQorICAgICAgICBtX3NlbmRE
aWRVcGRhdGVBY3Rpdml0eVN0YXRlVGltZXIuc3RhcnRPbmVTaG90KDApOwogfQogCi12b2lkIFRp
bGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhOjpkaWRVcGRhdGVWaWV3U3RhdGVUaW1lckZpcmVk
KCkKK3ZvaWQgVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWE6OmRpZFVwZGF0ZUFjdGl2aXR5
U3RhdGVUaW1lckZpcmVkKCkKIHsKICAgICBbQ0FUcmFuc2FjdGlvbiBmbHVzaF07CiAKLSAgICBp
ZiAobV93YW50c0RpZFVwZGF0ZVZpZXdTdGF0ZSkKLSAgICAgICAgbV93ZWJQYWdlLnNlbmQoTWVz
c2FnZXM6OldlYlBhZ2VQcm94eTo6RGlkVXBkYXRlVmlld1N0YXRlKCkpOworICAgIGlmIChtX3dh
bnRzRGlkVXBkYXRlQWN0aXZpdHlTdGF0ZSkKKyAgICAgICAgbV93ZWJQYWdlLnNlbmQoTWVzc2Fn
ZXM6OldlYlBhZ2VQcm94eTo6RGlkVXBkYXRlQWN0aXZpdHlTdGF0ZSgpKTsKIAotICAgIGZvciAo
dWludDY0X3QgY2FsbGJhY2tJRCA6IG1fbmV4dFZpZXdTdGF0ZUNoYW5nZUNhbGxiYWNrSURzKQor
ICAgIGZvciAodWludDY0X3QgY2FsbGJhY2tJRCA6IG1fbmV4dEFjdGl2aXR5U3RhdGVDaGFuZ2VD
YWxsYmFja0lEcykKICAgICAgICAgbV93ZWJQYWdlLnNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94
eTo6Vm9pZENhbGxiYWNrKGNhbGxiYWNrSUQpKTsKIAotICAgIG1fbmV4dFZpZXdTdGF0ZUNoYW5n
ZUNhbGxiYWNrSURzLmNsZWFyKCk7Ci0gICAgbV93YW50c0RpZFVwZGF0ZVZpZXdTdGF0ZSA9IGZh
bHNlOworICAgIG1fbmV4dEFjdGl2aXR5U3RhdGVDaGFuZ2VDYWxsYmFja0lEcy5jbGVhcigpOwor
ICAgIG1fd2FudHNEaWRVcGRhdGVBY3Rpdml0eVN0YXRlID0gZmFsc2U7CiB9CiAKIHZvaWQgVGls
ZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWE6OnN1c3BlbmRQYWludGluZygpCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>293503</attachid>
            <date>2016-10-31 17:25:50 -0700</date>
            <delta_ts>2016-11-01 09:00:35 -0700</delta_ts>
            <desc>Fix</desc>
            <filename>164254.4.patch</filename>
            <type>text/plain</type>
            <size>119062</size>
            <attacher name="Gavin Barraclough">barraclough</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIwODE5NykKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDU1IEBACisyMDE2LTEwLTMxICBHYXZpbiBC
YXJyYWNsb3VnaCAgPGJhcnJhY2xvdWdoQGFwcGxlLmNvbT4KKworICAgICAgICBSZW5hbWUgVmll
d1N0YXRlIHRvIEFjdGl2aXR5U3RhdGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTE2NDI1NAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIFdlIHBsYW4gdG8gYWRkIGEgY291cGxlIG1vcmUgZmxhZ3MgdG8gVmll
d1N0YXRlIHRoYXQgYXJlbid0IGRpcmVjdGx5IHJlbGF0ZWQgdG8gdGhlIHZpZXcKKyAgICAgICAg
aXRzZWxmIC0gd2hldGhlciB0aGVyZSBpcyBhbiBvbmdvaW5nIHBhZ2UgbG9hZCwgYW5kIHdoZXRo
ZXIgd2hldGhlciB0aGVyZSBpcyBhdWRpbyBwbGF5YmFjay4KKyAgICAgICAgVGhpcyB3aWxsIGFs
bG93IHZpZXdTdGF0ZSAobm93IGFjdGl2aXR5U3RhdGUpIHRvIGZ1bGx5IGRyaXZlIHRocm90dGxp
bmcgZGVjaXNpb25zLgorCisgICAgICAgIFJlbmFtaW5nIHRoaXMgYml0ZmllbGQgYWNjb3JkaW5n
bHkuCisgICAgICAgICogTW9kdWxlcy9nZW9sb2NhdGlvbi9HZW9sb2NhdGlvbkNvbnRyb2xsZXIu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6R2VvbG9jYXRpb25Db250cm9sbGVyOjpHZW9sb2NhdGlv
bkNvbnRyb2xsZXIpOgorICAgICAgICAoV2ViQ29yZTo6R2VvbG9jYXRpb25Db250cm9sbGVyOjp+
R2VvbG9jYXRpb25Db250cm9sbGVyKToKKyAgICAgICAgKFdlYkNvcmU6Okdlb2xvY2F0aW9uQ29u
dHJvbGxlcjo6YWN0aXZpdHlTdGF0ZURpZENoYW5nZSk6CisgICAgICAgIChXZWJDb3JlOjpHZW9s
b2NhdGlvbkNvbnRyb2xsZXI6OnZpZXdTdGF0ZURpZENoYW5nZSk6IERlbGV0ZWQuCisgICAgICAg
ICogTW9kdWxlcy9nZW9sb2NhdGlvbi9HZW9sb2NhdGlvbkNvbnRyb2xsZXIuaDoKKyAgICAgICAg
KiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogcGFnZS9BY3Rp
dml0eVN0YXRlLmg6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvVmlld1N0YXRlLmgu
CisgICAgICAgICogcGFnZS9BY3Rpdml0eVN0YXRlQ2hhbmdlT2JzZXJ2ZXIuaDogQ29waWVkIGZy
b20gU291cmNlL1dlYkNvcmUvcGFnZS9WaWV3U3RhdGVDaGFuZ2VPYnNlcnZlci5oLgorICAgICAg
ICAoV2ViQ29yZTo6QWN0aXZpdHlTdGF0ZUNoYW5nZU9ic2VydmVyOjp+QWN0aXZpdHlTdGF0ZUNo
YW5nZU9ic2VydmVyKToKKyAgICAgICAgKFdlYkNvcmU6OlZpZXdTdGF0ZUNoYW5nZU9ic2VydmVy
Ojp+Vmlld1N0YXRlQ2hhbmdlT2JzZXJ2ZXIpOiBEZWxldGVkLgorICAgICAgICAqIHBhZ2UvRm9j
dXNDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZvY3VzQ29udHJvbGxlcjo6Rm9j
dXNDb250cm9sbGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkZvY3VzQ29udHJvbGxlcjo6c2V0Rm9j
dXNlZCk6CisgICAgICAgIChXZWJDb3JlOjpGb2N1c0NvbnRyb2xsZXI6OnNldEFjdGl2aXR5U3Rh
dGUpOgorICAgICAgICAoV2ViQ29yZTo6Rm9jdXNDb250cm9sbGVyOjpzZXRBY3RpdmUpOgorICAg
ICAgICAoV2ViQ29yZTo6Rm9jdXNDb250cm9sbGVyOjpzZXRWaWV3U3RhdGUpOiBEZWxldGVkLgor
ICAgICAgICAqIHBhZ2UvRm9jdXNDb250cm9sbGVyLmg6CisgICAgICAgIChXZWJDb3JlOjpGb2N1
c0NvbnRyb2xsZXI6OmlzQWN0aXZlKToKKyAgICAgICAgKFdlYkNvcmU6OkZvY3VzQ29udHJvbGxl
cjo6aXNGb2N1c2VkKToKKyAgICAgICAgKFdlYkNvcmU6OkZvY3VzQ29udHJvbGxlcjo6Y29udGVu
dElzVmlzaWJsZSk6CisgICAgICAgICogcGFnZS9QYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlBhZ2U6OlBhZ2UpOgorICAgICAgICAoV2ViQ29yZTo6UGFnZTo6c2V0SXNJbldpbmRvdyk6Cisg
ICAgICAgIChXZWJDb3JlOjpQYWdlOjphZGRBY3Rpdml0eVN0YXRlQ2hhbmdlT2JzZXJ2ZXIpOgor
ICAgICAgICAoV2ViQ29yZTo6UGFnZTo6cmVtb3ZlQWN0aXZpdHlTdGF0ZUNoYW5nZU9ic2VydmVy
KToKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2U6OnVwZGF0ZVRpbWVyVGhyb3R0bGluZ1N0YXRlKToK
KyAgICAgICAgKFdlYkNvcmU6OlBhZ2U6OnNldEFjdGl2aXR5U3RhdGUpOgorICAgICAgICAoV2Vi
Q29yZTo6UGFnZTo6aXNWaXNpYmxlQW5kQWN0aXZlKToKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2U6
OnNldElzVmlzaWJsZSk6CisgICAgICAgIChXZWJDb3JlOjpQYWdlOjphZGRWaWV3U3RhdGVDaGFu
Z2VPYnNlcnZlcik6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpQYWdlOjpyZW1vdmVWaWV3
U3RhdGVDaGFuZ2VPYnNlcnZlcik6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpQYWdlOjpz
ZXRWaWV3U3RhdGUpOiBEZWxldGVkLgorICAgICAgICAqIHBhZ2UvUGFnZS5oOgorICAgICAgICAo
V2ViQ29yZTo6UGFnZTo6aXNWaXNpYmxlKToKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2U6OmlzSW5X
aW5kb3cpOgorICAgICAgICAqIHBhZ2UvUGFnZVRocm90dGxlci5oOgorICAgICAgICAqIHBhZ2Uv
Vmlld1N0YXRlLmg6IFJlbW92ZWQuCisgICAgICAgICogcGFnZS9WaWV3U3RhdGVDaGFuZ2VPYnNl
cnZlci5oOiBSZW1vdmVkLgorCiAyMDE2LTEwLTMxICBOYW4gV2FuZyAgPG5fd2FuZ0BhcHBsZS5j
b20+CiAKICAgICAgICAgQVg6IGFyaWEtc29ydCBpcyBub3QgZXhwb3NlZCBvbiBpT1MKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvZ2VvbG9jYXRpb24vR2VvbG9jYXRpb25Db250cm9sbGVy
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2dlb2xvY2F0aW9uL0dl
b2xvY2F0aW9uQ29udHJvbGxlci5jcHAJKHJldmlzaW9uIDIwODE5NykKKysrIFNvdXJjZS9XZWJD
b3JlL01vZHVsZXMvZ2VvbG9jYXRpb24vR2VvbG9jYXRpb25Db250cm9sbGVyLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMzgsMTQgKzM4LDE0IEBAIEdlb2xvY2F0aW9uQ29udHJvbGxlcjo6R2VvbG9j
YXRpb25Db250cm8KICAgICA6IG1fcGFnZShwYWdlKQogICAgICwgbV9jbGllbnQoY2xpZW50KQog
ewotICAgIG1fcGFnZS5hZGRWaWV3U3RhdGVDaGFuZ2VPYnNlcnZlcigqdGhpcyk7CisgICAgbV9w
YWdlLmFkZEFjdGl2aXR5U3RhdGVDaGFuZ2VPYnNlcnZlcigqdGhpcyk7CiB9CiAKIEdlb2xvY2F0
aW9uQ29udHJvbGxlcjo6fkdlb2xvY2F0aW9uQ29udHJvbGxlcigpCiB7CiAgICAgQVNTRVJUKG1f
b2JzZXJ2ZXJzLmlzRW1wdHkoKSk7CiAKLSAgICAvLyBOT1RFOiBXZSBkb24ndCBoYXZlIHRvIHJl
bW92ZSBvdXJzZWx2ZXMgZnJvbSBwYWdlJ3MgVmlld1N0YXRlQ2hhbmdlT2JzZXJ2ZXIgc2V0LCBz
aW5jZQorICAgIC8vIE5PVEU6IFdlIGRvbid0IGhhdmUgdG8gcmVtb3ZlIG91cnNlbHZlcyBmcm9t
IHBhZ2UncyBBY3Rpdml0eVN0YXRlQ2hhbmdlT2JzZXJ2ZXIgc2V0LCBzaW5jZQogICAgIC8vIHdl
IGFyZSBzdXBwbGVtZW50IG9mIHRoZSBQYWdlLCBhbmQgb3VyIGRlc3RydWN0b3IgZ2V0dGluZyBj
YWxsZWQgbWVhbnMgdGhlIHBhZ2UgaXMgYmVpbmcKICAgICAvLyB0b3JuIGRvd24uCiAKQEAgLTEy
NCwxMiArMTI0LDEyIEBAIEdlb2xvY2F0aW9uUG9zaXRpb24qIEdlb2xvY2F0aW9uQ29udHJvbGwK
ICAgICByZXR1cm4gbV9jbGllbnQubGFzdFBvc2l0aW9uKCk7CiB9CiAKLXZvaWQgR2VvbG9jYXRp
b25Db250cm9sbGVyOjp2aWV3U3RhdGVEaWRDaGFuZ2UoVmlld1N0YXRlOjpGbGFncyBvbGRWaWV3
U3RhdGUsIFZpZXdTdGF0ZTo6RmxhZ3MgbmV3Vmlld1N0YXRlKQordm9pZCBHZW9sb2NhdGlvbkNv
bnRyb2xsZXI6OmFjdGl2aXR5U3RhdGVEaWRDaGFuZ2UoQWN0aXZpdHlTdGF0ZTo6RmxhZ3Mgb2xk
QWN0aXZpdHlTdGF0ZSwgQWN0aXZpdHlTdGF0ZTo6RmxhZ3MgbmV3QWN0aXZpdHlTdGF0ZSkKIHsK
ICAgICAvLyBUb2dnbGUgR1BTIGJhc2VkIG9uIHBhZ2UgdmlzaWJpbGl0eSB0byBzYXZlIGJhdHRl
cnkuCi0gICAgVmlld1N0YXRlOjpGbGFncyBjaGFuZ2VkID0gb2xkVmlld1N0YXRlIF4gbmV3Vmll
d1N0YXRlOwotICAgIGlmIChjaGFuZ2VkICYgVmlld1N0YXRlOjpJc1Zpc2libGUgJiYgIW1fb2Jz
ZXJ2ZXJzLmlzRW1wdHkoKSkgewotICAgICAgICBpZiAobmV3Vmlld1N0YXRlICYgVmlld1N0YXRl
OjpJc1Zpc2libGUpCisgICAgQWN0aXZpdHlTdGF0ZTo6RmxhZ3MgY2hhbmdlZCA9IG9sZEFjdGl2
aXR5U3RhdGUgXiBuZXdBY3Rpdml0eVN0YXRlOworICAgIGlmIChjaGFuZ2VkICYgQWN0aXZpdHlT
dGF0ZTo6SXNWaXNpYmxlICYmICFtX29ic2VydmVycy5pc0VtcHR5KCkpIHsKKyAgICAgICAgaWYg
KG5ld0FjdGl2aXR5U3RhdGUgJiBBY3Rpdml0eVN0YXRlOjpJc1Zpc2libGUpCiAgICAgICAgICAg
ICBtX2NsaWVudC5zdGFydFVwZGF0aW5nKCk7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIG1f
Y2xpZW50LnN0b3BVcGRhdGluZygpOwpJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy9nZW9s
b2NhdGlvbi9HZW9sb2NhdGlvbkNvbnRyb2xsZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2dlb2xvY2F0aW9uL0dlb2xvY2F0aW9uQ29udHJvbGxlci5oCShyZXZpc2lv
biAyMDgxOTcpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2dlb2xvY2F0aW9uL0dlb2xvY2F0
aW9uQ29udHJvbGxlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0yOCw5ICsyOCw5IEBACiAKICNpZiBF
TkFCTEUoR0VPTE9DQVRJT04pCiAKKyNpbmNsdWRlICJBY3Rpdml0eVN0YXRlQ2hhbmdlT2JzZXJ2
ZXIuaCIKICNpbmNsdWRlICJHZW9sb2NhdGlvbi5oIgogI2luY2x1ZGUgIlBhZ2UuaCIKLSNpbmNs
dWRlICJWaWV3U3RhdGVDaGFuZ2VPYnNlcnZlci5oIgogI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+
CiAjaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+CiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgpA
QCAtNDIsNyArNDIsNyBAQCBjbGFzcyBHZW9sb2NhdGlvbkVycm9yOwogY2xhc3MgR2VvbG9jYXRp
b25Qb3NpdGlvbjsKIGNsYXNzIFBhZ2U7CiAKLWNsYXNzIEdlb2xvY2F0aW9uQ29udHJvbGxlciA6
IHB1YmxpYyBTdXBwbGVtZW50PFBhZ2U+LCBwcml2YXRlIFZpZXdTdGF0ZUNoYW5nZU9ic2VydmVy
IHsKK2NsYXNzIEdlb2xvY2F0aW9uQ29udHJvbGxlciA6IHB1YmxpYyBTdXBwbGVtZW50PFBhZ2U+
LCBwcml2YXRlIEFjdGl2aXR5U3RhdGVDaGFuZ2VPYnNlcnZlciB7CiAgICAgV1RGX01BS0VfRkFT
VF9BTExPQ0FURUQ7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoR2VvbG9jYXRpb25Db250cm9s
bGVyKTsKIHB1YmxpYzoKQEAgLTY5LDcgKzY5LDcgQEAgcHJpdmF0ZToKICAgICBQYWdlJiBtX3Bh
Z2U7CiAgICAgR2VvbG9jYXRpb25DbGllbnQmIG1fY2xpZW50OwogCi0gICAgdm9pZCB2aWV3U3Rh
dGVEaWRDaGFuZ2UoVmlld1N0YXRlOjpGbGFncyBvbGRWaWV3U3RhdGUsIFZpZXdTdGF0ZTo6Rmxh
Z3MgbmV3Vmlld1N0YXRlKSBvdmVycmlkZTsKKyAgICB2b2lkIGFjdGl2aXR5U3RhdGVEaWRDaGFu
Z2UoQWN0aXZpdHlTdGF0ZTo6RmxhZ3Mgb2xkQWN0aXZpdHlTdGF0ZSwgQWN0aXZpdHlTdGF0ZTo6
RmxhZ3MgbmV3QWN0aXZpdHlTdGF0ZSkgb3ZlcnJpZGU7CiAKICAgICBSZWZQdHI8R2VvbG9jYXRp
b25Qb3NpdGlvbj4gbV9sYXN0UG9zaXRpb247CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1dlYkNv
cmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDIwODE5NykKKysr
IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2lu
ZyBjb3B5KQpAQCAtMjY4Niw2ICsyNjg2LDggQEAKIAkJNzI0RUQzMkMxQTNBN0U1NDAwRjVGMTND
IC8qIEVYVEJsZW5kTWluTWF4LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDcyNEVEMzI5MUEzQTdFNTQwMEY1RjEzQyAvKiBFWFRCbGVuZE1pbk1heC5j
cHAgKi87IH07CiAJCTcyNEVEMzMxMUEzQThCMjMwMEY1RjEzQyAvKiBKU0VYVEJsZW5kTWluTWF4
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDcyNEVE
MzJGMUEzQThCMjMwMEY1RjEzQyAvKiBKU0VYVEJsZW5kTWluTWF4LmNwcCAqLzsgfTsKIAkJNzI0
RUQzMzIxQTNBOEIyMzAwRjVGMTNDIC8qIEpTRVhUQmxlbmRNaW5NYXguaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDcyNEVEMzMwMUEzQThCMjMwMEY1RjEz
QyAvKiBKU0VYVEJsZW5kTWluTWF4LmggKi87IH07CisJCTcyNEVFNTUwMURDODBEN0YwMEE5MUZG
QiAvKiBBY3Rpdml0eVN0YXRlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA3MjRFRTU0RTFEQzdGMjVCMDBBOTFGRkIgLyogQWN0aXZpdHlTdGF0ZS5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTcyNEVFNTUx
MURDODBEODQwMEE5MUZGQiAvKiBBY3Rpdml0eVN0YXRlQ2hhbmdlT2JzZXJ2ZXIuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDcyNEVFNTRGMURDN0YyNUIw
MEE5MUZGQiAvKiBBY3Rpdml0eVN0YXRlQ2hhbmdlT2JzZXJ2ZXIuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk3MjdBRkVENDFBMkVBNkFFMDAwNDQy
RTggLyogRVhUc1JHQi5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA3MjdBRkVEMTFBMkVBNkEwMDAwNDQyRTggLyogRVhUc1JHQi5jcHAgKi87IH07CiAJ
CTcyRTQxNzYzMUEyRThEMkYwMDRDNTYyQSAvKiBKU0VYVHNSR0IuY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzJFNDE3NjExQTJFOEQyRjAwNEM1NjJB
IC8qIEpTRVhUc1JHQi5jcHAgKi87IH07CiAJCTcyRjFBREEyMUEzOTA0REMwMDAxNEUxOCAvKiBF
WFRGcmFnRGVwdGguY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNzJGMUFEOUYxQTM5MDRDMzAwMDE0RTE4IC8qIEVYVEZyYWdEZXB0aC5jcHAgKi87IH07
CkBAIC0yODUxLDcgKzI4NTMsNiBAQAogCQk3Q0QwQkEwNTFCOEY3OUM5MDA1Q0VCQkUgLyogQWN0
aXZlRE9NQ2FsbGJhY2tNaWNyb3Rhc2suaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDdDRDBCQTAzMUI4Rjc5QzkwMDVDRUJCRSAvKiBBY3RpdmVET01DYWxs
YmFja01pY3JvdGFzay5oICovOyB9OwogCQk3Q0Q0OTRDQzFBODZFQjFEMDAwQTg3RUMgLyogUmVu
ZGVyQXR0YWNobWVudC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA3Q0Q0OTRDQTFBODZFQjFEMDAwQTg3RUMgLyogUmVuZGVyQXR0YWNobWVudC5jcHAg
Ki87IH07CiAJCTdDRDQ5NENEMUE4NkVCMUQwMDBBODdFQyAvKiBSZW5kZXJBdHRhY2htZW50Lmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3Q0Q0OTRDQjFB
ODZFQjFEMDAwQTg3RUMgLyogUmVuZGVyQXR0YWNobWVudC5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07Ci0JCTdDREVFRTFFMTk3NjEwRDcwMEUzNTJDRCAv
KiBWaWV3U3RhdGVDaGFuZ2VPYnNlcnZlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gN0NERUVFMUQxOTc2MTBENzAwRTM1MkNEIC8qIFZpZXdTdGF0ZUNo
YW5nZU9ic2VydmVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKIAkJN0NFNjgzNDQxOTIxNDNBODAwRjREOTI4IC8qIFVzZXJNZXNzYWdlSGFuZGxlckRl
c2NyaXB0b3IuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gN0NFNjgzNDIxOTIxNDNBODAwRjREOTI4IC8qIFVzZXJNZXNzYWdlSGFuZGxlckRlc2NyaXB0
b3IuY3BwICovOyB9OwogCQk3Q0U2ODM0NTE5MjE0M0E4MDBGNEQ5MjggLyogVXNlck1lc3NhZ2VI
YW5kbGVyRGVzY3JpcHRvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gN0NFNjgzNDMxOTIxNDNBODAwRjREOTI4IC8qIFVzZXJNZXNzYWdlSGFuZGxlckRl
c2NyaXB0b3IuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OwogCQk3Q0U2ODM0NzE5MjE4MjE1MDBGNEQ5MjggLyogVXNlck1lc3NhZ2VIYW5kbGVyRGVzY3Jp
cHRvclR5cGVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA3Q0U2ODM0NjE5MjE4MjE1MDBGNEQ5MjggLyogVXNlck1lc3NhZ2VIYW5kbGVyRGVzY3JpcHRv
clR5cGVzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
QEAgLTMxMjUsNyArMzEyNiw2IEBACiAJCTg2MkYxMkEwMThDMUREMDIwMDVDNTRBRiAvKiBIeXN0
ZXJlc2lzQWN0aXZpdHkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDg2MkYxMjlGMThDMURDRTQwMDVDNTRBRiAvKiBIeXN0ZXJlc2lzQWN0aXZpdHkuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk4NjUxMkVE
RTE1NEEyQUVGMDBBOTA0MjYgLyogUGVyZm9ybWFuY2VSZXNvdXJjZVRpbWluZy5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NjUxMkVEQjE1NEEyQUVF
MDBBOTA0MjYgLyogUGVyZm9ybWFuY2VSZXNvdXJjZVRpbWluZy5jcHAgKi87IH07CiAJCTg2NTEy
RURGMTU0QTJBRUYwMEE5MDQyNiAvKiBQZXJmb3JtYW5jZVJlc291cmNlVGltaW5nLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NjUxMkVEQzE1NEEyQUVG
MDBBOTA0MjYgLyogUGVyZm9ybWFuY2VSZXNvdXJjZVRpbWluZy5oICovOyB9OwotCQk4Njc4RDBC
QjE4NzhFODkxMDAzQUJERTYgLyogVmlld1N0YXRlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4Njc4RDBCQTE4NzhFODEwMDAzQUJERTYgLyogVmlld1N0
YXRlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJ
ODY4MTYwRDQxODc2NkEwQTAwMjFFNzlEIC8qIFVzZXJBY3Rpdml0eS5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NjgxNjBEMTE4NzY2OUM0MDAyMUU3
OUQgLyogVXNlckFjdGl2aXR5LmNwcCAqLzsgfTsKIAkJODY4MTYwRDUxODc2NkEwRTAwMjFFNzlE
IC8qIFVzZXJBY3Rpdml0eU1hYy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDg2ODE2MEQzMTg3NjY5RTcwMDIxRTc5RCAvKiBVc2VyQWN0aXZpdHlNYWMu
bW0gKi87IH07CiAJCTg2ODE2MEQ2MTg3NjZBMTMwMDIxRTc5RCAvKiBVc2VyQWN0aXZpdHkuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2ODE2MEQyMTg3
NjY5QzQwMDIxRTc5RCAvKiBVc2VyQWN0aXZpdHkuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtMTAwMTIsNiArMTAwMTIsOCBAQAogCQk3MjRFRDMy
QjFBM0E3RTU0MDBGNUYxM0MgLyogRVhUQmxlbmRNaW5NYXguaWRsICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsg
cGF0aCA9IEVYVEJsZW5kTWluTWF4LmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
NzI0RUQzMkYxQTNBOEIyMzAwRjVGMTNDIC8qIEpTRVhUQmxlbmRNaW5NYXguY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNFWFRCbGVuZE1pbk1heC5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTcyNEVEMzMwMUEzQThCMjMwMEY1RjEzQyAvKiBKU0VY
VEJsZW5kTWluTWF4LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTRVhUQmxl
bmRNaW5NYXguaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNzI0RUU1NEUxREM3RjI1
QjAwQTkxRkZCIC8qIEFjdGl2aXR5U3RhdGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gQWN0aXZpdHlTdGF0ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3MjRF
RTU0RjFEQzdGMjVCMDBBOTFGRkIgLyogQWN0aXZpdHlTdGF0ZUNoYW5nZU9ic2VydmVyLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEFjdGl2aXR5U3RhdGVDaGFuZ2VPYnNlcnZl
ci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3MjdBRkVEMTFBMkVBNkEwMDAwNDQy
RTggLyogRVhUc1JHQi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBF
WFRzUkdCLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzI3QUZFRDIxQTJFQTZB
MDAwMDQ0MkU4IC8qIEVYVHNSR0IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
RVhUc1JHQi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3MjdBRkVEMzFBMkVBNkEw
MDAwNDQyRTggLyogRVhUc1JHQi5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gRVhUc1JHQi5p
ZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xMDIwNiw3ICsxMDIwOCw2IEBACiAJ
CTdDRDBCQTAzMUI4Rjc5QzkwMDVDRUJCRSAvKiBBY3RpdmVET01DYWxsYmFja01pY3JvdGFzay5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBY3RpdmVET01DYWxsYmFja01pY3Jv
dGFzay5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3Q0Q0OTRDQTFBODZFQjFEMDAw
QTg3RUMgLyogUmVuZGVyQXR0YWNobWVudC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBSZW5kZXJBdHRhY2htZW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJN0NENDk0Q0IxQTg2RUIxRDAwMEE4N0VDIC8qIFJlbmRlckF0dGFjaG1lbnQuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVuZGVyQXR0YWNobWVudC5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwotCQk3Q0RFRUUxRDE5NzYxMEQ3MDBFMzUyQ0QgLyogVmlld1N0
YXRlQ2hhbmdlT2JzZXJ2ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVmll
d1N0YXRlQ2hhbmdlT2JzZXJ2ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0NF
NjgzNDIxOTIxNDNBODAwRjREOTI4IC8qIFVzZXJNZXNzYWdlSGFuZGxlckRlc2NyaXB0b3IuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gVXNlck1lc3NhZ2VIYW5kbGVy
RGVzY3JpcHRvci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdDRTY4MzQzMTky
MTQzQTgwMEY0RDkyOCAvKiBVc2VyTWVzc2FnZUhhbmRsZXJEZXNjcmlwdG9yLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFVzZXJNZXNzYWdlSGFuZGxlckRlc2NyaXB0b3IuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0NFNjgzNDYxOTIxODIxNTAwRjREOTI4IC8q
IFVzZXJNZXNzYWdlSGFuZGxlckRlc2NyaXB0b3JUeXBlcy5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBVc2VyTWVzc2FnZUhhbmRsZXJEZXNjcmlwdG9yVHlwZXMuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTEwNTM5LDcgKzEwNTQwLDYgQEAKIAkJODY1MTJFREIx
NTRBMkFFRTAwQTkwNDI2IC8qIFBlcmZvcm1hbmNlUmVzb3VyY2VUaW1pbmcuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUGVyZm9ybWFuY2VSZXNvdXJjZVRpbWluZy5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTg2NTEyRURDMTU0QTJBRUYwMEE5MDQy
NiAvKiBQZXJmb3JtYW5jZVJlc291cmNlVGltaW5nLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IFBlcmZvcm1hbmNlUmVzb3VyY2VUaW1pbmcuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJODY1MTJFREQxNTRBMkFFRjAwQTkwNDI2IC8qIFBlcmZvcm1hbmNlUmVzb3Vy
Y2VUaW1pbmcuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IFBlcmZvcm1hbmNlUmVzb3VyY2VU
aW1pbmcuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk4Njc4RDBCQTE4NzhFODEw
MDAzQUJERTYgLyogVmlld1N0YXRlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFZpZXdTdGF0ZS5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4NjgxNjBEMTE4NzY2OUM0MDAyMUU3OUQgLyogVXNl
ckFjdGl2aXR5LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFVzZXJBY3Rpdml0eS5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTg2ODE2MEQyMTg3NjY5QzQwMDIxRTc5RCAvKiBVc2Vy
QWN0aXZpdHkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVXNlckFjdGl2aXR5Lmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTg2ODE2MEQzMTg3NjY5RTcwMDIxRTc5RCAvKiBVc2VyQWN0aXZpdHlN
YWMubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBVc2VyQWN0aXZpdHlNYWMubW07IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xNzU5Nyw2ICsxNzU5Nyw4IEBACiAJCQkJMThBNkNENkYw
RDhGMjAyNTAwMURDM0NFIC8qIGlvcyAqLywKIAkJCQk5M0MwOUE4MjBCMDY0RjA1MDA1QUJENEQg
LyogbWFjICovLAogCQkJCTFBRjYyRUUxMTREQTIyQTcwMDQxNTU2QyAvKiBzY3JvbGxpbmcgKi8s
CisJCQkJNzI0RUU1NEUxREM3RjI1QjAwQTkxRkZCIC8qIEFjdGl2aXR5U3RhdGUuaCAqLywKKwkJ
CQk3MjRFRTU0RjFEQzdGMjVCMDBBOTFGRkIgLyogQWN0aXZpdHlTdGF0ZUNoYW5nZU9ic2VydmVy
LmggKi8sCiAJCQkJQkNGNDhDRTYxMzcwRDExNDAwNEU4N0Q2IC8qIEFkanVzdFZpZXdTaXplT3JO
b3QuaCAqLywKIAkJCQlDRURBMTJENjE1MkNBMUNCMDBEOUUwOEQgLyogQWx0ZXJuYXRpdmVUZXh0
Q2xpZW50LmggKi8sCiAJCQkJNDU4MzBENEIxNjc5QjRGODAwQUNGOEMzIC8qIEF1dG9zY3JvbGxD
b250cm9sbGVyLmNwcCAqLywKQEAgLTE3Nzk2LDggKzE3Nzk4LDYgQEAKIAkJCQlGNTEzQTNFOTE1
RkY0ODQxMDAxNTI2REIgLyogVmFsaWRhdGlvbk1lc3NhZ2VDbGllbnQuaCAqLywKIAkJCQkyNkY5
QTgzNjE4QTA0NkFDMDBBRUI4OEEgLyogVmlld3BvcnRDb25maWd1cmF0aW9uLmNwcCAqLywKIAkJ
CQkyNkY5QTgzNzE4QTA0NkFDMDBBRUI4OEEgLyogVmlld3BvcnRDb25maWd1cmF0aW9uLmggKi8s
Ci0JCQkJODY3OEQwQkExODc4RTgxMDAwM0FCREU2IC8qIFZpZXdTdGF0ZS5oICovLAotCQkJCTdD
REVFRTFEMTk3NjEwRDcwMEUzNTJDRCAvKiBWaWV3U3RhdGVDaGFuZ2VPYnNlcnZlci5oICovLAog
CQkJCTFBRjRDRUVCMThCQzNDMUIwMEJDMkQzNCAvKiBWaXNpdGVkTGlua1N0b3JlLmNwcCAqLywK
IAkJCQkxQUJBN0ZGRjE4OTczNDEyMDBEQ0U5RDYgLyogVmlzaXRlZExpbmtTdG9yZS5oICovLAog
CQkJCUJFOTgzRDk1MDUyQTJFMEEwMDg5MkQ4NSAvKiBXZWJDb3JlS2V5Ym9hcmRVSU1vZGUuaCAq
LywKQEAgLTI2NDA1LDYgKzI2NDA1LDcgQEAKIAkJCQlDOTA4NDNEMDFCMThFNDdEMDBCNjg1NjQg
LyogTWVkaWFSZW1vdGVDb250cm9scy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQ0Q4QUNBOEYxRDIz
OTcxOTAwRUNDNTlFIC8qIE1lZGlhUmVtb3RlU29mdExpbmsuaCBpbiBIZWFkZXJzICovLAogCQkJ
CUNEOEFDQThCMUQyMzk0NjQwMEVDQzU5RSAvKiBNZWRpYVJlbW90ZVNQSS5oIGluIEhlYWRlcnMg
Ki8sCisJCQkJNzI0RUU1NTExREM4MEQ4NDAwQTkxRkZCIC8qIEFjdGl2aXR5U3RhdGVDaGFuZ2VP
YnNlcnZlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQ0VFRkNEN0ExOURCMzFGNzAwMzg3NkQ3IC8q
IE1lZGlhUmVzb3VyY2VMb2FkZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTFCRjlEQjNDMUQzOTcz
QUQwMDI2QUVCNyAvKiBNZWRpYVNhbXBsZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUIxMjREOEQx
RDM4MEI3MDAwRUNERkIwIC8qIE1lZGlhU2FtcGxlQVZGT2JqQy5oIGluIEhlYWRlcnMgKi8sCkBA
IC0yNzcxMiw4ICsyNzcxMyw2IEBACiAJCQkJQ0VGNDE4Q0YxMTc5Njc4QzAwOUQxMTJDIC8qIFZp
ZXdwb3J0QXJndW1lbnRzLmggaW4gSGVhZGVycyAqLywKIAkJCQkyNkY5QTgzOTE4QTA0NkFDMDBB
RUI4OEEgLyogVmlld3BvcnRDb25maWd1cmF0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQkzRkZG
RjlBRTE1OUQ5QjA2MDAyMEJCRDUgLyogVmlld3BvcnRTdHlsZVJlc29sdmVyLmggaW4gSGVhZGVy
cyAqLywKLQkJCQk4Njc4RDBCQjE4NzhFODkxMDAzQUJERTYgLyogVmlld1N0YXRlLmggaW4gSGVh
ZGVycyAqLywKLQkJCQk3Q0RFRUUxRTE5NzYxMEQ3MDBFMzUyQ0QgLyogVmlld1N0YXRlQ2hhbmdl
T2JzZXJ2ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTkzMzA5RTIwMDk5RTY0OTIwMDU2RTU4MSAv
KiBWaXNpYmxlUG9zaXRpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCUE4ODNERjI4MEYzRDA0NUQw
MEYxOUJGNiAvKiBWaXNpYmxlU2VsZWN0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQk5MzMwOUUx
RTA5OUU2NDkyMDA1NkU1ODEgLyogVmlzaWJsZVVuaXRzLmggaW4gSGVhZGVycyAqLywKQEAgLTI3
ODc1LDYgKzI3ODc0LDcgQEAKIAkJCQlCMTBCNjk4MDE0MEMxNzQwMDBCQzFDMjYgLyogV2ViVlRU
VG9rZW4uaCBpbiBIZWFkZXJzICovLAogCQkJCUIxMEI2OTgyMTQwQzE3NDAwMEJDMUMyNiAvKiBX
ZWJWVFRUb2tlbml6ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUNEODIwMzEwMTM5NUFDRTcwMEY5
NTZDNiAvKiBXZWJXaW5kb3dBbmltYXRpb24uaCBpbiBIZWFkZXJzICovLAorCQkJCTcyNEVFNTUw
MURDODBEN0YwMEE5MUZGQiAvKiBBY3Rpdml0eVN0YXRlLmggaW4gSGVhZGVycyAqLywKIAkJCQlG
NTVCM0RFMDEyNTFGMTJEMDAzRUYyNjkgLyogV2Vla0lucHV0VHlwZS5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJODUwMzFCNTEwQTQ0RUZDNzAwRjk5MkUwIC8qIFdoZWVsRXZlbnQuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTJFQkJDM0Q4MUI2NTk4ODMwMEY1MjUzRCAvKiBXaGVlbEV2ZW50RGVsdGFGaWx0
ZXIuaCBpbiBIZWFkZXJzICovLApJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9BY3Rpdml0eVN0
YXRlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9BY3Rpdml0eVN0YXRlLmgJ
KHJldmlzaW9uIDIwODE5NykJKGZyb20gU291cmNlL1dlYkNvcmUvcGFnZS9WaWV3U3RhdGUuaDoy
MDgxOTcpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL0FjdGl2aXR5U3RhdGUuaAkod29ya2luZyBj
b3B5KQpAQCAtMCwwICsxLDQ2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisg
KiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICog
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKK25hbWVz
cGFjZSBXZWJDb3JlIHsKKworc3RydWN0IFZpZXdTdGF0ZSB7CisgICAgZW51bSB7CisgICAgICAg
IFdpbmRvd0lzQWN0aXZlID0gMSA8PCAwLAorICAgICAgICBJc0ZvY3VzZWQgPSAxIDw8IDEsCisg
ICAgICAgIElzVmlzaWJsZSA9IDEgPDwgMiwKKyAgICAgICAgSXNWaXNpYmxlT3JPY2NsdWRlZCA9
IDEgPDwgMywKKyAgICAgICAgSXNJbldpbmRvdyA9IDEgPDwgNCwKKyAgICAgICAgSXNWaXN1YWxs
eUlkbGUgPSAxIDw8IDUsCisgICAgfTsKKworICAgIHR5cGVkZWYgdW5zaWduZWQgRmxhZ3M7CisK
KyAgICBzdGF0aWMgY29uc3QgRmxhZ3MgTm9GbGFncyA9IDA7CisgICAgc3RhdGljIGNvbnN0IEZs
YWdzIEFsbEZsYWdzID0gV2luZG93SXNBY3RpdmUgfCBJc0ZvY3VzZWQgfCBJc1Zpc2libGUgfCBJ
c1Zpc2libGVPck9jY2x1ZGVkIHwgSXNJbldpbmRvdyB8IElzVmlzdWFsbHlJZGxlOworfTsKKwor
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9BY3Rpdml0
eVN0YXRlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9BY3Rpdml0eVN0YXRl
LmgJKHJldmlzaW9uIDIwODE5NykKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvQWN0aXZpdHlTdGF0
ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNyw3ICsyNyw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAotc3RydWN0IFZpZXdTdGF0ZSB7CitzdHJ1Y3QgQWN0aXZpdHlTdGF0ZSB7CiAgICAgZW51
bSB7CiAgICAgICAgIFdpbmRvd0lzQWN0aXZlID0gMSA8PCAwLAogICAgICAgICBJc0ZvY3VzZWQg
PSAxIDw8IDEsCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL0FjdGl2aXR5U3RhdGVDaGFuZ2VP
YnNlcnZlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvQWN0aXZpdHlTdGF0
ZUNoYW5nZU9ic2VydmVyLmgJKHJldmlzaW9uIDIwODE5NykJKGZyb20gU291cmNlL1dlYkNvcmUv
cGFnZS9WaWV3U3RhdGVDaGFuZ2VPYnNlcnZlci5oOjIwODE5NykKKysrIFNvdXJjZS9XZWJDb3Jl
L3BhZ2UvQWN0aXZpdHlTdGF0ZUNoYW5nZU9ic2VydmVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTAs
MCArMSw0MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
CisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiVmlld1N0
YXRlLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgVmlld1N0YXRlQ2hhbmdlT2Jz
ZXJ2ZXIgeworcHVibGljOgorICAgIHZpcnR1YWwgflZpZXdTdGF0ZUNoYW5nZU9ic2VydmVyKCkK
KyAgICB7CisgICAgfQorICAgIAorICAgIHZpcnR1YWwgdm9pZCB2aWV3U3RhdGVEaWRDaGFuZ2Uo
Vmlld1N0YXRlOjpGbGFncyBvbGRWaWV3U3RhdGUsIFZpZXdTdGF0ZTo6RmxhZ3MgbmV3Vmlld1N0
YXRlKSA9IDA7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9wYWdlL0FjdGl2aXR5U3RhdGVDaGFuZ2VPYnNlcnZlci5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3BhZ2UvQWN0aXZpdHlTdGF0ZUNoYW5nZU9ic2VydmVyLmgJKHJldmlzaW9u
IDIwODE5NykKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvQWN0aXZpdHlTdGF0ZUNoYW5nZU9ic2Vy
dmVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTI1LDE3ICsyNSwxNyBAQAogCiAjcHJhZ21hIG9uY2UK
IAotI2luY2x1ZGUgIlZpZXdTdGF0ZS5oIgorI2luY2x1ZGUgIkFjdGl2aXR5U3RhdGUuaCIKIAog
bmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBWaWV3U3RhdGVDaGFuZ2VPYnNlcnZlciB7Citj
bGFzcyBBY3Rpdml0eVN0YXRlQ2hhbmdlT2JzZXJ2ZXIgewogcHVibGljOgotICAgIHZpcnR1YWwg
flZpZXdTdGF0ZUNoYW5nZU9ic2VydmVyKCkKKyAgICB2aXJ0dWFsIH5BY3Rpdml0eVN0YXRlQ2hh
bmdlT2JzZXJ2ZXIoKQogICAgIHsKICAgICB9CiAgICAgCi0gICAgdmlydHVhbCB2b2lkIHZpZXdT
dGF0ZURpZENoYW5nZShWaWV3U3RhdGU6OkZsYWdzIG9sZFZpZXdTdGF0ZSwgVmlld1N0YXRlOjpG
bGFncyBuZXdWaWV3U3RhdGUpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgYWN0aXZpdHlTdGF0ZURp
ZENoYW5nZShBY3Rpdml0eVN0YXRlOjpGbGFncyBvbGRBY3Rpdml0eVN0YXRlLCBBY3Rpdml0eVN0
YXRlOjpGbGFncyBuZXdBY3Rpdml0eVN0YXRlKSA9IDA7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL0ZvY3VzQ29udHJvbGxlci5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9Gb2N1c0NvbnRyb2xsZXIuY3BwCShyZXZp
c2lvbiAyMDgxOTcpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL0ZvY3VzQ29udHJvbGxlci5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTMxMywxMCArMzEzLDEwIEBAIHN0YXRpYyBpbmxpbmUgaW50IHNo
YWRvd0FkanVzdGVkVGFiSW5kZXgKICAgICByZXR1cm4gZWxlbWVudC50YWJJbmRleCgpOwogfQog
Ci1Gb2N1c0NvbnRyb2xsZXI6OkZvY3VzQ29udHJvbGxlcihQYWdlJiBwYWdlLCBWaWV3U3RhdGU6
OkZsYWdzIHZpZXdTdGF0ZSkKK0ZvY3VzQ29udHJvbGxlcjo6Rm9jdXNDb250cm9sbGVyKFBhZ2Um
IHBhZ2UsIEFjdGl2aXR5U3RhdGU6OkZsYWdzIGFjdGl2aXR5U3RhdGUpCiAgICAgOiBtX3BhZ2Uo
cGFnZSkKICAgICAsIG1faXNDaGFuZ2luZ0ZvY3VzZWRGcmFtZShmYWxzZSkKLSAgICAsIG1fdmll
d1N0YXRlKHZpZXdTdGF0ZSkKKyAgICAsIG1fYWN0aXZpdHlTdGF0ZShhY3Rpdml0eVN0YXRlKQog
ICAgICwgbV9mb2N1c1JlcGFpbnRUaW1lcigqdGhpcywgJkZvY3VzQ29udHJvbGxlcjo6Zm9jdXNS
ZXBhaW50VGltZXJGaXJlZCkKIHsKIH0KQEAgLTM1OSw3ICszNTksNyBAQCBGcmFtZSYgRm9jdXND
b250cm9sbGVyOjpmb2N1c2VkT3JNYWluRnJhCiAKIHZvaWQgRm9jdXNDb250cm9sbGVyOjpzZXRG
b2N1c2VkKGJvb2wgZm9jdXNlZCkKIHsKLSAgICBtX3BhZ2Uuc2V0Vmlld1N0YXRlKGZvY3VzZWQg
PyBtX3ZpZXdTdGF0ZSB8IFZpZXdTdGF0ZTo6SXNGb2N1c2VkIDogbV92aWV3U3RhdGUgJiB+Vmll
d1N0YXRlOjpJc0ZvY3VzZWQpOworICAgIG1fcGFnZS5zZXRBY3Rpdml0eVN0YXRlKGZvY3VzZWQg
PyBtX2FjdGl2aXR5U3RhdGUgfCBBY3Rpdml0eVN0YXRlOjpJc0ZvY3VzZWQgOiBtX2FjdGl2aXR5
U3RhdGUgJiB+QWN0aXZpdHlTdGF0ZTo6SXNGb2N1c2VkKTsKIH0KIAogdm9pZCBGb2N1c0NvbnRy
b2xsZXI6OnNldEZvY3VzZWRJbnRlcm5hbChib29sIGZvY3VzZWQpCkBAIC04MjUsMjMgKzgyNSwy
MyBAQCBib29sIEZvY3VzQ29udHJvbGxlcjo6c2V0Rm9jdXNlZEVsZW1lbnQoCiAgICAgcmV0dXJu
IHRydWU7CiB9CiAKLXZvaWQgRm9jdXNDb250cm9sbGVyOjpzZXRWaWV3U3RhdGUoVmlld1N0YXRl
OjpGbGFncyB2aWV3U3RhdGUpCit2b2lkIEZvY3VzQ29udHJvbGxlcjo6c2V0QWN0aXZpdHlTdGF0
ZShBY3Rpdml0eVN0YXRlOjpGbGFncyBhY3Rpdml0eVN0YXRlKQogewotICAgIFZpZXdTdGF0ZTo6
RmxhZ3MgY2hhbmdlZCA9IG1fdmlld1N0YXRlIF4gdmlld1N0YXRlOwotICAgIG1fdmlld1N0YXRl
ID0gdmlld1N0YXRlOworICAgIEFjdGl2aXR5U3RhdGU6OkZsYWdzIGNoYW5nZWQgPSBtX2FjdGl2
aXR5U3RhdGUgXiBhY3Rpdml0eVN0YXRlOworICAgIG1fYWN0aXZpdHlTdGF0ZSA9IGFjdGl2aXR5
U3RhdGU7CiAKLSAgICBpZiAoY2hhbmdlZCAmIFZpZXdTdGF0ZTo6SXNGb2N1c2VkKQotICAgICAg
ICBzZXRGb2N1c2VkSW50ZXJuYWwodmlld1N0YXRlICYgVmlld1N0YXRlOjpJc0ZvY3VzZWQpOwot
ICAgIGlmIChjaGFuZ2VkICYgVmlld1N0YXRlOjpXaW5kb3dJc0FjdGl2ZSkgewotICAgICAgICBz
ZXRBY3RpdmVJbnRlcm5hbCh2aWV3U3RhdGUgJiBWaWV3U3RhdGU6OldpbmRvd0lzQWN0aXZlKTsK
LSAgICAgICAgaWYgKGNoYW5nZWQgJiBWaWV3U3RhdGU6OklzVmlzaWJsZSkKLSAgICAgICAgICAg
IHNldElzVmlzaWJsZUFuZEFjdGl2ZUludGVybmFsKHZpZXdTdGF0ZSAmIFZpZXdTdGF0ZTo6V2lu
ZG93SXNBY3RpdmUpOworICAgIGlmIChjaGFuZ2VkICYgQWN0aXZpdHlTdGF0ZTo6SXNGb2N1c2Vk
KQorICAgICAgICBzZXRGb2N1c2VkSW50ZXJuYWwoYWN0aXZpdHlTdGF0ZSAmIEFjdGl2aXR5U3Rh
dGU6OklzRm9jdXNlZCk7CisgICAgaWYgKGNoYW5nZWQgJiBBY3Rpdml0eVN0YXRlOjpXaW5kb3dJ
c0FjdGl2ZSkgeworICAgICAgICBzZXRBY3RpdmVJbnRlcm5hbChhY3Rpdml0eVN0YXRlICYgQWN0
aXZpdHlTdGF0ZTo6V2luZG93SXNBY3RpdmUpOworICAgICAgICBpZiAoY2hhbmdlZCAmIEFjdGl2
aXR5U3RhdGU6OklzVmlzaWJsZSkKKyAgICAgICAgICAgIHNldElzVmlzaWJsZUFuZEFjdGl2ZUlu
dGVybmFsKGFjdGl2aXR5U3RhdGUgJiBBY3Rpdml0eVN0YXRlOjpXaW5kb3dJc0FjdGl2ZSk7CiAg
ICAgfQogfQogCiB2b2lkIEZvY3VzQ29udHJvbGxlcjo6c2V0QWN0aXZlKGJvb2wgYWN0aXZlKQog
ewotICAgIG1fcGFnZS5zZXRWaWV3U3RhdGUoYWN0aXZlID8gbV92aWV3U3RhdGUgfCBWaWV3U3Rh
dGU6OldpbmRvd0lzQWN0aXZlIDogbV92aWV3U3RhdGUgJiB+Vmlld1N0YXRlOjpXaW5kb3dJc0Fj
dGl2ZSk7CisgICAgbV9wYWdlLnNldEFjdGl2aXR5U3RhdGUoYWN0aXZlID8gbV9hY3Rpdml0eVN0
YXRlIHwgQWN0aXZpdHlTdGF0ZTo6V2luZG93SXNBY3RpdmUgOiBtX2FjdGl2aXR5U3RhdGUgJiB+
QWN0aXZpdHlTdGF0ZTo6V2luZG93SXNBY3RpdmUpOwogfQogCiB2b2lkIEZvY3VzQ29udHJvbGxl
cjo6c2V0QWN0aXZlSW50ZXJuYWwoYm9vbCBhY3RpdmUpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9w
YWdlL0ZvY3VzQ29udHJvbGxlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2Uv
Rm9jdXNDb250cm9sbGVyLmgJKHJldmlzaW9uIDIwODE5NykKKysrIFNvdXJjZS9XZWJDb3JlL3Bh
Z2UvRm9jdXNDb250cm9sbGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTI1LDEwICsyNSwxMCBAQAog
CiAjcHJhZ21hIG9uY2UKIAorI2luY2x1ZGUgIkFjdGl2aXR5U3RhdGUuaCIKICNpbmNsdWRlICJG
b2N1c0RpcmVjdGlvbi5oIgogI2luY2x1ZGUgIkxheW91dFJlY3QuaCIKICNpbmNsdWRlICJUaW1l
ci5oIgotI2luY2x1ZGUgIlZpZXdTdGF0ZS5oIgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAj
aW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+CiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgpAQCAt
NTEsNyArNTEsNyBAQCBjbGFzcyBUcmVlU2NvcGU7CiBjbGFzcyBGb2N1c0NvbnRyb2xsZXIgewog
ICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEZvY3VzQ29udHJvbGxlcik7IFdURl9NQUtFX0ZBU1Rf
QUxMT0NBVEVEOwogcHVibGljOgotICAgIGV4cGxpY2l0IEZvY3VzQ29udHJvbGxlcihQYWdlJiwg
Vmlld1N0YXRlOjpGbGFncyk7CisgICAgZXhwbGljaXQgRm9jdXNDb250cm9sbGVyKFBhZ2UmLCBB
Y3Rpdml0eVN0YXRlOjpGbGFncyk7CiAKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldEZvY3Vz
ZWRGcmFtZShQYXNzUmVmUHRyPEZyYW1lPik7CiAgICAgRnJhbWUqIGZvY3VzZWRGcmFtZSgpIGNv
bnN0IHsgcmV0dXJuIG1fZm9jdXNlZEZyYW1lLmdldCgpOyB9CkBAIC02MiwxNSArNjIsMTUgQEAg
cHVibGljOgogCiAgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBzZXRGb2N1c2VkRWxlbWVudChFbGVt
ZW50KiwgUGFzc1JlZlB0cjxGcmFtZT4sIEZvY3VzRGlyZWN0aW9uID0gRm9jdXNEaXJlY3Rpb25O
b25lKTsKIAotICAgIHZvaWQgc2V0Vmlld1N0YXRlKFZpZXdTdGF0ZTo6RmxhZ3MpOworICAgIHZv
aWQgc2V0QWN0aXZpdHlTdGF0ZShBY3Rpdml0eVN0YXRlOjpGbGFncyk7CiAKICAgICBXRUJDT1JF
X0VYUE9SVCB2b2lkIHNldEFjdGl2ZShib29sKTsKLSAgICBib29sIGlzQWN0aXZlKCkgY29uc3Qg
eyByZXR1cm4gbV92aWV3U3RhdGUgJiBWaWV3U3RhdGU6OldpbmRvd0lzQWN0aXZlOyB9CisgICAg
Ym9vbCBpc0FjdGl2ZSgpIGNvbnN0IHsgcmV0dXJuIG1fYWN0aXZpdHlTdGF0ZSAmIEFjdGl2aXR5
U3RhdGU6OldpbmRvd0lzQWN0aXZlOyB9CiAKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldEZv
Y3VzZWQoYm9vbCk7Ci0gICAgYm9vbCBpc0ZvY3VzZWQoKSBjb25zdCB7IHJldHVybiBtX3ZpZXdT
dGF0ZSAmIFZpZXdTdGF0ZTo6SXNGb2N1c2VkOyB9CisgICAgYm9vbCBpc0ZvY3VzZWQoKSBjb25z
dCB7IHJldHVybiBtX2FjdGl2aXR5U3RhdGUgJiBBY3Rpdml0eVN0YXRlOjpJc0ZvY3VzZWQ7IH0K
IAotICAgIGJvb2wgY29udGVudElzVmlzaWJsZSgpIGNvbnN0IHsgcmV0dXJuIG1fdmlld1N0YXRl
ICYgVmlld1N0YXRlOjpJc1Zpc2libGU7IH0KKyAgICBib29sIGNvbnRlbnRJc1Zpc2libGUoKSBj
b25zdCB7IHJldHVybiBtX2FjdGl2aXR5U3RhdGUgJiBBY3Rpdml0eVN0YXRlOjpJc1Zpc2libGU7
IH0KIAogICAgIC8vIFRoZXNlIG1ldGhvZHMgYXJlIHVzZWQgaW4gV2ViQ29yZS9iaW5kaW5ncy9v
YmpjL0RPTS5tbS4KICAgICBXRUJDT1JFX0VYUE9SVCBFbGVtZW50KiBuZXh0Rm9jdXNhYmxlRWxl
bWVudChOb2RlJik7CkBAIC0xMTksNyArMTE5LDcgQEAgcHJpdmF0ZToKICAgICBQYWdlJiBtX3Bh
Z2U7CiAgICAgUmVmUHRyPEZyYW1lPiBtX2ZvY3VzZWRGcmFtZTsKICAgICBib29sIG1faXNDaGFu
Z2luZ0ZvY3VzZWRGcmFtZTsKLSAgICBWaWV3U3RhdGU6OkZsYWdzIG1fdmlld1N0YXRlOworICAg
IEFjdGl2aXR5U3RhdGU6OkZsYWdzIG1fYWN0aXZpdHlTdGF0ZTsKIAogICAgIFRpbWVyIG1fZm9j
dXNSZXBhaW50VGltZXI7CiAgICAgZG91YmxlIG1fZm9jdXNTZXRUaW1lOwpJbmRleDogU291cmNl
L1dlYkNvcmUvcGFnZS9QYWdlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdl
L1BhZ2UuY3BwCShyZXZpc2lvbiAyMDgxOTcpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2Uu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMCw2ICsyMCw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgi
CiAjaW5jbHVkZSAiUGFnZS5oIgogCisjaW5jbHVkZSAiQWN0aXZpdHlTdGF0ZUNoYW5nZU9ic2Vy
dmVyLmgiCiAjaW5jbHVkZSAiQWx0ZXJuYXRpdmVUZXh0Q2xpZW50LmgiCiAjaW5jbHVkZSAiQW5p
bWF0aW9uQ29udHJvbGxlci5oIgogI2luY2x1ZGUgIkFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlLmgi
CkBAIC05NCw3ICs5NSw2IEBACiAjaW5jbHVkZSAiVGV4dFJlc291cmNlRGVjb2Rlci5oIgogI2lu
Y2x1ZGUgIlVzZXJDb250ZW50UHJvdmlkZXIuaCIKICNpbmNsdWRlICJVc2VySW5wdXRCcmlkZ2Uu
aCIKLSNpbmNsdWRlICJWaWV3U3RhdGVDaGFuZ2VPYnNlcnZlci5oIgogI2luY2x1ZGUgIlZpc2l0
ZWRMaW5rU3RhdGUuaCIKICNpbmNsdWRlICJWaXNpdGVkTGlua1N0b3JlLmgiCiAjaW5jbHVkZSAi
Vm9pZENhbGxiYWNrLmgiCkBAIC0xNTYsNyArMTU2LDcgQEAgc3RhdGljIHZvaWQgbmV0d29ya1N0
YXRlQ2hhbmdlZChib29sIGlzTwogICAgIH0KIH0KIAotc3RhdGljIGNvbnN0IFZpZXdTdGF0ZTo6
RmxhZ3MgUGFnZUluaXRpYWxWaWV3U3RhdGUgPSBWaWV3U3RhdGU6OklzVmlzaWJsZSB8IFZpZXdT
dGF0ZTo6SXNJbldpbmRvdzsKK3N0YXRpYyBjb25zdCBBY3Rpdml0eVN0YXRlOjpGbGFncyBQYWdl
SW5pdGlhbEFjdGl2aXR5U3RhdGUgPSBBY3Rpdml0eVN0YXRlOjpJc1Zpc2libGUgfCBBY3Rpdml0
eVN0YXRlOjpJc0luV2luZG93OwogCiBQYWdlOjpQYWdlKFBhZ2VDb25maWd1cmF0aW9uJiYgcGFn
ZUNvbmZpZ3VyYXRpb24pCiAgICAgOiBtX2Nocm9tZShzdGQ6Om1ha2VfdW5pcXVlPENocm9tZT4o
KnRoaXMsICpwYWdlQ29uZmlndXJhdGlvbi5jaHJvbWVDbGllbnQpKQpAQCAtMTY0LDcgKzE2NCw3
IEBAIFBhZ2U6OlBhZ2UoUGFnZUNvbmZpZ3VyYXRpb24mJiBwYWdlQ29uZmkKICNpZiBFTkFCTEUo
RFJBR19TVVBQT1JUKQogICAgICwgbV9kcmFnQ29udHJvbGxlcihzdGQ6Om1ha2VfdW5pcXVlPERy
YWdDb250cm9sbGVyPigqdGhpcywgKnBhZ2VDb25maWd1cmF0aW9uLmRyYWdDbGllbnQpKQogI2Vu
ZGlmCi0gICAgLCBtX2ZvY3VzQ29udHJvbGxlcihzdGQ6Om1ha2VfdW5pcXVlPEZvY3VzQ29udHJv
bGxlcj4oKnRoaXMsIFBhZ2VJbml0aWFsVmlld1N0YXRlKSkKKyAgICAsIG1fZm9jdXNDb250cm9s
bGVyKHN0ZDo6bWFrZV91bmlxdWU8Rm9jdXNDb250cm9sbGVyPigqdGhpcywgUGFnZUluaXRpYWxB
Y3Rpdml0eVN0YXRlKSkKICNpZiBFTkFCTEUoQ09OVEVYVF9NRU5VUykKICAgICAsIG1fY29udGV4
dE1lbnVDb250cm9sbGVyKHN0ZDo6bWFrZV91bmlxdWU8Q29udGV4dE1lbnVDb250cm9sbGVyPigq
dGhpcywgKnBhZ2VDb25maWd1cmF0aW9uLmNvbnRleHRNZW51Q2xpZW50KSkKICNlbmRpZgpAQCAt
MjE0LDcgKzIxNCw3IEBAIFBhZ2U6OlBhZ2UoUGFnZUNvbmZpZ3VyYXRpb24mJiBwYWdlQ29uZmkK
ICAgICAsIG1fdGltZXJBbGlnbm1lbnRJbnRlcnZhbEluY3JlYXNlVGltZXIoKnRoaXMsICZQYWdl
Ojp0aW1lckFsaWdubWVudEludGVydmFsSW5jcmVhc2VUaW1lckZpcmVkKQogICAgICwgbV9pc0Vk
aXRhYmxlKGZhbHNlKQogICAgICwgbV9pc1ByZXJlbmRlcihmYWxzZSkKLSAgICAsIG1fdmlld1N0
YXRlKFBhZ2VJbml0aWFsVmlld1N0YXRlKQorICAgICwgbV9hY3Rpdml0eVN0YXRlKFBhZ2VJbml0
aWFsQWN0aXZpdHlTdGF0ZSkKICAgICAsIG1fcmVxdWVzdGVkTGF5b3V0TWlsZXN0b25lcygwKQog
ICAgICwgbV9oZWFkZXJIZWlnaHQoMCkKICAgICAsIG1fZm9vdGVySGVpZ2h0KDApCkBAIC0xMDEz
LDcgKzEwMTMsNyBAQCB1bnNpZ25lZCBQYWdlOjpwYWdlQ291bnQoKSBjb25zdAogCiB2b2lkIFBh
Z2U6OnNldElzSW5XaW5kb3coYm9vbCBpc0luV2luZG93KQogewotICAgIHNldFZpZXdTdGF0ZShp
c0luV2luZG93ID8gbV92aWV3U3RhdGUgfCBWaWV3U3RhdGU6OklzSW5XaW5kb3cgOiBtX3ZpZXdT
dGF0ZSAmIH5WaWV3U3RhdGU6OklzSW5XaW5kb3cpOworICAgIHNldEFjdGl2aXR5U3RhdGUoaXNJ
bldpbmRvdyA/IG1fYWN0aXZpdHlTdGF0ZSB8IEFjdGl2aXR5U3RhdGU6OklzSW5XaW5kb3cgOiBt
X2FjdGl2aXR5U3RhdGUgJiB+QWN0aXZpdHlTdGF0ZTo6SXNJbldpbmRvdyk7CiB9CiAKIHZvaWQg
UGFnZTo6c2V0SXNJbldpbmRvd0ludGVybmFsKGJvb2wgaXNJbldpbmRvdykKQEAgLTEwMjcsMTQg
KzEwMjcsMTQgQEAgdm9pZCBQYWdlOjpzZXRJc0luV2luZG93SW50ZXJuYWwoYm9vbCBpcwogICAg
ICAgICByZXN1bWVBbmltYXRpbmdJbWFnZXMoKTsKIH0KIAotdm9pZCBQYWdlOjphZGRWaWV3U3Rh
dGVDaGFuZ2VPYnNlcnZlcihWaWV3U3RhdGVDaGFuZ2VPYnNlcnZlciYgb2JzZXJ2ZXIpCit2b2lk
IFBhZ2U6OmFkZEFjdGl2aXR5U3RhdGVDaGFuZ2VPYnNlcnZlcihBY3Rpdml0eVN0YXRlQ2hhbmdl
T2JzZXJ2ZXImIG9ic2VydmVyKQogewotICAgIG1fdmlld1N0YXRlQ2hhbmdlT2JzZXJ2ZXJzLmFk
ZCgmb2JzZXJ2ZXIpOworICAgIG1fYWN0aXZpdHlTdGF0ZUNoYW5nZU9ic2VydmVycy5hZGQoJm9i
c2VydmVyKTsKIH0KIAotdm9pZCBQYWdlOjpyZW1vdmVWaWV3U3RhdGVDaGFuZ2VPYnNlcnZlcihW
aWV3U3RhdGVDaGFuZ2VPYnNlcnZlciYgb2JzZXJ2ZXIpCit2b2lkIFBhZ2U6OnJlbW92ZUFjdGl2
aXR5U3RhdGVDaGFuZ2VPYnNlcnZlcihBY3Rpdml0eVN0YXRlQ2hhbmdlT2JzZXJ2ZXImIG9ic2Vy
dmVyKQogewotICAgIG1fdmlld1N0YXRlQ2hhbmdlT2JzZXJ2ZXJzLnJlbW92ZSgmb2JzZXJ2ZXIp
OworICAgIG1fYWN0aXZpdHlTdGF0ZUNoYW5nZU9ic2VydmVycy5yZW1vdmUoJm9ic2VydmVyKTsK
IH0KIAogdm9pZCBQYWdlOjpzdXNwZW5kU2NyaXB0ZWRBbmltYXRpb25zKCkKQEAgLTEyMjAsMTQg
KzEyMjAsMTQgQEAgdm9pZCBQYWdlOjpoaWRkZW5QYWdlRE9NVGltZXJUaHJvdHRsaW5nUwogdm9p
ZCBQYWdlOjp1cGRhdGVUaW1lclRocm90dGxpbmdTdGF0ZSgpCiB7CiAgICAgLy8gVGltZXIgdGhy
b3R0bGluZyBkaXNhYmxlZCBpZiBwYWdlIGlzIHZpc3VhbGx5IGFjdGl2ZSwgb3IgZGlzYWJsZWQg
Ynkgc2V0dGluZy4KLSAgICBpZiAoIW1fc2V0dGluZ3MtPmhpZGRlblBhZ2VET01UaW1lclRocm90
dGxpbmdFbmFibGVkKCkgfHwgIShtX3ZpZXdTdGF0ZSAmIFZpZXdTdGF0ZTo6SXNWaXN1YWxseUlk
bGUpKSB7CisgICAgaWYgKCFtX3NldHRpbmdzLT5oaWRkZW5QYWdlRE9NVGltZXJUaHJvdHRsaW5n
RW5hYmxlZCgpIHx8ICEobV9hY3Rpdml0eVN0YXRlICYgQWN0aXZpdHlTdGF0ZTo6SXNWaXN1YWxs
eUlkbGUpKSB7CiAgICAgICAgIHNldFRpbWVyVGhyb3R0bGluZ1N0YXRlKFRpbWVyVGhyb3R0bGlu
Z1N0YXRlOjpEaXNhYmxlZCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKICAgICAvLyBJZiB0
aGUgcGFnZSBpcyB2aXNpYmxlIChidXQgaWRsZSksIHRoZXJlIGlzIGFueSBhY3Rpdml0eSAobG9h
ZGluZywgbWVkaWEgcGxheWluZywgZXRjKSwgb3IgcGVyIHNldHRpbmcsCiAgICAgLy8gd2UgYWxs
b3cgdGltZXIgdGhyb3R0bGluZywgYnV0IG5vdCBpbmNyZWFzaW5nIHRpbWVyIHRocm90dGxpbmcu
Ci0gICAgaWYgKCFtX3NldHRpbmdzLT5oaWRkZW5QYWdlRE9NVGltZXJUaHJvdHRsaW5nQXV0b0lu
Y3JlYXNlcygpIHx8IG1fdmlld1N0YXRlICYgVmlld1N0YXRlOjpJc1Zpc2libGUgfHwgbV9wYWdl
VGhyb3R0bGVyLmFjdGl2aXR5U3RhdGUoKSkgeworICAgIGlmICghbV9zZXR0aW5ncy0+aGlkZGVu
UGFnZURPTVRpbWVyVGhyb3R0bGluZ0F1dG9JbmNyZWFzZXMoKSB8fCBtX2FjdGl2aXR5U3RhdGUg
JiBBY3Rpdml0eVN0YXRlOjpJc1Zpc2libGUgfHwgbV9wYWdlVGhyb3R0bGVyLmFjdGl2aXR5U3Rh
dGUoKSkgewogICAgICAgICBzZXRUaW1lclRocm90dGxpbmdTdGF0ZShUaW1lclRocm90dGxpbmdT
dGF0ZTo6RW5hYmxlZCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CkBAIC0xNDM4LDMxICsxNDM4
LDMxIEBAIHZvaWQgUGFnZTo6cmVzdW1lQW5pbWF0aW5nSW1hZ2VzKCkKICAgICAgICAgdmlldy0+
cmVzdW1lVmlzaWJsZUltYWdlQW5pbWF0aW9uc0luY2x1ZGluZ1N1YmZyYW1lcygpOwogfQogCi12
b2lkIFBhZ2U6OnNldFZpZXdTdGF0ZShWaWV3U3RhdGU6OkZsYWdzIHZpZXdTdGF0ZSkKK3ZvaWQg
UGFnZTo6c2V0QWN0aXZpdHlTdGF0ZShBY3Rpdml0eVN0YXRlOjpGbGFncyBhY3Rpdml0eVN0YXRl
KQogewotICAgIFZpZXdTdGF0ZTo6RmxhZ3MgY2hhbmdlZCA9IG1fdmlld1N0YXRlIF4gdmlld1N0
YXRlOworICAgIEFjdGl2aXR5U3RhdGU6OkZsYWdzIGNoYW5nZWQgPSBtX2FjdGl2aXR5U3RhdGUg
XiBhY3Rpdml0eVN0YXRlOwogICAgIGlmICghY2hhbmdlZCkKICAgICAgICAgcmV0dXJuOwogCi0g
ICAgVmlld1N0YXRlOjpGbGFncyBvbGRWaWV3U3RhdGUgPSBtX3ZpZXdTdGF0ZTsKKyAgICBBY3Rp
dml0eVN0YXRlOjpGbGFncyBvbGRBY3Rpdml0eVN0YXRlID0gbV9hY3Rpdml0eVN0YXRlOwogCiAg
ICAgYm9vbCB3YXNWaXNpYmxlQW5kQWN0aXZlID0gaXNWaXNpYmxlQW5kQWN0aXZlKCk7Ci0gICAg
bV92aWV3U3RhdGUgPSB2aWV3U3RhdGU7CisgICAgbV9hY3Rpdml0eVN0YXRlID0gYWN0aXZpdHlT
dGF0ZTsKIAotICAgIG1fZm9jdXNDb250cm9sbGVyLT5zZXRWaWV3U3RhdGUodmlld1N0YXRlKTsK
KyAgICBtX2ZvY3VzQ29udHJvbGxlci0+c2V0QWN0aXZpdHlTdGF0ZShhY3Rpdml0eVN0YXRlKTsK
IAotICAgIGlmIChjaGFuZ2VkICYgVmlld1N0YXRlOjpJc1Zpc2libGUpCi0gICAgICAgIHNldElz
VmlzaWJsZUludGVybmFsKHZpZXdTdGF0ZSAmIFZpZXdTdGF0ZTo6SXNWaXNpYmxlKTsKLSAgICBp
ZiAoY2hhbmdlZCAmIFZpZXdTdGF0ZTo6SXNJbldpbmRvdykKLSAgICAgICAgc2V0SXNJbldpbmRv
d0ludGVybmFsKHZpZXdTdGF0ZSAmIFZpZXdTdGF0ZTo6SXNJbldpbmRvdyk7Ci0gICAgaWYgKGNo
YW5nZWQgJiBWaWV3U3RhdGU6OklzVmlzdWFsbHlJZGxlKQotICAgICAgICBzZXRJc1Zpc3VhbGx5
SWRsZUludGVybmFsKHZpZXdTdGF0ZSAmIFZpZXdTdGF0ZTo6SXNWaXN1YWxseUlkbGUpOworICAg
IGlmIChjaGFuZ2VkICYgQWN0aXZpdHlTdGF0ZTo6SXNWaXNpYmxlKQorICAgICAgICBzZXRJc1Zp
c2libGVJbnRlcm5hbChhY3Rpdml0eVN0YXRlICYgQWN0aXZpdHlTdGF0ZTo6SXNWaXNpYmxlKTsK
KyAgICBpZiAoY2hhbmdlZCAmIEFjdGl2aXR5U3RhdGU6OklzSW5XaW5kb3cpCisgICAgICAgIHNl
dElzSW5XaW5kb3dJbnRlcm5hbChhY3Rpdml0eVN0YXRlICYgQWN0aXZpdHlTdGF0ZTo6SXNJbldp
bmRvdyk7CisgICAgaWYgKGNoYW5nZWQgJiBBY3Rpdml0eVN0YXRlOjpJc1Zpc3VhbGx5SWRsZSkK
KyAgICAgICAgc2V0SXNWaXN1YWxseUlkbGVJbnRlcm5hbChhY3Rpdml0eVN0YXRlICYgQWN0aXZp
dHlTdGF0ZTo6SXNWaXN1YWxseUlkbGUpOwogCi0gICAgaWYgKGNoYW5nZWQgJiAoVmlld1N0YXRl
OjpJc1Zpc2libGUgfCBWaWV3U3RhdGU6OklzVmlzdWFsbHlJZGxlKSkKKyAgICBpZiAoY2hhbmdl
ZCAmIChBY3Rpdml0eVN0YXRlOjpJc1Zpc2libGUgfCBBY3Rpdml0eVN0YXRlOjpJc1Zpc3VhbGx5
SWRsZSkpCiAgICAgICAgIHVwZGF0ZVRpbWVyVGhyb3R0bGluZ1N0YXRlKCk7CiAKLSAgICBmb3Ig
KGF1dG8qIG9ic2VydmVyIDogbV92aWV3U3RhdGVDaGFuZ2VPYnNlcnZlcnMpCi0gICAgICAgIG9i
c2VydmVyLT52aWV3U3RhdGVEaWRDaGFuZ2Uob2xkVmlld1N0YXRlLCBtX3ZpZXdTdGF0ZSk7Cisg
ICAgZm9yIChhdXRvKiBvYnNlcnZlciA6IG1fYWN0aXZpdHlTdGF0ZUNoYW5nZU9ic2VydmVycykK
KyAgICAgICAgb2JzZXJ2ZXItPmFjdGl2aXR5U3RhdGVEaWRDaGFuZ2Uob2xkQWN0aXZpdHlTdGF0
ZSwgbV9hY3Rpdml0eVN0YXRlKTsKIAogICAgIGlmICh3YXNWaXNpYmxlQW5kQWN0aXZlICE9IGlz
VmlzaWJsZUFuZEFjdGl2ZSgpKQogICAgICAgICBQbGF0Zm9ybU1lZGlhU2Vzc2lvbk1hbmFnZXI6
OnVwZGF0ZU5vd1BsYXlpbmdJbmZvSWZOZWNlc3NhcnkoKTsKQEAgLTE0NzAsMTUgKzE0NzAsMTUg
QEAgdm9pZCBQYWdlOjpzZXRWaWV3U3RhdGUoVmlld1N0YXRlOjpGbGFncwogCiBib29sIFBhZ2U6
OmlzVmlzaWJsZUFuZEFjdGl2ZSgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIChtX3ZpZXdTdGF0ZSAm
IFZpZXdTdGF0ZTo6SXNWaXNpYmxlKSAmJiAobV92aWV3U3RhdGUgJiBWaWV3U3RhdGU6OldpbmRv
d0lzQWN0aXZlKTsKKyAgICByZXR1cm4gKG1fYWN0aXZpdHlTdGF0ZSAmIEFjdGl2aXR5U3RhdGU6
OklzVmlzaWJsZSkgJiYgKG1fYWN0aXZpdHlTdGF0ZSAmIEFjdGl2aXR5U3RhdGU6OldpbmRvd0lz
QWN0aXZlKTsKIH0KIAogdm9pZCBQYWdlOjpzZXRJc1Zpc2libGUoYm9vbCBpc1Zpc2libGUpCiB7
CiAgICAgaWYgKGlzVmlzaWJsZSkKLSAgICAgICAgc2V0Vmlld1N0YXRlKChtX3ZpZXdTdGF0ZSAm
IH5WaWV3U3RhdGU6OklzVmlzdWFsbHlJZGxlKSB8IFZpZXdTdGF0ZTo6SXNWaXNpYmxlIHwgVmll
d1N0YXRlOjpJc1Zpc2libGVPck9jY2x1ZGVkKTsKKyAgICAgICAgc2V0QWN0aXZpdHlTdGF0ZSgo
bV9hY3Rpdml0eVN0YXRlICYgfkFjdGl2aXR5U3RhdGU6OklzVmlzdWFsbHlJZGxlKSB8IEFjdGl2
aXR5U3RhdGU6OklzVmlzaWJsZSB8IEFjdGl2aXR5U3RhdGU6OklzVmlzaWJsZU9yT2NjbHVkZWQp
OwogICAgIGVsc2UKLSAgICAgICAgc2V0Vmlld1N0YXRlKChtX3ZpZXdTdGF0ZSAmIH4oVmlld1N0
YXRlOjpJc1Zpc2libGUgfCBWaWV3U3RhdGU6OklzVmlzaWJsZU9yT2NjbHVkZWQpKSB8IFZpZXdT
dGF0ZTo6SXNWaXN1YWxseUlkbGUpOworICAgICAgICBzZXRBY3Rpdml0eVN0YXRlKChtX2FjdGl2
aXR5U3RhdGUgJiB+KEFjdGl2aXR5U3RhdGU6OklzVmlzaWJsZSB8IEFjdGl2aXR5U3RhdGU6Oklz
VmlzaWJsZU9yT2NjbHVkZWQpKSB8IEFjdGl2aXR5U3RhdGU6OklzVmlzdWFsbHlJZGxlKTsKIH0K
IAogdm9pZCBQYWdlOjpzZXRJc1Zpc2libGVJbnRlcm5hbChib29sIGlzVmlzaWJsZSkKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L3BhZ2UvUGFnZS5oCShyZXZpc2lvbiAyMDgxOTcpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL1Bh
Z2UuaAkod29ya2luZyBjb3B5KQpAQCAtMjAsNiArMjAsNyBAQAogCiAjcHJhZ21hIG9uY2UKIAor
I2luY2x1ZGUgIkFjdGl2aXR5U3RhdGUuaCIKICNpbmNsdWRlICJGaW5kT3B0aW9ucy5oIgogI2lu
Y2x1ZGUgIkZyYW1lTG9hZGVyVHlwZXMuaCIKICNpbmNsdWRlICJMYXlvdXRNaWxlc3RvbmVzLmgi
CkBAIC0zNCw3ICszNSw2IEBACiAjaW5jbHVkZSAiU2Vzc2lvbklELmgiCiAjaW5jbHVkZSAiU3Vw
cGxlbWVudGFibGUuaCIKICNpbmNsdWRlICJVc2VySW50ZXJmYWNlTGF5b3V0RGlyZWN0aW9uLmgi
Ci0jaW5jbHVkZSAiVmlld1N0YXRlLmgiCiAjaW5jbHVkZSAiVmlld3BvcnRBcmd1bWVudHMuaCIK
ICNpbmNsdWRlICJXaGVlbEV2ZW50VGVzdFRyaWdnZXIuaCIKICNpbmNsdWRlIDxtZW1vcnk+CkBA
IC0xMjYsNyArMTI2LDcgQEAgY2xhc3MgU3RvcmFnZU5hbWVzcGFjZTsKIGNsYXNzIFN0b3JhZ2VO
YW1lc3BhY2VQcm92aWRlcjsKIGNsYXNzIFVzZXJDb250ZW50UHJvdmlkZXI7CiBjbGFzcyBWYWxp
ZGF0aW9uTWVzc2FnZUNsaWVudDsKLWNsYXNzIFZpZXdTdGF0ZUNoYW5nZU9ic2VydmVyOworY2xh
c3MgQWN0aXZpdHlTdGF0ZUNoYW5nZU9ic2VydmVyOwogY2xhc3MgVmlzaXRlZExpbmtTdG9yZTsK
IAogdHlwZWRlZiB1aW50NjRfdCBMaW5rSGFzaDsKQEAgLTMzNCwyMiArMzM0LDIyIEBAIHB1Ymxp
YzoKICAgICBXRUJDT1JFX0VYUE9SVCBEaWFnbm9zdGljTG9nZ2luZ0NsaWVudCYgZGlhZ25vc3Rp
Y0xvZ2dpbmdDbGllbnQoKSBjb25zdDsKIAogICAgIC8vIE5vdGlmaWNhdGlvbnMgd2hlbiB0aGUg
UGFnZSBzdGFydHMgYW5kIHN0b3BzIGJlaW5nIHByZXNlbnRlZCB2aWEgYSBuYXRpdmUgd2luZG93
LgotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0Vmlld1N0YXRlKFZpZXdTdGF0ZTo6RmxhZ3Mp
OworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0QWN0aXZpdHlTdGF0ZShBY3Rpdml0eVN0YXRl
OjpGbGFncyk7CiAgICAgYm9vbCBpc1Zpc2libGVBbmRBY3RpdmUoKSBjb25zdDsKICAgICB2b2lk
IHBhZ2VBY3Rpdml0eVN0YXRlQ2hhbmdlZCgpIHsgdXBkYXRlVGltZXJUaHJvdHRsaW5nU3RhdGUo
KTsgfQogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0SXNWaXNpYmxlKGJvb2wpOwogICAgIFdF
QkNPUkVfRVhQT1JUIHZvaWQgc2V0SXNQcmVyZW5kZXIoKTsKLSAgICBib29sIGlzVmlzaWJsZSgp
IGNvbnN0IHsgcmV0dXJuIG1fdmlld1N0YXRlICYgVmlld1N0YXRlOjpJc1Zpc2libGU7IH0KKyAg
ICBib29sIGlzVmlzaWJsZSgpIGNvbnN0IHsgcmV0dXJuIG1fYWN0aXZpdHlTdGF0ZSAmIEFjdGl2
aXR5U3RhdGU6OklzVmlzaWJsZTsgfQogCiAgICAgLy8gTm90aWZpY2F0aW9uIHRoYXQgdGhpcyBQ
YWdlIHdhcyBtb3ZlZCBpbnRvIG9yIG91dCBvZiBhIG5hdGl2ZSB3aW5kb3cuCiAgICAgV0VCQ09S
RV9FWFBPUlQgdm9pZCBzZXRJc0luV2luZG93KGJvb2wpOwotICAgIGJvb2wgaXNJbldpbmRvdygp
IGNvbnN0IHsgcmV0dXJuIG1fdmlld1N0YXRlICYgVmlld1N0YXRlOjpJc0luV2luZG93OyB9Cisg
ICAgYm9vbCBpc0luV2luZG93KCkgY29uc3QgeyByZXR1cm4gbV9hY3Rpdml0eVN0YXRlICYgQWN0
aXZpdHlTdGF0ZTo6SXNJbldpbmRvdzsgfQogCiAgICAgdm9pZCBzZXRJc0Nsb3NpbmcoKSB7IG1f
aXNDbG9zaW5nID0gdHJ1ZTsgfQogICAgIGJvb2wgaXNDbG9zaW5nKCkgY29uc3QgeyByZXR1cm4g
bV9pc0Nsb3Npbmc7IH0KIAotICAgIHZvaWQgYWRkVmlld1N0YXRlQ2hhbmdlT2JzZXJ2ZXIoVmll
d1N0YXRlQ2hhbmdlT2JzZXJ2ZXImKTsKLSAgICB2b2lkIHJlbW92ZVZpZXdTdGF0ZUNoYW5nZU9i
c2VydmVyKFZpZXdTdGF0ZUNoYW5nZU9ic2VydmVyJik7CisgICAgdm9pZCBhZGRBY3Rpdml0eVN0
YXRlQ2hhbmdlT2JzZXJ2ZXIoQWN0aXZpdHlTdGF0ZUNoYW5nZU9ic2VydmVyJik7CisgICAgdm9p
ZCByZW1vdmVBY3Rpdml0eVN0YXRlQ2hhbmdlT2JzZXJ2ZXIoQWN0aXZpdHlTdGF0ZUNoYW5nZU9i
c2VydmVyJik7CiAKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHN1c3BlbmRTY3JpcHRlZEFuaW1h
dGlvbnMoKTsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHJlc3VtZVNjcmlwdGVkQW5pbWF0aW9u
cygpOwpAQCAtNjY2LDcgKzY2Niw3IEBAIHByaXZhdGU6CiAKICAgICBib29sIG1faXNFZGl0YWJs
ZTsKICAgICBib29sIG1faXNQcmVyZW5kZXI7Ci0gICAgVmlld1N0YXRlOjpGbGFncyBtX3ZpZXdT
dGF0ZTsKKyAgICBBY3Rpdml0eVN0YXRlOjpGbGFncyBtX2FjdGl2aXR5U3RhdGU7CiAgICAgUGFn
ZUFjdGl2aXR5U3RhdGU6OkZsYWdzIG1fcGFnZUFjdGl2aXR5U3RhdGU7CiAKICAgICBMYXlvdXRN
aWxlc3RvbmVzIG1fcmVxdWVzdGVkTGF5b3V0TWlsZXN0b25lczsKQEAgLTcxMSw3ICs3MTEsNyBA
QCBwcml2YXRlOgogICAgIFJlZjxWaXNpdGVkTGlua1N0b3JlPiBtX3Zpc2l0ZWRMaW5rU3RvcmU7
CiAgICAgUmVmUHRyPFdoZWVsRXZlbnRUZXN0VHJpZ2dlcj4gbV90ZXN0VHJpZ2dlcjsKIAotICAg
IEhhc2hTZXQ8Vmlld1N0YXRlQ2hhbmdlT2JzZXJ2ZXIqPiBtX3ZpZXdTdGF0ZUNoYW5nZU9ic2Vy
dmVyczsKKyAgICBIYXNoU2V0PEFjdGl2aXR5U3RhdGVDaGFuZ2VPYnNlcnZlcio+IG1fYWN0aXZp
dHlTdGF0ZUNoYW5nZU9ic2VydmVyczsKIAogI2lmIEVOQUJMRShSRVNPVVJDRV9VU0FHRSkKICAg
ICBzdGQ6OnVuaXF1ZV9wdHI8UmVzb3VyY2VVc2FnZU92ZXJsYXk+IG1fcmVzb3VyY2VVc2FnZU92
ZXJsYXk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VUaHJvdHRsZXIuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VUaHJvdHRsZXIuaAkocmV2aXNpb24gMjA4
MTk3KQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlVGhyb3R0bGVyLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTI1LDEwICsyNSw5IEBACiAKICNwcmFnbWEgb25jZQogCisjaW5jbHVkZSAiQWN0aXZp
dHlTdGF0ZS5oIgogI2luY2x1ZGUgIlRpbWVyLmgiCi0KICNpbmNsdWRlICJVc2VyQWN0aXZpdHku
aCIKLSNpbmNsdWRlICJWaWV3U3RhdGUuaCIKICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlci5oPgog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL1ZpZXdTdGF0
ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvVmlld1N0YXRlLmgJKHJldmlz
aW9uIDIwODE5NykKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvVmlld1N0YXRlLmgJKG5vbmV4aXN0
ZW50KQpAQCAtMSw0NiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwot
ICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0g
KiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICog
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLW5hbWVz
cGFjZSBXZWJDb3JlIHsKLQotc3RydWN0IFZpZXdTdGF0ZSB7Ci0gICAgZW51bSB7Ci0gICAgICAg
IFdpbmRvd0lzQWN0aXZlID0gMSA8PCAwLAotICAgICAgICBJc0ZvY3VzZWQgPSAxIDw8IDEsCi0g
ICAgICAgIElzVmlzaWJsZSA9IDEgPDwgMiwKLSAgICAgICAgSXNWaXNpYmxlT3JPY2NsdWRlZCA9
IDEgPDwgMywKLSAgICAgICAgSXNJbldpbmRvdyA9IDEgPDwgNCwKLSAgICAgICAgSXNWaXN1YWxs
eUlkbGUgPSAxIDw8IDUsCi0gICAgfTsKLQotICAgIHR5cGVkZWYgdW5zaWduZWQgRmxhZ3M7Ci0K
LSAgICBzdGF0aWMgY29uc3QgRmxhZ3MgTm9GbGFncyA9IDA7Ci0gICAgc3RhdGljIGNvbnN0IEZs
YWdzIEFsbEZsYWdzID0gV2luZG93SXNBY3RpdmUgfCBJc0ZvY3VzZWQgfCBJc1Zpc2libGUgfCBJ
c1Zpc2libGVPck9jY2x1ZGVkIHwgSXNJbldpbmRvdyB8IElzVmlzdWFsbHlJZGxlOwotfTsKLQot
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9WaWV3U3Rh
dGVDaGFuZ2VPYnNlcnZlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvVmll
d1N0YXRlQ2hhbmdlT2JzZXJ2ZXIuaAkocmV2aXNpb24gMjA4MTk3KQorKysgU291cmNlL1dlYkNv
cmUvcGFnZS9WaWV3U3RhdGVDaGFuZ2VPYnNlcnZlci5oCShub25leGlzdGVudCkKQEAgLTEsNDEg
KzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0g
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
LSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
Ci0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IK
LSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0g
KiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaW5jbHVkZSAiVmlld1N0YXRl
LmgiCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotY2xhc3MgVmlld1N0YXRlQ2hhbmdlT2JzZXJ2
ZXIgewotcHVibGljOgotICAgIHZpcnR1YWwgflZpZXdTdGF0ZUNoYW5nZU9ic2VydmVyKCkKLSAg
ICB7Ci0gICAgfQotICAgIAotICAgIHZpcnR1YWwgdm9pZCB2aWV3U3RhdGVEaWRDaGFuZ2UoVmll
d1N0YXRlOjpGbGFncyBvbGRWaWV3U3RhdGUsIFZpZXdTdGF0ZTo6RmxhZ3MgbmV3Vmlld1N0YXRl
KSA9IDA7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBTb3VyY2UvV2ViS2l0
Mi9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCShyZXZp
c2lvbiAyMDgxOTcpCisrKyBTb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkK
QEAgLTEsMyArMSwxMzQgQEAKKzIwMTYtMTAtMzEgIEdhdmluIEJhcnJhY2xvdWdoICA8YmFycmFj
bG91Z2hAYXBwbGUuY29tPgorCisgICAgICAgIFJlbmFtZSBWaWV3U3RhdGUgdG8gQWN0aXZpdHlT
dGF0ZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY0
MjU0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgV2Ug
cGxhbiB0byBhZGQgYSBjb3VwbGUgbW9yZSBmbGFncyB0byBWaWV3U3RhdGUgdGhhdCBhcmVuJ3Qg
ZGlyZWN0bHkgcmVsYXRlZCB0byB0aGUgdmlldworICAgICAgICBpdHNlbGYgLSB3aGV0aGVyIHRo
ZXJlIGlzIGFuIG9uZ29pbmcgcGFnZSBsb2FkLCBhbmQgd2hldGhlciB3aGV0aGVyIHRoZXJlIGlz
IGF1ZGlvIHBsYXliYWNrLgorICAgICAgICBUaGlzIHdpbGwgYWxsb3cgdmlld1N0YXRlIChub3cg
YWN0aXZpdHlTdGF0ZSkgdG8gZnVsbHkgZHJpdmUgdGhyb3R0bGluZyBkZWNpc2lvbnMuCisKKyAg
ICAgICAgUmVuYW1pbmcgdGhpcyBiaXRmaWVsZCBhY2NvcmRpbmdseS4KKworICAgICAgICAqIFNo
YXJlZC9XZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2Vi
UGFnZUNyZWF0aW9uUGFyYW1ldGVyczo6ZW5jb2RlKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFn
ZUNyZWF0aW9uUGFyYW1ldGVyczo6ZGVjb2RlKToKKyAgICAgICAgKiBTaGFyZWQvV2ViUGFnZUNy
ZWF0aW9uUGFyYW1ldGVycy5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJW
aWV3Lm1tOgorICAgICAgICAoLVtXS1dlYlZpZXcgZGlkTW92ZVRvV2luZG93XSk6CisgICAgICAg
ICogVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlld0Jhc2UuY3BwOgorICAgICAgICAoX1dl
YktpdFdlYlZpZXdCYXNlUHJpdmF0ZTo6X1dlYktpdFdlYlZpZXdCYXNlUHJpdmF0ZSk6CisgICAg
ICAgIChfV2ViS2l0V2ViVmlld0Jhc2VQcml2YXRlOjp1cGRhdGVBY3Rpdml0eVN0YXRlVGltZXJG
aXJlZCk6CisgICAgICAgICh3ZWJraXRXZWJWaWV3QmFzZVNjaGVkdWxlVXBkYXRlQWN0aXZpdHlT
dGF0ZSk6CisgICAgICAgICh0b3BsZXZlbFdpbmRvd0ZvY3VzSW5FdmVudCk6CisgICAgICAgICh0
b3BsZXZlbFdpbmRvd0ZvY3VzT3V0RXZlbnQpOgorICAgICAgICAodG9wbGV2ZWxXaW5kb3dTdGF0
ZUV2ZW50KToKKyAgICAgICAgKHdlYmtpdFdlYlZpZXdCYXNlU2V0VG9wbGV2ZWxPblNjcmVlbldp
bmRvdyk6CisgICAgICAgICh3ZWJraXRXZWJWaWV3QmFzZU1hcCk6CisgICAgICAgICh3ZWJraXRX
ZWJWaWV3QmFzZVVubWFwKToKKyAgICAgICAgKHdlYmtpdFdlYlZpZXdCYXNlU2V0Rm9jdXMpOgor
ICAgICAgICAod2Via2l0V2ViVmlld0Jhc2VJc0luV2luZG93QWN0aXZlKToKKyAgICAgICAgKHdl
YmtpdFdlYlZpZXdCYXNlSXNGb2N1c2VkKToKKyAgICAgICAgKHdlYmtpdFdlYlZpZXdCYXNlSXNW
aXNpYmxlKToKKyAgICAgICAgKHdlYmtpdFdlYlZpZXdCYXNlSXNJbldpbmRvdyk6CisgICAgICAg
IChfV2ViS2l0V2ViVmlld0Jhc2VQcml2YXRlOjp1cGRhdGVWaWV3U3RhdGVUaW1lckZpcmVkKTog
RGVsZXRlZC4KKyAgICAgICAgKHdlYmtpdFdlYlZpZXdCYXNlU2NoZWR1bGVVcGRhdGVWaWV3U3Rh
dGUpOiBEZWxldGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9XZWJWaWV3SW1wbC5tbToK
KyAgICAgICAgKFdlYktpdDo6V2ViVmlld0ltcGw6OmJlY29tZUZpcnN0UmVzcG9uZGVyKToKKyAg
ICAgICAgKFdlYktpdDo6V2ViVmlld0ltcGw6OnJlc2lnbkZpcnN0UmVzcG9uZGVyKToKKyAgICAg
ICAgKFdlYktpdDo6V2ViVmlld0ltcGw6OndpbmRvd0RpZE9yZGVyT2ZmU2NyZWVuKToKKyAgICAg
ICAgKFdlYktpdDo6V2ViVmlld0ltcGw6OndpbmRvd0RpZE9yZGVyT25TY3JlZW4pOgorICAgICAg
ICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6d2luZG93RGlkQmVjb21lS2V5KToKKyAgICAgICAgKFdl
YktpdDo6V2ViVmlld0ltcGw6OndpbmRvd0RpZFJlc2lnbktleSk6CisgICAgICAgIChXZWJLaXQ6
OldlYlZpZXdJbXBsOjp3aW5kb3dEaWRNaW5pYXR1cml6ZSk6CisgICAgICAgIChXZWJLaXQ6Oldl
YlZpZXdJbXBsOjp3aW5kb3dEaWREZW1pbmlhdHVyaXplKToKKyAgICAgICAgKFdlYktpdDo6V2Vi
Vmlld0ltcGw6OndpbmRvd0RpZENoYW5nZU9jY2x1c2lvblN0YXRlKToKKyAgICAgICAgKFdlYktp
dDo6V2ViVmlld0ltcGw6OnZpZXdEaWRNb3ZlVG9XaW5kb3cpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJWaWV3SW1wbDo6dmlld0RpZEhpZGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6
dmlld0RpZFVuaGlkZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXdJbXBsOjphY3RpdmVTcGFj
ZURpZENoYW5nZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXdJbXBsOjplbmREZWZlcnJpbmdW
aWV3SW5XaW5kb3dDaGFuZ2VzKToKKyAgICAgICAgKFdlYktpdDo6V2ViVmlld0ltcGw6OmVuZERl
ZmVycmluZ1ZpZXdJbldpbmRvd0NoYW5nZXNTeW5jKToKKyAgICAgICAgKFdlYktpdDo6V2ViVmll
d0ltcGw6OnByZXBhcmVGb3JNb3ZlVG9XaW5kb3cpOgorICAgICAgICAqIFVJUHJvY2Vzcy9EcmF3
aW5nQXJlYVByb3h5Lmg6CisgICAgICAgIChXZWJLaXQ6OkRyYXdpbmdBcmVhUHJveHk6OndhaXRG
b3JEaWRVcGRhdGVBY3Rpdml0eVN0YXRlKToKKyAgICAgICAgKFdlYktpdDo6RHJhd2luZ0FyZWFQ
cm94eTo6d2FpdEZvckRpZFVwZGF0ZVZpZXdTdGF0ZSk6IERlbGV0ZWQuCisgICAgICAgICogVUlQ
cm9jZXNzL1dlYlBhZ2VQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6
V2ViUGFnZVByb3h5KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpyZWF0dGFjaFRv
V2ViUHJvY2Vzcyk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6c2V0U3VwcHJlc3NW
aXNpYmlsaXR5VXBkYXRlcyk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6dXBkYXRl
QWN0aXZpdHlTdGF0ZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6YWN0aXZpdHlT
dGF0ZURpZENoYW5nZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6ZGlzcGF0Y2hB
Y3Rpdml0eVN0YXRlQ2hhbmdlKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5Ojp1cGRh
dGVUaHJvdHRsZVN0YXRlKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5Ojp3YWl0Rm9y
RGlkVXBkYXRlQWN0aXZpdHlTdGF0ZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6
Y3JlYXRpb25QYXJhbWV0ZXJzKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjppbnN0
YWxsQWN0aXZpdHlTdGF0ZUNoYW5nZUNvbXBsZXRpb25IYW5kbGVyKToKKyAgICAgICAgKFdlYktp
dDo6V2ViUGFnZVByb3h5Ojp1cGRhdGVWaWV3U3RhdGUpOiBEZWxldGVkLgorICAgICAgICAoV2Vi
S2l0OjpXZWJQYWdlUHJveHk6OnZpZXdTdGF0ZURpZENoYW5nZSk6IERlbGV0ZWQuCisgICAgICAg
IChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6ZGlzcGF0Y2hWaWV3U3RhdGVDaGFuZ2UpOiBEZWxldGVk
LgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OndhaXRGb3JEaWRVcGRhdGVWaWV3U3Rh
dGUpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6Omluc3RhbGxWaWV3
U3RhdGVDaGFuZ2VDb21wbGV0aW9uSGFuZGxlcik6IERlbGV0ZWQuCisgICAgICAgICogVUlQcm9j
ZXNzL1dlYlBhZ2VQcm94eS5oOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmlzSW5X
aW5kb3cpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmRpZFVwZGF0ZUFjdGl2aXR5
U3RhdGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmlzVmlld1Zpc2libGUpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmRpZFVwZGF0ZVZpZXdTdGF0ZSk6IERlbGV0
ZWQuCisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbjoKKyAgICAg
ICAgKiBVSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2Vi
UHJvY2Vzc1Byb3h5Ojp3aW5kb3dTZXJ2ZXJDb25uZWN0aW9uU3RhdGVDaGFuZ2VkKToKKyAgICAg
ICAgKiBVSVByb2Nlc3MvZWZsL1dlYlZpZXcuY3BwOgorICAgICAgICAqIFVJUHJvY2Vzcy9pb3Mv
V0tDb250ZW50Vmlldy5tbToKKyAgICAgICAgKC1bV0tDb250ZW50VmlldyBfYXBwbGljYXRpb25E
aWRFbnRlckJhY2tncm91bmRdKToKKyAgICAgICAgKC1bV0tDb250ZW50VmlldyBfYXBwbGljYXRp
b25XaWxsRW50ZXJGb3JlZ3JvdW5kXSk6CisgICAgICAgICogVUlQcm9jZXNzL2lvcy9XS1BERlZp
ZXcubW06CisgICAgICAgICgtW1dLUERGVmlldyBfYXBwbGljYXRpb25EaWRFbnRlckJhY2tncm91
bmRdKToKKyAgICAgICAgKC1bV0tQREZWaWV3IF9hcHBsaWNhdGlvbldpbGxFbnRlckZvcmVncm91
bmRdKToKKyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL1dlYlBhZ2VQcm94eUlPUy5tbToKKyAgICAg
ICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpzeW5jaHJvbml6ZUR5bmFtaWNWaWV3cG9ydFVwZGF0
ZSk6CisgICAgICAgICogVUlQcm9jZXNzL21hYy9SZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYVBy
b3h5Lmg6CisgICAgICAgICogVUlQcm9jZXNzL21hYy9SZW1vdGVMYXllclRyZWVEcmF3aW5nQXJl
YVByb3h5Lm1tOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYVBy
b3h5OjpkaWRSZWZyZXNoRGlzcGxheSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUxheWVyVHJl
ZURyYXdpbmdBcmVhUHJveHk6OndhaXRGb3JEaWRVcGRhdGVBY3Rpdml0eVN0YXRlKToKKyAgICAg
ICAgKFdlYktpdDo6UmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWFQcm94eTo6d2FpdEZvckRpZFVw
ZGF0ZVZpZXdTdGF0ZSk6IERlbGV0ZWQuCisgICAgICAgICogVUlQcm9jZXNzL21hYy9UaWxlZENv
cmVBbmltYXRpb25EcmF3aW5nQXJlYVByb3h5Lmg6CisgICAgICAgICogVUlQcm9jZXNzL21hYy9U
aWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYVByb3h5Lm1tOgorICAgICAgICAoV2ViS2l0OjpU
aWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYVByb3h5Ojp3YWl0Rm9yRGlkVXBkYXRlQWN0aXZp
dHlTdGF0ZSk6CisgICAgICAgIChXZWJLaXQ6OlRpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVh
UHJveHk6OndhaXRGb3JEaWRVcGRhdGVWaWV3U3RhdGUpOiBEZWxldGVkLgorICAgICAgICAqIFdl
YlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmNwcDoKKyAgICAgICAgKFdlYktpdDo6UGx1Z2lu
Vmlldzo6YWN0aXZpdHlTdGF0ZURpZENoYW5nZSk6CisgICAgICAgIChXZWJLaXQ6OlBsdWdpblZp
ZXc6OnZpZXdTdGF0ZURpZENoYW5nZSk6IERlbGV0ZWQuCisgICAgICAgICogV2ViUHJvY2Vzcy9Q
bHVnaW5zL1BsdWdpblZpZXcuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvQWNjZWxl
cmF0ZWREcmF3aW5nQXJlYS5jcHA6CisgICAgICAgIChXZWJLaXQ6OkFjY2VsZXJhdGVkRHJhd2lu
Z0FyZWE6OmFjdGl2aXR5U3RhdGVEaWRDaGFuZ2UpOgorICAgICAgICAoV2ViS2l0OjpBY2NlbGVy
YXRlZERyYXdpbmdBcmVhOjp2aWV3U3RhdGVEaWRDaGFuZ2UpOiBEZWxldGVkLgorICAgICAgICAq
IFdlYlByb2Nlc3MvV2ViUGFnZS9BY2NlbGVyYXRlZERyYXdpbmdBcmVhLmg6CisgICAgICAgICog
V2ViUHJvY2Vzcy9XZWJQYWdlL0RyYXdpbmdBcmVhLmg6CisgICAgICAgIChXZWJLaXQ6OkRyYXdp
bmdBcmVhOjphY3Rpdml0eVN0YXRlRGlkQ2hhbmdlKToKKyAgICAgICAgKFdlYktpdDo6RHJhd2lu
Z0FyZWE6OnZpZXdTdGF0ZURpZENoYW5nZSk6IERlbGV0ZWQuCisgICAgICAgICogV2ViUHJvY2Vz
cy9XZWJQYWdlL1dlYlBhZ2UuY3BwOgorICAgICAgICAoV2ViS2l0OjptX3VzZXJJbnRlcmZhY2VM
YXlvdXREaXJlY3Rpb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpyZWluaXRpYWxpemVX
ZWJQYWdlKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6dXBkYXRlSXNJbldpbmRvdyk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnNldEFjdGl2aXR5U3RhdGUpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJQYWdlOjpzZXRWaWV3U3RhdGUpOiBEZWxldGVkLgorICAgICAgICAqIFdlYlByb2Nl
c3MvV2ViUGFnZS9XZWJQYWdlLmg6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OmlzVmlzaWJs
ZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OmlzVmlzaWJsZU9yT2NjbHVkZWQpOgorICAg
ICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluOgorICAgICAgICAq
IFdlYlByb2Nlc3MvV2ViUGFnZS9tYWMvUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWEuaDoKKyAg
ICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1JlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVh
Lm1tOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYTo6YWN0aXZp
dHlTdGF0ZURpZENoYW5nZSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUxheWVyVHJlZURyYXdp
bmdBcmVhOjp2aWV3U3RhdGVEaWRDaGFuZ2UpOiBEZWxldGVkLgorICAgICAgICAqIFdlYlByb2Nl
c3MvV2ViUGFnZS9tYWMvVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWEuaDoKKyAgICAgICAg
KiBXZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1RpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhLm1t
OgorICAgICAgICAoV2ViS2l0OjpUaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYTo6VGlsZWRD
b3JlQW5pbWF0aW9uRHJhd2luZ0FyZWEpOgorICAgICAgICAoV2ViS2l0OjpUaWxlZENvcmVBbmlt
YXRpb25EcmF3aW5nQXJlYTo6YWN0aXZpdHlTdGF0ZURpZENoYW5nZSk6CisgICAgICAgIChXZWJL
aXQ6OlRpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhOjpkaWRVcGRhdGVBY3Rpdml0eVN0YXRl
VGltZXJGaXJlZCk6CisgICAgICAgIChXZWJLaXQ6OlRpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdB
cmVhOjp2aWV3U3RhdGVEaWRDaGFuZ2UpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpUaWxl
ZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYTo6ZGlkVXBkYXRlVmlld1N0YXRlVGltZXJGaXJlZCk6
IERlbGV0ZWQuCisKIDIwMTYtMTAtMzEgIEJyYWR5IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUuY29t
PgogCiAgICAgICAgIEluZGV4ZWREQiAyLjA6IFN1cHBvcnQgSURCT2JqZWN0U3RvcmUgZ2V0QWxs
L2dldEFsbEtleXMuCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViUGFnZUNyZWF0aW9u
UGFyYW1ldGVycy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYlBh
Z2VDcmVhdGlvblBhcmFtZXRlcnMuY3BwCShyZXZpc2lvbiAyMDgxOTcpCisrKyBTb3VyY2UvV2Vi
S2l0Mi9TaGFyZWQvV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycy5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTMzLDcgKzMzLDcgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiB2b2lkIFdlYlBhZ2VDcmVhdGlv
blBhcmFtZXRlcnM6OmVuY29kZShJUEM6OkVuY29kZXImIGVuY29kZXIpIGNvbnN0CiB7CiAgICAg
ZW5jb2RlciA8PCB2aWV3U2l6ZTsKLSAgICBlbmNvZGVyIDw8IHZpZXdTdGF0ZTsKKyAgICBlbmNv
ZGVyIDw8IGFjdGl2aXR5U3RhdGU7CiAKICAgICBlbmNvZGVyIDw8IHN0b3JlOwogICAgIGVuY29k
ZXIuZW5jb2RlRW51bShkcmF3aW5nQXJlYVR5cGUpOwpAQCAtOTQsNyArOTQsNyBAQCBib29sIFdl
YlBhZ2VDcmVhdGlvblBhcmFtZXRlcnM6OmRlY29kZShJCiB7CiAgICAgaWYgKCFkZWNvZGVyLmRl
Y29kZShwYXJhbWV0ZXJzLnZpZXdTaXplKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIGlm
ICghZGVjb2Rlci5kZWNvZGUocGFyYW1ldGVycy52aWV3U3RhdGUpKQorICAgIGlmICghZGVjb2Rl
ci5kZWNvZGUocGFyYW1ldGVycy5hY3Rpdml0eVN0YXRlKSkKICAgICAgICAgcmV0dXJuIGZhbHNl
OwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUocGFyYW1ldGVycy5zdG9yZSkpCiAgICAgICAgIHJl
dHVybiBmYWxzZTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJQYWdlQ3JlYXRpb25Q
YXJhbWV0ZXJzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYlBhZ2VD
cmVhdGlvblBhcmFtZXRlcnMuaAkocmV2aXNpb24gMjA4MTk3KQorKysgU291cmNlL1dlYktpdDIv
U2hhcmVkL1dlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMuaAkod29ya2luZyBjb3B5KQpAQCAtMzIs
NiArMzIsNyBAQAogI2luY2x1ZGUgIldlYkNvcmVBcmd1bWVudENvZGVycy5oIgogI2luY2x1ZGUg
IldlYlBhZ2VHcm91cERhdGEuaCIKICNpbmNsdWRlICJXZWJQcmVmZXJlbmNlc1N0b3JlLmgiCisj
aW5jbHVkZSA8V2ViQ29yZS9BY3Rpdml0eVN0YXRlLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9Db2xv
ci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRmxvYXRTaXplLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9J
bnRTaXplLmg+CkBAIC00MCw3ICs0MSw2IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9TY3JvbGxUeXBl
cy5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU2Vzc2lvbklELmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9V
c2VySW50ZXJmYWNlTGF5b3V0RGlyZWN0aW9uLmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9WaWV3U3Rh
dGUuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAogI2lmIFBMQVRGT1JNKE1B
QykKQEAgLTYwLDcgKzYwLDcgQEAgc3RydWN0IFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMgewog
CiAgICAgV2ViQ29yZTo6SW50U2l6ZSB2aWV3U2l6ZTsKIAotICAgIFdlYkNvcmU6OlZpZXdTdGF0
ZTo6RmxhZ3Mgdmlld1N0YXRlOworICAgIFdlYkNvcmU6OkFjdGl2aXR5U3RhdGU6OkZsYWdzIGFj
dGl2aXR5U3RhdGU7CiAgICAgCiAgICAgV2ViUHJlZmVyZW5jZXNTdG9yZSBzdG9yZTsKICAgICBE
cmF3aW5nQXJlYVR5cGUgZHJhd2luZ0FyZWFUeXBlOwpJbmRleDogU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0RyYXdpbmdBcmVhUHJveHkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvRHJhd2luZ0FyZWFQcm94eS5oCShyZXZpc2lvbiAyMDgxOTcpCisrKyBTb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvRHJhd2luZ0FyZWFQcm94eS5oCSh3b3JraW5nIGNvcHkpCkBAIC04
OSw3ICs4OSw3IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVEZWJ1Z0luZGlj
YXRvcigpIHsgfQogCi0gICAgdmlydHVhbCB2b2lkIHdhaXRGb3JEaWRVcGRhdGVWaWV3U3RhdGUo
KSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgd2FpdEZvckRpZFVwZGF0ZUFjdGl2aXR5U3RhdGUoKSB7
IH0KICAgICAKICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hBZnRlckVuc3VyaW5nRHJhd2luZyhz
dGQ6OmZ1bmN0aW9uPHZvaWQgKENhbGxiYWNrQmFzZTo6RXJyb3IpPikgeyBBU1NFUlRfTk9UX1JF
QUNIRUQoKTsgfQogCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5
LmNwcAkocmV2aXNpb24gMjA4MTk3KQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBh
Z2VQcm94eS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM1Nyw3ICszNTcsNyBAQCBXZWJQYWdlUHJv
eHk6OldlYlBhZ2VQcm94eShQYWdlQ2xpZW50JiBwCiAgICAgLCBtX2dlb2xvY2F0aW9uUGVybWlz
c2lvblJlcXVlc3RNYW5hZ2VyKCp0aGlzKQogICAgICwgbV9ub3RpZmljYXRpb25QZXJtaXNzaW9u
UmVxdWVzdE1hbmFnZXIoKnRoaXMpCiAgICAgLCBtX3VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0
TWFuYWdlcigqdGhpcykKLSAgICAsIG1fdmlld1N0YXRlKFZpZXdTdGF0ZTo6Tm9GbGFncykKKyAg
ICAsIG1fYWN0aXZpdHlTdGF0ZShBY3Rpdml0eVN0YXRlOjpOb0ZsYWdzKQogICAgICwgbV92aWV3
V2FzRXZlckluV2luZG93KGZhbHNlKQogI2lmIFBMQVRGT1JNKElPUykKICAgICAsIG1fYWx3YXlz
UnVuc0F0Rm9yZWdyb3VuZFByaW9yaXR5KG1fY29uZmlndXJhdGlvbi0+YWx3YXlzUnVuc0F0Rm9y
ZWdyb3VuZFByaW9yaXR5KCkpCkBAIC00NDksMjYgKzQ0OSwyNiBAQCBXZWJQYWdlUHJveHk6Oldl
YlBhZ2VQcm94eShQYWdlQ2xpZW50JiBwCiAgICAgLCBtX2F1dG9TaXppbmdTaG91bGRFeHBhbmRU
b1ZpZXdIZWlnaHQoZmFsc2UpCiAgICAgLCBtX21lZGlhVm9sdW1lKDEpCiAgICAgLCBtX21heVN0
YXJ0TWVkaWFXaGVuSW5XaW5kb3codHJ1ZSkKLSAgICAsIG1fd2FpdGluZ0ZvckRpZFVwZGF0ZVZp
ZXdTdGF0ZShmYWxzZSkKKyAgICAsIG1fd2FpdGluZ0ZvckRpZFVwZGF0ZUFjdGl2aXR5U3RhdGUo
ZmFsc2UpCiAjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgLCBtX3Njcm9sbFBlcmZvcm1hbmNlRGF0
YUNvbGxlY3Rpb25FbmFibGVkKGZhbHNlKQogI2VuZGlmCiAgICAgLCBtX3Njcm9sbFBpbm5pbmdC
ZWhhdmlvcihEb05vdFBpbikKICAgICAsIG1fbmF2aWdhdGlvbklEKDApCiAgICAgLCBtX2NvbmZp
Z3VyYXRpb25QcmVmZXJlbmNlVmFsdWVzKG1fY29uZmlndXJhdGlvbi0+cHJlZmVyZW5jZVZhbHVl
cygpKQotICAgICwgbV9wb3RlbnRpYWxseUNoYW5nZWRWaWV3U3RhdGVGbGFncyhWaWV3U3RhdGU6
Ok5vRmxhZ3MpCi0gICAgLCBtX3ZpZXdTdGF0ZUNoYW5nZVdhbnRzU3luY2hyb25vdXNSZXBseShm
YWxzZSkKKyAgICAsIG1fcG90ZW50aWFsbHlDaGFuZ2VkQWN0aXZpdHlTdGF0ZUZsYWdzKEFjdGl2
aXR5U3RhdGU6Ok5vRmxhZ3MpCisgICAgLCBtX2FjdGl2aXR5U3RhdGVDaGFuZ2VXYW50c1N5bmNo
cm9ub3VzUmVwbHkoZmFsc2UpCiAgICAgLCBtX3dlYWtQdHJGYWN0b3J5KHRoaXMpCiB7CiAgICAg
bV93ZWJQcm9jZXNzTGlmZXRpbWVUcmFja2VyLmFkZE9ic2VydmVyKG1fdmlzaXRlZExpbmtTdG9y
ZSk7CiAgICAgbV93ZWJQcm9jZXNzTGlmZXRpbWVUcmFja2VyLmFkZE9ic2VydmVyKG1fd2Vic2l0
ZURhdGFTdG9yZSk7CiAKLSAgICB1cGRhdGVWaWV3U3RhdGUoKTsKKyAgICB1cGRhdGVBY3Rpdml0
eVN0YXRlKCk7CiAgICAgdXBkYXRlVGhyb3R0bGVTdGF0ZSgpOwogICAgIHVwZGF0ZUhpZGRlblBh
Z2VUaHJvdHRsaW5nQXV0b0luY3JlYXNlcygpOwogICAgIAogI2lmIEhBVkUoT1VUX09GX1BST0NF
U1NfTEFZRVJfSE9TVElORykKLSAgICBtX2xheWVySG9zdGluZ01vZGUgPSBtX3ZpZXdTdGF0ZSAm
IFZpZXdTdGF0ZTo6SXNJbldpbmRvdyA/IG1fcGFnZUNsaWVudC52aWV3TGF5ZXJIb3N0aW5nTW9k
ZSgpIDogTGF5ZXJIb3N0aW5nTW9kZTo6T3V0T2ZQcm9jZXNzOworICAgIG1fbGF5ZXJIb3N0aW5n
TW9kZSA9IG1fYWN0aXZpdHlTdGF0ZSAmIEFjdGl2aXR5U3RhdGU6OklzSW5XaW5kb3cgPyBtX3Bh
Z2VDbGllbnQudmlld0xheWVySG9zdGluZ01vZGUoKSA6IExheWVySG9zdGluZ01vZGU6Ok91dE9m
UHJvY2VzczsKICNlbmRpZgogCiAgICAgcGxhdGZvcm1Jbml0aWFsaXplKCk7CkBAIC01MDYsOSAr
NTA2LDkgQEAgV2ViUGFnZVByb3h5OjpXZWJQYWdlUHJveHkoUGFnZUNsaWVudCYgcAogICAgIH0K
IAogI2lmIFBMQVRGT1JNKENPQ09BKQotICAgIGNvbnN0IENGSW5kZXggdmlld1N0YXRlQ2hhbmdl
UnVuTG9vcE9yZGVyID0gKENGSW5kZXgpUnVuTG9vcE9ic2VydmVyOjpXZWxsS25vd25SdW5Mb29w
T3JkZXJzOjpDb3JlQW5pbWF0aW9uQ29tbWl0IC0gMTsKLSAgICBtX3ZpZXdTdGF0ZUNoYW5nZURp
c3BhdGNoZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPFJ1bkxvb3BPYnNlcnZlcj4odmlld1N0YXRlQ2hh
bmdlUnVuTG9vcE9yZGVyLCBbdGhpc10gewotICAgICAgICB0aGlzLT5kaXNwYXRjaFZpZXdTdGF0
ZUNoYW5nZSgpOworICAgIGNvbnN0IENGSW5kZXggYWN0aXZpdHlTdGF0ZUNoYW5nZVJ1bkxvb3BP
cmRlciA9IChDRkluZGV4KVJ1bkxvb3BPYnNlcnZlcjo6V2VsbEtub3duUnVuTG9vcE9yZGVyczo6
Q29yZUFuaW1hdGlvbkNvbW1pdCAtIDE7CisgICAgbV9hY3Rpdml0eVN0YXRlQ2hhbmdlRGlzcGF0
Y2hlciA9IHN0ZDo6bWFrZV91bmlxdWU8UnVuTG9vcE9ic2VydmVyPihhY3Rpdml0eVN0YXRlQ2hh
bmdlUnVuTG9vcE9yZGVyLCBbdGhpc10geworICAgICAgICB0aGlzLT5kaXNwYXRjaEFjdGl2aXR5
U3RhdGVDaGFuZ2UoKTsKICAgICB9KTsKICNlbmRpZgogfQpAQCAtNzIwLDcgKzcyMCw3IEBAIHZv
aWQgV2ViUGFnZVByb3h5OjpyZWF0dGFjaFRvV2ViUHJvY2VzcygKICAgICBtX3Byb2Nlc3MtPmFk
ZEV4aXN0aW5nV2ViUGFnZSh0aGlzLCBtX3BhZ2VJRCk7CiAgICAgbV9wcm9jZXNzLT5hZGRNZXNz
YWdlUmVjZWl2ZXIoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6bWVzc2FnZVJlY2VpdmVyTmFtZSgp
LCBtX3BhZ2VJRCwgKnRoaXMpOwogCi0gICAgdXBkYXRlVmlld1N0YXRlKCk7CisgICAgdXBkYXRl
QWN0aXZpdHlTdGF0ZSgpOwogICAgIHVwZGF0ZVRocm90dGxlU3RhdGUoKTsKIAogICAgIG1faW5z
cGVjdG9yID0gV2ViSW5zcGVjdG9yUHJveHk6OmNyZWF0ZSh0aGlzKTsKQEAgLTE0NDIsNDggKzE0
NDIsNDggQEAgdm9pZCBXZWJQYWdlUHJveHk6OnNldFN1cHByZXNzVmlzaWJpbGl0eQogCiAgICAg
aWYgKCFtX3N1cHByZXNzVmlzaWJpbGl0eVVwZGF0ZXMpIHsKICNpZiBQTEFURk9STShDT0NPQSkK
LSAgICAgICAgbV92aWV3U3RhdGVDaGFuZ2VEaXNwYXRjaGVyLT5zY2hlZHVsZSgpOworICAgICAg
ICBtX2FjdGl2aXR5U3RhdGVDaGFuZ2VEaXNwYXRjaGVyLT5zY2hlZHVsZSgpOwogI2Vsc2UKLSAg
ICAgICAgZGlzcGF0Y2hWaWV3U3RhdGVDaGFuZ2UoKTsKKyAgICAgICAgZGlzcGF0Y2hBY3Rpdml0
eVN0YXRlQ2hhbmdlKCk7CiAjZW5kaWYKICAgICB9CiB9CiAKLXZvaWQgV2ViUGFnZVByb3h5Ojp1
cGRhdGVWaWV3U3RhdGUoVmlld1N0YXRlOjpGbGFncyBmbGFnc1RvVXBkYXRlKQordm9pZCBXZWJQ
YWdlUHJveHk6OnVwZGF0ZUFjdGl2aXR5U3RhdGUoQWN0aXZpdHlTdGF0ZTo6RmxhZ3MgZmxhZ3NU
b1VwZGF0ZSkKIHsKLSAgICBtX3ZpZXdTdGF0ZSAmPSB+ZmxhZ3NUb1VwZGF0ZTsKLSAgICBpZiAo
ZmxhZ3NUb1VwZGF0ZSAmIFZpZXdTdGF0ZTo6SXNGb2N1c2VkICYmIG1fcGFnZUNsaWVudC5pc1Zp
ZXdGb2N1c2VkKCkpCi0gICAgICAgIG1fdmlld1N0YXRlIHw9IFZpZXdTdGF0ZTo6SXNGb2N1c2Vk
OwotICAgIGlmIChmbGFnc1RvVXBkYXRlICYgVmlld1N0YXRlOjpXaW5kb3dJc0FjdGl2ZSAmJiBt
X3BhZ2VDbGllbnQuaXNWaWV3V2luZG93QWN0aXZlKCkpCi0gICAgICAgIG1fdmlld1N0YXRlIHw9
IFZpZXdTdGF0ZTo6V2luZG93SXNBY3RpdmU7Ci0gICAgaWYgKGZsYWdzVG9VcGRhdGUgJiBWaWV3
U3RhdGU6OklzVmlzaWJsZSAmJiBtX3BhZ2VDbGllbnQuaXNWaWV3VmlzaWJsZSgpKQotICAgICAg
ICBtX3ZpZXdTdGF0ZSB8PSBWaWV3U3RhdGU6OklzVmlzaWJsZTsKLSAgICBpZiAoZmxhZ3NUb1Vw
ZGF0ZSAmIFZpZXdTdGF0ZTo6SXNWaXNpYmxlT3JPY2NsdWRlZCAmJiBtX3BhZ2VDbGllbnQuaXNW
aWV3VmlzaWJsZU9yT2NjbHVkZWQoKSkKLSAgICAgICAgbV92aWV3U3RhdGUgfD0gVmlld1N0YXRl
OjpJc1Zpc2libGVPck9jY2x1ZGVkOwotICAgIGlmIChmbGFnc1RvVXBkYXRlICYgVmlld1N0YXRl
OjpJc0luV2luZG93ICYmIG1fcGFnZUNsaWVudC5pc1ZpZXdJbldpbmRvdygpKQotICAgICAgICBt
X3ZpZXdTdGF0ZSB8PSBWaWV3U3RhdGU6OklzSW5XaW5kb3c7Ci0gICAgaWYgKGZsYWdzVG9VcGRh
dGUgJiBWaWV3U3RhdGU6OklzVmlzdWFsbHlJZGxlICYmIG1fcGFnZUNsaWVudC5pc1Zpc3VhbGx5
SWRsZSgpKQotICAgICAgICBtX3ZpZXdTdGF0ZSB8PSBWaWV3U3RhdGU6OklzVmlzdWFsbHlJZGxl
OworICAgIG1fYWN0aXZpdHlTdGF0ZSAmPSB+ZmxhZ3NUb1VwZGF0ZTsKKyAgICBpZiAoZmxhZ3NU
b1VwZGF0ZSAmIEFjdGl2aXR5U3RhdGU6OklzRm9jdXNlZCAmJiBtX3BhZ2VDbGllbnQuaXNWaWV3
Rm9jdXNlZCgpKQorICAgICAgICBtX2FjdGl2aXR5U3RhdGUgfD0gQWN0aXZpdHlTdGF0ZTo6SXNG
b2N1c2VkOworICAgIGlmIChmbGFnc1RvVXBkYXRlICYgQWN0aXZpdHlTdGF0ZTo6V2luZG93SXNB
Y3RpdmUgJiYgbV9wYWdlQ2xpZW50LmlzVmlld1dpbmRvd0FjdGl2ZSgpKQorICAgICAgICBtX2Fj
dGl2aXR5U3RhdGUgfD0gQWN0aXZpdHlTdGF0ZTo6V2luZG93SXNBY3RpdmU7CisgICAgaWYgKGZs
YWdzVG9VcGRhdGUgJiBBY3Rpdml0eVN0YXRlOjpJc1Zpc2libGUgJiYgbV9wYWdlQ2xpZW50Lmlz
Vmlld1Zpc2libGUoKSkKKyAgICAgICAgbV9hY3Rpdml0eVN0YXRlIHw9IEFjdGl2aXR5U3RhdGU6
OklzVmlzaWJsZTsKKyAgICBpZiAoZmxhZ3NUb1VwZGF0ZSAmIEFjdGl2aXR5U3RhdGU6OklzVmlz
aWJsZU9yT2NjbHVkZWQgJiYgbV9wYWdlQ2xpZW50LmlzVmlld1Zpc2libGVPck9jY2x1ZGVkKCkp
CisgICAgICAgIG1fYWN0aXZpdHlTdGF0ZSB8PSBBY3Rpdml0eVN0YXRlOjpJc1Zpc2libGVPck9j
Y2x1ZGVkOworICAgIGlmIChmbGFnc1RvVXBkYXRlICYgQWN0aXZpdHlTdGF0ZTo6SXNJbldpbmRv
dyAmJiBtX3BhZ2VDbGllbnQuaXNWaWV3SW5XaW5kb3coKSkKKyAgICAgICAgbV9hY3Rpdml0eVN0
YXRlIHw9IEFjdGl2aXR5U3RhdGU6OklzSW5XaW5kb3c7CisgICAgaWYgKGZsYWdzVG9VcGRhdGUg
JiBBY3Rpdml0eVN0YXRlOjpJc1Zpc3VhbGx5SWRsZSAmJiBtX3BhZ2VDbGllbnQuaXNWaXN1YWxs
eUlkbGUoKSkKKyAgICAgICAgbV9hY3Rpdml0eVN0YXRlIHw9IEFjdGl2aXR5U3RhdGU6OklzVmlz
dWFsbHlJZGxlOwogfQogCi12b2lkIFdlYlBhZ2VQcm94eTo6dmlld1N0YXRlRGlkQ2hhbmdlKFZp
ZXdTdGF0ZTo6RmxhZ3MgbWF5SGF2ZUNoYW5nZWQsIGJvb2wgd2FudHNTeW5jaHJvbm91c1JlcGx5
LCBWaWV3U3RhdGVDaGFuZ2VEaXNwYXRjaE1vZGUgZGlzcGF0Y2hNb2RlKQordm9pZCBXZWJQYWdl
UHJveHk6OmFjdGl2aXR5U3RhdGVEaWRDaGFuZ2UoQWN0aXZpdHlTdGF0ZTo6RmxhZ3MgbWF5SGF2
ZUNoYW5nZWQsIGJvb2wgd2FudHNTeW5jaHJvbm91c1JlcGx5LCBBY3Rpdml0eVN0YXRlQ2hhbmdl
RGlzcGF0Y2hNb2RlIGRpc3BhdGNoTW9kZSkKIHsKLSAgICBtX3BvdGVudGlhbGx5Q2hhbmdlZFZp
ZXdTdGF0ZUZsYWdzIHw9IG1heUhhdmVDaGFuZ2VkOwotICAgIG1fdmlld1N0YXRlQ2hhbmdlV2Fu
dHNTeW5jaHJvbm91c1JlcGx5ID0gbV92aWV3U3RhdGVDaGFuZ2VXYW50c1N5bmNocm9ub3VzUmVw
bHkgfHwgd2FudHNTeW5jaHJvbm91c1JlcGx5OworICAgIG1fcG90ZW50aWFsbHlDaGFuZ2VkQWN0
aXZpdHlTdGF0ZUZsYWdzIHw9IG1heUhhdmVDaGFuZ2VkOworICAgIG1fYWN0aXZpdHlTdGF0ZUNo
YW5nZVdhbnRzU3luY2hyb25vdXNSZXBseSA9IG1fYWN0aXZpdHlTdGF0ZUNoYW5nZVdhbnRzU3lu
Y2hyb25vdXNSZXBseSB8fCB3YW50c1N5bmNocm9ub3VzUmVwbHk7CiAKLSAgICBpZiAobV9zdXBw
cmVzc1Zpc2liaWxpdHlVcGRhdGVzICYmIGRpc3BhdGNoTW9kZSAhPSBWaWV3U3RhdGVDaGFuZ2VE
aXNwYXRjaE1vZGU6OkltbWVkaWF0ZSkKKyAgICBpZiAobV9zdXBwcmVzc1Zpc2liaWxpdHlVcGRh
dGVzICYmIGRpc3BhdGNoTW9kZSAhPSBBY3Rpdml0eVN0YXRlQ2hhbmdlRGlzcGF0Y2hNb2RlOjpJ
bW1lZGlhdGUpCiAgICAgICAgIHJldHVybjsKIAogI2lmIFBMQVRGT1JNKENPQ09BKQotICAgIGJv
b2wgaXNOZXdseUluV2luZG93ID0gIWlzSW5XaW5kb3coKSAmJiAobWF5SGF2ZUNoYW5nZWQgJiBW
aWV3U3RhdGU6OklzSW5XaW5kb3cpICYmIG1fcGFnZUNsaWVudC5pc1ZpZXdJbldpbmRvdygpOwot
ICAgIGlmIChkaXNwYXRjaE1vZGUgPT0gVmlld1N0YXRlQ2hhbmdlRGlzcGF0Y2hNb2RlOjpJbW1l
ZGlhdGUgfHwgaXNOZXdseUluV2luZG93KSB7Ci0gICAgICAgIGRpc3BhdGNoVmlld1N0YXRlQ2hh
bmdlKCk7CisgICAgYm9vbCBpc05ld2x5SW5XaW5kb3cgPSAhaXNJbldpbmRvdygpICYmIChtYXlI
YXZlQ2hhbmdlZCAmIEFjdGl2aXR5U3RhdGU6OklzSW5XaW5kb3cpICYmIG1fcGFnZUNsaWVudC5p
c1ZpZXdJbldpbmRvdygpOworICAgIGlmIChkaXNwYXRjaE1vZGUgPT0gQWN0aXZpdHlTdGF0ZUNo
YW5nZURpc3BhdGNoTW9kZTo6SW1tZWRpYXRlIHx8IGlzTmV3bHlJbldpbmRvdykgeworICAgICAg
ICBkaXNwYXRjaEFjdGl2aXR5U3RhdGVDaGFuZ2UoKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0K
LSAgICBtX3ZpZXdTdGF0ZUNoYW5nZURpc3BhdGNoZXItPnNjaGVkdWxlKCk7CisgICAgbV9hY3Rp
dml0eVN0YXRlQ2hhbmdlRGlzcGF0Y2hlci0+c2NoZWR1bGUoKTsKICNlbHNlCiAgICAgVU5VU0VE
X1BBUkFNKGRpc3BhdGNoTW9kZSk7Ci0gICAgZGlzcGF0Y2hWaWV3U3RhdGVDaGFuZ2UoKTsKKyAg
ICBkaXNwYXRjaEFjdGl2aXR5U3RhdGVDaGFuZ2UoKTsKICNlbmRpZgogfQogCkBAIC0xNTEwLDU0
ICsxNTEwLDU0IEBAIHZvaWQgV2ViUGFnZVByb3h5Ojp2aWV3RGlkRW50ZXJXaW5kb3coKQogICAg
IH0KIH0KIAotdm9pZCBXZWJQYWdlUHJveHk6OmRpc3BhdGNoVmlld1N0YXRlQ2hhbmdlKCkKK3Zv
aWQgV2ViUGFnZVByb3h5OjpkaXNwYXRjaEFjdGl2aXR5U3RhdGVDaGFuZ2UoKQogewogI2lmIFBM
QVRGT1JNKENPQ09BKQotICAgIG1fdmlld1N0YXRlQ2hhbmdlRGlzcGF0Y2hlci0+aW52YWxpZGF0
ZSgpOworICAgIG1fYWN0aXZpdHlTdGF0ZUNoYW5nZURpc3BhdGNoZXItPmludmFsaWRhdGUoKTsK
ICNlbmRpZgogCiAgICAgaWYgKCFpc1ZhbGlkKCkpCiAgICAgICAgIHJldHVybjsKIAogICAgIC8v
IElmIHRoZSB2aXNpYmlsaXR5IHN0YXRlIG1heSBoYXZlIGNoYW5nZWQsIHRoZW4gc28gbWF5IHRo
ZSB2aXN1YWxseSBpZGxlICYgb2NjbHVkZWQgYWdub3N0aWMgc3RhdGUuCi0gICAgaWYgKG1fcG90
ZW50aWFsbHlDaGFuZ2VkVmlld1N0YXRlRmxhZ3MgJiBWaWV3U3RhdGU6OklzVmlzaWJsZSkKLSAg
ICAgICAgbV9wb3RlbnRpYWxseUNoYW5nZWRWaWV3U3RhdGVGbGFncyB8PSBWaWV3U3RhdGU6Oklz
VmlzaWJsZU9yT2NjbHVkZWQgfCBWaWV3U3RhdGU6OklzVmlzdWFsbHlJZGxlOworICAgIGlmICht
X3BvdGVudGlhbGx5Q2hhbmdlZEFjdGl2aXR5U3RhdGVGbGFncyAmIEFjdGl2aXR5U3RhdGU6Oklz
VmlzaWJsZSkKKyAgICAgICAgbV9wb3RlbnRpYWxseUNoYW5nZWRBY3Rpdml0eVN0YXRlRmxhZ3Mg
fD0gQWN0aXZpdHlTdGF0ZTo6SXNWaXNpYmxlT3JPY2NsdWRlZCB8IEFjdGl2aXR5U3RhdGU6Oklz
VmlzdWFsbHlJZGxlOwogCiAgICAgLy8gUmVjb3JkIHRoZSBwcmlvciB2aWV3IHN0YXRlLCB1cGRh
dGUgdGhlIGZsYWdzIHRoYXQgbWF5IGhhdmUgY2hhbmdlZCwKICAgICAvLyBhbmQgY2hlY2sgd2hp
Y2ggZmxhZ3MgaGF2ZSBhY3R1YWxseSBjaGFuZ2VkLgotICAgIFZpZXdTdGF0ZTo6RmxhZ3MgcHJl
dmlvdXNWaWV3U3RhdGUgPSBtX3ZpZXdTdGF0ZTsKLSAgICB1cGRhdGVWaWV3U3RhdGUobV9wb3Rl
bnRpYWxseUNoYW5nZWRWaWV3U3RhdGVGbGFncyk7Ci0gICAgVmlld1N0YXRlOjpGbGFncyBjaGFu
Z2VkID0gbV92aWV3U3RhdGUgXiBwcmV2aW91c1ZpZXdTdGF0ZTsKKyAgICBBY3Rpdml0eVN0YXRl
OjpGbGFncyBwcmV2aW91c0FjdGl2aXR5U3RhdGUgPSBtX2FjdGl2aXR5U3RhdGU7CisgICAgdXBk
YXRlQWN0aXZpdHlTdGF0ZShtX3BvdGVudGlhbGx5Q2hhbmdlZEFjdGl2aXR5U3RhdGVGbGFncyk7
CisgICAgQWN0aXZpdHlTdGF0ZTo6RmxhZ3MgY2hhbmdlZCA9IG1fYWN0aXZpdHlTdGF0ZSBeIHBy
ZXZpb3VzQWN0aXZpdHlTdGF0ZTsKIAotICAgIGJvb2wgaXNOb3dJbldpbmRvdyA9IChjaGFuZ2Vk
ICYgVmlld1N0YXRlOjpJc0luV2luZG93KSAmJiBpc0luV2luZG93KCk7CisgICAgYm9vbCBpc05v
d0luV2luZG93ID0gKGNoYW5nZWQgJiBBY3Rpdml0eVN0YXRlOjpJc0luV2luZG93KSAmJiBpc0lu
V2luZG93KCk7CiAgICAgLy8gV2UgYWx3YXlzIHdhbnQgdG8gd2FpdCBmb3IgdGhlIFdlYiBwcm9j
ZXNzIHRvIHJlcGx5IGlmIHdlJ3ZlIGJlZW4gaW4td2luZG93IGJlZm9yZSBhbmQgYXJlIGNvbWlu
ZyBiYWNrIGluLXdpbmRvdy4KICAgICBpZiAobV92aWV3V2FzRXZlckluV2luZG93ICYmIGlzTm93
SW5XaW5kb3cgJiYgbV9kcmF3aW5nQXJlYS0+aGFzVmlzaWJsZUNvbnRlbnQoKSAmJiBtX3dhaXRz
Rm9yUGFpbnRBZnRlclZpZXdEaWRNb3ZlVG9XaW5kb3cpCi0gICAgICAgIG1fdmlld1N0YXRlQ2hh
bmdlV2FudHNTeW5jaHJvbm91c1JlcGx5ID0gdHJ1ZTsKKyAgICAgICAgbV9hY3Rpdml0eVN0YXRl
Q2hhbmdlV2FudHNTeW5jaHJvbm91c1JlcGx5ID0gdHJ1ZTsKIAogICAgIC8vIERvbid0IHdhaXQg
c3luY2hyb25vdXNseSBpZiB0aGUgdmlldyBzdGF0ZSBpcyBub3QgdmlzaWJsZS4gKFRoaXMgbWF0
dGVycyBpbiBwYXJ0aWN1bGFyIG9uIGlPUywgd2hlcmUgYSBoaWRkZW4gcGFnZSBtYXkgYmUgc3Vz
cGVuZGVkLikKLSAgICBpZiAoIShtX3ZpZXdTdGF0ZSAmIFZpZXdTdGF0ZTo6SXNWaXNpYmxlKSkK
LSAgICAgICAgbV92aWV3U3RhdGVDaGFuZ2VXYW50c1N5bmNocm9ub3VzUmVwbHkgPSBmYWxzZTsK
KyAgICBpZiAoIShtX2FjdGl2aXR5U3RhdGUgJiBBY3Rpdml0eVN0YXRlOjpJc1Zpc2libGUpKQor
ICAgICAgICBtX2FjdGl2aXR5U3RhdGVDaGFuZ2VXYW50c1N5bmNocm9ub3VzUmVwbHkgPSBmYWxz
ZTsKIAotICAgIGlmIChjaGFuZ2VkIHx8IG1fdmlld1N0YXRlQ2hhbmdlV2FudHNTeW5jaHJvbm91
c1JlcGx5IHx8ICFtX25leHRWaWV3U3RhdGVDaGFuZ2VDYWxsYmFja3MuaXNFbXB0eSgpKQotICAg
ICAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNldFZpZXdTdGF0ZShtX3Zp
ZXdTdGF0ZSwgbV92aWV3U3RhdGVDaGFuZ2VXYW50c1N5bmNocm9ub3VzUmVwbHksIG1fbmV4dFZp
ZXdTdGF0ZUNoYW5nZUNhbGxiYWNrcyksIG1fcGFnZUlEKTsKKyAgICBpZiAoY2hhbmdlZCB8fCBt
X2FjdGl2aXR5U3RhdGVDaGFuZ2VXYW50c1N5bmNocm9ub3VzUmVwbHkgfHwgIW1fbmV4dEFjdGl2
aXR5U3RhdGVDaGFuZ2VDYWxsYmFja3MuaXNFbXB0eSgpKQorICAgICAgICBtX3Byb2Nlc3MtPnNl
bmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNldEFjdGl2aXR5U3RhdGUobV9hY3Rpdml0eVN0YXRlLCBt
X2FjdGl2aXR5U3RhdGVDaGFuZ2VXYW50c1N5bmNocm9ub3VzUmVwbHksIG1fbmV4dEFjdGl2aXR5
U3RhdGVDaGFuZ2VDYWxsYmFja3MpLCBtX3BhZ2VJRCk7CiAKLSAgICBtX25leHRWaWV3U3RhdGVD
aGFuZ2VDYWxsYmFja3MuY2xlYXIoKTsKKyAgICBtX25leHRBY3Rpdml0eVN0YXRlQ2hhbmdlQ2Fs
bGJhY2tzLmNsZWFyKCk7CiAKLSAgICAvLyBUaGlzIG11c3QgaGFwcGVuIGFmdGVyIHRoZSBTZXRW
aWV3U3RhdGUgbWVzc2FnZSBpcyBzZW50LCB0byBlbnN1cmUgdGhlIHBhZ2UgdmlzaWJpbGl0eSBl
dmVudCBjYW4gZmlyZS4KKyAgICAvLyBUaGlzIG11c3QgaGFwcGVuIGFmdGVyIHRoZSBTZXRBY3Rp
dml0eVN0YXRlIG1lc3NhZ2UgaXMgc2VudCwgdG8gZW5zdXJlIHRoZSBwYWdlIHZpc2liaWxpdHkg
ZXZlbnQgY2FuIGZpcmUuCiAgICAgdXBkYXRlVGhyb3R0bGVTdGF0ZSgpOwogCiAgICAgLy8gSWYg
d2UndmUgc3RhcnRlZCB0aGUgcmVzcG9uc2l2ZW5lc3MgdGltZXIgYXMgcGFydCBvZiB0ZWxsaW5n
IHRoZSB3ZWIgcHJvY2VzcyB0byB1cGRhdGUgdGhlIGJhY2tpbmcgc3RvcmUKICAgICAvLyBzdGF0
ZSwgaXQgbWlnaHQgbm90IHNlbmQgYmFjayBhIHJlcGx5IChzaW5jZSBpdCB3b24ndCBwYWludCBh
bnl0aGluZyBpZiB0aGUgd2ViIHBhZ2UgaXMgaGlkZGVuKSBzbyB3ZQogICAgIC8vIHN0b3AgdGhl
IHVucmVzcG9uc2l2ZW5lc3MgdGltZXIgaGVyZS4KLSAgICBpZiAoKGNoYW5nZWQgJiBWaWV3U3Rh
dGU6OklzVmlzaWJsZSkgJiYgIWlzVmlld1Zpc2libGUoKSkKKyAgICBpZiAoKGNoYW5nZWQgJiBB
Y3Rpdml0eVN0YXRlOjpJc1Zpc2libGUpICYmICFpc1ZpZXdWaXNpYmxlKCkpCiAgICAgICAgIG1f
cHJvY2Vzcy0+cmVzcG9uc2l2ZW5lc3NUaW1lcigpLnN0b3AoKTsKIAogI2lmIEVOQUJMRShQT0lO
VEVSX0xPQ0spCi0gICAgaWYgKChjaGFuZ2VkICYgVmlld1N0YXRlOjpJc1Zpc2libGUpICYmICFp
c1ZpZXdWaXNpYmxlKCkpCisgICAgaWYgKChjaGFuZ2VkICYgQWN0aXZpdHlTdGF0ZTo6SXNWaXNp
YmxlKSAmJiAhaXNWaWV3VmlzaWJsZSgpKQogICAgICAgICByZXF1ZXN0UG9pbnRlclVubG9jaygp
OwogI2VuZGlmCiAKLSAgICBpZiAoY2hhbmdlZCAmIFZpZXdTdGF0ZTo6SXNJbldpbmRvdykgewor
ICAgIGlmIChjaGFuZ2VkICYgQWN0aXZpdHlTdGF0ZTo6SXNJbldpbmRvdykgewogICAgICAgICBp
ZiAoaXNJbldpbmRvdygpKQogICAgICAgICAgICAgdmlld0RpZEVudGVyV2luZG93KCk7CiAgICAg
ICAgIGVsc2UKQEAgLTE1NjYsMTEgKzE1NjYsMTEgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmRpc3Bh
dGNoVmlld1N0YXRlQ2hhbgogCiAgICAgdXBkYXRlQmFja2luZ1N0b3JlRGlzY2FyZGFibGVTdGF0
ZSgpOwogCi0gICAgaWYgKG1fdmlld1N0YXRlQ2hhbmdlV2FudHNTeW5jaHJvbm91c1JlcGx5KQot
ICAgICAgICB3YWl0Rm9yRGlkVXBkYXRlVmlld1N0YXRlKCk7CisgICAgaWYgKG1fYWN0aXZpdHlT
dGF0ZUNoYW5nZVdhbnRzU3luY2hyb25vdXNSZXBseSkKKyAgICAgICAgd2FpdEZvckRpZFVwZGF0
ZUFjdGl2aXR5U3RhdGUoKTsKIAotICAgIG1fcG90ZW50aWFsbHlDaGFuZ2VkVmlld1N0YXRlRmxh
Z3MgPSBWaWV3U3RhdGU6Ok5vRmxhZ3M7Ci0gICAgbV92aWV3U3RhdGVDaGFuZ2VXYW50c1N5bmNo
cm9ub3VzUmVwbHkgPSBmYWxzZTsKKyAgICBtX3BvdGVudGlhbGx5Q2hhbmdlZEFjdGl2aXR5U3Rh
dGVGbGFncyA9IEFjdGl2aXR5U3RhdGU6Ok5vRmxhZ3M7CisgICAgbV9hY3Rpdml0eVN0YXRlQ2hh
bmdlV2FudHNTeW5jaHJvbm91c1JlcGx5ID0gZmFsc2U7CiAgICAgbV92aWV3V2FzRXZlckluV2lu
ZG93IHw9IGlzTm93SW5XaW5kb3c7CiB9CiAKQEAgLTE1OTIsMTMgKzE1OTIsMTMgQEAgdm9pZCBX
ZWJQYWdlUHJveHk6OnVwZGF0ZVRocm90dGxlU3RhdGUoKQogICAgIC8vIFdlIHNob3VsZCBzdXBw
cmVzcyBpZiB0aGUgcGFnZSBpcyBub3QgYWN0aXZlLCBpcyB2aXN1YWxseSBpZGxlLCBhbmQgc3Vw
cmVzc2lvbiBpcyBlbmFibGVkLgogICAgIGJvb2wgaXNMb2FkaW5nID0gbV9wYWdlTG9hZFN0YXRl
LmlzTG9hZGluZygpOwogICAgIGJvb2wgaXNQbGF5aW5nQXVkaW8gPSBtX21lZGlhU3RhdGUgJiBN
ZWRpYVByb2R1Y2VyOjpJc1BsYXlpbmdBdWRpbyAmJiAhKG1fbXV0ZWRTdGF0ZSAmIE1lZGlhUHJv
ZHVjZXI6OkF1ZGlvSXNNdXRlZCk7Ci0gICAgYm9vbCBwYWdlU2hvdWxkQmVTdXBwcmVzc2VkID0g
IWlzTG9hZGluZyAmJiAhaXNQbGF5aW5nQXVkaW8gJiYgcHJvY2Vzc1N1cHByZXNzaW9uRW5hYmxl
ZCAmJiAobV92aWV3U3RhdGUgJiBWaWV3U3RhdGU6OklzVmlzdWFsbHlJZGxlKTsKKyAgICBib29s
IHBhZ2VTaG91bGRCZVN1cHByZXNzZWQgPSAhaXNMb2FkaW5nICYmICFpc1BsYXlpbmdBdWRpbyAm
JiBwcm9jZXNzU3VwcHJlc3Npb25FbmFibGVkICYmIChtX2FjdGl2aXR5U3RhdGUgJiBBY3Rpdml0
eVN0YXRlOjpJc1Zpc3VhbGx5SWRsZSk7CiAgICAgaWYgKG1fcGFnZVN1cHByZXNzZWQgIT0gcGFn
ZVNob3VsZEJlU3VwcHJlc3NlZCkgewogICAgICAgICBtX3BhZ2VTdXBwcmVzc2VkID0gcGFnZVNo
b3VsZEJlU3VwcHJlc3NlZDsKICAgICAgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQ
YWdlOjpTZXRQYWdlU3VwcHJlc3NlZChtX3BhZ2VTdXBwcmVzc2VkKSwgbV9wYWdlSUQpOwogICAg
IH0KIAotICAgIGlmIChtX3ZpZXdTdGF0ZSAmIFZpZXdTdGF0ZTo6SXNWaXN1YWxseUlkbGUpCisg
ICAgaWYgKG1fYWN0aXZpdHlTdGF0ZSAmIEFjdGl2aXR5U3RhdGU6OklzVmlzdWFsbHlJZGxlKQog
ICAgICAgICBtX3BhZ2VJc1VzZXJPYnNlcnZhYmxlQ291bnQgPSBudWxscHRyOwogICAgIGVsc2Ug
aWYgKCFtX3BhZ2VJc1VzZXJPYnNlcnZhYmxlQ291bnQpCiAgICAgICAgIG1fcGFnZUlzVXNlck9i
c2VydmFibGVDb3VudCA9IG1fcHJvY2Vzcy0+cHJvY2Vzc1Bvb2woKS51c2VyT2JzZXJ2YWJsZVBh
Z2VDb3VudCgpOwpAQCAtMTY0MCw3ICsxNjQwLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmxheWVy
SG9zdGluZ01vZGVEaWRDaAogICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6
U2V0TGF5ZXJIb3N0aW5nTW9kZShsYXllckhvc3RpbmdNb2RlKSwgbV9wYWdlSUQpOwogfQogCi12
b2lkIFdlYlBhZ2VQcm94eTo6d2FpdEZvckRpZFVwZGF0ZVZpZXdTdGF0ZSgpCit2b2lkIFdlYlBh
Z2VQcm94eTo6d2FpdEZvckRpZFVwZGF0ZUFjdGl2aXR5U3RhdGUoKQogewogICAgIGlmICghaXNW
YWxpZCgpKQogICAgICAgICByZXR1cm47CkBAIC0xNjQ5LDExICsxNjQ5LDExIEBAIHZvaWQgV2Vi
UGFnZVByb3h5Ojp3YWl0Rm9yRGlkVXBkYXRlVmlld1MKICAgICAgICAgcmV0dXJuOwogCiAgICAg
Ly8gSWYgd2UgaGF2ZSBwcmV2aW91c2x5IHRpbWVkIG91dCB3aXRoIG5vIHJlc3BvbnNlIGZyb20g
dGhlIFdlYlByb2Nlc3MsIGRvbid0IGJsb2NrIHRoZSBVSVByb2Nlc3MgYWdhaW4gdW50aWwgaXQg
c3RhcnRzIHJlc3BvbmRpbmcuCi0gICAgaWYgKG1fd2FpdGluZ0ZvckRpZFVwZGF0ZVZpZXdTdGF0
ZSkKKyAgICBpZiAobV93YWl0aW5nRm9yRGlkVXBkYXRlQWN0aXZpdHlTdGF0ZSkKICAgICAgICAg
cmV0dXJuOwogCiAjaWYgUExBVEZPUk0oSU9TKQotICAgIC8vIEhhaWwgTWFyeSBjaGVjay4gU2hv
dWxkIG5vdCBiZSBwb3NzaWJsZSAoZGlzcGF0Y2hWaWV3U3RhdGVDaGFuZ2Ugc2hvdWxkIGZvcmNl
IGFzeW5jIGlmIG5vdCB2aXNpYmxlLAorICAgIC8vIEhhaWwgTWFyeSBjaGVjay4gU2hvdWxkIG5v
dCBiZSBwb3NzaWJsZSAoZGlzcGF0Y2hBY3Rpdml0eVN0YXRlQ2hhbmdlIHNob3VsZCBmb3JjZSBh
c3luYyBpZiBub3QgdmlzaWJsZSwKICAgICAvLyBhbmQgaWYgdmlzaWJsZSB3ZSBzaG91bGQgYmUg
aG9sZGluZyBhbiBhc3NlcnRpb24pIC0gYnV0IHdlIHNob3VsZCBuZXZlciBibG9jayBvbiBhIHN1
c3BlbmRlZCBwcm9jZXNzLgogICAgIGlmICghbV9hY3Rpdml0eVRva2VuKSB7CiAgICAgICAgIEFT
U0VSVF9OT1RfUkVBQ0hFRCgpOwpAQCAtMTY2MSw5ICsxNjYxLDkgQEAgdm9pZCBXZWJQYWdlUHJv
eHk6OndhaXRGb3JEaWRVcGRhdGVWaWV3UwogICAgIH0KICNlbmRpZgogCi0gICAgbV93YWl0aW5n
Rm9yRGlkVXBkYXRlVmlld1N0YXRlID0gdHJ1ZTsKKyAgICBtX3dhaXRpbmdGb3JEaWRVcGRhdGVB
Y3Rpdml0eVN0YXRlID0gdHJ1ZTsKIAotICAgIG1fZHJhd2luZ0FyZWEtPndhaXRGb3JEaWRVcGRh
dGVWaWV3U3RhdGUoKTsKKyAgICBtX2RyYXdpbmdBcmVhLT53YWl0Rm9yRGlkVXBkYXRlQWN0aXZp
dHlTdGF0ZSgpOwogfQogCiBJbnRTaXplIFdlYlBhZ2VQcm94eTo6dmlld1NpemUoKSBjb25zdApA
QCAtNTQ2Myw3ICs1NDYzLDcgQEAgV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycyBXZWJQYWdlUHJv
eHk6OgogICAgIFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMgcGFyYW1ldGVyczsKIAogICAgIHBh
cmFtZXRlcnMudmlld1NpemUgPSBtX3BhZ2VDbGllbnQudmlld1NpemUoKTsKLSAgICBwYXJhbWV0
ZXJzLnZpZXdTdGF0ZSA9IG1fdmlld1N0YXRlOworICAgIHBhcmFtZXRlcnMuYWN0aXZpdHlTdGF0
ZSA9IG1fYWN0aXZpdHlTdGF0ZTsKICAgICBwYXJhbWV0ZXJzLmRyYXdpbmdBcmVhVHlwZSA9IG1f
ZHJhd2luZ0FyZWEtPnR5cGUoKTsKICAgICBwYXJhbWV0ZXJzLnN0b3JlID0gcHJlZmVyZW5jZXNT
dG9yZSgpOwogICAgIHBhcmFtZXRlcnMucGFnZUdyb3VwRGF0YSA9IG1fcGFnZUdyb3VwLT5kYXRh
KCk7CkBAIC02NDc0LDcgKzY0NzQsNyBAQCB2b2lkKiBXZWJQYWdlUHJveHk6OmltbWVkaWF0ZUFj
dGlvbkFuaW1hCiAgICAgcmV0dXJuIG1fcGFnZUNsaWVudC5pbW1lZGlhdGVBY3Rpb25BbmltYXRp
b25Db250cm9sbGVyRm9ySGl0VGVzdFJlc3VsdChoaXRUZXN0UmVzdWx0LCB0eXBlLCB1c2VyRGF0
YSk7CiB9CiAKLXZvaWQgV2ViUGFnZVByb3h5OjppbnN0YWxsVmlld1N0YXRlQ2hhbmdlQ29tcGxl
dGlvbkhhbmRsZXIodm9pZCAoXmNvbXBsZXRpb25IYW5kbGVyKSgpKQordm9pZCBXZWJQYWdlUHJv
eHk6Omluc3RhbGxBY3Rpdml0eVN0YXRlQ2hhbmdlQ29tcGxldGlvbkhhbmRsZXIodm9pZCAoXmNv
bXBsZXRpb25IYW5kbGVyKSgpKQogewogICAgIGlmICghaXNWYWxpZCgpKSB7CiAgICAgICAgIGNv
bXBsZXRpb25IYW5kbGVyKCk7CkBAIC02NDg3LDcgKzY0ODcsNyBAQCB2b2lkIFdlYlBhZ2VQcm94
eTo6aW5zdGFsbFZpZXdTdGF0ZUNoYW5nCiAgICAgICAgIEJsb2NrX3JlbGVhc2UoY29waWVkQ29t
cGxldGlvbkhhbmRsZXIpOwogICAgIH0sIG1fcHJvY2Vzcy0+dGhyb3R0bGVyKCkuYmFja2dyb3Vu
ZEFjdGl2aXR5VG9rZW4oKSk7CiAgICAgdWludDY0X3QgY2FsbGJhY2tJRCA9IG1fY2FsbGJhY2tz
LnB1dChXVEZNb3ZlKHZvaWRDYWxsYmFjaykpOwotICAgIG1fbmV4dFZpZXdTdGF0ZUNoYW5nZUNh
bGxiYWNrcy5hcHBlbmQoY2FsbGJhY2tJRCk7CisgICAgbV9uZXh0QWN0aXZpdHlTdGF0ZUNoYW5n
ZUNhbGxiYWNrcy5hcHBlbmQoY2FsbGJhY2tJRCk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5Ojpo
YW5kbGVBY2NlcHRlZENhbmRpZGF0ZShXZWJDb3JlOjpUZXh0Q2hlY2tpbmdSZXN1bHQgYWNjZXB0
ZWRDYW5kaWRhdGUpCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5o
CShyZXZpc2lvbiAyMDgxOTcpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVBy
b3h5LmgJKHdvcmtpbmcgY29weSkKQEAgLTYwLDYgKzYwLDcgQEAKICNpbmNsdWRlICJXZWJQYWdl
UHJveHlNZXNzYWdlcy5oIgogI2luY2x1ZGUgIldlYlBvcHVwTWVudVByb3h5LmgiCiAjaW5jbHVk
ZSAiV2ViUHJvY2Vzc0xpZmV0aW1lVHJhY2tlci5oIgorI2luY2x1ZGUgPFdlYkNvcmUvQWN0aXZp
dHlTdGF0ZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvQ29sb3IuaD4KICNpbmNsdWRlIDxXZWJDb3Jl
L0RyYWdBY3Rpb25zLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9FdmVudFRyYWNraW5nUmVnaW9ucy5o
PgpAQCAtNzMsNyArNzQsNiBAQAogI2luY2x1ZGUgPFdlYkNvcmUvVGV4dENoZWNraW5nLmg+CiAj
aW5jbHVkZSA8V2ViQ29yZS9UZXh0R3JhbnVsYXJpdHkuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1Vz
ZXJJbnRlcmZhY2VMYXlvdXREaXJlY3Rpb24uaD4KLSNpbmNsdWRlIDxXZWJDb3JlL1ZpZXdTdGF0
ZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvVmlzaWJsZVNlbGVjdGlvbi5oPgogI2luY2x1ZGUgPG1l
bW9yeT4KICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgpAQCAtNDI4LDE2ICs0MjgsMTYgQEAgcHVi
bGljOgogICAgIHZvaWQgc2V0RGVsZWdhdGVzU2Nyb2xsaW5nKGJvb2wgZGVsZWdhdGVzU2Nyb2xs
aW5nKSB7IG1fZGVsZWdhdGVzU2Nyb2xsaW5nID0gZGVsZWdhdGVzU2Nyb2xsaW5nOyB9CiAgICAg
Ym9vbCBkZWxlZ2F0ZXNTY3JvbGxpbmcoKSBjb25zdCB7IHJldHVybiBtX2RlbGVnYXRlc1Njcm9s
bGluZzsgfQogCi0gICAgZW51bSBjbGFzcyBWaWV3U3RhdGVDaGFuZ2VEaXNwYXRjaE1vZGUgeyBE
ZWZlcnJhYmxlLCBJbW1lZGlhdGUgfTsKLSAgICB2b2lkIHZpZXdTdGF0ZURpZENoYW5nZShXZWJD
b3JlOjpWaWV3U3RhdGU6OkZsYWdzIG1heUhhdmVDaGFuZ2VkLCBib29sIHdhbnRzU3luY2hyb25v
dXNSZXBseSA9IGZhbHNlLCBWaWV3U3RhdGVDaGFuZ2VEaXNwYXRjaE1vZGUgPSBWaWV3U3RhdGVD
aGFuZ2VEaXNwYXRjaE1vZGU6OkRlZmVycmFibGUpOwotICAgIGJvb2wgaXNJbldpbmRvdygpIGNv
bnN0IHsgcmV0dXJuIG1fdmlld1N0YXRlICYgV2ViQ29yZTo6Vmlld1N0YXRlOjpJc0luV2luZG93
OyB9Ci0gICAgdm9pZCB3YWl0Rm9yRGlkVXBkYXRlVmlld1N0YXRlKCk7Ci0gICAgdm9pZCBkaWRV
cGRhdGVWaWV3U3RhdGUoKSB7IG1fd2FpdGluZ0ZvckRpZFVwZGF0ZVZpZXdTdGF0ZSA9IGZhbHNl
OyB9CisgICAgZW51bSBjbGFzcyBBY3Rpdml0eVN0YXRlQ2hhbmdlRGlzcGF0Y2hNb2RlIHsgRGVm
ZXJyYWJsZSwgSW1tZWRpYXRlIH07CisgICAgdm9pZCBhY3Rpdml0eVN0YXRlRGlkQ2hhbmdlKFdl
YkNvcmU6OkFjdGl2aXR5U3RhdGU6OkZsYWdzIG1heUhhdmVDaGFuZ2VkLCBib29sIHdhbnRzU3lu
Y2hyb25vdXNSZXBseSA9IGZhbHNlLCBBY3Rpdml0eVN0YXRlQ2hhbmdlRGlzcGF0Y2hNb2RlID0g
QWN0aXZpdHlTdGF0ZUNoYW5nZURpc3BhdGNoTW9kZTo6RGVmZXJyYWJsZSk7CisgICAgYm9vbCBp
c0luV2luZG93KCkgY29uc3QgeyByZXR1cm4gbV9hY3Rpdml0eVN0YXRlICYgV2ViQ29yZTo6QWN0
aXZpdHlTdGF0ZTo6SXNJbldpbmRvdzsgfQorICAgIHZvaWQgd2FpdEZvckRpZFVwZGF0ZUFjdGl2
aXR5U3RhdGUoKTsKKyAgICB2b2lkIGRpZFVwZGF0ZUFjdGl2aXR5U3RhdGUoKSB7IG1fd2FpdGlu
Z0ZvckRpZFVwZGF0ZUFjdGl2aXR5U3RhdGUgPSBmYWxzZTsgfQogCiAgICAgdm9pZCBsYXllckhv
c3RpbmdNb2RlRGlkQ2hhbmdlKCk7CiAKICAgICBXZWJDb3JlOjpJbnRTaXplIHZpZXdTaXplKCkg
Y29uc3Q7Ci0gICAgYm9vbCBpc1ZpZXdWaXNpYmxlKCkgY29uc3QgeyByZXR1cm4gbV92aWV3U3Rh
dGUgJiBXZWJDb3JlOjpWaWV3U3RhdGU6OklzVmlzaWJsZTsgfQorICAgIGJvb2wgaXNWaWV3Vmlz
aWJsZSgpIGNvbnN0IHsgcmV0dXJuIG1fYWN0aXZpdHlTdGF0ZSAmIFdlYkNvcmU6OkFjdGl2aXR5
U3RhdGU6OklzVmlzaWJsZTsgfQogICAgIGJvb2wgaXNWaWV3V2luZG93QWN0aXZlKCkgY29uc3Q7
CiAKICAgICB2b2lkIGFkZE1JTUVUeXBlV2l0aEN1c3RvbUNvbnRlbnRQcm92aWRlcihjb25zdCBT
dHJpbmcmIG1pbWVUeXBlKTsKQEAgLTEwNjYsNyArMTA2Niw3IEBAIHB1YmxpYzoKIAogICAgIHZv
aWQqIGltbWVkaWF0ZUFjdGlvbkFuaW1hdGlvbkNvbnRyb2xsZXJGb3JIaXRUZXN0UmVzdWx0KFJl
ZlB0cjxBUEk6OkhpdFRlc3RSZXN1bHQ+LCB1aW50NjRfdCwgUmVmUHRyPEFQSTo6T2JqZWN0Pik7
CiAKLSAgICB2b2lkIGluc3RhbGxWaWV3U3RhdGVDaGFuZ2VDb21wbGV0aW9uSGFuZGxlcih2b2lk
KF5jb21wbGV0aW9uSGFuZGxlcikoKSk7CisgICAgdm9pZCBpbnN0YWxsQWN0aXZpdHlTdGF0ZUNo
YW5nZUNvbXBsZXRpb25IYW5kbGVyKHZvaWQoXmNvbXBsZXRpb25IYW5kbGVyKSgpKTsKIAogICAg
IHZvaWQgaGFuZGxlQWNjZXB0ZWRDYW5kaWRhdGUoV2ViQ29yZTo6VGV4dENoZWNraW5nUmVzdWx0
KTsKICAgICB2b2lkIGRpZEhhbmRsZUFjY2VwdGVkQ2FuZGlkYXRlKCk7CkBAIC0xMTQ4LDcgKzEx
NDgsNyBAQCBwcml2YXRlOgogICAgIFdlYlBhZ2VQcm94eShQYWdlQ2xpZW50JiwgV2ViUHJvY2Vz
c1Byb3h5JiwgdWludDY0X3QgcGFnZUlELCBSZWY8QVBJOjpQYWdlQ29uZmlndXJhdGlvbj4mJik7
CiAgICAgdm9pZCBwbGF0Zm9ybUluaXRpYWxpemUoKTsKIAotICAgIHZvaWQgdXBkYXRlVmlld1N0
YXRlKFdlYkNvcmU6OlZpZXdTdGF0ZTo6RmxhZ3MgZmxhZ3NUb1VwZGF0ZSA9IFdlYkNvcmU6OlZp
ZXdTdGF0ZTo6QWxsRmxhZ3MpOworICAgIHZvaWQgdXBkYXRlQWN0aXZpdHlTdGF0ZShXZWJDb3Jl
OjpBY3Rpdml0eVN0YXRlOjpGbGFncyBmbGFnc1RvVXBkYXRlID0gV2ViQ29yZTo6QWN0aXZpdHlT
dGF0ZTo6QWxsRmxhZ3MpOwogICAgIHZvaWQgdXBkYXRlVGhyb3R0bGVTdGF0ZSgpOwogICAgIHZv
aWQgdXBkYXRlSGlkZGVuUGFnZVRocm90dGxpbmdBdXRvSW5jcmVhc2VzKCk7CiAKQEAgLTE1MzMs
NyArMTUzMyw3IEBAIHByaXZhdGU6CiAKICAgICBXZWJQcmVmZXJlbmNlc1N0b3JlIHByZWZlcmVu
Y2VzU3RvcmUoKSBjb25zdDsKIAotICAgIHZvaWQgZGlzcGF0Y2hWaWV3U3RhdGVDaGFuZ2UoKTsK
KyAgICB2b2lkIGRpc3BhdGNoQWN0aXZpdHlTdGF0ZUNoYW5nZSgpOwogICAgIHZvaWQgdmlld0Rp
ZExlYXZlV2luZG93KCk7CiAgICAgdm9pZCB2aWV3RGlkRW50ZXJXaW5kb3coKTsKIApAQCAtMTY1
OCw3ICsxNjU4LDcgQEAgcHJpdmF0ZToKIAogICAgIFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0
TWFuYWdlclByb3h5IG1fdXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyOwogCi0gICAg
V2ViQ29yZTo6Vmlld1N0YXRlOjpGbGFncyBtX3ZpZXdTdGF0ZTsKKyAgICBXZWJDb3JlOjpBY3Rp
dml0eVN0YXRlOjpGbGFncyBtX2FjdGl2aXR5U3RhdGU7CiAgICAgYm9vbCBtX3ZpZXdXYXNFdmVy
SW5XaW5kb3c7CiAjaWYgUExBVEZPUk0oSU9TKQogICAgIGJvb2wgbV9hbGxvd3NNZWRpYURvY3Vt
ZW50SW5saW5lUGxheWJhY2sgeyBmYWxzZSB9OwpAQCAtMTg2MCwxNCArMTg2MCwxNCBAQCBwcml2
YXRlOgogICAgIFdlYkNvcmU6Ok1lZGlhUHJvZHVjZXI6Ok11dGVkU3RhdGVGbGFncyBtX211dGVk
U3RhdGUgeyBXZWJDb3JlOjpNZWRpYVByb2R1Y2VyOjpOb25lTXV0ZWQgfTsKICAgICBib29sIG1f
bWF5U3RhcnRNZWRpYVdoZW5JbldpbmRvdzsKIAotICAgIGJvb2wgbV93YWl0aW5nRm9yRGlkVXBk
YXRlVmlld1N0YXRlOworICAgIGJvb2wgbV93YWl0aW5nRm9yRGlkVXBkYXRlQWN0aXZpdHlTdGF0
ZTsKIAogICAgIGJvb2wgbV9zaG91bGRTY2FsZVZpZXdUb0ZpdERvY3VtZW50IHsgZmFsc2UgfTsK
ICAgICBib29sIG1fc3VwcHJlc3NBdXRvbWF0aWNOYXZpZ2F0aW9uU25hcHNob3R0aW5nIHsgZmFs
c2UgfTsKIAogI2lmIFBMQVRGT1JNKENPQ09BKQogICAgIEhhc2hNYXA8U3RyaW5nLCBTdHJpbmc+
IG1fdGVtcG9yYXJ5UERGRmlsZXM7Ci0gICAgc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6OlJ1bkxv
b3BPYnNlcnZlcj4gbV92aWV3U3RhdGVDaGFuZ2VEaXNwYXRjaGVyOworICAgIHN0ZDo6dW5pcXVl
X3B0cjxXZWJDb3JlOjpSdW5Mb29wT2JzZXJ2ZXI+IG1fYWN0aXZpdHlTdGF0ZUNoYW5nZURpc3Bh
dGNoZXI7CiAKICAgICBzdGQ6OnVuaXF1ZV9wdHI8UmVtb3RlTGF5ZXJUcmVlU2Nyb2xsaW5nUGVy
Zm9ybWFuY2VEYXRhPiBtX3Njcm9sbGluZ1BlcmZvcm1hbmNlRGF0YTsKICAgICBib29sIG1fc2Ny
b2xsUGVyZm9ybWFuY2VEYXRhQ29sbGVjdGlvbkVuYWJsZWQ7CkBAIC0xODgyLDkgKzE4ODIsOSBA
QCBwcml2YXRlOgogICAgIHVpbnQ2NF90IG1fbmF2aWdhdGlvbklEOwogCiAgICAgV2ViUHJlZmVy
ZW5jZXNTdG9yZTo6VmFsdWVNYXAgbV9jb25maWd1cmF0aW9uUHJlZmVyZW5jZVZhbHVlczsKLSAg
ICBXZWJDb3JlOjpWaWV3U3RhdGU6OkZsYWdzIG1fcG90ZW50aWFsbHlDaGFuZ2VkVmlld1N0YXRl
RmxhZ3M7Ci0gICAgYm9vbCBtX3ZpZXdTdGF0ZUNoYW5nZVdhbnRzU3luY2hyb25vdXNSZXBseTsK
LSAgICBWZWN0b3I8dWludDY0X3Q+IG1fbmV4dFZpZXdTdGF0ZUNoYW5nZUNhbGxiYWNrczsKKyAg
ICBXZWJDb3JlOjpBY3Rpdml0eVN0YXRlOjpGbGFncyBtX3BvdGVudGlhbGx5Q2hhbmdlZEFjdGl2
aXR5U3RhdGVGbGFnczsKKyAgICBib29sIG1fYWN0aXZpdHlTdGF0ZUNoYW5nZVdhbnRzU3luY2hy
b25vdXNSZXBseTsKKyAgICBWZWN0b3I8dWludDY0X3Q+IG1fbmV4dEFjdGl2aXR5U3RhdGVDaGFu
Z2VDYWxsYmFja3M7CiAKICAgICBXZWJDb3JlOjpNZWRpYVByb2R1Y2VyOjpNZWRpYVN0YXRlRmxh
Z3MgbV9tZWRpYVN0YXRlIHsgV2ViQ29yZTo6TWVkaWFQcm9kdWNlcjo6SXNOb3RQbGF5aW5nIH07
CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMu
aW4KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5t
ZXNzYWdlcy5pbgkocmV2aXNpb24gMjA4MTk3KQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbgkod29ya2luZyBjb3B5KQpAQCAtNDA3LDcgKzQwNyw3
IEBAIG1lc3NhZ2VzIC0+IFdlYlBhZ2VQcm94eSB7CiAgICAgRmluZFBsdWdpbihTdHJpbmcgbWlt
ZVR5cGUsIHVpbnQzMl90IHByb2Nlc3NUeXBlLCBTdHJpbmcgdXJsU3RyaW5nLCBTdHJpbmcgZnJh
bWVVUkxTdHJpbmcsIFN0cmluZyBwYWdlVVJMU3RyaW5nLCBib29sIGFsbG93T25seUFwcGxpY2F0
aW9uUGx1Z2lucykgLT4gKHVpbnQ2NF90IHBsdWdpblByb2Nlc3NUb2tlbiwgU3RyaW5nIG5ld01J
TUVUeXBlLCB1aW50MzJfdCBwbHVnaW5Mb2FkUG9saWN5LCBTdHJpbmcgdW5hdmFpbGFiaWxpdHlE
ZXNjcmlwdGlvbikKICNlbmRpZgogCi0gICAgRGlkVXBkYXRlVmlld1N0YXRlKCkKKyAgICBEaWRV
cGRhdGVBY3Rpdml0eVN0YXRlKCkKIAogICAgIERpZFNhdmVUb1BhZ2VDYWNoZSgpCiAKSW5kZXg6
IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwCShyZXZpc2lv
biAyMDgxOTcpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNw
cAkod29ya2luZyBjb3B5KQpAQCAtNzE1LDcgKzcxNSw3IEBAIHZvaWQgV2ViUHJvY2Vzc1Byb3h5
OjpyZWxlYXNlUGFnZUNhY2hlKCkKIHZvaWQgV2ViUHJvY2Vzc1Byb3h5Ojp3aW5kb3dTZXJ2ZXJD
b25uZWN0aW9uU3RhdGVDaGFuZ2VkKCkKIHsKICAgICBmb3IgKGNvbnN0IGF1dG8mIHBhZ2UgOiBt
X3BhZ2VNYXAudmFsdWVzKCkpCi0gICAgICAgIHBhZ2UtPnZpZXdTdGF0ZURpZENoYW5nZShWaWV3
U3RhdGU6OklzVmlzdWFsbHlJZGxlKTsKKyAgICAgICAgcGFnZS0+YWN0aXZpdHlTdGF0ZURpZENo
YW5nZShBY3Rpdml0eVN0YXRlOjpJc1Zpc3VhbGx5SWRsZSk7CiB9CiAKIHZvaWQgV2ViUHJvY2Vz
c1Byb3h5OjpmZXRjaFdlYnNpdGVEYXRhKFNlc3Npb25JRCBzZXNzaW9uSUQsIE9wdGlvblNldDxX
ZWJzaXRlRGF0YVR5cGU+IGRhdGFUeXBlcywgRnVuY3Rpb248dm9pZCAoV2Vic2l0ZURhdGEpPiBj
b21wbGV0aW9uSGFuZGxlcikKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29j
b2EvV0tXZWJWaWV3Lm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvQ29jb2EvV0tXZWJWaWV3Lm1tCShyZXZpc2lvbiAyMDgxOTcpCisrKyBTb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbQkod29ya2luZyBjb3B5KQpAQCAtMTcz
MCw3ICsxNzMwLDcgQEAgLSAoQk9PTClfem9vbVRvUmVjdDooV2ViQ29yZTo6RmxvYXRSZWN0KQog
CiAtICh2b2lkKWRpZE1vdmVUb1dpbmRvdwogewotICAgIF9wYWdlLT52aWV3U3RhdGVEaWRDaGFu
Z2UoV2ViQ29yZTo6Vmlld1N0YXRlOjpBbGxGbGFncyk7CisgICAgX3BhZ2UtPmFjdGl2aXR5U3Rh
dGVEaWRDaGFuZ2UoV2ViQ29yZTo6QWN0aXZpdHlTdGF0ZTo6QWxsRmxhZ3MpOwogfQogCiAtICh2
b2lkKXNldE9wYXF1ZTooQk9PTClvcGFxdWUKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvZ3RrL1dlYktpdFdlYlZpZXdCYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3QmFzZS5jcHAJKHJldmlzaW9uIDIw
ODE5NykKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXdC
YXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzEsNiArMzEsNyBAQAogCiAjaW5jbHVkZSAiQVBJ
UGFnZUNvbmZpZ3VyYXRpb24uaCIKICNpbmNsdWRlICJBY2NlbGVyYXRlZEJhY2tpbmdTdG9yZS5o
IgorI2luY2x1ZGUgIkFjdGl2aXR5U3RhdGUuaCIKICNpbmNsdWRlICJEcmF3aW5nQXJlYVByb3h5
SW1wbC5oIgogI2luY2x1ZGUgIklucHV0TWV0aG9kRmlsdGVyLmgiCiAjaW5jbHVkZSAiS2V5Qmlu
ZGluZ1RyYW5zbGF0b3IuaCIKQEAgLTM4LDcgKzM5LDYgQEAKICNpbmNsdWRlICJOYXRpdmVXZWJN
b3VzZUV2ZW50LmgiCiAjaW5jbHVkZSAiTmF0aXZlV2ViV2hlZWxFdmVudC5oIgogI2luY2x1ZGUg
IlBhZ2VDbGllbnRJbXBsLmgiCi0jaW5jbHVkZSAiVmlld1N0YXRlLmgiCiAjaW5jbHVkZSAiV2Vi
RXZlbnRGYWN0b3J5LmgiCiAjaW5jbHVkZSAiV2ViRnVsbFNjcmVlbkNsaWVudEd0ay5oIgogI2lu
Y2x1ZGUgIldlYkluc3BlY3RvclByb3h5LmgiCkBAIC0xNDYsMTYgKzE0NiwxNiBAQCB0eXBlZGVm
IEhhc2hNYXA8dWludDMyX3QsIEdVbmlxdWVQdHI8R2RrCiAKIHN0cnVjdCBfV2ViS2l0V2ViVmll
d0Jhc2VQcml2YXRlIHsKICAgICBfV2ViS2l0V2ViVmlld0Jhc2VQcml2YXRlKCkKLSAgICAgICAg
OiB1cGRhdGVWaWV3U3RhdGVUaW1lcihSdW5Mb29wOjptYWluKCksIHRoaXMsICZfV2ViS2l0V2Vi
Vmlld0Jhc2VQcml2YXRlOjp1cGRhdGVWaWV3U3RhdGVUaW1lckZpcmVkKQorICAgICAgICA6IHVw
ZGF0ZUFjdGl2aXR5U3RhdGVUaW1lcihSdW5Mb29wOjptYWluKCksIHRoaXMsICZfV2ViS2l0V2Vi
Vmlld0Jhc2VQcml2YXRlOjp1cGRhdGVBY3Rpdml0eVN0YXRlVGltZXJGaXJlZCkKICAgICB7CiAg
ICAgfQogCi0gICAgdm9pZCB1cGRhdGVWaWV3U3RhdGVUaW1lckZpcmVkKCkKKyAgICB2b2lkIHVw
ZGF0ZUFjdGl2aXR5U3RhdGVUaW1lckZpcmVkKCkKICAgICB7CiAgICAgICAgIGlmICghcGFnZVBy
b3h5KQogICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICBwYWdlUHJveHktPnZpZXdTdGF0ZURp
ZENoYW5nZSh2aWV3U3RhdGVGbGFnc1RvVXBkYXRlKTsKLSAgICAgICAgdmlld1N0YXRlRmxhZ3NU
b1VwZGF0ZSA9IFZpZXdTdGF0ZTo6Tm9GbGFnczsKKyAgICAgICAgcGFnZVByb3h5LT5hY3Rpdml0
eVN0YXRlRGlkQ2hhbmdlKGFjdGl2aXR5U3RhdGVGbGFnc1RvVXBkYXRlKTsKKyAgICAgICAgYWN0
aXZpdHlTdGF0ZUZsYWdzVG9VcGRhdGUgPSBBY3Rpdml0eVN0YXRlOjpOb0ZsYWdzOwogICAgIH0K
IAogICAgIFdlYktpdFdlYlZpZXdDaGlsZHJlbk1hcCBjaGlsZHJlbjsKQEAgLTE4NSw5ICsxODUs
OSBAQCBzdHJ1Y3QgX1dlYktpdFdlYlZpZXdCYXNlUHJpdmF0ZSB7CiAgICAgdW5zaWduZWQgbG9u
ZyB0b3BsZXZlbFdpbmRvd1JlYWxpemVkSUQ7CiAKICAgICAvLyBWaWV3IFN0YXRlLgotICAgIFZp
ZXdTdGF0ZTo6RmxhZ3Mgdmlld1N0YXRlOwotICAgIFZpZXdTdGF0ZTo6RmxhZ3Mgdmlld1N0YXRl
RmxhZ3NUb1VwZGF0ZTsKLSAgICBSdW5Mb29wOjpUaW1lcjxXZWJLaXRXZWJWaWV3QmFzZVByaXZh
dGU+IHVwZGF0ZVZpZXdTdGF0ZVRpbWVyOworICAgIEFjdGl2aXR5U3RhdGU6OkZsYWdzIGFjdGl2
aXR5U3RhdGU7CisgICAgQWN0aXZpdHlTdGF0ZTo6RmxhZ3MgYWN0aXZpdHlTdGF0ZUZsYWdzVG9V
cGRhdGU7CisgICAgUnVuTG9vcDo6VGltZXI8V2ViS2l0V2ViVmlld0Jhc2VQcml2YXRlPiB1cGRh
dGVBY3Rpdml0eVN0YXRlVGltZXI7CiAKICAgICBXZWJLaXRXZWJWaWV3QmFzZURvd25sb2FkUmVx
dWVzdEhhbmRsZXIgZG93bmxvYWRIYW5kbGVyOwogCkBAIC0yMTIsMTQgKzIxMiwxNCBAQCBzdHJ1
Y3QgX1dlYktpdFdlYlZpZXdCYXNlUHJpdmF0ZSB7CiAKIFdFQktJVF9ERUZJTkVfVFlQRShXZWJL
aXRXZWJWaWV3QmFzZSwgd2Via2l0X3dlYl92aWV3X2Jhc2UsIEdUS19UWVBFX0NPTlRBSU5FUikK
IAotc3RhdGljIHZvaWQgd2Via2l0V2ViVmlld0Jhc2VTY2hlZHVsZVVwZGF0ZVZpZXdTdGF0ZShX
ZWJLaXRXZWJWaWV3QmFzZSogd2ViVmlld0Jhc2UsIFZpZXdTdGF0ZTo6RmxhZ3MgZmxhZ3NUb1Vw
ZGF0ZSkKK3N0YXRpYyB2b2lkIHdlYmtpdFdlYlZpZXdCYXNlU2NoZWR1bGVVcGRhdGVBY3Rpdml0
eVN0YXRlKFdlYktpdFdlYlZpZXdCYXNlKiB3ZWJWaWV3QmFzZSwgQWN0aXZpdHlTdGF0ZTo6Rmxh
Z3MgZmxhZ3NUb1VwZGF0ZSkKIHsKICAgICBXZWJLaXRXZWJWaWV3QmFzZVByaXZhdGUqIHByaXYg
PSB3ZWJWaWV3QmFzZS0+cHJpdjsKLSAgICBwcml2LT52aWV3U3RhdGVGbGFnc1RvVXBkYXRlIHw9
IGZsYWdzVG9VcGRhdGU7Ci0gICAgaWYgKHByaXYtPnVwZGF0ZVZpZXdTdGF0ZVRpbWVyLmlzQWN0
aXZlKCkpCisgICAgcHJpdi0+YWN0aXZpdHlTdGF0ZUZsYWdzVG9VcGRhdGUgfD0gZmxhZ3NUb1Vw
ZGF0ZTsKKyAgICBpZiAocHJpdi0+dXBkYXRlQWN0aXZpdHlTdGF0ZVRpbWVyLmlzQWN0aXZlKCkp
CiAgICAgICAgIHJldHVybjsKIAotICAgIHByaXYtPnVwZGF0ZVZpZXdTdGF0ZVRpbWVyLnN0YXJ0
T25lU2hvdCgwKTsKKyAgICBwcml2LT51cGRhdGVBY3Rpdml0eVN0YXRlVGltZXIuc3RhcnRPbmVT
aG90KDApOwogfQogCiBzdGF0aWMgZ2Jvb2xlYW4gdG9wbGV2ZWxXaW5kb3dGb2N1c0luRXZlbnQo
R3RrV2lkZ2V0KiB3aWRnZXQsIEdka0V2ZW50Rm9jdXMqLCBXZWJLaXRXZWJWaWV3QmFzZSogd2Vi
Vmlld0Jhc2UpCkBAIC0yMjksMTEgKzIyOSwxMSBAQCBzdGF0aWMgZ2Jvb2xlYW4gdG9wbGV2ZWxX
aW5kb3dGb2N1c0luRXZlCiAgICAgICAgIHJldHVybiBGQUxTRTsKIAogICAgIFdlYktpdFdlYlZp
ZXdCYXNlUHJpdmF0ZSogcHJpdiA9IHdlYlZpZXdCYXNlLT5wcml2OwotICAgIGlmIChwcml2LT52
aWV3U3RhdGUgJiBWaWV3U3RhdGU6OldpbmRvd0lzQWN0aXZlKQorICAgIGlmIChwcml2LT5hY3Rp
dml0eVN0YXRlICYgQWN0aXZpdHlTdGF0ZTo6V2luZG93SXNBY3RpdmUpCiAgICAgICAgIHJldHVy
biBGQUxTRTsKIAotICAgIHByaXYtPnZpZXdTdGF0ZSB8PSBWaWV3U3RhdGU6OldpbmRvd0lzQWN0
aXZlOwotICAgIHdlYmtpdFdlYlZpZXdCYXNlU2NoZWR1bGVVcGRhdGVWaWV3U3RhdGUod2ViVmll
d0Jhc2UsIFZpZXdTdGF0ZTo6V2luZG93SXNBY3RpdmUpOworICAgIHByaXYtPmFjdGl2aXR5U3Rh
dGUgfD0gQWN0aXZpdHlTdGF0ZTo6V2luZG93SXNBY3RpdmU7CisgICAgd2Via2l0V2ViVmlld0Jh
c2VTY2hlZHVsZVVwZGF0ZUFjdGl2aXR5U3RhdGUod2ViVmlld0Jhc2UsIEFjdGl2aXR5U3RhdGU6
OldpbmRvd0lzQWN0aXZlKTsKIAogICAgIHJldHVybiBGQUxTRTsKIH0KQEAgLTI0MSwxMSArMjQx
LDExIEBAIHN0YXRpYyBnYm9vbGVhbiB0b3BsZXZlbFdpbmRvd0ZvY3VzSW5FdmUKIHN0YXRpYyBn
Ym9vbGVhbiB0b3BsZXZlbFdpbmRvd0ZvY3VzT3V0RXZlbnQoR3RrV2lkZ2V0KiwgR2RrRXZlbnRG
b2N1cyosIFdlYktpdFdlYlZpZXdCYXNlKiB3ZWJWaWV3QmFzZSkKIHsKICAgICBXZWJLaXRXZWJW
aWV3QmFzZVByaXZhdGUqIHByaXYgPSB3ZWJWaWV3QmFzZS0+cHJpdjsKLSAgICBpZiAoIShwcml2
LT52aWV3U3RhdGUgJiBWaWV3U3RhdGU6OldpbmRvd0lzQWN0aXZlKSkKKyAgICBpZiAoIShwcml2
LT5hY3Rpdml0eVN0YXRlICYgQWN0aXZpdHlTdGF0ZTo6V2luZG93SXNBY3RpdmUpKQogICAgICAg
ICByZXR1cm4gRkFMU0U7CiAKLSAgICBwcml2LT52aWV3U3RhdGUgJj0gflZpZXdTdGF0ZTo6V2lu
ZG93SXNBY3RpdmU7Ci0gICAgd2Via2l0V2ViVmlld0Jhc2VTY2hlZHVsZVVwZGF0ZVZpZXdTdGF0
ZSh3ZWJWaWV3QmFzZSwgVmlld1N0YXRlOjpXaW5kb3dJc0FjdGl2ZSk7CisgICAgcHJpdi0+YWN0
aXZpdHlTdGF0ZSAmPSB+QWN0aXZpdHlTdGF0ZTo6V2luZG93SXNBY3RpdmU7CisgICAgd2Via2l0
V2ViVmlld0Jhc2VTY2hlZHVsZVVwZGF0ZUFjdGl2aXR5U3RhdGUod2ViVmlld0Jhc2UsIEFjdGl2
aXR5U3RhdGU6OldpbmRvd0lzQWN0aXZlKTsKIAogICAgIHJldHVybiBGQUxTRTsKIH0KQEAgLTI1
NywxNCArMjU3LDE0IEBAIHN0YXRpYyBnYm9vbGVhbiB0b3BsZXZlbFdpbmRvd1N0YXRlRXZlbnQK
ICAgICAgICAgcmV0dXJuIEZBTFNFOwogCiAgICAgYm9vbCB2aXNpYmxlID0gIShldmVudC0+bmV3
X3dpbmRvd19zdGF0ZSAmIEdES19XSU5ET1dfU1RBVEVfSUNPTklGSUVEKTsKLSAgICBpZiAoKHZp
c2libGUgJiYgcHJpdi0+dmlld1N0YXRlICYgVmlld1N0YXRlOjpJc1Zpc2libGUpIHx8ICghdmlz
aWJsZSAmJiAhKHByaXYtPnZpZXdTdGF0ZSAmIFZpZXdTdGF0ZTo6SXNWaXNpYmxlKSkpCisgICAg
aWYgKCh2aXNpYmxlICYmIHByaXYtPmFjdGl2aXR5U3RhdGUgJiBBY3Rpdml0eVN0YXRlOjpJc1Zp
c2libGUpIHx8ICghdmlzaWJsZSAmJiAhKHByaXYtPmFjdGl2aXR5U3RhdGUgJiBBY3Rpdml0eVN0
YXRlOjpJc1Zpc2libGUpKSkKICAgICAgICAgcmV0dXJuIEZBTFNFOwogCiAgICAgaWYgKHZpc2li
bGUpCi0gICAgICAgIHByaXYtPnZpZXdTdGF0ZSB8PSBWaWV3U3RhdGU6OklzVmlzaWJsZTsKKyAg
ICAgICAgcHJpdi0+YWN0aXZpdHlTdGF0ZSB8PSBBY3Rpdml0eVN0YXRlOjpJc1Zpc2libGU7CiAg
ICAgZWxzZQotICAgICAgICBwcml2LT52aWV3U3RhdGUgJj0gflZpZXdTdGF0ZTo6SXNWaXNpYmxl
OwotICAgIHdlYmtpdFdlYlZpZXdCYXNlU2NoZWR1bGVVcGRhdGVWaWV3U3RhdGUod2ViVmlld0Jh
c2UsIFZpZXdTdGF0ZTo6SXNWaXNpYmxlKTsKKyAgICAgICAgcHJpdi0+YWN0aXZpdHlTdGF0ZSAm
PSB+QWN0aXZpdHlTdGF0ZTo6SXNWaXNpYmxlOworICAgIHdlYmtpdFdlYlZpZXdCYXNlU2NoZWR1
bGVVcGRhdGVBY3Rpdml0eVN0YXRlKHdlYlZpZXdCYXNlLCBBY3Rpdml0eVN0YXRlOjpJc1Zpc2li
bGUpOwogCiAgICAgcmV0dXJuIEZBTFNFOwogfQpAQCAtMzA2LDE3ICszMDYsMTcgQEAgc3RhdGlj
IHZvaWQgd2Via2l0V2ViVmlld0Jhc2VTZXRUb3BsZXZlbAogICAgIHByaXYtPnRvcGxldmVsT25T
Y3JlZW5XaW5kb3cgPSB3aW5kb3c7CiAKICAgICBpZiAoIXByaXYtPnRvcGxldmVsT25TY3JlZW5X
aW5kb3cpIHsKLSAgICAgICAgVmlld1N0YXRlOjpGbGFncyBmbGFnc1RvVXBkYXRlID0gMDsKLSAg
ICAgICAgaWYgKHByaXYtPnZpZXdTdGF0ZSAmIFZpZXdTdGF0ZTo6SXNJbldpbmRvdykgewotICAg
ICAgICAgICAgcHJpdi0+dmlld1N0YXRlICY9IH5WaWV3U3RhdGU6OklzSW5XaW5kb3c7Ci0gICAg
ICAgICAgICBmbGFnc1RvVXBkYXRlIHw9IFZpZXdTdGF0ZTo6SXNJbldpbmRvdzsKKyAgICAgICAg
QWN0aXZpdHlTdGF0ZTo6RmxhZ3MgZmxhZ3NUb1VwZGF0ZSA9IDA7CisgICAgICAgIGlmIChwcml2
LT5hY3Rpdml0eVN0YXRlICYgQWN0aXZpdHlTdGF0ZTo6SXNJbldpbmRvdykgeworICAgICAgICAg
ICAgcHJpdi0+YWN0aXZpdHlTdGF0ZSAmPSB+QWN0aXZpdHlTdGF0ZTo6SXNJbldpbmRvdzsKKyAg
ICAgICAgICAgIGZsYWdzVG9VcGRhdGUgfD0gQWN0aXZpdHlTdGF0ZTo6SXNJbldpbmRvdzsKICAg
ICAgICAgfQotICAgICAgICBpZiAocHJpdi0+dmlld1N0YXRlICYgVmlld1N0YXRlOjpXaW5kb3dJ
c0FjdGl2ZSkgewotICAgICAgICAgICAgcHJpdi0+dmlld1N0YXRlICY9IH5WaWV3U3RhdGU6Oldp
bmRvd0lzQWN0aXZlOwotICAgICAgICAgICAgZmxhZ3NUb1VwZGF0ZSB8PSBWaWV3U3RhdGU6Oklz
SW5XaW5kb3c7CisgICAgICAgIGlmIChwcml2LT5hY3Rpdml0eVN0YXRlICYgQWN0aXZpdHlTdGF0
ZTo6V2luZG93SXNBY3RpdmUpIHsKKyAgICAgICAgICAgIHByaXYtPmFjdGl2aXR5U3RhdGUgJj0g
fkFjdGl2aXR5U3RhdGU6OldpbmRvd0lzQWN0aXZlOworICAgICAgICAgICAgZmxhZ3NUb1VwZGF0
ZSB8PSBBY3Rpdml0eVN0YXRlOjpJc0luV2luZG93OwogICAgICAgICB9CiAgICAgICAgIGlmIChm
bGFnc1RvVXBkYXRlKQotICAgICAgICAgICAgd2Via2l0V2ViVmlld0Jhc2VTY2hlZHVsZVVwZGF0
ZVZpZXdTdGF0ZSh3ZWJWaWV3QmFzZSwgZmxhZ3NUb1VwZGF0ZSk7CisgICAgICAgICAgICB3ZWJr
aXRXZWJWaWV3QmFzZVNjaGVkdWxlVXBkYXRlQWN0aXZpdHlTdGF0ZSh3ZWJWaWV3QmFzZSwgZmxh
Z3NUb1VwZGF0ZSk7CiAKICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAgLTYzMSwyMCArNjMxLDIw
IEBAIHN0YXRpYyB2b2lkIHdlYmtpdFdlYlZpZXdCYXNlTWFwKEd0a1dpZGcKIAogICAgIFdlYktp
dFdlYlZpZXdCYXNlKiB3ZWJWaWV3QmFzZSA9IFdFQktJVF9XRUJfVklFV19CQVNFKHdpZGdldCk7
CiAgICAgV2ViS2l0V2ViVmlld0Jhc2VQcml2YXRlKiBwcml2ID0gd2ViVmlld0Jhc2UtPnByaXY7
Ci0gICAgVmlld1N0YXRlOjpGbGFncyBmbGFnc1RvVXBkYXRlID0gMDsKLSAgICBpZiAoIShwcml2
LT52aWV3U3RhdGUgJiBWaWV3U3RhdGU6OklzVmlzaWJsZSkpCi0gICAgICAgIGZsYWdzVG9VcGRh
dGUgfD0gVmlld1N0YXRlOjpJc1Zpc2libGU7CisgICAgQWN0aXZpdHlTdGF0ZTo6RmxhZ3MgZmxh
Z3NUb1VwZGF0ZSA9IDA7CisgICAgaWYgKCEocHJpdi0+YWN0aXZpdHlTdGF0ZSAmIEFjdGl2aXR5
U3RhdGU6OklzVmlzaWJsZSkpCisgICAgICAgIGZsYWdzVG9VcGRhdGUgfD0gQWN0aXZpdHlTdGF0
ZTo6SXNWaXNpYmxlOwogICAgIGlmIChwcml2LT50b3BsZXZlbE9uU2NyZWVuV2luZG93KSB7Ci0g
ICAgICAgIGlmICghKHByaXYtPnZpZXdTdGF0ZSAmIFZpZXdTdGF0ZTo6SXNJbldpbmRvdykpCi0g
ICAgICAgICAgICBmbGFnc1RvVXBkYXRlIHw9IFZpZXdTdGF0ZTo6SXNJbldpbmRvdzsKLSAgICAg
ICAgaWYgKGd0a193aW5kb3dfaXNfYWN0aXZlKEdUS19XSU5ET1cocHJpdi0+dG9wbGV2ZWxPblNj
cmVlbldpbmRvdykpICYmICEocHJpdi0+dmlld1N0YXRlICYgVmlld1N0YXRlOjpXaW5kb3dJc0Fj
dGl2ZSkpCi0gICAgICAgICAgICBmbGFnc1RvVXBkYXRlIHw9IFZpZXdTdGF0ZTo6V2luZG93SXNB
Y3RpdmU7CisgICAgICAgIGlmICghKHByaXYtPmFjdGl2aXR5U3RhdGUgJiBBY3Rpdml0eVN0YXRl
OjpJc0luV2luZG93KSkKKyAgICAgICAgICAgIGZsYWdzVG9VcGRhdGUgfD0gQWN0aXZpdHlTdGF0
ZTo6SXNJbldpbmRvdzsKKyAgICAgICAgaWYgKGd0a193aW5kb3dfaXNfYWN0aXZlKEdUS19XSU5E
T1cocHJpdi0+dG9wbGV2ZWxPblNjcmVlbldpbmRvdykpICYmICEocHJpdi0+YWN0aXZpdHlTdGF0
ZSAmIEFjdGl2aXR5U3RhdGU6OldpbmRvd0lzQWN0aXZlKSkKKyAgICAgICAgICAgIGZsYWdzVG9V
cGRhdGUgfD0gQWN0aXZpdHlTdGF0ZTo6V2luZG93SXNBY3RpdmU7CiAgICAgfQogICAgIGlmICgh
ZmxhZ3NUb1VwZGF0ZSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgcHJpdi0+dmlld1N0YXRlIHw9
IGZsYWdzVG9VcGRhdGU7Ci0gICAgd2Via2l0V2ViVmlld0Jhc2VTY2hlZHVsZVVwZGF0ZVZpZXdT
dGF0ZSh3ZWJWaWV3QmFzZSwgZmxhZ3NUb1VwZGF0ZSk7CisgICAgcHJpdi0+YWN0aXZpdHlTdGF0
ZSB8PSBmbGFnc1RvVXBkYXRlOworICAgIHdlYmtpdFdlYlZpZXdCYXNlU2NoZWR1bGVVcGRhdGVB
Y3Rpdml0eVN0YXRlKHdlYlZpZXdCYXNlLCBmbGFnc1RvVXBkYXRlKTsKIH0KIAogc3RhdGljIHZv
aWQgd2Via2l0V2ViVmlld0Jhc2VVbm1hcChHdGtXaWRnZXQqIHdpZGdldCkKQEAgLTY1MywxMSAr
NjUzLDExIEBAIHN0YXRpYyB2b2lkIHdlYmtpdFdlYlZpZXdCYXNlVW5tYXAoR3RrV2kKIAogICAg
IFdlYktpdFdlYlZpZXdCYXNlKiB3ZWJWaWV3QmFzZSA9IFdFQktJVF9XRUJfVklFV19CQVNFKHdp
ZGdldCk7CiAgICAgV2ViS2l0V2ViVmlld0Jhc2VQcml2YXRlKiBwcml2ID0gd2ViVmlld0Jhc2Ut
PnByaXY7Ci0gICAgaWYgKCEocHJpdi0+dmlld1N0YXRlICYgVmlld1N0YXRlOjpJc1Zpc2libGUp
KQorICAgIGlmICghKHByaXYtPmFjdGl2aXR5U3RhdGUgJiBBY3Rpdml0eVN0YXRlOjpJc1Zpc2li
bGUpKQogICAgICAgICByZXR1cm47CiAKLSAgICBwcml2LT52aWV3U3RhdGUgJj0gflZpZXdTdGF0
ZTo6SXNWaXNpYmxlOwotICAgIHdlYmtpdFdlYlZpZXdCYXNlU2NoZWR1bGVVcGRhdGVWaWV3U3Rh
dGUod2ViVmlld0Jhc2UsIFZpZXdTdGF0ZTo6SXNWaXNpYmxlKTsKKyAgICBwcml2LT5hY3Rpdml0
eVN0YXRlICY9IH5BY3Rpdml0eVN0YXRlOjpJc1Zpc2libGU7CisgICAgd2Via2l0V2ViVmlld0Jh
c2VTY2hlZHVsZVVwZGF0ZUFjdGl2aXR5U3RhdGUod2ViVmlld0Jhc2UsIEFjdGl2aXR5U3RhdGU6
OklzVmlzaWJsZSk7CiB9CiAKIHN0YXRpYyBnYm9vbGVhbiB3ZWJraXRXZWJWaWV3QmFzZUZvY3Vz
SW5FdmVudChHdGtXaWRnZXQqIHdpZGdldCwgR2RrRXZlbnRGb2N1cyogZXZlbnQpCkBAIC0xMzc5
LDQ2ICsxMzc5LDQ2IEBAIEdka0V2ZW50KiB3ZWJraXRXZWJWaWV3QmFzZVRha2VDb250ZXh0TWUK
IHZvaWQgd2Via2l0V2ViVmlld0Jhc2VTZXRGb2N1cyhXZWJLaXRXZWJWaWV3QmFzZSogd2ViVmll
d0Jhc2UsIGJvb2wgZm9jdXNlZCkKIHsKICAgICBXZWJLaXRXZWJWaWV3QmFzZVByaXZhdGUqIHBy
aXYgPSB3ZWJWaWV3QmFzZS0+cHJpdjsKLSAgICBpZiAoKGZvY3VzZWQgJiYgcHJpdi0+dmlld1N0
YXRlICYgVmlld1N0YXRlOjpJc0ZvY3VzZWQpIHx8ICghZm9jdXNlZCAmJiAhKHByaXYtPnZpZXdT
dGF0ZSAmIFZpZXdTdGF0ZTo6SXNGb2N1c2VkKSkpCisgICAgaWYgKChmb2N1c2VkICYmIHByaXYt
PmFjdGl2aXR5U3RhdGUgJiBBY3Rpdml0eVN0YXRlOjpJc0ZvY3VzZWQpIHx8ICghZm9jdXNlZCAm
JiAhKHByaXYtPmFjdGl2aXR5U3RhdGUgJiBBY3Rpdml0eVN0YXRlOjpJc0ZvY3VzZWQpKSkKICAg
ICAgICAgcmV0dXJuOwogCi0gICAgVmlld1N0YXRlOjpGbGFncyBmbGFnc1RvVXBkYXRlID0gVmll
d1N0YXRlOjpJc0ZvY3VzZWQ7CisgICAgQWN0aXZpdHlTdGF0ZTo6RmxhZ3MgZmxhZ3NUb1VwZGF0
ZSA9IEFjdGl2aXR5U3RhdGU6OklzRm9jdXNlZDsKICAgICBpZiAoZm9jdXNlZCkgewotICAgICAg
ICBwcml2LT52aWV3U3RhdGUgfD0gVmlld1N0YXRlOjpJc0ZvY3VzZWQ7CisgICAgICAgIHByaXYt
PmFjdGl2aXR5U3RhdGUgfD0gQWN0aXZpdHlTdGF0ZTo6SXNGb2N1c2VkOwogCiAgICAgICAgIC8v
IElmIHRoZSB2aWV3IGhhcyByZWNlaXZlZCB0aGUgZm9jdXMgYW5kIHRoZSB3aW5kb3cgaXMgbm90
IGFjdGl2ZQogICAgICAgICAvLyBtYXJrIHRoZSBjdXJyZW50IHdpbmRvdyBhcyBhY3RpdmUgbm93
LiBUaGlzIGNhbiBoYXBwZW4gaWYgdGhlCiAgICAgICAgIC8vIHRvcGxldmVsIHdpbmRvdyBpcyBh
IEdUS19XSU5ET1dfUE9QVVAgYW5kIHRoZSBmb2N1cyBoYXMgYmVlbgogICAgICAgICAvLyBzZXQg
cHJvZ3JhbWF0aWNhbGx5IGxpa2UgV2ViS2l0VGVzdFJ1bm5lciBkb2VzLCBiZWNhdXNlIFBPUFVQ
CiAgICAgICAgIC8vIGNhbid0IGJlIGZvY3VzZWQuCi0gICAgICAgIGlmICghKHByaXYtPnZpZXdT
dGF0ZSAmIFZpZXdTdGF0ZTo6V2luZG93SXNBY3RpdmUpKSB7Ci0gICAgICAgICAgICBwcml2LT52
aWV3U3RhdGUgfD0gVmlld1N0YXRlOjpXaW5kb3dJc0FjdGl2ZTsKLSAgICAgICAgICAgIGZsYWdz
VG9VcGRhdGUgfD0gVmlld1N0YXRlOjpXaW5kb3dJc0FjdGl2ZTsKKyAgICAgICAgaWYgKCEocHJp
di0+YWN0aXZpdHlTdGF0ZSAmIEFjdGl2aXR5U3RhdGU6OldpbmRvd0lzQWN0aXZlKSkgeworICAg
ICAgICAgICAgcHJpdi0+YWN0aXZpdHlTdGF0ZSB8PSBBY3Rpdml0eVN0YXRlOjpXaW5kb3dJc0Fj
dGl2ZTsKKyAgICAgICAgICAgIGZsYWdzVG9VcGRhdGUgfD0gQWN0aXZpdHlTdGF0ZTo6V2luZG93
SXNBY3RpdmU7CiAgICAgICAgIH0KICAgICB9IGVsc2UKLSAgICAgICAgcHJpdi0+dmlld1N0YXRl
ICY9IH5WaWV3U3RhdGU6OklzRm9jdXNlZDsKKyAgICAgICAgcHJpdi0+YWN0aXZpdHlTdGF0ZSAm
PSB+QWN0aXZpdHlTdGF0ZTo6SXNGb2N1c2VkOwogCi0gICAgd2Via2l0V2ViVmlld0Jhc2VTY2hl
ZHVsZVVwZGF0ZVZpZXdTdGF0ZSh3ZWJWaWV3QmFzZSwgZmxhZ3NUb1VwZGF0ZSk7CisgICAgd2Vi
a2l0V2ViVmlld0Jhc2VTY2hlZHVsZVVwZGF0ZUFjdGl2aXR5U3RhdGUod2ViVmlld0Jhc2UsIGZs
YWdzVG9VcGRhdGUpOwogfQogCiBib29sIHdlYmtpdFdlYlZpZXdCYXNlSXNJbldpbmRvd0FjdGl2
ZShXZWJLaXRXZWJWaWV3QmFzZSogd2ViVmlld0Jhc2UpCiB7Ci0gICAgcmV0dXJuIHdlYlZpZXdC
YXNlLT5wcml2LT52aWV3U3RhdGUgJiBWaWV3U3RhdGU6OldpbmRvd0lzQWN0aXZlOworICAgIHJl
dHVybiB3ZWJWaWV3QmFzZS0+cHJpdi0+YWN0aXZpdHlTdGF0ZSAmIEFjdGl2aXR5U3RhdGU6Oldp
bmRvd0lzQWN0aXZlOwogfQogCiBib29sIHdlYmtpdFdlYlZpZXdCYXNlSXNGb2N1c2VkKFdlYktp
dFdlYlZpZXdCYXNlKiB3ZWJWaWV3QmFzZSkKIHsKLSAgICByZXR1cm4gd2ViVmlld0Jhc2UtPnBy
aXYtPnZpZXdTdGF0ZSAmIFZpZXdTdGF0ZTo6SXNGb2N1c2VkOworICAgIHJldHVybiB3ZWJWaWV3
QmFzZS0+cHJpdi0+YWN0aXZpdHlTdGF0ZSAmIEFjdGl2aXR5U3RhdGU6OklzRm9jdXNlZDsKIH0K
IAogYm9vbCB3ZWJraXRXZWJWaWV3QmFzZUlzVmlzaWJsZShXZWJLaXRXZWJWaWV3QmFzZSogd2Vi
Vmlld0Jhc2UpCiB7Ci0gICAgcmV0dXJuIHdlYlZpZXdCYXNlLT5wcml2LT52aWV3U3RhdGUgJiBW
aWV3U3RhdGU6OklzVmlzaWJsZTsKKyAgICByZXR1cm4gd2ViVmlld0Jhc2UtPnByaXYtPmFjdGl2
aXR5U3RhdGUgJiBBY3Rpdml0eVN0YXRlOjpJc1Zpc2libGU7CiB9CiAKIGJvb2wgd2Via2l0V2Vi
Vmlld0Jhc2VJc0luV2luZG93KFdlYktpdFdlYlZpZXdCYXNlKiB3ZWJWaWV3QmFzZSkKIHsKLSAg
ICByZXR1cm4gd2ViVmlld0Jhc2UtPnByaXYtPnZpZXdTdGF0ZSAmIFZpZXdTdGF0ZTo6SXNJbldp
bmRvdzsKKyAgICByZXR1cm4gd2ViVmlld0Jhc2UtPnByaXYtPmFjdGl2aXR5U3RhdGUgJiBBY3Rp
dml0eVN0YXRlOjpJc0luV2luZG93OwogfQogCiB2b2lkIHdlYmtpdFdlYlZpZXdCYXNlU2V0RG93
bmxvYWRSZXF1ZXN0SGFuZGxlcihXZWJLaXRXZWJWaWV3QmFzZSogd2ViVmlld0Jhc2UsIFdlYktp
dFdlYlZpZXdCYXNlRG93bmxvYWRSZXF1ZXN0SGFuZGxlciBkb3dubG9hZEhhbmRsZXIpCkluZGV4
OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwubW0KPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJbXBsLm1tCShyZXZp
c2lvbiAyMDgxOTcpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29jb2EvV2ViVmlld0lt
cGwubW0JKHdvcmtpbmcgY29weSkKQEAgLTY2LDYgKzY2LDcgQEAKICNpbXBvcnQgIl9XS1RodW1i
bmFpbFZpZXdJbnRlcm5hbC5oIgogI2ltcG9ydCA8SElUb29sYm94L0NhcmJvbkV2ZW50c0NvcmUu
aD4KICNpbXBvcnQgPFdlYkNvcmUvQVhPYmplY3RDYWNoZS5oPgorI2ltcG9ydCA8V2ViQ29yZS9B
Y3Rpdml0eVN0YXRlLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0NvbG9yTWFjLmg+CiAjaW1wb3J0IDxX
ZWJDb3JlL0NvcmVHcmFwaGljc1NQSS5oPgogI2ltcG9ydCA8V2ViQ29yZS9EYXRhRGV0ZWN0b3Jz
U1BJLmg+CkBAIC04NCw3ICs4NSw2IEBACiAjaW1wb3J0IDxXZWJDb3JlL1NvZnRMaW5raW5nLmg+
CiAjaW1wb3J0IDxXZWJDb3JlL1RleHRBbHRlcm5hdGl2ZVdpdGhSYW5nZS5oPgogI2ltcG9ydCA8
V2ViQ29yZS9UZXh0VW5kb0luc2VydGlvbk1hcmt1cE1hYy5oPgotI2ltcG9ydCA8V2ViQ29yZS9W
aWV3U3RhdGUuaD4KICNpbXBvcnQgPFdlYkNvcmUvV2ViQWN0aW9uRGlzYWJsaW5nQ0FMYXllckRl
bGVnYXRlLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1dlYkNvcmVDQUxheWVyRXh0cmFzLmg+CiAjaW1w
b3J0IDxXZWJDb3JlL1dlYkNvcmVGdWxsU2NyZWVuUGxhY2Vob2xkZXJWaWV3Lmg+CkBAIC02MDks
NyArNjA5LDcgQEAgYm9vbCBXZWJWaWV3SW1wbDo6YmVjb21lRmlyc3RSZXNwb25kZXIoKQogICAg
IG1faW5CZWNvbWVGaXJzdFJlc3BvbmRlciA9IHRydWU7CiAKICAgICB1cGRhdGVTZWN1cmVJbnB1
dFN0YXRlKCk7Ci0gICAgbV9wYWdlLT52aWV3U3RhdGVEaWRDaGFuZ2UoV2ViQ29yZTo6Vmlld1N0
YXRlOjpJc0ZvY3VzZWQpOworICAgIG1fcGFnZS0+YWN0aXZpdHlTdGF0ZURpZENoYW5nZShXZWJD
b3JlOjpBY3Rpdml0eVN0YXRlOjpJc0ZvY3VzZWQpOwogICAgIC8vIFJlc3RvcmUgdGhlIHNlbGVj
dGlvbiBpbiB0aGUgZWRpdGFibGUgcmVnaW9uIGlmIHJlc2lnbmluZyBmaXJzdCByZXNwb25kZXIg
Y2xlYXJlZCBzZWxlY3Rpb24uCiAgICAgbV9wYWdlLT5yZXN0b3JlU2VsZWN0aW9uSW5Gb2N1c2Vk
RWRpdGFibGVFbGVtZW50KCk7CiAKQEAgLTY1Niw3ICs2NTYsNyBAQCBib29sIFdlYlZpZXdJbXBs
OjpyZXNpZ25GaXJzdFJlc3BvbmRlcigpCiAgICAgaWYgKCFtX3BhZ2UtPm1haW50YWluc0luYWN0
aXZlU2VsZWN0aW9uKCkpCiAgICAgICAgIG1fcGFnZS0+Y2xlYXJTZWxlY3Rpb24oKTsKIAotICAg
IG1fcGFnZS0+dmlld1N0YXRlRGlkQ2hhbmdlKFdlYkNvcmU6OlZpZXdTdGF0ZTo6SXNGb2N1c2Vk
KTsKKyAgICBtX3BhZ2UtPmFjdGl2aXR5U3RhdGVEaWRDaGFuZ2UoV2ViQ29yZTo6QWN0aXZpdHlT
dGF0ZTo6SXNGb2N1c2VkKTsKICAgICAKICAgICBtX2luUmVzaWduRmlyc3RSZXNwb25kZXIgPSBm
YWxzZTsKICAgICAKQEAgLTEwNTEsMTIgKzEwNTEsMTIgQEAgZmxvYXQgV2ViVmlld0ltcGw6Omlu
dHJpbnNpY0RldmljZVNjYWxlRgogCiB2b2lkIFdlYlZpZXdJbXBsOjp3aW5kb3dEaWRPcmRlck9m
ZlNjcmVlbigpCiB7Ci0gICAgbV9wYWdlLT52aWV3U3RhdGVEaWRDaGFuZ2UoV2ViQ29yZTo6Vmll
d1N0YXRlOjpJc1Zpc2libGUgfCBXZWJDb3JlOjpWaWV3U3RhdGU6OldpbmRvd0lzQWN0aXZlKTsK
KyAgICBtX3BhZ2UtPmFjdGl2aXR5U3RhdGVEaWRDaGFuZ2UoV2ViQ29yZTo6QWN0aXZpdHlTdGF0
ZTo6SXNWaXNpYmxlIHwgV2ViQ29yZTo6QWN0aXZpdHlTdGF0ZTo6V2luZG93SXNBY3RpdmUpOwog
fQogCiB2b2lkIFdlYlZpZXdJbXBsOjp3aW5kb3dEaWRPcmRlck9uU2NyZWVuKCkKIHsKLSAgICBt
X3BhZ2UtPnZpZXdTdGF0ZURpZENoYW5nZShXZWJDb3JlOjpWaWV3U3RhdGU6OklzVmlzaWJsZSB8
IFdlYkNvcmU6OlZpZXdTdGF0ZTo6V2luZG93SXNBY3RpdmUpOworICAgIG1fcGFnZS0+YWN0aXZp
dHlTdGF0ZURpZENoYW5nZShXZWJDb3JlOjpBY3Rpdml0eVN0YXRlOjpJc1Zpc2libGUgfCBXZWJD
b3JlOjpBY3Rpdml0eVN0YXRlOjpXaW5kb3dJc0FjdGl2ZSk7CiB9CiAKIHZvaWQgV2ViVmlld0lt
cGw6OndpbmRvd0RpZEJlY29tZUtleShOU1dpbmRvdyAqa2V5V2luZG93KQpAQCAtMTA2Niw3ICsx
MDY2LDcgQEAgdm9pZCBXZWJWaWV3SW1wbDo6d2luZG93RGlkQmVjb21lS2V5KE5TVwogICAgICAg
ICBVSUdhbWVwYWRQcm92aWRlcjo6c2luZ2xldG9uKCkudmlld0JlY2FtZUFjdGl2ZShtX3BhZ2Uu
Z2V0KCkpOwogI2VuZGlmCiAgICAgICAgIHVwZGF0ZVNlY3VyZUlucHV0U3RhdGUoKTsKLSAgICAg
ICAgbV9wYWdlLT52aWV3U3RhdGVEaWRDaGFuZ2UoV2ViQ29yZTo6Vmlld1N0YXRlOjpXaW5kb3dJ
c0FjdGl2ZSk7CisgICAgICAgIG1fcGFnZS0+YWN0aXZpdHlTdGF0ZURpZENoYW5nZShXZWJDb3Jl
OjpBY3Rpdml0eVN0YXRlOjpXaW5kb3dJc0FjdGl2ZSk7CiAgICAgfQogfQogCkBAIC0xMDc3LDE4
ICsxMDc3LDE4IEBAIHZvaWQgV2ViVmlld0ltcGw6OndpbmRvd0RpZFJlc2lnbktleShOU1cKICAg
ICAgICAgVUlHYW1lcGFkUHJvdmlkZXI6OnNpbmdsZXRvbigpLnZpZXdCZWNhbWVJbmFjdGl2ZSht
X3BhZ2UuZ2V0KCkpOwogI2VuZGlmCiAgICAgICAgIHVwZGF0ZVNlY3VyZUlucHV0U3RhdGUoKTsK
LSAgICAgICAgbV9wYWdlLT52aWV3U3RhdGVEaWRDaGFuZ2UoV2ViQ29yZTo6Vmlld1N0YXRlOjpX
aW5kb3dJc0FjdGl2ZSk7CisgICAgICAgIG1fcGFnZS0+YWN0aXZpdHlTdGF0ZURpZENoYW5nZShX
ZWJDb3JlOjpBY3Rpdml0eVN0YXRlOjpXaW5kb3dJc0FjdGl2ZSk7CiAgICAgfQogfQogCiB2b2lk
IFdlYlZpZXdJbXBsOjp3aW5kb3dEaWRNaW5pYXR1cml6ZSgpCiB7Ci0gICAgbV9wYWdlLT52aWV3
U3RhdGVEaWRDaGFuZ2UoV2ViQ29yZTo6Vmlld1N0YXRlOjpJc1Zpc2libGUpOworICAgIG1fcGFn
ZS0+YWN0aXZpdHlTdGF0ZURpZENoYW5nZShXZWJDb3JlOjpBY3Rpdml0eVN0YXRlOjpJc1Zpc2li
bGUpOwogfQogCiB2b2lkIFdlYlZpZXdJbXBsOjp3aW5kb3dEaWREZW1pbmlhdHVyaXplKCkKIHsK
LSAgICBtX3BhZ2UtPnZpZXdTdGF0ZURpZENoYW5nZShXZWJDb3JlOjpWaWV3U3RhdGU6OklzVmlz
aWJsZSk7CisgICAgbV9wYWdlLT5hY3Rpdml0eVN0YXRlRGlkQ2hhbmdlKFdlYkNvcmU6OkFjdGl2
aXR5U3RhdGU6OklzVmlzaWJsZSk7CiB9CiAKIHZvaWQgV2ViVmlld0ltcGw6OndpbmRvd0RpZE1v
dmUoKQpAQCAtMTEyMyw3ICsxMTIzLDcgQEAgdm9pZCBXZWJWaWV3SW1wbDo6d2luZG93RGlkQ2hh
bmdlTGF5ZXJIbwogCiB2b2lkIFdlYlZpZXdJbXBsOjp3aW5kb3dEaWRDaGFuZ2VPY2NsdXNpb25T
dGF0ZSgpCiB7Ci0gICAgbV9wYWdlLT52aWV3U3RhdGVEaWRDaGFuZ2UoV2ViQ29yZTo6Vmlld1N0
YXRlOjpJc1Zpc2libGUpOworICAgIG1fcGFnZS0+YWN0aXZpdHlTdGF0ZURpZENoYW5nZShXZWJD
b3JlOjpBY3Rpdml0eVN0YXRlOjpJc1Zpc2libGUpOwogfQogCiBib29sIFdlYlZpZXdJbXBsOjpt
aWdodEJlZ2luRHJhZ1doaWxlSW5hY3RpdmUoKQpAQCAtMTIxNCwxMiArMTIxNCwxMiBAQCB2b2lk
IFdlYlZpZXdJbXBsOjp2aWV3RGlkTW92ZVRvV2luZG93KCkKICAgICBpZiAod2luZG93KSB7CiAg
ICAgICAgIHdpbmRvd0RpZENoYW5nZVNjcmVlbigpOwogCi0gICAgICAgIFdlYkNvcmU6OlZpZXdT
dGF0ZTo6RmxhZ3Mgdmlld1N0YXRlQ2hhbmdlcyA9IFdlYkNvcmU6OlZpZXdTdGF0ZTo6V2luZG93
SXNBY3RpdmUgfCBXZWJDb3JlOjpWaWV3U3RhdGU6OklzVmlzaWJsZTsKKyAgICAgICAgV2ViQ29y
ZTo6QWN0aXZpdHlTdGF0ZTo6RmxhZ3MgYWN0aXZpdHlTdGF0ZUNoYW5nZXMgPSBXZWJDb3JlOjpB
Y3Rpdml0eVN0YXRlOjpXaW5kb3dJc0FjdGl2ZSB8IFdlYkNvcmU6OkFjdGl2aXR5U3RhdGU6Oklz
VmlzaWJsZTsKICAgICAgICAgaWYgKG1fc2hvdWxkRGVmZXJWaWV3SW5XaW5kb3dDaGFuZ2VzKQog
ICAgICAgICAgICAgbV92aWV3SW5XaW5kb3dDaGFuZ2VXYXNEZWZlcnJlZCA9IHRydWU7CiAgICAg
ICAgIGVsc2UKLSAgICAgICAgICAgIHZpZXdTdGF0ZUNoYW5nZXMgfD0gV2ViQ29yZTo6Vmlld1N0
YXRlOjpJc0luV2luZG93OwotICAgICAgICBtX3BhZ2UtPnZpZXdTdGF0ZURpZENoYW5nZSh2aWV3
U3RhdGVDaGFuZ2VzKTsKKyAgICAgICAgICAgIGFjdGl2aXR5U3RhdGVDaGFuZ2VzIHw9IFdlYkNv
cmU6OkFjdGl2aXR5U3RhdGU6OklzSW5XaW5kb3c7CisgICAgICAgIG1fcGFnZS0+YWN0aXZpdHlT
dGF0ZURpZENoYW5nZShhY3Rpdml0eVN0YXRlQ2hhbmdlcyk7CiAKICAgICAgICAgdXBkYXRlV2lu
ZG93QW5kVmlld0ZyYW1lcygpOwogCkBAIC0xMjQzLDEyICsxMjQzLDEyIEBAIHZvaWQgV2ViVmll
d0ltcGw6OnZpZXdEaWRNb3ZlVG9XaW5kb3coKQogICAgICAgICBpZiAobV9pbW1lZGlhdGVBY3Rp
b25HZXN0dXJlUmVjb2duaXplciAmJiAhW1ttX3ZpZXcgZ2VzdHVyZVJlY29nbml6ZXJzXSBjb250
YWluc09iamVjdDptX2ltbWVkaWF0ZUFjdGlvbkdlc3R1cmVSZWNvZ25pemVyLmdldCgpXSAmJiAh
bV9pZ25vcmVzTm9uV2hlZWxFdmVudHMgJiYgbV9hbGxvd3NMaW5rUHJldmlldykKICAgICAgICAg
ICAgIFttX3ZpZXcgYWRkR2VzdHVyZVJlY29nbml6ZXI6bV9pbW1lZGlhdGVBY3Rpb25HZXN0dXJl
UmVjb2duaXplci5nZXQoKV07CiAgICAgfSBlbHNlIHsKLSAgICAgICAgV2ViQ29yZTo6Vmlld1N0
YXRlOjpGbGFncyB2aWV3U3RhdGVDaGFuZ2VzID0gV2ViQ29yZTo6Vmlld1N0YXRlOjpXaW5kb3dJ
c0FjdGl2ZSB8IFdlYkNvcmU6OlZpZXdTdGF0ZTo6SXNWaXNpYmxlOworICAgICAgICBXZWJDb3Jl
OjpBY3Rpdml0eVN0YXRlOjpGbGFncyBhY3Rpdml0eVN0YXRlQ2hhbmdlcyA9IFdlYkNvcmU6OkFj
dGl2aXR5U3RhdGU6OldpbmRvd0lzQWN0aXZlIHwgV2ViQ29yZTo6QWN0aXZpdHlTdGF0ZTo6SXNW
aXNpYmxlOwogICAgICAgICBpZiAobV9zaG91bGREZWZlclZpZXdJbldpbmRvd0NoYW5nZXMpCiAg
ICAgICAgICAgICBtX3ZpZXdJbldpbmRvd0NoYW5nZVdhc0RlZmVycmVkID0gdHJ1ZTsKICAgICAg
ICAgZWxzZQotICAgICAgICAgICAgdmlld1N0YXRlQ2hhbmdlcyB8PSBXZWJDb3JlOjpWaWV3U3Rh
dGU6OklzSW5XaW5kb3c7Ci0gICAgICAgIG1fcGFnZS0+dmlld1N0YXRlRGlkQ2hhbmdlKHZpZXdT
dGF0ZUNoYW5nZXMpOworICAgICAgICAgICAgYWN0aXZpdHlTdGF0ZUNoYW5nZXMgfD0gV2ViQ29y
ZTo6QWN0aXZpdHlTdGF0ZTo6SXNJbldpbmRvdzsKKyAgICAgICAgbV9wYWdlLT5hY3Rpdml0eVN0
YXRlRGlkQ2hhbmdlKGFjdGl2aXR5U3RhdGVDaGFuZ2VzKTsKIAogICAgICAgICBbTlNFdmVudCBy
ZW1vdmVNb25pdG9yOm1fZmxhZ3NDaGFuZ2VkRXZlbnRNb25pdG9yXTsKICAgICAgICAgbV9mbGFn
c0NoYW5nZWRFdmVudE1vbml0b3IgPSBuaWw7CkBAIC0xMjc4LDE3ICsxMjc4LDE3IEBAIHZvaWQg
V2ViVmlld0ltcGw6OnZpZXdEaWRDaGFuZ2VCYWNraW5nUHIKIAogdm9pZCBXZWJWaWV3SW1wbDo6
dmlld0RpZEhpZGUoKQogewotICAgIG1fcGFnZS0+dmlld1N0YXRlRGlkQ2hhbmdlKFdlYkNvcmU6
OlZpZXdTdGF0ZTo6SXNWaXNpYmxlKTsKKyAgICBtX3BhZ2UtPmFjdGl2aXR5U3RhdGVEaWRDaGFu
Z2UoV2ViQ29yZTo6QWN0aXZpdHlTdGF0ZTo6SXNWaXNpYmxlKTsKIH0KIAogdm9pZCBXZWJWaWV3
SW1wbDo6dmlld0RpZFVuaGlkZSgpCiB7Ci0gICAgbV9wYWdlLT52aWV3U3RhdGVEaWRDaGFuZ2Uo
V2ViQ29yZTo6Vmlld1N0YXRlOjpJc1Zpc2libGUpOworICAgIG1fcGFnZS0+YWN0aXZpdHlTdGF0
ZURpZENoYW5nZShXZWJDb3JlOjpBY3Rpdml0eVN0YXRlOjpJc1Zpc2libGUpOwogfQogCiB2b2lk
IFdlYlZpZXdJbXBsOjphY3RpdmVTcGFjZURpZENoYW5nZSgpCiB7Ci0gICAgbV9wYWdlLT52aWV3
U3RhdGVEaWRDaGFuZ2UoV2ViQ29yZTo6Vmlld1N0YXRlOjpJc1Zpc2libGUpOworICAgIG1fcGFn
ZS0+YWN0aXZpdHlTdGF0ZURpZENoYW5nZShXZWJDb3JlOjpBY3Rpdml0eVN0YXRlOjpJc1Zpc2li
bGUpOwogfQogCiBOU1ZpZXcgKldlYlZpZXdJbXBsOjpoaXRUZXN0KENHUG9pbnQgcG9pbnQpCkBA
IC0xMzgzLDcgKzEzODMsNyBAQCB2b2lkIFdlYlZpZXdJbXBsOjplbmREZWZlcnJpbmdWaWV3SW5X
aW5kCiAKICAgICBpZiAobV92aWV3SW5XaW5kb3dDaGFuZ2VXYXNEZWZlcnJlZCkgewogICAgICAg
ICBkaXNwYXRjaFNldFRvcENvbnRlbnRJbnNldCgpOwotICAgICAgICBtX3BhZ2UtPnZpZXdTdGF0
ZURpZENoYW5nZShXZWJDb3JlOjpWaWV3U3RhdGU6OklzSW5XaW5kb3cpOworICAgICAgICBtX3Bh
Z2UtPmFjdGl2aXR5U3RhdGVEaWRDaGFuZ2UoV2ViQ29yZTo6QWN0aXZpdHlTdGF0ZTo6SXNJbldp
bmRvdyk7CiAgICAgICAgIG1fdmlld0luV2luZG93Q2hhbmdlV2FzRGVmZXJyZWQgPSBmYWxzZTsK
ICAgICB9CiB9CkBAIC0xMzk5LDcgKzEzOTksNyBAQCB2b2lkIFdlYlZpZXdJbXBsOjplbmREZWZl
cnJpbmdWaWV3SW5XaW5kCiAKICAgICBpZiAobV92aWV3SW5XaW5kb3dDaGFuZ2VXYXNEZWZlcnJl
ZCkgewogICAgICAgICBkaXNwYXRjaFNldFRvcENvbnRlbnRJbnNldCgpOwotICAgICAgICBtX3Bh
Z2UtPnZpZXdTdGF0ZURpZENoYW5nZShXZWJDb3JlOjpWaWV3U3RhdGU6OklzSW5XaW5kb3cpOwor
ICAgICAgICBtX3BhZ2UtPmFjdGl2aXR5U3RhdGVEaWRDaGFuZ2UoV2ViQ29yZTo6QWN0aXZpdHlT
dGF0ZTo6SXNJbldpbmRvdyk7CiAgICAgICAgIG1fdmlld0luV2luZG93Q2hhbmdlV2FzRGVmZXJy
ZWQgPSBmYWxzZTsKICAgICB9CiB9CkBAIC0xNDE0LDcgKzE0MTQsNyBAQCB2b2lkIFdlYlZpZXdJ
bXBsOjpwcmVwYXJlRm9yTW92ZVRvV2luZG93CiAgICAgbV9zaG91bGREZWZlclZpZXdJbldpbmRv
d0NoYW5nZXMgPSBmYWxzZTsKIAogICAgIGF1dG8gd2Vha1RoaXMgPSBjcmVhdGVXZWFrUHRyKCk7
Ci0gICAgbV9wYWdlLT5pbnN0YWxsVmlld1N0YXRlQ2hhbmdlQ29tcGxldGlvbkhhbmRsZXIoW3dl
YWtUaGlzLCBjb21wbGV0aW9uSGFuZGxlcl0oKSB7CisgICAgbV9wYWdlLT5pbnN0YWxsQWN0aXZp
dHlTdGF0ZUNoYW5nZUNvbXBsZXRpb25IYW5kbGVyKFt3ZWFrVGhpcywgY29tcGxldGlvbkhhbmRs
ZXJdKCkgewogICAgICAgICBjb21wbGV0aW9uSGFuZGxlcigpOwogCiAgICAgICAgIGlmICghd2Vh
a1RoaXMpCkBAIC0xNDI1LDcgKzE0MjUsNyBAQCB2b2lkIFdlYlZpZXdJbXBsOjpwcmVwYXJlRm9y
TW92ZVRvV2luZG93CiAgICAgfSk7CiAKICAgICBkaXNwYXRjaFNldFRvcENvbnRlbnRJbnNldCgp
OwotICAgIG1fcGFnZS0+dmlld1N0YXRlRGlkQ2hhbmdlKFdlYkNvcmU6OlZpZXdTdGF0ZTo6SXNJ
bldpbmRvdywgZmFsc2UsIFdlYlBhZ2VQcm94eTo6Vmlld1N0YXRlQ2hhbmdlRGlzcGF0Y2hNb2Rl
OjpJbW1lZGlhdGUpOworICAgIG1fcGFnZS0+YWN0aXZpdHlTdGF0ZURpZENoYW5nZShXZWJDb3Jl
OjpBY3Rpdml0eVN0YXRlOjpJc0luV2luZG93LCBmYWxzZSwgV2ViUGFnZVByb3h5OjpBY3Rpdml0
eVN0YXRlQ2hhbmdlRGlzcGF0Y2hNb2RlOjpJbW1lZGlhdGUpOwogICAgIG1fdmlld0luV2luZG93
Q2hhbmdlV2FzRGVmZXJyZWQgPSBmYWxzZTsKIH0KIApJbmRleDogU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL2VmbC9XZWJWaWV3LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvZWZsL1dlYlZpZXcuY3BwCShyZXZpc2lvbiAyMDgxOTcpCisrKyBTb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvZWZsL1dlYlZpZXcuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMCw2ICszMCw3
IEBACiAjaWYgVVNFKENPT1JESU5BVEVEX0dSQVBISUNTKQogI2luY2x1ZGUgIkFQSVBhZ2VDb25m
aWd1cmF0aW9uLmgiCiAjaW5jbHVkZSAiQWNjZWxlcmF0ZWREcmF3aW5nQXJlYVByb3h5LmgiCisj
aW5jbHVkZSAiQWN0aXZpdHlTdGF0ZS5oIgogI2luY2x1ZGUgIkNvb3JkaW5hdGVkR3JhcGhpY3NT
Y2VuZS5oIgogI2luY2x1ZGUgIkNvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdFByb3h5LmgiCiAjaW5j
bHVkZSAiRG93bmxvYWRNYW5hZ2VyRWZsLmgiCkBAIC0zOCw3ICszOSw2IEBACiAjaW5jbHVkZSAi
SW5wdXRNZXRob2RDb250ZXh0RWZsLmgiCiAjaW5jbHVkZSAiTmF0aXZlV2ViTW91c2VFdmVudC5o
IgogI2luY2x1ZGUgIk5vdEltcGxlbWVudGVkLmgiCi0jaW5jbHVkZSAiVmlld1N0YXRlLmgiCiAj
aW5jbHVkZSAiV2ViQmFja0ZvcndhcmRMaXN0LmgiCiAjaW5jbHVkZSAiV2ViQmFja0ZvcndhcmRM
aXN0SXRlbS5oIgogI2luY2x1ZGUgIldlYkNvbnRleHRNZW51UHJveHlFZmwuaCIKSW5kZXg6IFNv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlldy5tbQo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXcubW0JKHJldmlzaW9u
IDIwODE5NykKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlldy5t
bQkod29ya2luZyBjb3B5KQpAQCAtNjAyLDcgKzYwMiw3IEBAIC0gKHZvaWQpX2FwcGxpY2F0aW9u
V2lsbFJlc2lnbkFjdGl2ZTooTlMKIC0gKHZvaWQpX2FwcGxpY2F0aW9uRGlkRW50ZXJCYWNrZ3Jv
dW5kCiB7CiAgICAgX3BhZ2UtPmFwcGxpY2F0aW9uRGlkRW50ZXJCYWNrZ3JvdW5kKCk7Ci0gICAg
X3BhZ2UtPnZpZXdTdGF0ZURpZENoYW5nZShWaWV3U3RhdGU6OkFsbEZsYWdzICYgflZpZXdTdGF0
ZTo6SXNJbldpbmRvdyk7CisgICAgX3BhZ2UtPmFjdGl2aXR5U3RhdGVEaWRDaGFuZ2UoQWN0aXZp
dHlTdGF0ZTo6QWxsRmxhZ3MgJiB+QWN0aXZpdHlTdGF0ZTo6SXNJbldpbmRvdyk7CiB9CiAKIC0g
KHZvaWQpX2FwcGxpY2F0aW9uRGlkQ3JlYXRlV2luZG93Q29udGV4dApAQCAtNjE5LDcgKzYxOSw3
IEBAIC0gKHZvaWQpX2FwcGxpY2F0aW9uRGlkRmluaXNoU25hcHNob3R0aW4KIC0gKHZvaWQpX2Fw
cGxpY2F0aW9uV2lsbEVudGVyRm9yZWdyb3VuZAogewogICAgIF9wYWdlLT5hcHBsaWNhdGlvbldp
bGxFbnRlckZvcmVncm91bmQoKTsKLSAgICBfcGFnZS0+dmlld1N0YXRlRGlkQ2hhbmdlKFZpZXdT
dGF0ZTo6QWxsRmxhZ3MgJiB+Vmlld1N0YXRlOjpJc0luV2luZG93LCB0cnVlLCBXZWJQYWdlUHJv
eHk6OlZpZXdTdGF0ZUNoYW5nZURpc3BhdGNoTW9kZTo6SW1tZWRpYXRlKTsKKyAgICBfcGFnZS0+
YWN0aXZpdHlTdGF0ZURpZENoYW5nZShBY3Rpdml0eVN0YXRlOjpBbGxGbGFncyAmIH5BY3Rpdml0
eVN0YXRlOjpJc0luV2luZG93LCB0cnVlLCBXZWJQYWdlUHJveHk6OkFjdGl2aXR5U3RhdGVDaGFu
Z2VEaXNwYXRjaE1vZGU6OkltbWVkaWF0ZSk7CiB9CiAKIC0gKHZvaWQpX2FwcGxpY2F0aW9uRGlk
QmVjb21lQWN0aXZlOihOU05vdGlmaWNhdGlvbiopbm90aWZpY2F0aW9uCkluZGV4OiBTb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvaW9zL1dLUERGVmlldy5tbQo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvaW9zL1dLUERGVmlldy5tbQkocmV2aXNpb24gMjA4MTk3KQorKysg
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2lvcy9XS1BERlZpZXcubW0JKHdvcmtpbmcgY29weSkK
QEAgLTg3OCw3ICs4NzgsNyBAQCAtIChCT09MKWlzQmFja2dyb3VuZAogLSAodm9pZClfYXBwbGlj
YXRpb25EaWRFbnRlckJhY2tncm91bmQKIHsKICAgICBfd2ViVmlldy0+X3BhZ2UtPmFwcGxpY2F0
aW9uRGlkRW50ZXJCYWNrZ3JvdW5kKCk7Ci0gICAgX3dlYlZpZXctPl9wYWdlLT52aWV3U3RhdGVE
aWRDaGFuZ2UoVmlld1N0YXRlOjpBbGxGbGFncyAmIH5WaWV3U3RhdGU6OklzSW5XaW5kb3cpOwor
ICAgIF93ZWJWaWV3LT5fcGFnZS0+YWN0aXZpdHlTdGF0ZURpZENoYW5nZShBY3Rpdml0eVN0YXRl
OjpBbGxGbGFncyAmIH5BY3Rpdml0eVN0YXRlOjpJc0luV2luZG93KTsKIH0KIAogLSAodm9pZClf
YXBwbGljYXRpb25EaWRDcmVhdGVXaW5kb3dDb250ZXh0CkBAIC04OTUsNyArODk1LDcgQEAgLSAo
dm9pZClfYXBwbGljYXRpb25XaWxsRW50ZXJGb3JlZ3JvdW5kCiAgICAgX3dlYlZpZXctPl9wYWdl
LT5hcHBsaWNhdGlvbldpbGxFbnRlckZvcmVncm91bmQoKTsKICAgICBpZiAoYXV0byBkcmF3aW5n
QXJlYSA9IF93ZWJWaWV3LT5fcGFnZS0+ZHJhd2luZ0FyZWEoKSkKICAgICAgICAgZHJhd2luZ0Fy
ZWEtPmhpZGVDb250ZW50VW50aWxBbnlVcGRhdGUoKTsKLSAgICBfd2ViVmlldy0+X3BhZ2UtPnZp
ZXdTdGF0ZURpZENoYW5nZShWaWV3U3RhdGU6OkFsbEZsYWdzICYgflZpZXdTdGF0ZTo6SXNJbldp
bmRvdywgdHJ1ZSwgV2ViUGFnZVByb3h5OjpWaWV3U3RhdGVDaGFuZ2VEaXNwYXRjaE1vZGU6Oklt
bWVkaWF0ZSk7CisgICAgX3dlYlZpZXctPl9wYWdlLT5hY3Rpdml0eVN0YXRlRGlkQ2hhbmdlKEFj
dGl2aXR5U3RhdGU6OkFsbEZsYWdzICYgfkFjdGl2aXR5U3RhdGU6OklzSW5XaW5kb3csIHRydWUs
IFdlYlBhZ2VQcm94eTo6QWN0aXZpdHlTdGF0ZUNoYW5nZURpc3BhdGNoTW9kZTo6SW1tZWRpYXRl
KTsKIH0KIAogQGVuZApJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2lvcy9XZWJQYWdl
UHJveHlJT1MubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2lvcy9X
ZWJQYWdlUHJveHlJT1MubW0JKHJldmlzaW9uIDIwODE5NykKKysrIFNvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9pb3MvV2ViUGFnZVByb3h5SU9TLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0zMDMsNyAr
MzAzLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnN5bmNocm9uaXplRHluYW1pY1ZpZQogICAgIC8v
IElmIG1fZHluYW1pY1ZpZXdwb3J0U2l6ZVVwZGF0ZVdhaXRpbmdGb3JUYXJnZXQgaXMgZmFsc2Us
IHdlIGFyZSB3YWl0aW5nIGZvciB0aGUgbmV4dCB2YWxpZCBmcmFtZSB3aXRoIHRoZSBob3BlIGl0
IGlzIHRoZSBvbmUgZm9yIHRoZSBuZXcgdGFyZ2V0LgogICAgIC8vIElmIG1fZHluYW1pY1ZpZXdw
b3J0U2l6ZVVwZGF0ZVdhaXRpbmdGb3JUYXJnZXQgaXMgc3RpbGwgdHJ1ZSwgdGhpcyBpcyBhIGRl
c3BlcmF0ZSBhdHRlbXB0IHRvIGdldCB0aGUgdmFsaWQgZnJhbWUgYmVmb3JlIGZpbmlzaGluZyB0
aGUgYW5pbWF0aW9uLgogICAgIGlmIChtX2R5bmFtaWNWaWV3cG9ydFNpemVVcGRhdGVXYWl0aW5n
Rm9yTGF5ZXJUcmVlQ29tbWl0KQotICAgICAgICBtX2RyYXdpbmdBcmVhLT53YWl0Rm9yRGlkVXBk
YXRlVmlld1N0YXRlKCk7CisgICAgICAgIG1fZHJhd2luZ0FyZWEtPndhaXRGb3JEaWRVcGRhdGVB
Y3Rpdml0eVN0YXRlKCk7CiAKICAgICBtX2R5bmFtaWNWaWV3cG9ydFNpemVVcGRhdGVXYWl0aW5n
Rm9yVGFyZ2V0ID0gZmFsc2U7CiAgICAgbV9keW5hbWljVmlld3BvcnRTaXplVXBkYXRlV2FpdGlu
Z0ZvckxheWVyVHJlZUNvbW1pdCA9IGZhbHNlOwpJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL21hYy9SZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYVByb3h5LmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9SZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYVBy
b3h5LmgJKHJldmlzaW9uIDIwODE5NykKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMv
UmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWFQcm94eS5oCSh3b3JraW5nIGNvcHkpCkBAIC03Myw3
ICs3Myw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCB1cGRhdGVEZWJ1Z0luZGljYXRvclBvc2l0aW9u
KCk7CiAgICAgdm9pZCBpbml0aWFsaXplRGVidWdJbmRpY2F0b3IoKTsKIAotICAgIHZvaWQgd2Fp
dEZvckRpZFVwZGF0ZVZpZXdTdGF0ZSgpIG92ZXJyaWRlOworICAgIHZvaWQgd2FpdEZvckRpZFVw
ZGF0ZUFjdGl2aXR5U3RhdGUoKSBvdmVycmlkZTsKICAgICB2b2lkIGhpZGVDb250ZW50VW50aWxQ
ZW5kaW5nVXBkYXRlKCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBoaWRlQ29udGVudFVudGlsQW55VXBk
YXRlKCkgb3ZlcnJpZGU7CiAgICAgYm9vbCBoYXNWaXNpYmxlQ29udGVudCgpIGNvbnN0IG92ZXJy
aWRlOwpJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9SZW1vdGVMYXllclRyZWVE
cmF3aW5nQXJlYVByb3h5Lm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9tYWMvUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWFQcm94eS5tbQkocmV2aXNpb24gMjA4MTk3
KQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9SZW1vdGVMYXllclRyZWVEcmF3aW5n
QXJlYVByb3h5Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC00MTgsMTggKzQxOCwxOCBAQCB2b2lkIFJl
bW90ZUxheWVyVHJlZURyYXdpbmdBcmVhUHJveHk6OmRpCiAKICAgICBtX2xhc3RWaXNpYmxlVHJh
bnNhY3Rpb25JRCA9IG1fdHJhbnNhY3Rpb25JREZvclBlbmRpbmdDQUNvbW1pdDsKIAotICAgIG1f
d2ViUGFnZVByb3h5LmRpZFVwZGF0ZVZpZXdTdGF0ZSgpOworICAgIG1fd2ViUGFnZVByb3h5LmRp
ZFVwZGF0ZUFjdGl2aXR5U3RhdGUoKTsKIH0KIAotdm9pZCBSZW1vdGVMYXllclRyZWVEcmF3aW5n
QXJlYVByb3h5Ojp3YWl0Rm9yRGlkVXBkYXRlVmlld1N0YXRlKCkKK3ZvaWQgUmVtb3RlTGF5ZXJU
cmVlRHJhd2luZ0FyZWFQcm94eTo6d2FpdEZvckRpZFVwZGF0ZUFjdGl2aXR5U3RhdGUoKQogewog
ICAgIC8vIFdlIG11c3Qgc2VuZCB0aGUgZGlkVXBkYXRlIG1lc3NhZ2UgYmVmb3JlIGJsb2NraW5n
IG9uIHRoZSBuZXh0IGNvbW1pdCwgb3RoZXJ3aXNlCiAgICAgLy8gd2UgY2FuIGJlIGd1YXJhbnRl
ZWQgdGhhdCB0aGUgbmV4dCBjb21taXQgd29uJ3QgY29tZSB1bnRpbCBhZnRlciB0aGUgd2FpdEZv
ckFuZERpc3BhdGNoSW1tZWRpYXRlbHkgdGltZXMgb3V0LgogICAgIGlmIChtX2RpZFVwZGF0ZU1l
c3NhZ2VTdGF0ZSAhPSBEb2VzTm90TmVlZERpZFVwZGF0ZSkKICAgICAgICAgZGlkUmVmcmVzaERp
c3BsYXkobW9ub3RvbmljYWxseUluY3JlYXNpbmdUaW1lKCkpOwogCi0gICAgc3RhdGljIHN0ZDo6
Y2hyb25vOjptaWxsaXNlY29uZHMgdmlld1N0YXRlVXBkYXRlVGltZW91dCA9IFtdIHsKLSAgICAg
ICAgaWYgKGlkIHZhbHVlID0gW1tOU1VzZXJEZWZhdWx0cyBzdGFuZGFyZFVzZXJEZWZhdWx0c10g
b2JqZWN0Rm9yS2V5OkAiV2ViS2l0T3ZlcnJpZGVWaWV3U3RhdGVVcGRhdGVUaW1lb3V0Il0pCisg
ICAgc3RhdGljIHN0ZDo6Y2hyb25vOjptaWxsaXNlY29uZHMgYWN0aXZpdHlTdGF0ZVVwZGF0ZVRp
bWVvdXQgPSBbXSB7CisgICAgICAgIGlmIChpZCB2YWx1ZSA9IFtbTlNVc2VyRGVmYXVsdHMgc3Rh
bmRhcmRVc2VyRGVmYXVsdHNdIG9iamVjdEZvcktleTpAIldlYktpdE92ZXJyaWRlQWN0aXZpdHlT
dGF0ZVVwZGF0ZVRpbWVvdXQiXSkKICAgICAgICAgICAgIHJldHVybiBzdGQ6OmNocm9ubzo6ZHVy
YXRpb25fY2FzdDxzdGQ6OmNocm9ubzo6bWlsbGlzZWNvbmRzPihzdGQ6OmNocm9ubzo6ZHVyYXRp
b248ZG91YmxlPihbdmFsdWUgZG91YmxlVmFsdWVdKSk7CiAKICNpZiBQTEFURk9STShJT1MpCkBA
IC00MzgsNyArNDM4LDcgQEAgdm9pZCBSZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYVByb3h5Ojp3
YQogICAgICAgICByZXR1cm4gc3RkOjpjaHJvbm86Om1pbGxpc2Vjb25kcygyNTApOwogI2VuZGlm
CiAgICAgfSgpOwotICAgIG1fd2ViUGFnZVByb3h5LnByb2Nlc3MoKS5jb25uZWN0aW9uKCktPndh
aXRGb3JBbmREaXNwYXRjaEltbWVkaWF0ZWx5PE1lc3NhZ2VzOjpSZW1vdGVMYXllclRyZWVEcmF3
aW5nQXJlYVByb3h5OjpDb21taXRMYXllclRyZWU+KG1fd2ViUGFnZVByb3h5LnBhZ2VJRCgpLCB2
aWV3U3RhdGVVcGRhdGVUaW1lb3V0LCBJUEM6OldhaXRGb3JPcHRpb246OkludGVycnVwdFdhaXRp
bmdJZlN5bmNNZXNzYWdlQXJyaXZlcyk7CisgICAgbV93ZWJQYWdlUHJveHkucHJvY2VzcygpLmNv
bm5lY3Rpb24oKS0+d2FpdEZvckFuZERpc3BhdGNoSW1tZWRpYXRlbHk8TWVzc2FnZXM6OlJlbW90
ZUxheWVyVHJlZURyYXdpbmdBcmVhUHJveHk6OkNvbW1pdExheWVyVHJlZT4obV93ZWJQYWdlUHJv
eHkucGFnZUlEKCksIGFjdGl2aXR5U3RhdGVVcGRhdGVUaW1lb3V0LCBJUEM6OldhaXRGb3JPcHRp
b246OkludGVycnVwdFdhaXRpbmdJZlN5bmNNZXNzYWdlQXJyaXZlcyk7CiB9CiAKIHZvaWQgUmVt
b3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWFQcm94eTo6ZGlzcGF0Y2hBZnRlckVuc3VyaW5nRHJhd2lu
ZyhzdGQ6OmZ1bmN0aW9uPHZvaWQgKENhbGxiYWNrQmFzZTo6RXJyb3IpPiBjYWxsYmFja0Z1bmN0
aW9uKQpJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9UaWxlZENvcmVBbmltYXRp
b25EcmF3aW5nQXJlYVByb3h5LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL21hYy9UaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYVByb3h5LmgJKHJldmlzaW9uIDIw
ODE5NykKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvVGlsZWRDb3JlQW5pbWF0aW9u
RHJhd2luZ0FyZWFQcm94eS5oCSh3b3JraW5nIGNvcHkpCkBAIC01Miw3ICs1Miw3IEBAIHByaXZh
dGU6CiAgICAgdm9pZCBhZGp1c3RUcmFuc2llbnRab29tKGRvdWJsZSBzY2FsZSwgV2ViQ29yZTo6
RmxvYXRQb2ludCBvcmlnaW4pIG92ZXJyaWRlOwogICAgIHZvaWQgY29tbWl0VHJhbnNpZW50Wm9v
bShkb3VibGUgc2NhbGUsIFdlYkNvcmU6OkZsb2F0UG9pbnQgb3JpZ2luKSBvdmVycmlkZTsKIAot
ICAgIHZvaWQgd2FpdEZvckRpZFVwZGF0ZVZpZXdTdGF0ZSgpIG92ZXJyaWRlOworICAgIHZvaWQg
d2FpdEZvckRpZFVwZGF0ZUFjdGl2aXR5U3RhdGUoKSBvdmVycmlkZTsKICAgICB2b2lkIGRpc3Bh
dGNoQWZ0ZXJFbnN1cmluZ0RyYXdpbmcoc3RkOjpmdW5jdGlvbjx2b2lkIChDYWxsYmFja0Jhc2U6
OkVycm9yKT4pIG92ZXJyaWRlOwogCiAgICAgdm9pZCB3aWxsU2VuZFVwZGF0ZUdlb21ldHJ5KCkg
b3ZlcnJpZGU7CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1RpbGVkQ29yZUFu
aW1hdGlvbkRyYXdpbmdBcmVhUHJveHkubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL21hYy9UaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYVByb3h5Lm1tCShyZXZp
c2lvbiAyMDgxOTcpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1RpbGVkQ29yZUFu
aW1hdGlvbkRyYXdpbmdBcmVhUHJveHkubW0JKHdvcmtpbmcgY29weSkKQEAgLTEzMSwxMCArMTMx
LDEwIEBAIHZvaWQgVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWFQcm94eToKICAgICAgICAg
c2VuZFVwZGF0ZUdlb21ldHJ5KCk7CiB9CiAKLXZvaWQgVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2lu
Z0FyZWFQcm94eTo6d2FpdEZvckRpZFVwZGF0ZVZpZXdTdGF0ZSgpCit2b2lkIFRpbGVkQ29yZUFu
aW1hdGlvbkRyYXdpbmdBcmVhUHJveHk6OndhaXRGb3JEaWRVcGRhdGVBY3Rpdml0eVN0YXRlKCkK
IHsKLSAgICBhdXRvIHZpZXdTdGF0ZVVwZGF0ZVRpbWVvdXQgPSBzdGQ6OmNocm9ubzo6bWlsbGlz
ZWNvbmRzKDI1MCk7Ci0gICAgbV93ZWJQYWdlUHJveHkucHJvY2VzcygpLmNvbm5lY3Rpb24oKS0+
d2FpdEZvckFuZERpc3BhdGNoSW1tZWRpYXRlbHk8TWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RGlk
VXBkYXRlVmlld1N0YXRlPihtX3dlYlBhZ2VQcm94eS5wYWdlSUQoKSwgdmlld1N0YXRlVXBkYXRl
VGltZW91dCwgSVBDOjpXYWl0Rm9yT3B0aW9uOjpJbnRlcnJ1cHRXYWl0aW5nSWZTeW5jTWVzc2Fn
ZUFycml2ZXMpOworICAgIGF1dG8gYWN0aXZpdHlTdGF0ZVVwZGF0ZVRpbWVvdXQgPSBzdGQ6OmNo
cm9ubzo6bWlsbGlzZWNvbmRzKDI1MCk7CisgICAgbV93ZWJQYWdlUHJveHkucHJvY2VzcygpLmNv
bm5lY3Rpb24oKS0+d2FpdEZvckFuZERpc3BhdGNoSW1tZWRpYXRlbHk8TWVzc2FnZXM6OldlYlBh
Z2VQcm94eTo6RGlkVXBkYXRlQWN0aXZpdHlTdGF0ZT4obV93ZWJQYWdlUHJveHkucGFnZUlEKCks
IGFjdGl2aXR5U3RhdGVVcGRhdGVUaW1lb3V0LCBJUEM6OldhaXRGb3JPcHRpb246OkludGVycnVw
dFdhaXRpbmdJZlN5bmNNZXNzYWdlQXJyaXZlcyk7CiB9CiAKIHZvaWQgVGlsZWRDb3JlQW5pbWF0
aW9uRHJhd2luZ0FyZWFQcm94eTo6aW50cmluc2ljQ29udGVudFNpemVEaWRDaGFuZ2UoY29uc3Qg
SW50U2l6ZSYgbmV3SW50cmluc2ljQ29udGVudFNpemUpCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuY3BwCShyZXZpc2lvbiAyMDgxOTcp
CisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTUzNSwxNCArNTM1LDE0IEBAIHZvaWQgUGx1Z2luVmlldzo6d2ViUGFn
ZURlc3Ryb3llZCgpCiAgICAgbV93ZWJQYWdlID0gMDsKIH0KIAotdm9pZCBQbHVnaW5WaWV3Ojp2
aWV3U3RhdGVEaWRDaGFuZ2UoVmlld1N0YXRlOjpGbGFncyBjaGFuZ2VkKQordm9pZCBQbHVnaW5W
aWV3OjphY3Rpdml0eVN0YXRlRGlkQ2hhbmdlKEFjdGl2aXR5U3RhdGU6OkZsYWdzIGNoYW5nZWQp
CiB7CiAgICAgaWYgKCFtX3BsdWdpbiB8fCAhbV9pc0luaXRpYWxpemVkKQogICAgICAgICByZXR1
cm47CiAKLSAgICBpZiAoY2hhbmdlZCAmIFZpZXdTdGF0ZTo6SXNWaXNpYmxlT3JPY2NsdWRlZCkK
KyAgICBpZiAoY2hhbmdlZCAmIEFjdGl2aXR5U3RhdGU6OklzVmlzaWJsZU9yT2NjbHVkZWQpCiAg
ICAgICAgIG1fcGx1Z2luLT53aW5kb3dWaXNpYmlsaXR5Q2hhbmdlZChtX3dlYlBhZ2UtPmlzVmlz
aWJsZU9yT2NjbHVkZWQoKSk7Ci0gICAgaWYgKGNoYW5nZWQgJiBWaWV3U3RhdGU6OldpbmRvd0lz
QWN0aXZlKQorICAgIGlmIChjaGFuZ2VkICYgQWN0aXZpdHlTdGF0ZTo6V2luZG93SXNBY3RpdmUp
CiAgICAgICAgIG1fcGx1Z2luLT53aW5kb3dGb2N1c0NoYW5nZWQobV93ZWJQYWdlLT53aW5kb3dJ
c0ZvY3VzZWQoKSk7CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lu
cy9QbHVnaW5WaWV3LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9Q
bHVnaW5zL1BsdWdpblZpZXcuaAkocmV2aXNpb24gMjA4MTk3KQorKysgU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuaAkod29ya2luZyBjb3B5KQpAQCAtMzEsNiAr
MzEsNyBAQAogI2luY2x1ZGUgIlBsdWdpbi5oIgogI2luY2x1ZGUgIlBsdWdpbkNvbnRyb2xsZXIu
aCIKICNpbmNsdWRlICJXZWJGcmFtZS5oIgorI2luY2x1ZGUgPFdlYkNvcmUvQWN0aXZpdHlTdGF0
ZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRmluZE9wdGlvbnMuaD4KICNpbmNsdWRlIDxXZWJDb3Jl
L0ltYWdlLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9NZWRpYUNhblN0YXJ0TGlzdGVuZXIuaD4KQEAg
LTM5LDcgKzQwLDYgQEAKICNpbmNsdWRlIDxXZWJDb3JlL1Jlc291cmNlRXJyb3IuaD4KICNpbmNs
dWRlIDxXZWJDb3JlL1Jlc291cmNlUmVzcG9uc2UuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1RpbWVy
Lmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9WaWV3U3RhdGUuaD4KICNpbmNsdWRlIDxtZW1vcnk+CiAj
aW5jbHVkZSA8d3RmL0RlcXVlLmg+CiAjaW5jbHVkZSA8d3RmL1J1bkxvb3AuaD4KQEAgLTc3LDcg
Kzc3LDcgQEAgcHVibGljOgogICAgIHZvaWQgbWFudWFsTG9hZERpZEZpbmlzaExvYWRpbmcoKTsK
ICAgICB2b2lkIG1hbnVhbExvYWREaWRGYWlsKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3Im
KTsKIAotICAgIHZvaWQgdmlld1N0YXRlRGlkQ2hhbmdlKFdlYkNvcmU6OlZpZXdTdGF0ZTo6Rmxh
Z3MgY2hhbmdlZCk7CisgICAgdm9pZCBhY3Rpdml0eVN0YXRlRGlkQ2hhbmdlKFdlYkNvcmU6OkFj
dGl2aXR5U3RhdGU6OkZsYWdzIGNoYW5nZWQpOwogICAgIHZvaWQgc2V0TGF5ZXJIb3N0aW5nTW9k
ZShMYXllckhvc3RpbmdNb2RlKTsKIAogI2lmIFBMQVRGT1JNKENPQ09BKQpJbmRleDogU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0FjY2VsZXJhdGVkRHJhd2luZ0FyZWEuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9BY2NlbGVyYXRl
ZERyYXdpbmdBcmVhLmNwcAkocmV2aXNpb24gMjA4MTk3KQorKysgU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9XZWJQYWdlL0FjY2VsZXJhdGVkRHJhd2luZ0FyZWEuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0zNjksOSArMzY5LDkgQEAgdm9pZCBBY2NlbGVyYXRlZERyYXdpbmdBcmVhOjpkZXN0cm95
TmF0aQogfQogI2VuZGlmCiAKLXZvaWQgQWNjZWxlcmF0ZWREcmF3aW5nQXJlYTo6dmlld1N0YXRl
RGlkQ2hhbmdlKFZpZXdTdGF0ZTo6RmxhZ3MgY2hhbmdlZCwgYm9vbCwgY29uc3QgVmVjdG9yPHVp
bnQ2NF90PiYpCit2b2lkIEFjY2VsZXJhdGVkRHJhd2luZ0FyZWE6OmFjdGl2aXR5U3RhdGVEaWRD
aGFuZ2UoQWN0aXZpdHlTdGF0ZTo6RmxhZ3MgY2hhbmdlZCwgYm9vbCwgY29uc3QgVmVjdG9yPHVp
bnQ2NF90PiYpCiB7Ci0gICAgaWYgKGNoYW5nZWQgJiBWaWV3U3RhdGU6OklzVmlzaWJsZSkgewor
ICAgIGlmIChjaGFuZ2VkICYgQWN0aXZpdHlTdGF0ZTo6SXNWaXNpYmxlKSB7CiAgICAgICAgIGlm
IChtX3dlYlBhZ2UuaXNWaXNpYmxlKCkpCiAgICAgICAgICAgICByZXN1bWVQYWludGluZygpOwog
ICAgICAgICBlbHNlCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvQWNj
ZWxlcmF0ZWREcmF3aW5nQXJlYS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvV2ViUGFnZS9BY2NlbGVyYXRlZERyYXdpbmdBcmVhLmgJKHJldmlzaW9uIDIwODE5NykK
KysrIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9BY2NlbGVyYXRlZERyYXdpbmdB
cmVhLmgJKHdvcmtpbmcgY29weSkKQEAgLTY4LDcgKzY4LDcgQEAgcHJvdGVjdGVkOgogICAgIHZv
aWQgZGVzdHJveU5hdGl2ZVN1cmZhY2VIYW5kbGVGb3JDb21wb3NpdGluZyhib29sJikgb3ZlcnJp
ZGU7CiAjZW5kaWYKIAotICAgIHZvaWQgdmlld1N0YXRlRGlkQ2hhbmdlKFdlYkNvcmU6OlZpZXdT
dGF0ZTo6RmxhZ3MsIGJvb2wgLyogd2FudHNEaWRVcGRhdGVWaWV3U3RhdGUgKi8sIGNvbnN0IFZl
Y3Rvcjx1aW50NjRfdD4mIC8qIGNhbGxiYWNrSURzICovKSBvdmVycmlkZTsKKyAgICB2b2lkIGFj
dGl2aXR5U3RhdGVEaWRDaGFuZ2UoV2ViQ29yZTo6QWN0aXZpdHlTdGF0ZTo6RmxhZ3MsIGJvb2wg
Lyogd2FudHNEaWRVcGRhdGVBY3Rpdml0eVN0YXRlICovLCBjb25zdCBWZWN0b3I8dWludDY0X3Q+
JiAvKiBjYWxsYmFja0lEcyAqLykgb3ZlcnJpZGU7CiAgICAgdm9pZCBhdHRhY2hWaWV3T3Zlcmxh
eUdyYXBoaWNzTGF5ZXIoV2ViQ29yZTo6RnJhbWUqLCBXZWJDb3JlOjpHcmFwaGljc0xheWVyKikg
b3ZlcnJpZGU7CiAKICAgICB2b2lkIGxheWVySG9zdERpZEZsdXNoTGF5ZXJzKCkgb3ZlcnJpZGU7
CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvRHJhd2luZ0FyZWEuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvRHJhd2luZ0Fy
ZWEuaAkocmV2aXNpb24gMjA4MTk3KQorKysgU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQ
YWdlL0RyYXdpbmdBcmVhLmgJKHdvcmtpbmcgY29weSkKQEAgLTI4LDEyICsyOCwxMiBAQAogI2lu
Y2x1ZGUgIkRyYXdpbmdBcmVhSW5mby5oIgogI2luY2x1ZGUgIkxheWVyVHJlZUNvbnRleHQuaCIK
ICNpbmNsdWRlICJNZXNzYWdlUmVjZWl2ZXIuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL0FjdGl2aXR5
U3RhdGUuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0Zsb2F0UmVjdC5oPgogI2luY2x1ZGUgPFdlYkNv
cmUvSW50UmVjdC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvTGF5ZXJGbHVzaFRocm90dGxlU3RhdGUu
aD4KICNpbmNsdWRlIDxXZWJDb3JlL0xheW91dE1pbGVzdG9uZXMuaD4KICNpbmNsdWRlIDxXZWJD
b3JlL1BsYXRmb3JtU2NyZWVuLmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9WaWV3U3RhdGUuaD4KICNp
bmNsdWRlIDxmdW5jdGlvbmFsPgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAjaW5jbHVkZSA8
d3RmL05vbmNvcHlhYmxlLmg+CkBAIC0xMjAsNyArMTIwLDcgQEAgcHVibGljOgogCiAgICAgdmly
dHVhbCB2b2lkIGRpc3BhdGNoQWZ0ZXJFbnN1cmluZ1VwZGF0ZWRTY3JvbGxQb3NpdGlvbihzdGQ6
OmZ1bmN0aW9uPHZvaWQgKCk+KTsKIAotICAgIHZpcnR1YWwgdm9pZCB2aWV3U3RhdGVEaWRDaGFu
Z2UoV2ViQ29yZTo6Vmlld1N0YXRlOjpGbGFncywgYm9vbCAvKiB3YW50c0RpZFVwZGF0ZVZpZXdT
dGF0ZSAqLywgY29uc3QgVmVjdG9yPHVpbnQ2NF90PiYgLyogY2FsbGJhY2tJRHMgKi8pIHsgfQor
ICAgIHZpcnR1YWwgdm9pZCBhY3Rpdml0eVN0YXRlRGlkQ2hhbmdlKFdlYkNvcmU6OkFjdGl2aXR5
U3RhdGU6OkZsYWdzLCBib29sIC8qIHdhbnRzRGlkVXBkYXRlQWN0aXZpdHlTdGF0ZSAqLywgY29u
c3QgVmVjdG9yPHVpbnQ2NF90PiYgLyogY2FsbGJhY2tJRHMgKi8pIHsgfQogICAgIHZpcnR1YWwg
dm9pZCBzZXRMYXllckhvc3RpbmdNb2RlKExheWVySG9zdGluZ01vZGUpIHsgfQogCiAgICAgdmly
dHVhbCBib29sIG1hcmtMYXllcnNWb2xhdGlsZUltbWVkaWF0ZWx5SWZQb3NzaWJsZSgpIHsgcmV0
dXJuIHRydWU7IH0KSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQ
YWdlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2Uv
V2ViUGFnZS5jcHAJKHJldmlzaW9uIDIwODE5NykKKysrIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvV2ViUGFnZS9XZWJQYWdlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzc2LDcgKzM3Niw3IEBA
IFdlYlBhZ2U6OldlYlBhZ2UodWludDY0X3QgcGFnZUlELCBjb25zdCAKICAgICAsIG1fbWF4aW11
bVJlbmRlcmluZ1N1cHByZXNzaW9uVG9rZW4oMCkKICAgICAsIG1fc2Nyb2xsUGlubmluZ0JlaGF2
aW9yKERvTm90UGluKQogICAgICwgbV91c2VBc3luY1Njcm9sbGluZyhmYWxzZSkKLSAgICAsIG1f
dmlld1N0YXRlKHBhcmFtZXRlcnMudmlld1N0YXRlKQorICAgICwgbV9hY3Rpdml0eVN0YXRlKHBh
cmFtZXRlcnMuYWN0aXZpdHlTdGF0ZSkKICAgICAsIG1fdXNlckFjdGl2aXR5KCJQcm9jZXNzIHN1
cHByZXNzaW9uIGRpc2FibGVkIGZvciBwYWdlLiIpCiAgICAgLCBtX3VzZXJBY3Rpdml0eUh5c3Rl
cmVzaXMoW3RoaXNdKEh5c3RlcmVzaXNTdGF0ZSkgeyB1cGRhdGVVc2VyQWN0aXZpdHkoKTsgfSkK
ICAgICAsIG1fcGVuZGluZ05hdmlnYXRpb25JRCgwKQpAQCAtNDkzLDcgKzQ5Myw3IEBAIFdlYlBh
Z2U6OldlYlBhZ2UodWludDY0X3QgcGFnZUlELCBjb25zdCAKICAgICBzZXRQYWdpbmF0aW9uTGlu
ZUdyaWRFbmFibGVkKHBhcmFtZXRlcnMucGFnaW5hdGlvbkxpbmVHcmlkRW5hYmxlZCk7CiAgICAg
CiAgICAgLy8gSWYgdGhlIHBhZ2UgaXMgY3JlYXRlZCBvZmYtc2NyZWVuLCBpdHMgdmlzaWJpbGl0
eVN0YXRlIHNob3VsZCBiZSBwcmVyZW5kZXIuCi0gICAgbV9wYWdlLT5zZXRWaWV3U3RhdGUobV92
aWV3U3RhdGUpOworICAgIG1fcGFnZS0+c2V0QWN0aXZpdHlTdGF0ZShtX2FjdGl2aXR5U3RhdGUp
OwogICAgIGlmICghaXNWaXNpYmxlKCkpCiAgICAgICAgIG1fcGFnZS0+c2V0SXNQcmVyZW5kZXIo
KTsKICAgICBzZXRQYWdlU3VwcHJlc3NlZChmYWxzZSk7CkBAIC01NzUsOCArNTc1LDggQEAgV2Vi
UGFnZTo6V2ViUGFnZSh1aW50NjRfdCBwYWdlSUQsIGNvbnN0IAogCiB2b2lkIFdlYlBhZ2U6OnJl
aW5pdGlhbGl6ZVdlYlBhZ2UoY29uc3QgV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycyYgcGFyYW1l
dGVycykKIHsKLSAgICBpZiAobV92aWV3U3RhdGUgIT0gcGFyYW1ldGVycy52aWV3U3RhdGUpCi0g
ICAgICAgIHNldFZpZXdTdGF0ZShwYXJhbWV0ZXJzLnZpZXdTdGF0ZSwgZmFsc2UsIFZlY3Rvcjx1
aW50NjRfdD4oKSk7CisgICAgaWYgKG1fYWN0aXZpdHlTdGF0ZSAhPSBwYXJhbWV0ZXJzLmFjdGl2
aXR5U3RhdGUpCisgICAgICAgIHNldEFjdGl2aXR5U3RhdGUocGFyYW1ldGVycy5hY3Rpdml0eVN0
YXRlLCBmYWxzZSwgVmVjdG9yPHVpbnQ2NF90PigpKTsKICAgICBpZiAobV9sYXllckhvc3RpbmdN
b2RlICE9IHBhcmFtZXRlcnMubGF5ZXJIb3N0aW5nTW9kZSkKICAgICAgICAgc2V0TGF5ZXJIb3N0
aW5nTW9kZShwYXJhbWV0ZXJzLmxheWVySG9zdGluZ01vZGUpOwogfQpAQCAtMjU2Nyw3ICsyNTY3
LDcgQEAgdm9pZCBXZWJQYWdlOjpzZXRDYW5TdGFydE1lZGlhVGltZXJGaXJlZAogCiB2b2lkIFdl
YlBhZ2U6OnVwZGF0ZUlzSW5XaW5kb3coYm9vbCBpc0luaXRpYWxTdGF0ZSkKIHsKLSAgICBib29s
IGlzSW5XaW5kb3cgPSBtX3ZpZXdTdGF0ZSAmIFdlYkNvcmU6OlZpZXdTdGF0ZTo6SXNJbldpbmRv
dzsKKyAgICBib29sIGlzSW5XaW5kb3cgPSBtX2FjdGl2aXR5U3RhdGUgJiBXZWJDb3JlOjpBY3Rp
dml0eVN0YXRlOjpJc0luV2luZG93OwogCiAgICAgaWYgKCFpc0luV2luZG93KSB7CiAgICAgICAg
IG1fc2V0Q2FuU3RhcnRNZWRpYVRpbWVyLnN0b3AoKTsKQEAgLTI1OTAsMTggKzI1OTAsMTggQEAg
dm9pZCBXZWJQYWdlOjp1cGRhdGVJc0luV2luZG93KGJvb2wgaXNJbgogICAgICAgICBsYXlvdXRJ
Zk5lZWRlZCgpOwogfQogCi12b2lkIFdlYlBhZ2U6OnNldFZpZXdTdGF0ZShWaWV3U3RhdGU6OkZs
YWdzIHZpZXdTdGF0ZSwgYm9vbCB3YW50c0RpZFVwZGF0ZVZpZXdTdGF0ZSwgY29uc3QgVmVjdG9y
PHVpbnQ2NF90PiYgY2FsbGJhY2tJRHMpCit2b2lkIFdlYlBhZ2U6OnNldEFjdGl2aXR5U3RhdGUo
QWN0aXZpdHlTdGF0ZTo6RmxhZ3MgYWN0aXZpdHlTdGF0ZSwgYm9vbCB3YW50c0RpZFVwZGF0ZUFj
dGl2aXR5U3RhdGUsIGNvbnN0IFZlY3Rvcjx1aW50NjRfdD4mIGNhbGxiYWNrSURzKQogewotICAg
IFZpZXdTdGF0ZTo6RmxhZ3MgY2hhbmdlZCA9IG1fdmlld1N0YXRlIF4gdmlld1N0YXRlOwotICAg
IG1fdmlld1N0YXRlID0gdmlld1N0YXRlOworICAgIEFjdGl2aXR5U3RhdGU6OkZsYWdzIGNoYW5n
ZWQgPSBtX2FjdGl2aXR5U3RhdGUgXiBhY3Rpdml0eVN0YXRlOworICAgIG1fYWN0aXZpdHlTdGF0
ZSA9IGFjdGl2aXR5U3RhdGU7CiAKLSAgICBtX3BhZ2UtPnNldFZpZXdTdGF0ZSh2aWV3U3RhdGUp
OworICAgIG1fcGFnZS0+c2V0QWN0aXZpdHlTdGF0ZShhY3Rpdml0eVN0YXRlKTsKICAgICBmb3Ig
KGF1dG8qIHBsdWdpblZpZXcgOiBtX3BsdWdpblZpZXdzKQotICAgICAgICBwbHVnaW5WaWV3LT52
aWV3U3RhdGVEaWRDaGFuZ2UoY2hhbmdlZCk7CisgICAgICAgIHBsdWdpblZpZXctPmFjdGl2aXR5
U3RhdGVEaWRDaGFuZ2UoY2hhbmdlZCk7CiAKLSAgICBtX2RyYXdpbmdBcmVhLT52aWV3U3RhdGVE
aWRDaGFuZ2UoY2hhbmdlZCwgd2FudHNEaWRVcGRhdGVWaWV3U3RhdGUsIGNhbGxiYWNrSURzKTsK
KyAgICBtX2RyYXdpbmdBcmVhLT5hY3Rpdml0eVN0YXRlRGlkQ2hhbmdlKGNoYW5nZWQsIHdhbnRz
RGlkVXBkYXRlQWN0aXZpdHlTdGF0ZSwgY2FsbGJhY2tJRHMpOwogCi0gICAgaWYgKGNoYW5nZWQg
JiBWaWV3U3RhdGU6OklzSW5XaW5kb3cpCisgICAgaWYgKGNoYW5nZWQgJiBBY3Rpdml0eVN0YXRl
OjpJc0luV2luZG93KQogICAgICAgICB1cGRhdGVJc0luV2luZG93KCk7CiB9CiAKSW5kZXg6IFNv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAkocmV2aXNpb24gMjA4
MTk3KQorKysgU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAkod29y
a2luZyBjb3B5KQpAQCAtNDgsNiArNDgsNyBAQAogI2luY2x1ZGUgIlNoYXJlYWJsZUJpdG1hcC5o
IgogI2luY2x1ZGUgIlVzZXJEYXRhLmgiCiAjaW5jbHVkZSAiVXNlck1lZGlhUGVybWlzc2lvblJl
cXVlc3RNYW5hZ2VyLmgiCisjaW5jbHVkZSA8V2ViQ29yZS9BY3Rpdml0eVN0YXRlLmg+CiAjaW5j
bHVkZSA8V2ViQ29yZS9EaWN0YXRpb25BbHRlcm5hdGl2ZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUv
RGljdGlvbmFyeVBvcHVwSW5mby5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRHJhZ0RhdGEuaD4KQEAg
LTY4LDcgKzY5LDYgQEAKICNpbmNsdWRlIDxXZWJDb3JlL1VzZXJDb250ZW50VHlwZXMuaD4KICNp
bmNsdWRlIDxXZWJDb3JlL1VzZXJJbnRlcmZhY2VMYXlvdXREaXJlY3Rpb24uaD4KICNpbmNsdWRl
IDxXZWJDb3JlL1VzZXJTY3JpcHRUeXBlcy5oPgotI2luY2x1ZGUgPFdlYkNvcmUvVmlld1N0YXRl
Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9WaWV3cG9ydENvbmZpZ3VyYXRpb24uaD4KICNpbmNsdWRl
IDxXZWJDb3JlL1dlYkNvcmVLZXlib2FyZFVJTW9kZS5oPgogI2luY2x1ZGUgPG1lbW9yeT4KQEAg
LTQzNiw4ICs0MzYsOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBhZGRQbHVnaW5WaWV3KFBsdWdpblZp
ZXcqKTsKICAgICB2b2lkIHJlbW92ZVBsdWdpblZpZXcoUGx1Z2luVmlldyopOwogCi0gICAgYm9v
bCBpc1Zpc2libGUoKSBjb25zdCB7IHJldHVybiBtX3ZpZXdTdGF0ZSAmIFdlYkNvcmU6OlZpZXdT
dGF0ZTo6SXNWaXNpYmxlOyB9Ci0gICAgYm9vbCBpc1Zpc2libGVPck9jY2x1ZGVkKCkgY29uc3Qg
eyByZXR1cm4gbV92aWV3U3RhdGUgJiBXZWJDb3JlOjpWaWV3U3RhdGU6OklzVmlzaWJsZU9yT2Nj
bHVkZWQ7IH0KKyAgICBib29sIGlzVmlzaWJsZSgpIGNvbnN0IHsgcmV0dXJuIG1fYWN0aXZpdHlT
dGF0ZSAmIFdlYkNvcmU6OkFjdGl2aXR5U3RhdGU6OklzVmlzaWJsZTsgfQorICAgIGJvb2wgaXNW
aXNpYmxlT3JPY2NsdWRlZCgpIGNvbnN0IHsgcmV0dXJuIG1fYWN0aXZpdHlTdGF0ZSAmIFdlYkNv
cmU6OkFjdGl2aXR5U3RhdGU6OklzVmlzaWJsZU9yT2NjbHVkZWQ7IH0KIAogICAgIExheWVySG9z
dGluZ01vZGUgbGF5ZXJIb3N0aW5nTW9kZSgpIGNvbnN0IHsgcmV0dXJuIG1fbGF5ZXJIb3N0aW5n
TW9kZTsgfQogICAgIHZvaWQgc2V0TGF5ZXJIb3N0aW5nTW9kZShMYXllckhvc3RpbmdNb2RlKTsK
QEAgLTEwNDEsNyArMTA0MSw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCB0cnlSZXN0b3JlU2Nyb2xs
UG9zaXRpb24oKTsKICAgICB2b2lkIHNldEluaXRpYWxGb2N1cyhib29sIGZvcndhcmQsIGJvb2wg
aXNLZXlib2FyZEV2ZW50VmFsaWQsIGNvbnN0IFdlYktleWJvYXJkRXZlbnQmLCB1aW50NjRfdCBj
YWxsYmFja0lEKTsKICAgICB2b2lkIHVwZGF0ZUlzSW5XaW5kb3coYm9vbCBpc0luaXRpYWxTdGF0
ZSA9IGZhbHNlKTsKLSAgICB2b2lkIHNldFZpZXdTdGF0ZShXZWJDb3JlOjpWaWV3U3RhdGU6OkZs
YWdzLCBib29sIHdhbnRzRGlkVXBkYXRlVmlld1N0YXRlLCBjb25zdCBWZWN0b3I8dWludDY0X3Q+
JiBjYWxsYmFja0lEcyk7CisgICAgdm9pZCBzZXRBY3Rpdml0eVN0YXRlKFdlYkNvcmU6OkFjdGl2
aXR5U3RhdGU6OkZsYWdzLCBib29sIHdhbnRzRGlkVXBkYXRlQWN0aXZpdHlTdGF0ZSwgY29uc3Qg
VmVjdG9yPHVpbnQ2NF90PiYgY2FsbGJhY2tJRHMpOwogICAgIHZvaWQgdmFsaWRhdGVDb21tYW5k
KGNvbnN0IFN0cmluZyYsIHVpbnQ2NF90KTsKICAgICB2b2lkIGV4ZWN1dGVFZGl0Q29tbWFuZChj
b25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmKTsKICAgICB2b2lkIHNldEVkaXRhYmxlKGJvb2wp
OwpAQCAtMTQ4NSw3ICsxNDg1LDcgQEAgcHJpdmF0ZToKIAogICAgIGJvb2wgbV91c2VBc3luY1Nj
cm9sbGluZzsKIAotICAgIFdlYkNvcmU6OlZpZXdTdGF0ZTo6RmxhZ3MgbV92aWV3U3RhdGU7Cisg
ICAgV2ViQ29yZTo6QWN0aXZpdHlTdGF0ZTo6RmxhZ3MgbV9hY3Rpdml0eVN0YXRlOwogCiAgICAg
VXNlckFjdGl2aXR5IG1fdXNlckFjdGl2aXR5OwogICAgIFdlYkNvcmU6Okh5c3RlcmVzaXNBY3Rp
dml0eSBtX3VzZXJBY3Rpdml0eUh5c3RlcmVzaXM7CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbgo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbgkocmV2aXNpb24g
MjA4MTk3KQorKysgU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVz
c2FnZXMuaW4JKHdvcmtpbmcgY29weSkKQEAgLTIyLDcgKzIyLDcgQEAKIAogbWVzc2FnZXMgLT4g
V2ViUGFnZSBMZWdhY3lSZWNlaXZlciB7CiAgICAgU2V0SW5pdGlhbEZvY3VzKGJvb2wgZm9yd2Fy
ZCwgYm9vbCBpc0tleWJvYXJkRXZlbnRWYWxpZCwgV2ViS2l0OjpXZWJLZXlib2FyZEV2ZW50IGV2
ZW50LCB1aW50NjRfdCBjYWxsYmFja0lEKQotICAgIFNldFZpZXdTdGF0ZSh1bnNpZ25lZCB2aWV3
U3RhdGUsIGJvb2wgd2FudHNEaWRVcGRhdGVWaWV3U3RhdGUsIFZlY3Rvcjx1aW50NjRfdD4gY2Fs
bGJhY2tJRHMpCisgICAgU2V0QWN0aXZpdHlTdGF0ZSh1bnNpZ25lZCBhY3Rpdml0eVN0YXRlLCBi
b29sIHdhbnRzRGlkVXBkYXRlQWN0aXZpdHlTdGF0ZSwgVmVjdG9yPHVpbnQ2NF90PiBjYWxsYmFj
a0lEcykKICAgICBTZXRMYXllckhvc3RpbmdNb2RlKGVudW0gV2ViS2l0OjpMYXllckhvc3RpbmdN
b2RlIGxheWVySG9zdGluZ01vZGUpCiAgICAgU2V0UGFnZVN1cHByZXNzZWQoYm9vbCBwYWdlU3Vw
cHJlc3NlZCkKIApJbmRleDogU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9S
ZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWEuaAkocmV2
aXNpb24gMjA4MTk3KQorKysgU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9S
ZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMDIsNyArMTAy
LDcgQEAgcHJpdmF0ZToKIAogICAgIHZvaWQgbWFpbkZyYW1lQ29udGVudFNpemVDaGFuZ2VkKGNv
bnN0IFdlYkNvcmU6OkludFNpemUmKSBvdmVycmlkZTsKIAotICAgIHZvaWQgdmlld1N0YXRlRGlk
Q2hhbmdlKFdlYkNvcmU6OlZpZXdTdGF0ZTo6RmxhZ3MgY2hhbmdlZCwgYm9vbCB3YW50c0RpZFVw
ZGF0ZVZpZXdTdGF0ZSwgY29uc3QgVmVjdG9yPHVpbnQ2NF90PiYgY2FsbGJhY2tJRHMpIG92ZXJy
aWRlOworICAgIHZvaWQgYWN0aXZpdHlTdGF0ZURpZENoYW5nZShXZWJDb3JlOjpBY3Rpdml0eVN0
YXRlOjpGbGFncyBjaGFuZ2VkLCBib29sIHdhbnRzRGlkVXBkYXRlQWN0aXZpdHlTdGF0ZSwgY29u
c3QgVmVjdG9yPHVpbnQ2NF90PiYgY2FsbGJhY2tJRHMpIG92ZXJyaWRlOwogCiAgICAgYm9vbCBh
ZGp1c3RMYXllckZsdXNoVGhyb3R0bGluZyhXZWJDb3JlOjpMYXllckZsdXNoVGhyb3R0bGVTdGF0
ZTo6RmxhZ3MpIG92ZXJyaWRlOwogCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dl
YlBhZ2UvbWFjL1JlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhLm1tCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvUmVtb3RlTGF5ZXJUcmVlRHJhd2lu
Z0FyZWEubW0JKHJldmlzaW9uIDIwODE5NykKKysrIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
V2ViUGFnZS9tYWMvUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWEubW0JKHdvcmtpbmcgY29weSkK
QEAgLTQ5NywxMSArNDk3LDExIEBAIHZvaWQgUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWE6OkJh
Y2tpbmcKICAgICBtX2Nvbm5lY3Rpb24tPnNlbmRNZXNzYWdlKFdURk1vdmUobV9jb21taXRFbmNv
ZGVyKSwgeyB9KTsKIH0KIAotdm9pZCBSZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYTo6dmlld1N0
YXRlRGlkQ2hhbmdlKFZpZXdTdGF0ZTo6RmxhZ3MsIGJvb2wgd2FudHNEaWRVcGRhdGVWaWV3U3Rh
dGUsIGNvbnN0IFZlY3Rvcjx1aW50NjRfdD4mKQordm9pZCBSZW1vdGVMYXllclRyZWVEcmF3aW5n
QXJlYTo6YWN0aXZpdHlTdGF0ZURpZENoYW5nZShBY3Rpdml0eVN0YXRlOjpGbGFncywgYm9vbCB3
YW50c0RpZFVwZGF0ZUFjdGl2aXR5U3RhdGUsIGNvbnN0IFZlY3Rvcjx1aW50NjRfdD4mKQogewog
ICAgIC8vIEZJWE1FOiBTaG91bGQgd2Ugc3VzcGVuZCBwYWludGluZyB3aGlsZSBub3QgdmlzaWJs
ZSwgbGlrZSBUaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYT8gUHJvYmFibHkuCiAKLSAgICBp
ZiAod2FudHNEaWRVcGRhdGVWaWV3U3RhdGUpCisgICAgaWYgKHdhbnRzRGlkVXBkYXRlQWN0aXZp
dHlTdGF0ZSkKICAgICAgICAgc2NoZWR1bGVDb21wb3NpdGluZ0xheWVyRmx1c2hJbW1lZGlhdGVs
eSgpOwogfQogCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1Rp
bGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9UaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYS5o
CShyZXZpc2lvbiAyMDgxOTcpCisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2Uv
bWFjL1RpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhLmgJKHdvcmtpbmcgY29weSkKQEAgLTgx
LDggKzgxLDggQEAgcHJpdmF0ZToKIAogICAgIGJvb2wgc2hvdWxkVXNlVGlsZWRCYWNraW5nRm9y
RnJhbWVWaWV3KGNvbnN0IFdlYkNvcmU6OkZyYW1lVmlldyopIG92ZXJyaWRlOwogCi0gICAgdm9p
ZCB2aWV3U3RhdGVEaWRDaGFuZ2UoV2ViQ29yZTo6Vmlld1N0YXRlOjpGbGFncyBjaGFuZ2VkLCBi
b29sIHdhbnRzRGlkVXBkYXRlVmlld1N0YXRlLCBjb25zdCBWZWN0b3I8dWludDY0X3Q+Jikgb3Zl
cnJpZGU7Ci0gICAgdm9pZCBkaWRVcGRhdGVWaWV3U3RhdGVUaW1lckZpcmVkKCk7CisgICAgdm9p
ZCBhY3Rpdml0eVN0YXRlRGlkQ2hhbmdlKFdlYkNvcmU6OkFjdGl2aXR5U3RhdGU6OkZsYWdzIGNo
YW5nZWQsIGJvb2wgd2FudHNEaWRVcGRhdGVBY3Rpdml0eVN0YXRlLCBjb25zdCBWZWN0b3I8dWlu
dDY0X3Q+Jikgb3ZlcnJpZGU7CisgICAgdm9pZCBkaWRVcGRhdGVBY3Rpdml0eVN0YXRlVGltZXJG
aXJlZCgpOwogCiAgICAgdm9pZCBhdHRhY2hWaWV3T3ZlcmxheUdyYXBoaWNzTGF5ZXIoV2ViQ29y
ZTo6RnJhbWUqLCBXZWJDb3JlOjpHcmFwaGljc0xheWVyKikgb3ZlcnJpZGU7CiAKQEAgLTE0Niw5
ICsxNDYsOSBAQCBwcml2YXRlOgogCiAgICAgV2ViQ29yZTo6VHJhbnNmb3JtYXRpb25NYXRyaXgg
bV90cmFuc2Zvcm07CiAKLSAgICBSdW5Mb29wOjpUaW1lcjxUaWxlZENvcmVBbmltYXRpb25EcmF3
aW5nQXJlYT4gbV9zZW5kRGlkVXBkYXRlVmlld1N0YXRlVGltZXI7Ci0gICAgVmVjdG9yPHVpbnQ2
NF90PiBtX25leHRWaWV3U3RhdGVDaGFuZ2VDYWxsYmFja0lEczsKLSAgICBib29sIG1fd2FudHNE
aWRVcGRhdGVWaWV3U3RhdGU7CisgICAgUnVuTG9vcDo6VGltZXI8VGlsZWRDb3JlQW5pbWF0aW9u
RHJhd2luZ0FyZWE+IG1fc2VuZERpZFVwZGF0ZUFjdGl2aXR5U3RhdGVUaW1lcjsKKyAgICBWZWN0
b3I8dWludDY0X3Q+IG1fbmV4dEFjdGl2aXR5U3RhdGVDaGFuZ2VDYWxsYmFja0lEczsKKyAgICBi
b29sIG1fd2FudHNEaWRVcGRhdGVBY3Rpdml0eVN0YXRlOwogCiAgICAgV2ViQ29yZTo6R3JhcGhp
Y3NMYXllciogbV92aWV3T3ZlcmxheVJvb3RMYXllcjsKIApJbmRleDogU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9UaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYS5tbQo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1RpbGVk
Q29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhLm1tCShyZXZpc2lvbiAyMDgxOTcpCisrKyBTb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1RpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdB
cmVhLm1tCSh3b3JraW5nIGNvcHkpCkBAIC03NywxMCArNzcsMTAgQEAgVGlsZWRDb3JlQW5pbWF0
aW9uRHJhd2luZ0FyZWE6OlRpbGVkQ29yZQogICAgIDogRHJhd2luZ0FyZWEoRHJhd2luZ0FyZWFU
eXBlVGlsZWRDb3JlQW5pbWF0aW9uLCB3ZWJQYWdlKQogICAgICwgbV9sYXllclRyZWVTdGF0ZUlz
RnJvemVuKGZhbHNlKQogICAgICwgbV9sYXllckZsdXNoU2NoZWR1bGVyKHRoaXMpCi0gICAgLCBt
X2lzUGFpbnRpbmdTdXNwZW5kZWQoIShwYXJhbWV0ZXJzLnZpZXdTdGF0ZSAmIFZpZXdTdGF0ZTo6
SXNWaXNpYmxlKSkKKyAgICAsIG1faXNQYWludGluZ1N1c3BlbmRlZCghKHBhcmFtZXRlcnMuYWN0
aXZpdHlTdGF0ZSAmIEFjdGl2aXR5U3RhdGU6OklzVmlzaWJsZSkpCiAgICAgLCBtX3RyYW5zaWVu
dFpvb21TY2FsZSgxKQotICAgICwgbV9zZW5kRGlkVXBkYXRlVmlld1N0YXRlVGltZXIoUnVuTG9v
cDo6bWFpbigpLCB0aGlzLCAmVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWE6OmRpZFVwZGF0
ZVZpZXdTdGF0ZVRpbWVyRmlyZWQpCi0gICAgLCBtX3dhbnRzRGlkVXBkYXRlVmlld1N0YXRlKGZh
bHNlKQorICAgICwgbV9zZW5kRGlkVXBkYXRlQWN0aXZpdHlTdGF0ZVRpbWVyKFJ1bkxvb3A6Om1h
aW4oKSwgdGhpcywgJlRpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhOjpkaWRVcGRhdGVBY3Rp
dml0eVN0YXRlVGltZXJGaXJlZCkKKyAgICAsIG1fd2FudHNEaWRVcGRhdGVBY3Rpdml0eVN0YXRl
KGZhbHNlKQogICAgICwgbV92aWV3T3ZlcmxheVJvb3RMYXllcihudWxscHRyKQogewogICAgIG1f
d2ViUGFnZS5jb3JlUGFnZSgpLT5zZXR0aW5ncygpLnNldEZvcmNlQ29tcG9zaXRpbmdNb2RlKHRy
dWUpOwpAQCAtNDQ3LDM0ICs0NDcsMzQgQEAgYm9vbCBUaWxlZENvcmVBbmltYXRpb25EcmF3aW5n
QXJlYTo6Zmx1cwogICAgIH0KIH0KIAotdm9pZCBUaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJl
YTo6dmlld1N0YXRlRGlkQ2hhbmdlKFZpZXdTdGF0ZTo6RmxhZ3MgY2hhbmdlZCwgYm9vbCB3YW50
c0RpZFVwZGF0ZVZpZXdTdGF0ZSwgY29uc3QgVmVjdG9yPHVpbnQ2NF90PiYgbmV4dFZpZXdTdGF0
ZUNoYW5nZUNhbGxiYWNrSURzKQordm9pZCBUaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYTo6
YWN0aXZpdHlTdGF0ZURpZENoYW5nZShBY3Rpdml0eVN0YXRlOjpGbGFncyBjaGFuZ2VkLCBib29s
IHdhbnRzRGlkVXBkYXRlQWN0aXZpdHlTdGF0ZSwgY29uc3QgVmVjdG9yPHVpbnQ2NF90PiYgbmV4
dEFjdGl2aXR5U3RhdGVDaGFuZ2VDYWxsYmFja0lEcykKIHsKLSAgICBtX25leHRWaWV3U3RhdGVD
aGFuZ2VDYWxsYmFja0lEcy5hcHBlbmRWZWN0b3IobmV4dFZpZXdTdGF0ZUNoYW5nZUNhbGxiYWNr
SURzKTsKLSAgICBtX3dhbnRzRGlkVXBkYXRlVmlld1N0YXRlIHw9IHdhbnRzRGlkVXBkYXRlVmll
d1N0YXRlOworICAgIG1fbmV4dEFjdGl2aXR5U3RhdGVDaGFuZ2VDYWxsYmFja0lEcy5hcHBlbmRW
ZWN0b3IobmV4dEFjdGl2aXR5U3RhdGVDaGFuZ2VDYWxsYmFja0lEcyk7CisgICAgbV93YW50c0Rp
ZFVwZGF0ZUFjdGl2aXR5U3RhdGUgfD0gd2FudHNEaWRVcGRhdGVBY3Rpdml0eVN0YXRlOwogCi0g
ICAgaWYgKGNoYW5nZWQgJiBWaWV3U3RhdGU6OklzVmlzaWJsZSkgeworICAgIGlmIChjaGFuZ2Vk
ICYgQWN0aXZpdHlTdGF0ZTo6SXNWaXNpYmxlKSB7CiAgICAgICAgIGlmIChtX3dlYlBhZ2UuaXNW
aXNpYmxlKCkpCiAgICAgICAgICAgICByZXN1bWVQYWludGluZygpOwogICAgICAgICBlbHNlCiAg
ICAgICAgICAgICBzdXNwZW5kUGFpbnRpbmcoKTsKICAgICB9CiAKLSAgICBpZiAobV93YW50c0Rp
ZFVwZGF0ZVZpZXdTdGF0ZSB8fCAhbV9uZXh0Vmlld1N0YXRlQ2hhbmdlQ2FsbGJhY2tJRHMuaXNF
bXB0eSgpKQotICAgICAgICBtX3NlbmREaWRVcGRhdGVWaWV3U3RhdGVUaW1lci5zdGFydE9uZVNo
b3QoMCk7CisgICAgaWYgKG1fd2FudHNEaWRVcGRhdGVBY3Rpdml0eVN0YXRlIHx8ICFtX25leHRB
Y3Rpdml0eVN0YXRlQ2hhbmdlQ2FsbGJhY2tJRHMuaXNFbXB0eSgpKQorICAgICAgICBtX3NlbmRE
aWRVcGRhdGVBY3Rpdml0eVN0YXRlVGltZXIuc3RhcnRPbmVTaG90KDApOwogfQogCi12b2lkIFRp
bGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhOjpkaWRVcGRhdGVWaWV3U3RhdGVUaW1lckZpcmVk
KCkKK3ZvaWQgVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWE6OmRpZFVwZGF0ZUFjdGl2aXR5
U3RhdGVUaW1lckZpcmVkKCkKIHsKICAgICBbQ0FUcmFuc2FjdGlvbiBmbHVzaF07CiAKLSAgICBp
ZiAobV93YW50c0RpZFVwZGF0ZVZpZXdTdGF0ZSkKLSAgICAgICAgbV93ZWJQYWdlLnNlbmQoTWVz
c2FnZXM6OldlYlBhZ2VQcm94eTo6RGlkVXBkYXRlVmlld1N0YXRlKCkpOworICAgIGlmIChtX3dh
bnRzRGlkVXBkYXRlQWN0aXZpdHlTdGF0ZSkKKyAgICAgICAgbV93ZWJQYWdlLnNlbmQoTWVzc2Fn
ZXM6OldlYlBhZ2VQcm94eTo6RGlkVXBkYXRlQWN0aXZpdHlTdGF0ZSgpKTsKIAotICAgIGZvciAo
dWludDY0X3QgY2FsbGJhY2tJRCA6IG1fbmV4dFZpZXdTdGF0ZUNoYW5nZUNhbGxiYWNrSURzKQor
ICAgIGZvciAodWludDY0X3QgY2FsbGJhY2tJRCA6IG1fbmV4dEFjdGl2aXR5U3RhdGVDaGFuZ2VD
YWxsYmFja0lEcykKICAgICAgICAgbV93ZWJQYWdlLnNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94
eTo6Vm9pZENhbGxiYWNrKGNhbGxiYWNrSUQpKTsKIAotICAgIG1fbmV4dFZpZXdTdGF0ZUNoYW5n
ZUNhbGxiYWNrSURzLmNsZWFyKCk7Ci0gICAgbV93YW50c0RpZFVwZGF0ZVZpZXdTdGF0ZSA9IGZh
bHNlOworICAgIG1fbmV4dEFjdGl2aXR5U3RhdGVDaGFuZ2VDYWxsYmFja0lEcy5jbGVhcigpOwor
ICAgIG1fd2FudHNEaWRVcGRhdGVBY3Rpdml0eVN0YXRlID0gZmFsc2U7CiB9CiAKIHZvaWQgVGls
ZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWE6OnN1c3BlbmRQYWludGluZygpCg==
</data>
<flag name="review"
          id="316374"
          type_id="1"
          status="+"
          setter="kling"
    />
          </attachment>
      

    </bug>

</bugzilla>