<?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>159580</bug_id>
          
          <creation_ts>2016-07-08 13:34:16 -0700</creation_ts>
          <short_desc>Refactor WebPlaybackSessionModelMediaElement to be client based.</short_desc>
          <delta_ts>2016-09-28 14:30:47 -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>Media</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Jeremy Jones">jeremyj-wk</reporter>
          <assigned_to name="Jer Noble">jer.noble</assigned_to>
          <cc>bdakin</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>jer.noble</cc>
    
    <cc>jonlee</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>wenson_hsieh</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1209256</commentid>
    <comment_count>0</comment_count>
    <who name="Jeremy Jones">jeremyj-wk</who>
    <bug_when>2016-07-08 13:34:16 -0700</bug_when>
    <thetext>WebPlaybackSessionModelMediaElement currently only supports a single interface client. This should be refactored so that it supports multiple clients that can each register and unregister for state changes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1209329</commentid>
    <comment_count>1</comment_count>
      <attachid>283223</attachid>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2016-07-08 16:46:45 -0700</bug_when>
    <thetext>Created attachment 283223
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1209349</commentid>
    <comment_count>2</comment_count>
      <attachid>283227</attachid>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2016-07-08 17:19:52 -0700</bug_when>
    <thetext>Created attachment 283227
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1224225</commentid>
    <comment_count>3</comment_count>
      <attachid>287287</attachid>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2016-08-29 11:24:41 -0700</bug_when>
    <thetext>Created attachment 287287
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1224690</commentid>
    <comment_count>4</comment_count>
      <attachid>287287</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2016-08-30 14:00:43 -0700</bug_when>
    <thetext>Comment on attachment 287287
Patch

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

&gt; Source/WebCore/ChangeLog:9
&gt; +        can have multiple clients, and that the object will both store current values and also notify those clients

Nit: &quot;and that the object&quot; -&gt; &quot;and so the object&quot;

&gt; Source/WebCore/platform/cocoa/WebPlaybackSessionModelMediaElement.mm:96
&gt; +        for (auto* client : m_clients)

Nit&quot; auto&amp; because m_clients can&apos;t have NULL values

&gt; Source/WebCore/platform/cocoa/WebPlaybackSessionModelMediaElement.mm:111
&gt; +        for (auto* client : m_clients)

Ditto.

&gt; Source/WebCore/platform/cocoa/WebPlaybackSessionModelMediaElement.mm:122
&gt; +        for (auto* client : m_clients) {

Ditto.

&gt; Source/WebCore/platform/cocoa/WebPlaybackSessionModelMediaElement.mm:125
&gt; +            // FIXME: 130788 - find a better event to update seekable ranges from.

Nit: &quot;update seekable ranges from&quot; what?

&gt; Source/WebCore/platform/cocoa/WebPlaybackSessionModelMediaElement.mm:143
&gt; +        for (auto* client : m_clients) {

Nit: auto&amp;

&gt; Source/WebCore/platform/cocoa/WebPlaybackSessionModelMediaElement.mm:281
&gt; +    for (auto&amp; client : m_clients) {

Nit: &quot;auto&quot; if you don&apos;t decide to change the ones above.

&gt; Source/WebCore/platform/cocoa/WebPlaybackSessionModelMediaElement.mm:393
&gt; +    auto host = m_mediaElement-&gt;mediaControlsHost();

Nit: if you move this above the test you can avoid calling the method twice.

&gt; Source/WebCore/platform/cocoa/WebVideoFullscreenModelVideoElement.mm:99
&gt; +        setHasVideo(!!m_videoElement);

Nit: &quot;!!&quot; shouldn&apos;t be necessary as setHasVideo takes a bool, not a BOOL

&gt; Source/WebCore/platform/ios/WebVideoFullscreenControllerAVKit.mm:749
&gt; +    m_playbackModel-&gt;setMediaElement(m_videoElement.get());

Nit: not &quot;.get()&quot; necessary if you use the &quot;videoElement&quot; parameter.

&gt; Source/WebCore/platform/ios/WebVideoFullscreenControllerAVKit.mm:757
&gt; +    m_fullscreenModel-&gt;setVideoElement(m_videoElement.get());
&gt; +
&gt; +    bool allowsPictureInPicture = m_videoElement-&gt;mediaSession().allowsPictureInPicture(*m_videoElement.get());
&gt; +
&gt; +    IntRect videoElementClientRect = elementRectInWindow(m_videoElement.get());

Ditto.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1225874</commentid>
    <comment_count>5</comment_count>
      <attachid>287796</attachid>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2016-09-02 12:11:28 -0700</bug_when>
    <thetext>Created attachment 287796
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1225912</commentid>
    <comment_count>6</comment_count>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2016-09-02 13:08:52 -0700</bug_when>
    <thetext>Committed r205365: &lt;http://trac.webkit.org/changeset/205365&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1234556</commentid>
    <comment_count>7</comment_count>
    <who name="Jon Lee">jonlee</who>
    <bug_when>2016-09-28 14:30:47 -0700</bug_when>
    <thetext>rdar://problem/28020157</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>283223</attachid>
            <date>2016-07-08 16:46:45 -0700</date>
            <delta_ts>2016-07-08 17:19:49 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-159580-20160708164609.patch</filename>
            <type>text/plain</type>
            <size>189572</size>
            <attacher name="Jer Noble">jer.noble</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjAyOTE3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZjAwOWE2YzliZWYxMzIx
NjQ1OWM0NTI2NjVjZGY4OWVkY2YwOWMxOC4uMTQzMWM1MTM5YzZiZWRkNTIyZjk3YjljZjk2MjAz
NmFlNDI3MDk1MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDIzMyBAQAogMjAxNi0wNy0wOCAgSmVy
IE5vYmxlICA8amVyLm5vYmxlQGFwcGxlLmNvbT4KIAorICAgICAgICBSZWZhY3RvciBXZWJQbGF5
YmFja1Nlc3Npb25Nb2RlbE1lZGlhRWxlbWVudCB0byBiZSBjbGllbnQgYmFzZWQuCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTk1ODAKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgY2xpZW50IGNhbGxi
YWNrIGludGVyZmFjZXMgdG8gYm90aCBXZWJQbGF5YmFja1Nlc3Npb25Nb2RlbCBhbmQgV2ViVmlk
ZW9GdWxsc2NyZWVuTW9kZWwsIHdoZXJlIGVhY2ggb2JqZWN0CisgICAgICAgIGNhbiBoYXZlIG11
bHRpcGxlIGNsaWVudHMsIGFuZCB0aGF0IHRoZSBvYmplY3Qgd2lsbCBib3RoIHN0b3JlIGN1cnJl
bnQgdmFsdWVzIGFuZCBhbHNvIG5vdGlmeSB0aG9zZSBjbGllbnRzCisgICAgICAgIHdoZW4gdGhl
IHZhbHVlcyBjaGFuZ2UuIEFmdGVyIHRoaXMgY2hhbmdlLCB0aGVyZSBpcyBubyBuZWVkIHRvIGhh
dmUgdGhlIG1vZGVscyBrbm93IGFib3V0IHRoZWlyIGFzc29jaWF0ZWQKKyAgICAgICAgaW50ZXJm
YWNlcyBleHBsaWNpdGx5LgorCisgICAgICAgICogcGxhdGZvcm0vY29jb2EvV2ViUGxheWJhY2tT
ZXNzaW9uSW50ZXJmYWNlLmg6CisgICAgICAgICogcGxhdGZvcm0vY29jb2EvV2ViUGxheWJhY2tT
ZXNzaW9uTW9kZWwuaDoKKyAgICAgICAgKFdlYkNvcmU6OldlYlBsYXliYWNrU2Vzc2lvbk1vZGVs
Q2xpZW50Ojp+V2ViUGxheWJhY2tTZXNzaW9uTW9kZWxDbGllbnQpOgorICAgICAgICAoV2ViQ29y
ZTo6V2ViUGxheWJhY2tTZXNzaW9uTW9kZWxDbGllbnQ6OmR1cmF0aW9uQ2hhbmdlZCk6CisgICAg
ICAgIChXZWJDb3JlOjpXZWJQbGF5YmFja1Nlc3Npb25Nb2RlbENsaWVudDo6Y3VycmVudFRpbWVD
aGFuZ2VkKToKKyAgICAgICAgKFdlYkNvcmU6OldlYlBsYXliYWNrU2Vzc2lvbk1vZGVsQ2xpZW50
OjpidWZmZXJlZFRpbWVDaGFuZ2VkKToKKyAgICAgICAgKFdlYkNvcmU6OldlYlBsYXliYWNrU2Vz
c2lvbk1vZGVsQ2xpZW50OjpyYXRlQ2hhbmdlZCk6CisgICAgICAgIChXZWJDb3JlOjpXZWJQbGF5
YmFja1Nlc3Npb25Nb2RlbENsaWVudDo6c2Vla2FibGVSYW5nZXNDaGFuZ2VkKToKKyAgICAgICAg
KFdlYkNvcmU6OldlYlBsYXliYWNrU2Vzc2lvbk1vZGVsQ2xpZW50OjpjYW5QbGF5RmFzdFJldmVy
c2VDaGFuZ2VkKToKKyAgICAgICAgKFdlYkNvcmU6OldlYlBsYXliYWNrU2Vzc2lvbk1vZGVsQ2xp
ZW50OjphdWRpb01lZGlhU2VsZWN0aW9uT3B0aW9uc0NoYW5nZWQpOgorICAgICAgICAoV2ViQ29y
ZTo6V2ViUGxheWJhY2tTZXNzaW9uTW9kZWxDbGllbnQ6OmxlZ2libGVNZWRpYVNlbGVjdGlvbk9w
dGlvbnNDaGFuZ2VkKToKKyAgICAgICAgKFdlYkNvcmU6OldlYlBsYXliYWNrU2Vzc2lvbk1vZGVs
Q2xpZW50OjpleHRlcm5hbFBsYXliYWNrQ2hhbmdlZCk6CisgICAgICAgIChXZWJDb3JlOjpXZWJQ
bGF5YmFja1Nlc3Npb25Nb2RlbENsaWVudDo6d2lyZWxlc3NWaWRlb1BsYXliYWNrRGlzYWJsZWRD
aGFuZ2VkKToKKyAgICAgICAgKiBwbGF0Zm9ybS9jb2NvYS9XZWJQbGF5YmFja1Nlc3Npb25Nb2Rl
bE1lZGlhRWxlbWVudC5oOgorICAgICAgICAqIHBsYXRmb3JtL2NvY29hL1dlYlBsYXliYWNrU2Vz
c2lvbk1vZGVsTWVkaWFFbGVtZW50Lm1tOgorICAgICAgICAoV2ViUGxheWJhY2tTZXNzaW9uTW9k
ZWxNZWRpYUVsZW1lbnQ6OnNldE1lZGlhRWxlbWVudCk6CisgICAgICAgIChXZWJQbGF5YmFja1Nl
c3Npb25Nb2RlbE1lZGlhRWxlbWVudDo6dXBkYXRlRm9yRXZlbnROYW1lKToKKyAgICAgICAgKFdl
YlBsYXliYWNrU2Vzc2lvbk1vZGVsTWVkaWFFbGVtZW50OjphZGRDbGllbnQpOgorICAgICAgICAo
V2ViUGxheWJhY2tTZXNzaW9uTW9kZWxNZWRpYUVsZW1lbnQ6OnJlbW92ZUNsaWVudCk6CisgICAg
ICAgIChXZWJQbGF5YmFja1Nlc3Npb25Nb2RlbE1lZGlhRWxlbWVudDo6dXBkYXRlTGVnaWJsZU9w
dGlvbnMpOgorICAgICAgICAoV2ViUGxheWJhY2tTZXNzaW9uTW9kZWxNZWRpYUVsZW1lbnQ6Om9i
c2VydmVkRXZlbnROYW1lcyk6CisgICAgICAgIChXZWJQbGF5YmFja1Nlc3Npb25Nb2RlbE1lZGlh
RWxlbWVudDo6ZXZlbnROYW1lQWxsKToKKyAgICAgICAgKFdlYlBsYXliYWNrU2Vzc2lvbk1vZGVs
TWVkaWFFbGVtZW50OjphdWRpb01lZGlhU2VsZWN0aW9uT3B0aW9ucyk6CisgICAgICAgIChXZWJQ
bGF5YmFja1Nlc3Npb25Nb2RlbE1lZGlhRWxlbWVudDo6YXVkaW9NZWRpYVNlbGVjdGVkSW5kZXgp
OgorICAgICAgICAoV2ViUGxheWJhY2tTZXNzaW9uTW9kZWxNZWRpYUVsZW1lbnQ6OmxlZ2libGVN
ZWRpYVNlbGVjdGVkSW5kZXgpOgorICAgICAgICAoV2ViUGxheWJhY2tTZXNzaW9uTW9kZWxNZWRp
YUVsZW1lbnQ6OmV4dGVybmFsUGxheWJhY2tFbmFibGVkKToKKyAgICAgICAgKFdlYlBsYXliYWNr
U2Vzc2lvbk1vZGVsTWVkaWFFbGVtZW50OjpleHRlcm5hbFBsYXliYWNrVGFyZ2V0VHlwZSk6Cisg
ICAgICAgIChXZWJQbGF5YmFja1Nlc3Npb25Nb2RlbE1lZGlhRWxlbWVudDo6ZXh0ZXJuYWxQbGF5
YmFja0xvY2FsaXplZERldmljZU5hbWUpOgorICAgICAgICAoV2ViUGxheWJhY2tTZXNzaW9uTW9k
ZWxNZWRpYUVsZW1lbnQ6OndpcmVsZXNzVmlkZW9QbGF5YmFja0Rpc2FibGVkKToKKyAgICAgICAg
KFdlYlBsYXliYWNrU2Vzc2lvbk1vZGVsTWVkaWFFbGVtZW50OjpzZXRXZWJQbGF5YmFja1Nlc3Np
b25JbnRlcmZhY2UpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL2NvY29hL1dlYlZpZGVv
RnVsbHNjcmVlbkludGVyZmFjZS5oOgorICAgICAgICAqIHBsYXRmb3JtL2NvY29hL1dlYlZpZGVv
RnVsbHNjcmVlbk1vZGVsLmg6CisgICAgICAgIChXZWJDb3JlOjpXZWJWaWRlb0Z1bGxzY3JlZW5N
b2RlbENsaWVudDo6fldlYlZpZGVvRnVsbHNjcmVlbk1vZGVsQ2xpZW50KToKKyAgICAgICAgKiBw
bGF0Zm9ybS9jb2NvYS9XZWJWaWRlb0Z1bGxzY3JlZW5Nb2RlbFZpZGVvRWxlbWVudC5oOgorICAg
ICAgICAoV2ViQ29yZTo6V2ViVmlkZW9GdWxsc2NyZWVuTW9kZWxWaWRlb0VsZW1lbnQ6OmNyZWF0
ZSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJWaWRlb0Z1bGxzY3JlZW5Nb2RlbFZpZGVvRWxlbWVu
dDo6cGxheWJhY2tTZXNzaW9uTW9kZWwpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL2Nv
Y29hL1dlYlZpZGVvRnVsbHNjcmVlbk1vZGVsVmlkZW9FbGVtZW50Lm1tOgorICAgICAgICAoV2Vi
VmlkZW9GdWxsc2NyZWVuTW9kZWxWaWRlb0VsZW1lbnQ6OldlYlZpZGVvRnVsbHNjcmVlbk1vZGVs
VmlkZW9FbGVtZW50KToKKyAgICAgICAgKFdlYlZpZGVvRnVsbHNjcmVlbk1vZGVsVmlkZW9FbGVt
ZW50OjpzZXRWaWRlb0VsZW1lbnQpOgorICAgICAgICAoV2ViVmlkZW9GdWxsc2NyZWVuTW9kZWxW
aWRlb0VsZW1lbnQ6OnVwZGF0ZUZvckV2ZW50TmFtZSk6CisgICAgICAgIChXZWJWaWRlb0Z1bGxz
Y3JlZW5Nb2RlbFZpZGVvRWxlbWVudDo6YWRkQ2xpZW50KToKKyAgICAgICAgKFdlYlZpZGVvRnVs
bHNjcmVlbk1vZGVsVmlkZW9FbGVtZW50OjpyZW1vdmVDbGllbnQpOgorICAgICAgICAoV2ViVmlk
ZW9GdWxsc2NyZWVuTW9kZWxWaWRlb0VsZW1lbnQ6OnNldEhhc1ZpZGVvKToKKyAgICAgICAgKFdl
YlZpZGVvRnVsbHNjcmVlbk1vZGVsVmlkZW9FbGVtZW50OjpzZXRWaWRlb0RpbWVuc2lvbnMpOgor
ICAgICAgICAoV2ViVmlkZW9GdWxsc2NyZWVuTW9kZWxWaWRlb0VsZW1lbnQ6OnNldFdlYlZpZGVv
RnVsbHNjcmVlbkludGVyZmFjZSk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vaW9zL1dl
YkFWUGxheWVyQ29udHJvbGxlci5oOgorICAgICAgICAqIHBsYXRmb3JtL2lvcy9XZWJBVlBsYXll
ckNvbnRyb2xsZXIubW06CisgICAgICAgICgtW1dlYkFWUGxheWVyQ29udHJvbGxlciByZXNldFN0
YXRlXSk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vaW9zL1dlYlBsYXliYWNrU2Vzc2lv
bkludGVyZmFjZUFWS2l0Lmg6CisgICAgICAgIChXZWJDb3JlOjpXZWJQbGF5YmFja1Nlc3Npb25J
bnRlcmZhY2VBVktpdENsaWVudDo6fldlYlBsYXliYWNrU2Vzc2lvbkludGVyZmFjZUFWS2l0Q2xp
ZW50KTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9pb3MvV2ViUGxheWJhY2tTZXNzaW9u
SW50ZXJmYWNlQVZLaXQubW06CisgICAgICAgIChXZWJDb3JlOjpXZWJQbGF5YmFja1Nlc3Npb25J
bnRlcmZhY2VBVktpdDo6V2ViUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlQVZLaXQpOgorICAgICAg
ICAoV2ViQ29yZTo6V2ViUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlQVZLaXQ6On5XZWJQbGF5YmFj
a1Nlc3Npb25JbnRlcmZhY2VBVktpdCk6CisgICAgICAgIChXZWJDb3JlOjpXZWJQbGF5YmFja1Nl
c3Npb25JbnRlcmZhY2VBVktpdDo6cmVzZXRNZWRpYVN0YXRlKToKKyAgICAgICAgKFdlYkNvcmU6
OldlYlBsYXliYWNrU2Vzc2lvbkludGVyZmFjZUFWS2l0OjpkdXJhdGlvbkNoYW5nZWQpOgorICAg
ICAgICAoV2ViQ29yZTo6V2ViUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlQVZLaXQ6OmN1cnJlbnRU
aW1lQ2hhbmdlZCk6CisgICAgICAgIChXZWJDb3JlOjpXZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZh
Y2VBVktpdDo6YnVmZmVyZWRUaW1lQ2hhbmdlZCk6CisgICAgICAgIChXZWJDb3JlOjpXZWJQbGF5
YmFja1Nlc3Npb25JbnRlcmZhY2VBVktpdDo6cmF0ZUNoYW5nZWQpOgorICAgICAgICAoV2ViQ29y
ZTo6V2ViUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlQVZLaXQ6OnNlZWthYmxlUmFuZ2VzQ2hhbmdl
ZCk6CisgICAgICAgIChXZWJDb3JlOjpXZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2VBVktpdDo6
Y2FuUGxheUZhc3RSZXZlcnNlQ2hhbmdlZCk6CisgICAgICAgIChXZWJDb3JlOjpXZWJQbGF5YmFj
a1Nlc3Npb25JbnRlcmZhY2VBVktpdDo6YXVkaW9NZWRpYVNlbGVjdGlvbk9wdGlvbnNDaGFuZ2Vk
KToKKyAgICAgICAgKFdlYkNvcmU6OldlYlBsYXliYWNrU2Vzc2lvbkludGVyZmFjZUFWS2l0Ojps
ZWdpYmxlTWVkaWFTZWxlY3Rpb25PcHRpb25zQ2hhbmdlZCk6CisgICAgICAgIChXZWJDb3JlOjpX
ZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2VBVktpdDo6ZXh0ZXJuYWxQbGF5YmFja0NoYW5nZWQp
OgorICAgICAgICAoV2ViQ29yZTo6V2ViUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlQVZLaXQ6Ondp
cmVsZXNzVmlkZW9QbGF5YmFja0Rpc2FibGVkQ2hhbmdlZCk6CisgICAgICAgIChXZWJDb3JlOjpX
ZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2VBVktpdDo6aW52YWxpZGF0ZSk6CisgICAgICAgIChX
ZWJDb3JlOjpXZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2VBVktpdDo6c2V0V2ViUGxheWJhY2tT
ZXNzaW9uTW9kZWwpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6V2ViUGxheWJhY2tTZXNz
aW9uSW50ZXJmYWNlQVZLaXQ6OnNldER1cmF0aW9uKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNv
cmU6OldlYlBsYXliYWNrU2Vzc2lvbkludGVyZmFjZUFWS2l0OjpzZXRDdXJyZW50VGltZSk6IERl
bGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpXZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2VBVktp
dDo6c2V0QnVmZmVyZWRUaW1lKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OldlYlBsYXli
YWNrU2Vzc2lvbkludGVyZmFjZUFWS2l0OjpzZXRSYXRlKTogRGVsZXRlZC4KKyAgICAgICAgKFdl
YkNvcmU6OldlYlBsYXliYWNrU2Vzc2lvbkludGVyZmFjZUFWS2l0OjpzZXRTZWVrYWJsZVJhbmdl
cyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpXZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZh
Y2VBVktpdDo6c2V0Q2FuUGxheUZhc3RSZXZlcnNlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNv
cmU6OldlYlBsYXliYWNrU2Vzc2lvbkludGVyZmFjZUFWS2l0OjpzZXRBdWRpb01lZGlhU2VsZWN0
aW9uT3B0aW9ucyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpXZWJQbGF5YmFja1Nlc3Np
b25JbnRlcmZhY2VBVktpdDo6c2V0TGVnaWJsZU1lZGlhU2VsZWN0aW9uT3B0aW9ucyk6IERlbGV0
ZWQuCisgICAgICAgIChXZWJDb3JlOjpXZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2VBVktpdDo6
c2V0RXh0ZXJuYWxQbGF5YmFjayk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpXZWJQbGF5
YmFja1Nlc3Npb25JbnRlcmZhY2VBVktpdDo6c2V0V2lyZWxlc3NWaWRlb1BsYXliYWNrRGlzYWJs
ZWQpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6V2ViUGxheWJhY2tTZXNzaW9uSW50ZXJm
YWNlQVZLaXQ6OndpcmVsZXNzVmlkZW9QbGF5YmFja0Rpc2FibGVkKTogRGVsZXRlZC4KKyAgICAg
ICAgKiBwbGF0Zm9ybS9pb3MvV2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlckFWS2l0Lm1tOgor
ICAgICAgICAoV2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlckNvbnRleHQ6OmRpZFNldHVwRnVs
bHNjcmVlbik6CisgICAgICAgIChXZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyQ29udGV4dDo6
ZGlkRXhpdEZ1bGxzY3JlZW4pOgorICAgICAgICAoV2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxl
ckNvbnRleHQ6OmRpZENsZWFudXBGdWxsc2NyZWVuKToKKyAgICAgICAgKFdlYlZpZGVvRnVsbHNj
cmVlbkNvbnRyb2xsZXJDb250ZXh0OjpkdXJhdGlvbkNoYW5nZWQpOgorICAgICAgICAoV2ViVmlk
ZW9GdWxsc2NyZWVuQ29udHJvbGxlckNvbnRleHQ6OmN1cnJlbnRUaW1lQ2hhbmdlZCk6CisgICAg
ICAgIChXZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyQ29udGV4dDo6YnVmZmVyZWRUaW1lQ2hh
bmdlZCk6CisgICAgICAgIChXZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyQ29udGV4dDo6cmF0
ZUNoYW5nZWQpOgorICAgICAgICAoV2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlckNvbnRleHQ6
Omhhc1ZpZGVvQ2hhbmdlZCk6CisgICAgICAgIChXZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVy
Q29udGV4dDo6dmlkZW9EaW1lbnNpb25zQ2hhbmdlZCk6CisgICAgICAgIChXZWJWaWRlb0Z1bGxz
Y3JlZW5Db250cm9sbGVyQ29udGV4dDo6c2Vla2FibGVSYW5nZXNDaGFuZ2VkKToKKyAgICAgICAg
KFdlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJDb250ZXh0OjpjYW5QbGF5RmFzdFJldmVyc2VD
aGFuZ2VkKToKKyAgICAgICAgKFdlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJDb250ZXh0Ojph
dWRpb01lZGlhU2VsZWN0aW9uT3B0aW9uc0NoYW5nZWQpOgorICAgICAgICAoV2ViVmlkZW9GdWxs
c2NyZWVuQ29udHJvbGxlckNvbnRleHQ6OmxlZ2libGVNZWRpYVNlbGVjdGlvbk9wdGlvbnNDaGFu
Z2VkKToKKyAgICAgICAgKFdlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJDb250ZXh0OjpleHRl
cm5hbFBsYXliYWNrQ2hhbmdlZCk6CisgICAgICAgIChXZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9s
bGVyQ29udGV4dDo6d2lyZWxlc3NWaWRlb1BsYXliYWNrRGlzYWJsZWRDaGFuZ2VkKToKKyAgICAg
ICAgKFdlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJDb250ZXh0OjphZGRDbGllbnQpOgorICAg
ICAgICAoV2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlckNvbnRleHQ6OnJlbW92ZUNsaWVudCk6
CisgICAgICAgIChXZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyQ29udGV4dDo6cmVxdWVzdEZ1
bGxzY3JlZW5Nb2RlKToKKyAgICAgICAgKFdlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJDb250
ZXh0OjpzZXRWaWRlb0xheWVyRnJhbWUpOgorICAgICAgICAoV2ViVmlkZW9GdWxsc2NyZWVuQ29u
dHJvbGxlckNvbnRleHQ6OnNldFZpZGVvTGF5ZXJHcmF2aXR5KToKKyAgICAgICAgKFdlYlZpZGVv
RnVsbHNjcmVlbkNvbnRyb2xsZXJDb250ZXh0OjpmdWxsc2NyZWVuTW9kZUNoYW5nZWQpOgorICAg
ICAgICAoV2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlckNvbnRleHQ6OmlzVmlzaWJsZSk6Cisg
ICAgICAgIChXZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyQ29udGV4dDo6aGFzVmlkZW8pOgor
ICAgICAgICAoV2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlckNvbnRleHQ6OnZpZGVvRGltZW5z
aW9ucyk6CisgICAgICAgIChXZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyQ29udGV4dDo6cGxh
eSk6CisgICAgICAgIChXZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyQ29udGV4dDo6cGF1c2Up
OgorICAgICAgICAoV2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlckNvbnRleHQ6OnRvZ2dsZVBs
YXlTdGF0ZSk6CisgICAgICAgIChXZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyQ29udGV4dDo6
YmVnaW5TY3J1YmJpbmcpOgorICAgICAgICAoV2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlckNv
bnRleHQ6OmVuZFNjcnViYmluZyk6CisgICAgICAgIChXZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9s
bGVyQ29udGV4dDo6c2Vla1RvVGltZSk6CisgICAgICAgIChXZWJWaWRlb0Z1bGxzY3JlZW5Db250
cm9sbGVyQ29udGV4dDo6ZmFzdFNlZWspOgorICAgICAgICAoV2ViVmlkZW9GdWxsc2NyZWVuQ29u
dHJvbGxlckNvbnRleHQ6OmJlZ2luU2Nhbm5pbmdGb3J3YXJkKToKKyAgICAgICAgKFdlYlZpZGVv
RnVsbHNjcmVlbkNvbnRyb2xsZXJDb250ZXh0OjpiZWdpblNjYW5uaW5nQmFja3dhcmQpOgorICAg
ICAgICAoV2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlckNvbnRleHQ6OmVuZFNjYW5uaW5nKToK
KyAgICAgICAgKFdlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJDb250ZXh0OjpzZWxlY3RBdWRp
b01lZGlhT3B0aW9uKToKKyAgICAgICAgKFdlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJDb250
ZXh0OjpzZWxlY3RMZWdpYmxlTWVkaWFPcHRpb24pOgorICAgICAgICAoV2ViVmlkZW9GdWxsc2Ny
ZWVuQ29udHJvbGxlckNvbnRleHQ6OmR1cmF0aW9uKToKKyAgICAgICAgKFdlYlZpZGVvRnVsbHNj
cmVlbkNvbnRyb2xsZXJDb250ZXh0OjpjdXJyZW50VGltZSk6CisgICAgICAgIChXZWJWaWRlb0Z1
bGxzY3JlZW5Db250cm9sbGVyQ29udGV4dDo6YnVmZmVyZWRUaW1lKToKKyAgICAgICAgKFdlYlZp
ZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJDb250ZXh0Ojppc1BsYXlpbmcpOgorICAgICAgICAoV2Vi
VmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlckNvbnRleHQ6OnBsYXliYWNrUmF0ZSk6CisgICAgICAg
IChXZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyQ29udGV4dDo6c2Vla2FibGVSYW5nZXMpOgor
ICAgICAgICAoV2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlckNvbnRleHQ6OmNhblBsYXlGYXN0
UmV2ZXJzZSk6CisgICAgICAgIChXZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyQ29udGV4dDo6
YXVkaW9NZWRpYVNlbGVjdGlvbk9wdGlvbnMpOgorICAgICAgICAoV2ViVmlkZW9GdWxsc2NyZWVu
Q29udHJvbGxlckNvbnRleHQ6OmF1ZGlvTWVkaWFTZWxlY3RlZEluZGV4KToKKyAgICAgICAgKFdl
YlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJDb250ZXh0OjpsZWdpYmxlTWVkaWFTZWxlY3Rpb25P
cHRpb25zKToKKyAgICAgICAgKFdlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJDb250ZXh0Ojps
ZWdpYmxlTWVkaWFTZWxlY3RlZEluZGV4KToKKyAgICAgICAgKFdlYlZpZGVvRnVsbHNjcmVlbkNv
bnRyb2xsZXJDb250ZXh0OjpleHRlcm5hbFBsYXliYWNrRW5hYmxlZCk6CisgICAgICAgIChXZWJW
aWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyQ29udGV4dDo6ZXh0ZXJuYWxQbGF5YmFja1RhcmdldFR5
cGUpOgorICAgICAgICAoV2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlckNvbnRleHQ6OmV4dGVy
bmFsUGxheWJhY2tMb2NhbGl6ZWREZXZpY2VOYW1lKToKKyAgICAgICAgKFdlYlZpZGVvRnVsbHNj
cmVlbkNvbnRyb2xsZXJDb250ZXh0Ojp3aXJlbGVzc1ZpZGVvUGxheWJhY2tEaXNhYmxlZCk6Cisg
ICAgICAgIChXZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyQ29udGV4dDo6c2V0VXBGdWxsc2Ny
ZWVuKToKKyAgICAgICAgKFdlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJDb250ZXh0OjpleGl0
RnVsbHNjcmVlbik6CisgICAgICAgIChXZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyQ29udGV4
dDo6cmVxdWVzdEhpZGVBbmRFeGl0RnVsbHNjcmVlbik6CisgICAgICAgIChXZWJWaWRlb0Z1bGxz
Y3JlZW5Db250cm9sbGVyQ29udGV4dDo6cmVzZXRNZWRpYVN0YXRlKTogRGVsZXRlZC4KKyAgICAg
ICAgKFdlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJDb250ZXh0OjpzZXREdXJhdGlvbik6IERl
bGV0ZWQuCisgICAgICAgIChXZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyQ29udGV4dDo6c2V0
Q3VycmVudFRpbWUpOiBEZWxldGVkLgorICAgICAgICAoV2ViVmlkZW9GdWxsc2NyZWVuQ29udHJv
bGxlckNvbnRleHQ6OnNldEJ1ZmZlcmVkVGltZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJWaWRl
b0Z1bGxzY3JlZW5Db250cm9sbGVyQ29udGV4dDo6c2V0UmF0ZSk6IERlbGV0ZWQuCisgICAgICAg
IChXZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyQ29udGV4dDo6c2V0VmlkZW9EaW1lbnNpb25z
KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJDb250ZXh0
OjpzZXRTZWVrYWJsZVJhbmdlcyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJWaWRlb0Z1bGxzY3Jl
ZW5Db250cm9sbGVyQ29udGV4dDo6c2V0Q2FuUGxheUZhc3RSZXZlcnNlKTogRGVsZXRlZC4KKyAg
ICAgICAgKFdlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJDb250ZXh0OjpzZXRBdWRpb01lZGlh
U2VsZWN0aW9uT3B0aW9ucyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJWaWRlb0Z1bGxzY3JlZW5D
b250cm9sbGVyQ29udGV4dDo6c2V0TGVnaWJsZU1lZGlhU2VsZWN0aW9uT3B0aW9ucyk6IERlbGV0
ZWQuCisgICAgICAgIChXZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyQ29udGV4dDo6c2V0RXh0
ZXJuYWxQbGF5YmFjayk6IERlbGV0ZWQuCisgICAgICAgIChXZWJWaWRlb0Z1bGxzY3JlZW5Db250
cm9sbGVyQ29udGV4dDo6c2V0V2lyZWxlc3NWaWRlb1BsYXliYWNrRGlzYWJsZWQpOiBEZWxldGVk
LgorICAgICAgICAoV2ViVmlkZW9GdWxsc2NyZWVuU2Vzc2lvbk1vZGVsOjpwbGF5KTogRGVsZXRl
ZC4KKyAgICAgICAgKFdlYlZpZGVvRnVsbHNjcmVlblNlc3Npb25Nb2RlbDo6cGF1c2UpOiBEZWxl
dGVkLgorICAgICAgICAoV2ViVmlkZW9GdWxsc2NyZWVuU2Vzc2lvbk1vZGVsOjp0b2dnbGVQbGF5
U3RhdGUpOiBEZWxldGVkLgorICAgICAgICAoV2ViVmlkZW9GdWxsc2NyZWVuU2Vzc2lvbk1vZGVs
OjpiZWdpblNjcnViYmluZyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJWaWRlb0Z1bGxzY3JlZW5T
ZXNzaW9uTW9kZWw6OmVuZFNjcnViYmluZyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJWaWRlb0Z1
bGxzY3JlZW5TZXNzaW9uTW9kZWw6OnNlZWtUb1RpbWUpOiBEZWxldGVkLgorICAgICAgICAoV2Vi
VmlkZW9GdWxsc2NyZWVuU2Vzc2lvbk1vZGVsOjpmYXN0U2Vlayk6IERlbGV0ZWQuCisgICAgICAg
IChXZWJWaWRlb0Z1bGxzY3JlZW5TZXNzaW9uTW9kZWw6OmJlZ2luU2Nhbm5pbmdGb3J3YXJkKTog
RGVsZXRlZC4KKyAgICAgICAgKFdlYlZpZGVvRnVsbHNjcmVlblNlc3Npb25Nb2RlbDo6YmVnaW5T
Y2FubmluZ0JhY2t3YXJkKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYlZpZGVvRnVsbHNjcmVlblNl
c3Npb25Nb2RlbDo6ZW5kU2Nhbm5pbmcpOiBEZWxldGVkLgorICAgICAgICAoV2ViVmlkZW9GdWxs
c2NyZWVuU2Vzc2lvbk1vZGVsOjpzZWxlY3RBdWRpb01lZGlhT3B0aW9uKTogRGVsZXRlZC4KKyAg
ICAgICAgKFdlYlZpZGVvRnVsbHNjcmVlblNlc3Npb25Nb2RlbDo6c2VsZWN0TGVnaWJsZU1lZGlh
T3B0aW9uKTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9pb3MvV2ViVmlkZW9GdWxsc2Ny
ZWVuSW50ZXJmYWNlQVZLaXQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9pb3MvV2ViVmlkZW9GdWxs
c2NyZWVuSW50ZXJmYWNlQVZLaXQubW06CisgICAgICAgIChXZWJWaWRlb0Z1bGxzY3JlZW5JbnRl
cmZhY2VBVktpdDo6fldlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0KToKKyAgICAgICAg
KFdlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0OjpzZXRXZWJWaWRlb0Z1bGxzY3JlZW5N
b2RlbCk6CisgICAgICAgIChXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdDo6c2V0V2Vi
VmlkZW9GdWxsc2NyZWVuQ2hhbmdlT2JzZXJ2ZXIpOgorICAgICAgICAoV2ViVmlkZW9GdWxsc2Ny
ZWVuSW50ZXJmYWNlQVZLaXQ6Omhhc1ZpZGVvQ2hhbmdlZCk6CisgICAgICAgIChXZWJWaWRlb0Z1
bGxzY3JlZW5JbnRlcmZhY2VBVktpdDo6dmlkZW9EaW1lbnNpb25zQ2hhbmdlZCk6CisgICAgICAg
IChXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdDo6ZXh0ZXJuYWxQbGF5YmFja0NoYW5n
ZWQpOgorICAgICAgICAoV2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQ6OnJlc2V0TWVk
aWFTdGF0ZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VB
VktpdDo6c2V0RHVyYXRpb24pOiBEZWxldGVkLgorICAgICAgICAoV2ViVmlkZW9GdWxsc2NyZWVu
SW50ZXJmYWNlQVZLaXQ6OnNldEN1cnJlbnRUaW1lKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYlZp
ZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0OjpzZXRCdWZmZXJlZFRpbWUpOiBEZWxldGVkLgor
ICAgICAgICAoV2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQ6OnNldFJhdGUpOiBEZWxl
dGVkLgorICAgICAgICAoV2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQ6OnNldFZpZGVv
RGltZW5zaW9ucyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZh
Y2VBVktpdDo6c2V0U2Vla2FibGVSYW5nZXMpOiBEZWxldGVkLgorICAgICAgICAoV2ViVmlkZW9G
dWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQ6OnNldENhblBsYXlGYXN0UmV2ZXJzZSk6IERlbGV0ZWQu
CisgICAgICAgIChXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdDo6c2V0QXVkaW9NZWRp
YVNlbGVjdGlvbk9wdGlvbnMpOiBEZWxldGVkLgorICAgICAgICAoV2ViVmlkZW9GdWxsc2NyZWVu
SW50ZXJmYWNlQVZLaXQ6OnNldExlZ2libGVNZWRpYVNlbGVjdGlvbk9wdGlvbnMpOiBEZWxldGVk
LgorICAgICAgICAoV2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQ6OnNldEV4dGVybmFs
UGxheWJhY2spOiBEZWxldGVkLgorICAgICAgICAoV2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNl
QVZLaXQ6OmV4dGVybmFsUGxheWJhY2tFbmFibGVkQ2hhbmdlZCk6IERlbGV0ZWQuCisgICAgICAg
IChXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdDo6c2V0V2lyZWxlc3NWaWRlb1BsYXli
YWNrRGlzYWJsZWQpOiBEZWxldGVkLgorICAgICAgICAoV2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJm
YWNlQVZLaXQ6OndpcmVsZXNzVmlkZW9QbGF5YmFja0Rpc2FibGVkKTogRGVsZXRlZC4KKyAgICAg
ICAgKiBwbGF0Zm9ybS9tYWMvV2ViUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlTWFjLmg6CisgICAg
ICAgIChXZWJDb3JlOjpXZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2VNYWNDbGllbnQ6On5XZWJQ
bGF5YmFja1Nlc3Npb25JbnRlcmZhY2VNYWNDbGllbnQpOiBEZWxldGVkLgorICAgICAgICAqIHBs
YXRmb3JtL21hYy9XZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2VNYWMubW06CisgICAgICAgIChX
ZWJDb3JlOjpXZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2VNYWM6OmNyZWF0ZSk6CisgICAgICAg
IChXZWJDb3JlOjpXZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2VNYWM6OldlYlBsYXliYWNrU2Vz
c2lvbkludGVyZmFjZU1hYyk6CisgICAgICAgIChXZWJDb3JlOjpXZWJQbGF5YmFja1Nlc3Npb25J
bnRlcmZhY2VNYWM6On5XZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2VNYWMpOgorICAgICAgICAo
V2ViQ29yZTo6V2ViUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlTWFjOjpkdXJhdGlvbkNoYW5nZWQp
OgorICAgICAgICAoV2ViQ29yZTo6V2ViUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlTWFjOjpjdXJy
ZW50VGltZUNoYW5nZWQpOgorICAgICAgICAoV2ViQ29yZTo6V2ViUGxheWJhY2tTZXNzaW9uSW50
ZXJmYWNlTWFjOjpyYXRlQ2hhbmdlZCk6CisgICAgICAgIChXZWJDb3JlOjpXZWJQbGF5YmFja1Nl
c3Npb25JbnRlcmZhY2VNYWM6OnNlZWthYmxlUmFuZ2VzQ2hhbmdlZCk6CisgICAgICAgIChXZWJD
b3JlOjpXZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2VNYWM6OmF1ZGlvTWVkaWFTZWxlY3Rpb25P
cHRpb25zQ2hhbmdlZCk6CisgICAgICAgIChXZWJDb3JlOjpXZWJQbGF5YmFja1Nlc3Npb25JbnRl
cmZhY2VNYWM6OmxlZ2libGVNZWRpYVNlbGVjdGlvbk9wdGlvbnNDaGFuZ2VkKToKKyAgICAgICAg
KFdlYkNvcmU6OldlYlBsYXliYWNrU2Vzc2lvbkludGVyZmFjZU1hYzo6aW52YWxpZGF0ZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpXZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2VNYWM6OnNldFdlYlBs
YXliYWNrU2Vzc2lvbk1vZGVsKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OldlYlBsYXli
YWNrU2Vzc2lvbkludGVyZmFjZU1hYzo6c2V0Q2xpZW50KTogRGVsZXRlZC4KKyAgICAgICAgKFdl
YkNvcmU6OldlYlBsYXliYWNrU2Vzc2lvbkludGVyZmFjZU1hYzo6c2V0RHVyYXRpb24pOiBEZWxl
dGVkLgorICAgICAgICAoV2ViQ29yZTo6V2ViUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlTWFjOjpz
ZXRDdXJyZW50VGltZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpXZWJQbGF5YmFja1Nl
c3Npb25JbnRlcmZhY2VNYWM6OnNldFJhdGUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6
V2ViUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlTWFjOjpzZXRTZWVrYWJsZVJhbmdlcyk6IERlbGV0
ZWQuCisgICAgICAgIChXZWJDb3JlOjpXZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2VNYWM6OnNl
dEF1ZGlvTWVkaWFTZWxlY3Rpb25PcHRpb25zKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6
OldlYlBsYXliYWNrU2Vzc2lvbkludGVyZmFjZU1hYzo6c2V0TGVnaWJsZU1lZGlhU2VsZWN0aW9u
T3B0aW9ucyk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vbWFjL1dlYlZpZGVvRnVsbHNj
cmVlbkludGVyZmFjZU1hYy5oOgorICAgICAgICAqIHBsYXRmb3JtL21hYy9XZWJWaWRlb0Z1bGxz
Y3JlZW5JbnRlcmZhY2VNYWMubW06CisgICAgICAgIChXZWJDb3JlOjpXZWJWaWRlb0Z1bGxzY3Jl
ZW5JbnRlcmZhY2VNYWM6OldlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZU1hYyk6CisgICAgICAg
IChXZWJDb3JlOjpXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VNYWM6On5XZWJWaWRlb0Z1bGxz
Y3JlZW5JbnRlcmZhY2VNYWMpOgorICAgICAgICAoV2ViQ29yZTo6V2ViVmlkZW9GdWxsc2NyZWVu
SW50ZXJmYWNlTWFjOjpzZXRXZWJWaWRlb0Z1bGxzY3JlZW5Nb2RlbCk6CisgICAgICAgIChXZWJD
b3JlOjpXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VNYWM6OmV4dGVybmFsUGxheWJhY2tDaGFu
Z2VkKToKKyAgICAgICAgKFdlYkNvcmU6OldlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZU1hYzo6
aGFzVmlkZW9DaGFuZ2VkKToKKyAgICAgICAgKFdlYkNvcmU6OldlYlZpZGVvRnVsbHNjcmVlbklu
dGVyZmFjZU1hYzo6dmlkZW9EaW1lbnNpb25zQ2hhbmdlZCk6CisgICAgICAgIChXZWJDb3JlOjpX
ZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VNYWM6OnNldER1cmF0aW9uKTogRGVsZXRlZC4KKyAg
ICAgICAgKFdlYkNvcmU6OldlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZU1hYzo6c2V0Q3VycmVu
dFRpbWUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6V2ViVmlkZW9GdWxsc2NyZWVuSW50
ZXJmYWNlTWFjOjpzZXRSYXRlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OldlYlZpZGVv
RnVsbHNjcmVlbkludGVyZmFjZU1hYzo6c2V0U2Vla2FibGVSYW5nZXMpOiBEZWxldGVkLgorICAg
ICAgICAoV2ViQ29yZTo6V2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlTWFjOjpzZXRBdWRpb01l
ZGlhU2VsZWN0aW9uT3B0aW9ucyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpXZWJWaWRl
b0Z1bGxzY3JlZW5JbnRlcmZhY2VNYWM6OnNldExlZ2libGVNZWRpYVNlbGVjdGlvbk9wdGlvbnMp
OiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6V2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNl
TWFjOjpzZXRFeHRlcm5hbFBsYXliYWNrKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6Oldl
YlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZU1hYzo6c2V0VmlkZW9EaW1lbnNpb25zKTogRGVsZXRl
ZC4KKworMjAxNi0wNy0wOCAgSmVyIE5vYmxlICA8amVyLm5vYmxlQGFwcGxlLmNvbT4KKwogICAg
ICAgICBDcmFzaCBpbiBsYXlvdXQgdGVzdCAvbWVkaWEvdmlkZW8tYnVmZmVyZWQtcmFuZ2UtY29u
dGFpbnMtY3VycmVudFRpbWUuaHRtbAogICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTU5MTA5CiAgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8yNjUzNTc1MD4K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQv
bWFjL0NoYW5nZUxvZwppbmRleCAxMjM4ZWZkYTUyNWFhYzhmNTMzNmZkNjlhMjI2OWVmMDI5NzAz
NmM3Li5lZjIwNDlkYTAzMGYxOWUwZTIzNjEwZWI3OTQ3OWI3YWM0NjJkNTUzIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9tYWMvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMTYtMDctMDggIEplciBOb2JsZSAgPGplci5ub2Js
ZUBhcHBsZS5jb20+CisKKyAgICAgICAgUmVmYWN0b3IgV2ViUGxheWJhY2tTZXNzaW9uTW9kZWxN
ZWRpYUVsZW1lbnQgdG8gYmUgY2xpZW50IGJhc2VkLgorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU5NTgwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgTm8gbG9uZ2VyIG5lY2Vzc2FyeSB0byB0ZWxsIHRoZSBt
b2RlbHMgYW5kIGludGVyZmFjZXMgYWJvdXQgZWFjaCBvdGhlci4KKworICAgICAgICAqIFdlYlZp
ZXcvV2ViVmlldy5tbToKKyAgICAgICAgKC1bV2ViVmlldyBfc2V0VXBQbGF5YmFja0NvbnRyb2xz
TWFuYWdlckZvck1lZGlhRWxlbWVudDpdKToKKyAgICAgICAgKC1bV2ViVmlldyBfY2xlYXJQbGF5
YmFja0NvbnRyb2xzTWFuYWdlcl0pOgorCiAyMDE2LTA3LTA2ICBCZW5qYW1pbiBQb3VsYWluICA8
YnBvdWxhaW5AYXBwbGUuY29tPgogCiAgICAgICAgIFtKU0NdIFVuaWZ5IGhvdyB3ZSB0aHJvdyBU
eXBlRXJyb3IgZnJvbSBDKysKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBi
L1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwppbmRleCBhNzA3OTVlYWNiMDU3MDRjMDVjNDFjMGU2
NzdjMzViNzRhYzdkZWEyLi5kOWZmZWVhMGVhMDI5OGEyMmZjOWJlYjBiZGYwNjBjN2NkYmVkOTE5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktp
dDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTE4IEBACisyMDE2LTA3LTA4ICBKZXIgTm9ibGUgIDxq
ZXIubm9ibGVAYXBwbGUuY29tPgorCisgICAgICAgIFJlZmFjdG9yIFdlYlBsYXliYWNrU2Vzc2lv
bk1vZGVsTWVkaWFFbGVtZW50IHRvIGJlIGNsaWVudCBiYXNlZC4KKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1OTU4MAorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkb3B0IHRoZSBjaGFuZ2VzIG1hZGUgaW4g
dGhlIFdlYlBsYXliYWNrU2Vzc2lvbk1vZGVsLEludGVyZmFjZSBhbmQgV2ViVmlkZW9GdWxsc2Ny
ZWVuTW9kZWwsSW50ZXJmYWNlCisgICAgICAgIGluIHRoZSBXZWJQbGF5YmFja1Nlc3Npb25NYW5h
Z2VyLFByb3h5IGNsYXNzZXMuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vi
Vmlldy5tbToKKyAgICAgICAgKC1bV0tXZWJWaWV3IF9pbml0aWFsaXplV2l0aENvbmZpZ3VyYXRp
b246XSk6IERlbGV0ZWQuCisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL1dlYlBsYXliYWNrU2Vz
c2lvbk1hbmFnZXJQcm94eS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9XZWJQbGF5YmFj
a1Nlc3Npb25NYW5hZ2VyUHJveHkubW06CisgICAgICAgIChXZWJLaXQ6OldlYlBsYXliYWNrU2Vz
c2lvbk1vZGVsQ29udGV4dDo6YWRkQ2xpZW50KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGxheWJh
Y2tTZXNzaW9uTW9kZWxDb250ZXh0OjpyZW1vdmVDbGllbnQpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJQbGF5YmFja1Nlc3Npb25Nb2RlbENvbnRleHQ6OnNldER1cmF0aW9uKToKKyAgICAgICAgKFdl
YktpdDo6V2ViUGxheWJhY2tTZXNzaW9uTW9kZWxDb250ZXh0OjpzZXRDdXJyZW50VGltZSk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlBsYXliYWNrU2Vzc2lvbk1vZGVsQ29udGV4dDo6c2V0QnVmZmVy
ZWRUaW1lKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGxheWJhY2tTZXNzaW9uTW9kZWxDb250ZXh0
OjpzZXRSYXRlKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGxheWJhY2tTZXNzaW9uTW9kZWxDb250
ZXh0OjpzZXRTZWVrYWJsZVJhbmdlcyk6CisgICAgICAgIChXZWJLaXQ6OldlYlBsYXliYWNrU2Vz
c2lvbk1vZGVsQ29udGV4dDo6c2V0Q2FuUGxheUZhc3RSZXZlcnNlKToKKyAgICAgICAgKFdlYktp
dDo6V2ViUGxheWJhY2tTZXNzaW9uTW9kZWxDb250ZXh0OjpzZXRBdWRpb01lZGlhU2VsZWN0aW9u
T3B0aW9ucyk6CisgICAgICAgIChXZWJLaXQ6OldlYlBsYXliYWNrU2Vzc2lvbk1vZGVsQ29udGV4
dDo6c2V0TGVnaWJsZU1lZGlhU2VsZWN0aW9uT3B0aW9ucyk6CisgICAgICAgIChXZWJLaXQ6Oldl
YlBsYXliYWNrU2Vzc2lvbk1vZGVsQ29udGV4dDo6c2V0RXh0ZXJuYWxQbGF5YmFjayk6CisgICAg
ICAgIChXZWJLaXQ6OldlYlBsYXliYWNrU2Vzc2lvbk1vZGVsQ29udGV4dDo6c2V0V2lyZWxlc3NW
aWRlb1BsYXliYWNrRGlzYWJsZWQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQbGF5YmFja1Nlc3Np
b25NYW5hZ2VyUHJveHk6OmNyZWF0ZU1vZGVsQW5kSW50ZXJmYWNlKToKKyAgICAgICAgKFdlYktp
dDo6V2ViUGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5OjpyZW1vdmVDbGllbnRGb3JDb250ZXh0
KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5OjpzZXRD
dXJyZW50VGltZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQ
cm94eTo6c2V0QnVmZmVyZWRUaW1lKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGxheWJhY2tTZXNz
aW9uTWFuYWdlclByb3h5OjpzZXRTZWVrYWJsZVJhbmdlc1ZlY3Rvcik6CisgICAgICAgIChXZWJL
aXQ6OldlYlBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eTo6c2V0Q2FuUGxheUZhc3RSZXZlcnNl
KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5OjpzZXRB
dWRpb01lZGlhU2VsZWN0aW9uT3B0aW9ucyk6CisgICAgICAgIChXZWJLaXQ6OldlYlBsYXliYWNr
U2Vzc2lvbk1hbmFnZXJQcm94eTo6c2V0TGVnaWJsZU1lZGlhU2VsZWN0aW9uT3B0aW9ucyk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eTo6c2V0RXh0ZXJu
YWxQbGF5YmFja1Byb3BlcnRpZXMpOgorICAgICAgICAoV2ViS2l0OjpXZWJQbGF5YmFja1Nlc3Np
b25NYW5hZ2VyUHJveHk6OnNldFdpcmVsZXNzVmlkZW9QbGF5YmFja0Rpc2FibGVkKToKKyAgICAg
ICAgKFdlYktpdDo6V2ViUGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5OjpzZXREdXJhdGlvbik6
CisgICAgICAgIChXZWJLaXQ6OldlYlBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eTo6c2V0UmF0
ZSk6CisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL1dlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQ
cm94eS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9XZWJWaWRlb0Z1bGxzY3JlZW5NYW5h
Z2VyUHJveHkubWVzc2FnZXMuaW46CisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL1dlYlZpZGVv
RnVsbHNjcmVlbk1hbmFnZXJQcm94eS5tbToKKyAgICAgICAgKFdlYktpdDo6V2ViVmlkZW9GdWxs
c2NyZWVuTW9kZWxDb250ZXh0OjphZGRDbGllbnQpOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWRl
b0Z1bGxzY3JlZW5Nb2RlbENvbnRleHQ6OnJlbW92ZUNsaWVudCk6CisgICAgICAgIChXZWJLaXQ6
OldlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eTo6c2V0SGFzVmlkZW8pOgorICAgICAgICAo
V2ViS2l0OjpXZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHk6OnNldFZpZGVvRGltZW5zaW9u
cyk6CisgICAgICAgICogV2ViUHJvY2Vzcy9jb2NvYS9XZWJQbGF5YmFja1Nlc3Npb25NYW5hZ2Vy
Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9jb2NvYS9XZWJQbGF5YmFja1Nlc3Npb25NYW5hZ2Vy
Lm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2VDb250ZXh0
OjpkdXJhdGlvbkNoYW5nZWQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQbGF5YmFja1Nlc3Npb25J
bnRlcmZhY2VDb250ZXh0OjpjdXJyZW50VGltZUNoYW5nZWQpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2VDb250ZXh0OjpidWZmZXJlZFRpbWVDaGFuZ2VkKToK
KyAgICAgICAgKFdlYktpdDo6V2ViUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlQ29udGV4dDo6cmF0
ZUNoYW5nZWQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2VD
b250ZXh0OjpzZWVrYWJsZVJhbmdlc0NoYW5nZWQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQbGF5
YmFja1Nlc3Npb25JbnRlcmZhY2VDb250ZXh0OjpjYW5QbGF5RmFzdFJldmVyc2VDaGFuZ2VkKToK
KyAgICAgICAgKFdlYktpdDo6V2ViUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlQ29udGV4dDo6YXVk
aW9NZWRpYVNlbGVjdGlvbk9wdGlvbnNDaGFuZ2VkKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGxh
eWJhY2tTZXNzaW9uSW50ZXJmYWNlQ29udGV4dDo6bGVnaWJsZU1lZGlhU2VsZWN0aW9uT3B0aW9u
c0NoYW5nZWQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2VD
b250ZXh0OjpleHRlcm5hbFBsYXliYWNrQ2hhbmdlZCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBs
YXliYWNrU2Vzc2lvbkludGVyZmFjZUNvbnRleHQ6OndpcmVsZXNzVmlkZW9QbGF5YmFja0Rpc2Fi
bGVkQ2hhbmdlZCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBsYXliYWNrU2Vzc2lvbk1hbmFnZXI6
On5XZWJQbGF5YmFja1Nlc3Npb25NYW5hZ2VyKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGxheWJh
Y2tTZXNzaW9uTWFuYWdlcjo6Y3JlYXRlTW9kZWxBbmRJbnRlcmZhY2UpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJQbGF5YmFja1Nlc3Npb25NYW5hZ2VyOjpyZW1vdmVDb250ZXh0KToKKyAgICAgICAg
KFdlYktpdDo6V2ViUGxheWJhY2tTZXNzaW9uTWFuYWdlcjo6ZHVyYXRpb25DaGFuZ2VkKToKKyAg
ICAgICAgKFdlYktpdDo6V2ViUGxheWJhY2tTZXNzaW9uTWFuYWdlcjo6Y3VycmVudFRpbWVDaGFu
Z2VkKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGxheWJhY2tTZXNzaW9uTWFuYWdlcjo6YnVmZmVy
ZWRUaW1lQ2hhbmdlZCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBsYXliYWNrU2Vzc2lvbk1hbmFn
ZXI6OnJhdGVDaGFuZ2VkKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGxheWJhY2tTZXNzaW9uTWFu
YWdlcjo6c2Vla2FibGVSYW5nZXNDaGFuZ2VkKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGxheWJh
Y2tTZXNzaW9uTWFuYWdlcjo6Y2FuUGxheUZhc3RSZXZlcnNlQ2hhbmdlZCk6CisgICAgICAgIChX
ZWJLaXQ6OldlYlBsYXliYWNrU2Vzc2lvbk1hbmFnZXI6OmF1ZGlvTWVkaWFTZWxlY3Rpb25PcHRp
b25zQ2hhbmdlZCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBsYXliYWNrU2Vzc2lvbk1hbmFnZXI6
OmxlZ2libGVNZWRpYVNlbGVjdGlvbk9wdGlvbnNDaGFuZ2VkKToKKyAgICAgICAgKFdlYktpdDo6
V2ViUGxheWJhY2tTZXNzaW9uTWFuYWdlcjo6ZXh0ZXJuYWxQbGF5YmFja0NoYW5nZWQpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJQbGF5YmFja1Nlc3Npb25NYW5hZ2VyOjp3aXJlbGVzc1ZpZGVvUGxh
eWJhY2tEaXNhYmxlZENoYW5nZWQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQbGF5YmFja1Nlc3Np
b25JbnRlcmZhY2VDb250ZXh0OjpzZXREdXJhdGlvbik6IERlbGV0ZWQuCisgICAgICAgIChXZWJL
aXQ6OldlYlBsYXliYWNrU2Vzc2lvbkludGVyZmFjZUNvbnRleHQ6OnNldEN1cnJlbnRUaW1lKTog
RGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlQ29u
dGV4dDo6c2V0QnVmZmVyZWRUaW1lKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViUGxh
eWJhY2tTZXNzaW9uSW50ZXJmYWNlQ29udGV4dDo6c2V0UmF0ZSk6IERlbGV0ZWQuCisgICAgICAg
IChXZWJLaXQ6OldlYlBsYXliYWNrU2Vzc2lvbkludGVyZmFjZUNvbnRleHQ6OnNldFNlZWthYmxl
UmFuZ2VzKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViUGxheWJhY2tTZXNzaW9uSW50
ZXJmYWNlQ29udGV4dDo6c2V0Q2FuUGxheUZhc3RSZXZlcnNlKTogRGVsZXRlZC4KKyAgICAgICAg
KFdlYktpdDo6V2ViUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlQ29udGV4dDo6c2V0QXVkaW9NZWRp
YVNlbGVjdGlvbk9wdGlvbnMpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJQbGF5YmFj
a1Nlc3Npb25JbnRlcmZhY2VDb250ZXh0OjpzZXRMZWdpYmxlTWVkaWFTZWxlY3Rpb25PcHRpb25z
KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNl
Q29udGV4dDo6c2V0RXh0ZXJuYWxQbGF5YmFjayk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6
OldlYlBsYXliYWNrU2Vzc2lvbkludGVyZmFjZUNvbnRleHQ6OnNldFdpcmVsZXNzVmlkZW9QbGF5
YmFja0Rpc2FibGVkKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViUGxheWJhY2tTZXNz
aW9uTWFuYWdlcjo6c2V0RHVyYXRpb24pOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJQ
bGF5YmFja1Nlc3Npb25NYW5hZ2VyOjpzZXRDdXJyZW50VGltZSk6IERlbGV0ZWQuCisgICAgICAg
IChXZWJLaXQ6OldlYlBsYXliYWNrU2Vzc2lvbk1hbmFnZXI6OnNldEJ1ZmZlcmVkVGltZSk6IERl
bGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OldlYlBsYXliYWNrU2Vzc2lvbk1hbmFnZXI6OnNldFJh
dGUpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJQbGF5YmFja1Nlc3Npb25NYW5hZ2Vy
OjpzZXRTZWVrYWJsZVJhbmdlcyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OldlYlBsYXli
YWNrU2Vzc2lvbk1hbmFnZXI6OnNldENhblBsYXlGYXN0UmV2ZXJzZSk6IERlbGV0ZWQuCisgICAg
ICAgIChXZWJLaXQ6OldlYlBsYXliYWNrU2Vzc2lvbk1hbmFnZXI6OnNldEF1ZGlvTWVkaWFTZWxl
Y3Rpb25PcHRpb25zKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViUGxheWJhY2tTZXNz
aW9uTWFuYWdlcjo6c2V0TGVnaWJsZU1lZGlhU2VsZWN0aW9uT3B0aW9ucyk6IERlbGV0ZWQuCisg
ICAgICAgIChXZWJLaXQ6OldlYlBsYXliYWNrU2Vzc2lvbk1hbmFnZXI6OnNldEV4dGVybmFsUGxh
eWJhY2spOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJQbGF5YmFja1Nlc3Npb25NYW5h
Z2VyOjpzZXRXaXJlbGVzc1ZpZGVvUGxheWJhY2tEaXNhYmxlZCk6IERlbGV0ZWQuCisgICAgICAg
ICogV2ViUHJvY2Vzcy9jb2NvYS9XZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyLmg6CisgICAgICAg
IChXZWJLaXQ6OldlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUNvbnRleHQ6OmNyZWF0ZSk6Cisg
ICAgICAgICogV2ViUHJvY2Vzcy9jb2NvYS9XZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyLm1tOgor
ICAgICAgICAoV2ViS2l0OjpXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VDb250ZXh0OjpXZWJW
aWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VDb250ZXh0KToKKyAgICAgICAgKFdlYktpdDo6V2ViVmlk
ZW9GdWxsc2NyZWVuSW50ZXJmYWNlQ29udGV4dDo6aGFzVmlkZW9DaGFuZ2VkKToKKyAgICAgICAg
KFdlYktpdDo6V2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQ29udGV4dDo6dmlkZW9EaW1lbnNp
b25zQ2hhbmdlZCk6CisgICAgICAgIChXZWJLaXQ6OldlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6
On5XZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyKToKKyAgICAgICAgKFdlYktpdDo6V2ViVmlkZW9G
dWxsc2NyZWVuTWFuYWdlcjo6Y3JlYXRlTW9kZWxBbmRJbnRlcmZhY2UpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjpyZW1vdmVDb250ZXh0KToKKyAgICAgICAg
KFdlYktpdDo6V2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6aGFzVmlkZW9DaGFuZ2VkKToKKyAg
ICAgICAgKFdlYktpdDo6V2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6dmlkZW9EaW1lbnNpb25z
Q2hhbmdlZCk6CisgICAgICAgIChXZWJLaXQ6OldlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUNv
bnRleHQ6OnJlc2V0TWVkaWFTdGF0ZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OldlYlZp
ZGVvRnVsbHNjcmVlbkludGVyZmFjZUNvbnRleHQ6OnNldER1cmF0aW9uKTogRGVsZXRlZC4KKyAg
ICAgICAgKFdlYktpdDo6V2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQ29udGV4dDo6c2V0Q3Vy
cmVudFRpbWUpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJWaWRlb0Z1bGxzY3JlZW5J
bnRlcmZhY2VDb250ZXh0OjpzZXRCdWZmZXJlZFRpbWUpOiBEZWxldGVkLgorICAgICAgICAoV2Vi
S2l0OjpXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VDb250ZXh0OjpzZXRSYXRlKTogRGVsZXRl
ZC4KKyAgICAgICAgKFdlYktpdDo6V2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQ29udGV4dDo6
c2V0VmlkZW9EaW1lbnNpb25zKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViVmlkZW9G
dWxsc2NyZWVuSW50ZXJmYWNlQ29udGV4dDo6c2V0U2Vla2FibGVSYW5nZXMpOiBEZWxldGVkLgor
ICAgICAgICAoV2ViS2l0OjpXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VDb250ZXh0OjpzZXRD
YW5QbGF5RmFzdFJldmVyc2UpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJWaWRlb0Z1
bGxzY3JlZW5JbnRlcmZhY2VDb250ZXh0OjpzZXRBdWRpb01lZGlhU2VsZWN0aW9uT3B0aW9ucyk6
IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OldlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUNv
bnRleHQ6OnNldExlZ2libGVNZWRpYVNlbGVjdGlvbk9wdGlvbnMpOiBEZWxldGVkLgorICAgICAg
ICAoV2ViS2l0OjpXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VDb250ZXh0OjpzZXRFeHRlcm5h
bFBsYXliYWNrKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViVmlkZW9GdWxsc2NyZWVu
SW50ZXJmYWNlQ29udGV4dDo6c2V0V2lyZWxlc3NWaWRlb1BsYXliYWNrRGlzYWJsZWQpOiBEZWxl
dGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjpzZXRWaWRl
b0RpbWVuc2lvbnMpOiBEZWxldGVkLgorCiAyMDE2LTA3LTA3ICBDc2FiYSBPc3p0cm9nb27DoWMg
IDxvc3N5QHdlYmtpdC5vcmc+CiAKICAgICAgICAgW01hY11bY21ha2VdIFVucmV2aWV3ZWQgYnVp
bGRmaXggYWZ0ZXIgcjIwMjg4OS4gSnVzdCBmb3IgZnVuLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vY29jb2EvV2ViUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9XZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2UuaApp
bmRleCA4ZmZhMGNhZGQwODY5Y2YxNGVjNDAyMmI1YjAyY2EwZGJkZjhmODlhLi5jNTliOGM4NjQ2
YmI4ZWQ0MWVlNzIwMzc3M2NkZDk5MDhjYWZmOWUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9jb2NvYS9XZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2UuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9XZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2UuaApA
QCAtNDAsMjAgKzQwLDggQEAgY2xhc3MgVGltZVJhbmdlczsKIAogY2xhc3MgV2ViUGxheWJhY2tT
ZXNzaW9uSW50ZXJmYWNlIHsKIHB1YmxpYzoKLSAgICBlbnVtIEV4dGVybmFsUGxheWJhY2tUYXJn
ZXRUeXBlIHsgVGFyZ2V0VHlwZU5vbmUsIFRhcmdldFR5cGVBaXJQbGF5LCBUYXJnZXRUeXBlVFZP
dXQgfTsKLQogICAgIHZpcnR1YWwgfldlYlBsYXliYWNrU2Vzc2lvbkludGVyZmFjZSgpIHsgfTsK
ICAgICB2aXJ0dWFsIHZvaWQgcmVzZXRNZWRpYVN0YXRlKCkgPSAwOwotICAgIHZpcnR1YWwgdm9p
ZCBzZXREdXJhdGlvbihkb3VibGUpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgc2V0Q3VycmVudFRp
bWUoZG91YmxlIGN1cnJlbnRUaW1lLCBkb3VibGUgYW5jaG9yVGltZSkgPSAwOwotICAgIHZpcnR1
YWwgdm9pZCBzZXRCdWZmZXJlZFRpbWUoZG91YmxlKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIHNl
dFJhdGUoYm9vbCBpc1BsYXlpbmcsIGZsb2F0IHBsYXliYWNrUmF0ZSkgPSAwOwotICAgIHZpcnR1
YWwgdm9pZCBzZXRTZWVrYWJsZVJhbmdlcyhjb25zdCBUaW1lUmFuZ2VzJikgPSAwOwotICAgIHZp
cnR1YWwgdm9pZCBzZXRDYW5QbGF5RmFzdFJldmVyc2UoYm9vbCkgPSAwOwotICAgIHZpcnR1YWwg
dm9pZCBzZXRBdWRpb01lZGlhU2VsZWN0aW9uT3B0aW9ucyhjb25zdCBWZWN0b3I8V1RGOjpTdHJp
bmc+JiBvcHRpb25zLCB1aW50NjRfdCBzZWxlY3RlZEluZGV4KSA9IDA7Ci0gICAgdmlydHVhbCB2
b2lkIHNldExlZ2libGVNZWRpYVNlbGVjdGlvbk9wdGlvbnMoY29uc3QgVmVjdG9yPFdURjo6U3Ry
aW5nPiYgb3B0aW9ucywgdWludDY0X3Qgc2VsZWN0ZWRJbmRleCkgPSAwOwotICAgIHZpcnR1YWwg
dm9pZCBzZXRFeHRlcm5hbFBsYXliYWNrKGJvb2wgZW5hYmxlZCwgRXh0ZXJuYWxQbGF5YmFja1Rh
cmdldFR5cGUsIFdURjo6U3RyaW5nIGxvY2FsaXplZERldmljZU5hbWUpID0gMDsKLSAgICB2aXJ0
dWFsIHZvaWQgc2V0V2lyZWxlc3NWaWRlb1BsYXliYWNrRGlzYWJsZWQoYm9vbCkgPSAwOwogfTsK
IAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvV2ViUGxheWJh
Y2tTZXNzaW9uTW9kZWwuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1dlYlBsYXli
YWNrU2Vzc2lvbk1vZGVsLmgKaW5kZXggNDdhYWRlNzAwNDgyOGVjYmZhYmEyNTg2NDhkNzBkNjEz
YzAzMmEyNS4uYTI1MGUzYzY1NDJjZjM1ZmViMGQzODczOTNlMDI1ODUyNTgzODJkNyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvV2ViUGxheWJhY2tTZXNzaW9uTW9k
ZWwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9XZWJQbGF5YmFja1Nlc3Np
b25Nb2RlbC5oCkBAIC0zNiw5ICszNiwxNCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNz
IFRpbWVSYW5nZXM7CiAKK2NsYXNzIFdlYlBsYXliYWNrU2Vzc2lvbk1vZGVsQ2xpZW50OworCiBj
bGFzcyBXZWJQbGF5YmFja1Nlc3Npb25Nb2RlbCB7CiBwdWJsaWM6CiAgICAgdmlydHVhbCB+V2Vi
UGxheWJhY2tTZXNzaW9uTW9kZWwoKSB7IH07CisgICAgdmlydHVhbCB2b2lkIGFkZENsaWVudChX
ZWJQbGF5YmFja1Nlc3Npb25Nb2RlbENsaWVudCYpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgcmVt
b3ZlQ2xpZW50KFdlYlBsYXliYWNrU2Vzc2lvbk1vZGVsQ2xpZW50JikgPSAwOworCiAgICAgdmly
dHVhbCB2b2lkIHBsYXkoKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHBhdXNlKCkgPSAwOwogICAg
IHZpcnR1YWwgdm9pZCB0b2dnbGVQbGF5U3RhdGUoKSA9IDA7CkBAIC01Miw2ICs1Nyw4IEBAIHB1
YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgc2VsZWN0QXVkaW9NZWRpYU9wdGlvbih1aW50NjRfdCBp
bmRleCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBzZWxlY3RMZWdpYmxlTWVkaWFPcHRpb24odWlu
dDY0X3QgaW5kZXgpID0gMDsKIAorICAgIGVudW0gRXh0ZXJuYWxQbGF5YmFja1RhcmdldFR5cGUg
eyBUYXJnZXRUeXBlTm9uZSwgVGFyZ2V0VHlwZUFpclBsYXksIFRhcmdldFR5cGVUVk91dCB9Owor
CiAgICAgdmlydHVhbCBkb3VibGUgZHVyYXRpb24oKSBjb25zdCA9IDA7CiAgICAgdmlydHVhbCBk
b3VibGUgY3VycmVudFRpbWUoKSBjb25zdCA9IDA7CiAgICAgdmlydHVhbCBkb3VibGUgYnVmZmVy
ZWRUaW1lKCkgY29uc3QgPSAwOwpAQCAtNTksMTQgKzY2LDMxIEBAIHB1YmxpYzoKICAgICB2aXJ0
dWFsIGZsb2F0IHBsYXliYWNrUmF0ZSgpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIFJlZjxUaW1l
UmFuZ2VzPiBzZWVrYWJsZVJhbmdlcygpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIGJvb2wgY2Fu
UGxheUZhc3RSZXZlcnNlKCkgY29uc3QgPSAwOwotICAgIHZpcnR1YWwgVmVjdG9yPFdURjo6U3Ry
aW5nPiBhdWRpb01lZGlhU2VsZWN0aW9uT3B0aW9ucygpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFs
IFZlY3RvcjxTdHJpbmc+IGF1ZGlvTWVkaWFTZWxlY3Rpb25PcHRpb25zKCkgY29uc3QgPSAwOwog
ICAgIHZpcnR1YWwgdWludDY0X3QgYXVkaW9NZWRpYVNlbGVjdGVkSW5kZXgoKSBjb25zdCA9IDA7
Ci0gICAgdmlydHVhbCBWZWN0b3I8V1RGOjpTdHJpbmc+IGxlZ2libGVNZWRpYVNlbGVjdGlvbk9w
dGlvbnMoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBWZWN0b3I8U3RyaW5nPiBsZWdpYmxlTWVk
aWFTZWxlY3Rpb25PcHRpb25zKCkgY29uc3QgPSAwOwogICAgIHZpcnR1YWwgdWludDY0X3QgbGVn
aWJsZU1lZGlhU2VsZWN0ZWRJbmRleCgpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIGJvb2wgZXh0
ZXJuYWxQbGF5YmFja0VuYWJsZWQoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBFeHRlcm5hbFBs
YXliYWNrVGFyZ2V0VHlwZSBleHRlcm5hbFBsYXliYWNrVGFyZ2V0VHlwZSgpIGNvbnN0ID0gMDsK
KyAgICB2aXJ0dWFsIFN0cmluZyBleHRlcm5hbFBsYXliYWNrTG9jYWxpemVkRGV2aWNlTmFtZSgp
IGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIGJvb2wgd2lyZWxlc3NWaWRlb1BsYXliYWNrRGlzYWJs
ZWQoKSBjb25zdCA9IDA7CiB9OwogCitjbGFzcyBXZWJQbGF5YmFja1Nlc3Npb25Nb2RlbENsaWVu
dCB7CitwdWJsaWM6CisgICAgdmlydHVhbCB+V2ViUGxheWJhY2tTZXNzaW9uTW9kZWxDbGllbnQo
KSB7IH07CisgICAgdmlydHVhbCB2b2lkIGR1cmF0aW9uQ2hhbmdlZChkb3VibGUpIHsgfQorICAg
IHZpcnR1YWwgdm9pZCBjdXJyZW50VGltZUNoYW5nZWQoZG91YmxlIC8qIGN1cnJlbnRUaW1lICov
LCBkb3VibGUgLyogYW5jaG9yVGltZSAqLykgeyB9CisgICAgdmlydHVhbCB2b2lkIGJ1ZmZlcmVk
VGltZUNoYW5nZWQoZG91YmxlKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgcmF0ZUNoYW5nZWQoYm9v
bCAvKiBpc1BsYXlpbmcgKi8sIGZsb2F0IC8qIHBsYXliYWNrUmF0ZSAqLykgeyB9CisgICAgdmly
dHVhbCB2b2lkIHNlZWthYmxlUmFuZ2VzQ2hhbmdlZChjb25zdCBUaW1lUmFuZ2VzJikgeyB9Cisg
ICAgdmlydHVhbCB2b2lkIGNhblBsYXlGYXN0UmV2ZXJzZUNoYW5nZWQoYm9vbCkgeyB9CisgICAg
dmlydHVhbCB2b2lkIGF1ZGlvTWVkaWFTZWxlY3Rpb25PcHRpb25zQ2hhbmdlZChjb25zdCBWZWN0
b3I8U3RyaW5nPiYgLyogb3B0aW9ucyAqLywgdWludDY0X3QgLyogc2VsZWN0ZWRJbmRleCAqLykg
eyB9CisgICAgdmlydHVhbCB2b2lkIGxlZ2libGVNZWRpYVNlbGVjdGlvbk9wdGlvbnNDaGFuZ2Vk
KGNvbnN0IFZlY3RvcjxTdHJpbmc+JiAvKiBvcHRpb25zICovLCB1aW50NjRfdCAvKiBzZWxlY3Rl
ZEluZGV4ICovKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgZXh0ZXJuYWxQbGF5YmFja0NoYW5nZWQo
Ym9vbCAvKiBlbmFibGVkICovLCBXZWJQbGF5YmFja1Nlc3Npb25Nb2RlbDo6RXh0ZXJuYWxQbGF5
YmFja1RhcmdldFR5cGUsIGNvbnN0IFN0cmluZyYgLyogbG9jYWxpemVkRGV2aWNlTmFtZSAqLykg
eyB9CisgICAgdmlydHVhbCB2b2lkIHdpcmVsZXNzVmlkZW9QbGF5YmFja0Rpc2FibGVkQ2hhbmdl
ZChib29sKSB7IH0KK307CisKIH0KIAogI2VuZGlmIC8vIFBMQVRGT1JNKElPUykgfHwgKFBMQVRG
T1JNKE1BQykgJiYgRU5BQkxFKFZJREVPX1BSRVNFTlRBVElPTl9NT0RFKSkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1dlYlBsYXliYWNrU2Vzc2lvbk1vZGVsTWVk
aWFFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9XZWJQbGF5YmFja1Nl
c3Npb25Nb2RlbE1lZGlhRWxlbWVudC5oCmluZGV4IDBiZjQxNDY0ODExYTA0OWE1NGVmOWYyNDVl
Y2JjZmMzMzA0ZTYwZmUuLjRiODg5MTViMzM3ZTY5Njc0ZmI5ZjI1NzVmOTQyYmE5ODY4MTdmMWEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1dlYlBsYXliYWNrU2Vz
c2lvbk1vZGVsTWVkaWFFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29j
b2EvV2ViUGxheWJhY2tTZXNzaW9uTW9kZWxNZWRpYUVsZW1lbnQuaApAQCAtMzAsNiArMzAsNyBA
QAogI2luY2x1ZGUgIkV2ZW50TGlzdGVuZXIuaCIKICNpbmNsdWRlICJIVE1MTWVkaWFFbGVtZW50
RW51bXMuaCIKICNpbmNsdWRlICJXZWJQbGF5YmFja1Nlc3Npb25Nb2RlbC5oIgorI2luY2x1ZGUg
PHd0Zi9IYXNoU2V0Lmg+CiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi9S
ZXRhaW5QdHIuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CkBAIC00Nyw3ICs0OCw2IEBAIHB1
YmxpYzoKICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgV2ViUGxheWJhY2tTZXNzaW9uTW9k
ZWxNZWRpYUVsZW1lbnQoKSk7CiAgICAgfQogICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwgfldl
YlBsYXliYWNrU2Vzc2lvbk1vZGVsTWVkaWFFbGVtZW50KCk7Ci0gICAgV0VCQ09SRV9FWFBPUlQg
dm9pZCBzZXRXZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2UoV2ViUGxheWJhY2tTZXNzaW9uSW50
ZXJmYWNlKik7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRNZWRpYUVsZW1lbnQoSFRNTE1l
ZGlhRWxlbWVudCopOwogICAgIFdFQkNPUkVfRVhQT1JUIEhUTUxNZWRpYUVsZW1lbnQqIG1lZGlh
RWxlbWVudCgpIGNvbnN0IHsgcmV0dXJuIG1fbWVkaWFFbGVtZW50LmdldCgpOyB9CiAKQEAgLTU1
LDYgKzU1LDggQEAgcHVibGljOgogICAgIHZvaWQgdXBkYXRlRm9yRXZlbnROYW1lKGNvbnN0IFdU
Rjo6QXRvbWljU3RyaW5nJik7CiAgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IEV2ZW50TGlzdGVu
ZXImIHJocykgY29uc3QgZmluYWwgeyByZXR1cm4gc3RhdGljX2Nhc3Q8Y29uc3QgV2ViQ29yZTo6
RXZlbnRMaXN0ZW5lcio+KHRoaXMpID09ICZyaHM7IH0KIAorICAgIFdFQkNPUkVfRVhQT1JUIHZv
aWQgYWRkQ2xpZW50KFdlYlBsYXliYWNrU2Vzc2lvbk1vZGVsQ2xpZW50Jik7CisgICAgV0VCQ09S
RV9FWFBPUlQgdm9pZCByZW1vdmVDbGllbnQoV2ViUGxheWJhY2tTZXNzaW9uTW9kZWxDbGllbnQm
KTsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHBsYXkoKSBmaW5hbDsKICAgICBXRUJDT1JFX0VY
UE9SVCB2b2lkIHBhdXNlKCkgZmluYWw7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCB0b2dnbGVQ
bGF5U3RhdGUoKSBmaW5hbDsKQEAgLTgwLDYgKzgyLDggQEAgcHVibGljOgogICAgIFZlY3RvcjxX
VEY6OlN0cmluZz4gbGVnaWJsZU1lZGlhU2VsZWN0aW9uT3B0aW9ucygpIGNvbnN0IGZpbmFsOwog
ICAgIHVpbnQ2NF90IGxlZ2libGVNZWRpYVNlbGVjdGVkSW5kZXgoKSBjb25zdCBmaW5hbDsKICAg
ICBib29sIGV4dGVybmFsUGxheWJhY2tFbmFibGVkKCkgY29uc3QgZmluYWw7CisgICAgRXh0ZXJu
YWxQbGF5YmFja1RhcmdldFR5cGUgZXh0ZXJuYWxQbGF5YmFja1RhcmdldFR5cGUoKSBjb25zdCBm
aW5hbDsKKyAgICBTdHJpbmcgZXh0ZXJuYWxQbGF5YmFja0xvY2FsaXplZERldmljZU5hbWUoKSBj
b25zdCBmaW5hbDsKICAgICBib29sIHdpcmVsZXNzVmlkZW9QbGF5YmFja0Rpc2FibGVkKCkgY29u
c3QgZmluYWw7CiAKIHByb3RlY3RlZDoKQEAgLTkxLDcgKzk1LDcgQEAgcHJpdmF0ZToKIAogICAg
IFJlZlB0cjxIVE1MTWVkaWFFbGVtZW50PiBtX21lZGlhRWxlbWVudDsKICAgICBib29sIG1faXNM
aXN0ZW5pbmcgeyBmYWxzZSB9OwotICAgIFdlYlBsYXliYWNrU2Vzc2lvbkludGVyZmFjZSogbV9w
bGF5YmFja1Nlc3Npb25JbnRlcmZhY2UgeyBudWxscHRyIH07CisgICAgSGFzaFNldDxXZWJQbGF5
YmFja1Nlc3Npb25Nb2RlbENsaWVudCo+IG1fY2xpZW50czsKICAgICBWZWN0b3I8UmVmUHRyPFRl
eHRUcmFjaz4+IG1fbGVnaWJsZVRyYWNrc0Zvck1lbnU7CiAgICAgVmVjdG9yPFJlZlB0cjxBdWRp
b1RyYWNrPj4gbV9hdWRpb1RyYWNrc0Zvck1lbnU7CiAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9XZWJQbGF5YmFja1Nlc3Npb25Nb2RlbE1lZGlhRWxlbWVu
dC5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1dlYlBsYXliYWNrU2Vzc2lvbk1v
ZGVsTWVkaWFFbGVtZW50Lm1tCmluZGV4IDI3ZTczYzgwYjE2M2E2MmEwNjI2MWY2NTE2YjQ3ZjNm
YzQ0MzExOGEuLjQyMDk1NmE4NTdkMzlmMmRiZjU1Yjk1YzNjNWUzOWU2YTEyMGY0ZmYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1dlYlBsYXliYWNrU2Vzc2lvbk1v
ZGVsTWVkaWFFbGVtZW50Lm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1dl
YlBsYXliYWNrU2Vzc2lvbk1vZGVsTWVkaWFFbGVtZW50Lm1tCkBAIC01OSwzNSArNTksMTEgQEAg
V2ViUGxheWJhY2tTZXNzaW9uTW9kZWxNZWRpYUVsZW1lbnQ6On5XZWJQbGF5YmFja1Nlc3Npb25N
b2RlbE1lZGlhRWxlbWVudCgpCiB7CiB9CiAKLXZvaWQgV2ViUGxheWJhY2tTZXNzaW9uTW9kZWxN
ZWRpYUVsZW1lbnQ6OnNldFdlYlBsYXliYWNrU2Vzc2lvbkludGVyZmFjZShXZWJQbGF5YmFja1Nl
c3Npb25JbnRlcmZhY2UqIGludGVyZmFjZSkKLXsKLSAgICBpZiAoaW50ZXJmYWNlID09IG1fcGxh
eWJhY2tTZXNzaW9uSW50ZXJmYWNlKQotICAgICAgICByZXR1cm47Ci0KLSAgICBtX3BsYXliYWNr
U2Vzc2lvbkludGVyZmFjZSA9IGludGVyZmFjZTsKLQotICAgIGlmICghbV9wbGF5YmFja1Nlc3Np
b25JbnRlcmZhY2UpCi0gICAgICAgIHJldHVybjsKLQotICAgIG1fcGxheWJhY2tTZXNzaW9uSW50
ZXJmYWNlLT5yZXNldE1lZGlhU3RhdGUoKTsKLSAgICBtX3BsYXliYWNrU2Vzc2lvbkludGVyZmFj
ZS0+c2V0RHVyYXRpb24oZHVyYXRpb24oKSk7Ci0gICAgbV9wbGF5YmFja1Nlc3Npb25JbnRlcmZh
Y2UtPnNldEN1cnJlbnRUaW1lKGN1cnJlbnRUaW1lKCksIFtbTlNQcm9jZXNzSW5mbyBwcm9jZXNz
SW5mb10gc3lzdGVtVXB0aW1lXSk7Ci0gICAgbV9wbGF5YmFja1Nlc3Npb25JbnRlcmZhY2UtPnNl
dEJ1ZmZlcmVkVGltZShidWZmZXJlZFRpbWUoKSk7Ci0gICAgbV9wbGF5YmFja1Nlc3Npb25JbnRl
cmZhY2UtPnNldFJhdGUoaXNQbGF5aW5nKCksIHBsYXliYWNrUmF0ZSgpKTsKLSAgICBtX3BsYXli
YWNrU2Vzc2lvbkludGVyZmFjZS0+c2V0U2Vla2FibGVSYW5nZXMoc2Vla2FibGVSYW5nZXMoKSk7
Ci0gICAgbV9wbGF5YmFja1Nlc3Npb25JbnRlcmZhY2UtPnNldENhblBsYXlGYXN0UmV2ZXJzZShj
YW5QbGF5RmFzdFJldmVyc2UoKSk7Ci0gICAgbV9wbGF5YmFja1Nlc3Npb25JbnRlcmZhY2UtPnNl
dFdpcmVsZXNzVmlkZW9QbGF5YmFja0Rpc2FibGVkKHdpcmVsZXNzVmlkZW9QbGF5YmFja0Rpc2Fi
bGVkKCkpOwotICAgIHVwZGF0ZUxlZ2libGVPcHRpb25zKCk7Ci19Ci0KIHZvaWQgV2ViUGxheWJh
Y2tTZXNzaW9uTW9kZWxNZWRpYUVsZW1lbnQ6OnNldE1lZGlhRWxlbWVudChIVE1MTWVkaWFFbGVt
ZW50KiBtZWRpYUVsZW1lbnQpCiB7CiAgICAgaWYgKG1fbWVkaWFFbGVtZW50ID09IG1lZGlhRWxl
bWVudCkKICAgICAgICAgcmV0dXJuOwogCi0gICAgaWYgKG1fcGxheWJhY2tTZXNzaW9uSW50ZXJm
YWNlKQotICAgICAgICBtX3BsYXliYWNrU2Vzc2lvbkludGVyZmFjZS0+cmVzZXRNZWRpYVN0YXRl
KCk7Ci0KICAgICBpZiAobV9tZWRpYUVsZW1lbnQgJiYgbV9pc0xpc3RlbmluZykgewogICAgICAg
ICBmb3IgKGF1dG8mIGV2ZW50TmFtZSA6IG9ic2VydmVkRXZlbnROYW1lcygpKQogICAgICAgICAg
ICAgbV9tZWRpYUVsZW1lbnQtPnJlbW92ZUV2ZW50TGlzdGVuZXIoZXZlbnROYW1lLCAqdGhpcywg
ZmFsc2UpOwpAQCAtOTYsMTcgKzcyLDEzIEBAIHZvaWQgV2ViUGxheWJhY2tTZXNzaW9uTW9kZWxN
ZWRpYUVsZW1lbnQ6OnNldE1lZGlhRWxlbWVudChIVE1MTWVkaWFFbGVtZW50KiBtZWRpCiAKICAg
ICBtX21lZGlhRWxlbWVudCA9IG1lZGlhRWxlbWVudDsKIAotICAgIGlmICghbV9tZWRpYUVsZW1l
bnQpCi0gICAgICAgIHJldHVybjsKLQotICAgIGZvciAoYXV0byYgZXZlbnROYW1lIDogb2JzZXJ2
ZWRFdmVudE5hbWVzKCkpCi0gICAgICAgIG1fbWVkaWFFbGVtZW50LT5hZGRFdmVudExpc3RlbmVy
KGV2ZW50TmFtZSwgKnRoaXMsIGZhbHNlKTsKLSAgICBtX2lzTGlzdGVuaW5nID0gdHJ1ZTsKKyAg
ICBpZiAobV9tZWRpYUVsZW1lbnQpIHsKKyAgICAgICAgZm9yIChhdXRvJiBldmVudE5hbWUgOiBv
YnNlcnZlZEV2ZW50TmFtZXMoKSkKKyAgICAgICAgICAgIG1fbWVkaWFFbGVtZW50LT5hZGRFdmVu
dExpc3RlbmVyKGV2ZW50TmFtZSwgKnRoaXMsIGZhbHNlKTsKKyAgICAgICAgbV9pc0xpc3Rlbmlu
ZyA9IHRydWU7CisgICAgfQogCiAgICAgdXBkYXRlRm9yRXZlbnROYW1lKGV2ZW50TmFtZUFsbCgp
KTsKLQotICAgIGlmIChtX3BsYXliYWNrU2Vzc2lvbkludGVyZmFjZSkKLSAgICAgICAgbV9wbGF5
YmFja1Nlc3Npb25JbnRlcmZhY2UtPnNldFdpcmVsZXNzVmlkZW9QbGF5YmFja0Rpc2FibGVkKG1f
bWVkaWFFbGVtZW50LT5tZWRpYVNlc3Npb24oKS53aXJlbGVzc1ZpZGVvUGxheWJhY2tEaXNhYmxl
ZCgqbV9tZWRpYUVsZW1lbnQpKTsKIH0KIAogdm9pZCBXZWJQbGF5YmFja1Nlc3Npb25Nb2RlbE1l
ZGlhRWxlbWVudDo6aGFuZGxlRXZlbnQoV2ViQ29yZTo6U2NyaXB0RXhlY3V0aW9uQ29udGV4dCos
IFdlYkNvcmU6OkV2ZW50KiBldmVudCkKQEAgLTExNiwzMSArODgsNDYgQEAgdm9pZCBXZWJQbGF5
YmFja1Nlc3Npb25Nb2RlbE1lZGlhRWxlbWVudDo6aGFuZGxlRXZlbnQoV2ViQ29yZTo6U2NyaXB0
RXhlY3V0aW9uQ28KIAogdm9pZCBXZWJQbGF5YmFja1Nlc3Npb25Nb2RlbE1lZGlhRWxlbWVudDo6
dXBkYXRlRm9yRXZlbnROYW1lKGNvbnN0IFdURjo6QXRvbWljU3RyaW5nJiBldmVudE5hbWUpCiB7
Ci0gICAgaWYgKCFtX21lZGlhRWxlbWVudCB8fCAhbV9wbGF5YmFja1Nlc3Npb25JbnRlcmZhY2Up
CisgICAgaWYgKG1fY2xpZW50cy5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybjsKIAogICAgIGJv
b2wgYWxsID0gZXZlbnROYW1lID09IGV2ZW50TmFtZUFsbCgpOwogCiAgICAgaWYgKGFsbAogICAg
ICAgICB8fCBldmVudE5hbWUgPT0gZXZlbnROYW1lcygpLmR1cmF0aW9uY2hhbmdlRXZlbnQpIHsK
LSAgICAgICAgbV9wbGF5YmFja1Nlc3Npb25JbnRlcmZhY2UtPnNldER1cmF0aW9uKG1fbWVkaWFF
bGVtZW50LT5kdXJhdGlvbigpKTsKKyAgICAgICAgZG91YmxlIGR1cmF0aW9uID0gdGhpcy0+ZHVy
YXRpb24oKTsKKyAgICAgICAgZm9yIChhdXRvKiBjbGllbnQgOiBtX2NsaWVudHMpCisgICAgICAg
ICAgICBjbGllbnQtPmR1cmF0aW9uQ2hhbmdlZChkdXJhdGlvbik7CiAgICAgICAgIC8vIFRoZXNl
IGlzIG5vIHN0YW5kYXJkIGV2ZW50IGZvciBtaW5GYXN0UmV2ZXJzZVJhdGVDaGFuZ2U7IGR1cmF0
aW9uIGNoYW5nZSBpcyBhIHJlYXNvbmFibGUgcHJveHkgZm9yIGl0LgogICAgICAgICAvLyBJdCBo
YXBwZW5zIGV2ZXJ5IHRpbWUgYSBuZXcgaXRlbSBiZWNvbWVzIHJlYWR5IHRvIHBsYXkuCi0gICAg
ICAgIG1fcGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlLT5zZXRDYW5QbGF5RmFzdFJldmVyc2UobV9t
ZWRpYUVsZW1lbnQtPm1pbkZhc3RSZXZlcnNlUmF0ZSgpIDwgMC4wKTsKKyAgICAgICAgYm9vbCBj
YW5QbGF5RmFzdFJldmVyc2UgPSB0aGlzLT5jYW5QbGF5RmFzdFJldmVyc2UoKTsKKyAgICAgICAg
Zm9yIChhdXRvKiBjbGllbnQgOiBtX2NsaWVudHMpCisgICAgICAgICAgICBjbGllbnQtPmNhblBs
YXlGYXN0UmV2ZXJzZUNoYW5nZWQoY2FuUGxheUZhc3RSZXZlcnNlKTsKICAgICB9CiAKICAgICBp
ZiAoYWxsCiAgICAgICAgIHx8IGV2ZW50TmFtZSA9PSBldmVudE5hbWVzKCkucGF1c2VFdmVudAog
ICAgICAgICB8fCBldmVudE5hbWUgPT0gZXZlbnROYW1lcygpLnBsYXlFdmVudAotICAgICAgICB8
fCBldmVudE5hbWUgPT0gZXZlbnROYW1lcygpLnJhdGVjaGFuZ2VFdmVudCkKLSAgICAgICAgbV9w
bGF5YmFja1Nlc3Npb25JbnRlcmZhY2UtPnNldFJhdGUoIW1fbWVkaWFFbGVtZW50LT5wYXVzZWQo
KSwgbV9tZWRpYUVsZW1lbnQtPnBsYXliYWNrUmF0ZSgpKTsKKyAgICAgICAgfHwgZXZlbnROYW1l
ID09IGV2ZW50TmFtZXMoKS5yYXRlY2hhbmdlRXZlbnQpIHsKKyAgICAgICAgYm9vbCBpc1BsYXlp
bmcgPSB0aGlzLT5pc1BsYXlpbmcoKTsKKyAgICAgICAgZmxvYXQgcGxheWJhY2tSYXRlID0gdGhp
cy0+cGxheWJhY2tSYXRlKCk7CisgICAgICAgIGZvciAoYXV0byogY2xpZW50IDogbV9jbGllbnRz
KQorICAgICAgICAgICAgY2xpZW50LT5yYXRlQ2hhbmdlZChpc1BsYXlpbmcsIHBsYXliYWNrUmF0
ZSk7CisgICAgfQogCiAgICAgaWYgKGFsbAogICAgICAgICB8fCBldmVudE5hbWUgPT0gZXZlbnRO
YW1lcygpLnRpbWV1cGRhdGVFdmVudCkgewotICAgICAgICBtX3BsYXliYWNrU2Vzc2lvbkludGVy
ZmFjZS0+c2V0Q3VycmVudFRpbWUobV9tZWRpYUVsZW1lbnQtPmN1cnJlbnRUaW1lKCksIFtbTlNQ
cm9jZXNzSW5mbyBwcm9jZXNzSW5mb10gc3lzdGVtVXB0aW1lXSk7Ci0gICAgICAgIG1fcGxheWJh
Y2tTZXNzaW9uSW50ZXJmYWNlLT5zZXRCdWZmZXJlZFRpbWUobV9tZWRpYUVsZW1lbnQtPm1heEJ1
ZmZlcmVkVGltZSgpKTsKLSAgICAgICAgLy8gRklYTUU6IDEzMDc4OCAtIGZpbmQgYSBiZXR0ZXIg
ZXZlbnQgdG8gdXBkYXRlIHNlZWthYmxlIHJhbmdlcyBmcm9tLgotICAgICAgICBtX3BsYXliYWNr
U2Vzc2lvbkludGVyZmFjZS0+c2V0U2Vla2FibGVSYW5nZXMobV9tZWRpYUVsZW1lbnQtPnNlZWth
YmxlKCkpOworICAgICAgICBhdXRvIGN1cnJlbnRUaW1lID0gdGhpcy0+Y3VycmVudFRpbWUoKTsK
KyAgICAgICAgYXV0byBhbmNob3JUaW1lID0gW1tOU1Byb2Nlc3NJbmZvIHByb2Nlc3NJbmZvXSBz
eXN0ZW1VcHRpbWVdOworICAgICAgICBhdXRvIGJ1ZmZlcmVkVGltZSA9IHRoaXMtPmJ1ZmZlcmVk
VGltZSgpOworICAgICAgICBhdXRvIHNlZWthYmxlUmFuZ2VzID0gdGhpcy0+c2Vla2FibGVSYW5n
ZXMoKTsKKworICAgICAgICBmb3IgKGF1dG8qIGNsaWVudCA6IG1fY2xpZW50cykgeworICAgICAg
ICAgICAgY2xpZW50LT5jdXJyZW50VGltZUNoYW5nZWQoY3VycmVudFRpbWUsIGFuY2hvclRpbWUp
OworICAgICAgICAgICAgY2xpZW50LT5idWZmZXJlZFRpbWVDaGFuZ2VkKGJ1ZmZlcmVkVGltZSk7
CisgICAgICAgICAgICAvLyBGSVhNRTogMTMwNzg4IC0gZmluZCBhIGJldHRlciBldmVudCB0byB1
cGRhdGUgc2Vla2FibGUgcmFuZ2VzIGZyb20uCisgICAgICAgICAgICBjbGllbnQtPnNlZWthYmxl
UmFuZ2VzQ2hhbmdlZChzZWVrYWJsZVJhbmdlcyk7CisgICAgICAgIH0KICAgICB9CiAKICAgICBp
ZiAoYWxsCkBAIC0xNTAsMjIgKzEzNywyOSBAQCB2b2lkIFdlYlBsYXliYWNrU2Vzc2lvbk1vZGVs
TWVkaWFFbGVtZW50Ojp1cGRhdGVGb3JFdmVudE5hbWUoY29uc3QgV1RGOjpBdG9taWNTdAogCiAg
ICAgaWYgKGFsbAogICAgICAgICB8fCBldmVudE5hbWUgPT0gZXZlbnROYW1lcygpLndlYmtpdGN1
cnJlbnRwbGF5YmFja3RhcmdldGlzd2lyZWxlc3NjaGFuZ2VkRXZlbnQpIHsKLSAgICAgICAgYm9v
bCBlbmFibGVkID0gbV9tZWRpYUVsZW1lbnQtPndlYmtpdEN1cnJlbnRQbGF5YmFja1RhcmdldElz
V2lyZWxlc3MoKTsKLSAgICAgICAgV2ViUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlOjpFeHRlcm5h
bFBsYXliYWNrVGFyZ2V0VHlwZSB0YXJnZXRUeXBlID0gV2ViUGxheWJhY2tTZXNzaW9uSW50ZXJm
YWNlOjpUYXJnZXRUeXBlTm9uZTsKLSAgICAgICAgU3RyaW5nIGxvY2FsaXplZERldmljZU5hbWU7
Ci0KLSAgICAgICAgaWYgKG1fbWVkaWFFbGVtZW50LT5tZWRpYUNvbnRyb2xzSG9zdCgpKSB7Ci0g
ICAgICAgICAgICBhdXRvIHR5cGUgPSBtX21lZGlhRWxlbWVudC0+bWVkaWFDb250cm9sc0hvc3Qo
KS0+ZXh0ZXJuYWxEZXZpY2VUeXBlKCk7Ci0gICAgICAgICAgICBpZiAodHlwZSA9PSBNZWRpYUNv
bnRyb2xzSG9zdDo6RGV2aWNlVHlwZTo6QWlycGxheSkKLSAgICAgICAgICAgICAgICB0YXJnZXRU
eXBlID0gV2ViUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlOjpUYXJnZXRUeXBlQWlyUGxheTsKLSAg
ICAgICAgICAgIGVsc2UgaWYgKHR5cGUgPT0gTWVkaWFDb250cm9sc0hvc3Q6OkRldmljZVR5cGU6
OlR2b3V0KQotICAgICAgICAgICAgICAgIHRhcmdldFR5cGUgPSBXZWJQbGF5YmFja1Nlc3Npb25J
bnRlcmZhY2U6OlRhcmdldFR5cGVUVk91dDsKLSAgICAgICAgICAgIGxvY2FsaXplZERldmljZU5h
bWUgPSBtX21lZGlhRWxlbWVudC0+bWVkaWFDb250cm9sc0hvc3QoKS0+ZXh0ZXJuYWxEZXZpY2VE
aXNwbGF5TmFtZSgpOworICAgICAgICBib29sIGVuYWJsZWQgPSBleHRlcm5hbFBsYXliYWNrRW5h
YmxlZCgpOworICAgICAgICBFeHRlcm5hbFBsYXliYWNrVGFyZ2V0VHlwZSB0YXJnZXRUeXBlID0g
ZXh0ZXJuYWxQbGF5YmFja1RhcmdldFR5cGUoKTsKKyAgICAgICAgU3RyaW5nIGxvY2FsaXplZERl
dmljZU5hbWUgPSBleHRlcm5hbFBsYXliYWNrTG9jYWxpemVkRGV2aWNlTmFtZSgpOworCisgICAg
ICAgIGJvb2wgd2lyZWxlc3NWaWRlb1BsYXliYWNrRGlzYWJsZWQgPSB0aGlzLT53aXJlbGVzc1Zp
ZGVvUGxheWJhY2tEaXNhYmxlZCgpOworCisgICAgICAgIGZvciAoYXV0byogY2xpZW50IDogbV9j
bGllbnRzKSB7CisgICAgICAgICAgICBjbGllbnQtPmV4dGVybmFsUGxheWJhY2tDaGFuZ2VkKGVu
YWJsZWQsIHRhcmdldFR5cGUsIGxvY2FsaXplZERldmljZU5hbWUpOworICAgICAgICAgICAgY2xp
ZW50LT53aXJlbGVzc1ZpZGVvUGxheWJhY2tEaXNhYmxlZENoYW5nZWQod2lyZWxlc3NWaWRlb1Bs
YXliYWNrRGlzYWJsZWQpOwogICAgICAgICB9Ci0gICAgICAgIG1fcGxheWJhY2tTZXNzaW9uSW50
ZXJmYWNlLT5zZXRFeHRlcm5hbFBsYXliYWNrKGVuYWJsZWQsIHRhcmdldFR5cGUsIGxvY2FsaXpl
ZERldmljZU5hbWUpOwotICAgICAgICBtX3BsYXliYWNrU2Vzc2lvbkludGVyZmFjZS0+c2V0V2ly
ZWxlc3NWaWRlb1BsYXliYWNrRGlzYWJsZWQobV9tZWRpYUVsZW1lbnQtPm1lZGlhU2Vzc2lvbigp
LndpcmVsZXNzVmlkZW9QbGF5YmFja0Rpc2FibGVkKCptX21lZGlhRWxlbWVudCkpOwogICAgIH0K
IH0KK3ZvaWQgV2ViUGxheWJhY2tTZXNzaW9uTW9kZWxNZWRpYUVsZW1lbnQ6OmFkZENsaWVudChX
ZWJQbGF5YmFja1Nlc3Npb25Nb2RlbENsaWVudCYgY2xpZW50KQoreworICAgIEFTU0VSVCghbV9j
bGllbnRzLmNvbnRhaW5zKCZjbGllbnQpKTsKKyAgICBtX2NsaWVudHMuYWRkKCZjbGllbnQpOwor
fQorCit2b2lkIFdlYlBsYXliYWNrU2Vzc2lvbk1vZGVsTWVkaWFFbGVtZW50OjpyZW1vdmVDbGll
bnQoV2ViUGxheWJhY2tTZXNzaW9uTW9kZWxDbGllbnQmIGNsaWVudCkKK3sKKyAgICBBU1NFUlQo
bV9jbGllbnRzLmNvbnRhaW5zKCZjbGllbnQpKTsKKyAgICBtX2NsaWVudHMucmVtb3ZlKCZjbGll
bnQpOworfQogCiB2b2lkIFdlYlBsYXliYWNrU2Vzc2lvbk1vZGVsTWVkaWFFbGVtZW50OjpwbGF5
KCkKIHsKQEAgLTI4MiwzMSArMjc2LDM3IEBAIHZvaWQgV2ViUGxheWJhY2tTZXNzaW9uTW9kZWxN
ZWRpYUVsZW1lbnQ6OnVwZGF0ZUxlZ2libGVPcHRpb25zKCkKICAgICBlbHNlCiAgICAgICAgIG1f
YXVkaW9UcmFja3NGb3JNZW51LmNsZWFyKCk7CiAKLSAgICBtX3BsYXliYWNrU2Vzc2lvbkludGVy
ZmFjZS0+c2V0QXVkaW9NZWRpYVNlbGVjdGlvbk9wdGlvbnMoYXVkaW9NZWRpYVNlbGVjdGlvbk9w
dGlvbnMoKSwgYXVkaW9NZWRpYVNlbGVjdGVkSW5kZXgoKSk7Ci0gICAgbV9wbGF5YmFja1Nlc3Np
b25JbnRlcmZhY2UtPnNldExlZ2libGVNZWRpYVNlbGVjdGlvbk9wdGlvbnMobGVnaWJsZU1lZGlh
U2VsZWN0aW9uT3B0aW9ucygpLCBsZWdpYmxlTWVkaWFTZWxlY3RlZEluZGV4KCkpOworICAgIGF1
dG8gYXVkaW9PcHRpb25zID0gYXVkaW9NZWRpYVNlbGVjdGlvbk9wdGlvbnMoKTsKKyAgICBhdXRv
IGF1ZGlvSW5kZXggPSBhdWRpb01lZGlhU2VsZWN0ZWRJbmRleCgpOworICAgIGF1dG8gbGVnaWJs
ZU9wdGlvbnMgPSBsZWdpYmxlTWVkaWFTZWxlY3Rpb25PcHRpb25zKCk7CisgICAgYXV0byBsZWdp
YmxlSW5kZXggPSBsZWdpYmxlTWVkaWFTZWxlY3RlZEluZGV4KCk7CisKKyAgICBmb3IgKGF1dG8m
IGNsaWVudCA6IG1fY2xpZW50cykgeworICAgICAgICBjbGllbnQtPmF1ZGlvTWVkaWFTZWxlY3Rp
b25PcHRpb25zQ2hhbmdlZChhdWRpb09wdGlvbnMsIGF1ZGlvSW5kZXgpOworICAgICAgICBjbGll
bnQtPmxlZ2libGVNZWRpYVNlbGVjdGlvbk9wdGlvbnNDaGFuZ2VkKGxlZ2libGVPcHRpb25zLCBs
ZWdpYmxlSW5kZXgpOworICAgIH0KIH0KIAotY29uc3QgVmVjdG9yPEF0b21pY1N0cmluZz4mICBX
ZWJQbGF5YmFja1Nlc3Npb25Nb2RlbE1lZGlhRWxlbWVudDo6b2JzZXJ2ZWRFdmVudE5hbWVzKCkK
K2NvbnN0IFZlY3RvcjxBdG9taWNTdHJpbmc+JiBXZWJQbGF5YmFja1Nlc3Npb25Nb2RlbE1lZGlh
RWxlbWVudDo6b2JzZXJ2ZWRFdmVudE5hbWVzKCkKIHsKLSAgICBzdGF0aWMgTmV2ZXJEZXN0cm95
ZWQ8VmVjdG9yPEF0b21pY1N0cmluZz4+IHNFdmVudE5hbWVzOwotCi0gICAgaWYgKCFzRXZlbnRO
YW1lcy5nZXQoKS5zaXplKCkpIHsKLSAgICAgICAgc0V2ZW50TmFtZXMuZ2V0KCkuYXBwZW5kKGV2
ZW50TmFtZXMoKS5kdXJhdGlvbmNoYW5nZUV2ZW50KTsKLSAgICAgICAgc0V2ZW50TmFtZXMuZ2V0
KCkuYXBwZW5kKGV2ZW50TmFtZXMoKS5wYXVzZUV2ZW50KTsKLSAgICAgICAgc0V2ZW50TmFtZXMu
Z2V0KCkuYXBwZW5kKGV2ZW50TmFtZXMoKS5wbGF5RXZlbnQpOwotICAgICAgICBzRXZlbnROYW1l
cy5nZXQoKS5hcHBlbmQoZXZlbnROYW1lcygpLnJhdGVjaGFuZ2VFdmVudCk7Ci0gICAgICAgIHNF
dmVudE5hbWVzLmdldCgpLmFwcGVuZChldmVudE5hbWVzKCkudGltZXVwZGF0ZUV2ZW50KTsKLSAg
ICAgICAgc0V2ZW50TmFtZXMuZ2V0KCkuYXBwZW5kKGV2ZW50TmFtZXMoKS5hZGR0cmFja0V2ZW50
KTsKLSAgICAgICAgc0V2ZW50TmFtZXMuZ2V0KCkuYXBwZW5kKGV2ZW50TmFtZXMoKS5yZW1vdmV0
cmFja0V2ZW50KTsKLSAgICAgICAgc0V2ZW50TmFtZXMuZ2V0KCkuYXBwZW5kKGV2ZW50TmFtZXMo
KS53ZWJraXRjdXJyZW50cGxheWJhY2t0YXJnZXRpc3dpcmVsZXNzY2hhbmdlZEV2ZW50KTsKLSAg
ICB9Ci0gICAgcmV0dXJuIHNFdmVudE5hbWVzLmdldCgpOworICAgIC8vIEZJWE1FKDE1NzQ1Mik6
IFJlbW92ZSB0aGUgcmlnaHQtaGFuZCBjb25zdHJ1Y3RvciBub3RhdGlvbiBvbmNlIE5ldmVyRGVz
dHJveWVkIHN1cHBvcnRzIGluaXRpYWxpemVyX2xpc3RzLgorICAgIHN0YXRpYyBOZXZlckRlc3Ry
b3llZDxWZWN0b3I8QXRvbWljU3RyaW5nPj4gbmFtZXMgPSBWZWN0b3I8QXRvbWljU3RyaW5nPih7
CisgICAgICAgIGV2ZW50TmFtZXMoKS5kdXJhdGlvbmNoYW5nZUV2ZW50LAorICAgICAgICBldmVu
dE5hbWVzKCkucGF1c2VFdmVudCwKKyAgICAgICAgZXZlbnROYW1lcygpLnBsYXlFdmVudCwKKyAg
ICAgICAgZXZlbnROYW1lcygpLnJhdGVjaGFuZ2VFdmVudCwKKyAgICAgICAgZXZlbnROYW1lcygp
LnRpbWV1cGRhdGVFdmVudCwKKyAgICAgICAgZXZlbnROYW1lcygpLmFkZHRyYWNrRXZlbnQsCisg
ICAgICAgIGV2ZW50TmFtZXMoKS5yZW1vdmV0cmFja0V2ZW50LAorICAgICAgICBldmVudE5hbWVz
KCkud2Via2l0Y3VycmVudHBsYXliYWNrdGFyZ2V0aXN3aXJlbGVzc2NoYW5nZWRFdmVudCwKKyAg
ICB9KTsKKyAgICByZXR1cm4gbmFtZXMuZ2V0KCk7CiB9CiAKIGNvbnN0IEF0b21pY1N0cmluZyYg
IFdlYlBsYXliYWNrU2Vzc2lvbk1vZGVsTWVkaWFFbGVtZW50OjpldmVudE5hbWVBbGwoKQogewot
ICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxBdG9taWNTdHJpbmc+IHNFdmVudE5hbWVBbGwgPSAi
YWxsRXZlbnRzIjsKLSAgICByZXR1cm4gc0V2ZW50TmFtZUFsbDsKKyAgICBzdGF0aWMgTmV2ZXJE
ZXN0cm95ZWQ8QXRvbWljU3RyaW5nPiBldmVudE5hbWVBbGwoImFsbEV2ZW50cyIsIEF0b21pY1N0
cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOworICAgIHJldHVybiBldmVudE5hbWVBbGw7CiB9
CiAKIGRvdWJsZSBXZWJQbGF5YmFja1Nlc3Npb25Nb2RlbE1lZGlhRWxlbWVudDo6ZHVyYXRpb24o
KSBjb25zdApAQCAtMzQ0LDcgKzM0NCw3IEBAIGJvb2wgV2ViUGxheWJhY2tTZXNzaW9uTW9kZWxN
ZWRpYUVsZW1lbnQ6OmNhblBsYXlGYXN0UmV2ZXJzZSgpIGNvbnN0CiAgICAgcmV0dXJuIG1fbWVk
aWFFbGVtZW50ID8gbV9tZWRpYUVsZW1lbnQtPm1pbkZhc3RSZXZlcnNlUmF0ZSgpIDwgMC4wIDog
ZmFsc2U7CiB9CiAKLVZlY3RvcjxXVEY6OlN0cmluZz4gV2ViUGxheWJhY2tTZXNzaW9uTW9kZWxN
ZWRpYUVsZW1lbnQ6OmF1ZGlvTWVkaWFTZWxlY3Rpb25PcHRpb25zKCkgY29uc3QKK1ZlY3RvcjxT
dHJpbmc+IFdlYlBsYXliYWNrU2Vzc2lvbk1vZGVsTWVkaWFFbGVtZW50OjphdWRpb01lZGlhU2Vs
ZWN0aW9uT3B0aW9ucygpIGNvbnN0CiB7CiAgICAgVmVjdG9yPFN0cmluZz4gYXVkaW9UcmFja0Rp
c3BsYXlOYW1lczsKIApAQCAtMzUzLDggKzM1Myw5IEBAIFZlY3RvcjxXVEY6OlN0cmluZz4gV2Vi
UGxheWJhY2tTZXNzaW9uTW9kZWxNZWRpYUVsZW1lbnQ6OmF1ZGlvTWVkaWFTZWxlY3Rpb25PcHRp
CiAKICAgICBhdXRvJiBjYXB0aW9uUHJlZmVyZW5jZXMgPSBtX21lZGlhRWxlbWVudC0+ZG9jdW1l
bnQoKS5wYWdlKCktPmdyb3VwKCkuY2FwdGlvblByZWZlcmVuY2VzKCk7CiAKKyAgICBhdWRpb1Ry
YWNrRGlzcGxheU5hbWVzLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkobV9hdWRpb1RyYWNrc0Zvck1l
bnUuc2l6ZSgpKTsKICAgICBmb3IgKGF1dG8mIGF1ZGlvVHJhY2sgOiBtX2F1ZGlvVHJhY2tzRm9y
TWVudSkKLSAgICAgICAgYXVkaW9UcmFja0Rpc3BsYXlOYW1lcy5hcHBlbmQoY2FwdGlvblByZWZl
cmVuY2VzLmRpc3BsYXlOYW1lRm9yVHJhY2soYXVkaW9UcmFjay5nZXQoKSkpOworICAgICAgICBh
dWRpb1RyYWNrRGlzcGxheU5hbWVzLnVuY2hlY2tlZEFwcGVuZChjYXB0aW9uUHJlZmVyZW5jZXMu
ZGlzcGxheU5hbWVGb3JUcmFjayhhdWRpb1RyYWNrLmdldCgpKSk7CiAKICAgICByZXR1cm4gYXVk
aW9UcmFja0Rpc3BsYXlOYW1lczsKIH0KQEAgLTM2NSw3ICszNjYsNyBAQCB1aW50NjRfdCBXZWJQ
bGF5YmFja1Nlc3Npb25Nb2RlbE1lZGlhRWxlbWVudDo6YXVkaW9NZWRpYVNlbGVjdGVkSW5kZXgo
KSBjb25zdAogICAgICAgICBpZiAobV9hdWRpb1RyYWNrc0Zvck1lbnVbaW5kZXhdLT5lbmFibGVk
KCkpCiAgICAgICAgICAgICByZXR1cm4gaW5kZXg7CiAgICAgfQotICAgIHJldHVybiAwOworICAg
IHJldHVybiBzdGQ6Om51bWVyaWNfbGltaXRzPHVpbnQ2NF90Pjo6bWF4KCk7CiB9CiAKIFZlY3Rv
cjxXVEY6OlN0cmluZz4gV2ViUGxheWJhY2tTZXNzaW9uTW9kZWxNZWRpYUVsZW1lbnQ6OmxlZ2li
bGVNZWRpYVNlbGVjdGlvbk9wdGlvbnMoKSBjb25zdApAQCAtMzg1LDE2ICszODYsMTggQEAgVmVj
dG9yPFdURjo6U3RyaW5nPiBXZWJQbGF5YmFja1Nlc3Npb25Nb2RlbE1lZGlhRWxlbWVudDo6bGVn
aWJsZU1lZGlhU2VsZWN0aW9uT3AKIAogdWludDY0X3QgV2ViUGxheWJhY2tTZXNzaW9uTW9kZWxN
ZWRpYUVsZW1lbnQ6OmxlZ2libGVNZWRpYVNlbGVjdGVkSW5kZXgoKSBjb25zdAogewotICAgIHVp
bnQ2NF90IHNlbGVjdGVkSW5kZXggPSAwOworICAgIHVpbnQ2NF90IHNlbGVjdGVkSW5kZXggPSBz
dGQ6Om51bWVyaWNfbGltaXRzPHVpbnQ2NF90Pjo6bWF4KCk7CiAgICAgdWludDY0X3Qgb2ZmSW5k
ZXggPSAwOwogICAgIGJvb2wgdHJhY2tNZW51SXRlbVNlbGVjdGVkID0gZmFsc2U7CiAKICAgICBp
ZiAoIW1fbWVkaWFFbGVtZW50IHx8ICFtX21lZGlhRWxlbWVudC0+bWVkaWFDb250cm9sc0hvc3Qo
KSkKICAgICAgICAgcmV0dXJuIHNlbGVjdGVkSW5kZXg7CiAKLSAgICBBdG9taWNTdHJpbmcgZGlz
cGxheU1vZGUgPSBtX21lZGlhRWxlbWVudC0+bWVkaWFDb250cm9sc0hvc3QoKS0+Y2FwdGlvbkRp
c3BsYXlNb2RlKCk7Ci0gICAgVGV4dFRyYWNrKiBvZmZJdGVtID0gbV9tZWRpYUVsZW1lbnQtPm1l
ZGlhQ29udHJvbHNIb3N0KCktPmNhcHRpb25NZW51T2ZmSXRlbSgpOwotICAgIFRleHRUcmFjayog
YXV0b21hdGljSXRlbSA9IG1fbWVkaWFFbGVtZW50LT5tZWRpYUNvbnRyb2xzSG9zdCgpLT5jYXB0
aW9uTWVudUF1dG9tYXRpY0l0ZW0oKTsKKyAgICBhdXRvIGhvc3QgPSBtX21lZGlhRWxlbWVudC0+
bWVkaWFDb250cm9sc0hvc3QoKTsKKworICAgIEF0b21pY1N0cmluZyBkaXNwbGF5TW9kZSA9IGhv
c3QtPmNhcHRpb25EaXNwbGF5TW9kZSgpOworICAgIFRleHRUcmFjayogb2ZmSXRlbSA9IGhvc3Qt
PmNhcHRpb25NZW51T2ZmSXRlbSgpOworICAgIFRleHRUcmFjayogYXV0b21hdGljSXRlbSA9IGhv
c3QtPmNhcHRpb25NZW51QXV0b21hdGljSXRlbSgpOwogCiAgICAgZm9yIChzaXplX3QgaW5kZXgg
PSAwOyBpbmRleCA8IG1fbGVnaWJsZVRyYWNrc0Zvck1lbnUuc2l6ZSgpOyBpbmRleCsrKSB7CiAg
ICAgICAgIGF1dG8mIHRyYWNrID0gbV9sZWdpYmxlVHJhY2tzRm9yTWVudVtpbmRleF07CkBAIC00
MjAsMTIgKzQyMywzNiBAQCB1aW50NjRfdCBXZWJQbGF5YmFja1Nlc3Npb25Nb2RlbE1lZGlhRWxl
bWVudDo6bGVnaWJsZU1lZGlhU2VsZWN0ZWRJbmRleCgpIGNvbnN0CiAKIGJvb2wgV2ViUGxheWJh
Y2tTZXNzaW9uTW9kZWxNZWRpYUVsZW1lbnQ6OmV4dGVybmFsUGxheWJhY2tFbmFibGVkKCkgY29u
c3QKIHsKLSAgICByZXR1cm4gbV9tZWRpYUVsZW1lbnQgPyBtX21lZGlhRWxlbWVudC0+d2Via2l0
Q3VycmVudFBsYXliYWNrVGFyZ2V0SXNXaXJlbGVzcygpIDogZmFsc2U7CisgICAgcmV0dXJuIG1f
bWVkaWFFbGVtZW50ICYmIG1fbWVkaWFFbGVtZW50LT53ZWJraXRDdXJyZW50UGxheWJhY2tUYXJn
ZXRJc1dpcmVsZXNzKCk7Cit9CisKK1dlYlBsYXliYWNrU2Vzc2lvbk1vZGVsOjpFeHRlcm5hbFBs
YXliYWNrVGFyZ2V0VHlwZSBXZWJQbGF5YmFja1Nlc3Npb25Nb2RlbE1lZGlhRWxlbWVudDo6ZXh0
ZXJuYWxQbGF5YmFja1RhcmdldFR5cGUoKSBjb25zdAoreworICAgIGlmICghbV9tZWRpYUVsZW1l
bnQgfHwgIW1fbWVkaWFFbGVtZW50LT5tZWRpYUNvbnRyb2xzSG9zdCgpKQorICAgICAgICByZXR1
cm4gVGFyZ2V0VHlwZU5vbmU7CisKKyAgICBzd2l0Y2ggKG1fbWVkaWFFbGVtZW50LT5tZWRpYUNv
bnRyb2xzSG9zdCgpLT5leHRlcm5hbERldmljZVR5cGUoKSkgeworICAgIGRlZmF1bHQ6CisgICAg
ICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIGNhc2UgTWVkaWFDb250cm9sc0hvc3Q6OkRl
dmljZVR5cGU6Ok5vbmU6CisgICAgICAgIHJldHVybiBUYXJnZXRUeXBlTm9uZTsKKyAgICBjYXNl
IE1lZGlhQ29udHJvbHNIb3N0OjpEZXZpY2VUeXBlOjpBaXJwbGF5OgorICAgICAgICByZXR1cm4g
VGFyZ2V0VHlwZUFpclBsYXk7CisgICAgY2FzZSBNZWRpYUNvbnRyb2xzSG9zdDo6RGV2aWNlVHlw
ZTo6VHZvdXQ6CisgICAgICAgIHJldHVybiBUYXJnZXRUeXBlVFZPdXQ7CisgICAgfQorfQorCitT
dHJpbmcgV2ViUGxheWJhY2tTZXNzaW9uTW9kZWxNZWRpYUVsZW1lbnQ6OmV4dGVybmFsUGxheWJh
Y2tMb2NhbGl6ZWREZXZpY2VOYW1lKCkgY29uc3QKK3sKKyAgICBpZiAobV9tZWRpYUVsZW1lbnQg
JiYgbV9tZWRpYUVsZW1lbnQtPm1lZGlhQ29udHJvbHNIb3N0KCkpCisgICAgICAgIHJldHVybiBt
X21lZGlhRWxlbWVudC0+bWVkaWFDb250cm9sc0hvc3QoKS0+ZXh0ZXJuYWxEZXZpY2VEaXNwbGF5
TmFtZSgpOworICAgIHJldHVybiBlbXB0eVN0cmluZygpOwogfQogCiBib29sIFdlYlBsYXliYWNr
U2Vzc2lvbk1vZGVsTWVkaWFFbGVtZW50Ojp3aXJlbGVzc1ZpZGVvUGxheWJhY2tEaXNhYmxlZCgp
IGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1fbWVkaWFFbGVtZW50ID8gbV9tZWRpYUVsZW1lbnQtPm1l
ZGlhU2Vzc2lvbigpLndpcmVsZXNzVmlkZW9QbGF5YmFja0Rpc2FibGVkKCptX21lZGlhRWxlbWVu
dCkgOiBmYWxzZTsKKyAgICByZXR1cm4gbV9tZWRpYUVsZW1lbnQgJiYgbV9tZWRpYUVsZW1lbnQt
Pm1lZGlhU2Vzc2lvbigpLndpcmVsZXNzVmlkZW9QbGF5YmFja0Rpc2FibGVkKCptX21lZGlhRWxl
bWVudCk7CiB9CiAKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Y29jb2EvV2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9jb2NvYS9XZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2UuaAppbmRleCBhOGVmMjk1MGFi
OGU3YWFmZTQ0MDQ3NDhiMTYzNzVjY2NmYmYzZTA1Li5kZjdmZTkyMWIzNmQzMzYzOTA2MzYzMTgy
MzRjYTQxZTM2ZjQ2NDVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2Nv
YS9XZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9jb2NvYS9XZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2UuaApAQCAtMzYsMTAgKzM2LDkg
QEAgV0VCQ09SRV9FWFBPUlQgYm9vbCBzdXBwb3J0c1BpY3R1cmVJblBpY3R1cmUoKTsKIAogY2xh
c3MgVGltZVJhbmdlczsKIAotY2xhc3MgV2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlIDogcHVi
bGljIFdlYlBsYXliYWNrU2Vzc2lvbkludGVyZmFjZSB7CitjbGFzcyBXZWJWaWRlb0Z1bGxzY3Jl
ZW5JbnRlcmZhY2UgewogcHVibGljOgogICAgIHZpcnR1YWwgfldlYlZpZGVvRnVsbHNjcmVlbklu
dGVyZmFjZSgpIHsgfTsKLSAgICB2aXJ0dWFsIHZvaWQgc2V0VmlkZW9EaW1lbnNpb25zKGJvb2wg
aGFzVmlkZW8sIGZsb2F0IHdpZHRoLCBmbG9hdCBoZWlnaHQpID0gMDsKIH07CiAKIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1dlYlZpZGVvRnVsbHNjcmVlbk1v
ZGVsLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9XZWJWaWRlb0Z1bGxzY3JlZW5N
b2RlbC5oCmluZGV4IDE3MDAyNTJlMzgyYWEwZTRkNGNlM2ExMTZjMWFiMGYyYjE3NmUxOTkuLjFi
MmM3YWYxNTNhNTkwZDhlYjRjNjVjMGYxYjg1NTJmNGE4NDVlMTAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1dlYlZpZGVvRnVsbHNjcmVlbk1vZGVsLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvV2ViVmlkZW9GdWxsc2NyZWVuTW9kZWwuaApA
QCAtMzUsMTUgKzM1LDMwIEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorY2xhc3MgV2ViVmlk
ZW9GdWxsc2NyZWVuTW9kZWxDbGllbnQ7CisKIGNsYXNzIFdlYlZpZGVvRnVsbHNjcmVlbk1vZGVs
IHsKIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5XZWJWaWRlb0Z1bGxzY3JlZW5Nb2RlbCgpIHsgfTsK
KyAgICB2aXJ0dWFsIHZvaWQgYWRkQ2xpZW50KFdlYlZpZGVvRnVsbHNjcmVlbk1vZGVsQ2xpZW50
JikgPSAwOworICAgIHZpcnR1YWwgdm9pZCByZW1vdmVDbGllbnQoV2ViVmlkZW9GdWxsc2NyZWVu
TW9kZWxDbGllbnQmKT0gMDsKKwogICAgIHZpcnR1YWwgdm9pZCByZXF1ZXN0RnVsbHNjcmVlbk1v
ZGUoSFRNTE1lZGlhRWxlbWVudEVudW1zOjpWaWRlb0Z1bGxzY3JlZW5Nb2RlKSA9IDA7CiAgICAg
dmlydHVhbCB2b2lkIHNldFZpZGVvTGF5ZXJGcmFtZShGbG9hdFJlY3QpID0gMDsKICAgICBlbnVt
IFZpZGVvR3Jhdml0eSB7IFZpZGVvR3Jhdml0eVJlc2l6ZSwgVmlkZW9HcmF2aXR5UmVzaXplQXNw
ZWN0LCBWaWRlb0dyYXZpdHlSZXNpemVBc3BlY3RGaWxsIH07CiAgICAgdmlydHVhbCB2b2lkIHNl
dFZpZGVvTGF5ZXJHcmF2aXR5KFZpZGVvR3Jhdml0eSkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBm
dWxsc2NyZWVuTW9kZUNoYW5nZWQoSFRNTE1lZGlhRWxlbWVudEVudW1zOjpWaWRlb0Z1bGxzY3Jl
ZW5Nb2RlKSA9IDA7CisKICAgICB2aXJ0dWFsIGJvb2wgaXNWaXNpYmxlKCkgY29uc3QgPSAwOwor
ICAgIHZpcnR1YWwgRmxvYXRTaXplIHZpZGVvRGltZW5zaW9ucygpIGNvbnN0ID0gMDsKKyAgICB2
aXJ0dWFsIGJvb2wgaGFzVmlkZW8oKSBjb25zdCA9IDA7Cit9OworCitjbGFzcyBXZWJWaWRlb0Z1
bGxzY3JlZW5Nb2RlbENsaWVudCB7CitwdWJsaWM6CisgICAgdmlydHVhbCB+V2ViVmlkZW9GdWxs
c2NyZWVuTW9kZWxDbGllbnQoKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgaGFzVmlkZW9DaGFuZ2Vk
KGJvb2wpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgdmlkZW9EaW1lbnNpb25zQ2hhbmdlZChjb25z
dCBGbG9hdFNpemUmKSA9IDA7CiB9OwogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9jb2NvYS9XZWJWaWRlb0Z1bGxzY3JlZW5Nb2RlbFZpZGVvRWxlbWVudC5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvV2ViVmlkZW9GdWxsc2NyZWVuTW9kZWxWaWRlb0Vs
ZW1lbnQuaAppbmRleCBkNWQ3ZGYzMGJlOGZkMTJkZWI0NTljYzFlNDY1ZDdjNDQzOWU5MDdiLi5m
ZmM4NzQ5ODZiNDE1YzZmZDA2ZGQ1ZDQyNjUzNDQwOTU2NWU1MDVkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9XZWJWaWRlb0Z1bGxzY3JlZW5Nb2RlbFZpZGVvRWxl
bWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1dlYlZpZGVvRnVsbHNj
cmVlbk1vZGVsVmlkZW9FbGVtZW50LmgKQEAgLTM1LDYgKzM1LDcgQEAKICNpbmNsdWRlICJQbGF0
Zm9ybUxheWVyLmgiCiAjaW5jbHVkZSAiV2ViVmlkZW9GdWxsc2NyZWVuTW9kZWwuaCIKICNpbmNs
dWRlIDxmdW5jdGlvbmFsPgorI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CiAjaW5jbHVkZSA8d3Rm
L1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KICNpbmNsdWRlIDx3dGYvVmVj
dG9yLmg+CkBAIC00NCw0NCArNDUsNTAgQEAgY2xhc3MgQXVkaW9UcmFjazsKIGNsYXNzIEhUTUxW
aWRlb0VsZW1lbnQ7CiBjbGFzcyBUZXh0VHJhY2s7CiBjbGFzcyBXZWJQbGF5YmFja1Nlc3Npb25N
b2RlbE1lZGlhRWxlbWVudDsKLWNsYXNzIFdlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZTsKIAog
Y2xhc3MgV2ViVmlkZW9GdWxsc2NyZWVuTW9kZWxWaWRlb0VsZW1lbnQgOiBwdWJsaWMgV2ViVmlk
ZW9GdWxsc2NyZWVuTW9kZWwsIHB1YmxpYyBFdmVudExpc3RlbmVyIHsKIHB1YmxpYzoKLSAgICBz
dGF0aWMgUmVmUHRyPFdlYlZpZGVvRnVsbHNjcmVlbk1vZGVsVmlkZW9FbGVtZW50PiBjcmVhdGUo
V2ViUGxheWJhY2tTZXNzaW9uTW9kZWxNZWRpYUVsZW1lbnQmIHBsYXliYWNrU2Vzc2lvbk1vZGVs
KQorICAgIHN0YXRpYyBSZWZQdHI8V2ViVmlkZW9GdWxsc2NyZWVuTW9kZWxWaWRlb0VsZW1lbnQ+
IGNyZWF0ZSgpCiAgICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBXZWJWaWRlb0Z1
bGxzY3JlZW5Nb2RlbFZpZGVvRWxlbWVudChwbGF5YmFja1Nlc3Npb25Nb2RlbCkpOworICAgICAg
ICByZXR1cm4gYWRvcHRSZWYoKm5ldyBXZWJWaWRlb0Z1bGxzY3JlZW5Nb2RlbFZpZGVvRWxlbWVu
dCgpKTsKICAgICB9CiAgICAgV0VCQ09SRV9FWFBPUlQgdmlydHVhbCB+V2ViVmlkZW9GdWxsc2Ny
ZWVuTW9kZWxWaWRlb0VsZW1lbnQoKTsKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldFdlYlZp
ZGVvRnVsbHNjcmVlbkludGVyZmFjZShXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2UqKTsKICAg
ICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldFZpZGVvRWxlbWVudChIVE1MVmlkZW9FbGVtZW50Kik7
CiAgICAgV0VCQ09SRV9FWFBPUlQgSFRNTFZpZGVvRWxlbWVudCogdmlkZW9FbGVtZW50KCkgY29u
c3QgeyByZXR1cm4gbV92aWRlb0VsZW1lbnQuZ2V0KCk7IH0KICAgICBXRUJDT1JFX0VYUE9SVCB2
b2lkIHNldFZpZGVvRnVsbHNjcmVlbkxheWVyKFBsYXRmb3JtTGF5ZXIqLCBzdGQ6OmZ1bmN0aW9u
PHZvaWQoKT4gY29tcGxldGlvbkhhbmRsZXIgPSBbXSB7IH0pOwogICAgIFdFQkNPUkVfRVhQT1JU
IHZvaWQgd2FpdEZvclByZXBhcmVkRm9ySW5saW5lVGhlbihzdGQ6OmZ1bmN0aW9uPHZvaWQoKT4g
Y29tcGxldGlvbkhhbmRsZXIgPSBbXSB7IH0pOwotICAgIFdlYlBsYXliYWNrU2Vzc2lvbk1vZGVs
TWVkaWFFbGVtZW50JiBwbGF5YmFja1Nlc3Npb25Nb2RlbCgpIHsgcmV0dXJuIG1fcGxheWJhY2tT
ZXNzaW9uTW9kZWw7IH0KICAgICAKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGhhbmRsZUV2ZW50
KFdlYkNvcmU6OlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBXZWJDb3JlOjpFdmVudCopIG92ZXJy
aWRlOwogICAgIHZvaWQgdXBkYXRlRm9yRXZlbnROYW1lKGNvbnN0IFdURjo6QXRvbWljU3RyaW5n
Jik7CiAgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IEV2ZW50TGlzdGVuZXImIHJocykgY29uc3Qg
b3ZlcnJpZGUgeyByZXR1cm4gc3RhdGljX2Nhc3Q8Y29uc3QgV2ViQ29yZTo6RXZlbnRMaXN0ZW5l
cio+KHRoaXMpID09ICZyaHM7IH0KIAorICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgYWRkQ2xpZW50
KFdlYlZpZGVvRnVsbHNjcmVlbk1vZGVsQ2xpZW50Jikgb3ZlcnJpZGU7CisgICAgV0VCQ09SRV9F
WFBPUlQgdm9pZCByZW1vdmVDbGllbnQoV2ViVmlkZW9GdWxsc2NyZWVuTW9kZWxDbGllbnQmKSBv
dmVycmlkZTsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHJlcXVlc3RGdWxsc2NyZWVuTW9kZShI
VE1MTWVkaWFFbGVtZW50RW51bXM6OlZpZGVvRnVsbHNjcmVlbk1vZGUpIG92ZXJyaWRlOwogICAg
IFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0VmlkZW9MYXllckZyYW1lKEZsb2F0UmVjdCkgb3ZlcnJp
ZGU7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRWaWRlb0xheWVyR3Jhdml0eShWaWRlb0dy
YXZpdHkpIG92ZXJyaWRlOwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZnVsbHNjcmVlbk1vZGVD
aGFuZ2VkKEhUTUxNZWRpYUVsZW1lbnRFbnVtczo6VmlkZW9GdWxsc2NyZWVuTW9kZSkgb3ZlcnJp
ZGU7CiAgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBpc1Zpc2libGUoKSBjb25zdCBvdmVycmlkZTsK
KyAgICBXRUJDT1JFX0VYUE9SVCBGbG9hdFNpemUgdmlkZW9EaW1lbnNpb25zKCkgY29uc3Qgb3Zl
cnJpZGUgeyByZXR1cm4gbV92aWRlb0RpbWVuc2lvbnM7IH0KKyAgICBXRUJDT1JFX0VYUE9SVCBi
b29sIGhhc1ZpZGVvKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9oYXNWaWRlbzsgfQorCiAK
IHByb3RlY3RlZDoKLSAgICBXRUJDT1JFX0VYUE9SVCBXZWJWaWRlb0Z1bGxzY3JlZW5Nb2RlbFZp
ZGVvRWxlbWVudChXZWJQbGF5YmFja1Nlc3Npb25Nb2RlbE1lZGlhRWxlbWVudCYpOworICAgIFdF
QkNPUkVfRVhQT1JUIFdlYlZpZGVvRnVsbHNjcmVlbk1vZGVsVmlkZW9FbGVtZW50KCk7CiAKIHBy
aXZhdGU6CisgICAgdm9pZCBzZXRIYXNWaWRlbyhib29sKTsKKyAgICB2b2lkIHNldFZpZGVvRGlt
ZW5zaW9ucyhjb25zdCBGbG9hdFNpemUmKTsKKwogICAgIHN0YXRpYyBjb25zdCBWZWN0b3I8V1RG
OjpBdG9taWNTdHJpbmc+JiBvYnNlcnZlZEV2ZW50TmFtZXMoKTsKICAgICBjb25zdCBXVEY6OkF0
b21pY1N0cmluZyYgZXZlbnROYW1lQWxsKCk7CiAKLSAgICBSZWY8V2ViUGxheWJhY2tTZXNzaW9u
TW9kZWxNZWRpYUVsZW1lbnQ+IG1fcGxheWJhY2tTZXNzaW9uTW9kZWw7CiAgICAgUmVmUHRyPEhU
TUxWaWRlb0VsZW1lbnQ+IG1fdmlkZW9FbGVtZW50OwogICAgIFJldGFpblB0cjxQbGF0Zm9ybUxh
eWVyPiBtX3ZpZGVvRnVsbHNjcmVlbkxheWVyOwogICAgIGJvb2wgbV9pc0xpc3RlbmluZyB7IGZh
bHNlIH07Ci0gICAgV2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlKiBtX3ZpZGVvRnVsbHNjcmVl
bkludGVyZmFjZSB7IG51bGxwdHIgfTsKKyAgICBIYXNoU2V0PFdlYlZpZGVvRnVsbHNjcmVlbk1v
ZGVsQ2xpZW50Kj4gbV9jbGllbnRzOworICAgIGJvb2wgbV9oYXNWaWRlbyB7IGZhbHNlIH07Cisg
ICAgRmxvYXRTaXplIG1fdmlkZW9EaW1lbnNpb25zOwogICAgIEZsb2F0UmVjdCBtX3ZpZGVvRnJh
bWU7CiAgICAgVmVjdG9yPFJlZlB0cjxUZXh0VHJhY2s+PiBtX2xlZ2libGVUcmFja3NGb3JNZW51
OwogICAgIFZlY3RvcjxSZWZQdHI8QXVkaW9UcmFjaz4+IG1fYXVkaW9UcmFja3NGb3JNZW51Owpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvV2ViVmlkZW9GdWxsc2Ny
ZWVuTW9kZWxWaWRlb0VsZW1lbnQubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9X
ZWJWaWRlb0Z1bGxzY3JlZW5Nb2RlbFZpZGVvRWxlbWVudC5tbQppbmRleCBjMGJhZmI4ZmNkZTQ4
ODJlOWUxNjk1NjEyYjEwZTM5YzBiZjAwZjY4Li5kYjY3N2I4MDUyN2FjZDJhN2IzMjZlYzRmN2Y3
MzI5NWY1NTFhMThiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9X
ZWJWaWRlb0Z1bGxzY3JlZW5Nb2RlbFZpZGVvRWxlbWVudC5tbQorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9jb2NvYS9XZWJWaWRlb0Z1bGxzY3JlZW5Nb2RlbFZpZGVvRWxlbWVudC5tbQpA
QCAtNTEsOSArNTEsOCBAQAogCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAotV2ViVmlkZW9G
dWxsc2NyZWVuTW9kZWxWaWRlb0VsZW1lbnQ6OldlYlZpZGVvRnVsbHNjcmVlbk1vZGVsVmlkZW9F
bGVtZW50KFdlYlBsYXliYWNrU2Vzc2lvbk1vZGVsTWVkaWFFbGVtZW50JiBwbGF5YmFja1Nlc3Np
b25Nb2RlbCkKK1dlYlZpZGVvRnVsbHNjcmVlbk1vZGVsVmlkZW9FbGVtZW50OjpXZWJWaWRlb0Z1
bGxzY3JlZW5Nb2RlbFZpZGVvRWxlbWVudCgpCiAgICAgOiBFdmVudExpc3RlbmVyKEV2ZW50TGlz
dGVuZXI6OkNQUEV2ZW50TGlzdGVuZXJUeXBlKQotICAgICwgbV9wbGF5YmFja1Nlc3Npb25Nb2Rl
bChwbGF5YmFja1Nlc3Npb25Nb2RlbCkKIHsKIH0KIApAQCAtNjEsMTggKzYwLDYgQEAgV2ViVmlk
ZW9GdWxsc2NyZWVuTW9kZWxWaWRlb0VsZW1lbnQ6On5XZWJWaWRlb0Z1bGxzY3JlZW5Nb2RlbFZp
ZGVvRWxlbWVudCgpCiB7CiB9CiAKLXZvaWQgV2ViVmlkZW9GdWxsc2NyZWVuTW9kZWxWaWRlb0Vs
ZW1lbnQ6OnNldFdlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZShXZWJWaWRlb0Z1bGxzY3JlZW5J
bnRlcmZhY2UqIGludGVyZmFjZSkKLXsKLSAgICBpZiAoaW50ZXJmYWNlID09IG1fdmlkZW9GdWxs
c2NyZWVuSW50ZXJmYWNlKQotICAgICAgICByZXR1cm47Ci0KLSAgICBtX3ZpZGVvRnVsbHNjcmVl
bkludGVyZmFjZSA9IGludGVyZmFjZTsKLSAgICBtX3BsYXliYWNrU2Vzc2lvbk1vZGVsLT5zZXRX
ZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2UoaW50ZXJmYWNlKTsKLQotICAgIGlmIChtX3ZpZGVv
RnVsbHNjcmVlbkludGVyZmFjZSAmJiBtX3ZpZGVvRWxlbWVudCkKLSAgICAgICAgbV92aWRlb0Z1
bGxzY3JlZW5JbnRlcmZhY2UtPnNldFZpZGVvRGltZW5zaW9ucyh0cnVlLCBtX3ZpZGVvRWxlbWVu
dC0+dmlkZW9XaWR0aCgpLCBtX3ZpZGVvRWxlbWVudC0+dmlkZW9IZWlnaHQoKSk7Ci19Ci0KIHZv
aWQgV2ViVmlkZW9GdWxsc2NyZWVuTW9kZWxWaWRlb0VsZW1lbnQ6OnNldFZpZGVvRWxlbWVudChI
VE1MVmlkZW9FbGVtZW50KiB2aWRlb0VsZW1lbnQpCiB7CiAgICAgaWYgKG1fdmlkZW9FbGVtZW50
ID09IHZpZGVvRWxlbWVudCkKQEAgLTg5LDE3ICs3NiwxMyBAQCB2b2lkIFdlYlZpZGVvRnVsbHNj
cmVlbk1vZGVsVmlkZW9FbGVtZW50OjpzZXRWaWRlb0VsZW1lbnQoSFRNTFZpZGVvRWxlbWVudCog
dmlkZQogCiAgICAgbV92aWRlb0VsZW1lbnQgPSB2aWRlb0VsZW1lbnQ7CiAKLSAgICBpZiAoIW1f
dmlkZW9FbGVtZW50KQotICAgICAgICByZXR1cm47Ci0KLSAgICBmb3IgKGF1dG8mIGV2ZW50TmFt
ZSA6IG9ic2VydmVkRXZlbnROYW1lcygpKQotICAgICAgICBtX3ZpZGVvRWxlbWVudC0+YWRkRXZl
bnRMaXN0ZW5lcihldmVudE5hbWUsICp0aGlzLCBmYWxzZSk7Ci0gICAgbV9pc0xpc3RlbmluZyA9
IHRydWU7CisgICAgaWYgKG1fdmlkZW9FbGVtZW50KSB7CisgICAgICAgIGZvciAoYXV0byYgZXZl
bnROYW1lIDogb2JzZXJ2ZWRFdmVudE5hbWVzKCkpCisgICAgICAgICAgICBtX3ZpZGVvRWxlbWVu
dC0+YWRkRXZlbnRMaXN0ZW5lcihldmVudE5hbWUsICp0aGlzLCBmYWxzZSk7CisgICAgICAgIG1f
aXNMaXN0ZW5pbmcgPSB0cnVlOworICAgIH0KIAogICAgIHVwZGF0ZUZvckV2ZW50TmFtZShldmVu
dE5hbWVBbGwoKSk7Ci0KLSAgICBpZiAobV92aWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2UpCi0gICAg
ICAgIG1fdmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlLT5zZXRWaWRlb0RpbWVuc2lvbnModHJ1ZSwg
dmlkZW9FbGVtZW50LT52aWRlb1dpZHRoKCksIHZpZGVvRWxlbWVudC0+dmlkZW9IZWlnaHQoKSk7
CiB9CiAKIHZvaWQgV2ViVmlkZW9GdWxsc2NyZWVuTW9kZWxWaWRlb0VsZW1lbnQ6OmhhbmRsZUV2
ZW50KFdlYkNvcmU6OlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBXZWJDb3JlOjpFdmVudCogZXZl
bnQpCkBAIC0xMDksMTQgKzkyLDE2IEBAIHZvaWQgV2ViVmlkZW9GdWxsc2NyZWVuTW9kZWxWaWRl
b0VsZW1lbnQ6OmhhbmRsZUV2ZW50KFdlYkNvcmU6OlNjcmlwdEV4ZWN1dGlvbkNvCiAKIHZvaWQg
V2ViVmlkZW9GdWxsc2NyZWVuTW9kZWxWaWRlb0VsZW1lbnQ6OnVwZGF0ZUZvckV2ZW50TmFtZShj
b25zdCBXVEY6OkF0b21pY1N0cmluZyYgZXZlbnROYW1lKQogewotICAgIGlmICghbV92aWRlb0Vs
ZW1lbnQgfHwgIW1fdmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlKQorICAgIGlmIChtX2NsaWVudHMu
aXNFbXB0eSgpKQogICAgICAgICByZXR1cm47CiAgICAgCiAgICAgYm9vbCBhbGwgPSBldmVudE5h
bWUgPT0gZXZlbnROYW1lQWxsKCk7CiAKICAgICBpZiAoYWxsCi0gICAgICAgIHx8IGV2ZW50TmFt
ZSA9PSBldmVudE5hbWVzKCkucmVzaXplRXZlbnQpCi0gICAgICAgIG1fdmlkZW9GdWxsc2NyZWVu
SW50ZXJmYWNlLT5zZXRWaWRlb0RpbWVuc2lvbnModHJ1ZSwgbV92aWRlb0VsZW1lbnQtPnZpZGVv
V2lkdGgoKSwgbV92aWRlb0VsZW1lbnQtPnZpZGVvSGVpZ2h0KCkpOworICAgICAgICB8fCBldmVu
dE5hbWUgPT0gZXZlbnROYW1lcygpLnJlc2l6ZUV2ZW50KSB7CisgICAgICAgIHNldEhhc1ZpZGVv
KCEhbV92aWRlb0VsZW1lbnQpOworICAgICAgICBzZXRWaWRlb0RpbWVuc2lvbnMobV92aWRlb0Vs
ZW1lbnQgPyBGbG9hdFNpemUobV92aWRlb0VsZW1lbnQtPnZpZGVvV2lkdGgoKSwgbV92aWRlb0Vs
ZW1lbnQtPnZpZGVvSGVpZ2h0KCkpIDogRmxvYXRTaXplKCkpOworICAgIH0KIH0KIAogdm9pZCBX
ZWJWaWRlb0Z1bGxzY3JlZW5Nb2RlbFZpZGVvRWxlbWVudDo6c2V0VmlkZW9GdWxsc2NyZWVuTGF5
ZXIoUGxhdGZvcm1MYXllciogdmlkZW9MYXllciwgc3RkOjpmdW5jdGlvbjx2b2lkKCk+IGNvbXBs
ZXRpb25IYW5kbGVyKQpAQCAtMjAyLDYgKzE4NywxOCBAQCB2b2lkIFdlYlZpZGVvRnVsbHNjcmVl
bk1vZGVsVmlkZW9FbGVtZW50OjpmdWxsc2NyZWVuTW9kZUNoYW5nZWQoSFRNTE1lZGlhRWxlbWVu
dAogICAgICAgICBtX3ZpZGVvRWxlbWVudC0+ZnVsbHNjcmVlbk1vZGVDaGFuZ2VkKHZpZGVvRnVs
bHNjcmVlbk1vZGUpOwogfQogCit2b2lkIFdlYlZpZGVvRnVsbHNjcmVlbk1vZGVsVmlkZW9FbGVt
ZW50OjphZGRDbGllbnQoV2ViVmlkZW9GdWxsc2NyZWVuTW9kZWxDbGllbnQmIGNsaWVudCkKK3sK
KyAgICBBU1NFUlQoIW1fY2xpZW50cy5jb250YWlucygmY2xpZW50KSk7CisgICAgbV9jbGllbnRz
LmFkZCgmY2xpZW50KTsKK30KKwordm9pZCBXZWJWaWRlb0Z1bGxzY3JlZW5Nb2RlbFZpZGVvRWxl
bWVudDo6cmVtb3ZlQ2xpZW50KFdlYlZpZGVvRnVsbHNjcmVlbk1vZGVsQ2xpZW50JiBjbGllbnQp
Cit7CisgICAgQVNTRVJUKG1fY2xpZW50cy5jb250YWlucygmY2xpZW50KSk7CisgICAgbV9jbGll
bnRzLnJlbW92ZSgmY2xpZW50KTsKK30KKwogYm9vbCBXZWJWaWRlb0Z1bGxzY3JlZW5Nb2RlbFZp
ZGVvRWxlbWVudDo6aXNWaXNpYmxlKCkgY29uc3QKIHsKICAgICBpZiAoIW1fdmlkZW9FbGVtZW50
KQpAQCAtMjEzLDQgKzIxMCwyNiBAQCBib29sIFdlYlZpZGVvRnVsbHNjcmVlbk1vZGVsVmlkZW9F
bGVtZW50Ojppc1Zpc2libGUoKSBjb25zdAogICAgIHJldHVybiBmYWxzZTsKIH0KIAordm9pZCBX
ZWJWaWRlb0Z1bGxzY3JlZW5Nb2RlbFZpZGVvRWxlbWVudDo6c2V0SGFzVmlkZW8oYm9vbCBoYXNW
aWRlbykKK3sKKyAgICBpZiAoaGFzVmlkZW8gPT0gbV9oYXNWaWRlbykKKyAgICAgICAgcmV0dXJu
OworCisgICAgbV9oYXNWaWRlbyA9IGhhc1ZpZGVvOworCisgICAgZm9yIChhdXRvJiBjbGllbnQg
OiBtX2NsaWVudHMpCisgICAgICAgIGNsaWVudC0+aGFzVmlkZW9DaGFuZ2VkKG1faGFzVmlkZW8p
OworfQorCit2b2lkIFdlYlZpZGVvRnVsbHNjcmVlbk1vZGVsVmlkZW9FbGVtZW50OjpzZXRWaWRl
b0RpbWVuc2lvbnMoY29uc3QgRmxvYXRTaXplJiB2aWRlb0RpbWVuc2lvbnMpCit7CisgICAgaWYg
KG1fdmlkZW9EaW1lbnNpb25zID09IHZpZGVvRGltZW5zaW9ucykKKyAgICAgICAgcmV0dXJuOwor
CisgICAgbV92aWRlb0RpbWVuc2lvbnMgPSB2aWRlb0RpbWVuc2lvbnM7CisKKyAgICBmb3IgKGF1
dG8mIGNsaWVudCA6IG1fY2xpZW50cykKKyAgICAgICAgY2xpZW50LT52aWRlb0RpbWVuc2lvbnND
aGFuZ2VkKG1fdmlkZW9EaW1lbnNpb25zKTsKK30KKwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvV2ViQVZQbGF5ZXJDb250cm9sbGVyLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9pb3MvV2ViQVZQbGF5ZXJDb250cm9sbGVyLmgKaW5kZXggODIzMWE4
ZTczMzE5NDg0YzIzNWEzNmRlZjFlNTFiM2UyZTk3NmE0NC4uMzY5MWI2NTI0ZGIyYjFhNjZhZjE3
M2ZkYmYzMjBkZDkwOTkxODQzNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
aW9zL1dlYkFWUGxheWVyQ29udHJvbGxlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2lvcy9XZWJBVlBsYXllckNvbnRyb2xsZXIuaApAQCAtNDIsOCArNDIsNiBAQCBjbGFzcyBXZWJQ
bGF5YmFja1Nlc3Npb25JbnRlcmZhY2VBVktpdDsKICAgICBCT09MIF9waWN0dXJlSW5QaWN0dXJl
SW50ZXJydXB0ZWQ7CiB9CiAKLS0gKHZvaWQpcmVzZXRTdGF0ZTsKLQogQHByb3BlcnR5IChyZXRh
aW4pIEFWUGxheWVyQ29udHJvbGxlciogcGxheWVyQ29udHJvbGxlclByb3h5OwogQHByb3BlcnR5
IChhc3NpZ24pIFdlYkNvcmU6OldlYlBsYXliYWNrU2Vzc2lvbk1vZGVsKiBkZWxlZ2F0ZTsKIEBw
cm9wZXJ0eSAoYXNzaWduKSBXZWJDb3JlOjpXZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2VBVktp
dCogcGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vaW9zL1dlYkFWUGxheWVyQ29udHJvbGxlci5tbSBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2lvcy9XZWJBVlBsYXllckNvbnRyb2xsZXIubW0KaW5kZXggODQ2MDY5OThlMTY4MDZl
NjFmZTUwYTAzZjM3NzQzN2RhMmE0ZGY3Yi4uNmRmYjNlYTAwN2IyNjcxMDQxZWRlNmJhYzM4Mjdj
MzhmYmQwMGI1MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1dlYkFW
UGxheWVyQ29udHJvbGxlci5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvV2Vi
QVZQbGF5ZXJDb250cm9sbGVyLm1tCkBAIC03NSwzOCArNzUsNiBAQCAtICh2b2lkKWRlYWxsb2MK
ICAgICBbc3VwZXIgZGVhbGxvY107CiB9CiAKLS0gKHZvaWQpcmVzZXRTdGF0ZQotewotICAgIHNl
bGYuY29udGVudER1cmF0aW9uID0gMDsKLSAgICBzZWxmLm1heFRpbWUgPSAwOwotICAgIHNlbGYu
Y29udGVudER1cmF0aW9uV2l0aGluRW5kVGltZXMgPSAwOwotICAgIHNlbGYubG9hZGVkVGltZVJh
bmdlcyA9IEBbXTsKLQotICAgIHNlbGYuY2FuUGxheSA9IE5POwotICAgIHNlbGYuY2FuUGF1c2Ug
PSBOTzsKLSAgICBzZWxmLmNhblRvZ2dsZVBsYXliYWNrID0gTk87Ci0gICAgc2VsZi5oYXNFbmFi
bGVkQXVkaW8gPSBOTzsKLSAgICBzZWxmLmNhblNlZWsgPSBOTzsKLSAgICBzZWxmLm1pblRpbWUg
PSAwOwotICAgIHNlbGYuc3RhdHVzID0gQVZQbGF5ZXJDb250cm9sbGVyU3RhdHVzVW5rbm93bjsK
LQotICAgIHNlbGYudGltaW5nID0gbmlsOwotICAgIHNlbGYucmF0ZSA9IDA7Ci0KLSAgICBzZWxm
Lmhhc0VuYWJsZWRWaWRlbyA9IE5POwotICAgIHNlbGYuY29udGVudERpbWVuc2lvbnMgPSBDR1Np
emVNYWtlKDAsIDApOwotCi0gICAgc2VsZi5zZWVrYWJsZVRpbWVSYW5nZXMgPSBbTlNNdXRhYmxl
QXJyYXkgYXJyYXldOwotCi0gICAgc2VsZi5jYW5TY2FuQmFja3dhcmQgPSBOTzsKLQotICAgIHNl
bGYuYXVkaW9NZWRpYVNlbGVjdGlvbk9wdGlvbnMgPSBuaWw7Ci0gICAgc2VsZi5jdXJyZW50QXVk
aW9NZWRpYVNlbGVjdGlvbk9wdGlvbiA9IG5pbDsKLQotICAgIHNlbGYubGVnaWJsZU1lZGlhU2Vs
ZWN0aW9uT3B0aW9ucyA9IG5pbDsKLSAgICBzZWxmLmN1cnJlbnRMZWdpYmxlTWVkaWFTZWxlY3Rp
b25PcHRpb24gPSBuaWw7Ci19Ci0KIC0gKEFWUGxheWVyICopcGxheWVyCiB7CiAgICAgcmV0dXJu
IG5pbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9XZWJQbGF5YmFj
a1Nlc3Npb25JbnRlcmZhY2VBVktpdC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1dl
YlBsYXliYWNrU2Vzc2lvbkludGVyZmFjZUFWS2l0LmgKaW5kZXggNzE0Nzk0ZmIzY2UzNTRkZTEx
MGRhMDhhNDE5YTcwNWRmZDlhZDE3MS4uMjNkNzcyZGQxMWI4MTJmZjAwZDg5MDYwYzI4ODk0NDAw
NTkyNzUwYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1dlYlBsYXli
YWNrU2Vzc2lvbkludGVyZmFjZUFWS2l0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
aW9zL1dlYlBsYXliYWNrU2Vzc2lvbkludGVyZmFjZUFWS2l0LmgKQEAgLTMzLDYgKzMzLDcgQEAK
ICNpbmNsdWRlICJIVE1MTWVkaWFFbGVtZW50RW51bXMuaCIKICNpbmNsdWRlICJUaW1lci5oIgog
I2luY2x1ZGUgIldlYlBsYXliYWNrU2Vzc2lvbkludGVyZmFjZS5oIgorI2luY2x1ZGUgIldlYlBs
YXliYWNrU2Vzc2lvbk1vZGVsLmgiCiAjaW5jbHVkZSA8ZnVuY3Rpb25hbD4KICNpbmNsdWRlIDxv
YmpjL29iamMuaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgpAQCAtNTQsNTIgKzU1LDQz
IEBAIGNsYXNzIEludFJlY3Q7CiBjbGFzcyBXZWJQbGF5YmFja1Nlc3Npb25Nb2RlbDsKIGNsYXNz
IFdlYlBsYXliYWNrU2Vzc2lvbkNoYW5nZU9ic2VydmVyOwogCi1jbGFzcyBXZWJQbGF5YmFja1Nl
c3Npb25JbnRlcmZhY2VBVktpdENsaWVudCB7Ci1wdWJsaWM6Ci0gICAgdmlydHVhbCB+V2ViUGxh
eWJhY2tTZXNzaW9uSW50ZXJmYWNlQVZLaXRDbGllbnQoKSB7IH0KLQotICAgIHZpcnR1YWwgdm9p
ZCBleHRlcm5hbFBsYXliYWNrRW5hYmxlZENoYW5nZWQoYm9vbCkgPSAwOwotfTsKLQogY2xhc3Mg
V0VCQ09SRV9FWFBPUlQgV2ViUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlQVZLaXQKICAgICA6IHB1
YmxpYyBXZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2UKKyAgICAsIHB1YmxpYyBXZWJQbGF5YmFj
a1Nlc3Npb25Nb2RlbENsaWVudAogICAgICwgcHVibGljIFJlZkNvdW50ZWQ8V2ViUGxheWJhY2tT
ZXNzaW9uSW50ZXJmYWNlQVZLaXQ+IHsKIAogcHVibGljOgotICAgIHN0YXRpYyBSZWY8V2ViUGxh
eWJhY2tTZXNzaW9uSW50ZXJmYWNlQVZLaXQ+IGNyZWF0ZSgpCisgICAgc3RhdGljIFJlZjxXZWJQ
bGF5YmFja1Nlc3Npb25JbnRlcmZhY2VBVktpdD4gY3JlYXRlKFdlYlBsYXliYWNrU2Vzc2lvbk1v
ZGVsJiBtb2RlbCkKICAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFdlYlBsYXli
YWNrU2Vzc2lvbkludGVyZmFjZUFWS2l0KCkpOworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5l
dyBXZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2VBVktpdChtb2RlbCkpOwogICAgIH0KICAgICB2
aXJ0dWFsIH5XZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2VBVktpdCgpOwotICAgIFdFQkNPUkVf
RVhQT1JUIHZvaWQgc2V0V2ViUGxheWJhY2tTZXNzaW9uTW9kZWwoV2ViUGxheWJhY2tTZXNzaW9u
TW9kZWwqKTsKICAgICBXZWJQbGF5YmFja1Nlc3Npb25Nb2RlbCogd2ViUGxheWJhY2tTZXNzaW9u
TW9kZWwoKSBjb25zdCB7IHJldHVybiBtX3BsYXliYWNrU2Vzc2lvbk1vZGVsOyB9Ci0gICAgdm9p
ZCBzZXRDbGllbnQoV2ViUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlQVZLaXRDbGllbnQqIGNsaWVu
dCkgeyBtX2NsaWVudCA9IGNsaWVudDsgfQogCisgICAgLy8gV2ViUGxheWJhY2tTZXNzaW9uSW50
ZXJmYWNlCiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCByZXNldE1lZGlhU3RhdGUoKSBvdmVycmlk
ZTsKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldER1cmF0aW9uKGRvdWJsZSkgb3ZlcnJpZGU7
Ci0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRDdXJyZW50VGltZShkb3VibGUgY3VycmVudFRp
bWUsIGRvdWJsZSBhbmNob3JUaW1lKSBvdmVycmlkZTsKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lk
IHNldEJ1ZmZlcmVkVGltZShkb3VibGUpIG92ZXJyaWRlOwotICAgIFdFQkNPUkVfRVhQT1JUIHZv
aWQgc2V0UmF0ZShib29sIGlzUGxheWluZywgZmxvYXQgcGxheWJhY2tSYXRlKSBvdmVycmlkZTsK
LSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldFNlZWthYmxlUmFuZ2VzKGNvbnN0IFRpbWVSYW5n
ZXMmKSBvdmVycmlkZTsKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldENhblBsYXlGYXN0UmV2
ZXJzZShib29sKSBvdmVycmlkZTsKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldEF1ZGlvTWVk
aWFTZWxlY3Rpb25PcHRpb25zKGNvbnN0IFZlY3RvcjxXVEY6OlN0cmluZz4mIG9wdGlvbnMsIHVp
bnQ2NF90IHNlbGVjdGVkSW5kZXgpIG92ZXJyaWRlOwotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQg
c2V0TGVnaWJsZU1lZGlhU2VsZWN0aW9uT3B0aW9ucyhjb25zdCBWZWN0b3I8V1RGOjpTdHJpbmc+
JiBvcHRpb25zLCB1aW50NjRfdCBzZWxlY3RlZEluZGV4KSBvdmVycmlkZTsKLSAgICBXRUJDT1JF
X0VYUE9SVCB2b2lkIHNldEV4dGVybmFsUGxheWJhY2soYm9vbCBlbmFibGVkLCBFeHRlcm5hbFBs
YXliYWNrVGFyZ2V0VHlwZSwgV1RGOjpTdHJpbmcgbG9jYWxpemVkRGV2aWNlTmFtZSkgb3ZlcnJp
ZGU7Ci0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRXaXJlbGVzc1ZpZGVvUGxheWJhY2tEaXNh
YmxlZChib29sKSBvdmVycmlkZTsKLSAgICBib29sIHdpcmVsZXNzVmlkZW9QbGF5YmFja0Rpc2Fi
bGVkKCkgY29uc3Q7CisKKyAgICAvLyBXZWJQbGF5YmFja1Nlc3Npb25Nb2RlbENsaWVudAorICAg
IFdFQkNPUkVfRVhQT1JUIHZvaWQgZHVyYXRpb25DaGFuZ2VkKGRvdWJsZSkgb3ZlcnJpZGU7Cisg
ICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBjdXJyZW50VGltZUNoYW5nZWQoZG91YmxlIGN1cnJlbnRU
aW1lLCBkb3VibGUgYW5jaG9yVGltZSkgb3ZlcnJpZGU7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9p
ZCBidWZmZXJlZFRpbWVDaGFuZ2VkKGRvdWJsZSkgb3ZlcnJpZGU7CisgICAgV0VCQ09SRV9FWFBP
UlQgdm9pZCByYXRlQ2hhbmdlZChib29sIGlzUGxheWluZywgZmxvYXQgcGxheWJhY2tSYXRlKSBv
dmVycmlkZTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNlZWthYmxlUmFuZ2VzQ2hhbmdlZChj
b25zdCBUaW1lUmFuZ2VzJikgb3ZlcnJpZGU7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBjYW5Q
bGF5RmFzdFJldmVyc2VDaGFuZ2VkKGJvb2wpIG92ZXJyaWRlOworICAgIFdFQkNPUkVfRVhQT1JU
IHZvaWQgYXVkaW9NZWRpYVNlbGVjdGlvbk9wdGlvbnNDaGFuZ2VkKGNvbnN0IFZlY3RvcjxTdHJp
bmc+JiBvcHRpb25zLCB1aW50NjRfdCBzZWxlY3RlZEluZGV4KSBvdmVycmlkZTsKKyAgICBXRUJD
T1JFX0VYUE9SVCB2b2lkIGxlZ2libGVNZWRpYVNlbGVjdGlvbk9wdGlvbnNDaGFuZ2VkKGNvbnN0
IFZlY3RvcjxTdHJpbmc+JiBvcHRpb25zLCB1aW50NjRfdCBzZWxlY3RlZEluZGV4KSBvdmVycmlk
ZTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGV4dGVybmFsUGxheWJhY2tDaGFuZ2VkKGJvb2wg
ZW5hYmxlZCwgV2ViUGxheWJhY2tTZXNzaW9uTW9kZWw6OkV4dGVybmFsUGxheWJhY2tUYXJnZXRU
eXBlLCBjb25zdCBTdHJpbmcmIGxvY2FsaXplZERldmljZU5hbWUpIG92ZXJyaWRlOworICAgIFdF
QkNPUkVfRVhQT1JUIHZvaWQgd2lyZWxlc3NWaWRlb1BsYXliYWNrRGlzYWJsZWRDaGFuZ2VkKGJv
b2wpIG92ZXJyaWRlOwogCiAgICAgV0VCQ09SRV9FWFBPUlQgdmlydHVhbCB2b2lkIGludmFsaWRh
dGUoKTsKIAogICAgIFdlYkFWUGxheWVyQ29udHJvbGxlciAqcGxheWVyQ29udHJvbGxlcigpIGNv
bnN0IHsgcmV0dXJuIG1fcGxheWVyQ29udHJvbGxlci5nZXQoKTsgfQogCiBwcm90ZWN0ZWQ6Ci0g
ICAgV0VCQ09SRV9FWFBPUlQgV2ViUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlQVZLaXQoKTsKKyAg
ICBXRUJDT1JFX0VYUE9SVCBXZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2VBVktpdChXZWJQbGF5
YmFja1Nlc3Npb25Nb2RlbCYpOwogCiAgICAgUmV0YWluUHRyPFdlYkFWUGxheWVyQ29udHJvbGxl
cj4gbV9wbGF5ZXJDb250cm9sbGVyOwogICAgIFdlYlBsYXliYWNrU2Vzc2lvbk1vZGVsKiBtX3Bs
YXliYWNrU2Vzc2lvbk1vZGVsIHsgbnVsbHB0ciB9OwotICAgIFdlYlBsYXliYWNrU2Vzc2lvbklu
dGVyZmFjZUFWS2l0Q2xpZW50KiBtX2NsaWVudCB7IG51bGxwdHJ9OwotCi0gICAgYm9vbCBtX3dp
cmVsZXNzVmlkZW9QbGF5YmFja0Rpc2FibGVkIHsgdHJ1ZSB9OwogfTsKIAogfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1dlYlBsYXliYWNrU2Vzc2lvbkludGVyZmFj
ZUFWS2l0Lm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1dlYlBsYXliYWNrU2Vzc2lv
bkludGVyZmFjZUFWS2l0Lm1tCmluZGV4IDM3Zjc0ZjE3ZDcwNGM1MjRkYjRiYjc1OGI4YjE0YTc4
YTQ1YTZlNWMuLjNjOTc4MmRkNDk3ZjUzZTZhZDNiN2ZlMTkxMDUxMzY3ZGM1MmU5ZjYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9XZWJQbGF5YmFja1Nlc3Npb25JbnRl
cmZhY2VBVktpdC5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvV2ViUGxheWJh
Y2tTZXNzaW9uSW50ZXJmYWNlQVZLaXQubW0KQEAgLTQ3LDMxICs0Nyw1NSBAQCBTT0ZUX0xJTktf
Q0xBU1NfT1BUSU9OQUwoQVZLaXQsIEFWVmFsdWVUaW1pbmcpCiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAotV2ViUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlQVZLaXQ6OldlYlBsYXliYWNrU2Vzc2lv
bkludGVyZmFjZUFWS2l0KCkKK1dlYlBsYXliYWNrU2Vzc2lvbkludGVyZmFjZUFWS2l0OjpXZWJQ
bGF5YmFja1Nlc3Npb25JbnRlcmZhY2VBVktpdChXZWJQbGF5YmFja1Nlc3Npb25Nb2RlbCYgbW9k
ZWwpCiAgICAgOiBtX3BsYXllckNvbnRyb2xsZXIoYWRvcHROUyhbW1dlYkFWUGxheWVyQ29udHJv
bGxlciBhbGxvY10gaW5pdF0pKQorICAgICwgbV9wbGF5YmFja1Nlc3Npb25Nb2RlbCgmbW9kZWwp
CiB7CisgICAgbW9kZWwuYWRkQ2xpZW50KCp0aGlzKTsKICAgICBbbV9wbGF5ZXJDb250cm9sbGVy
IHNldFBsYXliYWNrU2Vzc2lvbkludGVyZmFjZTp0aGlzXTsKKyAgICBbbV9wbGF5ZXJDb250cm9s
bGVyIHNldERlbGVnYXRlOiZtb2RlbF07CiB9CiAKIFdlYlBsYXliYWNrU2Vzc2lvbkludGVyZmFj
ZUFWS2l0Ojp+V2ViUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlQVZLaXQoKQogewotICAgIFdlYkFW
UGxheWVyQ29udHJvbGxlciogcGxheWVyQ29udHJvbGxlciA9IG1fcGxheWVyQ29udHJvbGxlci5n
ZXQoKTsKLSAgICBpZiAocGxheWVyQ29udHJvbGxlciAmJiBwbGF5ZXJDb250cm9sbGVyLmV4dGVy
bmFsUGxheWJhY2tBY3RpdmUpCi0gICAgICAgIHNldEV4dGVybmFsUGxheWJhY2soZmFsc2UsIFRh
cmdldFR5cGVOb25lLCAiIik7CisgICAgW21fcGxheWVyQ29udHJvbGxlciBzZXRQbGF5YmFja1Nl
c3Npb25JbnRlcmZhY2U6bnVsbHB0cl07CisgICAgW21fcGxheWVyQ29udHJvbGxlciBzZXRFeHRl
cm5hbFBsYXliYWNrQWN0aXZlOmZhbHNlXTsKKworICAgIGludmFsaWRhdGUoKTsKIH0KIAogdm9p
ZCBXZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2VBVktpdDo6cmVzZXRNZWRpYVN0YXRlKCkKIHsK
LSAgICBbbV9wbGF5ZXJDb250cm9sbGVyIHJlc2V0U3RhdGVdOwotfQorICAgIFdlYkFWUGxheWVy
Q29udHJvbGxlciogcGxheWVyQ29udHJvbGxlciA9IG1fcGxheWVyQ29udHJvbGxlci5nZXQoKTsK
IAotdm9pZCBXZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2VBVktpdDo6c2V0V2ViUGxheWJhY2tT
ZXNzaW9uTW9kZWwoV2ViUGxheWJhY2tTZXNzaW9uTW9kZWwqIG1vZGVsKQotewotICAgIG1fcGxh
eWJhY2tTZXNzaW9uTW9kZWwgPSBtb2RlbDsKLSAgICBbbV9wbGF5ZXJDb250cm9sbGVyIHNldERl
bGVnYXRlOm1fcGxheWJhY2tTZXNzaW9uTW9kZWxdOworICAgIHBsYXllckNvbnRyb2xsZXIuY29u
dGVudER1cmF0aW9uID0gMDsKKyAgICBwbGF5ZXJDb250cm9sbGVyLm1heFRpbWUgPSAwOworICAg
IHBsYXllckNvbnRyb2xsZXIuY29udGVudER1cmF0aW9uV2l0aGluRW5kVGltZXMgPSAwOworICAg
IHBsYXllckNvbnRyb2xsZXIubG9hZGVkVGltZVJhbmdlcyA9IEBbXTsKKworICAgIHBsYXllckNv
bnRyb2xsZXIuY2FuUGxheSA9IE5POworICAgIHBsYXllckNvbnRyb2xsZXIuY2FuUGF1c2UgPSBO
TzsKKyAgICBwbGF5ZXJDb250cm9sbGVyLmNhblRvZ2dsZVBsYXliYWNrID0gTk87CisgICAgcGxh
eWVyQ29udHJvbGxlci5oYXNFbmFibGVkQXVkaW8gPSBOTzsKKyAgICBwbGF5ZXJDb250cm9sbGVy
LmNhblNlZWsgPSBOTzsKKyAgICBwbGF5ZXJDb250cm9sbGVyLm1pblRpbWUgPSAwOworICAgIHBs
YXllckNvbnRyb2xsZXIuc3RhdHVzID0gQVZQbGF5ZXJDb250cm9sbGVyU3RhdHVzVW5rbm93bjsK
KworICAgIHBsYXllckNvbnRyb2xsZXIudGltaW5nID0gbmlsOworICAgIHBsYXllckNvbnRyb2xs
ZXIucmF0ZSA9IDA7CisKKyAgICBwbGF5ZXJDb250cm9sbGVyLnNlZWthYmxlVGltZVJhbmdlcyA9
IFtOU011dGFibGVBcnJheSBhcnJheV07CisKKyAgICBwbGF5ZXJDb250cm9sbGVyLmNhblNjYW5C
YWNrd2FyZCA9IE5POworCisgICAgcGxheWVyQ29udHJvbGxlci5hdWRpb01lZGlhU2VsZWN0aW9u
T3B0aW9ucyA9IG5pbDsKKyAgICBwbGF5ZXJDb250cm9sbGVyLmN1cnJlbnRBdWRpb01lZGlhU2Vs
ZWN0aW9uT3B0aW9uID0gbmlsOworCisgICAgcGxheWVyQ29udHJvbGxlci5sZWdpYmxlTWVkaWFT
ZWxlY3Rpb25PcHRpb25zID0gbmlsOworICAgIHBsYXllckNvbnRyb2xsZXIuY3VycmVudExlZ2li
bGVNZWRpYVNlbGVjdGlvbk9wdGlvbiA9IG5pbDsKIH0KIAotdm9pZCBXZWJQbGF5YmFja1Nlc3Np
b25JbnRlcmZhY2VBVktpdDo6c2V0RHVyYXRpb24oZG91YmxlIGR1cmF0aW9uKQordm9pZCBXZWJQ
bGF5YmFja1Nlc3Npb25JbnRlcmZhY2VBVktpdDo6ZHVyYXRpb25DaGFuZ2VkKGRvdWJsZSBkdXJh
dGlvbikKIHsKICAgICBXZWJBVlBsYXllckNvbnRyb2xsZXIqIHBsYXllckNvbnRyb2xsZXIgPSBt
X3BsYXllckNvbnRyb2xsZXIuZ2V0KCk7CiAKQEAgLTkwLDcgKzExNCw3IEBAIHZvaWQgV2ViUGxh
eWJhY2tTZXNzaW9uSW50ZXJmYWNlQVZLaXQ6OnNldER1cmF0aW9uKGRvdWJsZSBkdXJhdGlvbikK
ICAgICBwbGF5ZXJDb250cm9sbGVyLnN0YXR1cyA9IEFWUGxheWVyQ29udHJvbGxlclN0YXR1c1Jl
YWR5VG9QbGF5OwogfQogCi12b2lkIFdlYlBsYXliYWNrU2Vzc2lvbkludGVyZmFjZUFWS2l0Ojpz
ZXRDdXJyZW50VGltZShkb3VibGUgY3VycmVudFRpbWUsIGRvdWJsZSBhbmNob3JUaW1lKQordm9p
ZCBXZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2VBVktpdDo6Y3VycmVudFRpbWVDaGFuZ2VkKGRv
dWJsZSBjdXJyZW50VGltZSwgZG91YmxlIGFuY2hvclRpbWUpCiB7CiAgICAgTlNUaW1lSW50ZXJ2
YWwgYW5jaG9yVGltZVN0YW1wID0gIVttX3BsYXllckNvbnRyb2xsZXIgcmF0ZV0gPyBOQU4gOiBh
bmNob3JUaW1lOwogICAgIEFWVmFsdWVUaW1pbmcgKnRpbWluZyA9IFtnZXRBVlZhbHVlVGltaW5n
Q2xhc3MoKSB2YWx1ZVRpbWluZ1dpdGhBbmNob3JWYWx1ZTpjdXJyZW50VGltZQpAQCAtOTksNyAr
MTIzLDcgQEAgdm9pZCBXZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2VBVktpdDo6c2V0Q3VycmVu
dFRpbWUoZG91YmxlIGN1cnJlbnRUaW1lLCBkb3VibGUKICAgICBbbV9wbGF5ZXJDb250cm9sbGVy
IHNldFRpbWluZzp0aW1pbmddOwogfQogCi12b2lkIFdlYlBsYXliYWNrU2Vzc2lvbkludGVyZmFj
ZUFWS2l0OjpzZXRCdWZmZXJlZFRpbWUoZG91YmxlIGJ1ZmZlcmVkVGltZSkKK3ZvaWQgV2ViUGxh
eWJhY2tTZXNzaW9uSW50ZXJmYWNlQVZLaXQ6OmJ1ZmZlcmVkVGltZUNoYW5nZWQoZG91YmxlIGJ1
ZmZlcmVkVGltZSkKIHsKICAgICBXZWJBVlBsYXllckNvbnRyb2xsZXIqIHBsYXllckNvbnRyb2xs
ZXIgPSBtX3BsYXllckNvbnRyb2xsZXIuZ2V0KCk7CiAgICAgZG91YmxlIGR1cmF0aW9uID0gcGxh
eWVyQ29udHJvbGxlci5jb250ZW50RHVyYXRpb247CkBAIC0xMTEsMTIgKzEzNSwxMiBAQCB2b2lk
IFdlYlBsYXliYWNrU2Vzc2lvbkludGVyZmFjZUFWS2l0OjpzZXRCdWZmZXJlZFRpbWUoZG91Ymxl
IGJ1ZmZlcmVkVGltZSkKICAgICBwbGF5ZXJDb250cm9sbGVyLmxvYWRlZFRpbWVSYW5nZXMgPSBA
W0AwLCBAKG5vcm1hbGl6ZWRCdWZmZXJlZFRpbWUpXTsKIH0KIAotdm9pZCBXZWJQbGF5YmFja1Nl
c3Npb25JbnRlcmZhY2VBVktpdDo6c2V0UmF0ZShib29sIGlzUGxheWluZywgZmxvYXQgcGxheWJh
Y2tSYXRlKQordm9pZCBXZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2VBVktpdDo6cmF0ZUNoYW5n
ZWQoYm9vbCBpc1BsYXlpbmcsIGZsb2F0IHBsYXliYWNrUmF0ZSkKIHsKICAgICBbbV9wbGF5ZXJD
b250cm9sbGVyIHNldFJhdGU6aXNQbGF5aW5nID8gcGxheWJhY2tSYXRlIDogMC5dOwogfQogCi12
b2lkIFdlYlBsYXliYWNrU2Vzc2lvbkludGVyZmFjZUFWS2l0OjpzZXRTZWVrYWJsZVJhbmdlcyhj
b25zdCBUaW1lUmFuZ2VzJiB0aW1lUmFuZ2VzKQordm9pZCBXZWJQbGF5YmFja1Nlc3Npb25JbnRl
cmZhY2VBVktpdDo6c2Vla2FibGVSYW5nZXNDaGFuZ2VkKGNvbnN0IFRpbWVSYW5nZXMmIHRpbWVS
YW5nZXMpCiB7CiAgICAgUmV0YWluUHRyPE5TTXV0YWJsZUFycmF5PiBzZWVrYWJsZVJhbmdlcyA9
IGFkb3B0TlMoW1tOU011dGFibGVBcnJheSBhbGxvY10gaW5pdF0pOwogICAgIEV4Y2VwdGlvbkNv
ZGUgZXhjZXB0aW9uQ29kZTsKQEAgLTEzMiw3ICsxNTYsNyBAQCB2b2lkIFdlYlBsYXliYWNrU2Vz
c2lvbkludGVyZmFjZUFWS2l0OjpzZXRTZWVrYWJsZVJhbmdlcyhjb25zdCBUaW1lUmFuZ2VzJiB0
aW1lUgogICAgIFttX3BsYXllckNvbnRyb2xsZXIgc2V0U2Vla2FibGVUaW1lUmFuZ2VzOnNlZWth
YmxlUmFuZ2VzLmdldCgpXTsKIH0KIAotdm9pZCBXZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2VB
VktpdDo6c2V0Q2FuUGxheUZhc3RSZXZlcnNlKGJvb2wgY2FuUGxheUZhc3RSZXZlcnNlKQordm9p
ZCBXZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2VBVktpdDo6Y2FuUGxheUZhc3RSZXZlcnNlQ2hh
bmdlZChib29sIGNhblBsYXlGYXN0UmV2ZXJzZSkKIHsKICAgICBbbV9wbGF5ZXJDb250cm9sbGVy
IHNldENhblNjYW5CYWNrd2FyZDpjYW5QbGF5RmFzdFJldmVyc2VdOwogfQpAQCAtMTQ4LDcgKzE3
Miw3IEBAIHN0YXRpYyBSZXRhaW5QdHI8TlNNdXRhYmxlQXJyYXk+IG1lZGlhU2VsZWN0aW9uT3B0
aW9ucyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgb3B0CiAgICAgcmV0dXJuIHdlYk9wdGlvbnM7CiB9
CiAKLXZvaWQgV2ViUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlQVZLaXQ6OnNldEF1ZGlvTWVkaWFT
ZWxlY3Rpb25PcHRpb25zKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBvcHRpb25zLCB1aW50NjRfdCBz
ZWxlY3RlZEluZGV4KQordm9pZCBXZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2VBVktpdDo6YXVk
aW9NZWRpYVNlbGVjdGlvbk9wdGlvbnNDaGFuZ2VkKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBvcHRp
b25zLCB1aW50NjRfdCBzZWxlY3RlZEluZGV4KQogewogICAgIFJldGFpblB0cjxOU011dGFibGVB
cnJheT4gd2ViT3B0aW9ucyA9IG1lZGlhU2VsZWN0aW9uT3B0aW9ucyhvcHRpb25zKTsKICAgICBb
bV9wbGF5ZXJDb250cm9sbGVyIHNldEF1ZGlvTWVkaWFTZWxlY3Rpb25PcHRpb25zOndlYk9wdGlv
bnMuZ2V0KCldOwpAQCAtMTU2LDcgKzE4MCw3IEBAIHZvaWQgV2ViUGxheWJhY2tTZXNzaW9uSW50
ZXJmYWNlQVZLaXQ6OnNldEF1ZGlvTWVkaWFTZWxlY3Rpb25PcHRpb25zKGNvbnN0IFZlY3RvCiAg
ICAgICAgIFttX3BsYXllckNvbnRyb2xsZXIgc2V0Q3VycmVudEF1ZGlvTWVkaWFTZWxlY3Rpb25P
cHRpb246W3dlYk9wdGlvbnMgb2JqZWN0QXRJbmRleDpzdGF0aWNfY2FzdDxOU1VJbnRlZ2VyPihz
ZWxlY3RlZEluZGV4KV1dOwogfQogCi12b2lkIFdlYlBsYXliYWNrU2Vzc2lvbkludGVyZmFjZUFW
S2l0OjpzZXRMZWdpYmxlTWVkaWFTZWxlY3Rpb25PcHRpb25zKGNvbnN0IFZlY3RvcjxTdHJpbmc+
JiBvcHRpb25zLCB1aW50NjRfdCBzZWxlY3RlZEluZGV4KQordm9pZCBXZWJQbGF5YmFja1Nlc3Np
b25JbnRlcmZhY2VBVktpdDo6bGVnaWJsZU1lZGlhU2VsZWN0aW9uT3B0aW9uc0NoYW5nZWQoY29u
c3QgVmVjdG9yPFN0cmluZz4mIG9wdGlvbnMsIHVpbnQ2NF90IHNlbGVjdGVkSW5kZXgpCiB7CiAg
ICAgUmV0YWluUHRyPE5TTXV0YWJsZUFycmF5PiB3ZWJPcHRpb25zID0gbWVkaWFTZWxlY3Rpb25P
cHRpb25zKG9wdGlvbnMpOwogICAgIFttX3BsYXllckNvbnRyb2xsZXIgc2V0TGVnaWJsZU1lZGlh
U2VsZWN0aW9uT3B0aW9uczp3ZWJPcHRpb25zLmdldCgpXTsKQEAgLTE2NCwzNiArMTg4LDMzIEBA
IHZvaWQgV2ViUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlQVZLaXQ6OnNldExlZ2libGVNZWRpYVNl
bGVjdGlvbk9wdGlvbnMoY29uc3QgVmVjCiAgICAgICAgIFttX3BsYXllckNvbnRyb2xsZXIgc2V0
Q3VycmVudExlZ2libGVNZWRpYVNlbGVjdGlvbk9wdGlvbjpbd2ViT3B0aW9ucyBvYmplY3RBdElu
ZGV4OnN0YXRpY19jYXN0PE5TVUludGVnZXI+KHNlbGVjdGVkSW5kZXgpXV07CiB9CiAKLXZvaWQg
V2ViUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlQVZLaXQ6OnNldEV4dGVybmFsUGxheWJhY2soYm9v
bCBlbmFibGVkLCBFeHRlcm5hbFBsYXliYWNrVGFyZ2V0VHlwZSB0YXJnZXRUeXBlLCBTdHJpbmcg
bG9jYWxpemVkRGV2aWNlTmFtZSkKK3ZvaWQgV2ViUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlQVZL
aXQ6OmV4dGVybmFsUGxheWJhY2tDaGFuZ2VkKGJvb2wgZW5hYmxlZCwgV2ViUGxheWJhY2tTZXNz
aW9uTW9kZWw6OkV4dGVybmFsUGxheWJhY2tUYXJnZXRUeXBlIHRhcmdldFR5cGUsIGNvbnN0IFN0
cmluZyYgbG9jYWxpemVkRGV2aWNlTmFtZSkKIHsKICAgICBBVlBsYXllckNvbnRyb2xsZXJFeHRl
cm5hbFBsYXliYWNrVHlwZSBleHRlcm5hbFBsYXliYWNrVHlwZSA9IEFWUGxheWVyQ29udHJvbGxl
ckV4dGVybmFsUGxheWJhY2tUeXBlTm9uZTsKLSAgICBpZiAodGFyZ2V0VHlwZSA9PSBUYXJnZXRU
eXBlQWlyUGxheSkKKyAgICBpZiAodGFyZ2V0VHlwZSA9PSBXZWJQbGF5YmFja1Nlc3Npb25Nb2Rl
bDo6VGFyZ2V0VHlwZUFpclBsYXkpCiAgICAgICAgIGV4dGVybmFsUGxheWJhY2tUeXBlID0gQVZQ
bGF5ZXJDb250cm9sbGVyRXh0ZXJuYWxQbGF5YmFja1R5cGVBaXJQbGF5OwotICAgIGVsc2UgaWYg
KHRhcmdldFR5cGUgPT0gVGFyZ2V0VHlwZVRWT3V0KQorICAgIGVsc2UgaWYgKHRhcmdldFR5cGUg
PT0gV2ViUGxheWJhY2tTZXNzaW9uTW9kZWw6OlRhcmdldFR5cGVUVk91dCkKICAgICAgICAgZXh0
ZXJuYWxQbGF5YmFja1R5cGUgPSBBVlBsYXllckNvbnRyb2xsZXJFeHRlcm5hbFBsYXliYWNrVHlw
ZVRWT3V0OwogCiAgICAgV2ViQVZQbGF5ZXJDb250cm9sbGVyKiBwbGF5ZXJDb250cm9sbGVyID0g
bV9wbGF5ZXJDb250cm9sbGVyLmdldCgpOwogICAgIHBsYXllckNvbnRyb2xsZXIuZXh0ZXJuYWxQ
bGF5YmFja0FpclBsYXlEZXZpY2VMb2NhbGl6ZWROYW1lID0gbG9jYWxpemVkRGV2aWNlTmFtZTsK
ICAgICBwbGF5ZXJDb250cm9sbGVyLmV4dGVybmFsUGxheWJhY2tUeXBlID0gZXh0ZXJuYWxQbGF5
YmFja1R5cGU7CiAgICAgcGxheWVyQ29udHJvbGxlci5leHRlcm5hbFBsYXliYWNrQWN0aXZlID0g
ZW5hYmxlZDsKLQotICAgIGlmIChtX2NsaWVudCkKLSAgICAgICAgbV9jbGllbnQtPmV4dGVybmFs
UGxheWJhY2tFbmFibGVkQ2hhbmdlZChlbmFibGVkKTsKIH0KIAotdm9pZCBXZWJQbGF5YmFja1Nl
c3Npb25JbnRlcmZhY2VBVktpdDo6c2V0V2lyZWxlc3NWaWRlb1BsYXliYWNrRGlzYWJsZWQoYm9v
bCBkaXNhYmxlZCkKK3ZvaWQgV2ViUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlQVZLaXQ6OndpcmVs
ZXNzVmlkZW9QbGF5YmFja0Rpc2FibGVkQ2hhbmdlZChib29sIGRpc2FibGVkKQogewogICAgIFtt
X3BsYXllckNvbnRyb2xsZXIgc2V0QWxsb3dzRXh0ZXJuYWxQbGF5YmFjazohZGlzYWJsZWRdOwog
fQogCi1ib29sIFdlYlBsYXliYWNrU2Vzc2lvbkludGVyZmFjZUFWS2l0Ojp3aXJlbGVzc1ZpZGVv
UGxheWJhY2tEaXNhYmxlZCgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIFttX3BsYXllckNvbnRyb2xs
ZXIgYWxsb3dzRXh0ZXJuYWxQbGF5YmFja107Ci19Ci0KIHZvaWQgV2ViUGxheWJhY2tTZXNzaW9u
SW50ZXJmYWNlQVZLaXQ6OmludmFsaWRhdGUoKQogewotICAgIG1fcGxheWJhY2tTZXNzaW9uTW9k
ZWwgPSBuaWw7CisgICAgaWYgKCFtX3BsYXliYWNrU2Vzc2lvbk1vZGVsKQorICAgICAgICByZXR1
cm47CisKKyAgICBbbV9wbGF5ZXJDb250cm9sbGVyIHNldERlbGVnYXRlOm51bGxwdHJdOworICAg
IG1fcGxheWJhY2tTZXNzaW9uTW9kZWwtPnJlbW92ZUNsaWVudCgqdGhpcyk7CisgICAgbV9wbGF5
YmFja1Nlc3Npb25Nb2RlbCA9IG51bGxwdHI7CiB9CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2lvcy9XZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyQVZLaXQubW0g
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvV2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxl
ckFWS2l0Lm1tCmluZGV4IDM5M2VlNmJlZmEyZGQwZmM1NzkxZmUxMjI0M2U3ZGNhYmExMWJjNzQu
LjJjZDRhZGRlY2Y3NTkwNGM5ZTA5ZmZmOWI0Yjg3ZjZjOGM2MzA3ZjIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9XZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyQVZL
aXQubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1dlYlZpZGVvRnVsbHNjcmVl
bkNvbnRyb2xsZXJBVktpdC5tbQpAQCAtOTEsNyArOTEsNiBAQCBzdGF0aWMgSW50UmVjdCBlbGVt
ZW50UmVjdEluV2luZG93KEhUTUxWaWRlb0VsZW1lbnQqIHZpZGVvRWxlbWVudCkKIH0KIAogY2xh
c3MgV2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlckNvbnRleHQ7Ci1jbGFzcyBXZWJWaWRlb0Z1
bGxzY3JlZW5TZXNzaW9uTW9kZWw7CiAKIEBpbnRlcmZhY2UgV2ViVmlkZW9GdWxsc2NyZWVuQ29u
dHJvbGxlciAoZGVsZWdhdGUpCiAtKHZvaWQpZGlkRmluaXNoRnVsbHNjcmVlbjooV2ViVmlkZW9G
dWxsc2NyZWVuQ29udHJvbGxlckNvbnRleHQqKWNvbnRleHQ7CkBAIC0xMDAsNyArOTksMTAgQEAg
QGVuZAogY2xhc3MgV2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlckNvbnRleHQgZmluYWwKICAg
ICA6IHByaXZhdGUgV2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlCiAgICAgLCBwcml2YXRlIFdl
YlZpZGVvRnVsbHNjcmVlbk1vZGVsCisgICAgLCBwcml2YXRlIFdlYlZpZGVvRnVsbHNjcmVlbk1v
ZGVsQ2xpZW50CiAgICAgLCBwcml2YXRlIFdlYlZpZGVvRnVsbHNjcmVlbkNoYW5nZU9ic2VydmVy
CisgICAgLCBwcml2YXRlIFdlYlBsYXliYWNrU2Vzc2lvbk1vZGVsCisgICAgLCBwcml2YXRlIFdl
YlBsYXliYWNrU2Vzc2lvbk1vZGVsQ2xpZW50CiAgICAgLCBwdWJsaWMgVGhyZWFkU2FmZVJlZkNv
dW50ZWQ8V2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlckNvbnRleHQ+IHsKIAogcHVibGljOgpA
QCAtMTE1LDE5ICsxMTcsNiBAQCBwdWJsaWM6CiAgICAgdm9pZCByZXF1ZXN0SGlkZUFuZEV4aXRG
dWxsc2NyZWVuKCk7CiAgICAgdm9pZCBpbnZhbGlkYXRlKCk7CiAKLSAgICB2b2lkIHBsYXkoKTsK
LSAgICB2b2lkIHBhdXNlKCk7Ci0gICAgdm9pZCB0b2dnbGVQbGF5U3RhdGUoKTsKLSAgICB2b2lk
IGJlZ2luU2NydWJiaW5nKCk7Ci0gICAgdm9pZCBlbmRTY3J1YmJpbmcoKTsKLSAgICB2b2lkIHNl
ZWtUb1RpbWUoZG91YmxlKTsKLSAgICB2b2lkIGZhc3RTZWVrKGRvdWJsZSB0aW1lKTsKLSAgICB2
b2lkIGJlZ2luU2Nhbm5pbmdGb3J3YXJkKCk7Ci0gICAgdm9pZCBiZWdpblNjYW5uaW5nQmFja3dh
cmQoKTsKLSAgICB2b2lkIGVuZFNjYW5uaW5nKCk7Ci0gICAgdm9pZCBzZWxlY3RBdWRpb01lZGlh
T3B0aW9uKHVpbnQ2NF90KTsKLSAgICB2b2lkIHNlbGVjdExlZ2libGVNZWRpYU9wdGlvbih1aW50
NjRfdCk7Ci0KIHByaXZhdGU6CiAgICAgV2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlckNvbnRl
eHQoKSB7IH0KIApAQCAtMTM4LDEwNyArMTI3LDcyIEBAIHByaXZhdGU6CiAgICAgdm9pZCBkaWRD
bGVhbnVwRnVsbHNjcmVlbigpIG92ZXJyaWRlOwogICAgIHZvaWQgZnVsbHNjcmVlbk1heVJldHVy
blRvSW5saW5lKCkgb3ZlcnJpZGU7CiAKLSAgICAvLyBXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZh
Y2UKLSAgICB2b2lkIHJlc2V0TWVkaWFTdGF0ZSgpIG92ZXJyaWRlOwotICAgIHZvaWQgc2V0RHVy
YXRpb24oZG91YmxlKSBvdmVycmlkZTsKLSAgICB2b2lkIHNldEN1cnJlbnRUaW1lKGRvdWJsZSBj
dXJyZW50VGltZSwgZG91YmxlIGFuY2hvclRpbWUpIG92ZXJyaWRlOwotICAgIHZvaWQgc2V0QnVm
ZmVyZWRUaW1lKGRvdWJsZSkgb3ZlcnJpZGU7Ci0gICAgdm9pZCBzZXRSYXRlKGJvb2wgaXNQbGF5
aW5nLCBmbG9hdCBwbGF5YmFja1JhdGUpIG92ZXJyaWRlOwotICAgIHZvaWQgc2V0VmlkZW9EaW1l
bnNpb25zKGJvb2wgaGFzVmlkZW8sIGZsb2F0IHdpZHRoLCBmbG9hdCBoZWlnaHQpIG92ZXJyaWRl
OwotICAgIHZvaWQgc2V0U2Vla2FibGVSYW5nZXMoY29uc3QgVGltZVJhbmdlcyYpIG92ZXJyaWRl
OwotICAgIHZvaWQgc2V0Q2FuUGxheUZhc3RSZXZlcnNlKGJvb2wpIG92ZXJyaWRlOwotICAgIHZv
aWQgc2V0QXVkaW9NZWRpYVNlbGVjdGlvbk9wdGlvbnMoY29uc3QgVmVjdG9yPFN0cmluZz4mIG9w
dGlvbnMsIHVpbnQ2NF90IHNlbGVjdGVkSW5kZXgpIG92ZXJyaWRlOwotICAgIHZvaWQgc2V0TGVn
aWJsZU1lZGlhU2VsZWN0aW9uT3B0aW9ucyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgb3B0aW9ucywg
dWludDY0X3Qgc2VsZWN0ZWRJbmRleCkgb3ZlcnJpZGU7Ci0gICAgdm9pZCBzZXRFeHRlcm5hbFBs
YXliYWNrKGJvb2wgZW5hYmxlZCwgRXh0ZXJuYWxQbGF5YmFja1RhcmdldFR5cGUsIFN0cmluZyBs
b2NhbGl6ZWREZXZpY2VOYW1lKSBvdmVycmlkZTsKLSAgICB2b2lkIHNldFdpcmVsZXNzVmlkZW9Q
bGF5YmFja0Rpc2FibGVkKGJvb2wpIG92ZXJyaWRlOworICAgIC8vIFdlYlZpZGVvRnVsbHNjcmVl
bk1vZGVsQ2xpZW50CisgICAgdm9pZCBoYXNWaWRlb0NoYW5nZWQoYm9vbCkgb3ZlcnJpZGU7Cisg
ICAgdm9pZCB2aWRlb0RpbWVuc2lvbnNDaGFuZ2VkKGNvbnN0IEZsb2F0U2l6ZSYpIG92ZXJyaWRl
OworCisgICAgLy8gV2ViUGxheWJhY2tTZXNzaW9uTW9kZWwKKyAgICB2b2lkIGFkZENsaWVudChX
ZWJQbGF5YmFja1Nlc3Npb25Nb2RlbENsaWVudCYpIG92ZXJyaWRlOworICAgIHZvaWQgcmVtb3Zl
Q2xpZW50KFdlYlBsYXliYWNrU2Vzc2lvbk1vZGVsQ2xpZW50Jikgb3ZlcnJpZGU7CisgICAgdm9p
ZCBwbGF5KCkgb3ZlcnJpZGU7CisgICAgdm9pZCBwYXVzZSgpIG92ZXJyaWRlOworICAgIHZvaWQg
dG9nZ2xlUGxheVN0YXRlKCkgb3ZlcnJpZGU7CisgICAgdm9pZCBiZWdpblNjcnViYmluZygpIG92
ZXJyaWRlOworICAgIHZvaWQgZW5kU2NydWJiaW5nKCkgb3ZlcnJpZGU7CisgICAgdm9pZCBzZWVr
VG9UaW1lKGRvdWJsZSkgb3ZlcnJpZGU7CisgICAgdm9pZCBmYXN0U2Vlayhkb3VibGUgdGltZSkg
b3ZlcnJpZGU7CisgICAgdm9pZCBiZWdpblNjYW5uaW5nRm9yd2FyZCgpIG92ZXJyaWRlOworICAg
IHZvaWQgYmVnaW5TY2FubmluZ0JhY2t3YXJkKCkgb3ZlcnJpZGU7CisgICAgdm9pZCBlbmRTY2Fu
bmluZygpIG92ZXJyaWRlOworICAgIHZvaWQgc2VsZWN0QXVkaW9NZWRpYU9wdGlvbih1aW50NjRf
dCkgb3ZlcnJpZGU7CisgICAgdm9pZCBzZWxlY3RMZWdpYmxlTWVkaWFPcHRpb24odWludDY0X3Qp
IG92ZXJyaWRlOworICAgIGRvdWJsZSBkdXJhdGlvbigpIGNvbnN0IG92ZXJyaWRlOworICAgIGRv
dWJsZSBjdXJyZW50VGltZSgpIGNvbnN0IG92ZXJyaWRlOworICAgIGRvdWJsZSBidWZmZXJlZFRp
bWUoKSBjb25zdCBvdmVycmlkZTsKKyAgICBib29sIGlzUGxheWluZygpIGNvbnN0IG92ZXJyaWRl
OworICAgIGZsb2F0IHBsYXliYWNrUmF0ZSgpIGNvbnN0IG92ZXJyaWRlOworICAgIFJlZjxUaW1l
UmFuZ2VzPiBzZWVrYWJsZVJhbmdlcygpIGNvbnN0IG92ZXJyaWRlOworICAgIGJvb2wgY2FuUGxh
eUZhc3RSZXZlcnNlKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgVmVjdG9yPFN0cmluZz4gYXVkaW9N
ZWRpYVNlbGVjdGlvbk9wdGlvbnMoKSBjb25zdCBvdmVycmlkZTsKKyAgICB1aW50NjRfdCBhdWRp
b01lZGlhU2VsZWN0ZWRJbmRleCgpIGNvbnN0IG92ZXJyaWRlOworICAgIFZlY3RvcjxTdHJpbmc+
IGxlZ2libGVNZWRpYVNlbGVjdGlvbk9wdGlvbnMoKSBjb25zdCBvdmVycmlkZTsKKyAgICB1aW50
NjRfdCBsZWdpYmxlTWVkaWFTZWxlY3RlZEluZGV4KCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgYm9v
bCBleHRlcm5hbFBsYXliYWNrRW5hYmxlZCgpIGNvbnN0IG92ZXJyaWRlOworICAgIEV4dGVybmFs
UGxheWJhY2tUYXJnZXRUeXBlIGV4dGVybmFsUGxheWJhY2tUYXJnZXRUeXBlKCkgY29uc3Qgb3Zl
cnJpZGU7CisgICAgU3RyaW5nIGV4dGVybmFsUGxheWJhY2tMb2NhbGl6ZWREZXZpY2VOYW1lKCkg
Y29uc3Qgb3ZlcnJpZGU7CisgICAgYm9vbCB3aXJlbGVzc1ZpZGVvUGxheWJhY2tEaXNhYmxlZCgp
IGNvbnN0IG92ZXJyaWRlOworCisgICAgLy8gV2ViUGxheWJhY2tTZXNzaW9uTW9kZWxDbGllbnQK
KyAgICB2b2lkIGR1cmF0aW9uQ2hhbmdlZChkb3VibGUpIG92ZXJyaWRlOworICAgIHZvaWQgY3Vy
cmVudFRpbWVDaGFuZ2VkKGRvdWJsZSBjdXJyZW50VGltZSwgZG91YmxlIGFuY2hvclRpbWUpIG92
ZXJyaWRlOworICAgIHZvaWQgYnVmZmVyZWRUaW1lQ2hhbmdlZChkb3VibGUpIG92ZXJyaWRlOwor
ICAgIHZvaWQgcmF0ZUNoYW5nZWQoYm9vbCBpc1BsYXlpbmcsIGZsb2F0IHBsYXliYWNrUmF0ZSkg
b3ZlcnJpZGU7CisgICAgdm9pZCBzZWVrYWJsZVJhbmdlc0NoYW5nZWQoY29uc3QgVGltZVJhbmdl
cyYpIG92ZXJyaWRlOworICAgIHZvaWQgY2FuUGxheUZhc3RSZXZlcnNlQ2hhbmdlZChib29sKSBv
dmVycmlkZTsKKyAgICB2b2lkIGF1ZGlvTWVkaWFTZWxlY3Rpb25PcHRpb25zQ2hhbmdlZChjb25z
dCBWZWN0b3I8U3RyaW5nPiYgb3B0aW9ucywgdWludDY0X3Qgc2VsZWN0ZWRJbmRleCkgb3ZlcnJp
ZGU7CisgICAgdm9pZCBsZWdpYmxlTWVkaWFTZWxlY3Rpb25PcHRpb25zQ2hhbmdlZChjb25zdCBW
ZWN0b3I8U3RyaW5nPiYgb3B0aW9ucywgdWludDY0X3Qgc2VsZWN0ZWRJbmRleCkgb3ZlcnJpZGU7
CisgICAgdm9pZCBleHRlcm5hbFBsYXliYWNrQ2hhbmdlZChib29sIGVuYWJsZWQsIFdlYlBsYXli
YWNrU2Vzc2lvbk1vZGVsOjpFeHRlcm5hbFBsYXliYWNrVGFyZ2V0VHlwZSwgY29uc3QgU3RyaW5n
JiBsb2NhbGl6ZWREZXZpY2VOYW1lKSBvdmVycmlkZTsKKyAgICB2b2lkIHdpcmVsZXNzVmlkZW9Q
bGF5YmFja0Rpc2FibGVkQ2hhbmdlZChib29sKSBvdmVycmlkZTsKIAogICAgIC8vIFdlYlZpZGVv
RnVsbHNjcmVlbk1vZGVsCisgICAgdm9pZCBhZGRDbGllbnQoV2ViVmlkZW9GdWxsc2NyZWVuTW9k
ZWxDbGllbnQmKSBvdmVycmlkZTsKKyAgICB2b2lkIHJlbW92ZUNsaWVudChXZWJWaWRlb0Z1bGxz
Y3JlZW5Nb2RlbENsaWVudCYpIG92ZXJyaWRlOwogICAgIHZvaWQgcmVxdWVzdEZ1bGxzY3JlZW5N
b2RlKEhUTUxNZWRpYUVsZW1lbnRFbnVtczo6VmlkZW9GdWxsc2NyZWVuTW9kZSkgb3ZlcnJpZGU7
CiAgICAgdm9pZCBzZXRWaWRlb0xheWVyRnJhbWUoRmxvYXRSZWN0KSBvdmVycmlkZTsKICAgICB2
b2lkIHNldFZpZGVvTGF5ZXJHcmF2aXR5KFdlYlZpZGVvRnVsbHNjcmVlbk1vZGVsOjpWaWRlb0dy
YXZpdHkpIG92ZXJyaWRlOwogICAgIHZvaWQgZnVsbHNjcmVlbk1vZGVDaGFuZ2VkKEhUTUxNZWRp
YUVsZW1lbnRFbnVtczo6VmlkZW9GdWxsc2NyZWVuTW9kZSkgb3ZlcnJpZGU7CiAgICAgYm9vbCBp
c1Zpc2libGUoKSBjb25zdCBvdmVycmlkZTsKKyAgICBib29sIGhhc1ZpZGVvKCkgY29uc3Qgb3Zl
cnJpZGU7CisgICAgRmxvYXRTaXplIHZpZGVvRGltZW5zaW9ucygpIGNvbnN0IG92ZXJyaWRlOwog
CisgICAgSGFzaFNldDxXZWJQbGF5YmFja1Nlc3Npb25Nb2RlbENsaWVudCo+IG1fcGxheWJhY2tD
bGllbnRzOworICAgIEhhc2hTZXQ8V2ViVmlkZW9GdWxsc2NyZWVuTW9kZWxDbGllbnQqPiBtX2Z1
bGxzY3JlZW5DbGllbnRzOwogICAgIFJlZlB0cjxXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VB
VktpdD4gbV9pbnRlcmZhY2U7Ci0gICAgUmVmUHRyPFdlYlZpZGVvRnVsbHNjcmVlbk1vZGVsVmlk
ZW9FbGVtZW50PiBtX21vZGVsOworICAgIFJlZlB0cjxXZWJWaWRlb0Z1bGxzY3JlZW5Nb2RlbFZp
ZGVvRWxlbWVudD4gbV9mdWxsc2NyZWVuTW9kZWw7CisgICAgUmVmUHRyPFdlYlBsYXliYWNrU2Vz
c2lvbk1vZGVsTWVkaWFFbGVtZW50PiBtX3BsYXliYWNrTW9kZWw7CiAgICAgUmVmUHRyPEhUTUxW
aWRlb0VsZW1lbnQ+IG1fdmlkZW9FbGVtZW50OwogICAgIFJldGFpblB0cjxVSVZpZXc+IG1fdmlk
ZW9GdWxsc2NyZWVuVmlldzsKICAgICBSZXRhaW5QdHI8V2ViVmlkZW9GdWxsc2NyZWVuQ29udHJv
bGxlcj4gbV9jb250cm9sbGVyOwotICAgIFJlZlB0cjxXZWJWaWRlb0Z1bGxzY3JlZW5TZXNzaW9u
TW9kZWw+IG1fc2Vzc2lvbk1vZGVsOwotfTsKLQotCi1jbGFzcyBXZWJWaWRlb0Z1bGxzY3JlZW5T
ZXNzaW9uTW9kZWwgZmluYWw6IHB1YmxpYyBSZWZDb3VudGVkPFdlYlZpZGVvRnVsbHNjcmVlblNl
c3Npb25Nb2RlbD4sIHB1YmxpYyBXZWJDb3JlOjpXZWJQbGF5YmFja1Nlc3Npb25Nb2RlbCAgewot
cHVibGljOgotICAgIHN0YXRpYyBSZWY8V2ViVmlkZW9GdWxsc2NyZWVuU2Vzc2lvbk1vZGVsPiBj
cmVhdGUoV2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlckNvbnRleHQmIGNvbnRyb2xsZXIpCi0g
ICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBXZWJWaWRlb0Z1bGxzY3JlZW5TZXNz
aW9uTW9kZWwoY29udHJvbGxlcikpOwotICAgIH0KLSAgICB2aXJ0dWFsIH5XZWJWaWRlb0Z1bGxz
Y3JlZW5TZXNzaW9uTW9kZWwoKSB7IH0KLQotICAgIHZvaWQgaW52YWxpZGF0ZSgpIHsgbV9jb250
cm9sbGVyID0gbnVsbHB0cjsgfQotCi0gICAgdm9pZCBzZXREdXJhdGlvbihkb3VibGUgZHVyYXRp
b24pIHsgbV9kdXJhdGlvbiA9IGR1cmF0aW9uOyB9Ci0gICAgdm9pZCBzZXRDdXJyZW50VGltZShk
b3VibGUgY3VycmVudFRpbWUpIHsgbV9jdXJyZW50VGltZSA9IGN1cnJlbnRUaW1lOyB9Ci0gICAg
dm9pZCBzZXRCdWZmZXJlZFRpbWUoZG91YmxlIGJ1ZmZlcmVkVGltZSkgeyBtX2J1ZmZlcmVkVGlt
ZSA9IGJ1ZmZlcmVkVGltZTsgfQotICAgIHZvaWQgc2V0SXNQbGF5aW5nKGJvb2wgaXNQbGF5aW5n
KSB7IG1faXNQbGF5aW5nID0gaXNQbGF5aW5nOyB9Ci0gICAgdm9pZCBzZXRQbGF5YmFja1JhdGUo
ZmxvYXQgcGxheWJhY2tSYXRlKSB7IG1fcGxheWJhY2tSYXRlID0gcGxheWJhY2tSYXRlOyB9Ci0g
ICAgdm9pZCBzZXRTZWVrYWJsZVJhbmdlcyhXZWJDb3JlOjpUaW1lUmFuZ2VzJiBzZWVrYWJsZVJh
bmdlcykgeyBtX3NlZWthYmxlUmFuZ2VzID0gc2Vla2FibGVSYW5nZXM7IH0KLSAgICB2b2lkIHNl
dENhblBsYXlGYXN0UmV2ZXJzZShib29sIGNhblBsYXlGYXN0UmV2ZXJzZSkgeyBtX2NhblBsYXlG
YXN0UmV2ZXJzZSA9IGNhblBsYXlGYXN0UmV2ZXJzZTsgfQotICAgIHZvaWQgc2V0QXVkaW9NZWRp
YVNlbGVjdGlvbk9wdGlvbnMoY29uc3QgVmVjdG9yPFdURjo6U3RyaW5nPiYgYXVkaW9NZWRpYVNl
bGVjdGlvbk9wdGlvbnMpIHsgbV9hdWRpb01lZGlhU2VsZWN0aW9uT3B0aW9ucyA9IGF1ZGlvTWVk
aWFTZWxlY3Rpb25PcHRpb25zOyB9Ci0gICAgdm9pZCBzZXRBdWRpb01lZGlhU2VsZWN0ZWRJbmRl
eCh1aW50NjRfdCBhdWRpb01lZGlhU2VsZWN0ZWRJbmRleCkgeyBtX2F1ZGlvTWVkaWFTZWxlY3Rl
ZEluZGV4ID0gYXVkaW9NZWRpYVNlbGVjdGVkSW5kZXg7IH0KLSAgICB2b2lkIHNldExlZ2libGVN
ZWRpYVNlbGVjdGlvbk9wdGlvbnMoY29uc3QgVmVjdG9yPFdURjo6U3RyaW5nPiYgbGVnaWJsZU1l
ZGlhU2VsZWN0aW9uT3B0aW9ucykgeyBtX2xlZ2libGVNZWRpYVNlbGVjdGlvbk9wdGlvbnMgPSBs
ZWdpYmxlTWVkaWFTZWxlY3Rpb25PcHRpb25zOyB9Ci0gICAgdm9pZCBzZXRMZWdpYmxlTWVkaWFT
ZWxlY3RlZEluZGV4KHVpbnQ2NF90IGxlZ2libGVNZWRpYVNlbGVjdGVkSW5kZXgpIHsgbV9sZWdp
YmxlTWVkaWFTZWxlY3RlZEluZGV4ID0gbGVnaWJsZU1lZGlhU2VsZWN0ZWRJbmRleDsgfQotICAg
IHZvaWQgc2V0RXh0ZXJuYWxQbGF5YmFja0VuYWJsZWQoYm9vbCBleHRlcm5hbFBsYXliYWNrRW5h
YmxlZCkgeyBtX2V4dGVybmFsUGxheWJhY2tFbmFibGVkID0gZXh0ZXJuYWxQbGF5YmFja0VuYWJs
ZWQ7IH0KLSAgICB2b2lkIHNldFdpcmVsZXNzVmlkZW9QbGF5YmFja0Rpc2FibGVkKGJvb2wgd2ly
ZWxlc3NWaWRlb1BsYXliYWNrRGlzYWJsZWQpIHsgbV93aXJlbGVzc1ZpZGVvUGxheWJhY2tEaXNh
YmxlZCA9IHdpcmVsZXNzVmlkZW9QbGF5YmFja0Rpc2FibGVkOyB9Ci0KLXByaXZhdGU6Ci0gICAg
V2ViVmlkZW9GdWxsc2NyZWVuU2Vzc2lvbk1vZGVsKFdlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xs
ZXJDb250ZXh0JiBjb250cm9sbGVyKQotICAgICAgICA6IG1fY29udHJvbGxlcigmY29udHJvbGxl
cikKLSAgICB7Ci0gICAgfQotCi0gICAgdm9pZCBwbGF5KCkgZmluYWw7Ci0gICAgdm9pZCBwYXVz
ZSgpIGZpbmFsOwotICAgIHZvaWQgdG9nZ2xlUGxheVN0YXRlKCkgZmluYWw7Ci0gICAgdm9pZCBi
ZWdpblNjcnViYmluZygpIGZpbmFsOwotICAgIHZvaWQgZW5kU2NydWJiaW5nKCkgZmluYWw7Ci0g
ICAgdm9pZCBzZWVrVG9UaW1lKGRvdWJsZSkgZmluYWw7Ci0gICAgdm9pZCBmYXN0U2Vlayhkb3Vi
bGUgdGltZSkgZmluYWw7Ci0gICAgdm9pZCBiZWdpblNjYW5uaW5nRm9yd2FyZCgpIGZpbmFsOwot
ICAgIHZvaWQgYmVnaW5TY2FubmluZ0JhY2t3YXJkKCkgZmluYWw7Ci0gICAgdm9pZCBlbmRTY2Fu
bmluZygpIGZpbmFsOwotICAgIHZvaWQgc2VsZWN0QXVkaW9NZWRpYU9wdGlvbih1aW50NjRfdCkg
ZmluYWw7Ci0gICAgdm9pZCBzZWxlY3RMZWdpYmxlTWVkaWFPcHRpb24odWludDY0X3QpIGZpbmFs
OwotCi0gICAgZG91YmxlIGR1cmF0aW9uKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9kdXJhdGlv
bjsgfQotICAgIGRvdWJsZSBjdXJyZW50VGltZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fY3Vy
cmVudFRpbWU7IH0KLSAgICBkb3VibGUgYnVmZmVyZWRUaW1lKCkgY29uc3QgZmluYWwgeyByZXR1
cm4gbV9idWZmZXJlZFRpbWU7IH0KLSAgICBib29sIGlzUGxheWluZygpIGNvbnN0IGZpbmFsIHsg
cmV0dXJuIG1faXNQbGF5aW5nOyB9Ci0gICAgZmxvYXQgcGxheWJhY2tSYXRlKCkgY29uc3QgZmlu
YWwgeyByZXR1cm4gbV9wbGF5YmFja1JhdGU7IH0KLSAgICBSZWY8V2ViQ29yZTo6VGltZVJhbmdl
cz4gc2Vla2FibGVSYW5nZXMoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX3NlZWthYmxlUmFuZ2Vz
LmNvcHlSZWYoKTsgfQotICAgIGJvb2wgY2FuUGxheUZhc3RSZXZlcnNlKCkgY29uc3QgZmluYWwg
eyByZXR1cm4gbV9jYW5QbGF5RmFzdFJldmVyc2U7IH0KLSAgICBWZWN0b3I8V1RGOjpTdHJpbmc+
IGF1ZGlvTWVkaWFTZWxlY3Rpb25PcHRpb25zKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9hdWRp
b01lZGlhU2VsZWN0aW9uT3B0aW9uczsgfQotICAgIHVpbnQ2NF90IGF1ZGlvTWVkaWFTZWxlY3Rl
ZEluZGV4KCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9hdWRpb01lZGlhU2VsZWN0ZWRJbmRleDsg
fQotICAgIFZlY3RvcjxXVEY6OlN0cmluZz4gbGVnaWJsZU1lZGlhU2VsZWN0aW9uT3B0aW9ucygp
IGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fbGVnaWJsZU1lZGlhU2VsZWN0aW9uT3B0aW9uczsgfQot
ICAgIHVpbnQ2NF90IGxlZ2libGVNZWRpYVNlbGVjdGVkSW5kZXgoKSBjb25zdCBmaW5hbCB7IHJl
dHVybiBtX2xlZ2libGVNZWRpYVNlbGVjdGVkSW5kZXg7IH0KLSAgICBib29sIGV4dGVybmFsUGxh
eWJhY2tFbmFibGVkKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9leHRlcm5hbFBsYXliYWNrRW5h
YmxlZDsgfQotICAgIGJvb2wgd2lyZWxlc3NWaWRlb1BsYXliYWNrRGlzYWJsZWQoKSBjb25zdCBm
aW5hbCB7IHJldHVybiBtX3dpcmVsZXNzVmlkZW9QbGF5YmFja0Rpc2FibGVkOyB9Ci0KLSAgICBX
ZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyQ29udGV4dCogbV9jb250cm9sbGVyOwotICAgIGRv
dWJsZSBtX2R1cmF0aW9uIHsgMCB9OwotICAgIGRvdWJsZSBtX2N1cnJlbnRUaW1lIHsgMCB9Owot
ICAgIGRvdWJsZSBtX2J1ZmZlcmVkVGltZSB7IDAgfTsKLSAgICBib29sIG1faXNQbGF5aW5nIHsg
ZmFsc2UgfTsKLSAgICBmbG9hdCBtX3BsYXliYWNrUmF0ZSB7IDAgfTsKLSAgICBSZWY8V2ViQ29y
ZTo6VGltZVJhbmdlcz4gbV9zZWVrYWJsZVJhbmdlcyB7IFdlYkNvcmU6OlRpbWVSYW5nZXM6OmNy
ZWF0ZSgpIH07Ci0gICAgYm9vbCBtX2NhblBsYXlGYXN0UmV2ZXJzZSB7IGZhbHNlIH07Ci0gICAg
VmVjdG9yPFdURjo6U3RyaW5nPiBtX2F1ZGlvTWVkaWFTZWxlY3Rpb25PcHRpb25zOwotICAgIHVp
bnQ2NF90IG1fYXVkaW9NZWRpYVNlbGVjdGVkSW5kZXggeyAwIH07Ci0gICAgVmVjdG9yPFdURjo6
U3RyaW5nPiBtX2xlZ2libGVNZWRpYVNlbGVjdGlvbk9wdGlvbnM7Ci0gICAgdWludDY0X3QgbV9s
ZWdpYmxlTWVkaWFTZWxlY3RlZEluZGV4IHsgMCB9OwotICAgIGJvb2wgbV9leHRlcm5hbFBsYXli
YWNrRW5hYmxlZCB7IGZhbHNlIH07Ci0gICAgYm9vbCBtX3dpcmVsZXNzVmlkZW9QbGF5YmFja0Rp
c2FibGVkIHsgZmFsc2UgfTsKIH07CiAKICNwcmFnbWEgbWFyayBXZWJWaWRlb0Z1bGxzY3JlZW5D
aGFuZ2VPYnNlcnZlcgpAQCAtMjQ2LDExICsyMDAsMTEgQEAgcHJpdmF0ZToKIHZvaWQgV2ViVmlk
ZW9GdWxsc2NyZWVuQ29udHJvbGxlckNvbnRleHQ6OmRpZFNldHVwRnVsbHNjcmVlbigpCiB7CiAg
ICAgQVNTRVJUKGlzVUlUaHJlYWQoKSk7Ci0gICAgUmVmUHRyPFdlYlZpZGVvRnVsbHNjcmVlbkNv
bnRyb2xsZXJDb250ZXh0PiBwcm90ZWN0ZWRUaGlzKHRoaXMpOwogICAgIFJldGFpblB0cjxDQUxh
eWVyPiB2aWRlb0Z1bGxzY3JlZW5MYXllciA9IFttX3ZpZGVvRnVsbHNjcmVlblZpZXcgbGF5ZXJd
OworICAgIFJlZlB0cjxXZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyQ29udGV4dD4gcHJvdGVj
dGVkVGhpcyh0aGlzKTsKICAgICBXZWJUaHJlYWRSdW4oW3Byb3RlY3RlZFRoaXMsIHRoaXMsIHZp
ZGVvRnVsbHNjcmVlbkxheWVyXSB7CiAgICAgICAgIFt2aWRlb0Z1bGxzY3JlZW5MYXllciBzZXRC
YWNrZ3JvdW5kQ29sb3I6Y2FjaGVkQ0dDb2xvcihXZWJDb3JlOjpDb2xvcjo6dHJhbnNwYXJlbnQp
XTsKLSAgICAgICAgbV9tb2RlbC0+c2V0VmlkZW9GdWxsc2NyZWVuTGF5ZXIodmlkZW9GdWxsc2Ny
ZWVuTGF5ZXIuZ2V0KCksIFtwcm90ZWN0ZWRUaGlzLCB0aGlzXSB7CisgICAgICAgIG1fZnVsbHNj
cmVlbk1vZGVsLT5zZXRWaWRlb0Z1bGxzY3JlZW5MYXllcih2aWRlb0Z1bGxzY3JlZW5MYXllci5n
ZXQoKSwgW3Byb3RlY3RlZFRoaXMsIHRoaXNdIHsKICAgICAgICAgICAgIGRpc3BhdGNoX2FzeW5j
KGRpc3BhdGNoX2dldF9tYWluX3F1ZXVlKCksIFtwcm90ZWN0ZWRUaGlzLCB0aGlzXSB7CiAgICAg
ICAgICAgICAgICAgbV9pbnRlcmZhY2UtPmVudGVyRnVsbHNjcmVlbigpOwogICAgICAgICAgICAg
fSk7CkBAIC0yNjMsNyArMjE3LDcgQEAgdm9pZCBXZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVy
Q29udGV4dDo6ZGlkRXhpdEZ1bGxzY3JlZW4oKQogICAgIEFTU0VSVChpc1VJVGhyZWFkKCkpOwog
ICAgIFJlZlB0cjxXZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyQ29udGV4dD4gcHJvdGVjdGVk
VGhpcyh0aGlzKTsKICAgICBXZWJUaHJlYWRSdW4oW3Byb3RlY3RlZFRoaXMsIHRoaXNdIHsKLSAg
ICAgICAgbV9tb2RlbC0+c2V0VmlkZW9GdWxsc2NyZWVuTGF5ZXIobmlsLCBbcHJvdGVjdGVkVGhp
cywgdGhpc10geworICAgICAgICBtX2Z1bGxzY3JlZW5Nb2RlbC0+c2V0VmlkZW9GdWxsc2NyZWVu
TGF5ZXIobmlsLCBbcHJvdGVjdGVkVGhpcywgdGhpc10gewogICAgICAgICAgICAgZGlzcGF0Y2hf
YXN5bmMoZGlzcGF0Y2hfZ2V0X21haW5fcXVldWUoKSwgW3Byb3RlY3RlZFRoaXMsIHRoaXNdIHsK
ICAgICAgICAgICAgICAgICBtX2ludGVyZmFjZS0+Y2xlYW51cEZ1bGxzY3JlZW4oKTsKICAgICAg
ICAgICAgIH0pOwpAQCAtMjc4LDE2ICsyMzIsMTQgQEAgdm9pZCBXZWJWaWRlb0Z1bGxzY3JlZW5D
b250cm9sbGVyQ29udGV4dDo6ZGlkQ2xlYW51cEZ1bGxzY3JlZW4oKQogICAgIG1faW50ZXJmYWNl
LT5zZXRXZWJWaWRlb0Z1bGxzY3JlZW5DaGFuZ2VPYnNlcnZlcihudWxscHRyKTsKICAgICBtX2lu
dGVyZmFjZSA9IG51bGxwdHI7CiAgICAgbV92aWRlb0Z1bGxzY3JlZW5WaWV3ID0gbmlsOwotICAg
IG1fc2Vzc2lvbk1vZGVsLT5pbnZhbGlkYXRlKCk7Ci0gICAgbV9zZXNzaW9uTW9kZWwgPSBudWxs
cHRyOwogCiAgICAgUmVmUHRyPFdlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJDb250ZXh0PiBw
cm90ZWN0ZWRUaGlzKHRoaXMpOwogICAgIFdlYlRocmVhZFJ1bihbcHJvdGVjdGVkVGhpcywgdGhp
c10gewotICAgICAgICBtX21vZGVsLT5zZXRWaWRlb0Z1bGxzY3JlZW5MYXllcihuaWwpOwotICAg
ICAgICBtX21vZGVsLT5zZXRXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2UobnVsbHB0cik7Ci0g
ICAgICAgIG1fbW9kZWwtPnNldFZpZGVvRWxlbWVudChudWxscHRyKTsKLSAgICAgICAgbV9tb2Rl
bC0+cGxheWJhY2tTZXNzaW9uTW9kZWwoKS5zZXRNZWRpYUVsZW1lbnQobnVsbHB0cik7Ci0gICAg
ICAgIG1fbW9kZWwgPSBudWxscHRyOworICAgICAgICBtX2Z1bGxzY3JlZW5Nb2RlbC0+c2V0Vmlk
ZW9GdWxsc2NyZWVuTGF5ZXIobmlsKTsKKyAgICAgICAgbV9mdWxsc2NyZWVuTW9kZWwtPnNldFZp
ZGVvRWxlbWVudChudWxscHRyKTsKKyAgICAgICAgbV9wbGF5YmFja01vZGVsLT5zZXRNZWRpYUVs
ZW1lbnQobnVsbHB0cik7CisgICAgICAgIG1fZnVsbHNjcmVlbk1vZGVsLT5yZW1vdmVDbGllbnQo
KnRoaXMpOworICAgICAgICBtX2Z1bGxzY3JlZW5Nb2RlbCA9IG51bGxwdHI7CiAgICAgICAgIG1f
dmlkZW9FbGVtZW50ID0gbnVsbHB0cjsKIAogICAgICAgICBbbV9jb250cm9sbGVyIGRpZEZpbmlz
aEZ1bGxzY3JlZW46dGhpc107CkBAIC0zMDYsMTYwICsyNTgsMTk3IEBAIHZvaWQgV2ViVmlkZW9G
dWxsc2NyZWVuQ29udHJvbGxlckNvbnRleHQ6OmZ1bGxzY3JlZW5NYXlSZXR1cm5Ub0lubGluZSgp
CiAgICAgfSk7CiB9CiAKLSNwcmFnbWEgbWFyayBXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2UK
KyNwcmFnbWEgbWFyayBXZWJQbGF5YmFja1Nlc3Npb25Nb2RlbENsaWVudAogCi12b2lkIFdlYlZp
ZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJDb250ZXh0OjpyZXNldE1lZGlhU3RhdGUoKQordm9pZCBX
ZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyQ29udGV4dDo6ZHVyYXRpb25DaGFuZ2VkKGRvdWJs
ZSBkdXJhdGlvbikKIHsKLSAgICBBU1NFUlQoV2ViVGhyZWFkSXNDdXJyZW50KCkgfHwgaXNNYWlu
VGhyZWFkKCkpOwotICAgIFJlZlB0cjxXZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyQ29udGV4
dD4gcHJvdGVjdGVkVGhpcyh0aGlzKTsKLSAgICBkaXNwYXRjaF9hc3luYyhkaXNwYXRjaF9nZXRf
bWFpbl9xdWV1ZSgpLCBbcHJvdGVjdGVkVGhpcywgdGhpc10gewotICAgICAgICBpZiAobV9pbnRl
cmZhY2UpCi0gICAgICAgICAgICBtX2ludGVyZmFjZS0+cmVzZXRNZWRpYVN0YXRlKCk7Ci0gICAg
fSk7CisgICAgaWYgKFdlYlRocmVhZElzQ3VycmVudCgpKSB7CisgICAgICAgIFJlZlB0cjxXZWJW
aWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyQ29udGV4dD4gcHJvdGVjdGVkVGhpcyh0aGlzKTsKKyAg
ICAgICAgZGlzcGF0Y2hfYXN5bmMoZGlzcGF0Y2hfZ2V0X21haW5fcXVldWUoKSwgW3Byb3RlY3Rl
ZFRoaXMsIGR1cmF0aW9uXSB7CisgICAgICAgICAgICBwcm90ZWN0ZWRUaGlzLT5kdXJhdGlvbkNo
YW5nZWQoZHVyYXRpb24pOworICAgICAgICB9KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKwor
ICAgIGZvciAoYXV0byYgY2xpZW50IDogbV9wbGF5YmFja0NsaWVudHMpCisgICAgICAgIGNsaWVu
dC0+ZHVyYXRpb25DaGFuZ2VkKGR1cmF0aW9uKTsKIH0KIAotdm9pZCBXZWJWaWRlb0Z1bGxzY3Jl
ZW5Db250cm9sbGVyQ29udGV4dDo6c2V0RHVyYXRpb24oZG91YmxlIGR1cmF0aW9uKQordm9pZCBX
ZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyQ29udGV4dDo6Y3VycmVudFRpbWVDaGFuZ2VkKGRv
dWJsZSBjdXJyZW50VGltZSwgZG91YmxlIGFuY2hvclRpbWUpCiB7Ci0gICAgQVNTRVJUKFdlYlRo
cmVhZElzQ3VycmVudCgpKTsKLSAgICBSZWZQdHI8V2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxl
ckNvbnRleHQ+IHByb3RlY3RlZFRoaXModGhpcyk7Ci0gICAgZGlzcGF0Y2hfYXN5bmMoZGlzcGF0
Y2hfZ2V0X21haW5fcXVldWUoKSwgW3Byb3RlY3RlZFRoaXMsIHRoaXMsIGR1cmF0aW9uXSB7Ci0g
ICAgICAgIGlmIChtX2ludGVyZmFjZSkKLSAgICAgICAgICAgIG1faW50ZXJmYWNlLT5zZXREdXJh
dGlvbihkdXJhdGlvbik7Ci0gICAgfSk7CisgICAgaWYgKFdlYlRocmVhZElzQ3VycmVudCgpKSB7
CisgICAgICAgIFJlZlB0cjxXZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyQ29udGV4dD4gcHJv
dGVjdGVkVGhpcyh0aGlzKTsKKyAgICAgICAgZGlzcGF0Y2hfYXN5bmMoZGlzcGF0Y2hfZ2V0X21h
aW5fcXVldWUoKSwgW3Byb3RlY3RlZFRoaXMsIGN1cnJlbnRUaW1lLCBhbmNob3JUaW1lXSB7Cisg
ICAgICAgICAgICBwcm90ZWN0ZWRUaGlzLT5jdXJyZW50VGltZUNoYW5nZWQoY3VycmVudFRpbWUs
IGFuY2hvclRpbWUpOworICAgICAgICB9KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAg
IGZvciAoYXV0byYgY2xpZW50IDogbV9wbGF5YmFja0NsaWVudHMpCisgICAgICAgIGNsaWVudC0+
Y3VycmVudFRpbWVDaGFuZ2VkKGN1cnJlbnRUaW1lLCBhbmNob3JUaW1lKTsKIH0KIAotdm9pZCBX
ZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyQ29udGV4dDo6c2V0Q3VycmVudFRpbWUoZG91Ymxl
IGN1cnJlbnRUaW1lLCBkb3VibGUgYW5jaG9yVGltZSkKK3ZvaWQgV2ViVmlkZW9GdWxsc2NyZWVu
Q29udHJvbGxlckNvbnRleHQ6OmJ1ZmZlcmVkVGltZUNoYW5nZWQoZG91YmxlIGJ1ZmZlcmVkVGlt
ZSkKIHsKLSAgICBBU1NFUlQoV2ViVGhyZWFkSXNDdXJyZW50KCkpOwotICAgIFJlZlB0cjxXZWJW
aWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyQ29udGV4dD4gcHJvdGVjdGVkVGhpcyh0aGlzKTsKLSAg
ICBkaXNwYXRjaF9hc3luYyhkaXNwYXRjaF9nZXRfbWFpbl9xdWV1ZSgpLCBbcHJvdGVjdGVkVGhp
cywgdGhpcywgY3VycmVudFRpbWUsIGFuY2hvclRpbWVdIHsKLSAgICAgICAgaWYgKG1faW50ZXJm
YWNlKQotICAgICAgICAgICAgbV9pbnRlcmZhY2UtPnNldEN1cnJlbnRUaW1lKGN1cnJlbnRUaW1l
LCBhbmNob3JUaW1lKTsKLSAgICB9KTsKKyAgICBpZiAoV2ViVGhyZWFkSXNDdXJyZW50KCkpIHsK
KyAgICAgICAgUmVmUHRyPFdlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJDb250ZXh0PiBwcm90
ZWN0ZWRUaGlzKHRoaXMpOworICAgICAgICBkaXNwYXRjaF9hc3luYyhkaXNwYXRjaF9nZXRfbWFp
bl9xdWV1ZSgpLCBbcHJvdGVjdGVkVGhpcywgYnVmZmVyZWRUaW1lXSB7CisgICAgICAgICAgICBw
cm90ZWN0ZWRUaGlzLT5idWZmZXJlZFRpbWVDaGFuZ2VkKGJ1ZmZlcmVkVGltZSk7CisgICAgICAg
IH0pOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgZm9yIChhdXRvJiBjbGllbnQgOiBt
X3BsYXliYWNrQ2xpZW50cykKKyAgICAgICAgY2xpZW50LT5idWZmZXJlZFRpbWVDaGFuZ2VkKGJ1
ZmZlcmVkVGltZSk7CiB9CiAKLXZvaWQgV2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlckNvbnRl
eHQ6OnNldEJ1ZmZlcmVkVGltZShkb3VibGUgYnVmZmVyZWRUaW1lKQordm9pZCBXZWJWaWRlb0Z1
bGxzY3JlZW5Db250cm9sbGVyQ29udGV4dDo6cmF0ZUNoYW5nZWQoYm9vbCBpc1BsYXlpbmcsIGZs
b2F0IHBsYXliYWNrUmF0ZSkKIHsKLSAgICBBU1NFUlQoV2ViVGhyZWFkSXNDdXJyZW50KCkpOwot
ICAgIFJlZlB0cjxXZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyQ29udGV4dD4gcHJvdGVjdGVk
VGhpcyh0aGlzKTsKLSAgICBkaXNwYXRjaF9hc3luYyhkaXNwYXRjaF9nZXRfbWFpbl9xdWV1ZSgp
LCBbcHJvdGVjdGVkVGhpcywgdGhpcywgYnVmZmVyZWRUaW1lXSB7Ci0gICAgICAgIGlmIChtX2lu
dGVyZmFjZSkKLSAgICAgICAgICAgIG1faW50ZXJmYWNlLT5zZXRCdWZmZXJlZFRpbWUoYnVmZmVy
ZWRUaW1lKTsKLSAgICB9KTsKKyAgICBpZiAoV2ViVGhyZWFkSXNDdXJyZW50KCkpIHsKKyAgICAg
ICAgUmVmUHRyPFdlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJDb250ZXh0PiBwcm90ZWN0ZWRU
aGlzKHRoaXMpOworICAgICAgICBkaXNwYXRjaF9hc3luYyhkaXNwYXRjaF9nZXRfbWFpbl9xdWV1
ZSgpLCBbcHJvdGVjdGVkVGhpcywgaXNQbGF5aW5nLCBwbGF5YmFja1JhdGVdIHsKKyAgICAgICAg
ICAgIHByb3RlY3RlZFRoaXMtPnJhdGVDaGFuZ2VkKGlzUGxheWluZywgcGxheWJhY2tSYXRlKTsK
KyAgICAgICAgfSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBmb3IgKGF1dG8mIGNs
aWVudCA6IG1fcGxheWJhY2tDbGllbnRzKQorICAgICAgICBjbGllbnQtPnJhdGVDaGFuZ2VkKGlz
UGxheWluZywgcGxheWJhY2tSYXRlKTsKIH0KIAotdm9pZCBXZWJWaWRlb0Z1bGxzY3JlZW5Db250
cm9sbGVyQ29udGV4dDo6c2V0UmF0ZShib29sIGlzUGxheWluZywgZmxvYXQgcGxheWJhY2tSYXRl
KQordm9pZCBXZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyQ29udGV4dDo6aGFzVmlkZW9DaGFu
Z2VkKGJvb2wgaGFzVmlkZW8pCiB7Ci0gICAgQVNTRVJUKFdlYlRocmVhZElzQ3VycmVudCgpKTsK
LSAgICBSZWZQdHI8V2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlckNvbnRleHQ+IHByb3RlY3Rl
ZFRoaXModGhpcyk7Ci0gICAgZGlzcGF0Y2hfYXN5bmMoZGlzcGF0Y2hfZ2V0X21haW5fcXVldWUo
KSwgW3Byb3RlY3RlZFRoaXMsIHRoaXMsIGlzUGxheWluZywgcGxheWJhY2tSYXRlXSB7Ci0gICAg
ICAgIGlmIChtX2ludGVyZmFjZSkKLSAgICAgICAgICAgIG1faW50ZXJmYWNlLT5zZXRSYXRlKGlz
UGxheWluZywgcGxheWJhY2tSYXRlKTsKLSAgICB9KTsKKyAgICBpZiAoV2ViVGhyZWFkSXNDdXJy
ZW50KCkpIHsKKyAgICAgICAgUmVmUHRyPFdlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJDb250
ZXh0PiBwcm90ZWN0ZWRUaGlzKHRoaXMpOworICAgICAgICBkaXNwYXRjaF9hc3luYyhkaXNwYXRj
aF9nZXRfbWFpbl9xdWV1ZSgpLCBbcHJvdGVjdGVkVGhpcywgaGFzVmlkZW9dIHsKKyAgICAgICAg
ICAgIHByb3RlY3RlZFRoaXMtPmhhc1ZpZGVvQ2hhbmdlZChoYXNWaWRlbyk7CisgICAgICAgIH0p
OworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgZm9yIChhdXRvJiBjbGllbnQgOiBtX2Z1
bGxzY3JlZW5DbGllbnRzKQorICAgICAgICBjbGllbnQtPmhhc1ZpZGVvQ2hhbmdlZChoYXNWaWRl
byk7CiB9CiAKLXZvaWQgV2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlckNvbnRleHQ6OnNldFZp
ZGVvRGltZW5zaW9ucyhib29sIGhhc1ZpZGVvLCBmbG9hdCB3aWR0aCwgZmxvYXQgaGVpZ2h0KQor
dm9pZCBXZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyQ29udGV4dDo6dmlkZW9EaW1lbnNpb25z
Q2hhbmdlZChjb25zdCBGbG9hdFNpemUmIHZpZGVvRGltZW5zaW9ucykKIHsKICAgICBpZiAoV2Vi
VGhyZWFkSXNDdXJyZW50KCkpIHsKICAgICAgICAgUmVmUHRyPFdlYlZpZGVvRnVsbHNjcmVlbkNv
bnRyb2xsZXJDb250ZXh0PiBwcm90ZWN0ZWRUaGlzKHRoaXMpOwotICAgICAgICBkaXNwYXRjaF9h
c3luYyhkaXNwYXRjaF9nZXRfbWFpbl9xdWV1ZSgpLCBbcHJvdGVjdGVkVGhpcywgdGhpcywgaGFz
VmlkZW8sIHdpZHRoLCBoZWlnaHRdIHsKLSAgICAgICAgICAgIGlmIChtX2ludGVyZmFjZSkKLSAg
ICAgICAgICAgICAgICBtX2ludGVyZmFjZS0+c2V0VmlkZW9EaW1lbnNpb25zKGhhc1ZpZGVvLCB3
aWR0aCwgaGVpZ2h0KTsKKyAgICAgICAgZGlzcGF0Y2hfYXN5bmMoZGlzcGF0Y2hfZ2V0X21haW5f
cXVldWUoKSwgW3Byb3RlY3RlZFRoaXMsIHZpZGVvRGltZW5zaW9ucyA9IHZpZGVvRGltZW5zaW9u
c10geworICAgICAgICAgICAgcHJvdGVjdGVkVGhpcy0+dmlkZW9EaW1lbnNpb25zQ2hhbmdlZCh2
aWRlb0RpbWVuc2lvbnMpOwogICAgICAgICB9KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAot
ICAgIGlmIChtX2ludGVyZmFjZSkKLSAgICAgICAgbV9pbnRlcmZhY2UtPnNldFZpZGVvRGltZW5z
aW9ucyhoYXNWaWRlbywgd2lkdGgsIGhlaWdodCk7CisgICAgZm9yIChhdXRvJiBjbGllbnQgOiBt
X2Z1bGxzY3JlZW5DbGllbnRzKQorICAgICAgICBjbGllbnQtPnZpZGVvRGltZW5zaW9uc0NoYW5n
ZWQodmlkZW9EaW1lbnNpb25zKTsKIH0KIAotdm9pZCBXZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9s
bGVyQ29udGV4dDo6c2V0U2Vla2FibGVSYW5nZXMoY29uc3QgVGltZVJhbmdlcyYgdGltZVJhbmdl
cykKK3ZvaWQgV2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlckNvbnRleHQ6OnNlZWthYmxlUmFu
Z2VzQ2hhbmdlZChjb25zdCBUaW1lUmFuZ2VzJiB0aW1lUmFuZ2VzKQogewotICAgIEFTU0VSVChX
ZWJUaHJlYWRJc0N1cnJlbnQoKSk7Ci0gICAgUmVmUHRyPFdlYlZpZGVvRnVsbHNjcmVlbkNvbnRy
b2xsZXJDb250ZXh0PiBwcm90ZWN0ZWRUaGlzKHRoaXMpOwotICAgIGNvbnN0IFBsYXRmb3JtVGlt
ZVJhbmdlcyYgcGxhdGZvcm1UaW1lUmFuZ2VzID0gdGltZVJhbmdlcy5yYW5nZXMoKTsKLSAgICBk
aXNwYXRjaF9hc3luYyhkaXNwYXRjaF9nZXRfbWFpbl9xdWV1ZSgpLCBbcHJvdGVjdGVkVGhpcywg
dGhpcywgcGxhdGZvcm1UaW1lUmFuZ2VzXSB7Ci0gICAgICAgIGlmIChtX2ludGVyZmFjZSkKLSAg
ICAgICAgICAgIG1faW50ZXJmYWNlLT5zZXRTZWVrYWJsZVJhbmdlcyhUaW1lUmFuZ2VzOjpjcmVh
dGUocGxhdGZvcm1UaW1lUmFuZ2VzKSk7Ci0gICAgfSk7CisgICAgaWYgKFdlYlRocmVhZElzQ3Vy
cmVudCgpKSB7CisgICAgICAgIFJlZlB0cjxXZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyQ29u
dGV4dD4gcHJvdGVjdGVkVGhpcyh0aGlzKTsKKyAgICAgICAgZGlzcGF0Y2hfYXN5bmMoZGlzcGF0
Y2hfZ2V0X21haW5fcXVldWUoKSwgW3Byb3RlY3RlZFRoaXMsIHBsYXRmb3JtVGltZVJhbmdlcyA9
IHRpbWVSYW5nZXMucmFuZ2VzKCldIHsKKyAgICAgICAgICAgIHByb3RlY3RlZFRoaXMtPnNlZWth
YmxlUmFuZ2VzQ2hhbmdlZChUaW1lUmFuZ2VzOjpjcmVhdGUocGxhdGZvcm1UaW1lUmFuZ2VzKSk7
CisgICAgICAgIH0pOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgZm9yIChhdXRvICZj
bGllbnQgOiBtX3BsYXliYWNrQ2xpZW50cykKKyAgICAgICAgY2xpZW50LT5zZWVrYWJsZVJhbmdl
c0NoYW5nZWQodGltZVJhbmdlcyk7CiB9CiAKLXZvaWQgV2ViVmlkZW9GdWxsc2NyZWVuQ29udHJv
bGxlckNvbnRleHQ6OnNldENhblBsYXlGYXN0UmV2ZXJzZShib29sIGNhblBsYXlGYXN0UmV2ZXJz
ZSkKK3ZvaWQgV2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlckNvbnRleHQ6OmNhblBsYXlGYXN0
UmV2ZXJzZUNoYW5nZWQoYm9vbCBjYW5QbGF5RmFzdFJldmVyc2UpCiB7Ci0gICAgQVNTRVJUKFdl
YlRocmVhZElzQ3VycmVudCgpKTsKLSAgICBSZWZQdHI8V2ViVmlkZW9GdWxsc2NyZWVuQ29udHJv
bGxlckNvbnRleHQ+IHByb3RlY3RlZFRoaXModGhpcyk7Ci0gICAgZGlzcGF0Y2hfYXN5bmMoZGlz
cGF0Y2hfZ2V0X21haW5fcXVldWUoKSwgW3Byb3RlY3RlZFRoaXMsIHRoaXMsIGNhblBsYXlGYXN0
UmV2ZXJzZV0gewotICAgICAgICBpZiAobV9pbnRlcmZhY2UpCi0gICAgICAgICAgICBtX2ludGVy
ZmFjZS0+c2V0Q2FuUGxheUZhc3RSZXZlcnNlKGNhblBsYXlGYXN0UmV2ZXJzZSk7Ci0gICAgfSk7
CisgICAgaWYgKFdlYlRocmVhZElzQ3VycmVudCgpKSB7CisgICAgICAgIFJlZlB0cjxXZWJWaWRl
b0Z1bGxzY3JlZW5Db250cm9sbGVyQ29udGV4dD4gcHJvdGVjdGVkVGhpcyh0aGlzKTsKKyAgICAg
ICAgZGlzcGF0Y2hfYXN5bmMoZGlzcGF0Y2hfZ2V0X21haW5fcXVldWUoKSwgW3Byb3RlY3RlZFRo
aXMsIGNhblBsYXlGYXN0UmV2ZXJzZV0geworICAgICAgICAgICAgcHJvdGVjdGVkVGhpcy0+Y2Fu
UGxheUZhc3RSZXZlcnNlQ2hhbmdlZChjYW5QbGF5RmFzdFJldmVyc2UpOworICAgICAgICB9KTsK
KyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGZvciAoYXV0byAmY2xpZW50IDogbV9wbGF5
YmFja0NsaWVudHMpCisgICAgICAgIGNsaWVudC0+Y2FuUGxheUZhc3RSZXZlcnNlQ2hhbmdlZChj
YW5QbGF5RmFzdFJldmVyc2UpOwogfQogCi12b2lkIFdlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xs
ZXJDb250ZXh0OjpzZXRBdWRpb01lZGlhU2VsZWN0aW9uT3B0aW9ucyhjb25zdCBWZWN0b3I8U3Ry
aW5nPiYgb3B0aW9ucywgdWludDY0X3Qgc2VsZWN0ZWRJbmRleCkKK3ZvaWQgV2ViVmlkZW9GdWxs
c2NyZWVuQ29udHJvbGxlckNvbnRleHQ6OmF1ZGlvTWVkaWFTZWxlY3Rpb25PcHRpb25zQ2hhbmdl
ZChjb25zdCBWZWN0b3I8U3RyaW5nPiYgb3B0aW9ucywgdWludDY0X3Qgc2VsZWN0ZWRJbmRleCkK
IHsKLSAgICBBU1NFUlQoV2ViVGhyZWFkSXNDdXJyZW50KCkpOwotICAgIFJlZlB0cjxXZWJWaWRl
b0Z1bGxzY3JlZW5Db250cm9sbGVyQ29udGV4dD4gcHJvdGVjdGVkVGhpcyh0aGlzKTsKKyAgICBp
ZiAoV2ViVGhyZWFkSXNDdXJyZW50KCkpIHsKKyAgICAgICAgUmVmUHRyPFdlYlZpZGVvRnVsbHNj
cmVlbkNvbnRyb2xsZXJDb250ZXh0PiBwcm90ZWN0ZWRUaGlzKHRoaXMpOworICAgICAgICBkaXNw
YXRjaF9hc3luYyhkaXNwYXRjaF9nZXRfbWFpbl9xdWV1ZSgpLCBbcHJvdGVjdGVkVGhpcywgb3B0
aW9ucyA9IG9wdGlvbnMsIHNlbGVjdGVkSW5kZXhdIHsKKyAgICAgICAgICAgIHByb3RlY3RlZFRo
aXMtPmF1ZGlvTWVkaWFTZWxlY3Rpb25PcHRpb25zQ2hhbmdlZChvcHRpb25zLCBzZWxlY3RlZElu
ZGV4KTsKKyAgICAgICAgfSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CiAKLSAgICBSZXRhaW5Q
dHI8TlNNdXRhYmxlQXJyYXk+IG9wdGlvbnNBcnJheSA9IGFkb3B0TlMoW1tOU011dGFibGVBcnJh
eSBhbGxvY10gaW5pdFdpdGhDYXBhY2l0eTpvcHRpb25zLnNpemUoKV0pOwotICAgIGZvciAoYXV0
byYgbmFtZSA6IG9wdGlvbnMpCi0gICAgICAgIFtvcHRpb25zQXJyYXkgYWRkT2JqZWN0Om5hbWVd
OwotICAgIAotICAgIGRpc3BhdGNoX2FzeW5jKGRpc3BhdGNoX2dldF9tYWluX3F1ZXVlKCksIFtw
cm90ZWN0ZWRUaGlzLCB0aGlzLCBvcHRpb25zQXJyYXksIHNlbGVjdGVkSW5kZXhdIHsKLSAgICAg
ICAgVmVjdG9yPFN0cmluZz4gb3B0aW9uczsKLSAgICAgICAgZm9yIChOU1N0cmluZyAqbmFtZSA6
IG9wdGlvbnNBcnJheS5nZXQoKSkKLSAgICAgICAgICAgIG9wdGlvbnMuYXBwZW5kKG5hbWUpOwot
ICAgICAgICAKLSAgICAgICAgaWYgKG1faW50ZXJmYWNlKQotICAgICAgICAgICAgbV9pbnRlcmZh
Y2UtPnNldEF1ZGlvTWVkaWFTZWxlY3Rpb25PcHRpb25zKG9wdGlvbnMsIHNlbGVjdGVkSW5kZXgp
OwotICAgIH0pOworICAgIGZvciAoYXV0byYgY2xpZW50IDogbV9wbGF5YmFja0NsaWVudHMpCisg
ICAgICAgIGNsaWVudC0+YXVkaW9NZWRpYVNlbGVjdGlvbk9wdGlvbnNDaGFuZ2VkKG9wdGlvbnMs
IHNlbGVjdGVkSW5kZXgpOwogfQogCi12b2lkIFdlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJD
b250ZXh0OjpzZXRMZWdpYmxlTWVkaWFTZWxlY3Rpb25PcHRpb25zKGNvbnN0IFZlY3RvcjxTdHJp
bmc+JiBvcHRpb25zLCB1aW50NjRfdCBzZWxlY3RlZEluZGV4KQordm9pZCBXZWJWaWRlb0Z1bGxz
Y3JlZW5Db250cm9sbGVyQ29udGV4dDo6bGVnaWJsZU1lZGlhU2VsZWN0aW9uT3B0aW9uc0NoYW5n
ZWQoY29uc3QgVmVjdG9yPFN0cmluZz4mIG9wdGlvbnMsIHVpbnQ2NF90IHNlbGVjdGVkSW5kZXgp
CiB7Ci0gICAgQVNTRVJUKFdlYlRocmVhZElzQ3VycmVudCgpKTsKLSAgICBSZWZQdHI8V2ViVmlk
ZW9GdWxsc2NyZWVuQ29udHJvbGxlckNvbnRleHQ+IHByb3RlY3RlZFRoaXModGhpcyk7Ci0gICAg
Ci0gICAgUmV0YWluUHRyPE5TTXV0YWJsZUFycmF5PiBvcHRpb25zQXJyYXkgPSBhZG9wdE5TKFtb
TlNNdXRhYmxlQXJyYXkgYWxsb2NdIGluaXRXaXRoQ2FwYWNpdHk6b3B0aW9ucy5zaXplKCldKTsK
LSAgICBmb3IgKGF1dG8mIG5hbWUgOiBvcHRpb25zKQotICAgICAgICBbb3B0aW9uc0FycmF5IGFk
ZE9iamVjdDpuYW1lXTsKLSAgICAKLSAgICBkaXNwYXRjaF9hc3luYyhkaXNwYXRjaF9nZXRfbWFp
bl9xdWV1ZSgpLCBbcHJvdGVjdGVkVGhpcywgdGhpcywgb3B0aW9uc0FycmF5LCBzZWxlY3RlZElu
ZGV4XSB7Ci0gICAgICAgIFZlY3RvcjxTdHJpbmc+IG9wdGlvbnM7Ci0gICAgICAgIGZvciAoTlNT
dHJpbmcgKm5hbWUgOiBvcHRpb25zQXJyYXkuZ2V0KCkpCi0gICAgICAgICAgICBvcHRpb25zLmFw
cGVuZChuYW1lKTsKLSAgICAgICAgCi0gICAgICAgIGlmIChtX2ludGVyZmFjZSkKLSAgICAgICAg
ICAgIG1faW50ZXJmYWNlLT5zZXRMZWdpYmxlTWVkaWFTZWxlY3Rpb25PcHRpb25zKG9wdGlvbnMs
IHNlbGVjdGVkSW5kZXgpOwotICAgIH0pOworICAgIGlmIChXZWJUaHJlYWRJc0N1cnJlbnQoKSkg
eworICAgICAgICBSZWZQdHI8V2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlckNvbnRleHQ+IHBy
b3RlY3RlZFRoaXModGhpcyk7CisgICAgICAgIGRpc3BhdGNoX2FzeW5jKGRpc3BhdGNoX2dldF9t
YWluX3F1ZXVlKCksIFtwcm90ZWN0ZWRUaGlzLCBvcHRpb25zID0gb3B0aW9ucywgc2VsZWN0ZWRJ
bmRleF0geworICAgICAgICAgICAgcHJvdGVjdGVkVGhpcy0+bGVnaWJsZU1lZGlhU2VsZWN0aW9u
T3B0aW9uc0NoYW5nZWQob3B0aW9ucywgc2VsZWN0ZWRJbmRleCk7CisgICAgICAgIH0pOworICAg
ICAgICByZXR1cm47CisgICAgfQorCisgICAgZm9yIChhdXRvJiBjbGllbnQgOiBtX3BsYXliYWNr
Q2xpZW50cykKKyAgICAgICAgY2xpZW50LT5sZWdpYmxlTWVkaWFTZWxlY3Rpb25PcHRpb25zQ2hh
bmdlZChvcHRpb25zLCBzZWxlY3RlZEluZGV4KTsKIH0KIAotdm9pZCBXZWJWaWRlb0Z1bGxzY3Jl
ZW5Db250cm9sbGVyQ29udGV4dDo6c2V0RXh0ZXJuYWxQbGF5YmFjayhib29sIGVuYWJsZWQsIEV4
dGVybmFsUGxheWJhY2tUYXJnZXRUeXBlIHR5cGUsIFN0cmluZyBsb2NhbGl6ZWREZXZpY2VOYW1l
KQordm9pZCBXZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyQ29udGV4dDo6ZXh0ZXJuYWxQbGF5
YmFja0NoYW5nZWQoYm9vbCBlbmFibGVkLCBXZWJQbGF5YmFja1Nlc3Npb25Nb2RlbDo6RXh0ZXJu
YWxQbGF5YmFja1RhcmdldFR5cGUgdHlwZSwgY29uc3QgU3RyaW5nJiBsb2NhbGl6ZWREZXZpY2VO
YW1lKQogewotICAgIEFTU0VSVChXZWJUaHJlYWRJc0N1cnJlbnQoKSk7Ci0gICAgY2FsbE9uTWFp
blRocmVhZChbcHJvdGVjdGVkVGhpcyA9IFJlZjxXZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVy
Q29udGV4dD4oKnRoaXMpLCB0aGlzLCBlbmFibGVkLCB0eXBlLCBsb2NhbGl6ZWREZXZpY2VOYW1l
ID0gbG9jYWxpemVkRGV2aWNlTmFtZS5pc29sYXRlZENvcHkoKV0gewotICAgICAgICBpZiAobV9p
bnRlcmZhY2UpCi0gICAgICAgICAgICBtX2ludGVyZmFjZS0+c2V0RXh0ZXJuYWxQbGF5YmFjayhl
bmFibGVkLCB0eXBlLCBsb2NhbGl6ZWREZXZpY2VOYW1lKTsKLSAgICB9KTsKKyAgICBpZiAoV2Vi
VGhyZWFkSXNDdXJyZW50KCkpIHsKKyAgICAgICAgY2FsbE9uTWFpblRocmVhZChbcHJvdGVjdGVk
VGhpcyA9IFJlZjxXZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyQ29udGV4dD4oKnRoaXMpLCB0
aGlzLCBlbmFibGVkLCB0eXBlLCBsb2NhbGl6ZWREZXZpY2VOYW1lID0gbG9jYWxpemVkRGV2aWNl
TmFtZS5pc29sYXRlZENvcHkoKV0geworICAgICAgICAgICAgZm9yIChhdXRvJiBjbGllbnQgOiBt
X3BsYXliYWNrQ2xpZW50cykKKyAgICAgICAgICAgICAgICBjbGllbnQtPmV4dGVybmFsUGxheWJh
Y2tDaGFuZ2VkKGVuYWJsZWQsIHR5cGUsIGxvY2FsaXplZERldmljZU5hbWUpOworICAgICAgICB9
KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGZvciAoYXV0byYgY2xpZW50IDogbV9w
bGF5YmFja0NsaWVudHMpCisgICAgICAgIGNsaWVudC0+ZXh0ZXJuYWxQbGF5YmFja0NoYW5nZWQo
ZW5hYmxlZCwgdHlwZSwgbG9jYWxpemVkRGV2aWNlTmFtZSk7CiB9CiAKLXZvaWQgV2ViVmlkZW9G
dWxsc2NyZWVuQ29udHJvbGxlckNvbnRleHQ6OnNldFdpcmVsZXNzVmlkZW9QbGF5YmFja0Rpc2Fi
bGVkKGJvb2wgZGlzYWJsZWQpCit2b2lkIFdlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJDb250
ZXh0Ojp3aXJlbGVzc1ZpZGVvUGxheWJhY2tEaXNhYmxlZENoYW5nZWQoYm9vbCBkaXNhYmxlZCkK
IHsKLSAgICBBU1NFUlQoV2ViVGhyZWFkSXNDdXJyZW50KCkpOwotICAgIFJlZlB0cjxXZWJWaWRl
b0Z1bGxzY3JlZW5Db250cm9sbGVyQ29udGV4dD4gcHJvdGVjdGVkVGhpcyh0aGlzKTsKLSAgICBk
aXNwYXRjaF9hc3luYyhkaXNwYXRjaF9nZXRfbWFpbl9xdWV1ZSgpLCBbcHJvdGVjdGVkVGhpcywg
dGhpcywgZGlzYWJsZWRdIHsKLSAgICAgICAgaWYgKG1faW50ZXJmYWNlKQotICAgICAgICAgICAg
bV9pbnRlcmZhY2UtPnNldFdpcmVsZXNzVmlkZW9QbGF5YmFja0Rpc2FibGVkKGRpc2FibGVkKTsK
LSAgICB9KTsKKyAgICBpZiAoV2ViVGhyZWFkSXNDdXJyZW50KCkpIHsKKyAgICAgICAgUmVmUHRy
PFdlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJDb250ZXh0PiBwcm90ZWN0ZWRUaGlzKHRoaXMp
OworICAgICAgICBkaXNwYXRjaF9hc3luYyhkaXNwYXRjaF9nZXRfbWFpbl9xdWV1ZSgpLCBbcHJv
dGVjdGVkVGhpcywgZGlzYWJsZWRdIHsKKyAgICAgICAgICAgIHByb3RlY3RlZFRoaXMtPndpcmVs
ZXNzVmlkZW9QbGF5YmFja0Rpc2FibGVkQ2hhbmdlZChkaXNhYmxlZCk7CisgICAgICAgIH0pOwor
ICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgZm9yIChhdXRvJiBjbGllbnQgOiBtX3BsYXli
YWNrQ2xpZW50cykKKyAgICAgICAgY2xpZW50LT53aXJlbGVzc1ZpZGVvUGxheWJhY2tEaXNhYmxl
ZENoYW5nZWQoZGlzYWJsZWQpOwogfQogCiAjcHJhZ21hIG1hcmsgV2ViVmlkZW9GdWxsc2NyZWVu
TW9kZWwKIAordm9pZCBXZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyQ29udGV4dDo6YWRkQ2xp
ZW50KFdlYlZpZGVvRnVsbHNjcmVlbk1vZGVsQ2xpZW50JiBjbGllbnQpCit7CisgICAgQVNTRVJU
KCFtX2Z1bGxzY3JlZW5DbGllbnRzLmNvbnRhaW5zKCZjbGllbnQpKTsKKyAgICBtX2Z1bGxzY3Jl
ZW5DbGllbnRzLmFkZCgmY2xpZW50KTsKK30KKwordm9pZCBXZWJWaWRlb0Z1bGxzY3JlZW5Db250
cm9sbGVyQ29udGV4dDo6cmVtb3ZlQ2xpZW50KFdlYlZpZGVvRnVsbHNjcmVlbk1vZGVsQ2xpZW50
JiBjbGllbnQpCit7CisgICAgQVNTRVJUKG1fZnVsbHNjcmVlbkNsaWVudHMuY29udGFpbnMoJmNs
aWVudCkpOworICAgIG1fZnVsbHNjcmVlbkNsaWVudHMucmVtb3ZlKCZjbGllbnQpOworfQorCiB2
b2lkIFdlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJDb250ZXh0OjpyZXF1ZXN0RnVsbHNjcmVl
bk1vZGUoSFRNTE1lZGlhRWxlbWVudEVudW1zOjpWaWRlb0Z1bGxzY3JlZW5Nb2RlIG1vZGUpCiB7
CiAgICAgQVNTRVJUKGlzVUlUaHJlYWQoKSk7CiAgICAgUmVmUHRyPFdlYlZpZGVvRnVsbHNjcmVl
bkNvbnRyb2xsZXJDb250ZXh0PiBwcm90ZWN0ZWRUaGlzKHRoaXMpOwogICAgIFdlYlRocmVhZFJ1
bihbcHJvdGVjdGVkVGhpcywgdGhpcywgbW9kZV0gewotICAgICAgICBpZiAobV9tb2RlbCkKLSAg
ICAgICAgICAgIG1fbW9kZWwtPnJlcXVlc3RGdWxsc2NyZWVuTW9kZShtb2RlKTsKKyAgICAgICAg
aWYgKG1fZnVsbHNjcmVlbk1vZGVsKQorICAgICAgICAgICAgbV9mdWxsc2NyZWVuTW9kZWwtPnJl
cXVlc3RGdWxsc2NyZWVuTW9kZShtb2RlKTsKICAgICB9KTsKIH0KIApAQCAtNDc5LDggKzQ2OCw4
IEBAIHZvaWQgV2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlckNvbnRleHQ6OnNldFZpZGVvTGF5
ZXJGcmFtZShGbG9hdFJlY3QgZnJhbWUpCiAgICAgICAgICAgICAKICAgICAgICAgICAgIFt2aWRl
b0Z1bGxzY3JlZW5MYXllciBzZXRTdWJsYXllclRyYW5zZm9ybTpDQVRyYW5zZm9ybTNESWRlbnRp
dHldOwogICAgICAgICAgICAgCi0gICAgICAgICAgICBpZiAobV9tb2RlbCkKLSAgICAgICAgICAg
ICAgICBtX21vZGVsLT5zZXRWaWRlb0xheWVyRnJhbWUoZnJhbWUpOworICAgICAgICAgICAgaWYg
KG1fZnVsbHNjcmVlbk1vZGVsKQorICAgICAgICAgICAgICAgIG1fZnVsbHNjcmVlbk1vZGVsLT5z
ZXRWaWRlb0xheWVyRnJhbWUoZnJhbWUpOwogICAgICAgICAgICAgW0NBVHJhbnNhY3Rpb24gY29t
bWl0XTsKICAgICAgICAgfSk7CiAgICAgfSk7CkBAIC00OTEsOCArNDgwLDggQEAgdm9pZCBXZWJW
aWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyQ29udGV4dDo6c2V0VmlkZW9MYXllckdyYXZpdHkoV2Vi
VmlkZW9GdWxsc2NyZWUKICAgICBBU1NFUlQoaXNVSVRocmVhZCgpKTsKICAgICBSZWZQdHI8V2Vi
VmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlckNvbnRleHQ+IHByb3RlY3RlZFRoaXModGhpcyk7CiAg
ICAgV2ViVGhyZWFkUnVuKFtwcm90ZWN0ZWRUaGlzLCB0aGlzLCB2aWRlb0dyYXZpdHldIHsKLSAg
ICAgICAgaWYgKG1fbW9kZWwpCi0gICAgICAgICAgICBtX21vZGVsLT5zZXRWaWRlb0xheWVyR3Jh
dml0eSh2aWRlb0dyYXZpdHkpOworICAgICAgICBpZiAobV9mdWxsc2NyZWVuTW9kZWwpCisgICAg
ICAgICAgICBtX2Z1bGxzY3JlZW5Nb2RlbC0+c2V0VmlkZW9MYXllckdyYXZpdHkodmlkZW9HcmF2
aXR5KTsKICAgICB9KTsKIH0KIApAQCAtNTAxLDI2ICs0OTAsNTAgQEAgdm9pZCBXZWJWaWRlb0Z1
bGxzY3JlZW5Db250cm9sbGVyQ29udGV4dDo6ZnVsbHNjcmVlbk1vZGVDaGFuZ2VkKEhUTUxNZWRp
YUVsZW1lbnQKICAgICBBU1NFUlQoaXNVSVRocmVhZCgpKTsKICAgICBSZWZQdHI8V2ViVmlkZW9G
dWxsc2NyZWVuQ29udHJvbGxlckNvbnRleHQ+IHByb3RlY3RlZFRoaXModGhpcyk7CiAgICAgV2Vi
VGhyZWFkUnVuKFtwcm90ZWN0ZWRUaGlzLCB0aGlzLCBtb2RlXSB7Ci0gICAgICAgIGlmIChtX21v
ZGVsKQotICAgICAgICAgICAgbV9tb2RlbC0+ZnVsbHNjcmVlbk1vZGVDaGFuZ2VkKG1vZGUpOwor
ICAgICAgICBpZiAobV9mdWxsc2NyZWVuTW9kZWwpCisgICAgICAgICAgICBtX2Z1bGxzY3JlZW5N
b2RlbC0+ZnVsbHNjcmVlbk1vZGVDaGFuZ2VkKG1vZGUpOwogICAgIH0pOwogfQogCiBib29sIFdl
YlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJDb250ZXh0Ojppc1Zpc2libGUoKSBjb25zdAogewog
ICAgIEFTU0VSVChpc1VJVGhyZWFkKCkpOwotICAgIHJldHVybiBtX21vZGVsID8gbV9tb2RlbC0+
aXNWaXNpYmxlKCkgOiBmYWxzZTsKKyAgICByZXR1cm4gbV9mdWxsc2NyZWVuTW9kZWwgPyBtX2Z1
bGxzY3JlZW5Nb2RlbC0+aXNWaXNpYmxlKCkgOiBmYWxzZTsKK30KKworYm9vbCBXZWJWaWRlb0Z1
bGxzY3JlZW5Db250cm9sbGVyQ29udGV4dDo6aGFzVmlkZW8oKSBjb25zdAoreworICAgIEFTU0VS
VChpc1VJVGhyZWFkKCkpOworICAgIHJldHVybiBtX2Z1bGxzY3JlZW5Nb2RlbCA/IG1fZnVsbHNj
cmVlbk1vZGVsLT5oYXNWaWRlbygpIDogZmFsc2U7Cit9CisKK0Zsb2F0U2l6ZSBXZWJWaWRlb0Z1
bGxzY3JlZW5Db250cm9sbGVyQ29udGV4dDo6dmlkZW9EaW1lbnNpb25zKCkgY29uc3QKK3sKKyAg
ICBBU1NFUlQoaXNVSVRocmVhZCgpKTsKKyAgICByZXR1cm4gbV9mdWxsc2NyZWVuTW9kZWwgPyBt
X2Z1bGxzY3JlZW5Nb2RlbC0+dmlkZW9EaW1lbnNpb25zKCkgOiBGbG9hdFNpemUoKTsKK30KKwor
I3ByYWdtYSBtYXJrIC0gV2ViUGxheWJhY2tTZXNzaW9uTW9kZWwKKwordm9pZCBXZWJWaWRlb0Z1
bGxzY3JlZW5Db250cm9sbGVyQ29udGV4dDo6YWRkQ2xpZW50KFdlYlBsYXliYWNrU2Vzc2lvbk1v
ZGVsQ2xpZW50JiBjbGllbnQpCit7CisgICAgQVNTRVJUKCFtX3BsYXliYWNrQ2xpZW50cy5jb250
YWlucygmY2xpZW50KSk7CisgICAgbV9wbGF5YmFja0NsaWVudHMuYWRkKCZjbGllbnQpOwogfQog
Ci0jcHJhZ21hIG1hcmsgLSBXZWJQbGF5YmFja1Nlc3Npb25Nb2RlbENvbnRleHQKK3ZvaWQgV2Vi
VmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlckNvbnRleHQ6OnJlbW92ZUNsaWVudChXZWJQbGF5YmFj
a1Nlc3Npb25Nb2RlbENsaWVudCYgY2xpZW50KQoreworICAgIEFTU0VSVChtX3BsYXliYWNrQ2xp
ZW50cy5jb250YWlucygmY2xpZW50KSk7CisgICAgbV9wbGF5YmFja0NsaWVudHMucmVtb3ZlKCZj
bGllbnQpOworfQogCiB2b2lkIFdlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJDb250ZXh0Ojpw
bGF5KCkKIHsKICAgICBBU1NFUlQoaXNVSVRocmVhZCgpKTsKICAgICBSZWZQdHI8V2ViVmlkZW9G
dWxsc2NyZWVuQ29udHJvbGxlckNvbnRleHQ+IHByb3RlY3RlZFRoaXModGhpcyk7CiAgICAgV2Vi
VGhyZWFkUnVuKFtwcm90ZWN0ZWRUaGlzLCB0aGlzXSB7Ci0gICAgICAgIGlmIChtX21vZGVsKQot
ICAgICAgICAgICAgbV9tb2RlbC0+cGxheWJhY2tTZXNzaW9uTW9kZWwoKS5wbGF5KCk7CisgICAg
ICAgIGlmIChtX3BsYXliYWNrTW9kZWwpCisgICAgICAgICAgICBtX3BsYXliYWNrTW9kZWwtPnBs
YXkoKTsKICAgICB9KTsKIH0KIApAQCAtNTI5LDggKzU0Miw4IEBAIHZvaWQgV2ViVmlkZW9GdWxs
c2NyZWVuQ29udHJvbGxlckNvbnRleHQ6OnBhdXNlKCkKICAgICBBU1NFUlQoaXNVSVRocmVhZCgp
KTsKICAgICBSZWZQdHI8V2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlckNvbnRleHQ+IHByb3Rl
Y3RlZFRoaXModGhpcyk7CiAgICAgV2ViVGhyZWFkUnVuKFtwcm90ZWN0ZWRUaGlzLCB0aGlzXSB7
Ci0gICAgICAgIGlmIChtX21vZGVsKQotICAgICAgICAgICAgbV9tb2RlbC0+cGxheWJhY2tTZXNz
aW9uTW9kZWwoKS5wYXVzZSgpOworICAgICAgICBpZiAobV9wbGF5YmFja01vZGVsKQorICAgICAg
ICAgICAgbV9wbGF5YmFja01vZGVsLT5wYXVzZSgpOwogICAgIH0pOwogfQogCkBAIC01MzksOCAr
NTUyLDggQEAgdm9pZCBXZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyQ29udGV4dDo6dG9nZ2xl
UGxheVN0YXRlKCkKICAgICBBU1NFUlQoaXNVSVRocmVhZCgpKTsKICAgICBSZWZQdHI8V2ViVmlk
ZW9GdWxsc2NyZWVuQ29udHJvbGxlckNvbnRleHQ+IHByb3RlY3RlZFRoaXModGhpcyk7CiAgICAg
V2ViVGhyZWFkUnVuKFtwcm90ZWN0ZWRUaGlzLCB0aGlzXSB7Ci0gICAgICAgIGlmIChtX21vZGVs
KQotICAgICAgICAgICAgbV9tb2RlbC0+cGxheWJhY2tTZXNzaW9uTW9kZWwoKS50b2dnbGVQbGF5
U3RhdGUoKTsKKyAgICAgICAgaWYgKG1fcGxheWJhY2tNb2RlbCkKKyAgICAgICAgICAgIG1fcGxh
eWJhY2tNb2RlbC0+dG9nZ2xlUGxheVN0YXRlKCk7CiAgICAgfSk7CiB9CiAKQEAgLTU0OSw4ICs1
NjIsOCBAQCB2b2lkIFdlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJDb250ZXh0OjpiZWdpblNj
cnViYmluZygpCiAgICAgQVNTRVJUKGlzVUlUaHJlYWQoKSk7CiAgICAgUmVmUHRyPFdlYlZpZGVv
RnVsbHNjcmVlbkNvbnRyb2xsZXJDb250ZXh0PiBwcm90ZWN0ZWRUaGlzKHRoaXMpOwogICAgIFdl
YlRocmVhZFJ1bihbcHJvdGVjdGVkVGhpcywgdGhpc10gewotICAgICAgICBpZiAobV9tb2RlbCkK
LSAgICAgICAgICAgIG1fbW9kZWwtPnBsYXliYWNrU2Vzc2lvbk1vZGVsKCkuYmVnaW5TY3J1YmJp
bmcoKTsKKyAgICAgICAgaWYgKG1fcGxheWJhY2tNb2RlbCkKKyAgICAgICAgICAgIG1fcGxheWJh
Y2tNb2RlbC0+YmVnaW5TY3J1YmJpbmcoKTsKICAgICB9KTsKIH0KIApAQCAtNTU5LDggKzU3Miw4
IEBAIHZvaWQgV2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlckNvbnRleHQ6OmVuZFNjcnViYmlu
ZygpCiAgICAgQVNTRVJUKGlzVUlUaHJlYWQoKSk7CiAgICAgUmVmUHRyPFdlYlZpZGVvRnVsbHNj
cmVlbkNvbnRyb2xsZXJDb250ZXh0PiBwcm90ZWN0ZWRUaGlzKHRoaXMpOwogICAgIFdlYlRocmVh
ZFJ1bihbcHJvdGVjdGVkVGhpcywgdGhpc10gewotICAgICAgICBpZiAobV9tb2RlbCkKLSAgICAg
ICAgICAgIG1fbW9kZWwtPnBsYXliYWNrU2Vzc2lvbk1vZGVsKCkuZW5kU2NydWJiaW5nKCk7Cisg
ICAgICAgIGlmIChtX3BsYXliYWNrTW9kZWwpCisgICAgICAgICAgICBtX3BsYXliYWNrTW9kZWwt
PmVuZFNjcnViYmluZygpOwogICAgIH0pOwogfQogCkBAIC01NjksOCArNTgyLDggQEAgdm9pZCBX
ZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyQ29udGV4dDo6c2Vla1RvVGltZShkb3VibGUgdGlt
ZSkKICAgICBBU1NFUlQoaXNVSVRocmVhZCgpKTsKICAgICBSZWZQdHI8V2ViVmlkZW9GdWxsc2Ny
ZWVuQ29udHJvbGxlckNvbnRleHQ+IHByb3RlY3RlZFRoaXModGhpcyk7CiAgICAgV2ViVGhyZWFk
UnVuKFtwcm90ZWN0ZWRUaGlzLCB0aGlzLCB0aW1lXSB7Ci0gICAgICAgIGlmIChtX21vZGVsKQot
ICAgICAgICAgICAgbV9tb2RlbC0+cGxheWJhY2tTZXNzaW9uTW9kZWwoKS5zZWVrVG9UaW1lKHRp
bWUpOworICAgICAgICBpZiAobV9wbGF5YmFja01vZGVsKQorICAgICAgICAgICAgbV9wbGF5YmFj
a01vZGVsLT5zZWVrVG9UaW1lKHRpbWUpOwogICAgIH0pOwogfQogCkBAIC01NzksOCArNTkyLDgg
QEAgdm9pZCBXZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyQ29udGV4dDo6ZmFzdFNlZWsoZG91
YmxlIHRpbWUpCiAgICAgQVNTRVJUKGlzVUlUaHJlYWQoKSk7CiAgICAgUmVmUHRyPFdlYlZpZGVv
RnVsbHNjcmVlbkNvbnRyb2xsZXJDb250ZXh0PiBwcm90ZWN0ZWRUaGlzKHRoaXMpOwogICAgIFdl
YlRocmVhZFJ1bihbcHJvdGVjdGVkVGhpcywgdGhpcywgdGltZV0gewotICAgICAgICBpZiAobV9t
b2RlbCkKLSAgICAgICAgICAgIG1fbW9kZWwtPnBsYXliYWNrU2Vzc2lvbk1vZGVsKCkuZmFzdFNl
ZWsodGltZSk7CisgICAgICAgIGlmIChtX3BsYXliYWNrTW9kZWwpCisgICAgICAgICAgICBtX3Bs
YXliYWNrTW9kZWwtPmZhc3RTZWVrKHRpbWUpOwogICAgIH0pOwogfQogCkBAIC01ODksOCArNjAy
LDggQEAgdm9pZCBXZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyQ29udGV4dDo6YmVnaW5TY2Fu
bmluZ0ZvcndhcmQoKQogICAgIEFTU0VSVChpc1VJVGhyZWFkKCkpOwogICAgIFJlZlB0cjxXZWJW
aWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyQ29udGV4dD4gcHJvdGVjdGVkVGhpcyh0aGlzKTsKICAg
ICBXZWJUaHJlYWRSdW4oW3Byb3RlY3RlZFRoaXMsIHRoaXNdIHsKLSAgICAgICAgaWYgKG1fbW9k
ZWwpCi0gICAgICAgICAgICBtX21vZGVsLT5wbGF5YmFja1Nlc3Npb25Nb2RlbCgpLmJlZ2luU2Nh
bm5pbmdGb3J3YXJkKCk7CisgICAgICAgIGlmIChtX3BsYXliYWNrTW9kZWwpCisgICAgICAgICAg
ICBtX3BsYXliYWNrTW9kZWwtPmJlZ2luU2Nhbm5pbmdGb3J3YXJkKCk7CiAgICAgfSk7CiB9CiAK
QEAgLTU5OSw4ICs2MTIsOCBAQCB2b2lkIFdlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJDb250
ZXh0OjpiZWdpblNjYW5uaW5nQmFja3dhcmQoKQogICAgIEFTU0VSVChpc1VJVGhyZWFkKCkpOwog
ICAgIFJlZlB0cjxXZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyQ29udGV4dD4gcHJvdGVjdGVk
VGhpcyh0aGlzKTsKICAgICBXZWJUaHJlYWRSdW4oW3Byb3RlY3RlZFRoaXMsIHRoaXNdIHsKLSAg
ICAgICAgaWYgKG1fbW9kZWwpCi0gICAgICAgICAgICBtX21vZGVsLT5wbGF5YmFja1Nlc3Npb25N
b2RlbCgpLmJlZ2luU2Nhbm5pbmdCYWNrd2FyZCgpOworICAgICAgICBpZiAobV9wbGF5YmFja01v
ZGVsKQorICAgICAgICAgICAgbV9wbGF5YmFja01vZGVsLT5iZWdpblNjYW5uaW5nQmFja3dhcmQo
KTsKICAgICB9KTsKIH0KIApAQCAtNjA5LDggKzYyMiw4IEBAIHZvaWQgV2ViVmlkZW9GdWxsc2Ny
ZWVuQ29udHJvbGxlckNvbnRleHQ6OmVuZFNjYW5uaW5nKCkKICAgICBBU1NFUlQoaXNVSVRocmVh
ZCgpKTsKICAgICBSZWZQdHI8V2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlckNvbnRleHQ+IHBy
b3RlY3RlZFRoaXModGhpcyk7CiAgICAgV2ViVGhyZWFkUnVuKFtwcm90ZWN0ZWRUaGlzLCB0aGlz
XSB7Ci0gICAgICAgIGlmIChtX21vZGVsKQotICAgICAgICAgICAgbV9tb2RlbC0+cGxheWJhY2tT
ZXNzaW9uTW9kZWwoKS5lbmRTY2FubmluZygpOworICAgICAgICBpZiAobV9wbGF5YmFja01vZGVs
KQorICAgICAgICAgICAgbV9wbGF5YmFja01vZGVsLT5lbmRTY2FubmluZygpOwogICAgIH0pOwog
fQogCkBAIC02MTksOCArNjMyLDggQEAgdm9pZCBXZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVy
Q29udGV4dDo6c2VsZWN0QXVkaW9NZWRpYU9wdGlvbih1aW50NjRfdCBpbmRleCkKICAgICBBU1NF
UlQoaXNVSVRocmVhZCgpKTsKICAgICBSZWZQdHI8V2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxl
ckNvbnRleHQ+IHByb3RlY3RlZFRoaXModGhpcyk7CiAgICAgV2ViVGhyZWFkUnVuKFtwcm90ZWN0
ZWRUaGlzLCB0aGlzLCBpbmRleF0gewotICAgICAgICBpZiAobV9tb2RlbCkKLSAgICAgICAgICAg
IG1fbW9kZWwtPnBsYXliYWNrU2Vzc2lvbk1vZGVsKCkuc2VsZWN0QXVkaW9NZWRpYU9wdGlvbihp
bmRleCk7CisgICAgICAgIGlmIChtX3BsYXliYWNrTW9kZWwpCisgICAgICAgICAgICBtX3BsYXli
YWNrTW9kZWwtPnNlbGVjdEF1ZGlvTWVkaWFPcHRpb24oaW5kZXgpOwogICAgIH0pOwogfQogCkBA
IC02MjksMTQ0ICs2NDIsMTU0IEBAIHZvaWQgV2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlckNv
bnRleHQ6OnNlbGVjdExlZ2libGVNZWRpYU9wdGlvbih1aW50NjRfdCBpbmRlCiAgICAgQVNTRVJU
KGlzVUlUaHJlYWQoKSk7CiAgICAgUmVmUHRyPFdlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJD
b250ZXh0PiBwcm90ZWN0ZWRUaGlzKHRoaXMpOwogICAgIFdlYlRocmVhZFJ1bihbcHJvdGVjdGVk
VGhpcywgdGhpcywgaW5kZXhdIHsKLSAgICAgICAgaWYgKG1fbW9kZWwpCi0gICAgICAgICAgICBt
X21vZGVsLT5wbGF5YmFja1Nlc3Npb25Nb2RlbCgpLnNlbGVjdExlZ2libGVNZWRpYU9wdGlvbihp
bmRleCk7CisgICAgICAgIGlmIChtX3BsYXliYWNrTW9kZWwpCisgICAgICAgICAgICBtX3BsYXli
YWNrTW9kZWwtPnNlbGVjdExlZ2libGVNZWRpYU9wdGlvbihpbmRleCk7CiAgICAgfSk7CiB9CiAK
LSNwcmFnbWEgbWFyayBPdGhlcgotCi12b2lkIFdlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJD
b250ZXh0OjpzZXRVcEZ1bGxzY3JlZW4oSFRNTFZpZGVvRWxlbWVudCYgdmlkZW9FbGVtZW50LCBV
SVZpZXcgKnZpZXcsIEhUTUxNZWRpYUVsZW1lbnRFbnVtczo6VmlkZW9GdWxsc2NyZWVuTW9kZSBt
b2RlKQorZG91YmxlIFdlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJDb250ZXh0OjpkdXJhdGlv
bigpIGNvbnN0CiB7Ci0gICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKLSAgICBSZXRhaW5QdHI8
VUlWaWV3PiB2aWV3UmVmID0gdmlldzsKLSAgICBtX3ZpZGVvRWxlbWVudCA9ICZ2aWRlb0VsZW1l
bnQ7Ci0KLSAgICBSZWZQdHI8V2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlckNvbnRleHQ+IHBy
b3RlY3RlZFRoaXModGhpcyk7Ci0gICAgZGlzcGF0Y2hfYXN5bmMoZGlzcGF0Y2hfZ2V0X21haW5f
cXVldWUoKSwgW3Byb3RlY3RlZFRoaXMsIHRoaXMsIHZpZXdSZWYsIG1vZGVdIHsKLSAgICAgICAg
QVNTRVJUKGlzVUlUaHJlYWQoKSk7Ci0KLSAgICAgICAgUmVmPFdlYlBsYXliYWNrU2Vzc2lvbklu
dGVyZmFjZUFWS2l0PiBzZXNzaW9uSW50ZXJmYWNlID0gV2ViUGxheWJhY2tTZXNzaW9uSW50ZXJm
YWNlQVZLaXQ6OmNyZWF0ZSgpOwotICAgICAgICBtX2ludGVyZmFjZSA9IFdlYlZpZGVvRnVsbHNj
cmVlbkludGVyZmFjZUFWS2l0OjpjcmVhdGUoc2Vzc2lvbkludGVyZmFjZS5nZXQoKSk7Ci0KLSAg
ICAgICAgbV9zZXNzaW9uTW9kZWwgPSBXZWJWaWRlb0Z1bGxzY3JlZW5TZXNzaW9uTW9kZWw6OmNy
ZWF0ZSgqdGhpcyk7Ci0gICAgICAgIHNlc3Npb25JbnRlcmZhY2UtPnNldFdlYlBsYXliYWNrU2Vz
c2lvbk1vZGVsKG1fc2Vzc2lvbk1vZGVsLmdldCgpKTsKLQotICAgICAgICBtX2ludGVyZmFjZS0+
c2V0V2ViVmlkZW9GdWxsc2NyZWVuTW9kZWwodGhpcyk7Ci0gICAgICAgIG1faW50ZXJmYWNlLT5z
ZXRXZWJWaWRlb0Z1bGxzY3JlZW5DaGFuZ2VPYnNlcnZlcih0aGlzKTsKKyAgICBBU1NFUlQoaXNV
SVRocmVhZCgpKTsKKyAgICByZXR1cm4gbV9wbGF5YmFja01vZGVsID8gbV9wbGF5YmFja01vZGVs
LT5kdXJhdGlvbigpIDogMDsKK30KIAotICAgICAgICBtX3ZpZGVvRnVsbHNjcmVlblZpZXcgPSBh
ZG9wdE5TKFtbZ2V0VUlWaWV3Q2xhc3MoKSBhbGxvY10gaW5pdF0pOwotICAgICAgICAKLSAgICAg
ICAgUmVmUHRyPFdlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJDb250ZXh0PiBwcm90ZWN0ZWRU
aGlzKHRoaXMpOwotICAgICAgICBXZWJUaHJlYWRSdW4oW3Byb3RlY3RlZFRoaXMsIHRoaXMsIHZp
ZXdSZWYsIG1vZGVdIHsKLSAgICAgICAgICAgIG1fbW9kZWwgPSBXZWJWaWRlb0Z1bGxzY3JlZW5N
b2RlbFZpZGVvRWxlbWVudDo6Y3JlYXRlKFdlYlBsYXliYWNrU2Vzc2lvbk1vZGVsTWVkaWFFbGVt
ZW50OjpjcmVhdGUoKS5nZXQoKSk7Ci0gICAgICAgICAgICBtX21vZGVsLT5zZXRXZWJWaWRlb0Z1
bGxzY3JlZW5JbnRlcmZhY2UodGhpcyk7Ci0gICAgICAgICAgICBtX21vZGVsLT5zZXRWaWRlb0Vs
ZW1lbnQobV92aWRlb0VsZW1lbnQuZ2V0KCkpOwotICAgICAgICAgICAgbV9tb2RlbC0+cGxheWJh
Y2tTZXNzaW9uTW9kZWwoKS5zZXRNZWRpYUVsZW1lbnQobV92aWRlb0VsZW1lbnQuZ2V0KCkpOwot
Ci0gICAgICAgICAgICBJbnRSZWN0IHZpZGVvRWxlbWVudENsaWVudFJlY3QgPSBlbGVtZW50UmVj
dEluV2luZG93KG1fdmlkZW9FbGVtZW50LmdldCgpKTsKLSAgICAgICAgICAgIEZsb2F0UmVjdCB2
aWRlb0xheWVyRnJhbWUgPSBGbG9hdFJlY3QoRmxvYXRQb2ludCgpLCB2aWRlb0VsZW1lbnRDbGll
bnRSZWN0LnNpemUoKSk7Ci0gICAgICAgICAgICBtX21vZGVsLT5zZXRWaWRlb0xheWVyRnJhbWUo
dmlkZW9MYXllckZyYW1lKTsKLSAgICAgICAgICAgIAotICAgICAgICAgICAgYm9vbCBhbGxvd3NQ
aWN0dXJlSW5QaWN0dXJlID0gbV92aWRlb0VsZW1lbnQtPm1lZGlhU2Vzc2lvbigpLmFsbG93c1Bp
Y3R1cmVJblBpY3R1cmUoKm1fdmlkZW9FbGVtZW50LmdldCgpKTsKLSAgICAgICAgICAgIGRpc3Bh
dGNoX2FzeW5jKGRpc3BhdGNoX2dldF9tYWluX3F1ZXVlKCksIFtwcm90ZWN0ZWRUaGlzLCB0aGlz
LCB2aWRlb0VsZW1lbnRDbGllbnRSZWN0LCB2aWV3UmVmLCBtb2RlLCBhbGxvd3NQaWN0dXJlSW5Q
aWN0dXJlXSB7Ci0gICAgICAgICAgICAgICAgbV9pbnRlcmZhY2UtPnNldHVwRnVsbHNjcmVlbigq
bV92aWRlb0Z1bGxzY3JlZW5WaWV3LmdldCgpLCB2aWRlb0VsZW1lbnRDbGllbnRSZWN0LCB2aWV3
UmVmLmdldCgpLCBtb2RlLCBhbGxvd3NQaWN0dXJlSW5QaWN0dXJlKTsKLSAgICAgICAgICAgIH0p
OwotICAgICAgICB9KTsKLSAgICB9KTsKK2RvdWJsZSBXZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9s
bGVyQ29udGV4dDo6Y3VycmVudFRpbWUoKSBjb25zdAoreworICAgIEFTU0VSVChpc1VJVGhyZWFk
KCkpOworICAgIHJldHVybiBtX3BsYXliYWNrTW9kZWwgPyBtX3BsYXliYWNrTW9kZWwtPmN1cnJl
bnRUaW1lKCkgOiAwOwogfQogCi12b2lkIFdlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJDb250
ZXh0OjpleGl0RnVsbHNjcmVlbigpCitkb3VibGUgV2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxl
ckNvbnRleHQ6OmJ1ZmZlcmVkVGltZSgpIGNvbnN0CiB7Ci0gICAgQVNTRVJUKFdlYlRocmVhZElz
Q3VycmVudCgpIHx8IGlzTWFpblRocmVhZCgpKTsKLSAgICBJbnRSZWN0IGNsaWVudFJlY3QgPSBl
bGVtZW50UmVjdEluV2luZG93KG1fdmlkZW9FbGVtZW50LmdldCgpKTsKLSAgICBSZWZQdHI8V2Vi
VmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlckNvbnRleHQ+IHByb3RlY3RlZFRoaXModGhpcyk7Ci0g
ICAgZGlzcGF0Y2hfYXN5bmMoZGlzcGF0Y2hfZ2V0X21haW5fcXVldWUoKSwgW3Byb3RlY3RlZFRo
aXMsIHRoaXMsIGNsaWVudFJlY3RdIHsKLSAgICAgICAgQVNTRVJUKGlzVUlUaHJlYWQoKSk7Ci0g
ICAgICAgIG1faW50ZXJmYWNlLT5leGl0RnVsbHNjcmVlbihjbGllbnRSZWN0KTsKLSAgICB9KTsK
KyAgICBBU1NFUlQoaXNVSVRocmVhZCgpKTsKKyAgICByZXR1cm4gbV9wbGF5YmFja01vZGVsID8g
bV9wbGF5YmFja01vZGVsLT5idWZmZXJlZFRpbWUoKSA6IDA7CiB9CiAKLXZvaWQgV2ViVmlkZW9G
dWxsc2NyZWVuQ29udHJvbGxlckNvbnRleHQ6OnJlcXVlc3RIaWRlQW5kRXhpdEZ1bGxzY3JlZW4o
KQorYm9vbCBXZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyQ29udGV4dDo6aXNQbGF5aW5nKCkg
Y29uc3QKIHsKICAgICBBU1NFUlQoaXNVSVRocmVhZCgpKTsKLSAgICBtX2ludGVyZmFjZS0+cmVx
dWVzdEhpZGVBbmRFeGl0RnVsbHNjcmVlbigpOworICAgIHJldHVybiBtX3BsYXliYWNrTW9kZWwg
PyBtX3BsYXliYWNrTW9kZWwtPmlzUGxheWluZygpIDogZmFsc2U7CiB9CiAKLSNwcmFnbWEgbWFy
ayBXZWJQbGF5YmFja1Nlc3Npb25Nb2RlbAorZmxvYXQgV2ViVmlkZW9GdWxsc2NyZWVuQ29udHJv
bGxlckNvbnRleHQ6OnBsYXliYWNrUmF0ZSgpIGNvbnN0Cit7CisgICAgQVNTRVJUKGlzVUlUaHJl
YWQoKSk7CisgICAgcmV0dXJuIG1fcGxheWJhY2tNb2RlbCA/IG1fcGxheWJhY2tNb2RlbC0+cGxh
eWJhY2tSYXRlKCkgOiAwOworfQogCi12b2lkIFdlYlZpZGVvRnVsbHNjcmVlblNlc3Npb25Nb2Rl
bDo6cGxheSgpCitSZWY8VGltZVJhbmdlcz4gV2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlckNv
bnRleHQ6OnNlZWthYmxlUmFuZ2VzKCkgY29uc3QKIHsKLSAgICBpZiAobV9jb250cm9sbGVyKQot
ICAgICAgICBtX2NvbnRyb2xsZXItPnBsYXkoKTsKKyAgICBBU1NFUlQoaXNVSVRocmVhZCgpKTsK
KyAgICByZXR1cm4gbV9wbGF5YmFja01vZGVsID8gbV9wbGF5YmFja01vZGVsLT5zZWVrYWJsZVJh
bmdlcygpIDogVGltZVJhbmdlczo6Y3JlYXRlKCk7CiB9CiAKLXZvaWQgV2ViVmlkZW9GdWxsc2Ny
ZWVuU2Vzc2lvbk1vZGVsOjpwYXVzZSgpCitib29sIFdlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xs
ZXJDb250ZXh0OjpjYW5QbGF5RmFzdFJldmVyc2UoKSBjb25zdAogewotICAgIGlmIChtX2NvbnRy
b2xsZXIpCi0gICAgICAgIG1fY29udHJvbGxlci0+cGF1c2UoKTsKKyAgICBBU1NFUlQoaXNVSVRo
cmVhZCgpKTsKKyAgICByZXR1cm4gbV9wbGF5YmFja01vZGVsID8gbV9wbGF5YmFja01vZGVsLT5j
YW5QbGF5RmFzdFJldmVyc2UoKSA6IGZhbHNlOwogfQogCi12b2lkIFdlYlZpZGVvRnVsbHNjcmVl
blNlc3Npb25Nb2RlbDo6dG9nZ2xlUGxheVN0YXRlKCkKK1ZlY3RvcjxTdHJpbmc+IFdlYlZpZGVv
RnVsbHNjcmVlbkNvbnRyb2xsZXJDb250ZXh0OjphdWRpb01lZGlhU2VsZWN0aW9uT3B0aW9ucygp
IGNvbnN0CiB7Ci0gICAgaWYgKG1fY29udHJvbGxlcikKLSAgICAgICAgbV9jb250cm9sbGVyLT50
b2dnbGVQbGF5U3RhdGUoKTsKKyAgICBBU1NFUlQoaXNVSVRocmVhZCgpKTsKKyAgICByZXR1cm4g
bV9wbGF5YmFja01vZGVsID8gbV9wbGF5YmFja01vZGVsLT5hdWRpb01lZGlhU2VsZWN0aW9uT3B0
aW9ucygpIDogVmVjdG9yPFN0cmluZz4oKTsKIH0KIAotdm9pZCBXZWJWaWRlb0Z1bGxzY3JlZW5T
ZXNzaW9uTW9kZWw6OmJlZ2luU2NydWJiaW5nKCkKK3VpbnQ2NF90IFdlYlZpZGVvRnVsbHNjcmVl
bkNvbnRyb2xsZXJDb250ZXh0OjphdWRpb01lZGlhU2VsZWN0ZWRJbmRleCgpIGNvbnN0CiB7Ci0g
ICAgaWYgKG1fY29udHJvbGxlcikKLSAgICAgICAgbV9jb250cm9sbGVyLT5iZWdpblNjcnViYmlu
ZygpOworICAgIEFTU0VSVChpc1VJVGhyZWFkKCkpOworICAgIHJldHVybiBtX3BsYXliYWNrTW9k
ZWwgPyBtX3BsYXliYWNrTW9kZWwtPmF1ZGlvTWVkaWFTZWxlY3RlZEluZGV4KCkgOiAtMTsKIH0K
IAotdm9pZCBXZWJWaWRlb0Z1bGxzY3JlZW5TZXNzaW9uTW9kZWw6OmVuZFNjcnViYmluZygpCitW
ZWN0b3I8U3RyaW5nPiBXZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyQ29udGV4dDo6bGVnaWJs
ZU1lZGlhU2VsZWN0aW9uT3B0aW9ucygpIGNvbnN0CiB7Ci0gICAgaWYgKG1fY29udHJvbGxlcikK
LSAgICAgICAgbV9jb250cm9sbGVyLT5lbmRTY3J1YmJpbmcoKTsKKyAgICBBU1NFUlQoaXNVSVRo
cmVhZCgpKTsKKyAgICByZXR1cm4gbV9wbGF5YmFja01vZGVsID8gbV9wbGF5YmFja01vZGVsLT5s
ZWdpYmxlTWVkaWFTZWxlY3Rpb25PcHRpb25zKCkgOiBWZWN0b3I8U3RyaW5nPigpOwogfQogCi12
b2lkIFdlYlZpZGVvRnVsbHNjcmVlblNlc3Npb25Nb2RlbDo6c2Vla1RvVGltZShkb3VibGUgdGlt
ZSkKK3VpbnQ2NF90IFdlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJDb250ZXh0OjpsZWdpYmxl
TWVkaWFTZWxlY3RlZEluZGV4KCkgY29uc3QKIHsKLSAgICBpZiAobV9jb250cm9sbGVyKQotICAg
ICAgICBtX2NvbnRyb2xsZXItPnNlZWtUb1RpbWUodGltZSk7CisgICAgQVNTRVJUKGlzVUlUaHJl
YWQoKSk7CisgICAgcmV0dXJuIG1fcGxheWJhY2tNb2RlbCA/IG1fcGxheWJhY2tNb2RlbC0+bGVn
aWJsZU1lZGlhU2VsZWN0ZWRJbmRleCgpIDogLTE7CiB9CiAKLXZvaWQgV2ViVmlkZW9GdWxsc2Ny
ZWVuU2Vzc2lvbk1vZGVsOjpmYXN0U2Vlayhkb3VibGUgdGltZSkKK2Jvb2wgV2ViVmlkZW9GdWxs
c2NyZWVuQ29udHJvbGxlckNvbnRleHQ6OmV4dGVybmFsUGxheWJhY2tFbmFibGVkKCkgY29uc3QK
IHsKLSAgICBpZiAobV9jb250cm9sbGVyKQotICAgICAgICBtX2NvbnRyb2xsZXItPmZhc3RTZWVr
KHRpbWUpOworICAgIEFTU0VSVChpc1VJVGhyZWFkKCkpOworICAgIHJldHVybiBtX3BsYXliYWNr
TW9kZWwgPyBtX3BsYXliYWNrTW9kZWwtPmV4dGVybmFsUGxheWJhY2tFbmFibGVkKCkgOiBmYWxz
ZTsKIH0KIAotdm9pZCBXZWJWaWRlb0Z1bGxzY3JlZW5TZXNzaW9uTW9kZWw6OmJlZ2luU2Nhbm5p
bmdGb3J3YXJkKCkKK1dlYlBsYXliYWNrU2Vzc2lvbk1vZGVsOjpFeHRlcm5hbFBsYXliYWNrVGFy
Z2V0VHlwZSBXZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyQ29udGV4dDo6ZXh0ZXJuYWxQbGF5
YmFja1RhcmdldFR5cGUoKSBjb25zdAogewotICAgIGlmIChtX2NvbnRyb2xsZXIpCi0gICAgICAg
IG1fY29udHJvbGxlci0+YmVnaW5TY2FubmluZ0ZvcndhcmQoKTsKKyAgICBBU1NFUlQoaXNVSVRo
cmVhZCgpKTsKKyAgICByZXR1cm4gbV9wbGF5YmFja01vZGVsID8gbV9wbGF5YmFja01vZGVsLT5l
eHRlcm5hbFBsYXliYWNrVGFyZ2V0VHlwZSgpIDogVGFyZ2V0VHlwZU5vbmU7CiB9CiAKLXZvaWQg
V2ViVmlkZW9GdWxsc2NyZWVuU2Vzc2lvbk1vZGVsOjpiZWdpblNjYW5uaW5nQmFja3dhcmQoKQor
U3RyaW5nIFdlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJDb250ZXh0OjpleHRlcm5hbFBsYXli
YWNrTG9jYWxpemVkRGV2aWNlTmFtZSgpIGNvbnN0CiB7Ci0gICAgaWYgKG1fY29udHJvbGxlcikK
LSAgICAgICAgbV9jb250cm9sbGVyLT5iZWdpblNjYW5uaW5nQmFja3dhcmQoKTsKKyAgICBBU1NF
UlQoaXNVSVRocmVhZCgpKTsKKyAgICByZXR1cm4gbV9wbGF5YmFja01vZGVsID8gbV9wbGF5YmFj
a01vZGVsLT5leHRlcm5hbFBsYXliYWNrTG9jYWxpemVkRGV2aWNlTmFtZSgpIDogU3RyaW5nKCk7
CiB9CiAKLXZvaWQgV2ViVmlkZW9GdWxsc2NyZWVuU2Vzc2lvbk1vZGVsOjplbmRTY2FubmluZygp
Citib29sIFdlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJDb250ZXh0Ojp3aXJlbGVzc1ZpZGVv
UGxheWJhY2tEaXNhYmxlZCgpIGNvbnN0CiB7Ci0gICAgaWYgKG1fY29udHJvbGxlcikKLSAgICAg
ICAgbV9jb250cm9sbGVyLT5lbmRTY2FubmluZygpOworICAgIEFTU0VSVChpc1VJVGhyZWFkKCkp
OworICAgIHJldHVybiBtX3BsYXliYWNrTW9kZWwgPyBtX3BsYXliYWNrTW9kZWwtPndpcmVsZXNz
VmlkZW9QbGF5YmFja0Rpc2FibGVkKCkgOiB0cnVlOwogfQogCi12b2lkIFdlYlZpZGVvRnVsbHNj
cmVlblNlc3Npb25Nb2RlbDo6c2VsZWN0QXVkaW9NZWRpYU9wdGlvbih1aW50NjRfdCBvcHRpb25J
ZCkKKyNwcmFnbWEgbWFyayBPdGhlcgorCit2b2lkIFdlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xs
ZXJDb250ZXh0OjpzZXRVcEZ1bGxzY3JlZW4oSFRNTFZpZGVvRWxlbWVudCYgdmlkZW9FbGVtZW50
LCBVSVZpZXcgKnZpZXcsIEhUTUxNZWRpYUVsZW1lbnRFbnVtczo6VmlkZW9GdWxsc2NyZWVuTW9k
ZSBtb2RlKQogewotICAgIGlmIChtX2NvbnRyb2xsZXIpCi0gICAgICAgIG1fY29udHJvbGxlci0+
c2VsZWN0QXVkaW9NZWRpYU9wdGlvbihvcHRpb25JZCk7CisgICAgQVNTRVJUKGlzTWFpblRocmVh
ZCgpKTsKKyAgICBSZXRhaW5QdHI8VUlWaWV3PiB2aWV3UmVmID0gdmlldzsKKyAgICBtX3ZpZGVv
RWxlbWVudCA9ICZ2aWRlb0VsZW1lbnQ7CisgICAgbV9wbGF5YmFja01vZGVsID0gV2ViUGxheWJh
Y2tTZXNzaW9uTW9kZWxNZWRpYUVsZW1lbnQ6OmNyZWF0ZSgpOworICAgIG1fcGxheWJhY2tNb2Rl
bC0+YWRkQ2xpZW50KCp0aGlzKTsKKyAgICBtX3BsYXliYWNrTW9kZWwtPnNldE1lZGlhRWxlbWVu
dChtX3ZpZGVvRWxlbWVudC5nZXQoKSk7CisKKyAgICBtX2Z1bGxzY3JlZW5Nb2RlbCA9IFdlYlZp
ZGVvRnVsbHNjcmVlbk1vZGVsVmlkZW9FbGVtZW50OjpjcmVhdGUoKTsKKyAgICBtX2Z1bGxzY3Jl
ZW5Nb2RlbC0+YWRkQ2xpZW50KCp0aGlzKTsKKyAgICBtX2Z1bGxzY3JlZW5Nb2RlbC0+c2V0Vmlk
ZW9FbGVtZW50KG1fdmlkZW9FbGVtZW50LmdldCgpKTsKKworICAgIGJvb2wgYWxsb3dzUGljdHVy
ZUluUGljdHVyZSA9IG1fdmlkZW9FbGVtZW50LT5tZWRpYVNlc3Npb24oKS5hbGxvd3NQaWN0dXJl
SW5QaWN0dXJlKCptX3ZpZGVvRWxlbWVudC5nZXQoKSk7CisKKyAgICBJbnRSZWN0IHZpZGVvRWxl
bWVudENsaWVudFJlY3QgPSBlbGVtZW50UmVjdEluV2luZG93KG1fdmlkZW9FbGVtZW50LmdldCgp
KTsKKyAgICBGbG9hdFJlY3QgdmlkZW9MYXllckZyYW1lID0gRmxvYXRSZWN0KEZsb2F0UG9pbnQo
KSwgdmlkZW9FbGVtZW50Q2xpZW50UmVjdC5zaXplKCkpOworICAgIG1fZnVsbHNjcmVlbk1vZGVs
LT5zZXRWaWRlb0xheWVyRnJhbWUodmlkZW9MYXllckZyYW1lKTsKKworICAgIFJlZlB0cjxXZWJW
aWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyQ29udGV4dD4gcHJvdGVjdGVkVGhpcyh0aGlzKTsKKyAg
ICBkaXNwYXRjaF9hc3luYyhkaXNwYXRjaF9nZXRfbWFpbl9xdWV1ZSgpLCBbcHJvdGVjdGVkVGhp
cywgdGhpcywgdmlkZW9FbGVtZW50Q2xpZW50UmVjdCwgdmlld1JlZiwgbW9kZSwgYWxsb3dzUGlj
dHVyZUluUGljdHVyZV0geworICAgICAgICBBU1NFUlQoaXNVSVRocmVhZCgpKTsKKworICAgICAg
ICBSZWY8V2ViUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlQVZLaXQ+IHNlc3Npb25JbnRlcmZhY2Ug
PSBXZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2VBVktpdDo6Y3JlYXRlKCp0aGlzKTsKKyAgICAg
ICAgbV9pbnRlcmZhY2UgPSBXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdDo6Y3JlYXRl
KHNlc3Npb25JbnRlcmZhY2UuZ2V0KCkpOworICAgICAgICBtX2ludGVyZmFjZS0+c2V0V2ViVmlk
ZW9GdWxsc2NyZWVuQ2hhbmdlT2JzZXJ2ZXIodGhpcyk7CisgICAgICAgIG1faW50ZXJmYWNlLT5z
ZXRXZWJWaWRlb0Z1bGxzY3JlZW5Nb2RlbCh0aGlzKTsKKyAgICAgICAgbV9pbnRlcmZhY2UtPnNl
dFdlYlZpZGVvRnVsbHNjcmVlbkNoYW5nZU9ic2VydmVyKHRoaXMpOworCisgICAgICAgIG1fdmlk
ZW9GdWxsc2NyZWVuVmlldyA9IGFkb3B0TlMoW1tnZXRVSVZpZXdDbGFzcygpIGFsbG9jXSBpbml0
XSk7CisgICAgICAgIAorICAgICAgICBtX2ludGVyZmFjZS0+c2V0dXBGdWxsc2NyZWVuKCptX3Zp
ZGVvRnVsbHNjcmVlblZpZXcuZ2V0KCksIHZpZGVvRWxlbWVudENsaWVudFJlY3QsIHZpZXdSZWYu
Z2V0KCksIG1vZGUsIGFsbG93c1BpY3R1cmVJblBpY3R1cmUpOworICAgIH0pOwogfQogCi12b2lk
IFdlYlZpZGVvRnVsbHNjcmVlblNlc3Npb25Nb2RlbDo6c2VsZWN0TGVnaWJsZU1lZGlhT3B0aW9u
KHVpbnQ2NF90IG9wdGlvbklkKQordm9pZCBXZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyQ29u
dGV4dDo6ZXhpdEZ1bGxzY3JlZW4oKQogewotICAgIGlmIChtX2NvbnRyb2xsZXIpCi0gICAgICAg
IG1fY29udHJvbGxlci0+c2VsZWN0TGVnaWJsZU1lZGlhT3B0aW9uKG9wdGlvbklkKTsKKyAgICBB
U1NFUlQoV2ViVGhyZWFkSXNDdXJyZW50KCkgfHwgaXNNYWluVGhyZWFkKCkpOworICAgIEludFJl
Y3QgY2xpZW50UmVjdCA9IGVsZW1lbnRSZWN0SW5XaW5kb3cobV92aWRlb0VsZW1lbnQuZ2V0KCkp
OworICAgIFJlZlB0cjxXZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyQ29udGV4dD4gcHJvdGVj
dGVkVGhpcyh0aGlzKTsKKyAgICBkaXNwYXRjaF9hc3luYyhkaXNwYXRjaF9nZXRfbWFpbl9xdWV1
ZSgpLCBbcHJvdGVjdGVkVGhpcywgdGhpcywgY2xpZW50UmVjdF0geworICAgICAgICBBU1NFUlQo
aXNVSVRocmVhZCgpKTsKKyAgICAgICAgbV9pbnRlcmZhY2UtPmV4aXRGdWxsc2NyZWVuKGNsaWVu
dFJlY3QpOworICAgIH0pOwogfQogCit2b2lkIFdlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJD
b250ZXh0OjpyZXF1ZXN0SGlkZUFuZEV4aXRGdWxsc2NyZWVuKCkKK3sKKyAgICBBU1NFUlQoaXNV
SVRocmVhZCgpKTsKKyAgICBtX2ludGVyZmFjZS0+cmVxdWVzdEhpZGVBbmRFeGl0RnVsbHNjcmVl
bigpOworfQogCiBAaW1wbGVtZW50YXRpb24gV2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlciB7
CiAgICAgUmVmUHRyPFdlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJDb250ZXh0PiBfY29udGV4
dDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9XZWJWaWRlb0Z1bGxz
Y3JlZW5JbnRlcmZhY2VBVktpdC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1dlYlZp
ZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0LmgKaW5kZXggODFkYWM2MWQ3NWE0ZjFmNjljZjlk
YThkMjFlYzk0NTNiZmY1YTZkNC4uNTBkZTllMDZiMDRjYjYyZDgzY2IyNjg4MWY3ODU1YjQwMTg4
Y2YyOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1dlYlZpZGVvRnVs
bHNjcmVlbkludGVyZmFjZUFWS2l0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9z
L1dlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0LmgKQEAgLTM1LDYgKzM1LDcgQEAKICNp
bmNsdWRlICJUaW1lci5oIgogI2luY2x1ZGUgIldlYlBsYXliYWNrU2Vzc2lvbkludGVyZmFjZUFW
S2l0LmgiCiAjaW5jbHVkZSAiV2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlLmgiCisjaW5jbHVk
ZSAiV2ViVmlkZW9GdWxsc2NyZWVuTW9kZWwuaCIKICNpbmNsdWRlIDxmdW5jdGlvbmFsPgogI2lu
Y2x1ZGUgPG9iamMvb2JqYy5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CkBAIC01Nywx
MiArNTgsMTQgQEAgY2xhc3MgU3RyaW5nOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBJ
bnRSZWN0OworY2xhc3MgRmxvYXRTaXplOwogY2xhc3MgV2ViVmlkZW9GdWxsc2NyZWVuTW9kZWw7
CiBjbGFzcyBXZWJWaWRlb0Z1bGxzY3JlZW5DaGFuZ2VPYnNlcnZlcjsKICAgICAKIGNsYXNzIFdF
QkNPUkVfRVhQT1JUIFdlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0IGZpbmFsCiAgICAg
OiBwdWJsaWMgV2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlCi0gICAgLCBwdWJsaWMgV2ViUGxh
eWJhY2tTZXNzaW9uSW50ZXJmYWNlQVZLaXRDbGllbnQKKyAgICAsIHB1YmxpYyBXZWJWaWRlb0Z1
bGxzY3JlZW5Nb2RlbENsaWVudAorICAgICwgcHVibGljIFdlYlBsYXliYWNrU2Vzc2lvbk1vZGVs
Q2xpZW50CiAgICAgLCBwdWJsaWMgUmVmQ291bnRlZDxXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZh
Y2VBVktpdD4gewogCiBwdWJsaWM6CkBAIC03MiwxOCArNzUsMTMgQEAgcHVibGljOgogICAgIFdF
QkNPUkVfRVhQT1JUIHZvaWQgc2V0V2ViVmlkZW9GdWxsc2NyZWVuQ2hhbmdlT2JzZXJ2ZXIoV2Vi
VmlkZW9GdWxsc2NyZWVuQ2hhbmdlT2JzZXJ2ZXIqKTsKICAgICBXZWJQbGF5YmFja1Nlc3Npb25N
b2RlbCogd2ViUGxheWJhY2tTZXNzaW9uTW9kZWwoKSBjb25zdCB7IHJldHVybiBtX3BsYXliYWNr
U2Vzc2lvbkludGVyZmFjZS0+d2ViUGxheWJhY2tTZXNzaW9uTW9kZWwoKTsgfQogCi0gICAgV0VC
Q09SRV9FWFBPUlQgdm9pZCByZXNldE1lZGlhU3RhdGUoKSBmaW5hbDsKLSAgICBXRUJDT1JFX0VY
UE9SVCB2b2lkIHNldER1cmF0aW9uKGRvdWJsZSkgZmluYWw7Ci0gICAgV0VCQ09SRV9FWFBPUlQg
dm9pZCBzZXRDdXJyZW50VGltZShkb3VibGUgY3VycmVudFRpbWUsIGRvdWJsZSBhbmNob3JUaW1l
KSBmaW5hbDsKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldEJ1ZmZlcmVkVGltZShkb3VibGUp
IGZpbmFsOwotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0UmF0ZShib29sIGlzUGxheWluZywg
ZmxvYXQgcGxheWJhY2tSYXRlKSBmaW5hbDsKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldFZp
ZGVvRGltZW5zaW9ucyhib29sIGhhc1ZpZGVvLCBmbG9hdCB3aWR0aCwgZmxvYXQgaGVpZ2h0KSBm
aW5hbDsKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldFNlZWthYmxlUmFuZ2VzKGNvbnN0IFRp
bWVSYW5nZXMmKSBmaW5hbDsKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldENhblBsYXlGYXN0
UmV2ZXJzZShib29sKSBmaW5hbDsKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldEF1ZGlvTWVk
aWFTZWxlY3Rpb25PcHRpb25zKGNvbnN0IFZlY3RvcjxXVEY6OlN0cmluZz4mIG9wdGlvbnMsIHVp
bnQ2NF90IHNlbGVjdGVkSW5kZXgpIGZpbmFsOwotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0
TGVnaWJsZU1lZGlhU2VsZWN0aW9uT3B0aW9ucyhjb25zdCBWZWN0b3I8V1RGOjpTdHJpbmc+JiBv
cHRpb25zLCB1aW50NjRfdCBzZWxlY3RlZEluZGV4KSBmaW5hbDsKLSAgICBXRUJDT1JFX0VYUE9S
VCB2b2lkIHNldEV4dGVybmFsUGxheWJhY2soYm9vbCBlbmFibGVkLCBFeHRlcm5hbFBsYXliYWNr
VGFyZ2V0VHlwZSwgV1RGOjpTdHJpbmcgbG9jYWxpemVkRGV2aWNlTmFtZSkgZmluYWw7Ci0gICAg
V0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRXaXJlbGVzc1ZpZGVvUGxheWJhY2tEaXNhYmxlZChib29s
KSBmaW5hbDsKKyAgICAvLyBXZWJWaWRlb0Z1bGxzY3JlZW5Nb2RlbENsaWVudAorICAgIFdFQkNP
UkVfRVhQT1JUIHZvaWQgaGFzVmlkZW9DaGFuZ2VkKGJvb2wpIGZpbmFsOworICAgIFdFQkNPUkVf
RVhQT1JUIHZvaWQgdmlkZW9EaW1lbnNpb25zQ2hhbmdlZChjb25zdCBGbG9hdFNpemUmKSBmaW5h
bDsKKworICAgIC8vIFdlYlBsYXliYWNrU2Vzc2lvbk1vZGVsQ2xpZW50CisgICAgV0VCQ09SRV9F
WFBPUlQgdm9pZCBleHRlcm5hbFBsYXliYWNrQ2hhbmdlZChib29sIGVuYWJsZWQsIFdlYlBsYXli
YWNrU2Vzc2lvbk1vZGVsOjpFeHRlcm5hbFBsYXliYWNrVGFyZ2V0VHlwZSwgY29uc3QgU3RyaW5n
JiBsb2NhbGl6ZWREZXZpY2VOYW1lKSBmaW5hbDsKKwogICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1
YWwgdm9pZCBzZXR1cEZ1bGxzY3JlZW4oVUlWaWV3JiwgY29uc3QgSW50UmVjdCYgaW5pdGlhbFJl
Y3QsIFVJVmlldyAqLCBIVE1MTWVkaWFFbGVtZW50RW51bXM6OlZpZGVvRnVsbHNjcmVlbk1vZGUs
IGJvb2wgYWxsb3dzUGljdHVyZUluUGljdHVyZVBsYXliYWNrKTsKICAgICBXRUJDT1JFX0VYUE9S
VCB2aXJ0dWFsIHZvaWQgZW50ZXJGdWxsc2NyZWVuKCk7CiAgICAgV0VCQ09SRV9FWFBPUlQgdmly
dHVhbCB2b2lkIGV4aXRGdWxsc2NyZWVuKGNvbnN0IEludFJlY3QmIGZpbmFsUmVjdCk7CkBAIC0x
MjcsNyArMTI1LDYgQEAgcHJvdGVjdGVkOgogICAgIHZvaWQgZW50ZXJQaWN0dXJlSW5QaWN0dXJl
KCk7CiAgICAgdm9pZCBlbnRlckZ1bGxzY3JlZW5TdGFuZGFyZCgpOwogICAgIHZvaWQgd2F0Y2hk
b2dUaW1lckZpcmVkKCk7Ci0gICAgdm9pZCBleHRlcm5hbFBsYXliYWNrRW5hYmxlZENoYW5nZWQo
Ym9vbCkgZmluYWw7CiAgICAgV2ViQVZQbGF5ZXJDb250cm9sbGVyICpwbGF5ZXJDb250cm9sbGVy
KCkgY29uc3Q7CiAKICAgICBSZWY8V2ViUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlQVZLaXQ+IG1f
cGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vaW9zL1dlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0Lm1tIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vaW9zL1dlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0Lm1tCmlu
ZGV4IDNhZjhkN2EzZDg1ZjY0N2MzNGU4NzA0YWFkNTExMGYyNzk0M2Y5YjEuLmE1ZTc0M2NmNDg4
ZTcwYjEwNmQ4NzZiY2VkN2UxNjIyNGY3NGQyMWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2lvcy9XZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdC5tbQorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvV2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZL
aXQubW0KQEAgLTQ5OCw3ICs0OTgsOSBAQCBXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktp
dDo6fldlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0KCkKIHsKICAgICBXZWJBVlBsYXll
ckNvbnRyb2xsZXIqIHBsYXllckNvbnRyb2xsZXIgPSB0aGlzLT5wbGF5ZXJDb250cm9sbGVyKCk7
CiAgICAgaWYgKHBsYXllckNvbnRyb2xsZXIgJiYgcGxheWVyQ29udHJvbGxlci5leHRlcm5hbFBs
YXliYWNrQWN0aXZlKQotICAgICAgICBzZXRFeHRlcm5hbFBsYXliYWNrKGZhbHNlLCBUYXJnZXRU
eXBlTm9uZSwgIiIpOworICAgICAgICBleHRlcm5hbFBsYXliYWNrQ2hhbmdlZChmYWxzZSwgV2Vi
UGxheWJhY2tTZXNzaW9uTW9kZWw6OlRhcmdldFR5cGVOb25lLCAiIik7CisgICAgaWYgKG1fdmlk
ZW9GdWxsc2NyZWVuTW9kZWwpCisgICAgICAgIG1fdmlkZW9GdWxsc2NyZWVuTW9kZWwtPnJlbW92
ZUNsaWVudCgqdGhpcyk7CiB9CiAKIFdlYkFWUGxheWVyQ29udHJvbGxlciAqV2ViVmlkZW9GdWxs
c2NyZWVuSW50ZXJmYWNlQVZLaXQ6OnBsYXllckNvbnRyb2xsZXIoKSBjb25zdApAQCAtNTA2LDQ4
ICs1MDgsMzYgQEAgV2ViQVZQbGF5ZXJDb250cm9sbGVyICpXZWJWaWRlb0Z1bGxzY3JlZW5JbnRl
cmZhY2VBVktpdDo6cGxheWVyQ29udHJvbGxlcigpIGNvbnMKICAgICByZXR1cm4gbV9wbGF5YmFj
a1Nlc3Npb25JbnRlcmZhY2UtPnBsYXllckNvbnRyb2xsZXIoKTsKIH0KIAotdm9pZCBXZWJWaWRl
b0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdDo6cmVzZXRNZWRpYVN0YXRlKCkKLXsKLSAgICBtX3Bs
YXliYWNrU2Vzc2lvbkludGVyZmFjZS0+cmVzZXRNZWRpYVN0YXRlKCk7Ci19Ci0KIHZvaWQgV2Vi
VmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQ6OnNldFdlYlZpZGVvRnVsbHNjcmVlbk1vZGVs
KFdlYlZpZGVvRnVsbHNjcmVlbk1vZGVsKiBtb2RlbCkKIHsKLSAgICBtX3ZpZGVvRnVsbHNjcmVl
bk1vZGVsID0gbW9kZWw7Ci19CisgICAgaWYgKG1fdmlkZW9GdWxsc2NyZWVuTW9kZWwpCisgICAg
ICAgIG1fdmlkZW9GdWxsc2NyZWVuTW9kZWwtPnJlbW92ZUNsaWVudCgqdGhpcyk7CiAKLXZvaWQg
V2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQ6OnNldFdlYlZpZGVvRnVsbHNjcmVlbkNo
YW5nZU9ic2VydmVyKFdlYlZpZGVvRnVsbHNjcmVlbkNoYW5nZU9ic2VydmVyKiBvYnNlcnZlcikK
LXsKLSAgICBtX2Z1bGxzY3JlZW5DaGFuZ2VPYnNlcnZlciA9IG9ic2VydmVyOwotfQorICAgIG1f
dmlkZW9GdWxsc2NyZWVuTW9kZWwgPSBtb2RlbDsKIAotdm9pZCBXZWJWaWRlb0Z1bGxzY3JlZW5J
bnRlcmZhY2VBVktpdDo6c2V0RHVyYXRpb24oZG91YmxlIGR1cmF0aW9uKQotewotICAgIG1fcGxh
eWJhY2tTZXNzaW9uSW50ZXJmYWNlLT5zZXREdXJhdGlvbihkdXJhdGlvbik7Ci19CisgICAgaWYg
KG1fdmlkZW9GdWxsc2NyZWVuTW9kZWwpCisgICAgICAgIG1fdmlkZW9GdWxsc2NyZWVuTW9kZWwt
PmFkZENsaWVudCgqdGhpcyk7CiAKLXZvaWQgV2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZL
aXQ6OnNldEN1cnJlbnRUaW1lKGRvdWJsZSBjdXJyZW50VGltZSwgZG91YmxlIGFuY2hvclRpbWUp
Ci17Ci0gICAgbV9wbGF5YmFja1Nlc3Npb25JbnRlcmZhY2UtPnNldEN1cnJlbnRUaW1lKGN1cnJl
bnRUaW1lLCBhbmNob3JUaW1lKTsKKyAgICBoYXNWaWRlb0NoYW5nZWQobV92aWRlb0Z1bGxzY3Jl
ZW5Nb2RlbCA/IG1fdmlkZW9GdWxsc2NyZWVuTW9kZWwtPmhhc1ZpZGVvKCkgOiBmYWxzZSk7Cisg
ICAgdmlkZW9EaW1lbnNpb25zQ2hhbmdlZChtX3ZpZGVvRnVsbHNjcmVlbk1vZGVsID8gbV92aWRl
b0Z1bGxzY3JlZW5Nb2RlbC0+dmlkZW9EaW1lbnNpb25zKCkgOiBGbG9hdFNpemUoKSk7CiB9CiAK
LXZvaWQgV2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQ6OnNldEJ1ZmZlcmVkVGltZShk
b3VibGUgYnVmZmVyZWRUaW1lKQordm9pZCBXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktp
dDo6c2V0V2ViVmlkZW9GdWxsc2NyZWVuQ2hhbmdlT2JzZXJ2ZXIoV2ViVmlkZW9GdWxsc2NyZWVu
Q2hhbmdlT2JzZXJ2ZXIqIG9ic2VydmVyKQogewotICAgIG1fcGxheWJhY2tTZXNzaW9uSW50ZXJm
YWNlLT5zZXRCdWZmZXJlZFRpbWUoYnVmZmVyZWRUaW1lKTsKKyAgICBtX2Z1bGxzY3JlZW5DaGFu
Z2VPYnNlcnZlciA9IG9ic2VydmVyOwogfQogCi12b2lkIFdlYlZpZGVvRnVsbHNjcmVlbkludGVy
ZmFjZUFWS2l0OjpzZXRSYXRlKGJvb2wgaXNQbGF5aW5nLCBmbG9hdCBwbGF5YmFja1JhdGUpCit2
b2lkIFdlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0OjpoYXNWaWRlb0NoYW5nZWQoYm9v
bCBoYXNWaWRlbykKIHsKLSAgICBtX3BsYXliYWNrU2Vzc2lvbkludGVyZmFjZS0+c2V0UmF0ZShp
c1BsYXlpbmcsIHBsYXliYWNrUmF0ZSk7CisgICAgW3BsYXllckNvbnRyb2xsZXIoKSBzZXRIYXNF
bmFibGVkVmlkZW86aGFzVmlkZW9dOwogfQogCi12b2lkIFdlYlZpZGVvRnVsbHNjcmVlbkludGVy
ZmFjZUFWS2l0OjpzZXRWaWRlb0RpbWVuc2lvbnMoYm9vbCBoYXNWaWRlbywgZmxvYXQgd2lkdGgs
IGZsb2F0IGhlaWdodCkKK3ZvaWQgV2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQ6OnZp
ZGVvRGltZW5zaW9uc0NoYW5nZWQoY29uc3QgRmxvYXRTaXplJiB2aWRlb0RpbWVuc2lvbnMpCiB7
CiAgICAgV2ViQVZQbGF5ZXJMYXllciAqcGxheWVyTGF5ZXIgPSAoV2ViQVZQbGF5ZXJMYXllciAq
KVttX3BsYXllckxheWVyVmlldyBwbGF5ZXJMYXllcl07CiAKLSAgICBbcGxheWVyTGF5ZXIgc2V0
VmlkZW9EaW1lbnNpb25zOkNHU2l6ZU1ha2Uod2lkdGgsIGhlaWdodCldOwotICAgIFtwbGF5ZXJD
b250cm9sbGVyKCkgc2V0SGFzRW5hYmxlZFZpZGVvOmhhc1ZpZGVvXTsKLSAgICBbcGxheWVyQ29u
dHJvbGxlcigpIHNldENvbnRlbnREaW1lbnNpb25zOkNHU2l6ZU1ha2Uod2lkdGgsIGhlaWdodCld
OworICAgIFtwbGF5ZXJMYXllciBzZXRWaWRlb0RpbWVuc2lvbnM6dmlkZW9EaW1lbnNpb25zXTsK
KyAgICBbcGxheWVyQ29udHJvbGxlcigpIHNldENvbnRlbnREaW1lbnNpb25zOnZpZGVvRGltZW5z
aW9uc107CiAgICAgW21fcGxheWVyTGF5ZXJWaWV3IHNldE5lZWRzTGF5b3V0XTsKIAogICAgIFdl
YkFWUGljdHVyZUluUGljdHVyZVBsYXllckxheWVyVmlldyAqcGlwVmlldyA9IChXZWJBVlBpY3R1
cmVJblBpY3R1cmVQbGF5ZXJMYXllclZpZXcgKilbbV9wbGF5ZXJMYXllclZpZXcgcGljdHVyZUlu
UGljdHVyZVBsYXllckxheWVyVmlld107CkBAIC01NTYsNDYgKzU0NiwxMSBAQCB2b2lkIFdlYlZp
ZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0OjpzZXRWaWRlb0RpbWVuc2lvbnMoYm9vbCBoYXNW
aWRlbywgZmxvYXQgdwogICAgIFtwaXBWaWV3IHNldE5lZWRzTGF5b3V0XTsgICAgCiB9CiAKLXZv
aWQgV2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQ6OnNldFNlZWthYmxlUmFuZ2VzKGNv
bnN0IFRpbWVSYW5nZXMmIHRpbWVSYW5nZXMpCi17Ci0gICAgbV9wbGF5YmFja1Nlc3Npb25JbnRl
cmZhY2UtPnNldFNlZWthYmxlUmFuZ2VzKHRpbWVSYW5nZXMpOwotfQotCi12b2lkIFdlYlZpZGVv
RnVsbHNjcmVlbkludGVyZmFjZUFWS2l0OjpzZXRDYW5QbGF5RmFzdFJldmVyc2UoYm9vbCBjYW5Q
bGF5RmFzdFJldmVyc2UpCi17Ci0gICAgbV9wbGF5YmFja1Nlc3Npb25JbnRlcmZhY2UtPnNldENh
blBsYXlGYXN0UmV2ZXJzZShjYW5QbGF5RmFzdFJldmVyc2UpOwotfQotCi12b2lkIFdlYlZpZGVv
RnVsbHNjcmVlbkludGVyZmFjZUFWS2l0OjpzZXRBdWRpb01lZGlhU2VsZWN0aW9uT3B0aW9ucyhj
b25zdCBWZWN0b3I8U3RyaW5nPiYgb3B0aW9ucywgdWludDY0X3Qgc2VsZWN0ZWRJbmRleCkKLXsK
LSAgICBtX3BsYXliYWNrU2Vzc2lvbkludGVyZmFjZS0+c2V0QXVkaW9NZWRpYVNlbGVjdGlvbk9w
dGlvbnMob3B0aW9ucywgc2VsZWN0ZWRJbmRleCk7Ci19Ci0KLXZvaWQgV2ViVmlkZW9GdWxsc2Ny
ZWVuSW50ZXJmYWNlQVZLaXQ6OnNldExlZ2libGVNZWRpYVNlbGVjdGlvbk9wdGlvbnMoY29uc3Qg
VmVjdG9yPFN0cmluZz4mIG9wdGlvbnMsIHVpbnQ2NF90IHNlbGVjdGVkSW5kZXgpCi17Ci0gICAg
bV9wbGF5YmFja1Nlc3Npb25JbnRlcmZhY2UtPnNldExlZ2libGVNZWRpYVNlbGVjdGlvbk9wdGlv
bnMob3B0aW9ucywgc2VsZWN0ZWRJbmRleCk7Ci19Ci0KLXZvaWQgV2ViVmlkZW9GdWxsc2NyZWVu
SW50ZXJmYWNlQVZLaXQ6OnNldEV4dGVybmFsUGxheWJhY2soYm9vbCBlbmFibGVkLCBFeHRlcm5h
bFBsYXliYWNrVGFyZ2V0VHlwZSB0YXJnZXRUeXBlLCBTdHJpbmcgbG9jYWxpemVkRGV2aWNlTmFt
ZSkKLXsKLSAgICBtX3BsYXliYWNrU2Vzc2lvbkludGVyZmFjZS0+c2V0RXh0ZXJuYWxQbGF5YmFj
ayhlbmFibGVkLCB0YXJnZXRUeXBlLCBsb2NhbGl6ZWREZXZpY2VOYW1lKTsKLX0KLQotdm9pZCBX
ZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdDo6ZXh0ZXJuYWxQbGF5YmFja0VuYWJsZWRD
aGFuZ2VkKGJvb2wgZW5hYmxlZCkKK3ZvaWQgV2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZL
aXQ6OmV4dGVybmFsUGxheWJhY2tDaGFuZ2VkKGJvb2wgZW5hYmxlZCwgV2ViUGxheWJhY2tTZXNz
aW9uTW9kZWw6OkV4dGVybmFsUGxheWJhY2tUYXJnZXRUeXBlLCBjb25zdCBTdHJpbmcmKQogewog
ICAgIFttX3BsYXllckxheWVyVmlldyBzZXRIaWRkZW46ZW5hYmxlZF07CiB9CiAKLXZvaWQgV2Vi
VmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQ6OnNldFdpcmVsZXNzVmlkZW9QbGF5YmFja0Rp
c2FibGVkKGJvb2wgZGlzYWJsZWQpCi17Ci0gICAgbV9wbGF5YmFja1Nlc3Npb25JbnRlcmZhY2Ut
PnNldFdpcmVsZXNzVmlkZW9QbGF5YmFja0Rpc2FibGVkKGRpc2FibGVkKTsKLX0KLQotYm9vbCBX
ZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdDo6d2lyZWxlc3NWaWRlb1BsYXliYWNrRGlz
YWJsZWQoKSBjb25zdAotewotICAgIHJldHVybiBtX3BsYXliYWNrU2Vzc2lvbkludGVyZmFjZS0+
d2lyZWxlc3NWaWRlb1BsYXliYWNrRGlzYWJsZWQoKTsKLX0KLQogdm9pZCBXZWJWaWRlb0Z1bGxz
Y3JlZW5JbnRlcmZhY2VBVktpdDo6YXBwbGljYXRpb25EaWRCZWNvbWVBY3RpdmUoKQogewogICAg
IExPRyhGdWxsc2NyZWVuLCAiV2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQ6OmFwcGxp
Y2F0aW9uRGlkQmVjb21lQWN0aXZlKCVwKSIsIHRoaXMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbWFjL1dlYlBsYXliYWNrU2Vzc2lvbkludGVyZmFjZU1hYy5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1dlYlBsYXliYWNrU2Vzc2lvbkludGVyZmFjZU1hYy5o
CmluZGV4IGNjOTYxN2Q4MzQ5NTU2NmIxZTRlYTlhMDgxNTU5ZTIzOTA0NDZkZDIuLjA1NGE4NDNi
NDUwYjRmODhkMDFlMzFmNmQ1OGU4MTdmNDY1M2U1ZTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL21hYy9XZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2VNYWMuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvV2ViUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlTWFj
LmgKQEAgLTMwLDYgKzMwLDcgQEAKIAogI2luY2x1ZGUgIkhUTUxNZWRpYUVsZW1lbnRFbnVtcy5o
IgogI2luY2x1ZGUgIldlYlBsYXliYWNrU2Vzc2lvbkludGVyZmFjZS5oIgorI2luY2x1ZGUgIldl
YlBsYXliYWNrU2Vzc2lvbk1vZGVsLmgiCiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KICNp
bmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+
CkBAIC00MCw0NyArNDEsMzQgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgSW50UmVjdDsK
IGNsYXNzIFdlYlBsYXliYWNrU2Vzc2lvbk1vZGVsOwogCi1jbGFzcyBXZWJQbGF5YmFja1Nlc3Np
b25JbnRlcmZhY2VNYWNDbGllbnQgewotcHVibGljOgotICAgIHZpcnR1YWwgfldlYlBsYXliYWNr
U2Vzc2lvbkludGVyZmFjZU1hY0NsaWVudCgpIHsgfQotCi0gICAgdmlydHVhbCB2b2lkIHJhdGVD
aGFuZ2VkKGJvb2wgaXNQbGF5aW5nLCBmbG9hdCBwbGF5YmFja1JhdGUpID0gMDsKLX07Ci0KIGNs
YXNzIFdFQkNPUkVfRVhQT1JUIFdlYlBsYXliYWNrU2Vzc2lvbkludGVyZmFjZU1hYyBmaW5hbAog
ICAgIDogcHVibGljIFdlYlBsYXliYWNrU2Vzc2lvbkludGVyZmFjZQorICAgICwgcHVibGljIFdl
YlBsYXliYWNrU2Vzc2lvbk1vZGVsQ2xpZW50CiAgICAgLCBwdWJsaWMgUmVmQ291bnRlZDxXZWJQ
bGF5YmFja1Nlc3Npb25JbnRlcmZhY2VNYWM+IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPFdl
YlBsYXliYWNrU2Vzc2lvbkludGVyZmFjZU1hYz4gY3JlYXRlKCkKLSAgICB7Ci0gICAgICAgIHJl
dHVybiBhZG9wdFJlZigqbmV3IFdlYlBsYXliYWNrU2Vzc2lvbkludGVyZmFjZU1hYygpKTsKLSAg
ICB9CisgICAgc3RhdGljIFJlZjxXZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2VNYWM+IGNyZWF0
ZShXZWJQbGF5YmFja1Nlc3Npb25Nb2RlbCYpOwogICAgIHZpcnR1YWwgfldlYlBsYXliYWNrU2Vz
c2lvbkludGVyZmFjZU1hYygpOwogICAgIFdlYlBsYXliYWNrU2Vzc2lvbk1vZGVsKiB3ZWJQbGF5
YmFja1Nlc3Npb25Nb2RlbCgpIGNvbnN0IHsgcmV0dXJuIG1fcGxheWJhY2tTZXNzaW9uTW9kZWw7
IH0KLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldFdlYlBsYXliYWNrU2Vzc2lvbk1vZGVsKFdl
YlBsYXliYWNrU2Vzc2lvbk1vZGVsKik7Ci0gICAgV2ViUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNl
TWFjQ2xpZW50KiBjbGllbnQoKSBjb25zdCB7IHJldHVybiBtX2NsaWVudDsgfQotICAgIHZvaWQg
c2V0Q2xpZW50KFdlYlBsYXliYWNrU2Vzc2lvbkludGVyZmFjZU1hY0NsaWVudCopOwogCisgICAg
Ly8gV2ViUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlCiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBy
ZXNldE1lZGlhU3RhdGUoKSBmaW5hbCB7IH0KLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldER1
cmF0aW9uKGRvdWJsZSkgZmluYWw7Ci0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRDdXJyZW50
VGltZShkb3VibGUgLypjdXJyZW50VGltZSovLCBkb3VibGUgLyphbmNob3JUaW1lKi8pIGZpbmFs
OwotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0QnVmZmVyZWRUaW1lKGRvdWJsZSkgZmluYWwg
eyB9Ci0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRSYXRlKGJvb2wgLyppc1BsYXlpbmcqLywg
ZmxvYXQgLypwbGF5YmFja1JhdGUqLykgZmluYWw7Ci0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBz
ZXRTZWVrYWJsZVJhbmdlcyhjb25zdCBUaW1lUmFuZ2VzJikgZmluYWw7Ci0gICAgV0VCQ09SRV9F
WFBPUlQgdm9pZCBzZXRDYW5QbGF5RmFzdFJldmVyc2UoYm9vbCkgZmluYWwgeyB9Ci0gICAgV0VC
Q09SRV9FWFBPUlQgdm9pZCBzZXRBdWRpb01lZGlhU2VsZWN0aW9uT3B0aW9ucyhjb25zdCBWZWN0
b3I8U3RyaW5nPiYgLypvcHRpb25zKi8sIHVpbnQ2NF90IC8qc2VsZWN0ZWRJbmRleCovKSBmaW5h
bDsKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldExlZ2libGVNZWRpYVNlbGVjdGlvbk9wdGlv
bnMoY29uc3QgVmVjdG9yPFN0cmluZz4mIC8qb3B0aW9ucyovLCB1aW50NjRfdCAvKnNlbGVjdGVk
SW5kZXgqLykgZmluYWw7Ci0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRFeHRlcm5hbFBsYXli
YWNrKGJvb2wsIEV4dGVybmFsUGxheWJhY2tUYXJnZXRUeXBlLCBTdHJpbmcpIGZpbmFsIHsgfQot
ICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0V2lyZWxlc3NWaWRlb1BsYXliYWNrRGlzYWJsZWQo
Ym9vbCkgZmluYWwgeyB9CisKKyAgICAvLyBXZWJQbGF5YmFja1Nlc3Npb25Nb2RlbENsaWVudAor
ICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZHVyYXRpb25DaGFuZ2VkKGRvdWJsZSkgZmluYWw7Cisg
ICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBjdXJyZW50VGltZUNoYW5nZWQoZG91YmxlIC8qY3VycmVu
dFRpbWUqLywgZG91YmxlIC8qYW5jaG9yVGltZSovKSBmaW5hbDsKKyAgICBXRUJDT1JFX0VYUE9S
VCB2b2lkIHJhdGVDaGFuZ2VkKGJvb2wgLyppc1BsYXlpbmcqLywgZmxvYXQgLypwbGF5YmFja1Jh
dGUqLykgZmluYWw7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZWVrYWJsZVJhbmdlc0NoYW5n
ZWQoY29uc3QgVGltZVJhbmdlcyYpIGZpbmFsOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgYXVk
aW9NZWRpYVNlbGVjdGlvbk9wdGlvbnNDaGFuZ2VkKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiAvKm9w
dGlvbnMqLywgdWludDY0X3QgLypzZWxlY3RlZEluZGV4Ki8pIGZpbmFsOworICAgIFdFQkNPUkVf
RVhQT1JUIHZvaWQgbGVnaWJsZU1lZGlhU2VsZWN0aW9uT3B0aW9uc0NoYW5nZWQoY29uc3QgVmVj
dG9yPFN0cmluZz4mIC8qb3B0aW9ucyovLCB1aW50NjRfdCAvKnNlbGVjdGVkSW5kZXgqLykgZmlu
YWw7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBpbnZhbGlkYXRlKCk7CiAgICAgV0VCQ09SRV9F
WFBPUlQgdm9pZCBlbnN1cmVDb250cm9sc01hbmFnZXIoKTsKICAgICBXRUJDT1JFX0VYUE9SVCB2
b2lkIHNldFBsYXlCYWNrQ29udHJvbHNNYW5hZ2VyKFdlYlBsYXliYWNrQ29udHJvbHNNYW5hZ2Vy
ICopOwogICAgIFdFQkNPUkVfRVhQT1JUIFdlYlBsYXliYWNrQ29udHJvbHNNYW5hZ2VyICpwbGF5
QmFja0NvbnRyb2xzTWFuYWdlcigpOwogCiBwcml2YXRlOgorICAgIFdlYlBsYXliYWNrU2Vzc2lv
bkludGVyZmFjZU1hYyhXZWJQbGF5YmFja1Nlc3Npb25Nb2RlbCYpOwogICAgIFdlYlBsYXliYWNr
U2Vzc2lvbk1vZGVsKiBtX3BsYXliYWNrU2Vzc2lvbk1vZGVsIHsgbnVsbHB0ciB9OwotICAgIFdl
YlBsYXliYWNrQ29udHJvbHNNYW5hZ2VyICptX3BsYXliYWNrQ29udHJvbHNNYW5hZ2VyOwotICAg
IFdlYlBsYXliYWNrU2Vzc2lvbkludGVyZmFjZU1hY0NsaWVudCogbV9jbGllbnQgeyBudWxscHRy
IH07CisgICAgV2ViUGxheWJhY2tDb250cm9sc01hbmFnZXIgKm1fcGxheWJhY2tDb250cm9sc01h
bmFnZXIgIHsgbnVsbHB0ciB9OwogfTsKIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbWFjL1dlYlBsYXliYWNrU2Vzc2lvbkludGVyZmFjZU1hYy5tbSBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21hYy9XZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2VNYWMubW0KaW5k
ZXggMjRjNGQ2YWI0ZmMyNGI5NmFlNzMyODk1MTg0MzgyMGQxZGZjMmNmNS4uMTZmMThjZjVjY2Jl
MzA3MTkyMThhMjkzZGVlMjA2MWNiN2VmMDA1YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbWFjL1dlYlBsYXliYWNrU2Vzc2lvbkludGVyZmFjZU1hYy5tbQorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvV2ViUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlTWFjLm1t
CkBAIC00NSwyNCArNDUsMjQgQEAgdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAotV2ViUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlTWFjOjp+V2ViUGxheWJh
Y2tTZXNzaW9uSW50ZXJmYWNlTWFjKCkKK1JlZjxXZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2VN
YWM+IFdlYlBsYXliYWNrU2Vzc2lvbkludGVyZmFjZU1hYzo6Y3JlYXRlKFdlYlBsYXliYWNrU2Vz
c2lvbk1vZGVsJiBtb2RlbCkKIHsKKyAgICBhdXRvIGludGVyZmFjZSA9IGFkb3B0UmVmKCpuZXcg
V2ViUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlTWFjKG1vZGVsKSk7CisgICAgbW9kZWwuYWRkQ2xp
ZW50KGludGVyZmFjZSk7CisgICAgcmV0dXJuIGludGVyZmFjZTsKIH0KIAotdm9pZCBXZWJQbGF5
YmFja1Nlc3Npb25JbnRlcmZhY2VNYWM6OnNldFdlYlBsYXliYWNrU2Vzc2lvbk1vZGVsKFdlYlBs
YXliYWNrU2Vzc2lvbk1vZGVsKiBtb2RlbCkKK1dlYlBsYXliYWNrU2Vzc2lvbkludGVyZmFjZU1h
Yzo6V2ViUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlTWFjKFdlYlBsYXliYWNrU2Vzc2lvbk1vZGVs
JiBtb2RlbCkKKyAgICA6IG1fcGxheWJhY2tTZXNzaW9uTW9kZWwoJm1vZGVsKQogewotICAgIG1f
cGxheWJhY2tTZXNzaW9uTW9kZWwgPSBtb2RlbDsKIH0KIAotdm9pZCBXZWJQbGF5YmFja1Nlc3Np
b25JbnRlcmZhY2VNYWM6OnNldENsaWVudChXZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2VNYWND
bGllbnQqIGNsaWVudCkKK1dlYlBsYXliYWNrU2Vzc2lvbkludGVyZmFjZU1hYzo6fldlYlBsYXli
YWNrU2Vzc2lvbkludGVyZmFjZU1hYygpCiB7Ci0gICAgbV9jbGllbnQgPSBjbGllbnQ7Ci0KLSAg
ICBpZiAobV9jbGllbnQgJiYgbV9wbGF5YmFja1Nlc3Npb25Nb2RlbCkKLSAgICAgICAgbV9jbGll
bnQtPnJhdGVDaGFuZ2VkKG1fcGxheWJhY2tTZXNzaW9uTW9kZWwtPmlzUGxheWluZygpLCBtX3Bs
YXliYWNrU2Vzc2lvbk1vZGVsLT5wbGF5YmFja1JhdGUoKSk7CisgICAgaW52YWxpZGF0ZSgpOwog
fQogCi12b2lkIFdlYlBsYXliYWNrU2Vzc2lvbkludGVyZmFjZU1hYzo6c2V0RHVyYXRpb24oZG91
YmxlIGR1cmF0aW9uKQordm9pZCBXZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2VNYWM6OmR1cmF0
aW9uQ2hhbmdlZChkb3VibGUgZHVyYXRpb24pCiB7CiAgICAgV2ViUGxheWJhY2tDb250cm9sc01h
bmFnZXIqIGNvbnRyb2xzTWFuYWdlciA9IHBsYXlCYWNrQ29udHJvbHNNYW5hZ2VyKCk7CiAKQEAg
LTczLDcgKzczLDcgQEAgdm9pZCBXZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2VNYWM6OnNldER1
cmF0aW9uKGRvdWJsZSBkdXJhdGlvbikKICAgICBjb250cm9sc01hbmFnZXIuaGFzRW5hYmxlZFZp
ZGVvID0gWUVTOwogfQogCi12b2lkIFdlYlBsYXliYWNrU2Vzc2lvbkludGVyZmFjZU1hYzo6c2V0
Q3VycmVudFRpbWUoZG91YmxlIGN1cnJlbnRUaW1lLCBkb3VibGUgYW5jaG9yVGltZSkKK3ZvaWQg
V2ViUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlTWFjOjpjdXJyZW50VGltZUNoYW5nZWQoZG91Ymxl
IGN1cnJlbnRUaW1lLCBkb3VibGUgYW5jaG9yVGltZSkKIHsKICAgICBXZWJQbGF5YmFja0NvbnRy
b2xzTWFuYWdlciogY29udHJvbHNNYW5hZ2VyID0gcGxheUJhY2tDb250cm9sc01hbmFnZXIoKTsK
IApAQCAtODQsMTQgKzg0LDExIEBAIHZvaWQgV2ViUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlTWFj
OjpzZXRDdXJyZW50VGltZShkb3VibGUgY3VycmVudFRpbWUsIGRvdWJsZSBhCiAgICAgW2NvbnRy
b2xzTWFuYWdlciBzZXRUaW1pbmc6dGltaW5nXTsKIH0KIAotdm9pZCBXZWJQbGF5YmFja1Nlc3Np
b25JbnRlcmZhY2VNYWM6OnNldFJhdGUoYm9vbCBpc1BsYXlpbmcsIGZsb2F0IHBsYXliYWNrUmF0
ZSkKK3ZvaWQgV2ViUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlTWFjOjpyYXRlQ2hhbmdlZChib29s
IGlzUGxheWluZywgZmxvYXQgcGxheWJhY2tSYXRlKQogewogICAgIFdlYlBsYXliYWNrQ29udHJv
bHNNYW5hZ2VyKiBjb250cm9sc01hbmFnZXIgPSBwbGF5QmFja0NvbnRyb2xzTWFuYWdlcigpOwog
ICAgIFtjb250cm9sc01hbmFnZXIgc2V0UmF0ZTppc1BsYXlpbmcgPyBwbGF5YmFja1JhdGUgOiAw
Ll07CiAgICAgW2NvbnRyb2xzTWFuYWdlciBzZXRQbGF5aW5nOmlzUGxheWluZ107Ci0KLSAgICBp
ZiAobV9jbGllbnQpCi0gICAgICAgIG1fY2xpZW50LT5yYXRlQ2hhbmdlZChpc1BsYXlpbmcsIHBs
YXliYWNrUmF0ZSk7CiB9CiAKIHN0YXRpYyBSZXRhaW5QdHI8TlNNdXRhYmxlQXJyYXk+IHRpbWVS
YW5nZXNUb0FycmF5KGNvbnN0IFRpbWVSYW5nZXMmIHRpbWVSYW5nZXMpCkBAIC0xMDcsMjYgKzEw
NCwyOCBAQCBzdGF0aWMgUmV0YWluUHRyPE5TTXV0YWJsZUFycmF5PiB0aW1lUmFuZ2VzVG9BcnJh
eShjb25zdCBUaW1lUmFuZ2VzJiB0aW1lUmFuZ2VzKQogICAgIHJldHVybiByYW5nZUFycmF5Owog
fQogCi12b2lkIFdlYlBsYXliYWNrU2Vzc2lvbkludGVyZmFjZU1hYzo6c2V0U2Vla2FibGVSYW5n
ZXMoY29uc3QgVGltZVJhbmdlcyYgdGltZVJhbmdlcykKK3ZvaWQgV2ViUGxheWJhY2tTZXNzaW9u
SW50ZXJmYWNlTWFjOjpzZWVrYWJsZVJhbmdlc0NoYW5nZWQoY29uc3QgVGltZVJhbmdlcyYgdGlt
ZVJhbmdlcykKIHsKLSAgICBXZWJQbGF5YmFja0NvbnRyb2xzTWFuYWdlciogY29udHJvbHNNYW5h
Z2VyID0gcGxheUJhY2tDb250cm9sc01hbmFnZXIoKTsKLSAgICBbY29udHJvbHNNYW5hZ2VyIHNl
dFNlZWthYmxlVGltZVJhbmdlczp0aW1lUmFuZ2VzVG9BcnJheSh0aW1lUmFuZ2VzKS5nZXQoKV07
CisgICAgW3BsYXlCYWNrQ29udHJvbHNNYW5hZ2VyKCkgc2V0U2Vla2FibGVUaW1lUmFuZ2VzOnRp
bWVSYW5nZXNUb0FycmF5KHRpbWVSYW5nZXMpLmdldCgpXTsKIH0KIAotdm9pZCBXZWJQbGF5YmFj
a1Nlc3Npb25JbnRlcmZhY2VNYWM6OnNldEF1ZGlvTWVkaWFTZWxlY3Rpb25PcHRpb25zKGNvbnN0
IFZlY3RvcjxXVEY6OlN0cmluZz4mIG9wdGlvbnMsIHVpbnQ2NF90IHNlbGVjdGVkSW5kZXgpCit2
b2lkIFdlYlBsYXliYWNrU2Vzc2lvbkludGVyZmFjZU1hYzo6YXVkaW9NZWRpYVNlbGVjdGlvbk9w
dGlvbnNDaGFuZ2VkKGNvbnN0IFZlY3RvcjxXVEY6OlN0cmluZz4mIG9wdGlvbnMsIHVpbnQ2NF90
IHNlbGVjdGVkSW5kZXgpCiB7Ci0gICAgV2ViUGxheWJhY2tDb250cm9sc01hbmFnZXIqIGNvbnRy
b2xzTWFuYWdlciA9IHBsYXlCYWNrQ29udHJvbHNNYW5hZ2VyKCk7Ci0gICAgW2NvbnRyb2xzTWFu
YWdlciBzZXRBdWRpb01lZGlhU2VsZWN0aW9uT3B0aW9uczpvcHRpb25zIHdpdGhTZWxlY3RlZElu
ZGV4OnN0YXRpY19jYXN0PE5TVUludGVnZXI+KHNlbGVjdGVkSW5kZXgpXTsKKyAgICBbcGxheUJh
Y2tDb250cm9sc01hbmFnZXIoKSBzZXRBdWRpb01lZGlhU2VsZWN0aW9uT3B0aW9uczpvcHRpb25z
IHdpdGhTZWxlY3RlZEluZGV4OnN0YXRpY19jYXN0PE5TVUludGVnZXI+KHNlbGVjdGVkSW5kZXgp
XTsKIH0KIAotdm9pZCBXZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2VNYWM6OnNldExlZ2libGVN
ZWRpYVNlbGVjdGlvbk9wdGlvbnMoY29uc3QgVmVjdG9yPFdURjo6U3RyaW5nPiYgb3B0aW9ucywg
dWludDY0X3Qgc2VsZWN0ZWRJbmRleCkKK3ZvaWQgV2ViUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNl
TWFjOjpsZWdpYmxlTWVkaWFTZWxlY3Rpb25PcHRpb25zQ2hhbmdlZChjb25zdCBWZWN0b3I8V1RG
OjpTdHJpbmc+JiBvcHRpb25zLCB1aW50NjRfdCBzZWxlY3RlZEluZGV4KQogewotICAgIFdlYlBs
YXliYWNrQ29udHJvbHNNYW5hZ2VyKiBjb250cm9sc01hbmFnZXIgPSBwbGF5QmFja0NvbnRyb2xz
TWFuYWdlcigpOwotICAgIFtjb250cm9sc01hbmFnZXIgc2V0TGVnaWJsZU1lZGlhU2VsZWN0aW9u
T3B0aW9uczpvcHRpb25zIHdpdGhTZWxlY3RlZEluZGV4OnN0YXRpY19jYXN0PE5TVUludGVnZXI+
KHNlbGVjdGVkSW5kZXgpXTsKKyAgICBbcGxheUJhY2tDb250cm9sc01hbmFnZXIoKSBzZXRMZWdp
YmxlTWVkaWFTZWxlY3Rpb25PcHRpb25zOm9wdGlvbnMgd2l0aFNlbGVjdGVkSW5kZXg6c3RhdGlj
X2Nhc3Q8TlNVSW50ZWdlcj4oc2VsZWN0ZWRJbmRleCldOwogfQogCiB2b2lkIFdlYlBsYXliYWNr
U2Vzc2lvbkludGVyZmFjZU1hYzo6aW52YWxpZGF0ZSgpCiB7CisgICAgaWYgKCFtX3BsYXliYWNr
U2Vzc2lvbk1vZGVsKQorICAgICAgICByZXR1cm47CisKKyAgICBtX3BsYXliYWNrU2Vzc2lvbk1v
ZGVsLT5yZW1vdmVDbGllbnQoKnRoaXMpOworICAgIG1fcGxheWJhY2tTZXNzaW9uTW9kZWwgPSBu
dWxscHRyOwogfQogCiB2b2lkIFdlYlBsYXliYWNrU2Vzc2lvbkludGVyZmFjZU1hYzo6ZW5zdXJl
Q29udHJvbHNNYW5hZ2VyKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21h
Yy9XZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VNYWMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL21hYy9XZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VNYWMuaAppbmRleCA3NzA1ZTQ4OWIy
MzUwOWU5OGFiYzQ5ZmFkMjJhY2Y5MGU4YTE2Zjk0Li5kYjE4YzBkYTAxMTZkYmI1N2QwOTk3ZTY2
YTcwOGFhNWU3MWFlYzQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMv
V2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlTWFjLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbWFjL1dlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZU1hYy5oCkBAIC0zMCw3ICszMCw5
IEBACiAKICNpbmNsdWRlICJIVE1MTWVkaWFFbGVtZW50RW51bXMuaCIKICNpbmNsdWRlICJXZWJQ
bGF5YmFja1Nlc3Npb25JbnRlcmZhY2VNYWMuaCIKKyNpbmNsdWRlICJXZWJQbGF5YmFja1Nlc3Np
b25Nb2RlbC5oIgogI2luY2x1ZGUgIldlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZS5oIgorI2lu
Y2x1ZGUgIldlYlZpZGVvRnVsbHNjcmVlbk1vZGVsLmgiCiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50
ZWQuaD4KICNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RG
U3RyaW5nLmg+CkBAIC00MCwxMyArNDIsMTQgQEAgT0JKQ19DTEFTUyBXZWJWaWRlb0Z1bGxzY3Jl
ZW5JbnRlcmZhY2VNYWNPYmpDOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBJbnRSZWN0
OworY2xhc3MgRmxvYXRTaXplOwogY2xhc3MgV2ViUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlTWFj
OwogY2xhc3MgV2ViVmlkZW9GdWxsc2NyZWVuQ2hhbmdlT2JzZXJ2ZXI7Ci1jbGFzcyBXZWJWaWRl
b0Z1bGxzY3JlZW5Nb2RlbDsKIAogY2xhc3MgV0VCQ09SRV9FWFBPUlQgV2ViVmlkZW9GdWxsc2Ny
ZWVuSW50ZXJmYWNlTWFjCiAgICAgOiBwdWJsaWMgV2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNl
Ci0gICAgLCBwcml2YXRlIFdlYlBsYXliYWNrU2Vzc2lvbkludGVyZmFjZU1hY0NsaWVudAorICAg
ICwgcHVibGljIFdlYlZpZGVvRnVsbHNjcmVlbk1vZGVsQ2xpZW50CisgICAgLCBwcml2YXRlIFdl
YlBsYXliYWNrU2Vzc2lvbk1vZGVsQ2xpZW50CiAgICAgLCBwdWJsaWMgUmVmQ291bnRlZDxXZWJW
aWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VNYWM+IHsKIAogcHVibGljOgpAQCAtNjEsMTggKzY0LDEz
IEBAIHB1YmxpYzoKICAgICBXZWJWaWRlb0Z1bGxzY3JlZW5DaGFuZ2VPYnNlcnZlciogd2ViVmlk
ZW9GdWxsc2NyZWVuQ2hhbmdlT2JzZXJ2ZXIoKSBjb25zdCB7IHJldHVybiBtX2Z1bGxzY3JlZW5D
aGFuZ2VPYnNlcnZlcjsgfQogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0V2ViVmlkZW9GdWxs
c2NyZWVuQ2hhbmdlT2JzZXJ2ZXIoV2ViVmlkZW9GdWxsc2NyZWVuQ2hhbmdlT2JzZXJ2ZXIqKTsK
IAotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgcmVzZXRNZWRpYVN0YXRlKCkgb3ZlcnJpZGUgeyB9
Ci0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXREdXJhdGlvbihkb3VibGUpIG92ZXJyaWRlOwot
ICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0Q3VycmVudFRpbWUoZG91YmxlIC8qY3VycmVudFRp
bWUqLywgZG91YmxlIC8qYW5jaG9yVGltZSovKSBvdmVycmlkZTsKLSAgICBXRUJDT1JFX0VYUE9S
VCB2b2lkIHNldEJ1ZmZlcmVkVGltZShkb3VibGUpIG92ZXJyaWRlIHsgfQotICAgIFdFQkNPUkVf
RVhQT1JUIHZvaWQgc2V0UmF0ZShib29sIC8qaXNQbGF5aW5nKi8sIGZsb2F0IC8qcGxheWJhY2tS
YXRlKi8pIG92ZXJyaWRlOwotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0VmlkZW9EaW1lbnNp
b25zKGJvb2wgaGFzVmlkZW8sIGZsb2F0IHdpZHRoLCBmbG9hdCBoZWlnaHQpIGZpbmFsOwotICAg
IFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0U2Vla2FibGVSYW5nZXMoY29uc3QgVGltZVJhbmdlcyYp
IG92ZXJyaWRlOwotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0Q2FuUGxheUZhc3RSZXZlcnNl
KGJvb2wpIG92ZXJyaWRlIHsgfQotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0QXVkaW9NZWRp
YVNlbGVjdGlvbk9wdGlvbnMoY29uc3QgVmVjdG9yPFN0cmluZz4mIC8qb3B0aW9ucyovLCB1aW50
NjRfdCAvKnNlbGVjdGVkSW5kZXgqLykgb3ZlcnJpZGU7Ci0gICAgV0VCQ09SRV9FWFBPUlQgdm9p
ZCBzZXRMZWdpYmxlTWVkaWFTZWxlY3Rpb25PcHRpb25zKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiAv
Km9wdGlvbnMqLywgdWludDY0X3QgLypzZWxlY3RlZEluZGV4Ki8pIG92ZXJyaWRlOwotICAgIFdF
QkNPUkVfRVhQT1JUIHZvaWQgc2V0RXh0ZXJuYWxQbGF5YmFjayhib29sIGVuYWJsZWQsIEV4dGVy
bmFsUGxheWJhY2tUYXJnZXRUeXBlLCBTdHJpbmcgbG9jYWxpemVkRGV2aWNlTmFtZSkgb3ZlcnJp
ZGU7Ci0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRXaXJlbGVzc1ZpZGVvUGxheWJhY2tEaXNh
YmxlZChib29sKSBvdmVycmlkZSB7IH0KKyAgICAvLyBXZWJQbGF5YmFja1Nlc3Npb25Nb2RlbENs
aWVudAorICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgcmF0ZUNoYW5nZWQoYm9vbCBpc1BsYXlpbmcs
IGZsb2F0IHBsYXliYWNrUmF0ZSkgb3ZlcnJpZGU7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBl
eHRlcm5hbFBsYXliYWNrQ2hhbmdlZChib29sICBlbmFibGVkLCBXZWJQbGF5YmFja1Nlc3Npb25N
b2RlbDo6RXh0ZXJuYWxQbGF5YmFja1RhcmdldFR5cGUsIGNvbnN0IFN0cmluZyYgbG9jYWxpemVk
RGV2aWNlTmFtZSkgb3ZlcnJpZGU7CisKKyAgICAvLyBXZWJWaWRlb0Z1bGxzY3JlZW5Nb2RlbENs
aWVudAorICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgaGFzVmlkZW9DaGFuZ2VkKGJvb2wpIGZpbmFs
OworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgdmlkZW9EaW1lbnNpb25zQ2hhbmdlZChjb25zdCBG
bG9hdFNpemUmKSBmaW5hbDsKIAogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0dXBGdWxsc2Ny
ZWVuKE5TVmlldyYgbGF5ZXJIb3N0ZWRWaWV3LCBjb25zdCBJbnRSZWN0JiBpbml0aWFsUmVjdCwg
TlNXaW5kb3cgKnBhcmVudFdpbmRvdywgSFRNTE1lZGlhRWxlbWVudEVudW1zOjpWaWRlb0Z1bGxz
Y3JlZW5Nb2RlLCBib29sIGFsbG93c1BpY3R1cmVJblBpY3R1cmVQbGF5YmFjayk7CiAgICAgV0VC
Q09SRV9FWFBPUlQgdm9pZCBlbnRlckZ1bGxzY3JlZW4oKTsKQEAgLTk1LDggKzkzLDYgQEAgcHVi
bGljOgogICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgbWF5QXV0b21hdGljYWxseVNob3dWaWRlb1Bp
Y3R1cmVJblBpY3R1cmUoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogICAgIHZvaWQgYXBwbGlj
YXRpb25EaWRCZWNvbWVBY3RpdmUoKSB7IH0KIAotICAgIHZvaWQgcmF0ZUNoYW5nZWQoYm9vbCBp
c1BsYXlpbmcsIGZsb2F0IHBsYXliYWNrUmF0ZSkgb3ZlcnJpZGU7Ci0KICAgICBXRUJDT1JFX0VY
UE9SVCBXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VNYWNPYmpDICp2aWRlb0Z1bGxzY3JlZW5J
bnRlcmZhY2VPYmpDKCk7CiAKIHByaXZhdGU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tYWMvV2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlTWFjLm1tIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbWFjL1dlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZU1hYy5tbQppbmRl
eCA0MzhlMzljZjc5OGM1ZGE1OGVhMmRjNWYzYmJjN2ZhNDkxZjNmZWI1Li5hODA5M2IzNDRiYWYz
Zjc2ZTg4ODE5OWYwNjgxNjgwOTZjYmQzMTZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tYWMvV2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlTWFjLm1tCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9XZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VNYWMubW0K
QEAgLTM1MSwxOCArMzUxLDI1IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIFdlYlZpZGVvRnVsbHNj
cmVlbkludGVyZmFjZU1hYzo6V2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlTWFjKFdlYlBsYXli
YWNrU2Vzc2lvbkludGVyZmFjZU1hYyYgcGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlKQogICAgIDog
bV9wbGF5YmFja1Nlc3Npb25JbnRlcmZhY2UocGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlKQogewot
ICAgIG1fcGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlLT5zZXRDbGllbnQodGhpcyk7CisgICAgQVNT
RVJUKG1fcGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlLT53ZWJQbGF5YmFja1Nlc3Npb25Nb2RlbCgp
KTsKKyAgICBtX3BsYXliYWNrU2Vzc2lvbkludGVyZmFjZS0+d2ViUGxheWJhY2tTZXNzaW9uTW9k
ZWwoKS0+YWRkQ2xpZW50KCp0aGlzKTsKIH0KIAogV2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNl
TWFjOjp+V2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlTWFjKCkKIHsKLSAgICBpZiAobV9wbGF5
YmFja1Nlc3Npb25JbnRlcmZhY2UtPmNsaWVudCgpID09IHRoaXMpCi0gICAgICAgIG1fcGxheWJh
Y2tTZXNzaW9uSW50ZXJmYWNlLT5zZXRDbGllbnQobnVsbHB0cik7CisgICAgaWYgKG1fcGxheWJh
Y2tTZXNzaW9uSW50ZXJmYWNlLT53ZWJQbGF5YmFja1Nlc3Npb25Nb2RlbCgpKQorICAgICAgICBt
X3BsYXliYWNrU2Vzc2lvbkludGVyZmFjZS0+d2ViUGxheWJhY2tTZXNzaW9uTW9kZWwoKS0+cmVt
b3ZlQ2xpZW50KCp0aGlzKTsKKyAgICBpZiAobV92aWRlb0Z1bGxzY3JlZW5Nb2RlbCkKKyAgICAg
ICAgbV92aWRlb0Z1bGxzY3JlZW5Nb2RlbC0+cmVtb3ZlQ2xpZW50KCp0aGlzKTsKIH0KIAogdm9p
ZCBXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VNYWM6OnNldFdlYlZpZGVvRnVsbHNjcmVlbk1v
ZGVsKFdlYlZpZGVvRnVsbHNjcmVlbk1vZGVsKiBtb2RlbCkKIHsKKyAgICBpZiAobV92aWRlb0Z1
bGxzY3JlZW5Nb2RlbCkKKyAgICAgICAgbV92aWRlb0Z1bGxzY3JlZW5Nb2RlbC0+cmVtb3ZlQ2xp
ZW50KCp0aGlzKTsKICAgICBtX3ZpZGVvRnVsbHNjcmVlbk1vZGVsID0gbW9kZWw7CisgICAgaWYg
KG1fdmlkZW9GdWxsc2NyZWVuTW9kZWwpCisgICAgICAgIG1fdmlkZW9GdWxsc2NyZWVuTW9kZWwt
PmFkZENsaWVudCgqdGhpcyk7CiB9CiAKIHZvaWQgV2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNl
TWFjOjpzZXRXZWJWaWRlb0Z1bGxzY3JlZW5DaGFuZ2VPYnNlcnZlcihXZWJWaWRlb0Z1bGxzY3Jl
ZW5DaGFuZ2VPYnNlcnZlciogb2JzZXJ2ZXIpCkBAIC0zOTIsNDEgKzM5OSwxMSBAQCB2b2lkIFdl
YlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZU1hYzo6Y2xlYXJNb2RlKEhUTUxNZWRpYUVsZW1lbnRF
bnVtczo6VmlkZW9GdWxscwogICAgICAgICBtX3ZpZGVvRnVsbHNjcmVlbk1vZGVsLT5mdWxsc2Ny
ZWVuTW9kZUNoYW5nZWQobV9tb2RlKTsKIH0KIAotdm9pZCBXZWJWaWRlb0Z1bGxzY3JlZW5JbnRl
cmZhY2VNYWM6OnNldER1cmF0aW9uKGRvdWJsZSBkdXJhdGlvbikKLXsKLSAgICBtX3BsYXliYWNr
U2Vzc2lvbkludGVyZmFjZS0+c2V0RHVyYXRpb24oZHVyYXRpb24pOwotfQotCi12b2lkIFdlYlZp
ZGVvRnVsbHNjcmVlbkludGVyZmFjZU1hYzo6c2V0Q3VycmVudFRpbWUoZG91YmxlIGN1cnJlbnRU
aW1lLCBkb3VibGUgYW5jaG9yVGltZSkKLXsKLSAgICBtX3BsYXliYWNrU2Vzc2lvbkludGVyZmFj
ZS0+c2V0Q3VycmVudFRpbWUoY3VycmVudFRpbWUsIGFuY2hvclRpbWUpOwotfQotCi12b2lkIFdl
YlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZU1hYzo6c2V0UmF0ZShib29sIGlzUGxheWluZywgZmxv
YXQgcGxheWJhY2tSYXRlKQotewotICAgIG1fcGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlLT5zZXRS
YXRlKGlzUGxheWluZywgcGxheWJhY2tSYXRlKTsKLX0KLQogdm9pZCBXZWJWaWRlb0Z1bGxzY3Jl
ZW5JbnRlcmZhY2VNYWM6OnJhdGVDaGFuZ2VkKGJvb2wgaXNQbGF5aW5nLCBmbG9hdCBwbGF5YmFj
a1JhdGUpCiB7CiAgICAgW3ZpZGVvRnVsbHNjcmVlbkludGVyZmFjZU9iakMoKSB1cGRhdGVJc1Bs
YXlpbmc6aXNQbGF5aW5nIG5ld1BsYXliYWNrUmF0ZTpwbGF5YmFja1JhdGVdOwogfQogCi12b2lk
IFdlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZU1hYzo6c2V0U2Vla2FibGVSYW5nZXMoY29uc3Qg
VGltZVJhbmdlcyYgdGltZVJhbmdlcykKLXsKLSAgICBtX3BsYXliYWNrU2Vzc2lvbkludGVyZmFj
ZS0+c2V0U2Vla2FibGVSYW5nZXModGltZVJhbmdlcyk7Ci19Ci0KLXZvaWQgV2ViVmlkZW9GdWxs
c2NyZWVuSW50ZXJmYWNlTWFjOjpzZXRBdWRpb01lZGlhU2VsZWN0aW9uT3B0aW9ucyhjb25zdCBW
ZWN0b3I8V1RGOjpTdHJpbmc+JiBvcHRpb25zLCB1aW50NjRfdCBzZWxlY3RlZEluZGV4KQotewot
ICAgIG1fcGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlLT5zZXRBdWRpb01lZGlhU2VsZWN0aW9uT3B0
aW9ucyhvcHRpb25zLCBzZWxlY3RlZEluZGV4KTsKLX0KLQotdm9pZCBXZWJWaWRlb0Z1bGxzY3Jl
ZW5JbnRlcmZhY2VNYWM6OnNldExlZ2libGVNZWRpYVNlbGVjdGlvbk9wdGlvbnMoY29uc3QgVmVj
dG9yPFdURjo6U3RyaW5nPiYgb3B0aW9ucywgdWludDY0X3Qgc2VsZWN0ZWRJbmRleCkKLXsKLSAg
ICBtX3BsYXliYWNrU2Vzc2lvbkludGVyZmFjZS0+c2V0TGVnaWJsZU1lZGlhU2VsZWN0aW9uT3B0
aW9ucyhvcHRpb25zLCBzZWxlY3RlZEluZGV4KTsKLX0KLQogdm9pZCBXZWJWaWRlb0Z1bGxzY3Jl
ZW5JbnRlcmZhY2VNYWM6OmVuc3VyZUNvbnRyb2xzTWFuYWdlcigpCiB7CiAgICAgbV9wbGF5YmFj
a1Nlc3Npb25JbnRlcmZhY2UtPmVuc3VyZUNvbnRyb2xzTWFuYWdlcigpOwpAQCAtNTM5LDI2ICs1
MTYsMjkgQEAgdm9pZCBXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VNYWM6OnByZXBhcmVkVG9S
ZXR1cm5Ub0lubGluZShib29sIHZpc2libGUsIGNvbnMKICAgICBbbV93ZWJWaWRlb0Z1bGxzY3Jl
ZW5JbnRlcmZhY2VPYmpDIGV4aXRQSVBBbmltYXRpbmdUb1JlY3Q6KE5TUmVjdClpbmxpbmVSZWN0
IGluV2luZG93OnBhcmVudFdpbmRvd107CiB9CiAKLXZvaWQgV2ViVmlkZW9GdWxsc2NyZWVuSW50
ZXJmYWNlTWFjOjpzZXRFeHRlcm5hbFBsYXliYWNrKGJvb2wgZW5hYmxlZCwgRXh0ZXJuYWxQbGF5
YmFja1RhcmdldFR5cGUsIFN0cmluZykKK3ZvaWQgV2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNl
TWFjOjpleHRlcm5hbFBsYXliYWNrQ2hhbmdlZChib29sIGVuYWJsZWQsIFdlYlBsYXliYWNrU2Vz
c2lvbk1vZGVsOjpFeHRlcm5hbFBsYXliYWNrVGFyZ2V0VHlwZSwgY29uc3QgU3RyaW5nJikKIHsK
LSAgICBMT0coRnVsbHNjcmVlbiwgIldlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZU1hYzo6c2V0
RXh0ZXJuYWxQbGF5YmFjayglcCksIGVuYWJsZWQ6JXMiLCB0aGlzLCBib29sU3RyaW5nKGVuYWJs
ZWQpKTsKKyAgICBMT0coRnVsbHNjcmVlbiwgIldlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZU1h
Yzo6ZXh0ZXJuYWxQbGF5YmFja0NoYW5nZWQoJXApLCBlbmFibGVkOiVzIiwgdGhpcywgYm9vbFN0
cmluZyhlbmFibGVkKSk7CiAKICAgICBpZiAoZW5hYmxlZCAmJiBtX21vZGUgPT0gSFRNTE1lZGlh
RWxlbWVudEVudW1zOjpWaWRlb0Z1bGxzY3JlZW5Nb2RlUGljdHVyZUluUGljdHVyZSkKICAgICAg
ICAgZXhpdEZ1bGxzY3JlZW4oSW50UmVjdCgpLCBuaWwpOwogfQogCi12b2lkIFdlYlZpZGVvRnVs
bHNjcmVlbkludGVyZmFjZU1hYzo6c2V0VmlkZW9EaW1lbnNpb25zKGJvb2wgaGFzVmlkZW8sIGZs
b2F0IHdpZHRoLCBmbG9hdCBoZWlnaHQpCit2b2lkIFdlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFj
ZU1hYzo6aGFzVmlkZW9DaGFuZ2VkKGJvb2wgaGFzVmlkZW8pCiB7Ci0gICAgTE9HKEZ1bGxzY3Jl
ZW4sICJXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VNYWM6OnNldFZpZGVvRGltZW5zaW9ucygl
cCksIGhhc1ZpZGVvOiVzLCB3aWR0aDolLjBmLCBoZWlnaHQ6JS4wZiIsIHRoaXMsIGJvb2xTdHJp
bmcoaGFzVmlkZW8pLCB3aWR0aCwgaGVpZ2h0KTsKKyAgICBMT0coRnVsbHNjcmVlbiwgIldlYlZp
ZGVvRnVsbHNjcmVlbkludGVyZmFjZU1hYzo6aGFzVmlkZW9DaGFuZ2VkKCVwKTolcyIsIHRoaXMs
IGJvb2xTdHJpbmcoaGFzVmlkZW8pKTsKIAotICAgIGlmICghaGFzVmlkZW8pIHsKKyAgICBpZiAo
IWhhc1ZpZGVvKQogICAgICAgICBleGl0RnVsbHNjcmVlbldpdGhvdXRBbmltYXRpb25Ub01vZGUo
SFRNTE1lZGlhRWxlbWVudEVudW1zOjpWaWRlb0Z1bGxzY3JlZW5Nb2RlTm9uZSk7Ci0gICAgICAg
IHJldHVybjsKLSAgICB9Cit9CisKK3ZvaWQgV2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlTWFj
Ojp2aWRlb0RpbWVuc2lvbnNDaGFuZ2VkKGNvbnN0IEZsb2F0U2l6ZSYgdmlkZW9EaW1lbnNpb25z
KQoreworICAgIExPRyhGdWxsc2NyZWVuLCAiV2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlTWFj
Ojp2aWRlb0RpbWVuc2lvbnNDaGFuZ2VkKCVwKSwgd2lkdGg6JS4wZiwgaGVpZ2h0OiUuMGYiLCB0
aGlzLCB2aWRlb0RpbWVuc2lvbnMud2lkdGgoKSwgdmlkZW9EaW1lbnNpb25zLmhlaWdodCgpKTsK
IAogICAgIC8vIFdpZHRoIGFuZCBoZWlnaHQgY2FuIGJlIHplcm8gd2hlbiB3ZSBhcmUgdHJhbnNp
dGlvbmluZyBmcm9tIG9uZSB2aWRlbyB0byBhbm90aGVyLiBJZ25vcmUgemVybyB2YWx1ZXMuCi0g
ICAgaWYgKHdpZHRoICYmIGhlaWdodCkKLSAgICAgICAgW21fd2ViVmlkZW9GdWxsc2NyZWVuSW50
ZXJmYWNlT2JqQyBzZXRWaWRlb0RpbWVuc2lvbnM6TlNNYWtlU2l6ZSh3aWR0aCwgaGVpZ2h0KV07
CisgICAgaWYgKCF2aWRlb0RpbWVuc2lvbnMuaXNaZXJvKCkpCisgICAgICAgIFttX3dlYlZpZGVv
RnVsbHNjcmVlbkludGVyZmFjZU9iakMgc2V0VmlkZW9EaW1lbnNpb25zOnZpZGVvRGltZW5zaW9u
c107CiB9CiAKIGJvb2wgV2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlTWFjOjppc1BsYXlpbmdW
aWRlb0luRW5oYW5jZWRGdWxsc2NyZWVuKCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvbWFjL1dlYlZpZXcvV2ViVmlldy5tbSBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2Vi
Vmlldy5tbQppbmRleCA3YjUyYzMzNDBmY2JmNTM5OTVmZmFiYzRmMjAzOWM1MTAwODc2N2I1Li4x
ODcxZDIwYThhZTVjMjFhNmI2NjIyNTE5ZmRiMTk4ODFhZTJkNzg5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXcubW0KKysrIGIvU291cmNlL1dlYktpdC9tYWMv
V2ViVmlldy9XZWJWaWV3Lm1tCkBAIC04NjAzLDEwICs4NjAzLDggQEAgLSAodm9pZClfc2V0VXBQ
bGF5YmFja0NvbnRyb2xzTWFuYWdlckZvck1lZGlhRWxlbWVudDooV2ViQ29yZTo6SFRNTE1lZGlh
RWxlbWVudCYKICAgICBfcHJpdmF0ZS0+cGxheWJhY2tTZXNzaW9uTW9kZWwtPnNldE1lZGlhRWxl
bWVudCgmbWVkaWFFbGVtZW50KTsKIAogICAgIGlmICghX3ByaXZhdGUtPnBsYXliYWNrU2Vzc2lv
bkludGVyZmFjZSkKLSAgICAgICAgX3ByaXZhdGUtPnBsYXliYWNrU2Vzc2lvbkludGVyZmFjZSA9
IFdlYlBsYXliYWNrU2Vzc2lvbkludGVyZmFjZU1hYzo6Y3JlYXRlKCk7CisgICAgICAgIF9wcml2
YXRlLT5wbGF5YmFja1Nlc3Npb25JbnRlcmZhY2UgPSBXZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZh
Y2VNYWM6OmNyZWF0ZSgqX3ByaXZhdGUtPnBsYXliYWNrU2Vzc2lvbk1vZGVsKTsKIAotICAgIF9w
cml2YXRlLT5wbGF5YmFja1Nlc3Npb25JbnRlcmZhY2UtPnNldFdlYlBsYXliYWNrU2Vzc2lvbk1v
ZGVsKF9wcml2YXRlLT5wbGF5YmFja1Nlc3Npb25Nb2RlbC5nZXQoKSk7Ci0gICAgX3ByaXZhdGUt
PnBsYXliYWNrU2Vzc2lvbk1vZGVsLT5zZXRXZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2UoX3By
aXZhdGUtPnBsYXliYWNrU2Vzc2lvbkludGVyZmFjZS5nZXQoKSk7CiAgICAgW3NlbGYgdXBkYXRl
V2ViVmlld0FkZGl0aW9uc107CiB9CiAKQEAgLTg2MTYsOCArODYxNCw3IEBAIC0gKHZvaWQpX2Ns
ZWFyUGxheWJhY2tDb250cm9sc01hbmFnZXIKICAgICAgICAgcmV0dXJuOwogCiAgICAgX3ByaXZh
dGUtPnBsYXliYWNrU2Vzc2lvbk1vZGVsLT5zZXRNZWRpYUVsZW1lbnQobnVsbHB0cik7Ci0gICAg
X3ByaXZhdGUtPnBsYXliYWNrU2Vzc2lvbk1vZGVsLT5zZXRXZWJQbGF5YmFja1Nlc3Npb25JbnRl
cmZhY2UobnVsbHB0cik7Ci0gICAgX3ByaXZhdGUtPnBsYXliYWNrU2Vzc2lvbkludGVyZmFjZS0+
c2V0V2ViUGxheWJhY2tTZXNzaW9uTW9kZWwobnVsbHB0cik7CisgICAgX3ByaXZhdGUtPnBsYXli
YWNrU2Vzc2lvbkludGVyZmFjZS0+aW52YWxpZGF0ZSgpOwogCiAgICAgX3ByaXZhdGUtPnBsYXli
YWNrU2Vzc2lvbk1vZGVsID0gbnVsbHB0cjsKICAgICBfcHJpdmF0ZS0+cGxheWJhY2tTZXNzaW9u
SW50ZXJmYWNlID0gbnVsbHB0cjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9D
b2NvYS9XS1dlYlZpZXcubW0KaW5kZXggMWJmOGVkMThlZDI1ODkzMjc5N2JiYjAzMjA4NmViYjA2
ZjBmYjFiNi4uM2UzMmVmZDY2Njg2YTg0OTNhNzRkNWI4NjA3MTIyMTY1N2IwODA3OCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0KKysr
IGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0KQEAgLTU1
NCw4ICs1NTQsNiBAQCAtICh2b2lkKV9pbml0aWFsaXplV2l0aENvbmZpZ3VyYXRpb246KFdLV2Vi
Vmlld0NvbmZpZ3VyYXRpb24gKiljb25maWd1cmF0aW9uCiAgICAgICAgIF9wYWdlLT5zZXRBcHBs
aWNhdGlvbk5hbWVGb3JVc2VyQWdlbnQoYXBwbGljYXRpb25OYW1lRm9yVXNlckFnZW50KTsKIAog
ICAgIF9uYXZpZ2F0aW9uU3RhdGUgPSBzdGQ6Om1ha2VfdW5pcXVlPFdlYktpdDo6TmF2aWdhdGlv
blN0YXRlPihzZWxmKTsKLSAgICBfcGFnZS0+c2V0TmF2aWdhdGlvbkNsaWVudChfbmF2aWdhdGlv
blN0YXRlLT5jcmVhdGVOYXZpZ2F0aW9uQ2xpZW50KCkpOwotCiAgICAgX3VpRGVsZWdhdGUgPSBz
dGQ6Om1ha2VfdW5pcXVlPFdlYktpdDo6VUlEZWxlZ2F0ZT4oc2VsZik7CiAgICAgX3BhZ2UtPnNl
dEZpbmRDbGllbnQoc3RkOjptYWtlX3VuaXF1ZTxXZWJLaXQ6OkZpbmRDbGllbnQ+KHNlbGYpKTsK
ICAgICBfcGFnZS0+c2V0RGlhZ25vc3RpY0xvZ2dpbmdDbGllbnQoc3RkOjptYWtlX3VuaXF1ZTxX
ZWJLaXQ6OkRpYWdub3N0aWNMb2dnaW5nQ2xpZW50PihzZWxmKSk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29jb2EvV2ViUGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5
LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29jb2EvV2ViUGxheWJhY2tTZXNzaW9uTWFu
YWdlclByb3h5LmgKaW5kZXggOTljYTNmYzhjZDkyYmU4YmRhN2M3YWZjODIxOThhNDdlYWMzZmQ4
OC4uYTc1MzdhZjlmMzkyMTdiMWM1MmQwZmVjMGRmYmU0MzA4ZDRhOWJmNCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0NvY29hL1dlYlBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQ
cm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db2NvYS9XZWJQbGF5YmFja1Nl
c3Npb25NYW5hZ2VyUHJveHkuaApAQCAtMzMsNiArMzMsNyBAQAogI2luY2x1ZGUgPFdlYkNvcmUv
VGltZVJhbmdlcy5oPgogI2luY2x1ZGUgPFdlYkNvcmUvV2ViUGxheWJhY2tTZXNzaW9uTW9kZWwu
aD4KICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgorI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CiAj
aW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgog
I2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KQEAgLTY0LDE5ICs2NSwyMCBAQCBwdWJsaWM6CiAKICAg
ICB2b2lkIGludmFsaWRhdGUoKSB7IG1fbWFuYWdlciA9IG51bGxwdHI7IH0KIAotICAgIHZvaWQg
c2V0RHVyYXRpb24oZG91YmxlIGR1cmF0aW9uKSB7IG1fZHVyYXRpb24gPSBkdXJhdGlvbjsgfQot
ICAgIHZvaWQgc2V0Q3VycmVudFRpbWUoZG91YmxlIGN1cnJlbnRUaW1lKSB7IG1fY3VycmVudFRp
bWUgPSBjdXJyZW50VGltZTsgfQotICAgIHZvaWQgc2V0QnVmZmVyZWRUaW1lKGRvdWJsZSBidWZm
ZXJlZFRpbWUpIHsgbV9idWZmZXJlZFRpbWUgPSBidWZmZXJlZFRpbWU7IH0KLSAgICB2b2lkIHNl
dElzUGxheWluZyhib29sIGlzUGxheWluZykgeyBtX2lzUGxheWluZyA9IGlzUGxheWluZzsgfQot
ICAgIHZvaWQgc2V0UGxheWJhY2tSYXRlKGZsb2F0IHBsYXliYWNrUmF0ZSkgeyBtX3BsYXliYWNr
UmF0ZSA9IHBsYXliYWNrUmF0ZTsgfQotICAgIHZvaWQgc2V0U2Vla2FibGVSYW5nZXMoV2ViQ29y
ZTo6VGltZVJhbmdlcyYgc2Vla2FibGVSYW5nZXMpIHsgbV9zZWVrYWJsZVJhbmdlcyA9IHNlZWth
YmxlUmFuZ2VzOyB9Ci0gICAgdm9pZCBzZXRDYW5QbGF5RmFzdFJldmVyc2UoYm9vbCBjYW5QbGF5
RmFzdFJldmVyc2UpIHsgbV9jYW5QbGF5RmFzdFJldmVyc2UgPSBjYW5QbGF5RmFzdFJldmVyc2U7
IH0KLSAgICB2b2lkIHNldEF1ZGlvTWVkaWFTZWxlY3Rpb25PcHRpb25zKGNvbnN0IFZlY3RvcjxX
VEY6OlN0cmluZz4mIGF1ZGlvTWVkaWFTZWxlY3Rpb25PcHRpb25zKSB7IG1fYXVkaW9NZWRpYVNl
bGVjdGlvbk9wdGlvbnMgPSBhdWRpb01lZGlhU2VsZWN0aW9uT3B0aW9uczsgfQotICAgIHZvaWQg
c2V0QXVkaW9NZWRpYVNlbGVjdGVkSW5kZXgodWludDY0X3QgYXVkaW9NZWRpYVNlbGVjdGVkSW5k
ZXgpIHsgbV9hdWRpb01lZGlhU2VsZWN0ZWRJbmRleCA9IGF1ZGlvTWVkaWFTZWxlY3RlZEluZGV4
OyB9Ci0gICAgdm9pZCBzZXRMZWdpYmxlTWVkaWFTZWxlY3Rpb25PcHRpb25zKGNvbnN0IFZlY3Rv
cjxXVEY6OlN0cmluZz4mIGxlZ2libGVNZWRpYVNlbGVjdGlvbk9wdGlvbnMpIHsgbV9sZWdpYmxl
TWVkaWFTZWxlY3Rpb25PcHRpb25zID0gbGVnaWJsZU1lZGlhU2VsZWN0aW9uT3B0aW9uczsgfQot
ICAgIHZvaWQgc2V0TGVnaWJsZU1lZGlhU2VsZWN0ZWRJbmRleCh1aW50NjRfdCBsZWdpYmxlTWVk
aWFTZWxlY3RlZEluZGV4KSB7IG1fbGVnaWJsZU1lZGlhU2VsZWN0ZWRJbmRleCA9IGxlZ2libGVN
ZWRpYVNlbGVjdGVkSW5kZXg7IH0KLSAgICB2b2lkIHNldEV4dGVybmFsUGxheWJhY2tFbmFibGVk
KGJvb2wgZXh0ZXJuYWxQbGF5YmFja0VuYWJsZWQpIHsgbV9leHRlcm5hbFBsYXliYWNrRW5hYmxl
ZCA9IGV4dGVybmFsUGxheWJhY2tFbmFibGVkOyB9Ci0gICAgdm9pZCBzZXRXaXJlbGVzc1ZpZGVv
UGxheWJhY2tEaXNhYmxlZChib29sIHdpcmVsZXNzVmlkZW9QbGF5YmFja0Rpc2FibGVkKSB7IG1f
d2lyZWxlc3NWaWRlb1BsYXliYWNrRGlzYWJsZWQgPSB3aXJlbGVzc1ZpZGVvUGxheWJhY2tEaXNh
YmxlZDsgfQorICAgIC8vIFdlYlBsYXliYWNrU2Vzc2lvbk1vZGVsCisgICAgdm9pZCBhZGRDbGll
bnQoV2ViQ29yZTo6V2ViUGxheWJhY2tTZXNzaW9uTW9kZWxDbGllbnQmKSBmaW5hbDsKKyAgICB2
b2lkIHJlbW92ZUNsaWVudChXZWJDb3JlOjpXZWJQbGF5YmFja1Nlc3Npb25Nb2RlbENsaWVudCYp
ZmluYWw7CisKKyAgICB2b2lkIHNldER1cmF0aW9uKGRvdWJsZSk7CisgICAgdm9pZCBzZXRDdXJy
ZW50VGltZShkb3VibGUpOworICAgIHZvaWQgc2V0QnVmZmVyZWRUaW1lKGRvdWJsZSk7CisgICAg
dm9pZCBzZXRSYXRlKGJvb2wgaXNQbGF5aW5nLCBmbG9hdCBwbGF5YmFja1JhdGUpOworICAgIHZv
aWQgc2V0U2Vla2FibGVSYW5nZXMoV2ViQ29yZTo6VGltZVJhbmdlcyYpOworICAgIHZvaWQgc2V0
Q2FuUGxheUZhc3RSZXZlcnNlKGJvb2wpOworICAgIHZvaWQgc2V0QXVkaW9NZWRpYVNlbGVjdGlv
bk9wdGlvbnMoY29uc3QgVmVjdG9yPFdURjo6U3RyaW5nPiYgb3B0aW9ucywgdWludDY0X3QgaW5k
ZXgpOworICAgIHZvaWQgc2V0TGVnaWJsZU1lZGlhU2VsZWN0aW9uT3B0aW9ucyhjb25zdCBWZWN0
b3I8V1RGOjpTdHJpbmc+JiBvcHRpb25zLCB1aW50NjRfdCBpbmRleCk7CisgICAgdm9pZCBzZXRF
eHRlcm5hbFBsYXliYWNrKGJvb2wsIFdlYlBsYXliYWNrU2Vzc2lvbk1vZGVsOjpFeHRlcm5hbFBs
YXliYWNrVGFyZ2V0VHlwZSwgY29uc3QgU3RyaW5nJik7CisgICAgdm9pZCBzZXRXaXJlbGVzc1Zp
ZGVvUGxheWJhY2tEaXNhYmxlZChib29sKTsKIAogcHJpdmF0ZToKICAgICBmcmllbmQgY2xhc3Mg
V2ViVmlkZW9GdWxsc2NyZWVuTW9kZWxDb250ZXh0OwpAQCAtMTEzLDEwICsxMTUsMTMgQEAgcHJp
dmF0ZToKICAgICBWZWN0b3I8V1RGOjpTdHJpbmc+IGxlZ2libGVNZWRpYVNlbGVjdGlvbk9wdGlv
bnMoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX2xlZ2libGVNZWRpYVNlbGVjdGlvbk9wdGlvbnM7
IH0KICAgICB1aW50NjRfdCBsZWdpYmxlTWVkaWFTZWxlY3RlZEluZGV4KCkgY29uc3QgZmluYWwg
eyByZXR1cm4gbV9sZWdpYmxlTWVkaWFTZWxlY3RlZEluZGV4OyB9CiAgICAgYm9vbCBleHRlcm5h
bFBsYXliYWNrRW5hYmxlZCgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fZXh0ZXJuYWxQbGF5YmFj
a0VuYWJsZWQ7IH0KKyAgICBXZWJQbGF5YmFja1Nlc3Npb25Nb2RlbDo6RXh0ZXJuYWxQbGF5YmFj
a1RhcmdldFR5cGUgZXh0ZXJuYWxQbGF5YmFja1RhcmdldFR5cGUoKSBjb25zdCBmaW5hbCB7IHJl
dHVybiBtX2V4dGVybmFsUGxheWJhY2tUYXJnZXRUeXBlOyB9CisgICAgU3RyaW5nIGV4dGVybmFs
UGxheWJhY2tMb2NhbGl6ZWREZXZpY2VOYW1lKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9leHRl
cm5hbFBsYXliYWNrTG9jYWxpemVkRGV2aWNlTmFtZTsgfQogICAgIGJvb2wgd2lyZWxlc3NWaWRl
b1BsYXliYWNrRGlzYWJsZWQoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX3dpcmVsZXNzVmlkZW9Q
bGF5YmFja0Rpc2FibGVkOyB9CiAKICAgICBXZWJQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHkq
IG1fbWFuYWdlcjsKICAgICB1aW50NjRfdCBtX2NvbnRleHRJZDsKKyAgICBIYXNoU2V0PFdlYkNv
cmU6OldlYlBsYXliYWNrU2Vzc2lvbk1vZGVsQ2xpZW50Kj4gbV9jbGllbnRzOwogICAgIGRvdWJs
ZSBtX2R1cmF0aW9uIHsgMCB9OwogICAgIGRvdWJsZSBtX2N1cnJlbnRUaW1lIHsgMCB9OwogICAg
IGRvdWJsZSBtX2J1ZmZlcmVkVGltZSB7IDAgfTsKQEAgLTEyOSw2ICsxMzQsOCBAQCBwcml2YXRl
OgogICAgIFZlY3RvcjxXVEY6OlN0cmluZz4gbV9sZWdpYmxlTWVkaWFTZWxlY3Rpb25PcHRpb25z
OwogICAgIHVpbnQ2NF90IG1fbGVnaWJsZU1lZGlhU2VsZWN0ZWRJbmRleCB7IDAgfTsKICAgICBi
b29sIG1fZXh0ZXJuYWxQbGF5YmFja0VuYWJsZWQgeyBmYWxzZSB9OworICAgIFdlYlBsYXliYWNr
U2Vzc2lvbk1vZGVsOjpFeHRlcm5hbFBsYXliYWNrVGFyZ2V0VHlwZSBtX2V4dGVybmFsUGxheWJh
Y2tUYXJnZXRUeXBlIHsgV2ViUGxheWJhY2tTZXNzaW9uTW9kZWw6OlRhcmdldFR5cGVOb25lIH07
CisgICAgU3RyaW5nIG1fZXh0ZXJuYWxQbGF5YmFja0xvY2FsaXplZERldmljZU5hbWU7CiAgICAg
Ym9vbCBtX3dpcmVsZXNzVmlkZW9QbGF5YmFja0Rpc2FibGVkIHsgZmFsc2UgfTsKIH07CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db2NvYS9XZWJQbGF5YmFja1Nlc3Np
b25NYW5hZ2VyUHJveHkubW0gYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29jb2EvV2ViUGxh
eWJhY2tTZXNzaW9uTWFuYWdlclByb3h5Lm1tCmluZGV4IDhjMWZhMGMzMGM5ZjFiNTE0YTBmNTg0
NmI1MDJhMDBiNzcyMDg0MzIuLjVjYzk4ZTM2YzAyODJjOGE1NDdiN2VjMTU3Mjc3NGI4YzQwMTkw
ZmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db2NvYS9XZWJQbGF5YmFj
a1Nlc3Npb25NYW5hZ2VyUHJveHkubW0KKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0Nv
Y29hL1dlYlBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eS5tbQpAQCAtNDAsNiArNDAsMTggQEAg
bmFtZXNwYWNlIFdlYktpdCB7CiAKICNwcmFnbWEgbWFyayAtIFdlYlBsYXliYWNrU2Vzc2lvbk1v
ZGVsQ29udGV4dAogCit2b2lkIFdlYlBsYXliYWNrU2Vzc2lvbk1vZGVsQ29udGV4dDo6YWRkQ2xp
ZW50KFdlYlBsYXliYWNrU2Vzc2lvbk1vZGVsQ2xpZW50JiBjbGllbnQpCit7CisgICAgQVNTRVJU
KCFtX2NsaWVudHMuY29udGFpbnMoJmNsaWVudCkpOworICAgIG1fY2xpZW50cy5hZGQoJmNsaWVu
dCk7Cit9CisKK3ZvaWQgV2ViUGxheWJhY2tTZXNzaW9uTW9kZWxDb250ZXh0OjpyZW1vdmVDbGll
bnQoV2ViUGxheWJhY2tTZXNzaW9uTW9kZWxDbGllbnQmIGNsaWVudCkKK3sKKyAgICBBU1NFUlQo
bV9jbGllbnRzLmNvbnRhaW5zKCZjbGllbnQpKTsKKyAgICBtX2NsaWVudHMucmVtb3ZlKCZjbGll
bnQpOworfQorCiB2b2lkIFdlYlBsYXliYWNrU2Vzc2lvbk1vZGVsQ29udGV4dDo6cGxheSgpCiB7
CiAgICAgaWYgKG1fbWFuYWdlcikKQEAgLTExMiw2ICsxMjQsODUgQEAgdm9pZCBXZWJQbGF5YmFj
a1Nlc3Npb25Nb2RlbENvbnRleHQ6OnNlbGVjdExlZ2libGVNZWRpYU9wdGlvbih1aW50NjRfdCBv
cHRpb25JZCkKICAgICAgICAgbV9tYW5hZ2VyLT5zZWxlY3RMZWdpYmxlTWVkaWFPcHRpb24obV9j
b250ZXh0SWQsIG9wdGlvbklkKTsKIH0KIAordm9pZCBXZWJQbGF5YmFja1Nlc3Npb25Nb2RlbENv
bnRleHQ6OnNldER1cmF0aW9uKGRvdWJsZSBkdXJhdGlvbikKK3sKKyAgICBtX2R1cmF0aW9uID0g
ZHVyYXRpb247CisgICAgZm9yIChhdXRvKiBjbGllbnQgOiBtX2NsaWVudHMpCisgICAgICAgIGNs
aWVudC0+ZHVyYXRpb25DaGFuZ2VkKGR1cmF0aW9uKTsKK30KKwordm9pZCBXZWJQbGF5YmFja1Nl
c3Npb25Nb2RlbENvbnRleHQ6OnNldEN1cnJlbnRUaW1lKGRvdWJsZSBjdXJyZW50VGltZSkKK3sK
KyAgICBtX2N1cnJlbnRUaW1lID0gY3VycmVudFRpbWU7CisgICAgYXV0byBhbmNob3JUaW1lID0g
W1tOU1Byb2Nlc3NJbmZvIHByb2Nlc3NJbmZvXSBzeXN0ZW1VcHRpbWVdOworCisgICAgZm9yIChh
dXRvKiBjbGllbnQgOiBtX2NsaWVudHMpCisgICAgICAgIGNsaWVudC0+Y3VycmVudFRpbWVDaGFu
Z2VkKGN1cnJlbnRUaW1lLCBhbmNob3JUaW1lKTsKK30KKwordm9pZCBXZWJQbGF5YmFja1Nlc3Np
b25Nb2RlbENvbnRleHQ6OnNldEJ1ZmZlcmVkVGltZShkb3VibGUgYnVmZmVyZWRUaW1lKQorewor
ICAgIG1fYnVmZmVyZWRUaW1lID0gYnVmZmVyZWRUaW1lOworICAgIGZvciAoYXV0byogY2xpZW50
IDogbV9jbGllbnRzKQorICAgICAgICBjbGllbnQtPmJ1ZmZlcmVkVGltZUNoYW5nZWQoYnVmZmVy
ZWRUaW1lKTsKK30KKwordm9pZCBXZWJQbGF5YmFja1Nlc3Npb25Nb2RlbENvbnRleHQ6OnNldFJh
dGUoYm9vbCBpc1BsYXlpbmcsIGZsb2F0IHBsYXliYWNrUmF0ZSkKK3sKKyAgICBtX2lzUGxheWlu
ZyA9IGlzUGxheWluZzsKKyAgICBtX3BsYXliYWNrUmF0ZSA9IHBsYXliYWNrUmF0ZTsKKyAgICBm
b3IgKGF1dG8qIGNsaWVudCA6IG1fY2xpZW50cykKKyAgICAgICAgY2xpZW50LT5yYXRlQ2hhbmdl
ZChpc1BsYXlpbmcsIHBsYXliYWNrUmF0ZSk7Cit9CisKK3ZvaWQgV2ViUGxheWJhY2tTZXNzaW9u
TW9kZWxDb250ZXh0OjpzZXRTZWVrYWJsZVJhbmdlcyhXZWJDb3JlOjpUaW1lUmFuZ2VzJiBzZWVr
YWJsZVJhbmdlcykKK3sKKyAgICBtX3NlZWthYmxlUmFuZ2VzID0gc2Vla2FibGVSYW5nZXM7Cisg
ICAgZm9yIChhdXRvKiBjbGllbnQgOiBtX2NsaWVudHMpCisgICAgICAgIGNsaWVudC0+c2Vla2Fi
bGVSYW5nZXNDaGFuZ2VkKHNlZWthYmxlUmFuZ2VzKTsKK30KKwordm9pZCBXZWJQbGF5YmFja1Nl
c3Npb25Nb2RlbENvbnRleHQ6OnNldENhblBsYXlGYXN0UmV2ZXJzZShib29sIGNhblBsYXlGYXN0
UmV2ZXJzZSkKK3sKKyAgICBtX2NhblBsYXlGYXN0UmV2ZXJzZSA9IGNhblBsYXlGYXN0UmV2ZXJz
ZTsKKyAgICBmb3IgKGF1dG8qIGNsaWVudCA6IG1fY2xpZW50cykKKyAgICAgICAgY2xpZW50LT5j
YW5QbGF5RmFzdFJldmVyc2VDaGFuZ2VkKGNhblBsYXlGYXN0UmV2ZXJzZSk7Cit9CisKK3ZvaWQg
V2ViUGxheWJhY2tTZXNzaW9uTW9kZWxDb250ZXh0OjpzZXRBdWRpb01lZGlhU2VsZWN0aW9uT3B0
aW9ucyhjb25zdCBWZWN0b3I8V1RGOjpTdHJpbmc+JiBhdWRpb01lZGlhU2VsZWN0aW9uT3B0aW9u
cywgdWludDY0X3QgYXVkaW9NZWRpYVNlbGVjdGVkSW5kZXgpCit7CisgICAgbV9hdWRpb01lZGlh
U2VsZWN0aW9uT3B0aW9ucyA9IGF1ZGlvTWVkaWFTZWxlY3Rpb25PcHRpb25zOworICAgIG1fYXVk
aW9NZWRpYVNlbGVjdGVkSW5kZXggPSBhdWRpb01lZGlhU2VsZWN0ZWRJbmRleDsKKyAgICBmb3Ig
KGF1dG8qIGNsaWVudCA6IG1fY2xpZW50cykKKyAgICAgICAgY2xpZW50LT5hdWRpb01lZGlhU2Vs
ZWN0aW9uT3B0aW9uc0NoYW5nZWQoYXVkaW9NZWRpYVNlbGVjdGlvbk9wdGlvbnMsIGF1ZGlvTWVk
aWFTZWxlY3RlZEluZGV4KTsKK30KKwordm9pZCBXZWJQbGF5YmFja1Nlc3Npb25Nb2RlbENvbnRl
eHQ6OnNldExlZ2libGVNZWRpYVNlbGVjdGlvbk9wdGlvbnMoY29uc3QgVmVjdG9yPFdURjo6U3Ry
aW5nPiYgbGVnaWJsZU1lZGlhU2VsZWN0aW9uT3B0aW9ucywgdWludDY0X3QgbGVnaWJsZU1lZGlh
U2VsZWN0ZWRJbmRleCkKK3sKKyAgICBtX2xlZ2libGVNZWRpYVNlbGVjdGlvbk9wdGlvbnMgPSBs
ZWdpYmxlTWVkaWFTZWxlY3Rpb25PcHRpb25zOworICAgIG1fbGVnaWJsZU1lZGlhU2VsZWN0ZWRJ
bmRleCA9IGxlZ2libGVNZWRpYVNlbGVjdGVkSW5kZXg7CisKKyAgICBmb3IgKGF1dG8qIGNsaWVu
dCA6IG1fY2xpZW50cykKKyAgICAgICAgY2xpZW50LT5sZWdpYmxlTWVkaWFTZWxlY3Rpb25PcHRp
b25zQ2hhbmdlZChsZWdpYmxlTWVkaWFTZWxlY3Rpb25PcHRpb25zLCBsZWdpYmxlTWVkaWFTZWxl
Y3RlZEluZGV4KTsKK30KKwordm9pZCBXZWJQbGF5YmFja1Nlc3Npb25Nb2RlbENvbnRleHQ6OnNl
dEV4dGVybmFsUGxheWJhY2soYm9vbCBlbmFibGVkLCBXZWJQbGF5YmFja1Nlc3Npb25Nb2RlbDo6
RXh0ZXJuYWxQbGF5YmFja1RhcmdldFR5cGUgdHlwZSwgY29uc3QgU3RyaW5nJiBsb2NhbGl6ZWRO
YW1lKQoreworICAgIG1fZXh0ZXJuYWxQbGF5YmFja0VuYWJsZWQgPSBlbmFibGVkOworICAgIG1f
ZXh0ZXJuYWxQbGF5YmFja1RhcmdldFR5cGUgPSB0eXBlOworICAgIG1fZXh0ZXJuYWxQbGF5YmFj
a0xvY2FsaXplZERldmljZU5hbWUgPSBsb2NhbGl6ZWROYW1lOworCisgICAgZm9yIChhdXRvKiBj
bGllbnQgOiBtX2NsaWVudHMpCisgICAgICAgIGNsaWVudC0+ZXh0ZXJuYWxQbGF5YmFja0NoYW5n
ZWQoZW5hYmxlZCwgdHlwZSwgbG9jYWxpemVkTmFtZSk7Cit9CisKK3ZvaWQgV2ViUGxheWJhY2tT
ZXNzaW9uTW9kZWxDb250ZXh0OjpzZXRXaXJlbGVzc1ZpZGVvUGxheWJhY2tEaXNhYmxlZChib29s
IHdpcmVsZXNzVmlkZW9QbGF5YmFja0Rpc2FibGVkKQoreworICAgIG1fd2lyZWxlc3NWaWRlb1Bs
YXliYWNrRGlzYWJsZWQgPSB3aXJlbGVzc1ZpZGVvUGxheWJhY2tEaXNhYmxlZDsKKyAgICBmb3Ig
KGF1dG8qIGNsaWVudCA6IG1fY2xpZW50cykKKyAgICAgICAgY2xpZW50LT53aXJlbGVzc1ZpZGVv
UGxheWJhY2tEaXNhYmxlZENoYW5nZWQod2lyZWxlc3NWaWRlb1BsYXliYWNrRGlzYWJsZWQpOwor
fQorCiAjcHJhZ21hIG1hcmsgLSBXZWJQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHkKIAogUmVm
UHRyPFdlYlBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eT4gV2ViUGxheWJhY2tTZXNzaW9uTWFu
YWdlclByb3h5OjpjcmVhdGUoV2ViUGFnZVByb3h5JiBwYWdlKQpAQCAtMTUyLDkgKzI0Myw3IEBA
IHZvaWQgV2ViUGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5OjppbnZhbGlkYXRlKCkKIFdlYlBs
YXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eTo6TW9kZWxJbnRlcmZhY2VUdXBsZSBXZWJQbGF5YmFj
a1Nlc3Npb25NYW5hZ2VyUHJveHk6OmNyZWF0ZU1vZGVsQW5kSW50ZXJmYWNlKHVpbnQ2NF90IGNv
bnRleHRJZCkKIHsKICAgICBSZWY8V2ViUGxheWJhY2tTZXNzaW9uTW9kZWxDb250ZXh0PiBtb2Rl
bCA9IFdlYlBsYXliYWNrU2Vzc2lvbk1vZGVsQ29udGV4dDo6Y3JlYXRlKCp0aGlzLCBjb250ZXh0
SWQpOwotICAgIFJlZjxQbGF0Zm9ybVdlYlBsYXliYWNrU2Vzc2lvbkludGVyZmFjZT4gaW50ZXJm
YWNlID0gUGxhdGZvcm1XZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2U6OmNyZWF0ZSgpOwotCi0g
ICAgaW50ZXJmYWNlLT5zZXRXZWJQbGF5YmFja1Nlc3Npb25Nb2RlbCgmbW9kZWwuZ2V0KCkpOwor
ICAgIFJlZjxQbGF0Zm9ybVdlYlBsYXliYWNrU2Vzc2lvbkludGVyZmFjZT4gaW50ZXJmYWNlID0g
UGxhdGZvcm1XZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2U6OmNyZWF0ZShtb2RlbCk7CiAKICAg
ICByZXR1cm4gc3RkOjptYWtlX3R1cGxlKFdURk1vdmUobW9kZWwpLCBXVEZNb3ZlKGludGVyZmFj
ZSkpOwogfQpAQCAtMTk0LDYgKzI4MywxMSBAQCB2b2lkIFdlYlBsYXliYWNrU2Vzc2lvbk1hbmFn
ZXJQcm94eTo6cmVtb3ZlQ2xpZW50Rm9yQ29udGV4dCh1aW50NjRfdCBjb250ZXh0SWQpCiAKICAg
ICBpZiAoY2xpZW50Q291bnQgPD0gMCkgewogICAgICAgICBtX2NsaWVudENvdW50cy5yZW1vdmUo
Y29udGV4dElkKTsKKworICAgICAgICBSZWZQdHI8V2ViUGxheWJhY2tTZXNzaW9uTW9kZWxDb250
ZXh0PiBtb2RlbDsKKyAgICAgICAgUmVmUHRyPFBsYXRmb3JtV2ViUGxheWJhY2tTZXNzaW9uSW50
ZXJmYWNlPiBpbnRlcmZhY2U7CisgICAgICAgIHN0ZDo6dGllKG1vZGVsLCBpbnRlcmZhY2UpID0g
ZW5zdXJlTW9kZWxBbmRJbnRlcmZhY2UoY29udGV4dElkKTsKKyAgICAgICAgaW50ZXJmYWNlLT5p
bnZhbGlkYXRlKCk7CiAgICAgICAgIG1fY29udGV4dE1hcC5yZW1vdmUoY29udGV4dElkKTsKICAg
ICAgICAgcmV0dXJuOwogICAgIH0KQEAgLTI0MSwyMCArMzM1LDEyIEBAIHZvaWQgV2ViUGxheWJh
Y2tTZXNzaW9uTWFuYWdlclByb3h5OjpyZXNldE1lZGlhU3RhdGUodWludDY0X3QgY29udGV4dElk
KQogCiB2b2lkIFdlYlBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eTo6c2V0Q3VycmVudFRpbWUo
dWludDY0X3QgY29udGV4dElkLCBkb3VibGUgY3VycmVudFRpbWUsIGRvdWJsZSBob3N0VGltZSkK
IHsKLSAgICBSZWZQdHI8V2ViUGxheWJhY2tTZXNzaW9uTW9kZWxDb250ZXh0PiBtb2RlbDsKLSAg
ICBSZWZQdHI8UGxhdGZvcm1XZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2U+IGludGVyZmFjZTsK
LSAgICBzdGQ6OnRpZShtb2RlbCwgaW50ZXJmYWNlKSA9IGVuc3VyZU1vZGVsQW5kSW50ZXJmYWNl
KGNvbnRleHRJZCk7Ci0gICAgbW9kZWwtPnNldEN1cnJlbnRUaW1lKGN1cnJlbnRUaW1lKTsKLSAg
ICBpbnRlcmZhY2UtPnNldEN1cnJlbnRUaW1lKGN1cnJlbnRUaW1lLCBob3N0VGltZSk7CisgICAg
ZW5zdXJlTW9kZWwoY29udGV4dElkKS5zZXRDdXJyZW50VGltZShjdXJyZW50VGltZSk7CiB9CiAK
IHZvaWQgV2ViUGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5OjpzZXRCdWZmZXJlZFRpbWUodWlu
dDY0X3QgY29udGV4dElkLCBkb3VibGUgYnVmZmVyZWRUaW1lKQogewotICAgIFJlZlB0cjxXZWJQ
bGF5YmFja1Nlc3Npb25Nb2RlbENvbnRleHQ+IG1vZGVsOwotICAgIFJlZlB0cjxQbGF0Zm9ybVdl
YlBsYXliYWNrU2Vzc2lvbkludGVyZmFjZT4gaW50ZXJmYWNlOwotICAgIHN0ZDo6dGllKG1vZGVs
LCBpbnRlcmZhY2UpID0gZW5zdXJlTW9kZWxBbmRJbnRlcmZhY2UoY29udGV4dElkKTsKLSAgICBt
b2RlbC0+c2V0QnVmZmVyZWRUaW1lKGJ1ZmZlcmVkVGltZSk7Ci0gICAgaW50ZXJmYWNlLT5zZXRC
dWZmZXJlZFRpbWUoYnVmZmVyZWRUaW1lKTsKKyAgICBlbnN1cmVNb2RlbChjb250ZXh0SWQpLnNl
dEJ1ZmZlcmVkVGltZShidWZmZXJlZFRpbWUpOwogfQogCiB2b2lkIFdlYlBsYXliYWNrU2Vzc2lv
bk1hbmFnZXJQcm94eTo6c2V0U2Vla2FibGVSYW5nZXNWZWN0b3IodWludDY0X3QgY29udGV4dElk
LCBWZWN0b3I8c3RkOjpwYWlyPGRvdWJsZSwgZG91YmxlPj4gcmFuZ2VzKQpAQCAtMjY3LDgwICsz
NTMsNDUgQEAgdm9pZCBXZWJQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHk6OnNldFNlZWthYmxl
UmFuZ2VzVmVjdG9yKHVpbnQ2NF90IGNvbnRleHRJZCwKICAgICAgICAgdGltZVJhbmdlcy0+YWRk
KHJhbmdlLmZpcnN0LCByYW5nZS5zZWNvbmQpOwogICAgIH0KIAotICAgIFJlZlB0cjxXZWJQbGF5
YmFja1Nlc3Npb25Nb2RlbENvbnRleHQ+IG1vZGVsOwotICAgIFJlZlB0cjxQbGF0Zm9ybVdlYlBs
YXliYWNrU2Vzc2lvbkludGVyZmFjZT4gaW50ZXJmYWNlOwotICAgIHN0ZDo6dGllKG1vZGVsLCBp
bnRlcmZhY2UpID0gZW5zdXJlTW9kZWxBbmRJbnRlcmZhY2UoY29udGV4dElkKTsKLSAgICBtb2Rl
bC0+c2V0U2Vla2FibGVSYW5nZXModGltZVJhbmdlcyk7Ci0gICAgaW50ZXJmYWNlLT5zZXRTZWVr
YWJsZVJhbmdlcyh0aW1lUmFuZ2VzKTsKKyAgICBlbnN1cmVNb2RlbChjb250ZXh0SWQpLnNldFNl
ZWthYmxlUmFuZ2VzKHRpbWVSYW5nZXMpOwogfQogCiB2b2lkIFdlYlBsYXliYWNrU2Vzc2lvbk1h
bmFnZXJQcm94eTo6c2V0Q2FuUGxheUZhc3RSZXZlcnNlKHVpbnQ2NF90IGNvbnRleHRJZCwgYm9v
bCB2YWx1ZSkKIHsKLSAgICBSZWZQdHI8V2ViUGxheWJhY2tTZXNzaW9uTW9kZWxDb250ZXh0PiBt
b2RlbDsKLSAgICBSZWZQdHI8UGxhdGZvcm1XZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2U+IGlu
dGVyZmFjZTsKLSAgICBzdGQ6OnRpZShtb2RlbCwgaW50ZXJmYWNlKSA9IGVuc3VyZU1vZGVsQW5k
SW50ZXJmYWNlKGNvbnRleHRJZCk7Ci0gICAgbW9kZWwtPnNldENhblBsYXlGYXN0UmV2ZXJzZSh2
YWx1ZSk7Ci0gICAgaW50ZXJmYWNlLT5zZXRDYW5QbGF5RmFzdFJldmVyc2UodmFsdWUpOworICAg
IGVuc3VyZU1vZGVsKGNvbnRleHRJZCkuc2V0Q2FuUGxheUZhc3RSZXZlcnNlKHZhbHVlKTsKIH0K
IAogdm9pZCBXZWJQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHk6OnNldEF1ZGlvTWVkaWFTZWxl
Y3Rpb25PcHRpb25zKHVpbnQ2NF90IGNvbnRleHRJZCwgVmVjdG9yPFN0cmluZz4gb3B0aW9ucywg
dWludDY0X3Qgc2VsZWN0ZWRJbmRleCkKIHsKLSAgICBSZWZQdHI8V2ViUGxheWJhY2tTZXNzaW9u
TW9kZWxDb250ZXh0PiBtb2RlbDsKLSAgICBSZWZQdHI8UGxhdGZvcm1XZWJQbGF5YmFja1Nlc3Np
b25JbnRlcmZhY2U+IGludGVyZmFjZTsKLSAgICBzdGQ6OnRpZShtb2RlbCwgaW50ZXJmYWNlKSA9
IGVuc3VyZU1vZGVsQW5kSW50ZXJmYWNlKGNvbnRleHRJZCk7Ci0gICAgbW9kZWwtPnNldEF1ZGlv
TWVkaWFTZWxlY3Rpb25PcHRpb25zKG9wdGlvbnMpOwotICAgIG1vZGVsLT5zZXRBdWRpb01lZGlh
U2VsZWN0ZWRJbmRleChzZWxlY3RlZEluZGV4KTsKLSAgICBpbnRlcmZhY2UtPnNldEF1ZGlvTWVk
aWFTZWxlY3Rpb25PcHRpb25zKG9wdGlvbnMsIHNlbGVjdGVkSW5kZXgpOworICAgIGVuc3VyZU1v
ZGVsKGNvbnRleHRJZCkuc2V0QXVkaW9NZWRpYVNlbGVjdGlvbk9wdGlvbnMob3B0aW9ucywgc2Vs
ZWN0ZWRJbmRleCk7CiB9CiAKIHZvaWQgV2ViUGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5Ojpz
ZXRMZWdpYmxlTWVkaWFTZWxlY3Rpb25PcHRpb25zKHVpbnQ2NF90IGNvbnRleHRJZCwgVmVjdG9y
PFN0cmluZz4gb3B0aW9ucywgdWludDY0X3Qgc2VsZWN0ZWRJbmRleCkKIHsKLSAgICBSZWZQdHI8
V2ViUGxheWJhY2tTZXNzaW9uTW9kZWxDb250ZXh0PiBtb2RlbDsKLSAgICBSZWZQdHI8UGxhdGZv
cm1XZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2U+IGludGVyZmFjZTsKLSAgICBzdGQ6OnRpZSht
b2RlbCwgaW50ZXJmYWNlKSA9IGVuc3VyZU1vZGVsQW5kSW50ZXJmYWNlKGNvbnRleHRJZCk7Ci0g
ICAgbW9kZWwtPnNldExlZ2libGVNZWRpYVNlbGVjdGlvbk9wdGlvbnMob3B0aW9ucyk7Ci0gICAg
bW9kZWwtPnNldExlZ2libGVNZWRpYVNlbGVjdGVkSW5kZXgoc2VsZWN0ZWRJbmRleCk7Ci0gICAg
aW50ZXJmYWNlLT5zZXRMZWdpYmxlTWVkaWFTZWxlY3Rpb25PcHRpb25zKG9wdGlvbnMsIHNlbGVj
dGVkSW5kZXgpOworICAgIGVuc3VyZU1vZGVsKGNvbnRleHRJZCkuc2V0TGVnaWJsZU1lZGlhU2Vs
ZWN0aW9uT3B0aW9ucyhvcHRpb25zLCBzZWxlY3RlZEluZGV4KTsKIH0KIAogdm9pZCBXZWJQbGF5
YmFja1Nlc3Npb25NYW5hZ2VyUHJveHk6OnNldEV4dGVybmFsUGxheWJhY2tQcm9wZXJ0aWVzKHVp
bnQ2NF90IGNvbnRleHRJZCwgYm9vbCBlbmFibGVkLCB1aW50MzJfdCB0YXJnZXRUeXBlLCBTdHJp
bmcgbG9jYWxpemVkRGV2aWNlTmFtZSkKIHsKLSAgICBXZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZh
Y2U6OkV4dGVybmFsUGxheWJhY2tUYXJnZXRUeXBlIHR5cGUgPSBzdGF0aWNfY2FzdDxXZWJQbGF5
YmFja1Nlc3Npb25JbnRlcmZhY2U6OkV4dGVybmFsUGxheWJhY2tUYXJnZXRUeXBlPih0YXJnZXRU
eXBlKTsKLSAgICBBU1NFUlQodHlwZSA9PSBXZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2U6OlRh
cmdldFR5cGVBaXJQbGF5IHx8IHR5cGUgPT0gV2ViUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlOjpU
YXJnZXRUeXBlVFZPdXQgfHwgdHlwZSA9PSBXZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2U6OlRh
cmdldFR5cGVOb25lKTsKKyAgICBXZWJQbGF5YmFja1Nlc3Npb25Nb2RlbDo6RXh0ZXJuYWxQbGF5
YmFja1RhcmdldFR5cGUgdHlwZSA9IHN0YXRpY19jYXN0PFdlYlBsYXliYWNrU2Vzc2lvbk1vZGVs
OjpFeHRlcm5hbFBsYXliYWNrVGFyZ2V0VHlwZT4odGFyZ2V0VHlwZSk7CisgICAgQVNTRVJUKHR5
cGUgPT0gV2ViUGxheWJhY2tTZXNzaW9uTW9kZWw6OlRhcmdldFR5cGVBaXJQbGF5IHx8IHR5cGUg
PT0gV2ViUGxheWJhY2tTZXNzaW9uTW9kZWw6OlRhcmdldFR5cGVUVk91dCB8fCB0eXBlID09IFdl
YlBsYXliYWNrU2Vzc2lvbk1vZGVsOjpUYXJnZXRUeXBlTm9uZSk7CiAKLSAgICBSZWZQdHI8V2Vi
UGxheWJhY2tTZXNzaW9uTW9kZWxDb250ZXh0PiBtb2RlbDsKLSAgICBSZWZQdHI8UGxhdGZvcm1X
ZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2U+IGludGVyZmFjZTsKLSAgICBzdGQ6OnRpZShtb2Rl
bCwgaW50ZXJmYWNlKSA9IGVuc3VyZU1vZGVsQW5kSW50ZXJmYWNlKGNvbnRleHRJZCk7Ci0gICAg
bW9kZWwtPnNldEV4dGVybmFsUGxheWJhY2tFbmFibGVkKGVuYWJsZWQpOwotICAgIGludGVyZmFj
ZS0+c2V0RXh0ZXJuYWxQbGF5YmFjayhlbmFibGVkLCB0eXBlLCBsb2NhbGl6ZWREZXZpY2VOYW1l
KTsKKyAgICBlbnN1cmVNb2RlbChjb250ZXh0SWQpLnNldEV4dGVybmFsUGxheWJhY2soZW5hYmxl
ZCwgdHlwZSwgbG9jYWxpemVkRGV2aWNlTmFtZSk7CiB9CiAKIHZvaWQgV2ViUGxheWJhY2tTZXNz
aW9uTWFuYWdlclByb3h5OjpzZXRXaXJlbGVzc1ZpZGVvUGxheWJhY2tEaXNhYmxlZCh1aW50NjRf
dCBjb250ZXh0SWQsIGJvb2wgZGlzYWJsZWQpCiB7Ci0gICAgUmVmUHRyPFdlYlBsYXliYWNrU2Vz
c2lvbk1vZGVsQ29udGV4dD4gbW9kZWw7Ci0gICAgUmVmUHRyPFBsYXRmb3JtV2ViUGxheWJhY2tT
ZXNzaW9uSW50ZXJmYWNlPiBpbnRlcmZhY2U7Ci0gICAgc3RkOjp0aWUobW9kZWwsIGludGVyZmFj
ZSkgPSBlbnN1cmVNb2RlbEFuZEludGVyZmFjZShjb250ZXh0SWQpOwotICAgIG1vZGVsLT5zZXRX
aXJlbGVzc1ZpZGVvUGxheWJhY2tEaXNhYmxlZChkaXNhYmxlZCk7Ci0gICAgaW50ZXJmYWNlLT5z
ZXRXaXJlbGVzc1ZpZGVvUGxheWJhY2tEaXNhYmxlZChkaXNhYmxlZCk7CisgICAgZW5zdXJlTW9k
ZWwoY29udGV4dElkKS5zZXRXaXJlbGVzc1ZpZGVvUGxheWJhY2tEaXNhYmxlZChkaXNhYmxlZCk7
CiB9CiAKIHZvaWQgV2ViUGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5OjpzZXREdXJhdGlvbih1
aW50NjRfdCBjb250ZXh0SWQsIGRvdWJsZSBkdXJhdGlvbikKIHsKLSAgICBSZWZQdHI8V2ViUGxh
eWJhY2tTZXNzaW9uTW9kZWxDb250ZXh0PiBtb2RlbDsKLSAgICBSZWZQdHI8UGxhdGZvcm1XZWJQ
bGF5YmFja1Nlc3Npb25JbnRlcmZhY2U+IGludGVyZmFjZTsKLSAgICBzdGQ6OnRpZShtb2RlbCwg
aW50ZXJmYWNlKSA9IGVuc3VyZU1vZGVsQW5kSW50ZXJmYWNlKGNvbnRleHRJZCk7Ci0gICAgbW9k
ZWwtPnNldER1cmF0aW9uKGR1cmF0aW9uKTsKLSAgICBpbnRlcmZhY2UtPnNldER1cmF0aW9uKGR1
cmF0aW9uKTsKKyAgICBlbnN1cmVNb2RlbChjb250ZXh0SWQpLnNldER1cmF0aW9uKGR1cmF0aW9u
KTsKIH0KIAogdm9pZCBXZWJQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHk6OnNldFJhdGUodWlu
dDY0X3QgY29udGV4dElkLCBib29sIGlzUGxheWluZywgZG91YmxlIHJhdGUpCiB7Ci0gICAgUmVm
UHRyPFdlYlBsYXliYWNrU2Vzc2lvbk1vZGVsQ29udGV4dD4gbW9kZWw7Ci0gICAgUmVmUHRyPFBs
YXRmb3JtV2ViUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlPiBpbnRlcmZhY2U7Ci0gICAgc3RkOjp0
aWUobW9kZWwsIGludGVyZmFjZSkgPSBlbnN1cmVNb2RlbEFuZEludGVyZmFjZShjb250ZXh0SWQp
OwotICAgIG1vZGVsLT5zZXRJc1BsYXlpbmcoaXNQbGF5aW5nKTsKLSAgICBtb2RlbC0+c2V0UGxh
eWJhY2tSYXRlKHJhdGUpOwotICAgIGludGVyZmFjZS0+c2V0UmF0ZShpc1BsYXlpbmcsIHJhdGUp
OworICAgIGVuc3VyZU1vZGVsKGNvbnRleHRJZCkuc2V0UmF0ZShpc1BsYXlpbmcsIHJhdGUpOwog
fQogCiAjcHJhZ21hIG1hcmsgTWVzc2FnZXMgdG8gV2ViUGxheWJhY2tTZXNzaW9uTWFuYWdlcgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0NvY29hL1dlYlZpZGVvRnVsbHNj
cmVlbk1hbmFnZXJQcm94eS5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0NvY29hL1dlYlZp
ZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eS5oCmluZGV4IDdmMTgzNzlkMTlhMjM0OWQwZjQ3OTY0
OTBkOTA2NTBkMjI0YTQ4YmIuLjMwMjgwYTNjMGQ2NThmN2MyMzBiMmZjZGNjNGM3YTE2OGM2YWU0
NTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db2NvYS9XZWJWaWRlb0Z1
bGxzY3JlZW5NYW5hZ2VyUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29j
b2EvV2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5LmgKQEAgLTM0LDYgKzM0LDcgQEAKICNp
bmNsdWRlIDxXZWJDb3JlL1dlYlZpZGVvRnVsbHNjcmVlbkNoYW5nZU9ic2VydmVyLmg+CiAjaW5j
bHVkZSA8V2ViQ29yZS9XZWJWaWRlb0Z1bGxzY3JlZW5Nb2RlbC5oPgogI2luY2x1ZGUgPHd0Zi9I
YXNoTWFwLmg+CisjaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KICNpbmNsdWRlIDx3dGYvUGFzc1Jl
ZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAjaW5jbHVkZSA8d3RmL1JlZlB0
ci5oPgpAQCAtNTcsNyArNTgsMTAgQEAgY2xhc3MgV2ViUGxheWJhY2tTZXNzaW9uTWFuYWdlclBy
b3h5OwogY2xhc3MgV2ViUGxheWJhY2tTZXNzaW9uTW9kZWxDb250ZXh0OwogY2xhc3MgV2ViVmlk
ZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5OwogCi1jbGFzcyBXZWJWaWRlb0Z1bGxzY3JlZW5Nb2Rl
bENvbnRleHQgZmluYWw6IHB1YmxpYyBSZWZDb3VudGVkPFdlYlZpZGVvRnVsbHNjcmVlbk1vZGVs
Q29udGV4dD4sIHB1YmxpYyBXZWJDb3JlOjpXZWJWaWRlb0Z1bGxzY3JlZW5Nb2RlbCwgcHVibGlj
IFdlYkNvcmU6OldlYlZpZGVvRnVsbHNjcmVlbkNoYW5nZU9ic2VydmVyICB7CitjbGFzcyBXZWJW
aWRlb0Z1bGxzY3JlZW5Nb2RlbENvbnRleHQgZmluYWwKKyAgICA6IHB1YmxpYyBSZWZDb3VudGVk
PFdlYlZpZGVvRnVsbHNjcmVlbk1vZGVsQ29udGV4dD4KKyAgICAsIHB1YmxpYyBXZWJDb3JlOjpX
ZWJWaWRlb0Z1bGxzY3JlZW5Nb2RlbAorICAgICwgcHVibGljIFdlYkNvcmU6OldlYlZpZGVvRnVs
bHNjcmVlbkNoYW5nZU9ic2VydmVyICB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFJlZjxXZWJWaWRl
b0Z1bGxzY3JlZW5Nb2RlbENvbnRleHQ+IGNyZWF0ZShXZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2Vy
UHJveHkmIG1hbmFnZXIsIFdlYlBsYXliYWNrU2Vzc2lvbk1vZGVsQ29udGV4dCYgcGxheWJhY2tT
ZXNzaW9uTW9kZWwsIHVpbnQ2NF90IGNvbnRleHRJZCkKICAgICB7CkBAIC03NCwxMSArNzgsMTUg
QEAgcHJpdmF0ZToKICAgICBXZWJWaWRlb0Z1bGxzY3JlZW5Nb2RlbENvbnRleHQoV2ViVmlkZW9G
dWxsc2NyZWVuTWFuYWdlclByb3h5JiwgV2ViUGxheWJhY2tTZXNzaW9uTW9kZWxDb250ZXh0Jiwg
dWludDY0X3QpOwogCiAgICAgLy8gV2ViVmlkZW9GdWxsc2NyZWVuTW9kZWwKKyAgICB2b2lkIGFk
ZENsaWVudChXZWJDb3JlOjpXZWJWaWRlb0Z1bGxzY3JlZW5Nb2RlbENsaWVudCYpIG92ZXJyaWRl
OworICAgIHZvaWQgcmVtb3ZlQ2xpZW50KFdlYkNvcmU6OldlYlZpZGVvRnVsbHNjcmVlbk1vZGVs
Q2xpZW50Jikgb3ZlcnJpZGU7CiAgICAgdm9pZCByZXF1ZXN0RnVsbHNjcmVlbk1vZGUoV2ViQ29y
ZTo6SFRNTE1lZGlhRWxlbWVudEVudW1zOjpWaWRlb0Z1bGxzY3JlZW5Nb2RlKSBvdmVycmlkZTsK
ICAgICB2b2lkIHNldFZpZGVvTGF5ZXJGcmFtZShXZWJDb3JlOjpGbG9hdFJlY3QpIG92ZXJyaWRl
OwogICAgIHZvaWQgc2V0VmlkZW9MYXllckdyYXZpdHkoVmlkZW9HcmF2aXR5KSBvdmVycmlkZTsK
ICAgICB2b2lkIGZ1bGxzY3JlZW5Nb2RlQ2hhbmdlZChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50
RW51bXM6OlZpZGVvRnVsbHNjcmVlbk1vZGUpIG92ZXJyaWRlOwogICAgIGJvb2wgaXNWaXNpYmxl
KCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgYm9vbCBoYXNWaWRlbygpIGNvbnN0IG92ZXJyaWRlIHsg
cmV0dXJuIG1faGFzVmlkZW87IH0KKyAgICBXZWJDb3JlOjpGbG9hdFNpemUgdmlkZW9EaW1lbnNp
b25zKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV92aWRlb0RpbWVuc2lvbnM7IH0KIAogICAg
IC8vIFdlYlZpZGVvRnVsbHNjcmVlbkNoYW5nZU9ic2VydmVyCiAgICAgdm9pZCBkaWRTZXR1cEZ1
bGxzY3JlZW4oKSBvdmVycmlkZTsKQEAgLTkxLDYgKzk5LDkgQEAgcHJpdmF0ZToKICAgICBSZWY8
V2ViUGxheWJhY2tTZXNzaW9uTW9kZWxDb250ZXh0PiBtX3BsYXliYWNrU2Vzc2lvbk1vZGVsOwog
ICAgIHVpbnQ2NF90IG1fY29udGV4dElkOwogICAgIFJldGFpblB0cjxQbGF0Zm9ybVZpZXcgKj4g
bV9sYXllckhvc3RWaWV3OworICAgIEhhc2hTZXQ8V2ViQ29yZTo6V2ViVmlkZW9GdWxsc2NyZWVu
TW9kZWxDbGllbnQqPiBtX2NsaWVudHM7CisgICAgV2ViQ29yZTo6RmxvYXRTaXplIG1fdmlkZW9E
aW1lbnNpb25zOworICAgIGJvb2wgbV9oYXNWaWRlbyB7IGZhbHNlIH07CiB9OwogCiBjbGFzcyBX
ZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHkgOiBwdWJsaWMgUmVmQ291bnRlZDxXZWJWaWRl
b0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHk+LCBwcml2YXRlIElQQzo6TWVzc2FnZVJlY2VpdmVyIHsK
QEAgLTEyNiw3ICsxMzcsOCBAQCBwcml2YXRlOgogCiAgICAgLy8gTWVzc2FnZXMgZnJvbSBXZWJW
aWRlb0Z1bGxzY3JlZW5NYW5hZ2VyCiAgICAgdm9pZCBzZXR1cEZ1bGxzY3JlZW5XaXRoSUQodWlu
dDY0X3QgY29udGV4dElkLCB1aW50MzJfdCB2aWRlb0xheWVySUQsIGNvbnN0IFdlYkNvcmU6Oklu
dFJlY3QmIGluaXRpYWxSZWN0LCBmbG9hdCBob3N0aW5nU2NhbGVGYWN0b3IsIFdlYkNvcmU6OkhU
TUxNZWRpYUVsZW1lbnRFbnVtczo6VmlkZW9GdWxsc2NyZWVuTW9kZSwgYm9vbCBhbGxvd3NQaWN0
dXJlSW5QaWN0dXJlKTsKLSAgICB2b2lkIHNldFZpZGVvRGltZW5zaW9ucyh1aW50NjRfdCBjb250
ZXh0SWQsIGJvb2wgaGFzVmlkZW8sIHVuc2lnbmVkIHdpZHRoLCB1bnNpZ25lZCBoZWlnaHQpOwor
ICAgIHZvaWQgc2V0SGFzVmlkZW8odWludDY0X3QgY29udGV4dElkLCBib29sKTsKKyAgICB2b2lk
IHNldFZpZGVvRGltZW5zaW9ucyh1aW50NjRfdCBjb250ZXh0SWQsIGNvbnN0IFdlYkNvcmU6OkZs
b2F0U2l6ZSYpOwogICAgIHZvaWQgZW50ZXJGdWxsc2NyZWVuKHVpbnQ2NF90IGNvbnRleHRJZCk7
CiAgICAgdm9pZCBleGl0RnVsbHNjcmVlbih1aW50NjRfdCBjb250ZXh0SWQsIFdlYkNvcmU6Oklu
dFJlY3QgZmluYWxSZWN0KTsKICAgICB2b2lkIGNsZWFudXBGdWxsc2NyZWVuKHVpbnQ2NF90IGNv
bnRleHRJZCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29jb2EvV2Vi
VmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5Lm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0NvY29hL1dlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eS5tZXNzYWdlcy5p
bgppbmRleCBlNDk2NjgwYjUyOTM5MzI3NTdlZDdkNWZiZDJhNjY1YzYyOTMzMGVmLi5mMjgxNWQ2
NzIzOGU5ZDNhZmZjZjAxZjRmNGRiZDQwNTI0MDg0NGNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQ29jb2EvV2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5Lm1lc3Nh
Z2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db2NvYS9XZWJWaWRlb0Z1bGxz
Y3JlZW5NYW5hZ2VyUHJveHkubWVzc2FnZXMuaW4KQEAgLTIyLDcgKzIyLDggQEAKIAogI2lmIChQ
TEFURk9STShJT1MpICYmIEhBVkUoQVZLSVQpKSB8fCAoUExBVEZPUk0oTUFDKSAmJiBFTkFCTEUo
VklERU9fUFJFU0VOVEFUSU9OX01PREUpKQogbWVzc2FnZXMgLT4gV2ViVmlkZW9GdWxsc2NyZWVu
TWFuYWdlclByb3h5IHsKLSAgICBTZXRWaWRlb0RpbWVuc2lvbnModWludDY0X3QgY29udGV4dElk
LCBib29sIGhhc1ZpZGVvLCB1bnNpZ25lZCB3aWR0aCwgdW5zaWduZWQgaGVpZ2h0KQorICAgIFNl
dEhhc1ZpZGVvKHVpbnQ2NF90IGNvbnRleHRJZCwgYm9vbCBoYXNWaWRlbykKKyAgICBTZXRWaWRl
b0RpbWVuc2lvbnModWludDY0X3QgY29udGV4dElkLCBXZWJDb3JlOjpGbG9hdFNpemUgdmlkZW9E
aW1lbnNpb25zKQogICAgIFNldHVwRnVsbHNjcmVlbldpdGhJRCh1aW50NjRfdCBjb250ZXh0SWQs
IHVpbnQzMl90IHZpZGVvTGF5ZXJJRCwgV2ViQ29yZTo6SW50UmVjdCBpbml0aWFsUmVjdCwgZmxv
YXQgaG9zdGluZ1NjYWxlRmFjdG9yLCBXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50RW51bXM6OlZp
ZGVvRnVsbHNjcmVlbk1vZGUgdmlkZW9GdWxsc2NyZWVuTW9kZSwgYm9vbCBhbGxvd3NQaWN0dXJl
SW5QaWN0dXJlKQogICAgIEVudGVyRnVsbHNjcmVlbih1aW50NjRfdCBjb250ZXh0SWQpCiAgICAg
RXhpdEZ1bGxzY3JlZW4odWludDY0X3QgY29udGV4dElkLCBXZWJDb3JlOjpJbnRSZWN0IGZpbmFs
UmVjdCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db2NvYS9XZWJWaWRl
b0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHkubW0gYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29j
b2EvV2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5Lm1tCmluZGV4IGM0Mjg2YmZlYmU5N2Y5
YzZhOTMwNjU0OTA2NjQ1ZDBjYzliODZhYzkuLjAxMmM3OWU5OTE0YTk0ZGJmMDgzZTEwOTg1NmE0
MjU0NWMyNmM5YjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db2NvYS9X
ZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHkubW0KKysrIGIvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0NvY29hL1dlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eS5tbQpAQCAtMTI0LDYg
KzEyNCwxOCBAQCBXZWJWaWRlb0Z1bGxzY3JlZW5Nb2RlbENvbnRleHQ6On5XZWJWaWRlb0Z1bGxz
Y3JlZW5Nb2RlbENvbnRleHQoKQogewogfQogCit2b2lkIFdlYlZpZGVvRnVsbHNjcmVlbk1vZGVs
Q29udGV4dDo6YWRkQ2xpZW50KFdlYlZpZGVvRnVsbHNjcmVlbk1vZGVsQ2xpZW50JiBjbGllbnQp
Cit7CisgICAgQVNTRVJUKCFtX2NsaWVudHMuY29udGFpbnMoJmNsaWVudCkpOworICAgIG1fY2xp
ZW50cy5hZGQoJmNsaWVudCk7Cit9CisKK3ZvaWQgV2ViVmlkZW9GdWxsc2NyZWVuTW9kZWxDb250
ZXh0OjpyZW1vdmVDbGllbnQoV2ViVmlkZW9GdWxsc2NyZWVuTW9kZWxDbGllbnQmIGNsaWVudCkK
K3sKKyAgICBBU1NFUlQobV9jbGllbnRzLmNvbnRhaW5zKCZjbGllbnQpKTsKKyAgICBtX2NsaWVu
dHMucmVtb3ZlKCZjbGllbnQpOworfQorCiB2b2lkIFdlYlZpZGVvRnVsbHNjcmVlbk1vZGVsQ29u
dGV4dDo6cmVxdWVzdEZ1bGxzY3JlZW5Nb2RlKEhUTUxNZWRpYUVsZW1lbnRFbnVtczo6VmlkZW9G
dWxsc2NyZWVuTW9kZSBtb2RlKQogewogICAgIGlmIChtX21hbmFnZXIpCkBAIC0zNTgsOSArMzcw
LDE0IEBAIHZvaWQgV2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5OjpzZXR1cEZ1bGxzY3Jl
ZW5XaXRoSUQodWludDY0X3QgY29udGV4dElkLCB1CiAjZW5kaWYKIH0KIAotdm9pZCBXZWJWaWRl
b0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHk6OnNldFZpZGVvRGltZW5zaW9ucyh1aW50NjRfdCBjb250
ZXh0SWQsIGJvb2wgaGFzVmlkZW8sIHVuc2lnbmVkIHdpZHRoLCB1bnNpZ25lZCBoZWlnaHQpCit2
b2lkIFdlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eTo6c2V0SGFzVmlkZW8odWludDY0X3Qg
Y29udGV4dElkLCBib29sIGhhc1ZpZGVvKQoreworICAgIGVuc3VyZUludGVyZmFjZShjb250ZXh0
SWQpLmhhc1ZpZGVvQ2hhbmdlZChoYXNWaWRlbyk7Cit9CisKK3ZvaWQgV2ViVmlkZW9GdWxsc2Ny
ZWVuTWFuYWdlclByb3h5OjpzZXRWaWRlb0RpbWVuc2lvbnModWludDY0X3QgY29udGV4dElkLCBj
b25zdCBGbG9hdFNpemUmIHZpZGVvRGltZW5zaW9ucykKIHsKLSAgICBlbnN1cmVJbnRlcmZhY2Uo
Y29udGV4dElkKS5zZXRWaWRlb0RpbWVuc2lvbnMoaGFzVmlkZW8sIHdpZHRoLCBoZWlnaHQpOwor
ICAgIGVuc3VyZUludGVyZmFjZShjb250ZXh0SWQpLnZpZGVvRGltZW5zaW9uc0NoYW5nZWQodmlk
ZW9EaW1lbnNpb25zKTsKIH0KIAogdm9pZCBXZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHk6
OmVudGVyRnVsbHNjcmVlbih1aW50NjRfdCBjb250ZXh0SWQpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL2NvY29hL1dlYlBsYXliYWNrU2Vzc2lvbk1hbmFnZXIuaCBiL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvY29jb2EvV2ViUGxheWJhY2tTZXNzaW9uTWFuYWdlci5o
CmluZGV4IDdhYTIxNjAzMjllMDhmMjUyNThhMmQ5MGVmNWFjYmU3NjgxOGJhOGUuLjE2YTIwN2Q4
OWM1MjU0NjE1ZGRmOGM1NjM5YTBjNjk5M2VhZjg4MWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvY29jb2EvV2ViUGxheWJhY2tTZXNzaW9uTWFuYWdlci5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvY29jb2EvV2ViUGxheWJhY2tTZXNzaW9uTWFuYWdlci5o
CkBAIC01NCw3ICs1NCwxMCBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIGNsYXNzIFdlYlBhZ2U7CiBj
bGFzcyBXZWJQbGF5YmFja1Nlc3Npb25NYW5hZ2VyOwogCi1jbGFzcyBXZWJQbGF5YmFja1Nlc3Np
b25JbnRlcmZhY2VDb250ZXh0IGZpbmFsIDogcHVibGljIFJlZkNvdW50ZWQ8V2ViUGxheWJhY2tT
ZXNzaW9uSW50ZXJmYWNlQ29udGV4dD4sIHB1YmxpYyBXZWJDb3JlOjpXZWJQbGF5YmFja1Nlc3Np
b25JbnRlcmZhY2UgeworY2xhc3MgV2ViUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlQ29udGV4dCBm
aW5hbAorICAgIDogcHVibGljIFJlZkNvdW50ZWQ8V2ViUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNl
Q29udGV4dD4KKyAgICAsIHB1YmxpYyBXZWJDb3JlOjpXZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZh
Y2UKKyAgICAsIHB1YmxpYyBXZWJDb3JlOjpXZWJQbGF5YmFja1Nlc3Npb25Nb2RlbENsaWVudCB7
CiBwdWJsaWM6CiAgICAgc3RhdGljIFJlZjxXZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2VDb250
ZXh0PiBjcmVhdGUoV2ViUGxheWJhY2tTZXNzaW9uTWFuYWdlciYgbWFuYWdlciwgdWludDY0X3Qg
Y29udGV4dElkKQogICAgIHsKQEAgLTY5LDE2ICs3MiwxOCBAQCBwcml2YXRlOgogCiAgICAgLy8g
V2ViUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlCiAgICAgdm9pZCByZXNldE1lZGlhU3RhdGUoKSBm
aW5hbDsKLSAgICB2b2lkIHNldER1cmF0aW9uKGRvdWJsZSkgZmluYWw7Ci0gICAgdm9pZCBzZXRD
dXJyZW50VGltZShkb3VibGUgY3VycmVudFRpbWUsIGRvdWJsZSBhbmNob3JUaW1lKSBmaW5hbDsK
LSAgICB2b2lkIHNldEJ1ZmZlcmVkVGltZShkb3VibGUpIGZpbmFsOwotICAgIHZvaWQgc2V0UmF0
ZShib29sIGlzUGxheWluZywgZmxvYXQgcGxheWJhY2tSYXRlKSBmaW5hbDsKLSAgICB2b2lkIHNl
dFNlZWthYmxlUmFuZ2VzKGNvbnN0IFdlYkNvcmU6OlRpbWVSYW5nZXMmKSBmaW5hbDsKLSAgICB2
b2lkIHNldENhblBsYXlGYXN0UmV2ZXJzZShib29sIHZhbHVlKSBmaW5hbDsKLSAgICB2b2lkIHNl
dEF1ZGlvTWVkaWFTZWxlY3Rpb25PcHRpb25zKGNvbnN0IFZlY3RvcjxXVEY6OlN0cmluZz4mIG9w
dGlvbnMsIHVpbnQ2NF90IHNlbGVjdGVkSW5kZXgpIGZpbmFsOwotICAgIHZvaWQgc2V0TGVnaWJs
ZU1lZGlhU2VsZWN0aW9uT3B0aW9ucyhjb25zdCBWZWN0b3I8V1RGOjpTdHJpbmc+JiBvcHRpb25z
LCB1aW50NjRfdCBzZWxlY3RlZEluZGV4KSBmaW5hbDsKLSAgICB2b2lkIHNldEV4dGVybmFsUGxh
eWJhY2soYm9vbCBlbmFibGVkLCBFeHRlcm5hbFBsYXliYWNrVGFyZ2V0VHlwZSwgV1RGOjpTdHJp
bmcgbG9jYWxpemVkRGV2aWNlTmFtZSkgZmluYWw7Ci0gICAgdm9pZCBzZXRXaXJlbGVzc1ZpZGVv
UGxheWJhY2tEaXNhYmxlZChib29sKSBmaW5hbDsKKworICAgIC8vIFdlYlBsYXliYWNrTW9kZWxD
bGllbnQKKyAgICB2b2lkIGR1cmF0aW9uQ2hhbmdlZChkb3VibGUpIGZpbmFsOworICAgIHZvaWQg
Y3VycmVudFRpbWVDaGFuZ2VkKGRvdWJsZSBjdXJyZW50VGltZSwgZG91YmxlIGFuY2hvclRpbWUp
IGZpbmFsOworICAgIHZvaWQgYnVmZmVyZWRUaW1lQ2hhbmdlZChkb3VibGUpIGZpbmFsOworICAg
IHZvaWQgcmF0ZUNoYW5nZWQoYm9vbCBpc1BsYXlpbmcsIGZsb2F0IHBsYXliYWNrUmF0ZSkgZmlu
YWw7CisgICAgdm9pZCBzZWVrYWJsZVJhbmdlc0NoYW5nZWQoY29uc3QgV2ViQ29yZTo6VGltZVJh
bmdlcyYpIGZpbmFsOworICAgIHZvaWQgY2FuUGxheUZhc3RSZXZlcnNlQ2hhbmdlZChib29sIHZh
bHVlKSBmaW5hbDsKKyAgICB2b2lkIGF1ZGlvTWVkaWFTZWxlY3Rpb25PcHRpb25zQ2hhbmdlZChj
b25zdCBWZWN0b3I8U3RyaW5nPiYgb3B0aW9ucywgdWludDY0X3Qgc2VsZWN0ZWRJbmRleCkgZmlu
YWw7CisgICAgdm9pZCBsZWdpYmxlTWVkaWFTZWxlY3Rpb25PcHRpb25zQ2hhbmdlZChjb25zdCBW
ZWN0b3I8U3RyaW5nPiYgb3B0aW9ucywgdWludDY0X3Qgc2VsZWN0ZWRJbmRleCkgZmluYWw7Cisg
ICAgdm9pZCBleHRlcm5hbFBsYXliYWNrQ2hhbmdlZChib29sIGVuYWJsZWQsIFdlYkNvcmU6Oldl
YlBsYXliYWNrU2Vzc2lvbk1vZGVsOjpFeHRlcm5hbFBsYXliYWNrVGFyZ2V0VHlwZSwgY29uc3Qg
U3RyaW5nJiBsb2NhbGl6ZWREZXZpY2VOYW1lKSBmaW5hbDsKKyAgICB2b2lkIHdpcmVsZXNzVmlk
ZW9QbGF5YmFja0Rpc2FibGVkQ2hhbmdlZChib29sKSBmaW5hbDsKIAogICAgIFdlYlBsYXliYWNr
U2Vzc2lvbkludGVyZmFjZUNvbnRleHQoV2ViUGxheWJhY2tTZXNzaW9uTWFuYWdlciYsIHVpbnQ2
NF90IGNvbnRleHRJZCk7CiAKQEAgLTExNCwxNiArMTE5LDE2IEBAIHByb3RlY3RlZDoKIAogICAg
IC8vIEludGVyZmFjZSB0byBXZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2VDb250ZXh0CiAgICAg
dm9pZCByZXNldE1lZGlhU3RhdGUodWludDY0X3QgY29udGV4dElkKTsKLSAgICB2b2lkIHNldER1
cmF0aW9uKHVpbnQ2NF90IGNvbnRleHRJZCwgZG91YmxlKTsKLSAgICB2b2lkIHNldEN1cnJlbnRU
aW1lKHVpbnQ2NF90IGNvbnRleHRJZCwgZG91YmxlIGN1cnJlbnRUaW1lLCBkb3VibGUgYW5jaG9y
VGltZSk7Ci0gICAgdm9pZCBzZXRCdWZmZXJlZFRpbWUodWludDY0X3QgY29udGV4dElkLCBkb3Vi
bGUgYnVmZmVyZWRUaW1lKTsKLSAgICB2b2lkIHNldFJhdGUodWludDY0X3QgY29udGV4dElkLCBi
b29sIGlzUGxheWluZywgZmxvYXQgcGxheWJhY2tSYXRlKTsKLSAgICB2b2lkIHNldFNlZWthYmxl
UmFuZ2VzKHVpbnQ2NF90IGNvbnRleHRJZCwgY29uc3QgV2ViQ29yZTo6VGltZVJhbmdlcyYpOwot
ICAgIHZvaWQgc2V0Q2FuUGxheUZhc3RSZXZlcnNlKHVpbnQ2NF90IGNvbnRleHRJZCwgYm9vbCB2
YWx1ZSk7Ci0gICAgdm9pZCBzZXRBdWRpb01lZGlhU2VsZWN0aW9uT3B0aW9ucyh1aW50NjRfdCBj
b250ZXh0SWQsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBvcHRpb25zLCB1aW50NjRfdCBzZWxlY3Rl
ZEluZGV4KTsKLSAgICB2b2lkIHNldExlZ2libGVNZWRpYVNlbGVjdGlvbk9wdGlvbnModWludDY0
X3QgY29udGV4dElkLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgb3B0aW9ucywgdWludDY0X3Qgc2Vs
ZWN0ZWRJbmRleCk7Ci0gICAgdm9pZCBzZXRFeHRlcm5hbFBsYXliYWNrKHVpbnQ2NF90IGNvbnRl
eHRJZCwgYm9vbCBlbmFibGVkLCBXZWJDb3JlOjpXZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2U6
OkV4dGVybmFsUGxheWJhY2tUYXJnZXRUeXBlLCBTdHJpbmcgbG9jYWxpemVkRGV2aWNlTmFtZSk7
Ci0gICAgdm9pZCBzZXRXaXJlbGVzc1ZpZGVvUGxheWJhY2tEaXNhYmxlZCh1aW50NjRfdCBjb250
ZXh0SWQsIGJvb2wpOworICAgIHZvaWQgZHVyYXRpb25DaGFuZ2VkKHVpbnQ2NF90IGNvbnRleHRJ
ZCwgZG91YmxlKTsKKyAgICB2b2lkIGN1cnJlbnRUaW1lQ2hhbmdlZCh1aW50NjRfdCBjb250ZXh0
SWQsIGRvdWJsZSBjdXJyZW50VGltZSwgZG91YmxlIGFuY2hvclRpbWUpOworICAgIHZvaWQgYnVm
ZmVyZWRUaW1lQ2hhbmdlZCh1aW50NjRfdCBjb250ZXh0SWQsIGRvdWJsZSBidWZmZXJlZFRpbWUp
OworICAgIHZvaWQgcmF0ZUNoYW5nZWQodWludDY0X3QgY29udGV4dElkLCBib29sIGlzUGxheWlu
ZywgZmxvYXQgcGxheWJhY2tSYXRlKTsKKyAgICB2b2lkIHNlZWthYmxlUmFuZ2VzQ2hhbmdlZCh1
aW50NjRfdCBjb250ZXh0SWQsIGNvbnN0IFdlYkNvcmU6OlRpbWVSYW5nZXMmKTsKKyAgICB2b2lk
IGNhblBsYXlGYXN0UmV2ZXJzZUNoYW5nZWQodWludDY0X3QgY29udGV4dElkLCBib29sIHZhbHVl
KTsKKyAgICB2b2lkIGF1ZGlvTWVkaWFTZWxlY3Rpb25PcHRpb25zQ2hhbmdlZCh1aW50NjRfdCBj
b250ZXh0SWQsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBvcHRpb25zLCB1aW50NjRfdCBzZWxlY3Rl
ZEluZGV4KTsKKyAgICB2b2lkIGxlZ2libGVNZWRpYVNlbGVjdGlvbk9wdGlvbnNDaGFuZ2VkKHVp
bnQ2NF90IGNvbnRleHRJZCwgY29uc3QgVmVjdG9yPFN0cmluZz4mIG9wdGlvbnMsIHVpbnQ2NF90
IHNlbGVjdGVkSW5kZXgpOworICAgIHZvaWQgZXh0ZXJuYWxQbGF5YmFja0NoYW5nZWQodWludDY0
X3QgY29udGV4dElkLCBib29sIGVuYWJsZWQsIFdlYkNvcmU6OldlYlBsYXliYWNrU2Vzc2lvbk1v
ZGVsOjpFeHRlcm5hbFBsYXliYWNrVGFyZ2V0VHlwZSwgU3RyaW5nIGxvY2FsaXplZERldmljZU5h
bWUpOworICAgIHZvaWQgd2lyZWxlc3NWaWRlb1BsYXliYWNrRGlzYWJsZWRDaGFuZ2VkKHVpbnQ2
NF90IGNvbnRleHRJZCwgYm9vbCk7CiAKICAgICAvLyBNZXNzYWdlcyBmcm9tIFdlYlBsYXliYWNr
U2Vzc2lvbk1hbmFnZXJQcm94eQogICAgIHZvaWQgcGxheSh1aW50NjRfdCBjb250ZXh0SWQpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9jb2NvYS9XZWJQbGF5YmFja1Nl
c3Npb25NYW5hZ2VyLm1tIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9jb2NvYS9XZWJQbGF5
YmFja1Nlc3Npb25NYW5hZ2VyLm1tCmluZGV4IDJiNjczYTYyZGEzMGI2OWNlYWU1OGY0YjM0ZWE3
ZmY4Y2Q2MjhmNzcuLjZhN2FkOTNhOTVkMmQ4ZTA4NjUxOWViNjk3YWY3OGFiZjI2N2RhOWQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvY29jb2EvV2ViUGxheWJhY2tTZXNz
aW9uTWFuYWdlci5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL2NvY29hL1dlYlBs
YXliYWNrU2Vzc2lvbk1hbmFnZXIubW0KQEAgLTcyLDY0ICs3Miw2NCBAQCB2b2lkIFdlYlBsYXli
YWNrU2Vzc2lvbkludGVyZmFjZUNvbnRleHQ6OnJlc2V0TWVkaWFTdGF0ZSgpCiAgICAgICAgIG1f
bWFuYWdlci0+cmVzZXRNZWRpYVN0YXRlKG1fY29udGV4dElkKTsKIH0KIAotdm9pZCBXZWJQbGF5
YmFja1Nlc3Npb25JbnRlcmZhY2VDb250ZXh0OjpzZXREdXJhdGlvbihkb3VibGUgZHVyYXRpb24p
Cit2b2lkIFdlYlBsYXliYWNrU2Vzc2lvbkludGVyZmFjZUNvbnRleHQ6OmR1cmF0aW9uQ2hhbmdl
ZChkb3VibGUgZHVyYXRpb24pCiB7CiAgICAgaWYgKG1fbWFuYWdlcikKLSAgICAgICAgbV9tYW5h
Z2VyLT5zZXREdXJhdGlvbihtX2NvbnRleHRJZCwgZHVyYXRpb24pOworICAgICAgICBtX21hbmFn
ZXItPmR1cmF0aW9uQ2hhbmdlZChtX2NvbnRleHRJZCwgZHVyYXRpb24pOwogfQogCi12b2lkIFdl
YlBsYXliYWNrU2Vzc2lvbkludGVyZmFjZUNvbnRleHQ6OnNldEN1cnJlbnRUaW1lKGRvdWJsZSBj
dXJyZW50VGltZSwgZG91YmxlIGFuY2hvclRpbWUpCit2b2lkIFdlYlBsYXliYWNrU2Vzc2lvbklu
dGVyZmFjZUNvbnRleHQ6OmN1cnJlbnRUaW1lQ2hhbmdlZChkb3VibGUgY3VycmVudFRpbWUsIGRv
dWJsZSBhbmNob3JUaW1lKQogewogICAgIGlmIChtX21hbmFnZXIpCi0gICAgICAgIG1fbWFuYWdl
ci0+c2V0Q3VycmVudFRpbWUobV9jb250ZXh0SWQsIGN1cnJlbnRUaW1lLCBhbmNob3JUaW1lKTsK
KyAgICAgICAgbV9tYW5hZ2VyLT5jdXJyZW50VGltZUNoYW5nZWQobV9jb250ZXh0SWQsIGN1cnJl
bnRUaW1lLCBhbmNob3JUaW1lKTsKIH0KIAotdm9pZCBXZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZh
Y2VDb250ZXh0OjpzZXRCdWZmZXJlZFRpbWUoZG91YmxlIGJ1ZmZlcmVkVGltZSkKK3ZvaWQgV2Vi
UGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlQ29udGV4dDo6YnVmZmVyZWRUaW1lQ2hhbmdlZChkb3Vi
bGUgYnVmZmVyZWRUaW1lKQogewogICAgIGlmIChtX21hbmFnZXIpCi0gICAgICAgIG1fbWFuYWdl
ci0+c2V0QnVmZmVyZWRUaW1lKG1fY29udGV4dElkLCBidWZmZXJlZFRpbWUpOworICAgICAgICBt
X21hbmFnZXItPmJ1ZmZlcmVkVGltZUNoYW5nZWQobV9jb250ZXh0SWQsIGJ1ZmZlcmVkVGltZSk7
CiB9CiAKLXZvaWQgV2ViUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlQ29udGV4dDo6c2V0UmF0ZShi
b29sIGlzUGxheWluZywgZmxvYXQgcGxheWJhY2tSYXRlKQordm9pZCBXZWJQbGF5YmFja1Nlc3Np
b25JbnRlcmZhY2VDb250ZXh0OjpyYXRlQ2hhbmdlZChib29sIGlzUGxheWluZywgZmxvYXQgcGxh
eWJhY2tSYXRlKQogewogICAgIGlmIChtX21hbmFnZXIpCi0gICAgICAgIG1fbWFuYWdlci0+c2V0
UmF0ZShtX2NvbnRleHRJZCwgaXNQbGF5aW5nLCBwbGF5YmFja1JhdGUpOworICAgICAgICBtX21h
bmFnZXItPnJhdGVDaGFuZ2VkKG1fY29udGV4dElkLCBpc1BsYXlpbmcsIHBsYXliYWNrUmF0ZSk7
CiB9CiAKLXZvaWQgV2ViUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlQ29udGV4dDo6c2V0U2Vla2Fi
bGVSYW5nZXMoY29uc3QgV2ViQ29yZTo6VGltZVJhbmdlcyYgcmFuZ2VzKQordm9pZCBXZWJQbGF5
YmFja1Nlc3Npb25JbnRlcmZhY2VDb250ZXh0OjpzZWVrYWJsZVJhbmdlc0NoYW5nZWQoY29uc3Qg
V2ViQ29yZTo6VGltZVJhbmdlcyYgcmFuZ2VzKQogewogICAgIGlmIChtX21hbmFnZXIpCi0gICAg
ICAgIG1fbWFuYWdlci0+c2V0U2Vla2FibGVSYW5nZXMobV9jb250ZXh0SWQsIHJhbmdlcyk7Cisg
ICAgICAgIG1fbWFuYWdlci0+c2Vla2FibGVSYW5nZXNDaGFuZ2VkKG1fY29udGV4dElkLCByYW5n
ZXMpOwogfQogCi12b2lkIFdlYlBsYXliYWNrU2Vzc2lvbkludGVyZmFjZUNvbnRleHQ6OnNldENh
blBsYXlGYXN0UmV2ZXJzZShib29sIHZhbHVlKQordm9pZCBXZWJQbGF5YmFja1Nlc3Npb25JbnRl
cmZhY2VDb250ZXh0OjpjYW5QbGF5RmFzdFJldmVyc2VDaGFuZ2VkKGJvb2wgdmFsdWUpCiB7CiAg
ICAgaWYgKG1fbWFuYWdlcikKLSAgICAgICAgbV9tYW5hZ2VyLT5zZXRDYW5QbGF5RmFzdFJldmVy
c2UobV9jb250ZXh0SWQsIHZhbHVlKTsKKyAgICAgICAgbV9tYW5hZ2VyLT5jYW5QbGF5RmFzdFJl
dmVyc2VDaGFuZ2VkKG1fY29udGV4dElkLCB2YWx1ZSk7CiB9CiAKLXZvaWQgV2ViUGxheWJhY2tT
ZXNzaW9uSW50ZXJmYWNlQ29udGV4dDo6c2V0QXVkaW9NZWRpYVNlbGVjdGlvbk9wdGlvbnMoY29u
c3QgVmVjdG9yPFdURjo6U3RyaW5nPiYgb3B0aW9ucywgdWludDY0X3Qgc2VsZWN0ZWRJbmRleCkK
K3ZvaWQgV2ViUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlQ29udGV4dDo6YXVkaW9NZWRpYVNlbGVj
dGlvbk9wdGlvbnNDaGFuZ2VkKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBvcHRpb25zLCB1aW50NjRf
dCBzZWxlY3RlZEluZGV4KQogewogICAgIGlmIChtX21hbmFnZXIpCi0gICAgICAgIG1fbWFuYWdl
ci0+c2V0QXVkaW9NZWRpYVNlbGVjdGlvbk9wdGlvbnMobV9jb250ZXh0SWQsIG9wdGlvbnMsIHNl
bGVjdGVkSW5kZXgpOworICAgICAgICBtX21hbmFnZXItPmF1ZGlvTWVkaWFTZWxlY3Rpb25PcHRp
b25zQ2hhbmdlZChtX2NvbnRleHRJZCwgb3B0aW9ucywgc2VsZWN0ZWRJbmRleCk7CiB9CiAKLXZv
aWQgV2ViUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlQ29udGV4dDo6c2V0TGVnaWJsZU1lZGlhU2Vs
ZWN0aW9uT3B0aW9ucyhjb25zdCBWZWN0b3I8V1RGOjpTdHJpbmc+JiBvcHRpb25zLCB1aW50NjRf
dCBzZWxlY3RlZEluZGV4KQordm9pZCBXZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2VDb250ZXh0
OjpsZWdpYmxlTWVkaWFTZWxlY3Rpb25PcHRpb25zQ2hhbmdlZChjb25zdCBWZWN0b3I8U3RyaW5n
PiYgb3B0aW9ucywgdWludDY0X3Qgc2VsZWN0ZWRJbmRleCkKIHsKICAgICBpZiAobV9tYW5hZ2Vy
KQotICAgICAgICBtX21hbmFnZXItPnNldExlZ2libGVNZWRpYVNlbGVjdGlvbk9wdGlvbnMobV9j
b250ZXh0SWQsIG9wdGlvbnMsIHNlbGVjdGVkSW5kZXgpOworICAgICAgICBtX21hbmFnZXItPmxl
Z2libGVNZWRpYVNlbGVjdGlvbk9wdGlvbnNDaGFuZ2VkKG1fY29udGV4dElkLCBvcHRpb25zLCBz
ZWxlY3RlZEluZGV4KTsKIH0KIAotdm9pZCBXZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2VDb250
ZXh0OjpzZXRFeHRlcm5hbFBsYXliYWNrKGJvb2wgZW5hYmxlZCwgRXh0ZXJuYWxQbGF5YmFja1Rh
cmdldFR5cGUgdHlwZSwgV1RGOjpTdHJpbmcgbG9jYWxpemVkRGV2aWNlTmFtZSkKK3ZvaWQgV2Vi
UGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlQ29udGV4dDo6ZXh0ZXJuYWxQbGF5YmFja0NoYW5nZWQo
Ym9vbCBlbmFibGVkLCBXZWJQbGF5YmFja1Nlc3Npb25Nb2RlbDo6RXh0ZXJuYWxQbGF5YmFja1Rh
cmdldFR5cGUgdHlwZSwgY29uc3QgU3RyaW5nJiBsb2NhbGl6ZWREZXZpY2VOYW1lKQogewogICAg
IGlmIChtX21hbmFnZXIpCi0gICAgICAgIG1fbWFuYWdlci0+c2V0RXh0ZXJuYWxQbGF5YmFjayht
X2NvbnRleHRJZCwgZW5hYmxlZCwgdHlwZSwgbG9jYWxpemVkRGV2aWNlTmFtZSk7CisgICAgICAg
IG1fbWFuYWdlci0+ZXh0ZXJuYWxQbGF5YmFja0NoYW5nZWQobV9jb250ZXh0SWQsIGVuYWJsZWQs
IHR5cGUsIGxvY2FsaXplZERldmljZU5hbWUpOwogfQogCi12b2lkIFdlYlBsYXliYWNrU2Vzc2lv
bkludGVyZmFjZUNvbnRleHQ6OnNldFdpcmVsZXNzVmlkZW9QbGF5YmFja0Rpc2FibGVkKGJvb2wg
ZGlzYWJsZWQpCit2b2lkIFdlYlBsYXliYWNrU2Vzc2lvbkludGVyZmFjZUNvbnRleHQ6OndpcmVs
ZXNzVmlkZW9QbGF5YmFja0Rpc2FibGVkQ2hhbmdlZChib29sIGRpc2FibGVkKQogewogICAgIGlm
IChtX21hbmFnZXIpCi0gICAgICAgIG1fbWFuYWdlci0+c2V0V2lyZWxlc3NWaWRlb1BsYXliYWNr
RGlzYWJsZWQobV9jb250ZXh0SWQsIGRpc2FibGVkKTsKKyAgICAgICAgbV9tYW5hZ2VyLT53aXJl
bGVzc1ZpZGVvUGxheWJhY2tEaXNhYmxlZENoYW5nZWQobV9jb250ZXh0SWQsIGRpc2FibGVkKTsK
IH0KIAogI3ByYWdtYSBtYXJrIC0gV2ViUGxheWJhY2tTZXNzaW9uTWFuYWdlcgpAQCAtMTUxLDgg
KzE1MSw3IEBAIFdlYlBsYXliYWNrU2Vzc2lvbk1hbmFnZXI6On5XZWJQbGF5YmFja1Nlc3Npb25N
YW5hZ2VyKCkKICAgICAgICAgUmVmUHRyPFdlYlBsYXliYWNrU2Vzc2lvbk1vZGVsTWVkaWFFbGVt
ZW50PiBtb2RlbDsKICAgICAgICAgUmVmUHRyPFdlYlBsYXliYWNrU2Vzc2lvbkludGVyZmFjZUNv
bnRleHQ+IGludGVyZmFjZTsKICAgICAgICAgc3RkOjp0aWUobW9kZWwsIGludGVyZmFjZSkgPSB0
dXBsZTsKLQotICAgICAgICBtb2RlbC0+c2V0V2ViUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlKG51
bGxwdHIpOworICAgICAgICBtb2RlbC0+cmVtb3ZlQ2xpZW50KCppbnRlcmZhY2UpOwogICAgICAg
ICBtb2RlbC0+c2V0TWVkaWFFbGVtZW50KG51bGxwdHIpOwogCiAgICAgICAgIGludGVyZmFjZS0+
aW52YWxpZGF0ZSgpOwpAQCAtMTY5LDggKzE2OCw3IEBAIFdlYlBsYXliYWNrU2Vzc2lvbk1hbmFn
ZXI6Ok1vZGVsSW50ZXJmYWNlVHVwbGUgV2ViUGxheWJhY2tTZXNzaW9uTWFuYWdlcjo6Y3JlYXRl
CiB7CiAgICAgUmVmUHRyPFdlYlBsYXliYWNrU2Vzc2lvbk1vZGVsTWVkaWFFbGVtZW50PiBtb2Rl
bCA9IFdlYlBsYXliYWNrU2Vzc2lvbk1vZGVsTWVkaWFFbGVtZW50OjpjcmVhdGUoKTsKICAgICBS
ZWZQdHI8V2ViUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlQ29udGV4dD4gaW50ZXJmYWNlID0gV2Vi
UGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlQ29udGV4dDo6Y3JlYXRlKCp0aGlzLCBjb250ZXh0SWQp
OwotCi0gICAgbW9kZWwtPnNldFdlYlBsYXliYWNrU2Vzc2lvbkludGVyZmFjZShpbnRlcmZhY2Uu
Z2V0KCkpOworICAgIG1vZGVsLT5hZGRDbGllbnQoKmludGVyZmFjZSk7CiAKICAgICByZXR1cm4g
c3RkOjptYWtlX3R1cGxlKFdURk1vdmUobW9kZWwpLCBXVEZNb3ZlKGludGVyZmFjZSkpOwogfQpA
QCAtMjAxLDcgKzE5OSw3IEBAIHZvaWQgV2ViUGxheWJhY2tTZXNzaW9uTWFuYWdlcjo6cmVtb3Zl
Q29udGV4dCh1aW50NjRfdCBjb250ZXh0SWQpCiAKICAgICBSZWZQdHI8SFRNTE1lZGlhRWxlbWVu
dD4gbWVkaWFFbGVtZW50ID0gbW9kZWwtPm1lZGlhRWxlbWVudCgpOwogICAgIG1vZGVsLT5zZXRN
ZWRpYUVsZW1lbnQobnVsbHB0cik7Ci0gICAgbW9kZWwtPnNldFdlYlBsYXliYWNrU2Vzc2lvbklu
dGVyZmFjZShudWxscHRyKTsKKyAgICBtb2RlbC0+cmVtb3ZlQ2xpZW50KCppbnRlcmZhY2UpOwog
ICAgIGludGVyZmFjZS0+aW52YWxpZGF0ZSgpOwogICAgIG1fbWVkaWFFbGVtZW50cy5yZW1vdmUo
bWVkaWFFbGVtZW50LmdldCgpKTsKICAgICBtX2NvbnRleHRNYXAucmVtb3ZlKGNvbnRleHRJZCk7
CkBAIC0yODQsMjcgKzI4MiwyNyBAQCB2b2lkIFdlYlBsYXliYWNrU2Vzc2lvbk1hbmFnZXI6OnJl
c2V0TWVkaWFTdGF0ZSh1aW50NjRfdCBjb250ZXh0SWQpCiAgICAgbV9wYWdlLT5zZW5kKE1lc3Nh
Z2VzOjpXZWJQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHk6OlJlc2V0TWVkaWFTdGF0ZShjb250
ZXh0SWQpLCBtX3BhZ2UtPnBhZ2VJRCgpKTsKIH0KIAotdm9pZCBXZWJQbGF5YmFja1Nlc3Npb25N
YW5hZ2VyOjpzZXREdXJhdGlvbih1aW50NjRfdCBjb250ZXh0SWQsIGRvdWJsZSBkdXJhdGlvbikK
K3ZvaWQgV2ViUGxheWJhY2tTZXNzaW9uTWFuYWdlcjo6ZHVyYXRpb25DaGFuZ2VkKHVpbnQ2NF90
IGNvbnRleHRJZCwgZG91YmxlIGR1cmF0aW9uKQogewogICAgIG1fcGFnZS0+c2VuZChNZXNzYWdl
czo6V2ViUGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5OjpTZXREdXJhdGlvbihjb250ZXh0SWQs
IGR1cmF0aW9uKSwgbV9wYWdlLT5wYWdlSUQoKSk7CiB9CiAKLXZvaWQgV2ViUGxheWJhY2tTZXNz
aW9uTWFuYWdlcjo6c2V0Q3VycmVudFRpbWUodWludDY0X3QgY29udGV4dElkLCBkb3VibGUgY3Vy
cmVudFRpbWUsIGRvdWJsZSBhbmNob3JUaW1lKQordm9pZCBXZWJQbGF5YmFja1Nlc3Npb25NYW5h
Z2VyOjpjdXJyZW50VGltZUNoYW5nZWQodWludDY0X3QgY29udGV4dElkLCBkb3VibGUgY3VycmVu
dFRpbWUsIGRvdWJsZSBhbmNob3JUaW1lKQogewogICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6
V2ViUGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5OjpTZXRDdXJyZW50VGltZShjb250ZXh0SWQs
IGN1cnJlbnRUaW1lLCBhbmNob3JUaW1lKSwgbV9wYWdlLT5wYWdlSUQoKSk7CiB9CiAKLXZvaWQg
V2ViUGxheWJhY2tTZXNzaW9uTWFuYWdlcjo6c2V0QnVmZmVyZWRUaW1lKHVpbnQ2NF90IGNvbnRl
eHRJZCwgZG91YmxlIGJ1ZmZlcmVkVGltZSkKK3ZvaWQgV2ViUGxheWJhY2tTZXNzaW9uTWFuYWdl
cjo6YnVmZmVyZWRUaW1lQ2hhbmdlZCh1aW50NjRfdCBjb250ZXh0SWQsIGRvdWJsZSBidWZmZXJl
ZFRpbWUpCiB7CiAgICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJQbGF5YmFja1Nlc3Npb25N
YW5hZ2VyUHJveHk6OlNldEJ1ZmZlcmVkVGltZShjb250ZXh0SWQsIGJ1ZmZlcmVkVGltZSksIG1f
cGFnZS0+cGFnZUlEKCkpOwogfQogCi12b2lkIFdlYlBsYXliYWNrU2Vzc2lvbk1hbmFnZXI6OnNl
dFJhdGUodWludDY0X3QgY29udGV4dElkLCBib29sIGlzUGxheWluZywgZmxvYXQgcGxheWJhY2tS
YXRlKQordm9pZCBXZWJQbGF5YmFja1Nlc3Npb25NYW5hZ2VyOjpyYXRlQ2hhbmdlZCh1aW50NjRf
dCBjb250ZXh0SWQsIGJvb2wgaXNQbGF5aW5nLCBmbG9hdCBwbGF5YmFja1JhdGUpCiB7CiAgICAg
bV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHk6OlNl
dFJhdGUoY29udGV4dElkLCBpc1BsYXlpbmcsIHBsYXliYWNrUmF0ZSksIG1fcGFnZS0+cGFnZUlE
KCkpOwogfQogCi12b2lkIFdlYlBsYXliYWNrU2Vzc2lvbk1hbmFnZXI6OnNldFNlZWthYmxlUmFu
Z2VzKHVpbnQ2NF90IGNvbnRleHRJZCwgY29uc3QgV2ViQ29yZTo6VGltZVJhbmdlcyYgdGltZVJh
bmdlcykKK3ZvaWQgV2ViUGxheWJhY2tTZXNzaW9uTWFuYWdlcjo6c2Vla2FibGVSYW5nZXNDaGFu
Z2VkKHVpbnQ2NF90IGNvbnRleHRJZCwgY29uc3QgV2ViQ29yZTo6VGltZVJhbmdlcyYgdGltZVJh
bmdlcykKIHsKICAgICBWZWN0b3I8c3RkOjpwYWlyPGRvdWJsZSwgZG91YmxlPj4gcmFuZ2VzVmVj
dG9yOwogCkBAIC0zMTgsMjcgKzMxNiwyNyBAQCB2b2lkIFdlYlBsYXliYWNrU2Vzc2lvbk1hbmFn
ZXI6OnNldFNlZWthYmxlUmFuZ2VzKHVpbnQ2NF90IGNvbnRleHRJZCwgY29uc3QgV2ViQwogICAg
IG1fcGFnZS0+c2VuZChNZXNzYWdlczo6V2ViUGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5OjpT
ZXRTZWVrYWJsZVJhbmdlc1ZlY3Rvcihjb250ZXh0SWQsIFdURk1vdmUocmFuZ2VzVmVjdG9yKSks
IG1fcGFnZS0+cGFnZUlEKCkpOwogfQogCi12b2lkIFdlYlBsYXliYWNrU2Vzc2lvbk1hbmFnZXI6
OnNldENhblBsYXlGYXN0UmV2ZXJzZSh1aW50NjRfdCBjb250ZXh0SWQsIGJvb2wgdmFsdWUpCit2
b2lkIFdlYlBsYXliYWNrU2Vzc2lvbk1hbmFnZXI6OmNhblBsYXlGYXN0UmV2ZXJzZUNoYW5nZWQo
dWludDY0X3QgY29udGV4dElkLCBib29sIHZhbHVlKQogewogICAgIG1fcGFnZS0+c2VuZChNZXNz
YWdlczo6V2ViUGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5OjpTZXRDYW5QbGF5RmFzdFJldmVy
c2UoY29udGV4dElkLCB2YWx1ZSksIG1fcGFnZS0+cGFnZUlEKCkpOwogfQogCi12b2lkIFdlYlBs
YXliYWNrU2Vzc2lvbk1hbmFnZXI6OnNldEF1ZGlvTWVkaWFTZWxlY3Rpb25PcHRpb25zKHVpbnQ2
NF90IGNvbnRleHRJZCwgY29uc3QgVmVjdG9yPFN0cmluZz4mIG9wdGlvbnMsIHVpbnQ2NF90IHNl
bGVjdGVkSW5kZXgpCit2b2lkIFdlYlBsYXliYWNrU2Vzc2lvbk1hbmFnZXI6OmF1ZGlvTWVkaWFT
ZWxlY3Rpb25PcHRpb25zQ2hhbmdlZCh1aW50NjRfdCBjb250ZXh0SWQsIGNvbnN0IFZlY3RvcjxT
dHJpbmc+JiBvcHRpb25zLCB1aW50NjRfdCBzZWxlY3RlZEluZGV4KQogewogICAgIG1fcGFnZS0+
c2VuZChNZXNzYWdlczo6V2ViUGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5OjpTZXRBdWRpb01l
ZGlhU2VsZWN0aW9uT3B0aW9ucyhjb250ZXh0SWQsIG9wdGlvbnMsIHNlbGVjdGVkSW5kZXgpLCBt
X3BhZ2UtPnBhZ2VJRCgpKTsKIH0KIAotdm9pZCBXZWJQbGF5YmFja1Nlc3Npb25NYW5hZ2VyOjpz
ZXRMZWdpYmxlTWVkaWFTZWxlY3Rpb25PcHRpb25zKHVpbnQ2NF90IGNvbnRleHRJZCwgY29uc3Qg
VmVjdG9yPFN0cmluZz4mIG9wdGlvbnMsIHVpbnQ2NF90IHNlbGVjdGVkSW5kZXgpCit2b2lkIFdl
YlBsYXliYWNrU2Vzc2lvbk1hbmFnZXI6OmxlZ2libGVNZWRpYVNlbGVjdGlvbk9wdGlvbnNDaGFu
Z2VkKHVpbnQ2NF90IGNvbnRleHRJZCwgY29uc3QgVmVjdG9yPFN0cmluZz4mIG9wdGlvbnMsIHVp
bnQ2NF90IHNlbGVjdGVkSW5kZXgpCiB7CiAgICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJQ
bGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHk6OlNldExlZ2libGVNZWRpYVNlbGVjdGlvbk9wdGlv
bnMoY29udGV4dElkLCBvcHRpb25zLCBzZWxlY3RlZEluZGV4KSwgbV9wYWdlLT5wYWdlSUQoKSk7
CiB9CiAKLXZvaWQgV2ViUGxheWJhY2tTZXNzaW9uTWFuYWdlcjo6c2V0RXh0ZXJuYWxQbGF5YmFj
ayh1aW50NjRfdCBjb250ZXh0SWQsIGJvb2wgZW5hYmxlZCwgV2ViUGxheWJhY2tTZXNzaW9uSW50
ZXJmYWNlOjpFeHRlcm5hbFBsYXliYWNrVGFyZ2V0VHlwZSB0YXJnZXRUeXBlLCBTdHJpbmcgbG9j
YWxpemVkRGV2aWNlTmFtZSkKK3ZvaWQgV2ViUGxheWJhY2tTZXNzaW9uTWFuYWdlcjo6ZXh0ZXJu
YWxQbGF5YmFja0NoYW5nZWQodWludDY0X3QgY29udGV4dElkLCBib29sIGVuYWJsZWQsIFdlYlBs
YXliYWNrU2Vzc2lvbk1vZGVsOjpFeHRlcm5hbFBsYXliYWNrVGFyZ2V0VHlwZSB0YXJnZXRUeXBl
LCBTdHJpbmcgbG9jYWxpemVkRGV2aWNlTmFtZSkKIHsKICAgICBtX3BhZ2UtPnNlbmQoTWVzc2Fn
ZXM6OldlYlBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eTo6U2V0RXh0ZXJuYWxQbGF5YmFja1By
b3BlcnRpZXMoY29udGV4dElkLCBlbmFibGVkLCBzdGF0aWNfY2FzdDx1aW50MzJfdD4odGFyZ2V0
VHlwZSksIGxvY2FsaXplZERldmljZU5hbWUpLCBtX3BhZ2UtPnBhZ2VJRCgpKTsKIH0KIAotdm9p
ZCBXZWJQbGF5YmFja1Nlc3Npb25NYW5hZ2VyOjpzZXRXaXJlbGVzc1ZpZGVvUGxheWJhY2tEaXNh
YmxlZCh1aW50NjRfdCBjb250ZXh0SWQsIGJvb2wgZGlzYWJsZWQpCit2b2lkIFdlYlBsYXliYWNr
U2Vzc2lvbk1hbmFnZXI6OndpcmVsZXNzVmlkZW9QbGF5YmFja0Rpc2FibGVkQ2hhbmdlZCh1aW50
NjRfdCBjb250ZXh0SWQsIGJvb2wgZGlzYWJsZWQpCiB7CiAgICAgbV9wYWdlLT5zZW5kKE1lc3Nh
Z2VzOjpXZWJQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHk6OlNldFdpcmVsZXNzVmlkZW9QbGF5
YmFja0Rpc2FibGVkKGNvbnRleHRJZCwgZGlzYWJsZWQpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvY29jb2EvV2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlci5oIGIv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9jb2NvYS9XZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2Vy
LmgKaW5kZXggMWZiMWRjODdlZWNlZjVmYzgzYzQ1NDgzY2RjMmM1MjdiMWNjOThiZS4uZDI2ODZi
OGFkYjcwYWE5ZTUwYTY1MTIwOGQ0ZjM1NTliNjM0ODhkMCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9jb2NvYS9XZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyLmgKKysrIGIv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9jb2NvYS9XZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2Vy
LmgKQEAgLTQ1LDYgKzQ1LDcgQEAgY2xhc3MgTWVzc2FnZVJlY2VpdmVyOwogfQogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CitjbGFzcyBGbG9hdFNpemU7CiBjbGFzcyBOb2RlOwogfQogCkBAIC01Niwx
MSArNTcsMTQgQEAgY2xhc3MgV2ViUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlQ29udGV4dDsKIGNs
YXNzIFdlYlBsYXliYWNrU2Vzc2lvbk1hbmFnZXI7CiBjbGFzcyBXZWJWaWRlb0Z1bGxzY3JlZW5N
YW5hZ2VyOwogCi1jbGFzcyBXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VDb250ZXh0IDogcHVi
bGljIFJlZkNvdW50ZWQ8V2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQ29udGV4dD4sIHB1Ymxp
YyBXZWJDb3JlOjpXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2UgeworY2xhc3MgV2ViVmlkZW9G
dWxsc2NyZWVuSW50ZXJmYWNlQ29udGV4dAorICAgIDogcHVibGljIFJlZkNvdW50ZWQ8V2ViVmlk
ZW9GdWxsc2NyZWVuSW50ZXJmYWNlQ29udGV4dD4KKyAgICAsIHB1YmxpYyBXZWJDb3JlOjpXZWJW
aWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2UKKyAgICAsIHB1YmxpYyBXZWJDb3JlOjpXZWJWaWRlb0Z1
bGxzY3JlZW5Nb2RlbENsaWVudCB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxXZWJWaWRlb0Z1
bGxzY3JlZW5JbnRlcmZhY2VDb250ZXh0PiBjcmVhdGUoV2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdl
ciYgbWFuYWdlciwgV2ViUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlQ29udGV4dCYgcGxheWJhY2tT
ZXNzaW9uSW50ZXJmYWNlLCB1aW50NjRfdCBjb250ZXh0SWQpCisgICAgc3RhdGljIFJlZjxXZWJW
aWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VDb250ZXh0PiBjcmVhdGUoV2ViVmlkZW9GdWxsc2NyZWVu
TWFuYWdlciYgbWFuYWdlciwgdWludDY0X3QgY29udGV4dElkKQogICAgIHsKLSAgICAgICAgcmV0
dXJuIGFkb3B0UmVmKCpuZXcgV2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQ29udGV4dChtYW5h
Z2VyLCBwbGF5YmFja1Nlc3Npb25JbnRlcmZhY2UsIGNvbnRleHRJZCkpOworICAgICAgICByZXR1
cm4gYWRvcHRSZWYoKm5ldyBXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VDb250ZXh0KG1hbmFn
ZXIsIGNvbnRleHRJZCkpOwogICAgIH0KICAgICB2aXJ0dWFsIH5XZWJWaWRlb0Z1bGxzY3JlZW5J
bnRlcmZhY2VDb250ZXh0KCk7CiAKQEAgLTgyLDI2ICs4NiwxMyBAQCBwdWJsaWM6CiAgICAgdm9p
ZCBzZXRJc0Z1bGxzY3JlZW4oYm9vbCBmbGFnKSB7IG1faXNGdWxsc2NyZWVuID0gZmxhZzsgfQog
CiBwcml2YXRlOgotICAgIC8vIFdlYlBsYXliYWNrU2Vzc2lvbkludGVyZmFjZQotICAgIHZvaWQg
cmVzZXRNZWRpYVN0YXRlKCkgb3ZlcnJpZGU7Ci0gICAgdm9pZCBzZXREdXJhdGlvbihkb3VibGUp
IG92ZXJyaWRlOwotICAgIHZvaWQgc2V0Q3VycmVudFRpbWUoZG91YmxlIGN1cnJlbnRUaW1lLCBk
b3VibGUgYW5jaG9yVGltZSkgb3ZlcnJpZGU7Ci0gICAgdm9pZCBzZXRCdWZmZXJlZFRpbWUoZG91
YmxlKSBvdmVycmlkZTsKLSAgICB2b2lkIHNldFJhdGUoYm9vbCBpc1BsYXlpbmcsIGZsb2F0IHBs
YXliYWNrUmF0ZSkgb3ZlcnJpZGU7Ci0gICAgdm9pZCBzZXRTZWVrYWJsZVJhbmdlcyhjb25zdCBX
ZWJDb3JlOjpUaW1lUmFuZ2VzJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBzZXRDYW5QbGF5RmFzdFJl
dmVyc2UoYm9vbCB2YWx1ZSkgb3ZlcnJpZGU7Ci0gICAgdm9pZCBzZXRBdWRpb01lZGlhU2VsZWN0
aW9uT3B0aW9ucyhjb25zdCBWZWN0b3I8V1RGOjpTdHJpbmc+JiBvcHRpb25zLCB1aW50NjRfdCBz
ZWxlY3RlZEluZGV4KSBvdmVycmlkZTsKLSAgICB2b2lkIHNldExlZ2libGVNZWRpYVNlbGVjdGlv
bk9wdGlvbnMoY29uc3QgVmVjdG9yPFdURjo6U3RyaW5nPiYgb3B0aW9ucywgdWludDY0X3Qgc2Vs
ZWN0ZWRJbmRleCkgb3ZlcnJpZGU7Ci0gICAgdm9pZCBzZXRFeHRlcm5hbFBsYXliYWNrKGJvb2wg
ZW5hYmxlZCwgRXh0ZXJuYWxQbGF5YmFja1RhcmdldFR5cGUsIFdURjo6U3RyaW5nIGxvY2FsaXpl
ZERldmljZU5hbWUpIG92ZXJyaWRlOwotICAgIHZvaWQgc2V0V2lyZWxlc3NWaWRlb1BsYXliYWNr
RGlzYWJsZWQoYm9vbCkgb3ZlcnJpZGU7Ci0KLSAgICAvLyBXZWJWaWRlb0Z1bGxzY3JlZW5JbnRl
cmZhY2UKLSAgICB2b2lkIHNldFZpZGVvRGltZW5zaW9ucyhib29sIGhhc1ZpZGVvLCBmbG9hdCB3
aWR0aCwgZmxvYXQgaGVpZ2h0KSBvdmVycmlkZTsKLQotICAgIFdlYlZpZGVvRnVsbHNjcmVlbklu
dGVyZmFjZUNvbnRleHQoV2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlciYsIFdlYlBsYXliYWNrU2Vz
c2lvbkludGVyZmFjZUNvbnRleHQmLCB1aW50NjRfdCBjb250ZXh0SWQpOworICAgIC8vIFdlYlZp
ZGVvRnVsbHNjcmVlbk1vZGVsQ2xpZW50CisgICAgdm9pZCBoYXNWaWRlb0NoYW5nZWQoYm9vbCkg
b3ZlcnJpZGU7CisgICAgdm9pZCB2aWRlb0RpbWVuc2lvbnNDaGFuZ2VkKGNvbnN0IFdlYkNvcmU6
OkZsb2F0U2l6ZSYpIG92ZXJyaWRlOworCisgICAgV2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNl
Q29udGV4dChXZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyJiwgdWludDY0X3QgY29udGV4dElkKTsK
IAogICAgIFdlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXIqIG1fbWFuYWdlcjsKLSAgICBSZWY8V2Vi
UGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlQ29udGV4dD4gbV9wbGF5YmFja1Nlc3Npb25JbnRlcmZh
Y2U7CiAgICAgdWludDY0X3QgbV9jb250ZXh0SWQ7CiAgICAgc3RkOjp1bmlxdWVfcHRyPExheWVy
SG9zdGluZ0NvbnRleHQ+IG1fbGF5ZXJIb3N0aW5nQ29udGV4dDsKICAgICBib29sIG1faXNBbmlt
YXRpbmcgeyBmYWxzZSB9OwpAQCAtMTM4LDcgKzEyOSw4IEBAIHByb3RlY3RlZDoKICAgICB2b2lk
IHJlbW92ZUNsaWVudEZvckNvbnRleHQodWludDY0X3QgY29udGV4dElkKTsKIAogICAgIC8vIElu
dGVyZmFjZSB0byBXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VDb250ZXh0Ci0gICAgdm9pZCBz
ZXRWaWRlb0RpbWVuc2lvbnModWludDY0X3QgY29udGV4dElkLCBib29sIGhhc1ZpZGVvLCBmbG9h
dCB3aWR0aCwgZmxvYXQgaGVpZ2h0KTsKKyAgICB2b2lkIGhhc1ZpZGVvQ2hhbmdlZCh1aW50NjRf
dCBjb250ZXh0SWQsIGJvb2wgaGFzVmlkZW8pOworICAgIHZvaWQgdmlkZW9EaW1lbnNpb25zQ2hh
bmdlZCh1aW50NjRfdCBjb250ZXh0SWQsIGNvbnN0IFdlYkNvcmU6OkZsb2F0U2l6ZSYpOwogCiAg
ICAgLy8gTWVzc2FnZXMgZnJvbSBXZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHkKICAgICB2
b2lkIHJlcXVlc3RGdWxsc2NyZWVuTW9kZSh1aW50NjRfdCBjb250ZXh0SWQsIFdlYkNvcmU6OkhU
TUxNZWRpYUVsZW1lbnRFbnVtczo6VmlkZW9GdWxsc2NyZWVuTW9kZSk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL2NvY29hL1dlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXIu
bW0gYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL2NvY29hL1dlYlZpZGVvRnVsbHNjcmVlbk1h
bmFnZXIubW0KaW5kZXggMjcyNDJjMWQwMTZkN2YzM2JhMTExMTJiNjUwM2ZlOTcwMjc4ZmQxNC4u
ZDI3NTIwNzNkMDkwYmQ4NmZjOGI2ZWIyZmM3ZmU4NDBkOTRjNzE1NCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9jb2NvYS9XZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyLm1t
CisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvY29jb2EvV2ViVmlkZW9GdWxsc2NyZWVu
TWFuYWdlci5tbQpAQCAtNjYsOSArNjYsOCBAQCBzdGF0aWMgSW50UmVjdCBpbmxpbmVWaWRlb0Zy
YW1lKEhUTUxWaWRlb0VsZW1lbnQmIGVsZW1lbnQpCiAKICNwcmFnbWEgbWFyayAtIFdlYlZpZGVv
RnVsbHNjcmVlbkludGVyZmFjZUNvbnRleHQKIAotV2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNl
Q29udGV4dDo6V2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQ29udGV4dChXZWJWaWRlb0Z1bGxz
Y3JlZW5NYW5hZ2VyJiBtYW5hZ2VyLCBXZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2VDb250ZXh0
JiBwbGF5YmFja1Nlc3Npb25JbnRlcmZhY2UsIHVpbnQ2NF90IGNvbnRleHRJZCkKK1dlYlZpZGVv
RnVsbHNjcmVlbkludGVyZmFjZUNvbnRleHQ6OldlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUNv
bnRleHQoV2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlciYgbWFuYWdlciwgdWludDY0X3QgY29udGV4
dElkKQogICAgIDogbV9tYW5hZ2VyKCZtYW5hZ2VyKQotICAgICwgbV9wbGF5YmFja1Nlc3Npb25J
bnRlcmZhY2UocGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlKQogICAgICwgbV9jb250ZXh0SWQoY29u
dGV4dElkKQogewogfQpAQCAtODIsNjUgKzgxLDE2IEBAIHZvaWQgV2ViVmlkZW9GdWxsc2NyZWVu
SW50ZXJmYWNlQ29udGV4dDo6c2V0TGF5ZXJIb3N0aW5nQ29udGV4dChzdGQ6OnVuaXF1ZV9wdHI8
CiAgICAgbV9sYXllckhvc3RpbmdDb250ZXh0ID0gV1RGTW92ZShjb250ZXh0KTsKIH0KIAotdm9p
ZCBXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VDb250ZXh0OjpyZXNldE1lZGlhU3RhdGUoKQot
ewotICAgIG1fcGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlLT5yZXNldE1lZGlhU3RhdGUoKTsKLX0K
LQotdm9pZCBXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VDb250ZXh0OjpzZXREdXJhdGlvbihk
b3VibGUgZHVyYXRpb24pCi17Ci0gICAgbV9wbGF5YmFja1Nlc3Npb25JbnRlcmZhY2UtPnNldER1
cmF0aW9uKGR1cmF0aW9uKTsKLX0KLQotdm9pZCBXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VD
b250ZXh0OjpzZXRDdXJyZW50VGltZShkb3VibGUgY3VycmVudFRpbWUsIGRvdWJsZSBhbmNob3JU
aW1lKQotewotICAgIG1fcGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlLT5zZXRDdXJyZW50VGltZShj
dXJyZW50VGltZSwgYW5jaG9yVGltZSk7Ci19Ci0KLXZvaWQgV2ViVmlkZW9GdWxsc2NyZWVuSW50
ZXJmYWNlQ29udGV4dDo6c2V0QnVmZmVyZWRUaW1lKGRvdWJsZSBidWZmZXJlZFRpbWUpCi17Ci0g
ICAgbV9wbGF5YmFja1Nlc3Npb25JbnRlcmZhY2UtPnNldEJ1ZmZlcmVkVGltZShidWZmZXJlZFRp
bWUpOwotfQotCi12b2lkIFdlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUNvbnRleHQ6OnNldFJh
dGUoYm9vbCBpc1BsYXlpbmcsIGZsb2F0IHBsYXliYWNrUmF0ZSkKLXsKLSAgICBtX3BsYXliYWNr
U2Vzc2lvbkludGVyZmFjZS0+c2V0UmF0ZShpc1BsYXlpbmcsIHBsYXliYWNrUmF0ZSk7Ci19Ci0K
LXZvaWQgV2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQ29udGV4dDo6c2V0VmlkZW9EaW1lbnNp
b25zKGJvb2wgaGFzVmlkZW8sIGZsb2F0IHdpZHRoLCBmbG9hdCBoZWlnaHQpCit2b2lkIFdlYlZp
ZGVvRnVsbHNjcmVlbkludGVyZmFjZUNvbnRleHQ6Omhhc1ZpZGVvQ2hhbmdlZChib29sIGhhc1Zp
ZGVvKQogewogICAgIGlmIChtX21hbmFnZXIpCi0gICAgICAgIG1fbWFuYWdlci0+c2V0VmlkZW9E
aW1lbnNpb25zKG1fY29udGV4dElkLCBoYXNWaWRlbywgd2lkdGgsIGhlaWdodCk7Ci19Ci0KLXZv
aWQgV2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQ29udGV4dDo6c2V0U2Vla2FibGVSYW5nZXMo
Y29uc3QgV2ViQ29yZTo6VGltZVJhbmdlcyYgcmFuZ2VzKQotewotICAgIG1fcGxheWJhY2tTZXNz
aW9uSW50ZXJmYWNlLT5zZXRTZWVrYWJsZVJhbmdlcyhyYW5nZXMpOworICAgICAgICBtX21hbmFn
ZXItPmhhc1ZpZGVvQ2hhbmdlZChtX2NvbnRleHRJZCwgaGFzVmlkZW8pOwogfQogCi12b2lkIFdl
YlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUNvbnRleHQ6OnNldENhblBsYXlGYXN0UmV2ZXJzZShi
b29sIHZhbHVlKQordm9pZCBXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VDb250ZXh0Ojp2aWRl
b0RpbWVuc2lvbnNDaGFuZ2VkKGNvbnN0IEZsb2F0U2l6ZSYgdmlkZW9EaW1lbnNpb25zKQogewot
ICAgIG1fcGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlLT5zZXRDYW5QbGF5RmFzdFJldmVyc2UodmFs
dWUpOwotfQotCi12b2lkIFdlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUNvbnRleHQ6OnNldEF1
ZGlvTWVkaWFTZWxlY3Rpb25PcHRpb25zKGNvbnN0IFZlY3RvcjxXVEY6OlN0cmluZz4mIG9wdGlv
bnMsIHVpbnQ2NF90IHNlbGVjdGVkSW5kZXgpCi17Ci0gICAgbV9wbGF5YmFja1Nlc3Npb25JbnRl
cmZhY2UtPnNldEF1ZGlvTWVkaWFTZWxlY3Rpb25PcHRpb25zKG9wdGlvbnMsIHNlbGVjdGVkSW5k
ZXgpOwotfQotCi12b2lkIFdlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUNvbnRleHQ6OnNldExl
Z2libGVNZWRpYVNlbGVjdGlvbk9wdGlvbnMoY29uc3QgVmVjdG9yPFdURjo6U3RyaW5nPiYgb3B0
aW9ucywgdWludDY0X3Qgc2VsZWN0ZWRJbmRleCkKLXsKLSAgICBtX3BsYXliYWNrU2Vzc2lvbklu
dGVyZmFjZS0+c2V0TGVnaWJsZU1lZGlhU2VsZWN0aW9uT3B0aW9ucyhvcHRpb25zLCBzZWxlY3Rl
ZEluZGV4KTsKLX0KLQotdm9pZCBXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VDb250ZXh0Ojpz
ZXRFeHRlcm5hbFBsYXliYWNrKGJvb2wgZW5hYmxlZCwgRXh0ZXJuYWxQbGF5YmFja1RhcmdldFR5
cGUgdHlwZSwgV1RGOjpTdHJpbmcgbG9jYWxpemVkRGV2aWNlTmFtZSkKLXsKLSAgICBtX3BsYXli
YWNrU2Vzc2lvbkludGVyZmFjZS0+c2V0RXh0ZXJuYWxQbGF5YmFjayhlbmFibGVkLCB0eXBlLCBs
b2NhbGl6ZWREZXZpY2VOYW1lKTsKLX0KLQotdm9pZCBXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZh
Y2VDb250ZXh0OjpzZXRXaXJlbGVzc1ZpZGVvUGxheWJhY2tEaXNhYmxlZChib29sIGRpc2FibGVk
KQotewotICAgIG1fcGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlLT5zZXRXaXJlbGVzc1ZpZGVvUGxh
eWJhY2tEaXNhYmxlZChkaXNhYmxlZCk7CisgICAgaWYgKG1fbWFuYWdlcikKKyAgICAgICAgbV9t
YW5hZ2VyLT52aWRlb0RpbWVuc2lvbnNDaGFuZ2VkKG1fY29udGV4dElkLCB2aWRlb0RpbWVuc2lv
bnMpOwogfQogCiAjcHJhZ21hIG1hcmsgLSBXZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyCkBAIC0x
NjQsOCArMTE0LDggQEAgV2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6fldlYlZpZGVvRnVsbHNj
cmVlbk1hbmFnZXIoKQogICAgICAgICBSZWZQdHI8V2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNl
Q29udGV4dD4gaW50ZXJmYWNlOwogICAgICAgICBzdGQ6OnRpZShtb2RlbCwgaW50ZXJmYWNlKSA9
IHR1cGxlOwogCi0gICAgICAgIG1vZGVsLT5zZXRXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2Uo
bnVsbHB0cik7CiAgICAgICAgIG1vZGVsLT5zZXRWaWRlb0VsZW1lbnQobnVsbHB0cik7CisgICAg
ICAgIG1vZGVsLT5yZW1vdmVDbGllbnQoKmludGVyZmFjZSk7CiAKICAgICAgICAgaW50ZXJmYWNl
LT5pbnZhbGlkYXRlKCk7CiAgICAgfQpAQCAtMTc5LDE0ICsxMjksMTIgQEAgV2ViVmlkZW9GdWxs
c2NyZWVuTWFuYWdlcjo6fldlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXIoKQogCiBXZWJWaWRlb0Z1
bGxzY3JlZW5NYW5hZ2VyOjpNb2RlbEludGVyZmFjZVR1cGxlIFdlYlZpZGVvRnVsbHNjcmVlbk1h
bmFnZXI6OmNyZWF0ZU1vZGVsQW5kSW50ZXJmYWNlKHVpbnQ2NF90IGNvbnRleHRJZCkKIHsKLSAg
ICBhdXRvJiBwbGF5YmFja1Nlc3Npb25Nb2RlbCA9IG1fcGxheWJhY2tTZXNzaW9uTWFuYWdlci0+
ZW5zdXJlTW9kZWwoY29udGV4dElkKTsKLSAgICBSZWZQdHI8V2ViVmlkZW9GdWxsc2NyZWVuTW9k
ZWxWaWRlb0VsZW1lbnQ+IG1vZGVsID0gV2ViVmlkZW9GdWxsc2NyZWVuTW9kZWxWaWRlb0VsZW1l
bnQ6OmNyZWF0ZShwbGF5YmFja1Nlc3Npb25Nb2RlbCk7Ci0gICAgYXV0byYgcGxheWJhY2tTZXNz
aW9uSW50ZXJmYWNlID0gbV9wbGF5YmFja1Nlc3Npb25NYW5hZ2VyLT5lbnN1cmVJbnRlcmZhY2Uo
Y29udGV4dElkKTsKLSAgICBSZWZQdHI8V2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQ29udGV4
dD4gaW50ZXJmYWNlID0gV2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQ29udGV4dDo6Y3JlYXRl
KCp0aGlzLCBwbGF5YmFja1Nlc3Npb25JbnRlcmZhY2UsIGNvbnRleHRJZCk7CisgICAgUmVmUHRy
PFdlYlZpZGVvRnVsbHNjcmVlbk1vZGVsVmlkZW9FbGVtZW50PiBtb2RlbCA9IFdlYlZpZGVvRnVs
bHNjcmVlbk1vZGVsVmlkZW9FbGVtZW50OjpjcmVhdGUoKTsKKyAgICBSZWZQdHI8V2ViVmlkZW9G
dWxsc2NyZWVuSW50ZXJmYWNlQ29udGV4dD4gaW50ZXJmYWNlID0gV2ViVmlkZW9GdWxsc2NyZWVu
SW50ZXJmYWNlQ29udGV4dDo6Y3JlYXRlKCp0aGlzLCBjb250ZXh0SWQpOwogICAgIG1fcGxheWJh
Y2tTZXNzaW9uTWFuYWdlci0+YWRkQ2xpZW50Rm9yQ29udGV4dChjb250ZXh0SWQpOwogCiAgICAg
aW50ZXJmYWNlLT5zZXRMYXllckhvc3RpbmdDb250ZXh0KExheWVySG9zdGluZ0NvbnRleHQ6OmNy
ZWF0ZUZvckV4dGVybmFsSG9zdGluZ1Byb2Nlc3MoKSk7Ci0gICAgbW9kZWwtPnNldFdlYlZpZGVv
RnVsbHNjcmVlbkludGVyZmFjZShpbnRlcmZhY2UuZ2V0KCkpOworICAgIG1vZGVsLT5hZGRDbGll
bnQoKmludGVyZmFjZSk7CiAKICAgICByZXR1cm4gc3RkOjptYWtlX3R1cGxlKFdURk1vdmUobW9k
ZWwpLCBXVEZNb3ZlKGludGVyZmFjZSkpOwogfQpAQCAtMjE5LDcgKzE2Nyw3IEBAIHZvaWQgV2Vi
VmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6cmVtb3ZlQ29udGV4dCh1aW50NjRfdCBjb250ZXh0SWQp
CiAKICAgICBSZWZQdHI8SFRNTFZpZGVvRWxlbWVudD4gdmlkZW9FbGVtZW50ID0gbW9kZWwtPnZp
ZGVvRWxlbWVudCgpOwogICAgIG1vZGVsLT5zZXRWaWRlb0VsZW1lbnQobnVsbHB0cik7Ci0gICAg
bW9kZWwtPnNldFdlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZShudWxscHRyKTsKKyAgICBtb2Rl
bC0+cmVtb3ZlQ2xpZW50KCppbnRlcmZhY2UpOwogICAgIGludGVyZmFjZS0+aW52YWxpZGF0ZSgp
OwogICAgIG1fdmlkZW9FbGVtZW50cy5yZW1vdmUodmlkZW9FbGVtZW50LmdldCgpKTsKICAgICBt
X2NvbnRleHRNYXAucmVtb3ZlKGNvbnRleHRJZCk7CkBAIC0zMzEsOSArMjc5LDE0IEBAIHZvaWQg
V2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6ZXhpdFZpZGVvRnVsbHNjcmVlblRvTW9kZVdpdGhv
dXRBbmltYXRpb24oV2ViQ29yCiAKICNwcmFnbWEgbWFyayBJbnRlcmZhY2UgdG8gV2ViVmlkZW9G
dWxsc2NyZWVuSW50ZXJmYWNlQ29udGV4dDoKIAotdm9pZCBXZWJWaWRlb0Z1bGxzY3JlZW5NYW5h
Z2VyOjpzZXRWaWRlb0RpbWVuc2lvbnModWludDY0X3QgY29udGV4dElkLCBib29sIGhhc1ZpZGVv
LCBmbG9hdCB3aWR0aCwgZmxvYXQgaGVpZ2h0KQordm9pZCBXZWJWaWRlb0Z1bGxzY3JlZW5NYW5h
Z2VyOjpoYXNWaWRlb0NoYW5nZWQodWludDY0X3QgY29udGV4dElkLCBib29sIGhhc1ZpZGVvKQor
eworICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6V2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlclBy
b3h5OjpTZXRIYXNWaWRlbyhjb250ZXh0SWQsIGhhc1ZpZGVvKSwgbV9wYWdlLT5wYWdlSUQoKSk7
Cit9CisKK3ZvaWQgV2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6dmlkZW9EaW1lbnNpb25zQ2hh
bmdlZCh1aW50NjRfdCBjb250ZXh0SWQsIGNvbnN0IEZsb2F0U2l6ZSYgdmlkZW9EaW1lbnNpb25z
KQogewotICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6V2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdl
clByb3h5OjpTZXRWaWRlb0RpbWVuc2lvbnMoY29udGV4dElkLCBoYXNWaWRlbywgd2lkdGgsIGhl
aWdodCksIG1fcGFnZS0+cGFnZUlEKCkpOworICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6V2Vi
VmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5OjpTZXRWaWRlb0RpbWVuc2lvbnMoY29udGV4dElk
LCB2aWRlb0RpbWVuc2lvbnMpLCBtX3BhZ2UtPnBhZ2VJRCgpKTsKIH0KIAogI3ByYWdtYSBtYXJr
IE1lc3NhZ2VzIGZyb20gV2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5Ogo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>283227</attachid>
            <date>2016-07-08 17:19:52 -0700</date>
            <delta_ts>2016-08-29 11:24:37 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-159580-20160708171915.patch</filename>
            <type>text/plain</type>
            <size>189607</size>
            <attacher name="Jer Noble">jer.noble</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjAzMDA4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOTFhOTAwNGYyOWEzZWFk
NDQ2NDc0YTRkY2Q2M2I5YzhkZTI3Mzg2Ny4uZDA1YjkxMzlkNzUxNWU0OTUyMzAyZTQyOTNmZGNi
NGExYmU2Mzg0MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDIzMyBAQAogMjAxNi0wNy0wOCAgSmVy
IE5vYmxlICA8amVyLm5vYmxlQGFwcGxlLmNvbT4KIAorICAgICAgICBSZWZhY3RvciBXZWJQbGF5
YmFja1Nlc3Npb25Nb2RlbE1lZGlhRWxlbWVudCB0byBiZSBjbGllbnQgYmFzZWQuCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTk1ODAKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgY2xpZW50IGNhbGxi
YWNrIGludGVyZmFjZXMgdG8gYm90aCBXZWJQbGF5YmFja1Nlc3Npb25Nb2RlbCBhbmQgV2ViVmlk
ZW9GdWxsc2NyZWVuTW9kZWwsIHdoZXJlIGVhY2ggb2JqZWN0CisgICAgICAgIGNhbiBoYXZlIG11
bHRpcGxlIGNsaWVudHMsIGFuZCB0aGF0IHRoZSBvYmplY3Qgd2lsbCBib3RoIHN0b3JlIGN1cnJl
bnQgdmFsdWVzIGFuZCBhbHNvIG5vdGlmeSB0aG9zZSBjbGllbnRzCisgICAgICAgIHdoZW4gdGhl
IHZhbHVlcyBjaGFuZ2UuIEFmdGVyIHRoaXMgY2hhbmdlLCB0aGVyZSBpcyBubyBuZWVkIHRvIGhh
dmUgdGhlIG1vZGVscyBrbm93IGFib3V0IHRoZWlyIGFzc29jaWF0ZWQKKyAgICAgICAgaW50ZXJm
YWNlcyBleHBsaWNpdGx5LgorCisgICAgICAgICogcGxhdGZvcm0vY29jb2EvV2ViUGxheWJhY2tT
ZXNzaW9uSW50ZXJmYWNlLmg6CisgICAgICAgICogcGxhdGZvcm0vY29jb2EvV2ViUGxheWJhY2tT
ZXNzaW9uTW9kZWwuaDoKKyAgICAgICAgKFdlYkNvcmU6OldlYlBsYXliYWNrU2Vzc2lvbk1vZGVs
Q2xpZW50Ojp+V2ViUGxheWJhY2tTZXNzaW9uTW9kZWxDbGllbnQpOgorICAgICAgICAoV2ViQ29y
ZTo6V2ViUGxheWJhY2tTZXNzaW9uTW9kZWxDbGllbnQ6OmR1cmF0aW9uQ2hhbmdlZCk6CisgICAg
ICAgIChXZWJDb3JlOjpXZWJQbGF5YmFja1Nlc3Npb25Nb2RlbENsaWVudDo6Y3VycmVudFRpbWVD
aGFuZ2VkKToKKyAgICAgICAgKFdlYkNvcmU6OldlYlBsYXliYWNrU2Vzc2lvbk1vZGVsQ2xpZW50
OjpidWZmZXJlZFRpbWVDaGFuZ2VkKToKKyAgICAgICAgKFdlYkNvcmU6OldlYlBsYXliYWNrU2Vz
c2lvbk1vZGVsQ2xpZW50OjpyYXRlQ2hhbmdlZCk6CisgICAgICAgIChXZWJDb3JlOjpXZWJQbGF5
YmFja1Nlc3Npb25Nb2RlbENsaWVudDo6c2Vla2FibGVSYW5nZXNDaGFuZ2VkKToKKyAgICAgICAg
KFdlYkNvcmU6OldlYlBsYXliYWNrU2Vzc2lvbk1vZGVsQ2xpZW50OjpjYW5QbGF5RmFzdFJldmVy
c2VDaGFuZ2VkKToKKyAgICAgICAgKFdlYkNvcmU6OldlYlBsYXliYWNrU2Vzc2lvbk1vZGVsQ2xp
ZW50OjphdWRpb01lZGlhU2VsZWN0aW9uT3B0aW9uc0NoYW5nZWQpOgorICAgICAgICAoV2ViQ29y
ZTo6V2ViUGxheWJhY2tTZXNzaW9uTW9kZWxDbGllbnQ6OmxlZ2libGVNZWRpYVNlbGVjdGlvbk9w
dGlvbnNDaGFuZ2VkKToKKyAgICAgICAgKFdlYkNvcmU6OldlYlBsYXliYWNrU2Vzc2lvbk1vZGVs
Q2xpZW50OjpleHRlcm5hbFBsYXliYWNrQ2hhbmdlZCk6CisgICAgICAgIChXZWJDb3JlOjpXZWJQ
bGF5YmFja1Nlc3Npb25Nb2RlbENsaWVudDo6d2lyZWxlc3NWaWRlb1BsYXliYWNrRGlzYWJsZWRD
aGFuZ2VkKToKKyAgICAgICAgKiBwbGF0Zm9ybS9jb2NvYS9XZWJQbGF5YmFja1Nlc3Npb25Nb2Rl
bE1lZGlhRWxlbWVudC5oOgorICAgICAgICAqIHBsYXRmb3JtL2NvY29hL1dlYlBsYXliYWNrU2Vz
c2lvbk1vZGVsTWVkaWFFbGVtZW50Lm1tOgorICAgICAgICAoV2ViUGxheWJhY2tTZXNzaW9uTW9k
ZWxNZWRpYUVsZW1lbnQ6OnNldE1lZGlhRWxlbWVudCk6CisgICAgICAgIChXZWJQbGF5YmFja1Nl
c3Npb25Nb2RlbE1lZGlhRWxlbWVudDo6dXBkYXRlRm9yRXZlbnROYW1lKToKKyAgICAgICAgKFdl
YlBsYXliYWNrU2Vzc2lvbk1vZGVsTWVkaWFFbGVtZW50OjphZGRDbGllbnQpOgorICAgICAgICAo
V2ViUGxheWJhY2tTZXNzaW9uTW9kZWxNZWRpYUVsZW1lbnQ6OnJlbW92ZUNsaWVudCk6CisgICAg
ICAgIChXZWJQbGF5YmFja1Nlc3Npb25Nb2RlbE1lZGlhRWxlbWVudDo6dXBkYXRlTGVnaWJsZU9w
dGlvbnMpOgorICAgICAgICAoV2ViUGxheWJhY2tTZXNzaW9uTW9kZWxNZWRpYUVsZW1lbnQ6Om9i
c2VydmVkRXZlbnROYW1lcyk6CisgICAgICAgIChXZWJQbGF5YmFja1Nlc3Npb25Nb2RlbE1lZGlh
RWxlbWVudDo6ZXZlbnROYW1lQWxsKToKKyAgICAgICAgKFdlYlBsYXliYWNrU2Vzc2lvbk1vZGVs
TWVkaWFFbGVtZW50OjphdWRpb01lZGlhU2VsZWN0aW9uT3B0aW9ucyk6CisgICAgICAgIChXZWJQ
bGF5YmFja1Nlc3Npb25Nb2RlbE1lZGlhRWxlbWVudDo6YXVkaW9NZWRpYVNlbGVjdGVkSW5kZXgp
OgorICAgICAgICAoV2ViUGxheWJhY2tTZXNzaW9uTW9kZWxNZWRpYUVsZW1lbnQ6OmxlZ2libGVN
ZWRpYVNlbGVjdGVkSW5kZXgpOgorICAgICAgICAoV2ViUGxheWJhY2tTZXNzaW9uTW9kZWxNZWRp
YUVsZW1lbnQ6OmV4dGVybmFsUGxheWJhY2tFbmFibGVkKToKKyAgICAgICAgKFdlYlBsYXliYWNr
U2Vzc2lvbk1vZGVsTWVkaWFFbGVtZW50OjpleHRlcm5hbFBsYXliYWNrVGFyZ2V0VHlwZSk6Cisg
ICAgICAgIChXZWJQbGF5YmFja1Nlc3Npb25Nb2RlbE1lZGlhRWxlbWVudDo6ZXh0ZXJuYWxQbGF5
YmFja0xvY2FsaXplZERldmljZU5hbWUpOgorICAgICAgICAoV2ViUGxheWJhY2tTZXNzaW9uTW9k
ZWxNZWRpYUVsZW1lbnQ6OndpcmVsZXNzVmlkZW9QbGF5YmFja0Rpc2FibGVkKToKKyAgICAgICAg
KFdlYlBsYXliYWNrU2Vzc2lvbk1vZGVsTWVkaWFFbGVtZW50OjpzZXRXZWJQbGF5YmFja1Nlc3Np
b25JbnRlcmZhY2UpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL2NvY29hL1dlYlZpZGVv
RnVsbHNjcmVlbkludGVyZmFjZS5oOgorICAgICAgICAqIHBsYXRmb3JtL2NvY29hL1dlYlZpZGVv
RnVsbHNjcmVlbk1vZGVsLmg6CisgICAgICAgIChXZWJDb3JlOjpXZWJWaWRlb0Z1bGxzY3JlZW5N
b2RlbENsaWVudDo6fldlYlZpZGVvRnVsbHNjcmVlbk1vZGVsQ2xpZW50KToKKyAgICAgICAgKiBw
bGF0Zm9ybS9jb2NvYS9XZWJWaWRlb0Z1bGxzY3JlZW5Nb2RlbFZpZGVvRWxlbWVudC5oOgorICAg
ICAgICAoV2ViQ29yZTo6V2ViVmlkZW9GdWxsc2NyZWVuTW9kZWxWaWRlb0VsZW1lbnQ6OmNyZWF0
ZSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJWaWRlb0Z1bGxzY3JlZW5Nb2RlbFZpZGVvRWxlbWVu
dDo6cGxheWJhY2tTZXNzaW9uTW9kZWwpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL2Nv
Y29hL1dlYlZpZGVvRnVsbHNjcmVlbk1vZGVsVmlkZW9FbGVtZW50Lm1tOgorICAgICAgICAoV2Vi
VmlkZW9GdWxsc2NyZWVuTW9kZWxWaWRlb0VsZW1lbnQ6OldlYlZpZGVvRnVsbHNjcmVlbk1vZGVs
VmlkZW9FbGVtZW50KToKKyAgICAgICAgKFdlYlZpZGVvRnVsbHNjcmVlbk1vZGVsVmlkZW9FbGVt
ZW50OjpzZXRWaWRlb0VsZW1lbnQpOgorICAgICAgICAoV2ViVmlkZW9GdWxsc2NyZWVuTW9kZWxW
aWRlb0VsZW1lbnQ6OnVwZGF0ZUZvckV2ZW50TmFtZSk6CisgICAgICAgIChXZWJWaWRlb0Z1bGxz
Y3JlZW5Nb2RlbFZpZGVvRWxlbWVudDo6YWRkQ2xpZW50KToKKyAgICAgICAgKFdlYlZpZGVvRnVs
bHNjcmVlbk1vZGVsVmlkZW9FbGVtZW50OjpyZW1vdmVDbGllbnQpOgorICAgICAgICAoV2ViVmlk
ZW9GdWxsc2NyZWVuTW9kZWxWaWRlb0VsZW1lbnQ6OnNldEhhc1ZpZGVvKToKKyAgICAgICAgKFdl
YlZpZGVvRnVsbHNjcmVlbk1vZGVsVmlkZW9FbGVtZW50OjpzZXRWaWRlb0RpbWVuc2lvbnMpOgor
ICAgICAgICAoV2ViVmlkZW9GdWxsc2NyZWVuTW9kZWxWaWRlb0VsZW1lbnQ6OnNldFdlYlZpZGVv
RnVsbHNjcmVlbkludGVyZmFjZSk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vaW9zL1dl
YkFWUGxheWVyQ29udHJvbGxlci5oOgorICAgICAgICAqIHBsYXRmb3JtL2lvcy9XZWJBVlBsYXll
ckNvbnRyb2xsZXIubW06CisgICAgICAgICgtW1dlYkFWUGxheWVyQ29udHJvbGxlciByZXNldFN0
YXRlXSk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vaW9zL1dlYlBsYXliYWNrU2Vzc2lv
bkludGVyZmFjZUFWS2l0Lmg6CisgICAgICAgIChXZWJDb3JlOjpXZWJQbGF5YmFja1Nlc3Npb25J
bnRlcmZhY2VBVktpdENsaWVudDo6fldlYlBsYXliYWNrU2Vzc2lvbkludGVyZmFjZUFWS2l0Q2xp
ZW50KTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9pb3MvV2ViUGxheWJhY2tTZXNzaW9u
SW50ZXJmYWNlQVZLaXQubW06CisgICAgICAgIChXZWJDb3JlOjpXZWJQbGF5YmFja1Nlc3Npb25J
bnRlcmZhY2VBVktpdDo6V2ViUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlQVZLaXQpOgorICAgICAg
ICAoV2ViQ29yZTo6V2ViUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlQVZLaXQ6On5XZWJQbGF5YmFj
a1Nlc3Npb25JbnRlcmZhY2VBVktpdCk6CisgICAgICAgIChXZWJDb3JlOjpXZWJQbGF5YmFja1Nl
c3Npb25JbnRlcmZhY2VBVktpdDo6cmVzZXRNZWRpYVN0YXRlKToKKyAgICAgICAgKFdlYkNvcmU6
OldlYlBsYXliYWNrU2Vzc2lvbkludGVyZmFjZUFWS2l0OjpkdXJhdGlvbkNoYW5nZWQpOgorICAg
ICAgICAoV2ViQ29yZTo6V2ViUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlQVZLaXQ6OmN1cnJlbnRU
aW1lQ2hhbmdlZCk6CisgICAgICAgIChXZWJDb3JlOjpXZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZh
Y2VBVktpdDo6YnVmZmVyZWRUaW1lQ2hhbmdlZCk6CisgICAgICAgIChXZWJDb3JlOjpXZWJQbGF5
YmFja1Nlc3Npb25JbnRlcmZhY2VBVktpdDo6cmF0ZUNoYW5nZWQpOgorICAgICAgICAoV2ViQ29y
ZTo6V2ViUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlQVZLaXQ6OnNlZWthYmxlUmFuZ2VzQ2hhbmdl
ZCk6CisgICAgICAgIChXZWJDb3JlOjpXZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2VBVktpdDo6
Y2FuUGxheUZhc3RSZXZlcnNlQ2hhbmdlZCk6CisgICAgICAgIChXZWJDb3JlOjpXZWJQbGF5YmFj
a1Nlc3Npb25JbnRlcmZhY2VBVktpdDo6YXVkaW9NZWRpYVNlbGVjdGlvbk9wdGlvbnNDaGFuZ2Vk
KToKKyAgICAgICAgKFdlYkNvcmU6OldlYlBsYXliYWNrU2Vzc2lvbkludGVyZmFjZUFWS2l0Ojps
ZWdpYmxlTWVkaWFTZWxlY3Rpb25PcHRpb25zQ2hhbmdlZCk6CisgICAgICAgIChXZWJDb3JlOjpX
ZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2VBVktpdDo6ZXh0ZXJuYWxQbGF5YmFja0NoYW5nZWQp
OgorICAgICAgICAoV2ViQ29yZTo6V2ViUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlQVZLaXQ6Ondp
cmVsZXNzVmlkZW9QbGF5YmFja0Rpc2FibGVkQ2hhbmdlZCk6CisgICAgICAgIChXZWJDb3JlOjpX
ZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2VBVktpdDo6aW52YWxpZGF0ZSk6CisgICAgICAgIChX
ZWJDb3JlOjpXZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2VBVktpdDo6c2V0V2ViUGxheWJhY2tT
ZXNzaW9uTW9kZWwpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6V2ViUGxheWJhY2tTZXNz
aW9uSW50ZXJmYWNlQVZLaXQ6OnNldER1cmF0aW9uKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNv
cmU6OldlYlBsYXliYWNrU2Vzc2lvbkludGVyZmFjZUFWS2l0OjpzZXRDdXJyZW50VGltZSk6IERl
bGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpXZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2VBVktp
dDo6c2V0QnVmZmVyZWRUaW1lKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OldlYlBsYXli
YWNrU2Vzc2lvbkludGVyZmFjZUFWS2l0OjpzZXRSYXRlKTogRGVsZXRlZC4KKyAgICAgICAgKFdl
YkNvcmU6OldlYlBsYXliYWNrU2Vzc2lvbkludGVyZmFjZUFWS2l0OjpzZXRTZWVrYWJsZVJhbmdl
cyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpXZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZh
Y2VBVktpdDo6c2V0Q2FuUGxheUZhc3RSZXZlcnNlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNv
cmU6OldlYlBsYXliYWNrU2Vzc2lvbkludGVyZmFjZUFWS2l0OjpzZXRBdWRpb01lZGlhU2VsZWN0
aW9uT3B0aW9ucyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpXZWJQbGF5YmFja1Nlc3Np
b25JbnRlcmZhY2VBVktpdDo6c2V0TGVnaWJsZU1lZGlhU2VsZWN0aW9uT3B0aW9ucyk6IERlbGV0
ZWQuCisgICAgICAgIChXZWJDb3JlOjpXZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2VBVktpdDo6
c2V0RXh0ZXJuYWxQbGF5YmFjayk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpXZWJQbGF5
YmFja1Nlc3Npb25JbnRlcmZhY2VBVktpdDo6c2V0V2lyZWxlc3NWaWRlb1BsYXliYWNrRGlzYWJs
ZWQpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6V2ViUGxheWJhY2tTZXNzaW9uSW50ZXJm
YWNlQVZLaXQ6OndpcmVsZXNzVmlkZW9QbGF5YmFja0Rpc2FibGVkKTogRGVsZXRlZC4KKyAgICAg
ICAgKiBwbGF0Zm9ybS9pb3MvV2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlckFWS2l0Lm1tOgor
ICAgICAgICAoV2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlckNvbnRleHQ6OmRpZFNldHVwRnVs
bHNjcmVlbik6CisgICAgICAgIChXZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyQ29udGV4dDo6
ZGlkRXhpdEZ1bGxzY3JlZW4pOgorICAgICAgICAoV2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxl
ckNvbnRleHQ6OmRpZENsZWFudXBGdWxsc2NyZWVuKToKKyAgICAgICAgKFdlYlZpZGVvRnVsbHNj
cmVlbkNvbnRyb2xsZXJDb250ZXh0OjpkdXJhdGlvbkNoYW5nZWQpOgorICAgICAgICAoV2ViVmlk
ZW9GdWxsc2NyZWVuQ29udHJvbGxlckNvbnRleHQ6OmN1cnJlbnRUaW1lQ2hhbmdlZCk6CisgICAg
ICAgIChXZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyQ29udGV4dDo6YnVmZmVyZWRUaW1lQ2hh
bmdlZCk6CisgICAgICAgIChXZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyQ29udGV4dDo6cmF0
ZUNoYW5nZWQpOgorICAgICAgICAoV2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlckNvbnRleHQ6
Omhhc1ZpZGVvQ2hhbmdlZCk6CisgICAgICAgIChXZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVy
Q29udGV4dDo6dmlkZW9EaW1lbnNpb25zQ2hhbmdlZCk6CisgICAgICAgIChXZWJWaWRlb0Z1bGxz
Y3JlZW5Db250cm9sbGVyQ29udGV4dDo6c2Vla2FibGVSYW5nZXNDaGFuZ2VkKToKKyAgICAgICAg
KFdlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJDb250ZXh0OjpjYW5QbGF5RmFzdFJldmVyc2VD
aGFuZ2VkKToKKyAgICAgICAgKFdlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJDb250ZXh0Ojph
dWRpb01lZGlhU2VsZWN0aW9uT3B0aW9uc0NoYW5nZWQpOgorICAgICAgICAoV2ViVmlkZW9GdWxs
c2NyZWVuQ29udHJvbGxlckNvbnRleHQ6OmxlZ2libGVNZWRpYVNlbGVjdGlvbk9wdGlvbnNDaGFu
Z2VkKToKKyAgICAgICAgKFdlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJDb250ZXh0OjpleHRl
cm5hbFBsYXliYWNrQ2hhbmdlZCk6CisgICAgICAgIChXZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9s
bGVyQ29udGV4dDo6d2lyZWxlc3NWaWRlb1BsYXliYWNrRGlzYWJsZWRDaGFuZ2VkKToKKyAgICAg
ICAgKFdlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJDb250ZXh0OjphZGRDbGllbnQpOgorICAg
ICAgICAoV2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlckNvbnRleHQ6OnJlbW92ZUNsaWVudCk6
CisgICAgICAgIChXZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyQ29udGV4dDo6cmVxdWVzdEZ1
bGxzY3JlZW5Nb2RlKToKKyAgICAgICAgKFdlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJDb250
ZXh0OjpzZXRWaWRlb0xheWVyRnJhbWUpOgorICAgICAgICAoV2ViVmlkZW9GdWxsc2NyZWVuQ29u
dHJvbGxlckNvbnRleHQ6OnNldFZpZGVvTGF5ZXJHcmF2aXR5KToKKyAgICAgICAgKFdlYlZpZGVv
RnVsbHNjcmVlbkNvbnRyb2xsZXJDb250ZXh0OjpmdWxsc2NyZWVuTW9kZUNoYW5nZWQpOgorICAg
ICAgICAoV2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlckNvbnRleHQ6OmlzVmlzaWJsZSk6Cisg
ICAgICAgIChXZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyQ29udGV4dDo6aGFzVmlkZW8pOgor
ICAgICAgICAoV2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlckNvbnRleHQ6OnZpZGVvRGltZW5z
aW9ucyk6CisgICAgICAgIChXZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyQ29udGV4dDo6cGxh
eSk6CisgICAgICAgIChXZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyQ29udGV4dDo6cGF1c2Up
OgorICAgICAgICAoV2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlckNvbnRleHQ6OnRvZ2dsZVBs
YXlTdGF0ZSk6CisgICAgICAgIChXZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyQ29udGV4dDo6
YmVnaW5TY3J1YmJpbmcpOgorICAgICAgICAoV2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlckNv
bnRleHQ6OmVuZFNjcnViYmluZyk6CisgICAgICAgIChXZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9s
bGVyQ29udGV4dDo6c2Vla1RvVGltZSk6CisgICAgICAgIChXZWJWaWRlb0Z1bGxzY3JlZW5Db250
cm9sbGVyQ29udGV4dDo6ZmFzdFNlZWspOgorICAgICAgICAoV2ViVmlkZW9GdWxsc2NyZWVuQ29u
dHJvbGxlckNvbnRleHQ6OmJlZ2luU2Nhbm5pbmdGb3J3YXJkKToKKyAgICAgICAgKFdlYlZpZGVv
RnVsbHNjcmVlbkNvbnRyb2xsZXJDb250ZXh0OjpiZWdpblNjYW5uaW5nQmFja3dhcmQpOgorICAg
ICAgICAoV2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlckNvbnRleHQ6OmVuZFNjYW5uaW5nKToK
KyAgICAgICAgKFdlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJDb250ZXh0OjpzZWxlY3RBdWRp
b01lZGlhT3B0aW9uKToKKyAgICAgICAgKFdlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJDb250
ZXh0OjpzZWxlY3RMZWdpYmxlTWVkaWFPcHRpb24pOgorICAgICAgICAoV2ViVmlkZW9GdWxsc2Ny
ZWVuQ29udHJvbGxlckNvbnRleHQ6OmR1cmF0aW9uKToKKyAgICAgICAgKFdlYlZpZGVvRnVsbHNj
cmVlbkNvbnRyb2xsZXJDb250ZXh0OjpjdXJyZW50VGltZSk6CisgICAgICAgIChXZWJWaWRlb0Z1
bGxzY3JlZW5Db250cm9sbGVyQ29udGV4dDo6YnVmZmVyZWRUaW1lKToKKyAgICAgICAgKFdlYlZp
ZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJDb250ZXh0Ojppc1BsYXlpbmcpOgorICAgICAgICAoV2Vi
VmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlckNvbnRleHQ6OnBsYXliYWNrUmF0ZSk6CisgICAgICAg
IChXZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyQ29udGV4dDo6c2Vla2FibGVSYW5nZXMpOgor
ICAgICAgICAoV2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlckNvbnRleHQ6OmNhblBsYXlGYXN0
UmV2ZXJzZSk6CisgICAgICAgIChXZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyQ29udGV4dDo6
YXVkaW9NZWRpYVNlbGVjdGlvbk9wdGlvbnMpOgorICAgICAgICAoV2ViVmlkZW9GdWxsc2NyZWVu
Q29udHJvbGxlckNvbnRleHQ6OmF1ZGlvTWVkaWFTZWxlY3RlZEluZGV4KToKKyAgICAgICAgKFdl
YlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJDb250ZXh0OjpsZWdpYmxlTWVkaWFTZWxlY3Rpb25P
cHRpb25zKToKKyAgICAgICAgKFdlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJDb250ZXh0Ojps
ZWdpYmxlTWVkaWFTZWxlY3RlZEluZGV4KToKKyAgICAgICAgKFdlYlZpZGVvRnVsbHNjcmVlbkNv
bnRyb2xsZXJDb250ZXh0OjpleHRlcm5hbFBsYXliYWNrRW5hYmxlZCk6CisgICAgICAgIChXZWJW
aWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyQ29udGV4dDo6ZXh0ZXJuYWxQbGF5YmFja1RhcmdldFR5
cGUpOgorICAgICAgICAoV2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlckNvbnRleHQ6OmV4dGVy
bmFsUGxheWJhY2tMb2NhbGl6ZWREZXZpY2VOYW1lKToKKyAgICAgICAgKFdlYlZpZGVvRnVsbHNj
cmVlbkNvbnRyb2xsZXJDb250ZXh0Ojp3aXJlbGVzc1ZpZGVvUGxheWJhY2tEaXNhYmxlZCk6Cisg
ICAgICAgIChXZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyQ29udGV4dDo6c2V0VXBGdWxsc2Ny
ZWVuKToKKyAgICAgICAgKFdlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJDb250ZXh0OjpleGl0
RnVsbHNjcmVlbik6CisgICAgICAgIChXZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyQ29udGV4
dDo6cmVxdWVzdEhpZGVBbmRFeGl0RnVsbHNjcmVlbik6CisgICAgICAgIChXZWJWaWRlb0Z1bGxz
Y3JlZW5Db250cm9sbGVyQ29udGV4dDo6cmVzZXRNZWRpYVN0YXRlKTogRGVsZXRlZC4KKyAgICAg
ICAgKFdlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJDb250ZXh0OjpzZXREdXJhdGlvbik6IERl
bGV0ZWQuCisgICAgICAgIChXZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyQ29udGV4dDo6c2V0
Q3VycmVudFRpbWUpOiBEZWxldGVkLgorICAgICAgICAoV2ViVmlkZW9GdWxsc2NyZWVuQ29udHJv
bGxlckNvbnRleHQ6OnNldEJ1ZmZlcmVkVGltZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJWaWRl
b0Z1bGxzY3JlZW5Db250cm9sbGVyQ29udGV4dDo6c2V0UmF0ZSk6IERlbGV0ZWQuCisgICAgICAg
IChXZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyQ29udGV4dDo6c2V0VmlkZW9EaW1lbnNpb25z
KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJDb250ZXh0
OjpzZXRTZWVrYWJsZVJhbmdlcyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJWaWRlb0Z1bGxzY3Jl
ZW5Db250cm9sbGVyQ29udGV4dDo6c2V0Q2FuUGxheUZhc3RSZXZlcnNlKTogRGVsZXRlZC4KKyAg
ICAgICAgKFdlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJDb250ZXh0OjpzZXRBdWRpb01lZGlh
U2VsZWN0aW9uT3B0aW9ucyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJWaWRlb0Z1bGxzY3JlZW5D
b250cm9sbGVyQ29udGV4dDo6c2V0TGVnaWJsZU1lZGlhU2VsZWN0aW9uT3B0aW9ucyk6IERlbGV0
ZWQuCisgICAgICAgIChXZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyQ29udGV4dDo6c2V0RXh0
ZXJuYWxQbGF5YmFjayk6IERlbGV0ZWQuCisgICAgICAgIChXZWJWaWRlb0Z1bGxzY3JlZW5Db250
cm9sbGVyQ29udGV4dDo6c2V0V2lyZWxlc3NWaWRlb1BsYXliYWNrRGlzYWJsZWQpOiBEZWxldGVk
LgorICAgICAgICAoV2ViVmlkZW9GdWxsc2NyZWVuU2Vzc2lvbk1vZGVsOjpwbGF5KTogRGVsZXRl
ZC4KKyAgICAgICAgKFdlYlZpZGVvRnVsbHNjcmVlblNlc3Npb25Nb2RlbDo6cGF1c2UpOiBEZWxl
dGVkLgorICAgICAgICAoV2ViVmlkZW9GdWxsc2NyZWVuU2Vzc2lvbk1vZGVsOjp0b2dnbGVQbGF5
U3RhdGUpOiBEZWxldGVkLgorICAgICAgICAoV2ViVmlkZW9GdWxsc2NyZWVuU2Vzc2lvbk1vZGVs
OjpiZWdpblNjcnViYmluZyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJWaWRlb0Z1bGxzY3JlZW5T
ZXNzaW9uTW9kZWw6OmVuZFNjcnViYmluZyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJWaWRlb0Z1
bGxzY3JlZW5TZXNzaW9uTW9kZWw6OnNlZWtUb1RpbWUpOiBEZWxldGVkLgorICAgICAgICAoV2Vi
VmlkZW9GdWxsc2NyZWVuU2Vzc2lvbk1vZGVsOjpmYXN0U2Vlayk6IERlbGV0ZWQuCisgICAgICAg
IChXZWJWaWRlb0Z1bGxzY3JlZW5TZXNzaW9uTW9kZWw6OmJlZ2luU2Nhbm5pbmdGb3J3YXJkKTog
RGVsZXRlZC4KKyAgICAgICAgKFdlYlZpZGVvRnVsbHNjcmVlblNlc3Npb25Nb2RlbDo6YmVnaW5T
Y2FubmluZ0JhY2t3YXJkKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYlZpZGVvRnVsbHNjcmVlblNl
c3Npb25Nb2RlbDo6ZW5kU2Nhbm5pbmcpOiBEZWxldGVkLgorICAgICAgICAoV2ViVmlkZW9GdWxs
c2NyZWVuU2Vzc2lvbk1vZGVsOjpzZWxlY3RBdWRpb01lZGlhT3B0aW9uKTogRGVsZXRlZC4KKyAg
ICAgICAgKFdlYlZpZGVvRnVsbHNjcmVlblNlc3Npb25Nb2RlbDo6c2VsZWN0TGVnaWJsZU1lZGlh
T3B0aW9uKTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9pb3MvV2ViVmlkZW9GdWxsc2Ny
ZWVuSW50ZXJmYWNlQVZLaXQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9pb3MvV2ViVmlkZW9GdWxs
c2NyZWVuSW50ZXJmYWNlQVZLaXQubW06CisgICAgICAgIChXZWJWaWRlb0Z1bGxzY3JlZW5JbnRl
cmZhY2VBVktpdDo6fldlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0KToKKyAgICAgICAg
KFdlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0OjpzZXRXZWJWaWRlb0Z1bGxzY3JlZW5N
b2RlbCk6CisgICAgICAgIChXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdDo6c2V0V2Vi
VmlkZW9GdWxsc2NyZWVuQ2hhbmdlT2JzZXJ2ZXIpOgorICAgICAgICAoV2ViVmlkZW9GdWxsc2Ny
ZWVuSW50ZXJmYWNlQVZLaXQ6Omhhc1ZpZGVvQ2hhbmdlZCk6CisgICAgICAgIChXZWJWaWRlb0Z1
bGxzY3JlZW5JbnRlcmZhY2VBVktpdDo6dmlkZW9EaW1lbnNpb25zQ2hhbmdlZCk6CisgICAgICAg
IChXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdDo6ZXh0ZXJuYWxQbGF5YmFja0NoYW5n
ZWQpOgorICAgICAgICAoV2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQ6OnJlc2V0TWVk
aWFTdGF0ZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VB
VktpdDo6c2V0RHVyYXRpb24pOiBEZWxldGVkLgorICAgICAgICAoV2ViVmlkZW9GdWxsc2NyZWVu
SW50ZXJmYWNlQVZLaXQ6OnNldEN1cnJlbnRUaW1lKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYlZp
ZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0OjpzZXRCdWZmZXJlZFRpbWUpOiBEZWxldGVkLgor
ICAgICAgICAoV2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQ6OnNldFJhdGUpOiBEZWxl
dGVkLgorICAgICAgICAoV2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQ6OnNldFZpZGVv
RGltZW5zaW9ucyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZh
Y2VBVktpdDo6c2V0U2Vla2FibGVSYW5nZXMpOiBEZWxldGVkLgorICAgICAgICAoV2ViVmlkZW9G
dWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQ6OnNldENhblBsYXlGYXN0UmV2ZXJzZSk6IERlbGV0ZWQu
CisgICAgICAgIChXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdDo6c2V0QXVkaW9NZWRp
YVNlbGVjdGlvbk9wdGlvbnMpOiBEZWxldGVkLgorICAgICAgICAoV2ViVmlkZW9GdWxsc2NyZWVu
SW50ZXJmYWNlQVZLaXQ6OnNldExlZ2libGVNZWRpYVNlbGVjdGlvbk9wdGlvbnMpOiBEZWxldGVk
LgorICAgICAgICAoV2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQ6OnNldEV4dGVybmFs
UGxheWJhY2spOiBEZWxldGVkLgorICAgICAgICAoV2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNl
QVZLaXQ6OmV4dGVybmFsUGxheWJhY2tFbmFibGVkQ2hhbmdlZCk6IERlbGV0ZWQuCisgICAgICAg
IChXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdDo6c2V0V2lyZWxlc3NWaWRlb1BsYXli
YWNrRGlzYWJsZWQpOiBEZWxldGVkLgorICAgICAgICAoV2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJm
YWNlQVZLaXQ6OndpcmVsZXNzVmlkZW9QbGF5YmFja0Rpc2FibGVkKTogRGVsZXRlZC4KKyAgICAg
ICAgKiBwbGF0Zm9ybS9tYWMvV2ViUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlTWFjLmg6CisgICAg
ICAgIChXZWJDb3JlOjpXZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2VNYWNDbGllbnQ6On5XZWJQ
bGF5YmFja1Nlc3Npb25JbnRlcmZhY2VNYWNDbGllbnQpOiBEZWxldGVkLgorICAgICAgICAqIHBs
YXRmb3JtL21hYy9XZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2VNYWMubW06CisgICAgICAgIChX
ZWJDb3JlOjpXZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2VNYWM6OmNyZWF0ZSk6CisgICAgICAg
IChXZWJDb3JlOjpXZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2VNYWM6OldlYlBsYXliYWNrU2Vz
c2lvbkludGVyZmFjZU1hYyk6CisgICAgICAgIChXZWJDb3JlOjpXZWJQbGF5YmFja1Nlc3Npb25J
bnRlcmZhY2VNYWM6On5XZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2VNYWMpOgorICAgICAgICAo
V2ViQ29yZTo6V2ViUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlTWFjOjpkdXJhdGlvbkNoYW5nZWQp
OgorICAgICAgICAoV2ViQ29yZTo6V2ViUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlTWFjOjpjdXJy
ZW50VGltZUNoYW5nZWQpOgorICAgICAgICAoV2ViQ29yZTo6V2ViUGxheWJhY2tTZXNzaW9uSW50
ZXJmYWNlTWFjOjpyYXRlQ2hhbmdlZCk6CisgICAgICAgIChXZWJDb3JlOjpXZWJQbGF5YmFja1Nl
c3Npb25JbnRlcmZhY2VNYWM6OnNlZWthYmxlUmFuZ2VzQ2hhbmdlZCk6CisgICAgICAgIChXZWJD
b3JlOjpXZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2VNYWM6OmF1ZGlvTWVkaWFTZWxlY3Rpb25P
cHRpb25zQ2hhbmdlZCk6CisgICAgICAgIChXZWJDb3JlOjpXZWJQbGF5YmFja1Nlc3Npb25JbnRl
cmZhY2VNYWM6OmxlZ2libGVNZWRpYVNlbGVjdGlvbk9wdGlvbnNDaGFuZ2VkKToKKyAgICAgICAg
KFdlYkNvcmU6OldlYlBsYXliYWNrU2Vzc2lvbkludGVyZmFjZU1hYzo6aW52YWxpZGF0ZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpXZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2VNYWM6OnNldFdlYlBs
YXliYWNrU2Vzc2lvbk1vZGVsKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OldlYlBsYXli
YWNrU2Vzc2lvbkludGVyZmFjZU1hYzo6c2V0Q2xpZW50KTogRGVsZXRlZC4KKyAgICAgICAgKFdl
YkNvcmU6OldlYlBsYXliYWNrU2Vzc2lvbkludGVyZmFjZU1hYzo6c2V0RHVyYXRpb24pOiBEZWxl
dGVkLgorICAgICAgICAoV2ViQ29yZTo6V2ViUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlTWFjOjpz
ZXRDdXJyZW50VGltZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpXZWJQbGF5YmFja1Nl
c3Npb25JbnRlcmZhY2VNYWM6OnNldFJhdGUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6
V2ViUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlTWFjOjpzZXRTZWVrYWJsZVJhbmdlcyk6IERlbGV0
ZWQuCisgICAgICAgIChXZWJDb3JlOjpXZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2VNYWM6OnNl
dEF1ZGlvTWVkaWFTZWxlY3Rpb25PcHRpb25zKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6
OldlYlBsYXliYWNrU2Vzc2lvbkludGVyZmFjZU1hYzo6c2V0TGVnaWJsZU1lZGlhU2VsZWN0aW9u
T3B0aW9ucyk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vbWFjL1dlYlZpZGVvRnVsbHNj
cmVlbkludGVyZmFjZU1hYy5oOgorICAgICAgICAqIHBsYXRmb3JtL21hYy9XZWJWaWRlb0Z1bGxz
Y3JlZW5JbnRlcmZhY2VNYWMubW06CisgICAgICAgIChXZWJDb3JlOjpXZWJWaWRlb0Z1bGxzY3Jl
ZW5JbnRlcmZhY2VNYWM6OldlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZU1hYyk6CisgICAgICAg
IChXZWJDb3JlOjpXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VNYWM6On5XZWJWaWRlb0Z1bGxz
Y3JlZW5JbnRlcmZhY2VNYWMpOgorICAgICAgICAoV2ViQ29yZTo6V2ViVmlkZW9GdWxsc2NyZWVu
SW50ZXJmYWNlTWFjOjpzZXRXZWJWaWRlb0Z1bGxzY3JlZW5Nb2RlbCk6CisgICAgICAgIChXZWJD
b3JlOjpXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VNYWM6OmV4dGVybmFsUGxheWJhY2tDaGFu
Z2VkKToKKyAgICAgICAgKFdlYkNvcmU6OldlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZU1hYzo6
aGFzVmlkZW9DaGFuZ2VkKToKKyAgICAgICAgKFdlYkNvcmU6OldlYlZpZGVvRnVsbHNjcmVlbklu
dGVyZmFjZU1hYzo6dmlkZW9EaW1lbnNpb25zQ2hhbmdlZCk6CisgICAgICAgIChXZWJDb3JlOjpX
ZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VNYWM6OnNldER1cmF0aW9uKTogRGVsZXRlZC4KKyAg
ICAgICAgKFdlYkNvcmU6OldlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZU1hYzo6c2V0Q3VycmVu
dFRpbWUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6V2ViVmlkZW9GdWxsc2NyZWVuSW50
ZXJmYWNlTWFjOjpzZXRSYXRlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OldlYlZpZGVv
RnVsbHNjcmVlbkludGVyZmFjZU1hYzo6c2V0U2Vla2FibGVSYW5nZXMpOiBEZWxldGVkLgorICAg
ICAgICAoV2ViQ29yZTo6V2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlTWFjOjpzZXRBdWRpb01l
ZGlhU2VsZWN0aW9uT3B0aW9ucyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpXZWJWaWRl
b0Z1bGxzY3JlZW5JbnRlcmZhY2VNYWM6OnNldExlZ2libGVNZWRpYVNlbGVjdGlvbk9wdGlvbnMp
OiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6V2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNl
TWFjOjpzZXRFeHRlcm5hbFBsYXliYWNrKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6Oldl
YlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZU1hYzo6c2V0VmlkZW9EaW1lbnNpb25zKTogRGVsZXRl
ZC4KKworMjAxNi0wNy0wOCAgSmVyIE5vYmxlICA8amVyLm5vYmxlQGFwcGxlLmNvbT4KKwogICAg
ICAgICBDcmFzaCBpbiBsYXlvdXQgdGVzdCAvbWVkaWEvdmlkZW8tYnVmZmVyZWQtcmFuZ2UtY29u
dGFpbnMtY3VycmVudFRpbWUuaHRtbAogICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTU5MTA5CiAgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8yNjUzNTc1MD4K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQv
bWFjL0NoYW5nZUxvZwppbmRleCAwNmFhZDEzMTkyOTc3ZjRlNGY1YjQwNzBlYzU2NDkwZmNiNmE2
ZDRlLi4yMzE4MGE2NjkwNDA2YTE0ZWZlZWY5OTA5ZWY3NzhlODlmZTVhMTA2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9tYWMvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMTYtMDctMDggIEplciBOb2JsZSAgPGplci5ub2Js
ZUBhcHBsZS5jb20+CisKKyAgICAgICAgUmVmYWN0b3IgV2ViUGxheWJhY2tTZXNzaW9uTW9kZWxN
ZWRpYUVsZW1lbnQgdG8gYmUgY2xpZW50IGJhc2VkLgorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU5NTgwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgTm8gbG9uZ2VyIG5lY2Vzc2FyeSB0byB0ZWxsIHRoZSBt
b2RlbHMgYW5kIGludGVyZmFjZXMgYWJvdXQgZWFjaCBvdGhlci4KKworICAgICAgICAqIFdlYlZp
ZXcvV2ViVmlldy5tbToKKyAgICAgICAgKC1bV2ViVmlldyBfc2V0VXBQbGF5YmFja0NvbnRyb2xz
TWFuYWdlckZvck1lZGlhRWxlbWVudDpdKToKKyAgICAgICAgKC1bV2ViVmlldyBfY2xlYXJQbGF5
YmFja0NvbnRyb2xzTWFuYWdlcl0pOgorCiAyMDE2LTA3LTA4ICBBbmR5IEVzdGVzICA8YWVzdGVz
QGFwcGxlLmNvbT4KIAogICAgICAgICBbQ29udGVudCBGaWx0ZXJpbmddIExvYWQgYmxvY2tlZCBw
YWdlcyBtb3JlIGxpa2Ugb3RoZXIgZXJyb3IgcGFnZXMgYXJlIGxvYWRlZApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCmluZGV4
IGNhNWIxMTNkOTZjZjk0NGI2MThjYTkwMWQzMmI4NTBlZTgzMTRkZWQuLjA1ZTY3ZGI5MDlmN2E2
NDI3YzFiNmFlNjI0NmIyMWJlNDQxNDY5ZDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMTggQEAK
KzIwMTYtMDctMDggIEplciBOb2JsZSAgPGplci5ub2JsZUBhcHBsZS5jb20+CisKKyAgICAgICAg
UmVmYWN0b3IgV2ViUGxheWJhY2tTZXNzaW9uTW9kZWxNZWRpYUVsZW1lbnQgdG8gYmUgY2xpZW50
IGJhc2VkLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTU5NTgwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
QWRvcHQgdGhlIGNoYW5nZXMgbWFkZSBpbiB0aGUgV2ViUGxheWJhY2tTZXNzaW9uTW9kZWwsSW50
ZXJmYWNlIGFuZCBXZWJWaWRlb0Z1bGxzY3JlZW5Nb2RlbCxJbnRlcmZhY2UKKyAgICAgICAgaW4g
dGhlIFdlYlBsYXliYWNrU2Vzc2lvbk1hbmFnZXIsUHJveHkgY2xhc3Nlcy4KKworICAgICAgICAq
IFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tOgorICAgICAgICAoLVtXS1dlYlZpZXcg
X2luaXRpYWxpemVXaXRoQ29uZmlndXJhdGlvbjpdKTogRGVsZXRlZC4KKyAgICAgICAgKiBVSVBy
b2Nlc3MvQ29jb2EvV2ViUGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5Lmg6CisgICAgICAgICog
VUlQcm9jZXNzL0NvY29hL1dlYlBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eS5tbToKKyAgICAg
ICAgKFdlYktpdDo6V2ViUGxheWJhY2tTZXNzaW9uTW9kZWxDb250ZXh0OjphZGRDbGllbnQpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJQbGF5YmFja1Nlc3Npb25Nb2RlbENvbnRleHQ6OnJlbW92ZUNs
aWVudCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBsYXliYWNrU2Vzc2lvbk1vZGVsQ29udGV4dDo6
c2V0RHVyYXRpb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJQbGF5YmFja1Nlc3Npb25Nb2RlbENv
bnRleHQ6OnNldEN1cnJlbnRUaW1lKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGxheWJhY2tTZXNz
aW9uTW9kZWxDb250ZXh0OjpzZXRCdWZmZXJlZFRpbWUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQ
bGF5YmFja1Nlc3Npb25Nb2RlbENvbnRleHQ6OnNldFJhdGUpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJQbGF5YmFja1Nlc3Npb25Nb2RlbENvbnRleHQ6OnNldFNlZWthYmxlUmFuZ2VzKToKKyAgICAg
ICAgKFdlYktpdDo6V2ViUGxheWJhY2tTZXNzaW9uTW9kZWxDb250ZXh0OjpzZXRDYW5QbGF5RmFz
dFJldmVyc2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJQbGF5YmFja1Nlc3Npb25Nb2RlbENvbnRl
eHQ6OnNldEF1ZGlvTWVkaWFTZWxlY3Rpb25PcHRpb25zKToKKyAgICAgICAgKFdlYktpdDo6V2Vi
UGxheWJhY2tTZXNzaW9uTW9kZWxDb250ZXh0OjpzZXRMZWdpYmxlTWVkaWFTZWxlY3Rpb25PcHRp
b25zKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGxheWJhY2tTZXNzaW9uTW9kZWxDb250ZXh0Ojpz
ZXRFeHRlcm5hbFBsYXliYWNrKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGxheWJhY2tTZXNzaW9u
TW9kZWxDb250ZXh0OjpzZXRXaXJlbGVzc1ZpZGVvUGxheWJhY2tEaXNhYmxlZCk6CisgICAgICAg
IChXZWJLaXQ6OldlYlBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eTo6Y3JlYXRlTW9kZWxBbmRJ
bnRlcmZhY2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJv
eHk6OnJlbW92ZUNsaWVudEZvckNvbnRleHQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQbGF5YmFj
a1Nlc3Npb25NYW5hZ2VyUHJveHk6OnNldEN1cnJlbnRUaW1lKToKKyAgICAgICAgKFdlYktpdDo6
V2ViUGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5OjpzZXRCdWZmZXJlZFRpbWUpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHk6OnNldFNlZWthYmxlUmFu
Z2VzVmVjdG9yKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGxheWJhY2tTZXNzaW9uTWFuYWdlclBy
b3h5OjpzZXRDYW5QbGF5RmFzdFJldmVyc2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJQbGF5YmFj
a1Nlc3Npb25NYW5hZ2VyUHJveHk6OnNldEF1ZGlvTWVkaWFTZWxlY3Rpb25PcHRpb25zKToKKyAg
ICAgICAgKFdlYktpdDo6V2ViUGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5OjpzZXRMZWdpYmxl
TWVkaWFTZWxlY3Rpb25PcHRpb25zKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGxheWJhY2tTZXNz
aW9uTWFuYWdlclByb3h5OjpzZXRFeHRlcm5hbFBsYXliYWNrUHJvcGVydGllcyk6CisgICAgICAg
IChXZWJLaXQ6OldlYlBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eTo6c2V0V2lyZWxlc3NWaWRl
b1BsYXliYWNrRGlzYWJsZWQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQbGF5YmFja1Nlc3Npb25N
YW5hZ2VyUHJveHk6OnNldER1cmF0aW9uKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGxheWJhY2tT
ZXNzaW9uTWFuYWdlclByb3h5OjpzZXRSYXRlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2Ev
V2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5Lmg6CisgICAgICAgICogVUlQcm9jZXNzL0Nv
Y29hL1dlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eS5tZXNzYWdlcy5pbjoKKyAgICAgICAg
KiBVSVByb2Nlc3MvQ29jb2EvV2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5Lm1tOgorICAg
ICAgICAoV2ViS2l0OjpXZWJWaWRlb0Z1bGxzY3JlZW5Nb2RlbENvbnRleHQ6OmFkZENsaWVudCk6
CisgICAgICAgIChXZWJLaXQ6OldlYlZpZGVvRnVsbHNjcmVlbk1vZGVsQ29udGV4dDo6cmVtb3Zl
Q2xpZW50KToKKyAgICAgICAgKFdlYktpdDo6V2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5
OjpzZXRIYXNWaWRlbyk6CisgICAgICAgIChXZWJLaXQ6OldlYlZpZGVvRnVsbHNjcmVlbk1hbmFn
ZXJQcm94eTo6c2V0VmlkZW9EaW1lbnNpb25zKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL2NvY29h
L1dlYlBsYXliYWNrU2Vzc2lvbk1hbmFnZXIuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL2NvY29h
L1dlYlBsYXliYWNrU2Vzc2lvbk1hbmFnZXIubW06CisgICAgICAgIChXZWJLaXQ6OldlYlBsYXli
YWNrU2Vzc2lvbkludGVyZmFjZUNvbnRleHQ6OmR1cmF0aW9uQ2hhbmdlZCk6CisgICAgICAgIChX
ZWJLaXQ6OldlYlBsYXliYWNrU2Vzc2lvbkludGVyZmFjZUNvbnRleHQ6OmN1cnJlbnRUaW1lQ2hh
bmdlZCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBsYXliYWNrU2Vzc2lvbkludGVyZmFjZUNvbnRl
eHQ6OmJ1ZmZlcmVkVGltZUNoYW5nZWQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQbGF5YmFja1Nl
c3Npb25JbnRlcmZhY2VDb250ZXh0OjpyYXRlQ2hhbmdlZCk6CisgICAgICAgIChXZWJLaXQ6Oldl
YlBsYXliYWNrU2Vzc2lvbkludGVyZmFjZUNvbnRleHQ6OnNlZWthYmxlUmFuZ2VzQ2hhbmdlZCk6
CisgICAgICAgIChXZWJLaXQ6OldlYlBsYXliYWNrU2Vzc2lvbkludGVyZmFjZUNvbnRleHQ6OmNh
blBsYXlGYXN0UmV2ZXJzZUNoYW5nZWQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQbGF5YmFja1Nl
c3Npb25JbnRlcmZhY2VDb250ZXh0OjphdWRpb01lZGlhU2VsZWN0aW9uT3B0aW9uc0NoYW5nZWQp
OgorICAgICAgICAoV2ViS2l0OjpXZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2VDb250ZXh0Ojps
ZWdpYmxlTWVkaWFTZWxlY3Rpb25PcHRpb25zQ2hhbmdlZCk6CisgICAgICAgIChXZWJLaXQ6Oldl
YlBsYXliYWNrU2Vzc2lvbkludGVyZmFjZUNvbnRleHQ6OmV4dGVybmFsUGxheWJhY2tDaGFuZ2Vk
KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlQ29udGV4dDo6
d2lyZWxlc3NWaWRlb1BsYXliYWNrRGlzYWJsZWRDaGFuZ2VkKToKKyAgICAgICAgKFdlYktpdDo6
V2ViUGxheWJhY2tTZXNzaW9uTWFuYWdlcjo6fldlYlBsYXliYWNrU2Vzc2lvbk1hbmFnZXIpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJQbGF5YmFja1Nlc3Npb25NYW5hZ2VyOjpjcmVhdGVNb2RlbEFu
ZEludGVyZmFjZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBsYXliYWNrU2Vzc2lvbk1hbmFnZXI6
OnJlbW92ZUNvbnRleHQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQbGF5YmFja1Nlc3Npb25NYW5h
Z2VyOjpkdXJhdGlvbkNoYW5nZWQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQbGF5YmFja1Nlc3Np
b25NYW5hZ2VyOjpjdXJyZW50VGltZUNoYW5nZWQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQbGF5
YmFja1Nlc3Npb25NYW5hZ2VyOjpidWZmZXJlZFRpbWVDaGFuZ2VkKToKKyAgICAgICAgKFdlYktp
dDo6V2ViUGxheWJhY2tTZXNzaW9uTWFuYWdlcjo6cmF0ZUNoYW5nZWQpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJQbGF5YmFja1Nlc3Npb25NYW5hZ2VyOjpzZWVrYWJsZVJhbmdlc0NoYW5nZWQpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJQbGF5YmFja1Nlc3Npb25NYW5hZ2VyOjpjYW5QbGF5RmFzdFJl
dmVyc2VDaGFuZ2VkKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGxheWJhY2tTZXNzaW9uTWFuYWdl
cjo6YXVkaW9NZWRpYVNlbGVjdGlvbk9wdGlvbnNDaGFuZ2VkKToKKyAgICAgICAgKFdlYktpdDo6
V2ViUGxheWJhY2tTZXNzaW9uTWFuYWdlcjo6bGVnaWJsZU1lZGlhU2VsZWN0aW9uT3B0aW9uc0No
YW5nZWQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQbGF5YmFja1Nlc3Npb25NYW5hZ2VyOjpleHRl
cm5hbFBsYXliYWNrQ2hhbmdlZCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBsYXliYWNrU2Vzc2lv
bk1hbmFnZXI6OndpcmVsZXNzVmlkZW9QbGF5YmFja0Rpc2FibGVkQ2hhbmdlZCk6CisgICAgICAg
IChXZWJLaXQ6OldlYlBsYXliYWNrU2Vzc2lvbkludGVyZmFjZUNvbnRleHQ6OnNldER1cmF0aW9u
KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNl
Q29udGV4dDo6c2V0Q3VycmVudFRpbWUpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJQ
bGF5YmFja1Nlc3Npb25JbnRlcmZhY2VDb250ZXh0OjpzZXRCdWZmZXJlZFRpbWUpOiBEZWxldGVk
LgorICAgICAgICAoV2ViS2l0OjpXZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2VDb250ZXh0Ojpz
ZXRSYXRlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViUGxheWJhY2tTZXNzaW9uSW50
ZXJmYWNlQ29udGV4dDo6c2V0U2Vla2FibGVSYW5nZXMpOiBEZWxldGVkLgorICAgICAgICAoV2Vi
S2l0OjpXZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2VDb250ZXh0OjpzZXRDYW5QbGF5RmFzdFJl
dmVyc2UpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJQbGF5YmFja1Nlc3Npb25JbnRl
cmZhY2VDb250ZXh0OjpzZXRBdWRpb01lZGlhU2VsZWN0aW9uT3B0aW9ucyk6IERlbGV0ZWQuCisg
ICAgICAgIChXZWJLaXQ6OldlYlBsYXliYWNrU2Vzc2lvbkludGVyZmFjZUNvbnRleHQ6OnNldExl
Z2libGVNZWRpYVNlbGVjdGlvbk9wdGlvbnMpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpX
ZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2VDb250ZXh0OjpzZXRFeHRlcm5hbFBsYXliYWNrKTog
RGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlQ29u
dGV4dDo6c2V0V2lyZWxlc3NWaWRlb1BsYXliYWNrRGlzYWJsZWQpOiBEZWxldGVkLgorICAgICAg
ICAoV2ViS2l0OjpXZWJQbGF5YmFja1Nlc3Npb25NYW5hZ2VyOjpzZXREdXJhdGlvbik6IERlbGV0
ZWQuCisgICAgICAgIChXZWJLaXQ6OldlYlBsYXliYWNrU2Vzc2lvbk1hbmFnZXI6OnNldEN1cnJl
bnRUaW1lKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViUGxheWJhY2tTZXNzaW9uTWFu
YWdlcjo6c2V0QnVmZmVyZWRUaW1lKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViUGxh
eWJhY2tTZXNzaW9uTWFuYWdlcjo6c2V0UmF0ZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6
OldlYlBsYXliYWNrU2Vzc2lvbk1hbmFnZXI6OnNldFNlZWthYmxlUmFuZ2VzKTogRGVsZXRlZC4K
KyAgICAgICAgKFdlYktpdDo6V2ViUGxheWJhY2tTZXNzaW9uTWFuYWdlcjo6c2V0Q2FuUGxheUZh
c3RSZXZlcnNlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViUGxheWJhY2tTZXNzaW9u
TWFuYWdlcjo6c2V0QXVkaW9NZWRpYVNlbGVjdGlvbk9wdGlvbnMpOiBEZWxldGVkLgorICAgICAg
ICAoV2ViS2l0OjpXZWJQbGF5YmFja1Nlc3Npb25NYW5hZ2VyOjpzZXRMZWdpYmxlTWVkaWFTZWxl
Y3Rpb25PcHRpb25zKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViUGxheWJhY2tTZXNz
aW9uTWFuYWdlcjo6c2V0RXh0ZXJuYWxQbGF5YmFjayk6IERlbGV0ZWQuCisgICAgICAgIChXZWJL
aXQ6OldlYlBsYXliYWNrU2Vzc2lvbk1hbmFnZXI6OnNldFdpcmVsZXNzVmlkZW9QbGF5YmFja0Rp
c2FibGVkKTogRGVsZXRlZC4KKyAgICAgICAgKiBXZWJQcm9jZXNzL2NvY29hL1dlYlZpZGVvRnVs
bHNjcmVlbk1hbmFnZXIuaDoKKyAgICAgICAgKFdlYktpdDo6V2ViVmlkZW9GdWxsc2NyZWVuSW50
ZXJmYWNlQ29udGV4dDo6Y3JlYXRlKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL2NvY29hL1dlYlZp
ZGVvRnVsbHNjcmVlbk1hbmFnZXIubW06CisgICAgICAgIChXZWJLaXQ6OldlYlZpZGVvRnVsbHNj
cmVlbkludGVyZmFjZUNvbnRleHQ6OldlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUNvbnRleHQp
OgorICAgICAgICAoV2ViS2l0OjpXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VDb250ZXh0Ojpo
YXNWaWRlb0NoYW5nZWQpOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWRlb0Z1bGxzY3JlZW5JbnRl
cmZhY2VDb250ZXh0Ojp2aWRlb0RpbWVuc2lvbnNDaGFuZ2VkKToKKyAgICAgICAgKFdlYktpdDo6
V2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6fldlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXIpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjpjcmVhdGVNb2RlbEFu
ZEludGVyZmFjZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6
OnJlbW92ZUNvbnRleHQpOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWRlb0Z1bGxzY3JlZW5NYW5h
Z2VyOjpoYXNWaWRlb0NoYW5nZWQpOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWRlb0Z1bGxzY3Jl
ZW5NYW5hZ2VyOjp2aWRlb0RpbWVuc2lvbnNDaGFuZ2VkKToKKyAgICAgICAgKFdlYktpdDo6V2Vi
VmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQ29udGV4dDo6cmVzZXRNZWRpYVN0YXRlKTogRGVsZXRl
ZC4KKyAgICAgICAgKFdlYktpdDo6V2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQ29udGV4dDo6
c2V0RHVyYXRpb24pOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJWaWRlb0Z1bGxzY3Jl
ZW5JbnRlcmZhY2VDb250ZXh0OjpzZXRDdXJyZW50VGltZSk6IERlbGV0ZWQuCisgICAgICAgIChX
ZWJLaXQ6OldlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUNvbnRleHQ6OnNldEJ1ZmZlcmVkVGlt
ZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OldlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFj
ZUNvbnRleHQ6OnNldFJhdGUpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJWaWRlb0Z1
bGxzY3JlZW5JbnRlcmZhY2VDb250ZXh0OjpzZXRWaWRlb0RpbWVuc2lvbnMpOiBEZWxldGVkLgor
ICAgICAgICAoV2ViS2l0OjpXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VDb250ZXh0OjpzZXRT
ZWVrYWJsZVJhbmdlcyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OldlYlZpZGVvRnVsbHNj
cmVlbkludGVyZmFjZUNvbnRleHQ6OnNldENhblBsYXlGYXN0UmV2ZXJzZSk6IERlbGV0ZWQuCisg
ICAgICAgIChXZWJLaXQ6OldlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUNvbnRleHQ6OnNldEF1
ZGlvTWVkaWFTZWxlY3Rpb25PcHRpb25zKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6V2Vi
VmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQ29udGV4dDo6c2V0TGVnaWJsZU1lZGlhU2VsZWN0aW9u
T3B0aW9ucyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OldlYlZpZGVvRnVsbHNjcmVlbklu
dGVyZmFjZUNvbnRleHQ6OnNldEV4dGVybmFsUGxheWJhY2spOiBEZWxldGVkLgorICAgICAgICAo
V2ViS2l0OjpXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VDb250ZXh0OjpzZXRXaXJlbGVzc1Zp
ZGVvUGxheWJhY2tEaXNhYmxlZCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OldlYlZpZGVv
RnVsbHNjcmVlbk1hbmFnZXI6OnNldFZpZGVvRGltZW5zaW9ucyk6IERlbGV0ZWQuCisKIDIwMTYt
MDctMDggIEFuZHkgRXN0ZXMgIDxhZXN0ZXNAYXBwbGUuY29tPgogCiAgICAgICAgIFtDb250ZW50
IEZpbHRlcmluZ10gTG9hZCBibG9ja2VkIHBhZ2VzIG1vcmUgbGlrZSBvdGhlciBlcnJvciBwYWdl
cyBhcmUgbG9hZGVkCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9X
ZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nv
Y29hL1dlYlBsYXliYWNrU2Vzc2lvbkludGVyZmFjZS5oCmluZGV4IDhmZmEwY2FkZDA4NjljZjE0
ZWM0MDIyYjViMDJjYTBkYmRmOGY4OWEuLmM1OWI4Yzg2NDZiYjhlZDQxZWU3MjAzNzczY2RkOTkw
OGNhZmY5ZTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1dlYlBs
YXliYWNrU2Vzc2lvbkludGVyZmFjZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nv
Y29hL1dlYlBsYXliYWNrU2Vzc2lvbkludGVyZmFjZS5oCkBAIC00MCwyMCArNDAsOCBAQCBjbGFz
cyBUaW1lUmFuZ2VzOwogCiBjbGFzcyBXZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2UgewogcHVi
bGljOgotICAgIGVudW0gRXh0ZXJuYWxQbGF5YmFja1RhcmdldFR5cGUgeyBUYXJnZXRUeXBlTm9u
ZSwgVGFyZ2V0VHlwZUFpclBsYXksIFRhcmdldFR5cGVUVk91dCB9OwotCiAgICAgdmlydHVhbCB+
V2ViUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlKCkgeyB9OwogICAgIHZpcnR1YWwgdm9pZCByZXNl
dE1lZGlhU3RhdGUoKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIHNldER1cmF0aW9uKGRvdWJsZSkg
PSAwOwotICAgIHZpcnR1YWwgdm9pZCBzZXRDdXJyZW50VGltZShkb3VibGUgY3VycmVudFRpbWUs
IGRvdWJsZSBhbmNob3JUaW1lKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIHNldEJ1ZmZlcmVkVGlt
ZShkb3VibGUpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgc2V0UmF0ZShib29sIGlzUGxheWluZywg
ZmxvYXQgcGxheWJhY2tSYXRlKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIHNldFNlZWthYmxlUmFu
Z2VzKGNvbnN0IFRpbWVSYW5nZXMmKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIHNldENhblBsYXlG
YXN0UmV2ZXJzZShib29sKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIHNldEF1ZGlvTWVkaWFTZWxl
Y3Rpb25PcHRpb25zKGNvbnN0IFZlY3RvcjxXVEY6OlN0cmluZz4mIG9wdGlvbnMsIHVpbnQ2NF90
IHNlbGVjdGVkSW5kZXgpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgc2V0TGVnaWJsZU1lZGlhU2Vs
ZWN0aW9uT3B0aW9ucyhjb25zdCBWZWN0b3I8V1RGOjpTdHJpbmc+JiBvcHRpb25zLCB1aW50NjRf
dCBzZWxlY3RlZEluZGV4KSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIHNldEV4dGVybmFsUGxheWJh
Y2soYm9vbCBlbmFibGVkLCBFeHRlcm5hbFBsYXliYWNrVGFyZ2V0VHlwZSwgV1RGOjpTdHJpbmcg
bG9jYWxpemVkRGV2aWNlTmFtZSkgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBzZXRXaXJlbGVzc1Zp
ZGVvUGxheWJhY2tEaXNhYmxlZChib29sKSA9IDA7CiB9OwogCiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9XZWJQbGF5YmFja1Nlc3Npb25Nb2RlbC5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvV2ViUGxheWJhY2tTZXNzaW9uTW9kZWwuaAppbmRl
eCA0N2FhZGU3MDA0ODI4ZWNiZmFiYTI1ODY0OGQ3MGQ2MTNjMDMyYTI1Li5hMjUwZTNjNjU0MmNm
MzVmZWIwZDM4NzM5M2UwMjU4NTI1ODM4MmQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9jb2NvYS9XZWJQbGF5YmFja1Nlc3Npb25Nb2RlbC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2NvY29hL1dlYlBsYXliYWNrU2Vzc2lvbk1vZGVsLmgKQEAgLTM2LDkgKzM2
LDE0IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgVGltZVJhbmdlczsKIAorY2xhc3Mg
V2ViUGxheWJhY2tTZXNzaW9uTW9kZWxDbGllbnQ7CisKIGNsYXNzIFdlYlBsYXliYWNrU2Vzc2lv
bk1vZGVsIHsKIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5XZWJQbGF5YmFja1Nlc3Npb25Nb2RlbCgp
IHsgfTsKKyAgICB2aXJ0dWFsIHZvaWQgYWRkQ2xpZW50KFdlYlBsYXliYWNrU2Vzc2lvbk1vZGVs
Q2xpZW50JikgPSAwOworICAgIHZpcnR1YWwgdm9pZCByZW1vdmVDbGllbnQoV2ViUGxheWJhY2tT
ZXNzaW9uTW9kZWxDbGllbnQmKSA9IDA7CisKICAgICB2aXJ0dWFsIHZvaWQgcGxheSgpID0gMDsK
ICAgICB2aXJ0dWFsIHZvaWQgcGF1c2UoKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHRvZ2dsZVBs
YXlTdGF0ZSgpID0gMDsKQEAgLTUyLDYgKzU3LDggQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9p
ZCBzZWxlY3RBdWRpb01lZGlhT3B0aW9uKHVpbnQ2NF90IGluZGV4KSA9IDA7CiAgICAgdmlydHVh
bCB2b2lkIHNlbGVjdExlZ2libGVNZWRpYU9wdGlvbih1aW50NjRfdCBpbmRleCkgPSAwOwogCisg
ICAgZW51bSBFeHRlcm5hbFBsYXliYWNrVGFyZ2V0VHlwZSB7IFRhcmdldFR5cGVOb25lLCBUYXJn
ZXRUeXBlQWlyUGxheSwgVGFyZ2V0VHlwZVRWT3V0IH07CisKICAgICB2aXJ0dWFsIGRvdWJsZSBk
dXJhdGlvbigpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIGRvdWJsZSBjdXJyZW50VGltZSgpIGNv
bnN0ID0gMDsKICAgICB2aXJ0dWFsIGRvdWJsZSBidWZmZXJlZFRpbWUoKSBjb25zdCA9IDA7CkBA
IC01OSwxNCArNjYsMzEgQEAgcHVibGljOgogICAgIHZpcnR1YWwgZmxvYXQgcGxheWJhY2tSYXRl
KCkgY29uc3QgPSAwOwogICAgIHZpcnR1YWwgUmVmPFRpbWVSYW5nZXM+IHNlZWthYmxlUmFuZ2Vz
KCkgY29uc3QgPSAwOwogICAgIHZpcnR1YWwgYm9vbCBjYW5QbGF5RmFzdFJldmVyc2UoKSBjb25z
dCA9IDA7Ci0gICAgdmlydHVhbCBWZWN0b3I8V1RGOjpTdHJpbmc+IGF1ZGlvTWVkaWFTZWxlY3Rp
b25PcHRpb25zKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgVmVjdG9yPFN0cmluZz4gYXVkaW9N
ZWRpYVNlbGVjdGlvbk9wdGlvbnMoKSBjb25zdCA9IDA7CiAgICAgdmlydHVhbCB1aW50NjRfdCBh
dWRpb01lZGlhU2VsZWN0ZWRJbmRleCgpIGNvbnN0ID0gMDsKLSAgICB2aXJ0dWFsIFZlY3RvcjxX
VEY6OlN0cmluZz4gbGVnaWJsZU1lZGlhU2VsZWN0aW9uT3B0aW9ucygpIGNvbnN0ID0gMDsKKyAg
ICB2aXJ0dWFsIFZlY3RvcjxTdHJpbmc+IGxlZ2libGVNZWRpYVNlbGVjdGlvbk9wdGlvbnMoKSBj
b25zdCA9IDA7CiAgICAgdmlydHVhbCB1aW50NjRfdCBsZWdpYmxlTWVkaWFTZWxlY3RlZEluZGV4
KCkgY29uc3QgPSAwOwogICAgIHZpcnR1YWwgYm9vbCBleHRlcm5hbFBsYXliYWNrRW5hYmxlZCgp
IGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIEV4dGVybmFsUGxheWJhY2tUYXJnZXRUeXBlIGV4dGVy
bmFsUGxheWJhY2tUYXJnZXRUeXBlKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgU3RyaW5nIGV4
dGVybmFsUGxheWJhY2tMb2NhbGl6ZWREZXZpY2VOYW1lKCkgY29uc3QgPSAwOwogICAgIHZpcnR1
YWwgYm9vbCB3aXJlbGVzc1ZpZGVvUGxheWJhY2tEaXNhYmxlZCgpIGNvbnN0ID0gMDsKIH07CiAK
K2NsYXNzIFdlYlBsYXliYWNrU2Vzc2lvbk1vZGVsQ2xpZW50IHsKK3B1YmxpYzoKKyAgICB2aXJ0
dWFsIH5XZWJQbGF5YmFja1Nlc3Npb25Nb2RlbENsaWVudCgpIHsgfTsKKyAgICB2aXJ0dWFsIHZv
aWQgZHVyYXRpb25DaGFuZ2VkKGRvdWJsZSkgeyB9CisgICAgdmlydHVhbCB2b2lkIGN1cnJlbnRU
aW1lQ2hhbmdlZChkb3VibGUgLyogY3VycmVudFRpbWUgKi8sIGRvdWJsZSAvKiBhbmNob3JUaW1l
ICovKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgYnVmZmVyZWRUaW1lQ2hhbmdlZChkb3VibGUpIHsg
fQorICAgIHZpcnR1YWwgdm9pZCByYXRlQ2hhbmdlZChib29sIC8qIGlzUGxheWluZyAqLywgZmxv
YXQgLyogcGxheWJhY2tSYXRlICovKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgc2Vla2FibGVSYW5n
ZXNDaGFuZ2VkKGNvbnN0IFRpbWVSYW5nZXMmKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgY2FuUGxh
eUZhc3RSZXZlcnNlQ2hhbmdlZChib29sKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgYXVkaW9NZWRp
YVNlbGVjdGlvbk9wdGlvbnNDaGFuZ2VkKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiAvKiBvcHRpb25z
ICovLCB1aW50NjRfdCAvKiBzZWxlY3RlZEluZGV4ICovKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQg
bGVnaWJsZU1lZGlhU2VsZWN0aW9uT3B0aW9uc0NoYW5nZWQoY29uc3QgVmVjdG9yPFN0cmluZz4m
IC8qIG9wdGlvbnMgKi8sIHVpbnQ2NF90IC8qIHNlbGVjdGVkSW5kZXggKi8pIHsgfQorICAgIHZp
cnR1YWwgdm9pZCBleHRlcm5hbFBsYXliYWNrQ2hhbmdlZChib29sIC8qIGVuYWJsZWQgKi8sIFdl
YlBsYXliYWNrU2Vzc2lvbk1vZGVsOjpFeHRlcm5hbFBsYXliYWNrVGFyZ2V0VHlwZSwgY29uc3Qg
U3RyaW5nJiAvKiBsb2NhbGl6ZWREZXZpY2VOYW1lICovKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQg
d2lyZWxlc3NWaWRlb1BsYXliYWNrRGlzYWJsZWRDaGFuZ2VkKGJvb2wpIHsgfQorfTsKKwogfQog
CiAjZW5kaWYgLy8gUExBVEZPUk0oSU9TKSB8fCAoUExBVEZPUk0oTUFDKSAmJiBFTkFCTEUoVklE
RU9fUFJFU0VOVEFUSU9OX01PREUpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vY29jb2EvV2ViUGxheWJhY2tTZXNzaW9uTW9kZWxNZWRpYUVsZW1lbnQuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2NvY29hL1dlYlBsYXliYWNrU2Vzc2lvbk1vZGVsTWVkaWFFbGVtZW50
LmgKaW5kZXggMGJmNDE0NjQ4MTFhMDQ5YTU0ZWY5ZjI0NWVjYmNmYzMzMDRlNjBmZS4uNGI4ODkx
NWIzMzdlNjk2NzRmYjlmMjU3NWY5NDJiYTk4NjgxN2YxYSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vY29jb2EvV2ViUGxheWJhY2tTZXNzaW9uTW9kZWxNZWRpYUVsZW1lbnQu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9XZWJQbGF5YmFja1Nlc3Npb25N
b2RlbE1lZGlhRWxlbWVudC5oCkBAIC0zMCw2ICszMCw3IEBACiAjaW5jbHVkZSAiRXZlbnRMaXN0
ZW5lci5oIgogI2luY2x1ZGUgIkhUTUxNZWRpYUVsZW1lbnRFbnVtcy5oIgogI2luY2x1ZGUgIldl
YlBsYXliYWNrU2Vzc2lvbk1vZGVsLmgiCisjaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KICNpbmNs
dWRlIDx3dGYvUmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgogI2luY2x1ZGUg
PHd0Zi9WZWN0b3IuaD4KQEAgLTQ3LDcgKzQ4LDYgQEAgcHVibGljOgogICAgICAgICByZXR1cm4g
YWRvcHRSZWYoKm5ldyBXZWJQbGF5YmFja1Nlc3Npb25Nb2RlbE1lZGlhRWxlbWVudCgpKTsKICAg
ICB9CiAgICAgV0VCQ09SRV9FWFBPUlQgdmlydHVhbCB+V2ViUGxheWJhY2tTZXNzaW9uTW9kZWxN
ZWRpYUVsZW1lbnQoKTsKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldFdlYlBsYXliYWNrU2Vz
c2lvbkludGVyZmFjZShXZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2UqKTsKICAgICBXRUJDT1JF
X0VYUE9SVCB2b2lkIHNldE1lZGlhRWxlbWVudChIVE1MTWVkaWFFbGVtZW50Kik7CiAgICAgV0VC
Q09SRV9FWFBPUlQgSFRNTE1lZGlhRWxlbWVudCogbWVkaWFFbGVtZW50KCkgY29uc3QgeyByZXR1
cm4gbV9tZWRpYUVsZW1lbnQuZ2V0KCk7IH0KIApAQCAtNTUsNiArNTUsOCBAQCBwdWJsaWM6CiAg
ICAgdm9pZCB1cGRhdGVGb3JFdmVudE5hbWUoY29uc3QgV1RGOjpBdG9taWNTdHJpbmcmKTsKICAg
ICBib29sIG9wZXJhdG9yPT0oY29uc3QgRXZlbnRMaXN0ZW5lciYgcmhzKSBjb25zdCBmaW5hbCB7
IHJldHVybiBzdGF0aWNfY2FzdDxjb25zdCBXZWJDb3JlOjpFdmVudExpc3RlbmVyKj4odGhpcykg
PT0gJnJoczsgfQogCisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBhZGRDbGllbnQoV2ViUGxheWJh
Y2tTZXNzaW9uTW9kZWxDbGllbnQmKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHJlbW92ZUNs
aWVudChXZWJQbGF5YmFja1Nlc3Npb25Nb2RlbENsaWVudCYpOwogICAgIFdFQkNPUkVfRVhQT1JU
IHZvaWQgcGxheSgpIGZpbmFsOwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgcGF1c2UoKSBmaW5h
bDsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHRvZ2dsZVBsYXlTdGF0ZSgpIGZpbmFsOwpAQCAt
ODAsNiArODIsOCBAQCBwdWJsaWM6CiAgICAgVmVjdG9yPFdURjo6U3RyaW5nPiBsZWdpYmxlTWVk
aWFTZWxlY3Rpb25PcHRpb25zKCkgY29uc3QgZmluYWw7CiAgICAgdWludDY0X3QgbGVnaWJsZU1l
ZGlhU2VsZWN0ZWRJbmRleCgpIGNvbnN0IGZpbmFsOwogICAgIGJvb2wgZXh0ZXJuYWxQbGF5YmFj
a0VuYWJsZWQoKSBjb25zdCBmaW5hbDsKKyAgICBFeHRlcm5hbFBsYXliYWNrVGFyZ2V0VHlwZSBl
eHRlcm5hbFBsYXliYWNrVGFyZ2V0VHlwZSgpIGNvbnN0IGZpbmFsOworICAgIFN0cmluZyBleHRl
cm5hbFBsYXliYWNrTG9jYWxpemVkRGV2aWNlTmFtZSgpIGNvbnN0IGZpbmFsOwogICAgIGJvb2wg
d2lyZWxlc3NWaWRlb1BsYXliYWNrRGlzYWJsZWQoKSBjb25zdCBmaW5hbDsKIAogcHJvdGVjdGVk
OgpAQCAtOTEsNyArOTUsNyBAQCBwcml2YXRlOgogCiAgICAgUmVmUHRyPEhUTUxNZWRpYUVsZW1l
bnQ+IG1fbWVkaWFFbGVtZW50OwogICAgIGJvb2wgbV9pc0xpc3RlbmluZyB7IGZhbHNlIH07Ci0g
ICAgV2ViUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlKiBtX3BsYXliYWNrU2Vzc2lvbkludGVyZmFj
ZSB7IG51bGxwdHIgfTsKKyAgICBIYXNoU2V0PFdlYlBsYXliYWNrU2Vzc2lvbk1vZGVsQ2xpZW50
Kj4gbV9jbGllbnRzOwogICAgIFZlY3RvcjxSZWZQdHI8VGV4dFRyYWNrPj4gbV9sZWdpYmxlVHJh
Y2tzRm9yTWVudTsKICAgICBWZWN0b3I8UmVmUHRyPEF1ZGlvVHJhY2s+PiBtX2F1ZGlvVHJhY2tz
Rm9yTWVudTsKICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29h
L1dlYlBsYXliYWNrU2Vzc2lvbk1vZGVsTWVkaWFFbGVtZW50Lm1tIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vY29jb2EvV2ViUGxheWJhY2tTZXNzaW9uTW9kZWxNZWRpYUVsZW1lbnQubW0KaW5k
ZXggMjdlNzNjODBiMTYzYTYyYTA2MjYxZjY1MTZiNDdmM2ZjNDQzMTE4YS4uNDIwOTU2YTg1N2Qz
OWYyZGJmNTViOTVjM2M1ZTM5ZTZhMTIwZjRmZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vY29jb2EvV2ViUGxheWJhY2tTZXNzaW9uTW9kZWxNZWRpYUVsZW1lbnQubW0KKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvV2ViUGxheWJhY2tTZXNzaW9uTW9kZWxN
ZWRpYUVsZW1lbnQubW0KQEAgLTU5LDM1ICs1OSwxMSBAQCBXZWJQbGF5YmFja1Nlc3Npb25Nb2Rl
bE1lZGlhRWxlbWVudDo6fldlYlBsYXliYWNrU2Vzc2lvbk1vZGVsTWVkaWFFbGVtZW50KCkKIHsK
IH0KIAotdm9pZCBXZWJQbGF5YmFja1Nlc3Npb25Nb2RlbE1lZGlhRWxlbWVudDo6c2V0V2ViUGxh
eWJhY2tTZXNzaW9uSW50ZXJmYWNlKFdlYlBsYXliYWNrU2Vzc2lvbkludGVyZmFjZSogaW50ZXJm
YWNlKQotewotICAgIGlmIChpbnRlcmZhY2UgPT0gbV9wbGF5YmFja1Nlc3Npb25JbnRlcmZhY2Up
Ci0gICAgICAgIHJldHVybjsKLQotICAgIG1fcGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlID0gaW50
ZXJmYWNlOwotCi0gICAgaWYgKCFtX3BsYXliYWNrU2Vzc2lvbkludGVyZmFjZSkKLSAgICAgICAg
cmV0dXJuOwotCi0gICAgbV9wbGF5YmFja1Nlc3Npb25JbnRlcmZhY2UtPnJlc2V0TWVkaWFTdGF0
ZSgpOwotICAgIG1fcGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlLT5zZXREdXJhdGlvbihkdXJhdGlv
bigpKTsKLSAgICBtX3BsYXliYWNrU2Vzc2lvbkludGVyZmFjZS0+c2V0Q3VycmVudFRpbWUoY3Vy
cmVudFRpbWUoKSwgW1tOU1Byb2Nlc3NJbmZvIHByb2Nlc3NJbmZvXSBzeXN0ZW1VcHRpbWVdKTsK
LSAgICBtX3BsYXliYWNrU2Vzc2lvbkludGVyZmFjZS0+c2V0QnVmZmVyZWRUaW1lKGJ1ZmZlcmVk
VGltZSgpKTsKLSAgICBtX3BsYXliYWNrU2Vzc2lvbkludGVyZmFjZS0+c2V0UmF0ZShpc1BsYXlp
bmcoKSwgcGxheWJhY2tSYXRlKCkpOwotICAgIG1fcGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlLT5z
ZXRTZWVrYWJsZVJhbmdlcyhzZWVrYWJsZVJhbmdlcygpKTsKLSAgICBtX3BsYXliYWNrU2Vzc2lv
bkludGVyZmFjZS0+c2V0Q2FuUGxheUZhc3RSZXZlcnNlKGNhblBsYXlGYXN0UmV2ZXJzZSgpKTsK
LSAgICBtX3BsYXliYWNrU2Vzc2lvbkludGVyZmFjZS0+c2V0V2lyZWxlc3NWaWRlb1BsYXliYWNr
RGlzYWJsZWQod2lyZWxlc3NWaWRlb1BsYXliYWNrRGlzYWJsZWQoKSk7Ci0gICAgdXBkYXRlTGVn
aWJsZU9wdGlvbnMoKTsKLX0KLQogdm9pZCBXZWJQbGF5YmFja1Nlc3Npb25Nb2RlbE1lZGlhRWxl
bWVudDo6c2V0TWVkaWFFbGVtZW50KEhUTUxNZWRpYUVsZW1lbnQqIG1lZGlhRWxlbWVudCkKIHsK
ICAgICBpZiAobV9tZWRpYUVsZW1lbnQgPT0gbWVkaWFFbGVtZW50KQogICAgICAgICByZXR1cm47
CiAKLSAgICBpZiAobV9wbGF5YmFja1Nlc3Npb25JbnRlcmZhY2UpCi0gICAgICAgIG1fcGxheWJh
Y2tTZXNzaW9uSW50ZXJmYWNlLT5yZXNldE1lZGlhU3RhdGUoKTsKLQogICAgIGlmIChtX21lZGlh
RWxlbWVudCAmJiBtX2lzTGlzdGVuaW5nKSB7CiAgICAgICAgIGZvciAoYXV0byYgZXZlbnROYW1l
IDogb2JzZXJ2ZWRFdmVudE5hbWVzKCkpCiAgICAgICAgICAgICBtX21lZGlhRWxlbWVudC0+cmVt
b3ZlRXZlbnRMaXN0ZW5lcihldmVudE5hbWUsICp0aGlzLCBmYWxzZSk7CkBAIC05NiwxNyArNzIs
MTMgQEAgdm9pZCBXZWJQbGF5YmFja1Nlc3Npb25Nb2RlbE1lZGlhRWxlbWVudDo6c2V0TWVkaWFF
bGVtZW50KEhUTUxNZWRpYUVsZW1lbnQqIG1lZGkKIAogICAgIG1fbWVkaWFFbGVtZW50ID0gbWVk
aWFFbGVtZW50OwogCi0gICAgaWYgKCFtX21lZGlhRWxlbWVudCkKLSAgICAgICAgcmV0dXJuOwot
Ci0gICAgZm9yIChhdXRvJiBldmVudE5hbWUgOiBvYnNlcnZlZEV2ZW50TmFtZXMoKSkKLSAgICAg
ICAgbV9tZWRpYUVsZW1lbnQtPmFkZEV2ZW50TGlzdGVuZXIoZXZlbnROYW1lLCAqdGhpcywgZmFs
c2UpOwotICAgIG1faXNMaXN0ZW5pbmcgPSB0cnVlOworICAgIGlmIChtX21lZGlhRWxlbWVudCkg
eworICAgICAgICBmb3IgKGF1dG8mIGV2ZW50TmFtZSA6IG9ic2VydmVkRXZlbnROYW1lcygpKQor
ICAgICAgICAgICAgbV9tZWRpYUVsZW1lbnQtPmFkZEV2ZW50TGlzdGVuZXIoZXZlbnROYW1lLCAq
dGhpcywgZmFsc2UpOworICAgICAgICBtX2lzTGlzdGVuaW5nID0gdHJ1ZTsKKyAgICB9CiAKICAg
ICB1cGRhdGVGb3JFdmVudE5hbWUoZXZlbnROYW1lQWxsKCkpOwotCi0gICAgaWYgKG1fcGxheWJh
Y2tTZXNzaW9uSW50ZXJmYWNlKQotICAgICAgICBtX3BsYXliYWNrU2Vzc2lvbkludGVyZmFjZS0+
c2V0V2lyZWxlc3NWaWRlb1BsYXliYWNrRGlzYWJsZWQobV9tZWRpYUVsZW1lbnQtPm1lZGlhU2Vz
c2lvbigpLndpcmVsZXNzVmlkZW9QbGF5YmFja0Rpc2FibGVkKCptX21lZGlhRWxlbWVudCkpOwog
fQogCiB2b2lkIFdlYlBsYXliYWNrU2Vzc2lvbk1vZGVsTWVkaWFFbGVtZW50OjpoYW5kbGVFdmVu
dChXZWJDb3JlOjpTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgV2ViQ29yZTo6RXZlbnQqIGV2ZW50
KQpAQCAtMTE2LDMxICs4OCw0NiBAQCB2b2lkIFdlYlBsYXliYWNrU2Vzc2lvbk1vZGVsTWVkaWFF
bGVtZW50OjpoYW5kbGVFdmVudChXZWJDb3JlOjpTY3JpcHRFeGVjdXRpb25DbwogCiB2b2lkIFdl
YlBsYXliYWNrU2Vzc2lvbk1vZGVsTWVkaWFFbGVtZW50Ojp1cGRhdGVGb3JFdmVudE5hbWUoY29u
c3QgV1RGOjpBdG9taWNTdHJpbmcmIGV2ZW50TmFtZSkKIHsKLSAgICBpZiAoIW1fbWVkaWFFbGVt
ZW50IHx8ICFtX3BsYXliYWNrU2Vzc2lvbkludGVyZmFjZSkKKyAgICBpZiAobV9jbGllbnRzLmlz
RW1wdHkoKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgYm9vbCBhbGwgPSBldmVudE5hbWUgPT0g
ZXZlbnROYW1lQWxsKCk7CiAKICAgICBpZiAoYWxsCiAgICAgICAgIHx8IGV2ZW50TmFtZSA9PSBl
dmVudE5hbWVzKCkuZHVyYXRpb25jaGFuZ2VFdmVudCkgewotICAgICAgICBtX3BsYXliYWNrU2Vz
c2lvbkludGVyZmFjZS0+c2V0RHVyYXRpb24obV9tZWRpYUVsZW1lbnQtPmR1cmF0aW9uKCkpOwor
ICAgICAgICBkb3VibGUgZHVyYXRpb24gPSB0aGlzLT5kdXJhdGlvbigpOworICAgICAgICBmb3Ig
KGF1dG8qIGNsaWVudCA6IG1fY2xpZW50cykKKyAgICAgICAgICAgIGNsaWVudC0+ZHVyYXRpb25D
aGFuZ2VkKGR1cmF0aW9uKTsKICAgICAgICAgLy8gVGhlc2UgaXMgbm8gc3RhbmRhcmQgZXZlbnQg
Zm9yIG1pbkZhc3RSZXZlcnNlUmF0ZUNoYW5nZTsgZHVyYXRpb24gY2hhbmdlIGlzIGEgcmVhc29u
YWJsZSBwcm94eSBmb3IgaXQuCiAgICAgICAgIC8vIEl0IGhhcHBlbnMgZXZlcnkgdGltZSBhIG5l
dyBpdGVtIGJlY29tZXMgcmVhZHkgdG8gcGxheS4KLSAgICAgICAgbV9wbGF5YmFja1Nlc3Npb25J
bnRlcmZhY2UtPnNldENhblBsYXlGYXN0UmV2ZXJzZShtX21lZGlhRWxlbWVudC0+bWluRmFzdFJl
dmVyc2VSYXRlKCkgPCAwLjApOworICAgICAgICBib29sIGNhblBsYXlGYXN0UmV2ZXJzZSA9IHRo
aXMtPmNhblBsYXlGYXN0UmV2ZXJzZSgpOworICAgICAgICBmb3IgKGF1dG8qIGNsaWVudCA6IG1f
Y2xpZW50cykKKyAgICAgICAgICAgIGNsaWVudC0+Y2FuUGxheUZhc3RSZXZlcnNlQ2hhbmdlZChj
YW5QbGF5RmFzdFJldmVyc2UpOwogICAgIH0KIAogICAgIGlmIChhbGwKICAgICAgICAgfHwgZXZl
bnROYW1lID09IGV2ZW50TmFtZXMoKS5wYXVzZUV2ZW50CiAgICAgICAgIHx8IGV2ZW50TmFtZSA9
PSBldmVudE5hbWVzKCkucGxheUV2ZW50Ci0gICAgICAgIHx8IGV2ZW50TmFtZSA9PSBldmVudE5h
bWVzKCkucmF0ZWNoYW5nZUV2ZW50KQotICAgICAgICBtX3BsYXliYWNrU2Vzc2lvbkludGVyZmFj
ZS0+c2V0UmF0ZSghbV9tZWRpYUVsZW1lbnQtPnBhdXNlZCgpLCBtX21lZGlhRWxlbWVudC0+cGxh
eWJhY2tSYXRlKCkpOworICAgICAgICB8fCBldmVudE5hbWUgPT0gZXZlbnROYW1lcygpLnJhdGVj
aGFuZ2VFdmVudCkgeworICAgICAgICBib29sIGlzUGxheWluZyA9IHRoaXMtPmlzUGxheWluZygp
OworICAgICAgICBmbG9hdCBwbGF5YmFja1JhdGUgPSB0aGlzLT5wbGF5YmFja1JhdGUoKTsKKyAg
ICAgICAgZm9yIChhdXRvKiBjbGllbnQgOiBtX2NsaWVudHMpCisgICAgICAgICAgICBjbGllbnQt
PnJhdGVDaGFuZ2VkKGlzUGxheWluZywgcGxheWJhY2tSYXRlKTsKKyAgICB9CiAKICAgICBpZiAo
YWxsCiAgICAgICAgIHx8IGV2ZW50TmFtZSA9PSBldmVudE5hbWVzKCkudGltZXVwZGF0ZUV2ZW50
KSB7Ci0gICAgICAgIG1fcGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlLT5zZXRDdXJyZW50VGltZSht
X21lZGlhRWxlbWVudC0+Y3VycmVudFRpbWUoKSwgW1tOU1Byb2Nlc3NJbmZvIHByb2Nlc3NJbmZv
XSBzeXN0ZW1VcHRpbWVdKTsKLSAgICAgICAgbV9wbGF5YmFja1Nlc3Npb25JbnRlcmZhY2UtPnNl
dEJ1ZmZlcmVkVGltZShtX21lZGlhRWxlbWVudC0+bWF4QnVmZmVyZWRUaW1lKCkpOwotICAgICAg
ICAvLyBGSVhNRTogMTMwNzg4IC0gZmluZCBhIGJldHRlciBldmVudCB0byB1cGRhdGUgc2Vla2Fi
bGUgcmFuZ2VzIGZyb20uCi0gICAgICAgIG1fcGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlLT5zZXRT
ZWVrYWJsZVJhbmdlcyhtX21lZGlhRWxlbWVudC0+c2Vla2FibGUoKSk7CisgICAgICAgIGF1dG8g
Y3VycmVudFRpbWUgPSB0aGlzLT5jdXJyZW50VGltZSgpOworICAgICAgICBhdXRvIGFuY2hvclRp
bWUgPSBbW05TUHJvY2Vzc0luZm8gcHJvY2Vzc0luZm9dIHN5c3RlbVVwdGltZV07CisgICAgICAg
IGF1dG8gYnVmZmVyZWRUaW1lID0gdGhpcy0+YnVmZmVyZWRUaW1lKCk7CisgICAgICAgIGF1dG8g
c2Vla2FibGVSYW5nZXMgPSB0aGlzLT5zZWVrYWJsZVJhbmdlcygpOworCisgICAgICAgIGZvciAo
YXV0byogY2xpZW50IDogbV9jbGllbnRzKSB7CisgICAgICAgICAgICBjbGllbnQtPmN1cnJlbnRU
aW1lQ2hhbmdlZChjdXJyZW50VGltZSwgYW5jaG9yVGltZSk7CisgICAgICAgICAgICBjbGllbnQt
PmJ1ZmZlcmVkVGltZUNoYW5nZWQoYnVmZmVyZWRUaW1lKTsKKyAgICAgICAgICAgIC8vIEZJWE1F
OiAxMzA3ODggLSBmaW5kIGEgYmV0dGVyIGV2ZW50IHRvIHVwZGF0ZSBzZWVrYWJsZSByYW5nZXMg
ZnJvbS4KKyAgICAgICAgICAgIGNsaWVudC0+c2Vla2FibGVSYW5nZXNDaGFuZ2VkKHNlZWthYmxl
UmFuZ2VzKTsKKyAgICAgICAgfQogICAgIH0KIAogICAgIGlmIChhbGwKQEAgLTE1MCwyMiArMTM3
LDI5IEBAIHZvaWQgV2ViUGxheWJhY2tTZXNzaW9uTW9kZWxNZWRpYUVsZW1lbnQ6OnVwZGF0ZUZv
ckV2ZW50TmFtZShjb25zdCBXVEY6OkF0b21pY1N0CiAKICAgICBpZiAoYWxsCiAgICAgICAgIHx8
IGV2ZW50TmFtZSA9PSBldmVudE5hbWVzKCkud2Via2l0Y3VycmVudHBsYXliYWNrdGFyZ2V0aXN3
aXJlbGVzc2NoYW5nZWRFdmVudCkgewotICAgICAgICBib29sIGVuYWJsZWQgPSBtX21lZGlhRWxl
bWVudC0+d2Via2l0Q3VycmVudFBsYXliYWNrVGFyZ2V0SXNXaXJlbGVzcygpOwotICAgICAgICBX
ZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2U6OkV4dGVybmFsUGxheWJhY2tUYXJnZXRUeXBlIHRh
cmdldFR5cGUgPSBXZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2U6OlRhcmdldFR5cGVOb25lOwot
ICAgICAgICBTdHJpbmcgbG9jYWxpemVkRGV2aWNlTmFtZTsKLQotICAgICAgICBpZiAobV9tZWRp
YUVsZW1lbnQtPm1lZGlhQ29udHJvbHNIb3N0KCkpIHsKLSAgICAgICAgICAgIGF1dG8gdHlwZSA9
IG1fbWVkaWFFbGVtZW50LT5tZWRpYUNvbnRyb2xzSG9zdCgpLT5leHRlcm5hbERldmljZVR5cGUo
KTsKLSAgICAgICAgICAgIGlmICh0eXBlID09IE1lZGlhQ29udHJvbHNIb3N0OjpEZXZpY2VUeXBl
OjpBaXJwbGF5KQotICAgICAgICAgICAgICAgIHRhcmdldFR5cGUgPSBXZWJQbGF5YmFja1Nlc3Np
b25JbnRlcmZhY2U6OlRhcmdldFR5cGVBaXJQbGF5OwotICAgICAgICAgICAgZWxzZSBpZiAodHlw
ZSA9PSBNZWRpYUNvbnRyb2xzSG9zdDo6RGV2aWNlVHlwZTo6VHZvdXQpCi0gICAgICAgICAgICAg
ICAgdGFyZ2V0VHlwZSA9IFdlYlBsYXliYWNrU2Vzc2lvbkludGVyZmFjZTo6VGFyZ2V0VHlwZVRW
T3V0OwotICAgICAgICAgICAgbG9jYWxpemVkRGV2aWNlTmFtZSA9IG1fbWVkaWFFbGVtZW50LT5t
ZWRpYUNvbnRyb2xzSG9zdCgpLT5leHRlcm5hbERldmljZURpc3BsYXlOYW1lKCk7CisgICAgICAg
IGJvb2wgZW5hYmxlZCA9IGV4dGVybmFsUGxheWJhY2tFbmFibGVkKCk7CisgICAgICAgIEV4dGVy
bmFsUGxheWJhY2tUYXJnZXRUeXBlIHRhcmdldFR5cGUgPSBleHRlcm5hbFBsYXliYWNrVGFyZ2V0
VHlwZSgpOworICAgICAgICBTdHJpbmcgbG9jYWxpemVkRGV2aWNlTmFtZSA9IGV4dGVybmFsUGxh
eWJhY2tMb2NhbGl6ZWREZXZpY2VOYW1lKCk7CisKKyAgICAgICAgYm9vbCB3aXJlbGVzc1ZpZGVv
UGxheWJhY2tEaXNhYmxlZCA9IHRoaXMtPndpcmVsZXNzVmlkZW9QbGF5YmFja0Rpc2FibGVkKCk7
CisKKyAgICAgICAgZm9yIChhdXRvKiBjbGllbnQgOiBtX2NsaWVudHMpIHsKKyAgICAgICAgICAg
IGNsaWVudC0+ZXh0ZXJuYWxQbGF5YmFja0NoYW5nZWQoZW5hYmxlZCwgdGFyZ2V0VHlwZSwgbG9j
YWxpemVkRGV2aWNlTmFtZSk7CisgICAgICAgICAgICBjbGllbnQtPndpcmVsZXNzVmlkZW9QbGF5
YmFja0Rpc2FibGVkQ2hhbmdlZCh3aXJlbGVzc1ZpZGVvUGxheWJhY2tEaXNhYmxlZCk7CiAgICAg
ICAgIH0KLSAgICAgICAgbV9wbGF5YmFja1Nlc3Npb25JbnRlcmZhY2UtPnNldEV4dGVybmFsUGxh
eWJhY2soZW5hYmxlZCwgdGFyZ2V0VHlwZSwgbG9jYWxpemVkRGV2aWNlTmFtZSk7Ci0gICAgICAg
IG1fcGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlLT5zZXRXaXJlbGVzc1ZpZGVvUGxheWJhY2tEaXNh
YmxlZChtX21lZGlhRWxlbWVudC0+bWVkaWFTZXNzaW9uKCkud2lyZWxlc3NWaWRlb1BsYXliYWNr
RGlzYWJsZWQoKm1fbWVkaWFFbGVtZW50KSk7CiAgICAgfQogfQordm9pZCBXZWJQbGF5YmFja1Nl
c3Npb25Nb2RlbE1lZGlhRWxlbWVudDo6YWRkQ2xpZW50KFdlYlBsYXliYWNrU2Vzc2lvbk1vZGVs
Q2xpZW50JiBjbGllbnQpCit7CisgICAgQVNTRVJUKCFtX2NsaWVudHMuY29udGFpbnMoJmNsaWVu
dCkpOworICAgIG1fY2xpZW50cy5hZGQoJmNsaWVudCk7Cit9CisKK3ZvaWQgV2ViUGxheWJhY2tT
ZXNzaW9uTW9kZWxNZWRpYUVsZW1lbnQ6OnJlbW92ZUNsaWVudChXZWJQbGF5YmFja1Nlc3Npb25N
b2RlbENsaWVudCYgY2xpZW50KQoreworICAgIEFTU0VSVChtX2NsaWVudHMuY29udGFpbnMoJmNs
aWVudCkpOworICAgIG1fY2xpZW50cy5yZW1vdmUoJmNsaWVudCk7Cit9CiAKIHZvaWQgV2ViUGxh
eWJhY2tTZXNzaW9uTW9kZWxNZWRpYUVsZW1lbnQ6OnBsYXkoKQogewpAQCAtMjgyLDMxICsyNzYs
MzcgQEAgdm9pZCBXZWJQbGF5YmFja1Nlc3Npb25Nb2RlbE1lZGlhRWxlbWVudDo6dXBkYXRlTGVn
aWJsZU9wdGlvbnMoKQogICAgIGVsc2UKICAgICAgICAgbV9hdWRpb1RyYWNrc0Zvck1lbnUuY2xl
YXIoKTsKIAotICAgIG1fcGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlLT5zZXRBdWRpb01lZGlhU2Vs
ZWN0aW9uT3B0aW9ucyhhdWRpb01lZGlhU2VsZWN0aW9uT3B0aW9ucygpLCBhdWRpb01lZGlhU2Vs
ZWN0ZWRJbmRleCgpKTsKLSAgICBtX3BsYXliYWNrU2Vzc2lvbkludGVyZmFjZS0+c2V0TGVnaWJs
ZU1lZGlhU2VsZWN0aW9uT3B0aW9ucyhsZWdpYmxlTWVkaWFTZWxlY3Rpb25PcHRpb25zKCksIGxl
Z2libGVNZWRpYVNlbGVjdGVkSW5kZXgoKSk7CisgICAgYXV0byBhdWRpb09wdGlvbnMgPSBhdWRp
b01lZGlhU2VsZWN0aW9uT3B0aW9ucygpOworICAgIGF1dG8gYXVkaW9JbmRleCA9IGF1ZGlvTWVk
aWFTZWxlY3RlZEluZGV4KCk7CisgICAgYXV0byBsZWdpYmxlT3B0aW9ucyA9IGxlZ2libGVNZWRp
YVNlbGVjdGlvbk9wdGlvbnMoKTsKKyAgICBhdXRvIGxlZ2libGVJbmRleCA9IGxlZ2libGVNZWRp
YVNlbGVjdGVkSW5kZXgoKTsKKworICAgIGZvciAoYXV0byYgY2xpZW50IDogbV9jbGllbnRzKSB7
CisgICAgICAgIGNsaWVudC0+YXVkaW9NZWRpYVNlbGVjdGlvbk9wdGlvbnNDaGFuZ2VkKGF1ZGlv
T3B0aW9ucywgYXVkaW9JbmRleCk7CisgICAgICAgIGNsaWVudC0+bGVnaWJsZU1lZGlhU2VsZWN0
aW9uT3B0aW9uc0NoYW5nZWQobGVnaWJsZU9wdGlvbnMsIGxlZ2libGVJbmRleCk7CisgICAgfQog
fQogCi1jb25zdCBWZWN0b3I8QXRvbWljU3RyaW5nPiYgIFdlYlBsYXliYWNrU2Vzc2lvbk1vZGVs
TWVkaWFFbGVtZW50OjpvYnNlcnZlZEV2ZW50TmFtZXMoKQorY29uc3QgVmVjdG9yPEF0b21pY1N0
cmluZz4mIFdlYlBsYXliYWNrU2Vzc2lvbk1vZGVsTWVkaWFFbGVtZW50OjpvYnNlcnZlZEV2ZW50
TmFtZXMoKQogewotICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxWZWN0b3I8QXRvbWljU3RyaW5n
Pj4gc0V2ZW50TmFtZXM7Ci0KLSAgICBpZiAoIXNFdmVudE5hbWVzLmdldCgpLnNpemUoKSkgewot
ICAgICAgICBzRXZlbnROYW1lcy5nZXQoKS5hcHBlbmQoZXZlbnROYW1lcygpLmR1cmF0aW9uY2hh
bmdlRXZlbnQpOwotICAgICAgICBzRXZlbnROYW1lcy5nZXQoKS5hcHBlbmQoZXZlbnROYW1lcygp
LnBhdXNlRXZlbnQpOwotICAgICAgICBzRXZlbnROYW1lcy5nZXQoKS5hcHBlbmQoZXZlbnROYW1l
cygpLnBsYXlFdmVudCk7Ci0gICAgICAgIHNFdmVudE5hbWVzLmdldCgpLmFwcGVuZChldmVudE5h
bWVzKCkucmF0ZWNoYW5nZUV2ZW50KTsKLSAgICAgICAgc0V2ZW50TmFtZXMuZ2V0KCkuYXBwZW5k
KGV2ZW50TmFtZXMoKS50aW1ldXBkYXRlRXZlbnQpOwotICAgICAgICBzRXZlbnROYW1lcy5nZXQo
KS5hcHBlbmQoZXZlbnROYW1lcygpLmFkZHRyYWNrRXZlbnQpOwotICAgICAgICBzRXZlbnROYW1l
cy5nZXQoKS5hcHBlbmQoZXZlbnROYW1lcygpLnJlbW92ZXRyYWNrRXZlbnQpOwotICAgICAgICBz
RXZlbnROYW1lcy5nZXQoKS5hcHBlbmQoZXZlbnROYW1lcygpLndlYmtpdGN1cnJlbnRwbGF5YmFj
a3RhcmdldGlzd2lyZWxlc3NjaGFuZ2VkRXZlbnQpOwotICAgIH0KLSAgICByZXR1cm4gc0V2ZW50
TmFtZXMuZ2V0KCk7CisgICAgLy8gRklYTUUoMTU3NDUyKTogUmVtb3ZlIHRoZSByaWdodC1oYW5k
IGNvbnN0cnVjdG9yIG5vdGF0aW9uIG9uY2UgTmV2ZXJEZXN0cm95ZWQgc3VwcG9ydHMgaW5pdGlh
bGl6ZXJfbGlzdHMuCisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFZlY3RvcjxBdG9taWNTdHJp
bmc+PiBuYW1lcyA9IFZlY3RvcjxBdG9taWNTdHJpbmc+KHsKKyAgICAgICAgZXZlbnROYW1lcygp
LmR1cmF0aW9uY2hhbmdlRXZlbnQsCisgICAgICAgIGV2ZW50TmFtZXMoKS5wYXVzZUV2ZW50LAor
ICAgICAgICBldmVudE5hbWVzKCkucGxheUV2ZW50LAorICAgICAgICBldmVudE5hbWVzKCkucmF0
ZWNoYW5nZUV2ZW50LAorICAgICAgICBldmVudE5hbWVzKCkudGltZXVwZGF0ZUV2ZW50LAorICAg
ICAgICBldmVudE5hbWVzKCkuYWRkdHJhY2tFdmVudCwKKyAgICAgICAgZXZlbnROYW1lcygpLnJl
bW92ZXRyYWNrRXZlbnQsCisgICAgICAgIGV2ZW50TmFtZXMoKS53ZWJraXRjdXJyZW50cGxheWJh
Y2t0YXJnZXRpc3dpcmVsZXNzY2hhbmdlZEV2ZW50LAorICAgIH0pOworICAgIHJldHVybiBuYW1l
cy5nZXQoKTsKIH0KIAogY29uc3QgQXRvbWljU3RyaW5nJiAgV2ViUGxheWJhY2tTZXNzaW9uTW9k
ZWxNZWRpYUVsZW1lbnQ6OmV2ZW50TmFtZUFsbCgpCiB7Ci0gICAgc3RhdGljIE5ldmVyRGVzdHJv
eWVkPEF0b21pY1N0cmluZz4gc0V2ZW50TmFtZUFsbCA9ICJhbGxFdmVudHMiOwotICAgIHJldHVy
biBzRXZlbnROYW1lQWxsOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxBdG9taWNTdHJpbmc+
IGV2ZW50TmFtZUFsbCgiYWxsRXZlbnRzIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0
ZXJhbCk7CisgICAgcmV0dXJuIGV2ZW50TmFtZUFsbDsKIH0KIAogZG91YmxlIFdlYlBsYXliYWNr
U2Vzc2lvbk1vZGVsTWVkaWFFbGVtZW50OjpkdXJhdGlvbigpIGNvbnN0CkBAIC0zNDQsNyArMzQ0
LDcgQEAgYm9vbCBXZWJQbGF5YmFja1Nlc3Npb25Nb2RlbE1lZGlhRWxlbWVudDo6Y2FuUGxheUZh
c3RSZXZlcnNlKCkgY29uc3QKICAgICByZXR1cm4gbV9tZWRpYUVsZW1lbnQgPyBtX21lZGlhRWxl
bWVudC0+bWluRmFzdFJldmVyc2VSYXRlKCkgPCAwLjAgOiBmYWxzZTsKIH0KIAotVmVjdG9yPFdU
Rjo6U3RyaW5nPiBXZWJQbGF5YmFja1Nlc3Npb25Nb2RlbE1lZGlhRWxlbWVudDo6YXVkaW9NZWRp
YVNlbGVjdGlvbk9wdGlvbnMoKSBjb25zdAorVmVjdG9yPFN0cmluZz4gV2ViUGxheWJhY2tTZXNz
aW9uTW9kZWxNZWRpYUVsZW1lbnQ6OmF1ZGlvTWVkaWFTZWxlY3Rpb25PcHRpb25zKCkgY29uc3QK
IHsKICAgICBWZWN0b3I8U3RyaW5nPiBhdWRpb1RyYWNrRGlzcGxheU5hbWVzOwogCkBAIC0zNTMs
OCArMzUzLDkgQEAgVmVjdG9yPFdURjo6U3RyaW5nPiBXZWJQbGF5YmFja1Nlc3Npb25Nb2RlbE1l
ZGlhRWxlbWVudDo6YXVkaW9NZWRpYVNlbGVjdGlvbk9wdGkKIAogICAgIGF1dG8mIGNhcHRpb25Q
cmVmZXJlbmNlcyA9IG1fbWVkaWFFbGVtZW50LT5kb2N1bWVudCgpLnBhZ2UoKS0+Z3JvdXAoKS5j
YXB0aW9uUHJlZmVyZW5jZXMoKTsKIAorICAgIGF1ZGlvVHJhY2tEaXNwbGF5TmFtZXMucmVzZXJ2
ZUluaXRpYWxDYXBhY2l0eShtX2F1ZGlvVHJhY2tzRm9yTWVudS5zaXplKCkpOwogICAgIGZvciAo
YXV0byYgYXVkaW9UcmFjayA6IG1fYXVkaW9UcmFja3NGb3JNZW51KQotICAgICAgICBhdWRpb1Ry
YWNrRGlzcGxheU5hbWVzLmFwcGVuZChjYXB0aW9uUHJlZmVyZW5jZXMuZGlzcGxheU5hbWVGb3JU
cmFjayhhdWRpb1RyYWNrLmdldCgpKSk7CisgICAgICAgIGF1ZGlvVHJhY2tEaXNwbGF5TmFtZXMu
dW5jaGVja2VkQXBwZW5kKGNhcHRpb25QcmVmZXJlbmNlcy5kaXNwbGF5TmFtZUZvclRyYWNrKGF1
ZGlvVHJhY2suZ2V0KCkpKTsKIAogICAgIHJldHVybiBhdWRpb1RyYWNrRGlzcGxheU5hbWVzOwog
fQpAQCAtMzY1LDcgKzM2Niw3IEBAIHVpbnQ2NF90IFdlYlBsYXliYWNrU2Vzc2lvbk1vZGVsTWVk
aWFFbGVtZW50OjphdWRpb01lZGlhU2VsZWN0ZWRJbmRleCgpIGNvbnN0CiAgICAgICAgIGlmICht
X2F1ZGlvVHJhY2tzRm9yTWVudVtpbmRleF0tPmVuYWJsZWQoKSkKICAgICAgICAgICAgIHJldHVy
biBpbmRleDsKICAgICB9Ci0gICAgcmV0dXJuIDA7CisgICAgcmV0dXJuIHN0ZDo6bnVtZXJpY19s
aW1pdHM8dWludDY0X3Q+OjptYXgoKTsKIH0KIAogVmVjdG9yPFdURjo6U3RyaW5nPiBXZWJQbGF5
YmFja1Nlc3Npb25Nb2RlbE1lZGlhRWxlbWVudDo6bGVnaWJsZU1lZGlhU2VsZWN0aW9uT3B0aW9u
cygpIGNvbnN0CkBAIC0zODUsMTYgKzM4NiwxOCBAQCBWZWN0b3I8V1RGOjpTdHJpbmc+IFdlYlBs
YXliYWNrU2Vzc2lvbk1vZGVsTWVkaWFFbGVtZW50OjpsZWdpYmxlTWVkaWFTZWxlY3Rpb25PcAog
CiB1aW50NjRfdCBXZWJQbGF5YmFja1Nlc3Npb25Nb2RlbE1lZGlhRWxlbWVudDo6bGVnaWJsZU1l
ZGlhU2VsZWN0ZWRJbmRleCgpIGNvbnN0CiB7Ci0gICAgdWludDY0X3Qgc2VsZWN0ZWRJbmRleCA9
IDA7CisgICAgdWludDY0X3Qgc2VsZWN0ZWRJbmRleCA9IHN0ZDo6bnVtZXJpY19saW1pdHM8dWlu
dDY0X3Q+OjptYXgoKTsKICAgICB1aW50NjRfdCBvZmZJbmRleCA9IDA7CiAgICAgYm9vbCB0cmFj
a01lbnVJdGVtU2VsZWN0ZWQgPSBmYWxzZTsKIAogICAgIGlmICghbV9tZWRpYUVsZW1lbnQgfHwg
IW1fbWVkaWFFbGVtZW50LT5tZWRpYUNvbnRyb2xzSG9zdCgpKQogICAgICAgICByZXR1cm4gc2Vs
ZWN0ZWRJbmRleDsKIAotICAgIEF0b21pY1N0cmluZyBkaXNwbGF5TW9kZSA9IG1fbWVkaWFFbGVt
ZW50LT5tZWRpYUNvbnRyb2xzSG9zdCgpLT5jYXB0aW9uRGlzcGxheU1vZGUoKTsKLSAgICBUZXh0
VHJhY2sqIG9mZkl0ZW0gPSBtX21lZGlhRWxlbWVudC0+bWVkaWFDb250cm9sc0hvc3QoKS0+Y2Fw
dGlvbk1lbnVPZmZJdGVtKCk7Ci0gICAgVGV4dFRyYWNrKiBhdXRvbWF0aWNJdGVtID0gbV9tZWRp
YUVsZW1lbnQtPm1lZGlhQ29udHJvbHNIb3N0KCktPmNhcHRpb25NZW51QXV0b21hdGljSXRlbSgp
OworICAgIGF1dG8gaG9zdCA9IG1fbWVkaWFFbGVtZW50LT5tZWRpYUNvbnRyb2xzSG9zdCgpOwor
CisgICAgQXRvbWljU3RyaW5nIGRpc3BsYXlNb2RlID0gaG9zdC0+Y2FwdGlvbkRpc3BsYXlNb2Rl
KCk7CisgICAgVGV4dFRyYWNrKiBvZmZJdGVtID0gaG9zdC0+Y2FwdGlvbk1lbnVPZmZJdGVtKCk7
CisgICAgVGV4dFRyYWNrKiBhdXRvbWF0aWNJdGVtID0gaG9zdC0+Y2FwdGlvbk1lbnVBdXRvbWF0
aWNJdGVtKCk7CiAKICAgICBmb3IgKHNpemVfdCBpbmRleCA9IDA7IGluZGV4IDwgbV9sZWdpYmxl
VHJhY2tzRm9yTWVudS5zaXplKCk7IGluZGV4KyspIHsKICAgICAgICAgYXV0byYgdHJhY2sgPSBt
X2xlZ2libGVUcmFja3NGb3JNZW51W2luZGV4XTsKQEAgLTQyMCwxMiArNDIzLDM2IEBAIHVpbnQ2
NF90IFdlYlBsYXliYWNrU2Vzc2lvbk1vZGVsTWVkaWFFbGVtZW50OjpsZWdpYmxlTWVkaWFTZWxl
Y3RlZEluZGV4KCkgY29uc3QKIAogYm9vbCBXZWJQbGF5YmFja1Nlc3Npb25Nb2RlbE1lZGlhRWxl
bWVudDo6ZXh0ZXJuYWxQbGF5YmFja0VuYWJsZWQoKSBjb25zdAogewotICAgIHJldHVybiBtX21l
ZGlhRWxlbWVudCA/IG1fbWVkaWFFbGVtZW50LT53ZWJraXRDdXJyZW50UGxheWJhY2tUYXJnZXRJ
c1dpcmVsZXNzKCkgOiBmYWxzZTsKKyAgICByZXR1cm4gbV9tZWRpYUVsZW1lbnQgJiYgbV9tZWRp
YUVsZW1lbnQtPndlYmtpdEN1cnJlbnRQbGF5YmFja1RhcmdldElzV2lyZWxlc3MoKTsKK30KKwor
V2ViUGxheWJhY2tTZXNzaW9uTW9kZWw6OkV4dGVybmFsUGxheWJhY2tUYXJnZXRUeXBlIFdlYlBs
YXliYWNrU2Vzc2lvbk1vZGVsTWVkaWFFbGVtZW50OjpleHRlcm5hbFBsYXliYWNrVGFyZ2V0VHlw
ZSgpIGNvbnN0Cit7CisgICAgaWYgKCFtX21lZGlhRWxlbWVudCB8fCAhbV9tZWRpYUVsZW1lbnQt
Pm1lZGlhQ29udHJvbHNIb3N0KCkpCisgICAgICAgIHJldHVybiBUYXJnZXRUeXBlTm9uZTsKKwor
ICAgIHN3aXRjaCAobV9tZWRpYUVsZW1lbnQtPm1lZGlhQ29udHJvbHNIb3N0KCktPmV4dGVybmFs
RGV2aWNlVHlwZSgpKSB7CisgICAgZGVmYXVsdDoKKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVE
KCk7CisgICAgY2FzZSBNZWRpYUNvbnRyb2xzSG9zdDo6RGV2aWNlVHlwZTo6Tm9uZToKKyAgICAg
ICAgcmV0dXJuIFRhcmdldFR5cGVOb25lOworICAgIGNhc2UgTWVkaWFDb250cm9sc0hvc3Q6OkRl
dmljZVR5cGU6OkFpcnBsYXk6CisgICAgICAgIHJldHVybiBUYXJnZXRUeXBlQWlyUGxheTsKKyAg
ICBjYXNlIE1lZGlhQ29udHJvbHNIb3N0OjpEZXZpY2VUeXBlOjpUdm91dDoKKyAgICAgICAgcmV0
dXJuIFRhcmdldFR5cGVUVk91dDsKKyAgICB9Cit9CisKK1N0cmluZyBXZWJQbGF5YmFja1Nlc3Np
b25Nb2RlbE1lZGlhRWxlbWVudDo6ZXh0ZXJuYWxQbGF5YmFja0xvY2FsaXplZERldmljZU5hbWUo
KSBjb25zdAoreworICAgIGlmIChtX21lZGlhRWxlbWVudCAmJiBtX21lZGlhRWxlbWVudC0+bWVk
aWFDb250cm9sc0hvc3QoKSkKKyAgICAgICAgcmV0dXJuIG1fbWVkaWFFbGVtZW50LT5tZWRpYUNv
bnRyb2xzSG9zdCgpLT5leHRlcm5hbERldmljZURpc3BsYXlOYW1lKCk7CisgICAgcmV0dXJuIGVt
cHR5U3RyaW5nKCk7CiB9CiAKIGJvb2wgV2ViUGxheWJhY2tTZXNzaW9uTW9kZWxNZWRpYUVsZW1l
bnQ6OndpcmVsZXNzVmlkZW9QbGF5YmFja0Rpc2FibGVkKCkgY29uc3QKIHsKLSAgICByZXR1cm4g
bV9tZWRpYUVsZW1lbnQgPyBtX21lZGlhRWxlbWVudC0+bWVkaWFTZXNzaW9uKCkud2lyZWxlc3NW
aWRlb1BsYXliYWNrRGlzYWJsZWQoKm1fbWVkaWFFbGVtZW50KSA6IGZhbHNlOworICAgIHJldHVy
biBtX21lZGlhRWxlbWVudCAmJiBtX21lZGlhRWxlbWVudC0+bWVkaWFTZXNzaW9uKCkud2lyZWxl
c3NWaWRlb1BsYXliYWNrRGlzYWJsZWQoKm1fbWVkaWFFbGVtZW50KTsKIH0KIAogI2VuZGlmCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9XZWJWaWRlb0Z1bGxzY3Jl
ZW5JbnRlcmZhY2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1dlYlZpZGVvRnVs
bHNjcmVlbkludGVyZmFjZS5oCmluZGV4IGE4ZWYyOTUwYWI4ZTdhYWZlNDQwNDc0OGIxNjM3NWNj
Y2ZiZjNlMDUuLmRmN2ZlOTIxYjM2ZDMzNjM5MDYzNjMxODIzNGNhNDFlMzZmNDY0NWMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1dlYlZpZGVvRnVsbHNjcmVlbklu
dGVyZmFjZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1dlYlZpZGVvRnVs
bHNjcmVlbkludGVyZmFjZS5oCkBAIC0zNiwxMCArMzYsOSBAQCBXRUJDT1JFX0VYUE9SVCBib29s
IHN1cHBvcnRzUGljdHVyZUluUGljdHVyZSgpOwogCiBjbGFzcyBUaW1lUmFuZ2VzOwogCi1jbGFz
cyBXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2UgOiBwdWJsaWMgV2ViUGxheWJhY2tTZXNzaW9u
SW50ZXJmYWNlIHsKK2NsYXNzIFdlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZSB7CiBwdWJsaWM6
CiAgICAgdmlydHVhbCB+V2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlKCkgeyB9OwotICAgIHZp
cnR1YWwgdm9pZCBzZXRWaWRlb0RpbWVuc2lvbnMoYm9vbCBoYXNWaWRlbywgZmxvYXQgd2lkdGgs
IGZsb2F0IGhlaWdodCkgPSAwOwogfTsKIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vY29jb2EvV2ViVmlkZW9GdWxsc2NyZWVuTW9kZWwuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2NvY29hL1dlYlZpZGVvRnVsbHNjcmVlbk1vZGVsLmgKaW5kZXggMTcwMDI1MmUz
ODJhYTBlNGQ0Y2UzYTExNmMxYWIwZjJiMTc2ZTE5OS4uMWIyYzdhZjE1M2E1OTBkOGViNGM2NWMw
ZjFiODU1MmY0YTg0NWUxMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29j
b2EvV2ViVmlkZW9GdWxsc2NyZWVuTW9kZWwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9jb2NvYS9XZWJWaWRlb0Z1bGxzY3JlZW5Nb2RlbC5oCkBAIC0zNSwxNSArMzUsMzAgQEAKIAog
bmFtZXNwYWNlIFdlYkNvcmUgewogCitjbGFzcyBXZWJWaWRlb0Z1bGxzY3JlZW5Nb2RlbENsaWVu
dDsKKwogY2xhc3MgV2ViVmlkZW9GdWxsc2NyZWVuTW9kZWwgewogcHVibGljOgogICAgIHZpcnR1
YWwgfldlYlZpZGVvRnVsbHNjcmVlbk1vZGVsKCkgeyB9OworICAgIHZpcnR1YWwgdm9pZCBhZGRD
bGllbnQoV2ViVmlkZW9GdWxsc2NyZWVuTW9kZWxDbGllbnQmKSA9IDA7CisgICAgdmlydHVhbCB2
b2lkIHJlbW92ZUNsaWVudChXZWJWaWRlb0Z1bGxzY3JlZW5Nb2RlbENsaWVudCYpPSAwOworCiAg
ICAgdmlydHVhbCB2b2lkIHJlcXVlc3RGdWxsc2NyZWVuTW9kZShIVE1MTWVkaWFFbGVtZW50RW51
bXM6OlZpZGVvRnVsbHNjcmVlbk1vZGUpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgc2V0VmlkZW9M
YXllckZyYW1lKEZsb2F0UmVjdCkgPSAwOwogICAgIGVudW0gVmlkZW9HcmF2aXR5IHsgVmlkZW9H
cmF2aXR5UmVzaXplLCBWaWRlb0dyYXZpdHlSZXNpemVBc3BlY3QsIFZpZGVvR3Jhdml0eVJlc2l6
ZUFzcGVjdEZpbGwgfTsKICAgICB2aXJ0dWFsIHZvaWQgc2V0VmlkZW9MYXllckdyYXZpdHkoVmlk
ZW9HcmF2aXR5KSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGZ1bGxzY3JlZW5Nb2RlQ2hhbmdlZChI
VE1MTWVkaWFFbGVtZW50RW51bXM6OlZpZGVvRnVsbHNjcmVlbk1vZGUpID0gMDsKKwogICAgIHZp
cnR1YWwgYm9vbCBpc1Zpc2libGUoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBGbG9hdFNpemUg
dmlkZW9EaW1lbnNpb25zKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgYm9vbCBoYXNWaWRlbygp
IGNvbnN0ID0gMDsKK307CisKK2NsYXNzIFdlYlZpZGVvRnVsbHNjcmVlbk1vZGVsQ2xpZW50IHsK
K3B1YmxpYzoKKyAgICB2aXJ0dWFsIH5XZWJWaWRlb0Z1bGxzY3JlZW5Nb2RlbENsaWVudCgpIHsg
fQorICAgIHZpcnR1YWwgdm9pZCBoYXNWaWRlb0NoYW5nZWQoYm9vbCkgPSAwOworICAgIHZpcnR1
YWwgdm9pZCB2aWRlb0RpbWVuc2lvbnNDaGFuZ2VkKGNvbnN0IEZsb2F0U2l6ZSYpID0gMDsKIH07
CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1dlYlZpZGVv
RnVsbHNjcmVlbk1vZGVsVmlkZW9FbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9j
b2NvYS9XZWJWaWRlb0Z1bGxzY3JlZW5Nb2RlbFZpZGVvRWxlbWVudC5oCmluZGV4IGQ1ZDdkZjMw
YmU4ZmQxMmRlYjQ1OWNjMWU0NjVkN2M0NDM5ZTkwN2IuLmZmYzg3NDk4NmI0MTVjNmZkMDZkZDVk
NDI2NTM0NDA5NTY1ZTUwNWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nv
Y29hL1dlYlZpZGVvRnVsbHNjcmVlbk1vZGVsVmlkZW9FbGVtZW50LmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vY29jb2EvV2ViVmlkZW9GdWxsc2NyZWVuTW9kZWxWaWRlb0VsZW1lbnQu
aApAQCAtMzUsNiArMzUsNyBAQAogI2luY2x1ZGUgIlBsYXRmb3JtTGF5ZXIuaCIKICNpbmNsdWRl
ICJXZWJWaWRlb0Z1bGxzY3JlZW5Nb2RlbC5oIgogI2luY2x1ZGUgPGZ1bmN0aW9uYWw+CisjaW5j
bHVkZSA8d3RmL0hhc2hTZXQuaD4KICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CiAjaW5jbHVkZSA8
d3RmL1JldGFpblB0ci5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KQEAgLTQ0LDQ0ICs0NSw1
MCBAQCBjbGFzcyBBdWRpb1RyYWNrOwogY2xhc3MgSFRNTFZpZGVvRWxlbWVudDsKIGNsYXNzIFRl
eHRUcmFjazsKIGNsYXNzIFdlYlBsYXliYWNrU2Vzc2lvbk1vZGVsTWVkaWFFbGVtZW50OwotY2xh
c3MgV2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlOwogCiBjbGFzcyBXZWJWaWRlb0Z1bGxzY3Jl
ZW5Nb2RlbFZpZGVvRWxlbWVudCA6IHB1YmxpYyBXZWJWaWRlb0Z1bGxzY3JlZW5Nb2RlbCwgcHVi
bGljIEV2ZW50TGlzdGVuZXIgewogcHVibGljOgotICAgIHN0YXRpYyBSZWZQdHI8V2ViVmlkZW9G
dWxsc2NyZWVuTW9kZWxWaWRlb0VsZW1lbnQ+IGNyZWF0ZShXZWJQbGF5YmFja1Nlc3Npb25Nb2Rl
bE1lZGlhRWxlbWVudCYgcGxheWJhY2tTZXNzaW9uTW9kZWwpCisgICAgc3RhdGljIFJlZlB0cjxX
ZWJWaWRlb0Z1bGxzY3JlZW5Nb2RlbFZpZGVvRWxlbWVudD4gY3JlYXRlKCkKICAgICB7Ci0gICAg
ICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFdlYlZpZGVvRnVsbHNjcmVlbk1vZGVsVmlkZW9FbGVt
ZW50KHBsYXliYWNrU2Vzc2lvbk1vZGVsKSk7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3
IFdlYlZpZGVvRnVsbHNjcmVlbk1vZGVsVmlkZW9FbGVtZW50KCkpOwogICAgIH0KICAgICBXRUJD
T1JFX0VYUE9SVCB2aXJ0dWFsIH5XZWJWaWRlb0Z1bGxzY3JlZW5Nb2RlbFZpZGVvRWxlbWVudCgp
OwotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0V2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNl
KFdlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZSopOwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQg
c2V0VmlkZW9FbGVtZW50KEhUTUxWaWRlb0VsZW1lbnQqKTsKICAgICBXRUJDT1JFX0VYUE9SVCBI
VE1MVmlkZW9FbGVtZW50KiB2aWRlb0VsZW1lbnQoKSBjb25zdCB7IHJldHVybiBtX3ZpZGVvRWxl
bWVudC5nZXQoKTsgfQogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0VmlkZW9GdWxsc2NyZWVu
TGF5ZXIoUGxhdGZvcm1MYXllciosIHN0ZDo6ZnVuY3Rpb248dm9pZCgpPiBjb21wbGV0aW9uSGFu
ZGxlciA9IFtdIHsgfSk7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCB3YWl0Rm9yUHJlcGFyZWRG
b3JJbmxpbmVUaGVuKHN0ZDo6ZnVuY3Rpb248dm9pZCgpPiBjb21wbGV0aW9uSGFuZGxlciA9IFtd
IHsgfSk7Ci0gICAgV2ViUGxheWJhY2tTZXNzaW9uTW9kZWxNZWRpYUVsZW1lbnQmIHBsYXliYWNr
U2Vzc2lvbk1vZGVsKCkgeyByZXR1cm4gbV9wbGF5YmFja1Nlc3Npb25Nb2RlbDsgfQogICAgIAog
ICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgaGFuZGxlRXZlbnQoV2ViQ29yZTo6U2NyaXB0RXhlY3V0
aW9uQ29udGV4dCosIFdlYkNvcmU6OkV2ZW50Kikgb3ZlcnJpZGU7CiAgICAgdm9pZCB1cGRhdGVG
b3JFdmVudE5hbWUoY29uc3QgV1RGOjpBdG9taWNTdHJpbmcmKTsKICAgICBib29sIG9wZXJhdG9y
PT0oY29uc3QgRXZlbnRMaXN0ZW5lciYgcmhzKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBzdGF0
aWNfY2FzdDxjb25zdCBXZWJDb3JlOjpFdmVudExpc3RlbmVyKj4odGhpcykgPT0gJnJoczsgfQog
CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBhZGRDbGllbnQoV2ViVmlkZW9GdWxsc2NyZWVuTW9k
ZWxDbGllbnQmKSBvdmVycmlkZTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHJlbW92ZUNsaWVu
dChXZWJWaWRlb0Z1bGxzY3JlZW5Nb2RlbENsaWVudCYpIG92ZXJyaWRlOwogICAgIFdFQkNPUkVf
RVhQT1JUIHZvaWQgcmVxdWVzdEZ1bGxzY3JlZW5Nb2RlKEhUTUxNZWRpYUVsZW1lbnRFbnVtczo6
VmlkZW9GdWxsc2NyZWVuTW9kZSkgb3ZlcnJpZGU7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBz
ZXRWaWRlb0xheWVyRnJhbWUoRmxvYXRSZWN0KSBvdmVycmlkZTsKICAgICBXRUJDT1JFX0VYUE9S
VCB2b2lkIHNldFZpZGVvTGF5ZXJHcmF2aXR5KFZpZGVvR3Jhdml0eSkgb3ZlcnJpZGU7CiAgICAg
V0VCQ09SRV9FWFBPUlQgdm9pZCBmdWxsc2NyZWVuTW9kZUNoYW5nZWQoSFRNTE1lZGlhRWxlbWVu
dEVudW1zOjpWaWRlb0Z1bGxzY3JlZW5Nb2RlKSBvdmVycmlkZTsKICAgICBXRUJDT1JFX0VYUE9S
VCBib29sIGlzVmlzaWJsZSgpIGNvbnN0IG92ZXJyaWRlOworICAgIFdFQkNPUkVfRVhQT1JUIEZs
b2F0U2l6ZSB2aWRlb0RpbWVuc2lvbnMoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX3ZpZGVv
RGltZW5zaW9uczsgfQorICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgaGFzVmlkZW8oKSBjb25zdCBv
dmVycmlkZSB7IHJldHVybiBtX2hhc1ZpZGVvOyB9CisKIAogcHJvdGVjdGVkOgotICAgIFdFQkNP
UkVfRVhQT1JUIFdlYlZpZGVvRnVsbHNjcmVlbk1vZGVsVmlkZW9FbGVtZW50KFdlYlBsYXliYWNr
U2Vzc2lvbk1vZGVsTWVkaWFFbGVtZW50Jik7CisgICAgV0VCQ09SRV9FWFBPUlQgV2ViVmlkZW9G
dWxsc2NyZWVuTW9kZWxWaWRlb0VsZW1lbnQoKTsKIAogcHJpdmF0ZToKKyAgICB2b2lkIHNldEhh
c1ZpZGVvKGJvb2wpOworICAgIHZvaWQgc2V0VmlkZW9EaW1lbnNpb25zKGNvbnN0IEZsb2F0U2l6
ZSYpOworCiAgICAgc3RhdGljIGNvbnN0IFZlY3RvcjxXVEY6OkF0b21pY1N0cmluZz4mIG9ic2Vy
dmVkRXZlbnROYW1lcygpOwogICAgIGNvbnN0IFdURjo6QXRvbWljU3RyaW5nJiBldmVudE5hbWVB
bGwoKTsKIAotICAgIFJlZjxXZWJQbGF5YmFja1Nlc3Npb25Nb2RlbE1lZGlhRWxlbWVudD4gbV9w
bGF5YmFja1Nlc3Npb25Nb2RlbDsKICAgICBSZWZQdHI8SFRNTFZpZGVvRWxlbWVudD4gbV92aWRl
b0VsZW1lbnQ7CiAgICAgUmV0YWluUHRyPFBsYXRmb3JtTGF5ZXI+IG1fdmlkZW9GdWxsc2NyZWVu
TGF5ZXI7CiAgICAgYm9vbCBtX2lzTGlzdGVuaW5nIHsgZmFsc2UgfTsKLSAgICBXZWJWaWRlb0Z1
bGxzY3JlZW5JbnRlcmZhY2UqIG1fdmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlIHsgbnVsbHB0ciB9
OworICAgIEhhc2hTZXQ8V2ViVmlkZW9GdWxsc2NyZWVuTW9kZWxDbGllbnQqPiBtX2NsaWVudHM7
CisgICAgYm9vbCBtX2hhc1ZpZGVvIHsgZmFsc2UgfTsKKyAgICBGbG9hdFNpemUgbV92aWRlb0Rp
bWVuc2lvbnM7CiAgICAgRmxvYXRSZWN0IG1fdmlkZW9GcmFtZTsKICAgICBWZWN0b3I8UmVmUHRy
PFRleHRUcmFjaz4+IG1fbGVnaWJsZVRyYWNrc0Zvck1lbnU7CiAgICAgVmVjdG9yPFJlZlB0cjxB
dWRpb1RyYWNrPj4gbV9hdWRpb1RyYWNrc0Zvck1lbnU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9jb2NvYS9XZWJWaWRlb0Z1bGxzY3JlZW5Nb2RlbFZpZGVvRWxlbWVudC5t
bSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1dlYlZpZGVvRnVsbHNjcmVlbk1vZGVs
VmlkZW9FbGVtZW50Lm1tCmluZGV4IGMwYmFmYjhmY2RlNDg4MmU5ZTE2OTU2MTJiMTBlMzljMGJm
MDBmNjguLmRiNjc3YjgwNTI3YWNkMmE3YjMyNmVjNGY3ZjczMjk1ZjU1MWExOGIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1dlYlZpZGVvRnVsbHNjcmVlbk1vZGVs
VmlkZW9FbGVtZW50Lm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1dlYlZp
ZGVvRnVsbHNjcmVlbk1vZGVsVmlkZW9FbGVtZW50Lm1tCkBAIC01MSw5ICs1MSw4IEBACiAKIHVz
aW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCi1XZWJWaWRlb0Z1bGxzY3JlZW5Nb2RlbFZpZGVvRWxl
bWVudDo6V2ViVmlkZW9GdWxsc2NyZWVuTW9kZWxWaWRlb0VsZW1lbnQoV2ViUGxheWJhY2tTZXNz
aW9uTW9kZWxNZWRpYUVsZW1lbnQmIHBsYXliYWNrU2Vzc2lvbk1vZGVsKQorV2ViVmlkZW9GdWxs
c2NyZWVuTW9kZWxWaWRlb0VsZW1lbnQ6OldlYlZpZGVvRnVsbHNjcmVlbk1vZGVsVmlkZW9FbGVt
ZW50KCkKICAgICA6IEV2ZW50TGlzdGVuZXIoRXZlbnRMaXN0ZW5lcjo6Q1BQRXZlbnRMaXN0ZW5l
clR5cGUpCi0gICAgLCBtX3BsYXliYWNrU2Vzc2lvbk1vZGVsKHBsYXliYWNrU2Vzc2lvbk1vZGVs
KQogewogfQogCkBAIC02MSwxOCArNjAsNiBAQCBXZWJWaWRlb0Z1bGxzY3JlZW5Nb2RlbFZpZGVv
RWxlbWVudDo6fldlYlZpZGVvRnVsbHNjcmVlbk1vZGVsVmlkZW9FbGVtZW50KCkKIHsKIH0KIAot
dm9pZCBXZWJWaWRlb0Z1bGxzY3JlZW5Nb2RlbFZpZGVvRWxlbWVudDo6c2V0V2ViVmlkZW9GdWxs
c2NyZWVuSW50ZXJmYWNlKFdlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZSogaW50ZXJmYWNlKQot
ewotICAgIGlmIChpbnRlcmZhY2UgPT0gbV92aWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2UpCi0gICAg
ICAgIHJldHVybjsKLQotICAgIG1fdmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlID0gaW50ZXJmYWNl
OwotICAgIG1fcGxheWJhY2tTZXNzaW9uTW9kZWwtPnNldFdlYlBsYXliYWNrU2Vzc2lvbkludGVy
ZmFjZShpbnRlcmZhY2UpOwotCi0gICAgaWYgKG1fdmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlICYm
IG1fdmlkZW9FbGVtZW50KQotICAgICAgICBtX3ZpZGVvRnVsbHNjcmVlbkludGVyZmFjZS0+c2V0
VmlkZW9EaW1lbnNpb25zKHRydWUsIG1fdmlkZW9FbGVtZW50LT52aWRlb1dpZHRoKCksIG1fdmlk
ZW9FbGVtZW50LT52aWRlb0hlaWdodCgpKTsKLX0KLQogdm9pZCBXZWJWaWRlb0Z1bGxzY3JlZW5N
b2RlbFZpZGVvRWxlbWVudDo6c2V0VmlkZW9FbGVtZW50KEhUTUxWaWRlb0VsZW1lbnQqIHZpZGVv
RWxlbWVudCkKIHsKICAgICBpZiAobV92aWRlb0VsZW1lbnQgPT0gdmlkZW9FbGVtZW50KQpAQCAt
ODksMTcgKzc2LDEzIEBAIHZvaWQgV2ViVmlkZW9GdWxsc2NyZWVuTW9kZWxWaWRlb0VsZW1lbnQ6
OnNldFZpZGVvRWxlbWVudChIVE1MVmlkZW9FbGVtZW50KiB2aWRlCiAKICAgICBtX3ZpZGVvRWxl
bWVudCA9IHZpZGVvRWxlbWVudDsKIAotICAgIGlmICghbV92aWRlb0VsZW1lbnQpCi0gICAgICAg
IHJldHVybjsKLQotICAgIGZvciAoYXV0byYgZXZlbnROYW1lIDogb2JzZXJ2ZWRFdmVudE5hbWVz
KCkpCi0gICAgICAgIG1fdmlkZW9FbGVtZW50LT5hZGRFdmVudExpc3RlbmVyKGV2ZW50TmFtZSwg
KnRoaXMsIGZhbHNlKTsKLSAgICBtX2lzTGlzdGVuaW5nID0gdHJ1ZTsKKyAgICBpZiAobV92aWRl
b0VsZW1lbnQpIHsKKyAgICAgICAgZm9yIChhdXRvJiBldmVudE5hbWUgOiBvYnNlcnZlZEV2ZW50
TmFtZXMoKSkKKyAgICAgICAgICAgIG1fdmlkZW9FbGVtZW50LT5hZGRFdmVudExpc3RlbmVyKGV2
ZW50TmFtZSwgKnRoaXMsIGZhbHNlKTsKKyAgICAgICAgbV9pc0xpc3RlbmluZyA9IHRydWU7Cisg
ICAgfQogCiAgICAgdXBkYXRlRm9yRXZlbnROYW1lKGV2ZW50TmFtZUFsbCgpKTsKLQotICAgIGlm
IChtX3ZpZGVvRnVsbHNjcmVlbkludGVyZmFjZSkKLSAgICAgICAgbV92aWRlb0Z1bGxzY3JlZW5J
bnRlcmZhY2UtPnNldFZpZGVvRGltZW5zaW9ucyh0cnVlLCB2aWRlb0VsZW1lbnQtPnZpZGVvV2lk
dGgoKSwgdmlkZW9FbGVtZW50LT52aWRlb0hlaWdodCgpKTsKIH0KIAogdm9pZCBXZWJWaWRlb0Z1
bGxzY3JlZW5Nb2RlbFZpZGVvRWxlbWVudDo6aGFuZGxlRXZlbnQoV2ViQ29yZTo6U2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCosIFdlYkNvcmU6OkV2ZW50KiBldmVudCkKQEAgLTEwOSwxNCArOTIsMTYg
QEAgdm9pZCBXZWJWaWRlb0Z1bGxzY3JlZW5Nb2RlbFZpZGVvRWxlbWVudDo6aGFuZGxlRXZlbnQo
V2ViQ29yZTo6U2NyaXB0RXhlY3V0aW9uQ28KIAogdm9pZCBXZWJWaWRlb0Z1bGxzY3JlZW5Nb2Rl
bFZpZGVvRWxlbWVudDo6dXBkYXRlRm9yRXZlbnROYW1lKGNvbnN0IFdURjo6QXRvbWljU3RyaW5n
JiBldmVudE5hbWUpCiB7Ci0gICAgaWYgKCFtX3ZpZGVvRWxlbWVudCB8fCAhbV92aWRlb0Z1bGxz
Y3JlZW5JbnRlcmZhY2UpCisgICAgaWYgKG1fY2xpZW50cy5pc0VtcHR5KCkpCiAgICAgICAgIHJl
dHVybjsKICAgICAKICAgICBib29sIGFsbCA9IGV2ZW50TmFtZSA9PSBldmVudE5hbWVBbGwoKTsK
IAogICAgIGlmIChhbGwKLSAgICAgICAgfHwgZXZlbnROYW1lID09IGV2ZW50TmFtZXMoKS5yZXNp
emVFdmVudCkKLSAgICAgICAgbV92aWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2UtPnNldFZpZGVvRGlt
ZW5zaW9ucyh0cnVlLCBtX3ZpZGVvRWxlbWVudC0+dmlkZW9XaWR0aCgpLCBtX3ZpZGVvRWxlbWVu
dC0+dmlkZW9IZWlnaHQoKSk7CisgICAgICAgIHx8IGV2ZW50TmFtZSA9PSBldmVudE5hbWVzKCku
cmVzaXplRXZlbnQpIHsKKyAgICAgICAgc2V0SGFzVmlkZW8oISFtX3ZpZGVvRWxlbWVudCk7Cisg
ICAgICAgIHNldFZpZGVvRGltZW5zaW9ucyhtX3ZpZGVvRWxlbWVudCA/IEZsb2F0U2l6ZShtX3Zp
ZGVvRWxlbWVudC0+dmlkZW9XaWR0aCgpLCBtX3ZpZGVvRWxlbWVudC0+dmlkZW9IZWlnaHQoKSkg
OiBGbG9hdFNpemUoKSk7CisgICAgfQogfQogCiB2b2lkIFdlYlZpZGVvRnVsbHNjcmVlbk1vZGVs
VmlkZW9FbGVtZW50OjpzZXRWaWRlb0Z1bGxzY3JlZW5MYXllcihQbGF0Zm9ybUxheWVyKiB2aWRl
b0xheWVyLCBzdGQ6OmZ1bmN0aW9uPHZvaWQoKT4gY29tcGxldGlvbkhhbmRsZXIpCkBAIC0yMDIs
NiArMTg3LDE4IEBAIHZvaWQgV2ViVmlkZW9GdWxsc2NyZWVuTW9kZWxWaWRlb0VsZW1lbnQ6OmZ1
bGxzY3JlZW5Nb2RlQ2hhbmdlZChIVE1MTWVkaWFFbGVtZW50CiAgICAgICAgIG1fdmlkZW9FbGVt
ZW50LT5mdWxsc2NyZWVuTW9kZUNoYW5nZWQodmlkZW9GdWxsc2NyZWVuTW9kZSk7CiB9CiAKK3Zv
aWQgV2ViVmlkZW9GdWxsc2NyZWVuTW9kZWxWaWRlb0VsZW1lbnQ6OmFkZENsaWVudChXZWJWaWRl
b0Z1bGxzY3JlZW5Nb2RlbENsaWVudCYgY2xpZW50KQoreworICAgIEFTU0VSVCghbV9jbGllbnRz
LmNvbnRhaW5zKCZjbGllbnQpKTsKKyAgICBtX2NsaWVudHMuYWRkKCZjbGllbnQpOworfQorCit2
b2lkIFdlYlZpZGVvRnVsbHNjcmVlbk1vZGVsVmlkZW9FbGVtZW50OjpyZW1vdmVDbGllbnQoV2Vi
VmlkZW9GdWxsc2NyZWVuTW9kZWxDbGllbnQmIGNsaWVudCkKK3sKKyAgICBBU1NFUlQobV9jbGll
bnRzLmNvbnRhaW5zKCZjbGllbnQpKTsKKyAgICBtX2NsaWVudHMucmVtb3ZlKCZjbGllbnQpOwor
fQorCiBib29sIFdlYlZpZGVvRnVsbHNjcmVlbk1vZGVsVmlkZW9FbGVtZW50Ojppc1Zpc2libGUo
KSBjb25zdAogewogICAgIGlmICghbV92aWRlb0VsZW1lbnQpCkBAIC0yMTMsNCArMjEwLDI2IEBA
IGJvb2wgV2ViVmlkZW9GdWxsc2NyZWVuTW9kZWxWaWRlb0VsZW1lbnQ6OmlzVmlzaWJsZSgpIGNv
bnN0CiAgICAgcmV0dXJuIGZhbHNlOwogfQogCit2b2lkIFdlYlZpZGVvRnVsbHNjcmVlbk1vZGVs
VmlkZW9FbGVtZW50OjpzZXRIYXNWaWRlbyhib29sIGhhc1ZpZGVvKQoreworICAgIGlmIChoYXNW
aWRlbyA9PSBtX2hhc1ZpZGVvKQorICAgICAgICByZXR1cm47CisKKyAgICBtX2hhc1ZpZGVvID0g
aGFzVmlkZW87CisKKyAgICBmb3IgKGF1dG8mIGNsaWVudCA6IG1fY2xpZW50cykKKyAgICAgICAg
Y2xpZW50LT5oYXNWaWRlb0NoYW5nZWQobV9oYXNWaWRlbyk7Cit9CisKK3ZvaWQgV2ViVmlkZW9G
dWxsc2NyZWVuTW9kZWxWaWRlb0VsZW1lbnQ6OnNldFZpZGVvRGltZW5zaW9ucyhjb25zdCBGbG9h
dFNpemUmIHZpZGVvRGltZW5zaW9ucykKK3sKKyAgICBpZiAobV92aWRlb0RpbWVuc2lvbnMgPT0g
dmlkZW9EaW1lbnNpb25zKQorICAgICAgICByZXR1cm47CisKKyAgICBtX3ZpZGVvRGltZW5zaW9u
cyA9IHZpZGVvRGltZW5zaW9uczsKKworICAgIGZvciAoYXV0byYgY2xpZW50IDogbV9jbGllbnRz
KQorICAgICAgICBjbGllbnQtPnZpZGVvRGltZW5zaW9uc0NoYW5nZWQobV92aWRlb0RpbWVuc2lv
bnMpOworfQorCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lv
cy9XZWJBVlBsYXllckNvbnRyb2xsZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9X
ZWJBVlBsYXllckNvbnRyb2xsZXIuaAppbmRleCA4MjMxYThlNzMzMTk0ODRjMjM1YTM2ZGVmMWU1
MWIzZTJlOTc2YTQ0Li4zNjkxYjY1MjRkYjJiMWE2NmFmMTczZmRiZjMyMGRkOTA5OTE4NDM3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvV2ViQVZQbGF5ZXJDb250cm9s
bGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1dlYkFWUGxheWVyQ29udHJv
bGxlci5oCkBAIC00Miw4ICs0Miw2IEBAIGNsYXNzIFdlYlBsYXliYWNrU2Vzc2lvbkludGVyZmFj
ZUFWS2l0OwogICAgIEJPT0wgX3BpY3R1cmVJblBpY3R1cmVJbnRlcnJ1cHRlZDsKIH0KIAotLSAo
dm9pZClyZXNldFN0YXRlOwotCiBAcHJvcGVydHkgKHJldGFpbikgQVZQbGF5ZXJDb250cm9sbGVy
KiBwbGF5ZXJDb250cm9sbGVyUHJveHk7CiBAcHJvcGVydHkgKGFzc2lnbikgV2ViQ29yZTo6V2Vi
UGxheWJhY2tTZXNzaW9uTW9kZWwqIGRlbGVnYXRlOwogQHByb3BlcnR5IChhc3NpZ24pIFdlYkNv
cmU6OldlYlBsYXliYWNrU2Vzc2lvbkludGVyZmFjZUFWS2l0KiBwbGF5YmFja1Nlc3Npb25JbnRl
cmZhY2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvV2ViQVZQbGF5
ZXJDb250cm9sbGVyLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1dlYkFWUGxheWVy
Q29udHJvbGxlci5tbQppbmRleCA4NDYwNjk5OGUxNjgwNmU2MWZlNTBhMDNmMzc3NDM3ZGEyYTRk
ZjdiLi42ZGZiM2VhMDA3YjI2NzEwNDFlZGU2YmFjMzgyN2MzOGZiZDAwYjUwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvV2ViQVZQbGF5ZXJDb250cm9sbGVyLm1tCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9XZWJBVlBsYXllckNvbnRyb2xsZXIubW0K
QEAgLTc1LDM4ICs3NSw2IEBAIC0gKHZvaWQpZGVhbGxvYwogICAgIFtzdXBlciBkZWFsbG9jXTsK
IH0KIAotLSAodm9pZClyZXNldFN0YXRlCi17Ci0gICAgc2VsZi5jb250ZW50RHVyYXRpb24gPSAw
OwotICAgIHNlbGYubWF4VGltZSA9IDA7Ci0gICAgc2VsZi5jb250ZW50RHVyYXRpb25XaXRoaW5F
bmRUaW1lcyA9IDA7Ci0gICAgc2VsZi5sb2FkZWRUaW1lUmFuZ2VzID0gQFtdOwotCi0gICAgc2Vs
Zi5jYW5QbGF5ID0gTk87Ci0gICAgc2VsZi5jYW5QYXVzZSA9IE5POwotICAgIHNlbGYuY2FuVG9n
Z2xlUGxheWJhY2sgPSBOTzsKLSAgICBzZWxmLmhhc0VuYWJsZWRBdWRpbyA9IE5POwotICAgIHNl
bGYuY2FuU2VlayA9IE5POwotICAgIHNlbGYubWluVGltZSA9IDA7Ci0gICAgc2VsZi5zdGF0dXMg
PSBBVlBsYXllckNvbnRyb2xsZXJTdGF0dXNVbmtub3duOwotCi0gICAgc2VsZi50aW1pbmcgPSBu
aWw7Ci0gICAgc2VsZi5yYXRlID0gMDsKLQotICAgIHNlbGYuaGFzRW5hYmxlZFZpZGVvID0gTk87
Ci0gICAgc2VsZi5jb250ZW50RGltZW5zaW9ucyA9IENHU2l6ZU1ha2UoMCwgMCk7Ci0KLSAgICBz
ZWxmLnNlZWthYmxlVGltZVJhbmdlcyA9IFtOU011dGFibGVBcnJheSBhcnJheV07Ci0KLSAgICBz
ZWxmLmNhblNjYW5CYWNrd2FyZCA9IE5POwotCi0gICAgc2VsZi5hdWRpb01lZGlhU2VsZWN0aW9u
T3B0aW9ucyA9IG5pbDsKLSAgICBzZWxmLmN1cnJlbnRBdWRpb01lZGlhU2VsZWN0aW9uT3B0aW9u
ID0gbmlsOwotCi0gICAgc2VsZi5sZWdpYmxlTWVkaWFTZWxlY3Rpb25PcHRpb25zID0gbmlsOwot
ICAgIHNlbGYuY3VycmVudExlZ2libGVNZWRpYVNlbGVjdGlvbk9wdGlvbiA9IG5pbDsKLX0KLQog
LSAoQVZQbGF5ZXIgKilwbGF5ZXIKIHsKICAgICByZXR1cm4gbmlsOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1dlYlBsYXliYWNrU2Vzc2lvbkludGVyZmFjZUFWS2l0
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvV2ViUGxheWJhY2tTZXNzaW9uSW50ZXJm
YWNlQVZLaXQuaAppbmRleCA3MTQ3OTRmYjNjZTM1NGRlMTEwZGEwOGE0MTlhNzA1ZGZkOWFkMTcx
Li4yM2Q3NzJkZDExYjgxMmZmMDBkODkwNjBjMjg4OTQ0MDA1OTI3NTBhIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvV2ViUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlQVZL
aXQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvV2ViUGxheWJhY2tTZXNzaW9u
SW50ZXJmYWNlQVZLaXQuaApAQCAtMzMsNiArMzMsNyBAQAogI2luY2x1ZGUgIkhUTUxNZWRpYUVs
ZW1lbnRFbnVtcy5oIgogI2luY2x1ZGUgIlRpbWVyLmgiCiAjaW5jbHVkZSAiV2ViUGxheWJhY2tT
ZXNzaW9uSW50ZXJmYWNlLmgiCisjaW5jbHVkZSAiV2ViUGxheWJhY2tTZXNzaW9uTW9kZWwuaCIK
ICNpbmNsdWRlIDxmdW5jdGlvbmFsPgogI2luY2x1ZGUgPG9iamMvb2JqYy5oPgogI2luY2x1ZGUg
PHd0Zi9SZWZDb3VudGVkLmg+CkBAIC01NCw1MiArNTUsNDMgQEAgY2xhc3MgSW50UmVjdDsKIGNs
YXNzIFdlYlBsYXliYWNrU2Vzc2lvbk1vZGVsOwogY2xhc3MgV2ViUGxheWJhY2tTZXNzaW9uQ2hh
bmdlT2JzZXJ2ZXI7CiAKLWNsYXNzIFdlYlBsYXliYWNrU2Vzc2lvbkludGVyZmFjZUFWS2l0Q2xp
ZW50IHsKLXB1YmxpYzoKLSAgICB2aXJ0dWFsIH5XZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2VB
VktpdENsaWVudCgpIHsgfQotCi0gICAgdmlydHVhbCB2b2lkIGV4dGVybmFsUGxheWJhY2tFbmFi
bGVkQ2hhbmdlZChib29sKSA9IDA7Ci19OwotCiBjbGFzcyBXRUJDT1JFX0VYUE9SVCBXZWJQbGF5
YmFja1Nlc3Npb25JbnRlcmZhY2VBVktpdAogICAgIDogcHVibGljIFdlYlBsYXliYWNrU2Vzc2lv
bkludGVyZmFjZQorICAgICwgcHVibGljIFdlYlBsYXliYWNrU2Vzc2lvbk1vZGVsQ2xpZW50CiAg
ICAgLCBwdWJsaWMgUmVmQ291bnRlZDxXZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2VBVktpdD4g
ewogCiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxXZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2VB
VktpdD4gY3JlYXRlKCkKKyAgICBzdGF0aWMgUmVmPFdlYlBsYXliYWNrU2Vzc2lvbkludGVyZmFj
ZUFWS2l0PiBjcmVhdGUoV2ViUGxheWJhY2tTZXNzaW9uTW9kZWwmIG1vZGVsKQogICAgIHsKLSAg
ICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgV2ViUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlQVZL
aXQoKSk7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFdlYlBsYXliYWNrU2Vzc2lvbklu
dGVyZmFjZUFWS2l0KG1vZGVsKSk7CiAgICAgfQogICAgIHZpcnR1YWwgfldlYlBsYXliYWNrU2Vz
c2lvbkludGVyZmFjZUFWS2l0KCk7Ci0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRXZWJQbGF5
YmFja1Nlc3Npb25Nb2RlbChXZWJQbGF5YmFja1Nlc3Npb25Nb2RlbCopOwogICAgIFdlYlBsYXli
YWNrU2Vzc2lvbk1vZGVsKiB3ZWJQbGF5YmFja1Nlc3Npb25Nb2RlbCgpIGNvbnN0IHsgcmV0dXJu
IG1fcGxheWJhY2tTZXNzaW9uTW9kZWw7IH0KLSAgICB2b2lkIHNldENsaWVudChXZWJQbGF5YmFj
a1Nlc3Npb25JbnRlcmZhY2VBVktpdENsaWVudCogY2xpZW50KSB7IG1fY2xpZW50ID0gY2xpZW50
OyB9CiAKKyAgICAvLyBXZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2UKICAgICBXRUJDT1JFX0VY
UE9SVCB2b2lkIHJlc2V0TWVkaWFTdGF0ZSgpIG92ZXJyaWRlOwotICAgIFdFQkNPUkVfRVhQT1JU
IHZvaWQgc2V0RHVyYXRpb24oZG91YmxlKSBvdmVycmlkZTsKLSAgICBXRUJDT1JFX0VYUE9SVCB2
b2lkIHNldEN1cnJlbnRUaW1lKGRvdWJsZSBjdXJyZW50VGltZSwgZG91YmxlIGFuY2hvclRpbWUp
IG92ZXJyaWRlOwotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0QnVmZmVyZWRUaW1lKGRvdWJs
ZSkgb3ZlcnJpZGU7Ci0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRSYXRlKGJvb2wgaXNQbGF5
aW5nLCBmbG9hdCBwbGF5YmFja1JhdGUpIG92ZXJyaWRlOwotICAgIFdFQkNPUkVfRVhQT1JUIHZv
aWQgc2V0U2Vla2FibGVSYW5nZXMoY29uc3QgVGltZVJhbmdlcyYpIG92ZXJyaWRlOwotICAgIFdF
QkNPUkVfRVhQT1JUIHZvaWQgc2V0Q2FuUGxheUZhc3RSZXZlcnNlKGJvb2wpIG92ZXJyaWRlOwot
ICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0QXVkaW9NZWRpYVNlbGVjdGlvbk9wdGlvbnMoY29u
c3QgVmVjdG9yPFdURjo6U3RyaW5nPiYgb3B0aW9ucywgdWludDY0X3Qgc2VsZWN0ZWRJbmRleCkg
b3ZlcnJpZGU7Ci0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRMZWdpYmxlTWVkaWFTZWxlY3Rp
b25PcHRpb25zKGNvbnN0IFZlY3RvcjxXVEY6OlN0cmluZz4mIG9wdGlvbnMsIHVpbnQ2NF90IHNl
bGVjdGVkSW5kZXgpIG92ZXJyaWRlOwotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0RXh0ZXJu
YWxQbGF5YmFjayhib29sIGVuYWJsZWQsIEV4dGVybmFsUGxheWJhY2tUYXJnZXRUeXBlLCBXVEY6
OlN0cmluZyBsb2NhbGl6ZWREZXZpY2VOYW1lKSBvdmVycmlkZTsKLSAgICBXRUJDT1JFX0VYUE9S
VCB2b2lkIHNldFdpcmVsZXNzVmlkZW9QbGF5YmFja0Rpc2FibGVkKGJvb2wpIG92ZXJyaWRlOwot
ICAgIGJvb2wgd2lyZWxlc3NWaWRlb1BsYXliYWNrRGlzYWJsZWQoKSBjb25zdDsKKworICAgIC8v
IFdlYlBsYXliYWNrU2Vzc2lvbk1vZGVsQ2xpZW50CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBk
dXJhdGlvbkNoYW5nZWQoZG91YmxlKSBvdmVycmlkZTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lk
IGN1cnJlbnRUaW1lQ2hhbmdlZChkb3VibGUgY3VycmVudFRpbWUsIGRvdWJsZSBhbmNob3JUaW1l
KSBvdmVycmlkZTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGJ1ZmZlcmVkVGltZUNoYW5nZWQo
ZG91YmxlKSBvdmVycmlkZTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHJhdGVDaGFuZ2VkKGJv
b2wgaXNQbGF5aW5nLCBmbG9hdCBwbGF5YmFja1JhdGUpIG92ZXJyaWRlOworICAgIFdFQkNPUkVf
RVhQT1JUIHZvaWQgc2Vla2FibGVSYW5nZXNDaGFuZ2VkKGNvbnN0IFRpbWVSYW5nZXMmKSBvdmVy
cmlkZTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGNhblBsYXlGYXN0UmV2ZXJzZUNoYW5nZWQo
Ym9vbCkgb3ZlcnJpZGU7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBhdWRpb01lZGlhU2VsZWN0
aW9uT3B0aW9uc0NoYW5nZWQoY29uc3QgVmVjdG9yPFN0cmluZz4mIG9wdGlvbnMsIHVpbnQ2NF90
IHNlbGVjdGVkSW5kZXgpIG92ZXJyaWRlOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgbGVnaWJs
ZU1lZGlhU2VsZWN0aW9uT3B0aW9uc0NoYW5nZWQoY29uc3QgVmVjdG9yPFN0cmluZz4mIG9wdGlv
bnMsIHVpbnQ2NF90IHNlbGVjdGVkSW5kZXgpIG92ZXJyaWRlOworICAgIFdFQkNPUkVfRVhQT1JU
IHZvaWQgZXh0ZXJuYWxQbGF5YmFja0NoYW5nZWQoYm9vbCBlbmFibGVkLCBXZWJQbGF5YmFja1Nl
c3Npb25Nb2RlbDo6RXh0ZXJuYWxQbGF5YmFja1RhcmdldFR5cGUsIGNvbnN0IFN0cmluZyYgbG9j
YWxpemVkRGV2aWNlTmFtZSkgb3ZlcnJpZGU7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCB3aXJl
bGVzc1ZpZGVvUGxheWJhY2tEaXNhYmxlZENoYW5nZWQoYm9vbCkgb3ZlcnJpZGU7CiAKICAgICBX
RUJDT1JFX0VYUE9SVCB2aXJ0dWFsIHZvaWQgaW52YWxpZGF0ZSgpOwogCiAgICAgV2ViQVZQbGF5
ZXJDb250cm9sbGVyICpwbGF5ZXJDb250cm9sbGVyKCkgY29uc3QgeyByZXR1cm4gbV9wbGF5ZXJD
b250cm9sbGVyLmdldCgpOyB9CiAKIHByb3RlY3RlZDoKLSAgICBXRUJDT1JFX0VYUE9SVCBXZWJQ
bGF5YmFja1Nlc3Npb25JbnRlcmZhY2VBVktpdCgpOworICAgIFdFQkNPUkVfRVhQT1JUIFdlYlBs
YXliYWNrU2Vzc2lvbkludGVyZmFjZUFWS2l0KFdlYlBsYXliYWNrU2Vzc2lvbk1vZGVsJik7CiAK
ICAgICBSZXRhaW5QdHI8V2ViQVZQbGF5ZXJDb250cm9sbGVyPiBtX3BsYXllckNvbnRyb2xsZXI7
CiAgICAgV2ViUGxheWJhY2tTZXNzaW9uTW9kZWwqIG1fcGxheWJhY2tTZXNzaW9uTW9kZWwgeyBu
dWxscHRyIH07Ci0gICAgV2ViUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlQVZLaXRDbGllbnQqIG1f
Y2xpZW50IHsgbnVsbHB0cn07Ci0KLSAgICBib29sIG1fd2lyZWxlc3NWaWRlb1BsYXliYWNrRGlz
YWJsZWQgeyB0cnVlIH07CiB9OwogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9pb3MvV2ViUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlQVZLaXQubW0gYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9pb3MvV2ViUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlQVZLaXQubW0KaW5k
ZXggMzdmNzRmMTdkNzA0YzUyNGRiNGJiNzU4YjhiMTRhNzhhNDVhNmU1Yy4uM2M5NzgyZGQ0OTdm
NTNlNmFkM2I3ZmUxOTEwNTEzNjdkYzUyZTlmNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vaW9zL1dlYlBsYXliYWNrU2Vzc2lvbkludGVyZmFjZUFWS2l0Lm1tCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9XZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2VBVktp
dC5tbQpAQCAtNDcsMzEgKzQ3LDU1IEBAIFNPRlRfTElOS19DTEFTU19PUFRJT05BTChBVktpdCwg
QVZWYWx1ZVRpbWluZykKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1XZWJQbGF5YmFja1Nlc3Np
b25JbnRlcmZhY2VBVktpdDo6V2ViUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlQVZLaXQoKQorV2Vi
UGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlQVZLaXQ6OldlYlBsYXliYWNrU2Vzc2lvbkludGVyZmFj
ZUFWS2l0KFdlYlBsYXliYWNrU2Vzc2lvbk1vZGVsJiBtb2RlbCkKICAgICA6IG1fcGxheWVyQ29u
dHJvbGxlcihhZG9wdE5TKFtbV2ViQVZQbGF5ZXJDb250cm9sbGVyIGFsbG9jXSBpbml0XSkpCisg
ICAgLCBtX3BsYXliYWNrU2Vzc2lvbk1vZGVsKCZtb2RlbCkKIHsKKyAgICBtb2RlbC5hZGRDbGll
bnQoKnRoaXMpOwogICAgIFttX3BsYXllckNvbnRyb2xsZXIgc2V0UGxheWJhY2tTZXNzaW9uSW50
ZXJmYWNlOnRoaXNdOworICAgIFttX3BsYXllckNvbnRyb2xsZXIgc2V0RGVsZWdhdGU6Jm1vZGVs
XTsKIH0KIAogV2ViUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlQVZLaXQ6On5XZWJQbGF5YmFja1Nl
c3Npb25JbnRlcmZhY2VBVktpdCgpCiB7Ci0gICAgV2ViQVZQbGF5ZXJDb250cm9sbGVyKiBwbGF5
ZXJDb250cm9sbGVyID0gbV9wbGF5ZXJDb250cm9sbGVyLmdldCgpOwotICAgIGlmIChwbGF5ZXJD
b250cm9sbGVyICYmIHBsYXllckNvbnRyb2xsZXIuZXh0ZXJuYWxQbGF5YmFja0FjdGl2ZSkKLSAg
ICAgICAgc2V0RXh0ZXJuYWxQbGF5YmFjayhmYWxzZSwgVGFyZ2V0VHlwZU5vbmUsICIiKTsKKyAg
ICBbbV9wbGF5ZXJDb250cm9sbGVyIHNldFBsYXliYWNrU2Vzc2lvbkludGVyZmFjZTpudWxscHRy
XTsKKyAgICBbbV9wbGF5ZXJDb250cm9sbGVyIHNldEV4dGVybmFsUGxheWJhY2tBY3RpdmU6ZmFs
c2VdOworCisgICAgaW52YWxpZGF0ZSgpOwogfQogCiB2b2lkIFdlYlBsYXliYWNrU2Vzc2lvbklu
dGVyZmFjZUFWS2l0OjpyZXNldE1lZGlhU3RhdGUoKQogewotICAgIFttX3BsYXllckNvbnRyb2xs
ZXIgcmVzZXRTdGF0ZV07Ci19CisgICAgV2ViQVZQbGF5ZXJDb250cm9sbGVyKiBwbGF5ZXJDb250
cm9sbGVyID0gbV9wbGF5ZXJDb250cm9sbGVyLmdldCgpOwogCi12b2lkIFdlYlBsYXliYWNrU2Vz
c2lvbkludGVyZmFjZUFWS2l0OjpzZXRXZWJQbGF5YmFja1Nlc3Npb25Nb2RlbChXZWJQbGF5YmFj
a1Nlc3Npb25Nb2RlbCogbW9kZWwpCi17Ci0gICAgbV9wbGF5YmFja1Nlc3Npb25Nb2RlbCA9IG1v
ZGVsOwotICAgIFttX3BsYXllckNvbnRyb2xsZXIgc2V0RGVsZWdhdGU6bV9wbGF5YmFja1Nlc3Np
b25Nb2RlbF07CisgICAgcGxheWVyQ29udHJvbGxlci5jb250ZW50RHVyYXRpb24gPSAwOworICAg
IHBsYXllckNvbnRyb2xsZXIubWF4VGltZSA9IDA7CisgICAgcGxheWVyQ29udHJvbGxlci5jb250
ZW50RHVyYXRpb25XaXRoaW5FbmRUaW1lcyA9IDA7CisgICAgcGxheWVyQ29udHJvbGxlci5sb2Fk
ZWRUaW1lUmFuZ2VzID0gQFtdOworCisgICAgcGxheWVyQ29udHJvbGxlci5jYW5QbGF5ID0gTk87
CisgICAgcGxheWVyQ29udHJvbGxlci5jYW5QYXVzZSA9IE5POworICAgIHBsYXllckNvbnRyb2xs
ZXIuY2FuVG9nZ2xlUGxheWJhY2sgPSBOTzsKKyAgICBwbGF5ZXJDb250cm9sbGVyLmhhc0VuYWJs
ZWRBdWRpbyA9IE5POworICAgIHBsYXllckNvbnRyb2xsZXIuY2FuU2VlayA9IE5POworICAgIHBs
YXllckNvbnRyb2xsZXIubWluVGltZSA9IDA7CisgICAgcGxheWVyQ29udHJvbGxlci5zdGF0dXMg
PSBBVlBsYXllckNvbnRyb2xsZXJTdGF0dXNVbmtub3duOworCisgICAgcGxheWVyQ29udHJvbGxl
ci50aW1pbmcgPSBuaWw7CisgICAgcGxheWVyQ29udHJvbGxlci5yYXRlID0gMDsKKworICAgIHBs
YXllckNvbnRyb2xsZXIuc2Vla2FibGVUaW1lUmFuZ2VzID0gW05TTXV0YWJsZUFycmF5IGFycmF5
XTsKKworICAgIHBsYXllckNvbnRyb2xsZXIuY2FuU2NhbkJhY2t3YXJkID0gTk87CisKKyAgICBw
bGF5ZXJDb250cm9sbGVyLmF1ZGlvTWVkaWFTZWxlY3Rpb25PcHRpb25zID0gbmlsOworICAgIHBs
YXllckNvbnRyb2xsZXIuY3VycmVudEF1ZGlvTWVkaWFTZWxlY3Rpb25PcHRpb24gPSBuaWw7CisK
KyAgICBwbGF5ZXJDb250cm9sbGVyLmxlZ2libGVNZWRpYVNlbGVjdGlvbk9wdGlvbnMgPSBuaWw7
CisgICAgcGxheWVyQ29udHJvbGxlci5jdXJyZW50TGVnaWJsZU1lZGlhU2VsZWN0aW9uT3B0aW9u
ID0gbmlsOwogfQogCi12b2lkIFdlYlBsYXliYWNrU2Vzc2lvbkludGVyZmFjZUFWS2l0OjpzZXRE
dXJhdGlvbihkb3VibGUgZHVyYXRpb24pCit2b2lkIFdlYlBsYXliYWNrU2Vzc2lvbkludGVyZmFj
ZUFWS2l0OjpkdXJhdGlvbkNoYW5nZWQoZG91YmxlIGR1cmF0aW9uKQogewogICAgIFdlYkFWUGxh
eWVyQ29udHJvbGxlciogcGxheWVyQ29udHJvbGxlciA9IG1fcGxheWVyQ29udHJvbGxlci5nZXQo
KTsKIApAQCAtOTAsNyArMTE0LDcgQEAgdm9pZCBXZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2VB
VktpdDo6c2V0RHVyYXRpb24oZG91YmxlIGR1cmF0aW9uKQogICAgIHBsYXllckNvbnRyb2xsZXIu
c3RhdHVzID0gQVZQbGF5ZXJDb250cm9sbGVyU3RhdHVzUmVhZHlUb1BsYXk7CiB9CiAKLXZvaWQg
V2ViUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlQVZLaXQ6OnNldEN1cnJlbnRUaW1lKGRvdWJsZSBj
dXJyZW50VGltZSwgZG91YmxlIGFuY2hvclRpbWUpCit2b2lkIFdlYlBsYXliYWNrU2Vzc2lvbklu
dGVyZmFjZUFWS2l0OjpjdXJyZW50VGltZUNoYW5nZWQoZG91YmxlIGN1cnJlbnRUaW1lLCBkb3Vi
bGUgYW5jaG9yVGltZSkKIHsKICAgICBOU1RpbWVJbnRlcnZhbCBhbmNob3JUaW1lU3RhbXAgPSAh
W21fcGxheWVyQ29udHJvbGxlciByYXRlXSA/IE5BTiA6IGFuY2hvclRpbWU7CiAgICAgQVZWYWx1
ZVRpbWluZyAqdGltaW5nID0gW2dldEFWVmFsdWVUaW1pbmdDbGFzcygpIHZhbHVlVGltaW5nV2l0
aEFuY2hvclZhbHVlOmN1cnJlbnRUaW1lCkBAIC05OSw3ICsxMjMsNyBAQCB2b2lkIFdlYlBsYXli
YWNrU2Vzc2lvbkludGVyZmFjZUFWS2l0OjpzZXRDdXJyZW50VGltZShkb3VibGUgY3VycmVudFRp
bWUsIGRvdWJsZQogICAgIFttX3BsYXllckNvbnRyb2xsZXIgc2V0VGltaW5nOnRpbWluZ107CiB9
CiAKLXZvaWQgV2ViUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlQVZLaXQ6OnNldEJ1ZmZlcmVkVGlt
ZShkb3VibGUgYnVmZmVyZWRUaW1lKQordm9pZCBXZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2VB
VktpdDo6YnVmZmVyZWRUaW1lQ2hhbmdlZChkb3VibGUgYnVmZmVyZWRUaW1lKQogewogICAgIFdl
YkFWUGxheWVyQ29udHJvbGxlciogcGxheWVyQ29udHJvbGxlciA9IG1fcGxheWVyQ29udHJvbGxl
ci5nZXQoKTsKICAgICBkb3VibGUgZHVyYXRpb24gPSBwbGF5ZXJDb250cm9sbGVyLmNvbnRlbnRE
dXJhdGlvbjsKQEAgLTExMSwxMiArMTM1LDEyIEBAIHZvaWQgV2ViUGxheWJhY2tTZXNzaW9uSW50
ZXJmYWNlQVZLaXQ6OnNldEJ1ZmZlcmVkVGltZShkb3VibGUgYnVmZmVyZWRUaW1lKQogICAgIHBs
YXllckNvbnRyb2xsZXIubG9hZGVkVGltZVJhbmdlcyA9IEBbQDAsIEAobm9ybWFsaXplZEJ1ZmZl
cmVkVGltZSldOwogfQogCi12b2lkIFdlYlBsYXliYWNrU2Vzc2lvbkludGVyZmFjZUFWS2l0Ojpz
ZXRSYXRlKGJvb2wgaXNQbGF5aW5nLCBmbG9hdCBwbGF5YmFja1JhdGUpCit2b2lkIFdlYlBsYXli
YWNrU2Vzc2lvbkludGVyZmFjZUFWS2l0OjpyYXRlQ2hhbmdlZChib29sIGlzUGxheWluZywgZmxv
YXQgcGxheWJhY2tSYXRlKQogewogICAgIFttX3BsYXllckNvbnRyb2xsZXIgc2V0UmF0ZTppc1Bs
YXlpbmcgPyBwbGF5YmFja1JhdGUgOiAwLl07CiB9CiAKLXZvaWQgV2ViUGxheWJhY2tTZXNzaW9u
SW50ZXJmYWNlQVZLaXQ6OnNldFNlZWthYmxlUmFuZ2VzKGNvbnN0IFRpbWVSYW5nZXMmIHRpbWVS
YW5nZXMpCit2b2lkIFdlYlBsYXliYWNrU2Vzc2lvbkludGVyZmFjZUFWS2l0OjpzZWVrYWJsZVJh
bmdlc0NoYW5nZWQoY29uc3QgVGltZVJhbmdlcyYgdGltZVJhbmdlcykKIHsKICAgICBSZXRhaW5Q
dHI8TlNNdXRhYmxlQXJyYXk+IHNlZWthYmxlUmFuZ2VzID0gYWRvcHROUyhbW05TTXV0YWJsZUFy
cmF5IGFsbG9jXSBpbml0XSk7CiAgICAgRXhjZXB0aW9uQ29kZSBleGNlcHRpb25Db2RlOwpAQCAt
MTMyLDcgKzE1Niw3IEBAIHZvaWQgV2ViUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlQVZLaXQ6OnNl
dFNlZWthYmxlUmFuZ2VzKGNvbnN0IFRpbWVSYW5nZXMmIHRpbWVSCiAgICAgW21fcGxheWVyQ29u
dHJvbGxlciBzZXRTZWVrYWJsZVRpbWVSYW5nZXM6c2Vla2FibGVSYW5nZXMuZ2V0KCldOwogfQog
Ci12b2lkIFdlYlBsYXliYWNrU2Vzc2lvbkludGVyZmFjZUFWS2l0OjpzZXRDYW5QbGF5RmFzdFJl
dmVyc2UoYm9vbCBjYW5QbGF5RmFzdFJldmVyc2UpCit2b2lkIFdlYlBsYXliYWNrU2Vzc2lvbklu
dGVyZmFjZUFWS2l0OjpjYW5QbGF5RmFzdFJldmVyc2VDaGFuZ2VkKGJvb2wgY2FuUGxheUZhc3RS
ZXZlcnNlKQogewogICAgIFttX3BsYXllckNvbnRyb2xsZXIgc2V0Q2FuU2NhbkJhY2t3YXJkOmNh
blBsYXlGYXN0UmV2ZXJzZV07CiB9CkBAIC0xNDgsNyArMTcyLDcgQEAgc3RhdGljIFJldGFpblB0
cjxOU011dGFibGVBcnJheT4gbWVkaWFTZWxlY3Rpb25PcHRpb25zKGNvbnN0IFZlY3RvcjxTdHJp
bmc+JiBvcHQKICAgICByZXR1cm4gd2ViT3B0aW9uczsKIH0KIAotdm9pZCBXZWJQbGF5YmFja1Nl
c3Npb25JbnRlcmZhY2VBVktpdDo6c2V0QXVkaW9NZWRpYVNlbGVjdGlvbk9wdGlvbnMoY29uc3Qg
VmVjdG9yPFN0cmluZz4mIG9wdGlvbnMsIHVpbnQ2NF90IHNlbGVjdGVkSW5kZXgpCit2b2lkIFdl
YlBsYXliYWNrU2Vzc2lvbkludGVyZmFjZUFWS2l0OjphdWRpb01lZGlhU2VsZWN0aW9uT3B0aW9u
c0NoYW5nZWQoY29uc3QgVmVjdG9yPFN0cmluZz4mIG9wdGlvbnMsIHVpbnQ2NF90IHNlbGVjdGVk
SW5kZXgpCiB7CiAgICAgUmV0YWluUHRyPE5TTXV0YWJsZUFycmF5PiB3ZWJPcHRpb25zID0gbWVk
aWFTZWxlY3Rpb25PcHRpb25zKG9wdGlvbnMpOwogICAgIFttX3BsYXllckNvbnRyb2xsZXIgc2V0
QXVkaW9NZWRpYVNlbGVjdGlvbk9wdGlvbnM6d2ViT3B0aW9ucy5nZXQoKV07CkBAIC0xNTYsNyAr
MTgwLDcgQEAgdm9pZCBXZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2VBVktpdDo6c2V0QXVkaW9N
ZWRpYVNlbGVjdGlvbk9wdGlvbnMoY29uc3QgVmVjdG8KICAgICAgICAgW21fcGxheWVyQ29udHJv
bGxlciBzZXRDdXJyZW50QXVkaW9NZWRpYVNlbGVjdGlvbk9wdGlvbjpbd2ViT3B0aW9ucyBvYmpl
Y3RBdEluZGV4OnN0YXRpY19jYXN0PE5TVUludGVnZXI+KHNlbGVjdGVkSW5kZXgpXV07CiB9CiAK
LXZvaWQgV2ViUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlQVZLaXQ6OnNldExlZ2libGVNZWRpYVNl
bGVjdGlvbk9wdGlvbnMoY29uc3QgVmVjdG9yPFN0cmluZz4mIG9wdGlvbnMsIHVpbnQ2NF90IHNl
bGVjdGVkSW5kZXgpCit2b2lkIFdlYlBsYXliYWNrU2Vzc2lvbkludGVyZmFjZUFWS2l0OjpsZWdp
YmxlTWVkaWFTZWxlY3Rpb25PcHRpb25zQ2hhbmdlZChjb25zdCBWZWN0b3I8U3RyaW5nPiYgb3B0
aW9ucywgdWludDY0X3Qgc2VsZWN0ZWRJbmRleCkKIHsKICAgICBSZXRhaW5QdHI8TlNNdXRhYmxl
QXJyYXk+IHdlYk9wdGlvbnMgPSBtZWRpYVNlbGVjdGlvbk9wdGlvbnMob3B0aW9ucyk7CiAgICAg
W21fcGxheWVyQ29udHJvbGxlciBzZXRMZWdpYmxlTWVkaWFTZWxlY3Rpb25PcHRpb25zOndlYk9w
dGlvbnMuZ2V0KCldOwpAQCAtMTY0LDM2ICsxODgsMzMgQEAgdm9pZCBXZWJQbGF5YmFja1Nlc3Np
b25JbnRlcmZhY2VBVktpdDo6c2V0TGVnaWJsZU1lZGlhU2VsZWN0aW9uT3B0aW9ucyhjb25zdCBW
ZWMKICAgICAgICAgW21fcGxheWVyQ29udHJvbGxlciBzZXRDdXJyZW50TGVnaWJsZU1lZGlhU2Vs
ZWN0aW9uT3B0aW9uOlt3ZWJPcHRpb25zIG9iamVjdEF0SW5kZXg6c3RhdGljX2Nhc3Q8TlNVSW50
ZWdlcj4oc2VsZWN0ZWRJbmRleCldXTsKIH0KIAotdm9pZCBXZWJQbGF5YmFja1Nlc3Npb25JbnRl
cmZhY2VBVktpdDo6c2V0RXh0ZXJuYWxQbGF5YmFjayhib29sIGVuYWJsZWQsIEV4dGVybmFsUGxh
eWJhY2tUYXJnZXRUeXBlIHRhcmdldFR5cGUsIFN0cmluZyBsb2NhbGl6ZWREZXZpY2VOYW1lKQor
dm9pZCBXZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2VBVktpdDo6ZXh0ZXJuYWxQbGF5YmFja0No
YW5nZWQoYm9vbCBlbmFibGVkLCBXZWJQbGF5YmFja1Nlc3Npb25Nb2RlbDo6RXh0ZXJuYWxQbGF5
YmFja1RhcmdldFR5cGUgdGFyZ2V0VHlwZSwgY29uc3QgU3RyaW5nJiBsb2NhbGl6ZWREZXZpY2VO
YW1lKQogewogICAgIEFWUGxheWVyQ29udHJvbGxlckV4dGVybmFsUGxheWJhY2tUeXBlIGV4dGVy
bmFsUGxheWJhY2tUeXBlID0gQVZQbGF5ZXJDb250cm9sbGVyRXh0ZXJuYWxQbGF5YmFja1R5cGVO
b25lOwotICAgIGlmICh0YXJnZXRUeXBlID09IFRhcmdldFR5cGVBaXJQbGF5KQorICAgIGlmICh0
YXJnZXRUeXBlID09IFdlYlBsYXliYWNrU2Vzc2lvbk1vZGVsOjpUYXJnZXRUeXBlQWlyUGxheSkK
ICAgICAgICAgZXh0ZXJuYWxQbGF5YmFja1R5cGUgPSBBVlBsYXllckNvbnRyb2xsZXJFeHRlcm5h
bFBsYXliYWNrVHlwZUFpclBsYXk7Ci0gICAgZWxzZSBpZiAodGFyZ2V0VHlwZSA9PSBUYXJnZXRU
eXBlVFZPdXQpCisgICAgZWxzZSBpZiAodGFyZ2V0VHlwZSA9PSBXZWJQbGF5YmFja1Nlc3Npb25N
b2RlbDo6VGFyZ2V0VHlwZVRWT3V0KQogICAgICAgICBleHRlcm5hbFBsYXliYWNrVHlwZSA9IEFW
UGxheWVyQ29udHJvbGxlckV4dGVybmFsUGxheWJhY2tUeXBlVFZPdXQ7CiAKICAgICBXZWJBVlBs
YXllckNvbnRyb2xsZXIqIHBsYXllckNvbnRyb2xsZXIgPSBtX3BsYXllckNvbnRyb2xsZXIuZ2V0
KCk7CiAgICAgcGxheWVyQ29udHJvbGxlci5leHRlcm5hbFBsYXliYWNrQWlyUGxheURldmljZUxv
Y2FsaXplZE5hbWUgPSBsb2NhbGl6ZWREZXZpY2VOYW1lOwogICAgIHBsYXllckNvbnRyb2xsZXIu
ZXh0ZXJuYWxQbGF5YmFja1R5cGUgPSBleHRlcm5hbFBsYXliYWNrVHlwZTsKICAgICBwbGF5ZXJD
b250cm9sbGVyLmV4dGVybmFsUGxheWJhY2tBY3RpdmUgPSBlbmFibGVkOwotCi0gICAgaWYgKG1f
Y2xpZW50KQotICAgICAgICBtX2NsaWVudC0+ZXh0ZXJuYWxQbGF5YmFja0VuYWJsZWRDaGFuZ2Vk
KGVuYWJsZWQpOwogfQogCi12b2lkIFdlYlBsYXliYWNrU2Vzc2lvbkludGVyZmFjZUFWS2l0Ojpz
ZXRXaXJlbGVzc1ZpZGVvUGxheWJhY2tEaXNhYmxlZChib29sIGRpc2FibGVkKQordm9pZCBXZWJQ
bGF5YmFja1Nlc3Npb25JbnRlcmZhY2VBVktpdDo6d2lyZWxlc3NWaWRlb1BsYXliYWNrRGlzYWJs
ZWRDaGFuZ2VkKGJvb2wgZGlzYWJsZWQpCiB7CiAgICAgW21fcGxheWVyQ29udHJvbGxlciBzZXRB
bGxvd3NFeHRlcm5hbFBsYXliYWNrOiFkaXNhYmxlZF07CiB9CiAKLWJvb2wgV2ViUGxheWJhY2tT
ZXNzaW9uSW50ZXJmYWNlQVZLaXQ6OndpcmVsZXNzVmlkZW9QbGF5YmFja0Rpc2FibGVkKCkgY29u
c3QKLXsKLSAgICByZXR1cm4gW21fcGxheWVyQ29udHJvbGxlciBhbGxvd3NFeHRlcm5hbFBsYXli
YWNrXTsKLX0KLQogdm9pZCBXZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2VBVktpdDo6aW52YWxp
ZGF0ZSgpCiB7Ci0gICAgbV9wbGF5YmFja1Nlc3Npb25Nb2RlbCA9IG5pbDsKKyAgICBpZiAoIW1f
cGxheWJhY2tTZXNzaW9uTW9kZWwpCisgICAgICAgIHJldHVybjsKKworICAgIFttX3BsYXllckNv
bnRyb2xsZXIgc2V0RGVsZWdhdGU6bnVsbHB0cl07CisgICAgbV9wbGF5YmFja1Nlc3Npb25Nb2Rl
bC0+cmVtb3ZlQ2xpZW50KCp0aGlzKTsKKyAgICBtX3BsYXliYWNrU2Vzc2lvbk1vZGVsID0gbnVs
bHB0cjsKIH0KIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1dl
YlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJBVktpdC5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2lvcy9XZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyQVZLaXQubW0KaW5kZXggMzE0ZTRk
MWE2Yzk2MGE4MWNmZmM1MWViMThmNjEyNGY1ZDgzYmE1NS4uMmNkNGFkZGVjZjc1OTA0YzllMDlm
ZmY5YjRiODdmNmM4YzYzMDdmMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
aW9zL1dlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJBVktpdC5tbQorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9pb3MvV2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlckFWS2l0Lm1tCkBA
IC05MSw3ICs5MSw2IEBAIHN0YXRpYyBJbnRSZWN0IGVsZW1lbnRSZWN0SW5XaW5kb3coSFRNTFZp
ZGVvRWxlbWVudCogdmlkZW9FbGVtZW50KQogfQogCiBjbGFzcyBXZWJWaWRlb0Z1bGxzY3JlZW5D
b250cm9sbGVyQ29udGV4dDsKLWNsYXNzIFdlYlZpZGVvRnVsbHNjcmVlblNlc3Npb25Nb2RlbDsK
IAogQGludGVyZmFjZSBXZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyIChkZWxlZ2F0ZSkKIC0o
dm9pZClkaWRGaW5pc2hGdWxsc2NyZWVuOihXZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyQ29u
dGV4dCopY29udGV4dDsKQEAgLTEwMCw3ICs5OSwxMCBAQCBAZW5kCiBjbGFzcyBXZWJWaWRlb0Z1
bGxzY3JlZW5Db250cm9sbGVyQ29udGV4dCBmaW5hbAogICAgIDogcHJpdmF0ZSBXZWJWaWRlb0Z1
bGxzY3JlZW5JbnRlcmZhY2UKICAgICAsIHByaXZhdGUgV2ViVmlkZW9GdWxsc2NyZWVuTW9kZWwK
KyAgICAsIHByaXZhdGUgV2ViVmlkZW9GdWxsc2NyZWVuTW9kZWxDbGllbnQKICAgICAsIHByaXZh
dGUgV2ViVmlkZW9GdWxsc2NyZWVuQ2hhbmdlT2JzZXJ2ZXIKKyAgICAsIHByaXZhdGUgV2ViUGxh
eWJhY2tTZXNzaW9uTW9kZWwKKyAgICAsIHByaXZhdGUgV2ViUGxheWJhY2tTZXNzaW9uTW9kZWxD
bGllbnQKICAgICAsIHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxXZWJWaWRlb0Z1bGxzY3Jl
ZW5Db250cm9sbGVyQ29udGV4dD4gewogCiBwdWJsaWM6CkBAIC0xMTUsMTkgKzExNyw2IEBAIHB1
YmxpYzoKICAgICB2b2lkIHJlcXVlc3RIaWRlQW5kRXhpdEZ1bGxzY3JlZW4oKTsKICAgICB2b2lk
IGludmFsaWRhdGUoKTsKIAotICAgIHZvaWQgcGxheSgpOwotICAgIHZvaWQgcGF1c2UoKTsKLSAg
ICB2b2lkIHRvZ2dsZVBsYXlTdGF0ZSgpOwotICAgIHZvaWQgYmVnaW5TY3J1YmJpbmcoKTsKLSAg
ICB2b2lkIGVuZFNjcnViYmluZygpOwotICAgIHZvaWQgc2Vla1RvVGltZShkb3VibGUpOwotICAg
IHZvaWQgZmFzdFNlZWsoZG91YmxlIHRpbWUpOwotICAgIHZvaWQgYmVnaW5TY2FubmluZ0Zvcndh
cmQoKTsKLSAgICB2b2lkIGJlZ2luU2Nhbm5pbmdCYWNrd2FyZCgpOwotICAgIHZvaWQgZW5kU2Nh
bm5pbmcoKTsKLSAgICB2b2lkIHNlbGVjdEF1ZGlvTWVkaWFPcHRpb24odWludDY0X3QpOwotICAg
IHZvaWQgc2VsZWN0TGVnaWJsZU1lZGlhT3B0aW9uKHVpbnQ2NF90KTsKLQogcHJpdmF0ZToKICAg
ICBXZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyQ29udGV4dCgpIHsgfQogCkBAIC0xMzgsMTA3
ICsxMjcsNzIgQEAgcHJpdmF0ZToKICAgICB2b2lkIGRpZENsZWFudXBGdWxsc2NyZWVuKCkgb3Zl
cnJpZGU7CiAgICAgdm9pZCBmdWxsc2NyZWVuTWF5UmV0dXJuVG9JbmxpbmUoKSBvdmVycmlkZTsK
IAotICAgIC8vIFdlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZQotICAgIHZvaWQgcmVzZXRNZWRp
YVN0YXRlKCkgb3ZlcnJpZGU7Ci0gICAgdm9pZCBzZXREdXJhdGlvbihkb3VibGUpIG92ZXJyaWRl
OwotICAgIHZvaWQgc2V0Q3VycmVudFRpbWUoZG91YmxlIGN1cnJlbnRUaW1lLCBkb3VibGUgYW5j
aG9yVGltZSkgb3ZlcnJpZGU7Ci0gICAgdm9pZCBzZXRCdWZmZXJlZFRpbWUoZG91YmxlKSBvdmVy
cmlkZTsKLSAgICB2b2lkIHNldFJhdGUoYm9vbCBpc1BsYXlpbmcsIGZsb2F0IHBsYXliYWNrUmF0
ZSkgb3ZlcnJpZGU7Ci0gICAgdm9pZCBzZXRWaWRlb0RpbWVuc2lvbnMoYm9vbCBoYXNWaWRlbywg
ZmxvYXQgd2lkdGgsIGZsb2F0IGhlaWdodCkgb3ZlcnJpZGU7Ci0gICAgdm9pZCBzZXRTZWVrYWJs
ZVJhbmdlcyhjb25zdCBUaW1lUmFuZ2VzJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBzZXRDYW5QbGF5
RmFzdFJldmVyc2UoYm9vbCkgb3ZlcnJpZGU7Ci0gICAgdm9pZCBzZXRBdWRpb01lZGlhU2VsZWN0
aW9uT3B0aW9ucyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgb3B0aW9ucywgdWludDY0X3Qgc2VsZWN0
ZWRJbmRleCkgb3ZlcnJpZGU7Ci0gICAgdm9pZCBzZXRMZWdpYmxlTWVkaWFTZWxlY3Rpb25PcHRp
b25zKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBvcHRpb25zLCB1aW50NjRfdCBzZWxlY3RlZEluZGV4
KSBvdmVycmlkZTsKLSAgICB2b2lkIHNldEV4dGVybmFsUGxheWJhY2soYm9vbCBlbmFibGVkLCBF
eHRlcm5hbFBsYXliYWNrVGFyZ2V0VHlwZSwgU3RyaW5nIGxvY2FsaXplZERldmljZU5hbWUpIG92
ZXJyaWRlOwotICAgIHZvaWQgc2V0V2lyZWxlc3NWaWRlb1BsYXliYWNrRGlzYWJsZWQoYm9vbCkg
b3ZlcnJpZGU7CisgICAgLy8gV2ViVmlkZW9GdWxsc2NyZWVuTW9kZWxDbGllbnQKKyAgICB2b2lk
IGhhc1ZpZGVvQ2hhbmdlZChib29sKSBvdmVycmlkZTsKKyAgICB2b2lkIHZpZGVvRGltZW5zaW9u
c0NoYW5nZWQoY29uc3QgRmxvYXRTaXplJikgb3ZlcnJpZGU7CisKKyAgICAvLyBXZWJQbGF5YmFj
a1Nlc3Npb25Nb2RlbAorICAgIHZvaWQgYWRkQ2xpZW50KFdlYlBsYXliYWNrU2Vzc2lvbk1vZGVs
Q2xpZW50Jikgb3ZlcnJpZGU7CisgICAgdm9pZCByZW1vdmVDbGllbnQoV2ViUGxheWJhY2tTZXNz
aW9uTW9kZWxDbGllbnQmKSBvdmVycmlkZTsKKyAgICB2b2lkIHBsYXkoKSBvdmVycmlkZTsKKyAg
ICB2b2lkIHBhdXNlKCkgb3ZlcnJpZGU7CisgICAgdm9pZCB0b2dnbGVQbGF5U3RhdGUoKSBvdmVy
cmlkZTsKKyAgICB2b2lkIGJlZ2luU2NydWJiaW5nKCkgb3ZlcnJpZGU7CisgICAgdm9pZCBlbmRT
Y3J1YmJpbmcoKSBvdmVycmlkZTsKKyAgICB2b2lkIHNlZWtUb1RpbWUoZG91YmxlKSBvdmVycmlk
ZTsKKyAgICB2b2lkIGZhc3RTZWVrKGRvdWJsZSB0aW1lKSBvdmVycmlkZTsKKyAgICB2b2lkIGJl
Z2luU2Nhbm5pbmdGb3J3YXJkKCkgb3ZlcnJpZGU7CisgICAgdm9pZCBiZWdpblNjYW5uaW5nQmFj
a3dhcmQoKSBvdmVycmlkZTsKKyAgICB2b2lkIGVuZFNjYW5uaW5nKCkgb3ZlcnJpZGU7CisgICAg
dm9pZCBzZWxlY3RBdWRpb01lZGlhT3B0aW9uKHVpbnQ2NF90KSBvdmVycmlkZTsKKyAgICB2b2lk
IHNlbGVjdExlZ2libGVNZWRpYU9wdGlvbih1aW50NjRfdCkgb3ZlcnJpZGU7CisgICAgZG91Ymxl
IGR1cmF0aW9uKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgZG91YmxlIGN1cnJlbnRUaW1lKCkgY29u
c3Qgb3ZlcnJpZGU7CisgICAgZG91YmxlIGJ1ZmZlcmVkVGltZSgpIGNvbnN0IG92ZXJyaWRlOwor
ICAgIGJvb2wgaXNQbGF5aW5nKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgZmxvYXQgcGxheWJhY2tS
YXRlKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgUmVmPFRpbWVSYW5nZXM+IHNlZWthYmxlUmFuZ2Vz
KCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgYm9vbCBjYW5QbGF5RmFzdFJldmVyc2UoKSBjb25zdCBv
dmVycmlkZTsKKyAgICBWZWN0b3I8U3RyaW5nPiBhdWRpb01lZGlhU2VsZWN0aW9uT3B0aW9ucygp
IGNvbnN0IG92ZXJyaWRlOworICAgIHVpbnQ2NF90IGF1ZGlvTWVkaWFTZWxlY3RlZEluZGV4KCkg
Y29uc3Qgb3ZlcnJpZGU7CisgICAgVmVjdG9yPFN0cmluZz4gbGVnaWJsZU1lZGlhU2VsZWN0aW9u
T3B0aW9ucygpIGNvbnN0IG92ZXJyaWRlOworICAgIHVpbnQ2NF90IGxlZ2libGVNZWRpYVNlbGVj
dGVkSW5kZXgoKSBjb25zdCBvdmVycmlkZTsKKyAgICBib29sIGV4dGVybmFsUGxheWJhY2tFbmFi
bGVkKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgRXh0ZXJuYWxQbGF5YmFja1RhcmdldFR5cGUgZXh0
ZXJuYWxQbGF5YmFja1RhcmdldFR5cGUoKSBjb25zdCBvdmVycmlkZTsKKyAgICBTdHJpbmcgZXh0
ZXJuYWxQbGF5YmFja0xvY2FsaXplZERldmljZU5hbWUoKSBjb25zdCBvdmVycmlkZTsKKyAgICBi
b29sIHdpcmVsZXNzVmlkZW9QbGF5YmFja0Rpc2FibGVkKCkgY29uc3Qgb3ZlcnJpZGU7CisKKyAg
ICAvLyBXZWJQbGF5YmFja1Nlc3Npb25Nb2RlbENsaWVudAorICAgIHZvaWQgZHVyYXRpb25DaGFu
Z2VkKGRvdWJsZSkgb3ZlcnJpZGU7CisgICAgdm9pZCBjdXJyZW50VGltZUNoYW5nZWQoZG91Ymxl
IGN1cnJlbnRUaW1lLCBkb3VibGUgYW5jaG9yVGltZSkgb3ZlcnJpZGU7CisgICAgdm9pZCBidWZm
ZXJlZFRpbWVDaGFuZ2VkKGRvdWJsZSkgb3ZlcnJpZGU7CisgICAgdm9pZCByYXRlQ2hhbmdlZChi
b29sIGlzUGxheWluZywgZmxvYXQgcGxheWJhY2tSYXRlKSBvdmVycmlkZTsKKyAgICB2b2lkIHNl
ZWthYmxlUmFuZ2VzQ2hhbmdlZChjb25zdCBUaW1lUmFuZ2VzJikgb3ZlcnJpZGU7CisgICAgdm9p
ZCBjYW5QbGF5RmFzdFJldmVyc2VDaGFuZ2VkKGJvb2wpIG92ZXJyaWRlOworICAgIHZvaWQgYXVk
aW9NZWRpYVNlbGVjdGlvbk9wdGlvbnNDaGFuZ2VkKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBvcHRp
b25zLCB1aW50NjRfdCBzZWxlY3RlZEluZGV4KSBvdmVycmlkZTsKKyAgICB2b2lkIGxlZ2libGVN
ZWRpYVNlbGVjdGlvbk9wdGlvbnNDaGFuZ2VkKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBvcHRpb25z
LCB1aW50NjRfdCBzZWxlY3RlZEluZGV4KSBvdmVycmlkZTsKKyAgICB2b2lkIGV4dGVybmFsUGxh
eWJhY2tDaGFuZ2VkKGJvb2wgZW5hYmxlZCwgV2ViUGxheWJhY2tTZXNzaW9uTW9kZWw6OkV4dGVy
bmFsUGxheWJhY2tUYXJnZXRUeXBlLCBjb25zdCBTdHJpbmcmIGxvY2FsaXplZERldmljZU5hbWUp
IG92ZXJyaWRlOworICAgIHZvaWQgd2lyZWxlc3NWaWRlb1BsYXliYWNrRGlzYWJsZWRDaGFuZ2Vk
KGJvb2wpIG92ZXJyaWRlOwogCiAgICAgLy8gV2ViVmlkZW9GdWxsc2NyZWVuTW9kZWwKKyAgICB2
b2lkIGFkZENsaWVudChXZWJWaWRlb0Z1bGxzY3JlZW5Nb2RlbENsaWVudCYpIG92ZXJyaWRlOwor
ICAgIHZvaWQgcmVtb3ZlQ2xpZW50KFdlYlZpZGVvRnVsbHNjcmVlbk1vZGVsQ2xpZW50Jikgb3Zl
cnJpZGU7CiAgICAgdm9pZCByZXF1ZXN0RnVsbHNjcmVlbk1vZGUoSFRNTE1lZGlhRWxlbWVudEVu
dW1zOjpWaWRlb0Z1bGxzY3JlZW5Nb2RlKSBvdmVycmlkZTsKICAgICB2b2lkIHNldFZpZGVvTGF5
ZXJGcmFtZShGbG9hdFJlY3QpIG92ZXJyaWRlOwogICAgIHZvaWQgc2V0VmlkZW9MYXllckdyYXZp
dHkoV2ViVmlkZW9GdWxsc2NyZWVuTW9kZWw6OlZpZGVvR3Jhdml0eSkgb3ZlcnJpZGU7CiAgICAg
dm9pZCBmdWxsc2NyZWVuTW9kZUNoYW5nZWQoSFRNTE1lZGlhRWxlbWVudEVudW1zOjpWaWRlb0Z1
bGxzY3JlZW5Nb2RlKSBvdmVycmlkZTsKICAgICBib29sIGlzVmlzaWJsZSgpIGNvbnN0IG92ZXJy
aWRlOworICAgIGJvb2wgaGFzVmlkZW8oKSBjb25zdCBvdmVycmlkZTsKKyAgICBGbG9hdFNpemUg
dmlkZW9EaW1lbnNpb25zKCkgY29uc3Qgb3ZlcnJpZGU7CiAKKyAgICBIYXNoU2V0PFdlYlBsYXli
YWNrU2Vzc2lvbk1vZGVsQ2xpZW50Kj4gbV9wbGF5YmFja0NsaWVudHM7CisgICAgSGFzaFNldDxX
ZWJWaWRlb0Z1bGxzY3JlZW5Nb2RlbENsaWVudCo+IG1fZnVsbHNjcmVlbkNsaWVudHM7CiAgICAg
UmVmUHRyPFdlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0PiBtX2ludGVyZmFjZTsKLSAg
ICBSZWZQdHI8V2ViVmlkZW9GdWxsc2NyZWVuTW9kZWxWaWRlb0VsZW1lbnQ+IG1fbW9kZWw7Cisg
ICAgUmVmUHRyPFdlYlZpZGVvRnVsbHNjcmVlbk1vZGVsVmlkZW9FbGVtZW50PiBtX2Z1bGxzY3Jl
ZW5Nb2RlbDsKKyAgICBSZWZQdHI8V2ViUGxheWJhY2tTZXNzaW9uTW9kZWxNZWRpYUVsZW1lbnQ+
IG1fcGxheWJhY2tNb2RlbDsKICAgICBSZWZQdHI8SFRNTFZpZGVvRWxlbWVudD4gbV92aWRlb0Vs
ZW1lbnQ7CiAgICAgUmV0YWluUHRyPFVJVmlldz4gbV92aWRlb0Z1bGxzY3JlZW5WaWV3OwogICAg
IFJldGFpblB0cjxXZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyPiBtX2NvbnRyb2xsZXI7Ci0g
ICAgUmVmUHRyPFdlYlZpZGVvRnVsbHNjcmVlblNlc3Npb25Nb2RlbD4gbV9zZXNzaW9uTW9kZWw7
Ci19OwotCi0KLWNsYXNzIFdlYlZpZGVvRnVsbHNjcmVlblNlc3Npb25Nb2RlbCBmaW5hbDogcHVi
bGljIFJlZkNvdW50ZWQ8V2ViVmlkZW9GdWxsc2NyZWVuU2Vzc2lvbk1vZGVsPiwgcHVibGljIFdl
YkNvcmU6OldlYlBsYXliYWNrU2Vzc2lvbk1vZGVsICB7Ci1wdWJsaWM6Ci0gICAgc3RhdGljIFJl
ZjxXZWJWaWRlb0Z1bGxzY3JlZW5TZXNzaW9uTW9kZWw+IGNyZWF0ZShXZWJWaWRlb0Z1bGxzY3Jl
ZW5Db250cm9sbGVyQ29udGV4dCYgY29udHJvbGxlcikKLSAgICB7Ci0gICAgICAgIHJldHVybiBh
ZG9wdFJlZigqbmV3IFdlYlZpZGVvRnVsbHNjcmVlblNlc3Npb25Nb2RlbChjb250cm9sbGVyKSk7
Ci0gICAgfQotICAgIHZpcnR1YWwgfldlYlZpZGVvRnVsbHNjcmVlblNlc3Npb25Nb2RlbCgpIHsg
fQotCi0gICAgdm9pZCBpbnZhbGlkYXRlKCkgeyBtX2NvbnRyb2xsZXIgPSBudWxscHRyOyB9Ci0K
LSAgICB2b2lkIHNldER1cmF0aW9uKGRvdWJsZSBkdXJhdGlvbikgeyBtX2R1cmF0aW9uID0gZHVy
YXRpb247IH0KLSAgICB2b2lkIHNldEN1cnJlbnRUaW1lKGRvdWJsZSBjdXJyZW50VGltZSkgeyBt
X2N1cnJlbnRUaW1lID0gY3VycmVudFRpbWU7IH0KLSAgICB2b2lkIHNldEJ1ZmZlcmVkVGltZShk
b3VibGUgYnVmZmVyZWRUaW1lKSB7IG1fYnVmZmVyZWRUaW1lID0gYnVmZmVyZWRUaW1lOyB9Ci0g
ICAgdm9pZCBzZXRJc1BsYXlpbmcoYm9vbCBpc1BsYXlpbmcpIHsgbV9pc1BsYXlpbmcgPSBpc1Bs
YXlpbmc7IH0KLSAgICB2b2lkIHNldFBsYXliYWNrUmF0ZShmbG9hdCBwbGF5YmFja1JhdGUpIHsg
bV9wbGF5YmFja1JhdGUgPSBwbGF5YmFja1JhdGU7IH0KLSAgICB2b2lkIHNldFNlZWthYmxlUmFu
Z2VzKFdlYkNvcmU6OlRpbWVSYW5nZXMmIHNlZWthYmxlUmFuZ2VzKSB7IG1fc2Vla2FibGVSYW5n
ZXMgPSBzZWVrYWJsZVJhbmdlczsgfQotICAgIHZvaWQgc2V0Q2FuUGxheUZhc3RSZXZlcnNlKGJv
b2wgY2FuUGxheUZhc3RSZXZlcnNlKSB7IG1fY2FuUGxheUZhc3RSZXZlcnNlID0gY2FuUGxheUZh
c3RSZXZlcnNlOyB9Ci0gICAgdm9pZCBzZXRBdWRpb01lZGlhU2VsZWN0aW9uT3B0aW9ucyhjb25z
dCBWZWN0b3I8V1RGOjpTdHJpbmc+JiBhdWRpb01lZGlhU2VsZWN0aW9uT3B0aW9ucykgeyBtX2F1
ZGlvTWVkaWFTZWxlY3Rpb25PcHRpb25zID0gYXVkaW9NZWRpYVNlbGVjdGlvbk9wdGlvbnM7IH0K
LSAgICB2b2lkIHNldEF1ZGlvTWVkaWFTZWxlY3RlZEluZGV4KHVpbnQ2NF90IGF1ZGlvTWVkaWFT
ZWxlY3RlZEluZGV4KSB7IG1fYXVkaW9NZWRpYVNlbGVjdGVkSW5kZXggPSBhdWRpb01lZGlhU2Vs
ZWN0ZWRJbmRleDsgfQotICAgIHZvaWQgc2V0TGVnaWJsZU1lZGlhU2VsZWN0aW9uT3B0aW9ucyhj
b25zdCBWZWN0b3I8V1RGOjpTdHJpbmc+JiBsZWdpYmxlTWVkaWFTZWxlY3Rpb25PcHRpb25zKSB7
IG1fbGVnaWJsZU1lZGlhU2VsZWN0aW9uT3B0aW9ucyA9IGxlZ2libGVNZWRpYVNlbGVjdGlvbk9w
dGlvbnM7IH0KLSAgICB2b2lkIHNldExlZ2libGVNZWRpYVNlbGVjdGVkSW5kZXgodWludDY0X3Qg
bGVnaWJsZU1lZGlhU2VsZWN0ZWRJbmRleCkgeyBtX2xlZ2libGVNZWRpYVNlbGVjdGVkSW5kZXgg
PSBsZWdpYmxlTWVkaWFTZWxlY3RlZEluZGV4OyB9Ci0gICAgdm9pZCBzZXRFeHRlcm5hbFBsYXli
YWNrRW5hYmxlZChib29sIGV4dGVybmFsUGxheWJhY2tFbmFibGVkKSB7IG1fZXh0ZXJuYWxQbGF5
YmFja0VuYWJsZWQgPSBleHRlcm5hbFBsYXliYWNrRW5hYmxlZDsgfQotICAgIHZvaWQgc2V0V2ly
ZWxlc3NWaWRlb1BsYXliYWNrRGlzYWJsZWQoYm9vbCB3aXJlbGVzc1ZpZGVvUGxheWJhY2tEaXNh
YmxlZCkgeyBtX3dpcmVsZXNzVmlkZW9QbGF5YmFja0Rpc2FibGVkID0gd2lyZWxlc3NWaWRlb1Bs
YXliYWNrRGlzYWJsZWQ7IH0KLQotcHJpdmF0ZToKLSAgICBXZWJWaWRlb0Z1bGxzY3JlZW5TZXNz
aW9uTW9kZWwoV2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlckNvbnRleHQmIGNvbnRyb2xsZXIp
Ci0gICAgICAgIDogbV9jb250cm9sbGVyKCZjb250cm9sbGVyKQotICAgIHsKLSAgICB9Ci0KLSAg
ICB2b2lkIHBsYXkoKSBmaW5hbDsKLSAgICB2b2lkIHBhdXNlKCkgZmluYWw7Ci0gICAgdm9pZCB0
b2dnbGVQbGF5U3RhdGUoKSBmaW5hbDsKLSAgICB2b2lkIGJlZ2luU2NydWJiaW5nKCkgZmluYWw7
Ci0gICAgdm9pZCBlbmRTY3J1YmJpbmcoKSBmaW5hbDsKLSAgICB2b2lkIHNlZWtUb1RpbWUoZG91
YmxlKSBmaW5hbDsKLSAgICB2b2lkIGZhc3RTZWVrKGRvdWJsZSB0aW1lKSBmaW5hbDsKLSAgICB2
b2lkIGJlZ2luU2Nhbm5pbmdGb3J3YXJkKCkgZmluYWw7Ci0gICAgdm9pZCBiZWdpblNjYW5uaW5n
QmFja3dhcmQoKSBmaW5hbDsKLSAgICB2b2lkIGVuZFNjYW5uaW5nKCkgZmluYWw7Ci0gICAgdm9p
ZCBzZWxlY3RBdWRpb01lZGlhT3B0aW9uKHVpbnQ2NF90KSBmaW5hbDsKLSAgICB2b2lkIHNlbGVj
dExlZ2libGVNZWRpYU9wdGlvbih1aW50NjRfdCkgZmluYWw7Ci0KLSAgICBkb3VibGUgZHVyYXRp
b24oKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX2R1cmF0aW9uOyB9Ci0gICAgZG91YmxlIGN1cnJl
bnRUaW1lKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9jdXJyZW50VGltZTsgfQotICAgIGRvdWJs
ZSBidWZmZXJlZFRpbWUoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX2J1ZmZlcmVkVGltZTsgfQot
ICAgIGJvb2wgaXNQbGF5aW5nKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9pc1BsYXlpbmc7IH0K
LSAgICBmbG9hdCBwbGF5YmFja1JhdGUoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX3BsYXliYWNr
UmF0ZTsgfQotICAgIFJlZjxXZWJDb3JlOjpUaW1lUmFuZ2VzPiBzZWVrYWJsZVJhbmdlcygpIGNv
bnN0IGZpbmFsIHsgcmV0dXJuIG1fc2Vla2FibGVSYW5nZXMuY29weVJlZigpOyB9Ci0gICAgYm9v
bCBjYW5QbGF5RmFzdFJldmVyc2UoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX2NhblBsYXlGYXN0
UmV2ZXJzZTsgfQotICAgIFZlY3RvcjxXVEY6OlN0cmluZz4gYXVkaW9NZWRpYVNlbGVjdGlvbk9w
dGlvbnMoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX2F1ZGlvTWVkaWFTZWxlY3Rpb25PcHRpb25z
OyB9Ci0gICAgdWludDY0X3QgYXVkaW9NZWRpYVNlbGVjdGVkSW5kZXgoKSBjb25zdCBmaW5hbCB7
IHJldHVybiBtX2F1ZGlvTWVkaWFTZWxlY3RlZEluZGV4OyB9Ci0gICAgVmVjdG9yPFdURjo6U3Ry
aW5nPiBsZWdpYmxlTWVkaWFTZWxlY3Rpb25PcHRpb25zKCkgY29uc3QgZmluYWwgeyByZXR1cm4g
bV9sZWdpYmxlTWVkaWFTZWxlY3Rpb25PcHRpb25zOyB9Ci0gICAgdWludDY0X3QgbGVnaWJsZU1l
ZGlhU2VsZWN0ZWRJbmRleCgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fbGVnaWJsZU1lZGlhU2Vs
ZWN0ZWRJbmRleDsgfQotICAgIGJvb2wgZXh0ZXJuYWxQbGF5YmFja0VuYWJsZWQoKSBjb25zdCBm
aW5hbCB7IHJldHVybiBtX2V4dGVybmFsUGxheWJhY2tFbmFibGVkOyB9Ci0gICAgYm9vbCB3aXJl
bGVzc1ZpZGVvUGxheWJhY2tEaXNhYmxlZCgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fd2lyZWxl
c3NWaWRlb1BsYXliYWNrRGlzYWJsZWQ7IH0KLQotICAgIFdlYlZpZGVvRnVsbHNjcmVlbkNvbnRy
b2xsZXJDb250ZXh0KiBtX2NvbnRyb2xsZXI7Ci0gICAgZG91YmxlIG1fZHVyYXRpb24geyAwIH07
Ci0gICAgZG91YmxlIG1fY3VycmVudFRpbWUgeyAwIH07Ci0gICAgZG91YmxlIG1fYnVmZmVyZWRU
aW1lIHsgMCB9OwotICAgIGJvb2wgbV9pc1BsYXlpbmcgeyBmYWxzZSB9OwotICAgIGZsb2F0IG1f
cGxheWJhY2tSYXRlIHsgMCB9OwotICAgIFJlZjxXZWJDb3JlOjpUaW1lUmFuZ2VzPiBtX3NlZWth
YmxlUmFuZ2VzIHsgV2ViQ29yZTo6VGltZVJhbmdlczo6Y3JlYXRlKCkgfTsKLSAgICBib29sIG1f
Y2FuUGxheUZhc3RSZXZlcnNlIHsgZmFsc2UgfTsKLSAgICBWZWN0b3I8V1RGOjpTdHJpbmc+IG1f
YXVkaW9NZWRpYVNlbGVjdGlvbk9wdGlvbnM7Ci0gICAgdWludDY0X3QgbV9hdWRpb01lZGlhU2Vs
ZWN0ZWRJbmRleCB7IDAgfTsKLSAgICBWZWN0b3I8V1RGOjpTdHJpbmc+IG1fbGVnaWJsZU1lZGlh
U2VsZWN0aW9uT3B0aW9uczsKLSAgICB1aW50NjRfdCBtX2xlZ2libGVNZWRpYVNlbGVjdGVkSW5k
ZXggeyAwIH07Ci0gICAgYm9vbCBtX2V4dGVybmFsUGxheWJhY2tFbmFibGVkIHsgZmFsc2UgfTsK
LSAgICBib29sIG1fd2lyZWxlc3NWaWRlb1BsYXliYWNrRGlzYWJsZWQgeyBmYWxzZSB9OwogfTsK
IAogI3ByYWdtYSBtYXJrIFdlYlZpZGVvRnVsbHNjcmVlbkNoYW5nZU9ic2VydmVyCkBAIC0yNDYs
MTEgKzIwMCwxMSBAQCBwcml2YXRlOgogdm9pZCBXZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVy
Q29udGV4dDo6ZGlkU2V0dXBGdWxsc2NyZWVuKCkKIHsKICAgICBBU1NFUlQoaXNVSVRocmVhZCgp
KTsKLSAgICBSZWZQdHI8V2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlckNvbnRleHQ+IHByb3Rl
Y3RlZFRoaXModGhpcyk7CiAgICAgUmV0YWluUHRyPENBTGF5ZXI+IHZpZGVvRnVsbHNjcmVlbkxh
eWVyID0gW21fdmlkZW9GdWxsc2NyZWVuVmlldyBsYXllcl07CisgICAgUmVmUHRyPFdlYlZpZGVv
RnVsbHNjcmVlbkNvbnRyb2xsZXJDb250ZXh0PiBwcm90ZWN0ZWRUaGlzKHRoaXMpOwogICAgIFdl
YlRocmVhZFJ1bihbcHJvdGVjdGVkVGhpcywgdGhpcywgdmlkZW9GdWxsc2NyZWVuTGF5ZXJdIHsK
ICAgICAgICAgW3ZpZGVvRnVsbHNjcmVlbkxheWVyIHNldEJhY2tncm91bmRDb2xvcjpjYWNoZWRD
R0NvbG9yKFdlYkNvcmU6OkNvbG9yOjp0cmFuc3BhcmVudCldOwotICAgICAgICBtX21vZGVsLT5z
ZXRWaWRlb0Z1bGxzY3JlZW5MYXllcih2aWRlb0Z1bGxzY3JlZW5MYXllci5nZXQoKSwgW3Byb3Rl
Y3RlZFRoaXMsIHRoaXNdIHsKKyAgICAgICAgbV9mdWxsc2NyZWVuTW9kZWwtPnNldFZpZGVvRnVs
bHNjcmVlbkxheWVyKHZpZGVvRnVsbHNjcmVlbkxheWVyLmdldCgpLCBbcHJvdGVjdGVkVGhpcywg
dGhpc10gewogICAgICAgICAgICAgZGlzcGF0Y2hfYXN5bmMoZGlzcGF0Y2hfZ2V0X21haW5fcXVl
dWUoKSwgW3Byb3RlY3RlZFRoaXMsIHRoaXNdIHsKICAgICAgICAgICAgICAgICBtX2ludGVyZmFj
ZS0+ZW50ZXJGdWxsc2NyZWVuKCk7CiAgICAgICAgICAgICB9KTsKQEAgLTI2Myw3ICsyMTcsNyBA
QCB2b2lkIFdlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJDb250ZXh0OjpkaWRFeGl0RnVsbHNj
cmVlbigpCiAgICAgQVNTRVJUKGlzVUlUaHJlYWQoKSk7CiAgICAgUmVmUHRyPFdlYlZpZGVvRnVs
bHNjcmVlbkNvbnRyb2xsZXJDb250ZXh0PiBwcm90ZWN0ZWRUaGlzKHRoaXMpOwogICAgIFdlYlRo
cmVhZFJ1bihbcHJvdGVjdGVkVGhpcywgdGhpc10gewotICAgICAgICBtX21vZGVsLT5zZXRWaWRl
b0Z1bGxzY3JlZW5MYXllcihuaWwsIFtwcm90ZWN0ZWRUaGlzLCB0aGlzXSB7CisgICAgICAgIG1f
ZnVsbHNjcmVlbk1vZGVsLT5zZXRWaWRlb0Z1bGxzY3JlZW5MYXllcihuaWwsIFtwcm90ZWN0ZWRU
aGlzLCB0aGlzXSB7CiAgICAgICAgICAgICBkaXNwYXRjaF9hc3luYyhkaXNwYXRjaF9nZXRfbWFp
bl9xdWV1ZSgpLCBbcHJvdGVjdGVkVGhpcywgdGhpc10gewogICAgICAgICAgICAgICAgIG1faW50
ZXJmYWNlLT5jbGVhbnVwRnVsbHNjcmVlbigpOwogICAgICAgICAgICAgfSk7CkBAIC0yNzgsMTYg
KzIzMiwxNCBAQCB2b2lkIFdlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJDb250ZXh0OjpkaWRD
bGVhbnVwRnVsbHNjcmVlbigpCiAgICAgbV9pbnRlcmZhY2UtPnNldFdlYlZpZGVvRnVsbHNjcmVl
bkNoYW5nZU9ic2VydmVyKG51bGxwdHIpOwogICAgIG1faW50ZXJmYWNlID0gbnVsbHB0cjsKICAg
ICBtX3ZpZGVvRnVsbHNjcmVlblZpZXcgPSBuaWw7Ci0gICAgbV9zZXNzaW9uTW9kZWwtPmludmFs
aWRhdGUoKTsKLSAgICBtX3Nlc3Npb25Nb2RlbCA9IG51bGxwdHI7CiAKICAgICBSZWZQdHI8V2Vi
VmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlckNvbnRleHQ+IHByb3RlY3RlZFRoaXModGhpcyk7CiAg
ICAgV2ViVGhyZWFkUnVuKFtwcm90ZWN0ZWRUaGlzLCB0aGlzXSB7Ci0gICAgICAgIG1fbW9kZWwt
PnNldFZpZGVvRnVsbHNjcmVlbkxheWVyKG5pbCk7Ci0gICAgICAgIG1fbW9kZWwtPnNldFdlYlZp
ZGVvRnVsbHNjcmVlbkludGVyZmFjZShudWxscHRyKTsKLSAgICAgICAgbV9tb2RlbC0+c2V0Vmlk
ZW9FbGVtZW50KG51bGxwdHIpOwotICAgICAgICBtX21vZGVsLT5wbGF5YmFja1Nlc3Npb25Nb2Rl
bCgpLnNldE1lZGlhRWxlbWVudChudWxscHRyKTsKLSAgICAgICAgbV9tb2RlbCA9IG51bGxwdHI7
CisgICAgICAgIG1fZnVsbHNjcmVlbk1vZGVsLT5zZXRWaWRlb0Z1bGxzY3JlZW5MYXllcihuaWwp
OworICAgICAgICBtX2Z1bGxzY3JlZW5Nb2RlbC0+c2V0VmlkZW9FbGVtZW50KG51bGxwdHIpOwor
ICAgICAgICBtX3BsYXliYWNrTW9kZWwtPnNldE1lZGlhRWxlbWVudChudWxscHRyKTsKKyAgICAg
ICAgbV9mdWxsc2NyZWVuTW9kZWwtPnJlbW92ZUNsaWVudCgqdGhpcyk7CisgICAgICAgIG1fZnVs
bHNjcmVlbk1vZGVsID0gbnVsbHB0cjsKICAgICAgICAgbV92aWRlb0VsZW1lbnQgPSBudWxscHRy
OwogCiAgICAgICAgIFttX2NvbnRyb2xsZXIgZGlkRmluaXNoRnVsbHNjcmVlbjp0aGlzXTsKQEAg
LTMwNiwxNjAgKzI1OCwxOTcgQEAgdm9pZCBXZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyQ29u
dGV4dDo6ZnVsbHNjcmVlbk1heVJldHVyblRvSW5saW5lKCkKICAgICB9KTsKIH0KIAotI3ByYWdt
YSBtYXJrIFdlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZQorI3ByYWdtYSBtYXJrIFdlYlBsYXli
YWNrU2Vzc2lvbk1vZGVsQ2xpZW50CiAKLXZvaWQgV2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxl
ckNvbnRleHQ6OnJlc2V0TWVkaWFTdGF0ZSgpCit2b2lkIFdlYlZpZGVvRnVsbHNjcmVlbkNvbnRy
b2xsZXJDb250ZXh0OjpkdXJhdGlvbkNoYW5nZWQoZG91YmxlIGR1cmF0aW9uKQogewotICAgIEFT
U0VSVChXZWJUaHJlYWRJc0N1cnJlbnQoKSB8fCBpc01haW5UaHJlYWQoKSk7Ci0gICAgUmVmUHRy
PFdlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJDb250ZXh0PiBwcm90ZWN0ZWRUaGlzKHRoaXMp
OwotICAgIGRpc3BhdGNoX2FzeW5jKGRpc3BhdGNoX2dldF9tYWluX3F1ZXVlKCksIFtwcm90ZWN0
ZWRUaGlzLCB0aGlzXSB7Ci0gICAgICAgIGlmIChtX2ludGVyZmFjZSkKLSAgICAgICAgICAgIG1f
aW50ZXJmYWNlLT5yZXNldE1lZGlhU3RhdGUoKTsKLSAgICB9KTsKKyAgICBpZiAoV2ViVGhyZWFk
SXNDdXJyZW50KCkpIHsKKyAgICAgICAgUmVmUHRyPFdlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xs
ZXJDb250ZXh0PiBwcm90ZWN0ZWRUaGlzKHRoaXMpOworICAgICAgICBkaXNwYXRjaF9hc3luYyhk
aXNwYXRjaF9nZXRfbWFpbl9xdWV1ZSgpLCBbcHJvdGVjdGVkVGhpcywgZHVyYXRpb25dIHsKKyAg
ICAgICAgICAgIHByb3RlY3RlZFRoaXMtPmR1cmF0aW9uQ2hhbmdlZChkdXJhdGlvbik7CisgICAg
ICAgIH0pOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgZm9yIChhdXRvJiBjbGllbnQg
OiBtX3BsYXliYWNrQ2xpZW50cykKKyAgICAgICAgY2xpZW50LT5kdXJhdGlvbkNoYW5nZWQoZHVy
YXRpb24pOwogfQogCi12b2lkIFdlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJDb250ZXh0Ojpz
ZXREdXJhdGlvbihkb3VibGUgZHVyYXRpb24pCit2b2lkIFdlYlZpZGVvRnVsbHNjcmVlbkNvbnRy
b2xsZXJDb250ZXh0OjpjdXJyZW50VGltZUNoYW5nZWQoZG91YmxlIGN1cnJlbnRUaW1lLCBkb3Vi
bGUgYW5jaG9yVGltZSkKIHsKLSAgICBBU1NFUlQoV2ViVGhyZWFkSXNDdXJyZW50KCkpOwotICAg
IFJlZlB0cjxXZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyQ29udGV4dD4gcHJvdGVjdGVkVGhp
cyh0aGlzKTsKLSAgICBkaXNwYXRjaF9hc3luYyhkaXNwYXRjaF9nZXRfbWFpbl9xdWV1ZSgpLCBb
cHJvdGVjdGVkVGhpcywgdGhpcywgZHVyYXRpb25dIHsKLSAgICAgICAgaWYgKG1faW50ZXJmYWNl
KQotICAgICAgICAgICAgbV9pbnRlcmZhY2UtPnNldER1cmF0aW9uKGR1cmF0aW9uKTsKLSAgICB9
KTsKKyAgICBpZiAoV2ViVGhyZWFkSXNDdXJyZW50KCkpIHsKKyAgICAgICAgUmVmUHRyPFdlYlZp
ZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJDb250ZXh0PiBwcm90ZWN0ZWRUaGlzKHRoaXMpOworICAg
ICAgICBkaXNwYXRjaF9hc3luYyhkaXNwYXRjaF9nZXRfbWFpbl9xdWV1ZSgpLCBbcHJvdGVjdGVk
VGhpcywgY3VycmVudFRpbWUsIGFuY2hvclRpbWVdIHsKKyAgICAgICAgICAgIHByb3RlY3RlZFRo
aXMtPmN1cnJlbnRUaW1lQ2hhbmdlZChjdXJyZW50VGltZSwgYW5jaG9yVGltZSk7CisgICAgICAg
IH0pOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgZm9yIChhdXRvJiBjbGllbnQgOiBt
X3BsYXliYWNrQ2xpZW50cykKKyAgICAgICAgY2xpZW50LT5jdXJyZW50VGltZUNoYW5nZWQoY3Vy
cmVudFRpbWUsIGFuY2hvclRpbWUpOwogfQogCi12b2lkIFdlYlZpZGVvRnVsbHNjcmVlbkNvbnRy
b2xsZXJDb250ZXh0OjpzZXRDdXJyZW50VGltZShkb3VibGUgY3VycmVudFRpbWUsIGRvdWJsZSBh
bmNob3JUaW1lKQordm9pZCBXZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyQ29udGV4dDo6YnVm
ZmVyZWRUaW1lQ2hhbmdlZChkb3VibGUgYnVmZmVyZWRUaW1lKQogewotICAgIEFTU0VSVChXZWJU
aHJlYWRJc0N1cnJlbnQoKSk7Ci0gICAgUmVmUHRyPFdlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xs
ZXJDb250ZXh0PiBwcm90ZWN0ZWRUaGlzKHRoaXMpOwotICAgIGRpc3BhdGNoX2FzeW5jKGRpc3Bh
dGNoX2dldF9tYWluX3F1ZXVlKCksIFtwcm90ZWN0ZWRUaGlzLCB0aGlzLCBjdXJyZW50VGltZSwg
YW5jaG9yVGltZV0gewotICAgICAgICBpZiAobV9pbnRlcmZhY2UpCi0gICAgICAgICAgICBtX2lu
dGVyZmFjZS0+c2V0Q3VycmVudFRpbWUoY3VycmVudFRpbWUsIGFuY2hvclRpbWUpOwotICAgIH0p
OworICAgIGlmIChXZWJUaHJlYWRJc0N1cnJlbnQoKSkgeworICAgICAgICBSZWZQdHI8V2ViVmlk
ZW9GdWxsc2NyZWVuQ29udHJvbGxlckNvbnRleHQ+IHByb3RlY3RlZFRoaXModGhpcyk7CisgICAg
ICAgIGRpc3BhdGNoX2FzeW5jKGRpc3BhdGNoX2dldF9tYWluX3F1ZXVlKCksIFtwcm90ZWN0ZWRU
aGlzLCBidWZmZXJlZFRpbWVdIHsKKyAgICAgICAgICAgIHByb3RlY3RlZFRoaXMtPmJ1ZmZlcmVk
VGltZUNoYW5nZWQoYnVmZmVyZWRUaW1lKTsKKyAgICAgICAgfSk7CisgICAgICAgIHJldHVybjsK
KyAgICB9CisKKyAgICBmb3IgKGF1dG8mIGNsaWVudCA6IG1fcGxheWJhY2tDbGllbnRzKQorICAg
ICAgICBjbGllbnQtPmJ1ZmZlcmVkVGltZUNoYW5nZWQoYnVmZmVyZWRUaW1lKTsKIH0KIAotdm9p
ZCBXZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyQ29udGV4dDo6c2V0QnVmZmVyZWRUaW1lKGRv
dWJsZSBidWZmZXJlZFRpbWUpCit2b2lkIFdlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJDb250
ZXh0OjpyYXRlQ2hhbmdlZChib29sIGlzUGxheWluZywgZmxvYXQgcGxheWJhY2tSYXRlKQogewot
ICAgIEFTU0VSVChXZWJUaHJlYWRJc0N1cnJlbnQoKSk7Ci0gICAgUmVmUHRyPFdlYlZpZGVvRnVs
bHNjcmVlbkNvbnRyb2xsZXJDb250ZXh0PiBwcm90ZWN0ZWRUaGlzKHRoaXMpOwotICAgIGRpc3Bh
dGNoX2FzeW5jKGRpc3BhdGNoX2dldF9tYWluX3F1ZXVlKCksIFtwcm90ZWN0ZWRUaGlzLCB0aGlz
LCBidWZmZXJlZFRpbWVdIHsKLSAgICAgICAgaWYgKG1faW50ZXJmYWNlKQotICAgICAgICAgICAg
bV9pbnRlcmZhY2UtPnNldEJ1ZmZlcmVkVGltZShidWZmZXJlZFRpbWUpOwotICAgIH0pOworICAg
IGlmIChXZWJUaHJlYWRJc0N1cnJlbnQoKSkgeworICAgICAgICBSZWZQdHI8V2ViVmlkZW9GdWxs
c2NyZWVuQ29udHJvbGxlckNvbnRleHQ+IHByb3RlY3RlZFRoaXModGhpcyk7CisgICAgICAgIGRp
c3BhdGNoX2FzeW5jKGRpc3BhdGNoX2dldF9tYWluX3F1ZXVlKCksIFtwcm90ZWN0ZWRUaGlzLCBp
c1BsYXlpbmcsIHBsYXliYWNrUmF0ZV0geworICAgICAgICAgICAgcHJvdGVjdGVkVGhpcy0+cmF0
ZUNoYW5nZWQoaXNQbGF5aW5nLCBwbGF5YmFja1JhdGUpOworICAgICAgICB9KTsKKyAgICAgICAg
cmV0dXJuOworICAgIH0KKworICAgIGZvciAoYXV0byYgY2xpZW50IDogbV9wbGF5YmFja0NsaWVu
dHMpCisgICAgICAgIGNsaWVudC0+cmF0ZUNoYW5nZWQoaXNQbGF5aW5nLCBwbGF5YmFja1JhdGUp
OwogfQogCi12b2lkIFdlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJDb250ZXh0OjpzZXRSYXRl
KGJvb2wgaXNQbGF5aW5nLCBmbG9hdCBwbGF5YmFja1JhdGUpCit2b2lkIFdlYlZpZGVvRnVsbHNj
cmVlbkNvbnRyb2xsZXJDb250ZXh0OjpoYXNWaWRlb0NoYW5nZWQoYm9vbCBoYXNWaWRlbykKIHsK
LSAgICBBU1NFUlQoV2ViVGhyZWFkSXNDdXJyZW50KCkpOwotICAgIFJlZlB0cjxXZWJWaWRlb0Z1
bGxzY3JlZW5Db250cm9sbGVyQ29udGV4dD4gcHJvdGVjdGVkVGhpcyh0aGlzKTsKLSAgICBkaXNw
YXRjaF9hc3luYyhkaXNwYXRjaF9nZXRfbWFpbl9xdWV1ZSgpLCBbcHJvdGVjdGVkVGhpcywgdGhp
cywgaXNQbGF5aW5nLCBwbGF5YmFja1JhdGVdIHsKLSAgICAgICAgaWYgKG1faW50ZXJmYWNlKQot
ICAgICAgICAgICAgbV9pbnRlcmZhY2UtPnNldFJhdGUoaXNQbGF5aW5nLCBwbGF5YmFja1JhdGUp
OwotICAgIH0pOworICAgIGlmIChXZWJUaHJlYWRJc0N1cnJlbnQoKSkgeworICAgICAgICBSZWZQ
dHI8V2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlckNvbnRleHQ+IHByb3RlY3RlZFRoaXModGhp
cyk7CisgICAgICAgIGRpc3BhdGNoX2FzeW5jKGRpc3BhdGNoX2dldF9tYWluX3F1ZXVlKCksIFtw
cm90ZWN0ZWRUaGlzLCBoYXNWaWRlb10geworICAgICAgICAgICAgcHJvdGVjdGVkVGhpcy0+aGFz
VmlkZW9DaGFuZ2VkKGhhc1ZpZGVvKTsKKyAgICAgICAgfSk7CisgICAgICAgIHJldHVybjsKKyAg
ICB9CisKKyAgICBmb3IgKGF1dG8mIGNsaWVudCA6IG1fZnVsbHNjcmVlbkNsaWVudHMpCisgICAg
ICAgIGNsaWVudC0+aGFzVmlkZW9DaGFuZ2VkKGhhc1ZpZGVvKTsKIH0KIAotdm9pZCBXZWJWaWRl
b0Z1bGxzY3JlZW5Db250cm9sbGVyQ29udGV4dDo6c2V0VmlkZW9EaW1lbnNpb25zKGJvb2wgaGFz
VmlkZW8sIGZsb2F0IHdpZHRoLCBmbG9hdCBoZWlnaHQpCit2b2lkIFdlYlZpZGVvRnVsbHNjcmVl
bkNvbnRyb2xsZXJDb250ZXh0Ojp2aWRlb0RpbWVuc2lvbnNDaGFuZ2VkKGNvbnN0IEZsb2F0U2l6
ZSYgdmlkZW9EaW1lbnNpb25zKQogewogICAgIGlmIChXZWJUaHJlYWRJc0N1cnJlbnQoKSkgewog
ICAgICAgICBSZWZQdHI8V2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlckNvbnRleHQ+IHByb3Rl
Y3RlZFRoaXModGhpcyk7Ci0gICAgICAgIGRpc3BhdGNoX2FzeW5jKGRpc3BhdGNoX2dldF9tYWlu
X3F1ZXVlKCksIFtwcm90ZWN0ZWRUaGlzLCB0aGlzLCBoYXNWaWRlbywgd2lkdGgsIGhlaWdodF0g
ewotICAgICAgICAgICAgaWYgKG1faW50ZXJmYWNlKQotICAgICAgICAgICAgICAgIG1faW50ZXJm
YWNlLT5zZXRWaWRlb0RpbWVuc2lvbnMoaGFzVmlkZW8sIHdpZHRoLCBoZWlnaHQpOworICAgICAg
ICBkaXNwYXRjaF9hc3luYyhkaXNwYXRjaF9nZXRfbWFpbl9xdWV1ZSgpLCBbcHJvdGVjdGVkVGhp
cywgdmlkZW9EaW1lbnNpb25zID0gdmlkZW9EaW1lbnNpb25zXSB7CisgICAgICAgICAgICBwcm90
ZWN0ZWRUaGlzLT52aWRlb0RpbWVuc2lvbnNDaGFuZ2VkKHZpZGVvRGltZW5zaW9ucyk7CiAgICAg
ICAgIH0pOwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgaWYgKG1faW50ZXJmYWNlKQot
ICAgICAgICBtX2ludGVyZmFjZS0+c2V0VmlkZW9EaW1lbnNpb25zKGhhc1ZpZGVvLCB3aWR0aCwg
aGVpZ2h0KTsKKyAgICBmb3IgKGF1dG8mIGNsaWVudCA6IG1fZnVsbHNjcmVlbkNsaWVudHMpCisg
ICAgICAgIGNsaWVudC0+dmlkZW9EaW1lbnNpb25zQ2hhbmdlZCh2aWRlb0RpbWVuc2lvbnMpOwog
fQogCi12b2lkIFdlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJDb250ZXh0OjpzZXRTZWVrYWJs
ZVJhbmdlcyhjb25zdCBUaW1lUmFuZ2VzJiB0aW1lUmFuZ2VzKQordm9pZCBXZWJWaWRlb0Z1bGxz
Y3JlZW5Db250cm9sbGVyQ29udGV4dDo6c2Vla2FibGVSYW5nZXNDaGFuZ2VkKGNvbnN0IFRpbWVS
YW5nZXMmIHRpbWVSYW5nZXMpCiB7Ci0gICAgQVNTRVJUKFdlYlRocmVhZElzQ3VycmVudCgpKTsK
LSAgICBSZWZQdHI8V2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlckNvbnRleHQ+IHByb3RlY3Rl
ZFRoaXModGhpcyk7Ci0gICAgY29uc3QgUGxhdGZvcm1UaW1lUmFuZ2VzJiBwbGF0Zm9ybVRpbWVS
YW5nZXMgPSB0aW1lUmFuZ2VzLnJhbmdlcygpOwotICAgIGRpc3BhdGNoX2FzeW5jKGRpc3BhdGNo
X2dldF9tYWluX3F1ZXVlKCksIFtwcm90ZWN0ZWRUaGlzLCB0aGlzLCBwbGF0Zm9ybVRpbWVSYW5n
ZXNdIHsKLSAgICAgICAgaWYgKG1faW50ZXJmYWNlKQotICAgICAgICAgICAgbV9pbnRlcmZhY2Ut
PnNldFNlZWthYmxlUmFuZ2VzKFRpbWVSYW5nZXM6OmNyZWF0ZShwbGF0Zm9ybVRpbWVSYW5nZXMp
KTsKLSAgICB9KTsKKyAgICBpZiAoV2ViVGhyZWFkSXNDdXJyZW50KCkpIHsKKyAgICAgICAgUmVm
UHRyPFdlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJDb250ZXh0PiBwcm90ZWN0ZWRUaGlzKHRo
aXMpOworICAgICAgICBkaXNwYXRjaF9hc3luYyhkaXNwYXRjaF9nZXRfbWFpbl9xdWV1ZSgpLCBb
cHJvdGVjdGVkVGhpcywgcGxhdGZvcm1UaW1lUmFuZ2VzID0gdGltZVJhbmdlcy5yYW5nZXMoKV0g
eworICAgICAgICAgICAgcHJvdGVjdGVkVGhpcy0+c2Vla2FibGVSYW5nZXNDaGFuZ2VkKFRpbWVS
YW5nZXM6OmNyZWF0ZShwbGF0Zm9ybVRpbWVSYW5nZXMpKTsKKyAgICAgICAgfSk7CisgICAgICAg
IHJldHVybjsKKyAgICB9CisKKyAgICBmb3IgKGF1dG8gJmNsaWVudCA6IG1fcGxheWJhY2tDbGll
bnRzKQorICAgICAgICBjbGllbnQtPnNlZWthYmxlUmFuZ2VzQ2hhbmdlZCh0aW1lUmFuZ2VzKTsK
IH0KIAotdm9pZCBXZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyQ29udGV4dDo6c2V0Q2FuUGxh
eUZhc3RSZXZlcnNlKGJvb2wgY2FuUGxheUZhc3RSZXZlcnNlKQordm9pZCBXZWJWaWRlb0Z1bGxz
Y3JlZW5Db250cm9sbGVyQ29udGV4dDo6Y2FuUGxheUZhc3RSZXZlcnNlQ2hhbmdlZChib29sIGNh
blBsYXlGYXN0UmV2ZXJzZSkKIHsKLSAgICBBU1NFUlQoV2ViVGhyZWFkSXNDdXJyZW50KCkpOwot
ICAgIFJlZlB0cjxXZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyQ29udGV4dD4gcHJvdGVjdGVk
VGhpcyh0aGlzKTsKLSAgICBkaXNwYXRjaF9hc3luYyhkaXNwYXRjaF9nZXRfbWFpbl9xdWV1ZSgp
LCBbcHJvdGVjdGVkVGhpcywgdGhpcywgY2FuUGxheUZhc3RSZXZlcnNlXSB7Ci0gICAgICAgIGlm
IChtX2ludGVyZmFjZSkKLSAgICAgICAgICAgIG1faW50ZXJmYWNlLT5zZXRDYW5QbGF5RmFzdFJl
dmVyc2UoY2FuUGxheUZhc3RSZXZlcnNlKTsKLSAgICB9KTsKKyAgICBpZiAoV2ViVGhyZWFkSXND
dXJyZW50KCkpIHsKKyAgICAgICAgUmVmUHRyPFdlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJD
b250ZXh0PiBwcm90ZWN0ZWRUaGlzKHRoaXMpOworICAgICAgICBkaXNwYXRjaF9hc3luYyhkaXNw
YXRjaF9nZXRfbWFpbl9xdWV1ZSgpLCBbcHJvdGVjdGVkVGhpcywgY2FuUGxheUZhc3RSZXZlcnNl
XSB7CisgICAgICAgICAgICBwcm90ZWN0ZWRUaGlzLT5jYW5QbGF5RmFzdFJldmVyc2VDaGFuZ2Vk
KGNhblBsYXlGYXN0UmV2ZXJzZSk7CisgICAgICAgIH0pOworICAgICAgICByZXR1cm47CisgICAg
fQorCisgICAgZm9yIChhdXRvICZjbGllbnQgOiBtX3BsYXliYWNrQ2xpZW50cykKKyAgICAgICAg
Y2xpZW50LT5jYW5QbGF5RmFzdFJldmVyc2VDaGFuZ2VkKGNhblBsYXlGYXN0UmV2ZXJzZSk7CiB9
CiAKLXZvaWQgV2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlckNvbnRleHQ6OnNldEF1ZGlvTWVk
aWFTZWxlY3Rpb25PcHRpb25zKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBvcHRpb25zLCB1aW50NjRf
dCBzZWxlY3RlZEluZGV4KQordm9pZCBXZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyQ29udGV4
dDo6YXVkaW9NZWRpYVNlbGVjdGlvbk9wdGlvbnNDaGFuZ2VkKGNvbnN0IFZlY3RvcjxTdHJpbmc+
JiBvcHRpb25zLCB1aW50NjRfdCBzZWxlY3RlZEluZGV4KQogewotICAgIEFTU0VSVChXZWJUaHJl
YWRJc0N1cnJlbnQoKSk7Ci0gICAgUmVmUHRyPFdlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJD
b250ZXh0PiBwcm90ZWN0ZWRUaGlzKHRoaXMpOworICAgIGlmIChXZWJUaHJlYWRJc0N1cnJlbnQo
KSkgeworICAgICAgICBSZWZQdHI8V2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlckNvbnRleHQ+
IHByb3RlY3RlZFRoaXModGhpcyk7CisgICAgICAgIGRpc3BhdGNoX2FzeW5jKGRpc3BhdGNoX2dl
dF9tYWluX3F1ZXVlKCksIFtwcm90ZWN0ZWRUaGlzLCBvcHRpb25zID0gb3B0aW9ucywgc2VsZWN0
ZWRJbmRleF0geworICAgICAgICAgICAgcHJvdGVjdGVkVGhpcy0+YXVkaW9NZWRpYVNlbGVjdGlv
bk9wdGlvbnNDaGFuZ2VkKG9wdGlvbnMsIHNlbGVjdGVkSW5kZXgpOworICAgICAgICB9KTsKKyAg
ICAgICAgcmV0dXJuOworICAgIH0KIAotICAgIFJldGFpblB0cjxOU011dGFibGVBcnJheT4gb3B0
aW9uc0FycmF5ID0gYWRvcHROUyhbW05TTXV0YWJsZUFycmF5IGFsbG9jXSBpbml0V2l0aENhcGFj
aXR5Om9wdGlvbnMuc2l6ZSgpXSk7Ci0gICAgZm9yIChhdXRvJiBuYW1lIDogb3B0aW9ucykKLSAg
ICAgICAgW29wdGlvbnNBcnJheSBhZGRPYmplY3Q6bmFtZV07Ci0gICAgCi0gICAgZGlzcGF0Y2hf
YXN5bmMoZGlzcGF0Y2hfZ2V0X21haW5fcXVldWUoKSwgW3Byb3RlY3RlZFRoaXMsIHRoaXMsIG9w
dGlvbnNBcnJheSwgc2VsZWN0ZWRJbmRleF0gewotICAgICAgICBWZWN0b3I8U3RyaW5nPiBvcHRp
b25zOwotICAgICAgICBmb3IgKE5TU3RyaW5nICpuYW1lIDogb3B0aW9uc0FycmF5LmdldCgpKQot
ICAgICAgICAgICAgb3B0aW9ucy5hcHBlbmQobmFtZSk7Ci0gICAgICAgIAotICAgICAgICBpZiAo
bV9pbnRlcmZhY2UpCi0gICAgICAgICAgICBtX2ludGVyZmFjZS0+c2V0QXVkaW9NZWRpYVNlbGVj
dGlvbk9wdGlvbnMob3B0aW9ucywgc2VsZWN0ZWRJbmRleCk7Ci0gICAgfSk7CisgICAgZm9yIChh
dXRvJiBjbGllbnQgOiBtX3BsYXliYWNrQ2xpZW50cykKKyAgICAgICAgY2xpZW50LT5hdWRpb01l
ZGlhU2VsZWN0aW9uT3B0aW9uc0NoYW5nZWQob3B0aW9ucywgc2VsZWN0ZWRJbmRleCk7CiB9CiAK
LXZvaWQgV2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlckNvbnRleHQ6OnNldExlZ2libGVNZWRp
YVNlbGVjdGlvbk9wdGlvbnMoY29uc3QgVmVjdG9yPFN0cmluZz4mIG9wdGlvbnMsIHVpbnQ2NF90
IHNlbGVjdGVkSW5kZXgpCit2b2lkIFdlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJDb250ZXh0
OjpsZWdpYmxlTWVkaWFTZWxlY3Rpb25PcHRpb25zQ2hhbmdlZChjb25zdCBWZWN0b3I8U3RyaW5n
PiYgb3B0aW9ucywgdWludDY0X3Qgc2VsZWN0ZWRJbmRleCkKIHsKLSAgICBBU1NFUlQoV2ViVGhy
ZWFkSXNDdXJyZW50KCkpOwotICAgIFJlZlB0cjxXZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVy
Q29udGV4dD4gcHJvdGVjdGVkVGhpcyh0aGlzKTsKLSAgICAKLSAgICBSZXRhaW5QdHI8TlNNdXRh
YmxlQXJyYXk+IG9wdGlvbnNBcnJheSA9IGFkb3B0TlMoW1tOU011dGFibGVBcnJheSBhbGxvY10g
aW5pdFdpdGhDYXBhY2l0eTpvcHRpb25zLnNpemUoKV0pOwotICAgIGZvciAoYXV0byYgbmFtZSA6
IG9wdGlvbnMpCi0gICAgICAgIFtvcHRpb25zQXJyYXkgYWRkT2JqZWN0Om5hbWVdOwotICAgIAot
ICAgIGRpc3BhdGNoX2FzeW5jKGRpc3BhdGNoX2dldF9tYWluX3F1ZXVlKCksIFtwcm90ZWN0ZWRU
aGlzLCB0aGlzLCBvcHRpb25zQXJyYXksIHNlbGVjdGVkSW5kZXhdIHsKLSAgICAgICAgVmVjdG9y
PFN0cmluZz4gb3B0aW9uczsKLSAgICAgICAgZm9yIChOU1N0cmluZyAqbmFtZSA6IG9wdGlvbnNB
cnJheS5nZXQoKSkKLSAgICAgICAgICAgIG9wdGlvbnMuYXBwZW5kKG5hbWUpOwotICAgICAgICAK
LSAgICAgICAgaWYgKG1faW50ZXJmYWNlKQotICAgICAgICAgICAgbV9pbnRlcmZhY2UtPnNldExl
Z2libGVNZWRpYVNlbGVjdGlvbk9wdGlvbnMob3B0aW9ucywgc2VsZWN0ZWRJbmRleCk7Ci0gICAg
fSk7CisgICAgaWYgKFdlYlRocmVhZElzQ3VycmVudCgpKSB7CisgICAgICAgIFJlZlB0cjxXZWJW
aWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyQ29udGV4dD4gcHJvdGVjdGVkVGhpcyh0aGlzKTsKKyAg
ICAgICAgZGlzcGF0Y2hfYXN5bmMoZGlzcGF0Y2hfZ2V0X21haW5fcXVldWUoKSwgW3Byb3RlY3Rl
ZFRoaXMsIG9wdGlvbnMgPSBvcHRpb25zLCBzZWxlY3RlZEluZGV4XSB7CisgICAgICAgICAgICBw
cm90ZWN0ZWRUaGlzLT5sZWdpYmxlTWVkaWFTZWxlY3Rpb25PcHRpb25zQ2hhbmdlZChvcHRpb25z
LCBzZWxlY3RlZEluZGV4KTsKKyAgICAgICAgfSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisK
KyAgICBmb3IgKGF1dG8mIGNsaWVudCA6IG1fcGxheWJhY2tDbGllbnRzKQorICAgICAgICBjbGll
bnQtPmxlZ2libGVNZWRpYVNlbGVjdGlvbk9wdGlvbnNDaGFuZ2VkKG9wdGlvbnMsIHNlbGVjdGVk
SW5kZXgpOwogfQogCi12b2lkIFdlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJDb250ZXh0Ojpz
ZXRFeHRlcm5hbFBsYXliYWNrKGJvb2wgZW5hYmxlZCwgRXh0ZXJuYWxQbGF5YmFja1RhcmdldFR5
cGUgdHlwZSwgU3RyaW5nIGxvY2FsaXplZERldmljZU5hbWUpCit2b2lkIFdlYlZpZGVvRnVsbHNj
cmVlbkNvbnRyb2xsZXJDb250ZXh0OjpleHRlcm5hbFBsYXliYWNrQ2hhbmdlZChib29sIGVuYWJs
ZWQsIFdlYlBsYXliYWNrU2Vzc2lvbk1vZGVsOjpFeHRlcm5hbFBsYXliYWNrVGFyZ2V0VHlwZSB0
eXBlLCBjb25zdCBTdHJpbmcmIGxvY2FsaXplZERldmljZU5hbWUpCiB7Ci0gICAgQVNTRVJUKFdl
YlRocmVhZElzQ3VycmVudCgpKTsKLSAgICBjYWxsT25NYWluVGhyZWFkKFtwcm90ZWN0ZWRUaGlz
ID0gUmVmPFdlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJDb250ZXh0PigqdGhpcyksIHRoaXMs
IGVuYWJsZWQsIHR5cGUsIGxvY2FsaXplZERldmljZU5hbWUgPSBsb2NhbGl6ZWREZXZpY2VOYW1l
Lmlzb2xhdGVkQ29weSgpXSB7Ci0gICAgICAgIGlmIChtX2ludGVyZmFjZSkKLSAgICAgICAgICAg
IG1faW50ZXJmYWNlLT5zZXRFeHRlcm5hbFBsYXliYWNrKGVuYWJsZWQsIHR5cGUsIGxvY2FsaXpl
ZERldmljZU5hbWUpOwotICAgIH0pOworICAgIGlmIChXZWJUaHJlYWRJc0N1cnJlbnQoKSkgewor
ICAgICAgICBjYWxsT25NYWluVGhyZWFkKFtwcm90ZWN0ZWRUaGlzID0gUmVmPFdlYlZpZGVvRnVs
bHNjcmVlbkNvbnRyb2xsZXJDb250ZXh0PigqdGhpcyksIHRoaXMsIGVuYWJsZWQsIHR5cGUsIGxv
Y2FsaXplZERldmljZU5hbWUgPSBsb2NhbGl6ZWREZXZpY2VOYW1lLmlzb2xhdGVkQ29weSgpXSB7
CisgICAgICAgICAgICBmb3IgKGF1dG8mIGNsaWVudCA6IG1fcGxheWJhY2tDbGllbnRzKQorICAg
ICAgICAgICAgICAgIGNsaWVudC0+ZXh0ZXJuYWxQbGF5YmFja0NoYW5nZWQoZW5hYmxlZCwgdHlw
ZSwgbG9jYWxpemVkRGV2aWNlTmFtZSk7CisgICAgICAgIH0pOworICAgICAgICByZXR1cm47Cisg
ICAgfQorCisgICAgZm9yIChhdXRvJiBjbGllbnQgOiBtX3BsYXliYWNrQ2xpZW50cykKKyAgICAg
ICAgY2xpZW50LT5leHRlcm5hbFBsYXliYWNrQ2hhbmdlZChlbmFibGVkLCB0eXBlLCBsb2NhbGl6
ZWREZXZpY2VOYW1lKTsKIH0KIAotdm9pZCBXZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyQ29u
dGV4dDo6c2V0V2lyZWxlc3NWaWRlb1BsYXliYWNrRGlzYWJsZWQoYm9vbCBkaXNhYmxlZCkKK3Zv
aWQgV2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlckNvbnRleHQ6OndpcmVsZXNzVmlkZW9QbGF5
YmFja0Rpc2FibGVkQ2hhbmdlZChib29sIGRpc2FibGVkKQogewotICAgIEFTU0VSVChXZWJUaHJl
YWRJc0N1cnJlbnQoKSk7Ci0gICAgUmVmUHRyPFdlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJD
b250ZXh0PiBwcm90ZWN0ZWRUaGlzKHRoaXMpOwotICAgIGRpc3BhdGNoX2FzeW5jKGRpc3BhdGNo
X2dldF9tYWluX3F1ZXVlKCksIFtwcm90ZWN0ZWRUaGlzLCB0aGlzLCBkaXNhYmxlZF0gewotICAg
ICAgICBpZiAobV9pbnRlcmZhY2UpCi0gICAgICAgICAgICBtX2ludGVyZmFjZS0+c2V0V2lyZWxl
c3NWaWRlb1BsYXliYWNrRGlzYWJsZWQoZGlzYWJsZWQpOwotICAgIH0pOworICAgIGlmIChXZWJU
aHJlYWRJc0N1cnJlbnQoKSkgeworICAgICAgICBSZWZQdHI8V2ViVmlkZW9GdWxsc2NyZWVuQ29u
dHJvbGxlckNvbnRleHQ+IHByb3RlY3RlZFRoaXModGhpcyk7CisgICAgICAgIGRpc3BhdGNoX2Fz
eW5jKGRpc3BhdGNoX2dldF9tYWluX3F1ZXVlKCksIFtwcm90ZWN0ZWRUaGlzLCBkaXNhYmxlZF0g
eworICAgICAgICAgICAgcHJvdGVjdGVkVGhpcy0+d2lyZWxlc3NWaWRlb1BsYXliYWNrRGlzYWJs
ZWRDaGFuZ2VkKGRpc2FibGVkKTsKKyAgICAgICAgfSk7CisgICAgICAgIHJldHVybjsKKyAgICB9
CisKKyAgICBmb3IgKGF1dG8mIGNsaWVudCA6IG1fcGxheWJhY2tDbGllbnRzKQorICAgICAgICBj
bGllbnQtPndpcmVsZXNzVmlkZW9QbGF5YmFja0Rpc2FibGVkQ2hhbmdlZChkaXNhYmxlZCk7CiB9
CiAKICNwcmFnbWEgbWFyayBXZWJWaWRlb0Z1bGxzY3JlZW5Nb2RlbAogCit2b2lkIFdlYlZpZGVv
RnVsbHNjcmVlbkNvbnRyb2xsZXJDb250ZXh0OjphZGRDbGllbnQoV2ViVmlkZW9GdWxsc2NyZWVu
TW9kZWxDbGllbnQmIGNsaWVudCkKK3sKKyAgICBBU1NFUlQoIW1fZnVsbHNjcmVlbkNsaWVudHMu
Y29udGFpbnMoJmNsaWVudCkpOworICAgIG1fZnVsbHNjcmVlbkNsaWVudHMuYWRkKCZjbGllbnQp
OworfQorCit2b2lkIFdlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJDb250ZXh0OjpyZW1vdmVD
bGllbnQoV2ViVmlkZW9GdWxsc2NyZWVuTW9kZWxDbGllbnQmIGNsaWVudCkKK3sKKyAgICBBU1NF
UlQobV9mdWxsc2NyZWVuQ2xpZW50cy5jb250YWlucygmY2xpZW50KSk7CisgICAgbV9mdWxsc2Ny
ZWVuQ2xpZW50cy5yZW1vdmUoJmNsaWVudCk7Cit9CisKIHZvaWQgV2ViVmlkZW9GdWxsc2NyZWVu
Q29udHJvbGxlckNvbnRleHQ6OnJlcXVlc3RGdWxsc2NyZWVuTW9kZShIVE1MTWVkaWFFbGVtZW50
RW51bXM6OlZpZGVvRnVsbHNjcmVlbk1vZGUgbW9kZSkKIHsKICAgICBBU1NFUlQoaXNVSVRocmVh
ZCgpKTsKICAgICBSZWZQdHI8V2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlckNvbnRleHQ+IHBy
b3RlY3RlZFRoaXModGhpcyk7CiAgICAgV2ViVGhyZWFkUnVuKFtwcm90ZWN0ZWRUaGlzLCB0aGlz
LCBtb2RlXSB7Ci0gICAgICAgIGlmIChtX21vZGVsKQotICAgICAgICAgICAgbV9tb2RlbC0+cmVx
dWVzdEZ1bGxzY3JlZW5Nb2RlKG1vZGUpOworICAgICAgICBpZiAobV9mdWxsc2NyZWVuTW9kZWwp
CisgICAgICAgICAgICBtX2Z1bGxzY3JlZW5Nb2RlbC0+cmVxdWVzdEZ1bGxzY3JlZW5Nb2RlKG1v
ZGUpOwogICAgIH0pOwogfQogCkBAIC00NzksOCArNDY4LDggQEAgdm9pZCBXZWJWaWRlb0Z1bGxz
Y3JlZW5Db250cm9sbGVyQ29udGV4dDo6c2V0VmlkZW9MYXllckZyYW1lKEZsb2F0UmVjdCBmcmFt
ZSkKICAgICAgICAgICAgIAogICAgICAgICAgICAgW3ZpZGVvRnVsbHNjcmVlbkxheWVyIHNldFN1
YmxheWVyVHJhbnNmb3JtOkNBVHJhbnNmb3JtM0RJZGVudGl0eV07CiAgICAgICAgICAgICAKLSAg
ICAgICAgICAgIGlmIChtX21vZGVsKQotICAgICAgICAgICAgICAgIG1fbW9kZWwtPnNldFZpZGVv
TGF5ZXJGcmFtZShmcmFtZSk7CisgICAgICAgICAgICBpZiAobV9mdWxsc2NyZWVuTW9kZWwpCisg
ICAgICAgICAgICAgICAgbV9mdWxsc2NyZWVuTW9kZWwtPnNldFZpZGVvTGF5ZXJGcmFtZShmcmFt
ZSk7CiAgICAgICAgICAgICBbQ0FUcmFuc2FjdGlvbiBjb21taXRdOwogICAgICAgICB9KTsKICAg
ICB9KTsKQEAgLTQ5MSw4ICs0ODAsOCBAQCB2b2lkIFdlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xs
ZXJDb250ZXh0OjpzZXRWaWRlb0xheWVyR3Jhdml0eShXZWJWaWRlb0Z1bGxzY3JlZQogICAgIEFT
U0VSVChpc1VJVGhyZWFkKCkpOwogICAgIFJlZlB0cjxXZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9s
bGVyQ29udGV4dD4gcHJvdGVjdGVkVGhpcyh0aGlzKTsKICAgICBXZWJUaHJlYWRSdW4oW3Byb3Rl
Y3RlZFRoaXMsIHRoaXMsIHZpZGVvR3Jhdml0eV0gewotICAgICAgICBpZiAobV9tb2RlbCkKLSAg
ICAgICAgICAgIG1fbW9kZWwtPnNldFZpZGVvTGF5ZXJHcmF2aXR5KHZpZGVvR3Jhdml0eSk7Cisg
ICAgICAgIGlmIChtX2Z1bGxzY3JlZW5Nb2RlbCkKKyAgICAgICAgICAgIG1fZnVsbHNjcmVlbk1v
ZGVsLT5zZXRWaWRlb0xheWVyR3Jhdml0eSh2aWRlb0dyYXZpdHkpOwogICAgIH0pOwogfQogCkBA
IC01MDEsMjYgKzQ5MCw1MCBAQCB2b2lkIFdlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJDb250
ZXh0OjpmdWxsc2NyZWVuTW9kZUNoYW5nZWQoSFRNTE1lZGlhRWxlbWVudAogICAgIEFTU0VSVChp
c1VJVGhyZWFkKCkpOwogICAgIFJlZlB0cjxXZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyQ29u
dGV4dD4gcHJvdGVjdGVkVGhpcyh0aGlzKTsKICAgICBXZWJUaHJlYWRSdW4oW3Byb3RlY3RlZFRo
aXMsIHRoaXMsIG1vZGVdIHsKLSAgICAgICAgaWYgKG1fbW9kZWwpCi0gICAgICAgICAgICBtX21v
ZGVsLT5mdWxsc2NyZWVuTW9kZUNoYW5nZWQobW9kZSk7CisgICAgICAgIGlmIChtX2Z1bGxzY3Jl
ZW5Nb2RlbCkKKyAgICAgICAgICAgIG1fZnVsbHNjcmVlbk1vZGVsLT5mdWxsc2NyZWVuTW9kZUNo
YW5nZWQobW9kZSk7CiAgICAgfSk7CiB9CiAKIGJvb2wgV2ViVmlkZW9GdWxsc2NyZWVuQ29udHJv
bGxlckNvbnRleHQ6OmlzVmlzaWJsZSgpIGNvbnN0CiB7CiAgICAgQVNTRVJUKGlzVUlUaHJlYWQo
KSk7Ci0gICAgcmV0dXJuIG1fbW9kZWwgPyBtX21vZGVsLT5pc1Zpc2libGUoKSA6IGZhbHNlOwor
ICAgIHJldHVybiBtX2Z1bGxzY3JlZW5Nb2RlbCA/IG1fZnVsbHNjcmVlbk1vZGVsLT5pc1Zpc2li
bGUoKSA6IGZhbHNlOworfQorCitib29sIFdlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJDb250
ZXh0OjpoYXNWaWRlbygpIGNvbnN0Cit7CisgICAgQVNTRVJUKGlzVUlUaHJlYWQoKSk7CisgICAg
cmV0dXJuIG1fZnVsbHNjcmVlbk1vZGVsID8gbV9mdWxsc2NyZWVuTW9kZWwtPmhhc1ZpZGVvKCkg
OiBmYWxzZTsKK30KKworRmxvYXRTaXplIFdlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJDb250
ZXh0Ojp2aWRlb0RpbWVuc2lvbnMoKSBjb25zdAoreworICAgIEFTU0VSVChpc1VJVGhyZWFkKCkp
OworICAgIHJldHVybiBtX2Z1bGxzY3JlZW5Nb2RlbCA/IG1fZnVsbHNjcmVlbk1vZGVsLT52aWRl
b0RpbWVuc2lvbnMoKSA6IEZsb2F0U2l6ZSgpOworfQorCisjcHJhZ21hIG1hcmsgLSBXZWJQbGF5
YmFja1Nlc3Npb25Nb2RlbAorCit2b2lkIFdlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJDb250
ZXh0OjphZGRDbGllbnQoV2ViUGxheWJhY2tTZXNzaW9uTW9kZWxDbGllbnQmIGNsaWVudCkKK3sK
KyAgICBBU1NFUlQoIW1fcGxheWJhY2tDbGllbnRzLmNvbnRhaW5zKCZjbGllbnQpKTsKKyAgICBt
X3BsYXliYWNrQ2xpZW50cy5hZGQoJmNsaWVudCk7CiB9CiAKLSNwcmFnbWEgbWFyayAtIFdlYlBs
YXliYWNrU2Vzc2lvbk1vZGVsQ29udGV4dAordm9pZCBXZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9s
bGVyQ29udGV4dDo6cmVtb3ZlQ2xpZW50KFdlYlBsYXliYWNrU2Vzc2lvbk1vZGVsQ2xpZW50JiBj
bGllbnQpCit7CisgICAgQVNTRVJUKG1fcGxheWJhY2tDbGllbnRzLmNvbnRhaW5zKCZjbGllbnQp
KTsKKyAgICBtX3BsYXliYWNrQ2xpZW50cy5yZW1vdmUoJmNsaWVudCk7Cit9CiAKIHZvaWQgV2Vi
VmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlckNvbnRleHQ6OnBsYXkoKQogewogICAgIEFTU0VSVChp
c1VJVGhyZWFkKCkpOwogICAgIFJlZlB0cjxXZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyQ29u
dGV4dD4gcHJvdGVjdGVkVGhpcyh0aGlzKTsKICAgICBXZWJUaHJlYWRSdW4oW3Byb3RlY3RlZFRo
aXMsIHRoaXNdIHsKLSAgICAgICAgaWYgKG1fbW9kZWwpCi0gICAgICAgICAgICBtX21vZGVsLT5w
bGF5YmFja1Nlc3Npb25Nb2RlbCgpLnBsYXkoKTsKKyAgICAgICAgaWYgKG1fcGxheWJhY2tNb2Rl
bCkKKyAgICAgICAgICAgIG1fcGxheWJhY2tNb2RlbC0+cGxheSgpOwogICAgIH0pOwogfQogCkBA
IC01MjksOCArNTQyLDggQEAgdm9pZCBXZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyQ29udGV4
dDo6cGF1c2UoKQogICAgIEFTU0VSVChpc1VJVGhyZWFkKCkpOwogICAgIFJlZlB0cjxXZWJWaWRl
b0Z1bGxzY3JlZW5Db250cm9sbGVyQ29udGV4dD4gcHJvdGVjdGVkVGhpcyh0aGlzKTsKICAgICBX
ZWJUaHJlYWRSdW4oW3Byb3RlY3RlZFRoaXMsIHRoaXNdIHsKLSAgICAgICAgaWYgKG1fbW9kZWwp
Ci0gICAgICAgICAgICBtX21vZGVsLT5wbGF5YmFja1Nlc3Npb25Nb2RlbCgpLnBhdXNlKCk7Cisg
ICAgICAgIGlmIChtX3BsYXliYWNrTW9kZWwpCisgICAgICAgICAgICBtX3BsYXliYWNrTW9kZWwt
PnBhdXNlKCk7CiAgICAgfSk7CiB9CiAKQEAgLTUzOSw4ICs1NTIsOCBAQCB2b2lkIFdlYlZpZGVv
RnVsbHNjcmVlbkNvbnRyb2xsZXJDb250ZXh0Ojp0b2dnbGVQbGF5U3RhdGUoKQogICAgIEFTU0VS
VChpc1VJVGhyZWFkKCkpOwogICAgIFJlZlB0cjxXZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVy
Q29udGV4dD4gcHJvdGVjdGVkVGhpcyh0aGlzKTsKICAgICBXZWJUaHJlYWRSdW4oW3Byb3RlY3Rl
ZFRoaXMsIHRoaXNdIHsKLSAgICAgICAgaWYgKG1fbW9kZWwpCi0gICAgICAgICAgICBtX21vZGVs
LT5wbGF5YmFja1Nlc3Npb25Nb2RlbCgpLnRvZ2dsZVBsYXlTdGF0ZSgpOworICAgICAgICBpZiAo
bV9wbGF5YmFja01vZGVsKQorICAgICAgICAgICAgbV9wbGF5YmFja01vZGVsLT50b2dnbGVQbGF5
U3RhdGUoKTsKICAgICB9KTsKIH0KIApAQCAtNTQ5LDggKzU2Miw4IEBAIHZvaWQgV2ViVmlkZW9G
dWxsc2NyZWVuQ29udHJvbGxlckNvbnRleHQ6OmJlZ2luU2NydWJiaW5nKCkKICAgICBBU1NFUlQo
aXNVSVRocmVhZCgpKTsKICAgICBSZWZQdHI8V2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlckNv
bnRleHQ+IHByb3RlY3RlZFRoaXModGhpcyk7CiAgICAgV2ViVGhyZWFkUnVuKFtwcm90ZWN0ZWRU
aGlzLCB0aGlzXSB7Ci0gICAgICAgIGlmIChtX21vZGVsKQotICAgICAgICAgICAgbV9tb2RlbC0+
cGxheWJhY2tTZXNzaW9uTW9kZWwoKS5iZWdpblNjcnViYmluZygpOworICAgICAgICBpZiAobV9w
bGF5YmFja01vZGVsKQorICAgICAgICAgICAgbV9wbGF5YmFja01vZGVsLT5iZWdpblNjcnViYmlu
ZygpOwogICAgIH0pOwogfQogCkBAIC01NTksOCArNTcyLDggQEAgdm9pZCBXZWJWaWRlb0Z1bGxz
Y3JlZW5Db250cm9sbGVyQ29udGV4dDo6ZW5kU2NydWJiaW5nKCkKICAgICBBU1NFUlQoaXNVSVRo
cmVhZCgpKTsKICAgICBSZWZQdHI8V2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlckNvbnRleHQ+
IHByb3RlY3RlZFRoaXModGhpcyk7CiAgICAgV2ViVGhyZWFkUnVuKFtwcm90ZWN0ZWRUaGlzLCB0
aGlzXSB7Ci0gICAgICAgIGlmIChtX21vZGVsKQotICAgICAgICAgICAgbV9tb2RlbC0+cGxheWJh
Y2tTZXNzaW9uTW9kZWwoKS5lbmRTY3J1YmJpbmcoKTsKKyAgICAgICAgaWYgKG1fcGxheWJhY2tN
b2RlbCkKKyAgICAgICAgICAgIG1fcGxheWJhY2tNb2RlbC0+ZW5kU2NydWJiaW5nKCk7CiAgICAg
fSk7CiB9CiAKQEAgLTU2OSw4ICs1ODIsOCBAQCB2b2lkIFdlYlZpZGVvRnVsbHNjcmVlbkNvbnRy
b2xsZXJDb250ZXh0OjpzZWVrVG9UaW1lKGRvdWJsZSB0aW1lKQogICAgIEFTU0VSVChpc1VJVGhy
ZWFkKCkpOwogICAgIFJlZlB0cjxXZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyQ29udGV4dD4g
cHJvdGVjdGVkVGhpcyh0aGlzKTsKICAgICBXZWJUaHJlYWRSdW4oW3Byb3RlY3RlZFRoaXMsIHRo
aXMsIHRpbWVdIHsKLSAgICAgICAgaWYgKG1fbW9kZWwpCi0gICAgICAgICAgICBtX21vZGVsLT5w
bGF5YmFja1Nlc3Npb25Nb2RlbCgpLnNlZWtUb1RpbWUodGltZSk7CisgICAgICAgIGlmIChtX3Bs
YXliYWNrTW9kZWwpCisgICAgICAgICAgICBtX3BsYXliYWNrTW9kZWwtPnNlZWtUb1RpbWUodGlt
ZSk7CiAgICAgfSk7CiB9CiAKQEAgLTU3OSw4ICs1OTIsOCBAQCB2b2lkIFdlYlZpZGVvRnVsbHNj
cmVlbkNvbnRyb2xsZXJDb250ZXh0OjpmYXN0U2Vlayhkb3VibGUgdGltZSkKICAgICBBU1NFUlQo
aXNVSVRocmVhZCgpKTsKICAgICBSZWZQdHI8V2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlckNv
bnRleHQ+IHByb3RlY3RlZFRoaXModGhpcyk7CiAgICAgV2ViVGhyZWFkUnVuKFtwcm90ZWN0ZWRU
aGlzLCB0aGlzLCB0aW1lXSB7Ci0gICAgICAgIGlmIChtX21vZGVsKQotICAgICAgICAgICAgbV9t
b2RlbC0+cGxheWJhY2tTZXNzaW9uTW9kZWwoKS5mYXN0U2Vlayh0aW1lKTsKKyAgICAgICAgaWYg
KG1fcGxheWJhY2tNb2RlbCkKKyAgICAgICAgICAgIG1fcGxheWJhY2tNb2RlbC0+ZmFzdFNlZWso
dGltZSk7CiAgICAgfSk7CiB9CiAKQEAgLTU4OSw4ICs2MDIsOCBAQCB2b2lkIFdlYlZpZGVvRnVs
bHNjcmVlbkNvbnRyb2xsZXJDb250ZXh0OjpiZWdpblNjYW5uaW5nRm9yd2FyZCgpCiAgICAgQVNT
RVJUKGlzVUlUaHJlYWQoKSk7CiAgICAgUmVmUHRyPFdlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xs
ZXJDb250ZXh0PiBwcm90ZWN0ZWRUaGlzKHRoaXMpOwogICAgIFdlYlRocmVhZFJ1bihbcHJvdGVj
dGVkVGhpcywgdGhpc10gewotICAgICAgICBpZiAobV9tb2RlbCkKLSAgICAgICAgICAgIG1fbW9k
ZWwtPnBsYXliYWNrU2Vzc2lvbk1vZGVsKCkuYmVnaW5TY2FubmluZ0ZvcndhcmQoKTsKKyAgICAg
ICAgaWYgKG1fcGxheWJhY2tNb2RlbCkKKyAgICAgICAgICAgIG1fcGxheWJhY2tNb2RlbC0+YmVn
aW5TY2FubmluZ0ZvcndhcmQoKTsKICAgICB9KTsKIH0KIApAQCAtNTk5LDggKzYxMiw4IEBAIHZv
aWQgV2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlckNvbnRleHQ6OmJlZ2luU2Nhbm5pbmdCYWNr
d2FyZCgpCiAgICAgQVNTRVJUKGlzVUlUaHJlYWQoKSk7CiAgICAgUmVmUHRyPFdlYlZpZGVvRnVs
bHNjcmVlbkNvbnRyb2xsZXJDb250ZXh0PiBwcm90ZWN0ZWRUaGlzKHRoaXMpOwogICAgIFdlYlRo
cmVhZFJ1bihbcHJvdGVjdGVkVGhpcywgdGhpc10gewotICAgICAgICBpZiAobV9tb2RlbCkKLSAg
ICAgICAgICAgIG1fbW9kZWwtPnBsYXliYWNrU2Vzc2lvbk1vZGVsKCkuYmVnaW5TY2FubmluZ0Jh
Y2t3YXJkKCk7CisgICAgICAgIGlmIChtX3BsYXliYWNrTW9kZWwpCisgICAgICAgICAgICBtX3Bs
YXliYWNrTW9kZWwtPmJlZ2luU2Nhbm5pbmdCYWNrd2FyZCgpOwogICAgIH0pOwogfQogCkBAIC02
MDksOCArNjIyLDggQEAgdm9pZCBXZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyQ29udGV4dDo6
ZW5kU2Nhbm5pbmcoKQogICAgIEFTU0VSVChpc1VJVGhyZWFkKCkpOwogICAgIFJlZlB0cjxXZWJW
aWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyQ29udGV4dD4gcHJvdGVjdGVkVGhpcyh0aGlzKTsKICAg
ICBXZWJUaHJlYWRSdW4oW3Byb3RlY3RlZFRoaXMsIHRoaXNdIHsKLSAgICAgICAgaWYgKG1fbW9k
ZWwpCi0gICAgICAgICAgICBtX21vZGVsLT5wbGF5YmFja1Nlc3Npb25Nb2RlbCgpLmVuZFNjYW5u
aW5nKCk7CisgICAgICAgIGlmIChtX3BsYXliYWNrTW9kZWwpCisgICAgICAgICAgICBtX3BsYXli
YWNrTW9kZWwtPmVuZFNjYW5uaW5nKCk7CiAgICAgfSk7CiB9CiAKQEAgLTYxOSw4ICs2MzIsOCBA
QCB2b2lkIFdlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJDb250ZXh0OjpzZWxlY3RBdWRpb01l
ZGlhT3B0aW9uKHVpbnQ2NF90IGluZGV4KQogICAgIEFTU0VSVChpc1VJVGhyZWFkKCkpOwogICAg
IFJlZlB0cjxXZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyQ29udGV4dD4gcHJvdGVjdGVkVGhp
cyh0aGlzKTsKICAgICBXZWJUaHJlYWRSdW4oW3Byb3RlY3RlZFRoaXMsIHRoaXMsIGluZGV4XSB7
Ci0gICAgICAgIGlmIChtX21vZGVsKQotICAgICAgICAgICAgbV9tb2RlbC0+cGxheWJhY2tTZXNz
aW9uTW9kZWwoKS5zZWxlY3RBdWRpb01lZGlhT3B0aW9uKGluZGV4KTsKKyAgICAgICAgaWYgKG1f
cGxheWJhY2tNb2RlbCkKKyAgICAgICAgICAgIG1fcGxheWJhY2tNb2RlbC0+c2VsZWN0QXVkaW9N
ZWRpYU9wdGlvbihpbmRleCk7CiAgICAgfSk7CiB9CiAKQEAgLTYyOSwxNDQgKzY0MiwxNTQgQEAg
dm9pZCBXZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyQ29udGV4dDo6c2VsZWN0TGVnaWJsZU1l
ZGlhT3B0aW9uKHVpbnQ2NF90IGluZGUKICAgICBBU1NFUlQoaXNVSVRocmVhZCgpKTsKICAgICBS
ZWZQdHI8V2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlckNvbnRleHQ+IHByb3RlY3RlZFRoaXMo
dGhpcyk7CiAgICAgV2ViVGhyZWFkUnVuKFtwcm90ZWN0ZWRUaGlzLCB0aGlzLCBpbmRleF0gewot
ICAgICAgICBpZiAobV9tb2RlbCkKLSAgICAgICAgICAgIG1fbW9kZWwtPnBsYXliYWNrU2Vzc2lv
bk1vZGVsKCkuc2VsZWN0TGVnaWJsZU1lZGlhT3B0aW9uKGluZGV4KTsKKyAgICAgICAgaWYgKG1f
cGxheWJhY2tNb2RlbCkKKyAgICAgICAgICAgIG1fcGxheWJhY2tNb2RlbC0+c2VsZWN0TGVnaWJs
ZU1lZGlhT3B0aW9uKGluZGV4KTsKICAgICB9KTsKIH0KIAotI3ByYWdtYSBtYXJrIE90aGVyCi0K
LXZvaWQgV2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlckNvbnRleHQ6OnNldFVwRnVsbHNjcmVl
bihIVE1MVmlkZW9FbGVtZW50JiB2aWRlb0VsZW1lbnQsIFVJVmlldyAqdmlldywgSFRNTE1lZGlh
RWxlbWVudEVudW1zOjpWaWRlb0Z1bGxzY3JlZW5Nb2RlIG1vZGUpCitkb3VibGUgV2ViVmlkZW9G
dWxsc2NyZWVuQ29udHJvbGxlckNvbnRleHQ6OmR1cmF0aW9uKCkgY29uc3QKIHsKLSAgICBBU1NF
UlQoaXNNYWluVGhyZWFkKCkpOwotICAgIFJldGFpblB0cjxVSVZpZXc+IHZpZXdSZWYgPSB2aWV3
OwotICAgIG1fdmlkZW9FbGVtZW50ID0gJnZpZGVvRWxlbWVudDsKLQotICAgIFJlZlB0cjxXZWJW
aWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyQ29udGV4dD4gcHJvdGVjdGVkVGhpcyh0aGlzKTsKLSAg
ICBkaXNwYXRjaF9hc3luYyhkaXNwYXRjaF9nZXRfbWFpbl9xdWV1ZSgpLCBbcHJvdGVjdGVkVGhp
cywgdGhpcywgdmlld1JlZiwgbW9kZV0gewotICAgICAgICBBU1NFUlQoaXNVSVRocmVhZCgpKTsK
LQotICAgICAgICBSZWY8V2ViUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlQVZLaXQ+IHNlc3Npb25J
bnRlcmZhY2UgPSBXZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2VBVktpdDo6Y3JlYXRlKCk7Ci0g
ICAgICAgIG1faW50ZXJmYWNlID0gV2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQ6OmNy
ZWF0ZShzZXNzaW9uSW50ZXJmYWNlLmdldCgpKTsKLQotICAgICAgICBtX3Nlc3Npb25Nb2RlbCA9
IFdlYlZpZGVvRnVsbHNjcmVlblNlc3Npb25Nb2RlbDo6Y3JlYXRlKCp0aGlzKTsKLSAgICAgICAg
c2Vzc2lvbkludGVyZmFjZS0+c2V0V2ViUGxheWJhY2tTZXNzaW9uTW9kZWwobV9zZXNzaW9uTW9k
ZWwuZ2V0KCkpOwotCi0gICAgICAgIG1faW50ZXJmYWNlLT5zZXRXZWJWaWRlb0Z1bGxzY3JlZW5N
b2RlbCh0aGlzKTsKLSAgICAgICAgbV9pbnRlcmZhY2UtPnNldFdlYlZpZGVvRnVsbHNjcmVlbkNo
YW5nZU9ic2VydmVyKHRoaXMpOworICAgIEFTU0VSVChpc1VJVGhyZWFkKCkpOworICAgIHJldHVy
biBtX3BsYXliYWNrTW9kZWwgPyBtX3BsYXliYWNrTW9kZWwtPmR1cmF0aW9uKCkgOiAwOworfQog
Ci0gICAgICAgIG1fdmlkZW9GdWxsc2NyZWVuVmlldyA9IGFkb3B0TlMoW1tnZXRVSVZpZXdDbGFz
cygpIGFsbG9jXSBpbml0XSk7Ci0gICAgICAgIAotICAgICAgICBSZWZQdHI8V2ViVmlkZW9GdWxs
c2NyZWVuQ29udHJvbGxlckNvbnRleHQ+IHByb3RlY3RlZFRoaXModGhpcyk7Ci0gICAgICAgIFdl
YlRocmVhZFJ1bihbcHJvdGVjdGVkVGhpcywgdGhpcywgdmlld1JlZiwgbW9kZV0gewotICAgICAg
ICAgICAgbV9tb2RlbCA9IFdlYlZpZGVvRnVsbHNjcmVlbk1vZGVsVmlkZW9FbGVtZW50OjpjcmVh
dGUoV2ViUGxheWJhY2tTZXNzaW9uTW9kZWxNZWRpYUVsZW1lbnQ6OmNyZWF0ZSgpLmdldCgpKTsK
LSAgICAgICAgICAgIG1fbW9kZWwtPnNldFdlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZSh0aGlz
KTsKLSAgICAgICAgICAgIG1fbW9kZWwtPnBsYXliYWNrU2Vzc2lvbk1vZGVsKCkuc2V0TWVkaWFF
bGVtZW50KG1fdmlkZW9FbGVtZW50LmdldCgpKTsKLSAgICAgICAgICAgIG1fbW9kZWwtPnNldFZp
ZGVvRWxlbWVudChtX3ZpZGVvRWxlbWVudC5nZXQoKSk7Ci0KLSAgICAgICAgICAgIEludFJlY3Qg
dmlkZW9FbGVtZW50Q2xpZW50UmVjdCA9IGVsZW1lbnRSZWN0SW5XaW5kb3cobV92aWRlb0VsZW1l
bnQuZ2V0KCkpOwotICAgICAgICAgICAgRmxvYXRSZWN0IHZpZGVvTGF5ZXJGcmFtZSA9IEZsb2F0
UmVjdChGbG9hdFBvaW50KCksIHZpZGVvRWxlbWVudENsaWVudFJlY3Quc2l6ZSgpKTsKLSAgICAg
ICAgICAgIG1fbW9kZWwtPnNldFZpZGVvTGF5ZXJGcmFtZSh2aWRlb0xheWVyRnJhbWUpOwotICAg
ICAgICAgICAgCi0gICAgICAgICAgICBib29sIGFsbG93c1BpY3R1cmVJblBpY3R1cmUgPSBtX3Zp
ZGVvRWxlbWVudC0+bWVkaWFTZXNzaW9uKCkuYWxsb3dzUGljdHVyZUluUGljdHVyZSgqbV92aWRl
b0VsZW1lbnQuZ2V0KCkpOwotICAgICAgICAgICAgZGlzcGF0Y2hfYXN5bmMoZGlzcGF0Y2hfZ2V0
X21haW5fcXVldWUoKSwgW3Byb3RlY3RlZFRoaXMsIHRoaXMsIHZpZGVvRWxlbWVudENsaWVudFJl
Y3QsIHZpZXdSZWYsIG1vZGUsIGFsbG93c1BpY3R1cmVJblBpY3R1cmVdIHsKLSAgICAgICAgICAg
ICAgICBtX2ludGVyZmFjZS0+c2V0dXBGdWxsc2NyZWVuKCptX3ZpZGVvRnVsbHNjcmVlblZpZXcu
Z2V0KCksIHZpZGVvRWxlbWVudENsaWVudFJlY3QsIHZpZXdSZWYuZ2V0KCksIG1vZGUsIGFsbG93
c1BpY3R1cmVJblBpY3R1cmUpOwotICAgICAgICAgICAgfSk7Ci0gICAgICAgIH0pOwotICAgIH0p
OworZG91YmxlIFdlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJDb250ZXh0OjpjdXJyZW50VGlt
ZSgpIGNvbnN0Cit7CisgICAgQVNTRVJUKGlzVUlUaHJlYWQoKSk7CisgICAgcmV0dXJuIG1fcGxh
eWJhY2tNb2RlbCA/IG1fcGxheWJhY2tNb2RlbC0+Y3VycmVudFRpbWUoKSA6IDA7CiB9CiAKLXZv
aWQgV2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlckNvbnRleHQ6OmV4aXRGdWxsc2NyZWVuKCkK
K2RvdWJsZSBXZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyQ29udGV4dDo6YnVmZmVyZWRUaW1l
KCkgY29uc3QKIHsKLSAgICBBU1NFUlQoV2ViVGhyZWFkSXNDdXJyZW50KCkgfHwgaXNNYWluVGhy
ZWFkKCkpOwotICAgIEludFJlY3QgY2xpZW50UmVjdCA9IGVsZW1lbnRSZWN0SW5XaW5kb3cobV92
aWRlb0VsZW1lbnQuZ2V0KCkpOwotICAgIFJlZlB0cjxXZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9s
bGVyQ29udGV4dD4gcHJvdGVjdGVkVGhpcyh0aGlzKTsKLSAgICBkaXNwYXRjaF9hc3luYyhkaXNw
YXRjaF9nZXRfbWFpbl9xdWV1ZSgpLCBbcHJvdGVjdGVkVGhpcywgdGhpcywgY2xpZW50UmVjdF0g
ewotICAgICAgICBBU1NFUlQoaXNVSVRocmVhZCgpKTsKLSAgICAgICAgbV9pbnRlcmZhY2UtPmV4
aXRGdWxsc2NyZWVuKGNsaWVudFJlY3QpOwotICAgIH0pOworICAgIEFTU0VSVChpc1VJVGhyZWFk
KCkpOworICAgIHJldHVybiBtX3BsYXliYWNrTW9kZWwgPyBtX3BsYXliYWNrTW9kZWwtPmJ1ZmZl
cmVkVGltZSgpIDogMDsKIH0KIAotdm9pZCBXZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyQ29u
dGV4dDo6cmVxdWVzdEhpZGVBbmRFeGl0RnVsbHNjcmVlbigpCitib29sIFdlYlZpZGVvRnVsbHNj
cmVlbkNvbnRyb2xsZXJDb250ZXh0Ojppc1BsYXlpbmcoKSBjb25zdAogewogICAgIEFTU0VSVChp
c1VJVGhyZWFkKCkpOwotICAgIG1faW50ZXJmYWNlLT5yZXF1ZXN0SGlkZUFuZEV4aXRGdWxsc2Ny
ZWVuKCk7CisgICAgcmV0dXJuIG1fcGxheWJhY2tNb2RlbCA/IG1fcGxheWJhY2tNb2RlbC0+aXNQ
bGF5aW5nKCkgOiBmYWxzZTsKIH0KIAotI3ByYWdtYSBtYXJrIFdlYlBsYXliYWNrU2Vzc2lvbk1v
ZGVsCitmbG9hdCBXZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyQ29udGV4dDo6cGxheWJhY2tS
YXRlKCkgY29uc3QKK3sKKyAgICBBU1NFUlQoaXNVSVRocmVhZCgpKTsKKyAgICByZXR1cm4gbV9w
bGF5YmFja01vZGVsID8gbV9wbGF5YmFja01vZGVsLT5wbGF5YmFja1JhdGUoKSA6IDA7Cit9CiAK
LXZvaWQgV2ViVmlkZW9GdWxsc2NyZWVuU2Vzc2lvbk1vZGVsOjpwbGF5KCkKK1JlZjxUaW1lUmFu
Z2VzPiBXZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyQ29udGV4dDo6c2Vla2FibGVSYW5nZXMo
KSBjb25zdAogewotICAgIGlmIChtX2NvbnRyb2xsZXIpCi0gICAgICAgIG1fY29udHJvbGxlci0+
cGxheSgpOworICAgIEFTU0VSVChpc1VJVGhyZWFkKCkpOworICAgIHJldHVybiBtX3BsYXliYWNr
TW9kZWwgPyBtX3BsYXliYWNrTW9kZWwtPnNlZWthYmxlUmFuZ2VzKCkgOiBUaW1lUmFuZ2VzOjpj
cmVhdGUoKTsKIH0KIAotdm9pZCBXZWJWaWRlb0Z1bGxzY3JlZW5TZXNzaW9uTW9kZWw6OnBhdXNl
KCkKK2Jvb2wgV2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlckNvbnRleHQ6OmNhblBsYXlGYXN0
UmV2ZXJzZSgpIGNvbnN0CiB7Ci0gICAgaWYgKG1fY29udHJvbGxlcikKLSAgICAgICAgbV9jb250
cm9sbGVyLT5wYXVzZSgpOworICAgIEFTU0VSVChpc1VJVGhyZWFkKCkpOworICAgIHJldHVybiBt
X3BsYXliYWNrTW9kZWwgPyBtX3BsYXliYWNrTW9kZWwtPmNhblBsYXlGYXN0UmV2ZXJzZSgpIDog
ZmFsc2U7CiB9CiAKLXZvaWQgV2ViVmlkZW9GdWxsc2NyZWVuU2Vzc2lvbk1vZGVsOjp0b2dnbGVQ
bGF5U3RhdGUoKQorVmVjdG9yPFN0cmluZz4gV2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlckNv
bnRleHQ6OmF1ZGlvTWVkaWFTZWxlY3Rpb25PcHRpb25zKCkgY29uc3QKIHsKLSAgICBpZiAobV9j
b250cm9sbGVyKQotICAgICAgICBtX2NvbnRyb2xsZXItPnRvZ2dsZVBsYXlTdGF0ZSgpOworICAg
IEFTU0VSVChpc1VJVGhyZWFkKCkpOworICAgIHJldHVybiBtX3BsYXliYWNrTW9kZWwgPyBtX3Bs
YXliYWNrTW9kZWwtPmF1ZGlvTWVkaWFTZWxlY3Rpb25PcHRpb25zKCkgOiBWZWN0b3I8U3RyaW5n
PigpOwogfQogCi12b2lkIFdlYlZpZGVvRnVsbHNjcmVlblNlc3Npb25Nb2RlbDo6YmVnaW5TY3J1
YmJpbmcoKQordWludDY0X3QgV2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlckNvbnRleHQ6OmF1
ZGlvTWVkaWFTZWxlY3RlZEluZGV4KCkgY29uc3QKIHsKLSAgICBpZiAobV9jb250cm9sbGVyKQot
ICAgICAgICBtX2NvbnRyb2xsZXItPmJlZ2luU2NydWJiaW5nKCk7CisgICAgQVNTRVJUKGlzVUlU
aHJlYWQoKSk7CisgICAgcmV0dXJuIG1fcGxheWJhY2tNb2RlbCA/IG1fcGxheWJhY2tNb2RlbC0+
YXVkaW9NZWRpYVNlbGVjdGVkSW5kZXgoKSA6IC0xOwogfQogCi12b2lkIFdlYlZpZGVvRnVsbHNj
cmVlblNlc3Npb25Nb2RlbDo6ZW5kU2NydWJiaW5nKCkKK1ZlY3RvcjxTdHJpbmc+IFdlYlZpZGVv
RnVsbHNjcmVlbkNvbnRyb2xsZXJDb250ZXh0OjpsZWdpYmxlTWVkaWFTZWxlY3Rpb25PcHRpb25z
KCkgY29uc3QKIHsKLSAgICBpZiAobV9jb250cm9sbGVyKQotICAgICAgICBtX2NvbnRyb2xsZXIt
PmVuZFNjcnViYmluZygpOworICAgIEFTU0VSVChpc1VJVGhyZWFkKCkpOworICAgIHJldHVybiBt
X3BsYXliYWNrTW9kZWwgPyBtX3BsYXliYWNrTW9kZWwtPmxlZ2libGVNZWRpYVNlbGVjdGlvbk9w
dGlvbnMoKSA6IFZlY3RvcjxTdHJpbmc+KCk7CiB9CiAKLXZvaWQgV2ViVmlkZW9GdWxsc2NyZWVu
U2Vzc2lvbk1vZGVsOjpzZWVrVG9UaW1lKGRvdWJsZSB0aW1lKQordWludDY0X3QgV2ViVmlkZW9G
dWxsc2NyZWVuQ29udHJvbGxlckNvbnRleHQ6OmxlZ2libGVNZWRpYVNlbGVjdGVkSW5kZXgoKSBj
b25zdAogewotICAgIGlmIChtX2NvbnRyb2xsZXIpCi0gICAgICAgIG1fY29udHJvbGxlci0+c2Vl
a1RvVGltZSh0aW1lKTsKKyAgICBBU1NFUlQoaXNVSVRocmVhZCgpKTsKKyAgICByZXR1cm4gbV9w
bGF5YmFja01vZGVsID8gbV9wbGF5YmFja01vZGVsLT5sZWdpYmxlTWVkaWFTZWxlY3RlZEluZGV4
KCkgOiAtMTsKIH0KIAotdm9pZCBXZWJWaWRlb0Z1bGxzY3JlZW5TZXNzaW9uTW9kZWw6OmZhc3RT
ZWVrKGRvdWJsZSB0aW1lKQorYm9vbCBXZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyQ29udGV4
dDo6ZXh0ZXJuYWxQbGF5YmFja0VuYWJsZWQoKSBjb25zdAogewotICAgIGlmIChtX2NvbnRyb2xs
ZXIpCi0gICAgICAgIG1fY29udHJvbGxlci0+ZmFzdFNlZWsodGltZSk7CisgICAgQVNTRVJUKGlz
VUlUaHJlYWQoKSk7CisgICAgcmV0dXJuIG1fcGxheWJhY2tNb2RlbCA/IG1fcGxheWJhY2tNb2Rl
bC0+ZXh0ZXJuYWxQbGF5YmFja0VuYWJsZWQoKSA6IGZhbHNlOwogfQogCi12b2lkIFdlYlZpZGVv
RnVsbHNjcmVlblNlc3Npb25Nb2RlbDo6YmVnaW5TY2FubmluZ0ZvcndhcmQoKQorV2ViUGxheWJh
Y2tTZXNzaW9uTW9kZWw6OkV4dGVybmFsUGxheWJhY2tUYXJnZXRUeXBlIFdlYlZpZGVvRnVsbHNj
cmVlbkNvbnRyb2xsZXJDb250ZXh0OjpleHRlcm5hbFBsYXliYWNrVGFyZ2V0VHlwZSgpIGNvbnN0
CiB7Ci0gICAgaWYgKG1fY29udHJvbGxlcikKLSAgICAgICAgbV9jb250cm9sbGVyLT5iZWdpblNj
YW5uaW5nRm9yd2FyZCgpOworICAgIEFTU0VSVChpc1VJVGhyZWFkKCkpOworICAgIHJldHVybiBt
X3BsYXliYWNrTW9kZWwgPyBtX3BsYXliYWNrTW9kZWwtPmV4dGVybmFsUGxheWJhY2tUYXJnZXRU
eXBlKCkgOiBUYXJnZXRUeXBlTm9uZTsKIH0KIAotdm9pZCBXZWJWaWRlb0Z1bGxzY3JlZW5TZXNz
aW9uTW9kZWw6OmJlZ2luU2Nhbm5pbmdCYWNrd2FyZCgpCitTdHJpbmcgV2ViVmlkZW9GdWxsc2Ny
ZWVuQ29udHJvbGxlckNvbnRleHQ6OmV4dGVybmFsUGxheWJhY2tMb2NhbGl6ZWREZXZpY2VOYW1l
KCkgY29uc3QKIHsKLSAgICBpZiAobV9jb250cm9sbGVyKQotICAgICAgICBtX2NvbnRyb2xsZXIt
PmJlZ2luU2Nhbm5pbmdCYWNrd2FyZCgpOworICAgIEFTU0VSVChpc1VJVGhyZWFkKCkpOworICAg
IHJldHVybiBtX3BsYXliYWNrTW9kZWwgPyBtX3BsYXliYWNrTW9kZWwtPmV4dGVybmFsUGxheWJh
Y2tMb2NhbGl6ZWREZXZpY2VOYW1lKCkgOiBTdHJpbmcoKTsKIH0KIAotdm9pZCBXZWJWaWRlb0Z1
bGxzY3JlZW5TZXNzaW9uTW9kZWw6OmVuZFNjYW5uaW5nKCkKK2Jvb2wgV2ViVmlkZW9GdWxsc2Ny
ZWVuQ29udHJvbGxlckNvbnRleHQ6OndpcmVsZXNzVmlkZW9QbGF5YmFja0Rpc2FibGVkKCkgY29u
c3QKIHsKLSAgICBpZiAobV9jb250cm9sbGVyKQotICAgICAgICBtX2NvbnRyb2xsZXItPmVuZFNj
YW5uaW5nKCk7CisgICAgQVNTRVJUKGlzVUlUaHJlYWQoKSk7CisgICAgcmV0dXJuIG1fcGxheWJh
Y2tNb2RlbCA/IG1fcGxheWJhY2tNb2RlbC0+d2lyZWxlc3NWaWRlb1BsYXliYWNrRGlzYWJsZWQo
KSA6IHRydWU7CiB9CiAKLXZvaWQgV2ViVmlkZW9GdWxsc2NyZWVuU2Vzc2lvbk1vZGVsOjpzZWxl
Y3RBdWRpb01lZGlhT3B0aW9uKHVpbnQ2NF90IG9wdGlvbklkKQorI3ByYWdtYSBtYXJrIE90aGVy
CisKK3ZvaWQgV2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlckNvbnRleHQ6OnNldFVwRnVsbHNj
cmVlbihIVE1MVmlkZW9FbGVtZW50JiB2aWRlb0VsZW1lbnQsIFVJVmlldyAqdmlldywgSFRNTE1l
ZGlhRWxlbWVudEVudW1zOjpWaWRlb0Z1bGxzY3JlZW5Nb2RlIG1vZGUpCiB7Ci0gICAgaWYgKG1f
Y29udHJvbGxlcikKLSAgICAgICAgbV9jb250cm9sbGVyLT5zZWxlY3RBdWRpb01lZGlhT3B0aW9u
KG9wdGlvbklkKTsKKyAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworICAgIFJldGFpblB0cjxV
SVZpZXc+IHZpZXdSZWYgPSB2aWV3OworICAgIG1fdmlkZW9FbGVtZW50ID0gJnZpZGVvRWxlbWVu
dDsKKyAgICBtX3BsYXliYWNrTW9kZWwgPSBXZWJQbGF5YmFja1Nlc3Npb25Nb2RlbE1lZGlhRWxl
bWVudDo6Y3JlYXRlKCk7CisgICAgbV9wbGF5YmFja01vZGVsLT5hZGRDbGllbnQoKnRoaXMpOwor
ICAgIG1fcGxheWJhY2tNb2RlbC0+c2V0TWVkaWFFbGVtZW50KG1fdmlkZW9FbGVtZW50LmdldCgp
KTsKKworICAgIG1fZnVsbHNjcmVlbk1vZGVsID0gV2ViVmlkZW9GdWxsc2NyZWVuTW9kZWxWaWRl
b0VsZW1lbnQ6OmNyZWF0ZSgpOworICAgIG1fZnVsbHNjcmVlbk1vZGVsLT5hZGRDbGllbnQoKnRo
aXMpOworICAgIG1fZnVsbHNjcmVlbk1vZGVsLT5zZXRWaWRlb0VsZW1lbnQobV92aWRlb0VsZW1l
bnQuZ2V0KCkpOworCisgICAgYm9vbCBhbGxvd3NQaWN0dXJlSW5QaWN0dXJlID0gbV92aWRlb0Vs
ZW1lbnQtPm1lZGlhU2Vzc2lvbigpLmFsbG93c1BpY3R1cmVJblBpY3R1cmUoKm1fdmlkZW9FbGVt
ZW50LmdldCgpKTsKKworICAgIEludFJlY3QgdmlkZW9FbGVtZW50Q2xpZW50UmVjdCA9IGVsZW1l
bnRSZWN0SW5XaW5kb3cobV92aWRlb0VsZW1lbnQuZ2V0KCkpOworICAgIEZsb2F0UmVjdCB2aWRl
b0xheWVyRnJhbWUgPSBGbG9hdFJlY3QoRmxvYXRQb2ludCgpLCB2aWRlb0VsZW1lbnRDbGllbnRS
ZWN0LnNpemUoKSk7CisgICAgbV9mdWxsc2NyZWVuTW9kZWwtPnNldFZpZGVvTGF5ZXJGcmFtZSh2
aWRlb0xheWVyRnJhbWUpOworCisgICAgUmVmUHRyPFdlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xs
ZXJDb250ZXh0PiBwcm90ZWN0ZWRUaGlzKHRoaXMpOworICAgIGRpc3BhdGNoX2FzeW5jKGRpc3Bh
dGNoX2dldF9tYWluX3F1ZXVlKCksIFtwcm90ZWN0ZWRUaGlzLCB0aGlzLCB2aWRlb0VsZW1lbnRD
bGllbnRSZWN0LCB2aWV3UmVmLCBtb2RlLCBhbGxvd3NQaWN0dXJlSW5QaWN0dXJlXSB7CisgICAg
ICAgIEFTU0VSVChpc1VJVGhyZWFkKCkpOworCisgICAgICAgIFJlZjxXZWJQbGF5YmFja1Nlc3Np
b25JbnRlcmZhY2VBVktpdD4gc2Vzc2lvbkludGVyZmFjZSA9IFdlYlBsYXliYWNrU2Vzc2lvbklu
dGVyZmFjZUFWS2l0OjpjcmVhdGUoKnRoaXMpOworICAgICAgICBtX2ludGVyZmFjZSA9IFdlYlZp
ZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0OjpjcmVhdGUoc2Vzc2lvbkludGVyZmFjZS5nZXQo
KSk7CisgICAgICAgIG1faW50ZXJmYWNlLT5zZXRXZWJWaWRlb0Z1bGxzY3JlZW5DaGFuZ2VPYnNl
cnZlcih0aGlzKTsKKyAgICAgICAgbV9pbnRlcmZhY2UtPnNldFdlYlZpZGVvRnVsbHNjcmVlbk1v
ZGVsKHRoaXMpOworICAgICAgICBtX2ludGVyZmFjZS0+c2V0V2ViVmlkZW9GdWxsc2NyZWVuQ2hh
bmdlT2JzZXJ2ZXIodGhpcyk7CisKKyAgICAgICAgbV92aWRlb0Z1bGxzY3JlZW5WaWV3ID0gYWRv
cHROUyhbW2dldFVJVmlld0NsYXNzKCkgYWxsb2NdIGluaXRdKTsKKyAgICAgICAgCisgICAgICAg
IG1faW50ZXJmYWNlLT5zZXR1cEZ1bGxzY3JlZW4oKm1fdmlkZW9GdWxsc2NyZWVuVmlldy5nZXQo
KSwgdmlkZW9FbGVtZW50Q2xpZW50UmVjdCwgdmlld1JlZi5nZXQoKSwgbW9kZSwgYWxsb3dzUGlj
dHVyZUluUGljdHVyZSk7CisgICAgfSk7CiB9CiAKLXZvaWQgV2ViVmlkZW9GdWxsc2NyZWVuU2Vz
c2lvbk1vZGVsOjpzZWxlY3RMZWdpYmxlTWVkaWFPcHRpb24odWludDY0X3Qgb3B0aW9uSWQpCit2
b2lkIFdlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJDb250ZXh0OjpleGl0RnVsbHNjcmVlbigp
CiB7Ci0gICAgaWYgKG1fY29udHJvbGxlcikKLSAgICAgICAgbV9jb250cm9sbGVyLT5zZWxlY3RM
ZWdpYmxlTWVkaWFPcHRpb24ob3B0aW9uSWQpOworICAgIEFTU0VSVChXZWJUaHJlYWRJc0N1cnJl
bnQoKSB8fCBpc01haW5UaHJlYWQoKSk7CisgICAgSW50UmVjdCBjbGllbnRSZWN0ID0gZWxlbWVu
dFJlY3RJbldpbmRvdyhtX3ZpZGVvRWxlbWVudC5nZXQoKSk7CisgICAgUmVmUHRyPFdlYlZpZGVv
RnVsbHNjcmVlbkNvbnRyb2xsZXJDb250ZXh0PiBwcm90ZWN0ZWRUaGlzKHRoaXMpOworICAgIGRp
c3BhdGNoX2FzeW5jKGRpc3BhdGNoX2dldF9tYWluX3F1ZXVlKCksIFtwcm90ZWN0ZWRUaGlzLCB0
aGlzLCBjbGllbnRSZWN0XSB7CisgICAgICAgIEFTU0VSVChpc1VJVGhyZWFkKCkpOworICAgICAg
ICBtX2ludGVyZmFjZS0+ZXhpdEZ1bGxzY3JlZW4oY2xpZW50UmVjdCk7CisgICAgfSk7CiB9CiAK
K3ZvaWQgV2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlckNvbnRleHQ6OnJlcXVlc3RIaWRlQW5k
RXhpdEZ1bGxzY3JlZW4oKQoreworICAgIEFTU0VSVChpc1VJVGhyZWFkKCkpOworICAgIG1faW50
ZXJmYWNlLT5yZXF1ZXN0SGlkZUFuZEV4aXRGdWxsc2NyZWVuKCk7Cit9CiAKIEBpbXBsZW1lbnRh
dGlvbiBXZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyIHsKICAgICBSZWZQdHI8V2ViVmlkZW9G
dWxsc2NyZWVuQ29udHJvbGxlckNvbnRleHQ+IF9jb250ZXh0OwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vaW9zL1dlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0Lmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvV2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNl
QVZLaXQuaAppbmRleCA4MWRhYzYxZDc1YTRmMWY2OWNmOWRhOGQyMWVjOTQ1M2JmZjVhNmQ0Li41
MGRlOWUwNmIwNGNiNjJkODNjYjI2ODgxZjc4NTViNDAxODhjZjI5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvV2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvV2ViVmlkZW9GdWxsc2NyZWVuSW50
ZXJmYWNlQVZLaXQuaApAQCAtMzUsNiArMzUsNyBAQAogI2luY2x1ZGUgIlRpbWVyLmgiCiAjaW5j
bHVkZSAiV2ViUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlQVZLaXQuaCIKICNpbmNsdWRlICJXZWJW
aWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2UuaCIKKyNpbmNsdWRlICJXZWJWaWRlb0Z1bGxzY3JlZW5N
b2RlbC5oIgogI2luY2x1ZGUgPGZ1bmN0aW9uYWw+CiAjaW5jbHVkZSA8b2JqYy9vYmpjLmg+CiAj
aW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KQEAgLTU3LDEyICs1OCwxNCBAQCBjbGFzcyBTdHJp
bmc7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIEludFJlY3Q7CitjbGFzcyBGbG9hdFNp
emU7CiBjbGFzcyBXZWJWaWRlb0Z1bGxzY3JlZW5Nb2RlbDsKIGNsYXNzIFdlYlZpZGVvRnVsbHNj
cmVlbkNoYW5nZU9ic2VydmVyOwogICAgIAogY2xhc3MgV0VCQ09SRV9FWFBPUlQgV2ViVmlkZW9G
dWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQgZmluYWwKICAgICA6IHB1YmxpYyBXZWJWaWRlb0Z1bGxz
Y3JlZW5JbnRlcmZhY2UKLSAgICAsIHB1YmxpYyBXZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2VB
VktpdENsaWVudAorICAgICwgcHVibGljIFdlYlZpZGVvRnVsbHNjcmVlbk1vZGVsQ2xpZW50Cisg
ICAgLCBwdWJsaWMgV2ViUGxheWJhY2tTZXNzaW9uTW9kZWxDbGllbnQKICAgICAsIHB1YmxpYyBS
ZWZDb3VudGVkPFdlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0PiB7CiAKIHB1YmxpYzoK
QEAgLTcyLDE4ICs3NSwxMyBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRX
ZWJWaWRlb0Z1bGxzY3JlZW5DaGFuZ2VPYnNlcnZlcihXZWJWaWRlb0Z1bGxzY3JlZW5DaGFuZ2VP
YnNlcnZlciopOwogICAgIFdlYlBsYXliYWNrU2Vzc2lvbk1vZGVsKiB3ZWJQbGF5YmFja1Nlc3Np
b25Nb2RlbCgpIGNvbnN0IHsgcmV0dXJuIG1fcGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlLT53ZWJQ
bGF5YmFja1Nlc3Npb25Nb2RlbCgpOyB9CiAKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHJlc2V0
TWVkaWFTdGF0ZSgpIGZpbmFsOwotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0RHVyYXRpb24o
ZG91YmxlKSBmaW5hbDsKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldEN1cnJlbnRUaW1lKGRv
dWJsZSBjdXJyZW50VGltZSwgZG91YmxlIGFuY2hvclRpbWUpIGZpbmFsOwotICAgIFdFQkNPUkVf
RVhQT1JUIHZvaWQgc2V0QnVmZmVyZWRUaW1lKGRvdWJsZSkgZmluYWw7Ci0gICAgV0VCQ09SRV9F
WFBPUlQgdm9pZCBzZXRSYXRlKGJvb2wgaXNQbGF5aW5nLCBmbG9hdCBwbGF5YmFja1JhdGUpIGZp
bmFsOwotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0VmlkZW9EaW1lbnNpb25zKGJvb2wgaGFz
VmlkZW8sIGZsb2F0IHdpZHRoLCBmbG9hdCBoZWlnaHQpIGZpbmFsOwotICAgIFdFQkNPUkVfRVhQ
T1JUIHZvaWQgc2V0U2Vla2FibGVSYW5nZXMoY29uc3QgVGltZVJhbmdlcyYpIGZpbmFsOwotICAg
IFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0Q2FuUGxheUZhc3RSZXZlcnNlKGJvb2wpIGZpbmFsOwot
ICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0QXVkaW9NZWRpYVNlbGVjdGlvbk9wdGlvbnMoY29u
c3QgVmVjdG9yPFdURjo6U3RyaW5nPiYgb3B0aW9ucywgdWludDY0X3Qgc2VsZWN0ZWRJbmRleCkg
ZmluYWw7Ci0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRMZWdpYmxlTWVkaWFTZWxlY3Rpb25P
cHRpb25zKGNvbnN0IFZlY3RvcjxXVEY6OlN0cmluZz4mIG9wdGlvbnMsIHVpbnQ2NF90IHNlbGVj
dGVkSW5kZXgpIGZpbmFsOwotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0RXh0ZXJuYWxQbGF5
YmFjayhib29sIGVuYWJsZWQsIEV4dGVybmFsUGxheWJhY2tUYXJnZXRUeXBlLCBXVEY6OlN0cmlu
ZyBsb2NhbGl6ZWREZXZpY2VOYW1lKSBmaW5hbDsKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNl
dFdpcmVsZXNzVmlkZW9QbGF5YmFja0Rpc2FibGVkKGJvb2wpIGZpbmFsOworICAgIC8vIFdlYlZp
ZGVvRnVsbHNjcmVlbk1vZGVsQ2xpZW50CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBoYXNWaWRl
b0NoYW5nZWQoYm9vbCkgZmluYWw7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCB2aWRlb0RpbWVu
c2lvbnNDaGFuZ2VkKGNvbnN0IEZsb2F0U2l6ZSYpIGZpbmFsOworCisgICAgLy8gV2ViUGxheWJh
Y2tTZXNzaW9uTW9kZWxDbGllbnQKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGV4dGVybmFsUGxh
eWJhY2tDaGFuZ2VkKGJvb2wgZW5hYmxlZCwgV2ViUGxheWJhY2tTZXNzaW9uTW9kZWw6OkV4dGVy
bmFsUGxheWJhY2tUYXJnZXRUeXBlLCBjb25zdCBTdHJpbmcmIGxvY2FsaXplZERldmljZU5hbWUp
IGZpbmFsOworCiAgICAgV0VCQ09SRV9FWFBPUlQgdmlydHVhbCB2b2lkIHNldHVwRnVsbHNjcmVl
bihVSVZpZXcmLCBjb25zdCBJbnRSZWN0JiBpbml0aWFsUmVjdCwgVUlWaWV3ICosIEhUTUxNZWRp
YUVsZW1lbnRFbnVtczo6VmlkZW9GdWxsc2NyZWVuTW9kZSwgYm9vbCBhbGxvd3NQaWN0dXJlSW5Q
aWN0dXJlUGxheWJhY2spOwogICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwgdm9pZCBlbnRlckZ1
bGxzY3JlZW4oKTsKICAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIHZvaWQgZXhpdEZ1bGxzY3Jl
ZW4oY29uc3QgSW50UmVjdCYgZmluYWxSZWN0KTsKQEAgLTEyNyw3ICsxMjUsNiBAQCBwcm90ZWN0
ZWQ6CiAgICAgdm9pZCBlbnRlclBpY3R1cmVJblBpY3R1cmUoKTsKICAgICB2b2lkIGVudGVyRnVs
bHNjcmVlblN0YW5kYXJkKCk7CiAgICAgdm9pZCB3YXRjaGRvZ1RpbWVyRmlyZWQoKTsKLSAgICB2
b2lkIGV4dGVybmFsUGxheWJhY2tFbmFibGVkQ2hhbmdlZChib29sKSBmaW5hbDsKICAgICBXZWJB
VlBsYXllckNvbnRyb2xsZXIgKnBsYXllckNvbnRyb2xsZXIoKSBjb25zdDsKIAogICAgIFJlZjxX
ZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2VBVktpdD4gbV9wbGF5YmFja1Nlc3Npb25JbnRlcmZh
Y2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvV2ViVmlkZW9GdWxs
c2NyZWVuSW50ZXJmYWNlQVZLaXQubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvV2Vi
VmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQubW0KaW5kZXggM2FmOGQ3YTNkODVmNjQ3YzM0
ZTg3MDRhYWQ1MTEwZjI3OTQzZjliMS4uYTVlNzQzY2Y0ODhlNzBiMTA2ZDg3NmJjZWQ3ZTE2MjI0
Zjc0ZDIxZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1dlYlZpZGVv
RnVsbHNjcmVlbkludGVyZmFjZUFWS2l0Lm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2lvcy9XZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdC5tbQpAQCAtNDk4LDcgKzQ5OCw5
IEBAIFdlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0Ojp+V2ViVmlkZW9GdWxsc2NyZWVu
SW50ZXJmYWNlQVZLaXQoKQogewogICAgIFdlYkFWUGxheWVyQ29udHJvbGxlciogcGxheWVyQ29u
dHJvbGxlciA9IHRoaXMtPnBsYXllckNvbnRyb2xsZXIoKTsKICAgICBpZiAocGxheWVyQ29udHJv
bGxlciAmJiBwbGF5ZXJDb250cm9sbGVyLmV4dGVybmFsUGxheWJhY2tBY3RpdmUpCi0gICAgICAg
IHNldEV4dGVybmFsUGxheWJhY2soZmFsc2UsIFRhcmdldFR5cGVOb25lLCAiIik7CisgICAgICAg
IGV4dGVybmFsUGxheWJhY2tDaGFuZ2VkKGZhbHNlLCBXZWJQbGF5YmFja1Nlc3Npb25Nb2RlbDo6
VGFyZ2V0VHlwZU5vbmUsICIiKTsKKyAgICBpZiAobV92aWRlb0Z1bGxzY3JlZW5Nb2RlbCkKKyAg
ICAgICAgbV92aWRlb0Z1bGxzY3JlZW5Nb2RlbC0+cmVtb3ZlQ2xpZW50KCp0aGlzKTsKIH0KIAog
V2ViQVZQbGF5ZXJDb250cm9sbGVyICpXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdDo6
cGxheWVyQ29udHJvbGxlcigpIGNvbnN0CkBAIC01MDYsNDggKzUwOCwzNiBAQCBXZWJBVlBsYXll
ckNvbnRyb2xsZXIgKldlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0OjpwbGF5ZXJDb250
cm9sbGVyKCkgY29ucwogICAgIHJldHVybiBtX3BsYXliYWNrU2Vzc2lvbkludGVyZmFjZS0+cGxh
eWVyQ29udHJvbGxlcigpOwogfQogCi12b2lkIFdlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFW
S2l0OjpyZXNldE1lZGlhU3RhdGUoKQotewotICAgIG1fcGxheWJhY2tTZXNzaW9uSW50ZXJmYWNl
LT5yZXNldE1lZGlhU3RhdGUoKTsKLX0KLQogdm9pZCBXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZh
Y2VBVktpdDo6c2V0V2ViVmlkZW9GdWxsc2NyZWVuTW9kZWwoV2ViVmlkZW9GdWxsc2NyZWVuTW9k
ZWwqIG1vZGVsKQogewotICAgIG1fdmlkZW9GdWxsc2NyZWVuTW9kZWwgPSBtb2RlbDsKLX0KKyAg
ICBpZiAobV92aWRlb0Z1bGxzY3JlZW5Nb2RlbCkKKyAgICAgICAgbV92aWRlb0Z1bGxzY3JlZW5N
b2RlbC0+cmVtb3ZlQ2xpZW50KCp0aGlzKTsKIAotdm9pZCBXZWJWaWRlb0Z1bGxzY3JlZW5JbnRl
cmZhY2VBVktpdDo6c2V0V2ViVmlkZW9GdWxsc2NyZWVuQ2hhbmdlT2JzZXJ2ZXIoV2ViVmlkZW9G
dWxsc2NyZWVuQ2hhbmdlT2JzZXJ2ZXIqIG9ic2VydmVyKQotewotICAgIG1fZnVsbHNjcmVlbkNo
YW5nZU9ic2VydmVyID0gb2JzZXJ2ZXI7Ci19CisgICAgbV92aWRlb0Z1bGxzY3JlZW5Nb2RlbCA9
IG1vZGVsOwogCi12b2lkIFdlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0OjpzZXREdXJh
dGlvbihkb3VibGUgZHVyYXRpb24pCi17Ci0gICAgbV9wbGF5YmFja1Nlc3Npb25JbnRlcmZhY2Ut
PnNldER1cmF0aW9uKGR1cmF0aW9uKTsKLX0KKyAgICBpZiAobV92aWRlb0Z1bGxzY3JlZW5Nb2Rl
bCkKKyAgICAgICAgbV92aWRlb0Z1bGxzY3JlZW5Nb2RlbC0+YWRkQ2xpZW50KCp0aGlzKTsKIAot
dm9pZCBXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdDo6c2V0Q3VycmVudFRpbWUoZG91
YmxlIGN1cnJlbnRUaW1lLCBkb3VibGUgYW5jaG9yVGltZSkKLXsKLSAgICBtX3BsYXliYWNrU2Vz
c2lvbkludGVyZmFjZS0+c2V0Q3VycmVudFRpbWUoY3VycmVudFRpbWUsIGFuY2hvclRpbWUpOwor
ICAgIGhhc1ZpZGVvQ2hhbmdlZChtX3ZpZGVvRnVsbHNjcmVlbk1vZGVsID8gbV92aWRlb0Z1bGxz
Y3JlZW5Nb2RlbC0+aGFzVmlkZW8oKSA6IGZhbHNlKTsKKyAgICB2aWRlb0RpbWVuc2lvbnNDaGFu
Z2VkKG1fdmlkZW9GdWxsc2NyZWVuTW9kZWwgPyBtX3ZpZGVvRnVsbHNjcmVlbk1vZGVsLT52aWRl
b0RpbWVuc2lvbnMoKSA6IEZsb2F0U2l6ZSgpKTsKIH0KIAotdm9pZCBXZWJWaWRlb0Z1bGxzY3Jl
ZW5JbnRlcmZhY2VBVktpdDo6c2V0QnVmZmVyZWRUaW1lKGRvdWJsZSBidWZmZXJlZFRpbWUpCit2
b2lkIFdlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0OjpzZXRXZWJWaWRlb0Z1bGxzY3Jl
ZW5DaGFuZ2VPYnNlcnZlcihXZWJWaWRlb0Z1bGxzY3JlZW5DaGFuZ2VPYnNlcnZlciogb2JzZXJ2
ZXIpCiB7Ci0gICAgbV9wbGF5YmFja1Nlc3Npb25JbnRlcmZhY2UtPnNldEJ1ZmZlcmVkVGltZShi
dWZmZXJlZFRpbWUpOworICAgIG1fZnVsbHNjcmVlbkNoYW5nZU9ic2VydmVyID0gb2JzZXJ2ZXI7
CiB9CiAKLXZvaWQgV2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQ6OnNldFJhdGUoYm9v
bCBpc1BsYXlpbmcsIGZsb2F0IHBsYXliYWNrUmF0ZSkKK3ZvaWQgV2ViVmlkZW9GdWxsc2NyZWVu
SW50ZXJmYWNlQVZLaXQ6Omhhc1ZpZGVvQ2hhbmdlZChib29sIGhhc1ZpZGVvKQogewotICAgIG1f
cGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlLT5zZXRSYXRlKGlzUGxheWluZywgcGxheWJhY2tSYXRl
KTsKKyAgICBbcGxheWVyQ29udHJvbGxlcigpIHNldEhhc0VuYWJsZWRWaWRlbzpoYXNWaWRlb107
CiB9CiAKLXZvaWQgV2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQ6OnNldFZpZGVvRGlt
ZW5zaW9ucyhib29sIGhhc1ZpZGVvLCBmbG9hdCB3aWR0aCwgZmxvYXQgaGVpZ2h0KQordm9pZCBX
ZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdDo6dmlkZW9EaW1lbnNpb25zQ2hhbmdlZChj
b25zdCBGbG9hdFNpemUmIHZpZGVvRGltZW5zaW9ucykKIHsKICAgICBXZWJBVlBsYXllckxheWVy
ICpwbGF5ZXJMYXllciA9IChXZWJBVlBsYXllckxheWVyICopW21fcGxheWVyTGF5ZXJWaWV3IHBs
YXllckxheWVyXTsKIAotICAgIFtwbGF5ZXJMYXllciBzZXRWaWRlb0RpbWVuc2lvbnM6Q0dTaXpl
TWFrZSh3aWR0aCwgaGVpZ2h0KV07Ci0gICAgW3BsYXllckNvbnRyb2xsZXIoKSBzZXRIYXNFbmFi
bGVkVmlkZW86aGFzVmlkZW9dOwotICAgIFtwbGF5ZXJDb250cm9sbGVyKCkgc2V0Q29udGVudERp
bWVuc2lvbnM6Q0dTaXplTWFrZSh3aWR0aCwgaGVpZ2h0KV07CisgICAgW3BsYXllckxheWVyIHNl
dFZpZGVvRGltZW5zaW9uczp2aWRlb0RpbWVuc2lvbnNdOworICAgIFtwbGF5ZXJDb250cm9sbGVy
KCkgc2V0Q29udGVudERpbWVuc2lvbnM6dmlkZW9EaW1lbnNpb25zXTsKICAgICBbbV9wbGF5ZXJM
YXllclZpZXcgc2V0TmVlZHNMYXlvdXRdOwogCiAgICAgV2ViQVZQaWN0dXJlSW5QaWN0dXJlUGxh
eWVyTGF5ZXJWaWV3ICpwaXBWaWV3ID0gKFdlYkFWUGljdHVyZUluUGljdHVyZVBsYXllckxheWVy
VmlldyAqKVttX3BsYXllckxheWVyVmlldyBwaWN0dXJlSW5QaWN0dXJlUGxheWVyTGF5ZXJWaWV3
XTsKQEAgLTU1Niw0NiArNTQ2LDExIEBAIHZvaWQgV2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNl
QVZLaXQ6OnNldFZpZGVvRGltZW5zaW9ucyhib29sIGhhc1ZpZGVvLCBmbG9hdCB3CiAgICAgW3Bp
cFZpZXcgc2V0TmVlZHNMYXlvdXRdOyAgICAKIH0KIAotdm9pZCBXZWJWaWRlb0Z1bGxzY3JlZW5J
bnRlcmZhY2VBVktpdDo6c2V0U2Vla2FibGVSYW5nZXMoY29uc3QgVGltZVJhbmdlcyYgdGltZVJh
bmdlcykKLXsKLSAgICBtX3BsYXliYWNrU2Vzc2lvbkludGVyZmFjZS0+c2V0U2Vla2FibGVSYW5n
ZXModGltZVJhbmdlcyk7Ci19Ci0KLXZvaWQgV2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZL
aXQ6OnNldENhblBsYXlGYXN0UmV2ZXJzZShib29sIGNhblBsYXlGYXN0UmV2ZXJzZSkKLXsKLSAg
ICBtX3BsYXliYWNrU2Vzc2lvbkludGVyZmFjZS0+c2V0Q2FuUGxheUZhc3RSZXZlcnNlKGNhblBs
YXlGYXN0UmV2ZXJzZSk7Ci19Ci0KLXZvaWQgV2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZL
aXQ6OnNldEF1ZGlvTWVkaWFTZWxlY3Rpb25PcHRpb25zKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBv
cHRpb25zLCB1aW50NjRfdCBzZWxlY3RlZEluZGV4KQotewotICAgIG1fcGxheWJhY2tTZXNzaW9u
SW50ZXJmYWNlLT5zZXRBdWRpb01lZGlhU2VsZWN0aW9uT3B0aW9ucyhvcHRpb25zLCBzZWxlY3Rl
ZEluZGV4KTsKLX0KLQotdm9pZCBXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdDo6c2V0
TGVnaWJsZU1lZGlhU2VsZWN0aW9uT3B0aW9ucyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgb3B0aW9u
cywgdWludDY0X3Qgc2VsZWN0ZWRJbmRleCkKLXsKLSAgICBtX3BsYXliYWNrU2Vzc2lvbkludGVy
ZmFjZS0+c2V0TGVnaWJsZU1lZGlhU2VsZWN0aW9uT3B0aW9ucyhvcHRpb25zLCBzZWxlY3RlZElu
ZGV4KTsKLX0KLQotdm9pZCBXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdDo6c2V0RXh0
ZXJuYWxQbGF5YmFjayhib29sIGVuYWJsZWQsIEV4dGVybmFsUGxheWJhY2tUYXJnZXRUeXBlIHRh
cmdldFR5cGUsIFN0cmluZyBsb2NhbGl6ZWREZXZpY2VOYW1lKQotewotICAgIG1fcGxheWJhY2tT
ZXNzaW9uSW50ZXJmYWNlLT5zZXRFeHRlcm5hbFBsYXliYWNrKGVuYWJsZWQsIHRhcmdldFR5cGUs
IGxvY2FsaXplZERldmljZU5hbWUpOwotfQotCi12b2lkIFdlYlZpZGVvRnVsbHNjcmVlbkludGVy
ZmFjZUFWS2l0OjpleHRlcm5hbFBsYXliYWNrRW5hYmxlZENoYW5nZWQoYm9vbCBlbmFibGVkKQor
dm9pZCBXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdDo6ZXh0ZXJuYWxQbGF5YmFja0No
YW5nZWQoYm9vbCBlbmFibGVkLCBXZWJQbGF5YmFja1Nlc3Npb25Nb2RlbDo6RXh0ZXJuYWxQbGF5
YmFja1RhcmdldFR5cGUsIGNvbnN0IFN0cmluZyYpCiB7CiAgICAgW21fcGxheWVyTGF5ZXJWaWV3
IHNldEhpZGRlbjplbmFibGVkXTsKIH0KIAotdm9pZCBXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZh
Y2VBVktpdDo6c2V0V2lyZWxlc3NWaWRlb1BsYXliYWNrRGlzYWJsZWQoYm9vbCBkaXNhYmxlZCkK
LXsKLSAgICBtX3BsYXliYWNrU2Vzc2lvbkludGVyZmFjZS0+c2V0V2lyZWxlc3NWaWRlb1BsYXli
YWNrRGlzYWJsZWQoZGlzYWJsZWQpOwotfQotCi1ib29sIFdlYlZpZGVvRnVsbHNjcmVlbkludGVy
ZmFjZUFWS2l0Ojp3aXJlbGVzc1ZpZGVvUGxheWJhY2tEaXNhYmxlZCgpIGNvbnN0Ci17Ci0gICAg
cmV0dXJuIG1fcGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlLT53aXJlbGVzc1ZpZGVvUGxheWJhY2tE
aXNhYmxlZCgpOwotfQotCiB2b2lkIFdlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0Ojph
cHBsaWNhdGlvbkRpZEJlY29tZUFjdGl2ZSgpCiB7CiAgICAgTE9HKEZ1bGxzY3JlZW4sICJXZWJW
aWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdDo6YXBwbGljYXRpb25EaWRCZWNvbWVBY3RpdmUo
JXApIiwgdGhpcyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvV2Vi
UGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlTWFjLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9t
YWMvV2ViUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlTWFjLmgKaW5kZXggY2M5NjE3ZDgzNDk1NTY2
YjFlNGVhOWEwODE1NTllMjM5MDQ0NmRkMi4uMDU0YTg0M2I0NTBiNGY4OGQwMWUzMWY2ZDU4ZTgx
N2Y0NjUzZTVlMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1dlYlBs
YXliYWNrU2Vzc2lvbkludGVyZmFjZU1hYy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21hYy9XZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2VNYWMuaApAQCAtMzAsNiArMzAsNyBAQAog
CiAjaW5jbHVkZSAiSFRNTE1lZGlhRWxlbWVudEVudW1zLmgiCiAjaW5jbHVkZSAiV2ViUGxheWJh
Y2tTZXNzaW9uSW50ZXJmYWNlLmgiCisjaW5jbHVkZSAiV2ViUGxheWJhY2tTZXNzaW9uTW9kZWwu
aCIKICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgogI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIu
aD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KQEAgLTQwLDQ3ICs0MSwzNCBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBJbnRSZWN0OwogY2xhc3MgV2ViUGxheWJhY2tTZXNz
aW9uTW9kZWw7CiAKLWNsYXNzIFdlYlBsYXliYWNrU2Vzc2lvbkludGVyZmFjZU1hY0NsaWVudCB7
Ci1wdWJsaWM6Ci0gICAgdmlydHVhbCB+V2ViUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlTWFjQ2xp
ZW50KCkgeyB9Ci0KLSAgICB2aXJ0dWFsIHZvaWQgcmF0ZUNoYW5nZWQoYm9vbCBpc1BsYXlpbmcs
IGZsb2F0IHBsYXliYWNrUmF0ZSkgPSAwOwotfTsKLQogY2xhc3MgV0VCQ09SRV9FWFBPUlQgV2Vi
UGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlTWFjIGZpbmFsCiAgICAgOiBwdWJsaWMgV2ViUGxheWJh
Y2tTZXNzaW9uSW50ZXJmYWNlCisgICAgLCBwdWJsaWMgV2ViUGxheWJhY2tTZXNzaW9uTW9kZWxD
bGllbnQKICAgICAsIHB1YmxpYyBSZWZDb3VudGVkPFdlYlBsYXliYWNrU2Vzc2lvbkludGVyZmFj
ZU1hYz4gewogcHVibGljOgotICAgIHN0YXRpYyBSZWY8V2ViUGxheWJhY2tTZXNzaW9uSW50ZXJm
YWNlTWFjPiBjcmVhdGUoKQotICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgV2Vi
UGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlTWFjKCkpOwotICAgIH0KKyAgICBzdGF0aWMgUmVmPFdl
YlBsYXliYWNrU2Vzc2lvbkludGVyZmFjZU1hYz4gY3JlYXRlKFdlYlBsYXliYWNrU2Vzc2lvbk1v
ZGVsJik7CiAgICAgdmlydHVhbCB+V2ViUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlTWFjKCk7CiAg
ICAgV2ViUGxheWJhY2tTZXNzaW9uTW9kZWwqIHdlYlBsYXliYWNrU2Vzc2lvbk1vZGVsKCkgY29u
c3QgeyByZXR1cm4gbV9wbGF5YmFja1Nlc3Npb25Nb2RlbDsgfQotICAgIFdFQkNPUkVfRVhQT1JU
IHZvaWQgc2V0V2ViUGxheWJhY2tTZXNzaW9uTW9kZWwoV2ViUGxheWJhY2tTZXNzaW9uTW9kZWwq
KTsKLSAgICBXZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2VNYWNDbGllbnQqIGNsaWVudCgpIGNv
bnN0IHsgcmV0dXJuIG1fY2xpZW50OyB9Ci0gICAgdm9pZCBzZXRDbGllbnQoV2ViUGxheWJhY2tT
ZXNzaW9uSW50ZXJmYWNlTWFjQ2xpZW50Kik7CiAKKyAgICAvLyBXZWJQbGF5YmFja1Nlc3Npb25J
bnRlcmZhY2UKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHJlc2V0TWVkaWFTdGF0ZSgpIGZpbmFs
IHsgfQotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0RHVyYXRpb24oZG91YmxlKSBmaW5hbDsK
LSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldEN1cnJlbnRUaW1lKGRvdWJsZSAvKmN1cnJlbnRU
aW1lKi8sIGRvdWJsZSAvKmFuY2hvclRpbWUqLykgZmluYWw7Ci0gICAgV0VCQ09SRV9FWFBPUlQg
dm9pZCBzZXRCdWZmZXJlZFRpbWUoZG91YmxlKSBmaW5hbCB7IH0KLSAgICBXRUJDT1JFX0VYUE9S
VCB2b2lkIHNldFJhdGUoYm9vbCAvKmlzUGxheWluZyovLCBmbG9hdCAvKnBsYXliYWNrUmF0ZSov
KSBmaW5hbDsKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldFNlZWthYmxlUmFuZ2VzKGNvbnN0
IFRpbWVSYW5nZXMmKSBmaW5hbDsKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldENhblBsYXlG
YXN0UmV2ZXJzZShib29sKSBmaW5hbCB7IH0KLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldEF1
ZGlvTWVkaWFTZWxlY3Rpb25PcHRpb25zKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiAvKm9wdGlvbnMq
LywgdWludDY0X3QgLypzZWxlY3RlZEluZGV4Ki8pIGZpbmFsOwotICAgIFdFQkNPUkVfRVhQT1JU
IHZvaWQgc2V0TGVnaWJsZU1lZGlhU2VsZWN0aW9uT3B0aW9ucyhjb25zdCBWZWN0b3I8U3RyaW5n
PiYgLypvcHRpb25zKi8sIHVpbnQ2NF90IC8qc2VsZWN0ZWRJbmRleCovKSBmaW5hbDsKLSAgICBX
RUJDT1JFX0VYUE9SVCB2b2lkIHNldEV4dGVybmFsUGxheWJhY2soYm9vbCwgRXh0ZXJuYWxQbGF5
YmFja1RhcmdldFR5cGUsIFN0cmluZykgZmluYWwgeyB9Ci0gICAgV0VCQ09SRV9FWFBPUlQgdm9p
ZCBzZXRXaXJlbGVzc1ZpZGVvUGxheWJhY2tEaXNhYmxlZChib29sKSBmaW5hbCB7IH0KKworICAg
IC8vIFdlYlBsYXliYWNrU2Vzc2lvbk1vZGVsQ2xpZW50CisgICAgV0VCQ09SRV9FWFBPUlQgdm9p
ZCBkdXJhdGlvbkNoYW5nZWQoZG91YmxlKSBmaW5hbDsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lk
IGN1cnJlbnRUaW1lQ2hhbmdlZChkb3VibGUgLypjdXJyZW50VGltZSovLCBkb3VibGUgLyphbmNo
b3JUaW1lKi8pIGZpbmFsOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgcmF0ZUNoYW5nZWQoYm9v
bCAvKmlzUGxheWluZyovLCBmbG9hdCAvKnBsYXliYWNrUmF0ZSovKSBmaW5hbDsKKyAgICBXRUJD
T1JFX0VYUE9SVCB2b2lkIHNlZWthYmxlUmFuZ2VzQ2hhbmdlZChjb25zdCBUaW1lUmFuZ2VzJikg
ZmluYWw7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBhdWRpb01lZGlhU2VsZWN0aW9uT3B0aW9u
c0NoYW5nZWQoY29uc3QgVmVjdG9yPFN0cmluZz4mIC8qb3B0aW9ucyovLCB1aW50NjRfdCAvKnNl
bGVjdGVkSW5kZXgqLykgZmluYWw7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBsZWdpYmxlTWVk
aWFTZWxlY3Rpb25PcHRpb25zQ2hhbmdlZChjb25zdCBWZWN0b3I8U3RyaW5nPiYgLypvcHRpb25z
Ki8sIHVpbnQ2NF90IC8qc2VsZWN0ZWRJbmRleCovKSBmaW5hbDsKICAgICBXRUJDT1JFX0VYUE9S
VCB2b2lkIGludmFsaWRhdGUoKTsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGVuc3VyZUNvbnRy
b2xzTWFuYWdlcigpOwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0UGxheUJhY2tDb250cm9s
c01hbmFnZXIoV2ViUGxheWJhY2tDb250cm9sc01hbmFnZXIgKik7CiAgICAgV0VCQ09SRV9FWFBP
UlQgV2ViUGxheWJhY2tDb250cm9sc01hbmFnZXIgKnBsYXlCYWNrQ29udHJvbHNNYW5hZ2VyKCk7
CiAKIHByaXZhdGU6CisgICAgV2ViUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlTWFjKFdlYlBsYXli
YWNrU2Vzc2lvbk1vZGVsJik7CiAgICAgV2ViUGxheWJhY2tTZXNzaW9uTW9kZWwqIG1fcGxheWJh
Y2tTZXNzaW9uTW9kZWwgeyBudWxscHRyIH07Ci0gICAgV2ViUGxheWJhY2tDb250cm9sc01hbmFn
ZXIgKm1fcGxheWJhY2tDb250cm9sc01hbmFnZXI7Ci0gICAgV2ViUGxheWJhY2tTZXNzaW9uSW50
ZXJmYWNlTWFjQ2xpZW50KiBtX2NsaWVudCB7IG51bGxwdHIgfTsKKyAgICBXZWJQbGF5YmFja0Nv
bnRyb2xzTWFuYWdlciAqbV9wbGF5YmFja0NvbnRyb2xzTWFuYWdlciAgeyBudWxscHRyIH07CiB9
OwogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvV2ViUGxheWJh
Y2tTZXNzaW9uSW50ZXJmYWNlTWFjLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1dl
YlBsYXliYWNrU2Vzc2lvbkludGVyZmFjZU1hYy5tbQppbmRleCAyNGM0ZDZhYjRmYzI0Yjk2YWU3
MzI4OTUxODQzODIwZDFkZmMyY2Y1Li4xNmYxOGNmNWNjYmUzMDcxOTIxOGEyOTNkZWUyMDYxY2I3
ZWYwMDVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvV2ViUGxheWJh
Y2tTZXNzaW9uSW50ZXJmYWNlTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21h
Yy9XZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2VNYWMubW0KQEAgLTQ1LDI0ICs0NSwyNCBAQCB1
c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1XZWJQbGF5
YmFja1Nlc3Npb25JbnRlcmZhY2VNYWM6On5XZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2VNYWMo
KQorUmVmPFdlYlBsYXliYWNrU2Vzc2lvbkludGVyZmFjZU1hYz4gV2ViUGxheWJhY2tTZXNzaW9u
SW50ZXJmYWNlTWFjOjpjcmVhdGUoV2ViUGxheWJhY2tTZXNzaW9uTW9kZWwmIG1vZGVsKQogewor
ICAgIGF1dG8gaW50ZXJmYWNlID0gYWRvcHRSZWYoKm5ldyBXZWJQbGF5YmFja1Nlc3Npb25JbnRl
cmZhY2VNYWMobW9kZWwpKTsKKyAgICBtb2RlbC5hZGRDbGllbnQoaW50ZXJmYWNlKTsKKyAgICBy
ZXR1cm4gaW50ZXJmYWNlOwogfQogCi12b2lkIFdlYlBsYXliYWNrU2Vzc2lvbkludGVyZmFjZU1h
Yzo6c2V0V2ViUGxheWJhY2tTZXNzaW9uTW9kZWwoV2ViUGxheWJhY2tTZXNzaW9uTW9kZWwqIG1v
ZGVsKQorV2ViUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlTWFjOjpXZWJQbGF5YmFja1Nlc3Npb25J
bnRlcmZhY2VNYWMoV2ViUGxheWJhY2tTZXNzaW9uTW9kZWwmIG1vZGVsKQorICAgIDogbV9wbGF5
YmFja1Nlc3Npb25Nb2RlbCgmbW9kZWwpCiB7Ci0gICAgbV9wbGF5YmFja1Nlc3Npb25Nb2RlbCA9
IG1vZGVsOwogfQogCi12b2lkIFdlYlBsYXliYWNrU2Vzc2lvbkludGVyZmFjZU1hYzo6c2V0Q2xp
ZW50KFdlYlBsYXliYWNrU2Vzc2lvbkludGVyZmFjZU1hY0NsaWVudCogY2xpZW50KQorV2ViUGxh
eWJhY2tTZXNzaW9uSW50ZXJmYWNlTWFjOjp+V2ViUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlTWFj
KCkKIHsKLSAgICBtX2NsaWVudCA9IGNsaWVudDsKLQotICAgIGlmIChtX2NsaWVudCAmJiBtX3Bs
YXliYWNrU2Vzc2lvbk1vZGVsKQotICAgICAgICBtX2NsaWVudC0+cmF0ZUNoYW5nZWQobV9wbGF5
YmFja1Nlc3Npb25Nb2RlbC0+aXNQbGF5aW5nKCksIG1fcGxheWJhY2tTZXNzaW9uTW9kZWwtPnBs
YXliYWNrUmF0ZSgpKTsKKyAgICBpbnZhbGlkYXRlKCk7CiB9CiAKLXZvaWQgV2ViUGxheWJhY2tT
ZXNzaW9uSW50ZXJmYWNlTWFjOjpzZXREdXJhdGlvbihkb3VibGUgZHVyYXRpb24pCit2b2lkIFdl
YlBsYXliYWNrU2Vzc2lvbkludGVyZmFjZU1hYzo6ZHVyYXRpb25DaGFuZ2VkKGRvdWJsZSBkdXJh
dGlvbikKIHsKICAgICBXZWJQbGF5YmFja0NvbnRyb2xzTWFuYWdlciogY29udHJvbHNNYW5hZ2Vy
ID0gcGxheUJhY2tDb250cm9sc01hbmFnZXIoKTsKIApAQCAtNzMsNyArNzMsNyBAQCB2b2lkIFdl
YlBsYXliYWNrU2Vzc2lvbkludGVyZmFjZU1hYzo6c2V0RHVyYXRpb24oZG91YmxlIGR1cmF0aW9u
KQogICAgIGNvbnRyb2xzTWFuYWdlci5oYXNFbmFibGVkVmlkZW8gPSBZRVM7CiB9CiAKLXZvaWQg
V2ViUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlTWFjOjpzZXRDdXJyZW50VGltZShkb3VibGUgY3Vy
cmVudFRpbWUsIGRvdWJsZSBhbmNob3JUaW1lKQordm9pZCBXZWJQbGF5YmFja1Nlc3Npb25JbnRl
cmZhY2VNYWM6OmN1cnJlbnRUaW1lQ2hhbmdlZChkb3VibGUgY3VycmVudFRpbWUsIGRvdWJsZSBh
bmNob3JUaW1lKQogewogICAgIFdlYlBsYXliYWNrQ29udHJvbHNNYW5hZ2VyKiBjb250cm9sc01h
bmFnZXIgPSBwbGF5QmFja0NvbnRyb2xzTWFuYWdlcigpOwogCkBAIC04NCwxNCArODQsMTEgQEAg
dm9pZCBXZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2VNYWM6OnNldEN1cnJlbnRUaW1lKGRvdWJs
ZSBjdXJyZW50VGltZSwgZG91YmxlIGEKICAgICBbY29udHJvbHNNYW5hZ2VyIHNldFRpbWluZzp0
aW1pbmddOwogfQogCi12b2lkIFdlYlBsYXliYWNrU2Vzc2lvbkludGVyZmFjZU1hYzo6c2V0UmF0
ZShib29sIGlzUGxheWluZywgZmxvYXQgcGxheWJhY2tSYXRlKQordm9pZCBXZWJQbGF5YmFja1Nl
c3Npb25JbnRlcmZhY2VNYWM6OnJhdGVDaGFuZ2VkKGJvb2wgaXNQbGF5aW5nLCBmbG9hdCBwbGF5
YmFja1JhdGUpCiB7CiAgICAgV2ViUGxheWJhY2tDb250cm9sc01hbmFnZXIqIGNvbnRyb2xzTWFu
YWdlciA9IHBsYXlCYWNrQ29udHJvbHNNYW5hZ2VyKCk7CiAgICAgW2NvbnRyb2xzTWFuYWdlciBz
ZXRSYXRlOmlzUGxheWluZyA/IHBsYXliYWNrUmF0ZSA6IDAuXTsKICAgICBbY29udHJvbHNNYW5h
Z2VyIHNldFBsYXlpbmc6aXNQbGF5aW5nXTsKLQotICAgIGlmIChtX2NsaWVudCkKLSAgICAgICAg
bV9jbGllbnQtPnJhdGVDaGFuZ2VkKGlzUGxheWluZywgcGxheWJhY2tSYXRlKTsKIH0KIAogc3Rh
dGljIFJldGFpblB0cjxOU011dGFibGVBcnJheT4gdGltZVJhbmdlc1RvQXJyYXkoY29uc3QgVGlt
ZVJhbmdlcyYgdGltZVJhbmdlcykKQEAgLTEwNywyNiArMTA0LDI4IEBAIHN0YXRpYyBSZXRhaW5Q
dHI8TlNNdXRhYmxlQXJyYXk+IHRpbWVSYW5nZXNUb0FycmF5KGNvbnN0IFRpbWVSYW5nZXMmIHRp
bWVSYW5nZXMpCiAgICAgcmV0dXJuIHJhbmdlQXJyYXk7CiB9CiAKLXZvaWQgV2ViUGxheWJhY2tT
ZXNzaW9uSW50ZXJmYWNlTWFjOjpzZXRTZWVrYWJsZVJhbmdlcyhjb25zdCBUaW1lUmFuZ2VzJiB0
aW1lUmFuZ2VzKQordm9pZCBXZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2VNYWM6OnNlZWthYmxl
UmFuZ2VzQ2hhbmdlZChjb25zdCBUaW1lUmFuZ2VzJiB0aW1lUmFuZ2VzKQogewotICAgIFdlYlBs
YXliYWNrQ29udHJvbHNNYW5hZ2VyKiBjb250cm9sc01hbmFnZXIgPSBwbGF5QmFja0NvbnRyb2xz
TWFuYWdlcigpOwotICAgIFtjb250cm9sc01hbmFnZXIgc2V0U2Vla2FibGVUaW1lUmFuZ2VzOnRp
bWVSYW5nZXNUb0FycmF5KHRpbWVSYW5nZXMpLmdldCgpXTsKKyAgICBbcGxheUJhY2tDb250cm9s
c01hbmFnZXIoKSBzZXRTZWVrYWJsZVRpbWVSYW5nZXM6dGltZVJhbmdlc1RvQXJyYXkodGltZVJh
bmdlcykuZ2V0KCldOwogfQogCi12b2lkIFdlYlBsYXliYWNrU2Vzc2lvbkludGVyZmFjZU1hYzo6
c2V0QXVkaW9NZWRpYVNlbGVjdGlvbk9wdGlvbnMoY29uc3QgVmVjdG9yPFdURjo6U3RyaW5nPiYg
b3B0aW9ucywgdWludDY0X3Qgc2VsZWN0ZWRJbmRleCkKK3ZvaWQgV2ViUGxheWJhY2tTZXNzaW9u
SW50ZXJmYWNlTWFjOjphdWRpb01lZGlhU2VsZWN0aW9uT3B0aW9uc0NoYW5nZWQoY29uc3QgVmVj
dG9yPFdURjo6U3RyaW5nPiYgb3B0aW9ucywgdWludDY0X3Qgc2VsZWN0ZWRJbmRleCkKIHsKLSAg
ICBXZWJQbGF5YmFja0NvbnRyb2xzTWFuYWdlciogY29udHJvbHNNYW5hZ2VyID0gcGxheUJhY2tD
b250cm9sc01hbmFnZXIoKTsKLSAgICBbY29udHJvbHNNYW5hZ2VyIHNldEF1ZGlvTWVkaWFTZWxl
Y3Rpb25PcHRpb25zOm9wdGlvbnMgd2l0aFNlbGVjdGVkSW5kZXg6c3RhdGljX2Nhc3Q8TlNVSW50
ZWdlcj4oc2VsZWN0ZWRJbmRleCldOworICAgIFtwbGF5QmFja0NvbnRyb2xzTWFuYWdlcigpIHNl
dEF1ZGlvTWVkaWFTZWxlY3Rpb25PcHRpb25zOm9wdGlvbnMgd2l0aFNlbGVjdGVkSW5kZXg6c3Rh
dGljX2Nhc3Q8TlNVSW50ZWdlcj4oc2VsZWN0ZWRJbmRleCldOwogfQogCi12b2lkIFdlYlBsYXli
YWNrU2Vzc2lvbkludGVyZmFjZU1hYzo6c2V0TGVnaWJsZU1lZGlhU2VsZWN0aW9uT3B0aW9ucyhj
b25zdCBWZWN0b3I8V1RGOjpTdHJpbmc+JiBvcHRpb25zLCB1aW50NjRfdCBzZWxlY3RlZEluZGV4
KQordm9pZCBXZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2VNYWM6OmxlZ2libGVNZWRpYVNlbGVj
dGlvbk9wdGlvbnNDaGFuZ2VkKGNvbnN0IFZlY3RvcjxXVEY6OlN0cmluZz4mIG9wdGlvbnMsIHVp
bnQ2NF90IHNlbGVjdGVkSW5kZXgpCiB7Ci0gICAgV2ViUGxheWJhY2tDb250cm9sc01hbmFnZXIq
IGNvbnRyb2xzTWFuYWdlciA9IHBsYXlCYWNrQ29udHJvbHNNYW5hZ2VyKCk7Ci0gICAgW2NvbnRy
b2xzTWFuYWdlciBzZXRMZWdpYmxlTWVkaWFTZWxlY3Rpb25PcHRpb25zOm9wdGlvbnMgd2l0aFNl
bGVjdGVkSW5kZXg6c3RhdGljX2Nhc3Q8TlNVSW50ZWdlcj4oc2VsZWN0ZWRJbmRleCldOworICAg
IFtwbGF5QmFja0NvbnRyb2xzTWFuYWdlcigpIHNldExlZ2libGVNZWRpYVNlbGVjdGlvbk9wdGlv
bnM6b3B0aW9ucyB3aXRoU2VsZWN0ZWRJbmRleDpzdGF0aWNfY2FzdDxOU1VJbnRlZ2VyPihzZWxl
Y3RlZEluZGV4KV07CiB9CiAKIHZvaWQgV2ViUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlTWFjOjpp
bnZhbGlkYXRlKCkKIHsKKyAgICBpZiAoIW1fcGxheWJhY2tTZXNzaW9uTW9kZWwpCisgICAgICAg
IHJldHVybjsKKworICAgIG1fcGxheWJhY2tTZXNzaW9uTW9kZWwtPnJlbW92ZUNsaWVudCgqdGhp
cyk7CisgICAgbV9wbGF5YmFja1Nlc3Npb25Nb2RlbCA9IG51bGxwdHI7CiB9CiAKIHZvaWQgV2Vi
UGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlTWFjOjplbnN1cmVDb250cm9sc01hbmFnZXIoKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1dlYlZpZGVvRnVsbHNjcmVlbklu
dGVyZmFjZU1hYy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1dlYlZpZGVvRnVsbHNj
cmVlbkludGVyZmFjZU1hYy5oCmluZGV4IDc3MDVlNDg5YjIzNTA5ZTk4YWJjNDlmYWQyMmFjZjkw
ZThhMTZmOTQuLmRiMThjMGRhMDExNmRiYjU3ZDA5OTdlNjZhNzA4YWE1ZTcxYWVjNDcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9XZWJWaWRlb0Z1bGxzY3JlZW5JbnRl
cmZhY2VNYWMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvV2ViVmlkZW9GdWxs
c2NyZWVuSW50ZXJmYWNlTWFjLmgKQEAgLTMwLDcgKzMwLDkgQEAKIAogI2luY2x1ZGUgIkhUTUxN
ZWRpYUVsZW1lbnRFbnVtcy5oIgogI2luY2x1ZGUgIldlYlBsYXliYWNrU2Vzc2lvbkludGVyZmFj
ZU1hYy5oIgorI2luY2x1ZGUgIldlYlBsYXliYWNrU2Vzc2lvbk1vZGVsLmgiCiAjaW5jbHVkZSAi
V2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlLmgiCisjaW5jbHVkZSAiV2ViVmlkZW9GdWxsc2Ny
ZWVuTW9kZWwuaCIKICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgogI2luY2x1ZGUgPHd0Zi9S
ZXRhaW5QdHIuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KQEAgLTQwLDEzICs0
MiwxNCBAQCBPQkpDX0NMQVNTIFdlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZU1hY09iakM7CiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIEludFJlY3Q7CitjbGFzcyBGbG9hdFNpemU7CiBj
bGFzcyBXZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2VNYWM7CiBjbGFzcyBXZWJWaWRlb0Z1bGxz
Y3JlZW5DaGFuZ2VPYnNlcnZlcjsKLWNsYXNzIFdlYlZpZGVvRnVsbHNjcmVlbk1vZGVsOwogCiBj
bGFzcyBXRUJDT1JFX0VYUE9SVCBXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VNYWMKICAgICA6
IHB1YmxpYyBXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2UKLSAgICAsIHByaXZhdGUgV2ViUGxh
eWJhY2tTZXNzaW9uSW50ZXJmYWNlTWFjQ2xpZW50CisgICAgLCBwdWJsaWMgV2ViVmlkZW9GdWxs
c2NyZWVuTW9kZWxDbGllbnQKKyAgICAsIHByaXZhdGUgV2ViUGxheWJhY2tTZXNzaW9uTW9kZWxD
bGllbnQKICAgICAsIHB1YmxpYyBSZWZDb3VudGVkPFdlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFj
ZU1hYz4gewogCiBwdWJsaWM6CkBAIC02MSwxOCArNjQsMTMgQEAgcHVibGljOgogICAgIFdlYlZp
ZGVvRnVsbHNjcmVlbkNoYW5nZU9ic2VydmVyKiB3ZWJWaWRlb0Z1bGxzY3JlZW5DaGFuZ2VPYnNl
cnZlcigpIGNvbnN0IHsgcmV0dXJuIG1fZnVsbHNjcmVlbkNoYW5nZU9ic2VydmVyOyB9CiAgICAg
V0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRXZWJWaWRlb0Z1bGxzY3JlZW5DaGFuZ2VPYnNlcnZlcihX
ZWJWaWRlb0Z1bGxzY3JlZW5DaGFuZ2VPYnNlcnZlciopOwogCi0gICAgV0VCQ09SRV9FWFBPUlQg
dm9pZCByZXNldE1lZGlhU3RhdGUoKSBvdmVycmlkZSB7IH0KLSAgICBXRUJDT1JFX0VYUE9SVCB2
b2lkIHNldER1cmF0aW9uKGRvdWJsZSkgb3ZlcnJpZGU7Ci0gICAgV0VCQ09SRV9FWFBPUlQgdm9p
ZCBzZXRDdXJyZW50VGltZShkb3VibGUgLypjdXJyZW50VGltZSovLCBkb3VibGUgLyphbmNob3JU
aW1lKi8pIG92ZXJyaWRlOwotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0QnVmZmVyZWRUaW1l
KGRvdWJsZSkgb3ZlcnJpZGUgeyB9Ci0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRSYXRlKGJv
b2wgLyppc1BsYXlpbmcqLywgZmxvYXQgLypwbGF5YmFja1JhdGUqLykgb3ZlcnJpZGU7Ci0gICAg
V0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRWaWRlb0RpbWVuc2lvbnMoYm9vbCBoYXNWaWRlbywgZmxv
YXQgd2lkdGgsIGZsb2F0IGhlaWdodCkgZmluYWw7Ci0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBz
ZXRTZWVrYWJsZVJhbmdlcyhjb25zdCBUaW1lUmFuZ2VzJikgb3ZlcnJpZGU7Ci0gICAgV0VCQ09S
RV9FWFBPUlQgdm9pZCBzZXRDYW5QbGF5RmFzdFJldmVyc2UoYm9vbCkgb3ZlcnJpZGUgeyB9Ci0g
ICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRBdWRpb01lZGlhU2VsZWN0aW9uT3B0aW9ucyhjb25z
dCBWZWN0b3I8U3RyaW5nPiYgLypvcHRpb25zKi8sIHVpbnQ2NF90IC8qc2VsZWN0ZWRJbmRleCov
KSBvdmVycmlkZTsKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldExlZ2libGVNZWRpYVNlbGVj
dGlvbk9wdGlvbnMoY29uc3QgVmVjdG9yPFN0cmluZz4mIC8qb3B0aW9ucyovLCB1aW50NjRfdCAv
KnNlbGVjdGVkSW5kZXgqLykgb3ZlcnJpZGU7Ci0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRF
eHRlcm5hbFBsYXliYWNrKGJvb2wgZW5hYmxlZCwgRXh0ZXJuYWxQbGF5YmFja1RhcmdldFR5cGUs
IFN0cmluZyBsb2NhbGl6ZWREZXZpY2VOYW1lKSBvdmVycmlkZTsKLSAgICBXRUJDT1JFX0VYUE9S
VCB2b2lkIHNldFdpcmVsZXNzVmlkZW9QbGF5YmFja0Rpc2FibGVkKGJvb2wpIG92ZXJyaWRlIHsg
fQorICAgIC8vIFdlYlBsYXliYWNrU2Vzc2lvbk1vZGVsQ2xpZW50CisgICAgV0VCQ09SRV9FWFBP
UlQgdm9pZCByYXRlQ2hhbmdlZChib29sIGlzUGxheWluZywgZmxvYXQgcGxheWJhY2tSYXRlKSBv
dmVycmlkZTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGV4dGVybmFsUGxheWJhY2tDaGFuZ2Vk
KGJvb2wgIGVuYWJsZWQsIFdlYlBsYXliYWNrU2Vzc2lvbk1vZGVsOjpFeHRlcm5hbFBsYXliYWNr
VGFyZ2V0VHlwZSwgY29uc3QgU3RyaW5nJiBsb2NhbGl6ZWREZXZpY2VOYW1lKSBvdmVycmlkZTsK
KworICAgIC8vIFdlYlZpZGVvRnVsbHNjcmVlbk1vZGVsQ2xpZW50CisgICAgV0VCQ09SRV9FWFBP
UlQgdm9pZCBoYXNWaWRlb0NoYW5nZWQoYm9vbCkgZmluYWw7CisgICAgV0VCQ09SRV9FWFBPUlQg
dm9pZCB2aWRlb0RpbWVuc2lvbnNDaGFuZ2VkKGNvbnN0IEZsb2F0U2l6ZSYpIGZpbmFsOwogCiAg
ICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXR1cEZ1bGxzY3JlZW4oTlNWaWV3JiBsYXllckhvc3Rl
ZFZpZXcsIGNvbnN0IEludFJlY3QmIGluaXRpYWxSZWN0LCBOU1dpbmRvdyAqcGFyZW50V2luZG93
LCBIVE1MTWVkaWFFbGVtZW50RW51bXM6OlZpZGVvRnVsbHNjcmVlbk1vZGUsIGJvb2wgYWxsb3dz
UGljdHVyZUluUGljdHVyZVBsYXliYWNrKTsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGVudGVy
RnVsbHNjcmVlbigpOwpAQCAtOTUsOCArOTMsNiBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBP
UlQgYm9vbCBtYXlBdXRvbWF0aWNhbGx5U2hvd1ZpZGVvUGljdHVyZUluUGljdHVyZSgpIGNvbnN0
IHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgdm9pZCBhcHBsaWNhdGlvbkRpZEJlY29tZUFjdGl2ZSgp
IHsgfQogCi0gICAgdm9pZCByYXRlQ2hhbmdlZChib29sIGlzUGxheWluZywgZmxvYXQgcGxheWJh
Y2tSYXRlKSBvdmVycmlkZTsKLQogICAgIFdFQkNPUkVfRVhQT1JUIFdlYlZpZGVvRnVsbHNjcmVl
bkludGVyZmFjZU1hY09iakMgKnZpZGVvRnVsbHNjcmVlbkludGVyZmFjZU9iakMoKTsKIAogcHJp
dmF0ZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9XZWJWaWRlb0Z1
bGxzY3JlZW5JbnRlcmZhY2VNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvV2Vi
VmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlTWFjLm1tCmluZGV4IDQzOGUzOWNmNzk4YzVkYTU4ZWEy
ZGM1ZjNiYmM3ZmE0OTFmM2ZlYjUuLmE4MDkzYjM0NGJhZjNmNzZlODg4MTk5ZjA2ODE2ODA5NmNi
ZDMxNmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9XZWJWaWRlb0Z1
bGxzY3JlZW5JbnRlcmZhY2VNYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFj
L1dlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZU1hYy5tbQpAQCAtMzUxLDE4ICszNTEsMjUgQEAg
bmFtZXNwYWNlIFdlYkNvcmUgewogV2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlTWFjOjpXZWJW
aWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VNYWMoV2ViUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlTWFj
JiBwbGF5YmFja1Nlc3Npb25JbnRlcmZhY2UpCiAgICAgOiBtX3BsYXliYWNrU2Vzc2lvbkludGVy
ZmFjZShwbGF5YmFja1Nlc3Npb25JbnRlcmZhY2UpCiB7Ci0gICAgbV9wbGF5YmFja1Nlc3Npb25J
bnRlcmZhY2UtPnNldENsaWVudCh0aGlzKTsKKyAgICBBU1NFUlQobV9wbGF5YmFja1Nlc3Npb25J
bnRlcmZhY2UtPndlYlBsYXliYWNrU2Vzc2lvbk1vZGVsKCkpOworICAgIG1fcGxheWJhY2tTZXNz
aW9uSW50ZXJmYWNlLT53ZWJQbGF5YmFja1Nlc3Npb25Nb2RlbCgpLT5hZGRDbGllbnQoKnRoaXMp
OwogfQogCiBXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VNYWM6On5XZWJWaWRlb0Z1bGxzY3Jl
ZW5JbnRlcmZhY2VNYWMoKQogewotICAgIGlmIChtX3BsYXliYWNrU2Vzc2lvbkludGVyZmFjZS0+
Y2xpZW50KCkgPT0gdGhpcykKLSAgICAgICAgbV9wbGF5YmFja1Nlc3Npb25JbnRlcmZhY2UtPnNl
dENsaWVudChudWxscHRyKTsKKyAgICBpZiAobV9wbGF5YmFja1Nlc3Npb25JbnRlcmZhY2UtPndl
YlBsYXliYWNrU2Vzc2lvbk1vZGVsKCkpCisgICAgICAgIG1fcGxheWJhY2tTZXNzaW9uSW50ZXJm
YWNlLT53ZWJQbGF5YmFja1Nlc3Npb25Nb2RlbCgpLT5yZW1vdmVDbGllbnQoKnRoaXMpOworICAg
IGlmIChtX3ZpZGVvRnVsbHNjcmVlbk1vZGVsKQorICAgICAgICBtX3ZpZGVvRnVsbHNjcmVlbk1v
ZGVsLT5yZW1vdmVDbGllbnQoKnRoaXMpOwogfQogCiB2b2lkIFdlYlZpZGVvRnVsbHNjcmVlbklu
dGVyZmFjZU1hYzo6c2V0V2ViVmlkZW9GdWxsc2NyZWVuTW9kZWwoV2ViVmlkZW9GdWxsc2NyZWVu
TW9kZWwqIG1vZGVsKQogeworICAgIGlmIChtX3ZpZGVvRnVsbHNjcmVlbk1vZGVsKQorICAgICAg
ICBtX3ZpZGVvRnVsbHNjcmVlbk1vZGVsLT5yZW1vdmVDbGllbnQoKnRoaXMpOwogICAgIG1fdmlk
ZW9GdWxsc2NyZWVuTW9kZWwgPSBtb2RlbDsKKyAgICBpZiAobV92aWRlb0Z1bGxzY3JlZW5Nb2Rl
bCkKKyAgICAgICAgbV92aWRlb0Z1bGxzY3JlZW5Nb2RlbC0+YWRkQ2xpZW50KCp0aGlzKTsKIH0K
IAogdm9pZCBXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VNYWM6OnNldFdlYlZpZGVvRnVsbHNj
cmVlbkNoYW5nZU9ic2VydmVyKFdlYlZpZGVvRnVsbHNjcmVlbkNoYW5nZU9ic2VydmVyKiBvYnNl
cnZlcikKQEAgLTM5Miw0MSArMzk5LDExIEBAIHZvaWQgV2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJm
YWNlTWFjOjpjbGVhck1vZGUoSFRNTE1lZGlhRWxlbWVudEVudW1zOjpWaWRlb0Z1bGxzCiAgICAg
ICAgIG1fdmlkZW9GdWxsc2NyZWVuTW9kZWwtPmZ1bGxzY3JlZW5Nb2RlQ2hhbmdlZChtX21vZGUp
OwogfQogCi12b2lkIFdlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZU1hYzo6c2V0RHVyYXRpb24o
ZG91YmxlIGR1cmF0aW9uKQotewotICAgIG1fcGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlLT5zZXRE
dXJhdGlvbihkdXJhdGlvbik7Ci19Ci0KLXZvaWQgV2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNl
TWFjOjpzZXRDdXJyZW50VGltZShkb3VibGUgY3VycmVudFRpbWUsIGRvdWJsZSBhbmNob3JUaW1l
KQotewotICAgIG1fcGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlLT5zZXRDdXJyZW50VGltZShjdXJy
ZW50VGltZSwgYW5jaG9yVGltZSk7Ci19Ci0KLXZvaWQgV2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJm
YWNlTWFjOjpzZXRSYXRlKGJvb2wgaXNQbGF5aW5nLCBmbG9hdCBwbGF5YmFja1JhdGUpCi17Ci0g
ICAgbV9wbGF5YmFja1Nlc3Npb25JbnRlcmZhY2UtPnNldFJhdGUoaXNQbGF5aW5nLCBwbGF5YmFj
a1JhdGUpOwotfQotCiB2b2lkIFdlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZU1hYzo6cmF0ZUNo
YW5nZWQoYm9vbCBpc1BsYXlpbmcsIGZsb2F0IHBsYXliYWNrUmF0ZSkKIHsKICAgICBbdmlkZW9G
dWxsc2NyZWVuSW50ZXJmYWNlT2JqQygpIHVwZGF0ZUlzUGxheWluZzppc1BsYXlpbmcgbmV3UGxh
eWJhY2tSYXRlOnBsYXliYWNrUmF0ZV07CiB9CiAKLXZvaWQgV2ViVmlkZW9GdWxsc2NyZWVuSW50
ZXJmYWNlTWFjOjpzZXRTZWVrYWJsZVJhbmdlcyhjb25zdCBUaW1lUmFuZ2VzJiB0aW1lUmFuZ2Vz
KQotewotICAgIG1fcGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlLT5zZXRTZWVrYWJsZVJhbmdlcyh0
aW1lUmFuZ2VzKTsKLX0KLQotdm9pZCBXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VNYWM6OnNl
dEF1ZGlvTWVkaWFTZWxlY3Rpb25PcHRpb25zKGNvbnN0IFZlY3RvcjxXVEY6OlN0cmluZz4mIG9w
dGlvbnMsIHVpbnQ2NF90IHNlbGVjdGVkSW5kZXgpCi17Ci0gICAgbV9wbGF5YmFja1Nlc3Npb25J
bnRlcmZhY2UtPnNldEF1ZGlvTWVkaWFTZWxlY3Rpb25PcHRpb25zKG9wdGlvbnMsIHNlbGVjdGVk
SW5kZXgpOwotfQotCi12b2lkIFdlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZU1hYzo6c2V0TGVn
aWJsZU1lZGlhU2VsZWN0aW9uT3B0aW9ucyhjb25zdCBWZWN0b3I8V1RGOjpTdHJpbmc+JiBvcHRp
b25zLCB1aW50NjRfdCBzZWxlY3RlZEluZGV4KQotewotICAgIG1fcGxheWJhY2tTZXNzaW9uSW50
ZXJmYWNlLT5zZXRMZWdpYmxlTWVkaWFTZWxlY3Rpb25PcHRpb25zKG9wdGlvbnMsIHNlbGVjdGVk
SW5kZXgpOwotfQotCiB2b2lkIFdlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZU1hYzo6ZW5zdXJl
Q29udHJvbHNNYW5hZ2VyKCkKIHsKICAgICBtX3BsYXliYWNrU2Vzc2lvbkludGVyZmFjZS0+ZW5z
dXJlQ29udHJvbHNNYW5hZ2VyKCk7CkBAIC01MzksMjYgKzUxNiwyOSBAQCB2b2lkIFdlYlZpZGVv
RnVsbHNjcmVlbkludGVyZmFjZU1hYzo6cHJlcGFyZWRUb1JldHVyblRvSW5saW5lKGJvb2wgdmlz
aWJsZSwgY29ucwogICAgIFttX3dlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZU9iakMgZXhpdFBJ
UEFuaW1hdGluZ1RvUmVjdDooTlNSZWN0KWlubGluZVJlY3QgaW5XaW5kb3c6cGFyZW50V2luZG93
XTsKIH0KIAotdm9pZCBXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VNYWM6OnNldEV4dGVybmFs
UGxheWJhY2soYm9vbCBlbmFibGVkLCBFeHRlcm5hbFBsYXliYWNrVGFyZ2V0VHlwZSwgU3RyaW5n
KQordm9pZCBXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VNYWM6OmV4dGVybmFsUGxheWJhY2tD
aGFuZ2VkKGJvb2wgZW5hYmxlZCwgV2ViUGxheWJhY2tTZXNzaW9uTW9kZWw6OkV4dGVybmFsUGxh
eWJhY2tUYXJnZXRUeXBlLCBjb25zdCBTdHJpbmcmKQogewotICAgIExPRyhGdWxsc2NyZWVuLCAi
V2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlTWFjOjpzZXRFeHRlcm5hbFBsYXliYWNrKCVwKSwg
ZW5hYmxlZDolcyIsIHRoaXMsIGJvb2xTdHJpbmcoZW5hYmxlZCkpOworICAgIExPRyhGdWxsc2Ny
ZWVuLCAiV2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlTWFjOjpleHRlcm5hbFBsYXliYWNrQ2hh
bmdlZCglcCksIGVuYWJsZWQ6JXMiLCB0aGlzLCBib29sU3RyaW5nKGVuYWJsZWQpKTsKIAogICAg
IGlmIChlbmFibGVkICYmIG1fbW9kZSA9PSBIVE1MTWVkaWFFbGVtZW50RW51bXM6OlZpZGVvRnVs
bHNjcmVlbk1vZGVQaWN0dXJlSW5QaWN0dXJlKQogICAgICAgICBleGl0RnVsbHNjcmVlbihJbnRS
ZWN0KCksIG5pbCk7CiB9CiAKLXZvaWQgV2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlTWFjOjpz
ZXRWaWRlb0RpbWVuc2lvbnMoYm9vbCBoYXNWaWRlbywgZmxvYXQgd2lkdGgsIGZsb2F0IGhlaWdo
dCkKK3ZvaWQgV2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlTWFjOjpoYXNWaWRlb0NoYW5nZWQo
Ym9vbCBoYXNWaWRlbykKIHsKLSAgICBMT0coRnVsbHNjcmVlbiwgIldlYlZpZGVvRnVsbHNjcmVl
bkludGVyZmFjZU1hYzo6c2V0VmlkZW9EaW1lbnNpb25zKCVwKSwgaGFzVmlkZW86JXMsIHdpZHRo
OiUuMGYsIGhlaWdodDolLjBmIiwgdGhpcywgYm9vbFN0cmluZyhoYXNWaWRlbyksIHdpZHRoLCBo
ZWlnaHQpOworICAgIExPRyhGdWxsc2NyZWVuLCAiV2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNl
TWFjOjpoYXNWaWRlb0NoYW5nZWQoJXApOiVzIiwgdGhpcywgYm9vbFN0cmluZyhoYXNWaWRlbykp
OwogCi0gICAgaWYgKCFoYXNWaWRlbykgeworICAgIGlmICghaGFzVmlkZW8pCiAgICAgICAgIGV4
aXRGdWxsc2NyZWVuV2l0aG91dEFuaW1hdGlvblRvTW9kZShIVE1MTWVkaWFFbGVtZW50RW51bXM6
OlZpZGVvRnVsbHNjcmVlbk1vZGVOb25lKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KK30KKwor
dm9pZCBXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VNYWM6OnZpZGVvRGltZW5zaW9uc0NoYW5n
ZWQoY29uc3QgRmxvYXRTaXplJiB2aWRlb0RpbWVuc2lvbnMpCit7CisgICAgTE9HKEZ1bGxzY3Jl
ZW4sICJXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VNYWM6OnZpZGVvRGltZW5zaW9uc0NoYW5n
ZWQoJXApLCB3aWR0aDolLjBmLCBoZWlnaHQ6JS4wZiIsIHRoaXMsIHZpZGVvRGltZW5zaW9ucy53
aWR0aCgpLCB2aWRlb0RpbWVuc2lvbnMuaGVpZ2h0KCkpOwogCiAgICAgLy8gV2lkdGggYW5kIGhl
aWdodCBjYW4gYmUgemVybyB3aGVuIHdlIGFyZSB0cmFuc2l0aW9uaW5nIGZyb20gb25lIHZpZGVv
IHRvIGFub3RoZXIuIElnbm9yZSB6ZXJvIHZhbHVlcy4KLSAgICBpZiAod2lkdGggJiYgaGVpZ2h0
KQotICAgICAgICBbbV93ZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VPYmpDIHNldFZpZGVvRGlt
ZW5zaW9uczpOU01ha2VTaXplKHdpZHRoLCBoZWlnaHQpXTsKKyAgICBpZiAoIXZpZGVvRGltZW5z
aW9ucy5pc1plcm8oKSkKKyAgICAgICAgW21fd2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlT2Jq
QyBzZXRWaWRlb0RpbWVuc2lvbnM6dmlkZW9EaW1lbnNpb25zXTsKIH0KIAogYm9vbCBXZWJWaWRl
b0Z1bGxzY3JlZW5JbnRlcmZhY2VNYWM6OmlzUGxheWluZ1ZpZGVvSW5FbmhhbmNlZEZ1bGxzY3Jl
ZW4oKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3
Lm1tIGIvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tCmluZGV4IGY5ZDc4Zjgx
OTFlNjAyMjhiNjdiOWE3ZTgxNGJiNzI1NjYzZGYwZDUuLmY5MjVkMWVmZDdhN2NmYzVlNGQ4N2I1
YmE2NzhiNmYzNmVjMzk1NTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcv
V2ViVmlldy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXcubW0KQEAg
LTg2MDcsMTAgKzg2MDcsOCBAQCAtICh2b2lkKV9zZXRVcFBsYXliYWNrQ29udHJvbHNNYW5hZ2Vy
Rm9yTWVkaWFFbGVtZW50OihXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50JgogICAgIF9wcml2YXRl
LT5wbGF5YmFja1Nlc3Npb25Nb2RlbC0+c2V0TWVkaWFFbGVtZW50KCZtZWRpYUVsZW1lbnQpOwog
CiAgICAgaWYgKCFfcHJpdmF0ZS0+cGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlKQotICAgICAgICBf
cHJpdmF0ZS0+cGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlID0gV2ViUGxheWJhY2tTZXNzaW9uSW50
ZXJmYWNlTWFjOjpjcmVhdGUoKTsKKyAgICAgICAgX3ByaXZhdGUtPnBsYXliYWNrU2Vzc2lvbklu
dGVyZmFjZSA9IFdlYlBsYXliYWNrU2Vzc2lvbkludGVyZmFjZU1hYzo6Y3JlYXRlKCpfcHJpdmF0
ZS0+cGxheWJhY2tTZXNzaW9uTW9kZWwpOwogCi0gICAgX3ByaXZhdGUtPnBsYXliYWNrU2Vzc2lv
bkludGVyZmFjZS0+c2V0V2ViUGxheWJhY2tTZXNzaW9uTW9kZWwoX3ByaXZhdGUtPnBsYXliYWNr
U2Vzc2lvbk1vZGVsLmdldCgpKTsKLSAgICBfcHJpdmF0ZS0+cGxheWJhY2tTZXNzaW9uTW9kZWwt
PnNldFdlYlBsYXliYWNrU2Vzc2lvbkludGVyZmFjZShfcHJpdmF0ZS0+cGxheWJhY2tTZXNzaW9u
SW50ZXJmYWNlLmdldCgpKTsKICAgICBbc2VsZiB1cGRhdGVXZWJWaWV3QWRkaXRpb25zXTsKIH0K
IApAQCAtODYyMCw4ICs4NjE4LDcgQEAgLSAodm9pZClfY2xlYXJQbGF5YmFja0NvbnRyb2xzTWFu
YWdlcgogICAgICAgICByZXR1cm47CiAKICAgICBfcHJpdmF0ZS0+cGxheWJhY2tTZXNzaW9uTW9k
ZWwtPnNldE1lZGlhRWxlbWVudChudWxscHRyKTsKLSAgICBfcHJpdmF0ZS0+cGxheWJhY2tTZXNz
aW9uTW9kZWwtPnNldFdlYlBsYXliYWNrU2Vzc2lvbkludGVyZmFjZShudWxscHRyKTsKLSAgICBf
cHJpdmF0ZS0+cGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlLT5zZXRXZWJQbGF5YmFja1Nlc3Npb25N
b2RlbChudWxscHRyKTsKKyAgICBfcHJpdmF0ZS0+cGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlLT5p
bnZhbGlkYXRlKCk7CiAKICAgICBfcHJpdmF0ZS0+cGxheWJhY2tTZXNzaW9uTW9kZWwgPSBudWxs
cHRyOwogICAgIF9wcml2YXRlLT5wbGF5YmFja1Nlc3Npb25JbnRlcmZhY2UgPSBudWxscHRyOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcu
bW0gYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbQppbmRl
eCAxMzc5NmE2NWNhNjc0MGRjZTgxMjBkNDBiMWVjYmM0MTk0NDJmN2IxLi40M2ZjODM4YTNjMTZk
YTFkOWJlYzc4ZWRjMTYwZWRjZGEwYmE3OWYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbQpAQCAtNTU1LDggKzU1NSw2IEBAIC0gKHZvaWQp
X2luaXRpYWxpemVXaXRoQ29uZmlndXJhdGlvbjooV0tXZWJWaWV3Q29uZmlndXJhdGlvbiAqKWNv
bmZpZ3VyYXRpb24KICAgICAgICAgX3BhZ2UtPnNldEFwcGxpY2F0aW9uTmFtZUZvclVzZXJBZ2Vu
dChhcHBsaWNhdGlvbk5hbWVGb3JVc2VyQWdlbnQpOwogCiAgICAgX25hdmlnYXRpb25TdGF0ZSA9
IHN0ZDo6bWFrZV91bmlxdWU8V2ViS2l0OjpOYXZpZ2F0aW9uU3RhdGU+KHNlbGYpOwotICAgIF9w
YWdlLT5zZXROYXZpZ2F0aW9uQ2xpZW50KF9uYXZpZ2F0aW9uU3RhdGUtPmNyZWF0ZU5hdmlnYXRp
b25DbGllbnQoKSk7Ci0KICAgICBfdWlEZWxlZ2F0ZSA9IHN0ZDo6bWFrZV91bmlxdWU8V2ViS2l0
OjpVSURlbGVnYXRlPihzZWxmKTsKICAgICBfcGFnZS0+c2V0RmluZENsaWVudChzdGQ6Om1ha2Vf
dW5pcXVlPFdlYktpdDo6RmluZENsaWVudD4oc2VsZikpOwogICAgIF9wYWdlLT5zZXREaWFnbm9z
dGljTG9nZ2luZ0NsaWVudChzdGQ6Om1ha2VfdW5pcXVlPFdlYktpdDo6RGlhZ25vc3RpY0xvZ2dp
bmdDbGllbnQ+KHNlbGYpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9D
b2NvYS9XZWJQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9Db2NvYS9XZWJQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHkuaAppbmRleCA5OWNh
M2ZjOGNkOTJiZThiZGE3YzdhZmM4MjE5OGE0N2VhYzNmZDg4Li5hNzUzN2FmOWYzOTIxN2IxYzUy
ZDBmZWMwZGZiZTQzMDhkNGE5YmY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQ29jb2EvV2ViUGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5LmgKKysrIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0NvY29hL1dlYlBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eS5oCkBA
IC0zMyw2ICszMyw3IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9UaW1lUmFuZ2VzLmg+CiAjaW5jbHVk
ZSA8V2ViQ29yZS9XZWJQbGF5YmFja1Nlc3Npb25Nb2RlbC5oPgogI2luY2x1ZGUgPHd0Zi9IYXNo
TWFwLmg+CisjaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KICNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0
ci5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5o
PgpAQCAtNjQsMTkgKzY1LDIwIEBAIHB1YmxpYzoKIAogICAgIHZvaWQgaW52YWxpZGF0ZSgpIHsg
bV9tYW5hZ2VyID0gbnVsbHB0cjsgfQogCi0gICAgdm9pZCBzZXREdXJhdGlvbihkb3VibGUgZHVy
YXRpb24pIHsgbV9kdXJhdGlvbiA9IGR1cmF0aW9uOyB9Ci0gICAgdm9pZCBzZXRDdXJyZW50VGlt
ZShkb3VibGUgY3VycmVudFRpbWUpIHsgbV9jdXJyZW50VGltZSA9IGN1cnJlbnRUaW1lOyB9Ci0g
ICAgdm9pZCBzZXRCdWZmZXJlZFRpbWUoZG91YmxlIGJ1ZmZlcmVkVGltZSkgeyBtX2J1ZmZlcmVk
VGltZSA9IGJ1ZmZlcmVkVGltZTsgfQotICAgIHZvaWQgc2V0SXNQbGF5aW5nKGJvb2wgaXNQbGF5
aW5nKSB7IG1faXNQbGF5aW5nID0gaXNQbGF5aW5nOyB9Ci0gICAgdm9pZCBzZXRQbGF5YmFja1Jh
dGUoZmxvYXQgcGxheWJhY2tSYXRlKSB7IG1fcGxheWJhY2tSYXRlID0gcGxheWJhY2tSYXRlOyB9
Ci0gICAgdm9pZCBzZXRTZWVrYWJsZVJhbmdlcyhXZWJDb3JlOjpUaW1lUmFuZ2VzJiBzZWVrYWJs
ZVJhbmdlcykgeyBtX3NlZWthYmxlUmFuZ2VzID0gc2Vla2FibGVSYW5nZXM7IH0KLSAgICB2b2lk
IHNldENhblBsYXlGYXN0UmV2ZXJzZShib29sIGNhblBsYXlGYXN0UmV2ZXJzZSkgeyBtX2NhblBs
YXlGYXN0UmV2ZXJzZSA9IGNhblBsYXlGYXN0UmV2ZXJzZTsgfQotICAgIHZvaWQgc2V0QXVkaW9N
ZWRpYVNlbGVjdGlvbk9wdGlvbnMoY29uc3QgVmVjdG9yPFdURjo6U3RyaW5nPiYgYXVkaW9NZWRp
YVNlbGVjdGlvbk9wdGlvbnMpIHsgbV9hdWRpb01lZGlhU2VsZWN0aW9uT3B0aW9ucyA9IGF1ZGlv
TWVkaWFTZWxlY3Rpb25PcHRpb25zOyB9Ci0gICAgdm9pZCBzZXRBdWRpb01lZGlhU2VsZWN0ZWRJ
bmRleCh1aW50NjRfdCBhdWRpb01lZGlhU2VsZWN0ZWRJbmRleCkgeyBtX2F1ZGlvTWVkaWFTZWxl
Y3RlZEluZGV4ID0gYXVkaW9NZWRpYVNlbGVjdGVkSW5kZXg7IH0KLSAgICB2b2lkIHNldExlZ2li
bGVNZWRpYVNlbGVjdGlvbk9wdGlvbnMoY29uc3QgVmVjdG9yPFdURjo6U3RyaW5nPiYgbGVnaWJs
ZU1lZGlhU2VsZWN0aW9uT3B0aW9ucykgeyBtX2xlZ2libGVNZWRpYVNlbGVjdGlvbk9wdGlvbnMg
PSBsZWdpYmxlTWVkaWFTZWxlY3Rpb25PcHRpb25zOyB9Ci0gICAgdm9pZCBzZXRMZWdpYmxlTWVk
aWFTZWxlY3RlZEluZGV4KHVpbnQ2NF90IGxlZ2libGVNZWRpYVNlbGVjdGVkSW5kZXgpIHsgbV9s
ZWdpYmxlTWVkaWFTZWxlY3RlZEluZGV4ID0gbGVnaWJsZU1lZGlhU2VsZWN0ZWRJbmRleDsgfQot
ICAgIHZvaWQgc2V0RXh0ZXJuYWxQbGF5YmFja0VuYWJsZWQoYm9vbCBleHRlcm5hbFBsYXliYWNr
RW5hYmxlZCkgeyBtX2V4dGVybmFsUGxheWJhY2tFbmFibGVkID0gZXh0ZXJuYWxQbGF5YmFja0Vu
YWJsZWQ7IH0KLSAgICB2b2lkIHNldFdpcmVsZXNzVmlkZW9QbGF5YmFja0Rpc2FibGVkKGJvb2wg
d2lyZWxlc3NWaWRlb1BsYXliYWNrRGlzYWJsZWQpIHsgbV93aXJlbGVzc1ZpZGVvUGxheWJhY2tE
aXNhYmxlZCA9IHdpcmVsZXNzVmlkZW9QbGF5YmFja0Rpc2FibGVkOyB9CisgICAgLy8gV2ViUGxh
eWJhY2tTZXNzaW9uTW9kZWwKKyAgICB2b2lkIGFkZENsaWVudChXZWJDb3JlOjpXZWJQbGF5YmFj
a1Nlc3Npb25Nb2RlbENsaWVudCYpIGZpbmFsOworICAgIHZvaWQgcmVtb3ZlQ2xpZW50KFdlYkNv
cmU6OldlYlBsYXliYWNrU2Vzc2lvbk1vZGVsQ2xpZW50JilmaW5hbDsKKworICAgIHZvaWQgc2V0
RHVyYXRpb24oZG91YmxlKTsKKyAgICB2b2lkIHNldEN1cnJlbnRUaW1lKGRvdWJsZSk7CisgICAg
dm9pZCBzZXRCdWZmZXJlZFRpbWUoZG91YmxlKTsKKyAgICB2b2lkIHNldFJhdGUoYm9vbCBpc1Bs
YXlpbmcsIGZsb2F0IHBsYXliYWNrUmF0ZSk7CisgICAgdm9pZCBzZXRTZWVrYWJsZVJhbmdlcyhX
ZWJDb3JlOjpUaW1lUmFuZ2VzJik7CisgICAgdm9pZCBzZXRDYW5QbGF5RmFzdFJldmVyc2UoYm9v
bCk7CisgICAgdm9pZCBzZXRBdWRpb01lZGlhU2VsZWN0aW9uT3B0aW9ucyhjb25zdCBWZWN0b3I8
V1RGOjpTdHJpbmc+JiBvcHRpb25zLCB1aW50NjRfdCBpbmRleCk7CisgICAgdm9pZCBzZXRMZWdp
YmxlTWVkaWFTZWxlY3Rpb25PcHRpb25zKGNvbnN0IFZlY3RvcjxXVEY6OlN0cmluZz4mIG9wdGlv
bnMsIHVpbnQ2NF90IGluZGV4KTsKKyAgICB2b2lkIHNldEV4dGVybmFsUGxheWJhY2soYm9vbCwg
V2ViUGxheWJhY2tTZXNzaW9uTW9kZWw6OkV4dGVybmFsUGxheWJhY2tUYXJnZXRUeXBlLCBjb25z
dCBTdHJpbmcmKTsKKyAgICB2b2lkIHNldFdpcmVsZXNzVmlkZW9QbGF5YmFja0Rpc2FibGVkKGJv
b2wpOwogCiBwcml2YXRlOgogICAgIGZyaWVuZCBjbGFzcyBXZWJWaWRlb0Z1bGxzY3JlZW5Nb2Rl
bENvbnRleHQ7CkBAIC0xMTMsMTAgKzExNSwxMyBAQCBwcml2YXRlOgogICAgIFZlY3RvcjxXVEY6
OlN0cmluZz4gbGVnaWJsZU1lZGlhU2VsZWN0aW9uT3B0aW9ucygpIGNvbnN0IGZpbmFsIHsgcmV0
dXJuIG1fbGVnaWJsZU1lZGlhU2VsZWN0aW9uT3B0aW9uczsgfQogICAgIHVpbnQ2NF90IGxlZ2li
bGVNZWRpYVNlbGVjdGVkSW5kZXgoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX2xlZ2libGVNZWRp
YVNlbGVjdGVkSW5kZXg7IH0KICAgICBib29sIGV4dGVybmFsUGxheWJhY2tFbmFibGVkKCkgY29u
c3QgZmluYWwgeyByZXR1cm4gbV9leHRlcm5hbFBsYXliYWNrRW5hYmxlZDsgfQorICAgIFdlYlBs
YXliYWNrU2Vzc2lvbk1vZGVsOjpFeHRlcm5hbFBsYXliYWNrVGFyZ2V0VHlwZSBleHRlcm5hbFBs
YXliYWNrVGFyZ2V0VHlwZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fZXh0ZXJuYWxQbGF5YmFj
a1RhcmdldFR5cGU7IH0KKyAgICBTdHJpbmcgZXh0ZXJuYWxQbGF5YmFja0xvY2FsaXplZERldmlj
ZU5hbWUoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX2V4dGVybmFsUGxheWJhY2tMb2NhbGl6ZWRE
ZXZpY2VOYW1lOyB9CiAgICAgYm9vbCB3aXJlbGVzc1ZpZGVvUGxheWJhY2tEaXNhYmxlZCgpIGNv
bnN0IGZpbmFsIHsgcmV0dXJuIG1fd2lyZWxlc3NWaWRlb1BsYXliYWNrRGlzYWJsZWQ7IH0KIAog
ICAgIFdlYlBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eSogbV9tYW5hZ2VyOwogICAgIHVpbnQ2
NF90IG1fY29udGV4dElkOworICAgIEhhc2hTZXQ8V2ViQ29yZTo6V2ViUGxheWJhY2tTZXNzaW9u
TW9kZWxDbGllbnQqPiBtX2NsaWVudHM7CiAgICAgZG91YmxlIG1fZHVyYXRpb24geyAwIH07CiAg
ICAgZG91YmxlIG1fY3VycmVudFRpbWUgeyAwIH07CiAgICAgZG91YmxlIG1fYnVmZmVyZWRUaW1l
IHsgMCB9OwpAQCAtMTI5LDYgKzEzNCw4IEBAIHByaXZhdGU6CiAgICAgVmVjdG9yPFdURjo6U3Ry
aW5nPiBtX2xlZ2libGVNZWRpYVNlbGVjdGlvbk9wdGlvbnM7CiAgICAgdWludDY0X3QgbV9sZWdp
YmxlTWVkaWFTZWxlY3RlZEluZGV4IHsgMCB9OwogICAgIGJvb2wgbV9leHRlcm5hbFBsYXliYWNr
RW5hYmxlZCB7IGZhbHNlIH07CisgICAgV2ViUGxheWJhY2tTZXNzaW9uTW9kZWw6OkV4dGVybmFs
UGxheWJhY2tUYXJnZXRUeXBlIG1fZXh0ZXJuYWxQbGF5YmFja1RhcmdldFR5cGUgeyBXZWJQbGF5
YmFja1Nlc3Npb25Nb2RlbDo6VGFyZ2V0VHlwZU5vbmUgfTsKKyAgICBTdHJpbmcgbV9leHRlcm5h
bFBsYXliYWNrTG9jYWxpemVkRGV2aWNlTmFtZTsKICAgICBib29sIG1fd2lyZWxlc3NWaWRlb1Bs
YXliYWNrRGlzYWJsZWQgeyBmYWxzZSB9OwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0NvY29hL1dlYlBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eS5tbSBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db2NvYS9XZWJQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJv
eHkubW0KaW5kZXggOGMxZmEwYzMwYzlmMWI1MTRhMGY1ODQ2YjUwMmEwMGI3NzIwODQzMi4uNWNj
OThlMzZjMDI4MmM4YTU0N2I3ZWMxNTcyNzc0YjhjNDAxOTBmZiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0NvY29hL1dlYlBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eS5t
bQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29jb2EvV2ViUGxheWJhY2tTZXNzaW9u
TWFuYWdlclByb3h5Lm1tCkBAIC00MCw2ICs0MCwxOCBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIAog
I3ByYWdtYSBtYXJrIC0gV2ViUGxheWJhY2tTZXNzaW9uTW9kZWxDb250ZXh0CiAKK3ZvaWQgV2Vi
UGxheWJhY2tTZXNzaW9uTW9kZWxDb250ZXh0OjphZGRDbGllbnQoV2ViUGxheWJhY2tTZXNzaW9u
TW9kZWxDbGllbnQmIGNsaWVudCkKK3sKKyAgICBBU1NFUlQoIW1fY2xpZW50cy5jb250YWlucygm
Y2xpZW50KSk7CisgICAgbV9jbGllbnRzLmFkZCgmY2xpZW50KTsKK30KKwordm9pZCBXZWJQbGF5
YmFja1Nlc3Npb25Nb2RlbENvbnRleHQ6OnJlbW92ZUNsaWVudChXZWJQbGF5YmFja1Nlc3Npb25N
b2RlbENsaWVudCYgY2xpZW50KQoreworICAgIEFTU0VSVChtX2NsaWVudHMuY29udGFpbnMoJmNs
aWVudCkpOworICAgIG1fY2xpZW50cy5yZW1vdmUoJmNsaWVudCk7Cit9CisKIHZvaWQgV2ViUGxh
eWJhY2tTZXNzaW9uTW9kZWxDb250ZXh0OjpwbGF5KCkKIHsKICAgICBpZiAobV9tYW5hZ2VyKQpA
QCAtMTEyLDYgKzEyNCw4NSBAQCB2b2lkIFdlYlBsYXliYWNrU2Vzc2lvbk1vZGVsQ29udGV4dDo6
c2VsZWN0TGVnaWJsZU1lZGlhT3B0aW9uKHVpbnQ2NF90IG9wdGlvbklkKQogICAgICAgICBtX21h
bmFnZXItPnNlbGVjdExlZ2libGVNZWRpYU9wdGlvbihtX2NvbnRleHRJZCwgb3B0aW9uSWQpOwog
fQogCit2b2lkIFdlYlBsYXliYWNrU2Vzc2lvbk1vZGVsQ29udGV4dDo6c2V0RHVyYXRpb24oZG91
YmxlIGR1cmF0aW9uKQoreworICAgIG1fZHVyYXRpb24gPSBkdXJhdGlvbjsKKyAgICBmb3IgKGF1
dG8qIGNsaWVudCA6IG1fY2xpZW50cykKKyAgICAgICAgY2xpZW50LT5kdXJhdGlvbkNoYW5nZWQo
ZHVyYXRpb24pOworfQorCit2b2lkIFdlYlBsYXliYWNrU2Vzc2lvbk1vZGVsQ29udGV4dDo6c2V0
Q3VycmVudFRpbWUoZG91YmxlIGN1cnJlbnRUaW1lKQoreworICAgIG1fY3VycmVudFRpbWUgPSBj
dXJyZW50VGltZTsKKyAgICBhdXRvIGFuY2hvclRpbWUgPSBbW05TUHJvY2Vzc0luZm8gcHJvY2Vz
c0luZm9dIHN5c3RlbVVwdGltZV07CisKKyAgICBmb3IgKGF1dG8qIGNsaWVudCA6IG1fY2xpZW50
cykKKyAgICAgICAgY2xpZW50LT5jdXJyZW50VGltZUNoYW5nZWQoY3VycmVudFRpbWUsIGFuY2hv
clRpbWUpOworfQorCit2b2lkIFdlYlBsYXliYWNrU2Vzc2lvbk1vZGVsQ29udGV4dDo6c2V0QnVm
ZmVyZWRUaW1lKGRvdWJsZSBidWZmZXJlZFRpbWUpCit7CisgICAgbV9idWZmZXJlZFRpbWUgPSBi
dWZmZXJlZFRpbWU7CisgICAgZm9yIChhdXRvKiBjbGllbnQgOiBtX2NsaWVudHMpCisgICAgICAg
IGNsaWVudC0+YnVmZmVyZWRUaW1lQ2hhbmdlZChidWZmZXJlZFRpbWUpOworfQorCit2b2lkIFdl
YlBsYXliYWNrU2Vzc2lvbk1vZGVsQ29udGV4dDo6c2V0UmF0ZShib29sIGlzUGxheWluZywgZmxv
YXQgcGxheWJhY2tSYXRlKQoreworICAgIG1faXNQbGF5aW5nID0gaXNQbGF5aW5nOworICAgIG1f
cGxheWJhY2tSYXRlID0gcGxheWJhY2tSYXRlOworICAgIGZvciAoYXV0byogY2xpZW50IDogbV9j
bGllbnRzKQorICAgICAgICBjbGllbnQtPnJhdGVDaGFuZ2VkKGlzUGxheWluZywgcGxheWJhY2tS
YXRlKTsKK30KKwordm9pZCBXZWJQbGF5YmFja1Nlc3Npb25Nb2RlbENvbnRleHQ6OnNldFNlZWth
YmxlUmFuZ2VzKFdlYkNvcmU6OlRpbWVSYW5nZXMmIHNlZWthYmxlUmFuZ2VzKQoreworICAgIG1f
c2Vla2FibGVSYW5nZXMgPSBzZWVrYWJsZVJhbmdlczsKKyAgICBmb3IgKGF1dG8qIGNsaWVudCA6
IG1fY2xpZW50cykKKyAgICAgICAgY2xpZW50LT5zZWVrYWJsZVJhbmdlc0NoYW5nZWQoc2Vla2Fi
bGVSYW5nZXMpOworfQorCit2b2lkIFdlYlBsYXliYWNrU2Vzc2lvbk1vZGVsQ29udGV4dDo6c2V0
Q2FuUGxheUZhc3RSZXZlcnNlKGJvb2wgY2FuUGxheUZhc3RSZXZlcnNlKQoreworICAgIG1fY2Fu
UGxheUZhc3RSZXZlcnNlID0gY2FuUGxheUZhc3RSZXZlcnNlOworICAgIGZvciAoYXV0byogY2xp
ZW50IDogbV9jbGllbnRzKQorICAgICAgICBjbGllbnQtPmNhblBsYXlGYXN0UmV2ZXJzZUNoYW5n
ZWQoY2FuUGxheUZhc3RSZXZlcnNlKTsKK30KKwordm9pZCBXZWJQbGF5YmFja1Nlc3Npb25Nb2Rl
bENvbnRleHQ6OnNldEF1ZGlvTWVkaWFTZWxlY3Rpb25PcHRpb25zKGNvbnN0IFZlY3RvcjxXVEY6
OlN0cmluZz4mIGF1ZGlvTWVkaWFTZWxlY3Rpb25PcHRpb25zLCB1aW50NjRfdCBhdWRpb01lZGlh
U2VsZWN0ZWRJbmRleCkKK3sKKyAgICBtX2F1ZGlvTWVkaWFTZWxlY3Rpb25PcHRpb25zID0gYXVk
aW9NZWRpYVNlbGVjdGlvbk9wdGlvbnM7CisgICAgbV9hdWRpb01lZGlhU2VsZWN0ZWRJbmRleCA9
IGF1ZGlvTWVkaWFTZWxlY3RlZEluZGV4OworICAgIGZvciAoYXV0byogY2xpZW50IDogbV9jbGll
bnRzKQorICAgICAgICBjbGllbnQtPmF1ZGlvTWVkaWFTZWxlY3Rpb25PcHRpb25zQ2hhbmdlZChh
dWRpb01lZGlhU2VsZWN0aW9uT3B0aW9ucywgYXVkaW9NZWRpYVNlbGVjdGVkSW5kZXgpOworfQor
Cit2b2lkIFdlYlBsYXliYWNrU2Vzc2lvbk1vZGVsQ29udGV4dDo6c2V0TGVnaWJsZU1lZGlhU2Vs
ZWN0aW9uT3B0aW9ucyhjb25zdCBWZWN0b3I8V1RGOjpTdHJpbmc+JiBsZWdpYmxlTWVkaWFTZWxl
Y3Rpb25PcHRpb25zLCB1aW50NjRfdCBsZWdpYmxlTWVkaWFTZWxlY3RlZEluZGV4KQoreworICAg
IG1fbGVnaWJsZU1lZGlhU2VsZWN0aW9uT3B0aW9ucyA9IGxlZ2libGVNZWRpYVNlbGVjdGlvbk9w
dGlvbnM7CisgICAgbV9sZWdpYmxlTWVkaWFTZWxlY3RlZEluZGV4ID0gbGVnaWJsZU1lZGlhU2Vs
ZWN0ZWRJbmRleDsKKworICAgIGZvciAoYXV0byogY2xpZW50IDogbV9jbGllbnRzKQorICAgICAg
ICBjbGllbnQtPmxlZ2libGVNZWRpYVNlbGVjdGlvbk9wdGlvbnNDaGFuZ2VkKGxlZ2libGVNZWRp
YVNlbGVjdGlvbk9wdGlvbnMsIGxlZ2libGVNZWRpYVNlbGVjdGVkSW5kZXgpOworfQorCit2b2lk
IFdlYlBsYXliYWNrU2Vzc2lvbk1vZGVsQ29udGV4dDo6c2V0RXh0ZXJuYWxQbGF5YmFjayhib29s
IGVuYWJsZWQsIFdlYlBsYXliYWNrU2Vzc2lvbk1vZGVsOjpFeHRlcm5hbFBsYXliYWNrVGFyZ2V0
VHlwZSB0eXBlLCBjb25zdCBTdHJpbmcmIGxvY2FsaXplZE5hbWUpCit7CisgICAgbV9leHRlcm5h
bFBsYXliYWNrRW5hYmxlZCA9IGVuYWJsZWQ7CisgICAgbV9leHRlcm5hbFBsYXliYWNrVGFyZ2V0
VHlwZSA9IHR5cGU7CisgICAgbV9leHRlcm5hbFBsYXliYWNrTG9jYWxpemVkRGV2aWNlTmFtZSA9
IGxvY2FsaXplZE5hbWU7CisKKyAgICBmb3IgKGF1dG8qIGNsaWVudCA6IG1fY2xpZW50cykKKyAg
ICAgICAgY2xpZW50LT5leHRlcm5hbFBsYXliYWNrQ2hhbmdlZChlbmFibGVkLCB0eXBlLCBsb2Nh
bGl6ZWROYW1lKTsKK30KKwordm9pZCBXZWJQbGF5YmFja1Nlc3Npb25Nb2RlbENvbnRleHQ6OnNl
dFdpcmVsZXNzVmlkZW9QbGF5YmFja0Rpc2FibGVkKGJvb2wgd2lyZWxlc3NWaWRlb1BsYXliYWNr
RGlzYWJsZWQpCit7CisgICAgbV93aXJlbGVzc1ZpZGVvUGxheWJhY2tEaXNhYmxlZCA9IHdpcmVs
ZXNzVmlkZW9QbGF5YmFja0Rpc2FibGVkOworICAgIGZvciAoYXV0byogY2xpZW50IDogbV9jbGll
bnRzKQorICAgICAgICBjbGllbnQtPndpcmVsZXNzVmlkZW9QbGF5YmFja0Rpc2FibGVkQ2hhbmdl
ZCh3aXJlbGVzc1ZpZGVvUGxheWJhY2tEaXNhYmxlZCk7Cit9CisKICNwcmFnbWEgbWFyayAtIFdl
YlBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eQogCiBSZWZQdHI8V2ViUGxheWJhY2tTZXNzaW9u
TWFuYWdlclByb3h5PiBXZWJQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHk6OmNyZWF0ZShXZWJQ
YWdlUHJveHkmIHBhZ2UpCkBAIC0xNTIsOSArMjQzLDcgQEAgdm9pZCBXZWJQbGF5YmFja1Nlc3Np
b25NYW5hZ2VyUHJveHk6OmludmFsaWRhdGUoKQogV2ViUGxheWJhY2tTZXNzaW9uTWFuYWdlclBy
b3h5OjpNb2RlbEludGVyZmFjZVR1cGxlIFdlYlBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eTo6
Y3JlYXRlTW9kZWxBbmRJbnRlcmZhY2UodWludDY0X3QgY29udGV4dElkKQogewogICAgIFJlZjxX
ZWJQbGF5YmFja1Nlc3Npb25Nb2RlbENvbnRleHQ+IG1vZGVsID0gV2ViUGxheWJhY2tTZXNzaW9u
TW9kZWxDb250ZXh0OjpjcmVhdGUoKnRoaXMsIGNvbnRleHRJZCk7Ci0gICAgUmVmPFBsYXRmb3Jt
V2ViUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlPiBpbnRlcmZhY2UgPSBQbGF0Zm9ybVdlYlBsYXli
YWNrU2Vzc2lvbkludGVyZmFjZTo6Y3JlYXRlKCk7Ci0KLSAgICBpbnRlcmZhY2UtPnNldFdlYlBs
YXliYWNrU2Vzc2lvbk1vZGVsKCZtb2RlbC5nZXQoKSk7CisgICAgUmVmPFBsYXRmb3JtV2ViUGxh
eWJhY2tTZXNzaW9uSW50ZXJmYWNlPiBpbnRlcmZhY2UgPSBQbGF0Zm9ybVdlYlBsYXliYWNrU2Vz
c2lvbkludGVyZmFjZTo6Y3JlYXRlKG1vZGVsKTsKIAogICAgIHJldHVybiBzdGQ6Om1ha2VfdHVw
bGUoV1RGTW92ZShtb2RlbCksIFdURk1vdmUoaW50ZXJmYWNlKSk7CiB9CkBAIC0xOTQsNiArMjgz
LDExIEBAIHZvaWQgV2ViUGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5OjpyZW1vdmVDbGllbnRG
b3JDb250ZXh0KHVpbnQ2NF90IGNvbnRleHRJZCkKIAogICAgIGlmIChjbGllbnRDb3VudCA8PSAw
KSB7CiAgICAgICAgIG1fY2xpZW50Q291bnRzLnJlbW92ZShjb250ZXh0SWQpOworCisgICAgICAg
IFJlZlB0cjxXZWJQbGF5YmFja1Nlc3Npb25Nb2RlbENvbnRleHQ+IG1vZGVsOworICAgICAgICBS
ZWZQdHI8UGxhdGZvcm1XZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2U+IGludGVyZmFjZTsKKyAg
ICAgICAgc3RkOjp0aWUobW9kZWwsIGludGVyZmFjZSkgPSBlbnN1cmVNb2RlbEFuZEludGVyZmFj
ZShjb250ZXh0SWQpOworICAgICAgICBpbnRlcmZhY2UtPmludmFsaWRhdGUoKTsKICAgICAgICAg
bV9jb250ZXh0TWFwLnJlbW92ZShjb250ZXh0SWQpOwogICAgICAgICByZXR1cm47CiAgICAgfQpA
QCAtMjQxLDIwICszMzUsMTIgQEAgdm9pZCBXZWJQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHk6
OnJlc2V0TWVkaWFTdGF0ZSh1aW50NjRfdCBjb250ZXh0SWQpCiAKIHZvaWQgV2ViUGxheWJhY2tT
ZXNzaW9uTWFuYWdlclByb3h5OjpzZXRDdXJyZW50VGltZSh1aW50NjRfdCBjb250ZXh0SWQsIGRv
dWJsZSBjdXJyZW50VGltZSwgZG91YmxlIGhvc3RUaW1lKQogewotICAgIFJlZlB0cjxXZWJQbGF5
YmFja1Nlc3Npb25Nb2RlbENvbnRleHQ+IG1vZGVsOwotICAgIFJlZlB0cjxQbGF0Zm9ybVdlYlBs
YXliYWNrU2Vzc2lvbkludGVyZmFjZT4gaW50ZXJmYWNlOwotICAgIHN0ZDo6dGllKG1vZGVsLCBp
bnRlcmZhY2UpID0gZW5zdXJlTW9kZWxBbmRJbnRlcmZhY2UoY29udGV4dElkKTsKLSAgICBtb2Rl
bC0+c2V0Q3VycmVudFRpbWUoY3VycmVudFRpbWUpOwotICAgIGludGVyZmFjZS0+c2V0Q3VycmVu
dFRpbWUoY3VycmVudFRpbWUsIGhvc3RUaW1lKTsKKyAgICBlbnN1cmVNb2RlbChjb250ZXh0SWQp
LnNldEN1cnJlbnRUaW1lKGN1cnJlbnRUaW1lKTsKIH0KIAogdm9pZCBXZWJQbGF5YmFja1Nlc3Np
b25NYW5hZ2VyUHJveHk6OnNldEJ1ZmZlcmVkVGltZSh1aW50NjRfdCBjb250ZXh0SWQsIGRvdWJs
ZSBidWZmZXJlZFRpbWUpCiB7Ci0gICAgUmVmUHRyPFdlYlBsYXliYWNrU2Vzc2lvbk1vZGVsQ29u
dGV4dD4gbW9kZWw7Ci0gICAgUmVmUHRyPFBsYXRmb3JtV2ViUGxheWJhY2tTZXNzaW9uSW50ZXJm
YWNlPiBpbnRlcmZhY2U7Ci0gICAgc3RkOjp0aWUobW9kZWwsIGludGVyZmFjZSkgPSBlbnN1cmVN
b2RlbEFuZEludGVyZmFjZShjb250ZXh0SWQpOwotICAgIG1vZGVsLT5zZXRCdWZmZXJlZFRpbWUo
YnVmZmVyZWRUaW1lKTsKLSAgICBpbnRlcmZhY2UtPnNldEJ1ZmZlcmVkVGltZShidWZmZXJlZFRp
bWUpOworICAgIGVuc3VyZU1vZGVsKGNvbnRleHRJZCkuc2V0QnVmZmVyZWRUaW1lKGJ1ZmZlcmVk
VGltZSk7CiB9CiAKIHZvaWQgV2ViUGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5OjpzZXRTZWVr
YWJsZVJhbmdlc1ZlY3Rvcih1aW50NjRfdCBjb250ZXh0SWQsIFZlY3RvcjxzdGQ6OnBhaXI8ZG91
YmxlLCBkb3VibGU+PiByYW5nZXMpCkBAIC0yNjcsODAgKzM1Myw0NSBAQCB2b2lkIFdlYlBsYXli
YWNrU2Vzc2lvbk1hbmFnZXJQcm94eTo6c2V0U2Vla2FibGVSYW5nZXNWZWN0b3IodWludDY0X3Qg
Y29udGV4dElkLAogICAgICAgICB0aW1lUmFuZ2VzLT5hZGQocmFuZ2UuZmlyc3QsIHJhbmdlLnNl
Y29uZCk7CiAgICAgfQogCi0gICAgUmVmUHRyPFdlYlBsYXliYWNrU2Vzc2lvbk1vZGVsQ29udGV4
dD4gbW9kZWw7Ci0gICAgUmVmUHRyPFBsYXRmb3JtV2ViUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNl
PiBpbnRlcmZhY2U7Ci0gICAgc3RkOjp0aWUobW9kZWwsIGludGVyZmFjZSkgPSBlbnN1cmVNb2Rl
bEFuZEludGVyZmFjZShjb250ZXh0SWQpOwotICAgIG1vZGVsLT5zZXRTZWVrYWJsZVJhbmdlcyh0
aW1lUmFuZ2VzKTsKLSAgICBpbnRlcmZhY2UtPnNldFNlZWthYmxlUmFuZ2VzKHRpbWVSYW5nZXMp
OworICAgIGVuc3VyZU1vZGVsKGNvbnRleHRJZCkuc2V0U2Vla2FibGVSYW5nZXModGltZVJhbmdl
cyk7CiB9CiAKIHZvaWQgV2ViUGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5OjpzZXRDYW5QbGF5
RmFzdFJldmVyc2UodWludDY0X3QgY29udGV4dElkLCBib29sIHZhbHVlKQogewotICAgIFJlZlB0
cjxXZWJQbGF5YmFja1Nlc3Npb25Nb2RlbENvbnRleHQ+IG1vZGVsOwotICAgIFJlZlB0cjxQbGF0
Zm9ybVdlYlBsYXliYWNrU2Vzc2lvbkludGVyZmFjZT4gaW50ZXJmYWNlOwotICAgIHN0ZDo6dGll
KG1vZGVsLCBpbnRlcmZhY2UpID0gZW5zdXJlTW9kZWxBbmRJbnRlcmZhY2UoY29udGV4dElkKTsK
LSAgICBtb2RlbC0+c2V0Q2FuUGxheUZhc3RSZXZlcnNlKHZhbHVlKTsKLSAgICBpbnRlcmZhY2Ut
PnNldENhblBsYXlGYXN0UmV2ZXJzZSh2YWx1ZSk7CisgICAgZW5zdXJlTW9kZWwoY29udGV4dElk
KS5zZXRDYW5QbGF5RmFzdFJldmVyc2UodmFsdWUpOwogfQogCiB2b2lkIFdlYlBsYXliYWNrU2Vz
c2lvbk1hbmFnZXJQcm94eTo6c2V0QXVkaW9NZWRpYVNlbGVjdGlvbk9wdGlvbnModWludDY0X3Qg
Y29udGV4dElkLCBWZWN0b3I8U3RyaW5nPiBvcHRpb25zLCB1aW50NjRfdCBzZWxlY3RlZEluZGV4
KQogewotICAgIFJlZlB0cjxXZWJQbGF5YmFja1Nlc3Npb25Nb2RlbENvbnRleHQ+IG1vZGVsOwot
ICAgIFJlZlB0cjxQbGF0Zm9ybVdlYlBsYXliYWNrU2Vzc2lvbkludGVyZmFjZT4gaW50ZXJmYWNl
OwotICAgIHN0ZDo6dGllKG1vZGVsLCBpbnRlcmZhY2UpID0gZW5zdXJlTW9kZWxBbmRJbnRlcmZh
Y2UoY29udGV4dElkKTsKLSAgICBtb2RlbC0+c2V0QXVkaW9NZWRpYVNlbGVjdGlvbk9wdGlvbnMo
b3B0aW9ucyk7Ci0gICAgbW9kZWwtPnNldEF1ZGlvTWVkaWFTZWxlY3RlZEluZGV4KHNlbGVjdGVk
SW5kZXgpOwotICAgIGludGVyZmFjZS0+c2V0QXVkaW9NZWRpYVNlbGVjdGlvbk9wdGlvbnMob3B0
aW9ucywgc2VsZWN0ZWRJbmRleCk7CisgICAgZW5zdXJlTW9kZWwoY29udGV4dElkKS5zZXRBdWRp
b01lZGlhU2VsZWN0aW9uT3B0aW9ucyhvcHRpb25zLCBzZWxlY3RlZEluZGV4KTsKIH0KIAogdm9p
ZCBXZWJQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHk6OnNldExlZ2libGVNZWRpYVNlbGVjdGlv
bk9wdGlvbnModWludDY0X3QgY29udGV4dElkLCBWZWN0b3I8U3RyaW5nPiBvcHRpb25zLCB1aW50
NjRfdCBzZWxlY3RlZEluZGV4KQogewotICAgIFJlZlB0cjxXZWJQbGF5YmFja1Nlc3Npb25Nb2Rl
bENvbnRleHQ+IG1vZGVsOwotICAgIFJlZlB0cjxQbGF0Zm9ybVdlYlBsYXliYWNrU2Vzc2lvbklu
dGVyZmFjZT4gaW50ZXJmYWNlOwotICAgIHN0ZDo6dGllKG1vZGVsLCBpbnRlcmZhY2UpID0gZW5z
dXJlTW9kZWxBbmRJbnRlcmZhY2UoY29udGV4dElkKTsKLSAgICBtb2RlbC0+c2V0TGVnaWJsZU1l
ZGlhU2VsZWN0aW9uT3B0aW9ucyhvcHRpb25zKTsKLSAgICBtb2RlbC0+c2V0TGVnaWJsZU1lZGlh
U2VsZWN0ZWRJbmRleChzZWxlY3RlZEluZGV4KTsKLSAgICBpbnRlcmZhY2UtPnNldExlZ2libGVN
ZWRpYVNlbGVjdGlvbk9wdGlvbnMob3B0aW9ucywgc2VsZWN0ZWRJbmRleCk7CisgICAgZW5zdXJl
TW9kZWwoY29udGV4dElkKS5zZXRMZWdpYmxlTWVkaWFTZWxlY3Rpb25PcHRpb25zKG9wdGlvbnMs
IHNlbGVjdGVkSW5kZXgpOwogfQogCiB2b2lkIFdlYlBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94
eTo6c2V0RXh0ZXJuYWxQbGF5YmFja1Byb3BlcnRpZXModWludDY0X3QgY29udGV4dElkLCBib29s
IGVuYWJsZWQsIHVpbnQzMl90IHRhcmdldFR5cGUsIFN0cmluZyBsb2NhbGl6ZWREZXZpY2VOYW1l
KQogewotICAgIFdlYlBsYXliYWNrU2Vzc2lvbkludGVyZmFjZTo6RXh0ZXJuYWxQbGF5YmFja1Rh
cmdldFR5cGUgdHlwZSA9IHN0YXRpY19jYXN0PFdlYlBsYXliYWNrU2Vzc2lvbkludGVyZmFjZTo6
RXh0ZXJuYWxQbGF5YmFja1RhcmdldFR5cGU+KHRhcmdldFR5cGUpOwotICAgIEFTU0VSVCh0eXBl
ID09IFdlYlBsYXliYWNrU2Vzc2lvbkludGVyZmFjZTo6VGFyZ2V0VHlwZUFpclBsYXkgfHwgdHlw
ZSA9PSBXZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2U6OlRhcmdldFR5cGVUVk91dCB8fCB0eXBl
ID09IFdlYlBsYXliYWNrU2Vzc2lvbkludGVyZmFjZTo6VGFyZ2V0VHlwZU5vbmUpOworICAgIFdl
YlBsYXliYWNrU2Vzc2lvbk1vZGVsOjpFeHRlcm5hbFBsYXliYWNrVGFyZ2V0VHlwZSB0eXBlID0g
c3RhdGljX2Nhc3Q8V2ViUGxheWJhY2tTZXNzaW9uTW9kZWw6OkV4dGVybmFsUGxheWJhY2tUYXJn
ZXRUeXBlPih0YXJnZXRUeXBlKTsKKyAgICBBU1NFUlQodHlwZSA9PSBXZWJQbGF5YmFja1Nlc3Np
b25Nb2RlbDo6VGFyZ2V0VHlwZUFpclBsYXkgfHwgdHlwZSA9PSBXZWJQbGF5YmFja1Nlc3Npb25N
b2RlbDo6VGFyZ2V0VHlwZVRWT3V0IHx8IHR5cGUgPT0gV2ViUGxheWJhY2tTZXNzaW9uTW9kZWw6
OlRhcmdldFR5cGVOb25lKTsKIAotICAgIFJlZlB0cjxXZWJQbGF5YmFja1Nlc3Npb25Nb2RlbENv
bnRleHQ+IG1vZGVsOwotICAgIFJlZlB0cjxQbGF0Zm9ybVdlYlBsYXliYWNrU2Vzc2lvbkludGVy
ZmFjZT4gaW50ZXJmYWNlOwotICAgIHN0ZDo6dGllKG1vZGVsLCBpbnRlcmZhY2UpID0gZW5zdXJl
TW9kZWxBbmRJbnRlcmZhY2UoY29udGV4dElkKTsKLSAgICBtb2RlbC0+c2V0RXh0ZXJuYWxQbGF5
YmFja0VuYWJsZWQoZW5hYmxlZCk7Ci0gICAgaW50ZXJmYWNlLT5zZXRFeHRlcm5hbFBsYXliYWNr
KGVuYWJsZWQsIHR5cGUsIGxvY2FsaXplZERldmljZU5hbWUpOworICAgIGVuc3VyZU1vZGVsKGNv
bnRleHRJZCkuc2V0RXh0ZXJuYWxQbGF5YmFjayhlbmFibGVkLCB0eXBlLCBsb2NhbGl6ZWREZXZp
Y2VOYW1lKTsKIH0KIAogdm9pZCBXZWJQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHk6OnNldFdp
cmVsZXNzVmlkZW9QbGF5YmFja0Rpc2FibGVkKHVpbnQ2NF90IGNvbnRleHRJZCwgYm9vbCBkaXNh
YmxlZCkKIHsKLSAgICBSZWZQdHI8V2ViUGxheWJhY2tTZXNzaW9uTW9kZWxDb250ZXh0PiBtb2Rl
bDsKLSAgICBSZWZQdHI8UGxhdGZvcm1XZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2U+IGludGVy
ZmFjZTsKLSAgICBzdGQ6OnRpZShtb2RlbCwgaW50ZXJmYWNlKSA9IGVuc3VyZU1vZGVsQW5kSW50
ZXJmYWNlKGNvbnRleHRJZCk7Ci0gICAgbW9kZWwtPnNldFdpcmVsZXNzVmlkZW9QbGF5YmFja0Rp
c2FibGVkKGRpc2FibGVkKTsKLSAgICBpbnRlcmZhY2UtPnNldFdpcmVsZXNzVmlkZW9QbGF5YmFj
a0Rpc2FibGVkKGRpc2FibGVkKTsKKyAgICBlbnN1cmVNb2RlbChjb250ZXh0SWQpLnNldFdpcmVs
ZXNzVmlkZW9QbGF5YmFja0Rpc2FibGVkKGRpc2FibGVkKTsKIH0KIAogdm9pZCBXZWJQbGF5YmFj
a1Nlc3Npb25NYW5hZ2VyUHJveHk6OnNldER1cmF0aW9uKHVpbnQ2NF90IGNvbnRleHRJZCwgZG91
YmxlIGR1cmF0aW9uKQogewotICAgIFJlZlB0cjxXZWJQbGF5YmFja1Nlc3Npb25Nb2RlbENvbnRl
eHQ+IG1vZGVsOwotICAgIFJlZlB0cjxQbGF0Zm9ybVdlYlBsYXliYWNrU2Vzc2lvbkludGVyZmFj
ZT4gaW50ZXJmYWNlOwotICAgIHN0ZDo6dGllKG1vZGVsLCBpbnRlcmZhY2UpID0gZW5zdXJlTW9k
ZWxBbmRJbnRlcmZhY2UoY29udGV4dElkKTsKLSAgICBtb2RlbC0+c2V0RHVyYXRpb24oZHVyYXRp
b24pOwotICAgIGludGVyZmFjZS0+c2V0RHVyYXRpb24oZHVyYXRpb24pOworICAgIGVuc3VyZU1v
ZGVsKGNvbnRleHRJZCkuc2V0RHVyYXRpb24oZHVyYXRpb24pOwogfQogCiB2b2lkIFdlYlBsYXli
YWNrU2Vzc2lvbk1hbmFnZXJQcm94eTo6c2V0UmF0ZSh1aW50NjRfdCBjb250ZXh0SWQsIGJvb2wg
aXNQbGF5aW5nLCBkb3VibGUgcmF0ZSkKIHsKLSAgICBSZWZQdHI8V2ViUGxheWJhY2tTZXNzaW9u
TW9kZWxDb250ZXh0PiBtb2RlbDsKLSAgICBSZWZQdHI8UGxhdGZvcm1XZWJQbGF5YmFja1Nlc3Np
b25JbnRlcmZhY2U+IGludGVyZmFjZTsKLSAgICBzdGQ6OnRpZShtb2RlbCwgaW50ZXJmYWNlKSA9
IGVuc3VyZU1vZGVsQW5kSW50ZXJmYWNlKGNvbnRleHRJZCk7Ci0gICAgbW9kZWwtPnNldElzUGxh
eWluZyhpc1BsYXlpbmcpOwotICAgIG1vZGVsLT5zZXRQbGF5YmFja1JhdGUocmF0ZSk7Ci0gICAg
aW50ZXJmYWNlLT5zZXRSYXRlKGlzUGxheWluZywgcmF0ZSk7CisgICAgZW5zdXJlTW9kZWwoY29u
dGV4dElkKS5zZXRSYXRlKGlzUGxheWluZywgcmF0ZSk7CiB9CiAKICNwcmFnbWEgbWFyayBNZXNz
YWdlcyB0byBXZWJQbGF5YmFja1Nlc3Npb25NYW5hZ2VyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQ29jb2EvV2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5LmggYi9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29jb2EvV2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlclBy
b3h5LmgKaW5kZXggN2YxODM3OWQxOWEyMzQ5ZDBmNDc5NjQ5MGQ5MDY1MGQyMjRhNDhiYi4uMzAy
ODBhM2MwZDY1OGY3YzIzMGIyZmNkY2M0YzdhMTY4YzZhZTQ1NCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0NvY29hL1dlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eS5o
CisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db2NvYS9XZWJWaWRlb0Z1bGxzY3JlZW5N
YW5hZ2VyUHJveHkuaApAQCAtMzQsNiArMzQsNyBAQAogI2luY2x1ZGUgPFdlYkNvcmUvV2ViVmlk
ZW9GdWxsc2NyZWVuQ2hhbmdlT2JzZXJ2ZXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1dlYlZpZGVv
RnVsbHNjcmVlbk1vZGVsLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KKyNpbmNsdWRlIDx3
dGYvSGFzaFNldC5oPgogI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CiAjaW5jbHVkZSA8d3Rm
L1JlZkNvdW50ZWQuaD4KICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CkBAIC01Nyw3ICs1OCwxMCBA
QCBjbGFzcyBXZWJQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHk7CiBjbGFzcyBXZWJQbGF5YmFj
a1Nlc3Npb25Nb2RlbENvbnRleHQ7CiBjbGFzcyBXZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJv
eHk7CiAKLWNsYXNzIFdlYlZpZGVvRnVsbHNjcmVlbk1vZGVsQ29udGV4dCBmaW5hbDogcHVibGlj
IFJlZkNvdW50ZWQ8V2ViVmlkZW9GdWxsc2NyZWVuTW9kZWxDb250ZXh0PiwgcHVibGljIFdlYkNv
cmU6OldlYlZpZGVvRnVsbHNjcmVlbk1vZGVsLCBwdWJsaWMgV2ViQ29yZTo6V2ViVmlkZW9GdWxs
c2NyZWVuQ2hhbmdlT2JzZXJ2ZXIgIHsKK2NsYXNzIFdlYlZpZGVvRnVsbHNjcmVlbk1vZGVsQ29u
dGV4dCBmaW5hbAorICAgIDogcHVibGljIFJlZkNvdW50ZWQ8V2ViVmlkZW9GdWxsc2NyZWVuTW9k
ZWxDb250ZXh0PgorICAgICwgcHVibGljIFdlYkNvcmU6OldlYlZpZGVvRnVsbHNjcmVlbk1vZGVs
CisgICAgLCBwdWJsaWMgV2ViQ29yZTo6V2ViVmlkZW9GdWxsc2NyZWVuQ2hhbmdlT2JzZXJ2ZXIg
IHsKIHB1YmxpYzoKICAgICBzdGF0aWMgUmVmPFdlYlZpZGVvRnVsbHNjcmVlbk1vZGVsQ29udGV4
dD4gY3JlYXRlKFdlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eSYgbWFuYWdlciwgV2ViUGxh
eWJhY2tTZXNzaW9uTW9kZWxDb250ZXh0JiBwbGF5YmFja1Nlc3Npb25Nb2RlbCwgdWludDY0X3Qg
Y29udGV4dElkKQogICAgIHsKQEAgLTc0LDExICs3OCwxNSBAQCBwcml2YXRlOgogICAgIFdlYlZp
ZGVvRnVsbHNjcmVlbk1vZGVsQ29udGV4dChXZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHkm
LCBXZWJQbGF5YmFja1Nlc3Npb25Nb2RlbENvbnRleHQmLCB1aW50NjRfdCk7CiAKICAgICAvLyBX
ZWJWaWRlb0Z1bGxzY3JlZW5Nb2RlbAorICAgIHZvaWQgYWRkQ2xpZW50KFdlYkNvcmU6OldlYlZp
ZGVvRnVsbHNjcmVlbk1vZGVsQ2xpZW50Jikgb3ZlcnJpZGU7CisgICAgdm9pZCByZW1vdmVDbGll
bnQoV2ViQ29yZTo6V2ViVmlkZW9GdWxsc2NyZWVuTW9kZWxDbGllbnQmKSBvdmVycmlkZTsKICAg
ICB2b2lkIHJlcXVlc3RGdWxsc2NyZWVuTW9kZShXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50RW51
bXM6OlZpZGVvRnVsbHNjcmVlbk1vZGUpIG92ZXJyaWRlOwogICAgIHZvaWQgc2V0VmlkZW9MYXll
ckZyYW1lKFdlYkNvcmU6OkZsb2F0UmVjdCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBzZXRWaWRlb0xh
eWVyR3Jhdml0eShWaWRlb0dyYXZpdHkpIG92ZXJyaWRlOwogICAgIHZvaWQgZnVsbHNjcmVlbk1v
ZGVDaGFuZ2VkKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnRFbnVtczo6VmlkZW9GdWxsc2NyZWVu
TW9kZSkgb3ZlcnJpZGU7CiAgICAgYm9vbCBpc1Zpc2libGUoKSBjb25zdCBvdmVycmlkZTsKKyAg
ICBib29sIGhhc1ZpZGVvKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9oYXNWaWRlbzsgfQor
ICAgIFdlYkNvcmU6OkZsb2F0U2l6ZSB2aWRlb0RpbWVuc2lvbnMoKSBjb25zdCBvdmVycmlkZSB7
IHJldHVybiBtX3ZpZGVvRGltZW5zaW9uczsgfQogCiAgICAgLy8gV2ViVmlkZW9GdWxsc2NyZWVu
Q2hhbmdlT2JzZXJ2ZXIKICAgICB2b2lkIGRpZFNldHVwRnVsbHNjcmVlbigpIG92ZXJyaWRlOwpA
QCAtOTEsNiArOTksOSBAQCBwcml2YXRlOgogICAgIFJlZjxXZWJQbGF5YmFja1Nlc3Npb25Nb2Rl
bENvbnRleHQ+IG1fcGxheWJhY2tTZXNzaW9uTW9kZWw7CiAgICAgdWludDY0X3QgbV9jb250ZXh0
SWQ7CiAgICAgUmV0YWluUHRyPFBsYXRmb3JtVmlldyAqPiBtX2xheWVySG9zdFZpZXc7CisgICAg
SGFzaFNldDxXZWJDb3JlOjpXZWJWaWRlb0Z1bGxzY3JlZW5Nb2RlbENsaWVudCo+IG1fY2xpZW50
czsKKyAgICBXZWJDb3JlOjpGbG9hdFNpemUgbV92aWRlb0RpbWVuc2lvbnM7CisgICAgYm9vbCBt
X2hhc1ZpZGVvIHsgZmFsc2UgfTsKIH07CiAKIGNsYXNzIFdlYlZpZGVvRnVsbHNjcmVlbk1hbmFn
ZXJQcm94eSA6IHB1YmxpYyBSZWZDb3VudGVkPFdlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94
eT4sIHByaXZhdGUgSVBDOjpNZXNzYWdlUmVjZWl2ZXIgewpAQCAtMTI2LDcgKzEzNyw4IEBAIHBy
aXZhdGU6CiAKICAgICAvLyBNZXNzYWdlcyBmcm9tIFdlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXIK
ICAgICB2b2lkIHNldHVwRnVsbHNjcmVlbldpdGhJRCh1aW50NjRfdCBjb250ZXh0SWQsIHVpbnQz
Ml90IHZpZGVvTGF5ZXJJRCwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYgaW5pdGlhbFJlY3QsIGZs
b2F0IGhvc3RpbmdTY2FsZUZhY3RvciwgV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudEVudW1zOjpW
aWRlb0Z1bGxzY3JlZW5Nb2RlLCBib29sIGFsbG93c1BpY3R1cmVJblBpY3R1cmUpOwotICAgIHZv
aWQgc2V0VmlkZW9EaW1lbnNpb25zKHVpbnQ2NF90IGNvbnRleHRJZCwgYm9vbCBoYXNWaWRlbywg
dW5zaWduZWQgd2lkdGgsIHVuc2lnbmVkIGhlaWdodCk7CisgICAgdm9pZCBzZXRIYXNWaWRlbyh1
aW50NjRfdCBjb250ZXh0SWQsIGJvb2wpOworICAgIHZvaWQgc2V0VmlkZW9EaW1lbnNpb25zKHVp
bnQ2NF90IGNvbnRleHRJZCwgY29uc3QgV2ViQ29yZTo6RmxvYXRTaXplJik7CiAgICAgdm9pZCBl
bnRlckZ1bGxzY3JlZW4odWludDY0X3QgY29udGV4dElkKTsKICAgICB2b2lkIGV4aXRGdWxsc2Ny
ZWVuKHVpbnQ2NF90IGNvbnRleHRJZCwgV2ViQ29yZTo6SW50UmVjdCBmaW5hbFJlY3QpOwogICAg
IHZvaWQgY2xlYW51cEZ1bGxzY3JlZW4odWludDY0X3QgY29udGV4dElkKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db2NvYS9XZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2Vy
UHJveHkubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29jb2EvV2ViVmlk
ZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5Lm1lc3NhZ2VzLmluCmluZGV4IGU0OTY2ODBiNTI5Mzkz
Mjc1N2VkN2Q1ZmJkMmE2NjVjNjI5MzMwZWYuLmYyODE1ZDY3MjM4ZTlkM2FmZmNmMDFmNGY0ZGJk
NDA1MjQwODQ0Y2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db2NvYS9X
ZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHkubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0NvY29hL1dlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eS5tZXNz
YWdlcy5pbgpAQCAtMjIsNyArMjIsOCBAQAogCiAjaWYgKFBMQVRGT1JNKElPUykgJiYgSEFWRShB
VktJVCkpIHx8IChQTEFURk9STShNQUMpICYmIEVOQUJMRShWSURFT19QUkVTRU5UQVRJT05fTU9E
RSkpCiBtZXNzYWdlcyAtPiBXZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHkgewotICAgIFNl
dFZpZGVvRGltZW5zaW9ucyh1aW50NjRfdCBjb250ZXh0SWQsIGJvb2wgaGFzVmlkZW8sIHVuc2ln
bmVkIHdpZHRoLCB1bnNpZ25lZCBoZWlnaHQpCisgICAgU2V0SGFzVmlkZW8odWludDY0X3QgY29u
dGV4dElkLCBib29sIGhhc1ZpZGVvKQorICAgIFNldFZpZGVvRGltZW5zaW9ucyh1aW50NjRfdCBj
b250ZXh0SWQsIFdlYkNvcmU6OkZsb2F0U2l6ZSB2aWRlb0RpbWVuc2lvbnMpCiAgICAgU2V0dXBG
dWxsc2NyZWVuV2l0aElEKHVpbnQ2NF90IGNvbnRleHRJZCwgdWludDMyX3QgdmlkZW9MYXllcklE
LCBXZWJDb3JlOjpJbnRSZWN0IGluaXRpYWxSZWN0LCBmbG9hdCBob3N0aW5nU2NhbGVGYWN0b3Is
IFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnRFbnVtczo6VmlkZW9GdWxsc2NyZWVuTW9kZSB2aWRl
b0Z1bGxzY3JlZW5Nb2RlLCBib29sIGFsbG93c1BpY3R1cmVJblBpY3R1cmUpCiAgICAgRW50ZXJG
dWxsc2NyZWVuKHVpbnQ2NF90IGNvbnRleHRJZCkKICAgICBFeGl0RnVsbHNjcmVlbih1aW50NjRf
dCBjb250ZXh0SWQsIFdlYkNvcmU6OkludFJlY3QgZmluYWxSZWN0KQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0NvY29hL1dlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94
eS5tbSBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db2NvYS9XZWJWaWRlb0Z1bGxzY3JlZW5N
YW5hZ2VyUHJveHkubW0KaW5kZXggYzQyODZiZmViZTk3ZjljNmE5MzA2NTQ5MDY2NDVkMGNjOWI4
NmFjOS4uMDEyYzc5ZTk5MTRhOTRkYmYwODNlMTA5ODU2YTQyNTQ1YzI2YzliNSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0NvY29hL1dlYlZpZGVvRnVsbHNjcmVlbk1hbmFn
ZXJQcm94eS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29jb2EvV2ViVmlkZW9G
dWxsc2NyZWVuTWFuYWdlclByb3h5Lm1tCkBAIC0xMjQsNiArMTI0LDE4IEBAIFdlYlZpZGVvRnVs
bHNjcmVlbk1vZGVsQ29udGV4dDo6fldlYlZpZGVvRnVsbHNjcmVlbk1vZGVsQ29udGV4dCgpCiB7
CiB9CiAKK3ZvaWQgV2ViVmlkZW9GdWxsc2NyZWVuTW9kZWxDb250ZXh0OjphZGRDbGllbnQoV2Vi
VmlkZW9GdWxsc2NyZWVuTW9kZWxDbGllbnQmIGNsaWVudCkKK3sKKyAgICBBU1NFUlQoIW1fY2xp
ZW50cy5jb250YWlucygmY2xpZW50KSk7CisgICAgbV9jbGllbnRzLmFkZCgmY2xpZW50KTsKK30K
Kwordm9pZCBXZWJWaWRlb0Z1bGxzY3JlZW5Nb2RlbENvbnRleHQ6OnJlbW92ZUNsaWVudChXZWJW
aWRlb0Z1bGxzY3JlZW5Nb2RlbENsaWVudCYgY2xpZW50KQoreworICAgIEFTU0VSVChtX2NsaWVu
dHMuY29udGFpbnMoJmNsaWVudCkpOworICAgIG1fY2xpZW50cy5yZW1vdmUoJmNsaWVudCk7Cit9
CisKIHZvaWQgV2ViVmlkZW9GdWxsc2NyZWVuTW9kZWxDb250ZXh0OjpyZXF1ZXN0RnVsbHNjcmVl
bk1vZGUoSFRNTE1lZGlhRWxlbWVudEVudW1zOjpWaWRlb0Z1bGxzY3JlZW5Nb2RlIG1vZGUpCiB7
CiAgICAgaWYgKG1fbWFuYWdlcikKQEAgLTM1OCw5ICszNzAsMTQgQEAgdm9pZCBXZWJWaWRlb0Z1
bGxzY3JlZW5NYW5hZ2VyUHJveHk6OnNldHVwRnVsbHNjcmVlbldpdGhJRCh1aW50NjRfdCBjb250
ZXh0SWQsIHUKICNlbmRpZgogfQogCi12b2lkIFdlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94
eTo6c2V0VmlkZW9EaW1lbnNpb25zKHVpbnQ2NF90IGNvbnRleHRJZCwgYm9vbCBoYXNWaWRlbywg
dW5zaWduZWQgd2lkdGgsIHVuc2lnbmVkIGhlaWdodCkKK3ZvaWQgV2ViVmlkZW9GdWxsc2NyZWVu
TWFuYWdlclByb3h5OjpzZXRIYXNWaWRlbyh1aW50NjRfdCBjb250ZXh0SWQsIGJvb2wgaGFzVmlk
ZW8pCit7CisgICAgZW5zdXJlSW50ZXJmYWNlKGNvbnRleHRJZCkuaGFzVmlkZW9DaGFuZ2VkKGhh
c1ZpZGVvKTsKK30KKwordm9pZCBXZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHk6OnNldFZp
ZGVvRGltZW5zaW9ucyh1aW50NjRfdCBjb250ZXh0SWQsIGNvbnN0IEZsb2F0U2l6ZSYgdmlkZW9E
aW1lbnNpb25zKQogewotICAgIGVuc3VyZUludGVyZmFjZShjb250ZXh0SWQpLnNldFZpZGVvRGlt
ZW5zaW9ucyhoYXNWaWRlbywgd2lkdGgsIGhlaWdodCk7CisgICAgZW5zdXJlSW50ZXJmYWNlKGNv
bnRleHRJZCkudmlkZW9EaW1lbnNpb25zQ2hhbmdlZCh2aWRlb0RpbWVuc2lvbnMpOwogfQogCiB2
b2lkIFdlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eTo6ZW50ZXJGdWxsc2NyZWVuKHVpbnQ2
NF90IGNvbnRleHRJZCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvY29j
b2EvV2ViUGxheWJhY2tTZXNzaW9uTWFuYWdlci5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9jb2NvYS9XZWJQbGF5YmFja1Nlc3Npb25NYW5hZ2VyLmgKaW5kZXggN2FhMjE2MDMyOWUwOGYy
NTI1OGEyZDkwZWY1YWNiZTc2ODE4YmE4ZS4uMTZhMjA3ZDg5YzUyNTQ2MTVkZGY4YzU2MzlhMGM2
OTkzZWFmODgxZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9jb2NvYS9X
ZWJQbGF5YmFja1Nlc3Npb25NYW5hZ2VyLmgKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9jb2NvYS9XZWJQbGF5YmFja1Nlc3Npb25NYW5hZ2VyLmgKQEAgLTU0LDcgKzU0LDEwIEBAIG5h
bWVzcGFjZSBXZWJLaXQgewogY2xhc3MgV2ViUGFnZTsKIGNsYXNzIFdlYlBsYXliYWNrU2Vzc2lv
bk1hbmFnZXI7CiAKLWNsYXNzIFdlYlBsYXliYWNrU2Vzc2lvbkludGVyZmFjZUNvbnRleHQgZmlu
YWwgOiBwdWJsaWMgUmVmQ291bnRlZDxXZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2VDb250ZXh0
PiwgcHVibGljIFdlYkNvcmU6OldlYlBsYXliYWNrU2Vzc2lvbkludGVyZmFjZSB7CitjbGFzcyBX
ZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2VDb250ZXh0IGZpbmFsCisgICAgOiBwdWJsaWMgUmVm
Q291bnRlZDxXZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2VDb250ZXh0PgorICAgICwgcHVibGlj
IFdlYkNvcmU6OldlYlBsYXliYWNrU2Vzc2lvbkludGVyZmFjZQorICAgICwgcHVibGljIFdlYkNv
cmU6OldlYlBsYXliYWNrU2Vzc2lvbk1vZGVsQ2xpZW50IHsKIHB1YmxpYzoKICAgICBzdGF0aWMg
UmVmPFdlYlBsYXliYWNrU2Vzc2lvbkludGVyZmFjZUNvbnRleHQ+IGNyZWF0ZShXZWJQbGF5YmFj
a1Nlc3Npb25NYW5hZ2VyJiBtYW5hZ2VyLCB1aW50NjRfdCBjb250ZXh0SWQpCiAgICAgewpAQCAt
NjksMTYgKzcyLDE4IEBAIHByaXZhdGU6CiAKICAgICAvLyBXZWJQbGF5YmFja1Nlc3Npb25JbnRl
cmZhY2UKICAgICB2b2lkIHJlc2V0TWVkaWFTdGF0ZSgpIGZpbmFsOwotICAgIHZvaWQgc2V0RHVy
YXRpb24oZG91YmxlKSBmaW5hbDsKLSAgICB2b2lkIHNldEN1cnJlbnRUaW1lKGRvdWJsZSBjdXJy
ZW50VGltZSwgZG91YmxlIGFuY2hvclRpbWUpIGZpbmFsOwotICAgIHZvaWQgc2V0QnVmZmVyZWRU
aW1lKGRvdWJsZSkgZmluYWw7Ci0gICAgdm9pZCBzZXRSYXRlKGJvb2wgaXNQbGF5aW5nLCBmbG9h
dCBwbGF5YmFja1JhdGUpIGZpbmFsOwotICAgIHZvaWQgc2V0U2Vla2FibGVSYW5nZXMoY29uc3Qg
V2ViQ29yZTo6VGltZVJhbmdlcyYpIGZpbmFsOwotICAgIHZvaWQgc2V0Q2FuUGxheUZhc3RSZXZl
cnNlKGJvb2wgdmFsdWUpIGZpbmFsOwotICAgIHZvaWQgc2V0QXVkaW9NZWRpYVNlbGVjdGlvbk9w
dGlvbnMoY29uc3QgVmVjdG9yPFdURjo6U3RyaW5nPiYgb3B0aW9ucywgdWludDY0X3Qgc2VsZWN0
ZWRJbmRleCkgZmluYWw7Ci0gICAgdm9pZCBzZXRMZWdpYmxlTWVkaWFTZWxlY3Rpb25PcHRpb25z
KGNvbnN0IFZlY3RvcjxXVEY6OlN0cmluZz4mIG9wdGlvbnMsIHVpbnQ2NF90IHNlbGVjdGVkSW5k
ZXgpIGZpbmFsOwotICAgIHZvaWQgc2V0RXh0ZXJuYWxQbGF5YmFjayhib29sIGVuYWJsZWQsIEV4
dGVybmFsUGxheWJhY2tUYXJnZXRUeXBlLCBXVEY6OlN0cmluZyBsb2NhbGl6ZWREZXZpY2VOYW1l
KSBmaW5hbDsKLSAgICB2b2lkIHNldFdpcmVsZXNzVmlkZW9QbGF5YmFja0Rpc2FibGVkKGJvb2wp
IGZpbmFsOworCisgICAgLy8gV2ViUGxheWJhY2tNb2RlbENsaWVudAorICAgIHZvaWQgZHVyYXRp
b25DaGFuZ2VkKGRvdWJsZSkgZmluYWw7CisgICAgdm9pZCBjdXJyZW50VGltZUNoYW5nZWQoZG91
YmxlIGN1cnJlbnRUaW1lLCBkb3VibGUgYW5jaG9yVGltZSkgZmluYWw7CisgICAgdm9pZCBidWZm
ZXJlZFRpbWVDaGFuZ2VkKGRvdWJsZSkgZmluYWw7CisgICAgdm9pZCByYXRlQ2hhbmdlZChib29s
IGlzUGxheWluZywgZmxvYXQgcGxheWJhY2tSYXRlKSBmaW5hbDsKKyAgICB2b2lkIHNlZWthYmxl
UmFuZ2VzQ2hhbmdlZChjb25zdCBXZWJDb3JlOjpUaW1lUmFuZ2VzJikgZmluYWw7CisgICAgdm9p
ZCBjYW5QbGF5RmFzdFJldmVyc2VDaGFuZ2VkKGJvb2wgdmFsdWUpIGZpbmFsOworICAgIHZvaWQg
YXVkaW9NZWRpYVNlbGVjdGlvbk9wdGlvbnNDaGFuZ2VkKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBv
cHRpb25zLCB1aW50NjRfdCBzZWxlY3RlZEluZGV4KSBmaW5hbDsKKyAgICB2b2lkIGxlZ2libGVN
ZWRpYVNlbGVjdGlvbk9wdGlvbnNDaGFuZ2VkKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBvcHRpb25z
LCB1aW50NjRfdCBzZWxlY3RlZEluZGV4KSBmaW5hbDsKKyAgICB2b2lkIGV4dGVybmFsUGxheWJh
Y2tDaGFuZ2VkKGJvb2wgZW5hYmxlZCwgV2ViQ29yZTo6V2ViUGxheWJhY2tTZXNzaW9uTW9kZWw6
OkV4dGVybmFsUGxheWJhY2tUYXJnZXRUeXBlLCBjb25zdCBTdHJpbmcmIGxvY2FsaXplZERldmlj
ZU5hbWUpIGZpbmFsOworICAgIHZvaWQgd2lyZWxlc3NWaWRlb1BsYXliYWNrRGlzYWJsZWRDaGFu
Z2VkKGJvb2wpIGZpbmFsOwogCiAgICAgV2ViUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlQ29udGV4
dChXZWJQbGF5YmFja1Nlc3Npb25NYW5hZ2VyJiwgdWludDY0X3QgY29udGV4dElkKTsKIApAQCAt
MTE0LDE2ICsxMTksMTYgQEAgcHJvdGVjdGVkOgogCiAgICAgLy8gSW50ZXJmYWNlIHRvIFdlYlBs
YXliYWNrU2Vzc2lvbkludGVyZmFjZUNvbnRleHQKICAgICB2b2lkIHJlc2V0TWVkaWFTdGF0ZSh1
aW50NjRfdCBjb250ZXh0SWQpOwotICAgIHZvaWQgc2V0RHVyYXRpb24odWludDY0X3QgY29udGV4
dElkLCBkb3VibGUpOwotICAgIHZvaWQgc2V0Q3VycmVudFRpbWUodWludDY0X3QgY29udGV4dElk
LCBkb3VibGUgY3VycmVudFRpbWUsIGRvdWJsZSBhbmNob3JUaW1lKTsKLSAgICB2b2lkIHNldEJ1
ZmZlcmVkVGltZSh1aW50NjRfdCBjb250ZXh0SWQsIGRvdWJsZSBidWZmZXJlZFRpbWUpOwotICAg
IHZvaWQgc2V0UmF0ZSh1aW50NjRfdCBjb250ZXh0SWQsIGJvb2wgaXNQbGF5aW5nLCBmbG9hdCBw
bGF5YmFja1JhdGUpOwotICAgIHZvaWQgc2V0U2Vla2FibGVSYW5nZXModWludDY0X3QgY29udGV4
dElkLCBjb25zdCBXZWJDb3JlOjpUaW1lUmFuZ2VzJik7Ci0gICAgdm9pZCBzZXRDYW5QbGF5RmFz
dFJldmVyc2UodWludDY0X3QgY29udGV4dElkLCBib29sIHZhbHVlKTsKLSAgICB2b2lkIHNldEF1
ZGlvTWVkaWFTZWxlY3Rpb25PcHRpb25zKHVpbnQ2NF90IGNvbnRleHRJZCwgY29uc3QgVmVjdG9y
PFN0cmluZz4mIG9wdGlvbnMsIHVpbnQ2NF90IHNlbGVjdGVkSW5kZXgpOwotICAgIHZvaWQgc2V0
TGVnaWJsZU1lZGlhU2VsZWN0aW9uT3B0aW9ucyh1aW50NjRfdCBjb250ZXh0SWQsIGNvbnN0IFZl
Y3RvcjxTdHJpbmc+JiBvcHRpb25zLCB1aW50NjRfdCBzZWxlY3RlZEluZGV4KTsKLSAgICB2b2lk
IHNldEV4dGVybmFsUGxheWJhY2sodWludDY0X3QgY29udGV4dElkLCBib29sIGVuYWJsZWQsIFdl
YkNvcmU6OldlYlBsYXliYWNrU2Vzc2lvbkludGVyZmFjZTo6RXh0ZXJuYWxQbGF5YmFja1Rhcmdl
dFR5cGUsIFN0cmluZyBsb2NhbGl6ZWREZXZpY2VOYW1lKTsKLSAgICB2b2lkIHNldFdpcmVsZXNz
VmlkZW9QbGF5YmFja0Rpc2FibGVkKHVpbnQ2NF90IGNvbnRleHRJZCwgYm9vbCk7CisgICAgdm9p
ZCBkdXJhdGlvbkNoYW5nZWQodWludDY0X3QgY29udGV4dElkLCBkb3VibGUpOworICAgIHZvaWQg
Y3VycmVudFRpbWVDaGFuZ2VkKHVpbnQ2NF90IGNvbnRleHRJZCwgZG91YmxlIGN1cnJlbnRUaW1l
LCBkb3VibGUgYW5jaG9yVGltZSk7CisgICAgdm9pZCBidWZmZXJlZFRpbWVDaGFuZ2VkKHVpbnQ2
NF90IGNvbnRleHRJZCwgZG91YmxlIGJ1ZmZlcmVkVGltZSk7CisgICAgdm9pZCByYXRlQ2hhbmdl
ZCh1aW50NjRfdCBjb250ZXh0SWQsIGJvb2wgaXNQbGF5aW5nLCBmbG9hdCBwbGF5YmFja1JhdGUp
OworICAgIHZvaWQgc2Vla2FibGVSYW5nZXNDaGFuZ2VkKHVpbnQ2NF90IGNvbnRleHRJZCwgY29u
c3QgV2ViQ29yZTo6VGltZVJhbmdlcyYpOworICAgIHZvaWQgY2FuUGxheUZhc3RSZXZlcnNlQ2hh
bmdlZCh1aW50NjRfdCBjb250ZXh0SWQsIGJvb2wgdmFsdWUpOworICAgIHZvaWQgYXVkaW9NZWRp
YVNlbGVjdGlvbk9wdGlvbnNDaGFuZ2VkKHVpbnQ2NF90IGNvbnRleHRJZCwgY29uc3QgVmVjdG9y
PFN0cmluZz4mIG9wdGlvbnMsIHVpbnQ2NF90IHNlbGVjdGVkSW5kZXgpOworICAgIHZvaWQgbGVn
aWJsZU1lZGlhU2VsZWN0aW9uT3B0aW9uc0NoYW5nZWQodWludDY0X3QgY29udGV4dElkLCBjb25z
dCBWZWN0b3I8U3RyaW5nPiYgb3B0aW9ucywgdWludDY0X3Qgc2VsZWN0ZWRJbmRleCk7CisgICAg
dm9pZCBleHRlcm5hbFBsYXliYWNrQ2hhbmdlZCh1aW50NjRfdCBjb250ZXh0SWQsIGJvb2wgZW5h
YmxlZCwgV2ViQ29yZTo6V2ViUGxheWJhY2tTZXNzaW9uTW9kZWw6OkV4dGVybmFsUGxheWJhY2tU
YXJnZXRUeXBlLCBTdHJpbmcgbG9jYWxpemVkRGV2aWNlTmFtZSk7CisgICAgdm9pZCB3aXJlbGVz
c1ZpZGVvUGxheWJhY2tEaXNhYmxlZENoYW5nZWQodWludDY0X3QgY29udGV4dElkLCBib29sKTsK
IAogICAgIC8vIE1lc3NhZ2VzIGZyb20gV2ViUGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5CiAg
ICAgdm9pZCBwbGF5KHVpbnQ2NF90IGNvbnRleHRJZCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL2NvY29hL1dlYlBsYXliYWNrU2Vzc2lvbk1hbmFnZXIubW0gYi9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL2NvY29hL1dlYlBsYXliYWNrU2Vzc2lvbk1hbmFnZXIubW0K
aW5kZXggMmI2NzNhNjJkYTMwYjY5Y2VhZTU4ZjRiMzRlYTdmZjhjZDYyOGY3Ny4uNmE3YWQ5M2E5
NWQyZDhlMDg2NTE5ZWI2OTdhZjc4YWJmMjY3ZGE5ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9jb2NvYS9XZWJQbGF5YmFja1Nlc3Npb25NYW5hZ2VyLm1tCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvY29jb2EvV2ViUGxheWJhY2tTZXNzaW9uTWFuYWdlci5t
bQpAQCAtNzIsNjQgKzcyLDY0IEBAIHZvaWQgV2ViUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlQ29u
dGV4dDo6cmVzZXRNZWRpYVN0YXRlKCkKICAgICAgICAgbV9tYW5hZ2VyLT5yZXNldE1lZGlhU3Rh
dGUobV9jb250ZXh0SWQpOwogfQogCi12b2lkIFdlYlBsYXliYWNrU2Vzc2lvbkludGVyZmFjZUNv
bnRleHQ6OnNldER1cmF0aW9uKGRvdWJsZSBkdXJhdGlvbikKK3ZvaWQgV2ViUGxheWJhY2tTZXNz
aW9uSW50ZXJmYWNlQ29udGV4dDo6ZHVyYXRpb25DaGFuZ2VkKGRvdWJsZSBkdXJhdGlvbikKIHsK
ICAgICBpZiAobV9tYW5hZ2VyKQotICAgICAgICBtX21hbmFnZXItPnNldER1cmF0aW9uKG1fY29u
dGV4dElkLCBkdXJhdGlvbik7CisgICAgICAgIG1fbWFuYWdlci0+ZHVyYXRpb25DaGFuZ2VkKG1f
Y29udGV4dElkLCBkdXJhdGlvbik7CiB9CiAKLXZvaWQgV2ViUGxheWJhY2tTZXNzaW9uSW50ZXJm
YWNlQ29udGV4dDo6c2V0Q3VycmVudFRpbWUoZG91YmxlIGN1cnJlbnRUaW1lLCBkb3VibGUgYW5j
aG9yVGltZSkKK3ZvaWQgV2ViUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlQ29udGV4dDo6Y3VycmVu
dFRpbWVDaGFuZ2VkKGRvdWJsZSBjdXJyZW50VGltZSwgZG91YmxlIGFuY2hvclRpbWUpCiB7CiAg
ICAgaWYgKG1fbWFuYWdlcikKLSAgICAgICAgbV9tYW5hZ2VyLT5zZXRDdXJyZW50VGltZShtX2Nv
bnRleHRJZCwgY3VycmVudFRpbWUsIGFuY2hvclRpbWUpOworICAgICAgICBtX21hbmFnZXItPmN1
cnJlbnRUaW1lQ2hhbmdlZChtX2NvbnRleHRJZCwgY3VycmVudFRpbWUsIGFuY2hvclRpbWUpOwog
fQogCi12b2lkIFdlYlBsYXliYWNrU2Vzc2lvbkludGVyZmFjZUNvbnRleHQ6OnNldEJ1ZmZlcmVk
VGltZShkb3VibGUgYnVmZmVyZWRUaW1lKQordm9pZCBXZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZh
Y2VDb250ZXh0OjpidWZmZXJlZFRpbWVDaGFuZ2VkKGRvdWJsZSBidWZmZXJlZFRpbWUpCiB7CiAg
ICAgaWYgKG1fbWFuYWdlcikKLSAgICAgICAgbV9tYW5hZ2VyLT5zZXRCdWZmZXJlZFRpbWUobV9j
b250ZXh0SWQsIGJ1ZmZlcmVkVGltZSk7CisgICAgICAgIG1fbWFuYWdlci0+YnVmZmVyZWRUaW1l
Q2hhbmdlZChtX2NvbnRleHRJZCwgYnVmZmVyZWRUaW1lKTsKIH0KIAotdm9pZCBXZWJQbGF5YmFj
a1Nlc3Npb25JbnRlcmZhY2VDb250ZXh0OjpzZXRSYXRlKGJvb2wgaXNQbGF5aW5nLCBmbG9hdCBw
bGF5YmFja1JhdGUpCit2b2lkIFdlYlBsYXliYWNrU2Vzc2lvbkludGVyZmFjZUNvbnRleHQ6OnJh
dGVDaGFuZ2VkKGJvb2wgaXNQbGF5aW5nLCBmbG9hdCBwbGF5YmFja1JhdGUpCiB7CiAgICAgaWYg
KG1fbWFuYWdlcikKLSAgICAgICAgbV9tYW5hZ2VyLT5zZXRSYXRlKG1fY29udGV4dElkLCBpc1Bs
YXlpbmcsIHBsYXliYWNrUmF0ZSk7CisgICAgICAgIG1fbWFuYWdlci0+cmF0ZUNoYW5nZWQobV9j
b250ZXh0SWQsIGlzUGxheWluZywgcGxheWJhY2tSYXRlKTsKIH0KIAotdm9pZCBXZWJQbGF5YmFj
a1Nlc3Npb25JbnRlcmZhY2VDb250ZXh0OjpzZXRTZWVrYWJsZVJhbmdlcyhjb25zdCBXZWJDb3Jl
OjpUaW1lUmFuZ2VzJiByYW5nZXMpCit2b2lkIFdlYlBsYXliYWNrU2Vzc2lvbkludGVyZmFjZUNv
bnRleHQ6OnNlZWthYmxlUmFuZ2VzQ2hhbmdlZChjb25zdCBXZWJDb3JlOjpUaW1lUmFuZ2VzJiBy
YW5nZXMpCiB7CiAgICAgaWYgKG1fbWFuYWdlcikKLSAgICAgICAgbV9tYW5hZ2VyLT5zZXRTZWVr
YWJsZVJhbmdlcyhtX2NvbnRleHRJZCwgcmFuZ2VzKTsKKyAgICAgICAgbV9tYW5hZ2VyLT5zZWVr
YWJsZVJhbmdlc0NoYW5nZWQobV9jb250ZXh0SWQsIHJhbmdlcyk7CiB9CiAKLXZvaWQgV2ViUGxh
eWJhY2tTZXNzaW9uSW50ZXJmYWNlQ29udGV4dDo6c2V0Q2FuUGxheUZhc3RSZXZlcnNlKGJvb2wg
dmFsdWUpCit2b2lkIFdlYlBsYXliYWNrU2Vzc2lvbkludGVyZmFjZUNvbnRleHQ6OmNhblBsYXlG
YXN0UmV2ZXJzZUNoYW5nZWQoYm9vbCB2YWx1ZSkKIHsKICAgICBpZiAobV9tYW5hZ2VyKQotICAg
ICAgICBtX21hbmFnZXItPnNldENhblBsYXlGYXN0UmV2ZXJzZShtX2NvbnRleHRJZCwgdmFsdWUp
OworICAgICAgICBtX21hbmFnZXItPmNhblBsYXlGYXN0UmV2ZXJzZUNoYW5nZWQobV9jb250ZXh0
SWQsIHZhbHVlKTsKIH0KIAotdm9pZCBXZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2VDb250ZXh0
OjpzZXRBdWRpb01lZGlhU2VsZWN0aW9uT3B0aW9ucyhjb25zdCBWZWN0b3I8V1RGOjpTdHJpbmc+
JiBvcHRpb25zLCB1aW50NjRfdCBzZWxlY3RlZEluZGV4KQordm9pZCBXZWJQbGF5YmFja1Nlc3Np
b25JbnRlcmZhY2VDb250ZXh0OjphdWRpb01lZGlhU2VsZWN0aW9uT3B0aW9uc0NoYW5nZWQoY29u
c3QgVmVjdG9yPFN0cmluZz4mIG9wdGlvbnMsIHVpbnQ2NF90IHNlbGVjdGVkSW5kZXgpCiB7CiAg
ICAgaWYgKG1fbWFuYWdlcikKLSAgICAgICAgbV9tYW5hZ2VyLT5zZXRBdWRpb01lZGlhU2VsZWN0
aW9uT3B0aW9ucyhtX2NvbnRleHRJZCwgb3B0aW9ucywgc2VsZWN0ZWRJbmRleCk7CisgICAgICAg
IG1fbWFuYWdlci0+YXVkaW9NZWRpYVNlbGVjdGlvbk9wdGlvbnNDaGFuZ2VkKG1fY29udGV4dElk
LCBvcHRpb25zLCBzZWxlY3RlZEluZGV4KTsKIH0KIAotdm9pZCBXZWJQbGF5YmFja1Nlc3Npb25J
bnRlcmZhY2VDb250ZXh0OjpzZXRMZWdpYmxlTWVkaWFTZWxlY3Rpb25PcHRpb25zKGNvbnN0IFZl
Y3RvcjxXVEY6OlN0cmluZz4mIG9wdGlvbnMsIHVpbnQ2NF90IHNlbGVjdGVkSW5kZXgpCit2b2lk
IFdlYlBsYXliYWNrU2Vzc2lvbkludGVyZmFjZUNvbnRleHQ6OmxlZ2libGVNZWRpYVNlbGVjdGlv
bk9wdGlvbnNDaGFuZ2VkKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBvcHRpb25zLCB1aW50NjRfdCBz
ZWxlY3RlZEluZGV4KQogewogICAgIGlmIChtX21hbmFnZXIpCi0gICAgICAgIG1fbWFuYWdlci0+
c2V0TGVnaWJsZU1lZGlhU2VsZWN0aW9uT3B0aW9ucyhtX2NvbnRleHRJZCwgb3B0aW9ucywgc2Vs
ZWN0ZWRJbmRleCk7CisgICAgICAgIG1fbWFuYWdlci0+bGVnaWJsZU1lZGlhU2VsZWN0aW9uT3B0
aW9uc0NoYW5nZWQobV9jb250ZXh0SWQsIG9wdGlvbnMsIHNlbGVjdGVkSW5kZXgpOwogfQogCi12
b2lkIFdlYlBsYXliYWNrU2Vzc2lvbkludGVyZmFjZUNvbnRleHQ6OnNldEV4dGVybmFsUGxheWJh
Y2soYm9vbCBlbmFibGVkLCBFeHRlcm5hbFBsYXliYWNrVGFyZ2V0VHlwZSB0eXBlLCBXVEY6OlN0
cmluZyBsb2NhbGl6ZWREZXZpY2VOYW1lKQordm9pZCBXZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZh
Y2VDb250ZXh0OjpleHRlcm5hbFBsYXliYWNrQ2hhbmdlZChib29sIGVuYWJsZWQsIFdlYlBsYXli
YWNrU2Vzc2lvbk1vZGVsOjpFeHRlcm5hbFBsYXliYWNrVGFyZ2V0VHlwZSB0eXBlLCBjb25zdCBT
dHJpbmcmIGxvY2FsaXplZERldmljZU5hbWUpCiB7CiAgICAgaWYgKG1fbWFuYWdlcikKLSAgICAg
ICAgbV9tYW5hZ2VyLT5zZXRFeHRlcm5hbFBsYXliYWNrKG1fY29udGV4dElkLCBlbmFibGVkLCB0
eXBlLCBsb2NhbGl6ZWREZXZpY2VOYW1lKTsKKyAgICAgICAgbV9tYW5hZ2VyLT5leHRlcm5hbFBs
YXliYWNrQ2hhbmdlZChtX2NvbnRleHRJZCwgZW5hYmxlZCwgdHlwZSwgbG9jYWxpemVkRGV2aWNl
TmFtZSk7CiB9CiAKLXZvaWQgV2ViUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlQ29udGV4dDo6c2V0
V2lyZWxlc3NWaWRlb1BsYXliYWNrRGlzYWJsZWQoYm9vbCBkaXNhYmxlZCkKK3ZvaWQgV2ViUGxh
eWJhY2tTZXNzaW9uSW50ZXJmYWNlQ29udGV4dDo6d2lyZWxlc3NWaWRlb1BsYXliYWNrRGlzYWJs
ZWRDaGFuZ2VkKGJvb2wgZGlzYWJsZWQpCiB7CiAgICAgaWYgKG1fbWFuYWdlcikKLSAgICAgICAg
bV9tYW5hZ2VyLT5zZXRXaXJlbGVzc1ZpZGVvUGxheWJhY2tEaXNhYmxlZChtX2NvbnRleHRJZCwg
ZGlzYWJsZWQpOworICAgICAgICBtX21hbmFnZXItPndpcmVsZXNzVmlkZW9QbGF5YmFja0Rpc2Fi
bGVkQ2hhbmdlZChtX2NvbnRleHRJZCwgZGlzYWJsZWQpOwogfQogCiAjcHJhZ21hIG1hcmsgLSBX
ZWJQbGF5YmFja1Nlc3Npb25NYW5hZ2VyCkBAIC0xNTEsOCArMTUxLDcgQEAgV2ViUGxheWJhY2tT
ZXNzaW9uTWFuYWdlcjo6fldlYlBsYXliYWNrU2Vzc2lvbk1hbmFnZXIoKQogICAgICAgICBSZWZQ
dHI8V2ViUGxheWJhY2tTZXNzaW9uTW9kZWxNZWRpYUVsZW1lbnQ+IG1vZGVsOwogICAgICAgICBS
ZWZQdHI8V2ViUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlQ29udGV4dD4gaW50ZXJmYWNlOwogICAg
ICAgICBzdGQ6OnRpZShtb2RlbCwgaW50ZXJmYWNlKSA9IHR1cGxlOwotCi0gICAgICAgIG1vZGVs
LT5zZXRXZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2UobnVsbHB0cik7CisgICAgICAgIG1vZGVs
LT5yZW1vdmVDbGllbnQoKmludGVyZmFjZSk7CiAgICAgICAgIG1vZGVsLT5zZXRNZWRpYUVsZW1l
bnQobnVsbHB0cik7CiAKICAgICAgICAgaW50ZXJmYWNlLT5pbnZhbGlkYXRlKCk7CkBAIC0xNjks
OCArMTY4LDcgQEAgV2ViUGxheWJhY2tTZXNzaW9uTWFuYWdlcjo6TW9kZWxJbnRlcmZhY2VUdXBs
ZSBXZWJQbGF5YmFja1Nlc3Npb25NYW5hZ2VyOjpjcmVhdGUKIHsKICAgICBSZWZQdHI8V2ViUGxh
eWJhY2tTZXNzaW9uTW9kZWxNZWRpYUVsZW1lbnQ+IG1vZGVsID0gV2ViUGxheWJhY2tTZXNzaW9u
TW9kZWxNZWRpYUVsZW1lbnQ6OmNyZWF0ZSgpOwogICAgIFJlZlB0cjxXZWJQbGF5YmFja1Nlc3Np
b25JbnRlcmZhY2VDb250ZXh0PiBpbnRlcmZhY2UgPSBXZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZh
Y2VDb250ZXh0OjpjcmVhdGUoKnRoaXMsIGNvbnRleHRJZCk7Ci0KLSAgICBtb2RlbC0+c2V0V2Vi
UGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlKGludGVyZmFjZS5nZXQoKSk7CisgICAgbW9kZWwtPmFk
ZENsaWVudCgqaW50ZXJmYWNlKTsKIAogICAgIHJldHVybiBzdGQ6Om1ha2VfdHVwbGUoV1RGTW92
ZShtb2RlbCksIFdURk1vdmUoaW50ZXJmYWNlKSk7CiB9CkBAIC0yMDEsNyArMTk5LDcgQEAgdm9p
ZCBXZWJQbGF5YmFja1Nlc3Npb25NYW5hZ2VyOjpyZW1vdmVDb250ZXh0KHVpbnQ2NF90IGNvbnRl
eHRJZCkKIAogICAgIFJlZlB0cjxIVE1MTWVkaWFFbGVtZW50PiBtZWRpYUVsZW1lbnQgPSBtb2Rl
bC0+bWVkaWFFbGVtZW50KCk7CiAgICAgbW9kZWwtPnNldE1lZGlhRWxlbWVudChudWxscHRyKTsK
LSAgICBtb2RlbC0+c2V0V2ViUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlKG51bGxwdHIpOworICAg
IG1vZGVsLT5yZW1vdmVDbGllbnQoKmludGVyZmFjZSk7CiAgICAgaW50ZXJmYWNlLT5pbnZhbGlk
YXRlKCk7CiAgICAgbV9tZWRpYUVsZW1lbnRzLnJlbW92ZShtZWRpYUVsZW1lbnQuZ2V0KCkpOwog
ICAgIG1fY29udGV4dE1hcC5yZW1vdmUoY29udGV4dElkKTsKQEAgLTI4NCwyNyArMjgyLDI3IEBA
IHZvaWQgV2ViUGxheWJhY2tTZXNzaW9uTWFuYWdlcjo6cmVzZXRNZWRpYVN0YXRlKHVpbnQ2NF90
IGNvbnRleHRJZCkKICAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OldlYlBsYXliYWNrU2Vzc2lv
bk1hbmFnZXJQcm94eTo6UmVzZXRNZWRpYVN0YXRlKGNvbnRleHRJZCksIG1fcGFnZS0+cGFnZUlE
KCkpOwogfQogCi12b2lkIFdlYlBsYXliYWNrU2Vzc2lvbk1hbmFnZXI6OnNldER1cmF0aW9uKHVp
bnQ2NF90IGNvbnRleHRJZCwgZG91YmxlIGR1cmF0aW9uKQordm9pZCBXZWJQbGF5YmFja1Nlc3Np
b25NYW5hZ2VyOjpkdXJhdGlvbkNoYW5nZWQodWludDY0X3QgY29udGV4dElkLCBkb3VibGUgZHVy
YXRpb24pCiB7CiAgICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJQbGF5YmFja1Nlc3Npb25N
YW5hZ2VyUHJveHk6OlNldER1cmF0aW9uKGNvbnRleHRJZCwgZHVyYXRpb24pLCBtX3BhZ2UtPnBh
Z2VJRCgpKTsKIH0KIAotdm9pZCBXZWJQbGF5YmFja1Nlc3Npb25NYW5hZ2VyOjpzZXRDdXJyZW50
VGltZSh1aW50NjRfdCBjb250ZXh0SWQsIGRvdWJsZSBjdXJyZW50VGltZSwgZG91YmxlIGFuY2hv
clRpbWUpCit2b2lkIFdlYlBsYXliYWNrU2Vzc2lvbk1hbmFnZXI6OmN1cnJlbnRUaW1lQ2hhbmdl
ZCh1aW50NjRfdCBjb250ZXh0SWQsIGRvdWJsZSBjdXJyZW50VGltZSwgZG91YmxlIGFuY2hvclRp
bWUpCiB7CiAgICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJQbGF5YmFja1Nlc3Npb25NYW5h
Z2VyUHJveHk6OlNldEN1cnJlbnRUaW1lKGNvbnRleHRJZCwgY3VycmVudFRpbWUsIGFuY2hvclRp
bWUpLCBtX3BhZ2UtPnBhZ2VJRCgpKTsKIH0KIAotdm9pZCBXZWJQbGF5YmFja1Nlc3Npb25NYW5h
Z2VyOjpzZXRCdWZmZXJlZFRpbWUodWludDY0X3QgY29udGV4dElkLCBkb3VibGUgYnVmZmVyZWRU
aW1lKQordm9pZCBXZWJQbGF5YmFja1Nlc3Npb25NYW5hZ2VyOjpidWZmZXJlZFRpbWVDaGFuZ2Vk
KHVpbnQ2NF90IGNvbnRleHRJZCwgZG91YmxlIGJ1ZmZlcmVkVGltZSkKIHsKICAgICBtX3BhZ2Ut
PnNlbmQoTWVzc2FnZXM6OldlYlBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eTo6U2V0QnVmZmVy
ZWRUaW1lKGNvbnRleHRJZCwgYnVmZmVyZWRUaW1lKSwgbV9wYWdlLT5wYWdlSUQoKSk7CiB9CiAK
LXZvaWQgV2ViUGxheWJhY2tTZXNzaW9uTWFuYWdlcjo6c2V0UmF0ZSh1aW50NjRfdCBjb250ZXh0
SWQsIGJvb2wgaXNQbGF5aW5nLCBmbG9hdCBwbGF5YmFja1JhdGUpCit2b2lkIFdlYlBsYXliYWNr
U2Vzc2lvbk1hbmFnZXI6OnJhdGVDaGFuZ2VkKHVpbnQ2NF90IGNvbnRleHRJZCwgYm9vbCBpc1Bs
YXlpbmcsIGZsb2F0IHBsYXliYWNrUmF0ZSkKIHsKICAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6
OldlYlBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eTo6U2V0UmF0ZShjb250ZXh0SWQsIGlzUGxh
eWluZywgcGxheWJhY2tSYXRlKSwgbV9wYWdlLT5wYWdlSUQoKSk7CiB9CiAKLXZvaWQgV2ViUGxh
eWJhY2tTZXNzaW9uTWFuYWdlcjo6c2V0U2Vla2FibGVSYW5nZXModWludDY0X3QgY29udGV4dElk
LCBjb25zdCBXZWJDb3JlOjpUaW1lUmFuZ2VzJiB0aW1lUmFuZ2VzKQordm9pZCBXZWJQbGF5YmFj
a1Nlc3Npb25NYW5hZ2VyOjpzZWVrYWJsZVJhbmdlc0NoYW5nZWQodWludDY0X3QgY29udGV4dElk
LCBjb25zdCBXZWJDb3JlOjpUaW1lUmFuZ2VzJiB0aW1lUmFuZ2VzKQogewogICAgIFZlY3Rvcjxz
dGQ6OnBhaXI8ZG91YmxlLCBkb3VibGU+PiByYW5nZXNWZWN0b3I7CiAKQEAgLTMxOCwyNyArMzE2
LDI3IEBAIHZvaWQgV2ViUGxheWJhY2tTZXNzaW9uTWFuYWdlcjo6c2V0U2Vla2FibGVSYW5nZXMo
dWludDY0X3QgY29udGV4dElkLCBjb25zdCBXZWJDCiAgICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2Vz
OjpXZWJQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHk6OlNldFNlZWthYmxlUmFuZ2VzVmVjdG9y
KGNvbnRleHRJZCwgV1RGTW92ZShyYW5nZXNWZWN0b3IpKSwgbV9wYWdlLT5wYWdlSUQoKSk7CiB9
CiAKLXZvaWQgV2ViUGxheWJhY2tTZXNzaW9uTWFuYWdlcjo6c2V0Q2FuUGxheUZhc3RSZXZlcnNl
KHVpbnQ2NF90IGNvbnRleHRJZCwgYm9vbCB2YWx1ZSkKK3ZvaWQgV2ViUGxheWJhY2tTZXNzaW9u
TWFuYWdlcjo6Y2FuUGxheUZhc3RSZXZlcnNlQ2hhbmdlZCh1aW50NjRfdCBjb250ZXh0SWQsIGJv
b2wgdmFsdWUpCiB7CiAgICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJQbGF5YmFja1Nlc3Np
b25NYW5hZ2VyUHJveHk6OlNldENhblBsYXlGYXN0UmV2ZXJzZShjb250ZXh0SWQsIHZhbHVlKSwg
bV9wYWdlLT5wYWdlSUQoKSk7CiB9CiAKLXZvaWQgV2ViUGxheWJhY2tTZXNzaW9uTWFuYWdlcjo6
c2V0QXVkaW9NZWRpYVNlbGVjdGlvbk9wdGlvbnModWludDY0X3QgY29udGV4dElkLCBjb25zdCBW
ZWN0b3I8U3RyaW5nPiYgb3B0aW9ucywgdWludDY0X3Qgc2VsZWN0ZWRJbmRleCkKK3ZvaWQgV2Vi
UGxheWJhY2tTZXNzaW9uTWFuYWdlcjo6YXVkaW9NZWRpYVNlbGVjdGlvbk9wdGlvbnNDaGFuZ2Vk
KHVpbnQ2NF90IGNvbnRleHRJZCwgY29uc3QgVmVjdG9yPFN0cmluZz4mIG9wdGlvbnMsIHVpbnQ2
NF90IHNlbGVjdGVkSW5kZXgpCiB7CiAgICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJQbGF5
YmFja1Nlc3Npb25NYW5hZ2VyUHJveHk6OlNldEF1ZGlvTWVkaWFTZWxlY3Rpb25PcHRpb25zKGNv
bnRleHRJZCwgb3B0aW9ucywgc2VsZWN0ZWRJbmRleCksIG1fcGFnZS0+cGFnZUlEKCkpOwogfQog
Ci12b2lkIFdlYlBsYXliYWNrU2Vzc2lvbk1hbmFnZXI6OnNldExlZ2libGVNZWRpYVNlbGVjdGlv
bk9wdGlvbnModWludDY0X3QgY29udGV4dElkLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgb3B0aW9u
cywgdWludDY0X3Qgc2VsZWN0ZWRJbmRleCkKK3ZvaWQgV2ViUGxheWJhY2tTZXNzaW9uTWFuYWdl
cjo6bGVnaWJsZU1lZGlhU2VsZWN0aW9uT3B0aW9uc0NoYW5nZWQodWludDY0X3QgY29udGV4dElk
LCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgb3B0aW9ucywgdWludDY0X3Qgc2VsZWN0ZWRJbmRleCkK
IHsKICAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OldlYlBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQ
cm94eTo6U2V0TGVnaWJsZU1lZGlhU2VsZWN0aW9uT3B0aW9ucyhjb250ZXh0SWQsIG9wdGlvbnMs
IHNlbGVjdGVkSW5kZXgpLCBtX3BhZ2UtPnBhZ2VJRCgpKTsKIH0KIAotdm9pZCBXZWJQbGF5YmFj
a1Nlc3Npb25NYW5hZ2VyOjpzZXRFeHRlcm5hbFBsYXliYWNrKHVpbnQ2NF90IGNvbnRleHRJZCwg
Ym9vbCBlbmFibGVkLCBXZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2U6OkV4dGVybmFsUGxheWJh
Y2tUYXJnZXRUeXBlIHRhcmdldFR5cGUsIFN0cmluZyBsb2NhbGl6ZWREZXZpY2VOYW1lKQordm9p
ZCBXZWJQbGF5YmFja1Nlc3Npb25NYW5hZ2VyOjpleHRlcm5hbFBsYXliYWNrQ2hhbmdlZCh1aW50
NjRfdCBjb250ZXh0SWQsIGJvb2wgZW5hYmxlZCwgV2ViUGxheWJhY2tTZXNzaW9uTW9kZWw6OkV4
dGVybmFsUGxheWJhY2tUYXJnZXRUeXBlIHRhcmdldFR5cGUsIFN0cmluZyBsb2NhbGl6ZWREZXZp
Y2VOYW1lKQogewogICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6V2ViUGxheWJhY2tTZXNzaW9u
TWFuYWdlclByb3h5OjpTZXRFeHRlcm5hbFBsYXliYWNrUHJvcGVydGllcyhjb250ZXh0SWQsIGVu
YWJsZWQsIHN0YXRpY19jYXN0PHVpbnQzMl90Pih0YXJnZXRUeXBlKSwgbG9jYWxpemVkRGV2aWNl
TmFtZSksIG1fcGFnZS0+cGFnZUlEKCkpOwogfQogCi12b2lkIFdlYlBsYXliYWNrU2Vzc2lvbk1h
bmFnZXI6OnNldFdpcmVsZXNzVmlkZW9QbGF5YmFja0Rpc2FibGVkKHVpbnQ2NF90IGNvbnRleHRJ
ZCwgYm9vbCBkaXNhYmxlZCkKK3ZvaWQgV2ViUGxheWJhY2tTZXNzaW9uTWFuYWdlcjo6d2lyZWxl
c3NWaWRlb1BsYXliYWNrRGlzYWJsZWRDaGFuZ2VkKHVpbnQ2NF90IGNvbnRleHRJZCwgYm9vbCBk
aXNhYmxlZCkKIHsKICAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OldlYlBsYXliYWNrU2Vzc2lv
bk1hbmFnZXJQcm94eTo6U2V0V2lyZWxlc3NWaWRlb1BsYXliYWNrRGlzYWJsZWQoY29udGV4dElk
LCBkaXNhYmxlZCkpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9j
b2NvYS9XZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyLmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL2NvY29hL1dlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXIuaAppbmRleCAxZmIxZGM4N2VlY2Vm
NWZjODNjNDU0ODNjZGMyYzUyN2IxY2M5OGJlLi5kMjY4NmI4YWRiNzBhYTllNTBhNjUxMjA4ZDRm
MzU1OWI2MzQ4OGQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL2NvY29h
L1dlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL2NvY29hL1dlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXIuaApAQCAtNDUsNiArNDUsNyBAQCBj
bGFzcyBNZXNzYWdlUmVjZWl2ZXI7CiB9CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKK2NsYXNzIEZs
b2F0U2l6ZTsKIGNsYXNzIE5vZGU7CiB9CiAKQEAgLTU2LDExICs1NywxNCBAQCBjbGFzcyBXZWJQ
bGF5YmFja1Nlc3Npb25JbnRlcmZhY2VDb250ZXh0OwogY2xhc3MgV2ViUGxheWJhY2tTZXNzaW9u
TWFuYWdlcjsKIGNsYXNzIFdlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXI7CiAKLWNsYXNzIFdlYlZp
ZGVvRnVsbHNjcmVlbkludGVyZmFjZUNvbnRleHQgOiBwdWJsaWMgUmVmQ291bnRlZDxXZWJWaWRl
b0Z1bGxzY3JlZW5JbnRlcmZhY2VDb250ZXh0PiwgcHVibGljIFdlYkNvcmU6OldlYlZpZGVvRnVs
bHNjcmVlbkludGVyZmFjZSB7CitjbGFzcyBXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VDb250
ZXh0CisgICAgOiBwdWJsaWMgUmVmQ291bnRlZDxXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VD
b250ZXh0PgorICAgICwgcHVibGljIFdlYkNvcmU6OldlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFj
ZQorICAgICwgcHVibGljIFdlYkNvcmU6OldlYlZpZGVvRnVsbHNjcmVlbk1vZGVsQ2xpZW50IHsK
IHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPFdlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUNvbnRl
eHQ+IGNyZWF0ZShXZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyJiBtYW5hZ2VyLCBXZWJQbGF5YmFj
a1Nlc3Npb25JbnRlcmZhY2VDb250ZXh0JiBwbGF5YmFja1Nlc3Npb25JbnRlcmZhY2UsIHVpbnQ2
NF90IGNvbnRleHRJZCkKKyAgICBzdGF0aWMgUmVmPFdlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFj
ZUNvbnRleHQ+IGNyZWF0ZShXZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyJiBtYW5hZ2VyLCB1aW50
NjRfdCBjb250ZXh0SWQpCiAgICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBXZWJW
aWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VDb250ZXh0KG1hbmFnZXIsIHBsYXliYWNrU2Vzc2lvbklu
dGVyZmFjZSwgY29udGV4dElkKSk7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFdlYlZp
ZGVvRnVsbHNjcmVlbkludGVyZmFjZUNvbnRleHQobWFuYWdlciwgY29udGV4dElkKSk7CiAgICAg
fQogICAgIHZpcnR1YWwgfldlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUNvbnRleHQoKTsKIApA
QCAtODIsMjYgKzg2LDEzIEBAIHB1YmxpYzoKICAgICB2b2lkIHNldElzRnVsbHNjcmVlbihib29s
IGZsYWcpIHsgbV9pc0Z1bGxzY3JlZW4gPSBmbGFnOyB9CiAKIHByaXZhdGU6Ci0gICAgLy8gV2Vi
UGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlCi0gICAgdm9pZCByZXNldE1lZGlhU3RhdGUoKSBvdmVy
cmlkZTsKLSAgICB2b2lkIHNldER1cmF0aW9uKGRvdWJsZSkgb3ZlcnJpZGU7Ci0gICAgdm9pZCBz
ZXRDdXJyZW50VGltZShkb3VibGUgY3VycmVudFRpbWUsIGRvdWJsZSBhbmNob3JUaW1lKSBvdmVy
cmlkZTsKLSAgICB2b2lkIHNldEJ1ZmZlcmVkVGltZShkb3VibGUpIG92ZXJyaWRlOwotICAgIHZv
aWQgc2V0UmF0ZShib29sIGlzUGxheWluZywgZmxvYXQgcGxheWJhY2tSYXRlKSBvdmVycmlkZTsK
LSAgICB2b2lkIHNldFNlZWthYmxlUmFuZ2VzKGNvbnN0IFdlYkNvcmU6OlRpbWVSYW5nZXMmKSBv
dmVycmlkZTsKLSAgICB2b2lkIHNldENhblBsYXlGYXN0UmV2ZXJzZShib29sIHZhbHVlKSBvdmVy
cmlkZTsKLSAgICB2b2lkIHNldEF1ZGlvTWVkaWFTZWxlY3Rpb25PcHRpb25zKGNvbnN0IFZlY3Rv
cjxXVEY6OlN0cmluZz4mIG9wdGlvbnMsIHVpbnQ2NF90IHNlbGVjdGVkSW5kZXgpIG92ZXJyaWRl
OwotICAgIHZvaWQgc2V0TGVnaWJsZU1lZGlhU2VsZWN0aW9uT3B0aW9ucyhjb25zdCBWZWN0b3I8
V1RGOjpTdHJpbmc+JiBvcHRpb25zLCB1aW50NjRfdCBzZWxlY3RlZEluZGV4KSBvdmVycmlkZTsK
LSAgICB2b2lkIHNldEV4dGVybmFsUGxheWJhY2soYm9vbCBlbmFibGVkLCBFeHRlcm5hbFBsYXli
YWNrVGFyZ2V0VHlwZSwgV1RGOjpTdHJpbmcgbG9jYWxpemVkRGV2aWNlTmFtZSkgb3ZlcnJpZGU7
Ci0gICAgdm9pZCBzZXRXaXJlbGVzc1ZpZGVvUGxheWJhY2tEaXNhYmxlZChib29sKSBvdmVycmlk
ZTsKLQotICAgIC8vIFdlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZQotICAgIHZvaWQgc2V0Vmlk
ZW9EaW1lbnNpb25zKGJvb2wgaGFzVmlkZW8sIGZsb2F0IHdpZHRoLCBmbG9hdCBoZWlnaHQpIG92
ZXJyaWRlOwotCi0gICAgV2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQ29udGV4dChXZWJWaWRl
b0Z1bGxzY3JlZW5NYW5hZ2VyJiwgV2ViUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlQ29udGV4dCYs
IHVpbnQ2NF90IGNvbnRleHRJZCk7CisgICAgLy8gV2ViVmlkZW9GdWxsc2NyZWVuTW9kZWxDbGll
bnQKKyAgICB2b2lkIGhhc1ZpZGVvQ2hhbmdlZChib29sKSBvdmVycmlkZTsKKyAgICB2b2lkIHZp
ZGVvRGltZW5zaW9uc0NoYW5nZWQoY29uc3QgV2ViQ29yZTo6RmxvYXRTaXplJikgb3ZlcnJpZGU7
CisKKyAgICBXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VDb250ZXh0KFdlYlZpZGVvRnVsbHNj
cmVlbk1hbmFnZXImLCB1aW50NjRfdCBjb250ZXh0SWQpOwogCiAgICAgV2ViVmlkZW9GdWxsc2Ny
ZWVuTWFuYWdlciogbV9tYW5hZ2VyOwotICAgIFJlZjxXZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZh
Y2VDb250ZXh0PiBtX3BsYXliYWNrU2Vzc2lvbkludGVyZmFjZTsKICAgICB1aW50NjRfdCBtX2Nv
bnRleHRJZDsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8TGF5ZXJIb3N0aW5nQ29udGV4dD4gbV9sYXll
ckhvc3RpbmdDb250ZXh0OwogICAgIGJvb2wgbV9pc0FuaW1hdGluZyB7IGZhbHNlIH07CkBAIC0x
MzgsNyArMTI5LDggQEAgcHJvdGVjdGVkOgogICAgIHZvaWQgcmVtb3ZlQ2xpZW50Rm9yQ29udGV4
dCh1aW50NjRfdCBjb250ZXh0SWQpOwogCiAgICAgLy8gSW50ZXJmYWNlIHRvIFdlYlZpZGVvRnVs
bHNjcmVlbkludGVyZmFjZUNvbnRleHQKLSAgICB2b2lkIHNldFZpZGVvRGltZW5zaW9ucyh1aW50
NjRfdCBjb250ZXh0SWQsIGJvb2wgaGFzVmlkZW8sIGZsb2F0IHdpZHRoLCBmbG9hdCBoZWlnaHQp
OworICAgIHZvaWQgaGFzVmlkZW9DaGFuZ2VkKHVpbnQ2NF90IGNvbnRleHRJZCwgYm9vbCBoYXNW
aWRlbyk7CisgICAgdm9pZCB2aWRlb0RpbWVuc2lvbnNDaGFuZ2VkKHVpbnQ2NF90IGNvbnRleHRJ
ZCwgY29uc3QgV2ViQ29yZTo6RmxvYXRTaXplJik7CiAKICAgICAvLyBNZXNzYWdlcyBmcm9tIFdl
YlZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eQogICAgIHZvaWQgcmVxdWVzdEZ1bGxzY3JlZW5N
b2RlKHVpbnQ2NF90IGNvbnRleHRJZCwgV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudEVudW1zOjpW
aWRlb0Z1bGxzY3JlZW5Nb2RlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvY29jb2EvV2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlci5tbSBiL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvY29jb2EvV2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlci5tbQppbmRleCAyNzI0MmMx
ZDAxNmQ3ZjMzYmExMTExMmI2NTAzZmU5NzAyNzhmZDE0Li5kMjc1MjA3M2QwOTBiZDg2ZmM4YjZl
YjJmYzdmZTg0MGQ5NGM3MTU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L2NvY29hL1dlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXIubW0KKysrIGIvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9jb2NvYS9XZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyLm1tCkBAIC02Niw5ICs2
Niw4IEBAIHN0YXRpYyBJbnRSZWN0IGlubGluZVZpZGVvRnJhbWUoSFRNTFZpZGVvRWxlbWVudCYg
ZWxlbWVudCkKIAogI3ByYWdtYSBtYXJrIC0gV2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQ29u
dGV4dAogCi1XZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VDb250ZXh0OjpXZWJWaWRlb0Z1bGxz
Y3JlZW5JbnRlcmZhY2VDb250ZXh0KFdlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXImIG1hbmFnZXIs
IFdlYlBsYXliYWNrU2Vzc2lvbkludGVyZmFjZUNvbnRleHQmIHBsYXliYWNrU2Vzc2lvbkludGVy
ZmFjZSwgdWludDY0X3QgY29udGV4dElkKQorV2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQ29u
dGV4dDo6V2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQ29udGV4dChXZWJWaWRlb0Z1bGxzY3Jl
ZW5NYW5hZ2VyJiBtYW5hZ2VyLCB1aW50NjRfdCBjb250ZXh0SWQpCiAgICAgOiBtX21hbmFnZXIo
Jm1hbmFnZXIpCi0gICAgLCBtX3BsYXliYWNrU2Vzc2lvbkludGVyZmFjZShwbGF5YmFja1Nlc3Np
b25JbnRlcmZhY2UpCiAgICAgLCBtX2NvbnRleHRJZChjb250ZXh0SWQpCiB7CiB9CkBAIC04Miw2
NSArODEsMTYgQEAgdm9pZCBXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VDb250ZXh0OjpzZXRM
YXllckhvc3RpbmdDb250ZXh0KHN0ZDo6dW5pcXVlX3B0cjwKICAgICBtX2xheWVySG9zdGluZ0Nv
bnRleHQgPSBXVEZNb3ZlKGNvbnRleHQpOwogfQogCi12b2lkIFdlYlZpZGVvRnVsbHNjcmVlbklu
dGVyZmFjZUNvbnRleHQ6OnJlc2V0TWVkaWFTdGF0ZSgpCi17Ci0gICAgbV9wbGF5YmFja1Nlc3Np
b25JbnRlcmZhY2UtPnJlc2V0TWVkaWFTdGF0ZSgpOwotfQotCi12b2lkIFdlYlZpZGVvRnVsbHNj
cmVlbkludGVyZmFjZUNvbnRleHQ6OnNldER1cmF0aW9uKGRvdWJsZSBkdXJhdGlvbikKLXsKLSAg
ICBtX3BsYXliYWNrU2Vzc2lvbkludGVyZmFjZS0+c2V0RHVyYXRpb24oZHVyYXRpb24pOwotfQot
Ci12b2lkIFdlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUNvbnRleHQ6OnNldEN1cnJlbnRUaW1l
KGRvdWJsZSBjdXJyZW50VGltZSwgZG91YmxlIGFuY2hvclRpbWUpCi17Ci0gICAgbV9wbGF5YmFj
a1Nlc3Npb25JbnRlcmZhY2UtPnNldEN1cnJlbnRUaW1lKGN1cnJlbnRUaW1lLCBhbmNob3JUaW1l
KTsKLX0KLQotdm9pZCBXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VDb250ZXh0OjpzZXRCdWZm
ZXJlZFRpbWUoZG91YmxlIGJ1ZmZlcmVkVGltZSkKLXsKLSAgICBtX3BsYXliYWNrU2Vzc2lvbklu
dGVyZmFjZS0+c2V0QnVmZmVyZWRUaW1lKGJ1ZmZlcmVkVGltZSk7Ci19Ci0KLXZvaWQgV2ViVmlk
ZW9GdWxsc2NyZWVuSW50ZXJmYWNlQ29udGV4dDo6c2V0UmF0ZShib29sIGlzUGxheWluZywgZmxv
YXQgcGxheWJhY2tSYXRlKQotewotICAgIG1fcGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlLT5zZXRS
YXRlKGlzUGxheWluZywgcGxheWJhY2tSYXRlKTsKLX0KLQotdm9pZCBXZWJWaWRlb0Z1bGxzY3Jl
ZW5JbnRlcmZhY2VDb250ZXh0OjpzZXRWaWRlb0RpbWVuc2lvbnMoYm9vbCBoYXNWaWRlbywgZmxv
YXQgd2lkdGgsIGZsb2F0IGhlaWdodCkKK3ZvaWQgV2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNl
Q29udGV4dDo6aGFzVmlkZW9DaGFuZ2VkKGJvb2wgaGFzVmlkZW8pCiB7CiAgICAgaWYgKG1fbWFu
YWdlcikKLSAgICAgICAgbV9tYW5hZ2VyLT5zZXRWaWRlb0RpbWVuc2lvbnMobV9jb250ZXh0SWQs
IGhhc1ZpZGVvLCB3aWR0aCwgaGVpZ2h0KTsKLX0KLQotdm9pZCBXZWJWaWRlb0Z1bGxzY3JlZW5J
bnRlcmZhY2VDb250ZXh0OjpzZXRTZWVrYWJsZVJhbmdlcyhjb25zdCBXZWJDb3JlOjpUaW1lUmFu
Z2VzJiByYW5nZXMpCi17Ci0gICAgbV9wbGF5YmFja1Nlc3Npb25JbnRlcmZhY2UtPnNldFNlZWth
YmxlUmFuZ2VzKHJhbmdlcyk7CisgICAgICAgIG1fbWFuYWdlci0+aGFzVmlkZW9DaGFuZ2VkKG1f
Y29udGV4dElkLCBoYXNWaWRlbyk7CiB9CiAKLXZvaWQgV2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJm
YWNlQ29udGV4dDo6c2V0Q2FuUGxheUZhc3RSZXZlcnNlKGJvb2wgdmFsdWUpCit2b2lkIFdlYlZp
ZGVvRnVsbHNjcmVlbkludGVyZmFjZUNvbnRleHQ6OnZpZGVvRGltZW5zaW9uc0NoYW5nZWQoY29u
c3QgRmxvYXRTaXplJiB2aWRlb0RpbWVuc2lvbnMpCiB7Ci0gICAgbV9wbGF5YmFja1Nlc3Npb25J
bnRlcmZhY2UtPnNldENhblBsYXlGYXN0UmV2ZXJzZSh2YWx1ZSk7Ci19Ci0KLXZvaWQgV2ViVmlk
ZW9GdWxsc2NyZWVuSW50ZXJmYWNlQ29udGV4dDo6c2V0QXVkaW9NZWRpYVNlbGVjdGlvbk9wdGlv
bnMoY29uc3QgVmVjdG9yPFdURjo6U3RyaW5nPiYgb3B0aW9ucywgdWludDY0X3Qgc2VsZWN0ZWRJ
bmRleCkKLXsKLSAgICBtX3BsYXliYWNrU2Vzc2lvbkludGVyZmFjZS0+c2V0QXVkaW9NZWRpYVNl
bGVjdGlvbk9wdGlvbnMob3B0aW9ucywgc2VsZWN0ZWRJbmRleCk7Ci19Ci0KLXZvaWQgV2ViVmlk
ZW9GdWxsc2NyZWVuSW50ZXJmYWNlQ29udGV4dDo6c2V0TGVnaWJsZU1lZGlhU2VsZWN0aW9uT3B0
aW9ucyhjb25zdCBWZWN0b3I8V1RGOjpTdHJpbmc+JiBvcHRpb25zLCB1aW50NjRfdCBzZWxlY3Rl
ZEluZGV4KQotewotICAgIG1fcGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlLT5zZXRMZWdpYmxlTWVk
aWFTZWxlY3Rpb25PcHRpb25zKG9wdGlvbnMsIHNlbGVjdGVkSW5kZXgpOwotfQotCi12b2lkIFdl
YlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUNvbnRleHQ6OnNldEV4dGVybmFsUGxheWJhY2soYm9v
bCBlbmFibGVkLCBFeHRlcm5hbFBsYXliYWNrVGFyZ2V0VHlwZSB0eXBlLCBXVEY6OlN0cmluZyBs
b2NhbGl6ZWREZXZpY2VOYW1lKQotewotICAgIG1fcGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlLT5z
ZXRFeHRlcm5hbFBsYXliYWNrKGVuYWJsZWQsIHR5cGUsIGxvY2FsaXplZERldmljZU5hbWUpOwot
fQotCi12b2lkIFdlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUNvbnRleHQ6OnNldFdpcmVsZXNz
VmlkZW9QbGF5YmFja0Rpc2FibGVkKGJvb2wgZGlzYWJsZWQpCi17Ci0gICAgbV9wbGF5YmFja1Nl
c3Npb25JbnRlcmZhY2UtPnNldFdpcmVsZXNzVmlkZW9QbGF5YmFja0Rpc2FibGVkKGRpc2FibGVk
KTsKKyAgICBpZiAobV9tYW5hZ2VyKQorICAgICAgICBtX21hbmFnZXItPnZpZGVvRGltZW5zaW9u
c0NoYW5nZWQobV9jb250ZXh0SWQsIHZpZGVvRGltZW5zaW9ucyk7CiB9CiAKICNwcmFnbWEgbWFy
ayAtIFdlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXIKQEAgLTE2NCw4ICsxMTQsOCBAQCBXZWJWaWRl
b0Z1bGxzY3JlZW5NYW5hZ2VyOjp+V2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlcigpCiAgICAgICAg
IFJlZlB0cjxXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VDb250ZXh0PiBpbnRlcmZhY2U7CiAg
ICAgICAgIHN0ZDo6dGllKG1vZGVsLCBpbnRlcmZhY2UpID0gdHVwbGU7CiAKLSAgICAgICAgbW9k
ZWwtPnNldFdlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZShudWxscHRyKTsKICAgICAgICAgbW9k
ZWwtPnNldFZpZGVvRWxlbWVudChudWxscHRyKTsKKyAgICAgICAgbW9kZWwtPnJlbW92ZUNsaWVu
dCgqaW50ZXJmYWNlKTsKIAogICAgICAgICBpbnRlcmZhY2UtPmludmFsaWRhdGUoKTsKICAgICB9
CkBAIC0xNzksMTQgKzEyOSwxMiBAQCBXZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjp+V2ViVmlk
ZW9GdWxsc2NyZWVuTWFuYWdlcigpCiAKIFdlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6Ok1vZGVs
SW50ZXJmYWNlVHVwbGUgV2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6Y3JlYXRlTW9kZWxBbmRJ
bnRlcmZhY2UodWludDY0X3QgY29udGV4dElkKQogewotICAgIGF1dG8mIHBsYXliYWNrU2Vzc2lv
bk1vZGVsID0gbV9wbGF5YmFja1Nlc3Npb25NYW5hZ2VyLT5lbnN1cmVNb2RlbChjb250ZXh0SWQp
OwotICAgIFJlZlB0cjxXZWJWaWRlb0Z1bGxzY3JlZW5Nb2RlbFZpZGVvRWxlbWVudD4gbW9kZWwg
PSBXZWJWaWRlb0Z1bGxzY3JlZW5Nb2RlbFZpZGVvRWxlbWVudDo6Y3JlYXRlKHBsYXliYWNrU2Vz
c2lvbk1vZGVsKTsKLSAgICBhdXRvJiBwbGF5YmFja1Nlc3Npb25JbnRlcmZhY2UgPSBtX3BsYXli
YWNrU2Vzc2lvbk1hbmFnZXItPmVuc3VyZUludGVyZmFjZShjb250ZXh0SWQpOwotICAgIFJlZlB0
cjxXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VDb250ZXh0PiBpbnRlcmZhY2UgPSBXZWJWaWRl
b0Z1bGxzY3JlZW5JbnRlcmZhY2VDb250ZXh0OjpjcmVhdGUoKnRoaXMsIHBsYXliYWNrU2Vzc2lv
bkludGVyZmFjZSwgY29udGV4dElkKTsKKyAgICBSZWZQdHI8V2ViVmlkZW9GdWxsc2NyZWVuTW9k
ZWxWaWRlb0VsZW1lbnQ+IG1vZGVsID0gV2ViVmlkZW9GdWxsc2NyZWVuTW9kZWxWaWRlb0VsZW1l
bnQ6OmNyZWF0ZSgpOworICAgIFJlZlB0cjxXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VDb250
ZXh0PiBpbnRlcmZhY2UgPSBXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VDb250ZXh0OjpjcmVh
dGUoKnRoaXMsIGNvbnRleHRJZCk7CiAgICAgbV9wbGF5YmFja1Nlc3Npb25NYW5hZ2VyLT5hZGRD
bGllbnRGb3JDb250ZXh0KGNvbnRleHRJZCk7CiAKICAgICBpbnRlcmZhY2UtPnNldExheWVySG9z
dGluZ0NvbnRleHQoTGF5ZXJIb3N0aW5nQ29udGV4dDo6Y3JlYXRlRm9yRXh0ZXJuYWxIb3N0aW5n
UHJvY2VzcygpKTsKLSAgICBtb2RlbC0+c2V0V2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlKGlu
dGVyZmFjZS5nZXQoKSk7CisgICAgbW9kZWwtPmFkZENsaWVudCgqaW50ZXJmYWNlKTsKIAogICAg
IHJldHVybiBzdGQ6Om1ha2VfdHVwbGUoV1RGTW92ZShtb2RlbCksIFdURk1vdmUoaW50ZXJmYWNl
KSk7CiB9CkBAIC0yMTksNyArMTY3LDcgQEAgdm9pZCBXZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2Vy
OjpyZW1vdmVDb250ZXh0KHVpbnQ2NF90IGNvbnRleHRJZCkKIAogICAgIFJlZlB0cjxIVE1MVmlk
ZW9FbGVtZW50PiB2aWRlb0VsZW1lbnQgPSBtb2RlbC0+dmlkZW9FbGVtZW50KCk7CiAgICAgbW9k
ZWwtPnNldFZpZGVvRWxlbWVudChudWxscHRyKTsKLSAgICBtb2RlbC0+c2V0V2ViVmlkZW9GdWxs
c2NyZWVuSW50ZXJmYWNlKG51bGxwdHIpOworICAgIG1vZGVsLT5yZW1vdmVDbGllbnQoKmludGVy
ZmFjZSk7CiAgICAgaW50ZXJmYWNlLT5pbnZhbGlkYXRlKCk7CiAgICAgbV92aWRlb0VsZW1lbnRz
LnJlbW92ZSh2aWRlb0VsZW1lbnQuZ2V0KCkpOwogICAgIG1fY29udGV4dE1hcC5yZW1vdmUoY29u
dGV4dElkKTsKQEAgLTMzMSw5ICsyNzksMTQgQEAgdm9pZCBXZWJWaWRlb0Z1bGxzY3JlZW5NYW5h
Z2VyOjpleGl0VmlkZW9GdWxsc2NyZWVuVG9Nb2RlV2l0aG91dEFuaW1hdGlvbihXZWJDb3IKIAog
I3ByYWdtYSBtYXJrIEludGVyZmFjZSB0byBXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VDb250
ZXh0OgogCi12b2lkIFdlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6OnNldFZpZGVvRGltZW5zaW9u
cyh1aW50NjRfdCBjb250ZXh0SWQsIGJvb2wgaGFzVmlkZW8sIGZsb2F0IHdpZHRoLCBmbG9hdCBo
ZWlnaHQpCit2b2lkIFdlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6Omhhc1ZpZGVvQ2hhbmdlZCh1
aW50NjRfdCBjb250ZXh0SWQsIGJvb2wgaGFzVmlkZW8pCit7CisgICAgbV9wYWdlLT5zZW5kKE1l
c3NhZ2VzOjpXZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHk6OlNldEhhc1ZpZGVvKGNvbnRl
eHRJZCwgaGFzVmlkZW8pLCBtX3BhZ2UtPnBhZ2VJRCgpKTsKK30KKwordm9pZCBXZWJWaWRlb0Z1
bGxzY3JlZW5NYW5hZ2VyOjp2aWRlb0RpbWVuc2lvbnNDaGFuZ2VkKHVpbnQ2NF90IGNvbnRleHRJ
ZCwgY29uc3QgRmxvYXRTaXplJiB2aWRlb0RpbWVuc2lvbnMpCiB7Ci0gICAgbV9wYWdlLT5zZW5k
KE1lc3NhZ2VzOjpXZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHk6OlNldFZpZGVvRGltZW5z
aW9ucyhjb250ZXh0SWQsIGhhc1ZpZGVvLCB3aWR0aCwgaGVpZ2h0KSwgbV9wYWdlLT5wYWdlSUQo
KSk7CisgICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2Vy
UHJveHk6OlNldFZpZGVvRGltZW5zaW9ucyhjb250ZXh0SWQsIHZpZGVvRGltZW5zaW9ucyksIG1f
cGFnZS0+cGFnZUlEKCkpOwogfQogCiAjcHJhZ21hIG1hcmsgTWVzc2FnZXMgZnJvbSBXZWJWaWRl
b0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHk6Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>287287</attachid>
            <date>2016-08-29 11:24:41 -0700</date>
            <delta_ts>2016-09-01 09:31:09 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-159580-20160829112232.patch</filename>
            <type>text/plain</type>
            <size>189347</size>
            <attacher name="Jer Noble">jer.noble</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjA1MTI3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZjgxZGVhMjM1MmI3ZWNl
NjI0MmYwN2FkOWMyNzdhZDFmMjRlMDAyNy4uNzEwZjNjOGYyNDk0YmVhZDgyZjY5OTQ4OTkxNmVj
ZWVlODdmMmVkNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIzMSBAQAorMjAxNi0wNy0wOCAgSmVy
IE5vYmxlICA8amVyLm5vYmxlQGFwcGxlLmNvbT4KKworICAgICAgICBSZWZhY3RvciBXZWJQbGF5
YmFja1Nlc3Npb25Nb2RlbE1lZGlhRWxlbWVudCB0byBiZSBjbGllbnQgYmFzZWQuCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTk1ODAKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgY2xpZW50IGNhbGxi
YWNrIGludGVyZmFjZXMgdG8gYm90aCBXZWJQbGF5YmFja1Nlc3Npb25Nb2RlbCBhbmQgV2ViVmlk
ZW9GdWxsc2NyZWVuTW9kZWwsIHdoZXJlIGVhY2ggb2JqZWN0CisgICAgICAgIGNhbiBoYXZlIG11
bHRpcGxlIGNsaWVudHMsIGFuZCB0aGF0IHRoZSBvYmplY3Qgd2lsbCBib3RoIHN0b3JlIGN1cnJl
bnQgdmFsdWVzIGFuZCBhbHNvIG5vdGlmeSB0aG9zZSBjbGllbnRzCisgICAgICAgIHdoZW4gdGhl
IHZhbHVlcyBjaGFuZ2UuIEFmdGVyIHRoaXMgY2hhbmdlLCB0aGVyZSBpcyBubyBuZWVkIHRvIGhh
dmUgdGhlIG1vZGVscyBrbm93IGFib3V0IHRoZWlyIGFzc29jaWF0ZWQKKyAgICAgICAgaW50ZXJm
YWNlcyBleHBsaWNpdGx5LgorCisgICAgICAgICogcGxhdGZvcm0vY29jb2EvV2ViUGxheWJhY2tT
ZXNzaW9uSW50ZXJmYWNlLmg6CisgICAgICAgICogcGxhdGZvcm0vY29jb2EvV2ViUGxheWJhY2tT
ZXNzaW9uTW9kZWwuaDoKKyAgICAgICAgKFdlYkNvcmU6OldlYlBsYXliYWNrU2Vzc2lvbk1vZGVs
Q2xpZW50Ojp+V2ViUGxheWJhY2tTZXNzaW9uTW9kZWxDbGllbnQpOgorICAgICAgICAoV2ViQ29y
ZTo6V2ViUGxheWJhY2tTZXNzaW9uTW9kZWxDbGllbnQ6OmR1cmF0aW9uQ2hhbmdlZCk6CisgICAg
ICAgIChXZWJDb3JlOjpXZWJQbGF5YmFja1Nlc3Npb25Nb2RlbENsaWVudDo6Y3VycmVudFRpbWVD
aGFuZ2VkKToKKyAgICAgICAgKFdlYkNvcmU6OldlYlBsYXliYWNrU2Vzc2lvbk1vZGVsQ2xpZW50
OjpidWZmZXJlZFRpbWVDaGFuZ2VkKToKKyAgICAgICAgKFdlYkNvcmU6OldlYlBsYXliYWNrU2Vz
c2lvbk1vZGVsQ2xpZW50OjpyYXRlQ2hhbmdlZCk6CisgICAgICAgIChXZWJDb3JlOjpXZWJQbGF5
YmFja1Nlc3Npb25Nb2RlbENsaWVudDo6c2Vla2FibGVSYW5nZXNDaGFuZ2VkKToKKyAgICAgICAg
KFdlYkNvcmU6OldlYlBsYXliYWNrU2Vzc2lvbk1vZGVsQ2xpZW50OjpjYW5QbGF5RmFzdFJldmVy
c2VDaGFuZ2VkKToKKyAgICAgICAgKFdlYkNvcmU6OldlYlBsYXliYWNrU2Vzc2lvbk1vZGVsQ2xp
ZW50OjphdWRpb01lZGlhU2VsZWN0aW9uT3B0aW9uc0NoYW5nZWQpOgorICAgICAgICAoV2ViQ29y
ZTo6V2ViUGxheWJhY2tTZXNzaW9uTW9kZWxDbGllbnQ6OmxlZ2libGVNZWRpYVNlbGVjdGlvbk9w
dGlvbnNDaGFuZ2VkKToKKyAgICAgICAgKFdlYkNvcmU6OldlYlBsYXliYWNrU2Vzc2lvbk1vZGVs
Q2xpZW50OjpleHRlcm5hbFBsYXliYWNrQ2hhbmdlZCk6CisgICAgICAgIChXZWJDb3JlOjpXZWJQ
bGF5YmFja1Nlc3Npb25Nb2RlbENsaWVudDo6d2lyZWxlc3NWaWRlb1BsYXliYWNrRGlzYWJsZWRD
aGFuZ2VkKToKKyAgICAgICAgKiBwbGF0Zm9ybS9jb2NvYS9XZWJQbGF5YmFja1Nlc3Npb25Nb2Rl
bE1lZGlhRWxlbWVudC5oOgorICAgICAgICAqIHBsYXRmb3JtL2NvY29hL1dlYlBsYXliYWNrU2Vz
c2lvbk1vZGVsTWVkaWFFbGVtZW50Lm1tOgorICAgICAgICAoV2ViUGxheWJhY2tTZXNzaW9uTW9k
ZWxNZWRpYUVsZW1lbnQ6OnNldE1lZGlhRWxlbWVudCk6CisgICAgICAgIChXZWJQbGF5YmFja1Nl
c3Npb25Nb2RlbE1lZGlhRWxlbWVudDo6dXBkYXRlRm9yRXZlbnROYW1lKToKKyAgICAgICAgKFdl
YlBsYXliYWNrU2Vzc2lvbk1vZGVsTWVkaWFFbGVtZW50OjphZGRDbGllbnQpOgorICAgICAgICAo
V2ViUGxheWJhY2tTZXNzaW9uTW9kZWxNZWRpYUVsZW1lbnQ6OnJlbW92ZUNsaWVudCk6CisgICAg
ICAgIChXZWJQbGF5YmFja1Nlc3Npb25Nb2RlbE1lZGlhRWxlbWVudDo6dXBkYXRlTGVnaWJsZU9w
dGlvbnMpOgorICAgICAgICAoV2ViUGxheWJhY2tTZXNzaW9uTW9kZWxNZWRpYUVsZW1lbnQ6Om9i
c2VydmVkRXZlbnROYW1lcyk6CisgICAgICAgIChXZWJQbGF5YmFja1Nlc3Npb25Nb2RlbE1lZGlh
RWxlbWVudDo6ZXZlbnROYW1lQWxsKToKKyAgICAgICAgKFdlYlBsYXliYWNrU2Vzc2lvbk1vZGVs
TWVkaWFFbGVtZW50OjphdWRpb01lZGlhU2VsZWN0aW9uT3B0aW9ucyk6CisgICAgICAgIChXZWJQ
bGF5YmFja1Nlc3Npb25Nb2RlbE1lZGlhRWxlbWVudDo6YXVkaW9NZWRpYVNlbGVjdGVkSW5kZXgp
OgorICAgICAgICAoV2ViUGxheWJhY2tTZXNzaW9uTW9kZWxNZWRpYUVsZW1lbnQ6OmxlZ2libGVN
ZWRpYVNlbGVjdGVkSW5kZXgpOgorICAgICAgICAoV2ViUGxheWJhY2tTZXNzaW9uTW9kZWxNZWRp
YUVsZW1lbnQ6OmV4dGVybmFsUGxheWJhY2tFbmFibGVkKToKKyAgICAgICAgKFdlYlBsYXliYWNr
U2Vzc2lvbk1vZGVsTWVkaWFFbGVtZW50OjpleHRlcm5hbFBsYXliYWNrVGFyZ2V0VHlwZSk6Cisg
ICAgICAgIChXZWJQbGF5YmFja1Nlc3Npb25Nb2RlbE1lZGlhRWxlbWVudDo6ZXh0ZXJuYWxQbGF5
YmFja0xvY2FsaXplZERldmljZU5hbWUpOgorICAgICAgICAoV2ViUGxheWJhY2tTZXNzaW9uTW9k
ZWxNZWRpYUVsZW1lbnQ6OndpcmVsZXNzVmlkZW9QbGF5YmFja0Rpc2FibGVkKToKKyAgICAgICAg
KFdlYlBsYXliYWNrU2Vzc2lvbk1vZGVsTWVkaWFFbGVtZW50OjpzZXRXZWJQbGF5YmFja1Nlc3Np
b25JbnRlcmZhY2UpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL2NvY29hL1dlYlZpZGVv
RnVsbHNjcmVlbkludGVyZmFjZS5oOgorICAgICAgICAqIHBsYXRmb3JtL2NvY29hL1dlYlZpZGVv
RnVsbHNjcmVlbk1vZGVsLmg6CisgICAgICAgIChXZWJDb3JlOjpXZWJWaWRlb0Z1bGxzY3JlZW5N
b2RlbENsaWVudDo6fldlYlZpZGVvRnVsbHNjcmVlbk1vZGVsQ2xpZW50KToKKyAgICAgICAgKiBw
bGF0Zm9ybS9jb2NvYS9XZWJWaWRlb0Z1bGxzY3JlZW5Nb2RlbFZpZGVvRWxlbWVudC5oOgorICAg
ICAgICAoV2ViQ29yZTo6V2ViVmlkZW9GdWxsc2NyZWVuTW9kZWxWaWRlb0VsZW1lbnQ6OmNyZWF0
ZSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJWaWRlb0Z1bGxzY3JlZW5Nb2RlbFZpZGVvRWxlbWVu
dDo6cGxheWJhY2tTZXNzaW9uTW9kZWwpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL2Nv
Y29hL1dlYlZpZGVvRnVsbHNjcmVlbk1vZGVsVmlkZW9FbGVtZW50Lm1tOgorICAgICAgICAoV2Vi
VmlkZW9GdWxsc2NyZWVuTW9kZWxWaWRlb0VsZW1lbnQ6OldlYlZpZGVvRnVsbHNjcmVlbk1vZGVs
VmlkZW9FbGVtZW50KToKKyAgICAgICAgKFdlYlZpZGVvRnVsbHNjcmVlbk1vZGVsVmlkZW9FbGVt
ZW50OjpzZXRWaWRlb0VsZW1lbnQpOgorICAgICAgICAoV2ViVmlkZW9GdWxsc2NyZWVuTW9kZWxW
aWRlb0VsZW1lbnQ6OnVwZGF0ZUZvckV2ZW50TmFtZSk6CisgICAgICAgIChXZWJWaWRlb0Z1bGxz
Y3JlZW5Nb2RlbFZpZGVvRWxlbWVudDo6YWRkQ2xpZW50KToKKyAgICAgICAgKFdlYlZpZGVvRnVs
bHNjcmVlbk1vZGVsVmlkZW9FbGVtZW50OjpyZW1vdmVDbGllbnQpOgorICAgICAgICAoV2ViVmlk
ZW9GdWxsc2NyZWVuTW9kZWxWaWRlb0VsZW1lbnQ6OnNldEhhc1ZpZGVvKToKKyAgICAgICAgKFdl
YlZpZGVvRnVsbHNjcmVlbk1vZGVsVmlkZW9FbGVtZW50OjpzZXRWaWRlb0RpbWVuc2lvbnMpOgor
ICAgICAgICAoV2ViVmlkZW9GdWxsc2NyZWVuTW9kZWxWaWRlb0VsZW1lbnQ6OnNldFdlYlZpZGVv
RnVsbHNjcmVlbkludGVyZmFjZSk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vaW9zL1dl
YkFWUGxheWVyQ29udHJvbGxlci5oOgorICAgICAgICAqIHBsYXRmb3JtL2lvcy9XZWJBVlBsYXll
ckNvbnRyb2xsZXIubW06CisgICAgICAgICgtW1dlYkFWUGxheWVyQ29udHJvbGxlciByZXNldFN0
YXRlXSk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vaW9zL1dlYlBsYXliYWNrU2Vzc2lv
bkludGVyZmFjZUFWS2l0Lmg6CisgICAgICAgIChXZWJDb3JlOjpXZWJQbGF5YmFja1Nlc3Npb25J
bnRlcmZhY2VBVktpdENsaWVudDo6fldlYlBsYXliYWNrU2Vzc2lvbkludGVyZmFjZUFWS2l0Q2xp
ZW50KTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9pb3MvV2ViUGxheWJhY2tTZXNzaW9u
SW50ZXJmYWNlQVZLaXQubW06CisgICAgICAgIChXZWJDb3JlOjpXZWJQbGF5YmFja1Nlc3Npb25J
bnRlcmZhY2VBVktpdDo6V2ViUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlQVZLaXQpOgorICAgICAg
ICAoV2ViQ29yZTo6V2ViUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlQVZLaXQ6On5XZWJQbGF5YmFj
a1Nlc3Npb25JbnRlcmZhY2VBVktpdCk6CisgICAgICAgIChXZWJDb3JlOjpXZWJQbGF5YmFja1Nl
c3Npb25JbnRlcmZhY2VBVktpdDo6cmVzZXRNZWRpYVN0YXRlKToKKyAgICAgICAgKFdlYkNvcmU6
OldlYlBsYXliYWNrU2Vzc2lvbkludGVyZmFjZUFWS2l0OjpkdXJhdGlvbkNoYW5nZWQpOgorICAg
ICAgICAoV2ViQ29yZTo6V2ViUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlQVZLaXQ6OmN1cnJlbnRU
aW1lQ2hhbmdlZCk6CisgICAgICAgIChXZWJDb3JlOjpXZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZh
Y2VBVktpdDo6YnVmZmVyZWRUaW1lQ2hhbmdlZCk6CisgICAgICAgIChXZWJDb3JlOjpXZWJQbGF5
YmFja1Nlc3Npb25JbnRlcmZhY2VBVktpdDo6cmF0ZUNoYW5nZWQpOgorICAgICAgICAoV2ViQ29y
ZTo6V2ViUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlQVZLaXQ6OnNlZWthYmxlUmFuZ2VzQ2hhbmdl
ZCk6CisgICAgICAgIChXZWJDb3JlOjpXZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2VBVktpdDo6
Y2FuUGxheUZhc3RSZXZlcnNlQ2hhbmdlZCk6CisgICAgICAgIChXZWJDb3JlOjpXZWJQbGF5YmFj
a1Nlc3Npb25JbnRlcmZhY2VBVktpdDo6YXVkaW9NZWRpYVNlbGVjdGlvbk9wdGlvbnNDaGFuZ2Vk
KToKKyAgICAgICAgKFdlYkNvcmU6OldlYlBsYXliYWNrU2Vzc2lvbkludGVyZmFjZUFWS2l0Ojps
ZWdpYmxlTWVkaWFTZWxlY3Rpb25PcHRpb25zQ2hhbmdlZCk6CisgICAgICAgIChXZWJDb3JlOjpX
ZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2VBVktpdDo6ZXh0ZXJuYWxQbGF5YmFja0NoYW5nZWQp
OgorICAgICAgICAoV2ViQ29yZTo6V2ViUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlQVZLaXQ6Ondp
cmVsZXNzVmlkZW9QbGF5YmFja0Rpc2FibGVkQ2hhbmdlZCk6CisgICAgICAgIChXZWJDb3JlOjpX
ZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2VBVktpdDo6aW52YWxpZGF0ZSk6CisgICAgICAgIChX
ZWJDb3JlOjpXZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2VBVktpdDo6c2V0V2ViUGxheWJhY2tT
ZXNzaW9uTW9kZWwpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6V2ViUGxheWJhY2tTZXNz
aW9uSW50ZXJmYWNlQVZLaXQ6OnNldER1cmF0aW9uKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNv
cmU6OldlYlBsYXliYWNrU2Vzc2lvbkludGVyZmFjZUFWS2l0OjpzZXRDdXJyZW50VGltZSk6IERl
bGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpXZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2VBVktp
dDo6c2V0QnVmZmVyZWRUaW1lKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OldlYlBsYXli
YWNrU2Vzc2lvbkludGVyZmFjZUFWS2l0OjpzZXRSYXRlKTogRGVsZXRlZC4KKyAgICAgICAgKFdl
YkNvcmU6OldlYlBsYXliYWNrU2Vzc2lvbkludGVyZmFjZUFWS2l0OjpzZXRTZWVrYWJsZVJhbmdl
cyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpXZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZh
Y2VBVktpdDo6c2V0Q2FuUGxheUZhc3RSZXZlcnNlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNv
cmU6OldlYlBsYXliYWNrU2Vzc2lvbkludGVyZmFjZUFWS2l0OjpzZXRBdWRpb01lZGlhU2VsZWN0
aW9uT3B0aW9ucyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpXZWJQbGF5YmFja1Nlc3Np
b25JbnRlcmZhY2VBVktpdDo6c2V0TGVnaWJsZU1lZGlhU2VsZWN0aW9uT3B0aW9ucyk6IERlbGV0
ZWQuCisgICAgICAgIChXZWJDb3JlOjpXZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2VBVktpdDo6
c2V0RXh0ZXJuYWxQbGF5YmFjayk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpXZWJQbGF5
YmFja1Nlc3Npb25JbnRlcmZhY2VBVktpdDo6c2V0V2lyZWxlc3NWaWRlb1BsYXliYWNrRGlzYWJs
ZWQpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6V2ViUGxheWJhY2tTZXNzaW9uSW50ZXJm
YWNlQVZLaXQ6OndpcmVsZXNzVmlkZW9QbGF5YmFja0Rpc2FibGVkKTogRGVsZXRlZC4KKyAgICAg
ICAgKiBwbGF0Zm9ybS9pb3MvV2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlckFWS2l0Lm1tOgor
ICAgICAgICAoV2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlckNvbnRleHQ6OmRpZFNldHVwRnVs
bHNjcmVlbik6CisgICAgICAgIChXZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyQ29udGV4dDo6
ZGlkRXhpdEZ1bGxzY3JlZW4pOgorICAgICAgICAoV2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxl
ckNvbnRleHQ6OmRpZENsZWFudXBGdWxsc2NyZWVuKToKKyAgICAgICAgKFdlYlZpZGVvRnVsbHNj
cmVlbkNvbnRyb2xsZXJDb250ZXh0OjpkdXJhdGlvbkNoYW5nZWQpOgorICAgICAgICAoV2ViVmlk
ZW9GdWxsc2NyZWVuQ29udHJvbGxlckNvbnRleHQ6OmN1cnJlbnRUaW1lQ2hhbmdlZCk6CisgICAg
ICAgIChXZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyQ29udGV4dDo6YnVmZmVyZWRUaW1lQ2hh
bmdlZCk6CisgICAgICAgIChXZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyQ29udGV4dDo6cmF0
ZUNoYW5nZWQpOgorICAgICAgICAoV2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlckNvbnRleHQ6
Omhhc1ZpZGVvQ2hhbmdlZCk6CisgICAgICAgIChXZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVy
Q29udGV4dDo6dmlkZW9EaW1lbnNpb25zQ2hhbmdlZCk6CisgICAgICAgIChXZWJWaWRlb0Z1bGxz
Y3JlZW5Db250cm9sbGVyQ29udGV4dDo6c2Vla2FibGVSYW5nZXNDaGFuZ2VkKToKKyAgICAgICAg
KFdlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJDb250ZXh0OjpjYW5QbGF5RmFzdFJldmVyc2VD
aGFuZ2VkKToKKyAgICAgICAgKFdlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJDb250ZXh0Ojph
dWRpb01lZGlhU2VsZWN0aW9uT3B0aW9uc0NoYW5nZWQpOgorICAgICAgICAoV2ViVmlkZW9GdWxs
c2NyZWVuQ29udHJvbGxlckNvbnRleHQ6OmxlZ2libGVNZWRpYVNlbGVjdGlvbk9wdGlvbnNDaGFu
Z2VkKToKKyAgICAgICAgKFdlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJDb250ZXh0OjpleHRl
cm5hbFBsYXliYWNrQ2hhbmdlZCk6CisgICAgICAgIChXZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9s
bGVyQ29udGV4dDo6d2lyZWxlc3NWaWRlb1BsYXliYWNrRGlzYWJsZWRDaGFuZ2VkKToKKyAgICAg
ICAgKFdlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJDb250ZXh0OjphZGRDbGllbnQpOgorICAg
ICAgICAoV2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlckNvbnRleHQ6OnJlbW92ZUNsaWVudCk6
CisgICAgICAgIChXZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyQ29udGV4dDo6cmVxdWVzdEZ1
bGxzY3JlZW5Nb2RlKToKKyAgICAgICAgKFdlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJDb250
ZXh0OjpzZXRWaWRlb0xheWVyRnJhbWUpOgorICAgICAgICAoV2ViVmlkZW9GdWxsc2NyZWVuQ29u
dHJvbGxlckNvbnRleHQ6OnNldFZpZGVvTGF5ZXJHcmF2aXR5KToKKyAgICAgICAgKFdlYlZpZGVv
RnVsbHNjcmVlbkNvbnRyb2xsZXJDb250ZXh0OjpmdWxsc2NyZWVuTW9kZUNoYW5nZWQpOgorICAg
ICAgICAoV2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlckNvbnRleHQ6OmlzVmlzaWJsZSk6Cisg
ICAgICAgIChXZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyQ29udGV4dDo6aGFzVmlkZW8pOgor
ICAgICAgICAoV2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlckNvbnRleHQ6OnZpZGVvRGltZW5z
aW9ucyk6CisgICAgICAgIChXZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyQ29udGV4dDo6cGxh
eSk6CisgICAgICAgIChXZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyQ29udGV4dDo6cGF1c2Up
OgorICAgICAgICAoV2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlckNvbnRleHQ6OnRvZ2dsZVBs
YXlTdGF0ZSk6CisgICAgICAgIChXZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyQ29udGV4dDo6
YmVnaW5TY3J1YmJpbmcpOgorICAgICAgICAoV2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlckNv
bnRleHQ6OmVuZFNjcnViYmluZyk6CisgICAgICAgIChXZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9s
bGVyQ29udGV4dDo6c2Vla1RvVGltZSk6CisgICAgICAgIChXZWJWaWRlb0Z1bGxzY3JlZW5Db250
cm9sbGVyQ29udGV4dDo6ZmFzdFNlZWspOgorICAgICAgICAoV2ViVmlkZW9GdWxsc2NyZWVuQ29u
dHJvbGxlckNvbnRleHQ6OmJlZ2luU2Nhbm5pbmdGb3J3YXJkKToKKyAgICAgICAgKFdlYlZpZGVv
RnVsbHNjcmVlbkNvbnRyb2xsZXJDb250ZXh0OjpiZWdpblNjYW5uaW5nQmFja3dhcmQpOgorICAg
ICAgICAoV2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlckNvbnRleHQ6OmVuZFNjYW5uaW5nKToK
KyAgICAgICAgKFdlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJDb250ZXh0OjpzZWxlY3RBdWRp
b01lZGlhT3B0aW9uKToKKyAgICAgICAgKFdlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJDb250
ZXh0OjpzZWxlY3RMZWdpYmxlTWVkaWFPcHRpb24pOgorICAgICAgICAoV2ViVmlkZW9GdWxsc2Ny
ZWVuQ29udHJvbGxlckNvbnRleHQ6OmR1cmF0aW9uKToKKyAgICAgICAgKFdlYlZpZGVvRnVsbHNj
cmVlbkNvbnRyb2xsZXJDb250ZXh0OjpjdXJyZW50VGltZSk6CisgICAgICAgIChXZWJWaWRlb0Z1
bGxzY3JlZW5Db250cm9sbGVyQ29udGV4dDo6YnVmZmVyZWRUaW1lKToKKyAgICAgICAgKFdlYlZp
ZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJDb250ZXh0Ojppc1BsYXlpbmcpOgorICAgICAgICAoV2Vi
VmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlckNvbnRleHQ6OnBsYXliYWNrUmF0ZSk6CisgICAgICAg
IChXZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyQ29udGV4dDo6c2Vla2FibGVSYW5nZXMpOgor
ICAgICAgICAoV2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlckNvbnRleHQ6OmNhblBsYXlGYXN0
UmV2ZXJzZSk6CisgICAgICAgIChXZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyQ29udGV4dDo6
YXVkaW9NZWRpYVNlbGVjdGlvbk9wdGlvbnMpOgorICAgICAgICAoV2ViVmlkZW9GdWxsc2NyZWVu
Q29udHJvbGxlckNvbnRleHQ6OmF1ZGlvTWVkaWFTZWxlY3RlZEluZGV4KToKKyAgICAgICAgKFdl
YlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJDb250ZXh0OjpsZWdpYmxlTWVkaWFTZWxlY3Rpb25P
cHRpb25zKToKKyAgICAgICAgKFdlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJDb250ZXh0Ojps
ZWdpYmxlTWVkaWFTZWxlY3RlZEluZGV4KToKKyAgICAgICAgKFdlYlZpZGVvRnVsbHNjcmVlbkNv
bnRyb2xsZXJDb250ZXh0OjpleHRlcm5hbFBsYXliYWNrRW5hYmxlZCk6CisgICAgICAgIChXZWJW
aWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyQ29udGV4dDo6ZXh0ZXJuYWxQbGF5YmFja1RhcmdldFR5
cGUpOgorICAgICAgICAoV2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlckNvbnRleHQ6OmV4dGVy
bmFsUGxheWJhY2tMb2NhbGl6ZWREZXZpY2VOYW1lKToKKyAgICAgICAgKFdlYlZpZGVvRnVsbHNj
cmVlbkNvbnRyb2xsZXJDb250ZXh0Ojp3aXJlbGVzc1ZpZGVvUGxheWJhY2tEaXNhYmxlZCk6Cisg
ICAgICAgIChXZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyQ29udGV4dDo6c2V0VXBGdWxsc2Ny
ZWVuKToKKyAgICAgICAgKFdlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJDb250ZXh0OjpleGl0
RnVsbHNjcmVlbik6CisgICAgICAgIChXZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyQ29udGV4
dDo6cmVxdWVzdEhpZGVBbmRFeGl0RnVsbHNjcmVlbik6CisgICAgICAgIChXZWJWaWRlb0Z1bGxz
Y3JlZW5Db250cm9sbGVyQ29udGV4dDo6cmVzZXRNZWRpYVN0YXRlKTogRGVsZXRlZC4KKyAgICAg
ICAgKFdlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJDb250ZXh0OjpzZXREdXJhdGlvbik6IERl
bGV0ZWQuCisgICAgICAgIChXZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyQ29udGV4dDo6c2V0
Q3VycmVudFRpbWUpOiBEZWxldGVkLgorICAgICAgICAoV2ViVmlkZW9GdWxsc2NyZWVuQ29udHJv
bGxlckNvbnRleHQ6OnNldEJ1ZmZlcmVkVGltZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJWaWRl
b0Z1bGxzY3JlZW5Db250cm9sbGVyQ29udGV4dDo6c2V0UmF0ZSk6IERlbGV0ZWQuCisgICAgICAg
IChXZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyQ29udGV4dDo6c2V0VmlkZW9EaW1lbnNpb25z
KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJDb250ZXh0
OjpzZXRTZWVrYWJsZVJhbmdlcyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJWaWRlb0Z1bGxzY3Jl
ZW5Db250cm9sbGVyQ29udGV4dDo6c2V0Q2FuUGxheUZhc3RSZXZlcnNlKTogRGVsZXRlZC4KKyAg
ICAgICAgKFdlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJDb250ZXh0OjpzZXRBdWRpb01lZGlh
U2VsZWN0aW9uT3B0aW9ucyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJWaWRlb0Z1bGxzY3JlZW5D
b250cm9sbGVyQ29udGV4dDo6c2V0TGVnaWJsZU1lZGlhU2VsZWN0aW9uT3B0aW9ucyk6IERlbGV0
ZWQuCisgICAgICAgIChXZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyQ29udGV4dDo6c2V0RXh0
ZXJuYWxQbGF5YmFjayk6IERlbGV0ZWQuCisgICAgICAgIChXZWJWaWRlb0Z1bGxzY3JlZW5Db250
cm9sbGVyQ29udGV4dDo6c2V0V2lyZWxlc3NWaWRlb1BsYXliYWNrRGlzYWJsZWQpOiBEZWxldGVk
LgorICAgICAgICAoV2ViVmlkZW9GdWxsc2NyZWVuU2Vzc2lvbk1vZGVsOjpwbGF5KTogRGVsZXRl
ZC4KKyAgICAgICAgKFdlYlZpZGVvRnVsbHNjcmVlblNlc3Npb25Nb2RlbDo6cGF1c2UpOiBEZWxl
dGVkLgorICAgICAgICAoV2ViVmlkZW9GdWxsc2NyZWVuU2Vzc2lvbk1vZGVsOjp0b2dnbGVQbGF5
U3RhdGUpOiBEZWxldGVkLgorICAgICAgICAoV2ViVmlkZW9GdWxsc2NyZWVuU2Vzc2lvbk1vZGVs
OjpiZWdpblNjcnViYmluZyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJWaWRlb0Z1bGxzY3JlZW5T
ZXNzaW9uTW9kZWw6OmVuZFNjcnViYmluZyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJWaWRlb0Z1
bGxzY3JlZW5TZXNzaW9uTW9kZWw6OnNlZWtUb1RpbWUpOiBEZWxldGVkLgorICAgICAgICAoV2Vi
VmlkZW9GdWxsc2NyZWVuU2Vzc2lvbk1vZGVsOjpmYXN0U2Vlayk6IERlbGV0ZWQuCisgICAgICAg
IChXZWJWaWRlb0Z1bGxzY3JlZW5TZXNzaW9uTW9kZWw6OmJlZ2luU2Nhbm5pbmdGb3J3YXJkKTog
RGVsZXRlZC4KKyAgICAgICAgKFdlYlZpZGVvRnVsbHNjcmVlblNlc3Npb25Nb2RlbDo6YmVnaW5T
Y2FubmluZ0JhY2t3YXJkKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYlZpZGVvRnVsbHNjcmVlblNl
c3Npb25Nb2RlbDo6ZW5kU2Nhbm5pbmcpOiBEZWxldGVkLgorICAgICAgICAoV2ViVmlkZW9GdWxs
c2NyZWVuU2Vzc2lvbk1vZGVsOjpzZWxlY3RBdWRpb01lZGlhT3B0aW9uKTogRGVsZXRlZC4KKyAg
ICAgICAgKFdlYlZpZGVvRnVsbHNjcmVlblNlc3Npb25Nb2RlbDo6c2VsZWN0TGVnaWJsZU1lZGlh
T3B0aW9uKTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9pb3MvV2ViVmlkZW9GdWxsc2Ny
ZWVuSW50ZXJmYWNlQVZLaXQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9pb3MvV2ViVmlkZW9GdWxs
c2NyZWVuSW50ZXJmYWNlQVZLaXQubW06CisgICAgICAgIChXZWJWaWRlb0Z1bGxzY3JlZW5JbnRl
cmZhY2VBVktpdDo6fldlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0KToKKyAgICAgICAg
KFdlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0OjpzZXRXZWJWaWRlb0Z1bGxzY3JlZW5N
b2RlbCk6CisgICAgICAgIChXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdDo6c2V0V2Vi
VmlkZW9GdWxsc2NyZWVuQ2hhbmdlT2JzZXJ2ZXIpOgorICAgICAgICAoV2ViVmlkZW9GdWxsc2Ny
ZWVuSW50ZXJmYWNlQVZLaXQ6Omhhc1ZpZGVvQ2hhbmdlZCk6CisgICAgICAgIChXZWJWaWRlb0Z1
bGxzY3JlZW5JbnRlcmZhY2VBVktpdDo6dmlkZW9EaW1lbnNpb25zQ2hhbmdlZCk6CisgICAgICAg
IChXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdDo6ZXh0ZXJuYWxQbGF5YmFja0NoYW5n
ZWQpOgorICAgICAgICAoV2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQ6OnJlc2V0TWVk
aWFTdGF0ZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VB
VktpdDo6c2V0RHVyYXRpb24pOiBEZWxldGVkLgorICAgICAgICAoV2ViVmlkZW9GdWxsc2NyZWVu
SW50ZXJmYWNlQVZLaXQ6OnNldEN1cnJlbnRUaW1lKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYlZp
ZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0OjpzZXRCdWZmZXJlZFRpbWUpOiBEZWxldGVkLgor
ICAgICAgICAoV2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQ6OnNldFJhdGUpOiBEZWxl
dGVkLgorICAgICAgICAoV2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQ6OnNldFZpZGVv
RGltZW5zaW9ucyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZh
Y2VBVktpdDo6c2V0U2Vla2FibGVSYW5nZXMpOiBEZWxldGVkLgorICAgICAgICAoV2ViVmlkZW9G
dWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQ6OnNldENhblBsYXlGYXN0UmV2ZXJzZSk6IERlbGV0ZWQu
CisgICAgICAgIChXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdDo6c2V0QXVkaW9NZWRp
YVNlbGVjdGlvbk9wdGlvbnMpOiBEZWxldGVkLgorICAgICAgICAoV2ViVmlkZW9GdWxsc2NyZWVu
SW50ZXJmYWNlQVZLaXQ6OnNldExlZ2libGVNZWRpYVNlbGVjdGlvbk9wdGlvbnMpOiBEZWxldGVk
LgorICAgICAgICAoV2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQ6OnNldEV4dGVybmFs
UGxheWJhY2spOiBEZWxldGVkLgorICAgICAgICAoV2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNl
QVZLaXQ6OmV4dGVybmFsUGxheWJhY2tFbmFibGVkQ2hhbmdlZCk6IERlbGV0ZWQuCisgICAgICAg
IChXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdDo6c2V0V2lyZWxlc3NWaWRlb1BsYXli
YWNrRGlzYWJsZWQpOiBEZWxldGVkLgorICAgICAgICAoV2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJm
YWNlQVZLaXQ6OndpcmVsZXNzVmlkZW9QbGF5YmFja0Rpc2FibGVkKTogRGVsZXRlZC4KKyAgICAg
ICAgKiBwbGF0Zm9ybS9tYWMvV2ViUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlTWFjLmg6CisgICAg
ICAgIChXZWJDb3JlOjpXZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2VNYWNDbGllbnQ6On5XZWJQ
bGF5YmFja1Nlc3Npb25JbnRlcmZhY2VNYWNDbGllbnQpOiBEZWxldGVkLgorICAgICAgICAqIHBs
YXRmb3JtL21hYy9XZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2VNYWMubW06CisgICAgICAgIChX
ZWJDb3JlOjpXZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2VNYWM6OmNyZWF0ZSk6CisgICAgICAg
IChXZWJDb3JlOjpXZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2VNYWM6OldlYlBsYXliYWNrU2Vz
c2lvbkludGVyZmFjZU1hYyk6CisgICAgICAgIChXZWJDb3JlOjpXZWJQbGF5YmFja1Nlc3Npb25J
bnRlcmZhY2VNYWM6On5XZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2VNYWMpOgorICAgICAgICAo
V2ViQ29yZTo6V2ViUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlTWFjOjpkdXJhdGlvbkNoYW5nZWQp
OgorICAgICAgICAoV2ViQ29yZTo6V2ViUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlTWFjOjpjdXJy
ZW50VGltZUNoYW5nZWQpOgorICAgICAgICAoV2ViQ29yZTo6V2ViUGxheWJhY2tTZXNzaW9uSW50
ZXJmYWNlTWFjOjpyYXRlQ2hhbmdlZCk6CisgICAgICAgIChXZWJDb3JlOjpXZWJQbGF5YmFja1Nl
c3Npb25JbnRlcmZhY2VNYWM6OnNlZWthYmxlUmFuZ2VzQ2hhbmdlZCk6CisgICAgICAgIChXZWJD
b3JlOjpXZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2VNYWM6OmF1ZGlvTWVkaWFTZWxlY3Rpb25P
cHRpb25zQ2hhbmdlZCk6CisgICAgICAgIChXZWJDb3JlOjpXZWJQbGF5YmFja1Nlc3Npb25JbnRl
cmZhY2VNYWM6OmxlZ2libGVNZWRpYVNlbGVjdGlvbk9wdGlvbnNDaGFuZ2VkKToKKyAgICAgICAg
KFdlYkNvcmU6OldlYlBsYXliYWNrU2Vzc2lvbkludGVyZmFjZU1hYzo6aW52YWxpZGF0ZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpXZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2VNYWM6OnNldFdlYlBs
YXliYWNrU2Vzc2lvbk1vZGVsKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OldlYlBsYXli
YWNrU2Vzc2lvbkludGVyZmFjZU1hYzo6c2V0Q2xpZW50KTogRGVsZXRlZC4KKyAgICAgICAgKFdl
YkNvcmU6OldlYlBsYXliYWNrU2Vzc2lvbkludGVyZmFjZU1hYzo6c2V0RHVyYXRpb24pOiBEZWxl
dGVkLgorICAgICAgICAoV2ViQ29yZTo6V2ViUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlTWFjOjpz
ZXRDdXJyZW50VGltZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpXZWJQbGF5YmFja1Nl
c3Npb25JbnRlcmZhY2VNYWM6OnNldFJhdGUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6
V2ViUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlTWFjOjpzZXRTZWVrYWJsZVJhbmdlcyk6IERlbGV0
ZWQuCisgICAgICAgIChXZWJDb3JlOjpXZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2VNYWM6OnNl
dEF1ZGlvTWVkaWFTZWxlY3Rpb25PcHRpb25zKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6
OldlYlBsYXliYWNrU2Vzc2lvbkludGVyZmFjZU1hYzo6c2V0TGVnaWJsZU1lZGlhU2VsZWN0aW9u
T3B0aW9ucyk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vbWFjL1dlYlZpZGVvRnVsbHNj
cmVlbkludGVyZmFjZU1hYy5oOgorICAgICAgICAqIHBsYXRmb3JtL21hYy9XZWJWaWRlb0Z1bGxz
Y3JlZW5JbnRlcmZhY2VNYWMubW06CisgICAgICAgIChXZWJDb3JlOjpXZWJWaWRlb0Z1bGxzY3Jl
ZW5JbnRlcmZhY2VNYWM6OldlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZU1hYyk6CisgICAgICAg
IChXZWJDb3JlOjpXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VNYWM6On5XZWJWaWRlb0Z1bGxz
Y3JlZW5JbnRlcmZhY2VNYWMpOgorICAgICAgICAoV2ViQ29yZTo6V2ViVmlkZW9GdWxsc2NyZWVu
SW50ZXJmYWNlTWFjOjpzZXRXZWJWaWRlb0Z1bGxzY3JlZW5Nb2RlbCk6CisgICAgICAgIChXZWJD
b3JlOjpXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VNYWM6OmV4dGVybmFsUGxheWJhY2tDaGFu
Z2VkKToKKyAgICAgICAgKFdlYkNvcmU6OldlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZU1hYzo6
aGFzVmlkZW9DaGFuZ2VkKToKKyAgICAgICAgKFdlYkNvcmU6OldlYlZpZGVvRnVsbHNjcmVlbklu
dGVyZmFjZU1hYzo6dmlkZW9EaW1lbnNpb25zQ2hhbmdlZCk6CisgICAgICAgIChXZWJDb3JlOjpX
ZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VNYWM6OnNldER1cmF0aW9uKTogRGVsZXRlZC4KKyAg
ICAgICAgKFdlYkNvcmU6OldlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZU1hYzo6c2V0Q3VycmVu
dFRpbWUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6V2ViVmlkZW9GdWxsc2NyZWVuSW50
ZXJmYWNlTWFjOjpzZXRSYXRlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OldlYlZpZGVv
RnVsbHNjcmVlbkludGVyZmFjZU1hYzo6c2V0U2Vla2FibGVSYW5nZXMpOiBEZWxldGVkLgorICAg
ICAgICAoV2ViQ29yZTo6V2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlTWFjOjpzZXRBdWRpb01l
ZGlhU2VsZWN0aW9uT3B0aW9ucyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpXZWJWaWRl
b0Z1bGxzY3JlZW5JbnRlcmZhY2VNYWM6OnNldExlZ2libGVNZWRpYVNlbGVjdGlvbk9wdGlvbnMp
OiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6V2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNl
TWFjOjpzZXRFeHRlcm5hbFBsYXliYWNrKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6Oldl
YlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZU1hYzo6c2V0VmlkZW9EaW1lbnNpb25zKTogRGVsZXRl
ZC4KKwogMjAxNi0wOC0yOSAgWW91ZW5uIEZhYmxldCAgPHlvdWVubkBhcHBsZS5jb20+CiAKICAg
ICAgICAgW0ZldGNoIEFQSV0gUmVzcG9uc2UgY2xvbmluZyBzaG91bGQgc3RydWN0dXJlQ2xvbmUg
d2hlbiB0ZWVpbmcgUmVzcG9uc2Ugc3RyZWFtCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21h
Yy9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cKaW5kZXggNGNjMTdiYzZj
YzQxYjA1NjZlZWI2YzNjZTczNTljMzJlZWEwYzQ5ZC4uNDljMDA5MjJhZTMxYzcxODRiNWZkYmMx
MmRlZTBkMjliNjAzYjc3NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9n
CisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE2IEBACisyMDE2
LTA3LTA4ICBKZXIgTm9ibGUgIDxqZXIubm9ibGVAYXBwbGUuY29tPgorCisgICAgICAgIFJlZmFj
dG9yIFdlYlBsYXliYWNrU2Vzc2lvbk1vZGVsTWVkaWFFbGVtZW50IHRvIGJlIGNsaWVudCBiYXNl
ZC4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1OTU4
MAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE5vIGxv
bmdlciBuZWNlc3NhcnkgdG8gdGVsbCB0aGUgbW9kZWxzIGFuZCBpbnRlcmZhY2VzIGFib3V0IGVh
Y2ggb3RoZXIuCisKKyAgICAgICAgKiBXZWJWaWV3L1dlYlZpZXcubW06CisgICAgICAgICgtW1dl
YlZpZXcgX3NldFVwUGxheWJhY2tDb250cm9sc01hbmFnZXJGb3JNZWRpYUVsZW1lbnQ6XSk6Cisg
ICAgICAgICgtW1dlYlZpZXcgX2NsZWFyUGxheWJhY2tDb250cm9sc01hbmFnZXJdKToKKwogMjAx
Ni0wOC0yOCAgQW5kcmVhcyBLbGluZyAgPGFrbGluZ0BhcHBsZS5jb20+CiAKICAgICAgICAgZG9j
dW1lbnQudGl0bGUgc2V0dGVyIGNhbid0IHRocm93LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCmluZGV4IDIzMmI4OWIzYmZk
ZmY4YmNlZGQ5NDU0YmQyYjRjNWU0YzRjOTE4MGQuLmI5Mzg3NjNmYTJmOGQ1MTBmYWZmNGVjZDM5
ODk4YzI3NWRiZmRhZDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZworKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMTggQEAKKzIwMTYtMDctMDgg
IEplciBOb2JsZSAgPGplci5ub2JsZUBhcHBsZS5jb20+CisKKyAgICAgICAgUmVmYWN0b3IgV2Vi
UGxheWJhY2tTZXNzaW9uTW9kZWxNZWRpYUVsZW1lbnQgdG8gYmUgY2xpZW50IGJhc2VkLgorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU5NTgwCisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRvcHQgdGhlIGNo
YW5nZXMgbWFkZSBpbiB0aGUgV2ViUGxheWJhY2tTZXNzaW9uTW9kZWwsSW50ZXJmYWNlIGFuZCBX
ZWJWaWRlb0Z1bGxzY3JlZW5Nb2RlbCxJbnRlcmZhY2UKKyAgICAgICAgaW4gdGhlIFdlYlBsYXli
YWNrU2Vzc2lvbk1hbmFnZXIsUHJveHkgY2xhc3Nlcy4KKworICAgICAgICAqIFVJUHJvY2Vzcy9B
UEkvQ29jb2EvV0tXZWJWaWV3Lm1tOgorICAgICAgICAoLVtXS1dlYlZpZXcgX2luaXRpYWxpemVX
aXRoQ29uZmlndXJhdGlvbjpdKTogRGVsZXRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2Ev
V2ViUGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5Lmg6CisgICAgICAgICogVUlQcm9jZXNzL0Nv
Y29hL1dlYlBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eS5tbToKKyAgICAgICAgKFdlYktpdDo6
V2ViUGxheWJhY2tTZXNzaW9uTW9kZWxDb250ZXh0OjphZGRDbGllbnQpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJQbGF5YmFja1Nlc3Npb25Nb2RlbENvbnRleHQ6OnJlbW92ZUNsaWVudCk6CisgICAg
ICAgIChXZWJLaXQ6OldlYlBsYXliYWNrU2Vzc2lvbk1vZGVsQ29udGV4dDo6c2V0RHVyYXRpb24p
OgorICAgICAgICAoV2ViS2l0OjpXZWJQbGF5YmFja1Nlc3Npb25Nb2RlbENvbnRleHQ6OnNldEN1
cnJlbnRUaW1lKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGxheWJhY2tTZXNzaW9uTW9kZWxDb250
ZXh0OjpzZXRCdWZmZXJlZFRpbWUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQbGF5YmFja1Nlc3Np
b25Nb2RlbENvbnRleHQ6OnNldFJhdGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQbGF5YmFja1Nl
c3Npb25Nb2RlbENvbnRleHQ6OnNldFNlZWthYmxlUmFuZ2VzKToKKyAgICAgICAgKFdlYktpdDo6
V2ViUGxheWJhY2tTZXNzaW9uTW9kZWxDb250ZXh0OjpzZXRDYW5QbGF5RmFzdFJldmVyc2UpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJQbGF5YmFja1Nlc3Npb25Nb2RlbENvbnRleHQ6OnNldEF1ZGlv
TWVkaWFTZWxlY3Rpb25PcHRpb25zKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGxheWJhY2tTZXNz
aW9uTW9kZWxDb250ZXh0OjpzZXRMZWdpYmxlTWVkaWFTZWxlY3Rpb25PcHRpb25zKToKKyAgICAg
ICAgKFdlYktpdDo6V2ViUGxheWJhY2tTZXNzaW9uTW9kZWxDb250ZXh0OjpzZXRFeHRlcm5hbFBs
YXliYWNrKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGxheWJhY2tTZXNzaW9uTW9kZWxDb250ZXh0
OjpzZXRXaXJlbGVzc1ZpZGVvUGxheWJhY2tEaXNhYmxlZCk6CisgICAgICAgIChXZWJLaXQ6Oldl
YlBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eTo6Y3JlYXRlTW9kZWxBbmRJbnRlcmZhY2UpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHk6OnJlbW92ZUNs
aWVudEZvckNvbnRleHQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQbGF5YmFja1Nlc3Npb25NYW5h
Z2VyUHJveHk6OnNldEN1cnJlbnRUaW1lKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGxheWJhY2tT
ZXNzaW9uTWFuYWdlclByb3h5OjpzZXRCdWZmZXJlZFRpbWUpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHk6OnNldFNlZWthYmxlUmFuZ2VzVmVjdG9yKToK
KyAgICAgICAgKFdlYktpdDo6V2ViUGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5OjpzZXRDYW5Q
bGF5RmFzdFJldmVyc2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJQbGF5YmFja1Nlc3Npb25NYW5h
Z2VyUHJveHk6OnNldEF1ZGlvTWVkaWFTZWxlY3Rpb25PcHRpb25zKToKKyAgICAgICAgKFdlYktp
dDo6V2ViUGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5OjpzZXRMZWdpYmxlTWVkaWFTZWxlY3Rp
b25PcHRpb25zKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGxheWJhY2tTZXNzaW9uTWFuYWdlclBy
b3h5OjpzZXRFeHRlcm5hbFBsYXliYWNrUHJvcGVydGllcyk6CisgICAgICAgIChXZWJLaXQ6Oldl
YlBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eTo6c2V0V2lyZWxlc3NWaWRlb1BsYXliYWNrRGlz
YWJsZWQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHk6
OnNldER1cmF0aW9uKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGxheWJhY2tTZXNzaW9uTWFuYWdl
clByb3h5OjpzZXRSYXRlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvV2ViVmlkZW9GdWxs
c2NyZWVuTWFuYWdlclByb3h5Lmg6CisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL1dlYlZpZGVv
RnVsbHNjcmVlbk1hbmFnZXJQcm94eS5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBVSVByb2Nlc3Mv
Q29jb2EvV2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5Lm1tOgorICAgICAgICAoV2ViS2l0
OjpXZWJWaWRlb0Z1bGxzY3JlZW5Nb2RlbENvbnRleHQ6OmFkZENsaWVudCk6CisgICAgICAgIChX
ZWJLaXQ6OldlYlZpZGVvRnVsbHNjcmVlbk1vZGVsQ29udGV4dDo6cmVtb3ZlQ2xpZW50KToKKyAg
ICAgICAgKFdlYktpdDo6V2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5OjpzZXRIYXNWaWRl
byk6CisgICAgICAgIChXZWJLaXQ6OldlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eTo6c2V0
VmlkZW9EaW1lbnNpb25zKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL2NvY29hL1dlYlBsYXliYWNr
U2Vzc2lvbk1hbmFnZXIuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL2NvY29hL1dlYlBsYXliYWNr
U2Vzc2lvbk1hbmFnZXIubW06CisgICAgICAgIChXZWJLaXQ6OldlYlBsYXliYWNrU2Vzc2lvbklu
dGVyZmFjZUNvbnRleHQ6OmR1cmF0aW9uQ2hhbmdlZCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBs
YXliYWNrU2Vzc2lvbkludGVyZmFjZUNvbnRleHQ6OmN1cnJlbnRUaW1lQ2hhbmdlZCk6CisgICAg
ICAgIChXZWJLaXQ6OldlYlBsYXliYWNrU2Vzc2lvbkludGVyZmFjZUNvbnRleHQ6OmJ1ZmZlcmVk
VGltZUNoYW5nZWQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZh
Y2VDb250ZXh0OjpyYXRlQ2hhbmdlZCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBsYXliYWNrU2Vz
c2lvbkludGVyZmFjZUNvbnRleHQ6OnNlZWthYmxlUmFuZ2VzQ2hhbmdlZCk6CisgICAgICAgIChX
ZWJLaXQ6OldlYlBsYXliYWNrU2Vzc2lvbkludGVyZmFjZUNvbnRleHQ6OmNhblBsYXlGYXN0UmV2
ZXJzZUNoYW5nZWQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZh
Y2VDb250ZXh0OjphdWRpb01lZGlhU2VsZWN0aW9uT3B0aW9uc0NoYW5nZWQpOgorICAgICAgICAo
V2ViS2l0OjpXZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2VDb250ZXh0OjpsZWdpYmxlTWVkaWFT
ZWxlY3Rpb25PcHRpb25zQ2hhbmdlZCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBsYXliYWNrU2Vz
c2lvbkludGVyZmFjZUNvbnRleHQ6OmV4dGVybmFsUGxheWJhY2tDaGFuZ2VkKToKKyAgICAgICAg
KFdlYktpdDo6V2ViUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlQ29udGV4dDo6d2lyZWxlc3NWaWRl
b1BsYXliYWNrRGlzYWJsZWRDaGFuZ2VkKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGxheWJhY2tT
ZXNzaW9uTWFuYWdlcjo6fldlYlBsYXliYWNrU2Vzc2lvbk1hbmFnZXIpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJQbGF5YmFja1Nlc3Npb25NYW5hZ2VyOjpjcmVhdGVNb2RlbEFuZEludGVyZmFjZSk6
CisgICAgICAgIChXZWJLaXQ6OldlYlBsYXliYWNrU2Vzc2lvbk1hbmFnZXI6OnJlbW92ZUNvbnRl
eHQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQbGF5YmFja1Nlc3Npb25NYW5hZ2VyOjpkdXJhdGlv
bkNoYW5nZWQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQbGF5YmFja1Nlc3Npb25NYW5hZ2VyOjpj
dXJyZW50VGltZUNoYW5nZWQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQbGF5YmFja1Nlc3Npb25N
YW5hZ2VyOjpidWZmZXJlZFRpbWVDaGFuZ2VkKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGxheWJh
Y2tTZXNzaW9uTWFuYWdlcjo6cmF0ZUNoYW5nZWQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQbGF5
YmFja1Nlc3Npb25NYW5hZ2VyOjpzZWVrYWJsZVJhbmdlc0NoYW5nZWQpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJQbGF5YmFja1Nlc3Npb25NYW5hZ2VyOjpjYW5QbGF5RmFzdFJldmVyc2VDaGFuZ2Vk
KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGxheWJhY2tTZXNzaW9uTWFuYWdlcjo6YXVkaW9NZWRp
YVNlbGVjdGlvbk9wdGlvbnNDaGFuZ2VkKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGxheWJhY2tT
ZXNzaW9uTWFuYWdlcjo6bGVnaWJsZU1lZGlhU2VsZWN0aW9uT3B0aW9uc0NoYW5nZWQpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJQbGF5YmFja1Nlc3Npb25NYW5hZ2VyOjpleHRlcm5hbFBsYXliYWNr
Q2hhbmdlZCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBsYXliYWNrU2Vzc2lvbk1hbmFnZXI6Ondp
cmVsZXNzVmlkZW9QbGF5YmFja0Rpc2FibGVkQ2hhbmdlZCk6CisgICAgICAgIChXZWJLaXQ6Oldl
YlBsYXliYWNrU2Vzc2lvbkludGVyZmFjZUNvbnRleHQ6OnNldER1cmF0aW9uKTogRGVsZXRlZC4K
KyAgICAgICAgKFdlYktpdDo6V2ViUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlQ29udGV4dDo6c2V0
Q3VycmVudFRpbWUpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJQbGF5YmFja1Nlc3Np
b25JbnRlcmZhY2VDb250ZXh0OjpzZXRCdWZmZXJlZFRpbWUpOiBEZWxldGVkLgorICAgICAgICAo
V2ViS2l0OjpXZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2VDb250ZXh0OjpzZXRSYXRlKTogRGVs
ZXRlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlQ29udGV4
dDo6c2V0U2Vla2FibGVSYW5nZXMpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJQbGF5
YmFja1Nlc3Npb25JbnRlcmZhY2VDb250ZXh0OjpzZXRDYW5QbGF5RmFzdFJldmVyc2UpOiBEZWxl
dGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2VDb250ZXh0
OjpzZXRBdWRpb01lZGlhU2VsZWN0aW9uT3B0aW9ucyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJL
aXQ6OldlYlBsYXliYWNrU2Vzc2lvbkludGVyZmFjZUNvbnRleHQ6OnNldExlZ2libGVNZWRpYVNl
bGVjdGlvbk9wdGlvbnMpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJQbGF5YmFja1Nl
c3Npb25JbnRlcmZhY2VDb250ZXh0OjpzZXRFeHRlcm5hbFBsYXliYWNrKTogRGVsZXRlZC4KKyAg
ICAgICAgKFdlYktpdDo6V2ViUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlQ29udGV4dDo6c2V0V2ly
ZWxlc3NWaWRlb1BsYXliYWNrRGlzYWJsZWQpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpX
ZWJQbGF5YmFja1Nlc3Npb25NYW5hZ2VyOjpzZXREdXJhdGlvbik6IERlbGV0ZWQuCisgICAgICAg
IChXZWJLaXQ6OldlYlBsYXliYWNrU2Vzc2lvbk1hbmFnZXI6OnNldEN1cnJlbnRUaW1lKTogRGVs
ZXRlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViUGxheWJhY2tTZXNzaW9uTWFuYWdlcjo6c2V0QnVm
ZmVyZWRUaW1lKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViUGxheWJhY2tTZXNzaW9u
TWFuYWdlcjo6c2V0UmF0ZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OldlYlBsYXliYWNr
U2Vzc2lvbk1hbmFnZXI6OnNldFNlZWthYmxlUmFuZ2VzKTogRGVsZXRlZC4KKyAgICAgICAgKFdl
YktpdDo6V2ViUGxheWJhY2tTZXNzaW9uTWFuYWdlcjo6c2V0Q2FuUGxheUZhc3RSZXZlcnNlKTog
RGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViUGxheWJhY2tTZXNzaW9uTWFuYWdlcjo6c2V0
QXVkaW9NZWRpYVNlbGVjdGlvbk9wdGlvbnMpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpX
ZWJQbGF5YmFja1Nlc3Npb25NYW5hZ2VyOjpzZXRMZWdpYmxlTWVkaWFTZWxlY3Rpb25PcHRpb25z
KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViUGxheWJhY2tTZXNzaW9uTWFuYWdlcjo6
c2V0RXh0ZXJuYWxQbGF5YmFjayk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OldlYlBsYXli
YWNrU2Vzc2lvbk1hbmFnZXI6OnNldFdpcmVsZXNzVmlkZW9QbGF5YmFja0Rpc2FibGVkKTogRGVs
ZXRlZC4KKyAgICAgICAgKiBXZWJQcm9jZXNzL2NvY29hL1dlYlZpZGVvRnVsbHNjcmVlbk1hbmFn
ZXIuaDoKKyAgICAgICAgKFdlYktpdDo6V2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQ29udGV4
dDo6Y3JlYXRlKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL2NvY29hL1dlYlZpZGVvRnVsbHNjcmVl
bk1hbmFnZXIubW06CisgICAgICAgIChXZWJLaXQ6OldlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFj
ZUNvbnRleHQ6OldlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUNvbnRleHQpOgorICAgICAgICAo
V2ViS2l0OjpXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VDb250ZXh0OjpoYXNWaWRlb0NoYW5n
ZWQpOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VDb250ZXh0
Ojp2aWRlb0RpbWVuc2lvbnNDaGFuZ2VkKToKKyAgICAgICAgKFdlYktpdDo6V2ViVmlkZW9GdWxs
c2NyZWVuTWFuYWdlcjo6fldlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXIpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjpjcmVhdGVNb2RlbEFuZEludGVyZmFjZSk6
CisgICAgICAgIChXZWJLaXQ6OldlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6OnJlbW92ZUNvbnRl
eHQpOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjpoYXNWaWRl
b0NoYW5nZWQpOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjp2
aWRlb0RpbWVuc2lvbnNDaGFuZ2VkKToKKyAgICAgICAgKFdlYktpdDo6V2ViVmlkZW9GdWxsc2Ny
ZWVuSW50ZXJmYWNlQ29udGV4dDo6cmVzZXRNZWRpYVN0YXRlKTogRGVsZXRlZC4KKyAgICAgICAg
KFdlYktpdDo6V2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQ29udGV4dDo6c2V0RHVyYXRpb24p
OiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VD
b250ZXh0OjpzZXRDdXJyZW50VGltZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OldlYlZp
ZGVvRnVsbHNjcmVlbkludGVyZmFjZUNvbnRleHQ6OnNldEJ1ZmZlcmVkVGltZSk6IERlbGV0ZWQu
CisgICAgICAgIChXZWJLaXQ6OldlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUNvbnRleHQ6OnNl
dFJhdGUpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJWaWRlb0Z1bGxzY3JlZW5JbnRl
cmZhY2VDb250ZXh0OjpzZXRWaWRlb0RpbWVuc2lvbnMpOiBEZWxldGVkLgorICAgICAgICAoV2Vi
S2l0OjpXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VDb250ZXh0OjpzZXRTZWVrYWJsZVJhbmdl
cyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OldlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFj
ZUNvbnRleHQ6OnNldENhblBsYXlGYXN0UmV2ZXJzZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJL
aXQ6OldlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUNvbnRleHQ6OnNldEF1ZGlvTWVkaWFTZWxl
Y3Rpb25PcHRpb25zKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViVmlkZW9GdWxsc2Ny
ZWVuSW50ZXJmYWNlQ29udGV4dDo6c2V0TGVnaWJsZU1lZGlhU2VsZWN0aW9uT3B0aW9ucyk6IERl
bGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OldlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUNvbnRl
eHQ6OnNldEV4dGVybmFsUGxheWJhY2spOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJW
aWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VDb250ZXh0OjpzZXRXaXJlbGVzc1ZpZGVvUGxheWJhY2tE
aXNhYmxlZCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OldlYlZpZGVvRnVsbHNjcmVlbk1h
bmFnZXI6OnNldFZpZGVvRGltZW5zaW9ucyk6IERlbGV0ZWQuCisKIDIwMTYtMDgtMjYgIEFuZGVy
cyBDYXJsc3NvbiAgPGFuZGVyc2NhQGFwcGxlLmNvbT4KIAogICAgICAgICBSZW1vdmUgc3luYyBt
ZXNzYWdlIHNlbmRpbmcgZnJvbSBzZWNvbmRhcnkgdGhyZWFkcwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvV2ViUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9XZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2Uu
aAppbmRleCA4ZmZhMGNhZGQwODY5Y2YxNGVjNDAyMmI1YjAyY2EwZGJkZjhmODlhLi5jNTliOGM4
NjQ2YmI4ZWQ0MWVlNzIwMzc3M2NkZDk5MDhjYWZmOWUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9jb2NvYS9XZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2UuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9XZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2Uu
aApAQCAtNDAsMjAgKzQwLDggQEAgY2xhc3MgVGltZVJhbmdlczsKIAogY2xhc3MgV2ViUGxheWJh
Y2tTZXNzaW9uSW50ZXJmYWNlIHsKIHB1YmxpYzoKLSAgICBlbnVtIEV4dGVybmFsUGxheWJhY2tU
YXJnZXRUeXBlIHsgVGFyZ2V0VHlwZU5vbmUsIFRhcmdldFR5cGVBaXJQbGF5LCBUYXJnZXRUeXBl
VFZPdXQgfTsKLQogICAgIHZpcnR1YWwgfldlYlBsYXliYWNrU2Vzc2lvbkludGVyZmFjZSgpIHsg
fTsKICAgICB2aXJ0dWFsIHZvaWQgcmVzZXRNZWRpYVN0YXRlKCkgPSAwOwotICAgIHZpcnR1YWwg
dm9pZCBzZXREdXJhdGlvbihkb3VibGUpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgc2V0Q3VycmVu
dFRpbWUoZG91YmxlIGN1cnJlbnRUaW1lLCBkb3VibGUgYW5jaG9yVGltZSkgPSAwOwotICAgIHZp
cnR1YWwgdm9pZCBzZXRCdWZmZXJlZFRpbWUoZG91YmxlKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lk
IHNldFJhdGUoYm9vbCBpc1BsYXlpbmcsIGZsb2F0IHBsYXliYWNrUmF0ZSkgPSAwOwotICAgIHZp
cnR1YWwgdm9pZCBzZXRTZWVrYWJsZVJhbmdlcyhjb25zdCBUaW1lUmFuZ2VzJikgPSAwOwotICAg
IHZpcnR1YWwgdm9pZCBzZXRDYW5QbGF5RmFzdFJldmVyc2UoYm9vbCkgPSAwOwotICAgIHZpcnR1
YWwgdm9pZCBzZXRBdWRpb01lZGlhU2VsZWN0aW9uT3B0aW9ucyhjb25zdCBWZWN0b3I8V1RGOjpT
dHJpbmc+JiBvcHRpb25zLCB1aW50NjRfdCBzZWxlY3RlZEluZGV4KSA9IDA7Ci0gICAgdmlydHVh
bCB2b2lkIHNldExlZ2libGVNZWRpYVNlbGVjdGlvbk9wdGlvbnMoY29uc3QgVmVjdG9yPFdURjo6
U3RyaW5nPiYgb3B0aW9ucywgdWludDY0X3Qgc2VsZWN0ZWRJbmRleCkgPSAwOwotICAgIHZpcnR1
YWwgdm9pZCBzZXRFeHRlcm5hbFBsYXliYWNrKGJvb2wgZW5hYmxlZCwgRXh0ZXJuYWxQbGF5YmFj
a1RhcmdldFR5cGUsIFdURjo6U3RyaW5nIGxvY2FsaXplZERldmljZU5hbWUpID0gMDsKLSAgICB2
aXJ0dWFsIHZvaWQgc2V0V2lyZWxlc3NWaWRlb1BsYXliYWNrRGlzYWJsZWQoYm9vbCkgPSAwOwog
fTsKIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvV2ViUGxh
eWJhY2tTZXNzaW9uTW9kZWwuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1dlYlBs
YXliYWNrU2Vzc2lvbk1vZGVsLmgKaW5kZXggNDdhYWRlNzAwNDgyOGVjYmZhYmEyNTg2NDhkNzBk
NjEzYzAzMmEyNS4uYTI1MGUzYzY1NDJjZjM1ZmViMGQzODczOTNlMDI1ODUyNTgzODJkNyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvV2ViUGxheWJhY2tTZXNzaW9u
TW9kZWwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9XZWJQbGF5YmFja1Nl
c3Npb25Nb2RlbC5oCkBAIC0zNiw5ICszNiwxNCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNs
YXNzIFRpbWVSYW5nZXM7CiAKK2NsYXNzIFdlYlBsYXliYWNrU2Vzc2lvbk1vZGVsQ2xpZW50Owor
CiBjbGFzcyBXZWJQbGF5YmFja1Nlc3Npb25Nb2RlbCB7CiBwdWJsaWM6CiAgICAgdmlydHVhbCB+
V2ViUGxheWJhY2tTZXNzaW9uTW9kZWwoKSB7IH07CisgICAgdmlydHVhbCB2b2lkIGFkZENsaWVu
dChXZWJQbGF5YmFja1Nlc3Npb25Nb2RlbENsaWVudCYpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQg
cmVtb3ZlQ2xpZW50KFdlYlBsYXliYWNrU2Vzc2lvbk1vZGVsQ2xpZW50JikgPSAwOworCiAgICAg
dmlydHVhbCB2b2lkIHBsYXkoKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHBhdXNlKCkgPSAwOwog
ICAgIHZpcnR1YWwgdm9pZCB0b2dnbGVQbGF5U3RhdGUoKSA9IDA7CkBAIC01Miw2ICs1Nyw4IEBA
IHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgc2VsZWN0QXVkaW9NZWRpYU9wdGlvbih1aW50NjRf
dCBpbmRleCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBzZWxlY3RMZWdpYmxlTWVkaWFPcHRpb24o
dWludDY0X3QgaW5kZXgpID0gMDsKIAorICAgIGVudW0gRXh0ZXJuYWxQbGF5YmFja1RhcmdldFR5
cGUgeyBUYXJnZXRUeXBlTm9uZSwgVGFyZ2V0VHlwZUFpclBsYXksIFRhcmdldFR5cGVUVk91dCB9
OworCiAgICAgdmlydHVhbCBkb3VibGUgZHVyYXRpb24oKSBjb25zdCA9IDA7CiAgICAgdmlydHVh
bCBkb3VibGUgY3VycmVudFRpbWUoKSBjb25zdCA9IDA7CiAgICAgdmlydHVhbCBkb3VibGUgYnVm
ZmVyZWRUaW1lKCkgY29uc3QgPSAwOwpAQCAtNTksMTQgKzY2LDMxIEBAIHB1YmxpYzoKICAgICB2
aXJ0dWFsIGZsb2F0IHBsYXliYWNrUmF0ZSgpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIFJlZjxU
aW1lUmFuZ2VzPiBzZWVrYWJsZVJhbmdlcygpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIGJvb2wg
Y2FuUGxheUZhc3RSZXZlcnNlKCkgY29uc3QgPSAwOwotICAgIHZpcnR1YWwgVmVjdG9yPFdURjo6
U3RyaW5nPiBhdWRpb01lZGlhU2VsZWN0aW9uT3B0aW9ucygpIGNvbnN0ID0gMDsKKyAgICB2aXJ0
dWFsIFZlY3RvcjxTdHJpbmc+IGF1ZGlvTWVkaWFTZWxlY3Rpb25PcHRpb25zKCkgY29uc3QgPSAw
OwogICAgIHZpcnR1YWwgdWludDY0X3QgYXVkaW9NZWRpYVNlbGVjdGVkSW5kZXgoKSBjb25zdCA9
IDA7Ci0gICAgdmlydHVhbCBWZWN0b3I8V1RGOjpTdHJpbmc+IGxlZ2libGVNZWRpYVNlbGVjdGlv
bk9wdGlvbnMoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBWZWN0b3I8U3RyaW5nPiBsZWdpYmxl
TWVkaWFTZWxlY3Rpb25PcHRpb25zKCkgY29uc3QgPSAwOwogICAgIHZpcnR1YWwgdWludDY0X3Qg
bGVnaWJsZU1lZGlhU2VsZWN0ZWRJbmRleCgpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIGJvb2wg
ZXh0ZXJuYWxQbGF5YmFja0VuYWJsZWQoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBFeHRlcm5h
bFBsYXliYWNrVGFyZ2V0VHlwZSBleHRlcm5hbFBsYXliYWNrVGFyZ2V0VHlwZSgpIGNvbnN0ID0g
MDsKKyAgICB2aXJ0dWFsIFN0cmluZyBleHRlcm5hbFBsYXliYWNrTG9jYWxpemVkRGV2aWNlTmFt
ZSgpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIGJvb2wgd2lyZWxlc3NWaWRlb1BsYXliYWNrRGlz
YWJsZWQoKSBjb25zdCA9IDA7CiB9OwogCitjbGFzcyBXZWJQbGF5YmFja1Nlc3Npb25Nb2RlbENs
aWVudCB7CitwdWJsaWM6CisgICAgdmlydHVhbCB+V2ViUGxheWJhY2tTZXNzaW9uTW9kZWxDbGll
bnQoKSB7IH07CisgICAgdmlydHVhbCB2b2lkIGR1cmF0aW9uQ2hhbmdlZChkb3VibGUpIHsgfQor
ICAgIHZpcnR1YWwgdm9pZCBjdXJyZW50VGltZUNoYW5nZWQoZG91YmxlIC8qIGN1cnJlbnRUaW1l
ICovLCBkb3VibGUgLyogYW5jaG9yVGltZSAqLykgeyB9CisgICAgdmlydHVhbCB2b2lkIGJ1ZmZl
cmVkVGltZUNoYW5nZWQoZG91YmxlKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgcmF0ZUNoYW5nZWQo
Ym9vbCAvKiBpc1BsYXlpbmcgKi8sIGZsb2F0IC8qIHBsYXliYWNrUmF0ZSAqLykgeyB9CisgICAg
dmlydHVhbCB2b2lkIHNlZWthYmxlUmFuZ2VzQ2hhbmdlZChjb25zdCBUaW1lUmFuZ2VzJikgeyB9
CisgICAgdmlydHVhbCB2b2lkIGNhblBsYXlGYXN0UmV2ZXJzZUNoYW5nZWQoYm9vbCkgeyB9Cisg
ICAgdmlydHVhbCB2b2lkIGF1ZGlvTWVkaWFTZWxlY3Rpb25PcHRpb25zQ2hhbmdlZChjb25zdCBW
ZWN0b3I8U3RyaW5nPiYgLyogb3B0aW9ucyAqLywgdWludDY0X3QgLyogc2VsZWN0ZWRJbmRleCAq
LykgeyB9CisgICAgdmlydHVhbCB2b2lkIGxlZ2libGVNZWRpYVNlbGVjdGlvbk9wdGlvbnNDaGFu
Z2VkKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiAvKiBvcHRpb25zICovLCB1aW50NjRfdCAvKiBzZWxl
Y3RlZEluZGV4ICovKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgZXh0ZXJuYWxQbGF5YmFja0NoYW5n
ZWQoYm9vbCAvKiBlbmFibGVkICovLCBXZWJQbGF5YmFja1Nlc3Npb25Nb2RlbDo6RXh0ZXJuYWxQ
bGF5YmFja1RhcmdldFR5cGUsIGNvbnN0IFN0cmluZyYgLyogbG9jYWxpemVkRGV2aWNlTmFtZSAq
LykgeyB9CisgICAgdmlydHVhbCB2b2lkIHdpcmVsZXNzVmlkZW9QbGF5YmFja0Rpc2FibGVkQ2hh
bmdlZChib29sKSB7IH0KK307CisKIH0KIAogI2VuZGlmIC8vIFBMQVRGT1JNKElPUykgfHwgKFBM
QVRGT1JNKE1BQykgJiYgRU5BQkxFKFZJREVPX1BSRVNFTlRBVElPTl9NT0RFKSkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1dlYlBsYXliYWNrU2Vzc2lvbk1vZGVs
TWVkaWFFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9XZWJQbGF5YmFj
a1Nlc3Npb25Nb2RlbE1lZGlhRWxlbWVudC5oCmluZGV4IGI4NTQyNzM5NmY1YjYxZTBjMTgyZjQw
ODcyYjIxYmU2YjMyMWMxN2YuLmI4Y2UxNTA2YzFhNTdlMWZkMjA0YzU2NzVmMzExYTc3YTFhNjgz
NDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1dlYlBsYXliYWNr
U2Vzc2lvbk1vZGVsTWVkaWFFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Y29jb2EvV2ViUGxheWJhY2tTZXNzaW9uTW9kZWxNZWRpYUVsZW1lbnQuaApAQCAtMzAsNiArMzAs
NyBAQAogI2luY2x1ZGUgIkV2ZW50TGlzdGVuZXIuaCIKICNpbmNsdWRlICJIVE1MTWVkaWFFbGVt
ZW50RW51bXMuaCIKICNpbmNsdWRlICJXZWJQbGF5YmFja1Nlc3Npb25Nb2RlbC5oIgorI2luY2x1
ZGUgPHd0Zi9IYXNoU2V0Lmg+CiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0
Zi9WZWN0b3IuaD4KIApAQCAtNDYsNyArNDcsNiBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBh
ZG9wdFJlZigqbmV3IFdlYlBsYXliYWNrU2Vzc2lvbk1vZGVsTWVkaWFFbGVtZW50KCkpOwogICAg
IH0KICAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIH5XZWJQbGF5YmFja1Nlc3Npb25Nb2RlbE1l
ZGlhRWxlbWVudCgpOwotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0V2ViUGxheWJhY2tTZXNz
aW9uSW50ZXJmYWNlKFdlYlBsYXliYWNrU2Vzc2lvbkludGVyZmFjZSopOwogICAgIFdFQkNPUkVf
RVhQT1JUIHZvaWQgc2V0TWVkaWFFbGVtZW50KEhUTUxNZWRpYUVsZW1lbnQqKTsKICAgICBXRUJD
T1JFX0VYUE9SVCBIVE1MTWVkaWFFbGVtZW50KiBtZWRpYUVsZW1lbnQoKSBjb25zdCB7IHJldHVy
biBtX21lZGlhRWxlbWVudC5nZXQoKTsgfQogCkBAIC01NCw2ICs1NCw4IEBAIHB1YmxpYzoKICAg
ICB2b2lkIHVwZGF0ZUZvckV2ZW50TmFtZShjb25zdCBXVEY6OkF0b21pY1N0cmluZyYpOwogICAg
IGJvb2wgb3BlcmF0b3I9PShjb25zdCBFdmVudExpc3RlbmVyJiByaHMpIGNvbnN0IGZpbmFsIHsg
cmV0dXJuIHN0YXRpY19jYXN0PGNvbnN0IFdlYkNvcmU6OkV2ZW50TGlzdGVuZXIqPih0aGlzKSA9
PSAmcmhzOyB9CiAKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGFkZENsaWVudChXZWJQbGF5YmFj
a1Nlc3Npb25Nb2RlbENsaWVudCYpOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgcmVtb3ZlQ2xp
ZW50KFdlYlBsYXliYWNrU2Vzc2lvbk1vZGVsQ2xpZW50Jik7CiAgICAgV0VCQ09SRV9FWFBPUlQg
dm9pZCBwbGF5KCkgZmluYWw7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBwYXVzZSgpIGZpbmFs
OwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgdG9nZ2xlUGxheVN0YXRlKCkgZmluYWw7CkBAIC03
OSw2ICs4MSw4IEBAIHB1YmxpYzoKICAgICBWZWN0b3I8V1RGOjpTdHJpbmc+IGxlZ2libGVNZWRp
YVNlbGVjdGlvbk9wdGlvbnMoKSBjb25zdCBmaW5hbDsKICAgICB1aW50NjRfdCBsZWdpYmxlTWVk
aWFTZWxlY3RlZEluZGV4KCkgY29uc3QgZmluYWw7CiAgICAgYm9vbCBleHRlcm5hbFBsYXliYWNr
RW5hYmxlZCgpIGNvbnN0IGZpbmFsOworICAgIEV4dGVybmFsUGxheWJhY2tUYXJnZXRUeXBlIGV4
dGVybmFsUGxheWJhY2tUYXJnZXRUeXBlKCkgY29uc3QgZmluYWw7CisgICAgU3RyaW5nIGV4dGVy
bmFsUGxheWJhY2tMb2NhbGl6ZWREZXZpY2VOYW1lKCkgY29uc3QgZmluYWw7CiAgICAgYm9vbCB3
aXJlbGVzc1ZpZGVvUGxheWJhY2tEaXNhYmxlZCgpIGNvbnN0IGZpbmFsOwogCiBwcm90ZWN0ZWQ6
CkBAIC05MCw3ICs5NCw3IEBAIHByaXZhdGU6CiAKICAgICBSZWZQdHI8SFRNTE1lZGlhRWxlbWVu
dD4gbV9tZWRpYUVsZW1lbnQ7CiAgICAgYm9vbCBtX2lzTGlzdGVuaW5nIHsgZmFsc2UgfTsKLSAg
ICBXZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2UqIG1fcGxheWJhY2tTZXNzaW9uSW50ZXJmYWNl
IHsgbnVsbHB0ciB9OworICAgIEhhc2hTZXQ8V2ViUGxheWJhY2tTZXNzaW9uTW9kZWxDbGllbnQq
PiBtX2NsaWVudHM7CiAgICAgVmVjdG9yPFJlZlB0cjxUZXh0VHJhY2s+PiBtX2xlZ2libGVUcmFj
a3NGb3JNZW51OwogICAgIFZlY3RvcjxSZWZQdHI8QXVkaW9UcmFjaz4+IG1fYXVkaW9UcmFja3NG
b3JNZW51OwogICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2Ev
V2ViUGxheWJhY2tTZXNzaW9uTW9kZWxNZWRpYUVsZW1lbnQubW0gYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9jb2NvYS9XZWJQbGF5YmFja1Nlc3Npb25Nb2RlbE1lZGlhRWxlbWVudC5tbQppbmRl
eCBkYjA5NzA5NDI4YmUzYTg4ZDM4NWFiODBmOTI1Mjk3MzI0NzI2OTk2Li4zOTE3M2ExMzAyNDJl
NWQ0OGIyYzUyYjVhYjEzMTFmODY0ZThlY2Q5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9jb2NvYS9XZWJQbGF5YmFja1Nlc3Npb25Nb2RlbE1lZGlhRWxlbWVudC5tbQorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9XZWJQbGF5YmFja1Nlc3Npb25Nb2RlbE1l
ZGlhRWxlbWVudC5tbQpAQCAtNTYsMzUgKzU2LDExIEBAIFdlYlBsYXliYWNrU2Vzc2lvbk1vZGVs
TWVkaWFFbGVtZW50Ojp+V2ViUGxheWJhY2tTZXNzaW9uTW9kZWxNZWRpYUVsZW1lbnQoKQogewog
fQogCi12b2lkIFdlYlBsYXliYWNrU2Vzc2lvbk1vZGVsTWVkaWFFbGVtZW50OjpzZXRXZWJQbGF5
YmFja1Nlc3Npb25JbnRlcmZhY2UoV2ViUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlKiBpbnRlcmZh
Y2UpCi17Ci0gICAgaWYgKGludGVyZmFjZSA9PSBtX3BsYXliYWNrU2Vzc2lvbkludGVyZmFjZSkK
LSAgICAgICAgcmV0dXJuOwotCi0gICAgbV9wbGF5YmFja1Nlc3Npb25JbnRlcmZhY2UgPSBpbnRl
cmZhY2U7Ci0KLSAgICBpZiAoIW1fcGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlKQotICAgICAgICBy
ZXR1cm47Ci0KLSAgICBtX3BsYXliYWNrU2Vzc2lvbkludGVyZmFjZS0+cmVzZXRNZWRpYVN0YXRl
KCk7Ci0gICAgbV9wbGF5YmFja1Nlc3Npb25JbnRlcmZhY2UtPnNldER1cmF0aW9uKGR1cmF0aW9u
KCkpOwotICAgIG1fcGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlLT5zZXRDdXJyZW50VGltZShjdXJy
ZW50VGltZSgpLCBbW05TUHJvY2Vzc0luZm8gcHJvY2Vzc0luZm9dIHN5c3RlbVVwdGltZV0pOwot
ICAgIG1fcGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlLT5zZXRCdWZmZXJlZFRpbWUoYnVmZmVyZWRU
aW1lKCkpOwotICAgIG1fcGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlLT5zZXRSYXRlKGlzUGxheWlu
ZygpLCBwbGF5YmFja1JhdGUoKSk7Ci0gICAgbV9wbGF5YmFja1Nlc3Npb25JbnRlcmZhY2UtPnNl
dFNlZWthYmxlUmFuZ2VzKHNlZWthYmxlUmFuZ2VzKCkpOwotICAgIG1fcGxheWJhY2tTZXNzaW9u
SW50ZXJmYWNlLT5zZXRDYW5QbGF5RmFzdFJldmVyc2UoY2FuUGxheUZhc3RSZXZlcnNlKCkpOwot
ICAgIG1fcGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlLT5zZXRXaXJlbGVzc1ZpZGVvUGxheWJhY2tE
aXNhYmxlZCh3aXJlbGVzc1ZpZGVvUGxheWJhY2tEaXNhYmxlZCgpKTsKLSAgICB1cGRhdGVMZWdp
YmxlT3B0aW9ucygpOwotfQotCiB2b2lkIFdlYlBsYXliYWNrU2Vzc2lvbk1vZGVsTWVkaWFFbGVt
ZW50OjpzZXRNZWRpYUVsZW1lbnQoSFRNTE1lZGlhRWxlbWVudCogbWVkaWFFbGVtZW50KQogewog
ICAgIGlmIChtX21lZGlhRWxlbWVudCA9PSBtZWRpYUVsZW1lbnQpCiAgICAgICAgIHJldHVybjsK
IAotICAgIGlmIChtX3BsYXliYWNrU2Vzc2lvbkludGVyZmFjZSkKLSAgICAgICAgbV9wbGF5YmFj
a1Nlc3Npb25JbnRlcmZhY2UtPnJlc2V0TWVkaWFTdGF0ZSgpOwotCiAgICAgaWYgKG1fbWVkaWFF
bGVtZW50ICYmIG1faXNMaXN0ZW5pbmcpIHsKICAgICAgICAgZm9yIChhdXRvJiBldmVudE5hbWUg
OiBvYnNlcnZlZEV2ZW50TmFtZXMoKSkKICAgICAgICAgICAgIG1fbWVkaWFFbGVtZW50LT5yZW1v
dmVFdmVudExpc3RlbmVyKGV2ZW50TmFtZSwgKnRoaXMsIGZhbHNlKTsKQEAgLTkzLDE3ICs2OSwx
MyBAQCB2b2lkIFdlYlBsYXliYWNrU2Vzc2lvbk1vZGVsTWVkaWFFbGVtZW50OjpzZXRNZWRpYUVs
ZW1lbnQoSFRNTE1lZGlhRWxlbWVudCogbWVkaQogCiAgICAgbV9tZWRpYUVsZW1lbnQgPSBtZWRp
YUVsZW1lbnQ7CiAKLSAgICBpZiAoIW1fbWVkaWFFbGVtZW50KQotICAgICAgICByZXR1cm47Ci0K
LSAgICBmb3IgKGF1dG8mIGV2ZW50TmFtZSA6IG9ic2VydmVkRXZlbnROYW1lcygpKQotICAgICAg
ICBtX21lZGlhRWxlbWVudC0+YWRkRXZlbnRMaXN0ZW5lcihldmVudE5hbWUsICp0aGlzLCBmYWxz
ZSk7Ci0gICAgbV9pc0xpc3RlbmluZyA9IHRydWU7CisgICAgaWYgKG1fbWVkaWFFbGVtZW50KSB7
CisgICAgICAgIGZvciAoYXV0byYgZXZlbnROYW1lIDogb2JzZXJ2ZWRFdmVudE5hbWVzKCkpCisg
ICAgICAgICAgICBtX21lZGlhRWxlbWVudC0+YWRkRXZlbnRMaXN0ZW5lcihldmVudE5hbWUsICp0
aGlzLCBmYWxzZSk7CisgICAgICAgIG1faXNMaXN0ZW5pbmcgPSB0cnVlOworICAgIH0KIAogICAg
IHVwZGF0ZUZvckV2ZW50TmFtZShldmVudE5hbWVBbGwoKSk7Ci0KLSAgICBpZiAobV9wbGF5YmFj
a1Nlc3Npb25JbnRlcmZhY2UpCi0gICAgICAgIG1fcGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlLT5z
ZXRXaXJlbGVzc1ZpZGVvUGxheWJhY2tEaXNhYmxlZChtX21lZGlhRWxlbWVudC0+bWVkaWFTZXNz
aW9uKCkud2lyZWxlc3NWaWRlb1BsYXliYWNrRGlzYWJsZWQoKm1fbWVkaWFFbGVtZW50KSk7CiB9
CiAKIHZvaWQgV2ViUGxheWJhY2tTZXNzaW9uTW9kZWxNZWRpYUVsZW1lbnQ6OmhhbmRsZUV2ZW50
KFdlYkNvcmU6OlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBXZWJDb3JlOjpFdmVudCogZXZlbnQp
CkBAIC0xMTMsMzEgKzg1LDQ2IEBAIHZvaWQgV2ViUGxheWJhY2tTZXNzaW9uTW9kZWxNZWRpYUVs
ZW1lbnQ6OmhhbmRsZUV2ZW50KFdlYkNvcmU6OlNjcmlwdEV4ZWN1dGlvbkNvCiAKIHZvaWQgV2Vi
UGxheWJhY2tTZXNzaW9uTW9kZWxNZWRpYUVsZW1lbnQ6OnVwZGF0ZUZvckV2ZW50TmFtZShjb25z
dCBXVEY6OkF0b21pY1N0cmluZyYgZXZlbnROYW1lKQogewotICAgIGlmICghbV9tZWRpYUVsZW1l
bnQgfHwgIW1fcGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlKQorICAgIGlmIChtX2NsaWVudHMuaXNF
bXB0eSgpKQogICAgICAgICByZXR1cm47CiAKICAgICBib29sIGFsbCA9IGV2ZW50TmFtZSA9PSBl
dmVudE5hbWVBbGwoKTsKIAogICAgIGlmIChhbGwKICAgICAgICAgfHwgZXZlbnROYW1lID09IGV2
ZW50TmFtZXMoKS5kdXJhdGlvbmNoYW5nZUV2ZW50KSB7Ci0gICAgICAgIG1fcGxheWJhY2tTZXNz
aW9uSW50ZXJmYWNlLT5zZXREdXJhdGlvbihtX21lZGlhRWxlbWVudC0+ZHVyYXRpb24oKSk7Cisg
ICAgICAgIGRvdWJsZSBkdXJhdGlvbiA9IHRoaXMtPmR1cmF0aW9uKCk7CisgICAgICAgIGZvciAo
YXV0byogY2xpZW50IDogbV9jbGllbnRzKQorICAgICAgICAgICAgY2xpZW50LT5kdXJhdGlvbkNo
YW5nZWQoZHVyYXRpb24pOwogICAgICAgICAvLyBUaGVzZSBpcyBubyBzdGFuZGFyZCBldmVudCBm
b3IgbWluRmFzdFJldmVyc2VSYXRlQ2hhbmdlOyBkdXJhdGlvbiBjaGFuZ2UgaXMgYSByZWFzb25h
YmxlIHByb3h5IGZvciBpdC4KICAgICAgICAgLy8gSXQgaGFwcGVucyBldmVyeSB0aW1lIGEgbmV3
IGl0ZW0gYmVjb21lcyByZWFkeSB0byBwbGF5LgotICAgICAgICBtX3BsYXliYWNrU2Vzc2lvbklu
dGVyZmFjZS0+c2V0Q2FuUGxheUZhc3RSZXZlcnNlKG1fbWVkaWFFbGVtZW50LT5taW5GYXN0UmV2
ZXJzZVJhdGUoKSA8IDAuMCk7CisgICAgICAgIGJvb2wgY2FuUGxheUZhc3RSZXZlcnNlID0gdGhp
cy0+Y2FuUGxheUZhc3RSZXZlcnNlKCk7CisgICAgICAgIGZvciAoYXV0byogY2xpZW50IDogbV9j
bGllbnRzKQorICAgICAgICAgICAgY2xpZW50LT5jYW5QbGF5RmFzdFJldmVyc2VDaGFuZ2VkKGNh
blBsYXlGYXN0UmV2ZXJzZSk7CiAgICAgfQogCiAgICAgaWYgKGFsbAogICAgICAgICB8fCBldmVu
dE5hbWUgPT0gZXZlbnROYW1lcygpLnBhdXNlRXZlbnQKICAgICAgICAgfHwgZXZlbnROYW1lID09
IGV2ZW50TmFtZXMoKS5wbGF5RXZlbnQKLSAgICAgICAgfHwgZXZlbnROYW1lID09IGV2ZW50TmFt
ZXMoKS5yYXRlY2hhbmdlRXZlbnQpCi0gICAgICAgIG1fcGxheWJhY2tTZXNzaW9uSW50ZXJmYWNl
LT5zZXRSYXRlKCFtX21lZGlhRWxlbWVudC0+cGF1c2VkKCksIG1fbWVkaWFFbGVtZW50LT5wbGF5
YmFja1JhdGUoKSk7CisgICAgICAgIHx8IGV2ZW50TmFtZSA9PSBldmVudE5hbWVzKCkucmF0ZWNo
YW5nZUV2ZW50KSB7CisgICAgICAgIGJvb2wgaXNQbGF5aW5nID0gdGhpcy0+aXNQbGF5aW5nKCk7
CisgICAgICAgIGZsb2F0IHBsYXliYWNrUmF0ZSA9IHRoaXMtPnBsYXliYWNrUmF0ZSgpOworICAg
ICAgICBmb3IgKGF1dG8qIGNsaWVudCA6IG1fY2xpZW50cykKKyAgICAgICAgICAgIGNsaWVudC0+
cmF0ZUNoYW5nZWQoaXNQbGF5aW5nLCBwbGF5YmFja1JhdGUpOworICAgIH0KIAogICAgIGlmIChh
bGwKICAgICAgICAgfHwgZXZlbnROYW1lID09IGV2ZW50TmFtZXMoKS50aW1ldXBkYXRlRXZlbnQp
IHsKLSAgICAgICAgbV9wbGF5YmFja1Nlc3Npb25JbnRlcmZhY2UtPnNldEN1cnJlbnRUaW1lKG1f
bWVkaWFFbGVtZW50LT5jdXJyZW50VGltZSgpLCBbW05TUHJvY2Vzc0luZm8gcHJvY2Vzc0luZm9d
IHN5c3RlbVVwdGltZV0pOwotICAgICAgICBtX3BsYXliYWNrU2Vzc2lvbkludGVyZmFjZS0+c2V0
QnVmZmVyZWRUaW1lKG1fbWVkaWFFbGVtZW50LT5tYXhCdWZmZXJlZFRpbWUoKSk7Ci0gICAgICAg
IC8vIEZJWE1FOiAxMzA3ODggLSBmaW5kIGEgYmV0dGVyIGV2ZW50IHRvIHVwZGF0ZSBzZWVrYWJs
ZSByYW5nZXMgZnJvbS4KLSAgICAgICAgbV9wbGF5YmFja1Nlc3Npb25JbnRlcmZhY2UtPnNldFNl
ZWthYmxlUmFuZ2VzKG1fbWVkaWFFbGVtZW50LT5zZWVrYWJsZSgpKTsKKyAgICAgICAgYXV0byBj
dXJyZW50VGltZSA9IHRoaXMtPmN1cnJlbnRUaW1lKCk7CisgICAgICAgIGF1dG8gYW5jaG9yVGlt
ZSA9IFtbTlNQcm9jZXNzSW5mbyBwcm9jZXNzSW5mb10gc3lzdGVtVXB0aW1lXTsKKyAgICAgICAg
YXV0byBidWZmZXJlZFRpbWUgPSB0aGlzLT5idWZmZXJlZFRpbWUoKTsKKyAgICAgICAgYXV0byBz
ZWVrYWJsZVJhbmdlcyA9IHRoaXMtPnNlZWthYmxlUmFuZ2VzKCk7CisKKyAgICAgICAgZm9yIChh
dXRvKiBjbGllbnQgOiBtX2NsaWVudHMpIHsKKyAgICAgICAgICAgIGNsaWVudC0+Y3VycmVudFRp
bWVDaGFuZ2VkKGN1cnJlbnRUaW1lLCBhbmNob3JUaW1lKTsKKyAgICAgICAgICAgIGNsaWVudC0+
YnVmZmVyZWRUaW1lQ2hhbmdlZChidWZmZXJlZFRpbWUpOworICAgICAgICAgICAgLy8gRklYTUU6
IDEzMDc4OCAtIGZpbmQgYSBiZXR0ZXIgZXZlbnQgdG8gdXBkYXRlIHNlZWthYmxlIHJhbmdlcyBm
cm9tLgorICAgICAgICAgICAgY2xpZW50LT5zZWVrYWJsZVJhbmdlc0NoYW5nZWQoc2Vla2FibGVS
YW5nZXMpOworICAgICAgICB9CiAgICAgfQogCiAgICAgaWYgKGFsbApAQCAtMTQ3LDIyICsxMzQs
MjkgQEAgdm9pZCBXZWJQbGF5YmFja1Nlc3Npb25Nb2RlbE1lZGlhRWxlbWVudDo6dXBkYXRlRm9y
RXZlbnROYW1lKGNvbnN0IFdURjo6QXRvbWljU3QKIAogICAgIGlmIChhbGwKICAgICAgICAgfHwg
ZXZlbnROYW1lID09IGV2ZW50TmFtZXMoKS53ZWJraXRjdXJyZW50cGxheWJhY2t0YXJnZXRpc3dp
cmVsZXNzY2hhbmdlZEV2ZW50KSB7Ci0gICAgICAgIGJvb2wgZW5hYmxlZCA9IG1fbWVkaWFFbGVt
ZW50LT53ZWJraXRDdXJyZW50UGxheWJhY2tUYXJnZXRJc1dpcmVsZXNzKCk7Ci0gICAgICAgIFdl
YlBsYXliYWNrU2Vzc2lvbkludGVyZmFjZTo6RXh0ZXJuYWxQbGF5YmFja1RhcmdldFR5cGUgdGFy
Z2V0VHlwZSA9IFdlYlBsYXliYWNrU2Vzc2lvbkludGVyZmFjZTo6VGFyZ2V0VHlwZU5vbmU7Ci0g
ICAgICAgIFN0cmluZyBsb2NhbGl6ZWREZXZpY2VOYW1lOwotCi0gICAgICAgIGlmIChtX21lZGlh
RWxlbWVudC0+bWVkaWFDb250cm9sc0hvc3QoKSkgewotICAgICAgICAgICAgYXV0byB0eXBlID0g
bV9tZWRpYUVsZW1lbnQtPm1lZGlhQ29udHJvbHNIb3N0KCktPmV4dGVybmFsRGV2aWNlVHlwZSgp
OwotICAgICAgICAgICAgaWYgKHR5cGUgPT0gTWVkaWFDb250cm9sc0hvc3Q6OkRldmljZVR5cGU6
OkFpcnBsYXkpCi0gICAgICAgICAgICAgICAgdGFyZ2V0VHlwZSA9IFdlYlBsYXliYWNrU2Vzc2lv
bkludGVyZmFjZTo6VGFyZ2V0VHlwZUFpclBsYXk7Ci0gICAgICAgICAgICBlbHNlIGlmICh0eXBl
ID09IE1lZGlhQ29udHJvbHNIb3N0OjpEZXZpY2VUeXBlOjpUdm91dCkKLSAgICAgICAgICAgICAg
ICB0YXJnZXRUeXBlID0gV2ViUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlOjpUYXJnZXRUeXBlVFZP
dXQ7Ci0gICAgICAgICAgICBsb2NhbGl6ZWREZXZpY2VOYW1lID0gbV9tZWRpYUVsZW1lbnQtPm1l
ZGlhQ29udHJvbHNIb3N0KCktPmV4dGVybmFsRGV2aWNlRGlzcGxheU5hbWUoKTsKKyAgICAgICAg
Ym9vbCBlbmFibGVkID0gZXh0ZXJuYWxQbGF5YmFja0VuYWJsZWQoKTsKKyAgICAgICAgRXh0ZXJu
YWxQbGF5YmFja1RhcmdldFR5cGUgdGFyZ2V0VHlwZSA9IGV4dGVybmFsUGxheWJhY2tUYXJnZXRU
eXBlKCk7CisgICAgICAgIFN0cmluZyBsb2NhbGl6ZWREZXZpY2VOYW1lID0gZXh0ZXJuYWxQbGF5
YmFja0xvY2FsaXplZERldmljZU5hbWUoKTsKKworICAgICAgICBib29sIHdpcmVsZXNzVmlkZW9Q
bGF5YmFja0Rpc2FibGVkID0gdGhpcy0+d2lyZWxlc3NWaWRlb1BsYXliYWNrRGlzYWJsZWQoKTsK
KworICAgICAgICBmb3IgKGF1dG8qIGNsaWVudCA6IG1fY2xpZW50cykgeworICAgICAgICAgICAg
Y2xpZW50LT5leHRlcm5hbFBsYXliYWNrQ2hhbmdlZChlbmFibGVkLCB0YXJnZXRUeXBlLCBsb2Nh
bGl6ZWREZXZpY2VOYW1lKTsKKyAgICAgICAgICAgIGNsaWVudC0+d2lyZWxlc3NWaWRlb1BsYXli
YWNrRGlzYWJsZWRDaGFuZ2VkKHdpcmVsZXNzVmlkZW9QbGF5YmFja0Rpc2FibGVkKTsKICAgICAg
ICAgfQotICAgICAgICBtX3BsYXliYWNrU2Vzc2lvbkludGVyZmFjZS0+c2V0RXh0ZXJuYWxQbGF5
YmFjayhlbmFibGVkLCB0YXJnZXRUeXBlLCBsb2NhbGl6ZWREZXZpY2VOYW1lKTsKLSAgICAgICAg
bV9wbGF5YmFja1Nlc3Npb25JbnRlcmZhY2UtPnNldFdpcmVsZXNzVmlkZW9QbGF5YmFja0Rpc2Fi
bGVkKG1fbWVkaWFFbGVtZW50LT5tZWRpYVNlc3Npb24oKS53aXJlbGVzc1ZpZGVvUGxheWJhY2tE
aXNhYmxlZCgqbV9tZWRpYUVsZW1lbnQpKTsKICAgICB9CiB9Cit2b2lkIFdlYlBsYXliYWNrU2Vz
c2lvbk1vZGVsTWVkaWFFbGVtZW50OjphZGRDbGllbnQoV2ViUGxheWJhY2tTZXNzaW9uTW9kZWxD
bGllbnQmIGNsaWVudCkKK3sKKyAgICBBU1NFUlQoIW1fY2xpZW50cy5jb250YWlucygmY2xpZW50
KSk7CisgICAgbV9jbGllbnRzLmFkZCgmY2xpZW50KTsKK30KKwordm9pZCBXZWJQbGF5YmFja1Nl
c3Npb25Nb2RlbE1lZGlhRWxlbWVudDo6cmVtb3ZlQ2xpZW50KFdlYlBsYXliYWNrU2Vzc2lvbk1v
ZGVsQ2xpZW50JiBjbGllbnQpCit7CisgICAgQVNTRVJUKG1fY2xpZW50cy5jb250YWlucygmY2xp
ZW50KSk7CisgICAgbV9jbGllbnRzLnJlbW92ZSgmY2xpZW50KTsKK30KIAogdm9pZCBXZWJQbGF5
YmFja1Nlc3Npb25Nb2RlbE1lZGlhRWxlbWVudDo6cGxheSgpCiB7CkBAIC0yNzksMzEgKzI3Mywz
NyBAQCB2b2lkIFdlYlBsYXliYWNrU2Vzc2lvbk1vZGVsTWVkaWFFbGVtZW50Ojp1cGRhdGVMZWdp
YmxlT3B0aW9ucygpCiAgICAgZWxzZQogICAgICAgICBtX2F1ZGlvVHJhY2tzRm9yTWVudS5jbGVh
cigpOwogCi0gICAgbV9wbGF5YmFja1Nlc3Npb25JbnRlcmZhY2UtPnNldEF1ZGlvTWVkaWFTZWxl
Y3Rpb25PcHRpb25zKGF1ZGlvTWVkaWFTZWxlY3Rpb25PcHRpb25zKCksIGF1ZGlvTWVkaWFTZWxl
Y3RlZEluZGV4KCkpOwotICAgIG1fcGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlLT5zZXRMZWdpYmxl
TWVkaWFTZWxlY3Rpb25PcHRpb25zKGxlZ2libGVNZWRpYVNlbGVjdGlvbk9wdGlvbnMoKSwgbGVn
aWJsZU1lZGlhU2VsZWN0ZWRJbmRleCgpKTsKKyAgICBhdXRvIGF1ZGlvT3B0aW9ucyA9IGF1ZGlv
TWVkaWFTZWxlY3Rpb25PcHRpb25zKCk7CisgICAgYXV0byBhdWRpb0luZGV4ID0gYXVkaW9NZWRp
YVNlbGVjdGVkSW5kZXgoKTsKKyAgICBhdXRvIGxlZ2libGVPcHRpb25zID0gbGVnaWJsZU1lZGlh
U2VsZWN0aW9uT3B0aW9ucygpOworICAgIGF1dG8gbGVnaWJsZUluZGV4ID0gbGVnaWJsZU1lZGlh
U2VsZWN0ZWRJbmRleCgpOworCisgICAgZm9yIChhdXRvJiBjbGllbnQgOiBtX2NsaWVudHMpIHsK
KyAgICAgICAgY2xpZW50LT5hdWRpb01lZGlhU2VsZWN0aW9uT3B0aW9uc0NoYW5nZWQoYXVkaW9P
cHRpb25zLCBhdWRpb0luZGV4KTsKKyAgICAgICAgY2xpZW50LT5sZWdpYmxlTWVkaWFTZWxlY3Rp
b25PcHRpb25zQ2hhbmdlZChsZWdpYmxlT3B0aW9ucywgbGVnaWJsZUluZGV4KTsKKyAgICB9CiB9
CiAKLWNvbnN0IFZlY3RvcjxBdG9taWNTdHJpbmc+JiAgV2ViUGxheWJhY2tTZXNzaW9uTW9kZWxN
ZWRpYUVsZW1lbnQ6Om9ic2VydmVkRXZlbnROYW1lcygpCitjb25zdCBWZWN0b3I8QXRvbWljU3Ry
aW5nPiYgV2ViUGxheWJhY2tTZXNzaW9uTW9kZWxNZWRpYUVsZW1lbnQ6Om9ic2VydmVkRXZlbnRO
YW1lcygpCiB7Ci0gICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFZlY3RvcjxBdG9taWNTdHJpbmc+
PiBzRXZlbnROYW1lczsKLQotICAgIGlmICghc0V2ZW50TmFtZXMuZ2V0KCkuc2l6ZSgpKSB7Ci0g
ICAgICAgIHNFdmVudE5hbWVzLmdldCgpLmFwcGVuZChldmVudE5hbWVzKCkuZHVyYXRpb25jaGFu
Z2VFdmVudCk7Ci0gICAgICAgIHNFdmVudE5hbWVzLmdldCgpLmFwcGVuZChldmVudE5hbWVzKCku
cGF1c2VFdmVudCk7Ci0gICAgICAgIHNFdmVudE5hbWVzLmdldCgpLmFwcGVuZChldmVudE5hbWVz
KCkucGxheUV2ZW50KTsKLSAgICAgICAgc0V2ZW50TmFtZXMuZ2V0KCkuYXBwZW5kKGV2ZW50TmFt
ZXMoKS5yYXRlY2hhbmdlRXZlbnQpOwotICAgICAgICBzRXZlbnROYW1lcy5nZXQoKS5hcHBlbmQo
ZXZlbnROYW1lcygpLnRpbWV1cGRhdGVFdmVudCk7Ci0gICAgICAgIHNFdmVudE5hbWVzLmdldCgp
LmFwcGVuZChldmVudE5hbWVzKCkuYWRkdHJhY2tFdmVudCk7Ci0gICAgICAgIHNFdmVudE5hbWVz
LmdldCgpLmFwcGVuZChldmVudE5hbWVzKCkucmVtb3ZldHJhY2tFdmVudCk7Ci0gICAgICAgIHNF
dmVudE5hbWVzLmdldCgpLmFwcGVuZChldmVudE5hbWVzKCkud2Via2l0Y3VycmVudHBsYXliYWNr
dGFyZ2V0aXN3aXJlbGVzc2NoYW5nZWRFdmVudCk7Ci0gICAgfQotICAgIHJldHVybiBzRXZlbnRO
YW1lcy5nZXQoKTsKKyAgICAvLyBGSVhNRSgxNTc0NTIpOiBSZW1vdmUgdGhlIHJpZ2h0LWhhbmQg
Y29uc3RydWN0b3Igbm90YXRpb24gb25jZSBOZXZlckRlc3Ryb3llZCBzdXBwb3J0cyBpbml0aWFs
aXplcl9saXN0cy4KKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8VmVjdG9yPEF0b21pY1N0cmlu
Zz4+IG5hbWVzID0gVmVjdG9yPEF0b21pY1N0cmluZz4oeworICAgICAgICBldmVudE5hbWVzKCku
ZHVyYXRpb25jaGFuZ2VFdmVudCwKKyAgICAgICAgZXZlbnROYW1lcygpLnBhdXNlRXZlbnQsCisg
ICAgICAgIGV2ZW50TmFtZXMoKS5wbGF5RXZlbnQsCisgICAgICAgIGV2ZW50TmFtZXMoKS5yYXRl
Y2hhbmdlRXZlbnQsCisgICAgICAgIGV2ZW50TmFtZXMoKS50aW1ldXBkYXRlRXZlbnQsCisgICAg
ICAgIGV2ZW50TmFtZXMoKS5hZGR0cmFja0V2ZW50LAorICAgICAgICBldmVudE5hbWVzKCkucmVt
b3ZldHJhY2tFdmVudCwKKyAgICAgICAgZXZlbnROYW1lcygpLndlYmtpdGN1cnJlbnRwbGF5YmFj
a3RhcmdldGlzd2lyZWxlc3NjaGFuZ2VkRXZlbnQsCisgICAgfSk7CisgICAgcmV0dXJuIG5hbWVz
LmdldCgpOwogfQogCiBjb25zdCBBdG9taWNTdHJpbmcmICBXZWJQbGF5YmFja1Nlc3Npb25Nb2Rl
bE1lZGlhRWxlbWVudDo6ZXZlbnROYW1lQWxsKCkKIHsKLSAgICBzdGF0aWMgTmV2ZXJEZXN0cm95
ZWQ8QXRvbWljU3RyaW5nPiBzRXZlbnROYW1lQWxsID0gImFsbEV2ZW50cyI7Ci0gICAgcmV0dXJu
IHNFdmVudE5hbWVBbGw7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEF0b21pY1N0cmluZz4g
ZXZlbnROYW1lQWxsKCJhbGxFdmVudHMiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRl
cmFsKTsKKyAgICByZXR1cm4gZXZlbnROYW1lQWxsOwogfQogCiBkb3VibGUgV2ViUGxheWJhY2tT
ZXNzaW9uTW9kZWxNZWRpYUVsZW1lbnQ6OmR1cmF0aW9uKCkgY29uc3QKQEAgLTM0MSw3ICszNDEs
NyBAQCBib29sIFdlYlBsYXliYWNrU2Vzc2lvbk1vZGVsTWVkaWFFbGVtZW50OjpjYW5QbGF5RmFz
dFJldmVyc2UoKSBjb25zdAogICAgIHJldHVybiBtX21lZGlhRWxlbWVudCA/IG1fbWVkaWFFbGVt
ZW50LT5taW5GYXN0UmV2ZXJzZVJhdGUoKSA8IDAuMCA6IGZhbHNlOwogfQogCi1WZWN0b3I8V1RG
OjpTdHJpbmc+IFdlYlBsYXliYWNrU2Vzc2lvbk1vZGVsTWVkaWFFbGVtZW50OjphdWRpb01lZGlh
U2VsZWN0aW9uT3B0aW9ucygpIGNvbnN0CitWZWN0b3I8U3RyaW5nPiBXZWJQbGF5YmFja1Nlc3Np
b25Nb2RlbE1lZGlhRWxlbWVudDo6YXVkaW9NZWRpYVNlbGVjdGlvbk9wdGlvbnMoKSBjb25zdAog
ewogICAgIFZlY3RvcjxTdHJpbmc+IGF1ZGlvVHJhY2tEaXNwbGF5TmFtZXM7CiAKQEAgLTM1MCw4
ICszNTAsOSBAQCBWZWN0b3I8V1RGOjpTdHJpbmc+IFdlYlBsYXliYWNrU2Vzc2lvbk1vZGVsTWVk
aWFFbGVtZW50OjphdWRpb01lZGlhU2VsZWN0aW9uT3B0aQogCiAgICAgYXV0byYgY2FwdGlvblBy
ZWZlcmVuY2VzID0gbV9tZWRpYUVsZW1lbnQtPmRvY3VtZW50KCkucGFnZSgpLT5ncm91cCgpLmNh
cHRpb25QcmVmZXJlbmNlcygpOwogCisgICAgYXVkaW9UcmFja0Rpc3BsYXlOYW1lcy5yZXNlcnZl
SW5pdGlhbENhcGFjaXR5KG1fYXVkaW9UcmFja3NGb3JNZW51LnNpemUoKSk7CiAgICAgZm9yIChh
dXRvJiBhdWRpb1RyYWNrIDogbV9hdWRpb1RyYWNrc0Zvck1lbnUpCi0gICAgICAgIGF1ZGlvVHJh
Y2tEaXNwbGF5TmFtZXMuYXBwZW5kKGNhcHRpb25QcmVmZXJlbmNlcy5kaXNwbGF5TmFtZUZvclRy
YWNrKGF1ZGlvVHJhY2suZ2V0KCkpKTsKKyAgICAgICAgYXVkaW9UcmFja0Rpc3BsYXlOYW1lcy51
bmNoZWNrZWRBcHBlbmQoY2FwdGlvblByZWZlcmVuY2VzLmRpc3BsYXlOYW1lRm9yVHJhY2soYXVk
aW9UcmFjay5nZXQoKSkpOwogCiAgICAgcmV0dXJuIGF1ZGlvVHJhY2tEaXNwbGF5TmFtZXM7CiB9
CkBAIC0zNjIsNyArMzYzLDcgQEAgdWludDY0X3QgV2ViUGxheWJhY2tTZXNzaW9uTW9kZWxNZWRp
YUVsZW1lbnQ6OmF1ZGlvTWVkaWFTZWxlY3RlZEluZGV4KCkgY29uc3QKICAgICAgICAgaWYgKG1f
YXVkaW9UcmFja3NGb3JNZW51W2luZGV4XS0+ZW5hYmxlZCgpKQogICAgICAgICAgICAgcmV0dXJu
IGluZGV4OwogICAgIH0KLSAgICByZXR1cm4gMDsKKyAgICByZXR1cm4gc3RkOjpudW1lcmljX2xp
bWl0czx1aW50NjRfdD46Om1heCgpOwogfQogCiBWZWN0b3I8V1RGOjpTdHJpbmc+IFdlYlBsYXli
YWNrU2Vzc2lvbk1vZGVsTWVkaWFFbGVtZW50OjpsZWdpYmxlTWVkaWFTZWxlY3Rpb25PcHRpb25z
KCkgY29uc3QKQEAgLTM4MiwxNiArMzgzLDE4IEBAIFZlY3RvcjxXVEY6OlN0cmluZz4gV2ViUGxh
eWJhY2tTZXNzaW9uTW9kZWxNZWRpYUVsZW1lbnQ6OmxlZ2libGVNZWRpYVNlbGVjdGlvbk9wCiAK
IHVpbnQ2NF90IFdlYlBsYXliYWNrU2Vzc2lvbk1vZGVsTWVkaWFFbGVtZW50OjpsZWdpYmxlTWVk
aWFTZWxlY3RlZEluZGV4KCkgY29uc3QKIHsKLSAgICB1aW50NjRfdCBzZWxlY3RlZEluZGV4ID0g
MDsKKyAgICB1aW50NjRfdCBzZWxlY3RlZEluZGV4ID0gc3RkOjpudW1lcmljX2xpbWl0czx1aW50
NjRfdD46Om1heCgpOwogICAgIHVpbnQ2NF90IG9mZkluZGV4ID0gMDsKICAgICBib29sIHRyYWNr
TWVudUl0ZW1TZWxlY3RlZCA9IGZhbHNlOwogCiAgICAgaWYgKCFtX21lZGlhRWxlbWVudCB8fCAh
bV9tZWRpYUVsZW1lbnQtPm1lZGlhQ29udHJvbHNIb3N0KCkpCiAgICAgICAgIHJldHVybiBzZWxl
Y3RlZEluZGV4OwogCi0gICAgQXRvbWljU3RyaW5nIGRpc3BsYXlNb2RlID0gbV9tZWRpYUVsZW1l
bnQtPm1lZGlhQ29udHJvbHNIb3N0KCktPmNhcHRpb25EaXNwbGF5TW9kZSgpOwotICAgIFRleHRU
cmFjayogb2ZmSXRlbSA9IG1fbWVkaWFFbGVtZW50LT5tZWRpYUNvbnRyb2xzSG9zdCgpLT5jYXB0
aW9uTWVudU9mZkl0ZW0oKTsKLSAgICBUZXh0VHJhY2sqIGF1dG9tYXRpY0l0ZW0gPSBtX21lZGlh
RWxlbWVudC0+bWVkaWFDb250cm9sc0hvc3QoKS0+Y2FwdGlvbk1lbnVBdXRvbWF0aWNJdGVtKCk7
CisgICAgYXV0byBob3N0ID0gbV9tZWRpYUVsZW1lbnQtPm1lZGlhQ29udHJvbHNIb3N0KCk7CisK
KyAgICBBdG9taWNTdHJpbmcgZGlzcGxheU1vZGUgPSBob3N0LT5jYXB0aW9uRGlzcGxheU1vZGUo
KTsKKyAgICBUZXh0VHJhY2sqIG9mZkl0ZW0gPSBob3N0LT5jYXB0aW9uTWVudU9mZkl0ZW0oKTsK
KyAgICBUZXh0VHJhY2sqIGF1dG9tYXRpY0l0ZW0gPSBob3N0LT5jYXB0aW9uTWVudUF1dG9tYXRp
Y0l0ZW0oKTsKIAogICAgIGZvciAoc2l6ZV90IGluZGV4ID0gMDsgaW5kZXggPCBtX2xlZ2libGVU
cmFja3NGb3JNZW51LnNpemUoKTsgaW5kZXgrKykgewogICAgICAgICBhdXRvJiB0cmFjayA9IG1f
bGVnaWJsZVRyYWNrc0Zvck1lbnVbaW5kZXhdOwpAQCAtNDE3LDEyICs0MjAsMzcgQEAgdWludDY0
X3QgV2ViUGxheWJhY2tTZXNzaW9uTW9kZWxNZWRpYUVsZW1lbnQ6OmxlZ2libGVNZWRpYVNlbGVj
dGVkSW5kZXgoKSBjb25zdAogCiBib29sIFdlYlBsYXliYWNrU2Vzc2lvbk1vZGVsTWVkaWFFbGVt
ZW50OjpleHRlcm5hbFBsYXliYWNrRW5hYmxlZCgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1fbWVk
aWFFbGVtZW50ID8gbV9tZWRpYUVsZW1lbnQtPndlYmtpdEN1cnJlbnRQbGF5YmFja1RhcmdldElz
V2lyZWxlc3MoKSA6IGZhbHNlOworICAgIHJldHVybiBtX21lZGlhRWxlbWVudCAmJiBtX21lZGlh
RWxlbWVudC0+d2Via2l0Q3VycmVudFBsYXliYWNrVGFyZ2V0SXNXaXJlbGVzcygpOworfQorCitX
ZWJQbGF5YmFja1Nlc3Npb25Nb2RlbDo6RXh0ZXJuYWxQbGF5YmFja1RhcmdldFR5cGUgV2ViUGxh
eWJhY2tTZXNzaW9uTW9kZWxNZWRpYUVsZW1lbnQ6OmV4dGVybmFsUGxheWJhY2tUYXJnZXRUeXBl
KCkgY29uc3QKK3sKKyAgICBpZiAoIW1fbWVkaWFFbGVtZW50IHx8ICFtX21lZGlhRWxlbWVudC0+
bWVkaWFDb250cm9sc0hvc3QoKSkKKyAgICAgICAgcmV0dXJuIFRhcmdldFR5cGVOb25lOworCisg
ICAgc3dpdGNoIChtX21lZGlhRWxlbWVudC0+bWVkaWFDb250cm9sc0hvc3QoKS0+ZXh0ZXJuYWxE
ZXZpY2VUeXBlKCkpIHsKKyAgICBkZWZhdWx0OgorICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQo
KTsKKyAgICAgICAgcmV0dXJuIFRhcmdldFR5cGVOb25lOworICAgIGNhc2UgTWVkaWFDb250cm9s
c0hvc3Q6OkRldmljZVR5cGU6Ok5vbmU6CisgICAgICAgIHJldHVybiBUYXJnZXRUeXBlTm9uZTsK
KyAgICBjYXNlIE1lZGlhQ29udHJvbHNIb3N0OjpEZXZpY2VUeXBlOjpBaXJwbGF5OgorICAgICAg
ICByZXR1cm4gVGFyZ2V0VHlwZUFpclBsYXk7CisgICAgY2FzZSBNZWRpYUNvbnRyb2xzSG9zdDo6
RGV2aWNlVHlwZTo6VHZvdXQ6CisgICAgICAgIHJldHVybiBUYXJnZXRUeXBlVFZPdXQ7CisgICAg
fQorfQorCitTdHJpbmcgV2ViUGxheWJhY2tTZXNzaW9uTW9kZWxNZWRpYUVsZW1lbnQ6OmV4dGVy
bmFsUGxheWJhY2tMb2NhbGl6ZWREZXZpY2VOYW1lKCkgY29uc3QKK3sKKyAgICBpZiAobV9tZWRp
YUVsZW1lbnQgJiYgbV9tZWRpYUVsZW1lbnQtPm1lZGlhQ29udHJvbHNIb3N0KCkpCisgICAgICAg
IHJldHVybiBtX21lZGlhRWxlbWVudC0+bWVkaWFDb250cm9sc0hvc3QoKS0+ZXh0ZXJuYWxEZXZp
Y2VEaXNwbGF5TmFtZSgpOworICAgIHJldHVybiBlbXB0eVN0cmluZygpOwogfQogCiBib29sIFdl
YlBsYXliYWNrU2Vzc2lvbk1vZGVsTWVkaWFFbGVtZW50Ojp3aXJlbGVzc1ZpZGVvUGxheWJhY2tE
aXNhYmxlZCgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1fbWVkaWFFbGVtZW50ID8gbV9tZWRpYUVs
ZW1lbnQtPm1lZGlhU2Vzc2lvbigpLndpcmVsZXNzVmlkZW9QbGF5YmFja0Rpc2FibGVkKCptX21l
ZGlhRWxlbWVudCkgOiBmYWxzZTsKKyAgICByZXR1cm4gbV9tZWRpYUVsZW1lbnQgJiYgbV9tZWRp
YUVsZW1lbnQtPm1lZGlhU2Vzc2lvbigpLndpcmVsZXNzVmlkZW9QbGF5YmFja0Rpc2FibGVkKCpt
X21lZGlhRWxlbWVudCk7CiB9CiAKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vY29jb2EvV2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9jb2NvYS9XZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2UuaAppbmRleCBh
OGVmMjk1MGFiOGU3YWFmZTQ0MDQ3NDhiMTYzNzVjY2NmYmYzZTA1Li5kZjdmZTkyMWIzNmQzMzYz
OTA2MzYzMTgyMzRjYTQxZTM2ZjQ2NDVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9jb2NvYS9XZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2UuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9jb2NvYS9XZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2UuaApAQCAtMzYs
MTAgKzM2LDkgQEAgV0VCQ09SRV9FWFBPUlQgYm9vbCBzdXBwb3J0c1BpY3R1cmVJblBpY3R1cmUo
KTsKIAogY2xhc3MgVGltZVJhbmdlczsKIAotY2xhc3MgV2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJm
YWNlIDogcHVibGljIFdlYlBsYXliYWNrU2Vzc2lvbkludGVyZmFjZSB7CitjbGFzcyBXZWJWaWRl
b0Z1bGxzY3JlZW5JbnRlcmZhY2UgewogcHVibGljOgogICAgIHZpcnR1YWwgfldlYlZpZGVvRnVs
bHNjcmVlbkludGVyZmFjZSgpIHsgfTsKLSAgICB2aXJ0dWFsIHZvaWQgc2V0VmlkZW9EaW1lbnNp
b25zKGJvb2wgaGFzVmlkZW8sIGZsb2F0IHdpZHRoLCBmbG9hdCBoZWlnaHQpID0gMDsKIH07CiAK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1dlYlZpZGVvRnVs
bHNjcmVlbk1vZGVsLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9XZWJWaWRlb0Z1
bGxzY3JlZW5Nb2RlbC5oCmluZGV4IDE3MDAyNTJlMzgyYWEwZTRkNGNlM2ExMTZjMWFiMGYyYjE3
NmUxOTkuLjFiMmM3YWYxNTNhNTkwZDhlYjRjNjVjMGYxYjg1NTJmNGE4NDVlMTAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1dlYlZpZGVvRnVsbHNjcmVlbk1vZGVs
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvV2ViVmlkZW9GdWxsc2NyZWVu
TW9kZWwuaApAQCAtMzUsMTUgKzM1LDMwIEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorY2xh
c3MgV2ViVmlkZW9GdWxsc2NyZWVuTW9kZWxDbGllbnQ7CisKIGNsYXNzIFdlYlZpZGVvRnVsbHNj
cmVlbk1vZGVsIHsKIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5XZWJWaWRlb0Z1bGxzY3JlZW5Nb2Rl
bCgpIHsgfTsKKyAgICB2aXJ0dWFsIHZvaWQgYWRkQ2xpZW50KFdlYlZpZGVvRnVsbHNjcmVlbk1v
ZGVsQ2xpZW50JikgPSAwOworICAgIHZpcnR1YWwgdm9pZCByZW1vdmVDbGllbnQoV2ViVmlkZW9G
dWxsc2NyZWVuTW9kZWxDbGllbnQmKT0gMDsKKwogICAgIHZpcnR1YWwgdm9pZCByZXF1ZXN0RnVs
bHNjcmVlbk1vZGUoSFRNTE1lZGlhRWxlbWVudEVudW1zOjpWaWRlb0Z1bGxzY3JlZW5Nb2RlKSA9
IDA7CiAgICAgdmlydHVhbCB2b2lkIHNldFZpZGVvTGF5ZXJGcmFtZShGbG9hdFJlY3QpID0gMDsK
ICAgICBlbnVtIFZpZGVvR3Jhdml0eSB7IFZpZGVvR3Jhdml0eVJlc2l6ZSwgVmlkZW9HcmF2aXR5
UmVzaXplQXNwZWN0LCBWaWRlb0dyYXZpdHlSZXNpemVBc3BlY3RGaWxsIH07CiAgICAgdmlydHVh
bCB2b2lkIHNldFZpZGVvTGF5ZXJHcmF2aXR5KFZpZGVvR3Jhdml0eSkgPSAwOwogICAgIHZpcnR1
YWwgdm9pZCBmdWxsc2NyZWVuTW9kZUNoYW5nZWQoSFRNTE1lZGlhRWxlbWVudEVudW1zOjpWaWRl
b0Z1bGxzY3JlZW5Nb2RlKSA9IDA7CisKICAgICB2aXJ0dWFsIGJvb2wgaXNWaXNpYmxlKCkgY29u
c3QgPSAwOworICAgIHZpcnR1YWwgRmxvYXRTaXplIHZpZGVvRGltZW5zaW9ucygpIGNvbnN0ID0g
MDsKKyAgICB2aXJ0dWFsIGJvb2wgaGFzVmlkZW8oKSBjb25zdCA9IDA7Cit9OworCitjbGFzcyBX
ZWJWaWRlb0Z1bGxzY3JlZW5Nb2RlbENsaWVudCB7CitwdWJsaWM6CisgICAgdmlydHVhbCB+V2Vi
VmlkZW9GdWxsc2NyZWVuTW9kZWxDbGllbnQoKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgaGFzVmlk
ZW9DaGFuZ2VkKGJvb2wpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgdmlkZW9EaW1lbnNpb25zQ2hh
bmdlZChjb25zdCBGbG9hdFNpemUmKSA9IDA7CiB9OwogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9XZWJWaWRlb0Z1bGxzY3JlZW5Nb2RlbFZpZGVvRWxlbWVu
dC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvV2ViVmlkZW9GdWxsc2NyZWVuTW9k
ZWxWaWRlb0VsZW1lbnQuaAppbmRleCBkNWQ3ZGYzMGJlOGZkMTJkZWI0NTljYzFlNDY1ZDdjNDQz
OWU5MDdiLi5mZmM4NzQ5ODZiNDE1YzZmZDA2ZGQ1ZDQyNjUzNDQwOTU2NWU1MDVkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9XZWJWaWRlb0Z1bGxzY3JlZW5Nb2Rl
bFZpZGVvRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1dlYlZp
ZGVvRnVsbHNjcmVlbk1vZGVsVmlkZW9FbGVtZW50LmgKQEAgLTM1LDYgKzM1LDcgQEAKICNpbmNs
dWRlICJQbGF0Zm9ybUxheWVyLmgiCiAjaW5jbHVkZSAiV2ViVmlkZW9GdWxsc2NyZWVuTW9kZWwu
aCIKICNpbmNsdWRlIDxmdW5jdGlvbmFsPgorI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CiAjaW5j
bHVkZSA8d3RmL1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KICNpbmNsdWRl
IDx3dGYvVmVjdG9yLmg+CkBAIC00NCw0NCArNDUsNTAgQEAgY2xhc3MgQXVkaW9UcmFjazsKIGNs
YXNzIEhUTUxWaWRlb0VsZW1lbnQ7CiBjbGFzcyBUZXh0VHJhY2s7CiBjbGFzcyBXZWJQbGF5YmFj
a1Nlc3Npb25Nb2RlbE1lZGlhRWxlbWVudDsKLWNsYXNzIFdlYlZpZGVvRnVsbHNjcmVlbkludGVy
ZmFjZTsKIAogY2xhc3MgV2ViVmlkZW9GdWxsc2NyZWVuTW9kZWxWaWRlb0VsZW1lbnQgOiBwdWJs
aWMgV2ViVmlkZW9GdWxsc2NyZWVuTW9kZWwsIHB1YmxpYyBFdmVudExpc3RlbmVyIHsKIHB1Ymxp
YzoKLSAgICBzdGF0aWMgUmVmUHRyPFdlYlZpZGVvRnVsbHNjcmVlbk1vZGVsVmlkZW9FbGVtZW50
PiBjcmVhdGUoV2ViUGxheWJhY2tTZXNzaW9uTW9kZWxNZWRpYUVsZW1lbnQmIHBsYXliYWNrU2Vz
c2lvbk1vZGVsKQorICAgIHN0YXRpYyBSZWZQdHI8V2ViVmlkZW9GdWxsc2NyZWVuTW9kZWxWaWRl
b0VsZW1lbnQ+IGNyZWF0ZSgpCiAgICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBX
ZWJWaWRlb0Z1bGxzY3JlZW5Nb2RlbFZpZGVvRWxlbWVudChwbGF5YmFja1Nlc3Npb25Nb2RlbCkp
OworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBXZWJWaWRlb0Z1bGxzY3JlZW5Nb2RlbFZp
ZGVvRWxlbWVudCgpKTsKICAgICB9CiAgICAgV0VCQ09SRV9FWFBPUlQgdmlydHVhbCB+V2ViVmlk
ZW9GdWxsc2NyZWVuTW9kZWxWaWRlb0VsZW1lbnQoKTsKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lk
IHNldFdlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZShXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZh
Y2UqKTsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldFZpZGVvRWxlbWVudChIVE1MVmlkZW9F
bGVtZW50Kik7CiAgICAgV0VCQ09SRV9FWFBPUlQgSFRNTFZpZGVvRWxlbWVudCogdmlkZW9FbGVt
ZW50KCkgY29uc3QgeyByZXR1cm4gbV92aWRlb0VsZW1lbnQuZ2V0KCk7IH0KICAgICBXRUJDT1JF
X0VYUE9SVCB2b2lkIHNldFZpZGVvRnVsbHNjcmVlbkxheWVyKFBsYXRmb3JtTGF5ZXIqLCBzdGQ6
OmZ1bmN0aW9uPHZvaWQoKT4gY29tcGxldGlvbkhhbmRsZXIgPSBbXSB7IH0pOwogICAgIFdFQkNP
UkVfRVhQT1JUIHZvaWQgd2FpdEZvclByZXBhcmVkRm9ySW5saW5lVGhlbihzdGQ6OmZ1bmN0aW9u
PHZvaWQoKT4gY29tcGxldGlvbkhhbmRsZXIgPSBbXSB7IH0pOwotICAgIFdlYlBsYXliYWNrU2Vz
c2lvbk1vZGVsTWVkaWFFbGVtZW50JiBwbGF5YmFja1Nlc3Npb25Nb2RlbCgpIHsgcmV0dXJuIG1f
cGxheWJhY2tTZXNzaW9uTW9kZWw7IH0KICAgICAKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGhh
bmRsZUV2ZW50KFdlYkNvcmU6OlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBXZWJDb3JlOjpFdmVu
dCopIG92ZXJyaWRlOwogICAgIHZvaWQgdXBkYXRlRm9yRXZlbnROYW1lKGNvbnN0IFdURjo6QXRv
bWljU3RyaW5nJik7CiAgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IEV2ZW50TGlzdGVuZXImIHJo
cykgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gc3RhdGljX2Nhc3Q8Y29uc3QgV2ViQ29yZTo6RXZl
bnRMaXN0ZW5lcio+KHRoaXMpID09ICZyaHM7IH0KIAorICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQg
YWRkQ2xpZW50KFdlYlZpZGVvRnVsbHNjcmVlbk1vZGVsQ2xpZW50Jikgb3ZlcnJpZGU7CisgICAg
V0VCQ09SRV9FWFBPUlQgdm9pZCByZW1vdmVDbGllbnQoV2ViVmlkZW9GdWxsc2NyZWVuTW9kZWxD
bGllbnQmKSBvdmVycmlkZTsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHJlcXVlc3RGdWxsc2Ny
ZWVuTW9kZShIVE1MTWVkaWFFbGVtZW50RW51bXM6OlZpZGVvRnVsbHNjcmVlbk1vZGUpIG92ZXJy
aWRlOwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0VmlkZW9MYXllckZyYW1lKEZsb2F0UmVj
dCkgb3ZlcnJpZGU7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRWaWRlb0xheWVyR3Jhdml0
eShWaWRlb0dyYXZpdHkpIG92ZXJyaWRlOwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZnVsbHNj
cmVlbk1vZGVDaGFuZ2VkKEhUTUxNZWRpYUVsZW1lbnRFbnVtczo6VmlkZW9GdWxsc2NyZWVuTW9k
ZSkgb3ZlcnJpZGU7CiAgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBpc1Zpc2libGUoKSBjb25zdCBv
dmVycmlkZTsKKyAgICBXRUJDT1JFX0VYUE9SVCBGbG9hdFNpemUgdmlkZW9EaW1lbnNpb25zKCkg
Y29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV92aWRlb0RpbWVuc2lvbnM7IH0KKyAgICBXRUJDT1JF
X0VYUE9SVCBib29sIGhhc1ZpZGVvKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9oYXNWaWRl
bzsgfQorCiAKIHByb3RlY3RlZDoKLSAgICBXRUJDT1JFX0VYUE9SVCBXZWJWaWRlb0Z1bGxzY3Jl
ZW5Nb2RlbFZpZGVvRWxlbWVudChXZWJQbGF5YmFja1Nlc3Npb25Nb2RlbE1lZGlhRWxlbWVudCYp
OworICAgIFdFQkNPUkVfRVhQT1JUIFdlYlZpZGVvRnVsbHNjcmVlbk1vZGVsVmlkZW9FbGVtZW50
KCk7CiAKIHByaXZhdGU6CisgICAgdm9pZCBzZXRIYXNWaWRlbyhib29sKTsKKyAgICB2b2lkIHNl
dFZpZGVvRGltZW5zaW9ucyhjb25zdCBGbG9hdFNpemUmKTsKKwogICAgIHN0YXRpYyBjb25zdCBW
ZWN0b3I8V1RGOjpBdG9taWNTdHJpbmc+JiBvYnNlcnZlZEV2ZW50TmFtZXMoKTsKICAgICBjb25z
dCBXVEY6OkF0b21pY1N0cmluZyYgZXZlbnROYW1lQWxsKCk7CiAKLSAgICBSZWY8V2ViUGxheWJh
Y2tTZXNzaW9uTW9kZWxNZWRpYUVsZW1lbnQ+IG1fcGxheWJhY2tTZXNzaW9uTW9kZWw7CiAgICAg
UmVmUHRyPEhUTUxWaWRlb0VsZW1lbnQ+IG1fdmlkZW9FbGVtZW50OwogICAgIFJldGFpblB0cjxQ
bGF0Zm9ybUxheWVyPiBtX3ZpZGVvRnVsbHNjcmVlbkxheWVyOwogICAgIGJvb2wgbV9pc0xpc3Rl
bmluZyB7IGZhbHNlIH07Ci0gICAgV2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlKiBtX3ZpZGVv
RnVsbHNjcmVlbkludGVyZmFjZSB7IG51bGxwdHIgfTsKKyAgICBIYXNoU2V0PFdlYlZpZGVvRnVs
bHNjcmVlbk1vZGVsQ2xpZW50Kj4gbV9jbGllbnRzOworICAgIGJvb2wgbV9oYXNWaWRlbyB7IGZh
bHNlIH07CisgICAgRmxvYXRTaXplIG1fdmlkZW9EaW1lbnNpb25zOwogICAgIEZsb2F0UmVjdCBt
X3ZpZGVvRnJhbWU7CiAgICAgVmVjdG9yPFJlZlB0cjxUZXh0VHJhY2s+PiBtX2xlZ2libGVUcmFj
a3NGb3JNZW51OwogICAgIFZlY3RvcjxSZWZQdHI8QXVkaW9UcmFjaz4+IG1fYXVkaW9UcmFja3NG
b3JNZW51OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvV2ViVmlk
ZW9GdWxsc2NyZWVuTW9kZWxWaWRlb0VsZW1lbnQubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9jb2NvYS9XZWJWaWRlb0Z1bGxzY3JlZW5Nb2RlbFZpZGVvRWxlbWVudC5tbQppbmRleCA2NWE4
MmI2OGM3MzM1MTY3Yjk2YjRiZjcwZGE1NzRlMzNlMGFjZDZhLi5mZmE2NWYyMGI0NzRkMWI2Y2Ez
ODIwNDVlM2M5ODY1YjIzZWZkOWQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9jb2NvYS9XZWJWaWRlb0Z1bGxzY3JlZW5Nb2RlbFZpZGVvRWxlbWVudC5tbQorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9XZWJWaWRlb0Z1bGxzY3JlZW5Nb2RlbFZpZGVvRWxl
bWVudC5tbQpAQCAtNDgsOSArNDgsOCBAQAogCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAot
V2ViVmlkZW9GdWxsc2NyZWVuTW9kZWxWaWRlb0VsZW1lbnQ6OldlYlZpZGVvRnVsbHNjcmVlbk1v
ZGVsVmlkZW9FbGVtZW50KFdlYlBsYXliYWNrU2Vzc2lvbk1vZGVsTWVkaWFFbGVtZW50JiBwbGF5
YmFja1Nlc3Npb25Nb2RlbCkKK1dlYlZpZGVvRnVsbHNjcmVlbk1vZGVsVmlkZW9FbGVtZW50OjpX
ZWJWaWRlb0Z1bGxzY3JlZW5Nb2RlbFZpZGVvRWxlbWVudCgpCiAgICAgOiBFdmVudExpc3RlbmVy
KEV2ZW50TGlzdGVuZXI6OkNQUEV2ZW50TGlzdGVuZXJUeXBlKQotICAgICwgbV9wbGF5YmFja1Nl
c3Npb25Nb2RlbChwbGF5YmFja1Nlc3Npb25Nb2RlbCkKIHsKIH0KIApAQCAtNTgsMTggKzU3LDYg
QEAgV2ViVmlkZW9GdWxsc2NyZWVuTW9kZWxWaWRlb0VsZW1lbnQ6On5XZWJWaWRlb0Z1bGxzY3Jl
ZW5Nb2RlbFZpZGVvRWxlbWVudCgpCiB7CiB9CiAKLXZvaWQgV2ViVmlkZW9GdWxsc2NyZWVuTW9k
ZWxWaWRlb0VsZW1lbnQ6OnNldFdlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZShXZWJWaWRlb0Z1
bGxzY3JlZW5JbnRlcmZhY2UqIGludGVyZmFjZSkKLXsKLSAgICBpZiAoaW50ZXJmYWNlID09IG1f
dmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlKQotICAgICAgICByZXR1cm47Ci0KLSAgICBtX3ZpZGVv
RnVsbHNjcmVlbkludGVyZmFjZSA9IGludGVyZmFjZTsKLSAgICBtX3BsYXliYWNrU2Vzc2lvbk1v
ZGVsLT5zZXRXZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2UoaW50ZXJmYWNlKTsKLQotICAgIGlm
IChtX3ZpZGVvRnVsbHNjcmVlbkludGVyZmFjZSAmJiBtX3ZpZGVvRWxlbWVudCkKLSAgICAgICAg
bV92aWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2UtPnNldFZpZGVvRGltZW5zaW9ucyh0cnVlLCBtX3Zp
ZGVvRWxlbWVudC0+dmlkZW9XaWR0aCgpLCBtX3ZpZGVvRWxlbWVudC0+dmlkZW9IZWlnaHQoKSk7
Ci19Ci0KIHZvaWQgV2ViVmlkZW9GdWxsc2NyZWVuTW9kZWxWaWRlb0VsZW1lbnQ6OnNldFZpZGVv
RWxlbWVudChIVE1MVmlkZW9FbGVtZW50KiB2aWRlb0VsZW1lbnQpCiB7CiAgICAgaWYgKG1fdmlk
ZW9FbGVtZW50ID09IHZpZGVvRWxlbWVudCkKQEAgLTg2LDE3ICs3MywxMyBAQCB2b2lkIFdlYlZp
ZGVvRnVsbHNjcmVlbk1vZGVsVmlkZW9FbGVtZW50OjpzZXRWaWRlb0VsZW1lbnQoSFRNTFZpZGVv
RWxlbWVudCogdmlkZQogCiAgICAgbV92aWRlb0VsZW1lbnQgPSB2aWRlb0VsZW1lbnQ7CiAKLSAg
ICBpZiAoIW1fdmlkZW9FbGVtZW50KQotICAgICAgICByZXR1cm47Ci0KLSAgICBmb3IgKGF1dG8m
IGV2ZW50TmFtZSA6IG9ic2VydmVkRXZlbnROYW1lcygpKQotICAgICAgICBtX3ZpZGVvRWxlbWVu
dC0+YWRkRXZlbnRMaXN0ZW5lcihldmVudE5hbWUsICp0aGlzLCBmYWxzZSk7Ci0gICAgbV9pc0xp
c3RlbmluZyA9IHRydWU7CisgICAgaWYgKG1fdmlkZW9FbGVtZW50KSB7CisgICAgICAgIGZvciAo
YXV0byYgZXZlbnROYW1lIDogb2JzZXJ2ZWRFdmVudE5hbWVzKCkpCisgICAgICAgICAgICBtX3Zp
ZGVvRWxlbWVudC0+YWRkRXZlbnRMaXN0ZW5lcihldmVudE5hbWUsICp0aGlzLCBmYWxzZSk7Cisg
ICAgICAgIG1faXNMaXN0ZW5pbmcgPSB0cnVlOworICAgIH0KIAogICAgIHVwZGF0ZUZvckV2ZW50
TmFtZShldmVudE5hbWVBbGwoKSk7Ci0KLSAgICBpZiAobV92aWRlb0Z1bGxzY3JlZW5JbnRlcmZh
Y2UpCi0gICAgICAgIG1fdmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlLT5zZXRWaWRlb0RpbWVuc2lv
bnModHJ1ZSwgdmlkZW9FbGVtZW50LT52aWRlb1dpZHRoKCksIHZpZGVvRWxlbWVudC0+dmlkZW9I
ZWlnaHQoKSk7CiB9CiAKIHZvaWQgV2ViVmlkZW9GdWxsc2NyZWVuTW9kZWxWaWRlb0VsZW1lbnQ6
OmhhbmRsZUV2ZW50KFdlYkNvcmU6OlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBXZWJDb3JlOjpF
dmVudCogZXZlbnQpCkBAIC0xMDYsMTQgKzg5LDE2IEBAIHZvaWQgV2ViVmlkZW9GdWxsc2NyZWVu
TW9kZWxWaWRlb0VsZW1lbnQ6OmhhbmRsZUV2ZW50KFdlYkNvcmU6OlNjcmlwdEV4ZWN1dGlvbkNv
CiAKIHZvaWQgV2ViVmlkZW9GdWxsc2NyZWVuTW9kZWxWaWRlb0VsZW1lbnQ6OnVwZGF0ZUZvckV2
ZW50TmFtZShjb25zdCBXVEY6OkF0b21pY1N0cmluZyYgZXZlbnROYW1lKQogewotICAgIGlmICgh
bV92aWRlb0VsZW1lbnQgfHwgIW1fdmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlKQorICAgIGlmICht
X2NsaWVudHMuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm47CiAgICAgCiAgICAgYm9vbCBhbGwg
PSBldmVudE5hbWUgPT0gZXZlbnROYW1lQWxsKCk7CiAKICAgICBpZiAoYWxsCi0gICAgICAgIHx8
IGV2ZW50TmFtZSA9PSBldmVudE5hbWVzKCkucmVzaXplRXZlbnQpCi0gICAgICAgIG1fdmlkZW9G
dWxsc2NyZWVuSW50ZXJmYWNlLT5zZXRWaWRlb0RpbWVuc2lvbnModHJ1ZSwgbV92aWRlb0VsZW1l
bnQtPnZpZGVvV2lkdGgoKSwgbV92aWRlb0VsZW1lbnQtPnZpZGVvSGVpZ2h0KCkpOworICAgICAg
ICB8fCBldmVudE5hbWUgPT0gZXZlbnROYW1lcygpLnJlc2l6ZUV2ZW50KSB7CisgICAgICAgIHNl
dEhhc1ZpZGVvKCEhbV92aWRlb0VsZW1lbnQpOworICAgICAgICBzZXRWaWRlb0RpbWVuc2lvbnMo
bV92aWRlb0VsZW1lbnQgPyBGbG9hdFNpemUobV92aWRlb0VsZW1lbnQtPnZpZGVvV2lkdGgoKSwg
bV92aWRlb0VsZW1lbnQtPnZpZGVvSGVpZ2h0KCkpIDogRmxvYXRTaXplKCkpOworICAgIH0KIH0K
IAogdm9pZCBXZWJWaWRlb0Z1bGxzY3JlZW5Nb2RlbFZpZGVvRWxlbWVudDo6c2V0VmlkZW9GdWxs
c2NyZWVuTGF5ZXIoUGxhdGZvcm1MYXllciogdmlkZW9MYXllciwgc3RkOjpmdW5jdGlvbjx2b2lk
KCk+IGNvbXBsZXRpb25IYW5kbGVyKQpAQCAtMTk5LDYgKzE4NCwxOCBAQCB2b2lkIFdlYlZpZGVv
RnVsbHNjcmVlbk1vZGVsVmlkZW9FbGVtZW50OjpmdWxsc2NyZWVuTW9kZUNoYW5nZWQoSFRNTE1l
ZGlhRWxlbWVudAogICAgICAgICBtX3ZpZGVvRWxlbWVudC0+ZnVsbHNjcmVlbk1vZGVDaGFuZ2Vk
KHZpZGVvRnVsbHNjcmVlbk1vZGUpOwogfQogCit2b2lkIFdlYlZpZGVvRnVsbHNjcmVlbk1vZGVs
VmlkZW9FbGVtZW50OjphZGRDbGllbnQoV2ViVmlkZW9GdWxsc2NyZWVuTW9kZWxDbGllbnQmIGNs
aWVudCkKK3sKKyAgICBBU1NFUlQoIW1fY2xpZW50cy5jb250YWlucygmY2xpZW50KSk7CisgICAg
bV9jbGllbnRzLmFkZCgmY2xpZW50KTsKK30KKwordm9pZCBXZWJWaWRlb0Z1bGxzY3JlZW5Nb2Rl
bFZpZGVvRWxlbWVudDo6cmVtb3ZlQ2xpZW50KFdlYlZpZGVvRnVsbHNjcmVlbk1vZGVsQ2xpZW50
JiBjbGllbnQpCit7CisgICAgQVNTRVJUKG1fY2xpZW50cy5jb250YWlucygmY2xpZW50KSk7Cisg
ICAgbV9jbGllbnRzLnJlbW92ZSgmY2xpZW50KTsKK30KKwogYm9vbCBXZWJWaWRlb0Z1bGxzY3Jl
ZW5Nb2RlbFZpZGVvRWxlbWVudDo6aXNWaXNpYmxlKCkgY29uc3QKIHsKICAgICBpZiAoIW1fdmlk
ZW9FbGVtZW50KQpAQCAtMjEwLDQgKzIwNywyNiBAQCBib29sIFdlYlZpZGVvRnVsbHNjcmVlbk1v
ZGVsVmlkZW9FbGVtZW50Ojppc1Zpc2libGUoKSBjb25zdAogICAgIHJldHVybiBmYWxzZTsKIH0K
IAordm9pZCBXZWJWaWRlb0Z1bGxzY3JlZW5Nb2RlbFZpZGVvRWxlbWVudDo6c2V0SGFzVmlkZW8o
Ym9vbCBoYXNWaWRlbykKK3sKKyAgICBpZiAoaGFzVmlkZW8gPT0gbV9oYXNWaWRlbykKKyAgICAg
ICAgcmV0dXJuOworCisgICAgbV9oYXNWaWRlbyA9IGhhc1ZpZGVvOworCisgICAgZm9yIChhdXRv
JiBjbGllbnQgOiBtX2NsaWVudHMpCisgICAgICAgIGNsaWVudC0+aGFzVmlkZW9DaGFuZ2VkKG1f
aGFzVmlkZW8pOworfQorCit2b2lkIFdlYlZpZGVvRnVsbHNjcmVlbk1vZGVsVmlkZW9FbGVtZW50
OjpzZXRWaWRlb0RpbWVuc2lvbnMoY29uc3QgRmxvYXRTaXplJiB2aWRlb0RpbWVuc2lvbnMpCit7
CisgICAgaWYgKG1fdmlkZW9EaW1lbnNpb25zID09IHZpZGVvRGltZW5zaW9ucykKKyAgICAgICAg
cmV0dXJuOworCisgICAgbV92aWRlb0RpbWVuc2lvbnMgPSB2aWRlb0RpbWVuc2lvbnM7CisKKyAg
ICBmb3IgKGF1dG8mIGNsaWVudCA6IG1fY2xpZW50cykKKyAgICAgICAgY2xpZW50LT52aWRlb0Rp
bWVuc2lvbnNDaGFuZ2VkKG1fdmlkZW9EaW1lbnNpb25zKTsKK30KKwogI2VuZGlmCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvV2ViQVZQbGF5ZXJDb250cm9sbGVyLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvV2ViQVZQbGF5ZXJDb250cm9sbGVyLmgKaW5k
ZXggODIzMWE4ZTczMzE5NDg0YzIzNWEzNmRlZjFlNTFiM2UyZTk3NmE0NC4uMzY5MWI2NTI0ZGIy
YjFhNjZhZjE3M2ZkYmYzMjBkZDkwOTkxODQzNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vaW9zL1dlYkFWUGxheWVyQ29udHJvbGxlci5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2lvcy9XZWJBVlBsYXllckNvbnRyb2xsZXIuaApAQCAtNDIsOCArNDIsNiBAQCBj
bGFzcyBXZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2VBVktpdDsKICAgICBCT09MIF9waWN0dXJl
SW5QaWN0dXJlSW50ZXJydXB0ZWQ7CiB9CiAKLS0gKHZvaWQpcmVzZXRTdGF0ZTsKLQogQHByb3Bl
cnR5IChyZXRhaW4pIEFWUGxheWVyQ29udHJvbGxlciogcGxheWVyQ29udHJvbGxlclByb3h5Owog
QHByb3BlcnR5IChhc3NpZ24pIFdlYkNvcmU6OldlYlBsYXliYWNrU2Vzc2lvbk1vZGVsKiBkZWxl
Z2F0ZTsKIEBwcm9wZXJ0eSAoYXNzaWduKSBXZWJDb3JlOjpXZWJQbGF5YmFja1Nlc3Npb25JbnRl
cmZhY2VBVktpdCogcGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vaW9zL1dlYkFWUGxheWVyQ29udHJvbGxlci5tbSBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2lvcy9XZWJBVlBsYXllckNvbnRyb2xsZXIubW0KaW5kZXggZTFlYTNi
ZDcwOWQxNGFjNWIxYWI4ZmQzMjEwYTIyYTViNDdiMTQ3ZS4uOTJmMGI0YzQ2MDNkMGFjYWEzZjBj
NmU3MjIyNTYzM2QwMGI1NDk3YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
aW9zL1dlYkFWUGxheWVyQ29udHJvbGxlci5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9pb3MvV2ViQVZQbGF5ZXJDb250cm9sbGVyLm1tCkBAIC03NCwzOCArNzQsNiBAQCAtICh2b2lk
KWRlYWxsb2MKICAgICBbc3VwZXIgZGVhbGxvY107CiB9CiAKLS0gKHZvaWQpcmVzZXRTdGF0ZQot
ewotICAgIHNlbGYuY29udGVudER1cmF0aW9uID0gMDsKLSAgICBzZWxmLm1heFRpbWUgPSAwOwot
ICAgIHNlbGYuY29udGVudER1cmF0aW9uV2l0aGluRW5kVGltZXMgPSAwOwotICAgIHNlbGYubG9h
ZGVkVGltZVJhbmdlcyA9IEBbXTsKLQotICAgIHNlbGYuY2FuUGxheSA9IE5POwotICAgIHNlbGYu
Y2FuUGF1c2UgPSBOTzsKLSAgICBzZWxmLmNhblRvZ2dsZVBsYXliYWNrID0gTk87Ci0gICAgc2Vs
Zi5oYXNFbmFibGVkQXVkaW8gPSBOTzsKLSAgICBzZWxmLmNhblNlZWsgPSBOTzsKLSAgICBzZWxm
Lm1pblRpbWUgPSAwOwotICAgIHNlbGYuc3RhdHVzID0gQVZQbGF5ZXJDb250cm9sbGVyU3RhdHVz
VW5rbm93bjsKLQotICAgIHNlbGYudGltaW5nID0gbmlsOwotICAgIHNlbGYucmF0ZSA9IDA7Ci0K
LSAgICBzZWxmLmhhc0VuYWJsZWRWaWRlbyA9IE5POwotICAgIHNlbGYuY29udGVudERpbWVuc2lv
bnMgPSBDR1NpemVNYWtlKDAsIDApOwotCi0gICAgc2VsZi5zZWVrYWJsZVRpbWVSYW5nZXMgPSBb
TlNNdXRhYmxlQXJyYXkgYXJyYXldOwotCi0gICAgc2VsZi5jYW5TY2FuQmFja3dhcmQgPSBOTzsK
LQotICAgIHNlbGYuYXVkaW9NZWRpYVNlbGVjdGlvbk9wdGlvbnMgPSBuaWw7Ci0gICAgc2VsZi5j
dXJyZW50QXVkaW9NZWRpYVNlbGVjdGlvbk9wdGlvbiA9IG5pbDsKLQotICAgIHNlbGYubGVnaWJs
ZU1lZGlhU2VsZWN0aW9uT3B0aW9ucyA9IG5pbDsKLSAgICBzZWxmLmN1cnJlbnRMZWdpYmxlTWVk
aWFTZWxlY3Rpb25PcHRpb24gPSBuaWw7Ci19Ci0KIC0gKEFWUGxheWVyICopcGxheWVyCiB7CiAg
ICAgcmV0dXJuIG5pbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9X
ZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2VBVktpdC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vaW9zL1dlYlBsYXliYWNrU2Vzc2lvbkludGVyZmFjZUFWS2l0LmgKaW5kZXggNzE0Nzk0ZmIz
Y2UzNTRkZTExMGRhMDhhNDE5YTcwNWRmZDlhZDE3MS4uMjNkNzcyZGQxMWI4MTJmZjAwZDg5MDYw
YzI4ODk0NDAwNTkyNzUwYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9z
L1dlYlBsYXliYWNrU2Vzc2lvbkludGVyZmFjZUFWS2l0LmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vaW9zL1dlYlBsYXliYWNrU2Vzc2lvbkludGVyZmFjZUFWS2l0LmgKQEAgLTMzLDYg
KzMzLDcgQEAKICNpbmNsdWRlICJIVE1MTWVkaWFFbGVtZW50RW51bXMuaCIKICNpbmNsdWRlICJU
aW1lci5oIgogI2luY2x1ZGUgIldlYlBsYXliYWNrU2Vzc2lvbkludGVyZmFjZS5oIgorI2luY2x1
ZGUgIldlYlBsYXliYWNrU2Vzc2lvbk1vZGVsLmgiCiAjaW5jbHVkZSA8ZnVuY3Rpb25hbD4KICNp
bmNsdWRlIDxvYmpjL29iamMuaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgpAQCAtNTQs
NTIgKzU1LDQzIEBAIGNsYXNzIEludFJlY3Q7CiBjbGFzcyBXZWJQbGF5YmFja1Nlc3Npb25Nb2Rl
bDsKIGNsYXNzIFdlYlBsYXliYWNrU2Vzc2lvbkNoYW5nZU9ic2VydmVyOwogCi1jbGFzcyBXZWJQ
bGF5YmFja1Nlc3Npb25JbnRlcmZhY2VBVktpdENsaWVudCB7Ci1wdWJsaWM6Ci0gICAgdmlydHVh
bCB+V2ViUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlQVZLaXRDbGllbnQoKSB7IH0KLQotICAgIHZp
cnR1YWwgdm9pZCBleHRlcm5hbFBsYXliYWNrRW5hYmxlZENoYW5nZWQoYm9vbCkgPSAwOwotfTsK
LQogY2xhc3MgV0VCQ09SRV9FWFBPUlQgV2ViUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlQVZLaXQK
ICAgICA6IHB1YmxpYyBXZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2UKKyAgICAsIHB1YmxpYyBX
ZWJQbGF5YmFja1Nlc3Npb25Nb2RlbENsaWVudAogICAgICwgcHVibGljIFJlZkNvdW50ZWQ8V2Vi
UGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlQVZLaXQ+IHsKIAogcHVibGljOgotICAgIHN0YXRpYyBS
ZWY8V2ViUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlQVZLaXQ+IGNyZWF0ZSgpCisgICAgc3RhdGlj
IFJlZjxXZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2VBVktpdD4gY3JlYXRlKFdlYlBsYXliYWNr
U2Vzc2lvbk1vZGVsJiBtb2RlbCkKICAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3
IFdlYlBsYXliYWNrU2Vzc2lvbkludGVyZmFjZUFWS2l0KCkpOworICAgICAgICByZXR1cm4gYWRv
cHRSZWYoKm5ldyBXZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2VBVktpdChtb2RlbCkpOwogICAg
IH0KICAgICB2aXJ0dWFsIH5XZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2VBVktpdCgpOwotICAg
IFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0V2ViUGxheWJhY2tTZXNzaW9uTW9kZWwoV2ViUGxheWJh
Y2tTZXNzaW9uTW9kZWwqKTsKICAgICBXZWJQbGF5YmFja1Nlc3Npb25Nb2RlbCogd2ViUGxheWJh
Y2tTZXNzaW9uTW9kZWwoKSBjb25zdCB7IHJldHVybiBtX3BsYXliYWNrU2Vzc2lvbk1vZGVsOyB9
Ci0gICAgdm9pZCBzZXRDbGllbnQoV2ViUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlQVZLaXRDbGll
bnQqIGNsaWVudCkgeyBtX2NsaWVudCA9IGNsaWVudDsgfQogCisgICAgLy8gV2ViUGxheWJhY2tT
ZXNzaW9uSW50ZXJmYWNlCiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCByZXNldE1lZGlhU3RhdGUo
KSBvdmVycmlkZTsKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldER1cmF0aW9uKGRvdWJsZSkg
b3ZlcnJpZGU7Ci0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRDdXJyZW50VGltZShkb3VibGUg
Y3VycmVudFRpbWUsIGRvdWJsZSBhbmNob3JUaW1lKSBvdmVycmlkZTsKLSAgICBXRUJDT1JFX0VY
UE9SVCB2b2lkIHNldEJ1ZmZlcmVkVGltZShkb3VibGUpIG92ZXJyaWRlOwotICAgIFdFQkNPUkVf
RVhQT1JUIHZvaWQgc2V0UmF0ZShib29sIGlzUGxheWluZywgZmxvYXQgcGxheWJhY2tSYXRlKSBv
dmVycmlkZTsKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldFNlZWthYmxlUmFuZ2VzKGNvbnN0
IFRpbWVSYW5nZXMmKSBvdmVycmlkZTsKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldENhblBs
YXlGYXN0UmV2ZXJzZShib29sKSBvdmVycmlkZTsKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNl
dEF1ZGlvTWVkaWFTZWxlY3Rpb25PcHRpb25zKGNvbnN0IFZlY3RvcjxXVEY6OlN0cmluZz4mIG9w
dGlvbnMsIHVpbnQ2NF90IHNlbGVjdGVkSW5kZXgpIG92ZXJyaWRlOwotICAgIFdFQkNPUkVfRVhQ
T1JUIHZvaWQgc2V0TGVnaWJsZU1lZGlhU2VsZWN0aW9uT3B0aW9ucyhjb25zdCBWZWN0b3I8V1RG
OjpTdHJpbmc+JiBvcHRpb25zLCB1aW50NjRfdCBzZWxlY3RlZEluZGV4KSBvdmVycmlkZTsKLSAg
ICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldEV4dGVybmFsUGxheWJhY2soYm9vbCBlbmFibGVkLCBF
eHRlcm5hbFBsYXliYWNrVGFyZ2V0VHlwZSwgV1RGOjpTdHJpbmcgbG9jYWxpemVkRGV2aWNlTmFt
ZSkgb3ZlcnJpZGU7Ci0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRXaXJlbGVzc1ZpZGVvUGxh
eWJhY2tEaXNhYmxlZChib29sKSBvdmVycmlkZTsKLSAgICBib29sIHdpcmVsZXNzVmlkZW9QbGF5
YmFja0Rpc2FibGVkKCkgY29uc3Q7CisKKyAgICAvLyBXZWJQbGF5YmFja1Nlc3Npb25Nb2RlbENs
aWVudAorICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZHVyYXRpb25DaGFuZ2VkKGRvdWJsZSkgb3Zl
cnJpZGU7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBjdXJyZW50VGltZUNoYW5nZWQoZG91Ymxl
IGN1cnJlbnRUaW1lLCBkb3VibGUgYW5jaG9yVGltZSkgb3ZlcnJpZGU7CisgICAgV0VCQ09SRV9F
WFBPUlQgdm9pZCBidWZmZXJlZFRpbWVDaGFuZ2VkKGRvdWJsZSkgb3ZlcnJpZGU7CisgICAgV0VC
Q09SRV9FWFBPUlQgdm9pZCByYXRlQ2hhbmdlZChib29sIGlzUGxheWluZywgZmxvYXQgcGxheWJh
Y2tSYXRlKSBvdmVycmlkZTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNlZWthYmxlUmFuZ2Vz
Q2hhbmdlZChjb25zdCBUaW1lUmFuZ2VzJikgb3ZlcnJpZGU7CisgICAgV0VCQ09SRV9FWFBPUlQg
dm9pZCBjYW5QbGF5RmFzdFJldmVyc2VDaGFuZ2VkKGJvb2wpIG92ZXJyaWRlOworICAgIFdFQkNP
UkVfRVhQT1JUIHZvaWQgYXVkaW9NZWRpYVNlbGVjdGlvbk9wdGlvbnNDaGFuZ2VkKGNvbnN0IFZl
Y3RvcjxTdHJpbmc+JiBvcHRpb25zLCB1aW50NjRfdCBzZWxlY3RlZEluZGV4KSBvdmVycmlkZTsK
KyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGxlZ2libGVNZWRpYVNlbGVjdGlvbk9wdGlvbnNDaGFu
Z2VkKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBvcHRpb25zLCB1aW50NjRfdCBzZWxlY3RlZEluZGV4
KSBvdmVycmlkZTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGV4dGVybmFsUGxheWJhY2tDaGFu
Z2VkKGJvb2wgZW5hYmxlZCwgV2ViUGxheWJhY2tTZXNzaW9uTW9kZWw6OkV4dGVybmFsUGxheWJh
Y2tUYXJnZXRUeXBlLCBjb25zdCBTdHJpbmcmIGxvY2FsaXplZERldmljZU5hbWUpIG92ZXJyaWRl
OworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgd2lyZWxlc3NWaWRlb1BsYXliYWNrRGlzYWJsZWRD
aGFuZ2VkKGJvb2wpIG92ZXJyaWRlOwogCiAgICAgV0VCQ09SRV9FWFBPUlQgdmlydHVhbCB2b2lk
IGludmFsaWRhdGUoKTsKIAogICAgIFdlYkFWUGxheWVyQ29udHJvbGxlciAqcGxheWVyQ29udHJv
bGxlcigpIGNvbnN0IHsgcmV0dXJuIG1fcGxheWVyQ29udHJvbGxlci5nZXQoKTsgfQogCiBwcm90
ZWN0ZWQ6Ci0gICAgV0VCQ09SRV9FWFBPUlQgV2ViUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlQVZL
aXQoKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBXZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2VBVktp
dChXZWJQbGF5YmFja1Nlc3Npb25Nb2RlbCYpOwogCiAgICAgUmV0YWluUHRyPFdlYkFWUGxheWVy
Q29udHJvbGxlcj4gbV9wbGF5ZXJDb250cm9sbGVyOwogICAgIFdlYlBsYXliYWNrU2Vzc2lvbk1v
ZGVsKiBtX3BsYXliYWNrU2Vzc2lvbk1vZGVsIHsgbnVsbHB0ciB9OwotICAgIFdlYlBsYXliYWNr
U2Vzc2lvbkludGVyZmFjZUFWS2l0Q2xpZW50KiBtX2NsaWVudCB7IG51bGxwdHJ9OwotCi0gICAg
Ym9vbCBtX3dpcmVsZXNzVmlkZW9QbGF5YmFja0Rpc2FibGVkIHsgdHJ1ZSB9OwogfTsKIAogfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1dlYlBsYXliYWNrU2Vzc2lv
bkludGVyZmFjZUFWS2l0Lm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1dlYlBsYXli
YWNrU2Vzc2lvbkludGVyZmFjZUFWS2l0Lm1tCmluZGV4IDM3Zjc0ZjE3ZDcwNGM1MjRkYjRiYjc1
OGI4YjE0YTc4YTQ1YTZlNWMuLjNjOTc4MmRkNDk3ZjUzZTZhZDNiN2ZlMTkxMDUxMzY3ZGM1MmU5
ZjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9XZWJQbGF5YmFja1Nl
c3Npb25JbnRlcmZhY2VBVktpdC5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3Mv
V2ViUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlQVZLaXQubW0KQEAgLTQ3LDMxICs0Nyw1NSBAQCBT
T0ZUX0xJTktfQ0xBU1NfT1BUSU9OQUwoQVZLaXQsIEFWVmFsdWVUaW1pbmcpCiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAotV2ViUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlQVZLaXQ6OldlYlBsYXli
YWNrU2Vzc2lvbkludGVyZmFjZUFWS2l0KCkKK1dlYlBsYXliYWNrU2Vzc2lvbkludGVyZmFjZUFW
S2l0OjpXZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2VBVktpdChXZWJQbGF5YmFja1Nlc3Npb25N
b2RlbCYgbW9kZWwpCiAgICAgOiBtX3BsYXllckNvbnRyb2xsZXIoYWRvcHROUyhbW1dlYkFWUGxh
eWVyQ29udHJvbGxlciBhbGxvY10gaW5pdF0pKQorICAgICwgbV9wbGF5YmFja1Nlc3Npb25Nb2Rl
bCgmbW9kZWwpCiB7CisgICAgbW9kZWwuYWRkQ2xpZW50KCp0aGlzKTsKICAgICBbbV9wbGF5ZXJD
b250cm9sbGVyIHNldFBsYXliYWNrU2Vzc2lvbkludGVyZmFjZTp0aGlzXTsKKyAgICBbbV9wbGF5
ZXJDb250cm9sbGVyIHNldERlbGVnYXRlOiZtb2RlbF07CiB9CiAKIFdlYlBsYXliYWNrU2Vzc2lv
bkludGVyZmFjZUFWS2l0Ojp+V2ViUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlQVZLaXQoKQogewot
ICAgIFdlYkFWUGxheWVyQ29udHJvbGxlciogcGxheWVyQ29udHJvbGxlciA9IG1fcGxheWVyQ29u
dHJvbGxlci5nZXQoKTsKLSAgICBpZiAocGxheWVyQ29udHJvbGxlciAmJiBwbGF5ZXJDb250cm9s
bGVyLmV4dGVybmFsUGxheWJhY2tBY3RpdmUpCi0gICAgICAgIHNldEV4dGVybmFsUGxheWJhY2so
ZmFsc2UsIFRhcmdldFR5cGVOb25lLCAiIik7CisgICAgW21fcGxheWVyQ29udHJvbGxlciBzZXRQ
bGF5YmFja1Nlc3Npb25JbnRlcmZhY2U6bnVsbHB0cl07CisgICAgW21fcGxheWVyQ29udHJvbGxl
ciBzZXRFeHRlcm5hbFBsYXliYWNrQWN0aXZlOmZhbHNlXTsKKworICAgIGludmFsaWRhdGUoKTsK
IH0KIAogdm9pZCBXZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2VBVktpdDo6cmVzZXRNZWRpYVN0
YXRlKCkKIHsKLSAgICBbbV9wbGF5ZXJDb250cm9sbGVyIHJlc2V0U3RhdGVdOwotfQorICAgIFdl
YkFWUGxheWVyQ29udHJvbGxlciogcGxheWVyQ29udHJvbGxlciA9IG1fcGxheWVyQ29udHJvbGxl
ci5nZXQoKTsKIAotdm9pZCBXZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2VBVktpdDo6c2V0V2Vi
UGxheWJhY2tTZXNzaW9uTW9kZWwoV2ViUGxheWJhY2tTZXNzaW9uTW9kZWwqIG1vZGVsKQotewot
ICAgIG1fcGxheWJhY2tTZXNzaW9uTW9kZWwgPSBtb2RlbDsKLSAgICBbbV9wbGF5ZXJDb250cm9s
bGVyIHNldERlbGVnYXRlOm1fcGxheWJhY2tTZXNzaW9uTW9kZWxdOworICAgIHBsYXllckNvbnRy
b2xsZXIuY29udGVudER1cmF0aW9uID0gMDsKKyAgICBwbGF5ZXJDb250cm9sbGVyLm1heFRpbWUg
PSAwOworICAgIHBsYXllckNvbnRyb2xsZXIuY29udGVudER1cmF0aW9uV2l0aGluRW5kVGltZXMg
PSAwOworICAgIHBsYXllckNvbnRyb2xsZXIubG9hZGVkVGltZVJhbmdlcyA9IEBbXTsKKworICAg
IHBsYXllckNvbnRyb2xsZXIuY2FuUGxheSA9IE5POworICAgIHBsYXllckNvbnRyb2xsZXIuY2Fu
UGF1c2UgPSBOTzsKKyAgICBwbGF5ZXJDb250cm9sbGVyLmNhblRvZ2dsZVBsYXliYWNrID0gTk87
CisgICAgcGxheWVyQ29udHJvbGxlci5oYXNFbmFibGVkQXVkaW8gPSBOTzsKKyAgICBwbGF5ZXJD
b250cm9sbGVyLmNhblNlZWsgPSBOTzsKKyAgICBwbGF5ZXJDb250cm9sbGVyLm1pblRpbWUgPSAw
OworICAgIHBsYXllckNvbnRyb2xsZXIuc3RhdHVzID0gQVZQbGF5ZXJDb250cm9sbGVyU3RhdHVz
VW5rbm93bjsKKworICAgIHBsYXllckNvbnRyb2xsZXIudGltaW5nID0gbmlsOworICAgIHBsYXll
ckNvbnRyb2xsZXIucmF0ZSA9IDA7CisKKyAgICBwbGF5ZXJDb250cm9sbGVyLnNlZWthYmxlVGlt
ZVJhbmdlcyA9IFtOU011dGFibGVBcnJheSBhcnJheV07CisKKyAgICBwbGF5ZXJDb250cm9sbGVy
LmNhblNjYW5CYWNrd2FyZCA9IE5POworCisgICAgcGxheWVyQ29udHJvbGxlci5hdWRpb01lZGlh
U2VsZWN0aW9uT3B0aW9ucyA9IG5pbDsKKyAgICBwbGF5ZXJDb250cm9sbGVyLmN1cnJlbnRBdWRp
b01lZGlhU2VsZWN0aW9uT3B0aW9uID0gbmlsOworCisgICAgcGxheWVyQ29udHJvbGxlci5sZWdp
YmxlTWVkaWFTZWxlY3Rpb25PcHRpb25zID0gbmlsOworICAgIHBsYXllckNvbnRyb2xsZXIuY3Vy
cmVudExlZ2libGVNZWRpYVNlbGVjdGlvbk9wdGlvbiA9IG5pbDsKIH0KIAotdm9pZCBXZWJQbGF5
YmFja1Nlc3Npb25JbnRlcmZhY2VBVktpdDo6c2V0RHVyYXRpb24oZG91YmxlIGR1cmF0aW9uKQor
dm9pZCBXZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2VBVktpdDo6ZHVyYXRpb25DaGFuZ2VkKGRv
dWJsZSBkdXJhdGlvbikKIHsKICAgICBXZWJBVlBsYXllckNvbnRyb2xsZXIqIHBsYXllckNvbnRy
b2xsZXIgPSBtX3BsYXllckNvbnRyb2xsZXIuZ2V0KCk7CiAKQEAgLTkwLDcgKzExNCw3IEBAIHZv
aWQgV2ViUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlQVZLaXQ6OnNldER1cmF0aW9uKGRvdWJsZSBk
dXJhdGlvbikKICAgICBwbGF5ZXJDb250cm9sbGVyLnN0YXR1cyA9IEFWUGxheWVyQ29udHJvbGxl
clN0YXR1c1JlYWR5VG9QbGF5OwogfQogCi12b2lkIFdlYlBsYXliYWNrU2Vzc2lvbkludGVyZmFj
ZUFWS2l0OjpzZXRDdXJyZW50VGltZShkb3VibGUgY3VycmVudFRpbWUsIGRvdWJsZSBhbmNob3JU
aW1lKQordm9pZCBXZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2VBVktpdDo6Y3VycmVudFRpbWVD
aGFuZ2VkKGRvdWJsZSBjdXJyZW50VGltZSwgZG91YmxlIGFuY2hvclRpbWUpCiB7CiAgICAgTlNU
aW1lSW50ZXJ2YWwgYW5jaG9yVGltZVN0YW1wID0gIVttX3BsYXllckNvbnRyb2xsZXIgcmF0ZV0g
PyBOQU4gOiBhbmNob3JUaW1lOwogICAgIEFWVmFsdWVUaW1pbmcgKnRpbWluZyA9IFtnZXRBVlZh
bHVlVGltaW5nQ2xhc3MoKSB2YWx1ZVRpbWluZ1dpdGhBbmNob3JWYWx1ZTpjdXJyZW50VGltZQpA
QCAtOTksNyArMTIzLDcgQEAgdm9pZCBXZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2VBVktpdDo6
c2V0Q3VycmVudFRpbWUoZG91YmxlIGN1cnJlbnRUaW1lLCBkb3VibGUKICAgICBbbV9wbGF5ZXJD
b250cm9sbGVyIHNldFRpbWluZzp0aW1pbmddOwogfQogCi12b2lkIFdlYlBsYXliYWNrU2Vzc2lv
bkludGVyZmFjZUFWS2l0OjpzZXRCdWZmZXJlZFRpbWUoZG91YmxlIGJ1ZmZlcmVkVGltZSkKK3Zv
aWQgV2ViUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlQVZLaXQ6OmJ1ZmZlcmVkVGltZUNoYW5nZWQo
ZG91YmxlIGJ1ZmZlcmVkVGltZSkKIHsKICAgICBXZWJBVlBsYXllckNvbnRyb2xsZXIqIHBsYXll
ckNvbnRyb2xsZXIgPSBtX3BsYXllckNvbnRyb2xsZXIuZ2V0KCk7CiAgICAgZG91YmxlIGR1cmF0
aW9uID0gcGxheWVyQ29udHJvbGxlci5jb250ZW50RHVyYXRpb247CkBAIC0xMTEsMTIgKzEzNSwx
MiBAQCB2b2lkIFdlYlBsYXliYWNrU2Vzc2lvbkludGVyZmFjZUFWS2l0OjpzZXRCdWZmZXJlZFRp
bWUoZG91YmxlIGJ1ZmZlcmVkVGltZSkKICAgICBwbGF5ZXJDb250cm9sbGVyLmxvYWRlZFRpbWVS
YW5nZXMgPSBAW0AwLCBAKG5vcm1hbGl6ZWRCdWZmZXJlZFRpbWUpXTsKIH0KIAotdm9pZCBXZWJQ
bGF5YmFja1Nlc3Npb25JbnRlcmZhY2VBVktpdDo6c2V0UmF0ZShib29sIGlzUGxheWluZywgZmxv
YXQgcGxheWJhY2tSYXRlKQordm9pZCBXZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2VBVktpdDo6
cmF0ZUNoYW5nZWQoYm9vbCBpc1BsYXlpbmcsIGZsb2F0IHBsYXliYWNrUmF0ZSkKIHsKICAgICBb
bV9wbGF5ZXJDb250cm9sbGVyIHNldFJhdGU6aXNQbGF5aW5nID8gcGxheWJhY2tSYXRlIDogMC5d
OwogfQogCi12b2lkIFdlYlBsYXliYWNrU2Vzc2lvbkludGVyZmFjZUFWS2l0OjpzZXRTZWVrYWJs
ZVJhbmdlcyhjb25zdCBUaW1lUmFuZ2VzJiB0aW1lUmFuZ2VzKQordm9pZCBXZWJQbGF5YmFja1Nl
c3Npb25JbnRlcmZhY2VBVktpdDo6c2Vla2FibGVSYW5nZXNDaGFuZ2VkKGNvbnN0IFRpbWVSYW5n
ZXMmIHRpbWVSYW5nZXMpCiB7CiAgICAgUmV0YWluUHRyPE5TTXV0YWJsZUFycmF5PiBzZWVrYWJs
ZVJhbmdlcyA9IGFkb3B0TlMoW1tOU011dGFibGVBcnJheSBhbGxvY10gaW5pdF0pOwogICAgIEV4
Y2VwdGlvbkNvZGUgZXhjZXB0aW9uQ29kZTsKQEAgLTEzMiw3ICsxNTYsNyBAQCB2b2lkIFdlYlBs
YXliYWNrU2Vzc2lvbkludGVyZmFjZUFWS2l0OjpzZXRTZWVrYWJsZVJhbmdlcyhjb25zdCBUaW1l
UmFuZ2VzJiB0aW1lUgogICAgIFttX3BsYXllckNvbnRyb2xsZXIgc2V0U2Vla2FibGVUaW1lUmFu
Z2VzOnNlZWthYmxlUmFuZ2VzLmdldCgpXTsKIH0KIAotdm9pZCBXZWJQbGF5YmFja1Nlc3Npb25J
bnRlcmZhY2VBVktpdDo6c2V0Q2FuUGxheUZhc3RSZXZlcnNlKGJvb2wgY2FuUGxheUZhc3RSZXZl
cnNlKQordm9pZCBXZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2VBVktpdDo6Y2FuUGxheUZhc3RS
ZXZlcnNlQ2hhbmdlZChib29sIGNhblBsYXlGYXN0UmV2ZXJzZSkKIHsKICAgICBbbV9wbGF5ZXJD
b250cm9sbGVyIHNldENhblNjYW5CYWNrd2FyZDpjYW5QbGF5RmFzdFJldmVyc2VdOwogfQpAQCAt
MTQ4LDcgKzE3Miw3IEBAIHN0YXRpYyBSZXRhaW5QdHI8TlNNdXRhYmxlQXJyYXk+IG1lZGlhU2Vs
ZWN0aW9uT3B0aW9ucyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgb3B0CiAgICAgcmV0dXJuIHdlYk9w
dGlvbnM7CiB9CiAKLXZvaWQgV2ViUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlQVZLaXQ6OnNldEF1
ZGlvTWVkaWFTZWxlY3Rpb25PcHRpb25zKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBvcHRpb25zLCB1
aW50NjRfdCBzZWxlY3RlZEluZGV4KQordm9pZCBXZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2VB
VktpdDo6YXVkaW9NZWRpYVNlbGVjdGlvbk9wdGlvbnNDaGFuZ2VkKGNvbnN0IFZlY3RvcjxTdHJp
bmc+JiBvcHRpb25zLCB1aW50NjRfdCBzZWxlY3RlZEluZGV4KQogewogICAgIFJldGFpblB0cjxO
U011dGFibGVBcnJheT4gd2ViT3B0aW9ucyA9IG1lZGlhU2VsZWN0aW9uT3B0aW9ucyhvcHRpb25z
KTsKICAgICBbbV9wbGF5ZXJDb250cm9sbGVyIHNldEF1ZGlvTWVkaWFTZWxlY3Rpb25PcHRpb25z
OndlYk9wdGlvbnMuZ2V0KCldOwpAQCAtMTU2LDcgKzE4MCw3IEBAIHZvaWQgV2ViUGxheWJhY2tT
ZXNzaW9uSW50ZXJmYWNlQVZLaXQ6OnNldEF1ZGlvTWVkaWFTZWxlY3Rpb25PcHRpb25zKGNvbnN0
IFZlY3RvCiAgICAgICAgIFttX3BsYXllckNvbnRyb2xsZXIgc2V0Q3VycmVudEF1ZGlvTWVkaWFT
ZWxlY3Rpb25PcHRpb246W3dlYk9wdGlvbnMgb2JqZWN0QXRJbmRleDpzdGF0aWNfY2FzdDxOU1VJ
bnRlZ2VyPihzZWxlY3RlZEluZGV4KV1dOwogfQogCi12b2lkIFdlYlBsYXliYWNrU2Vzc2lvbklu
dGVyZmFjZUFWS2l0OjpzZXRMZWdpYmxlTWVkaWFTZWxlY3Rpb25PcHRpb25zKGNvbnN0IFZlY3Rv
cjxTdHJpbmc+JiBvcHRpb25zLCB1aW50NjRfdCBzZWxlY3RlZEluZGV4KQordm9pZCBXZWJQbGF5
YmFja1Nlc3Npb25JbnRlcmZhY2VBVktpdDo6bGVnaWJsZU1lZGlhU2VsZWN0aW9uT3B0aW9uc0No
YW5nZWQoY29uc3QgVmVjdG9yPFN0cmluZz4mIG9wdGlvbnMsIHVpbnQ2NF90IHNlbGVjdGVkSW5k
ZXgpCiB7CiAgICAgUmV0YWluUHRyPE5TTXV0YWJsZUFycmF5PiB3ZWJPcHRpb25zID0gbWVkaWFT
ZWxlY3Rpb25PcHRpb25zKG9wdGlvbnMpOwogICAgIFttX3BsYXllckNvbnRyb2xsZXIgc2V0TGVn
aWJsZU1lZGlhU2VsZWN0aW9uT3B0aW9uczp3ZWJPcHRpb25zLmdldCgpXTsKQEAgLTE2NCwzNiAr
MTg4LDMzIEBAIHZvaWQgV2ViUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlQVZLaXQ6OnNldExlZ2li
bGVNZWRpYVNlbGVjdGlvbk9wdGlvbnMoY29uc3QgVmVjCiAgICAgICAgIFttX3BsYXllckNvbnRy
b2xsZXIgc2V0Q3VycmVudExlZ2libGVNZWRpYVNlbGVjdGlvbk9wdGlvbjpbd2ViT3B0aW9ucyBv
YmplY3RBdEluZGV4OnN0YXRpY19jYXN0PE5TVUludGVnZXI+KHNlbGVjdGVkSW5kZXgpXV07CiB9
CiAKLXZvaWQgV2ViUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlQVZLaXQ6OnNldEV4dGVybmFsUGxh
eWJhY2soYm9vbCBlbmFibGVkLCBFeHRlcm5hbFBsYXliYWNrVGFyZ2V0VHlwZSB0YXJnZXRUeXBl
LCBTdHJpbmcgbG9jYWxpemVkRGV2aWNlTmFtZSkKK3ZvaWQgV2ViUGxheWJhY2tTZXNzaW9uSW50
ZXJmYWNlQVZLaXQ6OmV4dGVybmFsUGxheWJhY2tDaGFuZ2VkKGJvb2wgZW5hYmxlZCwgV2ViUGxh
eWJhY2tTZXNzaW9uTW9kZWw6OkV4dGVybmFsUGxheWJhY2tUYXJnZXRUeXBlIHRhcmdldFR5cGUs
IGNvbnN0IFN0cmluZyYgbG9jYWxpemVkRGV2aWNlTmFtZSkKIHsKICAgICBBVlBsYXllckNvbnRy
b2xsZXJFeHRlcm5hbFBsYXliYWNrVHlwZSBleHRlcm5hbFBsYXliYWNrVHlwZSA9IEFWUGxheWVy
Q29udHJvbGxlckV4dGVybmFsUGxheWJhY2tUeXBlTm9uZTsKLSAgICBpZiAodGFyZ2V0VHlwZSA9
PSBUYXJnZXRUeXBlQWlyUGxheSkKKyAgICBpZiAodGFyZ2V0VHlwZSA9PSBXZWJQbGF5YmFja1Nl
c3Npb25Nb2RlbDo6VGFyZ2V0VHlwZUFpclBsYXkpCiAgICAgICAgIGV4dGVybmFsUGxheWJhY2tU
eXBlID0gQVZQbGF5ZXJDb250cm9sbGVyRXh0ZXJuYWxQbGF5YmFja1R5cGVBaXJQbGF5OwotICAg
IGVsc2UgaWYgKHRhcmdldFR5cGUgPT0gVGFyZ2V0VHlwZVRWT3V0KQorICAgIGVsc2UgaWYgKHRh
cmdldFR5cGUgPT0gV2ViUGxheWJhY2tTZXNzaW9uTW9kZWw6OlRhcmdldFR5cGVUVk91dCkKICAg
ICAgICAgZXh0ZXJuYWxQbGF5YmFja1R5cGUgPSBBVlBsYXllckNvbnRyb2xsZXJFeHRlcm5hbFBs
YXliYWNrVHlwZVRWT3V0OwogCiAgICAgV2ViQVZQbGF5ZXJDb250cm9sbGVyKiBwbGF5ZXJDb250
cm9sbGVyID0gbV9wbGF5ZXJDb250cm9sbGVyLmdldCgpOwogICAgIHBsYXllckNvbnRyb2xsZXIu
ZXh0ZXJuYWxQbGF5YmFja0FpclBsYXlEZXZpY2VMb2NhbGl6ZWROYW1lID0gbG9jYWxpemVkRGV2
aWNlTmFtZTsKICAgICBwbGF5ZXJDb250cm9sbGVyLmV4dGVybmFsUGxheWJhY2tUeXBlID0gZXh0
ZXJuYWxQbGF5YmFja1R5cGU7CiAgICAgcGxheWVyQ29udHJvbGxlci5leHRlcm5hbFBsYXliYWNr
QWN0aXZlID0gZW5hYmxlZDsKLQotICAgIGlmIChtX2NsaWVudCkKLSAgICAgICAgbV9jbGllbnQt
PmV4dGVybmFsUGxheWJhY2tFbmFibGVkQ2hhbmdlZChlbmFibGVkKTsKIH0KIAotdm9pZCBXZWJQ
bGF5YmFja1Nlc3Npb25JbnRlcmZhY2VBVktpdDo6c2V0V2lyZWxlc3NWaWRlb1BsYXliYWNrRGlz
YWJsZWQoYm9vbCBkaXNhYmxlZCkKK3ZvaWQgV2ViUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlQVZL
aXQ6OndpcmVsZXNzVmlkZW9QbGF5YmFja0Rpc2FibGVkQ2hhbmdlZChib29sIGRpc2FibGVkKQog
ewogICAgIFttX3BsYXllckNvbnRyb2xsZXIgc2V0QWxsb3dzRXh0ZXJuYWxQbGF5YmFjazohZGlz
YWJsZWRdOwogfQogCi1ib29sIFdlYlBsYXliYWNrU2Vzc2lvbkludGVyZmFjZUFWS2l0Ojp3aXJl
bGVzc1ZpZGVvUGxheWJhY2tEaXNhYmxlZCgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIFttX3BsYXll
ckNvbnRyb2xsZXIgYWxsb3dzRXh0ZXJuYWxQbGF5YmFja107Ci19Ci0KIHZvaWQgV2ViUGxheWJh
Y2tTZXNzaW9uSW50ZXJmYWNlQVZLaXQ6OmludmFsaWRhdGUoKQogewotICAgIG1fcGxheWJhY2tT
ZXNzaW9uTW9kZWwgPSBuaWw7CisgICAgaWYgKCFtX3BsYXliYWNrU2Vzc2lvbk1vZGVsKQorICAg
ICAgICByZXR1cm47CisKKyAgICBbbV9wbGF5ZXJDb250cm9sbGVyIHNldERlbGVnYXRlOm51bGxw
dHJdOworICAgIG1fcGxheWJhY2tTZXNzaW9uTW9kZWwtPnJlbW92ZUNsaWVudCgqdGhpcyk7Cisg
ICAgbV9wbGF5YmFja1Nlc3Npb25Nb2RlbCA9IG51bGxwdHI7CiB9CiAKIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9XZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVy
QVZLaXQubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvV2ViVmlkZW9GdWxsc2NyZWVu
Q29udHJvbGxlckFWS2l0Lm1tCmluZGV4IGQ2MjE2ODAyZTAwMDJhMTJjMDMxZTUzMmNjZjNiZTMy
OGIzMDI2OWQuLjg5ZDhjMzk2YjMzODI4NTk5Yzk5Yzk3MTE4YzllYjFkYzY2NGM1YzUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9XZWJWaWRlb0Z1bGxzY3JlZW5Db250
cm9sbGVyQVZLaXQubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1dlYlZpZGVv
RnVsbHNjcmVlbkNvbnRyb2xsZXJBVktpdC5tbQpAQCAtOTEsNyArOTEsNiBAQCBzdGF0aWMgSW50
UmVjdCBlbGVtZW50UmVjdEluV2luZG93KEhUTUxWaWRlb0VsZW1lbnQqIHZpZGVvRWxlbWVudCkK
IH0KIAogY2xhc3MgV2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlckNvbnRleHQ7Ci1jbGFzcyBX
ZWJWaWRlb0Z1bGxzY3JlZW5TZXNzaW9uTW9kZWw7CiAKIEBpbnRlcmZhY2UgV2ViVmlkZW9GdWxs
c2NyZWVuQ29udHJvbGxlciAoZGVsZWdhdGUpCiAtKHZvaWQpZGlkRmluaXNoRnVsbHNjcmVlbjoo
V2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlckNvbnRleHQqKWNvbnRleHQ7CkBAIC0xMDAsNyAr
OTksMTAgQEAgQGVuZAogY2xhc3MgV2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlckNvbnRleHQg
ZmluYWwKICAgICA6IHByaXZhdGUgV2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlCiAgICAgLCBw
cml2YXRlIFdlYlZpZGVvRnVsbHNjcmVlbk1vZGVsCisgICAgLCBwcml2YXRlIFdlYlZpZGVvRnVs
bHNjcmVlbk1vZGVsQ2xpZW50CiAgICAgLCBwcml2YXRlIFdlYlZpZGVvRnVsbHNjcmVlbkNoYW5n
ZU9ic2VydmVyCisgICAgLCBwcml2YXRlIFdlYlBsYXliYWNrU2Vzc2lvbk1vZGVsCisgICAgLCBw
cml2YXRlIFdlYlBsYXliYWNrU2Vzc2lvbk1vZGVsQ2xpZW50CiAgICAgLCBwdWJsaWMgVGhyZWFk
U2FmZVJlZkNvdW50ZWQ8V2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlckNvbnRleHQ+IHsKIAog
cHVibGljOgpAQCAtMTE1LDE5ICsxMTcsNiBAQCBwdWJsaWM6CiAgICAgdm9pZCByZXF1ZXN0SGlk
ZUFuZEV4aXRGdWxsc2NyZWVuKCk7CiAgICAgdm9pZCBpbnZhbGlkYXRlKCk7CiAKLSAgICB2b2lk
IHBsYXkoKTsKLSAgICB2b2lkIHBhdXNlKCk7Ci0gICAgdm9pZCB0b2dnbGVQbGF5U3RhdGUoKTsK
LSAgICB2b2lkIGJlZ2luU2NydWJiaW5nKCk7Ci0gICAgdm9pZCBlbmRTY3J1YmJpbmcoKTsKLSAg
ICB2b2lkIHNlZWtUb1RpbWUoZG91YmxlKTsKLSAgICB2b2lkIGZhc3RTZWVrKGRvdWJsZSB0aW1l
KTsKLSAgICB2b2lkIGJlZ2luU2Nhbm5pbmdGb3J3YXJkKCk7Ci0gICAgdm9pZCBiZWdpblNjYW5u
aW5nQmFja3dhcmQoKTsKLSAgICB2b2lkIGVuZFNjYW5uaW5nKCk7Ci0gICAgdm9pZCBzZWxlY3RB
dWRpb01lZGlhT3B0aW9uKHVpbnQ2NF90KTsKLSAgICB2b2lkIHNlbGVjdExlZ2libGVNZWRpYU9w
dGlvbih1aW50NjRfdCk7Ci0KIHByaXZhdGU6CiAgICAgV2ViVmlkZW9GdWxsc2NyZWVuQ29udHJv
bGxlckNvbnRleHQoKSB7IH0KIApAQCAtMTM4LDEwNyArMTI3LDcyIEBAIHByaXZhdGU6CiAgICAg
dm9pZCBkaWRDbGVhbnVwRnVsbHNjcmVlbigpIG92ZXJyaWRlOwogICAgIHZvaWQgZnVsbHNjcmVl
bk1heVJldHVyblRvSW5saW5lKCkgb3ZlcnJpZGU7CiAKLSAgICAvLyBXZWJWaWRlb0Z1bGxzY3Jl
ZW5JbnRlcmZhY2UKLSAgICB2b2lkIHJlc2V0TWVkaWFTdGF0ZSgpIG92ZXJyaWRlOwotICAgIHZv
aWQgc2V0RHVyYXRpb24oZG91YmxlKSBvdmVycmlkZTsKLSAgICB2b2lkIHNldEN1cnJlbnRUaW1l
KGRvdWJsZSBjdXJyZW50VGltZSwgZG91YmxlIGFuY2hvclRpbWUpIG92ZXJyaWRlOwotICAgIHZv
aWQgc2V0QnVmZmVyZWRUaW1lKGRvdWJsZSkgb3ZlcnJpZGU7Ci0gICAgdm9pZCBzZXRSYXRlKGJv
b2wgaXNQbGF5aW5nLCBmbG9hdCBwbGF5YmFja1JhdGUpIG92ZXJyaWRlOwotICAgIHZvaWQgc2V0
VmlkZW9EaW1lbnNpb25zKGJvb2wgaGFzVmlkZW8sIGZsb2F0IHdpZHRoLCBmbG9hdCBoZWlnaHQp
IG92ZXJyaWRlOwotICAgIHZvaWQgc2V0U2Vla2FibGVSYW5nZXMoY29uc3QgVGltZVJhbmdlcyYp
IG92ZXJyaWRlOwotICAgIHZvaWQgc2V0Q2FuUGxheUZhc3RSZXZlcnNlKGJvb2wpIG92ZXJyaWRl
OwotICAgIHZvaWQgc2V0QXVkaW9NZWRpYVNlbGVjdGlvbk9wdGlvbnMoY29uc3QgVmVjdG9yPFN0
cmluZz4mIG9wdGlvbnMsIHVpbnQ2NF90IHNlbGVjdGVkSW5kZXgpIG92ZXJyaWRlOwotICAgIHZv
aWQgc2V0TGVnaWJsZU1lZGlhU2VsZWN0aW9uT3B0aW9ucyhjb25zdCBWZWN0b3I8U3RyaW5nPiYg
b3B0aW9ucywgdWludDY0X3Qgc2VsZWN0ZWRJbmRleCkgb3ZlcnJpZGU7Ci0gICAgdm9pZCBzZXRF
eHRlcm5hbFBsYXliYWNrKGJvb2wgZW5hYmxlZCwgRXh0ZXJuYWxQbGF5YmFja1RhcmdldFR5cGUs
IFN0cmluZyBsb2NhbGl6ZWREZXZpY2VOYW1lKSBvdmVycmlkZTsKLSAgICB2b2lkIHNldFdpcmVs
ZXNzVmlkZW9QbGF5YmFja0Rpc2FibGVkKGJvb2wpIG92ZXJyaWRlOworICAgIC8vIFdlYlZpZGVv
RnVsbHNjcmVlbk1vZGVsQ2xpZW50CisgICAgdm9pZCBoYXNWaWRlb0NoYW5nZWQoYm9vbCkgb3Zl
cnJpZGU7CisgICAgdm9pZCB2aWRlb0RpbWVuc2lvbnNDaGFuZ2VkKGNvbnN0IEZsb2F0U2l6ZSYp
IG92ZXJyaWRlOworCisgICAgLy8gV2ViUGxheWJhY2tTZXNzaW9uTW9kZWwKKyAgICB2b2lkIGFk
ZENsaWVudChXZWJQbGF5YmFja1Nlc3Npb25Nb2RlbENsaWVudCYpIG92ZXJyaWRlOworICAgIHZv
aWQgcmVtb3ZlQ2xpZW50KFdlYlBsYXliYWNrU2Vzc2lvbk1vZGVsQ2xpZW50Jikgb3ZlcnJpZGU7
CisgICAgdm9pZCBwbGF5KCkgb3ZlcnJpZGU7CisgICAgdm9pZCBwYXVzZSgpIG92ZXJyaWRlOwor
ICAgIHZvaWQgdG9nZ2xlUGxheVN0YXRlKCkgb3ZlcnJpZGU7CisgICAgdm9pZCBiZWdpblNjcnVi
YmluZygpIG92ZXJyaWRlOworICAgIHZvaWQgZW5kU2NydWJiaW5nKCkgb3ZlcnJpZGU7CisgICAg
dm9pZCBzZWVrVG9UaW1lKGRvdWJsZSkgb3ZlcnJpZGU7CisgICAgdm9pZCBmYXN0U2Vlayhkb3Vi
bGUgdGltZSkgb3ZlcnJpZGU7CisgICAgdm9pZCBiZWdpblNjYW5uaW5nRm9yd2FyZCgpIG92ZXJy
aWRlOworICAgIHZvaWQgYmVnaW5TY2FubmluZ0JhY2t3YXJkKCkgb3ZlcnJpZGU7CisgICAgdm9p
ZCBlbmRTY2FubmluZygpIG92ZXJyaWRlOworICAgIHZvaWQgc2VsZWN0QXVkaW9NZWRpYU9wdGlv
bih1aW50NjRfdCkgb3ZlcnJpZGU7CisgICAgdm9pZCBzZWxlY3RMZWdpYmxlTWVkaWFPcHRpb24o
dWludDY0X3QpIG92ZXJyaWRlOworICAgIGRvdWJsZSBkdXJhdGlvbigpIGNvbnN0IG92ZXJyaWRl
OworICAgIGRvdWJsZSBjdXJyZW50VGltZSgpIGNvbnN0IG92ZXJyaWRlOworICAgIGRvdWJsZSBi
dWZmZXJlZFRpbWUoKSBjb25zdCBvdmVycmlkZTsKKyAgICBib29sIGlzUGxheWluZygpIGNvbnN0
IG92ZXJyaWRlOworICAgIGZsb2F0IHBsYXliYWNrUmF0ZSgpIGNvbnN0IG92ZXJyaWRlOworICAg
IFJlZjxUaW1lUmFuZ2VzPiBzZWVrYWJsZVJhbmdlcygpIGNvbnN0IG92ZXJyaWRlOworICAgIGJv
b2wgY2FuUGxheUZhc3RSZXZlcnNlKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgVmVjdG9yPFN0cmlu
Zz4gYXVkaW9NZWRpYVNlbGVjdGlvbk9wdGlvbnMoKSBjb25zdCBvdmVycmlkZTsKKyAgICB1aW50
NjRfdCBhdWRpb01lZGlhU2VsZWN0ZWRJbmRleCgpIGNvbnN0IG92ZXJyaWRlOworICAgIFZlY3Rv
cjxTdHJpbmc+IGxlZ2libGVNZWRpYVNlbGVjdGlvbk9wdGlvbnMoKSBjb25zdCBvdmVycmlkZTsK
KyAgICB1aW50NjRfdCBsZWdpYmxlTWVkaWFTZWxlY3RlZEluZGV4KCkgY29uc3Qgb3ZlcnJpZGU7
CisgICAgYm9vbCBleHRlcm5hbFBsYXliYWNrRW5hYmxlZCgpIGNvbnN0IG92ZXJyaWRlOworICAg
IEV4dGVybmFsUGxheWJhY2tUYXJnZXRUeXBlIGV4dGVybmFsUGxheWJhY2tUYXJnZXRUeXBlKCkg
Y29uc3Qgb3ZlcnJpZGU7CisgICAgU3RyaW5nIGV4dGVybmFsUGxheWJhY2tMb2NhbGl6ZWREZXZp
Y2VOYW1lKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgYm9vbCB3aXJlbGVzc1ZpZGVvUGxheWJhY2tE
aXNhYmxlZCgpIGNvbnN0IG92ZXJyaWRlOworCisgICAgLy8gV2ViUGxheWJhY2tTZXNzaW9uTW9k
ZWxDbGllbnQKKyAgICB2b2lkIGR1cmF0aW9uQ2hhbmdlZChkb3VibGUpIG92ZXJyaWRlOworICAg
IHZvaWQgY3VycmVudFRpbWVDaGFuZ2VkKGRvdWJsZSBjdXJyZW50VGltZSwgZG91YmxlIGFuY2hv
clRpbWUpIG92ZXJyaWRlOworICAgIHZvaWQgYnVmZmVyZWRUaW1lQ2hhbmdlZChkb3VibGUpIG92
ZXJyaWRlOworICAgIHZvaWQgcmF0ZUNoYW5nZWQoYm9vbCBpc1BsYXlpbmcsIGZsb2F0IHBsYXli
YWNrUmF0ZSkgb3ZlcnJpZGU7CisgICAgdm9pZCBzZWVrYWJsZVJhbmdlc0NoYW5nZWQoY29uc3Qg
VGltZVJhbmdlcyYpIG92ZXJyaWRlOworICAgIHZvaWQgY2FuUGxheUZhc3RSZXZlcnNlQ2hhbmdl
ZChib29sKSBvdmVycmlkZTsKKyAgICB2b2lkIGF1ZGlvTWVkaWFTZWxlY3Rpb25PcHRpb25zQ2hh
bmdlZChjb25zdCBWZWN0b3I8U3RyaW5nPiYgb3B0aW9ucywgdWludDY0X3Qgc2VsZWN0ZWRJbmRl
eCkgb3ZlcnJpZGU7CisgICAgdm9pZCBsZWdpYmxlTWVkaWFTZWxlY3Rpb25PcHRpb25zQ2hhbmdl
ZChjb25zdCBWZWN0b3I8U3RyaW5nPiYgb3B0aW9ucywgdWludDY0X3Qgc2VsZWN0ZWRJbmRleCkg
b3ZlcnJpZGU7CisgICAgdm9pZCBleHRlcm5hbFBsYXliYWNrQ2hhbmdlZChib29sIGVuYWJsZWQs
IFdlYlBsYXliYWNrU2Vzc2lvbk1vZGVsOjpFeHRlcm5hbFBsYXliYWNrVGFyZ2V0VHlwZSwgY29u
c3QgU3RyaW5nJiBsb2NhbGl6ZWREZXZpY2VOYW1lKSBvdmVycmlkZTsKKyAgICB2b2lkIHdpcmVs
ZXNzVmlkZW9QbGF5YmFja0Rpc2FibGVkQ2hhbmdlZChib29sKSBvdmVycmlkZTsKIAogICAgIC8v
IFdlYlZpZGVvRnVsbHNjcmVlbk1vZGVsCisgICAgdm9pZCBhZGRDbGllbnQoV2ViVmlkZW9GdWxs
c2NyZWVuTW9kZWxDbGllbnQmKSBvdmVycmlkZTsKKyAgICB2b2lkIHJlbW92ZUNsaWVudChXZWJW
aWRlb0Z1bGxzY3JlZW5Nb2RlbENsaWVudCYpIG92ZXJyaWRlOwogICAgIHZvaWQgcmVxdWVzdEZ1
bGxzY3JlZW5Nb2RlKEhUTUxNZWRpYUVsZW1lbnRFbnVtczo6VmlkZW9GdWxsc2NyZWVuTW9kZSkg
b3ZlcnJpZGU7CiAgICAgdm9pZCBzZXRWaWRlb0xheWVyRnJhbWUoRmxvYXRSZWN0KSBvdmVycmlk
ZTsKICAgICB2b2lkIHNldFZpZGVvTGF5ZXJHcmF2aXR5KFdlYlZpZGVvRnVsbHNjcmVlbk1vZGVs
OjpWaWRlb0dyYXZpdHkpIG92ZXJyaWRlOwogICAgIHZvaWQgZnVsbHNjcmVlbk1vZGVDaGFuZ2Vk
KEhUTUxNZWRpYUVsZW1lbnRFbnVtczo6VmlkZW9GdWxsc2NyZWVuTW9kZSkgb3ZlcnJpZGU7CiAg
ICAgYm9vbCBpc1Zpc2libGUoKSBjb25zdCBvdmVycmlkZTsKKyAgICBib29sIGhhc1ZpZGVvKCkg
Y29uc3Qgb3ZlcnJpZGU7CisgICAgRmxvYXRTaXplIHZpZGVvRGltZW5zaW9ucygpIGNvbnN0IG92
ZXJyaWRlOwogCisgICAgSGFzaFNldDxXZWJQbGF5YmFja1Nlc3Npb25Nb2RlbENsaWVudCo+IG1f
cGxheWJhY2tDbGllbnRzOworICAgIEhhc2hTZXQ8V2ViVmlkZW9GdWxsc2NyZWVuTW9kZWxDbGll
bnQqPiBtX2Z1bGxzY3JlZW5DbGllbnRzOwogICAgIFJlZlB0cjxXZWJWaWRlb0Z1bGxzY3JlZW5J
bnRlcmZhY2VBVktpdD4gbV9pbnRlcmZhY2U7Ci0gICAgUmVmUHRyPFdlYlZpZGVvRnVsbHNjcmVl
bk1vZGVsVmlkZW9FbGVtZW50PiBtX21vZGVsOworICAgIFJlZlB0cjxXZWJWaWRlb0Z1bGxzY3Jl
ZW5Nb2RlbFZpZGVvRWxlbWVudD4gbV9mdWxsc2NyZWVuTW9kZWw7CisgICAgUmVmUHRyPFdlYlBs
YXliYWNrU2Vzc2lvbk1vZGVsTWVkaWFFbGVtZW50PiBtX3BsYXliYWNrTW9kZWw7CiAgICAgUmVm
UHRyPEhUTUxWaWRlb0VsZW1lbnQ+IG1fdmlkZW9FbGVtZW50OwogICAgIFJldGFpblB0cjxVSVZp
ZXc+IG1fdmlkZW9GdWxsc2NyZWVuVmlldzsKICAgICBSZXRhaW5QdHI8V2ViVmlkZW9GdWxsc2Ny
ZWVuQ29udHJvbGxlcj4gbV9jb250cm9sbGVyOwotICAgIFJlZlB0cjxXZWJWaWRlb0Z1bGxzY3Jl
ZW5TZXNzaW9uTW9kZWw+IG1fc2Vzc2lvbk1vZGVsOwotfTsKLQotCi1jbGFzcyBXZWJWaWRlb0Z1
bGxzY3JlZW5TZXNzaW9uTW9kZWwgZmluYWw6IHB1YmxpYyBSZWZDb3VudGVkPFdlYlZpZGVvRnVs
bHNjcmVlblNlc3Npb25Nb2RlbD4sIHB1YmxpYyBXZWJDb3JlOjpXZWJQbGF5YmFja1Nlc3Npb25N
b2RlbCAgewotcHVibGljOgotICAgIHN0YXRpYyBSZWY8V2ViVmlkZW9GdWxsc2NyZWVuU2Vzc2lv
bk1vZGVsPiBjcmVhdGUoV2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlckNvbnRleHQmIGNvbnRy
b2xsZXIpCi0gICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBXZWJWaWRlb0Z1bGxz
Y3JlZW5TZXNzaW9uTW9kZWwoY29udHJvbGxlcikpOwotICAgIH0KLSAgICB2aXJ0dWFsIH5XZWJW
aWRlb0Z1bGxzY3JlZW5TZXNzaW9uTW9kZWwoKSB7IH0KLQotICAgIHZvaWQgaW52YWxpZGF0ZSgp
IHsgbV9jb250cm9sbGVyID0gbnVsbHB0cjsgfQotCi0gICAgdm9pZCBzZXREdXJhdGlvbihkb3Vi
bGUgZHVyYXRpb24pIHsgbV9kdXJhdGlvbiA9IGR1cmF0aW9uOyB9Ci0gICAgdm9pZCBzZXRDdXJy
ZW50VGltZShkb3VibGUgY3VycmVudFRpbWUpIHsgbV9jdXJyZW50VGltZSA9IGN1cnJlbnRUaW1l
OyB9Ci0gICAgdm9pZCBzZXRCdWZmZXJlZFRpbWUoZG91YmxlIGJ1ZmZlcmVkVGltZSkgeyBtX2J1
ZmZlcmVkVGltZSA9IGJ1ZmZlcmVkVGltZTsgfQotICAgIHZvaWQgc2V0SXNQbGF5aW5nKGJvb2wg
aXNQbGF5aW5nKSB7IG1faXNQbGF5aW5nID0gaXNQbGF5aW5nOyB9Ci0gICAgdm9pZCBzZXRQbGF5
YmFja1JhdGUoZmxvYXQgcGxheWJhY2tSYXRlKSB7IG1fcGxheWJhY2tSYXRlID0gcGxheWJhY2tS
YXRlOyB9Ci0gICAgdm9pZCBzZXRTZWVrYWJsZVJhbmdlcyhXZWJDb3JlOjpUaW1lUmFuZ2VzJiBz
ZWVrYWJsZVJhbmdlcykgeyBtX3NlZWthYmxlUmFuZ2VzID0gc2Vla2FibGVSYW5nZXM7IH0KLSAg
ICB2b2lkIHNldENhblBsYXlGYXN0UmV2ZXJzZShib29sIGNhblBsYXlGYXN0UmV2ZXJzZSkgeyBt
X2NhblBsYXlGYXN0UmV2ZXJzZSA9IGNhblBsYXlGYXN0UmV2ZXJzZTsgfQotICAgIHZvaWQgc2V0
QXVkaW9NZWRpYVNlbGVjdGlvbk9wdGlvbnMoY29uc3QgVmVjdG9yPFdURjo6U3RyaW5nPiYgYXVk
aW9NZWRpYVNlbGVjdGlvbk9wdGlvbnMpIHsgbV9hdWRpb01lZGlhU2VsZWN0aW9uT3B0aW9ucyA9
IGF1ZGlvTWVkaWFTZWxlY3Rpb25PcHRpb25zOyB9Ci0gICAgdm9pZCBzZXRBdWRpb01lZGlhU2Vs
ZWN0ZWRJbmRleCh1aW50NjRfdCBhdWRpb01lZGlhU2VsZWN0ZWRJbmRleCkgeyBtX2F1ZGlvTWVk
aWFTZWxlY3RlZEluZGV4ID0gYXVkaW9NZWRpYVNlbGVjdGVkSW5kZXg7IH0KLSAgICB2b2lkIHNl
dExlZ2libGVNZWRpYVNlbGVjdGlvbk9wdGlvbnMoY29uc3QgVmVjdG9yPFdURjo6U3RyaW5nPiYg
bGVnaWJsZU1lZGlhU2VsZWN0aW9uT3B0aW9ucykgeyBtX2xlZ2libGVNZWRpYVNlbGVjdGlvbk9w
dGlvbnMgPSBsZWdpYmxlTWVkaWFTZWxlY3Rpb25PcHRpb25zOyB9Ci0gICAgdm9pZCBzZXRMZWdp
YmxlTWVkaWFTZWxlY3RlZEluZGV4KHVpbnQ2NF90IGxlZ2libGVNZWRpYVNlbGVjdGVkSW5kZXgp
IHsgbV9sZWdpYmxlTWVkaWFTZWxlY3RlZEluZGV4ID0gbGVnaWJsZU1lZGlhU2VsZWN0ZWRJbmRl
eDsgfQotICAgIHZvaWQgc2V0RXh0ZXJuYWxQbGF5YmFja0VuYWJsZWQoYm9vbCBleHRlcm5hbFBs
YXliYWNrRW5hYmxlZCkgeyBtX2V4dGVybmFsUGxheWJhY2tFbmFibGVkID0gZXh0ZXJuYWxQbGF5
YmFja0VuYWJsZWQ7IH0KLSAgICB2b2lkIHNldFdpcmVsZXNzVmlkZW9QbGF5YmFja0Rpc2FibGVk
KGJvb2wgd2lyZWxlc3NWaWRlb1BsYXliYWNrRGlzYWJsZWQpIHsgbV93aXJlbGVzc1ZpZGVvUGxh
eWJhY2tEaXNhYmxlZCA9IHdpcmVsZXNzVmlkZW9QbGF5YmFja0Rpc2FibGVkOyB9Ci0KLXByaXZh
dGU6Ci0gICAgV2ViVmlkZW9GdWxsc2NyZWVuU2Vzc2lvbk1vZGVsKFdlYlZpZGVvRnVsbHNjcmVl
bkNvbnRyb2xsZXJDb250ZXh0JiBjb250cm9sbGVyKQotICAgICAgICA6IG1fY29udHJvbGxlcigm
Y29udHJvbGxlcikKLSAgICB7Ci0gICAgfQotCi0gICAgdm9pZCBwbGF5KCkgZmluYWw7Ci0gICAg
dm9pZCBwYXVzZSgpIGZpbmFsOwotICAgIHZvaWQgdG9nZ2xlUGxheVN0YXRlKCkgZmluYWw7Ci0g
ICAgdm9pZCBiZWdpblNjcnViYmluZygpIGZpbmFsOwotICAgIHZvaWQgZW5kU2NydWJiaW5nKCkg
ZmluYWw7Ci0gICAgdm9pZCBzZWVrVG9UaW1lKGRvdWJsZSkgZmluYWw7Ci0gICAgdm9pZCBmYXN0
U2Vlayhkb3VibGUgdGltZSkgZmluYWw7Ci0gICAgdm9pZCBiZWdpblNjYW5uaW5nRm9yd2FyZCgp
IGZpbmFsOwotICAgIHZvaWQgYmVnaW5TY2FubmluZ0JhY2t3YXJkKCkgZmluYWw7Ci0gICAgdm9p
ZCBlbmRTY2FubmluZygpIGZpbmFsOwotICAgIHZvaWQgc2VsZWN0QXVkaW9NZWRpYU9wdGlvbih1
aW50NjRfdCkgZmluYWw7Ci0gICAgdm9pZCBzZWxlY3RMZWdpYmxlTWVkaWFPcHRpb24odWludDY0
X3QpIGZpbmFsOwotCi0gICAgZG91YmxlIGR1cmF0aW9uKCkgY29uc3QgZmluYWwgeyByZXR1cm4g
bV9kdXJhdGlvbjsgfQotICAgIGRvdWJsZSBjdXJyZW50VGltZSgpIGNvbnN0IGZpbmFsIHsgcmV0
dXJuIG1fY3VycmVudFRpbWU7IH0KLSAgICBkb3VibGUgYnVmZmVyZWRUaW1lKCkgY29uc3QgZmlu
YWwgeyByZXR1cm4gbV9idWZmZXJlZFRpbWU7IH0KLSAgICBib29sIGlzUGxheWluZygpIGNvbnN0
IGZpbmFsIHsgcmV0dXJuIG1faXNQbGF5aW5nOyB9Ci0gICAgZmxvYXQgcGxheWJhY2tSYXRlKCkg
Y29uc3QgZmluYWwgeyByZXR1cm4gbV9wbGF5YmFja1JhdGU7IH0KLSAgICBSZWY8V2ViQ29yZTo6
VGltZVJhbmdlcz4gc2Vla2FibGVSYW5nZXMoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX3NlZWth
YmxlUmFuZ2VzLmNvcHlSZWYoKTsgfQotICAgIGJvb2wgY2FuUGxheUZhc3RSZXZlcnNlKCkgY29u
c3QgZmluYWwgeyByZXR1cm4gbV9jYW5QbGF5RmFzdFJldmVyc2U7IH0KLSAgICBWZWN0b3I8V1RG
OjpTdHJpbmc+IGF1ZGlvTWVkaWFTZWxlY3Rpb25PcHRpb25zKCkgY29uc3QgZmluYWwgeyByZXR1
cm4gbV9hdWRpb01lZGlhU2VsZWN0aW9uT3B0aW9uczsgfQotICAgIHVpbnQ2NF90IGF1ZGlvTWVk
aWFTZWxlY3RlZEluZGV4KCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9hdWRpb01lZGlhU2VsZWN0
ZWRJbmRleDsgfQotICAgIFZlY3RvcjxXVEY6OlN0cmluZz4gbGVnaWJsZU1lZGlhU2VsZWN0aW9u
T3B0aW9ucygpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fbGVnaWJsZU1lZGlhU2VsZWN0aW9uT3B0
aW9uczsgfQotICAgIHVpbnQ2NF90IGxlZ2libGVNZWRpYVNlbGVjdGVkSW5kZXgoKSBjb25zdCBm
aW5hbCB7IHJldHVybiBtX2xlZ2libGVNZWRpYVNlbGVjdGVkSW5kZXg7IH0KLSAgICBib29sIGV4
dGVybmFsUGxheWJhY2tFbmFibGVkKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9leHRlcm5hbFBs
YXliYWNrRW5hYmxlZDsgfQotICAgIGJvb2wgd2lyZWxlc3NWaWRlb1BsYXliYWNrRGlzYWJsZWQo
KSBjb25zdCBmaW5hbCB7IHJldHVybiBtX3dpcmVsZXNzVmlkZW9QbGF5YmFja0Rpc2FibGVkOyB9
Ci0KLSAgICBXZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyQ29udGV4dCogbV9jb250cm9sbGVy
OwotICAgIGRvdWJsZSBtX2R1cmF0aW9uIHsgMCB9OwotICAgIGRvdWJsZSBtX2N1cnJlbnRUaW1l
IHsgMCB9OwotICAgIGRvdWJsZSBtX2J1ZmZlcmVkVGltZSB7IDAgfTsKLSAgICBib29sIG1faXNQ
bGF5aW5nIHsgZmFsc2UgfTsKLSAgICBmbG9hdCBtX3BsYXliYWNrUmF0ZSB7IDAgfTsKLSAgICBS
ZWY8V2ViQ29yZTo6VGltZVJhbmdlcz4gbV9zZWVrYWJsZVJhbmdlcyB7IFdlYkNvcmU6OlRpbWVS
YW5nZXM6OmNyZWF0ZSgpIH07Ci0gICAgYm9vbCBtX2NhblBsYXlGYXN0UmV2ZXJzZSB7IGZhbHNl
IH07Ci0gICAgVmVjdG9yPFdURjo6U3RyaW5nPiBtX2F1ZGlvTWVkaWFTZWxlY3Rpb25PcHRpb25z
OwotICAgIHVpbnQ2NF90IG1fYXVkaW9NZWRpYVNlbGVjdGVkSW5kZXggeyAwIH07Ci0gICAgVmVj
dG9yPFdURjo6U3RyaW5nPiBtX2xlZ2libGVNZWRpYVNlbGVjdGlvbk9wdGlvbnM7Ci0gICAgdWlu
dDY0X3QgbV9sZWdpYmxlTWVkaWFTZWxlY3RlZEluZGV4IHsgMCB9OwotICAgIGJvb2wgbV9leHRl
cm5hbFBsYXliYWNrRW5hYmxlZCB7IGZhbHNlIH07Ci0gICAgYm9vbCBtX3dpcmVsZXNzVmlkZW9Q
bGF5YmFja0Rpc2FibGVkIHsgZmFsc2UgfTsKIH07CiAKICNwcmFnbWEgbWFyayBXZWJWaWRlb0Z1
bGxzY3JlZW5DaGFuZ2VPYnNlcnZlcgpAQCAtMjQ2LDExICsyMDAsMTEgQEAgcHJpdmF0ZToKIHZv
aWQgV2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlckNvbnRleHQ6OmRpZFNldHVwRnVsbHNjcmVl
bigpCiB7CiAgICAgQVNTRVJUKGlzVUlUaHJlYWQoKSk7Ci0gICAgUmVmUHRyPFdlYlZpZGVvRnVs
bHNjcmVlbkNvbnRyb2xsZXJDb250ZXh0PiBwcm90ZWN0ZWRUaGlzKHRoaXMpOwogICAgIFJldGFp
blB0cjxDQUxheWVyPiB2aWRlb0Z1bGxzY3JlZW5MYXllciA9IFttX3ZpZGVvRnVsbHNjcmVlblZp
ZXcgbGF5ZXJdOworICAgIFJlZlB0cjxXZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyQ29udGV4
dD4gcHJvdGVjdGVkVGhpcyh0aGlzKTsKICAgICBXZWJUaHJlYWRSdW4oW3Byb3RlY3RlZFRoaXMs
IHRoaXMsIHZpZGVvRnVsbHNjcmVlbkxheWVyXSB7CiAgICAgICAgIFt2aWRlb0Z1bGxzY3JlZW5M
YXllciBzZXRCYWNrZ3JvdW5kQ29sb3I6Y2FjaGVkQ0dDb2xvcihXZWJDb3JlOjpDb2xvcjo6dHJh
bnNwYXJlbnQpXTsKLSAgICAgICAgbV9tb2RlbC0+c2V0VmlkZW9GdWxsc2NyZWVuTGF5ZXIodmlk
ZW9GdWxsc2NyZWVuTGF5ZXIuZ2V0KCksIFtwcm90ZWN0ZWRUaGlzLCB0aGlzXSB7CisgICAgICAg
IG1fZnVsbHNjcmVlbk1vZGVsLT5zZXRWaWRlb0Z1bGxzY3JlZW5MYXllcih2aWRlb0Z1bGxzY3Jl
ZW5MYXllci5nZXQoKSwgW3Byb3RlY3RlZFRoaXMsIHRoaXNdIHsKICAgICAgICAgICAgIGRpc3Bh
dGNoX2FzeW5jKGRpc3BhdGNoX2dldF9tYWluX3F1ZXVlKCksIFtwcm90ZWN0ZWRUaGlzLCB0aGlz
XSB7CiAgICAgICAgICAgICAgICAgbV9pbnRlcmZhY2UtPmVudGVyRnVsbHNjcmVlbigpOwogICAg
ICAgICAgICAgfSk7CkBAIC0yNjMsNyArMjE3LDcgQEAgdm9pZCBXZWJWaWRlb0Z1bGxzY3JlZW5D
b250cm9sbGVyQ29udGV4dDo6ZGlkRXhpdEZ1bGxzY3JlZW4oKQogICAgIEFTU0VSVChpc1VJVGhy
ZWFkKCkpOwogICAgIFJlZlB0cjxXZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyQ29udGV4dD4g
cHJvdGVjdGVkVGhpcyh0aGlzKTsKICAgICBXZWJUaHJlYWRSdW4oW3Byb3RlY3RlZFRoaXMsIHRo
aXNdIHsKLSAgICAgICAgbV9tb2RlbC0+c2V0VmlkZW9GdWxsc2NyZWVuTGF5ZXIobmlsLCBbcHJv
dGVjdGVkVGhpcywgdGhpc10geworICAgICAgICBtX2Z1bGxzY3JlZW5Nb2RlbC0+c2V0VmlkZW9G
dWxsc2NyZWVuTGF5ZXIobmlsLCBbcHJvdGVjdGVkVGhpcywgdGhpc10gewogICAgICAgICAgICAg
ZGlzcGF0Y2hfYXN5bmMoZGlzcGF0Y2hfZ2V0X21haW5fcXVldWUoKSwgW3Byb3RlY3RlZFRoaXMs
IHRoaXNdIHsKICAgICAgICAgICAgICAgICBtX2ludGVyZmFjZS0+Y2xlYW51cEZ1bGxzY3JlZW4o
KTsKICAgICAgICAgICAgIH0pOwpAQCAtMjc4LDE2ICsyMzIsMTQgQEAgdm9pZCBXZWJWaWRlb0Z1
bGxzY3JlZW5Db250cm9sbGVyQ29udGV4dDo6ZGlkQ2xlYW51cEZ1bGxzY3JlZW4oKQogICAgIG1f
aW50ZXJmYWNlLT5zZXRXZWJWaWRlb0Z1bGxzY3JlZW5DaGFuZ2VPYnNlcnZlcihudWxscHRyKTsK
ICAgICBtX2ludGVyZmFjZSA9IG51bGxwdHI7CiAgICAgbV92aWRlb0Z1bGxzY3JlZW5WaWV3ID0g
bmlsOwotICAgIG1fc2Vzc2lvbk1vZGVsLT5pbnZhbGlkYXRlKCk7Ci0gICAgbV9zZXNzaW9uTW9k
ZWwgPSBudWxscHRyOwogCiAgICAgUmVmUHRyPFdlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJD
b250ZXh0PiBwcm90ZWN0ZWRUaGlzKHRoaXMpOwogICAgIFdlYlRocmVhZFJ1bihbcHJvdGVjdGVk
VGhpcywgdGhpc10gewotICAgICAgICBtX21vZGVsLT5zZXRWaWRlb0Z1bGxzY3JlZW5MYXllcihu
aWwpOwotICAgICAgICBtX21vZGVsLT5zZXRXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2UobnVs
bHB0cik7Ci0gICAgICAgIG1fbW9kZWwtPnNldFZpZGVvRWxlbWVudChudWxscHRyKTsKLSAgICAg
ICAgbV9tb2RlbC0+cGxheWJhY2tTZXNzaW9uTW9kZWwoKS5zZXRNZWRpYUVsZW1lbnQobnVsbHB0
cik7Ci0gICAgICAgIG1fbW9kZWwgPSBudWxscHRyOworICAgICAgICBtX2Z1bGxzY3JlZW5Nb2Rl
bC0+c2V0VmlkZW9GdWxsc2NyZWVuTGF5ZXIobmlsKTsKKyAgICAgICAgbV9mdWxsc2NyZWVuTW9k
ZWwtPnNldFZpZGVvRWxlbWVudChudWxscHRyKTsKKyAgICAgICAgbV9wbGF5YmFja01vZGVsLT5z
ZXRNZWRpYUVsZW1lbnQobnVsbHB0cik7CisgICAgICAgIG1fZnVsbHNjcmVlbk1vZGVsLT5yZW1v
dmVDbGllbnQoKnRoaXMpOworICAgICAgICBtX2Z1bGxzY3JlZW5Nb2RlbCA9IG51bGxwdHI7CiAg
ICAgICAgIG1fdmlkZW9FbGVtZW50ID0gbnVsbHB0cjsKIAogICAgICAgICBbbV9jb250cm9sbGVy
IGRpZEZpbmlzaEZ1bGxzY3JlZW46dGhpc107CkBAIC0zMDYsMTYwICsyNTgsMTk3IEBAIHZvaWQg
V2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlckNvbnRleHQ6OmZ1bGxzY3JlZW5NYXlSZXR1cm5U
b0lubGluZSgpCiAgICAgfSk7CiB9CiAKLSNwcmFnbWEgbWFyayBXZWJWaWRlb0Z1bGxzY3JlZW5J
bnRlcmZhY2UKKyNwcmFnbWEgbWFyayBXZWJQbGF5YmFja1Nlc3Npb25Nb2RlbENsaWVudAogCi12
b2lkIFdlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJDb250ZXh0OjpyZXNldE1lZGlhU3RhdGUo
KQordm9pZCBXZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyQ29udGV4dDo6ZHVyYXRpb25DaGFu
Z2VkKGRvdWJsZSBkdXJhdGlvbikKIHsKLSAgICBBU1NFUlQoV2ViVGhyZWFkSXNDdXJyZW50KCkg
fHwgaXNNYWluVGhyZWFkKCkpOwotICAgIFJlZlB0cjxXZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9s
bGVyQ29udGV4dD4gcHJvdGVjdGVkVGhpcyh0aGlzKTsKLSAgICBkaXNwYXRjaF9hc3luYyhkaXNw
YXRjaF9nZXRfbWFpbl9xdWV1ZSgpLCBbcHJvdGVjdGVkVGhpcywgdGhpc10gewotICAgICAgICBp
ZiAobV9pbnRlcmZhY2UpCi0gICAgICAgICAgICBtX2ludGVyZmFjZS0+cmVzZXRNZWRpYVN0YXRl
KCk7Ci0gICAgfSk7CisgICAgaWYgKFdlYlRocmVhZElzQ3VycmVudCgpKSB7CisgICAgICAgIFJl
ZlB0cjxXZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyQ29udGV4dD4gcHJvdGVjdGVkVGhpcyh0
aGlzKTsKKyAgICAgICAgZGlzcGF0Y2hfYXN5bmMoZGlzcGF0Y2hfZ2V0X21haW5fcXVldWUoKSwg
W3Byb3RlY3RlZFRoaXMsIGR1cmF0aW9uXSB7CisgICAgICAgICAgICBwcm90ZWN0ZWRUaGlzLT5k
dXJhdGlvbkNoYW5nZWQoZHVyYXRpb24pOworICAgICAgICB9KTsKKyAgICAgICAgcmV0dXJuOwor
ICAgIH0KKworICAgIGZvciAoYXV0byYgY2xpZW50IDogbV9wbGF5YmFja0NsaWVudHMpCisgICAg
ICAgIGNsaWVudC0+ZHVyYXRpb25DaGFuZ2VkKGR1cmF0aW9uKTsKIH0KIAotdm9pZCBXZWJWaWRl
b0Z1bGxzY3JlZW5Db250cm9sbGVyQ29udGV4dDo6c2V0RHVyYXRpb24oZG91YmxlIGR1cmF0aW9u
KQordm9pZCBXZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyQ29udGV4dDo6Y3VycmVudFRpbWVD
aGFuZ2VkKGRvdWJsZSBjdXJyZW50VGltZSwgZG91YmxlIGFuY2hvclRpbWUpCiB7Ci0gICAgQVNT
RVJUKFdlYlRocmVhZElzQ3VycmVudCgpKTsKLSAgICBSZWZQdHI8V2ViVmlkZW9GdWxsc2NyZWVu
Q29udHJvbGxlckNvbnRleHQ+IHByb3RlY3RlZFRoaXModGhpcyk7Ci0gICAgZGlzcGF0Y2hfYXN5
bmMoZGlzcGF0Y2hfZ2V0X21haW5fcXVldWUoKSwgW3Byb3RlY3RlZFRoaXMsIHRoaXMsIGR1cmF0
aW9uXSB7Ci0gICAgICAgIGlmIChtX2ludGVyZmFjZSkKLSAgICAgICAgICAgIG1faW50ZXJmYWNl
LT5zZXREdXJhdGlvbihkdXJhdGlvbik7Ci0gICAgfSk7CisgICAgaWYgKFdlYlRocmVhZElzQ3Vy
cmVudCgpKSB7CisgICAgICAgIFJlZlB0cjxXZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyQ29u
dGV4dD4gcHJvdGVjdGVkVGhpcyh0aGlzKTsKKyAgICAgICAgZGlzcGF0Y2hfYXN5bmMoZGlzcGF0
Y2hfZ2V0X21haW5fcXVldWUoKSwgW3Byb3RlY3RlZFRoaXMsIGN1cnJlbnRUaW1lLCBhbmNob3JU
aW1lXSB7CisgICAgICAgICAgICBwcm90ZWN0ZWRUaGlzLT5jdXJyZW50VGltZUNoYW5nZWQoY3Vy
cmVudFRpbWUsIGFuY2hvclRpbWUpOworICAgICAgICB9KTsKKyAgICAgICAgcmV0dXJuOworICAg
IH0KKworICAgIGZvciAoYXV0byYgY2xpZW50IDogbV9wbGF5YmFja0NsaWVudHMpCisgICAgICAg
IGNsaWVudC0+Y3VycmVudFRpbWVDaGFuZ2VkKGN1cnJlbnRUaW1lLCBhbmNob3JUaW1lKTsKIH0K
IAotdm9pZCBXZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyQ29udGV4dDo6c2V0Q3VycmVudFRp
bWUoZG91YmxlIGN1cnJlbnRUaW1lLCBkb3VibGUgYW5jaG9yVGltZSkKK3ZvaWQgV2ViVmlkZW9G
dWxsc2NyZWVuQ29udHJvbGxlckNvbnRleHQ6OmJ1ZmZlcmVkVGltZUNoYW5nZWQoZG91YmxlIGJ1
ZmZlcmVkVGltZSkKIHsKLSAgICBBU1NFUlQoV2ViVGhyZWFkSXNDdXJyZW50KCkpOwotICAgIFJl
ZlB0cjxXZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyQ29udGV4dD4gcHJvdGVjdGVkVGhpcyh0
aGlzKTsKLSAgICBkaXNwYXRjaF9hc3luYyhkaXNwYXRjaF9nZXRfbWFpbl9xdWV1ZSgpLCBbcHJv
dGVjdGVkVGhpcywgdGhpcywgY3VycmVudFRpbWUsIGFuY2hvclRpbWVdIHsKLSAgICAgICAgaWYg
KG1faW50ZXJmYWNlKQotICAgICAgICAgICAgbV9pbnRlcmZhY2UtPnNldEN1cnJlbnRUaW1lKGN1
cnJlbnRUaW1lLCBhbmNob3JUaW1lKTsKLSAgICB9KTsKKyAgICBpZiAoV2ViVGhyZWFkSXNDdXJy
ZW50KCkpIHsKKyAgICAgICAgUmVmUHRyPFdlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJDb250
ZXh0PiBwcm90ZWN0ZWRUaGlzKHRoaXMpOworICAgICAgICBkaXNwYXRjaF9hc3luYyhkaXNwYXRj
aF9nZXRfbWFpbl9xdWV1ZSgpLCBbcHJvdGVjdGVkVGhpcywgYnVmZmVyZWRUaW1lXSB7CisgICAg
ICAgICAgICBwcm90ZWN0ZWRUaGlzLT5idWZmZXJlZFRpbWVDaGFuZ2VkKGJ1ZmZlcmVkVGltZSk7
CisgICAgICAgIH0pOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgZm9yIChhdXRvJiBj
bGllbnQgOiBtX3BsYXliYWNrQ2xpZW50cykKKyAgICAgICAgY2xpZW50LT5idWZmZXJlZFRpbWVD
aGFuZ2VkKGJ1ZmZlcmVkVGltZSk7CiB9CiAKLXZvaWQgV2ViVmlkZW9GdWxsc2NyZWVuQ29udHJv
bGxlckNvbnRleHQ6OnNldEJ1ZmZlcmVkVGltZShkb3VibGUgYnVmZmVyZWRUaW1lKQordm9pZCBX
ZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyQ29udGV4dDo6cmF0ZUNoYW5nZWQoYm9vbCBpc1Bs
YXlpbmcsIGZsb2F0IHBsYXliYWNrUmF0ZSkKIHsKLSAgICBBU1NFUlQoV2ViVGhyZWFkSXNDdXJy
ZW50KCkpOwotICAgIFJlZlB0cjxXZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyQ29udGV4dD4g
cHJvdGVjdGVkVGhpcyh0aGlzKTsKLSAgICBkaXNwYXRjaF9hc3luYyhkaXNwYXRjaF9nZXRfbWFp
bl9xdWV1ZSgpLCBbcHJvdGVjdGVkVGhpcywgdGhpcywgYnVmZmVyZWRUaW1lXSB7Ci0gICAgICAg
IGlmIChtX2ludGVyZmFjZSkKLSAgICAgICAgICAgIG1faW50ZXJmYWNlLT5zZXRCdWZmZXJlZFRp
bWUoYnVmZmVyZWRUaW1lKTsKLSAgICB9KTsKKyAgICBpZiAoV2ViVGhyZWFkSXNDdXJyZW50KCkp
IHsKKyAgICAgICAgUmVmUHRyPFdlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJDb250ZXh0PiBw
cm90ZWN0ZWRUaGlzKHRoaXMpOworICAgICAgICBkaXNwYXRjaF9hc3luYyhkaXNwYXRjaF9nZXRf
bWFpbl9xdWV1ZSgpLCBbcHJvdGVjdGVkVGhpcywgaXNQbGF5aW5nLCBwbGF5YmFja1JhdGVdIHsK
KyAgICAgICAgICAgIHByb3RlY3RlZFRoaXMtPnJhdGVDaGFuZ2VkKGlzUGxheWluZywgcGxheWJh
Y2tSYXRlKTsKKyAgICAgICAgfSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBmb3Ig
KGF1dG8mIGNsaWVudCA6IG1fcGxheWJhY2tDbGllbnRzKQorICAgICAgICBjbGllbnQtPnJhdGVD
aGFuZ2VkKGlzUGxheWluZywgcGxheWJhY2tSYXRlKTsKIH0KIAotdm9pZCBXZWJWaWRlb0Z1bGxz
Y3JlZW5Db250cm9sbGVyQ29udGV4dDo6c2V0UmF0ZShib29sIGlzUGxheWluZywgZmxvYXQgcGxh
eWJhY2tSYXRlKQordm9pZCBXZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyQ29udGV4dDo6aGFz
VmlkZW9DaGFuZ2VkKGJvb2wgaGFzVmlkZW8pCiB7Ci0gICAgQVNTRVJUKFdlYlRocmVhZElzQ3Vy
cmVudCgpKTsKLSAgICBSZWZQdHI8V2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlckNvbnRleHQ+
IHByb3RlY3RlZFRoaXModGhpcyk7Ci0gICAgZGlzcGF0Y2hfYXN5bmMoZGlzcGF0Y2hfZ2V0X21h
aW5fcXVldWUoKSwgW3Byb3RlY3RlZFRoaXMsIHRoaXMsIGlzUGxheWluZywgcGxheWJhY2tSYXRl
XSB7Ci0gICAgICAgIGlmIChtX2ludGVyZmFjZSkKLSAgICAgICAgICAgIG1faW50ZXJmYWNlLT5z
ZXRSYXRlKGlzUGxheWluZywgcGxheWJhY2tSYXRlKTsKLSAgICB9KTsKKyAgICBpZiAoV2ViVGhy
ZWFkSXNDdXJyZW50KCkpIHsKKyAgICAgICAgUmVmUHRyPFdlYlZpZGVvRnVsbHNjcmVlbkNvbnRy
b2xsZXJDb250ZXh0PiBwcm90ZWN0ZWRUaGlzKHRoaXMpOworICAgICAgICBkaXNwYXRjaF9hc3lu
YyhkaXNwYXRjaF9nZXRfbWFpbl9xdWV1ZSgpLCBbcHJvdGVjdGVkVGhpcywgaGFzVmlkZW9dIHsK
KyAgICAgICAgICAgIHByb3RlY3RlZFRoaXMtPmhhc1ZpZGVvQ2hhbmdlZChoYXNWaWRlbyk7Cisg
ICAgICAgIH0pOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgZm9yIChhdXRvJiBjbGll
bnQgOiBtX2Z1bGxzY3JlZW5DbGllbnRzKQorICAgICAgICBjbGllbnQtPmhhc1ZpZGVvQ2hhbmdl
ZChoYXNWaWRlbyk7CiB9CiAKLXZvaWQgV2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlckNvbnRl
eHQ6OnNldFZpZGVvRGltZW5zaW9ucyhib29sIGhhc1ZpZGVvLCBmbG9hdCB3aWR0aCwgZmxvYXQg
aGVpZ2h0KQordm9pZCBXZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyQ29udGV4dDo6dmlkZW9E
aW1lbnNpb25zQ2hhbmdlZChjb25zdCBGbG9hdFNpemUmIHZpZGVvRGltZW5zaW9ucykKIHsKICAg
ICBpZiAoV2ViVGhyZWFkSXNDdXJyZW50KCkpIHsKICAgICAgICAgUmVmUHRyPFdlYlZpZGVvRnVs
bHNjcmVlbkNvbnRyb2xsZXJDb250ZXh0PiBwcm90ZWN0ZWRUaGlzKHRoaXMpOwotICAgICAgICBk
aXNwYXRjaF9hc3luYyhkaXNwYXRjaF9nZXRfbWFpbl9xdWV1ZSgpLCBbcHJvdGVjdGVkVGhpcywg
dGhpcywgaGFzVmlkZW8sIHdpZHRoLCBoZWlnaHRdIHsKLSAgICAgICAgICAgIGlmIChtX2ludGVy
ZmFjZSkKLSAgICAgICAgICAgICAgICBtX2ludGVyZmFjZS0+c2V0VmlkZW9EaW1lbnNpb25zKGhh
c1ZpZGVvLCB3aWR0aCwgaGVpZ2h0KTsKKyAgICAgICAgZGlzcGF0Y2hfYXN5bmMoZGlzcGF0Y2hf
Z2V0X21haW5fcXVldWUoKSwgW3Byb3RlY3RlZFRoaXMsIHZpZGVvRGltZW5zaW9ucyA9IHZpZGVv
RGltZW5zaW9uc10geworICAgICAgICAgICAgcHJvdGVjdGVkVGhpcy0+dmlkZW9EaW1lbnNpb25z
Q2hhbmdlZCh2aWRlb0RpbWVuc2lvbnMpOwogICAgICAgICB9KTsKICAgICAgICAgcmV0dXJuOwog
ICAgIH0KIAotICAgIGlmIChtX2ludGVyZmFjZSkKLSAgICAgICAgbV9pbnRlcmZhY2UtPnNldFZp
ZGVvRGltZW5zaW9ucyhoYXNWaWRlbywgd2lkdGgsIGhlaWdodCk7CisgICAgZm9yIChhdXRvJiBj
bGllbnQgOiBtX2Z1bGxzY3JlZW5DbGllbnRzKQorICAgICAgICBjbGllbnQtPnZpZGVvRGltZW5z
aW9uc0NoYW5nZWQodmlkZW9EaW1lbnNpb25zKTsKIH0KIAotdm9pZCBXZWJWaWRlb0Z1bGxzY3Jl
ZW5Db250cm9sbGVyQ29udGV4dDo6c2V0U2Vla2FibGVSYW5nZXMoY29uc3QgVGltZVJhbmdlcyYg
dGltZVJhbmdlcykKK3ZvaWQgV2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlckNvbnRleHQ6OnNl
ZWthYmxlUmFuZ2VzQ2hhbmdlZChjb25zdCBUaW1lUmFuZ2VzJiB0aW1lUmFuZ2VzKQogewotICAg
IEFTU0VSVChXZWJUaHJlYWRJc0N1cnJlbnQoKSk7Ci0gICAgUmVmUHRyPFdlYlZpZGVvRnVsbHNj
cmVlbkNvbnRyb2xsZXJDb250ZXh0PiBwcm90ZWN0ZWRUaGlzKHRoaXMpOwotICAgIGNvbnN0IFBs
YXRmb3JtVGltZVJhbmdlcyYgcGxhdGZvcm1UaW1lUmFuZ2VzID0gdGltZVJhbmdlcy5yYW5nZXMo
KTsKLSAgICBkaXNwYXRjaF9hc3luYyhkaXNwYXRjaF9nZXRfbWFpbl9xdWV1ZSgpLCBbcHJvdGVj
dGVkVGhpcywgdGhpcywgcGxhdGZvcm1UaW1lUmFuZ2VzXSB7Ci0gICAgICAgIGlmIChtX2ludGVy
ZmFjZSkKLSAgICAgICAgICAgIG1faW50ZXJmYWNlLT5zZXRTZWVrYWJsZVJhbmdlcyhUaW1lUmFu
Z2VzOjpjcmVhdGUocGxhdGZvcm1UaW1lUmFuZ2VzKSk7Ci0gICAgfSk7CisgICAgaWYgKFdlYlRo
cmVhZElzQ3VycmVudCgpKSB7CisgICAgICAgIFJlZlB0cjxXZWJWaWRlb0Z1bGxzY3JlZW5Db250
cm9sbGVyQ29udGV4dD4gcHJvdGVjdGVkVGhpcyh0aGlzKTsKKyAgICAgICAgZGlzcGF0Y2hfYXN5
bmMoZGlzcGF0Y2hfZ2V0X21haW5fcXVldWUoKSwgW3Byb3RlY3RlZFRoaXMsIHBsYXRmb3JtVGlt
ZVJhbmdlcyA9IHRpbWVSYW5nZXMucmFuZ2VzKCldIHsKKyAgICAgICAgICAgIHByb3RlY3RlZFRo
aXMtPnNlZWthYmxlUmFuZ2VzQ2hhbmdlZChUaW1lUmFuZ2VzOjpjcmVhdGUocGxhdGZvcm1UaW1l
UmFuZ2VzKSk7CisgICAgICAgIH0pOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgZm9y
IChhdXRvICZjbGllbnQgOiBtX3BsYXliYWNrQ2xpZW50cykKKyAgICAgICAgY2xpZW50LT5zZWVr
YWJsZVJhbmdlc0NoYW5nZWQodGltZVJhbmdlcyk7CiB9CiAKLXZvaWQgV2ViVmlkZW9GdWxsc2Ny
ZWVuQ29udHJvbGxlckNvbnRleHQ6OnNldENhblBsYXlGYXN0UmV2ZXJzZShib29sIGNhblBsYXlG
YXN0UmV2ZXJzZSkKK3ZvaWQgV2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlckNvbnRleHQ6OmNh
blBsYXlGYXN0UmV2ZXJzZUNoYW5nZWQoYm9vbCBjYW5QbGF5RmFzdFJldmVyc2UpCiB7Ci0gICAg
QVNTRVJUKFdlYlRocmVhZElzQ3VycmVudCgpKTsKLSAgICBSZWZQdHI8V2ViVmlkZW9GdWxsc2Ny
ZWVuQ29udHJvbGxlckNvbnRleHQ+IHByb3RlY3RlZFRoaXModGhpcyk7Ci0gICAgZGlzcGF0Y2hf
YXN5bmMoZGlzcGF0Y2hfZ2V0X21haW5fcXVldWUoKSwgW3Byb3RlY3RlZFRoaXMsIHRoaXMsIGNh
blBsYXlGYXN0UmV2ZXJzZV0gewotICAgICAgICBpZiAobV9pbnRlcmZhY2UpCi0gICAgICAgICAg
ICBtX2ludGVyZmFjZS0+c2V0Q2FuUGxheUZhc3RSZXZlcnNlKGNhblBsYXlGYXN0UmV2ZXJzZSk7
Ci0gICAgfSk7CisgICAgaWYgKFdlYlRocmVhZElzQ3VycmVudCgpKSB7CisgICAgICAgIFJlZlB0
cjxXZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyQ29udGV4dD4gcHJvdGVjdGVkVGhpcyh0aGlz
KTsKKyAgICAgICAgZGlzcGF0Y2hfYXN5bmMoZGlzcGF0Y2hfZ2V0X21haW5fcXVldWUoKSwgW3By
b3RlY3RlZFRoaXMsIGNhblBsYXlGYXN0UmV2ZXJzZV0geworICAgICAgICAgICAgcHJvdGVjdGVk
VGhpcy0+Y2FuUGxheUZhc3RSZXZlcnNlQ2hhbmdlZChjYW5QbGF5RmFzdFJldmVyc2UpOworICAg
ICAgICB9KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGZvciAoYXV0byAmY2xpZW50
IDogbV9wbGF5YmFja0NsaWVudHMpCisgICAgICAgIGNsaWVudC0+Y2FuUGxheUZhc3RSZXZlcnNl
Q2hhbmdlZChjYW5QbGF5RmFzdFJldmVyc2UpOwogfQogCi12b2lkIFdlYlZpZGVvRnVsbHNjcmVl
bkNvbnRyb2xsZXJDb250ZXh0OjpzZXRBdWRpb01lZGlhU2VsZWN0aW9uT3B0aW9ucyhjb25zdCBW
ZWN0b3I8U3RyaW5nPiYgb3B0aW9ucywgdWludDY0X3Qgc2VsZWN0ZWRJbmRleCkKK3ZvaWQgV2Vi
VmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlckNvbnRleHQ6OmF1ZGlvTWVkaWFTZWxlY3Rpb25PcHRp
b25zQ2hhbmdlZChjb25zdCBWZWN0b3I8U3RyaW5nPiYgb3B0aW9ucywgdWludDY0X3Qgc2VsZWN0
ZWRJbmRleCkKIHsKLSAgICBBU1NFUlQoV2ViVGhyZWFkSXNDdXJyZW50KCkpOwotICAgIFJlZlB0
cjxXZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyQ29udGV4dD4gcHJvdGVjdGVkVGhpcyh0aGlz
KTsKKyAgICBpZiAoV2ViVGhyZWFkSXNDdXJyZW50KCkpIHsKKyAgICAgICAgUmVmUHRyPFdlYlZp
ZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJDb250ZXh0PiBwcm90ZWN0ZWRUaGlzKHRoaXMpOworICAg
ICAgICBkaXNwYXRjaF9hc3luYyhkaXNwYXRjaF9nZXRfbWFpbl9xdWV1ZSgpLCBbcHJvdGVjdGVk
VGhpcywgb3B0aW9ucyA9IG9wdGlvbnMsIHNlbGVjdGVkSW5kZXhdIHsKKyAgICAgICAgICAgIHBy
b3RlY3RlZFRoaXMtPmF1ZGlvTWVkaWFTZWxlY3Rpb25PcHRpb25zQ2hhbmdlZChvcHRpb25zLCBz
ZWxlY3RlZEluZGV4KTsKKyAgICAgICAgfSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CiAKLSAg
ICBSZXRhaW5QdHI8TlNNdXRhYmxlQXJyYXk+IG9wdGlvbnNBcnJheSA9IGFkb3B0TlMoW1tOU011
dGFibGVBcnJheSBhbGxvY10gaW5pdFdpdGhDYXBhY2l0eTpvcHRpb25zLnNpemUoKV0pOwotICAg
IGZvciAoYXV0byYgbmFtZSA6IG9wdGlvbnMpCi0gICAgICAgIFtvcHRpb25zQXJyYXkgYWRkT2Jq
ZWN0Om5hbWVdOwotICAgIAotICAgIGRpc3BhdGNoX2FzeW5jKGRpc3BhdGNoX2dldF9tYWluX3F1
ZXVlKCksIFtwcm90ZWN0ZWRUaGlzLCB0aGlzLCBvcHRpb25zQXJyYXksIHNlbGVjdGVkSW5kZXhd
IHsKLSAgICAgICAgVmVjdG9yPFN0cmluZz4gb3B0aW9uczsKLSAgICAgICAgZm9yIChOU1N0cmlu
ZyAqbmFtZSA6IG9wdGlvbnNBcnJheS5nZXQoKSkKLSAgICAgICAgICAgIG9wdGlvbnMuYXBwZW5k
KG5hbWUpOwotICAgICAgICAKLSAgICAgICAgaWYgKG1faW50ZXJmYWNlKQotICAgICAgICAgICAg
bV9pbnRlcmZhY2UtPnNldEF1ZGlvTWVkaWFTZWxlY3Rpb25PcHRpb25zKG9wdGlvbnMsIHNlbGVj
dGVkSW5kZXgpOwotICAgIH0pOworICAgIGZvciAoYXV0byYgY2xpZW50IDogbV9wbGF5YmFja0Ns
aWVudHMpCisgICAgICAgIGNsaWVudC0+YXVkaW9NZWRpYVNlbGVjdGlvbk9wdGlvbnNDaGFuZ2Vk
KG9wdGlvbnMsIHNlbGVjdGVkSW5kZXgpOwogfQogCi12b2lkIFdlYlZpZGVvRnVsbHNjcmVlbkNv
bnRyb2xsZXJDb250ZXh0OjpzZXRMZWdpYmxlTWVkaWFTZWxlY3Rpb25PcHRpb25zKGNvbnN0IFZl
Y3RvcjxTdHJpbmc+JiBvcHRpb25zLCB1aW50NjRfdCBzZWxlY3RlZEluZGV4KQordm9pZCBXZWJW
aWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyQ29udGV4dDo6bGVnaWJsZU1lZGlhU2VsZWN0aW9uT3B0
aW9uc0NoYW5nZWQoY29uc3QgVmVjdG9yPFN0cmluZz4mIG9wdGlvbnMsIHVpbnQ2NF90IHNlbGVj
dGVkSW5kZXgpCiB7Ci0gICAgQVNTRVJUKFdlYlRocmVhZElzQ3VycmVudCgpKTsKLSAgICBSZWZQ
dHI8V2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlckNvbnRleHQ+IHByb3RlY3RlZFRoaXModGhp
cyk7Ci0gICAgCi0gICAgUmV0YWluUHRyPE5TTXV0YWJsZUFycmF5PiBvcHRpb25zQXJyYXkgPSBh
ZG9wdE5TKFtbTlNNdXRhYmxlQXJyYXkgYWxsb2NdIGluaXRXaXRoQ2FwYWNpdHk6b3B0aW9ucy5z
aXplKCldKTsKLSAgICBmb3IgKGF1dG8mIG5hbWUgOiBvcHRpb25zKQotICAgICAgICBbb3B0aW9u
c0FycmF5IGFkZE9iamVjdDpuYW1lXTsKLSAgICAKLSAgICBkaXNwYXRjaF9hc3luYyhkaXNwYXRj
aF9nZXRfbWFpbl9xdWV1ZSgpLCBbcHJvdGVjdGVkVGhpcywgdGhpcywgb3B0aW9uc0FycmF5LCBz
ZWxlY3RlZEluZGV4XSB7Ci0gICAgICAgIFZlY3RvcjxTdHJpbmc+IG9wdGlvbnM7Ci0gICAgICAg
IGZvciAoTlNTdHJpbmcgKm5hbWUgOiBvcHRpb25zQXJyYXkuZ2V0KCkpCi0gICAgICAgICAgICBv
cHRpb25zLmFwcGVuZChuYW1lKTsKLSAgICAgICAgCi0gICAgICAgIGlmIChtX2ludGVyZmFjZSkK
LSAgICAgICAgICAgIG1faW50ZXJmYWNlLT5zZXRMZWdpYmxlTWVkaWFTZWxlY3Rpb25PcHRpb25z
KG9wdGlvbnMsIHNlbGVjdGVkSW5kZXgpOwotICAgIH0pOworICAgIGlmIChXZWJUaHJlYWRJc0N1
cnJlbnQoKSkgeworICAgICAgICBSZWZQdHI8V2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlckNv
bnRleHQ+IHByb3RlY3RlZFRoaXModGhpcyk7CisgICAgICAgIGRpc3BhdGNoX2FzeW5jKGRpc3Bh
dGNoX2dldF9tYWluX3F1ZXVlKCksIFtwcm90ZWN0ZWRUaGlzLCBvcHRpb25zID0gb3B0aW9ucywg
c2VsZWN0ZWRJbmRleF0geworICAgICAgICAgICAgcHJvdGVjdGVkVGhpcy0+bGVnaWJsZU1lZGlh
U2VsZWN0aW9uT3B0aW9uc0NoYW5nZWQob3B0aW9ucywgc2VsZWN0ZWRJbmRleCk7CisgICAgICAg
IH0pOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgZm9yIChhdXRvJiBjbGllbnQgOiBt
X3BsYXliYWNrQ2xpZW50cykKKyAgICAgICAgY2xpZW50LT5sZWdpYmxlTWVkaWFTZWxlY3Rpb25P
cHRpb25zQ2hhbmdlZChvcHRpb25zLCBzZWxlY3RlZEluZGV4KTsKIH0KIAotdm9pZCBXZWJWaWRl
b0Z1bGxzY3JlZW5Db250cm9sbGVyQ29udGV4dDo6c2V0RXh0ZXJuYWxQbGF5YmFjayhib29sIGVu
YWJsZWQsIEV4dGVybmFsUGxheWJhY2tUYXJnZXRUeXBlIHR5cGUsIFN0cmluZyBsb2NhbGl6ZWRE
ZXZpY2VOYW1lKQordm9pZCBXZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyQ29udGV4dDo6ZXh0
ZXJuYWxQbGF5YmFja0NoYW5nZWQoYm9vbCBlbmFibGVkLCBXZWJQbGF5YmFja1Nlc3Npb25Nb2Rl
bDo6RXh0ZXJuYWxQbGF5YmFja1RhcmdldFR5cGUgdHlwZSwgY29uc3QgU3RyaW5nJiBsb2NhbGl6
ZWREZXZpY2VOYW1lKQogewotICAgIEFTU0VSVChXZWJUaHJlYWRJc0N1cnJlbnQoKSk7Ci0gICAg
Y2FsbE9uTWFpblRocmVhZChbcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCB0aGlzLCBl
bmFibGVkLCB0eXBlLCBsb2NhbGl6ZWREZXZpY2VOYW1lID0gbG9jYWxpemVkRGV2aWNlTmFtZS5p
c29sYXRlZENvcHkoKV0gewotICAgICAgICBpZiAobV9pbnRlcmZhY2UpCi0gICAgICAgICAgICBt
X2ludGVyZmFjZS0+c2V0RXh0ZXJuYWxQbGF5YmFjayhlbmFibGVkLCB0eXBlLCBsb2NhbGl6ZWRE
ZXZpY2VOYW1lKTsKLSAgICB9KTsKKyAgICBpZiAoV2ViVGhyZWFkSXNDdXJyZW50KCkpIHsKKyAg
ICAgICAgY2FsbE9uTWFpblRocmVhZChbcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCB0
aGlzLCBlbmFibGVkLCB0eXBlLCBsb2NhbGl6ZWREZXZpY2VOYW1lID0gbG9jYWxpemVkRGV2aWNl
TmFtZS5pc29sYXRlZENvcHkoKV0geworICAgICAgICAgICAgZm9yIChhdXRvJiBjbGllbnQgOiBt
X3BsYXliYWNrQ2xpZW50cykKKyAgICAgICAgICAgICAgICBjbGllbnQtPmV4dGVybmFsUGxheWJh
Y2tDaGFuZ2VkKGVuYWJsZWQsIHR5cGUsIGxvY2FsaXplZERldmljZU5hbWUpOworICAgICAgICB9
KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGZvciAoYXV0byYgY2xpZW50IDogbV9w
bGF5YmFja0NsaWVudHMpCisgICAgICAgIGNsaWVudC0+ZXh0ZXJuYWxQbGF5YmFja0NoYW5nZWQo
ZW5hYmxlZCwgdHlwZSwgbG9jYWxpemVkRGV2aWNlTmFtZSk7CiB9CiAKLXZvaWQgV2ViVmlkZW9G
dWxsc2NyZWVuQ29udHJvbGxlckNvbnRleHQ6OnNldFdpcmVsZXNzVmlkZW9QbGF5YmFja0Rpc2Fi
bGVkKGJvb2wgZGlzYWJsZWQpCit2b2lkIFdlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJDb250
ZXh0Ojp3aXJlbGVzc1ZpZGVvUGxheWJhY2tEaXNhYmxlZENoYW5nZWQoYm9vbCBkaXNhYmxlZCkK
IHsKLSAgICBBU1NFUlQoV2ViVGhyZWFkSXNDdXJyZW50KCkpOwotICAgIFJlZlB0cjxXZWJWaWRl
b0Z1bGxzY3JlZW5Db250cm9sbGVyQ29udGV4dD4gcHJvdGVjdGVkVGhpcyh0aGlzKTsKLSAgICBk
aXNwYXRjaF9hc3luYyhkaXNwYXRjaF9nZXRfbWFpbl9xdWV1ZSgpLCBbcHJvdGVjdGVkVGhpcywg
dGhpcywgZGlzYWJsZWRdIHsKLSAgICAgICAgaWYgKG1faW50ZXJmYWNlKQotICAgICAgICAgICAg
bV9pbnRlcmZhY2UtPnNldFdpcmVsZXNzVmlkZW9QbGF5YmFja0Rpc2FibGVkKGRpc2FibGVkKTsK
LSAgICB9KTsKKyAgICBpZiAoV2ViVGhyZWFkSXNDdXJyZW50KCkpIHsKKyAgICAgICAgUmVmUHRy
PFdlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJDb250ZXh0PiBwcm90ZWN0ZWRUaGlzKHRoaXMp
OworICAgICAgICBkaXNwYXRjaF9hc3luYyhkaXNwYXRjaF9nZXRfbWFpbl9xdWV1ZSgpLCBbcHJv
dGVjdGVkVGhpcywgZGlzYWJsZWRdIHsKKyAgICAgICAgICAgIHByb3RlY3RlZFRoaXMtPndpcmVs
ZXNzVmlkZW9QbGF5YmFja0Rpc2FibGVkQ2hhbmdlZChkaXNhYmxlZCk7CisgICAgICAgIH0pOwor
ICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgZm9yIChhdXRvJiBjbGllbnQgOiBtX3BsYXli
YWNrQ2xpZW50cykKKyAgICAgICAgY2xpZW50LT53aXJlbGVzc1ZpZGVvUGxheWJhY2tEaXNhYmxl
ZENoYW5nZWQoZGlzYWJsZWQpOwogfQogCiAjcHJhZ21hIG1hcmsgV2ViVmlkZW9GdWxsc2NyZWVu
TW9kZWwKIAordm9pZCBXZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyQ29udGV4dDo6YWRkQ2xp
ZW50KFdlYlZpZGVvRnVsbHNjcmVlbk1vZGVsQ2xpZW50JiBjbGllbnQpCit7CisgICAgQVNTRVJU
KCFtX2Z1bGxzY3JlZW5DbGllbnRzLmNvbnRhaW5zKCZjbGllbnQpKTsKKyAgICBtX2Z1bGxzY3Jl
ZW5DbGllbnRzLmFkZCgmY2xpZW50KTsKK30KKwordm9pZCBXZWJWaWRlb0Z1bGxzY3JlZW5Db250
cm9sbGVyQ29udGV4dDo6cmVtb3ZlQ2xpZW50KFdlYlZpZGVvRnVsbHNjcmVlbk1vZGVsQ2xpZW50
JiBjbGllbnQpCit7CisgICAgQVNTRVJUKG1fZnVsbHNjcmVlbkNsaWVudHMuY29udGFpbnMoJmNs
aWVudCkpOworICAgIG1fZnVsbHNjcmVlbkNsaWVudHMucmVtb3ZlKCZjbGllbnQpOworfQorCiB2
b2lkIFdlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJDb250ZXh0OjpyZXF1ZXN0RnVsbHNjcmVl
bk1vZGUoSFRNTE1lZGlhRWxlbWVudEVudW1zOjpWaWRlb0Z1bGxzY3JlZW5Nb2RlIG1vZGUpCiB7
CiAgICAgQVNTRVJUKGlzVUlUaHJlYWQoKSk7CiAgICAgUmVmUHRyPFdlYlZpZGVvRnVsbHNjcmVl
bkNvbnRyb2xsZXJDb250ZXh0PiBwcm90ZWN0ZWRUaGlzKHRoaXMpOwogICAgIFdlYlRocmVhZFJ1
bihbcHJvdGVjdGVkVGhpcywgdGhpcywgbW9kZV0gewotICAgICAgICBpZiAobV9tb2RlbCkKLSAg
ICAgICAgICAgIG1fbW9kZWwtPnJlcXVlc3RGdWxsc2NyZWVuTW9kZShtb2RlKTsKKyAgICAgICAg
aWYgKG1fZnVsbHNjcmVlbk1vZGVsKQorICAgICAgICAgICAgbV9mdWxsc2NyZWVuTW9kZWwtPnJl
cXVlc3RGdWxsc2NyZWVuTW9kZShtb2RlKTsKICAgICB9KTsKIH0KIApAQCAtNDc5LDggKzQ2OCw4
IEBAIHZvaWQgV2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlckNvbnRleHQ6OnNldFZpZGVvTGF5
ZXJGcmFtZShGbG9hdFJlY3QgZnJhbWUpCiAgICAgICAgICAgICAKICAgICAgICAgICAgIFt2aWRl
b0Z1bGxzY3JlZW5MYXllciBzZXRTdWJsYXllclRyYW5zZm9ybTpDQVRyYW5zZm9ybTNESWRlbnRp
dHldOwogICAgICAgICAgICAgCi0gICAgICAgICAgICBpZiAobV9tb2RlbCkKLSAgICAgICAgICAg
ICAgICBtX21vZGVsLT5zZXRWaWRlb0xheWVyRnJhbWUoZnJhbWUpOworICAgICAgICAgICAgaWYg
KG1fZnVsbHNjcmVlbk1vZGVsKQorICAgICAgICAgICAgICAgIG1fZnVsbHNjcmVlbk1vZGVsLT5z
ZXRWaWRlb0xheWVyRnJhbWUoZnJhbWUpOwogICAgICAgICAgICAgW0NBVHJhbnNhY3Rpb24gY29t
bWl0XTsKICAgICAgICAgfSk7CiAgICAgfSk7CkBAIC00OTEsOCArNDgwLDggQEAgdm9pZCBXZWJW
aWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyQ29udGV4dDo6c2V0VmlkZW9MYXllckdyYXZpdHkoV2Vi
VmlkZW9GdWxsc2NyZWUKICAgICBBU1NFUlQoaXNVSVRocmVhZCgpKTsKICAgICBSZWZQdHI8V2Vi
VmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlckNvbnRleHQ+IHByb3RlY3RlZFRoaXModGhpcyk7CiAg
ICAgV2ViVGhyZWFkUnVuKFtwcm90ZWN0ZWRUaGlzLCB0aGlzLCB2aWRlb0dyYXZpdHldIHsKLSAg
ICAgICAgaWYgKG1fbW9kZWwpCi0gICAgICAgICAgICBtX21vZGVsLT5zZXRWaWRlb0xheWVyR3Jh
dml0eSh2aWRlb0dyYXZpdHkpOworICAgICAgICBpZiAobV9mdWxsc2NyZWVuTW9kZWwpCisgICAg
ICAgICAgICBtX2Z1bGxzY3JlZW5Nb2RlbC0+c2V0VmlkZW9MYXllckdyYXZpdHkodmlkZW9HcmF2
aXR5KTsKICAgICB9KTsKIH0KIApAQCAtNTAxLDI2ICs0OTAsNTAgQEAgdm9pZCBXZWJWaWRlb0Z1
bGxzY3JlZW5Db250cm9sbGVyQ29udGV4dDo6ZnVsbHNjcmVlbk1vZGVDaGFuZ2VkKEhUTUxNZWRp
YUVsZW1lbnQKICAgICBBU1NFUlQoaXNVSVRocmVhZCgpKTsKICAgICBSZWZQdHI8V2ViVmlkZW9G
dWxsc2NyZWVuQ29udHJvbGxlckNvbnRleHQ+IHByb3RlY3RlZFRoaXModGhpcyk7CiAgICAgV2Vi
VGhyZWFkUnVuKFtwcm90ZWN0ZWRUaGlzLCB0aGlzLCBtb2RlXSB7Ci0gICAgICAgIGlmIChtX21v
ZGVsKQotICAgICAgICAgICAgbV9tb2RlbC0+ZnVsbHNjcmVlbk1vZGVDaGFuZ2VkKG1vZGUpOwor
ICAgICAgICBpZiAobV9mdWxsc2NyZWVuTW9kZWwpCisgICAgICAgICAgICBtX2Z1bGxzY3JlZW5N
b2RlbC0+ZnVsbHNjcmVlbk1vZGVDaGFuZ2VkKG1vZGUpOwogICAgIH0pOwogfQogCiBib29sIFdl
YlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJDb250ZXh0Ojppc1Zpc2libGUoKSBjb25zdAogewog
ICAgIEFTU0VSVChpc1VJVGhyZWFkKCkpOwotICAgIHJldHVybiBtX21vZGVsID8gbV9tb2RlbC0+
aXNWaXNpYmxlKCkgOiBmYWxzZTsKKyAgICByZXR1cm4gbV9mdWxsc2NyZWVuTW9kZWwgPyBtX2Z1
bGxzY3JlZW5Nb2RlbC0+aXNWaXNpYmxlKCkgOiBmYWxzZTsKK30KKworYm9vbCBXZWJWaWRlb0Z1
bGxzY3JlZW5Db250cm9sbGVyQ29udGV4dDo6aGFzVmlkZW8oKSBjb25zdAoreworICAgIEFTU0VS
VChpc1VJVGhyZWFkKCkpOworICAgIHJldHVybiBtX2Z1bGxzY3JlZW5Nb2RlbCA/IG1fZnVsbHNj
cmVlbk1vZGVsLT5oYXNWaWRlbygpIDogZmFsc2U7Cit9CisKK0Zsb2F0U2l6ZSBXZWJWaWRlb0Z1
bGxzY3JlZW5Db250cm9sbGVyQ29udGV4dDo6dmlkZW9EaW1lbnNpb25zKCkgY29uc3QKK3sKKyAg
ICBBU1NFUlQoaXNVSVRocmVhZCgpKTsKKyAgICByZXR1cm4gbV9mdWxsc2NyZWVuTW9kZWwgPyBt
X2Z1bGxzY3JlZW5Nb2RlbC0+dmlkZW9EaW1lbnNpb25zKCkgOiBGbG9hdFNpemUoKTsKK30KKwor
I3ByYWdtYSBtYXJrIC0gV2ViUGxheWJhY2tTZXNzaW9uTW9kZWwKKwordm9pZCBXZWJWaWRlb0Z1
bGxzY3JlZW5Db250cm9sbGVyQ29udGV4dDo6YWRkQ2xpZW50KFdlYlBsYXliYWNrU2Vzc2lvbk1v
ZGVsQ2xpZW50JiBjbGllbnQpCit7CisgICAgQVNTRVJUKCFtX3BsYXliYWNrQ2xpZW50cy5jb250
YWlucygmY2xpZW50KSk7CisgICAgbV9wbGF5YmFja0NsaWVudHMuYWRkKCZjbGllbnQpOwogfQog
Ci0jcHJhZ21hIG1hcmsgLSBXZWJQbGF5YmFja1Nlc3Npb25Nb2RlbENvbnRleHQKK3ZvaWQgV2Vi
VmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlckNvbnRleHQ6OnJlbW92ZUNsaWVudChXZWJQbGF5YmFj
a1Nlc3Npb25Nb2RlbENsaWVudCYgY2xpZW50KQoreworICAgIEFTU0VSVChtX3BsYXliYWNrQ2xp
ZW50cy5jb250YWlucygmY2xpZW50KSk7CisgICAgbV9wbGF5YmFja0NsaWVudHMucmVtb3ZlKCZj
bGllbnQpOworfQogCiB2b2lkIFdlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJDb250ZXh0Ojpw
bGF5KCkKIHsKICAgICBBU1NFUlQoaXNVSVRocmVhZCgpKTsKICAgICBSZWZQdHI8V2ViVmlkZW9G
dWxsc2NyZWVuQ29udHJvbGxlckNvbnRleHQ+IHByb3RlY3RlZFRoaXModGhpcyk7CiAgICAgV2Vi
VGhyZWFkUnVuKFtwcm90ZWN0ZWRUaGlzLCB0aGlzXSB7Ci0gICAgICAgIGlmIChtX21vZGVsKQot
ICAgICAgICAgICAgbV9tb2RlbC0+cGxheWJhY2tTZXNzaW9uTW9kZWwoKS5wbGF5KCk7CisgICAg
ICAgIGlmIChtX3BsYXliYWNrTW9kZWwpCisgICAgICAgICAgICBtX3BsYXliYWNrTW9kZWwtPnBs
YXkoKTsKICAgICB9KTsKIH0KIApAQCAtNTI5LDggKzU0Miw4IEBAIHZvaWQgV2ViVmlkZW9GdWxs
c2NyZWVuQ29udHJvbGxlckNvbnRleHQ6OnBhdXNlKCkKICAgICBBU1NFUlQoaXNVSVRocmVhZCgp
KTsKICAgICBSZWZQdHI8V2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlckNvbnRleHQ+IHByb3Rl
Y3RlZFRoaXModGhpcyk7CiAgICAgV2ViVGhyZWFkUnVuKFtwcm90ZWN0ZWRUaGlzLCB0aGlzXSB7
Ci0gICAgICAgIGlmIChtX21vZGVsKQotICAgICAgICAgICAgbV9tb2RlbC0+cGxheWJhY2tTZXNz
aW9uTW9kZWwoKS5wYXVzZSgpOworICAgICAgICBpZiAobV9wbGF5YmFja01vZGVsKQorICAgICAg
ICAgICAgbV9wbGF5YmFja01vZGVsLT5wYXVzZSgpOwogICAgIH0pOwogfQogCkBAIC01MzksOCAr
NTUyLDggQEAgdm9pZCBXZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyQ29udGV4dDo6dG9nZ2xl
UGxheVN0YXRlKCkKICAgICBBU1NFUlQoaXNVSVRocmVhZCgpKTsKICAgICBSZWZQdHI8V2ViVmlk
ZW9GdWxsc2NyZWVuQ29udHJvbGxlckNvbnRleHQ+IHByb3RlY3RlZFRoaXModGhpcyk7CiAgICAg
V2ViVGhyZWFkUnVuKFtwcm90ZWN0ZWRUaGlzLCB0aGlzXSB7Ci0gICAgICAgIGlmIChtX21vZGVs
KQotICAgICAgICAgICAgbV9tb2RlbC0+cGxheWJhY2tTZXNzaW9uTW9kZWwoKS50b2dnbGVQbGF5
U3RhdGUoKTsKKyAgICAgICAgaWYgKG1fcGxheWJhY2tNb2RlbCkKKyAgICAgICAgICAgIG1fcGxh
eWJhY2tNb2RlbC0+dG9nZ2xlUGxheVN0YXRlKCk7CiAgICAgfSk7CiB9CiAKQEAgLTU0OSw4ICs1
NjIsOCBAQCB2b2lkIFdlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJDb250ZXh0OjpiZWdpblNj
cnViYmluZygpCiAgICAgQVNTRVJUKGlzVUlUaHJlYWQoKSk7CiAgICAgUmVmUHRyPFdlYlZpZGVv
RnVsbHNjcmVlbkNvbnRyb2xsZXJDb250ZXh0PiBwcm90ZWN0ZWRUaGlzKHRoaXMpOwogICAgIFdl
YlRocmVhZFJ1bihbcHJvdGVjdGVkVGhpcywgdGhpc10gewotICAgICAgICBpZiAobV9tb2RlbCkK
LSAgICAgICAgICAgIG1fbW9kZWwtPnBsYXliYWNrU2Vzc2lvbk1vZGVsKCkuYmVnaW5TY3J1YmJp
bmcoKTsKKyAgICAgICAgaWYgKG1fcGxheWJhY2tNb2RlbCkKKyAgICAgICAgICAgIG1fcGxheWJh
Y2tNb2RlbC0+YmVnaW5TY3J1YmJpbmcoKTsKICAgICB9KTsKIH0KIApAQCAtNTU5LDggKzU3Miw4
IEBAIHZvaWQgV2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlckNvbnRleHQ6OmVuZFNjcnViYmlu
ZygpCiAgICAgQVNTRVJUKGlzVUlUaHJlYWQoKSk7CiAgICAgUmVmUHRyPFdlYlZpZGVvRnVsbHNj
cmVlbkNvbnRyb2xsZXJDb250ZXh0PiBwcm90ZWN0ZWRUaGlzKHRoaXMpOwogICAgIFdlYlRocmVh
ZFJ1bihbcHJvdGVjdGVkVGhpcywgdGhpc10gewotICAgICAgICBpZiAobV9tb2RlbCkKLSAgICAg
ICAgICAgIG1fbW9kZWwtPnBsYXliYWNrU2Vzc2lvbk1vZGVsKCkuZW5kU2NydWJiaW5nKCk7Cisg
ICAgICAgIGlmIChtX3BsYXliYWNrTW9kZWwpCisgICAgICAgICAgICBtX3BsYXliYWNrTW9kZWwt
PmVuZFNjcnViYmluZygpOwogICAgIH0pOwogfQogCkBAIC01NjksOCArNTgyLDggQEAgdm9pZCBX
ZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyQ29udGV4dDo6c2Vla1RvVGltZShkb3VibGUgdGlt
ZSkKICAgICBBU1NFUlQoaXNVSVRocmVhZCgpKTsKICAgICBSZWZQdHI8V2ViVmlkZW9GdWxsc2Ny
ZWVuQ29udHJvbGxlckNvbnRleHQ+IHByb3RlY3RlZFRoaXModGhpcyk7CiAgICAgV2ViVGhyZWFk
UnVuKFtwcm90ZWN0ZWRUaGlzLCB0aGlzLCB0aW1lXSB7Ci0gICAgICAgIGlmIChtX21vZGVsKQot
ICAgICAgICAgICAgbV9tb2RlbC0+cGxheWJhY2tTZXNzaW9uTW9kZWwoKS5zZWVrVG9UaW1lKHRp
bWUpOworICAgICAgICBpZiAobV9wbGF5YmFja01vZGVsKQorICAgICAgICAgICAgbV9wbGF5YmFj
a01vZGVsLT5zZWVrVG9UaW1lKHRpbWUpOwogICAgIH0pOwogfQogCkBAIC01NzksOCArNTkyLDgg
QEAgdm9pZCBXZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyQ29udGV4dDo6ZmFzdFNlZWsoZG91
YmxlIHRpbWUpCiAgICAgQVNTRVJUKGlzVUlUaHJlYWQoKSk7CiAgICAgUmVmUHRyPFdlYlZpZGVv
RnVsbHNjcmVlbkNvbnRyb2xsZXJDb250ZXh0PiBwcm90ZWN0ZWRUaGlzKHRoaXMpOwogICAgIFdl
YlRocmVhZFJ1bihbcHJvdGVjdGVkVGhpcywgdGhpcywgdGltZV0gewotICAgICAgICBpZiAobV9t
b2RlbCkKLSAgICAgICAgICAgIG1fbW9kZWwtPnBsYXliYWNrU2Vzc2lvbk1vZGVsKCkuZmFzdFNl
ZWsodGltZSk7CisgICAgICAgIGlmIChtX3BsYXliYWNrTW9kZWwpCisgICAgICAgICAgICBtX3Bs
YXliYWNrTW9kZWwtPmZhc3RTZWVrKHRpbWUpOwogICAgIH0pOwogfQogCkBAIC01ODksOCArNjAy
LDggQEAgdm9pZCBXZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyQ29udGV4dDo6YmVnaW5TY2Fu
bmluZ0ZvcndhcmQoKQogICAgIEFTU0VSVChpc1VJVGhyZWFkKCkpOwogICAgIFJlZlB0cjxXZWJW
aWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyQ29udGV4dD4gcHJvdGVjdGVkVGhpcyh0aGlzKTsKICAg
ICBXZWJUaHJlYWRSdW4oW3Byb3RlY3RlZFRoaXMsIHRoaXNdIHsKLSAgICAgICAgaWYgKG1fbW9k
ZWwpCi0gICAgICAgICAgICBtX21vZGVsLT5wbGF5YmFja1Nlc3Npb25Nb2RlbCgpLmJlZ2luU2Nh
bm5pbmdGb3J3YXJkKCk7CisgICAgICAgIGlmIChtX3BsYXliYWNrTW9kZWwpCisgICAgICAgICAg
ICBtX3BsYXliYWNrTW9kZWwtPmJlZ2luU2Nhbm5pbmdGb3J3YXJkKCk7CiAgICAgfSk7CiB9CiAK
QEAgLTU5OSw4ICs2MTIsOCBAQCB2b2lkIFdlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJDb250
ZXh0OjpiZWdpblNjYW5uaW5nQmFja3dhcmQoKQogICAgIEFTU0VSVChpc1VJVGhyZWFkKCkpOwog
ICAgIFJlZlB0cjxXZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyQ29udGV4dD4gcHJvdGVjdGVk
VGhpcyh0aGlzKTsKICAgICBXZWJUaHJlYWRSdW4oW3Byb3RlY3RlZFRoaXMsIHRoaXNdIHsKLSAg
ICAgICAgaWYgKG1fbW9kZWwpCi0gICAgICAgICAgICBtX21vZGVsLT5wbGF5YmFja1Nlc3Npb25N
b2RlbCgpLmJlZ2luU2Nhbm5pbmdCYWNrd2FyZCgpOworICAgICAgICBpZiAobV9wbGF5YmFja01v
ZGVsKQorICAgICAgICAgICAgbV9wbGF5YmFja01vZGVsLT5iZWdpblNjYW5uaW5nQmFja3dhcmQo
KTsKICAgICB9KTsKIH0KIApAQCAtNjA5LDggKzYyMiw4IEBAIHZvaWQgV2ViVmlkZW9GdWxsc2Ny
ZWVuQ29udHJvbGxlckNvbnRleHQ6OmVuZFNjYW5uaW5nKCkKICAgICBBU1NFUlQoaXNVSVRocmVh
ZCgpKTsKICAgICBSZWZQdHI8V2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlckNvbnRleHQ+IHBy
b3RlY3RlZFRoaXModGhpcyk7CiAgICAgV2ViVGhyZWFkUnVuKFtwcm90ZWN0ZWRUaGlzLCB0aGlz
XSB7Ci0gICAgICAgIGlmIChtX21vZGVsKQotICAgICAgICAgICAgbV9tb2RlbC0+cGxheWJhY2tT
ZXNzaW9uTW9kZWwoKS5lbmRTY2FubmluZygpOworICAgICAgICBpZiAobV9wbGF5YmFja01vZGVs
KQorICAgICAgICAgICAgbV9wbGF5YmFja01vZGVsLT5lbmRTY2FubmluZygpOwogICAgIH0pOwog
fQogCkBAIC02MTksOCArNjMyLDggQEAgdm9pZCBXZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVy
Q29udGV4dDo6c2VsZWN0QXVkaW9NZWRpYU9wdGlvbih1aW50NjRfdCBpbmRleCkKICAgICBBU1NF
UlQoaXNVSVRocmVhZCgpKTsKICAgICBSZWZQdHI8V2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxl
ckNvbnRleHQ+IHByb3RlY3RlZFRoaXModGhpcyk7CiAgICAgV2ViVGhyZWFkUnVuKFtwcm90ZWN0
ZWRUaGlzLCB0aGlzLCBpbmRleF0gewotICAgICAgICBpZiAobV9tb2RlbCkKLSAgICAgICAgICAg
IG1fbW9kZWwtPnBsYXliYWNrU2Vzc2lvbk1vZGVsKCkuc2VsZWN0QXVkaW9NZWRpYU9wdGlvbihp
bmRleCk7CisgICAgICAgIGlmIChtX3BsYXliYWNrTW9kZWwpCisgICAgICAgICAgICBtX3BsYXli
YWNrTW9kZWwtPnNlbGVjdEF1ZGlvTWVkaWFPcHRpb24oaW5kZXgpOwogICAgIH0pOwogfQogCkBA
IC02MjksMTQ0ICs2NDIsMTU0IEBAIHZvaWQgV2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlckNv
bnRleHQ6OnNlbGVjdExlZ2libGVNZWRpYU9wdGlvbih1aW50NjRfdCBpbmRlCiAgICAgQVNTRVJU
KGlzVUlUaHJlYWQoKSk7CiAgICAgUmVmUHRyPFdlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJD
b250ZXh0PiBwcm90ZWN0ZWRUaGlzKHRoaXMpOwogICAgIFdlYlRocmVhZFJ1bihbcHJvdGVjdGVk
VGhpcywgdGhpcywgaW5kZXhdIHsKLSAgICAgICAgaWYgKG1fbW9kZWwpCi0gICAgICAgICAgICBt
X21vZGVsLT5wbGF5YmFja1Nlc3Npb25Nb2RlbCgpLnNlbGVjdExlZ2libGVNZWRpYU9wdGlvbihp
bmRleCk7CisgICAgICAgIGlmIChtX3BsYXliYWNrTW9kZWwpCisgICAgICAgICAgICBtX3BsYXli
YWNrTW9kZWwtPnNlbGVjdExlZ2libGVNZWRpYU9wdGlvbihpbmRleCk7CiAgICAgfSk7CiB9CiAK
LSNwcmFnbWEgbWFyayBPdGhlcgotCi12b2lkIFdlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJD
b250ZXh0OjpzZXRVcEZ1bGxzY3JlZW4oSFRNTFZpZGVvRWxlbWVudCYgdmlkZW9FbGVtZW50LCBV
SVZpZXcgKnZpZXcsIEhUTUxNZWRpYUVsZW1lbnRFbnVtczo6VmlkZW9GdWxsc2NyZWVuTW9kZSBt
b2RlKQorZG91YmxlIFdlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJDb250ZXh0OjpkdXJhdGlv
bigpIGNvbnN0CiB7Ci0gICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKLSAgICBSZXRhaW5QdHI8
VUlWaWV3PiB2aWV3UmVmID0gdmlldzsKLSAgICBtX3ZpZGVvRWxlbWVudCA9ICZ2aWRlb0VsZW1l
bnQ7Ci0KLSAgICBSZWZQdHI8V2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlckNvbnRleHQ+IHBy
b3RlY3RlZFRoaXModGhpcyk7Ci0gICAgZGlzcGF0Y2hfYXN5bmMoZGlzcGF0Y2hfZ2V0X21haW5f
cXVldWUoKSwgW3Byb3RlY3RlZFRoaXMsIHRoaXMsIHZpZXdSZWYsIG1vZGVdIHsKLSAgICAgICAg
QVNTRVJUKGlzVUlUaHJlYWQoKSk7Ci0KLSAgICAgICAgUmVmPFdlYlBsYXliYWNrU2Vzc2lvbklu
dGVyZmFjZUFWS2l0PiBzZXNzaW9uSW50ZXJmYWNlID0gV2ViUGxheWJhY2tTZXNzaW9uSW50ZXJm
YWNlQVZLaXQ6OmNyZWF0ZSgpOwotICAgICAgICBtX2ludGVyZmFjZSA9IFdlYlZpZGVvRnVsbHNj
cmVlbkludGVyZmFjZUFWS2l0OjpjcmVhdGUoc2Vzc2lvbkludGVyZmFjZS5nZXQoKSk7Ci0KLSAg
ICAgICAgbV9zZXNzaW9uTW9kZWwgPSBXZWJWaWRlb0Z1bGxzY3JlZW5TZXNzaW9uTW9kZWw6OmNy
ZWF0ZSgqdGhpcyk7Ci0gICAgICAgIHNlc3Npb25JbnRlcmZhY2UtPnNldFdlYlBsYXliYWNrU2Vz
c2lvbk1vZGVsKG1fc2Vzc2lvbk1vZGVsLmdldCgpKTsKLQotICAgICAgICBtX2ludGVyZmFjZS0+
c2V0V2ViVmlkZW9GdWxsc2NyZWVuTW9kZWwodGhpcyk7Ci0gICAgICAgIG1faW50ZXJmYWNlLT5z
ZXRXZWJWaWRlb0Z1bGxzY3JlZW5DaGFuZ2VPYnNlcnZlcih0aGlzKTsKKyAgICBBU1NFUlQoaXNV
SVRocmVhZCgpKTsKKyAgICByZXR1cm4gbV9wbGF5YmFja01vZGVsID8gbV9wbGF5YmFja01vZGVs
LT5kdXJhdGlvbigpIDogMDsKK30KIAotICAgICAgICBtX3ZpZGVvRnVsbHNjcmVlblZpZXcgPSBh
ZG9wdE5TKFtbZ2V0VUlWaWV3Q2xhc3MoKSBhbGxvY10gaW5pdF0pOwotICAgICAgICAKLSAgICAg
ICAgUmVmUHRyPFdlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJDb250ZXh0PiBwcm90ZWN0ZWRU
aGlzKHRoaXMpOwotICAgICAgICBXZWJUaHJlYWRSdW4oW3Byb3RlY3RlZFRoaXMsIHRoaXMsIHZp
ZXdSZWYsIG1vZGVdIHsKLSAgICAgICAgICAgIG1fbW9kZWwgPSBXZWJWaWRlb0Z1bGxzY3JlZW5N
b2RlbFZpZGVvRWxlbWVudDo6Y3JlYXRlKFdlYlBsYXliYWNrU2Vzc2lvbk1vZGVsTWVkaWFFbGVt
ZW50OjpjcmVhdGUoKS5nZXQoKSk7Ci0gICAgICAgICAgICBtX21vZGVsLT5zZXRXZWJWaWRlb0Z1
bGxzY3JlZW5JbnRlcmZhY2UodGhpcyk7Ci0gICAgICAgICAgICBtX21vZGVsLT5wbGF5YmFja1Nl
c3Npb25Nb2RlbCgpLnNldE1lZGlhRWxlbWVudChtX3ZpZGVvRWxlbWVudC5nZXQoKSk7Ci0gICAg
ICAgICAgICBtX21vZGVsLT5zZXRWaWRlb0VsZW1lbnQobV92aWRlb0VsZW1lbnQuZ2V0KCkpOwot
Ci0gICAgICAgICAgICBJbnRSZWN0IHZpZGVvRWxlbWVudENsaWVudFJlY3QgPSBlbGVtZW50UmVj
dEluV2luZG93KG1fdmlkZW9FbGVtZW50LmdldCgpKTsKLSAgICAgICAgICAgIEZsb2F0UmVjdCB2
aWRlb0xheWVyRnJhbWUgPSBGbG9hdFJlY3QoRmxvYXRQb2ludCgpLCB2aWRlb0VsZW1lbnRDbGll
bnRSZWN0LnNpemUoKSk7Ci0gICAgICAgICAgICBtX21vZGVsLT5zZXRWaWRlb0xheWVyRnJhbWUo
dmlkZW9MYXllckZyYW1lKTsKLSAgICAgICAgICAgIAotICAgICAgICAgICAgYm9vbCBhbGxvd3NQ
aWN0dXJlSW5QaWN0dXJlID0gbV92aWRlb0VsZW1lbnQtPm1lZGlhU2Vzc2lvbigpLmFsbG93c1Bp
Y3R1cmVJblBpY3R1cmUoKm1fdmlkZW9FbGVtZW50LmdldCgpKTsKLSAgICAgICAgICAgIGRpc3Bh
dGNoX2FzeW5jKGRpc3BhdGNoX2dldF9tYWluX3F1ZXVlKCksIFtwcm90ZWN0ZWRUaGlzLCB0aGlz
LCB2aWRlb0VsZW1lbnRDbGllbnRSZWN0LCB2aWV3UmVmLCBtb2RlLCBhbGxvd3NQaWN0dXJlSW5Q
aWN0dXJlXSB7Ci0gICAgICAgICAgICAgICAgbV9pbnRlcmZhY2UtPnNldHVwRnVsbHNjcmVlbigq
bV92aWRlb0Z1bGxzY3JlZW5WaWV3LmdldCgpLCB2aWRlb0VsZW1lbnRDbGllbnRSZWN0LCB2aWV3
UmVmLmdldCgpLCBtb2RlLCBhbGxvd3NQaWN0dXJlSW5QaWN0dXJlKTsKLSAgICAgICAgICAgIH0p
OwotICAgICAgICB9KTsKLSAgICB9KTsKK2RvdWJsZSBXZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9s
bGVyQ29udGV4dDo6Y3VycmVudFRpbWUoKSBjb25zdAoreworICAgIEFTU0VSVChpc1VJVGhyZWFk
KCkpOworICAgIHJldHVybiBtX3BsYXliYWNrTW9kZWwgPyBtX3BsYXliYWNrTW9kZWwtPmN1cnJl
bnRUaW1lKCkgOiAwOwogfQogCi12b2lkIFdlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJDb250
ZXh0OjpleGl0RnVsbHNjcmVlbigpCitkb3VibGUgV2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxl
ckNvbnRleHQ6OmJ1ZmZlcmVkVGltZSgpIGNvbnN0CiB7Ci0gICAgQVNTRVJUKFdlYlRocmVhZElz
Q3VycmVudCgpIHx8IGlzTWFpblRocmVhZCgpKTsKLSAgICBJbnRSZWN0IGNsaWVudFJlY3QgPSBl
bGVtZW50UmVjdEluV2luZG93KG1fdmlkZW9FbGVtZW50LmdldCgpKTsKLSAgICBSZWZQdHI8V2Vi
VmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlckNvbnRleHQ+IHByb3RlY3RlZFRoaXModGhpcyk7Ci0g
ICAgZGlzcGF0Y2hfYXN5bmMoZGlzcGF0Y2hfZ2V0X21haW5fcXVldWUoKSwgW3Byb3RlY3RlZFRo
aXMsIHRoaXMsIGNsaWVudFJlY3RdIHsKLSAgICAgICAgQVNTRVJUKGlzVUlUaHJlYWQoKSk7Ci0g
ICAgICAgIG1faW50ZXJmYWNlLT5leGl0RnVsbHNjcmVlbihjbGllbnRSZWN0KTsKLSAgICB9KTsK
KyAgICBBU1NFUlQoaXNVSVRocmVhZCgpKTsKKyAgICByZXR1cm4gbV9wbGF5YmFja01vZGVsID8g
bV9wbGF5YmFja01vZGVsLT5idWZmZXJlZFRpbWUoKSA6IDA7CiB9CiAKLXZvaWQgV2ViVmlkZW9G
dWxsc2NyZWVuQ29udHJvbGxlckNvbnRleHQ6OnJlcXVlc3RIaWRlQW5kRXhpdEZ1bGxzY3JlZW4o
KQorYm9vbCBXZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyQ29udGV4dDo6aXNQbGF5aW5nKCkg
Y29uc3QKIHsKICAgICBBU1NFUlQoaXNVSVRocmVhZCgpKTsKLSAgICBtX2ludGVyZmFjZS0+cmVx
dWVzdEhpZGVBbmRFeGl0RnVsbHNjcmVlbigpOworICAgIHJldHVybiBtX3BsYXliYWNrTW9kZWwg
PyBtX3BsYXliYWNrTW9kZWwtPmlzUGxheWluZygpIDogZmFsc2U7CiB9CiAKLSNwcmFnbWEgbWFy
ayBXZWJQbGF5YmFja1Nlc3Npb25Nb2RlbAorZmxvYXQgV2ViVmlkZW9GdWxsc2NyZWVuQ29udHJv
bGxlckNvbnRleHQ6OnBsYXliYWNrUmF0ZSgpIGNvbnN0Cit7CisgICAgQVNTRVJUKGlzVUlUaHJl
YWQoKSk7CisgICAgcmV0dXJuIG1fcGxheWJhY2tNb2RlbCA/IG1fcGxheWJhY2tNb2RlbC0+cGxh
eWJhY2tSYXRlKCkgOiAwOworfQogCi12b2lkIFdlYlZpZGVvRnVsbHNjcmVlblNlc3Npb25Nb2Rl
bDo6cGxheSgpCitSZWY8VGltZVJhbmdlcz4gV2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlckNv
bnRleHQ6OnNlZWthYmxlUmFuZ2VzKCkgY29uc3QKIHsKLSAgICBpZiAobV9jb250cm9sbGVyKQot
ICAgICAgICBtX2NvbnRyb2xsZXItPnBsYXkoKTsKKyAgICBBU1NFUlQoaXNVSVRocmVhZCgpKTsK
KyAgICByZXR1cm4gbV9wbGF5YmFja01vZGVsID8gbV9wbGF5YmFja01vZGVsLT5zZWVrYWJsZVJh
bmdlcygpIDogVGltZVJhbmdlczo6Y3JlYXRlKCk7CiB9CiAKLXZvaWQgV2ViVmlkZW9GdWxsc2Ny
ZWVuU2Vzc2lvbk1vZGVsOjpwYXVzZSgpCitib29sIFdlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xs
ZXJDb250ZXh0OjpjYW5QbGF5RmFzdFJldmVyc2UoKSBjb25zdAogewotICAgIGlmIChtX2NvbnRy
b2xsZXIpCi0gICAgICAgIG1fY29udHJvbGxlci0+cGF1c2UoKTsKKyAgICBBU1NFUlQoaXNVSVRo
cmVhZCgpKTsKKyAgICByZXR1cm4gbV9wbGF5YmFja01vZGVsID8gbV9wbGF5YmFja01vZGVsLT5j
YW5QbGF5RmFzdFJldmVyc2UoKSA6IGZhbHNlOwogfQogCi12b2lkIFdlYlZpZGVvRnVsbHNjcmVl
blNlc3Npb25Nb2RlbDo6dG9nZ2xlUGxheVN0YXRlKCkKK1ZlY3RvcjxTdHJpbmc+IFdlYlZpZGVv
RnVsbHNjcmVlbkNvbnRyb2xsZXJDb250ZXh0OjphdWRpb01lZGlhU2VsZWN0aW9uT3B0aW9ucygp
IGNvbnN0CiB7Ci0gICAgaWYgKG1fY29udHJvbGxlcikKLSAgICAgICAgbV9jb250cm9sbGVyLT50
b2dnbGVQbGF5U3RhdGUoKTsKKyAgICBBU1NFUlQoaXNVSVRocmVhZCgpKTsKKyAgICByZXR1cm4g
bV9wbGF5YmFja01vZGVsID8gbV9wbGF5YmFja01vZGVsLT5hdWRpb01lZGlhU2VsZWN0aW9uT3B0
aW9ucygpIDogVmVjdG9yPFN0cmluZz4oKTsKIH0KIAotdm9pZCBXZWJWaWRlb0Z1bGxzY3JlZW5T
ZXNzaW9uTW9kZWw6OmJlZ2luU2NydWJiaW5nKCkKK3VpbnQ2NF90IFdlYlZpZGVvRnVsbHNjcmVl
bkNvbnRyb2xsZXJDb250ZXh0OjphdWRpb01lZGlhU2VsZWN0ZWRJbmRleCgpIGNvbnN0CiB7Ci0g
ICAgaWYgKG1fY29udHJvbGxlcikKLSAgICAgICAgbV9jb250cm9sbGVyLT5iZWdpblNjcnViYmlu
ZygpOworICAgIEFTU0VSVChpc1VJVGhyZWFkKCkpOworICAgIHJldHVybiBtX3BsYXliYWNrTW9k
ZWwgPyBtX3BsYXliYWNrTW9kZWwtPmF1ZGlvTWVkaWFTZWxlY3RlZEluZGV4KCkgOiAtMTsKIH0K
IAotdm9pZCBXZWJWaWRlb0Z1bGxzY3JlZW5TZXNzaW9uTW9kZWw6OmVuZFNjcnViYmluZygpCitW
ZWN0b3I8U3RyaW5nPiBXZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyQ29udGV4dDo6bGVnaWJs
ZU1lZGlhU2VsZWN0aW9uT3B0aW9ucygpIGNvbnN0CiB7Ci0gICAgaWYgKG1fY29udHJvbGxlcikK
LSAgICAgICAgbV9jb250cm9sbGVyLT5lbmRTY3J1YmJpbmcoKTsKKyAgICBBU1NFUlQoaXNVSVRo
cmVhZCgpKTsKKyAgICByZXR1cm4gbV9wbGF5YmFja01vZGVsID8gbV9wbGF5YmFja01vZGVsLT5s
ZWdpYmxlTWVkaWFTZWxlY3Rpb25PcHRpb25zKCkgOiBWZWN0b3I8U3RyaW5nPigpOwogfQogCi12
b2lkIFdlYlZpZGVvRnVsbHNjcmVlblNlc3Npb25Nb2RlbDo6c2Vla1RvVGltZShkb3VibGUgdGlt
ZSkKK3VpbnQ2NF90IFdlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJDb250ZXh0OjpsZWdpYmxl
TWVkaWFTZWxlY3RlZEluZGV4KCkgY29uc3QKIHsKLSAgICBpZiAobV9jb250cm9sbGVyKQotICAg
ICAgICBtX2NvbnRyb2xsZXItPnNlZWtUb1RpbWUodGltZSk7CisgICAgQVNTRVJUKGlzVUlUaHJl
YWQoKSk7CisgICAgcmV0dXJuIG1fcGxheWJhY2tNb2RlbCA/IG1fcGxheWJhY2tNb2RlbC0+bGVn
aWJsZU1lZGlhU2VsZWN0ZWRJbmRleCgpIDogLTE7CiB9CiAKLXZvaWQgV2ViVmlkZW9GdWxsc2Ny
ZWVuU2Vzc2lvbk1vZGVsOjpmYXN0U2Vlayhkb3VibGUgdGltZSkKK2Jvb2wgV2ViVmlkZW9GdWxs
c2NyZWVuQ29udHJvbGxlckNvbnRleHQ6OmV4dGVybmFsUGxheWJhY2tFbmFibGVkKCkgY29uc3QK
IHsKLSAgICBpZiAobV9jb250cm9sbGVyKQotICAgICAgICBtX2NvbnRyb2xsZXItPmZhc3RTZWVr
KHRpbWUpOworICAgIEFTU0VSVChpc1VJVGhyZWFkKCkpOworICAgIHJldHVybiBtX3BsYXliYWNr
TW9kZWwgPyBtX3BsYXliYWNrTW9kZWwtPmV4dGVybmFsUGxheWJhY2tFbmFibGVkKCkgOiBmYWxz
ZTsKIH0KIAotdm9pZCBXZWJWaWRlb0Z1bGxzY3JlZW5TZXNzaW9uTW9kZWw6OmJlZ2luU2Nhbm5p
bmdGb3J3YXJkKCkKK1dlYlBsYXliYWNrU2Vzc2lvbk1vZGVsOjpFeHRlcm5hbFBsYXliYWNrVGFy
Z2V0VHlwZSBXZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyQ29udGV4dDo6ZXh0ZXJuYWxQbGF5
YmFja1RhcmdldFR5cGUoKSBjb25zdAogewotICAgIGlmIChtX2NvbnRyb2xsZXIpCi0gICAgICAg
IG1fY29udHJvbGxlci0+YmVnaW5TY2FubmluZ0ZvcndhcmQoKTsKKyAgICBBU1NFUlQoaXNVSVRo
cmVhZCgpKTsKKyAgICByZXR1cm4gbV9wbGF5YmFja01vZGVsID8gbV9wbGF5YmFja01vZGVsLT5l
eHRlcm5hbFBsYXliYWNrVGFyZ2V0VHlwZSgpIDogVGFyZ2V0VHlwZU5vbmU7CiB9CiAKLXZvaWQg
V2ViVmlkZW9GdWxsc2NyZWVuU2Vzc2lvbk1vZGVsOjpiZWdpblNjYW5uaW5nQmFja3dhcmQoKQor
U3RyaW5nIFdlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJDb250ZXh0OjpleHRlcm5hbFBsYXli
YWNrTG9jYWxpemVkRGV2aWNlTmFtZSgpIGNvbnN0CiB7Ci0gICAgaWYgKG1fY29udHJvbGxlcikK
LSAgICAgICAgbV9jb250cm9sbGVyLT5iZWdpblNjYW5uaW5nQmFja3dhcmQoKTsKKyAgICBBU1NF
UlQoaXNVSVRocmVhZCgpKTsKKyAgICByZXR1cm4gbV9wbGF5YmFja01vZGVsID8gbV9wbGF5YmFj
a01vZGVsLT5leHRlcm5hbFBsYXliYWNrTG9jYWxpemVkRGV2aWNlTmFtZSgpIDogU3RyaW5nKCk7
CiB9CiAKLXZvaWQgV2ViVmlkZW9GdWxsc2NyZWVuU2Vzc2lvbk1vZGVsOjplbmRTY2FubmluZygp
Citib29sIFdlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJDb250ZXh0Ojp3aXJlbGVzc1ZpZGVv
UGxheWJhY2tEaXNhYmxlZCgpIGNvbnN0CiB7Ci0gICAgaWYgKG1fY29udHJvbGxlcikKLSAgICAg
ICAgbV9jb250cm9sbGVyLT5lbmRTY2FubmluZygpOworICAgIEFTU0VSVChpc1VJVGhyZWFkKCkp
OworICAgIHJldHVybiBtX3BsYXliYWNrTW9kZWwgPyBtX3BsYXliYWNrTW9kZWwtPndpcmVsZXNz
VmlkZW9QbGF5YmFja0Rpc2FibGVkKCkgOiB0cnVlOwogfQogCi12b2lkIFdlYlZpZGVvRnVsbHNj
cmVlblNlc3Npb25Nb2RlbDo6c2VsZWN0QXVkaW9NZWRpYU9wdGlvbih1aW50NjRfdCBvcHRpb25J
ZCkKKyNwcmFnbWEgbWFyayBPdGhlcgorCit2b2lkIFdlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xs
ZXJDb250ZXh0OjpzZXRVcEZ1bGxzY3JlZW4oSFRNTFZpZGVvRWxlbWVudCYgdmlkZW9FbGVtZW50
LCBVSVZpZXcgKnZpZXcsIEhUTUxNZWRpYUVsZW1lbnRFbnVtczo6VmlkZW9GdWxsc2NyZWVuTW9k
ZSBtb2RlKQogewotICAgIGlmIChtX2NvbnRyb2xsZXIpCi0gICAgICAgIG1fY29udHJvbGxlci0+
c2VsZWN0QXVkaW9NZWRpYU9wdGlvbihvcHRpb25JZCk7CisgICAgQVNTRVJUKGlzTWFpblRocmVh
ZCgpKTsKKyAgICBSZXRhaW5QdHI8VUlWaWV3PiB2aWV3UmVmID0gdmlldzsKKyAgICBtX3ZpZGVv
RWxlbWVudCA9ICZ2aWRlb0VsZW1lbnQ7CisgICAgbV9wbGF5YmFja01vZGVsID0gV2ViUGxheWJh
Y2tTZXNzaW9uTW9kZWxNZWRpYUVsZW1lbnQ6OmNyZWF0ZSgpOworICAgIG1fcGxheWJhY2tNb2Rl
bC0+YWRkQ2xpZW50KCp0aGlzKTsKKyAgICBtX3BsYXliYWNrTW9kZWwtPnNldE1lZGlhRWxlbWVu
dChtX3ZpZGVvRWxlbWVudC5nZXQoKSk7CisKKyAgICBtX2Z1bGxzY3JlZW5Nb2RlbCA9IFdlYlZp
ZGVvRnVsbHNjcmVlbk1vZGVsVmlkZW9FbGVtZW50OjpjcmVhdGUoKTsKKyAgICBtX2Z1bGxzY3Jl
ZW5Nb2RlbC0+YWRkQ2xpZW50KCp0aGlzKTsKKyAgICBtX2Z1bGxzY3JlZW5Nb2RlbC0+c2V0Vmlk
ZW9FbGVtZW50KG1fdmlkZW9FbGVtZW50LmdldCgpKTsKKworICAgIGJvb2wgYWxsb3dzUGljdHVy
ZUluUGljdHVyZSA9IG1fdmlkZW9FbGVtZW50LT5tZWRpYVNlc3Npb24oKS5hbGxvd3NQaWN0dXJl
SW5QaWN0dXJlKCptX3ZpZGVvRWxlbWVudC5nZXQoKSk7CisKKyAgICBJbnRSZWN0IHZpZGVvRWxl
bWVudENsaWVudFJlY3QgPSBlbGVtZW50UmVjdEluV2luZG93KG1fdmlkZW9FbGVtZW50LmdldCgp
KTsKKyAgICBGbG9hdFJlY3QgdmlkZW9MYXllckZyYW1lID0gRmxvYXRSZWN0KEZsb2F0UG9pbnQo
KSwgdmlkZW9FbGVtZW50Q2xpZW50UmVjdC5zaXplKCkpOworICAgIG1fZnVsbHNjcmVlbk1vZGVs
LT5zZXRWaWRlb0xheWVyRnJhbWUodmlkZW9MYXllckZyYW1lKTsKKworICAgIFJlZlB0cjxXZWJW
aWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyQ29udGV4dD4gcHJvdGVjdGVkVGhpcyh0aGlzKTsKKyAg
ICBkaXNwYXRjaF9hc3luYyhkaXNwYXRjaF9nZXRfbWFpbl9xdWV1ZSgpLCBbcHJvdGVjdGVkVGhp
cywgdGhpcywgdmlkZW9FbGVtZW50Q2xpZW50UmVjdCwgdmlld1JlZiwgbW9kZSwgYWxsb3dzUGlj
dHVyZUluUGljdHVyZV0geworICAgICAgICBBU1NFUlQoaXNVSVRocmVhZCgpKTsKKworICAgICAg
ICBSZWY8V2ViUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlQVZLaXQ+IHNlc3Npb25JbnRlcmZhY2Ug
PSBXZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2VBVktpdDo6Y3JlYXRlKCp0aGlzKTsKKyAgICAg
ICAgbV9pbnRlcmZhY2UgPSBXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdDo6Y3JlYXRl
KHNlc3Npb25JbnRlcmZhY2UuZ2V0KCkpOworICAgICAgICBtX2ludGVyZmFjZS0+c2V0V2ViVmlk
ZW9GdWxsc2NyZWVuQ2hhbmdlT2JzZXJ2ZXIodGhpcyk7CisgICAgICAgIG1faW50ZXJmYWNlLT5z
ZXRXZWJWaWRlb0Z1bGxzY3JlZW5Nb2RlbCh0aGlzKTsKKyAgICAgICAgbV9pbnRlcmZhY2UtPnNl
dFdlYlZpZGVvRnVsbHNjcmVlbkNoYW5nZU9ic2VydmVyKHRoaXMpOworCisgICAgICAgIG1fdmlk
ZW9GdWxsc2NyZWVuVmlldyA9IGFkb3B0TlMoW1tnZXRVSVZpZXdDbGFzcygpIGFsbG9jXSBpbml0
XSk7CisgICAgICAgIAorICAgICAgICBtX2ludGVyZmFjZS0+c2V0dXBGdWxsc2NyZWVuKCptX3Zp
ZGVvRnVsbHNjcmVlblZpZXcuZ2V0KCksIHZpZGVvRWxlbWVudENsaWVudFJlY3QsIHZpZXdSZWYu
Z2V0KCksIG1vZGUsIGFsbG93c1BpY3R1cmVJblBpY3R1cmUpOworICAgIH0pOwogfQogCi12b2lk
IFdlYlZpZGVvRnVsbHNjcmVlblNlc3Npb25Nb2RlbDo6c2VsZWN0TGVnaWJsZU1lZGlhT3B0aW9u
KHVpbnQ2NF90IG9wdGlvbklkKQordm9pZCBXZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyQ29u
dGV4dDo6ZXhpdEZ1bGxzY3JlZW4oKQogewotICAgIGlmIChtX2NvbnRyb2xsZXIpCi0gICAgICAg
IG1fY29udHJvbGxlci0+c2VsZWN0TGVnaWJsZU1lZGlhT3B0aW9uKG9wdGlvbklkKTsKKyAgICBB
U1NFUlQoV2ViVGhyZWFkSXNDdXJyZW50KCkgfHwgaXNNYWluVGhyZWFkKCkpOworICAgIEludFJl
Y3QgY2xpZW50UmVjdCA9IGVsZW1lbnRSZWN0SW5XaW5kb3cobV92aWRlb0VsZW1lbnQuZ2V0KCkp
OworICAgIFJlZlB0cjxXZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyQ29udGV4dD4gcHJvdGVj
dGVkVGhpcyh0aGlzKTsKKyAgICBkaXNwYXRjaF9hc3luYyhkaXNwYXRjaF9nZXRfbWFpbl9xdWV1
ZSgpLCBbcHJvdGVjdGVkVGhpcywgdGhpcywgY2xpZW50UmVjdF0geworICAgICAgICBBU1NFUlQo
aXNVSVRocmVhZCgpKTsKKyAgICAgICAgbV9pbnRlcmZhY2UtPmV4aXRGdWxsc2NyZWVuKGNsaWVu
dFJlY3QpOworICAgIH0pOwogfQogCit2b2lkIFdlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJD
b250ZXh0OjpyZXF1ZXN0SGlkZUFuZEV4aXRGdWxsc2NyZWVuKCkKK3sKKyAgICBBU1NFUlQoaXNV
SVRocmVhZCgpKTsKKyAgICBtX2ludGVyZmFjZS0+cmVxdWVzdEhpZGVBbmRFeGl0RnVsbHNjcmVl
bigpOworfQogCiBAaW1wbGVtZW50YXRpb24gV2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlciB7
CiAgICAgUmVmUHRyPFdlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJDb250ZXh0PiBfY29udGV4
dDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9XZWJWaWRlb0Z1bGxz
Y3JlZW5JbnRlcmZhY2VBVktpdC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1dlYlZp
ZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0LmgKaW5kZXggODFkYWM2MWQ3NWE0ZjFmNjljZjlk
YThkMjFlYzk0NTNiZmY1YTZkNC4uNTBkZTllMDZiMDRjYjYyZDgzY2IyNjg4MWY3ODU1YjQwMTg4
Y2YyOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1dlYlZpZGVvRnVs
bHNjcmVlbkludGVyZmFjZUFWS2l0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9z
L1dlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0LmgKQEAgLTM1LDYgKzM1LDcgQEAKICNp
bmNsdWRlICJUaW1lci5oIgogI2luY2x1ZGUgIldlYlBsYXliYWNrU2Vzc2lvbkludGVyZmFjZUFW
S2l0LmgiCiAjaW5jbHVkZSAiV2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlLmgiCisjaW5jbHVk
ZSAiV2ViVmlkZW9GdWxsc2NyZWVuTW9kZWwuaCIKICNpbmNsdWRlIDxmdW5jdGlvbmFsPgogI2lu
Y2x1ZGUgPG9iamMvb2JqYy5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CkBAIC01Nywx
MiArNTgsMTQgQEAgY2xhc3MgU3RyaW5nOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBJ
bnRSZWN0OworY2xhc3MgRmxvYXRTaXplOwogY2xhc3MgV2ViVmlkZW9GdWxsc2NyZWVuTW9kZWw7
CiBjbGFzcyBXZWJWaWRlb0Z1bGxzY3JlZW5DaGFuZ2VPYnNlcnZlcjsKICAgICAKIGNsYXNzIFdF
QkNPUkVfRVhQT1JUIFdlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0IGZpbmFsCiAgICAg
OiBwdWJsaWMgV2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlCi0gICAgLCBwdWJsaWMgV2ViUGxh
eWJhY2tTZXNzaW9uSW50ZXJmYWNlQVZLaXRDbGllbnQKKyAgICAsIHB1YmxpYyBXZWJWaWRlb0Z1
bGxzY3JlZW5Nb2RlbENsaWVudAorICAgICwgcHVibGljIFdlYlBsYXliYWNrU2Vzc2lvbk1vZGVs
Q2xpZW50CiAgICAgLCBwdWJsaWMgUmVmQ291bnRlZDxXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZh
Y2VBVktpdD4gewogCiBwdWJsaWM6CkBAIC03MiwxOCArNzUsMTMgQEAgcHVibGljOgogICAgIFdF
QkNPUkVfRVhQT1JUIHZvaWQgc2V0V2ViVmlkZW9GdWxsc2NyZWVuQ2hhbmdlT2JzZXJ2ZXIoV2Vi
VmlkZW9GdWxsc2NyZWVuQ2hhbmdlT2JzZXJ2ZXIqKTsKICAgICBXZWJQbGF5YmFja1Nlc3Npb25N
b2RlbCogd2ViUGxheWJhY2tTZXNzaW9uTW9kZWwoKSBjb25zdCB7IHJldHVybiBtX3BsYXliYWNr
U2Vzc2lvbkludGVyZmFjZS0+d2ViUGxheWJhY2tTZXNzaW9uTW9kZWwoKTsgfQogCi0gICAgV0VC
Q09SRV9FWFBPUlQgdm9pZCByZXNldE1lZGlhU3RhdGUoKSBmaW5hbDsKLSAgICBXRUJDT1JFX0VY
UE9SVCB2b2lkIHNldER1cmF0aW9uKGRvdWJsZSkgZmluYWw7Ci0gICAgV0VCQ09SRV9FWFBPUlQg
dm9pZCBzZXRDdXJyZW50VGltZShkb3VibGUgY3VycmVudFRpbWUsIGRvdWJsZSBhbmNob3JUaW1l
KSBmaW5hbDsKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldEJ1ZmZlcmVkVGltZShkb3VibGUp
IGZpbmFsOwotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0UmF0ZShib29sIGlzUGxheWluZywg
ZmxvYXQgcGxheWJhY2tSYXRlKSBmaW5hbDsKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldFZp
ZGVvRGltZW5zaW9ucyhib29sIGhhc1ZpZGVvLCBmbG9hdCB3aWR0aCwgZmxvYXQgaGVpZ2h0KSBm
aW5hbDsKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldFNlZWthYmxlUmFuZ2VzKGNvbnN0IFRp
bWVSYW5nZXMmKSBmaW5hbDsKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldENhblBsYXlGYXN0
UmV2ZXJzZShib29sKSBmaW5hbDsKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldEF1ZGlvTWVk
aWFTZWxlY3Rpb25PcHRpb25zKGNvbnN0IFZlY3RvcjxXVEY6OlN0cmluZz4mIG9wdGlvbnMsIHVp
bnQ2NF90IHNlbGVjdGVkSW5kZXgpIGZpbmFsOwotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0
TGVnaWJsZU1lZGlhU2VsZWN0aW9uT3B0aW9ucyhjb25zdCBWZWN0b3I8V1RGOjpTdHJpbmc+JiBv
cHRpb25zLCB1aW50NjRfdCBzZWxlY3RlZEluZGV4KSBmaW5hbDsKLSAgICBXRUJDT1JFX0VYUE9S
VCB2b2lkIHNldEV4dGVybmFsUGxheWJhY2soYm9vbCBlbmFibGVkLCBFeHRlcm5hbFBsYXliYWNr
VGFyZ2V0VHlwZSwgV1RGOjpTdHJpbmcgbG9jYWxpemVkRGV2aWNlTmFtZSkgZmluYWw7Ci0gICAg
V0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRXaXJlbGVzc1ZpZGVvUGxheWJhY2tEaXNhYmxlZChib29s
KSBmaW5hbDsKKyAgICAvLyBXZWJWaWRlb0Z1bGxzY3JlZW5Nb2RlbENsaWVudAorICAgIFdFQkNP
UkVfRVhQT1JUIHZvaWQgaGFzVmlkZW9DaGFuZ2VkKGJvb2wpIGZpbmFsOworICAgIFdFQkNPUkVf
RVhQT1JUIHZvaWQgdmlkZW9EaW1lbnNpb25zQ2hhbmdlZChjb25zdCBGbG9hdFNpemUmKSBmaW5h
bDsKKworICAgIC8vIFdlYlBsYXliYWNrU2Vzc2lvbk1vZGVsQ2xpZW50CisgICAgV0VCQ09SRV9F
WFBPUlQgdm9pZCBleHRlcm5hbFBsYXliYWNrQ2hhbmdlZChib29sIGVuYWJsZWQsIFdlYlBsYXli
YWNrU2Vzc2lvbk1vZGVsOjpFeHRlcm5hbFBsYXliYWNrVGFyZ2V0VHlwZSwgY29uc3QgU3RyaW5n
JiBsb2NhbGl6ZWREZXZpY2VOYW1lKSBmaW5hbDsKKwogICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1
YWwgdm9pZCBzZXR1cEZ1bGxzY3JlZW4oVUlWaWV3JiwgY29uc3QgSW50UmVjdCYgaW5pdGlhbFJl
Y3QsIFVJVmlldyAqLCBIVE1MTWVkaWFFbGVtZW50RW51bXM6OlZpZGVvRnVsbHNjcmVlbk1vZGUs
IGJvb2wgYWxsb3dzUGljdHVyZUluUGljdHVyZVBsYXliYWNrKTsKICAgICBXRUJDT1JFX0VYUE9S
VCB2aXJ0dWFsIHZvaWQgZW50ZXJGdWxsc2NyZWVuKCk7CiAgICAgV0VCQ09SRV9FWFBPUlQgdmly
dHVhbCB2b2lkIGV4aXRGdWxsc2NyZWVuKGNvbnN0IEludFJlY3QmIGZpbmFsUmVjdCk7CkBAIC0x
MjcsNyArMTI1LDYgQEAgcHJvdGVjdGVkOgogICAgIHZvaWQgZW50ZXJQaWN0dXJlSW5QaWN0dXJl
KCk7CiAgICAgdm9pZCBlbnRlckZ1bGxzY3JlZW5TdGFuZGFyZCgpOwogICAgIHZvaWQgd2F0Y2hk
b2dUaW1lckZpcmVkKCk7Ci0gICAgdm9pZCBleHRlcm5hbFBsYXliYWNrRW5hYmxlZENoYW5nZWQo
Ym9vbCkgZmluYWw7CiAgICAgV2ViQVZQbGF5ZXJDb250cm9sbGVyICpwbGF5ZXJDb250cm9sbGVy
KCkgY29uc3Q7CiAKICAgICBSZWY8V2ViUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlQVZLaXQ+IG1f
cGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vaW9zL1dlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0Lm1tIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vaW9zL1dlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0Lm1tCmlu
ZGV4IDA5OTljMWM3NzIxMjY5YzhmZTBkNTZkYmRkN2JmNmIwODdiNzNmN2YuLmNjNjJlM2E4ODRh
ZWYyOTUxOTdlMmJiNzZiYjBmYTdlYzMwNzBiYTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2lvcy9XZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdC5tbQorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvV2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZL
aXQubW0KQEAgLTUwMyw3ICs1MDMsOSBAQCBXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktp
dDo6fldlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0KCkKIHsKICAgICBXZWJBVlBsYXll
ckNvbnRyb2xsZXIqIHBsYXllckNvbnRyb2xsZXIgPSB0aGlzLT5wbGF5ZXJDb250cm9sbGVyKCk7
CiAgICAgaWYgKHBsYXllckNvbnRyb2xsZXIgJiYgcGxheWVyQ29udHJvbGxlci5leHRlcm5hbFBs
YXliYWNrQWN0aXZlKQotICAgICAgICBzZXRFeHRlcm5hbFBsYXliYWNrKGZhbHNlLCBUYXJnZXRU
eXBlTm9uZSwgIiIpOworICAgICAgICBleHRlcm5hbFBsYXliYWNrQ2hhbmdlZChmYWxzZSwgV2Vi
UGxheWJhY2tTZXNzaW9uTW9kZWw6OlRhcmdldFR5cGVOb25lLCAiIik7CisgICAgaWYgKG1fdmlk
ZW9GdWxsc2NyZWVuTW9kZWwpCisgICAgICAgIG1fdmlkZW9GdWxsc2NyZWVuTW9kZWwtPnJlbW92
ZUNsaWVudCgqdGhpcyk7CiB9CiAKIFdlYkFWUGxheWVyQ29udHJvbGxlciAqV2ViVmlkZW9GdWxs
c2NyZWVuSW50ZXJmYWNlQVZLaXQ6OnBsYXllckNvbnRyb2xsZXIoKSBjb25zdApAQCAtNTExLDQ4
ICs1MTMsMzYgQEAgV2ViQVZQbGF5ZXJDb250cm9sbGVyICpXZWJWaWRlb0Z1bGxzY3JlZW5JbnRl
cmZhY2VBVktpdDo6cGxheWVyQ29udHJvbGxlcigpIGNvbnMKICAgICByZXR1cm4gbV9wbGF5YmFj
a1Nlc3Npb25JbnRlcmZhY2UtPnBsYXllckNvbnRyb2xsZXIoKTsKIH0KIAotdm9pZCBXZWJWaWRl
b0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdDo6cmVzZXRNZWRpYVN0YXRlKCkKLXsKLSAgICBtX3Bs
YXliYWNrU2Vzc2lvbkludGVyZmFjZS0+cmVzZXRNZWRpYVN0YXRlKCk7Ci19Ci0KIHZvaWQgV2Vi
VmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQ6OnNldFdlYlZpZGVvRnVsbHNjcmVlbk1vZGVs
KFdlYlZpZGVvRnVsbHNjcmVlbk1vZGVsKiBtb2RlbCkKIHsKLSAgICBtX3ZpZGVvRnVsbHNjcmVl
bk1vZGVsID0gbW9kZWw7Ci19CisgICAgaWYgKG1fdmlkZW9GdWxsc2NyZWVuTW9kZWwpCisgICAg
ICAgIG1fdmlkZW9GdWxsc2NyZWVuTW9kZWwtPnJlbW92ZUNsaWVudCgqdGhpcyk7CiAKLXZvaWQg
V2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQ6OnNldFdlYlZpZGVvRnVsbHNjcmVlbkNo
YW5nZU9ic2VydmVyKFdlYlZpZGVvRnVsbHNjcmVlbkNoYW5nZU9ic2VydmVyKiBvYnNlcnZlcikK
LXsKLSAgICBtX2Z1bGxzY3JlZW5DaGFuZ2VPYnNlcnZlciA9IG9ic2VydmVyOwotfQorICAgIG1f
dmlkZW9GdWxsc2NyZWVuTW9kZWwgPSBtb2RlbDsKIAotdm9pZCBXZWJWaWRlb0Z1bGxzY3JlZW5J
bnRlcmZhY2VBVktpdDo6c2V0RHVyYXRpb24oZG91YmxlIGR1cmF0aW9uKQotewotICAgIG1fcGxh
eWJhY2tTZXNzaW9uSW50ZXJmYWNlLT5zZXREdXJhdGlvbihkdXJhdGlvbik7Ci19CisgICAgaWYg
KG1fdmlkZW9GdWxsc2NyZWVuTW9kZWwpCisgICAgICAgIG1fdmlkZW9GdWxsc2NyZWVuTW9kZWwt
PmFkZENsaWVudCgqdGhpcyk7CiAKLXZvaWQgV2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZL
aXQ6OnNldEN1cnJlbnRUaW1lKGRvdWJsZSBjdXJyZW50VGltZSwgZG91YmxlIGFuY2hvclRpbWUp
Ci17Ci0gICAgbV9wbGF5YmFja1Nlc3Npb25JbnRlcmZhY2UtPnNldEN1cnJlbnRUaW1lKGN1cnJl
bnRUaW1lLCBhbmNob3JUaW1lKTsKKyAgICBoYXNWaWRlb0NoYW5nZWQobV92aWRlb0Z1bGxzY3Jl
ZW5Nb2RlbCA/IG1fdmlkZW9GdWxsc2NyZWVuTW9kZWwtPmhhc1ZpZGVvKCkgOiBmYWxzZSk7Cisg
ICAgdmlkZW9EaW1lbnNpb25zQ2hhbmdlZChtX3ZpZGVvRnVsbHNjcmVlbk1vZGVsID8gbV92aWRl
b0Z1bGxzY3JlZW5Nb2RlbC0+dmlkZW9EaW1lbnNpb25zKCkgOiBGbG9hdFNpemUoKSk7CiB9CiAK
LXZvaWQgV2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQ6OnNldEJ1ZmZlcmVkVGltZShk
b3VibGUgYnVmZmVyZWRUaW1lKQordm9pZCBXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktp
dDo6c2V0V2ViVmlkZW9GdWxsc2NyZWVuQ2hhbmdlT2JzZXJ2ZXIoV2ViVmlkZW9GdWxsc2NyZWVu
Q2hhbmdlT2JzZXJ2ZXIqIG9ic2VydmVyKQogewotICAgIG1fcGxheWJhY2tTZXNzaW9uSW50ZXJm
YWNlLT5zZXRCdWZmZXJlZFRpbWUoYnVmZmVyZWRUaW1lKTsKKyAgICBtX2Z1bGxzY3JlZW5DaGFu
Z2VPYnNlcnZlciA9IG9ic2VydmVyOwogfQogCi12b2lkIFdlYlZpZGVvRnVsbHNjcmVlbkludGVy
ZmFjZUFWS2l0OjpzZXRSYXRlKGJvb2wgaXNQbGF5aW5nLCBmbG9hdCBwbGF5YmFja1JhdGUpCit2
b2lkIFdlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0OjpoYXNWaWRlb0NoYW5nZWQoYm9v
bCBoYXNWaWRlbykKIHsKLSAgICBtX3BsYXliYWNrU2Vzc2lvbkludGVyZmFjZS0+c2V0UmF0ZShp
c1BsYXlpbmcsIHBsYXliYWNrUmF0ZSk7CisgICAgW3BsYXllckNvbnRyb2xsZXIoKSBzZXRIYXNF
bmFibGVkVmlkZW86aGFzVmlkZW9dOwogfQogCi12b2lkIFdlYlZpZGVvRnVsbHNjcmVlbkludGVy
ZmFjZUFWS2l0OjpzZXRWaWRlb0RpbWVuc2lvbnMoYm9vbCBoYXNWaWRlbywgZmxvYXQgd2lkdGgs
IGZsb2F0IGhlaWdodCkKK3ZvaWQgV2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQ6OnZp
ZGVvRGltZW5zaW9uc0NoYW5nZWQoY29uc3QgRmxvYXRTaXplJiB2aWRlb0RpbWVuc2lvbnMpCiB7
CiAgICAgV2ViQVZQbGF5ZXJMYXllciAqcGxheWVyTGF5ZXIgPSAoV2ViQVZQbGF5ZXJMYXllciAq
KVttX3BsYXllckxheWVyVmlldyBwbGF5ZXJMYXllcl07CiAKLSAgICBbcGxheWVyTGF5ZXIgc2V0
VmlkZW9EaW1lbnNpb25zOkNHU2l6ZU1ha2Uod2lkdGgsIGhlaWdodCldOwotICAgIFtwbGF5ZXJD
b250cm9sbGVyKCkgc2V0SGFzRW5hYmxlZFZpZGVvOmhhc1ZpZGVvXTsKLSAgICBbcGxheWVyQ29u
dHJvbGxlcigpIHNldENvbnRlbnREaW1lbnNpb25zOkNHU2l6ZU1ha2Uod2lkdGgsIGhlaWdodCld
OworICAgIFtwbGF5ZXJMYXllciBzZXRWaWRlb0RpbWVuc2lvbnM6dmlkZW9EaW1lbnNpb25zXTsK
KyAgICBbcGxheWVyQ29udHJvbGxlcigpIHNldENvbnRlbnREaW1lbnNpb25zOnZpZGVvRGltZW5z
aW9uc107CiAgICAgW21fcGxheWVyTGF5ZXJWaWV3IHNldE5lZWRzTGF5b3V0XTsKIAogICAgIFdl
YkFWUGljdHVyZUluUGljdHVyZVBsYXllckxheWVyVmlldyAqcGlwVmlldyA9IChXZWJBVlBpY3R1
cmVJblBpY3R1cmVQbGF5ZXJMYXllclZpZXcgKilbbV9wbGF5ZXJMYXllclZpZXcgcGljdHVyZUlu
UGljdHVyZVBsYXllckxheWVyVmlld107CkBAIC01NjEsNDYgKzU1MSwxMSBAQCB2b2lkIFdlYlZp
ZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0OjpzZXRWaWRlb0RpbWVuc2lvbnMoYm9vbCBoYXNW
aWRlbywgZmxvYXQgdwogICAgIFtwaXBWaWV3IHNldE5lZWRzTGF5b3V0XTsgICAgCiB9CiAKLXZv
aWQgV2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQ6OnNldFNlZWthYmxlUmFuZ2VzKGNv
bnN0IFRpbWVSYW5nZXMmIHRpbWVSYW5nZXMpCi17Ci0gICAgbV9wbGF5YmFja1Nlc3Npb25JbnRl
cmZhY2UtPnNldFNlZWthYmxlUmFuZ2VzKHRpbWVSYW5nZXMpOwotfQotCi12b2lkIFdlYlZpZGVv
RnVsbHNjcmVlbkludGVyZmFjZUFWS2l0OjpzZXRDYW5QbGF5RmFzdFJldmVyc2UoYm9vbCBjYW5Q
bGF5RmFzdFJldmVyc2UpCi17Ci0gICAgbV9wbGF5YmFja1Nlc3Npb25JbnRlcmZhY2UtPnNldENh
blBsYXlGYXN0UmV2ZXJzZShjYW5QbGF5RmFzdFJldmVyc2UpOwotfQotCi12b2lkIFdlYlZpZGVv
RnVsbHNjcmVlbkludGVyZmFjZUFWS2l0OjpzZXRBdWRpb01lZGlhU2VsZWN0aW9uT3B0aW9ucyhj
b25zdCBWZWN0b3I8U3RyaW5nPiYgb3B0aW9ucywgdWludDY0X3Qgc2VsZWN0ZWRJbmRleCkKLXsK
LSAgICBtX3BsYXliYWNrU2Vzc2lvbkludGVyZmFjZS0+c2V0QXVkaW9NZWRpYVNlbGVjdGlvbk9w
dGlvbnMob3B0aW9ucywgc2VsZWN0ZWRJbmRleCk7Ci19Ci0KLXZvaWQgV2ViVmlkZW9GdWxsc2Ny
ZWVuSW50ZXJmYWNlQVZLaXQ6OnNldExlZ2libGVNZWRpYVNlbGVjdGlvbk9wdGlvbnMoY29uc3Qg
VmVjdG9yPFN0cmluZz4mIG9wdGlvbnMsIHVpbnQ2NF90IHNlbGVjdGVkSW5kZXgpCi17Ci0gICAg
bV9wbGF5YmFja1Nlc3Npb25JbnRlcmZhY2UtPnNldExlZ2libGVNZWRpYVNlbGVjdGlvbk9wdGlv
bnMob3B0aW9ucywgc2VsZWN0ZWRJbmRleCk7Ci19Ci0KLXZvaWQgV2ViVmlkZW9GdWxsc2NyZWVu
SW50ZXJmYWNlQVZLaXQ6OnNldEV4dGVybmFsUGxheWJhY2soYm9vbCBlbmFibGVkLCBFeHRlcm5h
bFBsYXliYWNrVGFyZ2V0VHlwZSB0YXJnZXRUeXBlLCBTdHJpbmcgbG9jYWxpemVkRGV2aWNlTmFt
ZSkKLXsKLSAgICBtX3BsYXliYWNrU2Vzc2lvbkludGVyZmFjZS0+c2V0RXh0ZXJuYWxQbGF5YmFj
ayhlbmFibGVkLCB0YXJnZXRUeXBlLCBsb2NhbGl6ZWREZXZpY2VOYW1lKTsKLX0KLQotdm9pZCBX
ZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdDo6ZXh0ZXJuYWxQbGF5YmFja0VuYWJsZWRD
aGFuZ2VkKGJvb2wgZW5hYmxlZCkKK3ZvaWQgV2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZL
aXQ6OmV4dGVybmFsUGxheWJhY2tDaGFuZ2VkKGJvb2wgZW5hYmxlZCwgV2ViUGxheWJhY2tTZXNz
aW9uTW9kZWw6OkV4dGVybmFsUGxheWJhY2tUYXJnZXRUeXBlLCBjb25zdCBTdHJpbmcmKQogewog
ICAgIFttX3BsYXllckxheWVyVmlldyBzZXRIaWRkZW46ZW5hYmxlZF07CiB9CiAKLXZvaWQgV2Vi
VmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQ6OnNldFdpcmVsZXNzVmlkZW9QbGF5YmFja0Rp
c2FibGVkKGJvb2wgZGlzYWJsZWQpCi17Ci0gICAgbV9wbGF5YmFja1Nlc3Npb25JbnRlcmZhY2Ut
PnNldFdpcmVsZXNzVmlkZW9QbGF5YmFja0Rpc2FibGVkKGRpc2FibGVkKTsKLX0KLQotYm9vbCBX
ZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdDo6d2lyZWxlc3NWaWRlb1BsYXliYWNrRGlz
YWJsZWQoKSBjb25zdAotewotICAgIHJldHVybiBtX3BsYXliYWNrU2Vzc2lvbkludGVyZmFjZS0+
d2lyZWxlc3NWaWRlb1BsYXliYWNrRGlzYWJsZWQoKTsKLX0KLQogdm9pZCBXZWJWaWRlb0Z1bGxz
Y3JlZW5JbnRlcmZhY2VBVktpdDo6YXBwbGljYXRpb25EaWRCZWNvbWVBY3RpdmUoKQogewogICAg
IExPRyhGdWxsc2NyZWVuLCAiV2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQ6OmFwcGxp
Y2F0aW9uRGlkQmVjb21lQWN0aXZlKCVwKSIsIHRoaXMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbWFjL1dlYlBsYXliYWNrU2Vzc2lvbkludGVyZmFjZU1hYy5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1dlYlBsYXliYWNrU2Vzc2lvbkludGVyZmFjZU1hYy5o
CmluZGV4IGNjOTYxN2Q4MzQ5NTU2NmIxZTRlYTlhMDgxNTU5ZTIzOTA0NDZkZDIuLjA1NGE4NDNi
NDUwYjRmODhkMDFlMzFmNmQ1OGU4MTdmNDY1M2U1ZTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL21hYy9XZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2VNYWMuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvV2ViUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlTWFj
LmgKQEAgLTMwLDYgKzMwLDcgQEAKIAogI2luY2x1ZGUgIkhUTUxNZWRpYUVsZW1lbnRFbnVtcy5o
IgogI2luY2x1ZGUgIldlYlBsYXliYWNrU2Vzc2lvbkludGVyZmFjZS5oIgorI2luY2x1ZGUgIldl
YlBsYXliYWNrU2Vzc2lvbk1vZGVsLmgiCiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KICNp
bmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+
CkBAIC00MCw0NyArNDEsMzQgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgSW50UmVjdDsK
IGNsYXNzIFdlYlBsYXliYWNrU2Vzc2lvbk1vZGVsOwogCi1jbGFzcyBXZWJQbGF5YmFja1Nlc3Np
b25JbnRlcmZhY2VNYWNDbGllbnQgewotcHVibGljOgotICAgIHZpcnR1YWwgfldlYlBsYXliYWNr
U2Vzc2lvbkludGVyZmFjZU1hY0NsaWVudCgpIHsgfQotCi0gICAgdmlydHVhbCB2b2lkIHJhdGVD
aGFuZ2VkKGJvb2wgaXNQbGF5aW5nLCBmbG9hdCBwbGF5YmFja1JhdGUpID0gMDsKLX07Ci0KIGNs
YXNzIFdFQkNPUkVfRVhQT1JUIFdlYlBsYXliYWNrU2Vzc2lvbkludGVyZmFjZU1hYyBmaW5hbAog
ICAgIDogcHVibGljIFdlYlBsYXliYWNrU2Vzc2lvbkludGVyZmFjZQorICAgICwgcHVibGljIFdl
YlBsYXliYWNrU2Vzc2lvbk1vZGVsQ2xpZW50CiAgICAgLCBwdWJsaWMgUmVmQ291bnRlZDxXZWJQ
bGF5YmFja1Nlc3Npb25JbnRlcmZhY2VNYWM+IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPFdl
YlBsYXliYWNrU2Vzc2lvbkludGVyZmFjZU1hYz4gY3JlYXRlKCkKLSAgICB7Ci0gICAgICAgIHJl
dHVybiBhZG9wdFJlZigqbmV3IFdlYlBsYXliYWNrU2Vzc2lvbkludGVyZmFjZU1hYygpKTsKLSAg
ICB9CisgICAgc3RhdGljIFJlZjxXZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2VNYWM+IGNyZWF0
ZShXZWJQbGF5YmFja1Nlc3Npb25Nb2RlbCYpOwogICAgIHZpcnR1YWwgfldlYlBsYXliYWNrU2Vz
c2lvbkludGVyZmFjZU1hYygpOwogICAgIFdlYlBsYXliYWNrU2Vzc2lvbk1vZGVsKiB3ZWJQbGF5
YmFja1Nlc3Npb25Nb2RlbCgpIGNvbnN0IHsgcmV0dXJuIG1fcGxheWJhY2tTZXNzaW9uTW9kZWw7
IH0KLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldFdlYlBsYXliYWNrU2Vzc2lvbk1vZGVsKFdl
YlBsYXliYWNrU2Vzc2lvbk1vZGVsKik7Ci0gICAgV2ViUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNl
TWFjQ2xpZW50KiBjbGllbnQoKSBjb25zdCB7IHJldHVybiBtX2NsaWVudDsgfQotICAgIHZvaWQg
c2V0Q2xpZW50KFdlYlBsYXliYWNrU2Vzc2lvbkludGVyZmFjZU1hY0NsaWVudCopOwogCisgICAg
Ly8gV2ViUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlCiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBy
ZXNldE1lZGlhU3RhdGUoKSBmaW5hbCB7IH0KLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldER1
cmF0aW9uKGRvdWJsZSkgZmluYWw7Ci0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRDdXJyZW50
VGltZShkb3VibGUgLypjdXJyZW50VGltZSovLCBkb3VibGUgLyphbmNob3JUaW1lKi8pIGZpbmFs
OwotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0QnVmZmVyZWRUaW1lKGRvdWJsZSkgZmluYWwg
eyB9Ci0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRSYXRlKGJvb2wgLyppc1BsYXlpbmcqLywg
ZmxvYXQgLypwbGF5YmFja1JhdGUqLykgZmluYWw7Ci0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBz
ZXRTZWVrYWJsZVJhbmdlcyhjb25zdCBUaW1lUmFuZ2VzJikgZmluYWw7Ci0gICAgV0VCQ09SRV9F
WFBPUlQgdm9pZCBzZXRDYW5QbGF5RmFzdFJldmVyc2UoYm9vbCkgZmluYWwgeyB9Ci0gICAgV0VC
Q09SRV9FWFBPUlQgdm9pZCBzZXRBdWRpb01lZGlhU2VsZWN0aW9uT3B0aW9ucyhjb25zdCBWZWN0
b3I8U3RyaW5nPiYgLypvcHRpb25zKi8sIHVpbnQ2NF90IC8qc2VsZWN0ZWRJbmRleCovKSBmaW5h
bDsKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldExlZ2libGVNZWRpYVNlbGVjdGlvbk9wdGlv
bnMoY29uc3QgVmVjdG9yPFN0cmluZz4mIC8qb3B0aW9ucyovLCB1aW50NjRfdCAvKnNlbGVjdGVk
SW5kZXgqLykgZmluYWw7Ci0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRFeHRlcm5hbFBsYXli
YWNrKGJvb2wsIEV4dGVybmFsUGxheWJhY2tUYXJnZXRUeXBlLCBTdHJpbmcpIGZpbmFsIHsgfQot
ICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0V2lyZWxlc3NWaWRlb1BsYXliYWNrRGlzYWJsZWQo
Ym9vbCkgZmluYWwgeyB9CisKKyAgICAvLyBXZWJQbGF5YmFja1Nlc3Npb25Nb2RlbENsaWVudAor
ICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZHVyYXRpb25DaGFuZ2VkKGRvdWJsZSkgZmluYWw7Cisg
ICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBjdXJyZW50VGltZUNoYW5nZWQoZG91YmxlIC8qY3VycmVu
dFRpbWUqLywgZG91YmxlIC8qYW5jaG9yVGltZSovKSBmaW5hbDsKKyAgICBXRUJDT1JFX0VYUE9S
VCB2b2lkIHJhdGVDaGFuZ2VkKGJvb2wgLyppc1BsYXlpbmcqLywgZmxvYXQgLypwbGF5YmFja1Jh
dGUqLykgZmluYWw7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZWVrYWJsZVJhbmdlc0NoYW5n
ZWQoY29uc3QgVGltZVJhbmdlcyYpIGZpbmFsOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgYXVk
aW9NZWRpYVNlbGVjdGlvbk9wdGlvbnNDaGFuZ2VkKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiAvKm9w
dGlvbnMqLywgdWludDY0X3QgLypzZWxlY3RlZEluZGV4Ki8pIGZpbmFsOworICAgIFdFQkNPUkVf
RVhQT1JUIHZvaWQgbGVnaWJsZU1lZGlhU2VsZWN0aW9uT3B0aW9uc0NoYW5nZWQoY29uc3QgVmVj
dG9yPFN0cmluZz4mIC8qb3B0aW9ucyovLCB1aW50NjRfdCAvKnNlbGVjdGVkSW5kZXgqLykgZmlu
YWw7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBpbnZhbGlkYXRlKCk7CiAgICAgV0VCQ09SRV9F
WFBPUlQgdm9pZCBlbnN1cmVDb250cm9sc01hbmFnZXIoKTsKICAgICBXRUJDT1JFX0VYUE9SVCB2
b2lkIHNldFBsYXlCYWNrQ29udHJvbHNNYW5hZ2VyKFdlYlBsYXliYWNrQ29udHJvbHNNYW5hZ2Vy
ICopOwogICAgIFdFQkNPUkVfRVhQT1JUIFdlYlBsYXliYWNrQ29udHJvbHNNYW5hZ2VyICpwbGF5
QmFja0NvbnRyb2xzTWFuYWdlcigpOwogCiBwcml2YXRlOgorICAgIFdlYlBsYXliYWNrU2Vzc2lv
bkludGVyZmFjZU1hYyhXZWJQbGF5YmFja1Nlc3Npb25Nb2RlbCYpOwogICAgIFdlYlBsYXliYWNr
U2Vzc2lvbk1vZGVsKiBtX3BsYXliYWNrU2Vzc2lvbk1vZGVsIHsgbnVsbHB0ciB9OwotICAgIFdl
YlBsYXliYWNrQ29udHJvbHNNYW5hZ2VyICptX3BsYXliYWNrQ29udHJvbHNNYW5hZ2VyOwotICAg
IFdlYlBsYXliYWNrU2Vzc2lvbkludGVyZmFjZU1hY0NsaWVudCogbV9jbGllbnQgeyBudWxscHRy
IH07CisgICAgV2ViUGxheWJhY2tDb250cm9sc01hbmFnZXIgKm1fcGxheWJhY2tDb250cm9sc01h
bmFnZXIgIHsgbnVsbHB0ciB9OwogfTsKIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbWFjL1dlYlBsYXliYWNrU2Vzc2lvbkludGVyZmFjZU1hYy5tbSBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21hYy9XZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2VNYWMubW0KaW5k
ZXggMjRjNGQ2YWI0ZmMyNGI5NmFlNzMyODk1MTg0MzgyMGQxZGZjMmNmNS4uMTZmMThjZjVjY2Jl
MzA3MTkyMThhMjkzZGVlMjA2MWNiN2VmMDA1YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbWFjL1dlYlBsYXliYWNrU2Vzc2lvbkludGVyZmFjZU1hYy5tbQorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvV2ViUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlTWFjLm1t
CkBAIC00NSwyNCArNDUsMjQgQEAgdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAotV2ViUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlTWFjOjp+V2ViUGxheWJh
Y2tTZXNzaW9uSW50ZXJmYWNlTWFjKCkKK1JlZjxXZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2VN
YWM+IFdlYlBsYXliYWNrU2Vzc2lvbkludGVyZmFjZU1hYzo6Y3JlYXRlKFdlYlBsYXliYWNrU2Vz
c2lvbk1vZGVsJiBtb2RlbCkKIHsKKyAgICBhdXRvIGludGVyZmFjZSA9IGFkb3B0UmVmKCpuZXcg
V2ViUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlTWFjKG1vZGVsKSk7CisgICAgbW9kZWwuYWRkQ2xp
ZW50KGludGVyZmFjZSk7CisgICAgcmV0dXJuIGludGVyZmFjZTsKIH0KIAotdm9pZCBXZWJQbGF5
YmFja1Nlc3Npb25JbnRlcmZhY2VNYWM6OnNldFdlYlBsYXliYWNrU2Vzc2lvbk1vZGVsKFdlYlBs
YXliYWNrU2Vzc2lvbk1vZGVsKiBtb2RlbCkKK1dlYlBsYXliYWNrU2Vzc2lvbkludGVyZmFjZU1h
Yzo6V2ViUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlTWFjKFdlYlBsYXliYWNrU2Vzc2lvbk1vZGVs
JiBtb2RlbCkKKyAgICA6IG1fcGxheWJhY2tTZXNzaW9uTW9kZWwoJm1vZGVsKQogewotICAgIG1f
cGxheWJhY2tTZXNzaW9uTW9kZWwgPSBtb2RlbDsKIH0KIAotdm9pZCBXZWJQbGF5YmFja1Nlc3Np
b25JbnRlcmZhY2VNYWM6OnNldENsaWVudChXZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2VNYWND
bGllbnQqIGNsaWVudCkKK1dlYlBsYXliYWNrU2Vzc2lvbkludGVyZmFjZU1hYzo6fldlYlBsYXli
YWNrU2Vzc2lvbkludGVyZmFjZU1hYygpCiB7Ci0gICAgbV9jbGllbnQgPSBjbGllbnQ7Ci0KLSAg
ICBpZiAobV9jbGllbnQgJiYgbV9wbGF5YmFja1Nlc3Npb25Nb2RlbCkKLSAgICAgICAgbV9jbGll
bnQtPnJhdGVDaGFuZ2VkKG1fcGxheWJhY2tTZXNzaW9uTW9kZWwtPmlzUGxheWluZygpLCBtX3Bs
YXliYWNrU2Vzc2lvbk1vZGVsLT5wbGF5YmFja1JhdGUoKSk7CisgICAgaW52YWxpZGF0ZSgpOwog
fQogCi12b2lkIFdlYlBsYXliYWNrU2Vzc2lvbkludGVyZmFjZU1hYzo6c2V0RHVyYXRpb24oZG91
YmxlIGR1cmF0aW9uKQordm9pZCBXZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2VNYWM6OmR1cmF0
aW9uQ2hhbmdlZChkb3VibGUgZHVyYXRpb24pCiB7CiAgICAgV2ViUGxheWJhY2tDb250cm9sc01h
bmFnZXIqIGNvbnRyb2xzTWFuYWdlciA9IHBsYXlCYWNrQ29udHJvbHNNYW5hZ2VyKCk7CiAKQEAg
LTczLDcgKzczLDcgQEAgdm9pZCBXZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2VNYWM6OnNldER1
cmF0aW9uKGRvdWJsZSBkdXJhdGlvbikKICAgICBjb250cm9sc01hbmFnZXIuaGFzRW5hYmxlZFZp
ZGVvID0gWUVTOwogfQogCi12b2lkIFdlYlBsYXliYWNrU2Vzc2lvbkludGVyZmFjZU1hYzo6c2V0
Q3VycmVudFRpbWUoZG91YmxlIGN1cnJlbnRUaW1lLCBkb3VibGUgYW5jaG9yVGltZSkKK3ZvaWQg
V2ViUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlTWFjOjpjdXJyZW50VGltZUNoYW5nZWQoZG91Ymxl
IGN1cnJlbnRUaW1lLCBkb3VibGUgYW5jaG9yVGltZSkKIHsKICAgICBXZWJQbGF5YmFja0NvbnRy
b2xzTWFuYWdlciogY29udHJvbHNNYW5hZ2VyID0gcGxheUJhY2tDb250cm9sc01hbmFnZXIoKTsK
IApAQCAtODQsMTQgKzg0LDExIEBAIHZvaWQgV2ViUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlTWFj
OjpzZXRDdXJyZW50VGltZShkb3VibGUgY3VycmVudFRpbWUsIGRvdWJsZSBhCiAgICAgW2NvbnRy
b2xzTWFuYWdlciBzZXRUaW1pbmc6dGltaW5nXTsKIH0KIAotdm9pZCBXZWJQbGF5YmFja1Nlc3Np
b25JbnRlcmZhY2VNYWM6OnNldFJhdGUoYm9vbCBpc1BsYXlpbmcsIGZsb2F0IHBsYXliYWNrUmF0
ZSkKK3ZvaWQgV2ViUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlTWFjOjpyYXRlQ2hhbmdlZChib29s
IGlzUGxheWluZywgZmxvYXQgcGxheWJhY2tSYXRlKQogewogICAgIFdlYlBsYXliYWNrQ29udHJv
bHNNYW5hZ2VyKiBjb250cm9sc01hbmFnZXIgPSBwbGF5QmFja0NvbnRyb2xzTWFuYWdlcigpOwog
ICAgIFtjb250cm9sc01hbmFnZXIgc2V0UmF0ZTppc1BsYXlpbmcgPyBwbGF5YmFja1JhdGUgOiAw
Ll07CiAgICAgW2NvbnRyb2xzTWFuYWdlciBzZXRQbGF5aW5nOmlzUGxheWluZ107Ci0KLSAgICBp
ZiAobV9jbGllbnQpCi0gICAgICAgIG1fY2xpZW50LT5yYXRlQ2hhbmdlZChpc1BsYXlpbmcsIHBs
YXliYWNrUmF0ZSk7CiB9CiAKIHN0YXRpYyBSZXRhaW5QdHI8TlNNdXRhYmxlQXJyYXk+IHRpbWVS
YW5nZXNUb0FycmF5KGNvbnN0IFRpbWVSYW5nZXMmIHRpbWVSYW5nZXMpCkBAIC0xMDcsMjYgKzEw
NCwyOCBAQCBzdGF0aWMgUmV0YWluUHRyPE5TTXV0YWJsZUFycmF5PiB0aW1lUmFuZ2VzVG9BcnJh
eShjb25zdCBUaW1lUmFuZ2VzJiB0aW1lUmFuZ2VzKQogICAgIHJldHVybiByYW5nZUFycmF5Owog
fQogCi12b2lkIFdlYlBsYXliYWNrU2Vzc2lvbkludGVyZmFjZU1hYzo6c2V0U2Vla2FibGVSYW5n
ZXMoY29uc3QgVGltZVJhbmdlcyYgdGltZVJhbmdlcykKK3ZvaWQgV2ViUGxheWJhY2tTZXNzaW9u
SW50ZXJmYWNlTWFjOjpzZWVrYWJsZVJhbmdlc0NoYW5nZWQoY29uc3QgVGltZVJhbmdlcyYgdGlt
ZVJhbmdlcykKIHsKLSAgICBXZWJQbGF5YmFja0NvbnRyb2xzTWFuYWdlciogY29udHJvbHNNYW5h
Z2VyID0gcGxheUJhY2tDb250cm9sc01hbmFnZXIoKTsKLSAgICBbY29udHJvbHNNYW5hZ2VyIHNl
dFNlZWthYmxlVGltZVJhbmdlczp0aW1lUmFuZ2VzVG9BcnJheSh0aW1lUmFuZ2VzKS5nZXQoKV07
CisgICAgW3BsYXlCYWNrQ29udHJvbHNNYW5hZ2VyKCkgc2V0U2Vla2FibGVUaW1lUmFuZ2VzOnRp
bWVSYW5nZXNUb0FycmF5KHRpbWVSYW5nZXMpLmdldCgpXTsKIH0KIAotdm9pZCBXZWJQbGF5YmFj
a1Nlc3Npb25JbnRlcmZhY2VNYWM6OnNldEF1ZGlvTWVkaWFTZWxlY3Rpb25PcHRpb25zKGNvbnN0
IFZlY3RvcjxXVEY6OlN0cmluZz4mIG9wdGlvbnMsIHVpbnQ2NF90IHNlbGVjdGVkSW5kZXgpCit2
b2lkIFdlYlBsYXliYWNrU2Vzc2lvbkludGVyZmFjZU1hYzo6YXVkaW9NZWRpYVNlbGVjdGlvbk9w
dGlvbnNDaGFuZ2VkKGNvbnN0IFZlY3RvcjxXVEY6OlN0cmluZz4mIG9wdGlvbnMsIHVpbnQ2NF90
IHNlbGVjdGVkSW5kZXgpCiB7Ci0gICAgV2ViUGxheWJhY2tDb250cm9sc01hbmFnZXIqIGNvbnRy
b2xzTWFuYWdlciA9IHBsYXlCYWNrQ29udHJvbHNNYW5hZ2VyKCk7Ci0gICAgW2NvbnRyb2xzTWFu
YWdlciBzZXRBdWRpb01lZGlhU2VsZWN0aW9uT3B0aW9uczpvcHRpb25zIHdpdGhTZWxlY3RlZElu
ZGV4OnN0YXRpY19jYXN0PE5TVUludGVnZXI+KHNlbGVjdGVkSW5kZXgpXTsKKyAgICBbcGxheUJh
Y2tDb250cm9sc01hbmFnZXIoKSBzZXRBdWRpb01lZGlhU2VsZWN0aW9uT3B0aW9uczpvcHRpb25z
IHdpdGhTZWxlY3RlZEluZGV4OnN0YXRpY19jYXN0PE5TVUludGVnZXI+KHNlbGVjdGVkSW5kZXgp
XTsKIH0KIAotdm9pZCBXZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2VNYWM6OnNldExlZ2libGVN
ZWRpYVNlbGVjdGlvbk9wdGlvbnMoY29uc3QgVmVjdG9yPFdURjo6U3RyaW5nPiYgb3B0aW9ucywg
dWludDY0X3Qgc2VsZWN0ZWRJbmRleCkKK3ZvaWQgV2ViUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNl
TWFjOjpsZWdpYmxlTWVkaWFTZWxlY3Rpb25PcHRpb25zQ2hhbmdlZChjb25zdCBWZWN0b3I8V1RG
OjpTdHJpbmc+JiBvcHRpb25zLCB1aW50NjRfdCBzZWxlY3RlZEluZGV4KQogewotICAgIFdlYlBs
YXliYWNrQ29udHJvbHNNYW5hZ2VyKiBjb250cm9sc01hbmFnZXIgPSBwbGF5QmFja0NvbnRyb2xz
TWFuYWdlcigpOwotICAgIFtjb250cm9sc01hbmFnZXIgc2V0TGVnaWJsZU1lZGlhU2VsZWN0aW9u
T3B0aW9uczpvcHRpb25zIHdpdGhTZWxlY3RlZEluZGV4OnN0YXRpY19jYXN0PE5TVUludGVnZXI+
KHNlbGVjdGVkSW5kZXgpXTsKKyAgICBbcGxheUJhY2tDb250cm9sc01hbmFnZXIoKSBzZXRMZWdp
YmxlTWVkaWFTZWxlY3Rpb25PcHRpb25zOm9wdGlvbnMgd2l0aFNlbGVjdGVkSW5kZXg6c3RhdGlj
X2Nhc3Q8TlNVSW50ZWdlcj4oc2VsZWN0ZWRJbmRleCldOwogfQogCiB2b2lkIFdlYlBsYXliYWNr
U2Vzc2lvbkludGVyZmFjZU1hYzo6aW52YWxpZGF0ZSgpCiB7CisgICAgaWYgKCFtX3BsYXliYWNr
U2Vzc2lvbk1vZGVsKQorICAgICAgICByZXR1cm47CisKKyAgICBtX3BsYXliYWNrU2Vzc2lvbk1v
ZGVsLT5yZW1vdmVDbGllbnQoKnRoaXMpOworICAgIG1fcGxheWJhY2tTZXNzaW9uTW9kZWwgPSBu
dWxscHRyOwogfQogCiB2b2lkIFdlYlBsYXliYWNrU2Vzc2lvbkludGVyZmFjZU1hYzo6ZW5zdXJl
Q29udHJvbHNNYW5hZ2VyKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21h
Yy9XZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VNYWMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL21hYy9XZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VNYWMuaAppbmRleCA3NzA1ZTQ4OWIy
MzUwOWU5OGFiYzQ5ZmFkMjJhY2Y5MGU4YTE2Zjk0Li5kYjE4YzBkYTAxMTZkYmI1N2QwOTk3ZTY2
YTcwOGFhNWU3MWFlYzQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMv
V2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlTWFjLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbWFjL1dlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZU1hYy5oCkBAIC0zMCw3ICszMCw5
IEBACiAKICNpbmNsdWRlICJIVE1MTWVkaWFFbGVtZW50RW51bXMuaCIKICNpbmNsdWRlICJXZWJQ
bGF5YmFja1Nlc3Npb25JbnRlcmZhY2VNYWMuaCIKKyNpbmNsdWRlICJXZWJQbGF5YmFja1Nlc3Np
b25Nb2RlbC5oIgogI2luY2x1ZGUgIldlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZS5oIgorI2lu
Y2x1ZGUgIldlYlZpZGVvRnVsbHNjcmVlbk1vZGVsLmgiCiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50
ZWQuaD4KICNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RG
U3RyaW5nLmg+CkBAIC00MCwxMyArNDIsMTQgQEAgT0JKQ19DTEFTUyBXZWJWaWRlb0Z1bGxzY3Jl
ZW5JbnRlcmZhY2VNYWNPYmpDOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBJbnRSZWN0
OworY2xhc3MgRmxvYXRTaXplOwogY2xhc3MgV2ViUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlTWFj
OwogY2xhc3MgV2ViVmlkZW9GdWxsc2NyZWVuQ2hhbmdlT2JzZXJ2ZXI7Ci1jbGFzcyBXZWJWaWRl
b0Z1bGxzY3JlZW5Nb2RlbDsKIAogY2xhc3MgV0VCQ09SRV9FWFBPUlQgV2ViVmlkZW9GdWxsc2Ny
ZWVuSW50ZXJmYWNlTWFjCiAgICAgOiBwdWJsaWMgV2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNl
Ci0gICAgLCBwcml2YXRlIFdlYlBsYXliYWNrU2Vzc2lvbkludGVyZmFjZU1hY0NsaWVudAorICAg
ICwgcHVibGljIFdlYlZpZGVvRnVsbHNjcmVlbk1vZGVsQ2xpZW50CisgICAgLCBwcml2YXRlIFdl
YlBsYXliYWNrU2Vzc2lvbk1vZGVsQ2xpZW50CiAgICAgLCBwdWJsaWMgUmVmQ291bnRlZDxXZWJW
aWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VNYWM+IHsKIAogcHVibGljOgpAQCAtNjEsMTggKzY0LDEz
IEBAIHB1YmxpYzoKICAgICBXZWJWaWRlb0Z1bGxzY3JlZW5DaGFuZ2VPYnNlcnZlciogd2ViVmlk
ZW9GdWxsc2NyZWVuQ2hhbmdlT2JzZXJ2ZXIoKSBjb25zdCB7IHJldHVybiBtX2Z1bGxzY3JlZW5D
aGFuZ2VPYnNlcnZlcjsgfQogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0V2ViVmlkZW9GdWxs
c2NyZWVuQ2hhbmdlT2JzZXJ2ZXIoV2ViVmlkZW9GdWxsc2NyZWVuQ2hhbmdlT2JzZXJ2ZXIqKTsK
IAotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgcmVzZXRNZWRpYVN0YXRlKCkgb3ZlcnJpZGUgeyB9
Ci0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXREdXJhdGlvbihkb3VibGUpIG92ZXJyaWRlOwot
ICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0Q3VycmVudFRpbWUoZG91YmxlIC8qY3VycmVudFRp
bWUqLywgZG91YmxlIC8qYW5jaG9yVGltZSovKSBvdmVycmlkZTsKLSAgICBXRUJDT1JFX0VYUE9S
VCB2b2lkIHNldEJ1ZmZlcmVkVGltZShkb3VibGUpIG92ZXJyaWRlIHsgfQotICAgIFdFQkNPUkVf
RVhQT1JUIHZvaWQgc2V0UmF0ZShib29sIC8qaXNQbGF5aW5nKi8sIGZsb2F0IC8qcGxheWJhY2tS
YXRlKi8pIG92ZXJyaWRlOwotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0VmlkZW9EaW1lbnNp
b25zKGJvb2wgaGFzVmlkZW8sIGZsb2F0IHdpZHRoLCBmbG9hdCBoZWlnaHQpIGZpbmFsOwotICAg
IFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0U2Vla2FibGVSYW5nZXMoY29uc3QgVGltZVJhbmdlcyYp
IG92ZXJyaWRlOwotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0Q2FuUGxheUZhc3RSZXZlcnNl
KGJvb2wpIG92ZXJyaWRlIHsgfQotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0QXVkaW9NZWRp
YVNlbGVjdGlvbk9wdGlvbnMoY29uc3QgVmVjdG9yPFN0cmluZz4mIC8qb3B0aW9ucyovLCB1aW50
NjRfdCAvKnNlbGVjdGVkSW5kZXgqLykgb3ZlcnJpZGU7Ci0gICAgV0VCQ09SRV9FWFBPUlQgdm9p
ZCBzZXRMZWdpYmxlTWVkaWFTZWxlY3Rpb25PcHRpb25zKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiAv
Km9wdGlvbnMqLywgdWludDY0X3QgLypzZWxlY3RlZEluZGV4Ki8pIG92ZXJyaWRlOwotICAgIFdF
QkNPUkVfRVhQT1JUIHZvaWQgc2V0RXh0ZXJuYWxQbGF5YmFjayhib29sIGVuYWJsZWQsIEV4dGVy
bmFsUGxheWJhY2tUYXJnZXRUeXBlLCBTdHJpbmcgbG9jYWxpemVkRGV2aWNlTmFtZSkgb3ZlcnJp
ZGU7Ci0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRXaXJlbGVzc1ZpZGVvUGxheWJhY2tEaXNh
YmxlZChib29sKSBvdmVycmlkZSB7IH0KKyAgICAvLyBXZWJQbGF5YmFja1Nlc3Npb25Nb2RlbENs
aWVudAorICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgcmF0ZUNoYW5nZWQoYm9vbCBpc1BsYXlpbmcs
IGZsb2F0IHBsYXliYWNrUmF0ZSkgb3ZlcnJpZGU7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBl
eHRlcm5hbFBsYXliYWNrQ2hhbmdlZChib29sICBlbmFibGVkLCBXZWJQbGF5YmFja1Nlc3Npb25N
b2RlbDo6RXh0ZXJuYWxQbGF5YmFja1RhcmdldFR5cGUsIGNvbnN0IFN0cmluZyYgbG9jYWxpemVk
RGV2aWNlTmFtZSkgb3ZlcnJpZGU7CisKKyAgICAvLyBXZWJWaWRlb0Z1bGxzY3JlZW5Nb2RlbENs
aWVudAorICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgaGFzVmlkZW9DaGFuZ2VkKGJvb2wpIGZpbmFs
OworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgdmlkZW9EaW1lbnNpb25zQ2hhbmdlZChjb25zdCBG
bG9hdFNpemUmKSBmaW5hbDsKIAogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0dXBGdWxsc2Ny
ZWVuKE5TVmlldyYgbGF5ZXJIb3N0ZWRWaWV3LCBjb25zdCBJbnRSZWN0JiBpbml0aWFsUmVjdCwg
TlNXaW5kb3cgKnBhcmVudFdpbmRvdywgSFRNTE1lZGlhRWxlbWVudEVudW1zOjpWaWRlb0Z1bGxz
Y3JlZW5Nb2RlLCBib29sIGFsbG93c1BpY3R1cmVJblBpY3R1cmVQbGF5YmFjayk7CiAgICAgV0VC
Q09SRV9FWFBPUlQgdm9pZCBlbnRlckZ1bGxzY3JlZW4oKTsKQEAgLTk1LDggKzkzLDYgQEAgcHVi
bGljOgogICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgbWF5QXV0b21hdGljYWxseVNob3dWaWRlb1Bp
Y3R1cmVJblBpY3R1cmUoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogICAgIHZvaWQgYXBwbGlj
YXRpb25EaWRCZWNvbWVBY3RpdmUoKSB7IH0KIAotICAgIHZvaWQgcmF0ZUNoYW5nZWQoYm9vbCBp
c1BsYXlpbmcsIGZsb2F0IHBsYXliYWNrUmF0ZSkgb3ZlcnJpZGU7Ci0KICAgICBXRUJDT1JFX0VY
UE9SVCBXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VNYWNPYmpDICp2aWRlb0Z1bGxzY3JlZW5J
bnRlcmZhY2VPYmpDKCk7CiAKIHByaXZhdGU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tYWMvV2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlTWFjLm1tIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbWFjL1dlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZU1hYy5tbQppbmRl
eCA4NjI0Y2U5NTc1NjViNTFjNzA3ZjZlZjhiM2EyMTIxNjliMTE3MjZiLi5mNzEzMTcwMTY1MmE5
MTYwYmE4ODRiN2YxM2IyY2RkNThmNTEyNWViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tYWMvV2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlTWFjLm1tCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9XZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VNYWMubW0K
QEAgLTM1MSwxOCArMzUxLDI1IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIFdlYlZpZGVvRnVsbHNj
cmVlbkludGVyZmFjZU1hYzo6V2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlTWFjKFdlYlBsYXli
YWNrU2Vzc2lvbkludGVyZmFjZU1hYyYgcGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlKQogICAgIDog
bV9wbGF5YmFja1Nlc3Npb25JbnRlcmZhY2UocGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlKQogewot
ICAgIG1fcGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlLT5zZXRDbGllbnQodGhpcyk7CisgICAgQVNT
RVJUKG1fcGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlLT53ZWJQbGF5YmFja1Nlc3Npb25Nb2RlbCgp
KTsKKyAgICBtX3BsYXliYWNrU2Vzc2lvbkludGVyZmFjZS0+d2ViUGxheWJhY2tTZXNzaW9uTW9k
ZWwoKS0+YWRkQ2xpZW50KCp0aGlzKTsKIH0KIAogV2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNl
TWFjOjp+V2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlTWFjKCkKIHsKLSAgICBpZiAobV9wbGF5
YmFja1Nlc3Npb25JbnRlcmZhY2UtPmNsaWVudCgpID09IHRoaXMpCi0gICAgICAgIG1fcGxheWJh
Y2tTZXNzaW9uSW50ZXJmYWNlLT5zZXRDbGllbnQobnVsbHB0cik7CisgICAgaWYgKG1fcGxheWJh
Y2tTZXNzaW9uSW50ZXJmYWNlLT53ZWJQbGF5YmFja1Nlc3Npb25Nb2RlbCgpKQorICAgICAgICBt
X3BsYXliYWNrU2Vzc2lvbkludGVyZmFjZS0+d2ViUGxheWJhY2tTZXNzaW9uTW9kZWwoKS0+cmVt
b3ZlQ2xpZW50KCp0aGlzKTsKKyAgICBpZiAobV92aWRlb0Z1bGxzY3JlZW5Nb2RlbCkKKyAgICAg
ICAgbV92aWRlb0Z1bGxzY3JlZW5Nb2RlbC0+cmVtb3ZlQ2xpZW50KCp0aGlzKTsKIH0KIAogdm9p
ZCBXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VNYWM6OnNldFdlYlZpZGVvRnVsbHNjcmVlbk1v
ZGVsKFdlYlZpZGVvRnVsbHNjcmVlbk1vZGVsKiBtb2RlbCkKIHsKKyAgICBpZiAobV92aWRlb0Z1
bGxzY3JlZW5Nb2RlbCkKKyAgICAgICAgbV92aWRlb0Z1bGxzY3JlZW5Nb2RlbC0+cmVtb3ZlQ2xp
ZW50KCp0aGlzKTsKICAgICBtX3ZpZGVvRnVsbHNjcmVlbk1vZGVsID0gbW9kZWw7CisgICAgaWYg
KG1fdmlkZW9GdWxsc2NyZWVuTW9kZWwpCisgICAgICAgIG1fdmlkZW9GdWxsc2NyZWVuTW9kZWwt
PmFkZENsaWVudCgqdGhpcyk7CiB9CiAKIHZvaWQgV2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNl
TWFjOjpzZXRXZWJWaWRlb0Z1bGxzY3JlZW5DaGFuZ2VPYnNlcnZlcihXZWJWaWRlb0Z1bGxzY3Jl
ZW5DaGFuZ2VPYnNlcnZlciogb2JzZXJ2ZXIpCkBAIC0zOTIsNDEgKzM5OSwxMSBAQCB2b2lkIFdl
YlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZU1hYzo6Y2xlYXJNb2RlKEhUTUxNZWRpYUVsZW1lbnRF
bnVtczo6VmlkZW9GdWxscwogICAgICAgICBtX3ZpZGVvRnVsbHNjcmVlbk1vZGVsLT5mdWxsc2Ny
ZWVuTW9kZUNoYW5nZWQobV9tb2RlKTsKIH0KIAotdm9pZCBXZWJWaWRlb0Z1bGxzY3JlZW5JbnRl
cmZhY2VNYWM6OnNldER1cmF0aW9uKGRvdWJsZSBkdXJhdGlvbikKLXsKLSAgICBtX3BsYXliYWNr
U2Vzc2lvbkludGVyZmFjZS0+c2V0RHVyYXRpb24oZHVyYXRpb24pOwotfQotCi12b2lkIFdlYlZp
ZGVvRnVsbHNjcmVlbkludGVyZmFjZU1hYzo6c2V0Q3VycmVudFRpbWUoZG91YmxlIGN1cnJlbnRU
aW1lLCBkb3VibGUgYW5jaG9yVGltZSkKLXsKLSAgICBtX3BsYXliYWNrU2Vzc2lvbkludGVyZmFj
ZS0+c2V0Q3VycmVudFRpbWUoY3VycmVudFRpbWUsIGFuY2hvclRpbWUpOwotfQotCi12b2lkIFdl
YlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZU1hYzo6c2V0UmF0ZShib29sIGlzUGxheWluZywgZmxv
YXQgcGxheWJhY2tSYXRlKQotewotICAgIG1fcGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlLT5zZXRS
YXRlKGlzUGxheWluZywgcGxheWJhY2tSYXRlKTsKLX0KLQogdm9pZCBXZWJWaWRlb0Z1bGxzY3Jl
ZW5JbnRlcmZhY2VNYWM6OnJhdGVDaGFuZ2VkKGJvb2wgaXNQbGF5aW5nLCBmbG9hdCBwbGF5YmFj
a1JhdGUpCiB7CiAgICAgW3ZpZGVvRnVsbHNjcmVlbkludGVyZmFjZU9iakMoKSB1cGRhdGVJc1Bs
YXlpbmc6aXNQbGF5aW5nIG5ld1BsYXliYWNrUmF0ZTpwbGF5YmFja1JhdGVdOwogfQogCi12b2lk
IFdlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZU1hYzo6c2V0U2Vla2FibGVSYW5nZXMoY29uc3Qg
VGltZVJhbmdlcyYgdGltZVJhbmdlcykKLXsKLSAgICBtX3BsYXliYWNrU2Vzc2lvbkludGVyZmFj
ZS0+c2V0U2Vla2FibGVSYW5nZXModGltZVJhbmdlcyk7Ci19Ci0KLXZvaWQgV2ViVmlkZW9GdWxs
c2NyZWVuSW50ZXJmYWNlTWFjOjpzZXRBdWRpb01lZGlhU2VsZWN0aW9uT3B0aW9ucyhjb25zdCBW
ZWN0b3I8V1RGOjpTdHJpbmc+JiBvcHRpb25zLCB1aW50NjRfdCBzZWxlY3RlZEluZGV4KQotewot
ICAgIG1fcGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlLT5zZXRBdWRpb01lZGlhU2VsZWN0aW9uT3B0
aW9ucyhvcHRpb25zLCBzZWxlY3RlZEluZGV4KTsKLX0KLQotdm9pZCBXZWJWaWRlb0Z1bGxzY3Jl
ZW5JbnRlcmZhY2VNYWM6OnNldExlZ2libGVNZWRpYVNlbGVjdGlvbk9wdGlvbnMoY29uc3QgVmVj
dG9yPFdURjo6U3RyaW5nPiYgb3B0aW9ucywgdWludDY0X3Qgc2VsZWN0ZWRJbmRleCkKLXsKLSAg
ICBtX3BsYXliYWNrU2Vzc2lvbkludGVyZmFjZS0+c2V0TGVnaWJsZU1lZGlhU2VsZWN0aW9uT3B0
aW9ucyhvcHRpb25zLCBzZWxlY3RlZEluZGV4KTsKLX0KLQogdm9pZCBXZWJWaWRlb0Z1bGxzY3Jl
ZW5JbnRlcmZhY2VNYWM6OmVuc3VyZUNvbnRyb2xzTWFuYWdlcigpCiB7CiAgICAgbV9wbGF5YmFj
a1Nlc3Npb25JbnRlcmZhY2UtPmVuc3VyZUNvbnRyb2xzTWFuYWdlcigpOwpAQCAtNTQ1LDI2ICs1
MjIsMjkgQEAgdm9pZCBXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VNYWM6OnByZXBhcmVkVG9S
ZXR1cm5Ub0lubGluZShib29sIHZpc2libGUsIGNvbnMKICAgICBbbV93ZWJWaWRlb0Z1bGxzY3Jl
ZW5JbnRlcmZhY2VPYmpDIGV4aXRQSVBBbmltYXRpbmdUb1JlY3Q6KE5TUmVjdClpbmxpbmVSZWN0
IGluV2luZG93OnBhcmVudFdpbmRvd107CiB9CiAKLXZvaWQgV2ViVmlkZW9GdWxsc2NyZWVuSW50
ZXJmYWNlTWFjOjpzZXRFeHRlcm5hbFBsYXliYWNrKGJvb2wgZW5hYmxlZCwgRXh0ZXJuYWxQbGF5
YmFja1RhcmdldFR5cGUsIFN0cmluZykKK3ZvaWQgV2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNl
TWFjOjpleHRlcm5hbFBsYXliYWNrQ2hhbmdlZChib29sIGVuYWJsZWQsIFdlYlBsYXliYWNrU2Vz
c2lvbk1vZGVsOjpFeHRlcm5hbFBsYXliYWNrVGFyZ2V0VHlwZSwgY29uc3QgU3RyaW5nJikKIHsK
LSAgICBMT0coRnVsbHNjcmVlbiwgIldlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZU1hYzo6c2V0
RXh0ZXJuYWxQbGF5YmFjayglcCksIGVuYWJsZWQ6JXMiLCB0aGlzLCBib29sU3RyaW5nKGVuYWJs
ZWQpKTsKKyAgICBMT0coRnVsbHNjcmVlbiwgIldlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZU1h
Yzo6ZXh0ZXJuYWxQbGF5YmFja0NoYW5nZWQoJXApLCBlbmFibGVkOiVzIiwgdGhpcywgYm9vbFN0
cmluZyhlbmFibGVkKSk7CiAKICAgICBpZiAoZW5hYmxlZCAmJiBtX21vZGUgPT0gSFRNTE1lZGlh
RWxlbWVudEVudW1zOjpWaWRlb0Z1bGxzY3JlZW5Nb2RlUGljdHVyZUluUGljdHVyZSkKICAgICAg
ICAgZXhpdEZ1bGxzY3JlZW4oSW50UmVjdCgpLCBuaWwpOwogfQogCi12b2lkIFdlYlZpZGVvRnVs
bHNjcmVlbkludGVyZmFjZU1hYzo6c2V0VmlkZW9EaW1lbnNpb25zKGJvb2wgaGFzVmlkZW8sIGZs
b2F0IHdpZHRoLCBmbG9hdCBoZWlnaHQpCit2b2lkIFdlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFj
ZU1hYzo6aGFzVmlkZW9DaGFuZ2VkKGJvb2wgaGFzVmlkZW8pCiB7Ci0gICAgTE9HKEZ1bGxzY3Jl
ZW4sICJXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VNYWM6OnNldFZpZGVvRGltZW5zaW9ucygl
cCksIGhhc1ZpZGVvOiVzLCB3aWR0aDolLjBmLCBoZWlnaHQ6JS4wZiIsIHRoaXMsIGJvb2xTdHJp
bmcoaGFzVmlkZW8pLCB3aWR0aCwgaGVpZ2h0KTsKKyAgICBMT0coRnVsbHNjcmVlbiwgIldlYlZp
ZGVvRnVsbHNjcmVlbkludGVyZmFjZU1hYzo6aGFzVmlkZW9DaGFuZ2VkKCVwKTolcyIsIHRoaXMs
IGJvb2xTdHJpbmcoaGFzVmlkZW8pKTsKIAotICAgIGlmICghaGFzVmlkZW8pIHsKKyAgICBpZiAo
IWhhc1ZpZGVvKQogICAgICAgICBleGl0RnVsbHNjcmVlbldpdGhvdXRBbmltYXRpb25Ub01vZGUo
SFRNTE1lZGlhRWxlbWVudEVudW1zOjpWaWRlb0Z1bGxzY3JlZW5Nb2RlTm9uZSk7Ci0gICAgICAg
IHJldHVybjsKLSAgICB9Cit9CisKK3ZvaWQgV2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlTWFj
Ojp2aWRlb0RpbWVuc2lvbnNDaGFuZ2VkKGNvbnN0IEZsb2F0U2l6ZSYgdmlkZW9EaW1lbnNpb25z
KQoreworICAgIExPRyhGdWxsc2NyZWVuLCAiV2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlTWFj
Ojp2aWRlb0RpbWVuc2lvbnNDaGFuZ2VkKCVwKSwgd2lkdGg6JS4wZiwgaGVpZ2h0OiUuMGYiLCB0
aGlzLCB2aWRlb0RpbWVuc2lvbnMud2lkdGgoKSwgdmlkZW9EaW1lbnNpb25zLmhlaWdodCgpKTsK
IAogICAgIC8vIFdpZHRoIGFuZCBoZWlnaHQgY2FuIGJlIHplcm8gd2hlbiB3ZSBhcmUgdHJhbnNp
dGlvbmluZyBmcm9tIG9uZSB2aWRlbyB0byBhbm90aGVyLiBJZ25vcmUgemVybyB2YWx1ZXMuCi0g
ICAgaWYgKHdpZHRoICYmIGhlaWdodCkKLSAgICAgICAgW21fd2ViVmlkZW9GdWxsc2NyZWVuSW50
ZXJmYWNlT2JqQyBzZXRWaWRlb0RpbWVuc2lvbnM6TlNNYWtlU2l6ZSh3aWR0aCwgaGVpZ2h0KV07
CisgICAgaWYgKCF2aWRlb0RpbWVuc2lvbnMuaXNaZXJvKCkpCisgICAgICAgIFttX3dlYlZpZGVv
RnVsbHNjcmVlbkludGVyZmFjZU9iakMgc2V0VmlkZW9EaW1lbnNpb25zOnZpZGVvRGltZW5zaW9u
c107CiB9CiAKIGJvb2wgV2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlTWFjOjppc1BsYXlpbmdW
aWRlb0luRW5oYW5jZWRGdWxsc2NyZWVuKCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvbWFjL1dlYlZpZXcvV2ViVmlldy5tbSBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2Vi
Vmlldy5tbQppbmRleCA5NjNiMGNmZDk4YmE3NTEyZTM5YzRkYzg3ZmE5N2RhZGI3MmU4N2NiLi45
ZTRlNzQ2NjcxNGRkZTZiYWRhMDYyYTU5YjgwNDFkMTFmYWM5OWVjIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXcubW0KKysrIGIvU291cmNlL1dlYktpdC9tYWMv
V2ViVmlldy9XZWJWaWV3Lm1tCkBAIC04NjMxLDEwICs4NjMxLDggQEAgLSAodm9pZClfc2V0VXBQ
bGF5YmFja0NvbnRyb2xzTWFuYWdlckZvck1lZGlhRWxlbWVudDooV2ViQ29yZTo6SFRNTE1lZGlh
RWxlbWVudCYKICAgICBfcHJpdmF0ZS0+cGxheWJhY2tTZXNzaW9uTW9kZWwtPnNldE1lZGlhRWxl
bWVudCgmbWVkaWFFbGVtZW50KTsKIAogICAgIGlmICghX3ByaXZhdGUtPnBsYXliYWNrU2Vzc2lv
bkludGVyZmFjZSkKLSAgICAgICAgX3ByaXZhdGUtPnBsYXliYWNrU2Vzc2lvbkludGVyZmFjZSA9
IFdlYlBsYXliYWNrU2Vzc2lvbkludGVyZmFjZU1hYzo6Y3JlYXRlKCk7CisgICAgICAgIF9wcml2
YXRlLT5wbGF5YmFja1Nlc3Npb25JbnRlcmZhY2UgPSBXZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZh
Y2VNYWM6OmNyZWF0ZSgqX3ByaXZhdGUtPnBsYXliYWNrU2Vzc2lvbk1vZGVsKTsKIAotICAgIF9w
cml2YXRlLT5wbGF5YmFja1Nlc3Npb25JbnRlcmZhY2UtPnNldFdlYlBsYXliYWNrU2Vzc2lvbk1v
ZGVsKF9wcml2YXRlLT5wbGF5YmFja1Nlc3Npb25Nb2RlbC5nZXQoKSk7Ci0gICAgX3ByaXZhdGUt
PnBsYXliYWNrU2Vzc2lvbk1vZGVsLT5zZXRXZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2UoX3By
aXZhdGUtPnBsYXliYWNrU2Vzc2lvbkludGVyZmFjZS5nZXQoKSk7CiAgICAgW3NlbGYgdXBkYXRl
V2ViVmlld0FkZGl0aW9uc107CiB9CiAKQEAgLTg2NDQsOCArODY0Miw3IEBAIC0gKHZvaWQpX2Ns
ZWFyUGxheWJhY2tDb250cm9sc01hbmFnZXIKICAgICAgICAgcmV0dXJuOwogCiAgICAgX3ByaXZh
dGUtPnBsYXliYWNrU2Vzc2lvbk1vZGVsLT5zZXRNZWRpYUVsZW1lbnQobnVsbHB0cik7Ci0gICAg
X3ByaXZhdGUtPnBsYXliYWNrU2Vzc2lvbk1vZGVsLT5zZXRXZWJQbGF5YmFja1Nlc3Npb25JbnRl
cmZhY2UobnVsbHB0cik7Ci0gICAgX3ByaXZhdGUtPnBsYXliYWNrU2Vzc2lvbkludGVyZmFjZS0+
c2V0V2ViUGxheWJhY2tTZXNzaW9uTW9kZWwobnVsbHB0cik7CisgICAgX3ByaXZhdGUtPnBsYXli
YWNrU2Vzc2lvbkludGVyZmFjZS0+aW52YWxpZGF0ZSgpOwogCiAgICAgX3ByaXZhdGUtPnBsYXli
YWNrU2Vzc2lvbk1vZGVsID0gbnVsbHB0cjsKICAgICBfcHJpdmF0ZS0+cGxheWJhY2tTZXNzaW9u
SW50ZXJmYWNlID0gbnVsbHB0cjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9D
b2NvYS9XS1dlYlZpZXcubW0KaW5kZXggYTIyOGExOWUxNWJmOTUwODJjOWM5NDNlZTBlMGRlZjBj
ZjA2NmQ5ZC4uNGE0ZDJkOTM0ZjJkZjJhMDgxYjlkZDM1NmU5NTcxYzUxYjNhNmYyYSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0KKysr
IGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0KQEAgLTU0
NCw4ICs1NDQsNiBAQCAtICh2b2lkKV9pbml0aWFsaXplV2l0aENvbmZpZ3VyYXRpb246KFdLV2Vi
Vmlld0NvbmZpZ3VyYXRpb24gKiljb25maWd1cmF0aW9uCiAgICAgICAgIF9wYWdlLT5zZXRBcHBs
aWNhdGlvbk5hbWVGb3JVc2VyQWdlbnQoYXBwbGljYXRpb25OYW1lRm9yVXNlckFnZW50KTsKIAog
ICAgIF9uYXZpZ2F0aW9uU3RhdGUgPSBzdGQ6Om1ha2VfdW5pcXVlPFdlYktpdDo6TmF2aWdhdGlv
blN0YXRlPihzZWxmKTsKLSAgICBfcGFnZS0+c2V0TmF2aWdhdGlvbkNsaWVudChfbmF2aWdhdGlv
blN0YXRlLT5jcmVhdGVOYXZpZ2F0aW9uQ2xpZW50KCkpOwotCiAgICAgX3VpRGVsZWdhdGUgPSBz
dGQ6Om1ha2VfdW5pcXVlPFdlYktpdDo6VUlEZWxlZ2F0ZT4oc2VsZik7CiAgICAgX3BhZ2UtPnNl
dEZpbmRDbGllbnQoc3RkOjptYWtlX3VuaXF1ZTxXZWJLaXQ6OkZpbmRDbGllbnQ+KHNlbGYpKTsK
ICAgICBfcGFnZS0+c2V0RGlhZ25vc3RpY0xvZ2dpbmdDbGllbnQoc3RkOjptYWtlX3VuaXF1ZTxX
ZWJLaXQ6OkRpYWdub3N0aWNMb2dnaW5nQ2xpZW50PihzZWxmKSk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29jb2EvV2ViUGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5
LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29jb2EvV2ViUGxheWJhY2tTZXNzaW9uTWFu
YWdlclByb3h5LmgKaW5kZXggZGZmODI2YTYzMzZjOWFiNGFhY2Q1MzI4MTVlYTY3MDE1N2U1ZGFi
YS4uNTBjYTJlZTY0ZmMyNDUwNDczY2VmODEyYWRiY2Q2OTdlNzZiZGYxYiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0NvY29hL1dlYlBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQ
cm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db2NvYS9XZWJQbGF5YmFja1Nl
c3Npb25NYW5hZ2VyUHJveHkuaApAQCAtMzMsNiArMzMsNyBAQAogI2luY2x1ZGUgPFdlYkNvcmUv
VGltZVJhbmdlcy5oPgogI2luY2x1ZGUgPFdlYkNvcmUvV2ViUGxheWJhY2tTZXNzaW9uTW9kZWwu
aD4KICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgorI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CiAj
aW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CiAKQEAg
LTYzLDE5ICs2NCwyMCBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGludmFsaWRhdGUoKSB7IG1fbWFu
YWdlciA9IG51bGxwdHI7IH0KIAotICAgIHZvaWQgc2V0RHVyYXRpb24oZG91YmxlIGR1cmF0aW9u
KSB7IG1fZHVyYXRpb24gPSBkdXJhdGlvbjsgfQotICAgIHZvaWQgc2V0Q3VycmVudFRpbWUoZG91
YmxlIGN1cnJlbnRUaW1lKSB7IG1fY3VycmVudFRpbWUgPSBjdXJyZW50VGltZTsgfQotICAgIHZv
aWQgc2V0QnVmZmVyZWRUaW1lKGRvdWJsZSBidWZmZXJlZFRpbWUpIHsgbV9idWZmZXJlZFRpbWUg
PSBidWZmZXJlZFRpbWU7IH0KLSAgICB2b2lkIHNldElzUGxheWluZyhib29sIGlzUGxheWluZykg
eyBtX2lzUGxheWluZyA9IGlzUGxheWluZzsgfQotICAgIHZvaWQgc2V0UGxheWJhY2tSYXRlKGZs
b2F0IHBsYXliYWNrUmF0ZSkgeyBtX3BsYXliYWNrUmF0ZSA9IHBsYXliYWNrUmF0ZTsgfQotICAg
IHZvaWQgc2V0U2Vla2FibGVSYW5nZXMoV2ViQ29yZTo6VGltZVJhbmdlcyYgc2Vla2FibGVSYW5n
ZXMpIHsgbV9zZWVrYWJsZVJhbmdlcyA9IHNlZWthYmxlUmFuZ2VzOyB9Ci0gICAgdm9pZCBzZXRD
YW5QbGF5RmFzdFJldmVyc2UoYm9vbCBjYW5QbGF5RmFzdFJldmVyc2UpIHsgbV9jYW5QbGF5RmFz
dFJldmVyc2UgPSBjYW5QbGF5RmFzdFJldmVyc2U7IH0KLSAgICB2b2lkIHNldEF1ZGlvTWVkaWFT
ZWxlY3Rpb25PcHRpb25zKGNvbnN0IFZlY3RvcjxXVEY6OlN0cmluZz4mIGF1ZGlvTWVkaWFTZWxl
Y3Rpb25PcHRpb25zKSB7IG1fYXVkaW9NZWRpYVNlbGVjdGlvbk9wdGlvbnMgPSBhdWRpb01lZGlh
U2VsZWN0aW9uT3B0aW9uczsgfQotICAgIHZvaWQgc2V0QXVkaW9NZWRpYVNlbGVjdGVkSW5kZXgo
dWludDY0X3QgYXVkaW9NZWRpYVNlbGVjdGVkSW5kZXgpIHsgbV9hdWRpb01lZGlhU2VsZWN0ZWRJ
bmRleCA9IGF1ZGlvTWVkaWFTZWxlY3RlZEluZGV4OyB9Ci0gICAgdm9pZCBzZXRMZWdpYmxlTWVk
aWFTZWxlY3Rpb25PcHRpb25zKGNvbnN0IFZlY3RvcjxXVEY6OlN0cmluZz4mIGxlZ2libGVNZWRp
YVNlbGVjdGlvbk9wdGlvbnMpIHsgbV9sZWdpYmxlTWVkaWFTZWxlY3Rpb25PcHRpb25zID0gbGVn
aWJsZU1lZGlhU2VsZWN0aW9uT3B0aW9uczsgfQotICAgIHZvaWQgc2V0TGVnaWJsZU1lZGlhU2Vs
ZWN0ZWRJbmRleCh1aW50NjRfdCBsZWdpYmxlTWVkaWFTZWxlY3RlZEluZGV4KSB7IG1fbGVnaWJs
ZU1lZGlhU2VsZWN0ZWRJbmRleCA9IGxlZ2libGVNZWRpYVNlbGVjdGVkSW5kZXg7IH0KLSAgICB2
b2lkIHNldEV4dGVybmFsUGxheWJhY2tFbmFibGVkKGJvb2wgZXh0ZXJuYWxQbGF5YmFja0VuYWJs
ZWQpIHsgbV9leHRlcm5hbFBsYXliYWNrRW5hYmxlZCA9IGV4dGVybmFsUGxheWJhY2tFbmFibGVk
OyB9Ci0gICAgdm9pZCBzZXRXaXJlbGVzc1ZpZGVvUGxheWJhY2tEaXNhYmxlZChib29sIHdpcmVs
ZXNzVmlkZW9QbGF5YmFja0Rpc2FibGVkKSB7IG1fd2lyZWxlc3NWaWRlb1BsYXliYWNrRGlzYWJs
ZWQgPSB3aXJlbGVzc1ZpZGVvUGxheWJhY2tEaXNhYmxlZDsgfQorICAgIC8vIFdlYlBsYXliYWNr
U2Vzc2lvbk1vZGVsCisgICAgdm9pZCBhZGRDbGllbnQoV2ViQ29yZTo6V2ViUGxheWJhY2tTZXNz
aW9uTW9kZWxDbGllbnQmKSBmaW5hbDsKKyAgICB2b2lkIHJlbW92ZUNsaWVudChXZWJDb3JlOjpX
ZWJQbGF5YmFja1Nlc3Npb25Nb2RlbENsaWVudCYpZmluYWw7CisKKyAgICB2b2lkIHNldER1cmF0
aW9uKGRvdWJsZSk7CisgICAgdm9pZCBzZXRDdXJyZW50VGltZShkb3VibGUpOworICAgIHZvaWQg
c2V0QnVmZmVyZWRUaW1lKGRvdWJsZSk7CisgICAgdm9pZCBzZXRSYXRlKGJvb2wgaXNQbGF5aW5n
LCBmbG9hdCBwbGF5YmFja1JhdGUpOworICAgIHZvaWQgc2V0U2Vla2FibGVSYW5nZXMoV2ViQ29y
ZTo6VGltZVJhbmdlcyYpOworICAgIHZvaWQgc2V0Q2FuUGxheUZhc3RSZXZlcnNlKGJvb2wpOwor
ICAgIHZvaWQgc2V0QXVkaW9NZWRpYVNlbGVjdGlvbk9wdGlvbnMoY29uc3QgVmVjdG9yPFdURjo6
U3RyaW5nPiYgb3B0aW9ucywgdWludDY0X3QgaW5kZXgpOworICAgIHZvaWQgc2V0TGVnaWJsZU1l
ZGlhU2VsZWN0aW9uT3B0aW9ucyhjb25zdCBWZWN0b3I8V1RGOjpTdHJpbmc+JiBvcHRpb25zLCB1
aW50NjRfdCBpbmRleCk7CisgICAgdm9pZCBzZXRFeHRlcm5hbFBsYXliYWNrKGJvb2wsIFdlYlBs
YXliYWNrU2Vzc2lvbk1vZGVsOjpFeHRlcm5hbFBsYXliYWNrVGFyZ2V0VHlwZSwgY29uc3QgU3Ry
aW5nJik7CisgICAgdm9pZCBzZXRXaXJlbGVzc1ZpZGVvUGxheWJhY2tEaXNhYmxlZChib29sKTsK
IAogcHJpdmF0ZToKICAgICBmcmllbmQgY2xhc3MgV2ViVmlkZW9GdWxsc2NyZWVuTW9kZWxDb250
ZXh0OwpAQCAtMTEyLDEwICsxMTQsMTMgQEAgcHJpdmF0ZToKICAgICBWZWN0b3I8V1RGOjpTdHJp
bmc+IGxlZ2libGVNZWRpYVNlbGVjdGlvbk9wdGlvbnMoKSBjb25zdCBmaW5hbCB7IHJldHVybiBt
X2xlZ2libGVNZWRpYVNlbGVjdGlvbk9wdGlvbnM7IH0KICAgICB1aW50NjRfdCBsZWdpYmxlTWVk
aWFTZWxlY3RlZEluZGV4KCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9sZWdpYmxlTWVkaWFTZWxl
Y3RlZEluZGV4OyB9CiAgICAgYm9vbCBleHRlcm5hbFBsYXliYWNrRW5hYmxlZCgpIGNvbnN0IGZp
bmFsIHsgcmV0dXJuIG1fZXh0ZXJuYWxQbGF5YmFja0VuYWJsZWQ7IH0KKyAgICBXZWJQbGF5YmFj
a1Nlc3Npb25Nb2RlbDo6RXh0ZXJuYWxQbGF5YmFja1RhcmdldFR5cGUgZXh0ZXJuYWxQbGF5YmFj
a1RhcmdldFR5cGUoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX2V4dGVybmFsUGxheWJhY2tUYXJn
ZXRUeXBlOyB9CisgICAgU3RyaW5nIGV4dGVybmFsUGxheWJhY2tMb2NhbGl6ZWREZXZpY2VOYW1l
KCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9leHRlcm5hbFBsYXliYWNrTG9jYWxpemVkRGV2aWNl
TmFtZTsgfQogICAgIGJvb2wgd2lyZWxlc3NWaWRlb1BsYXliYWNrRGlzYWJsZWQoKSBjb25zdCBm
aW5hbCB7IHJldHVybiBtX3dpcmVsZXNzVmlkZW9QbGF5YmFja0Rpc2FibGVkOyB9CiAKICAgICBX
ZWJQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHkqIG1fbWFuYWdlcjsKICAgICB1aW50NjRfdCBt
X2NvbnRleHRJZDsKKyAgICBIYXNoU2V0PFdlYkNvcmU6OldlYlBsYXliYWNrU2Vzc2lvbk1vZGVs
Q2xpZW50Kj4gbV9jbGllbnRzOwogICAgIGRvdWJsZSBtX2R1cmF0aW9uIHsgMCB9OwogICAgIGRv
dWJsZSBtX2N1cnJlbnRUaW1lIHsgMCB9OwogICAgIGRvdWJsZSBtX2J1ZmZlcmVkVGltZSB7IDAg
fTsKQEAgLTEyOCw2ICsxMzMsOCBAQCBwcml2YXRlOgogICAgIFZlY3RvcjxXVEY6OlN0cmluZz4g
bV9sZWdpYmxlTWVkaWFTZWxlY3Rpb25PcHRpb25zOwogICAgIHVpbnQ2NF90IG1fbGVnaWJsZU1l
ZGlhU2VsZWN0ZWRJbmRleCB7IDAgfTsKICAgICBib29sIG1fZXh0ZXJuYWxQbGF5YmFja0VuYWJs
ZWQgeyBmYWxzZSB9OworICAgIFdlYlBsYXliYWNrU2Vzc2lvbk1vZGVsOjpFeHRlcm5hbFBsYXli
YWNrVGFyZ2V0VHlwZSBtX2V4dGVybmFsUGxheWJhY2tUYXJnZXRUeXBlIHsgV2ViUGxheWJhY2tT
ZXNzaW9uTW9kZWw6OlRhcmdldFR5cGVOb25lIH07CisgICAgU3RyaW5nIG1fZXh0ZXJuYWxQbGF5
YmFja0xvY2FsaXplZERldmljZU5hbWU7CiAgICAgYm9vbCBtX3dpcmVsZXNzVmlkZW9QbGF5YmFj
a0Rpc2FibGVkIHsgZmFsc2UgfTsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9Db2NvYS9XZWJQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHkubW0gYi9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQ29jb2EvV2ViUGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5Lm1t
CmluZGV4IDhjMWZhMGMzMGM5ZjFiNTE0YTBmNTg0NmI1MDJhMDBiNzcyMDg0MzIuLjVjYzk4ZTM2
YzAyODJjOGE1NDdiN2VjMTU3Mjc3NGI4YzQwMTkwZmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9Db2NvYS9XZWJQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHkubW0KKysr
IGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0NvY29hL1dlYlBsYXliYWNrU2Vzc2lvbk1hbmFn
ZXJQcm94eS5tbQpAQCAtNDAsNiArNDAsMTggQEAgbmFtZXNwYWNlIFdlYktpdCB7CiAKICNwcmFn
bWEgbWFyayAtIFdlYlBsYXliYWNrU2Vzc2lvbk1vZGVsQ29udGV4dAogCit2b2lkIFdlYlBsYXli
YWNrU2Vzc2lvbk1vZGVsQ29udGV4dDo6YWRkQ2xpZW50KFdlYlBsYXliYWNrU2Vzc2lvbk1vZGVs
Q2xpZW50JiBjbGllbnQpCit7CisgICAgQVNTRVJUKCFtX2NsaWVudHMuY29udGFpbnMoJmNsaWVu
dCkpOworICAgIG1fY2xpZW50cy5hZGQoJmNsaWVudCk7Cit9CisKK3ZvaWQgV2ViUGxheWJhY2tT
ZXNzaW9uTW9kZWxDb250ZXh0OjpyZW1vdmVDbGllbnQoV2ViUGxheWJhY2tTZXNzaW9uTW9kZWxD
bGllbnQmIGNsaWVudCkKK3sKKyAgICBBU1NFUlQobV9jbGllbnRzLmNvbnRhaW5zKCZjbGllbnQp
KTsKKyAgICBtX2NsaWVudHMucmVtb3ZlKCZjbGllbnQpOworfQorCiB2b2lkIFdlYlBsYXliYWNr
U2Vzc2lvbk1vZGVsQ29udGV4dDo6cGxheSgpCiB7CiAgICAgaWYgKG1fbWFuYWdlcikKQEAgLTEx
Miw2ICsxMjQsODUgQEAgdm9pZCBXZWJQbGF5YmFja1Nlc3Npb25Nb2RlbENvbnRleHQ6OnNlbGVj
dExlZ2libGVNZWRpYU9wdGlvbih1aW50NjRfdCBvcHRpb25JZCkKICAgICAgICAgbV9tYW5hZ2Vy
LT5zZWxlY3RMZWdpYmxlTWVkaWFPcHRpb24obV9jb250ZXh0SWQsIG9wdGlvbklkKTsKIH0KIAor
dm9pZCBXZWJQbGF5YmFja1Nlc3Npb25Nb2RlbENvbnRleHQ6OnNldER1cmF0aW9uKGRvdWJsZSBk
dXJhdGlvbikKK3sKKyAgICBtX2R1cmF0aW9uID0gZHVyYXRpb247CisgICAgZm9yIChhdXRvKiBj
bGllbnQgOiBtX2NsaWVudHMpCisgICAgICAgIGNsaWVudC0+ZHVyYXRpb25DaGFuZ2VkKGR1cmF0
aW9uKTsKK30KKwordm9pZCBXZWJQbGF5YmFja1Nlc3Npb25Nb2RlbENvbnRleHQ6OnNldEN1cnJl
bnRUaW1lKGRvdWJsZSBjdXJyZW50VGltZSkKK3sKKyAgICBtX2N1cnJlbnRUaW1lID0gY3VycmVu
dFRpbWU7CisgICAgYXV0byBhbmNob3JUaW1lID0gW1tOU1Byb2Nlc3NJbmZvIHByb2Nlc3NJbmZv
XSBzeXN0ZW1VcHRpbWVdOworCisgICAgZm9yIChhdXRvKiBjbGllbnQgOiBtX2NsaWVudHMpCisg
ICAgICAgIGNsaWVudC0+Y3VycmVudFRpbWVDaGFuZ2VkKGN1cnJlbnRUaW1lLCBhbmNob3JUaW1l
KTsKK30KKwordm9pZCBXZWJQbGF5YmFja1Nlc3Npb25Nb2RlbENvbnRleHQ6OnNldEJ1ZmZlcmVk
VGltZShkb3VibGUgYnVmZmVyZWRUaW1lKQoreworICAgIG1fYnVmZmVyZWRUaW1lID0gYnVmZmVy
ZWRUaW1lOworICAgIGZvciAoYXV0byogY2xpZW50IDogbV9jbGllbnRzKQorICAgICAgICBjbGll
bnQtPmJ1ZmZlcmVkVGltZUNoYW5nZWQoYnVmZmVyZWRUaW1lKTsKK30KKwordm9pZCBXZWJQbGF5
YmFja1Nlc3Npb25Nb2RlbENvbnRleHQ6OnNldFJhdGUoYm9vbCBpc1BsYXlpbmcsIGZsb2F0IHBs
YXliYWNrUmF0ZSkKK3sKKyAgICBtX2lzUGxheWluZyA9IGlzUGxheWluZzsKKyAgICBtX3BsYXli
YWNrUmF0ZSA9IHBsYXliYWNrUmF0ZTsKKyAgICBmb3IgKGF1dG8qIGNsaWVudCA6IG1fY2xpZW50
cykKKyAgICAgICAgY2xpZW50LT5yYXRlQ2hhbmdlZChpc1BsYXlpbmcsIHBsYXliYWNrUmF0ZSk7
Cit9CisKK3ZvaWQgV2ViUGxheWJhY2tTZXNzaW9uTW9kZWxDb250ZXh0OjpzZXRTZWVrYWJsZVJh
bmdlcyhXZWJDb3JlOjpUaW1lUmFuZ2VzJiBzZWVrYWJsZVJhbmdlcykKK3sKKyAgICBtX3NlZWth
YmxlUmFuZ2VzID0gc2Vla2FibGVSYW5nZXM7CisgICAgZm9yIChhdXRvKiBjbGllbnQgOiBtX2Ns
aWVudHMpCisgICAgICAgIGNsaWVudC0+c2Vla2FibGVSYW5nZXNDaGFuZ2VkKHNlZWthYmxlUmFu
Z2VzKTsKK30KKwordm9pZCBXZWJQbGF5YmFja1Nlc3Npb25Nb2RlbENvbnRleHQ6OnNldENhblBs
YXlGYXN0UmV2ZXJzZShib29sIGNhblBsYXlGYXN0UmV2ZXJzZSkKK3sKKyAgICBtX2NhblBsYXlG
YXN0UmV2ZXJzZSA9IGNhblBsYXlGYXN0UmV2ZXJzZTsKKyAgICBmb3IgKGF1dG8qIGNsaWVudCA6
IG1fY2xpZW50cykKKyAgICAgICAgY2xpZW50LT5jYW5QbGF5RmFzdFJldmVyc2VDaGFuZ2VkKGNh
blBsYXlGYXN0UmV2ZXJzZSk7Cit9CisKK3ZvaWQgV2ViUGxheWJhY2tTZXNzaW9uTW9kZWxDb250
ZXh0OjpzZXRBdWRpb01lZGlhU2VsZWN0aW9uT3B0aW9ucyhjb25zdCBWZWN0b3I8V1RGOjpTdHJp
bmc+JiBhdWRpb01lZGlhU2VsZWN0aW9uT3B0aW9ucywgdWludDY0X3QgYXVkaW9NZWRpYVNlbGVj
dGVkSW5kZXgpCit7CisgICAgbV9hdWRpb01lZGlhU2VsZWN0aW9uT3B0aW9ucyA9IGF1ZGlvTWVk
aWFTZWxlY3Rpb25PcHRpb25zOworICAgIG1fYXVkaW9NZWRpYVNlbGVjdGVkSW5kZXggPSBhdWRp
b01lZGlhU2VsZWN0ZWRJbmRleDsKKyAgICBmb3IgKGF1dG8qIGNsaWVudCA6IG1fY2xpZW50cykK
KyAgICAgICAgY2xpZW50LT5hdWRpb01lZGlhU2VsZWN0aW9uT3B0aW9uc0NoYW5nZWQoYXVkaW9N
ZWRpYVNlbGVjdGlvbk9wdGlvbnMsIGF1ZGlvTWVkaWFTZWxlY3RlZEluZGV4KTsKK30KKwordm9p
ZCBXZWJQbGF5YmFja1Nlc3Npb25Nb2RlbENvbnRleHQ6OnNldExlZ2libGVNZWRpYVNlbGVjdGlv
bk9wdGlvbnMoY29uc3QgVmVjdG9yPFdURjo6U3RyaW5nPiYgbGVnaWJsZU1lZGlhU2VsZWN0aW9u
T3B0aW9ucywgdWludDY0X3QgbGVnaWJsZU1lZGlhU2VsZWN0ZWRJbmRleCkKK3sKKyAgICBtX2xl
Z2libGVNZWRpYVNlbGVjdGlvbk9wdGlvbnMgPSBsZWdpYmxlTWVkaWFTZWxlY3Rpb25PcHRpb25z
OworICAgIG1fbGVnaWJsZU1lZGlhU2VsZWN0ZWRJbmRleCA9IGxlZ2libGVNZWRpYVNlbGVjdGVk
SW5kZXg7CisKKyAgICBmb3IgKGF1dG8qIGNsaWVudCA6IG1fY2xpZW50cykKKyAgICAgICAgY2xp
ZW50LT5sZWdpYmxlTWVkaWFTZWxlY3Rpb25PcHRpb25zQ2hhbmdlZChsZWdpYmxlTWVkaWFTZWxl
Y3Rpb25PcHRpb25zLCBsZWdpYmxlTWVkaWFTZWxlY3RlZEluZGV4KTsKK30KKwordm9pZCBXZWJQ
bGF5YmFja1Nlc3Npb25Nb2RlbENvbnRleHQ6OnNldEV4dGVybmFsUGxheWJhY2soYm9vbCBlbmFi
bGVkLCBXZWJQbGF5YmFja1Nlc3Npb25Nb2RlbDo6RXh0ZXJuYWxQbGF5YmFja1RhcmdldFR5cGUg
dHlwZSwgY29uc3QgU3RyaW5nJiBsb2NhbGl6ZWROYW1lKQoreworICAgIG1fZXh0ZXJuYWxQbGF5
YmFja0VuYWJsZWQgPSBlbmFibGVkOworICAgIG1fZXh0ZXJuYWxQbGF5YmFja1RhcmdldFR5cGUg
PSB0eXBlOworICAgIG1fZXh0ZXJuYWxQbGF5YmFja0xvY2FsaXplZERldmljZU5hbWUgPSBsb2Nh
bGl6ZWROYW1lOworCisgICAgZm9yIChhdXRvKiBjbGllbnQgOiBtX2NsaWVudHMpCisgICAgICAg
IGNsaWVudC0+ZXh0ZXJuYWxQbGF5YmFja0NoYW5nZWQoZW5hYmxlZCwgdHlwZSwgbG9jYWxpemVk
TmFtZSk7Cit9CisKK3ZvaWQgV2ViUGxheWJhY2tTZXNzaW9uTW9kZWxDb250ZXh0OjpzZXRXaXJl
bGVzc1ZpZGVvUGxheWJhY2tEaXNhYmxlZChib29sIHdpcmVsZXNzVmlkZW9QbGF5YmFja0Rpc2Fi
bGVkKQoreworICAgIG1fd2lyZWxlc3NWaWRlb1BsYXliYWNrRGlzYWJsZWQgPSB3aXJlbGVzc1Zp
ZGVvUGxheWJhY2tEaXNhYmxlZDsKKyAgICBmb3IgKGF1dG8qIGNsaWVudCA6IG1fY2xpZW50cykK
KyAgICAgICAgY2xpZW50LT53aXJlbGVzc1ZpZGVvUGxheWJhY2tEaXNhYmxlZENoYW5nZWQod2ly
ZWxlc3NWaWRlb1BsYXliYWNrRGlzYWJsZWQpOworfQorCiAjcHJhZ21hIG1hcmsgLSBXZWJQbGF5
YmFja1Nlc3Npb25NYW5hZ2VyUHJveHkKIAogUmVmUHRyPFdlYlBsYXliYWNrU2Vzc2lvbk1hbmFn
ZXJQcm94eT4gV2ViUGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5OjpjcmVhdGUoV2ViUGFnZVBy
b3h5JiBwYWdlKQpAQCAtMTUyLDkgKzI0Myw3IEBAIHZvaWQgV2ViUGxheWJhY2tTZXNzaW9uTWFu
YWdlclByb3h5OjppbnZhbGlkYXRlKCkKIFdlYlBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eTo6
TW9kZWxJbnRlcmZhY2VUdXBsZSBXZWJQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHk6OmNyZWF0
ZU1vZGVsQW5kSW50ZXJmYWNlKHVpbnQ2NF90IGNvbnRleHRJZCkKIHsKICAgICBSZWY8V2ViUGxh
eWJhY2tTZXNzaW9uTW9kZWxDb250ZXh0PiBtb2RlbCA9IFdlYlBsYXliYWNrU2Vzc2lvbk1vZGVs
Q29udGV4dDo6Y3JlYXRlKCp0aGlzLCBjb250ZXh0SWQpOwotICAgIFJlZjxQbGF0Zm9ybVdlYlBs
YXliYWNrU2Vzc2lvbkludGVyZmFjZT4gaW50ZXJmYWNlID0gUGxhdGZvcm1XZWJQbGF5YmFja1Nl
c3Npb25JbnRlcmZhY2U6OmNyZWF0ZSgpOwotCi0gICAgaW50ZXJmYWNlLT5zZXRXZWJQbGF5YmFj
a1Nlc3Npb25Nb2RlbCgmbW9kZWwuZ2V0KCkpOworICAgIFJlZjxQbGF0Zm9ybVdlYlBsYXliYWNr
U2Vzc2lvbkludGVyZmFjZT4gaW50ZXJmYWNlID0gUGxhdGZvcm1XZWJQbGF5YmFja1Nlc3Npb25J
bnRlcmZhY2U6OmNyZWF0ZShtb2RlbCk7CiAKICAgICByZXR1cm4gc3RkOjptYWtlX3R1cGxlKFdU
Rk1vdmUobW9kZWwpLCBXVEZNb3ZlKGludGVyZmFjZSkpOwogfQpAQCAtMTk0LDYgKzI4MywxMSBA
QCB2b2lkIFdlYlBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eTo6cmVtb3ZlQ2xpZW50Rm9yQ29u
dGV4dCh1aW50NjRfdCBjb250ZXh0SWQpCiAKICAgICBpZiAoY2xpZW50Q291bnQgPD0gMCkgewog
ICAgICAgICBtX2NsaWVudENvdW50cy5yZW1vdmUoY29udGV4dElkKTsKKworICAgICAgICBSZWZQ
dHI8V2ViUGxheWJhY2tTZXNzaW9uTW9kZWxDb250ZXh0PiBtb2RlbDsKKyAgICAgICAgUmVmUHRy
PFBsYXRmb3JtV2ViUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlPiBpbnRlcmZhY2U7CisgICAgICAg
IHN0ZDo6dGllKG1vZGVsLCBpbnRlcmZhY2UpID0gZW5zdXJlTW9kZWxBbmRJbnRlcmZhY2UoY29u
dGV4dElkKTsKKyAgICAgICAgaW50ZXJmYWNlLT5pbnZhbGlkYXRlKCk7CiAgICAgICAgIG1fY29u
dGV4dE1hcC5yZW1vdmUoY29udGV4dElkKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAgLTI0
MSwyMCArMzM1LDEyIEBAIHZvaWQgV2ViUGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5OjpyZXNl
dE1lZGlhU3RhdGUodWludDY0X3QgY29udGV4dElkKQogCiB2b2lkIFdlYlBsYXliYWNrU2Vzc2lv
bk1hbmFnZXJQcm94eTo6c2V0Q3VycmVudFRpbWUodWludDY0X3QgY29udGV4dElkLCBkb3VibGUg
Y3VycmVudFRpbWUsIGRvdWJsZSBob3N0VGltZSkKIHsKLSAgICBSZWZQdHI8V2ViUGxheWJhY2tT
ZXNzaW9uTW9kZWxDb250ZXh0PiBtb2RlbDsKLSAgICBSZWZQdHI8UGxhdGZvcm1XZWJQbGF5YmFj
a1Nlc3Npb25JbnRlcmZhY2U+IGludGVyZmFjZTsKLSAgICBzdGQ6OnRpZShtb2RlbCwgaW50ZXJm
YWNlKSA9IGVuc3VyZU1vZGVsQW5kSW50ZXJmYWNlKGNvbnRleHRJZCk7Ci0gICAgbW9kZWwtPnNl
dEN1cnJlbnRUaW1lKGN1cnJlbnRUaW1lKTsKLSAgICBpbnRlcmZhY2UtPnNldEN1cnJlbnRUaW1l
KGN1cnJlbnRUaW1lLCBob3N0VGltZSk7CisgICAgZW5zdXJlTW9kZWwoY29udGV4dElkKS5zZXRD
dXJyZW50VGltZShjdXJyZW50VGltZSk7CiB9CiAKIHZvaWQgV2ViUGxheWJhY2tTZXNzaW9uTWFu
YWdlclByb3h5OjpzZXRCdWZmZXJlZFRpbWUodWludDY0X3QgY29udGV4dElkLCBkb3VibGUgYnVm
ZmVyZWRUaW1lKQogewotICAgIFJlZlB0cjxXZWJQbGF5YmFja1Nlc3Npb25Nb2RlbENvbnRleHQ+
IG1vZGVsOwotICAgIFJlZlB0cjxQbGF0Zm9ybVdlYlBsYXliYWNrU2Vzc2lvbkludGVyZmFjZT4g
aW50ZXJmYWNlOwotICAgIHN0ZDo6dGllKG1vZGVsLCBpbnRlcmZhY2UpID0gZW5zdXJlTW9kZWxB
bmRJbnRlcmZhY2UoY29udGV4dElkKTsKLSAgICBtb2RlbC0+c2V0QnVmZmVyZWRUaW1lKGJ1ZmZl
cmVkVGltZSk7Ci0gICAgaW50ZXJmYWNlLT5zZXRCdWZmZXJlZFRpbWUoYnVmZmVyZWRUaW1lKTsK
KyAgICBlbnN1cmVNb2RlbChjb250ZXh0SWQpLnNldEJ1ZmZlcmVkVGltZShidWZmZXJlZFRpbWUp
OwogfQogCiB2b2lkIFdlYlBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eTo6c2V0U2Vla2FibGVS
YW5nZXNWZWN0b3IodWludDY0X3QgY29udGV4dElkLCBWZWN0b3I8c3RkOjpwYWlyPGRvdWJsZSwg
ZG91YmxlPj4gcmFuZ2VzKQpAQCAtMjY3LDgwICszNTMsNDUgQEAgdm9pZCBXZWJQbGF5YmFja1Nl
c3Npb25NYW5hZ2VyUHJveHk6OnNldFNlZWthYmxlUmFuZ2VzVmVjdG9yKHVpbnQ2NF90IGNvbnRl
eHRJZCwKICAgICAgICAgdGltZVJhbmdlcy0+YWRkKHJhbmdlLmZpcnN0LCByYW5nZS5zZWNvbmQp
OwogICAgIH0KIAotICAgIFJlZlB0cjxXZWJQbGF5YmFja1Nlc3Npb25Nb2RlbENvbnRleHQ+IG1v
ZGVsOwotICAgIFJlZlB0cjxQbGF0Zm9ybVdlYlBsYXliYWNrU2Vzc2lvbkludGVyZmFjZT4gaW50
ZXJmYWNlOwotICAgIHN0ZDo6dGllKG1vZGVsLCBpbnRlcmZhY2UpID0gZW5zdXJlTW9kZWxBbmRJ
bnRlcmZhY2UoY29udGV4dElkKTsKLSAgICBtb2RlbC0+c2V0U2Vla2FibGVSYW5nZXModGltZVJh
bmdlcyk7Ci0gICAgaW50ZXJmYWNlLT5zZXRTZWVrYWJsZVJhbmdlcyh0aW1lUmFuZ2VzKTsKKyAg
ICBlbnN1cmVNb2RlbChjb250ZXh0SWQpLnNldFNlZWthYmxlUmFuZ2VzKHRpbWVSYW5nZXMpOwog
fQogCiB2b2lkIFdlYlBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eTo6c2V0Q2FuUGxheUZhc3RS
ZXZlcnNlKHVpbnQ2NF90IGNvbnRleHRJZCwgYm9vbCB2YWx1ZSkKIHsKLSAgICBSZWZQdHI8V2Vi
UGxheWJhY2tTZXNzaW9uTW9kZWxDb250ZXh0PiBtb2RlbDsKLSAgICBSZWZQdHI8UGxhdGZvcm1X
ZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2U+IGludGVyZmFjZTsKLSAgICBzdGQ6OnRpZShtb2Rl
bCwgaW50ZXJmYWNlKSA9IGVuc3VyZU1vZGVsQW5kSW50ZXJmYWNlKGNvbnRleHRJZCk7Ci0gICAg
bW9kZWwtPnNldENhblBsYXlGYXN0UmV2ZXJzZSh2YWx1ZSk7Ci0gICAgaW50ZXJmYWNlLT5zZXRD
YW5QbGF5RmFzdFJldmVyc2UodmFsdWUpOworICAgIGVuc3VyZU1vZGVsKGNvbnRleHRJZCkuc2V0
Q2FuUGxheUZhc3RSZXZlcnNlKHZhbHVlKTsKIH0KIAogdm9pZCBXZWJQbGF5YmFja1Nlc3Npb25N
YW5hZ2VyUHJveHk6OnNldEF1ZGlvTWVkaWFTZWxlY3Rpb25PcHRpb25zKHVpbnQ2NF90IGNvbnRl
eHRJZCwgVmVjdG9yPFN0cmluZz4gb3B0aW9ucywgdWludDY0X3Qgc2VsZWN0ZWRJbmRleCkKIHsK
LSAgICBSZWZQdHI8V2ViUGxheWJhY2tTZXNzaW9uTW9kZWxDb250ZXh0PiBtb2RlbDsKLSAgICBS
ZWZQdHI8UGxhdGZvcm1XZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2U+IGludGVyZmFjZTsKLSAg
ICBzdGQ6OnRpZShtb2RlbCwgaW50ZXJmYWNlKSA9IGVuc3VyZU1vZGVsQW5kSW50ZXJmYWNlKGNv
bnRleHRJZCk7Ci0gICAgbW9kZWwtPnNldEF1ZGlvTWVkaWFTZWxlY3Rpb25PcHRpb25zKG9wdGlv
bnMpOwotICAgIG1vZGVsLT5zZXRBdWRpb01lZGlhU2VsZWN0ZWRJbmRleChzZWxlY3RlZEluZGV4
KTsKLSAgICBpbnRlcmZhY2UtPnNldEF1ZGlvTWVkaWFTZWxlY3Rpb25PcHRpb25zKG9wdGlvbnMs
IHNlbGVjdGVkSW5kZXgpOworICAgIGVuc3VyZU1vZGVsKGNvbnRleHRJZCkuc2V0QXVkaW9NZWRp
YVNlbGVjdGlvbk9wdGlvbnMob3B0aW9ucywgc2VsZWN0ZWRJbmRleCk7CiB9CiAKIHZvaWQgV2Vi
UGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5OjpzZXRMZWdpYmxlTWVkaWFTZWxlY3Rpb25PcHRp
b25zKHVpbnQ2NF90IGNvbnRleHRJZCwgVmVjdG9yPFN0cmluZz4gb3B0aW9ucywgdWludDY0X3Qg
c2VsZWN0ZWRJbmRleCkKIHsKLSAgICBSZWZQdHI8V2ViUGxheWJhY2tTZXNzaW9uTW9kZWxDb250
ZXh0PiBtb2RlbDsKLSAgICBSZWZQdHI8UGxhdGZvcm1XZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZh
Y2U+IGludGVyZmFjZTsKLSAgICBzdGQ6OnRpZShtb2RlbCwgaW50ZXJmYWNlKSA9IGVuc3VyZU1v
ZGVsQW5kSW50ZXJmYWNlKGNvbnRleHRJZCk7Ci0gICAgbW9kZWwtPnNldExlZ2libGVNZWRpYVNl
bGVjdGlvbk9wdGlvbnMob3B0aW9ucyk7Ci0gICAgbW9kZWwtPnNldExlZ2libGVNZWRpYVNlbGVj
dGVkSW5kZXgoc2VsZWN0ZWRJbmRleCk7Ci0gICAgaW50ZXJmYWNlLT5zZXRMZWdpYmxlTWVkaWFT
ZWxlY3Rpb25PcHRpb25zKG9wdGlvbnMsIHNlbGVjdGVkSW5kZXgpOworICAgIGVuc3VyZU1vZGVs
KGNvbnRleHRJZCkuc2V0TGVnaWJsZU1lZGlhU2VsZWN0aW9uT3B0aW9ucyhvcHRpb25zLCBzZWxl
Y3RlZEluZGV4KTsKIH0KIAogdm9pZCBXZWJQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHk6OnNl
dEV4dGVybmFsUGxheWJhY2tQcm9wZXJ0aWVzKHVpbnQ2NF90IGNvbnRleHRJZCwgYm9vbCBlbmFi
bGVkLCB1aW50MzJfdCB0YXJnZXRUeXBlLCBTdHJpbmcgbG9jYWxpemVkRGV2aWNlTmFtZSkKIHsK
LSAgICBXZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2U6OkV4dGVybmFsUGxheWJhY2tUYXJnZXRU
eXBlIHR5cGUgPSBzdGF0aWNfY2FzdDxXZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2U6OkV4dGVy
bmFsUGxheWJhY2tUYXJnZXRUeXBlPih0YXJnZXRUeXBlKTsKLSAgICBBU1NFUlQodHlwZSA9PSBX
ZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2U6OlRhcmdldFR5cGVBaXJQbGF5IHx8IHR5cGUgPT0g
V2ViUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlOjpUYXJnZXRUeXBlVFZPdXQgfHwgdHlwZSA9PSBX
ZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2U6OlRhcmdldFR5cGVOb25lKTsKKyAgICBXZWJQbGF5
YmFja1Nlc3Npb25Nb2RlbDo6RXh0ZXJuYWxQbGF5YmFja1RhcmdldFR5cGUgdHlwZSA9IHN0YXRp
Y19jYXN0PFdlYlBsYXliYWNrU2Vzc2lvbk1vZGVsOjpFeHRlcm5hbFBsYXliYWNrVGFyZ2V0VHlw
ZT4odGFyZ2V0VHlwZSk7CisgICAgQVNTRVJUKHR5cGUgPT0gV2ViUGxheWJhY2tTZXNzaW9uTW9k
ZWw6OlRhcmdldFR5cGVBaXJQbGF5IHx8IHR5cGUgPT0gV2ViUGxheWJhY2tTZXNzaW9uTW9kZWw6
OlRhcmdldFR5cGVUVk91dCB8fCB0eXBlID09IFdlYlBsYXliYWNrU2Vzc2lvbk1vZGVsOjpUYXJn
ZXRUeXBlTm9uZSk7CiAKLSAgICBSZWZQdHI8V2ViUGxheWJhY2tTZXNzaW9uTW9kZWxDb250ZXh0
PiBtb2RlbDsKLSAgICBSZWZQdHI8UGxhdGZvcm1XZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2U+
IGludGVyZmFjZTsKLSAgICBzdGQ6OnRpZShtb2RlbCwgaW50ZXJmYWNlKSA9IGVuc3VyZU1vZGVs
QW5kSW50ZXJmYWNlKGNvbnRleHRJZCk7Ci0gICAgbW9kZWwtPnNldEV4dGVybmFsUGxheWJhY2tF
bmFibGVkKGVuYWJsZWQpOwotICAgIGludGVyZmFjZS0+c2V0RXh0ZXJuYWxQbGF5YmFjayhlbmFi
bGVkLCB0eXBlLCBsb2NhbGl6ZWREZXZpY2VOYW1lKTsKKyAgICBlbnN1cmVNb2RlbChjb250ZXh0
SWQpLnNldEV4dGVybmFsUGxheWJhY2soZW5hYmxlZCwgdHlwZSwgbG9jYWxpemVkRGV2aWNlTmFt
ZSk7CiB9CiAKIHZvaWQgV2ViUGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5OjpzZXRXaXJlbGVz
c1ZpZGVvUGxheWJhY2tEaXNhYmxlZCh1aW50NjRfdCBjb250ZXh0SWQsIGJvb2wgZGlzYWJsZWQp
CiB7Ci0gICAgUmVmUHRyPFdlYlBsYXliYWNrU2Vzc2lvbk1vZGVsQ29udGV4dD4gbW9kZWw7Ci0g
ICAgUmVmUHRyPFBsYXRmb3JtV2ViUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlPiBpbnRlcmZhY2U7
Ci0gICAgc3RkOjp0aWUobW9kZWwsIGludGVyZmFjZSkgPSBlbnN1cmVNb2RlbEFuZEludGVyZmFj
ZShjb250ZXh0SWQpOwotICAgIG1vZGVsLT5zZXRXaXJlbGVzc1ZpZGVvUGxheWJhY2tEaXNhYmxl
ZChkaXNhYmxlZCk7Ci0gICAgaW50ZXJmYWNlLT5zZXRXaXJlbGVzc1ZpZGVvUGxheWJhY2tEaXNh
YmxlZChkaXNhYmxlZCk7CisgICAgZW5zdXJlTW9kZWwoY29udGV4dElkKS5zZXRXaXJlbGVzc1Zp
ZGVvUGxheWJhY2tEaXNhYmxlZChkaXNhYmxlZCk7CiB9CiAKIHZvaWQgV2ViUGxheWJhY2tTZXNz
aW9uTWFuYWdlclByb3h5OjpzZXREdXJhdGlvbih1aW50NjRfdCBjb250ZXh0SWQsIGRvdWJsZSBk
dXJhdGlvbikKIHsKLSAgICBSZWZQdHI8V2ViUGxheWJhY2tTZXNzaW9uTW9kZWxDb250ZXh0PiBt
b2RlbDsKLSAgICBSZWZQdHI8UGxhdGZvcm1XZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2U+IGlu
dGVyZmFjZTsKLSAgICBzdGQ6OnRpZShtb2RlbCwgaW50ZXJmYWNlKSA9IGVuc3VyZU1vZGVsQW5k
SW50ZXJmYWNlKGNvbnRleHRJZCk7Ci0gICAgbW9kZWwtPnNldER1cmF0aW9uKGR1cmF0aW9uKTsK
LSAgICBpbnRlcmZhY2UtPnNldER1cmF0aW9uKGR1cmF0aW9uKTsKKyAgICBlbnN1cmVNb2RlbChj
b250ZXh0SWQpLnNldER1cmF0aW9uKGR1cmF0aW9uKTsKIH0KIAogdm9pZCBXZWJQbGF5YmFja1Nl
c3Npb25NYW5hZ2VyUHJveHk6OnNldFJhdGUodWludDY0X3QgY29udGV4dElkLCBib29sIGlzUGxh
eWluZywgZG91YmxlIHJhdGUpCiB7Ci0gICAgUmVmUHRyPFdlYlBsYXliYWNrU2Vzc2lvbk1vZGVs
Q29udGV4dD4gbW9kZWw7Ci0gICAgUmVmUHRyPFBsYXRmb3JtV2ViUGxheWJhY2tTZXNzaW9uSW50
ZXJmYWNlPiBpbnRlcmZhY2U7Ci0gICAgc3RkOjp0aWUobW9kZWwsIGludGVyZmFjZSkgPSBlbnN1
cmVNb2RlbEFuZEludGVyZmFjZShjb250ZXh0SWQpOwotICAgIG1vZGVsLT5zZXRJc1BsYXlpbmco
aXNQbGF5aW5nKTsKLSAgICBtb2RlbC0+c2V0UGxheWJhY2tSYXRlKHJhdGUpOwotICAgIGludGVy
ZmFjZS0+c2V0UmF0ZShpc1BsYXlpbmcsIHJhdGUpOworICAgIGVuc3VyZU1vZGVsKGNvbnRleHRJ
ZCkuc2V0UmF0ZShpc1BsYXlpbmcsIHJhdGUpOwogfQogCiAjcHJhZ21hIG1hcmsgTWVzc2FnZXMg
dG8gV2ViUGxheWJhY2tTZXNzaW9uTWFuYWdlcgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0NvY29hL1dlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eS5oIGIvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0NvY29hL1dlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eS5o
CmluZGV4IDgyMWUyNTkyNDliODMzYWZhMjMwODMwOTgxZDcxYmI0ZjNmODVjZDMuLmY1YzAyZTdk
ZDE5OTQxMWNlZDIwODczYzIwODVjN2UxMzY0NzBhNjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9Db2NvYS9XZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHkuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29jb2EvV2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdl
clByb3h5LmgKQEAgLTM0LDYgKzM0LDcgQEAKICNpbmNsdWRlIDxXZWJDb3JlL1dlYlZpZGVvRnVs
bHNjcmVlbkNoYW5nZU9ic2VydmVyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9XZWJWaWRlb0Z1bGxz
Y3JlZW5Nb2RlbC5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CisjaW5jbHVkZSA8d3RmL0hh
c2hTZXQuaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgogI2luY2x1ZGUgPHd0Zi9SZWZQ
dHIuaD4KIApAQCAtNTYsNyArNTcsMTAgQEAgY2xhc3MgV2ViUGxheWJhY2tTZXNzaW9uTWFuYWdl
clByb3h5OwogY2xhc3MgV2ViUGxheWJhY2tTZXNzaW9uTW9kZWxDb250ZXh0OwogY2xhc3MgV2Vi
VmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5OwogCi1jbGFzcyBXZWJWaWRlb0Z1bGxzY3JlZW5N
b2RlbENvbnRleHQgZmluYWw6IHB1YmxpYyBSZWZDb3VudGVkPFdlYlZpZGVvRnVsbHNjcmVlbk1v
ZGVsQ29udGV4dD4sIHB1YmxpYyBXZWJDb3JlOjpXZWJWaWRlb0Z1bGxzY3JlZW5Nb2RlbCwgcHVi
bGljIFdlYkNvcmU6OldlYlZpZGVvRnVsbHNjcmVlbkNoYW5nZU9ic2VydmVyICB7CitjbGFzcyBX
ZWJWaWRlb0Z1bGxzY3JlZW5Nb2RlbENvbnRleHQgZmluYWwKKyAgICA6IHB1YmxpYyBSZWZDb3Vu
dGVkPFdlYlZpZGVvRnVsbHNjcmVlbk1vZGVsQ29udGV4dD4KKyAgICAsIHB1YmxpYyBXZWJDb3Jl
OjpXZWJWaWRlb0Z1bGxzY3JlZW5Nb2RlbAorICAgICwgcHVibGljIFdlYkNvcmU6OldlYlZpZGVv
RnVsbHNjcmVlbkNoYW5nZU9ic2VydmVyICB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFJlZjxXZWJW
aWRlb0Z1bGxzY3JlZW5Nb2RlbENvbnRleHQ+IGNyZWF0ZShXZWJWaWRlb0Z1bGxzY3JlZW5NYW5h
Z2VyUHJveHkmIG1hbmFnZXIsIFdlYlBsYXliYWNrU2Vzc2lvbk1vZGVsQ29udGV4dCYgcGxheWJh
Y2tTZXNzaW9uTW9kZWwsIHVpbnQ2NF90IGNvbnRleHRJZCkKICAgICB7CkBAIC03MywxMSArNzcs
MTUgQEAgcHJpdmF0ZToKICAgICBXZWJWaWRlb0Z1bGxzY3JlZW5Nb2RlbENvbnRleHQoV2ViVmlk
ZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5JiwgV2ViUGxheWJhY2tTZXNzaW9uTW9kZWxDb250ZXh0
JiwgdWludDY0X3QpOwogCiAgICAgLy8gV2ViVmlkZW9GdWxsc2NyZWVuTW9kZWwKKyAgICB2b2lk
IGFkZENsaWVudChXZWJDb3JlOjpXZWJWaWRlb0Z1bGxzY3JlZW5Nb2RlbENsaWVudCYpIG92ZXJy
aWRlOworICAgIHZvaWQgcmVtb3ZlQ2xpZW50KFdlYkNvcmU6OldlYlZpZGVvRnVsbHNjcmVlbk1v
ZGVsQ2xpZW50Jikgb3ZlcnJpZGU7CiAgICAgdm9pZCByZXF1ZXN0RnVsbHNjcmVlbk1vZGUoV2Vi
Q29yZTo6SFRNTE1lZGlhRWxlbWVudEVudW1zOjpWaWRlb0Z1bGxzY3JlZW5Nb2RlKSBvdmVycmlk
ZTsKICAgICB2b2lkIHNldFZpZGVvTGF5ZXJGcmFtZShXZWJDb3JlOjpGbG9hdFJlY3QpIG92ZXJy
aWRlOwogICAgIHZvaWQgc2V0VmlkZW9MYXllckdyYXZpdHkoVmlkZW9HcmF2aXR5KSBvdmVycmlk
ZTsKICAgICB2b2lkIGZ1bGxzY3JlZW5Nb2RlQ2hhbmdlZChXZWJDb3JlOjpIVE1MTWVkaWFFbGVt
ZW50RW51bXM6OlZpZGVvRnVsbHNjcmVlbk1vZGUpIG92ZXJyaWRlOwogICAgIGJvb2wgaXNWaXNp
YmxlKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgYm9vbCBoYXNWaWRlbygpIGNvbnN0IG92ZXJyaWRl
IHsgcmV0dXJuIG1faGFzVmlkZW87IH0KKyAgICBXZWJDb3JlOjpGbG9hdFNpemUgdmlkZW9EaW1l
bnNpb25zKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV92aWRlb0RpbWVuc2lvbnM7IH0KIAog
ICAgIC8vIFdlYlZpZGVvRnVsbHNjcmVlbkNoYW5nZU9ic2VydmVyCiAgICAgdm9pZCBkaWRTZXR1
cEZ1bGxzY3JlZW4oKSBvdmVycmlkZTsKQEAgLTkwLDYgKzk4LDkgQEAgcHJpdmF0ZToKICAgICBS
ZWY8V2ViUGxheWJhY2tTZXNzaW9uTW9kZWxDb250ZXh0PiBtX3BsYXliYWNrU2Vzc2lvbk1vZGVs
OwogICAgIHVpbnQ2NF90IG1fY29udGV4dElkOwogICAgIFJldGFpblB0cjxQbGF0Zm9ybVZpZXcg
Kj4gbV9sYXllckhvc3RWaWV3OworICAgIEhhc2hTZXQ8V2ViQ29yZTo6V2ViVmlkZW9GdWxsc2Ny
ZWVuTW9kZWxDbGllbnQqPiBtX2NsaWVudHM7CisgICAgV2ViQ29yZTo6RmxvYXRTaXplIG1fdmlk
ZW9EaW1lbnNpb25zOworICAgIGJvb2wgbV9oYXNWaWRlbyB7IGZhbHNlIH07CiB9OwogCiBjbGFz
cyBXZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHkgOiBwdWJsaWMgUmVmQ291bnRlZDxXZWJW
aWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHk+LCBwcml2YXRlIElQQzo6TWVzc2FnZVJlY2VpdmVy
IHsKQEAgLTEyNSw3ICsxMzYsOCBAQCBwcml2YXRlOgogCiAgICAgLy8gTWVzc2FnZXMgZnJvbSBX
ZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyCiAgICAgdm9pZCBzZXR1cEZ1bGxzY3JlZW5XaXRoSUQo
dWludDY0X3QgY29udGV4dElkLCB1aW50MzJfdCB2aWRlb0xheWVySUQsIGNvbnN0IFdlYkNvcmU6
OkludFJlY3QmIGluaXRpYWxSZWN0LCBmbG9hdCBob3N0aW5nU2NhbGVGYWN0b3IsIFdlYkNvcmU6
OkhUTUxNZWRpYUVsZW1lbnRFbnVtczo6VmlkZW9GdWxsc2NyZWVuTW9kZSwgYm9vbCBhbGxvd3NQ
aWN0dXJlSW5QaWN0dXJlKTsKLSAgICB2b2lkIHNldFZpZGVvRGltZW5zaW9ucyh1aW50NjRfdCBj
b250ZXh0SWQsIGJvb2wgaGFzVmlkZW8sIHVuc2lnbmVkIHdpZHRoLCB1bnNpZ25lZCBoZWlnaHQp
OworICAgIHZvaWQgc2V0SGFzVmlkZW8odWludDY0X3QgY29udGV4dElkLCBib29sKTsKKyAgICB2
b2lkIHNldFZpZGVvRGltZW5zaW9ucyh1aW50NjRfdCBjb250ZXh0SWQsIGNvbnN0IFdlYkNvcmU6
OkZsb2F0U2l6ZSYpOwogICAgIHZvaWQgZW50ZXJGdWxsc2NyZWVuKHVpbnQ2NF90IGNvbnRleHRJ
ZCk7CiAgICAgdm9pZCBleGl0RnVsbHNjcmVlbih1aW50NjRfdCBjb250ZXh0SWQsIFdlYkNvcmU6
OkludFJlY3QgZmluYWxSZWN0KTsKICAgICB2b2lkIGNsZWFudXBGdWxsc2NyZWVuKHVpbnQ2NF90
IGNvbnRleHRJZCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29jb2Ev
V2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5Lm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0NvY29hL1dlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eS5tZXNzYWdl
cy5pbgppbmRleCBlNDk2NjgwYjUyOTM5MzI3NTdlZDdkNWZiZDJhNjY1YzYyOTMzMGVmLi5mMjgx
NWQ2NzIzOGU5ZDNhZmZjZjAxZjRmNGRiZDQwNTI0MDg0NGNmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQ29jb2EvV2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5Lm1l
c3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db2NvYS9XZWJWaWRlb0Z1
bGxzY3JlZW5NYW5hZ2VyUHJveHkubWVzc2FnZXMuaW4KQEAgLTIyLDcgKzIyLDggQEAKIAogI2lm
IChQTEFURk9STShJT1MpICYmIEhBVkUoQVZLSVQpKSB8fCAoUExBVEZPUk0oTUFDKSAmJiBFTkFC
TEUoVklERU9fUFJFU0VOVEFUSU9OX01PREUpKQogbWVzc2FnZXMgLT4gV2ViVmlkZW9GdWxsc2Ny
ZWVuTWFuYWdlclByb3h5IHsKLSAgICBTZXRWaWRlb0RpbWVuc2lvbnModWludDY0X3QgY29udGV4
dElkLCBib29sIGhhc1ZpZGVvLCB1bnNpZ25lZCB3aWR0aCwgdW5zaWduZWQgaGVpZ2h0KQorICAg
IFNldEhhc1ZpZGVvKHVpbnQ2NF90IGNvbnRleHRJZCwgYm9vbCBoYXNWaWRlbykKKyAgICBTZXRW
aWRlb0RpbWVuc2lvbnModWludDY0X3QgY29udGV4dElkLCBXZWJDb3JlOjpGbG9hdFNpemUgdmlk
ZW9EaW1lbnNpb25zKQogICAgIFNldHVwRnVsbHNjcmVlbldpdGhJRCh1aW50NjRfdCBjb250ZXh0
SWQsIHVpbnQzMl90IHZpZGVvTGF5ZXJJRCwgV2ViQ29yZTo6SW50UmVjdCBpbml0aWFsUmVjdCwg
ZmxvYXQgaG9zdGluZ1NjYWxlRmFjdG9yLCBXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50RW51bXM6
OlZpZGVvRnVsbHNjcmVlbk1vZGUgdmlkZW9GdWxsc2NyZWVuTW9kZSwgYm9vbCBhbGxvd3NQaWN0
dXJlSW5QaWN0dXJlKQogICAgIEVudGVyRnVsbHNjcmVlbih1aW50NjRfdCBjb250ZXh0SWQpCiAg
ICAgRXhpdEZ1bGxzY3JlZW4odWludDY0X3QgY29udGV4dElkLCBXZWJDb3JlOjpJbnRSZWN0IGZp
bmFsUmVjdCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db2NvYS9XZWJW
aWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHkubW0gYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
Q29jb2EvV2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5Lm1tCmluZGV4IGM0Mjg2YmZlYmU5
N2Y5YzZhOTMwNjU0OTA2NjQ1ZDBjYzliODZhYzkuLjAxMmM3OWU5OTE0YTk0ZGJmMDgzZTEwOTg1
NmE0MjU0NWMyNmM5YjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db2Nv
YS9XZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHkubW0KKysrIGIvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0NvY29hL1dlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eS5tbQpAQCAtMTI0
LDYgKzEyNCwxOCBAQCBXZWJWaWRlb0Z1bGxzY3JlZW5Nb2RlbENvbnRleHQ6On5XZWJWaWRlb0Z1
bGxzY3JlZW5Nb2RlbENvbnRleHQoKQogewogfQogCit2b2lkIFdlYlZpZGVvRnVsbHNjcmVlbk1v
ZGVsQ29udGV4dDo6YWRkQ2xpZW50KFdlYlZpZGVvRnVsbHNjcmVlbk1vZGVsQ2xpZW50JiBjbGll
bnQpCit7CisgICAgQVNTRVJUKCFtX2NsaWVudHMuY29udGFpbnMoJmNsaWVudCkpOworICAgIG1f
Y2xpZW50cy5hZGQoJmNsaWVudCk7Cit9CisKK3ZvaWQgV2ViVmlkZW9GdWxsc2NyZWVuTW9kZWxD
b250ZXh0OjpyZW1vdmVDbGllbnQoV2ViVmlkZW9GdWxsc2NyZWVuTW9kZWxDbGllbnQmIGNsaWVu
dCkKK3sKKyAgICBBU1NFUlQobV9jbGllbnRzLmNvbnRhaW5zKCZjbGllbnQpKTsKKyAgICBtX2Ns
aWVudHMucmVtb3ZlKCZjbGllbnQpOworfQorCiB2b2lkIFdlYlZpZGVvRnVsbHNjcmVlbk1vZGVs
Q29udGV4dDo6cmVxdWVzdEZ1bGxzY3JlZW5Nb2RlKEhUTUxNZWRpYUVsZW1lbnRFbnVtczo6Vmlk
ZW9GdWxsc2NyZWVuTW9kZSBtb2RlKQogewogICAgIGlmIChtX21hbmFnZXIpCkBAIC0zNTgsOSAr
MzcwLDE0IEBAIHZvaWQgV2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5OjpzZXR1cEZ1bGxz
Y3JlZW5XaXRoSUQodWludDY0X3QgY29udGV4dElkLCB1CiAjZW5kaWYKIH0KIAotdm9pZCBXZWJW
aWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHk6OnNldFZpZGVvRGltZW5zaW9ucyh1aW50NjRfdCBj
b250ZXh0SWQsIGJvb2wgaGFzVmlkZW8sIHVuc2lnbmVkIHdpZHRoLCB1bnNpZ25lZCBoZWlnaHQp
Cit2b2lkIFdlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eTo6c2V0SGFzVmlkZW8odWludDY0
X3QgY29udGV4dElkLCBib29sIGhhc1ZpZGVvKQoreworICAgIGVuc3VyZUludGVyZmFjZShjb250
ZXh0SWQpLmhhc1ZpZGVvQ2hhbmdlZChoYXNWaWRlbyk7Cit9CisKK3ZvaWQgV2ViVmlkZW9GdWxs
c2NyZWVuTWFuYWdlclByb3h5OjpzZXRWaWRlb0RpbWVuc2lvbnModWludDY0X3QgY29udGV4dElk
LCBjb25zdCBGbG9hdFNpemUmIHZpZGVvRGltZW5zaW9ucykKIHsKLSAgICBlbnN1cmVJbnRlcmZh
Y2UoY29udGV4dElkKS5zZXRWaWRlb0RpbWVuc2lvbnMoaGFzVmlkZW8sIHdpZHRoLCBoZWlnaHQp
OworICAgIGVuc3VyZUludGVyZmFjZShjb250ZXh0SWQpLnZpZGVvRGltZW5zaW9uc0NoYW5nZWQo
dmlkZW9EaW1lbnNpb25zKTsKIH0KIAogdm9pZCBXZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJv
eHk6OmVudGVyRnVsbHNjcmVlbih1aW50NjRfdCBjb250ZXh0SWQpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL2NvY29hL1dlYlBsYXliYWNrU2Vzc2lvbk1hbmFnZXIuaCBi
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvY29jb2EvV2ViUGxheWJhY2tTZXNzaW9uTWFuYWdl
ci5oCmluZGV4IDAxZmZlZDIxOWUxZWE3MzdhMjBmZDk2ZTNjMDMwMWE4MmZkMDYwMTAuLjA3MTE2
YWFmYzBmNmZmZjY4NTk5MTllNTJlZGZmZTkyNjNlOGE0MjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvY29jb2EvV2ViUGxheWJhY2tTZXNzaW9uTWFuYWdlci5oCisrKyBi
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvY29jb2EvV2ViUGxheWJhY2tTZXNzaW9uTWFuYWdl
ci5oCkBAIC01NCw3ICs1NCwxMCBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIGNsYXNzIFdlYlBhZ2U7
CiBjbGFzcyBXZWJQbGF5YmFja1Nlc3Npb25NYW5hZ2VyOwogCi1jbGFzcyBXZWJQbGF5YmFja1Nl
c3Npb25JbnRlcmZhY2VDb250ZXh0IGZpbmFsIDogcHVibGljIFJlZkNvdW50ZWQ8V2ViUGxheWJh
Y2tTZXNzaW9uSW50ZXJmYWNlQ29udGV4dD4sIHB1YmxpYyBXZWJDb3JlOjpXZWJQbGF5YmFja1Nl
c3Npb25JbnRlcmZhY2UgeworY2xhc3MgV2ViUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlQ29udGV4
dCBmaW5hbAorICAgIDogcHVibGljIFJlZkNvdW50ZWQ8V2ViUGxheWJhY2tTZXNzaW9uSW50ZXJm
YWNlQ29udGV4dD4KKyAgICAsIHB1YmxpYyBXZWJDb3JlOjpXZWJQbGF5YmFja1Nlc3Npb25JbnRl
cmZhY2UKKyAgICAsIHB1YmxpYyBXZWJDb3JlOjpXZWJQbGF5YmFja1Nlc3Npb25Nb2RlbENsaWVu
dCB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFJlZjxXZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2VD
b250ZXh0PiBjcmVhdGUoV2ViUGxheWJhY2tTZXNzaW9uTWFuYWdlciYgbWFuYWdlciwgdWludDY0
X3QgY29udGV4dElkKQogICAgIHsKQEAgLTY5LDE2ICs3MiwxOCBAQCBwcml2YXRlOgogCiAgICAg
Ly8gV2ViUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlCiAgICAgdm9pZCByZXNldE1lZGlhU3RhdGUo
KSBmaW5hbDsKLSAgICB2b2lkIHNldER1cmF0aW9uKGRvdWJsZSkgZmluYWw7Ci0gICAgdm9pZCBz
ZXRDdXJyZW50VGltZShkb3VibGUgY3VycmVudFRpbWUsIGRvdWJsZSBhbmNob3JUaW1lKSBmaW5h
bDsKLSAgICB2b2lkIHNldEJ1ZmZlcmVkVGltZShkb3VibGUpIGZpbmFsOwotICAgIHZvaWQgc2V0
UmF0ZShib29sIGlzUGxheWluZywgZmxvYXQgcGxheWJhY2tSYXRlKSBmaW5hbDsKLSAgICB2b2lk
IHNldFNlZWthYmxlUmFuZ2VzKGNvbnN0IFdlYkNvcmU6OlRpbWVSYW5nZXMmKSBmaW5hbDsKLSAg
ICB2b2lkIHNldENhblBsYXlGYXN0UmV2ZXJzZShib29sIHZhbHVlKSBmaW5hbDsKLSAgICB2b2lk
IHNldEF1ZGlvTWVkaWFTZWxlY3Rpb25PcHRpb25zKGNvbnN0IFZlY3RvcjxXVEY6OlN0cmluZz4m
IG9wdGlvbnMsIHVpbnQ2NF90IHNlbGVjdGVkSW5kZXgpIGZpbmFsOwotICAgIHZvaWQgc2V0TGVn
aWJsZU1lZGlhU2VsZWN0aW9uT3B0aW9ucyhjb25zdCBWZWN0b3I8V1RGOjpTdHJpbmc+JiBvcHRp
b25zLCB1aW50NjRfdCBzZWxlY3RlZEluZGV4KSBmaW5hbDsKLSAgICB2b2lkIHNldEV4dGVybmFs
UGxheWJhY2soYm9vbCBlbmFibGVkLCBFeHRlcm5hbFBsYXliYWNrVGFyZ2V0VHlwZSwgV1RGOjpT
dHJpbmcgbG9jYWxpemVkRGV2aWNlTmFtZSkgZmluYWw7Ci0gICAgdm9pZCBzZXRXaXJlbGVzc1Zp
ZGVvUGxheWJhY2tEaXNhYmxlZChib29sKSBmaW5hbDsKKworICAgIC8vIFdlYlBsYXliYWNrTW9k
ZWxDbGllbnQKKyAgICB2b2lkIGR1cmF0aW9uQ2hhbmdlZChkb3VibGUpIGZpbmFsOworICAgIHZv
aWQgY3VycmVudFRpbWVDaGFuZ2VkKGRvdWJsZSBjdXJyZW50VGltZSwgZG91YmxlIGFuY2hvclRp
bWUpIGZpbmFsOworICAgIHZvaWQgYnVmZmVyZWRUaW1lQ2hhbmdlZChkb3VibGUpIGZpbmFsOwor
ICAgIHZvaWQgcmF0ZUNoYW5nZWQoYm9vbCBpc1BsYXlpbmcsIGZsb2F0IHBsYXliYWNrUmF0ZSkg
ZmluYWw7CisgICAgdm9pZCBzZWVrYWJsZVJhbmdlc0NoYW5nZWQoY29uc3QgV2ViQ29yZTo6VGlt
ZVJhbmdlcyYpIGZpbmFsOworICAgIHZvaWQgY2FuUGxheUZhc3RSZXZlcnNlQ2hhbmdlZChib29s
IHZhbHVlKSBmaW5hbDsKKyAgICB2b2lkIGF1ZGlvTWVkaWFTZWxlY3Rpb25PcHRpb25zQ2hhbmdl
ZChjb25zdCBWZWN0b3I8U3RyaW5nPiYgb3B0aW9ucywgdWludDY0X3Qgc2VsZWN0ZWRJbmRleCkg
ZmluYWw7CisgICAgdm9pZCBsZWdpYmxlTWVkaWFTZWxlY3Rpb25PcHRpb25zQ2hhbmdlZChjb25z
dCBWZWN0b3I8U3RyaW5nPiYgb3B0aW9ucywgdWludDY0X3Qgc2VsZWN0ZWRJbmRleCkgZmluYWw7
CisgICAgdm9pZCBleHRlcm5hbFBsYXliYWNrQ2hhbmdlZChib29sIGVuYWJsZWQsIFdlYkNvcmU6
OldlYlBsYXliYWNrU2Vzc2lvbk1vZGVsOjpFeHRlcm5hbFBsYXliYWNrVGFyZ2V0VHlwZSwgY29u
c3QgU3RyaW5nJiBsb2NhbGl6ZWREZXZpY2VOYW1lKSBmaW5hbDsKKyAgICB2b2lkIHdpcmVsZXNz
VmlkZW9QbGF5YmFja0Rpc2FibGVkQ2hhbmdlZChib29sKSBmaW5hbDsKIAogICAgIFdlYlBsYXli
YWNrU2Vzc2lvbkludGVyZmFjZUNvbnRleHQoV2ViUGxheWJhY2tTZXNzaW9uTWFuYWdlciYsIHVp
bnQ2NF90IGNvbnRleHRJZCk7CiAKQEAgLTExNCwxNiArMTE5LDE2IEBAIHByb3RlY3RlZDoKIAog
ICAgIC8vIEludGVyZmFjZSB0byBXZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2VDb250ZXh0CiAg
ICAgdm9pZCByZXNldE1lZGlhU3RhdGUodWludDY0X3QgY29udGV4dElkKTsKLSAgICB2b2lkIHNl
dER1cmF0aW9uKHVpbnQ2NF90IGNvbnRleHRJZCwgZG91YmxlKTsKLSAgICB2b2lkIHNldEN1cnJl
bnRUaW1lKHVpbnQ2NF90IGNvbnRleHRJZCwgZG91YmxlIGN1cnJlbnRUaW1lLCBkb3VibGUgYW5j
aG9yVGltZSk7Ci0gICAgdm9pZCBzZXRCdWZmZXJlZFRpbWUodWludDY0X3QgY29udGV4dElkLCBk
b3VibGUgYnVmZmVyZWRUaW1lKTsKLSAgICB2b2lkIHNldFJhdGUodWludDY0X3QgY29udGV4dElk
LCBib29sIGlzUGxheWluZywgZmxvYXQgcGxheWJhY2tSYXRlKTsKLSAgICB2b2lkIHNldFNlZWth
YmxlUmFuZ2VzKHVpbnQ2NF90IGNvbnRleHRJZCwgY29uc3QgV2ViQ29yZTo6VGltZVJhbmdlcyYp
OwotICAgIHZvaWQgc2V0Q2FuUGxheUZhc3RSZXZlcnNlKHVpbnQ2NF90IGNvbnRleHRJZCwgYm9v
bCB2YWx1ZSk7Ci0gICAgdm9pZCBzZXRBdWRpb01lZGlhU2VsZWN0aW9uT3B0aW9ucyh1aW50NjRf
dCBjb250ZXh0SWQsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBvcHRpb25zLCB1aW50NjRfdCBzZWxl
Y3RlZEluZGV4KTsKLSAgICB2b2lkIHNldExlZ2libGVNZWRpYVNlbGVjdGlvbk9wdGlvbnModWlu
dDY0X3QgY29udGV4dElkLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgb3B0aW9ucywgdWludDY0X3Qg
c2VsZWN0ZWRJbmRleCk7Ci0gICAgdm9pZCBzZXRFeHRlcm5hbFBsYXliYWNrKHVpbnQ2NF90IGNv
bnRleHRJZCwgYm9vbCBlbmFibGVkLCBXZWJDb3JlOjpXZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZh
Y2U6OkV4dGVybmFsUGxheWJhY2tUYXJnZXRUeXBlLCBTdHJpbmcgbG9jYWxpemVkRGV2aWNlTmFt
ZSk7Ci0gICAgdm9pZCBzZXRXaXJlbGVzc1ZpZGVvUGxheWJhY2tEaXNhYmxlZCh1aW50NjRfdCBj
b250ZXh0SWQsIGJvb2wpOworICAgIHZvaWQgZHVyYXRpb25DaGFuZ2VkKHVpbnQ2NF90IGNvbnRl
eHRJZCwgZG91YmxlKTsKKyAgICB2b2lkIGN1cnJlbnRUaW1lQ2hhbmdlZCh1aW50NjRfdCBjb250
ZXh0SWQsIGRvdWJsZSBjdXJyZW50VGltZSwgZG91YmxlIGFuY2hvclRpbWUpOworICAgIHZvaWQg
YnVmZmVyZWRUaW1lQ2hhbmdlZCh1aW50NjRfdCBjb250ZXh0SWQsIGRvdWJsZSBidWZmZXJlZFRp
bWUpOworICAgIHZvaWQgcmF0ZUNoYW5nZWQodWludDY0X3QgY29udGV4dElkLCBib29sIGlzUGxh
eWluZywgZmxvYXQgcGxheWJhY2tSYXRlKTsKKyAgICB2b2lkIHNlZWthYmxlUmFuZ2VzQ2hhbmdl
ZCh1aW50NjRfdCBjb250ZXh0SWQsIGNvbnN0IFdlYkNvcmU6OlRpbWVSYW5nZXMmKTsKKyAgICB2
b2lkIGNhblBsYXlGYXN0UmV2ZXJzZUNoYW5nZWQodWludDY0X3QgY29udGV4dElkLCBib29sIHZh
bHVlKTsKKyAgICB2b2lkIGF1ZGlvTWVkaWFTZWxlY3Rpb25PcHRpb25zQ2hhbmdlZCh1aW50NjRf
dCBjb250ZXh0SWQsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBvcHRpb25zLCB1aW50NjRfdCBzZWxl
Y3RlZEluZGV4KTsKKyAgICB2b2lkIGxlZ2libGVNZWRpYVNlbGVjdGlvbk9wdGlvbnNDaGFuZ2Vk
KHVpbnQ2NF90IGNvbnRleHRJZCwgY29uc3QgVmVjdG9yPFN0cmluZz4mIG9wdGlvbnMsIHVpbnQ2
NF90IHNlbGVjdGVkSW5kZXgpOworICAgIHZvaWQgZXh0ZXJuYWxQbGF5YmFja0NoYW5nZWQodWlu
dDY0X3QgY29udGV4dElkLCBib29sIGVuYWJsZWQsIFdlYkNvcmU6OldlYlBsYXliYWNrU2Vzc2lv
bk1vZGVsOjpFeHRlcm5hbFBsYXliYWNrVGFyZ2V0VHlwZSwgU3RyaW5nIGxvY2FsaXplZERldmlj
ZU5hbWUpOworICAgIHZvaWQgd2lyZWxlc3NWaWRlb1BsYXliYWNrRGlzYWJsZWRDaGFuZ2VkKHVp
bnQ2NF90IGNvbnRleHRJZCwgYm9vbCk7CiAKICAgICAvLyBNZXNzYWdlcyBmcm9tIFdlYlBsYXli
YWNrU2Vzc2lvbk1hbmFnZXJQcm94eQogICAgIHZvaWQgcGxheSh1aW50NjRfdCBjb250ZXh0SWQp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9jb2NvYS9XZWJQbGF5YmFj
a1Nlc3Npb25NYW5hZ2VyLm1tIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9jb2NvYS9XZWJQ
bGF5YmFja1Nlc3Npb25NYW5hZ2VyLm1tCmluZGV4IDk2NjFmZDYwODVjN2JjZDg1MGY3ZTY2MDJm
NzZmOTM4MTZjMTI3MWIuLjFlODc4MmY1YjZjYzg2ODcxYmU5MDhmMGVkYWYyYzhhZjAwZjdmZWIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvY29jb2EvV2ViUGxheWJhY2tT
ZXNzaW9uTWFuYWdlci5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL2NvY29hL1dl
YlBsYXliYWNrU2Vzc2lvbk1hbmFnZXIubW0KQEAgLTcyLDY0ICs3Miw2NCBAQCB2b2lkIFdlYlBs
YXliYWNrU2Vzc2lvbkludGVyZmFjZUNvbnRleHQ6OnJlc2V0TWVkaWFTdGF0ZSgpCiAgICAgICAg
IG1fbWFuYWdlci0+cmVzZXRNZWRpYVN0YXRlKG1fY29udGV4dElkKTsKIH0KIAotdm9pZCBXZWJQ
bGF5YmFja1Nlc3Npb25JbnRlcmZhY2VDb250ZXh0OjpzZXREdXJhdGlvbihkb3VibGUgZHVyYXRp
b24pCit2b2lkIFdlYlBsYXliYWNrU2Vzc2lvbkludGVyZmFjZUNvbnRleHQ6OmR1cmF0aW9uQ2hh
bmdlZChkb3VibGUgZHVyYXRpb24pCiB7CiAgICAgaWYgKG1fbWFuYWdlcikKLSAgICAgICAgbV9t
YW5hZ2VyLT5zZXREdXJhdGlvbihtX2NvbnRleHRJZCwgZHVyYXRpb24pOworICAgICAgICBtX21h
bmFnZXItPmR1cmF0aW9uQ2hhbmdlZChtX2NvbnRleHRJZCwgZHVyYXRpb24pOwogfQogCi12b2lk
IFdlYlBsYXliYWNrU2Vzc2lvbkludGVyZmFjZUNvbnRleHQ6OnNldEN1cnJlbnRUaW1lKGRvdWJs
ZSBjdXJyZW50VGltZSwgZG91YmxlIGFuY2hvclRpbWUpCit2b2lkIFdlYlBsYXliYWNrU2Vzc2lv
bkludGVyZmFjZUNvbnRleHQ6OmN1cnJlbnRUaW1lQ2hhbmdlZChkb3VibGUgY3VycmVudFRpbWUs
IGRvdWJsZSBhbmNob3JUaW1lKQogewogICAgIGlmIChtX21hbmFnZXIpCi0gICAgICAgIG1fbWFu
YWdlci0+c2V0Q3VycmVudFRpbWUobV9jb250ZXh0SWQsIGN1cnJlbnRUaW1lLCBhbmNob3JUaW1l
KTsKKyAgICAgICAgbV9tYW5hZ2VyLT5jdXJyZW50VGltZUNoYW5nZWQobV9jb250ZXh0SWQsIGN1
cnJlbnRUaW1lLCBhbmNob3JUaW1lKTsKIH0KIAotdm9pZCBXZWJQbGF5YmFja1Nlc3Npb25JbnRl
cmZhY2VDb250ZXh0OjpzZXRCdWZmZXJlZFRpbWUoZG91YmxlIGJ1ZmZlcmVkVGltZSkKK3ZvaWQg
V2ViUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlQ29udGV4dDo6YnVmZmVyZWRUaW1lQ2hhbmdlZChk
b3VibGUgYnVmZmVyZWRUaW1lKQogewogICAgIGlmIChtX21hbmFnZXIpCi0gICAgICAgIG1fbWFu
YWdlci0+c2V0QnVmZmVyZWRUaW1lKG1fY29udGV4dElkLCBidWZmZXJlZFRpbWUpOworICAgICAg
ICBtX21hbmFnZXItPmJ1ZmZlcmVkVGltZUNoYW5nZWQobV9jb250ZXh0SWQsIGJ1ZmZlcmVkVGlt
ZSk7CiB9CiAKLXZvaWQgV2ViUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlQ29udGV4dDo6c2V0UmF0
ZShib29sIGlzUGxheWluZywgZmxvYXQgcGxheWJhY2tSYXRlKQordm9pZCBXZWJQbGF5YmFja1Nl
c3Npb25JbnRlcmZhY2VDb250ZXh0OjpyYXRlQ2hhbmdlZChib29sIGlzUGxheWluZywgZmxvYXQg
cGxheWJhY2tSYXRlKQogewogICAgIGlmIChtX21hbmFnZXIpCi0gICAgICAgIG1fbWFuYWdlci0+
c2V0UmF0ZShtX2NvbnRleHRJZCwgaXNQbGF5aW5nLCBwbGF5YmFja1JhdGUpOworICAgICAgICBt
X21hbmFnZXItPnJhdGVDaGFuZ2VkKG1fY29udGV4dElkLCBpc1BsYXlpbmcsIHBsYXliYWNrUmF0
ZSk7CiB9CiAKLXZvaWQgV2ViUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlQ29udGV4dDo6c2V0U2Vl
a2FibGVSYW5nZXMoY29uc3QgV2ViQ29yZTo6VGltZVJhbmdlcyYgcmFuZ2VzKQordm9pZCBXZWJQ
bGF5YmFja1Nlc3Npb25JbnRlcmZhY2VDb250ZXh0OjpzZWVrYWJsZVJhbmdlc0NoYW5nZWQoY29u
c3QgV2ViQ29yZTo6VGltZVJhbmdlcyYgcmFuZ2VzKQogewogICAgIGlmIChtX21hbmFnZXIpCi0g
ICAgICAgIG1fbWFuYWdlci0+c2V0U2Vla2FibGVSYW5nZXMobV9jb250ZXh0SWQsIHJhbmdlcyk7
CisgICAgICAgIG1fbWFuYWdlci0+c2Vla2FibGVSYW5nZXNDaGFuZ2VkKG1fY29udGV4dElkLCBy
YW5nZXMpOwogfQogCi12b2lkIFdlYlBsYXliYWNrU2Vzc2lvbkludGVyZmFjZUNvbnRleHQ6OnNl
dENhblBsYXlGYXN0UmV2ZXJzZShib29sIHZhbHVlKQordm9pZCBXZWJQbGF5YmFja1Nlc3Npb25J
bnRlcmZhY2VDb250ZXh0OjpjYW5QbGF5RmFzdFJldmVyc2VDaGFuZ2VkKGJvb2wgdmFsdWUpCiB7
CiAgICAgaWYgKG1fbWFuYWdlcikKLSAgICAgICAgbV9tYW5hZ2VyLT5zZXRDYW5QbGF5RmFzdFJl
dmVyc2UobV9jb250ZXh0SWQsIHZhbHVlKTsKKyAgICAgICAgbV9tYW5hZ2VyLT5jYW5QbGF5RmFz
dFJldmVyc2VDaGFuZ2VkKG1fY29udGV4dElkLCB2YWx1ZSk7CiB9CiAKLXZvaWQgV2ViUGxheWJh
Y2tTZXNzaW9uSW50ZXJmYWNlQ29udGV4dDo6c2V0QXVkaW9NZWRpYVNlbGVjdGlvbk9wdGlvbnMo
Y29uc3QgVmVjdG9yPFdURjo6U3RyaW5nPiYgb3B0aW9ucywgdWludDY0X3Qgc2VsZWN0ZWRJbmRl
eCkKK3ZvaWQgV2ViUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlQ29udGV4dDo6YXVkaW9NZWRpYVNl
bGVjdGlvbk9wdGlvbnNDaGFuZ2VkKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBvcHRpb25zLCB1aW50
NjRfdCBzZWxlY3RlZEluZGV4KQogewogICAgIGlmIChtX21hbmFnZXIpCi0gICAgICAgIG1fbWFu
YWdlci0+c2V0QXVkaW9NZWRpYVNlbGVjdGlvbk9wdGlvbnMobV9jb250ZXh0SWQsIG9wdGlvbnMs
IHNlbGVjdGVkSW5kZXgpOworICAgICAgICBtX21hbmFnZXItPmF1ZGlvTWVkaWFTZWxlY3Rpb25P
cHRpb25zQ2hhbmdlZChtX2NvbnRleHRJZCwgb3B0aW9ucywgc2VsZWN0ZWRJbmRleCk7CiB9CiAK
LXZvaWQgV2ViUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlQ29udGV4dDo6c2V0TGVnaWJsZU1lZGlh
U2VsZWN0aW9uT3B0aW9ucyhjb25zdCBWZWN0b3I8V1RGOjpTdHJpbmc+JiBvcHRpb25zLCB1aW50
NjRfdCBzZWxlY3RlZEluZGV4KQordm9pZCBXZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2VDb250
ZXh0OjpsZWdpYmxlTWVkaWFTZWxlY3Rpb25PcHRpb25zQ2hhbmdlZChjb25zdCBWZWN0b3I8U3Ry
aW5nPiYgb3B0aW9ucywgdWludDY0X3Qgc2VsZWN0ZWRJbmRleCkKIHsKICAgICBpZiAobV9tYW5h
Z2VyKQotICAgICAgICBtX21hbmFnZXItPnNldExlZ2libGVNZWRpYVNlbGVjdGlvbk9wdGlvbnMo
bV9jb250ZXh0SWQsIG9wdGlvbnMsIHNlbGVjdGVkSW5kZXgpOworICAgICAgICBtX21hbmFnZXIt
PmxlZ2libGVNZWRpYVNlbGVjdGlvbk9wdGlvbnNDaGFuZ2VkKG1fY29udGV4dElkLCBvcHRpb25z
LCBzZWxlY3RlZEluZGV4KTsKIH0KIAotdm9pZCBXZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2VD
b250ZXh0OjpzZXRFeHRlcm5hbFBsYXliYWNrKGJvb2wgZW5hYmxlZCwgRXh0ZXJuYWxQbGF5YmFj
a1RhcmdldFR5cGUgdHlwZSwgV1RGOjpTdHJpbmcgbG9jYWxpemVkRGV2aWNlTmFtZSkKK3ZvaWQg
V2ViUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlQ29udGV4dDo6ZXh0ZXJuYWxQbGF5YmFja0NoYW5n
ZWQoYm9vbCBlbmFibGVkLCBXZWJQbGF5YmFja1Nlc3Npb25Nb2RlbDo6RXh0ZXJuYWxQbGF5YmFj
a1RhcmdldFR5cGUgdHlwZSwgY29uc3QgU3RyaW5nJiBsb2NhbGl6ZWREZXZpY2VOYW1lKQogewog
ICAgIGlmIChtX21hbmFnZXIpCi0gICAgICAgIG1fbWFuYWdlci0+c2V0RXh0ZXJuYWxQbGF5YmFj
ayhtX2NvbnRleHRJZCwgZW5hYmxlZCwgdHlwZSwgbG9jYWxpemVkRGV2aWNlTmFtZSk7CisgICAg
ICAgIG1fbWFuYWdlci0+ZXh0ZXJuYWxQbGF5YmFja0NoYW5nZWQobV9jb250ZXh0SWQsIGVuYWJs
ZWQsIHR5cGUsIGxvY2FsaXplZERldmljZU5hbWUpOwogfQogCi12b2lkIFdlYlBsYXliYWNrU2Vz
c2lvbkludGVyZmFjZUNvbnRleHQ6OnNldFdpcmVsZXNzVmlkZW9QbGF5YmFja0Rpc2FibGVkKGJv
b2wgZGlzYWJsZWQpCit2b2lkIFdlYlBsYXliYWNrU2Vzc2lvbkludGVyZmFjZUNvbnRleHQ6Ondp
cmVsZXNzVmlkZW9QbGF5YmFja0Rpc2FibGVkQ2hhbmdlZChib29sIGRpc2FibGVkKQogewogICAg
IGlmIChtX21hbmFnZXIpCi0gICAgICAgIG1fbWFuYWdlci0+c2V0V2lyZWxlc3NWaWRlb1BsYXli
YWNrRGlzYWJsZWQobV9jb250ZXh0SWQsIGRpc2FibGVkKTsKKyAgICAgICAgbV9tYW5hZ2VyLT53
aXJlbGVzc1ZpZGVvUGxheWJhY2tEaXNhYmxlZENoYW5nZWQobV9jb250ZXh0SWQsIGRpc2FibGVk
KTsKIH0KIAogI3ByYWdtYSBtYXJrIC0gV2ViUGxheWJhY2tTZXNzaW9uTWFuYWdlcgpAQCAtMTUx
LDggKzE1MSw3IEBAIFdlYlBsYXliYWNrU2Vzc2lvbk1hbmFnZXI6On5XZWJQbGF5YmFja1Nlc3Np
b25NYW5hZ2VyKCkKICAgICAgICAgUmVmUHRyPFdlYlBsYXliYWNrU2Vzc2lvbk1vZGVsTWVkaWFF
bGVtZW50PiBtb2RlbDsKICAgICAgICAgUmVmUHRyPFdlYlBsYXliYWNrU2Vzc2lvbkludGVyZmFj
ZUNvbnRleHQ+IGludGVyZmFjZTsKICAgICAgICAgc3RkOjp0aWUobW9kZWwsIGludGVyZmFjZSkg
PSB0dXBsZTsKLQotICAgICAgICBtb2RlbC0+c2V0V2ViUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNl
KG51bGxwdHIpOworICAgICAgICBtb2RlbC0+cmVtb3ZlQ2xpZW50KCppbnRlcmZhY2UpOwogICAg
ICAgICBtb2RlbC0+c2V0TWVkaWFFbGVtZW50KG51bGxwdHIpOwogCiAgICAgICAgIGludGVyZmFj
ZS0+aW52YWxpZGF0ZSgpOwpAQCAtMTY5LDggKzE2OCw3IEBAIFdlYlBsYXliYWNrU2Vzc2lvbk1h
bmFnZXI6Ok1vZGVsSW50ZXJmYWNlVHVwbGUgV2ViUGxheWJhY2tTZXNzaW9uTWFuYWdlcjo6Y3Jl
YXRlCiB7CiAgICAgUmVmUHRyPFdlYlBsYXliYWNrU2Vzc2lvbk1vZGVsTWVkaWFFbGVtZW50PiBt
b2RlbCA9IFdlYlBsYXliYWNrU2Vzc2lvbk1vZGVsTWVkaWFFbGVtZW50OjpjcmVhdGUoKTsKICAg
ICBSZWZQdHI8V2ViUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlQ29udGV4dD4gaW50ZXJmYWNlID0g
V2ViUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlQ29udGV4dDo6Y3JlYXRlKCp0aGlzLCBjb250ZXh0
SWQpOwotCi0gICAgbW9kZWwtPnNldFdlYlBsYXliYWNrU2Vzc2lvbkludGVyZmFjZShpbnRlcmZh
Y2UuZ2V0KCkpOworICAgIG1vZGVsLT5hZGRDbGllbnQoKmludGVyZmFjZSk7CiAKICAgICByZXR1
cm4gc3RkOjptYWtlX3R1cGxlKFdURk1vdmUobW9kZWwpLCBXVEZNb3ZlKGludGVyZmFjZSkpOwog
fQpAQCAtMjAxLDcgKzE5OSw3IEBAIHZvaWQgV2ViUGxheWJhY2tTZXNzaW9uTWFuYWdlcjo6cmVt
b3ZlQ29udGV4dCh1aW50NjRfdCBjb250ZXh0SWQpCiAKICAgICBSZWZQdHI8SFRNTE1lZGlhRWxl
bWVudD4gbWVkaWFFbGVtZW50ID0gbW9kZWwtPm1lZGlhRWxlbWVudCgpOwogICAgIG1vZGVsLT5z
ZXRNZWRpYUVsZW1lbnQobnVsbHB0cik7Ci0gICAgbW9kZWwtPnNldFdlYlBsYXliYWNrU2Vzc2lv
bkludGVyZmFjZShudWxscHRyKTsKKyAgICBtb2RlbC0+cmVtb3ZlQ2xpZW50KCppbnRlcmZhY2Up
OwogICAgIGludGVyZmFjZS0+aW52YWxpZGF0ZSgpOwogICAgIG1fbWVkaWFFbGVtZW50cy5yZW1v
dmUobWVkaWFFbGVtZW50LmdldCgpKTsKICAgICBtX2NvbnRleHRNYXAucmVtb3ZlKGNvbnRleHRJ
ZCk7CkBAIC0yODQsMjcgKzI4MiwyNyBAQCB2b2lkIFdlYlBsYXliYWNrU2Vzc2lvbk1hbmFnZXI6
OnJlc2V0TWVkaWFTdGF0ZSh1aW50NjRfdCBjb250ZXh0SWQpCiAgICAgbV9wYWdlLT5zZW5kKE1l
c3NhZ2VzOjpXZWJQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHk6OlJlc2V0TWVkaWFTdGF0ZShj
b250ZXh0SWQpLCBtX3BhZ2UtPnBhZ2VJRCgpKTsKIH0KIAotdm9pZCBXZWJQbGF5YmFja1Nlc3Np
b25NYW5hZ2VyOjpzZXREdXJhdGlvbih1aW50NjRfdCBjb250ZXh0SWQsIGRvdWJsZSBkdXJhdGlv
bikKK3ZvaWQgV2ViUGxheWJhY2tTZXNzaW9uTWFuYWdlcjo6ZHVyYXRpb25DaGFuZ2VkKHVpbnQ2
NF90IGNvbnRleHRJZCwgZG91YmxlIGR1cmF0aW9uKQogewogICAgIG1fcGFnZS0+c2VuZChNZXNz
YWdlczo6V2ViUGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5OjpTZXREdXJhdGlvbihjb250ZXh0
SWQsIGR1cmF0aW9uKSwgbV9wYWdlLT5wYWdlSUQoKSk7CiB9CiAKLXZvaWQgV2ViUGxheWJhY2tT
ZXNzaW9uTWFuYWdlcjo6c2V0Q3VycmVudFRpbWUodWludDY0X3QgY29udGV4dElkLCBkb3VibGUg
Y3VycmVudFRpbWUsIGRvdWJsZSBhbmNob3JUaW1lKQordm9pZCBXZWJQbGF5YmFja1Nlc3Npb25N
YW5hZ2VyOjpjdXJyZW50VGltZUNoYW5nZWQodWludDY0X3QgY29udGV4dElkLCBkb3VibGUgY3Vy
cmVudFRpbWUsIGRvdWJsZSBhbmNob3JUaW1lKQogewogICAgIG1fcGFnZS0+c2VuZChNZXNzYWdl
czo6V2ViUGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5OjpTZXRDdXJyZW50VGltZShjb250ZXh0
SWQsIGN1cnJlbnRUaW1lLCBhbmNob3JUaW1lKSwgbV9wYWdlLT5wYWdlSUQoKSk7CiB9CiAKLXZv
aWQgV2ViUGxheWJhY2tTZXNzaW9uTWFuYWdlcjo6c2V0QnVmZmVyZWRUaW1lKHVpbnQ2NF90IGNv
bnRleHRJZCwgZG91YmxlIGJ1ZmZlcmVkVGltZSkKK3ZvaWQgV2ViUGxheWJhY2tTZXNzaW9uTWFu
YWdlcjo6YnVmZmVyZWRUaW1lQ2hhbmdlZCh1aW50NjRfdCBjb250ZXh0SWQsIGRvdWJsZSBidWZm
ZXJlZFRpbWUpCiB7CiAgICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJQbGF5YmFja1Nlc3Np
b25NYW5hZ2VyUHJveHk6OlNldEJ1ZmZlcmVkVGltZShjb250ZXh0SWQsIGJ1ZmZlcmVkVGltZSks
IG1fcGFnZS0+cGFnZUlEKCkpOwogfQogCi12b2lkIFdlYlBsYXliYWNrU2Vzc2lvbk1hbmFnZXI6
OnNldFJhdGUodWludDY0X3QgY29udGV4dElkLCBib29sIGlzUGxheWluZywgZmxvYXQgcGxheWJh
Y2tSYXRlKQordm9pZCBXZWJQbGF5YmFja1Nlc3Npb25NYW5hZ2VyOjpyYXRlQ2hhbmdlZCh1aW50
NjRfdCBjb250ZXh0SWQsIGJvb2wgaXNQbGF5aW5nLCBmbG9hdCBwbGF5YmFja1JhdGUpCiB7CiAg
ICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHk6
OlNldFJhdGUoY29udGV4dElkLCBpc1BsYXlpbmcsIHBsYXliYWNrUmF0ZSksIG1fcGFnZS0+cGFn
ZUlEKCkpOwogfQogCi12b2lkIFdlYlBsYXliYWNrU2Vzc2lvbk1hbmFnZXI6OnNldFNlZWthYmxl
UmFuZ2VzKHVpbnQ2NF90IGNvbnRleHRJZCwgY29uc3QgV2ViQ29yZTo6VGltZVJhbmdlcyYgdGlt
ZVJhbmdlcykKK3ZvaWQgV2ViUGxheWJhY2tTZXNzaW9uTWFuYWdlcjo6c2Vla2FibGVSYW5nZXND
aGFuZ2VkKHVpbnQ2NF90IGNvbnRleHRJZCwgY29uc3QgV2ViQ29yZTo6VGltZVJhbmdlcyYgdGlt
ZVJhbmdlcykKIHsKICAgICBWZWN0b3I8c3RkOjpwYWlyPGRvdWJsZSwgZG91YmxlPj4gcmFuZ2Vz
VmVjdG9yOwogCkBAIC0zMTgsMjcgKzMxNiwyNyBAQCB2b2lkIFdlYlBsYXliYWNrU2Vzc2lvbk1h
bmFnZXI6OnNldFNlZWthYmxlUmFuZ2VzKHVpbnQ2NF90IGNvbnRleHRJZCwgY29uc3QgV2ViQwog
ICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6V2ViUGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5
OjpTZXRTZWVrYWJsZVJhbmdlc1ZlY3Rvcihjb250ZXh0SWQsIFdURk1vdmUocmFuZ2VzVmVjdG9y
KSksIG1fcGFnZS0+cGFnZUlEKCkpOwogfQogCi12b2lkIFdlYlBsYXliYWNrU2Vzc2lvbk1hbmFn
ZXI6OnNldENhblBsYXlGYXN0UmV2ZXJzZSh1aW50NjRfdCBjb250ZXh0SWQsIGJvb2wgdmFsdWUp
Cit2b2lkIFdlYlBsYXliYWNrU2Vzc2lvbk1hbmFnZXI6OmNhblBsYXlGYXN0UmV2ZXJzZUNoYW5n
ZWQodWludDY0X3QgY29udGV4dElkLCBib29sIHZhbHVlKQogewogICAgIG1fcGFnZS0+c2VuZChN
ZXNzYWdlczo6V2ViUGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5OjpTZXRDYW5QbGF5RmFzdFJl
dmVyc2UoY29udGV4dElkLCB2YWx1ZSksIG1fcGFnZS0+cGFnZUlEKCkpOwogfQogCi12b2lkIFdl
YlBsYXliYWNrU2Vzc2lvbk1hbmFnZXI6OnNldEF1ZGlvTWVkaWFTZWxlY3Rpb25PcHRpb25zKHVp
bnQ2NF90IGNvbnRleHRJZCwgY29uc3QgVmVjdG9yPFN0cmluZz4mIG9wdGlvbnMsIHVpbnQ2NF90
IHNlbGVjdGVkSW5kZXgpCit2b2lkIFdlYlBsYXliYWNrU2Vzc2lvbk1hbmFnZXI6OmF1ZGlvTWVk
aWFTZWxlY3Rpb25PcHRpb25zQ2hhbmdlZCh1aW50NjRfdCBjb250ZXh0SWQsIGNvbnN0IFZlY3Rv
cjxTdHJpbmc+JiBvcHRpb25zLCB1aW50NjRfdCBzZWxlY3RlZEluZGV4KQogewogICAgIG1fcGFn
ZS0+c2VuZChNZXNzYWdlczo6V2ViUGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5OjpTZXRBdWRp
b01lZGlhU2VsZWN0aW9uT3B0aW9ucyhjb250ZXh0SWQsIG9wdGlvbnMsIHNlbGVjdGVkSW5kZXgp
LCBtX3BhZ2UtPnBhZ2VJRCgpKTsKIH0KIAotdm9pZCBXZWJQbGF5YmFja1Nlc3Npb25NYW5hZ2Vy
OjpzZXRMZWdpYmxlTWVkaWFTZWxlY3Rpb25PcHRpb25zKHVpbnQ2NF90IGNvbnRleHRJZCwgY29u
c3QgVmVjdG9yPFN0cmluZz4mIG9wdGlvbnMsIHVpbnQ2NF90IHNlbGVjdGVkSW5kZXgpCit2b2lk
IFdlYlBsYXliYWNrU2Vzc2lvbk1hbmFnZXI6OmxlZ2libGVNZWRpYVNlbGVjdGlvbk9wdGlvbnND
aGFuZ2VkKHVpbnQ2NF90IGNvbnRleHRJZCwgY29uc3QgVmVjdG9yPFN0cmluZz4mIG9wdGlvbnMs
IHVpbnQ2NF90IHNlbGVjdGVkSW5kZXgpCiB7CiAgICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpX
ZWJQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHk6OlNldExlZ2libGVNZWRpYVNlbGVjdGlvbk9w
dGlvbnMoY29udGV4dElkLCBvcHRpb25zLCBzZWxlY3RlZEluZGV4KSwgbV9wYWdlLT5wYWdlSUQo
KSk7CiB9CiAKLXZvaWQgV2ViUGxheWJhY2tTZXNzaW9uTWFuYWdlcjo6c2V0RXh0ZXJuYWxQbGF5
YmFjayh1aW50NjRfdCBjb250ZXh0SWQsIGJvb2wgZW5hYmxlZCwgV2ViUGxheWJhY2tTZXNzaW9u
SW50ZXJmYWNlOjpFeHRlcm5hbFBsYXliYWNrVGFyZ2V0VHlwZSB0YXJnZXRUeXBlLCBTdHJpbmcg
bG9jYWxpemVkRGV2aWNlTmFtZSkKK3ZvaWQgV2ViUGxheWJhY2tTZXNzaW9uTWFuYWdlcjo6ZXh0
ZXJuYWxQbGF5YmFja0NoYW5nZWQodWludDY0X3QgY29udGV4dElkLCBib29sIGVuYWJsZWQsIFdl
YlBsYXliYWNrU2Vzc2lvbk1vZGVsOjpFeHRlcm5hbFBsYXliYWNrVGFyZ2V0VHlwZSB0YXJnZXRU
eXBlLCBTdHJpbmcgbG9jYWxpemVkRGV2aWNlTmFtZSkKIHsKICAgICBtX3BhZ2UtPnNlbmQoTWVz
c2FnZXM6OldlYlBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eTo6U2V0RXh0ZXJuYWxQbGF5YmFj
a1Byb3BlcnRpZXMoY29udGV4dElkLCBlbmFibGVkLCBzdGF0aWNfY2FzdDx1aW50MzJfdD4odGFy
Z2V0VHlwZSksIGxvY2FsaXplZERldmljZU5hbWUpLCBtX3BhZ2UtPnBhZ2VJRCgpKTsKIH0KIAot
dm9pZCBXZWJQbGF5YmFja1Nlc3Npb25NYW5hZ2VyOjpzZXRXaXJlbGVzc1ZpZGVvUGxheWJhY2tE
aXNhYmxlZCh1aW50NjRfdCBjb250ZXh0SWQsIGJvb2wgZGlzYWJsZWQpCit2b2lkIFdlYlBsYXli
YWNrU2Vzc2lvbk1hbmFnZXI6OndpcmVsZXNzVmlkZW9QbGF5YmFja0Rpc2FibGVkQ2hhbmdlZCh1
aW50NjRfdCBjb250ZXh0SWQsIGJvb2wgZGlzYWJsZWQpCiB7CiAgICAgbV9wYWdlLT5zZW5kKE1l
c3NhZ2VzOjpXZWJQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHk6OlNldFdpcmVsZXNzVmlkZW9Q
bGF5YmFja0Rpc2FibGVkKGNvbnRleHRJZCwgZGlzYWJsZWQpKTsKIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvY29jb2EvV2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlci5o
IGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9jb2NvYS9XZWJWaWRlb0Z1bGxzY3JlZW5NYW5h
Z2VyLmgKaW5kZXggOTExOTdjZjI4N2QwOTRlMzA2NTM0ZDJhZDUzY2EwY2JjM2Q5MzlhZC4uNTI3
MTBjNDI5YTM4NTQ4MDE3NDkxODBiNWQ0OGE5MzIzNmRiOGNkYiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9jb2NvYS9XZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyLmgKKysr
IGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9jb2NvYS9XZWJWaWRlb0Z1bGxzY3JlZW5NYW5h
Z2VyLmgKQEAgLTQ1LDYgKzQ1LDcgQEAgY2xhc3MgTWVzc2FnZVJlY2VpdmVyOwogfQogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CitjbGFzcyBGbG9hdFNpemU7CiBjbGFzcyBOb2RlOwogfQogCkBAIC01
NiwxMSArNTcsMTQgQEAgY2xhc3MgV2ViUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlQ29udGV4dDsK
IGNsYXNzIFdlYlBsYXliYWNrU2Vzc2lvbk1hbmFnZXI7CiBjbGFzcyBXZWJWaWRlb0Z1bGxzY3Jl
ZW5NYW5hZ2VyOwogCi1jbGFzcyBXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VDb250ZXh0IDog
cHVibGljIFJlZkNvdW50ZWQ8V2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQ29udGV4dD4sIHB1
YmxpYyBXZWJDb3JlOjpXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2UgeworY2xhc3MgV2ViVmlk
ZW9GdWxsc2NyZWVuSW50ZXJmYWNlQ29udGV4dAorICAgIDogcHVibGljIFJlZkNvdW50ZWQ8V2Vi
VmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQ29udGV4dD4KKyAgICAsIHB1YmxpYyBXZWJDb3JlOjpX
ZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2UKKyAgICAsIHB1YmxpYyBXZWJDb3JlOjpXZWJWaWRl
b0Z1bGxzY3JlZW5Nb2RlbENsaWVudCB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxXZWJWaWRl
b0Z1bGxzY3JlZW5JbnRlcmZhY2VDb250ZXh0PiBjcmVhdGUoV2ViVmlkZW9GdWxsc2NyZWVuTWFu
YWdlciYgbWFuYWdlciwgV2ViUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlQ29udGV4dCYgcGxheWJh
Y2tTZXNzaW9uSW50ZXJmYWNlLCB1aW50NjRfdCBjb250ZXh0SWQpCisgICAgc3RhdGljIFJlZjxX
ZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VDb250ZXh0PiBjcmVhdGUoV2ViVmlkZW9GdWxsc2Ny
ZWVuTWFuYWdlciYgbWFuYWdlciwgdWludDY0X3QgY29udGV4dElkKQogICAgIHsKLSAgICAgICAg
cmV0dXJuIGFkb3B0UmVmKCpuZXcgV2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQ29udGV4dCht
YW5hZ2VyLCBwbGF5YmFja1Nlc3Npb25JbnRlcmZhY2UsIGNvbnRleHRJZCkpOworICAgICAgICBy
ZXR1cm4gYWRvcHRSZWYoKm5ldyBXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VDb250ZXh0KG1h
bmFnZXIsIGNvbnRleHRJZCkpOwogICAgIH0KICAgICB2aXJ0dWFsIH5XZWJWaWRlb0Z1bGxzY3Jl
ZW5JbnRlcmZhY2VDb250ZXh0KCk7CiAKQEAgLTgyLDI2ICs4NiwxMyBAQCBwdWJsaWM6CiAgICAg
dm9pZCBzZXRJc0Z1bGxzY3JlZW4oYm9vbCBmbGFnKSB7IG1faXNGdWxsc2NyZWVuID0gZmxhZzsg
fQogCiBwcml2YXRlOgotICAgIC8vIFdlYlBsYXliYWNrU2Vzc2lvbkludGVyZmFjZQotICAgIHZv
aWQgcmVzZXRNZWRpYVN0YXRlKCkgb3ZlcnJpZGU7Ci0gICAgdm9pZCBzZXREdXJhdGlvbihkb3Vi
bGUpIG92ZXJyaWRlOwotICAgIHZvaWQgc2V0Q3VycmVudFRpbWUoZG91YmxlIGN1cnJlbnRUaW1l
LCBkb3VibGUgYW5jaG9yVGltZSkgb3ZlcnJpZGU7Ci0gICAgdm9pZCBzZXRCdWZmZXJlZFRpbWUo
ZG91YmxlKSBvdmVycmlkZTsKLSAgICB2b2lkIHNldFJhdGUoYm9vbCBpc1BsYXlpbmcsIGZsb2F0
IHBsYXliYWNrUmF0ZSkgb3ZlcnJpZGU7Ci0gICAgdm9pZCBzZXRTZWVrYWJsZVJhbmdlcyhjb25z
dCBXZWJDb3JlOjpUaW1lUmFuZ2VzJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBzZXRDYW5QbGF5RmFz
dFJldmVyc2UoYm9vbCB2YWx1ZSkgb3ZlcnJpZGU7Ci0gICAgdm9pZCBzZXRBdWRpb01lZGlhU2Vs
ZWN0aW9uT3B0aW9ucyhjb25zdCBWZWN0b3I8V1RGOjpTdHJpbmc+JiBvcHRpb25zLCB1aW50NjRf
dCBzZWxlY3RlZEluZGV4KSBvdmVycmlkZTsKLSAgICB2b2lkIHNldExlZ2libGVNZWRpYVNlbGVj
dGlvbk9wdGlvbnMoY29uc3QgVmVjdG9yPFdURjo6U3RyaW5nPiYgb3B0aW9ucywgdWludDY0X3Qg
c2VsZWN0ZWRJbmRleCkgb3ZlcnJpZGU7Ci0gICAgdm9pZCBzZXRFeHRlcm5hbFBsYXliYWNrKGJv
b2wgZW5hYmxlZCwgRXh0ZXJuYWxQbGF5YmFja1RhcmdldFR5cGUsIFdURjo6U3RyaW5nIGxvY2Fs
aXplZERldmljZU5hbWUpIG92ZXJyaWRlOwotICAgIHZvaWQgc2V0V2lyZWxlc3NWaWRlb1BsYXli
YWNrRGlzYWJsZWQoYm9vbCkgb3ZlcnJpZGU7Ci0KLSAgICAvLyBXZWJWaWRlb0Z1bGxzY3JlZW5J
bnRlcmZhY2UKLSAgICB2b2lkIHNldFZpZGVvRGltZW5zaW9ucyhib29sIGhhc1ZpZGVvLCBmbG9h
dCB3aWR0aCwgZmxvYXQgaGVpZ2h0KSBvdmVycmlkZTsKLQotICAgIFdlYlZpZGVvRnVsbHNjcmVl
bkludGVyZmFjZUNvbnRleHQoV2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlciYsIFdlYlBsYXliYWNr
U2Vzc2lvbkludGVyZmFjZUNvbnRleHQmLCB1aW50NjRfdCBjb250ZXh0SWQpOworICAgIC8vIFdl
YlZpZGVvRnVsbHNjcmVlbk1vZGVsQ2xpZW50CisgICAgdm9pZCBoYXNWaWRlb0NoYW5nZWQoYm9v
bCkgb3ZlcnJpZGU7CisgICAgdm9pZCB2aWRlb0RpbWVuc2lvbnNDaGFuZ2VkKGNvbnN0IFdlYkNv
cmU6OkZsb2F0U2l6ZSYpIG92ZXJyaWRlOworCisgICAgV2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJm
YWNlQ29udGV4dChXZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyJiwgdWludDY0X3QgY29udGV4dElk
KTsKIAogICAgIFdlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXIqIG1fbWFuYWdlcjsKLSAgICBSZWY8
V2ViUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlQ29udGV4dD4gbV9wbGF5YmFja1Nlc3Npb25JbnRl
cmZhY2U7CiAgICAgdWludDY0X3QgbV9jb250ZXh0SWQ7CiAgICAgc3RkOjp1bmlxdWVfcHRyPExh
eWVySG9zdGluZ0NvbnRleHQ+IG1fbGF5ZXJIb3N0aW5nQ29udGV4dDsKICAgICBib29sIG1faXNB
bmltYXRpbmcgeyBmYWxzZSB9OwpAQCAtMTM4LDcgKzEyOSw4IEBAIHByb3RlY3RlZDoKICAgICB2
b2lkIHJlbW92ZUNsaWVudEZvckNvbnRleHQodWludDY0X3QgY29udGV4dElkKTsKIAogICAgIC8v
IEludGVyZmFjZSB0byBXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VDb250ZXh0Ci0gICAgdm9p
ZCBzZXRWaWRlb0RpbWVuc2lvbnModWludDY0X3QgY29udGV4dElkLCBib29sIGhhc1ZpZGVvLCBm
bG9hdCB3aWR0aCwgZmxvYXQgaGVpZ2h0KTsKKyAgICB2b2lkIGhhc1ZpZGVvQ2hhbmdlZCh1aW50
NjRfdCBjb250ZXh0SWQsIGJvb2wgaGFzVmlkZW8pOworICAgIHZvaWQgdmlkZW9EaW1lbnNpb25z
Q2hhbmdlZCh1aW50NjRfdCBjb250ZXh0SWQsIGNvbnN0IFdlYkNvcmU6OkZsb2F0U2l6ZSYpOwog
CiAgICAgLy8gTWVzc2FnZXMgZnJvbSBXZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHkKICAg
ICB2b2lkIHJlcXVlc3RGdWxsc2NyZWVuTW9kZSh1aW50NjRfdCBjb250ZXh0SWQsIFdlYkNvcmU6
OkhUTUxNZWRpYUVsZW1lbnRFbnVtczo6VmlkZW9GdWxsc2NyZWVuTW9kZSk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL2NvY29hL1dlYlZpZGVvRnVsbHNjcmVlbk1hbmFn
ZXIubW0gYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL2NvY29hL1dlYlZpZGVvRnVsbHNjcmVl
bk1hbmFnZXIubW0KaW5kZXggMjcyNDJjMWQwMTZkN2YzM2JhMTExMTJiNjUwM2ZlOTcwMjc4ZmQx
NC4uZDI3NTIwNzNkMDkwYmQ4NmZjOGI2ZWIyZmM3ZmU4NDBkOTRjNzE1NCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9jb2NvYS9XZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2Vy
Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvY29jb2EvV2ViVmlkZW9GdWxsc2Ny
ZWVuTWFuYWdlci5tbQpAQCAtNjYsOSArNjYsOCBAQCBzdGF0aWMgSW50UmVjdCBpbmxpbmVWaWRl
b0ZyYW1lKEhUTUxWaWRlb0VsZW1lbnQmIGVsZW1lbnQpCiAKICNwcmFnbWEgbWFyayAtIFdlYlZp
ZGVvRnVsbHNjcmVlbkludGVyZmFjZUNvbnRleHQKIAotV2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJm
YWNlQ29udGV4dDo6V2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQ29udGV4dChXZWJWaWRlb0Z1
bGxzY3JlZW5NYW5hZ2VyJiBtYW5hZ2VyLCBXZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2VDb250
ZXh0JiBwbGF5YmFja1Nlc3Npb25JbnRlcmZhY2UsIHVpbnQ2NF90IGNvbnRleHRJZCkKK1dlYlZp
ZGVvRnVsbHNjcmVlbkludGVyZmFjZUNvbnRleHQ6OldlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFj
ZUNvbnRleHQoV2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlciYgbWFuYWdlciwgdWludDY0X3QgY29u
dGV4dElkKQogICAgIDogbV9tYW5hZ2VyKCZtYW5hZ2VyKQotICAgICwgbV9wbGF5YmFja1Nlc3Np
b25JbnRlcmZhY2UocGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlKQogICAgICwgbV9jb250ZXh0SWQo
Y29udGV4dElkKQogewogfQpAQCAtODIsNjUgKzgxLDE2IEBAIHZvaWQgV2ViVmlkZW9GdWxsc2Ny
ZWVuSW50ZXJmYWNlQ29udGV4dDo6c2V0TGF5ZXJIb3N0aW5nQ29udGV4dChzdGQ6OnVuaXF1ZV9w
dHI8CiAgICAgbV9sYXllckhvc3RpbmdDb250ZXh0ID0gV1RGTW92ZShjb250ZXh0KTsKIH0KIAot
dm9pZCBXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VDb250ZXh0OjpyZXNldE1lZGlhU3RhdGUo
KQotewotICAgIG1fcGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlLT5yZXNldE1lZGlhU3RhdGUoKTsK
LX0KLQotdm9pZCBXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VDb250ZXh0OjpzZXREdXJhdGlv
bihkb3VibGUgZHVyYXRpb24pCi17Ci0gICAgbV9wbGF5YmFja1Nlc3Npb25JbnRlcmZhY2UtPnNl
dER1cmF0aW9uKGR1cmF0aW9uKTsKLX0KLQotdm9pZCBXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZh
Y2VDb250ZXh0OjpzZXRDdXJyZW50VGltZShkb3VibGUgY3VycmVudFRpbWUsIGRvdWJsZSBhbmNo
b3JUaW1lKQotewotICAgIG1fcGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlLT5zZXRDdXJyZW50VGlt
ZShjdXJyZW50VGltZSwgYW5jaG9yVGltZSk7Ci19Ci0KLXZvaWQgV2ViVmlkZW9GdWxsc2NyZWVu
SW50ZXJmYWNlQ29udGV4dDo6c2V0QnVmZmVyZWRUaW1lKGRvdWJsZSBidWZmZXJlZFRpbWUpCi17
Ci0gICAgbV9wbGF5YmFja1Nlc3Npb25JbnRlcmZhY2UtPnNldEJ1ZmZlcmVkVGltZShidWZmZXJl
ZFRpbWUpOwotfQotCi12b2lkIFdlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUNvbnRleHQ6OnNl
dFJhdGUoYm9vbCBpc1BsYXlpbmcsIGZsb2F0IHBsYXliYWNrUmF0ZSkKLXsKLSAgICBtX3BsYXli
YWNrU2Vzc2lvbkludGVyZmFjZS0+c2V0UmF0ZShpc1BsYXlpbmcsIHBsYXliYWNrUmF0ZSk7Ci19
Ci0KLXZvaWQgV2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQ29udGV4dDo6c2V0VmlkZW9EaW1l
bnNpb25zKGJvb2wgaGFzVmlkZW8sIGZsb2F0IHdpZHRoLCBmbG9hdCBoZWlnaHQpCit2b2lkIFdl
YlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUNvbnRleHQ6Omhhc1ZpZGVvQ2hhbmdlZChib29sIGhh
c1ZpZGVvKQogewogICAgIGlmIChtX21hbmFnZXIpCi0gICAgICAgIG1fbWFuYWdlci0+c2V0Vmlk
ZW9EaW1lbnNpb25zKG1fY29udGV4dElkLCBoYXNWaWRlbywgd2lkdGgsIGhlaWdodCk7Ci19Ci0K
LXZvaWQgV2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQ29udGV4dDo6c2V0U2Vla2FibGVSYW5n
ZXMoY29uc3QgV2ViQ29yZTo6VGltZVJhbmdlcyYgcmFuZ2VzKQotewotICAgIG1fcGxheWJhY2tT
ZXNzaW9uSW50ZXJmYWNlLT5zZXRTZWVrYWJsZVJhbmdlcyhyYW5nZXMpOworICAgICAgICBtX21h
bmFnZXItPmhhc1ZpZGVvQ2hhbmdlZChtX2NvbnRleHRJZCwgaGFzVmlkZW8pOwogfQogCi12b2lk
IFdlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUNvbnRleHQ6OnNldENhblBsYXlGYXN0UmV2ZXJz
ZShib29sIHZhbHVlKQordm9pZCBXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VDb250ZXh0Ojp2
aWRlb0RpbWVuc2lvbnNDaGFuZ2VkKGNvbnN0IEZsb2F0U2l6ZSYgdmlkZW9EaW1lbnNpb25zKQog
ewotICAgIG1fcGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlLT5zZXRDYW5QbGF5RmFzdFJldmVyc2Uo
dmFsdWUpOwotfQotCi12b2lkIFdlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUNvbnRleHQ6OnNl
dEF1ZGlvTWVkaWFTZWxlY3Rpb25PcHRpb25zKGNvbnN0IFZlY3RvcjxXVEY6OlN0cmluZz4mIG9w
dGlvbnMsIHVpbnQ2NF90IHNlbGVjdGVkSW5kZXgpCi17Ci0gICAgbV9wbGF5YmFja1Nlc3Npb25J
bnRlcmZhY2UtPnNldEF1ZGlvTWVkaWFTZWxlY3Rpb25PcHRpb25zKG9wdGlvbnMsIHNlbGVjdGVk
SW5kZXgpOwotfQotCi12b2lkIFdlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUNvbnRleHQ6OnNl
dExlZ2libGVNZWRpYVNlbGVjdGlvbk9wdGlvbnMoY29uc3QgVmVjdG9yPFdURjo6U3RyaW5nPiYg
b3B0aW9ucywgdWludDY0X3Qgc2VsZWN0ZWRJbmRleCkKLXsKLSAgICBtX3BsYXliYWNrU2Vzc2lv
bkludGVyZmFjZS0+c2V0TGVnaWJsZU1lZGlhU2VsZWN0aW9uT3B0aW9ucyhvcHRpb25zLCBzZWxl
Y3RlZEluZGV4KTsKLX0KLQotdm9pZCBXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VDb250ZXh0
OjpzZXRFeHRlcm5hbFBsYXliYWNrKGJvb2wgZW5hYmxlZCwgRXh0ZXJuYWxQbGF5YmFja1Rhcmdl
dFR5cGUgdHlwZSwgV1RGOjpTdHJpbmcgbG9jYWxpemVkRGV2aWNlTmFtZSkKLXsKLSAgICBtX3Bs
YXliYWNrU2Vzc2lvbkludGVyZmFjZS0+c2V0RXh0ZXJuYWxQbGF5YmFjayhlbmFibGVkLCB0eXBl
LCBsb2NhbGl6ZWREZXZpY2VOYW1lKTsKLX0KLQotdm9pZCBXZWJWaWRlb0Z1bGxzY3JlZW5JbnRl
cmZhY2VDb250ZXh0OjpzZXRXaXJlbGVzc1ZpZGVvUGxheWJhY2tEaXNhYmxlZChib29sIGRpc2Fi
bGVkKQotewotICAgIG1fcGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlLT5zZXRXaXJlbGVzc1ZpZGVv
UGxheWJhY2tEaXNhYmxlZChkaXNhYmxlZCk7CisgICAgaWYgKG1fbWFuYWdlcikKKyAgICAgICAg
bV9tYW5hZ2VyLT52aWRlb0RpbWVuc2lvbnNDaGFuZ2VkKG1fY29udGV4dElkLCB2aWRlb0RpbWVu
c2lvbnMpOwogfQogCiAjcHJhZ21hIG1hcmsgLSBXZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyCkBA
IC0xNjQsOCArMTE0LDggQEAgV2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6fldlYlZpZGVvRnVs
bHNjcmVlbk1hbmFnZXIoKQogICAgICAgICBSZWZQdHI8V2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJm
YWNlQ29udGV4dD4gaW50ZXJmYWNlOwogICAgICAgICBzdGQ6OnRpZShtb2RlbCwgaW50ZXJmYWNl
KSA9IHR1cGxlOwogCi0gICAgICAgIG1vZGVsLT5zZXRXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZh
Y2UobnVsbHB0cik7CiAgICAgICAgIG1vZGVsLT5zZXRWaWRlb0VsZW1lbnQobnVsbHB0cik7Cisg
ICAgICAgIG1vZGVsLT5yZW1vdmVDbGllbnQoKmludGVyZmFjZSk7CiAKICAgICAgICAgaW50ZXJm
YWNlLT5pbnZhbGlkYXRlKCk7CiAgICAgfQpAQCAtMTc5LDE0ICsxMjksMTIgQEAgV2ViVmlkZW9G
dWxsc2NyZWVuTWFuYWdlcjo6fldlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXIoKQogCiBXZWJWaWRl
b0Z1bGxzY3JlZW5NYW5hZ2VyOjpNb2RlbEludGVyZmFjZVR1cGxlIFdlYlZpZGVvRnVsbHNjcmVl
bk1hbmFnZXI6OmNyZWF0ZU1vZGVsQW5kSW50ZXJmYWNlKHVpbnQ2NF90IGNvbnRleHRJZCkKIHsK
LSAgICBhdXRvJiBwbGF5YmFja1Nlc3Npb25Nb2RlbCA9IG1fcGxheWJhY2tTZXNzaW9uTWFuYWdl
ci0+ZW5zdXJlTW9kZWwoY29udGV4dElkKTsKLSAgICBSZWZQdHI8V2ViVmlkZW9GdWxsc2NyZWVu
TW9kZWxWaWRlb0VsZW1lbnQ+IG1vZGVsID0gV2ViVmlkZW9GdWxsc2NyZWVuTW9kZWxWaWRlb0Vs
ZW1lbnQ6OmNyZWF0ZShwbGF5YmFja1Nlc3Npb25Nb2RlbCk7Ci0gICAgYXV0byYgcGxheWJhY2tT
ZXNzaW9uSW50ZXJmYWNlID0gbV9wbGF5YmFja1Nlc3Npb25NYW5hZ2VyLT5lbnN1cmVJbnRlcmZh
Y2UoY29udGV4dElkKTsKLSAgICBSZWZQdHI8V2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQ29u
dGV4dD4gaW50ZXJmYWNlID0gV2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQ29udGV4dDo6Y3Jl
YXRlKCp0aGlzLCBwbGF5YmFja1Nlc3Npb25JbnRlcmZhY2UsIGNvbnRleHRJZCk7CisgICAgUmVm
UHRyPFdlYlZpZGVvRnVsbHNjcmVlbk1vZGVsVmlkZW9FbGVtZW50PiBtb2RlbCA9IFdlYlZpZGVv
RnVsbHNjcmVlbk1vZGVsVmlkZW9FbGVtZW50OjpjcmVhdGUoKTsKKyAgICBSZWZQdHI8V2ViVmlk
ZW9GdWxsc2NyZWVuSW50ZXJmYWNlQ29udGV4dD4gaW50ZXJmYWNlID0gV2ViVmlkZW9GdWxsc2Ny
ZWVuSW50ZXJmYWNlQ29udGV4dDo6Y3JlYXRlKCp0aGlzLCBjb250ZXh0SWQpOwogICAgIG1fcGxh
eWJhY2tTZXNzaW9uTWFuYWdlci0+YWRkQ2xpZW50Rm9yQ29udGV4dChjb250ZXh0SWQpOwogCiAg
ICAgaW50ZXJmYWNlLT5zZXRMYXllckhvc3RpbmdDb250ZXh0KExheWVySG9zdGluZ0NvbnRleHQ6
OmNyZWF0ZUZvckV4dGVybmFsSG9zdGluZ1Byb2Nlc3MoKSk7Ci0gICAgbW9kZWwtPnNldFdlYlZp
ZGVvRnVsbHNjcmVlbkludGVyZmFjZShpbnRlcmZhY2UuZ2V0KCkpOworICAgIG1vZGVsLT5hZGRD
bGllbnQoKmludGVyZmFjZSk7CiAKICAgICByZXR1cm4gc3RkOjptYWtlX3R1cGxlKFdURk1vdmUo
bW9kZWwpLCBXVEZNb3ZlKGludGVyZmFjZSkpOwogfQpAQCAtMjE5LDcgKzE2Nyw3IEBAIHZvaWQg
V2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6cmVtb3ZlQ29udGV4dCh1aW50NjRfdCBjb250ZXh0
SWQpCiAKICAgICBSZWZQdHI8SFRNTFZpZGVvRWxlbWVudD4gdmlkZW9FbGVtZW50ID0gbW9kZWwt
PnZpZGVvRWxlbWVudCgpOwogICAgIG1vZGVsLT5zZXRWaWRlb0VsZW1lbnQobnVsbHB0cik7Ci0g
ICAgbW9kZWwtPnNldFdlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZShudWxscHRyKTsKKyAgICBt
b2RlbC0+cmVtb3ZlQ2xpZW50KCppbnRlcmZhY2UpOwogICAgIGludGVyZmFjZS0+aW52YWxpZGF0
ZSgpOwogICAgIG1fdmlkZW9FbGVtZW50cy5yZW1vdmUodmlkZW9FbGVtZW50LmdldCgpKTsKICAg
ICBtX2NvbnRleHRNYXAucmVtb3ZlKGNvbnRleHRJZCk7CkBAIC0zMzEsOSArMjc5LDE0IEBAIHZv
aWQgV2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6ZXhpdFZpZGVvRnVsbHNjcmVlblRvTW9kZVdp
dGhvdXRBbmltYXRpb24oV2ViQ29yCiAKICNwcmFnbWEgbWFyayBJbnRlcmZhY2UgdG8gV2ViVmlk
ZW9GdWxsc2NyZWVuSW50ZXJmYWNlQ29udGV4dDoKIAotdm9pZCBXZWJWaWRlb0Z1bGxzY3JlZW5N
YW5hZ2VyOjpzZXRWaWRlb0RpbWVuc2lvbnModWludDY0X3QgY29udGV4dElkLCBib29sIGhhc1Zp
ZGVvLCBmbG9hdCB3aWR0aCwgZmxvYXQgaGVpZ2h0KQordm9pZCBXZWJWaWRlb0Z1bGxzY3JlZW5N
YW5hZ2VyOjpoYXNWaWRlb0NoYW5nZWQodWludDY0X3QgY29udGV4dElkLCBib29sIGhhc1ZpZGVv
KQoreworICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6V2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdl
clByb3h5OjpTZXRIYXNWaWRlbyhjb250ZXh0SWQsIGhhc1ZpZGVvKSwgbV9wYWdlLT5wYWdlSUQo
KSk7Cit9CisKK3ZvaWQgV2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6dmlkZW9EaW1lbnNpb25z
Q2hhbmdlZCh1aW50NjRfdCBjb250ZXh0SWQsIGNvbnN0IEZsb2F0U2l6ZSYgdmlkZW9EaW1lbnNp
b25zKQogewotICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6V2ViVmlkZW9GdWxsc2NyZWVuTWFu
YWdlclByb3h5OjpTZXRWaWRlb0RpbWVuc2lvbnMoY29udGV4dElkLCBoYXNWaWRlbywgd2lkdGgs
IGhlaWdodCksIG1fcGFnZS0+cGFnZUlEKCkpOworICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6
V2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5OjpTZXRWaWRlb0RpbWVuc2lvbnMoY29udGV4
dElkLCB2aWRlb0RpbWVuc2lvbnMpLCBtX3BhZ2UtPnBhZ2VJRCgpKTsKIH0KIAogI3ByYWdtYSBt
YXJrIE1lc3NhZ2VzIGZyb20gV2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5Ogo=
</data>
<flag name="review"
          id="310757"
          type_id="1"
          status="+"
          setter="eric.carlson"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>287796</attachid>
            <date>2016-09-02 12:11:28 -0700</date>
            <delta_ts>2016-09-02 12:11:28 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-159580-20160902120912.patch</filename>
            <type>text/plain</type>
            <size>189363</size>
            <attacher name="Jer Noble">jer.noble</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjA1MzU0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMmNjMmNjOGVhZWZiZGJh
YjU5MDQ1Nzk4MmM3NjhlNTQ4ZmFmM2YxMy4uZmU2MWZlMDM2MTIzYzVmZTg0NWIzODI1OTI2YjVh
MGM5OTNkNzAwYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIzMSBAQAorMjAxNi0wNy0wOCAgSmVy
IE5vYmxlICA8amVyLm5vYmxlQGFwcGxlLmNvbT4KKworICAgICAgICBSZWZhY3RvciBXZWJQbGF5
YmFja1Nlc3Npb25Nb2RlbE1lZGlhRWxlbWVudCB0byBiZSBjbGllbnQgYmFzZWQuCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTk1ODAKKworICAgICAg
ICBSZXZpZXdlZCBieSBFcmljIENhcmxzb24uCisKKyAgICAgICAgQWRkIGNsaWVudCBjYWxsYmFj
ayBpbnRlcmZhY2VzIHRvIGJvdGggV2ViUGxheWJhY2tTZXNzaW9uTW9kZWwgYW5kIFdlYlZpZGVv
RnVsbHNjcmVlbk1vZGVsLCB3aGVyZSBlYWNoIG9iamVjdAorICAgICAgICBjYW4gaGF2ZSBtdWx0
aXBsZSBjbGllbnRzLCBhbmQgc28gdGhlIG9iamVjdCB3aWxsIGJvdGggc3RvcmUgY3VycmVudCB2
YWx1ZXMgYW5kIGFsc28gbm90aWZ5IHRob3NlIGNsaWVudHMKKyAgICAgICAgd2hlbiB0aGUgdmFs
dWVzIGNoYW5nZS4gQWZ0ZXIgdGhpcyBjaGFuZ2UsIHRoZXJlIGlzIG5vIG5lZWQgdG8gaGF2ZSB0
aGUgbW9kZWxzIGtub3cgYWJvdXQgdGhlaXIgYXNzb2NpYXRlZAorICAgICAgICBpbnRlcmZhY2Vz
IGV4cGxpY2l0bHkuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9jb2NvYS9XZWJQbGF5YmFja1Nlc3Np
b25JbnRlcmZhY2UuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9jb2NvYS9XZWJQbGF5YmFja1Nlc3Np
b25Nb2RlbC5oOgorICAgICAgICAoV2ViQ29yZTo6V2ViUGxheWJhY2tTZXNzaW9uTW9kZWxDbGll
bnQ6On5XZWJQbGF5YmFja1Nlc3Npb25Nb2RlbENsaWVudCk6CisgICAgICAgIChXZWJDb3JlOjpX
ZWJQbGF5YmFja1Nlc3Npb25Nb2RlbENsaWVudDo6ZHVyYXRpb25DaGFuZ2VkKToKKyAgICAgICAg
KFdlYkNvcmU6OldlYlBsYXliYWNrU2Vzc2lvbk1vZGVsQ2xpZW50OjpjdXJyZW50VGltZUNoYW5n
ZWQpOgorICAgICAgICAoV2ViQ29yZTo6V2ViUGxheWJhY2tTZXNzaW9uTW9kZWxDbGllbnQ6OmJ1
ZmZlcmVkVGltZUNoYW5nZWQpOgorICAgICAgICAoV2ViQ29yZTo6V2ViUGxheWJhY2tTZXNzaW9u
TW9kZWxDbGllbnQ6OnJhdGVDaGFuZ2VkKToKKyAgICAgICAgKFdlYkNvcmU6OldlYlBsYXliYWNr
U2Vzc2lvbk1vZGVsQ2xpZW50OjpzZWVrYWJsZVJhbmdlc0NoYW5nZWQpOgorICAgICAgICAoV2Vi
Q29yZTo6V2ViUGxheWJhY2tTZXNzaW9uTW9kZWxDbGllbnQ6OmNhblBsYXlGYXN0UmV2ZXJzZUNo
YW5nZWQpOgorICAgICAgICAoV2ViQ29yZTo6V2ViUGxheWJhY2tTZXNzaW9uTW9kZWxDbGllbnQ6
OmF1ZGlvTWVkaWFTZWxlY3Rpb25PcHRpb25zQ2hhbmdlZCk6CisgICAgICAgIChXZWJDb3JlOjpX
ZWJQbGF5YmFja1Nlc3Npb25Nb2RlbENsaWVudDo6bGVnaWJsZU1lZGlhU2VsZWN0aW9uT3B0aW9u
c0NoYW5nZWQpOgorICAgICAgICAoV2ViQ29yZTo6V2ViUGxheWJhY2tTZXNzaW9uTW9kZWxDbGll
bnQ6OmV4dGVybmFsUGxheWJhY2tDaGFuZ2VkKToKKyAgICAgICAgKFdlYkNvcmU6OldlYlBsYXli
YWNrU2Vzc2lvbk1vZGVsQ2xpZW50Ojp3aXJlbGVzc1ZpZGVvUGxheWJhY2tEaXNhYmxlZENoYW5n
ZWQpOgorICAgICAgICAqIHBsYXRmb3JtL2NvY29hL1dlYlBsYXliYWNrU2Vzc2lvbk1vZGVsTWVk
aWFFbGVtZW50Lmg6CisgICAgICAgICogcGxhdGZvcm0vY29jb2EvV2ViUGxheWJhY2tTZXNzaW9u
TW9kZWxNZWRpYUVsZW1lbnQubW06CisgICAgICAgIChXZWJQbGF5YmFja1Nlc3Npb25Nb2RlbE1l
ZGlhRWxlbWVudDo6c2V0TWVkaWFFbGVtZW50KToKKyAgICAgICAgKFdlYlBsYXliYWNrU2Vzc2lv
bk1vZGVsTWVkaWFFbGVtZW50Ojp1cGRhdGVGb3JFdmVudE5hbWUpOgorICAgICAgICAoV2ViUGxh
eWJhY2tTZXNzaW9uTW9kZWxNZWRpYUVsZW1lbnQ6OmFkZENsaWVudCk6CisgICAgICAgIChXZWJQ
bGF5YmFja1Nlc3Npb25Nb2RlbE1lZGlhRWxlbWVudDo6cmVtb3ZlQ2xpZW50KToKKyAgICAgICAg
KFdlYlBsYXliYWNrU2Vzc2lvbk1vZGVsTWVkaWFFbGVtZW50Ojp1cGRhdGVMZWdpYmxlT3B0aW9u
cyk6CisgICAgICAgIChXZWJQbGF5YmFja1Nlc3Npb25Nb2RlbE1lZGlhRWxlbWVudDo6b2JzZXJ2
ZWRFdmVudE5hbWVzKToKKyAgICAgICAgKFdlYlBsYXliYWNrU2Vzc2lvbk1vZGVsTWVkaWFFbGVt
ZW50OjpldmVudE5hbWVBbGwpOgorICAgICAgICAoV2ViUGxheWJhY2tTZXNzaW9uTW9kZWxNZWRp
YUVsZW1lbnQ6OmF1ZGlvTWVkaWFTZWxlY3Rpb25PcHRpb25zKToKKyAgICAgICAgKFdlYlBsYXli
YWNrU2Vzc2lvbk1vZGVsTWVkaWFFbGVtZW50OjphdWRpb01lZGlhU2VsZWN0ZWRJbmRleCk6Cisg
ICAgICAgIChXZWJQbGF5YmFja1Nlc3Npb25Nb2RlbE1lZGlhRWxlbWVudDo6bGVnaWJsZU1lZGlh
U2VsZWN0ZWRJbmRleCk6CisgICAgICAgIChXZWJQbGF5YmFja1Nlc3Npb25Nb2RlbE1lZGlhRWxl
bWVudDo6ZXh0ZXJuYWxQbGF5YmFja0VuYWJsZWQpOgorICAgICAgICAoV2ViUGxheWJhY2tTZXNz
aW9uTW9kZWxNZWRpYUVsZW1lbnQ6OmV4dGVybmFsUGxheWJhY2tUYXJnZXRUeXBlKToKKyAgICAg
ICAgKFdlYlBsYXliYWNrU2Vzc2lvbk1vZGVsTWVkaWFFbGVtZW50OjpleHRlcm5hbFBsYXliYWNr
TG9jYWxpemVkRGV2aWNlTmFtZSk6CisgICAgICAgIChXZWJQbGF5YmFja1Nlc3Npb25Nb2RlbE1l
ZGlhRWxlbWVudDo6d2lyZWxlc3NWaWRlb1BsYXliYWNrRGlzYWJsZWQpOgorICAgICAgICAoV2Vi
UGxheWJhY2tTZXNzaW9uTW9kZWxNZWRpYUVsZW1lbnQ6OnNldFdlYlBsYXliYWNrU2Vzc2lvbklu
dGVyZmFjZSk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vY29jb2EvV2ViVmlkZW9GdWxs
c2NyZWVuSW50ZXJmYWNlLmg6CisgICAgICAgICogcGxhdGZvcm0vY29jb2EvV2ViVmlkZW9GdWxs
c2NyZWVuTW9kZWwuaDoKKyAgICAgICAgKFdlYkNvcmU6OldlYlZpZGVvRnVsbHNjcmVlbk1vZGVs
Q2xpZW50Ojp+V2ViVmlkZW9GdWxsc2NyZWVuTW9kZWxDbGllbnQpOgorICAgICAgICAqIHBsYXRm
b3JtL2NvY29hL1dlYlZpZGVvRnVsbHNjcmVlbk1vZGVsVmlkZW9FbGVtZW50Lmg6CisgICAgICAg
IChXZWJDb3JlOjpXZWJWaWRlb0Z1bGxzY3JlZW5Nb2RlbFZpZGVvRWxlbWVudDo6Y3JlYXRlKToK
KyAgICAgICAgKFdlYkNvcmU6OldlYlZpZGVvRnVsbHNjcmVlbk1vZGVsVmlkZW9FbGVtZW50Ojpw
bGF5YmFja1Nlc3Npb25Nb2RlbCk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vY29jb2Ev
V2ViVmlkZW9GdWxsc2NyZWVuTW9kZWxWaWRlb0VsZW1lbnQubW06CisgICAgICAgIChXZWJWaWRl
b0Z1bGxzY3JlZW5Nb2RlbFZpZGVvRWxlbWVudDo6V2ViVmlkZW9GdWxsc2NyZWVuTW9kZWxWaWRl
b0VsZW1lbnQpOgorICAgICAgICAoV2ViVmlkZW9GdWxsc2NyZWVuTW9kZWxWaWRlb0VsZW1lbnQ6
OnNldFZpZGVvRWxlbWVudCk6CisgICAgICAgIChXZWJWaWRlb0Z1bGxzY3JlZW5Nb2RlbFZpZGVv
RWxlbWVudDo6dXBkYXRlRm9yRXZlbnROYW1lKToKKyAgICAgICAgKFdlYlZpZGVvRnVsbHNjcmVl
bk1vZGVsVmlkZW9FbGVtZW50OjphZGRDbGllbnQpOgorICAgICAgICAoV2ViVmlkZW9GdWxsc2Ny
ZWVuTW9kZWxWaWRlb0VsZW1lbnQ6OnJlbW92ZUNsaWVudCk6CisgICAgICAgIChXZWJWaWRlb0Z1
bGxzY3JlZW5Nb2RlbFZpZGVvRWxlbWVudDo6c2V0SGFzVmlkZW8pOgorICAgICAgICAoV2ViVmlk
ZW9GdWxsc2NyZWVuTW9kZWxWaWRlb0VsZW1lbnQ6OnNldFZpZGVvRGltZW5zaW9ucyk6CisgICAg
ICAgIChXZWJWaWRlb0Z1bGxzY3JlZW5Nb2RlbFZpZGVvRWxlbWVudDo6c2V0V2ViVmlkZW9GdWxs
c2NyZWVuSW50ZXJmYWNlKTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9pb3MvV2ViQVZQ
bGF5ZXJDb250cm9sbGVyLmg6CisgICAgICAgICogcGxhdGZvcm0vaW9zL1dlYkFWUGxheWVyQ29u
dHJvbGxlci5tbToKKyAgICAgICAgKC1bV2ViQVZQbGF5ZXJDb250cm9sbGVyIHJlc2V0U3RhdGVd
KTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9pb3MvV2ViUGxheWJhY2tTZXNzaW9uSW50
ZXJmYWNlQVZLaXQuaDoKKyAgICAgICAgKFdlYkNvcmU6OldlYlBsYXliYWNrU2Vzc2lvbkludGVy
ZmFjZUFWS2l0Q2xpZW50Ojp+V2ViUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlQVZLaXRDbGllbnQp
OiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL2lvcy9XZWJQbGF5YmFja1Nlc3Npb25JbnRl
cmZhY2VBVktpdC5tbToKKyAgICAgICAgKFdlYkNvcmU6OldlYlBsYXliYWNrU2Vzc2lvbkludGVy
ZmFjZUFWS2l0OjpXZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2VBVktpdCk6CisgICAgICAgIChX
ZWJDb3JlOjpXZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2VBVktpdDo6fldlYlBsYXliYWNrU2Vz
c2lvbkludGVyZmFjZUFWS2l0KToKKyAgICAgICAgKFdlYkNvcmU6OldlYlBsYXliYWNrU2Vzc2lv
bkludGVyZmFjZUFWS2l0OjpyZXNldE1lZGlhU3RhdGUpOgorICAgICAgICAoV2ViQ29yZTo6V2Vi
UGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlQVZLaXQ6OmR1cmF0aW9uQ2hhbmdlZCk6CisgICAgICAg
IChXZWJDb3JlOjpXZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2VBVktpdDo6Y3VycmVudFRpbWVD
aGFuZ2VkKToKKyAgICAgICAgKFdlYkNvcmU6OldlYlBsYXliYWNrU2Vzc2lvbkludGVyZmFjZUFW
S2l0OjpidWZmZXJlZFRpbWVDaGFuZ2VkKToKKyAgICAgICAgKFdlYkNvcmU6OldlYlBsYXliYWNr
U2Vzc2lvbkludGVyZmFjZUFWS2l0OjpyYXRlQ2hhbmdlZCk6CisgICAgICAgIChXZWJDb3JlOjpX
ZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2VBVktpdDo6c2Vla2FibGVSYW5nZXNDaGFuZ2VkKToK
KyAgICAgICAgKFdlYkNvcmU6OldlYlBsYXliYWNrU2Vzc2lvbkludGVyZmFjZUFWS2l0OjpjYW5Q
bGF5RmFzdFJldmVyc2VDaGFuZ2VkKToKKyAgICAgICAgKFdlYkNvcmU6OldlYlBsYXliYWNrU2Vz
c2lvbkludGVyZmFjZUFWS2l0OjphdWRpb01lZGlhU2VsZWN0aW9uT3B0aW9uc0NoYW5nZWQpOgor
ICAgICAgICAoV2ViQ29yZTo6V2ViUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlQVZLaXQ6OmxlZ2li
bGVNZWRpYVNlbGVjdGlvbk9wdGlvbnNDaGFuZ2VkKToKKyAgICAgICAgKFdlYkNvcmU6OldlYlBs
YXliYWNrU2Vzc2lvbkludGVyZmFjZUFWS2l0OjpleHRlcm5hbFBsYXliYWNrQ2hhbmdlZCk6Cisg
ICAgICAgIChXZWJDb3JlOjpXZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2VBVktpdDo6d2lyZWxl
c3NWaWRlb1BsYXliYWNrRGlzYWJsZWRDaGFuZ2VkKToKKyAgICAgICAgKFdlYkNvcmU6OldlYlBs
YXliYWNrU2Vzc2lvbkludGVyZmFjZUFWS2l0OjppbnZhbGlkYXRlKToKKyAgICAgICAgKFdlYkNv
cmU6OldlYlBsYXliYWNrU2Vzc2lvbkludGVyZmFjZUFWS2l0OjpzZXRXZWJQbGF5YmFja1Nlc3Np
b25Nb2RlbCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpXZWJQbGF5YmFja1Nlc3Npb25J
bnRlcmZhY2VBVktpdDo6c2V0RHVyYXRpb24pOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6
V2ViUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlQVZLaXQ6OnNldEN1cnJlbnRUaW1lKTogRGVsZXRl
ZC4KKyAgICAgICAgKFdlYkNvcmU6OldlYlBsYXliYWNrU2Vzc2lvbkludGVyZmFjZUFWS2l0Ojpz
ZXRCdWZmZXJlZFRpbWUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6V2ViUGxheWJhY2tT
ZXNzaW9uSW50ZXJmYWNlQVZLaXQ6OnNldFJhdGUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29y
ZTo6V2ViUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlQVZLaXQ6OnNldFNlZWthYmxlUmFuZ2VzKTog
RGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OldlYlBsYXliYWNrU2Vzc2lvbkludGVyZmFjZUFW
S2l0OjpzZXRDYW5QbGF5RmFzdFJldmVyc2UpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6
V2ViUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlQVZLaXQ6OnNldEF1ZGlvTWVkaWFTZWxlY3Rpb25P
cHRpb25zKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OldlYlBsYXliYWNrU2Vzc2lvbklu
dGVyZmFjZUFWS2l0OjpzZXRMZWdpYmxlTWVkaWFTZWxlY3Rpb25PcHRpb25zKTogRGVsZXRlZC4K
KyAgICAgICAgKFdlYkNvcmU6OldlYlBsYXliYWNrU2Vzc2lvbkludGVyZmFjZUFWS2l0OjpzZXRF
eHRlcm5hbFBsYXliYWNrKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OldlYlBsYXliYWNr
U2Vzc2lvbkludGVyZmFjZUFWS2l0OjpzZXRXaXJlbGVzc1ZpZGVvUGxheWJhY2tEaXNhYmxlZCk6
IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpXZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2VB
VktpdDo6d2lyZWxlc3NWaWRlb1BsYXliYWNrRGlzYWJsZWQpOiBEZWxldGVkLgorICAgICAgICAq
IHBsYXRmb3JtL2lvcy9XZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyQVZLaXQubW06CisgICAg
ICAgIChXZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyQ29udGV4dDo6ZGlkU2V0dXBGdWxsc2Ny
ZWVuKToKKyAgICAgICAgKFdlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJDb250ZXh0OjpkaWRF
eGl0RnVsbHNjcmVlbik6CisgICAgICAgIChXZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyQ29u
dGV4dDo6ZGlkQ2xlYW51cEZ1bGxzY3JlZW4pOgorICAgICAgICAoV2ViVmlkZW9GdWxsc2NyZWVu
Q29udHJvbGxlckNvbnRleHQ6OmR1cmF0aW9uQ2hhbmdlZCk6CisgICAgICAgIChXZWJWaWRlb0Z1
bGxzY3JlZW5Db250cm9sbGVyQ29udGV4dDo6Y3VycmVudFRpbWVDaGFuZ2VkKToKKyAgICAgICAg
KFdlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJDb250ZXh0OjpidWZmZXJlZFRpbWVDaGFuZ2Vk
KToKKyAgICAgICAgKFdlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJDb250ZXh0OjpyYXRlQ2hh
bmdlZCk6CisgICAgICAgIChXZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyQ29udGV4dDo6aGFz
VmlkZW9DaGFuZ2VkKToKKyAgICAgICAgKFdlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJDb250
ZXh0Ojp2aWRlb0RpbWVuc2lvbnNDaGFuZ2VkKToKKyAgICAgICAgKFdlYlZpZGVvRnVsbHNjcmVl
bkNvbnRyb2xsZXJDb250ZXh0OjpzZWVrYWJsZVJhbmdlc0NoYW5nZWQpOgorICAgICAgICAoV2Vi
VmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlckNvbnRleHQ6OmNhblBsYXlGYXN0UmV2ZXJzZUNoYW5n
ZWQpOgorICAgICAgICAoV2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlckNvbnRleHQ6OmF1ZGlv
TWVkaWFTZWxlY3Rpb25PcHRpb25zQ2hhbmdlZCk6CisgICAgICAgIChXZWJWaWRlb0Z1bGxzY3Jl
ZW5Db250cm9sbGVyQ29udGV4dDo6bGVnaWJsZU1lZGlhU2VsZWN0aW9uT3B0aW9uc0NoYW5nZWQp
OgorICAgICAgICAoV2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlckNvbnRleHQ6OmV4dGVybmFs
UGxheWJhY2tDaGFuZ2VkKToKKyAgICAgICAgKFdlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJD
b250ZXh0Ojp3aXJlbGVzc1ZpZGVvUGxheWJhY2tEaXNhYmxlZENoYW5nZWQpOgorICAgICAgICAo
V2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlckNvbnRleHQ6OmFkZENsaWVudCk6CisgICAgICAg
IChXZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyQ29udGV4dDo6cmVtb3ZlQ2xpZW50KToKKyAg
ICAgICAgKFdlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJDb250ZXh0OjpyZXF1ZXN0RnVsbHNj
cmVlbk1vZGUpOgorICAgICAgICAoV2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlckNvbnRleHQ6
OnNldFZpZGVvTGF5ZXJGcmFtZSk6CisgICAgICAgIChXZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9s
bGVyQ29udGV4dDo6c2V0VmlkZW9MYXllckdyYXZpdHkpOgorICAgICAgICAoV2ViVmlkZW9GdWxs
c2NyZWVuQ29udHJvbGxlckNvbnRleHQ6OmZ1bGxzY3JlZW5Nb2RlQ2hhbmdlZCk6CisgICAgICAg
IChXZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyQ29udGV4dDo6aXNWaXNpYmxlKToKKyAgICAg
ICAgKFdlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJDb250ZXh0OjpoYXNWaWRlbyk6CisgICAg
ICAgIChXZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyQ29udGV4dDo6dmlkZW9EaW1lbnNpb25z
KToKKyAgICAgICAgKFdlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJDb250ZXh0OjpwbGF5KToK
KyAgICAgICAgKFdlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJDb250ZXh0OjpwYXVzZSk6Cisg
ICAgICAgIChXZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyQ29udGV4dDo6dG9nZ2xlUGxheVN0
YXRlKToKKyAgICAgICAgKFdlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJDb250ZXh0OjpiZWdp
blNjcnViYmluZyk6CisgICAgICAgIChXZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyQ29udGV4
dDo6ZW5kU2NydWJiaW5nKToKKyAgICAgICAgKFdlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJD
b250ZXh0OjpzZWVrVG9UaW1lKToKKyAgICAgICAgKFdlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xs
ZXJDb250ZXh0OjpmYXN0U2Vlayk6CisgICAgICAgIChXZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9s
bGVyQ29udGV4dDo6YmVnaW5TY2FubmluZ0ZvcndhcmQpOgorICAgICAgICAoV2ViVmlkZW9GdWxs
c2NyZWVuQ29udHJvbGxlckNvbnRleHQ6OmJlZ2luU2Nhbm5pbmdCYWNrd2FyZCk6CisgICAgICAg
IChXZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyQ29udGV4dDo6ZW5kU2Nhbm5pbmcpOgorICAg
ICAgICAoV2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlckNvbnRleHQ6OnNlbGVjdEF1ZGlvTWVk
aWFPcHRpb24pOgorICAgICAgICAoV2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlckNvbnRleHQ6
OnNlbGVjdExlZ2libGVNZWRpYU9wdGlvbik6CisgICAgICAgIChXZWJWaWRlb0Z1bGxzY3JlZW5D
b250cm9sbGVyQ29udGV4dDo6ZHVyYXRpb24pOgorICAgICAgICAoV2ViVmlkZW9GdWxsc2NyZWVu
Q29udHJvbGxlckNvbnRleHQ6OmN1cnJlbnRUaW1lKToKKyAgICAgICAgKFdlYlZpZGVvRnVsbHNj
cmVlbkNvbnRyb2xsZXJDb250ZXh0OjpidWZmZXJlZFRpbWUpOgorICAgICAgICAoV2ViVmlkZW9G
dWxsc2NyZWVuQ29udHJvbGxlckNvbnRleHQ6OmlzUGxheWluZyk6CisgICAgICAgIChXZWJWaWRl
b0Z1bGxzY3JlZW5Db250cm9sbGVyQ29udGV4dDo6cGxheWJhY2tSYXRlKToKKyAgICAgICAgKFdl
YlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJDb250ZXh0OjpzZWVrYWJsZVJhbmdlcyk6CisgICAg
ICAgIChXZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyQ29udGV4dDo6Y2FuUGxheUZhc3RSZXZl
cnNlKToKKyAgICAgICAgKFdlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJDb250ZXh0OjphdWRp
b01lZGlhU2VsZWN0aW9uT3B0aW9ucyk6CisgICAgICAgIChXZWJWaWRlb0Z1bGxzY3JlZW5Db250
cm9sbGVyQ29udGV4dDo6YXVkaW9NZWRpYVNlbGVjdGVkSW5kZXgpOgorICAgICAgICAoV2ViVmlk
ZW9GdWxsc2NyZWVuQ29udHJvbGxlckNvbnRleHQ6OmxlZ2libGVNZWRpYVNlbGVjdGlvbk9wdGlv
bnMpOgorICAgICAgICAoV2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlckNvbnRleHQ6OmxlZ2li
bGVNZWRpYVNlbGVjdGVkSW5kZXgpOgorICAgICAgICAoV2ViVmlkZW9GdWxsc2NyZWVuQ29udHJv
bGxlckNvbnRleHQ6OmV4dGVybmFsUGxheWJhY2tFbmFibGVkKToKKyAgICAgICAgKFdlYlZpZGVv
RnVsbHNjcmVlbkNvbnRyb2xsZXJDb250ZXh0OjpleHRlcm5hbFBsYXliYWNrVGFyZ2V0VHlwZSk6
CisgICAgICAgIChXZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyQ29udGV4dDo6ZXh0ZXJuYWxQ
bGF5YmFja0xvY2FsaXplZERldmljZU5hbWUpOgorICAgICAgICAoV2ViVmlkZW9GdWxsc2NyZWVu
Q29udHJvbGxlckNvbnRleHQ6OndpcmVsZXNzVmlkZW9QbGF5YmFja0Rpc2FibGVkKToKKyAgICAg
ICAgKFdlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJDb250ZXh0OjpzZXRVcEZ1bGxzY3JlZW4p
OgorICAgICAgICAoV2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlckNvbnRleHQ6OmV4aXRGdWxs
c2NyZWVuKToKKyAgICAgICAgKFdlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJDb250ZXh0Ojpy
ZXF1ZXN0SGlkZUFuZEV4aXRGdWxsc2NyZWVuKToKKyAgICAgICAgKFdlYlZpZGVvRnVsbHNjcmVl
bkNvbnRyb2xsZXJDb250ZXh0OjpyZXNldE1lZGlhU3RhdGUpOiBEZWxldGVkLgorICAgICAgICAo
V2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlckNvbnRleHQ6OnNldER1cmF0aW9uKTogRGVsZXRl
ZC4KKyAgICAgICAgKFdlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJDb250ZXh0OjpzZXRDdXJy
ZW50VGltZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVy
Q29udGV4dDo6c2V0QnVmZmVyZWRUaW1lKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYlZpZGVvRnVs
bHNjcmVlbkNvbnRyb2xsZXJDb250ZXh0OjpzZXRSYXRlKTogRGVsZXRlZC4KKyAgICAgICAgKFdl
YlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJDb250ZXh0OjpzZXRWaWRlb0RpbWVuc2lvbnMpOiBE
ZWxldGVkLgorICAgICAgICAoV2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlckNvbnRleHQ6OnNl
dFNlZWthYmxlUmFuZ2VzKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYlZpZGVvRnVsbHNjcmVlbkNv
bnRyb2xsZXJDb250ZXh0OjpzZXRDYW5QbGF5RmFzdFJldmVyc2UpOiBEZWxldGVkLgorICAgICAg
ICAoV2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlckNvbnRleHQ6OnNldEF1ZGlvTWVkaWFTZWxl
Y3Rpb25PcHRpb25zKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYlZpZGVvRnVsbHNjcmVlbkNvbnRy
b2xsZXJDb250ZXh0OjpzZXRMZWdpYmxlTWVkaWFTZWxlY3Rpb25PcHRpb25zKTogRGVsZXRlZC4K
KyAgICAgICAgKFdlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJDb250ZXh0OjpzZXRFeHRlcm5h
bFBsYXliYWNrKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xs
ZXJDb250ZXh0OjpzZXRXaXJlbGVzc1ZpZGVvUGxheWJhY2tEaXNhYmxlZCk6IERlbGV0ZWQuCisg
ICAgICAgIChXZWJWaWRlb0Z1bGxzY3JlZW5TZXNzaW9uTW9kZWw6OnBsYXkpOiBEZWxldGVkLgor
ICAgICAgICAoV2ViVmlkZW9GdWxsc2NyZWVuU2Vzc2lvbk1vZGVsOjpwYXVzZSk6IERlbGV0ZWQu
CisgICAgICAgIChXZWJWaWRlb0Z1bGxzY3JlZW5TZXNzaW9uTW9kZWw6OnRvZ2dsZVBsYXlTdGF0
ZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJWaWRlb0Z1bGxzY3JlZW5TZXNzaW9uTW9kZWw6OmJl
Z2luU2NydWJiaW5nKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYlZpZGVvRnVsbHNjcmVlblNlc3Np
b25Nb2RlbDo6ZW5kU2NydWJiaW5nKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYlZpZGVvRnVsbHNj
cmVlblNlc3Npb25Nb2RlbDo6c2Vla1RvVGltZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJWaWRl
b0Z1bGxzY3JlZW5TZXNzaW9uTW9kZWw6OmZhc3RTZWVrKTogRGVsZXRlZC4KKyAgICAgICAgKFdl
YlZpZGVvRnVsbHNjcmVlblNlc3Npb25Nb2RlbDo6YmVnaW5TY2FubmluZ0ZvcndhcmQpOiBEZWxl
dGVkLgorICAgICAgICAoV2ViVmlkZW9GdWxsc2NyZWVuU2Vzc2lvbk1vZGVsOjpiZWdpblNjYW5u
aW5nQmFja3dhcmQpOiBEZWxldGVkLgorICAgICAgICAoV2ViVmlkZW9GdWxsc2NyZWVuU2Vzc2lv
bk1vZGVsOjplbmRTY2FubmluZyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJWaWRlb0Z1bGxzY3Jl
ZW5TZXNzaW9uTW9kZWw6OnNlbGVjdEF1ZGlvTWVkaWFPcHRpb24pOiBEZWxldGVkLgorICAgICAg
ICAoV2ViVmlkZW9GdWxsc2NyZWVuU2Vzc2lvbk1vZGVsOjpzZWxlY3RMZWdpYmxlTWVkaWFPcHRp
b24pOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL2lvcy9XZWJWaWRlb0Z1bGxzY3JlZW5J
bnRlcmZhY2VBVktpdC5oOgorICAgICAgICAqIHBsYXRmb3JtL2lvcy9XZWJWaWRlb0Z1bGxzY3Jl
ZW5JbnRlcmZhY2VBVktpdC5tbToKKyAgICAgICAgKFdlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFj
ZUFWS2l0Ojp+V2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQpOgorICAgICAgICAoV2Vi
VmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQ6OnNldFdlYlZpZGVvRnVsbHNjcmVlbk1vZGVs
KToKKyAgICAgICAgKFdlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0OjpzZXRXZWJWaWRl
b0Z1bGxzY3JlZW5DaGFuZ2VPYnNlcnZlcik6CisgICAgICAgIChXZWJWaWRlb0Z1bGxzY3JlZW5J
bnRlcmZhY2VBVktpdDo6aGFzVmlkZW9DaGFuZ2VkKToKKyAgICAgICAgKFdlYlZpZGVvRnVsbHNj
cmVlbkludGVyZmFjZUFWS2l0Ojp2aWRlb0RpbWVuc2lvbnNDaGFuZ2VkKToKKyAgICAgICAgKFdl
YlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0OjpleHRlcm5hbFBsYXliYWNrQ2hhbmdlZCk6
CisgICAgICAgIChXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdDo6cmVzZXRNZWRpYVN0
YXRlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0
OjpzZXREdXJhdGlvbik6IERlbGV0ZWQuCisgICAgICAgIChXZWJWaWRlb0Z1bGxzY3JlZW5JbnRl
cmZhY2VBVktpdDo6c2V0Q3VycmVudFRpbWUpOiBEZWxldGVkLgorICAgICAgICAoV2ViVmlkZW9G
dWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQ6OnNldEJ1ZmZlcmVkVGltZSk6IERlbGV0ZWQuCisgICAg
ICAgIChXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdDo6c2V0UmF0ZSk6IERlbGV0ZWQu
CisgICAgICAgIChXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdDo6c2V0VmlkZW9EaW1l
bnNpb25zKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFW
S2l0OjpzZXRTZWVrYWJsZVJhbmdlcyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJWaWRlb0Z1bGxz
Y3JlZW5JbnRlcmZhY2VBVktpdDo6c2V0Q2FuUGxheUZhc3RSZXZlcnNlKTogRGVsZXRlZC4KKyAg
ICAgICAgKFdlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0OjpzZXRBdWRpb01lZGlhU2Vs
ZWN0aW9uT3B0aW9ucyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJWaWRlb0Z1bGxzY3JlZW5JbnRl
cmZhY2VBVktpdDo6c2V0TGVnaWJsZU1lZGlhU2VsZWN0aW9uT3B0aW9ucyk6IERlbGV0ZWQuCisg
ICAgICAgIChXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdDo6c2V0RXh0ZXJuYWxQbGF5
YmFjayk6IERlbGV0ZWQuCisgICAgICAgIChXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktp
dDo6ZXh0ZXJuYWxQbGF5YmFja0VuYWJsZWRDaGFuZ2VkKTogRGVsZXRlZC4KKyAgICAgICAgKFdl
YlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0OjpzZXRXaXJlbGVzc1ZpZGVvUGxheWJhY2tE
aXNhYmxlZCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VB
VktpdDo6d2lyZWxlc3NWaWRlb1BsYXliYWNrRGlzYWJsZWQpOiBEZWxldGVkLgorICAgICAgICAq
IHBsYXRmb3JtL21hYy9XZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2VNYWMuaDoKKyAgICAgICAg
KFdlYkNvcmU6OldlYlBsYXliYWNrU2Vzc2lvbkludGVyZmFjZU1hY0NsaWVudDo6fldlYlBsYXli
YWNrU2Vzc2lvbkludGVyZmFjZU1hY0NsaWVudCk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZv
cm0vbWFjL1dlYlBsYXliYWNrU2Vzc2lvbkludGVyZmFjZU1hYy5tbToKKyAgICAgICAgKFdlYkNv
cmU6OldlYlBsYXliYWNrU2Vzc2lvbkludGVyZmFjZU1hYzo6Y3JlYXRlKToKKyAgICAgICAgKFdl
YkNvcmU6OldlYlBsYXliYWNrU2Vzc2lvbkludGVyZmFjZU1hYzo6V2ViUGxheWJhY2tTZXNzaW9u
SW50ZXJmYWNlTWFjKToKKyAgICAgICAgKFdlYkNvcmU6OldlYlBsYXliYWNrU2Vzc2lvbkludGVy
ZmFjZU1hYzo6fldlYlBsYXliYWNrU2Vzc2lvbkludGVyZmFjZU1hYyk6CisgICAgICAgIChXZWJD
b3JlOjpXZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2VNYWM6OmR1cmF0aW9uQ2hhbmdlZCk6Cisg
ICAgICAgIChXZWJDb3JlOjpXZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2VNYWM6OmN1cnJlbnRU
aW1lQ2hhbmdlZCk6CisgICAgICAgIChXZWJDb3JlOjpXZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZh
Y2VNYWM6OnJhdGVDaGFuZ2VkKToKKyAgICAgICAgKFdlYkNvcmU6OldlYlBsYXliYWNrU2Vzc2lv
bkludGVyZmFjZU1hYzo6c2Vla2FibGVSYW5nZXNDaGFuZ2VkKToKKyAgICAgICAgKFdlYkNvcmU6
OldlYlBsYXliYWNrU2Vzc2lvbkludGVyZmFjZU1hYzo6YXVkaW9NZWRpYVNlbGVjdGlvbk9wdGlv
bnNDaGFuZ2VkKToKKyAgICAgICAgKFdlYkNvcmU6OldlYlBsYXliYWNrU2Vzc2lvbkludGVyZmFj
ZU1hYzo6bGVnaWJsZU1lZGlhU2VsZWN0aW9uT3B0aW9uc0NoYW5nZWQpOgorICAgICAgICAoV2Vi
Q29yZTo6V2ViUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlTWFjOjppbnZhbGlkYXRlKToKKyAgICAg
ICAgKFdlYkNvcmU6OldlYlBsYXliYWNrU2Vzc2lvbkludGVyZmFjZU1hYzo6c2V0V2ViUGxheWJh
Y2tTZXNzaW9uTW9kZWwpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6V2ViUGxheWJhY2tT
ZXNzaW9uSW50ZXJmYWNlTWFjOjpzZXRDbGllbnQpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29y
ZTo6V2ViUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlTWFjOjpzZXREdXJhdGlvbik6IERlbGV0ZWQu
CisgICAgICAgIChXZWJDb3JlOjpXZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2VNYWM6OnNldEN1
cnJlbnRUaW1lKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OldlYlBsYXliYWNrU2Vzc2lv
bkludGVyZmFjZU1hYzo6c2V0UmF0ZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpXZWJQ
bGF5YmFja1Nlc3Npb25JbnRlcmZhY2VNYWM6OnNldFNlZWthYmxlUmFuZ2VzKTogRGVsZXRlZC4K
KyAgICAgICAgKFdlYkNvcmU6OldlYlBsYXliYWNrU2Vzc2lvbkludGVyZmFjZU1hYzo6c2V0QXVk
aW9NZWRpYVNlbGVjdGlvbk9wdGlvbnMpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6V2Vi
UGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlTWFjOjpzZXRMZWdpYmxlTWVkaWFTZWxlY3Rpb25PcHRp
b25zKTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvV2ViVmlkZW9GdWxsc2NyZWVu
SW50ZXJmYWNlTWFjLmg6CisgICAgICAgICogcGxhdGZvcm0vbWFjL1dlYlZpZGVvRnVsbHNjcmVl
bkludGVyZmFjZU1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6OldlYlZpZGVvRnVsbHNjcmVlbklu
dGVyZmFjZU1hYzo6V2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlTWFjKToKKyAgICAgICAgKFdl
YkNvcmU6OldlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZU1hYzo6fldlYlZpZGVvRnVsbHNjcmVl
bkludGVyZmFjZU1hYyk6CisgICAgICAgIChXZWJDb3JlOjpXZWJWaWRlb0Z1bGxzY3JlZW5JbnRl
cmZhY2VNYWM6OnNldFdlYlZpZGVvRnVsbHNjcmVlbk1vZGVsKToKKyAgICAgICAgKFdlYkNvcmU6
OldlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZU1hYzo6ZXh0ZXJuYWxQbGF5YmFja0NoYW5nZWQp
OgorICAgICAgICAoV2ViQ29yZTo6V2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlTWFjOjpoYXNW
aWRlb0NoYW5nZWQpOgorICAgICAgICAoV2ViQ29yZTo6V2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJm
YWNlTWFjOjp2aWRlb0RpbWVuc2lvbnNDaGFuZ2VkKToKKyAgICAgICAgKFdlYkNvcmU6OldlYlZp
ZGVvRnVsbHNjcmVlbkludGVyZmFjZU1hYzo6c2V0RHVyYXRpb24pOiBEZWxldGVkLgorICAgICAg
ICAoV2ViQ29yZTo6V2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlTWFjOjpzZXRDdXJyZW50VGlt
ZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZh
Y2VNYWM6OnNldFJhdGUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6V2ViVmlkZW9GdWxs
c2NyZWVuSW50ZXJmYWNlTWFjOjpzZXRTZWVrYWJsZVJhbmdlcyk6IERlbGV0ZWQuCisgICAgICAg
IChXZWJDb3JlOjpXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VNYWM6OnNldEF1ZGlvTWVkaWFT
ZWxlY3Rpb25PcHRpb25zKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OldlYlZpZGVvRnVs
bHNjcmVlbkludGVyZmFjZU1hYzo6c2V0TGVnaWJsZU1lZGlhU2VsZWN0aW9uT3B0aW9ucyk6IERl
bGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VNYWM6
OnNldEV4dGVybmFsUGxheWJhY2spOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6V2ViVmlk
ZW9GdWxsc2NyZWVuSW50ZXJmYWNlTWFjOjpzZXRWaWRlb0RpbWVuc2lvbnMpOiBEZWxldGVkLgor
CiAyMDE2LTA5LTAyICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAgICAg
QWxpZ24gcHJvdG8gZ2V0dGVyIC8gc2V0dGVyIGJlaGF2aW9yIHdpdGggb3RoZXIgYnJvd3NlcnMK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQv
bWFjL0NoYW5nZUxvZwppbmRleCA3ZWRiZjIxNTJkZWFlNTVjZWI1Zjg0ODljMmJkZWVkMDQ1N2U3
OTIzLi5mY2M4YjhmMDFhZmFkN2ZkNjcyZmEwYTdlNTI0NzI3MzhkOWI4MDU3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9tYWMvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMTYtMDctMDggIEplciBOb2JsZSAgPGplci5ub2Js
ZUBhcHBsZS5jb20+CisKKyAgICAgICAgUmVmYWN0b3IgV2ViUGxheWJhY2tTZXNzaW9uTW9kZWxN
ZWRpYUVsZW1lbnQgdG8gYmUgY2xpZW50IGJhc2VkLgorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU5NTgwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRXJp
YyBDYXJsc29uLgorCisgICAgICAgIE5vIGxvbmdlciBuZWNlc3NhcnkgdG8gdGVsbCB0aGUgbW9k
ZWxzIGFuZCBpbnRlcmZhY2VzIGFib3V0IGVhY2ggb3RoZXIuCisKKyAgICAgICAgKiBXZWJWaWV3
L1dlYlZpZXcubW06CisgICAgICAgICgtW1dlYlZpZXcgX3NldFVwUGxheWJhY2tDb250cm9sc01h
bmFnZXJGb3JNZWRpYUVsZW1lbnQ6XSk6CisgICAgICAgICgtW1dlYlZpZXcgX2NsZWFyUGxheWJh
Y2tDb250cm9sc01hbmFnZXJdKToKKwogMjAxNi0wOS0wMSAgRGFuIEJlcm5zdGVpbiAgPG1pdHpA
YXBwbGUuY29tPgogCiAgICAgICAgIEJ1aWxkIGZpeC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwppbmRleCA0NzA5NTM2NTA2
MTQ4MzVkOWQ2YjkwMDQ1ZmNhZDM4ZWIxMTJhZTdhLi5lMjlhYjk0NzZmNzJlOWFjYmEwZmFlMTc0
NjAxMTRhNGJjYmJhN2Y3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysr
IGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTE4IEBACisyMDE2LTA3LTA4
ICBKZXIgTm9ibGUgIDxqZXIubm9ibGVAYXBwbGUuY29tPgorCisgICAgICAgIFJlZmFjdG9yIFdl
YlBsYXliYWNrU2Vzc2lvbk1vZGVsTWVkaWFFbGVtZW50IHRvIGJlIGNsaWVudCBiYXNlZC4KKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1OTU4MAorCisg
ICAgICAgIFJldmlld2VkIGJ5IEVyaWMgQ2FybHNvbi4KKworICAgICAgICBBZG9wdCB0aGUgY2hh
bmdlcyBtYWRlIGluIHRoZSBXZWJQbGF5YmFja1Nlc3Npb25Nb2RlbCxJbnRlcmZhY2UgYW5kIFdl
YlZpZGVvRnVsbHNjcmVlbk1vZGVsLEludGVyZmFjZQorICAgICAgICBpbiB0aGUgV2ViUGxheWJh
Y2tTZXNzaW9uTWFuYWdlcixQcm94eSBjbGFzc2VzLgorCisgICAgICAgICogVUlQcm9jZXNzL0FQ
SS9Db2NvYS9XS1dlYlZpZXcubW06CisgICAgICAgICgtW1dLV2ViVmlldyBfaW5pdGlhbGl6ZVdp
dGhDb25maWd1cmF0aW9uOl0pOiBEZWxldGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9X
ZWJQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHkuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29j
b2EvV2ViUGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5Lm1tOgorICAgICAgICAoV2ViS2l0OjpX
ZWJQbGF5YmFja1Nlc3Npb25Nb2RlbENvbnRleHQ6OmFkZENsaWVudCk6CisgICAgICAgIChXZWJL
aXQ6OldlYlBsYXliYWNrU2Vzc2lvbk1vZGVsQ29udGV4dDo6cmVtb3ZlQ2xpZW50KToKKyAgICAg
ICAgKFdlYktpdDo6V2ViUGxheWJhY2tTZXNzaW9uTW9kZWxDb250ZXh0OjpzZXREdXJhdGlvbik6
CisgICAgICAgIChXZWJLaXQ6OldlYlBsYXliYWNrU2Vzc2lvbk1vZGVsQ29udGV4dDo6c2V0Q3Vy
cmVudFRpbWUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQbGF5YmFja1Nlc3Npb25Nb2RlbENvbnRl
eHQ6OnNldEJ1ZmZlcmVkVGltZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBsYXliYWNrU2Vzc2lv
bk1vZGVsQ29udGV4dDo6c2V0UmF0ZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBsYXliYWNrU2Vz
c2lvbk1vZGVsQ29udGV4dDo6c2V0U2Vla2FibGVSYW5nZXMpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJQbGF5YmFja1Nlc3Npb25Nb2RlbENvbnRleHQ6OnNldENhblBsYXlGYXN0UmV2ZXJzZSk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlBsYXliYWNrU2Vzc2lvbk1vZGVsQ29udGV4dDo6c2V0QXVkaW9N
ZWRpYVNlbGVjdGlvbk9wdGlvbnMpOgorICAgICAgICAoV2ViS2l0OjpXZWJQbGF5YmFja1Nlc3Np
b25Nb2RlbENvbnRleHQ6OnNldExlZ2libGVNZWRpYVNlbGVjdGlvbk9wdGlvbnMpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJQbGF5YmFja1Nlc3Npb25Nb2RlbENvbnRleHQ6OnNldEV4dGVybmFsUGxh
eWJhY2spOgorICAgICAgICAoV2ViS2l0OjpXZWJQbGF5YmFja1Nlc3Npb25Nb2RlbENvbnRleHQ6
OnNldFdpcmVsZXNzVmlkZW9QbGF5YmFja0Rpc2FibGVkKToKKyAgICAgICAgKFdlYktpdDo6V2Vi
UGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5OjpjcmVhdGVNb2RlbEFuZEludGVyZmFjZSk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eTo6cmVtb3ZlQ2xp
ZW50Rm9yQ29udGV4dCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBsYXliYWNrU2Vzc2lvbk1hbmFn
ZXJQcm94eTo6c2V0Q3VycmVudFRpbWUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQbGF5YmFja1Nl
c3Npb25NYW5hZ2VyUHJveHk6OnNldEJ1ZmZlcmVkVGltZSk6CisgICAgICAgIChXZWJLaXQ6Oldl
YlBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eTo6c2V0U2Vla2FibGVSYW5nZXNWZWN0b3IpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHk6OnNldENhblBs
YXlGYXN0UmV2ZXJzZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBsYXliYWNrU2Vzc2lvbk1hbmFn
ZXJQcm94eTo6c2V0QXVkaW9NZWRpYVNlbGVjdGlvbk9wdGlvbnMpOgorICAgICAgICAoV2ViS2l0
OjpXZWJQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHk6OnNldExlZ2libGVNZWRpYVNlbGVjdGlv
bk9wdGlvbnMpOgorICAgICAgICAoV2ViS2l0OjpXZWJQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJv
eHk6OnNldEV4dGVybmFsUGxheWJhY2tQcm9wZXJ0aWVzKToKKyAgICAgICAgKFdlYktpdDo6V2Vi
UGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5OjpzZXRXaXJlbGVzc1ZpZGVvUGxheWJhY2tEaXNh
YmxlZCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eTo6
c2V0RHVyYXRpb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJQbGF5YmFja1Nlc3Npb25NYW5hZ2Vy
UHJveHk6OnNldFJhdGUpOgorICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9XZWJWaWRlb0Z1bGxz
Y3JlZW5NYW5hZ2VyUHJveHkuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvV2ViVmlkZW9G
dWxsc2NyZWVuTWFuYWdlclByb3h5Lm1lc3NhZ2VzLmluOgorICAgICAgICAqIFVJUHJvY2Vzcy9D
b2NvYS9XZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHkubW06CisgICAgICAgIChXZWJLaXQ6
OldlYlZpZGVvRnVsbHNjcmVlbk1vZGVsQ29udGV4dDo6YWRkQ2xpZW50KToKKyAgICAgICAgKFdl
YktpdDo6V2ViVmlkZW9GdWxsc2NyZWVuTW9kZWxDb250ZXh0OjpyZW1vdmVDbGllbnQpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHk6OnNldEhhc1ZpZGVv
KToKKyAgICAgICAgKFdlYktpdDo6V2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5OjpzZXRW
aWRlb0RpbWVuc2lvbnMpOgorICAgICAgICAqIFdlYlByb2Nlc3MvY29jb2EvV2ViUGxheWJhY2tT
ZXNzaW9uTWFuYWdlci5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvY29jb2EvV2ViUGxheWJhY2tT
ZXNzaW9uTWFuYWdlci5tbToKKyAgICAgICAgKFdlYktpdDo6V2ViUGxheWJhY2tTZXNzaW9uSW50
ZXJmYWNlQ29udGV4dDo6ZHVyYXRpb25DaGFuZ2VkKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGxh
eWJhY2tTZXNzaW9uSW50ZXJmYWNlQ29udGV4dDo6Y3VycmVudFRpbWVDaGFuZ2VkKToKKyAgICAg
ICAgKFdlYktpdDo6V2ViUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlQ29udGV4dDo6YnVmZmVyZWRU
aW1lQ2hhbmdlZCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBsYXliYWNrU2Vzc2lvbkludGVyZmFj
ZUNvbnRleHQ6OnJhdGVDaGFuZ2VkKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGxheWJhY2tTZXNz
aW9uSW50ZXJmYWNlQ29udGV4dDo6c2Vla2FibGVSYW5nZXNDaGFuZ2VkKToKKyAgICAgICAgKFdl
YktpdDo6V2ViUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlQ29udGV4dDo6Y2FuUGxheUZhc3RSZXZl
cnNlQ2hhbmdlZCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBsYXliYWNrU2Vzc2lvbkludGVyZmFj
ZUNvbnRleHQ6OmF1ZGlvTWVkaWFTZWxlY3Rpb25PcHRpb25zQ2hhbmdlZCk6CisgICAgICAgIChX
ZWJLaXQ6OldlYlBsYXliYWNrU2Vzc2lvbkludGVyZmFjZUNvbnRleHQ6OmxlZ2libGVNZWRpYVNl
bGVjdGlvbk9wdGlvbnNDaGFuZ2VkKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGxheWJhY2tTZXNz
aW9uSW50ZXJmYWNlQ29udGV4dDo6ZXh0ZXJuYWxQbGF5YmFja0NoYW5nZWQpOgorICAgICAgICAo
V2ViS2l0OjpXZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2VDb250ZXh0Ojp3aXJlbGVzc1ZpZGVv
UGxheWJhY2tEaXNhYmxlZENoYW5nZWQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQbGF5YmFja1Nl
c3Npb25NYW5hZ2VyOjp+V2ViUGxheWJhY2tTZXNzaW9uTWFuYWdlcik6CisgICAgICAgIChXZWJL
aXQ6OldlYlBsYXliYWNrU2Vzc2lvbk1hbmFnZXI6OmNyZWF0ZU1vZGVsQW5kSW50ZXJmYWNlKToK
KyAgICAgICAgKFdlYktpdDo6V2ViUGxheWJhY2tTZXNzaW9uTWFuYWdlcjo6cmVtb3ZlQ29udGV4
dCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBsYXliYWNrU2Vzc2lvbk1hbmFnZXI6OmR1cmF0aW9u
Q2hhbmdlZCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBsYXliYWNrU2Vzc2lvbk1hbmFnZXI6OmN1
cnJlbnRUaW1lQ2hhbmdlZCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBsYXliYWNrU2Vzc2lvbk1h
bmFnZXI6OmJ1ZmZlcmVkVGltZUNoYW5nZWQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQbGF5YmFj
a1Nlc3Npb25NYW5hZ2VyOjpyYXRlQ2hhbmdlZCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBsYXli
YWNrU2Vzc2lvbk1hbmFnZXI6OnNlZWthYmxlUmFuZ2VzQ2hhbmdlZCk6CisgICAgICAgIChXZWJL
aXQ6OldlYlBsYXliYWNrU2Vzc2lvbk1hbmFnZXI6OmNhblBsYXlGYXN0UmV2ZXJzZUNoYW5nZWQp
OgorICAgICAgICAoV2ViS2l0OjpXZWJQbGF5YmFja1Nlc3Npb25NYW5hZ2VyOjphdWRpb01lZGlh
U2VsZWN0aW9uT3B0aW9uc0NoYW5nZWQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQbGF5YmFja1Nl
c3Npb25NYW5hZ2VyOjpsZWdpYmxlTWVkaWFTZWxlY3Rpb25PcHRpb25zQ2hhbmdlZCk6CisgICAg
ICAgIChXZWJLaXQ6OldlYlBsYXliYWNrU2Vzc2lvbk1hbmFnZXI6OmV4dGVybmFsUGxheWJhY2tD
aGFuZ2VkKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGxheWJhY2tTZXNzaW9uTWFuYWdlcjo6d2ly
ZWxlc3NWaWRlb1BsYXliYWNrRGlzYWJsZWRDaGFuZ2VkKToKKyAgICAgICAgKFdlYktpdDo6V2Vi
UGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlQ29udGV4dDo6c2V0RHVyYXRpb24pOiBEZWxldGVkLgor
ICAgICAgICAoV2ViS2l0OjpXZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2VDb250ZXh0OjpzZXRD
dXJyZW50VGltZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OldlYlBsYXliYWNrU2Vzc2lv
bkludGVyZmFjZUNvbnRleHQ6OnNldEJ1ZmZlcmVkVGltZSk6IERlbGV0ZWQuCisgICAgICAgIChX
ZWJLaXQ6OldlYlBsYXliYWNrU2Vzc2lvbkludGVyZmFjZUNvbnRleHQ6OnNldFJhdGUpOiBEZWxl
dGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2VDb250ZXh0
OjpzZXRTZWVrYWJsZVJhbmdlcyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OldlYlBsYXli
YWNrU2Vzc2lvbkludGVyZmFjZUNvbnRleHQ6OnNldENhblBsYXlGYXN0UmV2ZXJzZSk6IERlbGV0
ZWQuCisgICAgICAgIChXZWJLaXQ6OldlYlBsYXliYWNrU2Vzc2lvbkludGVyZmFjZUNvbnRleHQ6
OnNldEF1ZGlvTWVkaWFTZWxlY3Rpb25PcHRpb25zKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktp
dDo6V2ViUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlQ29udGV4dDo6c2V0TGVnaWJsZU1lZGlhU2Vs
ZWN0aW9uT3B0aW9ucyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OldlYlBsYXliYWNrU2Vz
c2lvbkludGVyZmFjZUNvbnRleHQ6OnNldEV4dGVybmFsUGxheWJhY2spOiBEZWxldGVkLgorICAg
ICAgICAoV2ViS2l0OjpXZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2VDb250ZXh0OjpzZXRXaXJl
bGVzc1ZpZGVvUGxheWJhY2tEaXNhYmxlZCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6Oldl
YlBsYXliYWNrU2Vzc2lvbk1hbmFnZXI6OnNldER1cmF0aW9uKTogRGVsZXRlZC4KKyAgICAgICAg
KFdlYktpdDo6V2ViUGxheWJhY2tTZXNzaW9uTWFuYWdlcjo6c2V0Q3VycmVudFRpbWUpOiBEZWxl
dGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJQbGF5YmFja1Nlc3Npb25NYW5hZ2VyOjpzZXRCdWZm
ZXJlZFRpbWUpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJQbGF5YmFja1Nlc3Npb25N
YW5hZ2VyOjpzZXRSYXRlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViUGxheWJhY2tT
ZXNzaW9uTWFuYWdlcjo6c2V0U2Vla2FibGVSYW5nZXMpOiBEZWxldGVkLgorICAgICAgICAoV2Vi
S2l0OjpXZWJQbGF5YmFja1Nlc3Npb25NYW5hZ2VyOjpzZXRDYW5QbGF5RmFzdFJldmVyc2UpOiBE
ZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJQbGF5YmFja1Nlc3Npb25NYW5hZ2VyOjpzZXRB
dWRpb01lZGlhU2VsZWN0aW9uT3B0aW9ucyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6Oldl
YlBsYXliYWNrU2Vzc2lvbk1hbmFnZXI6OnNldExlZ2libGVNZWRpYVNlbGVjdGlvbk9wdGlvbnMp
OiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJQbGF5YmFja1Nlc3Npb25NYW5hZ2VyOjpz
ZXRFeHRlcm5hbFBsYXliYWNrKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViUGxheWJh
Y2tTZXNzaW9uTWFuYWdlcjo6c2V0V2lyZWxlc3NWaWRlb1BsYXliYWNrRGlzYWJsZWQpOiBEZWxl
dGVkLgorICAgICAgICAqIFdlYlByb2Nlc3MvY29jb2EvV2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdl
ci5oOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VDb250ZXh0
OjpjcmVhdGUpOgorICAgICAgICAqIFdlYlByb2Nlc3MvY29jb2EvV2ViVmlkZW9GdWxsc2NyZWVu
TWFuYWdlci5tbToKKyAgICAgICAgKFdlYktpdDo6V2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNl
Q29udGV4dDo6V2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQ29udGV4dCk6CisgICAgICAgIChX
ZWJLaXQ6OldlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUNvbnRleHQ6Omhhc1ZpZGVvQ2hhbmdl
ZCk6CisgICAgICAgIChXZWJLaXQ6OldlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUNvbnRleHQ6
OnZpZGVvRGltZW5zaW9uc0NoYW5nZWQpOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWRlb0Z1bGxz
Y3JlZW5NYW5hZ2VyOjp+V2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlcik6CisgICAgICAgIChXZWJL
aXQ6OldlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6OmNyZWF0ZU1vZGVsQW5kSW50ZXJmYWNlKToK
KyAgICAgICAgKFdlYktpdDo6V2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6cmVtb3ZlQ29udGV4
dCk6CisgICAgICAgIChXZWJLaXQ6OldlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6Omhhc1ZpZGVv
Q2hhbmdlZCk6CisgICAgICAgIChXZWJLaXQ6OldlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6OnZp
ZGVvRGltZW5zaW9uc0NoYW5nZWQpOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWRlb0Z1bGxzY3Jl
ZW5JbnRlcmZhY2VDb250ZXh0OjpyZXNldE1lZGlhU3RhdGUpOiBEZWxldGVkLgorICAgICAgICAo
V2ViS2l0OjpXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VDb250ZXh0OjpzZXREdXJhdGlvbik6
IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OldlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUNv
bnRleHQ6OnNldEN1cnJlbnRUaW1lKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViVmlk
ZW9GdWxsc2NyZWVuSW50ZXJmYWNlQ29udGV4dDo6c2V0QnVmZmVyZWRUaW1lKTogRGVsZXRlZC4K
KyAgICAgICAgKFdlYktpdDo6V2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQ29udGV4dDo6c2V0
UmF0ZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OldlYlZpZGVvRnVsbHNjcmVlbkludGVy
ZmFjZUNvbnRleHQ6OnNldFZpZGVvRGltZW5zaW9ucyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJL
aXQ6OldlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUNvbnRleHQ6OnNldFNlZWthYmxlUmFuZ2Vz
KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNl
Q29udGV4dDo6c2V0Q2FuUGxheUZhc3RSZXZlcnNlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktp
dDo6V2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQ29udGV4dDo6c2V0QXVkaW9NZWRpYVNlbGVj
dGlvbk9wdGlvbnMpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJWaWRlb0Z1bGxzY3Jl
ZW5JbnRlcmZhY2VDb250ZXh0OjpzZXRMZWdpYmxlTWVkaWFTZWxlY3Rpb25PcHRpb25zKTogRGVs
ZXRlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQ29udGV4
dDo6c2V0RXh0ZXJuYWxQbGF5YmFjayk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OldlYlZp
ZGVvRnVsbHNjcmVlbkludGVyZmFjZUNvbnRleHQ6OnNldFdpcmVsZXNzVmlkZW9QbGF5YmFja0Rp
c2FibGVkKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViVmlkZW9GdWxsc2NyZWVuTWFu
YWdlcjo6c2V0VmlkZW9EaW1lbnNpb25zKTogRGVsZXRlZC4KKwogMjAxNi0wOS0wMiAgWmFuIERv
YmVyc2VrICA8emRvYmVyc2VrQGlnYWxpYS5jb20+CiAKICAgICAgICAgRml4IEdPYmplY3QgYmlu
ZGluZ3MgYnVpbGQgYnJlYWthZ2Ugd2hlbiBjb21waWxpbmcgd2l0aCBFTkFCTEVfVVNFUl9USU1J
TkcgZGlzYWJsZWQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9X
ZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nv
Y29hL1dlYlBsYXliYWNrU2Vzc2lvbkludGVyZmFjZS5oCmluZGV4IDhmZmEwY2FkZDA4NjljZjE0
ZWM0MDIyYjViMDJjYTBkYmRmOGY4OWEuLmM1OWI4Yzg2NDZiYjhlZDQxZWU3MjAzNzczY2RkOTkw
OGNhZmY5ZTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1dlYlBs
YXliYWNrU2Vzc2lvbkludGVyZmFjZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nv
Y29hL1dlYlBsYXliYWNrU2Vzc2lvbkludGVyZmFjZS5oCkBAIC00MCwyMCArNDAsOCBAQCBjbGFz
cyBUaW1lUmFuZ2VzOwogCiBjbGFzcyBXZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2UgewogcHVi
bGljOgotICAgIGVudW0gRXh0ZXJuYWxQbGF5YmFja1RhcmdldFR5cGUgeyBUYXJnZXRUeXBlTm9u
ZSwgVGFyZ2V0VHlwZUFpclBsYXksIFRhcmdldFR5cGVUVk91dCB9OwotCiAgICAgdmlydHVhbCB+
V2ViUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlKCkgeyB9OwogICAgIHZpcnR1YWwgdm9pZCByZXNl
dE1lZGlhU3RhdGUoKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIHNldER1cmF0aW9uKGRvdWJsZSkg
PSAwOwotICAgIHZpcnR1YWwgdm9pZCBzZXRDdXJyZW50VGltZShkb3VibGUgY3VycmVudFRpbWUs
IGRvdWJsZSBhbmNob3JUaW1lKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIHNldEJ1ZmZlcmVkVGlt
ZShkb3VibGUpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgc2V0UmF0ZShib29sIGlzUGxheWluZywg
ZmxvYXQgcGxheWJhY2tSYXRlKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIHNldFNlZWthYmxlUmFu
Z2VzKGNvbnN0IFRpbWVSYW5nZXMmKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIHNldENhblBsYXlG
YXN0UmV2ZXJzZShib29sKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIHNldEF1ZGlvTWVkaWFTZWxl
Y3Rpb25PcHRpb25zKGNvbnN0IFZlY3RvcjxXVEY6OlN0cmluZz4mIG9wdGlvbnMsIHVpbnQ2NF90
IHNlbGVjdGVkSW5kZXgpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgc2V0TGVnaWJsZU1lZGlhU2Vs
ZWN0aW9uT3B0aW9ucyhjb25zdCBWZWN0b3I8V1RGOjpTdHJpbmc+JiBvcHRpb25zLCB1aW50NjRf
dCBzZWxlY3RlZEluZGV4KSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIHNldEV4dGVybmFsUGxheWJh
Y2soYm9vbCBlbmFibGVkLCBFeHRlcm5hbFBsYXliYWNrVGFyZ2V0VHlwZSwgV1RGOjpTdHJpbmcg
bG9jYWxpemVkRGV2aWNlTmFtZSkgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBzZXRXaXJlbGVzc1Zp
ZGVvUGxheWJhY2tEaXNhYmxlZChib29sKSA9IDA7CiB9OwogCiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9XZWJQbGF5YmFja1Nlc3Npb25Nb2RlbC5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvV2ViUGxheWJhY2tTZXNzaW9uTW9kZWwuaAppbmRl
eCA0N2FhZGU3MDA0ODI4ZWNiZmFiYTI1ODY0OGQ3MGQ2MTNjMDMyYTI1Li5hMjUwZTNjNjU0MmNm
MzVmZWIwZDM4NzM5M2UwMjU4NTI1ODM4MmQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9jb2NvYS9XZWJQbGF5YmFja1Nlc3Npb25Nb2RlbC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2NvY29hL1dlYlBsYXliYWNrU2Vzc2lvbk1vZGVsLmgKQEAgLTM2LDkgKzM2
LDE0IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgVGltZVJhbmdlczsKIAorY2xhc3Mg
V2ViUGxheWJhY2tTZXNzaW9uTW9kZWxDbGllbnQ7CisKIGNsYXNzIFdlYlBsYXliYWNrU2Vzc2lv
bk1vZGVsIHsKIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5XZWJQbGF5YmFja1Nlc3Npb25Nb2RlbCgp
IHsgfTsKKyAgICB2aXJ0dWFsIHZvaWQgYWRkQ2xpZW50KFdlYlBsYXliYWNrU2Vzc2lvbk1vZGVs
Q2xpZW50JikgPSAwOworICAgIHZpcnR1YWwgdm9pZCByZW1vdmVDbGllbnQoV2ViUGxheWJhY2tT
ZXNzaW9uTW9kZWxDbGllbnQmKSA9IDA7CisKICAgICB2aXJ0dWFsIHZvaWQgcGxheSgpID0gMDsK
ICAgICB2aXJ0dWFsIHZvaWQgcGF1c2UoKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHRvZ2dsZVBs
YXlTdGF0ZSgpID0gMDsKQEAgLTUyLDYgKzU3LDggQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9p
ZCBzZWxlY3RBdWRpb01lZGlhT3B0aW9uKHVpbnQ2NF90IGluZGV4KSA9IDA7CiAgICAgdmlydHVh
bCB2b2lkIHNlbGVjdExlZ2libGVNZWRpYU9wdGlvbih1aW50NjRfdCBpbmRleCkgPSAwOwogCisg
ICAgZW51bSBFeHRlcm5hbFBsYXliYWNrVGFyZ2V0VHlwZSB7IFRhcmdldFR5cGVOb25lLCBUYXJn
ZXRUeXBlQWlyUGxheSwgVGFyZ2V0VHlwZVRWT3V0IH07CisKICAgICB2aXJ0dWFsIGRvdWJsZSBk
dXJhdGlvbigpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIGRvdWJsZSBjdXJyZW50VGltZSgpIGNv
bnN0ID0gMDsKICAgICB2aXJ0dWFsIGRvdWJsZSBidWZmZXJlZFRpbWUoKSBjb25zdCA9IDA7CkBA
IC01OSwxNCArNjYsMzEgQEAgcHVibGljOgogICAgIHZpcnR1YWwgZmxvYXQgcGxheWJhY2tSYXRl
KCkgY29uc3QgPSAwOwogICAgIHZpcnR1YWwgUmVmPFRpbWVSYW5nZXM+IHNlZWthYmxlUmFuZ2Vz
KCkgY29uc3QgPSAwOwogICAgIHZpcnR1YWwgYm9vbCBjYW5QbGF5RmFzdFJldmVyc2UoKSBjb25z
dCA9IDA7Ci0gICAgdmlydHVhbCBWZWN0b3I8V1RGOjpTdHJpbmc+IGF1ZGlvTWVkaWFTZWxlY3Rp
b25PcHRpb25zKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgVmVjdG9yPFN0cmluZz4gYXVkaW9N
ZWRpYVNlbGVjdGlvbk9wdGlvbnMoKSBjb25zdCA9IDA7CiAgICAgdmlydHVhbCB1aW50NjRfdCBh
dWRpb01lZGlhU2VsZWN0ZWRJbmRleCgpIGNvbnN0ID0gMDsKLSAgICB2aXJ0dWFsIFZlY3RvcjxX
VEY6OlN0cmluZz4gbGVnaWJsZU1lZGlhU2VsZWN0aW9uT3B0aW9ucygpIGNvbnN0ID0gMDsKKyAg
ICB2aXJ0dWFsIFZlY3RvcjxTdHJpbmc+IGxlZ2libGVNZWRpYVNlbGVjdGlvbk9wdGlvbnMoKSBj
b25zdCA9IDA7CiAgICAgdmlydHVhbCB1aW50NjRfdCBsZWdpYmxlTWVkaWFTZWxlY3RlZEluZGV4
KCkgY29uc3QgPSAwOwogICAgIHZpcnR1YWwgYm9vbCBleHRlcm5hbFBsYXliYWNrRW5hYmxlZCgp
IGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIEV4dGVybmFsUGxheWJhY2tUYXJnZXRUeXBlIGV4dGVy
bmFsUGxheWJhY2tUYXJnZXRUeXBlKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgU3RyaW5nIGV4
dGVybmFsUGxheWJhY2tMb2NhbGl6ZWREZXZpY2VOYW1lKCkgY29uc3QgPSAwOwogICAgIHZpcnR1
YWwgYm9vbCB3aXJlbGVzc1ZpZGVvUGxheWJhY2tEaXNhYmxlZCgpIGNvbnN0ID0gMDsKIH07CiAK
K2NsYXNzIFdlYlBsYXliYWNrU2Vzc2lvbk1vZGVsQ2xpZW50IHsKK3B1YmxpYzoKKyAgICB2aXJ0
dWFsIH5XZWJQbGF5YmFja1Nlc3Npb25Nb2RlbENsaWVudCgpIHsgfTsKKyAgICB2aXJ0dWFsIHZv
aWQgZHVyYXRpb25DaGFuZ2VkKGRvdWJsZSkgeyB9CisgICAgdmlydHVhbCB2b2lkIGN1cnJlbnRU
aW1lQ2hhbmdlZChkb3VibGUgLyogY3VycmVudFRpbWUgKi8sIGRvdWJsZSAvKiBhbmNob3JUaW1l
ICovKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgYnVmZmVyZWRUaW1lQ2hhbmdlZChkb3VibGUpIHsg
fQorICAgIHZpcnR1YWwgdm9pZCByYXRlQ2hhbmdlZChib29sIC8qIGlzUGxheWluZyAqLywgZmxv
YXQgLyogcGxheWJhY2tSYXRlICovKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgc2Vla2FibGVSYW5n
ZXNDaGFuZ2VkKGNvbnN0IFRpbWVSYW5nZXMmKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgY2FuUGxh
eUZhc3RSZXZlcnNlQ2hhbmdlZChib29sKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgYXVkaW9NZWRp
YVNlbGVjdGlvbk9wdGlvbnNDaGFuZ2VkKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiAvKiBvcHRpb25z
ICovLCB1aW50NjRfdCAvKiBzZWxlY3RlZEluZGV4ICovKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQg
bGVnaWJsZU1lZGlhU2VsZWN0aW9uT3B0aW9uc0NoYW5nZWQoY29uc3QgVmVjdG9yPFN0cmluZz4m
IC8qIG9wdGlvbnMgKi8sIHVpbnQ2NF90IC8qIHNlbGVjdGVkSW5kZXggKi8pIHsgfQorICAgIHZp
cnR1YWwgdm9pZCBleHRlcm5hbFBsYXliYWNrQ2hhbmdlZChib29sIC8qIGVuYWJsZWQgKi8sIFdl
YlBsYXliYWNrU2Vzc2lvbk1vZGVsOjpFeHRlcm5hbFBsYXliYWNrVGFyZ2V0VHlwZSwgY29uc3Qg
U3RyaW5nJiAvKiBsb2NhbGl6ZWREZXZpY2VOYW1lICovKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQg
d2lyZWxlc3NWaWRlb1BsYXliYWNrRGlzYWJsZWRDaGFuZ2VkKGJvb2wpIHsgfQorfTsKKwogfQog
CiAjZW5kaWYgLy8gUExBVEZPUk0oSU9TKSB8fCAoUExBVEZPUk0oTUFDKSAmJiBFTkFCTEUoVklE
RU9fUFJFU0VOVEFUSU9OX01PREUpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vY29jb2EvV2ViUGxheWJhY2tTZXNzaW9uTW9kZWxNZWRpYUVsZW1lbnQuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2NvY29hL1dlYlBsYXliYWNrU2Vzc2lvbk1vZGVsTWVkaWFFbGVtZW50
LmgKaW5kZXggYjg1NDI3Mzk2ZjViNjFlMGMxODJmNDA4NzJiMjFiZTZiMzIxYzE3Zi4uYjhjZTE1
MDZjMWE1N2UxZmQyMDRjNTY3NWYzMTFhNzdhMWE2ODM0NiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vY29jb2EvV2ViUGxheWJhY2tTZXNzaW9uTW9kZWxNZWRpYUVsZW1lbnQu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9XZWJQbGF5YmFja1Nlc3Npb25N
b2RlbE1lZGlhRWxlbWVudC5oCkBAIC0zMCw2ICszMCw3IEBACiAjaW5jbHVkZSAiRXZlbnRMaXN0
ZW5lci5oIgogI2luY2x1ZGUgIkhUTUxNZWRpYUVsZW1lbnRFbnVtcy5oIgogI2luY2x1ZGUgIldl
YlBsYXliYWNrU2Vzc2lvbk1vZGVsLmgiCisjaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KICNpbmNs
dWRlIDx3dGYvUmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogCkBAIC00Niw3ICs0
Nyw2IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgV2ViUGxheWJhY2tT
ZXNzaW9uTW9kZWxNZWRpYUVsZW1lbnQoKSk7CiAgICAgfQogICAgIFdFQkNPUkVfRVhQT1JUIHZp
cnR1YWwgfldlYlBsYXliYWNrU2Vzc2lvbk1vZGVsTWVkaWFFbGVtZW50KCk7Ci0gICAgV0VCQ09S
RV9FWFBPUlQgdm9pZCBzZXRXZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2UoV2ViUGxheWJhY2tT
ZXNzaW9uSW50ZXJmYWNlKik7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRNZWRpYUVsZW1l
bnQoSFRNTE1lZGlhRWxlbWVudCopOwogICAgIFdFQkNPUkVfRVhQT1JUIEhUTUxNZWRpYUVsZW1l
bnQqIG1lZGlhRWxlbWVudCgpIGNvbnN0IHsgcmV0dXJuIG1fbWVkaWFFbGVtZW50LmdldCgpOyB9
CiAKQEAgLTU0LDYgKzU0LDggQEAgcHVibGljOgogICAgIHZvaWQgdXBkYXRlRm9yRXZlbnROYW1l
KGNvbnN0IFdURjo6QXRvbWljU3RyaW5nJik7CiAgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IEV2
ZW50TGlzdGVuZXImIHJocykgY29uc3QgZmluYWwgeyByZXR1cm4gc3RhdGljX2Nhc3Q8Y29uc3Qg
V2ViQ29yZTo6RXZlbnRMaXN0ZW5lcio+KHRoaXMpID09ICZyaHM7IH0KIAorICAgIFdFQkNPUkVf
RVhQT1JUIHZvaWQgYWRkQ2xpZW50KFdlYlBsYXliYWNrU2Vzc2lvbk1vZGVsQ2xpZW50Jik7Cisg
ICAgV0VCQ09SRV9FWFBPUlQgdm9pZCByZW1vdmVDbGllbnQoV2ViUGxheWJhY2tTZXNzaW9uTW9k
ZWxDbGllbnQmKTsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHBsYXkoKSBmaW5hbDsKICAgICBX
RUJDT1JFX0VYUE9SVCB2b2lkIHBhdXNlKCkgZmluYWw7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9p
ZCB0b2dnbGVQbGF5U3RhdGUoKSBmaW5hbDsKQEAgLTc5LDYgKzgxLDggQEAgcHVibGljOgogICAg
IFZlY3RvcjxXVEY6OlN0cmluZz4gbGVnaWJsZU1lZGlhU2VsZWN0aW9uT3B0aW9ucygpIGNvbnN0
IGZpbmFsOwogICAgIHVpbnQ2NF90IGxlZ2libGVNZWRpYVNlbGVjdGVkSW5kZXgoKSBjb25zdCBm
aW5hbDsKICAgICBib29sIGV4dGVybmFsUGxheWJhY2tFbmFibGVkKCkgY29uc3QgZmluYWw7Cisg
ICAgRXh0ZXJuYWxQbGF5YmFja1RhcmdldFR5cGUgZXh0ZXJuYWxQbGF5YmFja1RhcmdldFR5cGUo
KSBjb25zdCBmaW5hbDsKKyAgICBTdHJpbmcgZXh0ZXJuYWxQbGF5YmFja0xvY2FsaXplZERldmlj
ZU5hbWUoKSBjb25zdCBmaW5hbDsKICAgICBib29sIHdpcmVsZXNzVmlkZW9QbGF5YmFja0Rpc2Fi
bGVkKCkgY29uc3QgZmluYWw7CiAKIHByb3RlY3RlZDoKQEAgLTkwLDcgKzk0LDcgQEAgcHJpdmF0
ZToKIAogICAgIFJlZlB0cjxIVE1MTWVkaWFFbGVtZW50PiBtX21lZGlhRWxlbWVudDsKICAgICBi
b29sIG1faXNMaXN0ZW5pbmcgeyBmYWxzZSB9OwotICAgIFdlYlBsYXliYWNrU2Vzc2lvbkludGVy
ZmFjZSogbV9wbGF5YmFja1Nlc3Npb25JbnRlcmZhY2UgeyBudWxscHRyIH07CisgICAgSGFzaFNl
dDxXZWJQbGF5YmFja1Nlc3Npb25Nb2RlbENsaWVudCo+IG1fY2xpZW50czsKICAgICBWZWN0b3I8
UmVmUHRyPFRleHRUcmFjaz4+IG1fbGVnaWJsZVRyYWNrc0Zvck1lbnU7CiAgICAgVmVjdG9yPFJl
ZlB0cjxBdWRpb1RyYWNrPj4gbV9hdWRpb1RyYWNrc0Zvck1lbnU7CiAgICAgCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9XZWJQbGF5YmFja1Nlc3Npb25Nb2RlbE1l
ZGlhRWxlbWVudC5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1dlYlBsYXliYWNr
U2Vzc2lvbk1vZGVsTWVkaWFFbGVtZW50Lm1tCmluZGV4IGRiMDk3MDk0MjhiZTNhODhkMzg1YWI4
MGY5MjUyOTczMjQ3MjY5OTYuLjFjODU4ZjZlNDA4ZDhlNTU3ZDFiZDNjMDNiMWIzNjQ2ZGI3OGUy
YTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1dlYlBsYXliYWNr
U2Vzc2lvbk1vZGVsTWVkaWFFbGVtZW50Lm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2NvY29hL1dlYlBsYXliYWNrU2Vzc2lvbk1vZGVsTWVkaWFFbGVtZW50Lm1tCkBAIC01NiwzNSAr
NTYsMTEgQEAgV2ViUGxheWJhY2tTZXNzaW9uTW9kZWxNZWRpYUVsZW1lbnQ6On5XZWJQbGF5YmFj
a1Nlc3Npb25Nb2RlbE1lZGlhRWxlbWVudCgpCiB7CiB9CiAKLXZvaWQgV2ViUGxheWJhY2tTZXNz
aW9uTW9kZWxNZWRpYUVsZW1lbnQ6OnNldFdlYlBsYXliYWNrU2Vzc2lvbkludGVyZmFjZShXZWJQ
bGF5YmFja1Nlc3Npb25JbnRlcmZhY2UqIGludGVyZmFjZSkKLXsKLSAgICBpZiAoaW50ZXJmYWNl
ID09IG1fcGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlKQotICAgICAgICByZXR1cm47Ci0KLSAgICBt
X3BsYXliYWNrU2Vzc2lvbkludGVyZmFjZSA9IGludGVyZmFjZTsKLQotICAgIGlmICghbV9wbGF5
YmFja1Nlc3Npb25JbnRlcmZhY2UpCi0gICAgICAgIHJldHVybjsKLQotICAgIG1fcGxheWJhY2tT
ZXNzaW9uSW50ZXJmYWNlLT5yZXNldE1lZGlhU3RhdGUoKTsKLSAgICBtX3BsYXliYWNrU2Vzc2lv
bkludGVyZmFjZS0+c2V0RHVyYXRpb24oZHVyYXRpb24oKSk7Ci0gICAgbV9wbGF5YmFja1Nlc3Np
b25JbnRlcmZhY2UtPnNldEN1cnJlbnRUaW1lKGN1cnJlbnRUaW1lKCksIFtbTlNQcm9jZXNzSW5m
byBwcm9jZXNzSW5mb10gc3lzdGVtVXB0aW1lXSk7Ci0gICAgbV9wbGF5YmFja1Nlc3Npb25JbnRl
cmZhY2UtPnNldEJ1ZmZlcmVkVGltZShidWZmZXJlZFRpbWUoKSk7Ci0gICAgbV9wbGF5YmFja1Nl
c3Npb25JbnRlcmZhY2UtPnNldFJhdGUoaXNQbGF5aW5nKCksIHBsYXliYWNrUmF0ZSgpKTsKLSAg
ICBtX3BsYXliYWNrU2Vzc2lvbkludGVyZmFjZS0+c2V0U2Vla2FibGVSYW5nZXMoc2Vla2FibGVS
YW5nZXMoKSk7Ci0gICAgbV9wbGF5YmFja1Nlc3Npb25JbnRlcmZhY2UtPnNldENhblBsYXlGYXN0
UmV2ZXJzZShjYW5QbGF5RmFzdFJldmVyc2UoKSk7Ci0gICAgbV9wbGF5YmFja1Nlc3Npb25JbnRl
cmZhY2UtPnNldFdpcmVsZXNzVmlkZW9QbGF5YmFja0Rpc2FibGVkKHdpcmVsZXNzVmlkZW9QbGF5
YmFja0Rpc2FibGVkKCkpOwotICAgIHVwZGF0ZUxlZ2libGVPcHRpb25zKCk7Ci19Ci0KIHZvaWQg
V2ViUGxheWJhY2tTZXNzaW9uTW9kZWxNZWRpYUVsZW1lbnQ6OnNldE1lZGlhRWxlbWVudChIVE1M
TWVkaWFFbGVtZW50KiBtZWRpYUVsZW1lbnQpCiB7CiAgICAgaWYgKG1fbWVkaWFFbGVtZW50ID09
IG1lZGlhRWxlbWVudCkKICAgICAgICAgcmV0dXJuOwogCi0gICAgaWYgKG1fcGxheWJhY2tTZXNz
aW9uSW50ZXJmYWNlKQotICAgICAgICBtX3BsYXliYWNrU2Vzc2lvbkludGVyZmFjZS0+cmVzZXRN
ZWRpYVN0YXRlKCk7Ci0KICAgICBpZiAobV9tZWRpYUVsZW1lbnQgJiYgbV9pc0xpc3RlbmluZykg
ewogICAgICAgICBmb3IgKGF1dG8mIGV2ZW50TmFtZSA6IG9ic2VydmVkRXZlbnROYW1lcygpKQog
ICAgICAgICAgICAgbV9tZWRpYUVsZW1lbnQtPnJlbW92ZUV2ZW50TGlzdGVuZXIoZXZlbnROYW1l
LCAqdGhpcywgZmFsc2UpOwpAQCAtOTMsMTcgKzY5LDEzIEBAIHZvaWQgV2ViUGxheWJhY2tTZXNz
aW9uTW9kZWxNZWRpYUVsZW1lbnQ6OnNldE1lZGlhRWxlbWVudChIVE1MTWVkaWFFbGVtZW50KiBt
ZWRpCiAKICAgICBtX21lZGlhRWxlbWVudCA9IG1lZGlhRWxlbWVudDsKIAotICAgIGlmICghbV9t
ZWRpYUVsZW1lbnQpCi0gICAgICAgIHJldHVybjsKLQotICAgIGZvciAoYXV0byYgZXZlbnROYW1l
IDogb2JzZXJ2ZWRFdmVudE5hbWVzKCkpCi0gICAgICAgIG1fbWVkaWFFbGVtZW50LT5hZGRFdmVu
dExpc3RlbmVyKGV2ZW50TmFtZSwgKnRoaXMsIGZhbHNlKTsKLSAgICBtX2lzTGlzdGVuaW5nID0g
dHJ1ZTsKKyAgICBpZiAobV9tZWRpYUVsZW1lbnQpIHsKKyAgICAgICAgZm9yIChhdXRvJiBldmVu
dE5hbWUgOiBvYnNlcnZlZEV2ZW50TmFtZXMoKSkKKyAgICAgICAgICAgIG1fbWVkaWFFbGVtZW50
LT5hZGRFdmVudExpc3RlbmVyKGV2ZW50TmFtZSwgKnRoaXMsIGZhbHNlKTsKKyAgICAgICAgbV9p
c0xpc3RlbmluZyA9IHRydWU7CisgICAgfQogCiAgICAgdXBkYXRlRm9yRXZlbnROYW1lKGV2ZW50
TmFtZUFsbCgpKTsKLQotICAgIGlmIChtX3BsYXliYWNrU2Vzc2lvbkludGVyZmFjZSkKLSAgICAg
ICAgbV9wbGF5YmFja1Nlc3Npb25JbnRlcmZhY2UtPnNldFdpcmVsZXNzVmlkZW9QbGF5YmFja0Rp
c2FibGVkKG1fbWVkaWFFbGVtZW50LT5tZWRpYVNlc3Npb24oKS53aXJlbGVzc1ZpZGVvUGxheWJh
Y2tEaXNhYmxlZCgqbV9tZWRpYUVsZW1lbnQpKTsKIH0KIAogdm9pZCBXZWJQbGF5YmFja1Nlc3Np
b25Nb2RlbE1lZGlhRWxlbWVudDo6aGFuZGxlRXZlbnQoV2ViQ29yZTo6U2NyaXB0RXhlY3V0aW9u
Q29udGV4dCosIFdlYkNvcmU6OkV2ZW50KiBldmVudCkKQEAgLTExMywzMSArODUsNDYgQEAgdm9p
ZCBXZWJQbGF5YmFja1Nlc3Npb25Nb2RlbE1lZGlhRWxlbWVudDo6aGFuZGxlRXZlbnQoV2ViQ29y
ZTo6U2NyaXB0RXhlY3V0aW9uQ28KIAogdm9pZCBXZWJQbGF5YmFja1Nlc3Npb25Nb2RlbE1lZGlh
RWxlbWVudDo6dXBkYXRlRm9yRXZlbnROYW1lKGNvbnN0IFdURjo6QXRvbWljU3RyaW5nJiBldmVu
dE5hbWUpCiB7Ci0gICAgaWYgKCFtX21lZGlhRWxlbWVudCB8fCAhbV9wbGF5YmFja1Nlc3Npb25J
bnRlcmZhY2UpCisgICAgaWYgKG1fY2xpZW50cy5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybjsK
IAogICAgIGJvb2wgYWxsID0gZXZlbnROYW1lID09IGV2ZW50TmFtZUFsbCgpOwogCiAgICAgaWYg
KGFsbAogICAgICAgICB8fCBldmVudE5hbWUgPT0gZXZlbnROYW1lcygpLmR1cmF0aW9uY2hhbmdl
RXZlbnQpIHsKLSAgICAgICAgbV9wbGF5YmFja1Nlc3Npb25JbnRlcmZhY2UtPnNldER1cmF0aW9u
KG1fbWVkaWFFbGVtZW50LT5kdXJhdGlvbigpKTsKKyAgICAgICAgZG91YmxlIGR1cmF0aW9uID0g
dGhpcy0+ZHVyYXRpb24oKTsKKyAgICAgICAgZm9yIChhdXRvIGNsaWVudCA6IG1fY2xpZW50cykK
KyAgICAgICAgICAgIGNsaWVudC0+ZHVyYXRpb25DaGFuZ2VkKGR1cmF0aW9uKTsKICAgICAgICAg
Ly8gVGhlc2UgaXMgbm8gc3RhbmRhcmQgZXZlbnQgZm9yIG1pbkZhc3RSZXZlcnNlUmF0ZUNoYW5n
ZTsgZHVyYXRpb24gY2hhbmdlIGlzIGEgcmVhc29uYWJsZSBwcm94eSBmb3IgaXQuCiAgICAgICAg
IC8vIEl0IGhhcHBlbnMgZXZlcnkgdGltZSBhIG5ldyBpdGVtIGJlY29tZXMgcmVhZHkgdG8gcGxh
eS4KLSAgICAgICAgbV9wbGF5YmFja1Nlc3Npb25JbnRlcmZhY2UtPnNldENhblBsYXlGYXN0UmV2
ZXJzZShtX21lZGlhRWxlbWVudC0+bWluRmFzdFJldmVyc2VSYXRlKCkgPCAwLjApOworICAgICAg
ICBib29sIGNhblBsYXlGYXN0UmV2ZXJzZSA9IHRoaXMtPmNhblBsYXlGYXN0UmV2ZXJzZSgpOwor
ICAgICAgICBmb3IgKGF1dG8gY2xpZW50IDogbV9jbGllbnRzKQorICAgICAgICAgICAgY2xpZW50
LT5jYW5QbGF5RmFzdFJldmVyc2VDaGFuZ2VkKGNhblBsYXlGYXN0UmV2ZXJzZSk7CiAgICAgfQog
CiAgICAgaWYgKGFsbAogICAgICAgICB8fCBldmVudE5hbWUgPT0gZXZlbnROYW1lcygpLnBhdXNl
RXZlbnQKICAgICAgICAgfHwgZXZlbnROYW1lID09IGV2ZW50TmFtZXMoKS5wbGF5RXZlbnQKLSAg
ICAgICAgfHwgZXZlbnROYW1lID09IGV2ZW50TmFtZXMoKS5yYXRlY2hhbmdlRXZlbnQpCi0gICAg
ICAgIG1fcGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlLT5zZXRSYXRlKCFtX21lZGlhRWxlbWVudC0+
cGF1c2VkKCksIG1fbWVkaWFFbGVtZW50LT5wbGF5YmFja1JhdGUoKSk7CisgICAgICAgIHx8IGV2
ZW50TmFtZSA9PSBldmVudE5hbWVzKCkucmF0ZWNoYW5nZUV2ZW50KSB7CisgICAgICAgIGJvb2wg
aXNQbGF5aW5nID0gdGhpcy0+aXNQbGF5aW5nKCk7CisgICAgICAgIGZsb2F0IHBsYXliYWNrUmF0
ZSA9IHRoaXMtPnBsYXliYWNrUmF0ZSgpOworICAgICAgICBmb3IgKGF1dG8gY2xpZW50IDogbV9j
bGllbnRzKQorICAgICAgICAgICAgY2xpZW50LT5yYXRlQ2hhbmdlZChpc1BsYXlpbmcsIHBsYXli
YWNrUmF0ZSk7CisgICAgfQogCiAgICAgaWYgKGFsbAogICAgICAgICB8fCBldmVudE5hbWUgPT0g
ZXZlbnROYW1lcygpLnRpbWV1cGRhdGVFdmVudCkgewotICAgICAgICBtX3BsYXliYWNrU2Vzc2lv
bkludGVyZmFjZS0+c2V0Q3VycmVudFRpbWUobV9tZWRpYUVsZW1lbnQtPmN1cnJlbnRUaW1lKCks
IFtbTlNQcm9jZXNzSW5mbyBwcm9jZXNzSW5mb10gc3lzdGVtVXB0aW1lXSk7Ci0gICAgICAgIG1f
cGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlLT5zZXRCdWZmZXJlZFRpbWUobV9tZWRpYUVsZW1lbnQt
Pm1heEJ1ZmZlcmVkVGltZSgpKTsKLSAgICAgICAgLy8gRklYTUU6IDEzMDc4OCAtIGZpbmQgYSBi
ZXR0ZXIgZXZlbnQgdG8gdXBkYXRlIHNlZWthYmxlIHJhbmdlcyBmcm9tLgotICAgICAgICBtX3Bs
YXliYWNrU2Vzc2lvbkludGVyZmFjZS0+c2V0U2Vla2FibGVSYW5nZXMobV9tZWRpYUVsZW1lbnQt
PnNlZWthYmxlKCkpOworICAgICAgICBhdXRvIGN1cnJlbnRUaW1lID0gdGhpcy0+Y3VycmVudFRp
bWUoKTsKKyAgICAgICAgYXV0byBhbmNob3JUaW1lID0gW1tOU1Byb2Nlc3NJbmZvIHByb2Nlc3NJ
bmZvXSBzeXN0ZW1VcHRpbWVdOworICAgICAgICBhdXRvIGJ1ZmZlcmVkVGltZSA9IHRoaXMtPmJ1
ZmZlcmVkVGltZSgpOworICAgICAgICBhdXRvIHNlZWthYmxlUmFuZ2VzID0gdGhpcy0+c2Vla2Fi
bGVSYW5nZXMoKTsKKworICAgICAgICBmb3IgKGF1dG8gY2xpZW50IDogbV9jbGllbnRzKSB7Cisg
ICAgICAgICAgICBjbGllbnQtPmN1cnJlbnRUaW1lQ2hhbmdlZChjdXJyZW50VGltZSwgYW5jaG9y
VGltZSk7CisgICAgICAgICAgICBjbGllbnQtPmJ1ZmZlcmVkVGltZUNoYW5nZWQoYnVmZmVyZWRU
aW1lKTsKKyAgICAgICAgICAgIC8vIEZJWE1FOiAxMzA3ODggLSBmaW5kIGEgYmV0dGVyIGV2ZW50
IGZyb20gd2hpY2ggdG8gdXBkYXRlIHNlZWthYmxlIHJhbmdlcy4KKyAgICAgICAgICAgIGNsaWVu
dC0+c2Vla2FibGVSYW5nZXNDaGFuZ2VkKHNlZWthYmxlUmFuZ2VzKTsKKyAgICAgICAgfQogICAg
IH0KIAogICAgIGlmIChhbGwKQEAgLTE0NywyMiArMTM0LDI5IEBAIHZvaWQgV2ViUGxheWJhY2tT
ZXNzaW9uTW9kZWxNZWRpYUVsZW1lbnQ6OnVwZGF0ZUZvckV2ZW50TmFtZShjb25zdCBXVEY6OkF0
b21pY1N0CiAKICAgICBpZiAoYWxsCiAgICAgICAgIHx8IGV2ZW50TmFtZSA9PSBldmVudE5hbWVz
KCkud2Via2l0Y3VycmVudHBsYXliYWNrdGFyZ2V0aXN3aXJlbGVzc2NoYW5nZWRFdmVudCkgewot
ICAgICAgICBib29sIGVuYWJsZWQgPSBtX21lZGlhRWxlbWVudC0+d2Via2l0Q3VycmVudFBsYXli
YWNrVGFyZ2V0SXNXaXJlbGVzcygpOwotICAgICAgICBXZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZh
Y2U6OkV4dGVybmFsUGxheWJhY2tUYXJnZXRUeXBlIHRhcmdldFR5cGUgPSBXZWJQbGF5YmFja1Nl
c3Npb25JbnRlcmZhY2U6OlRhcmdldFR5cGVOb25lOwotICAgICAgICBTdHJpbmcgbG9jYWxpemVk
RGV2aWNlTmFtZTsKLQotICAgICAgICBpZiAobV9tZWRpYUVsZW1lbnQtPm1lZGlhQ29udHJvbHNI
b3N0KCkpIHsKLSAgICAgICAgICAgIGF1dG8gdHlwZSA9IG1fbWVkaWFFbGVtZW50LT5tZWRpYUNv
bnRyb2xzSG9zdCgpLT5leHRlcm5hbERldmljZVR5cGUoKTsKLSAgICAgICAgICAgIGlmICh0eXBl
ID09IE1lZGlhQ29udHJvbHNIb3N0OjpEZXZpY2VUeXBlOjpBaXJwbGF5KQotICAgICAgICAgICAg
ICAgIHRhcmdldFR5cGUgPSBXZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2U6OlRhcmdldFR5cGVB
aXJQbGF5OwotICAgICAgICAgICAgZWxzZSBpZiAodHlwZSA9PSBNZWRpYUNvbnRyb2xzSG9zdDo6
RGV2aWNlVHlwZTo6VHZvdXQpCi0gICAgICAgICAgICAgICAgdGFyZ2V0VHlwZSA9IFdlYlBsYXli
YWNrU2Vzc2lvbkludGVyZmFjZTo6VGFyZ2V0VHlwZVRWT3V0OwotICAgICAgICAgICAgbG9jYWxp
emVkRGV2aWNlTmFtZSA9IG1fbWVkaWFFbGVtZW50LT5tZWRpYUNvbnRyb2xzSG9zdCgpLT5leHRl
cm5hbERldmljZURpc3BsYXlOYW1lKCk7CisgICAgICAgIGJvb2wgZW5hYmxlZCA9IGV4dGVybmFs
UGxheWJhY2tFbmFibGVkKCk7CisgICAgICAgIEV4dGVybmFsUGxheWJhY2tUYXJnZXRUeXBlIHRh
cmdldFR5cGUgPSBleHRlcm5hbFBsYXliYWNrVGFyZ2V0VHlwZSgpOworICAgICAgICBTdHJpbmcg
bG9jYWxpemVkRGV2aWNlTmFtZSA9IGV4dGVybmFsUGxheWJhY2tMb2NhbGl6ZWREZXZpY2VOYW1l
KCk7CisKKyAgICAgICAgYm9vbCB3aXJlbGVzc1ZpZGVvUGxheWJhY2tEaXNhYmxlZCA9IHRoaXMt
PndpcmVsZXNzVmlkZW9QbGF5YmFja0Rpc2FibGVkKCk7CisKKyAgICAgICAgZm9yIChhdXRvIGNs
aWVudCA6IG1fY2xpZW50cykgeworICAgICAgICAgICAgY2xpZW50LT5leHRlcm5hbFBsYXliYWNr
Q2hhbmdlZChlbmFibGVkLCB0YXJnZXRUeXBlLCBsb2NhbGl6ZWREZXZpY2VOYW1lKTsKKyAgICAg
ICAgICAgIGNsaWVudC0+d2lyZWxlc3NWaWRlb1BsYXliYWNrRGlzYWJsZWRDaGFuZ2VkKHdpcmVs
ZXNzVmlkZW9QbGF5YmFja0Rpc2FibGVkKTsKICAgICAgICAgfQotICAgICAgICBtX3BsYXliYWNr
U2Vzc2lvbkludGVyZmFjZS0+c2V0RXh0ZXJuYWxQbGF5YmFjayhlbmFibGVkLCB0YXJnZXRUeXBl
LCBsb2NhbGl6ZWREZXZpY2VOYW1lKTsKLSAgICAgICAgbV9wbGF5YmFja1Nlc3Npb25JbnRlcmZh
Y2UtPnNldFdpcmVsZXNzVmlkZW9QbGF5YmFja0Rpc2FibGVkKG1fbWVkaWFFbGVtZW50LT5tZWRp
YVNlc3Npb24oKS53aXJlbGVzc1ZpZGVvUGxheWJhY2tEaXNhYmxlZCgqbV9tZWRpYUVsZW1lbnQp
KTsKICAgICB9CiB9Cit2b2lkIFdlYlBsYXliYWNrU2Vzc2lvbk1vZGVsTWVkaWFFbGVtZW50Ojph
ZGRDbGllbnQoV2ViUGxheWJhY2tTZXNzaW9uTW9kZWxDbGllbnQmIGNsaWVudCkKK3sKKyAgICBB
U1NFUlQoIW1fY2xpZW50cy5jb250YWlucygmY2xpZW50KSk7CisgICAgbV9jbGllbnRzLmFkZCgm
Y2xpZW50KTsKK30KKwordm9pZCBXZWJQbGF5YmFja1Nlc3Npb25Nb2RlbE1lZGlhRWxlbWVudDo6
cmVtb3ZlQ2xpZW50KFdlYlBsYXliYWNrU2Vzc2lvbk1vZGVsQ2xpZW50JiBjbGllbnQpCit7Cisg
ICAgQVNTRVJUKG1fY2xpZW50cy5jb250YWlucygmY2xpZW50KSk7CisgICAgbV9jbGllbnRzLnJl
bW92ZSgmY2xpZW50KTsKK30KIAogdm9pZCBXZWJQbGF5YmFja1Nlc3Npb25Nb2RlbE1lZGlhRWxl
bWVudDo6cGxheSgpCiB7CkBAIC0yNzksMzEgKzI3MywzNyBAQCB2b2lkIFdlYlBsYXliYWNrU2Vz
c2lvbk1vZGVsTWVkaWFFbGVtZW50Ojp1cGRhdGVMZWdpYmxlT3B0aW9ucygpCiAgICAgZWxzZQog
ICAgICAgICBtX2F1ZGlvVHJhY2tzRm9yTWVudS5jbGVhcigpOwogCi0gICAgbV9wbGF5YmFja1Nl
c3Npb25JbnRlcmZhY2UtPnNldEF1ZGlvTWVkaWFTZWxlY3Rpb25PcHRpb25zKGF1ZGlvTWVkaWFT
ZWxlY3Rpb25PcHRpb25zKCksIGF1ZGlvTWVkaWFTZWxlY3RlZEluZGV4KCkpOwotICAgIG1fcGxh
eWJhY2tTZXNzaW9uSW50ZXJmYWNlLT5zZXRMZWdpYmxlTWVkaWFTZWxlY3Rpb25PcHRpb25zKGxl
Z2libGVNZWRpYVNlbGVjdGlvbk9wdGlvbnMoKSwgbGVnaWJsZU1lZGlhU2VsZWN0ZWRJbmRleCgp
KTsKKyAgICBhdXRvIGF1ZGlvT3B0aW9ucyA9IGF1ZGlvTWVkaWFTZWxlY3Rpb25PcHRpb25zKCk7
CisgICAgYXV0byBhdWRpb0luZGV4ID0gYXVkaW9NZWRpYVNlbGVjdGVkSW5kZXgoKTsKKyAgICBh
dXRvIGxlZ2libGVPcHRpb25zID0gbGVnaWJsZU1lZGlhU2VsZWN0aW9uT3B0aW9ucygpOworICAg
IGF1dG8gbGVnaWJsZUluZGV4ID0gbGVnaWJsZU1lZGlhU2VsZWN0ZWRJbmRleCgpOworCisgICAg
Zm9yIChhdXRvIGNsaWVudCA6IG1fY2xpZW50cykgeworICAgICAgICBjbGllbnQtPmF1ZGlvTWVk
aWFTZWxlY3Rpb25PcHRpb25zQ2hhbmdlZChhdWRpb09wdGlvbnMsIGF1ZGlvSW5kZXgpOworICAg
ICAgICBjbGllbnQtPmxlZ2libGVNZWRpYVNlbGVjdGlvbk9wdGlvbnNDaGFuZ2VkKGxlZ2libGVP
cHRpb25zLCBsZWdpYmxlSW5kZXgpOworICAgIH0KIH0KIAotY29uc3QgVmVjdG9yPEF0b21pY1N0
cmluZz4mICBXZWJQbGF5YmFja1Nlc3Npb25Nb2RlbE1lZGlhRWxlbWVudDo6b2JzZXJ2ZWRFdmVu
dE5hbWVzKCkKK2NvbnN0IFZlY3RvcjxBdG9taWNTdHJpbmc+JiBXZWJQbGF5YmFja1Nlc3Npb25N
b2RlbE1lZGlhRWxlbWVudDo6b2JzZXJ2ZWRFdmVudE5hbWVzKCkKIHsKLSAgICBzdGF0aWMgTmV2
ZXJEZXN0cm95ZWQ8VmVjdG9yPEF0b21pY1N0cmluZz4+IHNFdmVudE5hbWVzOwotCi0gICAgaWYg
KCFzRXZlbnROYW1lcy5nZXQoKS5zaXplKCkpIHsKLSAgICAgICAgc0V2ZW50TmFtZXMuZ2V0KCku
YXBwZW5kKGV2ZW50TmFtZXMoKS5kdXJhdGlvbmNoYW5nZUV2ZW50KTsKLSAgICAgICAgc0V2ZW50
TmFtZXMuZ2V0KCkuYXBwZW5kKGV2ZW50TmFtZXMoKS5wYXVzZUV2ZW50KTsKLSAgICAgICAgc0V2
ZW50TmFtZXMuZ2V0KCkuYXBwZW5kKGV2ZW50TmFtZXMoKS5wbGF5RXZlbnQpOwotICAgICAgICBz
RXZlbnROYW1lcy5nZXQoKS5hcHBlbmQoZXZlbnROYW1lcygpLnJhdGVjaGFuZ2VFdmVudCk7Ci0g
ICAgICAgIHNFdmVudE5hbWVzLmdldCgpLmFwcGVuZChldmVudE5hbWVzKCkudGltZXVwZGF0ZUV2
ZW50KTsKLSAgICAgICAgc0V2ZW50TmFtZXMuZ2V0KCkuYXBwZW5kKGV2ZW50TmFtZXMoKS5hZGR0
cmFja0V2ZW50KTsKLSAgICAgICAgc0V2ZW50TmFtZXMuZ2V0KCkuYXBwZW5kKGV2ZW50TmFtZXMo
KS5yZW1vdmV0cmFja0V2ZW50KTsKLSAgICAgICAgc0V2ZW50TmFtZXMuZ2V0KCkuYXBwZW5kKGV2
ZW50TmFtZXMoKS53ZWJraXRjdXJyZW50cGxheWJhY2t0YXJnZXRpc3dpcmVsZXNzY2hhbmdlZEV2
ZW50KTsKLSAgICB9Ci0gICAgcmV0dXJuIHNFdmVudE5hbWVzLmdldCgpOworICAgIC8vIEZJWE1F
KDE1NzQ1Mik6IFJlbW92ZSB0aGUgcmlnaHQtaGFuZCBjb25zdHJ1Y3RvciBub3RhdGlvbiBvbmNl
IE5ldmVyRGVzdHJveWVkIHN1cHBvcnRzIGluaXRpYWxpemVyX2xpc3RzLgorICAgIHN0YXRpYyBO
ZXZlckRlc3Ryb3llZDxWZWN0b3I8QXRvbWljU3RyaW5nPj4gbmFtZXMgPSBWZWN0b3I8QXRvbWlj
U3RyaW5nPih7CisgICAgICAgIGV2ZW50TmFtZXMoKS5kdXJhdGlvbmNoYW5nZUV2ZW50LAorICAg
ICAgICBldmVudE5hbWVzKCkucGF1c2VFdmVudCwKKyAgICAgICAgZXZlbnROYW1lcygpLnBsYXlF
dmVudCwKKyAgICAgICAgZXZlbnROYW1lcygpLnJhdGVjaGFuZ2VFdmVudCwKKyAgICAgICAgZXZl
bnROYW1lcygpLnRpbWV1cGRhdGVFdmVudCwKKyAgICAgICAgZXZlbnROYW1lcygpLmFkZHRyYWNr
RXZlbnQsCisgICAgICAgIGV2ZW50TmFtZXMoKS5yZW1vdmV0cmFja0V2ZW50LAorICAgICAgICBl
dmVudE5hbWVzKCkud2Via2l0Y3VycmVudHBsYXliYWNrdGFyZ2V0aXN3aXJlbGVzc2NoYW5nZWRF
dmVudCwKKyAgICB9KTsKKyAgICByZXR1cm4gbmFtZXMuZ2V0KCk7CiB9CiAKIGNvbnN0IEF0b21p
Y1N0cmluZyYgIFdlYlBsYXliYWNrU2Vzc2lvbk1vZGVsTWVkaWFFbGVtZW50OjpldmVudE5hbWVB
bGwoKQogewotICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxBdG9taWNTdHJpbmc+IHNFdmVudE5h
bWVBbGwgPSAiYWxsRXZlbnRzIjsKLSAgICByZXR1cm4gc0V2ZW50TmFtZUFsbDsKKyAgICBzdGF0
aWMgTmV2ZXJEZXN0cm95ZWQ8QXRvbWljU3RyaW5nPiBldmVudE5hbWVBbGwoImFsbEV2ZW50cyIs
IEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOworICAgIHJldHVybiBldmVudE5h
bWVBbGw7CiB9CiAKIGRvdWJsZSBXZWJQbGF5YmFja1Nlc3Npb25Nb2RlbE1lZGlhRWxlbWVudDo6
ZHVyYXRpb24oKSBjb25zdApAQCAtMzQxLDcgKzM0MSw3IEBAIGJvb2wgV2ViUGxheWJhY2tTZXNz
aW9uTW9kZWxNZWRpYUVsZW1lbnQ6OmNhblBsYXlGYXN0UmV2ZXJzZSgpIGNvbnN0CiAgICAgcmV0
dXJuIG1fbWVkaWFFbGVtZW50ID8gbV9tZWRpYUVsZW1lbnQtPm1pbkZhc3RSZXZlcnNlUmF0ZSgp
IDwgMC4wIDogZmFsc2U7CiB9CiAKLVZlY3RvcjxXVEY6OlN0cmluZz4gV2ViUGxheWJhY2tTZXNz
aW9uTW9kZWxNZWRpYUVsZW1lbnQ6OmF1ZGlvTWVkaWFTZWxlY3Rpb25PcHRpb25zKCkgY29uc3QK
K1ZlY3RvcjxTdHJpbmc+IFdlYlBsYXliYWNrU2Vzc2lvbk1vZGVsTWVkaWFFbGVtZW50OjphdWRp
b01lZGlhU2VsZWN0aW9uT3B0aW9ucygpIGNvbnN0CiB7CiAgICAgVmVjdG9yPFN0cmluZz4gYXVk
aW9UcmFja0Rpc3BsYXlOYW1lczsKIApAQCAtMzUwLDggKzM1MCw5IEBAIFZlY3RvcjxXVEY6OlN0
cmluZz4gV2ViUGxheWJhY2tTZXNzaW9uTW9kZWxNZWRpYUVsZW1lbnQ6OmF1ZGlvTWVkaWFTZWxl
Y3Rpb25PcHRpCiAKICAgICBhdXRvJiBjYXB0aW9uUHJlZmVyZW5jZXMgPSBtX21lZGlhRWxlbWVu
dC0+ZG9jdW1lbnQoKS5wYWdlKCktPmdyb3VwKCkuY2FwdGlvblByZWZlcmVuY2VzKCk7CiAKKyAg
ICBhdWRpb1RyYWNrRGlzcGxheU5hbWVzLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkobV9hdWRpb1Ry
YWNrc0Zvck1lbnUuc2l6ZSgpKTsKICAgICBmb3IgKGF1dG8mIGF1ZGlvVHJhY2sgOiBtX2F1ZGlv
VHJhY2tzRm9yTWVudSkKLSAgICAgICAgYXVkaW9UcmFja0Rpc3BsYXlOYW1lcy5hcHBlbmQoY2Fw
dGlvblByZWZlcmVuY2VzLmRpc3BsYXlOYW1lRm9yVHJhY2soYXVkaW9UcmFjay5nZXQoKSkpOwor
ICAgICAgICBhdWRpb1RyYWNrRGlzcGxheU5hbWVzLnVuY2hlY2tlZEFwcGVuZChjYXB0aW9uUHJl
ZmVyZW5jZXMuZGlzcGxheU5hbWVGb3JUcmFjayhhdWRpb1RyYWNrLmdldCgpKSk7CiAKICAgICBy
ZXR1cm4gYXVkaW9UcmFja0Rpc3BsYXlOYW1lczsKIH0KQEAgLTM2Miw3ICszNjMsNyBAQCB1aW50
NjRfdCBXZWJQbGF5YmFja1Nlc3Npb25Nb2RlbE1lZGlhRWxlbWVudDo6YXVkaW9NZWRpYVNlbGVj
dGVkSW5kZXgoKSBjb25zdAogICAgICAgICBpZiAobV9hdWRpb1RyYWNrc0Zvck1lbnVbaW5kZXhd
LT5lbmFibGVkKCkpCiAgICAgICAgICAgICByZXR1cm4gaW5kZXg7CiAgICAgfQotICAgIHJldHVy
biAwOworICAgIHJldHVybiBzdGQ6Om51bWVyaWNfbGltaXRzPHVpbnQ2NF90Pjo6bWF4KCk7CiB9
CiAKIFZlY3RvcjxXVEY6OlN0cmluZz4gV2ViUGxheWJhY2tTZXNzaW9uTW9kZWxNZWRpYUVsZW1l
bnQ6OmxlZ2libGVNZWRpYVNlbGVjdGlvbk9wdGlvbnMoKSBjb25zdApAQCAtMzgyLDE2ICszODMs
MTggQEAgVmVjdG9yPFdURjo6U3RyaW5nPiBXZWJQbGF5YmFja1Nlc3Npb25Nb2RlbE1lZGlhRWxl
bWVudDo6bGVnaWJsZU1lZGlhU2VsZWN0aW9uT3AKIAogdWludDY0X3QgV2ViUGxheWJhY2tTZXNz
aW9uTW9kZWxNZWRpYUVsZW1lbnQ6OmxlZ2libGVNZWRpYVNlbGVjdGVkSW5kZXgoKSBjb25zdAog
ewotICAgIHVpbnQ2NF90IHNlbGVjdGVkSW5kZXggPSAwOworICAgIHVpbnQ2NF90IHNlbGVjdGVk
SW5kZXggPSBzdGQ6Om51bWVyaWNfbGltaXRzPHVpbnQ2NF90Pjo6bWF4KCk7CiAgICAgdWludDY0
X3Qgb2ZmSW5kZXggPSAwOwogICAgIGJvb2wgdHJhY2tNZW51SXRlbVNlbGVjdGVkID0gZmFsc2U7
CiAKLSAgICBpZiAoIW1fbWVkaWFFbGVtZW50IHx8ICFtX21lZGlhRWxlbWVudC0+bWVkaWFDb250
cm9sc0hvc3QoKSkKKyAgICBhdXRvIGhvc3QgPSBtX21lZGlhRWxlbWVudCA/IG1fbWVkaWFFbGVt
ZW50LT5tZWRpYUNvbnRyb2xzSG9zdCgpIDogbnVsbHB0cjsKKworICAgIGlmICghaG9zdCkKICAg
ICAgICAgcmV0dXJuIHNlbGVjdGVkSW5kZXg7CiAKLSAgICBBdG9taWNTdHJpbmcgZGlzcGxheU1v
ZGUgPSBtX21lZGlhRWxlbWVudC0+bWVkaWFDb250cm9sc0hvc3QoKS0+Y2FwdGlvbkRpc3BsYXlN
b2RlKCk7Ci0gICAgVGV4dFRyYWNrKiBvZmZJdGVtID0gbV9tZWRpYUVsZW1lbnQtPm1lZGlhQ29u
dHJvbHNIb3N0KCktPmNhcHRpb25NZW51T2ZmSXRlbSgpOwotICAgIFRleHRUcmFjayogYXV0b21h
dGljSXRlbSA9IG1fbWVkaWFFbGVtZW50LT5tZWRpYUNvbnRyb2xzSG9zdCgpLT5jYXB0aW9uTWVu
dUF1dG9tYXRpY0l0ZW0oKTsKKyAgICBBdG9taWNTdHJpbmcgZGlzcGxheU1vZGUgPSBob3N0LT5j
YXB0aW9uRGlzcGxheU1vZGUoKTsKKyAgICBUZXh0VHJhY2sqIG9mZkl0ZW0gPSBob3N0LT5jYXB0
aW9uTWVudU9mZkl0ZW0oKTsKKyAgICBUZXh0VHJhY2sqIGF1dG9tYXRpY0l0ZW0gPSBob3N0LT5j
YXB0aW9uTWVudUF1dG9tYXRpY0l0ZW0oKTsKIAogICAgIGZvciAoc2l6ZV90IGluZGV4ID0gMDsg
aW5kZXggPCBtX2xlZ2libGVUcmFja3NGb3JNZW51LnNpemUoKTsgaW5kZXgrKykgewogICAgICAg
ICBhdXRvJiB0cmFjayA9IG1fbGVnaWJsZVRyYWNrc0Zvck1lbnVbaW5kZXhdOwpAQCAtNDE3LDEy
ICs0MjAsMzcgQEAgdWludDY0X3QgV2ViUGxheWJhY2tTZXNzaW9uTW9kZWxNZWRpYUVsZW1lbnQ6
OmxlZ2libGVNZWRpYVNlbGVjdGVkSW5kZXgoKSBjb25zdAogCiBib29sIFdlYlBsYXliYWNrU2Vz
c2lvbk1vZGVsTWVkaWFFbGVtZW50OjpleHRlcm5hbFBsYXliYWNrRW5hYmxlZCgpIGNvbnN0CiB7
Ci0gICAgcmV0dXJuIG1fbWVkaWFFbGVtZW50ID8gbV9tZWRpYUVsZW1lbnQtPndlYmtpdEN1cnJl
bnRQbGF5YmFja1RhcmdldElzV2lyZWxlc3MoKSA6IGZhbHNlOworICAgIHJldHVybiBtX21lZGlh
RWxlbWVudCAmJiBtX21lZGlhRWxlbWVudC0+d2Via2l0Q3VycmVudFBsYXliYWNrVGFyZ2V0SXNX
aXJlbGVzcygpOworfQorCitXZWJQbGF5YmFja1Nlc3Npb25Nb2RlbDo6RXh0ZXJuYWxQbGF5YmFj
a1RhcmdldFR5cGUgV2ViUGxheWJhY2tTZXNzaW9uTW9kZWxNZWRpYUVsZW1lbnQ6OmV4dGVybmFs
UGxheWJhY2tUYXJnZXRUeXBlKCkgY29uc3QKK3sKKyAgICBpZiAoIW1fbWVkaWFFbGVtZW50IHx8
ICFtX21lZGlhRWxlbWVudC0+bWVkaWFDb250cm9sc0hvc3QoKSkKKyAgICAgICAgcmV0dXJuIFRh
cmdldFR5cGVOb25lOworCisgICAgc3dpdGNoIChtX21lZGlhRWxlbWVudC0+bWVkaWFDb250cm9s
c0hvc3QoKS0+ZXh0ZXJuYWxEZXZpY2VUeXBlKCkpIHsKKyAgICBkZWZhdWx0OgorICAgICAgICBB
U1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgcmV0dXJuIFRhcmdldFR5cGVOb25lOworICAg
IGNhc2UgTWVkaWFDb250cm9sc0hvc3Q6OkRldmljZVR5cGU6Ok5vbmU6CisgICAgICAgIHJldHVy
biBUYXJnZXRUeXBlTm9uZTsKKyAgICBjYXNlIE1lZGlhQ29udHJvbHNIb3N0OjpEZXZpY2VUeXBl
OjpBaXJwbGF5OgorICAgICAgICByZXR1cm4gVGFyZ2V0VHlwZUFpclBsYXk7CisgICAgY2FzZSBN
ZWRpYUNvbnRyb2xzSG9zdDo6RGV2aWNlVHlwZTo6VHZvdXQ6CisgICAgICAgIHJldHVybiBUYXJn
ZXRUeXBlVFZPdXQ7CisgICAgfQorfQorCitTdHJpbmcgV2ViUGxheWJhY2tTZXNzaW9uTW9kZWxN
ZWRpYUVsZW1lbnQ6OmV4dGVybmFsUGxheWJhY2tMb2NhbGl6ZWREZXZpY2VOYW1lKCkgY29uc3QK
K3sKKyAgICBpZiAobV9tZWRpYUVsZW1lbnQgJiYgbV9tZWRpYUVsZW1lbnQtPm1lZGlhQ29udHJv
bHNIb3N0KCkpCisgICAgICAgIHJldHVybiBtX21lZGlhRWxlbWVudC0+bWVkaWFDb250cm9sc0hv
c3QoKS0+ZXh0ZXJuYWxEZXZpY2VEaXNwbGF5TmFtZSgpOworICAgIHJldHVybiBlbXB0eVN0cmlu
ZygpOwogfQogCiBib29sIFdlYlBsYXliYWNrU2Vzc2lvbk1vZGVsTWVkaWFFbGVtZW50Ojp3aXJl
bGVzc1ZpZGVvUGxheWJhY2tEaXNhYmxlZCgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1fbWVkaWFF
bGVtZW50ID8gbV9tZWRpYUVsZW1lbnQtPm1lZGlhU2Vzc2lvbigpLndpcmVsZXNzVmlkZW9QbGF5
YmFja0Rpc2FibGVkKCptX21lZGlhRWxlbWVudCkgOiBmYWxzZTsKKyAgICByZXR1cm4gbV9tZWRp
YUVsZW1lbnQgJiYgbV9tZWRpYUVsZW1lbnQtPm1lZGlhU2Vzc2lvbigpLndpcmVsZXNzVmlkZW9Q
bGF5YmFja0Rpc2FibGVkKCptX21lZGlhRWxlbWVudCk7CiB9CiAKICNlbmRpZgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvV2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJm
YWNlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9XZWJWaWRlb0Z1bGxzY3JlZW5J
bnRlcmZhY2UuaAppbmRleCBhOGVmMjk1MGFiOGU3YWFmZTQ0MDQ3NDhiMTYzNzVjY2NmYmYzZTA1
Li5kZjdmZTkyMWIzNmQzMzYzOTA2MzYzMTgyMzRjYTQxZTM2ZjQ2NDVjIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9XZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2Uu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9XZWJWaWRlb0Z1bGxzY3JlZW5J
bnRlcmZhY2UuaApAQCAtMzYsMTAgKzM2LDkgQEAgV0VCQ09SRV9FWFBPUlQgYm9vbCBzdXBwb3J0
c1BpY3R1cmVJblBpY3R1cmUoKTsKIAogY2xhc3MgVGltZVJhbmdlczsKIAotY2xhc3MgV2ViVmlk
ZW9GdWxsc2NyZWVuSW50ZXJmYWNlIDogcHVibGljIFdlYlBsYXliYWNrU2Vzc2lvbkludGVyZmFj
ZSB7CitjbGFzcyBXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2UgewogcHVibGljOgogICAgIHZp
cnR1YWwgfldlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZSgpIHsgfTsKLSAgICB2aXJ0dWFsIHZv
aWQgc2V0VmlkZW9EaW1lbnNpb25zKGJvb2wgaGFzVmlkZW8sIGZsb2F0IHdpZHRoLCBmbG9hdCBo
ZWlnaHQpID0gMDsKIH07CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2NvY29hL1dlYlZpZGVvRnVsbHNjcmVlbk1vZGVsLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9jb2NvYS9XZWJWaWRlb0Z1bGxzY3JlZW5Nb2RlbC5oCmluZGV4IDE3MDAyNTJlMzgyYWEwZTRk
NGNlM2ExMTZjMWFiMGYyYjE3NmUxOTkuLjFiMmM3YWYxNTNhNTkwZDhlYjRjNjVjMGYxYjg1NTJm
NGE4NDVlMTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1dlYlZp
ZGVvRnVsbHNjcmVlbk1vZGVsLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2Ev
V2ViVmlkZW9GdWxsc2NyZWVuTW9kZWwuaApAQCAtMzUsMTUgKzM1LDMwIEBACiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAorY2xhc3MgV2ViVmlkZW9GdWxsc2NyZWVuTW9kZWxDbGllbnQ7CisKIGNs
YXNzIFdlYlZpZGVvRnVsbHNjcmVlbk1vZGVsIHsKIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5XZWJW
aWRlb0Z1bGxzY3JlZW5Nb2RlbCgpIHsgfTsKKyAgICB2aXJ0dWFsIHZvaWQgYWRkQ2xpZW50KFdl
YlZpZGVvRnVsbHNjcmVlbk1vZGVsQ2xpZW50JikgPSAwOworICAgIHZpcnR1YWwgdm9pZCByZW1v
dmVDbGllbnQoV2ViVmlkZW9GdWxsc2NyZWVuTW9kZWxDbGllbnQmKT0gMDsKKwogICAgIHZpcnR1
YWwgdm9pZCByZXF1ZXN0RnVsbHNjcmVlbk1vZGUoSFRNTE1lZGlhRWxlbWVudEVudW1zOjpWaWRl
b0Z1bGxzY3JlZW5Nb2RlKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHNldFZpZGVvTGF5ZXJGcmFt
ZShGbG9hdFJlY3QpID0gMDsKICAgICBlbnVtIFZpZGVvR3Jhdml0eSB7IFZpZGVvR3Jhdml0eVJl
c2l6ZSwgVmlkZW9HcmF2aXR5UmVzaXplQXNwZWN0LCBWaWRlb0dyYXZpdHlSZXNpemVBc3BlY3RG
aWxsIH07CiAgICAgdmlydHVhbCB2b2lkIHNldFZpZGVvTGF5ZXJHcmF2aXR5KFZpZGVvR3Jhdml0
eSkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBmdWxsc2NyZWVuTW9kZUNoYW5nZWQoSFRNTE1lZGlh
RWxlbWVudEVudW1zOjpWaWRlb0Z1bGxzY3JlZW5Nb2RlKSA9IDA7CisKICAgICB2aXJ0dWFsIGJv
b2wgaXNWaXNpYmxlKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgRmxvYXRTaXplIHZpZGVvRGlt
ZW5zaW9ucygpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgaGFzVmlkZW8oKSBjb25zdCA9
IDA7Cit9OworCitjbGFzcyBXZWJWaWRlb0Z1bGxzY3JlZW5Nb2RlbENsaWVudCB7CitwdWJsaWM6
CisgICAgdmlydHVhbCB+V2ViVmlkZW9GdWxsc2NyZWVuTW9kZWxDbGllbnQoKSB7IH0KKyAgICB2
aXJ0dWFsIHZvaWQgaGFzVmlkZW9DaGFuZ2VkKGJvb2wpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQg
dmlkZW9EaW1lbnNpb25zQ2hhbmdlZChjb25zdCBGbG9hdFNpemUmKSA9IDA7CiB9OwogCiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9XZWJWaWRlb0Z1bGxzY3Jl
ZW5Nb2RlbFZpZGVvRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvV2Vi
VmlkZW9GdWxsc2NyZWVuTW9kZWxWaWRlb0VsZW1lbnQuaAppbmRleCBkNWQ3ZGYzMGJlOGZkMTJk
ZWI0NTljYzFlNDY1ZDdjNDQzOWU5MDdiLi5mZmM4NzQ5ODZiNDE1YzZmZDA2ZGQ1ZDQyNjUzNDQw
OTU2NWU1MDVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9XZWJW
aWRlb0Z1bGxzY3JlZW5Nb2RlbFZpZGVvRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2NvY29hL1dlYlZpZGVvRnVsbHNjcmVlbk1vZGVsVmlkZW9FbGVtZW50LmgKQEAgLTM1
LDYgKzM1LDcgQEAKICNpbmNsdWRlICJQbGF0Zm9ybUxheWVyLmgiCiAjaW5jbHVkZSAiV2ViVmlk
ZW9GdWxsc2NyZWVuTW9kZWwuaCIKICNpbmNsdWRlIDxmdW5jdGlvbmFsPgorI2luY2x1ZGUgPHd0
Zi9IYXNoU2V0Lmg+CiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi9SZXRh
aW5QdHIuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CkBAIC00NCw0NCArNDUsNTAgQEAgY2xh
c3MgQXVkaW9UcmFjazsKIGNsYXNzIEhUTUxWaWRlb0VsZW1lbnQ7CiBjbGFzcyBUZXh0VHJhY2s7
CiBjbGFzcyBXZWJQbGF5YmFja1Nlc3Npb25Nb2RlbE1lZGlhRWxlbWVudDsKLWNsYXNzIFdlYlZp
ZGVvRnVsbHNjcmVlbkludGVyZmFjZTsKIAogY2xhc3MgV2ViVmlkZW9GdWxsc2NyZWVuTW9kZWxW
aWRlb0VsZW1lbnQgOiBwdWJsaWMgV2ViVmlkZW9GdWxsc2NyZWVuTW9kZWwsIHB1YmxpYyBFdmVu
dExpc3RlbmVyIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmUHRyPFdlYlZpZGVvRnVsbHNjcmVl
bk1vZGVsVmlkZW9FbGVtZW50PiBjcmVhdGUoV2ViUGxheWJhY2tTZXNzaW9uTW9kZWxNZWRpYUVs
ZW1lbnQmIHBsYXliYWNrU2Vzc2lvbk1vZGVsKQorICAgIHN0YXRpYyBSZWZQdHI8V2ViVmlkZW9G
dWxsc2NyZWVuTW9kZWxWaWRlb0VsZW1lbnQ+IGNyZWF0ZSgpCiAgICAgewotICAgICAgICByZXR1
cm4gYWRvcHRSZWYoKm5ldyBXZWJWaWRlb0Z1bGxzY3JlZW5Nb2RlbFZpZGVvRWxlbWVudChwbGF5
YmFja1Nlc3Npb25Nb2RlbCkpOworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBXZWJWaWRl
b0Z1bGxzY3JlZW5Nb2RlbFZpZGVvRWxlbWVudCgpKTsKICAgICB9CiAgICAgV0VCQ09SRV9FWFBP
UlQgdmlydHVhbCB+V2ViVmlkZW9GdWxsc2NyZWVuTW9kZWxWaWRlb0VsZW1lbnQoKTsKLSAgICBX
RUJDT1JFX0VYUE9SVCB2b2lkIHNldFdlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZShXZWJWaWRl
b0Z1bGxzY3JlZW5JbnRlcmZhY2UqKTsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldFZpZGVv
RWxlbWVudChIVE1MVmlkZW9FbGVtZW50Kik7CiAgICAgV0VCQ09SRV9FWFBPUlQgSFRNTFZpZGVv
RWxlbWVudCogdmlkZW9FbGVtZW50KCkgY29uc3QgeyByZXR1cm4gbV92aWRlb0VsZW1lbnQuZ2V0
KCk7IH0KICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldFZpZGVvRnVsbHNjcmVlbkxheWVyKFBs
YXRmb3JtTGF5ZXIqLCBzdGQ6OmZ1bmN0aW9uPHZvaWQoKT4gY29tcGxldGlvbkhhbmRsZXIgPSBb
XSB7IH0pOwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgd2FpdEZvclByZXBhcmVkRm9ySW5saW5l
VGhlbihzdGQ6OmZ1bmN0aW9uPHZvaWQoKT4gY29tcGxldGlvbkhhbmRsZXIgPSBbXSB7IH0pOwot
ICAgIFdlYlBsYXliYWNrU2Vzc2lvbk1vZGVsTWVkaWFFbGVtZW50JiBwbGF5YmFja1Nlc3Npb25N
b2RlbCgpIHsgcmV0dXJuIG1fcGxheWJhY2tTZXNzaW9uTW9kZWw7IH0KICAgICAKICAgICBXRUJD
T1JFX0VYUE9SVCB2b2lkIGhhbmRsZUV2ZW50KFdlYkNvcmU6OlNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQqLCBXZWJDb3JlOjpFdmVudCopIG92ZXJyaWRlOwogICAgIHZvaWQgdXBkYXRlRm9yRXZlbnRO
YW1lKGNvbnN0IFdURjo6QXRvbWljU3RyaW5nJik7CiAgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0
IEV2ZW50TGlzdGVuZXImIHJocykgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gc3RhdGljX2Nhc3Q8
Y29uc3QgV2ViQ29yZTo6RXZlbnRMaXN0ZW5lcio+KHRoaXMpID09ICZyaHM7IH0KIAorICAgIFdF
QkNPUkVfRVhQT1JUIHZvaWQgYWRkQ2xpZW50KFdlYlZpZGVvRnVsbHNjcmVlbk1vZGVsQ2xpZW50
Jikgb3ZlcnJpZGU7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCByZW1vdmVDbGllbnQoV2ViVmlk
ZW9GdWxsc2NyZWVuTW9kZWxDbGllbnQmKSBvdmVycmlkZTsKICAgICBXRUJDT1JFX0VYUE9SVCB2
b2lkIHJlcXVlc3RGdWxsc2NyZWVuTW9kZShIVE1MTWVkaWFFbGVtZW50RW51bXM6OlZpZGVvRnVs
bHNjcmVlbk1vZGUpIG92ZXJyaWRlOwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0VmlkZW9M
YXllckZyYW1lKEZsb2F0UmVjdCkgb3ZlcnJpZGU7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBz
ZXRWaWRlb0xheWVyR3Jhdml0eShWaWRlb0dyYXZpdHkpIG92ZXJyaWRlOwogICAgIFdFQkNPUkVf
RVhQT1JUIHZvaWQgZnVsbHNjcmVlbk1vZGVDaGFuZ2VkKEhUTUxNZWRpYUVsZW1lbnRFbnVtczo6
VmlkZW9GdWxsc2NyZWVuTW9kZSkgb3ZlcnJpZGU7CiAgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBp
c1Zpc2libGUoKSBjb25zdCBvdmVycmlkZTsKKyAgICBXRUJDT1JFX0VYUE9SVCBGbG9hdFNpemUg
dmlkZW9EaW1lbnNpb25zKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV92aWRlb0RpbWVuc2lv
bnM7IH0KKyAgICBXRUJDT1JFX0VYUE9SVCBib29sIGhhc1ZpZGVvKCkgY29uc3Qgb3ZlcnJpZGUg
eyByZXR1cm4gbV9oYXNWaWRlbzsgfQorCiAKIHByb3RlY3RlZDoKLSAgICBXRUJDT1JFX0VYUE9S
VCBXZWJWaWRlb0Z1bGxzY3JlZW5Nb2RlbFZpZGVvRWxlbWVudChXZWJQbGF5YmFja1Nlc3Npb25N
b2RlbE1lZGlhRWxlbWVudCYpOworICAgIFdFQkNPUkVfRVhQT1JUIFdlYlZpZGVvRnVsbHNjcmVl
bk1vZGVsVmlkZW9FbGVtZW50KCk7CiAKIHByaXZhdGU6CisgICAgdm9pZCBzZXRIYXNWaWRlbyhi
b29sKTsKKyAgICB2b2lkIHNldFZpZGVvRGltZW5zaW9ucyhjb25zdCBGbG9hdFNpemUmKTsKKwog
ICAgIHN0YXRpYyBjb25zdCBWZWN0b3I8V1RGOjpBdG9taWNTdHJpbmc+JiBvYnNlcnZlZEV2ZW50
TmFtZXMoKTsKICAgICBjb25zdCBXVEY6OkF0b21pY1N0cmluZyYgZXZlbnROYW1lQWxsKCk7CiAK
LSAgICBSZWY8V2ViUGxheWJhY2tTZXNzaW9uTW9kZWxNZWRpYUVsZW1lbnQ+IG1fcGxheWJhY2tT
ZXNzaW9uTW9kZWw7CiAgICAgUmVmUHRyPEhUTUxWaWRlb0VsZW1lbnQ+IG1fdmlkZW9FbGVtZW50
OwogICAgIFJldGFpblB0cjxQbGF0Zm9ybUxheWVyPiBtX3ZpZGVvRnVsbHNjcmVlbkxheWVyOwog
ICAgIGJvb2wgbV9pc0xpc3RlbmluZyB7IGZhbHNlIH07Ci0gICAgV2ViVmlkZW9GdWxsc2NyZWVu
SW50ZXJmYWNlKiBtX3ZpZGVvRnVsbHNjcmVlbkludGVyZmFjZSB7IG51bGxwdHIgfTsKKyAgICBI
YXNoU2V0PFdlYlZpZGVvRnVsbHNjcmVlbk1vZGVsQ2xpZW50Kj4gbV9jbGllbnRzOworICAgIGJv
b2wgbV9oYXNWaWRlbyB7IGZhbHNlIH07CisgICAgRmxvYXRTaXplIG1fdmlkZW9EaW1lbnNpb25z
OwogICAgIEZsb2F0UmVjdCBtX3ZpZGVvRnJhbWU7CiAgICAgVmVjdG9yPFJlZlB0cjxUZXh0VHJh
Y2s+PiBtX2xlZ2libGVUcmFja3NGb3JNZW51OwogICAgIFZlY3RvcjxSZWZQdHI8QXVkaW9UcmFj
az4+IG1fYXVkaW9UcmFja3NGb3JNZW51OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vY29jb2EvV2ViVmlkZW9GdWxsc2NyZWVuTW9kZWxWaWRlb0VsZW1lbnQubW0gYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9XZWJWaWRlb0Z1bGxzY3JlZW5Nb2RlbFZpZGVvRWxl
bWVudC5tbQppbmRleCA2NWE4MmI2OGM3MzM1MTY3Yjk2YjRiZjcwZGE1NzRlMzNlMGFjZDZhLi4x
MTY1YTE5ZDlmMWU0ODJjMGIxMDVlYTZiZGYxZGY1ZGRhZjI3NmY3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9XZWJWaWRlb0Z1bGxzY3JlZW5Nb2RlbFZpZGVvRWxl
bWVudC5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9XZWJWaWRlb0Z1bGxz
Y3JlZW5Nb2RlbFZpZGVvRWxlbWVudC5tbQpAQCAtNDgsOSArNDgsOCBAQAogCiB1c2luZyBuYW1l
c3BhY2UgV2ViQ29yZTsKIAotV2ViVmlkZW9GdWxsc2NyZWVuTW9kZWxWaWRlb0VsZW1lbnQ6Oldl
YlZpZGVvRnVsbHNjcmVlbk1vZGVsVmlkZW9FbGVtZW50KFdlYlBsYXliYWNrU2Vzc2lvbk1vZGVs
TWVkaWFFbGVtZW50JiBwbGF5YmFja1Nlc3Npb25Nb2RlbCkKK1dlYlZpZGVvRnVsbHNjcmVlbk1v
ZGVsVmlkZW9FbGVtZW50OjpXZWJWaWRlb0Z1bGxzY3JlZW5Nb2RlbFZpZGVvRWxlbWVudCgpCiAg
ICAgOiBFdmVudExpc3RlbmVyKEV2ZW50TGlzdGVuZXI6OkNQUEV2ZW50TGlzdGVuZXJUeXBlKQot
ICAgICwgbV9wbGF5YmFja1Nlc3Npb25Nb2RlbChwbGF5YmFja1Nlc3Npb25Nb2RlbCkKIHsKIH0K
IApAQCAtNTgsMTggKzU3LDYgQEAgV2ViVmlkZW9GdWxsc2NyZWVuTW9kZWxWaWRlb0VsZW1lbnQ6
On5XZWJWaWRlb0Z1bGxzY3JlZW5Nb2RlbFZpZGVvRWxlbWVudCgpCiB7CiB9CiAKLXZvaWQgV2Vi
VmlkZW9GdWxsc2NyZWVuTW9kZWxWaWRlb0VsZW1lbnQ6OnNldFdlYlZpZGVvRnVsbHNjcmVlbklu
dGVyZmFjZShXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2UqIGludGVyZmFjZSkKLXsKLSAgICBp
ZiAoaW50ZXJmYWNlID09IG1fdmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlKQotICAgICAgICByZXR1
cm47Ci0KLSAgICBtX3ZpZGVvRnVsbHNjcmVlbkludGVyZmFjZSA9IGludGVyZmFjZTsKLSAgICBt
X3BsYXliYWNrU2Vzc2lvbk1vZGVsLT5zZXRXZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2UoaW50
ZXJmYWNlKTsKLQotICAgIGlmIChtX3ZpZGVvRnVsbHNjcmVlbkludGVyZmFjZSAmJiBtX3ZpZGVv
RWxlbWVudCkKLSAgICAgICAgbV92aWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2UtPnNldFZpZGVvRGlt
ZW5zaW9ucyh0cnVlLCBtX3ZpZGVvRWxlbWVudC0+dmlkZW9XaWR0aCgpLCBtX3ZpZGVvRWxlbWVu
dC0+dmlkZW9IZWlnaHQoKSk7Ci19Ci0KIHZvaWQgV2ViVmlkZW9GdWxsc2NyZWVuTW9kZWxWaWRl
b0VsZW1lbnQ6OnNldFZpZGVvRWxlbWVudChIVE1MVmlkZW9FbGVtZW50KiB2aWRlb0VsZW1lbnQp
CiB7CiAgICAgaWYgKG1fdmlkZW9FbGVtZW50ID09IHZpZGVvRWxlbWVudCkKQEAgLTg2LDE3ICs3
MywxMyBAQCB2b2lkIFdlYlZpZGVvRnVsbHNjcmVlbk1vZGVsVmlkZW9FbGVtZW50OjpzZXRWaWRl
b0VsZW1lbnQoSFRNTFZpZGVvRWxlbWVudCogdmlkZQogCiAgICAgbV92aWRlb0VsZW1lbnQgPSB2
aWRlb0VsZW1lbnQ7CiAKLSAgICBpZiAoIW1fdmlkZW9FbGVtZW50KQotICAgICAgICByZXR1cm47
Ci0KLSAgICBmb3IgKGF1dG8mIGV2ZW50TmFtZSA6IG9ic2VydmVkRXZlbnROYW1lcygpKQotICAg
ICAgICBtX3ZpZGVvRWxlbWVudC0+YWRkRXZlbnRMaXN0ZW5lcihldmVudE5hbWUsICp0aGlzLCBm
YWxzZSk7Ci0gICAgbV9pc0xpc3RlbmluZyA9IHRydWU7CisgICAgaWYgKG1fdmlkZW9FbGVtZW50
KSB7CisgICAgICAgIGZvciAoYXV0byYgZXZlbnROYW1lIDogb2JzZXJ2ZWRFdmVudE5hbWVzKCkp
CisgICAgICAgICAgICBtX3ZpZGVvRWxlbWVudC0+YWRkRXZlbnRMaXN0ZW5lcihldmVudE5hbWUs
ICp0aGlzLCBmYWxzZSk7CisgICAgICAgIG1faXNMaXN0ZW5pbmcgPSB0cnVlOworICAgIH0KIAog
ICAgIHVwZGF0ZUZvckV2ZW50TmFtZShldmVudE5hbWVBbGwoKSk7Ci0KLSAgICBpZiAobV92aWRl
b0Z1bGxzY3JlZW5JbnRlcmZhY2UpCi0gICAgICAgIG1fdmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNl
LT5zZXRWaWRlb0RpbWVuc2lvbnModHJ1ZSwgdmlkZW9FbGVtZW50LT52aWRlb1dpZHRoKCksIHZp
ZGVvRWxlbWVudC0+dmlkZW9IZWlnaHQoKSk7CiB9CiAKIHZvaWQgV2ViVmlkZW9GdWxsc2NyZWVu
TW9kZWxWaWRlb0VsZW1lbnQ6OmhhbmRsZUV2ZW50KFdlYkNvcmU6OlNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQqLCBXZWJDb3JlOjpFdmVudCogZXZlbnQpCkBAIC0xMDYsMTQgKzg5LDE2IEBAIHZvaWQg
V2ViVmlkZW9GdWxsc2NyZWVuTW9kZWxWaWRlb0VsZW1lbnQ6OmhhbmRsZUV2ZW50KFdlYkNvcmU6
OlNjcmlwdEV4ZWN1dGlvbkNvCiAKIHZvaWQgV2ViVmlkZW9GdWxsc2NyZWVuTW9kZWxWaWRlb0Vs
ZW1lbnQ6OnVwZGF0ZUZvckV2ZW50TmFtZShjb25zdCBXVEY6OkF0b21pY1N0cmluZyYgZXZlbnRO
YW1lKQogewotICAgIGlmICghbV92aWRlb0VsZW1lbnQgfHwgIW1fdmlkZW9GdWxsc2NyZWVuSW50
ZXJmYWNlKQorICAgIGlmIChtX2NsaWVudHMuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm47CiAg
ICAgCiAgICAgYm9vbCBhbGwgPSBldmVudE5hbWUgPT0gZXZlbnROYW1lQWxsKCk7CiAKICAgICBp
ZiAoYWxsCi0gICAgICAgIHx8IGV2ZW50TmFtZSA9PSBldmVudE5hbWVzKCkucmVzaXplRXZlbnQp
Ci0gICAgICAgIG1fdmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlLT5zZXRWaWRlb0RpbWVuc2lvbnMo
dHJ1ZSwgbV92aWRlb0VsZW1lbnQtPnZpZGVvV2lkdGgoKSwgbV92aWRlb0VsZW1lbnQtPnZpZGVv
SGVpZ2h0KCkpOworICAgICAgICB8fCBldmVudE5hbWUgPT0gZXZlbnROYW1lcygpLnJlc2l6ZUV2
ZW50KSB7CisgICAgICAgIHNldEhhc1ZpZGVvKG1fdmlkZW9FbGVtZW50KTsKKyAgICAgICAgc2V0
VmlkZW9EaW1lbnNpb25zKG1fdmlkZW9FbGVtZW50ID8gRmxvYXRTaXplKG1fdmlkZW9FbGVtZW50
LT52aWRlb1dpZHRoKCksIG1fdmlkZW9FbGVtZW50LT52aWRlb0hlaWdodCgpKSA6IEZsb2F0U2l6
ZSgpKTsKKyAgICB9CiB9CiAKIHZvaWQgV2ViVmlkZW9GdWxsc2NyZWVuTW9kZWxWaWRlb0VsZW1l
bnQ6OnNldFZpZGVvRnVsbHNjcmVlbkxheWVyKFBsYXRmb3JtTGF5ZXIqIHZpZGVvTGF5ZXIsIHN0
ZDo6ZnVuY3Rpb248dm9pZCgpPiBjb21wbGV0aW9uSGFuZGxlcikKQEAgLTE5OSw2ICsxODQsMTgg
QEAgdm9pZCBXZWJWaWRlb0Z1bGxzY3JlZW5Nb2RlbFZpZGVvRWxlbWVudDo6ZnVsbHNjcmVlbk1v
ZGVDaGFuZ2VkKEhUTUxNZWRpYUVsZW1lbnQKICAgICAgICAgbV92aWRlb0VsZW1lbnQtPmZ1bGxz
Y3JlZW5Nb2RlQ2hhbmdlZCh2aWRlb0Z1bGxzY3JlZW5Nb2RlKTsKIH0KIAordm9pZCBXZWJWaWRl
b0Z1bGxzY3JlZW5Nb2RlbFZpZGVvRWxlbWVudDo6YWRkQ2xpZW50KFdlYlZpZGVvRnVsbHNjcmVl
bk1vZGVsQ2xpZW50JiBjbGllbnQpCit7CisgICAgQVNTRVJUKCFtX2NsaWVudHMuY29udGFpbnMo
JmNsaWVudCkpOworICAgIG1fY2xpZW50cy5hZGQoJmNsaWVudCk7Cit9CisKK3ZvaWQgV2ViVmlk
ZW9GdWxsc2NyZWVuTW9kZWxWaWRlb0VsZW1lbnQ6OnJlbW92ZUNsaWVudChXZWJWaWRlb0Z1bGxz
Y3JlZW5Nb2RlbENsaWVudCYgY2xpZW50KQoreworICAgIEFTU0VSVChtX2NsaWVudHMuY29udGFp
bnMoJmNsaWVudCkpOworICAgIG1fY2xpZW50cy5yZW1vdmUoJmNsaWVudCk7Cit9CisKIGJvb2wg
V2ViVmlkZW9GdWxsc2NyZWVuTW9kZWxWaWRlb0VsZW1lbnQ6OmlzVmlzaWJsZSgpIGNvbnN0CiB7
CiAgICAgaWYgKCFtX3ZpZGVvRWxlbWVudCkKQEAgLTIxMCw0ICsyMDcsMjYgQEAgYm9vbCBXZWJW
aWRlb0Z1bGxzY3JlZW5Nb2RlbFZpZGVvRWxlbWVudDo6aXNWaXNpYmxlKCkgY29uc3QKICAgICBy
ZXR1cm4gZmFsc2U7CiB9CiAKK3ZvaWQgV2ViVmlkZW9GdWxsc2NyZWVuTW9kZWxWaWRlb0VsZW1l
bnQ6OnNldEhhc1ZpZGVvKGJvb2wgaGFzVmlkZW8pCit7CisgICAgaWYgKGhhc1ZpZGVvID09IG1f
aGFzVmlkZW8pCisgICAgICAgIHJldHVybjsKKworICAgIG1faGFzVmlkZW8gPSBoYXNWaWRlbzsK
KworICAgIGZvciAoYXV0byYgY2xpZW50IDogbV9jbGllbnRzKQorICAgICAgICBjbGllbnQtPmhh
c1ZpZGVvQ2hhbmdlZChtX2hhc1ZpZGVvKTsKK30KKwordm9pZCBXZWJWaWRlb0Z1bGxzY3JlZW5N
b2RlbFZpZGVvRWxlbWVudDo6c2V0VmlkZW9EaW1lbnNpb25zKGNvbnN0IEZsb2F0U2l6ZSYgdmlk
ZW9EaW1lbnNpb25zKQoreworICAgIGlmIChtX3ZpZGVvRGltZW5zaW9ucyA9PSB2aWRlb0RpbWVu
c2lvbnMpCisgICAgICAgIHJldHVybjsKKworICAgIG1fdmlkZW9EaW1lbnNpb25zID0gdmlkZW9E
aW1lbnNpb25zOworCisgICAgZm9yIChhdXRvJiBjbGllbnQgOiBtX2NsaWVudHMpCisgICAgICAg
IGNsaWVudC0+dmlkZW9EaW1lbnNpb25zQ2hhbmdlZChtX3ZpZGVvRGltZW5zaW9ucyk7Cit9CisK
ICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1dlYkFWUGxh
eWVyQ29udHJvbGxlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1dlYkFWUGxheWVy
Q29udHJvbGxlci5oCmluZGV4IDgyMzFhOGU3MzMxOTQ4NGMyMzVhMzZkZWYxZTUxYjNlMmU5NzZh
NDQuLjM2OTFiNjUyNGRiMmIxYTY2YWYxNzNmZGJmMzIwZGQ5MDk5MTg0MzcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9XZWJBVlBsYXllckNvbnRyb2xsZXIuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvV2ViQVZQbGF5ZXJDb250cm9sbGVyLmgKQEAg
LTQyLDggKzQyLDYgQEAgY2xhc3MgV2ViUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlQVZLaXQ7CiAg
ICAgQk9PTCBfcGljdHVyZUluUGljdHVyZUludGVycnVwdGVkOwogfQogCi0tICh2b2lkKXJlc2V0
U3RhdGU7Ci0KIEBwcm9wZXJ0eSAocmV0YWluKSBBVlBsYXllckNvbnRyb2xsZXIqIHBsYXllckNv
bnRyb2xsZXJQcm94eTsKIEBwcm9wZXJ0eSAoYXNzaWduKSBXZWJDb3JlOjpXZWJQbGF5YmFja1Nl
c3Npb25Nb2RlbCogZGVsZWdhdGU7CiBAcHJvcGVydHkgKGFzc2lnbikgV2ViQ29yZTo6V2ViUGxh
eWJhY2tTZXNzaW9uSW50ZXJmYWNlQVZLaXQqIHBsYXliYWNrU2Vzc2lvbkludGVyZmFjZTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9XZWJBVlBsYXllckNvbnRyb2xs
ZXIubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvV2ViQVZQbGF5ZXJDb250cm9sbGVy
Lm1tCmluZGV4IGUxZWEzYmQ3MDlkMTRhYzViMWFiOGZkMzIxMGEyMmE1YjQ3YjE0N2UuLjkyZjBi
NGM0NjAzZDBhY2FhM2YwYzZlNzIyMjU2MzNkMDBiNTQ5N2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2lvcy9XZWJBVlBsYXllckNvbnRyb2xsZXIubW0KKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vaW9zL1dlYkFWUGxheWVyQ29udHJvbGxlci5tbQpAQCAtNzQsMzgg
Kzc0LDYgQEAgLSAodm9pZClkZWFsbG9jCiAgICAgW3N1cGVyIGRlYWxsb2NdOwogfQogCi0tICh2
b2lkKXJlc2V0U3RhdGUKLXsKLSAgICBzZWxmLmNvbnRlbnREdXJhdGlvbiA9IDA7Ci0gICAgc2Vs
Zi5tYXhUaW1lID0gMDsKLSAgICBzZWxmLmNvbnRlbnREdXJhdGlvbldpdGhpbkVuZFRpbWVzID0g
MDsKLSAgICBzZWxmLmxvYWRlZFRpbWVSYW5nZXMgPSBAW107Ci0KLSAgICBzZWxmLmNhblBsYXkg
PSBOTzsKLSAgICBzZWxmLmNhblBhdXNlID0gTk87Ci0gICAgc2VsZi5jYW5Ub2dnbGVQbGF5YmFj
ayA9IE5POwotICAgIHNlbGYuaGFzRW5hYmxlZEF1ZGlvID0gTk87Ci0gICAgc2VsZi5jYW5TZWVr
ID0gTk87Ci0gICAgc2VsZi5taW5UaW1lID0gMDsKLSAgICBzZWxmLnN0YXR1cyA9IEFWUGxheWVy
Q29udHJvbGxlclN0YXR1c1Vua25vd247Ci0KLSAgICBzZWxmLnRpbWluZyA9IG5pbDsKLSAgICBz
ZWxmLnJhdGUgPSAwOwotCi0gICAgc2VsZi5oYXNFbmFibGVkVmlkZW8gPSBOTzsKLSAgICBzZWxm
LmNvbnRlbnREaW1lbnNpb25zID0gQ0dTaXplTWFrZSgwLCAwKTsKLQotICAgIHNlbGYuc2Vla2Fi
bGVUaW1lUmFuZ2VzID0gW05TTXV0YWJsZUFycmF5IGFycmF5XTsKLQotICAgIHNlbGYuY2FuU2Nh
bkJhY2t3YXJkID0gTk87Ci0KLSAgICBzZWxmLmF1ZGlvTWVkaWFTZWxlY3Rpb25PcHRpb25zID0g
bmlsOwotICAgIHNlbGYuY3VycmVudEF1ZGlvTWVkaWFTZWxlY3Rpb25PcHRpb24gPSBuaWw7Ci0K
LSAgICBzZWxmLmxlZ2libGVNZWRpYVNlbGVjdGlvbk9wdGlvbnMgPSBuaWw7Ci0gICAgc2VsZi5j
dXJyZW50TGVnaWJsZU1lZGlhU2VsZWN0aW9uT3B0aW9uID0gbmlsOwotfQotCiAtIChBVlBsYXll
ciAqKXBsYXllcgogewogICAgIHJldHVybiBuaWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9pb3MvV2ViUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlQVZLaXQuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9XZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2VBVktpdC5o
CmluZGV4IDcxNDc5NGZiM2NlMzU0ZGUxMTBkYTA4YTQxOWE3MDVkZmQ5YWQxNzEuLjIzZDc3MmRk
MTFiODEyZmYwMGQ4OTA2MGMyODg5NDQwMDU5Mjc1MGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2lvcy9XZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2VBVktpdC5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9XZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2VB
VktpdC5oCkBAIC0zMyw2ICszMyw3IEBACiAjaW5jbHVkZSAiSFRNTE1lZGlhRWxlbWVudEVudW1z
LmgiCiAjaW5jbHVkZSAiVGltZXIuaCIKICNpbmNsdWRlICJXZWJQbGF5YmFja1Nlc3Npb25JbnRl
cmZhY2UuaCIKKyNpbmNsdWRlICJXZWJQbGF5YmFja1Nlc3Npb25Nb2RlbC5oIgogI2luY2x1ZGUg
PGZ1bmN0aW9uYWw+CiAjaW5jbHVkZSA8b2JqYy9vYmpjLmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNv
dW50ZWQuaD4KQEAgLTU0LDUyICs1NSw0MyBAQCBjbGFzcyBJbnRSZWN0OwogY2xhc3MgV2ViUGxh
eWJhY2tTZXNzaW9uTW9kZWw7CiBjbGFzcyBXZWJQbGF5YmFja1Nlc3Npb25DaGFuZ2VPYnNlcnZl
cjsKIAotY2xhc3MgV2ViUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlQVZLaXRDbGllbnQgewotcHVi
bGljOgotICAgIHZpcnR1YWwgfldlYlBsYXliYWNrU2Vzc2lvbkludGVyZmFjZUFWS2l0Q2xpZW50
KCkgeyB9Ci0KLSAgICB2aXJ0dWFsIHZvaWQgZXh0ZXJuYWxQbGF5YmFja0VuYWJsZWRDaGFuZ2Vk
KGJvb2wpID0gMDsKLX07Ci0KIGNsYXNzIFdFQkNPUkVfRVhQT1JUIFdlYlBsYXliYWNrU2Vzc2lv
bkludGVyZmFjZUFWS2l0CiAgICAgOiBwdWJsaWMgV2ViUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNl
CisgICAgLCBwdWJsaWMgV2ViUGxheWJhY2tTZXNzaW9uTW9kZWxDbGllbnQKICAgICAsIHB1Ymxp
YyBSZWZDb3VudGVkPFdlYlBsYXliYWNrU2Vzc2lvbkludGVyZmFjZUFWS2l0PiB7CiAKIHB1Ymxp
YzoKLSAgICBzdGF0aWMgUmVmPFdlYlBsYXliYWNrU2Vzc2lvbkludGVyZmFjZUFWS2l0PiBjcmVh
dGUoKQorICAgIHN0YXRpYyBSZWY8V2ViUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlQVZLaXQ+IGNy
ZWF0ZShXZWJQbGF5YmFja1Nlc3Npb25Nb2RlbCYgbW9kZWwpCiAgICAgewotICAgICAgICByZXR1
cm4gYWRvcHRSZWYoKm5ldyBXZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2VBVktpdCgpKTsKKyAg
ICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgV2ViUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlQVZL
aXQobW9kZWwpKTsKICAgICB9CiAgICAgdmlydHVhbCB+V2ViUGxheWJhY2tTZXNzaW9uSW50ZXJm
YWNlQVZLaXQoKTsKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldFdlYlBsYXliYWNrU2Vzc2lv
bk1vZGVsKFdlYlBsYXliYWNrU2Vzc2lvbk1vZGVsKik7CiAgICAgV2ViUGxheWJhY2tTZXNzaW9u
TW9kZWwqIHdlYlBsYXliYWNrU2Vzc2lvbk1vZGVsKCkgY29uc3QgeyByZXR1cm4gbV9wbGF5YmFj
a1Nlc3Npb25Nb2RlbDsgfQotICAgIHZvaWQgc2V0Q2xpZW50KFdlYlBsYXliYWNrU2Vzc2lvbklu
dGVyZmFjZUFWS2l0Q2xpZW50KiBjbGllbnQpIHsgbV9jbGllbnQgPSBjbGllbnQ7IH0KIAorICAg
IC8vIFdlYlBsYXliYWNrU2Vzc2lvbkludGVyZmFjZQogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQg
cmVzZXRNZWRpYVN0YXRlKCkgb3ZlcnJpZGU7Ci0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRE
dXJhdGlvbihkb3VibGUpIG92ZXJyaWRlOwotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0Q3Vy
cmVudFRpbWUoZG91YmxlIGN1cnJlbnRUaW1lLCBkb3VibGUgYW5jaG9yVGltZSkgb3ZlcnJpZGU7
Ci0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRCdWZmZXJlZFRpbWUoZG91YmxlKSBvdmVycmlk
ZTsKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldFJhdGUoYm9vbCBpc1BsYXlpbmcsIGZsb2F0
IHBsYXliYWNrUmF0ZSkgb3ZlcnJpZGU7Ci0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRTZWVr
YWJsZVJhbmdlcyhjb25zdCBUaW1lUmFuZ2VzJikgb3ZlcnJpZGU7Ci0gICAgV0VCQ09SRV9FWFBP
UlQgdm9pZCBzZXRDYW5QbGF5RmFzdFJldmVyc2UoYm9vbCkgb3ZlcnJpZGU7Ci0gICAgV0VCQ09S
RV9FWFBPUlQgdm9pZCBzZXRBdWRpb01lZGlhU2VsZWN0aW9uT3B0aW9ucyhjb25zdCBWZWN0b3I8
V1RGOjpTdHJpbmc+JiBvcHRpb25zLCB1aW50NjRfdCBzZWxlY3RlZEluZGV4KSBvdmVycmlkZTsK
LSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldExlZ2libGVNZWRpYVNlbGVjdGlvbk9wdGlvbnMo
Y29uc3QgVmVjdG9yPFdURjo6U3RyaW5nPiYgb3B0aW9ucywgdWludDY0X3Qgc2VsZWN0ZWRJbmRl
eCkgb3ZlcnJpZGU7Ci0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRFeHRlcm5hbFBsYXliYWNr
KGJvb2wgZW5hYmxlZCwgRXh0ZXJuYWxQbGF5YmFja1RhcmdldFR5cGUsIFdURjo6U3RyaW5nIGxv
Y2FsaXplZERldmljZU5hbWUpIG92ZXJyaWRlOwotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0
V2lyZWxlc3NWaWRlb1BsYXliYWNrRGlzYWJsZWQoYm9vbCkgb3ZlcnJpZGU7Ci0gICAgYm9vbCB3
aXJlbGVzc1ZpZGVvUGxheWJhY2tEaXNhYmxlZCgpIGNvbnN0OworCisgICAgLy8gV2ViUGxheWJh
Y2tTZXNzaW9uTW9kZWxDbGllbnQKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGR1cmF0aW9uQ2hh
bmdlZChkb3VibGUpIG92ZXJyaWRlOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgY3VycmVudFRp
bWVDaGFuZ2VkKGRvdWJsZSBjdXJyZW50VGltZSwgZG91YmxlIGFuY2hvclRpbWUpIG92ZXJyaWRl
OworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgYnVmZmVyZWRUaW1lQ2hhbmdlZChkb3VibGUpIG92
ZXJyaWRlOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgcmF0ZUNoYW5nZWQoYm9vbCBpc1BsYXlp
bmcsIGZsb2F0IHBsYXliYWNrUmF0ZSkgb3ZlcnJpZGU7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9p
ZCBzZWVrYWJsZVJhbmdlc0NoYW5nZWQoY29uc3QgVGltZVJhbmdlcyYpIG92ZXJyaWRlOworICAg
IFdFQkNPUkVfRVhQT1JUIHZvaWQgY2FuUGxheUZhc3RSZXZlcnNlQ2hhbmdlZChib29sKSBvdmVy
cmlkZTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGF1ZGlvTWVkaWFTZWxlY3Rpb25PcHRpb25z
Q2hhbmdlZChjb25zdCBWZWN0b3I8U3RyaW5nPiYgb3B0aW9ucywgdWludDY0X3Qgc2VsZWN0ZWRJ
bmRleCkgb3ZlcnJpZGU7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBsZWdpYmxlTWVkaWFTZWxl
Y3Rpb25PcHRpb25zQ2hhbmdlZChjb25zdCBWZWN0b3I8U3RyaW5nPiYgb3B0aW9ucywgdWludDY0
X3Qgc2VsZWN0ZWRJbmRleCkgb3ZlcnJpZGU7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBleHRl
cm5hbFBsYXliYWNrQ2hhbmdlZChib29sIGVuYWJsZWQsIFdlYlBsYXliYWNrU2Vzc2lvbk1vZGVs
OjpFeHRlcm5hbFBsYXliYWNrVGFyZ2V0VHlwZSwgY29uc3QgU3RyaW5nJiBsb2NhbGl6ZWREZXZp
Y2VOYW1lKSBvdmVycmlkZTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHdpcmVsZXNzVmlkZW9Q
bGF5YmFja0Rpc2FibGVkQ2hhbmdlZChib29sKSBvdmVycmlkZTsKIAogICAgIFdFQkNPUkVfRVhQ
T1JUIHZpcnR1YWwgdm9pZCBpbnZhbGlkYXRlKCk7CiAKICAgICBXZWJBVlBsYXllckNvbnRyb2xs
ZXIgKnBsYXllckNvbnRyb2xsZXIoKSBjb25zdCB7IHJldHVybiBtX3BsYXllckNvbnRyb2xsZXIu
Z2V0KCk7IH0KIAogcHJvdGVjdGVkOgotICAgIFdFQkNPUkVfRVhQT1JUIFdlYlBsYXliYWNrU2Vz
c2lvbkludGVyZmFjZUFWS2l0KCk7CisgICAgV0VCQ09SRV9FWFBPUlQgV2ViUGxheWJhY2tTZXNz
aW9uSW50ZXJmYWNlQVZLaXQoV2ViUGxheWJhY2tTZXNzaW9uTW9kZWwmKTsKIAogICAgIFJldGFp
blB0cjxXZWJBVlBsYXllckNvbnRyb2xsZXI+IG1fcGxheWVyQ29udHJvbGxlcjsKICAgICBXZWJQ
bGF5YmFja1Nlc3Npb25Nb2RlbCogbV9wbGF5YmFja1Nlc3Npb25Nb2RlbCB7IG51bGxwdHIgfTsK
LSAgICBXZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2VBVktpdENsaWVudCogbV9jbGllbnQgeyBu
dWxscHRyfTsKLQotICAgIGJvb2wgbV93aXJlbGVzc1ZpZGVvUGxheWJhY2tEaXNhYmxlZCB7IHRy
dWUgfTsKIH07CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9X
ZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2VBVktpdC5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2lvcy9XZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2VBVktpdC5tbQppbmRleCAzN2Y3NGYx
N2Q3MDRjNTI0ZGI0YmI3NThiOGIxNGE3OGE0NWE2ZTVjLi4zYzk3ODJkZDQ5N2Y1M2U2YWQzYjdm
ZTE5MTA1MTM2N2RjNTJlOWY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9p
b3MvV2ViUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlQVZLaXQubW0KKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vaW9zL1dlYlBsYXliYWNrU2Vzc2lvbkludGVyZmFjZUFWS2l0Lm1tCkBAIC00
NywzMSArNDcsNTUgQEAgU09GVF9MSU5LX0NMQVNTX09QVElPTkFMKEFWS2l0LCBBVlZhbHVlVGlt
aW5nKQogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVdlYlBsYXliYWNrU2Vzc2lvbkludGVyZmFj
ZUFWS2l0OjpXZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2VBVktpdCgpCitXZWJQbGF5YmFja1Nl
c3Npb25JbnRlcmZhY2VBVktpdDo6V2ViUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlQVZLaXQoV2Vi
UGxheWJhY2tTZXNzaW9uTW9kZWwmIG1vZGVsKQogICAgIDogbV9wbGF5ZXJDb250cm9sbGVyKGFk
b3B0TlMoW1tXZWJBVlBsYXllckNvbnRyb2xsZXIgYWxsb2NdIGluaXRdKSkKKyAgICAsIG1fcGxh
eWJhY2tTZXNzaW9uTW9kZWwoJm1vZGVsKQogeworICAgIG1vZGVsLmFkZENsaWVudCgqdGhpcyk7
CiAgICAgW21fcGxheWVyQ29udHJvbGxlciBzZXRQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2U6dGhp
c107CisgICAgW21fcGxheWVyQ29udHJvbGxlciBzZXREZWxlZ2F0ZTombW9kZWxdOwogfQogCiBX
ZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2VBVktpdDo6fldlYlBsYXliYWNrU2Vzc2lvbkludGVy
ZmFjZUFWS2l0KCkKIHsKLSAgICBXZWJBVlBsYXllckNvbnRyb2xsZXIqIHBsYXllckNvbnRyb2xs
ZXIgPSBtX3BsYXllckNvbnRyb2xsZXIuZ2V0KCk7Ci0gICAgaWYgKHBsYXllckNvbnRyb2xsZXIg
JiYgcGxheWVyQ29udHJvbGxlci5leHRlcm5hbFBsYXliYWNrQWN0aXZlKQotICAgICAgICBzZXRF
eHRlcm5hbFBsYXliYWNrKGZhbHNlLCBUYXJnZXRUeXBlTm9uZSwgIiIpOworICAgIFttX3BsYXll
ckNvbnRyb2xsZXIgc2V0UGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlOm51bGxwdHJdOworICAgIFtt
X3BsYXllckNvbnRyb2xsZXIgc2V0RXh0ZXJuYWxQbGF5YmFja0FjdGl2ZTpmYWxzZV07CisKKyAg
ICBpbnZhbGlkYXRlKCk7CiB9CiAKIHZvaWQgV2ViUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlQVZL
aXQ6OnJlc2V0TWVkaWFTdGF0ZSgpCiB7Ci0gICAgW21fcGxheWVyQ29udHJvbGxlciByZXNldFN0
YXRlXTsKLX0KKyAgICBXZWJBVlBsYXllckNvbnRyb2xsZXIqIHBsYXllckNvbnRyb2xsZXIgPSBt
X3BsYXllckNvbnRyb2xsZXIuZ2V0KCk7CiAKLXZvaWQgV2ViUGxheWJhY2tTZXNzaW9uSW50ZXJm
YWNlQVZLaXQ6OnNldFdlYlBsYXliYWNrU2Vzc2lvbk1vZGVsKFdlYlBsYXliYWNrU2Vzc2lvbk1v
ZGVsKiBtb2RlbCkKLXsKLSAgICBtX3BsYXliYWNrU2Vzc2lvbk1vZGVsID0gbW9kZWw7Ci0gICAg
W21fcGxheWVyQ29udHJvbGxlciBzZXREZWxlZ2F0ZTptX3BsYXliYWNrU2Vzc2lvbk1vZGVsXTsK
KyAgICBwbGF5ZXJDb250cm9sbGVyLmNvbnRlbnREdXJhdGlvbiA9IDA7CisgICAgcGxheWVyQ29u
dHJvbGxlci5tYXhUaW1lID0gMDsKKyAgICBwbGF5ZXJDb250cm9sbGVyLmNvbnRlbnREdXJhdGlv
bldpdGhpbkVuZFRpbWVzID0gMDsKKyAgICBwbGF5ZXJDb250cm9sbGVyLmxvYWRlZFRpbWVSYW5n
ZXMgPSBAW107CisKKyAgICBwbGF5ZXJDb250cm9sbGVyLmNhblBsYXkgPSBOTzsKKyAgICBwbGF5
ZXJDb250cm9sbGVyLmNhblBhdXNlID0gTk87CisgICAgcGxheWVyQ29udHJvbGxlci5jYW5Ub2dn
bGVQbGF5YmFjayA9IE5POworICAgIHBsYXllckNvbnRyb2xsZXIuaGFzRW5hYmxlZEF1ZGlvID0g
Tk87CisgICAgcGxheWVyQ29udHJvbGxlci5jYW5TZWVrID0gTk87CisgICAgcGxheWVyQ29udHJv
bGxlci5taW5UaW1lID0gMDsKKyAgICBwbGF5ZXJDb250cm9sbGVyLnN0YXR1cyA9IEFWUGxheWVy
Q29udHJvbGxlclN0YXR1c1Vua25vd247CisKKyAgICBwbGF5ZXJDb250cm9sbGVyLnRpbWluZyA9
IG5pbDsKKyAgICBwbGF5ZXJDb250cm9sbGVyLnJhdGUgPSAwOworCisgICAgcGxheWVyQ29udHJv
bGxlci5zZWVrYWJsZVRpbWVSYW5nZXMgPSBbTlNNdXRhYmxlQXJyYXkgYXJyYXldOworCisgICAg
cGxheWVyQ29udHJvbGxlci5jYW5TY2FuQmFja3dhcmQgPSBOTzsKKworICAgIHBsYXllckNvbnRy
b2xsZXIuYXVkaW9NZWRpYVNlbGVjdGlvbk9wdGlvbnMgPSBuaWw7CisgICAgcGxheWVyQ29udHJv
bGxlci5jdXJyZW50QXVkaW9NZWRpYVNlbGVjdGlvbk9wdGlvbiA9IG5pbDsKKworICAgIHBsYXll
ckNvbnRyb2xsZXIubGVnaWJsZU1lZGlhU2VsZWN0aW9uT3B0aW9ucyA9IG5pbDsKKyAgICBwbGF5
ZXJDb250cm9sbGVyLmN1cnJlbnRMZWdpYmxlTWVkaWFTZWxlY3Rpb25PcHRpb24gPSBuaWw7CiB9
CiAKLXZvaWQgV2ViUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlQVZLaXQ6OnNldER1cmF0aW9uKGRv
dWJsZSBkdXJhdGlvbikKK3ZvaWQgV2ViUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlQVZLaXQ6OmR1
cmF0aW9uQ2hhbmdlZChkb3VibGUgZHVyYXRpb24pCiB7CiAgICAgV2ViQVZQbGF5ZXJDb250cm9s
bGVyKiBwbGF5ZXJDb250cm9sbGVyID0gbV9wbGF5ZXJDb250cm9sbGVyLmdldCgpOwogCkBAIC05
MCw3ICsxMTQsNyBAQCB2b2lkIFdlYlBsYXliYWNrU2Vzc2lvbkludGVyZmFjZUFWS2l0OjpzZXRE
dXJhdGlvbihkb3VibGUgZHVyYXRpb24pCiAgICAgcGxheWVyQ29udHJvbGxlci5zdGF0dXMgPSBB
VlBsYXllckNvbnRyb2xsZXJTdGF0dXNSZWFkeVRvUGxheTsKIH0KIAotdm9pZCBXZWJQbGF5YmFj
a1Nlc3Npb25JbnRlcmZhY2VBVktpdDo6c2V0Q3VycmVudFRpbWUoZG91YmxlIGN1cnJlbnRUaW1l
LCBkb3VibGUgYW5jaG9yVGltZSkKK3ZvaWQgV2ViUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlQVZL
aXQ6OmN1cnJlbnRUaW1lQ2hhbmdlZChkb3VibGUgY3VycmVudFRpbWUsIGRvdWJsZSBhbmNob3JU
aW1lKQogewogICAgIE5TVGltZUludGVydmFsIGFuY2hvclRpbWVTdGFtcCA9ICFbbV9wbGF5ZXJD
b250cm9sbGVyIHJhdGVdID8gTkFOIDogYW5jaG9yVGltZTsKICAgICBBVlZhbHVlVGltaW5nICp0
aW1pbmcgPSBbZ2V0QVZWYWx1ZVRpbWluZ0NsYXNzKCkgdmFsdWVUaW1pbmdXaXRoQW5jaG9yVmFs
dWU6Y3VycmVudFRpbWUKQEAgLTk5LDcgKzEyMyw3IEBAIHZvaWQgV2ViUGxheWJhY2tTZXNzaW9u
SW50ZXJmYWNlQVZLaXQ6OnNldEN1cnJlbnRUaW1lKGRvdWJsZSBjdXJyZW50VGltZSwgZG91Ymxl
CiAgICAgW21fcGxheWVyQ29udHJvbGxlciBzZXRUaW1pbmc6dGltaW5nXTsKIH0KIAotdm9pZCBX
ZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2VBVktpdDo6c2V0QnVmZmVyZWRUaW1lKGRvdWJsZSBi
dWZmZXJlZFRpbWUpCit2b2lkIFdlYlBsYXliYWNrU2Vzc2lvbkludGVyZmFjZUFWS2l0OjpidWZm
ZXJlZFRpbWVDaGFuZ2VkKGRvdWJsZSBidWZmZXJlZFRpbWUpCiB7CiAgICAgV2ViQVZQbGF5ZXJD
b250cm9sbGVyKiBwbGF5ZXJDb250cm9sbGVyID0gbV9wbGF5ZXJDb250cm9sbGVyLmdldCgpOwog
ICAgIGRvdWJsZSBkdXJhdGlvbiA9IHBsYXllckNvbnRyb2xsZXIuY29udGVudER1cmF0aW9uOwpA
QCAtMTExLDEyICsxMzUsMTIgQEAgdm9pZCBXZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2VBVktp
dDo6c2V0QnVmZmVyZWRUaW1lKGRvdWJsZSBidWZmZXJlZFRpbWUpCiAgICAgcGxheWVyQ29udHJv
bGxlci5sb2FkZWRUaW1lUmFuZ2VzID0gQFtAMCwgQChub3JtYWxpemVkQnVmZmVyZWRUaW1lKV07
CiB9CiAKLXZvaWQgV2ViUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlQVZLaXQ6OnNldFJhdGUoYm9v
bCBpc1BsYXlpbmcsIGZsb2F0IHBsYXliYWNrUmF0ZSkKK3ZvaWQgV2ViUGxheWJhY2tTZXNzaW9u
SW50ZXJmYWNlQVZLaXQ6OnJhdGVDaGFuZ2VkKGJvb2wgaXNQbGF5aW5nLCBmbG9hdCBwbGF5YmFj
a1JhdGUpCiB7CiAgICAgW21fcGxheWVyQ29udHJvbGxlciBzZXRSYXRlOmlzUGxheWluZyA/IHBs
YXliYWNrUmF0ZSA6IDAuXTsKIH0KIAotdm9pZCBXZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2VB
VktpdDo6c2V0U2Vla2FibGVSYW5nZXMoY29uc3QgVGltZVJhbmdlcyYgdGltZVJhbmdlcykKK3Zv
aWQgV2ViUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlQVZLaXQ6OnNlZWthYmxlUmFuZ2VzQ2hhbmdl
ZChjb25zdCBUaW1lUmFuZ2VzJiB0aW1lUmFuZ2VzKQogewogICAgIFJldGFpblB0cjxOU011dGFi
bGVBcnJheT4gc2Vla2FibGVSYW5nZXMgPSBhZG9wdE5TKFtbTlNNdXRhYmxlQXJyYXkgYWxsb2Nd
IGluaXRdKTsKICAgICBFeGNlcHRpb25Db2RlIGV4Y2VwdGlvbkNvZGU7CkBAIC0xMzIsNyArMTU2
LDcgQEAgdm9pZCBXZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2VBVktpdDo6c2V0U2Vla2FibGVS
YW5nZXMoY29uc3QgVGltZVJhbmdlcyYgdGltZVIKICAgICBbbV9wbGF5ZXJDb250cm9sbGVyIHNl
dFNlZWthYmxlVGltZVJhbmdlczpzZWVrYWJsZVJhbmdlcy5nZXQoKV07CiB9CiAKLXZvaWQgV2Vi
UGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlQVZLaXQ6OnNldENhblBsYXlGYXN0UmV2ZXJzZShib29s
IGNhblBsYXlGYXN0UmV2ZXJzZSkKK3ZvaWQgV2ViUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlQVZL
aXQ6OmNhblBsYXlGYXN0UmV2ZXJzZUNoYW5nZWQoYm9vbCBjYW5QbGF5RmFzdFJldmVyc2UpCiB7
CiAgICAgW21fcGxheWVyQ29udHJvbGxlciBzZXRDYW5TY2FuQmFja3dhcmQ6Y2FuUGxheUZhc3RS
ZXZlcnNlXTsKIH0KQEAgLTE0OCw3ICsxNzIsNyBAQCBzdGF0aWMgUmV0YWluUHRyPE5TTXV0YWJs
ZUFycmF5PiBtZWRpYVNlbGVjdGlvbk9wdGlvbnMoY29uc3QgVmVjdG9yPFN0cmluZz4mIG9wdAog
ICAgIHJldHVybiB3ZWJPcHRpb25zOwogfQogCi12b2lkIFdlYlBsYXliYWNrU2Vzc2lvbkludGVy
ZmFjZUFWS2l0OjpzZXRBdWRpb01lZGlhU2VsZWN0aW9uT3B0aW9ucyhjb25zdCBWZWN0b3I8U3Ry
aW5nPiYgb3B0aW9ucywgdWludDY0X3Qgc2VsZWN0ZWRJbmRleCkKK3ZvaWQgV2ViUGxheWJhY2tT
ZXNzaW9uSW50ZXJmYWNlQVZLaXQ6OmF1ZGlvTWVkaWFTZWxlY3Rpb25PcHRpb25zQ2hhbmdlZChj
b25zdCBWZWN0b3I8U3RyaW5nPiYgb3B0aW9ucywgdWludDY0X3Qgc2VsZWN0ZWRJbmRleCkKIHsK
ICAgICBSZXRhaW5QdHI8TlNNdXRhYmxlQXJyYXk+IHdlYk9wdGlvbnMgPSBtZWRpYVNlbGVjdGlv
bk9wdGlvbnMob3B0aW9ucyk7CiAgICAgW21fcGxheWVyQ29udHJvbGxlciBzZXRBdWRpb01lZGlh
U2VsZWN0aW9uT3B0aW9uczp3ZWJPcHRpb25zLmdldCgpXTsKQEAgLTE1Niw3ICsxODAsNyBAQCB2
b2lkIFdlYlBsYXliYWNrU2Vzc2lvbkludGVyZmFjZUFWS2l0OjpzZXRBdWRpb01lZGlhU2VsZWN0
aW9uT3B0aW9ucyhjb25zdCBWZWN0bwogICAgICAgICBbbV9wbGF5ZXJDb250cm9sbGVyIHNldEN1
cnJlbnRBdWRpb01lZGlhU2VsZWN0aW9uT3B0aW9uOlt3ZWJPcHRpb25zIG9iamVjdEF0SW5kZXg6
c3RhdGljX2Nhc3Q8TlNVSW50ZWdlcj4oc2VsZWN0ZWRJbmRleCldXTsKIH0KIAotdm9pZCBXZWJQ
bGF5YmFja1Nlc3Npb25JbnRlcmZhY2VBVktpdDo6c2V0TGVnaWJsZU1lZGlhU2VsZWN0aW9uT3B0
aW9ucyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgb3B0aW9ucywgdWludDY0X3Qgc2VsZWN0ZWRJbmRl
eCkKK3ZvaWQgV2ViUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlQVZLaXQ6OmxlZ2libGVNZWRpYVNl
bGVjdGlvbk9wdGlvbnNDaGFuZ2VkKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBvcHRpb25zLCB1aW50
NjRfdCBzZWxlY3RlZEluZGV4KQogewogICAgIFJldGFpblB0cjxOU011dGFibGVBcnJheT4gd2Vi
T3B0aW9ucyA9IG1lZGlhU2VsZWN0aW9uT3B0aW9ucyhvcHRpb25zKTsKICAgICBbbV9wbGF5ZXJD
b250cm9sbGVyIHNldExlZ2libGVNZWRpYVNlbGVjdGlvbk9wdGlvbnM6d2ViT3B0aW9ucy5nZXQo
KV07CkBAIC0xNjQsMzYgKzE4OCwzMyBAQCB2b2lkIFdlYlBsYXliYWNrU2Vzc2lvbkludGVyZmFj
ZUFWS2l0OjpzZXRMZWdpYmxlTWVkaWFTZWxlY3Rpb25PcHRpb25zKGNvbnN0IFZlYwogICAgICAg
ICBbbV9wbGF5ZXJDb250cm9sbGVyIHNldEN1cnJlbnRMZWdpYmxlTWVkaWFTZWxlY3Rpb25PcHRp
b246W3dlYk9wdGlvbnMgb2JqZWN0QXRJbmRleDpzdGF0aWNfY2FzdDxOU1VJbnRlZ2VyPihzZWxl
Y3RlZEluZGV4KV1dOwogfQogCi12b2lkIFdlYlBsYXliYWNrU2Vzc2lvbkludGVyZmFjZUFWS2l0
OjpzZXRFeHRlcm5hbFBsYXliYWNrKGJvb2wgZW5hYmxlZCwgRXh0ZXJuYWxQbGF5YmFja1Rhcmdl
dFR5cGUgdGFyZ2V0VHlwZSwgU3RyaW5nIGxvY2FsaXplZERldmljZU5hbWUpCit2b2lkIFdlYlBs
YXliYWNrU2Vzc2lvbkludGVyZmFjZUFWS2l0OjpleHRlcm5hbFBsYXliYWNrQ2hhbmdlZChib29s
IGVuYWJsZWQsIFdlYlBsYXliYWNrU2Vzc2lvbk1vZGVsOjpFeHRlcm5hbFBsYXliYWNrVGFyZ2V0
VHlwZSB0YXJnZXRUeXBlLCBjb25zdCBTdHJpbmcmIGxvY2FsaXplZERldmljZU5hbWUpCiB7CiAg
ICAgQVZQbGF5ZXJDb250cm9sbGVyRXh0ZXJuYWxQbGF5YmFja1R5cGUgZXh0ZXJuYWxQbGF5YmFj
a1R5cGUgPSBBVlBsYXllckNvbnRyb2xsZXJFeHRlcm5hbFBsYXliYWNrVHlwZU5vbmU7Ci0gICAg
aWYgKHRhcmdldFR5cGUgPT0gVGFyZ2V0VHlwZUFpclBsYXkpCisgICAgaWYgKHRhcmdldFR5cGUg
PT0gV2ViUGxheWJhY2tTZXNzaW9uTW9kZWw6OlRhcmdldFR5cGVBaXJQbGF5KQogICAgICAgICBl
eHRlcm5hbFBsYXliYWNrVHlwZSA9IEFWUGxheWVyQ29udHJvbGxlckV4dGVybmFsUGxheWJhY2tU
eXBlQWlyUGxheTsKLSAgICBlbHNlIGlmICh0YXJnZXRUeXBlID09IFRhcmdldFR5cGVUVk91dCkK
KyAgICBlbHNlIGlmICh0YXJnZXRUeXBlID09IFdlYlBsYXliYWNrU2Vzc2lvbk1vZGVsOjpUYXJn
ZXRUeXBlVFZPdXQpCiAgICAgICAgIGV4dGVybmFsUGxheWJhY2tUeXBlID0gQVZQbGF5ZXJDb250
cm9sbGVyRXh0ZXJuYWxQbGF5YmFja1R5cGVUVk91dDsKIAogICAgIFdlYkFWUGxheWVyQ29udHJv
bGxlciogcGxheWVyQ29udHJvbGxlciA9IG1fcGxheWVyQ29udHJvbGxlci5nZXQoKTsKICAgICBw
bGF5ZXJDb250cm9sbGVyLmV4dGVybmFsUGxheWJhY2tBaXJQbGF5RGV2aWNlTG9jYWxpemVkTmFt
ZSA9IGxvY2FsaXplZERldmljZU5hbWU7CiAgICAgcGxheWVyQ29udHJvbGxlci5leHRlcm5hbFBs
YXliYWNrVHlwZSA9IGV4dGVybmFsUGxheWJhY2tUeXBlOwogICAgIHBsYXllckNvbnRyb2xsZXIu
ZXh0ZXJuYWxQbGF5YmFja0FjdGl2ZSA9IGVuYWJsZWQ7Ci0KLSAgICBpZiAobV9jbGllbnQpCi0g
ICAgICAgIG1fY2xpZW50LT5leHRlcm5hbFBsYXliYWNrRW5hYmxlZENoYW5nZWQoZW5hYmxlZCk7
CiB9CiAKLXZvaWQgV2ViUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlQVZLaXQ6OnNldFdpcmVsZXNz
VmlkZW9QbGF5YmFja0Rpc2FibGVkKGJvb2wgZGlzYWJsZWQpCit2b2lkIFdlYlBsYXliYWNrU2Vz
c2lvbkludGVyZmFjZUFWS2l0Ojp3aXJlbGVzc1ZpZGVvUGxheWJhY2tEaXNhYmxlZENoYW5nZWQo
Ym9vbCBkaXNhYmxlZCkKIHsKICAgICBbbV9wbGF5ZXJDb250cm9sbGVyIHNldEFsbG93c0V4dGVy
bmFsUGxheWJhY2s6IWRpc2FibGVkXTsKIH0KIAotYm9vbCBXZWJQbGF5YmFja1Nlc3Npb25JbnRl
cmZhY2VBVktpdDo6d2lyZWxlc3NWaWRlb1BsYXliYWNrRGlzYWJsZWQoKSBjb25zdAotewotICAg
IHJldHVybiBbbV9wbGF5ZXJDb250cm9sbGVyIGFsbG93c0V4dGVybmFsUGxheWJhY2tdOwotfQot
CiB2b2lkIFdlYlBsYXliYWNrU2Vzc2lvbkludGVyZmFjZUFWS2l0OjppbnZhbGlkYXRlKCkKIHsK
LSAgICBtX3BsYXliYWNrU2Vzc2lvbk1vZGVsID0gbmlsOworICAgIGlmICghbV9wbGF5YmFja1Nl
c3Npb25Nb2RlbCkKKyAgICAgICAgcmV0dXJuOworCisgICAgW21fcGxheWVyQ29udHJvbGxlciBz
ZXREZWxlZ2F0ZTpudWxscHRyXTsKKyAgICBtX3BsYXliYWNrU2Vzc2lvbk1vZGVsLT5yZW1vdmVD
bGllbnQoKnRoaXMpOworICAgIG1fcGxheWJhY2tTZXNzaW9uTW9kZWwgPSBudWxscHRyOwogfQog
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvV2ViVmlkZW9GdWxs
c2NyZWVuQ29udHJvbGxlckFWS2l0Lm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1dl
YlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJBVktpdC5tbQppbmRleCBkNjIxNjgwMmUwMDAyYTEy
YzAzMWU1MzJjY2YzYmUzMjhiMzAyNjlkLi44OWQ4YzM5NmIzMzgyODU5OWM5OWM5NzExOGM5ZWIx
ZGM2NjRjNWM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvV2ViVmlk
ZW9GdWxsc2NyZWVuQ29udHJvbGxlckFWS2l0Lm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2lvcy9XZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyQVZLaXQubW0KQEAgLTkxLDcgKzkx
LDYgQEAgc3RhdGljIEludFJlY3QgZWxlbWVudFJlY3RJbldpbmRvdyhIVE1MVmlkZW9FbGVtZW50
KiB2aWRlb0VsZW1lbnQpCiB9CiAKIGNsYXNzIFdlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJD
b250ZXh0OwotY2xhc3MgV2ViVmlkZW9GdWxsc2NyZWVuU2Vzc2lvbk1vZGVsOwogCiBAaW50ZXJm
YWNlIFdlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXIgKGRlbGVnYXRlKQogLSh2b2lkKWRpZEZp
bmlzaEZ1bGxzY3JlZW46KFdlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJDb250ZXh0Kiljb250
ZXh0OwpAQCAtMTAwLDcgKzk5LDEwIEBAIEBlbmQKIGNsYXNzIFdlYlZpZGVvRnVsbHNjcmVlbkNv
bnRyb2xsZXJDb250ZXh0IGZpbmFsCiAgICAgOiBwcml2YXRlIFdlYlZpZGVvRnVsbHNjcmVlbklu
dGVyZmFjZQogICAgICwgcHJpdmF0ZSBXZWJWaWRlb0Z1bGxzY3JlZW5Nb2RlbAorICAgICwgcHJp
dmF0ZSBXZWJWaWRlb0Z1bGxzY3JlZW5Nb2RlbENsaWVudAogICAgICwgcHJpdmF0ZSBXZWJWaWRl
b0Z1bGxzY3JlZW5DaGFuZ2VPYnNlcnZlcgorICAgICwgcHJpdmF0ZSBXZWJQbGF5YmFja1Nlc3Np
b25Nb2RlbAorICAgICwgcHJpdmF0ZSBXZWJQbGF5YmFja1Nlc3Npb25Nb2RlbENsaWVudAogICAg
ICwgcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPFdlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xs
ZXJDb250ZXh0PiB7CiAKIHB1YmxpYzoKQEAgLTExNSwxOSArMTE3LDYgQEAgcHVibGljOgogICAg
IHZvaWQgcmVxdWVzdEhpZGVBbmRFeGl0RnVsbHNjcmVlbigpOwogICAgIHZvaWQgaW52YWxpZGF0
ZSgpOwogCi0gICAgdm9pZCBwbGF5KCk7Ci0gICAgdm9pZCBwYXVzZSgpOwotICAgIHZvaWQgdG9n
Z2xlUGxheVN0YXRlKCk7Ci0gICAgdm9pZCBiZWdpblNjcnViYmluZygpOwotICAgIHZvaWQgZW5k
U2NydWJiaW5nKCk7Ci0gICAgdm9pZCBzZWVrVG9UaW1lKGRvdWJsZSk7Ci0gICAgdm9pZCBmYXN0
U2Vlayhkb3VibGUgdGltZSk7Ci0gICAgdm9pZCBiZWdpblNjYW5uaW5nRm9yd2FyZCgpOwotICAg
IHZvaWQgYmVnaW5TY2FubmluZ0JhY2t3YXJkKCk7Ci0gICAgdm9pZCBlbmRTY2FubmluZygpOwot
ICAgIHZvaWQgc2VsZWN0QXVkaW9NZWRpYU9wdGlvbih1aW50NjRfdCk7Ci0gICAgdm9pZCBzZWxl
Y3RMZWdpYmxlTWVkaWFPcHRpb24odWludDY0X3QpOwotCiBwcml2YXRlOgogICAgIFdlYlZpZGVv
RnVsbHNjcmVlbkNvbnRyb2xsZXJDb250ZXh0KCkgeyB9CiAKQEAgLTEzOCwxMDcgKzEyNyw3MiBA
QCBwcml2YXRlOgogICAgIHZvaWQgZGlkQ2xlYW51cEZ1bGxzY3JlZW4oKSBvdmVycmlkZTsKICAg
ICB2b2lkIGZ1bGxzY3JlZW5NYXlSZXR1cm5Ub0lubGluZSgpIG92ZXJyaWRlOwogCi0gICAgLy8g
V2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlCi0gICAgdm9pZCByZXNldE1lZGlhU3RhdGUoKSBv
dmVycmlkZTsKLSAgICB2b2lkIHNldER1cmF0aW9uKGRvdWJsZSkgb3ZlcnJpZGU7Ci0gICAgdm9p
ZCBzZXRDdXJyZW50VGltZShkb3VibGUgY3VycmVudFRpbWUsIGRvdWJsZSBhbmNob3JUaW1lKSBv
dmVycmlkZTsKLSAgICB2b2lkIHNldEJ1ZmZlcmVkVGltZShkb3VibGUpIG92ZXJyaWRlOwotICAg
IHZvaWQgc2V0UmF0ZShib29sIGlzUGxheWluZywgZmxvYXQgcGxheWJhY2tSYXRlKSBvdmVycmlk
ZTsKLSAgICB2b2lkIHNldFZpZGVvRGltZW5zaW9ucyhib29sIGhhc1ZpZGVvLCBmbG9hdCB3aWR0
aCwgZmxvYXQgaGVpZ2h0KSBvdmVycmlkZTsKLSAgICB2b2lkIHNldFNlZWthYmxlUmFuZ2VzKGNv
bnN0IFRpbWVSYW5nZXMmKSBvdmVycmlkZTsKLSAgICB2b2lkIHNldENhblBsYXlGYXN0UmV2ZXJz
ZShib29sKSBvdmVycmlkZTsKLSAgICB2b2lkIHNldEF1ZGlvTWVkaWFTZWxlY3Rpb25PcHRpb25z
KGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBvcHRpb25zLCB1aW50NjRfdCBzZWxlY3RlZEluZGV4KSBv
dmVycmlkZTsKLSAgICB2b2lkIHNldExlZ2libGVNZWRpYVNlbGVjdGlvbk9wdGlvbnMoY29uc3Qg
VmVjdG9yPFN0cmluZz4mIG9wdGlvbnMsIHVpbnQ2NF90IHNlbGVjdGVkSW5kZXgpIG92ZXJyaWRl
OwotICAgIHZvaWQgc2V0RXh0ZXJuYWxQbGF5YmFjayhib29sIGVuYWJsZWQsIEV4dGVybmFsUGxh
eWJhY2tUYXJnZXRUeXBlLCBTdHJpbmcgbG9jYWxpemVkRGV2aWNlTmFtZSkgb3ZlcnJpZGU7Ci0g
ICAgdm9pZCBzZXRXaXJlbGVzc1ZpZGVvUGxheWJhY2tEaXNhYmxlZChib29sKSBvdmVycmlkZTsK
KyAgICAvLyBXZWJWaWRlb0Z1bGxzY3JlZW5Nb2RlbENsaWVudAorICAgIHZvaWQgaGFzVmlkZW9D
aGFuZ2VkKGJvb2wpIG92ZXJyaWRlOworICAgIHZvaWQgdmlkZW9EaW1lbnNpb25zQ2hhbmdlZChj
b25zdCBGbG9hdFNpemUmKSBvdmVycmlkZTsKKworICAgIC8vIFdlYlBsYXliYWNrU2Vzc2lvbk1v
ZGVsCisgICAgdm9pZCBhZGRDbGllbnQoV2ViUGxheWJhY2tTZXNzaW9uTW9kZWxDbGllbnQmKSBv
dmVycmlkZTsKKyAgICB2b2lkIHJlbW92ZUNsaWVudChXZWJQbGF5YmFja1Nlc3Npb25Nb2RlbENs
aWVudCYpIG92ZXJyaWRlOworICAgIHZvaWQgcGxheSgpIG92ZXJyaWRlOworICAgIHZvaWQgcGF1
c2UoKSBvdmVycmlkZTsKKyAgICB2b2lkIHRvZ2dsZVBsYXlTdGF0ZSgpIG92ZXJyaWRlOworICAg
IHZvaWQgYmVnaW5TY3J1YmJpbmcoKSBvdmVycmlkZTsKKyAgICB2b2lkIGVuZFNjcnViYmluZygp
IG92ZXJyaWRlOworICAgIHZvaWQgc2Vla1RvVGltZShkb3VibGUpIG92ZXJyaWRlOworICAgIHZv
aWQgZmFzdFNlZWsoZG91YmxlIHRpbWUpIG92ZXJyaWRlOworICAgIHZvaWQgYmVnaW5TY2Fubmlu
Z0ZvcndhcmQoKSBvdmVycmlkZTsKKyAgICB2b2lkIGJlZ2luU2Nhbm5pbmdCYWNrd2FyZCgpIG92
ZXJyaWRlOworICAgIHZvaWQgZW5kU2Nhbm5pbmcoKSBvdmVycmlkZTsKKyAgICB2b2lkIHNlbGVj
dEF1ZGlvTWVkaWFPcHRpb24odWludDY0X3QpIG92ZXJyaWRlOworICAgIHZvaWQgc2VsZWN0TGVn
aWJsZU1lZGlhT3B0aW9uKHVpbnQ2NF90KSBvdmVycmlkZTsKKyAgICBkb3VibGUgZHVyYXRpb24o
KSBjb25zdCBvdmVycmlkZTsKKyAgICBkb3VibGUgY3VycmVudFRpbWUoKSBjb25zdCBvdmVycmlk
ZTsKKyAgICBkb3VibGUgYnVmZmVyZWRUaW1lKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgYm9vbCBp
c1BsYXlpbmcoKSBjb25zdCBvdmVycmlkZTsKKyAgICBmbG9hdCBwbGF5YmFja1JhdGUoKSBjb25z
dCBvdmVycmlkZTsKKyAgICBSZWY8VGltZVJhbmdlcz4gc2Vla2FibGVSYW5nZXMoKSBjb25zdCBv
dmVycmlkZTsKKyAgICBib29sIGNhblBsYXlGYXN0UmV2ZXJzZSgpIGNvbnN0IG92ZXJyaWRlOwor
ICAgIFZlY3RvcjxTdHJpbmc+IGF1ZGlvTWVkaWFTZWxlY3Rpb25PcHRpb25zKCkgY29uc3Qgb3Zl
cnJpZGU7CisgICAgdWludDY0X3QgYXVkaW9NZWRpYVNlbGVjdGVkSW5kZXgoKSBjb25zdCBvdmVy
cmlkZTsKKyAgICBWZWN0b3I8U3RyaW5nPiBsZWdpYmxlTWVkaWFTZWxlY3Rpb25PcHRpb25zKCkg
Y29uc3Qgb3ZlcnJpZGU7CisgICAgdWludDY0X3QgbGVnaWJsZU1lZGlhU2VsZWN0ZWRJbmRleCgp
IGNvbnN0IG92ZXJyaWRlOworICAgIGJvb2wgZXh0ZXJuYWxQbGF5YmFja0VuYWJsZWQoKSBjb25z
dCBvdmVycmlkZTsKKyAgICBFeHRlcm5hbFBsYXliYWNrVGFyZ2V0VHlwZSBleHRlcm5hbFBsYXli
YWNrVGFyZ2V0VHlwZSgpIGNvbnN0IG92ZXJyaWRlOworICAgIFN0cmluZyBleHRlcm5hbFBsYXli
YWNrTG9jYWxpemVkRGV2aWNlTmFtZSgpIGNvbnN0IG92ZXJyaWRlOworICAgIGJvb2wgd2lyZWxl
c3NWaWRlb1BsYXliYWNrRGlzYWJsZWQoKSBjb25zdCBvdmVycmlkZTsKKworICAgIC8vIFdlYlBs
YXliYWNrU2Vzc2lvbk1vZGVsQ2xpZW50CisgICAgdm9pZCBkdXJhdGlvbkNoYW5nZWQoZG91Ymxl
KSBvdmVycmlkZTsKKyAgICB2b2lkIGN1cnJlbnRUaW1lQ2hhbmdlZChkb3VibGUgY3VycmVudFRp
bWUsIGRvdWJsZSBhbmNob3JUaW1lKSBvdmVycmlkZTsKKyAgICB2b2lkIGJ1ZmZlcmVkVGltZUNo
YW5nZWQoZG91YmxlKSBvdmVycmlkZTsKKyAgICB2b2lkIHJhdGVDaGFuZ2VkKGJvb2wgaXNQbGF5
aW5nLCBmbG9hdCBwbGF5YmFja1JhdGUpIG92ZXJyaWRlOworICAgIHZvaWQgc2Vla2FibGVSYW5n
ZXNDaGFuZ2VkKGNvbnN0IFRpbWVSYW5nZXMmKSBvdmVycmlkZTsKKyAgICB2b2lkIGNhblBsYXlG
YXN0UmV2ZXJzZUNoYW5nZWQoYm9vbCkgb3ZlcnJpZGU7CisgICAgdm9pZCBhdWRpb01lZGlhU2Vs
ZWN0aW9uT3B0aW9uc0NoYW5nZWQoY29uc3QgVmVjdG9yPFN0cmluZz4mIG9wdGlvbnMsIHVpbnQ2
NF90IHNlbGVjdGVkSW5kZXgpIG92ZXJyaWRlOworICAgIHZvaWQgbGVnaWJsZU1lZGlhU2VsZWN0
aW9uT3B0aW9uc0NoYW5nZWQoY29uc3QgVmVjdG9yPFN0cmluZz4mIG9wdGlvbnMsIHVpbnQ2NF90
IHNlbGVjdGVkSW5kZXgpIG92ZXJyaWRlOworICAgIHZvaWQgZXh0ZXJuYWxQbGF5YmFja0NoYW5n
ZWQoYm9vbCBlbmFibGVkLCBXZWJQbGF5YmFja1Nlc3Npb25Nb2RlbDo6RXh0ZXJuYWxQbGF5YmFj
a1RhcmdldFR5cGUsIGNvbnN0IFN0cmluZyYgbG9jYWxpemVkRGV2aWNlTmFtZSkgb3ZlcnJpZGU7
CisgICAgdm9pZCB3aXJlbGVzc1ZpZGVvUGxheWJhY2tEaXNhYmxlZENoYW5nZWQoYm9vbCkgb3Zl
cnJpZGU7CiAKICAgICAvLyBXZWJWaWRlb0Z1bGxzY3JlZW5Nb2RlbAorICAgIHZvaWQgYWRkQ2xp
ZW50KFdlYlZpZGVvRnVsbHNjcmVlbk1vZGVsQ2xpZW50Jikgb3ZlcnJpZGU7CisgICAgdm9pZCBy
ZW1vdmVDbGllbnQoV2ViVmlkZW9GdWxsc2NyZWVuTW9kZWxDbGllbnQmKSBvdmVycmlkZTsKICAg
ICB2b2lkIHJlcXVlc3RGdWxsc2NyZWVuTW9kZShIVE1MTWVkaWFFbGVtZW50RW51bXM6OlZpZGVv
RnVsbHNjcmVlbk1vZGUpIG92ZXJyaWRlOwogICAgIHZvaWQgc2V0VmlkZW9MYXllckZyYW1lKEZs
b2F0UmVjdCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBzZXRWaWRlb0xheWVyR3Jhdml0eShXZWJWaWRl
b0Z1bGxzY3JlZW5Nb2RlbDo6VmlkZW9HcmF2aXR5KSBvdmVycmlkZTsKICAgICB2b2lkIGZ1bGxz
Y3JlZW5Nb2RlQ2hhbmdlZChIVE1MTWVkaWFFbGVtZW50RW51bXM6OlZpZGVvRnVsbHNjcmVlbk1v
ZGUpIG92ZXJyaWRlOwogICAgIGJvb2wgaXNWaXNpYmxlKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAg
Ym9vbCBoYXNWaWRlbygpIGNvbnN0IG92ZXJyaWRlOworICAgIEZsb2F0U2l6ZSB2aWRlb0RpbWVu
c2lvbnMoKSBjb25zdCBvdmVycmlkZTsKIAorICAgIEhhc2hTZXQ8V2ViUGxheWJhY2tTZXNzaW9u
TW9kZWxDbGllbnQqPiBtX3BsYXliYWNrQ2xpZW50czsKKyAgICBIYXNoU2V0PFdlYlZpZGVvRnVs
bHNjcmVlbk1vZGVsQ2xpZW50Kj4gbV9mdWxsc2NyZWVuQ2xpZW50czsKICAgICBSZWZQdHI8V2Vi
VmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQ+IG1faW50ZXJmYWNlOwotICAgIFJlZlB0cjxX
ZWJWaWRlb0Z1bGxzY3JlZW5Nb2RlbFZpZGVvRWxlbWVudD4gbV9tb2RlbDsKKyAgICBSZWZQdHI8
V2ViVmlkZW9GdWxsc2NyZWVuTW9kZWxWaWRlb0VsZW1lbnQ+IG1fZnVsbHNjcmVlbk1vZGVsOwor
ICAgIFJlZlB0cjxXZWJQbGF5YmFja1Nlc3Npb25Nb2RlbE1lZGlhRWxlbWVudD4gbV9wbGF5YmFj
a01vZGVsOwogICAgIFJlZlB0cjxIVE1MVmlkZW9FbGVtZW50PiBtX3ZpZGVvRWxlbWVudDsKICAg
ICBSZXRhaW5QdHI8VUlWaWV3PiBtX3ZpZGVvRnVsbHNjcmVlblZpZXc7CiAgICAgUmV0YWluUHRy
PFdlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXI+IG1fY29udHJvbGxlcjsKLSAgICBSZWZQdHI8
V2ViVmlkZW9GdWxsc2NyZWVuU2Vzc2lvbk1vZGVsPiBtX3Nlc3Npb25Nb2RlbDsKLX07Ci0KLQot
Y2xhc3MgV2ViVmlkZW9GdWxsc2NyZWVuU2Vzc2lvbk1vZGVsIGZpbmFsOiBwdWJsaWMgUmVmQ291
bnRlZDxXZWJWaWRlb0Z1bGxzY3JlZW5TZXNzaW9uTW9kZWw+LCBwdWJsaWMgV2ViQ29yZTo6V2Vi
UGxheWJhY2tTZXNzaW9uTW9kZWwgIHsKLXB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPFdlYlZpZGVv
RnVsbHNjcmVlblNlc3Npb25Nb2RlbD4gY3JlYXRlKFdlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xs
ZXJDb250ZXh0JiBjb250cm9sbGVyKQotICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpu
ZXcgV2ViVmlkZW9GdWxsc2NyZWVuU2Vzc2lvbk1vZGVsKGNvbnRyb2xsZXIpKTsKLSAgICB9Ci0g
ICAgdmlydHVhbCB+V2ViVmlkZW9GdWxsc2NyZWVuU2Vzc2lvbk1vZGVsKCkgeyB9Ci0KLSAgICB2
b2lkIGludmFsaWRhdGUoKSB7IG1fY29udHJvbGxlciA9IG51bGxwdHI7IH0KLQotICAgIHZvaWQg
c2V0RHVyYXRpb24oZG91YmxlIGR1cmF0aW9uKSB7IG1fZHVyYXRpb24gPSBkdXJhdGlvbjsgfQot
ICAgIHZvaWQgc2V0Q3VycmVudFRpbWUoZG91YmxlIGN1cnJlbnRUaW1lKSB7IG1fY3VycmVudFRp
bWUgPSBjdXJyZW50VGltZTsgfQotICAgIHZvaWQgc2V0QnVmZmVyZWRUaW1lKGRvdWJsZSBidWZm
ZXJlZFRpbWUpIHsgbV9idWZmZXJlZFRpbWUgPSBidWZmZXJlZFRpbWU7IH0KLSAgICB2b2lkIHNl
dElzUGxheWluZyhib29sIGlzUGxheWluZykgeyBtX2lzUGxheWluZyA9IGlzUGxheWluZzsgfQot
ICAgIHZvaWQgc2V0UGxheWJhY2tSYXRlKGZsb2F0IHBsYXliYWNrUmF0ZSkgeyBtX3BsYXliYWNr
UmF0ZSA9IHBsYXliYWNrUmF0ZTsgfQotICAgIHZvaWQgc2V0U2Vla2FibGVSYW5nZXMoV2ViQ29y
ZTo6VGltZVJhbmdlcyYgc2Vla2FibGVSYW5nZXMpIHsgbV9zZWVrYWJsZVJhbmdlcyA9IHNlZWth
YmxlUmFuZ2VzOyB9Ci0gICAgdm9pZCBzZXRDYW5QbGF5RmFzdFJldmVyc2UoYm9vbCBjYW5QbGF5
RmFzdFJldmVyc2UpIHsgbV9jYW5QbGF5RmFzdFJldmVyc2UgPSBjYW5QbGF5RmFzdFJldmVyc2U7
IH0KLSAgICB2b2lkIHNldEF1ZGlvTWVkaWFTZWxlY3Rpb25PcHRpb25zKGNvbnN0IFZlY3RvcjxX
VEY6OlN0cmluZz4mIGF1ZGlvTWVkaWFTZWxlY3Rpb25PcHRpb25zKSB7IG1fYXVkaW9NZWRpYVNl
bGVjdGlvbk9wdGlvbnMgPSBhdWRpb01lZGlhU2VsZWN0aW9uT3B0aW9uczsgfQotICAgIHZvaWQg
c2V0QXVkaW9NZWRpYVNlbGVjdGVkSW5kZXgodWludDY0X3QgYXVkaW9NZWRpYVNlbGVjdGVkSW5k
ZXgpIHsgbV9hdWRpb01lZGlhU2VsZWN0ZWRJbmRleCA9IGF1ZGlvTWVkaWFTZWxlY3RlZEluZGV4
OyB9Ci0gICAgdm9pZCBzZXRMZWdpYmxlTWVkaWFTZWxlY3Rpb25PcHRpb25zKGNvbnN0IFZlY3Rv
cjxXVEY6OlN0cmluZz4mIGxlZ2libGVNZWRpYVNlbGVjdGlvbk9wdGlvbnMpIHsgbV9sZWdpYmxl
TWVkaWFTZWxlY3Rpb25PcHRpb25zID0gbGVnaWJsZU1lZGlhU2VsZWN0aW9uT3B0aW9uczsgfQot
ICAgIHZvaWQgc2V0TGVnaWJsZU1lZGlhU2VsZWN0ZWRJbmRleCh1aW50NjRfdCBsZWdpYmxlTWVk
aWFTZWxlY3RlZEluZGV4KSB7IG1fbGVnaWJsZU1lZGlhU2VsZWN0ZWRJbmRleCA9IGxlZ2libGVN
ZWRpYVNlbGVjdGVkSW5kZXg7IH0KLSAgICB2b2lkIHNldEV4dGVybmFsUGxheWJhY2tFbmFibGVk
KGJvb2wgZXh0ZXJuYWxQbGF5YmFja0VuYWJsZWQpIHsgbV9leHRlcm5hbFBsYXliYWNrRW5hYmxl
ZCA9IGV4dGVybmFsUGxheWJhY2tFbmFibGVkOyB9Ci0gICAgdm9pZCBzZXRXaXJlbGVzc1ZpZGVv
UGxheWJhY2tEaXNhYmxlZChib29sIHdpcmVsZXNzVmlkZW9QbGF5YmFja0Rpc2FibGVkKSB7IG1f
d2lyZWxlc3NWaWRlb1BsYXliYWNrRGlzYWJsZWQgPSB3aXJlbGVzc1ZpZGVvUGxheWJhY2tEaXNh
YmxlZDsgfQotCi1wcml2YXRlOgotICAgIFdlYlZpZGVvRnVsbHNjcmVlblNlc3Npb25Nb2RlbChX
ZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyQ29udGV4dCYgY29udHJvbGxlcikKLSAgICAgICAg
OiBtX2NvbnRyb2xsZXIoJmNvbnRyb2xsZXIpCi0gICAgewotICAgIH0KLQotICAgIHZvaWQgcGxh
eSgpIGZpbmFsOwotICAgIHZvaWQgcGF1c2UoKSBmaW5hbDsKLSAgICB2b2lkIHRvZ2dsZVBsYXlT
dGF0ZSgpIGZpbmFsOwotICAgIHZvaWQgYmVnaW5TY3J1YmJpbmcoKSBmaW5hbDsKLSAgICB2b2lk
IGVuZFNjcnViYmluZygpIGZpbmFsOwotICAgIHZvaWQgc2Vla1RvVGltZShkb3VibGUpIGZpbmFs
OwotICAgIHZvaWQgZmFzdFNlZWsoZG91YmxlIHRpbWUpIGZpbmFsOwotICAgIHZvaWQgYmVnaW5T
Y2FubmluZ0ZvcndhcmQoKSBmaW5hbDsKLSAgICB2b2lkIGJlZ2luU2Nhbm5pbmdCYWNrd2FyZCgp
IGZpbmFsOwotICAgIHZvaWQgZW5kU2Nhbm5pbmcoKSBmaW5hbDsKLSAgICB2b2lkIHNlbGVjdEF1
ZGlvTWVkaWFPcHRpb24odWludDY0X3QpIGZpbmFsOwotICAgIHZvaWQgc2VsZWN0TGVnaWJsZU1l
ZGlhT3B0aW9uKHVpbnQ2NF90KSBmaW5hbDsKLQotICAgIGRvdWJsZSBkdXJhdGlvbigpIGNvbnN0
IGZpbmFsIHsgcmV0dXJuIG1fZHVyYXRpb247IH0KLSAgICBkb3VibGUgY3VycmVudFRpbWUoKSBj
b25zdCBmaW5hbCB7IHJldHVybiBtX2N1cnJlbnRUaW1lOyB9Ci0gICAgZG91YmxlIGJ1ZmZlcmVk
VGltZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fYnVmZmVyZWRUaW1lOyB9Ci0gICAgYm9vbCBp
c1BsYXlpbmcoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX2lzUGxheWluZzsgfQotICAgIGZsb2F0
IHBsYXliYWNrUmF0ZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fcGxheWJhY2tSYXRlOyB9Ci0g
ICAgUmVmPFdlYkNvcmU6OlRpbWVSYW5nZXM+IHNlZWthYmxlUmFuZ2VzKCkgY29uc3QgZmluYWwg
eyByZXR1cm4gbV9zZWVrYWJsZVJhbmdlcy5jb3B5UmVmKCk7IH0KLSAgICBib29sIGNhblBsYXlG
YXN0UmV2ZXJzZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fY2FuUGxheUZhc3RSZXZlcnNlOyB9
Ci0gICAgVmVjdG9yPFdURjo6U3RyaW5nPiBhdWRpb01lZGlhU2VsZWN0aW9uT3B0aW9ucygpIGNv
bnN0IGZpbmFsIHsgcmV0dXJuIG1fYXVkaW9NZWRpYVNlbGVjdGlvbk9wdGlvbnM7IH0KLSAgICB1
aW50NjRfdCBhdWRpb01lZGlhU2VsZWN0ZWRJbmRleCgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1f
YXVkaW9NZWRpYVNlbGVjdGVkSW5kZXg7IH0KLSAgICBWZWN0b3I8V1RGOjpTdHJpbmc+IGxlZ2li
bGVNZWRpYVNlbGVjdGlvbk9wdGlvbnMoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX2xlZ2libGVN
ZWRpYVNlbGVjdGlvbk9wdGlvbnM7IH0KLSAgICB1aW50NjRfdCBsZWdpYmxlTWVkaWFTZWxlY3Rl
ZEluZGV4KCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9sZWdpYmxlTWVkaWFTZWxlY3RlZEluZGV4
OyB9Ci0gICAgYm9vbCBleHRlcm5hbFBsYXliYWNrRW5hYmxlZCgpIGNvbnN0IGZpbmFsIHsgcmV0
dXJuIG1fZXh0ZXJuYWxQbGF5YmFja0VuYWJsZWQ7IH0KLSAgICBib29sIHdpcmVsZXNzVmlkZW9Q
bGF5YmFja0Rpc2FibGVkKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV93aXJlbGVzc1ZpZGVvUGxh
eWJhY2tEaXNhYmxlZDsgfQotCi0gICAgV2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlckNvbnRl
eHQqIG1fY29udHJvbGxlcjsKLSAgICBkb3VibGUgbV9kdXJhdGlvbiB7IDAgfTsKLSAgICBkb3Vi
bGUgbV9jdXJyZW50VGltZSB7IDAgfTsKLSAgICBkb3VibGUgbV9idWZmZXJlZFRpbWUgeyAwIH07
Ci0gICAgYm9vbCBtX2lzUGxheWluZyB7IGZhbHNlIH07Ci0gICAgZmxvYXQgbV9wbGF5YmFja1Jh
dGUgeyAwIH07Ci0gICAgUmVmPFdlYkNvcmU6OlRpbWVSYW5nZXM+IG1fc2Vla2FibGVSYW5nZXMg
eyBXZWJDb3JlOjpUaW1lUmFuZ2VzOjpjcmVhdGUoKSB9OwotICAgIGJvb2wgbV9jYW5QbGF5RmFz
dFJldmVyc2UgeyBmYWxzZSB9OwotICAgIFZlY3RvcjxXVEY6OlN0cmluZz4gbV9hdWRpb01lZGlh
U2VsZWN0aW9uT3B0aW9uczsKLSAgICB1aW50NjRfdCBtX2F1ZGlvTWVkaWFTZWxlY3RlZEluZGV4
IHsgMCB9OwotICAgIFZlY3RvcjxXVEY6OlN0cmluZz4gbV9sZWdpYmxlTWVkaWFTZWxlY3Rpb25P
cHRpb25zOwotICAgIHVpbnQ2NF90IG1fbGVnaWJsZU1lZGlhU2VsZWN0ZWRJbmRleCB7IDAgfTsK
LSAgICBib29sIG1fZXh0ZXJuYWxQbGF5YmFja0VuYWJsZWQgeyBmYWxzZSB9OwotICAgIGJvb2wg
bV93aXJlbGVzc1ZpZGVvUGxheWJhY2tEaXNhYmxlZCB7IGZhbHNlIH07CiB9OwogCiAjcHJhZ21h
IG1hcmsgV2ViVmlkZW9GdWxsc2NyZWVuQ2hhbmdlT2JzZXJ2ZXIKQEAgLTI0NiwxMSArMjAwLDEx
IEBAIHByaXZhdGU6CiB2b2lkIFdlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJDb250ZXh0Ojpk
aWRTZXR1cEZ1bGxzY3JlZW4oKQogewogICAgIEFTU0VSVChpc1VJVGhyZWFkKCkpOwotICAgIFJl
ZlB0cjxXZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyQ29udGV4dD4gcHJvdGVjdGVkVGhpcyh0
aGlzKTsKICAgICBSZXRhaW5QdHI8Q0FMYXllcj4gdmlkZW9GdWxsc2NyZWVuTGF5ZXIgPSBbbV92
aWRlb0Z1bGxzY3JlZW5WaWV3IGxheWVyXTsKKyAgICBSZWZQdHI8V2ViVmlkZW9GdWxsc2NyZWVu
Q29udHJvbGxlckNvbnRleHQ+IHByb3RlY3RlZFRoaXModGhpcyk7CiAgICAgV2ViVGhyZWFkUnVu
KFtwcm90ZWN0ZWRUaGlzLCB0aGlzLCB2aWRlb0Z1bGxzY3JlZW5MYXllcl0gewogICAgICAgICBb
dmlkZW9GdWxsc2NyZWVuTGF5ZXIgc2V0QmFja2dyb3VuZENvbG9yOmNhY2hlZENHQ29sb3IoV2Vi
Q29yZTo6Q29sb3I6OnRyYW5zcGFyZW50KV07Ci0gICAgICAgIG1fbW9kZWwtPnNldFZpZGVvRnVs
bHNjcmVlbkxheWVyKHZpZGVvRnVsbHNjcmVlbkxheWVyLmdldCgpLCBbcHJvdGVjdGVkVGhpcywg
dGhpc10geworICAgICAgICBtX2Z1bGxzY3JlZW5Nb2RlbC0+c2V0VmlkZW9GdWxsc2NyZWVuTGF5
ZXIodmlkZW9GdWxsc2NyZWVuTGF5ZXIuZ2V0KCksIFtwcm90ZWN0ZWRUaGlzLCB0aGlzXSB7CiAg
ICAgICAgICAgICBkaXNwYXRjaF9hc3luYyhkaXNwYXRjaF9nZXRfbWFpbl9xdWV1ZSgpLCBbcHJv
dGVjdGVkVGhpcywgdGhpc10gewogICAgICAgICAgICAgICAgIG1faW50ZXJmYWNlLT5lbnRlckZ1
bGxzY3JlZW4oKTsKICAgICAgICAgICAgIH0pOwpAQCAtMjYzLDcgKzIxNyw3IEBAIHZvaWQgV2Vi
VmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlckNvbnRleHQ6OmRpZEV4aXRGdWxsc2NyZWVuKCkKICAg
ICBBU1NFUlQoaXNVSVRocmVhZCgpKTsKICAgICBSZWZQdHI8V2ViVmlkZW9GdWxsc2NyZWVuQ29u
dHJvbGxlckNvbnRleHQ+IHByb3RlY3RlZFRoaXModGhpcyk7CiAgICAgV2ViVGhyZWFkUnVuKFtw
cm90ZWN0ZWRUaGlzLCB0aGlzXSB7Ci0gICAgICAgIG1fbW9kZWwtPnNldFZpZGVvRnVsbHNjcmVl
bkxheWVyKG5pbCwgW3Byb3RlY3RlZFRoaXMsIHRoaXNdIHsKKyAgICAgICAgbV9mdWxsc2NyZWVu
TW9kZWwtPnNldFZpZGVvRnVsbHNjcmVlbkxheWVyKG5pbCwgW3Byb3RlY3RlZFRoaXMsIHRoaXNd
IHsKICAgICAgICAgICAgIGRpc3BhdGNoX2FzeW5jKGRpc3BhdGNoX2dldF9tYWluX3F1ZXVlKCks
IFtwcm90ZWN0ZWRUaGlzLCB0aGlzXSB7CiAgICAgICAgICAgICAgICAgbV9pbnRlcmZhY2UtPmNs
ZWFudXBGdWxsc2NyZWVuKCk7CiAgICAgICAgICAgICB9KTsKQEAgLTI3OCwxNiArMjMyLDE0IEBA
IHZvaWQgV2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlckNvbnRleHQ6OmRpZENsZWFudXBGdWxs
c2NyZWVuKCkKICAgICBtX2ludGVyZmFjZS0+c2V0V2ViVmlkZW9GdWxsc2NyZWVuQ2hhbmdlT2Jz
ZXJ2ZXIobnVsbHB0cik7CiAgICAgbV9pbnRlcmZhY2UgPSBudWxscHRyOwogICAgIG1fdmlkZW9G
dWxsc2NyZWVuVmlldyA9IG5pbDsKLSAgICBtX3Nlc3Npb25Nb2RlbC0+aW52YWxpZGF0ZSgpOwot
ICAgIG1fc2Vzc2lvbk1vZGVsID0gbnVsbHB0cjsKIAogICAgIFJlZlB0cjxXZWJWaWRlb0Z1bGxz
Y3JlZW5Db250cm9sbGVyQ29udGV4dD4gcHJvdGVjdGVkVGhpcyh0aGlzKTsKICAgICBXZWJUaHJl
YWRSdW4oW3Byb3RlY3RlZFRoaXMsIHRoaXNdIHsKLSAgICAgICAgbV9tb2RlbC0+c2V0VmlkZW9G
dWxsc2NyZWVuTGF5ZXIobmlsKTsKLSAgICAgICAgbV9tb2RlbC0+c2V0V2ViVmlkZW9GdWxsc2Ny
ZWVuSW50ZXJmYWNlKG51bGxwdHIpOwotICAgICAgICBtX21vZGVsLT5zZXRWaWRlb0VsZW1lbnQo
bnVsbHB0cik7Ci0gICAgICAgIG1fbW9kZWwtPnBsYXliYWNrU2Vzc2lvbk1vZGVsKCkuc2V0TWVk
aWFFbGVtZW50KG51bGxwdHIpOwotICAgICAgICBtX21vZGVsID0gbnVsbHB0cjsKKyAgICAgICAg
bV9mdWxsc2NyZWVuTW9kZWwtPnNldFZpZGVvRnVsbHNjcmVlbkxheWVyKG5pbCk7CisgICAgICAg
IG1fZnVsbHNjcmVlbk1vZGVsLT5zZXRWaWRlb0VsZW1lbnQobnVsbHB0cik7CisgICAgICAgIG1f
cGxheWJhY2tNb2RlbC0+c2V0TWVkaWFFbGVtZW50KG51bGxwdHIpOworICAgICAgICBtX2Z1bGxz
Y3JlZW5Nb2RlbC0+cmVtb3ZlQ2xpZW50KCp0aGlzKTsKKyAgICAgICAgbV9mdWxsc2NyZWVuTW9k
ZWwgPSBudWxscHRyOwogICAgICAgICBtX3ZpZGVvRWxlbWVudCA9IG51bGxwdHI7CiAKICAgICAg
ICAgW21fY29udHJvbGxlciBkaWRGaW5pc2hGdWxsc2NyZWVuOnRoaXNdOwpAQCAtMzA2LDE2MCAr
MjU4LDE5NyBAQCB2b2lkIFdlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJDb250ZXh0OjpmdWxs
c2NyZWVuTWF5UmV0dXJuVG9JbmxpbmUoKQogICAgIH0pOwogfQogCi0jcHJhZ21hIG1hcmsgV2Vi
VmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlCisjcHJhZ21hIG1hcmsgV2ViUGxheWJhY2tTZXNzaW9u
TW9kZWxDbGllbnQKIAotdm9pZCBXZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyQ29udGV4dDo6
cmVzZXRNZWRpYVN0YXRlKCkKK3ZvaWQgV2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlckNvbnRl
eHQ6OmR1cmF0aW9uQ2hhbmdlZChkb3VibGUgZHVyYXRpb24pCiB7Ci0gICAgQVNTRVJUKFdlYlRo
cmVhZElzQ3VycmVudCgpIHx8IGlzTWFpblRocmVhZCgpKTsKLSAgICBSZWZQdHI8V2ViVmlkZW9G
dWxsc2NyZWVuQ29udHJvbGxlckNvbnRleHQ+IHByb3RlY3RlZFRoaXModGhpcyk7Ci0gICAgZGlz
cGF0Y2hfYXN5bmMoZGlzcGF0Y2hfZ2V0X21haW5fcXVldWUoKSwgW3Byb3RlY3RlZFRoaXMsIHRo
aXNdIHsKLSAgICAgICAgaWYgKG1faW50ZXJmYWNlKQotICAgICAgICAgICAgbV9pbnRlcmZhY2Ut
PnJlc2V0TWVkaWFTdGF0ZSgpOwotICAgIH0pOworICAgIGlmIChXZWJUaHJlYWRJc0N1cnJlbnQo
KSkgeworICAgICAgICBSZWZQdHI8V2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlckNvbnRleHQ+
IHByb3RlY3RlZFRoaXModGhpcyk7CisgICAgICAgIGRpc3BhdGNoX2FzeW5jKGRpc3BhdGNoX2dl
dF9tYWluX3F1ZXVlKCksIFtwcm90ZWN0ZWRUaGlzLCBkdXJhdGlvbl0geworICAgICAgICAgICAg
cHJvdGVjdGVkVGhpcy0+ZHVyYXRpb25DaGFuZ2VkKGR1cmF0aW9uKTsKKyAgICAgICAgfSk7Cisg
ICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBmb3IgKGF1dG8mIGNsaWVudCA6IG1fcGxheWJh
Y2tDbGllbnRzKQorICAgICAgICBjbGllbnQtPmR1cmF0aW9uQ2hhbmdlZChkdXJhdGlvbik7CiB9
CiAKLXZvaWQgV2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlckNvbnRleHQ6OnNldER1cmF0aW9u
KGRvdWJsZSBkdXJhdGlvbikKK3ZvaWQgV2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlckNvbnRl
eHQ6OmN1cnJlbnRUaW1lQ2hhbmdlZChkb3VibGUgY3VycmVudFRpbWUsIGRvdWJsZSBhbmNob3JU
aW1lKQogewotICAgIEFTU0VSVChXZWJUaHJlYWRJc0N1cnJlbnQoKSk7Ci0gICAgUmVmUHRyPFdl
YlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJDb250ZXh0PiBwcm90ZWN0ZWRUaGlzKHRoaXMpOwot
ICAgIGRpc3BhdGNoX2FzeW5jKGRpc3BhdGNoX2dldF9tYWluX3F1ZXVlKCksIFtwcm90ZWN0ZWRU
aGlzLCB0aGlzLCBkdXJhdGlvbl0gewotICAgICAgICBpZiAobV9pbnRlcmZhY2UpCi0gICAgICAg
ICAgICBtX2ludGVyZmFjZS0+c2V0RHVyYXRpb24oZHVyYXRpb24pOwotICAgIH0pOworICAgIGlm
IChXZWJUaHJlYWRJc0N1cnJlbnQoKSkgeworICAgICAgICBSZWZQdHI8V2ViVmlkZW9GdWxsc2Ny
ZWVuQ29udHJvbGxlckNvbnRleHQ+IHByb3RlY3RlZFRoaXModGhpcyk7CisgICAgICAgIGRpc3Bh
dGNoX2FzeW5jKGRpc3BhdGNoX2dldF9tYWluX3F1ZXVlKCksIFtwcm90ZWN0ZWRUaGlzLCBjdXJy
ZW50VGltZSwgYW5jaG9yVGltZV0geworICAgICAgICAgICAgcHJvdGVjdGVkVGhpcy0+Y3VycmVu
dFRpbWVDaGFuZ2VkKGN1cnJlbnRUaW1lLCBhbmNob3JUaW1lKTsKKyAgICAgICAgfSk7CisgICAg
ICAgIHJldHVybjsKKyAgICB9CisKKyAgICBmb3IgKGF1dG8mIGNsaWVudCA6IG1fcGxheWJhY2tD
bGllbnRzKQorICAgICAgICBjbGllbnQtPmN1cnJlbnRUaW1lQ2hhbmdlZChjdXJyZW50VGltZSwg
YW5jaG9yVGltZSk7CiB9CiAKLXZvaWQgV2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlckNvbnRl
eHQ6OnNldEN1cnJlbnRUaW1lKGRvdWJsZSBjdXJyZW50VGltZSwgZG91YmxlIGFuY2hvclRpbWUp
Cit2b2lkIFdlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJDb250ZXh0OjpidWZmZXJlZFRpbWVD
aGFuZ2VkKGRvdWJsZSBidWZmZXJlZFRpbWUpCiB7Ci0gICAgQVNTRVJUKFdlYlRocmVhZElzQ3Vy
cmVudCgpKTsKLSAgICBSZWZQdHI8V2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlckNvbnRleHQ+
IHByb3RlY3RlZFRoaXModGhpcyk7Ci0gICAgZGlzcGF0Y2hfYXN5bmMoZGlzcGF0Y2hfZ2V0X21h
aW5fcXVldWUoKSwgW3Byb3RlY3RlZFRoaXMsIHRoaXMsIGN1cnJlbnRUaW1lLCBhbmNob3JUaW1l
XSB7Ci0gICAgICAgIGlmIChtX2ludGVyZmFjZSkKLSAgICAgICAgICAgIG1faW50ZXJmYWNlLT5z
ZXRDdXJyZW50VGltZShjdXJyZW50VGltZSwgYW5jaG9yVGltZSk7Ci0gICAgfSk7CisgICAgaWYg
KFdlYlRocmVhZElzQ3VycmVudCgpKSB7CisgICAgICAgIFJlZlB0cjxXZWJWaWRlb0Z1bGxzY3Jl
ZW5Db250cm9sbGVyQ29udGV4dD4gcHJvdGVjdGVkVGhpcyh0aGlzKTsKKyAgICAgICAgZGlzcGF0
Y2hfYXN5bmMoZGlzcGF0Y2hfZ2V0X21haW5fcXVldWUoKSwgW3Byb3RlY3RlZFRoaXMsIGJ1ZmZl
cmVkVGltZV0geworICAgICAgICAgICAgcHJvdGVjdGVkVGhpcy0+YnVmZmVyZWRUaW1lQ2hhbmdl
ZChidWZmZXJlZFRpbWUpOworICAgICAgICB9KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKwor
ICAgIGZvciAoYXV0byYgY2xpZW50IDogbV9wbGF5YmFja0NsaWVudHMpCisgICAgICAgIGNsaWVu
dC0+YnVmZmVyZWRUaW1lQ2hhbmdlZChidWZmZXJlZFRpbWUpOwogfQogCi12b2lkIFdlYlZpZGVv
RnVsbHNjcmVlbkNvbnRyb2xsZXJDb250ZXh0OjpzZXRCdWZmZXJlZFRpbWUoZG91YmxlIGJ1ZmZl
cmVkVGltZSkKK3ZvaWQgV2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlckNvbnRleHQ6OnJhdGVD
aGFuZ2VkKGJvb2wgaXNQbGF5aW5nLCBmbG9hdCBwbGF5YmFja1JhdGUpCiB7Ci0gICAgQVNTRVJU
KFdlYlRocmVhZElzQ3VycmVudCgpKTsKLSAgICBSZWZQdHI8V2ViVmlkZW9GdWxsc2NyZWVuQ29u
dHJvbGxlckNvbnRleHQ+IHByb3RlY3RlZFRoaXModGhpcyk7Ci0gICAgZGlzcGF0Y2hfYXN5bmMo
ZGlzcGF0Y2hfZ2V0X21haW5fcXVldWUoKSwgW3Byb3RlY3RlZFRoaXMsIHRoaXMsIGJ1ZmZlcmVk
VGltZV0gewotICAgICAgICBpZiAobV9pbnRlcmZhY2UpCi0gICAgICAgICAgICBtX2ludGVyZmFj
ZS0+c2V0QnVmZmVyZWRUaW1lKGJ1ZmZlcmVkVGltZSk7Ci0gICAgfSk7CisgICAgaWYgKFdlYlRo
cmVhZElzQ3VycmVudCgpKSB7CisgICAgICAgIFJlZlB0cjxXZWJWaWRlb0Z1bGxzY3JlZW5Db250
cm9sbGVyQ29udGV4dD4gcHJvdGVjdGVkVGhpcyh0aGlzKTsKKyAgICAgICAgZGlzcGF0Y2hfYXN5
bmMoZGlzcGF0Y2hfZ2V0X21haW5fcXVldWUoKSwgW3Byb3RlY3RlZFRoaXMsIGlzUGxheWluZywg
cGxheWJhY2tSYXRlXSB7CisgICAgICAgICAgICBwcm90ZWN0ZWRUaGlzLT5yYXRlQ2hhbmdlZChp
c1BsYXlpbmcsIHBsYXliYWNrUmF0ZSk7CisgICAgICAgIH0pOworICAgICAgICByZXR1cm47Cisg
ICAgfQorCisgICAgZm9yIChhdXRvJiBjbGllbnQgOiBtX3BsYXliYWNrQ2xpZW50cykKKyAgICAg
ICAgY2xpZW50LT5yYXRlQ2hhbmdlZChpc1BsYXlpbmcsIHBsYXliYWNrUmF0ZSk7CiB9CiAKLXZv
aWQgV2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlckNvbnRleHQ6OnNldFJhdGUoYm9vbCBpc1Bs
YXlpbmcsIGZsb2F0IHBsYXliYWNrUmF0ZSkKK3ZvaWQgV2ViVmlkZW9GdWxsc2NyZWVuQ29udHJv
bGxlckNvbnRleHQ6Omhhc1ZpZGVvQ2hhbmdlZChib29sIGhhc1ZpZGVvKQogewotICAgIEFTU0VS
VChXZWJUaHJlYWRJc0N1cnJlbnQoKSk7Ci0gICAgUmVmUHRyPFdlYlZpZGVvRnVsbHNjcmVlbkNv
bnRyb2xsZXJDb250ZXh0PiBwcm90ZWN0ZWRUaGlzKHRoaXMpOwotICAgIGRpc3BhdGNoX2FzeW5j
KGRpc3BhdGNoX2dldF9tYWluX3F1ZXVlKCksIFtwcm90ZWN0ZWRUaGlzLCB0aGlzLCBpc1BsYXlp
bmcsIHBsYXliYWNrUmF0ZV0gewotICAgICAgICBpZiAobV9pbnRlcmZhY2UpCi0gICAgICAgICAg
ICBtX2ludGVyZmFjZS0+c2V0UmF0ZShpc1BsYXlpbmcsIHBsYXliYWNrUmF0ZSk7Ci0gICAgfSk7
CisgICAgaWYgKFdlYlRocmVhZElzQ3VycmVudCgpKSB7CisgICAgICAgIFJlZlB0cjxXZWJWaWRl
b0Z1bGxzY3JlZW5Db250cm9sbGVyQ29udGV4dD4gcHJvdGVjdGVkVGhpcyh0aGlzKTsKKyAgICAg
ICAgZGlzcGF0Y2hfYXN5bmMoZGlzcGF0Y2hfZ2V0X21haW5fcXVldWUoKSwgW3Byb3RlY3RlZFRo
aXMsIGhhc1ZpZGVvXSB7CisgICAgICAgICAgICBwcm90ZWN0ZWRUaGlzLT5oYXNWaWRlb0NoYW5n
ZWQoaGFzVmlkZW8pOworICAgICAgICB9KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAg
IGZvciAoYXV0byYgY2xpZW50IDogbV9mdWxsc2NyZWVuQ2xpZW50cykKKyAgICAgICAgY2xpZW50
LT5oYXNWaWRlb0NoYW5nZWQoaGFzVmlkZW8pOwogfQogCi12b2lkIFdlYlZpZGVvRnVsbHNjcmVl
bkNvbnRyb2xsZXJDb250ZXh0OjpzZXRWaWRlb0RpbWVuc2lvbnMoYm9vbCBoYXNWaWRlbywgZmxv
YXQgd2lkdGgsIGZsb2F0IGhlaWdodCkKK3ZvaWQgV2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxl
ckNvbnRleHQ6OnZpZGVvRGltZW5zaW9uc0NoYW5nZWQoY29uc3QgRmxvYXRTaXplJiB2aWRlb0Rp
bWVuc2lvbnMpCiB7CiAgICAgaWYgKFdlYlRocmVhZElzQ3VycmVudCgpKSB7CiAgICAgICAgIFJl
ZlB0cjxXZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyQ29udGV4dD4gcHJvdGVjdGVkVGhpcyh0
aGlzKTsKLSAgICAgICAgZGlzcGF0Y2hfYXN5bmMoZGlzcGF0Y2hfZ2V0X21haW5fcXVldWUoKSwg
W3Byb3RlY3RlZFRoaXMsIHRoaXMsIGhhc1ZpZGVvLCB3aWR0aCwgaGVpZ2h0XSB7Ci0gICAgICAg
ICAgICBpZiAobV9pbnRlcmZhY2UpCi0gICAgICAgICAgICAgICAgbV9pbnRlcmZhY2UtPnNldFZp
ZGVvRGltZW5zaW9ucyhoYXNWaWRlbywgd2lkdGgsIGhlaWdodCk7CisgICAgICAgIGRpc3BhdGNo
X2FzeW5jKGRpc3BhdGNoX2dldF9tYWluX3F1ZXVlKCksIFtwcm90ZWN0ZWRUaGlzLCB2aWRlb0Rp
bWVuc2lvbnMgPSB2aWRlb0RpbWVuc2lvbnNdIHsKKyAgICAgICAgICAgIHByb3RlY3RlZFRoaXMt
PnZpZGVvRGltZW5zaW9uc0NoYW5nZWQodmlkZW9EaW1lbnNpb25zKTsKICAgICAgICAgfSk7CiAg
ICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBpZiAobV9pbnRlcmZhY2UpCi0gICAgICAgIG1f
aW50ZXJmYWNlLT5zZXRWaWRlb0RpbWVuc2lvbnMoaGFzVmlkZW8sIHdpZHRoLCBoZWlnaHQpOwor
ICAgIGZvciAoYXV0byYgY2xpZW50IDogbV9mdWxsc2NyZWVuQ2xpZW50cykKKyAgICAgICAgY2xp
ZW50LT52aWRlb0RpbWVuc2lvbnNDaGFuZ2VkKHZpZGVvRGltZW5zaW9ucyk7CiB9CiAKLXZvaWQg
V2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlckNvbnRleHQ6OnNldFNlZWthYmxlUmFuZ2VzKGNv
bnN0IFRpbWVSYW5nZXMmIHRpbWVSYW5nZXMpCit2b2lkIFdlYlZpZGVvRnVsbHNjcmVlbkNvbnRy
b2xsZXJDb250ZXh0OjpzZWVrYWJsZVJhbmdlc0NoYW5nZWQoY29uc3QgVGltZVJhbmdlcyYgdGlt
ZVJhbmdlcykKIHsKLSAgICBBU1NFUlQoV2ViVGhyZWFkSXNDdXJyZW50KCkpOwotICAgIFJlZlB0
cjxXZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyQ29udGV4dD4gcHJvdGVjdGVkVGhpcyh0aGlz
KTsKLSAgICBjb25zdCBQbGF0Zm9ybVRpbWVSYW5nZXMmIHBsYXRmb3JtVGltZVJhbmdlcyA9IHRp
bWVSYW5nZXMucmFuZ2VzKCk7Ci0gICAgZGlzcGF0Y2hfYXN5bmMoZGlzcGF0Y2hfZ2V0X21haW5f
cXVldWUoKSwgW3Byb3RlY3RlZFRoaXMsIHRoaXMsIHBsYXRmb3JtVGltZVJhbmdlc10gewotICAg
ICAgICBpZiAobV9pbnRlcmZhY2UpCi0gICAgICAgICAgICBtX2ludGVyZmFjZS0+c2V0U2Vla2Fi
bGVSYW5nZXMoVGltZVJhbmdlczo6Y3JlYXRlKHBsYXRmb3JtVGltZVJhbmdlcykpOwotICAgIH0p
OworICAgIGlmIChXZWJUaHJlYWRJc0N1cnJlbnQoKSkgeworICAgICAgICBSZWZQdHI8V2ViVmlk
ZW9GdWxsc2NyZWVuQ29udHJvbGxlckNvbnRleHQ+IHByb3RlY3RlZFRoaXModGhpcyk7CisgICAg
ICAgIGRpc3BhdGNoX2FzeW5jKGRpc3BhdGNoX2dldF9tYWluX3F1ZXVlKCksIFtwcm90ZWN0ZWRU
aGlzLCBwbGF0Zm9ybVRpbWVSYW5nZXMgPSB0aW1lUmFuZ2VzLnJhbmdlcygpXSB7CisgICAgICAg
ICAgICBwcm90ZWN0ZWRUaGlzLT5zZWVrYWJsZVJhbmdlc0NoYW5nZWQoVGltZVJhbmdlczo6Y3Jl
YXRlKHBsYXRmb3JtVGltZVJhbmdlcykpOworICAgICAgICB9KTsKKyAgICAgICAgcmV0dXJuOwor
ICAgIH0KKworICAgIGZvciAoYXV0byAmY2xpZW50IDogbV9wbGF5YmFja0NsaWVudHMpCisgICAg
ICAgIGNsaWVudC0+c2Vla2FibGVSYW5nZXNDaGFuZ2VkKHRpbWVSYW5nZXMpOwogfQogCi12b2lk
IFdlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJDb250ZXh0OjpzZXRDYW5QbGF5RmFzdFJldmVy
c2UoYm9vbCBjYW5QbGF5RmFzdFJldmVyc2UpCit2b2lkIFdlYlZpZGVvRnVsbHNjcmVlbkNvbnRy
b2xsZXJDb250ZXh0OjpjYW5QbGF5RmFzdFJldmVyc2VDaGFuZ2VkKGJvb2wgY2FuUGxheUZhc3RS
ZXZlcnNlKQogewotICAgIEFTU0VSVChXZWJUaHJlYWRJc0N1cnJlbnQoKSk7Ci0gICAgUmVmUHRy
PFdlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJDb250ZXh0PiBwcm90ZWN0ZWRUaGlzKHRoaXMp
OwotICAgIGRpc3BhdGNoX2FzeW5jKGRpc3BhdGNoX2dldF9tYWluX3F1ZXVlKCksIFtwcm90ZWN0
ZWRUaGlzLCB0aGlzLCBjYW5QbGF5RmFzdFJldmVyc2VdIHsKLSAgICAgICAgaWYgKG1faW50ZXJm
YWNlKQotICAgICAgICAgICAgbV9pbnRlcmZhY2UtPnNldENhblBsYXlGYXN0UmV2ZXJzZShjYW5Q
bGF5RmFzdFJldmVyc2UpOwotICAgIH0pOworICAgIGlmIChXZWJUaHJlYWRJc0N1cnJlbnQoKSkg
eworICAgICAgICBSZWZQdHI8V2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlckNvbnRleHQ+IHBy
b3RlY3RlZFRoaXModGhpcyk7CisgICAgICAgIGRpc3BhdGNoX2FzeW5jKGRpc3BhdGNoX2dldF9t
YWluX3F1ZXVlKCksIFtwcm90ZWN0ZWRUaGlzLCBjYW5QbGF5RmFzdFJldmVyc2VdIHsKKyAgICAg
ICAgICAgIHByb3RlY3RlZFRoaXMtPmNhblBsYXlGYXN0UmV2ZXJzZUNoYW5nZWQoY2FuUGxheUZh
c3RSZXZlcnNlKTsKKyAgICAgICAgfSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBm
b3IgKGF1dG8gJmNsaWVudCA6IG1fcGxheWJhY2tDbGllbnRzKQorICAgICAgICBjbGllbnQtPmNh
blBsYXlGYXN0UmV2ZXJzZUNoYW5nZWQoY2FuUGxheUZhc3RSZXZlcnNlKTsKIH0KIAotdm9pZCBX
ZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyQ29udGV4dDo6c2V0QXVkaW9NZWRpYVNlbGVjdGlv
bk9wdGlvbnMoY29uc3QgVmVjdG9yPFN0cmluZz4mIG9wdGlvbnMsIHVpbnQ2NF90IHNlbGVjdGVk
SW5kZXgpCit2b2lkIFdlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJDb250ZXh0OjphdWRpb01l
ZGlhU2VsZWN0aW9uT3B0aW9uc0NoYW5nZWQoY29uc3QgVmVjdG9yPFN0cmluZz4mIG9wdGlvbnMs
IHVpbnQ2NF90IHNlbGVjdGVkSW5kZXgpCiB7Ci0gICAgQVNTRVJUKFdlYlRocmVhZElzQ3VycmVu
dCgpKTsKLSAgICBSZWZQdHI8V2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlckNvbnRleHQ+IHBy
b3RlY3RlZFRoaXModGhpcyk7CisgICAgaWYgKFdlYlRocmVhZElzQ3VycmVudCgpKSB7CisgICAg
ICAgIFJlZlB0cjxXZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyQ29udGV4dD4gcHJvdGVjdGVk
VGhpcyh0aGlzKTsKKyAgICAgICAgZGlzcGF0Y2hfYXN5bmMoZGlzcGF0Y2hfZ2V0X21haW5fcXVl
dWUoKSwgW3Byb3RlY3RlZFRoaXMsIG9wdGlvbnMgPSBvcHRpb25zLCBzZWxlY3RlZEluZGV4XSB7
CisgICAgICAgICAgICBwcm90ZWN0ZWRUaGlzLT5hdWRpb01lZGlhU2VsZWN0aW9uT3B0aW9uc0No
YW5nZWQob3B0aW9ucywgc2VsZWN0ZWRJbmRleCk7CisgICAgICAgIH0pOworICAgICAgICByZXR1
cm47CisgICAgfQogCi0gICAgUmV0YWluUHRyPE5TTXV0YWJsZUFycmF5PiBvcHRpb25zQXJyYXkg
PSBhZG9wdE5TKFtbTlNNdXRhYmxlQXJyYXkgYWxsb2NdIGluaXRXaXRoQ2FwYWNpdHk6b3B0aW9u
cy5zaXplKCldKTsKLSAgICBmb3IgKGF1dG8mIG5hbWUgOiBvcHRpb25zKQotICAgICAgICBbb3B0
aW9uc0FycmF5IGFkZE9iamVjdDpuYW1lXTsKLSAgICAKLSAgICBkaXNwYXRjaF9hc3luYyhkaXNw
YXRjaF9nZXRfbWFpbl9xdWV1ZSgpLCBbcHJvdGVjdGVkVGhpcywgdGhpcywgb3B0aW9uc0FycmF5
LCBzZWxlY3RlZEluZGV4XSB7Ci0gICAgICAgIFZlY3RvcjxTdHJpbmc+IG9wdGlvbnM7Ci0gICAg
ICAgIGZvciAoTlNTdHJpbmcgKm5hbWUgOiBvcHRpb25zQXJyYXkuZ2V0KCkpCi0gICAgICAgICAg
ICBvcHRpb25zLmFwcGVuZChuYW1lKTsKLSAgICAgICAgCi0gICAgICAgIGlmIChtX2ludGVyZmFj
ZSkKLSAgICAgICAgICAgIG1faW50ZXJmYWNlLT5zZXRBdWRpb01lZGlhU2VsZWN0aW9uT3B0aW9u
cyhvcHRpb25zLCBzZWxlY3RlZEluZGV4KTsKLSAgICB9KTsKKyAgICBmb3IgKGF1dG8mIGNsaWVu
dCA6IG1fcGxheWJhY2tDbGllbnRzKQorICAgICAgICBjbGllbnQtPmF1ZGlvTWVkaWFTZWxlY3Rp
b25PcHRpb25zQ2hhbmdlZChvcHRpb25zLCBzZWxlY3RlZEluZGV4KTsKIH0KIAotdm9pZCBXZWJW
aWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyQ29udGV4dDo6c2V0TGVnaWJsZU1lZGlhU2VsZWN0aW9u
T3B0aW9ucyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgb3B0aW9ucywgdWludDY0X3Qgc2VsZWN0ZWRJ
bmRleCkKK3ZvaWQgV2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlckNvbnRleHQ6OmxlZ2libGVN
ZWRpYVNlbGVjdGlvbk9wdGlvbnNDaGFuZ2VkKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBvcHRpb25z
LCB1aW50NjRfdCBzZWxlY3RlZEluZGV4KQogewotICAgIEFTU0VSVChXZWJUaHJlYWRJc0N1cnJl
bnQoKSk7Ci0gICAgUmVmUHRyPFdlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJDb250ZXh0PiBw
cm90ZWN0ZWRUaGlzKHRoaXMpOwotICAgIAotICAgIFJldGFpblB0cjxOU011dGFibGVBcnJheT4g
b3B0aW9uc0FycmF5ID0gYWRvcHROUyhbW05TTXV0YWJsZUFycmF5IGFsbG9jXSBpbml0V2l0aENh
cGFjaXR5Om9wdGlvbnMuc2l6ZSgpXSk7Ci0gICAgZm9yIChhdXRvJiBuYW1lIDogb3B0aW9ucykK
LSAgICAgICAgW29wdGlvbnNBcnJheSBhZGRPYmplY3Q6bmFtZV07Ci0gICAgCi0gICAgZGlzcGF0
Y2hfYXN5bmMoZGlzcGF0Y2hfZ2V0X21haW5fcXVldWUoKSwgW3Byb3RlY3RlZFRoaXMsIHRoaXMs
IG9wdGlvbnNBcnJheSwgc2VsZWN0ZWRJbmRleF0gewotICAgICAgICBWZWN0b3I8U3RyaW5nPiBv
cHRpb25zOwotICAgICAgICBmb3IgKE5TU3RyaW5nICpuYW1lIDogb3B0aW9uc0FycmF5LmdldCgp
KQotICAgICAgICAgICAgb3B0aW9ucy5hcHBlbmQobmFtZSk7Ci0gICAgICAgIAotICAgICAgICBp
ZiAobV9pbnRlcmZhY2UpCi0gICAgICAgICAgICBtX2ludGVyZmFjZS0+c2V0TGVnaWJsZU1lZGlh
U2VsZWN0aW9uT3B0aW9ucyhvcHRpb25zLCBzZWxlY3RlZEluZGV4KTsKLSAgICB9KTsKKyAgICBp
ZiAoV2ViVGhyZWFkSXNDdXJyZW50KCkpIHsKKyAgICAgICAgUmVmUHRyPFdlYlZpZGVvRnVsbHNj
cmVlbkNvbnRyb2xsZXJDb250ZXh0PiBwcm90ZWN0ZWRUaGlzKHRoaXMpOworICAgICAgICBkaXNw
YXRjaF9hc3luYyhkaXNwYXRjaF9nZXRfbWFpbl9xdWV1ZSgpLCBbcHJvdGVjdGVkVGhpcywgb3B0
aW9ucyA9IG9wdGlvbnMsIHNlbGVjdGVkSW5kZXhdIHsKKyAgICAgICAgICAgIHByb3RlY3RlZFRo
aXMtPmxlZ2libGVNZWRpYVNlbGVjdGlvbk9wdGlvbnNDaGFuZ2VkKG9wdGlvbnMsIHNlbGVjdGVk
SW5kZXgpOworICAgICAgICB9KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGZvciAo
YXV0byYgY2xpZW50IDogbV9wbGF5YmFja0NsaWVudHMpCisgICAgICAgIGNsaWVudC0+bGVnaWJs
ZU1lZGlhU2VsZWN0aW9uT3B0aW9uc0NoYW5nZWQob3B0aW9ucywgc2VsZWN0ZWRJbmRleCk7CiB9
CiAKLXZvaWQgV2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlckNvbnRleHQ6OnNldEV4dGVybmFs
UGxheWJhY2soYm9vbCBlbmFibGVkLCBFeHRlcm5hbFBsYXliYWNrVGFyZ2V0VHlwZSB0eXBlLCBT
dHJpbmcgbG9jYWxpemVkRGV2aWNlTmFtZSkKK3ZvaWQgV2ViVmlkZW9GdWxsc2NyZWVuQ29udHJv
bGxlckNvbnRleHQ6OmV4dGVybmFsUGxheWJhY2tDaGFuZ2VkKGJvb2wgZW5hYmxlZCwgV2ViUGxh
eWJhY2tTZXNzaW9uTW9kZWw6OkV4dGVybmFsUGxheWJhY2tUYXJnZXRUeXBlIHR5cGUsIGNvbnN0
IFN0cmluZyYgbG9jYWxpemVkRGV2aWNlTmFtZSkKIHsKLSAgICBBU1NFUlQoV2ViVGhyZWFkSXND
dXJyZW50KCkpOwotICAgIGNhbGxPbk1haW5UaHJlYWQoW3Byb3RlY3RlZFRoaXMgPSBtYWtlUmVm
KCp0aGlzKSwgdGhpcywgZW5hYmxlZCwgdHlwZSwgbG9jYWxpemVkRGV2aWNlTmFtZSA9IGxvY2Fs
aXplZERldmljZU5hbWUuaXNvbGF0ZWRDb3B5KCldIHsKLSAgICAgICAgaWYgKG1faW50ZXJmYWNl
KQotICAgICAgICAgICAgbV9pbnRlcmZhY2UtPnNldEV4dGVybmFsUGxheWJhY2soZW5hYmxlZCwg
dHlwZSwgbG9jYWxpemVkRGV2aWNlTmFtZSk7Ci0gICAgfSk7CisgICAgaWYgKFdlYlRocmVhZElz
Q3VycmVudCgpKSB7CisgICAgICAgIGNhbGxPbk1haW5UaHJlYWQoW3Byb3RlY3RlZFRoaXMgPSBt
YWtlUmVmKCp0aGlzKSwgdGhpcywgZW5hYmxlZCwgdHlwZSwgbG9jYWxpemVkRGV2aWNlTmFtZSA9
IGxvY2FsaXplZERldmljZU5hbWUuaXNvbGF0ZWRDb3B5KCldIHsKKyAgICAgICAgICAgIGZvciAo
YXV0byYgY2xpZW50IDogbV9wbGF5YmFja0NsaWVudHMpCisgICAgICAgICAgICAgICAgY2xpZW50
LT5leHRlcm5hbFBsYXliYWNrQ2hhbmdlZChlbmFibGVkLCB0eXBlLCBsb2NhbGl6ZWREZXZpY2VO
YW1lKTsKKyAgICAgICAgfSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBmb3IgKGF1
dG8mIGNsaWVudCA6IG1fcGxheWJhY2tDbGllbnRzKQorICAgICAgICBjbGllbnQtPmV4dGVybmFs
UGxheWJhY2tDaGFuZ2VkKGVuYWJsZWQsIHR5cGUsIGxvY2FsaXplZERldmljZU5hbWUpOwogfQog
Ci12b2lkIFdlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJDb250ZXh0OjpzZXRXaXJlbGVzc1Zp
ZGVvUGxheWJhY2tEaXNhYmxlZChib29sIGRpc2FibGVkKQordm9pZCBXZWJWaWRlb0Z1bGxzY3Jl
ZW5Db250cm9sbGVyQ29udGV4dDo6d2lyZWxlc3NWaWRlb1BsYXliYWNrRGlzYWJsZWRDaGFuZ2Vk
KGJvb2wgZGlzYWJsZWQpCiB7Ci0gICAgQVNTRVJUKFdlYlRocmVhZElzQ3VycmVudCgpKTsKLSAg
ICBSZWZQdHI8V2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlckNvbnRleHQ+IHByb3RlY3RlZFRo
aXModGhpcyk7Ci0gICAgZGlzcGF0Y2hfYXN5bmMoZGlzcGF0Y2hfZ2V0X21haW5fcXVldWUoKSwg
W3Byb3RlY3RlZFRoaXMsIHRoaXMsIGRpc2FibGVkXSB7Ci0gICAgICAgIGlmIChtX2ludGVyZmFj
ZSkKLSAgICAgICAgICAgIG1faW50ZXJmYWNlLT5zZXRXaXJlbGVzc1ZpZGVvUGxheWJhY2tEaXNh
YmxlZChkaXNhYmxlZCk7Ci0gICAgfSk7CisgICAgaWYgKFdlYlRocmVhZElzQ3VycmVudCgpKSB7
CisgICAgICAgIFJlZlB0cjxXZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyQ29udGV4dD4gcHJv
dGVjdGVkVGhpcyh0aGlzKTsKKyAgICAgICAgZGlzcGF0Y2hfYXN5bmMoZGlzcGF0Y2hfZ2V0X21h
aW5fcXVldWUoKSwgW3Byb3RlY3RlZFRoaXMsIGRpc2FibGVkXSB7CisgICAgICAgICAgICBwcm90
ZWN0ZWRUaGlzLT53aXJlbGVzc1ZpZGVvUGxheWJhY2tEaXNhYmxlZENoYW5nZWQoZGlzYWJsZWQp
OworICAgICAgICB9KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGZvciAoYXV0byYg
Y2xpZW50IDogbV9wbGF5YmFja0NsaWVudHMpCisgICAgICAgIGNsaWVudC0+d2lyZWxlc3NWaWRl
b1BsYXliYWNrRGlzYWJsZWRDaGFuZ2VkKGRpc2FibGVkKTsKIH0KIAogI3ByYWdtYSBtYXJrIFdl
YlZpZGVvRnVsbHNjcmVlbk1vZGVsCiAKK3ZvaWQgV2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxl
ckNvbnRleHQ6OmFkZENsaWVudChXZWJWaWRlb0Z1bGxzY3JlZW5Nb2RlbENsaWVudCYgY2xpZW50
KQoreworICAgIEFTU0VSVCghbV9mdWxsc2NyZWVuQ2xpZW50cy5jb250YWlucygmY2xpZW50KSk7
CisgICAgbV9mdWxsc2NyZWVuQ2xpZW50cy5hZGQoJmNsaWVudCk7Cit9CisKK3ZvaWQgV2ViVmlk
ZW9GdWxsc2NyZWVuQ29udHJvbGxlckNvbnRleHQ6OnJlbW92ZUNsaWVudChXZWJWaWRlb0Z1bGxz
Y3JlZW5Nb2RlbENsaWVudCYgY2xpZW50KQoreworICAgIEFTU0VSVChtX2Z1bGxzY3JlZW5DbGll
bnRzLmNvbnRhaW5zKCZjbGllbnQpKTsKKyAgICBtX2Z1bGxzY3JlZW5DbGllbnRzLnJlbW92ZSgm
Y2xpZW50KTsKK30KKwogdm9pZCBXZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyQ29udGV4dDo6
cmVxdWVzdEZ1bGxzY3JlZW5Nb2RlKEhUTUxNZWRpYUVsZW1lbnRFbnVtczo6VmlkZW9GdWxsc2Ny
ZWVuTW9kZSBtb2RlKQogewogICAgIEFTU0VSVChpc1VJVGhyZWFkKCkpOwogICAgIFJlZlB0cjxX
ZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyQ29udGV4dD4gcHJvdGVjdGVkVGhpcyh0aGlzKTsK
ICAgICBXZWJUaHJlYWRSdW4oW3Byb3RlY3RlZFRoaXMsIHRoaXMsIG1vZGVdIHsKLSAgICAgICAg
aWYgKG1fbW9kZWwpCi0gICAgICAgICAgICBtX21vZGVsLT5yZXF1ZXN0RnVsbHNjcmVlbk1vZGUo
bW9kZSk7CisgICAgICAgIGlmIChtX2Z1bGxzY3JlZW5Nb2RlbCkKKyAgICAgICAgICAgIG1fZnVs
bHNjcmVlbk1vZGVsLT5yZXF1ZXN0RnVsbHNjcmVlbk1vZGUobW9kZSk7CiAgICAgfSk7CiB9CiAK
QEAgLTQ3OSw4ICs0NjgsOCBAQCB2b2lkIFdlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJDb250
ZXh0OjpzZXRWaWRlb0xheWVyRnJhbWUoRmxvYXRSZWN0IGZyYW1lKQogICAgICAgICAgICAgCiAg
ICAgICAgICAgICBbdmlkZW9GdWxsc2NyZWVuTGF5ZXIgc2V0U3VibGF5ZXJUcmFuc2Zvcm06Q0FU
cmFuc2Zvcm0zRElkZW50aXR5XTsKICAgICAgICAgICAgIAotICAgICAgICAgICAgaWYgKG1fbW9k
ZWwpCi0gICAgICAgICAgICAgICAgbV9tb2RlbC0+c2V0VmlkZW9MYXllckZyYW1lKGZyYW1lKTsK
KyAgICAgICAgICAgIGlmIChtX2Z1bGxzY3JlZW5Nb2RlbCkKKyAgICAgICAgICAgICAgICBtX2Z1
bGxzY3JlZW5Nb2RlbC0+c2V0VmlkZW9MYXllckZyYW1lKGZyYW1lKTsKICAgICAgICAgICAgIFtD
QVRyYW5zYWN0aW9uIGNvbW1pdF07CiAgICAgICAgIH0pOwogICAgIH0pOwpAQCAtNDkxLDggKzQ4
MCw4IEBAIHZvaWQgV2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlckNvbnRleHQ6OnNldFZpZGVv
TGF5ZXJHcmF2aXR5KFdlYlZpZGVvRnVsbHNjcmVlCiAgICAgQVNTRVJUKGlzVUlUaHJlYWQoKSk7
CiAgICAgUmVmUHRyPFdlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJDb250ZXh0PiBwcm90ZWN0
ZWRUaGlzKHRoaXMpOwogICAgIFdlYlRocmVhZFJ1bihbcHJvdGVjdGVkVGhpcywgdGhpcywgdmlk
ZW9HcmF2aXR5XSB7Ci0gICAgICAgIGlmIChtX21vZGVsKQotICAgICAgICAgICAgbV9tb2RlbC0+
c2V0VmlkZW9MYXllckdyYXZpdHkodmlkZW9HcmF2aXR5KTsKKyAgICAgICAgaWYgKG1fZnVsbHNj
cmVlbk1vZGVsKQorICAgICAgICAgICAgbV9mdWxsc2NyZWVuTW9kZWwtPnNldFZpZGVvTGF5ZXJH
cmF2aXR5KHZpZGVvR3Jhdml0eSk7CiAgICAgfSk7CiB9CiAKQEAgLTUwMSwyNiArNDkwLDUwIEBA
IHZvaWQgV2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlckNvbnRleHQ6OmZ1bGxzY3JlZW5Nb2Rl
Q2hhbmdlZChIVE1MTWVkaWFFbGVtZW50CiAgICAgQVNTRVJUKGlzVUlUaHJlYWQoKSk7CiAgICAg
UmVmUHRyPFdlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJDb250ZXh0PiBwcm90ZWN0ZWRUaGlz
KHRoaXMpOwogICAgIFdlYlRocmVhZFJ1bihbcHJvdGVjdGVkVGhpcywgdGhpcywgbW9kZV0gewot
ICAgICAgICBpZiAobV9tb2RlbCkKLSAgICAgICAgICAgIG1fbW9kZWwtPmZ1bGxzY3JlZW5Nb2Rl
Q2hhbmdlZChtb2RlKTsKKyAgICAgICAgaWYgKG1fZnVsbHNjcmVlbk1vZGVsKQorICAgICAgICAg
ICAgbV9mdWxsc2NyZWVuTW9kZWwtPmZ1bGxzY3JlZW5Nb2RlQ2hhbmdlZChtb2RlKTsKICAgICB9
KTsKIH0KIAogYm9vbCBXZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyQ29udGV4dDo6aXNWaXNp
YmxlKCkgY29uc3QKIHsKICAgICBBU1NFUlQoaXNVSVRocmVhZCgpKTsKLSAgICByZXR1cm4gbV9t
b2RlbCA/IG1fbW9kZWwtPmlzVmlzaWJsZSgpIDogZmFsc2U7CisgICAgcmV0dXJuIG1fZnVsbHNj
cmVlbk1vZGVsID8gbV9mdWxsc2NyZWVuTW9kZWwtPmlzVmlzaWJsZSgpIDogZmFsc2U7Cit9CisK
K2Jvb2wgV2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlckNvbnRleHQ6Omhhc1ZpZGVvKCkgY29u
c3QKK3sKKyAgICBBU1NFUlQoaXNVSVRocmVhZCgpKTsKKyAgICByZXR1cm4gbV9mdWxsc2NyZWVu
TW9kZWwgPyBtX2Z1bGxzY3JlZW5Nb2RlbC0+aGFzVmlkZW8oKSA6IGZhbHNlOworfQorCitGbG9h
dFNpemUgV2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlckNvbnRleHQ6OnZpZGVvRGltZW5zaW9u
cygpIGNvbnN0Cit7CisgICAgQVNTRVJUKGlzVUlUaHJlYWQoKSk7CisgICAgcmV0dXJuIG1fZnVs
bHNjcmVlbk1vZGVsID8gbV9mdWxsc2NyZWVuTW9kZWwtPnZpZGVvRGltZW5zaW9ucygpIDogRmxv
YXRTaXplKCk7Cit9CisKKyNwcmFnbWEgbWFyayAtIFdlYlBsYXliYWNrU2Vzc2lvbk1vZGVsCisK
K3ZvaWQgV2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlckNvbnRleHQ6OmFkZENsaWVudChXZWJQ
bGF5YmFja1Nlc3Npb25Nb2RlbENsaWVudCYgY2xpZW50KQoreworICAgIEFTU0VSVCghbV9wbGF5
YmFja0NsaWVudHMuY29udGFpbnMoJmNsaWVudCkpOworICAgIG1fcGxheWJhY2tDbGllbnRzLmFk
ZCgmY2xpZW50KTsKIH0KIAotI3ByYWdtYSBtYXJrIC0gV2ViUGxheWJhY2tTZXNzaW9uTW9kZWxD
b250ZXh0Cit2b2lkIFdlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJDb250ZXh0OjpyZW1vdmVD
bGllbnQoV2ViUGxheWJhY2tTZXNzaW9uTW9kZWxDbGllbnQmIGNsaWVudCkKK3sKKyAgICBBU1NF
UlQobV9wbGF5YmFja0NsaWVudHMuY29udGFpbnMoJmNsaWVudCkpOworICAgIG1fcGxheWJhY2tD
bGllbnRzLnJlbW92ZSgmY2xpZW50KTsKK30KIAogdm9pZCBXZWJWaWRlb0Z1bGxzY3JlZW5Db250
cm9sbGVyQ29udGV4dDo6cGxheSgpCiB7CiAgICAgQVNTRVJUKGlzVUlUaHJlYWQoKSk7CiAgICAg
UmVmUHRyPFdlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJDb250ZXh0PiBwcm90ZWN0ZWRUaGlz
KHRoaXMpOwogICAgIFdlYlRocmVhZFJ1bihbcHJvdGVjdGVkVGhpcywgdGhpc10gewotICAgICAg
ICBpZiAobV9tb2RlbCkKLSAgICAgICAgICAgIG1fbW9kZWwtPnBsYXliYWNrU2Vzc2lvbk1vZGVs
KCkucGxheSgpOworICAgICAgICBpZiAobV9wbGF5YmFja01vZGVsKQorICAgICAgICAgICAgbV9w
bGF5YmFja01vZGVsLT5wbGF5KCk7CiAgICAgfSk7CiB9CiAKQEAgLTUyOSw4ICs1NDIsOCBAQCB2
b2lkIFdlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJDb250ZXh0OjpwYXVzZSgpCiAgICAgQVNT
RVJUKGlzVUlUaHJlYWQoKSk7CiAgICAgUmVmUHRyPFdlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xs
ZXJDb250ZXh0PiBwcm90ZWN0ZWRUaGlzKHRoaXMpOwogICAgIFdlYlRocmVhZFJ1bihbcHJvdGVj
dGVkVGhpcywgdGhpc10gewotICAgICAgICBpZiAobV9tb2RlbCkKLSAgICAgICAgICAgIG1fbW9k
ZWwtPnBsYXliYWNrU2Vzc2lvbk1vZGVsKCkucGF1c2UoKTsKKyAgICAgICAgaWYgKG1fcGxheWJh
Y2tNb2RlbCkKKyAgICAgICAgICAgIG1fcGxheWJhY2tNb2RlbC0+cGF1c2UoKTsKICAgICB9KTsK
IH0KIApAQCAtNTM5LDggKzU1Miw4IEBAIHZvaWQgV2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxl
ckNvbnRleHQ6OnRvZ2dsZVBsYXlTdGF0ZSgpCiAgICAgQVNTRVJUKGlzVUlUaHJlYWQoKSk7CiAg
ICAgUmVmUHRyPFdlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJDb250ZXh0PiBwcm90ZWN0ZWRU
aGlzKHRoaXMpOwogICAgIFdlYlRocmVhZFJ1bihbcHJvdGVjdGVkVGhpcywgdGhpc10gewotICAg
ICAgICBpZiAobV9tb2RlbCkKLSAgICAgICAgICAgIG1fbW9kZWwtPnBsYXliYWNrU2Vzc2lvbk1v
ZGVsKCkudG9nZ2xlUGxheVN0YXRlKCk7CisgICAgICAgIGlmIChtX3BsYXliYWNrTW9kZWwpCisg
ICAgICAgICAgICBtX3BsYXliYWNrTW9kZWwtPnRvZ2dsZVBsYXlTdGF0ZSgpOwogICAgIH0pOwog
fQogCkBAIC01NDksOCArNTYyLDggQEAgdm9pZCBXZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVy
Q29udGV4dDo6YmVnaW5TY3J1YmJpbmcoKQogICAgIEFTU0VSVChpc1VJVGhyZWFkKCkpOwogICAg
IFJlZlB0cjxXZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyQ29udGV4dD4gcHJvdGVjdGVkVGhp
cyh0aGlzKTsKICAgICBXZWJUaHJlYWRSdW4oW3Byb3RlY3RlZFRoaXMsIHRoaXNdIHsKLSAgICAg
ICAgaWYgKG1fbW9kZWwpCi0gICAgICAgICAgICBtX21vZGVsLT5wbGF5YmFja1Nlc3Npb25Nb2Rl
bCgpLmJlZ2luU2NydWJiaW5nKCk7CisgICAgICAgIGlmIChtX3BsYXliYWNrTW9kZWwpCisgICAg
ICAgICAgICBtX3BsYXliYWNrTW9kZWwtPmJlZ2luU2NydWJiaW5nKCk7CiAgICAgfSk7CiB9CiAK
QEAgLTU1OSw4ICs1NzIsOCBAQCB2b2lkIFdlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJDb250
ZXh0OjplbmRTY3J1YmJpbmcoKQogICAgIEFTU0VSVChpc1VJVGhyZWFkKCkpOwogICAgIFJlZlB0
cjxXZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyQ29udGV4dD4gcHJvdGVjdGVkVGhpcyh0aGlz
KTsKICAgICBXZWJUaHJlYWRSdW4oW3Byb3RlY3RlZFRoaXMsIHRoaXNdIHsKLSAgICAgICAgaWYg
KG1fbW9kZWwpCi0gICAgICAgICAgICBtX21vZGVsLT5wbGF5YmFja1Nlc3Npb25Nb2RlbCgpLmVu
ZFNjcnViYmluZygpOworICAgICAgICBpZiAobV9wbGF5YmFja01vZGVsKQorICAgICAgICAgICAg
bV9wbGF5YmFja01vZGVsLT5lbmRTY3J1YmJpbmcoKTsKICAgICB9KTsKIH0KIApAQCAtNTY5LDgg
KzU4Miw4IEBAIHZvaWQgV2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlckNvbnRleHQ6OnNlZWtU
b1RpbWUoZG91YmxlIHRpbWUpCiAgICAgQVNTRVJUKGlzVUlUaHJlYWQoKSk7CiAgICAgUmVmUHRy
PFdlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJDb250ZXh0PiBwcm90ZWN0ZWRUaGlzKHRoaXMp
OwogICAgIFdlYlRocmVhZFJ1bihbcHJvdGVjdGVkVGhpcywgdGhpcywgdGltZV0gewotICAgICAg
ICBpZiAobV9tb2RlbCkKLSAgICAgICAgICAgIG1fbW9kZWwtPnBsYXliYWNrU2Vzc2lvbk1vZGVs
KCkuc2Vla1RvVGltZSh0aW1lKTsKKyAgICAgICAgaWYgKG1fcGxheWJhY2tNb2RlbCkKKyAgICAg
ICAgICAgIG1fcGxheWJhY2tNb2RlbC0+c2Vla1RvVGltZSh0aW1lKTsKICAgICB9KTsKIH0KIApA
QCAtNTc5LDggKzU5Miw4IEBAIHZvaWQgV2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlckNvbnRl
eHQ6OmZhc3RTZWVrKGRvdWJsZSB0aW1lKQogICAgIEFTU0VSVChpc1VJVGhyZWFkKCkpOwogICAg
IFJlZlB0cjxXZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyQ29udGV4dD4gcHJvdGVjdGVkVGhp
cyh0aGlzKTsKICAgICBXZWJUaHJlYWRSdW4oW3Byb3RlY3RlZFRoaXMsIHRoaXMsIHRpbWVdIHsK
LSAgICAgICAgaWYgKG1fbW9kZWwpCi0gICAgICAgICAgICBtX21vZGVsLT5wbGF5YmFja1Nlc3Np
b25Nb2RlbCgpLmZhc3RTZWVrKHRpbWUpOworICAgICAgICBpZiAobV9wbGF5YmFja01vZGVsKQor
ICAgICAgICAgICAgbV9wbGF5YmFja01vZGVsLT5mYXN0U2Vlayh0aW1lKTsKICAgICB9KTsKIH0K
IApAQCAtNTg5LDggKzYwMiw4IEBAIHZvaWQgV2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlckNv
bnRleHQ6OmJlZ2luU2Nhbm5pbmdGb3J3YXJkKCkKICAgICBBU1NFUlQoaXNVSVRocmVhZCgpKTsK
ICAgICBSZWZQdHI8V2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlckNvbnRleHQ+IHByb3RlY3Rl
ZFRoaXModGhpcyk7CiAgICAgV2ViVGhyZWFkUnVuKFtwcm90ZWN0ZWRUaGlzLCB0aGlzXSB7Ci0g
ICAgICAgIGlmIChtX21vZGVsKQotICAgICAgICAgICAgbV9tb2RlbC0+cGxheWJhY2tTZXNzaW9u
TW9kZWwoKS5iZWdpblNjYW5uaW5nRm9yd2FyZCgpOworICAgICAgICBpZiAobV9wbGF5YmFja01v
ZGVsKQorICAgICAgICAgICAgbV9wbGF5YmFja01vZGVsLT5iZWdpblNjYW5uaW5nRm9yd2FyZCgp
OwogICAgIH0pOwogfQogCkBAIC01OTksOCArNjEyLDggQEAgdm9pZCBXZWJWaWRlb0Z1bGxzY3Jl
ZW5Db250cm9sbGVyQ29udGV4dDo6YmVnaW5TY2FubmluZ0JhY2t3YXJkKCkKICAgICBBU1NFUlQo
aXNVSVRocmVhZCgpKTsKICAgICBSZWZQdHI8V2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlckNv
bnRleHQ+IHByb3RlY3RlZFRoaXModGhpcyk7CiAgICAgV2ViVGhyZWFkUnVuKFtwcm90ZWN0ZWRU
aGlzLCB0aGlzXSB7Ci0gICAgICAgIGlmIChtX21vZGVsKQotICAgICAgICAgICAgbV9tb2RlbC0+
cGxheWJhY2tTZXNzaW9uTW9kZWwoKS5iZWdpblNjYW5uaW5nQmFja3dhcmQoKTsKKyAgICAgICAg
aWYgKG1fcGxheWJhY2tNb2RlbCkKKyAgICAgICAgICAgIG1fcGxheWJhY2tNb2RlbC0+YmVnaW5T
Y2FubmluZ0JhY2t3YXJkKCk7CiAgICAgfSk7CiB9CiAKQEAgLTYwOSw4ICs2MjIsOCBAQCB2b2lk
IFdlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJDb250ZXh0OjplbmRTY2FubmluZygpCiAgICAg
QVNTRVJUKGlzVUlUaHJlYWQoKSk7CiAgICAgUmVmUHRyPFdlYlZpZGVvRnVsbHNjcmVlbkNvbnRy
b2xsZXJDb250ZXh0PiBwcm90ZWN0ZWRUaGlzKHRoaXMpOwogICAgIFdlYlRocmVhZFJ1bihbcHJv
dGVjdGVkVGhpcywgdGhpc10gewotICAgICAgICBpZiAobV9tb2RlbCkKLSAgICAgICAgICAgIG1f
bW9kZWwtPnBsYXliYWNrU2Vzc2lvbk1vZGVsKCkuZW5kU2Nhbm5pbmcoKTsKKyAgICAgICAgaWYg
KG1fcGxheWJhY2tNb2RlbCkKKyAgICAgICAgICAgIG1fcGxheWJhY2tNb2RlbC0+ZW5kU2Nhbm5p
bmcoKTsKICAgICB9KTsKIH0KIApAQCAtNjE5LDggKzYzMiw4IEBAIHZvaWQgV2ViVmlkZW9GdWxs
c2NyZWVuQ29udHJvbGxlckNvbnRleHQ6OnNlbGVjdEF1ZGlvTWVkaWFPcHRpb24odWludDY0X3Qg
aW5kZXgpCiAgICAgQVNTRVJUKGlzVUlUaHJlYWQoKSk7CiAgICAgUmVmUHRyPFdlYlZpZGVvRnVs
bHNjcmVlbkNvbnRyb2xsZXJDb250ZXh0PiBwcm90ZWN0ZWRUaGlzKHRoaXMpOwogICAgIFdlYlRo
cmVhZFJ1bihbcHJvdGVjdGVkVGhpcywgdGhpcywgaW5kZXhdIHsKLSAgICAgICAgaWYgKG1fbW9k
ZWwpCi0gICAgICAgICAgICBtX21vZGVsLT5wbGF5YmFja1Nlc3Npb25Nb2RlbCgpLnNlbGVjdEF1
ZGlvTWVkaWFPcHRpb24oaW5kZXgpOworICAgICAgICBpZiAobV9wbGF5YmFja01vZGVsKQorICAg
ICAgICAgICAgbV9wbGF5YmFja01vZGVsLT5zZWxlY3RBdWRpb01lZGlhT3B0aW9uKGluZGV4KTsK
ICAgICB9KTsKIH0KIApAQCAtNjI5LDE0NCArNjQyLDE1NCBAQCB2b2lkIFdlYlZpZGVvRnVsbHNj
cmVlbkNvbnRyb2xsZXJDb250ZXh0OjpzZWxlY3RMZWdpYmxlTWVkaWFPcHRpb24odWludDY0X3Qg
aW5kZQogICAgIEFTU0VSVChpc1VJVGhyZWFkKCkpOwogICAgIFJlZlB0cjxXZWJWaWRlb0Z1bGxz
Y3JlZW5Db250cm9sbGVyQ29udGV4dD4gcHJvdGVjdGVkVGhpcyh0aGlzKTsKICAgICBXZWJUaHJl
YWRSdW4oW3Byb3RlY3RlZFRoaXMsIHRoaXMsIGluZGV4XSB7Ci0gICAgICAgIGlmIChtX21vZGVs
KQotICAgICAgICAgICAgbV9tb2RlbC0+cGxheWJhY2tTZXNzaW9uTW9kZWwoKS5zZWxlY3RMZWdp
YmxlTWVkaWFPcHRpb24oaW5kZXgpOworICAgICAgICBpZiAobV9wbGF5YmFja01vZGVsKQorICAg
ICAgICAgICAgbV9wbGF5YmFja01vZGVsLT5zZWxlY3RMZWdpYmxlTWVkaWFPcHRpb24oaW5kZXgp
OwogICAgIH0pOwogfQogCi0jcHJhZ21hIG1hcmsgT3RoZXIKLQotdm9pZCBXZWJWaWRlb0Z1bGxz
Y3JlZW5Db250cm9sbGVyQ29udGV4dDo6c2V0VXBGdWxsc2NyZWVuKEhUTUxWaWRlb0VsZW1lbnQm
IHZpZGVvRWxlbWVudCwgVUlWaWV3ICp2aWV3LCBIVE1MTWVkaWFFbGVtZW50RW51bXM6OlZpZGVv
RnVsbHNjcmVlbk1vZGUgbW9kZSkKK2RvdWJsZSBXZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVy
Q29udGV4dDo6ZHVyYXRpb24oKSBjb25zdAogewotICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7
Ci0gICAgUmV0YWluUHRyPFVJVmlldz4gdmlld1JlZiA9IHZpZXc7Ci0gICAgbV92aWRlb0VsZW1l
bnQgPSAmdmlkZW9FbGVtZW50OwotCi0gICAgUmVmUHRyPFdlYlZpZGVvRnVsbHNjcmVlbkNvbnRy
b2xsZXJDb250ZXh0PiBwcm90ZWN0ZWRUaGlzKHRoaXMpOwotICAgIGRpc3BhdGNoX2FzeW5jKGRp
c3BhdGNoX2dldF9tYWluX3F1ZXVlKCksIFtwcm90ZWN0ZWRUaGlzLCB0aGlzLCB2aWV3UmVmLCBt
b2RlXSB7Ci0gICAgICAgIEFTU0VSVChpc1VJVGhyZWFkKCkpOwotCi0gICAgICAgIFJlZjxXZWJQ
bGF5YmFja1Nlc3Npb25JbnRlcmZhY2VBVktpdD4gc2Vzc2lvbkludGVyZmFjZSA9IFdlYlBsYXli
YWNrU2Vzc2lvbkludGVyZmFjZUFWS2l0OjpjcmVhdGUoKTsKLSAgICAgICAgbV9pbnRlcmZhY2Ug
PSBXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdDo6Y3JlYXRlKHNlc3Npb25JbnRlcmZh
Y2UuZ2V0KCkpOwotCi0gICAgICAgIG1fc2Vzc2lvbk1vZGVsID0gV2ViVmlkZW9GdWxsc2NyZWVu
U2Vzc2lvbk1vZGVsOjpjcmVhdGUoKnRoaXMpOwotICAgICAgICBzZXNzaW9uSW50ZXJmYWNlLT5z
ZXRXZWJQbGF5YmFja1Nlc3Npb25Nb2RlbChtX3Nlc3Npb25Nb2RlbC5nZXQoKSk7Ci0KLSAgICAg
ICAgbV9pbnRlcmZhY2UtPnNldFdlYlZpZGVvRnVsbHNjcmVlbk1vZGVsKHRoaXMpOwotICAgICAg
ICBtX2ludGVyZmFjZS0+c2V0V2ViVmlkZW9GdWxsc2NyZWVuQ2hhbmdlT2JzZXJ2ZXIodGhpcyk7
CisgICAgQVNTRVJUKGlzVUlUaHJlYWQoKSk7CisgICAgcmV0dXJuIG1fcGxheWJhY2tNb2RlbCA/
IG1fcGxheWJhY2tNb2RlbC0+ZHVyYXRpb24oKSA6IDA7Cit9CiAKLSAgICAgICAgbV92aWRlb0Z1
bGxzY3JlZW5WaWV3ID0gYWRvcHROUyhbW2dldFVJVmlld0NsYXNzKCkgYWxsb2NdIGluaXRdKTsK
LSAgICAgICAgCi0gICAgICAgIFJlZlB0cjxXZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyQ29u
dGV4dD4gcHJvdGVjdGVkVGhpcyh0aGlzKTsKLSAgICAgICAgV2ViVGhyZWFkUnVuKFtwcm90ZWN0
ZWRUaGlzLCB0aGlzLCB2aWV3UmVmLCBtb2RlXSB7Ci0gICAgICAgICAgICBtX21vZGVsID0gV2Vi
VmlkZW9GdWxsc2NyZWVuTW9kZWxWaWRlb0VsZW1lbnQ6OmNyZWF0ZShXZWJQbGF5YmFja1Nlc3Np
b25Nb2RlbE1lZGlhRWxlbWVudDo6Y3JlYXRlKCkuZ2V0KCkpOwotICAgICAgICAgICAgbV9tb2Rl
bC0+c2V0V2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlKHRoaXMpOwotICAgICAgICAgICAgbV9t
b2RlbC0+cGxheWJhY2tTZXNzaW9uTW9kZWwoKS5zZXRNZWRpYUVsZW1lbnQobV92aWRlb0VsZW1l
bnQuZ2V0KCkpOwotICAgICAgICAgICAgbV9tb2RlbC0+c2V0VmlkZW9FbGVtZW50KG1fdmlkZW9F
bGVtZW50LmdldCgpKTsKLQotICAgICAgICAgICAgSW50UmVjdCB2aWRlb0VsZW1lbnRDbGllbnRS
ZWN0ID0gZWxlbWVudFJlY3RJbldpbmRvdyhtX3ZpZGVvRWxlbWVudC5nZXQoKSk7Ci0gICAgICAg
ICAgICBGbG9hdFJlY3QgdmlkZW9MYXllckZyYW1lID0gRmxvYXRSZWN0KEZsb2F0UG9pbnQoKSwg
dmlkZW9FbGVtZW50Q2xpZW50UmVjdC5zaXplKCkpOwotICAgICAgICAgICAgbV9tb2RlbC0+c2V0
VmlkZW9MYXllckZyYW1lKHZpZGVvTGF5ZXJGcmFtZSk7Ci0gICAgICAgICAgICAKLSAgICAgICAg
ICAgIGJvb2wgYWxsb3dzUGljdHVyZUluUGljdHVyZSA9IG1fdmlkZW9FbGVtZW50LT5tZWRpYVNl
c3Npb24oKS5hbGxvd3NQaWN0dXJlSW5QaWN0dXJlKCptX3ZpZGVvRWxlbWVudC5nZXQoKSk7Ci0g
ICAgICAgICAgICBkaXNwYXRjaF9hc3luYyhkaXNwYXRjaF9nZXRfbWFpbl9xdWV1ZSgpLCBbcHJv
dGVjdGVkVGhpcywgdGhpcywgdmlkZW9FbGVtZW50Q2xpZW50UmVjdCwgdmlld1JlZiwgbW9kZSwg
YWxsb3dzUGljdHVyZUluUGljdHVyZV0gewotICAgICAgICAgICAgICAgIG1faW50ZXJmYWNlLT5z
ZXR1cEZ1bGxzY3JlZW4oKm1fdmlkZW9GdWxsc2NyZWVuVmlldy5nZXQoKSwgdmlkZW9FbGVtZW50
Q2xpZW50UmVjdCwgdmlld1JlZi5nZXQoKSwgbW9kZSwgYWxsb3dzUGljdHVyZUluUGljdHVyZSk7
Ci0gICAgICAgICAgICB9KTsKLSAgICAgICAgfSk7Ci0gICAgfSk7Citkb3VibGUgV2ViVmlkZW9G
dWxsc2NyZWVuQ29udHJvbGxlckNvbnRleHQ6OmN1cnJlbnRUaW1lKCkgY29uc3QKK3sKKyAgICBB
U1NFUlQoaXNVSVRocmVhZCgpKTsKKyAgICByZXR1cm4gbV9wbGF5YmFja01vZGVsID8gbV9wbGF5
YmFja01vZGVsLT5jdXJyZW50VGltZSgpIDogMDsKIH0KIAotdm9pZCBXZWJWaWRlb0Z1bGxzY3Jl
ZW5Db250cm9sbGVyQ29udGV4dDo6ZXhpdEZ1bGxzY3JlZW4oKQorZG91YmxlIFdlYlZpZGVvRnVs
bHNjcmVlbkNvbnRyb2xsZXJDb250ZXh0OjpidWZmZXJlZFRpbWUoKSBjb25zdAogewotICAgIEFT
U0VSVChXZWJUaHJlYWRJc0N1cnJlbnQoKSB8fCBpc01haW5UaHJlYWQoKSk7Ci0gICAgSW50UmVj
dCBjbGllbnRSZWN0ID0gZWxlbWVudFJlY3RJbldpbmRvdyhtX3ZpZGVvRWxlbWVudC5nZXQoKSk7
Ci0gICAgUmVmUHRyPFdlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJDb250ZXh0PiBwcm90ZWN0
ZWRUaGlzKHRoaXMpOwotICAgIGRpc3BhdGNoX2FzeW5jKGRpc3BhdGNoX2dldF9tYWluX3F1ZXVl
KCksIFtwcm90ZWN0ZWRUaGlzLCB0aGlzLCBjbGllbnRSZWN0XSB7Ci0gICAgICAgIEFTU0VSVChp
c1VJVGhyZWFkKCkpOwotICAgICAgICBtX2ludGVyZmFjZS0+ZXhpdEZ1bGxzY3JlZW4oY2xpZW50
UmVjdCk7Ci0gICAgfSk7CisgICAgQVNTRVJUKGlzVUlUaHJlYWQoKSk7CisgICAgcmV0dXJuIG1f
cGxheWJhY2tNb2RlbCA/IG1fcGxheWJhY2tNb2RlbC0+YnVmZmVyZWRUaW1lKCkgOiAwOwogfQog
Ci12b2lkIFdlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJDb250ZXh0OjpyZXF1ZXN0SGlkZUFu
ZEV4aXRGdWxsc2NyZWVuKCkKK2Jvb2wgV2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlckNvbnRl
eHQ6OmlzUGxheWluZygpIGNvbnN0CiB7CiAgICAgQVNTRVJUKGlzVUlUaHJlYWQoKSk7Ci0gICAg
bV9pbnRlcmZhY2UtPnJlcXVlc3RIaWRlQW5kRXhpdEZ1bGxzY3JlZW4oKTsKKyAgICByZXR1cm4g
bV9wbGF5YmFja01vZGVsID8gbV9wbGF5YmFja01vZGVsLT5pc1BsYXlpbmcoKSA6IGZhbHNlOwog
fQogCi0jcHJhZ21hIG1hcmsgV2ViUGxheWJhY2tTZXNzaW9uTW9kZWwKK2Zsb2F0IFdlYlZpZGVv
RnVsbHNjcmVlbkNvbnRyb2xsZXJDb250ZXh0OjpwbGF5YmFja1JhdGUoKSBjb25zdAoreworICAg
IEFTU0VSVChpc1VJVGhyZWFkKCkpOworICAgIHJldHVybiBtX3BsYXliYWNrTW9kZWwgPyBtX3Bs
YXliYWNrTW9kZWwtPnBsYXliYWNrUmF0ZSgpIDogMDsKK30KIAotdm9pZCBXZWJWaWRlb0Z1bGxz
Y3JlZW5TZXNzaW9uTW9kZWw6OnBsYXkoKQorUmVmPFRpbWVSYW5nZXM+IFdlYlZpZGVvRnVsbHNj
cmVlbkNvbnRyb2xsZXJDb250ZXh0OjpzZWVrYWJsZVJhbmdlcygpIGNvbnN0CiB7Ci0gICAgaWYg
KG1fY29udHJvbGxlcikKLSAgICAgICAgbV9jb250cm9sbGVyLT5wbGF5KCk7CisgICAgQVNTRVJU
KGlzVUlUaHJlYWQoKSk7CisgICAgcmV0dXJuIG1fcGxheWJhY2tNb2RlbCA/IG1fcGxheWJhY2tN
b2RlbC0+c2Vla2FibGVSYW5nZXMoKSA6IFRpbWVSYW5nZXM6OmNyZWF0ZSgpOwogfQogCi12b2lk
IFdlYlZpZGVvRnVsbHNjcmVlblNlc3Npb25Nb2RlbDo6cGF1c2UoKQorYm9vbCBXZWJWaWRlb0Z1
bGxzY3JlZW5Db250cm9sbGVyQ29udGV4dDo6Y2FuUGxheUZhc3RSZXZlcnNlKCkgY29uc3QKIHsK
LSAgICBpZiAobV9jb250cm9sbGVyKQotICAgICAgICBtX2NvbnRyb2xsZXItPnBhdXNlKCk7Cisg
ICAgQVNTRVJUKGlzVUlUaHJlYWQoKSk7CisgICAgcmV0dXJuIG1fcGxheWJhY2tNb2RlbCA/IG1f
cGxheWJhY2tNb2RlbC0+Y2FuUGxheUZhc3RSZXZlcnNlKCkgOiBmYWxzZTsKIH0KIAotdm9pZCBX
ZWJWaWRlb0Z1bGxzY3JlZW5TZXNzaW9uTW9kZWw6OnRvZ2dsZVBsYXlTdGF0ZSgpCitWZWN0b3I8
U3RyaW5nPiBXZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyQ29udGV4dDo6YXVkaW9NZWRpYVNl
bGVjdGlvbk9wdGlvbnMoKSBjb25zdAogewotICAgIGlmIChtX2NvbnRyb2xsZXIpCi0gICAgICAg
IG1fY29udHJvbGxlci0+dG9nZ2xlUGxheVN0YXRlKCk7CisgICAgQVNTRVJUKGlzVUlUaHJlYWQo
KSk7CisgICAgcmV0dXJuIG1fcGxheWJhY2tNb2RlbCA/IG1fcGxheWJhY2tNb2RlbC0+YXVkaW9N
ZWRpYVNlbGVjdGlvbk9wdGlvbnMoKSA6IFZlY3RvcjxTdHJpbmc+KCk7CiB9CiAKLXZvaWQgV2Vi
VmlkZW9GdWxsc2NyZWVuU2Vzc2lvbk1vZGVsOjpiZWdpblNjcnViYmluZygpCit1aW50NjRfdCBX
ZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyQ29udGV4dDo6YXVkaW9NZWRpYVNlbGVjdGVkSW5k
ZXgoKSBjb25zdAogewotICAgIGlmIChtX2NvbnRyb2xsZXIpCi0gICAgICAgIG1fY29udHJvbGxl
ci0+YmVnaW5TY3J1YmJpbmcoKTsKKyAgICBBU1NFUlQoaXNVSVRocmVhZCgpKTsKKyAgICByZXR1
cm4gbV9wbGF5YmFja01vZGVsID8gbV9wbGF5YmFja01vZGVsLT5hdWRpb01lZGlhU2VsZWN0ZWRJ
bmRleCgpIDogLTE7CiB9CiAKLXZvaWQgV2ViVmlkZW9GdWxsc2NyZWVuU2Vzc2lvbk1vZGVsOjpl
bmRTY3J1YmJpbmcoKQorVmVjdG9yPFN0cmluZz4gV2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxl
ckNvbnRleHQ6OmxlZ2libGVNZWRpYVNlbGVjdGlvbk9wdGlvbnMoKSBjb25zdAogewotICAgIGlm
IChtX2NvbnRyb2xsZXIpCi0gICAgICAgIG1fY29udHJvbGxlci0+ZW5kU2NydWJiaW5nKCk7Cisg
ICAgQVNTRVJUKGlzVUlUaHJlYWQoKSk7CisgICAgcmV0dXJuIG1fcGxheWJhY2tNb2RlbCA/IG1f
cGxheWJhY2tNb2RlbC0+bGVnaWJsZU1lZGlhU2VsZWN0aW9uT3B0aW9ucygpIDogVmVjdG9yPFN0
cmluZz4oKTsKIH0KIAotdm9pZCBXZWJWaWRlb0Z1bGxzY3JlZW5TZXNzaW9uTW9kZWw6OnNlZWtU
b1RpbWUoZG91YmxlIHRpbWUpCit1aW50NjRfdCBXZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVy
Q29udGV4dDo6bGVnaWJsZU1lZGlhU2VsZWN0ZWRJbmRleCgpIGNvbnN0CiB7Ci0gICAgaWYgKG1f
Y29udHJvbGxlcikKLSAgICAgICAgbV9jb250cm9sbGVyLT5zZWVrVG9UaW1lKHRpbWUpOworICAg
IEFTU0VSVChpc1VJVGhyZWFkKCkpOworICAgIHJldHVybiBtX3BsYXliYWNrTW9kZWwgPyBtX3Bs
YXliYWNrTW9kZWwtPmxlZ2libGVNZWRpYVNlbGVjdGVkSW5kZXgoKSA6IC0xOwogfQogCi12b2lk
IFdlYlZpZGVvRnVsbHNjcmVlblNlc3Npb25Nb2RlbDo6ZmFzdFNlZWsoZG91YmxlIHRpbWUpCiti
b29sIFdlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJDb250ZXh0OjpleHRlcm5hbFBsYXliYWNr
RW5hYmxlZCgpIGNvbnN0CiB7Ci0gICAgaWYgKG1fY29udHJvbGxlcikKLSAgICAgICAgbV9jb250
cm9sbGVyLT5mYXN0U2Vlayh0aW1lKTsKKyAgICBBU1NFUlQoaXNVSVRocmVhZCgpKTsKKyAgICBy
ZXR1cm4gbV9wbGF5YmFja01vZGVsID8gbV9wbGF5YmFja01vZGVsLT5leHRlcm5hbFBsYXliYWNr
RW5hYmxlZCgpIDogZmFsc2U7CiB9CiAKLXZvaWQgV2ViVmlkZW9GdWxsc2NyZWVuU2Vzc2lvbk1v
ZGVsOjpiZWdpblNjYW5uaW5nRm9yd2FyZCgpCitXZWJQbGF5YmFja1Nlc3Npb25Nb2RlbDo6RXh0
ZXJuYWxQbGF5YmFja1RhcmdldFR5cGUgV2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlckNvbnRl
eHQ6OmV4dGVybmFsUGxheWJhY2tUYXJnZXRUeXBlKCkgY29uc3QKIHsKLSAgICBpZiAobV9jb250
cm9sbGVyKQotICAgICAgICBtX2NvbnRyb2xsZXItPmJlZ2luU2Nhbm5pbmdGb3J3YXJkKCk7Cisg
ICAgQVNTRVJUKGlzVUlUaHJlYWQoKSk7CisgICAgcmV0dXJuIG1fcGxheWJhY2tNb2RlbCA/IG1f
cGxheWJhY2tNb2RlbC0+ZXh0ZXJuYWxQbGF5YmFja1RhcmdldFR5cGUoKSA6IFRhcmdldFR5cGVO
b25lOwogfQogCi12b2lkIFdlYlZpZGVvRnVsbHNjcmVlblNlc3Npb25Nb2RlbDo6YmVnaW5TY2Fu
bmluZ0JhY2t3YXJkKCkKK1N0cmluZyBXZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyQ29udGV4
dDo6ZXh0ZXJuYWxQbGF5YmFja0xvY2FsaXplZERldmljZU5hbWUoKSBjb25zdAogewotICAgIGlm
IChtX2NvbnRyb2xsZXIpCi0gICAgICAgIG1fY29udHJvbGxlci0+YmVnaW5TY2FubmluZ0JhY2t3
YXJkKCk7CisgICAgQVNTRVJUKGlzVUlUaHJlYWQoKSk7CisgICAgcmV0dXJuIG1fcGxheWJhY2tN
b2RlbCA/IG1fcGxheWJhY2tNb2RlbC0+ZXh0ZXJuYWxQbGF5YmFja0xvY2FsaXplZERldmljZU5h
bWUoKSA6IFN0cmluZygpOwogfQogCi12b2lkIFdlYlZpZGVvRnVsbHNjcmVlblNlc3Npb25Nb2Rl
bDo6ZW5kU2Nhbm5pbmcoKQorYm9vbCBXZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyQ29udGV4
dDo6d2lyZWxlc3NWaWRlb1BsYXliYWNrRGlzYWJsZWQoKSBjb25zdAogewotICAgIGlmIChtX2Nv
bnRyb2xsZXIpCi0gICAgICAgIG1fY29udHJvbGxlci0+ZW5kU2Nhbm5pbmcoKTsKKyAgICBBU1NF
UlQoaXNVSVRocmVhZCgpKTsKKyAgICByZXR1cm4gbV9wbGF5YmFja01vZGVsID8gbV9wbGF5YmFj
a01vZGVsLT53aXJlbGVzc1ZpZGVvUGxheWJhY2tEaXNhYmxlZCgpIDogdHJ1ZTsKIH0KIAotdm9p
ZCBXZWJWaWRlb0Z1bGxzY3JlZW5TZXNzaW9uTW9kZWw6OnNlbGVjdEF1ZGlvTWVkaWFPcHRpb24o
dWludDY0X3Qgb3B0aW9uSWQpCisjcHJhZ21hIG1hcmsgT3RoZXIKKwordm9pZCBXZWJWaWRlb0Z1
bGxzY3JlZW5Db250cm9sbGVyQ29udGV4dDo6c2V0VXBGdWxsc2NyZWVuKEhUTUxWaWRlb0VsZW1l
bnQmIHZpZGVvRWxlbWVudCwgVUlWaWV3ICp2aWV3LCBIVE1MTWVkaWFFbGVtZW50RW51bXM6OlZp
ZGVvRnVsbHNjcmVlbk1vZGUgbW9kZSkKIHsKLSAgICBpZiAobV9jb250cm9sbGVyKQotICAgICAg
ICBtX2NvbnRyb2xsZXItPnNlbGVjdEF1ZGlvTWVkaWFPcHRpb24ob3B0aW9uSWQpOworICAgIEFT
U0VSVChpc01haW5UaHJlYWQoKSk7CisgICAgUmV0YWluUHRyPFVJVmlldz4gdmlld1JlZiA9IHZp
ZXc7CisgICAgbV92aWRlb0VsZW1lbnQgPSAmdmlkZW9FbGVtZW50OworICAgIG1fcGxheWJhY2tN
b2RlbCA9IFdlYlBsYXliYWNrU2Vzc2lvbk1vZGVsTWVkaWFFbGVtZW50OjpjcmVhdGUoKTsKKyAg
ICBtX3BsYXliYWNrTW9kZWwtPmFkZENsaWVudCgqdGhpcyk7CisgICAgbV9wbGF5YmFja01vZGVs
LT5zZXRNZWRpYUVsZW1lbnQobV92aWRlb0VsZW1lbnQuZ2V0KCkpOworCisgICAgbV9mdWxsc2Ny
ZWVuTW9kZWwgPSBXZWJWaWRlb0Z1bGxzY3JlZW5Nb2RlbFZpZGVvRWxlbWVudDo6Y3JlYXRlKCk7
CisgICAgbV9mdWxsc2NyZWVuTW9kZWwtPmFkZENsaWVudCgqdGhpcyk7CisgICAgbV9mdWxsc2Ny
ZWVuTW9kZWwtPnNldFZpZGVvRWxlbWVudChtX3ZpZGVvRWxlbWVudC5nZXQoKSk7CisKKyAgICBi
b29sIGFsbG93c1BpY3R1cmVJblBpY3R1cmUgPSBtX3ZpZGVvRWxlbWVudC0+bWVkaWFTZXNzaW9u
KCkuYWxsb3dzUGljdHVyZUluUGljdHVyZSgqbV92aWRlb0VsZW1lbnQuZ2V0KCkpOworCisgICAg
SW50UmVjdCB2aWRlb0VsZW1lbnRDbGllbnRSZWN0ID0gZWxlbWVudFJlY3RJbldpbmRvdyhtX3Zp
ZGVvRWxlbWVudC5nZXQoKSk7CisgICAgRmxvYXRSZWN0IHZpZGVvTGF5ZXJGcmFtZSA9IEZsb2F0
UmVjdChGbG9hdFBvaW50KCksIHZpZGVvRWxlbWVudENsaWVudFJlY3Quc2l6ZSgpKTsKKyAgICBt
X2Z1bGxzY3JlZW5Nb2RlbC0+c2V0VmlkZW9MYXllckZyYW1lKHZpZGVvTGF5ZXJGcmFtZSk7CisK
KyAgICBSZWZQdHI8V2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlckNvbnRleHQ+IHByb3RlY3Rl
ZFRoaXModGhpcyk7CisgICAgZGlzcGF0Y2hfYXN5bmMoZGlzcGF0Y2hfZ2V0X21haW5fcXVldWUo
KSwgW3Byb3RlY3RlZFRoaXMsIHRoaXMsIHZpZGVvRWxlbWVudENsaWVudFJlY3QsIHZpZXdSZWYs
IG1vZGUsIGFsbG93c1BpY3R1cmVJblBpY3R1cmVdIHsKKyAgICAgICAgQVNTRVJUKGlzVUlUaHJl
YWQoKSk7CisKKyAgICAgICAgUmVmPFdlYlBsYXliYWNrU2Vzc2lvbkludGVyZmFjZUFWS2l0PiBz
ZXNzaW9uSW50ZXJmYWNlID0gV2ViUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlQVZLaXQ6OmNyZWF0
ZSgqdGhpcyk7CisgICAgICAgIG1faW50ZXJmYWNlID0gV2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJm
YWNlQVZLaXQ6OmNyZWF0ZShzZXNzaW9uSW50ZXJmYWNlLmdldCgpKTsKKyAgICAgICAgbV9pbnRl
cmZhY2UtPnNldFdlYlZpZGVvRnVsbHNjcmVlbkNoYW5nZU9ic2VydmVyKHRoaXMpOworICAgICAg
ICBtX2ludGVyZmFjZS0+c2V0V2ViVmlkZW9GdWxsc2NyZWVuTW9kZWwodGhpcyk7CisgICAgICAg
IG1faW50ZXJmYWNlLT5zZXRXZWJWaWRlb0Z1bGxzY3JlZW5DaGFuZ2VPYnNlcnZlcih0aGlzKTsK
KworICAgICAgICBtX3ZpZGVvRnVsbHNjcmVlblZpZXcgPSBhZG9wdE5TKFtbZ2V0VUlWaWV3Q2xh
c3MoKSBhbGxvY10gaW5pdF0pOworICAgICAgICAKKyAgICAgICAgbV9pbnRlcmZhY2UtPnNldHVw
RnVsbHNjcmVlbigqbV92aWRlb0Z1bGxzY3JlZW5WaWV3LmdldCgpLCB2aWRlb0VsZW1lbnRDbGll
bnRSZWN0LCB2aWV3UmVmLmdldCgpLCBtb2RlLCBhbGxvd3NQaWN0dXJlSW5QaWN0dXJlKTsKKyAg
ICB9KTsKIH0KIAotdm9pZCBXZWJWaWRlb0Z1bGxzY3JlZW5TZXNzaW9uTW9kZWw6OnNlbGVjdExl
Z2libGVNZWRpYU9wdGlvbih1aW50NjRfdCBvcHRpb25JZCkKK3ZvaWQgV2ViVmlkZW9GdWxsc2Ny
ZWVuQ29udHJvbGxlckNvbnRleHQ6OmV4aXRGdWxsc2NyZWVuKCkKIHsKLSAgICBpZiAobV9jb250
cm9sbGVyKQotICAgICAgICBtX2NvbnRyb2xsZXItPnNlbGVjdExlZ2libGVNZWRpYU9wdGlvbihv
cHRpb25JZCk7CisgICAgQVNTRVJUKFdlYlRocmVhZElzQ3VycmVudCgpIHx8IGlzTWFpblRocmVh
ZCgpKTsKKyAgICBJbnRSZWN0IGNsaWVudFJlY3QgPSBlbGVtZW50UmVjdEluV2luZG93KG1fdmlk
ZW9FbGVtZW50LmdldCgpKTsKKyAgICBSZWZQdHI8V2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxl
ckNvbnRleHQ+IHByb3RlY3RlZFRoaXModGhpcyk7CisgICAgZGlzcGF0Y2hfYXN5bmMoZGlzcGF0
Y2hfZ2V0X21haW5fcXVldWUoKSwgW3Byb3RlY3RlZFRoaXMsIHRoaXMsIGNsaWVudFJlY3RdIHsK
KyAgICAgICAgQVNTRVJUKGlzVUlUaHJlYWQoKSk7CisgICAgICAgIG1faW50ZXJmYWNlLT5leGl0
RnVsbHNjcmVlbihjbGllbnRSZWN0KTsKKyAgICB9KTsKIH0KIAordm9pZCBXZWJWaWRlb0Z1bGxz
Y3JlZW5Db250cm9sbGVyQ29udGV4dDo6cmVxdWVzdEhpZGVBbmRFeGl0RnVsbHNjcmVlbigpCit7
CisgICAgQVNTRVJUKGlzVUlUaHJlYWQoKSk7CisgICAgbV9pbnRlcmZhY2UtPnJlcXVlc3RIaWRl
QW5kRXhpdEZ1bGxzY3JlZW4oKTsKK30KIAogQGltcGxlbWVudGF0aW9uIFdlYlZpZGVvRnVsbHNj
cmVlbkNvbnRyb2xsZXIgewogICAgIFJlZlB0cjxXZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVy
Q29udGV4dD4gX2NvbnRleHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9p
b3MvV2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2lvcy9XZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdC5oCmluZGV4IDgxZGFj
NjFkNzVhNGYxZjY5Y2Y5ZGE4ZDIxZWM5NDUzYmZmNWE2ZDQuLjUwZGU5ZTA2YjA0Y2I2MmQ4M2Ni
MjY4ODFmNzg1NWI0MDE4OGNmMjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2lvcy9XZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2lvcy9XZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdC5oCkBAIC0z
NSw2ICszNSw3IEBACiAjaW5jbHVkZSAiVGltZXIuaCIKICNpbmNsdWRlICJXZWJQbGF5YmFja1Nl
c3Npb25JbnRlcmZhY2VBVktpdC5oIgogI2luY2x1ZGUgIldlYlZpZGVvRnVsbHNjcmVlbkludGVy
ZmFjZS5oIgorI2luY2x1ZGUgIldlYlZpZGVvRnVsbHNjcmVlbk1vZGVsLmgiCiAjaW5jbHVkZSA8
ZnVuY3Rpb25hbD4KICNpbmNsdWRlIDxvYmpjL29iamMuaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291
bnRlZC5oPgpAQCAtNTcsMTIgKzU4LDE0IEBAIGNsYXNzIFN0cmluZzsKIAogbmFtZXNwYWNlIFdl
YkNvcmUgewogY2xhc3MgSW50UmVjdDsKK2NsYXNzIEZsb2F0U2l6ZTsKIGNsYXNzIFdlYlZpZGVv
RnVsbHNjcmVlbk1vZGVsOwogY2xhc3MgV2ViVmlkZW9GdWxsc2NyZWVuQ2hhbmdlT2JzZXJ2ZXI7
CiAgICAgCiBjbGFzcyBXRUJDT1JFX0VYUE9SVCBXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VB
VktpdCBmaW5hbAogICAgIDogcHVibGljIFdlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZQotICAg
ICwgcHVibGljIFdlYlBsYXliYWNrU2Vzc2lvbkludGVyZmFjZUFWS2l0Q2xpZW50CisgICAgLCBw
dWJsaWMgV2ViVmlkZW9GdWxsc2NyZWVuTW9kZWxDbGllbnQKKyAgICAsIHB1YmxpYyBXZWJQbGF5
YmFja1Nlc3Npb25Nb2RlbENsaWVudAogICAgICwgcHVibGljIFJlZkNvdW50ZWQ8V2ViVmlkZW9G
dWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQ+IHsKIAogcHVibGljOgpAQCAtNzIsMTggKzc1LDEzIEBA
IHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldFdlYlZpZGVvRnVsbHNjcmVlbkNo
YW5nZU9ic2VydmVyKFdlYlZpZGVvRnVsbHNjcmVlbkNoYW5nZU9ic2VydmVyKik7CiAgICAgV2Vi
UGxheWJhY2tTZXNzaW9uTW9kZWwqIHdlYlBsYXliYWNrU2Vzc2lvbk1vZGVsKCkgY29uc3QgeyBy
ZXR1cm4gbV9wbGF5YmFja1Nlc3Npb25JbnRlcmZhY2UtPndlYlBsYXliYWNrU2Vzc2lvbk1vZGVs
KCk7IH0KIAotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgcmVzZXRNZWRpYVN0YXRlKCkgZmluYWw7
Ci0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXREdXJhdGlvbihkb3VibGUpIGZpbmFsOwotICAg
IFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0Q3VycmVudFRpbWUoZG91YmxlIGN1cnJlbnRUaW1lLCBk
b3VibGUgYW5jaG9yVGltZSkgZmluYWw7Ci0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRCdWZm
ZXJlZFRpbWUoZG91YmxlKSBmaW5hbDsKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldFJhdGUo
Ym9vbCBpc1BsYXlpbmcsIGZsb2F0IHBsYXliYWNrUmF0ZSkgZmluYWw7Ci0gICAgV0VCQ09SRV9F
WFBPUlQgdm9pZCBzZXRWaWRlb0RpbWVuc2lvbnMoYm9vbCBoYXNWaWRlbywgZmxvYXQgd2lkdGgs
IGZsb2F0IGhlaWdodCkgZmluYWw7Ci0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRTZWVrYWJs
ZVJhbmdlcyhjb25zdCBUaW1lUmFuZ2VzJikgZmluYWw7Ci0gICAgV0VCQ09SRV9FWFBPUlQgdm9p
ZCBzZXRDYW5QbGF5RmFzdFJldmVyc2UoYm9vbCkgZmluYWw7Ci0gICAgV0VCQ09SRV9FWFBPUlQg
dm9pZCBzZXRBdWRpb01lZGlhU2VsZWN0aW9uT3B0aW9ucyhjb25zdCBWZWN0b3I8V1RGOjpTdHJp
bmc+JiBvcHRpb25zLCB1aW50NjRfdCBzZWxlY3RlZEluZGV4KSBmaW5hbDsKLSAgICBXRUJDT1JF
X0VYUE9SVCB2b2lkIHNldExlZ2libGVNZWRpYVNlbGVjdGlvbk9wdGlvbnMoY29uc3QgVmVjdG9y
PFdURjo6U3RyaW5nPiYgb3B0aW9ucywgdWludDY0X3Qgc2VsZWN0ZWRJbmRleCkgZmluYWw7Ci0g
ICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRFeHRlcm5hbFBsYXliYWNrKGJvb2wgZW5hYmxlZCwg
RXh0ZXJuYWxQbGF5YmFja1RhcmdldFR5cGUsIFdURjo6U3RyaW5nIGxvY2FsaXplZERldmljZU5h
bWUpIGZpbmFsOwotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0V2lyZWxlc3NWaWRlb1BsYXli
YWNrRGlzYWJsZWQoYm9vbCkgZmluYWw7CisgICAgLy8gV2ViVmlkZW9GdWxsc2NyZWVuTW9kZWxD
bGllbnQKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGhhc1ZpZGVvQ2hhbmdlZChib29sKSBmaW5h
bDsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHZpZGVvRGltZW5zaW9uc0NoYW5nZWQoY29uc3Qg
RmxvYXRTaXplJikgZmluYWw7CisKKyAgICAvLyBXZWJQbGF5YmFja1Nlc3Npb25Nb2RlbENsaWVu
dAorICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZXh0ZXJuYWxQbGF5YmFja0NoYW5nZWQoYm9vbCBl
bmFibGVkLCBXZWJQbGF5YmFja1Nlc3Npb25Nb2RlbDo6RXh0ZXJuYWxQbGF5YmFja1RhcmdldFR5
cGUsIGNvbnN0IFN0cmluZyYgbG9jYWxpemVkRGV2aWNlTmFtZSkgZmluYWw7CisKICAgICBXRUJD
T1JFX0VYUE9SVCB2aXJ0dWFsIHZvaWQgc2V0dXBGdWxsc2NyZWVuKFVJVmlldyYsIGNvbnN0IElu
dFJlY3QmIGluaXRpYWxSZWN0LCBVSVZpZXcgKiwgSFRNTE1lZGlhRWxlbWVudEVudW1zOjpWaWRl
b0Z1bGxzY3JlZW5Nb2RlLCBib29sIGFsbG93c1BpY3R1cmVJblBpY3R1cmVQbGF5YmFjayk7CiAg
ICAgV0VCQ09SRV9FWFBPUlQgdmlydHVhbCB2b2lkIGVudGVyRnVsbHNjcmVlbigpOwogICAgIFdF
QkNPUkVfRVhQT1JUIHZpcnR1YWwgdm9pZCBleGl0RnVsbHNjcmVlbihjb25zdCBJbnRSZWN0JiBm
aW5hbFJlY3QpOwpAQCAtMTI3LDcgKzEyNSw2IEBAIHByb3RlY3RlZDoKICAgICB2b2lkIGVudGVy
UGljdHVyZUluUGljdHVyZSgpOwogICAgIHZvaWQgZW50ZXJGdWxsc2NyZWVuU3RhbmRhcmQoKTsK
ICAgICB2b2lkIHdhdGNoZG9nVGltZXJGaXJlZCgpOwotICAgIHZvaWQgZXh0ZXJuYWxQbGF5YmFj
a0VuYWJsZWRDaGFuZ2VkKGJvb2wpIGZpbmFsOwogICAgIFdlYkFWUGxheWVyQ29udHJvbGxlciAq
cGxheWVyQ29udHJvbGxlcigpIGNvbnN0OwogCiAgICAgUmVmPFdlYlBsYXliYWNrU2Vzc2lvbklu
dGVyZmFjZUFWS2l0PiBtX3BsYXliYWNrU2Vzc2lvbkludGVyZmFjZTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9XZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktp
dC5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9XZWJWaWRlb0Z1bGxzY3JlZW5JbnRl
cmZhY2VBVktpdC5tbQppbmRleCAwOTk5YzFjNzcyMTI2OWM4ZmUwZDU2ZGJkZDdiZjZiMDg3Yjcz
ZjdmLi5jYzYyZTNhODg0YWVmMjk1MTk3ZTJiYjc2YmIwZmE3ZWMzMDcwYmExIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvV2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNl
QVZLaXQubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1dlYlZpZGVvRnVsbHNj
cmVlbkludGVyZmFjZUFWS2l0Lm1tCkBAIC01MDMsNyArNTAzLDkgQEAgV2ViVmlkZW9GdWxsc2Ny
ZWVuSW50ZXJmYWNlQVZLaXQ6On5XZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdCgpCiB7
CiAgICAgV2ViQVZQbGF5ZXJDb250cm9sbGVyKiBwbGF5ZXJDb250cm9sbGVyID0gdGhpcy0+cGxh
eWVyQ29udHJvbGxlcigpOwogICAgIGlmIChwbGF5ZXJDb250cm9sbGVyICYmIHBsYXllckNvbnRy
b2xsZXIuZXh0ZXJuYWxQbGF5YmFja0FjdGl2ZSkKLSAgICAgICAgc2V0RXh0ZXJuYWxQbGF5YmFj
ayhmYWxzZSwgVGFyZ2V0VHlwZU5vbmUsICIiKTsKKyAgICAgICAgZXh0ZXJuYWxQbGF5YmFja0No
YW5nZWQoZmFsc2UsIFdlYlBsYXliYWNrU2Vzc2lvbk1vZGVsOjpUYXJnZXRUeXBlTm9uZSwgIiIp
OworICAgIGlmIChtX3ZpZGVvRnVsbHNjcmVlbk1vZGVsKQorICAgICAgICBtX3ZpZGVvRnVsbHNj
cmVlbk1vZGVsLT5yZW1vdmVDbGllbnQoKnRoaXMpOwogfQogCiBXZWJBVlBsYXllckNvbnRyb2xs
ZXIgKldlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0OjpwbGF5ZXJDb250cm9sbGVyKCkg
Y29uc3QKQEAgLTUxMSw0OCArNTEzLDM2IEBAIFdlYkFWUGxheWVyQ29udHJvbGxlciAqV2ViVmlk
ZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQ6OnBsYXllckNvbnRyb2xsZXIoKSBjb25zCiAgICAg
cmV0dXJuIG1fcGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlLT5wbGF5ZXJDb250cm9sbGVyKCk7CiB9
CiAKLXZvaWQgV2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQ6OnJlc2V0TWVkaWFTdGF0
ZSgpCi17Ci0gICAgbV9wbGF5YmFja1Nlc3Npb25JbnRlcmZhY2UtPnJlc2V0TWVkaWFTdGF0ZSgp
OwotfQotCiB2b2lkIFdlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0OjpzZXRXZWJWaWRl
b0Z1bGxzY3JlZW5Nb2RlbChXZWJWaWRlb0Z1bGxzY3JlZW5Nb2RlbCogbW9kZWwpCiB7Ci0gICAg
bV92aWRlb0Z1bGxzY3JlZW5Nb2RlbCA9IG1vZGVsOwotfQorICAgIGlmIChtX3ZpZGVvRnVsbHNj
cmVlbk1vZGVsKQorICAgICAgICBtX3ZpZGVvRnVsbHNjcmVlbk1vZGVsLT5yZW1vdmVDbGllbnQo
KnRoaXMpOwogCi12b2lkIFdlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0OjpzZXRXZWJW
aWRlb0Z1bGxzY3JlZW5DaGFuZ2VPYnNlcnZlcihXZWJWaWRlb0Z1bGxzY3JlZW5DaGFuZ2VPYnNl
cnZlciogb2JzZXJ2ZXIpCi17Ci0gICAgbV9mdWxsc2NyZWVuQ2hhbmdlT2JzZXJ2ZXIgPSBvYnNl
cnZlcjsKLX0KKyAgICBtX3ZpZGVvRnVsbHNjcmVlbk1vZGVsID0gbW9kZWw7CiAKLXZvaWQgV2Vi
VmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQ6OnNldER1cmF0aW9uKGRvdWJsZSBkdXJhdGlv
bikKLXsKLSAgICBtX3BsYXliYWNrU2Vzc2lvbkludGVyZmFjZS0+c2V0RHVyYXRpb24oZHVyYXRp
b24pOwotfQorICAgIGlmIChtX3ZpZGVvRnVsbHNjcmVlbk1vZGVsKQorICAgICAgICBtX3ZpZGVv
RnVsbHNjcmVlbk1vZGVsLT5hZGRDbGllbnQoKnRoaXMpOwogCi12b2lkIFdlYlZpZGVvRnVsbHNj
cmVlbkludGVyZmFjZUFWS2l0OjpzZXRDdXJyZW50VGltZShkb3VibGUgY3VycmVudFRpbWUsIGRv
dWJsZSBhbmNob3JUaW1lKQotewotICAgIG1fcGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlLT5zZXRD
dXJyZW50VGltZShjdXJyZW50VGltZSwgYW5jaG9yVGltZSk7CisgICAgaGFzVmlkZW9DaGFuZ2Vk
KG1fdmlkZW9GdWxsc2NyZWVuTW9kZWwgPyBtX3ZpZGVvRnVsbHNjcmVlbk1vZGVsLT5oYXNWaWRl
bygpIDogZmFsc2UpOworICAgIHZpZGVvRGltZW5zaW9uc0NoYW5nZWQobV92aWRlb0Z1bGxzY3Jl
ZW5Nb2RlbCA/IG1fdmlkZW9GdWxsc2NyZWVuTW9kZWwtPnZpZGVvRGltZW5zaW9ucygpIDogRmxv
YXRTaXplKCkpOwogfQogCi12b2lkIFdlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0Ojpz
ZXRCdWZmZXJlZFRpbWUoZG91YmxlIGJ1ZmZlcmVkVGltZSkKK3ZvaWQgV2ViVmlkZW9GdWxsc2Ny
ZWVuSW50ZXJmYWNlQVZLaXQ6OnNldFdlYlZpZGVvRnVsbHNjcmVlbkNoYW5nZU9ic2VydmVyKFdl
YlZpZGVvRnVsbHNjcmVlbkNoYW5nZU9ic2VydmVyKiBvYnNlcnZlcikKIHsKLSAgICBtX3BsYXli
YWNrU2Vzc2lvbkludGVyZmFjZS0+c2V0QnVmZmVyZWRUaW1lKGJ1ZmZlcmVkVGltZSk7CisgICAg
bV9mdWxsc2NyZWVuQ2hhbmdlT2JzZXJ2ZXIgPSBvYnNlcnZlcjsKIH0KIAotdm9pZCBXZWJWaWRl
b0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdDo6c2V0UmF0ZShib29sIGlzUGxheWluZywgZmxvYXQg
cGxheWJhY2tSYXRlKQordm9pZCBXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdDo6aGFz
VmlkZW9DaGFuZ2VkKGJvb2wgaGFzVmlkZW8pCiB7Ci0gICAgbV9wbGF5YmFja1Nlc3Npb25JbnRl
cmZhY2UtPnNldFJhdGUoaXNQbGF5aW5nLCBwbGF5YmFja1JhdGUpOworICAgIFtwbGF5ZXJDb250
cm9sbGVyKCkgc2V0SGFzRW5hYmxlZFZpZGVvOmhhc1ZpZGVvXTsKIH0KIAotdm9pZCBXZWJWaWRl
b0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdDo6c2V0VmlkZW9EaW1lbnNpb25zKGJvb2wgaGFzVmlk
ZW8sIGZsb2F0IHdpZHRoLCBmbG9hdCBoZWlnaHQpCit2b2lkIFdlYlZpZGVvRnVsbHNjcmVlbklu
dGVyZmFjZUFWS2l0Ojp2aWRlb0RpbWVuc2lvbnNDaGFuZ2VkKGNvbnN0IEZsb2F0U2l6ZSYgdmlk
ZW9EaW1lbnNpb25zKQogewogICAgIFdlYkFWUGxheWVyTGF5ZXIgKnBsYXllckxheWVyID0gKFdl
YkFWUGxheWVyTGF5ZXIgKilbbV9wbGF5ZXJMYXllclZpZXcgcGxheWVyTGF5ZXJdOwogCi0gICAg
W3BsYXllckxheWVyIHNldFZpZGVvRGltZW5zaW9uczpDR1NpemVNYWtlKHdpZHRoLCBoZWlnaHQp
XTsKLSAgICBbcGxheWVyQ29udHJvbGxlcigpIHNldEhhc0VuYWJsZWRWaWRlbzpoYXNWaWRlb107
Ci0gICAgW3BsYXllckNvbnRyb2xsZXIoKSBzZXRDb250ZW50RGltZW5zaW9uczpDR1NpemVNYWtl
KHdpZHRoLCBoZWlnaHQpXTsKKyAgICBbcGxheWVyTGF5ZXIgc2V0VmlkZW9EaW1lbnNpb25zOnZp
ZGVvRGltZW5zaW9uc107CisgICAgW3BsYXllckNvbnRyb2xsZXIoKSBzZXRDb250ZW50RGltZW5z
aW9uczp2aWRlb0RpbWVuc2lvbnNdOwogICAgIFttX3BsYXllckxheWVyVmlldyBzZXROZWVkc0xh
eW91dF07CiAKICAgICBXZWJBVlBpY3R1cmVJblBpY3R1cmVQbGF5ZXJMYXllclZpZXcgKnBpcFZp
ZXcgPSAoV2ViQVZQaWN0dXJlSW5QaWN0dXJlUGxheWVyTGF5ZXJWaWV3ICopW21fcGxheWVyTGF5
ZXJWaWV3IHBpY3R1cmVJblBpY3R1cmVQbGF5ZXJMYXllclZpZXddOwpAQCAtNTYxLDQ2ICs1NTEs
MTEgQEAgdm9pZCBXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdDo6c2V0VmlkZW9EaW1l
bnNpb25zKGJvb2wgaGFzVmlkZW8sIGZsb2F0IHcKICAgICBbcGlwVmlldyBzZXROZWVkc0xheW91
dF07ICAgIAogfQogCi12b2lkIFdlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0OjpzZXRT
ZWVrYWJsZVJhbmdlcyhjb25zdCBUaW1lUmFuZ2VzJiB0aW1lUmFuZ2VzKQotewotICAgIG1fcGxh
eWJhY2tTZXNzaW9uSW50ZXJmYWNlLT5zZXRTZWVrYWJsZVJhbmdlcyh0aW1lUmFuZ2VzKTsKLX0K
LQotdm9pZCBXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdDo6c2V0Q2FuUGxheUZhc3RS
ZXZlcnNlKGJvb2wgY2FuUGxheUZhc3RSZXZlcnNlKQotewotICAgIG1fcGxheWJhY2tTZXNzaW9u
SW50ZXJmYWNlLT5zZXRDYW5QbGF5RmFzdFJldmVyc2UoY2FuUGxheUZhc3RSZXZlcnNlKTsKLX0K
LQotdm9pZCBXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdDo6c2V0QXVkaW9NZWRpYVNl
bGVjdGlvbk9wdGlvbnMoY29uc3QgVmVjdG9yPFN0cmluZz4mIG9wdGlvbnMsIHVpbnQ2NF90IHNl
bGVjdGVkSW5kZXgpCi17Ci0gICAgbV9wbGF5YmFja1Nlc3Npb25JbnRlcmZhY2UtPnNldEF1ZGlv
TWVkaWFTZWxlY3Rpb25PcHRpb25zKG9wdGlvbnMsIHNlbGVjdGVkSW5kZXgpOwotfQotCi12b2lk
IFdlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0OjpzZXRMZWdpYmxlTWVkaWFTZWxlY3Rp
b25PcHRpb25zKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBvcHRpb25zLCB1aW50NjRfdCBzZWxlY3Rl
ZEluZGV4KQotewotICAgIG1fcGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlLT5zZXRMZWdpYmxlTWVk
aWFTZWxlY3Rpb25PcHRpb25zKG9wdGlvbnMsIHNlbGVjdGVkSW5kZXgpOwotfQotCi12b2lkIFdl
YlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0OjpzZXRFeHRlcm5hbFBsYXliYWNrKGJvb2wg
ZW5hYmxlZCwgRXh0ZXJuYWxQbGF5YmFja1RhcmdldFR5cGUgdGFyZ2V0VHlwZSwgU3RyaW5nIGxv
Y2FsaXplZERldmljZU5hbWUpCi17Ci0gICAgbV9wbGF5YmFja1Nlc3Npb25JbnRlcmZhY2UtPnNl
dEV4dGVybmFsUGxheWJhY2soZW5hYmxlZCwgdGFyZ2V0VHlwZSwgbG9jYWxpemVkRGV2aWNlTmFt
ZSk7Ci19Ci0KLXZvaWQgV2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQ6OmV4dGVybmFs
UGxheWJhY2tFbmFibGVkQ2hhbmdlZChib29sIGVuYWJsZWQpCit2b2lkIFdlYlZpZGVvRnVsbHNj
cmVlbkludGVyZmFjZUFWS2l0OjpleHRlcm5hbFBsYXliYWNrQ2hhbmdlZChib29sIGVuYWJsZWQs
IFdlYlBsYXliYWNrU2Vzc2lvbk1vZGVsOjpFeHRlcm5hbFBsYXliYWNrVGFyZ2V0VHlwZSwgY29u
c3QgU3RyaW5nJikKIHsKICAgICBbbV9wbGF5ZXJMYXllclZpZXcgc2V0SGlkZGVuOmVuYWJsZWRd
OwogfQogCi12b2lkIFdlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0OjpzZXRXaXJlbGVz
c1ZpZGVvUGxheWJhY2tEaXNhYmxlZChib29sIGRpc2FibGVkKQotewotICAgIG1fcGxheWJhY2tT
ZXNzaW9uSW50ZXJmYWNlLT5zZXRXaXJlbGVzc1ZpZGVvUGxheWJhY2tEaXNhYmxlZChkaXNhYmxl
ZCk7Ci19Ci0KLWJvb2wgV2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQ6OndpcmVsZXNz
VmlkZW9QbGF5YmFja0Rpc2FibGVkKCkgY29uc3QKLXsKLSAgICByZXR1cm4gbV9wbGF5YmFja1Nl
c3Npb25JbnRlcmZhY2UtPndpcmVsZXNzVmlkZW9QbGF5YmFja0Rpc2FibGVkKCk7Ci19Ci0KIHZv
aWQgV2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQ6OmFwcGxpY2F0aW9uRGlkQmVjb21l
QWN0aXZlKCkKIHsKICAgICBMT0coRnVsbHNjcmVlbiwgIldlYlZpZGVvRnVsbHNjcmVlbkludGVy
ZmFjZUFWS2l0OjphcHBsaWNhdGlvbkRpZEJlY29tZUFjdGl2ZSglcCkiLCB0aGlzKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9XZWJQbGF5YmFja1Nlc3Npb25JbnRl
cmZhY2VNYWMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9XZWJQbGF5YmFja1Nlc3Np
b25JbnRlcmZhY2VNYWMuaAppbmRleCBjYzk2MTdkODM0OTU1NjZiMWU0ZWE5YTA4MTU1OWUyMzkw
NDQ2ZGQyLi4wNTRhODQzYjQ1MGI0Zjg4ZDAxZTMxZjZkNThlODE3ZjQ2NTNlNWUyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvV2ViUGxheWJhY2tTZXNzaW9uSW50ZXJm
YWNlTWFjLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1dlYlBsYXliYWNrU2Vz
c2lvbkludGVyZmFjZU1hYy5oCkBAIC0zMCw2ICszMCw3IEBACiAKICNpbmNsdWRlICJIVE1MTWVk
aWFFbGVtZW50RW51bXMuaCIKICNpbmNsdWRlICJXZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2Uu
aCIKKyNpbmNsdWRlICJXZWJQbGF5YmFja1Nlc3Npb25Nb2RlbC5oIgogI2luY2x1ZGUgPHd0Zi9S
ZWZDb3VudGVkLmg+CiAjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgogI2luY2x1ZGUgPHd0Zi90
ZXh0L1dURlN0cmluZy5oPgpAQCAtNDAsNDcgKzQxLDM0IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IGNsYXNzIEludFJlY3Q7CiBjbGFzcyBXZWJQbGF5YmFja1Nlc3Npb25Nb2RlbDsKIAotY2xhc3Mg
V2ViUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlTWFjQ2xpZW50IHsKLXB1YmxpYzoKLSAgICB2aXJ0
dWFsIH5XZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2VNYWNDbGllbnQoKSB7IH0KLQotICAgIHZp
cnR1YWwgdm9pZCByYXRlQ2hhbmdlZChib29sIGlzUGxheWluZywgZmxvYXQgcGxheWJhY2tSYXRl
KSA9IDA7Ci19OwotCiBjbGFzcyBXRUJDT1JFX0VYUE9SVCBXZWJQbGF5YmFja1Nlc3Npb25JbnRl
cmZhY2VNYWMgZmluYWwKICAgICA6IHB1YmxpYyBXZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2UK
KyAgICAsIHB1YmxpYyBXZWJQbGF5YmFja1Nlc3Npb25Nb2RlbENsaWVudAogICAgICwgcHVibGlj
IFJlZkNvdW50ZWQ8V2ViUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlTWFjPiB7CiBwdWJsaWM6Ci0g
ICAgc3RhdGljIFJlZjxXZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2VNYWM+IGNyZWF0ZSgpCi0g
ICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBXZWJQbGF5YmFja1Nlc3Npb25JbnRl
cmZhY2VNYWMoKSk7Ci0gICAgfQorICAgIHN0YXRpYyBSZWY8V2ViUGxheWJhY2tTZXNzaW9uSW50
ZXJmYWNlTWFjPiBjcmVhdGUoV2ViUGxheWJhY2tTZXNzaW9uTW9kZWwmKTsKICAgICB2aXJ0dWFs
IH5XZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2VNYWMoKTsKICAgICBXZWJQbGF5YmFja1Nlc3Np
b25Nb2RlbCogd2ViUGxheWJhY2tTZXNzaW9uTW9kZWwoKSBjb25zdCB7IHJldHVybiBtX3BsYXli
YWNrU2Vzc2lvbk1vZGVsOyB9Ci0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRXZWJQbGF5YmFj
a1Nlc3Npb25Nb2RlbChXZWJQbGF5YmFja1Nlc3Npb25Nb2RlbCopOwotICAgIFdlYlBsYXliYWNr
U2Vzc2lvbkludGVyZmFjZU1hY0NsaWVudCogY2xpZW50KCkgY29uc3QgeyByZXR1cm4gbV9jbGll
bnQ7IH0KLSAgICB2b2lkIHNldENsaWVudChXZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2VNYWND
bGllbnQqKTsKIAorICAgIC8vIFdlYlBsYXliYWNrU2Vzc2lvbkludGVyZmFjZQogICAgIFdFQkNP
UkVfRVhQT1JUIHZvaWQgcmVzZXRNZWRpYVN0YXRlKCkgZmluYWwgeyB9Ci0gICAgV0VCQ09SRV9F
WFBPUlQgdm9pZCBzZXREdXJhdGlvbihkb3VibGUpIGZpbmFsOwotICAgIFdFQkNPUkVfRVhQT1JU
IHZvaWQgc2V0Q3VycmVudFRpbWUoZG91YmxlIC8qY3VycmVudFRpbWUqLywgZG91YmxlIC8qYW5j
aG9yVGltZSovKSBmaW5hbDsKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldEJ1ZmZlcmVkVGlt
ZShkb3VibGUpIGZpbmFsIHsgfQotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0UmF0ZShib29s
IC8qaXNQbGF5aW5nKi8sIGZsb2F0IC8qcGxheWJhY2tSYXRlKi8pIGZpbmFsOwotICAgIFdFQkNP
UkVfRVhQT1JUIHZvaWQgc2V0U2Vla2FibGVSYW5nZXMoY29uc3QgVGltZVJhbmdlcyYpIGZpbmFs
OwotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0Q2FuUGxheUZhc3RSZXZlcnNlKGJvb2wpIGZp
bmFsIHsgfQotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0QXVkaW9NZWRpYVNlbGVjdGlvbk9w
dGlvbnMoY29uc3QgVmVjdG9yPFN0cmluZz4mIC8qb3B0aW9ucyovLCB1aW50NjRfdCAvKnNlbGVj
dGVkSW5kZXgqLykgZmluYWw7Ci0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRMZWdpYmxlTWVk
aWFTZWxlY3Rpb25PcHRpb25zKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiAvKm9wdGlvbnMqLywgdWlu
dDY0X3QgLypzZWxlY3RlZEluZGV4Ki8pIGZpbmFsOwotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQg
c2V0RXh0ZXJuYWxQbGF5YmFjayhib29sLCBFeHRlcm5hbFBsYXliYWNrVGFyZ2V0VHlwZSwgU3Ry
aW5nKSBmaW5hbCB7IH0KLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldFdpcmVsZXNzVmlkZW9Q
bGF5YmFja0Rpc2FibGVkKGJvb2wpIGZpbmFsIHsgfQorCisgICAgLy8gV2ViUGxheWJhY2tTZXNz
aW9uTW9kZWxDbGllbnQKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGR1cmF0aW9uQ2hhbmdlZChk
b3VibGUpIGZpbmFsOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgY3VycmVudFRpbWVDaGFuZ2Vk
KGRvdWJsZSAvKmN1cnJlbnRUaW1lKi8sIGRvdWJsZSAvKmFuY2hvclRpbWUqLykgZmluYWw7Cisg
ICAgV0VCQ09SRV9FWFBPUlQgdm9pZCByYXRlQ2hhbmdlZChib29sIC8qaXNQbGF5aW5nKi8sIGZs
b2F0IC8qcGxheWJhY2tSYXRlKi8pIGZpbmFsOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2Vl
a2FibGVSYW5nZXNDaGFuZ2VkKGNvbnN0IFRpbWVSYW5nZXMmKSBmaW5hbDsKKyAgICBXRUJDT1JF
X0VYUE9SVCB2b2lkIGF1ZGlvTWVkaWFTZWxlY3Rpb25PcHRpb25zQ2hhbmdlZChjb25zdCBWZWN0
b3I8U3RyaW5nPiYgLypvcHRpb25zKi8sIHVpbnQ2NF90IC8qc2VsZWN0ZWRJbmRleCovKSBmaW5h
bDsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGxlZ2libGVNZWRpYVNlbGVjdGlvbk9wdGlvbnND
aGFuZ2VkKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiAvKm9wdGlvbnMqLywgdWludDY0X3QgLypzZWxl
Y3RlZEluZGV4Ki8pIGZpbmFsOwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgaW52YWxpZGF0ZSgp
OwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZW5zdXJlQ29udHJvbHNNYW5hZ2VyKCk7CiAgICAg
V0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRQbGF5QmFja0NvbnRyb2xzTWFuYWdlcihXZWJQbGF5YmFj
a0NvbnRyb2xzTWFuYWdlciAqKTsKICAgICBXRUJDT1JFX0VYUE9SVCBXZWJQbGF5YmFja0NvbnRy
b2xzTWFuYWdlciAqcGxheUJhY2tDb250cm9sc01hbmFnZXIoKTsKIAogcHJpdmF0ZToKKyAgICBX
ZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2VNYWMoV2ViUGxheWJhY2tTZXNzaW9uTW9kZWwmKTsK
ICAgICBXZWJQbGF5YmFja1Nlc3Npb25Nb2RlbCogbV9wbGF5YmFja1Nlc3Npb25Nb2RlbCB7IG51
bGxwdHIgfTsKLSAgICBXZWJQbGF5YmFja0NvbnRyb2xzTWFuYWdlciAqbV9wbGF5YmFja0NvbnRy
b2xzTWFuYWdlcjsKLSAgICBXZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2VNYWNDbGllbnQqIG1f
Y2xpZW50IHsgbnVsbHB0ciB9OworICAgIFdlYlBsYXliYWNrQ29udHJvbHNNYW5hZ2VyICptX3Bs
YXliYWNrQ29udHJvbHNNYW5hZ2VyICB7IG51bGxwdHIgfTsKIH07CiAKIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9XZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2VN
YWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvV2ViUGxheWJhY2tTZXNzaW9uSW50
ZXJmYWNlTWFjLm1tCmluZGV4IDI0YzRkNmFiNGZjMjRiOTZhZTczMjg5NTE4NDM4MjBkMWRmYzJj
ZjUuLjE2ZjE4Y2Y1Y2NiZTMwNzE5MjE4YTI5M2RlZTIwNjFjYjdlZjAwNWMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9XZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2VN
YWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1dlYlBsYXliYWNrU2Vzc2lv
bkludGVyZmFjZU1hYy5tbQpAQCAtNDUsMjQgKzQ1LDI0IEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJD
b3JlOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVdlYlBsYXliYWNrU2Vzc2lvbkludGVyZmFj
ZU1hYzo6fldlYlBsYXliYWNrU2Vzc2lvbkludGVyZmFjZU1hYygpCitSZWY8V2ViUGxheWJhY2tT
ZXNzaW9uSW50ZXJmYWNlTWFjPiBXZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2VNYWM6OmNyZWF0
ZShXZWJQbGF5YmFja1Nlc3Npb25Nb2RlbCYgbW9kZWwpCiB7CisgICAgYXV0byBpbnRlcmZhY2Ug
PSBhZG9wdFJlZigqbmV3IFdlYlBsYXliYWNrU2Vzc2lvbkludGVyZmFjZU1hYyhtb2RlbCkpOwor
ICAgIG1vZGVsLmFkZENsaWVudChpbnRlcmZhY2UpOworICAgIHJldHVybiBpbnRlcmZhY2U7CiB9
CiAKLXZvaWQgV2ViUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlTWFjOjpzZXRXZWJQbGF5YmFja1Nl
c3Npb25Nb2RlbChXZWJQbGF5YmFja1Nlc3Npb25Nb2RlbCogbW9kZWwpCitXZWJQbGF5YmFja1Nl
c3Npb25JbnRlcmZhY2VNYWM6OldlYlBsYXliYWNrU2Vzc2lvbkludGVyZmFjZU1hYyhXZWJQbGF5
YmFja1Nlc3Npb25Nb2RlbCYgbW9kZWwpCisgICAgOiBtX3BsYXliYWNrU2Vzc2lvbk1vZGVsKCZt
b2RlbCkKIHsKLSAgICBtX3BsYXliYWNrU2Vzc2lvbk1vZGVsID0gbW9kZWw7CiB9CiAKLXZvaWQg
V2ViUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlTWFjOjpzZXRDbGllbnQoV2ViUGxheWJhY2tTZXNz
aW9uSW50ZXJmYWNlTWFjQ2xpZW50KiBjbGllbnQpCitXZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZh
Y2VNYWM6On5XZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2VNYWMoKQogewotICAgIG1fY2xpZW50
ID0gY2xpZW50OwotCi0gICAgaWYgKG1fY2xpZW50ICYmIG1fcGxheWJhY2tTZXNzaW9uTW9kZWwp
Ci0gICAgICAgIG1fY2xpZW50LT5yYXRlQ2hhbmdlZChtX3BsYXliYWNrU2Vzc2lvbk1vZGVsLT5p
c1BsYXlpbmcoKSwgbV9wbGF5YmFja1Nlc3Npb25Nb2RlbC0+cGxheWJhY2tSYXRlKCkpOworICAg
IGludmFsaWRhdGUoKTsKIH0KIAotdm9pZCBXZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2VNYWM6
OnNldER1cmF0aW9uKGRvdWJsZSBkdXJhdGlvbikKK3ZvaWQgV2ViUGxheWJhY2tTZXNzaW9uSW50
ZXJmYWNlTWFjOjpkdXJhdGlvbkNoYW5nZWQoZG91YmxlIGR1cmF0aW9uKQogewogICAgIFdlYlBs
YXliYWNrQ29udHJvbHNNYW5hZ2VyKiBjb250cm9sc01hbmFnZXIgPSBwbGF5QmFja0NvbnRyb2xz
TWFuYWdlcigpOwogCkBAIC03Myw3ICs3Myw3IEBAIHZvaWQgV2ViUGxheWJhY2tTZXNzaW9uSW50
ZXJmYWNlTWFjOjpzZXREdXJhdGlvbihkb3VibGUgZHVyYXRpb24pCiAgICAgY29udHJvbHNNYW5h
Z2VyLmhhc0VuYWJsZWRWaWRlbyA9IFlFUzsKIH0KIAotdm9pZCBXZWJQbGF5YmFja1Nlc3Npb25J
bnRlcmZhY2VNYWM6OnNldEN1cnJlbnRUaW1lKGRvdWJsZSBjdXJyZW50VGltZSwgZG91YmxlIGFu
Y2hvclRpbWUpCit2b2lkIFdlYlBsYXliYWNrU2Vzc2lvbkludGVyZmFjZU1hYzo6Y3VycmVudFRp
bWVDaGFuZ2VkKGRvdWJsZSBjdXJyZW50VGltZSwgZG91YmxlIGFuY2hvclRpbWUpCiB7CiAgICAg
V2ViUGxheWJhY2tDb250cm9sc01hbmFnZXIqIGNvbnRyb2xzTWFuYWdlciA9IHBsYXlCYWNrQ29u
dHJvbHNNYW5hZ2VyKCk7CiAKQEAgLTg0LDE0ICs4NCwxMSBAQCB2b2lkIFdlYlBsYXliYWNrU2Vz
c2lvbkludGVyZmFjZU1hYzo6c2V0Q3VycmVudFRpbWUoZG91YmxlIGN1cnJlbnRUaW1lLCBkb3Vi
bGUgYQogICAgIFtjb250cm9sc01hbmFnZXIgc2V0VGltaW5nOnRpbWluZ107CiB9CiAKLXZvaWQg
V2ViUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlTWFjOjpzZXRSYXRlKGJvb2wgaXNQbGF5aW5nLCBm
bG9hdCBwbGF5YmFja1JhdGUpCit2b2lkIFdlYlBsYXliYWNrU2Vzc2lvbkludGVyZmFjZU1hYzo6
cmF0ZUNoYW5nZWQoYm9vbCBpc1BsYXlpbmcsIGZsb2F0IHBsYXliYWNrUmF0ZSkKIHsKICAgICBX
ZWJQbGF5YmFja0NvbnRyb2xzTWFuYWdlciogY29udHJvbHNNYW5hZ2VyID0gcGxheUJhY2tDb250
cm9sc01hbmFnZXIoKTsKICAgICBbY29udHJvbHNNYW5hZ2VyIHNldFJhdGU6aXNQbGF5aW5nID8g
cGxheWJhY2tSYXRlIDogMC5dOwogICAgIFtjb250cm9sc01hbmFnZXIgc2V0UGxheWluZzppc1Bs
YXlpbmddOwotCi0gICAgaWYgKG1fY2xpZW50KQotICAgICAgICBtX2NsaWVudC0+cmF0ZUNoYW5n
ZWQoaXNQbGF5aW5nLCBwbGF5YmFja1JhdGUpOwogfQogCiBzdGF0aWMgUmV0YWluUHRyPE5TTXV0
YWJsZUFycmF5PiB0aW1lUmFuZ2VzVG9BcnJheShjb25zdCBUaW1lUmFuZ2VzJiB0aW1lUmFuZ2Vz
KQpAQCAtMTA3LDI2ICsxMDQsMjggQEAgc3RhdGljIFJldGFpblB0cjxOU011dGFibGVBcnJheT4g
dGltZVJhbmdlc1RvQXJyYXkoY29uc3QgVGltZVJhbmdlcyYgdGltZVJhbmdlcykKICAgICByZXR1
cm4gcmFuZ2VBcnJheTsKIH0KIAotdm9pZCBXZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2VNYWM6
OnNldFNlZWthYmxlUmFuZ2VzKGNvbnN0IFRpbWVSYW5nZXMmIHRpbWVSYW5nZXMpCit2b2lkIFdl
YlBsYXliYWNrU2Vzc2lvbkludGVyZmFjZU1hYzo6c2Vla2FibGVSYW5nZXNDaGFuZ2VkKGNvbnN0
IFRpbWVSYW5nZXMmIHRpbWVSYW5nZXMpCiB7Ci0gICAgV2ViUGxheWJhY2tDb250cm9sc01hbmFn
ZXIqIGNvbnRyb2xzTWFuYWdlciA9IHBsYXlCYWNrQ29udHJvbHNNYW5hZ2VyKCk7Ci0gICAgW2Nv
bnRyb2xzTWFuYWdlciBzZXRTZWVrYWJsZVRpbWVSYW5nZXM6dGltZVJhbmdlc1RvQXJyYXkodGlt
ZVJhbmdlcykuZ2V0KCldOworICAgIFtwbGF5QmFja0NvbnRyb2xzTWFuYWdlcigpIHNldFNlZWth
YmxlVGltZVJhbmdlczp0aW1lUmFuZ2VzVG9BcnJheSh0aW1lUmFuZ2VzKS5nZXQoKV07CiB9CiAK
LXZvaWQgV2ViUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlTWFjOjpzZXRBdWRpb01lZGlhU2VsZWN0
aW9uT3B0aW9ucyhjb25zdCBWZWN0b3I8V1RGOjpTdHJpbmc+JiBvcHRpb25zLCB1aW50NjRfdCBz
ZWxlY3RlZEluZGV4KQordm9pZCBXZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2VNYWM6OmF1ZGlv
TWVkaWFTZWxlY3Rpb25PcHRpb25zQ2hhbmdlZChjb25zdCBWZWN0b3I8V1RGOjpTdHJpbmc+JiBv
cHRpb25zLCB1aW50NjRfdCBzZWxlY3RlZEluZGV4KQogewotICAgIFdlYlBsYXliYWNrQ29udHJv
bHNNYW5hZ2VyKiBjb250cm9sc01hbmFnZXIgPSBwbGF5QmFja0NvbnRyb2xzTWFuYWdlcigpOwot
ICAgIFtjb250cm9sc01hbmFnZXIgc2V0QXVkaW9NZWRpYVNlbGVjdGlvbk9wdGlvbnM6b3B0aW9u
cyB3aXRoU2VsZWN0ZWRJbmRleDpzdGF0aWNfY2FzdDxOU1VJbnRlZ2VyPihzZWxlY3RlZEluZGV4
KV07CisgICAgW3BsYXlCYWNrQ29udHJvbHNNYW5hZ2VyKCkgc2V0QXVkaW9NZWRpYVNlbGVjdGlv
bk9wdGlvbnM6b3B0aW9ucyB3aXRoU2VsZWN0ZWRJbmRleDpzdGF0aWNfY2FzdDxOU1VJbnRlZ2Vy
PihzZWxlY3RlZEluZGV4KV07CiB9CiAKLXZvaWQgV2ViUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNl
TWFjOjpzZXRMZWdpYmxlTWVkaWFTZWxlY3Rpb25PcHRpb25zKGNvbnN0IFZlY3RvcjxXVEY6OlN0
cmluZz4mIG9wdGlvbnMsIHVpbnQ2NF90IHNlbGVjdGVkSW5kZXgpCit2b2lkIFdlYlBsYXliYWNr
U2Vzc2lvbkludGVyZmFjZU1hYzo6bGVnaWJsZU1lZGlhU2VsZWN0aW9uT3B0aW9uc0NoYW5nZWQo
Y29uc3QgVmVjdG9yPFdURjo6U3RyaW5nPiYgb3B0aW9ucywgdWludDY0X3Qgc2VsZWN0ZWRJbmRl
eCkKIHsKLSAgICBXZWJQbGF5YmFja0NvbnRyb2xzTWFuYWdlciogY29udHJvbHNNYW5hZ2VyID0g
cGxheUJhY2tDb250cm9sc01hbmFnZXIoKTsKLSAgICBbY29udHJvbHNNYW5hZ2VyIHNldExlZ2li
bGVNZWRpYVNlbGVjdGlvbk9wdGlvbnM6b3B0aW9ucyB3aXRoU2VsZWN0ZWRJbmRleDpzdGF0aWNf
Y2FzdDxOU1VJbnRlZ2VyPihzZWxlY3RlZEluZGV4KV07CisgICAgW3BsYXlCYWNrQ29udHJvbHNN
YW5hZ2VyKCkgc2V0TGVnaWJsZU1lZGlhU2VsZWN0aW9uT3B0aW9uczpvcHRpb25zIHdpdGhTZWxl
Y3RlZEluZGV4OnN0YXRpY19jYXN0PE5TVUludGVnZXI+KHNlbGVjdGVkSW5kZXgpXTsKIH0KIAog
dm9pZCBXZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2VNYWM6OmludmFsaWRhdGUoKQogeworICAg
IGlmICghbV9wbGF5YmFja1Nlc3Npb25Nb2RlbCkKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9w
bGF5YmFja1Nlc3Npb25Nb2RlbC0+cmVtb3ZlQ2xpZW50KCp0aGlzKTsKKyAgICBtX3BsYXliYWNr
U2Vzc2lvbk1vZGVsID0gbnVsbHB0cjsKIH0KIAogdm9pZCBXZWJQbGF5YmFja1Nlc3Npb25JbnRl
cmZhY2VNYWM6OmVuc3VyZUNvbnRyb2xzTWFuYWdlcigpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tYWMvV2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlTWFjLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvV2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlTWFjLmgK
aW5kZXggNzcwNWU0ODliMjM1MDllOThhYmM0OWZhZDIyYWNmOTBlOGExNmY5NC4uZGIxOGMwZGEw
MTE2ZGJiNTdkMDk5N2U2NmE3MDhhYTVlNzFhZWM0NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbWFjL1dlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZU1hYy5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9XZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VNYWMu
aApAQCAtMzAsNyArMzAsOSBAQAogCiAjaW5jbHVkZSAiSFRNTE1lZGlhRWxlbWVudEVudW1zLmgi
CiAjaW5jbHVkZSAiV2ViUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlTWFjLmgiCisjaW5jbHVkZSAi
V2ViUGxheWJhY2tTZXNzaW9uTW9kZWwuaCIKICNpbmNsdWRlICJXZWJWaWRlb0Z1bGxzY3JlZW5J
bnRlcmZhY2UuaCIKKyNpbmNsdWRlICJXZWJWaWRlb0Z1bGxzY3JlZW5Nb2RlbC5oIgogI2luY2x1
ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgogI2luY2x1
ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgpAQCAtNDAsMTMgKzQyLDE0IEBAIE9CSkNfQ0xBU1Mg
V2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlTWFjT2JqQzsKIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewogY2xhc3MgSW50UmVjdDsKK2NsYXNzIEZsb2F0U2l6ZTsKIGNsYXNzIFdlYlBsYXliYWNrU2Vz
c2lvbkludGVyZmFjZU1hYzsKIGNsYXNzIFdlYlZpZGVvRnVsbHNjcmVlbkNoYW5nZU9ic2VydmVy
OwotY2xhc3MgV2ViVmlkZW9GdWxsc2NyZWVuTW9kZWw7CiAKIGNsYXNzIFdFQkNPUkVfRVhQT1JU
IFdlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZU1hYwogICAgIDogcHVibGljIFdlYlZpZGVvRnVs
bHNjcmVlbkludGVyZmFjZQotICAgICwgcHJpdmF0ZSBXZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZh
Y2VNYWNDbGllbnQKKyAgICAsIHB1YmxpYyBXZWJWaWRlb0Z1bGxzY3JlZW5Nb2RlbENsaWVudAor
ICAgICwgcHJpdmF0ZSBXZWJQbGF5YmFja1Nlc3Npb25Nb2RlbENsaWVudAogICAgICwgcHVibGlj
IFJlZkNvdW50ZWQ8V2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlTWFjPiB7CiAKIHB1YmxpYzoK
QEAgLTYxLDE4ICs2NCwxMyBAQCBwdWJsaWM6CiAgICAgV2ViVmlkZW9GdWxsc2NyZWVuQ2hhbmdl
T2JzZXJ2ZXIqIHdlYlZpZGVvRnVsbHNjcmVlbkNoYW5nZU9ic2VydmVyKCkgY29uc3QgeyByZXR1
cm4gbV9mdWxsc2NyZWVuQ2hhbmdlT2JzZXJ2ZXI7IH0KICAgICBXRUJDT1JFX0VYUE9SVCB2b2lk
IHNldFdlYlZpZGVvRnVsbHNjcmVlbkNoYW5nZU9ic2VydmVyKFdlYlZpZGVvRnVsbHNjcmVlbkNo
YW5nZU9ic2VydmVyKik7CiAKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHJlc2V0TWVkaWFTdGF0
ZSgpIG92ZXJyaWRlIHsgfQotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0RHVyYXRpb24oZG91
YmxlKSBvdmVycmlkZTsKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldEN1cnJlbnRUaW1lKGRv
dWJsZSAvKmN1cnJlbnRUaW1lKi8sIGRvdWJsZSAvKmFuY2hvclRpbWUqLykgb3ZlcnJpZGU7Ci0g
ICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRCdWZmZXJlZFRpbWUoZG91YmxlKSBvdmVycmlkZSB7
IH0KLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldFJhdGUoYm9vbCAvKmlzUGxheWluZyovLCBm
bG9hdCAvKnBsYXliYWNrUmF0ZSovKSBvdmVycmlkZTsKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lk
IHNldFZpZGVvRGltZW5zaW9ucyhib29sIGhhc1ZpZGVvLCBmbG9hdCB3aWR0aCwgZmxvYXQgaGVp
Z2h0KSBmaW5hbDsKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldFNlZWthYmxlUmFuZ2VzKGNv
bnN0IFRpbWVSYW5nZXMmKSBvdmVycmlkZTsKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldENh
blBsYXlGYXN0UmV2ZXJzZShib29sKSBvdmVycmlkZSB7IH0KLSAgICBXRUJDT1JFX0VYUE9SVCB2
b2lkIHNldEF1ZGlvTWVkaWFTZWxlY3Rpb25PcHRpb25zKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiAv
Km9wdGlvbnMqLywgdWludDY0X3QgLypzZWxlY3RlZEluZGV4Ki8pIG92ZXJyaWRlOwotICAgIFdF
QkNPUkVfRVhQT1JUIHZvaWQgc2V0TGVnaWJsZU1lZGlhU2VsZWN0aW9uT3B0aW9ucyhjb25zdCBW
ZWN0b3I8U3RyaW5nPiYgLypvcHRpb25zKi8sIHVpbnQ2NF90IC8qc2VsZWN0ZWRJbmRleCovKSBv
dmVycmlkZTsKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldEV4dGVybmFsUGxheWJhY2soYm9v
bCBlbmFibGVkLCBFeHRlcm5hbFBsYXliYWNrVGFyZ2V0VHlwZSwgU3RyaW5nIGxvY2FsaXplZERl
dmljZU5hbWUpIG92ZXJyaWRlOwotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0V2lyZWxlc3NW
aWRlb1BsYXliYWNrRGlzYWJsZWQoYm9vbCkgb3ZlcnJpZGUgeyB9CisgICAgLy8gV2ViUGxheWJh
Y2tTZXNzaW9uTW9kZWxDbGllbnQKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHJhdGVDaGFuZ2Vk
KGJvb2wgaXNQbGF5aW5nLCBmbG9hdCBwbGF5YmFja1JhdGUpIG92ZXJyaWRlOworICAgIFdFQkNP
UkVfRVhQT1JUIHZvaWQgZXh0ZXJuYWxQbGF5YmFja0NoYW5nZWQoYm9vbCAgZW5hYmxlZCwgV2Vi
UGxheWJhY2tTZXNzaW9uTW9kZWw6OkV4dGVybmFsUGxheWJhY2tUYXJnZXRUeXBlLCBjb25zdCBT
dHJpbmcmIGxvY2FsaXplZERldmljZU5hbWUpIG92ZXJyaWRlOworCisgICAgLy8gV2ViVmlkZW9G
dWxsc2NyZWVuTW9kZWxDbGllbnQKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGhhc1ZpZGVvQ2hh
bmdlZChib29sKSBmaW5hbDsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHZpZGVvRGltZW5zaW9u
c0NoYW5nZWQoY29uc3QgRmxvYXRTaXplJikgZmluYWw7CiAKICAgICBXRUJDT1JFX0VYUE9SVCB2
b2lkIHNldHVwRnVsbHNjcmVlbihOU1ZpZXcmIGxheWVySG9zdGVkVmlldywgY29uc3QgSW50UmVj
dCYgaW5pdGlhbFJlY3QsIE5TV2luZG93ICpwYXJlbnRXaW5kb3csIEhUTUxNZWRpYUVsZW1lbnRF
bnVtczo6VmlkZW9GdWxsc2NyZWVuTW9kZSwgYm9vbCBhbGxvd3NQaWN0dXJlSW5QaWN0dXJlUGxh
eWJhY2spOwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZW50ZXJGdWxsc2NyZWVuKCk7CkBAIC05
NSw4ICs5Myw2IEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCBib29sIG1heUF1dG9tYXRp
Y2FsbHlTaG93VmlkZW9QaWN0dXJlSW5QaWN0dXJlKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0K
ICAgICB2b2lkIGFwcGxpY2F0aW9uRGlkQmVjb21lQWN0aXZlKCkgeyB9CiAKLSAgICB2b2lkIHJh
dGVDaGFuZ2VkKGJvb2wgaXNQbGF5aW5nLCBmbG9hdCBwbGF5YmFja1JhdGUpIG92ZXJyaWRlOwot
CiAgICAgV0VCQ09SRV9FWFBPUlQgV2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlTWFjT2JqQyAq
dmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlT2JqQygpOwogCiBwcml2YXRlOgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1dlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZU1h
Yy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9XZWJWaWRlb0Z1bGxzY3JlZW5JbnRl
cmZhY2VNYWMubW0KaW5kZXggODYyNGNlOTU3NTY1YjUxYzcwN2Y2ZWY4YjNhMjEyMTY5YjExNzI2
Yi4uZjcxMzE3MDE2NTJhOTE2MGJhODg0YjdmMTNiMmNkZDU4ZjUxMjVlYiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1dlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZU1h
Yy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvV2ViVmlkZW9GdWxsc2NyZWVu
SW50ZXJmYWNlTWFjLm1tCkBAIC0zNTEsMTggKzM1MSwyNSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7
CiBXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VNYWM6OldlYlZpZGVvRnVsbHNjcmVlbkludGVy
ZmFjZU1hYyhXZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2VNYWMmIHBsYXliYWNrU2Vzc2lvbklu
dGVyZmFjZSkKICAgICA6IG1fcGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlKHBsYXliYWNrU2Vzc2lv
bkludGVyZmFjZSkKIHsKLSAgICBtX3BsYXliYWNrU2Vzc2lvbkludGVyZmFjZS0+c2V0Q2xpZW50
KHRoaXMpOworICAgIEFTU0VSVChtX3BsYXliYWNrU2Vzc2lvbkludGVyZmFjZS0+d2ViUGxheWJh
Y2tTZXNzaW9uTW9kZWwoKSk7CisgICAgbV9wbGF5YmFja1Nlc3Npb25JbnRlcmZhY2UtPndlYlBs
YXliYWNrU2Vzc2lvbk1vZGVsKCktPmFkZENsaWVudCgqdGhpcyk7CiB9CiAKIFdlYlZpZGVvRnVs
bHNjcmVlbkludGVyZmFjZU1hYzo6fldlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZU1hYygpCiB7
Ci0gICAgaWYgKG1fcGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlLT5jbGllbnQoKSA9PSB0aGlzKQot
ICAgICAgICBtX3BsYXliYWNrU2Vzc2lvbkludGVyZmFjZS0+c2V0Q2xpZW50KG51bGxwdHIpOwor
ICAgIGlmIChtX3BsYXliYWNrU2Vzc2lvbkludGVyZmFjZS0+d2ViUGxheWJhY2tTZXNzaW9uTW9k
ZWwoKSkKKyAgICAgICAgbV9wbGF5YmFja1Nlc3Npb25JbnRlcmZhY2UtPndlYlBsYXliYWNrU2Vz
c2lvbk1vZGVsKCktPnJlbW92ZUNsaWVudCgqdGhpcyk7CisgICAgaWYgKG1fdmlkZW9GdWxsc2Ny
ZWVuTW9kZWwpCisgICAgICAgIG1fdmlkZW9GdWxsc2NyZWVuTW9kZWwtPnJlbW92ZUNsaWVudCgq
dGhpcyk7CiB9CiAKIHZvaWQgV2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlTWFjOjpzZXRXZWJW
aWRlb0Z1bGxzY3JlZW5Nb2RlbChXZWJWaWRlb0Z1bGxzY3JlZW5Nb2RlbCogbW9kZWwpCiB7Cisg
ICAgaWYgKG1fdmlkZW9GdWxsc2NyZWVuTW9kZWwpCisgICAgICAgIG1fdmlkZW9GdWxsc2NyZWVu
TW9kZWwtPnJlbW92ZUNsaWVudCgqdGhpcyk7CiAgICAgbV92aWRlb0Z1bGxzY3JlZW5Nb2RlbCA9
IG1vZGVsOworICAgIGlmIChtX3ZpZGVvRnVsbHNjcmVlbk1vZGVsKQorICAgICAgICBtX3ZpZGVv
RnVsbHNjcmVlbk1vZGVsLT5hZGRDbGllbnQoKnRoaXMpOwogfQogCiB2b2lkIFdlYlZpZGVvRnVs
bHNjcmVlbkludGVyZmFjZU1hYzo6c2V0V2ViVmlkZW9GdWxsc2NyZWVuQ2hhbmdlT2JzZXJ2ZXIo
V2ViVmlkZW9GdWxsc2NyZWVuQ2hhbmdlT2JzZXJ2ZXIqIG9ic2VydmVyKQpAQCAtMzkyLDQxICsz
OTksMTEgQEAgdm9pZCBXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VNYWM6OmNsZWFyTW9kZShI
VE1MTWVkaWFFbGVtZW50RW51bXM6OlZpZGVvRnVsbHMKICAgICAgICAgbV92aWRlb0Z1bGxzY3Jl
ZW5Nb2RlbC0+ZnVsbHNjcmVlbk1vZGVDaGFuZ2VkKG1fbW9kZSk7CiB9CiAKLXZvaWQgV2ViVmlk
ZW9GdWxsc2NyZWVuSW50ZXJmYWNlTWFjOjpzZXREdXJhdGlvbihkb3VibGUgZHVyYXRpb24pCi17
Ci0gICAgbV9wbGF5YmFja1Nlc3Npb25JbnRlcmZhY2UtPnNldER1cmF0aW9uKGR1cmF0aW9uKTsK
LX0KLQotdm9pZCBXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VNYWM6OnNldEN1cnJlbnRUaW1l
KGRvdWJsZSBjdXJyZW50VGltZSwgZG91YmxlIGFuY2hvclRpbWUpCi17Ci0gICAgbV9wbGF5YmFj
a1Nlc3Npb25JbnRlcmZhY2UtPnNldEN1cnJlbnRUaW1lKGN1cnJlbnRUaW1lLCBhbmNob3JUaW1l
KTsKLX0KLQotdm9pZCBXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VNYWM6OnNldFJhdGUoYm9v
bCBpc1BsYXlpbmcsIGZsb2F0IHBsYXliYWNrUmF0ZSkKLXsKLSAgICBtX3BsYXliYWNrU2Vzc2lv
bkludGVyZmFjZS0+c2V0UmF0ZShpc1BsYXlpbmcsIHBsYXliYWNrUmF0ZSk7Ci19Ci0KIHZvaWQg
V2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlTWFjOjpyYXRlQ2hhbmdlZChib29sIGlzUGxheWlu
ZywgZmxvYXQgcGxheWJhY2tSYXRlKQogewogICAgIFt2aWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VP
YmpDKCkgdXBkYXRlSXNQbGF5aW5nOmlzUGxheWluZyBuZXdQbGF5YmFja1JhdGU6cGxheWJhY2tS
YXRlXTsKIH0KIAotdm9pZCBXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VNYWM6OnNldFNlZWth
YmxlUmFuZ2VzKGNvbnN0IFRpbWVSYW5nZXMmIHRpbWVSYW5nZXMpCi17Ci0gICAgbV9wbGF5YmFj
a1Nlc3Npb25JbnRlcmZhY2UtPnNldFNlZWthYmxlUmFuZ2VzKHRpbWVSYW5nZXMpOwotfQotCi12
b2lkIFdlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZU1hYzo6c2V0QXVkaW9NZWRpYVNlbGVjdGlv
bk9wdGlvbnMoY29uc3QgVmVjdG9yPFdURjo6U3RyaW5nPiYgb3B0aW9ucywgdWludDY0X3Qgc2Vs
ZWN0ZWRJbmRleCkKLXsKLSAgICBtX3BsYXliYWNrU2Vzc2lvbkludGVyZmFjZS0+c2V0QXVkaW9N
ZWRpYVNlbGVjdGlvbk9wdGlvbnMob3B0aW9ucywgc2VsZWN0ZWRJbmRleCk7Ci19Ci0KLXZvaWQg
V2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlTWFjOjpzZXRMZWdpYmxlTWVkaWFTZWxlY3Rpb25P
cHRpb25zKGNvbnN0IFZlY3RvcjxXVEY6OlN0cmluZz4mIG9wdGlvbnMsIHVpbnQ2NF90IHNlbGVj
dGVkSW5kZXgpCi17Ci0gICAgbV9wbGF5YmFja1Nlc3Npb25JbnRlcmZhY2UtPnNldExlZ2libGVN
ZWRpYVNlbGVjdGlvbk9wdGlvbnMob3B0aW9ucywgc2VsZWN0ZWRJbmRleCk7Ci19Ci0KIHZvaWQg
V2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlTWFjOjplbnN1cmVDb250cm9sc01hbmFnZXIoKQog
ewogICAgIG1fcGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlLT5lbnN1cmVDb250cm9sc01hbmFnZXIo
KTsKQEAgLTU0NSwyNiArNTIyLDI5IEBAIHZvaWQgV2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNl
TWFjOjpwcmVwYXJlZFRvUmV0dXJuVG9JbmxpbmUoYm9vbCB2aXNpYmxlLCBjb25zCiAgICAgW21f
d2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlT2JqQyBleGl0UElQQW5pbWF0aW5nVG9SZWN0OihO
U1JlY3QpaW5saW5lUmVjdCBpbldpbmRvdzpwYXJlbnRXaW5kb3ddOwogfQogCi12b2lkIFdlYlZp
ZGVvRnVsbHNjcmVlbkludGVyZmFjZU1hYzo6c2V0RXh0ZXJuYWxQbGF5YmFjayhib29sIGVuYWJs
ZWQsIEV4dGVybmFsUGxheWJhY2tUYXJnZXRUeXBlLCBTdHJpbmcpCit2b2lkIFdlYlZpZGVvRnVs
bHNjcmVlbkludGVyZmFjZU1hYzo6ZXh0ZXJuYWxQbGF5YmFja0NoYW5nZWQoYm9vbCBlbmFibGVk
LCBXZWJQbGF5YmFja1Nlc3Npb25Nb2RlbDo6RXh0ZXJuYWxQbGF5YmFja1RhcmdldFR5cGUsIGNv
bnN0IFN0cmluZyYpCiB7Ci0gICAgTE9HKEZ1bGxzY3JlZW4sICJXZWJWaWRlb0Z1bGxzY3JlZW5J
bnRlcmZhY2VNYWM6OnNldEV4dGVybmFsUGxheWJhY2soJXApLCBlbmFibGVkOiVzIiwgdGhpcywg
Ym9vbFN0cmluZyhlbmFibGVkKSk7CisgICAgTE9HKEZ1bGxzY3JlZW4sICJXZWJWaWRlb0Z1bGxz
Y3JlZW5JbnRlcmZhY2VNYWM6OmV4dGVybmFsUGxheWJhY2tDaGFuZ2VkKCVwKSwgZW5hYmxlZDol
cyIsIHRoaXMsIGJvb2xTdHJpbmcoZW5hYmxlZCkpOwogCiAgICAgaWYgKGVuYWJsZWQgJiYgbV9t
b2RlID09IEhUTUxNZWRpYUVsZW1lbnRFbnVtczo6VmlkZW9GdWxsc2NyZWVuTW9kZVBpY3R1cmVJ
blBpY3R1cmUpCiAgICAgICAgIGV4aXRGdWxsc2NyZWVuKEludFJlY3QoKSwgbmlsKTsKIH0KIAot
dm9pZCBXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VNYWM6OnNldFZpZGVvRGltZW5zaW9ucyhi
b29sIGhhc1ZpZGVvLCBmbG9hdCB3aWR0aCwgZmxvYXQgaGVpZ2h0KQordm9pZCBXZWJWaWRlb0Z1
bGxzY3JlZW5JbnRlcmZhY2VNYWM6Omhhc1ZpZGVvQ2hhbmdlZChib29sIGhhc1ZpZGVvKQogewot
ICAgIExPRyhGdWxsc2NyZWVuLCAiV2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlTWFjOjpzZXRW
aWRlb0RpbWVuc2lvbnMoJXApLCBoYXNWaWRlbzolcywgd2lkdGg6JS4wZiwgaGVpZ2h0OiUuMGYi
LCB0aGlzLCBib29sU3RyaW5nKGhhc1ZpZGVvKSwgd2lkdGgsIGhlaWdodCk7CisgICAgTE9HKEZ1
bGxzY3JlZW4sICJXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VNYWM6Omhhc1ZpZGVvQ2hhbmdl
ZCglcCk6JXMiLCB0aGlzLCBib29sU3RyaW5nKGhhc1ZpZGVvKSk7CiAKLSAgICBpZiAoIWhhc1Zp
ZGVvKSB7CisgICAgaWYgKCFoYXNWaWRlbykKICAgICAgICAgZXhpdEZ1bGxzY3JlZW5XaXRob3V0
QW5pbWF0aW9uVG9Nb2RlKEhUTUxNZWRpYUVsZW1lbnRFbnVtczo6VmlkZW9GdWxsc2NyZWVuTW9k
ZU5vbmUpOwotICAgICAgICByZXR1cm47Ci0gICAgfQorfQorCit2b2lkIFdlYlZpZGVvRnVsbHNj
cmVlbkludGVyZmFjZU1hYzo6dmlkZW9EaW1lbnNpb25zQ2hhbmdlZChjb25zdCBGbG9hdFNpemUm
IHZpZGVvRGltZW5zaW9ucykKK3sKKyAgICBMT0coRnVsbHNjcmVlbiwgIldlYlZpZGVvRnVsbHNj
cmVlbkludGVyZmFjZU1hYzo6dmlkZW9EaW1lbnNpb25zQ2hhbmdlZCglcCksIHdpZHRoOiUuMGYs
IGhlaWdodDolLjBmIiwgdGhpcywgdmlkZW9EaW1lbnNpb25zLndpZHRoKCksIHZpZGVvRGltZW5z
aW9ucy5oZWlnaHQoKSk7CiAKICAgICAvLyBXaWR0aCBhbmQgaGVpZ2h0IGNhbiBiZSB6ZXJvIHdo
ZW4gd2UgYXJlIHRyYW5zaXRpb25pbmcgZnJvbSBvbmUgdmlkZW8gdG8gYW5vdGhlci4gSWdub3Jl
IHplcm8gdmFsdWVzLgotICAgIGlmICh3aWR0aCAmJiBoZWlnaHQpCi0gICAgICAgIFttX3dlYlZp
ZGVvRnVsbHNjcmVlbkludGVyZmFjZU9iakMgc2V0VmlkZW9EaW1lbnNpb25zOk5TTWFrZVNpemUo
d2lkdGgsIGhlaWdodCldOworICAgIGlmICghdmlkZW9EaW1lbnNpb25zLmlzWmVybygpKQorICAg
ICAgICBbbV93ZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VPYmpDIHNldFZpZGVvRGltZW5zaW9u
czp2aWRlb0RpbWVuc2lvbnNdOwogfQogCiBib29sIFdlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFj
ZU1hYzo6aXNQbGF5aW5nVmlkZW9JbkVuaGFuY2VkRnVsbHNjcmVlbigpIGNvbnN0CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXcubW0gYi9Tb3VyY2UvV2ViS2l0
L21hYy9XZWJWaWV3L1dlYlZpZXcubW0KaW5kZXggZWMzMDE5YjgyYTlkNTc1MjViMTRlZmMxMjNk
YjM5ZWY2NzUyMGE5OC4uMDdjYjViNjIxYWNkMGIzY2EzN2NlYjU0NjRjZjQxNWZmMDBjNDA0YiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tCisrKyBiL1Nv
dXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlldy5tbQpAQCAtODYzNiwxMCArODYzNiw4IEBA
IC0gKHZvaWQpX3NldFVwUGxheWJhY2tDb250cm9sc01hbmFnZXJGb3JNZWRpYUVsZW1lbnQ6KFdl
YkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQmCiAgICAgX3ByaXZhdGUtPnBsYXliYWNrU2Vzc2lvbk1v
ZGVsLT5zZXRNZWRpYUVsZW1lbnQoJm1lZGlhRWxlbWVudCk7CiAKICAgICBpZiAoIV9wcml2YXRl
LT5wbGF5YmFja1Nlc3Npb25JbnRlcmZhY2UpCi0gICAgICAgIF9wcml2YXRlLT5wbGF5YmFja1Nl
c3Npb25JbnRlcmZhY2UgPSBXZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2VNYWM6OmNyZWF0ZSgp
OworICAgICAgICBfcHJpdmF0ZS0+cGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlID0gV2ViUGxheWJh
Y2tTZXNzaW9uSW50ZXJmYWNlTWFjOjpjcmVhdGUoKl9wcml2YXRlLT5wbGF5YmFja1Nlc3Npb25N
b2RlbCk7CiAKLSAgICBfcHJpdmF0ZS0+cGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlLT5zZXRXZWJQ
bGF5YmFja1Nlc3Npb25Nb2RlbChfcHJpdmF0ZS0+cGxheWJhY2tTZXNzaW9uTW9kZWwuZ2V0KCkp
OwotICAgIF9wcml2YXRlLT5wbGF5YmFja1Nlc3Npb25Nb2RlbC0+c2V0V2ViUGxheWJhY2tTZXNz
aW9uSW50ZXJmYWNlKF9wcml2YXRlLT5wbGF5YmFja1Nlc3Npb25JbnRlcmZhY2UuZ2V0KCkpOwog
ICAgIFtzZWxmIHVwZGF0ZVdlYlZpZXdBZGRpdGlvbnNdOwogfQogCkBAIC04NjQ5LDggKzg2NDcs
NyBAQCAtICh2b2lkKV9jbGVhclBsYXliYWNrQ29udHJvbHNNYW5hZ2VyCiAgICAgICAgIHJldHVy
bjsKIAogICAgIF9wcml2YXRlLT5wbGF5YmFja1Nlc3Npb25Nb2RlbC0+c2V0TWVkaWFFbGVtZW50
KG51bGxwdHIpOwotICAgIF9wcml2YXRlLT5wbGF5YmFja1Nlc3Npb25Nb2RlbC0+c2V0V2ViUGxh
eWJhY2tTZXNzaW9uSW50ZXJmYWNlKG51bGxwdHIpOwotICAgIF9wcml2YXRlLT5wbGF5YmFja1Nl
c3Npb25JbnRlcmZhY2UtPnNldFdlYlBsYXliYWNrU2Vzc2lvbk1vZGVsKG51bGxwdHIpOworICAg
IF9wcml2YXRlLT5wbGF5YmFja1Nlc3Npb25JbnRlcmZhY2UtPmludmFsaWRhdGUoKTsKIAogICAg
IF9wcml2YXRlLT5wbGF5YmFja1Nlc3Npb25Nb2RlbCA9IG51bGxwdHI7CiAgICAgX3ByaXZhdGUt
PnBsYXliYWNrU2Vzc2lvbkludGVyZmFjZSA9IG51bGxwdHI7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbSBiL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tCmluZGV4IGEyMjhhMTllMTViZjk1MDgy
YzljOTQzZWUwZTBkZWYwY2YwNjZkOWQuLjRhNGQyZDkzNGYyZGYyYTA4MWI5ZGQzNTZlOTU3MWM1
MWIzYTZmMmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2Ev
V0tXZWJWaWV3Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tX
ZWJWaWV3Lm1tCkBAIC01NDQsOCArNTQ0LDYgQEAgLSAodm9pZClfaW5pdGlhbGl6ZVdpdGhDb25m
aWd1cmF0aW9uOihXS1dlYlZpZXdDb25maWd1cmF0aW9uICopY29uZmlndXJhdGlvbgogICAgICAg
ICBfcGFnZS0+c2V0QXBwbGljYXRpb25OYW1lRm9yVXNlckFnZW50KGFwcGxpY2F0aW9uTmFtZUZv
clVzZXJBZ2VudCk7CiAKICAgICBfbmF2aWdhdGlvblN0YXRlID0gc3RkOjptYWtlX3VuaXF1ZTxX
ZWJLaXQ6Ok5hdmlnYXRpb25TdGF0ZT4oc2VsZik7Ci0gICAgX3BhZ2UtPnNldE5hdmlnYXRpb25D
bGllbnQoX25hdmlnYXRpb25TdGF0ZS0+Y3JlYXRlTmF2aWdhdGlvbkNsaWVudCgpKTsKLQogICAg
IF91aURlbGVnYXRlID0gc3RkOjptYWtlX3VuaXF1ZTxXZWJLaXQ6OlVJRGVsZWdhdGU+KHNlbGYp
OwogICAgIF9wYWdlLT5zZXRGaW5kQ2xpZW50KHN0ZDo6bWFrZV91bmlxdWU8V2ViS2l0OjpGaW5k
Q2xpZW50PihzZWxmKSk7CiAgICAgX3BhZ2UtPnNldERpYWdub3N0aWNMb2dnaW5nQ2xpZW50KHN0
ZDo6bWFrZV91bmlxdWU8V2ViS2l0OjpEaWFnbm9zdGljTG9nZ2luZ0NsaWVudD4oc2VsZikpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0NvY29hL1dlYlBsYXliYWNrU2Vz
c2lvbk1hbmFnZXJQcm94eS5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0NvY29hL1dlYlBs
YXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eS5oCmluZGV4IGRmZjgyNmE2MzM2YzlhYjRhYWNkNTMy
ODE1ZWE2NzAxNTdlNWRhYmEuLjUwY2EyZWU2NGZjMjQ1MDQ3M2NlZjgxMmFkYmNkNjk3ZTc2YmRm
MWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db2NvYS9XZWJQbGF5YmFj
a1Nlc3Npb25NYW5hZ2VyUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29j
b2EvV2ViUGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5LmgKQEAgLTMzLDYgKzMzLDcgQEAKICNp
bmNsdWRlIDxXZWJDb3JlL1RpbWVSYW5nZXMuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1dlYlBsYXli
YWNrU2Vzc2lvbk1vZGVsLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KKyNpbmNsdWRlIDx3
dGYvSGFzaFNldC5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAjaW5jbHVkZSA8d3Rm
L1JlZlB0ci5oPgogCkBAIC02MywxOSArNjQsMjAgQEAgcHVibGljOgogCiAgICAgdm9pZCBpbnZh
bGlkYXRlKCkgeyBtX21hbmFnZXIgPSBudWxscHRyOyB9CiAKLSAgICB2b2lkIHNldER1cmF0aW9u
KGRvdWJsZSBkdXJhdGlvbikgeyBtX2R1cmF0aW9uID0gZHVyYXRpb247IH0KLSAgICB2b2lkIHNl
dEN1cnJlbnRUaW1lKGRvdWJsZSBjdXJyZW50VGltZSkgeyBtX2N1cnJlbnRUaW1lID0gY3VycmVu
dFRpbWU7IH0KLSAgICB2b2lkIHNldEJ1ZmZlcmVkVGltZShkb3VibGUgYnVmZmVyZWRUaW1lKSB7
IG1fYnVmZmVyZWRUaW1lID0gYnVmZmVyZWRUaW1lOyB9Ci0gICAgdm9pZCBzZXRJc1BsYXlpbmco
Ym9vbCBpc1BsYXlpbmcpIHsgbV9pc1BsYXlpbmcgPSBpc1BsYXlpbmc7IH0KLSAgICB2b2lkIHNl
dFBsYXliYWNrUmF0ZShmbG9hdCBwbGF5YmFja1JhdGUpIHsgbV9wbGF5YmFja1JhdGUgPSBwbGF5
YmFja1JhdGU7IH0KLSAgICB2b2lkIHNldFNlZWthYmxlUmFuZ2VzKFdlYkNvcmU6OlRpbWVSYW5n
ZXMmIHNlZWthYmxlUmFuZ2VzKSB7IG1fc2Vla2FibGVSYW5nZXMgPSBzZWVrYWJsZVJhbmdlczsg
fQotICAgIHZvaWQgc2V0Q2FuUGxheUZhc3RSZXZlcnNlKGJvb2wgY2FuUGxheUZhc3RSZXZlcnNl
KSB7IG1fY2FuUGxheUZhc3RSZXZlcnNlID0gY2FuUGxheUZhc3RSZXZlcnNlOyB9Ci0gICAgdm9p
ZCBzZXRBdWRpb01lZGlhU2VsZWN0aW9uT3B0aW9ucyhjb25zdCBWZWN0b3I8V1RGOjpTdHJpbmc+
JiBhdWRpb01lZGlhU2VsZWN0aW9uT3B0aW9ucykgeyBtX2F1ZGlvTWVkaWFTZWxlY3Rpb25PcHRp
b25zID0gYXVkaW9NZWRpYVNlbGVjdGlvbk9wdGlvbnM7IH0KLSAgICB2b2lkIHNldEF1ZGlvTWVk
aWFTZWxlY3RlZEluZGV4KHVpbnQ2NF90IGF1ZGlvTWVkaWFTZWxlY3RlZEluZGV4KSB7IG1fYXVk
aW9NZWRpYVNlbGVjdGVkSW5kZXggPSBhdWRpb01lZGlhU2VsZWN0ZWRJbmRleDsgfQotICAgIHZv
aWQgc2V0TGVnaWJsZU1lZGlhU2VsZWN0aW9uT3B0aW9ucyhjb25zdCBWZWN0b3I8V1RGOjpTdHJp
bmc+JiBsZWdpYmxlTWVkaWFTZWxlY3Rpb25PcHRpb25zKSB7IG1fbGVnaWJsZU1lZGlhU2VsZWN0
aW9uT3B0aW9ucyA9IGxlZ2libGVNZWRpYVNlbGVjdGlvbk9wdGlvbnM7IH0KLSAgICB2b2lkIHNl
dExlZ2libGVNZWRpYVNlbGVjdGVkSW5kZXgodWludDY0X3QgbGVnaWJsZU1lZGlhU2VsZWN0ZWRJ
bmRleCkgeyBtX2xlZ2libGVNZWRpYVNlbGVjdGVkSW5kZXggPSBsZWdpYmxlTWVkaWFTZWxlY3Rl
ZEluZGV4OyB9Ci0gICAgdm9pZCBzZXRFeHRlcm5hbFBsYXliYWNrRW5hYmxlZChib29sIGV4dGVy
bmFsUGxheWJhY2tFbmFibGVkKSB7IG1fZXh0ZXJuYWxQbGF5YmFja0VuYWJsZWQgPSBleHRlcm5h
bFBsYXliYWNrRW5hYmxlZDsgfQotICAgIHZvaWQgc2V0V2lyZWxlc3NWaWRlb1BsYXliYWNrRGlz
YWJsZWQoYm9vbCB3aXJlbGVzc1ZpZGVvUGxheWJhY2tEaXNhYmxlZCkgeyBtX3dpcmVsZXNzVmlk
ZW9QbGF5YmFja0Rpc2FibGVkID0gd2lyZWxlc3NWaWRlb1BsYXliYWNrRGlzYWJsZWQ7IH0KKyAg
ICAvLyBXZWJQbGF5YmFja1Nlc3Npb25Nb2RlbAorICAgIHZvaWQgYWRkQ2xpZW50KFdlYkNvcmU6
OldlYlBsYXliYWNrU2Vzc2lvbk1vZGVsQ2xpZW50JikgZmluYWw7CisgICAgdm9pZCByZW1vdmVD
bGllbnQoV2ViQ29yZTo6V2ViUGxheWJhY2tTZXNzaW9uTW9kZWxDbGllbnQmKWZpbmFsOworCisg
ICAgdm9pZCBzZXREdXJhdGlvbihkb3VibGUpOworICAgIHZvaWQgc2V0Q3VycmVudFRpbWUoZG91
YmxlKTsKKyAgICB2b2lkIHNldEJ1ZmZlcmVkVGltZShkb3VibGUpOworICAgIHZvaWQgc2V0UmF0
ZShib29sIGlzUGxheWluZywgZmxvYXQgcGxheWJhY2tSYXRlKTsKKyAgICB2b2lkIHNldFNlZWth
YmxlUmFuZ2VzKFdlYkNvcmU6OlRpbWVSYW5nZXMmKTsKKyAgICB2b2lkIHNldENhblBsYXlGYXN0
UmV2ZXJzZShib29sKTsKKyAgICB2b2lkIHNldEF1ZGlvTWVkaWFTZWxlY3Rpb25PcHRpb25zKGNv
bnN0IFZlY3RvcjxXVEY6OlN0cmluZz4mIG9wdGlvbnMsIHVpbnQ2NF90IGluZGV4KTsKKyAgICB2
b2lkIHNldExlZ2libGVNZWRpYVNlbGVjdGlvbk9wdGlvbnMoY29uc3QgVmVjdG9yPFdURjo6U3Ry
aW5nPiYgb3B0aW9ucywgdWludDY0X3QgaW5kZXgpOworICAgIHZvaWQgc2V0RXh0ZXJuYWxQbGF5
YmFjayhib29sLCBXZWJQbGF5YmFja1Nlc3Npb25Nb2RlbDo6RXh0ZXJuYWxQbGF5YmFja1Rhcmdl
dFR5cGUsIGNvbnN0IFN0cmluZyYpOworICAgIHZvaWQgc2V0V2lyZWxlc3NWaWRlb1BsYXliYWNr
RGlzYWJsZWQoYm9vbCk7CiAKIHByaXZhdGU6CiAgICAgZnJpZW5kIGNsYXNzIFdlYlZpZGVvRnVs
bHNjcmVlbk1vZGVsQ29udGV4dDsKQEAgLTExMiwxMCArMTE0LDEzIEBAIHByaXZhdGU6CiAgICAg
VmVjdG9yPFdURjo6U3RyaW5nPiBsZWdpYmxlTWVkaWFTZWxlY3Rpb25PcHRpb25zKCkgY29uc3Qg
ZmluYWwgeyByZXR1cm4gbV9sZWdpYmxlTWVkaWFTZWxlY3Rpb25PcHRpb25zOyB9CiAgICAgdWlu
dDY0X3QgbGVnaWJsZU1lZGlhU2VsZWN0ZWRJbmRleCgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1f
bGVnaWJsZU1lZGlhU2VsZWN0ZWRJbmRleDsgfQogICAgIGJvb2wgZXh0ZXJuYWxQbGF5YmFja0Vu
YWJsZWQoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX2V4dGVybmFsUGxheWJhY2tFbmFibGVkOyB9
CisgICAgV2ViUGxheWJhY2tTZXNzaW9uTW9kZWw6OkV4dGVybmFsUGxheWJhY2tUYXJnZXRUeXBl
IGV4dGVybmFsUGxheWJhY2tUYXJnZXRUeXBlKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9leHRl
cm5hbFBsYXliYWNrVGFyZ2V0VHlwZTsgfQorICAgIFN0cmluZyBleHRlcm5hbFBsYXliYWNrTG9j
YWxpemVkRGV2aWNlTmFtZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fZXh0ZXJuYWxQbGF5YmFj
a0xvY2FsaXplZERldmljZU5hbWU7IH0KICAgICBib29sIHdpcmVsZXNzVmlkZW9QbGF5YmFja0Rp
c2FibGVkKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV93aXJlbGVzc1ZpZGVvUGxheWJhY2tEaXNh
YmxlZDsgfQogCiAgICAgV2ViUGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5KiBtX21hbmFnZXI7
CiAgICAgdWludDY0X3QgbV9jb250ZXh0SWQ7CisgICAgSGFzaFNldDxXZWJDb3JlOjpXZWJQbGF5
YmFja1Nlc3Npb25Nb2RlbENsaWVudCo+IG1fY2xpZW50czsKICAgICBkb3VibGUgbV9kdXJhdGlv
biB7IDAgfTsKICAgICBkb3VibGUgbV9jdXJyZW50VGltZSB7IDAgfTsKICAgICBkb3VibGUgbV9i
dWZmZXJlZFRpbWUgeyAwIH07CkBAIC0xMjgsNiArMTMzLDggQEAgcHJpdmF0ZToKICAgICBWZWN0
b3I8V1RGOjpTdHJpbmc+IG1fbGVnaWJsZU1lZGlhU2VsZWN0aW9uT3B0aW9uczsKICAgICB1aW50
NjRfdCBtX2xlZ2libGVNZWRpYVNlbGVjdGVkSW5kZXggeyAwIH07CiAgICAgYm9vbCBtX2V4dGVy
bmFsUGxheWJhY2tFbmFibGVkIHsgZmFsc2UgfTsKKyAgICBXZWJQbGF5YmFja1Nlc3Npb25Nb2Rl
bDo6RXh0ZXJuYWxQbGF5YmFja1RhcmdldFR5cGUgbV9leHRlcm5hbFBsYXliYWNrVGFyZ2V0VHlw
ZSB7IFdlYlBsYXliYWNrU2Vzc2lvbk1vZGVsOjpUYXJnZXRUeXBlTm9uZSB9OworICAgIFN0cmlu
ZyBtX2V4dGVybmFsUGxheWJhY2tMb2NhbGl6ZWREZXZpY2VOYW1lOwogICAgIGJvb2wgbV93aXJl
bGVzc1ZpZGVvUGxheWJhY2tEaXNhYmxlZCB7IGZhbHNlIH07CiB9OwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29jb2EvV2ViUGxheWJhY2tTZXNzaW9uTWFuYWdlclBy
b3h5Lm1tIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0NvY29hL1dlYlBsYXliYWNrU2Vzc2lv
bk1hbmFnZXJQcm94eS5tbQppbmRleCA4YzFmYTBjMzBjOWYxYjUxNGEwZjU4NDZiNTAyYTAwYjc3
MjA4NDMyLi41Y2M5OGUzNmMwMjgyYzhhNTQ3YjdlYzE1NzI3NzRiOGM0MDE5MGZmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29jb2EvV2ViUGxheWJhY2tTZXNzaW9uTWFu
YWdlclByb3h5Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db2NvYS9XZWJQbGF5
YmFja1Nlc3Npb25NYW5hZ2VyUHJveHkubW0KQEAgLTQwLDYgKzQwLDE4IEBAIG5hbWVzcGFjZSBX
ZWJLaXQgewogCiAjcHJhZ21hIG1hcmsgLSBXZWJQbGF5YmFja1Nlc3Npb25Nb2RlbENvbnRleHQK
IAordm9pZCBXZWJQbGF5YmFja1Nlc3Npb25Nb2RlbENvbnRleHQ6OmFkZENsaWVudChXZWJQbGF5
YmFja1Nlc3Npb25Nb2RlbENsaWVudCYgY2xpZW50KQoreworICAgIEFTU0VSVCghbV9jbGllbnRz
LmNvbnRhaW5zKCZjbGllbnQpKTsKKyAgICBtX2NsaWVudHMuYWRkKCZjbGllbnQpOworfQorCit2
b2lkIFdlYlBsYXliYWNrU2Vzc2lvbk1vZGVsQ29udGV4dDo6cmVtb3ZlQ2xpZW50KFdlYlBsYXli
YWNrU2Vzc2lvbk1vZGVsQ2xpZW50JiBjbGllbnQpCit7CisgICAgQVNTRVJUKG1fY2xpZW50cy5j
b250YWlucygmY2xpZW50KSk7CisgICAgbV9jbGllbnRzLnJlbW92ZSgmY2xpZW50KTsKK30KKwog
dm9pZCBXZWJQbGF5YmFja1Nlc3Npb25Nb2RlbENvbnRleHQ6OnBsYXkoKQogewogICAgIGlmICht
X21hbmFnZXIpCkBAIC0xMTIsNiArMTI0LDg1IEBAIHZvaWQgV2ViUGxheWJhY2tTZXNzaW9uTW9k
ZWxDb250ZXh0OjpzZWxlY3RMZWdpYmxlTWVkaWFPcHRpb24odWludDY0X3Qgb3B0aW9uSWQpCiAg
ICAgICAgIG1fbWFuYWdlci0+c2VsZWN0TGVnaWJsZU1lZGlhT3B0aW9uKG1fY29udGV4dElkLCBv
cHRpb25JZCk7CiB9CiAKK3ZvaWQgV2ViUGxheWJhY2tTZXNzaW9uTW9kZWxDb250ZXh0OjpzZXRE
dXJhdGlvbihkb3VibGUgZHVyYXRpb24pCit7CisgICAgbV9kdXJhdGlvbiA9IGR1cmF0aW9uOwor
ICAgIGZvciAoYXV0byogY2xpZW50IDogbV9jbGllbnRzKQorICAgICAgICBjbGllbnQtPmR1cmF0
aW9uQ2hhbmdlZChkdXJhdGlvbik7Cit9CisKK3ZvaWQgV2ViUGxheWJhY2tTZXNzaW9uTW9kZWxD
b250ZXh0OjpzZXRDdXJyZW50VGltZShkb3VibGUgY3VycmVudFRpbWUpCit7CisgICAgbV9jdXJy
ZW50VGltZSA9IGN1cnJlbnRUaW1lOworICAgIGF1dG8gYW5jaG9yVGltZSA9IFtbTlNQcm9jZXNz
SW5mbyBwcm9jZXNzSW5mb10gc3lzdGVtVXB0aW1lXTsKKworICAgIGZvciAoYXV0byogY2xpZW50
IDogbV9jbGllbnRzKQorICAgICAgICBjbGllbnQtPmN1cnJlbnRUaW1lQ2hhbmdlZChjdXJyZW50
VGltZSwgYW5jaG9yVGltZSk7Cit9CisKK3ZvaWQgV2ViUGxheWJhY2tTZXNzaW9uTW9kZWxDb250
ZXh0OjpzZXRCdWZmZXJlZFRpbWUoZG91YmxlIGJ1ZmZlcmVkVGltZSkKK3sKKyAgICBtX2J1ZmZl
cmVkVGltZSA9IGJ1ZmZlcmVkVGltZTsKKyAgICBmb3IgKGF1dG8qIGNsaWVudCA6IG1fY2xpZW50
cykKKyAgICAgICAgY2xpZW50LT5idWZmZXJlZFRpbWVDaGFuZ2VkKGJ1ZmZlcmVkVGltZSk7Cit9
CisKK3ZvaWQgV2ViUGxheWJhY2tTZXNzaW9uTW9kZWxDb250ZXh0OjpzZXRSYXRlKGJvb2wgaXNQ
bGF5aW5nLCBmbG9hdCBwbGF5YmFja1JhdGUpCit7CisgICAgbV9pc1BsYXlpbmcgPSBpc1BsYXlp
bmc7CisgICAgbV9wbGF5YmFja1JhdGUgPSBwbGF5YmFja1JhdGU7CisgICAgZm9yIChhdXRvKiBj
bGllbnQgOiBtX2NsaWVudHMpCisgICAgICAgIGNsaWVudC0+cmF0ZUNoYW5nZWQoaXNQbGF5aW5n
LCBwbGF5YmFja1JhdGUpOworfQorCit2b2lkIFdlYlBsYXliYWNrU2Vzc2lvbk1vZGVsQ29udGV4
dDo6c2V0U2Vla2FibGVSYW5nZXMoV2ViQ29yZTo6VGltZVJhbmdlcyYgc2Vla2FibGVSYW5nZXMp
Cit7CisgICAgbV9zZWVrYWJsZVJhbmdlcyA9IHNlZWthYmxlUmFuZ2VzOworICAgIGZvciAoYXV0
byogY2xpZW50IDogbV9jbGllbnRzKQorICAgICAgICBjbGllbnQtPnNlZWthYmxlUmFuZ2VzQ2hh
bmdlZChzZWVrYWJsZVJhbmdlcyk7Cit9CisKK3ZvaWQgV2ViUGxheWJhY2tTZXNzaW9uTW9kZWxD
b250ZXh0OjpzZXRDYW5QbGF5RmFzdFJldmVyc2UoYm9vbCBjYW5QbGF5RmFzdFJldmVyc2UpCit7
CisgICAgbV9jYW5QbGF5RmFzdFJldmVyc2UgPSBjYW5QbGF5RmFzdFJldmVyc2U7CisgICAgZm9y
IChhdXRvKiBjbGllbnQgOiBtX2NsaWVudHMpCisgICAgICAgIGNsaWVudC0+Y2FuUGxheUZhc3RS
ZXZlcnNlQ2hhbmdlZChjYW5QbGF5RmFzdFJldmVyc2UpOworfQorCit2b2lkIFdlYlBsYXliYWNr
U2Vzc2lvbk1vZGVsQ29udGV4dDo6c2V0QXVkaW9NZWRpYVNlbGVjdGlvbk9wdGlvbnMoY29uc3Qg
VmVjdG9yPFdURjo6U3RyaW5nPiYgYXVkaW9NZWRpYVNlbGVjdGlvbk9wdGlvbnMsIHVpbnQ2NF90
IGF1ZGlvTWVkaWFTZWxlY3RlZEluZGV4KQoreworICAgIG1fYXVkaW9NZWRpYVNlbGVjdGlvbk9w
dGlvbnMgPSBhdWRpb01lZGlhU2VsZWN0aW9uT3B0aW9uczsKKyAgICBtX2F1ZGlvTWVkaWFTZWxl
Y3RlZEluZGV4ID0gYXVkaW9NZWRpYVNlbGVjdGVkSW5kZXg7CisgICAgZm9yIChhdXRvKiBjbGll
bnQgOiBtX2NsaWVudHMpCisgICAgICAgIGNsaWVudC0+YXVkaW9NZWRpYVNlbGVjdGlvbk9wdGlv
bnNDaGFuZ2VkKGF1ZGlvTWVkaWFTZWxlY3Rpb25PcHRpb25zLCBhdWRpb01lZGlhU2VsZWN0ZWRJ
bmRleCk7Cit9CisKK3ZvaWQgV2ViUGxheWJhY2tTZXNzaW9uTW9kZWxDb250ZXh0OjpzZXRMZWdp
YmxlTWVkaWFTZWxlY3Rpb25PcHRpb25zKGNvbnN0IFZlY3RvcjxXVEY6OlN0cmluZz4mIGxlZ2li
bGVNZWRpYVNlbGVjdGlvbk9wdGlvbnMsIHVpbnQ2NF90IGxlZ2libGVNZWRpYVNlbGVjdGVkSW5k
ZXgpCit7CisgICAgbV9sZWdpYmxlTWVkaWFTZWxlY3Rpb25PcHRpb25zID0gbGVnaWJsZU1lZGlh
U2VsZWN0aW9uT3B0aW9uczsKKyAgICBtX2xlZ2libGVNZWRpYVNlbGVjdGVkSW5kZXggPSBsZWdp
YmxlTWVkaWFTZWxlY3RlZEluZGV4OworCisgICAgZm9yIChhdXRvKiBjbGllbnQgOiBtX2NsaWVu
dHMpCisgICAgICAgIGNsaWVudC0+bGVnaWJsZU1lZGlhU2VsZWN0aW9uT3B0aW9uc0NoYW5nZWQo
bGVnaWJsZU1lZGlhU2VsZWN0aW9uT3B0aW9ucywgbGVnaWJsZU1lZGlhU2VsZWN0ZWRJbmRleCk7
Cit9CisKK3ZvaWQgV2ViUGxheWJhY2tTZXNzaW9uTW9kZWxDb250ZXh0OjpzZXRFeHRlcm5hbFBs
YXliYWNrKGJvb2wgZW5hYmxlZCwgV2ViUGxheWJhY2tTZXNzaW9uTW9kZWw6OkV4dGVybmFsUGxh
eWJhY2tUYXJnZXRUeXBlIHR5cGUsIGNvbnN0IFN0cmluZyYgbG9jYWxpemVkTmFtZSkKK3sKKyAg
ICBtX2V4dGVybmFsUGxheWJhY2tFbmFibGVkID0gZW5hYmxlZDsKKyAgICBtX2V4dGVybmFsUGxh
eWJhY2tUYXJnZXRUeXBlID0gdHlwZTsKKyAgICBtX2V4dGVybmFsUGxheWJhY2tMb2NhbGl6ZWRE
ZXZpY2VOYW1lID0gbG9jYWxpemVkTmFtZTsKKworICAgIGZvciAoYXV0byogY2xpZW50IDogbV9j
bGllbnRzKQorICAgICAgICBjbGllbnQtPmV4dGVybmFsUGxheWJhY2tDaGFuZ2VkKGVuYWJsZWQs
IHR5cGUsIGxvY2FsaXplZE5hbWUpOworfQorCit2b2lkIFdlYlBsYXliYWNrU2Vzc2lvbk1vZGVs
Q29udGV4dDo6c2V0V2lyZWxlc3NWaWRlb1BsYXliYWNrRGlzYWJsZWQoYm9vbCB3aXJlbGVzc1Zp
ZGVvUGxheWJhY2tEaXNhYmxlZCkKK3sKKyAgICBtX3dpcmVsZXNzVmlkZW9QbGF5YmFja0Rpc2Fi
bGVkID0gd2lyZWxlc3NWaWRlb1BsYXliYWNrRGlzYWJsZWQ7CisgICAgZm9yIChhdXRvKiBjbGll
bnQgOiBtX2NsaWVudHMpCisgICAgICAgIGNsaWVudC0+d2lyZWxlc3NWaWRlb1BsYXliYWNrRGlz
YWJsZWRDaGFuZ2VkKHdpcmVsZXNzVmlkZW9QbGF5YmFja0Rpc2FibGVkKTsKK30KKwogI3ByYWdt
YSBtYXJrIC0gV2ViUGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5CiAKIFJlZlB0cjxXZWJQbGF5
YmFja1Nlc3Npb25NYW5hZ2VyUHJveHk+IFdlYlBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eTo6
Y3JlYXRlKFdlYlBhZ2VQcm94eSYgcGFnZSkKQEAgLTE1Miw5ICsyNDMsNyBAQCB2b2lkIFdlYlBs
YXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eTo6aW52YWxpZGF0ZSgpCiBXZWJQbGF5YmFja1Nlc3Np
b25NYW5hZ2VyUHJveHk6Ok1vZGVsSW50ZXJmYWNlVHVwbGUgV2ViUGxheWJhY2tTZXNzaW9uTWFu
YWdlclByb3h5OjpjcmVhdGVNb2RlbEFuZEludGVyZmFjZSh1aW50NjRfdCBjb250ZXh0SWQpCiB7
CiAgICAgUmVmPFdlYlBsYXliYWNrU2Vzc2lvbk1vZGVsQ29udGV4dD4gbW9kZWwgPSBXZWJQbGF5
YmFja1Nlc3Npb25Nb2RlbENvbnRleHQ6OmNyZWF0ZSgqdGhpcywgY29udGV4dElkKTsKLSAgICBS
ZWY8UGxhdGZvcm1XZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2U+IGludGVyZmFjZSA9IFBsYXRm
b3JtV2ViUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlOjpjcmVhdGUoKTsKLQotICAgIGludGVyZmFj
ZS0+c2V0V2ViUGxheWJhY2tTZXNzaW9uTW9kZWwoJm1vZGVsLmdldCgpKTsKKyAgICBSZWY8UGxh
dGZvcm1XZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2U+IGludGVyZmFjZSA9IFBsYXRmb3JtV2Vi
UGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlOjpjcmVhdGUobW9kZWwpOwogCiAgICAgcmV0dXJuIHN0
ZDo6bWFrZV90dXBsZShXVEZNb3ZlKG1vZGVsKSwgV1RGTW92ZShpbnRlcmZhY2UpKTsKIH0KQEAg
LTE5NCw2ICsyODMsMTEgQEAgdm9pZCBXZWJQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHk6OnJl
bW92ZUNsaWVudEZvckNvbnRleHQodWludDY0X3QgY29udGV4dElkKQogCiAgICAgaWYgKGNsaWVu
dENvdW50IDw9IDApIHsKICAgICAgICAgbV9jbGllbnRDb3VudHMucmVtb3ZlKGNvbnRleHRJZCk7
CisKKyAgICAgICAgUmVmUHRyPFdlYlBsYXliYWNrU2Vzc2lvbk1vZGVsQ29udGV4dD4gbW9kZWw7
CisgICAgICAgIFJlZlB0cjxQbGF0Zm9ybVdlYlBsYXliYWNrU2Vzc2lvbkludGVyZmFjZT4gaW50
ZXJmYWNlOworICAgICAgICBzdGQ6OnRpZShtb2RlbCwgaW50ZXJmYWNlKSA9IGVuc3VyZU1vZGVs
QW5kSW50ZXJmYWNlKGNvbnRleHRJZCk7CisgICAgICAgIGludGVyZmFjZS0+aW52YWxpZGF0ZSgp
OwogICAgICAgICBtX2NvbnRleHRNYXAucmVtb3ZlKGNvbnRleHRJZCk7CiAgICAgICAgIHJldHVy
bjsKICAgICB9CkBAIC0yNDEsMjAgKzMzNSwxMiBAQCB2b2lkIFdlYlBsYXliYWNrU2Vzc2lvbk1h
bmFnZXJQcm94eTo6cmVzZXRNZWRpYVN0YXRlKHVpbnQ2NF90IGNvbnRleHRJZCkKIAogdm9pZCBX
ZWJQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHk6OnNldEN1cnJlbnRUaW1lKHVpbnQ2NF90IGNv
bnRleHRJZCwgZG91YmxlIGN1cnJlbnRUaW1lLCBkb3VibGUgaG9zdFRpbWUpCiB7Ci0gICAgUmVm
UHRyPFdlYlBsYXliYWNrU2Vzc2lvbk1vZGVsQ29udGV4dD4gbW9kZWw7Ci0gICAgUmVmUHRyPFBs
YXRmb3JtV2ViUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlPiBpbnRlcmZhY2U7Ci0gICAgc3RkOjp0
aWUobW9kZWwsIGludGVyZmFjZSkgPSBlbnN1cmVNb2RlbEFuZEludGVyZmFjZShjb250ZXh0SWQp
OwotICAgIG1vZGVsLT5zZXRDdXJyZW50VGltZShjdXJyZW50VGltZSk7Ci0gICAgaW50ZXJmYWNl
LT5zZXRDdXJyZW50VGltZShjdXJyZW50VGltZSwgaG9zdFRpbWUpOworICAgIGVuc3VyZU1vZGVs
KGNvbnRleHRJZCkuc2V0Q3VycmVudFRpbWUoY3VycmVudFRpbWUpOwogfQogCiB2b2lkIFdlYlBs
YXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eTo6c2V0QnVmZmVyZWRUaW1lKHVpbnQ2NF90IGNvbnRl
eHRJZCwgZG91YmxlIGJ1ZmZlcmVkVGltZSkKIHsKLSAgICBSZWZQdHI8V2ViUGxheWJhY2tTZXNz
aW9uTW9kZWxDb250ZXh0PiBtb2RlbDsKLSAgICBSZWZQdHI8UGxhdGZvcm1XZWJQbGF5YmFja1Nl
c3Npb25JbnRlcmZhY2U+IGludGVyZmFjZTsKLSAgICBzdGQ6OnRpZShtb2RlbCwgaW50ZXJmYWNl
KSA9IGVuc3VyZU1vZGVsQW5kSW50ZXJmYWNlKGNvbnRleHRJZCk7Ci0gICAgbW9kZWwtPnNldEJ1
ZmZlcmVkVGltZShidWZmZXJlZFRpbWUpOwotICAgIGludGVyZmFjZS0+c2V0QnVmZmVyZWRUaW1l
KGJ1ZmZlcmVkVGltZSk7CisgICAgZW5zdXJlTW9kZWwoY29udGV4dElkKS5zZXRCdWZmZXJlZFRp
bWUoYnVmZmVyZWRUaW1lKTsKIH0KIAogdm9pZCBXZWJQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJv
eHk6OnNldFNlZWthYmxlUmFuZ2VzVmVjdG9yKHVpbnQ2NF90IGNvbnRleHRJZCwgVmVjdG9yPHN0
ZDo6cGFpcjxkb3VibGUsIGRvdWJsZT4+IHJhbmdlcykKQEAgLTI2Nyw4MCArMzUzLDQ1IEBAIHZv
aWQgV2ViUGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5OjpzZXRTZWVrYWJsZVJhbmdlc1ZlY3Rv
cih1aW50NjRfdCBjb250ZXh0SWQsCiAgICAgICAgIHRpbWVSYW5nZXMtPmFkZChyYW5nZS5maXJz
dCwgcmFuZ2Uuc2Vjb25kKTsKICAgICB9CiAKLSAgICBSZWZQdHI8V2ViUGxheWJhY2tTZXNzaW9u
TW9kZWxDb250ZXh0PiBtb2RlbDsKLSAgICBSZWZQdHI8UGxhdGZvcm1XZWJQbGF5YmFja1Nlc3Np
b25JbnRlcmZhY2U+IGludGVyZmFjZTsKLSAgICBzdGQ6OnRpZShtb2RlbCwgaW50ZXJmYWNlKSA9
IGVuc3VyZU1vZGVsQW5kSW50ZXJmYWNlKGNvbnRleHRJZCk7Ci0gICAgbW9kZWwtPnNldFNlZWth
YmxlUmFuZ2VzKHRpbWVSYW5nZXMpOwotICAgIGludGVyZmFjZS0+c2V0U2Vla2FibGVSYW5nZXMo
dGltZVJhbmdlcyk7CisgICAgZW5zdXJlTW9kZWwoY29udGV4dElkKS5zZXRTZWVrYWJsZVJhbmdl
cyh0aW1lUmFuZ2VzKTsKIH0KIAogdm9pZCBXZWJQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHk6
OnNldENhblBsYXlGYXN0UmV2ZXJzZSh1aW50NjRfdCBjb250ZXh0SWQsIGJvb2wgdmFsdWUpCiB7
Ci0gICAgUmVmUHRyPFdlYlBsYXliYWNrU2Vzc2lvbk1vZGVsQ29udGV4dD4gbW9kZWw7Ci0gICAg
UmVmUHRyPFBsYXRmb3JtV2ViUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlPiBpbnRlcmZhY2U7Ci0g
ICAgc3RkOjp0aWUobW9kZWwsIGludGVyZmFjZSkgPSBlbnN1cmVNb2RlbEFuZEludGVyZmFjZShj
b250ZXh0SWQpOwotICAgIG1vZGVsLT5zZXRDYW5QbGF5RmFzdFJldmVyc2UodmFsdWUpOwotICAg
IGludGVyZmFjZS0+c2V0Q2FuUGxheUZhc3RSZXZlcnNlKHZhbHVlKTsKKyAgICBlbnN1cmVNb2Rl
bChjb250ZXh0SWQpLnNldENhblBsYXlGYXN0UmV2ZXJzZSh2YWx1ZSk7CiB9CiAKIHZvaWQgV2Vi
UGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5OjpzZXRBdWRpb01lZGlhU2VsZWN0aW9uT3B0aW9u
cyh1aW50NjRfdCBjb250ZXh0SWQsIFZlY3RvcjxTdHJpbmc+IG9wdGlvbnMsIHVpbnQ2NF90IHNl
bGVjdGVkSW5kZXgpCiB7Ci0gICAgUmVmUHRyPFdlYlBsYXliYWNrU2Vzc2lvbk1vZGVsQ29udGV4
dD4gbW9kZWw7Ci0gICAgUmVmUHRyPFBsYXRmb3JtV2ViUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNl
PiBpbnRlcmZhY2U7Ci0gICAgc3RkOjp0aWUobW9kZWwsIGludGVyZmFjZSkgPSBlbnN1cmVNb2Rl
bEFuZEludGVyZmFjZShjb250ZXh0SWQpOwotICAgIG1vZGVsLT5zZXRBdWRpb01lZGlhU2VsZWN0
aW9uT3B0aW9ucyhvcHRpb25zKTsKLSAgICBtb2RlbC0+c2V0QXVkaW9NZWRpYVNlbGVjdGVkSW5k
ZXgoc2VsZWN0ZWRJbmRleCk7Ci0gICAgaW50ZXJmYWNlLT5zZXRBdWRpb01lZGlhU2VsZWN0aW9u
T3B0aW9ucyhvcHRpb25zLCBzZWxlY3RlZEluZGV4KTsKKyAgICBlbnN1cmVNb2RlbChjb250ZXh0
SWQpLnNldEF1ZGlvTWVkaWFTZWxlY3Rpb25PcHRpb25zKG9wdGlvbnMsIHNlbGVjdGVkSW5kZXgp
OwogfQogCiB2b2lkIFdlYlBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eTo6c2V0TGVnaWJsZU1l
ZGlhU2VsZWN0aW9uT3B0aW9ucyh1aW50NjRfdCBjb250ZXh0SWQsIFZlY3RvcjxTdHJpbmc+IG9w
dGlvbnMsIHVpbnQ2NF90IHNlbGVjdGVkSW5kZXgpCiB7Ci0gICAgUmVmUHRyPFdlYlBsYXliYWNr
U2Vzc2lvbk1vZGVsQ29udGV4dD4gbW9kZWw7Ci0gICAgUmVmUHRyPFBsYXRmb3JtV2ViUGxheWJh
Y2tTZXNzaW9uSW50ZXJmYWNlPiBpbnRlcmZhY2U7Ci0gICAgc3RkOjp0aWUobW9kZWwsIGludGVy
ZmFjZSkgPSBlbnN1cmVNb2RlbEFuZEludGVyZmFjZShjb250ZXh0SWQpOwotICAgIG1vZGVsLT5z
ZXRMZWdpYmxlTWVkaWFTZWxlY3Rpb25PcHRpb25zKG9wdGlvbnMpOwotICAgIG1vZGVsLT5zZXRM
ZWdpYmxlTWVkaWFTZWxlY3RlZEluZGV4KHNlbGVjdGVkSW5kZXgpOwotICAgIGludGVyZmFjZS0+
c2V0TGVnaWJsZU1lZGlhU2VsZWN0aW9uT3B0aW9ucyhvcHRpb25zLCBzZWxlY3RlZEluZGV4KTsK
KyAgICBlbnN1cmVNb2RlbChjb250ZXh0SWQpLnNldExlZ2libGVNZWRpYVNlbGVjdGlvbk9wdGlv
bnMob3B0aW9ucywgc2VsZWN0ZWRJbmRleCk7CiB9CiAKIHZvaWQgV2ViUGxheWJhY2tTZXNzaW9u
TWFuYWdlclByb3h5OjpzZXRFeHRlcm5hbFBsYXliYWNrUHJvcGVydGllcyh1aW50NjRfdCBjb250
ZXh0SWQsIGJvb2wgZW5hYmxlZCwgdWludDMyX3QgdGFyZ2V0VHlwZSwgU3RyaW5nIGxvY2FsaXpl
ZERldmljZU5hbWUpCiB7Ci0gICAgV2ViUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlOjpFeHRlcm5h
bFBsYXliYWNrVGFyZ2V0VHlwZSB0eXBlID0gc3RhdGljX2Nhc3Q8V2ViUGxheWJhY2tTZXNzaW9u
SW50ZXJmYWNlOjpFeHRlcm5hbFBsYXliYWNrVGFyZ2V0VHlwZT4odGFyZ2V0VHlwZSk7Ci0gICAg
QVNTRVJUKHR5cGUgPT0gV2ViUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlOjpUYXJnZXRUeXBlQWly
UGxheSB8fCB0eXBlID09IFdlYlBsYXliYWNrU2Vzc2lvbkludGVyZmFjZTo6VGFyZ2V0VHlwZVRW
T3V0IHx8IHR5cGUgPT0gV2ViUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlOjpUYXJnZXRUeXBlTm9u
ZSk7CisgICAgV2ViUGxheWJhY2tTZXNzaW9uTW9kZWw6OkV4dGVybmFsUGxheWJhY2tUYXJnZXRU
eXBlIHR5cGUgPSBzdGF0aWNfY2FzdDxXZWJQbGF5YmFja1Nlc3Npb25Nb2RlbDo6RXh0ZXJuYWxQ
bGF5YmFja1RhcmdldFR5cGU+KHRhcmdldFR5cGUpOworICAgIEFTU0VSVCh0eXBlID09IFdlYlBs
YXliYWNrU2Vzc2lvbk1vZGVsOjpUYXJnZXRUeXBlQWlyUGxheSB8fCB0eXBlID09IFdlYlBsYXli
YWNrU2Vzc2lvbk1vZGVsOjpUYXJnZXRUeXBlVFZPdXQgfHwgdHlwZSA9PSBXZWJQbGF5YmFja1Nl
c3Npb25Nb2RlbDo6VGFyZ2V0VHlwZU5vbmUpOwogCi0gICAgUmVmUHRyPFdlYlBsYXliYWNrU2Vz
c2lvbk1vZGVsQ29udGV4dD4gbW9kZWw7Ci0gICAgUmVmUHRyPFBsYXRmb3JtV2ViUGxheWJhY2tT
ZXNzaW9uSW50ZXJmYWNlPiBpbnRlcmZhY2U7Ci0gICAgc3RkOjp0aWUobW9kZWwsIGludGVyZmFj
ZSkgPSBlbnN1cmVNb2RlbEFuZEludGVyZmFjZShjb250ZXh0SWQpOwotICAgIG1vZGVsLT5zZXRF
eHRlcm5hbFBsYXliYWNrRW5hYmxlZChlbmFibGVkKTsKLSAgICBpbnRlcmZhY2UtPnNldEV4dGVy
bmFsUGxheWJhY2soZW5hYmxlZCwgdHlwZSwgbG9jYWxpemVkRGV2aWNlTmFtZSk7CisgICAgZW5z
dXJlTW9kZWwoY29udGV4dElkKS5zZXRFeHRlcm5hbFBsYXliYWNrKGVuYWJsZWQsIHR5cGUsIGxv
Y2FsaXplZERldmljZU5hbWUpOwogfQogCiB2b2lkIFdlYlBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQ
cm94eTo6c2V0V2lyZWxlc3NWaWRlb1BsYXliYWNrRGlzYWJsZWQodWludDY0X3QgY29udGV4dElk
LCBib29sIGRpc2FibGVkKQogewotICAgIFJlZlB0cjxXZWJQbGF5YmFja1Nlc3Npb25Nb2RlbENv
bnRleHQ+IG1vZGVsOwotICAgIFJlZlB0cjxQbGF0Zm9ybVdlYlBsYXliYWNrU2Vzc2lvbkludGVy
ZmFjZT4gaW50ZXJmYWNlOwotICAgIHN0ZDo6dGllKG1vZGVsLCBpbnRlcmZhY2UpID0gZW5zdXJl
TW9kZWxBbmRJbnRlcmZhY2UoY29udGV4dElkKTsKLSAgICBtb2RlbC0+c2V0V2lyZWxlc3NWaWRl
b1BsYXliYWNrRGlzYWJsZWQoZGlzYWJsZWQpOwotICAgIGludGVyZmFjZS0+c2V0V2lyZWxlc3NW
aWRlb1BsYXliYWNrRGlzYWJsZWQoZGlzYWJsZWQpOworICAgIGVuc3VyZU1vZGVsKGNvbnRleHRJ
ZCkuc2V0V2lyZWxlc3NWaWRlb1BsYXliYWNrRGlzYWJsZWQoZGlzYWJsZWQpOwogfQogCiB2b2lk
IFdlYlBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eTo6c2V0RHVyYXRpb24odWludDY0X3QgY29u
dGV4dElkLCBkb3VibGUgZHVyYXRpb24pCiB7Ci0gICAgUmVmUHRyPFdlYlBsYXliYWNrU2Vzc2lv
bk1vZGVsQ29udGV4dD4gbW9kZWw7Ci0gICAgUmVmUHRyPFBsYXRmb3JtV2ViUGxheWJhY2tTZXNz
aW9uSW50ZXJmYWNlPiBpbnRlcmZhY2U7Ci0gICAgc3RkOjp0aWUobW9kZWwsIGludGVyZmFjZSkg
PSBlbnN1cmVNb2RlbEFuZEludGVyZmFjZShjb250ZXh0SWQpOwotICAgIG1vZGVsLT5zZXREdXJh
dGlvbihkdXJhdGlvbik7Ci0gICAgaW50ZXJmYWNlLT5zZXREdXJhdGlvbihkdXJhdGlvbik7Cisg
ICAgZW5zdXJlTW9kZWwoY29udGV4dElkKS5zZXREdXJhdGlvbihkdXJhdGlvbik7CiB9CiAKIHZv
aWQgV2ViUGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5OjpzZXRSYXRlKHVpbnQ2NF90IGNvbnRl
eHRJZCwgYm9vbCBpc1BsYXlpbmcsIGRvdWJsZSByYXRlKQogewotICAgIFJlZlB0cjxXZWJQbGF5
YmFja1Nlc3Npb25Nb2RlbENvbnRleHQ+IG1vZGVsOwotICAgIFJlZlB0cjxQbGF0Zm9ybVdlYlBs
YXliYWNrU2Vzc2lvbkludGVyZmFjZT4gaW50ZXJmYWNlOwotICAgIHN0ZDo6dGllKG1vZGVsLCBp
bnRlcmZhY2UpID0gZW5zdXJlTW9kZWxBbmRJbnRlcmZhY2UoY29udGV4dElkKTsKLSAgICBtb2Rl
bC0+c2V0SXNQbGF5aW5nKGlzUGxheWluZyk7Ci0gICAgbW9kZWwtPnNldFBsYXliYWNrUmF0ZShy
YXRlKTsKLSAgICBpbnRlcmZhY2UtPnNldFJhdGUoaXNQbGF5aW5nLCByYXRlKTsKKyAgICBlbnN1
cmVNb2RlbChjb250ZXh0SWQpLnNldFJhdGUoaXNQbGF5aW5nLCByYXRlKTsKIH0KIAogI3ByYWdt
YSBtYXJrIE1lc3NhZ2VzIHRvIFdlYlBsYXliYWNrU2Vzc2lvbk1hbmFnZXIKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db2NvYS9XZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2Vy
UHJveHkuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db2NvYS9XZWJWaWRlb0Z1bGxzY3Jl
ZW5NYW5hZ2VyUHJveHkuaAppbmRleCA4MjFlMjU5MjQ5YjgzM2FmYTIzMDgzMDk4MWQ3MWJiNGYz
Zjg1Y2QzLi5mNWMwMmU3ZGQxOTk0MTFjZWQyMDg3M2MyMDg1YzdlMTM2NDcwYTYyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29jb2EvV2ViVmlkZW9GdWxsc2NyZWVuTWFu
YWdlclByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0NvY29hL1dlYlZpZGVv
RnVsbHNjcmVlbk1hbmFnZXJQcm94eS5oCkBAIC0zNCw2ICszNCw3IEBACiAjaW5jbHVkZSA8V2Vi
Q29yZS9XZWJWaWRlb0Z1bGxzY3JlZW5DaGFuZ2VPYnNlcnZlci5oPgogI2luY2x1ZGUgPFdlYkNv
cmUvV2ViVmlkZW9GdWxsc2NyZWVuTW9kZWwuaD4KICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgor
I2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KICNp
bmNsdWRlIDx3dGYvUmVmUHRyLmg+CiAKQEAgLTU2LDcgKzU3LDEwIEBAIGNsYXNzIFdlYlBsYXli
YWNrU2Vzc2lvbk1hbmFnZXJQcm94eTsKIGNsYXNzIFdlYlBsYXliYWNrU2Vzc2lvbk1vZGVsQ29u
dGV4dDsKIGNsYXNzIFdlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eTsKIAotY2xhc3MgV2Vi
VmlkZW9GdWxsc2NyZWVuTW9kZWxDb250ZXh0IGZpbmFsOiBwdWJsaWMgUmVmQ291bnRlZDxXZWJW
aWRlb0Z1bGxzY3JlZW5Nb2RlbENvbnRleHQ+LCBwdWJsaWMgV2ViQ29yZTo6V2ViVmlkZW9GdWxs
c2NyZWVuTW9kZWwsIHB1YmxpYyBXZWJDb3JlOjpXZWJWaWRlb0Z1bGxzY3JlZW5DaGFuZ2VPYnNl
cnZlciAgeworY2xhc3MgV2ViVmlkZW9GdWxsc2NyZWVuTW9kZWxDb250ZXh0IGZpbmFsCisgICAg
OiBwdWJsaWMgUmVmQ291bnRlZDxXZWJWaWRlb0Z1bGxzY3JlZW5Nb2RlbENvbnRleHQ+CisgICAg
LCBwdWJsaWMgV2ViQ29yZTo6V2ViVmlkZW9GdWxsc2NyZWVuTW9kZWwKKyAgICAsIHB1YmxpYyBX
ZWJDb3JlOjpXZWJWaWRlb0Z1bGxzY3JlZW5DaGFuZ2VPYnNlcnZlciAgewogcHVibGljOgogICAg
IHN0YXRpYyBSZWY8V2ViVmlkZW9GdWxsc2NyZWVuTW9kZWxDb250ZXh0PiBjcmVhdGUoV2ViVmlk
ZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5JiBtYW5hZ2VyLCBXZWJQbGF5YmFja1Nlc3Npb25Nb2Rl
bENvbnRleHQmIHBsYXliYWNrU2Vzc2lvbk1vZGVsLCB1aW50NjRfdCBjb250ZXh0SWQpCiAgICAg
ewpAQCAtNzMsMTEgKzc3LDE1IEBAIHByaXZhdGU6CiAgICAgV2ViVmlkZW9GdWxsc2NyZWVuTW9k
ZWxDb250ZXh0KFdlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eSYsIFdlYlBsYXliYWNrU2Vz
c2lvbk1vZGVsQ29udGV4dCYsIHVpbnQ2NF90KTsKIAogICAgIC8vIFdlYlZpZGVvRnVsbHNjcmVl
bk1vZGVsCisgICAgdm9pZCBhZGRDbGllbnQoV2ViQ29yZTo6V2ViVmlkZW9GdWxsc2NyZWVuTW9k
ZWxDbGllbnQmKSBvdmVycmlkZTsKKyAgICB2b2lkIHJlbW92ZUNsaWVudChXZWJDb3JlOjpXZWJW
aWRlb0Z1bGxzY3JlZW5Nb2RlbENsaWVudCYpIG92ZXJyaWRlOwogICAgIHZvaWQgcmVxdWVzdEZ1
bGxzY3JlZW5Nb2RlKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnRFbnVtczo6VmlkZW9GdWxsc2Ny
ZWVuTW9kZSkgb3ZlcnJpZGU7CiAgICAgdm9pZCBzZXRWaWRlb0xheWVyRnJhbWUoV2ViQ29yZTo6
RmxvYXRSZWN0KSBvdmVycmlkZTsKICAgICB2b2lkIHNldFZpZGVvTGF5ZXJHcmF2aXR5KFZpZGVv
R3Jhdml0eSkgb3ZlcnJpZGU7CiAgICAgdm9pZCBmdWxsc2NyZWVuTW9kZUNoYW5nZWQoV2ViQ29y
ZTo6SFRNTE1lZGlhRWxlbWVudEVudW1zOjpWaWRlb0Z1bGxzY3JlZW5Nb2RlKSBvdmVycmlkZTsK
ICAgICBib29sIGlzVmlzaWJsZSgpIGNvbnN0IG92ZXJyaWRlOworICAgIGJvb2wgaGFzVmlkZW8o
KSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX2hhc1ZpZGVvOyB9CisgICAgV2ViQ29yZTo6Rmxv
YXRTaXplIHZpZGVvRGltZW5zaW9ucygpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1fdmlkZW9E
aW1lbnNpb25zOyB9CiAKICAgICAvLyBXZWJWaWRlb0Z1bGxzY3JlZW5DaGFuZ2VPYnNlcnZlcgog
ICAgIHZvaWQgZGlkU2V0dXBGdWxsc2NyZWVuKCkgb3ZlcnJpZGU7CkBAIC05MCw2ICs5OCw5IEBA
IHByaXZhdGU6CiAgICAgUmVmPFdlYlBsYXliYWNrU2Vzc2lvbk1vZGVsQ29udGV4dD4gbV9wbGF5
YmFja1Nlc3Npb25Nb2RlbDsKICAgICB1aW50NjRfdCBtX2NvbnRleHRJZDsKICAgICBSZXRhaW5Q
dHI8UGxhdGZvcm1WaWV3ICo+IG1fbGF5ZXJIb3N0VmlldzsKKyAgICBIYXNoU2V0PFdlYkNvcmU6
OldlYlZpZGVvRnVsbHNjcmVlbk1vZGVsQ2xpZW50Kj4gbV9jbGllbnRzOworICAgIFdlYkNvcmU6
OkZsb2F0U2l6ZSBtX3ZpZGVvRGltZW5zaW9uczsKKyAgICBib29sIG1faGFzVmlkZW8geyBmYWxz
ZSB9OwogfTsKIAogY2xhc3MgV2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5IDogcHVibGlj
IFJlZkNvdW50ZWQ8V2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5PiwgcHJpdmF0ZSBJUEM6
Ok1lc3NhZ2VSZWNlaXZlciB7CkBAIC0xMjUsNyArMTM2LDggQEAgcHJpdmF0ZToKIAogICAgIC8v
IE1lc3NhZ2VzIGZyb20gV2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlcgogICAgIHZvaWQgc2V0dXBG
dWxsc2NyZWVuV2l0aElEKHVpbnQ2NF90IGNvbnRleHRJZCwgdWludDMyX3QgdmlkZW9MYXllcklE
LCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiBpbml0aWFsUmVjdCwgZmxvYXQgaG9zdGluZ1NjYWxl
RmFjdG9yLCBXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50RW51bXM6OlZpZGVvRnVsbHNjcmVlbk1v
ZGUsIGJvb2wgYWxsb3dzUGljdHVyZUluUGljdHVyZSk7Ci0gICAgdm9pZCBzZXRWaWRlb0RpbWVu
c2lvbnModWludDY0X3QgY29udGV4dElkLCBib29sIGhhc1ZpZGVvLCB1bnNpZ25lZCB3aWR0aCwg
dW5zaWduZWQgaGVpZ2h0KTsKKyAgICB2b2lkIHNldEhhc1ZpZGVvKHVpbnQ2NF90IGNvbnRleHRJ
ZCwgYm9vbCk7CisgICAgdm9pZCBzZXRWaWRlb0RpbWVuc2lvbnModWludDY0X3QgY29udGV4dElk
LCBjb25zdCBXZWJDb3JlOjpGbG9hdFNpemUmKTsKICAgICB2b2lkIGVudGVyRnVsbHNjcmVlbih1
aW50NjRfdCBjb250ZXh0SWQpOwogICAgIHZvaWQgZXhpdEZ1bGxzY3JlZW4odWludDY0X3QgY29u
dGV4dElkLCBXZWJDb3JlOjpJbnRSZWN0IGZpbmFsUmVjdCk7CiAgICAgdm9pZCBjbGVhbnVwRnVs
bHNjcmVlbih1aW50NjRfdCBjb250ZXh0SWQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0NvY29hL1dlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eS5tZXNzYWdlcy5p
biBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db2NvYS9XZWJWaWRlb0Z1bGxzY3JlZW5NYW5h
Z2VyUHJveHkubWVzc2FnZXMuaW4KaW5kZXggZTQ5NjY4MGI1MjkzOTMyNzU3ZWQ3ZDVmYmQyYTY2
NWM2MjkzMzBlZi4uZjI4MTVkNjcyMzhlOWQzYWZmY2YwMWY0ZjRkYmQ0MDUyNDA4NDRjZiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0NvY29hL1dlYlZpZGVvRnVsbHNjcmVl
bk1hbmFnZXJQcm94eS5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
Q29jb2EvV2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5Lm1lc3NhZ2VzLmluCkBAIC0yMiw3
ICsyMiw4IEBACiAKICNpZiAoUExBVEZPUk0oSU9TKSAmJiBIQVZFKEFWS0lUKSkgfHwgKFBMQVRG
T1JNKE1BQykgJiYgRU5BQkxFKFZJREVPX1BSRVNFTlRBVElPTl9NT0RFKSkKIG1lc3NhZ2VzIC0+
IFdlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eSB7Ci0gICAgU2V0VmlkZW9EaW1lbnNpb25z
KHVpbnQ2NF90IGNvbnRleHRJZCwgYm9vbCBoYXNWaWRlbywgdW5zaWduZWQgd2lkdGgsIHVuc2ln
bmVkIGhlaWdodCkKKyAgICBTZXRIYXNWaWRlbyh1aW50NjRfdCBjb250ZXh0SWQsIGJvb2wgaGFz
VmlkZW8pCisgICAgU2V0VmlkZW9EaW1lbnNpb25zKHVpbnQ2NF90IGNvbnRleHRJZCwgV2ViQ29y
ZTo6RmxvYXRTaXplIHZpZGVvRGltZW5zaW9ucykKICAgICBTZXR1cEZ1bGxzY3JlZW5XaXRoSUQo
dWludDY0X3QgY29udGV4dElkLCB1aW50MzJfdCB2aWRlb0xheWVySUQsIFdlYkNvcmU6OkludFJl
Y3QgaW5pdGlhbFJlY3QsIGZsb2F0IGhvc3RpbmdTY2FsZUZhY3RvciwgV2ViQ29yZTo6SFRNTE1l
ZGlhRWxlbWVudEVudW1zOjpWaWRlb0Z1bGxzY3JlZW5Nb2RlIHZpZGVvRnVsbHNjcmVlbk1vZGUs
IGJvb2wgYWxsb3dzUGljdHVyZUluUGljdHVyZSkKICAgICBFbnRlckZ1bGxzY3JlZW4odWludDY0
X3QgY29udGV4dElkKQogICAgIEV4aXRGdWxsc2NyZWVuKHVpbnQ2NF90IGNvbnRleHRJZCwgV2Vi
Q29yZTo6SW50UmVjdCBmaW5hbFJlY3QpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQ29jb2EvV2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5Lm1tIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0NvY29hL1dlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eS5tbQpp
bmRleCBjNDI4NmJmZWJlOTdmOWM2YTkzMDY1NDkwNjY0NWQwY2M5Yjg2YWM5Li4wMTJjNzllOTkx
NGE5NGRiZjA4M2UxMDk4NTZhNDI1NDVjMjZjOWI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQ29jb2EvV2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5Lm1tCisrKyBi
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db2NvYS9XZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2Vy
UHJveHkubW0KQEAgLTEyNCw2ICsxMjQsMTggQEAgV2ViVmlkZW9GdWxsc2NyZWVuTW9kZWxDb250
ZXh0Ojp+V2ViVmlkZW9GdWxsc2NyZWVuTW9kZWxDb250ZXh0KCkKIHsKIH0KIAordm9pZCBXZWJW
aWRlb0Z1bGxzY3JlZW5Nb2RlbENvbnRleHQ6OmFkZENsaWVudChXZWJWaWRlb0Z1bGxzY3JlZW5N
b2RlbENsaWVudCYgY2xpZW50KQoreworICAgIEFTU0VSVCghbV9jbGllbnRzLmNvbnRhaW5zKCZj
bGllbnQpKTsKKyAgICBtX2NsaWVudHMuYWRkKCZjbGllbnQpOworfQorCit2b2lkIFdlYlZpZGVv
RnVsbHNjcmVlbk1vZGVsQ29udGV4dDo6cmVtb3ZlQ2xpZW50KFdlYlZpZGVvRnVsbHNjcmVlbk1v
ZGVsQ2xpZW50JiBjbGllbnQpCit7CisgICAgQVNTRVJUKG1fY2xpZW50cy5jb250YWlucygmY2xp
ZW50KSk7CisgICAgbV9jbGllbnRzLnJlbW92ZSgmY2xpZW50KTsKK30KKwogdm9pZCBXZWJWaWRl
b0Z1bGxzY3JlZW5Nb2RlbENvbnRleHQ6OnJlcXVlc3RGdWxsc2NyZWVuTW9kZShIVE1MTWVkaWFF
bGVtZW50RW51bXM6OlZpZGVvRnVsbHNjcmVlbk1vZGUgbW9kZSkKIHsKICAgICBpZiAobV9tYW5h
Z2VyKQpAQCAtMzU4LDkgKzM3MCwxNCBAQCB2b2lkIFdlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQ
cm94eTo6c2V0dXBGdWxsc2NyZWVuV2l0aElEKHVpbnQ2NF90IGNvbnRleHRJZCwgdQogI2VuZGlm
CiB9CiAKLXZvaWQgV2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5OjpzZXRWaWRlb0RpbWVu
c2lvbnModWludDY0X3QgY29udGV4dElkLCBib29sIGhhc1ZpZGVvLCB1bnNpZ25lZCB3aWR0aCwg
dW5zaWduZWQgaGVpZ2h0KQordm9pZCBXZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHk6OnNl
dEhhc1ZpZGVvKHVpbnQ2NF90IGNvbnRleHRJZCwgYm9vbCBoYXNWaWRlbykKK3sKKyAgICBlbnN1
cmVJbnRlcmZhY2UoY29udGV4dElkKS5oYXNWaWRlb0NoYW5nZWQoaGFzVmlkZW8pOworfQorCit2
b2lkIFdlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eTo6c2V0VmlkZW9EaW1lbnNpb25zKHVp
bnQ2NF90IGNvbnRleHRJZCwgY29uc3QgRmxvYXRTaXplJiB2aWRlb0RpbWVuc2lvbnMpCiB7Ci0g
ICAgZW5zdXJlSW50ZXJmYWNlKGNvbnRleHRJZCkuc2V0VmlkZW9EaW1lbnNpb25zKGhhc1ZpZGVv
LCB3aWR0aCwgaGVpZ2h0KTsKKyAgICBlbnN1cmVJbnRlcmZhY2UoY29udGV4dElkKS52aWRlb0Rp
bWVuc2lvbnNDaGFuZ2VkKHZpZGVvRGltZW5zaW9ucyk7CiB9CiAKIHZvaWQgV2ViVmlkZW9GdWxs
c2NyZWVuTWFuYWdlclByb3h5OjplbnRlckZ1bGxzY3JlZW4odWludDY0X3QgY29udGV4dElkKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9jb2NvYS9XZWJQbGF5YmFja1Nl
c3Npb25NYW5hZ2VyLmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL2NvY29hL1dlYlBsYXli
YWNrU2Vzc2lvbk1hbmFnZXIuaAppbmRleCAwMWZmZWQyMTllMWVhNzM3YTIwZmQ5NmUzYzAzMDFh
ODJmZDA2MDEwLi4wNzExNmFhZmMwZjZmZmY2ODU5OTE5ZTUyZWRmZmU5MjYzZThhNDI0IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL2NvY29hL1dlYlBsYXliYWNrU2Vzc2lv
bk1hbmFnZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL2NvY29hL1dlYlBsYXli
YWNrU2Vzc2lvbk1hbmFnZXIuaApAQCAtNTQsNyArNTQsMTAgQEAgbmFtZXNwYWNlIFdlYktpdCB7
CiBjbGFzcyBXZWJQYWdlOwogY2xhc3MgV2ViUGxheWJhY2tTZXNzaW9uTWFuYWdlcjsKIAotY2xh
c3MgV2ViUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlQ29udGV4dCBmaW5hbCA6IHB1YmxpYyBSZWZD
b3VudGVkPFdlYlBsYXliYWNrU2Vzc2lvbkludGVyZmFjZUNvbnRleHQ+LCBwdWJsaWMgV2ViQ29y
ZTo6V2ViUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlIHsKK2NsYXNzIFdlYlBsYXliYWNrU2Vzc2lv
bkludGVyZmFjZUNvbnRleHQgZmluYWwKKyAgICA6IHB1YmxpYyBSZWZDb3VudGVkPFdlYlBsYXli
YWNrU2Vzc2lvbkludGVyZmFjZUNvbnRleHQ+CisgICAgLCBwdWJsaWMgV2ViQ29yZTo6V2ViUGxh
eWJhY2tTZXNzaW9uSW50ZXJmYWNlCisgICAgLCBwdWJsaWMgV2ViQ29yZTo6V2ViUGxheWJhY2tT
ZXNzaW9uTW9kZWxDbGllbnQgewogcHVibGljOgogICAgIHN0YXRpYyBSZWY8V2ViUGxheWJhY2tT
ZXNzaW9uSW50ZXJmYWNlQ29udGV4dD4gY3JlYXRlKFdlYlBsYXliYWNrU2Vzc2lvbk1hbmFnZXIm
IG1hbmFnZXIsIHVpbnQ2NF90IGNvbnRleHRJZCkKICAgICB7CkBAIC02OSwxNiArNzIsMTggQEAg
cHJpdmF0ZToKIAogICAgIC8vIFdlYlBsYXliYWNrU2Vzc2lvbkludGVyZmFjZQogICAgIHZvaWQg
cmVzZXRNZWRpYVN0YXRlKCkgZmluYWw7Ci0gICAgdm9pZCBzZXREdXJhdGlvbihkb3VibGUpIGZp
bmFsOwotICAgIHZvaWQgc2V0Q3VycmVudFRpbWUoZG91YmxlIGN1cnJlbnRUaW1lLCBkb3VibGUg
YW5jaG9yVGltZSkgZmluYWw7Ci0gICAgdm9pZCBzZXRCdWZmZXJlZFRpbWUoZG91YmxlKSBmaW5h
bDsKLSAgICB2b2lkIHNldFJhdGUoYm9vbCBpc1BsYXlpbmcsIGZsb2F0IHBsYXliYWNrUmF0ZSkg
ZmluYWw7Ci0gICAgdm9pZCBzZXRTZWVrYWJsZVJhbmdlcyhjb25zdCBXZWJDb3JlOjpUaW1lUmFu
Z2VzJikgZmluYWw7Ci0gICAgdm9pZCBzZXRDYW5QbGF5RmFzdFJldmVyc2UoYm9vbCB2YWx1ZSkg
ZmluYWw7Ci0gICAgdm9pZCBzZXRBdWRpb01lZGlhU2VsZWN0aW9uT3B0aW9ucyhjb25zdCBWZWN0
b3I8V1RGOjpTdHJpbmc+JiBvcHRpb25zLCB1aW50NjRfdCBzZWxlY3RlZEluZGV4KSBmaW5hbDsK
LSAgICB2b2lkIHNldExlZ2libGVNZWRpYVNlbGVjdGlvbk9wdGlvbnMoY29uc3QgVmVjdG9yPFdU
Rjo6U3RyaW5nPiYgb3B0aW9ucywgdWludDY0X3Qgc2VsZWN0ZWRJbmRleCkgZmluYWw7Ci0gICAg
dm9pZCBzZXRFeHRlcm5hbFBsYXliYWNrKGJvb2wgZW5hYmxlZCwgRXh0ZXJuYWxQbGF5YmFja1Rh
cmdldFR5cGUsIFdURjo6U3RyaW5nIGxvY2FsaXplZERldmljZU5hbWUpIGZpbmFsOwotICAgIHZv
aWQgc2V0V2lyZWxlc3NWaWRlb1BsYXliYWNrRGlzYWJsZWQoYm9vbCkgZmluYWw7CisKKyAgICAv
LyBXZWJQbGF5YmFja01vZGVsQ2xpZW50CisgICAgdm9pZCBkdXJhdGlvbkNoYW5nZWQoZG91Ymxl
KSBmaW5hbDsKKyAgICB2b2lkIGN1cnJlbnRUaW1lQ2hhbmdlZChkb3VibGUgY3VycmVudFRpbWUs
IGRvdWJsZSBhbmNob3JUaW1lKSBmaW5hbDsKKyAgICB2b2lkIGJ1ZmZlcmVkVGltZUNoYW5nZWQo
ZG91YmxlKSBmaW5hbDsKKyAgICB2b2lkIHJhdGVDaGFuZ2VkKGJvb2wgaXNQbGF5aW5nLCBmbG9h
dCBwbGF5YmFja1JhdGUpIGZpbmFsOworICAgIHZvaWQgc2Vla2FibGVSYW5nZXNDaGFuZ2VkKGNv
bnN0IFdlYkNvcmU6OlRpbWVSYW5nZXMmKSBmaW5hbDsKKyAgICB2b2lkIGNhblBsYXlGYXN0UmV2
ZXJzZUNoYW5nZWQoYm9vbCB2YWx1ZSkgZmluYWw7CisgICAgdm9pZCBhdWRpb01lZGlhU2VsZWN0
aW9uT3B0aW9uc0NoYW5nZWQoY29uc3QgVmVjdG9yPFN0cmluZz4mIG9wdGlvbnMsIHVpbnQ2NF90
IHNlbGVjdGVkSW5kZXgpIGZpbmFsOworICAgIHZvaWQgbGVnaWJsZU1lZGlhU2VsZWN0aW9uT3B0
aW9uc0NoYW5nZWQoY29uc3QgVmVjdG9yPFN0cmluZz4mIG9wdGlvbnMsIHVpbnQ2NF90IHNlbGVj
dGVkSW5kZXgpIGZpbmFsOworICAgIHZvaWQgZXh0ZXJuYWxQbGF5YmFja0NoYW5nZWQoYm9vbCBl
bmFibGVkLCBXZWJDb3JlOjpXZWJQbGF5YmFja1Nlc3Npb25Nb2RlbDo6RXh0ZXJuYWxQbGF5YmFj
a1RhcmdldFR5cGUsIGNvbnN0IFN0cmluZyYgbG9jYWxpemVkRGV2aWNlTmFtZSkgZmluYWw7Cisg
ICAgdm9pZCB3aXJlbGVzc1ZpZGVvUGxheWJhY2tEaXNhYmxlZENoYW5nZWQoYm9vbCkgZmluYWw7
CiAKICAgICBXZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2VDb250ZXh0KFdlYlBsYXliYWNrU2Vz
c2lvbk1hbmFnZXImLCB1aW50NjRfdCBjb250ZXh0SWQpOwogCkBAIC0xMTQsMTYgKzExOSwxNiBA
QCBwcm90ZWN0ZWQ6CiAKICAgICAvLyBJbnRlcmZhY2UgdG8gV2ViUGxheWJhY2tTZXNzaW9uSW50
ZXJmYWNlQ29udGV4dAogICAgIHZvaWQgcmVzZXRNZWRpYVN0YXRlKHVpbnQ2NF90IGNvbnRleHRJ
ZCk7Ci0gICAgdm9pZCBzZXREdXJhdGlvbih1aW50NjRfdCBjb250ZXh0SWQsIGRvdWJsZSk7Ci0g
ICAgdm9pZCBzZXRDdXJyZW50VGltZSh1aW50NjRfdCBjb250ZXh0SWQsIGRvdWJsZSBjdXJyZW50
VGltZSwgZG91YmxlIGFuY2hvclRpbWUpOwotICAgIHZvaWQgc2V0QnVmZmVyZWRUaW1lKHVpbnQ2
NF90IGNvbnRleHRJZCwgZG91YmxlIGJ1ZmZlcmVkVGltZSk7Ci0gICAgdm9pZCBzZXRSYXRlKHVp
bnQ2NF90IGNvbnRleHRJZCwgYm9vbCBpc1BsYXlpbmcsIGZsb2F0IHBsYXliYWNrUmF0ZSk7Ci0g
ICAgdm9pZCBzZXRTZWVrYWJsZVJhbmdlcyh1aW50NjRfdCBjb250ZXh0SWQsIGNvbnN0IFdlYkNv
cmU6OlRpbWVSYW5nZXMmKTsKLSAgICB2b2lkIHNldENhblBsYXlGYXN0UmV2ZXJzZSh1aW50NjRf
dCBjb250ZXh0SWQsIGJvb2wgdmFsdWUpOwotICAgIHZvaWQgc2V0QXVkaW9NZWRpYVNlbGVjdGlv
bk9wdGlvbnModWludDY0X3QgY29udGV4dElkLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgb3B0aW9u
cywgdWludDY0X3Qgc2VsZWN0ZWRJbmRleCk7Ci0gICAgdm9pZCBzZXRMZWdpYmxlTWVkaWFTZWxl
Y3Rpb25PcHRpb25zKHVpbnQ2NF90IGNvbnRleHRJZCwgY29uc3QgVmVjdG9yPFN0cmluZz4mIG9w
dGlvbnMsIHVpbnQ2NF90IHNlbGVjdGVkSW5kZXgpOwotICAgIHZvaWQgc2V0RXh0ZXJuYWxQbGF5
YmFjayh1aW50NjRfdCBjb250ZXh0SWQsIGJvb2wgZW5hYmxlZCwgV2ViQ29yZTo6V2ViUGxheWJh
Y2tTZXNzaW9uSW50ZXJmYWNlOjpFeHRlcm5hbFBsYXliYWNrVGFyZ2V0VHlwZSwgU3RyaW5nIGxv
Y2FsaXplZERldmljZU5hbWUpOwotICAgIHZvaWQgc2V0V2lyZWxlc3NWaWRlb1BsYXliYWNrRGlz
YWJsZWQodWludDY0X3QgY29udGV4dElkLCBib29sKTsKKyAgICB2b2lkIGR1cmF0aW9uQ2hhbmdl
ZCh1aW50NjRfdCBjb250ZXh0SWQsIGRvdWJsZSk7CisgICAgdm9pZCBjdXJyZW50VGltZUNoYW5n
ZWQodWludDY0X3QgY29udGV4dElkLCBkb3VibGUgY3VycmVudFRpbWUsIGRvdWJsZSBhbmNob3JU
aW1lKTsKKyAgICB2b2lkIGJ1ZmZlcmVkVGltZUNoYW5nZWQodWludDY0X3QgY29udGV4dElkLCBk
b3VibGUgYnVmZmVyZWRUaW1lKTsKKyAgICB2b2lkIHJhdGVDaGFuZ2VkKHVpbnQ2NF90IGNvbnRl
eHRJZCwgYm9vbCBpc1BsYXlpbmcsIGZsb2F0IHBsYXliYWNrUmF0ZSk7CisgICAgdm9pZCBzZWVr
YWJsZVJhbmdlc0NoYW5nZWQodWludDY0X3QgY29udGV4dElkLCBjb25zdCBXZWJDb3JlOjpUaW1l
UmFuZ2VzJik7CisgICAgdm9pZCBjYW5QbGF5RmFzdFJldmVyc2VDaGFuZ2VkKHVpbnQ2NF90IGNv
bnRleHRJZCwgYm9vbCB2YWx1ZSk7CisgICAgdm9pZCBhdWRpb01lZGlhU2VsZWN0aW9uT3B0aW9u
c0NoYW5nZWQodWludDY0X3QgY29udGV4dElkLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgb3B0aW9u
cywgdWludDY0X3Qgc2VsZWN0ZWRJbmRleCk7CisgICAgdm9pZCBsZWdpYmxlTWVkaWFTZWxlY3Rp
b25PcHRpb25zQ2hhbmdlZCh1aW50NjRfdCBjb250ZXh0SWQsIGNvbnN0IFZlY3RvcjxTdHJpbmc+
JiBvcHRpb25zLCB1aW50NjRfdCBzZWxlY3RlZEluZGV4KTsKKyAgICB2b2lkIGV4dGVybmFsUGxh
eWJhY2tDaGFuZ2VkKHVpbnQ2NF90IGNvbnRleHRJZCwgYm9vbCBlbmFibGVkLCBXZWJDb3JlOjpX
ZWJQbGF5YmFja1Nlc3Npb25Nb2RlbDo6RXh0ZXJuYWxQbGF5YmFja1RhcmdldFR5cGUsIFN0cmlu
ZyBsb2NhbGl6ZWREZXZpY2VOYW1lKTsKKyAgICB2b2lkIHdpcmVsZXNzVmlkZW9QbGF5YmFja0Rp
c2FibGVkQ2hhbmdlZCh1aW50NjRfdCBjb250ZXh0SWQsIGJvb2wpOwogCiAgICAgLy8gTWVzc2Fn
ZXMgZnJvbSBXZWJQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHkKICAgICB2b2lkIHBsYXkodWlu
dDY0X3QgY29udGV4dElkKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
Y29jb2EvV2ViUGxheWJhY2tTZXNzaW9uTWFuYWdlci5tbSBiL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvY29jb2EvV2ViUGxheWJhY2tTZXNzaW9uTWFuYWdlci5tbQppbmRleCA5NjYxZmQ2MDg1
YzdiY2Q4NTBmN2U2NjAyZjc2ZjkzODE2YzEyNzFiLi4xZTg3ODJmNWI2Y2M4Njg3MWJlOTA4ZjBl
ZGFmMmM4YWYwMGY3ZmViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL2Nv
Y29hL1dlYlBsYXliYWNrU2Vzc2lvbk1hbmFnZXIubW0KKysrIGIvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9jb2NvYS9XZWJQbGF5YmFja1Nlc3Npb25NYW5hZ2VyLm1tCkBAIC03Miw2NCArNzIs
NjQgQEAgdm9pZCBXZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2VDb250ZXh0OjpyZXNldE1lZGlh
U3RhdGUoKQogICAgICAgICBtX21hbmFnZXItPnJlc2V0TWVkaWFTdGF0ZShtX2NvbnRleHRJZCk7
CiB9CiAKLXZvaWQgV2ViUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlQ29udGV4dDo6c2V0RHVyYXRp
b24oZG91YmxlIGR1cmF0aW9uKQordm9pZCBXZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2VDb250
ZXh0OjpkdXJhdGlvbkNoYW5nZWQoZG91YmxlIGR1cmF0aW9uKQogewogICAgIGlmIChtX21hbmFn
ZXIpCi0gICAgICAgIG1fbWFuYWdlci0+c2V0RHVyYXRpb24obV9jb250ZXh0SWQsIGR1cmF0aW9u
KTsKKyAgICAgICAgbV9tYW5hZ2VyLT5kdXJhdGlvbkNoYW5nZWQobV9jb250ZXh0SWQsIGR1cmF0
aW9uKTsKIH0KIAotdm9pZCBXZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2VDb250ZXh0OjpzZXRD
dXJyZW50VGltZShkb3VibGUgY3VycmVudFRpbWUsIGRvdWJsZSBhbmNob3JUaW1lKQordm9pZCBX
ZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2VDb250ZXh0OjpjdXJyZW50VGltZUNoYW5nZWQoZG91
YmxlIGN1cnJlbnRUaW1lLCBkb3VibGUgYW5jaG9yVGltZSkKIHsKICAgICBpZiAobV9tYW5hZ2Vy
KQotICAgICAgICBtX21hbmFnZXItPnNldEN1cnJlbnRUaW1lKG1fY29udGV4dElkLCBjdXJyZW50
VGltZSwgYW5jaG9yVGltZSk7CisgICAgICAgIG1fbWFuYWdlci0+Y3VycmVudFRpbWVDaGFuZ2Vk
KG1fY29udGV4dElkLCBjdXJyZW50VGltZSwgYW5jaG9yVGltZSk7CiB9CiAKLXZvaWQgV2ViUGxh
eWJhY2tTZXNzaW9uSW50ZXJmYWNlQ29udGV4dDo6c2V0QnVmZmVyZWRUaW1lKGRvdWJsZSBidWZm
ZXJlZFRpbWUpCit2b2lkIFdlYlBsYXliYWNrU2Vzc2lvbkludGVyZmFjZUNvbnRleHQ6OmJ1ZmZl
cmVkVGltZUNoYW5nZWQoZG91YmxlIGJ1ZmZlcmVkVGltZSkKIHsKICAgICBpZiAobV9tYW5hZ2Vy
KQotICAgICAgICBtX21hbmFnZXItPnNldEJ1ZmZlcmVkVGltZShtX2NvbnRleHRJZCwgYnVmZmVy
ZWRUaW1lKTsKKyAgICAgICAgbV9tYW5hZ2VyLT5idWZmZXJlZFRpbWVDaGFuZ2VkKG1fY29udGV4
dElkLCBidWZmZXJlZFRpbWUpOwogfQogCi12b2lkIFdlYlBsYXliYWNrU2Vzc2lvbkludGVyZmFj
ZUNvbnRleHQ6OnNldFJhdGUoYm9vbCBpc1BsYXlpbmcsIGZsb2F0IHBsYXliYWNrUmF0ZSkKK3Zv
aWQgV2ViUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlQ29udGV4dDo6cmF0ZUNoYW5nZWQoYm9vbCBp
c1BsYXlpbmcsIGZsb2F0IHBsYXliYWNrUmF0ZSkKIHsKICAgICBpZiAobV9tYW5hZ2VyKQotICAg
ICAgICBtX21hbmFnZXItPnNldFJhdGUobV9jb250ZXh0SWQsIGlzUGxheWluZywgcGxheWJhY2tS
YXRlKTsKKyAgICAgICAgbV9tYW5hZ2VyLT5yYXRlQ2hhbmdlZChtX2NvbnRleHRJZCwgaXNQbGF5
aW5nLCBwbGF5YmFja1JhdGUpOwogfQogCi12b2lkIFdlYlBsYXliYWNrU2Vzc2lvbkludGVyZmFj
ZUNvbnRleHQ6OnNldFNlZWthYmxlUmFuZ2VzKGNvbnN0IFdlYkNvcmU6OlRpbWVSYW5nZXMmIHJh
bmdlcykKK3ZvaWQgV2ViUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlQ29udGV4dDo6c2Vla2FibGVS
YW5nZXNDaGFuZ2VkKGNvbnN0IFdlYkNvcmU6OlRpbWVSYW5nZXMmIHJhbmdlcykKIHsKICAgICBp
ZiAobV9tYW5hZ2VyKQotICAgICAgICBtX21hbmFnZXItPnNldFNlZWthYmxlUmFuZ2VzKG1fY29u
dGV4dElkLCByYW5nZXMpOworICAgICAgICBtX21hbmFnZXItPnNlZWthYmxlUmFuZ2VzQ2hhbmdl
ZChtX2NvbnRleHRJZCwgcmFuZ2VzKTsKIH0KIAotdm9pZCBXZWJQbGF5YmFja1Nlc3Npb25JbnRl
cmZhY2VDb250ZXh0OjpzZXRDYW5QbGF5RmFzdFJldmVyc2UoYm9vbCB2YWx1ZSkKK3ZvaWQgV2Vi
UGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlQ29udGV4dDo6Y2FuUGxheUZhc3RSZXZlcnNlQ2hhbmdl
ZChib29sIHZhbHVlKQogewogICAgIGlmIChtX21hbmFnZXIpCi0gICAgICAgIG1fbWFuYWdlci0+
c2V0Q2FuUGxheUZhc3RSZXZlcnNlKG1fY29udGV4dElkLCB2YWx1ZSk7CisgICAgICAgIG1fbWFu
YWdlci0+Y2FuUGxheUZhc3RSZXZlcnNlQ2hhbmdlZChtX2NvbnRleHRJZCwgdmFsdWUpOwogfQog
Ci12b2lkIFdlYlBsYXliYWNrU2Vzc2lvbkludGVyZmFjZUNvbnRleHQ6OnNldEF1ZGlvTWVkaWFT
ZWxlY3Rpb25PcHRpb25zKGNvbnN0IFZlY3RvcjxXVEY6OlN0cmluZz4mIG9wdGlvbnMsIHVpbnQ2
NF90IHNlbGVjdGVkSW5kZXgpCit2b2lkIFdlYlBsYXliYWNrU2Vzc2lvbkludGVyZmFjZUNvbnRl
eHQ6OmF1ZGlvTWVkaWFTZWxlY3Rpb25PcHRpb25zQ2hhbmdlZChjb25zdCBWZWN0b3I8U3RyaW5n
PiYgb3B0aW9ucywgdWludDY0X3Qgc2VsZWN0ZWRJbmRleCkKIHsKICAgICBpZiAobV9tYW5hZ2Vy
KQotICAgICAgICBtX21hbmFnZXItPnNldEF1ZGlvTWVkaWFTZWxlY3Rpb25PcHRpb25zKG1fY29u
dGV4dElkLCBvcHRpb25zLCBzZWxlY3RlZEluZGV4KTsKKyAgICAgICAgbV9tYW5hZ2VyLT5hdWRp
b01lZGlhU2VsZWN0aW9uT3B0aW9uc0NoYW5nZWQobV9jb250ZXh0SWQsIG9wdGlvbnMsIHNlbGVj
dGVkSW5kZXgpOwogfQogCi12b2lkIFdlYlBsYXliYWNrU2Vzc2lvbkludGVyZmFjZUNvbnRleHQ6
OnNldExlZ2libGVNZWRpYVNlbGVjdGlvbk9wdGlvbnMoY29uc3QgVmVjdG9yPFdURjo6U3RyaW5n
PiYgb3B0aW9ucywgdWludDY0X3Qgc2VsZWN0ZWRJbmRleCkKK3ZvaWQgV2ViUGxheWJhY2tTZXNz
aW9uSW50ZXJmYWNlQ29udGV4dDo6bGVnaWJsZU1lZGlhU2VsZWN0aW9uT3B0aW9uc0NoYW5nZWQo
Y29uc3QgVmVjdG9yPFN0cmluZz4mIG9wdGlvbnMsIHVpbnQ2NF90IHNlbGVjdGVkSW5kZXgpCiB7
CiAgICAgaWYgKG1fbWFuYWdlcikKLSAgICAgICAgbV9tYW5hZ2VyLT5zZXRMZWdpYmxlTWVkaWFT
ZWxlY3Rpb25PcHRpb25zKG1fY29udGV4dElkLCBvcHRpb25zLCBzZWxlY3RlZEluZGV4KTsKKyAg
ICAgICAgbV9tYW5hZ2VyLT5sZWdpYmxlTWVkaWFTZWxlY3Rpb25PcHRpb25zQ2hhbmdlZChtX2Nv
bnRleHRJZCwgb3B0aW9ucywgc2VsZWN0ZWRJbmRleCk7CiB9CiAKLXZvaWQgV2ViUGxheWJhY2tT
ZXNzaW9uSW50ZXJmYWNlQ29udGV4dDo6c2V0RXh0ZXJuYWxQbGF5YmFjayhib29sIGVuYWJsZWQs
IEV4dGVybmFsUGxheWJhY2tUYXJnZXRUeXBlIHR5cGUsIFdURjo6U3RyaW5nIGxvY2FsaXplZERl
dmljZU5hbWUpCit2b2lkIFdlYlBsYXliYWNrU2Vzc2lvbkludGVyZmFjZUNvbnRleHQ6OmV4dGVy
bmFsUGxheWJhY2tDaGFuZ2VkKGJvb2wgZW5hYmxlZCwgV2ViUGxheWJhY2tTZXNzaW9uTW9kZWw6
OkV4dGVybmFsUGxheWJhY2tUYXJnZXRUeXBlIHR5cGUsIGNvbnN0IFN0cmluZyYgbG9jYWxpemVk
RGV2aWNlTmFtZSkKIHsKICAgICBpZiAobV9tYW5hZ2VyKQotICAgICAgICBtX21hbmFnZXItPnNl
dEV4dGVybmFsUGxheWJhY2sobV9jb250ZXh0SWQsIGVuYWJsZWQsIHR5cGUsIGxvY2FsaXplZERl
dmljZU5hbWUpOworICAgICAgICBtX21hbmFnZXItPmV4dGVybmFsUGxheWJhY2tDaGFuZ2VkKG1f
Y29udGV4dElkLCBlbmFibGVkLCB0eXBlLCBsb2NhbGl6ZWREZXZpY2VOYW1lKTsKIH0KIAotdm9p
ZCBXZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2VDb250ZXh0OjpzZXRXaXJlbGVzc1ZpZGVvUGxh
eWJhY2tEaXNhYmxlZChib29sIGRpc2FibGVkKQordm9pZCBXZWJQbGF5YmFja1Nlc3Npb25JbnRl
cmZhY2VDb250ZXh0Ojp3aXJlbGVzc1ZpZGVvUGxheWJhY2tEaXNhYmxlZENoYW5nZWQoYm9vbCBk
aXNhYmxlZCkKIHsKICAgICBpZiAobV9tYW5hZ2VyKQotICAgICAgICBtX21hbmFnZXItPnNldFdp
cmVsZXNzVmlkZW9QbGF5YmFja0Rpc2FibGVkKG1fY29udGV4dElkLCBkaXNhYmxlZCk7CisgICAg
ICAgIG1fbWFuYWdlci0+d2lyZWxlc3NWaWRlb1BsYXliYWNrRGlzYWJsZWRDaGFuZ2VkKG1fY29u
dGV4dElkLCBkaXNhYmxlZCk7CiB9CiAKICNwcmFnbWEgbWFyayAtIFdlYlBsYXliYWNrU2Vzc2lv
bk1hbmFnZXIKQEAgLTE1MSw4ICsxNTEsNyBAQCBXZWJQbGF5YmFja1Nlc3Npb25NYW5hZ2VyOjp+
V2ViUGxheWJhY2tTZXNzaW9uTWFuYWdlcigpCiAgICAgICAgIFJlZlB0cjxXZWJQbGF5YmFja1Nl
c3Npb25Nb2RlbE1lZGlhRWxlbWVudD4gbW9kZWw7CiAgICAgICAgIFJlZlB0cjxXZWJQbGF5YmFj
a1Nlc3Npb25JbnRlcmZhY2VDb250ZXh0PiBpbnRlcmZhY2U7CiAgICAgICAgIHN0ZDo6dGllKG1v
ZGVsLCBpbnRlcmZhY2UpID0gdHVwbGU7Ci0KLSAgICAgICAgbW9kZWwtPnNldFdlYlBsYXliYWNr
U2Vzc2lvbkludGVyZmFjZShudWxscHRyKTsKKyAgICAgICAgbW9kZWwtPnJlbW92ZUNsaWVudCgq
aW50ZXJmYWNlKTsKICAgICAgICAgbW9kZWwtPnNldE1lZGlhRWxlbWVudChudWxscHRyKTsKIAog
ICAgICAgICBpbnRlcmZhY2UtPmludmFsaWRhdGUoKTsKQEAgLTE2OSw4ICsxNjgsNyBAQCBXZWJQ
bGF5YmFja1Nlc3Npb25NYW5hZ2VyOjpNb2RlbEludGVyZmFjZVR1cGxlIFdlYlBsYXliYWNrU2Vz
c2lvbk1hbmFnZXI6OmNyZWF0ZQogewogICAgIFJlZlB0cjxXZWJQbGF5YmFja1Nlc3Npb25Nb2Rl
bE1lZGlhRWxlbWVudD4gbW9kZWwgPSBXZWJQbGF5YmFja1Nlc3Npb25Nb2RlbE1lZGlhRWxlbWVu
dDo6Y3JlYXRlKCk7CiAgICAgUmVmUHRyPFdlYlBsYXliYWNrU2Vzc2lvbkludGVyZmFjZUNvbnRl
eHQ+IGludGVyZmFjZSA9IFdlYlBsYXliYWNrU2Vzc2lvbkludGVyZmFjZUNvbnRleHQ6OmNyZWF0
ZSgqdGhpcywgY29udGV4dElkKTsKLQotICAgIG1vZGVsLT5zZXRXZWJQbGF5YmFja1Nlc3Npb25J
bnRlcmZhY2UoaW50ZXJmYWNlLmdldCgpKTsKKyAgICBtb2RlbC0+YWRkQ2xpZW50KCppbnRlcmZh
Y2UpOwogCiAgICAgcmV0dXJuIHN0ZDo6bWFrZV90dXBsZShXVEZNb3ZlKG1vZGVsKSwgV1RGTW92
ZShpbnRlcmZhY2UpKTsKIH0KQEAgLTIwMSw3ICsxOTksNyBAQCB2b2lkIFdlYlBsYXliYWNrU2Vz
c2lvbk1hbmFnZXI6OnJlbW92ZUNvbnRleHQodWludDY0X3QgY29udGV4dElkKQogCiAgICAgUmVm
UHRyPEhUTUxNZWRpYUVsZW1lbnQ+IG1lZGlhRWxlbWVudCA9IG1vZGVsLT5tZWRpYUVsZW1lbnQo
KTsKICAgICBtb2RlbC0+c2V0TWVkaWFFbGVtZW50KG51bGxwdHIpOwotICAgIG1vZGVsLT5zZXRX
ZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2UobnVsbHB0cik7CisgICAgbW9kZWwtPnJlbW92ZUNs
aWVudCgqaW50ZXJmYWNlKTsKICAgICBpbnRlcmZhY2UtPmludmFsaWRhdGUoKTsKICAgICBtX21l
ZGlhRWxlbWVudHMucmVtb3ZlKG1lZGlhRWxlbWVudC5nZXQoKSk7CiAgICAgbV9jb250ZXh0TWFw
LnJlbW92ZShjb250ZXh0SWQpOwpAQCAtMjg0LDI3ICsyODIsMjcgQEAgdm9pZCBXZWJQbGF5YmFj
a1Nlc3Npb25NYW5hZ2VyOjpyZXNldE1lZGlhU3RhdGUodWludDY0X3QgY29udGV4dElkKQogICAg
IG1fcGFnZS0+c2VuZChNZXNzYWdlczo6V2ViUGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5OjpS
ZXNldE1lZGlhU3RhdGUoY29udGV4dElkKSwgbV9wYWdlLT5wYWdlSUQoKSk7CiB9CiAKLXZvaWQg
V2ViUGxheWJhY2tTZXNzaW9uTWFuYWdlcjo6c2V0RHVyYXRpb24odWludDY0X3QgY29udGV4dElk
LCBkb3VibGUgZHVyYXRpb24pCit2b2lkIFdlYlBsYXliYWNrU2Vzc2lvbk1hbmFnZXI6OmR1cmF0
aW9uQ2hhbmdlZCh1aW50NjRfdCBjb250ZXh0SWQsIGRvdWJsZSBkdXJhdGlvbikKIHsKICAgICBt
X3BhZ2UtPnNlbmQoTWVzc2FnZXM6OldlYlBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eTo6U2V0
RHVyYXRpb24oY29udGV4dElkLCBkdXJhdGlvbiksIG1fcGFnZS0+cGFnZUlEKCkpOwogfQogCi12
b2lkIFdlYlBsYXliYWNrU2Vzc2lvbk1hbmFnZXI6OnNldEN1cnJlbnRUaW1lKHVpbnQ2NF90IGNv
bnRleHRJZCwgZG91YmxlIGN1cnJlbnRUaW1lLCBkb3VibGUgYW5jaG9yVGltZSkKK3ZvaWQgV2Vi
UGxheWJhY2tTZXNzaW9uTWFuYWdlcjo6Y3VycmVudFRpbWVDaGFuZ2VkKHVpbnQ2NF90IGNvbnRl
eHRJZCwgZG91YmxlIGN1cnJlbnRUaW1lLCBkb3VibGUgYW5jaG9yVGltZSkKIHsKICAgICBtX3Bh
Z2UtPnNlbmQoTWVzc2FnZXM6OldlYlBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eTo6U2V0Q3Vy
cmVudFRpbWUoY29udGV4dElkLCBjdXJyZW50VGltZSwgYW5jaG9yVGltZSksIG1fcGFnZS0+cGFn
ZUlEKCkpOwogfQogCi12b2lkIFdlYlBsYXliYWNrU2Vzc2lvbk1hbmFnZXI6OnNldEJ1ZmZlcmVk
VGltZSh1aW50NjRfdCBjb250ZXh0SWQsIGRvdWJsZSBidWZmZXJlZFRpbWUpCit2b2lkIFdlYlBs
YXliYWNrU2Vzc2lvbk1hbmFnZXI6OmJ1ZmZlcmVkVGltZUNoYW5nZWQodWludDY0X3QgY29udGV4
dElkLCBkb3VibGUgYnVmZmVyZWRUaW1lKQogewogICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6
V2ViUGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5OjpTZXRCdWZmZXJlZFRpbWUoY29udGV4dElk
LCBidWZmZXJlZFRpbWUpLCBtX3BhZ2UtPnBhZ2VJRCgpKTsKIH0KIAotdm9pZCBXZWJQbGF5YmFj
a1Nlc3Npb25NYW5hZ2VyOjpzZXRSYXRlKHVpbnQ2NF90IGNvbnRleHRJZCwgYm9vbCBpc1BsYXlp
bmcsIGZsb2F0IHBsYXliYWNrUmF0ZSkKK3ZvaWQgV2ViUGxheWJhY2tTZXNzaW9uTWFuYWdlcjo6
cmF0ZUNoYW5nZWQodWludDY0X3QgY29udGV4dElkLCBib29sIGlzUGxheWluZywgZmxvYXQgcGxh
eWJhY2tSYXRlKQogewogICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6V2ViUGxheWJhY2tTZXNz
aW9uTWFuYWdlclByb3h5OjpTZXRSYXRlKGNvbnRleHRJZCwgaXNQbGF5aW5nLCBwbGF5YmFja1Jh
dGUpLCBtX3BhZ2UtPnBhZ2VJRCgpKTsKIH0KIAotdm9pZCBXZWJQbGF5YmFja1Nlc3Npb25NYW5h
Z2VyOjpzZXRTZWVrYWJsZVJhbmdlcyh1aW50NjRfdCBjb250ZXh0SWQsIGNvbnN0IFdlYkNvcmU6
OlRpbWVSYW5nZXMmIHRpbWVSYW5nZXMpCit2b2lkIFdlYlBsYXliYWNrU2Vzc2lvbk1hbmFnZXI6
OnNlZWthYmxlUmFuZ2VzQ2hhbmdlZCh1aW50NjRfdCBjb250ZXh0SWQsIGNvbnN0IFdlYkNvcmU6
OlRpbWVSYW5nZXMmIHRpbWVSYW5nZXMpCiB7CiAgICAgVmVjdG9yPHN0ZDo6cGFpcjxkb3VibGUs
IGRvdWJsZT4+IHJhbmdlc1ZlY3RvcjsKIApAQCAtMzE4LDI3ICszMTYsMjcgQEAgdm9pZCBXZWJQ
bGF5YmFja1Nlc3Npb25NYW5hZ2VyOjpzZXRTZWVrYWJsZVJhbmdlcyh1aW50NjRfdCBjb250ZXh0
SWQsIGNvbnN0IFdlYkMKICAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OldlYlBsYXliYWNrU2Vz
c2lvbk1hbmFnZXJQcm94eTo6U2V0U2Vla2FibGVSYW5nZXNWZWN0b3IoY29udGV4dElkLCBXVEZN
b3ZlKHJhbmdlc1ZlY3RvcikpLCBtX3BhZ2UtPnBhZ2VJRCgpKTsKIH0KIAotdm9pZCBXZWJQbGF5
YmFja1Nlc3Npb25NYW5hZ2VyOjpzZXRDYW5QbGF5RmFzdFJldmVyc2UodWludDY0X3QgY29udGV4
dElkLCBib29sIHZhbHVlKQordm9pZCBXZWJQbGF5YmFja1Nlc3Npb25NYW5hZ2VyOjpjYW5QbGF5
RmFzdFJldmVyc2VDaGFuZ2VkKHVpbnQ2NF90IGNvbnRleHRJZCwgYm9vbCB2YWx1ZSkKIHsKICAg
ICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OldlYlBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eTo6
U2V0Q2FuUGxheUZhc3RSZXZlcnNlKGNvbnRleHRJZCwgdmFsdWUpLCBtX3BhZ2UtPnBhZ2VJRCgp
KTsKIH0KIAotdm9pZCBXZWJQbGF5YmFja1Nlc3Npb25NYW5hZ2VyOjpzZXRBdWRpb01lZGlhU2Vs
ZWN0aW9uT3B0aW9ucyh1aW50NjRfdCBjb250ZXh0SWQsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBv
cHRpb25zLCB1aW50NjRfdCBzZWxlY3RlZEluZGV4KQordm9pZCBXZWJQbGF5YmFja1Nlc3Npb25N
YW5hZ2VyOjphdWRpb01lZGlhU2VsZWN0aW9uT3B0aW9uc0NoYW5nZWQodWludDY0X3QgY29udGV4
dElkLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgb3B0aW9ucywgdWludDY0X3Qgc2VsZWN0ZWRJbmRl
eCkKIHsKICAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OldlYlBsYXliYWNrU2Vzc2lvbk1hbmFn
ZXJQcm94eTo6U2V0QXVkaW9NZWRpYVNlbGVjdGlvbk9wdGlvbnMoY29udGV4dElkLCBvcHRpb25z
LCBzZWxlY3RlZEluZGV4KSwgbV9wYWdlLT5wYWdlSUQoKSk7CiB9CiAKLXZvaWQgV2ViUGxheWJh
Y2tTZXNzaW9uTWFuYWdlcjo6c2V0TGVnaWJsZU1lZGlhU2VsZWN0aW9uT3B0aW9ucyh1aW50NjRf
dCBjb250ZXh0SWQsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBvcHRpb25zLCB1aW50NjRfdCBzZWxl
Y3RlZEluZGV4KQordm9pZCBXZWJQbGF5YmFja1Nlc3Npb25NYW5hZ2VyOjpsZWdpYmxlTWVkaWFT
ZWxlY3Rpb25PcHRpb25zQ2hhbmdlZCh1aW50NjRfdCBjb250ZXh0SWQsIGNvbnN0IFZlY3RvcjxT
dHJpbmc+JiBvcHRpb25zLCB1aW50NjRfdCBzZWxlY3RlZEluZGV4KQogewogICAgIG1fcGFnZS0+
c2VuZChNZXNzYWdlczo6V2ViUGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5OjpTZXRMZWdpYmxl
TWVkaWFTZWxlY3Rpb25PcHRpb25zKGNvbnRleHRJZCwgb3B0aW9ucywgc2VsZWN0ZWRJbmRleCks
IG1fcGFnZS0+cGFnZUlEKCkpOwogfQogCi12b2lkIFdlYlBsYXliYWNrU2Vzc2lvbk1hbmFnZXI6
OnNldEV4dGVybmFsUGxheWJhY2sodWludDY0X3QgY29udGV4dElkLCBib29sIGVuYWJsZWQsIFdl
YlBsYXliYWNrU2Vzc2lvbkludGVyZmFjZTo6RXh0ZXJuYWxQbGF5YmFja1RhcmdldFR5cGUgdGFy
Z2V0VHlwZSwgU3RyaW5nIGxvY2FsaXplZERldmljZU5hbWUpCit2b2lkIFdlYlBsYXliYWNrU2Vz
c2lvbk1hbmFnZXI6OmV4dGVybmFsUGxheWJhY2tDaGFuZ2VkKHVpbnQ2NF90IGNvbnRleHRJZCwg
Ym9vbCBlbmFibGVkLCBXZWJQbGF5YmFja1Nlc3Npb25Nb2RlbDo6RXh0ZXJuYWxQbGF5YmFja1Rh
cmdldFR5cGUgdGFyZ2V0VHlwZSwgU3RyaW5nIGxvY2FsaXplZERldmljZU5hbWUpCiB7CiAgICAg
bV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHk6OlNl
dEV4dGVybmFsUGxheWJhY2tQcm9wZXJ0aWVzKGNvbnRleHRJZCwgZW5hYmxlZCwgc3RhdGljX2Nh
c3Q8dWludDMyX3Q+KHRhcmdldFR5cGUpLCBsb2NhbGl6ZWREZXZpY2VOYW1lKSwgbV9wYWdlLT5w
YWdlSUQoKSk7CiB9CiAKLXZvaWQgV2ViUGxheWJhY2tTZXNzaW9uTWFuYWdlcjo6c2V0V2lyZWxl
c3NWaWRlb1BsYXliYWNrRGlzYWJsZWQodWludDY0X3QgY29udGV4dElkLCBib29sIGRpc2FibGVk
KQordm9pZCBXZWJQbGF5YmFja1Nlc3Npb25NYW5hZ2VyOjp3aXJlbGVzc1ZpZGVvUGxheWJhY2tE
aXNhYmxlZENoYW5nZWQodWludDY0X3QgY29udGV4dElkLCBib29sIGRpc2FibGVkKQogewogICAg
IG1fcGFnZS0+c2VuZChNZXNzYWdlczo6V2ViUGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5OjpT
ZXRXaXJlbGVzc1ZpZGVvUGxheWJhY2tEaXNhYmxlZChjb250ZXh0SWQsIGRpc2FibGVkKSk7CiB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL2NvY29hL1dlYlZpZGVvRnVs
bHNjcmVlbk1hbmFnZXIuaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvY29jb2EvV2ViVmlk
ZW9GdWxsc2NyZWVuTWFuYWdlci5oCmluZGV4IDkxMTk3Y2YyODdkMDk0ZTMwNjUzNGQyYWQ1M2Nh
MGNiYzNkOTM5YWQuLjUyNzEwYzQyOWEzODU0ODAxNzQ5MTgwYjVkNDhhOTMyMzZkYjhjZGIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvY29jb2EvV2ViVmlkZW9GdWxsc2Ny
ZWVuTWFuYWdlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvY29jb2EvV2ViVmlk
ZW9GdWxsc2NyZWVuTWFuYWdlci5oCkBAIC00NSw2ICs0NSw3IEBAIGNsYXNzIE1lc3NhZ2VSZWNl
aXZlcjsKIH0KIAogbmFtZXNwYWNlIFdlYkNvcmUgeworY2xhc3MgRmxvYXRTaXplOwogY2xhc3Mg
Tm9kZTsKIH0KIApAQCAtNTYsMTEgKzU3LDE0IEBAIGNsYXNzIFdlYlBsYXliYWNrU2Vzc2lvbklu
dGVyZmFjZUNvbnRleHQ7CiBjbGFzcyBXZWJQbGF5YmFja1Nlc3Npb25NYW5hZ2VyOwogY2xhc3Mg
V2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlcjsKIAotY2xhc3MgV2ViVmlkZW9GdWxsc2NyZWVuSW50
ZXJmYWNlQ29udGV4dCA6IHB1YmxpYyBSZWZDb3VudGVkPFdlYlZpZGVvRnVsbHNjcmVlbkludGVy
ZmFjZUNvbnRleHQ+LCBwdWJsaWMgV2ViQ29yZTo6V2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNl
IHsKK2NsYXNzIFdlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUNvbnRleHQKKyAgICA6IHB1Ymxp
YyBSZWZDb3VudGVkPFdlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUNvbnRleHQ+CisgICAgLCBw
dWJsaWMgV2ViQ29yZTo6V2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlCisgICAgLCBwdWJsaWMg
V2ViQ29yZTo6V2ViVmlkZW9GdWxsc2NyZWVuTW9kZWxDbGllbnQgewogcHVibGljOgotICAgIHN0
YXRpYyBSZWY8V2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQ29udGV4dD4gY3JlYXRlKFdlYlZp
ZGVvRnVsbHNjcmVlbk1hbmFnZXImIG1hbmFnZXIsIFdlYlBsYXliYWNrU2Vzc2lvbkludGVyZmFj
ZUNvbnRleHQmIHBsYXliYWNrU2Vzc2lvbkludGVyZmFjZSwgdWludDY0X3QgY29udGV4dElkKQor
ICAgIHN0YXRpYyBSZWY8V2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQ29udGV4dD4gY3JlYXRl
KFdlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXImIG1hbmFnZXIsIHVpbnQ2NF90IGNvbnRleHRJZCkK
ICAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFdlYlZpZGVvRnVsbHNjcmVlbklu
dGVyZmFjZUNvbnRleHQobWFuYWdlciwgcGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlLCBjb250ZXh0
SWQpKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgV2ViVmlkZW9GdWxsc2NyZWVuSW50
ZXJmYWNlQ29udGV4dChtYW5hZ2VyLCBjb250ZXh0SWQpKTsKICAgICB9CiAgICAgdmlydHVhbCB+
V2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQ29udGV4dCgpOwogCkBAIC04MiwyNiArODYsMTMg
QEAgcHVibGljOgogICAgIHZvaWQgc2V0SXNGdWxsc2NyZWVuKGJvb2wgZmxhZykgeyBtX2lzRnVs
bHNjcmVlbiA9IGZsYWc7IH0KIAogcHJpdmF0ZToKLSAgICAvLyBXZWJQbGF5YmFja1Nlc3Npb25J
bnRlcmZhY2UKLSAgICB2b2lkIHJlc2V0TWVkaWFTdGF0ZSgpIG92ZXJyaWRlOwotICAgIHZvaWQg
c2V0RHVyYXRpb24oZG91YmxlKSBvdmVycmlkZTsKLSAgICB2b2lkIHNldEN1cnJlbnRUaW1lKGRv
dWJsZSBjdXJyZW50VGltZSwgZG91YmxlIGFuY2hvclRpbWUpIG92ZXJyaWRlOwotICAgIHZvaWQg
c2V0QnVmZmVyZWRUaW1lKGRvdWJsZSkgb3ZlcnJpZGU7Ci0gICAgdm9pZCBzZXRSYXRlKGJvb2wg
aXNQbGF5aW5nLCBmbG9hdCBwbGF5YmFja1JhdGUpIG92ZXJyaWRlOwotICAgIHZvaWQgc2V0U2Vl
a2FibGVSYW5nZXMoY29uc3QgV2ViQ29yZTo6VGltZVJhbmdlcyYpIG92ZXJyaWRlOwotICAgIHZv
aWQgc2V0Q2FuUGxheUZhc3RSZXZlcnNlKGJvb2wgdmFsdWUpIG92ZXJyaWRlOwotICAgIHZvaWQg
c2V0QXVkaW9NZWRpYVNlbGVjdGlvbk9wdGlvbnMoY29uc3QgVmVjdG9yPFdURjo6U3RyaW5nPiYg
b3B0aW9ucywgdWludDY0X3Qgc2VsZWN0ZWRJbmRleCkgb3ZlcnJpZGU7Ci0gICAgdm9pZCBzZXRM
ZWdpYmxlTWVkaWFTZWxlY3Rpb25PcHRpb25zKGNvbnN0IFZlY3RvcjxXVEY6OlN0cmluZz4mIG9w
dGlvbnMsIHVpbnQ2NF90IHNlbGVjdGVkSW5kZXgpIG92ZXJyaWRlOwotICAgIHZvaWQgc2V0RXh0
ZXJuYWxQbGF5YmFjayhib29sIGVuYWJsZWQsIEV4dGVybmFsUGxheWJhY2tUYXJnZXRUeXBlLCBX
VEY6OlN0cmluZyBsb2NhbGl6ZWREZXZpY2VOYW1lKSBvdmVycmlkZTsKLSAgICB2b2lkIHNldFdp
cmVsZXNzVmlkZW9QbGF5YmFja0Rpc2FibGVkKGJvb2wpIG92ZXJyaWRlOwotCi0gICAgLy8gV2Vi
VmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlCi0gICAgdm9pZCBzZXRWaWRlb0RpbWVuc2lvbnMoYm9v
bCBoYXNWaWRlbywgZmxvYXQgd2lkdGgsIGZsb2F0IGhlaWdodCkgb3ZlcnJpZGU7Ci0KLSAgICBX
ZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VDb250ZXh0KFdlYlZpZGVvRnVsbHNjcmVlbk1hbmFn
ZXImLCBXZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2VDb250ZXh0JiwgdWludDY0X3QgY29udGV4
dElkKTsKKyAgICAvLyBXZWJWaWRlb0Z1bGxzY3JlZW5Nb2RlbENsaWVudAorICAgIHZvaWQgaGFz
VmlkZW9DaGFuZ2VkKGJvb2wpIG92ZXJyaWRlOworICAgIHZvaWQgdmlkZW9EaW1lbnNpb25zQ2hh
bmdlZChjb25zdCBXZWJDb3JlOjpGbG9hdFNpemUmKSBvdmVycmlkZTsKKworICAgIFdlYlZpZGVv
RnVsbHNjcmVlbkludGVyZmFjZUNvbnRleHQoV2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlciYsIHVp
bnQ2NF90IGNvbnRleHRJZCk7CiAKICAgICBXZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyKiBtX21h
bmFnZXI7Ci0gICAgUmVmPFdlYlBsYXliYWNrU2Vzc2lvbkludGVyZmFjZUNvbnRleHQ+IG1fcGxh
eWJhY2tTZXNzaW9uSW50ZXJmYWNlOwogICAgIHVpbnQ2NF90IG1fY29udGV4dElkOwogICAgIHN0
ZDo6dW5pcXVlX3B0cjxMYXllckhvc3RpbmdDb250ZXh0PiBtX2xheWVySG9zdGluZ0NvbnRleHQ7
CiAgICAgYm9vbCBtX2lzQW5pbWF0aW5nIHsgZmFsc2UgfTsKQEAgLTEzOCw3ICsxMjksOCBAQCBw
cm90ZWN0ZWQ6CiAgICAgdm9pZCByZW1vdmVDbGllbnRGb3JDb250ZXh0KHVpbnQ2NF90IGNvbnRl
eHRJZCk7CiAKICAgICAvLyBJbnRlcmZhY2UgdG8gV2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNl
Q29udGV4dAotICAgIHZvaWQgc2V0VmlkZW9EaW1lbnNpb25zKHVpbnQ2NF90IGNvbnRleHRJZCwg
Ym9vbCBoYXNWaWRlbywgZmxvYXQgd2lkdGgsIGZsb2F0IGhlaWdodCk7CisgICAgdm9pZCBoYXNW
aWRlb0NoYW5nZWQodWludDY0X3QgY29udGV4dElkLCBib29sIGhhc1ZpZGVvKTsKKyAgICB2b2lk
IHZpZGVvRGltZW5zaW9uc0NoYW5nZWQodWludDY0X3QgY29udGV4dElkLCBjb25zdCBXZWJDb3Jl
OjpGbG9hdFNpemUmKTsKIAogICAgIC8vIE1lc3NhZ2VzIGZyb20gV2ViVmlkZW9GdWxsc2NyZWVu
TWFuYWdlclByb3h5CiAgICAgdm9pZCByZXF1ZXN0RnVsbHNjcmVlbk1vZGUodWludDY0X3QgY29u
dGV4dElkLCBXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50RW51bXM6OlZpZGVvRnVsbHNjcmVlbk1v
ZGUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9jb2NvYS9XZWJWaWRl
b0Z1bGxzY3JlZW5NYW5hZ2VyLm1tIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9jb2NvYS9X
ZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyLm1tCmluZGV4IDI3MjQyYzFkMDE2ZDdmMzNiYTExMTEy
YjY1MDNmZTk3MDI3OGZkMTQuLmQyNzUyMDczZDA5MGJkODZmYzhiNmViMmZjN2ZlODQwZDk0Yzcx
NTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvY29jb2EvV2ViVmlkZW9G
dWxsc2NyZWVuTWFuYWdlci5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL2NvY29h
L1dlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXIubW0KQEAgLTY2LDkgKzY2LDggQEAgc3RhdGljIElu
dFJlY3QgaW5saW5lVmlkZW9GcmFtZShIVE1MVmlkZW9FbGVtZW50JiBlbGVtZW50KQogCiAjcHJh
Z21hIG1hcmsgLSBXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VDb250ZXh0CiAKLVdlYlZpZGVv
RnVsbHNjcmVlbkludGVyZmFjZUNvbnRleHQ6OldlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUNv
bnRleHQoV2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlciYgbWFuYWdlciwgV2ViUGxheWJhY2tTZXNz
aW9uSW50ZXJmYWNlQ29udGV4dCYgcGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlLCB1aW50NjRfdCBj
b250ZXh0SWQpCitXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VDb250ZXh0OjpXZWJWaWRlb0Z1
bGxzY3JlZW5JbnRlcmZhY2VDb250ZXh0KFdlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXImIG1hbmFn
ZXIsIHVpbnQ2NF90IGNvbnRleHRJZCkKICAgICA6IG1fbWFuYWdlcigmbWFuYWdlcikKLSAgICAs
IG1fcGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlKHBsYXliYWNrU2Vzc2lvbkludGVyZmFjZSkKICAg
ICAsIG1fY29udGV4dElkKGNvbnRleHRJZCkKIHsKIH0KQEAgLTgyLDY1ICs4MSwxNiBAQCB2b2lk
IFdlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUNvbnRleHQ6OnNldExheWVySG9zdGluZ0NvbnRl
eHQoc3RkOjp1bmlxdWVfcHRyPAogICAgIG1fbGF5ZXJIb3N0aW5nQ29udGV4dCA9IFdURk1vdmUo
Y29udGV4dCk7CiB9CiAKLXZvaWQgV2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQ29udGV4dDo6
cmVzZXRNZWRpYVN0YXRlKCkKLXsKLSAgICBtX3BsYXliYWNrU2Vzc2lvbkludGVyZmFjZS0+cmVz
ZXRNZWRpYVN0YXRlKCk7Ci19Ci0KLXZvaWQgV2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQ29u
dGV4dDo6c2V0RHVyYXRpb24oZG91YmxlIGR1cmF0aW9uKQotewotICAgIG1fcGxheWJhY2tTZXNz
aW9uSW50ZXJmYWNlLT5zZXREdXJhdGlvbihkdXJhdGlvbik7Ci19Ci0KLXZvaWQgV2ViVmlkZW9G
dWxsc2NyZWVuSW50ZXJmYWNlQ29udGV4dDo6c2V0Q3VycmVudFRpbWUoZG91YmxlIGN1cnJlbnRU
aW1lLCBkb3VibGUgYW5jaG9yVGltZSkKLXsKLSAgICBtX3BsYXliYWNrU2Vzc2lvbkludGVyZmFj
ZS0+c2V0Q3VycmVudFRpbWUoY3VycmVudFRpbWUsIGFuY2hvclRpbWUpOwotfQotCi12b2lkIFdl
YlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUNvbnRleHQ6OnNldEJ1ZmZlcmVkVGltZShkb3VibGUg
YnVmZmVyZWRUaW1lKQotewotICAgIG1fcGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlLT5zZXRCdWZm
ZXJlZFRpbWUoYnVmZmVyZWRUaW1lKTsKLX0KLQotdm9pZCBXZWJWaWRlb0Z1bGxzY3JlZW5JbnRl
cmZhY2VDb250ZXh0OjpzZXRSYXRlKGJvb2wgaXNQbGF5aW5nLCBmbG9hdCBwbGF5YmFja1JhdGUp
Ci17Ci0gICAgbV9wbGF5YmFja1Nlc3Npb25JbnRlcmZhY2UtPnNldFJhdGUoaXNQbGF5aW5nLCBw
bGF5YmFja1JhdGUpOwotfQotCi12b2lkIFdlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUNvbnRl
eHQ6OnNldFZpZGVvRGltZW5zaW9ucyhib29sIGhhc1ZpZGVvLCBmbG9hdCB3aWR0aCwgZmxvYXQg
aGVpZ2h0KQordm9pZCBXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VDb250ZXh0OjpoYXNWaWRl
b0NoYW5nZWQoYm9vbCBoYXNWaWRlbykKIHsKICAgICBpZiAobV9tYW5hZ2VyKQotICAgICAgICBt
X21hbmFnZXItPnNldFZpZGVvRGltZW5zaW9ucyhtX2NvbnRleHRJZCwgaGFzVmlkZW8sIHdpZHRo
LCBoZWlnaHQpOwotfQotCi12b2lkIFdlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUNvbnRleHQ6
OnNldFNlZWthYmxlUmFuZ2VzKGNvbnN0IFdlYkNvcmU6OlRpbWVSYW5nZXMmIHJhbmdlcykKLXsK
LSAgICBtX3BsYXliYWNrU2Vzc2lvbkludGVyZmFjZS0+c2V0U2Vla2FibGVSYW5nZXMocmFuZ2Vz
KTsKKyAgICAgICAgbV9tYW5hZ2VyLT5oYXNWaWRlb0NoYW5nZWQobV9jb250ZXh0SWQsIGhhc1Zp
ZGVvKTsKIH0KIAotdm9pZCBXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VDb250ZXh0OjpzZXRD
YW5QbGF5RmFzdFJldmVyc2UoYm9vbCB2YWx1ZSkKK3ZvaWQgV2ViVmlkZW9GdWxsc2NyZWVuSW50
ZXJmYWNlQ29udGV4dDo6dmlkZW9EaW1lbnNpb25zQ2hhbmdlZChjb25zdCBGbG9hdFNpemUmIHZp
ZGVvRGltZW5zaW9ucykKIHsKLSAgICBtX3BsYXliYWNrU2Vzc2lvbkludGVyZmFjZS0+c2V0Q2Fu
UGxheUZhc3RSZXZlcnNlKHZhbHVlKTsKLX0KLQotdm9pZCBXZWJWaWRlb0Z1bGxzY3JlZW5JbnRl
cmZhY2VDb250ZXh0OjpzZXRBdWRpb01lZGlhU2VsZWN0aW9uT3B0aW9ucyhjb25zdCBWZWN0b3I8
V1RGOjpTdHJpbmc+JiBvcHRpb25zLCB1aW50NjRfdCBzZWxlY3RlZEluZGV4KQotewotICAgIG1f
cGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlLT5zZXRBdWRpb01lZGlhU2VsZWN0aW9uT3B0aW9ucyhv
cHRpb25zLCBzZWxlY3RlZEluZGV4KTsKLX0KLQotdm9pZCBXZWJWaWRlb0Z1bGxzY3JlZW5JbnRl
cmZhY2VDb250ZXh0OjpzZXRMZWdpYmxlTWVkaWFTZWxlY3Rpb25PcHRpb25zKGNvbnN0IFZlY3Rv
cjxXVEY6OlN0cmluZz4mIG9wdGlvbnMsIHVpbnQ2NF90IHNlbGVjdGVkSW5kZXgpCi17Ci0gICAg
bV9wbGF5YmFja1Nlc3Npb25JbnRlcmZhY2UtPnNldExlZ2libGVNZWRpYVNlbGVjdGlvbk9wdGlv
bnMob3B0aW9ucywgc2VsZWN0ZWRJbmRleCk7Ci19Ci0KLXZvaWQgV2ViVmlkZW9GdWxsc2NyZWVu
SW50ZXJmYWNlQ29udGV4dDo6c2V0RXh0ZXJuYWxQbGF5YmFjayhib29sIGVuYWJsZWQsIEV4dGVy
bmFsUGxheWJhY2tUYXJnZXRUeXBlIHR5cGUsIFdURjo6U3RyaW5nIGxvY2FsaXplZERldmljZU5h
bWUpCi17Ci0gICAgbV9wbGF5YmFja1Nlc3Npb25JbnRlcmZhY2UtPnNldEV4dGVybmFsUGxheWJh
Y2soZW5hYmxlZCwgdHlwZSwgbG9jYWxpemVkRGV2aWNlTmFtZSk7Ci19Ci0KLXZvaWQgV2ViVmlk
ZW9GdWxsc2NyZWVuSW50ZXJmYWNlQ29udGV4dDo6c2V0V2lyZWxlc3NWaWRlb1BsYXliYWNrRGlz
YWJsZWQoYm9vbCBkaXNhYmxlZCkKLXsKLSAgICBtX3BsYXliYWNrU2Vzc2lvbkludGVyZmFjZS0+
c2V0V2lyZWxlc3NWaWRlb1BsYXliYWNrRGlzYWJsZWQoZGlzYWJsZWQpOworICAgIGlmIChtX21h
bmFnZXIpCisgICAgICAgIG1fbWFuYWdlci0+dmlkZW9EaW1lbnNpb25zQ2hhbmdlZChtX2NvbnRl
eHRJZCwgdmlkZW9EaW1lbnNpb25zKTsKIH0KIAogI3ByYWdtYSBtYXJrIC0gV2ViVmlkZW9GdWxs
c2NyZWVuTWFuYWdlcgpAQCAtMTY0LDggKzExNCw4IEBAIFdlYlZpZGVvRnVsbHNjcmVlbk1hbmFn
ZXI6On5XZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyKCkKICAgICAgICAgUmVmUHRyPFdlYlZpZGVv
RnVsbHNjcmVlbkludGVyZmFjZUNvbnRleHQ+IGludGVyZmFjZTsKICAgICAgICAgc3RkOjp0aWUo
bW9kZWwsIGludGVyZmFjZSkgPSB0dXBsZTsKIAotICAgICAgICBtb2RlbC0+c2V0V2ViVmlkZW9G
dWxsc2NyZWVuSW50ZXJmYWNlKG51bGxwdHIpOwogICAgICAgICBtb2RlbC0+c2V0VmlkZW9FbGVt
ZW50KG51bGxwdHIpOworICAgICAgICBtb2RlbC0+cmVtb3ZlQ2xpZW50KCppbnRlcmZhY2UpOwog
CiAgICAgICAgIGludGVyZmFjZS0+aW52YWxpZGF0ZSgpOwogICAgIH0KQEAgLTE3OSwxNCArMTI5
LDEyIEBAIFdlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6On5XZWJWaWRlb0Z1bGxzY3JlZW5NYW5h
Z2VyKCkKIAogV2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6TW9kZWxJbnRlcmZhY2VUdXBsZSBX
ZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjpjcmVhdGVNb2RlbEFuZEludGVyZmFjZSh1aW50NjRf
dCBjb250ZXh0SWQpCiB7Ci0gICAgYXV0byYgcGxheWJhY2tTZXNzaW9uTW9kZWwgPSBtX3BsYXli
YWNrU2Vzc2lvbk1hbmFnZXItPmVuc3VyZU1vZGVsKGNvbnRleHRJZCk7Ci0gICAgUmVmUHRyPFdl
YlZpZGVvRnVsbHNjcmVlbk1vZGVsVmlkZW9FbGVtZW50PiBtb2RlbCA9IFdlYlZpZGVvRnVsbHNj
cmVlbk1vZGVsVmlkZW9FbGVtZW50OjpjcmVhdGUocGxheWJhY2tTZXNzaW9uTW9kZWwpOwotICAg
IGF1dG8mIHBsYXliYWNrU2Vzc2lvbkludGVyZmFjZSA9IG1fcGxheWJhY2tTZXNzaW9uTWFuYWdl
ci0+ZW5zdXJlSW50ZXJmYWNlKGNvbnRleHRJZCk7Ci0gICAgUmVmUHRyPFdlYlZpZGVvRnVsbHNj
cmVlbkludGVyZmFjZUNvbnRleHQ+IGludGVyZmFjZSA9IFdlYlZpZGVvRnVsbHNjcmVlbkludGVy
ZmFjZUNvbnRleHQ6OmNyZWF0ZSgqdGhpcywgcGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlLCBjb250
ZXh0SWQpOworICAgIFJlZlB0cjxXZWJWaWRlb0Z1bGxzY3JlZW5Nb2RlbFZpZGVvRWxlbWVudD4g
bW9kZWwgPSBXZWJWaWRlb0Z1bGxzY3JlZW5Nb2RlbFZpZGVvRWxlbWVudDo6Y3JlYXRlKCk7Cisg
ICAgUmVmUHRyPFdlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUNvbnRleHQ+IGludGVyZmFjZSA9
IFdlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUNvbnRleHQ6OmNyZWF0ZSgqdGhpcywgY29udGV4
dElkKTsKICAgICBtX3BsYXliYWNrU2Vzc2lvbk1hbmFnZXItPmFkZENsaWVudEZvckNvbnRleHQo
Y29udGV4dElkKTsKIAogICAgIGludGVyZmFjZS0+c2V0TGF5ZXJIb3N0aW5nQ29udGV4dChMYXll
ckhvc3RpbmdDb250ZXh0OjpjcmVhdGVGb3JFeHRlcm5hbEhvc3RpbmdQcm9jZXNzKCkpOwotICAg
IG1vZGVsLT5zZXRXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2UoaW50ZXJmYWNlLmdldCgpKTsK
KyAgICBtb2RlbC0+YWRkQ2xpZW50KCppbnRlcmZhY2UpOwogCiAgICAgcmV0dXJuIHN0ZDo6bWFr
ZV90dXBsZShXVEZNb3ZlKG1vZGVsKSwgV1RGTW92ZShpbnRlcmZhY2UpKTsKIH0KQEAgLTIxOSw3
ICsxNjcsNyBAQCB2b2lkIFdlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6OnJlbW92ZUNvbnRleHQo
dWludDY0X3QgY29udGV4dElkKQogCiAgICAgUmVmUHRyPEhUTUxWaWRlb0VsZW1lbnQ+IHZpZGVv
RWxlbWVudCA9IG1vZGVsLT52aWRlb0VsZW1lbnQoKTsKICAgICBtb2RlbC0+c2V0VmlkZW9FbGVt
ZW50KG51bGxwdHIpOwotICAgIG1vZGVsLT5zZXRXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2Uo
bnVsbHB0cik7CisgICAgbW9kZWwtPnJlbW92ZUNsaWVudCgqaW50ZXJmYWNlKTsKICAgICBpbnRl
cmZhY2UtPmludmFsaWRhdGUoKTsKICAgICBtX3ZpZGVvRWxlbWVudHMucmVtb3ZlKHZpZGVvRWxl
bWVudC5nZXQoKSk7CiAgICAgbV9jb250ZXh0TWFwLnJlbW92ZShjb250ZXh0SWQpOwpAQCAtMzMx
LDkgKzI3OSwxNCBAQCB2b2lkIFdlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6OmV4aXRWaWRlb0Z1
bGxzY3JlZW5Ub01vZGVXaXRob3V0QW5pbWF0aW9uKFdlYkNvcgogCiAjcHJhZ21hIG1hcmsgSW50
ZXJmYWNlIHRvIFdlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUNvbnRleHQ6CiAKLXZvaWQgV2Vi
VmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6c2V0VmlkZW9EaW1lbnNpb25zKHVpbnQ2NF90IGNvbnRl
eHRJZCwgYm9vbCBoYXNWaWRlbywgZmxvYXQgd2lkdGgsIGZsb2F0IGhlaWdodCkKK3ZvaWQgV2Vi
VmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6aGFzVmlkZW9DaGFuZ2VkKHVpbnQ2NF90IGNvbnRleHRJ
ZCwgYm9vbCBoYXNWaWRlbykKK3sKKyAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OldlYlZpZGVv
RnVsbHNjcmVlbk1hbmFnZXJQcm94eTo6U2V0SGFzVmlkZW8oY29udGV4dElkLCBoYXNWaWRlbyks
IG1fcGFnZS0+cGFnZUlEKCkpOworfQorCit2b2lkIFdlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6
OnZpZGVvRGltZW5zaW9uc0NoYW5nZWQodWludDY0X3QgY29udGV4dElkLCBjb25zdCBGbG9hdFNp
emUmIHZpZGVvRGltZW5zaW9ucykKIHsKLSAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OldlYlZp
ZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eTo6U2V0VmlkZW9EaW1lbnNpb25zKGNvbnRleHRJZCwg
aGFzVmlkZW8sIHdpZHRoLCBoZWlnaHQpLCBtX3BhZ2UtPnBhZ2VJRCgpKTsKKyAgICBtX3BhZ2Ut
PnNlbmQoTWVzc2FnZXM6OldlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eTo6U2V0VmlkZW9E
aW1lbnNpb25zKGNvbnRleHRJZCwgdmlkZW9EaW1lbnNpb25zKSwgbV9wYWdlLT5wYWdlSUQoKSk7
CiB9CiAKICNwcmFnbWEgbWFyayBNZXNzYWdlcyBmcm9tIFdlYlZpZGVvRnVsbHNjcmVlbk1hbmFn
ZXJQcm94eToK
</data>

          </attachment>
      

    </bug>

</bugzilla>