<?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>225597</bug_id>
          
          <creation_ts>2021-05-10 09:33:54 -0700</creation_ts>
          <short_desc>Make WebCore::HitTestRequest::RequestType an enum class</short_desc>
          <delta_ts>2021-05-10 15:06:02 -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>WebCore Misc.</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="Wenson Hsieh">wenson_hsieh</reporter>
          <assigned_to name="Wenson Hsieh">wenson_hsieh</assigned_to>
          <cc>aboxhall</cc>
    
    <cc>apinheiro</cc>
    
    <cc>cdumez</cc>
    
    <cc>cfleizach</cc>
    
    <cc>changseok</cc>
    
    <cc>darin</cc>
    
    <cc>dino</cc>
    
    <cc>dmazzoni</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>fmalita</cc>
    
    <cc>glenn</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>jcraig</cc>
    
    <cc>jdiggs</cc>
    
    <cc>jer.noble</cc>
    
    <cc>kangil.han</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>pdr</cc>
    
    <cc>philipj</cc>
    
    <cc>sabouhallawa</cc>
    
    <cc>samuel_white</cc>
    
    <cc>sam</cc>
    
    <cc>schenney</cc>
    
    <cc>sergio</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1758516</commentid>
    <comment_count>0</comment_count>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2021-05-10 09:33:54 -0700</bug_when>
    <thetext>(...for better type safety, and also because we prefer `enum class` over `enum` in modern code)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1758526</commentid>
    <comment_count>1</comment_count>
      <attachid>428178</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2021-05-10 09:54:42 -0700</bug_when>
    <thetext>Created attachment 428178
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1758626</commentid>
    <comment_count>2</comment_count>
      <attachid>428178</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2021-05-10 14:08:51 -0700</bug_when>
    <thetext>Comment on attachment 428178
Patch

Thank you for the review!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1758639</commentid>
    <comment_count>3</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-05-10 14:31:50 -0700</bug_when>
    <thetext>Committed r277295 (237556@main): &lt;https://commits.webkit.org/237556@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 428178.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1758640</commentid>
    <comment_count>4</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-05-10 14:32:18 -0700</bug_when>
    <thetext>&lt;rdar://problem/77788970&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1758669</commentid>
    <comment_count>5</comment_count>
      <attachid>428178</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2021-05-10 15:00:47 -0700</bug_when>
    <thetext>Comment on attachment 428178
Patch

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

&gt; Source/WebCore/rendering/HitTestRequest.h:32
&gt; +    enum class Type {

enum class Type : uint16_t?
enum class Type : uint32_t?
Is it better to not specify an underlying type?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1758674</commentid>
    <comment_count>6</comment_count>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2021-05-10 15:06:02 -0700</bug_when>
    <thetext>(In reply to Darin Adler from comment #5)
&gt; Comment on attachment 428178 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=428178&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/rendering/HitTestRequest.h:32
&gt; &gt; +    enum class Type {
&gt; 
&gt; enum class Type : uint16_t?
&gt; enum class Type : uint32_t?
&gt; Is it better to not specify an underlying type?

Potentially! I don&apos;t have strong preferences as to whether or not we should specify an explicit bit width here.

I did this refactoring because I was planning to add another hit test request type in the near future. Currently, there are exactly 16 types, and this new type would require a `uint32_t`.

That said, AFAICT this type flag only represents transient state (usually just stored on the stack when performing a hit test), so I don&apos;t think we&apos;ll get much of a win from shrinking this enum width.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>428178</attachid>
            <date>2021-05-10 09:54:42 -0700</date>
            <delta_ts>2021-05-10 14:31:52 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-225597-20210510095441.patch</filename>
            <type>text/plain</type>
            <size>89665</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc3MjI5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMTcwNjZmNmEyYWZkM2I2
ZjYzYzUxZTAwMTZjZmIxMjk1ODBlOGVhOC4uY2RkYjUxODBhMWUyMTk4NzdlMGZhOGFmYjBjY2Zk
YmVmYTRmNmI1YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEwNiBAQAorMjAyMS0wNS0xMCAgV2Vu
c29uIEhzaWVoICA8d2Vuc29uX2hzaWVoQGFwcGxlLmNvbT4KKworICAgICAgICBNYWtlIFdlYkNv
cmU6OkhpdFRlc3RSZXF1ZXN0OjpSZXF1ZXN0VHlwZSBhbiBlbnVtIGNsYXNzCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjU1OTcKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBSZW5hbWUgYEhpdFRlc3RSZXF1
ZXN0OjpSZXF1ZXN0VHlwZWAgdG8gYEhpdFRlc3RSZXF1ZXN0OjpUeXBlYCwgYW5kIG1ha2UgaXQg
YW4gZW51bSBjbGFzcy4gSSBhbHNvIG5vdGljZWQgdGhhdAorICAgICAgICB0aGUgZmlyc3QgcmVx
dWVzdCB0eXBlLCBgUmVhZE9ubHlgLCBzdGFydHMgYXQgYSB2YWx1ZSBvZiAyIChgMSA8PCAxYCkg
aW5zdGVhZCBvZiAxICh3aGljaCBzZWVtcyB0byBoYXZlIGJlZW4gYW4KKyAgICAgICAgdW5pbnRl
bnRpb25hbCBjaGFuZ2UgaW4gPGh0dHBzOi8vdHJhYy53ZWJraXQub3JnL3I2MDc2MT4pLgorCisg
ICAgICAgIE5vIGNoYW5nZSBpbiBiZWhhdmlvci4KKworICAgICAgICAqIGFjY2Vzc2liaWxpdHkv
QWNjZXNzaWJpbGl0eU9iamVjdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5
T2JqZWN0OjpwcmVzcyk6CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVu
ZGVyT2JqZWN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlSZW5kZXJPYmpl
Y3Q6OnZpc2libGVQb3NpdGlvbkZvclBvaW50IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkFj
Y2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OmFjY2Vzc2liaWxpdHlIaXRUZXN0IGNvbnN0KToKKyAg
ICAgICAgKiBkb20vRG9jdW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6aXNWYWxpZFBhZ2VT
YW1wbGVMb2NhdGlvbik6CisgICAgICAgICogZG9tL1RyZWVTY29wZS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpUcmVlU2NvcGU6OmVsZW1lbnRzRnJvbVBvaW50KToKKyAgICAgICAgKiBodG1sL0hU
TUxQbHVnSW5FbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxQbHVnSW5FbGVtZW50
Ojppc1JlcGxhY2VtZW50T2JzY3VyZWQpOgorICAgICAgICAqIGh0bWwvTWVkaWFFbGVtZW50U2Vz
c2lvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjppc0VsZW1lbnRNYWluQ29udGVudEZvclB1cnBv
c2VzT2ZBdXRvcGxheSk6CisgICAgICAgICogcGFnZS9BdXRvc2Nyb2xsQ29udHJvbGxlci5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpBdXRvc2Nyb2xsQ29udHJvbGxlcjo6dXBkYXRlQXV0b3Njcm9s
bFJlbmRlcmVyKToKKyAgICAgICAgKiBwYWdlL0NvbnRleHRNZW51Q29udHJvbGxlci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpDb250ZXh0TWVudUNvbnRyb2xsZXI6OmhhbmRsZUNvbnRleHRNZW51
RXZlbnQpOgorICAgICAgICAoV2ViQ29yZTo6Q29udGV4dE1lbnVDb250cm9sbGVyOjpzaG93Q29u
dGV4dE1lbnUpOgorICAgICAgICAoV2ViQ29yZTo6Q29udGV4dE1lbnVDb250cm9sbGVyOjptYXli
ZUNyZWF0ZUNvbnRleHRNZW51KToKKyAgICAgICAgKiBwYWdlL0NvbnRleHRNZW51Q29udHJvbGxl
ci5oOgorICAgICAgICAqIHBhZ2UvRHJhZ0NvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6RHJhZ0NvbnRyb2xsZXI6OmNhblByb2Nlc3NEcmFnKToKKyAgICAgICAgKFdlYkNvcmU6OkRy
YWdDb250cm9sbGVyOjpoaXRUZXN0UmVzdWx0Rm9yRHJhZ1N0YXJ0IGNvbnN0KToKKyAgICAgICAg
KiBwYWdlL0V2ZW50SGFuZGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFdmVudEhhbmRsZXI6
OmV2ZW50TWF5U3RhcnREcmFnIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50SGFuZGxl
cjo6dXBkYXRlU2VsZWN0aW9uRm9yTW91c2VEcmFnKToKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50
SGFuZGxlcjo6aGl0VGVzdFJlc3VsdEF0UG9pbnQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6
RXZlbnRIYW5kbGVyOjp1cGRhdGVDdXJzb3IpOgorICAgICAgICAoV2ViQ29yZTo6RXZlbnRIYW5k
bGVyOjpoYW5kbGVNb3VzZVByZXNzRXZlbnQpOgorICAgICAgICAoV2ViQ29yZTo6RXZlbnRIYW5k
bGVyOjpoYW5kbGVNb3VzZURvdWJsZUNsaWNrRXZlbnQpOgorICAgICAgICAoV2ViQ29yZTo6RXZl
bnRIYW5kbGVyOjpoYW5kbGVNb3VzZU1vdmVFdmVudCk6CisgICAgICAgIChXZWJDb3JlOjpFdmVu
dEhhbmRsZXI6OmhhbmRsZU1vdXNlUmVsZWFzZUV2ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkV2
ZW50SGFuZGxlcjo6aGFuZGxlTW91c2VGb3JjZUV2ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkV2
ZW50SGFuZGxlcjo6dXBkYXRlRHJhZ0FuZERyb3ApOgorICAgICAgICAoV2ViQ29yZTo6RXZlbnRI
YW5kbGVyOjppc0luc2lkZVNjcm9sbGJhciBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpFdmVu
dEhhbmRsZXI6OnNlbmRDb250ZXh0TWVudUV2ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50
SGFuZGxlcjo6c2VuZENvbnRleHRNZW51RXZlbnRGb3JLZXkpOgorICAgICAgICAoV2ViQ29yZTo6
RXZlbnRIYW5kbGVyOjpob3ZlclRpbWVyRmlyZWQpOgorICAgICAgICAoV2ViQ29yZTo6RXZlbnRI
YW5kbGVyOjpkcmFnU291cmNlRW5kZWRBdCk6CisgICAgICAgIChXZWJDb3JlOjpFdmVudEhhbmRs
ZXI6OmhhbmRsZURyYWcpOgorICAgICAgICAoV2ViQ29yZTo6aGl0VGVzdFJlc3VsdEluRnJhbWUp
OgorICAgICAgICAoV2ViQ29yZTo6RXZlbnRIYW5kbGVyOjpoYW5kbGVUb3VjaEV2ZW50KToKKyAg
ICAgICAgKFdlYkNvcmU6OkV2ZW50SGFuZGxlcjo6ZGlzcGF0Y2hTeW50aGV0aWNUb3VjaEV2ZW50
SWZFbmFibGVkKToKKyAgICAgICAgKiBwYWdlL0V2ZW50SGFuZGxlci5oOgorICAgICAgICAqIHBh
Z2UvRm9jdXNDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnVwZGF0ZUZvY3VzQ2Fu
ZGlkYXRlSWZOZWVkZWQpOgorICAgICAgICAqIHBhZ2UvRnJhbWUuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6RnJhbWU6OnZpc2libGVQb3NpdGlvbkZvclBvaW50IGNvbnN0KToKKyAgICAgICAgKFdl
YkNvcmU6OkZyYW1lOjpkb2N1bWVudEF0UG9pbnQpOgorICAgICAgICAqIHBhZ2UvUGFnZS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpQYWdlOjplZGl0YWJsZUVsZW1lbnRzSW5SZWN0IGNvbnN0KToK
KyAgICAgICAgKiBwYWdlL1BvaW50ZXJDYXB0dXJlQ29udHJvbGxlci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpQb2ludGVyQ2FwdHVyZUNvbnRyb2xsZXI6OmNhbmNlbFBvaW50ZXIpOgorICAgICAg
ICAqIHBhZ2UvaW9zL0V2ZW50SGFuZGxlcklPUy5tbToKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50
SGFuZGxlcjo6dHJ5VG9CZWdpbkRyYWdBdFBvaW50KToKKyAgICAgICAgKiBwYWdlL2lvcy9GcmFt
ZUlPUy5tbToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lOjpyZW5kZXJSZWN0Rm9yUG9pbnQgY29u
c3QpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWU6OmJldHRlckFwcHJveGltYXRlTm9kZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpGcmFtZTo6aGl0VGVzdFJlc3VsdEF0Vmlld3BvcnRMb2NhdGlvbik6
CisgICAgICAgIChXZWJDb3JlOjpGcmFtZTo6cXVhbGlmeWluZ05vZGVBdFZpZXdwb3J0TG9jYXRp
b24pOgorICAgICAgICAqIHJlbmRlcmluZy9IaXRUZXN0UmVxdWVzdC5oOgorICAgICAgICAoV2Vi
Q29yZTo6SGl0VGVzdFJlcXVlc3Q6OkhpdFRlc3RSZXF1ZXN0KToKKyAgICAgICAgKFdlYkNvcmU6
OkhpdFRlc3RSZXF1ZXN0OjpyZWFkT25seSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpIaXRU
ZXN0UmVxdWVzdDo6YWN0aXZlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkhpdFRlc3RSZXF1
ZXN0Ojptb3ZlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkhpdFRlc3RSZXF1ZXN0OjpyZWxl
YXNlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkhpdFRlc3RSZXF1ZXN0OjppZ25vcmVDU1NQ
b2ludGVyRXZlbnRzUHJvcGVydHkgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6SGl0VGVzdFJl
cXVlc3Q6Omlnbm9yZUNsaXBwaW5nIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkhpdFRlc3RS
ZXF1ZXN0OjpzdmdDbGlwQ29udGVudCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpIaXRUZXN0
UmVxdWVzdDo6dG91Y2hFdmVudCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpIaXRUZXN0UmVx
dWVzdDo6ZGlzYWxsb3dzVXNlckFnZW50U2hhZG93Q29udGVudCBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpIaXRUZXN0UmVxdWVzdDo6YWxsb3dzRnJhbWVTY3JvbGxiYXJzIGNvbnN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OkhpdFRlc3RSZXF1ZXN0OjphbGxvd3NDaGlsZEZyYW1lQ29udGVudCBj
b25zdCk6CisgICAgICAgIChXZWJDb3JlOjpIaXRUZXN0UmVxdWVzdDo6YWxsb3dzVmlzaWJsZUNo
aWxkRnJhbWVDb250ZW50IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkhpdFRlc3RSZXF1ZXN0
Ojppc0NoaWxkRnJhbWVIaXRUZXN0IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkhpdFRlc3RS
ZXF1ZXN0OjpyZXN1bHRJc0VsZW1lbnRMaXN0IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Okhp
dFRlc3RSZXF1ZXN0OjppbmNsdWRlc0FsbEVsZW1lbnRzVW5kZXJQb2ludCBjb25zdCk6CisgICAg
ICAgIChXZWJDb3JlOjpIaXRUZXN0UmVxdWVzdDo6dHlwZSBjb25zdCk6CisgICAgICAgICgpOiBE
ZWxldGVkLgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJXaWRnZXQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6UmVuZGVyV2lkZ2V0Ojpub2RlQXRQb2ludCk6CisgICAgICAgICogcmVuZGVyaW5n
L3N2Zy9SZW5kZXJTVkdDb250YWluZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU1ZH
Q29udGFpbmVyOjpub2RlQXRGbG9hdFBvaW50KToKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1Jl
bmRlclNWR1Jlc291cmNlQ2xpcHBlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTVkdS
ZXNvdXJjZUNsaXBwZXI6OmhpdFRlc3RDbGlwQ29udGVudCk6CisgICAgICAgICogdGVzdGluZy9J
bnRlcm5hbHMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW50ZXJuYWxzOjpub2Rlc0Zyb21SZWN0
IGNvbnN0KToKKyAgICAgICAgKiB0ZXN0aW5nL0ludGVybmFscy5tbToKKyAgICAgICAgKFdlYkNv
cmU6OkludGVybmFsczo6cmFuZ2VGb3JEaWN0aW9uYXJ5TG9va3VwQXRMb2NhdGlvbik6CisKIDIw
MjEtMDUtMDkgIFdlbnNvbiBIc2llaCAgPHdlbnNvbl9oc2llaEBhcHBsZS5jb20+CiAKICAgICAg
ICAgW21hY09TXSBJbWFnZU92ZXJsYXlDb250cm9sbGVyIHNob3VsZCBwYWludCBzZWxlY3Rpb24g
cXVhZHMgaW5zdGVhZCBvZiBib3VuZGluZyByZWN0cwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCA3ZGUxYTAxODg3NmFj
NjU5OWFkY2NkN2VlZjUyM2MyNTdhN2RmNTE0Li45NTM5Yjg5YzcxOWQ2OTUwOGNiZGRlMWYxMzc5
OTk4MTY1OWVkODRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9T
b3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDQwIEBACisyMDIxLTA1LTEwICBXZW5z
b24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAgICAgIE1ha2UgV2ViQ29y
ZTo6SGl0VGVzdFJlcXVlc3Q6OlJlcXVlc3RUeXBlIGFuIGVudW0gY2xhc3MKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyNTU5NworCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFNlZSBXZWJDb3JlL0NoYW5nZUxv
ZyBmb3IgbW9yZSBkZXRhaWxzLgorCisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRs
ZS9BUEkvQ29jb2EvV0tXZWJQcm9jZXNzUGx1Z0luRnJhbWUubW06CisgICAgICAgICgtW1dLV2Vi
UHJvY2Vzc1BsdWdJbkZyYW1lIGhpdFRlc3Q6b3B0aW9uczpdKToKKyAgICAgICAgKiBXZWJQcm9j
ZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlTmF2aWdhdGlvbkFjdGlvbi5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6OkluamVjdGVkQnVuZGxlTmF2aWdhdGlvbkFjdGlvbjo6SW5qZWN0ZWRC
dW5kbGVOYXZpZ2F0aW9uQWN0aW9uKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvQ29j
b2EvV2ViUGFnZUNvY29hLm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpwZXJmb3JtRGlj
dGlvbmFyeUxvb2t1cEF0TG9jYXRpb24pOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9X
ZWJGcmFtZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkZyYW1lOjpoaXRUZXN0IGNvbnN0KToK
KyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUuaDoKKyAgICAgICAgKFdlYktp
dDo6V2ViRnJhbWU6OmRlZmF1bHRIaXRUZXN0UmVxdWVzdFR5cGVzKToKKyAgICAgICAgKiBXZWJQ
cm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OmhhbmRsZUNvbnRl
eHRNZW51RXZlbnQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpjaGFyYWN0ZXJJbmRleEZv
clBvaW50QXN5bmMpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjp1cGRhdGVXaXRoSW1hZ2VF
eHRyYWN0aW9uUmVzdWx0KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBh
Z2VJT1MubW06CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnJlY3RGb3JFbGVtZW50QXRJbnRl
cmFjdGlvbkxvY2F0aW9uIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6cmFuZ2VGb3JQb2ludElu
Um9vdFZpZXdDb29yZGluYXRlcyk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnNldEZvY3Vz
ZWRGcmFtZUJlZm9yZVNlbGVjdGluZ1RleHRBdExvY2F0aW9uKToKKyAgICAgICAgKFdlYktpdDo6
aXNPYnNjdXJlZEVsZW1lbnQpOgorICAgICAgICAoV2ViS2l0OjpzZWxlY3Rpb25Qb3NpdGlvbklu
Zm9ybWF0aW9uKToKKyAgICAgICAgKFdlYktpdDo6dGV4dEludGVyYWN0aW9uUG9zaXRpb25JbmZv
cm1hdGlvbik6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnBvc2l0aW9uSW5mb3JtYXRpb24p
OgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9tYWMvV2ViUGFnZU1hYy5tbToKKyAgICAg
ICAgKFdlYktpdDo6V2ViUGFnZTo6c2hvdWxkRGVsYXlXaW5kb3dPcmRlcmluZ0V2ZW50KToKKyAg
ICAgICAgKFdlYktpdDo6V2ViUGFnZTo6YWNjZXB0c0ZpcnN0TW91c2UpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJQYWdlOjpwZXJmb3JtSW1tZWRpYXRlQWN0aW9uSGl0VGVzdEF0TG9jYXRpb24pOgor
ICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpsb29rdXBUZXh0QXRMb2NhdGlvbik6CisKIDIwMjEt
MDUtMDggIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29tPgogCiAgICAg
ICAgIFtTT1VQXSBVc2UgdGhlIG5ldyBsaWJzb3VwIG5ldHdvcmsgbWV0cmljcyBBUEkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvaW9zL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvaW9zL0NoYW5nZUxvZwppbmRleCAzYjBmMDYxODljMjIyNmQ5MGI3YzY2MWQ5MTVmODQ2
NzQ3NGI2NDU2Li5jMjY5MWMxMTUzNGY1YmI2NjliYWExMWRlMmIyM2NmYTM4YjMzMDJjIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L2lvcy9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dl
YktpdExlZ2FjeS9pb3MvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMjEtMDUtMTAgIFdl
bnNvbiBIc2llaCAgPHdlbnNvbl9oc2llaEBhcHBsZS5jb20+CisKKyAgICAgICAgTWFrZSBXZWJD
b3JlOjpIaXRUZXN0UmVxdWVzdDo6UmVxdWVzdFR5cGUgYW4gZW51bSBjbGFzcworICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI1NTk3CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgU2VlIFdlYkNvcmUvQ2hhbmdl
TG9nIGZvciBtb3JlIGRldGFpbHMuCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJGcmFt
ZUlPUy5tbToKKyAgICAgICAgKC1bV2ViRnJhbWUgZWxlbWVudFJlY3RBdFBvaW50Ol0pOgorCiAy
MDIxLTA0LTIwICBXZW5zb24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgogCiAgICAg
ICAgIFJlbmFtZSBXZWJDb3JlOjpTZWxlY3Rpb25SZWN0IHRvIFdlYkNvcmU6OlNlbGVjdGlvbkdl
b21ldHJ5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cgYi9T
b3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKaW5kZXggYmJjZDIyMzY1YjJiZDhhMGI4
MjlmNzg3NGMxZDZmZjU1OGIyMTY3Yi4uMDJhMjkzZTViNTMyMmFhODBhYWJmYjA3MTQ3YjNkM2I5
NjhmMzY4YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCisr
KyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIxIEBACisy
MDIxLTA1LTEwICBXZW5zb24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAg
ICAgIE1ha2UgV2ViQ29yZTo6SGl0VGVzdFJlcXVlc3Q6OlJlcXVlc3RUeXBlIGFuIGVudW0gY2xh
c3MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyNTU5
NworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFNlZSBX
ZWJDb3JlL0NoYW5nZUxvZyBmb3IgbW9yZSBkZXRhaWxzLgorCisgICAgICAgICogV2ViQ29yZVN1
cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQubW06CisgICAgICAgIChXZWJGcmFtZUxvYWRlckNs
aWVudDo6YWN0aW9uRGljdGlvbmFyeSBjb25zdCk6CisgICAgICAgICogV2ViVmlldy9XZWJGcmFt
ZS5tbToKKyAgICAgICAgKC1bV2ViRnJhbWUgZWxlbWVudEF0UG9pbnQ6XSk6CisgICAgICAgICog
V2ViVmlldy9XZWJIVE1MVmlldy5tbToKKyAgICAgICAgKC1bV2ViSFRNTFZpZXcgZWxlbWVudEF0
UG9pbnQ6YWxsb3dTaGFkb3dDb250ZW50Ol0pOgorICAgICAgICAqIFdlYlZpZXcvV2ViSW1tZWRp
YXRlQWN0aW9uQ29udHJvbGxlci5tbToKKyAgICAgICAgKC1bV2ViSW1tZWRpYXRlQWN0aW9uQ29u
dHJvbGxlciBwZXJmb3JtSGl0VGVzdEF0UG9pbnQ6XSk6CisKIDIwMjEtMDUtMDcgIFdlbnNvbiBI
c2llaCAgPHdlbnNvbl9oc2llaEBhcHBsZS5jb20+CiAKICAgICAgICAgW21hY09TXSBTZXQgdGhl
IC1pc1NvdXJjZUVkaXRhYmxlIHByb3BlcnR5IHdoZW4gcHJlc2VudGluZyB3ZWJwYWdlIHRyYW5z
bGF0aW9uIHBvcHVwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9DaGFuZ2VM
b2cgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9DaGFuZ2VMb2cKaW5kZXggZGFlNjhmMWEzOTJi
YmQ1ZWQwNzVkMDQ0MWY5YTM4Mjg0ZWM5ZDFkOS4uMzc5YWU3ZWYxYTNkZjE3YTE4Nzc1OWU1ZjEx
YjMzZTBiZDNhYjdlMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vQ2hhbmdl
TG9nCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE5
IEBACisyMDIxLTA1LTEwICBXZW5zb24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgor
CisgICAgICAgIE1ha2UgV2ViQ29yZTo6SGl0VGVzdFJlcXVlc3Q6OlJlcXVlc3RUeXBlIGFuIGVu
dW0gY2xhc3MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTIyNTU5NworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IFNlZSBXZWJDb3JlL0NoYW5nZUxvZyBmb3IgbW9yZSBkZXRhaWxzLgorCisgICAgICAgICogV2Vi
QWN0aW9uUHJvcGVydHlCYWcuY3BwOgorICAgICAgICAoV2ViQWN0aW9uUHJvcGVydHlCYWc6OlJl
YWQpOgorICAgICAgICAqIFdlYlZpZXcuY3BwOgorICAgICAgICAoV2ViVmlldzo6aGFuZGxlQ29u
dGV4dE1lbnVFdmVudCk6CisgICAgICAgIChXZWJWaWV3OjpnZXN0dXJlTm90aWZ5KToKKyAgICAg
ICAgKFdlYlZpZXc6OmVsZW1lbnRBdFBvaW50KToKKwogMjAyMS0wNS0wNCAgQWxleCBDaHJpc3Rl
bnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgogCiAgICAgICAgIFJlbW92ZSB1bnVzZWQg
cmVmZXJlbmNlcyB0byBQYWdlR3JvdXAgZnJvbSBXZWJLaXRMZWdhY3kKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3QuY3BwCmluZGV4IDBk
NzIxOGNlMTE0ODQ3YTc0ZGE2ZDI5NDQwZGU1ZDJkMWI2ZTE1ZTYuLmYxYTI1ODliY2RlNTkzMTA0
NTdmYjRkMWIzYmYyODFjOTk2MzIxZTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vz
c2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYWNj
ZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmNwcApAQCAtODA4LDcgKzgwOCw3IEBAIGJv
b2wgQWNjZXNzaWJpbGl0eU9iamVjdDo6cHJlc3MoKQogICAgIEVsZW1lbnQqIGhpdFRlc3RFbGVt
ZW50ID0gbnVsbHB0cjsKICAgICBEb2N1bWVudCogZG9jdW1lbnQgPSB0aGlzLT5kb2N1bWVudCgp
OwogICAgIGlmIChkb2N1bWVudCkgewotICAgICAgICBjb25zdGV4cHIgT3B0aW9uU2V0PEhpdFRl
c3RSZXF1ZXN0OjpSZXF1ZXN0VHlwZT4gaGl0VHlwZSB7IEhpdFRlc3RSZXF1ZXN0OjpSZWFkT25s
eSwgSGl0VGVzdFJlcXVlc3Q6OkFjdGl2ZSwgSGl0VGVzdFJlcXVlc3Q6OkFjY2Vzc2liaWxpdHlI
aXRUZXN0IH07CisgICAgICAgIGNvbnN0ZXhwciBPcHRpb25TZXQ8SGl0VGVzdFJlcXVlc3Q6OlR5
cGU+IGhpdFR5cGUgeyBIaXRUZXN0UmVxdWVzdDo6VHlwZTo6UmVhZE9ubHksIEhpdFRlc3RSZXF1
ZXN0OjpUeXBlOjpBY3RpdmUsIEhpdFRlc3RSZXF1ZXN0OjpUeXBlOjpBY2Nlc3NpYmlsaXR5SGl0
VGVzdCB9OwogICAgICAgICBIaXRUZXN0UmVzdWx0IGhpdFRlc3RSZXN1bHQgeyBjbGlja1BvaW50
KCkgfTsKICAgICAgICAgZG9jdW1lbnQtPmhpdFRlc3QoaGl0VHlwZSwgaGl0VGVzdFJlc3VsdCk7
CiAgICAgICAgIGlmIChhdXRvKiBpbm5lck5vZGUgPSBoaXRUZXN0UmVzdWx0LmlubmVyTm9kZSgp
KSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxp
dHlSZW5kZXJPYmplY3QuY3BwIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3Np
YmlsaXR5UmVuZGVyT2JqZWN0LmNwcAppbmRleCBkNzc1YmM1ZGFlMzU1MzgyYTQxODU3ZTBhMWFl
NjFiYTM2OGIxOGI0Li5iMGRmNWVhNGQyOTIyMTkzZjYzZjFiYzRlOGEyMzM5OGE3YjlkZDNjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5k
ZXJPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJp
bGl0eVJlbmRlck9iamVjdC5jcHAKQEAgLTIzMTMsNyArMjMxMyw3IEBAIFZpc2libGVQb3NpdGlv
biBBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0Ojp2aXNpYmxlUG9zaXRpb25Gb3JQb2ludChjb25z
dCBJbnRQb2luCiAgICAgTm9kZSogaW5uZXJOb2RlID0gbnVsbHB0cjsKICAgICAKICAgICAvLyBM
b2NhdGUgdGhlIG5vZGUgY29udGFpbmluZyB0aGUgcG9pbnQKLSAgICAvLyBGSVhNRTogUmVtb3Zl
IHRoaXMgbG9vcCBhbmQgaW5zdGVhZCBhZGQgSGl0VGVzdFJlcXVlc3Q6OkFsbG93VmlzaWJsZUNo
aWxkRnJhbWVDb250ZW50T25seSB0byB0aGUgaGl0IHRlc3QgcmVxdWVzdCB0eXBlLgorICAgIC8v
IEZJWE1FOiBSZW1vdmUgdGhpcyBsb29wIGFuZCBpbnN0ZWFkIGFkZCBIaXRUZXN0UmVxdWVzdDo6
VHlwZTo6QWxsb3dWaXNpYmxlQ2hpbGRGcmFtZUNvbnRlbnRPbmx5IHRvIHRoZSBoaXQgdGVzdCBy
ZXF1ZXN0IHR5cGUuCiAgICAgTGF5b3V0UG9pbnQgcG9pbnRSZXN1bHQ7CiAgICAgd2hpbGUgKDEp
IHsKICAgICAgICAgTGF5b3V0UG9pbnQgcG9pbnRUb1VzZTsKQEAgLTIzMjIsNyArMjMyMiw3IEBA
IFZpc2libGVQb3NpdGlvbiBBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0Ojp2aXNpYmxlUG9zaXRp
b25Gb3JQb2ludChjb25zdCBJbnRQb2luCiAjZWxzZQogICAgICAgICBwb2ludFRvVXNlID0gcG9p
bnQ7CiAjZW5kaWYKLSAgICAgICAgY29uc3RleHByIE9wdGlvblNldDxIaXRUZXN0UmVxdWVzdDo6
UmVxdWVzdFR5cGU+IGhpdFR5cGUgeyBIaXRUZXN0UmVxdWVzdDo6UmVhZE9ubHksIEhpdFRlc3RS
ZXF1ZXN0OjpBY3RpdmUgfTsKKyAgICAgICAgY29uc3RleHByIE9wdGlvblNldDxIaXRUZXN0UmVx
dWVzdDo6VHlwZT4gaGl0VHlwZSB7IEhpdFRlc3RSZXF1ZXN0OjpUeXBlOjpSZWFkT25seSwgSGl0
VGVzdFJlcXVlc3Q6OlR5cGU6OkFjdGl2ZSB9OwogICAgICAgICBIaXRUZXN0UmVzdWx0IHJlc3Vs
dCB7IHBvaW50VG9Vc2UgfTsKICAgICAgICAgcmVuZGVyVmlldy0+ZG9jdW1lbnQoKS5oaXRUZXN0
KGhpdFR5cGUsIHJlc3VsdCk7CiAgICAgICAgIGlubmVyTm9kZSA9IHJlc3VsdC5pbm5lck5vZGUo
KTsKQEAgLTI1MzYsNyArMjUzNiw3IEBAIEFYQ29yZU9iamVjdCogQWNjZXNzaWJpbGl0eVJlbmRl
ck9iamVjdDo6YWNjZXNzaWJpbGl0eUhpdFRlc3QoY29uc3QgSW50UG9pbnQmIHBvCiAKICAgICBS
ZW5kZXJMYXllciogbGF5ZXIgPSBkb3duY2FzdDxSZW5kZXJCb3g+KCptX3JlbmRlcmVyKS5sYXll
cigpOwogICAgICAKLSAgICBjb25zdGV4cHIgT3B0aW9uU2V0PEhpdFRlc3RSZXF1ZXN0OjpSZXF1
ZXN0VHlwZT4gaGl0VHlwZSB7IEhpdFRlc3RSZXF1ZXN0OjpSZWFkT25seSwgSGl0VGVzdFJlcXVl
c3Q6OkFjdGl2ZSwgSGl0VGVzdFJlcXVlc3Q6OkFjY2Vzc2liaWxpdHlIaXRUZXN0IH07CisgICAg
Y29uc3RleHByIE9wdGlvblNldDxIaXRUZXN0UmVxdWVzdDo6VHlwZT4gaGl0VHlwZSB7IEhpdFRl
c3RSZXF1ZXN0OjpUeXBlOjpSZWFkT25seSwgSGl0VGVzdFJlcXVlc3Q6OlR5cGU6OkFjdGl2ZSwg
SGl0VGVzdFJlcXVlc3Q6OlR5cGU6OkFjY2Vzc2liaWxpdHlIaXRUZXN0IH07CiAgICAgSGl0VGVz
dFJlc3VsdCBoaXRUZXN0UmVzdWx0IHsgcG9pbnQgfTsKICAgICBsYXllci0+aGl0VGVzdChoaXRU
eXBlLCBoaXRUZXN0UmVzdWx0KTsKICAgICBOb2RlKiBub2RlID0gaGl0VGVzdFJlc3VsdC5pbm5l
ck5vZGUoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCmluZGV4IGQ5MGRiMjgxN2RjNzEyMzljYmY4
OTkxMGVhZWMwNDE3NWM1YTUwYTQuLjk1YjhkNWFhNWFmMjA3M2UwOTIwZjVhOTRhZjhjYTdlYWZk
Y2QxMDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcApAQCAtMzg3NSw3ICszODc1LDcgQEAgc3Rh
dGljIGJvb2wgaXNWYWxpZFBhZ2VTYW1wbGVMb2NhdGlvbihEb2N1bWVudCYgZG9jdW1lbnQsIGNv
bnN0IEludFBvaW50JiBsb2NhdGkKIHsKICAgICAvLyBGSVhNRTogPGh0dHBzOi8vd2Via2l0Lm9y
Zy9iLzIyNTE2Nz4gKFNhbXBsZWQgUGFnZSBUb3AgQ29sb3I6IGhvb2sgaW50byBwYWludGluZyBs
b2dpYyBpbnN0ZWFkIG9mIHRha2luZyBzbmFwc2hvdHMpCiAKLSAgICBjb25zdGV4cHIgT3B0aW9u
U2V0PEhpdFRlc3RSZXF1ZXN0OjpSZXF1ZXN0VHlwZT4gaGl0VGVzdFJlcXVlc3RUeXBlcyB7IEhp
dFRlc3RSZXF1ZXN0OjpSZWFkT25seSwgSGl0VGVzdFJlcXVlc3Q6Oklnbm9yZUNTU1BvaW50ZXJF
dmVudHNQcm9wZXJ0eSwgSGl0VGVzdFJlcXVlc3Q6OkRpc2FsbG93VXNlckFnZW50U2hhZG93Q29u
dGVudCwgSGl0VGVzdFJlcXVlc3Q6OkNvbGxlY3RNdWx0aXBsZUVsZW1lbnRzLCBIaXRUZXN0UmVx
dWVzdDo6SW5jbHVkZUFsbEVsZW1lbnRzVW5kZXJQb2ludCB9OworICAgIGNvbnN0ZXhwciBPcHRp
b25TZXQ8SGl0VGVzdFJlcXVlc3Q6OlR5cGU+IGhpdFRlc3RSZXF1ZXN0VHlwZXMgeyBIaXRUZXN0
UmVxdWVzdDo6VHlwZTo6UmVhZE9ubHksIEhpdFRlc3RSZXF1ZXN0OjpUeXBlOjpJZ25vcmVDU1NQ
b2ludGVyRXZlbnRzUHJvcGVydHksIEhpdFRlc3RSZXF1ZXN0OjpUeXBlOjpEaXNhbGxvd1VzZXJB
Z2VudFNoYWRvd0NvbnRlbnQsIEhpdFRlc3RSZXF1ZXN0OjpUeXBlOjpDb2xsZWN0TXVsdGlwbGVF
bGVtZW50cywgSGl0VGVzdFJlcXVlc3Q6OlR5cGU6OkluY2x1ZGVBbGxFbGVtZW50c1VuZGVyUG9p
bnQgfTsKICAgICBIaXRUZXN0UmVzdWx0IGhpdFRlc3RSZXN1bHQobG9jYXRpb24pOwogICAgIGRv
Y3VtZW50LmhpdFRlc3QoaGl0VGVzdFJlcXVlc3RUeXBlcywgaGl0VGVzdFJlc3VsdCk7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9UcmVlU2NvcGUuY3BwIGIvU291cmNlL1dlYkNv
cmUvZG9tL1RyZWVTY29wZS5jcHAKaW5kZXggMDhjNWYzNjczODcyNmE0N2RjOTk3MzEyZjkyNGJm
MzMyYjQ4ODYyYy4uYjY3OWEwYTNiYjZhYWRmYjU0ZjMwNjQxMTVkMTNiN2QzYzExMmQ1NSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1RyZWVTY29wZS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvZG9tL1RyZWVTY29wZS5jcHAKQEAgLTM5NSw3ICszOTUsNyBAQCBWZWN0b3I8UmVmUHRy
PEVsZW1lbnQ+PiBUcmVlU2NvcGU6OmVsZW1lbnRzRnJvbVBvaW50KGRvdWJsZSBjbGllbnRYLCBk
b3VibGUgY2xpZQogICAgIGlmICghYWJzb2x1dGVQb2ludCkKICAgICAgICAgcmV0dXJuIGVsZW1l
bnRzOwogCi0gICAgY29uc3RleHByIE9wdGlvblNldDxIaXRUZXN0UmVxdWVzdDo6UmVxdWVzdFR5
cGU+IGhpdFR5cGUgeyBIaXRUZXN0UmVxdWVzdDo6UmVhZE9ubHksIEhpdFRlc3RSZXF1ZXN0OjpB
Y3RpdmUsIEhpdFRlc3RSZXF1ZXN0OjpEaXNhbGxvd1VzZXJBZ2VudFNoYWRvd0NvbnRlbnQsIEhp
dFRlc3RSZXF1ZXN0OjpDb2xsZWN0TXVsdGlwbGVFbGVtZW50cywgSGl0VGVzdFJlcXVlc3Q6Oklu
Y2x1ZGVBbGxFbGVtZW50c1VuZGVyUG9pbnQgfTsKKyAgICBjb25zdGV4cHIgT3B0aW9uU2V0PEhp
dFRlc3RSZXF1ZXN0OjpUeXBlPiBoaXRUeXBlIHsgSGl0VGVzdFJlcXVlc3Q6OlR5cGU6OlJlYWRP
bmx5LCBIaXRUZXN0UmVxdWVzdDo6VHlwZTo6QWN0aXZlLCBIaXRUZXN0UmVxdWVzdDo6VHlwZTo6
RGlzYWxsb3dVc2VyQWdlbnRTaGFkb3dDb250ZW50LCBIaXRUZXN0UmVxdWVzdDo6VHlwZTo6Q29s
bGVjdE11bHRpcGxlRWxlbWVudHMsIEhpdFRlc3RSZXF1ZXN0OjpUeXBlOjpJbmNsdWRlQWxsRWxl
bWVudHNVbmRlclBvaW50IH07CiAgICAgSGl0VGVzdFJlc3VsdCByZXN1bHQgeyBhYnNvbHV0ZVBv
aW50LnZhbHVlKCkgfTsKICAgICBkb2N1bWVudFNjb3BlKCkuaGl0VGVzdChoaXRUeXBlLCByZXN1
bHQpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxQbHVnSW5FbGVtZW50
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFBsdWdJbkVsZW1lbnQuY3BwCmluZGV4IGNk
NmMyNjUwNDYxODZhMGYzMmZhYmVmMWNhMDQzZGJiNmZmN2FkYzIuLjg1MDc4MThlZjljZWQxZjdh
MDgzYTBlZjhiOWNhMDkwNGE2MTljMGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTFBsdWdJbkVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFBsdWdJ
bkVsZW1lbnQuY3BwCkBAIC00NjksNyArNDY5LDcgQEAgYm9vbCBIVE1MUGx1Z0luRWxlbWVudDo6
aXNSZXBsYWNlbWVudE9ic2N1cmVkKCkKICAgICBhdXRvIGhlaWdodCA9IHZpZXdSZWN0LmhlaWdo
dCgpOwogICAgIC8vIEhpdCB0ZXN0IHRoZSBjZW50ZXIgYW5kIG5lYXIgdGhlIGNvcm5lcnMgb2Yg
dGhlIHJlcGxhY2VtZW50IHRleHQgdG8gZW5zdXJlCiAgICAgLy8gaXQgaXMgdmlzaWJsZSBhbmQg
aXMgbm90IG1hc2tlZCBieSBvdGhlciBlbGVtZW50cy4KLSAgICBjb25zdGV4cHIgT3B0aW9uU2V0
PEhpdFRlc3RSZXF1ZXN0OjpSZXF1ZXN0VHlwZT4gaGl0VHlwZSB7IEhpdFRlc3RSZXF1ZXN0OjpS
ZWFkT25seSwgSGl0VGVzdFJlcXVlc3Q6OkFjdGl2ZSwgSGl0VGVzdFJlcXVlc3Q6Oklnbm9yZUNs
aXBwaW5nLCBIaXRUZXN0UmVxdWVzdDo6RGlzYWxsb3dVc2VyQWdlbnRTaGFkb3dDb250ZW50LCBI
aXRUZXN0UmVxdWVzdDo6QWxsb3dDaGlsZEZyYW1lQ29udGVudCB9OworICAgIGNvbnN0ZXhwciBP
cHRpb25TZXQ8SGl0VGVzdFJlcXVlc3Q6OlR5cGU+IGhpdFR5cGUgeyBIaXRUZXN0UmVxdWVzdDo6
VHlwZTo6UmVhZE9ubHksIEhpdFRlc3RSZXF1ZXN0OjpUeXBlOjpBY3RpdmUsIEhpdFRlc3RSZXF1
ZXN0OjpUeXBlOjpJZ25vcmVDbGlwcGluZywgSGl0VGVzdFJlcXVlc3Q6OlR5cGU6OkRpc2FsbG93
VXNlckFnZW50U2hhZG93Q29udGVudCwgSGl0VGVzdFJlcXVlc3Q6OlR5cGU6OkFsbG93Q2hpbGRG
cmFtZUNvbnRlbnQgfTsKICAgICBIaXRUZXN0UmVzdWx0IHJlc3VsdDsKICAgICBIaXRUZXN0TG9j
YXRpb24gbG9jYXRpb24geyBMYXlvdXRQb2ludCB7IHZpZXdSZWN0LmNlbnRlcigpIH0gfTsKICAg
ICBBU1NFUlQoIXJlbmRlclZpZXctPm5lZWRzTGF5b3V0KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaHRtbC9NZWRpYUVsZW1lbnRTZXNzaW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvTWVkaWFFbGVtZW50U2Vzc2lvbi5jcHAKaW5kZXggOTU0OGI1NjEwMWEyOGYxN2ZkNmY4Yjdl
ZDVkOWUyNTc4MzQ5NzAxMC4uZjZiYzk2NGQ1ZDU4ZTg4OTA4NWVkYmQ4YWE2MmMxMWI4NmEwMDA4
OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9NZWRpYUVsZW1lbnRTZXNzaW9uLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL01lZGlhRWxlbWVudFNlc3Npb24uY3BwCkBAIC05
NjIsNyArOTYyLDcgQEAgc3RhdGljIGJvb2wgaXNFbGVtZW50TWFpbkNvbnRlbnRGb3JQdXJwb3Nl
c09mQXV0b3BsYXkoY29uc3QgSFRNTE1lZGlhRWxlbWVudCYgZWwKICAgICBJbnRSZWN0IHJlY3RS
ZWxhdGl2ZVRvVmlldyA9IGVsZW1lbnQuY2xpZW50UmVjdCgpOwogICAgIFNjcm9sbFBvc2l0aW9u
IHNjcm9sbFBvc2l0aW9uID0gbWFpbkZyYW1lLnZpZXcoKS0+ZG9jdW1lbnRTY3JvbGxQb3NpdGlv
blJlbGF0aXZlVG9WaWV3T3JpZ2luKCk7CiAgICAgSW50UmVjdCByZWN0UmVsYXRpdmVUb1RvcERv
Y3VtZW50KHJlY3RSZWxhdGl2ZVRvVmlldy5sb2NhdGlvbigpICsgc2Nyb2xsUG9zaXRpb24sIHJl
Y3RSZWxhdGl2ZVRvVmlldy5zaXplKCkpOwotICAgIE9wdGlvblNldDxIaXRUZXN0UmVxdWVzdDo6
UmVxdWVzdFR5cGU+IGhpdFR5cGUgeyBIaXRUZXN0UmVxdWVzdDo6UmVhZE9ubHksIEhpdFRlc3RS
ZXF1ZXN0OjpBY3RpdmUsIEhpdFRlc3RSZXF1ZXN0OjpBbGxvd0NoaWxkRnJhbWVDb250ZW50LCBI
aXRUZXN0UmVxdWVzdDo6SWdub3JlQ2xpcHBpbmcsIEhpdFRlc3RSZXF1ZXN0OjpEaXNhbGxvd1Vz
ZXJBZ2VudFNoYWRvd0NvbnRlbnQgfTsKKyAgICBPcHRpb25TZXQ8SGl0VGVzdFJlcXVlc3Q6OlR5
cGU+IGhpdFR5cGUgeyBIaXRUZXN0UmVxdWVzdDo6VHlwZTo6UmVhZE9ubHksIEhpdFRlc3RSZXF1
ZXN0OjpUeXBlOjpBY3RpdmUsIEhpdFRlc3RSZXF1ZXN0OjpUeXBlOjpBbGxvd0NoaWxkRnJhbWVD
b250ZW50LCBIaXRUZXN0UmVxdWVzdDo6VHlwZTo6SWdub3JlQ2xpcHBpbmcsIEhpdFRlc3RSZXF1
ZXN0OjpUeXBlOjpEaXNhbGxvd1VzZXJBZ2VudFNoYWRvd0NvbnRlbnQgfTsKICAgICBIaXRUZXN0
UmVzdWx0IHJlc3VsdChyZWN0UmVsYXRpdmVUb1RvcERvY3VtZW50LmNlbnRlcigpKTsKIAogICAg
IG1haW5GcmFtZS5kb2N1bWVudCgpLT5oaXRUZXN0KGhpdFR5cGUsIHJlc3VsdCk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0F1dG9zY3JvbGxDb250cm9sbGVyLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvQXV0b3Njcm9sbENvbnRyb2xsZXIuY3BwCmluZGV4IGZhMmE3N2E4MDg5
NDc0ZDgyNWYyMzEyNTIxYTY4OGUwOGVhYTM0MTYuLmIwMGM1MTgyYWYyOTUxMzQ2YTdlNjJkOWRi
Zjk5MjU2MTcxYTI4YmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQXV0b3Njcm9s
bENvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQXV0b3Njcm9sbENvbnRy
b2xsZXIuY3BwCkBAIC0xMjcsNyArMTI3LDcgQEAgdm9pZCBBdXRvc2Nyb2xsQ29udHJvbGxlcjo6
dXBkYXRlQXV0b3Njcm9sbFJlbmRlcmVyKCkKICAgICBSZW5kZXJPYmplY3QqIHJlbmRlcmVyID0g
bV9hdXRvc2Nyb2xsUmVuZGVyZXI7CiAKICNpZiBFTkFCTEUoUEFOX1NDUk9MTElORykKLSAgICBj
b25zdGV4cHIgT3B0aW9uU2V0PEhpdFRlc3RSZXF1ZXN0OjpSZXF1ZXN0VHlwZT4gaGl0VHlwZSB7
IEhpdFRlc3RSZXF1ZXN0OjpSZWFkT25seSwgSGl0VGVzdFJlcXVlc3Q6OkFjdGl2ZSwgSGl0VGVz
dFJlcXVlc3Q6OkFsbG93Q2hpbGRGcmFtZUNvbnRlbnQgfTsKKyAgICBjb25zdGV4cHIgT3B0aW9u
U2V0PEhpdFRlc3RSZXF1ZXN0OjpUeXBlPiBoaXRUeXBlIHsgSGl0VGVzdFJlcXVlc3Q6OlR5cGU6
OlJlYWRPbmx5LCBIaXRUZXN0UmVxdWVzdDo6VHlwZTo6QWN0aXZlLCBIaXRUZXN0UmVxdWVzdDo6
VHlwZTo6QWxsb3dDaGlsZEZyYW1lQ29udGVudCB9OwogICAgIEhpdFRlc3RSZXN1bHQgaGl0VGVz
dCA9IG1fYXV0b3Njcm9sbFJlbmRlcmVyLT5mcmFtZSgpLmV2ZW50SGFuZGxlcigpLmhpdFRlc3RS
ZXN1bHRBdFBvaW50KG1fcGFuU2Nyb2xsU3RhcnRQb3MsIGhpdFR5cGUpOwogCiAgICAgaWYgKE5v
ZGUqIG5vZGVBdFBvaW50ID0gaGl0VGVzdC5pbm5lck5vZGUoKSkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvQ29udGV4dE1lbnVDb250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvQ29udGV4dE1lbnVDb250cm9sbGVyLmNwcAppbmRleCBjODRjMzJlNWEyOGJiYWRiMzVl
OWU4ZTU1YTNjOTdiY2UyODA5Yzc0Li5lZDI2YzkzNjU2ODhkMThmMTc5MTQ3ODZiM2FmNTFiNzQz
YmFkMjk0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0NvbnRleHRNZW51Q29udHJv
bGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9Db250ZXh0TWVudUNvbnRyb2xsZXIu
Y3BwCkBAIC0xMDMsNyArMTAzLDcgQEAgdm9pZCBDb250ZXh0TWVudUNvbnRyb2xsZXI6OmhhbmRs
ZUNvbnRleHRNZW51RXZlbnQoRXZlbnQmIGV2ZW50KQogCiAgICAgU2V0Rm9yU2NvcGU8Ym9vbD4g
aXNIYW5kbGluZ0NvbnRleHRNZW51RXZlbnRGb3JTY29wZShtX2lzSGFuZGxpbmdDb250ZXh0TWVu
dUV2ZW50LCB0cnVlKTsKIAotICAgIGNvbnN0ZXhwciBPcHRpb25TZXQ8SGl0VGVzdFJlcXVlc3Q6
OlJlcXVlc3RUeXBlPiBoaXRUeXBlIHsgSGl0VGVzdFJlcXVlc3Q6OlJlYWRPbmx5LCBIaXRUZXN0
UmVxdWVzdDo6QWN0aXZlLCBIaXRUZXN0UmVxdWVzdDo6RGlzYWxsb3dVc2VyQWdlbnRTaGFkb3dD
b250ZW50LCBIaXRUZXN0UmVxdWVzdDo6QWxsb3dDaGlsZEZyYW1lQ29udGVudCB9OworICAgIGNv
bnN0ZXhwciBPcHRpb25TZXQ8SGl0VGVzdFJlcXVlc3Q6OlR5cGU+IGhpdFR5cGUgeyBIaXRUZXN0
UmVxdWVzdDo6VHlwZTo6UmVhZE9ubHksIEhpdFRlc3RSZXF1ZXN0OjpUeXBlOjpBY3RpdmUsIEhp
dFRlc3RSZXF1ZXN0OjpUeXBlOjpEaXNhbGxvd1VzZXJBZ2VudFNoYWRvd0NvbnRlbnQsIEhpdFRl
c3RSZXF1ZXN0OjpUeXBlOjpBbGxvd0NoaWxkRnJhbWVDb250ZW50IH07CiAgICAgbV9jb250ZXh0
TWVudSA9IG1heWJlQ3JlYXRlQ29udGV4dE1lbnUoZXZlbnQsIGhpdFR5cGUsIENvbnRleHRNZW51
Q29udGV4dDo6VHlwZTo6Q29udGV4dE1lbnUpOwogICAgIGlmICghbV9jb250ZXh0TWVudSkKICAg
ICAgICAgcmV0dXJuOwpAQCAtMTI0LDkgKzEyNCw5IEBAIHZvaWQgQ29udGV4dE1lbnVDb250cm9s
bGVyOjpzaG93Q29udGV4dE1lbnUoRXZlbnQmIGV2ZW50LCBDb250ZXh0TWVudVByb3ZpZGVyJiBw
CiAKICAgICBhdXRvIGNvbnRleHRUeXBlID0gcHJvdmlkZXIuY29udGV4dE1lbnVDb250ZXh0VHlw
ZSgpOwogCi0gICAgT3B0aW9uU2V0PEhpdFRlc3RSZXF1ZXN0OjpSZXF1ZXN0VHlwZT4gaGl0VHlw
ZSB7IEhpdFRlc3RSZXF1ZXN0OjpSZWFkT25seSwgSGl0VGVzdFJlcXVlc3Q6OkFjdGl2ZSwgSGl0
VGVzdFJlcXVlc3Q6OkFsbG93Q2hpbGRGcmFtZUNvbnRlbnQgfTsKKyAgICBPcHRpb25TZXQ8SGl0
VGVzdFJlcXVlc3Q6OlR5cGU+IGhpdFR5cGUgeyBIaXRUZXN0UmVxdWVzdDo6VHlwZTo6UmVhZE9u
bHksIEhpdFRlc3RSZXF1ZXN0OjpUeXBlOjpBY3RpdmUsIEhpdFRlc3RSZXF1ZXN0OjpUeXBlOjpB
bGxvd0NoaWxkRnJhbWVDb250ZW50IH07CiAgICAgaWYgKGNvbnRleHRUeXBlID09IENvbnRleHRN
ZW51Q29udGV4dDo6VHlwZTo6Q29udGV4dE1lbnUpCi0gICAgICAgIGhpdFR5cGUuYWRkKEhpdFRl
c3RSZXF1ZXN0OjpEaXNhbGxvd1VzZXJBZ2VudFNoYWRvd0NvbnRlbnQpOworICAgICAgICBoaXRU
eXBlLmFkZChIaXRUZXN0UmVxdWVzdDo6VHlwZTo6RGlzYWxsb3dVc2VyQWdlbnRTaGFkb3dDb250
ZW50KTsKIAogICAgIG1fY29udGV4dE1lbnUgPSBtYXliZUNyZWF0ZUNvbnRleHRNZW51KGV2ZW50
LCBXVEZNb3ZlKGhpdFR5cGUpLCBjb250ZXh0VHlwZSk7CiAgICAgaWYgKCFtX2NvbnRleHRNZW51
KSB7CkBAIC0xNDIsNyArMTQyLDcgQEAgdm9pZCBDb250ZXh0TWVudUNvbnRyb2xsZXI6OnNob3dD
b250ZXh0TWVudShFdmVudCYgZXZlbnQsIENvbnRleHRNZW51UHJvdmlkZXImIHAKICAgICBzaG93
Q29udGV4dE1lbnUoZXZlbnQpOwogfQogCi1zdGQ6OnVuaXF1ZV9wdHI8Q29udGV4dE1lbnU+IENv
bnRleHRNZW51Q29udHJvbGxlcjo6bWF5YmVDcmVhdGVDb250ZXh0TWVudShFdmVudCYgZXZlbnQs
IE9wdGlvblNldDxIaXRUZXN0UmVxdWVzdDo6UmVxdWVzdFR5cGU+IGhpdFR5cGUsIENvbnRleHRN
ZW51Q29udGV4dDo6VHlwZSBjb250ZXh0VHlwZSkKK3N0ZDo6dW5pcXVlX3B0cjxDb250ZXh0TWVu
dT4gQ29udGV4dE1lbnVDb250cm9sbGVyOjptYXliZUNyZWF0ZUNvbnRleHRNZW51KEV2ZW50JiBl
dmVudCwgT3B0aW9uU2V0PEhpdFRlc3RSZXF1ZXN0OjpUeXBlPiBoaXRUeXBlLCBDb250ZXh0TWVu
dUNvbnRleHQ6OlR5cGUgY29udGV4dFR5cGUpCiB7CiAgICAgaWYgKCFpczxNb3VzZUV2ZW50Pihl
dmVudCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGFnZS9Db250ZXh0TWVudUNvbnRyb2xsZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ29u
dGV4dE1lbnVDb250cm9sbGVyLmgKaW5kZXggYzBjZDQ1NTM3ZDRmZTU2Y2Y5ODBhNWEyNmNkYjI4
NDBjN2Y0ODhlNi4uMWUyOTMxMDUwNjY0NTBiNDRiMGEzNTI3MWQ2ZDE0MjUyYTdiMjliYSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9Db250ZXh0TWVudUNvbnRyb2xsZXIuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0NvbnRleHRNZW51Q29udHJvbGxlci5oCkBAIC03MCw3ICs3
MCw3IEBAIHB1YmxpYzoKICNlbmRpZgogCiBwcml2YXRlOgotICAgIHN0ZDo6dW5pcXVlX3B0cjxD
b250ZXh0TWVudT4gbWF5YmVDcmVhdGVDb250ZXh0TWVudShFdmVudCYsIE9wdGlvblNldDxIaXRU
ZXN0UmVxdWVzdDo6UmVxdWVzdFR5cGU+IGhpdFR5cGUsIENvbnRleHRNZW51Q29udGV4dDo6VHlw
ZSk7CisgICAgc3RkOjp1bmlxdWVfcHRyPENvbnRleHRNZW51PiBtYXliZUNyZWF0ZUNvbnRleHRN
ZW51KEV2ZW50JiwgT3B0aW9uU2V0PEhpdFRlc3RSZXF1ZXN0OjpUeXBlPiBoaXRUeXBlLCBDb250
ZXh0TWVudUNvbnRleHQ6OlR5cGUpOwogICAgIHZvaWQgc2hvd0NvbnRleHRNZW51KEV2ZW50Jik7
CiAgICAgCiAgICAgdm9pZCBhcHBlbmRJdGVtKENvbnRleHRNZW51SXRlbSYsIENvbnRleHRNZW51
KiBwYXJlbnRNZW51KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRHJhZ0NvbnRy
b2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9EcmFnQ29udHJvbGxlci5jcHAKaW5kZXgg
YzY5MDQzNjA4ZTNlOTA1NDNiN2VhNzFkYTcxNjVlMGQxN2U3ZmQ1NC4uMGE5MjE1ZTE0ZjYyZDc5
NDAyZGU4MjRkZGJlOTA5MDYzN2FlNDQ0YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFn
ZS9EcmFnQ29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9EcmFnQ29udHJv
bGxlci5jcHAKQEAgLTY1OCw3ICs2NTgsNyBAQCBib29sIERyYWdDb250cm9sbGVyOjpjYW5Qcm9j
ZXNzRHJhZyhjb25zdCBEcmFnRGF0YSYgZHJhZ0RhdGEpCiAgICAgaWYgKCFtX3BhZ2UubWFpbkZy
YW1lKCkuY29udGVudFJlbmRlcmVyKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIGNv
bnN0ZXhwciBPcHRpb25TZXQ8SGl0VGVzdFJlcXVlc3Q6OlJlcXVlc3RUeXBlPiBoaXRUeXBlIHsg
SGl0VGVzdFJlcXVlc3Q6OlJlYWRPbmx5LCBIaXRUZXN0UmVxdWVzdDo6QWN0aXZlLCBIaXRUZXN0
UmVxdWVzdDo6QWxsb3dDaGlsZEZyYW1lQ29udGVudCB9OworICAgIGNvbnN0ZXhwciBPcHRpb25T
ZXQ8SGl0VGVzdFJlcXVlc3Q6OlR5cGU+IGhpdFR5cGUgeyBIaXRUZXN0UmVxdWVzdDo6VHlwZTo6
UmVhZE9ubHksIEhpdFRlc3RSZXF1ZXN0OjpUeXBlOjpBY3RpdmUsIEhpdFRlc3RSZXF1ZXN0OjpU
eXBlOjpBbGxvd0NoaWxkRnJhbWVDb250ZW50IH07CiAgICAgcmVzdWx0ID0gbV9wYWdlLm1haW5G
cmFtZSgpLmV2ZW50SGFuZGxlcigpLmhpdFRlc3RSZXN1bHRBdFBvaW50KHBvaW50LCBoaXRUeXBl
KTsKIAogICAgIGF1dG8qIGRyYWdOb2RlID0gcmVzdWx0LmlubmVyTm9uU2hhcmVkTm9kZSgpOwpA
QCAtOTQyLDcgKzk0Miw3IEBAIE9wdGlvbmFsPEhpdFRlc3RSZXN1bHQ+IERyYWdDb250cm9sbGVy
OjpoaXRUZXN0UmVzdWx0Rm9yRHJhZ1N0YXJ0KEZyYW1lJiBzb3VyY2UsCiAgICAgaWYgKCFzb3Vy
Y2UudmlldygpIHx8ICFzb3VyY2UuY29udGVudFJlbmRlcmVyKCkpCiAgICAgICAgIHJldHVybiBX
VEY6Om51bGxvcHQ7CiAKLSAgICBjb25zdGV4cHIgT3B0aW9uU2V0PEhpdFRlc3RSZXF1ZXN0OjpS
ZXF1ZXN0VHlwZT4gaGl0VHlwZSB7IEhpdFRlc3RSZXF1ZXN0OjpSZWFkT25seSwgSGl0VGVzdFJl
cXVlc3Q6OkFjdGl2ZSwgSGl0VGVzdFJlcXVlc3Q6OkFsbG93Q2hpbGRGcmFtZUNvbnRlbnQgfTsK
KyAgICBjb25zdGV4cHIgT3B0aW9uU2V0PEhpdFRlc3RSZXF1ZXN0OjpUeXBlPiBoaXRUeXBlIHsg
SGl0VGVzdFJlcXVlc3Q6OlR5cGU6OlJlYWRPbmx5LCBIaXRUZXN0UmVxdWVzdDo6VHlwZTo6QWN0
aXZlLCBIaXRUZXN0UmVxdWVzdDo6VHlwZTo6QWxsb3dDaGlsZEZyYW1lQ29udGVudCB9OwogICAg
IGF1dG8gaGl0VGVzdFJlc3VsdCA9IHNvdXJjZS5ldmVudEhhbmRsZXIoKS5oaXRUZXN0UmVzdWx0
QXRQb2ludChsb2NhdGlvbiwgaGl0VHlwZSk7CiAKICAgICBib29sIHNvdXJjZUNvbnRhaW5zSGl0
Tm9kZSA9IGVsZW1lbnQuY29udGFpbnNJbmNsdWRpbmdTaGFkb3dET00oaGl0VGVzdFJlc3VsdC5p
bm5lck5vZGUoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxl
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5jcHAKaW5kZXggNWM3Yzk5
MmIzNTYzYTQwODQxNDFjNmNhYTE0YzU4YzNhNjYxNWI3Yy4uNjk2MDc0N2EwYjVhNzllYTJjNjU5
OGIxY2EyZmI3OWMzNDI2Y2U4ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVu
dEhhbmRsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNwcApA
QCAtOTExLDcgKzkxMSw3IEBAIGJvb2wgRXZlbnRIYW5kbGVyOjpldmVudE1heVN0YXJ0RHJhZyhj
b25zdCBQbGF0Zm9ybU1vdXNlRXZlbnQmIGV2ZW50KSBjb25zdAogICAgIFJlZjxGcmFtZT4gcHJv
dGVjdGVkRnJhbWUobV9mcmFtZSk7CiAKICAgICB1cGRhdGVEcmFnU291cmNlQWN0aW9uc0FsbG93
ZWQoKTsKLSAgICBjb25zdGV4cHIgT3B0aW9uU2V0PEhpdFRlc3RSZXF1ZXN0OjpSZXF1ZXN0VHlw
ZT4gaGl0VHlwZSB7IEhpdFRlc3RSZXF1ZXN0OjpSZWFkT25seSwgSGl0VGVzdFJlcXVlc3Q6OkRp
c2FsbG93VXNlckFnZW50U2hhZG93Q29udGVudCB9OworICAgIGNvbnN0ZXhwciBPcHRpb25TZXQ8
SGl0VGVzdFJlcXVlc3Q6OlR5cGU+IGhpdFR5cGUgeyBIaXRUZXN0UmVxdWVzdDo6VHlwZTo6UmVh
ZE9ubHksIEhpdFRlc3RSZXF1ZXN0OjpUeXBlOjpEaXNhbGxvd1VzZXJBZ2VudFNoYWRvd0NvbnRl
bnQgfTsKICAgICBIaXRUZXN0UmVzdWx0IHJlc3VsdCh2aWV3LT53aW5kb3dUb0NvbnRlbnRzKGV2
ZW50LnBvc2l0aW9uKCkpKTsKICAgICBkb2N1bWVudC0+aGl0VGVzdChoaXRUeXBlLCByZXN1bHQp
OwogICAgIERyYWdTdGF0ZSBzdGF0ZTsKQEAgLTkzMSw3ICs5MzEsNyBAQCB2b2lkIEV2ZW50SGFu
ZGxlcjo6dXBkYXRlU2VsZWN0aW9uRm9yTW91c2VEcmFnKCkKICAgICBpZiAoIWRvY3VtZW50KQog
ICAgICAgICByZXR1cm47CiAKLSAgICBjb25zdGV4cHIgT3B0aW9uU2V0PEhpdFRlc3RSZXF1ZXN0
OjpSZXF1ZXN0VHlwZT4gaGl0VHlwZSB7ICBIaXRUZXN0UmVxdWVzdDo6UmVhZE9ubHksIEhpdFRl
c3RSZXF1ZXN0OjpBY3RpdmUsIEhpdFRlc3RSZXF1ZXN0OjpNb3ZlLCBIaXRUZXN0UmVxdWVzdDo6
RGlzYWxsb3dVc2VyQWdlbnRTaGFkb3dDb250ZW50IH07CisgICAgY29uc3RleHByIE9wdGlvblNl
dDxIaXRUZXN0UmVxdWVzdDo6VHlwZT4gaGl0VHlwZSB7ICBIaXRUZXN0UmVxdWVzdDo6VHlwZTo6
UmVhZE9ubHksIEhpdFRlc3RSZXF1ZXN0OjpUeXBlOjpBY3RpdmUsIEhpdFRlc3RSZXF1ZXN0OjpU
eXBlOjpNb3ZlLCBIaXRUZXN0UmVxdWVzdDo6VHlwZTo6RGlzYWxsb3dVc2VyQWdlbnRTaGFkb3dD
b250ZW50IH07CiAgICAgSGl0VGVzdFJlc3VsdCByZXN1bHQodmlldy0+d2luZG93VG9Db250ZW50
cyhtX2xhc3RLbm93bk1vdXNlUG9zaXRpb24pKTsKICAgICBkb2N1bWVudC0+aGl0VGVzdChoaXRU
eXBlLCByZXN1bHQpOwogICAgIHVwZGF0ZVNlbGVjdGlvbkZvck1vdXNlRHJhZyhyZXN1bHQpOwpA
QCAtMTE1NSw5ICsxMTU1LDkgQEAgT3B0aW9uU2V0PERyYWdTb3VyY2VBY3Rpb24+IEV2ZW50SGFu
ZGxlcjo6dXBkYXRlRHJhZ1NvdXJjZUFjdGlvbnNBbGxvd2VkKCkgY29uc3QKIH0KICNlbmRpZiAv
LyBFTkFCTEUoRFJBR19TVVBQT1JUKQogCi1IaXRUZXN0UmVzdWx0IEV2ZW50SGFuZGxlcjo6aGl0
VGVzdFJlc3VsdEF0UG9pbnQoY29uc3QgTGF5b3V0UG9pbnQmIHBvaW50LCBPcHRpb25TZXQ8SGl0
VGVzdFJlcXVlc3Q6OlJlcXVlc3RUeXBlPiBoaXRUeXBlLCBjb25zdCBMYXlvdXRTaXplJiBwYWRk
aW5nKSBjb25zdAorSGl0VGVzdFJlc3VsdCBFdmVudEhhbmRsZXI6OmhpdFRlc3RSZXN1bHRBdFBv
aW50KGNvbnN0IExheW91dFBvaW50JiBwb2ludCwgT3B0aW9uU2V0PEhpdFRlc3RSZXF1ZXN0OjpU
eXBlPiBoaXRUeXBlLCBjb25zdCBMYXlvdXRTaXplJiBwYWRkaW5nKSBjb25zdAogewotICAgIEFT
U0VSVCgoaGl0VHlwZSAmIEhpdFRlc3RSZXF1ZXN0OjpDb2xsZWN0TXVsdGlwbGVFbGVtZW50cykg
fHwgcGFkZGluZy5pc0VtcHR5KCkpOworICAgIEFTU0VSVCgoaGl0VHlwZSAmIEhpdFRlc3RSZXF1
ZXN0OjpUeXBlOjpDb2xsZWN0TXVsdGlwbGVFbGVtZW50cykgfHwgcGFkZGluZy5pc0VtcHR5KCkp
OwogCiAgICAgUmVmPEZyYW1lPiBwcm90ZWN0ZWRGcmFtZShtX2ZyYW1lKTsKIApAQCAtMTM5OCw3
ICsxMzk4LDcgQEAgdm9pZCBFdmVudEhhbmRsZXI6OnVwZGF0ZUN1cnNvcigpCiAgICAgYm9vbCBt
ZXRhS2V5OwogICAgIFBsYXRmb3JtS2V5Ym9hcmRFdmVudDo6Z2V0Q3VycmVudE1vZGlmaWVyU3Rh
dGUoc2hpZnRLZXksIGN0cmxLZXksIGFsdEtleSwgbWV0YUtleSk7CiAKLSAgICBjb25zdGV4cHIg
T3B0aW9uU2V0PEhpdFRlc3RSZXF1ZXN0OjpSZXF1ZXN0VHlwZT4gaGl0VHlwZSB7IEhpdFRlc3RS
ZXF1ZXN0OjpSZWFkT25seSwgSGl0VGVzdFJlcXVlc3Q6OkFsbG93RnJhbWVTY3JvbGxiYXJzIH07
CisgICAgY29uc3RleHByIE9wdGlvblNldDxIaXRUZXN0UmVxdWVzdDo6VHlwZT4gaGl0VHlwZSB7
IEhpdFRlc3RSZXF1ZXN0OjpUeXBlOjpSZWFkT25seSwgSGl0VGVzdFJlcXVlc3Q6OlR5cGU6OkFs
bG93RnJhbWVTY3JvbGxiYXJzIH07CiAgICAgSGl0VGVzdFJlc3VsdCByZXN1bHQodmlldy0+d2lu
ZG93VG9Db250ZW50cyhtX2xhc3RLbm93bk1vdXNlUG9zaXRpb24pKTsKICAgICBkb2N1bWVudC0+
aGl0VGVzdChoaXRUeXBlLCByZXN1bHQpOwogCkBAIC0xNzA2LDcgKzE3MDYsNyBAQCBib29sIEV2
ZW50SGFuZGxlcjo6aGFuZGxlTW91c2VQcmVzc0V2ZW50KGNvbnN0IFBsYXRmb3JtTW91c2VFdmVu
dCYgcGxhdGZvcm1Nb3VzZQogICAgIH0KICAgICBtX21vdXNlRG93bldhc0luU3ViZnJhbWUgPSBm
YWxzZTsKIAotICAgIGNvbnN0ZXhwciBPcHRpb25TZXQ8SGl0VGVzdFJlcXVlc3Q6OlJlcXVlc3RU
eXBlPiBoaXRUeXBlIHsgSGl0VGVzdFJlcXVlc3Q6OkFjdGl2ZSwgSGl0VGVzdFJlcXVlc3Q6OkRp
c2FsbG93VXNlckFnZW50U2hhZG93Q29udGVudCB9OworICAgIGNvbnN0ZXhwciBPcHRpb25TZXQ8
SGl0VGVzdFJlcXVlc3Q6OlR5cGU+IGhpdFR5cGUgeyBIaXRUZXN0UmVxdWVzdDo6VHlwZTo6QWN0
aXZlLCBIaXRUZXN0UmVxdWVzdDo6VHlwZTo6RGlzYWxsb3dVc2VyQWdlbnRTaGFkb3dDb250ZW50
IH07CiAgICAgLy8gU2F2ZSB0aGUgZG9jdW1lbnQgcG9pbnQgd2UgZ2VuZXJhdGUgaW4gY2FzZSB0
aGUgd2luZG93IGNvb3JkaW5hdGUgaXMgaW52YWxpZGF0ZWQgYnkgd2hhdCBoYXBwZW5zCiAgICAg
Ly8gd2hlbiB3ZSBkaXNwYXRjaCB0aGUgZXZlbnQuCiAgICAgTGF5b3V0UG9pbnQgZG9jdW1lbnRQ
b2ludCA9IGRvY3VtZW50UG9pbnRGb3JXaW5kb3dQb2ludChtX2ZyYW1lLCBwbGF0Zm9ybU1vdXNl
RXZlbnQucG9zaXRpb24oKSk7CkBAIC0xODI1LDcgKzE4MjUsNyBAQCBib29sIEV2ZW50SGFuZGxl
cjo6aGFuZGxlTW91c2VEb3VibGVDbGlja0V2ZW50KGNvbnN0IFBsYXRmb3JtTW91c2VFdmVudCYg
cGxhdGZvcgogICAgIG1fbW91c2VQcmVzc2VkID0gZmFsc2U7CiAgICAgc2V0TGFzdEtub3duTW91
c2VQb3NpdGlvbihwbGF0Zm9ybU1vdXNlRXZlbnQpOwogCi0gICAgY29uc3RleHByIE9wdGlvblNl
dDxIaXRUZXN0UmVxdWVzdDo6UmVxdWVzdFR5cGU+IGhpdFR5cGUgeyBIaXRUZXN0UmVxdWVzdDo6
UmVsZWFzZSwgSGl0VGVzdFJlcXVlc3Q6OkRpc2FsbG93VXNlckFnZW50U2hhZG93Q29udGVudCB9
OworICAgIGNvbnN0ZXhwciBPcHRpb25TZXQ8SGl0VGVzdFJlcXVlc3Q6OlR5cGU+IGhpdFR5cGUg
eyBIaXRUZXN0UmVxdWVzdDo6VHlwZTo6UmVsZWFzZSwgSGl0VGVzdFJlcXVlc3Q6OlR5cGU6OkRp
c2FsbG93VXNlckFnZW50U2hhZG93Q29udGVudCB9OwogICAgIE1vdXNlRXZlbnRXaXRoSGl0VGVz
dFJlc3VsdHMgbW91c2VFdmVudCA9IHByZXBhcmVNb3VzZUV2ZW50KGhpdFR5cGUsIHBsYXRmb3Jt
TW91c2VFdmVudCk7CiAgICAgYXV0byBzdWJmcmFtZSA9IHN1YmZyYW1lRm9ySGl0VGVzdFJlc3Vs
dChtb3VzZUV2ZW50KTsKIApAQCAtMTk2MSwyMiArMTk2MSwyMiBAQCBib29sIEV2ZW50SGFuZGxl
cjo6aGFuZGxlTW91c2VNb3ZlRXZlbnQoY29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50JiBwbGF0Zm9y
bU1vdXNlRQogICAgICAgICByZXR1cm4gbV9sYXN0U2Nyb2xsYmFyVW5kZXJNb3VzZS0+bW91c2VN
b3ZlZChwbGF0Zm9ybU1vdXNlRXZlbnQpOwogI2VuZGlmCiAKLSAgICBPcHRpb25TZXQ8SGl0VGVz
dFJlcXVlc3Q6OlJlcXVlc3RUeXBlPiBoaXRUeXBlIHsgSGl0VGVzdFJlcXVlc3Q6Ok1vdmUsIEhp
dFRlc3RSZXF1ZXN0OjpEaXNhbGxvd1VzZXJBZ2VudFNoYWRvd0NvbnRlbnQsIEhpdFRlc3RSZXF1
ZXN0OjpBbGxvd0ZyYW1lU2Nyb2xsYmFycyB9OworICAgIE9wdGlvblNldDxIaXRUZXN0UmVxdWVz
dDo6VHlwZT4gaGl0VHlwZSB7IEhpdFRlc3RSZXF1ZXN0OjpUeXBlOjpNb3ZlLCBIaXRUZXN0UmVx
dWVzdDo6VHlwZTo6RGlzYWxsb3dVc2VyQWdlbnRTaGFkb3dDb250ZW50LCBIaXRUZXN0UmVxdWVz
dDo6VHlwZTo6QWxsb3dGcmFtZVNjcm9sbGJhcnMgfTsKICAgICBpZiAobV9tb3VzZVByZXNzZWQp
Ci0gICAgICAgIGhpdFR5cGUuYWRkKEhpdFRlc3RSZXF1ZXN0OjpBY3RpdmUpOworICAgICAgICBo
aXRUeXBlLmFkZChIaXRUZXN0UmVxdWVzdDo6VHlwZTo6QWN0aXZlKTsKICAgICBlbHNlIGlmIChv
bmx5VXBkYXRlU2Nyb2xsYmFycykgewogICAgICAgICAvLyBNb3VzZSBldmVudHMgc2hvdWxkIGJl
IHRyZWF0ZWQgYXMgInJlYWQtb25seSIgaWYgd2UncmUgdXBkYXRpbmcgb25seSBzY3JvbGxiYXJz
LiBUaGlzICAKICAgICAgICAgLy8gbWVhbnMgdGhhdCA6aG92ZXIgYW5kIDphY3RpdmUgZnJlZXpl
IGluIHRoZSBzdGF0ZSB0aGV5IHdlcmUgaW4sIHJhdGhlciB0aGFuIHVwZGF0aW5nICAKICAgICAg
ICAgLy8gZm9yIG5vZGVzIHRoZSBtb3VzZSBtb3ZlcyB3aGlsZSB0aGUgd2luZG93IGlzIG5vdCBr
ZXkgKHdoaWNoIHdpbGwgYmUgdGhlIGNhc2UgaWYgCiAgICAgICAgIC8vIG9ubHlVcGRhdGVTY3Jv
bGxiYXJzIGlzIHRydWUpLiAKLSAgICAgICAgaGl0VHlwZS5hZGQoSGl0VGVzdFJlcXVlc3Q6OlJl
YWRPbmx5KTsKKyAgICAgICAgaGl0VHlwZS5hZGQoSGl0VGVzdFJlcXVlc3Q6OlR5cGU6OlJlYWRP
bmx5KTsKICAgICB9CiAKICNpZiBFTkFCTEUoVE9VQ0hfRVZFTlRTKSAmJiAhRU5BQkxFKElPU19U
T1VDSF9FVkVOVFMpCiAgICAgLy8gVHJlYXQgYW55IG1vdXNlIG1vdmUgZXZlbnRzIGFzIHJlYWRv
bmx5IGlmIHRoZSB1c2VyIGlzIGN1cnJlbnRseSB0b3VjaGluZyB0aGUgc2NyZWVuLgogICAgIGlm
IChtX3RvdWNoUHJlc3NlZCkgewotICAgICAgICBoaXRUeXBlLmFkZChIaXRUZXN0UmVxdWVzdDo6
QWN0aXZlKTsKLSAgICAgICAgaGl0VHlwZS5hZGQoSGl0VGVzdFJlcXVlc3Q6OlJlYWRPbmx5KTsK
KyAgICAgICAgaGl0VHlwZS5hZGQoSGl0VGVzdFJlcXVlc3Q6OlR5cGU6OkFjdGl2ZSk7CisgICAg
ICAgIGhpdFR5cGUuYWRkKEhpdFRlc3RSZXF1ZXN0OjpUeXBlOjpSZWFkT25seSk7CiAgICAgfQog
I2VuZGlmCiAgICAgSGl0VGVzdFJlcXVlc3QgcmVxdWVzdChoaXRUeXBlKTsKQEAgLTIxMzQsNyAr
MjEzNCw3IEBAIGJvb2wgRXZlbnRIYW5kbGVyOjpoYW5kbGVNb3VzZVJlbGVhc2VFdmVudChjb25z
dCBQbGF0Zm9ybU1vdXNlRXZlbnQmIHBsYXRmb3JtTW91CiAgICAgICAgIHJldHVybiAhZGlzcGF0
Y2hNb3VzZUV2ZW50KGV2ZW50TmFtZXMoKS5tb3VzZXVwRXZlbnQsIG1fbGFzdEVsZW1lbnRVbmRl
ck1vdXNlLmdldCgpLCBtX2NsaWNrQ291bnQsIHBsYXRmb3JtTW91c2VFdmVudCwgRmlyZU1vdXNl
T3Zlck91dDo6Tm8pOwogICAgIH0KIAotICAgIGNvbnN0ZXhwciBPcHRpb25TZXQ8SGl0VGVzdFJl
cXVlc3Q6OlJlcXVlc3RUeXBlPiBoaXRUeXBlIHsgSGl0VGVzdFJlcXVlc3Q6OlJlbGVhc2UsIEhp
dFRlc3RSZXF1ZXN0OjpEaXNhbGxvd1VzZXJBZ2VudFNoYWRvd0NvbnRlbnQgfTsKKyAgICBjb25z
dGV4cHIgT3B0aW9uU2V0PEhpdFRlc3RSZXF1ZXN0OjpUeXBlPiBoaXRUeXBlIHsgSGl0VGVzdFJl
cXVlc3Q6OlR5cGU6OlJlbGVhc2UsIEhpdFRlc3RSZXF1ZXN0OjpUeXBlOjpEaXNhbGxvd1VzZXJB
Z2VudFNoYWRvd0NvbnRlbnQgfTsKICAgICBNb3VzZUV2ZW50V2l0aEhpdFRlc3RSZXN1bHRzIG1v
dXNlRXZlbnQgPSBwcmVwYXJlTW91c2VFdmVudChoaXRUeXBlLCBwbGF0Zm9ybU1vdXNlRXZlbnQp
OwogICAgIFJlZlB0cjxGcmFtZT4gc3ViZnJhbWUgPSBtX2NhcHR1cmluZ01vdXNlRXZlbnRzRWxl
bWVudC5nZXQoKSA/IHN1YmZyYW1lRm9yVGFyZ2V0Tm9kZShtX2NhcHR1cmluZ01vdXNlRXZlbnRz
RWxlbWVudC5nZXQoKSkgOiBzdWJmcmFtZUZvckhpdFRlc3RSZXN1bHQobW91c2VFdmVudCk7CiAg
ICAgaWYgKG1fZXZlbnRIYW5kbGVyV2lsbFJlc2V0Q2FwdHVyaW5nTW91c2VFdmVudHNFbGVtZW50
KQpAQCAtMjE4NCwxMCArMjE4NCwxMCBAQCBib29sIEV2ZW50SGFuZGxlcjo6aGFuZGxlTW91c2VG
b3JjZUV2ZW50KGNvbnN0IFBsYXRmb3JtTW91c2VFdmVudCYgZXZlbnQpCiAKICAgICBzZXRMYXN0
S25vd25Nb3VzZVBvc2l0aW9uKGV2ZW50KTsKIAotICAgIE9wdGlvblNldDxIaXRUZXN0UmVxdWVz
dDo6UmVxdWVzdFR5cGU+IGhpdFR5cGUgeyBIaXRUZXN0UmVxdWVzdDo6RGlzYWxsb3dVc2VyQWdl
bnRTaGFkb3dDb250ZW50IH07CisgICAgT3B0aW9uU2V0PEhpdFRlc3RSZXF1ZXN0OjpUeXBlPiBo
aXRUeXBlIHsgSGl0VGVzdFJlcXVlc3Q6OlR5cGU6OkRpc2FsbG93VXNlckFnZW50U2hhZG93Q29u
dGVudCB9OwogCiAgICAgaWYgKGV2ZW50LmZvcmNlKCkpCi0gICAgICAgIGhpdFR5cGUuYWRkKEhp
dFRlc3RSZXF1ZXN0OjpBY3RpdmUpOworICAgICAgICBoaXRUeXBlLmFkZChIaXRUZXN0UmVxdWVz
dDo6VHlwZTo6QWN0aXZlKTsKIAogICAgIGF1dG8gbW91c2VFdmVudCA9IHByZXBhcmVNb3VzZUV2
ZW50KGhpdFR5cGUsIGV2ZW50KTsKIApAQCAtMjM3NCw3ICsyMzc0LDcgQEAgRXZlbnRIYW5kbGVy
OjpEcmFnVGFyZ2V0UmVzcG9uc2UgRXZlbnRIYW5kbGVyOjp1cGRhdGVEcmFnQW5kRHJvcChjb25z
dCBQbGF0Zm9ybU0KICAgICBpZiAoIW1fZnJhbWUudmlldygpKQogICAgICAgICByZXR1cm4geyB9
OwogCi0gICAgY29uc3RleHByIE9wdGlvblNldDxIaXRUZXN0UmVxdWVzdDo6UmVxdWVzdFR5cGU+
IGhpdFR5cGUgeyBIaXRUZXN0UmVxdWVzdDo6UmVhZE9ubHksIEhpdFRlc3RSZXF1ZXN0OjpEaXNh
bGxvd1VzZXJBZ2VudFNoYWRvd0NvbnRlbnQgfTsKKyAgICBjb25zdGV4cHIgT3B0aW9uU2V0PEhp
dFRlc3RSZXF1ZXN0OjpUeXBlPiBoaXRUeXBlIHsgSGl0VGVzdFJlcXVlc3Q6OlR5cGU6OlJlYWRP
bmx5LCBIaXRUZXN0UmVxdWVzdDo6VHlwZTo6RGlzYWxsb3dVc2VyQWdlbnRTaGFkb3dDb250ZW50
IH07CiAgICAgTW91c2VFdmVudFdpdGhIaXRUZXN0UmVzdWx0cyBtb3VzZUV2ZW50ID0gcHJlcGFy
ZU1vdXNlRXZlbnQoaGl0VHlwZSwgZXZlbnQpOwogCiAgICAgUmVmUHRyPEVsZW1lbnQ+IG5ld1Rh
cmdldDsKQEAgLTI3NDUsNyArMjc0NSw3IEBAIGJvb2wgRXZlbnRIYW5kbGVyOjppc0luc2lkZVNj
cm9sbGJhcihjb25zdCBJbnRQb2ludCYgd2luZG93UG9pbnQpIGNvbnN0CiB7CiAgICAgaWYgKGF1
dG8qIGRvY3VtZW50ID0gbV9mcmFtZS5kb2N1bWVudCgpKSB7CiAgICAgICAgIEhpdFRlc3RSZXN1
bHQgcmVzdWx0IHsgd2luZG93UG9pbnQgfTsKLSAgICAgICAgZG9jdW1lbnQtPmhpdFRlc3QoT3B0
aW9uU2V0PEhpdFRlc3RSZXF1ZXN0OjpSZXF1ZXN0VHlwZT4geyBIaXRUZXN0UmVxdWVzdDo6UmVh
ZE9ubHksIEhpdFRlc3RSZXF1ZXN0OjpEaXNhbGxvd1VzZXJBZ2VudFNoYWRvd0NvbnRlbnQgfSwg
cmVzdWx0KTsKKyAgICAgICAgZG9jdW1lbnQtPmhpdFRlc3QoT3B0aW9uU2V0PEhpdFRlc3RSZXF1
ZXN0OjpUeXBlPiB7IEhpdFRlc3RSZXF1ZXN0OjpUeXBlOjpSZWFkT25seSwgSGl0VGVzdFJlcXVl
c3Q6OlR5cGU6OkRpc2FsbG93VXNlckFnZW50U2hhZG93Q29udGVudCB9LCByZXN1bHQpOwogICAg
ICAgICByZXR1cm4gcmVzdWx0LnNjcm9sbGJhcigpOwogICAgIH0KIApAQCAtMzE1OCw3ICszMTU4
LDcgQEAgYm9vbCBFdmVudEhhbmRsZXI6OnNlbmRDb250ZXh0TWVudUV2ZW50KGNvbnN0IFBsYXRm
b3JtTW91c2VFdmVudCYgZXZlbnQpCiAgICAgbV9tb3VzZVByZXNzZWQgPSBmYWxzZTsKICAgICBi
b29sIHN3YWxsb3dFdmVudDsKICAgICBMYXlvdXRQb2ludCB2aWV3cG9ydFBvcyA9IHZpZXctPndp
bmRvd1RvQ29udGVudHMoZXZlbnQucG9zaXRpb24oKSk7Ci0gICAgY29uc3RleHByIE9wdGlvblNl
dDxIaXRUZXN0UmVxdWVzdDo6UmVxdWVzdFR5cGU+IGhpdFR5cGUgeyBIaXRUZXN0UmVxdWVzdDo6
QWN0aXZlLCBIaXRUZXN0UmVxdWVzdDo6RGlzYWxsb3dVc2VyQWdlbnRTaGFkb3dDb250ZW50IH07
CisgICAgY29uc3RleHByIE9wdGlvblNldDxIaXRUZXN0UmVxdWVzdDo6VHlwZT4gaGl0VHlwZSB7
IEhpdFRlc3RSZXF1ZXN0OjpUeXBlOjpBY3RpdmUsIEhpdFRlc3RSZXF1ZXN0OjpUeXBlOjpEaXNh
bGxvd1VzZXJBZ2VudFNoYWRvd0NvbnRlbnQgfTsKICAgICBNb3VzZUV2ZW50V2l0aEhpdFRlc3RS
ZXN1bHRzIG1vdXNlRXZlbnQgPSBkb2MtPnByZXBhcmVNb3VzZUV2ZW50KGhpdFR5cGUsIHZpZXdw
b3J0UG9zLCBldmVudCk7CiAKICAgICAvLyBEbyBub3Qgc2hvdyBjb250ZXh0IG1lbnVzIHdoZW4g
Y2xpY2tpbmcgb24gc2Nyb2xsYmFycy4KQEAgLTMyNDAsNyArMzI0MCw3IEBAIGJvb2wgRXZlbnRI
YW5kbGVyOjpzZW5kQ29udGV4dE1lbnVFdmVudEZvcktleSgpCiAgICAgLy8gVXNlIHRoZSBmb2N1
c2VkIG5vZGUgYXMgdGhlIHRhcmdldCBmb3IgaG92ZXIgYW5kIGFjdGl2ZS4KICAgICBIaXRUZXN0
UmVzdWx0IHJlc3VsdChwb3NpdGlvbik7CiAgICAgcmVzdWx0LnNldElubmVyTm9kZSh0YXJnZXRO
b2RlKTsKLSAgICBkb2MtPnVwZGF0ZUhvdmVyQWN0aXZlU3RhdGUoT3B0aW9uU2V0PEhpdFRlc3RS
ZXF1ZXN0OjpSZXF1ZXN0VHlwZT4geyBIaXRUZXN0UmVxdWVzdDo6QWN0aXZlLCBIaXRUZXN0UmVx
dWVzdDo6RGlzYWxsb3dVc2VyQWdlbnRTaGFkb3dDb250ZW50IH0sIHJlc3VsdC50YXJnZXRFbGVt
ZW50KCkpOworICAgIGRvYy0+dXBkYXRlSG92ZXJBY3RpdmVTdGF0ZShPcHRpb25TZXQ8SGl0VGVz
dFJlcXVlc3Q6OlR5cGU+IHsgSGl0VGVzdFJlcXVlc3Q6OlR5cGU6OkFjdGl2ZSwgSGl0VGVzdFJl
cXVlc3Q6OlR5cGU6OkRpc2FsbG93VXNlckFnZW50U2hhZG93Q29udGVudCB9LCByZXN1bHQudGFy
Z2V0RWxlbWVudCgpKTsKIAogICAgIC8vIFRoZSBjb250ZXh0bWVudSBldmVudCBpcyBhIG1vdXNl
IGV2ZW50IGV2ZW4gd2hlbiBpbnZva2VkIHVzaW5nIHRoZSBrZXlib2FyZC4KICAgICAvLyBUaGlz
IGlzIHJlcXVpcmVkIGZvciB3ZWIgY29tcGF0aWJpbGl0eS4KQEAgLTMzNjgsNyArMzM2OCw3IEBA
IHZvaWQgRXZlbnRIYW5kbGVyOjpob3ZlclRpbWVyRmlyZWQoKQogICAgIGlmIChhdXRvKiBkb2N1
bWVudCA9IG1fZnJhbWUuZG9jdW1lbnQoKSkgewogICAgICAgICBpZiAoRnJhbWVWaWV3KiB2aWV3
ID0gbV9mcmFtZS52aWV3KCkpIHsKICAgICAgICAgICAgIEhpdFRlc3RSZXN1bHQgcmVzdWx0KHZp
ZXctPndpbmRvd1RvQ29udGVudHMobV9sYXN0S25vd25Nb3VzZVBvc2l0aW9uKSk7Ci0gICAgICAg
ICAgICBjb25zdGV4cHIgT3B0aW9uU2V0PEhpdFRlc3RSZXF1ZXN0OjpSZXF1ZXN0VHlwZT4gaGl0
VHlwZSB7IEhpdFRlc3RSZXF1ZXN0OjpNb3ZlLCBIaXRUZXN0UmVxdWVzdDo6RGlzYWxsb3dVc2Vy
QWdlbnRTaGFkb3dDb250ZW50IH07CisgICAgICAgICAgICBjb25zdGV4cHIgT3B0aW9uU2V0PEhp
dFRlc3RSZXF1ZXN0OjpUeXBlPiBoaXRUeXBlIHsgSGl0VGVzdFJlcXVlc3Q6OlR5cGU6Ok1vdmUs
IEhpdFRlc3RSZXF1ZXN0OjpUeXBlOjpEaXNhbGxvd1VzZXJBZ2VudFNoYWRvd0NvbnRlbnQgfTsK
ICAgICAgICAgICAgIGRvY3VtZW50LT5oaXRUZXN0KGhpdFR5cGUsIHJlc3VsdCk7CiAgICAgICAg
ICAgICBkb2N1bWVudC0+dXBkYXRlSG92ZXJBY3RpdmVTdGF0ZShoaXRUeXBlLCByZXN1bHQudGFy
Z2V0RWxlbWVudCgpKTsKICAgICAgICAgfQpAQCAtMzg4Miw3ICszODgyLDcgQEAgdm9pZCBFdmVu
dEhhbmRsZXI6OmRpZFN0YXJ0RHJhZygpCiB2b2lkIEV2ZW50SGFuZGxlcjo6ZHJhZ1NvdXJjZUVu
ZGVkQXQoY29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50JiBldmVudCwgT3B0aW9uU2V0PERyYWdPcGVy
YXRpb24+IGRyYWdPcGVyYXRpb25NYXNrLCBNYXlFeHRlbmREcmFnU2Vzc2lvbiBtYXlFeHRlbmRE
cmFnU2Vzc2lvbikKIHsKICAgICAvLyBTZW5kIGEgaGl0IHRlc3QgcmVxdWVzdCBzbyB0aGF0IFJl
bmRlckxheWVyIGdldHMgYSBjaGFuY2UgdG8gdXBkYXRlIHRoZSA6aG92ZXIgYW5kIDphY3RpdmUg
cHNldWRvY2xhc3Nlcy4KLSAgICBwcmVwYXJlTW91c2VFdmVudChPcHRpb25TZXQ8SGl0VGVzdFJl
cXVlc3Q6OlJlcXVlc3RUeXBlPiB7IEhpdFRlc3RSZXF1ZXN0OjpSZWxlYXNlLCBIaXRUZXN0UmVx
dWVzdDo6RGlzYWxsb3dVc2VyQWdlbnRTaGFkb3dDb250ZW50IH0sIGV2ZW50KTsKKyAgICBwcmVw
YXJlTW91c2VFdmVudChPcHRpb25TZXQ8SGl0VGVzdFJlcXVlc3Q6OlR5cGU+IHsgSGl0VGVzdFJl
cXVlc3Q6OlR5cGU6OlJlbGVhc2UsIEhpdFRlc3RSZXF1ZXN0OjpUeXBlOjpEaXNhbGxvd1VzZXJB
Z2VudFNoYWRvd0NvbnRlbnQgfSwgZXZlbnQpOwogCiAgICAgaWYgKHNob3VsZERpc3BhdGNoRXZl
bnRzVG9EcmFnU291cmNlRWxlbWVudCgpKSB7CiAgICAgICAgIGRyYWdTdGF0ZSgpLmRhdGFUcmFu
c2Zlci0+c2V0RGVzdGluYXRpb25PcGVyYXRpb25NYXNrKGRyYWdPcGVyYXRpb25NYXNrKTsKQEAg
LTM5NTMsNyArMzk1Myw3IEBAIGJvb2wgRXZlbnRIYW5kbGVyOjpoYW5kbGVEcmFnKGNvbnN0IE1v
dXNlRXZlbnRXaXRoSGl0VGVzdFJlc3VsdHMmIGV2ZW50LCBDaGVja0RyCiAKICAgICAgICAgLy8g
VHJ5IHRvIGZpbmQgYW4gZWxlbWVudCB0aGF0IHdhbnRzIHRvIGJlIGRyYWdnZWQuCiAgICAgICAg
IEhpdFRlc3RSZXN1bHQgcmVzdWx0KG1fbW91c2VEb3duQ29udGVudHNQb3NpdGlvbik7Ci0gICAg
ICAgIG1fZnJhbWUuZG9jdW1lbnQoKS0+aGl0VGVzdChPcHRpb25TZXQ8SGl0VGVzdFJlcXVlc3Q6
OlJlcXVlc3RUeXBlPiB7IEhpdFRlc3RSZXF1ZXN0OjpSZWFkT25seSwgSGl0VGVzdFJlcXVlc3Q6
OkRpc2FsbG93VXNlckFnZW50U2hhZG93Q29udGVudCB9LCByZXN1bHQpOworICAgICAgICBtX2Zy
YW1lLmRvY3VtZW50KCktPmhpdFRlc3QoT3B0aW9uU2V0PEhpdFRlc3RSZXF1ZXN0OjpUeXBlPiB7
IEhpdFRlc3RSZXF1ZXN0OjpUeXBlOjpSZWFkT25seSwgSGl0VGVzdFJlcXVlc3Q6OlR5cGU6OkRp
c2FsbG93VXNlckFnZW50U2hhZG93Q29udGVudCB9LCByZXN1bHQpOwogICAgICAgICBpZiAobV9m
cmFtZS5wYWdlKCkpCiAgICAgICAgICAgICBkcmFnU3RhdGUoKS5zb3VyY2UgPSBtX2ZyYW1lLnBh
Z2UoKS0+ZHJhZ0NvbnRyb2xsZXIoKS5kcmFnZ2FibGVFbGVtZW50KCZtX2ZyYW1lLCByZXN1bHQu
dGFyZ2V0RWxlbWVudCgpLCBtX21vdXNlRG93bkNvbnRlbnRzUG9zaXRpb24sIGRyYWdTdGF0ZSgp
KTsKICAgICAgICAgCkBAIC00MzI1LDcgKzQzMjUsNyBAQCBzdGF0aWMgY29uc3QgQXRvbVN0cmlu
ZyYgZXZlbnROYW1lRm9yVG91Y2hQb2ludFN0YXRlKFBsYXRmb3JtVG91Y2hQb2ludDo6U3RhdGUg
cwogICAgIH0KIH0KIAotc3RhdGljIEhpdFRlc3RSZXN1bHQgaGl0VGVzdFJlc3VsdEluRnJhbWUo
RnJhbWUqIGZyYW1lLCBjb25zdCBMYXlvdXRQb2ludCYgcG9pbnQsIE9wdGlvblNldDxIaXRUZXN0
UmVxdWVzdDo6UmVxdWVzdFR5cGU+IGhpdFR5cGUpCitzdGF0aWMgSGl0VGVzdFJlc3VsdCBoaXRU
ZXN0UmVzdWx0SW5GcmFtZShGcmFtZSogZnJhbWUsIGNvbnN0IExheW91dFBvaW50JiBwb2ludCwg
T3B0aW9uU2V0PEhpdFRlc3RSZXF1ZXN0OjpUeXBlPiBoaXRUeXBlKQogewogICAgIEhpdFRlc3RS
ZXN1bHQgcmVzdWx0KHBvaW50KTsKIApAQCAtNDM4MywyNSArNDM4MywyNSBAQCBib29sIEV2ZW50
SGFuZGxlcjo6aGFuZGxlVG91Y2hFdmVudChjb25zdCBQbGF0Zm9ybVRvdWNoRXZlbnQmIGV2ZW50
KQogICAgICAgICBQbGF0Zm9ybVRvdWNoUG9pbnQ6OlN0YXRlIHBvaW50U3RhdGUgPSBwb2ludC5z
dGF0ZSgpOwogICAgICAgICBMYXlvdXRQb2ludCBwYWdlUG9pbnQgPSBkb2N1bWVudFBvaW50Rm9y
V2luZG93UG9pbnQobV9mcmFtZSwgcG9pbnQucG9zKCkpOwogCi0gICAgICAgIE9wdGlvblNldDxI
aXRUZXN0UmVxdWVzdDo6UmVxdWVzdFR5cGU+IGhpdFR5cGUgeyBIaXRUZXN0UmVxdWVzdDo6VG91
Y2hFdmVudCB9OworICAgICAgICBPcHRpb25TZXQ8SGl0VGVzdFJlcXVlc3Q6OlR5cGU+IGhpdFR5
cGUgeyBIaXRUZXN0UmVxdWVzdDo6VHlwZTo6VG91Y2hFdmVudCB9OwogICAgICAgICAvLyBUaGUg
SGl0VGVzdFJlcXVlc3QgdHlwZXMgdXNlZCBmb3IgbW91c2UgZXZlbnRzIG1hcCBxdWl0ZSBhZGVx
dWF0ZWx5CiAgICAgICAgIC8vIHRvIHRvdWNoIGV2ZW50cy4gTm90ZSB0aGF0IGluIGFkZGl0aW9u
IHRvIG1lYW5pbmcgdGhhdCB0aGUgaGl0IHRlc3QKICAgICAgICAgLy8gc2hvdWxkIGFmZmVjdCB0
aGUgYWN0aXZlIHN0YXRlIG9mIHRoZSBjdXJyZW50IG5vZGUgaWYgbmVjZXNzYXJ5LAotICAgICAg
ICAvLyBIaXRUZXN0UmVxdWVzdDo6QWN0aXZlIHNpZ25pZmllcyB0aGF0IHRoZSBoaXQgdGVzdCBp
cyB0YWtpbmcgcGxhY2UKKyAgICAgICAgLy8gSGl0VGVzdFJlcXVlc3Q6OlR5cGU6OkFjdGl2ZSBz
aWduaWZpZXMgdGhhdCB0aGUgaGl0IHRlc3QgaXMgdGFraW5nIHBsYWNlCiAgICAgICAgIC8vIHdp
dGggdGhlIG1vdXNlIChvciBmaW5nZXIgaW4gdGhpcyBjYXNlKSBiZWluZyBwcmVzc2VkLgogICAg
ICAgICBzd2l0Y2ggKHBvaW50U3RhdGUpIHsKICAgICAgICAgY2FzZSBQbGF0Zm9ybVRvdWNoUG9p
bnQ6OlRvdWNoUHJlc3NlZDoKLSAgICAgICAgICAgIGhpdFR5cGUuYWRkKEhpdFRlc3RSZXF1ZXN0
OjpBY3RpdmUpOworICAgICAgICAgICAgaGl0VHlwZS5hZGQoSGl0VGVzdFJlcXVlc3Q6OlR5cGU6
OkFjdGl2ZSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBQbGF0Zm9ybVRvdWNo
UG9pbnQ6OlRvdWNoTW92ZWQ6Ci0gICAgICAgICAgICBoaXRUeXBlLmFkZCh7IEhpdFRlc3RSZXF1
ZXN0OjpBY3RpdmUsIEhpdFRlc3RSZXF1ZXN0OjpNb3ZlLCBIaXRUZXN0UmVxdWVzdDo6UmVhZE9u
bHkgfSk7CisgICAgICAgICAgICBoaXRUeXBlLmFkZCh7IEhpdFRlc3RSZXF1ZXN0OjpUeXBlOjpB
Y3RpdmUsIEhpdFRlc3RSZXF1ZXN0OjpUeXBlOjpNb3ZlLCBIaXRUZXN0UmVxdWVzdDo6VHlwZTo6
UmVhZE9ubHkgfSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBQbGF0Zm9ybVRv
dWNoUG9pbnQ6OlRvdWNoUmVsZWFzZWQ6CiAgICAgICAgIGNhc2UgUGxhdGZvcm1Ub3VjaFBvaW50
OjpUb3VjaENhbmNlbGxlZDoKLSAgICAgICAgICAgIGhpdFR5cGUuYWRkKEhpdFRlc3RSZXF1ZXN0
OjpSZWxlYXNlKTsKKyAgICAgICAgICAgIGhpdFR5cGUuYWRkKEhpdFRlc3RSZXF1ZXN0OjpUeXBl
OjpSZWxlYXNlKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIFBsYXRmb3JtVG91
Y2hQb2ludDo6VG91Y2hTdGF0aW9uYXJ5OgotICAgICAgICAgICAgaGl0VHlwZS5hZGQoeyBIaXRU
ZXN0UmVxdWVzdDo6QWN0aXZlLCBIaXRUZXN0UmVxdWVzdDo6UmVhZE9ubHkgfSk7CisgICAgICAg
ICAgICBoaXRUeXBlLmFkZCh7IEhpdFRlc3RSZXF1ZXN0OjpUeXBlOjpBY3RpdmUsIEhpdFRlc3RS
ZXF1ZXN0OjpUeXBlOjpSZWFkT25seSB9KTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBk
ZWZhdWx0OgogICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CkBAIC00NDA5LDcgKzQ0
MDksNyBAQCBib29sIEV2ZW50SGFuZGxlcjo6aGFuZGxlVG91Y2hFdmVudChjb25zdCBQbGF0Zm9y
bVRvdWNoRXZlbnQmIGV2ZW50KQogICAgICAgICB9CiAKICAgICAgICAgaWYgKHNob3VsZEdlc3R1
cmVzVHJpZ2dlckFjdGl2ZSgpKQotICAgICAgICAgICAgaGl0VHlwZS5hZGQoSGl0VGVzdFJlcXVl
c3Q6OlJlYWRPbmx5KTsKKyAgICAgICAgICAgIGhpdFR5cGUuYWRkKEhpdFRlc3RSZXF1ZXN0OjpU
eXBlOjpSZWFkT25seSk7CiAKICAgICAgICAgLy8gSW5jcmVtZW50IHRoZSBwbGF0Zm9ybSB0b3Vj
aCBpZCBieSAxIHRvIGF2b2lkIHN0b3JpbmcgYSBrZXkgb2YgMCBpbiB0aGUgaGFzaG1hcC4KICAg
ICAgICAgdW5zaWduZWQgdG91Y2hQb2ludFRhcmdldEtleSA9IHBvaW50LmlkKCkgKyAxOwpAQCAt
NDQxNyw3ICs0NDE3LDcgQEAgYm9vbCBFdmVudEhhbmRsZXI6OmhhbmRsZVRvdWNoRXZlbnQoY29u
c3QgUGxhdGZvcm1Ub3VjaEV2ZW50JiBldmVudCkKICAgICAgICAgaWYgKHBvaW50U3RhdGUgPT0g
UGxhdGZvcm1Ub3VjaFBvaW50OjpUb3VjaFByZXNzZWQpIHsKICAgICAgICAgICAgIEhpdFRlc3RS
ZXN1bHQgcmVzdWx0OwogICAgICAgICAgICAgaWYgKGZyZXNoVG91Y2hFdmVudHMpIHsKLSAgICAg
ICAgICAgICAgICByZXN1bHQgPSBoaXRUZXN0UmVzdWx0QXRQb2ludChwYWdlUG9pbnQsIGhpdFR5
cGUgfCBIaXRUZXN0UmVxdWVzdDo6QWxsb3dDaGlsZEZyYW1lQ29udGVudCk7CisgICAgICAgICAg
ICAgICAgcmVzdWx0ID0gaGl0VGVzdFJlc3VsdEF0UG9pbnQocGFnZVBvaW50LCBoaXRUeXBlIHwg
SGl0VGVzdFJlcXVlc3Q6OlR5cGU6OkFsbG93Q2hpbGRGcmFtZUNvbnRlbnQpOwogICAgICAgICAg
ICAgICAgIG1fb3JpZ2luYXRpbmdUb3VjaFBvaW50VGFyZ2V0S2V5ID0gdG91Y2hQb2ludFRhcmdl
dEtleTsKICAgICAgICAgICAgIH0gZWxzZSBpZiAobV9vcmlnaW5hdGluZ1RvdWNoUG9pbnREb2N1
bWVudC5nZXQoKSAmJiBtX29yaWdpbmF0aW5nVG91Y2hQb2ludERvY3VtZW50LT5mcmFtZSgpKSB7
CiAgICAgICAgICAgICAgICAgTGF5b3V0UG9pbnQgcGFnZVBvaW50SW5PcmlnaW5hdGluZ0RvY3Vt
ZW50ID0gZG9jdW1lbnRQb2ludEZvcldpbmRvd1BvaW50KCptX29yaWdpbmF0aW5nVG91Y2hQb2lu
dERvY3VtZW50LT5mcmFtZSgpLCBwb2ludC5wb3MoKSk7CkBAIC00NTUzLDcgKzQ1NTMsNyBAQCBi
b29sIEV2ZW50SGFuZGxlcjo6ZGlzcGF0Y2hTeW50aGV0aWNUb3VjaEV2ZW50SWZFbmFibGVkKGNv
bnN0IFBsYXRmb3JtTW91c2VFdmVudAogICAgIGlmIChldmVudFR5cGUgIT0gUGxhdGZvcm1FdmVu
dDo6TW91c2VNb3ZlZCAmJiBldmVudFR5cGUgIT0gUGxhdGZvcm1FdmVudDo6TW91c2VQcmVzc2Vk
ICYmIGV2ZW50VHlwZSAhPSBQbGF0Zm9ybUV2ZW50OjpNb3VzZVJlbGVhc2VkKQogICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAKLSAgICBjb25zdGV4cHIgT3B0aW9uU2V0PEhpdFRlc3RSZXF1ZXN0OjpS
ZXF1ZXN0VHlwZT4gaGl0VHlwZSB7IEhpdFRlc3RSZXF1ZXN0OjpBY3RpdmUsIEhpdFRlc3RSZXF1
ZXN0OjpEaXNhbGxvd1VzZXJBZ2VudFNoYWRvd0NvbnRlbnQgfTsKKyAgICBjb25zdGV4cHIgT3B0
aW9uU2V0PEhpdFRlc3RSZXF1ZXN0OjpUeXBlPiBoaXRUeXBlIHsgSGl0VGVzdFJlcXVlc3Q6OlR5
cGU6OkFjdGl2ZSwgSGl0VGVzdFJlcXVlc3Q6OlR5cGU6OkRpc2FsbG93VXNlckFnZW50U2hhZG93
Q29udGVudCB9OwogICAgIE1vdXNlRXZlbnRXaXRoSGl0VGVzdFJlc3VsdHMgbW91c2VFdmVudCA9
IHByZXBhcmVNb3VzZUV2ZW50KGhpdFR5cGUsIHBsYXRmb3JtTW91c2VFdmVudCk7CiAgICAgaWYg
KG1vdXNlRXZlbnQuc2Nyb2xsYmFyKCkgfHwgc3ViZnJhbWVGb3JIaXRUZXN0UmVzdWx0KG1vdXNl
RXZlbnQpKQogICAgICAgICByZXR1cm4gZmFsc2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL0V2ZW50SGFuZGxlci5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIu
aAppbmRleCAyMWU2M2EzMGVjMTFjZDczOWRhNGQ1YTg5YjliNTQ4YWVmYTk1NzZlLi5mZmI3MzY5
NDUwZTQ5MzllYzdiY2FlMmRiYTdiYTkyODVmOGY2NzFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL0V2ZW50SGFuZGxlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRI
YW5kbGVyLmgKQEAgLTE1NSw3ICsxNTUsNyBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQg
dm9pZCBkaXNwYXRjaEZha2VNb3VzZU1vdmVFdmVudFNvb24oKTsKICAgICB2b2lkIGRpc3BhdGNo
RmFrZU1vdXNlTW92ZUV2ZW50U29vbkluUXVhZChjb25zdCBGbG9hdFF1YWQmKTsKIAotICAgIFdF
QkNPUkVfRVhQT1JUIEhpdFRlc3RSZXN1bHQgaGl0VGVzdFJlc3VsdEF0UG9pbnQoY29uc3QgTGF5
b3V0UG9pbnQmLCBPcHRpb25TZXQ8SGl0VGVzdFJlcXVlc3Q6OlJlcXVlc3RUeXBlPiwgY29uc3Qg
TGF5b3V0U2l6ZSYgcGFkZGluZyA9IExheW91dFNpemUoKSkgY29uc3Q7CisgICAgV0VCQ09SRV9F
WFBPUlQgSGl0VGVzdFJlc3VsdCBoaXRUZXN0UmVzdWx0QXRQb2ludChjb25zdCBMYXlvdXRQb2lu
dCYsIE9wdGlvblNldDxIaXRUZXN0UmVxdWVzdDo6VHlwZT4sIGNvbnN0IExheW91dFNpemUmIHBh
ZGRpbmcgPSBMYXlvdXRTaXplKCkpIGNvbnN0OwogCiAgICAgYm9vbCBtb3VzZVByZXNzZWQoKSBj
b25zdCB7IHJldHVybiBtX21vdXNlUHJlc3NlZDsgfQogICAgIE5vZGUqIG1vdXNlUHJlc3NOb2Rl
KCkgY29uc3QgeyByZXR1cm4gbV9tb3VzZVByZXNzTm9kZS5nZXQoKTsgfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGFnZS9Gb2N1c0NvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGFnZS9Gb2N1c0NvbnRyb2xsZXIuY3BwCmluZGV4IGQzYWIxZDNhMzJlNjc3YTFlYjI5NTM3ZjJi
ZmFhNWMwNTI0OWJmZGUuLmJmYmJhZGVhNzJlMTRjOWJjNzYwN2VhZTllM2UwM2Y5NTA5ZjJiZDcg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRm9jdXNDb250cm9sbGVyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZvY3VzQ29udHJvbGxlci5jcHAKQEAgLTk4Myw3ICs5ODMs
NyBAQCBzdGF0aWMgdm9pZCB1cGRhdGVGb2N1c0NhbmRpZGF0ZUlmTmVlZGVkKEZvY3VzRGlyZWN0
aW9uIGRpcmVjdGlvbiwgY29uc3QgRm9jdXNDYQogICAgIGlmICghaW50ZXJzZWN0aW9uUmVjdC5p
c0VtcHR5KCkgJiYgIWFyZUVsZW1lbnRzT25TYW1lTGluZShjbG9zZXN0LCBjYW5kaWRhdGUpKSB7
CiAgICAgICAgIC8vIElmIDIgbm9kZXMgYXJlIGludGVyc2VjdGluZywgZG8gaGl0IHRlc3QgdG8g
ZmluZCB3aGljaCBub2RlIGluIG9uIHRvcC4KICAgICAgICAgYXV0byBjZW50ZXIgPSBmbG9vcmVk
SW50UG9pbnQoaW50ZXJzZWN0aW9uUmVjdC5jZW50ZXIoKSk7IC8vIEZJWE1FOiBXb3VsZCByb3Vu
ZGVkSW50UG9pbnQgYmUgYmV0dGVyPwotICAgICAgICBjb25zdGV4cHIgT3B0aW9uU2V0PEhpdFRl
c3RSZXF1ZXN0OjpSZXF1ZXN0VHlwZT4gaGl0VHlwZSB7IEhpdFRlc3RSZXF1ZXN0OjpSZWFkT25s
eSwgSGl0VGVzdFJlcXVlc3Q6OkFjdGl2ZSwgSGl0VGVzdFJlcXVlc3Q6Oklnbm9yZUNsaXBwaW5n
LCBIaXRUZXN0UmVxdWVzdDo6RGlzYWxsb3dVc2VyQWdlbnRTaGFkb3dDb250ZW50LCBIaXRUZXN0
UmVxdWVzdDo6QWxsb3dDaGlsZEZyYW1lQ29udGVudCB9OworICAgICAgICBjb25zdGV4cHIgT3B0
aW9uU2V0PEhpdFRlc3RSZXF1ZXN0OjpUeXBlPiBoaXRUeXBlIHsgSGl0VGVzdFJlcXVlc3Q6OlR5
cGU6OlJlYWRPbmx5LCBIaXRUZXN0UmVxdWVzdDo6VHlwZTo6QWN0aXZlLCBIaXRUZXN0UmVxdWVz
dDo6VHlwZTo6SWdub3JlQ2xpcHBpbmcsIEhpdFRlc3RSZXF1ZXN0OjpUeXBlOjpEaXNhbGxvd1Vz
ZXJBZ2VudFNoYWRvd0NvbnRlbnQsIEhpdFRlc3RSZXF1ZXN0OjpUeXBlOjpBbGxvd0NoaWxkRnJh
bWVDb250ZW50IH07CiAgICAgICAgIEhpdFRlc3RSZXN1bHQgcmVzdWx0ID0gY2FuZGlkYXRlLnZp
c2libGVOb2RlLT5kb2N1bWVudCgpLnBhZ2UoKS0+bWFpbkZyYW1lKCkuZXZlbnRIYW5kbGVyKCku
aGl0VGVzdFJlc3VsdEF0UG9pbnQoY2VudGVyLCBoaXRUeXBlKTsKICAgICAgICAgaWYgKGNhbmRp
ZGF0ZS52aXNpYmxlTm9kZS0+Y29udGFpbnMocmVzdWx0LmlubmVyTm9kZSgpKSkgewogICAgICAg
ICAgICAgY2xvc2VzdCA9IGNhbmRpZGF0ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvRnJhbWUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZS5jcHAKaW5kZXggYTM2MTJm
MWZmMjgzODkwYmZkMzQ4YmYzNDFjYmIxNmZhOGM1YTQyMy4uZTUwMzFkMDZkMTdjY2YwNGRiMGQ5
ODg0NGM3NjlkMzJiYmM0ODE1MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFt
ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZS5jcHAKQEAgLTgyMSw3ICs4MjEs
NyBAQCBTdHJpbmcgRnJhbWU6OmRpc3BsYXlTdHJpbmdNb2RpZmllZEJ5RW5jb2RpbmcoY29uc3Qg
U3RyaW5nJiBzdHIpIGNvbnN0CiAKIFZpc2libGVQb3NpdGlvbiBGcmFtZTo6dmlzaWJsZVBvc2l0
aW9uRm9yUG9pbnQoY29uc3QgSW50UG9pbnQmIGZyYW1lUG9pbnQpIGNvbnN0CiB7Ci0gICAgY29u
c3RleHByIE9wdGlvblNldDxIaXRUZXN0UmVxdWVzdDo6UmVxdWVzdFR5cGU+IGhpdFR5cGUgeyBI
aXRUZXN0UmVxdWVzdDo6UmVhZE9ubHksIEhpdFRlc3RSZXF1ZXN0OjpBY3RpdmUsIEhpdFRlc3RS
ZXF1ZXN0OjpBbGxvd1Zpc2libGVDaGlsZEZyYW1lQ29udGVudE9ubHkgfTsKKyAgICBjb25zdGV4
cHIgT3B0aW9uU2V0PEhpdFRlc3RSZXF1ZXN0OjpUeXBlPiBoaXRUeXBlIHsgSGl0VGVzdFJlcXVl
c3Q6OlR5cGU6OlJlYWRPbmx5LCBIaXRUZXN0UmVxdWVzdDo6VHlwZTo6QWN0aXZlLCBIaXRUZXN0
UmVxdWVzdDo6VHlwZTo6QWxsb3dWaXNpYmxlQ2hpbGRGcmFtZUNvbnRlbnRPbmx5IH07CiAgICAg
SGl0VGVzdFJlc3VsdCByZXN1bHQgPSBldmVudEhhbmRsZXIoKS5oaXRUZXN0UmVzdWx0QXRQb2lu
dChmcmFtZVBvaW50LCBoaXRUeXBlKTsKICAgICBOb2RlKiBub2RlID0gcmVzdWx0LmlubmVyTm9u
U2hhcmVkTm9kZSgpOwogICAgIGlmICghbm9kZSkKQEAgLTg0NCw3ICs4NDQsNyBAQCBEb2N1bWVu
dCogRnJhbWU6OmRvY3VtZW50QXRQb2ludChjb25zdCBJbnRQb2ludCYgcG9pbnQpCiAgICAgSGl0
VGVzdFJlc3VsdCByZXN1bHQgPSBIaXRUZXN0UmVzdWx0KHB0KTsKIAogICAgIGlmIChjb250ZW50
UmVuZGVyZXIoKSkgewotICAgICAgICBjb25zdGV4cHIgT3B0aW9uU2V0PEhpdFRlc3RSZXF1ZXN0
OjpSZXF1ZXN0VHlwZT4gaGl0VHlwZSB7IEhpdFRlc3RSZXF1ZXN0OjpSZWFkT25seSwgSGl0VGVz
dFJlcXVlc3Q6OkFjdGl2ZSwgSGl0VGVzdFJlcXVlc3Q6OkRpc2FsbG93VXNlckFnZW50U2hhZG93
Q29udGVudCwgSGl0VGVzdFJlcXVlc3Q6OkFsbG93Q2hpbGRGcmFtZUNvbnRlbnQgfTsKKyAgICAg
ICAgY29uc3RleHByIE9wdGlvblNldDxIaXRUZXN0UmVxdWVzdDo6VHlwZT4gaGl0VHlwZSB7IEhp
dFRlc3RSZXF1ZXN0OjpUeXBlOjpSZWFkT25seSwgSGl0VGVzdFJlcXVlc3Q6OlR5cGU6OkFjdGl2
ZSwgSGl0VGVzdFJlcXVlc3Q6OlR5cGU6OkRpc2FsbG93VXNlckFnZW50U2hhZG93Q29udGVudCwg
SGl0VGVzdFJlcXVlc3Q6OlR5cGU6OkFsbG93Q2hpbGRGcmFtZUNvbnRlbnQgfTsKICAgICAgICAg
cmVzdWx0ID0gZXZlbnRIYW5kbGVyKCkuaGl0VGVzdFJlc3VsdEF0UG9pbnQocHQsIGhpdFR5cGUp
OwogICAgIH0KICAgICByZXR1cm4gcmVzdWx0LmlubmVyTm9kZSgpID8gJnJlc3VsdC5pbm5lck5v
ZGUoKS0+ZG9jdW1lbnQoKSA6IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1Bh
Z2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcAppbmRleCAwM2Y4MjMyMGJjMjFj
NDJmZjhlZmJkMDI2NGFkMDk5MGMwNTIyZDkwLi40YjFkYjQ2ZTAzMzJhNGQ4ZTRhYjlkZTc1ODVm
OTRiZjFlNTljYjJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAKQEAgLTk2Niw3ICs5NjYsNyBAQCBWZWN0
b3I8UmVmPEVsZW1lbnQ+PiBQYWdlOjplZGl0YWJsZUVsZW1lbnRzSW5SZWN0KGNvbnN0IEZsb2F0
UmVjdCYgc2VhcmNoUmVjdEluUgogICAgIGlmICghZG9jdW1lbnQpCiAgICAgICAgIHJldHVybiB7
IH07CiAKLSAgICBjb25zdGV4cHIgT3B0aW9uU2V0PEhpdFRlc3RSZXF1ZXN0OjpSZXF1ZXN0VHlw
ZT4gaGl0VHlwZSB7IEhpdFRlc3RSZXF1ZXN0OjpSZWFkT25seSwgSGl0VGVzdFJlcXVlc3Q6OkFj
dGl2ZSwgSGl0VGVzdFJlcXVlc3Q6OkNvbGxlY3RNdWx0aXBsZUVsZW1lbnRzLCBIaXRUZXN0UmVx
dWVzdDo6RGlzYWxsb3dVc2VyQWdlbnRTaGFkb3dDb250ZW50LCBIaXRUZXN0UmVxdWVzdDo6QWxs
b3dWaXNpYmxlQ2hpbGRGcmFtZUNvbnRlbnRPbmx5IH07CisgICAgY29uc3RleHByIE9wdGlvblNl
dDxIaXRUZXN0UmVxdWVzdDo6VHlwZT4gaGl0VHlwZSB7IEhpdFRlc3RSZXF1ZXN0OjpUeXBlOjpS
ZWFkT25seSwgSGl0VGVzdFJlcXVlc3Q6OlR5cGU6OkFjdGl2ZSwgSGl0VGVzdFJlcXVlc3Q6OlR5
cGU6OkNvbGxlY3RNdWx0aXBsZUVsZW1lbnRzLCBIaXRUZXN0UmVxdWVzdDo6VHlwZTo6RGlzYWxs
b3dVc2VyQWdlbnRTaGFkb3dDb250ZW50LCBIaXRUZXN0UmVxdWVzdDo6VHlwZTo6QWxsb3dWaXNp
YmxlQ2hpbGRGcmFtZUNvbnRlbnRPbmx5IH07CiAgICAgTGF5b3V0UmVjdCBzZWFyY2hSZWN0SW5N
YWluRnJhbWVDb29yZGluYXRlcyA9IGZyYW1lVmlldy0+cm9vdFZpZXdUb0NvbnRlbnRzKHJvdW5k
ZWRJbnRSZWN0KHNlYXJjaFJlY3RJblJvb3RWaWV3Q29vcmRpbmF0ZXMpKTsKICAgICBIaXRUZXN0
UmVzdWx0IGhpdFRlc3RSZXN1bHQgeyBzZWFyY2hSZWN0SW5NYWluRnJhbWVDb29yZGluYXRlcyB9
OwogICAgIGlmICghZG9jdW1lbnQtPmhpdFRlc3QoaGl0VHlwZSwgaGl0VGVzdFJlc3VsdCkpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BvaW50ZXJDYXB0dXJlQ29udHJvbGxlci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BvaW50ZXJDYXB0dXJlQ29udHJvbGxlci5jcHAKaW5k
ZXggNzU3ZjU0NTY4ZTFkOGI0ZDVmZTQwZjMwOTExMDczZTZkZTJiMTdhMS4uZjI5ZjUzNjhmMDRi
MDE0MGMzMzhlNzFlMTRjZWVhZTM1OTY4MTVkNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGFnZS9Qb2ludGVyQ2FwdHVyZUNvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvUG9pbnRlckNhcHR1cmVDb250cm9sbGVyLmNwcApAQCAtNDk3LDcgKzQ5Nyw3IEBAIHZvaWQg
UG9pbnRlckNhcHR1cmVDb250cm9sbGVyOjpjYW5jZWxQb2ludGVyKFBvaW50ZXJJRCBwb2ludGVy
SWQsIGNvbnN0IEludFBvaW50CiAgICAgYXV0byB0YXJnZXQgPSBbJl0oKSAtPiBSZWZQdHI8RWxl
bWVudD4gewogICAgICAgICBpZiAoY2FwdHVyaW5nRGF0YS50YXJnZXRPdmVycmlkZSkKICAgICAg
ICAgICAgIHJldHVybiBjYXB0dXJpbmdEYXRhLnRhcmdldE92ZXJyaWRlOwotICAgICAgICBjb25z
dGV4cHIgT3B0aW9uU2V0PEhpdFRlc3RSZXF1ZXN0OjpSZXF1ZXN0VHlwZT4gaGl0VHlwZSB7IEhp
dFRlc3RSZXF1ZXN0OjpSZWFkT25seSwgSGl0VGVzdFJlcXVlc3Q6OkFjdGl2ZSwgSGl0VGVzdFJl
cXVlc3Q6OkRpc2FsbG93VXNlckFnZW50U2hhZG93Q29udGVudCwgSGl0VGVzdFJlcXVlc3Q6OkFs
bG93Q2hpbGRGcmFtZUNvbnRlbnQgfTsKKyAgICAgICAgY29uc3RleHByIE9wdGlvblNldDxIaXRU
ZXN0UmVxdWVzdDo6VHlwZT4gaGl0VHlwZSB7IEhpdFRlc3RSZXF1ZXN0OjpUeXBlOjpSZWFkT25s
eSwgSGl0VGVzdFJlcXVlc3Q6OlR5cGU6OkFjdGl2ZSwgSGl0VGVzdFJlcXVlc3Q6OlR5cGU6OkRp
c2FsbG93VXNlckFnZW50U2hhZG93Q29udGVudCwgSGl0VGVzdFJlcXVlc3Q6OlR5cGU6OkFsbG93
Q2hpbGRGcmFtZUNvbnRlbnQgfTsKICAgICAgICAgcmV0dXJuIG1fcGFnZS5tYWluRnJhbWUoKS5l
dmVudEhhbmRsZXIoKS5oaXRUZXN0UmVzdWx0QXRQb2ludChkb2N1bWVudFBvaW50LCBoaXRUeXBl
KS5pbm5lck5vblNoYXJlZEVsZW1lbnQoKTsKICAgICB9KCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvaW9zL0V2ZW50SGFuZGxlcklPUy5tbSBiL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvaW9zL0V2ZW50SGFuZGxlcklPUy5tbQppbmRleCAxYjYzZTQ5NGI3NzY3NGIxY2RmMDcxOTVj
MzUxZTU3ODVmMGZhN2M1Li4yZjA2NTU4MzUwMzQyM2Q1ZGQyNWQ3ODM4ODdiYzJlMGZhNGFjNzg3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL2lvcy9FdmVudEhhbmRsZXJJT1MubW0K
KysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9pb3MvRXZlbnRIYW5kbGVySU9TLm1tCkBAIC03MTks
NyArNzE5LDcgQEAgYm9vbCBFdmVudEhhbmRsZXI6OnRyeVRvQmVnaW5EcmFnQXRQb2ludChjb25z
dCBJbnRQb2ludCYgY2xpZW50UG9zaXRpb24sIGNvbnN0IEkKICAgICBQbGF0Zm9ybU1vdXNlRXZl
bnQgc3ludGhldGljTW91c2VQcmVzc0V2ZW50KGFkanVzdGVkQ2xpZW50UG9zaXRpb24sIGFkanVz
dGVkR2xvYmFsUG9zaXRpb24sIExlZnRCdXR0b24sIFBsYXRmb3JtRXZlbnQ6Ok1vdXNlUHJlc3Nl
ZCwgMSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIFdhbGxUaW1lOjpub3coKSwgMCwgTm9U
YXApOwogICAgIFBsYXRmb3JtTW91c2VFdmVudCBzeW50aGV0aWNNb3VzZU1vdmVFdmVudChhZGp1
c3RlZENsaWVudFBvc2l0aW9uLCBhZGp1c3RlZEdsb2JhbFBvc2l0aW9uLCBMZWZ0QnV0dG9uLCBQ
bGF0Zm9ybUV2ZW50OjpNb3VzZU1vdmVkLCAwLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwg
V2FsbFRpbWU6Om5vdygpLCAwLCBOb1RhcCk7CiAKLSAgICBjb25zdGV4cHIgT3B0aW9uU2V0PEhp
dFRlc3RSZXF1ZXN0OjpSZXF1ZXN0VHlwZT4gaGl0VHlwZSB7IEhpdFRlc3RSZXF1ZXN0OjpBY3Rp
dmUsIEhpdFRlc3RSZXF1ZXN0OjpEaXNhbGxvd1VzZXJBZ2VudFNoYWRvd0NvbnRlbnQgfTsKKyAg
ICBjb25zdGV4cHIgT3B0aW9uU2V0PEhpdFRlc3RSZXF1ZXN0OjpUeXBlPiBoaXRUeXBlIHsgSGl0
VGVzdFJlcXVlc3Q6OlR5cGU6OkFjdGl2ZSwgSGl0VGVzdFJlcXVlc3Q6OlR5cGU6OkRpc2FsbG93
VXNlckFnZW50U2hhZG93Q29udGVudCB9OwogICAgIGF1dG8gZG9jdW1lbnRQb2ludCA9IHByb3Rl
Y3RlZEZyYW1lLT52aWV3KCkgPyBwcm90ZWN0ZWRGcmFtZS0+dmlldygpLT53aW5kb3dUb0NvbnRl
bnRzKHN5bnRoZXRpY01vdXNlTW92ZUV2ZW50LnBvc2l0aW9uKCkpIDogc3ludGhldGljTW91c2VN
b3ZlRXZlbnQucG9zaXRpb24oKTsKICAgICBhdXRvIGhpdFRlc3RlZE1vdXNlRXZlbnQgPSBkb2N1
bWVudC0+cHJlcGFyZU1vdXNlRXZlbnQoaGl0VHlwZSwgZG9jdW1lbnRQb2ludCwgc3ludGhldGlj
TW91c2VNb3ZlRXZlbnQpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL2lvcy9G
cmFtZUlPUy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvaW9zL0ZyYW1lSU9TLm1tCmluZGV4IGE0
OWMxMzFiNDYyMTBlMzBjMmE3NWE0YjAzMzkzMTZmMTExNWUxM2EuLjEyY2M3MzM2YWU4N2I2ZDlk
OGVhODNjZjU0M2QwMjk5MTRlYWYxZGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
aW9zL0ZyYW1lSU9TLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvaW9zL0ZyYW1lSU9TLm1t
CkBAIC0xODQsNyArMTg0LDcgQEAgQ0dSZWN0IEZyYW1lOjpyZW5kZXJSZWN0Rm9yUG9pbnQoQ0dQ
b2ludCBwb2ludCwgYm9vbCogaXNSZXBsYWNlZCwgZmxvYXQqIGZvbnRTaXoKICAgICBpZiAoIWxh
eWVyKQogICAgICAgICByZXR1cm4gQ0dSZWN0WmVybzsKIAotICAgIGNvbnN0ZXhwciBPcHRpb25T
ZXQ8SGl0VGVzdFJlcXVlc3Q6OlJlcXVlc3RUeXBlPiBoaXRUeXBlIHsgSGl0VGVzdFJlcXVlc3Q6
OlJlYWRPbmx5LCBIaXRUZXN0UmVxdWVzdDo6QWN0aXZlLCBIaXRUZXN0UmVxdWVzdDo6RGlzYWxs
b3dVc2VyQWdlbnRTaGFkb3dDb250ZW50LCBIaXRUZXN0UmVxdWVzdDo6QWxsb3dDaGlsZEZyYW1l
Q29udGVudCB9OworICAgIGNvbnN0ZXhwciBPcHRpb25TZXQ8SGl0VGVzdFJlcXVlc3Q6OlR5cGU+
IGhpdFR5cGUgeyBIaXRUZXN0UmVxdWVzdDo6VHlwZTo6UmVhZE9ubHksIEhpdFRlc3RSZXF1ZXN0
OjpUeXBlOjpBY3RpdmUsIEhpdFRlc3RSZXF1ZXN0OjpUeXBlOjpEaXNhbGxvd1VzZXJBZ2VudFNo
YWRvd0NvbnRlbnQsIEhpdFRlc3RSZXF1ZXN0OjpUeXBlOjpBbGxvd0NoaWxkRnJhbWVDb250ZW50
IH07CiAgICAgYXV0byByZXN1bHQgPSBldmVudEhhbmRsZXIoKS5oaXRUZXN0UmVzdWx0QXRQb2lu
dChJbnRQb2ludChyb3VuZGYocG9pbnQueCksIHJvdW5kZihwb2ludC55KSksIGhpdFR5cGUpOwog
CiAgICAgTm9kZSogbm9kZSA9IHJlc3VsdC5pbm5lck5vZGUoKTsKQEAgLTIyOSw3ICsyMjksNyBA
QCBDR1JlY3QgRnJhbWU6OnJlbmRlclJlY3RGb3JQb2ludChDR1BvaW50IHBvaW50LCBib29sKiBp
c1JlcGxhY2VkLCBmbG9hdCogZm9udFNpegogdm9pZCBGcmFtZTo6YmV0dGVyQXBwcm94aW1hdGVO
b2RlKGNvbnN0IEludFBvaW50JiB0ZXN0UG9pbnQsIGNvbnN0IE5vZGVRdWFsaWZpZXImIG5vZGVR
dWFsaWZpZXJGdW5jdGlvbiwgTm9kZSomIGJlc3QsIE5vZGUqIGZhaWxlZE5vZGUsIEludFBvaW50
JiBiZXN0UG9pbnQsIEludFJlY3QmIGJlc3RSZWN0LCBjb25zdCBJbnRSZWN0JiB0ZXN0UmVjdCkK
IHsKICAgICBJbnRSZWN0IGNhbmRpZGF0ZVJlY3Q7Ci0gICAgY29uc3RleHByIE9wdGlvblNldDxI
aXRUZXN0UmVxdWVzdDo6UmVxdWVzdFR5cGU+IGhpdFR5cGUgeyBIaXRUZXN0UmVxdWVzdDo6UmVh
ZE9ubHksIEhpdFRlc3RSZXF1ZXN0OjpBY3RpdmUsIEhpdFRlc3RSZXF1ZXN0OjpEaXNhbGxvd1Vz
ZXJBZ2VudFNoYWRvd0NvbnRlbnQsIEhpdFRlc3RSZXF1ZXN0OjpBbGxvd1Zpc2libGVDaGlsZEZy
YW1lQ29udGVudE9ubHkgfTsKKyAgICBjb25zdGV4cHIgT3B0aW9uU2V0PEhpdFRlc3RSZXF1ZXN0
OjpUeXBlPiBoaXRUeXBlIHsgSGl0VGVzdFJlcXVlc3Q6OlR5cGU6OlJlYWRPbmx5LCBIaXRUZXN0
UmVxdWVzdDo6VHlwZTo6QWN0aXZlLCBIaXRUZXN0UmVxdWVzdDo6VHlwZTo6RGlzYWxsb3dVc2Vy
QWdlbnRTaGFkb3dDb250ZW50LCBIaXRUZXN0UmVxdWVzdDo6VHlwZTo6QWxsb3dWaXNpYmxlQ2hp
bGRGcmFtZUNvbnRlbnRPbmx5IH07CiAgICAgYXV0byogY2FuZGlkYXRlID0gbm9kZVF1YWxpZmll
ckZ1bmN0aW9uKGV2ZW50SGFuZGxlcigpLmhpdFRlc3RSZXN1bHRBdFBvaW50KHRlc3RQb2ludCwg
aGl0VHlwZSksIGZhaWxlZE5vZGUsICZjYW5kaWRhdGVSZWN0KTsKIAogICAgIC8vIEJhaWwgaWYg
d2UgaGF2ZSBubyBjYW5kaWRhdGUsIG9yIHRoZSBjYW5kaWRhdGUgaXMgYWxyZWFkeSBlcXVhbCB0
byBvdXIgY3VycmVudCBiZXN0IG5vZGUsCkBAIC0yNjUsNyArMjY1LDcgQEAgYm9vbCBGcmFtZTo6
aGl0VGVzdFJlc3VsdEF0Vmlld3BvcnRMb2NhdGlvbihjb25zdCBGbG9hdFBvaW50JiB2aWV3cG9y
dExvY2F0aW9uLAogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBjZW50ZXIgPSB2aWV3LT53
aW5kb3dUb0NvbnRlbnRzKHJvdW5kZWRJbnRQb2ludCh2aWV3cG9ydExvY2F0aW9uKSk7Ci0gICAg
Y29uc3RleHByIE9wdGlvblNldDxIaXRUZXN0UmVxdWVzdDo6UmVxdWVzdFR5cGU+IGhpdFR5cGUg
eyBIaXRUZXN0UmVxdWVzdDo6UmVhZE9ubHksIEhpdFRlc3RSZXF1ZXN0OjpBY3RpdmUsIEhpdFRl
c3RSZXF1ZXN0OjpEaXNhbGxvd1VzZXJBZ2VudFNoYWRvd0NvbnRlbnQsIEhpdFRlc3RSZXF1ZXN0
OjpBbGxvd1Zpc2libGVDaGlsZEZyYW1lQ29udGVudE9ubHkgfTsKKyAgICBjb25zdGV4cHIgT3B0
aW9uU2V0PEhpdFRlc3RSZXF1ZXN0OjpUeXBlPiBoaXRUeXBlIHsgSGl0VGVzdFJlcXVlc3Q6OlR5
cGU6OlJlYWRPbmx5LCBIaXRUZXN0UmVxdWVzdDo6VHlwZTo6QWN0aXZlLCBIaXRUZXN0UmVxdWVz
dDo6VHlwZTo6RGlzYWxsb3dVc2VyQWdlbnRTaGFkb3dDb250ZW50LCBIaXRUZXN0UmVxdWVzdDo6
VHlwZTo6QWxsb3dWaXNpYmxlQ2hpbGRGcmFtZUNvbnRlbnRPbmx5IH07CiAgICAgaGl0VGVzdFJl
c3VsdCA9IGV2ZW50SGFuZGxlcigpLmhpdFRlc3RSZXN1bHRBdFBvaW50KGNlbnRlciwgaGl0VHlw
ZSk7CiAgICAgcmV0dXJuIHRydWU7CiB9CkBAIC0zMTIsNyArMzEyLDcgQEAgTm9kZSogRnJhbWU6
OnF1YWxpZnlpbmdOb2RlQXRWaWV3cG9ydExvY2F0aW9uKGNvbnN0IEZsb2F0UG9pbnQmIHZpZXdw
b3J0TG9jYXRpb24KICAgICAgICAgICAgIEludFNpemUgdGVzdE9mZnNldCh0ZXN0T2Zmc2V0c1tu
XSAqIHNlYXJjaFJhZGl1cywgdGVzdE9mZnNldHNbbiArIDFdICogc2VhcmNoUmFkaXVzKTsKICAg
ICAgICAgICAgIEludFBvaW50IHRlc3RQb2ludCA9IHRlc3RDZW50ZXIgKyB0ZXN0T2Zmc2V0Owog
Ci0gICAgICAgICAgICBjb25zdGV4cHIgT3B0aW9uU2V0PEhpdFRlc3RSZXF1ZXN0OjpSZXF1ZXN0
VHlwZT4gaGl0VHlwZSB7IEhpdFRlc3RSZXF1ZXN0OjpSZWFkT25seSwgSGl0VGVzdFJlcXVlc3Q6
OkFjdGl2ZSwgSGl0VGVzdFJlcXVlc3Q6OkRpc2FsbG93VXNlckFnZW50U2hhZG93Q29udGVudCwg
SGl0VGVzdFJlcXVlc3Q6OkFsbG93Q2hpbGRGcmFtZUNvbnRlbnQgfTsKKyAgICAgICAgICAgIGNv
bnN0ZXhwciBPcHRpb25TZXQ8SGl0VGVzdFJlcXVlc3Q6OlR5cGU+IGhpdFR5cGUgeyBIaXRUZXN0
UmVxdWVzdDo6VHlwZTo6UmVhZE9ubHksIEhpdFRlc3RSZXF1ZXN0OjpUeXBlOjpBY3RpdmUsIEhp
dFRlc3RSZXF1ZXN0OjpUeXBlOjpEaXNhbGxvd1VzZXJBZ2VudFNoYWRvd0NvbnRlbnQsIEhpdFRl
c3RSZXF1ZXN0OjpUeXBlOjpBbGxvd0NoaWxkRnJhbWVDb250ZW50IH07CiAgICAgICAgICAgICBh
dXRvIGNhbmRpZGF0ZUluZm8gPSBldmVudEhhbmRsZXIoKS5oaXRUZXN0UmVzdWx0QXRQb2ludCh0
ZXN0UG9pbnQsIGhpdFR5cGUpOwogICAgICAgICAgICAgTm9kZSogY2FuZGlkYXRlTm9kZSA9IG5v
ZGVRdWFsaWZpZXJGdW5jdGlvbihjYW5kaWRhdGVJbmZvLCAwLCAwKTsKICAgICAgICAgICAgIGlm
IChjYW5kaWRhdGVOb2RlICYmIGNhbmRpZGF0ZU5vZGUtPmlzRGVzY2VuZGFudE9mKG9yaWdpbmFs
QXBwcm94aW1hdGVOb2RlKSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L0hpdFRlc3RSZXF1ZXN0LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSGl0VGVzdFJlcXVl
c3QuaAppbmRleCAyZWY4NjY0YzI5MjBlYTJjZGFkMmMwOWZhMzVkMzEwYzFlNGJjZjgwLi41YTE1
YzNhMWE3OWFiMzZkODk4NTExNTI4MWMzNGJlMDQ5NzE1MDllIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvSGl0VGVzdFJlcXVlc3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvSGl0VGVzdFJlcXVlc3QuaApAQCAtMjksNTggKzI5LDU4IEBAIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAogY2xhc3MgSGl0VGVzdFJlcXVlc3QgewogcHVibGljOgotICAgIGVudW0gUmVx
dWVzdFR5cGUgewotICAgICAgICBSZWFkT25seSA9IDEgPDwgMSwKLSAgICAgICAgQWN0aXZlID0g
MSA8PCAyLAotICAgICAgICBNb3ZlID0gMSA8PCAzLAotICAgICAgICBSZWxlYXNlID0gMSA8PCA0
LAotICAgICAgICBJZ25vcmVDU1NQb2ludGVyRXZlbnRzUHJvcGVydHkgPSAxIDw8IDUsCi0gICAg
ICAgIElnbm9yZUNsaXBwaW5nID0gMSA8PCA2LAotICAgICAgICBTVkdDbGlwQ29udGVudCA9IDEg
PDwgNywKLSAgICAgICAgVG91Y2hFdmVudCA9IDEgPDwgOCwKLSAgICAgICAgRGlzYWxsb3dVc2Vy
QWdlbnRTaGFkb3dDb250ZW50ID0gMSA8PCA5LAotICAgICAgICBBbGxvd0ZyYW1lU2Nyb2xsYmFy
cyA9IDEgPDwgMTAsCi0gICAgICAgIEFsbG93Q2hpbGRGcmFtZUNvbnRlbnQgPSAxIDw8IDExLAot
ICAgICAgICBBbGxvd1Zpc2libGVDaGlsZEZyYW1lQ29udGVudE9ubHkgPSAxIDw8IDEyLAotICAg
ICAgICBDaGlsZEZyYW1lSGl0VGVzdCA9IDEgPDwgMTMsCi0gICAgICAgIEFjY2Vzc2liaWxpdHlI
aXRUZXN0ID0gMSA8PCAxNCwKKyAgICBlbnVtIGNsYXNzIFR5cGUgeworICAgICAgICBSZWFkT25s
eSA9IDEgPDwgMCwKKyAgICAgICAgQWN0aXZlID0gMSA8PCAxLAorICAgICAgICBNb3ZlID0gMSA8
PCAyLAorICAgICAgICBSZWxlYXNlID0gMSA8PCAzLAorICAgICAgICBJZ25vcmVDU1NQb2ludGVy
RXZlbnRzUHJvcGVydHkgPSAxIDw8IDQsCisgICAgICAgIElnbm9yZUNsaXBwaW5nID0gMSA8PCA1
LAorICAgICAgICBTVkdDbGlwQ29udGVudCA9IDEgPDwgNiwKKyAgICAgICAgVG91Y2hFdmVudCA9
IDEgPDwgNywKKyAgICAgICAgRGlzYWxsb3dVc2VyQWdlbnRTaGFkb3dDb250ZW50ID0gMSA8PCA4
LAorICAgICAgICBBbGxvd0ZyYW1lU2Nyb2xsYmFycyA9IDEgPDwgOSwKKyAgICAgICAgQWxsb3dD
aGlsZEZyYW1lQ29udGVudCA9IDEgPDwgMTAsCisgICAgICAgIEFsbG93VmlzaWJsZUNoaWxkRnJh
bWVDb250ZW50T25seSA9IDEgPDwgMTEsCisgICAgICAgIENoaWxkRnJhbWVIaXRUZXN0ID0gMSA8
PCAxMiwKKyAgICAgICAgQWNjZXNzaWJpbGl0eUhpdFRlc3QgPSAxIDw8IDEzLAogICAgICAgICAv
LyBDb2xsZWN0IGEgbGlzdCBvZiBub2RlcyBpbnN0ZWFkIG9mIGp1c3Qgb25lLiBVc2VkIGZvciBl
bGVtZW50c0Zyb21Qb2ludCBhbmQgcmVjdC1iYXNlZCB0ZXN0cy4KLSAgICAgICAgQ29sbGVjdE11
bHRpcGxlRWxlbWVudHMgPSAxIDw8IDE1LAorICAgICAgICBDb2xsZWN0TXVsdGlwbGVFbGVtZW50
cyA9IDEgPDwgMTQsCiAgICAgICAgIC8vIFdoZW4gdXNpbmcgbGlzdC1iYXNlZCB0ZXN0aW5nLCBj
b250aW51ZSBoaXQgdGVzdGluZyBldmVuIGFmdGVyIGEgaGl0IGhhcyBiZWVuIGZvdW5kLgotICAg
ICAgICBJbmNsdWRlQWxsRWxlbWVudHNVbmRlclBvaW50ID0gMSA8PCAxNiwKKyAgICAgICAgSW5j
bHVkZUFsbEVsZW1lbnRzVW5kZXJQb2ludCA9IDEgPDwgMTUsCiAgICAgfTsKIAotICAgIEhpdFRl
c3RSZXF1ZXN0KE9wdGlvblNldDxSZXF1ZXN0VHlwZT4gcmVxdWVzdFR5cGUgPSB7IFJlYWRPbmx5
LCBBY3RpdmUsIERpc2FsbG93VXNlckFnZW50U2hhZG93Q29udGVudCB9KQotICAgICAgICA6IG1f
cmVxdWVzdFR5cGUgeyByZXF1ZXN0VHlwZSB9CisgICAgSGl0VGVzdFJlcXVlc3QoT3B0aW9uU2V0
PFR5cGU+IHR5cGUgPSB7IFR5cGU6OlJlYWRPbmx5LCBUeXBlOjpBY3RpdmUsIFR5cGU6OkRpc2Fs
bG93VXNlckFnZW50U2hhZG93Q29udGVudCB9KQorICAgICAgICA6IG1fdHlwZSB7IHR5cGUgfQog
ICAgIHsKLSAgICAgICAgQVNTRVJUX0lNUExJRVMocmVxdWVzdFR5cGUuY29udGFpbnMoSW5jbHVk
ZUFsbEVsZW1lbnRzVW5kZXJQb2ludCksIHJlcXVlc3RUeXBlLmNvbnRhaW5zKENvbGxlY3RNdWx0
aXBsZUVsZW1lbnRzKSk7CisgICAgICAgIEFTU0VSVF9JTVBMSUVTKHR5cGUuY29udGFpbnMoVHlw
ZTo6SW5jbHVkZUFsbEVsZW1lbnRzVW5kZXJQb2ludCksIHR5cGUuY29udGFpbnMoVHlwZTo6Q29s
bGVjdE11bHRpcGxlRWxlbWVudHMpKTsKICAgICB9CiAKLSAgICBib29sIHJlYWRPbmx5KCkgY29u
c3QgeyByZXR1cm4gbV9yZXF1ZXN0VHlwZS5jb250YWlucyhSZWFkT25seSk7IH0KLSAgICBib29s
IGFjdGl2ZSgpIGNvbnN0IHsgcmV0dXJuIG1fcmVxdWVzdFR5cGUuY29udGFpbnMoQWN0aXZlKTsg
fQotICAgIGJvb2wgbW92ZSgpIGNvbnN0IHsgcmV0dXJuIG1fcmVxdWVzdFR5cGUuY29udGFpbnMo
TW92ZSk7IH0KLSAgICBib29sIHJlbGVhc2UoKSBjb25zdCB7IHJldHVybiBtX3JlcXVlc3RUeXBl
LmNvbnRhaW5zKFJlbGVhc2UpOyB9Ci0gICAgYm9vbCBpZ25vcmVDU1NQb2ludGVyRXZlbnRzUHJv
cGVydHkoKSBjb25zdCB7IHJldHVybiBtX3JlcXVlc3RUeXBlLmNvbnRhaW5zKElnbm9yZUNTU1Bv
aW50ZXJFdmVudHNQcm9wZXJ0eSk7IH0KLSAgICBib29sIGlnbm9yZUNsaXBwaW5nKCkgY29uc3Qg
eyByZXR1cm4gbV9yZXF1ZXN0VHlwZS5jb250YWlucyhJZ25vcmVDbGlwcGluZyk7IH0KLSAgICBi
b29sIHN2Z0NsaXBDb250ZW50KCkgY29uc3QgeyByZXR1cm4gbV9yZXF1ZXN0VHlwZS5jb250YWlu
cyhTVkdDbGlwQ29udGVudCk7IH0KLSAgICBib29sIHRvdWNoRXZlbnQoKSBjb25zdCB7IHJldHVy
biBtX3JlcXVlc3RUeXBlLmNvbnRhaW5zKFRvdWNoRXZlbnQpOyB9CisgICAgYm9vbCByZWFkT25s
eSgpIGNvbnN0IHsgcmV0dXJuIG1fdHlwZS5jb250YWlucyhUeXBlOjpSZWFkT25seSk7IH0KKyAg
ICBib29sIGFjdGl2ZSgpIGNvbnN0IHsgcmV0dXJuIG1fdHlwZS5jb250YWlucyhUeXBlOjpBY3Rp
dmUpOyB9CisgICAgYm9vbCBtb3ZlKCkgY29uc3QgeyByZXR1cm4gbV90eXBlLmNvbnRhaW5zKFR5
cGU6Ok1vdmUpOyB9CisgICAgYm9vbCByZWxlYXNlKCkgY29uc3QgeyByZXR1cm4gbV90eXBlLmNv
bnRhaW5zKFR5cGU6OlJlbGVhc2UpOyB9CisgICAgYm9vbCBpZ25vcmVDU1NQb2ludGVyRXZlbnRz
UHJvcGVydHkoKSBjb25zdCB7IHJldHVybiBtX3R5cGUuY29udGFpbnMoVHlwZTo6SWdub3JlQ1NT
UG9pbnRlckV2ZW50c1Byb3BlcnR5KTsgfQorICAgIGJvb2wgaWdub3JlQ2xpcHBpbmcoKSBjb25z
dCB7IHJldHVybiBtX3R5cGUuY29udGFpbnMoVHlwZTo6SWdub3JlQ2xpcHBpbmcpOyB9CisgICAg
Ym9vbCBzdmdDbGlwQ29udGVudCgpIGNvbnN0IHsgcmV0dXJuIG1fdHlwZS5jb250YWlucyhUeXBl
OjpTVkdDbGlwQ29udGVudCk7IH0KKyAgICBib29sIHRvdWNoRXZlbnQoKSBjb25zdCB7IHJldHVy
biBtX3R5cGUuY29udGFpbnMoVHlwZTo6VG91Y2hFdmVudCk7IH0KICAgICBib29sIG1vdXNlRXZl
bnQoKSBjb25zdCB7IHJldHVybiAhdG91Y2hFdmVudCgpOyB9Ci0gICAgYm9vbCBkaXNhbGxvd3NV
c2VyQWdlbnRTaGFkb3dDb250ZW50KCkgY29uc3QgeyByZXR1cm4gbV9yZXF1ZXN0VHlwZS5jb250
YWlucyhEaXNhbGxvd1VzZXJBZ2VudFNoYWRvd0NvbnRlbnQpOyB9Ci0gICAgYm9vbCBhbGxvd3NG
cmFtZVNjcm9sbGJhcnMoKSBjb25zdCB7IHJldHVybiBtX3JlcXVlc3RUeXBlLmNvbnRhaW5zKEFs
bG93RnJhbWVTY3JvbGxiYXJzKTsgfQotICAgIGJvb2wgYWxsb3dzQ2hpbGRGcmFtZUNvbnRlbnQo
KSBjb25zdCB7IHJldHVybiBtX3JlcXVlc3RUeXBlLmNvbnRhaW5zKEFsbG93Q2hpbGRGcmFtZUNv
bnRlbnQpOyB9Ci0gICAgYm9vbCBhbGxvd3NWaXNpYmxlQ2hpbGRGcmFtZUNvbnRlbnQoKSBjb25z
dCB7IHJldHVybiBtX3JlcXVlc3RUeXBlLmNvbnRhaW5zKEFsbG93VmlzaWJsZUNoaWxkRnJhbWVD
b250ZW50T25seSk7IH0KLSAgICBib29sIGlzQ2hpbGRGcmFtZUhpdFRlc3QoKSBjb25zdCB7IHJl
dHVybiBtX3JlcXVlc3RUeXBlLmNvbnRhaW5zKENoaWxkRnJhbWVIaXRUZXN0KTsgfQotICAgIGJv
b2wgcmVzdWx0SXNFbGVtZW50TGlzdCgpIGNvbnN0IHsgcmV0dXJuIG1fcmVxdWVzdFR5cGUuY29u
dGFpbnMoQ29sbGVjdE11bHRpcGxlRWxlbWVudHMpOyB9Ci0gICAgYm9vbCBpbmNsdWRlc0FsbEVs
ZW1lbnRzVW5kZXJQb2ludCgpIGNvbnN0IHsgcmV0dXJuIG1fcmVxdWVzdFR5cGUuY29udGFpbnMo
SW5jbHVkZUFsbEVsZW1lbnRzVW5kZXJQb2ludCk7IH0KKyAgICBib29sIGRpc2FsbG93c1VzZXJB
Z2VudFNoYWRvd0NvbnRlbnQoKSBjb25zdCB7IHJldHVybiBtX3R5cGUuY29udGFpbnMoVHlwZTo6
RGlzYWxsb3dVc2VyQWdlbnRTaGFkb3dDb250ZW50KTsgfQorICAgIGJvb2wgYWxsb3dzRnJhbWVT
Y3JvbGxiYXJzKCkgY29uc3QgeyByZXR1cm4gbV90eXBlLmNvbnRhaW5zKFR5cGU6OkFsbG93RnJh
bWVTY3JvbGxiYXJzKTsgfQorICAgIGJvb2wgYWxsb3dzQ2hpbGRGcmFtZUNvbnRlbnQoKSBjb25z
dCB7IHJldHVybiBtX3R5cGUuY29udGFpbnMoVHlwZTo6QWxsb3dDaGlsZEZyYW1lQ29udGVudCk7
IH0KKyAgICBib29sIGFsbG93c1Zpc2libGVDaGlsZEZyYW1lQ29udGVudCgpIGNvbnN0IHsgcmV0
dXJuIG1fdHlwZS5jb250YWlucyhUeXBlOjpBbGxvd1Zpc2libGVDaGlsZEZyYW1lQ29udGVudE9u
bHkpOyB9CisgICAgYm9vbCBpc0NoaWxkRnJhbWVIaXRUZXN0KCkgY29uc3QgeyByZXR1cm4gbV90
eXBlLmNvbnRhaW5zKFR5cGU6OkNoaWxkRnJhbWVIaXRUZXN0KTsgfQorICAgIGJvb2wgcmVzdWx0
SXNFbGVtZW50TGlzdCgpIGNvbnN0IHsgcmV0dXJuIG1fdHlwZS5jb250YWlucyhUeXBlOjpDb2xs
ZWN0TXVsdGlwbGVFbGVtZW50cyk7IH0KKyAgICBib29sIGluY2x1ZGVzQWxsRWxlbWVudHNVbmRl
clBvaW50KCkgY29uc3QgeyByZXR1cm4gbV90eXBlLmNvbnRhaW5zKFR5cGU6OkluY2x1ZGVBbGxF
bGVtZW50c1VuZGVyUG9pbnQpOyB9CiAKICAgICAvLyBDb252ZW5pZW5jZSBmdW5jdGlvbnMKICAg
ICBib29sIHRvdWNoTW92ZSgpIGNvbnN0IHsgcmV0dXJuIG1vdmUoKSAmJiB0b3VjaEV2ZW50KCk7
IH0KICAgICBib29sIHRvdWNoUmVsZWFzZSgpIGNvbnN0IHsgcmV0dXJuIHJlbGVhc2UoKSAmJiB0
b3VjaEV2ZW50KCk7IH0KIAotICAgIE9wdGlvblNldDxSZXF1ZXN0VHlwZT4gdHlwZSgpIGNvbnN0
IHsgcmV0dXJuIG1fcmVxdWVzdFR5cGU7IH0KKyAgICBPcHRpb25TZXQ8VHlwZT4gdHlwZSgpIGNv
bnN0IHsgcmV0dXJuIG1fdHlwZTsgfQogCiBwcml2YXRlOgotICAgIE9wdGlvblNldDxSZXF1ZXN0
VHlwZT4gbV9yZXF1ZXN0VHlwZTsKKyAgICBPcHRpb25TZXQ8VHlwZT4gbV90eXBlOwogfTsKIAog
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlcldpZGdldC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyV2lk
Z2V0LmNwcAppbmRleCA2OTNlYTg0MzI5ODM3NjFlNjI3MGUwYWM0MTljNmQ1MTE4NmYxZDY4Li5h
ZjA0MTljZjZjNDkyNWQxYzk0NDcyNzNhNzEwNWQxYzRiOTg1YTE3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyV2lkZ2V0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyV2lkZ2V0LmNwcApAQCAtMzk1LDcgKzM5NSw3IEBAIGJvb2wgUmVu
ZGVyV2lkZ2V0Ojpub2RlQXRQb2ludChjb25zdCBIaXRUZXN0UmVxdWVzdCYgcmVxdWVzdCwgSGl0
VGVzdFJlc3VsdCYgcmVzCiAgICAgICAgIExheW91dFBvaW50IGFkanVzdGVkTG9jYXRpb24gPSBh
Y2N1bXVsYXRlZE9mZnNldCArIGxvY2F0aW9uKCk7CiAgICAgICAgIExheW91dFBvaW50IGNvbnRl
bnRPZmZzZXQgPSBMYXlvdXRQb2ludChib3JkZXJMZWZ0KCkgKyBwYWRkaW5nTGVmdCgpLCBib3Jk
ZXJUb3AoKSArIHBhZGRpbmdUb3AoKSkgLSB0b0ludFNpemUoY2hpbGRGcmFtZVZpZXcuc2Nyb2xs
UG9zaXRpb24oKSk7CiAgICAgICAgIEhpdFRlc3RMb2NhdGlvbiBuZXdIaXRUZXN0TG9jYXRpb24o
bG9jYXRpb25JbkNvbnRhaW5lciwgLWFkanVzdGVkTG9jYXRpb24gLSBjb250ZW50T2Zmc2V0KTsK
LSAgICAgICAgSGl0VGVzdFJlcXVlc3QgbmV3SGl0VGVzdFJlcXVlc3QocmVxdWVzdC50eXBlKCkg
fCBIaXRUZXN0UmVxdWVzdDo6Q2hpbGRGcmFtZUhpdFRlc3QpOworICAgICAgICBIaXRUZXN0UmVx
dWVzdCBuZXdIaXRUZXN0UmVxdWVzdChyZXF1ZXN0LnR5cGUoKSB8IEhpdFRlc3RSZXF1ZXN0OjpU
eXBlOjpDaGlsZEZyYW1lSGl0VGVzdCk7CiAgICAgICAgIEhpdFRlc3RSZXN1bHQgY2hpbGRGcmFt
ZVJlc3VsdChuZXdIaXRUZXN0TG9jYXRpb24pOwogCiAgICAgICAgIGF1dG8qIGRvY3VtZW50ID0g
Y2hpbGRGcmFtZVZpZXcuZnJhbWUoKS5kb2N1bWVudCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdDb250YWluZXIuY3BwIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdDb250YWluZXIuY3BwCmluZGV4IGZhZGY2ZWYzM2Fm
OWZiNjM3NzJiYjc5MzhjMzViOWU4NjE1NDE4MDQuLjQxZTI1ZjE3MmIyNjNhYjMzZjI3MDFkYjQ1
NDhhNDc4MDg1NjNkNmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcv
UmVuZGVyU1ZHQ29udGFpbmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3Zn
L1JlbmRlclNWR0NvbnRhaW5lci5jcHAKQEAgLTE3Nyw3ICsxNzcsNyBAQCBib29sIFJlbmRlclNW
R0NvbnRhaW5lcjo6bm9kZUF0RmxvYXRQb2ludChjb25zdCBIaXRUZXN0UmVxdWVzdCYgcmVxdWVz
dCwgSGl0VGVzdAogICAgIH0KIAogICAgIC8vIEFjY2Vzc2liaWxpdHkgd2FudHMgdG8gcmV0dXJu
IFNWRyBjb250YWluZXJzLCBpZiBhcHByb3ByaWF0ZS4KLSAgICBpZiAocmVxdWVzdC50eXBlKCkg
JiBIaXRUZXN0UmVxdWVzdDo6QWNjZXNzaWJpbGl0eUhpdFRlc3QgJiYgbV9vYmplY3RCb3VuZGlu
Z0JveC5jb250YWlucyhsb2NhbFBvaW50KSkgeworICAgIGlmIChyZXF1ZXN0LnR5cGUoKSAmIEhp
dFRlc3RSZXF1ZXN0OjpUeXBlOjpBY2Nlc3NpYmlsaXR5SGl0VGVzdCAmJiBtX29iamVjdEJvdW5k
aW5nQm94LmNvbnRhaW5zKGxvY2FsUG9pbnQpKSB7CiAgICAgICAgIHVwZGF0ZUhpdFRlc3RSZXN1
bHQocmVzdWx0LCBMYXlvdXRQb2ludChsb2NhbFBvaW50KSk7CiAgICAgICAgIGlmIChyZXN1bHQu
YWRkTm9kZVRvTGlzdEJhc2VkVGVzdFJlc3VsdChub2RlRm9ySGl0VGVzdCgpLCByZXF1ZXN0LCBs
b2NhbFBvaW50KSA9PSBIaXRUZXN0UHJvZ3Jlc3M6OlN0b3ApCiAgICAgICAgICAgICByZXR1cm4g
dHJ1ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZH
UmVzb3VyY2VDbGlwcGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVy
U1ZHUmVzb3VyY2VDbGlwcGVyLmNwcAppbmRleCA0ZTk3OWQ3OWM4MjE1OTRiMDc5MTA2NjFkZDI0
YTRlNzZkYWRhZGVkLi44ZmFlMzVkZDZlZjhmNTAwZDQ1ZjNmNWEyNDExNzFmZjAwOTQ0ZWY5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNl
Q2xpcHBlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdS
ZXNvdXJjZUNsaXBwZXIuY3BwCkBAIC0yODgsNyArMjg4LDcgQEAgYm9vbCBSZW5kZXJTVkdSZXNv
dXJjZUNsaXBwZXI6OmhpdFRlc3RDbGlwQ29udGVudChjb25zdCBGbG9hdFJlY3QmIG9iamVjdEJv
dW5kaW4KIAogICAgICAgICBJbnRQb2ludCBoaXRQb2ludDsKICAgICAgICAgSGl0VGVzdFJlc3Vs
dCByZXN1bHQoaGl0UG9pbnQpOwotICAgICAgICBjb25zdGV4cHIgT3B0aW9uU2V0PEhpdFRlc3RS
ZXF1ZXN0OjpSZXF1ZXN0VHlwZT4gaGl0VHlwZSB7IEhpdFRlc3RSZXF1ZXN0OjpTVkdDbGlwQ29u
dGVudCwgSGl0VGVzdFJlcXVlc3Q6OkRpc2FsbG93VXNlckFnZW50U2hhZG93Q29udGVudCB9Owor
ICAgICAgICBjb25zdGV4cHIgT3B0aW9uU2V0PEhpdFRlc3RSZXF1ZXN0OjpUeXBlPiBoaXRUeXBl
IHsgSGl0VGVzdFJlcXVlc3Q6OlR5cGU6OlNWR0NsaXBDb250ZW50LCBIaXRUZXN0UmVxdWVzdDo6
VHlwZTo6RGlzYWxsb3dVc2VyQWdlbnRTaGFkb3dDb250ZW50IH07CiAgICAgICAgIGlmIChyZW5k
ZXJlci0+bm9kZUF0RmxvYXRQb2ludChoaXRUeXBlLCByZXN1bHQsIHBvaW50LCBIaXRUZXN0Rm9y
ZWdyb3VuZCkpCiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0
aW5nL0ludGVybmFscy5jcHAKaW5kZXggNDRmYjQ1ZTllYmRmNTljMzA3ZTljYTVkYzgyYWZlZWIy
MjdhYzA1MC4uODBlNWE2NTI0MDIxMWY1MWJmYzlhNTEyMjQ1NzMxMWJkNmU1ZDQzYSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcApAQCAtMjI5OCwxMyArMjI5OCwxMyBAQCBFeGNl
cHRpb25PcjxSZWZQdHI8Tm9kZUxpc3Q+PiBJbnRlcm5hbHM6Om5vZGVzRnJvbVJlY3QoRG9jdW1l
bnQmIGRvY3VtZW50LCBpbnQgYwogICAgIGZsb2F0IHpvb21GYWN0b3IgPSBmcmFtZS0+cGFnZVpv
b21GYWN0b3IoKTsKICAgICBMYXlvdXRQb2ludCBwb2ludChjZW50ZXJYICogem9vbUZhY3RvciAr
IGZyYW1lVmlldy0+c2Nyb2xsWCgpLCBjZW50ZXJZICogem9vbUZhY3RvciArIGZyYW1lVmlldy0+
c2Nyb2xsWSgpKTsKIAotICAgIE9wdGlvblNldDxIaXRUZXN0UmVxdWVzdDo6UmVxdWVzdFR5cGU+
IGhpdFR5cGUgeyBIaXRUZXN0UmVxdWVzdDo6UmVhZE9ubHksIEhpdFRlc3RSZXF1ZXN0OjpBY3Rp
dmUsIEhpdFRlc3RSZXF1ZXN0OjpDb2xsZWN0TXVsdGlwbGVFbGVtZW50cyB9OworICAgIE9wdGlv
blNldDxIaXRUZXN0UmVxdWVzdDo6VHlwZT4gaGl0VHlwZSB7IEhpdFRlc3RSZXF1ZXN0OjpUeXBl
OjpSZWFkT25seSwgSGl0VGVzdFJlcXVlc3Q6OlR5cGU6OkFjdGl2ZSwgSGl0VGVzdFJlcXVlc3Q6
OlR5cGU6OkNvbGxlY3RNdWx0aXBsZUVsZW1lbnRzIH07CiAgICAgaWYgKGlnbm9yZUNsaXBwaW5n
KQotICAgICAgICBoaXRUeXBlLmFkZChIaXRUZXN0UmVxdWVzdDo6SWdub3JlQ2xpcHBpbmcpOwor
ICAgICAgICBoaXRUeXBlLmFkZChIaXRUZXN0UmVxdWVzdDo6VHlwZTo6SWdub3JlQ2xpcHBpbmcp
OwogICAgIGlmICghYWxsb3dVc2VyQWdlbnRTaGFkb3dDb250ZW50KQotICAgICAgICBoaXRUeXBl
LmFkZChIaXRUZXN0UmVxdWVzdDo6RGlzYWxsb3dVc2VyQWdlbnRTaGFkb3dDb250ZW50KTsKKyAg
ICAgICAgaGl0VHlwZS5hZGQoSGl0VGVzdFJlcXVlc3Q6OlR5cGU6OkRpc2FsbG93VXNlckFnZW50
U2hhZG93Q29udGVudCk7CiAgICAgaWYgKGFsbG93Q2hpbGRGcmFtZUNvbnRlbnQpCi0gICAgICAg
IGhpdFR5cGUuYWRkKEhpdFRlc3RSZXF1ZXN0OjpBbGxvd0NoaWxkRnJhbWVDb250ZW50KTsKKyAg
ICAgICAgaGl0VHlwZS5hZGQoSGl0VGVzdFJlcXVlc3Q6OlR5cGU6OkFsbG93Q2hpbGRGcmFtZUNv
bnRlbnQpOwogCiAgICAgSGl0VGVzdFJlcXVlc3QgcmVxdWVzdChoaXRUeXBlKTsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMubW0gYi9Tb3VyY2UvV2ViQ29y
ZS90ZXN0aW5nL0ludGVybmFscy5tbQppbmRleCA2ZmY3MDcwYzgwOTNjODlkNzE2NDY4MTVhN2M3
OTM0YzQ5ODIwMDUxLi44NjM4OWY0MzRkN2E4Yjc1MmU2ODU1OGJmMDQ4NDJkNTYwZDZkYjU2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5tbQorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5tbQpAQCAtODEsNyArODEsNyBAQCBFeGNlcHRp
b25PcjxSZWZQdHI8UmFuZ2U+PiBJbnRlcm5hbHM6OnJhbmdlRm9yRGljdGlvbmFyeUxvb2t1cEF0
TG9jYXRpb24oaW50IHgsCiAKICAgICBkb2N1bWVudC0+dXBkYXRlTGF5b3V0SWdub3JlUGVuZGlu
Z1N0eWxlc2hlZXRzKCk7CiAKLSAgICBjb25zdGV4cHIgT3B0aW9uU2V0PEhpdFRlc3RSZXF1ZXN0
OjpSZXF1ZXN0VHlwZT4gaGl0VHlwZSB7IEhpdFRlc3RSZXF1ZXN0OjpSZWFkT25seSwgSGl0VGVz
dFJlcXVlc3Q6OkFjdGl2ZSwgSGl0VGVzdFJlcXVlc3Q6OkRpc2FsbG93VXNlckFnZW50U2hhZG93
Q29udGVudCwgSGl0VGVzdFJlcXVlc3Q6OkFsbG93Q2hpbGRGcmFtZUNvbnRlbnQgfTsKKyAgICBj
b25zdGV4cHIgT3B0aW9uU2V0PEhpdFRlc3RSZXF1ZXN0OjpUeXBlPiBoaXRUeXBlIHsgSGl0VGVz
dFJlcXVlc3Q6OlR5cGU6OlJlYWRPbmx5LCBIaXRUZXN0UmVxdWVzdDo6VHlwZTo6QWN0aXZlLCBI
aXRUZXN0UmVxdWVzdDo6VHlwZTo6RGlzYWxsb3dVc2VyQWdlbnRTaGFkb3dDb250ZW50LCBIaXRU
ZXN0UmVxdWVzdDo6VHlwZTo6QWxsb3dDaGlsZEZyYW1lQ29udGVudCB9OwogICAgIGF1dG8gcmVz
dWx0ID0gZG9jdW1lbnQtPmZyYW1lKCktPm1haW5GcmFtZSgpLmV2ZW50SGFuZGxlcigpLmhpdFRl
c3RSZXN1bHRBdFBvaW50KEludFBvaW50KHgsIHkpLCBoaXRUeXBlKTsKICAgICBhdXRvIHJhbmdl
ID0gRGljdGlvbmFyeUxvb2t1cDo6cmFuZ2VBdEhpdFRlc3RSZXN1bHQocmVzdWx0KTsKICAgICBp
ZiAoIXJhbmdlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVk
QnVuZGxlL0FQSS9Db2NvYS9XS1dlYlByb2Nlc3NQbHVnSW5GcmFtZS5tbSBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvQ29jb2EvV0tXZWJQcm9jZXNzUGx1Z0lu
RnJhbWUubW0KaW5kZXggZmJhN2RiMzcyNDk2Mzk5MzFjZTAyOGIwYjI4NWMzY2MyM2EwNzgwMi4u
NWVlNDhlOGJhN2I1ZTQyYTRmNzdlMDU0M2E4ZjUwOWJkY2NmNTU1ZCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9Db2NvYS9XS1dlYlByb2Nl
c3NQbHVnSW5GcmFtZS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRC
dW5kbGUvQVBJL0NvY29hL1dLV2ViUHJvY2Vzc1BsdWdJbkZyYW1lLm1tCkBAIC04MCw3ICs4MCw3
IEBAIC0gKFdLV2ViUHJvY2Vzc1BsdWdJbkhpdFRlc3RSZXN1bHQgKiloaXRUZXN0OihDR1BvaW50
KXBvaW50IG9wdGlvbnM6KFdLSGl0VGVzdE9wCiB7CiAgICAgYXV0byB0eXBlcyA9IFdlYktpdDo6
V2ViRnJhbWU6OmRlZmF1bHRIaXRUZXN0UmVxdWVzdFR5cGVzKCk7CiAgICAgaWYgKG9wdGlvbnMg
JiBXS0hpdFRlc3RPcHRpb25BbGxvd1VzZXJBZ2VudFNoYWRvd1Jvb3RDb250ZW50KQotICAgICAg
ICB0eXBlcy5yZW1vdmUoV2ViQ29yZTo6SGl0VGVzdFJlcXVlc3Q6OkRpc2FsbG93VXNlckFnZW50
U2hhZG93Q29udGVudCk7CisgICAgICAgIHR5cGVzLnJlbW92ZShXZWJDb3JlOjpIaXRUZXN0UmVx
dWVzdDo6VHlwZTo6RGlzYWxsb3dVc2VyQWdlbnRTaGFkb3dDb250ZW50KTsKICAgICByZXR1cm4g
d3JhcHBlcihfZnJhbWUtPmhpdFRlc3QoV2ViQ29yZTo6SW50UG9pbnQocG9pbnQpLCB0eXBlcykp
OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5k
bGUvSW5qZWN0ZWRCdW5kbGVOYXZpZ2F0aW9uQWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZU5hdmlnYXRpb25BY3Rpb24uY3Bw
CmluZGV4IGQ0MDJiODA5YWQ4ZjJkYWQ2Y2IxYzY3OTEzZDVmM2UyYTI3NmUwMmYuLjRhYjgyZDEy
NWNkZjNiZDE5MDFmNmYxMjRjYjQyM2ZmOWFmZWM0MjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZU5hdmlnYXRpb25BY3Rp
b24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9Jbmpl
Y3RlZEJ1bmRsZU5hdmlnYXRpb25BY3Rpb24uY3BwCkBAIC0xMDQsNyArMTA0LDcgQEAgSW5qZWN0
ZWRCdW5kbGVOYXZpZ2F0aW9uQWN0aW9uOjpJbmplY3RlZEJ1bmRsZU5hdmlnYXRpb25BY3Rpb24o
V2ViRnJhbWUqIGZyYW1lLAogICAgICwgbV9zaG91bGRUcnlBcHBMaW5rcyhuYXZpZ2F0aW9uQWN0
aW9uLnNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3koKSA9PSBTaG91bGRPcGVuRXh0ZXJuYWxV
UkxzUG9saWN5OjpTaG91bGRBbGxvdykKIHsKICAgICBpZiAoYXV0byBtb3VzZUV2ZW50RGF0YSA9
IG5hdmlnYXRpb25BY3Rpb24ubW91c2VFdmVudERhdGEoKSkgewotICAgICAgICBjb25zdGV4cHIg
T3B0aW9uU2V0PEhpdFRlc3RSZXF1ZXN0OjpSZXF1ZXN0VHlwZT4gaGl0VHlwZSB7IEhpdFRlc3RS
ZXF1ZXN0OjpSZWFkT25seSwgSGl0VGVzdFJlcXVlc3Q6OkFjdGl2ZSwgSGl0VGVzdFJlcXVlc3Q6
OkRpc2FsbG93VXNlckFnZW50U2hhZG93Q29udGVudCwgSGl0VGVzdFJlcXVlc3Q6OkFsbG93Q2hp
bGRGcmFtZUNvbnRlbnQgfTsKKyAgICAgICAgY29uc3RleHByIE9wdGlvblNldDxIaXRUZXN0UmVx
dWVzdDo6VHlwZT4gaGl0VHlwZSB7IEhpdFRlc3RSZXF1ZXN0OjpUeXBlOjpSZWFkT25seSwgSGl0
VGVzdFJlcXVlc3Q6OlR5cGU6OkFjdGl2ZSwgSGl0VGVzdFJlcXVlc3Q6OlR5cGU6OkRpc2FsbG93
VXNlckFnZW50U2hhZG93Q29udGVudCwgSGl0VGVzdFJlcXVlc3Q6OlR5cGU6OkFsbG93Q2hpbGRG
cmFtZUNvbnRlbnQgfTsKICAgICAgICAgbV9oaXRUZXN0UmVzdWx0ID0gSW5qZWN0ZWRCdW5kbGVI
aXRUZXN0UmVzdWx0OjpjcmVhdGUoZnJhbWUtPmNvcmVGcmFtZSgpLT5ldmVudEhhbmRsZXIoKS5o
aXRUZXN0UmVzdWx0QXRQb2ludChtb3VzZUV2ZW50RGF0YS0+YWJzb2x1dGVMb2NhdGlvbiwgaGl0
VHlwZSkpOwogICAgICAgICBtX21vdXNlQnV0dG9uID0gbW91c2VCdXR0b25Gb3JNb3VzZUV2ZW50
RGF0YShtb3VzZUV2ZW50RGF0YSk7CiAgICAgICAgIG1fc3ludGhldGljQ2xpY2tUeXBlID0gc3lu
dGhldGljQ2xpY2tUeXBlRm9yTmF2aWdhdGlvbkFjdGlvbihuYXZpZ2F0aW9uQWN0aW9uKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0NvY29hL1dlYlBhZ2VD
b2NvYS5tbSBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0NvY29hL1dlYlBhZ2VD
b2NvYS5tbQppbmRleCAzZDIxZTNkZDBjODZkMTlhZDY2YTQzOGU5MTgxOGE5ZmMyNjJjYjQ0Li4x
NjI1M2M4ODcwNzMwNzc4MDAwZDg1M2Q0ZGRmZDMyMjc5ZDgxODllIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9Db2NvYS9XZWJQYWdlQ29jb2EubW0KKysrIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29jb2EvV2ViUGFnZUNvY29hLm1tCkBA
IC0xMjEsNyArMTIxLDcgQEAgdm9pZCBXZWJQYWdlOjpwZXJmb3JtRGljdGlvbmFyeUxvb2t1cEF0
TG9jYXRpb24oY29uc3QgRmxvYXRQb2ludCYgZmxvYXRQb2ludCkKICAgICB9CiAgICAgCiAgICAg
Ly8gRmluZCB0aGUgZnJhbWUgdGhlIHBvaW50IGlzIG92ZXIuCi0gICAgY29uc3RleHByIE9wdGlv
blNldDxIaXRUZXN0UmVxdWVzdDo6UmVxdWVzdFR5cGU+IGhpdFR5cGUgeyBIaXRUZXN0UmVxdWVz
dDo6UmVhZE9ubHksIEhpdFRlc3RSZXF1ZXN0OjpBY3RpdmUsIEhpdFRlc3RSZXF1ZXN0OjpEaXNh
bGxvd1VzZXJBZ2VudFNoYWRvd0NvbnRlbnQsIEhpdFRlc3RSZXF1ZXN0OjpBbGxvd0NoaWxkRnJh
bWVDb250ZW50IH07CisgICAgY29uc3RleHByIE9wdGlvblNldDxIaXRUZXN0UmVxdWVzdDo6VHlw
ZT4gaGl0VHlwZSB7IEhpdFRlc3RSZXF1ZXN0OjpUeXBlOjpSZWFkT25seSwgSGl0VGVzdFJlcXVl
c3Q6OlR5cGU6OkFjdGl2ZSwgSGl0VGVzdFJlcXVlc3Q6OlR5cGU6OkRpc2FsbG93VXNlckFnZW50
U2hhZG93Q29udGVudCwgSGl0VGVzdFJlcXVlc3Q6OlR5cGU6OkFsbG93Q2hpbGRGcmFtZUNvbnRl
bnQgfTsKICAgICBhdXRvIHJlc3VsdCA9IG1fcGFnZS0+bWFpbkZyYW1lKCkuZXZlbnRIYW5kbGVy
KCkuaGl0VGVzdFJlc3VsdEF0UG9pbnQobV9wYWdlLT5tYWluRnJhbWUoKS52aWV3KCktPndpbmRv
d1RvQ29udGVudHMocm91bmRlZEludFBvaW50KGZsb2F0UG9pbnQpKSwgaGl0VHlwZSk7CiAKICAg
ICBhdXRvKiBmcmFtZSA9IHJlc3VsdC5pbm5lck5vblNoYXJlZE5vZGUoKSA/IHJlc3VsdC5pbm5l
ck5vblNoYXJlZE5vZGUoKS0+ZG9jdW1lbnQoKS5mcmFtZSgpIDogJm1fcGFnZS0+Zm9jdXNDb250
cm9sbGVyKCkuZm9jdXNlZE9yTWFpbkZyYW1lKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJGcmFtZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViUGFnZS9XZWJGcmFtZS5jcHAKaW5kZXggNWNjYmJiMTY5NmViMzE4ZWRlMjFjZWRhZmE5
Mzc0ZWNlZjdiMWU4YS4uMTM0MjI5MzMzNTI2NmRjMjk5MDllMDYxYTk2MTg3MDYxZjIzY2ZkZSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmNwcApAQCAt
NjQzLDcgKzY0Myw3IEBAIGJvb2wgV2ViRnJhbWU6Omhhc1ZlcnRpY2FsU2Nyb2xsYmFyKCkgY29u
c3QKICAgICByZXR1cm4gdmlldy0+dmVydGljYWxTY3JvbGxiYXIoKTsKIH0KIAotUmVmUHRyPElu
amVjdGVkQnVuZGxlSGl0VGVzdFJlc3VsdD4gV2ViRnJhbWU6OmhpdFRlc3QoY29uc3QgSW50UG9p
bnQgcG9pbnQsIE9wdGlvblNldDxIaXRUZXN0UmVxdWVzdDo6UmVxdWVzdFR5cGU+IHR5cGVzKSBj
b25zdAorUmVmUHRyPEluamVjdGVkQnVuZGxlSGl0VGVzdFJlc3VsdD4gV2ViRnJhbWU6OmhpdFRl
c3QoY29uc3QgSW50UG9pbnQgcG9pbnQsIE9wdGlvblNldDxIaXRUZXN0UmVxdWVzdDo6VHlwZT4g
dHlwZXMpIGNvbnN0CiB7CiAgICAgaWYgKCFtX2NvcmVGcmFtZSkKICAgICAgICAgcmV0dXJuIG51
bGxwdHI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJG
cmFtZS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUuaAppbmRl
eCA5ZWM2ZDkxNDhkMDM5OTYxMjc0NTllZWY4YmQ3M2NhNjhhMDZjZTAxLi4xYmYwZTY4MDgxNmM4
NTg4M2ZiZTMyYmM0YTEyNWM2MDZiMzYzYjI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViUGFnZS9XZWJGcmFtZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJQYWdlL1dlYkZyYW1lLmgKQEAgLTEyMSwxOCArMTIxLDE4IEBAIHB1YmxpYzoKICAgICBi
b29sIGhhc0hvcml6b250YWxTY3JvbGxiYXIoKSBjb25zdDsKICAgICBib29sIGhhc1ZlcnRpY2Fs
U2Nyb2xsYmFyKCkgY29uc3Q7CiAKLSAgICBzdGF0aWMgY29uc3RleHByIE9wdGlvblNldDxXZWJD
b3JlOjpIaXRUZXN0UmVxdWVzdDo6UmVxdWVzdFR5cGU+IGRlZmF1bHRIaXRUZXN0UmVxdWVzdFR5
cGVzKCkKKyAgICBzdGF0aWMgY29uc3RleHByIE9wdGlvblNldDxXZWJDb3JlOjpIaXRUZXN0UmVx
dWVzdDo6VHlwZT4gZGVmYXVsdEhpdFRlc3RSZXF1ZXN0VHlwZXMoKQogICAgIHsKICAgICAgICAg
cmV0dXJuIHt7Ci0gICAgICAgICAgICBXZWJDb3JlOjpIaXRUZXN0UmVxdWVzdDo6UmVhZE9ubHks
Ci0gICAgICAgICAgICBXZWJDb3JlOjpIaXRUZXN0UmVxdWVzdDo6QWN0aXZlLAotICAgICAgICAg
ICAgV2ViQ29yZTo6SGl0VGVzdFJlcXVlc3Q6Oklnbm9yZUNsaXBwaW5nLAotICAgICAgICAgICAg
V2ViQ29yZTo6SGl0VGVzdFJlcXVlc3Q6OkFsbG93Q2hpbGRGcmFtZUNvbnRlbnQsCi0gICAgICAg
ICAgICBXZWJDb3JlOjpIaXRUZXN0UmVxdWVzdDo6RGlzYWxsb3dVc2VyQWdlbnRTaGFkb3dDb250
ZW50LAorICAgICAgICAgICAgV2ViQ29yZTo6SGl0VGVzdFJlcXVlc3Q6OlR5cGU6OlJlYWRPbmx5
LAorICAgICAgICAgICAgV2ViQ29yZTo6SGl0VGVzdFJlcXVlc3Q6OlR5cGU6OkFjdGl2ZSwKKyAg
ICAgICAgICAgIFdlYkNvcmU6OkhpdFRlc3RSZXF1ZXN0OjpUeXBlOjpJZ25vcmVDbGlwcGluZywK
KyAgICAgICAgICAgIFdlYkNvcmU6OkhpdFRlc3RSZXF1ZXN0OjpUeXBlOjpBbGxvd0NoaWxkRnJh
bWVDb250ZW50LAorICAgICAgICAgICAgV2ViQ29yZTo6SGl0VGVzdFJlcXVlc3Q6OlR5cGU6OkRp
c2FsbG93VXNlckFnZW50U2hhZG93Q29udGVudCwKICAgICAgICAgfX07CiAgICAgfQogCi0gICAg
UmVmUHRyPEluamVjdGVkQnVuZGxlSGl0VGVzdFJlc3VsdD4gaGl0VGVzdChjb25zdCBXZWJDb3Jl
OjpJbnRQb2ludCwgT3B0aW9uU2V0PFdlYkNvcmU6OkhpdFRlc3RSZXF1ZXN0OjpSZXF1ZXN0VHlw
ZT4gPSBkZWZhdWx0SGl0VGVzdFJlcXVlc3RUeXBlcygpKSBjb25zdDsKKyAgICBSZWZQdHI8SW5q
ZWN0ZWRCdW5kbGVIaXRUZXN0UmVzdWx0PiBoaXRUZXN0KGNvbnN0IFdlYkNvcmU6OkludFBvaW50
LCBPcHRpb25TZXQ8V2ViQ29yZTo6SGl0VGVzdFJlcXVlc3Q6OlR5cGU+ID0gZGVmYXVsdEhpdFRl
c3RSZXF1ZXN0VHlwZXMoKSkgY29uc3Q7CiAKICAgICBib29sIGdldERvY3VtZW50QmFja2dyb3Vu
ZENvbG9yKGRvdWJsZSogcmVkLCBkb3VibGUqIGdyZWVuLCBkb3VibGUqIGJsdWUsIGRvdWJsZSog
YWxwaGEpOwogICAgIGJvb2wgY29udGFpbnNBbnlGb3JtRWxlbWVudHMoKSBjb25zdDsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKaW5kZXggOTBhZThhOTdi
NmNlNDkzMjU5M2I0OTJkY2IzMDE2OGM2OWIxZWVmYS4uOTVlNDgzOGY5ZDUyOWY3ZWZjZjNhZGMy
MTFjZWYwZjE5NmEwZWM3MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YlBhZ2UvV2ViUGFnZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2Uv
V2ViUGFnZS5jcHAKQEAgLTI4NTcsNyArMjg1Nyw3IEBAIHN0YXRpYyBib29sIGlzQ29udGV4dENs
aWNrKGNvbnN0IFBsYXRmb3JtTW91c2VFdmVudCYgZXZlbnQpCiBzdGF0aWMgYm9vbCBoYW5kbGVD
b250ZXh0TWVudUV2ZW50KGNvbnN0IFBsYXRmb3JtTW91c2VFdmVudCYgcGxhdGZvcm1Nb3VzZUV2
ZW50LCBXZWJQYWdlKiBwYWdlKQogewogICAgIEludFBvaW50IHBvaW50ID0gcGFnZS0+Y29yZVBh
Z2UoKS0+bWFpbkZyYW1lKCkudmlldygpLT53aW5kb3dUb0NvbnRlbnRzKHBsYXRmb3JtTW91c2VF
dmVudC5wb3NpdGlvbigpKTsKLSAgICBjb25zdGV4cHIgT3B0aW9uU2V0PEhpdFRlc3RSZXF1ZXN0
OjpSZXF1ZXN0VHlwZT4gaGl0VHlwZSB7IEhpdFRlc3RSZXF1ZXN0OjpSZWFkT25seSwgSGl0VGVz
dFJlcXVlc3Q6OkFjdGl2ZSwgSGl0VGVzdFJlcXVlc3Q6OkRpc2FsbG93VXNlckFnZW50U2hhZG93
Q29udGVudCwgIEhpdFRlc3RSZXF1ZXN0OjpBbGxvd0NoaWxkRnJhbWVDb250ZW50IH07CisgICAg
Y29uc3RleHByIE9wdGlvblNldDxIaXRUZXN0UmVxdWVzdDo6VHlwZT4gaGl0VHlwZSB7IEhpdFRl
c3RSZXF1ZXN0OjpUeXBlOjpSZWFkT25seSwgSGl0VGVzdFJlcXVlc3Q6OlR5cGU6OkFjdGl2ZSwg
SGl0VGVzdFJlcXVlc3Q6OlR5cGU6OkRpc2FsbG93VXNlckFnZW50U2hhZG93Q29udGVudCwgIEhp
dFRlc3RSZXF1ZXN0OjpUeXBlOjpBbGxvd0NoaWxkRnJhbWVDb250ZW50IH07CiAgICAgSGl0VGVz
dFJlc3VsdCByZXN1bHQgPSBwYWdlLT5jb3JlUGFnZSgpLT5tYWluRnJhbWUoKS5ldmVudEhhbmRs
ZXIoKS5oaXRUZXN0UmVzdWx0QXRQb2ludChwb2ludCwgaGl0VHlwZSk7CiAKICAgICBGcmFtZSog
ZnJhbWUgPSAmcGFnZS0+Y29yZVBhZ2UoKS0+bWFpbkZyYW1lKCk7CkBAIC01NzE2LDcgKzU3MTYs
NyBAQCB2b2lkIFdlYlBhZ2U6OmdldFNlbGVjdGVkUmFuZ2VBc3luYyhDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKGNvbnN0IEVkaXRpbmdSYW5nZSYpPgogCiB2b2lkIFdlYlBhZ2U6OmNoYXJhY3Rlcklu
ZGV4Rm9yUG9pbnRBc3luYyhjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYgcG9pbnQsIENvbXBsZXRp
b25IYW5kbGVyPHZvaWQodWludDY0X3QpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewotICAgIGNv
bnN0ZXhwciBPcHRpb25TZXQ8SGl0VGVzdFJlcXVlc3Q6OlJlcXVlc3RUeXBlPiBoaXRUeXBlIHsg
SGl0VGVzdFJlcXVlc3Q6OlJlYWRPbmx5LCBIaXRUZXN0UmVxdWVzdDo6QWN0aXZlLCBIaXRUZXN0
UmVxdWVzdDo6RGlzYWxsb3dVc2VyQWdlbnRTaGFkb3dDb250ZW50LCAgSGl0VGVzdFJlcXVlc3Q6
OkFsbG93Q2hpbGRGcmFtZUNvbnRlbnQgfTsKKyAgICBjb25zdGV4cHIgT3B0aW9uU2V0PEhpdFRl
c3RSZXF1ZXN0OjpUeXBlPiBoaXRUeXBlIHsgSGl0VGVzdFJlcXVlc3Q6OlR5cGU6OlJlYWRPbmx5
LCBIaXRUZXN0UmVxdWVzdDo6VHlwZTo6QWN0aXZlLCBIaXRUZXN0UmVxdWVzdDo6VHlwZTo6RGlz
YWxsb3dVc2VyQWdlbnRTaGFkb3dDb250ZW50LCAgSGl0VGVzdFJlcXVlc3Q6OlR5cGU6OkFsbG93
Q2hpbGRGcmFtZUNvbnRlbnQgfTsKICAgICBhdXRvIHJlc3VsdCA9IG1fcGFnZS0+bWFpbkZyYW1l
KCkuZXZlbnRIYW5kbGVyKCkuaGl0VGVzdFJlc3VsdEF0UG9pbnQocG9pbnQsIGhpdFR5cGUpOwog
ICAgIGF1dG8mIGZyYW1lID0gcmVzdWx0LmlubmVyTm9uU2hhcmVkTm9kZSgpID8gKnJlc3VsdC5p
bm5lck5vZGVGcmFtZSgpIDogbV9wYWdlLT5mb2N1c0NvbnRyb2xsZXIoKS5mb2N1c2VkT3JNYWlu
RnJhbWUoKTsKICAgICBhdXRvIHJhbmdlID0gZnJhbWUucmFuZ2VGb3JQb2ludChyZXN1bHQucm91
bmRlZFBvaW50SW5Jbm5lck5vZGVGcmFtZSgpKTsKQEAgLTc0MTcsOSArNzQxNyw5IEBAIHZvaWQg
V2ViUGFnZTo6dXBkYXRlV2l0aEltYWdlRXh0cmFjdGlvblJlc3VsdChJbWFnZUV4dHJhY3Rpb25S
ZXN1bHQmJiByZXN1bHQsIGNvCiAKICAgICBkb3duY2FzdDxIVE1MRWxlbWVudD4oKmVsZW1lbnRU
b1VwZGF0ZSkudXBkYXRlV2l0aEltYWdlRXh0cmFjdGlvblJlc3VsdChXVEZNb3ZlKHJlc3VsdCkp
OwogICAgIGF1dG8gaGl0VGVzdFJlc3VsdCA9IGNvcmVQYWdlKCktPm1haW5GcmFtZSgpLmV2ZW50
SGFuZGxlcigpLmhpdFRlc3RSZXN1bHRBdFBvaW50KHJvdW5kZWRJbnRQb2ludChsb2NhdGlvbiks
IHsKLSAgICAgICAgSGl0VGVzdFJlcXVlc3Q6OlJlYWRPbmx5LAotICAgICAgICBIaXRUZXN0UmVx
dWVzdDo6QWN0aXZlLAotICAgICAgICBIaXRUZXN0UmVxdWVzdDo6QWxsb3dWaXNpYmxlQ2hpbGRG
cmFtZUNvbnRlbnRPbmx5LAorICAgICAgICBIaXRUZXN0UmVxdWVzdDo6VHlwZTo6UmVhZE9ubHks
CisgICAgICAgIEhpdFRlc3RSZXF1ZXN0OjpUeXBlOjpBY3RpdmUsCisgICAgICAgIEhpdFRlc3RS
ZXF1ZXN0OjpUeXBlOjpBbGxvd1Zpc2libGVDaGlsZEZyYW1lQ29udGVudE9ubHksCiAgICAgfSk7
CiAKICAgICBhdXRvIG5vZGVBdExvY2F0aW9uID0gbWFrZVJlZlB0cihoaXRUZXN0UmVzdWx0Lmlu
bmVyTm9uU2hhcmVkTm9kZSgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW0KaW5kZXggYzVhOTM2NzExYjdiMjYwOGM4N2ViOGZmNjc3
MzRjYTg3ZGQzOTQxYS4uZWU2Y2Q4ZGFmY2FkMGY4MDhjODU4M2VlMmYyZWE0ZWQ3MWMxMGI5NSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJ
T1MubW0KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJ
T1MubW0KQEAgLTY1Niw3ICs2NTYsNyBAQCB2b2lkIFdlYlBhZ2U6OmFkdmFuY2VUb05leHRNaXNz
cGVsbGluZyhib29sKQogCiBJbnRSZWN0IFdlYlBhZ2U6OnJlY3RGb3JFbGVtZW50QXRJbnRlcmFj
dGlvbkxvY2F0aW9uKCkgY29uc3QKIHsKLSAgICBjb25zdGV4cHIgT3B0aW9uU2V0PEhpdFRlc3RS
ZXF1ZXN0OjpSZXF1ZXN0VHlwZT4gaGl0VHlwZSB7IEhpdFRlc3RSZXF1ZXN0OjpSZWFkT25seSwg
SGl0VGVzdFJlcXVlc3Q6OkFjdGl2ZSwgSGl0VGVzdFJlcXVlc3Q6OkFsbG93VmlzaWJsZUNoaWxk
RnJhbWVDb250ZW50T25seSB9OworICAgIGNvbnN0ZXhwciBPcHRpb25TZXQ8SGl0VGVzdFJlcXVl
c3Q6OlR5cGU+IGhpdFR5cGUgeyBIaXRUZXN0UmVxdWVzdDo6VHlwZTo6UmVhZE9ubHksIEhpdFRl
c3RSZXF1ZXN0OjpUeXBlOjpBY3RpdmUsIEhpdFRlc3RSZXF1ZXN0OjpUeXBlOjpBbGxvd1Zpc2li
bGVDaGlsZEZyYW1lQ29udGVudE9ubHkgfTsKICAgICBIaXRUZXN0UmVzdWx0IHJlc3VsdCA9IG1f
cGFnZS0+bWFpbkZyYW1lKCkuZXZlbnRIYW5kbGVyKCkuaGl0VGVzdFJlc3VsdEF0UG9pbnQobV9s
YXN0SW50ZXJhY3Rpb25Mb2NhdGlvbiwgaGl0VHlwZSk7CiAgICAgTm9kZSogaGl0Tm9kZSA9IHJl
c3VsdC5pbm5lck5vZGUoKTsKICAgICBpZiAoIWhpdE5vZGUgfHwgIWhpdE5vZGUtPnJlbmRlcmVy
KCkpCkBAIC0xNTY5LDkgKzE1NjksOSBAQCBzdGF0aWMgT3B0aW9uYWw8U2ltcGxlUmFuZ2U+IHJh
bmdlRm9yUG9pbnRJblJvb3RWaWV3Q29vcmRpbmF0ZXMoRnJhbWUmIGZyYW1lLCBjbwogICAgIH0K
IAogICAgIGF1dG8gaGl0VGVzdCA9IGZyYW1lLmV2ZW50SGFuZGxlcigpLmhpdFRlc3RSZXN1bHRB
dFBvaW50KHBvaW50SW5Eb2N1bWVudCwgewotICAgICAgICBIaXRUZXN0UmVxdWVzdDo6UmVhZE9u
bHksCi0gICAgICAgIEhpdFRlc3RSZXF1ZXN0OjpBY3RpdmUsCi0gICAgICAgIEhpdFRlc3RSZXF1
ZXN0OjpBbGxvd1Zpc2libGVDaGlsZEZyYW1lQ29udGVudE9ubHksCisgICAgICAgIEhpdFRlc3RS
ZXF1ZXN0OjpUeXBlOjpSZWFkT25seSwKKyAgICAgICAgSGl0VGVzdFJlcXVlc3Q6OlR5cGU6OkFj
dGl2ZSwKKyAgICAgICAgSGl0VGVzdFJlcXVlc3Q6OlR5cGU6OkFsbG93VmlzaWJsZUNoaWxkRnJh
bWVDb250ZW50T25seSwKICAgICB9KTsKIAogICAgIGF1dG8gdGFyZ2V0Tm9kZSA9IG1ha2VSZWZQ
dHIoaGl0VGVzdC50YXJnZXROb2RlKCkpOwpAQCAtMjE4MSw3ICsyMTgxLDcgQEAgc3RhdGljIGlu
bGluZSBib29sIHJlY3RJc1Rvb0JpZ0ZvclNlbGVjdGlvbihjb25zdCBJbnRSZWN0JiBibG9ja1Jl
Y3QsIGNvbnN0IEZyYW0KIAogdm9pZCBXZWJQYWdlOjpzZXRGb2N1c2VkRnJhbWVCZWZvcmVTZWxl
Y3RpbmdUZXh0QXRMb2NhdGlvbihjb25zdCBJbnRQb2ludCYgcG9pbnQpCiB7Ci0gICAgY29uc3Rl
eHByIE9wdGlvblNldDxIaXRUZXN0UmVxdWVzdDo6UmVxdWVzdFR5cGU+IGhpdFR5cGUgeyBIaXRU
ZXN0UmVxdWVzdDo6UmVhZE9ubHksIEhpdFRlc3RSZXF1ZXN0OjpBY3RpdmUsIEhpdFRlc3RSZXF1
ZXN0OjpBbGxvd1Zpc2libGVDaGlsZEZyYW1lQ29udGVudE9ubHkgfTsKKyAgICBjb25zdGV4cHIg
T3B0aW9uU2V0PEhpdFRlc3RSZXF1ZXN0OjpUeXBlPiBoaXRUeXBlIHsgSGl0VGVzdFJlcXVlc3Q6
OlR5cGU6OlJlYWRPbmx5LCBIaXRUZXN0UmVxdWVzdDo6VHlwZTo6QWN0aXZlLCBIaXRUZXN0UmVx
dWVzdDo6VHlwZTo6QWxsb3dWaXNpYmxlQ2hpbGRGcmFtZUNvbnRlbnRPbmx5IH07CiAgICAgYXV0
byByZXN1bHQgPSBtX3BhZ2UtPm1haW5GcmFtZSgpLmV2ZW50SGFuZGxlcigpLmhpdFRlc3RSZXN1
bHRBdFBvaW50KHBvaW50LCBoaXRUeXBlKTsKICAgICBhdXRvKiBoaXROb2RlID0gcmVzdWx0Lmlu
bmVyTm9kZSgpOwogICAgIGlmIChoaXROb2RlICYmIGhpdE5vZGUtPnJlbmRlcmVyKCkpCkBAIC0y
NjM4LDcgKzI2MzgsNyBAQCBzdGF0aWMgaW5saW5lIGJvb2wgaXNPYnNjdXJlZEVsZW1lbnQoRWxl
bWVudCYgZWxlbWVudCkKICAgICBhdXRvIHRvcERvY3VtZW50ID0gbWFrZVJlZihlbGVtZW50LmRv
Y3VtZW50KCkudG9wRG9jdW1lbnQoKSk7CiAgICAgYXV0byBlbGVtZW50UmVjdEluTWFpbkZyYW1l
ID0gZWxlbWVudC5jbGllbnRSZWN0KCk7CiAKLSAgICBjb25zdGV4cHIgT3B0aW9uU2V0PEhpdFRl
c3RSZXF1ZXN0OjpSZXF1ZXN0VHlwZT4gaGl0VHlwZSB7IEhpdFRlc3RSZXF1ZXN0OjpSZWFkT25s
eSwgSGl0VGVzdFJlcXVlc3Q6OkFjdGl2ZSwgSGl0VGVzdFJlcXVlc3Q6OkFsbG93Q2hpbGRGcmFt
ZUNvbnRlbnQsIEhpdFRlc3RSZXF1ZXN0OjpEaXNhbGxvd1VzZXJBZ2VudFNoYWRvd0NvbnRlbnQs
IEhpdFRlc3RSZXF1ZXN0OjpJZ25vcmVDbGlwcGluZyB9OworICAgIGNvbnN0ZXhwciBPcHRpb25T
ZXQ8SGl0VGVzdFJlcXVlc3Q6OlR5cGU+IGhpdFR5cGUgeyBIaXRUZXN0UmVxdWVzdDo6VHlwZTo6
UmVhZE9ubHksIEhpdFRlc3RSZXF1ZXN0OjpUeXBlOjpBY3RpdmUsIEhpdFRlc3RSZXF1ZXN0OjpU
eXBlOjpBbGxvd0NoaWxkRnJhbWVDb250ZW50LCBIaXRUZXN0UmVxdWVzdDo6VHlwZTo6RGlzYWxs
b3dVc2VyQWdlbnRTaGFkb3dDb250ZW50LCBIaXRUZXN0UmVxdWVzdDo6VHlwZTo6SWdub3JlQ2xp
cHBpbmcgfTsKICAgICBIaXRUZXN0UmVzdWx0IHJlc3VsdChlbGVtZW50UmVjdEluTWFpbkZyYW1l
LmNlbnRlcigpKTsKIAogICAgIHRvcERvY3VtZW50LT5oaXRUZXN0KGhpdFR5cGUsIHJlc3VsdCk7
CkBAIC0yODUwLDcgKzI4NTAsNyBAQCBzdGF0aWMgdm9pZCBlbGVtZW50UG9zaXRpb25JbmZvcm1h
dGlvbihXZWJQYWdlJiBwYWdlLCBFbGVtZW50JiBlbGVtZW50LCBjb25zdCBJbgogICAgIAogc3Rh
dGljIHZvaWQgc2VsZWN0aW9uUG9zaXRpb25JbmZvcm1hdGlvbihXZWJQYWdlJiBwYWdlLCBjb25z
dCBJbnRlcmFjdGlvbkluZm9ybWF0aW9uUmVxdWVzdCYgcmVxdWVzdCwgSW50ZXJhY3Rpb25JbmZv
cm1hdGlvbkF0UG9zaXRpb24mIGluZm8pCiB7Ci0gICAgY29uc3RleHByIE9wdGlvblNldDxIaXRU
ZXN0UmVxdWVzdDo6UmVxdWVzdFR5cGU+IGhpdFR5cGUgeyBIaXRUZXN0UmVxdWVzdDo6UmVhZE9u
bHksIEhpdFRlc3RSZXF1ZXN0OjpBY3RpdmUsIEhpdFRlc3RSZXF1ZXN0OjpBbGxvd1Zpc2libGVD
aGlsZEZyYW1lQ29udGVudE9ubHkgfTsKKyAgICBjb25zdGV4cHIgT3B0aW9uU2V0PEhpdFRlc3RS
ZXF1ZXN0OjpUeXBlPiBoaXRUeXBlIHsgSGl0VGVzdFJlcXVlc3Q6OlR5cGU6OlJlYWRPbmx5LCBI
aXRUZXN0UmVxdWVzdDo6VHlwZTo6QWN0aXZlLCBIaXRUZXN0UmVxdWVzdDo6VHlwZTo6QWxsb3dW
aXNpYmxlQ2hpbGRGcmFtZUNvbnRlbnRPbmx5IH07CiAgICAgSGl0VGVzdFJlc3VsdCByZXN1bHQg
PSBwYWdlLmNvcmVQYWdlKCktPm1haW5GcmFtZSgpLmV2ZW50SGFuZGxlcigpLmhpdFRlc3RSZXN1
bHRBdFBvaW50KHJlcXVlc3QucG9pbnQsIGhpdFR5cGUpOwogICAgIE5vZGUqIGhpdE5vZGUgPSBy
ZXN1bHQuaW5uZXJOb2RlKCk7CiAKQEAgLTI5MDYsNyArMjkwNiw3IEBAIHN0YXRpYyB2b2lkIHRl
eHRJbnRlcmFjdGlvblBvc2l0aW9uSW5mb3JtYXRpb24oV2ViUGFnZSYgcGFnZSwgY29uc3QgSFRN
TElucHV0RWxlCiAgICAgaWYgKCFpbnB1dC5saXN0KCkpCiAgICAgICAgIHJldHVybjsKIAotICAg
IGNvbnN0ZXhwciBPcHRpb25TZXQ8SGl0VGVzdFJlcXVlc3Q6OlJlcXVlc3RUeXBlPiBoaXRUeXBl
IHsgSGl0VGVzdFJlcXVlc3Q6OlJlYWRPbmx5LCBIaXRUZXN0UmVxdWVzdDo6QWN0aXZlLCBIaXRU
ZXN0UmVxdWVzdDo6QWxsb3dWaXNpYmxlQ2hpbGRGcmFtZUNvbnRlbnRPbmx5IH07CisgICAgY29u
c3RleHByIE9wdGlvblNldDxIaXRUZXN0UmVxdWVzdDo6VHlwZT4gaGl0VHlwZSB7IEhpdFRlc3RS
ZXF1ZXN0OjpUeXBlOjpSZWFkT25seSwgSGl0VGVzdFJlcXVlc3Q6OlR5cGU6OkFjdGl2ZSwgSGl0
VGVzdFJlcXVlc3Q6OlR5cGU6OkFsbG93VmlzaWJsZUNoaWxkRnJhbWVDb250ZW50T25seSB9Owog
ICAgIEhpdFRlc3RSZXN1bHQgcmVzdWx0ID0gcGFnZS5jb3JlUGFnZSgpLT5tYWluRnJhbWUoKS5l
dmVudEhhbmRsZXIoKS5oaXRUZXN0UmVzdWx0QXRQb2ludChyZXF1ZXN0LnBvaW50LCBoaXRUeXBl
KTsKICAgICBpZiAocmVzdWx0LmlubmVyTm9kZSgpID09IGlucHV0LmRhdGFMaXN0QnV0dG9uRWxl
bWVudCgpKQogICAgICAgICBpbmZvLnByZXZlbnRUZXh0SW50ZXJhY3Rpb24gPSB0cnVlOwpAQCAt
MzAyNCwxNCArMzAyNCwxNCBAQCBJbnRlcmFjdGlvbkluZm9ybWF0aW9uQXRQb3NpdGlvbiBXZWJQ
YWdlOjpwb3NpdGlvbkluZm9ybWF0aW9uKGNvbnN0IEludGVyYWN0aW9uSQogICAgICAgICBpbmZv
Lm5vZGVBdFBvc2l0aW9uSGFzRG91YmxlQ2xpY2tIYW5kbGVyID0gbV9wYWdlLT5tYWluRnJhbWUo
KS5ub2RlUmVzcG9uZGluZ1RvRG91YmxlQ2xpY2tFdmVudChyZXF1ZXN0LnBvaW50LCBhZGp1c3Rl
ZFBvaW50KTsKIAogICAgIGF1dG8mIGV2ZW50SGFuZGxlciA9IG1fcGFnZS0+bWFpbkZyYW1lKCku
ZXZlbnRIYW5kbGVyKCk7Ci0gICAgYXV0byBoaXRUZXN0UmVxdWVzdFR5cGVzID0gT3B0aW9uU2V0
PEhpdFRlc3RSZXF1ZXN0OjpSZXF1ZXN0VHlwZT4gewotICAgICAgICBIaXRUZXN0UmVxdWVzdDo6
UmVhZE9ubHksCi0gICAgICAgIEhpdFRlc3RSZXF1ZXN0OjpBbGxvd0ZyYW1lU2Nyb2xsYmFycywK
LSAgICAgICAgSGl0VGVzdFJlcXVlc3Q6OkFsbG93VmlzaWJsZUNoaWxkRnJhbWVDb250ZW50T25s
eSwKKyAgICBhdXRvIGhpdFRlc3RSZXF1ZXN0VHlwZXMgPSBPcHRpb25TZXQ8SGl0VGVzdFJlcXVl
c3Q6OlR5cGU+IHsKKyAgICAgICAgSGl0VGVzdFJlcXVlc3Q6OlR5cGU6OlJlYWRPbmx5LAorICAg
ICAgICBIaXRUZXN0UmVxdWVzdDo6VHlwZTo6QWxsb3dGcmFtZVNjcm9sbGJhcnMsCisgICAgICAg
IEhpdFRlc3RSZXF1ZXN0OjpUeXBlOjpBbGxvd1Zpc2libGVDaGlsZEZyYW1lQ29udGVudE9ubHks
CiAgICAgfTsKIAogICAgIGlmIChyZXF1ZXN0LmRpc2FsbG93VXNlckFnZW50U2hhZG93Q29udGVu
dCkKLSAgICAgICAgaGl0VGVzdFJlcXVlc3RUeXBlcy5hZGQoSGl0VGVzdFJlcXVlc3Q6OkRpc2Fs
bG93VXNlckFnZW50U2hhZG93Q29udGVudCk7CisgICAgICAgIGhpdFRlc3RSZXF1ZXN0VHlwZXMu
YWRkKEhpdFRlc3RSZXF1ZXN0OjpUeXBlOjpEaXNhbGxvd1VzZXJBZ2VudFNoYWRvd0NvbnRlbnQp
OwogCiAgICAgYXV0byBoaXRUZXN0UmVzdWx0ID0gZXZlbnRIYW5kbGVyLmhpdFRlc3RSZXN1bHRB
dFBvaW50KHJlcXVlc3QucG9pbnQsIGhpdFRlc3RSZXF1ZXN0VHlwZXMpOwogICAgIGlmIChhdXRv
KiBoaXRGcmFtZSA9IGhpdFRlc3RSZXN1bHQuaW5uZXJOb2RlRnJhbWUoKSkgewpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1dlYlBhZ2VNYWMubW0gYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvV2ViUGFnZU1hYy5tbQppbmRleCBi
NzFkMmEyZTM1MjNmNWZhNWZjYWM2YzcwMmM2Yzk5YzcwM2FjNjlhLi5hNDJkZDkxY2RmYjhiZGYw
YjE3ZTJkY2NjYTA0ZmU4MDE5ZDA3NDhlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViUGFnZS9tYWMvV2ViUGFnZU1hYy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViUGFnZS9tYWMvV2ViUGFnZU1hYy5tbQpAQCAtNTkyLDcgKzU5Miw3IEBAIHZvaWQg
V2ViUGFnZTo6c2hvdWxkRGVsYXlXaW5kb3dPcmRlcmluZ0V2ZW50KGNvbnN0IFdlYktpdDo6V2Vi
TW91c2VFdmVudCYgZXZlbnQsCiAKICAgICBib29sIHJlc3VsdCA9IGZhbHNlOwogI2lmIEVOQUJM
RShEUkFHX1NVUFBPUlQpCi0gICAgY29uc3RleHByIE9wdGlvblNldDxIaXRUZXN0UmVxdWVzdDo6
UmVxdWVzdFR5cGU+IGhpdFR5cGUgeyBIaXRUZXN0UmVxdWVzdDo6UmVhZE9ubHksIEhpdFRlc3RS
ZXF1ZXN0OjpBY3RpdmUsIEhpdFRlc3RSZXF1ZXN0OjpBbGxvd0NoaWxkRnJhbWVDb250ZW50IH07
CisgICAgY29uc3RleHByIE9wdGlvblNldDxIaXRUZXN0UmVxdWVzdDo6VHlwZT4gaGl0VHlwZSB7
IEhpdFRlc3RSZXF1ZXN0OjpUeXBlOjpSZWFkT25seSwgSGl0VGVzdFJlcXVlc3Q6OlR5cGU6OkFj
dGl2ZSwgSGl0VGVzdFJlcXVlc3Q6OlR5cGU6OkFsbG93Q2hpbGRGcmFtZUNvbnRlbnQgfTsKICAg
ICBIaXRUZXN0UmVzdWx0IGhpdFJlc3VsdCA9IGZyYW1lLmV2ZW50SGFuZGxlcigpLmhpdFRlc3RS
ZXN1bHRBdFBvaW50KGZyYW1lLnZpZXcoKS0+d2luZG93VG9Db250ZW50cyhldmVudC5wb3NpdGlv
bigpKSwgaGl0VHlwZSk7CiAgICAgaWYgKGhpdFJlc3VsdC5pc1NlbGVjdGVkKCkpCiAgICAgICAg
IHJlc3VsdCA9IGZyYW1lLmV2ZW50SGFuZGxlcigpLmV2ZW50TWF5U3RhcnREcmFnKHBsYXRmb3Jt
KGV2ZW50KSk7CkBAIC02MTAsNyArNjEwLDcgQEAgdm9pZCBXZWJQYWdlOjphY2NlcHRzRmlyc3RN
b3VzZShpbnQgZXZlbnROdW1iZXIsIGNvbnN0IFdlYktpdDo6V2ViTW91c2VFdmVudCYgZXYKIAog
ICAgIGF1dG8mIGZyYW1lID0gbV9wYWdlLT5mb2N1c0NvbnRyb2xsZXIoKS5mb2N1c2VkT3JNYWlu
RnJhbWUoKTsKIAotICAgIGNvbnN0ZXhwciBPcHRpb25TZXQ8SGl0VGVzdFJlcXVlc3Q6OlJlcXVl
c3RUeXBlPiBoaXRUeXBlIHsgSGl0VGVzdFJlcXVlc3Q6OlJlYWRPbmx5LCBIaXRUZXN0UmVxdWVz
dDo6QWN0aXZlLCBIaXRUZXN0UmVxdWVzdDo6QWxsb3dDaGlsZEZyYW1lQ29udGVudCB9OworICAg
IGNvbnN0ZXhwciBPcHRpb25TZXQ8SGl0VGVzdFJlcXVlc3Q6OlR5cGU+IGhpdFR5cGUgeyBIaXRU
ZXN0UmVxdWVzdDo6VHlwZTo6UmVhZE9ubHksIEhpdFRlc3RSZXF1ZXN0OjpUeXBlOjpBY3RpdmUs
IEhpdFRlc3RSZXF1ZXN0OjpUeXBlOjpBbGxvd0NoaWxkRnJhbWVDb250ZW50IH07CiAgICAgSGl0
VGVzdFJlc3VsdCBoaXRSZXN1bHQgPSBmcmFtZS5ldmVudEhhbmRsZXIoKS5oaXRUZXN0UmVzdWx0
QXRQb2ludChmcmFtZS52aWV3KCktPndpbmRvd1RvQ29udGVudHMoZXZlbnQucG9zaXRpb24oKSks
IGhpdFR5cGUpOwogICAgIGZyYW1lLmV2ZW50SGFuZGxlcigpLnNldEFjdGl2YXRpb25FdmVudE51
bWJlcihldmVudE51bWJlcik7CiAgICAgYm9vbCByZXN1bHQgPSBmYWxzZTsKQEAgLTg1OSw3ICs4
NTksNyBAQCB2b2lkIFdlYlBhZ2U6OnBlcmZvcm1JbW1lZGlhdGVBY3Rpb25IaXRUZXN0QXRMb2Nh
dGlvbihXZWJDb3JlOjpGbG9hdFBvaW50IGxvY2F0aQogICAgIH0KIAogICAgIEludFBvaW50IGxv
Y2F0aW9uSW5Db250ZW50Q29vcmRpbmF0ZXMgPSBtYWluRnJhbWUudmlldygpLT5yb290Vmlld1Rv
Q29udGVudHMocm91bmRlZEludFBvaW50KGxvY2F0aW9uSW5WaWV3Q29vcmRpbmF0ZXMpKTsKLSAg
ICBjb25zdGV4cHIgT3B0aW9uU2V0PEhpdFRlc3RSZXF1ZXN0OjpSZXF1ZXN0VHlwZT4gaGl0VHlw
ZSB7IEhpdFRlc3RSZXF1ZXN0OjpSZWFkT25seSwgSGl0VGVzdFJlcXVlc3Q6OkFjdGl2ZSwgSGl0
VGVzdFJlcXVlc3Q6OkRpc2FsbG93VXNlckFnZW50U2hhZG93Q29udGVudCwgSGl0VGVzdFJlcXVl
c3Q6OkFsbG93Q2hpbGRGcmFtZUNvbnRlbnQgfTsKKyAgICBjb25zdGV4cHIgT3B0aW9uU2V0PEhp
dFRlc3RSZXF1ZXN0OjpUeXBlPiBoaXRUeXBlIHsgSGl0VGVzdFJlcXVlc3Q6OlR5cGU6OlJlYWRP
bmx5LCBIaXRUZXN0UmVxdWVzdDo6VHlwZTo6QWN0aXZlLCBIaXRUZXN0UmVxdWVzdDo6VHlwZTo6
RGlzYWxsb3dVc2VyQWdlbnRTaGFkb3dDb250ZW50LCBIaXRUZXN0UmVxdWVzdDo6VHlwZTo6QWxs
b3dDaGlsZEZyYW1lQ29udGVudCB9OwogICAgIEhpdFRlc3RSZXN1bHQgaGl0VGVzdFJlc3VsdCA9
IG1haW5GcmFtZS5ldmVudEhhbmRsZXIoKS5oaXRUZXN0UmVzdWx0QXRQb2ludChsb2NhdGlvbklu
Q29udGVudENvb3JkaW5hdGVzLCBoaXRUeXBlKTsKIAogICAgIGJvb2wgaW1tZWRpYXRlQWN0aW9u
SGl0VGVzdFByZXZlbnRzRGVmYXVsdCA9IGZhbHNlOwpAQCAtOTU5LDcgKzk1OSw3IEBAIE9wdGlv
bmFsPHN0ZDo6dHVwbGU8V2ViQ29yZTo6U2ltcGxlUmFuZ2UsIE5TRGljdGlvbmFyeSAqPj4gV2Vi
UGFnZTo6bG9va3VwVGV4dEF0CiAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CiAKICAgICBh
dXRvIHBvaW50ID0gcm91bmRlZEludFBvaW50KGxvY2F0aW9uSW5WaWV3Q29vcmRpbmF0ZXMpOwot
ICAgIGNvbnN0ZXhwciBPcHRpb25TZXQ8SGl0VGVzdFJlcXVlc3Q6OlJlcXVlc3RUeXBlPiBoaXRU
eXBlIHsgSGl0VGVzdFJlcXVlc3Q6OlJlYWRPbmx5LCBIaXRUZXN0UmVxdWVzdDo6QWN0aXZlLCBI
aXRUZXN0UmVxdWVzdDo6RGlzYWxsb3dVc2VyQWdlbnRTaGFkb3dDb250ZW50LCBIaXRUZXN0UmVx
dWVzdDo6QWxsb3dDaGlsZEZyYW1lQ29udGVudCB9OworICAgIGNvbnN0ZXhwciBPcHRpb25TZXQ8
SGl0VGVzdFJlcXVlc3Q6OlR5cGU+IGhpdFR5cGUgeyBIaXRUZXN0UmVxdWVzdDo6VHlwZTo6UmVh
ZE9ubHksIEhpdFRlc3RSZXF1ZXN0OjpUeXBlOjpBY3RpdmUsIEhpdFRlc3RSZXF1ZXN0OjpUeXBl
OjpEaXNhbGxvd1VzZXJBZ2VudFNoYWRvd0NvbnRlbnQsIEhpdFRlc3RSZXF1ZXN0OjpUeXBlOjpB
bGxvd0NoaWxkRnJhbWVDb250ZW50IH07CiAgICAgYXV0byByZXN1bHQgPSBtYWluRnJhbWUuZXZl
bnRIYW5kbGVyKCkuaGl0VGVzdFJlc3VsdEF0UG9pbnQobV9wYWdlLT5tYWluRnJhbWUoKS52aWV3
KCktPndpbmRvd1RvQ29udGVudHMocG9pbnQpLCBoaXRUeXBlKTsKICAgICByZXR1cm4gRGljdGlv
bmFyeUxvb2t1cDo6cmFuZ2VBdEhpdFRlc3RSZXN1bHQocmVzdWx0KTsKIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXRMZWdhY3kvaW9zL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lSU9TLm1tIGIv
U291cmNlL1dlYktpdExlZ2FjeS9pb3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVJT1MubW0KaW5k
ZXggODUzZTAwNWE1NGI0YjYwYmMyNTIwMGQ2NDU3MGY2NmRhZjJmYzA1MC4uMjE0ZTU3MWMwNzU4
NmQzMjIyZTlhODZmYjhmZjQ4Y2FhNjkwMTVjNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExl
Z2FjeS9pb3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVJT1MubW0KKysrIGIvU291cmNlL1dlYktp
dExlZ2FjeS9pb3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVJT1MubW0KQEAgLTgwMiw3ICs4MDIs
NyBAQCAtIChDR1JlY3QpZWxlbWVudFJlY3RBdFBvaW50OihDR1BvaW50KXBvaW50CiB7CiAgICAg
RnJhbWUgKmZyYW1lID0gW3NlbGYgY29yZUZyYW1lXTsKICAgICBJbnRQb2ludCBhZGp1c3RlZFBv
aW50ID0gZnJhbWUtPnZpZXcoKS0+d2luZG93VG9Db250ZW50cyhyb3VuZGVkSW50UG9pbnQocG9p
bnQpKTsKLSAgICBjb25zdGV4cHIgT3B0aW9uU2V0PEhpdFRlc3RSZXF1ZXN0OjpSZXF1ZXN0VHlw
ZT4gaGl0VHlwZSB7IEhpdFRlc3RSZXF1ZXN0OjpSZWFkT25seSwgSGl0VGVzdFJlcXVlc3Q6OkFj
dGl2ZSwgSGl0VGVzdFJlcXVlc3Q6OkFsbG93Q2hpbGRGcmFtZUNvbnRlbnQgfTsKKyAgICBjb25z
dGV4cHIgT3B0aW9uU2V0PEhpdFRlc3RSZXF1ZXN0OjpUeXBlPiBoaXRUeXBlIHsgSGl0VGVzdFJl
cXVlc3Q6OlR5cGU6OlJlYWRPbmx5LCBIaXRUZXN0UmVxdWVzdDo6VHlwZTo6QWN0aXZlLCBIaXRU
ZXN0UmVxdWVzdDo6VHlwZTo6QWxsb3dDaGlsZEZyYW1lQ29udGVudCB9OwogICAgIEhpdFRlc3RS
ZXN1bHQgcmVzdWx0ID0gZnJhbWUtPmV2ZW50SGFuZGxlcigpLmhpdFRlc3RSZXN1bHRBdFBvaW50
KGFkanVzdGVkUG9pbnQsIGhpdFR5cGUpOwogICAgIE5vZGUqIGhpdE5vZGUgPSByZXN1bHQuaW5u
ZXJOb2RlKCk7CiAgICAgaWYgKCFoaXROb2RlIHx8ICFoaXROb2RlLT5yZW5kZXJlcigpKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVM
b2FkZXJDbGllbnQubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9X
ZWJGcmFtZUxvYWRlckNsaWVudC5tbQppbmRleCA2YTYyYzUxZGQ3ZGJmNTZiYjdiZWExMzQ4YTBm
NjAzNzUyZGViOGJhLi41Y2JkZmIwYzQzNGEyNWZhMTdhN2IxMTg1NjMwNjgzNjIzMTkwYmM5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFt
ZUxvYWRlckNsaWVudC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3Vw
cG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5tbQpAQCAtMTU2Myw3ICsxNTYzLDcgQEAgTlNEaWN0
aW9uYXJ5ICpXZWJGcmFtZUxvYWRlckNsaWVudDo6YWN0aW9uRGljdGlvbmFyeShjb25zdCBXZWJD
b3JlOjpOYXZpZ2F0aW9uQWMKICAgICAgICAgbmlsXTsKIAogICAgIGlmIChhdXRvIG1vdXNlRXZl
bnREYXRhID0gYWN0aW9uLm1vdXNlRXZlbnREYXRhKCkpIHsKLSAgICAgICAgY29uc3RleHByIE9w
dGlvblNldDxIaXRUZXN0UmVxdWVzdDo6UmVxdWVzdFR5cGU+IGhpdFR5cGUgeyBIaXRUZXN0UmVx
dWVzdDo6UmVhZE9ubHksIEhpdFRlc3RSZXF1ZXN0OjpBY3RpdmUsIEhpdFRlc3RSZXF1ZXN0OjpE
aXNhbGxvd1VzZXJBZ2VudFNoYWRvd0NvbnRlbnQsIEhpdFRlc3RSZXF1ZXN0OjpBbGxvd0NoaWxk
RnJhbWVDb250ZW50IH07CisgICAgICAgIGNvbnN0ZXhwciBPcHRpb25TZXQ8SGl0VGVzdFJlcXVl
c3Q6OlR5cGU+IGhpdFR5cGUgeyBIaXRUZXN0UmVxdWVzdDo6VHlwZTo6UmVhZE9ubHksIEhpdFRl
c3RSZXF1ZXN0OjpUeXBlOjpBY3RpdmUsIEhpdFRlc3RSZXF1ZXN0OjpUeXBlOjpEaXNhbGxvd1Vz
ZXJBZ2VudFNoYWRvd0NvbnRlbnQsIEhpdFRlc3RSZXF1ZXN0OjpUeXBlOjpBbGxvd0NoaWxkRnJh
bWVDb250ZW50IH07CiAgICAgICAgIGF1dG8gZWxlbWVudCA9IGFkb3B0TlMoW1tXZWJFbGVtZW50
RGljdGlvbmFyeSBhbGxvY10gaW5pdFdpdGhIaXRUZXN0UmVzdWx0OmNvcmUobV93ZWJGcmFtZS5n
ZXQoKSktPmV2ZW50SGFuZGxlcigpLmhpdFRlc3RSZXN1bHRBdFBvaW50KG1vdXNlRXZlbnREYXRh
LT5hYnNvbHV0ZUxvY2F0aW9uLCBoaXRUeXBlKV0pOwogICAgICAgICBbcmVzdWx0IHNldE9iamVj
dDplbGVtZW50LmdldCgpIGZvcktleTpXZWJBY3Rpb25FbGVtZW50S2V5XTsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJGcmFtZS5tbSBiL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViRnJhbWUubW0KaW5kZXggZjc2ZjljMjYzMTg0OGNj
ZjgzYTg5OGQ5YWZmNDI4MmJiNmRmMjc3ZS4uZjM1ZDdiZDVhMjM1MWIyYjAxYjY4YmIxZTIxNmY3
NDU3ZTQxOGE3MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9X
ZWJGcmFtZS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkZyYW1l
Lm1tCkBAIC0yMzMyLDcgKzIzMzIsNyBAQCAtIChOU0RpY3Rpb25hcnkgKillbGVtZW50QXRQb2lu
dDooTlNQb2ludClwb2ludAogICAgIGF1dG8gY29yZUZyYW1lID0gX3ByaXZhdGUtPmNvcmVGcmFt
ZTsKICAgICBpZiAoIWNvcmVGcmFtZSkKICAgICAgICAgcmV0dXJuIG5pbDsKLSAgICBjb25zdGV4
cHIgT3B0aW9uU2V0PEhpdFRlc3RSZXF1ZXN0OjpSZXF1ZXN0VHlwZT4gaGl0VHlwZSB7IEhpdFRl
c3RSZXF1ZXN0OjpSZWFkT25seSwgSGl0VGVzdFJlcXVlc3Q6OkFjdGl2ZSwgSGl0VGVzdFJlcXVl
c3Q6Oklnbm9yZUNsaXBwaW5nLCBIaXRUZXN0UmVxdWVzdDo6RGlzYWxsb3dVc2VyQWdlbnRTaGFk
b3dDb250ZW50LCBIaXRUZXN0UmVxdWVzdDo6QWxsb3dDaGlsZEZyYW1lQ29udGVudCB9OworICAg
IGNvbnN0ZXhwciBPcHRpb25TZXQ8SGl0VGVzdFJlcXVlc3Q6OlR5cGU+IGhpdFR5cGUgeyBIaXRU
ZXN0UmVxdWVzdDo6VHlwZTo6UmVhZE9ubHksIEhpdFRlc3RSZXF1ZXN0OjpUeXBlOjpBY3RpdmUs
IEhpdFRlc3RSZXF1ZXN0OjpUeXBlOjpJZ25vcmVDbGlwcGluZywgSGl0VGVzdFJlcXVlc3Q6OlR5
cGU6OkRpc2FsbG93VXNlckFnZW50U2hhZG93Q29udGVudCwgSGl0VGVzdFJlcXVlc3Q6OlR5cGU6
OkFsbG93Q2hpbGRGcmFtZUNvbnRlbnQgfTsKICAgICByZXR1cm4gYWRvcHROUyhbW1dlYkVsZW1l
bnREaWN0aW9uYXJ5IGFsbG9jXSBpbml0V2l0aEhpdFRlc3RSZXN1bHQ6Y29yZUZyYW1lLT5ldmVu
dEhhbmRsZXIoKS5oaXRUZXN0UmVzdWx0QXRQb2ludChXZWJDb3JlOjpJbnRQb2ludChwb2ludCks
IGhpdFR5cGUpXSkuYXV0b3JlbGVhc2UoKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dExlZ2FjeS9tYWMvV2ViVmlldy9XZWJIVE1MVmlldy5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL1dlYlZpZXcvV2ViSFRNTFZpZXcubW0KaW5kZXggOGUwNDc2NWQ0ODQ3NjI3YzE1MGYwZWQy
ZjkzYTRiOTJjYjFiYWRiNi4uMGZlMmE1MDk2YzdlMjZmMzIwMzI1ZTM2OGJmZjBkYmI5ZjA3MmM3
NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJIVE1MVmll
dy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkhUTUxWaWV3Lm1t
CkBAIC03MDY5LDkgKzcwNjksOSBAQCAtIChOU0RpY3Rpb25hcnkgKillbGVtZW50QXRQb2ludDoo
TlNQb2ludClwb2ludCBhbGxvd1NoYWRvd0NvbnRlbnQ6KEJPT0wpYWxsb3dTaAogICAgIGF1dG8q
IGNvcmVGcmFtZSA9IGNvcmUoW3NlbGYgX2ZyYW1lXSk7CiAgICAgaWYgKCFjb3JlRnJhbWUpCiAg
ICAgICAgIHJldHVybiBuaWw7Ci0gICAgT3B0aW9uU2V0PEhpdFRlc3RSZXF1ZXN0OjpSZXF1ZXN0
VHlwZT4gaGl0VHlwZSB7IEhpdFRlc3RSZXF1ZXN0OjpSZWFkT25seSwgSGl0VGVzdFJlcXVlc3Q6
OkFjdGl2ZSwgSGl0VGVzdFJlcXVlc3Q6OkFsbG93Q2hpbGRGcmFtZUNvbnRlbnQgfTsKKyAgICBP
cHRpb25TZXQ8SGl0VGVzdFJlcXVlc3Q6OlR5cGU+IGhpdFR5cGUgeyBIaXRUZXN0UmVxdWVzdDo6
VHlwZTo6UmVhZE9ubHksIEhpdFRlc3RSZXF1ZXN0OjpUeXBlOjpBY3RpdmUsIEhpdFRlc3RSZXF1
ZXN0OjpUeXBlOjpBbGxvd0NoaWxkRnJhbWVDb250ZW50IH07CiAgICAgaWYgKCFhbGxvd1NoYWRv
d0NvbnRlbnQpCi0gICAgICAgIGhpdFR5cGUuYWRkKEhpdFRlc3RSZXF1ZXN0OjpEaXNhbGxvd1Vz
ZXJBZ2VudFNoYWRvd0NvbnRlbnQpOworICAgICAgICBoaXRUeXBlLmFkZChIaXRUZXN0UmVxdWVz
dDo6VHlwZTo6RGlzYWxsb3dVc2VyQWdlbnRTaGFkb3dDb250ZW50KTsKICAgICByZXR1cm4gYWRv
cHROUyhbW1dlYkVsZW1lbnREaWN0aW9uYXJ5IGFsbG9jXSBpbml0V2l0aEhpdFRlc3RSZXN1bHQ6
Y29yZUZyYW1lLT5ldmVudEhhbmRsZXIoKS5oaXRUZXN0UmVzdWx0QXRQb2ludChJbnRQb2ludCB7
IHBvaW50IH0sIGhpdFR5cGUpXSkuYXV0b3JlbGVhc2UoKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJJbW1lZGlhdGVBY3Rpb25Db250cm9sbGVy
Lm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJJbW1lZGlhdGVBY3Rpb25D
b250cm9sbGVyLm1tCmluZGV4IDBhMDEyMmMyMzQyZTFiNzMzMzdjMWM4Y2RhODg4Njc1NzgzMWE2
YjUuLmNlNjJiZmE1MTYxNzdjOGMzNmFlZGQ3YmE1ZmE0YzI3NTEwZDZmNzEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViSW1tZWRpYXRlQWN0aW9uQ29udHJv
bGxlci5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkltbWVkaWF0
ZUFjdGlvbkNvbnRyb2xsZXIubW0KQEAgLTE2OSw3ICsxNjksNyBAQCAtICh2b2lkKXBlcmZvcm1I
aXRUZXN0QXRQb2ludDooTlNQb2ludCl2aWV3UG9pbnQKICAgICBpZiAoIWNvcmVGcmFtZSkKICAg
ICAgICAgcmV0dXJuOwogCi0gICAgY29uc3RleHByIE9wdGlvblNldDxIaXRUZXN0UmVxdWVzdDo6
UmVxdWVzdFR5cGU+IGhpdFR5cGUgeyBIaXRUZXN0UmVxdWVzdDo6UmVhZE9ubHksIEhpdFRlc3RS
ZXF1ZXN0OjpBY3RpdmUsIEhpdFRlc3RSZXF1ZXN0OjpEaXNhbGxvd1VzZXJBZ2VudFNoYWRvd0Nv
bnRlbnQsIEhpdFRlc3RSZXF1ZXN0OjpBbGxvd0NoaWxkRnJhbWVDb250ZW50IH07CisgICAgY29u
c3RleHByIE9wdGlvblNldDxIaXRUZXN0UmVxdWVzdDo6VHlwZT4gaGl0VHlwZSB7IEhpdFRlc3RS
ZXF1ZXN0OjpUeXBlOjpSZWFkT25seSwgSGl0VGVzdFJlcXVlc3Q6OlR5cGU6OkFjdGl2ZSwgSGl0
VGVzdFJlcXVlc3Q6OlR5cGU6OkRpc2FsbG93VXNlckFnZW50U2hhZG93Q29udGVudCwgSGl0VGVz
dFJlcXVlc3Q6OlR5cGU6OkFsbG93Q2hpbGRGcmFtZUNvbnRlbnQgfTsKICAgICBfaGl0VGVzdFJl
c3VsdCA9IGNvcmVGcmFtZS0+ZXZlbnRIYW5kbGVyKCkuaGl0VGVzdFJlc3VsdEF0UG9pbnQoV2Vi
Q29yZTo6SW50UG9pbnQodmlld1BvaW50KSwgaGl0VHlwZSk7CiAgICAgY29yZUZyYW1lLT5tYWlu
RnJhbWUoKS5ldmVudEhhbmRsZXIoKS5zZXRJbW1lZGlhdGVBY3Rpb25TdGFnZShXZWJDb3JlOjpJ
bW1lZGlhdGVBY3Rpb25TdGFnZTo6UGVyZm9ybWVkSGl0VGVzdCk7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkFjdGlvblByb3BlcnR5QmFnLmNwcCBiL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvd2luL1dlYkFjdGlvblByb3BlcnR5QmFnLmNwcAppbmRleCBlMmI5OTRiOTFl
ZmY3NjU2OWNhYzIyMzliODYzYWEwMjZkY2FkNjk3Li42Zjc1N2IzODZkMTVmOTFmMjk2YzRlNGQ4
MDUyNGYzYTJlM2NiMTY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJB
Y3Rpb25Qcm9wZXJ0eUJhZy5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQWN0
aW9uUHJvcGVydHlCYWcuY3BwCkBAIC0xMTMsNyArMTEzLDcgQEAgSFJFU1VMVCBXZWJBY3Rpb25Q
cm9wZXJ0eUJhZzo6UmVhZChMUENPTEVTVFIgcHN6UHJvcE5hbWUsIFZBUklBTlQgKnBWYXIsIElF
cnJvckwKICAgICBpZiAoaXNFcXVhbChwc3pQcm9wTmFtZSwgV2ViQWN0aW9uRWxlbWVudEtleSkp
IHsKICAgICAgICAgaWYgKGF1dG8gbW91c2VFdmVudCA9IG1fYWN0aW9uLm1vdXNlRXZlbnREYXRh
KCkpIHsKICAgICAgICAgICAgIFZfVlQocFZhcikgPSBWVF9VTktOT1dOOwotICAgICAgICAgICAg
Y29uc3RleHByIE9wdGlvblNldDxIaXRUZXN0UmVxdWVzdDo6UmVxdWVzdFR5cGU+IGhpdFR5cGUg
eyBIaXRUZXN0UmVxdWVzdDo6UmVhZE9ubHksIEhpdFRlc3RSZXF1ZXN0OjpBY3RpdmUsIEhpdFRl
c3RSZXF1ZXN0OjpEaXNhbGxvd1VzZXJBZ2VudFNoYWRvd0NvbnRlbnQsIEhpdFRlc3RSZXF1ZXN0
OjpBbGxvd0NoaWxkRnJhbWVDb250ZW50IH07CisgICAgICAgICAgICBjb25zdGV4cHIgT3B0aW9u
U2V0PEhpdFRlc3RSZXF1ZXN0OjpUeXBlPiBoaXRUeXBlIHsgSGl0VGVzdFJlcXVlc3Q6OlR5cGU6
OlJlYWRPbmx5LCBIaXRUZXN0UmVxdWVzdDo6VHlwZTo6QWN0aXZlLCBIaXRUZXN0UmVxdWVzdDo6
VHlwZTo6RGlzYWxsb3dVc2VyQWdlbnRTaGFkb3dDb250ZW50LCBIaXRUZXN0UmVxdWVzdDo6VHlw
ZTo6QWxsb3dDaGlsZEZyYW1lQ29udGVudCB9OwogICAgICAgICAgICAgVl9VTktOT1dOKHBWYXIp
ID0gV2ViRWxlbWVudFByb3BlcnR5QmFnOjpjcmVhdGVJbnN0YW5jZShtX2ZyYW1lLT5ldmVudEhh
bmRsZXIoKS5oaXRUZXN0UmVzdWx0QXRQb2ludChtb3VzZUV2ZW50LT5hYnNvbHV0ZUxvY2F0aW9u
LCBoaXRUeXBlKSk7CiAgICAgICAgICAgICByZXR1cm4gU19PSzsKICAgICAgICAgfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViVmlldy5jcHAgYi9Tb3VyY2UvV2ViS2l0
TGVnYWN5L3dpbi9XZWJWaWV3LmNwcAppbmRleCA2NzA5MjI2NDE5YWZiOGVmNGY1ZGIyYzc0MTZm
ZDViNzRkNjQwYzk0Li4yYWJkNmM1MWMyYTZmNWEyNzYxMjRmMjlkYzdmY2Q1YzMwZDA4ZWRkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJWaWV3LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJWaWV3LmNwcApAQCAtMTY1OSw3ICsxNjU5LDcgQEAgYm9v
bCBXZWJWaWV3OjpoYW5kbGVDb250ZXh0TWVudUV2ZW50KFdQQVJBTSB3UGFyYW0sIExQQVJBTSBs
UGFyYW0pCiAgICAgbV9wYWdlLT5jb250ZXh0TWVudUNvbnRyb2xsZXIoKS5jbGVhckNvbnRleHRN
ZW51KCk7CiAKICAgICBJbnRQb2ludCBkb2N1bWVudFBvaW50KG1fcGFnZS0+bWFpbkZyYW1lKCku
dmlldygpLT53aW5kb3dUb0NvbnRlbnRzKGxvZ2ljYWxDb29yZHMpKTsKLSAgICBjb25zdGV4cHIg
T3B0aW9uU2V0PEhpdFRlc3RSZXF1ZXN0OjpSZXF1ZXN0VHlwZT4gaGl0VHlwZSB7IEhpdFRlc3RS
ZXF1ZXN0OjpSZWFkT25seSwgSGl0VGVzdFJlcXVlc3Q6OkFjdGl2ZSwgSGl0VGVzdFJlcXVlc3Q6
OkRpc2FsbG93VXNlckFnZW50U2hhZG93Q29udGVudCwgSGl0VGVzdFJlcXVlc3Q6OkFsbG93Q2hp
bGRGcmFtZUNvbnRlbnQgfTsKKyAgICBjb25zdGV4cHIgT3B0aW9uU2V0PEhpdFRlc3RSZXF1ZXN0
OjpUeXBlPiBoaXRUeXBlIHsgSGl0VGVzdFJlcXVlc3Q6OlR5cGU6OlJlYWRPbmx5LCBIaXRUZXN0
UmVxdWVzdDo6VHlwZTo6QWN0aXZlLCBIaXRUZXN0UmVxdWVzdDo6VHlwZTo6RGlzYWxsb3dVc2Vy
QWdlbnRTaGFkb3dDb250ZW50LCBIaXRUZXN0UmVxdWVzdDo6VHlwZTo6QWxsb3dDaGlsZEZyYW1l
Q29udGVudCB9OwogICAgIEhpdFRlc3RSZXN1bHQgcmVzdWx0ID0gbV9wYWdlLT5tYWluRnJhbWUo
KS5ldmVudEhhbmRsZXIoKS5oaXRUZXN0UmVzdWx0QXRQb2ludChkb2N1bWVudFBvaW50LCBoaXRU
eXBlKTsKICAgICBGcmFtZSogdGFyZ2V0RnJhbWUgPSByZXN1bHQuaW5uZXJOb25TaGFyZWROb2Rl
KCkgPyByZXN1bHQuaW5uZXJOb25TaGFyZWROb2RlKCktPmRvY3VtZW50KCkuZnJhbWUoKSA6ICZt
X3BhZ2UtPmZvY3VzQ29udHJvbGxlcigpLmZvY3VzZWRPck1haW5GcmFtZSgpOwogCkBAIC0xOTMx
LDcgKzE5MzEsNyBAQCBib29sIFdlYlZpZXc6Omdlc3R1cmVOb3RpZnkoV1BBUkFNIHdQYXJhbSwg
TFBBUkFNIGxQYXJhbSkKICAgICBJbnRQb2ludCBsb2dpY2FsR2VzdHVyZUJlZ2luUG9pbnQoZ2Vz
dHVyZUJlZ2luUG9pbnQpOwogICAgIGxvZ2ljYWxHZXN0dXJlQmVnaW5Qb2ludC5zY2FsZShpbnZl
cnNlU2NhbGVGYWN0b3IsIGludmVyc2VTY2FsZUZhY3Rvcik7CiAKLSAgICBIaXRUZXN0UmVxdWVz
dCByZXF1ZXN0IHsgT3B0aW9uU2V0PEhpdFRlc3RSZXF1ZXN0OjpSZXF1ZXN0VHlwZT4geyBIaXRU
ZXN0UmVxdWVzdDo6UmVhZE9ubHksIEhpdFRlc3RSZXF1ZXN0OjpEaXNhbGxvd1VzZXJBZ2VudFNo
YWRvd0NvbnRlbnQgfSB9OworICAgIEhpdFRlc3RSZXF1ZXN0IHJlcXVlc3QgeyBPcHRpb25TZXQ8
SGl0VGVzdFJlcXVlc3Q6OlR5cGU+IHsgSGl0VGVzdFJlcXVlc3Q6OlR5cGU6OlJlYWRPbmx5LCBI
aXRUZXN0UmVxdWVzdDo6VHlwZTo6RGlzYWxsb3dVc2VyQWdlbnRTaGFkb3dDb250ZW50IH0gfTsK
ICAgICBmb3IgKFJlZlB0cjxGcmFtZT4gY2hpbGRGcmFtZSA9ICZtX3BhZ2UtPm1haW5GcmFtZSgp
OyBjaGlsZEZyYW1lOyBjaGlsZEZyYW1lID0gRXZlbnRIYW5kbGVyOjpzdWJmcmFtZUZvclRhcmdl
dE5vZGUobV9nZXN0dXJlVGFyZ2V0Tm9kZS5nZXQoKSkpIHsKICAgICAgICAgRnJhbWVWaWV3KiBm
cmFtZVZpZXcgPSBjaGlsZEZyYW1lLT52aWV3KCk7CiAgICAgICAgIGlmICghZnJhbWVWaWV3KQpA
QCAtNDEyNCw3ICs0MTI0LDcgQEAgSFJFU1VMVCBXZWJWaWV3OjplbGVtZW50QXRQb2ludChfSW5f
IExQUE9JTlQgcG9pbnQsIF9DT01fT3V0cHRyX29wdF8gSVByb3BlcnR5QmEKICAgICB3ZWJDb3Jl
UG9pbnQuc2NhbGUoaW52ZXJzZVNjYWxlRmFjdG9yLCBpbnZlcnNlU2NhbGVGYWN0b3IpOwogICAg
IEhpdFRlc3RSZXN1bHQgcmVzdWx0ID0gSGl0VGVzdFJlc3VsdCh3ZWJDb3JlUG9pbnQpOwogICAg
IGlmIChmcmFtZS0+Y29udGVudFJlbmRlcmVyKCkpIHsKLSAgICAgICAgY29uc3RleHByIE9wdGlv
blNldDxIaXRUZXN0UmVxdWVzdDo6UmVxdWVzdFR5cGU+IGhpdFR5cGUgeyBIaXRUZXN0UmVxdWVz
dDo6UmVhZE9ubHksIEhpdFRlc3RSZXF1ZXN0OjpBY3RpdmUsIEhpdFRlc3RSZXF1ZXN0OjpEaXNh
bGxvd1VzZXJBZ2VudFNoYWRvd0NvbnRlbnQsIEhpdFRlc3RSZXF1ZXN0OjpBbGxvd0NoaWxkRnJh
bWVDb250ZW50IH07CisgICAgICAgIGNvbnN0ZXhwciBPcHRpb25TZXQ8SGl0VGVzdFJlcXVlc3Q6
OlR5cGU+IGhpdFR5cGUgeyBIaXRUZXN0UmVxdWVzdDo6VHlwZTo6UmVhZE9ubHksIEhpdFRlc3RS
ZXF1ZXN0OjpUeXBlOjpBY3RpdmUsIEhpdFRlc3RSZXF1ZXN0OjpUeXBlOjpEaXNhbGxvd1VzZXJB
Z2VudFNoYWRvd0NvbnRlbnQsIEhpdFRlc3RSZXF1ZXN0OjpUeXBlOjpBbGxvd0NoaWxkRnJhbWVD
b250ZW50IH07CiAgICAgICAgIHJlc3VsdCA9IGZyYW1lLT5ldmVudEhhbmRsZXIoKS5oaXRUZXN0
UmVzdWx0QXRQb2ludCh3ZWJDb3JlUG9pbnQsIGhpdFR5cGUpOwogICAgIH0KICAgICAqZWxlbWVu
dERpY3Rpb25hcnkgPSBXZWJFbGVtZW50UHJvcGVydHlCYWc6OmNyZWF0ZUluc3RhbmNlKHJlc3Vs
dCk7Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>