<?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>56587</bug_id>
          
          <creation_ts>2011-03-17 13:48:51 -0700</creation_ts>
          <short_desc>Implement Layout Tests for the Media Stream API</short_desc>
          <delta_ts>2012-07-24 05:58:43 -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>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>58550</dependson>
    
    <dependson>61068</dependson>
    
    <dependson>74882</dependson>
    
    <dependson>79114</dependson>
    
    <dependson>82870</dependson>
    
    <dependson>82881</dependson>
    
    <dependson>85883</dependson>
          <blocked>56459</blocked>
          <everconfirmed>0</everconfirmed>
          <reporter name="Leandro Graciá Gil">leandrogracia</reporter>
          <assigned_to name="Tommy Widenflycht">tommyw</assigned_to>
          <cc>abarth</cc>
    
    <cc>fishd</cc>
    
    <cc>harald</cc>
    
    <cc>paulirish</cc>
    
    <cc>tommyw</cc>
    
    <cc>tonyg</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>369269</commentid>
    <comment_count>0</comment_count>
    <who name="Leandro Graciá Gil">leandrogracia</who>
    <bug_when>2011-03-17 13:48:51 -0700</bug_when>
    <thetext>Implement the needed code in the LayoutTestController and provide a StreamClientMock to enable layout testing for the Media Stream API.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>372394</commentid>
    <comment_count>1</comment_count>
    <who name="Leandro Graciá Gil">leandrogracia</who>
    <bug_when>2011-03-23 13:19:36 -0700</bug_when>
    <thetext>Updating the bug platform settings (had the default ones).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>557229</commentid>
    <comment_count>2</comment_count>
      <attachid>127175</attachid>
    <who name="Tommy Widenflycht">tommyw</who>
    <bug_when>2012-02-15 06:41:34 -0800</bug_when>
    <thetext>Created attachment 127175
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>557233</commentid>
    <comment_count>3</comment_count>
    <who name="Tommy Widenflycht">tommyw</who>
    <bug_when>2012-02-15 06:44:10 -0800</bug_when>
    <thetext>I have uploaded a complete implementation for discussion purposes only.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>557601</commentid>
    <comment_count>4</comment_count>
      <attachid>127175</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-02-15 15:00:00 -0800</bug_when>
    <thetext>Comment on attachment 127175
Patch

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

The overall structure of this patch looks great.

&gt; Source/WebCore/mediastream/UserMediaClientMock.cpp:47
&gt; +    : m_allowAudio(false), m_allowVideo(false)

These should be on separate lines.

&gt; Source/WebCore/mediastream/UserMediaClientMock.cpp:71
&gt; +        String id(&quot;mock_audio_device&quot;);
&gt; +        String name(&quot;AudioCapture&quot;);

We usually just use the assignment form of the constructor.

&gt; Source/WebCore/platform/mediastream/PeerConnectionHandlerMock.cpp:50
&gt; +PeerConnectionHandlerMock::PeerConnectionHandlerMock(PeerConnectionHandlerClient* client, const String&amp; serverConfiguration, PassRefPtr&lt;SecurityOrigin&gt; securityOrigin)

You&apos;ll probably need ASSERT_UNUSED for serverConfiguration and securityOrigin to avoid breaking the compile for some ports that don&apos;t like unused parameters.  (There are a bunch more examples of this comment in this file.)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>557602</commentid>
    <comment_count>5</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-02-15 15:01:53 -0800</bug_when>
    <thetext>Maybe @fishd would like to take a look at the uber patch?

There&apos;s a bunch of machinery in the patch that&apos;s not needed for the getusermedia-not-allowed.html test.  Maybe a good starting point would be to break off whatever chunk is needed for getusermedia-not-allowed.html into a first patch,.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>558160</commentid>
    <comment_count>6</comment_count>
    <who name="Tommy Widenflycht">tommyw</who>
    <bug_when>2012-02-16 07:00:33 -0800</bug_when>
    <thetext>(In reply to comment #4)
&gt; (From update of attachment 127175 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=127175&amp;action=review
&gt; 
&gt; The overall structure of this patch looks great.
&gt; 
&gt; &gt; Source/WebCore/mediastream/UserMediaClientMock.cpp:47
&gt; &gt; +    : m_allowAudio(false), m_allowVideo(false)
&gt; 
&gt; These should be on separate lines.
&gt; 
&gt; &gt; Source/WebCore/mediastream/UserMediaClientMock.cpp:71
&gt; &gt; +        String id(&quot;mock_audio_device&quot;);
&gt; &gt; +        String name(&quot;AudioCapture&quot;);
&gt; 
&gt; We usually just use the assignment form of the constructor.

Thanks for having a first look!

I fixed your comments and uploaded just the UserMediaClientMock related code to 
https://bugs.webkit.org/show_bug.cgi?id=61068</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>676720</commentid>
    <comment_count>7</comment_count>
    <who name="Tommy Widenflycht">tommyw</who>
    <bug_when>2012-07-24 05:58:43 -0700</bug_when>
    <thetext>We now have reasonable layout tests and therefore doesn&apos;t need this tracking bug anymore.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>127175</attachid>
            <date>2012-02-15 06:41:34 -0800</date>
            <delta_ts>2012-02-15 15:00:00 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-56587-20120215154132.patch</filename>
            <type>text/plain</type>
            <size>91354</size>
            <attacher name="Tommy Widenflycht">tommyw</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA3Nzk1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZjk1ZGFiZDcxN2MxODg3
ZmY0MDEyYjJhMWI0ZDU5MzkwYzU1ZDhiMC4uYTMxMjFlMjE4M2MyOWRjYjljZTA2NWUyYTNmMDNh
NmM5MmNhZTNkZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDYwIEBACisyMDEyLTAyLTE1ICBUb21t
eSBXaWRlbmZseWNodCAgPHRvbW15d0Bnb29nbGUuY29tPgorCisgICAgICAgIEltcGxlbWVudCBM
YXlvdXQgVGVzdHMgZm9yIHRoZSBNZWRpYSBTdHJlYW0gQVBJCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01NjU4NworCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRlc3Q6IGZhc3QvbWVkaWFzdHJlYW0vZ2V0dXNl
cm1lZGlhLW5vdC1hbGxvd2VkLmh0bWwKKworICAgICAgICAqIFdlYkNvcmUuZ3lwaToKKyAgICAg
ICAgKiBtZWRpYXN0cmVhbS9QZWVyQ29ubmVjdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQ
ZWVyQ29ubmVjdGlvbjo6ZGlkUmVzdGFydElDRVByb2Nlc3NpbmcpOgorICAgICAgICAoV2ViQ29y
ZSk6CisgICAgICAgICogbWVkaWFzdHJlYW0vUGVlckNvbm5lY3Rpb24uaDoKKyAgICAgICAgKFBl
ZXJDb25uZWN0aW9uKToKKyAgICAgICAgKiBtZWRpYXN0cmVhbS9Vc2VyTWVkaWFDbGllbnRNb2Nr
LmNwcDogQ29waWVkIGZyb20gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vUGVl
ckNvbm5lY3Rpb25IYW5kbGVyQ2xpZW50LmguCisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAg
KFdlYkNvcmU6OlVzZXJNZWRpYUNsaWVudE1vY2s6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3Jl
OjpVc2VyTWVkaWFDbGllbnRNb2NrOjpVc2VyTWVkaWFDbGllbnRNb2NrKToKKyAgICAgICAgKFdl
YkNvcmU6OlVzZXJNZWRpYUNsaWVudE1vY2s6OnNldEdldFVzZXJNZWRpYVJlc3VsdCk6CisgICAg
ICAgIChXZWJDb3JlOjpVc2VyTWVkaWFDbGllbnRNb2NrOjpyZXF1ZXN0VXNlck1lZGlhKToKKyAg
ICAgICAgKFdlYkNvcmU6OlVzZXJNZWRpYUNsaWVudE1vY2s6OmNhbmNlbFVzZXJNZWRpYVJlcXVl
c3QpOgorICAgICAgICAqIG1lZGlhc3RyZWFtL1VzZXJNZWRpYUNsaWVudE1vY2suaDogQ29waWVk
IGZyb20gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vUGVlckNvbm5lY3Rpb25I
YW5kbGVyQ2xpZW50LmguCisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFVzZXJNZWRpYUNs
aWVudE1vY2spOgorICAgICAgICAoV2ViQ29yZTo6VXNlck1lZGlhQ2xpZW50TW9jazo6flVzZXJN
ZWRpYUNsaWVudE1vY2spOgorICAgICAgICAoV2ViQ29yZTo6VXNlck1lZGlhQ2xpZW50TW9jazo6
cGFnZURlc3Ryb3llZCk6CisgICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vTWVkaWFTdHJl
YW1DZW50ZXJNb2NrLmNwcDogQ29waWVkIGZyb20gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVk
aWFzdHJlYW0vUGVlckNvbm5lY3Rpb25IYW5kbGVyQ2xpZW50LmguCisgICAgICAgIChXZWJDb3Jl
KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU3RyZWFtQ2VudGVyTW9jazo6Y3JlYXRlKToKKyAg
ICAgICAgKFdlYkNvcmU6Ok1lZGlhU3RyZWFtQ2VudGVyTW9jazo6TWVkaWFTdHJlYW1DZW50ZXJN
b2NrKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU3RyZWFtQ2VudGVyTW9jazo6fk1lZGlhU3Ry
ZWFtQ2VudGVyTW9jayk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVN0cmVhbUNlbnRlck1vY2s6
OnF1ZXJ5TWVkaWFTdHJlYW1Tb3VyY2VzKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU3RyZWFt
Q2VudGVyTW9jazo6ZGlkRW5hYmxlTWVkaWFTdHJlYW1UcmFjayk6CisgICAgICAgIChXZWJDb3Jl
OjpNZWRpYVN0cmVhbUNlbnRlck1vY2s6OmRpZERpc2FibGVNZWRpYVN0cmVhbVRyYWNrKToKKyAg
ICAgICAgKFdlYkNvcmU6Ok1lZGlhU3RyZWFtQ2VudGVyTW9jazo6ZGlkU3RvcExvY2FsTWVkaWFT
dHJlYW0pOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTdHJlYW1DZW50ZXJNb2NrOjpkaWRDb25z
dHJ1Y3RNZWRpYVN0cmVhbSk6CisgICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vTWVkaWFT
dHJlYW1DZW50ZXJNb2NrLmg6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21l
ZGlhc3RyZWFtL1BlZXJDb25uZWN0aW9uSGFuZGxlckNsaWVudC5oLgorICAgICAgICAoV2ViQ29y
ZSk6CisgICAgICAgIChNZWRpYVN0cmVhbUNlbnRlck1vY2spOgorICAgICAgICAqIHBsYXRmb3Jt
L21lZGlhc3RyZWFtL1BlZXJDb25uZWN0aW9uSGFuZGxlckNsaWVudC5oOgorICAgICAgICAoUGVl
ckNvbm5lY3Rpb25IYW5kbGVyQ2xpZW50KToKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVh
bS9QZWVyQ29ubmVjdGlvbkhhbmRsZXJNb2NrLmNwcDogQ29waWVkIGZyb20gU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vUGVlckNvbm5lY3Rpb25IYW5kbGVyQ2xpZW50LmguCisg
ICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OlBlZXJDb25uZWN0aW9uSGFuZGxl
ck1vY2s6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpQZWVyQ29ubmVjdGlvbkhhbmRsZXJN
b2NrOjpQZWVyQ29ubmVjdGlvbkhhbmRsZXJNb2NrKToKKyAgICAgICAgKFdlYkNvcmU6OlBlZXJD
b25uZWN0aW9uSGFuZGxlck1vY2s6On5QZWVyQ29ubmVjdGlvbkhhbmRsZXJNb2NrKToKKyAgICAg
ICAgKFdlYkNvcmU6OlBlZXJDb25uZWN0aW9uSGFuZGxlck1vY2s6OnByb2R1Y2VJbml0aWFsT2Zm
ZXIpOgorICAgICAgICAoV2ViQ29yZTo6UGVlckNvbm5lY3Rpb25IYW5kbGVyTW9jazo6aGFuZGxl
SW5pdGlhbE9mZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OlBlZXJDb25uZWN0aW9uSGFuZGxlck1v
Y2s6OnByb2Nlc3NTRFApOgorICAgICAgICAoV2ViQ29yZTo6UGVlckNvbm5lY3Rpb25IYW5kbGVy
TW9jazo6cHJvY2Vzc1BlbmRpbmdTdHJlYW1zKToKKyAgICAgICAgKFdlYkNvcmU6OlBlZXJDb25u
ZWN0aW9uSGFuZGxlck1vY2s6OnNlbmREYXRhU3RyZWFtTWVzc2FnZSk6CisgICAgICAgIChXZWJD
b3JlOjpQZWVyQ29ubmVjdGlvbkhhbmRsZXJNb2NrOjpzdG9wKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9tZWRpYXN0cmVhbS9QZWVyQ29ubmVjdGlvbkhhbmRsZXJNb2NrLmg6IENvcGllZCBmcm9tIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1BlZXJDb25uZWN0aW9uSGFuZGxlckNs
aWVudC5oLgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChQZWVyQ29ubmVjdGlvbkhhbmRs
ZXJNb2NrKToKKwogMjAxMi0wMi0xNSAgVG9ueSBHZW50aWxjb3JlICA8dG9ueWdAY2hyb21pdW0u
b3JnPgogCiAgICAgICAgIFtjaHJvbWl1bV0gRG9uJ3QgdXNlIGluY3JlYXNlZCBGb250Q2FjaGUg
c2l6ZSBvbiBBbmRyb2lkCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4IGEyZGI5MjllNWVh
ZjZmMmI5YTc0MzU0YTgzZDI1Y2I4ZjE1MDZhNmUuLjgwZmMzMTNiMGEyNzYxYjllMmU4NWEyNjFj
YjY3NTVlMjBkY2M5MGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdl
TG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCkBAIC0xLDMgKzEsOTUg
QEAKKzIwMTItMDItMTUgIFRvbW15IFdpZGVuZmx5Y2h0ICA8dG9tbXl3QGdvb2dsZS5jb20+CisK
KyAgICAgICAgSW1wbGVtZW50IExheW91dCBUZXN0cyBmb3IgdGhlIE1lZGlhIFN0cmVhbSBBUEkK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTU2NTg3CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBXZWJLaXQu
Z3lwOgorICAgICAgICAqIGJyaWRnZS9QZWVyQ29ubmVjdGlvbkhhbmRsZXJJbnRlcm5hbC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpQZWVyQ29ubmVjdGlvbkhhbmRsZXJJbnRlcm5hbDo6ZGlkQ29t
cGxldGVJQ0VQcm9jZXNzaW5nKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29y
ZTo6UGVlckNvbm5lY3Rpb25IYW5kbGVySW50ZXJuYWw6OmRpZFJlc3RhcnRJQ0VQcm9jZXNzaW5n
KToKKyAgICAgICAgKFdlYkNvcmU6OlBlZXJDb25uZWN0aW9uSGFuZGxlckludGVybmFsOjpkaWRH
ZW5lcmF0ZVNEUCk6CisgICAgICAgIChXZWJDb3JlOjpQZWVyQ29ubmVjdGlvbkhhbmRsZXJJbnRl
cm5hbDo6ZGlkUmVjZWl2ZURhdGFTdHJlYW1NZXNzYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OlBl
ZXJDb25uZWN0aW9uSGFuZGxlckludGVybmFsOjpkaWRBZGRSZW1vdGVTdHJlYW0pOgorICAgICAg
ICAoV2ViQ29yZTo6UGVlckNvbm5lY3Rpb25IYW5kbGVySW50ZXJuYWw6OmRpZFJlbW92ZVJlbW90
ZVN0cmVhbSk6CisgICAgICAgICogYnJpZGdlL1BlZXJDb25uZWN0aW9uSGFuZGxlckludGVybmFs
Lmg6CisgICAgICAgIChQZWVyQ29ubmVjdGlvbkhhbmRsZXJJbnRlcm5hbCk6CisgICAgICAgICog
cHVibGljL1dlYlVzZXJNZWRpYUNsaWVudE1vY2suaDogUmVuYW1lZCBmcm9tIFRvb2xzL0R1bXBS
ZW5kZXJUcmVlL2Nocm9taXVtL1dlYlVzZXJNZWRpYUNsaWVudE1vY2suaC4KKyAgICAgICAgKFdl
YkNvcmUpOgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKFdlYlVzZXJNZWRpYUNsaWVudE1v
Y2spOgorICAgICAgICAoV2ViS2l0OjpXZWJVc2VyTWVkaWFDbGllbnRNb2NrOjp+V2ViVXNlck1l
ZGlhQ2xpZW50TW9jayk6CisgICAgICAgIChXZWJLaXQ6OldlYlVzZXJNZWRpYUNsaWVudE1vY2s6
OldlYlVzZXJNZWRpYUNsaWVudE1vY2spOgorICAgICAgICAqIHB1YmxpYy9XZWJVc2VyTWVkaWFS
ZXF1ZXN0Lmg6CisgICAgICAgIChXZWJVc2VyTWVkaWFSZXF1ZXN0KToKKyAgICAgICAgKiBwdWJs
aWMvcGxhdGZvcm0vV2ViTWVkaWFTdHJlYW1DZW50ZXJNb2NrLmg6IENvcGllZCBmcm9tIFNvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL3BsYXRmb3JtL1dlYk1lZGlhU3RyZWFtU291cmNlc1Jl
cXVlc3QuaC4KKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAg
KFdlYk1lZGlhU3RyZWFtQ2VudGVyTW9jayk6CisgICAgICAgICogcHVibGljL3BsYXRmb3JtL1dl
Yk1lZGlhU3RyZWFtU291cmNlc1JlcXVlc3QuaDoKKyAgICAgICAgKFdlYk1lZGlhU3RyZWFtU291
cmNlc1JlcXVlc3QpOgorICAgICAgICAqIHB1YmxpYy9wbGF0Zm9ybS9XZWJQZWVyQ29ubmVjdGlv
bkhhbmRsZXJDbGllbnQuaDoKKyAgICAgICAgKFdlYlBlZXJDb25uZWN0aW9uSGFuZGxlckNsaWVu
dCk6CisgICAgICAgICogcHVibGljL3BsYXRmb3JtL1dlYlBlZXJDb25uZWN0aW9uSGFuZGxlck1v
Y2suaDogQ29waWVkIGZyb20gU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvcGxhdGZvcm0v
V2ViTWVkaWFTdHJlYW1Tb3VyY2VzUmVxdWVzdC5oLgorICAgICAgICAoV2ViQ29yZSk6CisgICAg
ICAgIChXZWJLaXQpOgorICAgICAgICAoV2ViUGVlckNvbm5lY3Rpb25IYW5kbGVyTW9jayk6Cisg
ICAgICAgICogc3JjL1BlZXJDb25uZWN0aW9uSGFuZGxlckNsaWVudEJyaWRnZS5jcHA6IENvcGll
ZCBmcm9tIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYk1lZGlhU3RyZWFtU291cmNlc1Jl
cXVlc3QuY3BwLgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpQZWVyQ29u
bmVjdGlvbkhhbmRsZXJDbGllbnRCcmlkZ2U6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpQ
ZWVyQ29ubmVjdGlvbkhhbmRsZXJDbGllbnRCcmlkZ2U6OlBlZXJDb25uZWN0aW9uSGFuZGxlckNs
aWVudEJyaWRnZSk6CisgICAgICAgIChXZWJDb3JlOjpQZWVyQ29ubmVjdGlvbkhhbmRsZXJDbGll
bnRCcmlkZ2U6On5QZWVyQ29ubmVjdGlvbkhhbmRsZXJDbGllbnRCcmlkZ2UpOgorICAgICAgICAo
V2ViQ29yZTo6UGVlckNvbm5lY3Rpb25IYW5kbGVyQ2xpZW50QnJpZGdlOjpkaWRDb21wbGV0ZUlD
RVByb2Nlc3NpbmcpOgorICAgICAgICAoV2ViQ29yZTo6UGVlckNvbm5lY3Rpb25IYW5kbGVyQ2xp
ZW50QnJpZGdlOjpkaWRSZXN0YXJ0SUNFUHJvY2Vzc2luZyk6CisgICAgICAgIChXZWJDb3JlOjpQ
ZWVyQ29ubmVjdGlvbkhhbmRsZXJDbGllbnRCcmlkZ2U6OmRpZEdlbmVyYXRlU0RQKToKKyAgICAg
ICAgKFdlYkNvcmU6OlBlZXJDb25uZWN0aW9uSGFuZGxlckNsaWVudEJyaWRnZTo6ZGlkUmVjZWl2
ZURhdGFTdHJlYW1NZXNzYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OlBlZXJDb25uZWN0aW9uSGFu
ZGxlckNsaWVudEJyaWRnZTo6ZGlkQWRkUmVtb3RlU3RyZWFtKToKKyAgICAgICAgKFdlYkNvcmU6
OlBlZXJDb25uZWN0aW9uSGFuZGxlckNsaWVudEJyaWRnZTo6ZGlkUmVtb3ZlUmVtb3RlU3RyZWFt
KToKKyAgICAgICAgKiBzcmMvUGVlckNvbm5lY3Rpb25IYW5kbGVyQ2xpZW50QnJpZGdlLmg6IENv
cGllZCBmcm9tIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL3BsYXRmb3JtL1dlYlBlZXJD
b25uZWN0aW9uSGFuZGxlckNsaWVudC5oLgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKFdl
YkNvcmUpOgorICAgICAgICAoUGVlckNvbm5lY3Rpb25IYW5kbGVyQ2xpZW50QnJpZGdlKToKKyAg
ICAgICAgKiBzcmMvV2ViTWVkaWFTdHJlYW1DZW50ZXJNb2NrLmNwcDogQ29waWVkIGZyb20gU291
cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViTWVkaWFTdHJlYW1Tb3VyY2VzUmVxdWVzdC5jcHAu
CisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAoV2ViS2l0OjpXZWJNZWRpYVN0cmVhbUNlbnRl
ck1vY2s6OmNyZWF0ZSk6CisgICAgICAgIChXZWJLaXQ6OldlYk1lZGlhU3RyZWFtQ2VudGVyTW9j
azo6V2ViTWVkaWFTdHJlYW1DZW50ZXJNb2NrKToKKyAgICAgICAgKFdlYktpdDo6V2ViTWVkaWFT
dHJlYW1DZW50ZXJNb2NrOjp+V2ViTWVkaWFTdHJlYW1DZW50ZXJNb2NrKToKKyAgICAgICAgKFdl
YktpdDo6V2ViTWVkaWFTdHJlYW1DZW50ZXJNb2NrOjppbml0aWFsaXplKToKKyAgICAgICAgKFdl
YktpdDo6V2ViTWVkaWFTdHJlYW1DZW50ZXJNb2NrOjpxdWVyeU1lZGlhU3RyZWFtU291cmNlcyk6
CisgICAgICAgIChXZWJLaXQ6OldlYk1lZGlhU3RyZWFtQ2VudGVyTW9jazo6ZGlkRW5hYmxlTWVk
aWFTdHJlYW1UcmFjayk6CisgICAgICAgIChXZWJLaXQ6OldlYk1lZGlhU3RyZWFtQ2VudGVyTW9j
azo6ZGlkRGlzYWJsZU1lZGlhU3RyZWFtVHJhY2spOgorICAgICAgICAoV2ViS2l0OjpXZWJNZWRp
YVN0cmVhbUNlbnRlck1vY2s6OmRpZFN0b3BMb2NhbE1lZGlhU3RyZWFtKToKKyAgICAgICAgKFdl
YktpdDo6V2ViTWVkaWFTdHJlYW1DZW50ZXJNb2NrOjpkaWRDb25zdHJ1Y3RNZWRpYVN0cmVhbSk6
CisgICAgICAgICogc3JjL1dlYk1lZGlhU3RyZWFtU291cmNlc1JlcXVlc3QuY3BwOgorICAgICAg
ICAoV2ViS2l0OjpXZWJNZWRpYVN0cmVhbVNvdXJjZXNSZXF1ZXN0OjpvcGVyYXRvciBQYXNzUmVm
UHRyPFdlYkNvcmU6Ok1lZGlhU3RyZWFtU291cmNlc1F1ZXJ5Q2xpZW50Pik6CisgICAgICAgIChX
ZWJLaXQpOgorICAgICAgICAqIHNyYy9XZWJQZWVyQ29ubmVjdGlvbkhhbmRsZXJNb2NrLmNwcDog
QWRkZWQuCisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQZWVyQ29ubmVj
dGlvbkhhbmRsZXJNb2NrOjpjcmVhdGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQZWVyQ29ubmVj
dGlvbkhhbmRsZXJNb2NrOjpXZWJQZWVyQ29ubmVjdGlvbkhhbmRsZXJNb2NrKToKKyAgICAgICAg
KFdlYktpdDo6fldlYlBlZXJDb25uZWN0aW9uSGFuZGxlck1vY2spOgorICAgICAgICAoV2ViS2l0
OjpXZWJQZWVyQ29ubmVjdGlvbkhhbmRsZXJNb2NrOjppbml0aWFsaXplKToKKyAgICAgICAgKFdl
YktpdDo6V2ViUGVlckNvbm5lY3Rpb25IYW5kbGVyTW9jazo6cHJvZHVjZUluaXRpYWxPZmZlcik6
CisgICAgICAgIChXZWJLaXQ6OldlYlBlZXJDb25uZWN0aW9uSGFuZGxlck1vY2s6OmhhbmRsZUlu
aXRpYWxPZmZlcik6CisgICAgICAgIChXZWJLaXQ6OldlYlBlZXJDb25uZWN0aW9uSGFuZGxlck1v
Y2s6OnByb2Nlc3NTRFApOgorICAgICAgICAoV2ViS2l0OjpXZWJQZWVyQ29ubmVjdGlvbkhhbmRs
ZXJNb2NrOjpwcm9jZXNzUGVuZGluZ1N0cmVhbXMpOgorICAgICAgICAoV2ViS2l0OjpXZWJQZWVy
Q29ubmVjdGlvbkhhbmRsZXJNb2NrOjpzZW5kRGF0YVN0cmVhbU1lc3NhZ2UpOgorICAgICAgICAo
V2ViS2l0OjpXZWJQZWVyQ29ubmVjdGlvbkhhbmRsZXJNb2NrOjpzdG9wKToKKyAgICAgICAgKiBz
cmMvV2ViVXNlck1lZGlhQ2xpZW50TW9jay5jcHA6IFJlbmFtZWQgZnJvbSBUb29scy9EdW1wUmVu
ZGVyVHJlZS9jaHJvbWl1bS9XZWJVc2VyTWVkaWFDbGllbnRNb2NrLmNwcC4KKyAgICAgICAgKFdl
YktpdCk6CisgICAgICAgIChXZWJLaXQ6OldlYlVzZXJNZWRpYUNsaWVudE1vY2s6OmNyZWF0ZSk6
CisgICAgICAgIChXZWJLaXQ6OldlYlVzZXJNZWRpYUNsaWVudE1vY2s6OmluaXRpYWxpemUpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJVc2VyTWVkaWFDbGllbnRNb2NrOjpzZXRHZXRVc2VyTWVkaWFS
ZXN1bHQpOgorICAgICAgICAoV2ViS2l0OjpXZWJVc2VyTWVkaWFDbGllbnRNb2NrOjpyZXF1ZXN0
VXNlck1lZGlhKToKKyAgICAgICAgKFdlYktpdDo6V2ViVXNlck1lZGlhQ2xpZW50TW9jazo6Y2Fu
Y2VsVXNlck1lZGlhUmVxdWVzdCk6CisgICAgICAgICogc3JjL1dlYlVzZXJNZWRpYVJlcXVlc3Qu
Y3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJVc2VyTWVkaWFSZXF1ZXN0OjpyZXF1ZXN0U3VjY2Vl
ZGVkKToKKyAgICAgICAgKFdlYktpdDo6V2ViVXNlck1lZGlhUmVxdWVzdDo6cmVxdWVzdEZhaWxl
ZCk6CisgICAgICAgIChXZWJLaXQ6OldlYlVzZXJNZWRpYVJlcXVlc3Q6Om9wZXJhdG9yIFBhc3NS
ZWZQdHI8VXNlck1lZGlhUmVxdWVzdD4pOgorICAgICAgICAoV2ViS2l0KToKKwogMjAxMi0wMi0x
NCAgVGFrYXNoaSBUb3lvc2hpbWEgIDx0b3lvc2hpbUBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAg
UHJvdmlkZSBTb2NrZXRTdHJlYW1IYW5kbGVJbnRlcm5hbDo6dG9XZWJTb2NrZXRTdHJlYW1IYW5k
bGUoU29ja2V0U3RyZWFtSGFuZGxlKikuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJD
b3JlLmd5cGkgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKaW5kZXggMDYyMDQ1NjY0OGIy
YjBiMjc0NWJjYWM0ODY3MTYyMDFiNjU5OWRlZC4uMTNkMGI2ZDlkOWIxZmZmOGUxYjhjMGVjZGUy
Mjc0ZDE5OTBmODBhNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCisr
KyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQpAQCAtNDA0LDExICs0MDQsMTUgQEAKICAg
ICAgICAgICAgICdwbGF0Zm9ybS9tYWMvV2ViRm9udENhY2hlLmgnLAogICAgICAgICAgICAgJ3Bs
YXRmb3JtL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtQ2VudGVyLmNwcCcsCiAgICAgICAgICAgICAn
cGxhdGZvcm0vbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1DZW50ZXIuaCcsCisgICAgICAgICAgICAn
cGxhdGZvcm0vbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1DZW50ZXJNb2NrLmNwcCcsCisgICAgICAg
ICAgICAncGxhdGZvcm0vbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1DZW50ZXJNb2NrLmgnLAogICAg
ICAgICAgICAgJ3BsYXRmb3JtL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtQ29tcG9uZW50LmgnLAog
ICAgICAgICAgICAgJ3BsYXRmb3JtL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtRGVzY3JpcHRvci5o
JywKICAgICAgICAgICAgICdwbGF0Zm9ybS9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVNvdXJjZS5o
JywKICAgICAgICAgICAgICdwbGF0Zm9ybS9tZWRpYXN0cmVhbS9QZWVyQ29ubmVjdGlvbkhhbmRs
ZXIuaCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vbWVkaWFzdHJlYW0vUGVlckNvbm5lY3Rpb25I
YW5kbGVyQ2xpZW50LmgnLAorICAgICAgICAgICAgJ3BsYXRmb3JtL21lZGlhc3RyZWFtL1BlZXJD
b25uZWN0aW9uSGFuZGxlck1vY2suY3BwJywKKyAgICAgICAgICAgICdwbGF0Zm9ybS9tZWRpYXN0
cmVhbS9QZWVyQ29ubmVjdGlvbkhhbmRsZXJNb2NrLmgnLAogICAgICAgICAgICAgJ3BsYXRmb3Jt
L21vY2svRGV2aWNlT3JpZW50YXRpb25DbGllbnRNb2NrLmgnLAogICAgICAgICAgICAgJ3BsYXRm
b3JtL21vY2svR2VvbG9jYXRpb25DbGllbnRNb2NrLmgnLAogICAgICAgICAgICAgJ3BsYXRmb3Jt
L25ldHdvcmsvQXV0aGVudGljYXRpb25DaGFsbGVuZ2VCYXNlLmgnLApAQCAtMjU4Niw2ICsyNTkw
LDggQEAKICAgICAgICAgICAgICdtZWRpYXN0cmVhbS9QZWVyQ29ubmVjdGlvbi5oJywKICAgICAg
ICAgICAgICdtZWRpYXN0cmVhbS9TaWduYWxpbmdDYWxsYmFjay5oJywKICAgICAgICAgICAgICdt
ZWRpYXN0cmVhbS9Vc2VyTWVkaWFDbGllbnQuaCcsCisgICAgICAgICAgICAnbWVkaWFzdHJlYW0v
VXNlck1lZGlhQ2xpZW50TW9jay5jcHAnLAorICAgICAgICAgICAgJ21lZGlhc3RyZWFtL1VzZXJN
ZWRpYUNsaWVudE1vY2suaCcsCiAgICAgICAgICAgICAnbWVkaWFzdHJlYW0vVXNlck1lZGlhUmVx
dWVzdC5jcHAnLAogICAgICAgICAgICAgJ21lZGlhc3RyZWFtL1VzZXJNZWRpYVJlcXVlc3QuaCcs
CiAgICAgICAgICAgICAnbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb24uY3BwJywKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL21lZGlhc3RyZWFtL1BlZXJDb25uZWN0aW9uLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL21lZGlhc3RyZWFtL1BlZXJDb25uZWN0aW9uLmNwcAppbmRleCAwYjhiMDQ5Njgx
ODU0MTAxMDliMzczMWEyNTgyZjY3M2ZkN2RkZWRhLi5iYzgxYmI5ZGJlYWQ5ZTkzNWMwYWI5Mzlm
YjNmNDQwODNkMGM0NjdmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9tZWRpYXN0cmVhbS9Q
ZWVyQ29ubmVjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbWVkaWFzdHJlYW0vUGVlckNv
bm5lY3Rpb24uY3BwCkBAIC0xOTksNiArMTk5LDEyIEBAIHZvaWQgUGVlckNvbm5lY3Rpb246OmRp
ZENvbXBsZXRlSUNFUHJvY2Vzc2luZygpCiAgICAgY2hhbmdlUmVhZHlTdGF0ZShBQ1RJVkUpOwog
fQogCit2b2lkIFBlZXJDb25uZWN0aW9uOjpkaWRSZXN0YXJ0SUNFUHJvY2Vzc2luZygpCit7Cisg
ICAgQVNTRVJUKHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+aXNDb250ZXh0VGhyZWFkKCkpOwor
ICAgIGNoYW5nZVJlYWR5U3RhdGUoTkVHT1RJQVRJTkcpOworfQorCiB2b2lkIFBlZXJDb25uZWN0
aW9uOjpkaWRHZW5lcmF0ZVNEUChjb25zdCBTdHJpbmcmIHNkcCkKIHsKICAgICBBU1NFUlQoc2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCgpLT5pc0NvbnRleHRUaHJlYWQoKSk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9tZWRpYXN0cmVhbS9QZWVyQ29ubmVjdGlvbi5oIGIvU291cmNlL1dlYkNv
cmUvbWVkaWFzdHJlYW0vUGVlckNvbm5lY3Rpb24uaAppbmRleCBmZDJmMmZiMmQ0MjgyNmI2MzYw
MDE1NTZiMzZiM2FhZTczYmY1YzI0Li5lNGUzMjgxMGQ0ZDI3MjRmY2U2MzgxMWY2ZmRhOWE2ZmY3
MjU0MGMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9tZWRpYXN0cmVhbS9QZWVyQ29ubmVj
dGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL21lZGlhc3RyZWFtL1BlZXJDb25uZWN0aW9uLmgK
QEAgLTUzLDYgKzUzLDE0IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgUGVlckNvbm5l
Y3Rpb24gOiBwdWJsaWMgUmVmQ291bnRlZDxQZWVyQ29ubmVjdGlvbj4sIHB1YmxpYyBQZWVyQ29u
bmVjdGlvbkhhbmRsZXJDbGllbnQsIHB1YmxpYyBFdmVudFRhcmdldCwgcHVibGljIEFjdGl2ZURP
TU9iamVjdCB7CiBwdWJsaWM6CisgICAgLy8gTmFtZSBhbmQgdmFsdWVzIG9mIHRoZSBlbnVtIG11
c3QgbWF0Y2ggdGhlIGNvcnJlc3Nwb25kaW5nIGNvbnN0YW50cyBpbiB0aGUgUGVlckNvbm5lY3Rp
b24uaWRsIGZpbGUuCisgICAgZW51bSBSZWFkeVN0YXRlIHsKKyAgICAgICAgTkVXID0gMCwKKyAg
ICAgICAgTkVHT1RJQVRJTkcgPSAxLAorICAgICAgICBBQ1RJVkUgPSAyLAorICAgICAgICBDTE9T
RUQgPSAzCisgICAgfTsKKwogICAgIHN0YXRpYyBQYXNzUmVmUHRyPFBlZXJDb25uZWN0aW9uPiBj
cmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIGNvbnN0IFN0cmluZyYgc2VydmVyQ29uZmln
dXJhdGlvbiwgUGFzc1JlZlB0cjxTaWduYWxpbmdDYWxsYmFjaz4pOwogICAgIH5QZWVyQ29ubmVj
dGlvbigpOwogCkBAIC03NiwxMSArODQsMTEgQEAgcHVibGljOgogCiAgICAgLy8gUGVlckNvbm5l
Y3Rpb25IYW5kbGVyQ2xpZW50CiAgICAgdmlydHVhbCB2b2lkIGRpZENvbXBsZXRlSUNFUHJvY2Vz
c2luZygpOworICAgIHZpcnR1YWwgdm9pZCBkaWRSZXN0YXJ0SUNFUHJvY2Vzc2luZygpOwogICAg
IHZpcnR1YWwgdm9pZCBkaWRHZW5lcmF0ZVNEUChjb25zdCBTdHJpbmcmIHNkcCk7CiAgICAgdmly
dHVhbCB2b2lkIGRpZFJlY2VpdmVEYXRhU3RyZWFtTWVzc2FnZShjb25zdCBjaGFyKiBkYXRhLCBz
aXplX3QgbGVuZ3RoKTsKICAgICB2aXJ0dWFsIHZvaWQgZGlkQWRkUmVtb3RlU3RyZWFtKFBhc3NS
ZWZQdHI8TWVkaWFTdHJlYW1EZXNjcmlwdG9yPik7CiAgICAgdmlydHVhbCB2b2lkIGRpZFJlbW92
ZVJlbW90ZVN0cmVhbShNZWRpYVN0cmVhbURlc2NyaXB0b3IqKTsKLSAgICB2aXJ0dWFsIHZvaWQg
ZGlkQ2hhbmdlU3RhdGUoUmVhZHlTdGF0ZSBzdGF0ZSkgeyBjaGFuZ2VSZWFkeVN0YXRlKHN0YXRl
KTsgfQogCiAgICAgLy8gRXZlbnRUYXJnZXQKICAgICB2aXJ0dWFsIGNvbnN0IEF0b21pY1N0cmlu
ZyYgaW50ZXJmYWNlTmFtZSgpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbWVk
aWFzdHJlYW0vVXNlck1lZGlhQ2xpZW50TW9jay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9tZWRpYXN0
cmVhbS9Vc2VyTWVkaWFDbGllbnRNb2NrLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xYmZkNmUxYjEyZDFlMWQx
YzliMjU0OTVkOTY5OTVjMjdmZTY1MTVkCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNv
cmUvbWVkaWFzdHJlYW0vVXNlck1lZGlhQ2xpZW50TW9jay5jcHAKQEAgLTAsMCArMSw5MCBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiAgICBpbiB0
aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
CisgKiAgICBkaXN0cmlidXRpb24uCisgKiAzLiBOZWl0aGVyIHRoZSBuYW1lIG9mIEVyaWNzc29u
IG5vciB0aGUgbmFtZXMgb2YgaXRzIGNvbnRyaWJ1dG9ycworICogICAgbWF5IGJlIHVzZWQgdG8g
ZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbSB0aGlzCisgKiAgICBzb2Z0
d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09O
VFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIg
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAor
ICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKyNpbmNsdWRlICJjb25maWcuaCIKKworI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCisKKyNp
bmNsdWRlICJVc2VyTWVkaWFDbGllbnRNb2NrLmgiCisKKyNpbmNsdWRlICJNZWRpYVN0cmVhbVNv
dXJjZS5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK1Bhc3NSZWZQdHI8VXNlck1lZGlhQ2xp
ZW50TW9jaz4gVXNlck1lZGlhQ2xpZW50TW9jazo6Y3JlYXRlKCkKK3sKKyAgICByZXR1cm4gYWRv
cHRSZWYobmV3IFVzZXJNZWRpYUNsaWVudE1vY2soKSk7Cit9CisKK1VzZXJNZWRpYUNsaWVudE1v
Y2s6OlVzZXJNZWRpYUNsaWVudE1vY2soKQorICAgIDogbV9hbGxvd0F1ZGlvKGZhbHNlKSwgbV9h
bGxvd1ZpZGVvKGZhbHNlKQoreworfQorCit2b2lkIFVzZXJNZWRpYUNsaWVudE1vY2s6OnNldEdl
dFVzZXJNZWRpYVJlc3VsdChib29sIGFsbG93QXVkaW8sIGJvb2wgYWxsb3dWaWRlbykKK3sKKyAg
ICBtX2FsbG93QXVkaW8gPSBhbGxvd0F1ZGlvOworICAgIG1fYWxsb3dWaWRlbyA9IGFsbG93Vmlk
ZW87Cit9CisKK3ZvaWQgVXNlck1lZGlhQ2xpZW50TW9jazo6cmVxdWVzdFVzZXJNZWRpYShQYXNz
UmVmUHRyPFVzZXJNZWRpYVJlcXVlc3Q+IHBycFJlcXVlc3QsIGNvbnN0IE1lZGlhU3RyZWFtU291
cmNlVmVjdG9yJiwgY29uc3QgTWVkaWFTdHJlYW1Tb3VyY2VWZWN0b3ImKQoreworICAgIFJlZlB0
cjxVc2VyTWVkaWFSZXF1ZXN0PiByZXF1ZXN0ID0gcHJwUmVxdWVzdDsKKyAgICBBU1NFUlQoISFy
ZXF1ZXN0KTsKKworICAgIGlmICghbV9hbGxvd0F1ZGlvICYmICFtX2FsbG93VmlkZW8pIHsKKyAg
ICAgICAgcmVxdWVzdC0+ZmFpbCgpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgTWVk
aWFTdHJlYW1Tb3VyY2VWZWN0b3IgYXVkaW9Tb3VyY2VzLCB2aWRlb1NvdXJjZXM7CisKKyAgICBp
ZiAocmVxdWVzdC0+YXVkaW8oKSAmJiBtX2FsbG93QXVkaW8pIHsKKyAgICAgICAgU3RyaW5nIGlk
KCJtb2NrX2F1ZGlvX2RldmljZSIpOworICAgICAgICBTdHJpbmcgbmFtZSgiQXVkaW9DYXB0dXJl
Iik7CisgICAgICAgIGF1ZGlvU291cmNlcy5hcHBlbmQoTWVkaWFTdHJlYW1Tb3VyY2U6OmNyZWF0
ZShpZCwgTWVkaWFTdHJlYW1Tb3VyY2U6OlR5cGVBdWRpbywgbmFtZSkpOworICAgIH0KKworICAg
IGlmIChyZXF1ZXN0LT52aWRlbygpICYmIG1fYWxsb3dWaWRlbykgeworICAgICAgICBTdHJpbmcg
aWQoIm1vY2tfdmlkZW9fZGV2aWNlIik7CisgICAgICAgIFN0cmluZyBuYW1lKCJWaWRlb0NhcHR1
cmUiKTsKKyAgICAgICAgdmlkZW9Tb3VyY2VzLmFwcGVuZChNZWRpYVN0cmVhbVNvdXJjZTo6Y3Jl
YXRlKGlkLCBNZWRpYVN0cmVhbVNvdXJjZTo6VHlwZVZpZGVvLCBuYW1lKSk7CisgICAgfQorCisg
ICAgcmVxdWVzdC0+c3VjY2VlZChhdWRpb1NvdXJjZXMsIHZpZGVvU291cmNlcyk7Cit9CisKK3Zv
aWQgVXNlck1lZGlhQ2xpZW50TW9jazo6Y2FuY2VsVXNlck1lZGlhUmVxdWVzdChVc2VyTWVkaWFS
ZXF1ZXN0KikKK3sKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5B
QkxFKE1FRElBX1NUUkVBTSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL21lZGlhc3RyZWFt
L1VzZXJNZWRpYUNsaWVudE1vY2suaCBiL1NvdXJjZS9XZWJDb3JlL21lZGlhc3RyZWFtL1VzZXJN
ZWRpYUNsaWVudE1vY2suaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43N2FjMzU2NjUyYmE1MDBjYzc3NTJiMzY0MTBh
ZmY0NjM3NzBjYjJhCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvbWVkaWFzdHJl
YW0vVXNlck1lZGlhQ2xpZW50TW9jay5oCkBAIC0wLDAgKzEsNjYgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMTIgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogICAgaW4gdGhlIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogICAgZGlzdHJp
YnV0aW9uLgorICogMy4gTmVpdGhlciB0aGUgbmFtZSBvZiBFcmljc3NvbiBub3IgdGhlIG5hbWVz
IG9mIGl0cyBjb250cmlidXRvcnMKKyAqICAgIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJv
bW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20gdGhpcworICogICAgc29mdHdhcmUgd2l0aG91dCBz
cGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICog
IkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFVz
ZXJNZWRpYUNsaWVudE1vY2tfaAorI2RlZmluZSBVc2VyTWVkaWFDbGllbnRNb2NrX2gKKworI2lm
IEVOQUJMRShNRURJQV9TVFJFQU0pCisKKyNpbmNsdWRlICJVc2VyTWVkaWFDbGllbnQuaCIKKwor
I2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CisjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4K
KworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBVc2VyTWVkaWFDbGllbnRNb2NrIDogcHVi
bGljIFJlZkNvdW50ZWQ8VXNlck1lZGlhQ2xpZW50TW9jaz4sIHB1YmxpYyBVc2VyTWVkaWFDbGll
bnQgeworcHVibGljOgorICAgIHN0YXRpYyBQYXNzUmVmUHRyPFVzZXJNZWRpYUNsaWVudE1vY2s+
IGNyZWF0ZSgpOworICAgIH5Vc2VyTWVkaWFDbGllbnRNb2NrKCkgeyB9CisKKyAgICB2b2lkIHNl
dEdldFVzZXJNZWRpYVJlc3VsdChib29sIGFsbG93QXVkaW8sIGJvb2wgYWxsb3dWaWRlbyk7CisK
KyAgICAvLyBVc2VyTWVkaWFDbGllbnQKKyAgICB2aXJ0dWFsIHZvaWQgcGFnZURlc3Ryb3llZCgp
IHsgfQorICAgIHZpcnR1YWwgdm9pZCByZXF1ZXN0VXNlck1lZGlhKFBhc3NSZWZQdHI8VXNlck1l
ZGlhUmVxdWVzdD4sIGNvbnN0IE1lZGlhU3RyZWFtU291cmNlVmVjdG9yJiBhdWRpb1NvdXJjZXMs
ICBjb25zdCBNZWRpYVN0cmVhbVNvdXJjZVZlY3RvciYgdmlkZW9Tb3VyY2VzKTsKKyAgICB2aXJ0
dWFsIHZvaWQgY2FuY2VsVXNlck1lZGlhUmVxdWVzdChVc2VyTWVkaWFSZXF1ZXN0Kik7CisKK3By
aXZhdGU6CisgICAgVXNlck1lZGlhQ2xpZW50TW9jaygpOworCisgICAgYm9vbCBtX2FsbG93QXVk
aW87CisgICAgYm9vbCBtX2FsbG93VmlkZW87Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CisKKyNlbmRpZiAvLyBFTkFCTEUoTUVESUFfU1RSRUFNKQorCisjZW5kaWYgLy8gVXNlck1lZGlh
Q2xpZW50TW9ja19oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0
cmVhbS9NZWRpYVN0cmVhbUNlbnRlck1vY2suY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1DZW50ZXJNb2NrLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wM2Q0YmY1
YWYxMWVhNmYyY2Q4NWQzZGRmNzhlMGZhMWNmYTMxY2E5Ci0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1DZW50ZXJNb2NrLmNw
cApAQCAtMCwwICsxLDgxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEdvb2dsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIKKyAqICAgIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqICAgIGRpc3RyaWJ1dGlvbi4KKyAqIDMuIE5laXRoZXIg
dGhlIG5hbWUgb2YgR29vZ2xlIEluYyBub3IgdGhlIG5hbWVzIG9mIGl0cyBjb250cmlidXRvcnMK
KyAqICAgIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVk
IGZyb20gdGhpcworICogICAgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVu
IHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09Q
WVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQg
VE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNpZiBFTkFC
TEUoTUVESUFfU1RSRUFNKQorCisjaW5jbHVkZSAiTWVkaWFTdHJlYW1DZW50ZXJNb2NrLmgiCisK
KyNpbmNsdWRlICJNZWRpYVN0cmVhbUNlbnRlci5oIgorI2luY2x1ZGUgIk1lZGlhU3RyZWFtRGVz
Y3JpcHRvci5oIgorI2luY2x1ZGUgIk1lZGlhU3RyZWFtU291cmNlLmgiCisjaW5jbHVkZSA8d3Rm
L1Bhc3NSZWZQdHIuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitQYXNzUmVmUHRyPE1lZGlh
U3RyZWFtQ2VudGVyTW9jaz4gTWVkaWFTdHJlYW1DZW50ZXJNb2NrOjpjcmVhdGUoKQoreworICAg
IHJldHVybiBhZG9wdFJlZihuZXcgTWVkaWFTdHJlYW1DZW50ZXJNb2NrKCkpOworfQorCitNZWRp
YVN0cmVhbUNlbnRlck1vY2s6Ok1lZGlhU3RyZWFtQ2VudGVyTW9jaygpCit7Cit9CisKK01lZGlh
U3RyZWFtQ2VudGVyTW9jazo6fk1lZGlhU3RyZWFtQ2VudGVyTW9jaygpCit7Cit9CisKK3ZvaWQg
TWVkaWFTdHJlYW1DZW50ZXJNb2NrOjpxdWVyeU1lZGlhU3RyZWFtU291cmNlcyhQYXNzUmVmUHRy
PE1lZGlhU3RyZWFtU291cmNlc1F1ZXJ5Q2xpZW50PiBxdWVyeUNsaWVudCkKK3sKKyAgICBNZWRp
YVN0cmVhbVNvdXJjZVZlY3RvciBhdWRpb1NvdXJjZXMsIHZpZGVvU291cmNlczsKKyAgICBxdWVy
eUNsaWVudC0+ZGlkQ29tcGxldGVRdWVyeShhdWRpb1NvdXJjZXMsIHZpZGVvU291cmNlcyk7Cit9
CisKK3ZvaWQgTWVkaWFTdHJlYW1DZW50ZXJNb2NrOjpkaWRFbmFibGVNZWRpYVN0cmVhbVRyYWNr
KFBhc3NSZWZQdHI8TWVkaWFTdHJlYW1EZXNjcmlwdG9yPiwgUGFzc1JlZlB0cjxNZWRpYVN0cmVh
bUNvbXBvbmVudD4pCit7Cit9CisKK3ZvaWQgTWVkaWFTdHJlYW1DZW50ZXJNb2NrOjpkaWREaXNh
YmxlTWVkaWFTdHJlYW1UcmFjayhQYXNzUmVmUHRyPE1lZGlhU3RyZWFtRGVzY3JpcHRvcj4sIFBh
c3NSZWZQdHI8TWVkaWFTdHJlYW1Db21wb25lbnQ+KQoreworfQorCit2b2lkIE1lZGlhU3RyZWFt
Q2VudGVyTW9jazo6ZGlkU3RvcExvY2FsTWVkaWFTdHJlYW0oUGFzc1JlZlB0cjxNZWRpYVN0cmVh
bURlc2NyaXB0b3I+KQoreworfQorCit2b2lkIE1lZGlhU3RyZWFtQ2VudGVyTW9jazo6ZGlkQ29u
c3RydWN0TWVkaWFTdHJlYW0oUGFzc1JlZlB0cjxNZWRpYVN0cmVhbURlc2NyaXB0b3I+KQorewor
fQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoTUVESUFfU1RS
RUFNKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vTWVk
aWFTdHJlYW1DZW50ZXJNb2NrLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVh
bS9NZWRpYVN0cmVhbUNlbnRlck1vY2suaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41NGNmYjUwNWRlZjNjM2FmNzQw
YTM4ZTdjYTFlZGQ0ZGM2MmIxN2VjCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1DZW50ZXJNb2NrLmgKQEAgLTAsMCArMSw2
NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoK
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiAg
ICBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlCisgKiAgICBkaXN0cmlidXRpb24uCisgKiAzLiBOZWl0aGVyIHRoZSBuYW1lIG9mIEVy
aWNzc29uIG5vciB0aGUgbmFtZXMgb2YgaXRzIGNvbnRyaWJ1dG9ycworICogICAgbWF5IGJlIHVz
ZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbSB0aGlzCisgKiAg
ICBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBB
TkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJ
Q1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlS
SUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKyNpZm5kZWYgTWVkaWFTdHJlYW1DZW50ZXJNb2NrX2gKKyNkZWZpbmUgTWVkaWFT
dHJlYW1DZW50ZXJNb2NrX2gKKworI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCisKKyNpbmNsdWRl
IDx3dGYvUGFzc1JlZlB0ci5oPgorI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CisKK25hbWVz
cGFjZSBXZWJDb3JlIHsKKworY2xhc3MgTWVkaWFTdHJlYW1Db21wb25lbnQ7CitjbGFzcyBNZWRp
YVN0cmVhbURlc2NyaXB0b3I7CitjbGFzcyBNZWRpYVN0cmVhbVNvdXJjZXNRdWVyeUNsaWVudDsK
KworY2xhc3MgTWVkaWFTdHJlYW1DZW50ZXJNb2NrIDogcHVibGljIFJlZkNvdW50ZWQ8TWVkaWFT
dHJlYW1DZW50ZXJNb2NrPiB7CisgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoTWVkaWFTdHJlYW1D
ZW50ZXJNb2NrKTsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKK3B1YmxpYzoKKyAgICBz
dGF0aWMgUGFzc1JlZlB0cjxNZWRpYVN0cmVhbUNlbnRlck1vY2s+IGNyZWF0ZSgpOworICAgIHZp
cnR1YWwgfk1lZGlhU3RyZWFtQ2VudGVyTW9jaygpOworCisgICAgdm9pZCBxdWVyeU1lZGlhU3Ry
ZWFtU291cmNlcyhQYXNzUmVmUHRyPE1lZGlhU3RyZWFtU291cmNlc1F1ZXJ5Q2xpZW50Pik7Cisg
ICAgdm9pZCBkaWRFbmFibGVNZWRpYVN0cmVhbVRyYWNrKFBhc3NSZWZQdHI8TWVkaWFTdHJlYW1E
ZXNjcmlwdG9yPiwgUGFzc1JlZlB0cjxNZWRpYVN0cmVhbUNvbXBvbmVudD4pOworICAgIHZvaWQg
ZGlkRGlzYWJsZU1lZGlhU3RyZWFtVHJhY2soUGFzc1JlZlB0cjxNZWRpYVN0cmVhbURlc2NyaXB0
b3I+LCBQYXNzUmVmUHRyPE1lZGlhU3RyZWFtQ29tcG9uZW50Pik7CisgICAgdm9pZCBkaWRTdG9w
TG9jYWxNZWRpYVN0cmVhbShQYXNzUmVmUHRyPE1lZGlhU3RyZWFtRGVzY3JpcHRvcj4pOworICAg
IHZvaWQgZGlkQ29uc3RydWN0TWVkaWFTdHJlYW0oUGFzc1JlZlB0cjxNZWRpYVN0cmVhbURlc2Ny
aXB0b3I+KTsKKworcHJpdmF0ZToKKyAgICBNZWRpYVN0cmVhbUNlbnRlck1vY2soKTsKK307CisK
K30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShNRURJQV9TVFJFQU0p
CisKKyNlbmRpZiAvLyBNZWRpYVN0cmVhbUNlbnRlck1vY2tfaApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vUGVlckNvbm5lY3Rpb25IYW5kbGVyQ2xpZW50
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9QZWVyQ29ubmVjdGlvbkhh
bmRsZXJDbGllbnQuaAppbmRleCBlNjdlZjNhNTU4NDAzYTliODVkNzRhZGU3MTI0NTM4M2E2MmM2
ODdlLi5kYmFkNGIyYjBiM2IxNmQ5ZWIzYTBjMDNjYzg2ZWMwNjZkZjJmMjY3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9QZWVyQ29ubmVjdGlvbkhhbmRs
ZXJDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9QZWVy
Q29ubmVjdGlvbkhhbmRsZXJDbGllbnQuaApAQCAtNDIsMjIgKzQyLDE0IEBAIGNsYXNzIE1lZGlh
U3RyZWFtRGVzY3JpcHRvcjsKIAogY2xhc3MgUGVlckNvbm5lY3Rpb25IYW5kbGVyQ2xpZW50IHsK
IHB1YmxpYzoKLSAgICAvLyBOYW1lIGFuZCB2YWx1ZXMgb2YgdGhlIGVudW0gbXVzdCBtYXRjaCB0
aGUgY29ycmVzc3BvbmRpbmcgY29uc3RhbnRzIGluIHRoZSBQZWVyQ29ubmVjdGlvbi5pZGwgZmls
ZS4KLSAgICBlbnVtIFJlYWR5U3RhdGUgewotICAgICAgICBORVcgPSAwLAotICAgICAgICBORUdP
VElBVElORyA9IDEsCi0gICAgICAgIEFDVElWRSA9IDIsCi0gICAgICAgIENMT1NFRCA9IDMKLSAg
ICB9OwotCiAgICAgdmlydHVhbCB+UGVlckNvbm5lY3Rpb25IYW5kbGVyQ2xpZW50KCkgeyB9CiAK
ICAgICB2aXJ0dWFsIHZvaWQgZGlkQ29tcGxldGVJQ0VQcm9jZXNzaW5nKCkgPSAwOworICAgIHZp
cnR1YWwgdm9pZCBkaWRSZXN0YXJ0SUNFUHJvY2Vzc2luZygpID0gMDsKICAgICB2aXJ0dWFsIHZv
aWQgZGlkR2VuZXJhdGVTRFAoY29uc3QgU3RyaW5nJiBzZHApID0gMDsKICAgICB2aXJ0dWFsIHZv
aWQgZGlkUmVjZWl2ZURhdGFTdHJlYW1NZXNzYWdlKGNvbnN0IGNoYXIqIGRhdGEsIHNpemVfdCBs
ZW5ndGgpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZGlkQWRkUmVtb3RlU3RyZWFtKFBhc3NSZWZQ
dHI8TWVkaWFTdHJlYW1EZXNjcmlwdG9yPikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBkaWRSZW1v
dmVSZW1vdGVTdHJlYW0oTWVkaWFTdHJlYW1EZXNjcmlwdG9yKikgPSAwOwotICAgIHZpcnR1YWwg
dm9pZCBkaWRDaGFuZ2VTdGF0ZShSZWFkeVN0YXRlKSA9IDA7CiB9OwogCiB9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVh
bS9QZWVyQ29ubmVjdGlvbkhhbmRsZXJNb2NrLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21lZGlhc3RyZWFtL1BlZXJDb25uZWN0aW9uSGFuZGxlck1vY2suY3BwCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmYw
NTNlNjVhZGJjMTM5OWZiMjEwZGFjMmM0ZmJiYTI2ZGNkODI1NTcKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9QZWVyQ29ubmVjdGlvbkhhbmRs
ZXJNb2NrLmNwcApAQCAtMCwwICsxLDg1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEdv
b2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIKKyAqICAgIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqICAgIGRpc3RyaWJ1dGlvbi4KKyAqIDMu
IE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYyBub3IgdGhlIG5hbWVzIG9mIGl0cyBjb250
cmlidXRvcnMKKyAqICAgIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0
cyBkZXJpdmVkIGZyb20gdGhpcworICogICAgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlv
ciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAq
IExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisK
KyNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQorCisjaW5jbHVkZSAiUGVlckNvbm5lY3Rpb25IYW5k
bGVyTW9jay5oIgorCisjaW5jbHVkZSAiTWVkaWFTdHJlYW1DZW50ZXIuaCIKKyNpbmNsdWRlICJN
ZWRpYVN0cmVhbURlc2NyaXB0b3IuaCIKKyNpbmNsdWRlICJNZWRpYVN0cmVhbVNvdXJjZS5oIgor
I2luY2x1ZGUgIlNlY3VyaXR5T3JpZ2luLmgiCisjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4K
KworbmFtZXNwYWNlIFdlYkNvcmUgeworCitQYXNzUmVmUHRyPFBlZXJDb25uZWN0aW9uSGFuZGxl
ck1vY2s+IFBlZXJDb25uZWN0aW9uSGFuZGxlck1vY2s6OmNyZWF0ZShQZWVyQ29ubmVjdGlvbkhh
bmRsZXJDbGllbnQqIGNsaWVudCwgY29uc3QgU3RyaW5nJiBzZXJ2ZXJDb25maWd1cmF0aW9uLCBQ
YXNzUmVmUHRyPFNlY3VyaXR5T3JpZ2luPiBzZWN1cml0eU9yaWdpbikKK3sKKyAgICByZXR1cm4g
YWRvcHRSZWYobmV3IFBlZXJDb25uZWN0aW9uSGFuZGxlck1vY2soY2xpZW50LCBzZXJ2ZXJDb25m
aWd1cmF0aW9uLCBzZWN1cml0eU9yaWdpbikpOworfQorCitQZWVyQ29ubmVjdGlvbkhhbmRsZXJN
b2NrOjpQZWVyQ29ubmVjdGlvbkhhbmRsZXJNb2NrKFBlZXJDb25uZWN0aW9uSGFuZGxlckNsaWVu
dCogY2xpZW50LCBjb25zdCBTdHJpbmcmIHNlcnZlckNvbmZpZ3VyYXRpb24sIFBhc3NSZWZQdHI8
U2VjdXJpdHlPcmlnaW4+IHNlY3VyaXR5T3JpZ2luKQorICAgIDogbV9jbGllbnQoY2xpZW50KQor
eworfQorCitQZWVyQ29ubmVjdGlvbkhhbmRsZXJNb2NrOjp+UGVlckNvbm5lY3Rpb25IYW5kbGVy
TW9jaygpCit7Cit9CisKK3ZvaWQgUGVlckNvbm5lY3Rpb25IYW5kbGVyTW9jazo6cHJvZHVjZUlu
aXRpYWxPZmZlcihjb25zdCBNZWRpYVN0cmVhbURlc2NyaXB0b3JWZWN0b3ImIHBlbmRpbmdBZGRT
dHJlYW1zKQoreworfQorCit2b2lkIFBlZXJDb25uZWN0aW9uSGFuZGxlck1vY2s6OmhhbmRsZUlu
aXRpYWxPZmZlcihjb25zdCBTdHJpbmcmIHNkcCkKK3sKK30KKwordm9pZCBQZWVyQ29ubmVjdGlv
bkhhbmRsZXJNb2NrOjpwcm9jZXNzU0RQKGNvbnN0IFN0cmluZyYgc2RwKQoreworfQorCit2b2lk
IFBlZXJDb25uZWN0aW9uSGFuZGxlck1vY2s6OnByb2Nlc3NQZW5kaW5nU3RyZWFtcyhjb25zdCBN
ZWRpYVN0cmVhbURlc2NyaXB0b3JWZWN0b3ImIHBlbmRpbmdBZGRTdHJlYW1zLCBjb25zdCBNZWRp
YVN0cmVhbURlc2NyaXB0b3JWZWN0b3ImIHBlbmRpbmdSZW1vdmVTdHJlYW1zKQoreworfQorCit2
b2lkIFBlZXJDb25uZWN0aW9uSGFuZGxlck1vY2s6OnNlbmREYXRhU3RyZWFtTWVzc2FnZShjb25z
dCBjaGFyKiBkYXRhLCBzaXplX3QgbGVuZ3RoKQoreworfQorCit2b2lkIFBlZXJDb25uZWN0aW9u
SGFuZGxlck1vY2s6OnN0b3AoKQoreworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNl
bmRpZiAvLyBFTkFCTEUoTUVESUFfU1RSRUFNKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbWVkaWFzdHJlYW0vUGVlckNvbm5lY3Rpb25IYW5kbGVyTW9jay5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vUGVlckNvbm5lY3Rpb25IYW5kbGVyTW9jay5o
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLmI5YTk5MjQ2ZjdiZDg0YmIxMzRiZDE5M2JjZDhlYmNiMDkyYTY4YTIKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9QZWVy
Q29ubmVjdGlvbkhhbmRsZXJNb2NrLmgKQEAgLTAsMCArMSw2OSBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAxMiBFcmljc3NvbiBBQi4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogICAgaW4gdGhlIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogICAgZGlzdHJp
YnV0aW9uLgorICogMy4gTmVpdGhlciB0aGUgbmFtZSBvZiBFcmljc3NvbiBub3IgdGhlIG5hbWVz
IG9mIGl0cyBjb250cmlidXRvcnMKKyAqICAgIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJv
bW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20gdGhpcworICogICAgc29mdHdhcmUgd2l0aG91dCBz
cGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICog
IkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFBl
ZXJDb25uZWN0aW9uSGFuZGxlck1vY2tfaAorI2RlZmluZSBQZWVyQ29ubmVjdGlvbkhhbmRsZXJN
b2NrX2gKKworI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCisKKyNpbmNsdWRlICJNZWRpYVN0cmVh
bURlc2NyaXB0b3IuaCIKKyNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgorI2luY2x1ZGUgPHd0
Zi9SZWZDb3VudGVkLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgUGVlckNvbm5l
Y3Rpb25IYW5kbGVyQ2xpZW50OworY2xhc3MgU2VjdXJpdHlPcmlnaW47CisKK2NsYXNzIFBlZXJD
b25uZWN0aW9uSGFuZGxlck1vY2sgOiBwdWJsaWMgUmVmQ291bnRlZDxQZWVyQ29ubmVjdGlvbkhh
bmRsZXJNb2NrPiB7CisgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoUGVlckNvbm5lY3Rpb25IYW5k
bGVyTW9jayk7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CitwdWJsaWM6CisgICAgc3Rh
dGljIFBhc3NSZWZQdHI8UGVlckNvbm5lY3Rpb25IYW5kbGVyTW9jaz4gY3JlYXRlKFBlZXJDb25u
ZWN0aW9uSGFuZGxlckNsaWVudCosIGNvbnN0IFN0cmluZyYgc2VydmVyQ29uZmlndXJhdGlvbiwg
UGFzc1JlZlB0cjxTZWN1cml0eU9yaWdpbj4pOworICAgIH5QZWVyQ29ubmVjdGlvbkhhbmRsZXJN
b2NrKCk7CisKKyAgICB2b2lkIHByb2R1Y2VJbml0aWFsT2ZmZXIoY29uc3QgTWVkaWFTdHJlYW1E
ZXNjcmlwdG9yVmVjdG9yJiBwZW5kaW5nQWRkU3RyZWFtcyk7CisgICAgdm9pZCBoYW5kbGVJbml0
aWFsT2ZmZXIoY29uc3QgU3RyaW5nJiBzZHApOworICAgIHZvaWQgcHJvY2Vzc1NEUChjb25zdCBT
dHJpbmcmIHNkcCk7CisgICAgdm9pZCBwcm9jZXNzUGVuZGluZ1N0cmVhbXMoY29uc3QgTWVkaWFT
dHJlYW1EZXNjcmlwdG9yVmVjdG9yJiBwZW5kaW5nQWRkU3RyZWFtcywgY29uc3QgTWVkaWFTdHJl
YW1EZXNjcmlwdG9yVmVjdG9yJiBwZW5kaW5nUmVtb3ZlU3RyZWFtcyk7CisgICAgdm9pZCBzZW5k
RGF0YVN0cmVhbU1lc3NhZ2UoY29uc3QgY2hhciogZGF0YSwgc2l6ZV90IGxlbmd0aCk7CisgICAg
dm9pZCBzdG9wKCk7CisKK3ByaXZhdGU6CisgICAgUGVlckNvbm5lY3Rpb25IYW5kbGVyTW9jayhQ
ZWVyQ29ubmVjdGlvbkhhbmRsZXJDbGllbnQqLCBjb25zdCBTdHJpbmcmIHNlcnZlckNvbmZpZ3Vy
YXRpb24sIFBhc3NSZWZQdHI8U2VjdXJpdHlPcmlnaW4+KTsKKworICAgIFBlZXJDb25uZWN0aW9u
SGFuZGxlckNsaWVudCogbV9jbGllbnQ7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisK
KyNlbmRpZiAvLyBFTkFCTEUoTUVESUFfU1RSRUFNKQorCisjZW5kaWYgLy8gUGVlckNvbm5lY3Rp
b25IYW5kbGVyTW9ja19oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL1dlYktp
dC5neXAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL1dlYktpdC5neXAKaW5kZXggYTQxYzZkMDcz
ODYzMTA1MjhkOTM1MTliODQ4NjhlYzUzYmE3ZDhiNi4uZjhmZWJjYTc1ZDY4YWIyYTM0MTEyN2Qw
NGQ5M2ViYzVkODI2YWY4ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9XZWJL
aXQuZ3lwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5cApAQCAtMjY1LDYg
KzI2NSw3IEBACiAgICAgICAgICAgICAgICAgJ3B1YmxpYy9XZWJUZXh0UnVuLmgnLAogICAgICAg
ICAgICAgICAgICdwdWJsaWMvV2ViVVJMTG9hZGVyT3B0aW9ucy5oJywKICAgICAgICAgICAgICAg
ICAncHVibGljL1dlYlVzZXJNZWRpYUNsaWVudC5oJywKKyAgICAgICAgICAgICAgICAncHVibGlj
L1dlYlVzZXJNZWRpYUNsaWVudE1vY2suaCcsCiAgICAgICAgICAgICAgICAgJ3B1YmxpYy9XZWJV
c2VyTWVkaWFSZXF1ZXN0LmgnLAogICAgICAgICAgICAgICAgICdwdWJsaWMvV2ViVmlldy5oJywK
ICAgICAgICAgICAgICAgICAncHVibGljL1dlYlZpZXdDbGllbnQuaCcsCkBAIC0zMTYsNiArMzE3
LDcgQEAKICAgICAgICAgICAgICAgICAncHVibGljL3BsYXRmb3JtL1dlYkxheWVyVHJlZVZpZXdD
bGllbnQuaCcsCiAgICAgICAgICAgICAgICAgJ3B1YmxpYy9wbGF0Zm9ybS9XZWJMb2NhbGl6ZWRT
dHJpbmcuaCcsCiAgICAgICAgICAgICAgICAgJ3B1YmxpYy9wbGF0Zm9ybS9XZWJNZWRpYVN0cmVh
bUNlbnRlci5oJywKKyAgICAgICAgICAgICAgICAncHVibGljL3BsYXRmb3JtL1dlYk1lZGlhU3Ry
ZWFtQ2VudGVyTW9jay5oJywKICAgICAgICAgICAgICAgICAncHVibGljL3BsYXRmb3JtL1dlYk1l
ZGlhU3RyZWFtQ29tcG9uZW50LmgnLAogICAgICAgICAgICAgICAgICdwdWJsaWMvcGxhdGZvcm0v
V2ViTWVkaWFTdHJlYW1EZXNjcmlwdG9yLmgnLAogICAgICAgICAgICAgICAgICdwdWJsaWMvcGxh
dGZvcm0vV2ViTWVkaWFTdHJlYW1Tb3VyY2UuaCcsCkBAIC0zMjMsNiArMzI1LDcgQEAKICAgICAg
ICAgICAgICAgICAncHVibGljL3BsYXRmb3JtL1dlYk5vbkNvcHlhYmxlLmgnLAogICAgICAgICAg
ICAgICAgICdwdWJsaWMvcGxhdGZvcm0vV2ViUGVlckNvbm5lY3Rpb25IYW5kbGVyLmgnLAogICAg
ICAgICAgICAgICAgICdwdWJsaWMvcGxhdGZvcm0vV2ViUGVlckNvbm5lY3Rpb25IYW5kbGVyQ2xp
ZW50LmgnLAorICAgICAgICAgICAgICAgICdwdWJsaWMvcGxhdGZvcm0vV2ViUGVlckNvbm5lY3Rp
b25IYW5kbGVyTW9jay5oJywKICAgICAgICAgICAgICAgICAncHVibGljL3BsYXRmb3JtL1dlYlBv
aW50LmgnLAogICAgICAgICAgICAgICAgICdwdWJsaWMvcGxhdGZvcm0vV2ViUHJpdmF0ZU93blB0
ci5oJywKICAgICAgICAgICAgICAgICAncHVibGljL3BsYXRmb3JtL1dlYlByaXZhdGVQdHIuaCcs
CkBAIC00NTUsNiArNDU4LDggQEAKICAgICAgICAgICAgICAgICAnc3JjL1BhZ2VPdmVybGF5Lmgn
LAogICAgICAgICAgICAgICAgICdzcmMvUGFnZU92ZXJsYXlMaXN0LmNwcCcsCiAgICAgICAgICAg
ICAgICAgJ3NyYy9QYWdlT3ZlcmxheUxpc3QuaCcsCisgICAgICAgICAgICAgICAgJ3NyYy9QZWVy
Q29ubmVjdGlvbkhhbmRsZXJDbGllbnRCcmlkZ2UuY3BwJywKKyAgICAgICAgICAgICAgICAnc3Jj
L1BlZXJDb25uZWN0aW9uSGFuZGxlckNsaWVudEJyaWRnZS5oJywKICAgICAgICAgICAgICAgICAn
c3JjL1BsYXRmb3JtTWVzc2FnZVBvcnRDaGFubmVsLmNwcCcsCiAgICAgICAgICAgICAgICAgJ3Ny
Yy9QbGF0Zm9ybU1lc3NhZ2VQb3J0Q2hhbm5lbC5oJywKICAgICAgICAgICAgICAgICAnc3JjL1Bs
YXRmb3JtU3VwcG9ydC5jcHAnLApAQCAtNjAxLDYgKzYwNiw3IEBACiAgICAgICAgICAgICAgICAg
J3NyYy9XZWJNZWRpYUVsZW1lbnQuY3BwJywKICAgICAgICAgICAgICAgICAnc3JjL1dlYk1lZGlh
UGxheWVyQ2xpZW50SW1wbC5jcHAnLAogICAgICAgICAgICAgICAgICdzcmMvV2ViTWVkaWFQbGF5
ZXJDbGllbnRJbXBsLmgnLAorICAgICAgICAgICAgICAgICdzcmMvV2ViTWVkaWFTdHJlYW1DZW50
ZXJNb2NrLmNwcCcsCiAgICAgICAgICAgICAgICAgJ3NyYy9XZWJNZWRpYVN0cmVhbUNvbXBvbmVu
dC5jcHAnLAogICAgICAgICAgICAgICAgICdzcmMvV2ViTWVkaWFTdHJlYW1EZXNjcmlwdG9yLmNw
cCcsCiAgICAgICAgICAgICAgICAgJ3NyYy9XZWJNZWRpYVN0cmVhbVJlZ2lzdHJ5LmNwcCcsCkBA
IC02MTksNiArNjI1LDcgQEAKICAgICAgICAgICAgICAgICAnc3JjL1dlYlBhc3N3b3JkRm9ybURh
dGEuY3BwJywKICAgICAgICAgICAgICAgICAnc3JjL1dlYlBhc3N3b3JkRm9ybVV0aWxzLmNwcCcs
CiAgICAgICAgICAgICAgICAgJ3NyYy9XZWJQYXNzd29yZEZvcm1VdGlscy5oJywKKyAgICAgICAg
ICAgICAgICAnc3JjL1dlYlBlZXJDb25uZWN0aW9uSGFuZGxlck1vY2suY3BwJywKICAgICAgICAg
ICAgICAgICAnc3JjL1dlYlBlcmZvcm1hbmNlLmNwcCcsCiAgICAgICAgICAgICAgICAgJ3NyYy9X
ZWJQbHVnaW5Db250YWluZXJJbXBsLmgnLAogICAgICAgICAgICAgICAgICdzcmMvV2ViUGx1Z2lu
Q29udGFpbmVySW1wbC5jcHAnLApAQCAtNjY3LDYgKzY3NCw3IEBACiAgICAgICAgICAgICAgICAg
J3NyYy9XZWJVUkxSZXNwb25zZS5jcHAnLAogICAgICAgICAgICAgICAgICdzcmMvV2ViVVJMUmVz
cG9uc2VQcml2YXRlLmgnLAogICAgICAgICAgICAgICAgICdzcmMvV2ViVVJMRXJyb3IuY3BwJywK
KyAgICAgICAgICAgICAgICAnc3JjL1dlYlVzZXJNZWRpYUNsaWVudE1vY2suY3BwJywKICAgICAg
ICAgICAgICAgICAnc3JjL1dlYlVzZXJNZWRpYVJlcXVlc3QuY3BwJywKICAgICAgICAgICAgICAg
ICAnc3JjL1dlYlZpZXdJbXBsLmNwcCcsCiAgICAgICAgICAgICAgICAgJ3NyYy9XZWJWaWV3SW1w
bC5oJywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vYnJpZGdlL1BlZXJDb25u
ZWN0aW9uSGFuZGxlckludGVybmFsLmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vYnJpZGdl
L1BlZXJDb25uZWN0aW9uSGFuZGxlckludGVybmFsLmNwcAppbmRleCBjZmMzMzU4NGFhMDIyNzQz
ZGJhYzExOTMzNDY3ZGFhOThkYmM1NzRjLi5mMzQzZTIyODBhOWZlYWI2ZGUxZDc0N2Y5MzQ4YTY5
ZDc1ZGQ3MjNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL2JyaWRnZS9QZWVy
Q29ubmVjdGlvbkhhbmRsZXJJbnRlcm5hbC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1
bS9icmlkZ2UvUGVlckNvbm5lY3Rpb25IYW5kbGVySW50ZXJuYWwuY3BwCkBAIC05OCwzMiArOTgs
MzIgQEAgdm9pZCBQZWVyQ29ubmVjdGlvbkhhbmRsZXJJbnRlcm5hbDo6c3RvcCgpCiAKIHZvaWQg
UGVlckNvbm5lY3Rpb25IYW5kbGVySW50ZXJuYWw6OmRpZENvbXBsZXRlSUNFUHJvY2Vzc2luZygp
CiB7Ci0gICAgaWYgKG1fd2ViSGFuZGxlcikKLSAgICAgICAgbV9jbGllbnQtPmRpZENvbXBsZXRl
SUNFUHJvY2Vzc2luZygpOworICAgIG1fY2xpZW50LT5kaWRDb21wbGV0ZUlDRVByb2Nlc3Npbmco
KTsKK30KKwordm9pZCBQZWVyQ29ubmVjdGlvbkhhbmRsZXJJbnRlcm5hbDo6ZGlkUmVzdGFydElD
RVByb2Nlc3NpbmcoKQoreworICAgIG1fY2xpZW50LT5kaWRSZXN0YXJ0SUNFUHJvY2Vzc2luZygp
OwogfQogCiB2b2lkIFBlZXJDb25uZWN0aW9uSGFuZGxlckludGVybmFsOjpkaWRHZW5lcmF0ZVNE
UChjb25zdCBXZWJLaXQ6OldlYlN0cmluZyYgc2RwKQogewotICAgIGlmIChtX3dlYkhhbmRsZXIp
Ci0gICAgICAgIG1fY2xpZW50LT5kaWRHZW5lcmF0ZVNEUChzZHApOworICAgIG1fY2xpZW50LT5k
aWRHZW5lcmF0ZVNEUChzZHApOwogfQogCiB2b2lkIFBlZXJDb25uZWN0aW9uSGFuZGxlckludGVy
bmFsOjpkaWRSZWNlaXZlRGF0YVN0cmVhbU1lc3NhZ2UoY29uc3QgY2hhciogZGF0YSwgc2l6ZV90
IGxlbmd0aCkKIHsKLSAgICBpZiAobV93ZWJIYW5kbGVyKQotICAgICAgICBtX2NsaWVudC0+ZGlk
UmVjZWl2ZURhdGFTdHJlYW1NZXNzYWdlKGRhdGEsIGxlbmd0aCk7CisgICAgbV9jbGllbnQtPmRp
ZFJlY2VpdmVEYXRhU3RyZWFtTWVzc2FnZShkYXRhLCBsZW5ndGgpOwogfQogCiB2b2lkIFBlZXJD
b25uZWN0aW9uSGFuZGxlckludGVybmFsOjpkaWRBZGRSZW1vdGVTdHJlYW0oY29uc3QgV2ViS2l0
OjpXZWJNZWRpYVN0cmVhbURlc2NyaXB0b3ImIHdlYk1lZGlhU3RyZWFtRGVzY3JpcHRvcikKIHsK
LSAgICBpZiAobV93ZWJIYW5kbGVyKQotICAgICAgICBtX2NsaWVudC0+ZGlkQWRkUmVtb3RlU3Ry
ZWFtKHdlYk1lZGlhU3RyZWFtRGVzY3JpcHRvcik7CisgICAgbV9jbGllbnQtPmRpZEFkZFJlbW90
ZVN0cmVhbSh3ZWJNZWRpYVN0cmVhbURlc2NyaXB0b3IpOwogfQogCiB2b2lkIFBlZXJDb25uZWN0
aW9uSGFuZGxlckludGVybmFsOjpkaWRSZW1vdmVSZW1vdGVTdHJlYW0oY29uc3QgV2ViS2l0OjpX
ZWJNZWRpYVN0cmVhbURlc2NyaXB0b3ImIHdlYk1lZGlhU3RyZWFtRGVzY3JpcHRvcikKIHsKLSAg
ICBpZiAobV93ZWJIYW5kbGVyKQotICAgICAgICBtX2NsaWVudC0+ZGlkUmVtb3ZlUmVtb3RlU3Ry
ZWFtKHdlYk1lZGlhU3RyZWFtRGVzY3JpcHRvcik7CisgICAgbV9jbGllbnQtPmRpZFJlbW92ZVJl
bW90ZVN0cmVhbSh3ZWJNZWRpYVN0cmVhbURlc2NyaXB0b3IpOwogfQogCiB9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL2JyaWRnZS9QZWVy
Q29ubmVjdGlvbkhhbmRsZXJJbnRlcm5hbC5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9icmlk
Z2UvUGVlckNvbm5lY3Rpb25IYW5kbGVySW50ZXJuYWwuaAppbmRleCBhM2U3OWUwYWNjM2FmYzQ5
ZmI2MDI4ZGY2MzBlZDM0YmZiNjY4ODlmLi45ZWE1Nzg0OTFkNmUwMjJlMjM1MmU0OGEyYTY5Zjk2
YzgzYjkyNWU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL2JyaWRnZS9QZWVy
Q29ubmVjdGlvbkhhbmRsZXJJbnRlcm5hbC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
YnJpZGdlL1BlZXJDb25uZWN0aW9uSGFuZGxlckludGVybmFsLmgKQEAgLTY0LDYgKzY0LDcgQEAg
cHVibGljOgogCiAgICAgLy8gV2ViS2l0OjpXZWJQZWVyQ29ubmVjdGlvbkhhbmRsZXJDbGllbnQg
aW1wbGVtZW50YXRpb24uCiAgICAgdmlydHVhbCB2b2lkIGRpZENvbXBsZXRlSUNFUHJvY2Vzc2lu
ZygpOworICAgIHZpcnR1YWwgdm9pZCBkaWRSZXN0YXJ0SUNFUHJvY2Vzc2luZygpOwogICAgIHZp
cnR1YWwgdm9pZCBkaWRHZW5lcmF0ZVNEUChjb25zdCBXZWJLaXQ6OldlYlN0cmluZyYgc2RwKTsK
ICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZURhdGFTdHJlYW1NZXNzYWdlKGNvbnN0IGNoYXIq
IGRhdGEsIHNpemVfdCBsZW5ndGgpOwogICAgIHZpcnR1YWwgdm9pZCBkaWRBZGRSZW1vdGVTdHJl
YW0oY29uc3QgV2ViS2l0OjpXZWJNZWRpYVN0cmVhbURlc2NyaXB0b3ImKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlVzZXJNZWRpYUNsaWVudE1vY2suaCBi
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlVzZXJNZWRpYUNsaWVudE1vY2suaApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi4wMGRlYzg1OTgzOTZjM2RlNzBjNzVmOWM4ZDhlOTNmY2M2MjJkYThkCi0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViVXNlck1lZGlh
Q2xpZW50TW9jay5oCkBAIC0wLDAgKzEsNjggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIg
R29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAg
ICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICog
TmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICog
Y29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBk
ZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0
dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUg
Q09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlU
RUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICog
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFdlYlVzZXJNZWRpYUNsaWVudE1v
Y2tfaAorI2RlZmluZSBXZWJVc2VyTWVkaWFDbGllbnRNb2NrX2gKKworI2luY2x1ZGUgIldlYlVz
ZXJNZWRpYUNsaWVudC5oIgorCisjaW5jbHVkZSAicGxhdGZvcm0vV2ViQ29tbW9uLmgiCisjaW5j
bHVkZSAicGxhdGZvcm0vV2ViUHJpdmF0ZVB0ci5oIgorI2luY2x1ZGUgInBsYXRmb3JtL1dlYlN0
cmluZy5oIgorI2luY2x1ZGUgInBsYXRmb3JtL1dlYlVSTC5oIgorI2luY2x1ZGUgPHd0Zi9QYXNz
T3duUHRyLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKK2NsYXNzIFVzZXJNZWRpYUNsaWVudE1v
Y2s7Cit9CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBXZWJVc2VyTWVkaWFDbGllbnRN
b2NrIDogcHVibGljIFdlYlVzZXJNZWRpYUNsaWVudCB7CitwdWJsaWM6CisgICAgV0VCS0lUX0VY
UE9SVCBzdGF0aWMgUGFzc093blB0cjxXZWJVc2VyTWVkaWFDbGllbnRNb2NrPiBjcmVhdGUoKTsK
KyAgICB+V2ViVXNlck1lZGlhQ2xpZW50TW9jaygpIHsgfQorCisgICAgV0VCS0lUX0VYUE9SVCB2
b2lkIHNldEdldFVzZXJNZWRpYVJlc3VsdChib29sIGFsbG93QXVkaW8sIGJvb2wgYWxsb3dWaWRl
byk7CisKKyAgICAvLyBXZWJVc2VyTWVkaWFDbGllbnQKKyAgICBXRUJLSVRfRVhQT1JUIHZpcnR1
YWwgdm9pZCByZXF1ZXN0VXNlck1lZGlhKGNvbnN0IFdlYlVzZXJNZWRpYVJlcXVlc3QmLCBjb25z
dCBXZWJWZWN0b3I8V2ViTWVkaWFTdHJlYW1Tb3VyY2U+JiBhdWRpb1NvdXJjZXMsIGNvbnN0IFdl
YlZlY3RvcjxXZWJNZWRpYVN0cmVhbVNvdXJjZT4mIHZpZGVvU291cmNlcyk7CisgICAgV0VCS0lU
X0VYUE9SVCB2aXJ0dWFsIHZvaWQgY2FuY2VsVXNlck1lZGlhUmVxdWVzdChjb25zdCBXZWJVc2Vy
TWVkaWFSZXF1ZXN0Jik7CisKK3ByaXZhdGU6CisgICAgV2ViVXNlck1lZGlhQ2xpZW50TW9jaygp
IHsgfQorICAgIHZvaWQgaW5pdGlhbGl6ZSgpOworCisgICAgV2ViUHJpdmF0ZVB0cjxXZWJDb3Jl
OjpVc2VyTWVkaWFDbGllbnRNb2NrPiBtX3ByaXZhdGU7Cit9OworCit9IC8vIG5hbWVzcGFjZSBX
ZWJLaXQKKworI2VuZGlmIC8vIFdlYlVzZXJNZWRpYUNsaWVudE1vY2tfaApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViVXNlck1lZGlhUmVxdWVzdC5oIGIvU291
cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViVXNlck1lZGlhUmVxdWVzdC5oCmluZGV4IDM4
ZmIxODk4YjczNjYyZDk4Mjg3Njk0NmZjMGJhMzFmYWY4ODczYTQuLmZiMjA2Mjg4NWJlNjRhM2U5
OTE0NzY3OTk2ZmU5MzE3N2QyNGMzMmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vcHVibGljL1dlYlVzZXJNZWRpYVJlcXVlc3QuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3B1YmxpYy9XZWJVc2VyTWVkaWFSZXF1ZXN0LmgKQEAgLTcxLDEyICs3MSwxMyBAQCBwdWJs
aWM6CiAgICAgLy8gREVQUkVDQVRFRAogICAgIFdFQktJVF9FWFBPUlQgdm9pZCByZXF1ZXN0U3Vj
Y2VlZGVkKGNvbnN0IFdlYlZlY3RvcjxXZWJNZWRpYVN0cmVhbVNvdXJjZT4mKTsKIAotICAgIFdF
QktJVF9FWFBPUlQgdm9pZCByZXF1ZXN0U3VjY2VlZGVkKGNvbnN0IFdlYlZlY3RvcjxXZWJNZWRp
YVN0cmVhbVNvdXJjZT4mIGF1ZGlvU291cmNlcywgY29uc3QgV2ViVmVjdG9yPFdlYk1lZGlhU3Ry
ZWFtU291cmNlPiYgdmlkZW9Tb3VyY2VzKTsKLSAgICBXRUJLSVRfRVhQT1JUIHZvaWQgcmVxdWVz
dEZhaWxlZCgpOworICAgIFdFQktJVF9FWFBPUlQgdm9pZCByZXF1ZXN0U3VjY2VlZGVkKGNvbnN0
IFdlYlZlY3RvcjxXZWJNZWRpYVN0cmVhbVNvdXJjZT4mIGF1ZGlvU291cmNlcywgY29uc3QgV2Vi
VmVjdG9yPFdlYk1lZGlhU3RyZWFtU291cmNlPiYgdmlkZW9Tb3VyY2VzKSBjb25zdDsKKyAgICBX
RUJLSVRfRVhQT1JUIHZvaWQgcmVxdWVzdEZhaWxlZCgpIGNvbnN0OwogCiAjaWYgV0VCS0lUX0lN
UExFTUVOVEFUSU9OCiAgICAgV2ViVXNlck1lZGlhUmVxdWVzdChjb25zdCBQYXNzUmVmUHRyPFdl
YkNvcmU6OlVzZXJNZWRpYVJlcXVlc3Q+Jik7CiAgICAgb3BlcmF0b3IgV2ViQ29yZTo6VXNlck1l
ZGlhUmVxdWVzdCooKSBjb25zdDsKKyAgICBvcGVyYXRvciBQYXNzUmVmUHRyPFdlYkNvcmU6OlVz
ZXJNZWRpYVJlcXVlc3Q+KCkgY29uc3Q7CiAjZW5kaWYKIAogcHJpdmF0ZToKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL3BsYXRmb3JtL1dlYk1lZGlhU3RyZWFtQ2Vu
dGVyTW9jay5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvcGxhdGZvcm0vV2ViTWVk
aWFTdHJlYW1DZW50ZXJNb2NrLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYzE3MTZlOGUwNjRmYjg5ZWY4OTgyMzk4
MmIzOWFlY2YzNzdhZTg4MAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vcHVibGljL3BsYXRmb3JtL1dlYk1lZGlhU3RyZWFtQ2VudGVyTW9jay5oCkBAIC0wLDAgKzEs
NzEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAq
CisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICog
aW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29n
bGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2Vk
IHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29m
dHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENP
TlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFS
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQK
KyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjaWZuZGVmIFdlYk1lZGlhU3RyZWFtQ2VudGVyTW9ja19oCisjZGVmaW5lIFdlYk1lZGlh
U3RyZWFtQ2VudGVyTW9ja19oCisKKyNpbmNsdWRlICJXZWJNZWRpYVN0cmVhbUNlbnRlci5oIgor
I2luY2x1ZGUgIldlYk1lZGlhU3RyZWFtQ2VudGVyQ2xpZW50LmgiCisjaW5jbHVkZSAiV2ViUHJp
dmF0ZVB0ci5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CitjbGFzcyBNZWRpYVN0cmVhbUNlbnRl
ck1vY2s7Cit9CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBXZWJNZWRpYVN0cmVhbUNv
bXBvbmVudDsKK2NsYXNzIFdlYk1lZGlhU3RyZWFtRGVzY3JpcHRvcjsKK2NsYXNzIFdlYk1lZGlh
U3RyZWFtU291cmNlc1JlcXVlc3Q7CisKK2NsYXNzIFdlYk1lZGlhU3RyZWFtQ2VudGVyTW9jayA6
IHB1YmxpYyBXZWJNZWRpYVN0cmVhbUNlbnRlciB7CitwdWJsaWM6CisgICAgc3RhdGljIFdlYk1l
ZGlhU3RyZWFtQ2VudGVyTW9jayogY3JlYXRlKFdlYk1lZGlhU3RyZWFtQ2VudGVyQ2xpZW50Kik7
CisgICAgdmlydHVhbCB+V2ViTWVkaWFTdHJlYW1DZW50ZXJNb2NrKCk7CisKKyAgICAvLyBXZWJN
ZWRpYVN0cmVhbUNlbnRlcgorICAgIHZpcnR1YWwgdm9pZCBxdWVyeU1lZGlhU3RyZWFtU291cmNl
cyhjb25zdCBXZWJNZWRpYVN0cmVhbVNvdXJjZXNSZXF1ZXN0Jik7CisgICAgdmlydHVhbCB2b2lk
IGRpZEVuYWJsZU1lZGlhU3RyZWFtVHJhY2soY29uc3QgV2ViTWVkaWFTdHJlYW1EZXNjcmlwdG9y
JiwgY29uc3QgV2ViTWVkaWFTdHJlYW1Db21wb25lbnQmKTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlk
RGlzYWJsZU1lZGlhU3RyZWFtVHJhY2soY29uc3QgV2ViTWVkaWFTdHJlYW1EZXNjcmlwdG9yJiwg
Y29uc3QgV2ViTWVkaWFTdHJlYW1Db21wb25lbnQmKTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkU3Rv
cExvY2FsTWVkaWFTdHJlYW0oY29uc3QgV2ViTWVkaWFTdHJlYW1EZXNjcmlwdG9yJik7CisgICAg
dmlydHVhbCB2b2lkIGRpZENvbnN0cnVjdE1lZGlhU3RyZWFtKGNvbnN0IFdlYk1lZGlhU3RyZWFt
RGVzY3JpcHRvciYpOworCitwcml2YXRlOgorICAgIFdlYk1lZGlhU3RyZWFtQ2VudGVyTW9jayhX
ZWJNZWRpYVN0cmVhbUNlbnRlckNsaWVudCopOworICAgIHZvaWQgaW5pdGlhbGl6ZSgpOworCisg
ICAgV2ViTWVkaWFTdHJlYW1DZW50ZXJDbGllbnQqIG1fY2xpZW50OworICAgIFdlYlByaXZhdGVQ
dHI8V2ViQ29yZTo6TWVkaWFTdHJlYW1DZW50ZXJNb2NrPiBtX3ByaXZhdGU7Cit9OworCit9IC8v
IG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIFdlYk1lZGlhU3RyZWFtQ2VudGVyTW9ja19o
CisKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL3BsYXRmb3JtL1dl
Yk1lZGlhU3RyZWFtU291cmNlc1JlcXVlc3QuaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVi
bGljL3BsYXRmb3JtL1dlYk1lZGlhU3RyZWFtU291cmNlc1JlcXVlc3QuaAppbmRleCA3ZmNjN2My
NzUyY2IwZjZjNTYxMmRhMjZiMzQyNTJjNzdiNDc2ODA4Li5jYjA4OTY3N2E1MWMyZmZjNDM1YWM0
ZDI4Yzg0MjQ5ZGFhNGNmZGRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1
YmxpYy9wbGF0Zm9ybS9XZWJNZWRpYVN0cmVhbVNvdXJjZXNSZXF1ZXN0LmgKKysrIGIvU291cmNl
L1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvcGxhdGZvcm0vV2ViTWVkaWFTdHJlYW1Tb3VyY2VzUmVx
dWVzdC5oCkBAIC01OCw2ICs1OCw3IEBAIHB1YmxpYzoKIAogI2lmIFdFQktJVF9JTVBMRU1FTlRB
VElPTgogICAgIFdlYk1lZGlhU3RyZWFtU291cmNlc1JlcXVlc3QoY29uc3QgV1RGOjpQYXNzUmVm
UHRyPFdlYkNvcmU6Ok1lZGlhU3RyZWFtU291cmNlc1F1ZXJ5Q2xpZW50PiYpOworICAgIG9wZXJh
dG9yIFBhc3NSZWZQdHI8V2ViQ29yZTo6TWVkaWFTdHJlYW1Tb3VyY2VzUXVlcnlDbGllbnQ+KCkg
Y29uc3Q7CiAjZW5kaWYKIAogcHJpdmF0ZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vcHVibGljL3BsYXRmb3JtL1dlYlBlZXJDb25uZWN0aW9uSGFuZGxlckNsaWVudC5oIGIv
U291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvcGxhdGZvcm0vV2ViUGVlckNvbm5lY3Rpb25I
YW5kbGVyQ2xpZW50LmgKaW5kZXggZjJiMWQzMjk3YzY4OTMyNzRmNzNhNDMyNTc0MzA1OTBjODM0
NzRmNi4uYjM0MTY3YjMzNDA5NTdlNzBkN2M1NTA0NjkwMTViNWQ2Y2MwOTJjNiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvcGxhdGZvcm0vV2ViUGVlckNvbm5lY3Rp
b25IYW5kbGVyQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvcGxh
dGZvcm0vV2ViUGVlckNvbm5lY3Rpb25IYW5kbGVyQ2xpZW50LmgKQEAgLTQxLDYgKzQxLDcgQEAg
cHVibGljOgogICAgIHZpcnR1YWwgfldlYlBlZXJDb25uZWN0aW9uSGFuZGxlckNsaWVudCgpIHsg
fQogCiAgICAgdmlydHVhbCB2b2lkIGRpZENvbXBsZXRlSUNFUHJvY2Vzc2luZygpID0gMDsKKyAg
ICB2aXJ0dWFsIHZvaWQgZGlkUmVzdGFydElDRVByb2Nlc3NpbmcoKSA9IDA7CiAgICAgdmlydHVh
bCB2b2lkIGRpZEdlbmVyYXRlU0RQKGNvbnN0IFdlYlN0cmluZyYgc2RwKSA9IDA7CiAgICAgdmly
dHVhbCB2b2lkIGRpZFJlY2VpdmVEYXRhU3RyZWFtTWVzc2FnZShjb25zdCBjaGFyKiBkYXRhLCBz
aXplX3QgbGVuZ3RoKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGRpZEFkZFJlbW90ZVN0cmVhbShj
b25zdCBXZWJNZWRpYVN0cmVhbURlc2NyaXB0b3ImKSA9IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3B1YmxpYy9wbGF0Zm9ybS9XZWJQZWVyQ29ubmVjdGlvbkhhbmRsZXJN
b2NrLmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9wbGF0Zm9ybS9XZWJQZWVyQ29u
bmVjdGlvbkhhbmRsZXJNb2NrLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZTNiYTk2ZTVkYTJkNWQwMWQ4OWU5ZDAz
MDM4OGJhYWYyMDM0Yzc4ZgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vcHVibGljL3BsYXRmb3JtL1dlYlBlZXJDb25uZWN0aW9uSGFuZGxlck1vY2suaApAQCAtMCww
ICsxLDcwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEdvb2dsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6
CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIK
KyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2Yg
R29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUg
dXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlz
IHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFO
RCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElD
VUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJ
R0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworI2lmbmRlZiBXZWJQZWVyQ29ubmVjdGlvbkhhbmRsZXJNb2NrX2gKKyNkZWZpbmUg
V2ViUGVlckNvbm5lY3Rpb25IYW5kbGVyTW9ja19oCisKKyNpbmNsdWRlICJXZWJQZWVyQ29ubmVj
dGlvbkhhbmRsZXIuaCIKKyNpbmNsdWRlICJXZWJQcml2YXRlUHRyLmgiCisKK25hbWVzcGFjZSBX
ZWJDb3JlIHsKK2NsYXNzIFBlZXJDb25uZWN0aW9uSGFuZGxlck1vY2s7CitjbGFzcyBQZWVyQ29u
bmVjdGlvbkhhbmRsZXJDbGllbnRCcmlkZ2U7Cit9CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitj
bGFzcyBXZWJQZWVyQ29ubmVjdGlvbkhhbmRsZXJDbGllbnQ7CisKK2NsYXNzIFdlYlBlZXJDb25u
ZWN0aW9uSGFuZGxlck1vY2sgOiBwdWJsaWMgV2ViUGVlckNvbm5lY3Rpb25IYW5kbGVyIHsKK3B1
YmxpYzoKKyAgICBzdGF0aWMgV2ViUGVlckNvbm5lY3Rpb25IYW5kbGVyTW9jayogY3JlYXRlKFdl
YlBlZXJDb25uZWN0aW9uSGFuZGxlckNsaWVudCopOworICAgIHZpcnR1YWwgfldlYlBlZXJDb25u
ZWN0aW9uSGFuZGxlck1vY2soKTsKKworICAgIC8vIFdlYlBlZXJDb25uZWN0aW9uSGFuZGxlcgor
ICAgIHZpcnR1YWwgdm9pZCBpbml0aWFsaXplKGNvbnN0IFdlYlN0cmluZyYgc2VydmVyQ29uZmln
dXJhdGlvbiwgY29uc3QgV2ViU2VjdXJpdHlPcmlnaW4mKTsKKyAgICB2aXJ0dWFsIHZvaWQgcHJv
ZHVjZUluaXRpYWxPZmZlcihjb25zdCBXZWJWZWN0b3I8V2ViTWVkaWFTdHJlYW1EZXNjcmlwdG9y
PiYgcGVuZGluZ0FkZFN0cmVhbXMpOworICAgIHZpcnR1YWwgdm9pZCBoYW5kbGVJbml0aWFsT2Zm
ZXIoY29uc3QgV2ViU3RyaW5nJiBzZHApOworICAgIHZpcnR1YWwgdm9pZCBwcm9jZXNzU0RQKGNv
bnN0IFdlYlN0cmluZyYgc2RwKTsKKyAgICB2aXJ0dWFsIHZvaWQgcHJvY2Vzc1BlbmRpbmdTdHJl
YW1zKGNvbnN0IFdlYlZlY3RvcjxXZWJNZWRpYVN0cmVhbURlc2NyaXB0b3I+JiBwZW5kaW5nQWRk
U3RyZWFtcywgY29uc3QgV2ViVmVjdG9yPFdlYk1lZGlhU3RyZWFtRGVzY3JpcHRvcj4mIHBlbmRp
bmdSZW1vdmVTdHJlYW1zKTsKKyAgICB2aXJ0dWFsIHZvaWQgc2VuZERhdGFTdHJlYW1NZXNzYWdl
KGNvbnN0IGNoYXIqIGRhdGEsIHNpemVfdCBsZW5ndGgpOworICAgIHZpcnR1YWwgdm9pZCBzdG9w
KCk7CisKK3ByaXZhdGU6CisgICAgV2ViUGVlckNvbm5lY3Rpb25IYW5kbGVyTW9jayhXZWJQZWVy
Q29ubmVjdGlvbkhhbmRsZXJDbGllbnQqKTsKKworICAgIFdlYlBlZXJDb25uZWN0aW9uSGFuZGxl
ckNsaWVudCogbV9jbGllbnQ7CisgICAgV2ViUHJpdmF0ZVB0cjxXZWJDb3JlOjpQZWVyQ29ubmVj
dGlvbkhhbmRsZXJNb2NrPiBtX3ByaXZhdGU7CisgICAgV2ViUHJpdmF0ZVB0cjxXZWJDb3JlOjpQ
ZWVyQ29ubmVjdGlvbkhhbmRsZXJDbGllbnRCcmlkZ2U+IG1fY2xpZW50QnJpZGdlOworfTsKKwor
fSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBXZWJQZWVyQ29ubmVjdGlvbkhhbmRs
ZXJNb2NrX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1BlZXJDb25u
ZWN0aW9uSGFuZGxlckNsaWVudEJyaWRnZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Ny
Yy9QZWVyQ29ubmVjdGlvbkhhbmRsZXJDbGllbnRCcmlkZ2UuY3BwCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmUyODhh
MmViN2NiMTRhNmFiZDFjMTE4OGE0YWIzZDM1MmViYWFiM2IKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9QZWVyQ29ubmVjdGlvbkhhbmRsZXJDbGllbnRCcmlk
Z2UuY3BwCkBAIC0wLDAgKzEsOTAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgR29vZ2xl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICog
Y29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhl
ciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJp
YnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVk
IGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBl
cm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJ
R0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8s
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQor
ICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaWYgRU5BQkxFKE1F
RElBX1NUUkVBTSkKKworI2luY2x1ZGUgIlBlZXJDb25uZWN0aW9uSGFuZGxlckNsaWVudEJyaWRn
ZS5oIgorCisjaW5jbHVkZSAiTWVkaWFTdHJlYW1EZXNjcmlwdG9yLmgiCisjaW5jbHVkZSAicGxh
dGZvcm0vV2ViTWVkaWFTdHJlYW1EZXNjcmlwdG9yLmgiCisjaW5jbHVkZSAicGxhdGZvcm0vV2Vi
UGVlckNvbm5lY3Rpb25IYW5kbGVyQ2xpZW50LmgiCisjaW5jbHVkZSAicGxhdGZvcm0vV2ViU3Ry
aW5nLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworUGFzc1JlZlB0cjxQZWVyQ29ubmVjdGlv
bkhhbmRsZXJDbGllbnRCcmlkZ2U+IFBlZXJDb25uZWN0aW9uSGFuZGxlckNsaWVudEJyaWRnZTo6
Y3JlYXRlKFdlYktpdDo6V2ViUGVlckNvbm5lY3Rpb25IYW5kbGVyQ2xpZW50KiBjbGllbnQpCit7
CisgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBQZWVyQ29ubmVjdGlvbkhhbmRsZXJDbGllbnRCcmlk
Z2UoY2xpZW50KSk7Cit9CisKK1BlZXJDb25uZWN0aW9uSGFuZGxlckNsaWVudEJyaWRnZTo6UGVl
ckNvbm5lY3Rpb25IYW5kbGVyQ2xpZW50QnJpZGdlKFdlYktpdDo6V2ViUGVlckNvbm5lY3Rpb25I
YW5kbGVyQ2xpZW50KiBjbGllbnQpCisgICAgOiBtX2NsaWVudChjbGllbnQpCit7CisgICAgQVNT
RVJUKG1fY2xpZW50KTsKK30KKworUGVlckNvbm5lY3Rpb25IYW5kbGVyQ2xpZW50QnJpZGdlOjp+
UGVlckNvbm5lY3Rpb25IYW5kbGVyQ2xpZW50QnJpZGdlKCkKK3sKK30KKwordm9pZCBQZWVyQ29u
bmVjdGlvbkhhbmRsZXJDbGllbnRCcmlkZ2U6OmRpZENvbXBsZXRlSUNFUHJvY2Vzc2luZygpCit7
CisgICAgbV9jbGllbnQtPmRpZENvbXBsZXRlSUNFUHJvY2Vzc2luZygpOworfQorCit2b2lkIFBl
ZXJDb25uZWN0aW9uSGFuZGxlckNsaWVudEJyaWRnZTo6ZGlkUmVzdGFydElDRVByb2Nlc3Npbmco
KQoreworICAgIG1fY2xpZW50LT5kaWRSZXN0YXJ0SUNFUHJvY2Vzc2luZygpOworfQorCit2b2lk
IFBlZXJDb25uZWN0aW9uSGFuZGxlckNsaWVudEJyaWRnZTo6ZGlkR2VuZXJhdGVTRFAoY29uc3Qg
U3RyaW5nJiBzZHApCit7CisgICAgbV9jbGllbnQtPmRpZEdlbmVyYXRlU0RQKHNkcCk7Cit9CisK
K3ZvaWQgUGVlckNvbm5lY3Rpb25IYW5kbGVyQ2xpZW50QnJpZGdlOjpkaWRSZWNlaXZlRGF0YVN0
cmVhbU1lc3NhZ2UoY29uc3QgY2hhciogZGF0YSwgc2l6ZV90IGxlbmd0aCkKK3sKKyAgICBtX2Ns
aWVudC0+ZGlkUmVjZWl2ZURhdGFTdHJlYW1NZXNzYWdlKGRhdGEsIGxlbmd0aCk7Cit9CisKK3Zv
aWQgUGVlckNvbm5lY3Rpb25IYW5kbGVyQ2xpZW50QnJpZGdlOjpkaWRBZGRSZW1vdGVTdHJlYW0o
UGFzc1JlZlB0cjxNZWRpYVN0cmVhbURlc2NyaXB0b3I+IHN0cmVhbSkKK3sKKyAgICBtX2NsaWVu
dC0+ZGlkQWRkUmVtb3RlU3RyZWFtKHN0cmVhbSk7Cit9CisKK3ZvaWQgUGVlckNvbm5lY3Rpb25I
YW5kbGVyQ2xpZW50QnJpZGdlOjpkaWRSZW1vdmVSZW1vdGVTdHJlYW0oTWVkaWFTdHJlYW1EZXNj
cmlwdG9yKiBzdHJlYW0pCit7CisgICAgbV9jbGllbnQtPmRpZFJlbW92ZVJlbW90ZVN0cmVhbShz
dHJlYW0pOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUo
TUVESUFfU1RSRUFNKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvUGVl
ckNvbm5lY3Rpb25IYW5kbGVyQ2xpZW50QnJpZGdlLmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3NyYy9QZWVyQ29ubmVjdGlvbkhhbmRsZXJDbGllbnRCcmlkZ2UuaApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yZWZj
ZmNiNGRlMDVhMWI1MWFkMmM2ODBiZjNhYTdmMjM2ZjNjNjdhCi0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvUGVlckNvbm5lY3Rpb25IYW5kbGVyQ2xpZW50QnJp
ZGdlLmgKQEAgLTAsMCArMSw3MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
IGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBj
b3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVy
IHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmli
dXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQg
ZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVy
bWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklH
SFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywg
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
CisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisg
KiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgUGVlckNvbm5lY3Rpb25IYW5kbGVyQ2xpZW50
QnJpZGdlX2gKKyNkZWZpbmUgUGVlckNvbm5lY3Rpb25IYW5kbGVyQ2xpZW50QnJpZGdlX2gKKwor
I2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCisKKyNpbmNsdWRlICJQZWVyQ29ubmVjdGlvbkhhbmRs
ZXJDbGllbnQuaCIKKworI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CisjaW5jbHVkZSA8d3Rm
L1JlZkNvdW50ZWQuaD4KKworbmFtZXNwYWNlIFdlYktpdCB7CitjbGFzcyBXZWJQZWVyQ29ubmVj
dGlvbkhhbmRsZXJDbGllbnQ7Cit9CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgUGVl
ckNvbm5lY3Rpb25IYW5kbGVyQ2xpZW50QnJpZGdlIDogcHVibGljIFJlZkNvdW50ZWQ8UGVlckNv
bm5lY3Rpb25IYW5kbGVyQ2xpZW50QnJpZGdlPiwgcHVibGljIFBlZXJDb25uZWN0aW9uSGFuZGxl
ckNsaWVudCB7CitwdWJsaWM6CisgICAgc3RhdGljIFBhc3NSZWZQdHI8UGVlckNvbm5lY3Rpb25I
YW5kbGVyQ2xpZW50QnJpZGdlPiBjcmVhdGUoV2ViS2l0OjpXZWJQZWVyQ29ubmVjdGlvbkhhbmRs
ZXJDbGllbnQqKTsKKyAgICB2aXJ0dWFsIH5QZWVyQ29ubmVjdGlvbkhhbmRsZXJDbGllbnRCcmlk
Z2UoKTsKKworICAgIC8vIFBlZXJDb25uZWN0aW9uSGFuZGxlckNsaWVudAorICAgIHZpcnR1YWwg
dm9pZCBkaWRDb21wbGV0ZUlDRVByb2Nlc3NpbmcoKTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkUmVz
dGFydElDRVByb2Nlc3NpbmcoKTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkR2VuZXJhdGVTRFAoY29u
c3QgU3RyaW5nJiBzZHApOworICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlRGF0YVN0cmVhbU1l
c3NhZ2UoY29uc3QgY2hhciogZGF0YSwgc2l6ZV90IGxlbmd0aCk7CisgICAgdmlydHVhbCB2b2lk
IGRpZEFkZFJlbW90ZVN0cmVhbShQYXNzUmVmUHRyPE1lZGlhU3RyZWFtRGVzY3JpcHRvcj4pOwor
ICAgIHZpcnR1YWwgdm9pZCBkaWRSZW1vdmVSZW1vdGVTdHJlYW0oTWVkaWFTdHJlYW1EZXNjcmlw
dG9yKik7CisKK3ByaXZhdGU6CisgICAgUGVlckNvbm5lY3Rpb25IYW5kbGVyQ2xpZW50QnJpZGdl
KFdlYktpdDo6V2ViUGVlckNvbm5lY3Rpb25IYW5kbGVyQ2xpZW50Kik7CisKKyAgICBXZWJLaXQ6
OldlYlBlZXJDb25uZWN0aW9uSGFuZGxlckNsaWVudCogbV9jbGllbnQ7Cit9OworCit9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoTUVESUFfU1RSRUFNKQorCisjZW5k
aWYgLy8gUGVlckNvbm5lY3Rpb25IYW5kbGVyQ2xpZW50QnJpZGdlX2gKKworCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJNZWRpYVN0cmVhbUNlbnRlck1vY2suY3Bw
IGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViTWVkaWFTdHJlYW1DZW50ZXJNb2NrLmNw
cApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi4yZDk2ODZmNjg3MjExYjNlMDcwOGEzOGVhZTM5MmFmNGFmYmFmNjM5Ci0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViTWVkaWFTdHJl
YW1DZW50ZXJNb2NrLmNwcApAQCAtMCwwICsxLDkxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDEyIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
ICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAg
ICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMK
KyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVj
dHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Ig
d3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
VEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBM
SU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QK
KyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2lu
Y2x1ZGUgInBsYXRmb3JtL1dlYk1lZGlhU3RyZWFtQ2VudGVyTW9jay5oIgorCisjaW5jbHVkZSAi
TWVkaWFTdHJlYW1DZW50ZXIuaCIKKyNpbmNsdWRlICJNZWRpYVN0cmVhbUNlbnRlck1vY2suaCIK
KyNpbmNsdWRlICJNZWRpYVN0cmVhbUNvbXBvbmVudC5oIgorI2luY2x1ZGUgIk1lZGlhU3RyZWFt
RGVzY3JpcHRvci5oIgorI2luY2x1ZGUgInBsYXRmb3JtL1dlYk1lZGlhU3RyZWFtQ29tcG9uZW50
LmgiCisjaW5jbHVkZSAicGxhdGZvcm0vV2ViTWVkaWFTdHJlYW1EZXNjcmlwdG9yLmgiCisjaW5j
bHVkZSAicGxhdGZvcm0vV2ViTWVkaWFTdHJlYW1Tb3VyY2VzUmVxdWVzdC5oIgorCituYW1lc3Bh
Y2UgV2ViS2l0IHsKKworV2ViTWVkaWFTdHJlYW1DZW50ZXJNb2NrKiBXZWJNZWRpYVN0cmVhbUNl
bnRlck1vY2s6OmNyZWF0ZShXZWJNZWRpYVN0cmVhbUNlbnRlckNsaWVudCogY2xpZW50KQorewor
ICAgIFdlYk1lZGlhU3RyZWFtQ2VudGVyTW9jayogbW9jayA9IG5ldyBXZWJNZWRpYVN0cmVhbUNl
bnRlck1vY2soY2xpZW50KTsKKyAgICBtb2NrLT5pbml0aWFsaXplKCk7CisgICAgcmV0dXJuIG1v
Y2s7Cit9CisKK1dlYk1lZGlhU3RyZWFtQ2VudGVyTW9jazo6V2ViTWVkaWFTdHJlYW1DZW50ZXJN
b2NrKFdlYk1lZGlhU3RyZWFtQ2VudGVyQ2xpZW50KiBjbGllbnQpCisgICAgOiBtX2NsaWVudChj
bGllbnQpCit7Cit9CisKK1dlYk1lZGlhU3RyZWFtQ2VudGVyTW9jazo6fldlYk1lZGlhU3RyZWFt
Q2VudGVyTW9jaygpCit7CisgICAgbV9wcml2YXRlLnJlc2V0KCk7Cit9CisKK3ZvaWQgV2ViTWVk
aWFTdHJlYW1DZW50ZXJNb2NrOjppbml0aWFsaXplKCkKK3sKKyAgICBtX3ByaXZhdGUgPSBXZWJD
b3JlOjpNZWRpYVN0cmVhbUNlbnRlck1vY2s6OmNyZWF0ZSgpOworfQorCit2b2lkIFdlYk1lZGlh
U3RyZWFtQ2VudGVyTW9jazo6cXVlcnlNZWRpYVN0cmVhbVNvdXJjZXMoY29uc3QgV2ViTWVkaWFT
dHJlYW1Tb3VyY2VzUmVxdWVzdCYgcmVxdWVzdCkKK3sKKyAgICBtX3ByaXZhdGUtPnF1ZXJ5TWVk
aWFTdHJlYW1Tb3VyY2VzKHJlcXVlc3QpOworfQorCit2b2lkIFdlYk1lZGlhU3RyZWFtQ2VudGVy
TW9jazo6ZGlkRW5hYmxlTWVkaWFTdHJlYW1UcmFjayhjb25zdCBXZWJNZWRpYVN0cmVhbURlc2Ny
aXB0b3ImIHN0cmVhbSwgY29uc3QgV2ViTWVkaWFTdHJlYW1Db21wb25lbnQmIGNvbXBvbmVudCkK
K3sKKyAgICBtX3ByaXZhdGUtPmRpZEVuYWJsZU1lZGlhU3RyZWFtVHJhY2soc3RyZWFtLCBjb21w
b25lbnQpOworfQorCit2b2lkIFdlYk1lZGlhU3RyZWFtQ2VudGVyTW9jazo6ZGlkRGlzYWJsZU1l
ZGlhU3RyZWFtVHJhY2soY29uc3QgV2ViTWVkaWFTdHJlYW1EZXNjcmlwdG9yJiBzdHJlYW0sIGNv
bnN0IFdlYk1lZGlhU3RyZWFtQ29tcG9uZW50JiBjb21wb25lbnQpCit7CisgICAgbV9wcml2YXRl
LT5kaWREaXNhYmxlTWVkaWFTdHJlYW1UcmFjayhzdHJlYW0sIGNvbXBvbmVudCk7Cit9CisKK3Zv
aWQgV2ViTWVkaWFTdHJlYW1DZW50ZXJNb2NrOjpkaWRTdG9wTG9jYWxNZWRpYVN0cmVhbShjb25z
dCBXZWJNZWRpYVN0cmVhbURlc2NyaXB0b3ImIHN0cmVhbSkKK3sKKyAgICBtX3ByaXZhdGUtPmRp
ZFN0b3BMb2NhbE1lZGlhU3RyZWFtKHN0cmVhbSk7Cit9CisKK3ZvaWQgV2ViTWVkaWFTdHJlYW1D
ZW50ZXJNb2NrOjpkaWRDb25zdHJ1Y3RNZWRpYVN0cmVhbShjb25zdCBXZWJNZWRpYVN0cmVhbURl
c2NyaXB0b3ImIHN0cmVhbSkKK3sKKyAgICBtX3ByaXZhdGUtPmRpZENvbnN0cnVjdE1lZGlhU3Ry
ZWFtKHN0cmVhbSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViTWVkaWFTdHJlYW1Tb3VyY2VzUmVxdWVzdC5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJNZWRpYVN0cmVhbVNvdXJjZXNSZXF1ZXN0
LmNwcAppbmRleCBlYTg4NjgwMDkyNDhjMjg2ODA0NDE4NDljY2RmY2E2ZmY3ZWI4ZjEzLi41YzZj
OTY3ZjQzZTU3N2UyYmU0ZDYyNTQyMTg1N2QwODc0N2IyYWU5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3NyYy9XZWJNZWRpYVN0cmVhbVNvdXJjZXNSZXF1ZXN0LmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJNZWRpYVN0cmVhbVNvdXJjZXNSZXF1ZXN0
LmNwcApAQCAtODIsNiArODIsMTEgQEAgdm9pZCBXZWJNZWRpYVN0cmVhbVNvdXJjZXNSZXF1ZXN0
OjpkaWRDb21wbGV0ZVF1ZXJ5KGNvbnN0IFdlYlZlY3RvcjxXZWJNZWRpYVN0cmUKICAgICBtX3By
aXZhdGUtPmRpZENvbXBsZXRlUXVlcnkoYXVkaW8sIHZpZGVvKTsKIH0KIAorV2ViTWVkaWFTdHJl
YW1Tb3VyY2VzUmVxdWVzdDo6b3BlcmF0b3IgUGFzc1JlZlB0cjxXZWJDb3JlOjpNZWRpYVN0cmVh
bVNvdXJjZXNRdWVyeUNsaWVudD4oKSBjb25zdAoreworICAgIHJldHVybiBtX3ByaXZhdGUuZ2V0
KCk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAogCiAjZW5kaWYgLy8gRU5BQkxFKE1FRElB
X1NUUkVBTSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlBlZXJD
b25uZWN0aW9uSGFuZGxlck1vY2suY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2Vi
UGVlckNvbm5lY3Rpb25IYW5kbGVyTW9jay5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOGE0MGMwMDlkZmQ0YzQ4
ODk1OTg5YjU2NzNhMjE0N2ExNmMzNDYzZAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vc3JjL1dlYlBlZXJDb25uZWN0aW9uSGFuZGxlck1vY2suY3BwCkBAIC0wLDAg
KzEsMTA2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEdvb2dsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6
CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIK
KyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2Yg
R29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUg
dXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlz
IHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFO
RCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElD
VUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJ
R0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgInBsYXRmb3JtL1dlYlBlZXJD
b25uZWN0aW9uSGFuZGxlck1vY2suaCIKKworI2luY2x1ZGUgIk1lZGlhU3RyZWFtRGVzY3JpcHRv
ci5oIgorI2luY2x1ZGUgIlBlZXJDb25uZWN0aW9uSGFuZGxlckNsaWVudEJyaWRnZS5oIgorI2lu
Y2x1ZGUgIlBlZXJDb25uZWN0aW9uSGFuZGxlck1vY2suaCIKKyNpbmNsdWRlICJTZWN1cml0eU9y
aWdpbi5oIgorI2luY2x1ZGUgIldlYlNlY3VyaXR5T3JpZ2luLmgiCisjaW5jbHVkZSAicGxhdGZv
cm0vV2ViTWVkaWFTdHJlYW1EZXNjcmlwdG9yLmgiCisjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgor
Cit1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK1dlYlBl
ZXJDb25uZWN0aW9uSGFuZGxlck1vY2sqIFdlYlBlZXJDb25uZWN0aW9uSGFuZGxlck1vY2s6OmNy
ZWF0ZShXZWJQZWVyQ29ubmVjdGlvbkhhbmRsZXJDbGllbnQqIGNsaWVudCkKK3sKKyAgICByZXR1
cm4gbmV3IFdlYlBlZXJDb25uZWN0aW9uSGFuZGxlck1vY2soY2xpZW50KTsKK30KKworV2ViUGVl
ckNvbm5lY3Rpb25IYW5kbGVyTW9jazo6V2ViUGVlckNvbm5lY3Rpb25IYW5kbGVyTW9jayhXZWJQ
ZWVyQ29ubmVjdGlvbkhhbmRsZXJDbGllbnQqIGNsaWVudCkKKyAgICA6IG1fY2xpZW50KGNsaWVu
dCkKK3sKK30KKworV2ViUGVlckNvbm5lY3Rpb25IYW5kbGVyTW9jazo6IH5XZWJQZWVyQ29ubmVj
dGlvbkhhbmRsZXJNb2NrKCkKK3sKKyAgICBtX3ByaXZhdGUucmVzZXQoKTsKKyAgICBtX2NsaWVu
dEJyaWRnZS5yZXNldCgpOworfQorCit2b2lkIFdlYlBlZXJDb25uZWN0aW9uSGFuZGxlck1vY2s6
OmluaXRpYWxpemUoY29uc3QgV2ViU3RyaW5nJiBzZXJ2ZXJDb25maWd1cmF0aW9uLCBjb25zdCBX
ZWJTZWN1cml0eU9yaWdpbiYgc2VjdXJpdHlPcmlnaW4pCit7CisgICAgbV9jbGllbnRCcmlkZ2Ug
PSBQZWVyQ29ubmVjdGlvbkhhbmRsZXJDbGllbnRCcmlkZ2U6OmNyZWF0ZShtX2NsaWVudCk7Cisg
ICAgbV9wcml2YXRlID0gUGVlckNvbm5lY3Rpb25IYW5kbGVyTW9jazo6Y3JlYXRlKG1fY2xpZW50
QnJpZGdlLmdldCgpLCBzZXJ2ZXJDb25maWd1cmF0aW9uLCBzZWN1cml0eU9yaWdpbik7Cit9CisK
K3ZvaWQgV2ViUGVlckNvbm5lY3Rpb25IYW5kbGVyTW9jazo6cHJvZHVjZUluaXRpYWxPZmZlcihj
b25zdCBXZWJWZWN0b3I8V2ViTWVkaWFTdHJlYW1EZXNjcmlwdG9yPiYgcGVuZGluZ0FkZFN0cmVh
bXMpCit7CisgICAgV2ViQ29yZTo6TWVkaWFTdHJlYW1EZXNjcmlwdG9yVmVjdG9yIHN0cmVhbXM7
CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBwZW5kaW5nQWRkU3RyZWFtcy5zaXplKCk7ICsr
aSkKKyAgICAgICAgc3RyZWFtcy5hcHBlbmQocGVuZGluZ0FkZFN0cmVhbXNbaV0pOworICAgIG1f
cHJpdmF0ZS0+cHJvZHVjZUluaXRpYWxPZmZlcihzdHJlYW1zKTsKK30KKwordm9pZCBXZWJQZWVy
Q29ubmVjdGlvbkhhbmRsZXJNb2NrOjpoYW5kbGVJbml0aWFsT2ZmZXIoY29uc3QgV2ViU3RyaW5n
JiBzZHApCit7CisgICAgbV9wcml2YXRlLT5oYW5kbGVJbml0aWFsT2ZmZXIoc2RwKTsKK30KKwor
dm9pZCBXZWJQZWVyQ29ubmVjdGlvbkhhbmRsZXJNb2NrOjpwcm9jZXNzU0RQKGNvbnN0IFdlYlN0
cmluZyYgc2RwKQoreworICAgIG1fcHJpdmF0ZS0+cHJvY2Vzc1NEUChzZHApOworfQorCit2b2lk
IFdlYlBlZXJDb25uZWN0aW9uSGFuZGxlck1vY2s6OnByb2Nlc3NQZW5kaW5nU3RyZWFtcyhjb25z
dCBXZWJWZWN0b3I8V2ViTWVkaWFTdHJlYW1EZXNjcmlwdG9yPiYgcGVuZGluZ0FkZFN0cmVhbXMs
IGNvbnN0IFdlYlZlY3RvcjxXZWJNZWRpYVN0cmVhbURlc2NyaXB0b3I+JiBwZW5kaW5nUmVtb3Zl
U3RyZWFtcykKK3sKKyAgICBXZWJDb3JlOjpNZWRpYVN0cmVhbURlc2NyaXB0b3JWZWN0b3IgYWRk
U3RyZWFtcywgcmVtb3ZlU3RyZWFtczsKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHBlbmRp
bmdBZGRTdHJlYW1zLnNpemUoKTsgKytpKQorICAgICAgICBhZGRTdHJlYW1zLmFwcGVuZChwZW5k
aW5nQWRkU3RyZWFtc1tpXSk7CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBwZW5kaW5nUmVt
b3ZlU3RyZWFtcy5zaXplKCk7ICsraSkKKyAgICAgICAgcmVtb3ZlU3RyZWFtcy5hcHBlbmQocGVu
ZGluZ0FkZFN0cmVhbXNbaV0pOworICAgIG1fcHJpdmF0ZS0+cHJvY2Vzc1BlbmRpbmdTdHJlYW1z
KGFkZFN0cmVhbXMsIHJlbW92ZVN0cmVhbXMpOworfQorCit2b2lkIFdlYlBlZXJDb25uZWN0aW9u
SGFuZGxlck1vY2s6OnNlbmREYXRhU3RyZWFtTWVzc2FnZShjb25zdCBjaGFyKiBkYXRhLCBzaXpl
X3QgbGVuZ3RoKQoreworICAgIG1fcHJpdmF0ZS0+c2VuZERhdGFTdHJlYW1NZXNzYWdlKGRhdGEs
IGxlbmd0aCk7Cit9CisKK3ZvaWQgV2ViUGVlckNvbm5lY3Rpb25IYW5kbGVyTW9jazo6c3RvcCgp
Cit7CisgICAgbV9wcml2YXRlLT5zdG9wKCk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVXNlck1lZGlhQ2xpZW50
TW9jay5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJVc2VyTWVkaWFDbGllbnRN
b2NrLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi5hZDZiMGYwZWMzMzY4ODQzYTMxNGE1ZmE4YTk4MjY1YTJjOWVm
ZWU5Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVXNl
ck1lZGlhQ2xpZW50TW9jay5jcHAKQEAgLTAsMCArMSw4OSBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAxMiBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisg
KiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2Yg
aXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHBy
b2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHBy
aW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAor
ICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVD
SUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICog
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIK
KyNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQorCisjaW5jbHVkZSAiV2ViVXNlck1lZGlhQ2xpZW50
TW9jay5oIgorCisjaW5jbHVkZSAiTWVkaWFTdHJlYW1Tb3VyY2UuaCIKKyNpbmNsdWRlICJVc2Vy
TWVkaWFDbGllbnRNb2NrLmgiCisjaW5jbHVkZSAiV2ViTWVkaWFTdHJlYW1SZWdpc3RyeS5oIgor
I2luY2x1ZGUgIldlYlVzZXJNZWRpYVJlcXVlc3QuaCIKKyNpbmNsdWRlICJwbGF0Zm9ybS9XZWJN
ZWRpYVN0cmVhbURlc2NyaXB0b3IuaCIKKyNpbmNsdWRlICJwbGF0Zm9ybS9XZWJNZWRpYVN0cmVh
bVNvdXJjZS5oIgorI2luY2x1ZGUgInBsYXRmb3JtL1dlYlZlY3Rvci5oIgorI2luY2x1ZGUgPHd0
Zi9Bc3NlcnRpb25zLmg+CisjaW5jbHVkZSA8d3RmL093blB0ci5oPgorCit1c2luZyBuYW1lc3Bh
Y2UgV2ViQ29yZTsKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK1Bhc3NPd25QdHI8V2ViVXNlck1l
ZGlhQ2xpZW50TW9jaz4gV2ViVXNlck1lZGlhQ2xpZW50TW9jazo6Y3JlYXRlKCkKK3sKKyAgICBP
d25QdHI8V2ViVXNlck1lZGlhQ2xpZW50TW9jaz4gbW9jayA9IGFkb3B0UHRyKG5ldyBXZWJVc2Vy
TWVkaWFDbGllbnRNb2NrKCkpOworICAgIG1vY2stPmluaXRpYWxpemUoKTsKKyAgICByZXR1cm4g
bW9jay5yZWxlYXNlKCk7Cit9CisKK3ZvaWQgV2ViVXNlck1lZGlhQ2xpZW50TW9jazo6aW5pdGlh
bGl6ZSgpCit7CisgICAgbV9wcml2YXRlID0gV2ViQ29yZTo6VXNlck1lZGlhQ2xpZW50TW9jazo6
Y3JlYXRlKCk7Cit9CisKK3ZvaWQgV2ViVXNlck1lZGlhQ2xpZW50TW9jazo6c2V0R2V0VXNlck1l
ZGlhUmVzdWx0KGJvb2wgYWxsb3dBdWRpbywgYm9vbCBhbGxvd1ZpZGVvKQoreworICAgIG1fcHJp
dmF0ZS0+c2V0R2V0VXNlck1lZGlhUmVzdWx0KGFsbG93QXVkaW8sIGFsbG93VmlkZW8pOworfQor
Cit2b2lkIFdlYlVzZXJNZWRpYUNsaWVudE1vY2s6OnJlcXVlc3RVc2VyTWVkaWEoY29uc3QgV2Vi
VXNlck1lZGlhUmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgV2ViVmVjdG9yPFdlYk1lZGlhU3RyZWFt
U291cmNlPiYgYXVkaW9Tb3VyY2VzLCBjb25zdCBXZWJWZWN0b3I8V2ViTWVkaWFTdHJlYW1Tb3Vy
Y2U+JiB2aWRlb1NvdXJjZXMpCit7CisgICAgTWVkaWFTdHJlYW1Tb3VyY2VWZWN0b3IgYXVkaW87
CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBhdWRpb1NvdXJjZXMuc2l6ZSgpOyArK2kpIHsK
KyAgICAgICAgTWVkaWFTdHJlYW1Tb3VyY2UqIGN1cnIgPSBhdWRpb1NvdXJjZXNbaV07CisgICAg
ICAgIGF1ZGlvLmFwcGVuZChjdXJyKTsKKyAgICB9CisgICAgTWVkaWFTdHJlYW1Tb3VyY2VWZWN0
b3IgdmlkZW87CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCB2aWRlb1NvdXJjZXMuc2l6ZSgp
OyArK2kpIHsKKyAgICAgICAgTWVkaWFTdHJlYW1Tb3VyY2UqIGN1cnIgPSB2aWRlb1NvdXJjZXNb
aV07CisgICAgICAgIHZpZGVvLmFwcGVuZChjdXJyKTsKKyAgICB9CisgICAgbV9wcml2YXRlLT5y
ZXF1ZXN0VXNlck1lZGlhKHJlcXVlc3QsIGF1ZGlvLCB2aWRlbyk7Cit9CisKK3ZvaWQgV2ViVXNl
ck1lZGlhQ2xpZW50TW9jazo6Y2FuY2VsVXNlck1lZGlhUmVxdWVzdChjb25zdCBXZWJVc2VyTWVk
aWFSZXF1ZXN0JiByZXF1ZXN0KQoreworICAgIG1fcHJpdmF0ZS0+Y2FuY2VsVXNlck1lZGlhUmVx
dWVzdChyZXF1ZXN0KTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBF
TkFCTEUoTUVESUFfU1RSRUFNKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9z
cmMvV2ViVXNlck1lZGlhUmVxdWVzdC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9X
ZWJVc2VyTWVkaWFSZXF1ZXN0LmNwcAppbmRleCA1YTc2YzgzYjBkZTg4ZGQwNWJhZWU5NDRiZmNm
ZTk1Y2UxMWI2MTI1Li44ZGQxZjlmY2FmYWQ2ODg5MzZlMTBiNjU3MjcwOTViYWQ3NTUxMmQxIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJVc2VyTWVkaWFSZXF1ZXN0
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJVc2VyTWVkaWFSZXF1ZXN0
LmNwcApAQCAtODYsNyArODYsNyBAQCBXZWJTZWN1cml0eU9yaWdpbiBXZWJVc2VyTWVkaWFSZXF1
ZXN0OjpzZWN1cml0eU9yaWdpbigpIGNvbnN0CiAgICAgcmV0dXJuIFdlYlNlY3VyaXR5T3JpZ2lu
KG1fcHJpdmF0ZS0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLT5zZWN1cml0eU9yaWdpbigpKTsK
IH0KIAotdm9pZCBXZWJVc2VyTWVkaWFSZXF1ZXN0OjpyZXF1ZXN0U3VjY2VlZGVkKGNvbnN0IFdl
YlZlY3RvcjxXZWJNZWRpYVN0cmVhbVNvdXJjZT4mIGF1ZGlvU291cmNlcywgY29uc3QgV2ViVmVj
dG9yPFdlYk1lZGlhU3RyZWFtU291cmNlPiYgdmlkZW9Tb3VyY2VzKQordm9pZCBXZWJVc2VyTWVk
aWFSZXF1ZXN0OjpyZXF1ZXN0U3VjY2VlZGVkKGNvbnN0IFdlYlZlY3RvcjxXZWJNZWRpYVN0cmVh
bVNvdXJjZT4mIGF1ZGlvU291cmNlcywgY29uc3QgV2ViVmVjdG9yPFdlYk1lZGlhU3RyZWFtU291
cmNlPiYgdmlkZW9Tb3VyY2VzKSBjb25zdAogewogICAgIGlmIChtX3ByaXZhdGUuaXNOdWxsKCkp
CiAgICAgICAgIHJldHVybjsKQEAgLTEyMyw3ICsxMjMsNyBAQCB2b2lkIFdlYlVzZXJNZWRpYVJl
cXVlc3Q6OnJlcXVlc3RTdWNjZWVkZWQoY29uc3QgV2ViVmVjdG9yPFdlYk1lZGlhU3RyZWFtU291
cmNlPgogICAgIG1fcHJpdmF0ZS0+c3VjY2VlZChhdWRpbywgdmlkZW8pOwogfQogCi12b2lkIFdl
YlVzZXJNZWRpYVJlcXVlc3Q6OnJlcXVlc3RGYWlsZWQoKQordm9pZCBXZWJVc2VyTWVkaWFSZXF1
ZXN0OjpyZXF1ZXN0RmFpbGVkKCkgY29uc3QKIHsKICAgICBtX3ByaXZhdGUtPmZhaWwoKTsKIH0K
QEAgLTE0OCw2ICsxNDgsMTEgQEAgV2ViVXNlck1lZGlhUmVxdWVzdDo6b3BlcmF0b3IgVXNlck1l
ZGlhUmVxdWVzdCooKSBjb25zdAogICAgIHJldHVybiBtX3ByaXZhdGUuZ2V0KCk7CiB9CiAKK1dl
YlVzZXJNZWRpYVJlcXVlc3Q6Om9wZXJhdG9yIFBhc3NSZWZQdHI8VXNlck1lZGlhUmVxdWVzdD4o
KSBjb25zdAoreworICAgIHJldHVybiBtX3ByaXZhdGUuZ2V0KCk7Cit9CisKIH0gLy8gbmFtZXNw
YWNlIFdlYktpdAogCiAjZW5kaWYgLy8gRU5BQkxFKE1FRElBX1NUUkVBTSkKZGlmZiAtLWdpdCBh
L1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCA4ZDJlYjU3NDIyNzA1ZDgy
NGVhN2M4ZDgyNjA1YWQ1ZGY1ZDUwNzMyLi4zMTY5OTU1MTM0MDllNWY4MTZmYzNiYzE5NTYyY2M3
Njc4NTljZGRlIDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdl
TG9nCkBAIC0xLDMgKzEsMjYgQEAKKzIwMTItMDItMTUgIFRvbW15IFdpZGVuZmx5Y2h0ICA8dG9t
bXl3QGdvb2dsZS5jb20+CisKKyAgICAgICAgSW1wbGVtZW50IExheW91dCBUZXN0cyBmb3IgdGhl
IE1lZGlhIFN0cmVhbSBBUEkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTU2NTg3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9EdW1wUmVuZGVyVHJlZS5neXBpOgorICAgICAgICAq
IER1bXBSZW5kZXJUcmVlL0xheW91dFRlc3RDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKHNldE1v
Y2tHZXRVc2VyTWVkaWFSZXN1bHRDYWxsYmFjayk6CisgICAgICAgIChMYXlvdXRUZXN0Q29udHJv
bGxlcjo6c3RhdGljRnVuY3Rpb25zKToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9MYXlvdXRU
ZXN0Q29udHJvbGxlci5oOgorICAgICAgICAoTGF5b3V0VGVzdENvbnRyb2xsZXIpOgorICAgICAg
ICAqIER1bXBSZW5kZXJUcmVlL2Nocm9taXVtL0xheW91dFRlc3RDb250cm9sbGVyLmNwcDoKKyAg
ICAgICAgKExheW91dFRlc3RDb250cm9sbGVyOjpMYXlvdXRUZXN0Q29udHJvbGxlcik6CisgICAg
ICAgIChMYXlvdXRUZXN0Q29udHJvbGxlcjo6c2V0TW9ja0dldFVzZXJNZWRpYVJlc3VsdCk6Cisg
ICAgICAgICogRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vTGF5b3V0VGVzdENvbnRyb2xsZXIuaDoK
KyAgICAgICAgKExheW91dFRlc3RDb250cm9sbGVyKToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJl
ZS9jaHJvbWl1bS9XZWJWaWV3SG9zdC5jcHA6CisgICAgICAgIChXZWJWaWV3SG9zdDo6dGVzdE1l
ZGlhU3RyZWFtQ2xpZW50KToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9XZWJW
aWV3SG9zdC5oOgorICAgICAgICAoV2ViVmlld0hvc3QpOgorCiAyMDEyLTAyLTE0ICBTYW0gV2Vp
bmlnICA8c2FtQHdlYmtpdC5vcmc+CiAKICAgICAgICAgQWRkICNpbmNsdWRlIG9mIHVuaXN0ZC5o
IG9uIHRoZSBtYWMgZm9yIGdldGN3ZC4gCmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJl
ZS9EdW1wUmVuZGVyVHJlZS5neXBpIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvRHVtcFJlbmRlclRy
ZWUuZ3lwaQppbmRleCAwNzM2YzAzODFiMzRjODhlMzA3ZTVmZmYzZDU0ZmQ2OTIwZjg3NTBlLi5l
NmUwZjI1ZmViMzBiYzczYzRjOGQxNzFmNWU1MTMwNzNmMTkxM2I2IDEwMDY0NAotLS0gYS9Ub29s
cy9EdW1wUmVuZGVyVHJlZS9EdW1wUmVuZGVyVHJlZS5neXBpCisrKyBiL1Rvb2xzL0R1bXBSZW5k
ZXJUcmVlL0R1bXBSZW5kZXJUcmVlLmd5cGkKQEAgLTQ4LDggKzQ4LDYgQEAKICAgICAgICAgICAg
ICdjaHJvbWl1bS9XZWJQZXJtaXNzaW9ucy5oJywKICAgICAgICAgICAgICdjaHJvbWl1bS9XZWJQ
cmVmZXJlbmNlcy5jcHAnLAogICAgICAgICAgICAgJ2Nocm9taXVtL1dlYlByZWZlcmVuY2VzLmgn
LAotICAgICAgICAgICAgJ2Nocm9taXVtL1dlYlVzZXJNZWRpYUNsaWVudE1vY2suY3BwJywKLSAg
ICAgICAgICAgICdjaHJvbWl1bS9XZWJVc2VyTWVkaWFDbGllbnRNb2NrLmgnLAogICAgICAgICAg
ICAgJ2Nocm9taXVtL1dlYlZpZXdIb3N0LmNwcCcsCiAgICAgICAgICAgICAnY2hyb21pdW0vV2Vi
Vmlld0hvc3QuaCcsCiAgICAgICAgIF0sCmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJl
ZS9MYXlvdXRUZXN0Q29udHJvbGxlci5jcHAgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9MYXlvdXRU
ZXN0Q29udHJvbGxlci5jcHAKaW5kZXggMDc3YjA4MjM4YzYzOWM3N2RhZDEwNTljMjk4MTc5Y2Vl
NTcyNWYyOS4uYjc4MDNiMTU5MWI4MzdhM2FlMzI2Y2ZlYWU4YzY0MGI2YjI3ODljMCAxMDA2NDQK
LS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvTGF5b3V0VGVzdENvbnRyb2xsZXIuY3BwCisrKyBi
L1Rvb2xzL0R1bXBSZW5kZXJUcmVlL0xheW91dFRlc3RDb250cm9sbGVyLmNwcApAQCAtMjI4OCw2
ICsyMjg4LDE3IEBAIHN0YXRpYyB2b2lkIGxheW91dFRlc3RDb250cm9sbGVyT2JqZWN0RmluYWxp
emUoSlNPYmplY3RSZWYgb2JqZWN0KQogICAgIGNvbnRyb2xsZXItPmRlcmVmKCk7CiB9CiAKK3N0
YXRpYyBKU1ZhbHVlUmVmIHNldE1vY2tHZXRVc2VyTWVkaWFSZXN1bHRDYWxsYmFjayhKU0NvbnRl
eHRSZWYgY29udGV4dCwgSlNPYmplY3RSZWYgZnVuY3Rpb24sIEpTT2JqZWN0UmVmIHRoaXNPYmpl
Y3QsIHNpemVfdCBhcmd1bWVudENvdW50LCBjb25zdCBKU1ZhbHVlUmVmIGFyZ3VtZW50c1tdLCBK
U1ZhbHVlUmVmKiBleGNlcHRpb24pCit7CisgICAgaWYgKGFyZ3VtZW50Q291bnQgPT0gMikgewor
ICAgICAgICBib29sIGNhblByb3ZpZGVBdWRpbyA9IEpTVmFsdWVUb0Jvb2xlYW4oY29udGV4dCwg
YXJndW1lbnRzWzBdKTsKKyAgICAgICAgYm9vbCBjYW5Qcm92aWRlVmlkZW8gPSBKU1ZhbHVlVG9C
b29sZWFuKGNvbnRleHQsIGFyZ3VtZW50c1sxXSk7CisgICAgICAgIExheW91dFRlc3RDb250cm9s
bGVyKiBjb250cm9sbGVyID0gc3RhdGljX2Nhc3Q8TGF5b3V0VGVzdENvbnRyb2xsZXIqPihKU09i
amVjdEdldFByaXZhdGUodGhpc09iamVjdCkpOworICAgICAgICBjb250cm9sbGVyLT5zZXRNb2Nr
R2V0VXNlck1lZGlhUmVzdWx0KGNhblByb3ZpZGVBdWRpbywgY2FuUHJvdmlkZVZpZGVvKTsKKyAg
ICB9CisgICAgcmV0dXJuIEpTVmFsdWVNYWtlVW5kZWZpbmVkKGNvbnRleHQpOworfQorCiAvLyBP
YmplY3QgQ3JlYXRpb24KIAogdm9pZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6bWFrZVdpbmRvd09i
amVjdChKU0NvbnRleHRSZWYgY29udGV4dCwgSlNPYmplY3RSZWYgd2luZG93T2JqZWN0LCBKU1Zh
bHVlUmVmKiBleGNlcHRpb24pCkBAIC0yNDUwLDYgKzI0NjEsNyBAQCBKU1N0YXRpY0Z1bmN0aW9u
KiBMYXlvdXRUZXN0Q29udHJvbGxlcjo6c3RhdGljRnVuY3Rpb25zKCkKICAgICAgICAgeyAic2V0
TW9ja0dlb2xvY2F0aW9uUG9zaXRpb24iLCBzZXRNb2NrR2VvbG9jYXRpb25Qb3NpdGlvbkNhbGxi
YWNrLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pTUHJvcGVydHlBdHRyaWJ1dGVE
b250RGVsZXRlIH0sCiAgICAgICAgIHsgImFkZE1vY2tTcGVlY2hJbnB1dFJlc3VsdCIsIGFkZE1v
Y2tTcGVlY2hJbnB1dFJlc3VsdENhbGxiYWNrLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5
IHwga0pTUHJvcGVydHlBdHRyaWJ1dGVEb250RGVsZXRlIH0sCiAgICAgICAgIHsgInNldE1vY2tT
cGVlY2hJbnB1dER1bXBSZWN0Iiwgc2V0TW9ja1NwZWVjaElucHV0RHVtcFJlY3RDYWxsYmFjaywg
a0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERl
bGV0ZSB9LAorICAgICAgICB7ICJzZXRNb2NrR2V0VXNlck1lZGlhUmVzdWx0Iiwgc2V0TW9ja0dl
dFVzZXJNZWRpYVJlc3VsdENhbGxiYWNrLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5IHwg
a0pTUHJvcGVydHlBdHRyaWJ1dGVEb250RGVsZXRlIH0sCiAgICAgICAgIHsgInNldE5ld1dpbmRv
d3NDb3B5QmFja0ZvcndhcmRMaXN0Iiwgc2V0TmV3V2luZG93c0NvcHlCYWNrRm9yd2FyZExpc3RD
YWxsYmFjaywga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0cmli
dXRlRG9udERlbGV0ZSB9LAogICAgICAgICB7ICJzZXRQYWdlVmlzaWJpbGl0eSIsIHNldFBhZ2VW
aXNpYmlsaXR5Q2FsbGJhY2ssIGtKU1Byb3BlcnR5QXR0cmlidXRlUmVhZE9ubHkgfCBrSlNQcm9w
ZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUgfSwKICAgICAgICAgeyAic2V0UE9TSVhMb2NhbGUiLCBz
ZXRQT1NJWExvY2FsZUNhbGxiYWNrLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pT
UHJvcGVydHlBdHRyaWJ1dGVEb250RGVsZXRlIH0sCmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVu
ZGVyVHJlZS9MYXlvdXRUZXN0Q29udHJvbGxlci5oIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvTGF5
b3V0VGVzdENvbnRyb2xsZXIuaAppbmRleCA0NTI2NWRiNmRjNzBiNmYxYmQ3NjA5NDA5YjUwZTM3
ZGRlNjEyMDlhLi5mMmM0ZmRiZjMwN2RhYTYyNzg4NWRiNWFhNDA3MTJmNGQ1NGI1OWJlIDEwMDY0
NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9MYXlvdXRUZXN0Q29udHJvbGxlci5oCisrKyBi
L1Rvb2xzL0R1bXBSZW5kZXJUcmVlL0xheW91dFRlc3RDb250cm9sbGVyLmgKQEAgLTEwNyw2ICsx
MDcsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRNb2NrRGV2aWNlT3JpZW50YXRpb24oYm9vbCBj
YW5Qcm92aWRlQWxwaGEsIGRvdWJsZSBhbHBoYSwgYm9vbCBjYW5Qcm92aWRlQmV0YSwgZG91Ymxl
IGJldGEsIGJvb2wgY2FuUHJvdmlkZUdhbW1hLCBkb3VibGUgZ2FtbWEpOwogICAgIHZvaWQgc2V0
TW9ja0dlb2xvY2F0aW9uRXJyb3IoaW50IGNvZGUsIEpTU3RyaW5nUmVmIG1lc3NhZ2UpOwogICAg
IHZvaWQgc2V0TW9ja0dlb2xvY2F0aW9uUG9zaXRpb24oZG91YmxlIGxhdGl0dWRlLCBkb3VibGUg
bG9uZ2l0dWRlLCBkb3VibGUgYWNjdXJhY3kpOworICAgIHZvaWQgc2V0TW9ja0dldFVzZXJNZWRp
YVJlc3VsdChib29sIGF1ZGlvLCBib29sIHZpZGVvKTsKICAgICB2b2lkIGFkZE1vY2tTcGVlY2hJ
bnB1dFJlc3VsdChKU1N0cmluZ1JlZiByZXN1bHQsIGRvdWJsZSBjb25maWRlbmNlLCBKU1N0cmlu
Z1JlZiBsYW5ndWFnZSk7CiAgICAgdm9pZCBzZXRNb2NrU3BlZWNoSW5wdXREdW1wUmVjdChib29s
IGZsYWcpOwogICAgIHZvaWQgc2V0UGVyc2lzdGVudFVzZXJTdHlsZVNoZWV0TG9jYXRpb24oSlNT
dHJpbmdSZWYgcGF0aCk7CmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1
bS9MYXlvdXRUZXN0Q29udHJvbGxlci5jcHAgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1
bS9MYXlvdXRUZXN0Q29udHJvbGxlci5jcHAKaW5kZXggNTQyOGVmYzkxZmNmYmY0NDFkNTJjYTVj
NWQzM2NkMGJmNWQ4N2ZhOS4uNjI1YWVlZTJmMGVmZDRjMzkyZjBlZjNhZTBiNmJjZTg2ZGVjYzE4
OSAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vTGF5b3V0VGVzdENv
bnRyb2xsZXIuY3BwCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL0xheW91dFRl
c3RDb250cm9sbGVyLmNwcApAQCAtNTUsNiArNTUsNyBAQAogI2luY2x1ZGUgIldlYlNjcmlwdFNv
dXJjZS5oIgogI2luY2x1ZGUgIldlYlNlY3VyaXR5UG9saWN5LmgiCiAjaW5jbHVkZSAiV2ViU2V0
dGluZ3MuaCIKKyNpbmNsdWRlICJXZWJVc2VyTWVkaWFDbGllbnRNb2NrLmgiCiAjaW5jbHVkZSAi
cGxhdGZvcm0vV2ViU2l6ZS5oIgogI2luY2x1ZGUgInBsYXRmb3JtL1dlYlVSTC5oIgogI2luY2x1
ZGUgIldlYlZpZXcuaCIKQEAgLTE4Myw2ICsxODQsNyBAQCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6
TGF5b3V0VGVzdENvbnRyb2xsZXIoVGVzdFNoZWxsKiBzaGVsbCkKICAgICBiaW5kTWV0aG9kKCJz
ZXRNb2NrRGV2aWNlT3JpZW50YXRpb24iLCAmTGF5b3V0VGVzdENvbnRyb2xsZXI6OnNldE1vY2tE
ZXZpY2VPcmllbnRhdGlvbik7CiAgICAgYmluZE1ldGhvZCgic2V0TW9ja0dlb2xvY2F0aW9uRXJy
b3IiLCAmTGF5b3V0VGVzdENvbnRyb2xsZXI6OnNldE1vY2tHZW9sb2NhdGlvbkVycm9yKTsKICAg
ICBiaW5kTWV0aG9kKCJzZXRNb2NrR2VvbG9jYXRpb25Qb3NpdGlvbiIsICZMYXlvdXRUZXN0Q29u
dHJvbGxlcjo6c2V0TW9ja0dlb2xvY2F0aW9uUG9zaXRpb24pOworICAgIGJpbmRNZXRob2QoInNl
dE1vY2tHZXRVc2VyTWVkaWFSZXN1bHQiLCAmTGF5b3V0VGVzdENvbnRyb2xsZXI6OnNldE1vY2tH
ZXRVc2VyTWVkaWFSZXN1bHQpOwogICAgIGJpbmRNZXRob2QoInNldFBhZ2VWaXNpYmlsaXR5Iiwg
JkxheW91dFRlc3RDb250cm9sbGVyOjpzZXRQYWdlVmlzaWJpbGl0eSk7CiAgICAgYmluZE1ldGhv
ZCgic2V0UGx1Z2luc0VuYWJsZWQiLCAmTGF5b3V0VGVzdENvbnRyb2xsZXI6OnNldFBsdWdpbnNF
bmFibGVkKTsKICNpZiBFTkFCTEUoUE9JTlRFUl9MT0NLKQpAQCAtMTkxMCw2ICsxOTEyLDE3IEBA
IHZvaWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OnNldE1vY2tHZW9sb2NhdGlvbkVycm9yKGNvbnN0
IENwcEFyZ3VtZW50TGlzdCYgYXJndW1lCiAgICAgICAgIHdpbmRvd0xpc3RbaV0tPmdlb2xvY2F0
aW9uQ2xpZW50TW9jaygpLT5zZXRFcnJvcihhcmd1bWVudHNbMF0udG9JbnQzMigpLCBjcHBWYXJp
YW50VG9XZWJTdHJpbmcoYXJndW1lbnRzWzFdKSk7CiB9CiAKK3ZvaWQgTGF5b3V0VGVzdENvbnRy
b2xsZXI6OnNldE1vY2tHZXRVc2VyTWVkaWFSZXN1bHQoY29uc3QgQ3BwQXJndW1lbnRMaXN0JiBh
cmd1bWVudHMsIENwcFZhcmlhbnQqIHJlc3VsdCkKK3sKKyAgICByZXN1bHQtPnNldE51bGwoKTsK
KyAgICBpZiAoYXJndW1lbnRzLnNpemUoKSA8IDIgfHwgIWFyZ3VtZW50c1swXS5pc0Jvb2woKSB8
fCAhYXJndW1lbnRzWzFdLmlzQm9vbCgpKQorICAgICAgICByZXR1cm47CisKKyAgICBWZWN0b3I8
V2ViVmlld0hvc3QqPiB3aW5kb3dMaXN0ID0gbV9zaGVsbC0+d2luZG93TGlzdCgpOworICAgIGZv
ciAoc2l6ZV90IGkgPSAwOyBpIDwgd2luZG93TGlzdC5zaXplKCk7IGkrKykKKyAgICAgICAgd2lu
ZG93TGlzdFtpXS0+dXNlck1lZGlhQ2xpZW50TW9jaygpLT5zZXRHZXRVc2VyTWVkaWFSZXN1bHQo
YXJndW1lbnRzWzBdLnRvQm9vbGVhbigpLCBhcmd1bWVudHNbMV0udG9Cb29sZWFuKCkpOworfQor
CiB2b2lkIExheW91dFRlc3RDb250cm9sbGVyOjphYm9ydE1vZGFsKGNvbnN0IENwcEFyZ3VtZW50
TGlzdCYgYXJndW1lbnRzLCBDcHBWYXJpYW50KiByZXN1bHQpCiB7CiAgICAgcmVzdWx0LT5zZXRO
dWxsKCk7CmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9MYXlvdXRU
ZXN0Q29udHJvbGxlci5oIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vTGF5b3V0VGVz
dENvbnRyb2xsZXIuaAppbmRleCA5OWJkMGM0NjllMWMxNTFlZjU0MDY1M2FiNzcyZGNmYmRhMmVh
MDA3Li5lZTViOTYzMDdiYzc3ZjRjM2ViN2EwMTgzNmM5NjE5MDk2NWRlMjA3IDEwMDY0NAotLS0g
YS9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9MYXlvdXRUZXN0Q29udHJvbGxlci5oCisr
KyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL0xheW91dFRlc3RDb250cm9sbGVyLmgK
QEAgLTM3MSw2ICszNzEsOSBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRNb2NrR2VvbG9jYXRpb25Q
b3NpdGlvbihjb25zdCBDcHBBcmd1bWVudExpc3QmLCBDcHBWYXJpYW50Kik7CiAgICAgdm9pZCBz
ZXRNb2NrR2VvbG9jYXRpb25FcnJvcihjb25zdCBDcHBBcmd1bWVudExpc3QmLCBDcHBWYXJpYW50
Kik7CiAKKyAgICAvLyBNZWRpYVN0cmVhbSByZWxhdGVkIGZ1bmN0aW9ucy4KKyAgICB2b2lkIHNl
dE1vY2tHZXRVc2VyTWVkaWFSZXN1bHQoY29uc3QgQ3BwQXJndW1lbnRMaXN0JiwgQ3BwVmFyaWFu
dCopOworCiAgICAgLy8gRW1wdHkgc3R1YiBtZXRob2QgdG8ga2VlcCBwYXJpdHkgd2l0aCBvYmpl
Y3QgbW9kZWwgZXhwb3NlZCBieSBnbG9iYWwgTGF5b3V0VGVzdENvbnRyb2xsZXIuCiAgICAgdm9p
ZCBhYm9ydE1vZGFsKGNvbnN0IENwcEFyZ3VtZW50TGlzdCYsIENwcFZhcmlhbnQqKTsKIApkaWZm
IC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vV2ViVXNlck1lZGlhQ2xpZW50
TW9jay5jcHAgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9XZWJVc2VyTWVkaWFDbGll
bnRNb2NrLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMGY0NDJhNjc2MzliMGY2
MWU4OTA2NjgxOGIzMTU2M2ZkZTVlNmU3Mi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9XZWJVc2VyTWVk
aWFDbGllbnRNb2NrLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDgzICswLDAgQEAKLS8qCi0gKiBD
b3B5cmlnaHQgKEMpIDIwMTIgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0g
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLSAqIG1ldDoKLSAqCi0gKiAgICAgKiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAotICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgotICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZQotICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgotICogaW4gdGhlIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQotICogZGlzdHJp
YnV0aW9uLgotICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhl
IG5hbWVzIG9mIGl0cwotICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3Ig
cHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLSAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBz
cGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwotICog
IkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgotICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLSAqIE9XTkVSIE9SIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LAotICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0gKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLSAqIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAi
Y29uZmlnLmgiCi0jaW5jbHVkZSAiV2ViVXNlck1lZGlhQ2xpZW50TW9jay5oIgotCi0jaW5jbHVk
ZSAiV2ViTWVkaWFTdHJlYW1SZWdpc3RyeS5oIgotI2luY2x1ZGUgIldlYlVzZXJNZWRpYVJlcXVl
c3QuaCIKLSNpbmNsdWRlICJwbGF0Zm9ybS9XZWJNZWRpYVN0cmVhbURlc2NyaXB0b3IuaCIKLSNp
bmNsdWRlICJwbGF0Zm9ybS9XZWJNZWRpYVN0cmVhbVNvdXJjZS5oIgotI2luY2x1ZGUgInBsYXRm
b3JtL1dlYlZlY3Rvci5oIgotI2luY2x1ZGUgPHd0Zi9Bc3NlcnRpb25zLmg+Ci0KLW5hbWVzcGFj
ZSBXZWJLaXQgewotCi1QYXNzT3duUHRyPFdlYlVzZXJNZWRpYUNsaWVudE1vY2s+IFdlYlVzZXJN
ZWRpYUNsaWVudE1vY2s6OmNyZWF0ZSgpCi17Ci0gICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBXZWJV
c2VyTWVkaWFDbGllbnRNb2NrKCkpOwotfQotCi1ib29sIFdlYlVzZXJNZWRpYUNsaWVudE1vY2s6
OklzTW9ja1N0cmVhbShjb25zdCBXZWJVUkwmIHVybCkKLXsKLSAgICBXZWJNZWRpYVN0cmVhbURl
c2NyaXB0b3IgZGVzY3JpcHRvcihXZWJNZWRpYVN0cmVhbVJlZ2lzdHJ5Ojpsb29rdXBNZWRpYVN0
cmVhbURlc2NyaXB0b3IodXJsKSk7Ci0gICAgaWYgKGRlc2NyaXB0b3IuaXNOdWxsKCkpCi0gICAg
ICAgIHJldHVybiBmYWxzZTsKLQotICAgIFdlYlZlY3RvcjxXZWJNZWRpYVN0cmVhbVNvdXJjZT4g
c291cmNlVmVjdG9yOwotICAgIGRlc2NyaXB0b3Iuc291cmNlcyhzb3VyY2VWZWN0b3IpOwotICAg
IFdlYlN0cmluZyB0cmFja0lkOwotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgc291cmNlVmVj
dG9yLnNpemUoKTsgKytpKSB7Ci0gICAgICAgIGlmIChzb3VyY2VWZWN0b3JbaV0udHlwZSgpID09
IFdlYk1lZGlhU3RyZWFtU291cmNlOjpUeXBlVmlkZW8pIHsKLSAgICAgICAgICAgIHRyYWNrSWQg
PSBzb3VyY2VWZWN0b3JbaV0uaWQoKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0g
ICAgfQotICAgIHJldHVybiB0cmFja0lkLmVxdWFscygibWVkaWFzdHJlYW10ZXN0Iik7Ci19Ci0K
LXZvaWQgV2ViVXNlck1lZGlhQ2xpZW50TW9jazo6cmVxdWVzdFVzZXJNZWRpYShjb25zdCBXZWJV
c2VyTWVkaWFSZXF1ZXN0JiBzdHJlYW1SZXF1ZXN0LCBjb25zdCBXZWJWZWN0b3I8V2ViTWVkaWFT
dHJlYW1Tb3VyY2U+JiBzdHJlYW1Tb3VyY2VWZWN0b3IpCi17Ci0gICAgQVNTRVJUKCFzdHJlYW1S
ZXF1ZXN0LmlzTnVsbCgpKTsKLQotICAgIFdlYlVzZXJNZWRpYVJlcXVlc3QgcmVxdWVzdCA9IHN0
cmVhbVJlcXVlc3Q7Ci0gICAgY29uc3Qgc2l6ZV90IHNpemUgPSAxOwotICAgIFdlYlZlY3RvcjxX
ZWJNZWRpYVN0cmVhbVNvdXJjZT4gc291cmNlVmVjdG9yKHNpemUpOwotICAgIFdlYlN0cmluZyB0
cmFja0lkKCJtZWRpYXN0cmVhbXRlc3QiKTsKLSAgICBXZWJTdHJpbmcgdHJhY2tOYW1lKCJWaWRl
b0NhcHR1cmUiKTsKLSAgICBzb3VyY2VWZWN0b3JbMF0uaW5pdGlhbGl6ZSh0cmFja0lkLCBXZWJN
ZWRpYVN0cmVhbVNvdXJjZTo6VHlwZVZpZGVvLCB0cmFja05hbWUpOwotICAgIHJlcXVlc3QucmVx
dWVzdFN1Y2NlZWRlZChzb3VyY2VWZWN0b3IpOwotfQotCi12b2lkIFdlYlVzZXJNZWRpYUNsaWVu
dE1vY2s6OmNhbmNlbFVzZXJNZWRpYVJlcXVlc3QoY29uc3QgV2ViVXNlck1lZGlhUmVxdWVzdCYp
Ci17Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJl
bmRlclRyZWUvY2hyb21pdW0vV2ViVXNlck1lZGlhQ2xpZW50TW9jay5oIGIvVG9vbHMvRHVtcFJl
bmRlclRyZWUvY2hyb21pdW0vV2ViVXNlck1lZGlhQ2xpZW50TW9jay5oCmRlbGV0ZWQgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCA0ZDkxODM5YzYyODJhZGE5ZTQ1Nzg3YjBkMWNjMDBhZmNjYmQ2OTBh
Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1Rvb2xzL0R1
bXBSZW5kZXJUcmVlL2Nocm9taXVtL1dlYlVzZXJNZWRpYUNsaWVudE1vY2suaAorKysgL2Rldi9u
dWxsCkBAIC0xLDYwICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTIgR29vZ2xlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBh
cmUKLSAqIG1ldDoKLSAqCi0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogICAgICogUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotICogY29w
eXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lcgotICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZQotICogZGlzdHJpYnV0aW9uLgotICogICAgICogTmVpdGhlciB0
aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwotICogY29udHJpYnV0
b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZy
b20KLSAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1p
c3Npb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hU
IEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwotICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgot
ICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IFRIRSBDT1BZUklHSFQKLSAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAotICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsCi0gKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkKLSAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICog
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KLSAqLwotCi0jaWZuZGVmIFdlYlVzZXJNZWRpYUNsaWVudE1vY2tfaAotI2Rl
ZmluZSBXZWJVc2VyTWVkaWFDbGllbnRNb2NrX2gKLQotI2luY2x1ZGUgIldlYlVzZXJNZWRpYUNs
aWVudC5oIgotI2luY2x1ZGUgInBsYXRmb3JtL1dlYkNvbW1vbi5oIgotI2luY2x1ZGUgInBsYXRm
b3JtL1dlYlN0cmluZy5oIgotI2luY2x1ZGUgInBsYXRmb3JtL1dlYlVSTC5oIgotI2luY2x1ZGUg
IndlYmtpdC9zdXBwb3J0L3Rlc3RfbWVkaWFfc3RyZWFtX2NsaWVudC5oIgotI2luY2x1ZGUgPHd0
Zi9QYXNzT3duUHRyLmg+Ci0KLW5hbWVzcGFjZSBXZWJLaXQgewotCi1jbGFzcyBXZWJVc2VyTWVk
aWFDbGllbnRNb2NrIDogcHVibGljIFdlYlVzZXJNZWRpYUNsaWVudCwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBwdWJsaWMgd2Via2l0X3N1cHBvcnQ6Ok1lZGlhU3RyZWFtVXRpbCB7
Ci1wdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NPd25QdHI8V2ViVXNlck1lZGlhQ2xpZW50TW9jaz4g
Y3JlYXRlKCk7Ci0gICAgfldlYlVzZXJNZWRpYUNsaWVudE1vY2soKSB7IH0KLQotICAgIGJvb2wg
SXNNb2NrU3RyZWFtKGNvbnN0IFdlYlVSTCYpOwotCi0gICAgdmlydHVhbCB2b2lkIHJlcXVlc3RV
c2VyTWVkaWEoY29uc3QgV2ViVXNlck1lZGlhUmVxdWVzdCYsIGNvbnN0IFdlYlZlY3RvcjxXZWJN
ZWRpYVN0cmVhbVNvdXJjZT4mKTsKLSAgICB2aXJ0dWFsIHZvaWQgY2FuY2VsVXNlck1lZGlhUmVx
dWVzdChjb25zdCBXZWJVc2VyTWVkaWFSZXF1ZXN0Jik7Ci0KLXByaXZhdGU6Ci0gICAgV2ViVXNl
ck1lZGlhQ2xpZW50TW9jaygpIHsgfQotfTsKLQotfSAvLyBuYW1lc3BhY2UgV2ViS2l0Ci0KLSNl
bmRpZiAvLyBXZWJVc2VyTWVkaWFDbGllbnRNb2NrX2gKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBS
ZW5kZXJUcmVlL2Nocm9taXVtL1dlYlZpZXdIb3N0LmNwcCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVl
L2Nocm9taXVtL1dlYlZpZXdIb3N0LmNwcAppbmRleCA3NDVjYmMwZTljNmE3NmEwMzY2MDNhODYx
Y2IyOWM3ZWZlNDAzNGEwLi4zZDZhYTcwNGVhOGE1MWQ5YTRmZWRiM2YxNWUyODhlNjdiMjEwZTkw
IDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9XZWJWaWV3SG9zdC5j
cHAKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vV2ViVmlld0hvc3QuY3BwCkBA
IC0xNjQzLDE1ICsxNjQzLDEwIEBAIHZvaWQgV2ViVmlld0hvc3Q6OmV4aXRGdWxsU2NyZWVuTm93
KCkKICAgICB3ZWJWaWV3KCktPmRpZEV4aXRGdWxsU2NyZWVuKCk7CiB9CiAKLXdlYmtpdF9zdXBw
b3J0OjpNZWRpYVN0cmVhbVV0aWwqIFdlYlZpZXdIb3N0OjptZWRpYVN0cmVhbVV0aWwoKQotewot
ICAgIHJldHVybiB1c2VyTWVkaWFDbGllbnRNb2NrKCk7Ci19Ci0KIHdlYmtpdF9zdXBwb3J0OjpU
ZXN0TWVkaWFTdHJlYW1DbGllbnQqIFdlYlZpZXdIb3N0Ojp0ZXN0TWVkaWFTdHJlYW1DbGllbnQo
KQogewogICAgIGlmICghbV90ZXN0TWVkaWFTdHJlYW1DbGllbnQuZ2V0KCkpCi0gICAgICAgIG1f
dGVzdE1lZGlhU3RyZWFtQ2xpZW50ID0gYWRvcHRQdHIobmV3IHdlYmtpdF9zdXBwb3J0OjpUZXN0
TWVkaWFTdHJlYW1DbGllbnQobWVkaWFTdHJlYW1VdGlsKCkpKTsKKyAgICAgICAgbV90ZXN0TWVk
aWFTdHJlYW1DbGllbnQgPSBhZG9wdFB0cihuZXcgd2Via2l0X3N1cHBvcnQ6OlRlc3RNZWRpYVN0
cmVhbUNsaWVudCgpKTsKICAgICByZXR1cm4gbV90ZXN0TWVkaWFTdHJlYW1DbGllbnQuZ2V0KCk7
CiB9CiAKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1dlYlZpZXdI
b3N0LmggYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9XZWJWaWV3SG9zdC5oCmluZGV4
IDZmNzU5NzI4ZjAxODkzNjE1YWMwOTE1MWE5NTM3NjMxYzU3YjQyNGUuLmEzNDBhMTFmMzQ1YjA4
NWNiZWM1ZDg5MDNiZTc4YzBjZDRkNmEyYTYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJU
cmVlL2Nocm9taXVtL1dlYlZpZXdIb3N0LmgKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hy
b21pdW0vV2ViVmlld0hvc3QuaApAQCAtMjQ1LDYgKzI0NSw5IEBAIGNsYXNzIFdlYlZpZXdIb3N0
IDogcHVibGljIFdlYktpdDo6V2ViU3BlbGxDaGVja0NsaWVudCwgcHVibGljIFdlYktpdDo6V2Vi
Vmlld0NsCiAgICAgLy8gR2VvbG9jYXRpb24gY2xpZW50IG1vY2tzIGZvciBMYXlvdXRUZXN0Q29u
dHJvbGxlcgogICAgIFdlYktpdDo6V2ViR2VvbG9jYXRpb25DbGllbnRNb2NrKiBnZW9sb2NhdGlv
bkNsaWVudE1vY2soKTsKIAorICAgIC8vIFVzZXIgbWVkaWEgY2xpZW50IG1vY2tzIGZvciBMYXlv
dXRUZXN0Q29udHJvbGxlcgorICAgIFdlYktpdDo6V2ViVXNlck1lZGlhQ2xpZW50TW9jayogdXNl
ck1lZGlhQ2xpZW50TW9jaygpOworCiAgICAgLy8gUGVuZGluZyB0YXNrIGxpc3QsIE5vdGUgdGFo
dCB0aGUgbWV0aG9kIGlzIHJlZmVycmVkIGZyb20gTWV0aG9kVGFzayBjbGFzcy4KICAgICBUYXNr
TGlzdCogdGFza0xpc3QoKSB7IHJldHVybiAmbV90YXNrTGlzdDsgfQogCkBAIC0zMDUsOCArMzA4
LDYgQEAgcHJpdmF0ZToKICAgICB2b2lkIGRpZE5vdEFjcXVpcmVQb2ludGVyTG9jaygpOwogI2Vu
ZGlmCiAKLSAgICBXZWJLaXQ6OldlYlVzZXJNZWRpYUNsaWVudE1vY2sqIHVzZXJNZWRpYUNsaWVu
dE1vY2soKTsKLSAgICB3ZWJraXRfc3VwcG9ydDo6TWVkaWFTdHJlYW1VdGlsKiBtZWRpYVN0cmVh
bVV0aWwoKTsKICAgICB3ZWJraXRfc3VwcG9ydDo6VGVzdE1lZGlhU3RyZWFtQ2xpZW50KiB0ZXN0
TWVkaWFTdHJlYW1DbGllbnQoKTsKIAogICAgIC8vIENhdXNlcyBuYXZpZ2F0aW9uIGFjdGlvbnMg
anVzdCBwcmludG91dCB0aGUgaW50ZW5kZWQgbmF2aWdhdGlvbiBpbnN0ZWFkCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggZDlj
OWEzNjNkZjVmZmM5MWViZWNjY2ZlYjJlYTc4OTkxZTc5MjIyMC4uN2ZmOGRhZTg5ZTZjZWFjYWZj
OWUyZmE3ZTk1ZGVhMWYyMjNiNjY5ZiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9n
CisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE2IEBACisyMDEyLTAyLTE1
ICBUb21teSBXaWRlbmZseWNodCAgPHRvbW15d0Bnb29nbGUuY29tPgorCisgICAgICAgIEltcGxl
bWVudCBMYXlvdXQgVGVzdHMgZm9yIHRoZSBNZWRpYSBTdHJlYW0gQVBJCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01NjU4NworCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogZmFzdC9tZWRpYXN0cmVhbS9nZXR1
c2VybWVkaWEtbm90LWFsbG93ZWQtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0
L21lZGlhc3RyZWFtL2dldHVzZXJtZWRpYS1ub3QtYWxsb3dlZC5odG1sOiBBZGRlZC4KKyAgICAg
ICAgKiBmYXN0L21lZGlhc3RyZWFtL3NjcmlwdC10ZXN0cy9nZXR1c2VybWVkaWEtbm90LWFsbG93
ZWQuanM6IEFkZGVkLgorICAgICAgICAoc3VjY2VlZCk6CisgICAgICAgIChmYWlsKToKKwogMjAx
Mi0wMi0xNSAgS2VudCBUYW11cmEgIDx0a2VudEBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgVW5y
ZXZpZXdlZCwgY29ycmVjdCBzdm46bWltZS10eXBlIG9mIGEgdGVzdC4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2Zhc3QvbWVkaWFzdHJlYW0vZ2V0dXNlcm1lZGlhLW5vdC1hbGxvd2VkLWV4cGVj
dGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvbWVkaWFzdHJlYW0vZ2V0dXNlcm1lZGlhLW5vdC1h
bGxvd2VkLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wMzU2ZDRmMGU2MjcyMzBkNmQ2M2YxZTgy
NGY5ZjUwM2QyNWJlYTAzCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9tZWRp
YXN0cmVhbS9nZXR1c2VybWVkaWEtbm90LWFsbG93ZWQtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEs
MTIgQEAKK1Rlc3RzIE5hdmlnYXRvci5nZXRVc2VyTWVkaWEoKQorCitPbiBzdWNjZXNzLCB5b3Ug
d2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBD
T01QTEVURSIuCisKKworUEFTUyBOb3QgYWxsb3dlZAorUEFTUyBOb3QgYWxsb3dlZAorUEFTUyBO
b3QgYWxsb3dlZAorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBM
RVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvbWVkaWFzdHJlYW0vZ2V0dXNlcm1l
ZGlhLW5vdC1hbGxvd2VkLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L21lZGlhc3RyZWFtL2dldHVz
ZXJtZWRpYS1ub3QtYWxsb3dlZC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjdhN2ZiMWM3OWVkZDA4ODE5YTA1
ZGE0NGMyZjBlOGQ5NDc3MDFhNGUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0
L21lZGlhc3RyZWFtL2dldHVzZXJtZWRpYS1ub3QtYWxsb3dlZC5odG1sCkBAIC0wLDAgKzEsMTMg
QEAKKzwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vSUVURi8vRFREIEhUTUwvL0VOIj4KKzxodG1s
PgorPGhlYWQ+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uL2pzL3Jlc291cmNlcy9q
cy10ZXN0LXN0eWxlLmNzcyI+Cis8c2NyaXB0IHNyYz0iLi4vanMvcmVzb3VyY2VzL2pzLXRlc3Qt
cHJlLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPHAgaWQ9ImRlc2NyaXB0aW9uIj48
L3A+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQgc3JjPSJzY3JpcHQtdGVzdHMv
Z2V0dXNlcm1lZGlhLW5vdC1hbGxvd2VkLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi9q
cy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvbWVkaWFzdHJlYW0vc2NyaXB0LXRlc3RzL2dl
dHVzZXJtZWRpYS1ub3QtYWxsb3dlZC5qcyBiL0xheW91dFRlc3RzL2Zhc3QvbWVkaWFzdHJlYW0v
c2NyaXB0LXRlc3RzL2dldHVzZXJtZWRpYS1ub3QtYWxsb3dlZC5qcwpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hNzkw
MzcxNjExMjRmZjMxMTJiMTI1ZmExNzZjZGY0YjZhYThiYzAzCi0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvZmFzdC9tZWRpYXN0cmVhbS9zY3JpcHQtdGVzdHMvZ2V0dXNlcm1lZGlhLW5v
dC1hbGxvd2VkLmpzCkBAIC0wLDAgKzEsMjIgQEAKK2Rlc2NyaXB0aW9uKCJUZXN0cyBOYXZpZ2F0
b3IuZ2V0VXNlck1lZGlhKCkiKTsKKworaWYgKCF3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIp
CisgICAgZGVidWcoJ1RoaXMgdGVzdCBjYW4gbm90IGJlIHJ1biB3aXRob3V0IHRoZSBMYXlvdXRU
ZXN0Q29udHJvbGxlcicpOworCitsYXlvdXRUZXN0Q29udHJvbGxlci5zZXRNb2NrR2V0VXNlck1l
ZGlhUmVzdWx0KGZhbHNlLCBmYWxzZSk7CisKK2Z1bmN0aW9uIHN1Y2NlZWQoc3RyZWFtKSB7Cisg
ICAgdGVzdEZhaWxlZCgnU2hvdWxkIG5vdCBoYXBwZW4nKTsKK30KKworZnVuY3Rpb24gZmFpbCgp
IHsKKyAgICB0ZXN0UGFzc2VkKCdOb3QgYWxsb3dlZCcpOworfQorCituYXZpZ2F0b3Iud2Via2l0
R2V0VXNlck1lZGlhKCJhdWRpbywgdmlkZW8iLCBzdWNjZWVkLCBmYWlsKTsKK25hdmlnYXRvci53
ZWJraXRHZXRVc2VyTWVkaWEoImF1ZGlvIiwgc3VjY2VlZCwgZmFpbCk7CituYXZpZ2F0b3Iud2Vi
a2l0R2V0VXNlck1lZGlhKCJ2aWRlbyIsIHN1Y2NlZWQsIGZhaWwpOworCitmaW5pc2hKU1Rlc3Qo
KTsKK3dpbmRvdy5zdWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVlOworCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>