<?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>203396</bug_id>
          
          <creation_ts>2019-10-24 20:51:39 -0700</creation_ts>
          <short_desc>[Quick Look] Move the QLPreviewConverter delegate into PreviewConverter and vend a C++ client interface</short_desc>
          <delta_ts>2019-10-25 18:49:18 -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>New Bugs</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Andy Estes">aestes</reporter>
          <assigned_to name="Andy Estes">aestes</assigned_to>
          <cc>achristensen</cc>
    
    <cc>beidson</cc>
    
    <cc>benjamin</cc>
    
    <cc>cdumez</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>commit-queue</cc>
    
    <cc>dbates</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>japhet</cc>
    
    <cc>koivisto</cc>
    
    <cc>thorton</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>wenson_hsieh</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1583644</commentid>
    <comment_count>0</comment_count>
    <who name="Andy Estes">aestes</who>
    <bug_when>2019-10-24 20:51:39 -0700</bug_when>
    <thetext>[Quick Look] Move the QLPreviewConverter delegate into PreviewConverter and vend a C++ client interface</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1583650</commentid>
    <comment_count>1</comment_count>
      <attachid>381873</attachid>
    <who name="Andy Estes">aestes</who>
    <bug_when>2019-10-24 21:08:06 -0700</bug_when>
    <thetext>Created attachment 381873
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1583652</commentid>
    <comment_count>2</comment_count>
      <attachid>381875</attachid>
    <who name="Andy Estes">aestes</who>
    <bug_when>2019-10-24 21:13:19 -0700</bug_when>
    <thetext>Created attachment 381875
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1583668</commentid>
    <comment_count>3</comment_count>
      <attachid>381880</attachid>
    <who name="Andy Estes">aestes</who>
    <bug_when>2019-10-24 22:26:34 -0700</bug_when>
    <thetext>Created attachment 381880
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1583889</commentid>
    <comment_count>4</comment_count>
      <attachid>381880</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2019-10-25 10:32:39 -0700</bug_when>
    <thetext>Comment on attachment 381880
Patch

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

&gt; Source/WTF/wtf/FeatureDefines.h:222
&gt; +#if PLATFORM(IOS)
&gt; +#define ENABLE_PREVIEW_CONVERTER 1

No IOS_FAMILY?  This seems correct, but I&apos;m double checking.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1583903</commentid>
    <comment_count>5</comment_count>
    <who name="Andy Estes">aestes</who>
    <bug_when>2019-10-25 11:00:51 -0700</bug_when>
    <thetext>(In reply to Alex Christensen from comment #4)
&gt; Comment on attachment 381880 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=381880&amp;action=review
&gt; 
&gt; &gt; Source/WTF/wtf/FeatureDefines.h:222
&gt; &gt; +#if PLATFORM(IOS)
&gt; &gt; +#define ENABLE_PREVIEW_CONVERTER 1
&gt; 
&gt; No IOS_FAMILY?  This seems correct, but I&apos;m double checking.

USE_QUICK_LOOK is also just IOS.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1584032</commentid>
    <comment_count>6</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-10-25 15:17:38 -0700</bug_when>
    <thetext>The commit-queue encountered the following flaky tests while processing attachment 381880:

The commit-queue is continuing to process your patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1584035</commentid>
    <comment_count>7</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-10-25 15:17:46 -0700</bug_when>
    <thetext>The commit-queue encountered the following flaky tests while processing attachment 381880:

imported/w3c/web-platform-tests/html/semantics/scripting-1/the-script-element/module/integrity.html bug 203394 (author: ysuzuki@apple.com)
The commit-queue is continuing to process your patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1584138</commentid>
    <comment_count>8</comment_count>
      <attachid>381880</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-10-25 18:48:12 -0700</bug_when>
    <thetext>Comment on attachment 381880
Patch

Clearing flags on attachment: 381880

Committed r251623: &lt;https://trac.webkit.org/changeset/251623&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1584139</commentid>
    <comment_count>9</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-10-25 18:48:14 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1584140</commentid>
    <comment_count>10</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2019-10-25 18:49:18 -0700</bug_when>
    <thetext>&lt;rdar://problem/56639669&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>381873</attachid>
            <date>2019-10-24 21:08:06 -0700</date>
            <delta_ts>2019-10-24 21:13:18 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-203396-20191024210805.patch</filename>
            <type>text/plain</type>
            <size>62618</size>
            <attacher name="Andy Estes">aestes</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjUxNTU1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDRlZDZmNDQ5Nzg4OTBkMjQ4YWYxMzM2
NjBhYzk1OTg1NDFjNTcxM2YuLjU1Y2Q5MTczZDBkZWQ4ZWIxYTEzN2YxYTlkY2E3ZjMyZDZjMGE1
MjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAKKzIwMTktMTAtMjQgIEFuZHkgRXN0ZXMgIDxhZXN0ZXNA
YXBwbGUuY29tPgorCisgICAgICAgIFtRdWljayBMb29rXSBNb3ZlIHRoZSBRTFByZXZpZXdDb252
ZXJ0ZXIgZGVsZWdhdGUgaW50byBQcmV2aWV3Q29udmVydGVyIGFuZCB2ZW5kIGEgQysrIGNsaWVu
dCBpbnRlcmZhY2UKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTIwMzM5NgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgICogd3RmL0ZlYXR1cmVEZWZpbmVzLmg6IERlZmluZWQgRU5BQkxFX1BSRVZJRVdfQ09OVkVS
VEVSLgorCiAyMDE5LTEwLTIzICBZdXN1a2UgU3V6dWtpICA8eXN1enVraUBhcHBsZS5jb20+CiAK
ICAgICAgICAgW0pTQ10gRmlndXJlIG91dCBtaXNzaW5nIHByZXBhcmVDYWxsT3BlcmF0aW9uCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFu
Z2VMb2cKaW5kZXggMWMxYjA4Mzg1NmQ2MzMzNmFkMmZmZmQ0MWY0YjUyYTYxZTVmYmIxYi4uZDlk
N2M1Y2YzMGQzNDk2MTcwZDE4OTZmMmVhYWU0YTM4MGQ0ZjBmOCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDEyMiBAQAorMjAxOS0xMC0yNCAgQW5keSBFc3RlcyAgPGFlc3Rlc0BhcHBsZS5jb20+CisK
KyAgICAgICAgW1F1aWNrIExvb2tdIE1vdmUgdGhlIFFMUHJldmlld0NvbnZlcnRlciBkZWxlZ2F0
ZSBpbnRvIFByZXZpZXdDb252ZXJ0ZXIgYW5kIHZlbmQgYSBDKysgY2xpZW50IGludGVyZmFjZQor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjAzMzk2CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUHJldmlld0Nv
bnZlcnRlciBleGlzdGVkIGFzIGEgdGhpbiB3cmFwcGVyIGFyb3VuZCBRTFByZXZpZXdDb252ZXJ0
ZXIgZm9yIHVzZSBieQorICAgICAgICBMZWdhY3lQcmV2aWV3TG9hZGVyIGFuZCBRdWljayBMb29r
IE5TRGF0YSBsb2FkaW5nIGluIFdlYktpdExlZ2FjeS4gVGhpcyBwYXRjaCBtYWtlcyB0d28KKyAg
ICAgICAgY2hhbmdlcyB0byB0aGlzIGFycmFuZ2VtZW50OgorCisgICAgICAgIDEuIFRoZSBRTFBy
ZXZpZXdDb252ZXJ0ZXIgZGVsZWdhdGUgYW5kIHRoZSBidWxrIG9mIHRoZSBjb252ZXJzaW9uIHN0
YXRlIG1hY2hpbmUgd2FzIG1vdmVkCisgICAgICAgIGludG8gUHJldmlld0NvbnZlcnRlciwgd2hp
Y2ggbm93IHZlbmRzIGEgQysrIGNsaWVudCBpbnRlcmZhY2UuIExlZ2FjeVByZXZpZXdMb2FkZXIg
aXMgbm93IGEKKyAgICAgICAgY2xpZW50IG9mIGl0cyBQcmV2aWV3Q29udmVydGVyLCByZXRhaW5p
bmcgdGhlIHJlc3BvbnNpaWxpdHkgb2YgaW50ZXJhY3Rpbmcgd2l0aCB0aGUKKyAgICAgICAgUmVz
b3VyY2VMb2FkZXIgYW5kIExlZ2FjeVByZXZpZXdMb2FkZXJDbGllbnQuCisKKyAgICAgICAgMi4g
VGhlIFF1aWNrIExvb2sgTlNEYXRhIGxvYWRpbmcgY29kZSBmb3IgV2ViS2l0TGVnYWN5IG5vdyB1
c2VzIFFMUHJldmlld0NvbnZlcnRlciBBUEkKKyAgICAgICAgZGlyZWN0bHkgcmF0aGVyIHRoYW4g
Y3JlYXRpbmcgYSBQcmV2aWV3Q29udmVydGVyLiBUaGlzIGNvZGUgcGF0aCBkb2VzIG5vdCByZXF1
aXJlIGEgZGVsZWdhdGUKKyAgICAgICAgbm9yIGFueSBvZiB0aGUgb3RoZXIgbG9naWMgaW4gUHJl
dmlld0NvbnZlcnRlci4KKworICAgICAgICBUaGlzIGNoYW5nZSBhbHNvIG9yZ2FuaXplcyBQcmV2
aWV3Q29udmVydGVyIGludG8gYSBjcm9zcy1wbGF0Zm9ybSAuY3BwIGZpbGUgYW5kIGFuCisgICAg
ICAgIGlPUy1zcGVjaWZpYyAubW0gZmlsZSBmb3IgdGhlIGRpcmVjdCB1c2FnZSBvZiBRTFByZXZp
ZXdDb252ZXJ0ZXIgQVBJLiBMZWdhY3lQcmV2aWV3Q29udmVydGVyCisgICAgICAgIHdhcyBhbHNv
IG9yZ2FuaXplZCBzdWNoIHRoYXQgaXQgY2FuIGJlIGNoYW5nZWQgZnJvbSAubW0gdG8gLmNwcCBp
biBhIGZ1dHVyZSBwYXRjaC4KKworICAgICAgICBObyBjaGFuZ2UgaW4gYmVoYXZpb3IuIENvdmVy
ZWQgYnkgZXhpc3RpbmcgQVBJIGFuZCBsYXlvdXQgdGVzdHMuCisKKyAgICAgICAgKiBTb3VyY2Vz
LnR4dDoKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisKKyAg
ICAgICAgKiBsb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RG9j
dW1lbnRMb2FkZXI6OnNldFByZXZpZXdDb252ZXJ0ZXIpOgorICAgICAgICAqIGxvYWRlci9Eb2N1
bWVudExvYWRlci5oOiBDaGFuZ2VkIG1fcHJldmlld0NvbnZlcnRlciBmcm9tIHN0ZDo6dW5pcXVl
X3B0ciB0byBSZWZQdHIuCisKKyAgICAgICAgKiBsb2FkZXIvU3VicmVzb3VyY2VMb2FkZXIuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6U3VicmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVSZXNwb25z
ZSk6IFVzZWQgbWFrZVVuaXF1ZSBkaXJlY3RseSBpbnN0ZWFkIG9mCisgICAgICAgIExlZ2FjeVBy
ZXZpZXdMb2FkZXI6OmNyZWF0ZSgpLgorCisgICAgICAgICogbG9hZGVyL2lvcy9MZWdhY3lQcmV2
aWV3TG9hZGVyLmg6IFByaXZhdGVseSBpbmhlcml0ZWQgZnJvbSBQcmV2aWV3Q29udmVydGVyQ2xp
ZW50IGFuZAorICAgICAgICBQcmV2aWV3Q29udmVydGVyUHJvdmlkZXIgYW5kIG1pZ3JhdGVkIFdl
YlByZXZpZXdMb2FkZXIgaXZhcnMgdG8gbWVtYmVyIHZhcmlhYmxlcy4KKworICAgICAgICAqIGxv
YWRlci9pb3MvTGVnYWN5UHJldmlld0xvYWRlci5tbToKKyAgICAgICAgKFdlYkNvcmU6Om1ha2VD
bGllbnQpOgorICAgICAgICAoV2ViQ29yZTo6TGVnYWN5UHJldmlld0xvYWRlcjo6ZGlkUmVjZWl2
ZUJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpMZWdhY3lQcmV2aWV3TG9hZGVyOjpkaWRGaW5p
c2hMb2FkaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OkxlZ2FjeVByZXZpZXdMb2FkZXI6OmRpZEZh
aWwpOgorICAgICAgICAoV2ViQ29yZTo6TGVnYWN5UHJldmlld0xvYWRlcjo6cHJldmlld0NvbnZl
cnRlckRpZFN0YXJ0Q29udmVydGluZyk6CisgICAgICAgIChXZWJDb3JlOjpMZWdhY3lQcmV2aWV3
TG9hZGVyOjpwcmV2aWV3Q29udmVydGVyRGlkUmVjZWl2ZURhdGEpOgorICAgICAgICAoV2ViQ29y
ZTo6TGVnYWN5UHJldmlld0xvYWRlcjo6cHJldmlld0NvbnZlcnRlckRpZEZpbmlzaENvbnZlcnRp
bmcpOgorICAgICAgICAoV2ViQ29yZTo6TGVnYWN5UHJldmlld0xvYWRlcjo6cHJldmlld0NvbnZl
cnRlckRpZEZhaWxVcGRhdGluZyk6CisgICAgICAgIChXZWJDb3JlOjpMZWdhY3lQcmV2aWV3TG9h
ZGVyOjpwcmV2aWV3Q29udmVydGVyRGlkRmFpbENvbnZlcnRpbmcpOgorICAgICAgICAoV2ViQ29y
ZTo6TGVnYWN5UHJldmlld0xvYWRlcjo6cHJvdmlkZVBhc3N3b3JkRm9yUHJldmlld0NvbnZlcnRl
cik6CisgICAgICAgIChXZWJDb3JlOjpMZWdhY3lQcmV2aWV3TG9hZGVyOjpwcm92aWRlTWFpblJl
c291cmNlRm9yUHJldmlld0NvbnZlcnRlcik6CisgICAgICAgIChXZWJDb3JlOjpMZWdhY3lQcmV2
aWV3TG9hZGVyOjpMZWdhY3lQcmV2aWV3TG9hZGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkxlZ2Fj
eVByZXZpZXdMb2FkZXI6OmRpZFJlY2VpdmVEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkxlZ2Fj
eVByZXZpZXdMb2FkZXI6OmRpZFJlY2VpdmVSZXNwb25zZSk6CisgICAgICAgICh0ZXN0aW5nQ2xp
ZW50KTogRGVsZXRlZC4KKyAgICAgICAgKGVtcHR5Q2xpZW50KTogRGVsZXRlZC4KKyAgICAgICAg
KC1bV2ViUHJldmlld0xvYWRlciBpbml0V2l0aFJlc291cmNlTG9hZGVyOnJlc291cmNlUmVzcG9u
c2U6XSk6IERlbGV0ZWQuCisgICAgICAgICgtW1dlYlByZXZpZXdMb2FkZXIgYXBwZW5kRGF0YUFy
cmF5Ol0pOiBEZWxldGVkLgorICAgICAgICAoLVtXZWJQcmV2aWV3TG9hZGVyIGZpbmlzaGVkQXBw
ZW5kaW5nXSk6IERlbGV0ZWQuCisgICAgICAgICgtW1dlYlByZXZpZXdMb2FkZXIgZmFpbGVkXSk6
IERlbGV0ZWQuCisgICAgICAgICgtW1dlYlByZXZpZXdMb2FkZXIgX2xvYWRQcmV2aWV3SWZOZWVk
ZWRdKTogRGVsZXRlZC4KKyAgICAgICAgKC1bV2ViUHJldmlld0xvYWRlciBjb25uZWN0aW9uOmRp
ZFJlY2VpdmVEYXRhOmxlbmd0aFJlY2VpdmVkOl0pOiBEZWxldGVkLgorICAgICAgICAoLVtXZWJQ
cmV2aWV3TG9hZGVyIGNvbm5lY3Rpb25EaWRGaW5pc2hMb2FkaW5nOl0pOiBEZWxldGVkLgorICAg
ICAgICAoaXNRdWlja0xvb2tQYXNzd29yZEVycm9yKTogRGVsZXRlZC4KKyAgICAgICAgKC1bV2Vi
UHJldmlld0xvYWRlciBjb25uZWN0aW9uOmRpZEZhaWxXaXRoRXJyb3I6XSk6IERlbGV0ZWQuCisg
ICAgICAgIChXZWJDb3JlOjpMZWdhY3lQcmV2aWV3TG9hZGVyOjp+TGVnYWN5UHJldmlld0xvYWRl
cik6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpMZWdhY3lQcmV2aWV3TG9hZGVyOjpjcmVh
dGUpOiBEZWxldGVkLgorCisgICAgICAgICogcGxhdGZvcm0vUHJldmlld0NvbnZlcnRlci5jcHA6
IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6UHJldmlld0NvbnZlcnRlcjo6c3VwcG9ydHNNSU1F
VHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpQcmV2aWV3Q29udmVydGVyOjpwcmV2aWV3UmVzcG9u
c2UgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UHJldmlld0NvbnZlcnRlcjo6cHJldmlld0Vy
cm9yIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlByZXZpZXdDb252ZXJ0ZXI6OnByZXZpZXdE
YXRhIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlByZXZpZXdDb252ZXJ0ZXI6OnVwZGF0ZU1h
aW5SZXNvdXJjZSk6CisgICAgICAgIChXZWJDb3JlOjpQcmV2aWV3Q29udmVydGVyOjphcHBlbmRG
cm9tQnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OlByZXZpZXdDb252ZXJ0ZXI6OmZpbmlzaFVw
ZGF0aW5nKToKKyAgICAgICAgKFdlYkNvcmU6OlByZXZpZXdDb252ZXJ0ZXI6OmZhaWxlZFVwZGF0
aW5nKToKKyAgICAgICAgKFdlYkNvcmU6OlByZXZpZXdDb252ZXJ0ZXI6Omhhc0NsaWVudCBjb25z
dCk6CisgICAgICAgIChXZWJDb3JlOjpQcmV2aWV3Q29udmVydGVyOjphZGRDbGllbnQpOgorICAg
ICAgICAoV2ViQ29yZTo6UHJldmlld0NvbnZlcnRlcjo6cmVtb3ZlQ2xpZW50KToKKyAgICAgICAg
KFdlYkNvcmU6OnNoYXJlZFBhc3N3b3JkRm9yVGVzdGluZyk6CisgICAgICAgIChXZWJDb3JlOjpQ
cmV2aWV3Q29udmVydGVyOjpwYXNzd29yZEZvclRlc3RpbmcpOgorICAgICAgICAoV2ViQ29yZTo6
UHJldmlld0NvbnZlcnRlcjo6c2V0UGFzc3dvcmRGb3JUZXN0aW5nKToKKyAgICAgICAgKFdlYkNv
cmU6OlByZXZpZXdDb252ZXJ0ZXI6Oml0ZXJhdGVDbGllbnRzKToKKyAgICAgICAgKFdlYkNvcmU6
OlByZXZpZXdDb252ZXJ0ZXI6OmRpZEFkZENsaWVudCk6CisgICAgICAgIChXZWJDb3JlOjpQcmV2
aWV3Q29udmVydGVyOjpkaWRGYWlsQ29udmVydGluZ1dpdGhFcnJvcik6CisgICAgICAgIChXZWJD
b3JlOjpQcmV2aWV3Q29udmVydGVyOjpkaWRGYWlsVXBkYXRpbmcpOgorICAgICAgICAoV2ViQ29y
ZTo6UHJldmlld0NvbnZlcnRlcjo6cmVwbGF5VG9DbGllbnQpOgorICAgICAgICAoV2ViQ29yZTo6
UHJldmlld0NvbnZlcnRlcjo6ZGVsZWdhdGVEaWRSZWNlaXZlRGF0YSk6CisgICAgICAgIChXZWJD
b3JlOjpQcmV2aWV3Q29udmVydGVyOjpkZWxlZ2F0ZURpZEZpbmlzaExvYWRpbmcpOgorICAgICAg
ICAoV2ViQ29yZTo6UHJldmlld0NvbnZlcnRlcjo6ZGVsZWdhdGVEaWRGYWlsV2l0aEVycm9yKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9QcmV2aWV3Q29udmVydGVyLmg6CisgICAgICAgIChXZWJDb3Jl
OjpQcmV2aWV3Q29udmVydGVyOjpQcmV2aWV3Q29udmVydGVyKTogRGVsZXRlZC4KKyAgICAgICAg
KFdlYkNvcmU6OlByZXZpZXdDb252ZXJ0ZXI6OnBsYXRmb3JtQ29udmVydGVyIGNvbnN0KTogRGVs
ZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9QcmV2aWV3Q29udmVydGVyQ2xpZW50Lmg6IENvcGll
ZCBmcm9tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1ByZXZpZXdDb252ZXJ0ZXIuaC4KKyAgICAg
ICAgKiBwbGF0Zm9ybS9QcmV2aWV3Q29udmVydGVyUHJvdmlkZXIuaDogQ29waWVkIGZyb20gU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vUHJldmlld0NvbnZlcnRlci5oLgorICAgICAgICAqIHBsYXRm
b3JtL2lvcy9QcmV2aWV3Q29udmVydGVySU9TLm1tOgorICAgICAgICAoLVtXZWJQcmV2aWV3Q29u
dmVydGVyRGVsZWdhdGUgaW5pdFdpdGhEZWxlZ2F0ZTpdKToKKyAgICAgICAgKC1bV2ViUHJldmll
d0NvbnZlcnRlckRlbGVnYXRlIGNvbm5lY3Rpb246ZGlkUmVjZWl2ZURhdGE6bGVuZ3RoUmVjZWl2
ZWQ6XSk6CisgICAgICAgICgtW1dlYlByZXZpZXdDb252ZXJ0ZXJEZWxlZ2F0ZSBjb25uZWN0aW9u
RGlkRmluaXNoTG9hZGluZzpdKToKKyAgICAgICAgKC1bV2ViUHJldmlld0NvbnZlcnRlckRlbGVn
YXRlIGNvbm5lY3Rpb246ZGlkRmFpbFdpdGhFcnJvcjpdKToKKyAgICAgICAgKFdlYkNvcmU6OlBy
ZXZpZXdDb252ZXJ0ZXI6OlByZXZpZXdDb252ZXJ0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6UHJl
dmlld0NvbnZlcnRlcjo6cGxhdGZvcm1TdXBwb3J0ZWRNSU1FVHlwZXMpOgorICAgICAgICAoV2Vi
Q29yZTo6UHJldmlld0NvbnZlcnRlcjo6c2FmZVJlcXVlc3QgY29uc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6UHJldmlld0NvbnZlcnRlcjo6cGxhdGZvcm1QcmV2aWV3UmVzcG9uc2UgY29uc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6UHJldmlld0NvbnZlcnRlcjo6cGxhdGZvcm1BcHBlbmQpOgorICAg
ICAgICAoV2ViQ29yZTo6UHJldmlld0NvbnZlcnRlcjo6cGxhdGZvcm1GaW5pc2hlZEFwcGVuZGlu
Zyk6CisgICAgICAgIChXZWJDb3JlOjpQcmV2aWV3Q29udmVydGVyOjpwbGF0Zm9ybUZhaWxlZEFw
cGVuZGluZyk6CisgICAgICAgIChXZWJDb3JlOjpQcmV2aWV3Q29udmVydGVyOjppc1BsYXRmb3Jt
UGFzc3dvcmRFcnJvciBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpvcHRpb25zV2l0aFBhc3N3
b3JkKToKKyAgICAgICAgKFdlYkNvcmU6OlByZXZpZXdDb252ZXJ0ZXI6OnBsYXRmb3JtVW5sb2Nr
V2l0aFBhc3N3b3JkKToKKyAgICAgICAgKFdlYkNvcmU6OlByZXZpZXdDb252ZXJ0ZXI6OnN1cHBv
cnRzTUlNRVR5cGUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6UHJldmlld0NvbnZlcnRl
cjo6cHJldmlld1JlcXVlc3QgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6UHJl
dmlld0NvbnZlcnRlcjo6cHJldmlld1Jlc3BvbnNlIGNvbnN0KTogRGVsZXRlZC4KKworICAgICAg
ICAqIHBsYXRmb3JtL2lvcy9RdWlja0xvb2subW06CisgICAgICAgIChXZWJDb3JlOjpyZWdpc3Rl
clFMUHJldmlld0NvbnZlcnRlcklmTmVlZGVkKTogVXNlZCBRTFByZXZpZXdDb252ZXJ0ZXIgZGly
ZWN0bHkuCisKIDIwMTktMTAtMjQgIFphbGFuIEJ1anRhcyAgPHphbGFuQGFwcGxlLmNvbT4KIAog
ICAgICAgICBbTEZDXVtJRkNdIEFkZCBzdXBwb3J0IGZvciBwYXJ0aWFsIGxlYWRpbmcgYW5kIHRy
YWlsaW5nIGNvbnRlbnQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BBTC9DaGFuZ2VMb2cg
Yi9Tb3VyY2UvV2ViQ29yZS9QQUwvQ2hhbmdlTG9nCmluZGV4IDE1ZWNkNzA1N2MwYWMxMjc1ZDVl
YjZkM2U5YTQ5Zjc2Y2QzZDEyMzQuLmJkOWUyNjZlNWFhY2NkNmI4MzYzYjhhZDJiNTNhMTZjMTU2
MmRmYzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1BBTC9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvUEFML0NoYW5nZUxvZwpAQCAtMSwzICsxLDEyIEBACisyMDE5LTEwLTI0ICBB
bmR5IEVzdGVzICA8YWVzdGVzQGFwcGxlLmNvbT4KKworICAgICAgICBbUXVpY2sgTG9va10gTW92
ZSB0aGUgUUxQcmV2aWV3Q29udmVydGVyIGRlbGVnYXRlIGludG8gUHJldmlld0NvbnZlcnRlciBh
bmQgdmVuZCBhIEMrKyBjbGllbnQgaW50ZXJmYWNlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDMzOTYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICAqIHBhbC9zcGkvaW9zL1F1aWNrTG9va1NQSS5oOgorCiAy
MDE5LTEwLTE1ICBQZW5nIExpdSAgPHBlbmcubGl1NkBhcHBsZS5jb20+CiAKICAgICAgICAgW1Bp
Y3R1cmUtaW4tUGljdHVyZSBXZWIgQVBJXSBJbXBsZW1lbnQgSFRNTFZpZGVvRWxlbWVudC5yZXF1
ZXN0UGljdHVyZUluUGljdHVyZSgpIC8gRG9jdW1lbnQuZXhpdFBpY3R1cmVJblBpY3R1cmUoKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvRmVhdHVyZURlZmluZXMuaCBiL1NvdXJjZS9XVEYv
d3RmL0ZlYXR1cmVEZWZpbmVzLmgKaW5kZXggYmViNjQzYjViM2ZhODQ4N2JmM2ZhYjFkNWIzZmFh
NTljNjFjNjZmYi4uYTBlOTU0NGYyODIxZmJhZTY0N2NiNjQ5Yzk5ODVmOWQ1MzY3ZWE5NSAxMDA2
NDQKLS0tIGEvU291cmNlL1dURi93dGYvRmVhdHVyZURlZmluZXMuaAorKysgYi9Tb3VyY2UvV1RG
L3d0Zi9GZWF0dXJlRGVmaW5lcy5oCkBAIC0yMTcsNiArMjE3LDEyIEBAIHRoZSBwdWJsaWMgaU9T
IFNESy4gU2VlIDxodHRwczovL3dlYmtpdC5vcmcvYi8xNzkxNjc+LiAqLwogI2VuZGlmCiAjZW5k
aWYKIAorI2lmICFkZWZpbmVkKEVOQUJMRV9QUkVWSUVXX0NPTlZFUlRFUikKKyNpZiBQTEFURk9S
TShJT1MpCisjZGVmaW5lIEVOQUJMRV9QUkVWSUVXX0NPTlZFUlRFUiAxCisjZW5kaWYKKyNlbmRp
ZgorCiAjZW5kaWYgLyogUExBVEZPUk0oSU9TX0ZBTUlMWSkgKi8KIAogLyogLS0tLS0tLS0tIEFw
cGxlIFdBVENIT1MgcG9ydCAtLS0tLS0tLS0gKi8KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L1BBTC9wYWwvc3BpL2lvcy9RdWlja0xvb2tTUEkuaCBiL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwv
c3BpL2lvcy9RdWlja0xvb2tTUEkuaAppbmRleCAzMmE2MDlmZGI1YThkMDBhMzQ1NTgzYWY5OTUy
M2FhNWQ2MzYyZjIzLi45ZTc0MmRkMGIyZmNjNGYxODJiMDBhMDI5MmE5ZTU0YmE4YzU3MDg1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL3NwaS9pb3MvUXVpY2tMb29rU1BJLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9zcGkvaW9zL1F1aWNrTG9va1NQSS5oCkBAIC0z
OSw2ICszOSw3IEBACiAtIChOU1VSTFJlcXVlc3QgKilzYWZlUmVxdWVzdEZvclJlcXVlc3Q6KE5T
VVJMUmVxdWVzdCAqKXJlcXVlc3Q7CiAtIChpZClpbml0V2l0aENvbm5lY3Rpb246KE5TVVJMQ29u
bmVjdGlvbiAqKWNvbm5lY3Rpb24gZGVsZWdhdGU6KGlkKWRlbGVnYXRlIHJlc3BvbnNlOihOU1VS
TFJlc3BvbnNlICopcmVzcG9uc2Ugb3B0aW9uczooTlNEaWN0aW9uYXJ5ICopb3B0aW9uczsKIC0g
KGlkKWluaXRXaXRoRGF0YTooTlNEYXRhICopZGF0YSBuYW1lOihOU1N0cmluZyAqKW5hbWUgdXRp
OihOU1N0cmluZyAqKXV0aSBvcHRpb25zOihOU0RpY3Rpb25hcnkgKilvcHRpb25zOworLSAodm9p
ZClhcHBlbmREYXRhOihOU0RhdGEgKilkYXRhOwogLSAodm9pZClhcHBlbmREYXRhQXJyYXk6KE5T
QXJyYXkgKilkYXRhQXJyYXk7CiAtICh2b2lkKWZpbmlzaENvbnZlcnRpbmc7CiAtICh2b2lkKWZp
bmlzaGVkQXBwZW5kaW5nRGF0YTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMu
dHh0IGIvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKaW5kZXggZWRiNjMwZGIyY2U4N2I1NjNi
OTI0MjJlNjE0MTQ3ODg4ZDNmZmY3Zi4uZmU5ZDA0NDlhYTA3ZWU3ZjViMGRlNGNhOTMwYWMwYWMz
YWFmMmExZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKKysrIGIvU291
cmNlL1dlYkNvcmUvU291cmNlcy50eHQKQEAgLTE3MzgsNiArMTczOCw3IEBAIHBsYXRmb3JtL1Bs
YXRmb3JtU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlLmNwcAogcGxhdGZvcm0vUGxhdGZvcm1TcGVl
Y2hTeW50aGVzaXNWb2ljZS5jcHAKIHBsYXRmb3JtL1BsYXRmb3JtU3BlZWNoU3ludGhlc2l6ZXIu
Y3BwCiBwbGF0Zm9ybS9QbGF0Zm9ybVN0cmF0ZWdpZXMuY3BwCitwbGF0Zm9ybS9QcmV2aWV3Q29u
dmVydGVyLmNwcAogcGxhdGZvcm0vUHJvY2Vzc0lkZW50aWZpZXIuY3BwCiBwbGF0Zm9ybS9SZWZl
cnJlclBvbGljeS5jcHAKIHBsYXRmb3JtL1JlbW90ZUNvbW1hbmRMaXN0ZW5lci5jcHAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBi
L1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCAz
OWNlYmVjMzMwOTZiMDNjZTUwMDg3ZGY0ZDY1ODQ1ZWE2MjM4NzlkLi41MDI4MmQ4MjRlNzUwYjcw
ZWI1OWVhZWY0NDQwMDViMDE2ODMwZmQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJD
b3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0yOTg0LDYgKzI5ODQsOCBAQAogCQlBMTlB
RUEyMjFBQUE4MDhBMDBCNTJCMjUgLyogSlNNb2NrQ29udGVudEZpbHRlclNldHRpbmdzLmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEExOUFFQTFEMUFB
QTgwNkUwMEI1MkIyNSAvKiBKU01vY2tDb250ZW50RmlsdGVyU2V0dGluZ3MuY3BwICovOyB9Owog
CQlBMTlEOTM0QjFBQTExQjFFMDBCNDZDMjQgLyogTmV0d29ya0V4dGVuc2lvbkNvbnRlbnRGaWx0
ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEExOUQ5
MzQ5MUFBMTFCMUUwMEI0NkMyNCAvKiBOZXR3b3JrRXh0ZW5zaW9uQ29udGVudEZpbHRlci5oICov
OyB9OwogCQlBMUFBOUFCOTFEMjM5MTE1MDBGRUFEQjMgLyogQ29udGVudEZpbHRlckJsb2NrZWRQ
YWdlLmh0bWwgaW4gUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEExQUE5QUI4MUQyMzkxMTUwMEZFQURCMyAvKiBDb250ZW50RmlsdGVyQmxvY2tlZFBhZ2UuaHRt
bCAqLzsgfTsKKwkJQTFBREFGN0QyMzYwRkQzRTAwOUNCNzc2IC8qIFByZXZpZXdDb252ZXJ0ZXJD
bGllbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEEx
QURBRjdCMjM2MEZEM0QwMDlDQjc3NiAvKiBQcmV2aWV3Q29udmVydGVyQ2xpZW50LmggKi87IH07
CisJCUExQURBRjdFMjM2MEZEM0UwMDlDQjc3NiAvKiBQcmV2aWV3Q29udmVydGVyUHJvdmlkZXIu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEExQURBRjdD
MjM2MEZEM0UwMDlDQjc3NiAvKiBQcmV2aWV3Q29udmVydGVyUHJvdmlkZXIuaCAqLzsgfTsKIAkJ
QTFBRkVERTYxRjhCRkY2RDAwODcwMTNGIC8qIE1vY2tQYXltZW50Q29vcmRpbmF0b3IuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEExQUZFREU0MUY4QkZG
NkQwMDg3MDEzRiAvKiBNb2NrUGF5bWVudENvb3JkaW5hdG9yLmggKi87IH07CiAJCUExQUZFREU3
MUY4QkZGNkQwMDg3MDEzRiAvKiBNb2NrUGF5bWVudENvb3JkaW5hdG9yLmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEExQUZFREU1MUY4QkZGNkQwMDg3
MDEzRiAvKiBNb2NrUGF5bWVudENvb3JkaW5hdG9yLmNwcCAqLzsgfTsKIAkJQTFCNUIyOUUxQUFB
ODQ2RTAwOEI2MDQyIC8qIE1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3MuY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTFCNUIyOUMxQUFBODQ2RTAwOEI2
MDQyIC8qIE1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3MuY3BwICovOyB9OwpAQCAtMTEzMDksNiAr
MTEzMTEsOSBAQAogCQlBMTlEOTM0ODFBQTExQjFFMDBCNDZDMjQgLyogTmV0d29ya0V4dGVuc2lv
bkNvbnRlbnRGaWx0ZXIubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGgg
PSBOZXR3b3JrRXh0ZW5zaW9uQ29udGVudEZpbHRlci5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJQTE5RDkzNDkxQUExMUIxRTAwQjQ2QzI0IC8qIE5ldHdvcmtFeHRlbnNpb25Db250
ZW50RmlsdGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE5ldHdvcmtFeHRl
bnNpb25Db250ZW50RmlsdGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUExQUE5
QUI4MUQyMzkxMTUwMEZFQURCMyAvKiBDb250ZW50RmlsdGVyQmxvY2tlZFBhZ2UuaHRtbCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHRleHQuaHRtbDsgcGF0aCA9IENvbnRlbnRGaWx0ZXJCbG9ja2VkUGFnZS5odG1sOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBMUFEQUY3OTIzNjBFRjZDMDA5Q0I3NzYgLyog
UHJldmlld0NvbnZlcnRlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBQcmV2aWV3Q29udmVydGVy
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTFBREFGN0IyMzYwRkQzRDAwOUNC
Nzc2IC8qIFByZXZpZXdDb252ZXJ0ZXJDbGllbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gUHJldmlld0NvbnZlcnRlckNsaWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQlBMUFEQUY3QzIzNjBGRDNFMDA5Q0I3NzYgLyogUHJldmlld0NvbnZlcnRlclByb3Zp
ZGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFByZXZpZXdDb252ZXJ0ZXJQ
cm92aWRlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBMUFGRURFNDFGOEJGRjZE
MDA4NzAxM0YgLyogTW9ja1BheW1lbnRDb29yZGluYXRvci5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBNb2Nr
UGF5bWVudENvb3JkaW5hdG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUExQUZF
REU1MUY4QkZGNkQwMDg3MDEzRiAvKiBNb2NrUGF5bWVudENvb3JkaW5hdG9yLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IE1vY2tQYXltZW50Q29vcmRpbmF0b3IuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQlBMUI1QjI5QzFBQUE4NDZFMDA4QjYwNDIgLyogTW9ja0NvbnRlbnRGaWx0
ZXJTZXR0aW5ncy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBNb2Nr
Q29udGVudEZpbHRlclNldHRpbmdzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAg
LTI1NzA5LDcgKzI1NzE0LDEwIEBACiAJCQkJMDY2OEUxODkwQUREOTYyNDAwNDEyOEUwIC8qIFBv
cHVwTWVudS5oICovLAogCQkJCUFCQzEyODc2MEIzM0FBNkQwMEM2OTNENSAvKiBQb3B1cE1lbnVD
bGllbnQuaCAqLywKIAkJCQlCQzNCRTEyQTBFOTgwOTJGMDA4MzU1ODggLyogUG9wdXBNZW51U3R5
bGUuaCAqLywKKwkJCQlBMUFEQUY3OTIzNjBFRjZDMDA5Q0I3NzYgLyogUHJldmlld0NvbnZlcnRl
ci5jcHAgKi8sCiAJCQkJQTFDMTUwNzgxRTNGMkIzRTAwMzJDOThDIC8qIFByZXZpZXdDb252ZXJ0
ZXIuaCAqLywKKwkJCQlBMUFEQUY3QjIzNjBGRDNEMDA5Q0I3NzYgLyogUHJldmlld0NvbnZlcnRl
ckNsaWVudC5oICovLAorCQkJCUExQURBRjdDMjM2MEZEM0UwMDlDQjc3NiAvKiBQcmV2aWV3Q29u
dmVydGVyUHJvdmlkZXIuaCAqLywKIAkJCQk1MUY2NDVEMjFGRUNEQkM4MDBCNTRERUQgLyogUHJv
Y2Vzc0lkZW50aWZpZXIuY3BwICovLAogCQkJCTUxRjY0NUQzMUZFQ0RCQzgwMEI1NERFRCAvKiBQ
cm9jZXNzSWRlbnRpZmllci5oICovLAogCQkJCUY0N0E2MzNDMUZGNkZENTAwMDgxQjNDQyAvKiBQ
cm9taXNlZEF0dGFjaG1lbnRJbmZvLmggKi8sCkBAIC0yOTA1MCw3ICsyOTA1OCw2IEBACiAJCQkJ
NzU5Q0I4MzcxOTJEQTkxOTAwMTJCQzY0IC8qIENvbnRyb2xTdGF0ZXMuaCBpbiBIZWFkZXJzICov
LAogCQkJCUZEMzE2MDI5MTJCMDI2NzYwMEMxQTM1OSAvKiBDb252b2x2ZXJOb2RlLmggaW4gSGVh
ZGVycyAqLywKIAkJCQlEOEI2MTUyRjEwMzI0OTUxMDBDODU1NEEgLyogQ29va2llLmggaW4gSGVh
ZGVycyAqLywKLQkJCQlFNEFCQUJFNDIzNjFBMzI5MDBGQTQzNDUgLyogUHJvcGVydHlDYXNjYWRl
LmggaW4gSGVhZGVycyAqLywKIAkJCQlFMTQyNEM5NDE2NEI1MkM4MDBGMzJENDAgLyogQ29va2ll
SmFyLmggaW4gSGVhZGVycyAqLywKIAkJCQk3QTU2OTk3MDIwODZDNjE5MDAwRTA0MzMgLyogQ29v
a2llUmVxdWVzdEhlYWRlckZpZWxkUHJveHkuaCBpbiBIZWFkZXJzICovLAogCQkJCTMzRDAyMTJE
MTMxREIzN0IwMDQwOTFBOCAvKiBDb29raWVTdG9yYWdlLmggaW4gSGVhZGVycyAqLywKQEAgLTMx
NDc0LDYgKzMxNDgxLDggQEAKIAkJCQk0NkRCQjY1MDFBQjhDOTZGMDBEOUE4MTMgLyogUG93ZXJP
YnNlcnZlck1hYy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQzBGMkE0NDExMzg2OUFBQjAwNjZDNTM0
IC8qIHByZXByb2Nlc3Nvci5wbSBpbiBIZWFkZXJzICovLAogCQkJCUExQzE1MDdBMUUzRjJCM0Uw
MDMyQzk4QyAvKiBQcmV2aWV3Q29udmVydGVyLmggaW4gSGVhZGVycyAqLywKKwkJCQlBMUFEQUY3
RDIzNjBGRDNFMDA5Q0I3NzYgLyogUHJldmlld0NvbnZlcnRlckNsaWVudC5oIGluIEhlYWRlcnMg
Ki8sCisJCQkJQTFBREFGN0UyMzYwRkQzRTAwOUNCNzc2IC8qIFByZXZpZXdDb252ZXJ0ZXJQcm92
aWRlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTQ2MDVGRUMyMTY2NDgwOTAwRTUzMDQ2IC8qIFBy
ZXdhcm1JbmZvcm1hdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQjcxRkU2REYxMTA5MUNCMzAw
REFFRjc3IC8qIFByaW50Q29udGV4dC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTFGNjQ1RDUxRkVD
REJDRTAwQjU0REVEIC8qIFByb2Nlc3NJZGVudGlmaWVyLmggaW4gSGVhZGVycyAqLywKQEAgLTMx
NDg1LDYgKzMxNDk0LDcgQEAKIAkJCQkxQUNBREQ3OTE4ODBEOTFDMDBEOEI3MUQgLyogUHJvZ3Jl
c3NUcmFja2VyQ2xpZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlGNDdBNjMzRDFGRjZGRDUwMDA4
MUIzQ0MgLyogUHJvbWlzZWRBdHRhY2htZW50SW5mby5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTU3
OEY0MzUxREUwMEVFQjAwM0RGQzZBIC8qIFByb21pc2VSZWplY3Rpb25FdmVudC5oIGluIEhlYWRl
cnMgKi8sCisJCQkJRTRBQkFCRTQyMzYxQTMyOTAwRkE0MzQ1IC8qIFByb3BlcnR5Q2FzY2FkZS5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJRTRCQkVEMEYxNEY0MDI1RDAwM0YwQjk4IC8qIFByb3BlcnR5
U2V0Q1NTU3R5bGVEZWNsYXJhdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMzdCQUFFNTgxOTgw
RDFERDAwNURGRTcxIC8qIFByb3RlY3Rpb25TcGFjZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTE0
Qzc2NzUwQ0U5MjNBMTAwN0VGM0NEIC8qIFByb3RlY3Rpb25TcGFjZUJhc2UuaCBpbiBIZWFkZXJz
ICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5jcHAKaW5kZXggNGMxN2Iw
YjBkNzFkNmQwZGUzYTA5ZWE1ZWYyZjY0MTFlZjhiYWMwMC4uZmMzMzMwMWZiOTFkYjEwNDYzODky
NzMwZTEwYjE3MWIxZWQ3N2NlMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Rv
Y3VtZW50TG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2Fk
ZXIuY3BwCkBAIC0yMTM4LDcgKzIxMzgsNyBAQCB2b2lkIERvY3VtZW50TG9hZGVyOjpwcmV2aWV3
UmVzcG9uc2VSZWNlaXZlZChDYWNoZWRSZXNvdXJjZSYgcmVzb3VyY2UsIGNvbnN0IFJlcwogICAg
IG1fcmVzcG9uc2UgPSByZXNwb25zZTsKIH0KIAotdm9pZCBEb2N1bWVudExvYWRlcjo6c2V0UHJl
dmlld0NvbnZlcnRlcihzdGQ6OnVuaXF1ZV9wdHI8UHJldmlld0NvbnZlcnRlcj4mJiBwcmV2aWV3
Q29udmVydGVyKQordm9pZCBEb2N1bWVudExvYWRlcjo6c2V0UHJldmlld0NvbnZlcnRlcihSZWZQ
dHI8UHJldmlld0NvbnZlcnRlcj4mJiBwcmV2aWV3Q29udmVydGVyKQogewogICAgIG1fcHJldmll
d0NvbnZlcnRlciA9IFdURk1vdmUocHJldmlld0NvbnZlcnRlcik7CiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9Eb2N1bWVudExvYWRlci5oCmluZGV4IDc0YzZkNGY5YzkwMDE5OTViNmRmNGFjYTBjMGYy
Nzk3NWY2YWUzZTMuLjcyZWUwMmRkMTc2OTZiNzQ3NDg3OTlhY2I5ZDA4NWIwZWQ4YjFlZTAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5oCkBAIC0zNTIsNyArMzUyLDcgQEAg
cHVibGljOgogICAgIFVSTCBkb2N1bWVudFVSTCgpIGNvbnN0OwogCiAjaWYgVVNFKFFVSUNLX0xP
T0spCi0gICAgdm9pZCBzZXRQcmV2aWV3Q29udmVydGVyKHN0ZDo6dW5pcXVlX3B0cjxQcmV2aWV3
Q29udmVydGVyPiYmKTsKKyAgICB2b2lkIHNldFByZXZpZXdDb252ZXJ0ZXIoUmVmUHRyPFByZXZp
ZXdDb252ZXJ0ZXI+JiYpOwogICAgIFByZXZpZXdDb252ZXJ0ZXIqIHByZXZpZXdDb252ZXJ0ZXIo
KSBjb25zdDsKICNlbmRpZgogCkBAIC01OTEsNyArNTkxLDcgQEAgcHJpdmF0ZToKICNlbmRpZgog
CiAjaWYgVVNFKFFVSUNLX0xPT0spCi0gICAgc3RkOjp1bmlxdWVfcHRyPFByZXZpZXdDb252ZXJ0
ZXI+IG1fcHJldmlld0NvbnZlcnRlcjsKKyAgICBSZWZQdHI8UHJldmlld0NvbnZlcnRlcj4gbV9w
cmV2aWV3Q29udmVydGVyOwogI2VuZGlmCiAKICNpZiBFTkFCTEUoQ09OVEVOVF9FWFRFTlNJT05T
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnJlc291cmNlTG9hZGVyLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9TdWJyZXNvdXJjZUxvYWRlci5jcHAKaW5kZXggZTEy
ZGNjYjRjYmQ4NWUyMzBlYzY4ZTgyNDc5OGMzYmNkMTgyMjQ1My4uZGQzN2MwN2I1NWRmZmJiN2I4
MWFiMGEzODcwYmRlN2UyNGJmMTA3OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVy
L1N1YnJlc291cmNlTG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3VicmVz
b3VyY2VMb2FkZXIuY3BwCkBAIC0zMzQsNyArMzM0LDcgQEAgdm9pZCBTdWJyZXNvdXJjZUxvYWRl
cjo6ZGlkUmVjZWl2ZVJlc3BvbnNlKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBD
b20KIAogI2lmIFVTRShRVUlDS19MT09LKQogICAgIGlmIChzaG91bGRDcmVhdGVQcmV2aWV3TG9h
ZGVyRm9yUmVzcG9uc2UocmVzcG9uc2UpKSB7Ci0gICAgICAgIG1fcHJldmlld0xvYWRlciA9IExl
Z2FjeVByZXZpZXdMb2FkZXI6OmNyZWF0ZSgqdGhpcywgcmVzcG9uc2UpOworICAgICAgICBtX3By
ZXZpZXdMb2FkZXIgPSBtYWtlVW5pcXVlPExlZ2FjeVByZXZpZXdMb2FkZXI+KCp0aGlzLCByZXNw
b25zZSk7CiAgICAgICAgIGlmIChtX3ByZXZpZXdMb2FkZXItPmRpZFJlY2VpdmVSZXNwb25zZShy
ZXNwb25zZSkpCiAgICAgICAgICAgICByZXR1cm47CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvbG9hZGVyL2lvcy9MZWdhY3lQcmV2aWV3TG9hZGVyLmggYi9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvaW9zL0xlZ2FjeVByZXZpZXdMb2FkZXIuaAppbmRleCAzNDg2OWFiYzMzYWYzYTFl
ZWJjNmIxNTM1OGE2Zjk5MDEwMzNmYjA3Li4yNWQ0OTU2Yzg4M2M1ODc0MWIzOGJjMDA1MDZjMDM2
NGE3NTJjYTY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvaW9zL0xlZ2FjeVBy
ZXZpZXdMb2FkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvaW9zL0xlZ2FjeVByZXZp
ZXdMb2FkZXIuaApAQCAtMjUsMTEgKzI1LDEyIEBACiAKICNwcmFnbWEgb25jZQogCisjaW5jbHVk
ZSAiUHJldmlld0NvbnZlcnRlckNsaWVudC5oIgorI2luY2x1ZGUgIlByZXZpZXdDb252ZXJ0ZXJQ
cm92aWRlci5oIgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAjaW5jbHVkZSA8d3RmL05vbmNv
cHlhYmxlLmg+CiAjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgotCi1PQkpDX0NMQVNTIFdlYlBy
ZXZpZXdMb2FkZXI7CisjaW5jbHVkZSA8d3RmL1dlYWtQdHIuaD4KIAogbmFtZXNwYWNlIFdlYkNv
cmUgewogCkBAIC0zOCwxMSArMzksMTEgQEAgY2xhc3MgUmVzb3VyY2VMb2FkZXI7CiBjbGFzcyBS
ZXNvdXJjZVJlc3BvbnNlOwogY2xhc3MgU2hhcmVkQnVmZmVyOwogCi1jbGFzcyBMZWdhY3lQcmV2
aWV3TG9hZGVyIHsKK2NsYXNzIExlZ2FjeVByZXZpZXdMb2FkZXIgZmluYWwgOiBwcml2YXRlIFBy
ZXZpZXdDb252ZXJ0ZXJDbGllbnQsIHByaXZhdGUgUHJldmlld0NvbnZlcnRlclByb3ZpZGVyIHsK
ICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShM
ZWdhY3lQcmV2aWV3TG9hZGVyKTsKIHB1YmxpYzoKLSAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRy
PExlZ2FjeVByZXZpZXdMb2FkZXI+IGNyZWF0ZShSZXNvdXJjZUxvYWRlciYsIGNvbnN0IFJlc291
cmNlUmVzcG9uc2UmKTsKKyAgICBMZWdhY3lQcmV2aWV3TG9hZGVyKFJlc291cmNlTG9hZGVyJiwg
Y29uc3QgUmVzb3VyY2VSZXNwb25zZSYpOwogICAgIH5MZWdhY3lQcmV2aWV3TG9hZGVyKCk7CiAK
ICAgICBib29sIGRpZFJlY2VpdmVSZXNwb25zZShjb25zdCBSZXNvdXJjZVJlc3BvbnNlJik7CkBA
IC01NCwxMSArNTUsMjcgQEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyB2b2lk
IHNldENsaWVudEZvclRlc3RpbmcoUmVmUHRyPExlZ2FjeVByZXZpZXdMb2FkZXJDbGllbnQ+JiYp
OwogCiBwcml2YXRlOgotICAgIGZyaWVuZCBzdGQ6OnVuaXF1ZV9wdHI8TGVnYWN5UHJldmlld0xv
YWRlcj4gc3RkOjptYWtlX3VuaXF1ZTxMZWdhY3lQcmV2aWV3TG9hZGVyPihSZXNvdXJjZUxvYWRl
ciYsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKTsKLSAgICBMZWdhY3lQcmV2aWV3TG9hZGVyKFJl
c291cmNlTG9hZGVyJiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpOworICAgIC8vIFByZXZpZXdD
b252ZXJ0ZXJDbGllbnQKKyAgICB2b2lkIHByZXZpZXdDb252ZXJ0ZXJEaWRTdGFydFVwZGF0aW5n
KFByZXZpZXdDb252ZXJ0ZXImKSBmaW5hbCB7IH07CisgICAgdm9pZCBwcmV2aWV3Q29udmVydGVy
RGlkRmluaXNoVXBkYXRpbmcoUHJldmlld0NvbnZlcnRlciYpIGZpbmFsIHsgfTsKKyAgICB2b2lk
IHByZXZpZXdDb252ZXJ0ZXJEaWRGYWlsVXBkYXRpbmcoUHJldmlld0NvbnZlcnRlciYpIGZpbmFs
OworICAgIHZvaWQgcHJldmlld0NvbnZlcnRlckRpZFN0YXJ0Q29udmVydGluZyhQcmV2aWV3Q29u
dmVydGVyJikgZmluYWw7CisgICAgdm9pZCBwcmV2aWV3Q29udmVydGVyRGlkUmVjZWl2ZURhdGEo
UHJldmlld0NvbnZlcnRlciYsIGNvbnN0IFNoYXJlZEJ1ZmZlciYpIGZpbmFsOworICAgIHZvaWQg
cHJldmlld0NvbnZlcnRlckRpZEZpbmlzaENvbnZlcnRpbmcoUHJldmlld0NvbnZlcnRlciYpIGZp
bmFsOworICAgIHZvaWQgcHJldmlld0NvbnZlcnRlckRpZEZhaWxDb252ZXJ0aW5nKFByZXZpZXdD
b252ZXJ0ZXImKSBmaW5hbDsKKworICAgIC8vIFByZXZpZXdDb252ZXJ0ZXJQcm92aWRlcgorICAg
IHZvaWQgcHJvdmlkZU1haW5SZXNvdXJjZUZvclByZXZpZXdDb252ZXJ0ZXIoUHJldmlld0NvbnZl
cnRlciYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgU2hhcmVkQnVmZmVyKik+JiYpIGZp
bmFsOworICAgIHZvaWQgcHJvdmlkZVBhc3N3b3JkRm9yUHJldmlld0NvbnZlcnRlcihQcmV2aWV3
Q29udmVydGVyJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBTdHJpbmcmKT4mJikgZmlu
YWw7CiAKLSAgICBSZXRhaW5QdHI8V2ViUHJldmlld0xvYWRlcj4gbV9wcmV2aWV3TG9hZGVyOwor
ICAgIFJlZlB0cjxQcmV2aWV3Q29udmVydGVyPiBtX2NvbnZlcnRlcjsKKyAgICBSZWY8TGVnYWN5
UHJldmlld0xvYWRlckNsaWVudD4gbV9jbGllbnQ7CisgICAgUmVmPFNoYXJlZEJ1ZmZlcj4gbV9v
cmlnaW5hbERhdGE7CisgICAgV2Vha1B0cjxSZXNvdXJjZUxvYWRlcj4gbV9yZXNvdXJjZUxvYWRl
cjsKICAgICBib29sIG1fZmluaXNoZWRMb2FkaW5nRGF0YUludG9Db252ZXJ0ZXIgeyBmYWxzZSB9
OworICAgIGJvb2wgbV9oYXNQcm9jZXNzZWRSZXNwb25zZSB7IGZhbHNlIH07CisgICAgYm9vbCBt
X25lZWRzVG9DYWxsRGlkRmluaXNoTG9hZGluZyB7IGZhbHNlIH07CisgICAgYm9vbCBtX3Nob3Vs
ZERlY2lkZVBvbGljeUJlZm9yZUxvYWRpbmc7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvaW9zL0xlZ2FjeVByZXZpZXdMb2Fk
ZXIubW0gYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvaW9zL0xlZ2FjeVByZXZpZXdMb2FkZXIubW0K
aW5kZXggOTBlOTYxNmIyMGQ5NDA0MDVhNGU1MjlhYjNmM2NjNjcyYzNlNDdkMi4uYzdlN2M4Yjkx
ZmI1NGNmOGUxOTAxN2U3YzA4YmM1N2M1NGVhOTA5MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvbG9hZGVyL2lvcy9MZWdhY3lQcmV2aWV3TG9hZGVyLm1tCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9pb3MvTGVnYWN5UHJldmlld0xvYWRlci5tbQpAQCAtMzgsMzQgKzM4LDkgQEAKICNp
bXBvcnQgIlF1aWNrTG9vay5oIgogI2ltcG9ydCAiUmVzb3VyY2VMb2FkZXIuaCIKICNpbXBvcnQg
IlNldHRpbmdzLmgiCi0jaW1wb3J0IDxwYWwvc3BpL2lvcy9RdWlja0xvb2tTUEkuaD4KICNpbXBv
cnQgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgogCi11c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKLQot
QGludGVyZmFjZSBXZWJQcmV2aWV3TG9hZGVyIDogTlNPYmplY3QgewotICAgIFdlYWtQdHI8UmVz
b3VyY2VMb2FkZXI+IF9yZXNvdXJjZUxvYWRlcjsKLSAgICBSZXNvdXJjZVJlc3BvbnNlIF9yZXNw
b25zZTsKLSAgICBSZWZQdHI8TGVnYWN5UHJldmlld0xvYWRlckNsaWVudD4gX2NsaWVudDsKLSAg
ICBzdGQ6OnVuaXF1ZV9wdHI8UHJldmlld0NvbnZlcnRlcj4gX2NvbnZlcnRlcjsKLSAgICBSZXRh
aW5QdHI8TlNNdXRhYmxlQXJyYXk+IF9idWZmZXJlZERhdGFBcnJheTsKLSAgICBCT09MIF9oYXNM
b2FkZWRQcmV2aWV3OwotICAgIEJPT0wgX2hhc1Byb2Nlc3NlZFJlc3BvbnNlOwotICAgIFJlZlB0
cjxTaGFyZWRCdWZmZXI+IF9idWZmZXJlZERhdGE7Ci0gICAgbG9uZyBsb25nIF9sZW5ndGhSZWNl
aXZlZDsKLSAgICBCT09MIF9uZWVkc1RvQ2FsbERpZEZpbmlzaExvYWRpbmc7Ci19Ci0KLS0gKGlu
c3RhbmNldHlwZSlpbml0V2l0aFJlc291cmNlTG9hZGVyOihSZXNvdXJjZUxvYWRlciYpcmVzb3Vy
Y2VMb2FkZXIgcmVzb3VyY2VSZXNwb25zZTooY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpcmVzb3Vy
Y2VSZXNwb25zZTsKLS0gKHZvaWQpYXBwZW5kRGF0YUFycmF5OihOU0FycmF5PE5TRGF0YSAqPiAq
KWRhdGFBcnJheTsKLS0gKHZvaWQpZmluaXNoZWRBcHBlbmRpbmc7Ci0tICh2b2lkKWZhaWxlZDsK
LQotQHByb3BlcnR5IChub25hdG9taWMsIHJlYWRvbmx5KSBCT09MIHNob3VsZERlY2lkZVBvbGlj
eUJlZm9yZUxvYWRpbmc7Ci0KLUBlbmQKLQotQGltcGxlbWVudGF0aW9uIFdlYlByZXZpZXdMb2Fk
ZXIKK25hbWVzcGFjZSBXZWJDb3JlIHsKIAogc3RhdGljIFJlZlB0cjxMZWdhY3lQcmV2aWV3TG9h
ZGVyQ2xpZW50PiYgdGVzdGluZ0NsaWVudCgpCiB7CkBAIC03OSwyMzkgKzU0LDIwNCBAQCBzdGF0
aWMgTGVnYWN5UHJldmlld0xvYWRlckNsaWVudCYgZW1wdHlDbGllbnQoKQogICAgIHJldHVybiBl
bXB0eUNsaWVudC5nZXQoKTsKIH0KIAotLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoUmVzb3VyY2VM
b2FkZXI6KFJlc291cmNlTG9hZGVyJilyZXNvdXJjZUxvYWRlciByZXNvdXJjZVJlc3BvbnNlOihj
b25zdCBSZXNvdXJjZVJlc3BvbnNlJilyZXNvdXJjZVJlc3BvbnNlCitzdGF0aWMgUmVmPExlZ2Fj
eVByZXZpZXdMb2FkZXJDbGllbnQ+IG1ha2VDbGllbnQoY29uc3QgUmVzb3VyY2VMb2FkZXImIGxv
YWRlciwgY29uc3QgU3RyaW5nJiBwcmV2aWV3RmlsZU5hbWUsIGNvbnN0IFN0cmluZyYgcHJldmll
d1R5cGUpCiB7Ci0gICAgaWYgKCEoc2VsZiA9IFtzdXBlciBpbml0XSkpCi0gICAgICAgIHJldHVy
biBuaWw7Ci0KLSAgICBfcmVzb3VyY2VMb2FkZXIgPSBtYWtlV2Vha1B0cihyZXNvdXJjZUxvYWRl
cik7Ci0gICAgX3Jlc3BvbnNlID0gcmVzb3VyY2VSZXNwb25zZTsKLSAgICBfY29udmVydGVyID0g
bWFrZVVuaXF1ZTxQcmV2aWV3Q29udmVydGVyPihzZWxmLCBfcmVzcG9uc2UpOwotICAgIF9idWZm
ZXJlZERhdGFBcnJheSA9IGFkb3B0TlMoW1tOU011dGFibGVBcnJheSBhbGxvY10gaW5pdF0pOwot
ICAgIF9zaG91bGREZWNpZGVQb2xpY3lCZWZvcmVMb2FkaW5nID0gcmVzb3VyY2VMb2FkZXIuZnJh
bWUoKS0+c2V0dGluZ3MoKS5zaG91bGREZWNpZGVQb2xpY3lCZWZvcmVMb2FkaW5nUXVpY2tMb29r
UHJldmlldygpOwotCi0gICAgaWYgKHRlc3RpbmdDbGllbnQoKSkKLSAgICAgICAgX2NsaWVudCA9
IHRlc3RpbmdDbGllbnQoKTsKLSAgICBlbHNlIGlmIChhdXRvIGNsaWVudCA9IHJlc291cmNlTG9h
ZGVyLmZyYW1lTG9hZGVyKCktPmNsaWVudCgpLmNyZWF0ZVByZXZpZXdMb2FkZXJDbGllbnQoX2Nv
bnZlcnRlci0+cHJldmlld0ZpbGVOYW1lKCksIF9jb252ZXJ0ZXItPnByZXZpZXdVVEkoKSkpCi0g
ICAgICAgIF9jbGllbnQgPSBXVEZNb3ZlKGNsaWVudCk7Ci0gICAgZWxzZQotICAgICAgICBfY2xp
ZW50ID0gJmVtcHR5Q2xpZW50KCk7Ci0KLSAgICBMT0coTmV0d29yaywgIldlYlByZXZpZXdDb252
ZXJ0ZXIgY3JlYXRlZCB3aXRoIHByZXZpZXcgZmlsZSBuYW1lIFwiJXNcIi4iLCBfY29udmVydGVy
LT5wcmV2aWV3RmlsZU5hbWUoKS51dGY4KCkuZGF0YSgpKTsKLSAgICByZXR1cm4gc2VsZjsKKyAg
ICBpZiAoYXV0byBjbGllbnQgPSB0ZXN0aW5nQ2xpZW50KCkpCisgICAgICAgIHJldHVybiBjbGll
bnQucmVsZWFzZU5vbk51bGwoKTsKKyAgICBpZiAoYXV0byBjbGllbnQgPSBsb2FkZXIuZnJhbWVM
b2FkZXIoKS0+Y2xpZW50KCkuY3JlYXRlUHJldmlld0xvYWRlckNsaWVudChwcmV2aWV3RmlsZU5h
bWUsIHByZXZpZXdUeXBlKSkKKyAgICAgICAgcmV0dXJuIGNsaWVudC5yZWxlYXNlTm9uTnVsbCgp
OworICAgIHJldHVybiBlbXB0eUNsaWVudCgpOwogfQogCi0tICh2b2lkKWFwcGVuZERhdGFBcnJh
eTooTlNBcnJheTxOU0RhdGEgKj4gKilkYXRhQXJyYXkKK2Jvb2wgTGVnYWN5UHJldmlld0xvYWRl
cjo6ZGlkUmVjZWl2ZUJ1ZmZlcihjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikKIHsKLSAgICBM
T0coTmV0d29yaywgIldlYlByZXZpZXdDb252ZXJ0ZXIgYXBwZW5kaW5nIGRhdGEgYXJyYXkgd2l0
aCBjb3VudCAlbGQuIiwgZGF0YUFycmF5LmNvdW50KTsKLSAgICBbX2NvbnZlcnRlci0+cGxhdGZv
cm1Db252ZXJ0ZXIoKSBhcHBlbmREYXRhQXJyYXk6ZGF0YUFycmF5XTsKLSAgICBbX2J1ZmZlcmVk
RGF0YUFycmF5IGFkZE9iamVjdHNGcm9tQXJyYXk6ZGF0YUFycmF5XTsKLSAgICBfY2xpZW50LT5k
aWRSZWNlaXZlRGF0YUFycmF5KChDRkFycmF5UmVmKWRhdGFBcnJheSk7CisgICAgaWYgKG1fZmlu
aXNoZWRMb2FkaW5nRGF0YUludG9Db252ZXJ0ZXIpCisgICAgICAgIHJldHVybiBmYWxzZTsKKwor
ICAgIExPRyhOZXR3b3JrLCAiTGVnYWN5UHJldmlld0xvYWRlciBhcHBlbmRpbmcgYnVmZmVyIHdp
dGggc2l6ZSAlbGQuIiwgYnVmZmVyLnNpemUoKSk7CisgICAgbV9vcmlnaW5hbERhdGEtPmFwcGVu
ZChidWZmZXIpOworICAgIG1fY29udmVydGVyLT51cGRhdGVNYWluUmVzb3VyY2UoKTsKKyAgICBt
X2NsaWVudC0+ZGlkUmVjZWl2ZURhdGFBcnJheSgoX19icmlkZ2UgQ0ZBcnJheVJlZilidWZmZXIu
Y3JlYXRlTlNEYXRhQXJyYXkoKS5nZXQoKSk7CisgICAgcmV0dXJuIHRydWU7CiB9CiAKLS0gKHZv
aWQpZmluaXNoZWRBcHBlbmRpbmcKK2Jvb2wgTGVnYWN5UHJldmlld0xvYWRlcjo6ZGlkRmluaXNo
TG9hZGluZygpCiB7Ci0gICAgTE9HKE5ldHdvcmssICJXZWJQcmV2aWV3Q29udmVydGVyIGZpbmlz
aGVkIGFwcGVuZGluZyBkYXRhLiIpOwotICAgIFtfY29udmVydGVyLT5wbGF0Zm9ybUNvbnZlcnRl
cigpIGZpbmlzaGVkQXBwZW5kaW5nRGF0YV07Ci0gICAgX2NsaWVudC0+ZGlkRmluaXNoTG9hZGlu
ZygpOworICAgIGlmIChtX2ZpbmlzaGVkTG9hZGluZ0RhdGFJbnRvQ29udmVydGVyKQorICAgICAg
ICByZXR1cm4gZmFsc2U7CisKKyAgICBMT0coTmV0d29yaywgIkxlZ2FjeVByZXZpZXdMb2FkZXIg
ZmluaXNoZWQgYXBwZW5kaW5nIGRhdGEuIik7CisgICAgbV9maW5pc2hlZExvYWRpbmdEYXRhSW50
b0NvbnZlcnRlciA9IHRydWU7CisgICAgbV9jb252ZXJ0ZXItPmZpbmlzaFVwZGF0aW5nKCk7Cisg
ICAgbV9jbGllbnQtPmRpZEZpbmlzaExvYWRpbmcoKTsKKyAgICByZXR1cm4gdHJ1ZTsKIH0KIAot
LSAodm9pZClmYWlsZWQKK3ZvaWQgTGVnYWN5UHJldmlld0xvYWRlcjo6ZGlkRmFpbCgpCiB7Ci0g
ICAgTE9HKE5ldHdvcmssICJXZWJQcmV2aWV3Q29udmVydGVyIGZhaWxlZC4iKTsKLSAgICBbX2Nv
bnZlcnRlci0+cGxhdGZvcm1Db252ZXJ0ZXIoKSBmaW5pc2hDb252ZXJ0aW5nXTsKLSAgICBfY2xp
ZW50LT5kaWRGYWlsKCk7CisgICAgaWYgKG1fZmluaXNoZWRMb2FkaW5nRGF0YUludG9Db252ZXJ0
ZXIpCisgICAgICAgIHJldHVybjsKKworICAgIExPRyhOZXR3b3JrLCAiTGVnYWN5UHJldmlld0xv
YWRlciBmYWlsZWQuIik7CisgICAgbV9maW5pc2hlZExvYWRpbmdEYXRhSW50b0NvbnZlcnRlciA9
IHRydWU7CisgICAgbV9jb252ZXJ0ZXItPmZhaWxlZFVwZGF0aW5nKCk7CisgICAgbV9jbGllbnQt
PmRpZEZhaWwoKTsKKyAgICBtX2NvbnZlcnRlciA9IG51bGxwdHI7CiB9CiAKLS0gKHZvaWQpX2xv
YWRQcmV2aWV3SWZOZWVkZWQKK3ZvaWQgTGVnYWN5UHJldmlld0xvYWRlcjo6cHJldmlld0NvbnZl
cnRlckRpZFN0YXJ0Q29udmVydGluZyhQcmV2aWV3Q29udmVydGVyJiBjb252ZXJ0ZXIpCiB7Ci0g
ICAgaWYgKCFfcmVzb3VyY2VMb2FkZXIpCisgICAgYXV0byByZXNvdXJjZUxvYWRlciA9IG1fcmVz
b3VyY2VMb2FkZXIuZ2V0KCk7CisgICAgaWYgKCFyZXNvdXJjZUxvYWRlcikKICAgICAgICAgcmV0
dXJuOwogCi0gICAgQVNTRVJUKCFfcmVzb3VyY2VMb2FkZXItPnJlYWNoZWRUZXJtaW5hbFN0YXRl
KCkpOwotICAgIGlmIChfaGFzTG9hZGVkUHJldmlldykKKyAgICBpZiAocmVzb3VyY2VMb2FkZXIt
PnJlYWNoZWRUZXJtaW5hbFN0YXRlKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIF9oYXNMb2Fk
ZWRQcmV2aWV3ID0gWUVTOwotICAgIFtfYnVmZmVyZWREYXRhQXJyYXkgcmVtb3ZlQWxsT2JqZWN0
c107Ci0KLSAgICBSZXNvdXJjZVJlc3BvbnNlIHJlc3BvbnNlIHsgX2NvbnZlcnRlci0+cHJldmll
d1Jlc3BvbnNlKCkgfTsKLSAgICByZXNwb25zZS5zZXRJc1F1aWNrTG9vayh0cnVlKTsKLSAgICBB
U1NFUlQocmVzcG9uc2UubWltZVR5cGUoKS5sZW5ndGgoKSk7Ci0KLSAgICBfcmVzb3VyY2VMb2Fk
ZXItPmRvY3VtZW50TG9hZGVyKCktPnNldFByZXZpZXdDb252ZXJ0ZXIoV1RGTW92ZShfY29udmVy
dGVyKSk7CisgICAgQVNTRVJUKCFtX2hhc1Byb2Nlc3NlZFJlc3BvbnNlKTsKKyAgICBtX29yaWdp
bmFsRGF0YS0+Y2xlYXIoKTsKKyAgICByZXNvdXJjZUxvYWRlci0+ZG9jdW1lbnRMb2FkZXIoKS0+
c2V0UHJldmlld0NvbnZlcnRlcihXVEZNb3ZlKG1fY29udmVydGVyKSk7CisgICAgYXV0byByZXNw
b25zZSB7IGNvbnZlcnRlci5wcmV2aWV3UmVzcG9uc2UoKSB9OwogCi0gICAgaWYgKF9zaG91bGRE
ZWNpZGVQb2xpY3lCZWZvcmVMb2FkaW5nKSB7Ci0gICAgICAgIF9oYXNQcm9jZXNzZWRSZXNwb25z
ZSA9IFlFUzsKLSAgICAgICAgX3Jlc291cmNlTG9hZGVyLT5kaWRSZWNlaXZlUHJldmlld1Jlc3Bv
bnNlKHJlc3BvbnNlKTsKKyAgICBpZiAobV9zaG91bGREZWNpZGVQb2xpY3lCZWZvcmVMb2FkaW5n
KSB7CisgICAgICAgIG1faGFzUHJvY2Vzc2VkUmVzcG9uc2UgPSB0cnVlOworICAgICAgICByZXNv
dXJjZUxvYWRlci0+ZGlkUmVjZWl2ZVByZXZpZXdSZXNwb25zZShyZXNwb25zZSk7CiAgICAgICAg
IHJldHVybjsKICAgICB9CiAKLSAgICBfaGFzUHJvY2Vzc2VkUmVzcG9uc2UgPSBOTzsKLSAgICBf
cmVzb3VyY2VMb2FkZXItPmRpZFJlY2VpdmVSZXNwb25zZShyZXNwb25zZSwgW3NlbGYsIHJldGFp
bmVkU2VsZiA9IHJldGFpblB0cihzZWxmKV0gewotICAgICAgICBfaGFzUHJvY2Vzc2VkUmVzcG9u
c2UgPSBZRVM7CisgICAgcmVzb3VyY2VMb2FkZXItPmRpZFJlY2VpdmVSZXNwb25zZShyZXNwb25z
ZSwgW3RoaXMsIHdlYWtUaGlzID0gbWFrZVdlYWtQdHIoc3RhdGljX2Nhc3Q8UHJldmlld0NvbnZl
cnRlckNsaWVudCY+KCp0aGlzKSksIGNvbnZlcnRlciA9IG1ha2VSZWYoY29udmVydGVyKV0gewor
ICAgICAgICBpZiAoIXdlYWtUaGlzKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIG1f
aGFzUHJvY2Vzc2VkUmVzcG9uc2UgPSB0cnVlOwogCi0gICAgICAgIGlmICghX3Jlc291cmNlTG9h
ZGVyKQorICAgICAgICBhdXRvIHJlc291cmNlTG9hZGVyID0gbV9yZXNvdXJjZUxvYWRlci5nZXQo
KTsKKyAgICAgICAgaWYgKCFyZXNvdXJjZUxvYWRlcikKICAgICAgICAgICAgIHJldHVybjsKIAot
ICAgICAgICBpZiAoX3Jlc291cmNlTG9hZGVyLT5yZWFjaGVkVGVybWluYWxTdGF0ZSgpKQorICAg
ICAgICBpZiAocmVzb3VyY2VMb2FkZXItPnJlYWNoZWRUZXJtaW5hbFN0YXRlKCkpCiAgICAgICAg
ICAgICByZXR1cm47CiAKLSAgICAgICAgaWYgKGF1dG8gYnVmZmVyZWREYXRhID0gV1RGTW92ZShf
YnVmZmVyZWREYXRhKSkgewotICAgICAgICAgICAgX3Jlc291cmNlTG9hZGVyLT5kaWRSZWNlaXZl
RGF0YShidWZmZXJlZERhdGEtPmRhdGEoKSwgYnVmZmVyZWREYXRhLT5zaXplKCksIF9sZW5ndGhS
ZWNlaXZlZCwgRGF0YVBheWxvYWRCeXRlcyk7Ci0gICAgICAgICAgICBfbGVuZ3RoUmVjZWl2ZWQg
PSAwOworICAgICAgICBpZiAoIWNvbnZlcnRlci0+cHJldmlld0RhdGEoKS5pc0VtcHR5KCkpIHsK
KyAgICAgICAgICAgIGF1dG8gYnVmZmVyU2l6ZSA9IGNvbnZlcnRlci0+cHJldmlld0RhdGEoKS5z
aXplKCk7CisgICAgICAgICAgICByZXNvdXJjZUxvYWRlci0+ZGlkUmVjZWl2ZUJ1ZmZlcihjb252
ZXJ0ZXItPnByZXZpZXdEYXRhKCkuY29weSgpLCBidWZmZXJTaXplLCBEYXRhUGF5bG9hZEJ5dGVz
KTsKICAgICAgICAgfQogCi0gICAgICAgIGlmIChfcmVzb3VyY2VMb2FkZXItPnJlYWNoZWRUZXJt
aW5hbFN0YXRlKCkpCisgICAgICAgIGlmIChyZXNvdXJjZUxvYWRlci0+cmVhY2hlZFRlcm1pbmFs
U3RhdGUoKSkKICAgICAgICAgICAgIHJldHVybjsKIAotICAgICAgICBpZiAoX25lZWRzVG9DYWxs
RGlkRmluaXNoTG9hZGluZykgewotICAgICAgICAgICAgX25lZWRzVG9DYWxsRGlkRmluaXNoTG9h
ZGluZyA9IE5POwotICAgICAgICAgICAgX3Jlc291cmNlTG9hZGVyLT5kaWRGaW5pc2hMb2FkaW5n
KE5ldHdvcmtMb2FkTWV0cmljcyB7IH0pOworICAgICAgICBpZiAobV9uZWVkc1RvQ2FsbERpZEZp
bmlzaExvYWRpbmcpIHsKKyAgICAgICAgICAgIG1fbmVlZHNUb0NhbGxEaWRGaW5pc2hMb2FkaW5n
ID0gZmFsc2U7CisgICAgICAgICAgICByZXNvdXJjZUxvYWRlci0+ZGlkRmluaXNoTG9hZGluZyhO
ZXR3b3JrTG9hZE1ldHJpY3MgeyB9KTsKICAgICAgICAgfQogICAgIH0pOwogfQogCi0tICh2b2lk
KWNvbm5lY3Rpb246KE5TVVJMQ29ubmVjdGlvbiAqKWNvbm5lY3Rpb24gZGlkUmVjZWl2ZURhdGE6
KE5TRGF0YSAqKWRhdGEgbGVuZ3RoUmVjZWl2ZWQ6KGxvbmcgbG9uZylsZW5ndGhSZWNlaXZlZAor
dm9pZCBMZWdhY3lQcmV2aWV3TG9hZGVyOjpwcmV2aWV3Q29udmVydGVyRGlkUmVjZWl2ZURhdGEo
UHJldmlld0NvbnZlcnRlciYsIGNvbnN0IFNoYXJlZEJ1ZmZlciYgZGF0YSkKIHsKLSAgICBpZiAo
IV9yZXNvdXJjZUxvYWRlcikKKyAgICBhdXRvIHJlc291cmNlTG9hZGVyID0gbV9yZXNvdXJjZUxv
YWRlci5nZXQoKTsKKyAgICBpZiAoIXJlc291cmNlTG9hZGVyKQogICAgICAgICByZXR1cm47CiAK
LSAgICBBU1NFUlRfVU5VU0VEKGNvbm5lY3Rpb24sICFjb25uZWN0aW9uKTsKLSAgICBpZiAoX3Jl
c291cmNlTG9hZGVyLT5yZWFjaGVkVGVybWluYWxTdGF0ZSgpKQorICAgIGlmIChyZXNvdXJjZUxv
YWRlci0+cmVhY2hlZFRlcm1pbmFsU3RhdGUoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgW3Nl
bGYgX2xvYWRQcmV2aWV3SWZOZWVkZWRdOwotCi0gICAgYXV0byBkYXRhTGVuZ3RoID0gZGF0YS5s
ZW5ndGg7Ci0KLSAgICAvLyBRdWlja0xvb2sgY29kZSBzZW5kcyB1cyBhIG5pbCBkYXRhIGF0IHRp
bWVzLiBUaGUgY2hlY2sgYmVsb3cgaXMgdGhlIHNhbWUgYXMgdGhlIG9uZSBpbgotICAgIC8vIFJl
c291cmNlSGFuZGxlTWFjLmNwcCBhZGRlZCBmb3IgYSBkaWZmZXJlbnQgYnVnLgotICAgIGlmICgh
ZGF0YUxlbmd0aCkKKyAgICBpZiAoZGF0YS5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybjsKIAot
ICAgIGlmIChfaGFzUHJvY2Vzc2VkUmVzcG9uc2UpIHsKLSAgICAgICAgX3Jlc291cmNlTG9hZGVy
LT5kaWRSZWNlaXZlRGF0YShyZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIqPihkYXRhLmJ5dGVz
KSwgZGF0YUxlbmd0aCwgbGVuZ3RoUmVjZWl2ZWQsIERhdGFQYXlsb2FkQnl0ZXMpOworICAgIGlm
ICghbV9oYXNQcm9jZXNzZWRSZXNwb25zZSkKICAgICAgICAgcmV0dXJuOwotICAgIH0KIAotICAg
IGlmICghX2J1ZmZlcmVkRGF0YSkKLSAgICAgICAgX2J1ZmZlcmVkRGF0YSA9IFNoYXJlZEJ1ZmZl
cjo6Y3JlYXRlKGRhdGEpOwotICAgIGVsc2UKLSAgICAgICAgX2J1ZmZlcmVkRGF0YS0+YXBwZW5k
KGRhdGEpOwotICAgIF9sZW5ndGhSZWNlaXZlZCArPSBsZW5ndGhSZWNlaXZlZDsKKyAgICBhdXRv
IGRhdGFDb3B5ID0gZGF0YS5jb3B5KCk7CisgICAgcmVzb3VyY2VMb2FkZXItPmRpZFJlY2VpdmVC
dWZmZXIoV1RGTW92ZShkYXRhQ29weSksIGRhdGFDb3B5LT5zaXplKCksIERhdGFQYXlsb2FkQnl0
ZXMpOwogfQogCi0tICh2b2lkKWNvbm5lY3Rpb25EaWRGaW5pc2hMb2FkaW5nOihOU1VSTENvbm5l
Y3Rpb24gKiljb25uZWN0aW9uCit2b2lkIExlZ2FjeVByZXZpZXdMb2FkZXI6OnByZXZpZXdDb252
ZXJ0ZXJEaWRGaW5pc2hDb252ZXJ0aW5nKFByZXZpZXdDb252ZXJ0ZXImKQogewotICAgIGlmICgh
X3Jlc291cmNlTG9hZGVyKQorICAgIGF1dG8gcmVzb3VyY2VMb2FkZXIgPSBtX3Jlc291cmNlTG9h
ZGVyLmdldCgpOworICAgIGlmICghcmVzb3VyY2VMb2FkZXIpCiAgICAgICAgIHJldHVybjsKIAot
ICAgIEFTU0VSVF9VTlVTRUQoY29ubmVjdGlvbiwgIWNvbm5lY3Rpb24pOwotICAgIGlmIChfcmVz
b3VyY2VMb2FkZXItPnJlYWNoZWRUZXJtaW5hbFN0YXRlKCkpCisgICAgaWYgKHJlc291cmNlTG9h
ZGVyLT5yZWFjaGVkVGVybWluYWxTdGF0ZSgpKQogICAgICAgICByZXR1cm47Ci0gICAgCi0gICAg
QVNTRVJUKF9oYXNMb2FkZWRQcmV2aWV3KTsKIAotICAgIGlmICghX2hhc1Byb2Nlc3NlZFJlc3Bv
bnNlKSB7Ci0gICAgICAgIF9uZWVkc1RvQ2FsbERpZEZpbmlzaExvYWRpbmcgPSBZRVM7CisgICAg
aWYgKCFtX2hhc1Byb2Nlc3NlZFJlc3BvbnNlKSB7CisgICAgICAgIG1fbmVlZHNUb0NhbGxEaWRG
aW5pc2hMb2FkaW5nID0gdHJ1ZTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIF9yZXNv
dXJjZUxvYWRlci0+ZGlkRmluaXNoTG9hZGluZyhOZXR3b3JrTG9hZE1ldHJpY3MgeyB9KTsKKyAg
ICByZXNvdXJjZUxvYWRlci0+ZGlkRmluaXNoTG9hZGluZyhOZXR3b3JrTG9hZE1ldHJpY3MgeyB9
KTsKIH0KIAotc3RhdGljIGlubGluZSBib29sIGlzUXVpY2tMb29rUGFzc3dvcmRFcnJvcihOU0Vy
cm9yICplcnJvcikKK3ZvaWQgTGVnYWN5UHJldmlld0xvYWRlcjo6cHJldmlld0NvbnZlcnRlckRp
ZEZhaWxVcGRhdGluZyhQcmV2aWV3Q29udmVydGVyJikKIHsKLSAgICByZXR1cm4gZXJyb3IuY29k
ZSA9PSBrUUxSZXR1cm5QYXNzd29yZFByb3RlY3RlZCAmJiBbZXJyb3IuZG9tYWluIGlzRXF1YWxU
b1N0cmluZzpAIlF1aWNrTG9va0Vycm9yRG9tYWluIl07CisgICAgaWYgKGF1dG8gcmVzb3VyY2VM
b2FkZXIgPSBtX3Jlc291cmNlTG9hZGVyLmdldCgpKQorICAgICAgICByZXNvdXJjZUxvYWRlci0+
ZGlkRmFpbChyZXNvdXJjZUxvYWRlci0+Y2Fubm90U2hvd1VSTEVycm9yKCkpOwogfQogCi0tICh2
b2lkKWNvbm5lY3Rpb246KE5TVVJMQ29ubmVjdGlvbiAqKWNvbm5lY3Rpb24gZGlkRmFpbFdpdGhF
cnJvcjooTlNFcnJvciAqKWVycm9yCit2b2lkIExlZ2FjeVByZXZpZXdMb2FkZXI6OnByZXZpZXdD
b252ZXJ0ZXJEaWRGYWlsQ29udmVydGluZyhQcmV2aWV3Q29udmVydGVyJiBjb252ZXJ0ZXIpCiB7
Ci0gICAgaWYgKCFfcmVzb3VyY2VMb2FkZXIpCisgICAgYXV0byByZXNvdXJjZUxvYWRlciA9IG1f
cmVzb3VyY2VMb2FkZXIuZ2V0KCk7CisgICAgaWYgKCFyZXNvdXJjZUxvYWRlcikKICAgICAgICAg
cmV0dXJuOwogCi0gICAgQVNTRVJUX1VOVVNFRChjb25uZWN0aW9uLCAhY29ubmVjdGlvbik7Ci0g
ICAgaWYgKF9yZXNvdXJjZUxvYWRlci0+cmVhY2hlZFRlcm1pbmFsU3RhdGUoKSkKKyAgICBpZiAo
cmVzb3VyY2VMb2FkZXItPnJlYWNoZWRUZXJtaW5hbFN0YXRlKCkpCiAgICAgICAgIHJldHVybjsK
IAotICAgIGlmICghaXNRdWlja0xvb2tQYXNzd29yZEVycm9yKGVycm9yKSkgewotICAgICAgICBf
cmVzb3VyY2VMb2FkZXItPmRpZEZhaWwoZXJyb3IpOworICAgIHJlc291cmNlTG9hZGVyLT5kaWRG
YWlsKGNvbnZlcnRlci5wcmV2aWV3RXJyb3IoKSk7Cit9CisKK3ZvaWQgTGVnYWN5UHJldmlld0xv
YWRlcjo6cHJvdmlkZVBhc3N3b3JkRm9yUHJldmlld0NvbnZlcnRlcihQcmV2aWV3Q29udmVydGVy
JiBjb252ZXJ0ZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgU3RyaW5nJik+JiYgY29t
cGxldGlvbkhhbmRsZXIpCit7CisgICAgQVNTRVJUX1VOVVNFRChjb252ZXJ0ZXIsICZjb252ZXJ0
ZXIgPT0gbV9jb252ZXJ0ZXIpOworCisgICAgYXV0byByZXNvdXJjZUxvYWRlciA9IG1fcmVzb3Vy
Y2VMb2FkZXIuZ2V0KCk7CisgICAgaWYgKCFyZXNvdXJjZUxvYWRlcikgeworICAgICAgICBjb21w
bGV0aW9uSGFuZGxlcih7IH0pOwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgaWYgKCFf
Y2xpZW50LT5zdXBwb3J0c1Bhc3N3b3JkRW50cnkoKSkgewotICAgICAgICBfcmVzb3VyY2VMb2Fk
ZXItPmRpZEZhaWwoX3Jlc291cmNlTG9hZGVyLT5jYW5ub3RTaG93VVJMRXJyb3IoKSk7CisgICAg
aWYgKHJlc291cmNlTG9hZGVyLT5yZWFjaGVkVGVybWluYWxTdGF0ZSgpKSB7CisgICAgICAgIGNv
bXBsZXRpb25IYW5kbGVyKHsgfSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBfY2xp
ZW50LT5kaWRSZXF1ZXN0UGFzc3dvcmQoW3NlbGYsIHJldGFpbmVkU2VsZiA9IHJldGFpblB0cihz
ZWxmKV0gKGNvbnN0IFN0cmluZyYgcGFzc3dvcmQpIHsKLSAgICAgICAgX2NvbnZlcnRlciA9IG1h
a2VVbmlxdWU8UHJldmlld0NvbnZlcnRlcj4oc2VsZiwgX3Jlc3BvbnNlLCBwYXNzd29yZCk7Ci0g
ICAgICAgIFtfY29udmVydGVyLT5wbGF0Zm9ybUNvbnZlcnRlcigpIGFwcGVuZERhdGFBcnJheTpf
YnVmZmVyZWREYXRhQXJyYXkuZ2V0KCldOwotICAgICAgICBbX2NvbnZlcnRlci0+cGxhdGZvcm1D
b252ZXJ0ZXIoKSBmaW5pc2hlZEFwcGVuZGluZ0RhdGFdOwotICAgIH0pOwotfQotCi1AZW5kCi0K
LW5hbWVzcGFjZSBXZWJDb3JlIHsKKyAgICBpZiAoIW1fY2xpZW50LT5zdXBwb3J0c1Bhc3N3b3Jk
RW50cnkoKSkgeworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcih7IH0pOworICAgICAgICByZXR1
cm47CisgICAgfQogCi1MZWdhY3lQcmV2aWV3TG9hZGVyOjpMZWdhY3lQcmV2aWV3TG9hZGVyKFJl
c291cmNlTG9hZGVyJiBsb2FkZXIsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKQot
ICAgIDogbV9wcmV2aWV3TG9hZGVyIHsgYWRvcHROUyhbW1dlYlByZXZpZXdMb2FkZXIgYWxsb2Nd
IGluaXRXaXRoUmVzb3VyY2VMb2FkZXI6bG9hZGVyIHJlc291cmNlUmVzcG9uc2U6cmVzcG9uc2Vd
KSB9Ci17CisgICAgbV9jbGllbnQtPmRpZFJlcXVlc3RQYXNzd29yZChXVEZNb3ZlKGNvbXBsZXRp
b25IYW5kbGVyKSk7CiB9CiAKLUxlZ2FjeVByZXZpZXdMb2FkZXI6On5MZWdhY3lQcmV2aWV3TG9h
ZGVyKCkKK3ZvaWQgTGVnYWN5UHJldmlld0xvYWRlcjo6cHJvdmlkZU1haW5SZXNvdXJjZUZvclBy
ZXZpZXdDb252ZXJ0ZXIoUHJldmlld0NvbnZlcnRlciYgY29udmVydGVyLCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKGNvbnN0IFNoYXJlZEJ1ZmZlciopPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewor
ICAgIEFTU0VSVF9VTlVTRUQoY29udmVydGVyLCAmY29udmVydGVyID09IG1fY29udmVydGVyKTsK
KyAgICBjb21wbGV0aW9uSGFuZGxlcihtX29yaWdpbmFsRGF0YS5wdHIoKSk7CiB9CiAKLXN0ZDo6
dW5pcXVlX3B0cjxMZWdhY3lQcmV2aWV3TG9hZGVyPiBMZWdhY3lQcmV2aWV3TG9hZGVyOjpjcmVh
dGUoUmVzb3VyY2VMb2FkZXImIGxvYWRlciwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9u
c2UpCi17Ci0gICAgQVNTRVJUKFByZXZpZXdDb252ZXJ0ZXI6OnN1cHBvcnRzTUlNRVR5cGUocmVz
cG9uc2UubWltZVR5cGUoKSkpOwotICAgIHJldHVybiBtYWtlVW5pcXVlPExlZ2FjeVByZXZpZXdM
b2FkZXI+KGxvYWRlciwgcmVzcG9uc2UpOwotfQorTGVnYWN5UHJldmlld0xvYWRlcjo6fkxlZ2Fj
eVByZXZpZXdMb2FkZXIoKSA9IGRlZmF1bHQ7CiAKLWJvb2wgTGVnYWN5UHJldmlld0xvYWRlcjo6
ZGlkUmVjZWl2ZVJlc3BvbnNlKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKQorTGVnYWN5UHJldmll
d0xvYWRlcjo6TGVnYWN5UHJldmlld0xvYWRlcihSZXNvdXJjZUxvYWRlciYgbG9hZGVyLCBjb25z
dCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSkKKyAgICA6IG1fY29udmVydGVyIHsgUHJldmll
d0NvbnZlcnRlcjo6Y3JlYXRlKHJlc3BvbnNlLCAqdGhpcykgfQorICAgICwgbV9jbGllbnQgeyBt
YWtlQ2xpZW50KGxvYWRlciwgbV9jb252ZXJ0ZXItPnByZXZpZXdGaWxlTmFtZSgpLCBtX2NvbnZl
cnRlci0+cHJldmlld1VUSSgpKSB9CisgICAgLCBtX29yaWdpbmFsRGF0YSB7IFNoYXJlZEJ1ZmZl
cjo6Y3JlYXRlKCkgfQorICAgICwgbV9yZXNvdXJjZUxvYWRlciB7IG1ha2VXZWFrUHRyKGxvYWRl
cikgfQorICAgICwgbV9zaG91bGREZWNpZGVQb2xpY3lCZWZvcmVMb2FkaW5nIHsgbG9hZGVyLmZy
YW1lKCktPnNldHRpbmdzKCkuc2hvdWxkRGVjaWRlUG9saWN5QmVmb3JlTG9hZGluZ1F1aWNrTG9v
a1ByZXZpZXcoKSB9CiB7Ci0gICAgcmV0dXJuICFbbV9wcmV2aWV3TG9hZGVyIHNob3VsZERlY2lk
ZVBvbGljeUJlZm9yZUxvYWRpbmddOworICAgIEFTU0VSVChQcmV2aWV3Q29udmVydGVyOjpzdXBw
b3J0c01JTUVUeXBlKHJlc3BvbnNlLm1pbWVUeXBlKCkpKTsKKyAgICBtX2NvbnZlcnRlci0+YWRk
Q2xpZW50KCp0aGlzKTsKKyAgICBMT0coTmV0d29yaywgIkxlZ2FjeVByZXZpZXdMb2FkZXIgY3Jl
YXRlZCB3aXRoIHByZXZpZXcgZmlsZSBuYW1lIFwiJXNcIi4iLCBtX2NvbnZlcnRlci0+cHJldmll
d0ZpbGVOYW1lKCkudXRmOCgpLmRhdGEoKSk7CiB9CiAKIGJvb2wgTGVnYWN5UHJldmlld0xvYWRl
cjo6ZGlkUmVjZWl2ZURhdGEoY29uc3QgY2hhciogZGF0YSwgdW5zaWduZWQgbGVuZ3RoKQogewot
ICAgIGlmIChtX2ZpbmlzaGVkTG9hZGluZ0RhdGFJbnRvQ29udmVydGVyKQotICAgICAgICByZXR1
cm4gZmFsc2U7Ci0KLSAgICBbbV9wcmV2aWV3TG9hZGVyIGFwcGVuZERhdGFBcnJheTpAWyBbTlNE
YXRhIGRhdGFXaXRoQnl0ZXM6ZGF0YSBsZW5ndGg6bGVuZ3RoXSBdXTsKLSAgICByZXR1cm4gdHJ1
ZTsKKyAgICByZXR1cm4gZGlkUmVjZWl2ZUJ1ZmZlcihTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRh
LCBsZW5ndGgpLmdldCgpKTsKIH0KIAotYm9vbCBMZWdhY3lQcmV2aWV3TG9hZGVyOjpkaWRSZWNl
aXZlQnVmZmVyKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQotewotICAgIGlmIChtX2Zpbmlz
aGVkTG9hZGluZ0RhdGFJbnRvQ29udmVydGVyKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAg
ICBbbV9wcmV2aWV3TG9hZGVyIGFwcGVuZERhdGFBcnJheTpidWZmZXIuY3JlYXRlTlNEYXRhQXJy
YXkoKS5nZXQoKV07Ci0gICAgcmV0dXJuIHRydWU7Ci19Ci0KLWJvb2wgTGVnYWN5UHJldmlld0xv
YWRlcjo6ZGlkRmluaXNoTG9hZGluZygpCi17Ci0gICAgaWYgKG1fZmluaXNoZWRMb2FkaW5nRGF0
YUludG9Db252ZXJ0ZXIpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIG1fZmluaXNoZWRM
b2FkaW5nRGF0YUludG9Db252ZXJ0ZXIgPSB0cnVlOwotICAgIFttX3ByZXZpZXdMb2FkZXIgZmlu
aXNoZWRBcHBlbmRpbmddOwotICAgIHJldHVybiB0cnVlOwotfQotCi12b2lkIExlZ2FjeVByZXZp
ZXdMb2FkZXI6OmRpZEZhaWwoKQorYm9vbCBMZWdhY3lQcmV2aWV3TG9hZGVyOjpkaWRSZWNlaXZl
UmVzcG9uc2UoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpCiB7Ci0gICAgaWYgKG1fZmluaXNoZWRM
b2FkaW5nRGF0YUludG9Db252ZXJ0ZXIpCi0gICAgICAgIHJldHVybjsKLQotICAgIG1fZmluaXNo
ZWRMb2FkaW5nRGF0YUludG9Db252ZXJ0ZXIgPSB0cnVlOwotICAgIFttX3ByZXZpZXdMb2FkZXIg
ZmFpbGVkXTsKLSAgICBtX3ByZXZpZXdMb2FkZXIgPSBudWxscHRyOworICAgIHJldHVybiAhbV9z
aG91bGREZWNpZGVQb2xpY3lCZWZvcmVMb2FkaW5nOwogfQogCiB2b2lkIExlZ2FjeVByZXZpZXdM
b2FkZXI6OnNldENsaWVudEZvclRlc3RpbmcoUmVmUHRyPExlZ2FjeVByZXZpZXdMb2FkZXJDbGll
bnQ+JiYgY2xpZW50KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUHJldmll
d0NvbnZlcnRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QcmV2aWV3Q29udmVydGVy
LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi42OGNmZjZlNzk0MzA4ZjkyMGUzYjgxMzc4NDI4MzY1M2YwNzg1MmZj
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUHJldmlld0NvbnZl
cnRlci5jcHAKQEAgLTAsMCArMSwzMDcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElT
JycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JT
CisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisg
KiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQg
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAq
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmln
LmgiCisjaW5jbHVkZSAiUHJldmlld0NvbnZlcnRlci5oIgorCisjaWYgRU5BQkxFKFBSRVZJRVdf
Q09OVkVSVEVSKQorCisjaW5jbHVkZSAiUHJldmlld0NvbnZlcnRlckNsaWVudC5oIgorI2luY2x1
ZGUgIlByZXZpZXdDb252ZXJ0ZXJQcm92aWRlci5oIgorI2luY2x1ZGUgIlNoYXJlZEJ1ZmZlci5o
IgorI2luY2x1ZGUgPHd0Zi9SdW5Mb29wLmg+CisjaW5jbHVkZSA8d3RmL1NldEZvclNjb3BlLmg+
CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworUHJldmlld0NvbnZlcnRlcjo6flByZXZpZXdDb252
ZXJ0ZXIoKSA9IGRlZmF1bHQ7CisKK2Jvb2wgUHJldmlld0NvbnZlcnRlcjo6c3VwcG9ydHNNSU1F
VHlwZShjb25zdCBTdHJpbmcmIG1pbWVUeXBlKQoreworICAgIGlmIChtaW1lVHlwZS5pc051bGwo
KSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgaWYgKGVxdWFsTGV0dGVyc0lnbm9yaW5n
QVNDSUlDYXNlKG1pbWVUeXBlLCAidGV4dC9odG1sIikgfHwgZXF1YWxMZXR0ZXJzSWdub3JpbmdB
U0NJSUNhc2UobWltZVR5cGUsICJ0ZXh0L3BsYWluIikpCisgICAgICAgIHJldHVybiBmYWxzZTsK
KworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxIYXNoU2V0PFN0cmluZywgQVNDSUlDYXNlSW5z
ZW5zaXRpdmVIYXNoPj4gc3VwcG9ydGVkTUlNRVR5cGVzID0gcGxhdGZvcm1TdXBwb3J0ZWRNSU1F
VHlwZXMoKTsKKyAgICByZXR1cm4gc3VwcG9ydGVkTUlNRVR5cGVzLT5jb250YWlucyhtaW1lVHlw
ZSk7Cit9CisKK1Jlc291cmNlUmVzcG9uc2UgUHJldmlld0NvbnZlcnRlcjo6cHJldmlld1Jlc3Bv
bnNlKCkgY29uc3QKK3sKKyAgICBhdXRvIHJlc3BvbnNlID0gcGxhdGZvcm1QcmV2aWV3UmVzcG9u
c2UoKTsKKyAgICBBU1NFUlQocmVzcG9uc2UubWltZVR5cGUoKS5sZW5ndGgoKSk7CisgICAgcmVz
cG9uc2Uuc2V0SXNRdWlja0xvb2sodHJ1ZSk7CisgICAgcmV0dXJuIHJlc3BvbnNlOworfQorCitj
b25zdCBSZXNvdXJjZUVycm9yJiBQcmV2aWV3Q29udmVydGVyOjpwcmV2aWV3RXJyb3IoKSBjb25z
dAoreworICAgIHJldHVybiBtX3ByZXZpZXdFcnJvcjsKK30KKworY29uc3QgU2hhcmVkQnVmZmVy
JiBQcmV2aWV3Q29udmVydGVyOjpwcmV2aWV3RGF0YSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1f
cHJldmlld0RhdGEuZ2V0KCk7Cit9CisKK3ZvaWQgUHJldmlld0NvbnZlcnRlcjo6dXBkYXRlTWFp
blJlc291cmNlKCkKK3sKKyAgICBpZiAobV9pc0luQ2xpZW50Q2FsbGJhY2spCisgICAgICAgIHJl
dHVybjsKKworICAgIGlmIChtX3N0YXRlICE9IFN0YXRlOjpVcGRhdGluZykKKyAgICAgICAgcmV0
dXJuOworCisgICAgYXV0byBwcm92aWRlciA9IG1fcHJvdmlkZXIuZ2V0KCk7CisgICAgaWYgKCFw
cm92aWRlcikgeworICAgICAgICBkaWRGYWlsVXBkYXRpbmcoKTsKKyAgICAgICAgcmV0dXJuOwor
ICAgIH0KKworICAgIHByb3ZpZGVyLT5wcm92aWRlTWFpblJlc291cmNlRm9yUHJldmlld0NvbnZl
cnRlcigqdGhpcywgW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKV0oYXV0byBi
dWZmZXIpIHsKKyAgICAgICAgaWYgKGJ1ZmZlcikKKyAgICAgICAgICAgIGFwcGVuZEZyb21CdWZm
ZXIoKmJ1ZmZlcik7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGRpZEZhaWxVcGRhdGluZygp
OworICAgIH0pOworfQorCit2b2lkIFByZXZpZXdDb252ZXJ0ZXI6OmFwcGVuZEZyb21CdWZmZXIo
Y29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpCit7CisgICAgd2hpbGUgKGJ1ZmZlci5zaXplKCkg
PiBtX2xlbmd0aEFwcGVuZGVkKSB7CisgICAgICAgIGF1dG8gbmV3RGF0YSA9IGJ1ZmZlci5nZXRT
b21lRGF0YShtX2xlbmd0aEFwcGVuZGVkKTsKKyAgICAgICAgcGxhdGZvcm1BcHBlbmQobmV3RGF0
YSk7CisgICAgICAgIG1fbGVuZ3RoQXBwZW5kZWQgKz0gbmV3RGF0YS5zaXplKCk7CisgICAgfQor
fQorCit2b2lkIFByZXZpZXdDb252ZXJ0ZXI6OmZpbmlzaFVwZGF0aW5nKCkKK3sKKyAgICBpZiAo
bV9pc0luQ2xpZW50Q2FsbGJhY2spCisgICAgICAgIHJldHVybjsKKworICAgIGlmIChtX3N0YXRl
ICE9IFN0YXRlOjpVcGRhdGluZykKKyAgICAgICAgcmV0dXJuOworCisgICAgcGxhdGZvcm1GaW5p
c2hlZEFwcGVuZGluZygpOworCisgICAgaXRlcmF0ZUNsaWVudHMoWyZdKGF1dG8mIGNsaWVudCkg
eworICAgICAgICBjbGllbnQucHJldmlld0NvbnZlcnRlckRpZEZpbmlzaFVwZGF0aW5nKCp0aGlz
KTsKKyAgICB9KTsKK30KKwordm9pZCBQcmV2aWV3Q29udmVydGVyOjpmYWlsZWRVcGRhdGluZygp
Cit7CisgICAgaWYgKG1faXNJbkNsaWVudENhbGxiYWNrKQorICAgICAgICByZXR1cm47CisKKyAg
ICBpZiAobV9zdGF0ZSAhPSBTdGF0ZTo6VXBkYXRpbmcpCisgICAgICAgIHJldHVybjsKKworICAg
IG1fc3RhdGUgPSBTdGF0ZTo6RmFpbGVkVXBkYXRpbmc7CisgICAgcGxhdGZvcm1GYWlsZWRBcHBl
bmRpbmcoKTsKKworICAgIGl0ZXJhdGVDbGllbnRzKFsmXShhdXRvJiBjbGllbnQpIHsKKyAgICAg
ICAgY2xpZW50LnByZXZpZXdDb252ZXJ0ZXJEaWRGYWlsVXBkYXRpbmcoKnRoaXMpOworICAgIH0p
OworfQorCitib29sIFByZXZpZXdDb252ZXJ0ZXI6Omhhc0NsaWVudChQcmV2aWV3Q29udmVydGVy
Q2xpZW50JiBjbGllbnQpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fY2xpZW50cy5jb250YWlucygm
Y2xpZW50KTsKK30KKwordm9pZCBQcmV2aWV3Q29udmVydGVyOjphZGRDbGllbnQoUHJldmlld0Nv
bnZlcnRlckNsaWVudCYgY2xpZW50KQoreworICAgIEFTU0VSVCghaGFzQ2xpZW50KGNsaWVudCkp
OworICAgIG1fY2xpZW50cy5hcHBlbmQobWFrZVdlYWtQdHIoY2xpZW50KSk7CisgICAgZGlkQWRk
Q2xpZW50KGNsaWVudCk7Cit9CisKK3ZvaWQgUHJldmlld0NvbnZlcnRlcjo6cmVtb3ZlQ2xpZW50
KFByZXZpZXdDb252ZXJ0ZXJDbGllbnQmIGNsaWVudCkKK3sKKyAgICBtX2NsaWVudHMucmVtb3Zl
Rmlyc3QoJmNsaWVudCk7CisgICAgQVNTRVJUKCFoYXNDbGllbnQoY2xpZW50KSk7Cit9CisKK3N0
YXRpYyBTdHJpbmcmIHNoYXJlZFBhc3N3b3JkRm9yVGVzdGluZygpCit7CisgICAgc3RhdGljIE5l
dmVyRGVzdHJveWVkPFN0cmluZz4gcGFzc3dvcmRGb3JUZXN0aW5nOworICAgIHJldHVybiBwYXNz
d29yZEZvclRlc3RpbmcuZ2V0KCk7Cit9CisKK2NvbnN0IFN0cmluZyYgUHJldmlld0NvbnZlcnRl
cjo6cGFzc3dvcmRGb3JUZXN0aW5nKCkKK3sKKyAgICByZXR1cm4gc2hhcmVkUGFzc3dvcmRGb3JU
ZXN0aW5nKCk7Cit9CisKK3ZvaWQgUHJldmlld0NvbnZlcnRlcjo6c2V0UGFzc3dvcmRGb3JUZXN0
aW5nKGNvbnN0IFN0cmluZyYgcGFzc3dvcmQpCit7CisgICAgc2hhcmVkUGFzc3dvcmRGb3JUZXN0
aW5nKCkgPSBwYXNzd29yZDsKK30KKwordGVtcGxhdGU8dHlwZW5hbWUgVD4KK3ZvaWQgUHJldmll
d0NvbnZlcnRlcjo6aXRlcmF0ZUNsaWVudHMoVCYmIGNhbGxiYWNrKQoreworICAgIFNldEZvclNj
b3BlPGJvb2w+IGlzSW5DbGllbnRDYWxsYmFjayB7IG1faXNJbkNsaWVudENhbGxiYWNrLCB0cnVl
IH07CisgICAgYXV0byBjbGllbnRzQ29weSB7IG1fY2xpZW50cyB9OworICAgIGF1dG8gcHJvdGVj
dGVkVGhpcyB7IG1ha2VSZWYoKnRoaXMpIH07CisKKyAgICBmb3IgKGF1dG8mIGNsaWVudCA6IGNs
aWVudHNDb3B5KSB7CisgICAgICAgIGlmIChjbGllbnQgJiYgaGFzQ2xpZW50KCpjbGllbnQpKQor
ICAgICAgICAgICAgY2FsbGJhY2soKmNsaWVudCk7CisgICAgfQorfQorCit2b2lkIFByZXZpZXdD
b252ZXJ0ZXI6OmRpZEFkZENsaWVudChQcmV2aWV3Q29udmVydGVyQ2xpZW50JiBjbGllbnQpCit7
CisgICAgUnVuTG9vcDo6Y3VycmVudCgpLmRpc3BhdGNoKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0g
bWFrZVJlZigqdGhpcyksIHdlYWtDbGllbnQgPSBtYWtlV2Vha1B0cihjbGllbnQpXSgpIHsKKyAg
ICAgICAgaWYgKGF1dG8gY2xpZW50ID0gd2Vha0NsaWVudC5nZXQoKSkKKyAgICAgICAgICAgIHJl
cGxheVRvQ2xpZW50KCpjbGllbnQpOworICAgIH0pOworfQorCit2b2lkIFByZXZpZXdDb252ZXJ0
ZXI6OmRpZEZhaWxDb252ZXJ0aW5nV2l0aEVycm9yKGNvbnN0IFJlc291cmNlRXJyb3ImIGVycm9y
KQoreworICAgIG1fcHJldmlld0Vycm9yID0gZXJyb3I7CisgICAgbV9zdGF0ZSA9IFN0YXRlOjpG
YWlsZWRDb252ZXJ0aW5nOworCisgICAgaXRlcmF0ZUNsaWVudHMoWyZdKGF1dG8mIGNsaWVudCkg
eworICAgICAgICBjbGllbnQucHJldmlld0NvbnZlcnRlckRpZEZhaWxDb252ZXJ0aW5nKCp0aGlz
KTsKKyAgICB9KTsKK30KKwordm9pZCBQcmV2aWV3Q29udmVydGVyOjpkaWRGYWlsVXBkYXRpbmco
KQoreworICAgIGZhaWxlZFVwZGF0aW5nKCk7CisKKyAgICBpdGVyYXRlQ2xpZW50cyhbJl0oYXV0
byYgY2xpZW50KSB7CisgICAgICAgIGNsaWVudC5wcmV2aWV3Q29udmVydGVyRGlkRmFpbFVwZGF0
aW5nKCp0aGlzKTsKKyAgICB9KTsKK30KKwordm9pZCBQcmV2aWV3Q29udmVydGVyOjpyZXBsYXlU
b0NsaWVudChQcmV2aWV3Q29udmVydGVyQ2xpZW50JiBjbGllbnQpCit7CisgICAgaWYgKCFoYXND
bGllbnQoY2xpZW50KSkKKyAgICAgICAgcmV0dXJuOworCisgICAgU2V0Rm9yU2NvcGU8Ym9vbD4g
aXNJbkNsaWVudENhbGxiYWNrIHsgbV9pc0luQ2xpZW50Q2FsbGJhY2ssIHRydWUgfTsKKyAgICBh
dXRvIHByb3RlY3RlZFRoaXMgeyBtYWtlUmVmKCp0aGlzKSB9OworCisgICAgY2xpZW50LnByZXZp
ZXdDb252ZXJ0ZXJEaWRTdGFydFVwZGF0aW5nKCp0aGlzKTsKKworICAgIGlmIChtX3N0YXRlID09
IFN0YXRlOjpVcGRhdGluZyB8fCAhaGFzQ2xpZW50KGNsaWVudCkpCisgICAgICAgIHJldHVybjsK
KworICAgIGlmIChtX3N0YXRlID09IFN0YXRlOjpGYWlsZWRVcGRhdGluZykgeworICAgICAgICBj
bGllbnQucHJldmlld0NvbnZlcnRlckRpZEZhaWxVcGRhdGluZygqdGhpcyk7CisgICAgICAgIHJl
dHVybjsKKyAgICB9CisKKyAgICBBU1NFUlQobV9zdGF0ZSA+PSBTdGF0ZTo6Q29udmVydGluZyk7
CisgICAgY2xpZW50LnByZXZpZXdDb252ZXJ0ZXJEaWRTdGFydENvbnZlcnRpbmcoKnRoaXMpOwor
CisgICAgaWYgKCFtX3ByZXZpZXdEYXRhLT5pc0VtcHR5KCkgJiYgaGFzQ2xpZW50KGNsaWVudCkp
CisgICAgICAgIGNsaWVudC5wcmV2aWV3Q29udmVydGVyRGlkUmVjZWl2ZURhdGEoKnRoaXMsIG1f
cHJldmlld0RhdGEuZ2V0KCkpOworCisgICAgaWYgKG1fc3RhdGUgPT0gU3RhdGU6OkNvbnZlcnRp
bmcgfHwgIWhhc0NsaWVudChjbGllbnQpKQorICAgICAgICByZXR1cm47CisKKyAgICBpZiAobV9z
dGF0ZSA9PSBTdGF0ZTo6RmFpbGVkQ29udmVydGluZykgeworICAgICAgICBBU1NFUlQoIW1fcHJl
dmlld0Vycm9yLmlzTnVsbCgpKTsKKyAgICAgICAgY2xpZW50LnByZXZpZXdDb252ZXJ0ZXJEaWRG
YWlsQ29udmVydGluZygqdGhpcyk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBBU1NF
UlQobV9zdGF0ZSA9PSBTdGF0ZTo6RmluaXNoZWRDb252ZXJ0aW5nKTsKKyAgICBBU1NFUlQoIW1f
cHJldmlld0RhdGEtPmlzRW1wdHkoKSk7CisgICAgQVNTRVJUKG1fcHJldmlld0Vycm9yLmlzTnVs
bCgpKTsKKyAgICBjbGllbnQucHJldmlld0NvbnZlcnRlckRpZEZpbmlzaENvbnZlcnRpbmcoKnRo
aXMpOworfQorCit2b2lkIFByZXZpZXdDb252ZXJ0ZXI6OmRlbGVnYXRlRGlkUmVjZWl2ZURhdGEo
Y29uc3QgU2hhcmVkQnVmZmVyJiBkYXRhKQoreworICAgIGF1dG8gcHJvdGVjdGVkVGhpcyB7IG1h
a2VSZWYoKnRoaXMpIH07CisKKyAgICBpZiAobV9zdGF0ZSA9PSBTdGF0ZTo6VXBkYXRpbmcpIHsK
KyAgICAgICAgbV9wcm92aWRlciA9IG51bGxwdHI7CisgICAgICAgIG1fc3RhdGUgPSBTdGF0ZTo6
Q29udmVydGluZzsKKworICAgICAgICBpdGVyYXRlQ2xpZW50cyhbJl0oYXV0byYgY2xpZW50KSB7
CisgICAgICAgICAgICBjbGllbnQucHJldmlld0NvbnZlcnRlckRpZFN0YXJ0Q29udmVydGluZygq
dGhpcyk7CisgICAgICAgIH0pOworICAgIH0KKworICAgIEFTU0VSVChtX3N0YXRlID09IFN0YXRl
OjpDb252ZXJ0aW5nKTsKKyAgICBpZiAoZGF0YS5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybjsK
KworICAgIG1fcHJldmlld0RhdGEtPmFwcGVuZChkYXRhKTsKKworICAgIGl0ZXJhdGVDbGllbnRz
KFsmXShhdXRvJiBjbGllbnQpIHsKKyAgICAgICAgY2xpZW50LnByZXZpZXdDb252ZXJ0ZXJEaWRS
ZWNlaXZlRGF0YSgqdGhpcywgZGF0YSk7CisgICAgfSk7Cit9CisKK3ZvaWQgUHJldmlld0NvbnZl
cnRlcjo6ZGVsZWdhdGVEaWRGaW5pc2hMb2FkaW5nKCkKK3sKKyAgICBBU1NFUlQobV9zdGF0ZSA9
PSBTdGF0ZTo6Q29udmVydGluZyk7CisgICAgbV9zdGF0ZSA9IFN0YXRlOjpGaW5pc2hlZENvbnZl
cnRpbmc7CisKKyAgICBpdGVyYXRlQ2xpZW50cyhbJl0oYXV0byYgY2xpZW50KSB7CisgICAgICAg
IGNsaWVudC5wcmV2aWV3Q29udmVydGVyRGlkRmluaXNoQ29udmVydGluZygqdGhpcyk7CisgICAg
fSk7Cit9CisKK3ZvaWQgUHJldmlld0NvbnZlcnRlcjo6ZGVsZWdhdGVEaWRGYWlsV2l0aEVycm9y
KGNvbnN0IFJlc291cmNlRXJyb3ImIGVycm9yKQoreworICAgIGlmICghaXNQbGF0Zm9ybVBhc3N3
b3JkRXJyb3IoZXJyb3IpKSB7CisgICAgICAgIGRpZEZhaWxDb252ZXJ0aW5nV2l0aEVycm9yKGVy
cm9yKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIEFTU0VSVChtX3N0YXRlID09IFN0
YXRlOjpVcGRhdGluZyk7CisgICAgYXV0byBwcm92aWRlciA9IG1fcHJvdmlkZXIuZ2V0KCk7Cisg
ICAgaWYgKCFwcm92aWRlcikgeworICAgICAgICBkaWRGYWlsQ29udmVydGluZ1dpdGhFcnJvcihl
cnJvcik7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBwcm92aWRlci0+cHJvdmlkZVBh
c3N3b3JkRm9yUHJldmlld0NvbnZlcnRlcigqdGhpcywgW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBt
YWtlUmVmKCp0aGlzKV0oYXV0byYgcGFzc3dvcmQpIG11dGFibGUgeworICAgICAgICBpZiAobV9z
dGF0ZSAhPSBTdGF0ZTo6VXBkYXRpbmcpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAg
cGxhdGZvcm1VbmxvY2tXaXRoUGFzc3dvcmQocGFzc3dvcmQpOworICAgICAgICBtX2xlbmd0aEFw
cGVuZGVkID0gMDsKKyAgICAgICAgdXBkYXRlTWFpblJlc291cmNlKCk7CisgICAgICAgIGZpbmlz
aFVwZGF0aW5nKCk7CisgICAgfSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2Vu
ZGlmIC8vIEVOQUJMRShQUkVWSUVXX0NPTlZFUlRFUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL1ByZXZpZXdDb252ZXJ0ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L1ByZXZpZXdDb252ZXJ0ZXIuaAppbmRleCA3NjU0M2FkMTZjMTQ5NDg1ODgyMjk5MWYzMDVmZjdh
MzNlMTdhZTQ5Li4yYTM3MjkyMjc5OWNlNmFmZmFhYjNlMTQwZDE5MGJhNjRjZjhjZTJiIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QcmV2aWV3Q29udmVydGVyLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUHJldmlld0NvbnZlcnRlci5oCkBAIC0xLDUgKzEsNSBA
QAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTctMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTIzLDM2ICsyMywxMTYg
QEAKICAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi0jaW5jbHVkZSA8
b2JqYy9vYmpjLmg+CisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShQUkVWSUVXX0NPTlZFUlRF
UikKKworI2luY2x1ZGUgIlJlc291cmNlRXJyb3IuaCIKKyNpbmNsdWRlICJSZXNvdXJjZVJlc3Bv
bnNlLmgiCisjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KICNpbmNsdWRlIDx3dGYvUmV0YWlu
UHRyLmg+CisjaW5jbHVkZSA8d3RmL1dlYWtQdHIuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZT
dHJpbmcuaD4KIAotT0JKQ19DTEFTUyBOU0RhdGE7CiBPQkpDX0NMQVNTIFFMUHJldmlld0NvbnZl
cnRlcjsKK09CSkNfQ0xBU1MgV2ViUHJldmlld0NvbnZlcnRlckRlbGVnYXRlOwogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKK2NsYXNzIFJlc291cmNlRXJyb3I7CiBjbGFzcyBSZXNvdXJjZVJlcXVl
c3Q7Ci1jbGFzcyBSZXNvdXJjZVJlc3BvbnNlOworY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3Mg
U2hhcmVkQnVmZmVyRGF0YVZpZXc7CitzdHJ1Y3QgUHJldmlld0NvbnZlcnRlckNsaWVudDsKK3N0
cnVjdCBQcmV2aWV3Q29udmVydGVyUHJvdmlkZXI7CisKK3N0cnVjdCBQcmV2aWV3UGxhdGZvcm1E
ZWxlZ2F0ZSA6IENhbk1ha2VXZWFrUHRyPFByZXZpZXdQbGF0Zm9ybURlbGVnYXRlPiB7CisgICAg
dmlydHVhbCB+UHJldmlld1BsYXRmb3JtRGVsZWdhdGUoKSA9IGRlZmF1bHQ7CisKKyAgICB2aXJ0
dWFsIHZvaWQgZGVsZWdhdGVEaWRSZWNlaXZlRGF0YShjb25zdCBTaGFyZWRCdWZmZXImKSA9IDA7
CisgICAgdmlydHVhbCB2b2lkIGRlbGVnYXRlRGlkRmluaXNoTG9hZGluZygpID0gMDsKKyAgICB2
aXJ0dWFsIHZvaWQgZGVsZWdhdGVEaWRGYWlsV2l0aEVycm9yKGNvbnN0IFJlc291cmNlRXJyb3Im
KSA9IDA7Cit9OwogCi1jbGFzcyBQcmV2aWV3Q29udmVydGVyIHsKK2NsYXNzIFByZXZpZXdDb252
ZXJ0ZXIgZmluYWwgOiBwcml2YXRlIFByZXZpZXdQbGF0Zm9ybURlbGVnYXRlLCBwdWJsaWMgUmVm
Q291bnRlZDxQcmV2aWV3Q29udmVydGVyPiB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7
CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoUHJldmlld0NvbnZlcnRlcik7CiBwdWJsaWM6Ci0g
ICAgUHJldmlld0NvbnZlcnRlcihpZCBkZWxlZ2F0ZSwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYs
IGNvbnN0IFN0cmluZyYgcGFzc3dvcmQgPSB7IH0pOwotICAgIFByZXZpZXdDb252ZXJ0ZXIoTlNE
YXRhICosIGNvbnN0IFN0cmluZyYgdXRpLCBjb25zdCBTdHJpbmcmIHBhc3N3b3JkID0geyB9KTsK
KyAgICBzdGF0aWMgUmVmPFByZXZpZXdDb252ZXJ0ZXI+IGNyZWF0ZShjb25zdCBSZXNvdXJjZVJl
c3BvbnNlJiByZXNwb25zZSwgUHJldmlld0NvbnZlcnRlclByb3ZpZGVyJiBwcm92aWRlcikKKyAg
ICB7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFByZXZpZXdDb252ZXJ0ZXIocmVzcG9u
c2UsIHByb3ZpZGVyKSk7CisgICAgfQogCiAgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIGJvb2wg
c3VwcG9ydHNNSU1FVHlwZShjb25zdCBTdHJpbmcmIG1pbWVUeXBlKTsKIAotICAgIFFMUHJldmll
d0NvbnZlcnRlciAqcGxhdGZvcm1Db252ZXJ0ZXIoKSBjb25zdCB7IHJldHVybiBtX3BsYXRmb3Jt
Q29udmVydGVyLmdldCgpOyB9CisgICAgflByZXZpZXdDb252ZXJ0ZXIoKTsKKwogICAgIFJlc291
cmNlUmVxdWVzdCBzYWZlUmVxdWVzdChjb25zdCBSZXNvdXJjZVJlcXVlc3QmKSBjb25zdDsKLSAg
ICBSZXNvdXJjZVJlcXVlc3QgcHJldmlld1JlcXVlc3QoKSBjb25zdDsKICAgICBSZXNvdXJjZVJl
c3BvbnNlIHByZXZpZXdSZXNwb25zZSgpIGNvbnN0OwotICAgIFN0cmluZyBwcmV2aWV3RmlsZU5h
bWUoKSBjb25zdDsKLSAgICBTdHJpbmcgcHJldmlld1VUSSgpIGNvbnN0OworICAgIFdFQkNPUkVf
RVhQT1JUIFN0cmluZyBwcmV2aWV3RmlsZU5hbWUoKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9S
VCBTdHJpbmcgcHJldmlld1VUSSgpIGNvbnN0OworICAgIGNvbnN0IFJlc291cmNlRXJyb3ImIHBy
ZXZpZXdFcnJvcigpIGNvbnN0OworICAgIGNvbnN0IFNoYXJlZEJ1ZmZlciYgcHJldmlld0RhdGEo
KSBjb25zdDsKKworICAgIHZvaWQgZmFpbGVkVXBkYXRpbmcoKTsKKyAgICB2b2lkIGZpbmlzaFVw
ZGF0aW5nKCk7CisgICAgdm9pZCB1cGRhdGVNYWluUmVzb3VyY2UoKTsKKworICAgIGJvb2wgaGFz
Q2xpZW50KFByZXZpZXdDb252ZXJ0ZXJDbGllbnQmKSBjb25zdDsKKyAgICB2b2lkIGFkZENsaWVu
dChQcmV2aWV3Q29udmVydGVyQ2xpZW50Jik7CisgICAgdm9pZCByZW1vdmVDbGllbnQoUHJldmll
d0NvbnZlcnRlckNsaWVudCYpOworCisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIGNvbnN0IFN0
cmluZyYgcGFzc3dvcmRGb3JUZXN0aW5nKCk7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIHZv
aWQgc2V0UGFzc3dvcmRGb3JUZXN0aW5nKGNvbnN0IFN0cmluZyYpOwogCiBwcml2YXRlOgorICAg
IHN0YXRpYyBIYXNoU2V0PFN0cmluZywgQVNDSUlDYXNlSW5zZW5zaXRpdmVIYXNoPiBwbGF0Zm9y
bVN1cHBvcnRlZE1JTUVUeXBlcygpOworCisgICAgUHJldmlld0NvbnZlcnRlcihjb25zdCBSZXNv
dXJjZVJlc3BvbnNlJiwgUHJldmlld0NvbnZlcnRlclByb3ZpZGVyJik7CisKKyAgICBSZXNvdXJj
ZVJlc3BvbnNlIHBsYXRmb3JtUHJldmlld1Jlc3BvbnNlKCkgY29uc3Q7CisgICAgYm9vbCBpc1Bs
YXRmb3JtUGFzc3dvcmRFcnJvcihjb25zdCBSZXNvdXJjZUVycm9yJikgY29uc3Q7CisKKyAgICB0
ZW1wbGF0ZTx0eXBlbmFtZSBUPiB2b2lkIGl0ZXJhdGVDbGllbnRzKFQmJiBjYWxsYmFjayk7Cisg
ICAgdm9pZCBhcHBlbmRGcm9tQnVmZmVyKGNvbnN0IFNoYXJlZEJ1ZmZlciYpOworICAgIHZvaWQg
ZGlkQWRkQ2xpZW50KFByZXZpZXdDb252ZXJ0ZXJDbGllbnQmKTsKKyAgICB2b2lkIGRpZEZhaWxD
b252ZXJ0aW5nV2l0aEVycm9yKGNvbnN0IFJlc291cmNlRXJyb3ImKTsKKyAgICB2b2lkIGRpZEZh
aWxVcGRhdGluZygpOworICAgIHZvaWQgcmVwbGF5VG9DbGllbnQoUHJldmlld0NvbnZlcnRlckNs
aWVudCYpOworCisgICAgdm9pZCBwbGF0Zm9ybUFwcGVuZChjb25zdCBTaGFyZWRCdWZmZXJEYXRh
VmlldyYpOworICAgIHZvaWQgcGxhdGZvcm1GYWlsZWRBcHBlbmRpbmcoKTsKKyAgICB2b2lkIHBs
YXRmb3JtRmluaXNoZWRBcHBlbmRpbmcoKTsKKyAgICB2b2lkIHBsYXRmb3JtVW5sb2NrV2l0aFBh
c3N3b3JkKGNvbnN0IFN0cmluZyYpOworCisgICAgLy8gUHJldmlld1BsYXRmb3JtRGVsZWdhdGUK
KyAgICB2b2lkIGRlbGVnYXRlRGlkUmVjZWl2ZURhdGEoY29uc3QgU2hhcmVkQnVmZmVyJikgZmlu
YWw7CisgICAgdm9pZCBkZWxlZ2F0ZURpZEZpbmlzaExvYWRpbmcoKSBmaW5hbDsKKyAgICB2b2lk
IGRlbGVnYXRlRGlkRmFpbFdpdGhFcnJvcihjb25zdCBSZXNvdXJjZUVycm9yJikgZmluYWw7CisK
KyAgICBlbnVtIGNsYXNzIFN0YXRlIDogdWludDhfdCB7CisgICAgICAgIFVwZGF0aW5nLAorICAg
ICAgICBGYWlsZWRVcGRhdGluZywKKyAgICAgICAgQ29udmVydGluZywKKyAgICAgICAgRmFpbGVk
Q29udmVydGluZywKKyAgICAgICAgRmluaXNoZWRDb252ZXJ0aW5nLAorICAgIH07CisKKyAgICBS
ZWY8U2hhcmVkQnVmZmVyPiBtX3ByZXZpZXdEYXRhOworICAgIFJlc291cmNlRXJyb3IgbV9wcmV2
aWV3RXJyb3I7CisgICAgUmVzb3VyY2VSZXNwb25zZSBtX29yaWdpbmFsUmVzcG9uc2U7CisgICAg
U3RhdGUgbV9zdGF0ZSB7IFN0YXRlOjpVcGRhdGluZyB9OworICAgIFZlY3RvcjxXZWFrUHRyPFBy
ZXZpZXdDb252ZXJ0ZXJDbGllbnQ+LCAxPiBtX2NsaWVudHM7CisgICAgV2Vha1B0cjxQcmV2aWV3
Q29udmVydGVyUHJvdmlkZXI+IG1fcHJvdmlkZXI7CisgICAgYm9vbCBtX2lzSW5DbGllbnRDYWxs
YmFjayB7IGZhbHNlIH07CisgICAgc2l6ZV90IG1fbGVuZ3RoQXBwZW5kZWQgeyAwIH07CisKKyNp
ZiBVU0UoUVVJQ0tfTE9PSykKKyAgICBSZXRhaW5QdHI8V2ViUHJldmlld0NvbnZlcnRlckRlbGVn
YXRlPiBtX3BsYXRmb3JtRGVsZWdhdGU7CiAgICAgUmV0YWluUHRyPFFMUHJldmlld0NvbnZlcnRl
cj4gbV9wbGF0Zm9ybUNvbnZlcnRlcjsKKyNlbmRpZgogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQorCisjZW5kaWYgLy8gRU5BQkxFKFBSRVZJRVdfQ09OVkVSVEVSKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUHJldmlld0NvbnZlcnRlckNsaWVudC5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vUHJldmlld0NvbnZlcnRlckNsaWVudC5oCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjA0
ZWEzNjgwNjkyYjI1MmExOTg5YzI2Y2EyMDQyMTI3NzdhYTNiN2IKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QcmV2aWV3Q29udmVydGVyQ2xpZW50LmgKQEAgLTAs
MCArMSw1MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
CisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSA8d3RmL0Nv
bXBsZXRpb25IYW5kbGVyLmg+CisjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KKyNpbmNsdWRlIDx3
dGYvV2Vha1B0ci5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIFByZXZpZXdDb252
ZXJ0ZXI7CitjbGFzcyBSZXNvdXJjZUVycm9yOworY2xhc3MgU2hhcmVkQnVmZmVyOworCitzdHJ1
Y3QgUHJldmlld0NvbnZlcnRlckNsaWVudCA6IENhbk1ha2VXZWFrUHRyPFByZXZpZXdDb252ZXJ0
ZXJDbGllbnQ+IHsKKyAgICB2aXJ0dWFsIH5QcmV2aWV3Q29udmVydGVyQ2xpZW50KCkgPSBkZWZh
dWx0OworCisgICAgdmlydHVhbCB2b2lkIHByZXZpZXdDb252ZXJ0ZXJEaWRTdGFydFVwZGF0aW5n
KFByZXZpZXdDb252ZXJ0ZXImKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHByZXZpZXdDb252ZXJ0
ZXJEaWRGaW5pc2hVcGRhdGluZyhQcmV2aWV3Q29udmVydGVyJikgPSAwOworICAgIHZpcnR1YWwg
dm9pZCBwcmV2aWV3Q29udmVydGVyRGlkRmFpbFVwZGF0aW5nKFByZXZpZXdDb252ZXJ0ZXImKSA9
IDA7CisgICAgdmlydHVhbCB2b2lkIHByZXZpZXdDb252ZXJ0ZXJEaWRTdGFydENvbnZlcnRpbmco
UHJldmlld0NvbnZlcnRlciYpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgcHJldmlld0NvbnZlcnRl
ckRpZFJlY2VpdmVEYXRhKFByZXZpZXdDb252ZXJ0ZXImLCBjb25zdCBTaGFyZWRCdWZmZXImIG5l
d0RhdGEpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgcHJldmlld0NvbnZlcnRlckRpZEZpbmlzaENv
bnZlcnRpbmcoUHJldmlld0NvbnZlcnRlciYpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgcHJldmll
d0NvbnZlcnRlckRpZEZhaWxDb252ZXJ0aW5nKFByZXZpZXdDb252ZXJ0ZXImKSA9IDA7Cit9Owor
Cit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9QcmV2aWV3Q29udmVydGVyUHJvdmlkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L1ByZXZpZXdDb252ZXJ0ZXJQcm92aWRlci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjgyNzg2MzkzZmNlZDc1NGM4
NWY3YjI4OTEyNTJmNTE2YmVkMGQ1NDkKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9QcmV2aWV3Q29udmVydGVyUHJvdmlkZXIuaApAQCAtMCwwICsxLDM5IEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
QU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlIDx3dGYvV2Vha1B0ci5oPgorCitu
YW1lc3BhY2UgV2ViQ29yZSB7CisKK3N0cnVjdCBQcmV2aWV3Q29udmVydGVyUHJvdmlkZXIgOiBD
YW5NYWtlV2Vha1B0cjxQcmV2aWV3Q29udmVydGVyUHJvdmlkZXI+IHsKKyAgICB2aXJ0dWFsIH5Q
cmV2aWV3Q29udmVydGVyUHJvdmlkZXIoKSA9IGRlZmF1bHQ7CisKKyAgICB2aXJ0dWFsIHZvaWQg
cHJvdmlkZU1haW5SZXNvdXJjZUZvclByZXZpZXdDb252ZXJ0ZXIoUHJldmlld0NvbnZlcnRlciYs
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgU2hhcmVkQnVmZmVyKik+JiYpID0gMDsKKyAg
ICB2aXJ0dWFsIHZvaWQgcHJvdmlkZVBhc3N3b3JkRm9yUHJldmlld0NvbnZlcnRlcihQcmV2aWV3
Q29udmVydGVyJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBTdHJpbmcmKT4mJikgPSAw
OworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vaW9zL1ByZXZpZXdDb252ZXJ0ZXJJT1MubW0gYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9pb3MvUHJldmlld0NvbnZlcnRlcklPUy5tbQppbmRleCBiNWNkMjgzNTZmMjY5Zjlk
NjE2MzEzN2Q1MWEzYTRjMjg4YmI0OTlmLi4yZmNkMGZjYjM4OWEwMGIyZjRiYWVhZTYzZjkyZThm
ZTM0N2U2OWJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvUHJldmll
d0NvbnZlcnRlcklPUy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvUHJldmll
d0NvbnZlcnRlcklPUy5tbQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIw
MTctMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMp
IDIwMDktMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKQEAgLTI2LDY1ICsyNiw4OCBAQAogI2ltcG9ydCAiY29uZmlnLmgi
CiAjaW1wb3J0ICJQcmV2aWV3Q29udmVydGVyLmgiCiAKLSNpZiBVU0UoUVVJQ0tfTE9PSykKKyNp
ZiBFTkFCTEUoUFJFVklFV19DT05WRVJURVIpICYmIFVTRShRVUlDS19MT09LKQogCisjaW1wb3J0
ICJQcmV2aWV3Q29udmVydGVyQ2xpZW50LmgiCisjaW1wb3J0ICJQcmV2aWV3Q29udmVydGVyUHJv
dmlkZXIuaCIKICNpbXBvcnQgIlF1aWNrTG9vay5oIgorI2ltcG9ydCAiUmVzb3VyY2VFcnJvci5o
IgogI2ltcG9ydCAiUmVzb3VyY2VSZXF1ZXN0LmgiCiAjaW1wb3J0ICJSZXNvdXJjZVJlc3BvbnNl
LmgiCisjaW1wb3J0ICJTaGFyZWRCdWZmZXIuaCIKICNpbXBvcnQgPHBhbC9pb3MvUXVpY2tMb29r
U29mdExpbmsuaD4KLSNpbXBvcnQgPHBhbC9zcGkvaW9zL1F1aWNrTG9va1NQSS5oPgogCi1uYW1l
c3BhY2UgV2ViQ29yZSB7CitAaW50ZXJmYWNlIFdlYlByZXZpZXdDb252ZXJ0ZXJEZWxlZ2F0ZSA6
IE5TT2JqZWN0CistIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhEZWxlZ2F0ZTooV2ViQ29yZTo6UHJl
dmlld1BsYXRmb3JtRGVsZWdhdGUmKWRlbGVnYXRlOworQGVuZAogCi1zdGF0aWMgTlNEaWN0aW9u
YXJ5ICpvcHRpb25zV2l0aFBhc3N3b3JkKGNvbnN0IFN0cmluZyYgcGFzc3dvcmQpCitAaW1wbGVt
ZW50YXRpb24gV2ViUHJldmlld0NvbnZlcnRlckRlbGVnYXRlIHsKKyAgICBXZWFrUHRyPFdlYkNv
cmU6OlByZXZpZXdQbGF0Zm9ybURlbGVnYXRlPiBfZGVsZWdhdGU7Cit9CisKKy0gKGluc3RhbmNl
dHlwZSlpbml0V2l0aERlbGVnYXRlOihXZWJDb3JlOjpQcmV2aWV3UGxhdGZvcm1EZWxlZ2F0ZSYp
ZGVsZWdhdGUKIHsKLSAgICBpZiAocGFzc3dvcmQuaXNOdWxsKCkpCisgICAgaWYgKCEoc2VsZiA9
IFtzdXBlciBpbml0XSkpCiAgICAgICAgIHJldHVybiBuaWw7CiAKLSAgICByZXR1cm4gQHsgKE5T
U3RyaW5nICopUEFMOjpnZXRfUXVpY2tMb29rX2tRTFByZXZpZXdPcHRpb25QYXNzd29yZEtleSgp
IDogcGFzc3dvcmQgfTsKKyAgICBfZGVsZWdhdGUgPSBtYWtlV2Vha1B0cihkZWxlZ2F0ZSk7Cisg
ICAgcmV0dXJuIHNlbGY7CiB9CiAKLVByZXZpZXdDb252ZXJ0ZXI6OlByZXZpZXdDb252ZXJ0ZXIo
aWQgZGVsZWdhdGUsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBjb25zdCBTdHJp
bmcmIHBhc3N3b3JkKQotICAgIDogbV9wbGF0Zm9ybUNvbnZlcnRlciB7IGFkb3B0TlMoW1BBTDo6
YWxsb2NRTFByZXZpZXdDb252ZXJ0ZXJJbnN0YW5jZSgpIGluaXRXaXRoQ29ubmVjdGlvbjpuaWwg
ZGVsZWdhdGU6ZGVsZWdhdGUgcmVzcG9uc2U6cmVzcG9uc2UubnNVUkxSZXNwb25zZSgpIG9wdGlv
bnM6b3B0aW9uc1dpdGhQYXNzd29yZChwYXNzd29yZCldKSB9CistICh2b2lkKWNvbm5lY3Rpb246
KE5TVVJMQ29ubmVjdGlvbiAqKWNvbm5lY3Rpb24gZGlkUmVjZWl2ZURhdGE6KE5TRGF0YSAqKWRh
dGEgbGVuZ3RoUmVjZWl2ZWQ6KGxvbmcgbG9uZylsZW5ndGhSZWNlaXZlZAogeworICAgIEFTU0VS
VF9VTlVTRUQoY29ubmVjdGlvbiwgIWNvbm5lY3Rpb24pOworICAgIEFTU0VSVF9VTlVTRUQobGVu
Z3RoUmVjZWl2ZWQsIGxlbmd0aFJlY2VpdmVkID49IDApOworICAgIEFTU0VSVChkYXRhLmxlbmd0
aCA9PSBzdGF0aWNfY2FzdDxOU1VJbnRlZ2VyPihsZW5ndGhSZWNlaXZlZCkpOworICAgIGlmIChh
dXRvIGRlbGVnYXRlID0gX2RlbGVnYXRlLmdldCgpKQorICAgICAgICBkZWxlZ2F0ZS0+ZGVsZWdh
dGVEaWRSZWNlaXZlRGF0YShXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRhKS5nZXQo
KSk7CiB9CiAKLVByZXZpZXdDb252ZXJ0ZXI6OlByZXZpZXdDb252ZXJ0ZXIoTlNEYXRhICpkYXRh
LCBjb25zdCBTdHJpbmcmIHV0aSwgY29uc3QgU3RyaW5nJiBwYXNzd29yZCkKLSAgICA6IG1fcGxh
dGZvcm1Db252ZXJ0ZXIgeyBhZG9wdE5TKFtQQUw6OmFsbG9jUUxQcmV2aWV3Q29udmVydGVySW5z
dGFuY2UoKSBpbml0V2l0aERhdGE6ZGF0YSBuYW1lOm5pbCB1dGk6dXRpIG9wdGlvbnM6b3B0aW9u
c1dpdGhQYXNzd29yZChwYXNzd29yZCldKSB9CistICh2b2lkKWNvbm5lY3Rpb25EaWRGaW5pc2hM
b2FkaW5nOihOU1VSTENvbm5lY3Rpb24gKiljb25uZWN0aW9uCiB7CisgICAgQVNTRVJUX1VOVVNF
RChjb25uZWN0aW9uLCAhY29ubmVjdGlvbik7CisgICAgaWYgKGF1dG8gZGVsZWdhdGUgPSBfZGVs
ZWdhdGUuZ2V0KCkpCisgICAgICAgIGRlbGVnYXRlLT5kZWxlZ2F0ZURpZEZpbmlzaExvYWRpbmco
KTsKIH0KIAotYm9vbCBQcmV2aWV3Q29udmVydGVyOjpzdXBwb3J0c01JTUVUeXBlKGNvbnN0IFN0
cmluZyYgbWltZVR5cGUpCistICh2b2lkKWNvbm5lY3Rpb246KE5TVVJMQ29ubmVjdGlvbiAqKWNv
bm5lY3Rpb24gZGlkRmFpbFdpdGhFcnJvcjooTlNFcnJvciAqKWVycm9yCiB7Ci0gICAgaWYgKGVx
dWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKG1pbWVUeXBlLCAidGV4dC9odG1sIikgfHwgZXF1
YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UobWltZVR5cGUsICJ0ZXh0L3BsYWluIikpCi0gICAg
ICAgIHJldHVybiBmYWxzZTsKKyAgICBBU1NFUlRfVU5VU0VEKGNvbm5lY3Rpb24sICFjb25uZWN0
aW9uKTsKKyAgICBpZiAoYXV0byBkZWxlZ2F0ZSA9IF9kZWxlZ2F0ZS5nZXQoKSkKKyAgICAgICAg
ZGVsZWdhdGUtPmRlbGVnYXRlRGlkRmFpbFdpdGhFcnJvcihlcnJvcik7Cit9CiAKLSAgICBzdGF0
aWMgc3RkOjpvbmNlX2ZsYWcgb25jZUZsYWc7Ci0gICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEhh
c2hTZXQ8U3RyaW5nLCBBU0NJSUNhc2VJbnNlbnNpdGl2ZUhhc2g+PiBzdXBwb3J0ZWRNSU1FVHlw
ZXM7Ci0gICAgc3RkOjpjYWxsX29uY2Uob25jZUZsYWcsIFtdIHsKLSAgICAgICAgZm9yIChOU1N0
cmluZyAqbWltZVR5cGUgaW4gUUxQcmV2aWV3R2V0U3VwcG9ydGVkTUlNRVR5cGVzU2V0KCkpCi0g
ICAgICAgICAgICBzdXBwb3J0ZWRNSU1FVHlwZXMtPmFkZChtaW1lVHlwZSk7Ci0gICAgfSk7CitA
ZW5kCiAKLSAgICBpZiAobWltZVR5cGUuaXNOdWxsKCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsK
K25hbWVzcGFjZSBXZWJDb3JlIHsKIAotICAgIHJldHVybiBzdXBwb3J0ZWRNSU1FVHlwZXMtPmNv
bnRhaW5zKG1pbWVUeXBlKTsKK1ByZXZpZXdDb252ZXJ0ZXI6OlByZXZpZXdDb252ZXJ0ZXIoY29u
c3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIFByZXZpZXdDb252ZXJ0ZXJQcm92aWRlciYg
cHJvdmlkZXIpCisgICAgOiBtX3ByZXZpZXdEYXRhIHsgU2hhcmVkQnVmZmVyOjpjcmVhdGUoKSB9
CisgICAgLCBtX29yaWdpbmFsUmVzcG9uc2UgeyByZXNwb25zZSB9CisgICAgLCBtX3Byb3ZpZGVy
IHsgbWFrZVdlYWtQdHIocHJvdmlkZXIpIH0KKyAgICAsIG1fcGxhdGZvcm1EZWxlZ2F0ZSB7IGFk
b3B0TlMoW1tXZWJQcmV2aWV3Q29udmVydGVyRGVsZWdhdGUgYWxsb2NdIGluaXRXaXRoRGVsZWdh
dGU6KnRoaXNdKSB9CisgICAgLCBtX3BsYXRmb3JtQ29udmVydGVyIHsgYWRvcHROUyhbUEFMOjph
bGxvY1FMUHJldmlld0NvbnZlcnRlckluc3RhbmNlKCkgaW5pdFdpdGhDb25uZWN0aW9uOm5pbCBk
ZWxlZ2F0ZTptX3BsYXRmb3JtRGVsZWdhdGUuZ2V0KCkgcmVzcG9uc2U6bV9vcmlnaW5hbFJlc3Bv
bnNlLm5zVVJMUmVzcG9uc2UoKSBvcHRpb25zOm5pbF0pIH0KK3sKIH0KIAotUmVzb3VyY2VSZXF1
ZXN0IFByZXZpZXdDb252ZXJ0ZXI6OnNhZmVSZXF1ZXN0KGNvbnN0IFJlc291cmNlUmVxdWVzdCYg
cmVxdWVzdCkgY29uc3QKK0hhc2hTZXQ8U3RyaW5nLCBBU0NJSUNhc2VJbnNlbnNpdGl2ZUhhc2g+
IFByZXZpZXdDb252ZXJ0ZXI6OnBsYXRmb3JtU3VwcG9ydGVkTUlNRVR5cGVzKCkKIHsKLSAgICBy
ZXR1cm4gW21fcGxhdGZvcm1Db252ZXJ0ZXIgc2FmZVJlcXVlc3RGb3JSZXF1ZXN0OnJlcXVlc3Qu
bnNVUkxSZXF1ZXN0KEhUVFBCb2R5VXBkYXRlUG9saWN5OjpEb05vdFVwZGF0ZUhUVFBCb2R5KV07
CisgICAgSGFzaFNldDxTdHJpbmcsIEFTQ0lJQ2FzZUluc2Vuc2l0aXZlSGFzaD4gc3VwcG9ydGVk
TUlNRVR5cGVzOworICAgIGZvciAoTlNTdHJpbmcgKm1pbWVUeXBlIGluIFFMUHJldmlld0dldFN1
cHBvcnRlZE1JTUVUeXBlc1NldCgpKQorICAgICAgICBzdXBwb3J0ZWRNSU1FVHlwZXMuYWRkKG1p
bWVUeXBlKTsKKyAgICByZXR1cm4gc3VwcG9ydGVkTUlNRVR5cGVzOwogfQogCi1SZXNvdXJjZVJl
cXVlc3QgUHJldmlld0NvbnZlcnRlcjo6cHJldmlld1JlcXVlc3QoKSBjb25zdAorUmVzb3VyY2VS
ZXF1ZXN0IFByZXZpZXdDb252ZXJ0ZXI6OnNhZmVSZXF1ZXN0KGNvbnN0IFJlc291cmNlUmVxdWVz
dCYgcmVxdWVzdCkgY29uc3QKIHsKLSAgICByZXR1cm4gW21fcGxhdGZvcm1Db252ZXJ0ZXIgcHJl
dmlld1JlcXVlc3RdOworICAgIHJldHVybiBbbV9wbGF0Zm9ybUNvbnZlcnRlciBzYWZlUmVxdWVz
dEZvclJlcXVlc3Q6cmVxdWVzdC5uc1VSTFJlcXVlc3QoSFRUUEJvZHlVcGRhdGVQb2xpY3k6OkRv
Tm90VXBkYXRlSFRUUEJvZHkpXTsKIH0KIAotUmVzb3VyY2VSZXNwb25zZSBQcmV2aWV3Q29udmVy
dGVyOjpwcmV2aWV3UmVzcG9uc2UoKSBjb25zdAorUmVzb3VyY2VSZXNwb25zZSBQcmV2aWV3Q29u
dmVydGVyOjpwbGF0Zm9ybVByZXZpZXdSZXNwb25zZSgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIFtt
X3BsYXRmb3JtQ29udmVydGVyIHByZXZpZXdSZXNwb25zZV07CisgICAgUmVzb3VyY2VSZXNwb25z
ZSByZXNwb25zZSB7IFttX3BsYXRmb3JtQ29udmVydGVyIHByZXZpZXdSZXNwb25zZV0gfTsKKyAg
ICBBU1NFUlQocmVzcG9uc2UudXJsKCkucHJvdG9jb2xJcyhRTFByZXZpZXdQcm90b2NvbCkpOwor
ICAgIHJldHVybiByZXNwb25zZTsKIH0KIAogU3RyaW5nIFByZXZpZXdDb252ZXJ0ZXI6OnByZXZp
ZXdGaWxlTmFtZSgpIGNvbnN0CkBAIC05Nyw2ICsxMjAsMzkgQEAgU3RyaW5nIFByZXZpZXdDb252
ZXJ0ZXI6OnByZXZpZXdVVEkoKSBjb25zdAogICAgIHJldHVybiBbbV9wbGF0Zm9ybUNvbnZlcnRl
ciBwcmV2aWV3VVRJXTsKIH0KIAordm9pZCBQcmV2aWV3Q29udmVydGVyOjpwbGF0Zm9ybUFwcGVu
ZChjb25zdCBTaGFyZWRCdWZmZXJEYXRhVmlldyYgZGF0YSkKK3sKKyAgICBbbV9wbGF0Zm9ybUNv
bnZlcnRlciBhcHBlbmREYXRhOmRhdGEuY3JlYXRlTlNEYXRhKCkuZ2V0KCldOworfQorCit2b2lk
IFByZXZpZXdDb252ZXJ0ZXI6OnBsYXRmb3JtRmluaXNoZWRBcHBlbmRpbmcoKQoreworICAgIFtt
X3BsYXRmb3JtQ29udmVydGVyIGZpbmlzaGVkQXBwZW5kaW5nRGF0YV07Cit9CisKK3ZvaWQgUHJl
dmlld0NvbnZlcnRlcjo6cGxhdGZvcm1GYWlsZWRBcHBlbmRpbmcoKQoreworICAgIFttX3BsYXRm
b3JtQ29udmVydGVyIGZpbmlzaENvbnZlcnRpbmddOworfQorCitib29sIFByZXZpZXdDb252ZXJ0
ZXI6OmlzUGxhdGZvcm1QYXNzd29yZEVycm9yKGNvbnN0IFJlc291cmNlRXJyb3ImIGVycm9yKSBj
b25zdAoreworICAgIHJldHVybiBlcnJvci5lcnJvckNvZGUoKSA9PSBrUUxSZXR1cm5QYXNzd29y
ZFByb3RlY3RlZCAmJiBlcnJvci5kb21haW4oKSA9PSAiUXVpY2tMb29rRXJyb3JEb21haW4iOwor
fQorCitzdGF0aWMgTlNEaWN0aW9uYXJ5ICpvcHRpb25zV2l0aFBhc3N3b3JkKGNvbnN0IFN0cmlu
ZyYgcGFzc3dvcmQpCit7CisgICAgaWYgKHBhc3N3b3JkLmlzTnVsbCgpKQorICAgICAgICByZXR1
cm4gbmlsOworICAgIAorICAgIHJldHVybiBAeyAoTlNTdHJpbmcgKilQQUw6OmdldF9RdWlja0xv
b2tfa1FMUHJldmlld09wdGlvblBhc3N3b3JkS2V5KCkgOiBwYXNzd29yZCB9OworfQorCit2b2lk
IFByZXZpZXdDb252ZXJ0ZXI6OnBsYXRmb3JtVW5sb2NrV2l0aFBhc3N3b3JkKGNvbnN0IFN0cmlu
ZyYgcGFzc3dvcmQpCit7CisgICAgbV9wbGF0Zm9ybUNvbnZlcnRlciA9IGFkb3B0TlMoW1BBTDo6
YWxsb2NRTFByZXZpZXdDb252ZXJ0ZXJJbnN0YW5jZSgpIGluaXRXaXRoQ29ubmVjdGlvbjpuaWwg
ZGVsZWdhdGU6bV9wbGF0Zm9ybURlbGVnYXRlLmdldCgpIHJlc3BvbnNlOm1fb3JpZ2luYWxSZXNw
b25zZS5uc1VSTFJlc3BvbnNlKCkgb3B0aW9uczpvcHRpb25zV2l0aFBhc3N3b3JkKHBhc3N3b3Jk
KV0pOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKLSNlbmRpZiAvLyBVU0UoUVVJQ0tf
TE9PSykKKyNlbmRpZiAvLyBFTkFCTEUoUFJFVklFV19DT05WRVJURVIpICYmIFVTRShRVUlDS19M
T09LKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1F1aWNrTG9vay5t
bSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9RdWlja0xvb2subW0KaW5kZXggMTVhZTJm
Zjk0MWQyMmU5NDJjODcwN2ZkZTAxNGI5Mjk2MDE2MDQ2Zi4uMmUyNDdhNmU1M2RkMDVhYjE5MGVk
OTZkZGEyYTFhZTZkYWRjOThhZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
aW9zL1F1aWNrTG9vay5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvUXVpY2tM
b29rLm1tCkBAIC0yOCw3ICsyOCw2IEBACiAKICNpZiBVU0UoUVVJQ0tfTE9PSykKIAotI2ltcG9y
dCAiUHJldmlld0NvbnZlcnRlci5oIgogI2ltcG9ydCAiUmVzb3VyY2VSZXF1ZXN0LmgiCiAjaW1w
b3J0IDxwYWwvaW9zL1F1aWNrTG9va1NvZnRMaW5rLmg+CiAjaW1wb3J0IDxwYWwvc3BpL2NvY29h
L05TRmlsZU1hbmFnZXJTUEkuaD4KQEAgLTgzLDEyICs4MiwxMiBAQCBSZXRhaW5QdHI8TlNVUkxS
ZXF1ZXN0PiByZWdpc3RlclFMUHJldmlld0NvbnZlcnRlcklmTmVlZGVkKE5TVVJMICp1cmwsIE5T
U3RyaW5nCiAgICAgaWYgKFtRTFByZXZpZXdHZXRTdXBwb3J0ZWRNSU1FVHlwZXNTZXQoKSBjb250
YWluc09iamVjdDp1cGRhdGVkTUlNRVR5cGUuZ2V0KCldKSB7CiAgICAgICAgIFJldGFpblB0cjxO
U1N0cmluZz4gdXRpID0gYWRvcHROUyhQQUw6OnNvZnRMaW5rX1F1aWNrTG9va19RTFR5cGVDb3B5
VVRJRm9yVVJMQW5kTWltZVR5cGUodXJsLCB1cGRhdGVkTUlNRVR5cGUuZ2V0KCkpKTsKIAotICAg
ICAgICBhdXRvIGNvbnZlcnRlciA9IG1ha2VVbmlxdWU8UHJldmlld0NvbnZlcnRlcj4oZGF0YSwg
dXRpLmdldCgpKTsKLSAgICAgICAgUmVzb3VyY2VSZXF1ZXN0IHByZXZpZXdSZXF1ZXN0ID0gY29u
dmVydGVyLT5wcmV2aWV3UmVxdWVzdCgpOworICAgICAgICBhdXRvIGNvbnZlcnRlciA9IGFkb3B0
TlMoW1BBTDo6YWxsb2NRTFByZXZpZXdDb252ZXJ0ZXJJbnN0YW5jZSgpIGluaXRXaXRoRGF0YTpk
YXRhIG5hbWU6bmlsIHV0aTp1dGkuZ2V0KCkgb3B0aW9uczpuaWxdKTsKKyAgICAgICAgUmVzb3Vy
Y2VSZXF1ZXN0IHByZXZpZXdSZXF1ZXN0ID0gW2NvbnZlcnRlciBwcmV2aWV3UmVxdWVzdF07CiAK
ICAgICAgICAgLy8gV2UgdXNlIFtyZXF1ZXN0IFVSTF0gaGVyZSBpbnN0ZWFkIG9mIHVybCBzaW5j
ZSBpdCB3aWxsIGJlCiAgICAgICAgIC8vIHRoZSBVUkwgdGhhdCB0aGUgV2ViRGF0YVNvdXJjZSB3
aWxsIHNlZSBkdXJpbmcgLWRlYWxsb2MuCi0gICAgICAgIGFkZFFMUHJldmlld0NvbnZlcnRlcldp
dGhGaWxlRm9yVVJMKHByZXZpZXdSZXF1ZXN0LnVybCgpLCBjb252ZXJ0ZXItPnBsYXRmb3JtQ29u
dmVydGVyKCksIG5pbCk7CisgICAgICAgIGFkZFFMUHJldmlld0NvbnZlcnRlcldpdGhGaWxlRm9y
VVJMKHByZXZpZXdSZXF1ZXN0LnVybCgpLCBjb252ZXJ0ZXIuZ2V0KCksIG5pbCk7CiAKICAgICAg
ICAgcmV0dXJuIHByZXZpZXdSZXF1ZXN0Lm5zVVJMUmVxdWVzdChIVFRQQm9keVVwZGF0ZVBvbGlj
eTo6RG9Ob3RVcGRhdGVIVFRQQm9keSk7CiAgICAgfQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>381875</attachid>
            <date>2019-10-24 21:13:19 -0700</date>
            <delta_ts>2019-10-24 22:26:32 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-203396-20191024211318.patch</filename>
            <type>text/plain</type>
            <size>61643</size>
            <attacher name="Andy Estes">aestes</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjUxNTgwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDRlZDZmNDQ5Nzg4OTBkMjQ4YWYxMzM2
NjBhYzk1OTg1NDFjNTcxM2YuLjU1Y2Q5MTczZDBkZWQ4ZWIxYTEzN2YxYTlkY2E3ZjMyZDZjMGE1
MjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAKKzIwMTktMTAtMjQgIEFuZHkgRXN0ZXMgIDxhZXN0ZXNA
YXBwbGUuY29tPgorCisgICAgICAgIFtRdWljayBMb29rXSBNb3ZlIHRoZSBRTFByZXZpZXdDb252
ZXJ0ZXIgZGVsZWdhdGUgaW50byBQcmV2aWV3Q29udmVydGVyIGFuZCB2ZW5kIGEgQysrIGNsaWVu
dCBpbnRlcmZhY2UKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTIwMzM5NgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgICogd3RmL0ZlYXR1cmVEZWZpbmVzLmg6IERlZmluZWQgRU5BQkxFX1BSRVZJRVdfQ09OVkVS
VEVSLgorCiAyMDE5LTEwLTIzICBZdXN1a2UgU3V6dWtpICA8eXN1enVraUBhcHBsZS5jb20+CiAK
ICAgICAgICAgW0pTQ10gRmlndXJlIG91dCBtaXNzaW5nIHByZXBhcmVDYWxsT3BlcmF0aW9uCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFu
Z2VMb2cKaW5kZXggZmYwNzczNDE1NTYwOTU4NWNlNGM0MDY0NTExNTE1MWVjYWIwODg2Ni4uZThi
ZjgzZmZkMGU4YWNkOWZhNTg5YzM2OTRhODQ4ZTc3YzI4MWE3NSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDEyMiBAQAorMjAxOS0xMC0yNCAgQW5keSBFc3RlcyAgPGFlc3Rlc0BhcHBsZS5jb20+CisK
KyAgICAgICAgW1F1aWNrIExvb2tdIE1vdmUgdGhlIFFMUHJldmlld0NvbnZlcnRlciBkZWxlZ2F0
ZSBpbnRvIFByZXZpZXdDb252ZXJ0ZXIgYW5kIHZlbmQgYSBDKysgY2xpZW50IGludGVyZmFjZQor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjAzMzk2CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUHJldmlld0Nv
bnZlcnRlciBleGlzdGVkIGFzIGEgdGhpbiB3cmFwcGVyIGFyb3VuZCBRTFByZXZpZXdDb252ZXJ0
ZXIgZm9yIHVzZSBieQorICAgICAgICBMZWdhY3lQcmV2aWV3TG9hZGVyIGFuZCBRdWljayBMb29r
IE5TRGF0YSBsb2FkaW5nIGluIFdlYktpdExlZ2FjeS4gVGhpcyBwYXRjaCBtYWtlcyB0d28KKyAg
ICAgICAgY2hhbmdlcyB0byB0aGlzIGFycmFuZ2VtZW50OgorCisgICAgICAgIDEuIFRoZSBRTFBy
ZXZpZXdDb252ZXJ0ZXIgZGVsZWdhdGUgYW5kIHRoZSBidWxrIG9mIHRoZSBjb252ZXJzaW9uIHN0
YXRlIG1hY2hpbmUgd2FzIG1vdmVkCisgICAgICAgIGludG8gUHJldmlld0NvbnZlcnRlciwgd2hp
Y2ggbm93IHZlbmRzIGEgQysrIGNsaWVudCBpbnRlcmZhY2UuIExlZ2FjeVByZXZpZXdMb2FkZXIg
aXMgbm93IGEKKyAgICAgICAgY2xpZW50IG9mIGl0cyBQcmV2aWV3Q29udmVydGVyLCByZXRhaW5p
bmcgdGhlIHJlc3BvbnNpaWxpdHkgb2YgaW50ZXJhY3Rpbmcgd2l0aCB0aGUKKyAgICAgICAgUmVz
b3VyY2VMb2FkZXIgYW5kIExlZ2FjeVByZXZpZXdMb2FkZXJDbGllbnQuCisKKyAgICAgICAgMi4g
VGhlIFF1aWNrIExvb2sgTlNEYXRhIGxvYWRpbmcgY29kZSBmb3IgV2ViS2l0TGVnYWN5IG5vdyB1
c2VzIFFMUHJldmlld0NvbnZlcnRlciBBUEkKKyAgICAgICAgZGlyZWN0bHkgcmF0aGVyIHRoYW4g
Y3JlYXRpbmcgYSBQcmV2aWV3Q29udmVydGVyLiBUaGlzIGNvZGUgcGF0aCBkb2VzIG5vdCByZXF1
aXJlIGEgZGVsZWdhdGUKKyAgICAgICAgbm9yIGFueSBvZiB0aGUgb3RoZXIgbG9naWMgaW4gUHJl
dmlld0NvbnZlcnRlci4KKworICAgICAgICBUaGlzIGNoYW5nZSBhbHNvIG9yZ2FuaXplcyBQcmV2
aWV3Q29udmVydGVyIGludG8gYSBjcm9zcy1wbGF0Zm9ybSAuY3BwIGZpbGUgYW5kIGFuCisgICAg
ICAgIGlPUy1zcGVjaWZpYyAubW0gZmlsZSBmb3IgdGhlIGRpcmVjdCB1c2FnZSBvZiBRTFByZXZp
ZXdDb252ZXJ0ZXIgQVBJLiBMZWdhY3lQcmV2aWV3Q29udmVydGVyCisgICAgICAgIHdhcyBhbHNv
IG9yZ2FuaXplZCBzdWNoIHRoYXQgaXQgY2FuIGJlIGNoYW5nZWQgZnJvbSAubW0gdG8gLmNwcCBp
biBhIGZ1dHVyZSBwYXRjaC4KKworICAgICAgICBObyBjaGFuZ2UgaW4gYmVoYXZpb3IuIENvdmVy
ZWQgYnkgZXhpc3RpbmcgQVBJIGFuZCBsYXlvdXQgdGVzdHMuCisKKyAgICAgICAgKiBTb3VyY2Vz
LnR4dDoKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisKKyAg
ICAgICAgKiBsb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RG9j
dW1lbnRMb2FkZXI6OnNldFByZXZpZXdDb252ZXJ0ZXIpOgorICAgICAgICAqIGxvYWRlci9Eb2N1
bWVudExvYWRlci5oOiBDaGFuZ2VkIG1fcHJldmlld0NvbnZlcnRlciBmcm9tIHN0ZDo6dW5pcXVl
X3B0ciB0byBSZWZQdHIuCisKKyAgICAgICAgKiBsb2FkZXIvU3VicmVzb3VyY2VMb2FkZXIuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6U3VicmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVSZXNwb25z
ZSk6IFVzZWQgbWFrZVVuaXF1ZSBkaXJlY3RseSBpbnN0ZWFkIG9mCisgICAgICAgIExlZ2FjeVBy
ZXZpZXdMb2FkZXI6OmNyZWF0ZSgpLgorCisgICAgICAgICogbG9hZGVyL2lvcy9MZWdhY3lQcmV2
aWV3TG9hZGVyLmg6IFByaXZhdGVseSBpbmhlcml0ZWQgZnJvbSBQcmV2aWV3Q29udmVydGVyQ2xp
ZW50IGFuZAorICAgICAgICBQcmV2aWV3Q29udmVydGVyUHJvdmlkZXIgYW5kIG1pZ3JhdGVkIFdl
YlByZXZpZXdMb2FkZXIgaXZhcnMgdG8gbWVtYmVyIHZhcmlhYmxlcy4KKworICAgICAgICAqIGxv
YWRlci9pb3MvTGVnYWN5UHJldmlld0xvYWRlci5tbToKKyAgICAgICAgKFdlYkNvcmU6Om1ha2VD
bGllbnQpOgorICAgICAgICAoV2ViQ29yZTo6TGVnYWN5UHJldmlld0xvYWRlcjo6ZGlkUmVjZWl2
ZUJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpMZWdhY3lQcmV2aWV3TG9hZGVyOjpkaWRGaW5p
c2hMb2FkaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OkxlZ2FjeVByZXZpZXdMb2FkZXI6OmRpZEZh
aWwpOgorICAgICAgICAoV2ViQ29yZTo6TGVnYWN5UHJldmlld0xvYWRlcjo6cHJldmlld0NvbnZl
cnRlckRpZFN0YXJ0Q29udmVydGluZyk6CisgICAgICAgIChXZWJDb3JlOjpMZWdhY3lQcmV2aWV3
TG9hZGVyOjpwcmV2aWV3Q29udmVydGVyRGlkUmVjZWl2ZURhdGEpOgorICAgICAgICAoV2ViQ29y
ZTo6TGVnYWN5UHJldmlld0xvYWRlcjo6cHJldmlld0NvbnZlcnRlckRpZEZpbmlzaENvbnZlcnRp
bmcpOgorICAgICAgICAoV2ViQ29yZTo6TGVnYWN5UHJldmlld0xvYWRlcjo6cHJldmlld0NvbnZl
cnRlckRpZEZhaWxVcGRhdGluZyk6CisgICAgICAgIChXZWJDb3JlOjpMZWdhY3lQcmV2aWV3TG9h
ZGVyOjpwcmV2aWV3Q29udmVydGVyRGlkRmFpbENvbnZlcnRpbmcpOgorICAgICAgICAoV2ViQ29y
ZTo6TGVnYWN5UHJldmlld0xvYWRlcjo6cHJvdmlkZVBhc3N3b3JkRm9yUHJldmlld0NvbnZlcnRl
cik6CisgICAgICAgIChXZWJDb3JlOjpMZWdhY3lQcmV2aWV3TG9hZGVyOjpwcm92aWRlTWFpblJl
c291cmNlRm9yUHJldmlld0NvbnZlcnRlcik6CisgICAgICAgIChXZWJDb3JlOjpMZWdhY3lQcmV2
aWV3TG9hZGVyOjpMZWdhY3lQcmV2aWV3TG9hZGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkxlZ2Fj
eVByZXZpZXdMb2FkZXI6OmRpZFJlY2VpdmVEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkxlZ2Fj
eVByZXZpZXdMb2FkZXI6OmRpZFJlY2VpdmVSZXNwb25zZSk6CisgICAgICAgICh0ZXN0aW5nQ2xp
ZW50KTogRGVsZXRlZC4KKyAgICAgICAgKGVtcHR5Q2xpZW50KTogRGVsZXRlZC4KKyAgICAgICAg
KC1bV2ViUHJldmlld0xvYWRlciBpbml0V2l0aFJlc291cmNlTG9hZGVyOnJlc291cmNlUmVzcG9u
c2U6XSk6IERlbGV0ZWQuCisgICAgICAgICgtW1dlYlByZXZpZXdMb2FkZXIgYXBwZW5kRGF0YUFy
cmF5Ol0pOiBEZWxldGVkLgorICAgICAgICAoLVtXZWJQcmV2aWV3TG9hZGVyIGZpbmlzaGVkQXBw
ZW5kaW5nXSk6IERlbGV0ZWQuCisgICAgICAgICgtW1dlYlByZXZpZXdMb2FkZXIgZmFpbGVkXSk6
IERlbGV0ZWQuCisgICAgICAgICgtW1dlYlByZXZpZXdMb2FkZXIgX2xvYWRQcmV2aWV3SWZOZWVk
ZWRdKTogRGVsZXRlZC4KKyAgICAgICAgKC1bV2ViUHJldmlld0xvYWRlciBjb25uZWN0aW9uOmRp
ZFJlY2VpdmVEYXRhOmxlbmd0aFJlY2VpdmVkOl0pOiBEZWxldGVkLgorICAgICAgICAoLVtXZWJQ
cmV2aWV3TG9hZGVyIGNvbm5lY3Rpb25EaWRGaW5pc2hMb2FkaW5nOl0pOiBEZWxldGVkLgorICAg
ICAgICAoaXNRdWlja0xvb2tQYXNzd29yZEVycm9yKTogRGVsZXRlZC4KKyAgICAgICAgKC1bV2Vi
UHJldmlld0xvYWRlciBjb25uZWN0aW9uOmRpZEZhaWxXaXRoRXJyb3I6XSk6IERlbGV0ZWQuCisg
ICAgICAgIChXZWJDb3JlOjpMZWdhY3lQcmV2aWV3TG9hZGVyOjp+TGVnYWN5UHJldmlld0xvYWRl
cik6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpMZWdhY3lQcmV2aWV3TG9hZGVyOjpjcmVh
dGUpOiBEZWxldGVkLgorCisgICAgICAgICogcGxhdGZvcm0vUHJldmlld0NvbnZlcnRlci5jcHA6
IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6UHJldmlld0NvbnZlcnRlcjo6c3VwcG9ydHNNSU1F
VHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpQcmV2aWV3Q29udmVydGVyOjpwcmV2aWV3UmVzcG9u
c2UgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UHJldmlld0NvbnZlcnRlcjo6cHJldmlld0Vy
cm9yIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlByZXZpZXdDb252ZXJ0ZXI6OnByZXZpZXdE
YXRhIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlByZXZpZXdDb252ZXJ0ZXI6OnVwZGF0ZU1h
aW5SZXNvdXJjZSk6CisgICAgICAgIChXZWJDb3JlOjpQcmV2aWV3Q29udmVydGVyOjphcHBlbmRG
cm9tQnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OlByZXZpZXdDb252ZXJ0ZXI6OmZpbmlzaFVw
ZGF0aW5nKToKKyAgICAgICAgKFdlYkNvcmU6OlByZXZpZXdDb252ZXJ0ZXI6OmZhaWxlZFVwZGF0
aW5nKToKKyAgICAgICAgKFdlYkNvcmU6OlByZXZpZXdDb252ZXJ0ZXI6Omhhc0NsaWVudCBjb25z
dCk6CisgICAgICAgIChXZWJDb3JlOjpQcmV2aWV3Q29udmVydGVyOjphZGRDbGllbnQpOgorICAg
ICAgICAoV2ViQ29yZTo6UHJldmlld0NvbnZlcnRlcjo6cmVtb3ZlQ2xpZW50KToKKyAgICAgICAg
KFdlYkNvcmU6OnNoYXJlZFBhc3N3b3JkRm9yVGVzdGluZyk6CisgICAgICAgIChXZWJDb3JlOjpQ
cmV2aWV3Q29udmVydGVyOjpwYXNzd29yZEZvclRlc3RpbmcpOgorICAgICAgICAoV2ViQ29yZTo6
UHJldmlld0NvbnZlcnRlcjo6c2V0UGFzc3dvcmRGb3JUZXN0aW5nKToKKyAgICAgICAgKFdlYkNv
cmU6OlByZXZpZXdDb252ZXJ0ZXI6Oml0ZXJhdGVDbGllbnRzKToKKyAgICAgICAgKFdlYkNvcmU6
OlByZXZpZXdDb252ZXJ0ZXI6OmRpZEFkZENsaWVudCk6CisgICAgICAgIChXZWJDb3JlOjpQcmV2
aWV3Q29udmVydGVyOjpkaWRGYWlsQ29udmVydGluZ1dpdGhFcnJvcik6CisgICAgICAgIChXZWJD
b3JlOjpQcmV2aWV3Q29udmVydGVyOjpkaWRGYWlsVXBkYXRpbmcpOgorICAgICAgICAoV2ViQ29y
ZTo6UHJldmlld0NvbnZlcnRlcjo6cmVwbGF5VG9DbGllbnQpOgorICAgICAgICAoV2ViQ29yZTo6
UHJldmlld0NvbnZlcnRlcjo6ZGVsZWdhdGVEaWRSZWNlaXZlRGF0YSk6CisgICAgICAgIChXZWJD
b3JlOjpQcmV2aWV3Q29udmVydGVyOjpkZWxlZ2F0ZURpZEZpbmlzaExvYWRpbmcpOgorICAgICAg
ICAoV2ViQ29yZTo6UHJldmlld0NvbnZlcnRlcjo6ZGVsZWdhdGVEaWRGYWlsV2l0aEVycm9yKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9QcmV2aWV3Q29udmVydGVyLmg6CisgICAgICAgIChXZWJDb3Jl
OjpQcmV2aWV3Q29udmVydGVyOjpQcmV2aWV3Q29udmVydGVyKTogRGVsZXRlZC4KKyAgICAgICAg
KFdlYkNvcmU6OlByZXZpZXdDb252ZXJ0ZXI6OnBsYXRmb3JtQ29udmVydGVyIGNvbnN0KTogRGVs
ZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9QcmV2aWV3Q29udmVydGVyQ2xpZW50Lmg6IENvcGll
ZCBmcm9tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1ByZXZpZXdDb252ZXJ0ZXIuaC4KKyAgICAg
ICAgKiBwbGF0Zm9ybS9QcmV2aWV3Q29udmVydGVyUHJvdmlkZXIuaDogQ29waWVkIGZyb20gU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vUHJldmlld0NvbnZlcnRlci5oLgorICAgICAgICAqIHBsYXRm
b3JtL2lvcy9QcmV2aWV3Q29udmVydGVySU9TLm1tOgorICAgICAgICAoLVtXZWJQcmV2aWV3Q29u
dmVydGVyRGVsZWdhdGUgaW5pdFdpdGhEZWxlZ2F0ZTpdKToKKyAgICAgICAgKC1bV2ViUHJldmll
d0NvbnZlcnRlckRlbGVnYXRlIGNvbm5lY3Rpb246ZGlkUmVjZWl2ZURhdGE6bGVuZ3RoUmVjZWl2
ZWQ6XSk6CisgICAgICAgICgtW1dlYlByZXZpZXdDb252ZXJ0ZXJEZWxlZ2F0ZSBjb25uZWN0aW9u
RGlkRmluaXNoTG9hZGluZzpdKToKKyAgICAgICAgKC1bV2ViUHJldmlld0NvbnZlcnRlckRlbGVn
YXRlIGNvbm5lY3Rpb246ZGlkRmFpbFdpdGhFcnJvcjpdKToKKyAgICAgICAgKFdlYkNvcmU6OlBy
ZXZpZXdDb252ZXJ0ZXI6OlByZXZpZXdDb252ZXJ0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6UHJl
dmlld0NvbnZlcnRlcjo6cGxhdGZvcm1TdXBwb3J0ZWRNSU1FVHlwZXMpOgorICAgICAgICAoV2Vi
Q29yZTo6UHJldmlld0NvbnZlcnRlcjo6c2FmZVJlcXVlc3QgY29uc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6UHJldmlld0NvbnZlcnRlcjo6cGxhdGZvcm1QcmV2aWV3UmVzcG9uc2UgY29uc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6UHJldmlld0NvbnZlcnRlcjo6cGxhdGZvcm1BcHBlbmQpOgorICAg
ICAgICAoV2ViQ29yZTo6UHJldmlld0NvbnZlcnRlcjo6cGxhdGZvcm1GaW5pc2hlZEFwcGVuZGlu
Zyk6CisgICAgICAgIChXZWJDb3JlOjpQcmV2aWV3Q29udmVydGVyOjpwbGF0Zm9ybUZhaWxlZEFw
cGVuZGluZyk6CisgICAgICAgIChXZWJDb3JlOjpQcmV2aWV3Q29udmVydGVyOjppc1BsYXRmb3Jt
UGFzc3dvcmRFcnJvciBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpvcHRpb25zV2l0aFBhc3N3
b3JkKToKKyAgICAgICAgKFdlYkNvcmU6OlByZXZpZXdDb252ZXJ0ZXI6OnBsYXRmb3JtVW5sb2Nr
V2l0aFBhc3N3b3JkKToKKyAgICAgICAgKFdlYkNvcmU6OlByZXZpZXdDb252ZXJ0ZXI6OnN1cHBv
cnRzTUlNRVR5cGUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6UHJldmlld0NvbnZlcnRl
cjo6cHJldmlld1JlcXVlc3QgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6UHJl
dmlld0NvbnZlcnRlcjo6cHJldmlld1Jlc3BvbnNlIGNvbnN0KTogRGVsZXRlZC4KKworICAgICAg
ICAqIHBsYXRmb3JtL2lvcy9RdWlja0xvb2subW06CisgICAgICAgIChXZWJDb3JlOjpyZWdpc3Rl
clFMUHJldmlld0NvbnZlcnRlcklmTmVlZGVkKTogVXNlZCBRTFByZXZpZXdDb252ZXJ0ZXIgZGly
ZWN0bHkuCisKIDIwMTktMTAtMjQgIFNpbW9uIEZyYXNlciAgPHNpbW9uLmZyYXNlckBhcHBsZS5j
b20+CiAKICAgICAgICAgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLXZh
bHVlcy9jYWxjLXBvc2l0aXZlLWZyYWN0aW9uLTAwMS5odG1sIGZhaWxzCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9QQUwvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvUEFML0NoYW5nZUxv
ZwppbmRleCAxNWVjZDcwNTdjMGFjMTI3NWQ1ZWI2ZDNlOWE0OWY3NmNkM2QxMjM0Li5iZDllMjY2
ZTVhYWNjZDZiODM2M2I4YWQyYjUzYTE2YzE1NjJkZmM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9QQUwvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9DaGFuZ2VMb2cKQEAg
LTEsMyArMSwxMiBAQAorMjAxOS0xMC0yNCAgQW5keSBFc3RlcyAgPGFlc3Rlc0BhcHBsZS5jb20+
CisKKyAgICAgICAgW1F1aWNrIExvb2tdIE1vdmUgdGhlIFFMUHJldmlld0NvbnZlcnRlciBkZWxl
Z2F0ZSBpbnRvIFByZXZpZXdDb252ZXJ0ZXIgYW5kIHZlbmQgYSBDKysgY2xpZW50IGludGVyZmFj
ZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjAzMzk2
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBwYWwv
c3BpL2lvcy9RdWlja0xvb2tTUEkuaDoKKwogMjAxOS0xMC0xNSAgUGVuZyBMaXUgIDxwZW5nLmxp
dTZAYXBwbGUuY29tPgogCiAgICAgICAgIFtQaWN0dXJlLWluLVBpY3R1cmUgV2ViIEFQSV0gSW1w
bGVtZW50IEhUTUxWaWRlb0VsZW1lbnQucmVxdWVzdFBpY3R1cmVJblBpY3R1cmUoKSAvIERvY3Vt
ZW50LmV4aXRQaWN0dXJlSW5QaWN0dXJlKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL0Zl
YXR1cmVEZWZpbmVzLmggYi9Tb3VyY2UvV1RGL3d0Zi9GZWF0dXJlRGVmaW5lcy5oCmluZGV4IGJl
YjY0M2I1YjNmYTg0ODdiZjNmYWIxZDViM2ZhYTU5YzYxYzY2ZmIuLmEwZTk1NDRmMjgyMWZiYWU2
NDdjYjY0OWM5OTg1ZjlkNTM2N2VhOTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL0ZlYXR1
cmVEZWZpbmVzLmgKKysrIGIvU291cmNlL1dURi93dGYvRmVhdHVyZURlZmluZXMuaApAQCAtMjE3
LDYgKzIxNywxMiBAQCB0aGUgcHVibGljIGlPUyBTREsuIFNlZSA8aHR0cHM6Ly93ZWJraXQub3Jn
L2IvMTc5MTY3Pi4gKi8KICNlbmRpZgogI2VuZGlmCiAKKyNpZiAhZGVmaW5lZChFTkFCTEVfUFJF
VklFV19DT05WRVJURVIpCisjaWYgUExBVEZPUk0oSU9TKQorI2RlZmluZSBFTkFCTEVfUFJFVklF
V19DT05WRVJURVIgMQorI2VuZGlmCisjZW5kaWYKKwogI2VuZGlmIC8qIFBMQVRGT1JNKElPU19G
QU1JTFkpICovCiAKIC8qIC0tLS0tLS0tLSBBcHBsZSBXQVRDSE9TIHBvcnQgLS0tLS0tLS0tICov
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL3NwaS9pb3MvUXVpY2tMb29rU1BJ
LmggYi9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL3NwaS9pb3MvUXVpY2tMb29rU1BJLmgKaW5kZXgg
MzJhNjA5ZmRiNWE4ZDAwYTM0NTU4M2FmOTk1MjNhYTVkNjM2MmYyMy4uOWU3NDJkZDBiMmZjYzRm
MTgyYjAwYTAyOTJhOWU1NGJhOGM1NzA4NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvUEFM
L3BhbC9zcGkvaW9zL1F1aWNrTG9va1NQSS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwv
c3BpL2lvcy9RdWlja0xvb2tTUEkuaApAQCAtMzksNiArMzksNyBAQAogLSAoTlNVUkxSZXF1ZXN0
ICopc2FmZVJlcXVlc3RGb3JSZXF1ZXN0OihOU1VSTFJlcXVlc3QgKilyZXF1ZXN0OwogLSAoaWQp
aW5pdFdpdGhDb25uZWN0aW9uOihOU1VSTENvbm5lY3Rpb24gKiljb25uZWN0aW9uIGRlbGVnYXRl
OihpZClkZWxlZ2F0ZSByZXNwb25zZTooTlNVUkxSZXNwb25zZSAqKXJlc3BvbnNlIG9wdGlvbnM6
KE5TRGljdGlvbmFyeSAqKW9wdGlvbnM7CiAtIChpZClpbml0V2l0aERhdGE6KE5TRGF0YSAqKWRh
dGEgbmFtZTooTlNTdHJpbmcgKiluYW1lIHV0aTooTlNTdHJpbmcgKil1dGkgb3B0aW9uczooTlNE
aWN0aW9uYXJ5ICopb3B0aW9uczsKKy0gKHZvaWQpYXBwZW5kRGF0YTooTlNEYXRhICopZGF0YTsK
IC0gKHZvaWQpYXBwZW5kRGF0YUFycmF5OihOU0FycmF5ICopZGF0YUFycmF5OwogLSAodm9pZClm
aW5pc2hDb252ZXJ0aW5nOwogLSAodm9pZClmaW5pc2hlZEFwcGVuZGluZ0RhdGE7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dCBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMu
dHh0CmluZGV4IDg5ZGNmOGUzOWIwMzQ3MWViMzdjN2NlOTZjNGQ4NDMyNDNhM2FjMTcuLmZhNjcz
MjdmNzU3YmU3ZmVhMGZlNmZhNjYwYTJiYzM5YjhkNTg1NjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL1NvdXJjZXMudHh0CisrKyBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CkBAIC0x
NzM5LDYgKzE3MzksNyBAQCBwbGF0Zm9ybS9QbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1V0dGVyYW5j
ZS5jcHAKIHBsYXRmb3JtL1BsYXRmb3JtU3BlZWNoU3ludGhlc2lzVm9pY2UuY3BwCiBwbGF0Zm9y
bS9QbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVyLmNwcAogcGxhdGZvcm0vUGxhdGZvcm1TdHJhdGVn
aWVzLmNwcAorcGxhdGZvcm0vUHJldmlld0NvbnZlcnRlci5jcHAKIHBsYXRmb3JtL1Byb2Nlc3NJ
ZGVudGlmaWVyLmNwcAogcGxhdGZvcm0vUmVmZXJyZXJQb2xpY3kuY3BwCiBwbGF0Zm9ybS9SZW1v
dGVDb21tYW5kTGlzdGVuZXIuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggMjE3MWQ2NWNjZjllMzM4NTJjZDZkYWJhODE5ZDNl
ODhmYjdmOWRjMS4uMjhjYzhmY2I2OGZjMjdiOGQ1NjIwOWVmYTU0YzdlZDJiNjA2ODFiZSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
CisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpA
QCAtMjk4NSw2ICsyOTg1LDggQEAKIAkJQTE5QUVBMjIxQUFBODA4QTAwQjUyQjI1IC8qIEpTTW9j
a0NvbnRlbnRGaWx0ZXJTZXR0aW5ncy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBBMTlBRUExRDFBQUE4MDZFMDBCNTJCMjUgLyogSlNNb2NrQ29udGVu
dEZpbHRlclNldHRpbmdzLmNwcCAqLzsgfTsKIAkJQTE5RDkzNEIxQUExMUIxRTAwQjQ2QzI0IC8q
IE5ldHdvcmtFeHRlbnNpb25Db250ZW50RmlsdGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBMTlEOTM0OTFBQTExQjFFMDBCNDZDMjQgLyogTmV0d29y
a0V4dGVuc2lvbkNvbnRlbnRGaWx0ZXIuaCAqLzsgfTsKIAkJQTFBQTlBQjkxRDIzOTExNTAwRkVB
REIzIC8qIENvbnRlbnRGaWx0ZXJCbG9ja2VkUGFnZS5odG1sIGluIFJlc291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBMUFBOUFCODFEMjM5MTE1MDBGRUFEQjMgLyog
Q29udGVudEZpbHRlckJsb2NrZWRQYWdlLmh0bWwgKi87IH07CisJCUExQURBRjdEMjM2MEZEM0Uw
MDlDQjc3NiAvKiBQcmV2aWV3Q29udmVydGVyQ2xpZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBMUFEQUY3QjIzNjBGRDNEMDA5Q0I3NzYgLyogUHJl
dmlld0NvbnZlcnRlckNsaWVudC5oICovOyB9OworCQlBMUFEQUY3RTIzNjBGRDNFMDA5Q0I3NzYg
LyogUHJldmlld0NvbnZlcnRlclByb3ZpZGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBBMUFEQUY3QzIzNjBGRDNFMDA5Q0I3NzYgLyogUHJldmlld0Nv
bnZlcnRlclByb3ZpZGVyLmggKi87IH07CiAJCUExQUZFREU2MUY4QkZGNkQwMDg3MDEzRiAvKiBN
b2NrUGF5bWVudENvb3JkaW5hdG9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBBMUFGRURFNDFGOEJGRjZEMDA4NzAxM0YgLyogTW9ja1BheW1lbnRDb29y
ZGluYXRvci5oICovOyB9OwogCQlBMUFGRURFNzFGOEJGRjZEMDA4NzAxM0YgLyogTW9ja1BheW1l
bnRDb29yZGluYXRvci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBBMUFGRURFNTFGOEJGRjZEMDA4NzAxM0YgLyogTW9ja1BheW1lbnRDb29yZGluYXRv
ci5jcHAgKi87IH07CiAJCUExQjVCMjlFMUFBQTg0NkUwMDhCNjA0MiAvKiBNb2NrQ29udGVudEZp
bHRlclNldHRpbmdzLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEExQjVCMjlDMUFBQTg0NkUwMDhCNjA0MiAvKiBNb2NrQ29udGVudEZpbHRlclNldHRp
bmdzLmNwcCAqLzsgfTsKQEAgLTExMzEyLDYgKzExMzE0LDkgQEAKIAkJQTE5RDkzNDgxQUExMUIx
RTAwQjQ2QzI0IC8qIE5ldHdvcmtFeHRlbnNpb25Db250ZW50RmlsdGVyLm1tICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gTmV0d29ya0V4dGVuc2lvbkNvbnRlbnRGaWx0
ZXIubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUExOUQ5MzQ5MUFBMTFCMUUwMEI0
NkMyNCAvKiBOZXR3b3JrRXh0ZW5zaW9uQ29udGVudEZpbHRlci5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBOZXR3b3JrRXh0ZW5zaW9uQ29udGVudEZpbHRlci5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQlBMUFBOUFCODFEMjM5MTE1MDBGRUFEQjMgLyogQ29udGVu
dEZpbHRlckJsb2NrZWRQYWdlLmh0bWwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0Lmh0bWw7IHBhdGggPSBDb250
ZW50RmlsdGVyQmxvY2tlZFBhZ2UuaHRtbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
QTFBREFGNzkyMzYwRUY2QzAwOUNCNzc2IC8qIFByZXZpZXdDb252ZXJ0ZXIuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gUHJldmlld0NvbnZlcnRlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCUExQURBRjdCMjM2MEZEM0QwMDlDQjc3NiAvKiBQcmV2aWV3Q29udmVydGVyQ2xpZW50
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFByZXZpZXdDb252ZXJ0ZXJDbGll
bnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTFBREFGN0MyMzYwRkQzRTAwOUNC
Nzc2IC8qIFByZXZpZXdDb252ZXJ0ZXJQcm92aWRlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBQcmV2aWV3Q29udmVydGVyUHJvdmlkZXIuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJQTFBRkVERTQxRjhCRkY2RDAwODcwMTNGIC8qIE1vY2tQYXltZW50Q29vcmRp
bmF0b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTW9ja1BheW1lbnRDb29yZGluYXRvci5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQlBMUFGRURFNTFGOEJGRjZEMDA4NzAxM0YgLyogTW9ja1Bh
eW1lbnRDb29yZGluYXRvci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBNb2NrUGF5bWVudENvb3Jk
aW5hdG9yLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTFCNUIyOUMxQUFBODQ2
RTAwOEI2MDQyIC8qIE1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3MuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5ncy5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0yNTcxNCw3ICsyNTcxOSwxMCBAQAogCQkJCTA2
NjhFMTg5MEFERDk2MjQwMDQxMjhFMCAvKiBQb3B1cE1lbnUuaCAqLywKIAkJCQlBQkMxMjg3NjBC
MzNBQTZEMDBDNjkzRDUgLyogUG9wdXBNZW51Q2xpZW50LmggKi8sCiAJCQkJQkMzQkUxMkEwRTk4
MDkyRjAwODM1NTg4IC8qIFBvcHVwTWVudVN0eWxlLmggKi8sCisJCQkJQTFBREFGNzkyMzYwRUY2
QzAwOUNCNzc2IC8qIFByZXZpZXdDb252ZXJ0ZXIuY3BwICovLAogCQkJCUExQzE1MDc4MUUzRjJC
M0UwMDMyQzk4QyAvKiBQcmV2aWV3Q29udmVydGVyLmggKi8sCisJCQkJQTFBREFGN0IyMzYwRkQz
RDAwOUNCNzc2IC8qIFByZXZpZXdDb252ZXJ0ZXJDbGllbnQuaCAqLywKKwkJCQlBMUFEQUY3QzIz
NjBGRDNFMDA5Q0I3NzYgLyogUHJldmlld0NvbnZlcnRlclByb3ZpZGVyLmggKi8sCiAJCQkJNTFG
NjQ1RDIxRkVDREJDODAwQjU0REVEIC8qIFByb2Nlc3NJZGVudGlmaWVyLmNwcCAqLywKIAkJCQk1
MUY2NDVEMzFGRUNEQkM4MDBCNTRERUQgLyogUHJvY2Vzc0lkZW50aWZpZXIuaCAqLywKIAkJCQlG
NDdBNjMzQzFGRjZGRDUwMDA4MUIzQ0MgLyogUHJvbWlzZWRBdHRhY2htZW50SW5mby5oICovLApA
QCAtMzE0NzgsNiArMzE0ODYsOCBAQAogCQkJCTQ2REJCNjUwMUFCOEM5NkYwMEQ5QTgxMyAvKiBQ
b3dlck9ic2VydmVyTWFjLmggaW4gSGVhZGVycyAqLywKIAkJCQlDMEYyQTQ0MTEzODY5QUFCMDA2
NkM1MzQgLyogcHJlcHJvY2Vzc29yLnBtIGluIEhlYWRlcnMgKi8sCiAJCQkJQTFDMTUwN0ExRTNG
MkIzRTAwMzJDOThDIC8qIFByZXZpZXdDb252ZXJ0ZXIuaCBpbiBIZWFkZXJzICovLAorCQkJCUEx
QURBRjdEMjM2MEZEM0UwMDlDQjc3NiAvKiBQcmV2aWV3Q29udmVydGVyQ2xpZW50LmggaW4gSGVh
ZGVycyAqLywKKwkJCQlBMUFEQUY3RTIzNjBGRDNFMDA5Q0I3NzYgLyogUHJldmlld0NvbnZlcnRl
clByb3ZpZGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQlFNDYwNUZFQzIxNjY0ODA5MDBFNTMwNDYg
LyogUHJld2FybUluZm9ybWF0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQlCNzFGRTZERjExMDkx
Q0IzMDBEQUVGNzcgLyogUHJpbnRDb250ZXh0LmggaW4gSGVhZGVycyAqLywKIAkJCQk1MUY2NDVE
NTFGRUNEQkNFMDBCNTRERUQgLyogUHJvY2Vzc0lkZW50aWZpZXIuaCBpbiBIZWFkZXJzICovLApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5jcHAKaW5kZXggNGMxN2IwYjBkNzFk
NmQwZGUzYTA5ZWE1ZWYyZjY0MTFlZjhiYWMwMC4uZmMzMzMwMWZiOTFkYjEwNDYzODkyNzMwZTEw
YjE3MWIxZWQ3N2NlMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50
TG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3Bw
CkBAIC0yMTM4LDcgKzIxMzgsNyBAQCB2b2lkIERvY3VtZW50TG9hZGVyOjpwcmV2aWV3UmVzcG9u
c2VSZWNlaXZlZChDYWNoZWRSZXNvdXJjZSYgcmVzb3VyY2UsIGNvbnN0IFJlcwogICAgIG1fcmVz
cG9uc2UgPSByZXNwb25zZTsKIH0KIAotdm9pZCBEb2N1bWVudExvYWRlcjo6c2V0UHJldmlld0Nv
bnZlcnRlcihzdGQ6OnVuaXF1ZV9wdHI8UHJldmlld0NvbnZlcnRlcj4mJiBwcmV2aWV3Q29udmVy
dGVyKQordm9pZCBEb2N1bWVudExvYWRlcjo6c2V0UHJldmlld0NvbnZlcnRlcihSZWZQdHI8UHJl
dmlld0NvbnZlcnRlcj4mJiBwcmV2aWV3Q29udmVydGVyKQogewogICAgIG1fcHJldmlld0NvbnZl
cnRlciA9IFdURk1vdmUocHJldmlld0NvbnZlcnRlcik7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9E
b2N1bWVudExvYWRlci5oCmluZGV4IDc0YzZkNGY5YzkwMDE5OTViNmRmNGFjYTBjMGYyNzk3NWY2
YWUzZTMuLjcyZWUwMmRkMTc2OTZiNzQ3NDg3OTlhY2I5ZDA4NWIwZWQ4YjFlZTAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5oCkBAIC0zNTIsNyArMzUyLDcgQEAgcHVibGlj
OgogICAgIFVSTCBkb2N1bWVudFVSTCgpIGNvbnN0OwogCiAjaWYgVVNFKFFVSUNLX0xPT0spCi0g
ICAgdm9pZCBzZXRQcmV2aWV3Q29udmVydGVyKHN0ZDo6dW5pcXVlX3B0cjxQcmV2aWV3Q29udmVy
dGVyPiYmKTsKKyAgICB2b2lkIHNldFByZXZpZXdDb252ZXJ0ZXIoUmVmUHRyPFByZXZpZXdDb252
ZXJ0ZXI+JiYpOwogICAgIFByZXZpZXdDb252ZXJ0ZXIqIHByZXZpZXdDb252ZXJ0ZXIoKSBjb25z
dDsKICNlbmRpZgogCkBAIC01OTEsNyArNTkxLDcgQEAgcHJpdmF0ZToKICNlbmRpZgogCiAjaWYg
VVNFKFFVSUNLX0xPT0spCi0gICAgc3RkOjp1bmlxdWVfcHRyPFByZXZpZXdDb252ZXJ0ZXI+IG1f
cHJldmlld0NvbnZlcnRlcjsKKyAgICBSZWZQdHI8UHJldmlld0NvbnZlcnRlcj4gbV9wcmV2aWV3
Q29udmVydGVyOwogI2VuZGlmCiAKICNpZiBFTkFCTEUoQ09OVEVOVF9FWFRFTlNJT05TKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnJlc291cmNlTG9hZGVyLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9TdWJyZXNvdXJjZUxvYWRlci5jcHAKaW5kZXggZTEyZGNjYjRj
YmQ4NWUyMzBlYzY4ZTgyNDc5OGMzYmNkMTgyMjQ1My4uZGQzN2MwN2I1NWRmZmJiN2I4MWFiMGEz
ODcwYmRlN2UyNGJmMTA3OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnJl
c291cmNlTG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3VicmVzb3VyY2VM
b2FkZXIuY3BwCkBAIC0zMzQsNyArMzM0LDcgQEAgdm9pZCBTdWJyZXNvdXJjZUxvYWRlcjo6ZGlk
UmVjZWl2ZVJlc3BvbnNlKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBDb20KIAog
I2lmIFVTRShRVUlDS19MT09LKQogICAgIGlmIChzaG91bGRDcmVhdGVQcmV2aWV3TG9hZGVyRm9y
UmVzcG9uc2UocmVzcG9uc2UpKSB7Ci0gICAgICAgIG1fcHJldmlld0xvYWRlciA9IExlZ2FjeVBy
ZXZpZXdMb2FkZXI6OmNyZWF0ZSgqdGhpcywgcmVzcG9uc2UpOworICAgICAgICBtX3ByZXZpZXdM
b2FkZXIgPSBtYWtlVW5pcXVlPExlZ2FjeVByZXZpZXdMb2FkZXI+KCp0aGlzLCByZXNwb25zZSk7
CiAgICAgICAgIGlmIChtX3ByZXZpZXdMb2FkZXItPmRpZFJlY2VpdmVSZXNwb25zZShyZXNwb25z
ZSkpCiAgICAgICAgICAgICByZXR1cm47CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvbG9hZGVyL2lvcy9MZWdhY3lQcmV2aWV3TG9hZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvaW9zL0xlZ2FjeVByZXZpZXdMb2FkZXIuaAppbmRleCAzNDg2OWFiYzMzYWYzYTFlZWJjNmIx
NTM1OGE2Zjk5MDEwMzNmYjA3Li4yNWQ0OTU2Yzg4M2M1ODc0MWIzOGJjMDA1MDZjMDM2NGE3NTJj
YTY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvaW9zL0xlZ2FjeVByZXZpZXdM
b2FkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvaW9zL0xlZ2FjeVByZXZpZXdMb2Fk
ZXIuaApAQCAtMjUsMTEgKzI1LDEyIEBACiAKICNwcmFnbWEgb25jZQogCisjaW5jbHVkZSAiUHJl
dmlld0NvbnZlcnRlckNsaWVudC5oIgorI2luY2x1ZGUgIlByZXZpZXdDb252ZXJ0ZXJQcm92aWRl
ci5oIgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAjaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxl
Lmg+CiAjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgotCi1PQkpDX0NMQVNTIFdlYlByZXZpZXdM
b2FkZXI7CisjaW5jbHVkZSA8d3RmL1dlYWtQdHIuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewog
CkBAIC0zOCwxMSArMzksMTEgQEAgY2xhc3MgUmVzb3VyY2VMb2FkZXI7CiBjbGFzcyBSZXNvdXJj
ZVJlc3BvbnNlOwogY2xhc3MgU2hhcmVkQnVmZmVyOwogCi1jbGFzcyBMZWdhY3lQcmV2aWV3TG9h
ZGVyIHsKK2NsYXNzIExlZ2FjeVByZXZpZXdMb2FkZXIgZmluYWwgOiBwcml2YXRlIFByZXZpZXdD
b252ZXJ0ZXJDbGllbnQsIHByaXZhdGUgUHJldmlld0NvbnZlcnRlclByb3ZpZGVyIHsKICAgICBX
VEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShMZWdhY3lQ
cmV2aWV3TG9hZGVyKTsKIHB1YmxpYzoKLSAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPExlZ2Fj
eVByZXZpZXdMb2FkZXI+IGNyZWF0ZShSZXNvdXJjZUxvYWRlciYsIGNvbnN0IFJlc291cmNlUmVz
cG9uc2UmKTsKKyAgICBMZWdhY3lQcmV2aWV3TG9hZGVyKFJlc291cmNlTG9hZGVyJiwgY29uc3Qg
UmVzb3VyY2VSZXNwb25zZSYpOwogICAgIH5MZWdhY3lQcmV2aWV3TG9hZGVyKCk7CiAKICAgICBi
b29sIGRpZFJlY2VpdmVSZXNwb25zZShjb25zdCBSZXNvdXJjZVJlc3BvbnNlJik7CkBAIC01NCwx
MSArNTUsMjcgQEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyB2b2lkIHNldENs
aWVudEZvclRlc3RpbmcoUmVmUHRyPExlZ2FjeVByZXZpZXdMb2FkZXJDbGllbnQ+JiYpOwogCiBw
cml2YXRlOgotICAgIGZyaWVuZCBzdGQ6OnVuaXF1ZV9wdHI8TGVnYWN5UHJldmlld0xvYWRlcj4g
c3RkOjptYWtlX3VuaXF1ZTxMZWdhY3lQcmV2aWV3TG9hZGVyPihSZXNvdXJjZUxvYWRlciYsIGNv
bnN0IFJlc291cmNlUmVzcG9uc2UmKTsKLSAgICBMZWdhY3lQcmV2aWV3TG9hZGVyKFJlc291cmNl
TG9hZGVyJiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpOworICAgIC8vIFByZXZpZXdDb252ZXJ0
ZXJDbGllbnQKKyAgICB2b2lkIHByZXZpZXdDb252ZXJ0ZXJEaWRTdGFydFVwZGF0aW5nKFByZXZp
ZXdDb252ZXJ0ZXImKSBmaW5hbCB7IH07CisgICAgdm9pZCBwcmV2aWV3Q29udmVydGVyRGlkRmlu
aXNoVXBkYXRpbmcoUHJldmlld0NvbnZlcnRlciYpIGZpbmFsIHsgfTsKKyAgICB2b2lkIHByZXZp
ZXdDb252ZXJ0ZXJEaWRGYWlsVXBkYXRpbmcoUHJldmlld0NvbnZlcnRlciYpIGZpbmFsOworICAg
IHZvaWQgcHJldmlld0NvbnZlcnRlckRpZFN0YXJ0Q29udmVydGluZyhQcmV2aWV3Q29udmVydGVy
JikgZmluYWw7CisgICAgdm9pZCBwcmV2aWV3Q29udmVydGVyRGlkUmVjZWl2ZURhdGEoUHJldmll
d0NvbnZlcnRlciYsIGNvbnN0IFNoYXJlZEJ1ZmZlciYpIGZpbmFsOworICAgIHZvaWQgcHJldmll
d0NvbnZlcnRlckRpZEZpbmlzaENvbnZlcnRpbmcoUHJldmlld0NvbnZlcnRlciYpIGZpbmFsOwor
ICAgIHZvaWQgcHJldmlld0NvbnZlcnRlckRpZEZhaWxDb252ZXJ0aW5nKFByZXZpZXdDb252ZXJ0
ZXImKSBmaW5hbDsKKworICAgIC8vIFByZXZpZXdDb252ZXJ0ZXJQcm92aWRlcgorICAgIHZvaWQg
cHJvdmlkZU1haW5SZXNvdXJjZUZvclByZXZpZXdDb252ZXJ0ZXIoUHJldmlld0NvbnZlcnRlciYs
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgU2hhcmVkQnVmZmVyKik+JiYpIGZpbmFsOwor
ICAgIHZvaWQgcHJvdmlkZVBhc3N3b3JkRm9yUHJldmlld0NvbnZlcnRlcihQcmV2aWV3Q29udmVy
dGVyJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBTdHJpbmcmKT4mJikgZmluYWw7CiAK
LSAgICBSZXRhaW5QdHI8V2ViUHJldmlld0xvYWRlcj4gbV9wcmV2aWV3TG9hZGVyOworICAgIFJl
ZlB0cjxQcmV2aWV3Q29udmVydGVyPiBtX2NvbnZlcnRlcjsKKyAgICBSZWY8TGVnYWN5UHJldmll
d0xvYWRlckNsaWVudD4gbV9jbGllbnQ7CisgICAgUmVmPFNoYXJlZEJ1ZmZlcj4gbV9vcmlnaW5h
bERhdGE7CisgICAgV2Vha1B0cjxSZXNvdXJjZUxvYWRlcj4gbV9yZXNvdXJjZUxvYWRlcjsKICAg
ICBib29sIG1fZmluaXNoZWRMb2FkaW5nRGF0YUludG9Db252ZXJ0ZXIgeyBmYWxzZSB9OworICAg
IGJvb2wgbV9oYXNQcm9jZXNzZWRSZXNwb25zZSB7IGZhbHNlIH07CisgICAgYm9vbCBtX25lZWRz
VG9DYWxsRGlkRmluaXNoTG9hZGluZyB7IGZhbHNlIH07CisgICAgYm9vbCBtX3Nob3VsZERlY2lk
ZVBvbGljeUJlZm9yZUxvYWRpbmc7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvaW9zL0xlZ2FjeVByZXZpZXdMb2FkZXIubW0g
Yi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvaW9zL0xlZ2FjeVByZXZpZXdMb2FkZXIubW0KaW5kZXgg
OTBlOTYxNmIyMGQ5NDA0MDVhNGU1MjlhYjNmM2NjNjcyYzNlNDdkMi4uYzdlN2M4YjkxZmI1NGNm
OGUxOTAxN2U3YzA4YmM1N2M1NGVhOTA5MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL2lvcy9MZWdhY3lQcmV2aWV3TG9hZGVyLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9pb3MvTGVnYWN5UHJldmlld0xvYWRlci5tbQpAQCAtMzgsMzQgKzM4LDkgQEAKICNpbXBvcnQg
IlF1aWNrTG9vay5oIgogI2ltcG9ydCAiUmVzb3VyY2VMb2FkZXIuaCIKICNpbXBvcnQgIlNldHRp
bmdzLmgiCi0jaW1wb3J0IDxwYWwvc3BpL2lvcy9RdWlja0xvb2tTUEkuaD4KICNpbXBvcnQgPHd0
Zi9OZXZlckRlc3Ryb3llZC5oPgogCi11c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKLQotQGludGVy
ZmFjZSBXZWJQcmV2aWV3TG9hZGVyIDogTlNPYmplY3QgewotICAgIFdlYWtQdHI8UmVzb3VyY2VM
b2FkZXI+IF9yZXNvdXJjZUxvYWRlcjsKLSAgICBSZXNvdXJjZVJlc3BvbnNlIF9yZXNwb25zZTsK
LSAgICBSZWZQdHI8TGVnYWN5UHJldmlld0xvYWRlckNsaWVudD4gX2NsaWVudDsKLSAgICBzdGQ6
OnVuaXF1ZV9wdHI8UHJldmlld0NvbnZlcnRlcj4gX2NvbnZlcnRlcjsKLSAgICBSZXRhaW5QdHI8
TlNNdXRhYmxlQXJyYXk+IF9idWZmZXJlZERhdGFBcnJheTsKLSAgICBCT09MIF9oYXNMb2FkZWRQ
cmV2aWV3OwotICAgIEJPT0wgX2hhc1Byb2Nlc3NlZFJlc3BvbnNlOwotICAgIFJlZlB0cjxTaGFy
ZWRCdWZmZXI+IF9idWZmZXJlZERhdGE7Ci0gICAgbG9uZyBsb25nIF9sZW5ndGhSZWNlaXZlZDsK
LSAgICBCT09MIF9uZWVkc1RvQ2FsbERpZEZpbmlzaExvYWRpbmc7Ci19Ci0KLS0gKGluc3RhbmNl
dHlwZSlpbml0V2l0aFJlc291cmNlTG9hZGVyOihSZXNvdXJjZUxvYWRlciYpcmVzb3VyY2VMb2Fk
ZXIgcmVzb3VyY2VSZXNwb25zZTooY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpcmVzb3VyY2VSZXNw
b25zZTsKLS0gKHZvaWQpYXBwZW5kRGF0YUFycmF5OihOU0FycmF5PE5TRGF0YSAqPiAqKWRhdGFB
cnJheTsKLS0gKHZvaWQpZmluaXNoZWRBcHBlbmRpbmc7Ci0tICh2b2lkKWZhaWxlZDsKLQotQHBy
b3BlcnR5IChub25hdG9taWMsIHJlYWRvbmx5KSBCT09MIHNob3VsZERlY2lkZVBvbGljeUJlZm9y
ZUxvYWRpbmc7Ci0KLUBlbmQKLQotQGltcGxlbWVudGF0aW9uIFdlYlByZXZpZXdMb2FkZXIKK25h
bWVzcGFjZSBXZWJDb3JlIHsKIAogc3RhdGljIFJlZlB0cjxMZWdhY3lQcmV2aWV3TG9hZGVyQ2xp
ZW50PiYgdGVzdGluZ0NsaWVudCgpCiB7CkBAIC03OSwyMzkgKzU0LDIwNCBAQCBzdGF0aWMgTGVn
YWN5UHJldmlld0xvYWRlckNsaWVudCYgZW1wdHlDbGllbnQoKQogICAgIHJldHVybiBlbXB0eUNs
aWVudC5nZXQoKTsKIH0KIAotLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoUmVzb3VyY2VMb2FkZXI6
KFJlc291cmNlTG9hZGVyJilyZXNvdXJjZUxvYWRlciByZXNvdXJjZVJlc3BvbnNlOihjb25zdCBS
ZXNvdXJjZVJlc3BvbnNlJilyZXNvdXJjZVJlc3BvbnNlCitzdGF0aWMgUmVmPExlZ2FjeVByZXZp
ZXdMb2FkZXJDbGllbnQ+IG1ha2VDbGllbnQoY29uc3QgUmVzb3VyY2VMb2FkZXImIGxvYWRlciwg
Y29uc3QgU3RyaW5nJiBwcmV2aWV3RmlsZU5hbWUsIGNvbnN0IFN0cmluZyYgcHJldmlld1R5cGUp
CiB7Ci0gICAgaWYgKCEoc2VsZiA9IFtzdXBlciBpbml0XSkpCi0gICAgICAgIHJldHVybiBuaWw7
Ci0KLSAgICBfcmVzb3VyY2VMb2FkZXIgPSBtYWtlV2Vha1B0cihyZXNvdXJjZUxvYWRlcik7Ci0g
ICAgX3Jlc3BvbnNlID0gcmVzb3VyY2VSZXNwb25zZTsKLSAgICBfY29udmVydGVyID0gbWFrZVVu
aXF1ZTxQcmV2aWV3Q29udmVydGVyPihzZWxmLCBfcmVzcG9uc2UpOwotICAgIF9idWZmZXJlZERh
dGFBcnJheSA9IGFkb3B0TlMoW1tOU011dGFibGVBcnJheSBhbGxvY10gaW5pdF0pOwotICAgIF9z
aG91bGREZWNpZGVQb2xpY3lCZWZvcmVMb2FkaW5nID0gcmVzb3VyY2VMb2FkZXIuZnJhbWUoKS0+
c2V0dGluZ3MoKS5zaG91bGREZWNpZGVQb2xpY3lCZWZvcmVMb2FkaW5nUXVpY2tMb29rUHJldmll
dygpOwotCi0gICAgaWYgKHRlc3RpbmdDbGllbnQoKSkKLSAgICAgICAgX2NsaWVudCA9IHRlc3Rp
bmdDbGllbnQoKTsKLSAgICBlbHNlIGlmIChhdXRvIGNsaWVudCA9IHJlc291cmNlTG9hZGVyLmZy
YW1lTG9hZGVyKCktPmNsaWVudCgpLmNyZWF0ZVByZXZpZXdMb2FkZXJDbGllbnQoX2NvbnZlcnRl
ci0+cHJldmlld0ZpbGVOYW1lKCksIF9jb252ZXJ0ZXItPnByZXZpZXdVVEkoKSkpCi0gICAgICAg
IF9jbGllbnQgPSBXVEZNb3ZlKGNsaWVudCk7Ci0gICAgZWxzZQotICAgICAgICBfY2xpZW50ID0g
JmVtcHR5Q2xpZW50KCk7Ci0KLSAgICBMT0coTmV0d29yaywgIldlYlByZXZpZXdDb252ZXJ0ZXIg
Y3JlYXRlZCB3aXRoIHByZXZpZXcgZmlsZSBuYW1lIFwiJXNcIi4iLCBfY29udmVydGVyLT5wcmV2
aWV3RmlsZU5hbWUoKS51dGY4KCkuZGF0YSgpKTsKLSAgICByZXR1cm4gc2VsZjsKKyAgICBpZiAo
YXV0byBjbGllbnQgPSB0ZXN0aW5nQ2xpZW50KCkpCisgICAgICAgIHJldHVybiBjbGllbnQucmVs
ZWFzZU5vbk51bGwoKTsKKyAgICBpZiAoYXV0byBjbGllbnQgPSBsb2FkZXIuZnJhbWVMb2FkZXIo
KS0+Y2xpZW50KCkuY3JlYXRlUHJldmlld0xvYWRlckNsaWVudChwcmV2aWV3RmlsZU5hbWUsIHBy
ZXZpZXdUeXBlKSkKKyAgICAgICAgcmV0dXJuIGNsaWVudC5yZWxlYXNlTm9uTnVsbCgpOworICAg
IHJldHVybiBlbXB0eUNsaWVudCgpOwogfQogCi0tICh2b2lkKWFwcGVuZERhdGFBcnJheTooTlNB
cnJheTxOU0RhdGEgKj4gKilkYXRhQXJyYXkKK2Jvb2wgTGVnYWN5UHJldmlld0xvYWRlcjo6ZGlk
UmVjZWl2ZUJ1ZmZlcihjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikKIHsKLSAgICBMT0coTmV0
d29yaywgIldlYlByZXZpZXdDb252ZXJ0ZXIgYXBwZW5kaW5nIGRhdGEgYXJyYXkgd2l0aCBjb3Vu
dCAlbGQuIiwgZGF0YUFycmF5LmNvdW50KTsKLSAgICBbX2NvbnZlcnRlci0+cGxhdGZvcm1Db252
ZXJ0ZXIoKSBhcHBlbmREYXRhQXJyYXk6ZGF0YUFycmF5XTsKLSAgICBbX2J1ZmZlcmVkRGF0YUFy
cmF5IGFkZE9iamVjdHNGcm9tQXJyYXk6ZGF0YUFycmF5XTsKLSAgICBfY2xpZW50LT5kaWRSZWNl
aXZlRGF0YUFycmF5KChDRkFycmF5UmVmKWRhdGFBcnJheSk7CisgICAgaWYgKG1fZmluaXNoZWRM
b2FkaW5nRGF0YUludG9Db252ZXJ0ZXIpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIExP
RyhOZXR3b3JrLCAiTGVnYWN5UHJldmlld0xvYWRlciBhcHBlbmRpbmcgYnVmZmVyIHdpdGggc2l6
ZSAlbGQuIiwgYnVmZmVyLnNpemUoKSk7CisgICAgbV9vcmlnaW5hbERhdGEtPmFwcGVuZChidWZm
ZXIpOworICAgIG1fY29udmVydGVyLT51cGRhdGVNYWluUmVzb3VyY2UoKTsKKyAgICBtX2NsaWVu
dC0+ZGlkUmVjZWl2ZURhdGFBcnJheSgoX19icmlkZ2UgQ0ZBcnJheVJlZilidWZmZXIuY3JlYXRl
TlNEYXRhQXJyYXkoKS5nZXQoKSk7CisgICAgcmV0dXJuIHRydWU7CiB9CiAKLS0gKHZvaWQpZmlu
aXNoZWRBcHBlbmRpbmcKK2Jvb2wgTGVnYWN5UHJldmlld0xvYWRlcjo6ZGlkRmluaXNoTG9hZGlu
ZygpCiB7Ci0gICAgTE9HKE5ldHdvcmssICJXZWJQcmV2aWV3Q29udmVydGVyIGZpbmlzaGVkIGFw
cGVuZGluZyBkYXRhLiIpOwotICAgIFtfY29udmVydGVyLT5wbGF0Zm9ybUNvbnZlcnRlcigpIGZp
bmlzaGVkQXBwZW5kaW5nRGF0YV07Ci0gICAgX2NsaWVudC0+ZGlkRmluaXNoTG9hZGluZygpOwor
ICAgIGlmIChtX2ZpbmlzaGVkTG9hZGluZ0RhdGFJbnRvQ29udmVydGVyKQorICAgICAgICByZXR1
cm4gZmFsc2U7CisKKyAgICBMT0coTmV0d29yaywgIkxlZ2FjeVByZXZpZXdMb2FkZXIgZmluaXNo
ZWQgYXBwZW5kaW5nIGRhdGEuIik7CisgICAgbV9maW5pc2hlZExvYWRpbmdEYXRhSW50b0NvbnZl
cnRlciA9IHRydWU7CisgICAgbV9jb252ZXJ0ZXItPmZpbmlzaFVwZGF0aW5nKCk7CisgICAgbV9j
bGllbnQtPmRpZEZpbmlzaExvYWRpbmcoKTsKKyAgICByZXR1cm4gdHJ1ZTsKIH0KIAotLSAodm9p
ZClmYWlsZWQKK3ZvaWQgTGVnYWN5UHJldmlld0xvYWRlcjo6ZGlkRmFpbCgpCiB7Ci0gICAgTE9H
KE5ldHdvcmssICJXZWJQcmV2aWV3Q29udmVydGVyIGZhaWxlZC4iKTsKLSAgICBbX2NvbnZlcnRl
ci0+cGxhdGZvcm1Db252ZXJ0ZXIoKSBmaW5pc2hDb252ZXJ0aW5nXTsKLSAgICBfY2xpZW50LT5k
aWRGYWlsKCk7CisgICAgaWYgKG1fZmluaXNoZWRMb2FkaW5nRGF0YUludG9Db252ZXJ0ZXIpCisg
ICAgICAgIHJldHVybjsKKworICAgIExPRyhOZXR3b3JrLCAiTGVnYWN5UHJldmlld0xvYWRlciBm
YWlsZWQuIik7CisgICAgbV9maW5pc2hlZExvYWRpbmdEYXRhSW50b0NvbnZlcnRlciA9IHRydWU7
CisgICAgbV9jb252ZXJ0ZXItPmZhaWxlZFVwZGF0aW5nKCk7CisgICAgbV9jbGllbnQtPmRpZEZh
aWwoKTsKKyAgICBtX2NvbnZlcnRlciA9IG51bGxwdHI7CiB9CiAKLS0gKHZvaWQpX2xvYWRQcmV2
aWV3SWZOZWVkZWQKK3ZvaWQgTGVnYWN5UHJldmlld0xvYWRlcjo6cHJldmlld0NvbnZlcnRlckRp
ZFN0YXJ0Q29udmVydGluZyhQcmV2aWV3Q29udmVydGVyJiBjb252ZXJ0ZXIpCiB7Ci0gICAgaWYg
KCFfcmVzb3VyY2VMb2FkZXIpCisgICAgYXV0byByZXNvdXJjZUxvYWRlciA9IG1fcmVzb3VyY2VM
b2FkZXIuZ2V0KCk7CisgICAgaWYgKCFyZXNvdXJjZUxvYWRlcikKICAgICAgICAgcmV0dXJuOwog
Ci0gICAgQVNTRVJUKCFfcmVzb3VyY2VMb2FkZXItPnJlYWNoZWRUZXJtaW5hbFN0YXRlKCkpOwot
ICAgIGlmIChfaGFzTG9hZGVkUHJldmlldykKKyAgICBpZiAocmVzb3VyY2VMb2FkZXItPnJlYWNo
ZWRUZXJtaW5hbFN0YXRlKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIF9oYXNMb2FkZWRQcmV2
aWV3ID0gWUVTOwotICAgIFtfYnVmZmVyZWREYXRhQXJyYXkgcmVtb3ZlQWxsT2JqZWN0c107Ci0K
LSAgICBSZXNvdXJjZVJlc3BvbnNlIHJlc3BvbnNlIHsgX2NvbnZlcnRlci0+cHJldmlld1Jlc3Bv
bnNlKCkgfTsKLSAgICByZXNwb25zZS5zZXRJc1F1aWNrTG9vayh0cnVlKTsKLSAgICBBU1NFUlQo
cmVzcG9uc2UubWltZVR5cGUoKS5sZW5ndGgoKSk7Ci0KLSAgICBfcmVzb3VyY2VMb2FkZXItPmRv
Y3VtZW50TG9hZGVyKCktPnNldFByZXZpZXdDb252ZXJ0ZXIoV1RGTW92ZShfY29udmVydGVyKSk7
CisgICAgQVNTRVJUKCFtX2hhc1Byb2Nlc3NlZFJlc3BvbnNlKTsKKyAgICBtX29yaWdpbmFsRGF0
YS0+Y2xlYXIoKTsKKyAgICByZXNvdXJjZUxvYWRlci0+ZG9jdW1lbnRMb2FkZXIoKS0+c2V0UHJl
dmlld0NvbnZlcnRlcihXVEZNb3ZlKG1fY29udmVydGVyKSk7CisgICAgYXV0byByZXNwb25zZSB7
IGNvbnZlcnRlci5wcmV2aWV3UmVzcG9uc2UoKSB9OwogCi0gICAgaWYgKF9zaG91bGREZWNpZGVQ
b2xpY3lCZWZvcmVMb2FkaW5nKSB7Ci0gICAgICAgIF9oYXNQcm9jZXNzZWRSZXNwb25zZSA9IFlF
UzsKLSAgICAgICAgX3Jlc291cmNlTG9hZGVyLT5kaWRSZWNlaXZlUHJldmlld1Jlc3BvbnNlKHJl
c3BvbnNlKTsKKyAgICBpZiAobV9zaG91bGREZWNpZGVQb2xpY3lCZWZvcmVMb2FkaW5nKSB7Cisg
ICAgICAgIG1faGFzUHJvY2Vzc2VkUmVzcG9uc2UgPSB0cnVlOworICAgICAgICByZXNvdXJjZUxv
YWRlci0+ZGlkUmVjZWl2ZVByZXZpZXdSZXNwb25zZShyZXNwb25zZSk7CiAgICAgICAgIHJldHVy
bjsKICAgICB9CiAKLSAgICBfaGFzUHJvY2Vzc2VkUmVzcG9uc2UgPSBOTzsKLSAgICBfcmVzb3Vy
Y2VMb2FkZXItPmRpZFJlY2VpdmVSZXNwb25zZShyZXNwb25zZSwgW3NlbGYsIHJldGFpbmVkU2Vs
ZiA9IHJldGFpblB0cihzZWxmKV0gewotICAgICAgICBfaGFzUHJvY2Vzc2VkUmVzcG9uc2UgPSBZ
RVM7CisgICAgcmVzb3VyY2VMb2FkZXItPmRpZFJlY2VpdmVSZXNwb25zZShyZXNwb25zZSwgW3Ro
aXMsIHdlYWtUaGlzID0gbWFrZVdlYWtQdHIoc3RhdGljX2Nhc3Q8UHJldmlld0NvbnZlcnRlckNs
aWVudCY+KCp0aGlzKSksIGNvbnZlcnRlciA9IG1ha2VSZWYoY29udmVydGVyKV0geworICAgICAg
ICBpZiAoIXdlYWtUaGlzKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIG1faGFzUHJv
Y2Vzc2VkUmVzcG9uc2UgPSB0cnVlOwogCi0gICAgICAgIGlmICghX3Jlc291cmNlTG9hZGVyKQor
ICAgICAgICBhdXRvIHJlc291cmNlTG9hZGVyID0gbV9yZXNvdXJjZUxvYWRlci5nZXQoKTsKKyAg
ICAgICAgaWYgKCFyZXNvdXJjZUxvYWRlcikKICAgICAgICAgICAgIHJldHVybjsKIAotICAgICAg
ICBpZiAoX3Jlc291cmNlTG9hZGVyLT5yZWFjaGVkVGVybWluYWxTdGF0ZSgpKQorICAgICAgICBp
ZiAocmVzb3VyY2VMb2FkZXItPnJlYWNoZWRUZXJtaW5hbFN0YXRlKCkpCiAgICAgICAgICAgICBy
ZXR1cm47CiAKLSAgICAgICAgaWYgKGF1dG8gYnVmZmVyZWREYXRhID0gV1RGTW92ZShfYnVmZmVy
ZWREYXRhKSkgewotICAgICAgICAgICAgX3Jlc291cmNlTG9hZGVyLT5kaWRSZWNlaXZlRGF0YShi
dWZmZXJlZERhdGEtPmRhdGEoKSwgYnVmZmVyZWREYXRhLT5zaXplKCksIF9sZW5ndGhSZWNlaXZl
ZCwgRGF0YVBheWxvYWRCeXRlcyk7Ci0gICAgICAgICAgICBfbGVuZ3RoUmVjZWl2ZWQgPSAwOwor
ICAgICAgICBpZiAoIWNvbnZlcnRlci0+cHJldmlld0RhdGEoKS5pc0VtcHR5KCkpIHsKKyAgICAg
ICAgICAgIGF1dG8gYnVmZmVyU2l6ZSA9IGNvbnZlcnRlci0+cHJldmlld0RhdGEoKS5zaXplKCk7
CisgICAgICAgICAgICByZXNvdXJjZUxvYWRlci0+ZGlkUmVjZWl2ZUJ1ZmZlcihjb252ZXJ0ZXIt
PnByZXZpZXdEYXRhKCkuY29weSgpLCBidWZmZXJTaXplLCBEYXRhUGF5bG9hZEJ5dGVzKTsKICAg
ICAgICAgfQogCi0gICAgICAgIGlmIChfcmVzb3VyY2VMb2FkZXItPnJlYWNoZWRUZXJtaW5hbFN0
YXRlKCkpCisgICAgICAgIGlmIChyZXNvdXJjZUxvYWRlci0+cmVhY2hlZFRlcm1pbmFsU3RhdGUo
KSkKICAgICAgICAgICAgIHJldHVybjsKIAotICAgICAgICBpZiAoX25lZWRzVG9DYWxsRGlkRmlu
aXNoTG9hZGluZykgewotICAgICAgICAgICAgX25lZWRzVG9DYWxsRGlkRmluaXNoTG9hZGluZyA9
IE5POwotICAgICAgICAgICAgX3Jlc291cmNlTG9hZGVyLT5kaWRGaW5pc2hMb2FkaW5nKE5ldHdv
cmtMb2FkTWV0cmljcyB7IH0pOworICAgICAgICBpZiAobV9uZWVkc1RvQ2FsbERpZEZpbmlzaExv
YWRpbmcpIHsKKyAgICAgICAgICAgIG1fbmVlZHNUb0NhbGxEaWRGaW5pc2hMb2FkaW5nID0gZmFs
c2U7CisgICAgICAgICAgICByZXNvdXJjZUxvYWRlci0+ZGlkRmluaXNoTG9hZGluZyhOZXR3b3Jr
TG9hZE1ldHJpY3MgeyB9KTsKICAgICAgICAgfQogICAgIH0pOwogfQogCi0tICh2b2lkKWNvbm5l
Y3Rpb246KE5TVVJMQ29ubmVjdGlvbiAqKWNvbm5lY3Rpb24gZGlkUmVjZWl2ZURhdGE6KE5TRGF0
YSAqKWRhdGEgbGVuZ3RoUmVjZWl2ZWQ6KGxvbmcgbG9uZylsZW5ndGhSZWNlaXZlZAordm9pZCBM
ZWdhY3lQcmV2aWV3TG9hZGVyOjpwcmV2aWV3Q29udmVydGVyRGlkUmVjZWl2ZURhdGEoUHJldmll
d0NvbnZlcnRlciYsIGNvbnN0IFNoYXJlZEJ1ZmZlciYgZGF0YSkKIHsKLSAgICBpZiAoIV9yZXNv
dXJjZUxvYWRlcikKKyAgICBhdXRvIHJlc291cmNlTG9hZGVyID0gbV9yZXNvdXJjZUxvYWRlci5n
ZXQoKTsKKyAgICBpZiAoIXJlc291cmNlTG9hZGVyKQogICAgICAgICByZXR1cm47CiAKLSAgICBB
U1NFUlRfVU5VU0VEKGNvbm5lY3Rpb24sICFjb25uZWN0aW9uKTsKLSAgICBpZiAoX3Jlc291cmNl
TG9hZGVyLT5yZWFjaGVkVGVybWluYWxTdGF0ZSgpKQorICAgIGlmIChyZXNvdXJjZUxvYWRlci0+
cmVhY2hlZFRlcm1pbmFsU3RhdGUoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgW3NlbGYgX2xv
YWRQcmV2aWV3SWZOZWVkZWRdOwotCi0gICAgYXV0byBkYXRhTGVuZ3RoID0gZGF0YS5sZW5ndGg7
Ci0KLSAgICAvLyBRdWlja0xvb2sgY29kZSBzZW5kcyB1cyBhIG5pbCBkYXRhIGF0IHRpbWVzLiBU
aGUgY2hlY2sgYmVsb3cgaXMgdGhlIHNhbWUgYXMgdGhlIG9uZSBpbgotICAgIC8vIFJlc291cmNl
SGFuZGxlTWFjLmNwcCBhZGRlZCBmb3IgYSBkaWZmZXJlbnQgYnVnLgotICAgIGlmICghZGF0YUxl
bmd0aCkKKyAgICBpZiAoZGF0YS5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIGlm
IChfaGFzUHJvY2Vzc2VkUmVzcG9uc2UpIHsKLSAgICAgICAgX3Jlc291cmNlTG9hZGVyLT5kaWRS
ZWNlaXZlRGF0YShyZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIqPihkYXRhLmJ5dGVzKSwgZGF0
YUxlbmd0aCwgbGVuZ3RoUmVjZWl2ZWQsIERhdGFQYXlsb2FkQnl0ZXMpOworICAgIGlmICghbV9o
YXNQcm9jZXNzZWRSZXNwb25zZSkKICAgICAgICAgcmV0dXJuOwotICAgIH0KIAotICAgIGlmICgh
X2J1ZmZlcmVkRGF0YSkKLSAgICAgICAgX2J1ZmZlcmVkRGF0YSA9IFNoYXJlZEJ1ZmZlcjo6Y3Jl
YXRlKGRhdGEpOwotICAgIGVsc2UKLSAgICAgICAgX2J1ZmZlcmVkRGF0YS0+YXBwZW5kKGRhdGEp
OwotICAgIF9sZW5ndGhSZWNlaXZlZCArPSBsZW5ndGhSZWNlaXZlZDsKKyAgICBhdXRvIGRhdGFD
b3B5ID0gZGF0YS5jb3B5KCk7CisgICAgcmVzb3VyY2VMb2FkZXItPmRpZFJlY2VpdmVCdWZmZXIo
V1RGTW92ZShkYXRhQ29weSksIGRhdGFDb3B5LT5zaXplKCksIERhdGFQYXlsb2FkQnl0ZXMpOwog
fQogCi0tICh2b2lkKWNvbm5lY3Rpb25EaWRGaW5pc2hMb2FkaW5nOihOU1VSTENvbm5lY3Rpb24g
Kiljb25uZWN0aW9uCit2b2lkIExlZ2FjeVByZXZpZXdMb2FkZXI6OnByZXZpZXdDb252ZXJ0ZXJE
aWRGaW5pc2hDb252ZXJ0aW5nKFByZXZpZXdDb252ZXJ0ZXImKQogewotICAgIGlmICghX3Jlc291
cmNlTG9hZGVyKQorICAgIGF1dG8gcmVzb3VyY2VMb2FkZXIgPSBtX3Jlc291cmNlTG9hZGVyLmdl
dCgpOworICAgIGlmICghcmVzb3VyY2VMb2FkZXIpCiAgICAgICAgIHJldHVybjsKIAotICAgIEFT
U0VSVF9VTlVTRUQoY29ubmVjdGlvbiwgIWNvbm5lY3Rpb24pOwotICAgIGlmIChfcmVzb3VyY2VM
b2FkZXItPnJlYWNoZWRUZXJtaW5hbFN0YXRlKCkpCisgICAgaWYgKHJlc291cmNlTG9hZGVyLT5y
ZWFjaGVkVGVybWluYWxTdGF0ZSgpKQogICAgICAgICByZXR1cm47Ci0gICAgCi0gICAgQVNTRVJU
KF9oYXNMb2FkZWRQcmV2aWV3KTsKIAotICAgIGlmICghX2hhc1Byb2Nlc3NlZFJlc3BvbnNlKSB7
Ci0gICAgICAgIF9uZWVkc1RvQ2FsbERpZEZpbmlzaExvYWRpbmcgPSBZRVM7CisgICAgaWYgKCFt
X2hhc1Byb2Nlc3NlZFJlc3BvbnNlKSB7CisgICAgICAgIG1fbmVlZHNUb0NhbGxEaWRGaW5pc2hM
b2FkaW5nID0gdHJ1ZTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIF9yZXNvdXJjZUxv
YWRlci0+ZGlkRmluaXNoTG9hZGluZyhOZXR3b3JrTG9hZE1ldHJpY3MgeyB9KTsKKyAgICByZXNv
dXJjZUxvYWRlci0+ZGlkRmluaXNoTG9hZGluZyhOZXR3b3JrTG9hZE1ldHJpY3MgeyB9KTsKIH0K
IAotc3RhdGljIGlubGluZSBib29sIGlzUXVpY2tMb29rUGFzc3dvcmRFcnJvcihOU0Vycm9yICpl
cnJvcikKK3ZvaWQgTGVnYWN5UHJldmlld0xvYWRlcjo6cHJldmlld0NvbnZlcnRlckRpZEZhaWxV
cGRhdGluZyhQcmV2aWV3Q29udmVydGVyJikKIHsKLSAgICByZXR1cm4gZXJyb3IuY29kZSA9PSBr
UUxSZXR1cm5QYXNzd29yZFByb3RlY3RlZCAmJiBbZXJyb3IuZG9tYWluIGlzRXF1YWxUb1N0cmlu
ZzpAIlF1aWNrTG9va0Vycm9yRG9tYWluIl07CisgICAgaWYgKGF1dG8gcmVzb3VyY2VMb2FkZXIg
PSBtX3Jlc291cmNlTG9hZGVyLmdldCgpKQorICAgICAgICByZXNvdXJjZUxvYWRlci0+ZGlkRmFp
bChyZXNvdXJjZUxvYWRlci0+Y2Fubm90U2hvd1VSTEVycm9yKCkpOwogfQogCi0tICh2b2lkKWNv
bm5lY3Rpb246KE5TVVJMQ29ubmVjdGlvbiAqKWNvbm5lY3Rpb24gZGlkRmFpbFdpdGhFcnJvcjoo
TlNFcnJvciAqKWVycm9yCit2b2lkIExlZ2FjeVByZXZpZXdMb2FkZXI6OnByZXZpZXdDb252ZXJ0
ZXJEaWRGYWlsQ29udmVydGluZyhQcmV2aWV3Q29udmVydGVyJiBjb252ZXJ0ZXIpCiB7Ci0gICAg
aWYgKCFfcmVzb3VyY2VMb2FkZXIpCisgICAgYXV0byByZXNvdXJjZUxvYWRlciA9IG1fcmVzb3Vy
Y2VMb2FkZXIuZ2V0KCk7CisgICAgaWYgKCFyZXNvdXJjZUxvYWRlcikKICAgICAgICAgcmV0dXJu
OwogCi0gICAgQVNTRVJUX1VOVVNFRChjb25uZWN0aW9uLCAhY29ubmVjdGlvbik7Ci0gICAgaWYg
KF9yZXNvdXJjZUxvYWRlci0+cmVhY2hlZFRlcm1pbmFsU3RhdGUoKSkKKyAgICBpZiAocmVzb3Vy
Y2VMb2FkZXItPnJlYWNoZWRUZXJtaW5hbFN0YXRlKCkpCiAgICAgICAgIHJldHVybjsKIAotICAg
IGlmICghaXNRdWlja0xvb2tQYXNzd29yZEVycm9yKGVycm9yKSkgewotICAgICAgICBfcmVzb3Vy
Y2VMb2FkZXItPmRpZEZhaWwoZXJyb3IpOworICAgIHJlc291cmNlTG9hZGVyLT5kaWRGYWlsKGNv
bnZlcnRlci5wcmV2aWV3RXJyb3IoKSk7Cit9CisKK3ZvaWQgTGVnYWN5UHJldmlld0xvYWRlcjo6
cHJvdmlkZVBhc3N3b3JkRm9yUHJldmlld0NvbnZlcnRlcihQcmV2aWV3Q29udmVydGVyJiBjb252
ZXJ0ZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgU3RyaW5nJik+JiYgY29tcGxldGlv
bkhhbmRsZXIpCit7CisgICAgQVNTRVJUX1VOVVNFRChjb252ZXJ0ZXIsICZjb252ZXJ0ZXIgPT0g
bV9jb252ZXJ0ZXIpOworCisgICAgYXV0byByZXNvdXJjZUxvYWRlciA9IG1fcmVzb3VyY2VMb2Fk
ZXIuZ2V0KCk7CisgICAgaWYgKCFyZXNvdXJjZUxvYWRlcikgeworICAgICAgICBjb21wbGV0aW9u
SGFuZGxlcih7IH0pOwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgaWYgKCFfY2xpZW50
LT5zdXBwb3J0c1Bhc3N3b3JkRW50cnkoKSkgewotICAgICAgICBfcmVzb3VyY2VMb2FkZXItPmRp
ZEZhaWwoX3Jlc291cmNlTG9hZGVyLT5jYW5ub3RTaG93VVJMRXJyb3IoKSk7CisgICAgaWYgKHJl
c291cmNlTG9hZGVyLT5yZWFjaGVkVGVybWluYWxTdGF0ZSgpKSB7CisgICAgICAgIGNvbXBsZXRp
b25IYW5kbGVyKHsgfSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBfY2xpZW50LT5k
aWRSZXF1ZXN0UGFzc3dvcmQoW3NlbGYsIHJldGFpbmVkU2VsZiA9IHJldGFpblB0cihzZWxmKV0g
KGNvbnN0IFN0cmluZyYgcGFzc3dvcmQpIHsKLSAgICAgICAgX2NvbnZlcnRlciA9IG1ha2VVbmlx
dWU8UHJldmlld0NvbnZlcnRlcj4oc2VsZiwgX3Jlc3BvbnNlLCBwYXNzd29yZCk7Ci0gICAgICAg
IFtfY29udmVydGVyLT5wbGF0Zm9ybUNvbnZlcnRlcigpIGFwcGVuZERhdGFBcnJheTpfYnVmZmVy
ZWREYXRhQXJyYXkuZ2V0KCldOwotICAgICAgICBbX2NvbnZlcnRlci0+cGxhdGZvcm1Db252ZXJ0
ZXIoKSBmaW5pc2hlZEFwcGVuZGluZ0RhdGFdOwotICAgIH0pOwotfQotCi1AZW5kCi0KLW5hbWVz
cGFjZSBXZWJDb3JlIHsKKyAgICBpZiAoIW1fY2xpZW50LT5zdXBwb3J0c1Bhc3N3b3JkRW50cnko
KSkgeworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcih7IH0pOworICAgICAgICByZXR1cm47Cisg
ICAgfQogCi1MZWdhY3lQcmV2aWV3TG9hZGVyOjpMZWdhY3lQcmV2aWV3TG9hZGVyKFJlc291cmNl
TG9hZGVyJiBsb2FkZXIsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKQotICAgIDog
bV9wcmV2aWV3TG9hZGVyIHsgYWRvcHROUyhbW1dlYlByZXZpZXdMb2FkZXIgYWxsb2NdIGluaXRX
aXRoUmVzb3VyY2VMb2FkZXI6bG9hZGVyIHJlc291cmNlUmVzcG9uc2U6cmVzcG9uc2VdKSB9Ci17
CisgICAgbV9jbGllbnQtPmRpZFJlcXVlc3RQYXNzd29yZChXVEZNb3ZlKGNvbXBsZXRpb25IYW5k
bGVyKSk7CiB9CiAKLUxlZ2FjeVByZXZpZXdMb2FkZXI6On5MZWdhY3lQcmV2aWV3TG9hZGVyKCkK
K3ZvaWQgTGVnYWN5UHJldmlld0xvYWRlcjo6cHJvdmlkZU1haW5SZXNvdXJjZUZvclByZXZpZXdD
b252ZXJ0ZXIoUHJldmlld0NvbnZlcnRlciYgY29udmVydGVyLCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKGNvbnN0IFNoYXJlZEJ1ZmZlciopPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogeworICAgIEFT
U0VSVF9VTlVTRUQoY29udmVydGVyLCAmY29udmVydGVyID09IG1fY29udmVydGVyKTsKKyAgICBj
b21wbGV0aW9uSGFuZGxlcihtX29yaWdpbmFsRGF0YS5wdHIoKSk7CiB9CiAKLXN0ZDo6dW5pcXVl
X3B0cjxMZWdhY3lQcmV2aWV3TG9hZGVyPiBMZWdhY3lQcmV2aWV3TG9hZGVyOjpjcmVhdGUoUmVz
b3VyY2VMb2FkZXImIGxvYWRlciwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UpCi17
Ci0gICAgQVNTRVJUKFByZXZpZXdDb252ZXJ0ZXI6OnN1cHBvcnRzTUlNRVR5cGUocmVzcG9uc2Uu
bWltZVR5cGUoKSkpOwotICAgIHJldHVybiBtYWtlVW5pcXVlPExlZ2FjeVByZXZpZXdMb2FkZXI+
KGxvYWRlciwgcmVzcG9uc2UpOwotfQorTGVnYWN5UHJldmlld0xvYWRlcjo6fkxlZ2FjeVByZXZp
ZXdMb2FkZXIoKSA9IGRlZmF1bHQ7CiAKLWJvb2wgTGVnYWN5UHJldmlld0xvYWRlcjo6ZGlkUmVj
ZWl2ZVJlc3BvbnNlKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKQorTGVnYWN5UHJldmlld0xvYWRl
cjo6TGVnYWN5UHJldmlld0xvYWRlcihSZXNvdXJjZUxvYWRlciYgbG9hZGVyLCBjb25zdCBSZXNv
dXJjZVJlc3BvbnNlJiByZXNwb25zZSkKKyAgICA6IG1fY29udmVydGVyIHsgUHJldmlld0NvbnZl
cnRlcjo6Y3JlYXRlKHJlc3BvbnNlLCAqdGhpcykgfQorICAgICwgbV9jbGllbnQgeyBtYWtlQ2xp
ZW50KGxvYWRlciwgbV9jb252ZXJ0ZXItPnByZXZpZXdGaWxlTmFtZSgpLCBtX2NvbnZlcnRlci0+
cHJldmlld1VUSSgpKSB9CisgICAgLCBtX29yaWdpbmFsRGF0YSB7IFNoYXJlZEJ1ZmZlcjo6Y3Jl
YXRlKCkgfQorICAgICwgbV9yZXNvdXJjZUxvYWRlciB7IG1ha2VXZWFrUHRyKGxvYWRlcikgfQor
ICAgICwgbV9zaG91bGREZWNpZGVQb2xpY3lCZWZvcmVMb2FkaW5nIHsgbG9hZGVyLmZyYW1lKCkt
PnNldHRpbmdzKCkuc2hvdWxkRGVjaWRlUG9saWN5QmVmb3JlTG9hZGluZ1F1aWNrTG9va1ByZXZp
ZXcoKSB9CiB7Ci0gICAgcmV0dXJuICFbbV9wcmV2aWV3TG9hZGVyIHNob3VsZERlY2lkZVBvbGlj
eUJlZm9yZUxvYWRpbmddOworICAgIEFTU0VSVChQcmV2aWV3Q29udmVydGVyOjpzdXBwb3J0c01J
TUVUeXBlKHJlc3BvbnNlLm1pbWVUeXBlKCkpKTsKKyAgICBtX2NvbnZlcnRlci0+YWRkQ2xpZW50
KCp0aGlzKTsKKyAgICBMT0coTmV0d29yaywgIkxlZ2FjeVByZXZpZXdMb2FkZXIgY3JlYXRlZCB3
aXRoIHByZXZpZXcgZmlsZSBuYW1lIFwiJXNcIi4iLCBtX2NvbnZlcnRlci0+cHJldmlld0ZpbGVO
YW1lKCkudXRmOCgpLmRhdGEoKSk7CiB9CiAKIGJvb2wgTGVnYWN5UHJldmlld0xvYWRlcjo6ZGlk
UmVjZWl2ZURhdGEoY29uc3QgY2hhciogZGF0YSwgdW5zaWduZWQgbGVuZ3RoKQogewotICAgIGlm
IChtX2ZpbmlzaGVkTG9hZGluZ0RhdGFJbnRvQ29udmVydGVyKQotICAgICAgICByZXR1cm4gZmFs
c2U7Ci0KLSAgICBbbV9wcmV2aWV3TG9hZGVyIGFwcGVuZERhdGFBcnJheTpAWyBbTlNEYXRhIGRh
dGFXaXRoQnl0ZXM6ZGF0YSBsZW5ndGg6bGVuZ3RoXSBdXTsKLSAgICByZXR1cm4gdHJ1ZTsKKyAg
ICByZXR1cm4gZGlkUmVjZWl2ZUJ1ZmZlcihTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRhLCBsZW5n
dGgpLmdldCgpKTsKIH0KIAotYm9vbCBMZWdhY3lQcmV2aWV3TG9hZGVyOjpkaWRSZWNlaXZlQnVm
ZmVyKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQotewotICAgIGlmIChtX2ZpbmlzaGVkTG9h
ZGluZ0RhdGFJbnRvQ29udmVydGVyKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBbbV9w
cmV2aWV3TG9hZGVyIGFwcGVuZERhdGFBcnJheTpidWZmZXIuY3JlYXRlTlNEYXRhQXJyYXkoKS5n
ZXQoKV07Ci0gICAgcmV0dXJuIHRydWU7Ci19Ci0KLWJvb2wgTGVnYWN5UHJldmlld0xvYWRlcjo6
ZGlkRmluaXNoTG9hZGluZygpCi17Ci0gICAgaWYgKG1fZmluaXNoZWRMb2FkaW5nRGF0YUludG9D
b252ZXJ0ZXIpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIG1fZmluaXNoZWRMb2FkaW5n
RGF0YUludG9Db252ZXJ0ZXIgPSB0cnVlOwotICAgIFttX3ByZXZpZXdMb2FkZXIgZmluaXNoZWRB
cHBlbmRpbmddOwotICAgIHJldHVybiB0cnVlOwotfQotCi12b2lkIExlZ2FjeVByZXZpZXdMb2Fk
ZXI6OmRpZEZhaWwoKQorYm9vbCBMZWdhY3lQcmV2aWV3TG9hZGVyOjpkaWRSZWNlaXZlUmVzcG9u
c2UoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpCiB7Ci0gICAgaWYgKG1fZmluaXNoZWRMb2FkaW5n
RGF0YUludG9Db252ZXJ0ZXIpCi0gICAgICAgIHJldHVybjsKLQotICAgIG1fZmluaXNoZWRMb2Fk
aW5nRGF0YUludG9Db252ZXJ0ZXIgPSB0cnVlOwotICAgIFttX3ByZXZpZXdMb2FkZXIgZmFpbGVk
XTsKLSAgICBtX3ByZXZpZXdMb2FkZXIgPSBudWxscHRyOworICAgIHJldHVybiAhbV9zaG91bGRE
ZWNpZGVQb2xpY3lCZWZvcmVMb2FkaW5nOwogfQogCiB2b2lkIExlZ2FjeVByZXZpZXdMb2FkZXI6
OnNldENsaWVudEZvclRlc3RpbmcoUmVmUHRyPExlZ2FjeVByZXZpZXdMb2FkZXJDbGllbnQ+JiYg
Y2xpZW50KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUHJldmlld0NvbnZl
cnRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QcmV2aWV3Q29udmVydGVyLmNwcApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi42OGNmZjZlNzk0MzA4ZjkyMGUzYjgxMzc4NDI4MzY1M2YwNzg1MmZjCi0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUHJldmlld0NvbnZlcnRlci5j
cHAKQEAgLTAsMCArMSwzMDcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAq
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisj
aW5jbHVkZSAiUHJldmlld0NvbnZlcnRlci5oIgorCisjaWYgRU5BQkxFKFBSRVZJRVdfQ09OVkVS
VEVSKQorCisjaW5jbHVkZSAiUHJldmlld0NvbnZlcnRlckNsaWVudC5oIgorI2luY2x1ZGUgIlBy
ZXZpZXdDb252ZXJ0ZXJQcm92aWRlci5oIgorI2luY2x1ZGUgIlNoYXJlZEJ1ZmZlci5oIgorI2lu
Y2x1ZGUgPHd0Zi9SdW5Mb29wLmg+CisjaW5jbHVkZSA8d3RmL1NldEZvclNjb3BlLmg+CisKK25h
bWVzcGFjZSBXZWJDb3JlIHsKKworUHJldmlld0NvbnZlcnRlcjo6flByZXZpZXdDb252ZXJ0ZXIo
KSA9IGRlZmF1bHQ7CisKK2Jvb2wgUHJldmlld0NvbnZlcnRlcjo6c3VwcG9ydHNNSU1FVHlwZShj
b25zdCBTdHJpbmcmIG1pbWVUeXBlKQoreworICAgIGlmIChtaW1lVHlwZS5pc051bGwoKSkKKyAg
ICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgaWYgKGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlD
YXNlKG1pbWVUeXBlLCAidGV4dC9odG1sIikgfHwgZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNh
c2UobWltZVR5cGUsICJ0ZXh0L3BsYWluIikpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAg
IHN0YXRpYyBOZXZlckRlc3Ryb3llZDxIYXNoU2V0PFN0cmluZywgQVNDSUlDYXNlSW5zZW5zaXRp
dmVIYXNoPj4gc3VwcG9ydGVkTUlNRVR5cGVzID0gcGxhdGZvcm1TdXBwb3J0ZWRNSU1FVHlwZXMo
KTsKKyAgICByZXR1cm4gc3VwcG9ydGVkTUlNRVR5cGVzLT5jb250YWlucyhtaW1lVHlwZSk7Cit9
CisKK1Jlc291cmNlUmVzcG9uc2UgUHJldmlld0NvbnZlcnRlcjo6cHJldmlld1Jlc3BvbnNlKCkg
Y29uc3QKK3sKKyAgICBhdXRvIHJlc3BvbnNlID0gcGxhdGZvcm1QcmV2aWV3UmVzcG9uc2UoKTsK
KyAgICBBU1NFUlQocmVzcG9uc2UubWltZVR5cGUoKS5sZW5ndGgoKSk7CisgICAgcmVzcG9uc2Uu
c2V0SXNRdWlja0xvb2sodHJ1ZSk7CisgICAgcmV0dXJuIHJlc3BvbnNlOworfQorCitjb25zdCBS
ZXNvdXJjZUVycm9yJiBQcmV2aWV3Q29udmVydGVyOjpwcmV2aWV3RXJyb3IoKSBjb25zdAorewor
ICAgIHJldHVybiBtX3ByZXZpZXdFcnJvcjsKK30KKworY29uc3QgU2hhcmVkQnVmZmVyJiBQcmV2
aWV3Q29udmVydGVyOjpwcmV2aWV3RGF0YSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fcHJldmll
d0RhdGEuZ2V0KCk7Cit9CisKK3ZvaWQgUHJldmlld0NvbnZlcnRlcjo6dXBkYXRlTWFpblJlc291
cmNlKCkKK3sKKyAgICBpZiAobV9pc0luQ2xpZW50Q2FsbGJhY2spCisgICAgICAgIHJldHVybjsK
KworICAgIGlmIChtX3N0YXRlICE9IFN0YXRlOjpVcGRhdGluZykKKyAgICAgICAgcmV0dXJuOwor
CisgICAgYXV0byBwcm92aWRlciA9IG1fcHJvdmlkZXIuZ2V0KCk7CisgICAgaWYgKCFwcm92aWRl
cikgeworICAgICAgICBkaWRGYWlsVXBkYXRpbmcoKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0K
KworICAgIHByb3ZpZGVyLT5wcm92aWRlTWFpblJlc291cmNlRm9yUHJldmlld0NvbnZlcnRlcigq
dGhpcywgW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKV0oYXV0byBidWZmZXIp
IHsKKyAgICAgICAgaWYgKGJ1ZmZlcikKKyAgICAgICAgICAgIGFwcGVuZEZyb21CdWZmZXIoKmJ1
ZmZlcik7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGRpZEZhaWxVcGRhdGluZygpOworICAg
IH0pOworfQorCit2b2lkIFByZXZpZXdDb252ZXJ0ZXI6OmFwcGVuZEZyb21CdWZmZXIoY29uc3Qg
U2hhcmVkQnVmZmVyJiBidWZmZXIpCit7CisgICAgd2hpbGUgKGJ1ZmZlci5zaXplKCkgPiBtX2xl
bmd0aEFwcGVuZGVkKSB7CisgICAgICAgIGF1dG8gbmV3RGF0YSA9IGJ1ZmZlci5nZXRTb21lRGF0
YShtX2xlbmd0aEFwcGVuZGVkKTsKKyAgICAgICAgcGxhdGZvcm1BcHBlbmQobmV3RGF0YSk7Cisg
ICAgICAgIG1fbGVuZ3RoQXBwZW5kZWQgKz0gbmV3RGF0YS5zaXplKCk7CisgICAgfQorfQorCit2
b2lkIFByZXZpZXdDb252ZXJ0ZXI6OmZpbmlzaFVwZGF0aW5nKCkKK3sKKyAgICBpZiAobV9pc0lu
Q2xpZW50Q2FsbGJhY2spCisgICAgICAgIHJldHVybjsKKworICAgIGlmIChtX3N0YXRlICE9IFN0
YXRlOjpVcGRhdGluZykKKyAgICAgICAgcmV0dXJuOworCisgICAgcGxhdGZvcm1GaW5pc2hlZEFw
cGVuZGluZygpOworCisgICAgaXRlcmF0ZUNsaWVudHMoWyZdKGF1dG8mIGNsaWVudCkgeworICAg
ICAgICBjbGllbnQucHJldmlld0NvbnZlcnRlckRpZEZpbmlzaFVwZGF0aW5nKCp0aGlzKTsKKyAg
ICB9KTsKK30KKwordm9pZCBQcmV2aWV3Q29udmVydGVyOjpmYWlsZWRVcGRhdGluZygpCit7Cisg
ICAgaWYgKG1faXNJbkNsaWVudENhbGxiYWNrKQorICAgICAgICByZXR1cm47CisKKyAgICBpZiAo
bV9zdGF0ZSAhPSBTdGF0ZTo6VXBkYXRpbmcpCisgICAgICAgIHJldHVybjsKKworICAgIG1fc3Rh
dGUgPSBTdGF0ZTo6RmFpbGVkVXBkYXRpbmc7CisgICAgcGxhdGZvcm1GYWlsZWRBcHBlbmRpbmco
KTsKKworICAgIGl0ZXJhdGVDbGllbnRzKFsmXShhdXRvJiBjbGllbnQpIHsKKyAgICAgICAgY2xp
ZW50LnByZXZpZXdDb252ZXJ0ZXJEaWRGYWlsVXBkYXRpbmcoKnRoaXMpOworICAgIH0pOworfQor
Citib29sIFByZXZpZXdDb252ZXJ0ZXI6Omhhc0NsaWVudChQcmV2aWV3Q29udmVydGVyQ2xpZW50
JiBjbGllbnQpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fY2xpZW50cy5jb250YWlucygmY2xpZW50
KTsKK30KKwordm9pZCBQcmV2aWV3Q29udmVydGVyOjphZGRDbGllbnQoUHJldmlld0NvbnZlcnRl
ckNsaWVudCYgY2xpZW50KQoreworICAgIEFTU0VSVCghaGFzQ2xpZW50KGNsaWVudCkpOworICAg
IG1fY2xpZW50cy5hcHBlbmQobWFrZVdlYWtQdHIoY2xpZW50KSk7CisgICAgZGlkQWRkQ2xpZW50
KGNsaWVudCk7Cit9CisKK3ZvaWQgUHJldmlld0NvbnZlcnRlcjo6cmVtb3ZlQ2xpZW50KFByZXZp
ZXdDb252ZXJ0ZXJDbGllbnQmIGNsaWVudCkKK3sKKyAgICBtX2NsaWVudHMucmVtb3ZlRmlyc3Qo
JmNsaWVudCk7CisgICAgQVNTRVJUKCFoYXNDbGllbnQoY2xpZW50KSk7Cit9CisKK3N0YXRpYyBT
dHJpbmcmIHNoYXJlZFBhc3N3b3JkRm9yVGVzdGluZygpCit7CisgICAgc3RhdGljIE5ldmVyRGVz
dHJveWVkPFN0cmluZz4gcGFzc3dvcmRGb3JUZXN0aW5nOworICAgIHJldHVybiBwYXNzd29yZEZv
clRlc3RpbmcuZ2V0KCk7Cit9CisKK2NvbnN0IFN0cmluZyYgUHJldmlld0NvbnZlcnRlcjo6cGFz
c3dvcmRGb3JUZXN0aW5nKCkKK3sKKyAgICByZXR1cm4gc2hhcmVkUGFzc3dvcmRGb3JUZXN0aW5n
KCk7Cit9CisKK3ZvaWQgUHJldmlld0NvbnZlcnRlcjo6c2V0UGFzc3dvcmRGb3JUZXN0aW5nKGNv
bnN0IFN0cmluZyYgcGFzc3dvcmQpCit7CisgICAgc2hhcmVkUGFzc3dvcmRGb3JUZXN0aW5nKCkg
PSBwYXNzd29yZDsKK30KKwordGVtcGxhdGU8dHlwZW5hbWUgVD4KK3ZvaWQgUHJldmlld0NvbnZl
cnRlcjo6aXRlcmF0ZUNsaWVudHMoVCYmIGNhbGxiYWNrKQoreworICAgIFNldEZvclNjb3BlPGJv
b2w+IGlzSW5DbGllbnRDYWxsYmFjayB7IG1faXNJbkNsaWVudENhbGxiYWNrLCB0cnVlIH07Cisg
ICAgYXV0byBjbGllbnRzQ29weSB7IG1fY2xpZW50cyB9OworICAgIGF1dG8gcHJvdGVjdGVkVGhp
cyB7IG1ha2VSZWYoKnRoaXMpIH07CisKKyAgICBmb3IgKGF1dG8mIGNsaWVudCA6IGNsaWVudHND
b3B5KSB7CisgICAgICAgIGlmIChjbGllbnQgJiYgaGFzQ2xpZW50KCpjbGllbnQpKQorICAgICAg
ICAgICAgY2FsbGJhY2soKmNsaWVudCk7CisgICAgfQorfQorCit2b2lkIFByZXZpZXdDb252ZXJ0
ZXI6OmRpZEFkZENsaWVudChQcmV2aWV3Q29udmVydGVyQ2xpZW50JiBjbGllbnQpCit7CisgICAg
UnVuTG9vcDo6Y3VycmVudCgpLmRpc3BhdGNoKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJl
ZigqdGhpcyksIHdlYWtDbGllbnQgPSBtYWtlV2Vha1B0cihjbGllbnQpXSgpIHsKKyAgICAgICAg
aWYgKGF1dG8gY2xpZW50ID0gd2Vha0NsaWVudC5nZXQoKSkKKyAgICAgICAgICAgIHJlcGxheVRv
Q2xpZW50KCpjbGllbnQpOworICAgIH0pOworfQorCit2b2lkIFByZXZpZXdDb252ZXJ0ZXI6OmRp
ZEZhaWxDb252ZXJ0aW5nV2l0aEVycm9yKGNvbnN0IFJlc291cmNlRXJyb3ImIGVycm9yKQorewor
ICAgIG1fcHJldmlld0Vycm9yID0gZXJyb3I7CisgICAgbV9zdGF0ZSA9IFN0YXRlOjpGYWlsZWRD
b252ZXJ0aW5nOworCisgICAgaXRlcmF0ZUNsaWVudHMoWyZdKGF1dG8mIGNsaWVudCkgeworICAg
ICAgICBjbGllbnQucHJldmlld0NvbnZlcnRlckRpZEZhaWxDb252ZXJ0aW5nKCp0aGlzKTsKKyAg
ICB9KTsKK30KKwordm9pZCBQcmV2aWV3Q29udmVydGVyOjpkaWRGYWlsVXBkYXRpbmcoKQorewor
ICAgIGZhaWxlZFVwZGF0aW5nKCk7CisKKyAgICBpdGVyYXRlQ2xpZW50cyhbJl0oYXV0byYgY2xp
ZW50KSB7CisgICAgICAgIGNsaWVudC5wcmV2aWV3Q29udmVydGVyRGlkRmFpbFVwZGF0aW5nKCp0
aGlzKTsKKyAgICB9KTsKK30KKwordm9pZCBQcmV2aWV3Q29udmVydGVyOjpyZXBsYXlUb0NsaWVu
dChQcmV2aWV3Q29udmVydGVyQ2xpZW50JiBjbGllbnQpCit7CisgICAgaWYgKCFoYXNDbGllbnQo
Y2xpZW50KSkKKyAgICAgICAgcmV0dXJuOworCisgICAgU2V0Rm9yU2NvcGU8Ym9vbD4gaXNJbkNs
aWVudENhbGxiYWNrIHsgbV9pc0luQ2xpZW50Q2FsbGJhY2ssIHRydWUgfTsKKyAgICBhdXRvIHBy
b3RlY3RlZFRoaXMgeyBtYWtlUmVmKCp0aGlzKSB9OworCisgICAgY2xpZW50LnByZXZpZXdDb252
ZXJ0ZXJEaWRTdGFydFVwZGF0aW5nKCp0aGlzKTsKKworICAgIGlmIChtX3N0YXRlID09IFN0YXRl
OjpVcGRhdGluZyB8fCAhaGFzQ2xpZW50KGNsaWVudCkpCisgICAgICAgIHJldHVybjsKKworICAg
IGlmIChtX3N0YXRlID09IFN0YXRlOjpGYWlsZWRVcGRhdGluZykgeworICAgICAgICBjbGllbnQu
cHJldmlld0NvbnZlcnRlckRpZEZhaWxVcGRhdGluZygqdGhpcyk7CisgICAgICAgIHJldHVybjsK
KyAgICB9CisKKyAgICBBU1NFUlQobV9zdGF0ZSA+PSBTdGF0ZTo6Q29udmVydGluZyk7CisgICAg
Y2xpZW50LnByZXZpZXdDb252ZXJ0ZXJEaWRTdGFydENvbnZlcnRpbmcoKnRoaXMpOworCisgICAg
aWYgKCFtX3ByZXZpZXdEYXRhLT5pc0VtcHR5KCkgJiYgaGFzQ2xpZW50KGNsaWVudCkpCisgICAg
ICAgIGNsaWVudC5wcmV2aWV3Q29udmVydGVyRGlkUmVjZWl2ZURhdGEoKnRoaXMsIG1fcHJldmll
d0RhdGEuZ2V0KCkpOworCisgICAgaWYgKG1fc3RhdGUgPT0gU3RhdGU6OkNvbnZlcnRpbmcgfHwg
IWhhc0NsaWVudChjbGllbnQpKQorICAgICAgICByZXR1cm47CisKKyAgICBpZiAobV9zdGF0ZSA9
PSBTdGF0ZTo6RmFpbGVkQ29udmVydGluZykgeworICAgICAgICBBU1NFUlQoIW1fcHJldmlld0Vy
cm9yLmlzTnVsbCgpKTsKKyAgICAgICAgY2xpZW50LnByZXZpZXdDb252ZXJ0ZXJEaWRGYWlsQ29u
dmVydGluZygqdGhpcyk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBBU1NFUlQobV9z
dGF0ZSA9PSBTdGF0ZTo6RmluaXNoZWRDb252ZXJ0aW5nKTsKKyAgICBBU1NFUlQoIW1fcHJldmll
d0RhdGEtPmlzRW1wdHkoKSk7CisgICAgQVNTRVJUKG1fcHJldmlld0Vycm9yLmlzTnVsbCgpKTsK
KyAgICBjbGllbnQucHJldmlld0NvbnZlcnRlckRpZEZpbmlzaENvbnZlcnRpbmcoKnRoaXMpOwor
fQorCit2b2lkIFByZXZpZXdDb252ZXJ0ZXI6OmRlbGVnYXRlRGlkUmVjZWl2ZURhdGEoY29uc3Qg
U2hhcmVkQnVmZmVyJiBkYXRhKQoreworICAgIGF1dG8gcHJvdGVjdGVkVGhpcyB7IG1ha2VSZWYo
KnRoaXMpIH07CisKKyAgICBpZiAobV9zdGF0ZSA9PSBTdGF0ZTo6VXBkYXRpbmcpIHsKKyAgICAg
ICAgbV9wcm92aWRlciA9IG51bGxwdHI7CisgICAgICAgIG1fc3RhdGUgPSBTdGF0ZTo6Q29udmVy
dGluZzsKKworICAgICAgICBpdGVyYXRlQ2xpZW50cyhbJl0oYXV0byYgY2xpZW50KSB7CisgICAg
ICAgICAgICBjbGllbnQucHJldmlld0NvbnZlcnRlckRpZFN0YXJ0Q29udmVydGluZygqdGhpcyk7
CisgICAgICAgIH0pOworICAgIH0KKworICAgIEFTU0VSVChtX3N0YXRlID09IFN0YXRlOjpDb252
ZXJ0aW5nKTsKKyAgICBpZiAoZGF0YS5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybjsKKworICAg
IG1fcHJldmlld0RhdGEtPmFwcGVuZChkYXRhKTsKKworICAgIGl0ZXJhdGVDbGllbnRzKFsmXShh
dXRvJiBjbGllbnQpIHsKKyAgICAgICAgY2xpZW50LnByZXZpZXdDb252ZXJ0ZXJEaWRSZWNlaXZl
RGF0YSgqdGhpcywgZGF0YSk7CisgICAgfSk7Cit9CisKK3ZvaWQgUHJldmlld0NvbnZlcnRlcjo6
ZGVsZWdhdGVEaWRGaW5pc2hMb2FkaW5nKCkKK3sKKyAgICBBU1NFUlQobV9zdGF0ZSA9PSBTdGF0
ZTo6Q29udmVydGluZyk7CisgICAgbV9zdGF0ZSA9IFN0YXRlOjpGaW5pc2hlZENvbnZlcnRpbmc7
CisKKyAgICBpdGVyYXRlQ2xpZW50cyhbJl0oYXV0byYgY2xpZW50KSB7CisgICAgICAgIGNsaWVu
dC5wcmV2aWV3Q29udmVydGVyRGlkRmluaXNoQ29udmVydGluZygqdGhpcyk7CisgICAgfSk7Cit9
CisKK3ZvaWQgUHJldmlld0NvbnZlcnRlcjo6ZGVsZWdhdGVEaWRGYWlsV2l0aEVycm9yKGNvbnN0
IFJlc291cmNlRXJyb3ImIGVycm9yKQoreworICAgIGlmICghaXNQbGF0Zm9ybVBhc3N3b3JkRXJy
b3IoZXJyb3IpKSB7CisgICAgICAgIGRpZEZhaWxDb252ZXJ0aW5nV2l0aEVycm9yKGVycm9yKTsK
KyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIEFTU0VSVChtX3N0YXRlID09IFN0YXRlOjpV
cGRhdGluZyk7CisgICAgYXV0byBwcm92aWRlciA9IG1fcHJvdmlkZXIuZ2V0KCk7CisgICAgaWYg
KCFwcm92aWRlcikgeworICAgICAgICBkaWRGYWlsQ29udmVydGluZ1dpdGhFcnJvcihlcnJvcik7
CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBwcm92aWRlci0+cHJvdmlkZVBhc3N3b3Jk
Rm9yUHJldmlld0NvbnZlcnRlcigqdGhpcywgW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVm
KCp0aGlzKV0oYXV0byYgcGFzc3dvcmQpIG11dGFibGUgeworICAgICAgICBpZiAobV9zdGF0ZSAh
PSBTdGF0ZTo6VXBkYXRpbmcpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgcGxhdGZv
cm1VbmxvY2tXaXRoUGFzc3dvcmQocGFzc3dvcmQpOworICAgICAgICBtX2xlbmd0aEFwcGVuZGVk
ID0gMDsKKyAgICAgICAgdXBkYXRlTWFpblJlc291cmNlKCk7CisgICAgICAgIGZpbmlzaFVwZGF0
aW5nKCk7CisgICAgfSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8v
IEVOQUJMRShQUkVWSUVXX0NPTlZFUlRFUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL1ByZXZpZXdDb252ZXJ0ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1ByZXZp
ZXdDb252ZXJ0ZXIuaAppbmRleCA3NjU0M2FkMTZjMTQ5NDg1ODgyMjk5MWYzMDVmZjdhMzNlMTdh
ZTQ5Li4yYTM3MjkyMjc5OWNlNmFmZmFhYjNlMTQwZDE5MGJhNjRjZjhjZTJiIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QcmV2aWV3Q29udmVydGVyLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vUHJldmlld0NvbnZlcnRlci5oCkBAIC0xLDUgKzEsNSBAQAogLyoK
LSAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTctMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTIzLDM2ICsyMywxMTYgQEAKICAq
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi0jaW5jbHVkZSA8b2JqYy9v
YmpjLmg+CisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShQUkVWSUVXX0NPTlZFUlRFUikKKwor
I2luY2x1ZGUgIlJlc291cmNlRXJyb3IuaCIKKyNpbmNsdWRlICJSZXNvdXJjZVJlc3BvbnNlLmgi
CisjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KICNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+
CisjaW5jbHVkZSA8d3RmL1dlYWtQdHIuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcu
aD4KIAotT0JKQ19DTEFTUyBOU0RhdGE7CiBPQkpDX0NMQVNTIFFMUHJldmlld0NvbnZlcnRlcjsK
K09CSkNfQ0xBU1MgV2ViUHJldmlld0NvbnZlcnRlckRlbGVnYXRlOwogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKK2NsYXNzIFJlc291cmNlRXJyb3I7CiBjbGFzcyBSZXNvdXJjZVJlcXVlc3Q7Ci1j
bGFzcyBSZXNvdXJjZVJlc3BvbnNlOworY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgU2hhcmVk
QnVmZmVyRGF0YVZpZXc7CitzdHJ1Y3QgUHJldmlld0NvbnZlcnRlckNsaWVudDsKK3N0cnVjdCBQ
cmV2aWV3Q29udmVydGVyUHJvdmlkZXI7CisKK3N0cnVjdCBQcmV2aWV3UGxhdGZvcm1EZWxlZ2F0
ZSA6IENhbk1ha2VXZWFrUHRyPFByZXZpZXdQbGF0Zm9ybURlbGVnYXRlPiB7CisgICAgdmlydHVh
bCB+UHJldmlld1BsYXRmb3JtRGVsZWdhdGUoKSA9IGRlZmF1bHQ7CisKKyAgICB2aXJ0dWFsIHZv
aWQgZGVsZWdhdGVEaWRSZWNlaXZlRGF0YShjb25zdCBTaGFyZWRCdWZmZXImKSA9IDA7CisgICAg
dmlydHVhbCB2b2lkIGRlbGVnYXRlRGlkRmluaXNoTG9hZGluZygpID0gMDsKKyAgICB2aXJ0dWFs
IHZvaWQgZGVsZWdhdGVEaWRGYWlsV2l0aEVycm9yKGNvbnN0IFJlc291cmNlRXJyb3ImKSA9IDA7
Cit9OwogCi1jbGFzcyBQcmV2aWV3Q29udmVydGVyIHsKK2NsYXNzIFByZXZpZXdDb252ZXJ0ZXIg
ZmluYWwgOiBwcml2YXRlIFByZXZpZXdQbGF0Zm9ybURlbGVnYXRlLCBwdWJsaWMgUmVmQ291bnRl
ZDxQcmV2aWV3Q29udmVydGVyPiB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiAgICAg
V1RGX01BS0VfTk9OQ09QWUFCTEUoUHJldmlld0NvbnZlcnRlcik7CiBwdWJsaWM6Ci0gICAgUHJl
dmlld0NvbnZlcnRlcihpZCBkZWxlZ2F0ZSwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIGNvbnN0
IFN0cmluZyYgcGFzc3dvcmQgPSB7IH0pOwotICAgIFByZXZpZXdDb252ZXJ0ZXIoTlNEYXRhICos
IGNvbnN0IFN0cmluZyYgdXRpLCBjb25zdCBTdHJpbmcmIHBhc3N3b3JkID0geyB9KTsKKyAgICBz
dGF0aWMgUmVmPFByZXZpZXdDb252ZXJ0ZXI+IGNyZWF0ZShjb25zdCBSZXNvdXJjZVJlc3BvbnNl
JiByZXNwb25zZSwgUHJldmlld0NvbnZlcnRlclByb3ZpZGVyJiBwcm92aWRlcikKKyAgICB7Cisg
ICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFByZXZpZXdDb252ZXJ0ZXIocmVzcG9uc2UsIHBy
b3ZpZGVyKSk7CisgICAgfQogCiAgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIGJvb2wgc3VwcG9y
dHNNSU1FVHlwZShjb25zdCBTdHJpbmcmIG1pbWVUeXBlKTsKIAotICAgIFFMUHJldmlld0NvbnZl
cnRlciAqcGxhdGZvcm1Db252ZXJ0ZXIoKSBjb25zdCB7IHJldHVybiBtX3BsYXRmb3JtQ29udmVy
dGVyLmdldCgpOyB9CisgICAgflByZXZpZXdDb252ZXJ0ZXIoKTsKKwogICAgIFJlc291cmNlUmVx
dWVzdCBzYWZlUmVxdWVzdChjb25zdCBSZXNvdXJjZVJlcXVlc3QmKSBjb25zdDsKLSAgICBSZXNv
dXJjZVJlcXVlc3QgcHJldmlld1JlcXVlc3QoKSBjb25zdDsKICAgICBSZXNvdXJjZVJlc3BvbnNl
IHByZXZpZXdSZXNwb25zZSgpIGNvbnN0OwotICAgIFN0cmluZyBwcmV2aWV3RmlsZU5hbWUoKSBj
b25zdDsKLSAgICBTdHJpbmcgcHJldmlld1VUSSgpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JU
IFN0cmluZyBwcmV2aWV3RmlsZU5hbWUoKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBTdHJp
bmcgcHJldmlld1VUSSgpIGNvbnN0OworICAgIGNvbnN0IFJlc291cmNlRXJyb3ImIHByZXZpZXdF
cnJvcigpIGNvbnN0OworICAgIGNvbnN0IFNoYXJlZEJ1ZmZlciYgcHJldmlld0RhdGEoKSBjb25z
dDsKKworICAgIHZvaWQgZmFpbGVkVXBkYXRpbmcoKTsKKyAgICB2b2lkIGZpbmlzaFVwZGF0aW5n
KCk7CisgICAgdm9pZCB1cGRhdGVNYWluUmVzb3VyY2UoKTsKKworICAgIGJvb2wgaGFzQ2xpZW50
KFByZXZpZXdDb252ZXJ0ZXJDbGllbnQmKSBjb25zdDsKKyAgICB2b2lkIGFkZENsaWVudChQcmV2
aWV3Q29udmVydGVyQ2xpZW50Jik7CisgICAgdm9pZCByZW1vdmVDbGllbnQoUHJldmlld0NvbnZl
cnRlckNsaWVudCYpOworCisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIGNvbnN0IFN0cmluZyYg
cGFzc3dvcmRGb3JUZXN0aW5nKCk7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIHZvaWQgc2V0
UGFzc3dvcmRGb3JUZXN0aW5nKGNvbnN0IFN0cmluZyYpOwogCiBwcml2YXRlOgorICAgIHN0YXRp
YyBIYXNoU2V0PFN0cmluZywgQVNDSUlDYXNlSW5zZW5zaXRpdmVIYXNoPiBwbGF0Zm9ybVN1cHBv
cnRlZE1JTUVUeXBlcygpOworCisgICAgUHJldmlld0NvbnZlcnRlcihjb25zdCBSZXNvdXJjZVJl
c3BvbnNlJiwgUHJldmlld0NvbnZlcnRlclByb3ZpZGVyJik7CisKKyAgICBSZXNvdXJjZVJlc3Bv
bnNlIHBsYXRmb3JtUHJldmlld1Jlc3BvbnNlKCkgY29uc3Q7CisgICAgYm9vbCBpc1BsYXRmb3Jt
UGFzc3dvcmRFcnJvcihjb25zdCBSZXNvdXJjZUVycm9yJikgY29uc3Q7CisKKyAgICB0ZW1wbGF0
ZTx0eXBlbmFtZSBUPiB2b2lkIGl0ZXJhdGVDbGllbnRzKFQmJiBjYWxsYmFjayk7CisgICAgdm9p
ZCBhcHBlbmRGcm9tQnVmZmVyKGNvbnN0IFNoYXJlZEJ1ZmZlciYpOworICAgIHZvaWQgZGlkQWRk
Q2xpZW50KFByZXZpZXdDb252ZXJ0ZXJDbGllbnQmKTsKKyAgICB2b2lkIGRpZEZhaWxDb252ZXJ0
aW5nV2l0aEVycm9yKGNvbnN0IFJlc291cmNlRXJyb3ImKTsKKyAgICB2b2lkIGRpZEZhaWxVcGRh
dGluZygpOworICAgIHZvaWQgcmVwbGF5VG9DbGllbnQoUHJldmlld0NvbnZlcnRlckNsaWVudCYp
OworCisgICAgdm9pZCBwbGF0Zm9ybUFwcGVuZChjb25zdCBTaGFyZWRCdWZmZXJEYXRhVmlldyYp
OworICAgIHZvaWQgcGxhdGZvcm1GYWlsZWRBcHBlbmRpbmcoKTsKKyAgICB2b2lkIHBsYXRmb3Jt
RmluaXNoZWRBcHBlbmRpbmcoKTsKKyAgICB2b2lkIHBsYXRmb3JtVW5sb2NrV2l0aFBhc3N3b3Jk
KGNvbnN0IFN0cmluZyYpOworCisgICAgLy8gUHJldmlld1BsYXRmb3JtRGVsZWdhdGUKKyAgICB2
b2lkIGRlbGVnYXRlRGlkUmVjZWl2ZURhdGEoY29uc3QgU2hhcmVkQnVmZmVyJikgZmluYWw7Cisg
ICAgdm9pZCBkZWxlZ2F0ZURpZEZpbmlzaExvYWRpbmcoKSBmaW5hbDsKKyAgICB2b2lkIGRlbGVn
YXRlRGlkRmFpbFdpdGhFcnJvcihjb25zdCBSZXNvdXJjZUVycm9yJikgZmluYWw7CisKKyAgICBl
bnVtIGNsYXNzIFN0YXRlIDogdWludDhfdCB7CisgICAgICAgIFVwZGF0aW5nLAorICAgICAgICBG
YWlsZWRVcGRhdGluZywKKyAgICAgICAgQ29udmVydGluZywKKyAgICAgICAgRmFpbGVkQ29udmVy
dGluZywKKyAgICAgICAgRmluaXNoZWRDb252ZXJ0aW5nLAorICAgIH07CisKKyAgICBSZWY8U2hh
cmVkQnVmZmVyPiBtX3ByZXZpZXdEYXRhOworICAgIFJlc291cmNlRXJyb3IgbV9wcmV2aWV3RXJy
b3I7CisgICAgUmVzb3VyY2VSZXNwb25zZSBtX29yaWdpbmFsUmVzcG9uc2U7CisgICAgU3RhdGUg
bV9zdGF0ZSB7IFN0YXRlOjpVcGRhdGluZyB9OworICAgIFZlY3RvcjxXZWFrUHRyPFByZXZpZXdD
b252ZXJ0ZXJDbGllbnQ+LCAxPiBtX2NsaWVudHM7CisgICAgV2Vha1B0cjxQcmV2aWV3Q29udmVy
dGVyUHJvdmlkZXI+IG1fcHJvdmlkZXI7CisgICAgYm9vbCBtX2lzSW5DbGllbnRDYWxsYmFjayB7
IGZhbHNlIH07CisgICAgc2l6ZV90IG1fbGVuZ3RoQXBwZW5kZWQgeyAwIH07CisKKyNpZiBVU0Uo
UVVJQ0tfTE9PSykKKyAgICBSZXRhaW5QdHI8V2ViUHJldmlld0NvbnZlcnRlckRlbGVnYXRlPiBt
X3BsYXRmb3JtRGVsZWdhdGU7CiAgICAgUmV0YWluUHRyPFFMUHJldmlld0NvbnZlcnRlcj4gbV9w
bGF0Zm9ybUNvbnZlcnRlcjsKKyNlbmRpZgogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQor
CisjZW5kaWYgLy8gRU5BQkxFKFBSRVZJRVdfQ09OVkVSVEVSKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vUHJldmlld0NvbnZlcnRlckNsaWVudC5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vUHJldmlld0NvbnZlcnRlckNsaWVudC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjA0ZWEzNjgw
NjkyYjI1MmExOTg5YzI2Y2EyMDQyMTI3NzdhYTNiN2IKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9QcmV2aWV3Q29udmVydGVyQ2xpZW50LmgKQEAgLTAsMCArMSw1
MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisg
KiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAq
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSA8d3RmL0NvbXBsZXRp
b25IYW5kbGVyLmg+CisjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KKyNpbmNsdWRlIDx3dGYvV2Vh
a1B0ci5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIFByZXZpZXdDb252ZXJ0ZXI7
CitjbGFzcyBSZXNvdXJjZUVycm9yOworY2xhc3MgU2hhcmVkQnVmZmVyOworCitzdHJ1Y3QgUHJl
dmlld0NvbnZlcnRlckNsaWVudCA6IENhbk1ha2VXZWFrUHRyPFByZXZpZXdDb252ZXJ0ZXJDbGll
bnQ+IHsKKyAgICB2aXJ0dWFsIH5QcmV2aWV3Q29udmVydGVyQ2xpZW50KCkgPSBkZWZhdWx0Owor
CisgICAgdmlydHVhbCB2b2lkIHByZXZpZXdDb252ZXJ0ZXJEaWRTdGFydFVwZGF0aW5nKFByZXZp
ZXdDb252ZXJ0ZXImKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHByZXZpZXdDb252ZXJ0ZXJEaWRG
aW5pc2hVcGRhdGluZyhQcmV2aWV3Q29udmVydGVyJikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBw
cmV2aWV3Q29udmVydGVyRGlkRmFpbFVwZGF0aW5nKFByZXZpZXdDb252ZXJ0ZXImKSA9IDA7Cisg
ICAgdmlydHVhbCB2b2lkIHByZXZpZXdDb252ZXJ0ZXJEaWRTdGFydENvbnZlcnRpbmcoUHJldmll
d0NvbnZlcnRlciYpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgcHJldmlld0NvbnZlcnRlckRpZFJl
Y2VpdmVEYXRhKFByZXZpZXdDb252ZXJ0ZXImLCBjb25zdCBTaGFyZWRCdWZmZXImIG5ld0RhdGEp
ID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgcHJldmlld0NvbnZlcnRlckRpZEZpbmlzaENvbnZlcnRp
bmcoUHJldmlld0NvbnZlcnRlciYpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgcHJldmlld0NvbnZl
cnRlckRpZEZhaWxDb252ZXJ0aW5nKFByZXZpZXdDb252ZXJ0ZXImKSA9IDA7Cit9OworCit9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Q
cmV2aWV3Q29udmVydGVyUHJvdmlkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1ByZXZp
ZXdDb252ZXJ0ZXJQcm92aWRlci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjgyNzg2MzkzZmNlZDc1NGM4NWY3YjI4
OTEyNTJmNTE2YmVkMGQ1NDkKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9QcmV2aWV3Q29udmVydGVyUHJvdmlkZXIuaApAQCAtMCwwICsxLDM5IEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElU
UyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YK
KyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
CisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlIDx3dGYvV2Vha1B0ci5oPgorCituYW1lc3Bh
Y2UgV2ViQ29yZSB7CisKK3N0cnVjdCBQcmV2aWV3Q29udmVydGVyUHJvdmlkZXIgOiBDYW5NYWtl
V2Vha1B0cjxQcmV2aWV3Q29udmVydGVyUHJvdmlkZXI+IHsKKyAgICB2aXJ0dWFsIH5QcmV2aWV3
Q29udmVydGVyUHJvdmlkZXIoKSA9IGRlZmF1bHQ7CisKKyAgICB2aXJ0dWFsIHZvaWQgcHJvdmlk
ZU1haW5SZXNvdXJjZUZvclByZXZpZXdDb252ZXJ0ZXIoUHJldmlld0NvbnZlcnRlciYsIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgU2hhcmVkQnVmZmVyKik+JiYpID0gMDsKKyAgICB2aXJ0
dWFsIHZvaWQgcHJvdmlkZVBhc3N3b3JkRm9yUHJldmlld0NvbnZlcnRlcihQcmV2aWV3Q29udmVy
dGVyJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBTdHJpbmcmKT4mJikgPSAwOworfTsK
KworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vaW9zL1ByZXZpZXdDb252ZXJ0ZXJJT1MubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9pb3MvUHJldmlld0NvbnZlcnRlcklPUy5tbQppbmRleCBiNWNkMjgzNTZmMjY5ZjlkNjE2MzEz
N2Q1MWEzYTRjMjg4YmI0OTlmLi4yZmNkMGZjYjM4OWEwMGIyZjRiYWVhZTYzZjkyZThmZTM0N2U2
OWJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvUHJldmlld0NvbnZl
cnRlcklPUy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvUHJldmlld0NvbnZl
cnRlcklPUy5tbQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTctMjAx
OSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDkt
MjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKQEAgLTI2LDY1ICsyNiw4OCBAQAogI2ltcG9ydCAiY29uZmlnLmgiCiAjaW1w
b3J0ICJQcmV2aWV3Q29udmVydGVyLmgiCiAKLSNpZiBVU0UoUVVJQ0tfTE9PSykKKyNpZiBFTkFC
TEUoUFJFVklFV19DT05WRVJURVIpICYmIFVTRShRVUlDS19MT09LKQogCisjaW1wb3J0ICJQcmV2
aWV3Q29udmVydGVyQ2xpZW50LmgiCisjaW1wb3J0ICJQcmV2aWV3Q29udmVydGVyUHJvdmlkZXIu
aCIKICNpbXBvcnQgIlF1aWNrTG9vay5oIgorI2ltcG9ydCAiUmVzb3VyY2VFcnJvci5oIgogI2lt
cG9ydCAiUmVzb3VyY2VSZXF1ZXN0LmgiCiAjaW1wb3J0ICJSZXNvdXJjZVJlc3BvbnNlLmgiCisj
aW1wb3J0ICJTaGFyZWRCdWZmZXIuaCIKICNpbXBvcnQgPHBhbC9pb3MvUXVpY2tMb29rU29mdExp
bmsuaD4KLSNpbXBvcnQgPHBhbC9zcGkvaW9zL1F1aWNrTG9va1NQSS5oPgogCi1uYW1lc3BhY2Ug
V2ViQ29yZSB7CitAaW50ZXJmYWNlIFdlYlByZXZpZXdDb252ZXJ0ZXJEZWxlZ2F0ZSA6IE5TT2Jq
ZWN0CistIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhEZWxlZ2F0ZTooV2ViQ29yZTo6UHJldmlld1Bs
YXRmb3JtRGVsZWdhdGUmKWRlbGVnYXRlOworQGVuZAogCi1zdGF0aWMgTlNEaWN0aW9uYXJ5ICpv
cHRpb25zV2l0aFBhc3N3b3JkKGNvbnN0IFN0cmluZyYgcGFzc3dvcmQpCitAaW1wbGVtZW50YXRp
b24gV2ViUHJldmlld0NvbnZlcnRlckRlbGVnYXRlIHsKKyAgICBXZWFrUHRyPFdlYkNvcmU6OlBy
ZXZpZXdQbGF0Zm9ybURlbGVnYXRlPiBfZGVsZWdhdGU7Cit9CisKKy0gKGluc3RhbmNldHlwZSlp
bml0V2l0aERlbGVnYXRlOihXZWJDb3JlOjpQcmV2aWV3UGxhdGZvcm1EZWxlZ2F0ZSYpZGVsZWdh
dGUKIHsKLSAgICBpZiAocGFzc3dvcmQuaXNOdWxsKCkpCisgICAgaWYgKCEoc2VsZiA9IFtzdXBl
ciBpbml0XSkpCiAgICAgICAgIHJldHVybiBuaWw7CiAKLSAgICByZXR1cm4gQHsgKE5TU3RyaW5n
ICopUEFMOjpnZXRfUXVpY2tMb29rX2tRTFByZXZpZXdPcHRpb25QYXNzd29yZEtleSgpIDogcGFz
c3dvcmQgfTsKKyAgICBfZGVsZWdhdGUgPSBtYWtlV2Vha1B0cihkZWxlZ2F0ZSk7CisgICAgcmV0
dXJuIHNlbGY7CiB9CiAKLVByZXZpZXdDb252ZXJ0ZXI6OlByZXZpZXdDb252ZXJ0ZXIoaWQgZGVs
ZWdhdGUsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBjb25zdCBTdHJpbmcmIHBh
c3N3b3JkKQotICAgIDogbV9wbGF0Zm9ybUNvbnZlcnRlciB7IGFkb3B0TlMoW1BBTDo6YWxsb2NR
TFByZXZpZXdDb252ZXJ0ZXJJbnN0YW5jZSgpIGluaXRXaXRoQ29ubmVjdGlvbjpuaWwgZGVsZWdh
dGU6ZGVsZWdhdGUgcmVzcG9uc2U6cmVzcG9uc2UubnNVUkxSZXNwb25zZSgpIG9wdGlvbnM6b3B0
aW9uc1dpdGhQYXNzd29yZChwYXNzd29yZCldKSB9CistICh2b2lkKWNvbm5lY3Rpb246KE5TVVJM
Q29ubmVjdGlvbiAqKWNvbm5lY3Rpb24gZGlkUmVjZWl2ZURhdGE6KE5TRGF0YSAqKWRhdGEgbGVu
Z3RoUmVjZWl2ZWQ6KGxvbmcgbG9uZylsZW5ndGhSZWNlaXZlZAogeworICAgIEFTU0VSVF9VTlVT
RUQoY29ubmVjdGlvbiwgIWNvbm5lY3Rpb24pOworICAgIEFTU0VSVF9VTlVTRUQobGVuZ3RoUmVj
ZWl2ZWQsIGxlbmd0aFJlY2VpdmVkID49IDApOworICAgIEFTU0VSVChkYXRhLmxlbmd0aCA9PSBz
dGF0aWNfY2FzdDxOU1VJbnRlZ2VyPihsZW5ndGhSZWNlaXZlZCkpOworICAgIGlmIChhdXRvIGRl
bGVnYXRlID0gX2RlbGVnYXRlLmdldCgpKQorICAgICAgICBkZWxlZ2F0ZS0+ZGVsZWdhdGVEaWRS
ZWNlaXZlRGF0YShXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRhKS5nZXQoKSk7CiB9
CiAKLVByZXZpZXdDb252ZXJ0ZXI6OlByZXZpZXdDb252ZXJ0ZXIoTlNEYXRhICpkYXRhLCBjb25z
dCBTdHJpbmcmIHV0aSwgY29uc3QgU3RyaW5nJiBwYXNzd29yZCkKLSAgICA6IG1fcGxhdGZvcm1D
b252ZXJ0ZXIgeyBhZG9wdE5TKFtQQUw6OmFsbG9jUUxQcmV2aWV3Q29udmVydGVySW5zdGFuY2Uo
KSBpbml0V2l0aERhdGE6ZGF0YSBuYW1lOm5pbCB1dGk6dXRpIG9wdGlvbnM6b3B0aW9uc1dpdGhQ
YXNzd29yZChwYXNzd29yZCldKSB9CistICh2b2lkKWNvbm5lY3Rpb25EaWRGaW5pc2hMb2FkaW5n
OihOU1VSTENvbm5lY3Rpb24gKiljb25uZWN0aW9uCiB7CisgICAgQVNTRVJUX1VOVVNFRChjb25u
ZWN0aW9uLCAhY29ubmVjdGlvbik7CisgICAgaWYgKGF1dG8gZGVsZWdhdGUgPSBfZGVsZWdhdGUu
Z2V0KCkpCisgICAgICAgIGRlbGVnYXRlLT5kZWxlZ2F0ZURpZEZpbmlzaExvYWRpbmcoKTsKIH0K
IAotYm9vbCBQcmV2aWV3Q29udmVydGVyOjpzdXBwb3J0c01JTUVUeXBlKGNvbnN0IFN0cmluZyYg
bWltZVR5cGUpCistICh2b2lkKWNvbm5lY3Rpb246KE5TVVJMQ29ubmVjdGlvbiAqKWNvbm5lY3Rp
b24gZGlkRmFpbFdpdGhFcnJvcjooTlNFcnJvciAqKWVycm9yCiB7Ci0gICAgaWYgKGVxdWFsTGV0
dGVyc0lnbm9yaW5nQVNDSUlDYXNlKG1pbWVUeXBlLCAidGV4dC9odG1sIikgfHwgZXF1YWxMZXR0
ZXJzSWdub3JpbmdBU0NJSUNhc2UobWltZVR5cGUsICJ0ZXh0L3BsYWluIikpCi0gICAgICAgIHJl
dHVybiBmYWxzZTsKKyAgICBBU1NFUlRfVU5VU0VEKGNvbm5lY3Rpb24sICFjb25uZWN0aW9uKTsK
KyAgICBpZiAoYXV0byBkZWxlZ2F0ZSA9IF9kZWxlZ2F0ZS5nZXQoKSkKKyAgICAgICAgZGVsZWdh
dGUtPmRlbGVnYXRlRGlkRmFpbFdpdGhFcnJvcihlcnJvcik7Cit9CiAKLSAgICBzdGF0aWMgc3Rk
OjpvbmNlX2ZsYWcgb25jZUZsYWc7Ci0gICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEhhc2hTZXQ8
U3RyaW5nLCBBU0NJSUNhc2VJbnNlbnNpdGl2ZUhhc2g+PiBzdXBwb3J0ZWRNSU1FVHlwZXM7Ci0g
ICAgc3RkOjpjYWxsX29uY2Uob25jZUZsYWcsIFtdIHsKLSAgICAgICAgZm9yIChOU1N0cmluZyAq
bWltZVR5cGUgaW4gUUxQcmV2aWV3R2V0U3VwcG9ydGVkTUlNRVR5cGVzU2V0KCkpCi0gICAgICAg
ICAgICBzdXBwb3J0ZWRNSU1FVHlwZXMtPmFkZChtaW1lVHlwZSk7Ci0gICAgfSk7CitAZW5kCiAK
LSAgICBpZiAobWltZVR5cGUuaXNOdWxsKCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKK25hbWVz
cGFjZSBXZWJDb3JlIHsKIAotICAgIHJldHVybiBzdXBwb3J0ZWRNSU1FVHlwZXMtPmNvbnRhaW5z
KG1pbWVUeXBlKTsKK1ByZXZpZXdDb252ZXJ0ZXI6OlByZXZpZXdDb252ZXJ0ZXIoY29uc3QgUmVz
b3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIFByZXZpZXdDb252ZXJ0ZXJQcm92aWRlciYgcHJvdmlk
ZXIpCisgICAgOiBtX3ByZXZpZXdEYXRhIHsgU2hhcmVkQnVmZmVyOjpjcmVhdGUoKSB9CisgICAg
LCBtX29yaWdpbmFsUmVzcG9uc2UgeyByZXNwb25zZSB9CisgICAgLCBtX3Byb3ZpZGVyIHsgbWFr
ZVdlYWtQdHIocHJvdmlkZXIpIH0KKyAgICAsIG1fcGxhdGZvcm1EZWxlZ2F0ZSB7IGFkb3B0TlMo
W1tXZWJQcmV2aWV3Q29udmVydGVyRGVsZWdhdGUgYWxsb2NdIGluaXRXaXRoRGVsZWdhdGU6KnRo
aXNdKSB9CisgICAgLCBtX3BsYXRmb3JtQ29udmVydGVyIHsgYWRvcHROUyhbUEFMOjphbGxvY1FM
UHJldmlld0NvbnZlcnRlckluc3RhbmNlKCkgaW5pdFdpdGhDb25uZWN0aW9uOm5pbCBkZWxlZ2F0
ZTptX3BsYXRmb3JtRGVsZWdhdGUuZ2V0KCkgcmVzcG9uc2U6bV9vcmlnaW5hbFJlc3BvbnNlLm5z
VVJMUmVzcG9uc2UoKSBvcHRpb25zOm5pbF0pIH0KK3sKIH0KIAotUmVzb3VyY2VSZXF1ZXN0IFBy
ZXZpZXdDb252ZXJ0ZXI6OnNhZmVSZXF1ZXN0KGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVz
dCkgY29uc3QKK0hhc2hTZXQ8U3RyaW5nLCBBU0NJSUNhc2VJbnNlbnNpdGl2ZUhhc2g+IFByZXZp
ZXdDb252ZXJ0ZXI6OnBsYXRmb3JtU3VwcG9ydGVkTUlNRVR5cGVzKCkKIHsKLSAgICByZXR1cm4g
W21fcGxhdGZvcm1Db252ZXJ0ZXIgc2FmZVJlcXVlc3RGb3JSZXF1ZXN0OnJlcXVlc3QubnNVUkxS
ZXF1ZXN0KEhUVFBCb2R5VXBkYXRlUG9saWN5OjpEb05vdFVwZGF0ZUhUVFBCb2R5KV07CisgICAg
SGFzaFNldDxTdHJpbmcsIEFTQ0lJQ2FzZUluc2Vuc2l0aXZlSGFzaD4gc3VwcG9ydGVkTUlNRVR5
cGVzOworICAgIGZvciAoTlNTdHJpbmcgKm1pbWVUeXBlIGluIFFMUHJldmlld0dldFN1cHBvcnRl
ZE1JTUVUeXBlc1NldCgpKQorICAgICAgICBzdXBwb3J0ZWRNSU1FVHlwZXMuYWRkKG1pbWVUeXBl
KTsKKyAgICByZXR1cm4gc3VwcG9ydGVkTUlNRVR5cGVzOwogfQogCi1SZXNvdXJjZVJlcXVlc3Qg
UHJldmlld0NvbnZlcnRlcjo6cHJldmlld1JlcXVlc3QoKSBjb25zdAorUmVzb3VyY2VSZXF1ZXN0
IFByZXZpZXdDb252ZXJ0ZXI6OnNhZmVSZXF1ZXN0KGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVx
dWVzdCkgY29uc3QKIHsKLSAgICByZXR1cm4gW21fcGxhdGZvcm1Db252ZXJ0ZXIgcHJldmlld1Jl
cXVlc3RdOworICAgIHJldHVybiBbbV9wbGF0Zm9ybUNvbnZlcnRlciBzYWZlUmVxdWVzdEZvclJl
cXVlc3Q6cmVxdWVzdC5uc1VSTFJlcXVlc3QoSFRUUEJvZHlVcGRhdGVQb2xpY3k6OkRvTm90VXBk
YXRlSFRUUEJvZHkpXTsKIH0KIAotUmVzb3VyY2VSZXNwb25zZSBQcmV2aWV3Q29udmVydGVyOjpw
cmV2aWV3UmVzcG9uc2UoKSBjb25zdAorUmVzb3VyY2VSZXNwb25zZSBQcmV2aWV3Q29udmVydGVy
OjpwbGF0Zm9ybVByZXZpZXdSZXNwb25zZSgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIFttX3BsYXRm
b3JtQ29udmVydGVyIHByZXZpZXdSZXNwb25zZV07CisgICAgUmVzb3VyY2VSZXNwb25zZSByZXNw
b25zZSB7IFttX3BsYXRmb3JtQ29udmVydGVyIHByZXZpZXdSZXNwb25zZV0gfTsKKyAgICBBU1NF
UlQocmVzcG9uc2UudXJsKCkucHJvdG9jb2xJcyhRTFByZXZpZXdQcm90b2NvbCkpOworICAgIHJl
dHVybiByZXNwb25zZTsKIH0KIAogU3RyaW5nIFByZXZpZXdDb252ZXJ0ZXI6OnByZXZpZXdGaWxl
TmFtZSgpIGNvbnN0CkBAIC05Nyw2ICsxMjAsMzkgQEAgU3RyaW5nIFByZXZpZXdDb252ZXJ0ZXI6
OnByZXZpZXdVVEkoKSBjb25zdAogICAgIHJldHVybiBbbV9wbGF0Zm9ybUNvbnZlcnRlciBwcmV2
aWV3VVRJXTsKIH0KIAordm9pZCBQcmV2aWV3Q29udmVydGVyOjpwbGF0Zm9ybUFwcGVuZChjb25z
dCBTaGFyZWRCdWZmZXJEYXRhVmlldyYgZGF0YSkKK3sKKyAgICBbbV9wbGF0Zm9ybUNvbnZlcnRl
ciBhcHBlbmREYXRhOmRhdGEuY3JlYXRlTlNEYXRhKCkuZ2V0KCldOworfQorCit2b2lkIFByZXZp
ZXdDb252ZXJ0ZXI6OnBsYXRmb3JtRmluaXNoZWRBcHBlbmRpbmcoKQoreworICAgIFttX3BsYXRm
b3JtQ29udmVydGVyIGZpbmlzaGVkQXBwZW5kaW5nRGF0YV07Cit9CisKK3ZvaWQgUHJldmlld0Nv
bnZlcnRlcjo6cGxhdGZvcm1GYWlsZWRBcHBlbmRpbmcoKQoreworICAgIFttX3BsYXRmb3JtQ29u
dmVydGVyIGZpbmlzaENvbnZlcnRpbmddOworfQorCitib29sIFByZXZpZXdDb252ZXJ0ZXI6Omlz
UGxhdGZvcm1QYXNzd29yZEVycm9yKGNvbnN0IFJlc291cmNlRXJyb3ImIGVycm9yKSBjb25zdAor
eworICAgIHJldHVybiBlcnJvci5lcnJvckNvZGUoKSA9PSBrUUxSZXR1cm5QYXNzd29yZFByb3Rl
Y3RlZCAmJiBlcnJvci5kb21haW4oKSA9PSAiUXVpY2tMb29rRXJyb3JEb21haW4iOworfQorCitz
dGF0aWMgTlNEaWN0aW9uYXJ5ICpvcHRpb25zV2l0aFBhc3N3b3JkKGNvbnN0IFN0cmluZyYgcGFz
c3dvcmQpCit7CisgICAgaWYgKHBhc3N3b3JkLmlzTnVsbCgpKQorICAgICAgICByZXR1cm4gbmls
OworICAgIAorICAgIHJldHVybiBAeyAoTlNTdHJpbmcgKilQQUw6OmdldF9RdWlja0xvb2tfa1FM
UHJldmlld09wdGlvblBhc3N3b3JkS2V5KCkgOiBwYXNzd29yZCB9OworfQorCit2b2lkIFByZXZp
ZXdDb252ZXJ0ZXI6OnBsYXRmb3JtVW5sb2NrV2l0aFBhc3N3b3JkKGNvbnN0IFN0cmluZyYgcGFz
c3dvcmQpCit7CisgICAgbV9wbGF0Zm9ybUNvbnZlcnRlciA9IGFkb3B0TlMoW1BBTDo6YWxsb2NR
TFByZXZpZXdDb252ZXJ0ZXJJbnN0YW5jZSgpIGluaXRXaXRoQ29ubmVjdGlvbjpuaWwgZGVsZWdh
dGU6bV9wbGF0Zm9ybURlbGVnYXRlLmdldCgpIHJlc3BvbnNlOm1fb3JpZ2luYWxSZXNwb25zZS5u
c1VSTFJlc3BvbnNlKCkgb3B0aW9uczpvcHRpb25zV2l0aFBhc3N3b3JkKHBhc3N3b3JkKV0pOwor
fQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKLSNlbmRpZiAvLyBVU0UoUVVJQ0tfTE9PSykK
KyNlbmRpZiAvLyBFTkFCTEUoUFJFVklFV19DT05WRVJURVIpICYmIFVTRShRVUlDS19MT09LKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1F1aWNrTG9vay5tbSBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9RdWlja0xvb2subW0KaW5kZXggMTVhZTJmZjk0MWQy
MmU5NDJjODcwN2ZkZTAxNGI5Mjk2MDE2MDQ2Zi4uMmUyNDdhNmU1M2RkMDVhYjE5MGVkOTZkZGEy
YTFhZTZkYWRjOThhZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1F1
aWNrTG9vay5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvUXVpY2tMb29rLm1t
CkBAIC0yOCw3ICsyOCw2IEBACiAKICNpZiBVU0UoUVVJQ0tfTE9PSykKIAotI2ltcG9ydCAiUHJl
dmlld0NvbnZlcnRlci5oIgogI2ltcG9ydCAiUmVzb3VyY2VSZXF1ZXN0LmgiCiAjaW1wb3J0IDxw
YWwvaW9zL1F1aWNrTG9va1NvZnRMaW5rLmg+CiAjaW1wb3J0IDxwYWwvc3BpL2NvY29hL05TRmls
ZU1hbmFnZXJTUEkuaD4KQEAgLTgzLDEyICs4MiwxMiBAQCBSZXRhaW5QdHI8TlNVUkxSZXF1ZXN0
PiByZWdpc3RlclFMUHJldmlld0NvbnZlcnRlcklmTmVlZGVkKE5TVVJMICp1cmwsIE5TU3RyaW5n
CiAgICAgaWYgKFtRTFByZXZpZXdHZXRTdXBwb3J0ZWRNSU1FVHlwZXNTZXQoKSBjb250YWluc09i
amVjdDp1cGRhdGVkTUlNRVR5cGUuZ2V0KCldKSB7CiAgICAgICAgIFJldGFpblB0cjxOU1N0cmlu
Zz4gdXRpID0gYWRvcHROUyhQQUw6OnNvZnRMaW5rX1F1aWNrTG9va19RTFR5cGVDb3B5VVRJRm9y
VVJMQW5kTWltZVR5cGUodXJsLCB1cGRhdGVkTUlNRVR5cGUuZ2V0KCkpKTsKIAotICAgICAgICBh
dXRvIGNvbnZlcnRlciA9IG1ha2VVbmlxdWU8UHJldmlld0NvbnZlcnRlcj4oZGF0YSwgdXRpLmdl
dCgpKTsKLSAgICAgICAgUmVzb3VyY2VSZXF1ZXN0IHByZXZpZXdSZXF1ZXN0ID0gY29udmVydGVy
LT5wcmV2aWV3UmVxdWVzdCgpOworICAgICAgICBhdXRvIGNvbnZlcnRlciA9IGFkb3B0TlMoW1BB
TDo6YWxsb2NRTFByZXZpZXdDb252ZXJ0ZXJJbnN0YW5jZSgpIGluaXRXaXRoRGF0YTpkYXRhIG5h
bWU6bmlsIHV0aTp1dGkuZ2V0KCkgb3B0aW9uczpuaWxdKTsKKyAgICAgICAgUmVzb3VyY2VSZXF1
ZXN0IHByZXZpZXdSZXF1ZXN0ID0gW2NvbnZlcnRlciBwcmV2aWV3UmVxdWVzdF07CiAKICAgICAg
ICAgLy8gV2UgdXNlIFtyZXF1ZXN0IFVSTF0gaGVyZSBpbnN0ZWFkIG9mIHVybCBzaW5jZSBpdCB3
aWxsIGJlCiAgICAgICAgIC8vIHRoZSBVUkwgdGhhdCB0aGUgV2ViRGF0YVNvdXJjZSB3aWxsIHNl
ZSBkdXJpbmcgLWRlYWxsb2MuCi0gICAgICAgIGFkZFFMUHJldmlld0NvbnZlcnRlcldpdGhGaWxl
Rm9yVVJMKHByZXZpZXdSZXF1ZXN0LnVybCgpLCBjb252ZXJ0ZXItPnBsYXRmb3JtQ29udmVydGVy
KCksIG5pbCk7CisgICAgICAgIGFkZFFMUHJldmlld0NvbnZlcnRlcldpdGhGaWxlRm9yVVJMKHBy
ZXZpZXdSZXF1ZXN0LnVybCgpLCBjb252ZXJ0ZXIuZ2V0KCksIG5pbCk7CiAKICAgICAgICAgcmV0
dXJuIHByZXZpZXdSZXF1ZXN0Lm5zVVJMUmVxdWVzdChIVFRQQm9keVVwZGF0ZVBvbGljeTo6RG9O
b3RVcGRhdGVIVFRQQm9keSk7CiAgICAgfQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>381880</attachid>
            <date>2019-10-24 22:26:34 -0700</date>
            <delta_ts>2019-10-25 18:48:12 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-203396-20191024222633.patch</filename>
            <type>text/plain</type>
            <size>61432</size>
            <attacher name="Andy Estes">aestes</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjUxNTgwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDRlZDZmNDQ5Nzg4OTBkMjQ4YWYxMzM2
NjBhYzk1OTg1NDFjNTcxM2YuLjU1Y2Q5MTczZDBkZWQ4ZWIxYTEzN2YxYTlkY2E3ZjMyZDZjMGE1
MjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAKKzIwMTktMTAtMjQgIEFuZHkgRXN0ZXMgIDxhZXN0ZXNA
YXBwbGUuY29tPgorCisgICAgICAgIFtRdWljayBMb29rXSBNb3ZlIHRoZSBRTFByZXZpZXdDb252
ZXJ0ZXIgZGVsZWdhdGUgaW50byBQcmV2aWV3Q29udmVydGVyIGFuZCB2ZW5kIGEgQysrIGNsaWVu
dCBpbnRlcmZhY2UKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTIwMzM5NgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgICogd3RmL0ZlYXR1cmVEZWZpbmVzLmg6IERlZmluZWQgRU5BQkxFX1BSRVZJRVdfQ09OVkVS
VEVSLgorCiAyMDE5LTEwLTIzICBZdXN1a2UgU3V6dWtpICA8eXN1enVraUBhcHBsZS5jb20+CiAK
ICAgICAgICAgW0pTQ10gRmlndXJlIG91dCBtaXNzaW5nIHByZXBhcmVDYWxsT3BlcmF0aW9uCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFu
Z2VMb2cKaW5kZXggZmYwNzczNDE1NTYwOTU4NWNlNGM0MDY0NTExNTE1MWVjYWIwODg2Ni4uZThi
ZjgzZmZkMGU4YWNkOWZhNTg5YzM2OTRhODQ4ZTc3YzI4MWE3NSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDEyMiBAQAorMjAxOS0xMC0yNCAgQW5keSBFc3RlcyAgPGFlc3Rlc0BhcHBsZS5jb20+CisK
KyAgICAgICAgW1F1aWNrIExvb2tdIE1vdmUgdGhlIFFMUHJldmlld0NvbnZlcnRlciBkZWxlZ2F0
ZSBpbnRvIFByZXZpZXdDb252ZXJ0ZXIgYW5kIHZlbmQgYSBDKysgY2xpZW50IGludGVyZmFjZQor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjAzMzk2CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUHJldmlld0Nv
bnZlcnRlciBleGlzdGVkIGFzIGEgdGhpbiB3cmFwcGVyIGFyb3VuZCBRTFByZXZpZXdDb252ZXJ0
ZXIgZm9yIHVzZSBieQorICAgICAgICBMZWdhY3lQcmV2aWV3TG9hZGVyIGFuZCBRdWljayBMb29r
IE5TRGF0YSBsb2FkaW5nIGluIFdlYktpdExlZ2FjeS4gVGhpcyBwYXRjaCBtYWtlcyB0d28KKyAg
ICAgICAgY2hhbmdlcyB0byB0aGlzIGFycmFuZ2VtZW50OgorCisgICAgICAgIDEuIFRoZSBRTFBy
ZXZpZXdDb252ZXJ0ZXIgZGVsZWdhdGUgYW5kIHRoZSBidWxrIG9mIHRoZSBjb252ZXJzaW9uIHN0
YXRlIG1hY2hpbmUgd2FzIG1vdmVkCisgICAgICAgIGludG8gUHJldmlld0NvbnZlcnRlciwgd2hp
Y2ggbm93IHZlbmRzIGEgQysrIGNsaWVudCBpbnRlcmZhY2UuIExlZ2FjeVByZXZpZXdMb2FkZXIg
aXMgbm93IGEKKyAgICAgICAgY2xpZW50IG9mIGl0cyBQcmV2aWV3Q29udmVydGVyLCByZXRhaW5p
bmcgdGhlIHJlc3BvbnNpaWxpdHkgb2YgaW50ZXJhY3Rpbmcgd2l0aCB0aGUKKyAgICAgICAgUmVz
b3VyY2VMb2FkZXIgYW5kIExlZ2FjeVByZXZpZXdMb2FkZXJDbGllbnQuCisKKyAgICAgICAgMi4g
VGhlIFF1aWNrIExvb2sgTlNEYXRhIGxvYWRpbmcgY29kZSBmb3IgV2ViS2l0TGVnYWN5IG5vdyB1
c2VzIFFMUHJldmlld0NvbnZlcnRlciBBUEkKKyAgICAgICAgZGlyZWN0bHkgcmF0aGVyIHRoYW4g
Y3JlYXRpbmcgYSBQcmV2aWV3Q29udmVydGVyLiBUaGlzIGNvZGUgcGF0aCBkb2VzIG5vdCByZXF1
aXJlIGEgZGVsZWdhdGUKKyAgICAgICAgbm9yIGFueSBvZiB0aGUgb3RoZXIgbG9naWMgaW4gUHJl
dmlld0NvbnZlcnRlci4KKworICAgICAgICBUaGlzIGNoYW5nZSBhbHNvIG9yZ2FuaXplcyBQcmV2
aWV3Q29udmVydGVyIGludG8gYSBjcm9zcy1wbGF0Zm9ybSAuY3BwIGZpbGUgYW5kIGFuCisgICAg
ICAgIGlPUy1zcGVjaWZpYyAubW0gZmlsZSBmb3IgdGhlIGRpcmVjdCB1c2FnZSBvZiBRTFByZXZp
ZXdDb252ZXJ0ZXIgQVBJLiBMZWdhY3lQcmV2aWV3Q29udmVydGVyCisgICAgICAgIHdhcyBhbHNv
IG9yZ2FuaXplZCBzdWNoIHRoYXQgaXQgY2FuIGJlIGNoYW5nZWQgZnJvbSAubW0gdG8gLmNwcCBp
biBhIGZ1dHVyZSBwYXRjaC4KKworICAgICAgICBObyBjaGFuZ2UgaW4gYmVoYXZpb3IuIENvdmVy
ZWQgYnkgZXhpc3RpbmcgQVBJIGFuZCBsYXlvdXQgdGVzdHMuCisKKyAgICAgICAgKiBTb3VyY2Vz
LnR4dDoKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisKKyAg
ICAgICAgKiBsb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RG9j
dW1lbnRMb2FkZXI6OnNldFByZXZpZXdDb252ZXJ0ZXIpOgorICAgICAgICAqIGxvYWRlci9Eb2N1
bWVudExvYWRlci5oOiBDaGFuZ2VkIG1fcHJldmlld0NvbnZlcnRlciBmcm9tIHN0ZDo6dW5pcXVl
X3B0ciB0byBSZWZQdHIuCisKKyAgICAgICAgKiBsb2FkZXIvU3VicmVzb3VyY2VMb2FkZXIuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6U3VicmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVSZXNwb25z
ZSk6IFVzZWQgbWFrZVVuaXF1ZSBkaXJlY3RseSBpbnN0ZWFkIG9mCisgICAgICAgIExlZ2FjeVBy
ZXZpZXdMb2FkZXI6OmNyZWF0ZSgpLgorCisgICAgICAgICogbG9hZGVyL2lvcy9MZWdhY3lQcmV2
aWV3TG9hZGVyLmg6IFByaXZhdGVseSBpbmhlcml0ZWQgZnJvbSBQcmV2aWV3Q29udmVydGVyQ2xp
ZW50IGFuZAorICAgICAgICBQcmV2aWV3Q29udmVydGVyUHJvdmlkZXIgYW5kIG1pZ3JhdGVkIFdl
YlByZXZpZXdMb2FkZXIgaXZhcnMgdG8gbWVtYmVyIHZhcmlhYmxlcy4KKworICAgICAgICAqIGxv
YWRlci9pb3MvTGVnYWN5UHJldmlld0xvYWRlci5tbToKKyAgICAgICAgKFdlYkNvcmU6Om1ha2VD
bGllbnQpOgorICAgICAgICAoV2ViQ29yZTo6TGVnYWN5UHJldmlld0xvYWRlcjo6ZGlkUmVjZWl2
ZUJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpMZWdhY3lQcmV2aWV3TG9hZGVyOjpkaWRGaW5p
c2hMb2FkaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OkxlZ2FjeVByZXZpZXdMb2FkZXI6OmRpZEZh
aWwpOgorICAgICAgICAoV2ViQ29yZTo6TGVnYWN5UHJldmlld0xvYWRlcjo6cHJldmlld0NvbnZl
cnRlckRpZFN0YXJ0Q29udmVydGluZyk6CisgICAgICAgIChXZWJDb3JlOjpMZWdhY3lQcmV2aWV3
TG9hZGVyOjpwcmV2aWV3Q29udmVydGVyRGlkUmVjZWl2ZURhdGEpOgorICAgICAgICAoV2ViQ29y
ZTo6TGVnYWN5UHJldmlld0xvYWRlcjo6cHJldmlld0NvbnZlcnRlckRpZEZpbmlzaENvbnZlcnRp
bmcpOgorICAgICAgICAoV2ViQ29yZTo6TGVnYWN5UHJldmlld0xvYWRlcjo6cHJldmlld0NvbnZl
cnRlckRpZEZhaWxVcGRhdGluZyk6CisgICAgICAgIChXZWJDb3JlOjpMZWdhY3lQcmV2aWV3TG9h
ZGVyOjpwcmV2aWV3Q29udmVydGVyRGlkRmFpbENvbnZlcnRpbmcpOgorICAgICAgICAoV2ViQ29y
ZTo6TGVnYWN5UHJldmlld0xvYWRlcjo6cHJvdmlkZVBhc3N3b3JkRm9yUHJldmlld0NvbnZlcnRl
cik6CisgICAgICAgIChXZWJDb3JlOjpMZWdhY3lQcmV2aWV3TG9hZGVyOjpwcm92aWRlTWFpblJl
c291cmNlRm9yUHJldmlld0NvbnZlcnRlcik6CisgICAgICAgIChXZWJDb3JlOjpMZWdhY3lQcmV2
aWV3TG9hZGVyOjpMZWdhY3lQcmV2aWV3TG9hZGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkxlZ2Fj
eVByZXZpZXdMb2FkZXI6OmRpZFJlY2VpdmVEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkxlZ2Fj
eVByZXZpZXdMb2FkZXI6OmRpZFJlY2VpdmVSZXNwb25zZSk6CisgICAgICAgICh0ZXN0aW5nQ2xp
ZW50KTogRGVsZXRlZC4KKyAgICAgICAgKGVtcHR5Q2xpZW50KTogRGVsZXRlZC4KKyAgICAgICAg
KC1bV2ViUHJldmlld0xvYWRlciBpbml0V2l0aFJlc291cmNlTG9hZGVyOnJlc291cmNlUmVzcG9u
c2U6XSk6IERlbGV0ZWQuCisgICAgICAgICgtW1dlYlByZXZpZXdMb2FkZXIgYXBwZW5kRGF0YUFy
cmF5Ol0pOiBEZWxldGVkLgorICAgICAgICAoLVtXZWJQcmV2aWV3TG9hZGVyIGZpbmlzaGVkQXBw
ZW5kaW5nXSk6IERlbGV0ZWQuCisgICAgICAgICgtW1dlYlByZXZpZXdMb2FkZXIgZmFpbGVkXSk6
IERlbGV0ZWQuCisgICAgICAgICgtW1dlYlByZXZpZXdMb2FkZXIgX2xvYWRQcmV2aWV3SWZOZWVk
ZWRdKTogRGVsZXRlZC4KKyAgICAgICAgKC1bV2ViUHJldmlld0xvYWRlciBjb25uZWN0aW9uOmRp
ZFJlY2VpdmVEYXRhOmxlbmd0aFJlY2VpdmVkOl0pOiBEZWxldGVkLgorICAgICAgICAoLVtXZWJQ
cmV2aWV3TG9hZGVyIGNvbm5lY3Rpb25EaWRGaW5pc2hMb2FkaW5nOl0pOiBEZWxldGVkLgorICAg
ICAgICAoaXNRdWlja0xvb2tQYXNzd29yZEVycm9yKTogRGVsZXRlZC4KKyAgICAgICAgKC1bV2Vi
UHJldmlld0xvYWRlciBjb25uZWN0aW9uOmRpZEZhaWxXaXRoRXJyb3I6XSk6IERlbGV0ZWQuCisg
ICAgICAgIChXZWJDb3JlOjpMZWdhY3lQcmV2aWV3TG9hZGVyOjp+TGVnYWN5UHJldmlld0xvYWRl
cik6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpMZWdhY3lQcmV2aWV3TG9hZGVyOjpjcmVh
dGUpOiBEZWxldGVkLgorCisgICAgICAgICogcGxhdGZvcm0vUHJldmlld0NvbnZlcnRlci5jcHA6
IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6UHJldmlld0NvbnZlcnRlcjo6c3VwcG9ydHNNSU1F
VHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpQcmV2aWV3Q29udmVydGVyOjpwcmV2aWV3UmVzcG9u
c2UgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UHJldmlld0NvbnZlcnRlcjo6cHJldmlld0Vy
cm9yIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlByZXZpZXdDb252ZXJ0ZXI6OnByZXZpZXdE
YXRhIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlByZXZpZXdDb252ZXJ0ZXI6OnVwZGF0ZU1h
aW5SZXNvdXJjZSk6CisgICAgICAgIChXZWJDb3JlOjpQcmV2aWV3Q29udmVydGVyOjphcHBlbmRG
cm9tQnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OlByZXZpZXdDb252ZXJ0ZXI6OmZpbmlzaFVw
ZGF0aW5nKToKKyAgICAgICAgKFdlYkNvcmU6OlByZXZpZXdDb252ZXJ0ZXI6OmZhaWxlZFVwZGF0
aW5nKToKKyAgICAgICAgKFdlYkNvcmU6OlByZXZpZXdDb252ZXJ0ZXI6Omhhc0NsaWVudCBjb25z
dCk6CisgICAgICAgIChXZWJDb3JlOjpQcmV2aWV3Q29udmVydGVyOjphZGRDbGllbnQpOgorICAg
ICAgICAoV2ViQ29yZTo6UHJldmlld0NvbnZlcnRlcjo6cmVtb3ZlQ2xpZW50KToKKyAgICAgICAg
KFdlYkNvcmU6OnNoYXJlZFBhc3N3b3JkRm9yVGVzdGluZyk6CisgICAgICAgIChXZWJDb3JlOjpQ
cmV2aWV3Q29udmVydGVyOjpwYXNzd29yZEZvclRlc3RpbmcpOgorICAgICAgICAoV2ViQ29yZTo6
UHJldmlld0NvbnZlcnRlcjo6c2V0UGFzc3dvcmRGb3JUZXN0aW5nKToKKyAgICAgICAgKFdlYkNv
cmU6OlByZXZpZXdDb252ZXJ0ZXI6Oml0ZXJhdGVDbGllbnRzKToKKyAgICAgICAgKFdlYkNvcmU6
OlByZXZpZXdDb252ZXJ0ZXI6OmRpZEFkZENsaWVudCk6CisgICAgICAgIChXZWJDb3JlOjpQcmV2
aWV3Q29udmVydGVyOjpkaWRGYWlsQ29udmVydGluZ1dpdGhFcnJvcik6CisgICAgICAgIChXZWJD
b3JlOjpQcmV2aWV3Q29udmVydGVyOjpkaWRGYWlsVXBkYXRpbmcpOgorICAgICAgICAoV2ViQ29y
ZTo6UHJldmlld0NvbnZlcnRlcjo6cmVwbGF5VG9DbGllbnQpOgorICAgICAgICAoV2ViQ29yZTo6
UHJldmlld0NvbnZlcnRlcjo6ZGVsZWdhdGVEaWRSZWNlaXZlRGF0YSk6CisgICAgICAgIChXZWJD
b3JlOjpQcmV2aWV3Q29udmVydGVyOjpkZWxlZ2F0ZURpZEZpbmlzaExvYWRpbmcpOgorICAgICAg
ICAoV2ViQ29yZTo6UHJldmlld0NvbnZlcnRlcjo6ZGVsZWdhdGVEaWRGYWlsV2l0aEVycm9yKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9QcmV2aWV3Q29udmVydGVyLmg6CisgICAgICAgIChXZWJDb3Jl
OjpQcmV2aWV3Q29udmVydGVyOjpQcmV2aWV3Q29udmVydGVyKTogRGVsZXRlZC4KKyAgICAgICAg
KFdlYkNvcmU6OlByZXZpZXdDb252ZXJ0ZXI6OnBsYXRmb3JtQ29udmVydGVyIGNvbnN0KTogRGVs
ZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9QcmV2aWV3Q29udmVydGVyQ2xpZW50Lmg6IENvcGll
ZCBmcm9tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1ByZXZpZXdDb252ZXJ0ZXIuaC4KKyAgICAg
ICAgKiBwbGF0Zm9ybS9QcmV2aWV3Q29udmVydGVyUHJvdmlkZXIuaDogQ29waWVkIGZyb20gU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vUHJldmlld0NvbnZlcnRlci5oLgorICAgICAgICAqIHBsYXRm
b3JtL2lvcy9QcmV2aWV3Q29udmVydGVySU9TLm1tOgorICAgICAgICAoLVtXZWJQcmV2aWV3Q29u
dmVydGVyRGVsZWdhdGUgaW5pdFdpdGhEZWxlZ2F0ZTpdKToKKyAgICAgICAgKC1bV2ViUHJldmll
d0NvbnZlcnRlckRlbGVnYXRlIGNvbm5lY3Rpb246ZGlkUmVjZWl2ZURhdGE6bGVuZ3RoUmVjZWl2
ZWQ6XSk6CisgICAgICAgICgtW1dlYlByZXZpZXdDb252ZXJ0ZXJEZWxlZ2F0ZSBjb25uZWN0aW9u
RGlkRmluaXNoTG9hZGluZzpdKToKKyAgICAgICAgKC1bV2ViUHJldmlld0NvbnZlcnRlckRlbGVn
YXRlIGNvbm5lY3Rpb246ZGlkRmFpbFdpdGhFcnJvcjpdKToKKyAgICAgICAgKFdlYkNvcmU6OlBy
ZXZpZXdDb252ZXJ0ZXI6OlByZXZpZXdDb252ZXJ0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6UHJl
dmlld0NvbnZlcnRlcjo6cGxhdGZvcm1TdXBwb3J0ZWRNSU1FVHlwZXMpOgorICAgICAgICAoV2Vi
Q29yZTo6UHJldmlld0NvbnZlcnRlcjo6c2FmZVJlcXVlc3QgY29uc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6UHJldmlld0NvbnZlcnRlcjo6cGxhdGZvcm1QcmV2aWV3UmVzcG9uc2UgY29uc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6UHJldmlld0NvbnZlcnRlcjo6cGxhdGZvcm1BcHBlbmQpOgorICAg
ICAgICAoV2ViQ29yZTo6UHJldmlld0NvbnZlcnRlcjo6cGxhdGZvcm1GaW5pc2hlZEFwcGVuZGlu
Zyk6CisgICAgICAgIChXZWJDb3JlOjpQcmV2aWV3Q29udmVydGVyOjpwbGF0Zm9ybUZhaWxlZEFw
cGVuZGluZyk6CisgICAgICAgIChXZWJDb3JlOjpQcmV2aWV3Q29udmVydGVyOjppc1BsYXRmb3Jt
UGFzc3dvcmRFcnJvciBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpvcHRpb25zV2l0aFBhc3N3
b3JkKToKKyAgICAgICAgKFdlYkNvcmU6OlByZXZpZXdDb252ZXJ0ZXI6OnBsYXRmb3JtVW5sb2Nr
V2l0aFBhc3N3b3JkKToKKyAgICAgICAgKFdlYkNvcmU6OlByZXZpZXdDb252ZXJ0ZXI6OnN1cHBv
cnRzTUlNRVR5cGUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6UHJldmlld0NvbnZlcnRl
cjo6cHJldmlld1JlcXVlc3QgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6UHJl
dmlld0NvbnZlcnRlcjo6cHJldmlld1Jlc3BvbnNlIGNvbnN0KTogRGVsZXRlZC4KKworICAgICAg
ICAqIHBsYXRmb3JtL2lvcy9RdWlja0xvb2subW06CisgICAgICAgIChXZWJDb3JlOjpyZWdpc3Rl
clFMUHJldmlld0NvbnZlcnRlcklmTmVlZGVkKTogVXNlZCBRTFByZXZpZXdDb252ZXJ0ZXIgZGly
ZWN0bHkuCisKIDIwMTktMTAtMjQgIFNpbW9uIEZyYXNlciAgPHNpbW9uLmZyYXNlckBhcHBsZS5j
b20+CiAKICAgICAgICAgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLXZh
bHVlcy9jYWxjLXBvc2l0aXZlLWZyYWN0aW9uLTAwMS5odG1sIGZhaWxzCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9QQUwvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvUEFML0NoYW5nZUxv
ZwppbmRleCAxNWVjZDcwNTdjMGFjMTI3NWQ1ZWI2ZDNlOWE0OWY3NmNkM2QxMjM0Li5iZDllMjY2
ZTVhYWNjZDZiODM2M2I4YWQyYjUzYTE2YzE1NjJkZmM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9QQUwvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9DaGFuZ2VMb2cKQEAg
LTEsMyArMSwxMiBAQAorMjAxOS0xMC0yNCAgQW5keSBFc3RlcyAgPGFlc3Rlc0BhcHBsZS5jb20+
CisKKyAgICAgICAgW1F1aWNrIExvb2tdIE1vdmUgdGhlIFFMUHJldmlld0NvbnZlcnRlciBkZWxl
Z2F0ZSBpbnRvIFByZXZpZXdDb252ZXJ0ZXIgYW5kIHZlbmQgYSBDKysgY2xpZW50IGludGVyZmFj
ZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjAzMzk2
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBwYWwv
c3BpL2lvcy9RdWlja0xvb2tTUEkuaDoKKwogMjAxOS0xMC0xNSAgUGVuZyBMaXUgIDxwZW5nLmxp
dTZAYXBwbGUuY29tPgogCiAgICAgICAgIFtQaWN0dXJlLWluLVBpY3R1cmUgV2ViIEFQSV0gSW1w
bGVtZW50IEhUTUxWaWRlb0VsZW1lbnQucmVxdWVzdFBpY3R1cmVJblBpY3R1cmUoKSAvIERvY3Vt
ZW50LmV4aXRQaWN0dXJlSW5QaWN0dXJlKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL0Zl
YXR1cmVEZWZpbmVzLmggYi9Tb3VyY2UvV1RGL3d0Zi9GZWF0dXJlRGVmaW5lcy5oCmluZGV4IGJl
YjY0M2I1YjNmYTg0ODdiZjNmYWIxZDViM2ZhYTU5YzYxYzY2ZmIuLmEwZTk1NDRmMjgyMWZiYWU2
NDdjYjY0OWM5OTg1ZjlkNTM2N2VhOTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL0ZlYXR1
cmVEZWZpbmVzLmgKKysrIGIvU291cmNlL1dURi93dGYvRmVhdHVyZURlZmluZXMuaApAQCAtMjE3
LDYgKzIxNywxMiBAQCB0aGUgcHVibGljIGlPUyBTREsuIFNlZSA8aHR0cHM6Ly93ZWJraXQub3Jn
L2IvMTc5MTY3Pi4gKi8KICNlbmRpZgogI2VuZGlmCiAKKyNpZiAhZGVmaW5lZChFTkFCTEVfUFJF
VklFV19DT05WRVJURVIpCisjaWYgUExBVEZPUk0oSU9TKQorI2RlZmluZSBFTkFCTEVfUFJFVklF
V19DT05WRVJURVIgMQorI2VuZGlmCisjZW5kaWYKKwogI2VuZGlmIC8qIFBMQVRGT1JNKElPU19G
QU1JTFkpICovCiAKIC8qIC0tLS0tLS0tLSBBcHBsZSBXQVRDSE9TIHBvcnQgLS0tLS0tLS0tICov
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL3NwaS9pb3MvUXVpY2tMb29rU1BJ
LmggYi9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL3NwaS9pb3MvUXVpY2tMb29rU1BJLmgKaW5kZXgg
MzJhNjA5ZmRiNWE4ZDAwYTM0NTU4M2FmOTk1MjNhYTVkNjM2MmYyMy4uOWU3NDJkZDBiMmZjYzRm
MTgyYjAwYTAyOTJhOWU1NGJhOGM1NzA4NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvUEFM
L3BhbC9zcGkvaW9zL1F1aWNrTG9va1NQSS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwv
c3BpL2lvcy9RdWlja0xvb2tTUEkuaApAQCAtMzksNiArMzksNyBAQAogLSAoTlNVUkxSZXF1ZXN0
ICopc2FmZVJlcXVlc3RGb3JSZXF1ZXN0OihOU1VSTFJlcXVlc3QgKilyZXF1ZXN0OwogLSAoaWQp
aW5pdFdpdGhDb25uZWN0aW9uOihOU1VSTENvbm5lY3Rpb24gKiljb25uZWN0aW9uIGRlbGVnYXRl
OihpZClkZWxlZ2F0ZSByZXNwb25zZTooTlNVUkxSZXNwb25zZSAqKXJlc3BvbnNlIG9wdGlvbnM6
KE5TRGljdGlvbmFyeSAqKW9wdGlvbnM7CiAtIChpZClpbml0V2l0aERhdGE6KE5TRGF0YSAqKWRh
dGEgbmFtZTooTlNTdHJpbmcgKiluYW1lIHV0aTooTlNTdHJpbmcgKil1dGkgb3B0aW9uczooTlNE
aWN0aW9uYXJ5ICopb3B0aW9uczsKKy0gKHZvaWQpYXBwZW5kRGF0YTooTlNEYXRhICopZGF0YTsK
IC0gKHZvaWQpYXBwZW5kRGF0YUFycmF5OihOU0FycmF5ICopZGF0YUFycmF5OwogLSAodm9pZClm
aW5pc2hDb252ZXJ0aW5nOwogLSAodm9pZClmaW5pc2hlZEFwcGVuZGluZ0RhdGE7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dCBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMu
dHh0CmluZGV4IDg5ZGNmOGUzOWIwMzQ3MWViMzdjN2NlOTZjNGQ4NDMyNDNhM2FjMTcuLmZhNjcz
MjdmNzU3YmU3ZmVhMGZlNmZhNjYwYTJiYzM5YjhkNTg1NjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL1NvdXJjZXMudHh0CisrKyBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CkBAIC0x
NzM5LDYgKzE3MzksNyBAQCBwbGF0Zm9ybS9QbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1V0dGVyYW5j
ZS5jcHAKIHBsYXRmb3JtL1BsYXRmb3JtU3BlZWNoU3ludGhlc2lzVm9pY2UuY3BwCiBwbGF0Zm9y
bS9QbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVyLmNwcAogcGxhdGZvcm0vUGxhdGZvcm1TdHJhdGVn
aWVzLmNwcAorcGxhdGZvcm0vUHJldmlld0NvbnZlcnRlci5jcHAKIHBsYXRmb3JtL1Byb2Nlc3NJ
ZGVudGlmaWVyLmNwcAogcGxhdGZvcm0vUmVmZXJyZXJQb2xpY3kuY3BwCiBwbGF0Zm9ybS9SZW1v
dGVDb21tYW5kTGlzdGVuZXIuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggMjE3MWQ2NWNjZjllMzM4NTJjZDZkYWJhODE5ZDNl
ODhmYjdmOWRjMS4uMjhjYzhmY2I2OGZjMjdiOGQ1NjIwOWVmYTU0YzdlZDJiNjA2ODFiZSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
CisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpA
QCAtMjk4NSw2ICsyOTg1LDggQEAKIAkJQTE5QUVBMjIxQUFBODA4QTAwQjUyQjI1IC8qIEpTTW9j
a0NvbnRlbnRGaWx0ZXJTZXR0aW5ncy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBBMTlBRUExRDFBQUE4MDZFMDBCNTJCMjUgLyogSlNNb2NrQ29udGVu
dEZpbHRlclNldHRpbmdzLmNwcCAqLzsgfTsKIAkJQTE5RDkzNEIxQUExMUIxRTAwQjQ2QzI0IC8q
IE5ldHdvcmtFeHRlbnNpb25Db250ZW50RmlsdGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBMTlEOTM0OTFBQTExQjFFMDBCNDZDMjQgLyogTmV0d29y
a0V4dGVuc2lvbkNvbnRlbnRGaWx0ZXIuaCAqLzsgfTsKIAkJQTFBQTlBQjkxRDIzOTExNTAwRkVB
REIzIC8qIENvbnRlbnRGaWx0ZXJCbG9ja2VkUGFnZS5odG1sIGluIFJlc291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBMUFBOUFCODFEMjM5MTE1MDBGRUFEQjMgLyog
Q29udGVudEZpbHRlckJsb2NrZWRQYWdlLmh0bWwgKi87IH07CisJCUExQURBRjdEMjM2MEZEM0Uw
MDlDQjc3NiAvKiBQcmV2aWV3Q29udmVydGVyQ2xpZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBMUFEQUY3QjIzNjBGRDNEMDA5Q0I3NzYgLyogUHJl
dmlld0NvbnZlcnRlckNsaWVudC5oICovOyB9OworCQlBMUFEQUY3RTIzNjBGRDNFMDA5Q0I3NzYg
LyogUHJldmlld0NvbnZlcnRlclByb3ZpZGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBBMUFEQUY3QzIzNjBGRDNFMDA5Q0I3NzYgLyogUHJldmlld0Nv
bnZlcnRlclByb3ZpZGVyLmggKi87IH07CiAJCUExQUZFREU2MUY4QkZGNkQwMDg3MDEzRiAvKiBN
b2NrUGF5bWVudENvb3JkaW5hdG9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBBMUFGRURFNDFGOEJGRjZEMDA4NzAxM0YgLyogTW9ja1BheW1lbnRDb29y
ZGluYXRvci5oICovOyB9OwogCQlBMUFGRURFNzFGOEJGRjZEMDA4NzAxM0YgLyogTW9ja1BheW1l
bnRDb29yZGluYXRvci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBBMUFGRURFNTFGOEJGRjZEMDA4NzAxM0YgLyogTW9ja1BheW1lbnRDb29yZGluYXRv
ci5jcHAgKi87IH07CiAJCUExQjVCMjlFMUFBQTg0NkUwMDhCNjA0MiAvKiBNb2NrQ29udGVudEZp
bHRlclNldHRpbmdzLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEExQjVCMjlDMUFBQTg0NkUwMDhCNjA0MiAvKiBNb2NrQ29udGVudEZpbHRlclNldHRp
bmdzLmNwcCAqLzsgfTsKQEAgLTExMzEyLDYgKzExMzE0LDkgQEAKIAkJQTE5RDkzNDgxQUExMUIx
RTAwQjQ2QzI0IC8qIE5ldHdvcmtFeHRlbnNpb25Db250ZW50RmlsdGVyLm1tICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gTmV0d29ya0V4dGVuc2lvbkNvbnRlbnRGaWx0
ZXIubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUExOUQ5MzQ5MUFBMTFCMUUwMEI0
NkMyNCAvKiBOZXR3b3JrRXh0ZW5zaW9uQ29udGVudEZpbHRlci5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBOZXR3b3JrRXh0ZW5zaW9uQ29udGVudEZpbHRlci5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQlBMUFBOUFCODFEMjM5MTE1MDBGRUFEQjMgLyogQ29udGVu
dEZpbHRlckJsb2NrZWRQYWdlLmh0bWwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0Lmh0bWw7IHBhdGggPSBDb250
ZW50RmlsdGVyQmxvY2tlZFBhZ2UuaHRtbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
QTFBREFGNzkyMzYwRUY2QzAwOUNCNzc2IC8qIFByZXZpZXdDb252ZXJ0ZXIuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gUHJldmlld0NvbnZlcnRlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCUExQURBRjdCMjM2MEZEM0QwMDlDQjc3NiAvKiBQcmV2aWV3Q29udmVydGVyQ2xpZW50
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFByZXZpZXdDb252ZXJ0ZXJDbGll
bnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTFBREFGN0MyMzYwRkQzRTAwOUNC
Nzc2IC8qIFByZXZpZXdDb252ZXJ0ZXJQcm92aWRlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBQcmV2aWV3Q29udmVydGVyUHJvdmlkZXIuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJQTFBRkVERTQxRjhCRkY2RDAwODcwMTNGIC8qIE1vY2tQYXltZW50Q29vcmRp
bmF0b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTW9ja1BheW1lbnRDb29yZGluYXRvci5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQlBMUFGRURFNTFGOEJGRjZEMDA4NzAxM0YgLyogTW9ja1Bh
eW1lbnRDb29yZGluYXRvci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBNb2NrUGF5bWVudENvb3Jk
aW5hdG9yLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTFCNUIyOUMxQUFBODQ2
RTAwOEI2MDQyIC8qIE1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3MuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5ncy5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0yNTcxNCw3ICsyNTcxOSwxMCBAQAogCQkJCTA2
NjhFMTg5MEFERDk2MjQwMDQxMjhFMCAvKiBQb3B1cE1lbnUuaCAqLywKIAkJCQlBQkMxMjg3NjBC
MzNBQTZEMDBDNjkzRDUgLyogUG9wdXBNZW51Q2xpZW50LmggKi8sCiAJCQkJQkMzQkUxMkEwRTk4
MDkyRjAwODM1NTg4IC8qIFBvcHVwTWVudVN0eWxlLmggKi8sCisJCQkJQTFBREFGNzkyMzYwRUY2
QzAwOUNCNzc2IC8qIFByZXZpZXdDb252ZXJ0ZXIuY3BwICovLAogCQkJCUExQzE1MDc4MUUzRjJC
M0UwMDMyQzk4QyAvKiBQcmV2aWV3Q29udmVydGVyLmggKi8sCisJCQkJQTFBREFGN0IyMzYwRkQz
RDAwOUNCNzc2IC8qIFByZXZpZXdDb252ZXJ0ZXJDbGllbnQuaCAqLywKKwkJCQlBMUFEQUY3QzIz
NjBGRDNFMDA5Q0I3NzYgLyogUHJldmlld0NvbnZlcnRlclByb3ZpZGVyLmggKi8sCiAJCQkJNTFG
NjQ1RDIxRkVDREJDODAwQjU0REVEIC8qIFByb2Nlc3NJZGVudGlmaWVyLmNwcCAqLywKIAkJCQk1
MUY2NDVEMzFGRUNEQkM4MDBCNTRERUQgLyogUHJvY2Vzc0lkZW50aWZpZXIuaCAqLywKIAkJCQlG
NDdBNjMzQzFGRjZGRDUwMDA4MUIzQ0MgLyogUHJvbWlzZWRBdHRhY2htZW50SW5mby5oICovLApA
QCAtMzE0NzgsNiArMzE0ODYsOCBAQAogCQkJCTQ2REJCNjUwMUFCOEM5NkYwMEQ5QTgxMyAvKiBQ
b3dlck9ic2VydmVyTWFjLmggaW4gSGVhZGVycyAqLywKIAkJCQlDMEYyQTQ0MTEzODY5QUFCMDA2
NkM1MzQgLyogcHJlcHJvY2Vzc29yLnBtIGluIEhlYWRlcnMgKi8sCiAJCQkJQTFDMTUwN0ExRTNG
MkIzRTAwMzJDOThDIC8qIFByZXZpZXdDb252ZXJ0ZXIuaCBpbiBIZWFkZXJzICovLAorCQkJCUEx
QURBRjdEMjM2MEZEM0UwMDlDQjc3NiAvKiBQcmV2aWV3Q29udmVydGVyQ2xpZW50LmggaW4gSGVh
ZGVycyAqLywKKwkJCQlBMUFEQUY3RTIzNjBGRDNFMDA5Q0I3NzYgLyogUHJldmlld0NvbnZlcnRl
clByb3ZpZGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQlFNDYwNUZFQzIxNjY0ODA5MDBFNTMwNDYg
LyogUHJld2FybUluZm9ybWF0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQlCNzFGRTZERjExMDkx
Q0IzMDBEQUVGNzcgLyogUHJpbnRDb250ZXh0LmggaW4gSGVhZGVycyAqLywKIAkJCQk1MUY2NDVE
NTFGRUNEQkNFMDBCNTRERUQgLyogUHJvY2Vzc0lkZW50aWZpZXIuaCBpbiBIZWFkZXJzICovLApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5jcHAKaW5kZXggNGMxN2IwYjBkNzFk
NmQwZGUzYTA5ZWE1ZWYyZjY0MTFlZjhiYWMwMC4uZmMzMzMwMWZiOTFkYjEwNDYzODkyNzMwZTEw
YjE3MWIxZWQ3N2NlMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50
TG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3Bw
CkBAIC0yMTM4LDcgKzIxMzgsNyBAQCB2b2lkIERvY3VtZW50TG9hZGVyOjpwcmV2aWV3UmVzcG9u
c2VSZWNlaXZlZChDYWNoZWRSZXNvdXJjZSYgcmVzb3VyY2UsIGNvbnN0IFJlcwogICAgIG1fcmVz
cG9uc2UgPSByZXNwb25zZTsKIH0KIAotdm9pZCBEb2N1bWVudExvYWRlcjo6c2V0UHJldmlld0Nv
bnZlcnRlcihzdGQ6OnVuaXF1ZV9wdHI8UHJldmlld0NvbnZlcnRlcj4mJiBwcmV2aWV3Q29udmVy
dGVyKQordm9pZCBEb2N1bWVudExvYWRlcjo6c2V0UHJldmlld0NvbnZlcnRlcihSZWZQdHI8UHJl
dmlld0NvbnZlcnRlcj4mJiBwcmV2aWV3Q29udmVydGVyKQogewogICAgIG1fcHJldmlld0NvbnZl
cnRlciA9IFdURk1vdmUocHJldmlld0NvbnZlcnRlcik7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9E
b2N1bWVudExvYWRlci5oCmluZGV4IDc0YzZkNGY5YzkwMDE5OTViNmRmNGFjYTBjMGYyNzk3NWY2
YWUzZTMuLjcyZWUwMmRkMTc2OTZiNzQ3NDg3OTlhY2I5ZDA4NWIwZWQ4YjFlZTAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5oCkBAIC0zNTIsNyArMzUyLDcgQEAgcHVibGlj
OgogICAgIFVSTCBkb2N1bWVudFVSTCgpIGNvbnN0OwogCiAjaWYgVVNFKFFVSUNLX0xPT0spCi0g
ICAgdm9pZCBzZXRQcmV2aWV3Q29udmVydGVyKHN0ZDo6dW5pcXVlX3B0cjxQcmV2aWV3Q29udmVy
dGVyPiYmKTsKKyAgICB2b2lkIHNldFByZXZpZXdDb252ZXJ0ZXIoUmVmUHRyPFByZXZpZXdDb252
ZXJ0ZXI+JiYpOwogICAgIFByZXZpZXdDb252ZXJ0ZXIqIHByZXZpZXdDb252ZXJ0ZXIoKSBjb25z
dDsKICNlbmRpZgogCkBAIC01OTEsNyArNTkxLDcgQEAgcHJpdmF0ZToKICNlbmRpZgogCiAjaWYg
VVNFKFFVSUNLX0xPT0spCi0gICAgc3RkOjp1bmlxdWVfcHRyPFByZXZpZXdDb252ZXJ0ZXI+IG1f
cHJldmlld0NvbnZlcnRlcjsKKyAgICBSZWZQdHI8UHJldmlld0NvbnZlcnRlcj4gbV9wcmV2aWV3
Q29udmVydGVyOwogI2VuZGlmCiAKICNpZiBFTkFCTEUoQ09OVEVOVF9FWFRFTlNJT05TKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnJlc291cmNlTG9hZGVyLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9TdWJyZXNvdXJjZUxvYWRlci5jcHAKaW5kZXggZTEyZGNjYjRj
YmQ4NWUyMzBlYzY4ZTgyNDc5OGMzYmNkMTgyMjQ1My4uZGQzN2MwN2I1NWRmZmJiN2I4MWFiMGEz
ODcwYmRlN2UyNGJmMTA3OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnJl
c291cmNlTG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3VicmVzb3VyY2VM
b2FkZXIuY3BwCkBAIC0zMzQsNyArMzM0LDcgQEAgdm9pZCBTdWJyZXNvdXJjZUxvYWRlcjo6ZGlk
UmVjZWl2ZVJlc3BvbnNlKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBDb20KIAog
I2lmIFVTRShRVUlDS19MT09LKQogICAgIGlmIChzaG91bGRDcmVhdGVQcmV2aWV3TG9hZGVyRm9y
UmVzcG9uc2UocmVzcG9uc2UpKSB7Ci0gICAgICAgIG1fcHJldmlld0xvYWRlciA9IExlZ2FjeVBy
ZXZpZXdMb2FkZXI6OmNyZWF0ZSgqdGhpcywgcmVzcG9uc2UpOworICAgICAgICBtX3ByZXZpZXdM
b2FkZXIgPSBtYWtlVW5pcXVlPExlZ2FjeVByZXZpZXdMb2FkZXI+KCp0aGlzLCByZXNwb25zZSk7
CiAgICAgICAgIGlmIChtX3ByZXZpZXdMb2FkZXItPmRpZFJlY2VpdmVSZXNwb25zZShyZXNwb25z
ZSkpCiAgICAgICAgICAgICByZXR1cm47CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvbG9hZGVyL2lvcy9MZWdhY3lQcmV2aWV3TG9hZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvaW9zL0xlZ2FjeVByZXZpZXdMb2FkZXIuaAppbmRleCAzNDg2OWFiYzMzYWYzYTFlZWJjNmIx
NTM1OGE2Zjk5MDEwMzNmYjA3Li4yNWQ0OTU2Yzg4M2M1ODc0MWIzOGJjMDA1MDZjMDM2NGE3NTJj
YTY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvaW9zL0xlZ2FjeVByZXZpZXdM
b2FkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvaW9zL0xlZ2FjeVByZXZpZXdMb2Fk
ZXIuaApAQCAtMjUsMTEgKzI1LDEyIEBACiAKICNwcmFnbWEgb25jZQogCisjaW5jbHVkZSAiUHJl
dmlld0NvbnZlcnRlckNsaWVudC5oIgorI2luY2x1ZGUgIlByZXZpZXdDb252ZXJ0ZXJQcm92aWRl
ci5oIgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAjaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxl
Lmg+CiAjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgotCi1PQkpDX0NMQVNTIFdlYlByZXZpZXdM
b2FkZXI7CisjaW5jbHVkZSA8d3RmL1dlYWtQdHIuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewog
CkBAIC0zOCwxMSArMzksMTEgQEAgY2xhc3MgUmVzb3VyY2VMb2FkZXI7CiBjbGFzcyBSZXNvdXJj
ZVJlc3BvbnNlOwogY2xhc3MgU2hhcmVkQnVmZmVyOwogCi1jbGFzcyBMZWdhY3lQcmV2aWV3TG9h
ZGVyIHsKK2NsYXNzIExlZ2FjeVByZXZpZXdMb2FkZXIgZmluYWwgOiBwcml2YXRlIFByZXZpZXdD
b252ZXJ0ZXJDbGllbnQsIHByaXZhdGUgUHJldmlld0NvbnZlcnRlclByb3ZpZGVyIHsKICAgICBX
VEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShMZWdhY3lQ
cmV2aWV3TG9hZGVyKTsKIHB1YmxpYzoKLSAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPExlZ2Fj
eVByZXZpZXdMb2FkZXI+IGNyZWF0ZShSZXNvdXJjZUxvYWRlciYsIGNvbnN0IFJlc291cmNlUmVz
cG9uc2UmKTsKKyAgICBMZWdhY3lQcmV2aWV3TG9hZGVyKFJlc291cmNlTG9hZGVyJiwgY29uc3Qg
UmVzb3VyY2VSZXNwb25zZSYpOwogICAgIH5MZWdhY3lQcmV2aWV3TG9hZGVyKCk7CiAKICAgICBi
b29sIGRpZFJlY2VpdmVSZXNwb25zZShjb25zdCBSZXNvdXJjZVJlc3BvbnNlJik7CkBAIC01NCwx
MSArNTUsMjcgQEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyB2b2lkIHNldENs
aWVudEZvclRlc3RpbmcoUmVmUHRyPExlZ2FjeVByZXZpZXdMb2FkZXJDbGllbnQ+JiYpOwogCiBw
cml2YXRlOgotICAgIGZyaWVuZCBzdGQ6OnVuaXF1ZV9wdHI8TGVnYWN5UHJldmlld0xvYWRlcj4g
c3RkOjptYWtlX3VuaXF1ZTxMZWdhY3lQcmV2aWV3TG9hZGVyPihSZXNvdXJjZUxvYWRlciYsIGNv
bnN0IFJlc291cmNlUmVzcG9uc2UmKTsKLSAgICBMZWdhY3lQcmV2aWV3TG9hZGVyKFJlc291cmNl
TG9hZGVyJiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpOworICAgIC8vIFByZXZpZXdDb252ZXJ0
ZXJDbGllbnQKKyAgICB2b2lkIHByZXZpZXdDb252ZXJ0ZXJEaWRTdGFydFVwZGF0aW5nKFByZXZp
ZXdDb252ZXJ0ZXImKSBmaW5hbCB7IH07CisgICAgdm9pZCBwcmV2aWV3Q29udmVydGVyRGlkRmlu
aXNoVXBkYXRpbmcoUHJldmlld0NvbnZlcnRlciYpIGZpbmFsIHsgfTsKKyAgICB2b2lkIHByZXZp
ZXdDb252ZXJ0ZXJEaWRGYWlsVXBkYXRpbmcoUHJldmlld0NvbnZlcnRlciYpIGZpbmFsOworICAg
IHZvaWQgcHJldmlld0NvbnZlcnRlckRpZFN0YXJ0Q29udmVydGluZyhQcmV2aWV3Q29udmVydGVy
JikgZmluYWw7CisgICAgdm9pZCBwcmV2aWV3Q29udmVydGVyRGlkUmVjZWl2ZURhdGEoUHJldmll
d0NvbnZlcnRlciYsIGNvbnN0IFNoYXJlZEJ1ZmZlciYpIGZpbmFsOworICAgIHZvaWQgcHJldmll
d0NvbnZlcnRlckRpZEZpbmlzaENvbnZlcnRpbmcoUHJldmlld0NvbnZlcnRlciYpIGZpbmFsOwor
ICAgIHZvaWQgcHJldmlld0NvbnZlcnRlckRpZEZhaWxDb252ZXJ0aW5nKFByZXZpZXdDb252ZXJ0
ZXImKSBmaW5hbDsKKworICAgIC8vIFByZXZpZXdDb252ZXJ0ZXJQcm92aWRlcgorICAgIHZvaWQg
cHJvdmlkZU1haW5SZXNvdXJjZUZvclByZXZpZXdDb252ZXJ0ZXIoUHJldmlld0NvbnZlcnRlciYs
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgU2hhcmVkQnVmZmVyKik+JiYpIGZpbmFsOwor
ICAgIHZvaWQgcHJvdmlkZVBhc3N3b3JkRm9yUHJldmlld0NvbnZlcnRlcihQcmV2aWV3Q29udmVy
dGVyJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBTdHJpbmcmKT4mJikgZmluYWw7CiAK
LSAgICBSZXRhaW5QdHI8V2ViUHJldmlld0xvYWRlcj4gbV9wcmV2aWV3TG9hZGVyOworICAgIFJl
ZlB0cjxQcmV2aWV3Q29udmVydGVyPiBtX2NvbnZlcnRlcjsKKyAgICBSZWY8TGVnYWN5UHJldmll
d0xvYWRlckNsaWVudD4gbV9jbGllbnQ7CisgICAgUmVmPFNoYXJlZEJ1ZmZlcj4gbV9vcmlnaW5h
bERhdGE7CisgICAgV2Vha1B0cjxSZXNvdXJjZUxvYWRlcj4gbV9yZXNvdXJjZUxvYWRlcjsKICAg
ICBib29sIG1fZmluaXNoZWRMb2FkaW5nRGF0YUludG9Db252ZXJ0ZXIgeyBmYWxzZSB9OworICAg
IGJvb2wgbV9oYXNQcm9jZXNzZWRSZXNwb25zZSB7IGZhbHNlIH07CisgICAgYm9vbCBtX25lZWRz
VG9DYWxsRGlkRmluaXNoTG9hZGluZyB7IGZhbHNlIH07CisgICAgYm9vbCBtX3Nob3VsZERlY2lk
ZVBvbGljeUJlZm9yZUxvYWRpbmc7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvaW9zL0xlZ2FjeVByZXZpZXdMb2FkZXIubW0g
Yi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvaW9zL0xlZ2FjeVByZXZpZXdMb2FkZXIubW0KaW5kZXgg
OTBlOTYxNmIyMGQ5NDA0MDVhNGU1MjlhYjNmM2NjNjcyYzNlNDdkMi4uYzdlN2M4YjkxZmI1NGNm
OGUxOTAxN2U3YzA4YmM1N2M1NGVhOTA5MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL2lvcy9MZWdhY3lQcmV2aWV3TG9hZGVyLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9pb3MvTGVnYWN5UHJldmlld0xvYWRlci5tbQpAQCAtMzgsMzQgKzM4LDkgQEAKICNpbXBvcnQg
IlF1aWNrTG9vay5oIgogI2ltcG9ydCAiUmVzb3VyY2VMb2FkZXIuaCIKICNpbXBvcnQgIlNldHRp
bmdzLmgiCi0jaW1wb3J0IDxwYWwvc3BpL2lvcy9RdWlja0xvb2tTUEkuaD4KICNpbXBvcnQgPHd0
Zi9OZXZlckRlc3Ryb3llZC5oPgogCi11c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKLQotQGludGVy
ZmFjZSBXZWJQcmV2aWV3TG9hZGVyIDogTlNPYmplY3QgewotICAgIFdlYWtQdHI8UmVzb3VyY2VM
b2FkZXI+IF9yZXNvdXJjZUxvYWRlcjsKLSAgICBSZXNvdXJjZVJlc3BvbnNlIF9yZXNwb25zZTsK
LSAgICBSZWZQdHI8TGVnYWN5UHJldmlld0xvYWRlckNsaWVudD4gX2NsaWVudDsKLSAgICBzdGQ6
OnVuaXF1ZV9wdHI8UHJldmlld0NvbnZlcnRlcj4gX2NvbnZlcnRlcjsKLSAgICBSZXRhaW5QdHI8
TlNNdXRhYmxlQXJyYXk+IF9idWZmZXJlZERhdGFBcnJheTsKLSAgICBCT09MIF9oYXNMb2FkZWRQ
cmV2aWV3OwotICAgIEJPT0wgX2hhc1Byb2Nlc3NlZFJlc3BvbnNlOwotICAgIFJlZlB0cjxTaGFy
ZWRCdWZmZXI+IF9idWZmZXJlZERhdGE7Ci0gICAgbG9uZyBsb25nIF9sZW5ndGhSZWNlaXZlZDsK
LSAgICBCT09MIF9uZWVkc1RvQ2FsbERpZEZpbmlzaExvYWRpbmc7Ci19Ci0KLS0gKGluc3RhbmNl
dHlwZSlpbml0V2l0aFJlc291cmNlTG9hZGVyOihSZXNvdXJjZUxvYWRlciYpcmVzb3VyY2VMb2Fk
ZXIgcmVzb3VyY2VSZXNwb25zZTooY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpcmVzb3VyY2VSZXNw
b25zZTsKLS0gKHZvaWQpYXBwZW5kRGF0YUFycmF5OihOU0FycmF5PE5TRGF0YSAqPiAqKWRhdGFB
cnJheTsKLS0gKHZvaWQpZmluaXNoZWRBcHBlbmRpbmc7Ci0tICh2b2lkKWZhaWxlZDsKLQotQHBy
b3BlcnR5IChub25hdG9taWMsIHJlYWRvbmx5KSBCT09MIHNob3VsZERlY2lkZVBvbGljeUJlZm9y
ZUxvYWRpbmc7Ci0KLUBlbmQKLQotQGltcGxlbWVudGF0aW9uIFdlYlByZXZpZXdMb2FkZXIKK25h
bWVzcGFjZSBXZWJDb3JlIHsKIAogc3RhdGljIFJlZlB0cjxMZWdhY3lQcmV2aWV3TG9hZGVyQ2xp
ZW50PiYgdGVzdGluZ0NsaWVudCgpCiB7CkBAIC03OSwyMzkgKzU0LDIwNCBAQCBzdGF0aWMgTGVn
YWN5UHJldmlld0xvYWRlckNsaWVudCYgZW1wdHlDbGllbnQoKQogICAgIHJldHVybiBlbXB0eUNs
aWVudC5nZXQoKTsKIH0KIAotLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoUmVzb3VyY2VMb2FkZXI6
KFJlc291cmNlTG9hZGVyJilyZXNvdXJjZUxvYWRlciByZXNvdXJjZVJlc3BvbnNlOihjb25zdCBS
ZXNvdXJjZVJlc3BvbnNlJilyZXNvdXJjZVJlc3BvbnNlCitzdGF0aWMgUmVmPExlZ2FjeVByZXZp
ZXdMb2FkZXJDbGllbnQ+IG1ha2VDbGllbnQoY29uc3QgUmVzb3VyY2VMb2FkZXImIGxvYWRlciwg
Y29uc3QgU3RyaW5nJiBwcmV2aWV3RmlsZU5hbWUsIGNvbnN0IFN0cmluZyYgcHJldmlld1R5cGUp
CiB7Ci0gICAgaWYgKCEoc2VsZiA9IFtzdXBlciBpbml0XSkpCi0gICAgICAgIHJldHVybiBuaWw7
Ci0KLSAgICBfcmVzb3VyY2VMb2FkZXIgPSBtYWtlV2Vha1B0cihyZXNvdXJjZUxvYWRlcik7Ci0g
ICAgX3Jlc3BvbnNlID0gcmVzb3VyY2VSZXNwb25zZTsKLSAgICBfY29udmVydGVyID0gbWFrZVVu
aXF1ZTxQcmV2aWV3Q29udmVydGVyPihzZWxmLCBfcmVzcG9uc2UpOwotICAgIF9idWZmZXJlZERh
dGFBcnJheSA9IGFkb3B0TlMoW1tOU011dGFibGVBcnJheSBhbGxvY10gaW5pdF0pOwotICAgIF9z
aG91bGREZWNpZGVQb2xpY3lCZWZvcmVMb2FkaW5nID0gcmVzb3VyY2VMb2FkZXIuZnJhbWUoKS0+
c2V0dGluZ3MoKS5zaG91bGREZWNpZGVQb2xpY3lCZWZvcmVMb2FkaW5nUXVpY2tMb29rUHJldmll
dygpOwotCi0gICAgaWYgKHRlc3RpbmdDbGllbnQoKSkKLSAgICAgICAgX2NsaWVudCA9IHRlc3Rp
bmdDbGllbnQoKTsKLSAgICBlbHNlIGlmIChhdXRvIGNsaWVudCA9IHJlc291cmNlTG9hZGVyLmZy
YW1lTG9hZGVyKCktPmNsaWVudCgpLmNyZWF0ZVByZXZpZXdMb2FkZXJDbGllbnQoX2NvbnZlcnRl
ci0+cHJldmlld0ZpbGVOYW1lKCksIF9jb252ZXJ0ZXItPnByZXZpZXdVVEkoKSkpCi0gICAgICAg
IF9jbGllbnQgPSBXVEZNb3ZlKGNsaWVudCk7Ci0gICAgZWxzZQotICAgICAgICBfY2xpZW50ID0g
JmVtcHR5Q2xpZW50KCk7Ci0KLSAgICBMT0coTmV0d29yaywgIldlYlByZXZpZXdDb252ZXJ0ZXIg
Y3JlYXRlZCB3aXRoIHByZXZpZXcgZmlsZSBuYW1lIFwiJXNcIi4iLCBfY29udmVydGVyLT5wcmV2
aWV3RmlsZU5hbWUoKS51dGY4KCkuZGF0YSgpKTsKLSAgICByZXR1cm4gc2VsZjsKKyAgICBpZiAo
YXV0byBjbGllbnQgPSB0ZXN0aW5nQ2xpZW50KCkpCisgICAgICAgIHJldHVybiBjbGllbnQucmVs
ZWFzZU5vbk51bGwoKTsKKyAgICBpZiAoYXV0byBjbGllbnQgPSBsb2FkZXIuZnJhbWVMb2FkZXIo
KS0+Y2xpZW50KCkuY3JlYXRlUHJldmlld0xvYWRlckNsaWVudChwcmV2aWV3RmlsZU5hbWUsIHBy
ZXZpZXdUeXBlKSkKKyAgICAgICAgcmV0dXJuIGNsaWVudC5yZWxlYXNlTm9uTnVsbCgpOworICAg
IHJldHVybiBlbXB0eUNsaWVudCgpOwogfQogCi0tICh2b2lkKWFwcGVuZERhdGFBcnJheTooTlNB
cnJheTxOU0RhdGEgKj4gKilkYXRhQXJyYXkKK2Jvb2wgTGVnYWN5UHJldmlld0xvYWRlcjo6ZGlk
UmVjZWl2ZUJ1ZmZlcihjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikKIHsKLSAgICBMT0coTmV0
d29yaywgIldlYlByZXZpZXdDb252ZXJ0ZXIgYXBwZW5kaW5nIGRhdGEgYXJyYXkgd2l0aCBjb3Vu
dCAlbGQuIiwgZGF0YUFycmF5LmNvdW50KTsKLSAgICBbX2NvbnZlcnRlci0+cGxhdGZvcm1Db252
ZXJ0ZXIoKSBhcHBlbmREYXRhQXJyYXk6ZGF0YUFycmF5XTsKLSAgICBbX2J1ZmZlcmVkRGF0YUFy
cmF5IGFkZE9iamVjdHNGcm9tQXJyYXk6ZGF0YUFycmF5XTsKLSAgICBfY2xpZW50LT5kaWRSZWNl
aXZlRGF0YUFycmF5KChDRkFycmF5UmVmKWRhdGFBcnJheSk7CisgICAgaWYgKG1fZmluaXNoZWRM
b2FkaW5nRGF0YUludG9Db252ZXJ0ZXIpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIExP
RyhOZXR3b3JrLCAiTGVnYWN5UHJldmlld0xvYWRlciBhcHBlbmRpbmcgYnVmZmVyIHdpdGggc2l6
ZSAlbGQuIiwgYnVmZmVyLnNpemUoKSk7CisgICAgbV9vcmlnaW5hbERhdGEtPmFwcGVuZChidWZm
ZXIpOworICAgIG1fY29udmVydGVyLT51cGRhdGVNYWluUmVzb3VyY2UoKTsKKyAgICBtX2NsaWVu
dC0+ZGlkUmVjZWl2ZURhdGFBcnJheSgoX19icmlkZ2UgQ0ZBcnJheVJlZilidWZmZXIuY3JlYXRl
TlNEYXRhQXJyYXkoKS5nZXQoKSk7CisgICAgcmV0dXJuIHRydWU7CiB9CiAKLS0gKHZvaWQpZmlu
aXNoZWRBcHBlbmRpbmcKK2Jvb2wgTGVnYWN5UHJldmlld0xvYWRlcjo6ZGlkRmluaXNoTG9hZGlu
ZygpCiB7Ci0gICAgTE9HKE5ldHdvcmssICJXZWJQcmV2aWV3Q29udmVydGVyIGZpbmlzaGVkIGFw
cGVuZGluZyBkYXRhLiIpOwotICAgIFtfY29udmVydGVyLT5wbGF0Zm9ybUNvbnZlcnRlcigpIGZp
bmlzaGVkQXBwZW5kaW5nRGF0YV07Ci0gICAgX2NsaWVudC0+ZGlkRmluaXNoTG9hZGluZygpOwor
ICAgIGlmIChtX2ZpbmlzaGVkTG9hZGluZ0RhdGFJbnRvQ29udmVydGVyKQorICAgICAgICByZXR1
cm4gZmFsc2U7CisKKyAgICBMT0coTmV0d29yaywgIkxlZ2FjeVByZXZpZXdMb2FkZXIgZmluaXNo
ZWQgYXBwZW5kaW5nIGRhdGEuIik7CisgICAgbV9maW5pc2hlZExvYWRpbmdEYXRhSW50b0NvbnZl
cnRlciA9IHRydWU7CisgICAgbV9jb252ZXJ0ZXItPmZpbmlzaFVwZGF0aW5nKCk7CisgICAgbV9j
bGllbnQtPmRpZEZpbmlzaExvYWRpbmcoKTsKKyAgICByZXR1cm4gdHJ1ZTsKIH0KIAotLSAodm9p
ZClmYWlsZWQKK3ZvaWQgTGVnYWN5UHJldmlld0xvYWRlcjo6ZGlkRmFpbCgpCiB7Ci0gICAgTE9H
KE5ldHdvcmssICJXZWJQcmV2aWV3Q29udmVydGVyIGZhaWxlZC4iKTsKLSAgICBbX2NvbnZlcnRl
ci0+cGxhdGZvcm1Db252ZXJ0ZXIoKSBmaW5pc2hDb252ZXJ0aW5nXTsKLSAgICBfY2xpZW50LT5k
aWRGYWlsKCk7CisgICAgaWYgKG1fZmluaXNoZWRMb2FkaW5nRGF0YUludG9Db252ZXJ0ZXIpCisg
ICAgICAgIHJldHVybjsKKworICAgIExPRyhOZXR3b3JrLCAiTGVnYWN5UHJldmlld0xvYWRlciBm
YWlsZWQuIik7CisgICAgbV9maW5pc2hlZExvYWRpbmdEYXRhSW50b0NvbnZlcnRlciA9IHRydWU7
CisgICAgbV9jb252ZXJ0ZXItPmZhaWxlZFVwZGF0aW5nKCk7CisgICAgbV9jbGllbnQtPmRpZEZh
aWwoKTsKKyAgICBtX2NvbnZlcnRlciA9IG51bGxwdHI7CiB9CiAKLS0gKHZvaWQpX2xvYWRQcmV2
aWV3SWZOZWVkZWQKK3ZvaWQgTGVnYWN5UHJldmlld0xvYWRlcjo6cHJldmlld0NvbnZlcnRlckRp
ZFN0YXJ0Q29udmVydGluZyhQcmV2aWV3Q29udmVydGVyJiBjb252ZXJ0ZXIpCiB7Ci0gICAgaWYg
KCFfcmVzb3VyY2VMb2FkZXIpCisgICAgYXV0byByZXNvdXJjZUxvYWRlciA9IG1fcmVzb3VyY2VM
b2FkZXIuZ2V0KCk7CisgICAgaWYgKCFyZXNvdXJjZUxvYWRlcikKICAgICAgICAgcmV0dXJuOwog
Ci0gICAgQVNTRVJUKCFfcmVzb3VyY2VMb2FkZXItPnJlYWNoZWRUZXJtaW5hbFN0YXRlKCkpOwot
ICAgIGlmIChfaGFzTG9hZGVkUHJldmlldykKKyAgICBpZiAocmVzb3VyY2VMb2FkZXItPnJlYWNo
ZWRUZXJtaW5hbFN0YXRlKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIF9oYXNMb2FkZWRQcmV2
aWV3ID0gWUVTOwotICAgIFtfYnVmZmVyZWREYXRhQXJyYXkgcmVtb3ZlQWxsT2JqZWN0c107Ci0K
LSAgICBSZXNvdXJjZVJlc3BvbnNlIHJlc3BvbnNlIHsgX2NvbnZlcnRlci0+cHJldmlld1Jlc3Bv
bnNlKCkgfTsKLSAgICByZXNwb25zZS5zZXRJc1F1aWNrTG9vayh0cnVlKTsKLSAgICBBU1NFUlQo
cmVzcG9uc2UubWltZVR5cGUoKS5sZW5ndGgoKSk7Ci0KLSAgICBfcmVzb3VyY2VMb2FkZXItPmRv
Y3VtZW50TG9hZGVyKCktPnNldFByZXZpZXdDb252ZXJ0ZXIoV1RGTW92ZShfY29udmVydGVyKSk7
CisgICAgQVNTRVJUKCFtX2hhc1Byb2Nlc3NlZFJlc3BvbnNlKTsKKyAgICBtX29yaWdpbmFsRGF0
YS0+Y2xlYXIoKTsKKyAgICByZXNvdXJjZUxvYWRlci0+ZG9jdW1lbnRMb2FkZXIoKS0+c2V0UHJl
dmlld0NvbnZlcnRlcihXVEZNb3ZlKG1fY29udmVydGVyKSk7CisgICAgYXV0byByZXNwb25zZSB7
IGNvbnZlcnRlci5wcmV2aWV3UmVzcG9uc2UoKSB9OwogCi0gICAgaWYgKF9zaG91bGREZWNpZGVQ
b2xpY3lCZWZvcmVMb2FkaW5nKSB7Ci0gICAgICAgIF9oYXNQcm9jZXNzZWRSZXNwb25zZSA9IFlF
UzsKLSAgICAgICAgX3Jlc291cmNlTG9hZGVyLT5kaWRSZWNlaXZlUHJldmlld1Jlc3BvbnNlKHJl
c3BvbnNlKTsKKyAgICBpZiAobV9zaG91bGREZWNpZGVQb2xpY3lCZWZvcmVMb2FkaW5nKSB7Cisg
ICAgICAgIG1faGFzUHJvY2Vzc2VkUmVzcG9uc2UgPSB0cnVlOworICAgICAgICByZXNvdXJjZUxv
YWRlci0+ZGlkUmVjZWl2ZVByZXZpZXdSZXNwb25zZShyZXNwb25zZSk7CiAgICAgICAgIHJldHVy
bjsKICAgICB9CiAKLSAgICBfaGFzUHJvY2Vzc2VkUmVzcG9uc2UgPSBOTzsKLSAgICBfcmVzb3Vy
Y2VMb2FkZXItPmRpZFJlY2VpdmVSZXNwb25zZShyZXNwb25zZSwgW3NlbGYsIHJldGFpbmVkU2Vs
ZiA9IHJldGFpblB0cihzZWxmKV0gewotICAgICAgICBfaGFzUHJvY2Vzc2VkUmVzcG9uc2UgPSBZ
RVM7CisgICAgcmVzb3VyY2VMb2FkZXItPmRpZFJlY2VpdmVSZXNwb25zZShyZXNwb25zZSwgW3Ro
aXMsIHdlYWtUaGlzID0gbWFrZVdlYWtQdHIoc3RhdGljX2Nhc3Q8UHJldmlld0NvbnZlcnRlckNs
aWVudCY+KCp0aGlzKSksIGNvbnZlcnRlciA9IG1ha2VSZWYoY29udmVydGVyKV0geworICAgICAg
ICBpZiAoIXdlYWtUaGlzKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIG1faGFzUHJv
Y2Vzc2VkUmVzcG9uc2UgPSB0cnVlOwogCi0gICAgICAgIGlmICghX3Jlc291cmNlTG9hZGVyKQor
ICAgICAgICBhdXRvIHJlc291cmNlTG9hZGVyID0gbV9yZXNvdXJjZUxvYWRlci5nZXQoKTsKKyAg
ICAgICAgaWYgKCFyZXNvdXJjZUxvYWRlcikKICAgICAgICAgICAgIHJldHVybjsKIAotICAgICAg
ICBpZiAoX3Jlc291cmNlTG9hZGVyLT5yZWFjaGVkVGVybWluYWxTdGF0ZSgpKQorICAgICAgICBp
ZiAocmVzb3VyY2VMb2FkZXItPnJlYWNoZWRUZXJtaW5hbFN0YXRlKCkpCiAgICAgICAgICAgICBy
ZXR1cm47CiAKLSAgICAgICAgaWYgKGF1dG8gYnVmZmVyZWREYXRhID0gV1RGTW92ZShfYnVmZmVy
ZWREYXRhKSkgewotICAgICAgICAgICAgX3Jlc291cmNlTG9hZGVyLT5kaWRSZWNlaXZlRGF0YShi
dWZmZXJlZERhdGEtPmRhdGEoKSwgYnVmZmVyZWREYXRhLT5zaXplKCksIF9sZW5ndGhSZWNlaXZl
ZCwgRGF0YVBheWxvYWRCeXRlcyk7Ci0gICAgICAgICAgICBfbGVuZ3RoUmVjZWl2ZWQgPSAwOwor
ICAgICAgICBpZiAoIWNvbnZlcnRlci0+cHJldmlld0RhdGEoKS5pc0VtcHR5KCkpIHsKKyAgICAg
ICAgICAgIGF1dG8gYnVmZmVyU2l6ZSA9IGNvbnZlcnRlci0+cHJldmlld0RhdGEoKS5zaXplKCk7
CisgICAgICAgICAgICByZXNvdXJjZUxvYWRlci0+ZGlkUmVjZWl2ZUJ1ZmZlcihjb252ZXJ0ZXIt
PnByZXZpZXdEYXRhKCkuY29weSgpLCBidWZmZXJTaXplLCBEYXRhUGF5bG9hZEJ5dGVzKTsKICAg
ICAgICAgfQogCi0gICAgICAgIGlmIChfcmVzb3VyY2VMb2FkZXItPnJlYWNoZWRUZXJtaW5hbFN0
YXRlKCkpCisgICAgICAgIGlmIChyZXNvdXJjZUxvYWRlci0+cmVhY2hlZFRlcm1pbmFsU3RhdGUo
KSkKICAgICAgICAgICAgIHJldHVybjsKIAotICAgICAgICBpZiAoX25lZWRzVG9DYWxsRGlkRmlu
aXNoTG9hZGluZykgewotICAgICAgICAgICAgX25lZWRzVG9DYWxsRGlkRmluaXNoTG9hZGluZyA9
IE5POwotICAgICAgICAgICAgX3Jlc291cmNlTG9hZGVyLT5kaWRGaW5pc2hMb2FkaW5nKE5ldHdv
cmtMb2FkTWV0cmljcyB7IH0pOworICAgICAgICBpZiAobV9uZWVkc1RvQ2FsbERpZEZpbmlzaExv
YWRpbmcpIHsKKyAgICAgICAgICAgIG1fbmVlZHNUb0NhbGxEaWRGaW5pc2hMb2FkaW5nID0gZmFs
c2U7CisgICAgICAgICAgICByZXNvdXJjZUxvYWRlci0+ZGlkRmluaXNoTG9hZGluZyhOZXR3b3Jr
TG9hZE1ldHJpY3MgeyB9KTsKICAgICAgICAgfQogICAgIH0pOwogfQogCi0tICh2b2lkKWNvbm5l
Y3Rpb246KE5TVVJMQ29ubmVjdGlvbiAqKWNvbm5lY3Rpb24gZGlkUmVjZWl2ZURhdGE6KE5TRGF0
YSAqKWRhdGEgbGVuZ3RoUmVjZWl2ZWQ6KGxvbmcgbG9uZylsZW5ndGhSZWNlaXZlZAordm9pZCBM
ZWdhY3lQcmV2aWV3TG9hZGVyOjpwcmV2aWV3Q29udmVydGVyRGlkUmVjZWl2ZURhdGEoUHJldmll
d0NvbnZlcnRlciYsIGNvbnN0IFNoYXJlZEJ1ZmZlciYgZGF0YSkKIHsKLSAgICBpZiAoIV9yZXNv
dXJjZUxvYWRlcikKKyAgICBhdXRvIHJlc291cmNlTG9hZGVyID0gbV9yZXNvdXJjZUxvYWRlci5n
ZXQoKTsKKyAgICBpZiAoIXJlc291cmNlTG9hZGVyKQogICAgICAgICByZXR1cm47CiAKLSAgICBB
U1NFUlRfVU5VU0VEKGNvbm5lY3Rpb24sICFjb25uZWN0aW9uKTsKLSAgICBpZiAoX3Jlc291cmNl
TG9hZGVyLT5yZWFjaGVkVGVybWluYWxTdGF0ZSgpKQorICAgIGlmIChyZXNvdXJjZUxvYWRlci0+
cmVhY2hlZFRlcm1pbmFsU3RhdGUoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgW3NlbGYgX2xv
YWRQcmV2aWV3SWZOZWVkZWRdOwotCi0gICAgYXV0byBkYXRhTGVuZ3RoID0gZGF0YS5sZW5ndGg7
Ci0KLSAgICAvLyBRdWlja0xvb2sgY29kZSBzZW5kcyB1cyBhIG5pbCBkYXRhIGF0IHRpbWVzLiBU
aGUgY2hlY2sgYmVsb3cgaXMgdGhlIHNhbWUgYXMgdGhlIG9uZSBpbgotICAgIC8vIFJlc291cmNl
SGFuZGxlTWFjLmNwcCBhZGRlZCBmb3IgYSBkaWZmZXJlbnQgYnVnLgotICAgIGlmICghZGF0YUxl
bmd0aCkKKyAgICBpZiAoZGF0YS5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIGlm
IChfaGFzUHJvY2Vzc2VkUmVzcG9uc2UpIHsKLSAgICAgICAgX3Jlc291cmNlTG9hZGVyLT5kaWRS
ZWNlaXZlRGF0YShyZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIqPihkYXRhLmJ5dGVzKSwgZGF0
YUxlbmd0aCwgbGVuZ3RoUmVjZWl2ZWQsIERhdGFQYXlsb2FkQnl0ZXMpOworICAgIGlmICghbV9o
YXNQcm9jZXNzZWRSZXNwb25zZSkKICAgICAgICAgcmV0dXJuOwotICAgIH0KIAotICAgIGlmICgh
X2J1ZmZlcmVkRGF0YSkKLSAgICAgICAgX2J1ZmZlcmVkRGF0YSA9IFNoYXJlZEJ1ZmZlcjo6Y3Jl
YXRlKGRhdGEpOwotICAgIGVsc2UKLSAgICAgICAgX2J1ZmZlcmVkRGF0YS0+YXBwZW5kKGRhdGEp
OwotICAgIF9sZW5ndGhSZWNlaXZlZCArPSBsZW5ndGhSZWNlaXZlZDsKKyAgICBhdXRvIGRhdGFD
b3B5ID0gZGF0YS5jb3B5KCk7CisgICAgcmVzb3VyY2VMb2FkZXItPmRpZFJlY2VpdmVCdWZmZXIo
V1RGTW92ZShkYXRhQ29weSksIGRhdGFDb3B5LT5zaXplKCksIERhdGFQYXlsb2FkQnl0ZXMpOwog
fQogCi0tICh2b2lkKWNvbm5lY3Rpb25EaWRGaW5pc2hMb2FkaW5nOihOU1VSTENvbm5lY3Rpb24g
Kiljb25uZWN0aW9uCit2b2lkIExlZ2FjeVByZXZpZXdMb2FkZXI6OnByZXZpZXdDb252ZXJ0ZXJE
aWRGaW5pc2hDb252ZXJ0aW5nKFByZXZpZXdDb252ZXJ0ZXImKQogewotICAgIGlmICghX3Jlc291
cmNlTG9hZGVyKQorICAgIGF1dG8gcmVzb3VyY2VMb2FkZXIgPSBtX3Jlc291cmNlTG9hZGVyLmdl
dCgpOworICAgIGlmICghcmVzb3VyY2VMb2FkZXIpCiAgICAgICAgIHJldHVybjsKIAotICAgIEFT
U0VSVF9VTlVTRUQoY29ubmVjdGlvbiwgIWNvbm5lY3Rpb24pOwotICAgIGlmIChfcmVzb3VyY2VM
b2FkZXItPnJlYWNoZWRUZXJtaW5hbFN0YXRlKCkpCisgICAgaWYgKHJlc291cmNlTG9hZGVyLT5y
ZWFjaGVkVGVybWluYWxTdGF0ZSgpKQogICAgICAgICByZXR1cm47Ci0gICAgCi0gICAgQVNTRVJU
KF9oYXNMb2FkZWRQcmV2aWV3KTsKIAotICAgIGlmICghX2hhc1Byb2Nlc3NlZFJlc3BvbnNlKSB7
Ci0gICAgICAgIF9uZWVkc1RvQ2FsbERpZEZpbmlzaExvYWRpbmcgPSBZRVM7CisgICAgaWYgKCFt
X2hhc1Byb2Nlc3NlZFJlc3BvbnNlKSB7CisgICAgICAgIG1fbmVlZHNUb0NhbGxEaWRGaW5pc2hM
b2FkaW5nID0gdHJ1ZTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIF9yZXNvdXJjZUxv
YWRlci0+ZGlkRmluaXNoTG9hZGluZyhOZXR3b3JrTG9hZE1ldHJpY3MgeyB9KTsKKyAgICByZXNv
dXJjZUxvYWRlci0+ZGlkRmluaXNoTG9hZGluZyhOZXR3b3JrTG9hZE1ldHJpY3MgeyB9KTsKIH0K
IAotc3RhdGljIGlubGluZSBib29sIGlzUXVpY2tMb29rUGFzc3dvcmRFcnJvcihOU0Vycm9yICpl
cnJvcikKK3ZvaWQgTGVnYWN5UHJldmlld0xvYWRlcjo6cHJldmlld0NvbnZlcnRlckRpZEZhaWxV
cGRhdGluZyhQcmV2aWV3Q29udmVydGVyJikKIHsKLSAgICByZXR1cm4gZXJyb3IuY29kZSA9PSBr
UUxSZXR1cm5QYXNzd29yZFByb3RlY3RlZCAmJiBbZXJyb3IuZG9tYWluIGlzRXF1YWxUb1N0cmlu
ZzpAIlF1aWNrTG9va0Vycm9yRG9tYWluIl07CisgICAgaWYgKGF1dG8gcmVzb3VyY2VMb2FkZXIg
PSBtX3Jlc291cmNlTG9hZGVyLmdldCgpKQorICAgICAgICByZXNvdXJjZUxvYWRlci0+ZGlkRmFp
bChyZXNvdXJjZUxvYWRlci0+Y2Fubm90U2hvd1VSTEVycm9yKCkpOwogfQogCi0tICh2b2lkKWNv
bm5lY3Rpb246KE5TVVJMQ29ubmVjdGlvbiAqKWNvbm5lY3Rpb24gZGlkRmFpbFdpdGhFcnJvcjoo
TlNFcnJvciAqKWVycm9yCit2b2lkIExlZ2FjeVByZXZpZXdMb2FkZXI6OnByZXZpZXdDb252ZXJ0
ZXJEaWRGYWlsQ29udmVydGluZyhQcmV2aWV3Q29udmVydGVyJiBjb252ZXJ0ZXIpCiB7Ci0gICAg
aWYgKCFfcmVzb3VyY2VMb2FkZXIpCisgICAgYXV0byByZXNvdXJjZUxvYWRlciA9IG1fcmVzb3Vy
Y2VMb2FkZXIuZ2V0KCk7CisgICAgaWYgKCFyZXNvdXJjZUxvYWRlcikKICAgICAgICAgcmV0dXJu
OwogCi0gICAgQVNTRVJUX1VOVVNFRChjb25uZWN0aW9uLCAhY29ubmVjdGlvbik7Ci0gICAgaWYg
KF9yZXNvdXJjZUxvYWRlci0+cmVhY2hlZFRlcm1pbmFsU3RhdGUoKSkKKyAgICBpZiAocmVzb3Vy
Y2VMb2FkZXItPnJlYWNoZWRUZXJtaW5hbFN0YXRlKCkpCiAgICAgICAgIHJldHVybjsKIAotICAg
IGlmICghaXNRdWlja0xvb2tQYXNzd29yZEVycm9yKGVycm9yKSkgewotICAgICAgICBfcmVzb3Vy
Y2VMb2FkZXItPmRpZEZhaWwoZXJyb3IpOworICAgIHJlc291cmNlTG9hZGVyLT5kaWRGYWlsKGNv
bnZlcnRlci5wcmV2aWV3RXJyb3IoKSk7Cit9CisKK3ZvaWQgTGVnYWN5UHJldmlld0xvYWRlcjo6
cHJvdmlkZVBhc3N3b3JkRm9yUHJldmlld0NvbnZlcnRlcihQcmV2aWV3Q29udmVydGVyJiBjb252
ZXJ0ZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgU3RyaW5nJik+JiYgY29tcGxldGlv
bkhhbmRsZXIpCit7CisgICAgQVNTRVJUX1VOVVNFRChjb252ZXJ0ZXIsICZjb252ZXJ0ZXIgPT0g
bV9jb252ZXJ0ZXIpOworCisgICAgYXV0byByZXNvdXJjZUxvYWRlciA9IG1fcmVzb3VyY2VMb2Fk
ZXIuZ2V0KCk7CisgICAgaWYgKCFyZXNvdXJjZUxvYWRlcikgeworICAgICAgICBjb21wbGV0aW9u
SGFuZGxlcih7IH0pOwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgaWYgKCFfY2xpZW50
LT5zdXBwb3J0c1Bhc3N3b3JkRW50cnkoKSkgewotICAgICAgICBfcmVzb3VyY2VMb2FkZXItPmRp
ZEZhaWwoX3Jlc291cmNlTG9hZGVyLT5jYW5ub3RTaG93VVJMRXJyb3IoKSk7CisgICAgaWYgKHJl
c291cmNlTG9hZGVyLT5yZWFjaGVkVGVybWluYWxTdGF0ZSgpKSB7CisgICAgICAgIGNvbXBsZXRp
b25IYW5kbGVyKHsgfSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBfY2xpZW50LT5k
aWRSZXF1ZXN0UGFzc3dvcmQoW3NlbGYsIHJldGFpbmVkU2VsZiA9IHJldGFpblB0cihzZWxmKV0g
KGNvbnN0IFN0cmluZyYgcGFzc3dvcmQpIHsKLSAgICAgICAgX2NvbnZlcnRlciA9IG1ha2VVbmlx
dWU8UHJldmlld0NvbnZlcnRlcj4oc2VsZiwgX3Jlc3BvbnNlLCBwYXNzd29yZCk7Ci0gICAgICAg
IFtfY29udmVydGVyLT5wbGF0Zm9ybUNvbnZlcnRlcigpIGFwcGVuZERhdGFBcnJheTpfYnVmZmVy
ZWREYXRhQXJyYXkuZ2V0KCldOwotICAgICAgICBbX2NvbnZlcnRlci0+cGxhdGZvcm1Db252ZXJ0
ZXIoKSBmaW5pc2hlZEFwcGVuZGluZ0RhdGFdOwotICAgIH0pOwotfQotCi1AZW5kCi0KLW5hbWVz
cGFjZSBXZWJDb3JlIHsKKyAgICBpZiAoIW1fY2xpZW50LT5zdXBwb3J0c1Bhc3N3b3JkRW50cnko
KSkgeworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcih7IH0pOworICAgICAgICByZXR1cm47Cisg
ICAgfQogCi1MZWdhY3lQcmV2aWV3TG9hZGVyOjpMZWdhY3lQcmV2aWV3TG9hZGVyKFJlc291cmNl
TG9hZGVyJiBsb2FkZXIsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKQotICAgIDog
bV9wcmV2aWV3TG9hZGVyIHsgYWRvcHROUyhbW1dlYlByZXZpZXdMb2FkZXIgYWxsb2NdIGluaXRX
aXRoUmVzb3VyY2VMb2FkZXI6bG9hZGVyIHJlc291cmNlUmVzcG9uc2U6cmVzcG9uc2VdKSB9Ci17
CisgICAgbV9jbGllbnQtPmRpZFJlcXVlc3RQYXNzd29yZChXVEZNb3ZlKGNvbXBsZXRpb25IYW5k
bGVyKSk7CiB9CiAKLUxlZ2FjeVByZXZpZXdMb2FkZXI6On5MZWdhY3lQcmV2aWV3TG9hZGVyKCkK
K3ZvaWQgTGVnYWN5UHJldmlld0xvYWRlcjo6cHJvdmlkZU1haW5SZXNvdXJjZUZvclByZXZpZXdD
b252ZXJ0ZXIoUHJldmlld0NvbnZlcnRlciYgY29udmVydGVyLCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKGNvbnN0IFNoYXJlZEJ1ZmZlciopPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogeworICAgIEFT
U0VSVF9VTlVTRUQoY29udmVydGVyLCAmY29udmVydGVyID09IG1fY29udmVydGVyKTsKKyAgICBj
b21wbGV0aW9uSGFuZGxlcihtX29yaWdpbmFsRGF0YS5wdHIoKSk7CiB9CiAKLXN0ZDo6dW5pcXVl
X3B0cjxMZWdhY3lQcmV2aWV3TG9hZGVyPiBMZWdhY3lQcmV2aWV3TG9hZGVyOjpjcmVhdGUoUmVz
b3VyY2VMb2FkZXImIGxvYWRlciwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UpCi17
Ci0gICAgQVNTRVJUKFByZXZpZXdDb252ZXJ0ZXI6OnN1cHBvcnRzTUlNRVR5cGUocmVzcG9uc2Uu
bWltZVR5cGUoKSkpOwotICAgIHJldHVybiBtYWtlVW5pcXVlPExlZ2FjeVByZXZpZXdMb2FkZXI+
KGxvYWRlciwgcmVzcG9uc2UpOwotfQorTGVnYWN5UHJldmlld0xvYWRlcjo6fkxlZ2FjeVByZXZp
ZXdMb2FkZXIoKSA9IGRlZmF1bHQ7CiAKLWJvb2wgTGVnYWN5UHJldmlld0xvYWRlcjo6ZGlkUmVj
ZWl2ZVJlc3BvbnNlKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKQorTGVnYWN5UHJldmlld0xvYWRl
cjo6TGVnYWN5UHJldmlld0xvYWRlcihSZXNvdXJjZUxvYWRlciYgbG9hZGVyLCBjb25zdCBSZXNv
dXJjZVJlc3BvbnNlJiByZXNwb25zZSkKKyAgICA6IG1fY29udmVydGVyIHsgUHJldmlld0NvbnZl
cnRlcjo6Y3JlYXRlKHJlc3BvbnNlLCAqdGhpcykgfQorICAgICwgbV9jbGllbnQgeyBtYWtlQ2xp
ZW50KGxvYWRlciwgbV9jb252ZXJ0ZXItPnByZXZpZXdGaWxlTmFtZSgpLCBtX2NvbnZlcnRlci0+
cHJldmlld1VUSSgpKSB9CisgICAgLCBtX29yaWdpbmFsRGF0YSB7IFNoYXJlZEJ1ZmZlcjo6Y3Jl
YXRlKCkgfQorICAgICwgbV9yZXNvdXJjZUxvYWRlciB7IG1ha2VXZWFrUHRyKGxvYWRlcikgfQor
ICAgICwgbV9zaG91bGREZWNpZGVQb2xpY3lCZWZvcmVMb2FkaW5nIHsgbG9hZGVyLmZyYW1lKCkt
PnNldHRpbmdzKCkuc2hvdWxkRGVjaWRlUG9saWN5QmVmb3JlTG9hZGluZ1F1aWNrTG9va1ByZXZp
ZXcoKSB9CiB7Ci0gICAgcmV0dXJuICFbbV9wcmV2aWV3TG9hZGVyIHNob3VsZERlY2lkZVBvbGlj
eUJlZm9yZUxvYWRpbmddOworICAgIEFTU0VSVChQcmV2aWV3Q29udmVydGVyOjpzdXBwb3J0c01J
TUVUeXBlKHJlc3BvbnNlLm1pbWVUeXBlKCkpKTsKKyAgICBtX2NvbnZlcnRlci0+YWRkQ2xpZW50
KCp0aGlzKTsKKyAgICBMT0coTmV0d29yaywgIkxlZ2FjeVByZXZpZXdMb2FkZXIgY3JlYXRlZCB3
aXRoIHByZXZpZXcgZmlsZSBuYW1lIFwiJXNcIi4iLCBtX2NvbnZlcnRlci0+cHJldmlld0ZpbGVO
YW1lKCkudXRmOCgpLmRhdGEoKSk7CiB9CiAKIGJvb2wgTGVnYWN5UHJldmlld0xvYWRlcjo6ZGlk
UmVjZWl2ZURhdGEoY29uc3QgY2hhciogZGF0YSwgdW5zaWduZWQgbGVuZ3RoKQogewotICAgIGlm
IChtX2ZpbmlzaGVkTG9hZGluZ0RhdGFJbnRvQ29udmVydGVyKQotICAgICAgICByZXR1cm4gZmFs
c2U7Ci0KLSAgICBbbV9wcmV2aWV3TG9hZGVyIGFwcGVuZERhdGFBcnJheTpAWyBbTlNEYXRhIGRh
dGFXaXRoQnl0ZXM6ZGF0YSBsZW5ndGg6bGVuZ3RoXSBdXTsKLSAgICByZXR1cm4gdHJ1ZTsKKyAg
ICByZXR1cm4gZGlkUmVjZWl2ZUJ1ZmZlcihTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRhLCBsZW5n
dGgpLmdldCgpKTsKIH0KIAotYm9vbCBMZWdhY3lQcmV2aWV3TG9hZGVyOjpkaWRSZWNlaXZlQnVm
ZmVyKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQotewotICAgIGlmIChtX2ZpbmlzaGVkTG9h
ZGluZ0RhdGFJbnRvQ29udmVydGVyKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBbbV9w
cmV2aWV3TG9hZGVyIGFwcGVuZERhdGFBcnJheTpidWZmZXIuY3JlYXRlTlNEYXRhQXJyYXkoKS5n
ZXQoKV07Ci0gICAgcmV0dXJuIHRydWU7Ci19Ci0KLWJvb2wgTGVnYWN5UHJldmlld0xvYWRlcjo6
ZGlkRmluaXNoTG9hZGluZygpCi17Ci0gICAgaWYgKG1fZmluaXNoZWRMb2FkaW5nRGF0YUludG9D
b252ZXJ0ZXIpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIG1fZmluaXNoZWRMb2FkaW5n
RGF0YUludG9Db252ZXJ0ZXIgPSB0cnVlOwotICAgIFttX3ByZXZpZXdMb2FkZXIgZmluaXNoZWRB
cHBlbmRpbmddOwotICAgIHJldHVybiB0cnVlOwotfQotCi12b2lkIExlZ2FjeVByZXZpZXdMb2Fk
ZXI6OmRpZEZhaWwoKQorYm9vbCBMZWdhY3lQcmV2aWV3TG9hZGVyOjpkaWRSZWNlaXZlUmVzcG9u
c2UoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpCiB7Ci0gICAgaWYgKG1fZmluaXNoZWRMb2FkaW5n
RGF0YUludG9Db252ZXJ0ZXIpCi0gICAgICAgIHJldHVybjsKLQotICAgIG1fZmluaXNoZWRMb2Fk
aW5nRGF0YUludG9Db252ZXJ0ZXIgPSB0cnVlOwotICAgIFttX3ByZXZpZXdMb2FkZXIgZmFpbGVk
XTsKLSAgICBtX3ByZXZpZXdMb2FkZXIgPSBudWxscHRyOworICAgIHJldHVybiAhbV9zaG91bGRE
ZWNpZGVQb2xpY3lCZWZvcmVMb2FkaW5nOwogfQogCiB2b2lkIExlZ2FjeVByZXZpZXdMb2FkZXI6
OnNldENsaWVudEZvclRlc3RpbmcoUmVmUHRyPExlZ2FjeVByZXZpZXdMb2FkZXJDbGllbnQ+JiYg
Y2xpZW50KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUHJldmlld0NvbnZl
cnRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QcmV2aWV3Q29udmVydGVyLmNwcApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi5mZGJmNzM4MDE4NDZiZGM0ZTdkZmI1ZmFhNzUyYjUwM2UzMWEwZWMwCi0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUHJldmlld0NvbnZlcnRlci5j
cHAKQEAgLTAsMCArMSwyOTggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAq
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisj
aW5jbHVkZSAiUHJldmlld0NvbnZlcnRlci5oIgorCisjaWYgRU5BQkxFKFBSRVZJRVdfQ09OVkVS
VEVSKQorCisjaW5jbHVkZSAiUHJldmlld0NvbnZlcnRlckNsaWVudC5oIgorI2luY2x1ZGUgIlBy
ZXZpZXdDb252ZXJ0ZXJQcm92aWRlci5oIgorI2luY2x1ZGUgIlNoYXJlZEJ1ZmZlci5oIgorI2lu
Y2x1ZGUgPHd0Zi9SdW5Mb29wLmg+CisjaW5jbHVkZSA8d3RmL1NldEZvclNjb3BlLmg+CisKK25h
bWVzcGFjZSBXZWJDb3JlIHsKKworUHJldmlld0NvbnZlcnRlcjo6flByZXZpZXdDb252ZXJ0ZXIo
KSA9IGRlZmF1bHQ7CisKK2Jvb2wgUHJldmlld0NvbnZlcnRlcjo6c3VwcG9ydHNNSU1FVHlwZShj
b25zdCBTdHJpbmcmIG1pbWVUeXBlKQoreworICAgIGlmIChtaW1lVHlwZS5pc051bGwoKSkKKyAg
ICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgaWYgKGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlD
YXNlKG1pbWVUeXBlLCAidGV4dC9odG1sIikgfHwgZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNh
c2UobWltZVR5cGUsICJ0ZXh0L3BsYWluIikpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAg
IHN0YXRpYyBOZXZlckRlc3Ryb3llZDxIYXNoU2V0PFN0cmluZywgQVNDSUlDYXNlSW5zZW5zaXRp
dmVIYXNoPj4gc3VwcG9ydGVkTUlNRVR5cGVzID0gcGxhdGZvcm1TdXBwb3J0ZWRNSU1FVHlwZXMo
KTsKKyAgICByZXR1cm4gc3VwcG9ydGVkTUlNRVR5cGVzLT5jb250YWlucyhtaW1lVHlwZSk7Cit9
CisKK1Jlc291cmNlUmVzcG9uc2UgUHJldmlld0NvbnZlcnRlcjo6cHJldmlld1Jlc3BvbnNlKCkg
Y29uc3QKK3sKKyAgICBhdXRvIHJlc3BvbnNlID0gcGxhdGZvcm1QcmV2aWV3UmVzcG9uc2UoKTsK
KyAgICBBU1NFUlQocmVzcG9uc2UubWltZVR5cGUoKS5sZW5ndGgoKSk7CisgICAgcmVzcG9uc2Uu
c2V0SXNRdWlja0xvb2sodHJ1ZSk7CisgICAgcmV0dXJuIHJlc3BvbnNlOworfQorCitjb25zdCBS
ZXNvdXJjZUVycm9yJiBQcmV2aWV3Q29udmVydGVyOjpwcmV2aWV3RXJyb3IoKSBjb25zdAorewor
ICAgIHJldHVybiBtX3ByZXZpZXdFcnJvcjsKK30KKworY29uc3QgU2hhcmVkQnVmZmVyJiBQcmV2
aWV3Q29udmVydGVyOjpwcmV2aWV3RGF0YSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fcHJldmll
d0RhdGEuZ2V0KCk7Cit9CisKK3ZvaWQgUHJldmlld0NvbnZlcnRlcjo6dXBkYXRlTWFpblJlc291
cmNlKCkKK3sKKyAgICBpZiAobV9pc0luQ2xpZW50Q2FsbGJhY2spCisgICAgICAgIHJldHVybjsK
KworICAgIGlmIChtX3N0YXRlICE9IFN0YXRlOjpVcGRhdGluZykKKyAgICAgICAgcmV0dXJuOwor
CisgICAgYXV0byBwcm92aWRlciA9IG1fcHJvdmlkZXIuZ2V0KCk7CisgICAgaWYgKCFwcm92aWRl
cikgeworICAgICAgICBmYWlsZWRVcGRhdGluZygpOworICAgICAgICByZXR1cm47CisgICAgfQor
CisgICAgcHJvdmlkZXItPnByb3ZpZGVNYWluUmVzb3VyY2VGb3JQcmV2aWV3Q29udmVydGVyKCp0
aGlzLCBbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpXShhdXRvIGJ1ZmZlcikg
eworICAgICAgICBpZiAoYnVmZmVyKQorICAgICAgICAgICAgYXBwZW5kRnJvbUJ1ZmZlcigqYnVm
ZmVyKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgZmFpbGVkVXBkYXRpbmcoKTsKKyAgICB9
KTsKK30KKwordm9pZCBQcmV2aWV3Q29udmVydGVyOjphcHBlbmRGcm9tQnVmZmVyKGNvbnN0IFNo
YXJlZEJ1ZmZlciYgYnVmZmVyKQoreworICAgIHdoaWxlIChidWZmZXIuc2l6ZSgpID4gbV9sZW5n
dGhBcHBlbmRlZCkgeworICAgICAgICBhdXRvIG5ld0RhdGEgPSBidWZmZXIuZ2V0U29tZURhdGEo
bV9sZW5ndGhBcHBlbmRlZCk7CisgICAgICAgIHBsYXRmb3JtQXBwZW5kKG5ld0RhdGEpOworICAg
ICAgICBtX2xlbmd0aEFwcGVuZGVkICs9IG5ld0RhdGEuc2l6ZSgpOworICAgIH0KK30KKwordm9p
ZCBQcmV2aWV3Q29udmVydGVyOjpmaW5pc2hVcGRhdGluZygpCit7CisgICAgaWYgKG1faXNJbkNs
aWVudENhbGxiYWNrKQorICAgICAgICByZXR1cm47CisKKyAgICBpZiAobV9zdGF0ZSAhPSBTdGF0
ZTo6VXBkYXRpbmcpCisgICAgICAgIHJldHVybjsKKworICAgIHBsYXRmb3JtRmluaXNoZWRBcHBl
bmRpbmcoKTsKKworICAgIGl0ZXJhdGVDbGllbnRzKFsmXShhdXRvJiBjbGllbnQpIHsKKyAgICAg
ICAgY2xpZW50LnByZXZpZXdDb252ZXJ0ZXJEaWRGaW5pc2hVcGRhdGluZygqdGhpcyk7CisgICAg
fSk7Cit9CisKK3ZvaWQgUHJldmlld0NvbnZlcnRlcjo6ZmFpbGVkVXBkYXRpbmcoKQoreworICAg
IGlmIChtX2lzSW5DbGllbnRDYWxsYmFjaykKKyAgICAgICAgcmV0dXJuOworCisgICAgaWYgKG1f
c3RhdGUgIT0gU3RhdGU6OlVwZGF0aW5nKQorICAgICAgICByZXR1cm47CisKKyAgICBtX3N0YXRl
ID0gU3RhdGU6OkZhaWxlZFVwZGF0aW5nOworICAgIHBsYXRmb3JtRmFpbGVkQXBwZW5kaW5nKCk7
CisKKyAgICBpdGVyYXRlQ2xpZW50cyhbJl0oYXV0byYgY2xpZW50KSB7CisgICAgICAgIGNsaWVu
dC5wcmV2aWV3Q29udmVydGVyRGlkRmFpbFVwZGF0aW5nKCp0aGlzKTsKKyAgICB9KTsKK30KKwor
Ym9vbCBQcmV2aWV3Q29udmVydGVyOjpoYXNDbGllbnQoUHJldmlld0NvbnZlcnRlckNsaWVudCYg
Y2xpZW50KSBjb25zdAoreworICAgIHJldHVybiBtX2NsaWVudHMuY29udGFpbnMoJmNsaWVudCk7
Cit9CisKK3ZvaWQgUHJldmlld0NvbnZlcnRlcjo6YWRkQ2xpZW50KFByZXZpZXdDb252ZXJ0ZXJD
bGllbnQmIGNsaWVudCkKK3sKKyAgICBBU1NFUlQoIWhhc0NsaWVudChjbGllbnQpKTsKKyAgICBt
X2NsaWVudHMuYXBwZW5kKG1ha2VXZWFrUHRyKGNsaWVudCkpOworICAgIGRpZEFkZENsaWVudChj
bGllbnQpOworfQorCit2b2lkIFByZXZpZXdDb252ZXJ0ZXI6OnJlbW92ZUNsaWVudChQcmV2aWV3
Q29udmVydGVyQ2xpZW50JiBjbGllbnQpCit7CisgICAgbV9jbGllbnRzLnJlbW92ZUZpcnN0KCZj
bGllbnQpOworICAgIEFTU0VSVCghaGFzQ2xpZW50KGNsaWVudCkpOworfQorCitzdGF0aWMgU3Ry
aW5nJiBzaGFyZWRQYXNzd29yZEZvclRlc3RpbmcoKQoreworICAgIHN0YXRpYyBOZXZlckRlc3Ry
b3llZDxTdHJpbmc+IHBhc3N3b3JkRm9yVGVzdGluZzsKKyAgICByZXR1cm4gcGFzc3dvcmRGb3JU
ZXN0aW5nLmdldCgpOworfQorCitjb25zdCBTdHJpbmcmIFByZXZpZXdDb252ZXJ0ZXI6OnBhc3N3
b3JkRm9yVGVzdGluZygpCit7CisgICAgcmV0dXJuIHNoYXJlZFBhc3N3b3JkRm9yVGVzdGluZygp
OworfQorCit2b2lkIFByZXZpZXdDb252ZXJ0ZXI6OnNldFBhc3N3b3JkRm9yVGVzdGluZyhjb25z
dCBTdHJpbmcmIHBhc3N3b3JkKQoreworICAgIHNoYXJlZFBhc3N3b3JkRm9yVGVzdGluZygpID0g
cGFzc3dvcmQ7Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+Cit2b2lkIFByZXZpZXdDb252ZXJ0
ZXI6Oml0ZXJhdGVDbGllbnRzKFQmJiBjYWxsYmFjaykKK3sKKyAgICBTZXRGb3JTY29wZTxib29s
PiBpc0luQ2xpZW50Q2FsbGJhY2sgeyBtX2lzSW5DbGllbnRDYWxsYmFjaywgdHJ1ZSB9OworICAg
IGF1dG8gY2xpZW50c0NvcHkgeyBtX2NsaWVudHMgfTsKKyAgICBhdXRvIHByb3RlY3RlZFRoaXMg
eyBtYWtlUmVmKCp0aGlzKSB9OworCisgICAgZm9yIChhdXRvJiBjbGllbnQgOiBjbGllbnRzQ29w
eSkgeworICAgICAgICBpZiAoY2xpZW50ICYmIGhhc0NsaWVudCgqY2xpZW50KSkKKyAgICAgICAg
ICAgIGNhbGxiYWNrKCpjbGllbnQpOworICAgIH0KK30KKwordm9pZCBQcmV2aWV3Q29udmVydGVy
OjpkaWRBZGRDbGllbnQoUHJldmlld0NvbnZlcnRlckNsaWVudCYgY2xpZW50KQoreworICAgIFJ1
bkxvb3A6OmN1cnJlbnQoKS5kaXNwYXRjaChbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYo
KnRoaXMpLCB3ZWFrQ2xpZW50ID0gbWFrZVdlYWtQdHIoY2xpZW50KV0oKSB7CisgICAgICAgIGlm
IChhdXRvIGNsaWVudCA9IHdlYWtDbGllbnQuZ2V0KCkpCisgICAgICAgICAgICByZXBsYXlUb0Ns
aWVudCgqY2xpZW50KTsKKyAgICB9KTsKK30KKwordm9pZCBQcmV2aWV3Q29udmVydGVyOjpkaWRG
YWlsQ29udmVydGluZ1dpdGhFcnJvcihjb25zdCBSZXNvdXJjZUVycm9yJiBlcnJvcikKK3sKKyAg
ICBtX3ByZXZpZXdFcnJvciA9IGVycm9yOworICAgIG1fc3RhdGUgPSBTdGF0ZTo6RmFpbGVkQ29u
dmVydGluZzsKKworICAgIGl0ZXJhdGVDbGllbnRzKFsmXShhdXRvJiBjbGllbnQpIHsKKyAgICAg
ICAgY2xpZW50LnByZXZpZXdDb252ZXJ0ZXJEaWRGYWlsQ29udmVydGluZygqdGhpcyk7CisgICAg
fSk7Cit9CisKK3ZvaWQgUHJldmlld0NvbnZlcnRlcjo6cmVwbGF5VG9DbGllbnQoUHJldmlld0Nv
bnZlcnRlckNsaWVudCYgY2xpZW50KQoreworICAgIGlmICghaGFzQ2xpZW50KGNsaWVudCkpCisg
ICAgICAgIHJldHVybjsKKworICAgIFNldEZvclNjb3BlPGJvb2w+IGlzSW5DbGllbnRDYWxsYmFj
ayB7IG1faXNJbkNsaWVudENhbGxiYWNrLCB0cnVlIH07CisgICAgYXV0byBwcm90ZWN0ZWRUaGlz
IHsgbWFrZVJlZigqdGhpcykgfTsKKworICAgIGNsaWVudC5wcmV2aWV3Q29udmVydGVyRGlkU3Rh
cnRVcGRhdGluZygqdGhpcyk7CisKKyAgICBpZiAobV9zdGF0ZSA9PSBTdGF0ZTo6VXBkYXRpbmcg
fHwgIWhhc0NsaWVudChjbGllbnQpKQorICAgICAgICByZXR1cm47CisKKyAgICBpZiAobV9zdGF0
ZSA9PSBTdGF0ZTo6RmFpbGVkVXBkYXRpbmcpIHsKKyAgICAgICAgY2xpZW50LnByZXZpZXdDb252
ZXJ0ZXJEaWRGYWlsVXBkYXRpbmcoKnRoaXMpOworICAgICAgICByZXR1cm47CisgICAgfQorCisg
ICAgQVNTRVJUKG1fc3RhdGUgPj0gU3RhdGU6OkNvbnZlcnRpbmcpOworICAgIGNsaWVudC5wcmV2
aWV3Q29udmVydGVyRGlkU3RhcnRDb252ZXJ0aW5nKCp0aGlzKTsKKworICAgIGlmICghbV9wcmV2
aWV3RGF0YS0+aXNFbXB0eSgpICYmIGhhc0NsaWVudChjbGllbnQpKQorICAgICAgICBjbGllbnQu
cHJldmlld0NvbnZlcnRlckRpZFJlY2VpdmVEYXRhKCp0aGlzLCBtX3ByZXZpZXdEYXRhLmdldCgp
KTsKKworICAgIGlmIChtX3N0YXRlID09IFN0YXRlOjpDb252ZXJ0aW5nIHx8ICFoYXNDbGllbnQo
Y2xpZW50KSkKKyAgICAgICAgcmV0dXJuOworCisgICAgaWYgKG1fc3RhdGUgPT0gU3RhdGU6OkZh
aWxlZENvbnZlcnRpbmcpIHsKKyAgICAgICAgQVNTRVJUKCFtX3ByZXZpZXdFcnJvci5pc051bGwo
KSk7CisgICAgICAgIGNsaWVudC5wcmV2aWV3Q29udmVydGVyRGlkRmFpbENvbnZlcnRpbmcoKnRo
aXMpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgQVNTRVJUKG1fc3RhdGUgPT0gU3Rh
dGU6OkZpbmlzaGVkQ29udmVydGluZyk7CisgICAgQVNTRVJUKCFtX3ByZXZpZXdEYXRhLT5pc0Vt
cHR5KCkpOworICAgIEFTU0VSVChtX3ByZXZpZXdFcnJvci5pc051bGwoKSk7CisgICAgY2xpZW50
LnByZXZpZXdDb252ZXJ0ZXJEaWRGaW5pc2hDb252ZXJ0aW5nKCp0aGlzKTsKK30KKwordm9pZCBQ
cmV2aWV3Q29udmVydGVyOjpkZWxlZ2F0ZURpZFJlY2VpdmVEYXRhKGNvbnN0IFNoYXJlZEJ1ZmZl
ciYgZGF0YSkKK3sKKyAgICBhdXRvIHByb3RlY3RlZFRoaXMgeyBtYWtlUmVmKCp0aGlzKSB9Owor
CisgICAgaWYgKG1fc3RhdGUgPT0gU3RhdGU6OlVwZGF0aW5nKSB7CisgICAgICAgIG1fcHJvdmlk
ZXIgPSBudWxscHRyOworICAgICAgICBtX3N0YXRlID0gU3RhdGU6OkNvbnZlcnRpbmc7CisKKyAg
ICAgICAgaXRlcmF0ZUNsaWVudHMoWyZdKGF1dG8mIGNsaWVudCkgeworICAgICAgICAgICAgY2xp
ZW50LnByZXZpZXdDb252ZXJ0ZXJEaWRTdGFydENvbnZlcnRpbmcoKnRoaXMpOworICAgICAgICB9
KTsKKyAgICB9CisKKyAgICBBU1NFUlQobV9zdGF0ZSA9PSBTdGF0ZTo6Q29udmVydGluZyk7Cisg
ICAgaWYgKGRhdGEuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm47CisKKyAgICBtX3ByZXZpZXdE
YXRhLT5hcHBlbmQoZGF0YSk7CisKKyAgICBpdGVyYXRlQ2xpZW50cyhbJl0oYXV0byYgY2xpZW50
KSB7CisgICAgICAgIGNsaWVudC5wcmV2aWV3Q29udmVydGVyRGlkUmVjZWl2ZURhdGEoKnRoaXMs
IGRhdGEpOworICAgIH0pOworfQorCit2b2lkIFByZXZpZXdDb252ZXJ0ZXI6OmRlbGVnYXRlRGlk
RmluaXNoTG9hZGluZygpCit7CisgICAgQVNTRVJUKG1fc3RhdGUgPT0gU3RhdGU6OkNvbnZlcnRp
bmcpOworICAgIG1fc3RhdGUgPSBTdGF0ZTo6RmluaXNoZWRDb252ZXJ0aW5nOworCisgICAgaXRl
cmF0ZUNsaWVudHMoWyZdKGF1dG8mIGNsaWVudCkgeworICAgICAgICBjbGllbnQucHJldmlld0Nv
bnZlcnRlckRpZEZpbmlzaENvbnZlcnRpbmcoKnRoaXMpOworICAgIH0pOworfQorCit2b2lkIFBy
ZXZpZXdDb252ZXJ0ZXI6OmRlbGVnYXRlRGlkRmFpbFdpdGhFcnJvcihjb25zdCBSZXNvdXJjZUVy
cm9yJiBlcnJvcikKK3sKKyAgICBpZiAoIWlzUGxhdGZvcm1QYXNzd29yZEVycm9yKGVycm9yKSkg
eworICAgICAgICBkaWRGYWlsQ29udmVydGluZ1dpdGhFcnJvcihlcnJvcik7CisgICAgICAgIHJl
dHVybjsKKyAgICB9CisKKyAgICBBU1NFUlQobV9zdGF0ZSA9PSBTdGF0ZTo6VXBkYXRpbmcpOwor
ICAgIGF1dG8gcHJvdmlkZXIgPSBtX3Byb3ZpZGVyLmdldCgpOworICAgIGlmICghcHJvdmlkZXIp
IHsKKyAgICAgICAgZGlkRmFpbENvbnZlcnRpbmdXaXRoRXJyb3IoZXJyb3IpOworICAgICAgICBy
ZXR1cm47CisgICAgfQorCisgICAgcHJvdmlkZXItPnByb3ZpZGVQYXNzd29yZEZvclByZXZpZXdD
b252ZXJ0ZXIoKnRoaXMsIFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyldKGF1
dG8mIHBhc3N3b3JkKSBtdXRhYmxlIHsKKyAgICAgICAgaWYgKG1fc3RhdGUgIT0gU3RhdGU6OlVw
ZGF0aW5nKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIHBsYXRmb3JtVW5sb2NrV2l0
aFBhc3N3b3JkKHBhc3N3b3JkKTsKKyAgICAgICAgbV9sZW5ndGhBcHBlbmRlZCA9IDA7CisgICAg
ICAgIHVwZGF0ZU1haW5SZXNvdXJjZSgpOworICAgICAgICBmaW5pc2hVcGRhdGluZygpOworICAg
IH0pOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoUFJF
VklFV19DT05WRVJURVIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QcmV2
aWV3Q29udmVydGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QcmV2aWV3Q29udmVydGVy
LmgKaW5kZXggNzY1NDNhZDE2YzE0OTQ4NTg4MjI5OTFmMzA1ZmY3YTMzZTE3YWU0OS4uNzBkZjIy
NDQ2ZjZlZDk5YjYzY2ZiMDNjYTVmMTNmYTFjY2JmMzZlNyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vUHJldmlld0NvbnZlcnRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL1ByZXZpZXdDb252ZXJ0ZXIuaApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmln
aHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0
IChDKSAyMDE3LTIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yMywzNiArMjMsMTE1IEBACiAgKiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotI2luY2x1ZGUgPG9iamMvb2JqYy5oPgorI3By
YWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoUFJFVklFV19DT05WRVJURVIpCisKKyNpbmNsdWRlICJS
ZXNvdXJjZUVycm9yLmgiCisjaW5jbHVkZSAiUmVzb3VyY2VSZXNwb25zZS5oIgorI2luY2x1ZGUg
PHd0Zi9SZWZDb3VudGVkLmg+CiAjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgorI2luY2x1ZGUg
PHd0Zi9XZWFrUHRyLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKLU9CSkNf
Q0xBU1MgTlNEYXRhOwogT0JKQ19DTEFTUyBRTFByZXZpZXdDb252ZXJ0ZXI7CitPQkpDX0NMQVNT
IFdlYlByZXZpZXdDb252ZXJ0ZXJEZWxlZ2F0ZTsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitj
bGFzcyBSZXNvdXJjZUVycm9yOwogY2xhc3MgUmVzb3VyY2VSZXF1ZXN0OwotY2xhc3MgUmVzb3Vy
Y2VSZXNwb25zZTsKK2NsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIFNoYXJlZEJ1ZmZlckRhdGFW
aWV3Oworc3RydWN0IFByZXZpZXdDb252ZXJ0ZXJDbGllbnQ7CitzdHJ1Y3QgUHJldmlld0NvbnZl
cnRlclByb3ZpZGVyOworCitzdHJ1Y3QgUHJldmlld1BsYXRmb3JtRGVsZWdhdGUgOiBDYW5NYWtl
V2Vha1B0cjxQcmV2aWV3UGxhdGZvcm1EZWxlZ2F0ZT4geworICAgIHZpcnR1YWwgflByZXZpZXdQ
bGF0Zm9ybURlbGVnYXRlKCkgPSBkZWZhdWx0OworCisgICAgdmlydHVhbCB2b2lkIGRlbGVnYXRl
RGlkUmVjZWl2ZURhdGEoY29uc3QgU2hhcmVkQnVmZmVyJikgPSAwOworICAgIHZpcnR1YWwgdm9p
ZCBkZWxlZ2F0ZURpZEZpbmlzaExvYWRpbmcoKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGRlbGVn
YXRlRGlkRmFpbFdpdGhFcnJvcihjb25zdCBSZXNvdXJjZUVycm9yJikgPSAwOworfTsKIAotY2xh
c3MgUHJldmlld0NvbnZlcnRlciB7CitjbGFzcyBQcmV2aWV3Q29udmVydGVyIGZpbmFsIDogcHJp
dmF0ZSBQcmV2aWV3UGxhdGZvcm1EZWxlZ2F0ZSwgcHVibGljIFJlZkNvdW50ZWQ8UHJldmlld0Nv
bnZlcnRlcj4gewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogICAgIFdURl9NQUtFX05P
TkNPUFlBQkxFKFByZXZpZXdDb252ZXJ0ZXIpOwogcHVibGljOgotICAgIFByZXZpZXdDb252ZXJ0
ZXIoaWQgZGVsZWdhdGUsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBjb25zdCBTdHJpbmcmIHBh
c3N3b3JkID0geyB9KTsKLSAgICBQcmV2aWV3Q29udmVydGVyKE5TRGF0YSAqLCBjb25zdCBTdHJp
bmcmIHV0aSwgY29uc3QgU3RyaW5nJiBwYXNzd29yZCA9IHsgfSk7CisgICAgc3RhdGljIFJlZjxQ
cmV2aWV3Q29udmVydGVyPiBjcmVhdGUoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2Us
IFByZXZpZXdDb252ZXJ0ZXJQcm92aWRlciYgcHJvdmlkZXIpCisgICAgeworICAgICAgICByZXR1
cm4gYWRvcHRSZWYoKm5ldyBQcmV2aWV3Q29udmVydGVyKHJlc3BvbnNlLCBwcm92aWRlcikpOwor
ICAgIH0KIAogICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBib29sIHN1cHBvcnRzTUlNRVR5cGUo
Y29uc3QgU3RyaW5nJiBtaW1lVHlwZSk7CiAKLSAgICBRTFByZXZpZXdDb252ZXJ0ZXIgKnBsYXRm
b3JtQ29udmVydGVyKCkgY29uc3QgeyByZXR1cm4gbV9wbGF0Zm9ybUNvbnZlcnRlci5nZXQoKTsg
fQorICAgIH5QcmV2aWV3Q29udmVydGVyKCk7CisKICAgICBSZXNvdXJjZVJlcXVlc3Qgc2FmZVJl
cXVlc3QoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JikgY29uc3Q7Ci0gICAgUmVzb3VyY2VSZXF1ZXN0
IHByZXZpZXdSZXF1ZXN0KCkgY29uc3Q7CiAgICAgUmVzb3VyY2VSZXNwb25zZSBwcmV2aWV3UmVz
cG9uc2UoKSBjb25zdDsKLSAgICBTdHJpbmcgcHJldmlld0ZpbGVOYW1lKCkgY29uc3Q7Ci0gICAg
U3RyaW5nIHByZXZpZXdVVEkoKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBTdHJpbmcgcHJl
dmlld0ZpbGVOYW1lKCkgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgU3RyaW5nIHByZXZpZXdV
VEkoKSBjb25zdDsKKyAgICBjb25zdCBSZXNvdXJjZUVycm9yJiBwcmV2aWV3RXJyb3IoKSBjb25z
dDsKKyAgICBjb25zdCBTaGFyZWRCdWZmZXImIHByZXZpZXdEYXRhKCkgY29uc3Q7CisKKyAgICB2
b2lkIGZhaWxlZFVwZGF0aW5nKCk7CisgICAgdm9pZCBmaW5pc2hVcGRhdGluZygpOworICAgIHZv
aWQgdXBkYXRlTWFpblJlc291cmNlKCk7CisKKyAgICBib29sIGhhc0NsaWVudChQcmV2aWV3Q29u
dmVydGVyQ2xpZW50JikgY29uc3Q7CisgICAgdm9pZCBhZGRDbGllbnQoUHJldmlld0NvbnZlcnRl
ckNsaWVudCYpOworICAgIHZvaWQgcmVtb3ZlQ2xpZW50KFByZXZpZXdDb252ZXJ0ZXJDbGllbnQm
KTsKKworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBjb25zdCBTdHJpbmcmIHBhc3N3b3JkRm9y
VGVzdGluZygpOworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyB2b2lkIHNldFBhc3N3b3JkRm9y
VGVzdGluZyhjb25zdCBTdHJpbmcmKTsKIAogcHJpdmF0ZToKKyAgICBzdGF0aWMgSGFzaFNldDxT
dHJpbmcsIEFTQ0lJQ2FzZUluc2Vuc2l0aXZlSGFzaD4gcGxhdGZvcm1TdXBwb3J0ZWRNSU1FVHlw
ZXMoKTsKKworICAgIFByZXZpZXdDb252ZXJ0ZXIoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIFBy
ZXZpZXdDb252ZXJ0ZXJQcm92aWRlciYpOworCisgICAgUmVzb3VyY2VSZXNwb25zZSBwbGF0Zm9y
bVByZXZpZXdSZXNwb25zZSgpIGNvbnN0OworICAgIGJvb2wgaXNQbGF0Zm9ybVBhc3N3b3JkRXJy
b3IoY29uc3QgUmVzb3VyY2VFcnJvciYpIGNvbnN0OworCisgICAgdGVtcGxhdGU8dHlwZW5hbWUg
VD4gdm9pZCBpdGVyYXRlQ2xpZW50cyhUJiYgY2FsbGJhY2spOworICAgIHZvaWQgYXBwZW5kRnJv
bUJ1ZmZlcihjb25zdCBTaGFyZWRCdWZmZXImKTsKKyAgICB2b2lkIGRpZEFkZENsaWVudChQcmV2
aWV3Q29udmVydGVyQ2xpZW50Jik7CisgICAgdm9pZCBkaWRGYWlsQ29udmVydGluZ1dpdGhFcnJv
cihjb25zdCBSZXNvdXJjZUVycm9yJik7CisgICAgdm9pZCByZXBsYXlUb0NsaWVudChQcmV2aWV3
Q29udmVydGVyQ2xpZW50Jik7CisKKyAgICB2b2lkIHBsYXRmb3JtQXBwZW5kKGNvbnN0IFNoYXJl
ZEJ1ZmZlckRhdGFWaWV3Jik7CisgICAgdm9pZCBwbGF0Zm9ybUZhaWxlZEFwcGVuZGluZygpOwor
ICAgIHZvaWQgcGxhdGZvcm1GaW5pc2hlZEFwcGVuZGluZygpOworICAgIHZvaWQgcGxhdGZvcm1V
bmxvY2tXaXRoUGFzc3dvcmQoY29uc3QgU3RyaW5nJik7CisKKyAgICAvLyBQcmV2aWV3UGxhdGZv
cm1EZWxlZ2F0ZQorICAgIHZvaWQgZGVsZWdhdGVEaWRSZWNlaXZlRGF0YShjb25zdCBTaGFyZWRC
dWZmZXImKSBmaW5hbDsKKyAgICB2b2lkIGRlbGVnYXRlRGlkRmluaXNoTG9hZGluZygpIGZpbmFs
OworICAgIHZvaWQgZGVsZWdhdGVEaWRGYWlsV2l0aEVycm9yKGNvbnN0IFJlc291cmNlRXJyb3Im
KSBmaW5hbDsKKworICAgIGVudW0gY2xhc3MgU3RhdGUgOiB1aW50OF90IHsKKyAgICAgICAgVXBk
YXRpbmcsCisgICAgICAgIEZhaWxlZFVwZGF0aW5nLAorICAgICAgICBDb252ZXJ0aW5nLAorICAg
ICAgICBGYWlsZWRDb252ZXJ0aW5nLAorICAgICAgICBGaW5pc2hlZENvbnZlcnRpbmcsCisgICAg
fTsKKworICAgIFJlZjxTaGFyZWRCdWZmZXI+IG1fcHJldmlld0RhdGE7CisgICAgUmVzb3VyY2VF
cnJvciBtX3ByZXZpZXdFcnJvcjsKKyAgICBSZXNvdXJjZVJlc3BvbnNlIG1fb3JpZ2luYWxSZXNw
b25zZTsKKyAgICBTdGF0ZSBtX3N0YXRlIHsgU3RhdGU6OlVwZGF0aW5nIH07CisgICAgVmVjdG9y
PFdlYWtQdHI8UHJldmlld0NvbnZlcnRlckNsaWVudD4sIDE+IG1fY2xpZW50czsKKyAgICBXZWFr
UHRyPFByZXZpZXdDb252ZXJ0ZXJQcm92aWRlcj4gbV9wcm92aWRlcjsKKyAgICBib29sIG1faXNJ
bkNsaWVudENhbGxiYWNrIHsgZmFsc2UgfTsKKyAgICBzaXplX3QgbV9sZW5ndGhBcHBlbmRlZCB7
IDAgfTsKKworI2lmIFVTRShRVUlDS19MT09LKQorICAgIFJldGFpblB0cjxXZWJQcmV2aWV3Q29u
dmVydGVyRGVsZWdhdGU+IG1fcGxhdGZvcm1EZWxlZ2F0ZTsKICAgICBSZXRhaW5QdHI8UUxQcmV2
aWV3Q29udmVydGVyPiBtX3BsYXRmb3JtQ29udmVydGVyOworI2VuZGlmCiB9OwogCiB9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoUFJFVklFV19DT05WRVJURVIpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QcmV2aWV3Q29udmVydGVyQ2xpZW50
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QcmV2aWV3Q29udmVydGVyQ2xpZW50LmgKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uMDRlYTM2ODA2OTJiMjUyYTE5ODljMjZjYTIwNDIxMjc3N2FhM2I3YgotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1ByZXZpZXdDb252ZXJ0ZXJDbGll
bnQuaApAQCAtMCwwICsxLDUwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisg
KiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICog
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNs
dWRlIDx3dGYvQ29tcGxldGlvbkhhbmRsZXIuaD4KKyNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgor
I2luY2x1ZGUgPHd0Zi9XZWFrUHRyLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3Mg
UHJldmlld0NvbnZlcnRlcjsKK2NsYXNzIFJlc291cmNlRXJyb3I7CitjbGFzcyBTaGFyZWRCdWZm
ZXI7CisKK3N0cnVjdCBQcmV2aWV3Q29udmVydGVyQ2xpZW50IDogQ2FuTWFrZVdlYWtQdHI8UHJl
dmlld0NvbnZlcnRlckNsaWVudD4geworICAgIHZpcnR1YWwgflByZXZpZXdDb252ZXJ0ZXJDbGll
bnQoKSA9IGRlZmF1bHQ7CisKKyAgICB2aXJ0dWFsIHZvaWQgcHJldmlld0NvbnZlcnRlckRpZFN0
YXJ0VXBkYXRpbmcoUHJldmlld0NvbnZlcnRlciYpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgcHJl
dmlld0NvbnZlcnRlckRpZEZpbmlzaFVwZGF0aW5nKFByZXZpZXdDb252ZXJ0ZXImKSA9IDA7Cisg
ICAgdmlydHVhbCB2b2lkIHByZXZpZXdDb252ZXJ0ZXJEaWRGYWlsVXBkYXRpbmcoUHJldmlld0Nv
bnZlcnRlciYpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgcHJldmlld0NvbnZlcnRlckRpZFN0YXJ0
Q29udmVydGluZyhQcmV2aWV3Q29udmVydGVyJikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBwcmV2
aWV3Q29udmVydGVyRGlkUmVjZWl2ZURhdGEoUHJldmlld0NvbnZlcnRlciYsIGNvbnN0IFNoYXJl
ZEJ1ZmZlciYgbmV3RGF0YSkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBwcmV2aWV3Q29udmVydGVy
RGlkRmluaXNoQ29udmVydGluZyhQcmV2aWV3Q29udmVydGVyJikgPSAwOworICAgIHZpcnR1YWwg
dm9pZCBwcmV2aWV3Q29udmVydGVyRGlkRmFpbENvbnZlcnRpbmcoUHJldmlld0NvbnZlcnRlciYp
ID0gMDsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL1ByZXZpZXdDb252ZXJ0ZXJQcm92aWRlci5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vUHJldmlld0NvbnZlcnRlclByb3ZpZGVyLmgKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uODI3ODYz
OTNmY2VkNzU0Yzg1ZjdiMjg5MTI1MmY1MTZiZWQwZDU0OQotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL1ByZXZpZXdDb252ZXJ0ZXJQcm92aWRlci5oCkBAIC0wLDAg
KzEsMzkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
CisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgor
ICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgPHd0Zi9XZWFr
UHRyLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworc3RydWN0IFByZXZpZXdDb252ZXJ0ZXJQ
cm92aWRlciA6IENhbk1ha2VXZWFrUHRyPFByZXZpZXdDb252ZXJ0ZXJQcm92aWRlcj4geworICAg
IHZpcnR1YWwgflByZXZpZXdDb252ZXJ0ZXJQcm92aWRlcigpID0gZGVmYXVsdDsKKworICAgIHZp
cnR1YWwgdm9pZCBwcm92aWRlTWFpblJlc291cmNlRm9yUHJldmlld0NvbnZlcnRlcihQcmV2aWV3
Q29udmVydGVyJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBTaGFyZWRCdWZmZXIqKT4m
JikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBwcm92aWRlUGFzc3dvcmRGb3JQcmV2aWV3Q29udmVy
dGVyKFByZXZpZXdDb252ZXJ0ZXImLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFN0cmlu
ZyYpPiYmKSA9IDA7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvUHJldmlld0NvbnZlcnRlcklPUy5tbSBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9QcmV2aWV3Q29udmVydGVySU9TLm1tCmluZGV4IGI1Y2Qy
ODM1NmYyNjlmOWQ2MTYzMTM3ZDUxYTNhNGMyODhiYjQ5OWYuLjJmY2QwZmNiMzg5YTAwYjJmNGJh
ZWFlNjNmOTJlOGZlMzQ3ZTY5YmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2lvcy9QcmV2aWV3Q29udmVydGVySU9TLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2lvcy9QcmV2aWV3Q29udmVydGVySU9TLm1tCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHly
aWdodCAoQykgMjAxNy0yMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENv
cHlyaWdodCAoQykgMjAwOS0yMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAq
CiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjYsNjUgKzI2LDg4IEBACiAjaW1wb3J0
ICJjb25maWcuaCIKICNpbXBvcnQgIlByZXZpZXdDb252ZXJ0ZXIuaCIKIAotI2lmIFVTRShRVUlD
S19MT09LKQorI2lmIEVOQUJMRShQUkVWSUVXX0NPTlZFUlRFUikgJiYgVVNFKFFVSUNLX0xPT0sp
CiAKKyNpbXBvcnQgIlByZXZpZXdDb252ZXJ0ZXJDbGllbnQuaCIKKyNpbXBvcnQgIlByZXZpZXdD
b252ZXJ0ZXJQcm92aWRlci5oIgogI2ltcG9ydCAiUXVpY2tMb29rLmgiCisjaW1wb3J0ICJSZXNv
dXJjZUVycm9yLmgiCiAjaW1wb3J0ICJSZXNvdXJjZVJlcXVlc3QuaCIKICNpbXBvcnQgIlJlc291
cmNlUmVzcG9uc2UuaCIKKyNpbXBvcnQgIlNoYXJlZEJ1ZmZlci5oIgogI2ltcG9ydCA8cGFsL2lv
cy9RdWlja0xvb2tTb2Z0TGluay5oPgotI2ltcG9ydCA8cGFsL3NwaS9pb3MvUXVpY2tMb29rU1BJ
Lmg+CiAKLW5hbWVzcGFjZSBXZWJDb3JlIHsKK0BpbnRlcmZhY2UgV2ViUHJldmlld0NvbnZlcnRl
ckRlbGVnYXRlIDogTlNPYmplY3QKKy0gKGluc3RhbmNldHlwZSlpbml0V2l0aERlbGVnYXRlOihX
ZWJDb3JlOjpQcmV2aWV3UGxhdGZvcm1EZWxlZ2F0ZSYpZGVsZWdhdGU7CitAZW5kCiAKLXN0YXRp
YyBOU0RpY3Rpb25hcnkgKm9wdGlvbnNXaXRoUGFzc3dvcmQoY29uc3QgU3RyaW5nJiBwYXNzd29y
ZCkKK0BpbXBsZW1lbnRhdGlvbiBXZWJQcmV2aWV3Q29udmVydGVyRGVsZWdhdGUgeworICAgIFdl
YWtQdHI8V2ViQ29yZTo6UHJldmlld1BsYXRmb3JtRGVsZWdhdGU+IF9kZWxlZ2F0ZTsKK30KKwor
LSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoRGVsZWdhdGU6KFdlYkNvcmU6OlByZXZpZXdQbGF0Zm9y
bURlbGVnYXRlJilkZWxlZ2F0ZQogewotICAgIGlmIChwYXNzd29yZC5pc051bGwoKSkKKyAgICBp
ZiAoIShzZWxmID0gW3N1cGVyIGluaXRdKSkKICAgICAgICAgcmV0dXJuIG5pbDsKIAotICAgIHJl
dHVybiBAeyAoTlNTdHJpbmcgKilQQUw6OmdldF9RdWlja0xvb2tfa1FMUHJldmlld09wdGlvblBh
c3N3b3JkS2V5KCkgOiBwYXNzd29yZCB9OworICAgIF9kZWxlZ2F0ZSA9IG1ha2VXZWFrUHRyKGRl
bGVnYXRlKTsKKyAgICByZXR1cm4gc2VsZjsKIH0KIAotUHJldmlld0NvbnZlcnRlcjo6UHJldmll
d0NvbnZlcnRlcihpZCBkZWxlZ2F0ZSwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2Us
IGNvbnN0IFN0cmluZyYgcGFzc3dvcmQpCi0gICAgOiBtX3BsYXRmb3JtQ29udmVydGVyIHsgYWRv
cHROUyhbUEFMOjphbGxvY1FMUHJldmlld0NvbnZlcnRlckluc3RhbmNlKCkgaW5pdFdpdGhDb25u
ZWN0aW9uOm5pbCBkZWxlZ2F0ZTpkZWxlZ2F0ZSByZXNwb25zZTpyZXNwb25zZS5uc1VSTFJlc3Bv
bnNlKCkgb3B0aW9uczpvcHRpb25zV2l0aFBhc3N3b3JkKHBhc3N3b3JkKV0pIH0KKy0gKHZvaWQp
Y29ubmVjdGlvbjooTlNVUkxDb25uZWN0aW9uICopY29ubmVjdGlvbiBkaWRSZWNlaXZlRGF0YToo
TlNEYXRhICopZGF0YSBsZW5ndGhSZWNlaXZlZDoobG9uZyBsb25nKWxlbmd0aFJlY2VpdmVkCiB7
CisgICAgQVNTRVJUX1VOVVNFRChjb25uZWN0aW9uLCAhY29ubmVjdGlvbik7CisgICAgQVNTRVJU
X1VOVVNFRChsZW5ndGhSZWNlaXZlZCwgbGVuZ3RoUmVjZWl2ZWQgPj0gMCk7CisgICAgQVNTRVJU
KGRhdGEubGVuZ3RoID09IHN0YXRpY19jYXN0PE5TVUludGVnZXI+KGxlbmd0aFJlY2VpdmVkKSk7
CisgICAgaWYgKGF1dG8gZGVsZWdhdGUgPSBfZGVsZWdhdGUuZ2V0KCkpCisgICAgICAgIGRlbGVn
YXRlLT5kZWxlZ2F0ZURpZFJlY2VpdmVEYXRhKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6Y3JlYXRl
KGRhdGEpLmdldCgpKTsKIH0KIAotUHJldmlld0NvbnZlcnRlcjo6UHJldmlld0NvbnZlcnRlcihO
U0RhdGEgKmRhdGEsIGNvbnN0IFN0cmluZyYgdXRpLCBjb25zdCBTdHJpbmcmIHBhc3N3b3JkKQot
ICAgIDogbV9wbGF0Zm9ybUNvbnZlcnRlciB7IGFkb3B0TlMoW1BBTDo6YWxsb2NRTFByZXZpZXdD
b252ZXJ0ZXJJbnN0YW5jZSgpIGluaXRXaXRoRGF0YTpkYXRhIG5hbWU6bmlsIHV0aTp1dGkgb3B0
aW9uczpvcHRpb25zV2l0aFBhc3N3b3JkKHBhc3N3b3JkKV0pIH0KKy0gKHZvaWQpY29ubmVjdGlv
bkRpZEZpbmlzaExvYWRpbmc6KE5TVVJMQ29ubmVjdGlvbiAqKWNvbm5lY3Rpb24KIHsKKyAgICBB
U1NFUlRfVU5VU0VEKGNvbm5lY3Rpb24sICFjb25uZWN0aW9uKTsKKyAgICBpZiAoYXV0byBkZWxl
Z2F0ZSA9IF9kZWxlZ2F0ZS5nZXQoKSkKKyAgICAgICAgZGVsZWdhdGUtPmRlbGVnYXRlRGlkRmlu
aXNoTG9hZGluZygpOwogfQogCi1ib29sIFByZXZpZXdDb252ZXJ0ZXI6OnN1cHBvcnRzTUlNRVR5
cGUoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSkKKy0gKHZvaWQpY29ubmVjdGlvbjooTlNVUkxDb25u
ZWN0aW9uICopY29ubmVjdGlvbiBkaWRGYWlsV2l0aEVycm9yOihOU0Vycm9yICopZXJyb3IKIHsK
LSAgICBpZiAoZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UobWltZVR5cGUsICJ0ZXh0L2h0
bWwiKSB8fCBlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShtaW1lVHlwZSwgInRleHQvcGxh
aW4iKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIEFTU0VSVF9VTlVTRUQoY29ubmVjdGlv
biwgIWNvbm5lY3Rpb24pOworICAgIGlmIChhdXRvIGRlbGVnYXRlID0gX2RlbGVnYXRlLmdldCgp
KQorICAgICAgICBkZWxlZ2F0ZS0+ZGVsZWdhdGVEaWRGYWlsV2l0aEVycm9yKGVycm9yKTsKK30K
IAotICAgIHN0YXRpYyBzdGQ6Om9uY2VfZmxhZyBvbmNlRmxhZzsKLSAgICBzdGF0aWMgTmV2ZXJE
ZXN0cm95ZWQ8SGFzaFNldDxTdHJpbmcsIEFTQ0lJQ2FzZUluc2Vuc2l0aXZlSGFzaD4+IHN1cHBv
cnRlZE1JTUVUeXBlczsKLSAgICBzdGQ6OmNhbGxfb25jZShvbmNlRmxhZywgW10gewotICAgICAg
ICBmb3IgKE5TU3RyaW5nICptaW1lVHlwZSBpbiBRTFByZXZpZXdHZXRTdXBwb3J0ZWRNSU1FVHlw
ZXNTZXQoKSkKLSAgICAgICAgICAgIHN1cHBvcnRlZE1JTUVUeXBlcy0+YWRkKG1pbWVUeXBlKTsK
LSAgICB9KTsKK0BlbmQKIAotICAgIGlmIChtaW1lVHlwZS5pc051bGwoKSkKLSAgICAgICAgcmV0
dXJuIGZhbHNlOworbmFtZXNwYWNlIFdlYkNvcmUgewogCi0gICAgcmV0dXJuIHN1cHBvcnRlZE1J
TUVUeXBlcy0+Y29udGFpbnMobWltZVR5cGUpOworUHJldmlld0NvbnZlcnRlcjo6UHJldmlld0Nv
bnZlcnRlcihjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwgUHJldmlld0NvbnZlcnRl
clByb3ZpZGVyJiBwcm92aWRlcikKKyAgICA6IG1fcHJldmlld0RhdGEgeyBTaGFyZWRCdWZmZXI6
OmNyZWF0ZSgpIH0KKyAgICAsIG1fb3JpZ2luYWxSZXNwb25zZSB7IHJlc3BvbnNlIH0KKyAgICAs
IG1fcHJvdmlkZXIgeyBtYWtlV2Vha1B0cihwcm92aWRlcikgfQorICAgICwgbV9wbGF0Zm9ybURl
bGVnYXRlIHsgYWRvcHROUyhbW1dlYlByZXZpZXdDb252ZXJ0ZXJEZWxlZ2F0ZSBhbGxvY10gaW5p
dFdpdGhEZWxlZ2F0ZToqdGhpc10pIH0KKyAgICAsIG1fcGxhdGZvcm1Db252ZXJ0ZXIgeyBhZG9w
dE5TKFtQQUw6OmFsbG9jUUxQcmV2aWV3Q29udmVydGVySW5zdGFuY2UoKSBpbml0V2l0aENvbm5l
Y3Rpb246bmlsIGRlbGVnYXRlOm1fcGxhdGZvcm1EZWxlZ2F0ZS5nZXQoKSByZXNwb25zZTptX29y
aWdpbmFsUmVzcG9uc2UubnNVUkxSZXNwb25zZSgpIG9wdGlvbnM6bmlsXSkgfQorewogfQogCi1S
ZXNvdXJjZVJlcXVlc3QgUHJldmlld0NvbnZlcnRlcjo6c2FmZVJlcXVlc3QoY29uc3QgUmVzb3Vy
Y2VSZXF1ZXN0JiByZXF1ZXN0KSBjb25zdAorSGFzaFNldDxTdHJpbmcsIEFTQ0lJQ2FzZUluc2Vu
c2l0aXZlSGFzaD4gUHJldmlld0NvbnZlcnRlcjo6cGxhdGZvcm1TdXBwb3J0ZWRNSU1FVHlwZXMo
KQogewotICAgIHJldHVybiBbbV9wbGF0Zm9ybUNvbnZlcnRlciBzYWZlUmVxdWVzdEZvclJlcXVl
c3Q6cmVxdWVzdC5uc1VSTFJlcXVlc3QoSFRUUEJvZHlVcGRhdGVQb2xpY3k6OkRvTm90VXBkYXRl
SFRUUEJvZHkpXTsKKyAgICBIYXNoU2V0PFN0cmluZywgQVNDSUlDYXNlSW5zZW5zaXRpdmVIYXNo
PiBzdXBwb3J0ZWRNSU1FVHlwZXM7CisgICAgZm9yIChOU1N0cmluZyAqbWltZVR5cGUgaW4gUUxQ
cmV2aWV3R2V0U3VwcG9ydGVkTUlNRVR5cGVzU2V0KCkpCisgICAgICAgIHN1cHBvcnRlZE1JTUVU
eXBlcy5hZGQobWltZVR5cGUpOworICAgIHJldHVybiBzdXBwb3J0ZWRNSU1FVHlwZXM7CiB9CiAK
LVJlc291cmNlUmVxdWVzdCBQcmV2aWV3Q29udmVydGVyOjpwcmV2aWV3UmVxdWVzdCgpIGNvbnN0
CitSZXNvdXJjZVJlcXVlc3QgUHJldmlld0NvbnZlcnRlcjo6c2FmZVJlcXVlc3QoY29uc3QgUmVz
b3VyY2VSZXF1ZXN0JiByZXF1ZXN0KSBjb25zdAogewotICAgIHJldHVybiBbbV9wbGF0Zm9ybUNv
bnZlcnRlciBwcmV2aWV3UmVxdWVzdF07CisgICAgcmV0dXJuIFttX3BsYXRmb3JtQ29udmVydGVy
IHNhZmVSZXF1ZXN0Rm9yUmVxdWVzdDpyZXF1ZXN0Lm5zVVJMUmVxdWVzdChIVFRQQm9keVVwZGF0
ZVBvbGljeTo6RG9Ob3RVcGRhdGVIVFRQQm9keSldOwogfQogCi1SZXNvdXJjZVJlc3BvbnNlIFBy
ZXZpZXdDb252ZXJ0ZXI6OnByZXZpZXdSZXNwb25zZSgpIGNvbnN0CitSZXNvdXJjZVJlc3BvbnNl
IFByZXZpZXdDb252ZXJ0ZXI6OnBsYXRmb3JtUHJldmlld1Jlc3BvbnNlKCkgY29uc3QKIHsKLSAg
ICByZXR1cm4gW21fcGxhdGZvcm1Db252ZXJ0ZXIgcHJldmlld1Jlc3BvbnNlXTsKKyAgICBSZXNv
dXJjZVJlc3BvbnNlIHJlc3BvbnNlIHsgW21fcGxhdGZvcm1Db252ZXJ0ZXIgcHJldmlld1Jlc3Bv
bnNlXSB9OworICAgIEFTU0VSVChyZXNwb25zZS51cmwoKS5wcm90b2NvbElzKFFMUHJldmlld1By
b3RvY29sKSk7CisgICAgcmV0dXJuIHJlc3BvbnNlOwogfQogCiBTdHJpbmcgUHJldmlld0NvbnZl
cnRlcjo6cHJldmlld0ZpbGVOYW1lKCkgY29uc3QKQEAgLTk3LDYgKzEyMCwzOSBAQCBTdHJpbmcg
UHJldmlld0NvbnZlcnRlcjo6cHJldmlld1VUSSgpIGNvbnN0CiAgICAgcmV0dXJuIFttX3BsYXRm
b3JtQ29udmVydGVyIHByZXZpZXdVVEldOwogfQogCit2b2lkIFByZXZpZXdDb252ZXJ0ZXI6OnBs
YXRmb3JtQXBwZW5kKGNvbnN0IFNoYXJlZEJ1ZmZlckRhdGFWaWV3JiBkYXRhKQoreworICAgIFtt
X3BsYXRmb3JtQ29udmVydGVyIGFwcGVuZERhdGE6ZGF0YS5jcmVhdGVOU0RhdGEoKS5nZXQoKV07
Cit9CisKK3ZvaWQgUHJldmlld0NvbnZlcnRlcjo6cGxhdGZvcm1GaW5pc2hlZEFwcGVuZGluZygp
Cit7CisgICAgW21fcGxhdGZvcm1Db252ZXJ0ZXIgZmluaXNoZWRBcHBlbmRpbmdEYXRhXTsKK30K
Kwordm9pZCBQcmV2aWV3Q29udmVydGVyOjpwbGF0Zm9ybUZhaWxlZEFwcGVuZGluZygpCit7Cisg
ICAgW21fcGxhdGZvcm1Db252ZXJ0ZXIgZmluaXNoQ29udmVydGluZ107Cit9CisKK2Jvb2wgUHJl
dmlld0NvbnZlcnRlcjo6aXNQbGF0Zm9ybVBhc3N3b3JkRXJyb3IoY29uc3QgUmVzb3VyY2VFcnJv
ciYgZXJyb3IpIGNvbnN0Cit7CisgICAgcmV0dXJuIGVycm9yLmVycm9yQ29kZSgpID09IGtRTFJl
dHVyblBhc3N3b3JkUHJvdGVjdGVkICYmIGVycm9yLmRvbWFpbigpID09ICJRdWlja0xvb2tFcnJv
ckRvbWFpbiI7Cit9CisKK3N0YXRpYyBOU0RpY3Rpb25hcnkgKm9wdGlvbnNXaXRoUGFzc3dvcmQo
Y29uc3QgU3RyaW5nJiBwYXNzd29yZCkKK3sKKyAgICBpZiAocGFzc3dvcmQuaXNOdWxsKCkpCisg
ICAgICAgIHJldHVybiBuaWw7CisgICAgCisgICAgcmV0dXJuIEB7IChOU1N0cmluZyAqKVBBTDo6
Z2V0X1F1aWNrTG9va19rUUxQcmV2aWV3T3B0aW9uUGFzc3dvcmRLZXkoKSA6IHBhc3N3b3JkIH07
Cit9CisKK3ZvaWQgUHJldmlld0NvbnZlcnRlcjo6cGxhdGZvcm1VbmxvY2tXaXRoUGFzc3dvcmQo
Y29uc3QgU3RyaW5nJiBwYXNzd29yZCkKK3sKKyAgICBtX3BsYXRmb3JtQ29udmVydGVyID0gYWRv
cHROUyhbUEFMOjphbGxvY1FMUHJldmlld0NvbnZlcnRlckluc3RhbmNlKCkgaW5pdFdpdGhDb25u
ZWN0aW9uOm5pbCBkZWxlZ2F0ZTptX3BsYXRmb3JtRGVsZWdhdGUuZ2V0KCkgcmVzcG9uc2U6bV9v
cmlnaW5hbFJlc3BvbnNlLm5zVVJMUmVzcG9uc2UoKSBvcHRpb25zOm9wdGlvbnNXaXRoUGFzc3dv
cmQocGFzc3dvcmQpXSk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAotI2VuZGlmIC8v
IFVTRShRVUlDS19MT09LKQorI2VuZGlmIC8vIEVOQUJMRShQUkVWSUVXX0NPTlZFUlRFUikgJiYg
VVNFKFFVSUNLX0xPT0spCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3Mv
UXVpY2tMb29rLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1F1aWNrTG9vay5tbQpp
bmRleCAxNWFlMmZmOTQxZDIyZTk0MmM4NzA3ZmRlMDE0YjkyOTYwMTYwNDZmLi4yZTI0N2E2ZTUz
ZGQwNWFiMTkwZWQ5NmRkYTJhMWFlNmRhZGM5OGFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9pb3MvUXVpY2tMb29rLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2lvcy9RdWlja0xvb2subW0KQEAgLTI4LDcgKzI4LDYgQEAKIAogI2lmIFVTRShRVUlDS19MT09L
KQogCi0jaW1wb3J0ICJQcmV2aWV3Q29udmVydGVyLmgiCiAjaW1wb3J0ICJSZXNvdXJjZVJlcXVl
c3QuaCIKICNpbXBvcnQgPHBhbC9pb3MvUXVpY2tMb29rU29mdExpbmsuaD4KICNpbXBvcnQgPHBh
bC9zcGkvY29jb2EvTlNGaWxlTWFuYWdlclNQSS5oPgpAQCAtODMsMTIgKzgyLDEyIEBAIFJldGFp
blB0cjxOU1VSTFJlcXVlc3Q+IHJlZ2lzdGVyUUxQcmV2aWV3Q29udmVydGVySWZOZWVkZWQoTlNV
UkwgKnVybCwgTlNTdHJpbmcKICAgICBpZiAoW1FMUHJldmlld0dldFN1cHBvcnRlZE1JTUVUeXBl
c1NldCgpIGNvbnRhaW5zT2JqZWN0OnVwZGF0ZWRNSU1FVHlwZS5nZXQoKV0pIHsKICAgICAgICAg
UmV0YWluUHRyPE5TU3RyaW5nPiB1dGkgPSBhZG9wdE5TKFBBTDo6c29mdExpbmtfUXVpY2tMb29r
X1FMVHlwZUNvcHlVVElGb3JVUkxBbmRNaW1lVHlwZSh1cmwsIHVwZGF0ZWRNSU1FVHlwZS5nZXQo
KSkpOwogCi0gICAgICAgIGF1dG8gY29udmVydGVyID0gbWFrZVVuaXF1ZTxQcmV2aWV3Q29udmVy
dGVyPihkYXRhLCB1dGkuZ2V0KCkpOwotICAgICAgICBSZXNvdXJjZVJlcXVlc3QgcHJldmlld1Jl
cXVlc3QgPSBjb252ZXJ0ZXItPnByZXZpZXdSZXF1ZXN0KCk7CisgICAgICAgIGF1dG8gY29udmVy
dGVyID0gYWRvcHROUyhbUEFMOjphbGxvY1FMUHJldmlld0NvbnZlcnRlckluc3RhbmNlKCkgaW5p
dFdpdGhEYXRhOmRhdGEgbmFtZTpuaWwgdXRpOnV0aS5nZXQoKSBvcHRpb25zOm5pbF0pOworICAg
ICAgICBSZXNvdXJjZVJlcXVlc3QgcHJldmlld1JlcXVlc3QgPSBbY29udmVydGVyIHByZXZpZXdS
ZXF1ZXN0XTsKIAogICAgICAgICAvLyBXZSB1c2UgW3JlcXVlc3QgVVJMXSBoZXJlIGluc3RlYWQg
b2YgdXJsIHNpbmNlIGl0IHdpbGwgYmUKICAgICAgICAgLy8gdGhlIFVSTCB0aGF0IHRoZSBXZWJE
YXRhU291cmNlIHdpbGwgc2VlIGR1cmluZyAtZGVhbGxvYy4KLSAgICAgICAgYWRkUUxQcmV2aWV3
Q29udmVydGVyV2l0aEZpbGVGb3JVUkwocHJldmlld1JlcXVlc3QudXJsKCksIGNvbnZlcnRlci0+
cGxhdGZvcm1Db252ZXJ0ZXIoKSwgbmlsKTsKKyAgICAgICAgYWRkUUxQcmV2aWV3Q29udmVydGVy
V2l0aEZpbGVGb3JVUkwocHJldmlld1JlcXVlc3QudXJsKCksIGNvbnZlcnRlci5nZXQoKSwgbmls
KTsKIAogICAgICAgICByZXR1cm4gcHJldmlld1JlcXVlc3QubnNVUkxSZXF1ZXN0KEhUVFBCb2R5
VXBkYXRlUG9saWN5OjpEb05vdFVwZGF0ZUhUVFBCb2R5KTsKICAgICB9Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>