<?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>174038</bug_id>
          
          <creation_ts>2017-06-30 14:02:10 -0700</creation_ts>
          <short_desc>Move store logic from WebResourceLoadStatisticsManager to WebResourceLoadStatisticsStore</short_desc>
          <delta_ts>2017-06-30 22:47:58 -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>WebKit2</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></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Chris Dumez">cdumez</reporter>
          <assigned_to name="Chris Dumez">cdumez</assigned_to>
          <cc>achristensen</cc>
    
    <cc>bfulgham</cc>
    
    <cc>commit-queue</cc>
    
    <cc>ggaren</cc>
    
    <cc>ossy</cc>
    
    <cc>wilander</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1324518</commentid>
    <comment_count>0</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-06-30 14:02:10 -0700</bug_when>
    <thetext>Move store logic from WebResourceLoadStatisticsManager to WebResourceLoadStatisticsStore. WebResourceLoadStatisticsManager will essentially become a WK C API proxy for the WebResourceLoadStatisticsStore.

In a follow-up, the idea is to make WebResourceLoadStatisticsManager not be a singleton and instead be an APIObject for the WebResourceLoadStatisticsStore.
This will require replacing the C API currently used by WKTR with a Cocoa API that works on a WebResourceLoadStatisticsStore, rather than require a singleton.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1324521</commentid>
    <comment_count>1</comment_count>
      <attachid>314285</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-06-30 14:08:22 -0700</bug_when>
    <thetext>Created attachment 314285
WIP Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1324531</commentid>
    <comment_count>2</comment_count>
      <attachid>314290</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-06-30 14:28:39 -0700</bug_when>
    <thetext>Created attachment 314290
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1324535</commentid>
    <comment_count>3</comment_count>
      <attachid>314290</attachid>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2017-06-30 14:32:04 -0700</bug_when>
    <thetext>Comment on attachment 314290
Patch

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

&gt; Source/WebKit2/UIProcess/WebResourceLoadStatisticsStore.cpp:548
&gt; +    // FIXME: Why is this potentially creating a store entry just for querying?

This looks wrong. I can&apos;t find any place that relies on this query having the side-effect of creating a new entry. I suspect this was just a matter of copy/paste as these test routines were added.

&gt; Source/WebKit2/UIProcess/WebResourceLoadStatisticsStore.cpp:569
&gt; +    // FIXME: Why is this potentially creating a store entry just for querying?

Ditto. We should just return &apos;false&apos; if the entry doesn&apos;t exist. These methods should probably be &apos;const&apos;, too.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1324536</commentid>
    <comment_count>4</comment_count>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2017-06-30 14:32:41 -0700</bug_when>
    <thetext>/home/ews/ltilve-gtk-wk2-ews/WebKit/Source/WebKit2/UIProcess/WebsiteData/WebsiteDataStore.cpp:1087:35: error: &apos;class WebKit::WebResourceLoadStatisticsStore&apos; has no member named &apos;clearInMemoryAndPersistentStore&apos;; did you mean &apos;clearInMemoryAndPersistent&apos;?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1324537</commentid>
    <comment_count>5</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-06-30 14:33:28 -0700</bug_when>
    <thetext>(In reply to Brent Fulgham from comment #3)
&gt; Comment on attachment 314290 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=314290&amp;action=review
&gt; 
&gt; &gt; Source/WebKit2/UIProcess/WebResourceLoadStatisticsStore.cpp:548
&gt; &gt; +    // FIXME: Why is this potentially creating a store entry just for querying?
&gt; 
&gt; This looks wrong. I can&apos;t find any place that relies on this query having
&gt; the side-effect of creating a new entry. I suspect this was just a matter of
&gt; copy/paste as these test routines were added.
&gt; 
&gt; &gt; Source/WebKit2/UIProcess/WebResourceLoadStatisticsStore.cpp:569
&gt; &gt; +    // FIXME: Why is this potentially creating a store entry just for querying?
&gt; 
&gt; Ditto. We should just return &apos;false&apos; if the entry doesn&apos;t exist. These
&gt; methods should probably be &apos;const&apos;, too.

I suspect this is wrong indeed. However, I am trying hard not to change behavior in big refactoring patches :) I can take care of this in a follow-up.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1324538</commentid>
    <comment_count>6</comment_count>
      <attachid>314290</attachid>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2017-06-30 14:33:48 -0700</bug_when>
    <thetext>Comment on attachment 314290
Patch

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

&gt; Source/WebKit2/UIProcess/WebsiteData/WebsiteDataStore.cpp:818
&gt; +        m_resourceLoadStatistics-&gt;clearInMemoryAndPersistentStore(modifiedSince);

Should this be &apos;clearInMemoryAndPersistent&apos;?

&gt; Source/WebKit2/UIProcess/WebsiteData/WebsiteDataStore.cpp:1087
&gt; +        m_resourceLoadStatistics-&gt;clearInMemoryAndPersistentStore();

Ditto.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1324539</commentid>
    <comment_count>7</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-06-30 14:34:04 -0700</bug_when>
    <thetext>(In reply to Brent Fulgham from comment #4)
&gt; /home/ews/ltilve-gtk-wk2-ews/WebKit/Source/WebKit2/UIProcess/WebsiteData/
&gt; WebsiteDataStore.cpp:1087:35: error: &apos;class
&gt; WebKit::WebResourceLoadStatisticsStore&apos; has no member named
&gt; &apos;clearInMemoryAndPersistentStore&apos;; did you mean &apos;clearInMemoryAndPersistent&apos;?

Yea yea, I am still building locally :P which is why there is no r? flag.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1324545</commentid>
    <comment_count>8</comment_count>
      <attachid>314295</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-06-30 14:46:07 -0700</bug_when>
    <thetext>Created attachment 314295
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1324552</commentid>
    <comment_count>9</comment_count>
      <attachid>314295</attachid>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2017-06-30 14:49:04 -0700</bug_when>
    <thetext>Comment on attachment 314295
Patch

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1324578</commentid>
    <comment_count>10</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-06-30 15:25:38 -0700</bug_when>
    <thetext>Darn, it looks like I broke something:
Regressions: Unexpected timeouts (2)
  http/tests/loading/resourceLoadStatistics/non-prevalent-resource-without-user-interaction.html [ Timeout ]
  http/tests/loading/resourceLoadStatistics/prevalent-resource-with-user-interaction.html [ Timeout ]

Must have made a copy/paste error somewhere.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1324588</commentid>
    <comment_count>11</comment_count>
      <attachid>314295</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-06-30 15:36:35 -0700</bug_when>
    <thetext>Comment on attachment 314295
Patch

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

&gt; Tools/WebKitTestRunner/InjectedBundle/TestRunner.h:374
&gt; +    void setStatisticsMinimumTimeBetweenDataRecordsRemoval(double);

Ah... the tests use setStatisticsMinimumTimeBetweeenDataRecordsRemoval with 3 &apos;e&apos;s :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1324590</commentid>
    <comment_count>12</comment_count>
      <attachid>314307</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-06-30 15:41:16 -0700</bug_when>
    <thetext>Created attachment 314307
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1324612</commentid>
    <comment_count>13</comment_count>
      <attachid>314307</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-06-30 16:23:02 -0700</bug_when>
    <thetext>Comment on attachment 314307
Patch

Clearing flags on attachment: 314307

Committed r219025: &lt;http://trac.webkit.org/changeset/219025&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1324613</commentid>
    <comment_count>14</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-06-30 16:23:04 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1324781</commentid>
    <comment_count>15</comment_count>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2017-06-30 22:47:58 -0700</bug_when>
    <thetext>(In reply to WebKit Commit Bot from comment #13)
&gt; Comment on attachment 314307 [details]
&gt; Patch
&gt; 
&gt; Clearing flags on attachment: 314307
&gt; 
&gt; Committed r219025: &lt;http://trac.webkit.org/changeset/219025&gt;

It broke the Apple Mac cmake build
https://build.webkit.org/builders/Apple%20El%20Capitan%20CMake%20Debug%20%28Build%29/builds/3035</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>314285</attachid>
            <date>2017-06-30 14:08:22 -0700</date>
            <delta_ts>2017-06-30 14:28:38 -0700</delta_ts>
            <desc>WIP Patch</desc>
            <filename>174038_WebResourceLoadStatisticsManager_to_store_wip.patch</filename>
            <type>text/plain</type>
            <size>53507</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZwppbmRleCA3MTU1NmViMjZmZC4uNjUyMWZmZjAxMmUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQyL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKQEAgLTEs
NSArMSw4MCBAQAogMjAxNy0wNi0zMCAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgog
CisgICAgICAgIE1vdmUgc3RvcmUgbG9naWMgZnJvbSBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNz
TWFuYWdlciB0byBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3NDAzOAorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE1vdmUgc3RvcmUgbG9naWMgZnJvbSBX
ZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWFuYWdlciB0byBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0
aWNzU3RvcmUuCisgICAgICAgIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NNYW5hZ2VyIGlzIG5v
dyBlc3NlbnRpYWxseSBhIHByb3h5IHRvIHRoZQorICAgICAgICBXZWJSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzU3RvcmUgdG8gc3VwcG9ydCB0aGUgY3VycmVudCBDIEFQSS4KKworICAgICAgICBJbiBh
IGZvbGxvdy11cCwgSSBwbGFuIHRvIHRvIHJlcGxhY2UgdGhlIEMgQVBJIHdpdGggYSBDb2NvYSBT
UEkgd2hpY2ggd29ya3Mgb24gYQorICAgICAgICBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3Rv
cmUgZGlyZWN0bHkgaW5zdGVhZCBvZiByZXF1aXJpbmcgYQorICAgICAgICBXZWJSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzTWFuYWdlciBzaW5nbGV0b24uCisKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJ
L0MvV0tSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWFuYWdlci5jcHA6CisgICAgICAgIChXS1Jlc291
cmNlTG9hZFN0YXRpc3RpY3NNYW5hZ2VyU2V0TWluaW11bVRpbWVCZXR3ZWVuRGF0YVJlY29yZHNS
ZW1vdmFsKToKKyAgICAgICAgKFdLUmVzb3VyY2VMb2FkU3RhdGlzdGljc01hbmFnZXJSZXNldFRv
Q29uc2lzdGVudFN0YXRlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvV0tSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzTWFuYWdlci5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9XZWJSZXNv
dXJjZUxvYWRTdGF0aXN0aWNzTWFuYWdlckNvY29hLm1tOiBSZW1vdmVkLgorICAgICAgICAqIFVJ
UHJvY2Vzcy9Db2NvYS9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmVDb2NvYS5tbToKKyAg
ICAgICAgKFdlYktpdDo6V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpyZWdpc3RlclVz
ZXJEZWZhdWx0c0lmTmVlZGVkKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUmVzb3VyY2VMb2Fk
U3RhdGlzdGljc01hbmFnZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJSZXNvdXJjZUxvYWRT
dGF0aXN0aWNzTWFuYWdlcjo6V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc01hbmFnZXIpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWFuYWdlcjo6fldlYlJlc291
cmNlTG9hZFN0YXRpc3RpY3NNYW5hZ2VyKToKKyAgICAgICAgKFdlYktpdDo6V2ViUmVzb3VyY2VM
b2FkU3RhdGlzdGljc01hbmFnZXI6OnNldFN0YXRpc3RpY3NTdG9yZSk6CisgICAgICAgIChXZWJL
aXQ6OldlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NNYW5hZ2VyOjpjbGVhckluTWVtb3J5U3RvcmUp
OgorICAgICAgICAoV2ViS2l0OjpXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWFuYWdlcjo6Y2xl
YXJJbk1lbW9yeUFuZFBlcnNpc3RlbnRTdG9yZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlJlc291
cmNlTG9hZFN0YXRpc3RpY3NNYW5hZ2VyOjpsb2dVc2VySW50ZXJhY3Rpb24pOgorICAgICAgICAo
V2ViS2l0OjpXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWFuYWdlcjo6Y2xlYXJVc2VySW50ZXJh
Y3Rpb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWFuYWdl
cjo6aGFzSGFkVXNlckludGVyYWN0aW9uKToKKyAgICAgICAgKFdlYktpdDo6V2ViUmVzb3VyY2VM
b2FkU3RhdGlzdGljc01hbmFnZXI6OnNldFByZXZhbGVudFJlc291cmNlKToKKyAgICAgICAgKFdl
YktpdDo6V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc01hbmFnZXI6OmlzUHJldmFsZW50UmVzb3Vy
Y2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWFuYWdlcjo6
Y2xlYXJQcmV2YWxlbnRSZXNvdXJjZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlJlc291cmNlTG9h
ZFN0YXRpc3RpY3NNYW5hZ2VyOjpzZXRHcmFuZGZhdGhlcmVkKToKKyAgICAgICAgKFdlYktpdDo6
V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc01hbmFnZXI6OmlzR3JhbmRmYXRoZXJlZCk6CisgICAg
ICAgIChXZWJLaXQ6OldlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NNYW5hZ2VyOjpzZXRTdWJmcmFt
ZVVuZGVyVG9wRnJhbWVPcmlnaW4pOgorICAgICAgICAoV2ViS2l0OjpXZWJSZXNvdXJjZUxvYWRT
dGF0aXN0aWNzTWFuYWdlcjo6c2V0U3VicmVzb3VyY2VVbmRlclRvcEZyYW1lT3JpZ2luKToKKyAg
ICAgICAgKFdlYktpdDo6V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc01hbmFnZXI6OnNldFN1YnJl
c291cmNlVW5pcXVlUmVkaXJlY3RUbyk6CisgICAgICAgIChXZWJLaXQ6OldlYlJlc291cmNlTG9h
ZFN0YXRpc3RpY3NNYW5hZ2VyOjpzZXRUaW1lVG9MaXZlVXNlckludGVyYWN0aW9uKToKKyAgICAg
ICAgKFdlYktpdDo6V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc01hbmFnZXI6OnNldFRpbWVUb0xp
dmVDb29raWVQYXJ0aXRpb25GcmVlKToKKyAgICAgICAgKFdlYktpdDo6V2ViUmVzb3VyY2VMb2Fk
U3RhdGlzdGljc01hbmFnZXI6OnNldE1pbmltdW1UaW1lQmV0d2VlbkRhdGFSZWNvcmRzUmVtb3Zh
bCk6CisgICAgICAgIChXZWJLaXQ6OldlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NNYW5hZ2VyOjpz
ZXRHcmFuZGZhdGhlcmluZ1RpbWUpOgorICAgICAgICAoV2ViS2l0OjpXZWJSZXNvdXJjZUxvYWRT
dGF0aXN0aWNzTWFuYWdlcjo6ZmlyZURhdGFNb2RpZmljYXRpb25IYW5kbGVyKToKKyAgICAgICAg
KFdlYktpdDo6V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc01hbmFnZXI6OmZpcmVTaG91bGRQYXJ0
aXRpb25Db29raWVzSGFuZGxlcik6CisgICAgICAgIChXZWJLaXQ6OldlYlJlc291cmNlTG9hZFN0
YXRpc3RpY3NNYW5hZ2VyOjpmaXJlVGVsZW1ldHJ5SGFuZGxlcik6CisgICAgICAgICogVUlQcm9j
ZXNzL1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NNYW5hZ2VyLmg6CisgICAgICAgICogVUlQcm9j
ZXNzL1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5jcHA6CisgICAgICAgIChXZWJLaXQ6
OnByaW1hcnlEb21haW4pOgorICAgICAgICAoV2ViS2l0OjpXZWJSZXNvdXJjZUxvYWRTdGF0aXN0
aWNzU3RvcmU6OnJlZ2lzdGVyU2hhcmVkUmVzb3VyY2VMb2FkT2JzZXJ2ZXIpOgorICAgICAgICAo
V2ViS2l0OjpXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OmxvZ1VzZXJJbnRlcmFjdGlv
bik6CisgICAgICAgIChXZWJLaXQ6OldlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6Y2xl
YXJVc2VySW50ZXJhY3Rpb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzU3RvcmU6Omhhc0hhZFVzZXJJbnRlcmFjdGlvbik6CisgICAgICAgIChXZWJLaXQ6Oldl
YlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6c2V0UHJldmFsZW50UmVzb3VyY2UpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OmlzUHJldmFsZW50
UmVzb3VyY2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3Rv
cmU6OmNsZWFyUHJldmFsZW50UmVzb3VyY2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzU3RvcmU6OnNldEdyYW5kZmF0aGVyZWQpOgorICAgICAgICAoV2ViS2l0
OjpXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OmlzR3JhbmRmYXRoZXJlZCk6CisgICAg
ICAgIChXZWJLaXQ6OldlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6c2V0U3ViZnJhbWVV
bmRlclRvcEZyYW1lT3JpZ2luKToKKyAgICAgICAgKFdlYktpdDo6V2ViUmVzb3VyY2VMb2FkU3Rh
dGlzdGljc1N0b3JlOjpzZXRTdWJyZXNvdXJjZVVuZGVyVG9wRnJhbWVPcmlnaW4pOgorICAgICAg
ICAoV2ViS2l0OjpXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OnNldFN1YnJlc291cmNl
VW5pcXVlUmVkaXJlY3RUbyk6CisgICAgICAgIChXZWJLaXQ6OldlYlJlc291cmNlTG9hZFN0YXRp
c3RpY3NTdG9yZTo6ZmlyZURhdGFNb2RpZmljYXRpb25IYW5kbGVyKToKKyAgICAgICAgKFdlYktp
dDo6V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpmaXJlU2hvdWxkUGFydGl0aW9uQ29v
a2llc0hhbmRsZXIpOgorICAgICAgICAoV2ViS2l0OjpXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNz
U3RvcmU6OmZpcmVUZWxlbWV0cnlIYW5kbGVyKToKKyAgICAgICAgKFdlYktpdDo6V2ViUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc1N0b3JlOjpjbGVhckluTWVtb3J5KToKKyAgICAgICAgKFdlYktpdDo6
V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpjbGVhckluTWVtb3J5QW5kUGVyc2lzdGVu
dCk6CisgICAgICAgIChXZWJLaXQ6OldlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6c2V0
VGltZVRvTGl2ZVVzZXJJbnRlcmFjdGlvbik6CisgICAgICAgIChXZWJLaXQ6OldlYlJlc291cmNl
TG9hZFN0YXRpc3RpY3NTdG9yZTo6c2V0VGltZVRvTGl2ZUNvb2tpZVBhcnRpdGlvbkZyZWUpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OnNldE1pbmlt
dW1UaW1lQmV0d2VlbkRhdGFSZWNvcmRzUmVtb3ZhbCk6CisgICAgICAgIChXZWJLaXQ6OldlYlJl
c291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6c2V0R3JhbmRmYXRoZXJpbmdUaW1lKToKKyAgICAg
ICAgKiBVSVByb2Nlc3MvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmg6CisgICAgICAg
ICogVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuY3BwOgorICAgICAgICAo
V2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlOjpyZW1vdmVEYXRhKToKKyAgICAgICAgKiBXZWJLaXQy
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisKKzIwMTctMDYtMzAgIENocmlzIER1bWV6ICA8
Y2R1bWV6QGFwcGxlLmNvbT4KKwogICAgICAgICBNb3ZlIFJlc291cmNlTG9hZFN0YXRpc3RpY3NT
dG9yZSB0byBXZWJLaXQyL1VJUHJvY2VzcwogICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTc0MDMzCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvQy9XS1Jlc291cmNlTG9hZFN0YXRpc3RpY3NNYW5hZ2VyLmNwcCBiL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS1Jlc291cmNlTG9hZFN0YXRpc3RpY3NNYW5hZ2Vy
LmNwcAppbmRleCA5ZWUwOGRhYjkzYi4uNjk2YWJjOGVmNWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS1Jlc291cmNlTG9hZFN0YXRpc3RpY3NNYW5hZ2VyLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzTWFuYWdlci5jcHAKQEAgLTk2LDkgKzk2LDkgQEAgdm9pZCBXS1Jlc291cmNlTG9hZFN0
YXRpc3RpY3NNYW5hZ2VyU2V0VGltZVRvTGl2ZUNvb2tpZVBhcnRpdGlvbkZyZWUoZG91YmxlIHNl
Y28KICAgICBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWFuYWdlcjo6c2hhcmVkKCkuc2V0VGlt
ZVRvTGl2ZUNvb2tpZVBhcnRpdGlvbkZyZWUoU2Vjb25kcyB7IHNlY29uZHMgfSk7CiB9CiAKLXZv
aWQgV0tSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWFuYWdlclNldE1pbmltdW1UaW1lQmV0d2VlZW5E
YXRhUmVjb3Jkc1JlbW92YWwoZG91YmxlIHNlY29uZHMpCit2b2lkIFdLUmVzb3VyY2VMb2FkU3Rh
dGlzdGljc01hbmFnZXJTZXRNaW5pbXVtVGltZUJldHdlZW5EYXRhUmVjb3Jkc1JlbW92YWwoZG91
YmxlIHNlY29uZHMpCiB7Ci0gICAgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc01hbmFnZXI6OnNo
YXJlZCgpLnNldE1pbmltdW1UaW1lQmV0d2VlZW5EYXRhUmVjb3Jkc1JlbW92YWwoU2Vjb25kcyB7
IHNlY29uZHMgfSk7CisgICAgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc01hbmFnZXI6OnNoYXJl
ZCgpLnNldE1pbmltdW1UaW1lQmV0d2VlbkRhdGFSZWNvcmRzUmVtb3ZhbChTZWNvbmRzIHsgc2Vj
b25kcyB9KTsKIH0KIAogdm9pZCBXS1Jlc291cmNlTG9hZFN0YXRpc3RpY3NNYW5hZ2VyU2V0R3Jh
bmRmYXRoZXJpbmdUaW1lKGRvdWJsZSBzZWNvbmRzKQpAQCAtMTYzLDcgKzE2Myw3IEBAIHZvaWQg
V0tSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWFuYWdlclJlc2V0VG9Db25zaXN0ZW50U3RhdGUoKQog
ewogICAgIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NNYW5hZ2VyOjpzaGFyZWQoKS5zZXRUaW1l
VG9MaXZlVXNlckludGVyYWN0aW9uKDI0X2ggKiAzMC4pOwogICAgIFdlYlJlc291cmNlTG9hZFN0
YXRpc3RpY3NNYW5hZ2VyOjpzaGFyZWQoKS5zZXRUaW1lVG9MaXZlQ29va2llUGFydGl0aW9uRnJl
ZSgyNF9oKTsKLSAgICBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWFuYWdlcjo6c2hhcmVkKCku
c2V0TWluaW11bVRpbWVCZXR3ZWVlbkRhdGFSZWNvcmRzUmVtb3ZhbCgxX2gpOworICAgIFdlYlJl
c291cmNlTG9hZFN0YXRpc3RpY3NNYW5hZ2VyOjpzaGFyZWQoKS5zZXRNaW5pbXVtVGltZUJldHdl
ZW5EYXRhUmVjb3Jkc1JlbW92YWwoMV9oKTsKICAgICBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNz
TWFuYWdlcjo6c2hhcmVkKCkuc2V0R3JhbmRmYXRoZXJpbmdUaW1lKDFfaCk7CiAgICAgV2ViUmVz
b3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpzZXROb3RpZnlQYWdlc1doZW5EYXRhUmVjb3Jkc1dl
cmVTY2FubmVkKGZhbHNlKTsKICAgICBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzVGVsZW1ldHJ5
OjpzZXROb3RpZnlQYWdlc1doZW5UZWxlbWV0cnlXYXNDYXB0dXJlZChmYWxzZSk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tSZXNvdXJjZUxvYWRTdGF0aXN0
aWNzTWFuYWdlci5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLUmVzb3VyY2VM
b2FkU3RhdGlzdGljc01hbmFnZXIuaAppbmRleCBjMGZhMTNlZWJhMy4uODFmZTI0NGY1YjUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS1Jlc291cmNlTG9hZFN0
YXRpc3RpY3NNYW5hZ2VyLmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dL
UmVzb3VyY2VMb2FkU3RhdGlzdGljc01hbmFnZXIuaApAQCAtNDIsNyArNDIsNyBAQCBleHRlcm4g
IkMiIHsKICAgICBXS19FWFBPUlQgdm9pZCBXS1Jlc291cmNlTG9hZFN0YXRpc3RpY3NNYW5hZ2Vy
U2V0U3VicmVzb3VyY2VVbmlxdWVSZWRpcmVjdFRvKFdLU3RyaW5nUmVmIGhvc3ROYW1lLCBXS1N0
cmluZ1JlZiBob3N0TmFtZVJlZGlyZWN0ZWRUbyk7CiAgICAgV0tfRVhQT1JUIHZvaWQgV0tSZXNv
dXJjZUxvYWRTdGF0aXN0aWNzTWFuYWdlclNldFRpbWVUb0xpdmVVc2VySW50ZXJhY3Rpb24oZG91
YmxlIHNlY29uZHMpOwogICAgIFdLX0VYUE9SVCB2b2lkIFdLUmVzb3VyY2VMb2FkU3RhdGlzdGlj
c01hbmFnZXJTZXRUaW1lVG9MaXZlQ29va2llUGFydGl0aW9uRnJlZShkb3VibGUgc2Vjb25kcyk7
Ci0gICAgV0tfRVhQT1JUIHZvaWQgV0tSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWFuYWdlclNldE1p
bmltdW1UaW1lQmV0d2VlZW5EYXRhUmVjb3Jkc1JlbW92YWwoZG91YmxlIHNlY29uZHMpOworICAg
IFdLX0VYUE9SVCB2b2lkIFdLUmVzb3VyY2VMb2FkU3RhdGlzdGljc01hbmFnZXJTZXRNaW5pbXVt
VGltZUJldHdlZW5EYXRhUmVjb3Jkc1JlbW92YWwoZG91YmxlIHNlY29uZHMpOwogICAgIFdLX0VY
UE9SVCB2b2lkIFdLUmVzb3VyY2VMb2FkU3RhdGlzdGljc01hbmFnZXJTZXRHcmFuZGZhdGhlcmlu
Z1RpbWUoZG91YmxlIHNlY29uZHMpOwogICAgIFdLX0VYUE9SVCB2b2lkIFdLUmVzb3VyY2VMb2Fk
U3RhdGlzdGljc01hbmFnZXJGaXJlRGF0YU1vZGlmaWNhdGlvbkhhbmRsZXIoKTsKICAgICBXS19F
WFBPUlQgdm9pZCBXS1Jlc291cmNlTG9hZFN0YXRpc3RpY3NNYW5hZ2VyRmlyZVNob3VsZFBhcnRp
dGlvbkNvb2tpZXNIYW5kbGVyKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQ29jb2EvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc01hbmFnZXJDb2NvYS5tbSBiL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db2NvYS9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWFuYWdl
ckNvY29hLm1tCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzZTAwOWRmODNmNi4uMDAw
MDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0NvY29hL1dlYlJlc291cmNl
TG9hZFN0YXRpc3RpY3NNYW5hZ2VyQ29jb2EubW0KKysrIC9kZXYvbnVsbApAQCAtMSw1NyArMCww
IEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAq
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICog
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCi0gKi8KLQotI2ltcG9ydCAiY29uZmlnLmgiCi0jaW1wb3J0ICJXZWJSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzTWFuYWdlci5oIgotCi0jaW1wb3J0ICJXZWJQcmVmZXJlbmNlc0tleXMu
aCIKLQotdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7Ci0KLW5hbWVzcGFjZSBXZWJLaXQgewotICAg
IAotdm9pZCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWFuYWdlcjo6cmVnaXN0ZXJVc2VyRGVm
YXVsdHNJZk5lZWRlZCgpCi17Ci0gICAgc3RhdGljIGRpc3BhdGNoX29uY2VfdCBpbml0T25jZTsK
LSAgICAKLSAgICBkaXNwYXRjaF9vbmNlKCZpbml0T25jZSwgXiB7Ci0gICAgICAgIGNvbnN0IHNp
emVfdCBob3VySW5TZWNvbmRzID0gMzYwMDsKLSAgICAgICAgY29uc3Qgc2l6ZV90IGRheUluU2Vj
b25kcyA9IDI0ICogaG91ckluU2Vjb25kczsKLSAgICAgICAgCi0gICAgICAgIGRvdWJsZSB0aW1l
VG9MaXZlVXNlckludGVyYWN0aW9uID0gW1tOU1VzZXJEZWZhdWx0cyBzdGFuZGFyZFVzZXJEZWZh
dWx0c10gZG91YmxlRm9yS2V5OiBXZWJQcmVmZXJlbmNlc0tleTo6cmVzb3VyY2VMb2FkU3RhdGlz
dGljc1RpbWVUb0xpdmVVc2VySW50ZXJhY3Rpb25LZXkoKV07Ci0gICAgICAgIGlmICh0aW1lVG9M
aXZlVXNlckludGVyYWN0aW9uID4gMCAmJiB0aW1lVG9MaXZlVXNlckludGVyYWN0aW9uIDw9IDMw
ICogZGF5SW5TZWNvbmRzKQotICAgICAgICAgICAgc2V0VGltZVRvTGl2ZVVzZXJJbnRlcmFjdGlv
bihTZWNvbmRzIHsgdGltZVRvTGl2ZVVzZXJJbnRlcmFjdGlvbiB9KTsKLSAgICAgICAgCi0gICAg
ICAgIGRvdWJsZSB0aW1lVG9MaXZlQ29va2llUGFydGl0aW9uRnJlZSA9IFtbTlNVc2VyRGVmYXVs
dHMgc3RhbmRhcmRVc2VyRGVmYXVsdHNdIGRvdWJsZUZvcktleTogV2ViUHJlZmVyZW5jZXNLZXk6
OnJlc291cmNlTG9hZFN0YXRpc3RpY3NUaW1lVG9MaXZlQ29va2llUGFydGl0aW9uRnJlZUtleSgp
XTsKLSAgICAgICAgaWYgKHRpbWVUb0xpdmVDb29raWVQYXJ0aXRpb25GcmVlID4gMCAmJiB0aW1l
VG9MaXZlQ29va2llUGFydGl0aW9uRnJlZSA8PSBkYXlJblNlY29uZHMpCi0gICAgICAgICAgICBz
ZXRUaW1lVG9MaXZlQ29va2llUGFydGl0aW9uRnJlZShTZWNvbmRzIHsgdGltZVRvTGl2ZUNvb2tp
ZVBhcnRpdGlvbkZyZWUgfSk7Ci0KLSAgICAgICAgZG91YmxlIGdyYW5kZmF0aGVyaW5nVGltZSA9
IFtbTlNVc2VyRGVmYXVsdHMgc3RhbmRhcmRVc2VyRGVmYXVsdHNdIGRvdWJsZUZvcktleTogV2Vi
UHJlZmVyZW5jZXNLZXk6OnJlc291cmNlTG9hZFN0YXRpc3RpY3NHcmFuZGZhdGhlcmluZ1RpbWVL
ZXkoKV07Ci0gICAgICAgIGlmIChncmFuZGZhdGhlcmluZ1RpbWUgPiAwICYmIGdyYW5kZmF0aGVy
aW5nVGltZSA8PSA3ICogZGF5SW5TZWNvbmRzKQotICAgICAgICAgICAgc2V0R3JhbmRmYXRoZXJp
bmdUaW1lKFNlY29uZHMgeyBncmFuZGZhdGhlcmluZ1RpbWUgfSk7Ci0gICAgfSk7Ci19Ci0KLX0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db2NvYS9XZWJSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzU3RvcmVDb2NvYS5tbSBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db2Nv
YS9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmVDb2NvYS5tbQppbmRleCA1ODdkY2YwMGJi
ZS4uMGMwZjhhMjJhMzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db2Nv
YS9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmVDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQ29jb2EvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlQ29jb2Eu
bW0KQEAgLTI2LDYgKzI2LDggQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbXBvcnQgIldlYlJl
c291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5oIgogCisjaW1wb3J0ICJXZWJQcmVmZXJlbmNlc0tl
eXMuaCIKKwogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKIG5hbWVzcGFjZSBXZWJLaXQgewpA
QCAtMzcsNCArMzksMjYgQEAgdm9pZCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OnBs
YXRmb3JtRXhjbHVkZUZyb21CYWNrdXAoKSBjb25zdAogI2VuZGlmCiB9CiAKK3ZvaWQgV2ViUmVz
b3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpyZWdpc3RlclVzZXJEZWZhdWx0c0lmTmVlZGVkKCkK
K3sKKyAgICBzdGF0aWMgZGlzcGF0Y2hfb25jZV90IGluaXRPbmNlOworCisgICAgZGlzcGF0Y2hf
b25jZSgmaW5pdE9uY2UsIF4geworICAgICAgICBjb25zdCBzaXplX3QgaG91ckluU2Vjb25kcyA9
IDM2MDA7CisgICAgICAgIGNvbnN0IHNpemVfdCBkYXlJblNlY29uZHMgPSAyNCAqIGhvdXJJblNl
Y29uZHM7CisKKyAgICAgICAgZG91YmxlIHRpbWVUb0xpdmVVc2VySW50ZXJhY3Rpb24gPSBbW05T
VXNlckRlZmF1bHRzIHN0YW5kYXJkVXNlckRlZmF1bHRzXSBkb3VibGVGb3JLZXk6IFdlYlByZWZl
cmVuY2VzS2V5OjpyZXNvdXJjZUxvYWRTdGF0aXN0aWNzVGltZVRvTGl2ZVVzZXJJbnRlcmFjdGlv
bktleSgpXTsKKyAgICAgICAgaWYgKHRpbWVUb0xpdmVVc2VySW50ZXJhY3Rpb24gPiAwICYmIHRp
bWVUb0xpdmVVc2VySW50ZXJhY3Rpb24gPD0gMzAgKiBkYXlJblNlY29uZHMpCisgICAgICAgICAg
ICBzZXRUaW1lVG9MaXZlVXNlckludGVyYWN0aW9uKFNlY29uZHMgeyB0aW1lVG9MaXZlVXNlcklu
dGVyYWN0aW9uIH0pOworCisgICAgICAgIGRvdWJsZSB0aW1lVG9MaXZlQ29va2llUGFydGl0aW9u
RnJlZSA9IFtbTlNVc2VyRGVmYXVsdHMgc3RhbmRhcmRVc2VyRGVmYXVsdHNdIGRvdWJsZUZvcktl
eTogV2ViUHJlZmVyZW5jZXNLZXk6OnJlc291cmNlTG9hZFN0YXRpc3RpY3NUaW1lVG9MaXZlQ29v
a2llUGFydGl0aW9uRnJlZUtleSgpXTsKKyAgICAgICAgaWYgKHRpbWVUb0xpdmVDb29raWVQYXJ0
aXRpb25GcmVlID4gMCAmJiB0aW1lVG9MaXZlQ29va2llUGFydGl0aW9uRnJlZSA8PSBkYXlJblNl
Y29uZHMpCisgICAgICAgICAgICBzZXRUaW1lVG9MaXZlQ29va2llUGFydGl0aW9uRnJlZShTZWNv
bmRzIHsgdGltZVRvTGl2ZUNvb2tpZVBhcnRpdGlvbkZyZWUgfSk7CisKKyAgICAgICAgZG91Ymxl
IGdyYW5kZmF0aGVyaW5nVGltZSA9IFtbTlNVc2VyRGVmYXVsdHMgc3RhbmRhcmRVc2VyRGVmYXVs
dHNdIGRvdWJsZUZvcktleTogV2ViUHJlZmVyZW5jZXNLZXk6OnJlc291cmNlTG9hZFN0YXRpc3Rp
Y3NHcmFuZGZhdGhlcmluZ1RpbWVLZXkoKV07CisgICAgICAgIGlmIChncmFuZGZhdGhlcmluZ1Rp
bWUgPiAwICYmIGdyYW5kZmF0aGVyaW5nVGltZSA8PSA3ICogZGF5SW5TZWNvbmRzKQorICAgICAg
ICAgICAgc2V0R3JhbmRmYXRoZXJpbmdUaW1lKFNlY29uZHMgeyBncmFuZGZhdGhlcmluZ1RpbWUg
fSk7CisgICAgfSk7Cit9CisKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc01hbmFnZXIuY3BwCmluZGV4IGQ3NThm
ODMwYjdjLi41Y2IyYzNmODljZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NNYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc01hbmFnZXIuY3BwCkBAIC0yNiw0
MCArMjYsMzEgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJXZWJSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzTWFuYWdlci5oIgogCi0jaW5jbHVkZSAiUmVzb3VyY2VMb2FkU3RhdGlzdGlj
c1N0b3JlLmgiCi0jaW5jbHVkZSA8V2ViQ29yZS9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzLmg+Cisj
aW5jbHVkZSAiV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmgiCiAjaW5jbHVkZSA8V2Vi
Q29yZS9VUkwuaD4KLSNpbmNsdWRlIDx3dGYvQ3Jvc3NUaHJlYWRDb3BpZXIuaD4KICNpbmNsdWRl
IDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KLSNpbmNsdWRlIDx3dGYvUnVuTG9vcC5oPgotI2luY2x1
ZGUgPHd0Zi9Xb3JrUXVldWUuaD4KIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKIHVzaW5nIG5hbWVz
cGFjZSBXZWJDb3JlOwogCi10ZW1wbGF0ZTx0eXBlbmFtZSBUPiBzdGF0aWMgaW5saW5lIFN0cmlu
ZyBwcmltYXJ5RG9tYWluKGNvbnN0IFQmIHZhbHVlKQotewotICAgIHJldHVybiBSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzOjpwcmltYXJ5RG9tYWluKHZhbHVlKTsKLX0KLQogV2ViUmVzb3VyY2VMb2Fk
U3RhdGlzdGljc01hbmFnZXImIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NNYW5hZ2VyOjpzaGFy
ZWQoKQogewogICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxXZWJSZXNvdXJjZUxvYWRTdGF0aXN0
aWNzTWFuYWdlcj4gd2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc01hbmFnZXI7CiAgICAgcmV0dXJu
IHdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NNYW5hZ2VyOwogfQogCi12b2lkIFdlYlJlc291cmNl
TG9hZFN0YXRpc3RpY3NNYW5hZ2VyOjpzZXRTdGF0aXN0aWNzU3RvcmUoUmVmPFJlc291cmNlTG9h
ZFN0YXRpc3RpY3NTdG9yZT4mJiBzdG9yZSkKK1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NNYW5h
Z2VyOjpXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWFuYWdlcigpCiB7Ci0gICAgaWYgKG1fc3Rv
cmUgJiYgbV9xdWV1ZSkKLSAgICAgICAgbV9xdWV1ZSA9IG51bGxwdHI7Ci0gICAgbV9zdG9yZSA9
IFdURk1vdmUoc3RvcmUpOwogfQogCi12b2lkIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NNYW5h
Z2VyOjpzZXRTdGF0aXN0aWNzUXVldWUoUmVmPFdURjo6V29ya1F1ZXVlPiYmIHF1ZXVlKQorV2Vi
UmVzb3VyY2VMb2FkU3RhdGlzdGljc01hbmFnZXI6On5XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNz
TWFuYWdlcigpCiB7Ci0gICAgQVNTRVJUKCFtX3F1ZXVlKTsKLSAgICBtX3F1ZXVlID0gV1RGTW92
ZShxdWV1ZSk7Cit9CisKK3ZvaWQgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc01hbmFnZXI6OnNl
dFN0YXRpc3RpY3NTdG9yZShSZWY8V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlPiYmIHN0
b3JlKQoreworICAgIG1fc3RvcmUgPSBXVEZNb3ZlKHN0b3JlKTsKIH0KIAogdm9pZCBXZWJSZXNv
dXJjZUxvYWRTdGF0aXN0aWNzTWFuYWdlcjo6Y2xlYXJJbk1lbW9yeVN0b3JlKCkKQEAgLTY3LDEw
ICs1OCw3IEBAIHZvaWQgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc01hbmFnZXI6OmNsZWFySW5N
ZW1vcnlTdG9yZSgpCiAgICAgaWYgKCFtX3N0b3JlKQogICAgICAgICByZXR1cm47CiAKLSAgICBB
U1NFUlQobV9xdWV1ZSk7Ci0gICAgbV9xdWV1ZS0+ZGlzcGF0Y2goW3RoaXNdIHsKLSAgICAgICAg
bV9zdG9yZS0+Y2xlYXJJbk1lbW9yeSgpOwotICAgIH0pOworICAgIG1fc3RvcmUtPmNsZWFySW5N
ZW1vcnkoKTsKIH0KIAogdm9pZCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWFuYWdlcjo6Y2xl
YXJJbk1lbW9yeUFuZFBlcnNpc3RlbnRTdG9yZSgpCkBAIC03OCwxMCArNjYsNyBAQCB2b2lkIFdl
YlJlc291cmNlTG9hZFN0YXRpc3RpY3NNYW5hZ2VyOjpjbGVhckluTWVtb3J5QW5kUGVyc2lzdGVu
dFN0b3JlKCkKICAgICBpZiAoIW1fc3RvcmUpCiAgICAgICAgIHJldHVybjsKIAotICAgIEFTU0VS
VChtX3F1ZXVlKTsKLSAgICBtX3F1ZXVlLT5kaXNwYXRjaChbdGhpc10gewotICAgICAgICBtX3N0
b3JlLT5jbGVhckluTWVtb3J5QW5kUGVyc2lzdGVudCgpOwotICAgIH0pOworICAgIG1fc3RvcmUt
PmNsZWFySW5NZW1vcnlBbmRQZXJzaXN0ZW50KCk7CiB9CiAKIHZvaWQgV2ViUmVzb3VyY2VMb2Fk
U3RhdGlzdGljc01hbmFnZXI6OmNsZWFySW5NZW1vcnlBbmRQZXJzaXN0ZW50U3RvcmUoc3RkOjpj
aHJvbm86OnN5c3RlbV9jbG9jazo6dGltZV9wb2ludCBtb2RpZmllZFNpbmNlKQpAQCAtOTMsMTkw
ICs3OCwxNTMgQEAgdm9pZCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWFuYWdlcjo6Y2xlYXJJ
bk1lbW9yeUFuZFBlcnNpc3RlbnRTdG9yZShzdGQ6OmNocm8KIAogdm9pZCBXZWJSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzTWFuYWdlcjo6bG9nVXNlckludGVyYWN0aW9uKGNvbnN0IFVSTCYgdXJsKQog
ewotICAgIGlmICh1cmwuaXNCbGFua1VSTCgpIHx8IHVybC5pc0VtcHR5KCkpCisgICAgaWYgKCFt
X3N0b3JlKQogICAgICAgICByZXR1cm47CiAKLSAgICBBU1NFUlQobV9xdWV1ZSk7Ci0gICAgbV9x
dWV1ZS0+ZGlzcGF0Y2goW3RoaXMsIHByaW1hcnlEb21haW5TdHJpbmcgPSBwcmltYXJ5RG9tYWlu
KHVybCkuaXNvbGF0ZWRDb3B5KCldIHsKLSAgICAgICAgewotICAgICAgICAgICAgYXV0byBsb2Nr
ZXIgPSBob2xkTG9jayhtX3N0b3JlLT5zdGF0aXN0aWNzTG9jaygpKTsKLSAgICAgICAgICAgIGF1
dG8mIHN0YXRpc3RpY3MgPSBtX3N0b3JlLT5lbnN1cmVSZXNvdXJjZVN0YXRpc3RpY3NGb3JQcmlt
YXJ5RG9tYWluKHByaW1hcnlEb21haW5TdHJpbmcpOwotICAgICAgICAgICAgc3RhdGlzdGljcy5o
YWRVc2VySW50ZXJhY3Rpb24gPSB0cnVlOwotICAgICAgICAgICAgc3RhdGlzdGljcy5tb3N0UmVj
ZW50VXNlckludGVyYWN0aW9uVGltZSA9IFdhbGxUaW1lOjpub3coKTsKLSAgICAgICAgfQotCi0g
ICAgICAgIG1fc3RvcmUtPmZpcmVTaG91bGRQYXJ0aXRpb25Db29raWVzSGFuZGxlcih7IHByaW1h
cnlEb21haW5TdHJpbmcgfSwgeyB9LCBmYWxzZSk7Ci0gICAgfSk7CisgICAgbV9zdG9yZS0+bG9n
VXNlckludGVyYWN0aW9uKHVybCk7CiB9CiAKIHZvaWQgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGlj
c01hbmFnZXI6OmNsZWFyVXNlckludGVyYWN0aW9uKGNvbnN0IFVSTCYgdXJsKQogewotICAgIGlm
ICh1cmwuaXNCbGFua1VSTCgpIHx8IHVybC5pc0VtcHR5KCkpCisgICAgaWYgKCFtX3N0b3JlKQog
ICAgICAgICByZXR1cm47CiAKLSAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKG1fc3RvcmUtPnN0
YXRpc3RpY3NMb2NrKCkpOwotICAgIGF1dG8mIHN0YXRpc3RpY3MgPSBtX3N0b3JlLT5lbnN1cmVS
ZXNvdXJjZVN0YXRpc3RpY3NGb3JQcmltYXJ5RG9tYWluKHByaW1hcnlEb21haW4odXJsKSk7Ci0K
LSAgICBzdGF0aXN0aWNzLmhhZFVzZXJJbnRlcmFjdGlvbiA9IGZhbHNlOwotICAgIHN0YXRpc3Rp
Y3MubW9zdFJlY2VudFVzZXJJbnRlcmFjdGlvblRpbWUgPSB7IH07CisgICAgbV9zdG9yZS0+Y2xl
YXJVc2VySW50ZXJhY3Rpb24odXJsKTsKIH0KIAogYm9vbCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0
aWNzTWFuYWdlcjo6aGFzSGFkVXNlckludGVyYWN0aW9uKGNvbnN0IFVSTCYgdXJsKQogewotICAg
IGlmICh1cmwuaXNCbGFua1VSTCgpIHx8IHVybC5pc0VtcHR5KCkpCisgICAgaWYgKCFtX3N0b3Jl
KQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKG1f
c3RvcmUtPnN0YXRpc3RpY3NMb2NrKCkpOwotICAgIGF1dG8mIHN0YXRpc3RpY3MgPSBtX3N0b3Jl
LT5lbnN1cmVSZXNvdXJjZVN0YXRpc3RpY3NGb3JQcmltYXJ5RG9tYWluKHByaW1hcnlEb21haW4o
dXJsKSk7Ci0KLSAgICByZXR1cm4gbV9zdG9yZS0+aGFzSGFkUmVjZW50VXNlckludGVyYWN0aW9u
KHN0YXRpc3RpY3MpOworICAgIHJldHVybiBtX3N0b3JlLT5oYXNIYWRVc2VySW50ZXJhY3Rpb24o
dXJsKTsKIH0KIAogdm9pZCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWFuYWdlcjo6c2V0UHJl
dmFsZW50UmVzb3VyY2UoY29uc3QgVVJMJiB1cmwpCiB7Ci0gICAgaWYgKHVybC5pc0JsYW5rVVJM
KCkgfHwgdXJsLmlzRW1wdHkoKSkKKyAgICBpZiAoIW1fc3RvcmUpCiAgICAgICAgIHJldHVybjsK
IAotICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2sobV9zdG9yZS0+c3RhdGlzdGljc0xvY2soKSk7
Ci0gICAgYXV0byYgc3RhdGlzdGljcyA9IG1fc3RvcmUtPmVuc3VyZVJlc291cmNlU3RhdGlzdGlj
c0ZvclByaW1hcnlEb21haW4ocHJpbWFyeURvbWFpbih1cmwpKTsKLQotICAgIHN0YXRpc3RpY3Mu
aXNQcmV2YWxlbnRSZXNvdXJjZSA9IHRydWU7CisgICAgbV9zdG9yZS0+c2V0UHJldmFsZW50UmVz
b3VyY2UodXJsKTsKIH0KIAogYm9vbCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWFuYWdlcjo6
aXNQcmV2YWxlbnRSZXNvdXJjZShjb25zdCBVUkwmIHVybCkKIHsKLSAgICBpZiAodXJsLmlzQmxh
bmtVUkwoKSB8fCB1cmwuaXNFbXB0eSgpKQorICAgIGlmICghbV9zdG9yZSkKICAgICAgICAgcmV0
dXJuIGZhbHNlOwogCi0gICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhtX3N0b3JlLT5zdGF0aXN0
aWNzTG9jaygpKTsKLSAgICBhdXRvJiBzdGF0aXN0aWNzID0gbV9zdG9yZS0+ZW5zdXJlUmVzb3Vy
Y2VTdGF0aXN0aWNzRm9yUHJpbWFyeURvbWFpbihwcmltYXJ5RG9tYWluKHVybCkpOwotCi0gICAg
cmV0dXJuIHN0YXRpc3RpY3MuaXNQcmV2YWxlbnRSZXNvdXJjZTsKKyAgICByZXR1cm4gbV9zdG9y
ZS0+aXNQcmV2YWxlbnRSZXNvdXJjZSh1cmwpOwogfQogCiB2b2lkIFdlYlJlc291cmNlTG9hZFN0
YXRpc3RpY3NNYW5hZ2VyOjpjbGVhclByZXZhbGVudFJlc291cmNlKGNvbnN0IFVSTCYgdXJsKQog
ewotICAgIGlmICh1cmwuaXNCbGFua1VSTCgpIHx8IHVybC5pc0VtcHR5KCkpCisgICAgaWYgKCFt
X3N0b3JlKQogICAgICAgICByZXR1cm47CiAKLSAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKG1f
c3RvcmUtPnN0YXRpc3RpY3NMb2NrKCkpOwotICAgIGF1dG8mIHN0YXRpc3RpY3MgPSBtX3N0b3Jl
LT5lbnN1cmVSZXNvdXJjZVN0YXRpc3RpY3NGb3JQcmltYXJ5RG9tYWluKHByaW1hcnlEb21haW4o
dXJsKSk7Ci0KLSAgICBzdGF0aXN0aWNzLmlzUHJldmFsZW50UmVzb3VyY2UgPSBmYWxzZTsKKyAg
ICBtX3N0b3JlLT5jbGVhclByZXZhbGVudFJlc291cmNlKHVybCk7CiB9CiAKIHZvaWQgV2ViUmVz
b3VyY2VMb2FkU3RhdGlzdGljc01hbmFnZXI6OnNldEdyYW5kZmF0aGVyZWQoY29uc3QgVVJMJiB1
cmwsIGJvb2wgdmFsdWUpCiB7Ci0gICAgaWYgKHVybC5pc0JsYW5rVVJMKCkgfHwgdXJsLmlzRW1w
dHkoKSkKKyAgICBpZiAoIW1fc3RvcmUpCiAgICAgICAgIHJldHVybjsKIAotICAgIGF1dG8gbG9j
a2VyID0gaG9sZExvY2sobV9zdG9yZS0+c3RhdGlzdGljc0xvY2soKSk7Ci0gICAgYXV0byYgc3Rh
dGlzdGljcyA9IG1fc3RvcmUtPmVuc3VyZVJlc291cmNlU3RhdGlzdGljc0ZvclByaW1hcnlEb21h
aW4ocHJpbWFyeURvbWFpbih1cmwpKTsKLQotICAgIHN0YXRpc3RpY3MuZ3JhbmRmYXRoZXJlZCA9
IHZhbHVlOworICAgIG1fc3RvcmUtPnNldEdyYW5kZmF0aGVyZWQodXJsLCB2YWx1ZSk7CiB9CiAK
IGJvb2wgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc01hbmFnZXI6OmlzR3JhbmRmYXRoZXJlZChj
b25zdCBVUkwmIHVybCkKIHsKLSAgICBpZiAodXJsLmlzQmxhbmtVUkwoKSB8fCB1cmwuaXNFbXB0
eSgpKQorICAgIGlmICghbV9zdG9yZSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgYXV0
byBsb2NrZXIgPSBob2xkTG9jayhtX3N0b3JlLT5zdGF0aXN0aWNzTG9jaygpKTsKLSAgICBhdXRv
JiBzdGF0aXN0aWNzID0gbV9zdG9yZS0+ZW5zdXJlUmVzb3VyY2VTdGF0aXN0aWNzRm9yUHJpbWFy
eURvbWFpbihwcmltYXJ5RG9tYWluKHVybCkpOwotCi0gICAgcmV0dXJuIHN0YXRpc3RpY3MuZ3Jh
bmRmYXRoZXJlZDsKKyAgICByZXR1cm4gbV9zdG9yZS0+aXNHcmFuZGZhdGhlcmVkKHVybCk7CiB9
CiAKIHZvaWQgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc01hbmFnZXI6OnNldFN1YmZyYW1lVW5k
ZXJUb3BGcmFtZU9yaWdpbihjb25zdCBVUkwmIHN1YmZyYW1lLCBjb25zdCBVUkwmIHRvcEZyYW1l
KQogewotICAgIGlmIChzdWJmcmFtZS5pc0JsYW5rVVJMKCkgfHwgc3ViZnJhbWUuaXNFbXB0eSgp
IHx8IHRvcEZyYW1lLmlzQmxhbmtVUkwoKSB8fCB0b3BGcmFtZS5pc0VtcHR5KCkpCisgICAgaWYg
KCFtX3N0b3JlKQogICAgICAgICByZXR1cm47CiAKLSAgICBBU1NFUlQobV9xdWV1ZSk7Ci0gICAg
bV9xdWV1ZS0+ZGlzcGF0Y2goW3RoaXMsIHByaW1hcnlUb3BGcmFtZURvbWFpblN0cmluZyA9IHBy
aW1hcnlEb21haW4odG9wRnJhbWUpLmlzb2xhdGVkQ29weSgpLCBwcmltYXJ5U3ViRnJhbWVEb21h
aW5TdHJpbmcgPSBwcmltYXJ5RG9tYWluKHN1YmZyYW1lKS5pc29sYXRlZENvcHkoKV0gewotICAg
ICAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKG1fc3RvcmUtPnN0YXRpc3RpY3NMb2NrKCkpOwot
ICAgICAgICBhdXRvJiBzdGF0aXN0aWNzID0gbV9zdG9yZS0+ZW5zdXJlUmVzb3VyY2VTdGF0aXN0
aWNzRm9yUHJpbWFyeURvbWFpbihwcmltYXJ5U3ViRnJhbWVEb21haW5TdHJpbmcpOwotICAgICAg
ICBzdGF0aXN0aWNzLnN1YmZyYW1lVW5kZXJUb3BGcmFtZU9yaWdpbnMuYWRkKHByaW1hcnlUb3BG
cmFtZURvbWFpblN0cmluZyk7Ci0gICAgfSk7CisgICAgbV9zdG9yZS0+c2V0U3ViZnJhbWVVbmRl
clRvcEZyYW1lT3JpZ2luKHN1YmZyYW1lLCB0b3BGcmFtZSk7CiB9CiAKIHZvaWQgV2ViUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc01hbmFnZXI6OnNldFN1YnJlc291cmNlVW5kZXJUb3BGcmFtZU9yaWdp
bihjb25zdCBVUkwmIHN1YnJlc291cmNlLCBjb25zdCBVUkwmIHRvcEZyYW1lKQogewotICAgIGlm
IChzdWJyZXNvdXJjZS5pc0JsYW5rVVJMKCkgfHwgc3VicmVzb3VyY2UuaXNFbXB0eSgpIHx8IHRv
cEZyYW1lLmlzQmxhbmtVUkwoKSB8fCB0b3BGcmFtZS5pc0VtcHR5KCkpCisgICAgaWYgKCFtX3N0
b3JlKQogICAgICAgICByZXR1cm47CiAKLSAgICBBU1NFUlQobV9xdWV1ZSk7Ci0gICAgbV9xdWV1
ZS0+ZGlzcGF0Y2goW3RoaXMsIHByaW1hcnlUb3BGcmFtZURvbWFpblN0cmluZyA9IHByaW1hcnlE
b21haW4odG9wRnJhbWUpLmlzb2xhdGVkQ29weSgpLCBwcmltYXJ5U3VicmVzb3VyY2VEb21haW5T
dHJpbmcgPSBwcmltYXJ5RG9tYWluKHN1YnJlc291cmNlKS5pc29sYXRlZENvcHkoKV0gewotICAg
ICAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKG1fc3RvcmUtPnN0YXRpc3RpY3NMb2NrKCkpOwot
ICAgICAgICBhdXRvJiBzdGF0aXN0aWNzID0gbV9zdG9yZS0+ZW5zdXJlUmVzb3VyY2VTdGF0aXN0
aWNzRm9yUHJpbWFyeURvbWFpbihwcmltYXJ5U3VicmVzb3VyY2VEb21haW5TdHJpbmcpOwotICAg
ICAgICBzdGF0aXN0aWNzLnN1YnJlc291cmNlVW5kZXJUb3BGcmFtZU9yaWdpbnMuYWRkKHByaW1h
cnlUb3BGcmFtZURvbWFpblN0cmluZyk7Ci0gICAgfSk7CisgICAgbV9zdG9yZS0+c2V0U3VicmVz
b3VyY2VVbmRlclRvcEZyYW1lT3JpZ2luKHN1YnJlc291cmNlLCB0b3BGcmFtZSk7CiB9CiAKIHZv
aWQgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc01hbmFnZXI6OnNldFN1YnJlc291cmNlVW5pcXVl
UmVkaXJlY3RUbyhjb25zdCBVUkwmIHN1YnJlc291cmNlLCBjb25zdCBVUkwmIGhvc3ROYW1lUmVk
aXJlY3RlZFRvKQogewotICAgIGlmIChzdWJyZXNvdXJjZS5pc0JsYW5rVVJMKCkgfHwgc3VicmVz
b3VyY2UuaXNFbXB0eSgpIHx8IGhvc3ROYW1lUmVkaXJlY3RlZFRvLmlzQmxhbmtVUkwoKSB8fCBo
b3N0TmFtZVJlZGlyZWN0ZWRUby5pc0VtcHR5KCkpCisgICAgaWYgKCFtX3N0b3JlKQogICAgICAg
ICByZXR1cm47CiAKLSAgICBBU1NFUlQobV9xdWV1ZSk7Ci0gICAgbV9xdWV1ZS0+ZGlzcGF0Y2go
W3RoaXMsIHByaW1hcnlSZWRpcmVjdERvbWFpblN0cmluZyA9IHByaW1hcnlEb21haW4oaG9zdE5h
bWVSZWRpcmVjdGVkVG8pLmlzb2xhdGVkQ29weSgpLCBwcmltYXJ5U3VicmVzb3VyY2VEb21haW5T
dHJpbmcgPSBwcmltYXJ5RG9tYWluKHN1YnJlc291cmNlKS5pc29sYXRlZENvcHkoKV0gewotICAg
ICAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKG1fc3RvcmUtPnN0YXRpc3RpY3NMb2NrKCkpOwot
ICAgICAgICBhdXRvJiBzdGF0aXN0aWNzID0gbV9zdG9yZS0+ZW5zdXJlUmVzb3VyY2VTdGF0aXN0
aWNzRm9yUHJpbWFyeURvbWFpbihwcmltYXJ5U3VicmVzb3VyY2VEb21haW5TdHJpbmcpOwotICAg
ICAgICBzdGF0aXN0aWNzLnN1YnJlc291cmNlVW5pcXVlUmVkaXJlY3RzVG8uYWRkKHByaW1hcnlS
ZWRpcmVjdERvbWFpblN0cmluZyk7Ci0gICAgfSk7CisgICAgbV9zdG9yZS0+c2V0U3VicmVzb3Vy
Y2VVbmlxdWVSZWRpcmVjdFRvKHN1YnJlc291cmNlLCBob3N0TmFtZVJlZGlyZWN0ZWRUbyk7CiB9
CiAKIHZvaWQgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc01hbmFnZXI6OnNldFRpbWVUb0xpdmVV
c2VySW50ZXJhY3Rpb24oU2Vjb25kcyBzZWNvbmRzKQogeworICAgIGlmICghbV9zdG9yZSkKKyAg
ICAgICAgcmV0dXJuOworCiAgICAgbV9zdG9yZS0+c2V0VGltZVRvTGl2ZVVzZXJJbnRlcmFjdGlv
bihzZWNvbmRzKTsKIH0KIAogdm9pZCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWFuYWdlcjo6
c2V0VGltZVRvTGl2ZUNvb2tpZVBhcnRpdGlvbkZyZWUoU2Vjb25kcyBzZWNvbmRzKQogeworICAg
IGlmICghbV9zdG9yZSkKKyAgICAgICAgcmV0dXJuOworCiAgICAgbV9zdG9yZS0+c2V0VGltZVRv
TGl2ZUNvb2tpZVBhcnRpdGlvbkZyZWUoc2Vjb25kcyk7CiB9CiAKLXZvaWQgV2ViUmVzb3VyY2VM
b2FkU3RhdGlzdGljc01hbmFnZXI6OnNldE1pbmltdW1UaW1lQmV0d2VlZW5EYXRhUmVjb3Jkc1Jl
bW92YWwoU2Vjb25kcyBzZWNvbmRzKQordm9pZCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWFu
YWdlcjo6c2V0TWluaW11bVRpbWVCZXR3ZWVuRGF0YVJlY29yZHNSZW1vdmFsKFNlY29uZHMgc2Vj
b25kcykKIHsKLSAgICBtX3N0b3JlLT5zZXRNaW5pbXVtVGltZUJldHdlZWVuRGF0YVJlY29yZHNS
ZW1vdmFsKHNlY29uZHMpOworICAgIGlmICghbV9zdG9yZSkKKyAgICAgICAgcmV0dXJuOworCisg
ICAgbV9zdG9yZS0+c2V0TWluaW11bVRpbWVCZXR3ZWVuRGF0YVJlY29yZHNSZW1vdmFsKHNlY29u
ZHMpOwogfQogCiB2b2lkIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NNYW5hZ2VyOjpzZXRHcmFu
ZGZhdGhlcmluZ1RpbWUoU2Vjb25kcyBzZWNvbmRzKQogewotICAgIG1fc3RvcmUtPnNldE1pbmlt
dW1UaW1lQmV0d2VlZW5EYXRhUmVjb3Jkc1JlbW92YWwoc2Vjb25kcyk7CisgICAgaWYgKCFtX3N0
b3JlKQorICAgICAgICByZXR1cm47CisKKyAgICBtX3N0b3JlLT5zZXRHcmFuZGZhdGhlcmluZ1Rp
bWUoc2Vjb25kcyk7CiB9CiAKIHZvaWQgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc01hbmFnZXI6
OmZpcmVEYXRhTW9kaWZpY2F0aW9uSGFuZGxlcigpCiB7Ci0gICAgLy8gSGVscGVyIGZ1bmN0aW9u
IHVzZWQgYnkgdGVzdGluZyBzeXN0ZW0uIFNob3VsZCBvbmx5IGJlIGNhbGxlZCBmcm9tIHRoZSBt
YWluIHRocmVhZC4KLSAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOwotICAgIG1fcXVldWUt
PmRpc3BhdGNoKFt0aGlzXSB7Ci0gICAgICAgIG1fc3RvcmUtPmZpcmVEYXRhTW9kaWZpY2F0aW9u
SGFuZGxlcigpOwotICAgIH0pOworICAgIGlmICghbV9zdG9yZSkKKyAgICAgICAgcmV0dXJuOwor
CisgICAgbV9zdG9yZS0+ZmlyZURhdGFNb2RpZmljYXRpb25IYW5kbGVyKCk7CiB9CiAKIHZvaWQg
V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc01hbmFnZXI6OmZpcmVTaG91bGRQYXJ0aXRpb25Db29r
aWVzSGFuZGxlcigpCiB7Ci0gICAgLy8gSGVscGVyIGZ1bmN0aW9uIHVzZWQgYnkgdGVzdGluZyBz
eXN0ZW0uIFNob3VsZCBvbmx5IGJlIGNhbGxlZCBmcm9tIHRoZSBtYWluIHRocmVhZC4KLSAgICBB
U1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOwotICAgIG1fcXVldWUtPmRpc3BhdGNoKFt0aGlzXSB7
Ci0gICAgICAgIG1fc3RvcmUtPmZpcmVTaG91bGRQYXJ0aXRpb25Db29raWVzSGFuZGxlcigpOwot
ICAgIH0pOworICAgIGlmICghbV9zdG9yZSkKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9zdG9y
ZS0+ZmlyZVNob3VsZFBhcnRpdGlvbkNvb2tpZXNIYW5kbGVyKCk7CiB9CiAKIHZvaWQgV2ViUmVz
b3VyY2VMb2FkU3RhdGlzdGljc01hbmFnZXI6OmZpcmVTaG91bGRQYXJ0aXRpb25Db29raWVzSGFu
ZGxlcihjb25zdCBWZWN0b3I8U3RyaW5nPiYgZG9tYWluc1RvUmVtb3ZlLCBjb25zdCBWZWN0b3I8
U3RyaW5nPiYgZG9tYWluc1RvQWRkLCBib29sIGNsZWFyRmlyc3QpCiB7Ci0gICAgLy8gSGVscGVy
IGZ1bmN0aW9uIHVzZWQgYnkgdGVzdGluZyBzeXN0ZW0uIFNob3VsZCBvbmx5IGJlIGNhbGxlZCBm
cm9tIHRoZSBtYWluIHRocmVhZC4KLSAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOwotICAg
IG1fcXVldWUtPmRpc3BhdGNoKFt0aGlzLCBkb21haW5zVG9SZW1vdmUgPSBDcm9zc1RocmVhZENv
cGllcjxWZWN0b3I8U3RyaW5nPj46OmNvcHkoZG9tYWluc1RvUmVtb3ZlKSwgZG9tYWluc1RvQWRk
ID0gQ3Jvc3NUaHJlYWRDb3BpZXI8VmVjdG9yPFN0cmluZz4+Ojpjb3B5KGRvbWFpbnNUb0FkZCks
IGNsZWFyRmlyc3RdIHsKLSAgICAgICAgbV9zdG9yZS0+ZmlyZVNob3VsZFBhcnRpdGlvbkNvb2tp
ZXNIYW5kbGVyKGRvbWFpbnNUb1JlbW92ZSwgZG9tYWluc1RvQWRkLCBjbGVhckZpcnN0KTsKLSAg
ICB9KTsKKyAgICBpZiAoIW1fc3RvcmUpCisgICAgICAgIHJldHVybjsKKworICAgIG1fc3RvcmUt
PmZpcmVTaG91bGRQYXJ0aXRpb25Db29raWVzSGFuZGxlcihkb21haW5zVG9SZW1vdmUsIGRvbWFp
bnNUb0FkZCwgY2xlYXJGaXJzdCk7CiB9CiAKIHZvaWQgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGlj
c01hbmFnZXI6OmZpcmVUZWxlbWV0cnlIYW5kbGVyKCkKIHsKLSAgICAvLyBIZWxwZXIgZnVuY3Rp
b24gdXNlZCBieSB0ZXN0aW5nIHN5c3RlbS4gU2hvdWxkIG9ubHkgYmUgY2FsbGVkIGZyb20gdGhl
IG1haW4gdGhyZWFkLgotICAgIEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7CisgICAgaWYgKCFt
X3N0b3JlKQorICAgICAgICByZXR1cm47CisKICAgICBtX3N0b3JlLT5maXJlVGVsZW1ldHJ5SGFu
ZGxlcigpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUmVz
b3VyY2VMb2FkU3RhdGlzdGljc01hbmFnZXIuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9X
ZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWFuYWdlci5oCmluZGV4IGViODQ0ZjU1YTI2Li4yMmJi
MjA4MTAwNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlJlc291cmNl
TG9hZFN0YXRpc3RpY3NNYW5hZ2VyLmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dl
YlJlc291cmNlTG9hZFN0YXRpc3RpY3NNYW5hZ2VyLmgKQEAgLTI5LDIyICsyOSwyMyBAQAogI2lu
Y2x1ZGUgPHd0Zi9TZWNvbmRzLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAK
LW5hbWVzcGFjZSBXVEYgewotY2xhc3MgV29ya1F1ZXVlOwotfQotCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiBjbGFzcyBVUkw7CiB9CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCi1jbGFzcyBSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzU3RvcmU7CitjbGFzcyBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3Rv
cmU7CiAKKy8vIEZJWE1FOiBUaGlzIHNob3VsZCBwcm9iYWJseSBiZWNvbWUgYW4gQVBJT2JqZWN0
IGZvciB0aGUgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLgogY2xhc3MgV2ViUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc01hbmFnZXIgewogICAgIGZyaWVuZCBjbGFzcyBOZXZlckRlc3Ryb3ll
ZDxXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWFuYWdlcj47CiBwdWJsaWM6CisgICAgLy8gRklY
TUU6IFRoaXMgc2hvdWxkIG5vdCBiZSBhIHNpbmdsZXRvbi4KICAgICBzdGF0aWMgV2ViUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc01hbmFnZXImIHNoYXJlZCgpOworICAgIHZvaWQgc2V0U3RhdGlzdGlj
c1N0b3JlKFJlZjxXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU+JiYpOworCisgICAgfldl
YlJlc291cmNlTG9hZFN0YXRpc3RpY3NNYW5hZ2VyKCk7CiAKICAgICB2b2lkIGxvZ1VzZXJJbnRl
cmFjdGlvbihjb25zdCBXZWJDb3JlOjpVUkwmKTsKICAgICBib29sIGhhc0hhZFVzZXJJbnRlcmFj
dGlvbihjb25zdCBXZWJDb3JlOjpVUkwmKTsKQEAgLTYyLDcgKzYzLDcgQEAgcHVibGljOgogCiAg
ICAgdm9pZCBzZXRUaW1lVG9MaXZlVXNlckludGVyYWN0aW9uKFNlY29uZHMpOwogICAgIHZvaWQg
c2V0VGltZVRvTGl2ZUNvb2tpZVBhcnRpdGlvbkZyZWUoU2Vjb25kcyk7Ci0gICAgdm9pZCBzZXRN
aW5pbXVtVGltZUJldHdlZWVuRGF0YVJlY29yZHNSZW1vdmFsKFNlY29uZHMpOworICAgIHZvaWQg
c2V0TWluaW11bVRpbWVCZXR3ZWVuRGF0YVJlY29yZHNSZW1vdmFsKFNlY29uZHMpOwogICAgIHZv
aWQgc2V0R3JhbmRmYXRoZXJpbmdUaW1lKFNlY29uZHMpOwogCiAgICAgdm9pZCBmaXJlRGF0YU1v
ZGlmaWNhdGlvbkhhbmRsZXIoKTsKQEAgLTcwLDE5ICs3MSwxNCBAQCBwdWJsaWM6CiAgICAgdm9p
ZCBmaXJlU2hvdWxkUGFydGl0aW9uQ29va2llc0hhbmRsZXIoY29uc3QgVmVjdG9yPFN0cmluZz4m
IGRvbWFpbnNUb1JlbW92ZSwgY29uc3QgVmVjdG9yPFN0cmluZz4mIGRvbWFpbnNUb0FkZCwgYm9v
bCBjbGVhckZpcnN0KTsKICAgICB2b2lkIGZpcmVUZWxlbWV0cnlIYW5kbGVyKCk7CiAKLSAgICB2
b2lkIHNldFN0YXRpc3RpY3NTdG9yZShSZWY8UmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlPiYm
KTsKLSAgICB2b2lkIHNldFN0YXRpc3RpY3NRdWV1ZShSZWY8V1RGOjpXb3JrUXVldWU+JiYpOwog
ICAgIHZvaWQgY2xlYXJJbk1lbW9yeVN0b3JlKCk7CiAgICAgdm9pZCBjbGVhckluTWVtb3J5QW5k
UGVyc2lzdGVudFN0b3JlKCk7CiAgICAgdm9pZCBjbGVhckluTWVtb3J5QW5kUGVyc2lzdGVudFN0
b3JlKHN0ZDo6Y2hyb25vOjpzeXN0ZW1fY2xvY2s6OnRpbWVfcG9pbnQgbW9kaWZpZWRTaW5jZSk7
CiAKLSNpZiBQTEFURk9STShDT0NPQSkKLSAgICB2b2lkIHJlZ2lzdGVyVXNlckRlZmF1bHRzSWZO
ZWVkZWQoKTsKLSNlbmRpZgotCiBwcml2YXRlOgotICAgIFJlZlB0cjxSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzU3RvcmU+IG1fc3RvcmU7Ci0gICAgUmVmUHRyPFdURjo6V29ya1F1ZXVlPiBtX3F1ZXVl
OworICAgIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NNYW5hZ2VyKCk7CisKKyAgICBSZWZQdHI8
V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlPiBtX3N0b3JlOwogfTsKIAogfSAvLyBuYW1l
c3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUmVz
b3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9X
ZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuY3BwCmluZGV4IDM5ZWE0MmQ2MThlLi5kNzJl
ZGVjYzZjNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlJlc291cmNl
TG9hZFN0YXRpc3RpY3NTdG9yZS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dl
YlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5jcHAKQEAgLTU0LDYgKzU0LDExIEBAIHVzaW5n
IG5hbWVzcGFjZSBXZWJDb3JlOwogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAordGVtcGxhdGU8dHlw
ZW5hbWUgVD4gc3RhdGljIGlubGluZSBTdHJpbmcgcHJpbWFyeURvbWFpbihjb25zdCBUJiB2YWx1
ZSkKK3sKKyAgICByZXR1cm4gUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpwcmltYXJ5RG9t
YWluKHZhbHVlKTsKK30KKwogc3RhdGljIGJvb2wgbm90aWZ5UGFnZXNXaGVuRGF0YVJlY29yZHNX
ZXJlU2Nhbm5lZCA9IGZhbHNlOwogc3RhdGljIGJvb2wgc2hvdWxkQ2xhc3NpZnlSZXNvdXJjZXNC
ZWZvcmVEYXRhUmVjb3Jkc1JlbW92YWwgPSB0cnVlOwogc3RhdGljIGF1dG8gc2hvdWxkU3VibWl0
VGVsZW1ldHJ5ID0gdHJ1ZTsKQEAgLTIwNSwxMiArMjEwLDEyIEBAIGJvb2wgV2ViUmVzb3VyY2VM
b2FkU3RhdGlzdGljc1N0b3JlOjpyZXNvdXJjZUxvYWRTdGF0aXN0aWNzRW5hYmxlZCgpIGNvbnN0
CiAgICAgcmV0dXJuIG1fcmVzb3VyY2VMb2FkU3RhdGlzdGljc0VuYWJsZWQ7CiB9CiAKKy8vIEZJ
WE1FOiBUaGlzIHNob3VsZCBiZSByZW5hbWVkLgogdm9pZCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0
aWNzU3RvcmU6OnJlZ2lzdGVyU2hhcmVkUmVzb3VyY2VMb2FkT2JzZXJ2ZXIoKQogewogICAgIEFT
U0VSVChSdW5Mb29wOjppc01haW4oKSk7CiAgICAgCi0gICAgV2ViUmVzb3VyY2VMb2FkU3RhdGlz
dGljc01hbmFnZXI6OnNoYXJlZCgpLnNldFN0YXRpc3RpY3NTdG9yZShtX3Jlc291cmNlTG9hZFN0
YXRpc3RpY3NTdG9yZS5jb3B5UmVmKCkpOwotICAgIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NN
YW5hZ2VyOjpzaGFyZWQoKS5zZXRTdGF0aXN0aWNzUXVldWUobV9zdGF0aXN0aWNzUXVldWUuY29w
eVJlZigpKTsKKyAgICBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWFuYWdlcjo6c2hhcmVkKCku
c2V0U3RhdGlzdGljc1N0b3JlKCp0aGlzKTsKICAgICBtX3Jlc291cmNlTG9hZFN0YXRpc3RpY3NT
dG9yZS0+c2V0Tm90aWZpY2F0aW9uQ2FsbGJhY2soW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtl
UmVmKCp0aGlzKV0gewogICAgICAgICBpZiAobV9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUt
PmlzRW1wdHkoKSkKICAgICAgICAgICAgIHJldHVybjsKQEAgLTIzMiwxMSArMjM3LDEzIEBAIHZv
aWQgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpyZWdpc3RlclNoYXJlZFJlc291cmNl
TG9hZE9ic2VydmVyKCkKICAgICBtX3Jlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS0+c2V0Rmly
ZVRlbGVtZXRyeUNhbGxiYWNrKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyld
IHsKICAgICAgICAgc3VibWl0VGVsZW1ldHJ5KCk7CiAgICAgfSk7CisKICNpZiBQTEFURk9STShD
T0NPQSkKLSAgICBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWFuYWdlcjo6c2hhcmVkKCkucmVn
aXN0ZXJVc2VyRGVmYXVsdHNJZk5lZWRlZCgpOworICAgIHJlZ2lzdGVyVXNlckRlZmF1bHRzSWZO
ZWVkZWQoKTsKICNlbmRpZgogfQotICAgIAorCisvLyBGSVhNRTogVGhpcyBzaG91bGQgYmUgcmVu
YW1lZC4KIHZvaWQgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpyZWdpc3RlclNoYXJl
ZFJlc291cmNlTG9hZE9ic2VydmVyKFdURjo6RnVuY3Rpb248dm9pZChjb25zdCBWZWN0b3I8U3Ry
aW5nPiYgZG9tYWluc1RvUmVtb3ZlLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgZG9tYWluc1RvQWRk
LCBib29sIGNsZWFyRmlyc3QpPiYmIHNob3VsZFBhcnRpdGlvbkNvb2tpZXNGb3JEb21haW5zSGFu
ZGxlcikKIHsKICAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOwpAQCAtNTA1LDUgKzUxMiwy
MDAgQEAgdm9pZCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OnN1Ym1pdFRlbGVtZXRy
eSgpCiAgICAgICAgIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NUZWxlbWV0cnk6OmNhbGN1bGF0
ZUFuZFN1Ym1pdChjb3JlU3RvcmUoKSk7CiAgICAgfSk7CiB9CisKK3ZvaWQgV2ViUmVzb3VyY2VM
b2FkU3RhdGlzdGljc1N0b3JlOjpsb2dVc2VySW50ZXJhY3Rpb24oY29uc3QgVVJMJiB1cmwpCit7
CisgICAgaWYgKHVybC5pc0JsYW5rVVJMKCkgfHwgdXJsLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0
dXJuOworCisgICAgbV9zdGF0aXN0aWNzUXVldWUtPmRpc3BhdGNoKFt0aGlzLCBwcm90ZWN0ZWRU
aGlzID0gbWFrZVJlZigqdGhpcyksIHByaW1hcnlEb21haW5TdHJpbmcgPSBwcmltYXJ5RG9tYWlu
KHVybCkuaXNvbGF0ZWRDb3B5KCldIHsKKyAgICAgICAgeworICAgICAgICAgICAgYXV0byBsb2Nr
ZXIgPSBob2xkTG9jayhjb3JlU3RvcmUoKS5zdGF0aXN0aWNzTG9jaygpKTsKKyAgICAgICAgICAg
IGF1dG8mIHN0YXRpc3RpY3MgPSBjb3JlU3RvcmUoKS5lbnN1cmVSZXNvdXJjZVN0YXRpc3RpY3NG
b3JQcmltYXJ5RG9tYWluKHByaW1hcnlEb21haW5TdHJpbmcpOworICAgICAgICAgICAgc3RhdGlz
dGljcy5oYWRVc2VySW50ZXJhY3Rpb24gPSB0cnVlOworICAgICAgICAgICAgc3RhdGlzdGljcy5t
b3N0UmVjZW50VXNlckludGVyYWN0aW9uVGltZSA9IFdhbGxUaW1lOjpub3coKTsKKyAgICAgICAg
fQorCisgICAgICAgIGNvcmVTdG9yZSgpLmZpcmVTaG91bGRQYXJ0aXRpb25Db29raWVzSGFuZGxl
cih7IHByaW1hcnlEb21haW5TdHJpbmcgfSwgeyB9LCBmYWxzZSk7CisgICAgfSk7Cit9CisKK3Zv
aWQgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpjbGVhclVzZXJJbnRlcmFjdGlvbihj
b25zdCBVUkwmIHVybCkKK3sKKyAgICBpZiAodXJsLmlzQmxhbmtVUkwoKSB8fCB1cmwuaXNFbXB0
eSgpKQorICAgICAgICByZXR1cm47CisKKyAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKGNvcmVT
dG9yZSgpLnN0YXRpc3RpY3NMb2NrKCkpOworICAgIGF1dG8mIHN0YXRpc3RpY3MgPSBjb3JlU3Rv
cmUoKS5lbnN1cmVSZXNvdXJjZVN0YXRpc3RpY3NGb3JQcmltYXJ5RG9tYWluKHByaW1hcnlEb21h
aW4odXJsKSk7CisgICAgc3RhdGlzdGljcy5oYWRVc2VySW50ZXJhY3Rpb24gPSBmYWxzZTsKKyAg
ICBzdGF0aXN0aWNzLm1vc3RSZWNlbnRVc2VySW50ZXJhY3Rpb25UaW1lID0geyB9OworfQorCiti
b29sIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6aGFzSGFkVXNlckludGVyYWN0aW9u
KGNvbnN0IFVSTCYgdXJsKQoreworICAgIGlmICh1cmwuaXNCbGFua1VSTCgpIHx8IHVybC5pc0Vt
cHR5KCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGF1dG8gbG9ja2VyID0gaG9sZExv
Y2soY29yZVN0b3JlKCkuc3RhdGlzdGljc0xvY2soKSk7CisgICAgLy8gRklYTUU6IFdoeSBpcyB0
aGlzIHBvdGVudGlhbGx5IGNyZWF0aW5nIGEgc3RvcmUgZW50cnkganVzdCBmb3IgcXVlcnlpbmc/
CisgICAgYXV0byYgc3RhdGlzdGljcyA9IGNvcmVTdG9yZSgpLmVuc3VyZVJlc291cmNlU3RhdGlz
dGljc0ZvclByaW1hcnlEb21haW4ocHJpbWFyeURvbWFpbih1cmwpKTsKKyAgICByZXR1cm4gY29y
ZVN0b3JlKCkuaGFzSGFkUmVjZW50VXNlckludGVyYWN0aW9uKHN0YXRpc3RpY3MpOworfQorCit2
b2lkIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6c2V0UHJldmFsZW50UmVzb3VyY2Uo
Y29uc3QgVVJMJiB1cmwpCit7CisgICAgaWYgKHVybC5pc0JsYW5rVVJMKCkgfHwgdXJsLmlzRW1w
dHkoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhjb3Jl
U3RvcmUoKS5zdGF0aXN0aWNzTG9jaygpKTsKKyAgICBhdXRvJiBzdGF0aXN0aWNzID0gY29yZVN0
b3JlKCkuZW5zdXJlUmVzb3VyY2VTdGF0aXN0aWNzRm9yUHJpbWFyeURvbWFpbihwcmltYXJ5RG9t
YWluKHVybCkpOworICAgIHN0YXRpc3RpY3MuaXNQcmV2YWxlbnRSZXNvdXJjZSA9IHRydWU7Cit9
CisKK2Jvb2wgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjppc1ByZXZhbGVudFJlc291
cmNlKGNvbnN0IFVSTCYgdXJsKQoreworICAgIGlmICh1cmwuaXNCbGFua1VSTCgpIHx8IHVybC5p
c0VtcHR5KCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGF1dG8gbG9ja2VyID0gaG9s
ZExvY2soY29yZVN0b3JlKCkuc3RhdGlzdGljc0xvY2soKSk7CisgICAgLy8gRklYTUU6IFdoeSBp
cyB0aGlzIHBvdGVudGlhbGx5IGNyZWF0aW5nIGEgc3RvcmUgZW50cnkganVzdCBmb3IgcXVlcnlp
bmc/CisgICAgYXV0byYgc3RhdGlzdGljcyA9IGNvcmVTdG9yZSgpLmVuc3VyZVJlc291cmNlU3Rh
dGlzdGljc0ZvclByaW1hcnlEb21haW4ocHJpbWFyeURvbWFpbih1cmwpKTsKKyAgICByZXR1cm4g
c3RhdGlzdGljcy5pc1ByZXZhbGVudFJlc291cmNlOworfQorCit2b2lkIFdlYlJlc291cmNlTG9h
ZFN0YXRpc3RpY3NTdG9yZTo6Y2xlYXJQcmV2YWxlbnRSZXNvdXJjZShjb25zdCBVUkwmIHVybCkK
K3sKKyAgICBpZiAodXJsLmlzQmxhbmtVUkwoKSB8fCB1cmwuaXNFbXB0eSgpKQorICAgICAgICBy
ZXR1cm47CisKKyAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKGNvcmVTdG9yZSgpLnN0YXRpc3Rp
Y3NMb2NrKCkpOworICAgIGF1dG8mIHN0YXRpc3RpY3MgPSBjb3JlU3RvcmUoKS5lbnN1cmVSZXNv
dXJjZVN0YXRpc3RpY3NGb3JQcmltYXJ5RG9tYWluKHByaW1hcnlEb21haW4odXJsKSk7CisgICAg
c3RhdGlzdGljcy5pc1ByZXZhbGVudFJlc291cmNlID0gZmFsc2U7Cit9CisKK3ZvaWQgV2ViUmVz
b3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpzZXRHcmFuZGZhdGhlcmVkKGNvbnN0IFVSTCYgdXJs
LCBib29sIHZhbHVlKQoreworICAgIGlmICh1cmwuaXNCbGFua1VSTCgpIHx8IHVybC5pc0VtcHR5
KCkpCisgICAgICAgIHJldHVybjsKKworICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2soY29yZVN0
b3JlKCkuc3RhdGlzdGljc0xvY2soKSk7CisgICAgYXV0byYgc3RhdGlzdGljcyA9IGNvcmVTdG9y
ZSgpLmVuc3VyZVJlc291cmNlU3RhdGlzdGljc0ZvclByaW1hcnlEb21haW4ocHJpbWFyeURvbWFp
bih1cmwpKTsKKyAgICBzdGF0aXN0aWNzLmdyYW5kZmF0aGVyZWQgPSB2YWx1ZTsKK30KKworYm9v
bCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OmlzR3JhbmRmYXRoZXJlZChjb25zdCBV
UkwmIHVybCkKK3sKKyAgICBpZiAodXJsLmlzQmxhbmtVUkwoKSB8fCB1cmwuaXNFbXB0eSgpKQor
ICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKGNvcmVT
dG9yZSgpLnN0YXRpc3RpY3NMb2NrKCkpOworICAgIC8vIEZJWE1FOiBXaHkgaXMgdGhpcyBwb3Rl
bnRpYWxseSBjcmVhdGluZyBhIHN0b3JlIGVudHJ5IGp1c3QgZm9yIHF1ZXJ5aW5nPworICAgIGF1
dG8mIHN0YXRpc3RpY3MgPSBjb3JlU3RvcmUoKS5lbnN1cmVSZXNvdXJjZVN0YXRpc3RpY3NGb3JQ
cmltYXJ5RG9tYWluKHByaW1hcnlEb21haW4odXJsKSk7CisgICAgcmV0dXJuIHN0YXRpc3RpY3Mu
Z3JhbmRmYXRoZXJlZDsKK30KKwordm9pZCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6
OnNldFN1YmZyYW1lVW5kZXJUb3BGcmFtZU9yaWdpbihjb25zdCBVUkwmIHN1YmZyYW1lLCBjb25z
dCBVUkwmIHRvcEZyYW1lKQoreworICAgIGlmIChzdWJmcmFtZS5pc0JsYW5rVVJMKCkgfHwgc3Vi
ZnJhbWUuaXNFbXB0eSgpIHx8IHRvcEZyYW1lLmlzQmxhbmtVUkwoKSB8fCB0b3BGcmFtZS5pc0Vt
cHR5KCkpCisgICAgICAgIHJldHVybjsKKworICAgIG1fc3RhdGlzdGljc1F1ZXVlLT5kaXNwYXRj
aChbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBwcmltYXJ5VG9wRnJhbWVE
b21haW5TdHJpbmcgPSBwcmltYXJ5RG9tYWluKHRvcEZyYW1lKS5pc29sYXRlZENvcHkoKSwgcHJp
bWFyeVN1YkZyYW1lRG9tYWluU3RyaW5nID0gcHJpbWFyeURvbWFpbihzdWJmcmFtZSkuaXNvbGF0
ZWRDb3B5KCldIHsKKyAgICAgICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhjb3JlU3RvcmUoKS5z
dGF0aXN0aWNzTG9jaygpKTsKKyAgICAgICAgYXV0byYgc3RhdGlzdGljcyA9IGNvcmVTdG9yZSgp
LmVuc3VyZVJlc291cmNlU3RhdGlzdGljc0ZvclByaW1hcnlEb21haW4ocHJpbWFyeVN1YkZyYW1l
RG9tYWluU3RyaW5nKTsKKyAgICAgICAgc3RhdGlzdGljcy5zdWJmcmFtZVVuZGVyVG9wRnJhbWVP
cmlnaW5zLmFkZChwcmltYXJ5VG9wRnJhbWVEb21haW5TdHJpbmcpOworICAgIH0pOworfQorCit2
b2lkIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6c2V0U3VicmVzb3VyY2VVbmRlclRv
cEZyYW1lT3JpZ2luKGNvbnN0IFVSTCYgc3VicmVzb3VyY2UsIGNvbnN0IFVSTCYgdG9wRnJhbWUp
Cit7CisgICAgaWYgKHN1YnJlc291cmNlLmlzQmxhbmtVUkwoKSB8fCBzdWJyZXNvdXJjZS5pc0Vt
cHR5KCkgfHwgdG9wRnJhbWUuaXNCbGFua1VSTCgpIHx8IHRvcEZyYW1lLmlzRW1wdHkoKSkKKyAg
ICAgICAgcmV0dXJuOworCisgICAgbV9zdGF0aXN0aWNzUXVldWUtPmRpc3BhdGNoKFt0aGlzLCBw
cm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIHByaW1hcnlUb3BGcmFtZURvbWFpblN0cmlu
ZyA9IHByaW1hcnlEb21haW4odG9wRnJhbWUpLmlzb2xhdGVkQ29weSgpLCBwcmltYXJ5U3VicmVz
b3VyY2VEb21haW5TdHJpbmcgPSBwcmltYXJ5RG9tYWluKHN1YnJlc291cmNlKS5pc29sYXRlZENv
cHkoKV0geworICAgICAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKGNvcmVTdG9yZSgpLnN0YXRp
c3RpY3NMb2NrKCkpOworICAgICAgICBhdXRvJiBzdGF0aXN0aWNzID0gY29yZVN0b3JlKCkuZW5z
dXJlUmVzb3VyY2VTdGF0aXN0aWNzRm9yUHJpbWFyeURvbWFpbihwcmltYXJ5U3VicmVzb3VyY2VE
b21haW5TdHJpbmcpOworICAgICAgICBzdGF0aXN0aWNzLnN1YnJlc291cmNlVW5kZXJUb3BGcmFt
ZU9yaWdpbnMuYWRkKHByaW1hcnlUb3BGcmFtZURvbWFpblN0cmluZyk7CisgICAgfSk7Cit9CisK
K3ZvaWQgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpzZXRTdWJyZXNvdXJjZVVuaXF1
ZVJlZGlyZWN0VG8oY29uc3QgVVJMJiBzdWJyZXNvdXJjZSwgY29uc3QgVVJMJiBob3N0TmFtZVJl
ZGlyZWN0ZWRUbykKK3sKKyAgICBpZiAoc3VicmVzb3VyY2UuaXNCbGFua1VSTCgpIHx8IHN1YnJl
c291cmNlLmlzRW1wdHkoKSB8fCBob3N0TmFtZVJlZGlyZWN0ZWRUby5pc0JsYW5rVVJMKCkgfHwg
aG9zdE5hbWVSZWRpcmVjdGVkVG8uaXNFbXB0eSgpKQorICAgICAgICByZXR1cm47CisKKyAgICBt
X3N0YXRpc3RpY3NRdWV1ZS0+ZGlzcGF0Y2goW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVm
KCp0aGlzKSwgcHJpbWFyeVJlZGlyZWN0RG9tYWluU3RyaW5nID0gcHJpbWFyeURvbWFpbihob3N0
TmFtZVJlZGlyZWN0ZWRUbykuaXNvbGF0ZWRDb3B5KCksIHByaW1hcnlTdWJyZXNvdXJjZURvbWFp
blN0cmluZyA9IHByaW1hcnlEb21haW4oc3VicmVzb3VyY2UpLmlzb2xhdGVkQ29weSgpXSB7Cisg
ICAgICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2soY29yZVN0b3JlKCkuc3RhdGlzdGljc0xvY2so
KSk7CisgICAgICAgIGF1dG8mIHN0YXRpc3RpY3MgPSBjb3JlU3RvcmUoKS5lbnN1cmVSZXNvdXJj
ZVN0YXRpc3RpY3NGb3JQcmltYXJ5RG9tYWluKHByaW1hcnlTdWJyZXNvdXJjZURvbWFpblN0cmlu
Zyk7CisgICAgICAgIHN0YXRpc3RpY3Muc3VicmVzb3VyY2VVbmlxdWVSZWRpcmVjdHNUby5hZGQo
cHJpbWFyeVJlZGlyZWN0RG9tYWluU3RyaW5nKTsKKyAgICB9KTsKK30KKwordm9pZCBXZWJSZXNv
dXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OmZpcmVEYXRhTW9kaWZpY2F0aW9uSGFuZGxlcigpCit7
CisgICAgLy8gSGVscGVyIGZ1bmN0aW9uIHVzZWQgYnkgdGVzdGluZyBzeXN0ZW0uIFNob3VsZCBv
bmx5IGJlIGNhbGxlZCBmcm9tIHRoZSBtYWluIHRocmVhZC4KKyAgICBBU1NFUlQoUnVuTG9vcDo6
aXNNYWluKCkpOworICAgIG1fc3RhdGlzdGljc1F1ZXVlLT5kaXNwYXRjaChbdGhpcywgcHJvdGVj
dGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpXSB7CisgICAgICAgIGNvcmVTdG9yZSgpLmZpcmVEYXRh
TW9kaWZpY2F0aW9uSGFuZGxlcigpOworICAgIH0pOworfQorCit2b2lkIFdlYlJlc291cmNlTG9h
ZFN0YXRpc3RpY3NTdG9yZTo6ZmlyZVNob3VsZFBhcnRpdGlvbkNvb2tpZXNIYW5kbGVyKCkKK3sK
KyAgICAvLyBIZWxwZXIgZnVuY3Rpb24gdXNlZCBieSB0ZXN0aW5nIHN5c3RlbS4gU2hvdWxkIG9u
bHkgYmUgY2FsbGVkIGZyb20gdGhlIG1haW4gdGhyZWFkLgorICAgIEFTU0VSVChSdW5Mb29wOjpp
c01haW4oKSk7CisgICAgbV9zdGF0aXN0aWNzUXVldWUtPmRpc3BhdGNoKFt0aGlzLCBwcm90ZWN0
ZWRUaGlzID0gbWFrZVJlZigqdGhpcyldIHsKKyAgICAgICAgY29yZVN0b3JlKCkuZmlyZVNob3Vs
ZFBhcnRpdGlvbkNvb2tpZXNIYW5kbGVyKCk7CisgICAgfSk7Cit9CisKK3ZvaWQgV2ViUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc1N0b3JlOjpmaXJlU2hvdWxkUGFydGl0aW9uQ29va2llc0hhbmRsZXIo
Y29uc3QgVmVjdG9yPFN0cmluZz4mIGRvbWFpbnNUb1JlbW92ZSwgY29uc3QgVmVjdG9yPFN0cmlu
Zz4mIGRvbWFpbnNUb0FkZCwgYm9vbCBjbGVhckZpcnN0KQoreworICAgIC8vIEhlbHBlciBmdW5j
dGlvbiB1c2VkIGJ5IHRlc3Rpbmcgc3lzdGVtLiBTaG91bGQgb25seSBiZSBjYWxsZWQgZnJvbSB0
aGUgbWFpbiB0aHJlYWQuCisgICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKKyAgICBtX3N0
YXRpc3RpY3NRdWV1ZS0+ZGlzcGF0Y2goW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0
aGlzKSwgZG9tYWluc1RvUmVtb3ZlID0gQ3Jvc3NUaHJlYWRDb3BpZXI8VmVjdG9yPFN0cmluZz4+
Ojpjb3B5KGRvbWFpbnNUb1JlbW92ZSksIGRvbWFpbnNUb0FkZCA9IENyb3NzVGhyZWFkQ29waWVy
PFZlY3RvcjxTdHJpbmc+Pjo6Y29weShkb21haW5zVG9BZGQpLCBjbGVhckZpcnN0XSB7CisgICAg
ICAgIGNvcmVTdG9yZSgpLmZpcmVTaG91bGRQYXJ0aXRpb25Db29raWVzSGFuZGxlcihkb21haW5z
VG9SZW1vdmUsIGRvbWFpbnNUb0FkZCwgY2xlYXJGaXJzdCk7CisgICAgfSk7Cit9CisKK3ZvaWQg
V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpmaXJlVGVsZW1ldHJ5SGFuZGxlcigpCit7
CisgICAgLy8gSGVscGVyIGZ1bmN0aW9uIHVzZWQgYnkgdGVzdGluZyBzeXN0ZW0uIFNob3VsZCBv
bmx5IGJlIGNhbGxlZCBmcm9tIHRoZSBtYWluIHRocmVhZC4KKyAgICBBU1NFUlQoUnVuTG9vcDo6
aXNNYWluKCkpOworICAgIGNvcmVTdG9yZSgpLmZpcmVUZWxlbWV0cnlIYW5kbGVyKCk7Cit9CisK
K3ZvaWQgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpjbGVhckluTWVtb3J5KCkKK3sK
KyAgICBtX3N0YXRpc3RpY3NRdWV1ZS0+ZGlzcGF0Y2goW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBt
YWtlUmVmKCp0aGlzKV0geworICAgICAgICBjb3JlU3RvcmUoKS5jbGVhckluTWVtb3J5KCk7Cisg
ICAgfSk7Cit9CisKK3ZvaWQgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpjbGVhcklu
TWVtb3J5QW5kUGVyc2lzdGVudCgpCit7CisgICAgbV9zdGF0aXN0aWNzUXVldWUtPmRpc3BhdGNo
KFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyldIHsKKyAgICAgICAgY29yZVN0
b3JlKCkuY2xlYXJJbk1lbW9yeUFuZFBlcnNpc3RlbnQoKTsKKyAgICB9KTsKK30KKwordm9pZCBX
ZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OnNldFRpbWVUb0xpdmVVc2VySW50ZXJhY3Rp
b24oU2Vjb25kcyBzZWNvbmRzKQoreworICAgIGNvcmVTdG9yZSgpLnNldFRpbWVUb0xpdmVVc2Vy
SW50ZXJhY3Rpb24oc2Vjb25kcyk7Cit9CisKK3ZvaWQgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGlj
c1N0b3JlOjpzZXRUaW1lVG9MaXZlQ29va2llUGFydGl0aW9uRnJlZShTZWNvbmRzIHNlY29uZHMp
Cit7CisgICAgY29yZVN0b3JlKCkuc2V0VGltZVRvTGl2ZUNvb2tpZVBhcnRpdGlvbkZyZWUoc2Vj
b25kcyk7Cit9CisKK3ZvaWQgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpzZXRNaW5p
bXVtVGltZUJldHdlZW5EYXRhUmVjb3Jkc1JlbW92YWwoU2Vjb25kcyBzZWNvbmRzKQoreworICAg
IGNvcmVTdG9yZSgpLnNldE1pbmltdW1UaW1lQmV0d2VlbkRhdGFSZWNvcmRzUmVtb3ZhbChzZWNv
bmRzKTsKK30KKwordm9pZCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OnNldEdyYW5k
ZmF0aGVyaW5nVGltZShTZWNvbmRzIHNlY29uZHMpCit7CisgICAgY29yZVN0b3JlKCkuc2V0R3Jh
bmRmYXRoZXJpbmdUaW1lKHNlY29uZHMpOworfQogICAgIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUmVzb3VyY2VMb2FkU3Rh
dGlzdGljc1N0b3JlLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUmVzb3VyY2VMb2Fk
U3RhdGlzdGljc1N0b3JlLmgKaW5kZXggMzNmZWQ5MjBjN2EuLjQxYWRjZGY3ZmFiIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0
b3JlLmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlJlc291cmNlTG9hZFN0YXRp
c3RpY3NTdG9yZS5oCkBAIC01OSw3ICs1OSw2IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgUmVmPFdl
YlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZT4gY3JlYXRlKGNvbnN0IFN0cmluZyYpOwogICAg
IHN0YXRpYyB2b2lkIHNldE5vdGlmeVBhZ2VzV2hlbkRhdGFSZWNvcmRzV2VyZVNjYW5uZWQoYm9v
bCk7CiAgICAgc3RhdGljIHZvaWQgc2V0U2hvdWxkQ2xhc3NpZnlSZXNvdXJjZXNCZWZvcmVEYXRh
UmVjb3Jkc1JlbW92YWwoYm9vbCk7Ci0gICAgc3RhdGljIHZvaWQgc2V0TWluaW11bVRpbWVCZXR3
ZWVlbkRhdGFSZWNvcmRzUmVtb3ZhbChTZWNvbmRzKTsKICAgICBzdGF0aWMgdm9pZCBzZXRTaG91
bGRTdWJtaXRUZWxlbWV0cnkoYm9vbCk7CiAgICAgdmlydHVhbCB+V2ViUmVzb3VyY2VMb2FkU3Rh
dGlzdGljc1N0b3JlKCk7CiAgICAgCkBAIC03NiwxMiArNzUsMzUgQEAgcHVibGljOgogCiAgICAg
dm9pZCByZWFkRGF0YUZyb21EaXNrSWZOZWVkZWQoKTsKIAotICAgIFJlc291cmNlTG9hZFN0YXRp
c3RpY3NTdG9yZSYgY29yZVN0b3JlKCkgeyByZXR1cm4gbV9yZXNvdXJjZUxvYWRTdGF0aXN0aWNz
U3RvcmUuZ2V0KCk7IH0KLSAgICBjb25zdCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUmIGNv
cmVTdG9yZSgpIGNvbnN0IHsgcmV0dXJuIG1fcmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmdl
dCgpOyB9CisgICAgdm9pZCBsb2dVc2VySW50ZXJhY3Rpb24oY29uc3QgV2ViQ29yZTo6VVJMJik7
CisgICAgdm9pZCBjbGVhclVzZXJJbnRlcmFjdGlvbihjb25zdCBXZWJDb3JlOjpVUkwmKTsKKyAg
ICBib29sIGhhc0hhZFVzZXJJbnRlcmFjdGlvbihjb25zdCBXZWJDb3JlOjpVUkwmKTsKKyAgICB2
b2lkIHNldFByZXZhbGVudFJlc291cmNlKGNvbnN0IFdlYkNvcmU6OlVSTCYpOworICAgIGJvb2wg
aXNQcmV2YWxlbnRSZXNvdXJjZShjb25zdCBXZWJDb3JlOjpVUkwmKTsKKyAgICB2b2lkIGNsZWFy
UHJldmFsZW50UmVzb3VyY2UoY29uc3QgV2ViQ29yZTo6VVJMJik7CisgICAgdm9pZCBzZXRHcmFu
ZGZhdGhlcmVkKGNvbnN0IFdlYkNvcmU6OlVSTCYsIGJvb2wpOworICAgIGJvb2wgaXNHcmFuZGZh
dGhlcmVkKGNvbnN0IFdlYkNvcmU6OlVSTCYpOworICAgIHZvaWQgc2V0U3ViZnJhbWVVbmRlclRv
cEZyYW1lT3JpZ2luKGNvbnN0IFdlYkNvcmU6OlVSTCYgc3ViZnJhbWUsIGNvbnN0IFdlYkNvcmU6
OlVSTCYgdG9wRnJhbWUpOworICAgIHZvaWQgc2V0U3VicmVzb3VyY2VVbmRlclRvcEZyYW1lT3Jp
Z2luKGNvbnN0IFdlYkNvcmU6OlVSTCYgc3VicmVzb3VyY2UsIGNvbnN0IFdlYkNvcmU6OlVSTCYg
dG9wRnJhbWUpOworICAgIHZvaWQgc2V0U3VicmVzb3VyY2VVbmlxdWVSZWRpcmVjdFRvKGNvbnN0
IFdlYkNvcmU6OlVSTCYgc3VicmVzb3VyY2UsIGNvbnN0IFdlYkNvcmU6OlVSTCYgaG9zdE5hbWVS
ZWRpcmVjdGVkVG8pOworICAgIHZvaWQgZmlyZURhdGFNb2RpZmljYXRpb25IYW5kbGVyKCk7Cisg
ICAgdm9pZCBmaXJlU2hvdWxkUGFydGl0aW9uQ29va2llc0hhbmRsZXIoKTsKKyAgICB2b2lkIGZp
cmVTaG91bGRQYXJ0aXRpb25Db29raWVzSGFuZGxlcihjb25zdCBWZWN0b3I8U3RyaW5nPiYgZG9t
YWluc1RvUmVtb3ZlLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgZG9tYWluc1RvQWRkLCBib29sIGNs
ZWFyRmlyc3QpOworICAgIHZvaWQgZmlyZVRlbGVtZXRyeUhhbmRsZXIoKTsKKyAgICB2b2lkIGNs
ZWFySW5NZW1vcnkoKTsKKyAgICB2b2lkIGNsZWFySW5NZW1vcnlBbmRQZXJzaXN0ZW50KCk7CisK
KyAgICB2b2lkIHNldFRpbWVUb0xpdmVVc2VySW50ZXJhY3Rpb24oU2Vjb25kcyk7CisgICAgdm9p
ZCBzZXRUaW1lVG9MaXZlQ29va2llUGFydGl0aW9uRnJlZShTZWNvbmRzKTsKKyAgICB2b2lkIHNl
dE1pbmltdW1UaW1lQmV0d2VlbkRhdGFSZWNvcmRzUmVtb3ZhbChTZWNvbmRzKTsKKyAgICB2b2lk
IHNldEdyYW5kZmF0aGVyaW5nVGltZShTZWNvbmRzKTsKIAogcHJpdmF0ZToKICAgICBleHBsaWNp
dCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUoY29uc3QgU3RyaW5nJik7CiAKKyAgICBS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUmIGNvcmVTdG9yZSgpIHsgcmV0dXJuIG1fcmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc1N0b3JlLmdldCgpOyB9CisgICAgY29uc3QgUmVzb3VyY2VMb2FkU3Rh
dGlzdGljc1N0b3JlJiBjb3JlU3RvcmUoKSBjb25zdCB7IHJldHVybiBtX3Jlc291cmNlTG9hZFN0
YXRpc3RpY3NTdG9yZS5nZXQoKTsgfQorCiAgICAgdm9pZCBwcm9jZXNzU3RhdGlzdGljc0FuZERh
dGFSZWNvcmRzKCk7CiAKICAgICB2b2lkIGNsYXNzaWZ5UmVzb3VyY2UoV2ViQ29yZTo6UmVzb3Vy
Y2VMb2FkU3RhdGlzdGljcyYpOwpAQCAtMTA3LDYgKzEyOSwxMCBAQCBwcml2YXRlOgogICAgIHZv
aWQgdGVsZW1ldHJ5VGltZXJGaXJlZCgpOwogICAgIHZvaWQgc3VibWl0VGVsZW1ldHJ5KCk7CiAK
KyNpZiBQTEFURk9STShDT0NPQSkKKyAgICB2b2lkIHJlZ2lzdGVyVXNlckRlZmF1bHRzSWZOZWVk
ZWQoKTsKKyNlbmRpZgorCiAgICAgUmVmPFJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZT4gbV9y
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU7CiAjaWYgSEFWRShDT1JFX1BSRURJQ1RJT04pCiAg
ICAgUmVzb3VyY2VMb2FkU3RhdGlzdGljc0NsYXNzaWZpZXJDb2NvYSBtX3Jlc291cmNlTG9hZFN0
YXRpc3RpY3NDbGFzc2lmaWVyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuY3BwCmluZGV4IDJmYjljYzU5NjE1Li4x
OTZmNDNkNjBkNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYnNpdGVE
YXRhL1dlYnNpdGVEYXRhU3RvcmUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9X
ZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmNwcApAQCAtMzQsNyArMzQsNiBAQAogI2luY2x1
ZGUgIldlYkNvb2tpZU1hbmFnZXJQcm94eS5oIgogI2luY2x1ZGUgIldlYlByb2Nlc3NNZXNzYWdl
cy5oIgogI2luY2x1ZGUgIldlYlByb2Nlc3NQb29sLmgiCi0jaW5jbHVkZSAiV2ViUmVzb3VyY2VM
b2FkU3RhdGlzdGljc01hbmFnZXIuaCIKICNpbmNsdWRlICJXZWJSZXNvdXJjZUxvYWRTdGF0aXN0
aWNzU3RvcmUuaCIKICNpbmNsdWRlICJXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmVNZXNz
YWdlcy5oIgogI2luY2x1ZGUgIldlYnNpdGVEYXRhLmgiCkBAIC04MTUsOCArODE0LDggQEAgdm9p
ZCBXZWJzaXRlRGF0YVN0b3JlOjpyZW1vdmVEYXRhKE9wdGlvblNldDxXZWJzaXRlRGF0YVR5cGU+
IGRhdGFUeXBlcywgc3RkOjpjaHIKICAgICB9CiAjZW5kaWYKIAotICAgIGlmIChkYXRhVHlwZXMu
Y29udGFpbnMoV2Vic2l0ZURhdGFUeXBlOjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzKSkKLSAgICAg
ICAgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc01hbmFnZXI6OnNoYXJlZCgpLmNsZWFySW5NZW1v
cnlBbmRQZXJzaXN0ZW50U3RvcmUobW9kaWZpZWRTaW5jZSk7CisgICAgaWYgKGRhdGFUeXBlcy5j
b250YWlucyhXZWJzaXRlRGF0YVR5cGU6OlJlc291cmNlTG9hZFN0YXRpc3RpY3MpICYmIG1fcmVz
b3VyY2VMb2FkU3RhdGlzdGljcykKKyAgICAgICAgbV9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzLT5j
bGVhckluTWVtb3J5QW5kUGVyc2lzdGVudFN0b3JlKG1vZGlmaWVkU2luY2UpOwogCiAgICAgLy8g
VGhlcmUncyBhIGNoYW5jZSB0aGF0IHdlIGRvbid0IGhhdmUgYW55IHBlbmRpbmcgY2FsbGJhY2tz
LiBJZiBzbywgd2Ugd2FudCB0byBkaXNwYXRjaCB0aGUgY29tcGxldGlvbiBoYW5kbGVyIHJpZ2h0
IGF3YXkuCiAgICAgY2FsbGJhY2tBZ2dyZWdhdG9yLT5jYWxsSWZOZWVkZWQoKTsKQEAgLTEwODQs
OCArMTA4Myw4IEBAIHZvaWQgV2Vic2l0ZURhdGFTdG9yZTo6cmVtb3ZlRGF0YShPcHRpb25TZXQ8
V2Vic2l0ZURhdGFUeXBlPiBkYXRhVHlwZXMsIGNvbnN0IFZlCiAgICAgfQogI2VuZGlmCiAKLSAg
ICBpZiAoZGF0YVR5cGVzLmNvbnRhaW5zKFdlYnNpdGVEYXRhVHlwZTo6UmVzb3VyY2VMb2FkU3Rh
dGlzdGljcykpCi0gICAgICAgIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NNYW5hZ2VyOjpzaGFy
ZWQoKS5jbGVhckluTWVtb3J5QW5kUGVyc2lzdGVudFN0b3JlKCk7CisgICAgaWYgKGRhdGFUeXBl
cy5jb250YWlucyhXZWJzaXRlRGF0YVR5cGU6OlJlc291cmNlTG9hZFN0YXRpc3RpY3MpICYmIG1f
cmVzb3VyY2VMb2FkU3RhdGlzdGljcykKKyAgICAgICAgbV9yZXNvdXJjZUxvYWRTdGF0aXN0aWNz
LT5jbGVhckluTWVtb3J5QW5kUGVyc2lzdGVudFN0b3JlKCk7CiAKICAgICAvLyBUaGVyZSdzIGEg
Y2hhbmNlIHRoYXQgd2UgZG9uJ3QgaGF2ZSBhbnkgcGVuZGluZyBjYWxsYmFja3MuIElmIHNvLCB3
ZSB3YW50IHRvIGRpc3BhdGNoIHRoZSBjb21wbGV0aW9uIGhhbmRsZXIgcmlnaHQgYXdheS4KICAg
ICBjYWxsYmFja0FnZ3JlZ2F0b3ItPmNhbGxJZk5lZWRlZCgpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvV2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYktp
dDIvV2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDFlZTQ5NjE0YzYyLi4y
YTUzZTY0MjVkNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViS2l0Mi54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYktpdDIueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvagpAQCAtMTE5MSw3ICsxMTkxLDYgQEAKIAkJNjVCODZGMUUxMkYxMURFMzAw
QjdERDhBIC8qIFdLQnVuZGxlSW5zcGVjdG9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA2NUI4NkYxODEyRjExRDdCMDBCN0REOEEgLyogV0tCdW5kbGVJ
bnNwZWN0b3IuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OwogCQk2QjgyMUREQzFFRUYwNUREMDBEN0FGNEEgLyogV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGlj
c1RlbGVtZXRyeS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNkI4MjFEREExRUVGMDVERDAwRDdBRjRBIC8qIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NU
ZWxlbWV0cnkuaCAqLzsgfTsKIAkJNkI4MjFEREQxRUVGMDVERDAwRDdBRjRBIC8qIFdlYlJlc291
cmNlTG9hZFN0YXRpc3RpY3NUZWxlbWV0cnkuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNkI4MjFEREIxRUVGMDVERDAwRDdBRjRBIC8qIFdlYlJlc291
cmNlTG9hZFN0YXRpc3RpY3NUZWxlbWV0cnkuY3BwICovOyB9OwotCQk2QkJCQUQzODFFQzNFNTc4
MDBBRDBBMkEgLyogV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc01hbmFnZXJDb2NvYS5tbSBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDZCQkJBRDM3MUVDM0U1
NjMwMEFEMEEyQSAvKiBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWFuYWdlckNvY29hLm1tICov
OyB9OwogCQk2QkU5Njk5QzFFNDNCM0ZGMDA4Qjc0ODMgLyogV0tSZXNvdXJjZUxvYWRTdGF0aXN0
aWNzTWFuYWdlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNkJFOTY5OUIxRTQzQjNGRjAwOEI3NDgzIC8qIFdLUmVzb3VyY2VMb2FkU3RhdGlzdGljc01h
bmFnZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owog
CQk2QkU5Njk5RTFFNDNCNDFEMDA4Qjc0ODMgLyogV0tSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWFu
YWdlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2
QkU5Njk5RDFFNDNCNDFEMDA4Qjc0ODMgLyogV0tSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWFuYWdl
ci5jcHAgKi87IH07CiAJCTZCRTk2OUEwMUU0M0I4NkUwMDhCNzQ4MyAvKiBXZWJSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzTWFuYWdlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNkJFOTY5OUYxRTQzQjg2RTAwOEI3NDgzIC8qIFdlYlJlc291cmNlTG9hZFN0
YXRpc3RpY3NNYW5hZ2VyLmggKi87IH07CkBAIC0zNDgzLDcgKzM0ODIsNiBAQAogCQk2NUI4NkYx
ODEyRjExRDdCMDBCN0REOEEgLyogV0tCdW5kbGVJbnNwZWN0b3IuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gV0tCdW5kbGVJbnNwZWN0b3IuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJNkI4MjFEREExRUVGMDVERDAwRDdBRjRBIC8qIFdlYlJlc291cmNlTG9hZFN0
YXRpc3RpY3NUZWxlbWV0cnkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViUmVzb3VyY2VMb2FkU3RhdGlz
dGljc1RlbGVtZXRyeS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk2QjgyMUREQjFF
RUYwNUREMDBEN0FGNEEgLyogV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1RlbGVtZXRyeS5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzVGVsZW1ldHJ5LmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNkJCQkFEMzcxRUMzRTU2MzAwQUQwQTJB
IC8qIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NNYW5hZ2VyQ29jb2EubW0gKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWFu
YWdlckNvY29hLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk2QkU5Njk5QjFFNDNC
M0ZGMDA4Qjc0ODMgLyogV0tSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWFuYWdlci5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXS1Jlc291cmNlTG9hZFN0YXRpc3RpY3NNYW5hZ2Vy
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTZCRTk2OTlEMUU0M0I0MUQwMDhCNzQ4
MyAvKiBXS1Jlc291cmNlTG9hZFN0YXRpc3RpY3NNYW5hZ2VyLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdLUmVzb3VyY2VMb2FkU3RhdGlzdGljc01hbmFnZXIuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk2QkU5Njk5RjFFNDNCODZFMDA4Qjc0ODMg
LyogV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc01hbmFnZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc01hbmFnZXIuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTUyMzAsNyArNTIyOCw2IEBACiAJCQkJQ0RBMjlBMUYx
Q0JFQjVGQjAwOTAxQ0NGIC8qIFdlYlBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eS5tbSAqLywK
IAkJCQk3Q0U0RDIxNTFBNDkxNDg0MDBDN0YxNTIgLyogV2ViUHJvY2Vzc1Bvb2xDb2NvYS5tbSAq
LywKIAkJCQkxQTA0RjYxNzFBNEEzQTdBMDBBMjFCNkUgLyogV2ViUHJvY2Vzc1Byb3h5Q29jb2Eu
bW0gKi8sCi0JCQkJNkJCQkFEMzcxRUMzRTU2MzAwQUQwQTJBIC8qIFdlYlJlc291cmNlTG9hZFN0
YXRpc3RpY3NNYW5hZ2VyQ29jb2EubW0gKi8sCiAJCQkJN0FBRDE3NUUxRUE2QUYzNzAwM0IwODk0
IC8qIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZUNvY29hLm1tICovLAogCQkJCTUxRDEy
NDMxMUU2REU1MjEwMDJCMjgyMCAvKiBXZWJVUkxTY2hlbWVIYW5kbGVyQ29jb2EuaCAqLywKIAkJ
CQk1MUQxMjQzMjFFNkRFNTIxMDAyQjI4MjAgLyogV2ViVVJMU2NoZW1lSGFuZGxlckNvY29hLm1t
ICovLApAQCAtMTA0MzYsNyArMTA0MzMsNiBAQAogCQkJCTUxMEFGRkI5MTY1NDIwNDgwMDFCQTA1
RSAvKiBXZWJSZXNvdXJjZUxvYWRlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1MUYwNjBFMTE2
NTQzMTg1MDBGMzI4MUIgLyogV2ViUmVzb3VyY2VMb2FkZXJNZXNzYWdlUmVjZWl2ZXIuY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJNkJFOTY5QTIxRTQzQjhBNDAwOEI3NDgzIC8qIFdlYlJlc291cmNl
TG9hZFN0YXRpc3RpY3NNYW5hZ2VyLmNwcCBpbiBTb3VyY2VzICovLAotCQkJCTZCQkJBRDM4MUVD
M0U1NzgwMEFEMEEyQSAvKiBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWFuYWdlckNvY29hLm1t
IGluIFNvdXJjZXMgKi8sCiAJCQkJN0E3OTFFRkMxQzdEMDhDNTAwQzRDNTJCIC8qIFdlYlJlc291
cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk3QUFEMTc1RjFF
QTZBRjk5MDAzQjA4OTQgLyogV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlQ29jb2EubW0g
aW4gU291cmNlcyAqLywKIAkJCQk3QTc5MUVGQTFDN0NGQ0YxMDBDNEM1MkIgLyogV2ViUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc1N0b3JlTWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2VzICovLApk
aWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IGYxNjZm
ODQ3YWNlLi42OGFiZmQ1NTRjMCAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rv
b2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIyIEBACisyMDE3LTA2LTMwICBDaHJpcyBEdW1leiAg
PGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgTW92ZSBzdG9yZSBsb2dpYyBmcm9tIFdlYlJl
c291cmNlTG9hZFN0YXRpc3RpY3NNYW5hZ2VyIHRvIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NT
dG9yZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc0
MDM4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgRml4
IHR5cG8gaW4gQVBJIG5hbWUuCisKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL0luamVjdGVk
QnVuZGxlL0JpbmRpbmdzL1Rlc3RSdW5uZXIuaWRsOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5u
ZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5jcHA6CisgICAgICAgIChXVFI6OlRlc3RSdW5u
ZXI6OnNldFN0YXRpc3RpY3NNaW5pbXVtVGltZUJldHdlZW5EYXRhUmVjb3Jkc1JlbW92YWwpOgor
ICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5oOgor
ICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuY3BwOgorICAgICAgICAo
V1RSOjpUZXN0Q29udHJvbGxlcjo6c2V0U3RhdGlzdGljc01pbmltdW1UaW1lQmV0d2VlbkRhdGFS
ZWNvcmRzUmVtb3ZhbCk6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxl
ci5oOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvVGVzdEludm9jYXRpb24uY3BwOgorICAg
ICAgICAoV1RSOjpUZXN0SW52b2NhdGlvbjo6ZGlkUmVjZWl2ZVN5bmNocm9ub3VzTWVzc2FnZUZy
b21JbmplY3RlZEJ1bmRsZSk6CisKIDIwMTctMDYtMzAgIEpvbmF0aGFuIEJlZGFyZCAgPGpiZWRh
cmRAYXBwbGUuY29tPgogCiAgICAgICAgIEZvbGxvdy11cCBmaXggZm9yIHIyMTg5OTYKZGlmZiAt
LWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQmluZGluZ3MvVGVz
dFJ1bm5lci5pZGwgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0JpbmRp
bmdzL1Rlc3RSdW5uZXIuaWRsCmluZGV4IDRmMDg3ZjJhNWM5Li41Nzc2YjljODBkNCAxMDA2NDQK
LS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9CaW5kaW5ncy9UZXN0
UnVubmVyLmlkbAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0Jp
bmRpbmdzL1Rlc3RSdW5uZXIuaWRsCkBAIC0yNzIsNyArMjcyLDcgQEAgaW50ZXJmYWNlIFRlc3RS
dW5uZXIgewogICAgIHZvaWQgc2V0U3RhdGlzdGljc05vdGlmeVBhZ2VzV2hlbkRhdGFSZWNvcmRz
V2VyZVNjYW5uZWQoYm9vbGVhbiB2YWx1ZSk7CiAgICAgdm9pZCBzZXRTdGF0aXN0aWNzU2hvdWxk
Q2xhc3NpZnlSZXNvdXJjZXNCZWZvcmVEYXRhUmVjb3Jkc1JlbW92YWwoYm9vbGVhbiB2YWx1ZSk7
CiAgICAgdm9pZCBzZXRTdGF0aXN0aWNzTm90aWZ5UGFnZXNXaGVuVGVsZW1ldHJ5V2FzQ2FwdHVy
ZWQoYm9vbGVhbiB2YWx1ZSk7Ci0gICAgdm9pZCBzZXRTdGF0aXN0aWNzTWluaW11bVRpbWVCZXR3
ZWVlbkRhdGFSZWNvcmRzUmVtb3ZhbChkb3VibGUgc2Vjb25kcyk7CisgICAgdm9pZCBzZXRTdGF0
aXN0aWNzTWluaW11bVRpbWVCZXR3ZWVuRGF0YVJlY29yZHNSZW1vdmFsKGRvdWJsZSBzZWNvbmRz
KTsKICAgICB2b2lkIHNldFN0YXRpc3RpY3NHcmFuZGZhdGhlcmluZ1RpbWUoZG91YmxlIHNlY29u
ZHMpOwogICAgIHZvaWQgc3RhdGlzdGljc0NsZWFySW5NZW1vcnlBbmRQZXJzaXN0ZW50U3RvcmUo
KTsKICAgICB2b2lkIHN0YXRpc3RpY3NDbGVhckluTWVtb3J5QW5kUGVyc2lzdGVudFN0b3JlTW9k
aWZpZWRTaW5jZUhvdXJzKHVuc2lnbmVkIGxvbmcgaG91cnMpOwpkaWZmIC0tZ2l0IGEvVG9vbHMv
V2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVubmVyLmNwcCBiL1Rvb2xzL1dl
YktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5jcHAKaW5kZXggODgzMWY4
ZDk3MmQuLjFhYTBlNWQ1OWE3IDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0lu
amVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIuY3BwCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIv
SW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5jcHAKQEAgLTE0ODAsOSArMTQ4MCw5IEBAIHZvaWQg
VGVzdFJ1bm5lcjo6c2V0U3RhdGlzdGljc05vdGlmeVBhZ2VzV2hlblRlbGVtZXRyeVdhc0NhcHR1
cmVkKGJvb2wgdmFsdWUpCiAgICAgV0tSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWFuYWdlclNldE5v
dGlmeVBhZ2VzV2hlblRlbGVtZXRyeVdhc0NhcHR1cmVkKHZhbHVlKTsKIH0KIAotdm9pZCBUZXN0
UnVubmVyOjpzZXRTdGF0aXN0aWNzTWluaW11bVRpbWVCZXR3ZWVlbkRhdGFSZWNvcmRzUmVtb3Zh
bChkb3VibGUgc2Vjb25kcykKK3ZvaWQgVGVzdFJ1bm5lcjo6c2V0U3RhdGlzdGljc01pbmltdW1U
aW1lQmV0d2VlbkRhdGFSZWNvcmRzUmVtb3ZhbChkb3VibGUgc2Vjb25kcykKIHsKLSAgICBXS1Jl
dGFpblB0cjxXS1N0cmluZ1JlZj4gbWVzc2FnZU5hbWUoQWRvcHRXSywgV0tTdHJpbmdDcmVhdGVX
aXRoVVRGOENTdHJpbmcoIlNldFN0YXRpc3RpY3NNaW5pbXVtVGltZUJldHdlZWVuRGF0YVJlY29y
ZHNSZW1vdmFsIikpOworICAgIFdLUmV0YWluUHRyPFdLU3RyaW5nUmVmPiBtZXNzYWdlTmFtZShB
ZG9wdFdLLCBXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygiU2V0U3RhdGlzdGljc01pbmlt
dW1UaW1lQmV0d2VlbkRhdGFSZWNvcmRzUmVtb3ZhbCIpKTsKICAgICBXS1JldGFpblB0cjxXS0Rv
dWJsZVJlZj4gbWVzc2FnZUJvZHkoQWRvcHRXSywgV0tEb3VibGVDcmVhdGUoc2Vjb25kcykpOwog
ICAgIFdLQnVuZGxlUG9zdFN5bmNocm9ub3VzTWVzc2FnZShJbmplY3RlZEJ1bmRsZTo6c2luZ2xl
dG9uKCkuYnVuZGxlKCksIG1lc3NhZ2VOYW1lLmdldCgpLCBtZXNzYWdlQm9keS5nZXQoKSwgbnVs
bHB0cik7CiB9CmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVu
ZGxlL1Rlc3RSdW5uZXIuaCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUv
VGVzdFJ1bm5lci5oCmluZGV4IGFjYjE5NmQ4NDNkLi40YTk5YzhjMjZlZSAxMDA2NDQKLS0tIGEv
VG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVubmVyLmgKKysrIGIv
VG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVubmVyLmgKQEAgLTM3
MSw3ICszNzEsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRTdGF0aXN0aWNzTm90aWZ5UGFnZXNX
aGVuRGF0YVJlY29yZHNXZXJlU2Nhbm5lZChib29sKTsKICAgICB2b2lkIHNldFN0YXRpc3RpY3NT
aG91bGRDbGFzc2lmeVJlc291cmNlc0JlZm9yZURhdGFSZWNvcmRzUmVtb3ZhbChib29sKTsKICAg
ICB2b2lkIHNldFN0YXRpc3RpY3NOb3RpZnlQYWdlc1doZW5UZWxlbWV0cnlXYXNDYXB0dXJlZChi
b29sIHZhbHVlKTsKLSAgICB2b2lkIHNldFN0YXRpc3RpY3NNaW5pbXVtVGltZUJldHdlZWVuRGF0
YVJlY29yZHNSZW1vdmFsKGRvdWJsZSk7CisgICAgdm9pZCBzZXRTdGF0aXN0aWNzTWluaW11bVRp
bWVCZXR3ZWVuRGF0YVJlY29yZHNSZW1vdmFsKGRvdWJsZSk7CiAgICAgdm9pZCBzZXRTdGF0aXN0
aWNzR3JhbmRmYXRoZXJpbmdUaW1lKGRvdWJsZSBzZWNvbmRzKTsKICAgICB2b2lkIHN0YXRpc3Rp
Y3NDbGVhckluTWVtb3J5QW5kUGVyc2lzdGVudFN0b3JlKCk7CiAgICAgdm9pZCBzdGF0aXN0aWNz
Q2xlYXJJbk1lbW9yeUFuZFBlcnNpc3RlbnRTdG9yZU1vZGlmaWVkU2luY2VIb3Vycyh1bnNpZ25l
ZCBob3Vycyk7CmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9s
bGVyLmNwcCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuY3BwCmluZGV4
IDk3ODM5ZGY2MzcwLi44YWE2YTY4MGUyNSAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1
bm5lci9UZXN0Q29udHJvbGxlci5jcHAKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0
Q29udHJvbGxlci5jcHAKQEAgLTIyOTksOSArMjI5OSw5IEBAIHZvaWQgVGVzdENvbnRyb2xsZXI6
OnNldFN0YXRpc3RpY3NOb3RpZnlQYWdlc1doZW5UZWxlbWV0cnlXYXNDYXB0dXJlZChib29sIHZh
bHVlCiAgICAgV0tSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWFuYWdlclNldE5vdGlmeVBhZ2VzV2hl
blRlbGVtZXRyeVdhc0NhcHR1cmVkKHZhbHVlKTsKIH0KICAgICAKLXZvaWQgVGVzdENvbnRyb2xs
ZXI6OnNldFN0YXRpc3RpY3NNaW5pbXVtVGltZUJldHdlZWVuRGF0YVJlY29yZHNSZW1vdmFsKGRv
dWJsZSBzZWNvbmRzKQordm9pZCBUZXN0Q29udHJvbGxlcjo6c2V0U3RhdGlzdGljc01pbmltdW1U
aW1lQmV0d2VlbkRhdGFSZWNvcmRzUmVtb3ZhbChkb3VibGUgc2Vjb25kcykKIHsKLSAgICBXS1Jl
c291cmNlTG9hZFN0YXRpc3RpY3NNYW5hZ2VyU2V0TWluaW11bVRpbWVCZXR3ZWVlbkRhdGFSZWNv
cmRzUmVtb3ZhbChzZWNvbmRzKTsKKyAgICBXS1Jlc291cmNlTG9hZFN0YXRpc3RpY3NNYW5hZ2Vy
U2V0TWluaW11bVRpbWVCZXR3ZWVuRGF0YVJlY29yZHNSZW1vdmFsKHNlY29uZHMpOwogfQogCiB2
b2lkIFRlc3RDb250cm9sbGVyOjpzZXRTdGF0aXN0aWNzR3JhbmRmYXRoZXJpbmdUaW1lKGRvdWJs
ZSBzZWNvbmRzKQpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJv
bGxlci5oIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5oCmluZGV4IDdl
ZGM3MjQ4YWNmLi42MWIxODZiMWM3NiAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5l
ci9UZXN0Q29udHJvbGxlci5oCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRy
b2xsZXIuaApAQCAtMTY4LDcgKzE2OCw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldFN0YXRpc3Rp
Y3NOb3RpZnlQYWdlc1doZW5EYXRhUmVjb3Jkc1dlcmVTY2FubmVkKGJvb2wpOwogICAgIHZvaWQg
c2V0U3RhdGlzdGljc1Nob3VsZENsYXNzaWZ5UmVzb3VyY2VzQmVmb3JlRGF0YVJlY29yZHNSZW1v
dmFsKGJvb2wpOwogICAgIHZvaWQgc2V0U3RhdGlzdGljc05vdGlmeVBhZ2VzV2hlblRlbGVtZXRy
eVdhc0NhcHR1cmVkKGJvb2wgdmFsdWUpOwotICAgIHZvaWQgc2V0U3RhdGlzdGljc01pbmltdW1U
aW1lQmV0d2VlZW5EYXRhUmVjb3Jkc1JlbW92YWwoZG91YmxlKTsKKyAgICB2b2lkIHNldFN0YXRp
c3RpY3NNaW5pbXVtVGltZUJldHdlZW5EYXRhUmVjb3Jkc1JlbW92YWwoZG91YmxlKTsKICAgICB2
b2lkIHNldFN0YXRpc3RpY3NHcmFuZGZhdGhlcmluZ1RpbWUoZG91YmxlIHNlY29uZHMpOwogICAg
IHZvaWQgc3RhdGlzdGljc0NsZWFySW5NZW1vcnlBbmRQZXJzaXN0ZW50U3RvcmUoKTsKICAgICB2
b2lkIHN0YXRpc3RpY3NDbGVhckluTWVtb3J5QW5kUGVyc2lzdGVudFN0b3JlTW9kaWZpZWRTaW5j
ZUhvdXJzKHVuc2lnbmVkKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVz
dEludm9jYXRpb24uY3BwIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0SW52b2NhdGlvbi5j
cHAKaW5kZXggMzBlZmQ5NWRjMTguLjEzMzU2MjVjNDA3IDEwMDY0NAotLS0gYS9Ub29scy9XZWJL
aXRUZXN0UnVubmVyL1Rlc3RJbnZvY2F0aW9uLmNwcAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVu
bmVyL1Rlc3RJbnZvY2F0aW9uLmNwcApAQCAtMTA4NywxMCArMTA4NywxMCBAQCBXS1JldGFpblB0
cjxXS1R5cGVSZWY+IFRlc3RJbnZvY2F0aW9uOjpkaWRSZWNlaXZlU3luY2hyb25vdXNNZXNzYWdl
RnJvbUluamVjdGVkQgogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CiAKLSAgICBpZiAo
V0tTdHJpbmdJc0VxdWFsVG9VVEY4Q1N0cmluZyhtZXNzYWdlTmFtZSwgIlNldFN0YXRpc3RpY3NN
aW5pbXVtVGltZUJldHdlZWVuRGF0YVJlY29yZHNSZW1vdmFsIikpIHsKKyAgICBpZiAoV0tTdHJp
bmdJc0VxdWFsVG9VVEY4Q1N0cmluZyhtZXNzYWdlTmFtZSwgIlNldFN0YXRpc3RpY3NNaW5pbXVt
VGltZUJldHdlZW5EYXRhUmVjb3Jkc1JlbW92YWwiKSkgewogICAgICAgICBBU1NFUlQoV0tHZXRU
eXBlSUQobWVzc2FnZUJvZHkpID09IFdLRG91YmxlR2V0VHlwZUlEKCkpOwogICAgICAgICBXS0Rv
dWJsZVJlZiBzZWNvbmRzID0gc3RhdGljX2Nhc3Q8V0tEb3VibGVSZWY+KG1lc3NhZ2VCb2R5KTsK
LSAgICAgICAgVGVzdENvbnRyb2xsZXI6OnNpbmdsZXRvbigpLnNldFN0YXRpc3RpY3NNaW5pbXVt
VGltZUJldHdlZWVuRGF0YVJlY29yZHNSZW1vdmFsKFdLRG91YmxlR2V0VmFsdWUoc2Vjb25kcykp
OworICAgICAgICBUZXN0Q29udHJvbGxlcjo6c2luZ2xldG9uKCkuc2V0U3RhdGlzdGljc01pbmlt
dW1UaW1lQmV0d2VlbkRhdGFSZWNvcmRzUmVtb3ZhbChXS0RvdWJsZUdldFZhbHVlKHNlY29uZHMp
KTsKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQogICAgIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>314290</attachid>
            <date>2017-06-30 14:28:39 -0700</date>
            <delta_ts>2017-06-30 14:46:06 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-174038-20170630142838.patch</filename>
            <type>text/plain</type>
            <size>57111</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjE5MDEwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggNzE1NTZlYjI2ZmRlNTgx
NjdkNzc5NmMxNDA5MWJhNjgzN2RiNDg1Yy4uNjUyMWZmZjAxMmVlZDU1MWM0MjRkNGM1ZGVkNzQ5
NzY2NTZmZjkxNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDgwIEBACiAyMDE3LTA2LTMwICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKKyAgICAgICAgTW92ZSBzdG9yZSBsb2dpYyBm
cm9tIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NNYW5hZ2VyIHRvIFdlYlJlc291cmNlTG9hZFN0
YXRpc3RpY3NTdG9yZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTc0MDM4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgTW92ZSBzdG9yZSBsb2dpYyBmcm9tIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NNYW5h
Z2VyIHRvIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS4KKyAgICAgICAgV2ViUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc01hbmFnZXIgaXMgbm93IGVzc2VudGlhbGx5IGEgcHJveHkgdG8gdGhl
CisgICAgICAgIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZSB0byBzdXBwb3J0IHRoZSBj
dXJyZW50IEMgQVBJLgorCisgICAgICAgIEluIGEgZm9sbG93LXVwLCBJIHBsYW4gdG8gdG8gcmVw
bGFjZSB0aGUgQyBBUEkgd2l0aCBhIENvY29hIFNQSSB3aGljaCB3b3JrcyBvbiBhCisgICAgICAg
IFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZSBkaXJlY3RseSBpbnN0ZWFkIG9mIHJlcXVp
cmluZyBhCisgICAgICAgIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NNYW5hZ2VyIHNpbmdsZXRv
bi4KKworICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9XS1Jlc291cmNlTG9hZFN0YXRpc3RpY3NN
YW5hZ2VyLmNwcDoKKyAgICAgICAgKFdLUmVzb3VyY2VMb2FkU3RhdGlzdGljc01hbmFnZXJTZXRN
aW5pbXVtVGltZUJldHdlZW5EYXRhUmVjb3Jkc1JlbW92YWwpOgorICAgICAgICAoV0tSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzTWFuYWdlclJlc2V0VG9Db25zaXN0ZW50U3RhdGUpOgorICAgICAgICAq
IFVJUHJvY2Vzcy9BUEkvQy9XS1Jlc291cmNlTG9hZFN0YXRpc3RpY3NNYW5hZ2VyLmg6CisgICAg
ICAgICogVUlQcm9jZXNzL0NvY29hL1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NNYW5hZ2VyQ29j
b2EubW06IFJlbW92ZWQuCisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL1dlYlJlc291cmNlTG9h
ZFN0YXRpc3RpY3NTdG9yZUNvY29hLm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzU3RvcmU6OnJlZ2lzdGVyVXNlckRlZmF1bHRzSWZOZWVkZWQpOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWFuYWdlci5jcHA6CisgICAg
ICAgIChXZWJLaXQ6OldlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NNYW5hZ2VyOjpXZWJSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzTWFuYWdlcik6CisgICAgICAgIChXZWJLaXQ6OldlYlJlc291cmNlTG9h
ZFN0YXRpc3RpY3NNYW5hZ2VyOjp+V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc01hbmFnZXIpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWFuYWdlcjo6c2V0U3Rh
dGlzdGljc1N0b3JlKToKKyAgICAgICAgKFdlYktpdDo6V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGlj
c01hbmFnZXI6OmNsZWFySW5NZW1vcnlTdG9yZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlJlc291
cmNlTG9hZFN0YXRpc3RpY3NNYW5hZ2VyOjpjbGVhckluTWVtb3J5QW5kUGVyc2lzdGVudFN0b3Jl
KToKKyAgICAgICAgKFdlYktpdDo6V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc01hbmFnZXI6Omxv
Z1VzZXJJbnRlcmFjdGlvbik6CisgICAgICAgIChXZWJLaXQ6OldlYlJlc291cmNlTG9hZFN0YXRp
c3RpY3NNYW5hZ2VyOjpjbGVhclVzZXJJbnRlcmFjdGlvbik6CisgICAgICAgIChXZWJLaXQ6Oldl
YlJlc291cmNlTG9hZFN0YXRpc3RpY3NNYW5hZ2VyOjpoYXNIYWRVc2VySW50ZXJhY3Rpb24pOgor
ICAgICAgICAoV2ViS2l0OjpXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWFuYWdlcjo6c2V0UHJl
dmFsZW50UmVzb3VyY2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJSZXNvdXJjZUxvYWRTdGF0aXN0
aWNzTWFuYWdlcjo6aXNQcmV2YWxlbnRSZXNvdXJjZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlJl
c291cmNlTG9hZFN0YXRpc3RpY3NNYW5hZ2VyOjpjbGVhclByZXZhbGVudFJlc291cmNlKToKKyAg
ICAgICAgKFdlYktpdDo6V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc01hbmFnZXI6OnNldEdyYW5k
ZmF0aGVyZWQpOgorICAgICAgICAoV2ViS2l0OjpXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWFu
YWdlcjo6aXNHcmFuZGZhdGhlcmVkKToKKyAgICAgICAgKFdlYktpdDo6V2ViUmVzb3VyY2VMb2Fk
U3RhdGlzdGljc01hbmFnZXI6OnNldFN1YmZyYW1lVW5kZXJUb3BGcmFtZU9yaWdpbik6CisgICAg
ICAgIChXZWJLaXQ6OldlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NNYW5hZ2VyOjpzZXRTdWJyZXNv
dXJjZVVuZGVyVG9wRnJhbWVPcmlnaW4pOgorICAgICAgICAoV2ViS2l0OjpXZWJSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzTWFuYWdlcjo6c2V0U3VicmVzb3VyY2VVbmlxdWVSZWRpcmVjdFRvKToKKyAg
ICAgICAgKFdlYktpdDo6V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc01hbmFnZXI6OnNldFRpbWVU
b0xpdmVVc2VySW50ZXJhY3Rpb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJSZXNvdXJjZUxvYWRT
dGF0aXN0aWNzTWFuYWdlcjo6c2V0VGltZVRvTGl2ZUNvb2tpZVBhcnRpdGlvbkZyZWUpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWFuYWdlcjo6c2V0TWluaW11
bVRpbWVCZXR3ZWVuRGF0YVJlY29yZHNSZW1vdmFsKToKKyAgICAgICAgKFdlYktpdDo6V2ViUmVz
b3VyY2VMb2FkU3RhdGlzdGljc01hbmFnZXI6OnNldEdyYW5kZmF0aGVyaW5nVGltZSk6CisgICAg
ICAgIChXZWJLaXQ6OldlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NNYW5hZ2VyOjpmaXJlRGF0YU1v
ZGlmaWNhdGlvbkhhbmRsZXIpOgorICAgICAgICAoV2ViS2l0OjpXZWJSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzTWFuYWdlcjo6ZmlyZVNob3VsZFBhcnRpdGlvbkNvb2tpZXNIYW5kbGVyKToKKyAgICAg
ICAgKFdlYktpdDo6V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc01hbmFnZXI6OmZpcmVUZWxlbWV0
cnlIYW5kbGVyKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGlj
c01hbmFnZXIuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGlj
c1N0b3JlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6cHJpbWFyeURvbWFpbik6CisgICAgICAgIChX
ZWJLaXQ6OldlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6cmVnaXN0ZXJTaGFyZWRSZXNv
dXJjZUxvYWRPYnNlcnZlcik6CisgICAgICAgIChXZWJLaXQ6OldlYlJlc291cmNlTG9hZFN0YXRp
c3RpY3NTdG9yZTo6bG9nVXNlckludGVyYWN0aW9uKToKKyAgICAgICAgKFdlYktpdDo6V2ViUmVz
b3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpjbGVhclVzZXJJbnRlcmFjdGlvbik6CisgICAgICAg
IChXZWJLaXQ6OldlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6aGFzSGFkVXNlckludGVy
YWN0aW9uKToKKyAgICAgICAgKFdlYktpdDo6V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3Jl
OjpzZXRQcmV2YWxlbnRSZXNvdXJjZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlJlc291cmNlTG9h
ZFN0YXRpc3RpY3NTdG9yZTo6aXNQcmV2YWxlbnRSZXNvdXJjZSk6CisgICAgICAgIChXZWJLaXQ6
OldlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6Y2xlYXJQcmV2YWxlbnRSZXNvdXJjZSk6
CisgICAgICAgIChXZWJLaXQ6OldlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6c2V0R3Jh
bmRmYXRoZXJlZCk6CisgICAgICAgIChXZWJLaXQ6OldlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NT
dG9yZTo6aXNHcmFuZGZhdGhlcmVkKToKKyAgICAgICAgKFdlYktpdDo6V2ViUmVzb3VyY2VMb2Fk
U3RhdGlzdGljc1N0b3JlOjpzZXRTdWJmcmFtZVVuZGVyVG9wRnJhbWVPcmlnaW4pOgorICAgICAg
ICAoV2ViS2l0OjpXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OnNldFN1YnJlc291cmNl
VW5kZXJUb3BGcmFtZU9yaWdpbik6CisgICAgICAgIChXZWJLaXQ6OldlYlJlc291cmNlTG9hZFN0
YXRpc3RpY3NTdG9yZTo6c2V0U3VicmVzb3VyY2VVbmlxdWVSZWRpcmVjdFRvKToKKyAgICAgICAg
KFdlYktpdDo6V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpmaXJlRGF0YU1vZGlmaWNh
dGlvbkhhbmRsZXIpOgorICAgICAgICAoV2ViS2l0OjpXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNz
U3RvcmU6OmZpcmVTaG91bGRQYXJ0aXRpb25Db29raWVzSGFuZGxlcik6CisgICAgICAgIChXZWJL
aXQ6OldlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6ZmlyZVRlbGVtZXRyeUhhbmRsZXIp
OgorICAgICAgICAoV2ViS2l0OjpXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OmNsZWFy
SW5NZW1vcnkpOgorICAgICAgICAoV2ViS2l0OjpXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3Rv
cmU6OmNsZWFySW5NZW1vcnlBbmRQZXJzaXN0ZW50KToKKyAgICAgICAgKFdlYktpdDo6V2ViUmVz
b3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpzZXRUaW1lVG9MaXZlVXNlckludGVyYWN0aW9uKToK
KyAgICAgICAgKFdlYktpdDo6V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpzZXRUaW1l
VG9MaXZlQ29va2llUGFydGl0aW9uRnJlZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlJlc291cmNl
TG9hZFN0YXRpc3RpY3NTdG9yZTo6c2V0TWluaW11bVRpbWVCZXR3ZWVuRGF0YVJlY29yZHNSZW1v
dmFsKToKKyAgICAgICAgKFdlYktpdDo6V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpz
ZXRHcmFuZGZhdGhlcmluZ1RpbWUpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzU3RvcmUuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vi
c2l0ZURhdGFTdG9yZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmU6OnJl
bW92ZURhdGEpOgorICAgICAgICAqIFdlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoK
KworMjAxNy0wNi0zMCAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCiAgICAgICAg
IE1vdmUgUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlIHRvIFdlYktpdDIvVUlQcm9jZXNzCiAg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzQwMzMKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLUmVzb3VyY2VMb2Fk
U3RhdGlzdGljc01hbmFnZXIuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dL
UmVzb3VyY2VMb2FkU3RhdGlzdGljc01hbmFnZXIuY3BwCmluZGV4IDllZTA4ZGFiOTNiZmFkYTNl
YjY1OTAzMTllMmYzODk2YWMzYjY0NmQuLjY5NmFiYzhlZjVhYWMzZmQxYThkMzVmMTI4NTZjZDM0
YjI5Mjc0NGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS1Jl
c291cmNlTG9hZFN0YXRpc3RpY3NNYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL0MvV0tSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWFuYWdlci5jcHAKQEAgLTk2LDkg
Kzk2LDkgQEAgdm9pZCBXS1Jlc291cmNlTG9hZFN0YXRpc3RpY3NNYW5hZ2VyU2V0VGltZVRvTGl2
ZUNvb2tpZVBhcnRpdGlvbkZyZWUoZG91YmxlIHNlY28KICAgICBXZWJSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzTWFuYWdlcjo6c2hhcmVkKCkuc2V0VGltZVRvTGl2ZUNvb2tpZVBhcnRpdGlvbkZyZWUo
U2Vjb25kcyB7IHNlY29uZHMgfSk7CiB9CiAKLXZvaWQgV0tSZXNvdXJjZUxvYWRTdGF0aXN0aWNz
TWFuYWdlclNldE1pbmltdW1UaW1lQmV0d2VlZW5EYXRhUmVjb3Jkc1JlbW92YWwoZG91YmxlIHNl
Y29uZHMpCit2b2lkIFdLUmVzb3VyY2VMb2FkU3RhdGlzdGljc01hbmFnZXJTZXRNaW5pbXVtVGlt
ZUJldHdlZW5EYXRhUmVjb3Jkc1JlbW92YWwoZG91YmxlIHNlY29uZHMpCiB7Ci0gICAgV2ViUmVz
b3VyY2VMb2FkU3RhdGlzdGljc01hbmFnZXI6OnNoYXJlZCgpLnNldE1pbmltdW1UaW1lQmV0d2Vl
ZW5EYXRhUmVjb3Jkc1JlbW92YWwoU2Vjb25kcyB7IHNlY29uZHMgfSk7CisgICAgV2ViUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc01hbmFnZXI6OnNoYXJlZCgpLnNldE1pbmltdW1UaW1lQmV0d2VlbkRh
dGFSZWNvcmRzUmVtb3ZhbChTZWNvbmRzIHsgc2Vjb25kcyB9KTsKIH0KIAogdm9pZCBXS1Jlc291
cmNlTG9hZFN0YXRpc3RpY3NNYW5hZ2VyU2V0R3JhbmRmYXRoZXJpbmdUaW1lKGRvdWJsZSBzZWNv
bmRzKQpAQCAtMTYzLDcgKzE2Myw3IEBAIHZvaWQgV0tSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWFu
YWdlclJlc2V0VG9Db25zaXN0ZW50U3RhdGUoKQogewogICAgIFdlYlJlc291cmNlTG9hZFN0YXRp
c3RpY3NNYW5hZ2VyOjpzaGFyZWQoKS5zZXRUaW1lVG9MaXZlVXNlckludGVyYWN0aW9uKDI0X2gg
KiAzMC4pOwogICAgIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NNYW5hZ2VyOjpzaGFyZWQoKS5z
ZXRUaW1lVG9MaXZlQ29va2llUGFydGl0aW9uRnJlZSgyNF9oKTsKLSAgICBXZWJSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzTWFuYWdlcjo6c2hhcmVkKCkuc2V0TWluaW11bVRpbWVCZXR3ZWVlbkRhdGFS
ZWNvcmRzUmVtb3ZhbCgxX2gpOworICAgIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NNYW5hZ2Vy
OjpzaGFyZWQoKS5zZXRNaW5pbXVtVGltZUJldHdlZW5EYXRhUmVjb3Jkc1JlbW92YWwoMV9oKTsK
ICAgICBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWFuYWdlcjo6c2hhcmVkKCkuc2V0R3JhbmRm
YXRoZXJpbmdUaW1lKDFfaCk7CiAgICAgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpz
ZXROb3RpZnlQYWdlc1doZW5EYXRhUmVjb3Jkc1dlcmVTY2FubmVkKGZhbHNlKTsKICAgICBXZWJS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzVGVsZW1ldHJ5OjpzZXROb3RpZnlQYWdlc1doZW5UZWxlbWV0
cnlXYXNDYXB0dXJlZChmYWxzZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL0MvV0tSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWFuYWdlci5oIGIvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9DL1dLUmVzb3VyY2VMb2FkU3RhdGlzdGljc01hbmFnZXIuaAppbmRl
eCBjMGZhMTNlZWJhM2FjZmUxYmE4ZmRkMDZjNzk5OGYzY2I5ZjkwOTk5Li44MWZlMjQ0ZjViNWQy
ZGQ0NTU0ZTAzOGM4OWEwNWMyMzlhYzJjODU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL0MvV0tSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWFuYWdlci5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS1Jlc291cmNlTG9hZFN0YXRpc3RpY3NNYW5h
Z2VyLmgKQEAgLTQyLDcgKzQyLDcgQEAgZXh0ZXJuICJDIiB7CiAgICAgV0tfRVhQT1JUIHZvaWQg
V0tSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWFuYWdlclNldFN1YnJlc291cmNlVW5pcXVlUmVkaXJl
Y3RUbyhXS1N0cmluZ1JlZiBob3N0TmFtZSwgV0tTdHJpbmdSZWYgaG9zdE5hbWVSZWRpcmVjdGVk
VG8pOwogICAgIFdLX0VYUE9SVCB2b2lkIFdLUmVzb3VyY2VMb2FkU3RhdGlzdGljc01hbmFnZXJT
ZXRUaW1lVG9MaXZlVXNlckludGVyYWN0aW9uKGRvdWJsZSBzZWNvbmRzKTsKICAgICBXS19FWFBP
UlQgdm9pZCBXS1Jlc291cmNlTG9hZFN0YXRpc3RpY3NNYW5hZ2VyU2V0VGltZVRvTGl2ZUNvb2tp
ZVBhcnRpdGlvbkZyZWUoZG91YmxlIHNlY29uZHMpOwotICAgIFdLX0VYUE9SVCB2b2lkIFdLUmVz
b3VyY2VMb2FkU3RhdGlzdGljc01hbmFnZXJTZXRNaW5pbXVtVGltZUJldHdlZWVuRGF0YVJlY29y
ZHNSZW1vdmFsKGRvdWJsZSBzZWNvbmRzKTsKKyAgICBXS19FWFBPUlQgdm9pZCBXS1Jlc291cmNl
TG9hZFN0YXRpc3RpY3NNYW5hZ2VyU2V0TWluaW11bVRpbWVCZXR3ZWVuRGF0YVJlY29yZHNSZW1v
dmFsKGRvdWJsZSBzZWNvbmRzKTsKICAgICBXS19FWFBPUlQgdm9pZCBXS1Jlc291cmNlTG9hZFN0
YXRpc3RpY3NNYW5hZ2VyU2V0R3JhbmRmYXRoZXJpbmdUaW1lKGRvdWJsZSBzZWNvbmRzKTsKICAg
ICBXS19FWFBPUlQgdm9pZCBXS1Jlc291cmNlTG9hZFN0YXRpc3RpY3NNYW5hZ2VyRmlyZURhdGFN
b2RpZmljYXRpb25IYW5kbGVyKCk7CiAgICAgV0tfRVhQT1JUIHZvaWQgV0tSZXNvdXJjZUxvYWRT
dGF0aXN0aWNzTWFuYWdlckZpcmVTaG91bGRQYXJ0aXRpb25Db29raWVzSGFuZGxlcigpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0NvY29hL1dlYlJlc291cmNlTG9hZFN0
YXRpc3RpY3NNYW5hZ2VyQ29jb2EubW0gYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29jb2Ev
V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc01hbmFnZXJDb2NvYS5tbQpkZWxldGVkIGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggM2UwMDlkZjgzZjY4NzI1YmYzNzZlZGMyZGNjNGM5OWMyNDMzYjQ2Mi4u
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQ29jb2EvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc01hbmFnZXJDb2Nv
YS5tbQorKysgL2Rldi9udWxsCkBAIC0xLDU3ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMp
IDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAot
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW1wb3J0
ICJjb25maWcuaCIKLSNpbXBvcnQgIldlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NNYW5hZ2VyLmgi
Ci0KLSNpbXBvcnQgIldlYlByZWZlcmVuY2VzS2V5cy5oIgotCi11c2luZyBuYW1lc3BhY2UgV2Vi
Q29yZTsKLQotbmFtZXNwYWNlIFdlYktpdCB7Ci0gICAgCi12b2lkIFdlYlJlc291cmNlTG9hZFN0
YXRpc3RpY3NNYW5hZ2VyOjpyZWdpc3RlclVzZXJEZWZhdWx0c0lmTmVlZGVkKCkKLXsKLSAgICBz
dGF0aWMgZGlzcGF0Y2hfb25jZV90IGluaXRPbmNlOwotICAgIAotICAgIGRpc3BhdGNoX29uY2Uo
JmluaXRPbmNlLCBeIHsKLSAgICAgICAgY29uc3Qgc2l6ZV90IGhvdXJJblNlY29uZHMgPSAzNjAw
OwotICAgICAgICBjb25zdCBzaXplX3QgZGF5SW5TZWNvbmRzID0gMjQgKiBob3VySW5TZWNvbmRz
OwotICAgICAgICAKLSAgICAgICAgZG91YmxlIHRpbWVUb0xpdmVVc2VySW50ZXJhY3Rpb24gPSBb
W05TVXNlckRlZmF1bHRzIHN0YW5kYXJkVXNlckRlZmF1bHRzXSBkb3VibGVGb3JLZXk6IFdlYlBy
ZWZlcmVuY2VzS2V5OjpyZXNvdXJjZUxvYWRTdGF0aXN0aWNzVGltZVRvTGl2ZVVzZXJJbnRlcmFj
dGlvbktleSgpXTsKLSAgICAgICAgaWYgKHRpbWVUb0xpdmVVc2VySW50ZXJhY3Rpb24gPiAwICYm
IHRpbWVUb0xpdmVVc2VySW50ZXJhY3Rpb24gPD0gMzAgKiBkYXlJblNlY29uZHMpCi0gICAgICAg
ICAgICBzZXRUaW1lVG9MaXZlVXNlckludGVyYWN0aW9uKFNlY29uZHMgeyB0aW1lVG9MaXZlVXNl
ckludGVyYWN0aW9uIH0pOwotICAgICAgICAKLSAgICAgICAgZG91YmxlIHRpbWVUb0xpdmVDb29r
aWVQYXJ0aXRpb25GcmVlID0gW1tOU1VzZXJEZWZhdWx0cyBzdGFuZGFyZFVzZXJEZWZhdWx0c10g
ZG91YmxlRm9yS2V5OiBXZWJQcmVmZXJlbmNlc0tleTo6cmVzb3VyY2VMb2FkU3RhdGlzdGljc1Rp
bWVUb0xpdmVDb29raWVQYXJ0aXRpb25GcmVlS2V5KCldOwotICAgICAgICBpZiAodGltZVRvTGl2
ZUNvb2tpZVBhcnRpdGlvbkZyZWUgPiAwICYmIHRpbWVUb0xpdmVDb29raWVQYXJ0aXRpb25GcmVl
IDw9IGRheUluU2Vjb25kcykKLSAgICAgICAgICAgIHNldFRpbWVUb0xpdmVDb29raWVQYXJ0aXRp
b25GcmVlKFNlY29uZHMgeyB0aW1lVG9MaXZlQ29va2llUGFydGl0aW9uRnJlZSB9KTsKLQotICAg
ICAgICBkb3VibGUgZ3JhbmRmYXRoZXJpbmdUaW1lID0gW1tOU1VzZXJEZWZhdWx0cyBzdGFuZGFy
ZFVzZXJEZWZhdWx0c10gZG91YmxlRm9yS2V5OiBXZWJQcmVmZXJlbmNlc0tleTo6cmVzb3VyY2VM
b2FkU3RhdGlzdGljc0dyYW5kZmF0aGVyaW5nVGltZUtleSgpXTsKLSAgICAgICAgaWYgKGdyYW5k
ZmF0aGVyaW5nVGltZSA+IDAgJiYgZ3JhbmRmYXRoZXJpbmdUaW1lIDw9IDcgKiBkYXlJblNlY29u
ZHMpCi0gICAgICAgICAgICBzZXRHcmFuZGZhdGhlcmluZ1RpbWUoU2Vjb25kcyB7IGdyYW5kZmF0
aGVyaW5nVGltZSB9KTsKLSAgICB9KTsKLX0KLQotfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0NvY29hL1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZUNvY29hLm1t
IGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0NvY29hL1dlYlJlc291cmNlTG9hZFN0YXRpc3Rp
Y3NTdG9yZUNvY29hLm1tCmluZGV4IDU4N2RjZjAwYmJlMTg5MTQ5YTA2MTMxMjk4ZmQzNzM2NGY2
MWFkYjguLjBjMGY4YTIyYTMyMGRiYWM4YTJlNWIxYzE5NWUxMGY4ZWU4OWVmZTIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db2NvYS9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0
aWNzU3RvcmVDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29jb2EvV2Vi
UmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlQ29jb2EubW0KQEAgLTI2LDYgKzI2LDggQEAKICNp
bmNsdWRlICJjb25maWcuaCIKICNpbXBvcnQgIldlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9y
ZS5oIgogCisjaW1wb3J0ICJXZWJQcmVmZXJlbmNlc0tleXMuaCIKKwogdXNpbmcgbmFtZXNwYWNl
IFdlYkNvcmU7CiAKIG5hbWVzcGFjZSBXZWJLaXQgewpAQCAtMzcsNCArMzksMjYgQEAgdm9pZCBX
ZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OnBsYXRmb3JtRXhjbHVkZUZyb21CYWNrdXAo
KSBjb25zdAogI2VuZGlmCiB9CiAKK3ZvaWQgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3Jl
OjpyZWdpc3RlclVzZXJEZWZhdWx0c0lmTmVlZGVkKCkKK3sKKyAgICBzdGF0aWMgZGlzcGF0Y2hf
b25jZV90IGluaXRPbmNlOworCisgICAgZGlzcGF0Y2hfb25jZSgmaW5pdE9uY2UsIF4geworICAg
ICAgICBjb25zdCBzaXplX3QgaG91ckluU2Vjb25kcyA9IDM2MDA7CisgICAgICAgIGNvbnN0IHNp
emVfdCBkYXlJblNlY29uZHMgPSAyNCAqIGhvdXJJblNlY29uZHM7CisKKyAgICAgICAgZG91Ymxl
IHRpbWVUb0xpdmVVc2VySW50ZXJhY3Rpb24gPSBbW05TVXNlckRlZmF1bHRzIHN0YW5kYXJkVXNl
ckRlZmF1bHRzXSBkb3VibGVGb3JLZXk6IFdlYlByZWZlcmVuY2VzS2V5OjpyZXNvdXJjZUxvYWRT
dGF0aXN0aWNzVGltZVRvTGl2ZVVzZXJJbnRlcmFjdGlvbktleSgpXTsKKyAgICAgICAgaWYgKHRp
bWVUb0xpdmVVc2VySW50ZXJhY3Rpb24gPiAwICYmIHRpbWVUb0xpdmVVc2VySW50ZXJhY3Rpb24g
PD0gMzAgKiBkYXlJblNlY29uZHMpCisgICAgICAgICAgICBzZXRUaW1lVG9MaXZlVXNlckludGVy
YWN0aW9uKFNlY29uZHMgeyB0aW1lVG9MaXZlVXNlckludGVyYWN0aW9uIH0pOworCisgICAgICAg
IGRvdWJsZSB0aW1lVG9MaXZlQ29va2llUGFydGl0aW9uRnJlZSA9IFtbTlNVc2VyRGVmYXVsdHMg
c3RhbmRhcmRVc2VyRGVmYXVsdHNdIGRvdWJsZUZvcktleTogV2ViUHJlZmVyZW5jZXNLZXk6OnJl
c291cmNlTG9hZFN0YXRpc3RpY3NUaW1lVG9MaXZlQ29va2llUGFydGl0aW9uRnJlZUtleSgpXTsK
KyAgICAgICAgaWYgKHRpbWVUb0xpdmVDb29raWVQYXJ0aXRpb25GcmVlID4gMCAmJiB0aW1lVG9M
aXZlQ29va2llUGFydGl0aW9uRnJlZSA8PSBkYXlJblNlY29uZHMpCisgICAgICAgICAgICBzZXRU
aW1lVG9MaXZlQ29va2llUGFydGl0aW9uRnJlZShTZWNvbmRzIHsgdGltZVRvTGl2ZUNvb2tpZVBh
cnRpdGlvbkZyZWUgfSk7CisKKyAgICAgICAgZG91YmxlIGdyYW5kZmF0aGVyaW5nVGltZSA9IFtb
TlNVc2VyRGVmYXVsdHMgc3RhbmRhcmRVc2VyRGVmYXVsdHNdIGRvdWJsZUZvcktleTogV2ViUHJl
ZmVyZW5jZXNLZXk6OnJlc291cmNlTG9hZFN0YXRpc3RpY3NHcmFuZGZhdGhlcmluZ1RpbWVLZXko
KV07CisgICAgICAgIGlmIChncmFuZGZhdGhlcmluZ1RpbWUgPiAwICYmIGdyYW5kZmF0aGVyaW5n
VGltZSA8PSA3ICogZGF5SW5TZWNvbmRzKQorICAgICAgICAgICAgc2V0R3JhbmRmYXRoZXJpbmdU
aW1lKFNlY29uZHMgeyBncmFuZGZhdGhlcmluZ1RpbWUgfSk7CisgICAgfSk7Cit9CisKIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9TdG9yYWdlL1Jlc291cmNlTG9hZFN0
YXRpc3RpY3NTdG9yZS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvU3RvcmFnZS9SZXNv
dXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuY3BwCmluZGV4IDlhZDNmZGYzZjQ0NDU0MjIyMGJkYjVh
NTRhNmI3YmQ3NjdhMjRlMTkuLjgyNzA3MmNmNDIwYWIzNWJmM2E3MGNmZWZlNWI3YzQ3YTI5MjNk
MzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9TdG9yYWdlL1Jlc291cmNl
TG9hZFN0YXRpc3RpY3NTdG9yZS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1N0
b3JhZ2UvUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmNwcApAQCAtNDMsNyArNDMsNyBAQCBz
dGF0aWMgY29uc3QgYXV0byBzdGF0aXN0aWNzTW9kZWxWZXJzaW9uID0gNDsKIHN0YXRpYyBTZWNv
bmRzIHRpbWVUb0xpdmVVc2VySW50ZXJhY3Rpb24geyAyNF9oICogMzAuIH07CiBzdGF0aWMgU2Vj
b25kcyB0aW1lVG9MaXZlQ29va2llUGFydGl0aW9uRnJlZSB7IDI0X2ggfTsKIHN0YXRpYyBTZWNv
bmRzIGdyYW5kZmF0aGVyaW5nVGltZSB7IDFfaCB9Owotc3RhdGljIFNlY29uZHMgbWluaW11bVRp
bWVCZXR3ZWVlbkRhdGFSZWNvcmRzUmVtb3ZhbCB7IDFfaCB9Oworc3RhdGljIFNlY29uZHMgbWlu
aW11bVRpbWVCZXR3ZWVuRGF0YVJlY29yZHNSZW1vdmFsIHsgMV9oIH07CiAKIFJlZjxSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzU3RvcmU+IFJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6Y3JlYXRl
KCkKIHsKQEAgLTI4MSwxMCArMjgxLDEwIEBAIHZvaWQgUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0
b3JlOjpzZXRUaW1lVG9MaXZlQ29va2llUGFydGl0aW9uRnJlZShTZWNvbmRzIHNlY29uCiAgICAg
ICAgIHRpbWVUb0xpdmVDb29raWVQYXJ0aXRpb25GcmVlID0gc2Vjb25kczsKIH0KIAotdm9pZCBS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OnNldE1pbmltdW1UaW1lQmV0d2VlZW5EYXRhUmVj
b3Jkc1JlbW92YWwoU2Vjb25kcyBzZWNvbmRzKQordm9pZCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNz
U3RvcmU6OnNldE1pbmltdW1UaW1lQmV0d2VlbkRhdGFSZWNvcmRzUmVtb3ZhbChTZWNvbmRzIHNl
Y29uZHMpCiB7CiAgICAgaWYgKHNlY29uZHMgPj0gMF9zKQotICAgICAgICBtaW5pbXVtVGltZUJl
dHdlZWVuRGF0YVJlY29yZHNSZW1vdmFsID0gc2Vjb25kczsKKyAgICAgICAgbWluaW11bVRpbWVC
ZXR3ZWVuRGF0YVJlY29yZHNSZW1vdmFsID0gc2Vjb25kczsKIH0KIAogdm9pZCBSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzU3RvcmU6OnNldEdyYW5kZmF0aGVyaW5nVGltZShTZWNvbmRzIHNlY29uZHMp
CkBAIC0zOTgsNyArMzk4LDcgQEAgYm9vbCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OnNo
b3VsZFJlbW92ZURhdGFSZWNvcmRzKCkgY29uc3QKICAgICBpZiAobV9kYXRhUmVjb3Jkc1JlbW92
YWxQZW5kaW5nKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBpZiAobV9sYXN0VGltZURh
dGFSZWNvcmRzV2VyZVJlbW92ZWQgJiYgTW9ub3RvbmljVGltZTo6bm93KCkgPCAobV9sYXN0VGlt
ZURhdGFSZWNvcmRzV2VyZVJlbW92ZWQgKyBtaW5pbXVtVGltZUJldHdlZWVuRGF0YVJlY29yZHNS
ZW1vdmFsKSkKKyAgICBpZiAobV9sYXN0VGltZURhdGFSZWNvcmRzV2VyZVJlbW92ZWQgJiYgTW9u
b3RvbmljVGltZTo6bm93KCkgPCAobV9sYXN0VGltZURhdGFSZWNvcmRzV2VyZVJlbW92ZWQgKyBt
aW5pbXVtVGltZUJldHdlZW5EYXRhUmVjb3Jkc1JlbW92YWwpKQogICAgICAgICByZXR1cm4gZmFs
c2U7CiAKICAgICByZXR1cm4gdHJ1ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9TdG9yYWdlL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5oIGIvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL1N0b3JhZ2UvUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmgKaW5kZXgg
ODUzM2JlYmRkZjIwN2ZhYzA5ZGQ3ZTZlMTNmMGVlYWE0NDNmYjFiOC4uNTA1MWEwZTZmN2YxNTMy
NGQ0NWY0NmQ0MWNlYWM1ZTJiY2EyZDkwNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL1N0b3JhZ2UvUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmgKKysrIGIvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL1N0b3JhZ2UvUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmgK
QEAgLTgzLDcgKzgzLDcgQEAgcHVibGljOgogICAgIHZvaWQgZmlyZVRlbGVtZXRyeUhhbmRsZXIo
KTsKICAgICB2b2lkIHNldFRpbWVUb0xpdmVVc2VySW50ZXJhY3Rpb24oU2Vjb25kcyk7CiAgICAg
dm9pZCBzZXRUaW1lVG9MaXZlQ29va2llUGFydGl0aW9uRnJlZShTZWNvbmRzKTsKLSAgICB2b2lk
IHNldE1pbmltdW1UaW1lQmV0d2VlZW5EYXRhUmVjb3Jkc1JlbW92YWwoU2Vjb25kcyk7CisgICAg
dm9pZCBzZXRNaW5pbXVtVGltZUJldHdlZW5EYXRhUmVjb3Jkc1JlbW92YWwoU2Vjb25kcyk7CiAg
ICAgdm9pZCBzZXRHcmFuZGZhdGhlcmluZ1RpbWUoU2Vjb25kcyk7CiAgICAgdm9pZCBmaXJlU2hv
dWxkUGFydGl0aW9uQ29va2llc0hhbmRsZXIoKTsKICAgICB2b2lkIGZpcmVTaG91bGRQYXJ0aXRp
b25Db29raWVzSGFuZGxlcihjb25zdCBWZWN0b3I8U3RyaW5nPiYgZG9tYWluc1RvUmVtb3ZlLCBj
b25zdCBWZWN0b3I8U3RyaW5nPiYgZG9tYWluc1RvQWRkLCBib29sIGNsZWFyRmlyc3QpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlJlc291cmNlTG9hZFN0YXRpc3Rp
Y3NNYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJSZXNvdXJjZUxvYWRT
dGF0aXN0aWNzTWFuYWdlci5jcHAKaW5kZXggZDc1OGY4MzBiN2M1YTA0YjU2YmRkYWU5Y2ZhNmQ1
M2YxNjMzMTM5Yy4uNWNiMmMzZjg5Y2Y5MzhjYmUzZDNjMDlhNzEyYjQzODVjOTJkYTYzOCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlJlc291cmNlTG9hZFN0YXRpc3Rp
Y3NNYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUmVzb3VyY2VM
b2FkU3RhdGlzdGljc01hbmFnZXIuY3BwCkBAIC0yNiw0MCArMjYsMzEgQEAKICNpbmNsdWRlICJj
b25maWcuaCIKICNpbmNsdWRlICJXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWFuYWdlci5oIgog
Ci0jaW5jbHVkZSAiUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmgiCi0jaW5jbHVkZSA8V2Vi
Q29yZS9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzLmg+CisjaW5jbHVkZSAiV2ViUmVzb3VyY2VMb2Fk
U3RhdGlzdGljc1N0b3JlLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9VUkwuaD4KLSNpbmNsdWRlIDx3
dGYvQ3Jvc3NUaHJlYWRDb3BpZXIuaD4KICNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4K
LSNpbmNsdWRlIDx3dGYvUnVuTG9vcC5oPgotI2luY2x1ZGUgPHd0Zi9Xb3JrUXVldWUuaD4KIAog
bmFtZXNwYWNlIFdlYktpdCB7CiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCi10ZW1wbGF0
ZTx0eXBlbmFtZSBUPiBzdGF0aWMgaW5saW5lIFN0cmluZyBwcmltYXJ5RG9tYWluKGNvbnN0IFQm
IHZhbHVlKQotewotICAgIHJldHVybiBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzOjpwcmltYXJ5RG9t
YWluKHZhbHVlKTsKLX0KLQogV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc01hbmFnZXImIFdlYlJl
c291cmNlTG9hZFN0YXRpc3RpY3NNYW5hZ2VyOjpzaGFyZWQoKQogewogICAgIHN0YXRpYyBOZXZl
ckRlc3Ryb3llZDxXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWFuYWdlcj4gd2ViUmVzb3VyY2VM
b2FkU3RhdGlzdGljc01hbmFnZXI7CiAgICAgcmV0dXJuIHdlYlJlc291cmNlTG9hZFN0YXRpc3Rp
Y3NNYW5hZ2VyOwogfQogCi12b2lkIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NNYW5hZ2VyOjpz
ZXRTdGF0aXN0aWNzU3RvcmUoUmVmPFJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZT4mJiBzdG9y
ZSkKK1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NNYW5hZ2VyOjpXZWJSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzTWFuYWdlcigpCiB7Ci0gICAgaWYgKG1fc3RvcmUgJiYgbV9xdWV1ZSkKLSAgICAgICAg
bV9xdWV1ZSA9IG51bGxwdHI7Ci0gICAgbV9zdG9yZSA9IFdURk1vdmUoc3RvcmUpOwogfQogCi12
b2lkIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NNYW5hZ2VyOjpzZXRTdGF0aXN0aWNzUXVldWUo
UmVmPFdURjo6V29ya1F1ZXVlPiYmIHF1ZXVlKQorV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc01h
bmFnZXI6On5XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWFuYWdlcigpCiB7Ci0gICAgQVNTRVJU
KCFtX3F1ZXVlKTsKLSAgICBtX3F1ZXVlID0gV1RGTW92ZShxdWV1ZSk7Cit9CisKK3ZvaWQgV2Vi
UmVzb3VyY2VMb2FkU3RhdGlzdGljc01hbmFnZXI6OnNldFN0YXRpc3RpY3NTdG9yZShSZWY8V2Vi
UmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlPiYmIHN0b3JlKQoreworICAgIG1fc3RvcmUgPSBX
VEZNb3ZlKHN0b3JlKTsKIH0KIAogdm9pZCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWFuYWdl
cjo6Y2xlYXJJbk1lbW9yeVN0b3JlKCkKQEAgLTY3LDEwICs1OCw3IEBAIHZvaWQgV2ViUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc01hbmFnZXI6OmNsZWFySW5NZW1vcnlTdG9yZSgpCiAgICAgaWYgKCFt
X3N0b3JlKQogICAgICAgICByZXR1cm47CiAKLSAgICBBU1NFUlQobV9xdWV1ZSk7Ci0gICAgbV9x
dWV1ZS0+ZGlzcGF0Y2goW3RoaXNdIHsKLSAgICAgICAgbV9zdG9yZS0+Y2xlYXJJbk1lbW9yeSgp
OwotICAgIH0pOworICAgIG1fc3RvcmUtPmNsZWFySW5NZW1vcnkoKTsKIH0KIAogdm9pZCBXZWJS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWFuYWdlcjo6Y2xlYXJJbk1lbW9yeUFuZFBlcnNpc3RlbnRT
dG9yZSgpCkBAIC03OCwxMCArNjYsNyBAQCB2b2lkIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NN
YW5hZ2VyOjpjbGVhckluTWVtb3J5QW5kUGVyc2lzdGVudFN0b3JlKCkKICAgICBpZiAoIW1fc3Rv
cmUpCiAgICAgICAgIHJldHVybjsKIAotICAgIEFTU0VSVChtX3F1ZXVlKTsKLSAgICBtX3F1ZXVl
LT5kaXNwYXRjaChbdGhpc10gewotICAgICAgICBtX3N0b3JlLT5jbGVhckluTWVtb3J5QW5kUGVy
c2lzdGVudCgpOwotICAgIH0pOworICAgIG1fc3RvcmUtPmNsZWFySW5NZW1vcnlBbmRQZXJzaXN0
ZW50KCk7CiB9CiAKIHZvaWQgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc01hbmFnZXI6OmNsZWFy
SW5NZW1vcnlBbmRQZXJzaXN0ZW50U3RvcmUoc3RkOjpjaHJvbm86OnN5c3RlbV9jbG9jazo6dGlt
ZV9wb2ludCBtb2RpZmllZFNpbmNlKQpAQCAtOTMsMTkwICs3OCwxNTMgQEAgdm9pZCBXZWJSZXNv
dXJjZUxvYWRTdGF0aXN0aWNzTWFuYWdlcjo6Y2xlYXJJbk1lbW9yeUFuZFBlcnNpc3RlbnRTdG9y
ZShzdGQ6OmNocm8KIAogdm9pZCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWFuYWdlcjo6bG9n
VXNlckludGVyYWN0aW9uKGNvbnN0IFVSTCYgdXJsKQogewotICAgIGlmICh1cmwuaXNCbGFua1VS
TCgpIHx8IHVybC5pc0VtcHR5KCkpCisgICAgaWYgKCFtX3N0b3JlKQogICAgICAgICByZXR1cm47
CiAKLSAgICBBU1NFUlQobV9xdWV1ZSk7Ci0gICAgbV9xdWV1ZS0+ZGlzcGF0Y2goW3RoaXMsIHBy
aW1hcnlEb21haW5TdHJpbmcgPSBwcmltYXJ5RG9tYWluKHVybCkuaXNvbGF0ZWRDb3B5KCldIHsK
LSAgICAgICAgewotICAgICAgICAgICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhtX3N0b3JlLT5z
dGF0aXN0aWNzTG9jaygpKTsKLSAgICAgICAgICAgIGF1dG8mIHN0YXRpc3RpY3MgPSBtX3N0b3Jl
LT5lbnN1cmVSZXNvdXJjZVN0YXRpc3RpY3NGb3JQcmltYXJ5RG9tYWluKHByaW1hcnlEb21haW5T
dHJpbmcpOwotICAgICAgICAgICAgc3RhdGlzdGljcy5oYWRVc2VySW50ZXJhY3Rpb24gPSB0cnVl
OwotICAgICAgICAgICAgc3RhdGlzdGljcy5tb3N0UmVjZW50VXNlckludGVyYWN0aW9uVGltZSA9
IFdhbGxUaW1lOjpub3coKTsKLSAgICAgICAgfQotCi0gICAgICAgIG1fc3RvcmUtPmZpcmVTaG91
bGRQYXJ0aXRpb25Db29raWVzSGFuZGxlcih7IHByaW1hcnlEb21haW5TdHJpbmcgfSwgeyB9LCBm
YWxzZSk7Ci0gICAgfSk7CisgICAgbV9zdG9yZS0+bG9nVXNlckludGVyYWN0aW9uKHVybCk7CiB9
CiAKIHZvaWQgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc01hbmFnZXI6OmNsZWFyVXNlckludGVy
YWN0aW9uKGNvbnN0IFVSTCYgdXJsKQogewotICAgIGlmICh1cmwuaXNCbGFua1VSTCgpIHx8IHVy
bC5pc0VtcHR5KCkpCisgICAgaWYgKCFtX3N0b3JlKQogICAgICAgICByZXR1cm47CiAKLSAgICBh
dXRvIGxvY2tlciA9IGhvbGRMb2NrKG1fc3RvcmUtPnN0YXRpc3RpY3NMb2NrKCkpOwotICAgIGF1
dG8mIHN0YXRpc3RpY3MgPSBtX3N0b3JlLT5lbnN1cmVSZXNvdXJjZVN0YXRpc3RpY3NGb3JQcmlt
YXJ5RG9tYWluKHByaW1hcnlEb21haW4odXJsKSk7Ci0KLSAgICBzdGF0aXN0aWNzLmhhZFVzZXJJ
bnRlcmFjdGlvbiA9IGZhbHNlOwotICAgIHN0YXRpc3RpY3MubW9zdFJlY2VudFVzZXJJbnRlcmFj
dGlvblRpbWUgPSB7IH07CisgICAgbV9zdG9yZS0+Y2xlYXJVc2VySW50ZXJhY3Rpb24odXJsKTsK
IH0KIAogYm9vbCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWFuYWdlcjo6aGFzSGFkVXNlcklu
dGVyYWN0aW9uKGNvbnN0IFVSTCYgdXJsKQogewotICAgIGlmICh1cmwuaXNCbGFua1VSTCgpIHx8
IHVybC5pc0VtcHR5KCkpCisgICAgaWYgKCFtX3N0b3JlKQogICAgICAgICByZXR1cm4gZmFsc2U7
CiAKLSAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKG1fc3RvcmUtPnN0YXRpc3RpY3NMb2NrKCkp
OwotICAgIGF1dG8mIHN0YXRpc3RpY3MgPSBtX3N0b3JlLT5lbnN1cmVSZXNvdXJjZVN0YXRpc3Rp
Y3NGb3JQcmltYXJ5RG9tYWluKHByaW1hcnlEb21haW4odXJsKSk7Ci0KLSAgICByZXR1cm4gbV9z
dG9yZS0+aGFzSGFkUmVjZW50VXNlckludGVyYWN0aW9uKHN0YXRpc3RpY3MpOworICAgIHJldHVy
biBtX3N0b3JlLT5oYXNIYWRVc2VySW50ZXJhY3Rpb24odXJsKTsKIH0KIAogdm9pZCBXZWJSZXNv
dXJjZUxvYWRTdGF0aXN0aWNzTWFuYWdlcjo6c2V0UHJldmFsZW50UmVzb3VyY2UoY29uc3QgVVJM
JiB1cmwpCiB7Ci0gICAgaWYgKHVybC5pc0JsYW5rVVJMKCkgfHwgdXJsLmlzRW1wdHkoKSkKKyAg
ICBpZiAoIW1fc3RvcmUpCiAgICAgICAgIHJldHVybjsKIAotICAgIGF1dG8gbG9ja2VyID0gaG9s
ZExvY2sobV9zdG9yZS0+c3RhdGlzdGljc0xvY2soKSk7Ci0gICAgYXV0byYgc3RhdGlzdGljcyA9
IG1fc3RvcmUtPmVuc3VyZVJlc291cmNlU3RhdGlzdGljc0ZvclByaW1hcnlEb21haW4ocHJpbWFy
eURvbWFpbih1cmwpKTsKLQotICAgIHN0YXRpc3RpY3MuaXNQcmV2YWxlbnRSZXNvdXJjZSA9IHRy
dWU7CisgICAgbV9zdG9yZS0+c2V0UHJldmFsZW50UmVzb3VyY2UodXJsKTsKIH0KIAogYm9vbCBX
ZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWFuYWdlcjo6aXNQcmV2YWxlbnRSZXNvdXJjZShjb25z
dCBVUkwmIHVybCkKIHsKLSAgICBpZiAodXJsLmlzQmxhbmtVUkwoKSB8fCB1cmwuaXNFbXB0eSgp
KQorICAgIGlmICghbV9zdG9yZSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgYXV0byBs
b2NrZXIgPSBob2xkTG9jayhtX3N0b3JlLT5zdGF0aXN0aWNzTG9jaygpKTsKLSAgICBhdXRvJiBz
dGF0aXN0aWNzID0gbV9zdG9yZS0+ZW5zdXJlUmVzb3VyY2VTdGF0aXN0aWNzRm9yUHJpbWFyeURv
bWFpbihwcmltYXJ5RG9tYWluKHVybCkpOwotCi0gICAgcmV0dXJuIHN0YXRpc3RpY3MuaXNQcmV2
YWxlbnRSZXNvdXJjZTsKKyAgICByZXR1cm4gbV9zdG9yZS0+aXNQcmV2YWxlbnRSZXNvdXJjZSh1
cmwpOwogfQogCiB2b2lkIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NNYW5hZ2VyOjpjbGVhclBy
ZXZhbGVudFJlc291cmNlKGNvbnN0IFVSTCYgdXJsKQogewotICAgIGlmICh1cmwuaXNCbGFua1VS
TCgpIHx8IHVybC5pc0VtcHR5KCkpCisgICAgaWYgKCFtX3N0b3JlKQogICAgICAgICByZXR1cm47
CiAKLSAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKG1fc3RvcmUtPnN0YXRpc3RpY3NMb2NrKCkp
OwotICAgIGF1dG8mIHN0YXRpc3RpY3MgPSBtX3N0b3JlLT5lbnN1cmVSZXNvdXJjZVN0YXRpc3Rp
Y3NGb3JQcmltYXJ5RG9tYWluKHByaW1hcnlEb21haW4odXJsKSk7Ci0KLSAgICBzdGF0aXN0aWNz
LmlzUHJldmFsZW50UmVzb3VyY2UgPSBmYWxzZTsKKyAgICBtX3N0b3JlLT5jbGVhclByZXZhbGVu
dFJlc291cmNlKHVybCk7CiB9CiAKIHZvaWQgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc01hbmFn
ZXI6OnNldEdyYW5kZmF0aGVyZWQoY29uc3QgVVJMJiB1cmwsIGJvb2wgdmFsdWUpCiB7Ci0gICAg
aWYgKHVybC5pc0JsYW5rVVJMKCkgfHwgdXJsLmlzRW1wdHkoKSkKKyAgICBpZiAoIW1fc3RvcmUp
CiAgICAgICAgIHJldHVybjsKIAotICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2sobV9zdG9yZS0+
c3RhdGlzdGljc0xvY2soKSk7Ci0gICAgYXV0byYgc3RhdGlzdGljcyA9IG1fc3RvcmUtPmVuc3Vy
ZVJlc291cmNlU3RhdGlzdGljc0ZvclByaW1hcnlEb21haW4ocHJpbWFyeURvbWFpbih1cmwpKTsK
LQotICAgIHN0YXRpc3RpY3MuZ3JhbmRmYXRoZXJlZCA9IHZhbHVlOworICAgIG1fc3RvcmUtPnNl
dEdyYW5kZmF0aGVyZWQodXJsLCB2YWx1ZSk7CiB9CiAKIGJvb2wgV2ViUmVzb3VyY2VMb2FkU3Rh
dGlzdGljc01hbmFnZXI6OmlzR3JhbmRmYXRoZXJlZChjb25zdCBVUkwmIHVybCkKIHsKLSAgICBp
ZiAodXJsLmlzQmxhbmtVUkwoKSB8fCB1cmwuaXNFbXB0eSgpKQorICAgIGlmICghbV9zdG9yZSkK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhtX3N0
b3JlLT5zdGF0aXN0aWNzTG9jaygpKTsKLSAgICBhdXRvJiBzdGF0aXN0aWNzID0gbV9zdG9yZS0+
ZW5zdXJlUmVzb3VyY2VTdGF0aXN0aWNzRm9yUHJpbWFyeURvbWFpbihwcmltYXJ5RG9tYWluKHVy
bCkpOwotCi0gICAgcmV0dXJuIHN0YXRpc3RpY3MuZ3JhbmRmYXRoZXJlZDsKKyAgICByZXR1cm4g
bV9zdG9yZS0+aXNHcmFuZGZhdGhlcmVkKHVybCk7CiB9CiAKIHZvaWQgV2ViUmVzb3VyY2VMb2Fk
U3RhdGlzdGljc01hbmFnZXI6OnNldFN1YmZyYW1lVW5kZXJUb3BGcmFtZU9yaWdpbihjb25zdCBV
UkwmIHN1YmZyYW1lLCBjb25zdCBVUkwmIHRvcEZyYW1lKQogewotICAgIGlmIChzdWJmcmFtZS5p
c0JsYW5rVVJMKCkgfHwgc3ViZnJhbWUuaXNFbXB0eSgpIHx8IHRvcEZyYW1lLmlzQmxhbmtVUkwo
KSB8fCB0b3BGcmFtZS5pc0VtcHR5KCkpCisgICAgaWYgKCFtX3N0b3JlKQogICAgICAgICByZXR1
cm47CiAKLSAgICBBU1NFUlQobV9xdWV1ZSk7Ci0gICAgbV9xdWV1ZS0+ZGlzcGF0Y2goW3RoaXMs
IHByaW1hcnlUb3BGcmFtZURvbWFpblN0cmluZyA9IHByaW1hcnlEb21haW4odG9wRnJhbWUpLmlz
b2xhdGVkQ29weSgpLCBwcmltYXJ5U3ViRnJhbWVEb21haW5TdHJpbmcgPSBwcmltYXJ5RG9tYWlu
KHN1YmZyYW1lKS5pc29sYXRlZENvcHkoKV0gewotICAgICAgICBhdXRvIGxvY2tlciA9IGhvbGRM
b2NrKG1fc3RvcmUtPnN0YXRpc3RpY3NMb2NrKCkpOwotICAgICAgICBhdXRvJiBzdGF0aXN0aWNz
ID0gbV9zdG9yZS0+ZW5zdXJlUmVzb3VyY2VTdGF0aXN0aWNzRm9yUHJpbWFyeURvbWFpbihwcmlt
YXJ5U3ViRnJhbWVEb21haW5TdHJpbmcpOwotICAgICAgICBzdGF0aXN0aWNzLnN1YmZyYW1lVW5k
ZXJUb3BGcmFtZU9yaWdpbnMuYWRkKHByaW1hcnlUb3BGcmFtZURvbWFpblN0cmluZyk7Ci0gICAg
fSk7CisgICAgbV9zdG9yZS0+c2V0U3ViZnJhbWVVbmRlclRvcEZyYW1lT3JpZ2luKHN1YmZyYW1l
LCB0b3BGcmFtZSk7CiB9CiAKIHZvaWQgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc01hbmFnZXI6
OnNldFN1YnJlc291cmNlVW5kZXJUb3BGcmFtZU9yaWdpbihjb25zdCBVUkwmIHN1YnJlc291cmNl
LCBjb25zdCBVUkwmIHRvcEZyYW1lKQogewotICAgIGlmIChzdWJyZXNvdXJjZS5pc0JsYW5rVVJM
KCkgfHwgc3VicmVzb3VyY2UuaXNFbXB0eSgpIHx8IHRvcEZyYW1lLmlzQmxhbmtVUkwoKSB8fCB0
b3BGcmFtZS5pc0VtcHR5KCkpCisgICAgaWYgKCFtX3N0b3JlKQogICAgICAgICByZXR1cm47CiAK
LSAgICBBU1NFUlQobV9xdWV1ZSk7Ci0gICAgbV9xdWV1ZS0+ZGlzcGF0Y2goW3RoaXMsIHByaW1h
cnlUb3BGcmFtZURvbWFpblN0cmluZyA9IHByaW1hcnlEb21haW4odG9wRnJhbWUpLmlzb2xhdGVk
Q29weSgpLCBwcmltYXJ5U3VicmVzb3VyY2VEb21haW5TdHJpbmcgPSBwcmltYXJ5RG9tYWluKHN1
YnJlc291cmNlKS5pc29sYXRlZENvcHkoKV0gewotICAgICAgICBhdXRvIGxvY2tlciA9IGhvbGRM
b2NrKG1fc3RvcmUtPnN0YXRpc3RpY3NMb2NrKCkpOwotICAgICAgICBhdXRvJiBzdGF0aXN0aWNz
ID0gbV9zdG9yZS0+ZW5zdXJlUmVzb3VyY2VTdGF0aXN0aWNzRm9yUHJpbWFyeURvbWFpbihwcmlt
YXJ5U3VicmVzb3VyY2VEb21haW5TdHJpbmcpOwotICAgICAgICBzdGF0aXN0aWNzLnN1YnJlc291
cmNlVW5kZXJUb3BGcmFtZU9yaWdpbnMuYWRkKHByaW1hcnlUb3BGcmFtZURvbWFpblN0cmluZyk7
Ci0gICAgfSk7CisgICAgbV9zdG9yZS0+c2V0U3VicmVzb3VyY2VVbmRlclRvcEZyYW1lT3JpZ2lu
KHN1YnJlc291cmNlLCB0b3BGcmFtZSk7CiB9CiAKIHZvaWQgV2ViUmVzb3VyY2VMb2FkU3RhdGlz
dGljc01hbmFnZXI6OnNldFN1YnJlc291cmNlVW5pcXVlUmVkaXJlY3RUbyhjb25zdCBVUkwmIHN1
YnJlc291cmNlLCBjb25zdCBVUkwmIGhvc3ROYW1lUmVkaXJlY3RlZFRvKQogewotICAgIGlmIChz
dWJyZXNvdXJjZS5pc0JsYW5rVVJMKCkgfHwgc3VicmVzb3VyY2UuaXNFbXB0eSgpIHx8IGhvc3RO
YW1lUmVkaXJlY3RlZFRvLmlzQmxhbmtVUkwoKSB8fCBob3N0TmFtZVJlZGlyZWN0ZWRUby5pc0Vt
cHR5KCkpCisgICAgaWYgKCFtX3N0b3JlKQogICAgICAgICByZXR1cm47CiAKLSAgICBBU1NFUlQo
bV9xdWV1ZSk7Ci0gICAgbV9xdWV1ZS0+ZGlzcGF0Y2goW3RoaXMsIHByaW1hcnlSZWRpcmVjdERv
bWFpblN0cmluZyA9IHByaW1hcnlEb21haW4oaG9zdE5hbWVSZWRpcmVjdGVkVG8pLmlzb2xhdGVk
Q29weSgpLCBwcmltYXJ5U3VicmVzb3VyY2VEb21haW5TdHJpbmcgPSBwcmltYXJ5RG9tYWluKHN1
YnJlc291cmNlKS5pc29sYXRlZENvcHkoKV0gewotICAgICAgICBhdXRvIGxvY2tlciA9IGhvbGRM
b2NrKG1fc3RvcmUtPnN0YXRpc3RpY3NMb2NrKCkpOwotICAgICAgICBhdXRvJiBzdGF0aXN0aWNz
ID0gbV9zdG9yZS0+ZW5zdXJlUmVzb3VyY2VTdGF0aXN0aWNzRm9yUHJpbWFyeURvbWFpbihwcmlt
YXJ5U3VicmVzb3VyY2VEb21haW5TdHJpbmcpOwotICAgICAgICBzdGF0aXN0aWNzLnN1YnJlc291
cmNlVW5pcXVlUmVkaXJlY3RzVG8uYWRkKHByaW1hcnlSZWRpcmVjdERvbWFpblN0cmluZyk7Ci0g
ICAgfSk7CisgICAgbV9zdG9yZS0+c2V0U3VicmVzb3VyY2VVbmlxdWVSZWRpcmVjdFRvKHN1YnJl
c291cmNlLCBob3N0TmFtZVJlZGlyZWN0ZWRUbyk7CiB9CiAKIHZvaWQgV2ViUmVzb3VyY2VMb2Fk
U3RhdGlzdGljc01hbmFnZXI6OnNldFRpbWVUb0xpdmVVc2VySW50ZXJhY3Rpb24oU2Vjb25kcyBz
ZWNvbmRzKQogeworICAgIGlmICghbV9zdG9yZSkKKyAgICAgICAgcmV0dXJuOworCiAgICAgbV9z
dG9yZS0+c2V0VGltZVRvTGl2ZVVzZXJJbnRlcmFjdGlvbihzZWNvbmRzKTsKIH0KIAogdm9pZCBX
ZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWFuYWdlcjo6c2V0VGltZVRvTGl2ZUNvb2tpZVBhcnRp
dGlvbkZyZWUoU2Vjb25kcyBzZWNvbmRzKQogeworICAgIGlmICghbV9zdG9yZSkKKyAgICAgICAg
cmV0dXJuOworCiAgICAgbV9zdG9yZS0+c2V0VGltZVRvTGl2ZUNvb2tpZVBhcnRpdGlvbkZyZWUo
c2Vjb25kcyk7CiB9CiAKLXZvaWQgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc01hbmFnZXI6OnNl
dE1pbmltdW1UaW1lQmV0d2VlZW5EYXRhUmVjb3Jkc1JlbW92YWwoU2Vjb25kcyBzZWNvbmRzKQor
dm9pZCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWFuYWdlcjo6c2V0TWluaW11bVRpbWVCZXR3
ZWVuRGF0YVJlY29yZHNSZW1vdmFsKFNlY29uZHMgc2Vjb25kcykKIHsKLSAgICBtX3N0b3JlLT5z
ZXRNaW5pbXVtVGltZUJldHdlZWVuRGF0YVJlY29yZHNSZW1vdmFsKHNlY29uZHMpOworICAgIGlm
ICghbV9zdG9yZSkKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9zdG9yZS0+c2V0TWluaW11bVRp
bWVCZXR3ZWVuRGF0YVJlY29yZHNSZW1vdmFsKHNlY29uZHMpOwogfQogCiB2b2lkIFdlYlJlc291
cmNlTG9hZFN0YXRpc3RpY3NNYW5hZ2VyOjpzZXRHcmFuZGZhdGhlcmluZ1RpbWUoU2Vjb25kcyBz
ZWNvbmRzKQogewotICAgIG1fc3RvcmUtPnNldE1pbmltdW1UaW1lQmV0d2VlZW5EYXRhUmVjb3Jk
c1JlbW92YWwoc2Vjb25kcyk7CisgICAgaWYgKCFtX3N0b3JlKQorICAgICAgICByZXR1cm47CisK
KyAgICBtX3N0b3JlLT5zZXRHcmFuZGZhdGhlcmluZ1RpbWUoc2Vjb25kcyk7CiB9CiAKIHZvaWQg
V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc01hbmFnZXI6OmZpcmVEYXRhTW9kaWZpY2F0aW9uSGFu
ZGxlcigpCiB7Ci0gICAgLy8gSGVscGVyIGZ1bmN0aW9uIHVzZWQgYnkgdGVzdGluZyBzeXN0ZW0u
IFNob3VsZCBvbmx5IGJlIGNhbGxlZCBmcm9tIHRoZSBtYWluIHRocmVhZC4KLSAgICBBU1NFUlQo
UnVuTG9vcDo6aXNNYWluKCkpOwotICAgIG1fcXVldWUtPmRpc3BhdGNoKFt0aGlzXSB7Ci0gICAg
ICAgIG1fc3RvcmUtPmZpcmVEYXRhTW9kaWZpY2F0aW9uSGFuZGxlcigpOwotICAgIH0pOworICAg
IGlmICghbV9zdG9yZSkKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9zdG9yZS0+ZmlyZURhdGFN
b2RpZmljYXRpb25IYW5kbGVyKCk7CiB9CiAKIHZvaWQgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGlj
c01hbmFnZXI6OmZpcmVTaG91bGRQYXJ0aXRpb25Db29raWVzSGFuZGxlcigpCiB7Ci0gICAgLy8g
SGVscGVyIGZ1bmN0aW9uIHVzZWQgYnkgdGVzdGluZyBzeXN0ZW0uIFNob3VsZCBvbmx5IGJlIGNh
bGxlZCBmcm9tIHRoZSBtYWluIHRocmVhZC4KLSAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkp
OwotICAgIG1fcXVldWUtPmRpc3BhdGNoKFt0aGlzXSB7Ci0gICAgICAgIG1fc3RvcmUtPmZpcmVT
aG91bGRQYXJ0aXRpb25Db29raWVzSGFuZGxlcigpOwotICAgIH0pOworICAgIGlmICghbV9zdG9y
ZSkKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9zdG9yZS0+ZmlyZVNob3VsZFBhcnRpdGlvbkNv
b2tpZXNIYW5kbGVyKCk7CiB9CiAKIHZvaWQgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc01hbmFn
ZXI6OmZpcmVTaG91bGRQYXJ0aXRpb25Db29raWVzSGFuZGxlcihjb25zdCBWZWN0b3I8U3RyaW5n
PiYgZG9tYWluc1RvUmVtb3ZlLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgZG9tYWluc1RvQWRkLCBi
b29sIGNsZWFyRmlyc3QpCiB7Ci0gICAgLy8gSGVscGVyIGZ1bmN0aW9uIHVzZWQgYnkgdGVzdGlu
ZyBzeXN0ZW0uIFNob3VsZCBvbmx5IGJlIGNhbGxlZCBmcm9tIHRoZSBtYWluIHRocmVhZC4KLSAg
ICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOwotICAgIG1fcXVldWUtPmRpc3BhdGNoKFt0aGlz
LCBkb21haW5zVG9SZW1vdmUgPSBDcm9zc1RocmVhZENvcGllcjxWZWN0b3I8U3RyaW5nPj46OmNv
cHkoZG9tYWluc1RvUmVtb3ZlKSwgZG9tYWluc1RvQWRkID0gQ3Jvc3NUaHJlYWRDb3BpZXI8VmVj
dG9yPFN0cmluZz4+Ojpjb3B5KGRvbWFpbnNUb0FkZCksIGNsZWFyRmlyc3RdIHsKLSAgICAgICAg
bV9zdG9yZS0+ZmlyZVNob3VsZFBhcnRpdGlvbkNvb2tpZXNIYW5kbGVyKGRvbWFpbnNUb1JlbW92
ZSwgZG9tYWluc1RvQWRkLCBjbGVhckZpcnN0KTsKLSAgICB9KTsKKyAgICBpZiAoIW1fc3RvcmUp
CisgICAgICAgIHJldHVybjsKKworICAgIG1fc3RvcmUtPmZpcmVTaG91bGRQYXJ0aXRpb25Db29r
aWVzSGFuZGxlcihkb21haW5zVG9SZW1vdmUsIGRvbWFpbnNUb0FkZCwgY2xlYXJGaXJzdCk7CiB9
CiAKIHZvaWQgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc01hbmFnZXI6OmZpcmVUZWxlbWV0cnlI
YW5kbGVyKCkKIHsKLSAgICAvLyBIZWxwZXIgZnVuY3Rpb24gdXNlZCBieSB0ZXN0aW5nIHN5c3Rl
bS4gU2hvdWxkIG9ubHkgYmUgY2FsbGVkIGZyb20gdGhlIG1haW4gdGhyZWFkLgotICAgIEFTU0VS
VChSdW5Mb29wOjppc01haW4oKSk7CisgICAgaWYgKCFtX3N0b3JlKQorICAgICAgICByZXR1cm47
CisKICAgICBtX3N0b3JlLT5maXJlVGVsZW1ldHJ5SGFuZGxlcigpOwogfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc01hbmFn
ZXIuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNz
TWFuYWdlci5oCmluZGV4IGViODQ0ZjU1YTI2NzJjMGQwZmEzOGRkOTdkN2IwNjc5MmI0YzgyNmMu
LjIyYmIyMDgxMDA1ZDU0MDdjMTcwODY1NjQ1M2ZhMjk2NTU5YWY2Y2UgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWFuYWdlci5o
CisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNz
TWFuYWdlci5oCkBAIC0yOSwyMiArMjksMjMgQEAKICNpbmNsdWRlIDx3dGYvU2Vjb25kcy5oPgog
I2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCi1uYW1lc3BhY2UgV1RGIHsKLWNsYXNz
IFdvcmtRdWV1ZTsKLX0KLQogbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgVVJMOwogfQogCiBu
YW1lc3BhY2UgV2ViS2l0IHsKIAotY2xhc3MgUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOwor
Y2xhc3MgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOwogCisvLyBGSVhNRTogVGhpcyBz
aG91bGQgcHJvYmFibHkgYmVjb21lIGFuIEFQSU9iamVjdCBmb3IgdGhlIFdlYlJlc291cmNlTG9h
ZFN0YXRpc3RpY3NTdG9yZS4KIGNsYXNzIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NNYW5hZ2Vy
IHsKICAgICBmcmllbmQgY2xhc3MgTmV2ZXJEZXN0cm95ZWQ8V2ViUmVzb3VyY2VMb2FkU3RhdGlz
dGljc01hbmFnZXI+OwogcHVibGljOgorICAgIC8vIEZJWE1FOiBUaGlzIHNob3VsZCBub3QgYmUg
YSBzaW5nbGV0b24uCiAgICAgc3RhdGljIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NNYW5hZ2Vy
JiBzaGFyZWQoKTsKKyAgICB2b2lkIHNldFN0YXRpc3RpY3NTdG9yZShSZWY8V2ViUmVzb3VyY2VM
b2FkU3RhdGlzdGljc1N0b3JlPiYmKTsKKworICAgIH5XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNz
TWFuYWdlcigpOwogCiAgICAgdm9pZCBsb2dVc2VySW50ZXJhY3Rpb24oY29uc3QgV2ViQ29yZTo6
VVJMJik7CiAgICAgYm9vbCBoYXNIYWRVc2VySW50ZXJhY3Rpb24oY29uc3QgV2ViQ29yZTo6VVJM
Jik7CkBAIC02Miw3ICs2Myw3IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgc2V0VGltZVRvTGl2ZVVz
ZXJJbnRlcmFjdGlvbihTZWNvbmRzKTsKICAgICB2b2lkIHNldFRpbWVUb0xpdmVDb29raWVQYXJ0
aXRpb25GcmVlKFNlY29uZHMpOwotICAgIHZvaWQgc2V0TWluaW11bVRpbWVCZXR3ZWVlbkRhdGFS
ZWNvcmRzUmVtb3ZhbChTZWNvbmRzKTsKKyAgICB2b2lkIHNldE1pbmltdW1UaW1lQmV0d2VlbkRh
dGFSZWNvcmRzUmVtb3ZhbChTZWNvbmRzKTsKICAgICB2b2lkIHNldEdyYW5kZmF0aGVyaW5nVGlt
ZShTZWNvbmRzKTsKIAogICAgIHZvaWQgZmlyZURhdGFNb2RpZmljYXRpb25IYW5kbGVyKCk7CkBA
IC03MCwxOSArNzEsMTQgQEAgcHVibGljOgogICAgIHZvaWQgZmlyZVNob3VsZFBhcnRpdGlvbkNv
b2tpZXNIYW5kbGVyKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBkb21haW5zVG9SZW1vdmUsIGNvbnN0
IFZlY3RvcjxTdHJpbmc+JiBkb21haW5zVG9BZGQsIGJvb2wgY2xlYXJGaXJzdCk7CiAgICAgdm9p
ZCBmaXJlVGVsZW1ldHJ5SGFuZGxlcigpOwogCi0gICAgdm9pZCBzZXRTdGF0aXN0aWNzU3RvcmUo
UmVmPFJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZT4mJik7Ci0gICAgdm9pZCBzZXRTdGF0aXN0
aWNzUXVldWUoUmVmPFdURjo6V29ya1F1ZXVlPiYmKTsKICAgICB2b2lkIGNsZWFySW5NZW1vcnlT
dG9yZSgpOwogICAgIHZvaWQgY2xlYXJJbk1lbW9yeUFuZFBlcnNpc3RlbnRTdG9yZSgpOwogICAg
IHZvaWQgY2xlYXJJbk1lbW9yeUFuZFBlcnNpc3RlbnRTdG9yZShzdGQ6OmNocm9ubzo6c3lzdGVt
X2Nsb2NrOjp0aW1lX3BvaW50IG1vZGlmaWVkU2luY2UpOwogCi0jaWYgUExBVEZPUk0oQ09DT0Ep
Ci0gICAgdm9pZCByZWdpc3RlclVzZXJEZWZhdWx0c0lmTmVlZGVkKCk7Ci0jZW5kaWYKLQogcHJp
dmF0ZToKLSAgICBSZWZQdHI8UmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlPiBtX3N0b3JlOwot
ICAgIFJlZlB0cjxXVEY6OldvcmtRdWV1ZT4gbV9xdWV1ZTsKKyAgICBXZWJSZXNvdXJjZUxvYWRT
dGF0aXN0aWNzTWFuYWdlcigpOworCisgICAgUmVmUHRyPFdlYlJlc291cmNlTG9hZFN0YXRpc3Rp
Y3NTdG9yZT4gbV9zdG9yZTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9y
ZS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGlj
c1N0b3JlLmNwcAppbmRleCAzOWVhNDJkNjE4ZWViMGI4MDk1ZGYxOTE5ODJhNDk5MWYwN2EwYmNj
Li44NDU3M2QwMTkyYjkwMDRmOTdkMTdjNzgzMGFmMTk3MTE2OTY4OGVjIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGlj
c1N0b3JlLmNwcApAQCAtNTQsNiArNTQsMTEgQEAgdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAK
IG5hbWVzcGFjZSBXZWJLaXQgewogCit0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBzdGF0aWMgaW5saW5l
IFN0cmluZyBwcmltYXJ5RG9tYWluKGNvbnN0IFQmIHZhbHVlKQoreworICAgIHJldHVybiBSZXNv
dXJjZUxvYWRTdGF0aXN0aWNzOjpwcmltYXJ5RG9tYWluKHZhbHVlKTsKK30KKwogc3RhdGljIGJv
b2wgbm90aWZ5UGFnZXNXaGVuRGF0YVJlY29yZHNXZXJlU2Nhbm5lZCA9IGZhbHNlOwogc3RhdGlj
IGJvb2wgc2hvdWxkQ2xhc3NpZnlSZXNvdXJjZXNCZWZvcmVEYXRhUmVjb3Jkc1JlbW92YWwgPSB0
cnVlOwogc3RhdGljIGF1dG8gc2hvdWxkU3VibWl0VGVsZW1ldHJ5ID0gdHJ1ZTsKQEAgLTIwOSw4
ICsyMTQsNyBAQCB2b2lkIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6cmVnaXN0ZXJT
aGFyZWRSZXNvdXJjZUxvYWRPYnNlcnZlcigpCiB7CiAgICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFp
bigpKTsKICAgICAKLSAgICBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWFuYWdlcjo6c2hhcmVk
KCkuc2V0U3RhdGlzdGljc1N0b3JlKG1fcmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmNvcHlS
ZWYoKSk7Ci0gICAgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc01hbmFnZXI6OnNoYXJlZCgpLnNl
dFN0YXRpc3RpY3NRdWV1ZShtX3N0YXRpc3RpY3NRdWV1ZS5jb3B5UmVmKCkpOworICAgIFdlYlJl
c291cmNlTG9hZFN0YXRpc3RpY3NNYW5hZ2VyOjpzaGFyZWQoKS5zZXRTdGF0aXN0aWNzU3RvcmUo
KnRoaXMpOwogICAgIG1fcmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLT5zZXROb3RpZmljYXRp
b25DYWxsYmFjayhbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpXSB7CiAgICAg
ICAgIGlmIChtX3Jlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS0+aXNFbXB0eSgpKQogICAgICAg
ICAgICAgcmV0dXJuOwpAQCAtMjMyLDExICsyMzYsMTIgQEAgdm9pZCBXZWJSZXNvdXJjZUxvYWRT
dGF0aXN0aWNzU3RvcmU6OnJlZ2lzdGVyU2hhcmVkUmVzb3VyY2VMb2FkT2JzZXJ2ZXIoKQogICAg
IG1fcmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLT5zZXRGaXJlVGVsZW1ldHJ5Q2FsbGJhY2so
W3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKV0gewogICAgICAgICBzdWJtaXRU
ZWxlbWV0cnkoKTsKICAgICB9KTsKKwogI2lmIFBMQVRGT1JNKENPQ09BKQotICAgIFdlYlJlc291
cmNlTG9hZFN0YXRpc3RpY3NNYW5hZ2VyOjpzaGFyZWQoKS5yZWdpc3RlclVzZXJEZWZhdWx0c0lm
TmVlZGVkKCk7CisgICAgcmVnaXN0ZXJVc2VyRGVmYXVsdHNJZk5lZWRlZCgpOwogI2VuZGlmCiB9
Ci0gICAgCisKIHZvaWQgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpyZWdpc3RlclNo
YXJlZFJlc291cmNlTG9hZE9ic2VydmVyKFdURjo6RnVuY3Rpb248dm9pZChjb25zdCBWZWN0b3I8
U3RyaW5nPiYgZG9tYWluc1RvUmVtb3ZlLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgZG9tYWluc1Rv
QWRkLCBib29sIGNsZWFyRmlyc3QpPiYmIHNob3VsZFBhcnRpdGlvbkNvb2tpZXNGb3JEb21haW5z
SGFuZGxlcikKIHsKICAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOwpAQCAtNTA1LDUgKzUx
MCwyMDAgQEAgdm9pZCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OnN1Ym1pdFRlbGVt
ZXRyeSgpCiAgICAgICAgIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NUZWxlbWV0cnk6OmNhbGN1
bGF0ZUFuZFN1Ym1pdChjb3JlU3RvcmUoKSk7CiAgICAgfSk7CiB9CisKK3ZvaWQgV2ViUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc1N0b3JlOjpsb2dVc2VySW50ZXJhY3Rpb24oY29uc3QgVVJMJiB1cmwp
Cit7CisgICAgaWYgKHVybC5pc0JsYW5rVVJMKCkgfHwgdXJsLmlzRW1wdHkoKSkKKyAgICAgICAg
cmV0dXJuOworCisgICAgbV9zdGF0aXN0aWNzUXVldWUtPmRpc3BhdGNoKFt0aGlzLCBwcm90ZWN0
ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIHByaW1hcnlEb21haW5TdHJpbmcgPSBwcmltYXJ5RG9t
YWluKHVybCkuaXNvbGF0ZWRDb3B5KCldIHsKKyAgICAgICAgeworICAgICAgICAgICAgYXV0byBs
b2NrZXIgPSBob2xkTG9jayhjb3JlU3RvcmUoKS5zdGF0aXN0aWNzTG9jaygpKTsKKyAgICAgICAg
ICAgIGF1dG8mIHN0YXRpc3RpY3MgPSBjb3JlU3RvcmUoKS5lbnN1cmVSZXNvdXJjZVN0YXRpc3Rp
Y3NGb3JQcmltYXJ5RG9tYWluKHByaW1hcnlEb21haW5TdHJpbmcpOworICAgICAgICAgICAgc3Rh
dGlzdGljcy5oYWRVc2VySW50ZXJhY3Rpb24gPSB0cnVlOworICAgICAgICAgICAgc3RhdGlzdGlj
cy5tb3N0UmVjZW50VXNlckludGVyYWN0aW9uVGltZSA9IFdhbGxUaW1lOjpub3coKTsKKyAgICAg
ICAgfQorCisgICAgICAgIGNvcmVTdG9yZSgpLmZpcmVTaG91bGRQYXJ0aXRpb25Db29raWVzSGFu
ZGxlcih7IHByaW1hcnlEb21haW5TdHJpbmcgfSwgeyB9LCBmYWxzZSk7CisgICAgfSk7Cit9CisK
K3ZvaWQgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpjbGVhclVzZXJJbnRlcmFjdGlv
bihjb25zdCBVUkwmIHVybCkKK3sKKyAgICBpZiAodXJsLmlzQmxhbmtVUkwoKSB8fCB1cmwuaXNF
bXB0eSgpKQorICAgICAgICByZXR1cm47CisKKyAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKGNv
cmVTdG9yZSgpLnN0YXRpc3RpY3NMb2NrKCkpOworICAgIGF1dG8mIHN0YXRpc3RpY3MgPSBjb3Jl
U3RvcmUoKS5lbnN1cmVSZXNvdXJjZVN0YXRpc3RpY3NGb3JQcmltYXJ5RG9tYWluKHByaW1hcnlE
b21haW4odXJsKSk7CisgICAgc3RhdGlzdGljcy5oYWRVc2VySW50ZXJhY3Rpb24gPSBmYWxzZTsK
KyAgICBzdGF0aXN0aWNzLm1vc3RSZWNlbnRVc2VySW50ZXJhY3Rpb25UaW1lID0geyB9OworfQor
Citib29sIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6aGFzSGFkVXNlckludGVyYWN0
aW9uKGNvbnN0IFVSTCYgdXJsKQoreworICAgIGlmICh1cmwuaXNCbGFua1VSTCgpIHx8IHVybC5p
c0VtcHR5KCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGF1dG8gbG9ja2VyID0gaG9s
ZExvY2soY29yZVN0b3JlKCkuc3RhdGlzdGljc0xvY2soKSk7CisgICAgLy8gRklYTUU6IFdoeSBp
cyB0aGlzIHBvdGVudGlhbGx5IGNyZWF0aW5nIGEgc3RvcmUgZW50cnkganVzdCBmb3IgcXVlcnlp
bmc/CisgICAgYXV0byYgc3RhdGlzdGljcyA9IGNvcmVTdG9yZSgpLmVuc3VyZVJlc291cmNlU3Rh
dGlzdGljc0ZvclByaW1hcnlEb21haW4ocHJpbWFyeURvbWFpbih1cmwpKTsKKyAgICByZXR1cm4g
Y29yZVN0b3JlKCkuaGFzSGFkUmVjZW50VXNlckludGVyYWN0aW9uKHN0YXRpc3RpY3MpOworfQor
Cit2b2lkIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6c2V0UHJldmFsZW50UmVzb3Vy
Y2UoY29uc3QgVVJMJiB1cmwpCit7CisgICAgaWYgKHVybC5pc0JsYW5rVVJMKCkgfHwgdXJsLmlz
RW1wdHkoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhj
b3JlU3RvcmUoKS5zdGF0aXN0aWNzTG9jaygpKTsKKyAgICBhdXRvJiBzdGF0aXN0aWNzID0gY29y
ZVN0b3JlKCkuZW5zdXJlUmVzb3VyY2VTdGF0aXN0aWNzRm9yUHJpbWFyeURvbWFpbihwcmltYXJ5
RG9tYWluKHVybCkpOworICAgIHN0YXRpc3RpY3MuaXNQcmV2YWxlbnRSZXNvdXJjZSA9IHRydWU7
Cit9CisKK2Jvb2wgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjppc1ByZXZhbGVudFJl
c291cmNlKGNvbnN0IFVSTCYgdXJsKQoreworICAgIGlmICh1cmwuaXNCbGFua1VSTCgpIHx8IHVy
bC5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGF1dG8gbG9ja2VyID0g
aG9sZExvY2soY29yZVN0b3JlKCkuc3RhdGlzdGljc0xvY2soKSk7CisgICAgLy8gRklYTUU6IFdo
eSBpcyB0aGlzIHBvdGVudGlhbGx5IGNyZWF0aW5nIGEgc3RvcmUgZW50cnkganVzdCBmb3IgcXVl
cnlpbmc/CisgICAgYXV0byYgc3RhdGlzdGljcyA9IGNvcmVTdG9yZSgpLmVuc3VyZVJlc291cmNl
U3RhdGlzdGljc0ZvclByaW1hcnlEb21haW4ocHJpbWFyeURvbWFpbih1cmwpKTsKKyAgICByZXR1
cm4gc3RhdGlzdGljcy5pc1ByZXZhbGVudFJlc291cmNlOworfQorCit2b2lkIFdlYlJlc291cmNl
TG9hZFN0YXRpc3RpY3NTdG9yZTo6Y2xlYXJQcmV2YWxlbnRSZXNvdXJjZShjb25zdCBVUkwmIHVy
bCkKK3sKKyAgICBpZiAodXJsLmlzQmxhbmtVUkwoKSB8fCB1cmwuaXNFbXB0eSgpKQorICAgICAg
ICByZXR1cm47CisKKyAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKGNvcmVTdG9yZSgpLnN0YXRp
c3RpY3NMb2NrKCkpOworICAgIGF1dG8mIHN0YXRpc3RpY3MgPSBjb3JlU3RvcmUoKS5lbnN1cmVS
ZXNvdXJjZVN0YXRpc3RpY3NGb3JQcmltYXJ5RG9tYWluKHByaW1hcnlEb21haW4odXJsKSk7Cisg
ICAgc3RhdGlzdGljcy5pc1ByZXZhbGVudFJlc291cmNlID0gZmFsc2U7Cit9CisKK3ZvaWQgV2Vi
UmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpzZXRHcmFuZGZhdGhlcmVkKGNvbnN0IFVSTCYg
dXJsLCBib29sIHZhbHVlKQoreworICAgIGlmICh1cmwuaXNCbGFua1VSTCgpIHx8IHVybC5pc0Vt
cHR5KCkpCisgICAgICAgIHJldHVybjsKKworICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2soY29y
ZVN0b3JlKCkuc3RhdGlzdGljc0xvY2soKSk7CisgICAgYXV0byYgc3RhdGlzdGljcyA9IGNvcmVT
dG9yZSgpLmVuc3VyZVJlc291cmNlU3RhdGlzdGljc0ZvclByaW1hcnlEb21haW4ocHJpbWFyeURv
bWFpbih1cmwpKTsKKyAgICBzdGF0aXN0aWNzLmdyYW5kZmF0aGVyZWQgPSB2YWx1ZTsKK30KKwor
Ym9vbCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OmlzR3JhbmRmYXRoZXJlZChjb25z
dCBVUkwmIHVybCkKK3sKKyAgICBpZiAodXJsLmlzQmxhbmtVUkwoKSB8fCB1cmwuaXNFbXB0eSgp
KQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKGNv
cmVTdG9yZSgpLnN0YXRpc3RpY3NMb2NrKCkpOworICAgIC8vIEZJWE1FOiBXaHkgaXMgdGhpcyBw
b3RlbnRpYWxseSBjcmVhdGluZyBhIHN0b3JlIGVudHJ5IGp1c3QgZm9yIHF1ZXJ5aW5nPworICAg
IGF1dG8mIHN0YXRpc3RpY3MgPSBjb3JlU3RvcmUoKS5lbnN1cmVSZXNvdXJjZVN0YXRpc3RpY3NG
b3JQcmltYXJ5RG9tYWluKHByaW1hcnlEb21haW4odXJsKSk7CisgICAgcmV0dXJuIHN0YXRpc3Rp
Y3MuZ3JhbmRmYXRoZXJlZDsKK30KKwordm9pZCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3Rv
cmU6OnNldFN1YmZyYW1lVW5kZXJUb3BGcmFtZU9yaWdpbihjb25zdCBVUkwmIHN1YmZyYW1lLCBj
b25zdCBVUkwmIHRvcEZyYW1lKQoreworICAgIGlmIChzdWJmcmFtZS5pc0JsYW5rVVJMKCkgfHwg
c3ViZnJhbWUuaXNFbXB0eSgpIHx8IHRvcEZyYW1lLmlzQmxhbmtVUkwoKSB8fCB0b3BGcmFtZS5p
c0VtcHR5KCkpCisgICAgICAgIHJldHVybjsKKworICAgIG1fc3RhdGlzdGljc1F1ZXVlLT5kaXNw
YXRjaChbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBwcmltYXJ5VG9wRnJh
bWVEb21haW5TdHJpbmcgPSBwcmltYXJ5RG9tYWluKHRvcEZyYW1lKS5pc29sYXRlZENvcHkoKSwg
cHJpbWFyeVN1YkZyYW1lRG9tYWluU3RyaW5nID0gcHJpbWFyeURvbWFpbihzdWJmcmFtZSkuaXNv
bGF0ZWRDb3B5KCldIHsKKyAgICAgICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhjb3JlU3RvcmUo
KS5zdGF0aXN0aWNzTG9jaygpKTsKKyAgICAgICAgYXV0byYgc3RhdGlzdGljcyA9IGNvcmVTdG9y
ZSgpLmVuc3VyZVJlc291cmNlU3RhdGlzdGljc0ZvclByaW1hcnlEb21haW4ocHJpbWFyeVN1YkZy
YW1lRG9tYWluU3RyaW5nKTsKKyAgICAgICAgc3RhdGlzdGljcy5zdWJmcmFtZVVuZGVyVG9wRnJh
bWVPcmlnaW5zLmFkZChwcmltYXJ5VG9wRnJhbWVEb21haW5TdHJpbmcpOworICAgIH0pOworfQor
Cit2b2lkIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6c2V0U3VicmVzb3VyY2VVbmRl
clRvcEZyYW1lT3JpZ2luKGNvbnN0IFVSTCYgc3VicmVzb3VyY2UsIGNvbnN0IFVSTCYgdG9wRnJh
bWUpCit7CisgICAgaWYgKHN1YnJlc291cmNlLmlzQmxhbmtVUkwoKSB8fCBzdWJyZXNvdXJjZS5p
c0VtcHR5KCkgfHwgdG9wRnJhbWUuaXNCbGFua1VSTCgpIHx8IHRvcEZyYW1lLmlzRW1wdHkoKSkK
KyAgICAgICAgcmV0dXJuOworCisgICAgbV9zdGF0aXN0aWNzUXVldWUtPmRpc3BhdGNoKFt0aGlz
LCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIHByaW1hcnlUb3BGcmFtZURvbWFpblN0
cmluZyA9IHByaW1hcnlEb21haW4odG9wRnJhbWUpLmlzb2xhdGVkQ29weSgpLCBwcmltYXJ5U3Vi
cmVzb3VyY2VEb21haW5TdHJpbmcgPSBwcmltYXJ5RG9tYWluKHN1YnJlc291cmNlKS5pc29sYXRl
ZENvcHkoKV0geworICAgICAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKGNvcmVTdG9yZSgpLnN0
YXRpc3RpY3NMb2NrKCkpOworICAgICAgICBhdXRvJiBzdGF0aXN0aWNzID0gY29yZVN0b3JlKCku
ZW5zdXJlUmVzb3VyY2VTdGF0aXN0aWNzRm9yUHJpbWFyeURvbWFpbihwcmltYXJ5U3VicmVzb3Vy
Y2VEb21haW5TdHJpbmcpOworICAgICAgICBzdGF0aXN0aWNzLnN1YnJlc291cmNlVW5kZXJUb3BG
cmFtZU9yaWdpbnMuYWRkKHByaW1hcnlUb3BGcmFtZURvbWFpblN0cmluZyk7CisgICAgfSk7Cit9
CisKK3ZvaWQgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpzZXRTdWJyZXNvdXJjZVVu
aXF1ZVJlZGlyZWN0VG8oY29uc3QgVVJMJiBzdWJyZXNvdXJjZSwgY29uc3QgVVJMJiBob3N0TmFt
ZVJlZGlyZWN0ZWRUbykKK3sKKyAgICBpZiAoc3VicmVzb3VyY2UuaXNCbGFua1VSTCgpIHx8IHN1
YnJlc291cmNlLmlzRW1wdHkoKSB8fCBob3N0TmFtZVJlZGlyZWN0ZWRUby5pc0JsYW5rVVJMKCkg
fHwgaG9zdE5hbWVSZWRpcmVjdGVkVG8uaXNFbXB0eSgpKQorICAgICAgICByZXR1cm47CisKKyAg
ICBtX3N0YXRpc3RpY3NRdWV1ZS0+ZGlzcGF0Y2goW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtl
UmVmKCp0aGlzKSwgcHJpbWFyeVJlZGlyZWN0RG9tYWluU3RyaW5nID0gcHJpbWFyeURvbWFpbiho
b3N0TmFtZVJlZGlyZWN0ZWRUbykuaXNvbGF0ZWRDb3B5KCksIHByaW1hcnlTdWJyZXNvdXJjZURv
bWFpblN0cmluZyA9IHByaW1hcnlEb21haW4oc3VicmVzb3VyY2UpLmlzb2xhdGVkQ29weSgpXSB7
CisgICAgICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2soY29yZVN0b3JlKCkuc3RhdGlzdGljc0xv
Y2soKSk7CisgICAgICAgIGF1dG8mIHN0YXRpc3RpY3MgPSBjb3JlU3RvcmUoKS5lbnN1cmVSZXNv
dXJjZVN0YXRpc3RpY3NGb3JQcmltYXJ5RG9tYWluKHByaW1hcnlTdWJyZXNvdXJjZURvbWFpblN0
cmluZyk7CisgICAgICAgIHN0YXRpc3RpY3Muc3VicmVzb3VyY2VVbmlxdWVSZWRpcmVjdHNUby5h
ZGQocHJpbWFyeVJlZGlyZWN0RG9tYWluU3RyaW5nKTsKKyAgICB9KTsKK30KKwordm9pZCBXZWJS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OmZpcmVEYXRhTW9kaWZpY2F0aW9uSGFuZGxlcigp
Cit7CisgICAgLy8gSGVscGVyIGZ1bmN0aW9uIHVzZWQgYnkgdGVzdGluZyBzeXN0ZW0uIFNob3Vs
ZCBvbmx5IGJlIGNhbGxlZCBmcm9tIHRoZSBtYWluIHRocmVhZC4KKyAgICBBU1NFUlQoUnVuTG9v
cDo6aXNNYWluKCkpOworICAgIG1fc3RhdGlzdGljc1F1ZXVlLT5kaXNwYXRjaChbdGhpcywgcHJv
dGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpXSB7CisgICAgICAgIGNvcmVTdG9yZSgpLmZpcmVE
YXRhTW9kaWZpY2F0aW9uSGFuZGxlcigpOworICAgIH0pOworfQorCit2b2lkIFdlYlJlc291cmNl
TG9hZFN0YXRpc3RpY3NTdG9yZTo6ZmlyZVNob3VsZFBhcnRpdGlvbkNvb2tpZXNIYW5kbGVyKCkK
K3sKKyAgICAvLyBIZWxwZXIgZnVuY3Rpb24gdXNlZCBieSB0ZXN0aW5nIHN5c3RlbS4gU2hvdWxk
IG9ubHkgYmUgY2FsbGVkIGZyb20gdGhlIG1haW4gdGhyZWFkLgorICAgIEFTU0VSVChSdW5Mb29w
Ojppc01haW4oKSk7CisgICAgbV9zdGF0aXN0aWNzUXVldWUtPmRpc3BhdGNoKFt0aGlzLCBwcm90
ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyldIHsKKyAgICAgICAgY29yZVN0b3JlKCkuZmlyZVNo
b3VsZFBhcnRpdGlvbkNvb2tpZXNIYW5kbGVyKCk7CisgICAgfSk7Cit9CisKK3ZvaWQgV2ViUmVz
b3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpmaXJlU2hvdWxkUGFydGl0aW9uQ29va2llc0hhbmRs
ZXIoY29uc3QgVmVjdG9yPFN0cmluZz4mIGRvbWFpbnNUb1JlbW92ZSwgY29uc3QgVmVjdG9yPFN0
cmluZz4mIGRvbWFpbnNUb0FkZCwgYm9vbCBjbGVhckZpcnN0KQoreworICAgIC8vIEhlbHBlciBm
dW5jdGlvbiB1c2VkIGJ5IHRlc3Rpbmcgc3lzdGVtLiBTaG91bGQgb25seSBiZSBjYWxsZWQgZnJv
bSB0aGUgbWFpbiB0aHJlYWQuCisgICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKKyAgICBt
X3N0YXRpc3RpY3NRdWV1ZS0+ZGlzcGF0Y2goW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVm
KCp0aGlzKSwgZG9tYWluc1RvUmVtb3ZlID0gQ3Jvc3NUaHJlYWRDb3BpZXI8VmVjdG9yPFN0cmlu
Zz4+Ojpjb3B5KGRvbWFpbnNUb1JlbW92ZSksIGRvbWFpbnNUb0FkZCA9IENyb3NzVGhyZWFkQ29w
aWVyPFZlY3RvcjxTdHJpbmc+Pjo6Y29weShkb21haW5zVG9BZGQpLCBjbGVhckZpcnN0XSB7Cisg
ICAgICAgIGNvcmVTdG9yZSgpLmZpcmVTaG91bGRQYXJ0aXRpb25Db29raWVzSGFuZGxlcihkb21h
aW5zVG9SZW1vdmUsIGRvbWFpbnNUb0FkZCwgY2xlYXJGaXJzdCk7CisgICAgfSk7Cit9CisKK3Zv
aWQgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpmaXJlVGVsZW1ldHJ5SGFuZGxlcigp
Cit7CisgICAgLy8gSGVscGVyIGZ1bmN0aW9uIHVzZWQgYnkgdGVzdGluZyBzeXN0ZW0uIFNob3Vs
ZCBvbmx5IGJlIGNhbGxlZCBmcm9tIHRoZSBtYWluIHRocmVhZC4KKyAgICBBU1NFUlQoUnVuTG9v
cDo6aXNNYWluKCkpOworICAgIGNvcmVTdG9yZSgpLmZpcmVUZWxlbWV0cnlIYW5kbGVyKCk7Cit9
CisKK3ZvaWQgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpjbGVhckluTWVtb3J5KCkK
K3sKKyAgICBtX3N0YXRpc3RpY3NRdWV1ZS0+ZGlzcGF0Y2goW3RoaXMsIHByb3RlY3RlZFRoaXMg
PSBtYWtlUmVmKCp0aGlzKV0geworICAgICAgICBjb3JlU3RvcmUoKS5jbGVhckluTWVtb3J5KCk7
CisgICAgfSk7Cit9CisKK3ZvaWQgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpjbGVh
ckluTWVtb3J5QW5kUGVyc2lzdGVudCgpCit7CisgICAgbV9zdGF0aXN0aWNzUXVldWUtPmRpc3Bh
dGNoKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyldIHsKKyAgICAgICAgY29y
ZVN0b3JlKCkuY2xlYXJJbk1lbW9yeUFuZFBlcnNpc3RlbnQoKTsKKyAgICB9KTsKK30KKwordm9p
ZCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OnNldFRpbWVUb0xpdmVVc2VySW50ZXJh
Y3Rpb24oU2Vjb25kcyBzZWNvbmRzKQoreworICAgIGNvcmVTdG9yZSgpLnNldFRpbWVUb0xpdmVV
c2VySW50ZXJhY3Rpb24oc2Vjb25kcyk7Cit9CisKK3ZvaWQgV2ViUmVzb3VyY2VMb2FkU3RhdGlz
dGljc1N0b3JlOjpzZXRUaW1lVG9MaXZlQ29va2llUGFydGl0aW9uRnJlZShTZWNvbmRzIHNlY29u
ZHMpCit7CisgICAgY29yZVN0b3JlKCkuc2V0VGltZVRvTGl2ZUNvb2tpZVBhcnRpdGlvbkZyZWUo
c2Vjb25kcyk7Cit9CisKK3ZvaWQgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpzZXRN
aW5pbXVtVGltZUJldHdlZW5EYXRhUmVjb3Jkc1JlbW92YWwoU2Vjb25kcyBzZWNvbmRzKQorewor
ICAgIGNvcmVTdG9yZSgpLnNldE1pbmltdW1UaW1lQmV0d2VlbkRhdGFSZWNvcmRzUmVtb3ZhbChz
ZWNvbmRzKTsKK30KKwordm9pZCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OnNldEdy
YW5kZmF0aGVyaW5nVGltZShTZWNvbmRzIHNlY29uZHMpCit7CisgICAgY29yZVN0b3JlKCkuc2V0
R3JhbmRmYXRoZXJpbmdUaW1lKHNlY29uZHMpOworfQogICAgIAogfSAvLyBuYW1lc3BhY2UgV2Vi
S2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUmVzb3VyY2VMb2Fk
U3RhdGlzdGljc1N0b3JlLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUmVzb3VyY2VM
b2FkU3RhdGlzdGljc1N0b3JlLmgKaW5kZXggMzNmZWQ5MjBjN2E3M2FiZjUzMDQ3OGEwZDIwYWFk
ZmY2OTE0Nzk2NS4uNDFhZGNkZjdmYWI4OTU4OWZkYzAwMmU1YjliNDgwMzIzMjU1ODY4OSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlJlc291cmNlTG9hZFN0YXRpc3Rp
Y3NTdG9yZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJSZXNvdXJjZUxvYWRT
dGF0aXN0aWNzU3RvcmUuaApAQCAtNTksNyArNTksNiBAQCBwdWJsaWM6CiAgICAgc3RhdGljIFJl
ZjxXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU+IGNyZWF0ZShjb25zdCBTdHJpbmcmKTsK
ICAgICBzdGF0aWMgdm9pZCBzZXROb3RpZnlQYWdlc1doZW5EYXRhUmVjb3Jkc1dlcmVTY2FubmVk
KGJvb2wpOwogICAgIHN0YXRpYyB2b2lkIHNldFNob3VsZENsYXNzaWZ5UmVzb3VyY2VzQmVmb3Jl
RGF0YVJlY29yZHNSZW1vdmFsKGJvb2wpOwotICAgIHN0YXRpYyB2b2lkIHNldE1pbmltdW1UaW1l
QmV0d2VlZW5EYXRhUmVjb3Jkc1JlbW92YWwoU2Vjb25kcyk7CiAgICAgc3RhdGljIHZvaWQgc2V0
U2hvdWxkU3VibWl0VGVsZW1ldHJ5KGJvb2wpOwogICAgIHZpcnR1YWwgfldlYlJlc291cmNlTG9h
ZFN0YXRpc3RpY3NTdG9yZSgpOwogICAgIApAQCAtNzYsMTIgKzc1LDM1IEBAIHB1YmxpYzoKIAog
ICAgIHZvaWQgcmVhZERhdGFGcm9tRGlza0lmTmVlZGVkKCk7CiAKLSAgICBSZXNvdXJjZUxvYWRT
dGF0aXN0aWNzU3RvcmUmIGNvcmVTdG9yZSgpIHsgcmV0dXJuIG1fcmVzb3VyY2VMb2FkU3RhdGlz
dGljc1N0b3JlLmdldCgpOyB9Ci0gICAgY29uc3QgUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3Jl
JiBjb3JlU3RvcmUoKSBjb25zdCB7IHJldHVybiBtX3Jlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9y
ZS5nZXQoKTsgfQorICAgIHZvaWQgbG9nVXNlckludGVyYWN0aW9uKGNvbnN0IFdlYkNvcmU6OlVS
TCYpOworICAgIHZvaWQgY2xlYXJVc2VySW50ZXJhY3Rpb24oY29uc3QgV2ViQ29yZTo6VVJMJik7
CisgICAgYm9vbCBoYXNIYWRVc2VySW50ZXJhY3Rpb24oY29uc3QgV2ViQ29yZTo6VVJMJik7Cisg
ICAgdm9pZCBzZXRQcmV2YWxlbnRSZXNvdXJjZShjb25zdCBXZWJDb3JlOjpVUkwmKTsKKyAgICBi
b29sIGlzUHJldmFsZW50UmVzb3VyY2UoY29uc3QgV2ViQ29yZTo6VVJMJik7CisgICAgdm9pZCBj
bGVhclByZXZhbGVudFJlc291cmNlKGNvbnN0IFdlYkNvcmU6OlVSTCYpOworICAgIHZvaWQgc2V0
R3JhbmRmYXRoZXJlZChjb25zdCBXZWJDb3JlOjpVUkwmLCBib29sKTsKKyAgICBib29sIGlzR3Jh
bmRmYXRoZXJlZChjb25zdCBXZWJDb3JlOjpVUkwmKTsKKyAgICB2b2lkIHNldFN1YmZyYW1lVW5k
ZXJUb3BGcmFtZU9yaWdpbihjb25zdCBXZWJDb3JlOjpVUkwmIHN1YmZyYW1lLCBjb25zdCBXZWJD
b3JlOjpVUkwmIHRvcEZyYW1lKTsKKyAgICB2b2lkIHNldFN1YnJlc291cmNlVW5kZXJUb3BGcmFt
ZU9yaWdpbihjb25zdCBXZWJDb3JlOjpVUkwmIHN1YnJlc291cmNlLCBjb25zdCBXZWJDb3JlOjpV
UkwmIHRvcEZyYW1lKTsKKyAgICB2b2lkIHNldFN1YnJlc291cmNlVW5pcXVlUmVkaXJlY3RUbyhj
b25zdCBXZWJDb3JlOjpVUkwmIHN1YnJlc291cmNlLCBjb25zdCBXZWJDb3JlOjpVUkwmIGhvc3RO
YW1lUmVkaXJlY3RlZFRvKTsKKyAgICB2b2lkIGZpcmVEYXRhTW9kaWZpY2F0aW9uSGFuZGxlcigp
OworICAgIHZvaWQgZmlyZVNob3VsZFBhcnRpdGlvbkNvb2tpZXNIYW5kbGVyKCk7CisgICAgdm9p
ZCBmaXJlU2hvdWxkUGFydGl0aW9uQ29va2llc0hhbmRsZXIoY29uc3QgVmVjdG9yPFN0cmluZz4m
IGRvbWFpbnNUb1JlbW92ZSwgY29uc3QgVmVjdG9yPFN0cmluZz4mIGRvbWFpbnNUb0FkZCwgYm9v
bCBjbGVhckZpcnN0KTsKKyAgICB2b2lkIGZpcmVUZWxlbWV0cnlIYW5kbGVyKCk7CisgICAgdm9p
ZCBjbGVhckluTWVtb3J5KCk7CisgICAgdm9pZCBjbGVhckluTWVtb3J5QW5kUGVyc2lzdGVudCgp
OworCisgICAgdm9pZCBzZXRUaW1lVG9MaXZlVXNlckludGVyYWN0aW9uKFNlY29uZHMpOworICAg
IHZvaWQgc2V0VGltZVRvTGl2ZUNvb2tpZVBhcnRpdGlvbkZyZWUoU2Vjb25kcyk7CisgICAgdm9p
ZCBzZXRNaW5pbXVtVGltZUJldHdlZW5EYXRhUmVjb3Jkc1JlbW92YWwoU2Vjb25kcyk7CisgICAg
dm9pZCBzZXRHcmFuZGZhdGhlcmluZ1RpbWUoU2Vjb25kcyk7CiAKIHByaXZhdGU6CiAgICAgZXhw
bGljaXQgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlKGNvbnN0IFN0cmluZyYpOwogCisg
ICAgUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlJiBjb3JlU3RvcmUoKSB7IHJldHVybiBtX3Jl
c291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5nZXQoKTsgfQorICAgIGNvbnN0IFJlc291cmNlTG9h
ZFN0YXRpc3RpY3NTdG9yZSYgY29yZVN0b3JlKCkgY29uc3QgeyByZXR1cm4gbV9yZXNvdXJjZUxv
YWRTdGF0aXN0aWNzU3RvcmUuZ2V0KCk7IH0KKwogICAgIHZvaWQgcHJvY2Vzc1N0YXRpc3RpY3NB
bmREYXRhUmVjb3JkcygpOwogCiAgICAgdm9pZCBjbGFzc2lmeVJlc291cmNlKFdlYkNvcmU6OlJl
c291cmNlTG9hZFN0YXRpc3RpY3MmKTsKQEAgLTEwNyw2ICsxMjksMTAgQEAgcHJpdmF0ZToKICAg
ICB2b2lkIHRlbGVtZXRyeVRpbWVyRmlyZWQoKTsKICAgICB2b2lkIHN1Ym1pdFRlbGVtZXRyeSgp
OwogCisjaWYgUExBVEZPUk0oQ09DT0EpCisgICAgdm9pZCByZWdpc3RlclVzZXJEZWZhdWx0c0lm
TmVlZGVkKCk7CisjZW5kaWYKKwogICAgIFJlZjxSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU+
IG1fcmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOwogI2lmIEhBVkUoQ09SRV9QUkVESUNUSU9O
KQogICAgIFJlc291cmNlTG9hZFN0YXRpc3RpY3NDbGFzc2lmaWVyQ29jb2EgbV9yZXNvdXJjZUxv
YWRTdGF0aXN0aWNzQ2xhc3NpZmllcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmNwcAppbmRleCAyZmI5Y2M1OTYx
NTQxMTY0N2ZlOWNhZDE2YTE1YWVhOTMyODUzZDRiLi4xOTZmNDNkNjBkNmNmYTk5ZmRjYTMxZjEy
ZjNkMjkxMjdkNzEwMTJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2Vi
c2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuY3BwCkBAIC0zNCw3ICszNCw2IEBACiAj
aW5jbHVkZSAiV2ViQ29va2llTWFuYWdlclByb3h5LmgiCiAjaW5jbHVkZSAiV2ViUHJvY2Vzc01l
c3NhZ2VzLmgiCiAjaW5jbHVkZSAiV2ViUHJvY2Vzc1Bvb2wuaCIKLSNpbmNsdWRlICJXZWJSZXNv
dXJjZUxvYWRTdGF0aXN0aWNzTWFuYWdlci5oIgogI2luY2x1ZGUgIldlYlJlc291cmNlTG9hZFN0
YXRpc3RpY3NTdG9yZS5oIgogI2luY2x1ZGUgIldlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9y
ZU1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiV2Vic2l0ZURhdGEuaCIKQEAgLTgxNSw4ICs4MTQsOCBA
QCB2b2lkIFdlYnNpdGVEYXRhU3RvcmU6OnJlbW92ZURhdGEoT3B0aW9uU2V0PFdlYnNpdGVEYXRh
VHlwZT4gZGF0YVR5cGVzLCBzdGQ6OmNocgogICAgIH0KICNlbmRpZgogCi0gICAgaWYgKGRhdGFU
eXBlcy5jb250YWlucyhXZWJzaXRlRGF0YVR5cGU6OlJlc291cmNlTG9hZFN0YXRpc3RpY3MpKQot
ICAgICAgICBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWFuYWdlcjo6c2hhcmVkKCkuY2xlYXJJ
bk1lbW9yeUFuZFBlcnNpc3RlbnRTdG9yZShtb2RpZmllZFNpbmNlKTsKKyAgICBpZiAoZGF0YVR5
cGVzLmNvbnRhaW5zKFdlYnNpdGVEYXRhVHlwZTo6UmVzb3VyY2VMb2FkU3RhdGlzdGljcykgJiYg
bV9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzKQorICAgICAgICBtX3Jlc291cmNlTG9hZFN0YXRpc3Rp
Y3MtPmNsZWFySW5NZW1vcnlBbmRQZXJzaXN0ZW50U3RvcmUobW9kaWZpZWRTaW5jZSk7CiAKICAg
ICAvLyBUaGVyZSdzIGEgY2hhbmNlIHRoYXQgd2UgZG9uJ3QgaGF2ZSBhbnkgcGVuZGluZyBjYWxs
YmFja3MuIElmIHNvLCB3ZSB3YW50IHRvIGRpc3BhdGNoIHRoZSBjb21wbGV0aW9uIGhhbmRsZXIg
cmlnaHQgYXdheS4KICAgICBjYWxsYmFja0FnZ3JlZ2F0b3ItPmNhbGxJZk5lZWRlZCgpOwpAQCAt
MTA4NCw4ICsxMDgzLDggQEAgdm9pZCBXZWJzaXRlRGF0YVN0b3JlOjpyZW1vdmVEYXRhKE9wdGlv
blNldDxXZWJzaXRlRGF0YVR5cGU+IGRhdGFUeXBlcywgY29uc3QgVmUKICAgICB9CiAjZW5kaWYK
IAotICAgIGlmIChkYXRhVHlwZXMuY29udGFpbnMoV2Vic2l0ZURhdGFUeXBlOjpSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzKSkKLSAgICAgICAgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc01hbmFnZXI6
OnNoYXJlZCgpLmNsZWFySW5NZW1vcnlBbmRQZXJzaXN0ZW50U3RvcmUoKTsKKyAgICBpZiAoZGF0
YVR5cGVzLmNvbnRhaW5zKFdlYnNpdGVEYXRhVHlwZTo6UmVzb3VyY2VMb2FkU3RhdGlzdGljcykg
JiYgbV9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzKQorICAgICAgICBtX3Jlc291cmNlTG9hZFN0YXRp
c3RpY3MtPmNsZWFySW5NZW1vcnlBbmRQZXJzaXN0ZW50U3RvcmUoKTsKIAogICAgIC8vIFRoZXJl
J3MgYSBjaGFuY2UgdGhhdCB3ZSBkb24ndCBoYXZlIGFueSBwZW5kaW5nIGNhbGxiYWNrcy4gSWYg
c28sIHdlIHdhbnQgdG8gZGlzcGF0Y2ggdGhlIGNvbXBsZXRpb24gaGFuZGxlciByaWdodCBhd2F5
LgogICAgIGNhbGxiYWNrQWdncmVnYXRvci0+Y2FsbElmTmVlZGVkKCk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9XZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2Uv
V2ViS2l0Mi9XZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggMWVlNDk2MTRj
NjIzYjQ5ZmNmZTE0NzA4YjY0MTdhNWI5M2M4NDA3Zi4uMmE1M2U2NDI1ZDY1YTQwNjk3MmM5MWRi
NzE0YWZjNjRmODZiOThlYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViS2l0Mi54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYktpdDIueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTE5MSw3ICsxMTkxLDYgQEAKIAkJNjVCODZGMUUxMkYx
MURFMzAwQjdERDhBIC8qIFdLQnVuZGxlSW5zcGVjdG9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2NUI4NkYxODEyRjExRDdCMDBCN0REOEEgLyogV0tC
dW5kbGVJbnNwZWN0b3IuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OwogCQk2QjgyMUREQzFFRUYwNUREMDBEN0FGNEEgLyogV2ViUmVzb3VyY2VMb2FkU3Rh
dGlzdGljc1RlbGVtZXRyeS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNkI4MjFEREExRUVGMDVERDAwRDdBRjRBIC8qIFdlYlJlc291cmNlTG9hZFN0YXRp
c3RpY3NUZWxlbWV0cnkuaCAqLzsgfTsKIAkJNkI4MjFEREQxRUVGMDVERDAwRDdBRjRBIC8qIFdl
YlJlc291cmNlTG9hZFN0YXRpc3RpY3NUZWxlbWV0cnkuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNkI4MjFEREIxRUVGMDVERDAwRDdBRjRBIC8qIFdl
YlJlc291cmNlTG9hZFN0YXRpc3RpY3NUZWxlbWV0cnkuY3BwICovOyB9OwotCQk2QkJCQUQzODFF
QzNFNTc4MDBBRDBBMkEgLyogV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc01hbmFnZXJDb2NvYS5t
bSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDZCQkJBRDM3
MUVDM0U1NjMwMEFEMEEyQSAvKiBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWFuYWdlckNvY29h
Lm1tICovOyB9OwogCQk2QkU5Njk5QzFFNDNCM0ZGMDA4Qjc0ODMgLyogV0tSZXNvdXJjZUxvYWRT
dGF0aXN0aWNzTWFuYWdlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNkJFOTY5OUIxRTQzQjNGRjAwOEI3NDgzIC8qIFdLUmVzb3VyY2VMb2FkU3RhdGlz
dGljc01hbmFnZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OwogCQk2QkU5Njk5RTFFNDNCNDFEMDA4Qjc0ODMgLyogV0tSZXNvdXJjZUxvYWRTdGF0aXN0
aWNzTWFuYWdlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA2QkU5Njk5RDFFNDNCNDFEMDA4Qjc0ODMgLyogV0tSZXNvdXJjZUxvYWRTdGF0aXN0aWNz
TWFuYWdlci5jcHAgKi87IH07CiAJCTZCRTk2OUEwMUU0M0I4NkUwMDhCNzQ4MyAvKiBXZWJSZXNv
dXJjZUxvYWRTdGF0aXN0aWNzTWFuYWdlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNkJFOTY5OUYxRTQzQjg2RTAwOEI3NDgzIC8qIFdlYlJlc291cmNl
TG9hZFN0YXRpc3RpY3NNYW5hZ2VyLmggKi87IH07CkBAIC0zNDgzLDcgKzM0ODIsNiBAQAogCQk2
NUI4NkYxODEyRjExRDdCMDBCN0REOEEgLyogV0tCdW5kbGVJbnNwZWN0b3IuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0tCdW5kbGVJbnNwZWN0b3IuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJNkI4MjFEREExRUVGMDVERDAwRDdBRjRBIC8qIFdlYlJlc291cmNl
TG9hZFN0YXRpc3RpY3NUZWxlbWV0cnkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViUmVzb3VyY2VMb2Fk
U3RhdGlzdGljc1RlbGVtZXRyeS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk2Qjgy
MUREQjFFRUYwNUREMDBEN0FGNEEgLyogV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1RlbGVtZXRy
eS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzVGVsZW1l
dHJ5LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNkJCQkFEMzcxRUMzRTU2MzAw
QUQwQTJBIC8qIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NNYW5hZ2VyQ29jb2EubW0gKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0
aWNzTWFuYWdlckNvY29hLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk2QkU5Njk5
QjFFNDNCM0ZGMDA4Qjc0ODMgLyogV0tSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWFuYWdlci5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXS1Jlc291cmNlTG9hZFN0YXRpc3RpY3NN
YW5hZ2VyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTZCRTk2OTlEMUU0M0I0MUQw
MDhCNzQ4MyAvKiBXS1Jlc291cmNlTG9hZFN0YXRpc3RpY3NNYW5hZ2VyLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdLUmVzb3VyY2VMb2FkU3RhdGlzdGljc01hbmFn
ZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk2QkU5Njk5RjFFNDNCODZFMDA4
Qjc0ODMgLyogV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc01hbmFnZXIuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc01hbmFnZXIuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTUyMzAsNyArNTIyOCw2IEBACiAJCQkJQ0RB
MjlBMUYxQ0JFQjVGQjAwOTAxQ0NGIC8qIFdlYlBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eS5t
bSAqLywKIAkJCQk3Q0U0RDIxNTFBNDkxNDg0MDBDN0YxNTIgLyogV2ViUHJvY2Vzc1Bvb2xDb2Nv
YS5tbSAqLywKIAkJCQkxQTA0RjYxNzFBNEEzQTdBMDBBMjFCNkUgLyogV2ViUHJvY2Vzc1Byb3h5
Q29jb2EubW0gKi8sCi0JCQkJNkJCQkFEMzcxRUMzRTU2MzAwQUQwQTJBIC8qIFdlYlJlc291cmNl
TG9hZFN0YXRpc3RpY3NNYW5hZ2VyQ29jb2EubW0gKi8sCiAJCQkJN0FBRDE3NUUxRUE2QUYzNzAw
M0IwODk0IC8qIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZUNvY29hLm1tICovLAogCQkJ
CTUxRDEyNDMxMUU2REU1MjEwMDJCMjgyMCAvKiBXZWJVUkxTY2hlbWVIYW5kbGVyQ29jb2EuaCAq
LywKIAkJCQk1MUQxMjQzMjFFNkRFNTIxMDAyQjI4MjAgLyogV2ViVVJMU2NoZW1lSGFuZGxlckNv
Y29hLm1tICovLApAQCAtMTA0MzYsNyArMTA0MzMsNiBAQAogCQkJCTUxMEFGRkI5MTY1NDIwNDgw
MDFCQTA1RSAvKiBXZWJSZXNvdXJjZUxvYWRlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1MUYw
NjBFMTE2NTQzMTg1MDBGMzI4MUIgLyogV2ViUmVzb3VyY2VMb2FkZXJNZXNzYWdlUmVjZWl2ZXIu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNkJFOTY5QTIxRTQzQjhBNDAwOEI3NDgzIC8qIFdlYlJl
c291cmNlTG9hZFN0YXRpc3RpY3NNYW5hZ2VyLmNwcCBpbiBTb3VyY2VzICovLAotCQkJCTZCQkJB
RDM4MUVDM0U1NzgwMEFEMEEyQSAvKiBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWFuYWdlckNv
Y29hLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJN0E3OTFFRkMxQzdEMDhDNTAwQzRDNTJCIC8qIFdl
YlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk3QUFE
MTc1RjFFQTZBRjk5MDAzQjA4OTQgLyogV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlQ29j
b2EubW0gaW4gU291cmNlcyAqLywKIAkJCQk3QTc5MUVGQTFDN0NGQ0YxMDBDNEM1MkIgLyogV2Vi
UmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlTWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2Vz
ICovLApkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4
IGYxNjZmODQ3YWNlYTdjNWJmZjkzMTY3NzVjZTFhYTA4YjZhMjAzYTMuLjY4YWJmZDU1NGMwNzRk
ODRlNWE4NmQ0MjJmODAyMDMwNzQ2MDI4NzIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZwor
KysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMiBAQAorMjAxNy0wNi0zMCAgQ2hyaXMg
RHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIE1vdmUgc3RvcmUgbG9naWMgZnJv
bSBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWFuYWdlciB0byBXZWJSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzU3RvcmUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTE3NDAzOAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIEZpeCB0eXBvIGluIEFQSSBuYW1lLgorCisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9J
bmplY3RlZEJ1bmRsZS9CaW5kaW5ncy9UZXN0UnVubmVyLmlkbDoKKyAgICAgICAgKiBXZWJLaXRU
ZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIuY3BwOgorICAgICAgICAoV1RSOjpU
ZXN0UnVubmVyOjpzZXRTdGF0aXN0aWNzTWluaW11bVRpbWVCZXR3ZWVuRGF0YVJlY29yZHNSZW1v
dmFsKToKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RSdW5u
ZXIuaDoKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmNwcDoKKyAg
ICAgICAgKFdUUjo6VGVzdENvbnRyb2xsZXI6OnNldFN0YXRpc3RpY3NNaW5pbXVtVGltZUJldHdl
ZW5EYXRhUmVjb3Jkc1JlbW92YWwpOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvVGVzdENv
bnRyb2xsZXIuaDoKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL1Rlc3RJbnZvY2F0aW9uLmNw
cDoKKyAgICAgICAgKFdUUjo6VGVzdEludm9jYXRpb246OmRpZFJlY2VpdmVTeW5jaHJvbm91c01l
c3NhZ2VGcm9tSW5qZWN0ZWRCdW5kbGUpOgorCiAyMDE3LTA2LTMwICBKb25hdGhhbiBCZWRhcmQg
IDxqYmVkYXJkQGFwcGxlLmNvbT4KIAogICAgICAgICBGb2xsb3ctdXAgZml4IGZvciByMjE4OTk2
CmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0JpbmRp
bmdzL1Rlc3RSdW5uZXIuaWRsIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRs
ZS9CaW5kaW5ncy9UZXN0UnVubmVyLmlkbAppbmRleCA0ZjA4N2YyYTVjOTkyNTI1NjYyOGFkZjAw
ZjNjMGQ3ZTM2ODg5YTdmLi41Nzc2YjljODBkNGM1YzNmM2NkN2RiMTA1N2FlYzNlMjkzNDdhMjQ3
IDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0JpbmRp
bmdzL1Rlc3RSdW5uZXIuaWRsCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRC
dW5kbGUvQmluZGluZ3MvVGVzdFJ1bm5lci5pZGwKQEAgLTI3Miw3ICsyNzIsNyBAQCBpbnRlcmZh
Y2UgVGVzdFJ1bm5lciB7CiAgICAgdm9pZCBzZXRTdGF0aXN0aWNzTm90aWZ5UGFnZXNXaGVuRGF0
YVJlY29yZHNXZXJlU2Nhbm5lZChib29sZWFuIHZhbHVlKTsKICAgICB2b2lkIHNldFN0YXRpc3Rp
Y3NTaG91bGRDbGFzc2lmeVJlc291cmNlc0JlZm9yZURhdGFSZWNvcmRzUmVtb3ZhbChib29sZWFu
IHZhbHVlKTsKICAgICB2b2lkIHNldFN0YXRpc3RpY3NOb3RpZnlQYWdlc1doZW5UZWxlbWV0cnlX
YXNDYXB0dXJlZChib29sZWFuIHZhbHVlKTsKLSAgICB2b2lkIHNldFN0YXRpc3RpY3NNaW5pbXVt
VGltZUJldHdlZWVuRGF0YVJlY29yZHNSZW1vdmFsKGRvdWJsZSBzZWNvbmRzKTsKKyAgICB2b2lk
IHNldFN0YXRpc3RpY3NNaW5pbXVtVGltZUJldHdlZW5EYXRhUmVjb3Jkc1JlbW92YWwoZG91Ymxl
IHNlY29uZHMpOwogICAgIHZvaWQgc2V0U3RhdGlzdGljc0dyYW5kZmF0aGVyaW5nVGltZShkb3Vi
bGUgc2Vjb25kcyk7CiAgICAgdm9pZCBzdGF0aXN0aWNzQ2xlYXJJbk1lbW9yeUFuZFBlcnNpc3Rl
bnRTdG9yZSgpOwogICAgIHZvaWQgc3RhdGlzdGljc0NsZWFySW5NZW1vcnlBbmRQZXJzaXN0ZW50
U3RvcmVNb2RpZmllZFNpbmNlSG91cnModW5zaWduZWQgbG9uZyBob3Vycyk7CmRpZmYgLS1naXQg
YS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIuY3BwIGIv
VG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVubmVyLmNwcAppbmRl
eCA4ODMxZjhkOTcyZDEzOWFmMjEzZjJkYTdkZTZlY2Q4Zjg4YzgwMGNmLi4xYWEwZTVkNTlhNzRm
OTYxMTAyOTlhN2MyMTY3OTNkZTZhODlkNDlmIDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0
UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIuY3BwCisrKyBiL1Rvb2xzL1dlYktpdFRl
c3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5jcHAKQEAgLTE0ODAsOSArMTQ4MCw5
IEBAIHZvaWQgVGVzdFJ1bm5lcjo6c2V0U3RhdGlzdGljc05vdGlmeVBhZ2VzV2hlblRlbGVtZXRy
eVdhc0NhcHR1cmVkKGJvb2wgdmFsdWUpCiAgICAgV0tSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWFu
YWdlclNldE5vdGlmeVBhZ2VzV2hlblRlbGVtZXRyeVdhc0NhcHR1cmVkKHZhbHVlKTsKIH0KIAot
dm9pZCBUZXN0UnVubmVyOjpzZXRTdGF0aXN0aWNzTWluaW11bVRpbWVCZXR3ZWVlbkRhdGFSZWNv
cmRzUmVtb3ZhbChkb3VibGUgc2Vjb25kcykKK3ZvaWQgVGVzdFJ1bm5lcjo6c2V0U3RhdGlzdGlj
c01pbmltdW1UaW1lQmV0d2VlbkRhdGFSZWNvcmRzUmVtb3ZhbChkb3VibGUgc2Vjb25kcykKIHsK
LSAgICBXS1JldGFpblB0cjxXS1N0cmluZ1JlZj4gbWVzc2FnZU5hbWUoQWRvcHRXSywgV0tTdHJp
bmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoIlNldFN0YXRpc3RpY3NNaW5pbXVtVGltZUJldHdlZWVu
RGF0YVJlY29yZHNSZW1vdmFsIikpOworICAgIFdLUmV0YWluUHRyPFdLU3RyaW5nUmVmPiBtZXNz
YWdlTmFtZShBZG9wdFdLLCBXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygiU2V0U3RhdGlz
dGljc01pbmltdW1UaW1lQmV0d2VlbkRhdGFSZWNvcmRzUmVtb3ZhbCIpKTsKICAgICBXS1JldGFp
blB0cjxXS0RvdWJsZVJlZj4gbWVzc2FnZUJvZHkoQWRvcHRXSywgV0tEb3VibGVDcmVhdGUoc2Vj
b25kcykpOwogICAgIFdLQnVuZGxlUG9zdFN5bmNocm9ub3VzTWVzc2FnZShJbmplY3RlZEJ1bmRs
ZTo6c2luZ2xldG9uKCkuYnVuZGxlKCksIG1lc3NhZ2VOYW1lLmdldCgpLCBtZXNzYWdlQm9keS5n
ZXQoKSwgbnVsbHB0cik7CiB9CmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0lu
amVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIuaCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0
ZWRCdW5kbGUvVGVzdFJ1bm5lci5oCmluZGV4IGFjYjE5NmQ4NDNkZThkOTQ0NjBlN2U1MTQ0Yjk3
N2M5NjBlYjVlMjAuLjRhOTljOGMyNmVlOGYwZjk0YzBjYWI4ZDkyMjViODliM2ZlMDQ5ZDcgMTAw
NjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5l
ci5oCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5l
ci5oCkBAIC0zNzEsNyArMzcxLDcgQEAgcHVibGljOgogICAgIHZvaWQgc2V0U3RhdGlzdGljc05v
dGlmeVBhZ2VzV2hlbkRhdGFSZWNvcmRzV2VyZVNjYW5uZWQoYm9vbCk7CiAgICAgdm9pZCBzZXRT
dGF0aXN0aWNzU2hvdWxkQ2xhc3NpZnlSZXNvdXJjZXNCZWZvcmVEYXRhUmVjb3Jkc1JlbW92YWwo
Ym9vbCk7CiAgICAgdm9pZCBzZXRTdGF0aXN0aWNzTm90aWZ5UGFnZXNXaGVuVGVsZW1ldHJ5V2Fz
Q2FwdHVyZWQoYm9vbCB2YWx1ZSk7Ci0gICAgdm9pZCBzZXRTdGF0aXN0aWNzTWluaW11bVRpbWVC
ZXR3ZWVlbkRhdGFSZWNvcmRzUmVtb3ZhbChkb3VibGUpOworICAgIHZvaWQgc2V0U3RhdGlzdGlj
c01pbmltdW1UaW1lQmV0d2VlbkRhdGFSZWNvcmRzUmVtb3ZhbChkb3VibGUpOwogICAgIHZvaWQg
c2V0U3RhdGlzdGljc0dyYW5kZmF0aGVyaW5nVGltZShkb3VibGUgc2Vjb25kcyk7CiAgICAgdm9p
ZCBzdGF0aXN0aWNzQ2xlYXJJbk1lbW9yeUFuZFBlcnNpc3RlbnRTdG9yZSgpOwogICAgIHZvaWQg
c3RhdGlzdGljc0NsZWFySW5NZW1vcnlBbmRQZXJzaXN0ZW50U3RvcmVNb2RpZmllZFNpbmNlSG91
cnModW5zaWduZWQgaG91cnMpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9U
ZXN0Q29udHJvbGxlci5jcHAgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVy
LmNwcAppbmRleCA5NzgzOWRmNjM3MDk3NWY2YjFkNjdkYzNjZDNhMjNhZWY4MTkxZTM1Li44YWE2
YTY4MGUyNTFlZTViYTM5OGU1MmQxNjQzNmVjYjI4MzJlZjUyIDEwMDY0NAotLS0gYS9Ub29scy9X
ZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmNwcAorKysgYi9Ub29scy9XZWJLaXRUZXN0
UnVubmVyL1Rlc3RDb250cm9sbGVyLmNwcApAQCAtMjI5OSw5ICsyMjk5LDkgQEAgdm9pZCBUZXN0
Q29udHJvbGxlcjo6c2V0U3RhdGlzdGljc05vdGlmeVBhZ2VzV2hlblRlbGVtZXRyeVdhc0NhcHR1
cmVkKGJvb2wgdmFsdWUKICAgICBXS1Jlc291cmNlTG9hZFN0YXRpc3RpY3NNYW5hZ2VyU2V0Tm90
aWZ5UGFnZXNXaGVuVGVsZW1ldHJ5V2FzQ2FwdHVyZWQodmFsdWUpOwogfQogICAgIAotdm9pZCBU
ZXN0Q29udHJvbGxlcjo6c2V0U3RhdGlzdGljc01pbmltdW1UaW1lQmV0d2VlZW5EYXRhUmVjb3Jk
c1JlbW92YWwoZG91YmxlIHNlY29uZHMpCit2b2lkIFRlc3RDb250cm9sbGVyOjpzZXRTdGF0aXN0
aWNzTWluaW11bVRpbWVCZXR3ZWVuRGF0YVJlY29yZHNSZW1vdmFsKGRvdWJsZSBzZWNvbmRzKQog
ewotICAgIFdLUmVzb3VyY2VMb2FkU3RhdGlzdGljc01hbmFnZXJTZXRNaW5pbXVtVGltZUJldHdl
ZWVuRGF0YVJlY29yZHNSZW1vdmFsKHNlY29uZHMpOworICAgIFdLUmVzb3VyY2VMb2FkU3RhdGlz
dGljc01hbmFnZXJTZXRNaW5pbXVtVGltZUJldHdlZW5EYXRhUmVjb3Jkc1JlbW92YWwoc2Vjb25k
cyk7CiB9CiAKIHZvaWQgVGVzdENvbnRyb2xsZXI6OnNldFN0YXRpc3RpY3NHcmFuZGZhdGhlcmlu
Z1RpbWUoZG91YmxlIHNlY29uZHMpCmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVy
L1Rlc3RDb250cm9sbGVyLmggYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVy
LmgKaW5kZXggN2VkYzcyNDhhY2ZhNDRkN2ZkYWRjMDc3MGY3NDNmNjIyYTE1ZDc4OC4uNjFiMTg2
YjFjNzZkMDRiY2Q4Yzk0ZDZhNWQ5MWQ2OTJkMmU3YWQ4ZCAxMDA2NDQKLS0tIGEvVG9vbHMvV2Vi
S2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5oCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5u
ZXIvVGVzdENvbnRyb2xsZXIuaApAQCAtMTY4LDcgKzE2OCw3IEBAIHB1YmxpYzoKICAgICB2b2lk
IHNldFN0YXRpc3RpY3NOb3RpZnlQYWdlc1doZW5EYXRhUmVjb3Jkc1dlcmVTY2FubmVkKGJvb2wp
OwogICAgIHZvaWQgc2V0U3RhdGlzdGljc1Nob3VsZENsYXNzaWZ5UmVzb3VyY2VzQmVmb3JlRGF0
YVJlY29yZHNSZW1vdmFsKGJvb2wpOwogICAgIHZvaWQgc2V0U3RhdGlzdGljc05vdGlmeVBhZ2Vz
V2hlblRlbGVtZXRyeVdhc0NhcHR1cmVkKGJvb2wgdmFsdWUpOwotICAgIHZvaWQgc2V0U3RhdGlz
dGljc01pbmltdW1UaW1lQmV0d2VlZW5EYXRhUmVjb3Jkc1JlbW92YWwoZG91YmxlKTsKKyAgICB2
b2lkIHNldFN0YXRpc3RpY3NNaW5pbXVtVGltZUJldHdlZW5EYXRhUmVjb3Jkc1JlbW92YWwoZG91
YmxlKTsKICAgICB2b2lkIHNldFN0YXRpc3RpY3NHcmFuZGZhdGhlcmluZ1RpbWUoZG91YmxlIHNl
Y29uZHMpOwogICAgIHZvaWQgc3RhdGlzdGljc0NsZWFySW5NZW1vcnlBbmRQZXJzaXN0ZW50U3Rv
cmUoKTsKICAgICB2b2lkIHN0YXRpc3RpY3NDbGVhckluTWVtb3J5QW5kUGVyc2lzdGVudFN0b3Jl
TW9kaWZpZWRTaW5jZUhvdXJzKHVuc2lnbmVkKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRl
c3RSdW5uZXIvVGVzdEludm9jYXRpb24uY3BwIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0
SW52b2NhdGlvbi5jcHAKaW5kZXggMzBlZmQ5NWRjMTg4YjA4MjFjYWNjMDY4ZDQyMjdmNjMzMzA3
ZjgxMy4uMTMzNTYyNWM0MDcyYTA3MjE2ZDBkOWI5ZDZlNjM5Y2U3MTcwY2RkZCAxMDA2NDQKLS0t
IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0SW52b2NhdGlvbi5jcHAKKysrIGIvVG9vbHMv
V2ViS2l0VGVzdFJ1bm5lci9UZXN0SW52b2NhdGlvbi5jcHAKQEAgLTEwODcsMTAgKzEwODcsMTAg
QEAgV0tSZXRhaW5QdHI8V0tUeXBlUmVmPiBUZXN0SW52b2NhdGlvbjo6ZGlkUmVjZWl2ZVN5bmNo
cm9ub3VzTWVzc2FnZUZyb21JbmplY3RlZEIKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAg
fQogCi0gICAgaWYgKFdLU3RyaW5nSXNFcXVhbFRvVVRGOENTdHJpbmcobWVzc2FnZU5hbWUsICJT
ZXRTdGF0aXN0aWNzTWluaW11bVRpbWVCZXR3ZWVlbkRhdGFSZWNvcmRzUmVtb3ZhbCIpKSB7Cisg
ICAgaWYgKFdLU3RyaW5nSXNFcXVhbFRvVVRGOENTdHJpbmcobWVzc2FnZU5hbWUsICJTZXRTdGF0
aXN0aWNzTWluaW11bVRpbWVCZXR3ZWVuRGF0YVJlY29yZHNSZW1vdmFsIikpIHsKICAgICAgICAg
QVNTRVJUKFdLR2V0VHlwZUlEKG1lc3NhZ2VCb2R5KSA9PSBXS0RvdWJsZUdldFR5cGVJRCgpKTsK
ICAgICAgICAgV0tEb3VibGVSZWYgc2Vjb25kcyA9IHN0YXRpY19jYXN0PFdLRG91YmxlUmVmPiht
ZXNzYWdlQm9keSk7Ci0gICAgICAgIFRlc3RDb250cm9sbGVyOjpzaW5nbGV0b24oKS5zZXRTdGF0
aXN0aWNzTWluaW11bVRpbWVCZXR3ZWVlbkRhdGFSZWNvcmRzUmVtb3ZhbChXS0RvdWJsZUdldFZh
bHVlKHNlY29uZHMpKTsKKyAgICAgICAgVGVzdENvbnRyb2xsZXI6OnNpbmdsZXRvbigpLnNldFN0
YXRpc3RpY3NNaW5pbXVtVGltZUJldHdlZW5EYXRhUmVjb3Jkc1JlbW92YWwoV0tEb3VibGVHZXRW
YWx1ZShzZWNvbmRzKSk7CiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KICAgICAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>314295</attachid>
            <date>2017-06-30 14:46:07 -0700</date>
            <delta_ts>2017-06-30 15:41:15 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-174038-20170630144606.patch</filename>
            <type>text/plain</type>
            <size>57629</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjE5MDEwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggNzE1NTZlYjI2ZmRlNTgx
NjdkNzc5NmMxNDA5MWJhNjgzN2RiNDg1Yy4uNjUyMWZmZjAxMmVlZDU1MWM0MjRkNGM1ZGVkNzQ5
NzY2NTZmZjkxNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDgwIEBACiAyMDE3LTA2LTMwICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKKyAgICAgICAgTW92ZSBzdG9yZSBsb2dpYyBm
cm9tIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NNYW5hZ2VyIHRvIFdlYlJlc291cmNlTG9hZFN0
YXRpc3RpY3NTdG9yZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTc0MDM4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgTW92ZSBzdG9yZSBsb2dpYyBmcm9tIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NNYW5h
Z2VyIHRvIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS4KKyAgICAgICAgV2ViUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc01hbmFnZXIgaXMgbm93IGVzc2VudGlhbGx5IGEgcHJveHkgdG8gdGhl
CisgICAgICAgIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZSB0byBzdXBwb3J0IHRoZSBj
dXJyZW50IEMgQVBJLgorCisgICAgICAgIEluIGEgZm9sbG93LXVwLCBJIHBsYW4gdG8gdG8gcmVw
bGFjZSB0aGUgQyBBUEkgd2l0aCBhIENvY29hIFNQSSB3aGljaCB3b3JrcyBvbiBhCisgICAgICAg
IFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZSBkaXJlY3RseSBpbnN0ZWFkIG9mIHJlcXVp
cmluZyBhCisgICAgICAgIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NNYW5hZ2VyIHNpbmdsZXRv
bi4KKworICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9XS1Jlc291cmNlTG9hZFN0YXRpc3RpY3NN
YW5hZ2VyLmNwcDoKKyAgICAgICAgKFdLUmVzb3VyY2VMb2FkU3RhdGlzdGljc01hbmFnZXJTZXRN
aW5pbXVtVGltZUJldHdlZW5EYXRhUmVjb3Jkc1JlbW92YWwpOgorICAgICAgICAoV0tSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzTWFuYWdlclJlc2V0VG9Db25zaXN0ZW50U3RhdGUpOgorICAgICAgICAq
IFVJUHJvY2Vzcy9BUEkvQy9XS1Jlc291cmNlTG9hZFN0YXRpc3RpY3NNYW5hZ2VyLmg6CisgICAg
ICAgICogVUlQcm9jZXNzL0NvY29hL1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NNYW5hZ2VyQ29j
b2EubW06IFJlbW92ZWQuCisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL1dlYlJlc291cmNlTG9h
ZFN0YXRpc3RpY3NTdG9yZUNvY29hLm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzU3RvcmU6OnJlZ2lzdGVyVXNlckRlZmF1bHRzSWZOZWVkZWQpOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWFuYWdlci5jcHA6CisgICAg
ICAgIChXZWJLaXQ6OldlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NNYW5hZ2VyOjpXZWJSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzTWFuYWdlcik6CisgICAgICAgIChXZWJLaXQ6OldlYlJlc291cmNlTG9h
ZFN0YXRpc3RpY3NNYW5hZ2VyOjp+V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc01hbmFnZXIpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWFuYWdlcjo6c2V0U3Rh
dGlzdGljc1N0b3JlKToKKyAgICAgICAgKFdlYktpdDo6V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGlj
c01hbmFnZXI6OmNsZWFySW5NZW1vcnlTdG9yZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlJlc291
cmNlTG9hZFN0YXRpc3RpY3NNYW5hZ2VyOjpjbGVhckluTWVtb3J5QW5kUGVyc2lzdGVudFN0b3Jl
KToKKyAgICAgICAgKFdlYktpdDo6V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc01hbmFnZXI6Omxv
Z1VzZXJJbnRlcmFjdGlvbik6CisgICAgICAgIChXZWJLaXQ6OldlYlJlc291cmNlTG9hZFN0YXRp
c3RpY3NNYW5hZ2VyOjpjbGVhclVzZXJJbnRlcmFjdGlvbik6CisgICAgICAgIChXZWJLaXQ6Oldl
YlJlc291cmNlTG9hZFN0YXRpc3RpY3NNYW5hZ2VyOjpoYXNIYWRVc2VySW50ZXJhY3Rpb24pOgor
ICAgICAgICAoV2ViS2l0OjpXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWFuYWdlcjo6c2V0UHJl
dmFsZW50UmVzb3VyY2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJSZXNvdXJjZUxvYWRTdGF0aXN0
aWNzTWFuYWdlcjo6aXNQcmV2YWxlbnRSZXNvdXJjZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlJl
c291cmNlTG9hZFN0YXRpc3RpY3NNYW5hZ2VyOjpjbGVhclByZXZhbGVudFJlc291cmNlKToKKyAg
ICAgICAgKFdlYktpdDo6V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc01hbmFnZXI6OnNldEdyYW5k
ZmF0aGVyZWQpOgorICAgICAgICAoV2ViS2l0OjpXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWFu
YWdlcjo6aXNHcmFuZGZhdGhlcmVkKToKKyAgICAgICAgKFdlYktpdDo6V2ViUmVzb3VyY2VMb2Fk
U3RhdGlzdGljc01hbmFnZXI6OnNldFN1YmZyYW1lVW5kZXJUb3BGcmFtZU9yaWdpbik6CisgICAg
ICAgIChXZWJLaXQ6OldlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NNYW5hZ2VyOjpzZXRTdWJyZXNv
dXJjZVVuZGVyVG9wRnJhbWVPcmlnaW4pOgorICAgICAgICAoV2ViS2l0OjpXZWJSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzTWFuYWdlcjo6c2V0U3VicmVzb3VyY2VVbmlxdWVSZWRpcmVjdFRvKToKKyAg
ICAgICAgKFdlYktpdDo6V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc01hbmFnZXI6OnNldFRpbWVU
b0xpdmVVc2VySW50ZXJhY3Rpb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJSZXNvdXJjZUxvYWRT
dGF0aXN0aWNzTWFuYWdlcjo6c2V0VGltZVRvTGl2ZUNvb2tpZVBhcnRpdGlvbkZyZWUpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWFuYWdlcjo6c2V0TWluaW11
bVRpbWVCZXR3ZWVuRGF0YVJlY29yZHNSZW1vdmFsKToKKyAgICAgICAgKFdlYktpdDo6V2ViUmVz
b3VyY2VMb2FkU3RhdGlzdGljc01hbmFnZXI6OnNldEdyYW5kZmF0aGVyaW5nVGltZSk6CisgICAg
ICAgIChXZWJLaXQ6OldlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NNYW5hZ2VyOjpmaXJlRGF0YU1v
ZGlmaWNhdGlvbkhhbmRsZXIpOgorICAgICAgICAoV2ViS2l0OjpXZWJSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzTWFuYWdlcjo6ZmlyZVNob3VsZFBhcnRpdGlvbkNvb2tpZXNIYW5kbGVyKToKKyAgICAg
ICAgKFdlYktpdDo6V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc01hbmFnZXI6OmZpcmVUZWxlbWV0
cnlIYW5kbGVyKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGlj
c01hbmFnZXIuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGlj
c1N0b3JlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6cHJpbWFyeURvbWFpbik6CisgICAgICAgIChX
ZWJLaXQ6OldlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6cmVnaXN0ZXJTaGFyZWRSZXNv
dXJjZUxvYWRPYnNlcnZlcik6CisgICAgICAgIChXZWJLaXQ6OldlYlJlc291cmNlTG9hZFN0YXRp
c3RpY3NTdG9yZTo6bG9nVXNlckludGVyYWN0aW9uKToKKyAgICAgICAgKFdlYktpdDo6V2ViUmVz
b3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpjbGVhclVzZXJJbnRlcmFjdGlvbik6CisgICAgICAg
IChXZWJLaXQ6OldlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6aGFzSGFkVXNlckludGVy
YWN0aW9uKToKKyAgICAgICAgKFdlYktpdDo6V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3Jl
OjpzZXRQcmV2YWxlbnRSZXNvdXJjZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlJlc291cmNlTG9h
ZFN0YXRpc3RpY3NTdG9yZTo6aXNQcmV2YWxlbnRSZXNvdXJjZSk6CisgICAgICAgIChXZWJLaXQ6
OldlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6Y2xlYXJQcmV2YWxlbnRSZXNvdXJjZSk6
CisgICAgICAgIChXZWJLaXQ6OldlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6c2V0R3Jh
bmRmYXRoZXJlZCk6CisgICAgICAgIChXZWJLaXQ6OldlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NT
dG9yZTo6aXNHcmFuZGZhdGhlcmVkKToKKyAgICAgICAgKFdlYktpdDo6V2ViUmVzb3VyY2VMb2Fk
U3RhdGlzdGljc1N0b3JlOjpzZXRTdWJmcmFtZVVuZGVyVG9wRnJhbWVPcmlnaW4pOgorICAgICAg
ICAoV2ViS2l0OjpXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OnNldFN1YnJlc291cmNl
VW5kZXJUb3BGcmFtZU9yaWdpbik6CisgICAgICAgIChXZWJLaXQ6OldlYlJlc291cmNlTG9hZFN0
YXRpc3RpY3NTdG9yZTo6c2V0U3VicmVzb3VyY2VVbmlxdWVSZWRpcmVjdFRvKToKKyAgICAgICAg
KFdlYktpdDo6V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpmaXJlRGF0YU1vZGlmaWNh
dGlvbkhhbmRsZXIpOgorICAgICAgICAoV2ViS2l0OjpXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNz
U3RvcmU6OmZpcmVTaG91bGRQYXJ0aXRpb25Db29raWVzSGFuZGxlcik6CisgICAgICAgIChXZWJL
aXQ6OldlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6ZmlyZVRlbGVtZXRyeUhhbmRsZXIp
OgorICAgICAgICAoV2ViS2l0OjpXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OmNsZWFy
SW5NZW1vcnkpOgorICAgICAgICAoV2ViS2l0OjpXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3Rv
cmU6OmNsZWFySW5NZW1vcnlBbmRQZXJzaXN0ZW50KToKKyAgICAgICAgKFdlYktpdDo6V2ViUmVz
b3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpzZXRUaW1lVG9MaXZlVXNlckludGVyYWN0aW9uKToK
KyAgICAgICAgKFdlYktpdDo6V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpzZXRUaW1l
VG9MaXZlQ29va2llUGFydGl0aW9uRnJlZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlJlc291cmNl
TG9hZFN0YXRpc3RpY3NTdG9yZTo6c2V0TWluaW11bVRpbWVCZXR3ZWVuRGF0YVJlY29yZHNSZW1v
dmFsKToKKyAgICAgICAgKFdlYktpdDo6V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpz
ZXRHcmFuZGZhdGhlcmluZ1RpbWUpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzU3RvcmUuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vi
c2l0ZURhdGFTdG9yZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmU6OnJl
bW92ZURhdGEpOgorICAgICAgICAqIFdlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoK
KworMjAxNy0wNi0zMCAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCiAgICAgICAg
IE1vdmUgUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlIHRvIFdlYktpdDIvVUlQcm9jZXNzCiAg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzQwMzMKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLUmVzb3VyY2VMb2Fk
U3RhdGlzdGljc01hbmFnZXIuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dL
UmVzb3VyY2VMb2FkU3RhdGlzdGljc01hbmFnZXIuY3BwCmluZGV4IDllZTA4ZGFiOTNiZmFkYTNl
YjY1OTAzMTllMmYzODk2YWMzYjY0NmQuLjY5NmFiYzhlZjVhYWMzZmQxYThkMzVmMTI4NTZjZDM0
YjI5Mjc0NGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS1Jl
c291cmNlTG9hZFN0YXRpc3RpY3NNYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL0MvV0tSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWFuYWdlci5jcHAKQEAgLTk2LDkg
Kzk2LDkgQEAgdm9pZCBXS1Jlc291cmNlTG9hZFN0YXRpc3RpY3NNYW5hZ2VyU2V0VGltZVRvTGl2
ZUNvb2tpZVBhcnRpdGlvbkZyZWUoZG91YmxlIHNlY28KICAgICBXZWJSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzTWFuYWdlcjo6c2hhcmVkKCkuc2V0VGltZVRvTGl2ZUNvb2tpZVBhcnRpdGlvbkZyZWUo
U2Vjb25kcyB7IHNlY29uZHMgfSk7CiB9CiAKLXZvaWQgV0tSZXNvdXJjZUxvYWRTdGF0aXN0aWNz
TWFuYWdlclNldE1pbmltdW1UaW1lQmV0d2VlZW5EYXRhUmVjb3Jkc1JlbW92YWwoZG91YmxlIHNl
Y29uZHMpCit2b2lkIFdLUmVzb3VyY2VMb2FkU3RhdGlzdGljc01hbmFnZXJTZXRNaW5pbXVtVGlt
ZUJldHdlZW5EYXRhUmVjb3Jkc1JlbW92YWwoZG91YmxlIHNlY29uZHMpCiB7Ci0gICAgV2ViUmVz
b3VyY2VMb2FkU3RhdGlzdGljc01hbmFnZXI6OnNoYXJlZCgpLnNldE1pbmltdW1UaW1lQmV0d2Vl
ZW5EYXRhUmVjb3Jkc1JlbW92YWwoU2Vjb25kcyB7IHNlY29uZHMgfSk7CisgICAgV2ViUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc01hbmFnZXI6OnNoYXJlZCgpLnNldE1pbmltdW1UaW1lQmV0d2VlbkRh
dGFSZWNvcmRzUmVtb3ZhbChTZWNvbmRzIHsgc2Vjb25kcyB9KTsKIH0KIAogdm9pZCBXS1Jlc291
cmNlTG9hZFN0YXRpc3RpY3NNYW5hZ2VyU2V0R3JhbmRmYXRoZXJpbmdUaW1lKGRvdWJsZSBzZWNv
bmRzKQpAQCAtMTYzLDcgKzE2Myw3IEBAIHZvaWQgV0tSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWFu
YWdlclJlc2V0VG9Db25zaXN0ZW50U3RhdGUoKQogewogICAgIFdlYlJlc291cmNlTG9hZFN0YXRp
c3RpY3NNYW5hZ2VyOjpzaGFyZWQoKS5zZXRUaW1lVG9MaXZlVXNlckludGVyYWN0aW9uKDI0X2gg
KiAzMC4pOwogICAgIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NNYW5hZ2VyOjpzaGFyZWQoKS5z
ZXRUaW1lVG9MaXZlQ29va2llUGFydGl0aW9uRnJlZSgyNF9oKTsKLSAgICBXZWJSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzTWFuYWdlcjo6c2hhcmVkKCkuc2V0TWluaW11bVRpbWVCZXR3ZWVlbkRhdGFS
ZWNvcmRzUmVtb3ZhbCgxX2gpOworICAgIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NNYW5hZ2Vy
OjpzaGFyZWQoKS5zZXRNaW5pbXVtVGltZUJldHdlZW5EYXRhUmVjb3Jkc1JlbW92YWwoMV9oKTsK
ICAgICBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWFuYWdlcjo6c2hhcmVkKCkuc2V0R3JhbmRm
YXRoZXJpbmdUaW1lKDFfaCk7CiAgICAgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpz
ZXROb3RpZnlQYWdlc1doZW5EYXRhUmVjb3Jkc1dlcmVTY2FubmVkKGZhbHNlKTsKICAgICBXZWJS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzVGVsZW1ldHJ5OjpzZXROb3RpZnlQYWdlc1doZW5UZWxlbWV0
cnlXYXNDYXB0dXJlZChmYWxzZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL0MvV0tSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWFuYWdlci5oIGIvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9DL1dLUmVzb3VyY2VMb2FkU3RhdGlzdGljc01hbmFnZXIuaAppbmRl
eCBjMGZhMTNlZWJhM2FjZmUxYmE4ZmRkMDZjNzk5OGYzY2I5ZjkwOTk5Li44MWZlMjQ0ZjViNWQy
ZGQ0NTU0ZTAzOGM4OWEwNWMyMzlhYzJjODU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL0MvV0tSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWFuYWdlci5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS1Jlc291cmNlTG9hZFN0YXRpc3RpY3NNYW5h
Z2VyLmgKQEAgLTQyLDcgKzQyLDcgQEAgZXh0ZXJuICJDIiB7CiAgICAgV0tfRVhQT1JUIHZvaWQg
V0tSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWFuYWdlclNldFN1YnJlc291cmNlVW5pcXVlUmVkaXJl
Y3RUbyhXS1N0cmluZ1JlZiBob3N0TmFtZSwgV0tTdHJpbmdSZWYgaG9zdE5hbWVSZWRpcmVjdGVk
VG8pOwogICAgIFdLX0VYUE9SVCB2b2lkIFdLUmVzb3VyY2VMb2FkU3RhdGlzdGljc01hbmFnZXJT
ZXRUaW1lVG9MaXZlVXNlckludGVyYWN0aW9uKGRvdWJsZSBzZWNvbmRzKTsKICAgICBXS19FWFBP
UlQgdm9pZCBXS1Jlc291cmNlTG9hZFN0YXRpc3RpY3NNYW5hZ2VyU2V0VGltZVRvTGl2ZUNvb2tp
ZVBhcnRpdGlvbkZyZWUoZG91YmxlIHNlY29uZHMpOwotICAgIFdLX0VYUE9SVCB2b2lkIFdLUmVz
b3VyY2VMb2FkU3RhdGlzdGljc01hbmFnZXJTZXRNaW5pbXVtVGltZUJldHdlZWVuRGF0YVJlY29y
ZHNSZW1vdmFsKGRvdWJsZSBzZWNvbmRzKTsKKyAgICBXS19FWFBPUlQgdm9pZCBXS1Jlc291cmNl
TG9hZFN0YXRpc3RpY3NNYW5hZ2VyU2V0TWluaW11bVRpbWVCZXR3ZWVuRGF0YVJlY29yZHNSZW1v
dmFsKGRvdWJsZSBzZWNvbmRzKTsKICAgICBXS19FWFBPUlQgdm9pZCBXS1Jlc291cmNlTG9hZFN0
YXRpc3RpY3NNYW5hZ2VyU2V0R3JhbmRmYXRoZXJpbmdUaW1lKGRvdWJsZSBzZWNvbmRzKTsKICAg
ICBXS19FWFBPUlQgdm9pZCBXS1Jlc291cmNlTG9hZFN0YXRpc3RpY3NNYW5hZ2VyRmlyZURhdGFN
b2RpZmljYXRpb25IYW5kbGVyKCk7CiAgICAgV0tfRVhQT1JUIHZvaWQgV0tSZXNvdXJjZUxvYWRT
dGF0aXN0aWNzTWFuYWdlckZpcmVTaG91bGRQYXJ0aXRpb25Db29raWVzSGFuZGxlcigpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0NvY29hL1dlYlJlc291cmNlTG9hZFN0
YXRpc3RpY3NNYW5hZ2VyQ29jb2EubW0gYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29jb2Ev
V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc01hbmFnZXJDb2NvYS5tbQpkZWxldGVkIGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggM2UwMDlkZjgzZjY4NzI1YmYzNzZlZGMyZGNjNGM5OWMyNDMzYjQ2Mi4u
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQ29jb2EvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc01hbmFnZXJDb2Nv
YS5tbQorKysgL2Rldi9udWxsCkBAIC0xLDU3ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMp
IDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAot
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW1wb3J0
ICJjb25maWcuaCIKLSNpbXBvcnQgIldlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NNYW5hZ2VyLmgi
Ci0KLSNpbXBvcnQgIldlYlByZWZlcmVuY2VzS2V5cy5oIgotCi11c2luZyBuYW1lc3BhY2UgV2Vi
Q29yZTsKLQotbmFtZXNwYWNlIFdlYktpdCB7Ci0gICAgCi12b2lkIFdlYlJlc291cmNlTG9hZFN0
YXRpc3RpY3NNYW5hZ2VyOjpyZWdpc3RlclVzZXJEZWZhdWx0c0lmTmVlZGVkKCkKLXsKLSAgICBz
dGF0aWMgZGlzcGF0Y2hfb25jZV90IGluaXRPbmNlOwotICAgIAotICAgIGRpc3BhdGNoX29uY2Uo
JmluaXRPbmNlLCBeIHsKLSAgICAgICAgY29uc3Qgc2l6ZV90IGhvdXJJblNlY29uZHMgPSAzNjAw
OwotICAgICAgICBjb25zdCBzaXplX3QgZGF5SW5TZWNvbmRzID0gMjQgKiBob3VySW5TZWNvbmRz
OwotICAgICAgICAKLSAgICAgICAgZG91YmxlIHRpbWVUb0xpdmVVc2VySW50ZXJhY3Rpb24gPSBb
W05TVXNlckRlZmF1bHRzIHN0YW5kYXJkVXNlckRlZmF1bHRzXSBkb3VibGVGb3JLZXk6IFdlYlBy
ZWZlcmVuY2VzS2V5OjpyZXNvdXJjZUxvYWRTdGF0aXN0aWNzVGltZVRvTGl2ZVVzZXJJbnRlcmFj
dGlvbktleSgpXTsKLSAgICAgICAgaWYgKHRpbWVUb0xpdmVVc2VySW50ZXJhY3Rpb24gPiAwICYm
IHRpbWVUb0xpdmVVc2VySW50ZXJhY3Rpb24gPD0gMzAgKiBkYXlJblNlY29uZHMpCi0gICAgICAg
ICAgICBzZXRUaW1lVG9MaXZlVXNlckludGVyYWN0aW9uKFNlY29uZHMgeyB0aW1lVG9MaXZlVXNl
ckludGVyYWN0aW9uIH0pOwotICAgICAgICAKLSAgICAgICAgZG91YmxlIHRpbWVUb0xpdmVDb29r
aWVQYXJ0aXRpb25GcmVlID0gW1tOU1VzZXJEZWZhdWx0cyBzdGFuZGFyZFVzZXJEZWZhdWx0c10g
ZG91YmxlRm9yS2V5OiBXZWJQcmVmZXJlbmNlc0tleTo6cmVzb3VyY2VMb2FkU3RhdGlzdGljc1Rp
bWVUb0xpdmVDb29raWVQYXJ0aXRpb25GcmVlS2V5KCldOwotICAgICAgICBpZiAodGltZVRvTGl2
ZUNvb2tpZVBhcnRpdGlvbkZyZWUgPiAwICYmIHRpbWVUb0xpdmVDb29raWVQYXJ0aXRpb25GcmVl
IDw9IGRheUluU2Vjb25kcykKLSAgICAgICAgICAgIHNldFRpbWVUb0xpdmVDb29raWVQYXJ0aXRp
b25GcmVlKFNlY29uZHMgeyB0aW1lVG9MaXZlQ29va2llUGFydGl0aW9uRnJlZSB9KTsKLQotICAg
ICAgICBkb3VibGUgZ3JhbmRmYXRoZXJpbmdUaW1lID0gW1tOU1VzZXJEZWZhdWx0cyBzdGFuZGFy
ZFVzZXJEZWZhdWx0c10gZG91YmxlRm9yS2V5OiBXZWJQcmVmZXJlbmNlc0tleTo6cmVzb3VyY2VM
b2FkU3RhdGlzdGljc0dyYW5kZmF0aGVyaW5nVGltZUtleSgpXTsKLSAgICAgICAgaWYgKGdyYW5k
ZmF0aGVyaW5nVGltZSA+IDAgJiYgZ3JhbmRmYXRoZXJpbmdUaW1lIDw9IDcgKiBkYXlJblNlY29u
ZHMpCi0gICAgICAgICAgICBzZXRHcmFuZGZhdGhlcmluZ1RpbWUoU2Vjb25kcyB7IGdyYW5kZmF0
aGVyaW5nVGltZSB9KTsKLSAgICB9KTsKLX0KLQotfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0NvY29hL1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZUNvY29hLm1t
IGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0NvY29hL1dlYlJlc291cmNlTG9hZFN0YXRpc3Rp
Y3NTdG9yZUNvY29hLm1tCmluZGV4IDU4N2RjZjAwYmJlMTg5MTQ5YTA2MTMxMjk4ZmQzNzM2NGY2
MWFkYjguLjBjMGY4YTIyYTMyMGRiYWM4YTJlNWIxYzE5NWUxMGY4ZWU4OWVmZTIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db2NvYS9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0
aWNzU3RvcmVDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29jb2EvV2Vi
UmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlQ29jb2EubW0KQEAgLTI2LDYgKzI2LDggQEAKICNp
bmNsdWRlICJjb25maWcuaCIKICNpbXBvcnQgIldlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9y
ZS5oIgogCisjaW1wb3J0ICJXZWJQcmVmZXJlbmNlc0tleXMuaCIKKwogdXNpbmcgbmFtZXNwYWNl
IFdlYkNvcmU7CiAKIG5hbWVzcGFjZSBXZWJLaXQgewpAQCAtMzcsNCArMzksMjYgQEAgdm9pZCBX
ZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OnBsYXRmb3JtRXhjbHVkZUZyb21CYWNrdXAo
KSBjb25zdAogI2VuZGlmCiB9CiAKK3ZvaWQgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3Jl
OjpyZWdpc3RlclVzZXJEZWZhdWx0c0lmTmVlZGVkKCkKK3sKKyAgICBzdGF0aWMgZGlzcGF0Y2hf
b25jZV90IGluaXRPbmNlOworCisgICAgZGlzcGF0Y2hfb25jZSgmaW5pdE9uY2UsIF4geworICAg
ICAgICBjb25zdCBzaXplX3QgaG91ckluU2Vjb25kcyA9IDM2MDA7CisgICAgICAgIGNvbnN0IHNp
emVfdCBkYXlJblNlY29uZHMgPSAyNCAqIGhvdXJJblNlY29uZHM7CisKKyAgICAgICAgZG91Ymxl
IHRpbWVUb0xpdmVVc2VySW50ZXJhY3Rpb24gPSBbW05TVXNlckRlZmF1bHRzIHN0YW5kYXJkVXNl
ckRlZmF1bHRzXSBkb3VibGVGb3JLZXk6IFdlYlByZWZlcmVuY2VzS2V5OjpyZXNvdXJjZUxvYWRT
dGF0aXN0aWNzVGltZVRvTGl2ZVVzZXJJbnRlcmFjdGlvbktleSgpXTsKKyAgICAgICAgaWYgKHRp
bWVUb0xpdmVVc2VySW50ZXJhY3Rpb24gPiAwICYmIHRpbWVUb0xpdmVVc2VySW50ZXJhY3Rpb24g
PD0gMzAgKiBkYXlJblNlY29uZHMpCisgICAgICAgICAgICBzZXRUaW1lVG9MaXZlVXNlckludGVy
YWN0aW9uKFNlY29uZHMgeyB0aW1lVG9MaXZlVXNlckludGVyYWN0aW9uIH0pOworCisgICAgICAg
IGRvdWJsZSB0aW1lVG9MaXZlQ29va2llUGFydGl0aW9uRnJlZSA9IFtbTlNVc2VyRGVmYXVsdHMg
c3RhbmRhcmRVc2VyRGVmYXVsdHNdIGRvdWJsZUZvcktleTogV2ViUHJlZmVyZW5jZXNLZXk6OnJl
c291cmNlTG9hZFN0YXRpc3RpY3NUaW1lVG9MaXZlQ29va2llUGFydGl0aW9uRnJlZUtleSgpXTsK
KyAgICAgICAgaWYgKHRpbWVUb0xpdmVDb29raWVQYXJ0aXRpb25GcmVlID4gMCAmJiB0aW1lVG9M
aXZlQ29va2llUGFydGl0aW9uRnJlZSA8PSBkYXlJblNlY29uZHMpCisgICAgICAgICAgICBzZXRU
aW1lVG9MaXZlQ29va2llUGFydGl0aW9uRnJlZShTZWNvbmRzIHsgdGltZVRvTGl2ZUNvb2tpZVBh
cnRpdGlvbkZyZWUgfSk7CisKKyAgICAgICAgZG91YmxlIGdyYW5kZmF0aGVyaW5nVGltZSA9IFtb
TlNVc2VyRGVmYXVsdHMgc3RhbmRhcmRVc2VyRGVmYXVsdHNdIGRvdWJsZUZvcktleTogV2ViUHJl
ZmVyZW5jZXNLZXk6OnJlc291cmNlTG9hZFN0YXRpc3RpY3NHcmFuZGZhdGhlcmluZ1RpbWVLZXko
KV07CisgICAgICAgIGlmIChncmFuZGZhdGhlcmluZ1RpbWUgPiAwICYmIGdyYW5kZmF0aGVyaW5n
VGltZSA8PSA3ICogZGF5SW5TZWNvbmRzKQorICAgICAgICAgICAgc2V0R3JhbmRmYXRoZXJpbmdU
aW1lKFNlY29uZHMgeyBncmFuZGZhdGhlcmluZ1RpbWUgfSk7CisgICAgfSk7Cit9CisKIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9TdG9yYWdlL1Jlc291cmNlTG9hZFN0
YXRpc3RpY3NTdG9yZS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvU3RvcmFnZS9SZXNv
dXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuY3BwCmluZGV4IDlhZDNmZGYzZjQ0NDU0MjIyMGJkYjVh
NTRhNmI3YmQ3NjdhMjRlMTkuLjgyNzA3MmNmNDIwYWIzNWJmM2E3MGNmZWZlNWI3YzQ3YTI5MjNk
MzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9TdG9yYWdlL1Jlc291cmNl
TG9hZFN0YXRpc3RpY3NTdG9yZS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1N0
b3JhZ2UvUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmNwcApAQCAtNDMsNyArNDMsNyBAQCBz
dGF0aWMgY29uc3QgYXV0byBzdGF0aXN0aWNzTW9kZWxWZXJzaW9uID0gNDsKIHN0YXRpYyBTZWNv
bmRzIHRpbWVUb0xpdmVVc2VySW50ZXJhY3Rpb24geyAyNF9oICogMzAuIH07CiBzdGF0aWMgU2Vj
b25kcyB0aW1lVG9MaXZlQ29va2llUGFydGl0aW9uRnJlZSB7IDI0X2ggfTsKIHN0YXRpYyBTZWNv
bmRzIGdyYW5kZmF0aGVyaW5nVGltZSB7IDFfaCB9Owotc3RhdGljIFNlY29uZHMgbWluaW11bVRp
bWVCZXR3ZWVlbkRhdGFSZWNvcmRzUmVtb3ZhbCB7IDFfaCB9Oworc3RhdGljIFNlY29uZHMgbWlu
aW11bVRpbWVCZXR3ZWVuRGF0YVJlY29yZHNSZW1vdmFsIHsgMV9oIH07CiAKIFJlZjxSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzU3RvcmU+IFJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6Y3JlYXRl
KCkKIHsKQEAgLTI4MSwxMCArMjgxLDEwIEBAIHZvaWQgUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0
b3JlOjpzZXRUaW1lVG9MaXZlQ29va2llUGFydGl0aW9uRnJlZShTZWNvbmRzIHNlY29uCiAgICAg
ICAgIHRpbWVUb0xpdmVDb29raWVQYXJ0aXRpb25GcmVlID0gc2Vjb25kczsKIH0KIAotdm9pZCBS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OnNldE1pbmltdW1UaW1lQmV0d2VlZW5EYXRhUmVj
b3Jkc1JlbW92YWwoU2Vjb25kcyBzZWNvbmRzKQordm9pZCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNz
U3RvcmU6OnNldE1pbmltdW1UaW1lQmV0d2VlbkRhdGFSZWNvcmRzUmVtb3ZhbChTZWNvbmRzIHNl
Y29uZHMpCiB7CiAgICAgaWYgKHNlY29uZHMgPj0gMF9zKQotICAgICAgICBtaW5pbXVtVGltZUJl
dHdlZWVuRGF0YVJlY29yZHNSZW1vdmFsID0gc2Vjb25kczsKKyAgICAgICAgbWluaW11bVRpbWVC
ZXR3ZWVuRGF0YVJlY29yZHNSZW1vdmFsID0gc2Vjb25kczsKIH0KIAogdm9pZCBSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzU3RvcmU6OnNldEdyYW5kZmF0aGVyaW5nVGltZShTZWNvbmRzIHNlY29uZHMp
CkBAIC0zOTgsNyArMzk4LDcgQEAgYm9vbCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OnNo
b3VsZFJlbW92ZURhdGFSZWNvcmRzKCkgY29uc3QKICAgICBpZiAobV9kYXRhUmVjb3Jkc1JlbW92
YWxQZW5kaW5nKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBpZiAobV9sYXN0VGltZURh
dGFSZWNvcmRzV2VyZVJlbW92ZWQgJiYgTW9ub3RvbmljVGltZTo6bm93KCkgPCAobV9sYXN0VGlt
ZURhdGFSZWNvcmRzV2VyZVJlbW92ZWQgKyBtaW5pbXVtVGltZUJldHdlZWVuRGF0YVJlY29yZHNS
ZW1vdmFsKSkKKyAgICBpZiAobV9sYXN0VGltZURhdGFSZWNvcmRzV2VyZVJlbW92ZWQgJiYgTW9u
b3RvbmljVGltZTo6bm93KCkgPCAobV9sYXN0VGltZURhdGFSZWNvcmRzV2VyZVJlbW92ZWQgKyBt
aW5pbXVtVGltZUJldHdlZW5EYXRhUmVjb3Jkc1JlbW92YWwpKQogICAgICAgICByZXR1cm4gZmFs
c2U7CiAKICAgICByZXR1cm4gdHJ1ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9TdG9yYWdlL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5oIGIvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL1N0b3JhZ2UvUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmgKaW5kZXgg
ODUzM2JlYmRkZjIwN2ZhYzA5ZGQ3ZTZlMTNmMGVlYWE0NDNmYjFiOC4uNTA1MWEwZTZmN2YxNTMy
NGQ0NWY0NmQ0MWNlYWM1ZTJiY2EyZDkwNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL1N0b3JhZ2UvUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmgKKysrIGIvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL1N0b3JhZ2UvUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmgK
QEAgLTgzLDcgKzgzLDcgQEAgcHVibGljOgogICAgIHZvaWQgZmlyZVRlbGVtZXRyeUhhbmRsZXIo
KTsKICAgICB2b2lkIHNldFRpbWVUb0xpdmVVc2VySW50ZXJhY3Rpb24oU2Vjb25kcyk7CiAgICAg
dm9pZCBzZXRUaW1lVG9MaXZlQ29va2llUGFydGl0aW9uRnJlZShTZWNvbmRzKTsKLSAgICB2b2lk
IHNldE1pbmltdW1UaW1lQmV0d2VlZW5EYXRhUmVjb3Jkc1JlbW92YWwoU2Vjb25kcyk7CisgICAg
dm9pZCBzZXRNaW5pbXVtVGltZUJldHdlZW5EYXRhUmVjb3Jkc1JlbW92YWwoU2Vjb25kcyk7CiAg
ICAgdm9pZCBzZXRHcmFuZGZhdGhlcmluZ1RpbWUoU2Vjb25kcyk7CiAgICAgdm9pZCBmaXJlU2hv
dWxkUGFydGl0aW9uQ29va2llc0hhbmRsZXIoKTsKICAgICB2b2lkIGZpcmVTaG91bGRQYXJ0aXRp
b25Db29raWVzSGFuZGxlcihjb25zdCBWZWN0b3I8U3RyaW5nPiYgZG9tYWluc1RvUmVtb3ZlLCBj
b25zdCBWZWN0b3I8U3RyaW5nPiYgZG9tYWluc1RvQWRkLCBib29sIGNsZWFyRmlyc3QpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlJlc291cmNlTG9hZFN0YXRpc3Rp
Y3NNYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJSZXNvdXJjZUxvYWRT
dGF0aXN0aWNzTWFuYWdlci5jcHAKaW5kZXggZDc1OGY4MzBiN2M1YTA0YjU2YmRkYWU5Y2ZhNmQ1
M2YxNjMzMTM5Yy4uYmM1ZmRlNzdjNjc3YTk0NGJkYmFhMTZjYzAzYTY4MWFjZWU1M2U4YyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlJlc291cmNlTG9hZFN0YXRpc3Rp
Y3NNYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUmVzb3VyY2VM
b2FkU3RhdGlzdGljc01hbmFnZXIuY3BwCkBAIC0yNiw0MCArMjYsMzEgQEAKICNpbmNsdWRlICJj
b25maWcuaCIKICNpbmNsdWRlICJXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWFuYWdlci5oIgog
Ci0jaW5jbHVkZSAiUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmgiCi0jaW5jbHVkZSA8V2Vi
Q29yZS9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzLmg+CisjaW5jbHVkZSAiV2ViUmVzb3VyY2VMb2Fk
U3RhdGlzdGljc1N0b3JlLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9VUkwuaD4KLSNpbmNsdWRlIDx3
dGYvQ3Jvc3NUaHJlYWRDb3BpZXIuaD4KICNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4K
LSNpbmNsdWRlIDx3dGYvUnVuTG9vcC5oPgotI2luY2x1ZGUgPHd0Zi9Xb3JrUXVldWUuaD4KIAog
bmFtZXNwYWNlIFdlYktpdCB7CiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCi10ZW1wbGF0
ZTx0eXBlbmFtZSBUPiBzdGF0aWMgaW5saW5lIFN0cmluZyBwcmltYXJ5RG9tYWluKGNvbnN0IFQm
IHZhbHVlKQotewotICAgIHJldHVybiBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzOjpwcmltYXJ5RG9t
YWluKHZhbHVlKTsKLX0KLQogV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc01hbmFnZXImIFdlYlJl
c291cmNlTG9hZFN0YXRpc3RpY3NNYW5hZ2VyOjpzaGFyZWQoKQogewogICAgIHN0YXRpYyBOZXZl
ckRlc3Ryb3llZDxXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWFuYWdlcj4gd2ViUmVzb3VyY2VM
b2FkU3RhdGlzdGljc01hbmFnZXI7CiAgICAgcmV0dXJuIHdlYlJlc291cmNlTG9hZFN0YXRpc3Rp
Y3NNYW5hZ2VyOwogfQogCi12b2lkIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NNYW5hZ2VyOjpz
ZXRTdGF0aXN0aWNzU3RvcmUoUmVmPFJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZT4mJiBzdG9y
ZSkKK1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NNYW5hZ2VyOjpXZWJSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzTWFuYWdlcigpCit7Cit9CisKK1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NNYW5hZ2Vy
Ojp+V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc01hbmFnZXIoKQogewotICAgIGlmIChtX3N0b3Jl
ICYmIG1fcXVldWUpCi0gICAgICAgIG1fcXVldWUgPSBudWxscHRyOwotICAgIG1fc3RvcmUgPSBX
VEZNb3ZlKHN0b3JlKTsKIH0KIAotdm9pZCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWFuYWdl
cjo6c2V0U3RhdGlzdGljc1F1ZXVlKFJlZjxXVEY6OldvcmtRdWV1ZT4mJiBxdWV1ZSkKK3ZvaWQg
V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc01hbmFnZXI6OnNldFN0YXRpc3RpY3NTdG9yZShSZWY8
V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlPiYmIHN0b3JlKQogewotICAgIEFTU0VSVCgh
bV9xdWV1ZSk7Ci0gICAgbV9xdWV1ZSA9IFdURk1vdmUocXVldWUpOworICAgIG1fc3RvcmUgPSBX
VEZNb3ZlKHN0b3JlKTsKIH0KIAogdm9pZCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWFuYWdl
cjo6Y2xlYXJJbk1lbW9yeVN0b3JlKCkKQEAgLTY3LDEwICs1OCw3IEBAIHZvaWQgV2ViUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc01hbmFnZXI6OmNsZWFySW5NZW1vcnlTdG9yZSgpCiAgICAgaWYgKCFt
X3N0b3JlKQogICAgICAgICByZXR1cm47CiAKLSAgICBBU1NFUlQobV9xdWV1ZSk7Ci0gICAgbV9x
dWV1ZS0+ZGlzcGF0Y2goW3RoaXNdIHsKLSAgICAgICAgbV9zdG9yZS0+Y2xlYXJJbk1lbW9yeSgp
OwotICAgIH0pOworICAgIG1fc3RvcmUtPmNsZWFySW5NZW1vcnkoKTsKIH0KIAogdm9pZCBXZWJS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWFuYWdlcjo6Y2xlYXJJbk1lbW9yeUFuZFBlcnNpc3RlbnRT
dG9yZSgpCkBAIC03OCwyMDUgKzY2LDE2NiBAQCB2b2lkIFdlYlJlc291cmNlTG9hZFN0YXRpc3Rp
Y3NNYW5hZ2VyOjpjbGVhckluTWVtb3J5QW5kUGVyc2lzdGVudFN0b3JlKCkKICAgICBpZiAoIW1f
c3RvcmUpCiAgICAgICAgIHJldHVybjsKIAotICAgIEFTU0VSVChtX3F1ZXVlKTsKLSAgICBtX3F1
ZXVlLT5kaXNwYXRjaChbdGhpc10gewotICAgICAgICBtX3N0b3JlLT5jbGVhckluTWVtb3J5QW5k
UGVyc2lzdGVudCgpOwotICAgIH0pOworICAgIG1fc3RvcmUtPmNsZWFySW5NZW1vcnlBbmRQZXJz
aXN0ZW50KCk7CiB9CiAKIHZvaWQgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc01hbmFnZXI6OmNs
ZWFySW5NZW1vcnlBbmRQZXJzaXN0ZW50U3RvcmUoc3RkOjpjaHJvbm86OnN5c3RlbV9jbG9jazo6
dGltZV9wb2ludCBtb2RpZmllZFNpbmNlKQogewotICAgIC8vIEZvciBub3csIGJlIGNvbnNlcnZh
dGl2ZSBhbmQgY2xlYXIgZXZlcnl0aGluZyByZWdhcmRsZXNzIG9mIG1vZGlmaWVkU2luY2UKLSAg
ICBVTlVTRURfUEFSQU0obW9kaWZpZWRTaW5jZSk7Ci0gICAgY2xlYXJJbk1lbW9yeUFuZFBlcnNp
c3RlbnRTdG9yZSgpOworICAgIGlmICghbV9zdG9yZSkKKyAgICAgICAgcmV0dXJuOworCisgICAg
bV9zdG9yZS0+Y2xlYXJJbk1lbW9yeUFuZFBlcnNpc3RlbnQobW9kaWZpZWRTaW5jZSk7CiB9CiAK
IHZvaWQgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc01hbmFnZXI6OmxvZ1VzZXJJbnRlcmFjdGlv
bihjb25zdCBVUkwmIHVybCkKIHsKLSAgICBpZiAodXJsLmlzQmxhbmtVUkwoKSB8fCB1cmwuaXNF
bXB0eSgpKQorICAgIGlmICghbV9zdG9yZSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgQVNTRVJU
KG1fcXVldWUpOwotICAgIG1fcXVldWUtPmRpc3BhdGNoKFt0aGlzLCBwcmltYXJ5RG9tYWluU3Ry
aW5nID0gcHJpbWFyeURvbWFpbih1cmwpLmlzb2xhdGVkQ29weSgpXSB7Ci0gICAgICAgIHsKLSAg
ICAgICAgICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2sobV9zdG9yZS0+c3RhdGlzdGljc0xvY2so
KSk7Ci0gICAgICAgICAgICBhdXRvJiBzdGF0aXN0aWNzID0gbV9zdG9yZS0+ZW5zdXJlUmVzb3Vy
Y2VTdGF0aXN0aWNzRm9yUHJpbWFyeURvbWFpbihwcmltYXJ5RG9tYWluU3RyaW5nKTsKLSAgICAg
ICAgICAgIHN0YXRpc3RpY3MuaGFkVXNlckludGVyYWN0aW9uID0gdHJ1ZTsKLSAgICAgICAgICAg
IHN0YXRpc3RpY3MubW9zdFJlY2VudFVzZXJJbnRlcmFjdGlvblRpbWUgPSBXYWxsVGltZTo6bm93
KCk7Ci0gICAgICAgIH0KLQotICAgICAgICBtX3N0b3JlLT5maXJlU2hvdWxkUGFydGl0aW9uQ29v
a2llc0hhbmRsZXIoeyBwcmltYXJ5RG9tYWluU3RyaW5nIH0sIHsgfSwgZmFsc2UpOwotICAgIH0p
OworICAgIG1fc3RvcmUtPmxvZ1VzZXJJbnRlcmFjdGlvbih1cmwpOwogfQogCiB2b2lkIFdlYlJl
c291cmNlTG9hZFN0YXRpc3RpY3NNYW5hZ2VyOjpjbGVhclVzZXJJbnRlcmFjdGlvbihjb25zdCBV
UkwmIHVybCkKIHsKLSAgICBpZiAodXJsLmlzQmxhbmtVUkwoKSB8fCB1cmwuaXNFbXB0eSgpKQor
ICAgIGlmICghbV9zdG9yZSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgYXV0byBsb2NrZXIgPSBo
b2xkTG9jayhtX3N0b3JlLT5zdGF0aXN0aWNzTG9jaygpKTsKLSAgICBhdXRvJiBzdGF0aXN0aWNz
ID0gbV9zdG9yZS0+ZW5zdXJlUmVzb3VyY2VTdGF0aXN0aWNzRm9yUHJpbWFyeURvbWFpbihwcmlt
YXJ5RG9tYWluKHVybCkpOwotCi0gICAgc3RhdGlzdGljcy5oYWRVc2VySW50ZXJhY3Rpb24gPSBm
YWxzZTsKLSAgICBzdGF0aXN0aWNzLm1vc3RSZWNlbnRVc2VySW50ZXJhY3Rpb25UaW1lID0geyB9
OworICAgIG1fc3RvcmUtPmNsZWFyVXNlckludGVyYWN0aW9uKHVybCk7CiB9CiAKIGJvb2wgV2Vi
UmVzb3VyY2VMb2FkU3RhdGlzdGljc01hbmFnZXI6Omhhc0hhZFVzZXJJbnRlcmFjdGlvbihjb25z
dCBVUkwmIHVybCkKIHsKLSAgICBpZiAodXJsLmlzQmxhbmtVUkwoKSB8fCB1cmwuaXNFbXB0eSgp
KQorICAgIGlmICghbV9zdG9yZSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgYXV0byBs
b2NrZXIgPSBob2xkTG9jayhtX3N0b3JlLT5zdGF0aXN0aWNzTG9jaygpKTsKLSAgICBhdXRvJiBz
dGF0aXN0aWNzID0gbV9zdG9yZS0+ZW5zdXJlUmVzb3VyY2VTdGF0aXN0aWNzRm9yUHJpbWFyeURv
bWFpbihwcmltYXJ5RG9tYWluKHVybCkpOwotCi0gICAgcmV0dXJuIG1fc3RvcmUtPmhhc0hhZFJl
Y2VudFVzZXJJbnRlcmFjdGlvbihzdGF0aXN0aWNzKTsKKyAgICByZXR1cm4gbV9zdG9yZS0+aGFz
SGFkVXNlckludGVyYWN0aW9uKHVybCk7CiB9CiAKIHZvaWQgV2ViUmVzb3VyY2VMb2FkU3RhdGlz
dGljc01hbmFnZXI6OnNldFByZXZhbGVudFJlc291cmNlKGNvbnN0IFVSTCYgdXJsKQogewotICAg
IGlmICh1cmwuaXNCbGFua1VSTCgpIHx8IHVybC5pc0VtcHR5KCkpCisgICAgaWYgKCFtX3N0b3Jl
KQogICAgICAgICByZXR1cm47CiAKLSAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKG1fc3RvcmUt
PnN0YXRpc3RpY3NMb2NrKCkpOwotICAgIGF1dG8mIHN0YXRpc3RpY3MgPSBtX3N0b3JlLT5lbnN1
cmVSZXNvdXJjZVN0YXRpc3RpY3NGb3JQcmltYXJ5RG9tYWluKHByaW1hcnlEb21haW4odXJsKSk7
Ci0KLSAgICBzdGF0aXN0aWNzLmlzUHJldmFsZW50UmVzb3VyY2UgPSB0cnVlOworICAgIG1fc3Rv
cmUtPnNldFByZXZhbGVudFJlc291cmNlKHVybCk7CiB9CiAKIGJvb2wgV2ViUmVzb3VyY2VMb2Fk
U3RhdGlzdGljc01hbmFnZXI6OmlzUHJldmFsZW50UmVzb3VyY2UoY29uc3QgVVJMJiB1cmwpCiB7
Ci0gICAgaWYgKHVybC5pc0JsYW5rVVJMKCkgfHwgdXJsLmlzRW1wdHkoKSkKKyAgICBpZiAoIW1f
c3RvcmUpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIGF1dG8gbG9ja2VyID0gaG9sZExv
Y2sobV9zdG9yZS0+c3RhdGlzdGljc0xvY2soKSk7Ci0gICAgYXV0byYgc3RhdGlzdGljcyA9IG1f
c3RvcmUtPmVuc3VyZVJlc291cmNlU3RhdGlzdGljc0ZvclByaW1hcnlEb21haW4ocHJpbWFyeURv
bWFpbih1cmwpKTsKLQotICAgIHJldHVybiBzdGF0aXN0aWNzLmlzUHJldmFsZW50UmVzb3VyY2U7
CisgICAgcmV0dXJuIG1fc3RvcmUtPmlzUHJldmFsZW50UmVzb3VyY2UodXJsKTsKIH0KIAogdm9p
ZCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWFuYWdlcjo6Y2xlYXJQcmV2YWxlbnRSZXNvdXJj
ZShjb25zdCBVUkwmIHVybCkKIHsKLSAgICBpZiAodXJsLmlzQmxhbmtVUkwoKSB8fCB1cmwuaXNF
bXB0eSgpKQorICAgIGlmICghbV9zdG9yZSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgYXV0byBs
b2NrZXIgPSBob2xkTG9jayhtX3N0b3JlLT5zdGF0aXN0aWNzTG9jaygpKTsKLSAgICBhdXRvJiBz
dGF0aXN0aWNzID0gbV9zdG9yZS0+ZW5zdXJlUmVzb3VyY2VTdGF0aXN0aWNzRm9yUHJpbWFyeURv
bWFpbihwcmltYXJ5RG9tYWluKHVybCkpOwotCi0gICAgc3RhdGlzdGljcy5pc1ByZXZhbGVudFJl
c291cmNlID0gZmFsc2U7CisgICAgbV9zdG9yZS0+Y2xlYXJQcmV2YWxlbnRSZXNvdXJjZSh1cmwp
OwogfQogCiB2b2lkIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NNYW5hZ2VyOjpzZXRHcmFuZGZh
dGhlcmVkKGNvbnN0IFVSTCYgdXJsLCBib29sIHZhbHVlKQogewotICAgIGlmICh1cmwuaXNCbGFu
a1VSTCgpIHx8IHVybC5pc0VtcHR5KCkpCisgICAgaWYgKCFtX3N0b3JlKQogICAgICAgICByZXR1
cm47CiAKLSAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKG1fc3RvcmUtPnN0YXRpc3RpY3NMb2Nr
KCkpOwotICAgIGF1dG8mIHN0YXRpc3RpY3MgPSBtX3N0b3JlLT5lbnN1cmVSZXNvdXJjZVN0YXRp
c3RpY3NGb3JQcmltYXJ5RG9tYWluKHByaW1hcnlEb21haW4odXJsKSk7Ci0KLSAgICBzdGF0aXN0
aWNzLmdyYW5kZmF0aGVyZWQgPSB2YWx1ZTsKKyAgICBtX3N0b3JlLT5zZXRHcmFuZGZhdGhlcmVk
KHVybCwgdmFsdWUpOwogfQogCiBib29sIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NNYW5hZ2Vy
Ojppc0dyYW5kZmF0aGVyZWQoY29uc3QgVVJMJiB1cmwpCiB7Ci0gICAgaWYgKHVybC5pc0JsYW5r
VVJMKCkgfHwgdXJsLmlzRW1wdHkoKSkKKyAgICBpZiAoIW1fc3RvcmUpCiAgICAgICAgIHJldHVy
biBmYWxzZTsKIAotICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2sobV9zdG9yZS0+c3RhdGlzdGlj
c0xvY2soKSk7Ci0gICAgYXV0byYgc3RhdGlzdGljcyA9IG1fc3RvcmUtPmVuc3VyZVJlc291cmNl
U3RhdGlzdGljc0ZvclByaW1hcnlEb21haW4ocHJpbWFyeURvbWFpbih1cmwpKTsKLQotICAgIHJl
dHVybiBzdGF0aXN0aWNzLmdyYW5kZmF0aGVyZWQ7CisgICAgcmV0dXJuIG1fc3RvcmUtPmlzR3Jh
bmRmYXRoZXJlZCh1cmwpOwogfQogCiB2b2lkIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NNYW5h
Z2VyOjpzZXRTdWJmcmFtZVVuZGVyVG9wRnJhbWVPcmlnaW4oY29uc3QgVVJMJiBzdWJmcmFtZSwg
Y29uc3QgVVJMJiB0b3BGcmFtZSkKIHsKLSAgICBpZiAoc3ViZnJhbWUuaXNCbGFua1VSTCgpIHx8
IHN1YmZyYW1lLmlzRW1wdHkoKSB8fCB0b3BGcmFtZS5pc0JsYW5rVVJMKCkgfHwgdG9wRnJhbWUu
aXNFbXB0eSgpKQorICAgIGlmICghbV9zdG9yZSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgQVNT
RVJUKG1fcXVldWUpOwotICAgIG1fcXVldWUtPmRpc3BhdGNoKFt0aGlzLCBwcmltYXJ5VG9wRnJh
bWVEb21haW5TdHJpbmcgPSBwcmltYXJ5RG9tYWluKHRvcEZyYW1lKS5pc29sYXRlZENvcHkoKSwg
cHJpbWFyeVN1YkZyYW1lRG9tYWluU3RyaW5nID0gcHJpbWFyeURvbWFpbihzdWJmcmFtZSkuaXNv
bGF0ZWRDb3B5KCldIHsKLSAgICAgICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhtX3N0b3JlLT5z
dGF0aXN0aWNzTG9jaygpKTsKLSAgICAgICAgYXV0byYgc3RhdGlzdGljcyA9IG1fc3RvcmUtPmVu
c3VyZVJlc291cmNlU3RhdGlzdGljc0ZvclByaW1hcnlEb21haW4ocHJpbWFyeVN1YkZyYW1lRG9t
YWluU3RyaW5nKTsKLSAgICAgICAgc3RhdGlzdGljcy5zdWJmcmFtZVVuZGVyVG9wRnJhbWVPcmln
aW5zLmFkZChwcmltYXJ5VG9wRnJhbWVEb21haW5TdHJpbmcpOwotICAgIH0pOworICAgIG1fc3Rv
cmUtPnNldFN1YmZyYW1lVW5kZXJUb3BGcmFtZU9yaWdpbihzdWJmcmFtZSwgdG9wRnJhbWUpOwog
fQogCiB2b2lkIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NNYW5hZ2VyOjpzZXRTdWJyZXNvdXJj
ZVVuZGVyVG9wRnJhbWVPcmlnaW4oY29uc3QgVVJMJiBzdWJyZXNvdXJjZSwgY29uc3QgVVJMJiB0
b3BGcmFtZSkKIHsKLSAgICBpZiAoc3VicmVzb3VyY2UuaXNCbGFua1VSTCgpIHx8IHN1YnJlc291
cmNlLmlzRW1wdHkoKSB8fCB0b3BGcmFtZS5pc0JsYW5rVVJMKCkgfHwgdG9wRnJhbWUuaXNFbXB0
eSgpKQorICAgIGlmICghbV9zdG9yZSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgQVNTRVJUKG1f
cXVldWUpOwotICAgIG1fcXVldWUtPmRpc3BhdGNoKFt0aGlzLCBwcmltYXJ5VG9wRnJhbWVEb21h
aW5TdHJpbmcgPSBwcmltYXJ5RG9tYWluKHRvcEZyYW1lKS5pc29sYXRlZENvcHkoKSwgcHJpbWFy
eVN1YnJlc291cmNlRG9tYWluU3RyaW5nID0gcHJpbWFyeURvbWFpbihzdWJyZXNvdXJjZSkuaXNv
bGF0ZWRDb3B5KCldIHsKLSAgICAgICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhtX3N0b3JlLT5z
dGF0aXN0aWNzTG9jaygpKTsKLSAgICAgICAgYXV0byYgc3RhdGlzdGljcyA9IG1fc3RvcmUtPmVu
c3VyZVJlc291cmNlU3RhdGlzdGljc0ZvclByaW1hcnlEb21haW4ocHJpbWFyeVN1YnJlc291cmNl
RG9tYWluU3RyaW5nKTsKLSAgICAgICAgc3RhdGlzdGljcy5zdWJyZXNvdXJjZVVuZGVyVG9wRnJh
bWVPcmlnaW5zLmFkZChwcmltYXJ5VG9wRnJhbWVEb21haW5TdHJpbmcpOwotICAgIH0pOworICAg
IG1fc3RvcmUtPnNldFN1YnJlc291cmNlVW5kZXJUb3BGcmFtZU9yaWdpbihzdWJyZXNvdXJjZSwg
dG9wRnJhbWUpOwogfQogCiB2b2lkIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NNYW5hZ2VyOjpz
ZXRTdWJyZXNvdXJjZVVuaXF1ZVJlZGlyZWN0VG8oY29uc3QgVVJMJiBzdWJyZXNvdXJjZSwgY29u
c3QgVVJMJiBob3N0TmFtZVJlZGlyZWN0ZWRUbykKIHsKLSAgICBpZiAoc3VicmVzb3VyY2UuaXNC
bGFua1VSTCgpIHx8IHN1YnJlc291cmNlLmlzRW1wdHkoKSB8fCBob3N0TmFtZVJlZGlyZWN0ZWRU
by5pc0JsYW5rVVJMKCkgfHwgaG9zdE5hbWVSZWRpcmVjdGVkVG8uaXNFbXB0eSgpKQorICAgIGlm
ICghbV9zdG9yZSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgQVNTRVJUKG1fcXVldWUpOwotICAg
IG1fcXVldWUtPmRpc3BhdGNoKFt0aGlzLCBwcmltYXJ5UmVkaXJlY3REb21haW5TdHJpbmcgPSBw
cmltYXJ5RG9tYWluKGhvc3ROYW1lUmVkaXJlY3RlZFRvKS5pc29sYXRlZENvcHkoKSwgcHJpbWFy
eVN1YnJlc291cmNlRG9tYWluU3RyaW5nID0gcHJpbWFyeURvbWFpbihzdWJyZXNvdXJjZSkuaXNv
bGF0ZWRDb3B5KCldIHsKLSAgICAgICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhtX3N0b3JlLT5z
dGF0aXN0aWNzTG9jaygpKTsKLSAgICAgICAgYXV0byYgc3RhdGlzdGljcyA9IG1fc3RvcmUtPmVu
c3VyZVJlc291cmNlU3RhdGlzdGljc0ZvclByaW1hcnlEb21haW4ocHJpbWFyeVN1YnJlc291cmNl
RG9tYWluU3RyaW5nKTsKLSAgICAgICAgc3RhdGlzdGljcy5zdWJyZXNvdXJjZVVuaXF1ZVJlZGly
ZWN0c1RvLmFkZChwcmltYXJ5UmVkaXJlY3REb21haW5TdHJpbmcpOwotICAgIH0pOworICAgIG1f
c3RvcmUtPnNldFN1YnJlc291cmNlVW5pcXVlUmVkaXJlY3RUbyhzdWJyZXNvdXJjZSwgaG9zdE5h
bWVSZWRpcmVjdGVkVG8pOwogfQogCiB2b2lkIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NNYW5h
Z2VyOjpzZXRUaW1lVG9MaXZlVXNlckludGVyYWN0aW9uKFNlY29uZHMgc2Vjb25kcykKIHsKKyAg
ICBpZiAoIW1fc3RvcmUpCisgICAgICAgIHJldHVybjsKKwogICAgIG1fc3RvcmUtPnNldFRpbWVU
b0xpdmVVc2VySW50ZXJhY3Rpb24oc2Vjb25kcyk7CiB9CiAKIHZvaWQgV2ViUmVzb3VyY2VMb2Fk
U3RhdGlzdGljc01hbmFnZXI6OnNldFRpbWVUb0xpdmVDb29raWVQYXJ0aXRpb25GcmVlKFNlY29u
ZHMgc2Vjb25kcykKIHsKKyAgICBpZiAoIW1fc3RvcmUpCisgICAgICAgIHJldHVybjsKKwogICAg
IG1fc3RvcmUtPnNldFRpbWVUb0xpdmVDb29raWVQYXJ0aXRpb25GcmVlKHNlY29uZHMpOwogfQog
Ci12b2lkIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NNYW5hZ2VyOjpzZXRNaW5pbXVtVGltZUJl
dHdlZWVuRGF0YVJlY29yZHNSZW1vdmFsKFNlY29uZHMgc2Vjb25kcykKK3ZvaWQgV2ViUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc01hbmFnZXI6OnNldE1pbmltdW1UaW1lQmV0d2VlbkRhdGFSZWNvcmRz
UmVtb3ZhbChTZWNvbmRzIHNlY29uZHMpCiB7Ci0gICAgbV9zdG9yZS0+c2V0TWluaW11bVRpbWVC
ZXR3ZWVlbkRhdGFSZWNvcmRzUmVtb3ZhbChzZWNvbmRzKTsKKyAgICBpZiAoIW1fc3RvcmUpCisg
ICAgICAgIHJldHVybjsKKworICAgIG1fc3RvcmUtPnNldE1pbmltdW1UaW1lQmV0d2VlbkRhdGFS
ZWNvcmRzUmVtb3ZhbChzZWNvbmRzKTsKIH0KIAogdm9pZCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0
aWNzTWFuYWdlcjo6c2V0R3JhbmRmYXRoZXJpbmdUaW1lKFNlY29uZHMgc2Vjb25kcykKIHsKLSAg
ICBtX3N0b3JlLT5zZXRNaW5pbXVtVGltZUJldHdlZWVuRGF0YVJlY29yZHNSZW1vdmFsKHNlY29u
ZHMpOworICAgIGlmICghbV9zdG9yZSkKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9zdG9yZS0+
c2V0R3JhbmRmYXRoZXJpbmdUaW1lKHNlY29uZHMpOwogfQogCiB2b2lkIFdlYlJlc291cmNlTG9h
ZFN0YXRpc3RpY3NNYW5hZ2VyOjpmaXJlRGF0YU1vZGlmaWNhdGlvbkhhbmRsZXIoKQogewotICAg
IC8vIEhlbHBlciBmdW5jdGlvbiB1c2VkIGJ5IHRlc3Rpbmcgc3lzdGVtLiBTaG91bGQgb25seSBi
ZSBjYWxsZWQgZnJvbSB0aGUgbWFpbiB0aHJlYWQuCi0gICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFp
bigpKTsKLSAgICBtX3F1ZXVlLT5kaXNwYXRjaChbdGhpc10gewotICAgICAgICBtX3N0b3JlLT5m
aXJlRGF0YU1vZGlmaWNhdGlvbkhhbmRsZXIoKTsKLSAgICB9KTsKKyAgICBpZiAoIW1fc3RvcmUp
CisgICAgICAgIHJldHVybjsKKworICAgIG1fc3RvcmUtPmZpcmVEYXRhTW9kaWZpY2F0aW9uSGFu
ZGxlcigpOwogfQogCiB2b2lkIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NNYW5hZ2VyOjpmaXJl
U2hvdWxkUGFydGl0aW9uQ29va2llc0hhbmRsZXIoKQogewotICAgIC8vIEhlbHBlciBmdW5jdGlv
biB1c2VkIGJ5IHRlc3Rpbmcgc3lzdGVtLiBTaG91bGQgb25seSBiZSBjYWxsZWQgZnJvbSB0aGUg
bWFpbiB0aHJlYWQuCi0gICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKLSAgICBtX3F1ZXVl
LT5kaXNwYXRjaChbdGhpc10gewotICAgICAgICBtX3N0b3JlLT5maXJlU2hvdWxkUGFydGl0aW9u
Q29va2llc0hhbmRsZXIoKTsKLSAgICB9KTsKKyAgICBpZiAoIW1fc3RvcmUpCisgICAgICAgIHJl
dHVybjsKKworICAgIG1fc3RvcmUtPmZpcmVTaG91bGRQYXJ0aXRpb25Db29raWVzSGFuZGxlcigp
OwogfQogCiB2b2lkIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NNYW5hZ2VyOjpmaXJlU2hvdWxk
UGFydGl0aW9uQ29va2llc0hhbmRsZXIoY29uc3QgVmVjdG9yPFN0cmluZz4mIGRvbWFpbnNUb1Jl
bW92ZSwgY29uc3QgVmVjdG9yPFN0cmluZz4mIGRvbWFpbnNUb0FkZCwgYm9vbCBjbGVhckZpcnN0
KQogewotICAgIC8vIEhlbHBlciBmdW5jdGlvbiB1c2VkIGJ5IHRlc3Rpbmcgc3lzdGVtLiBTaG91
bGQgb25seSBiZSBjYWxsZWQgZnJvbSB0aGUgbWFpbiB0aHJlYWQuCi0gICAgQVNTRVJUKFJ1bkxv
b3A6OmlzTWFpbigpKTsKLSAgICBtX3F1ZXVlLT5kaXNwYXRjaChbdGhpcywgZG9tYWluc1RvUmVt
b3ZlID0gQ3Jvc3NUaHJlYWRDb3BpZXI8VmVjdG9yPFN0cmluZz4+Ojpjb3B5KGRvbWFpbnNUb1Jl
bW92ZSksIGRvbWFpbnNUb0FkZCA9IENyb3NzVGhyZWFkQ29waWVyPFZlY3RvcjxTdHJpbmc+Pjo6
Y29weShkb21haW5zVG9BZGQpLCBjbGVhckZpcnN0XSB7Ci0gICAgICAgIG1fc3RvcmUtPmZpcmVT
aG91bGRQYXJ0aXRpb25Db29raWVzSGFuZGxlcihkb21haW5zVG9SZW1vdmUsIGRvbWFpbnNUb0Fk
ZCwgY2xlYXJGaXJzdCk7Ci0gICAgfSk7CisgICAgaWYgKCFtX3N0b3JlKQorICAgICAgICByZXR1
cm47CisKKyAgICBtX3N0b3JlLT5maXJlU2hvdWxkUGFydGl0aW9uQ29va2llc0hhbmRsZXIoZG9t
YWluc1RvUmVtb3ZlLCBkb21haW5zVG9BZGQsIGNsZWFyRmlyc3QpOwogfQogCiB2b2lkIFdlYlJl
c291cmNlTG9hZFN0YXRpc3RpY3NNYW5hZ2VyOjpmaXJlVGVsZW1ldHJ5SGFuZGxlcigpCiB7Ci0g
ICAgLy8gSGVscGVyIGZ1bmN0aW9uIHVzZWQgYnkgdGVzdGluZyBzeXN0ZW0uIFNob3VsZCBvbmx5
IGJlIGNhbGxlZCBmcm9tIHRoZSBtYWluIHRocmVhZC4KLSAgICBBU1NFUlQoUnVuTG9vcDo6aXNN
YWluKCkpOworICAgIGlmICghbV9zdG9yZSkKKyAgICAgICAgcmV0dXJuOworCiAgICAgbV9zdG9y
ZS0+ZmlyZVRlbGVtZXRyeUhhbmRsZXIoKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NNYW5hZ2VyLmggYi9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc01hbmFnZXIuaAppbmRl
eCBlYjg0NGY1NWEyNjcyYzBkMGZhMzhkZDk3ZDdiMDY3OTJiNGM4MjZjLi4yMmJiMjA4MTAwNWQ1
NDA3YzE3MDg2NTY0NTNmYTI5NjU1OWFmNmNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc01hbmFnZXIuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc01hbmFnZXIuaApAQCAt
MjksMjIgKzI5LDIzIEBACiAjaW5jbHVkZSA8d3RmL1NlY29uZHMuaD4KICNpbmNsdWRlIDx3dGYv
dGV4dC9XVEZTdHJpbmcuaD4KIAotbmFtZXNwYWNlIFdURiB7Ci1jbGFzcyBXb3JrUXVldWU7Ci19
Ci0KIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIFVSTDsKIH0KIAogbmFtZXNwYWNlIFdlYktp
dCB7CiAKLWNsYXNzIFJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTsKK2NsYXNzIFdlYlJlc291
cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTsKIAorLy8gRklYTUU6IFRoaXMgc2hvdWxkIHByb2JhYmx5
IGJlY29tZSBhbiBBUElPYmplY3QgZm9yIHRoZSBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3Rv
cmUuCiBjbGFzcyBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWFuYWdlciB7CiAgICAgZnJpZW5k
IGNsYXNzIE5ldmVyRGVzdHJveWVkPFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NNYW5hZ2VyPjsK
IHB1YmxpYzoKKyAgICAvLyBGSVhNRTogVGhpcyBzaG91bGQgbm90IGJlIGEgc2luZ2xldG9uLgog
ICAgIHN0YXRpYyBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWFuYWdlciYgc2hhcmVkKCk7Cisg
ICAgdm9pZCBzZXRTdGF0aXN0aWNzU3RvcmUoUmVmPFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NT
dG9yZT4mJik7CisKKyAgICB+V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc01hbmFnZXIoKTsKIAog
ICAgIHZvaWQgbG9nVXNlckludGVyYWN0aW9uKGNvbnN0IFdlYkNvcmU6OlVSTCYpOwogICAgIGJv
b2wgaGFzSGFkVXNlckludGVyYWN0aW9uKGNvbnN0IFdlYkNvcmU6OlVSTCYpOwpAQCAtNjIsNyAr
NjMsNyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHNldFRpbWVUb0xpdmVVc2VySW50ZXJhY3Rpb24o
U2Vjb25kcyk7CiAgICAgdm9pZCBzZXRUaW1lVG9MaXZlQ29va2llUGFydGl0aW9uRnJlZShTZWNv
bmRzKTsKLSAgICB2b2lkIHNldE1pbmltdW1UaW1lQmV0d2VlZW5EYXRhUmVjb3Jkc1JlbW92YWwo
U2Vjb25kcyk7CisgICAgdm9pZCBzZXRNaW5pbXVtVGltZUJldHdlZW5EYXRhUmVjb3Jkc1JlbW92
YWwoU2Vjb25kcyk7CiAgICAgdm9pZCBzZXRHcmFuZGZhdGhlcmluZ1RpbWUoU2Vjb25kcyk7CiAK
ICAgICB2b2lkIGZpcmVEYXRhTW9kaWZpY2F0aW9uSGFuZGxlcigpOwpAQCAtNzAsMTkgKzcxLDE0
IEBAIHB1YmxpYzoKICAgICB2b2lkIGZpcmVTaG91bGRQYXJ0aXRpb25Db29raWVzSGFuZGxlcihj
b25zdCBWZWN0b3I8U3RyaW5nPiYgZG9tYWluc1RvUmVtb3ZlLCBjb25zdCBWZWN0b3I8U3RyaW5n
PiYgZG9tYWluc1RvQWRkLCBib29sIGNsZWFyRmlyc3QpOwogICAgIHZvaWQgZmlyZVRlbGVtZXRy
eUhhbmRsZXIoKTsKIAotICAgIHZvaWQgc2V0U3RhdGlzdGljc1N0b3JlKFJlZjxSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzU3RvcmU+JiYpOwotICAgIHZvaWQgc2V0U3RhdGlzdGljc1F1ZXVlKFJlZjxX
VEY6OldvcmtRdWV1ZT4mJik7CiAgICAgdm9pZCBjbGVhckluTWVtb3J5U3RvcmUoKTsKICAgICB2
b2lkIGNsZWFySW5NZW1vcnlBbmRQZXJzaXN0ZW50U3RvcmUoKTsKICAgICB2b2lkIGNsZWFySW5N
ZW1vcnlBbmRQZXJzaXN0ZW50U3RvcmUoc3RkOjpjaHJvbm86OnN5c3RlbV9jbG9jazo6dGltZV9w
b2ludCBtb2RpZmllZFNpbmNlKTsKIAotI2lmIFBMQVRGT1JNKENPQ09BKQotICAgIHZvaWQgcmVn
aXN0ZXJVc2VyRGVmYXVsdHNJZk5lZWRlZCgpOwotI2VuZGlmCi0KIHByaXZhdGU6Ci0gICAgUmVm
UHRyPFJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZT4gbV9zdG9yZTsKLSAgICBSZWZQdHI8V1RG
OjpXb3JrUXVldWU+IG1fcXVldWU7CisgICAgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc01hbmFn
ZXIoKTsKKworICAgIFJlZlB0cjxXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU+IG1fc3Rv
cmU7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuY3BwIGIvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5jcHAKaW5k
ZXggMzllYTQyZDYxOGVlYjBiODA5NWRmMTkxOTgyYTQ5OTFmMDdhMGJjYy4uNmMzZDAwZWUxODlh
OTdlOTYxYTk3ZDU2NGQ4YTlkYmQxZWE1MzZhYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5jcHAKKysrIGIvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5jcHAKQEAg
LTU0LDYgKzU0LDExIEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCiBuYW1lc3BhY2UgV2Vi
S2l0IHsKIAordGVtcGxhdGU8dHlwZW5hbWUgVD4gc3RhdGljIGlubGluZSBTdHJpbmcgcHJpbWFy
eURvbWFpbihjb25zdCBUJiB2YWx1ZSkKK3sKKyAgICByZXR1cm4gUmVzb3VyY2VMb2FkU3RhdGlz
dGljczo6cHJpbWFyeURvbWFpbih2YWx1ZSk7Cit9CisKIHN0YXRpYyBib29sIG5vdGlmeVBhZ2Vz
V2hlbkRhdGFSZWNvcmRzV2VyZVNjYW5uZWQgPSBmYWxzZTsKIHN0YXRpYyBib29sIHNob3VsZENs
YXNzaWZ5UmVzb3VyY2VzQmVmb3JlRGF0YVJlY29yZHNSZW1vdmFsID0gdHJ1ZTsKIHN0YXRpYyBh
dXRvIHNob3VsZFN1Ym1pdFRlbGVtZXRyeSA9IHRydWU7CkBAIC0yMDksOCArMjE0LDcgQEAgdm9p
ZCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OnJlZ2lzdGVyU2hhcmVkUmVzb3VyY2VM
b2FkT2JzZXJ2ZXIoKQogewogICAgIEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7CiAgICAgCi0g
ICAgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc01hbmFnZXI6OnNoYXJlZCgpLnNldFN0YXRpc3Rp
Y3NTdG9yZShtX3Jlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5jb3B5UmVmKCkpOwotICAgIFdl
YlJlc291cmNlTG9hZFN0YXRpc3RpY3NNYW5hZ2VyOjpzaGFyZWQoKS5zZXRTdGF0aXN0aWNzUXVl
dWUobV9zdGF0aXN0aWNzUXVldWUuY29weVJlZigpKTsKKyAgICBXZWJSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzTWFuYWdlcjo6c2hhcmVkKCkuc2V0U3RhdGlzdGljc1N0b3JlKCp0aGlzKTsKICAgICBt
X3Jlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS0+c2V0Tm90aWZpY2F0aW9uQ2FsbGJhY2soW3Ro
aXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKV0gewogICAgICAgICBpZiAobV9yZXNv
dXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUtPmlzRW1wdHkoKSkKICAgICAgICAgICAgIHJldHVybjsK
QEAgLTIzMiwxMSArMjM2LDEyIEBAIHZvaWQgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3Jl
OjpyZWdpc3RlclNoYXJlZFJlc291cmNlTG9hZE9ic2VydmVyKCkKICAgICBtX3Jlc291cmNlTG9h
ZFN0YXRpc3RpY3NTdG9yZS0+c2V0RmlyZVRlbGVtZXRyeUNhbGxiYWNrKFt0aGlzLCBwcm90ZWN0
ZWRUaGlzID0gbWFrZVJlZigqdGhpcyldIHsKICAgICAgICAgc3VibWl0VGVsZW1ldHJ5KCk7CiAg
ICAgfSk7CisKICNpZiBQTEFURk9STShDT0NPQSkKLSAgICBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0
aWNzTWFuYWdlcjo6c2hhcmVkKCkucmVnaXN0ZXJVc2VyRGVmYXVsdHNJZk5lZWRlZCgpOworICAg
IHJlZ2lzdGVyVXNlckRlZmF1bHRzSWZOZWVkZWQoKTsKICNlbmRpZgogfQotICAgIAorCiB2b2lk
IFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6cmVnaXN0ZXJTaGFyZWRSZXNvdXJjZUxv
YWRPYnNlcnZlcihXVEY6OkZ1bmN0aW9uPHZvaWQoY29uc3QgVmVjdG9yPFN0cmluZz4mIGRvbWFp
bnNUb1JlbW92ZSwgY29uc3QgVmVjdG9yPFN0cmluZz4mIGRvbWFpbnNUb0FkZCwgYm9vbCBjbGVh
ckZpcnN0KT4mJiBzaG91bGRQYXJ0aXRpb25Db29raWVzRm9yRG9tYWluc0hhbmRsZXIpCiB7CiAg
ICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKQEAgLTUwNSw1ICs1MTAsMjA3IEBAIHZvaWQg
V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpzdWJtaXRUZWxlbWV0cnkoKQogICAgICAg
ICBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzVGVsZW1ldHJ5OjpjYWxjdWxhdGVBbmRTdWJtaXQo
Y29yZVN0b3JlKCkpOwogICAgIH0pOwogfQorCit2b2lkIFdlYlJlc291cmNlTG9hZFN0YXRpc3Rp
Y3NTdG9yZTo6bG9nVXNlckludGVyYWN0aW9uKGNvbnN0IFVSTCYgdXJsKQoreworICAgIGlmICh1
cmwuaXNCbGFua1VSTCgpIHx8IHVybC5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybjsKKworICAg
IG1fc3RhdGlzdGljc1F1ZXVlLT5kaXNwYXRjaChbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VS
ZWYoKnRoaXMpLCBwcmltYXJ5RG9tYWluU3RyaW5nID0gcHJpbWFyeURvbWFpbih1cmwpLmlzb2xh
dGVkQ29weSgpXSB7CisgICAgICAgIHsKKyAgICAgICAgICAgIGF1dG8gbG9ja2VyID0gaG9sZExv
Y2soY29yZVN0b3JlKCkuc3RhdGlzdGljc0xvY2soKSk7CisgICAgICAgICAgICBhdXRvJiBzdGF0
aXN0aWNzID0gY29yZVN0b3JlKCkuZW5zdXJlUmVzb3VyY2VTdGF0aXN0aWNzRm9yUHJpbWFyeURv
bWFpbihwcmltYXJ5RG9tYWluU3RyaW5nKTsKKyAgICAgICAgICAgIHN0YXRpc3RpY3MuaGFkVXNl
ckludGVyYWN0aW9uID0gdHJ1ZTsKKyAgICAgICAgICAgIHN0YXRpc3RpY3MubW9zdFJlY2VudFVz
ZXJJbnRlcmFjdGlvblRpbWUgPSBXYWxsVGltZTo6bm93KCk7CisgICAgICAgIH0KKworICAgICAg
ICBjb3JlU3RvcmUoKS5maXJlU2hvdWxkUGFydGl0aW9uQ29va2llc0hhbmRsZXIoeyBwcmltYXJ5
RG9tYWluU3RyaW5nIH0sIHsgfSwgZmFsc2UpOworICAgIH0pOworfQorCit2b2lkIFdlYlJlc291
cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6Y2xlYXJVc2VySW50ZXJhY3Rpb24oY29uc3QgVVJMJiB1
cmwpCit7CisgICAgaWYgKHVybC5pc0JsYW5rVVJMKCkgfHwgdXJsLmlzRW1wdHkoKSkKKyAgICAg
ICAgcmV0dXJuOworCisgICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhjb3JlU3RvcmUoKS5zdGF0
aXN0aWNzTG9jaygpKTsKKyAgICBhdXRvJiBzdGF0aXN0aWNzID0gY29yZVN0b3JlKCkuZW5zdXJl
UmVzb3VyY2VTdGF0aXN0aWNzRm9yUHJpbWFyeURvbWFpbihwcmltYXJ5RG9tYWluKHVybCkpOwor
ICAgIHN0YXRpc3RpY3MuaGFkVXNlckludGVyYWN0aW9uID0gZmFsc2U7CisgICAgc3RhdGlzdGlj
cy5tb3N0UmVjZW50VXNlckludGVyYWN0aW9uVGltZSA9IHsgfTsKK30KKworYm9vbCBXZWJSZXNv
dXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6Omhhc0hhZFVzZXJJbnRlcmFjdGlvbihjb25zdCBVUkwm
IHVybCkKK3sKKyAgICBpZiAodXJsLmlzQmxhbmtVUkwoKSB8fCB1cmwuaXNFbXB0eSgpKQorICAg
ICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKGNvcmVTdG9y
ZSgpLnN0YXRpc3RpY3NMb2NrKCkpOworICAgIC8vIEZJWE1FOiBXaHkgaXMgdGhpcyBwb3RlbnRp
YWxseSBjcmVhdGluZyBhIHN0b3JlIGVudHJ5IGp1c3QgZm9yIHF1ZXJ5aW5nPworICAgIGF1dG8m
IHN0YXRpc3RpY3MgPSBjb3JlU3RvcmUoKS5lbnN1cmVSZXNvdXJjZVN0YXRpc3RpY3NGb3JQcmlt
YXJ5RG9tYWluKHByaW1hcnlEb21haW4odXJsKSk7CisgICAgcmV0dXJuIGNvcmVTdG9yZSgpLmhh
c0hhZFJlY2VudFVzZXJJbnRlcmFjdGlvbihzdGF0aXN0aWNzKTsKK30KKwordm9pZCBXZWJSZXNv
dXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OnNldFByZXZhbGVudFJlc291cmNlKGNvbnN0IFVSTCYg
dXJsKQoreworICAgIGlmICh1cmwuaXNCbGFua1VSTCgpIHx8IHVybC5pc0VtcHR5KCkpCisgICAg
ICAgIHJldHVybjsKKworICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2soY29yZVN0b3JlKCkuc3Rh
dGlzdGljc0xvY2soKSk7CisgICAgYXV0byYgc3RhdGlzdGljcyA9IGNvcmVTdG9yZSgpLmVuc3Vy
ZVJlc291cmNlU3RhdGlzdGljc0ZvclByaW1hcnlEb21haW4ocHJpbWFyeURvbWFpbih1cmwpKTsK
KyAgICBzdGF0aXN0aWNzLmlzUHJldmFsZW50UmVzb3VyY2UgPSB0cnVlOworfQorCitib29sIFdl
YlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6aXNQcmV2YWxlbnRSZXNvdXJjZShjb25zdCBV
UkwmIHVybCkKK3sKKyAgICBpZiAodXJsLmlzQmxhbmtVUkwoKSB8fCB1cmwuaXNFbXB0eSgpKQor
ICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKGNvcmVT
dG9yZSgpLnN0YXRpc3RpY3NMb2NrKCkpOworICAgIC8vIEZJWE1FOiBXaHkgaXMgdGhpcyBwb3Rl
bnRpYWxseSBjcmVhdGluZyBhIHN0b3JlIGVudHJ5IGp1c3QgZm9yIHF1ZXJ5aW5nPworICAgIGF1
dG8mIHN0YXRpc3RpY3MgPSBjb3JlU3RvcmUoKS5lbnN1cmVSZXNvdXJjZVN0YXRpc3RpY3NGb3JQ
cmltYXJ5RG9tYWluKHByaW1hcnlEb21haW4odXJsKSk7CisgICAgcmV0dXJuIHN0YXRpc3RpY3Mu
aXNQcmV2YWxlbnRSZXNvdXJjZTsKK30KKwordm9pZCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNz
U3RvcmU6OmNsZWFyUHJldmFsZW50UmVzb3VyY2UoY29uc3QgVVJMJiB1cmwpCit7CisgICAgaWYg
KHVybC5pc0JsYW5rVVJMKCkgfHwgdXJsLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuOworCisg
ICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhjb3JlU3RvcmUoKS5zdGF0aXN0aWNzTG9jaygpKTsK
KyAgICBhdXRvJiBzdGF0aXN0aWNzID0gY29yZVN0b3JlKCkuZW5zdXJlUmVzb3VyY2VTdGF0aXN0
aWNzRm9yUHJpbWFyeURvbWFpbihwcmltYXJ5RG9tYWluKHVybCkpOworICAgIHN0YXRpc3RpY3Mu
aXNQcmV2YWxlbnRSZXNvdXJjZSA9IGZhbHNlOworfQorCit2b2lkIFdlYlJlc291cmNlTG9hZFN0
YXRpc3RpY3NTdG9yZTo6c2V0R3JhbmRmYXRoZXJlZChjb25zdCBVUkwmIHVybCwgYm9vbCB2YWx1
ZSkKK3sKKyAgICBpZiAodXJsLmlzQmxhbmtVUkwoKSB8fCB1cmwuaXNFbXB0eSgpKQorICAgICAg
ICByZXR1cm47CisKKyAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKGNvcmVTdG9yZSgpLnN0YXRp
c3RpY3NMb2NrKCkpOworICAgIGF1dG8mIHN0YXRpc3RpY3MgPSBjb3JlU3RvcmUoKS5lbnN1cmVS
ZXNvdXJjZVN0YXRpc3RpY3NGb3JQcmltYXJ5RG9tYWluKHByaW1hcnlEb21haW4odXJsKSk7Cisg
ICAgc3RhdGlzdGljcy5ncmFuZGZhdGhlcmVkID0gdmFsdWU7Cit9CisKK2Jvb2wgV2ViUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc1N0b3JlOjppc0dyYW5kZmF0aGVyZWQoY29uc3QgVVJMJiB1cmwpCit7
CisgICAgaWYgKHVybC5pc0JsYW5rVVJMKCkgfHwgdXJsLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0
dXJuIGZhbHNlOworCisgICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhjb3JlU3RvcmUoKS5zdGF0
aXN0aWNzTG9jaygpKTsKKyAgICAvLyBGSVhNRTogV2h5IGlzIHRoaXMgcG90ZW50aWFsbHkgY3Jl
YXRpbmcgYSBzdG9yZSBlbnRyeSBqdXN0IGZvciBxdWVyeWluZz8KKyAgICBhdXRvJiBzdGF0aXN0
aWNzID0gY29yZVN0b3JlKCkuZW5zdXJlUmVzb3VyY2VTdGF0aXN0aWNzRm9yUHJpbWFyeURvbWFp
bihwcmltYXJ5RG9tYWluKHVybCkpOworICAgIHJldHVybiBzdGF0aXN0aWNzLmdyYW5kZmF0aGVy
ZWQ7Cit9CisKK3ZvaWQgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpzZXRTdWJmcmFt
ZVVuZGVyVG9wRnJhbWVPcmlnaW4oY29uc3QgVVJMJiBzdWJmcmFtZSwgY29uc3QgVVJMJiB0b3BG
cmFtZSkKK3sKKyAgICBpZiAoc3ViZnJhbWUuaXNCbGFua1VSTCgpIHx8IHN1YmZyYW1lLmlzRW1w
dHkoKSB8fCB0b3BGcmFtZS5pc0JsYW5rVVJMKCkgfHwgdG9wRnJhbWUuaXNFbXB0eSgpKQorICAg
ICAgICByZXR1cm47CisKKyAgICBtX3N0YXRpc3RpY3NRdWV1ZS0+ZGlzcGF0Y2goW3RoaXMsIHBy
b3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgcHJpbWFyeVRvcEZyYW1lRG9tYWluU3RyaW5n
ID0gcHJpbWFyeURvbWFpbih0b3BGcmFtZSkuaXNvbGF0ZWRDb3B5KCksIHByaW1hcnlTdWJGcmFt
ZURvbWFpblN0cmluZyA9IHByaW1hcnlEb21haW4oc3ViZnJhbWUpLmlzb2xhdGVkQ29weSgpXSB7
CisgICAgICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2soY29yZVN0b3JlKCkuc3RhdGlzdGljc0xv
Y2soKSk7CisgICAgICAgIGF1dG8mIHN0YXRpc3RpY3MgPSBjb3JlU3RvcmUoKS5lbnN1cmVSZXNv
dXJjZVN0YXRpc3RpY3NGb3JQcmltYXJ5RG9tYWluKHByaW1hcnlTdWJGcmFtZURvbWFpblN0cmlu
Zyk7CisgICAgICAgIHN0YXRpc3RpY3Muc3ViZnJhbWVVbmRlclRvcEZyYW1lT3JpZ2lucy5hZGQo
cHJpbWFyeVRvcEZyYW1lRG9tYWluU3RyaW5nKTsKKyAgICB9KTsKK30KKwordm9pZCBXZWJSZXNv
dXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OnNldFN1YnJlc291cmNlVW5kZXJUb3BGcmFtZU9yaWdp
bihjb25zdCBVUkwmIHN1YnJlc291cmNlLCBjb25zdCBVUkwmIHRvcEZyYW1lKQoreworICAgIGlm
IChzdWJyZXNvdXJjZS5pc0JsYW5rVVJMKCkgfHwgc3VicmVzb3VyY2UuaXNFbXB0eSgpIHx8IHRv
cEZyYW1lLmlzQmxhbmtVUkwoKSB8fCB0b3BGcmFtZS5pc0VtcHR5KCkpCisgICAgICAgIHJldHVy
bjsKKworICAgIG1fc3RhdGlzdGljc1F1ZXVlLT5kaXNwYXRjaChbdGhpcywgcHJvdGVjdGVkVGhp
cyA9IG1ha2VSZWYoKnRoaXMpLCBwcmltYXJ5VG9wRnJhbWVEb21haW5TdHJpbmcgPSBwcmltYXJ5
RG9tYWluKHRvcEZyYW1lKS5pc29sYXRlZENvcHkoKSwgcHJpbWFyeVN1YnJlc291cmNlRG9tYWlu
U3RyaW5nID0gcHJpbWFyeURvbWFpbihzdWJyZXNvdXJjZSkuaXNvbGF0ZWRDb3B5KCldIHsKKyAg
ICAgICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhjb3JlU3RvcmUoKS5zdGF0aXN0aWNzTG9jaygp
KTsKKyAgICAgICAgYXV0byYgc3RhdGlzdGljcyA9IGNvcmVTdG9yZSgpLmVuc3VyZVJlc291cmNl
U3RhdGlzdGljc0ZvclByaW1hcnlEb21haW4ocHJpbWFyeVN1YnJlc291cmNlRG9tYWluU3RyaW5n
KTsKKyAgICAgICAgc3RhdGlzdGljcy5zdWJyZXNvdXJjZVVuZGVyVG9wRnJhbWVPcmlnaW5zLmFk
ZChwcmltYXJ5VG9wRnJhbWVEb21haW5TdHJpbmcpOworICAgIH0pOworfQorCit2b2lkIFdlYlJl
c291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6c2V0U3VicmVzb3VyY2VVbmlxdWVSZWRpcmVjdFRv
KGNvbnN0IFVSTCYgc3VicmVzb3VyY2UsIGNvbnN0IFVSTCYgaG9zdE5hbWVSZWRpcmVjdGVkVG8p
Cit7CisgICAgaWYgKHN1YnJlc291cmNlLmlzQmxhbmtVUkwoKSB8fCBzdWJyZXNvdXJjZS5pc0Vt
cHR5KCkgfHwgaG9zdE5hbWVSZWRpcmVjdGVkVG8uaXNCbGFua1VSTCgpIHx8IGhvc3ROYW1lUmVk
aXJlY3RlZFRvLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9zdGF0aXN0aWNz
UXVldWUtPmRpc3BhdGNoKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIHBy
aW1hcnlSZWRpcmVjdERvbWFpblN0cmluZyA9IHByaW1hcnlEb21haW4oaG9zdE5hbWVSZWRpcmVj
dGVkVG8pLmlzb2xhdGVkQ29weSgpLCBwcmltYXJ5U3VicmVzb3VyY2VEb21haW5TdHJpbmcgPSBw
cmltYXJ5RG9tYWluKHN1YnJlc291cmNlKS5pc29sYXRlZENvcHkoKV0geworICAgICAgICBhdXRv
IGxvY2tlciA9IGhvbGRMb2NrKGNvcmVTdG9yZSgpLnN0YXRpc3RpY3NMb2NrKCkpOworICAgICAg
ICBhdXRvJiBzdGF0aXN0aWNzID0gY29yZVN0b3JlKCkuZW5zdXJlUmVzb3VyY2VTdGF0aXN0aWNz
Rm9yUHJpbWFyeURvbWFpbihwcmltYXJ5U3VicmVzb3VyY2VEb21haW5TdHJpbmcpOworICAgICAg
ICBzdGF0aXN0aWNzLnN1YnJlc291cmNlVW5pcXVlUmVkaXJlY3RzVG8uYWRkKHByaW1hcnlSZWRp
cmVjdERvbWFpblN0cmluZyk7CisgICAgfSk7Cit9CisKK3ZvaWQgV2ViUmVzb3VyY2VMb2FkU3Rh
dGlzdGljc1N0b3JlOjpmaXJlRGF0YU1vZGlmaWNhdGlvbkhhbmRsZXIoKQoreworICAgIC8vIEhl
bHBlciBmdW5jdGlvbiB1c2VkIGJ5IHRlc3Rpbmcgc3lzdGVtLiBTaG91bGQgb25seSBiZSBjYWxs
ZWQgZnJvbSB0aGUgbWFpbiB0aHJlYWQuCisgICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsK
KyAgICBtX3N0YXRpc3RpY3NRdWV1ZS0+ZGlzcGF0Y2goW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBt
YWtlUmVmKCp0aGlzKV0geworICAgICAgICBjb3JlU3RvcmUoKS5maXJlRGF0YU1vZGlmaWNhdGlv
bkhhbmRsZXIoKTsKKyAgICB9KTsKK30KKwordm9pZCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNz
U3RvcmU6OmZpcmVTaG91bGRQYXJ0aXRpb25Db29raWVzSGFuZGxlcigpCit7CisgICAgLy8gSGVs
cGVyIGZ1bmN0aW9uIHVzZWQgYnkgdGVzdGluZyBzeXN0ZW0uIFNob3VsZCBvbmx5IGJlIGNhbGxl
ZCBmcm9tIHRoZSBtYWluIHRocmVhZC4KKyAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOwor
ICAgIG1fc3RhdGlzdGljc1F1ZXVlLT5kaXNwYXRjaChbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1h
a2VSZWYoKnRoaXMpXSB7CisgICAgICAgIGNvcmVTdG9yZSgpLmZpcmVTaG91bGRQYXJ0aXRpb25D
b29raWVzSGFuZGxlcigpOworICAgIH0pOworfQorCit2b2lkIFdlYlJlc291cmNlTG9hZFN0YXRp
c3RpY3NTdG9yZTo6ZmlyZVNob3VsZFBhcnRpdGlvbkNvb2tpZXNIYW5kbGVyKGNvbnN0IFZlY3Rv
cjxTdHJpbmc+JiBkb21haW5zVG9SZW1vdmUsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBkb21haW5z
VG9BZGQsIGJvb2wgY2xlYXJGaXJzdCkKK3sKKyAgICAvLyBIZWxwZXIgZnVuY3Rpb24gdXNlZCBi
eSB0ZXN0aW5nIHN5c3RlbS4gU2hvdWxkIG9ubHkgYmUgY2FsbGVkIGZyb20gdGhlIG1haW4gdGhy
ZWFkLgorICAgIEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7CisgICAgbV9zdGF0aXN0aWNzUXVl
dWUtPmRpc3BhdGNoKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIGRvbWFp
bnNUb1JlbW92ZSA9IENyb3NzVGhyZWFkQ29waWVyPFZlY3RvcjxTdHJpbmc+Pjo6Y29weShkb21h
aW5zVG9SZW1vdmUpLCBkb21haW5zVG9BZGQgPSBDcm9zc1RocmVhZENvcGllcjxWZWN0b3I8U3Ry
aW5nPj46OmNvcHkoZG9tYWluc1RvQWRkKSwgY2xlYXJGaXJzdF0geworICAgICAgICBjb3JlU3Rv
cmUoKS5maXJlU2hvdWxkUGFydGl0aW9uQ29va2llc0hhbmRsZXIoZG9tYWluc1RvUmVtb3ZlLCBk
b21haW5zVG9BZGQsIGNsZWFyRmlyc3QpOworICAgIH0pOworfQorCit2b2lkIFdlYlJlc291cmNl
TG9hZFN0YXRpc3RpY3NTdG9yZTo6ZmlyZVRlbGVtZXRyeUhhbmRsZXIoKQoreworICAgIC8vIEhl
bHBlciBmdW5jdGlvbiB1c2VkIGJ5IHRlc3Rpbmcgc3lzdGVtLiBTaG91bGQgb25seSBiZSBjYWxs
ZWQgZnJvbSB0aGUgbWFpbiB0aHJlYWQuCisgICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsK
KyAgICBjb3JlU3RvcmUoKS5maXJlVGVsZW1ldHJ5SGFuZGxlcigpOworfQorCit2b2lkIFdlYlJl
c291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6Y2xlYXJJbk1lbW9yeSgpCit7CisgICAgbV9zdGF0
aXN0aWNzUXVldWUtPmRpc3BhdGNoKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhp
cyldIHsKKyAgICAgICAgY29yZVN0b3JlKCkuY2xlYXJJbk1lbW9yeSgpOworICAgIH0pOworfQor
Cit2b2lkIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6Y2xlYXJJbk1lbW9yeUFuZFBl
cnNpc3RlbnQoKQoreworICAgIG1fc3RhdGlzdGljc1F1ZXVlLT5kaXNwYXRjaChbdGhpcywgcHJv
dGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpXSB7CisgICAgICAgIGNvcmVTdG9yZSgpLmNsZWFy
SW5NZW1vcnlBbmRQZXJzaXN0ZW50KCk7CisgICAgfSk7Cit9CisKK3ZvaWQgV2ViUmVzb3VyY2VM
b2FkU3RhdGlzdGljc1N0b3JlOjpjbGVhckluTWVtb3J5QW5kUGVyc2lzdGVudChzdGQ6OmNocm9u
bzo6c3lzdGVtX2Nsb2NrOjp0aW1lX3BvaW50IG1vZGlmaWVkU2luY2UpCit7CisgICAgLy8gRm9y
IG5vdywgYmUgY29uc2VydmF0aXZlIGFuZCBjbGVhciBldmVyeXRoaW5nIHJlZ2FyZGxlc3Mgb2Yg
bW9kaWZpZWRTaW5jZS4KKyAgICBVTlVTRURfUEFSQU0obW9kaWZpZWRTaW5jZSk7CisgICAgY2xl
YXJJbk1lbW9yeUFuZFBlcnNpc3RlbnQoKTsKK30KKwordm9pZCBXZWJSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzU3RvcmU6OnNldFRpbWVUb0xpdmVVc2VySW50ZXJhY3Rpb24oU2Vjb25kcyBzZWNvbmRz
KQoreworICAgIGNvcmVTdG9yZSgpLnNldFRpbWVUb0xpdmVVc2VySW50ZXJhY3Rpb24oc2Vjb25k
cyk7Cit9CisKK3ZvaWQgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpzZXRUaW1lVG9M
aXZlQ29va2llUGFydGl0aW9uRnJlZShTZWNvbmRzIHNlY29uZHMpCit7CisgICAgY29yZVN0b3Jl
KCkuc2V0VGltZVRvTGl2ZUNvb2tpZVBhcnRpdGlvbkZyZWUoc2Vjb25kcyk7Cit9CisKK3ZvaWQg
V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpzZXRNaW5pbXVtVGltZUJldHdlZW5EYXRh
UmVjb3Jkc1JlbW92YWwoU2Vjb25kcyBzZWNvbmRzKQoreworICAgIGNvcmVTdG9yZSgpLnNldE1p
bmltdW1UaW1lQmV0d2VlbkRhdGFSZWNvcmRzUmVtb3ZhbChzZWNvbmRzKTsKK30KKwordm9pZCBX
ZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OnNldEdyYW5kZmF0aGVyaW5nVGltZShTZWNv
bmRzIHNlY29uZHMpCit7CisgICAgY29yZVN0b3JlKCkuc2V0R3JhbmRmYXRoZXJpbmdUaW1lKHNl
Y29uZHMpOworfQogICAgIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmggYi9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmgK
aW5kZXggMzNmZWQ5MjBjN2E3M2FiZjUzMDQ3OGEwZDIwYWFkZmY2OTE0Nzk2NS4uMjQ1NWJiNzRh
M2Y5NDZmZjVhNzk4MTA5YjMwYTE2MWFmODEzYzNlNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuaApAQCAt
NTksNyArNTksNiBAQCBwdWJsaWM6CiAgICAgc3RhdGljIFJlZjxXZWJSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzU3RvcmU+IGNyZWF0ZShjb25zdCBTdHJpbmcmKTsKICAgICBzdGF0aWMgdm9pZCBzZXRO
b3RpZnlQYWdlc1doZW5EYXRhUmVjb3Jkc1dlcmVTY2FubmVkKGJvb2wpOwogICAgIHN0YXRpYyB2
b2lkIHNldFNob3VsZENsYXNzaWZ5UmVzb3VyY2VzQmVmb3JlRGF0YVJlY29yZHNSZW1vdmFsKGJv
b2wpOwotICAgIHN0YXRpYyB2b2lkIHNldE1pbmltdW1UaW1lQmV0d2VlZW5EYXRhUmVjb3Jkc1Jl
bW92YWwoU2Vjb25kcyk7CiAgICAgc3RhdGljIHZvaWQgc2V0U2hvdWxkU3VibWl0VGVsZW1ldHJ5
KGJvb2wpOwogICAgIHZpcnR1YWwgfldlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZSgpOwog
ICAgIApAQCAtNzYsMTIgKzc1LDM3IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgcmVhZERhdGFGcm9t
RGlza0lmTmVlZGVkKCk7CiAKLSAgICBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUmIGNvcmVT
dG9yZSgpIHsgcmV0dXJuIG1fcmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmdldCgpOyB9Ci0g
ICAgY29uc3QgUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlJiBjb3JlU3RvcmUoKSBjb25zdCB7
IHJldHVybiBtX3Jlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5nZXQoKTsgfQorICAgIHZvaWQg
bG9nVXNlckludGVyYWN0aW9uKGNvbnN0IFdlYkNvcmU6OlVSTCYpOworICAgIHZvaWQgY2xlYXJV
c2VySW50ZXJhY3Rpb24oY29uc3QgV2ViQ29yZTo6VVJMJik7CisgICAgYm9vbCBoYXNIYWRVc2Vy
SW50ZXJhY3Rpb24oY29uc3QgV2ViQ29yZTo6VVJMJik7CisgICAgdm9pZCBzZXRQcmV2YWxlbnRS
ZXNvdXJjZShjb25zdCBXZWJDb3JlOjpVUkwmKTsKKyAgICBib29sIGlzUHJldmFsZW50UmVzb3Vy
Y2UoY29uc3QgV2ViQ29yZTo6VVJMJik7CisgICAgdm9pZCBjbGVhclByZXZhbGVudFJlc291cmNl
KGNvbnN0IFdlYkNvcmU6OlVSTCYpOworICAgIHZvaWQgc2V0R3JhbmRmYXRoZXJlZChjb25zdCBX
ZWJDb3JlOjpVUkwmLCBib29sKTsKKyAgICBib29sIGlzR3JhbmRmYXRoZXJlZChjb25zdCBXZWJD
b3JlOjpVUkwmKTsKKyAgICB2b2lkIHNldFN1YmZyYW1lVW5kZXJUb3BGcmFtZU9yaWdpbihjb25z
dCBXZWJDb3JlOjpVUkwmIHN1YmZyYW1lLCBjb25zdCBXZWJDb3JlOjpVUkwmIHRvcEZyYW1lKTsK
KyAgICB2b2lkIHNldFN1YnJlc291cmNlVW5kZXJUb3BGcmFtZU9yaWdpbihjb25zdCBXZWJDb3Jl
OjpVUkwmIHN1YnJlc291cmNlLCBjb25zdCBXZWJDb3JlOjpVUkwmIHRvcEZyYW1lKTsKKyAgICB2
b2lkIHNldFN1YnJlc291cmNlVW5pcXVlUmVkaXJlY3RUbyhjb25zdCBXZWJDb3JlOjpVUkwmIHN1
YnJlc291cmNlLCBjb25zdCBXZWJDb3JlOjpVUkwmIGhvc3ROYW1lUmVkaXJlY3RlZFRvKTsKKyAg
ICB2b2lkIGZpcmVEYXRhTW9kaWZpY2F0aW9uSGFuZGxlcigpOworICAgIHZvaWQgZmlyZVNob3Vs
ZFBhcnRpdGlvbkNvb2tpZXNIYW5kbGVyKCk7CisgICAgdm9pZCBmaXJlU2hvdWxkUGFydGl0aW9u
Q29va2llc0hhbmRsZXIoY29uc3QgVmVjdG9yPFN0cmluZz4mIGRvbWFpbnNUb1JlbW92ZSwgY29u
c3QgVmVjdG9yPFN0cmluZz4mIGRvbWFpbnNUb0FkZCwgYm9vbCBjbGVhckZpcnN0KTsKKworICAg
IHZvaWQgZmlyZVRlbGVtZXRyeUhhbmRsZXIoKTsKKyAgICB2b2lkIGNsZWFySW5NZW1vcnkoKTsK
KyAgICB2b2lkIGNsZWFySW5NZW1vcnlBbmRQZXJzaXN0ZW50KCk7CisgICAgdm9pZCBjbGVhcklu
TWVtb3J5QW5kUGVyc2lzdGVudChzdGQ6OmNocm9ubzo6c3lzdGVtX2Nsb2NrOjp0aW1lX3BvaW50
IG1vZGlmaWVkU2luY2UpOworCisgICAgdm9pZCBzZXRUaW1lVG9MaXZlVXNlckludGVyYWN0aW9u
KFNlY29uZHMpOworICAgIHZvaWQgc2V0VGltZVRvTGl2ZUNvb2tpZVBhcnRpdGlvbkZyZWUoU2Vj
b25kcyk7CisgICAgdm9pZCBzZXRNaW5pbXVtVGltZUJldHdlZW5EYXRhUmVjb3Jkc1JlbW92YWwo
U2Vjb25kcyk7CisgICAgdm9pZCBzZXRHcmFuZGZhdGhlcmluZ1RpbWUoU2Vjb25kcyk7CiAKIHBy
aXZhdGU6CiAgICAgZXhwbGljaXQgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlKGNvbnN0
IFN0cmluZyYpOwogCisgICAgUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlJiBjb3JlU3RvcmUo
KSB7IHJldHVybiBtX3Jlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5nZXQoKTsgfQorICAgIGNv
bnN0IFJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZSYgY29yZVN0b3JlKCkgY29uc3QgeyByZXR1
cm4gbV9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuZ2V0KCk7IH0KKwogICAgIHZvaWQgcHJv
Y2Vzc1N0YXRpc3RpY3NBbmREYXRhUmVjb3JkcygpOwogCiAgICAgdm9pZCBjbGFzc2lmeVJlc291
cmNlKFdlYkNvcmU6OlJlc291cmNlTG9hZFN0YXRpc3RpY3MmKTsKQEAgLTEwNyw2ICsxMzEsMTAg
QEAgcHJpdmF0ZToKICAgICB2b2lkIHRlbGVtZXRyeVRpbWVyRmlyZWQoKTsKICAgICB2b2lkIHN1
Ym1pdFRlbGVtZXRyeSgpOwogCisjaWYgUExBVEZPUk0oQ09DT0EpCisgICAgdm9pZCByZWdpc3Rl
clVzZXJEZWZhdWx0c0lmTmVlZGVkKCk7CisjZW5kaWYKKwogICAgIFJlZjxSZXNvdXJjZUxvYWRT
dGF0aXN0aWNzU3RvcmU+IG1fcmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOwogI2lmIEhBVkUo
Q09SRV9QUkVESUNUSU9OKQogICAgIFJlc291cmNlTG9hZFN0YXRpc3RpY3NDbGFzc2lmaWVyQ29j
b2EgbV9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzQ2xhc3NpZmllcjsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmNwcCBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmNwcApp
bmRleCAyZmI5Y2M1OTYxNTQxMTY0N2ZlOWNhZDE2YTE1YWVhOTMyODUzZDRiLi5mMjA1NDZiZTAy
MmM1Mzg5MTMwNjg3YjgyZjliNDY1NWE0ZmNhMWI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5jcHAKKysrIGIvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuY3BwCkBAIC0z
NCw3ICszNCw2IEBACiAjaW5jbHVkZSAiV2ViQ29va2llTWFuYWdlclByb3h5LmgiCiAjaW5jbHVk
ZSAiV2ViUHJvY2Vzc01lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiV2ViUHJvY2Vzc1Bvb2wuaCIKLSNp
bmNsdWRlICJXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWFuYWdlci5oIgogI2luY2x1ZGUgIldl
YlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5oIgogI2luY2x1ZGUgIldlYlJlc291cmNlTG9h
ZFN0YXRpc3RpY3NTdG9yZU1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiV2Vic2l0ZURhdGEuaCIKQEAg
LTgxNSw4ICs4MTQsOCBAQCB2b2lkIFdlYnNpdGVEYXRhU3RvcmU6OnJlbW92ZURhdGEoT3B0aW9u
U2V0PFdlYnNpdGVEYXRhVHlwZT4gZGF0YVR5cGVzLCBzdGQ6OmNocgogICAgIH0KICNlbmRpZgog
Ci0gICAgaWYgKGRhdGFUeXBlcy5jb250YWlucyhXZWJzaXRlRGF0YVR5cGU6OlJlc291cmNlTG9h
ZFN0YXRpc3RpY3MpKQotICAgICAgICBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWFuYWdlcjo6
c2hhcmVkKCkuY2xlYXJJbk1lbW9yeUFuZFBlcnNpc3RlbnRTdG9yZShtb2RpZmllZFNpbmNlKTsK
KyAgICBpZiAoZGF0YVR5cGVzLmNvbnRhaW5zKFdlYnNpdGVEYXRhVHlwZTo6UmVzb3VyY2VMb2Fk
U3RhdGlzdGljcykgJiYgbV9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzKQorICAgICAgICBtX3Jlc291
cmNlTG9hZFN0YXRpc3RpY3MtPmNsZWFySW5NZW1vcnlBbmRQZXJzaXN0ZW50KG1vZGlmaWVkU2lu
Y2UpOwogCiAgICAgLy8gVGhlcmUncyBhIGNoYW5jZSB0aGF0IHdlIGRvbid0IGhhdmUgYW55IHBl
bmRpbmcgY2FsbGJhY2tzLiBJZiBzbywgd2Ugd2FudCB0byBkaXNwYXRjaCB0aGUgY29tcGxldGlv
biBoYW5kbGVyIHJpZ2h0IGF3YXkuCiAgICAgY2FsbGJhY2tBZ2dyZWdhdG9yLT5jYWxsSWZOZWVk
ZWQoKTsKQEAgLTEwODQsOCArMTA4Myw4IEBAIHZvaWQgV2Vic2l0ZURhdGFTdG9yZTo6cmVtb3Zl
RGF0YShPcHRpb25TZXQ8V2Vic2l0ZURhdGFUeXBlPiBkYXRhVHlwZXMsIGNvbnN0IFZlCiAgICAg
fQogI2VuZGlmCiAKLSAgICBpZiAoZGF0YVR5cGVzLmNvbnRhaW5zKFdlYnNpdGVEYXRhVHlwZTo6
UmVzb3VyY2VMb2FkU3RhdGlzdGljcykpCi0gICAgICAgIFdlYlJlc291cmNlTG9hZFN0YXRpc3Rp
Y3NNYW5hZ2VyOjpzaGFyZWQoKS5jbGVhckluTWVtb3J5QW5kUGVyc2lzdGVudFN0b3JlKCk7Cisg
ICAgaWYgKGRhdGFUeXBlcy5jb250YWlucyhXZWJzaXRlRGF0YVR5cGU6OlJlc291cmNlTG9hZFN0
YXRpc3RpY3MpICYmIG1fcmVzb3VyY2VMb2FkU3RhdGlzdGljcykKKyAgICAgICAgbV9yZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzLT5jbGVhckluTWVtb3J5QW5kUGVyc2lzdGVudCgpOwogCiAgICAgLy8g
VGhlcmUncyBhIGNoYW5jZSB0aGF0IHdlIGRvbid0IGhhdmUgYW55IHBlbmRpbmcgY2FsbGJhY2tz
LiBJZiBzbywgd2Ugd2FudCB0byBkaXNwYXRjaCB0aGUgY29tcGxldGlvbiBoYW5kbGVyIHJpZ2h0
IGF3YXkuCiAgICAgY2FsbGJhY2tBZ2dyZWdhdG9yLT5jYWxsSWZOZWVkZWQoKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1dlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1Nv
dXJjZS9XZWJLaXQyL1dlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCAxZWU0
OTYxNGM2MjNiNDlmY2ZlMTQ3MDhiNjQxN2E1YjkzYzg0MDdmLi4yYTUzZTY0MjVkNjVhNDA2OTcy
YzkxZGI3MTRhZmM2NGY4NmI5OGVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJLaXQy
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYktpdDIvV2ViS2l0Mi54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xMTkxLDcgKzExOTEsNiBAQAogCQk2NUI4NkYx
RTEyRjExREUzMDBCN0REOEEgLyogV0tCdW5kbGVJbnNwZWN0b3IuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDY1Qjg2RjE4MTJGMTFEN0IwMEI3REQ4QSAv
KiBXS0J1bmRsZUluc3BlY3Rvci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CiAJCTZCODIxRERDMUVFRjA1REQwMEQ3QUY0QSAvKiBXZWJSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzVGVsZW1ldHJ5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA2QjgyMUREQTFFRUYwNUREMDBEN0FGNEEgLyogV2ViUmVzb3VyY2VMb2Fk
U3RhdGlzdGljc1RlbGVtZXRyeS5oICovOyB9OwogCQk2QjgyMURERDFFRUYwNUREMDBEN0FGNEEg
LyogV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1RlbGVtZXRyeS5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2QjgyMUREQjFFRUYwNUREMDBEN0FGNEEg
LyogV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1RlbGVtZXRyeS5jcHAgKi87IH07Ci0JCTZCQkJB
RDM4MUVDM0U1NzgwMEFEMEEyQSAvKiBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWFuYWdlckNv
Y29hLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNkJC
QkFEMzcxRUMzRTU2MzAwQUQwQTJBIC8qIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NNYW5hZ2Vy
Q29jb2EubW0gKi87IH07CiAJCTZCRTk2OTlDMUU0M0IzRkYwMDhCNzQ4MyAvKiBXS1Jlc291cmNl
TG9hZFN0YXRpc3RpY3NNYW5hZ2VyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA2QkU5Njk5QjFFNDNCM0ZGMDA4Qjc0ODMgLyogV0tSZXNvdXJjZUxvYWRT
dGF0aXN0aWNzTWFuYWdlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CiAJCTZCRTk2OTlFMUU0M0I0MUQwMDhCNzQ4MyAvKiBXS1Jlc291cmNlTG9hZFN0
YXRpc3RpY3NNYW5hZ2VyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDZCRTk2OTlEMUU0M0I0MUQwMDhCNzQ4MyAvKiBXS1Jlc291cmNlTG9hZFN0YXRp
c3RpY3NNYW5hZ2VyLmNwcCAqLzsgfTsKIAkJNkJFOTY5QTAxRTQzQjg2RTAwOEI3NDgzIC8qIFdl
YlJlc291cmNlTG9hZFN0YXRpc3RpY3NNYW5hZ2VyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2QkU5Njk5RjFFNDNCODZFMDA4Qjc0ODMgLyogV2ViUmVz
b3VyY2VMb2FkU3RhdGlzdGljc01hbmFnZXIuaCAqLzsgfTsKQEAgLTM0ODMsNyArMzQ4Miw2IEBA
CiAJCTY1Qjg2RjE4MTJGMTFEN0IwMEI3REQ4QSAvKiBXS0J1bmRsZUluc3BlY3Rvci5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXS0J1bmRsZUluc3BlY3Rvci5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk2QjgyMUREQTFFRUYwNUREMDBEN0FGNEEgLyogV2ViUmVz
b3VyY2VMb2FkU3RhdGlzdGljc1RlbGVtZXRyeS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzVGVsZW1ldHJ5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTZCODIxRERCMUVFRjA1REQwMEQ3QUY0QSAvKiBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzVGVs
ZW1ldHJ5LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NU
ZWxlbWV0cnkuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk2QkJCQUQzNzFFQzNF
NTYzMDBBRDBBMkEgLyogV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc01hbmFnZXJDb2NvYS5tbSAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFdlYlJlc291cmNlTG9hZFN0
YXRpc3RpY3NNYW5hZ2VyQ29jb2EubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTZC
RTk2OTlCMUU0M0IzRkYwMDhCNzQ4MyAvKiBXS1Jlc291cmNlTG9hZFN0YXRpc3RpY3NNYW5hZ2Vy
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdLUmVzb3VyY2VMb2FkU3RhdGlz
dGljc01hbmFnZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNkJFOTY5OUQxRTQz
QjQxRDAwOEI3NDgzIC8qIFdLUmVzb3VyY2VMb2FkU3RhdGlzdGljc01hbmFnZXIuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV0tSZXNvdXJjZUxvYWRTdGF0aXN0aWNz
TWFuYWdlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTZCRTk2OTlGMUU0M0I4
NkUwMDhCNzQ4MyAvKiBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWFuYWdlci5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWFuYWdl
ci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNTIzMCw3ICs1MjI4LDYgQEAKIAkJ
CQlDREEyOUExRjFDQkVCNUZCMDA5MDFDQ0YgLyogV2ViUGxheWJhY2tTZXNzaW9uTWFuYWdlclBy
b3h5Lm1tICovLAogCQkJCTdDRTREMjE1MUE0OTE0ODQwMEM3RjE1MiAvKiBXZWJQcm9jZXNzUG9v
bENvY29hLm1tICovLAogCQkJCTFBMDRGNjE3MUE0QTNBN0EwMEEyMUI2RSAvKiBXZWJQcm9jZXNz
UHJveHlDb2NvYS5tbSAqLywKLQkJCQk2QkJCQUQzNzFFQzNFNTYzMDBBRDBBMkEgLyogV2ViUmVz
b3VyY2VMb2FkU3RhdGlzdGljc01hbmFnZXJDb2NvYS5tbSAqLywKIAkJCQk3QUFEMTc1RTFFQTZB
RjM3MDAzQjA4OTQgLyogV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlQ29jb2EubW0gKi8s
CiAJCQkJNTFEMTI0MzExRTZERTUyMTAwMkIyODIwIC8qIFdlYlVSTFNjaGVtZUhhbmRsZXJDb2Nv
YS5oICovLAogCQkJCTUxRDEyNDMyMUU2REU1MjEwMDJCMjgyMCAvKiBXZWJVUkxTY2hlbWVIYW5k
bGVyQ29jb2EubW0gKi8sCkBAIC0xMDQzNiw3ICsxMDQzMyw2IEBACiAJCQkJNTEwQUZGQjkxNjU0
MjA0ODAwMUJBMDVFIC8qIFdlYlJlc291cmNlTG9hZGVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CTUxRjA2MEUxMTY1NDMxODUwMEYzMjgxQiAvKiBXZWJSZXNvdXJjZUxvYWRlck1lc3NhZ2VSZWNl
aXZlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk2QkU5NjlBMjFFNDNCOEE0MDA4Qjc0ODMgLyog
V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc01hbmFnZXIuY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJ
NkJCQkFEMzgxRUMzRTU3ODAwQUQwQTJBIC8qIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NNYW5h
Z2VyQ29jb2EubW0gaW4gU291cmNlcyAqLywKIAkJCQk3QTc5MUVGQzFDN0QwOEM1MDBDNEM1MkIg
LyogV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CTdBQUQxNzVGMUVBNkFGOTkwMDNCMDg5NCAvKiBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3Rv
cmVDb2NvYS5tbSBpbiBTb3VyY2VzICovLAogCQkJCTdBNzkxRUZBMUM3Q0ZDRjEwMEM0QzUyQiAv
KiBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmVNZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNv
dXJjZXMgKi8sCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cK
aW5kZXggZjE2NmY4NDdhY2VhN2M1YmZmOTMxNjc3NWNlMWFhMDhiNmEyMDNhMy4uNjhhYmZkNTU0
YzA3NGQ4NGU1YTg2ZDQyMmY4MDIwMzA3NDYwMjg3MiAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdl
TG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIyIEBACisyMDE3LTA2LTMwICBD
aHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgTW92ZSBzdG9yZSBsb2dp
YyBmcm9tIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NNYW5hZ2VyIHRvIFdlYlJlc291cmNlTG9h
ZFN0YXRpc3RpY3NTdG9yZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTc0MDM4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgRml4IHR5cG8gaW4gQVBJIG5hbWUuCisKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVu
bmVyL0luamVjdGVkQnVuZGxlL0JpbmRpbmdzL1Rlc3RSdW5uZXIuaWRsOgorICAgICAgICAqIFdl
YktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5jcHA6CisgICAgICAgIChX
VFI6OlRlc3RSdW5uZXI6OnNldFN0YXRpc3RpY3NNaW5pbXVtVGltZUJldHdlZW5EYXRhUmVjb3Jk
c1JlbW92YWwpOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVz
dFJ1bm5lci5oOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuY3Bw
OgorICAgICAgICAoV1RSOjpUZXN0Q29udHJvbGxlcjo6c2V0U3RhdGlzdGljc01pbmltdW1UaW1l
QmV0d2VlbkRhdGFSZWNvcmRzUmVtb3ZhbCk6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9U
ZXN0Q29udHJvbGxlci5oOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvVGVzdEludm9jYXRp
b24uY3BwOgorICAgICAgICAoV1RSOjpUZXN0SW52b2NhdGlvbjo6ZGlkUmVjZWl2ZVN5bmNocm9u
b3VzTWVzc2FnZUZyb21JbmplY3RlZEJ1bmRsZSk6CisKIDIwMTctMDYtMzAgIEpvbmF0aGFuIEJl
ZGFyZCAgPGpiZWRhcmRAYXBwbGUuY29tPgogCiAgICAgICAgIEZvbGxvdy11cCBmaXggZm9yIHIy
MTg5OTYKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUv
QmluZGluZ3MvVGVzdFJ1bm5lci5pZGwgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVk
QnVuZGxlL0JpbmRpbmdzL1Rlc3RSdW5uZXIuaWRsCmluZGV4IDRmMDg3ZjJhNWM5OTI1MjU2NjI4
YWRmMDBmM2MwZDdlMzY4ODlhN2YuLjU3NzZiOWM4MGQ0YzVjM2YzY2Q3ZGIxMDU3YWVjM2UyOTM0
N2EyNDcgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUv
QmluZGluZ3MvVGVzdFJ1bm5lci5pZGwKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9Jbmpl
Y3RlZEJ1bmRsZS9CaW5kaW5ncy9UZXN0UnVubmVyLmlkbApAQCAtMjcyLDcgKzI3Miw3IEBAIGlu
dGVyZmFjZSBUZXN0UnVubmVyIHsKICAgICB2b2lkIHNldFN0YXRpc3RpY3NOb3RpZnlQYWdlc1do
ZW5EYXRhUmVjb3Jkc1dlcmVTY2FubmVkKGJvb2xlYW4gdmFsdWUpOwogICAgIHZvaWQgc2V0U3Rh
dGlzdGljc1Nob3VsZENsYXNzaWZ5UmVzb3VyY2VzQmVmb3JlRGF0YVJlY29yZHNSZW1vdmFsKGJv
b2xlYW4gdmFsdWUpOwogICAgIHZvaWQgc2V0U3RhdGlzdGljc05vdGlmeVBhZ2VzV2hlblRlbGVt
ZXRyeVdhc0NhcHR1cmVkKGJvb2xlYW4gdmFsdWUpOwotICAgIHZvaWQgc2V0U3RhdGlzdGljc01p
bmltdW1UaW1lQmV0d2VlZW5EYXRhUmVjb3Jkc1JlbW92YWwoZG91YmxlIHNlY29uZHMpOworICAg
IHZvaWQgc2V0U3RhdGlzdGljc01pbmltdW1UaW1lQmV0d2VlbkRhdGFSZWNvcmRzUmVtb3ZhbChk
b3VibGUgc2Vjb25kcyk7CiAgICAgdm9pZCBzZXRTdGF0aXN0aWNzR3JhbmRmYXRoZXJpbmdUaW1l
KGRvdWJsZSBzZWNvbmRzKTsKICAgICB2b2lkIHN0YXRpc3RpY3NDbGVhckluTWVtb3J5QW5kUGVy
c2lzdGVudFN0b3JlKCk7CiAgICAgdm9pZCBzdGF0aXN0aWNzQ2xlYXJJbk1lbW9yeUFuZFBlcnNp
c3RlbnRTdG9yZU1vZGlmaWVkU2luY2VIb3Vycyh1bnNpZ25lZCBsb25nIGhvdXJzKTsKZGlmZiAt
LWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5j
cHAgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIuY3Bw
CmluZGV4IDg4MzFmOGQ5NzJkMTM5YWYyMTNmMmRhN2RlNmVjZDhmODhjODAwY2YuLjFhYTBlNWQ1
OWE3NGY5NjExMDI5OWE3YzIxNjc5M2RlNmE4OWQ0OWYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktp
dFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5jcHAKKysrIGIvVG9vbHMvV2Vi
S2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVubmVyLmNwcApAQCAtMTQ4MCw5ICsx
NDgwLDkgQEAgdm9pZCBUZXN0UnVubmVyOjpzZXRTdGF0aXN0aWNzTm90aWZ5UGFnZXNXaGVuVGVs
ZW1ldHJ5V2FzQ2FwdHVyZWQoYm9vbCB2YWx1ZSkKICAgICBXS1Jlc291cmNlTG9hZFN0YXRpc3Rp
Y3NNYW5hZ2VyU2V0Tm90aWZ5UGFnZXNXaGVuVGVsZW1ldHJ5V2FzQ2FwdHVyZWQodmFsdWUpOwog
fQogCi12b2lkIFRlc3RSdW5uZXI6OnNldFN0YXRpc3RpY3NNaW5pbXVtVGltZUJldHdlZWVuRGF0
YVJlY29yZHNSZW1vdmFsKGRvdWJsZSBzZWNvbmRzKQordm9pZCBUZXN0UnVubmVyOjpzZXRTdGF0
aXN0aWNzTWluaW11bVRpbWVCZXR3ZWVuRGF0YVJlY29yZHNSZW1vdmFsKGRvdWJsZSBzZWNvbmRz
KQogewotICAgIFdLUmV0YWluUHRyPFdLU3RyaW5nUmVmPiBtZXNzYWdlTmFtZShBZG9wdFdLLCBX
S1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygiU2V0U3RhdGlzdGljc01pbmltdW1UaW1lQmV0
d2VlZW5EYXRhUmVjb3Jkc1JlbW92YWwiKSk7CisgICAgV0tSZXRhaW5QdHI8V0tTdHJpbmdSZWY+
IG1lc3NhZ2VOYW1lKEFkb3B0V0ssIFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKCJTZXRT
dGF0aXN0aWNzTWluaW11bVRpbWVCZXR3ZWVuRGF0YVJlY29yZHNSZW1vdmFsIikpOwogICAgIFdL
UmV0YWluUHRyPFdLRG91YmxlUmVmPiBtZXNzYWdlQm9keShBZG9wdFdLLCBXS0RvdWJsZUNyZWF0
ZShzZWNvbmRzKSk7CiAgICAgV0tCdW5kbGVQb3N0U3luY2hyb25vdXNNZXNzYWdlKEluamVjdGVk
QnVuZGxlOjpzaW5nbGV0b24oKS5idW5kbGUoKSwgbWVzc2FnZU5hbWUuZ2V0KCksIG1lc3NhZ2VC
b2R5LmdldCgpLCBudWxscHRyKTsKIH0KZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5u
ZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5oIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9J
bmplY3RlZEJ1bmRsZS9UZXN0UnVubmVyLmgKaW5kZXggYWNiMTk2ZDg0M2RlOGQ5NDQ2MGU3ZTUx
NDRiOTc3Yzk2MGViNWUyMC4uNGE5OWM4YzI2ZWU4ZjBmOTRjMGNhYjhkOTIyNWI4OWIzZmUwNDlk
NyAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0
UnVubmVyLmgKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0
UnVubmVyLmgKQEAgLTM3MSw3ICszNzEsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRTdGF0aXN0
aWNzTm90aWZ5UGFnZXNXaGVuRGF0YVJlY29yZHNXZXJlU2Nhbm5lZChib29sKTsKICAgICB2b2lk
IHNldFN0YXRpc3RpY3NTaG91bGRDbGFzc2lmeVJlc291cmNlc0JlZm9yZURhdGFSZWNvcmRzUmVt
b3ZhbChib29sKTsKICAgICB2b2lkIHNldFN0YXRpc3RpY3NOb3RpZnlQYWdlc1doZW5UZWxlbWV0
cnlXYXNDYXB0dXJlZChib29sIHZhbHVlKTsKLSAgICB2b2lkIHNldFN0YXRpc3RpY3NNaW5pbXVt
VGltZUJldHdlZWVuRGF0YVJlY29yZHNSZW1vdmFsKGRvdWJsZSk7CisgICAgdm9pZCBzZXRTdGF0
aXN0aWNzTWluaW11bVRpbWVCZXR3ZWVuRGF0YVJlY29yZHNSZW1vdmFsKGRvdWJsZSk7CiAgICAg
dm9pZCBzZXRTdGF0aXN0aWNzR3JhbmRmYXRoZXJpbmdUaW1lKGRvdWJsZSBzZWNvbmRzKTsKICAg
ICB2b2lkIHN0YXRpc3RpY3NDbGVhckluTWVtb3J5QW5kUGVyc2lzdGVudFN0b3JlKCk7CiAgICAg
dm9pZCBzdGF0aXN0aWNzQ2xlYXJJbk1lbW9yeUFuZFBlcnNpc3RlbnRTdG9yZU1vZGlmaWVkU2lu
Y2VIb3Vycyh1bnNpZ25lZCBob3Vycyk7CmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVu
bmVyL1Rlc3RDb250cm9sbGVyLmNwcCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRy
b2xsZXIuY3BwCmluZGV4IDk3ODM5ZGY2MzcwOTc1ZjZiMWQ2N2RjM2NkM2EyM2FlZjgxOTFlMzUu
LjhhYTZhNjgwZTI1MWVlNWJhMzk4ZTUyZDE2NDM2ZWNiMjgzMmVmNTIgMTAwNjQ0Ci0tLSBhL1Rv
b2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuY3BwCisrKyBiL1Rvb2xzL1dlYktp
dFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuY3BwCkBAIC0yMjk5LDkgKzIyOTksOSBAQCB2b2lk
IFRlc3RDb250cm9sbGVyOjpzZXRTdGF0aXN0aWNzTm90aWZ5UGFnZXNXaGVuVGVsZW1ldHJ5V2Fz
Q2FwdHVyZWQoYm9vbCB2YWx1ZQogICAgIFdLUmVzb3VyY2VMb2FkU3RhdGlzdGljc01hbmFnZXJT
ZXROb3RpZnlQYWdlc1doZW5UZWxlbWV0cnlXYXNDYXB0dXJlZCh2YWx1ZSk7CiB9CiAgICAgCi12
b2lkIFRlc3RDb250cm9sbGVyOjpzZXRTdGF0aXN0aWNzTWluaW11bVRpbWVCZXR3ZWVlbkRhdGFS
ZWNvcmRzUmVtb3ZhbChkb3VibGUgc2Vjb25kcykKK3ZvaWQgVGVzdENvbnRyb2xsZXI6OnNldFN0
YXRpc3RpY3NNaW5pbXVtVGltZUJldHdlZW5EYXRhUmVjb3Jkc1JlbW92YWwoZG91YmxlIHNlY29u
ZHMpCiB7Ci0gICAgV0tSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWFuYWdlclNldE1pbmltdW1UaW1l
QmV0d2VlZW5EYXRhUmVjb3Jkc1JlbW92YWwoc2Vjb25kcyk7CisgICAgV0tSZXNvdXJjZUxvYWRT
dGF0aXN0aWNzTWFuYWdlclNldE1pbmltdW1UaW1lQmV0d2VlbkRhdGFSZWNvcmRzUmVtb3ZhbChz
ZWNvbmRzKTsKIH0KIAogdm9pZCBUZXN0Q29udHJvbGxlcjo6c2V0U3RhdGlzdGljc0dyYW5kZmF0
aGVyaW5nVGltZShkb3VibGUgc2Vjb25kcykKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RS
dW5uZXIvVGVzdENvbnRyb2xsZXIuaCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRy
b2xsZXIuaAppbmRleCA3ZWRjNzI0OGFjZmE0NGQ3ZmRhZGMwNzcwZjc0M2Y2MjJhMTVkNzg4Li42
MWIxODZiMWM3NmQwNGJjZDhjOTRkNmE1ZDkxZDY5MmQyZTdhZDhkIDEwMDY0NAotLS0gYS9Ub29s
cy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmgKKysrIGIvVG9vbHMvV2ViS2l0VGVz
dFJ1bm5lci9UZXN0Q29udHJvbGxlci5oCkBAIC0xNjgsNyArMTY4LDcgQEAgcHVibGljOgogICAg
IHZvaWQgc2V0U3RhdGlzdGljc05vdGlmeVBhZ2VzV2hlbkRhdGFSZWNvcmRzV2VyZVNjYW5uZWQo
Ym9vbCk7CiAgICAgdm9pZCBzZXRTdGF0aXN0aWNzU2hvdWxkQ2xhc3NpZnlSZXNvdXJjZXNCZWZv
cmVEYXRhUmVjb3Jkc1JlbW92YWwoYm9vbCk7CiAgICAgdm9pZCBzZXRTdGF0aXN0aWNzTm90aWZ5
UGFnZXNXaGVuVGVsZW1ldHJ5V2FzQ2FwdHVyZWQoYm9vbCB2YWx1ZSk7Ci0gICAgdm9pZCBzZXRT
dGF0aXN0aWNzTWluaW11bVRpbWVCZXR3ZWVlbkRhdGFSZWNvcmRzUmVtb3ZhbChkb3VibGUpOwor
ICAgIHZvaWQgc2V0U3RhdGlzdGljc01pbmltdW1UaW1lQmV0d2VlbkRhdGFSZWNvcmRzUmVtb3Zh
bChkb3VibGUpOwogICAgIHZvaWQgc2V0U3RhdGlzdGljc0dyYW5kZmF0aGVyaW5nVGltZShkb3Vi
bGUgc2Vjb25kcyk7CiAgICAgdm9pZCBzdGF0aXN0aWNzQ2xlYXJJbk1lbW9yeUFuZFBlcnNpc3Rl
bnRTdG9yZSgpOwogICAgIHZvaWQgc3RhdGlzdGljc0NsZWFySW5NZW1vcnlBbmRQZXJzaXN0ZW50
U3RvcmVNb2RpZmllZFNpbmNlSG91cnModW5zaWduZWQpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvV2Vi
S2l0VGVzdFJ1bm5lci9UZXN0SW52b2NhdGlvbi5jcHAgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVy
L1Rlc3RJbnZvY2F0aW9uLmNwcAppbmRleCAzMGVmZDk1ZGMxODhiMDgyMWNhY2MwNjhkNDIyN2Y2
MzMzMDdmODEzLi4xMzM1NjI1YzQwNzJhMDcyMTZkMGQ5YjlkNmU2MzljZTcxNzBjZGRkIDEwMDY0
NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RJbnZvY2F0aW9uLmNwcAorKysgYi9U
b29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RJbnZvY2F0aW9uLmNwcApAQCAtMTA4NywxMCArMTA4
NywxMCBAQCBXS1JldGFpblB0cjxXS1R5cGVSZWY+IFRlc3RJbnZvY2F0aW9uOjpkaWRSZWNlaXZl
U3luY2hyb25vdXNNZXNzYWdlRnJvbUluamVjdGVkQgogICAgICAgICByZXR1cm4gbnVsbHB0cjsK
ICAgICB9CiAKLSAgICBpZiAoV0tTdHJpbmdJc0VxdWFsVG9VVEY4Q1N0cmluZyhtZXNzYWdlTmFt
ZSwgIlNldFN0YXRpc3RpY3NNaW5pbXVtVGltZUJldHdlZWVuRGF0YVJlY29yZHNSZW1vdmFsIikp
IHsKKyAgICBpZiAoV0tTdHJpbmdJc0VxdWFsVG9VVEY4Q1N0cmluZyhtZXNzYWdlTmFtZSwgIlNl
dFN0YXRpc3RpY3NNaW5pbXVtVGltZUJldHdlZW5EYXRhUmVjb3Jkc1JlbW92YWwiKSkgewogICAg
ICAgICBBU1NFUlQoV0tHZXRUeXBlSUQobWVzc2FnZUJvZHkpID09IFdLRG91YmxlR2V0VHlwZUlE
KCkpOwogICAgICAgICBXS0RvdWJsZVJlZiBzZWNvbmRzID0gc3RhdGljX2Nhc3Q8V0tEb3VibGVS
ZWY+KG1lc3NhZ2VCb2R5KTsKLSAgICAgICAgVGVzdENvbnRyb2xsZXI6OnNpbmdsZXRvbigpLnNl
dFN0YXRpc3RpY3NNaW5pbXVtVGltZUJldHdlZWVuRGF0YVJlY29yZHNSZW1vdmFsKFdLRG91Ymxl
R2V0VmFsdWUoc2Vjb25kcykpOworICAgICAgICBUZXN0Q29udHJvbGxlcjo6c2luZ2xldG9uKCku
c2V0U3RhdGlzdGljc01pbmltdW1UaW1lQmV0d2VlbkRhdGFSZWNvcmRzUmVtb3ZhbChXS0RvdWJs
ZUdldFZhbHVlKHNlY29uZHMpKTsKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQogICAg
IAo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>314307</attachid>
            <date>2017-06-30 15:41:16 -0700</date>
            <delta_ts>2017-06-30 16:23:02 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-174038-20170630154116.patch</filename>
            <type>text/plain</type>
            <size>66112</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjE5MDEwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggNzE1NTZlYjI2ZmRlNTgx
NjdkNzc5NmMxNDA5MWJhNjgzN2RiNDg1Yy4uZjhjNjQzYTliNWRjMjQwZDJhNzUzMGJlNzhhNWM3
MjM4MjAwZmNlYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDgwIEBACiAyMDE3LTA2LTMwICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKKyAgICAgICAgTW92ZSBzdG9yZSBsb2dpYyBm
cm9tIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NNYW5hZ2VyIHRvIFdlYlJlc291cmNlTG9hZFN0
YXRpc3RpY3NTdG9yZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTc0MDM4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQnJlbnQgRnVsZ2hhbS4KKworICAg
ICAgICBNb3ZlIHN0b3JlIGxvZ2ljIGZyb20gV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc01hbmFn
ZXIgdG8gV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLgorICAgICAgICBXZWJSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzTWFuYWdlciBpcyBub3cgZXNzZW50aWFsbHkgYSBwcm94eSB0byB0aGUK
KyAgICAgICAgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlIHRvIHN1cHBvcnQgdGhlIGN1
cnJlbnQgQyBBUEkuCisKKyAgICAgICAgSW4gYSBmb2xsb3ctdXAsIEkgcGxhbiB0byB0byByZXBs
YWNlIHRoZSBDIEFQSSB3aXRoIGEgQ29jb2EgU1BJIHdoaWNoIHdvcmtzIG9uIGEKKyAgICAgICAg
V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlIGRpcmVjdGx5IGluc3RlYWQgb2YgcmVxdWly
aW5nIGEKKyAgICAgICAgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc01hbmFnZXIgc2luZ2xldG9u
LgorCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9DL1dLUmVzb3VyY2VMb2FkU3RhdGlzdGljc01h
bmFnZXIuY3BwOgorICAgICAgICAoV0tSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWFuYWdlclNldE1p
bmltdW1UaW1lQmV0d2VlbkRhdGFSZWNvcmRzUmVtb3ZhbCk6CisgICAgICAgIChXS1Jlc291cmNl
TG9hZFN0YXRpc3RpY3NNYW5hZ2VyUmVzZXRUb0NvbnNpc3RlbnRTdGF0ZSk6CisgICAgICAgICog
VUlQcm9jZXNzL0FQSS9DL1dLUmVzb3VyY2VMb2FkU3RhdGlzdGljc01hbmFnZXIuaDoKKyAgICAg
ICAgKiBVSVByb2Nlc3MvQ29jb2EvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc01hbmFnZXJDb2Nv
YS5tbTogUmVtb3ZlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvV2ViUmVzb3VyY2VMb2Fk
U3RhdGlzdGljc1N0b3JlQ29jb2EubW06CisgICAgICAgIChXZWJLaXQ6OldlYlJlc291cmNlTG9h
ZFN0YXRpc3RpY3NTdG9yZTo6cmVnaXN0ZXJVc2VyRGVmYXVsdHNJZk5lZWRlZCk6CisgICAgICAg
ICogVUlQcm9jZXNzL1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NNYW5hZ2VyLmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc01hbmFnZXI6OldlYlJlc291cmNl
TG9hZFN0YXRpc3RpY3NNYW5hZ2VyKToKKyAgICAgICAgKFdlYktpdDo6V2ViUmVzb3VyY2VMb2Fk
U3RhdGlzdGljc01hbmFnZXI6On5XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWFuYWdlcik6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NNYW5hZ2VyOjpzZXRTdGF0
aXN0aWNzU3RvcmUpOgorICAgICAgICAoV2ViS2l0OjpXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNz
TWFuYWdlcjo6Y2xlYXJJbk1lbW9yeVN0b3JlKToKKyAgICAgICAgKFdlYktpdDo6V2ViUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc01hbmFnZXI6OmNsZWFySW5NZW1vcnlBbmRQZXJzaXN0ZW50U3RvcmUp
OgorICAgICAgICAoV2ViS2l0OjpXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWFuYWdlcjo6bG9n
VXNlckludGVyYWN0aW9uKToKKyAgICAgICAgKFdlYktpdDo6V2ViUmVzb3VyY2VMb2FkU3RhdGlz
dGljc01hbmFnZXI6OmNsZWFyVXNlckludGVyYWN0aW9uKToKKyAgICAgICAgKFdlYktpdDo6V2Vi
UmVzb3VyY2VMb2FkU3RhdGlzdGljc01hbmFnZXI6Omhhc0hhZFVzZXJJbnRlcmFjdGlvbik6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NNYW5hZ2VyOjpzZXRQcmV2
YWxlbnRSZXNvdXJjZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlJlc291cmNlTG9hZFN0YXRpc3Rp
Y3NNYW5hZ2VyOjppc1ByZXZhbGVudFJlc291cmNlKToKKyAgICAgICAgKFdlYktpdDo6V2ViUmVz
b3VyY2VMb2FkU3RhdGlzdGljc01hbmFnZXI6OmNsZWFyUHJldmFsZW50UmVzb3VyY2UpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWFuYWdlcjo6c2V0R3JhbmRm
YXRoZXJlZCk6CisgICAgICAgIChXZWJLaXQ6OldlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NNYW5h
Z2VyOjppc0dyYW5kZmF0aGVyZWQpOgorICAgICAgICAoV2ViS2l0OjpXZWJSZXNvdXJjZUxvYWRT
dGF0aXN0aWNzTWFuYWdlcjo6c2V0U3ViZnJhbWVVbmRlclRvcEZyYW1lT3JpZ2luKToKKyAgICAg
ICAgKFdlYktpdDo6V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc01hbmFnZXI6OnNldFN1YnJlc291
cmNlVW5kZXJUb3BGcmFtZU9yaWdpbik6CisgICAgICAgIChXZWJLaXQ6OldlYlJlc291cmNlTG9h
ZFN0YXRpc3RpY3NNYW5hZ2VyOjpzZXRTdWJyZXNvdXJjZVVuaXF1ZVJlZGlyZWN0VG8pOgorICAg
ICAgICAoV2ViS2l0OjpXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWFuYWdlcjo6c2V0VGltZVRv
TGl2ZVVzZXJJbnRlcmFjdGlvbik6CisgICAgICAgIChXZWJLaXQ6OldlYlJlc291cmNlTG9hZFN0
YXRpc3RpY3NNYW5hZ2VyOjpzZXRUaW1lVG9MaXZlQ29va2llUGFydGl0aW9uRnJlZSk6CisgICAg
ICAgIChXZWJLaXQ6OldlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NNYW5hZ2VyOjpzZXRNaW5pbXVt
VGltZUJldHdlZW5EYXRhUmVjb3Jkc1JlbW92YWwpOgorICAgICAgICAoV2ViS2l0OjpXZWJSZXNv
dXJjZUxvYWRTdGF0aXN0aWNzTWFuYWdlcjo6c2V0R3JhbmRmYXRoZXJpbmdUaW1lKToKKyAgICAg
ICAgKFdlYktpdDo6V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc01hbmFnZXI6OmZpcmVEYXRhTW9k
aWZpY2F0aW9uSGFuZGxlcik6CisgICAgICAgIChXZWJLaXQ6OldlYlJlc291cmNlTG9hZFN0YXRp
c3RpY3NNYW5hZ2VyOjpmaXJlU2hvdWxkUGFydGl0aW9uQ29va2llc0hhbmRsZXIpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWFuYWdlcjo6ZmlyZVRlbGVtZXRy
eUhhbmRsZXIpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNz
TWFuYWdlci5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNz
U3RvcmUuY3BwOgorICAgICAgICAoV2ViS2l0OjpwcmltYXJ5RG9tYWluKToKKyAgICAgICAgKFdl
YktpdDo6V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpyZWdpc3RlclNoYXJlZFJlc291
cmNlTG9hZE9ic2VydmVyKToKKyAgICAgICAgKFdlYktpdDo6V2ViUmVzb3VyY2VMb2FkU3RhdGlz
dGljc1N0b3JlOjpsb2dVc2VySW50ZXJhY3Rpb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJSZXNv
dXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OmNsZWFyVXNlckludGVyYWN0aW9uKToKKyAgICAgICAg
KFdlYktpdDo6V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpoYXNIYWRVc2VySW50ZXJh
Y3Rpb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6
OnNldFByZXZhbGVudFJlc291cmNlKToKKyAgICAgICAgKFdlYktpdDo6V2ViUmVzb3VyY2VMb2Fk
U3RhdGlzdGljc1N0b3JlOjppc1ByZXZhbGVudFJlc291cmNlKToKKyAgICAgICAgKFdlYktpdDo6
V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpjbGVhclByZXZhbGVudFJlc291cmNlKToK
KyAgICAgICAgKFdlYktpdDo6V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpzZXRHcmFu
ZGZhdGhlcmVkKToKKyAgICAgICAgKFdlYktpdDo6V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0
b3JlOjppc0dyYW5kZmF0aGVyZWQpOgorICAgICAgICAoV2ViS2l0OjpXZWJSZXNvdXJjZUxvYWRT
dGF0aXN0aWNzU3RvcmU6OnNldFN1YmZyYW1lVW5kZXJUb3BGcmFtZU9yaWdpbik6CisgICAgICAg
IChXZWJLaXQ6OldlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6c2V0U3VicmVzb3VyY2VV
bmRlclRvcEZyYW1lT3JpZ2luKToKKyAgICAgICAgKFdlYktpdDo6V2ViUmVzb3VyY2VMb2FkU3Rh
dGlzdGljc1N0b3JlOjpzZXRTdWJyZXNvdXJjZVVuaXF1ZVJlZGlyZWN0VG8pOgorICAgICAgICAo
V2ViS2l0OjpXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OmZpcmVEYXRhTW9kaWZpY2F0
aW9uSGFuZGxlcik6CisgICAgICAgIChXZWJLaXQ6OldlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NT
dG9yZTo6ZmlyZVNob3VsZFBhcnRpdGlvbkNvb2tpZXNIYW5kbGVyKToKKyAgICAgICAgKFdlYktp
dDo6V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpmaXJlVGVsZW1ldHJ5SGFuZGxlcik6
CisgICAgICAgIChXZWJLaXQ6OldlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6Y2xlYXJJ
bk1lbW9yeSk6CisgICAgICAgIChXZWJLaXQ6OldlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9y
ZTo6Y2xlYXJJbk1lbW9yeUFuZFBlcnNpc3RlbnQpOgorICAgICAgICAoV2ViS2l0OjpXZWJSZXNv
dXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OnNldFRpbWVUb0xpdmVVc2VySW50ZXJhY3Rpb24pOgor
ICAgICAgICAoV2ViS2l0OjpXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OnNldFRpbWVU
b0xpdmVDb29raWVQYXJ0aXRpb25GcmVlKToKKyAgICAgICAgKFdlYktpdDo6V2ViUmVzb3VyY2VM
b2FkU3RhdGlzdGljc1N0b3JlOjpzZXRNaW5pbXVtVGltZUJldHdlZW5EYXRhUmVjb3Jkc1JlbW92
YWwpOgorICAgICAgICAoV2ViS2l0OjpXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OnNl
dEdyYW5kZmF0aGVyaW5nVGltZSk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlJlc291cmNlTG9h
ZFN0YXRpc3RpY3NTdG9yZS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJz
aXRlRGF0YVN0b3JlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZTo6cmVt
b3ZlRGF0YSk6CisgICAgICAgICogV2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgor
CisyMDE3LTA2LTMwICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKICAgICAgICAg
TW92ZSBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUgdG8gV2ViS2l0Mi9VSVByb2Nlc3MKICAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3NDAzMwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tSZXNvdXJjZUxvYWRT
dGF0aXN0aWNzTWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWFuYWdlci5jcHAKaW5kZXggOWVlMDhkYWI5M2JmYWRhM2Vi
NjU5MDMxOWUyZjM4OTZhYzNiNjQ2ZC4uNjk2YWJjOGVmNWFhYzNmZDFhOGQzNWYxMjg1NmNkMzRi
MjkyNzQ0ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLUmVz
b3VyY2VMb2FkU3RhdGlzdGljc01hbmFnZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvQy9XS1Jlc291cmNlTG9hZFN0YXRpc3RpY3NNYW5hZ2VyLmNwcApAQCAtOTYsOSAr
OTYsOSBAQCB2b2lkIFdLUmVzb3VyY2VMb2FkU3RhdGlzdGljc01hbmFnZXJTZXRUaW1lVG9MaXZl
Q29va2llUGFydGl0aW9uRnJlZShkb3VibGUgc2VjbwogICAgIFdlYlJlc291cmNlTG9hZFN0YXRp
c3RpY3NNYW5hZ2VyOjpzaGFyZWQoKS5zZXRUaW1lVG9MaXZlQ29va2llUGFydGl0aW9uRnJlZShT
ZWNvbmRzIHsgc2Vjb25kcyB9KTsKIH0KIAotdm9pZCBXS1Jlc291cmNlTG9hZFN0YXRpc3RpY3NN
YW5hZ2VyU2V0TWluaW11bVRpbWVCZXR3ZWVlbkRhdGFSZWNvcmRzUmVtb3ZhbChkb3VibGUgc2Vj
b25kcykKK3ZvaWQgV0tSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWFuYWdlclNldE1pbmltdW1UaW1l
QmV0d2VlbkRhdGFSZWNvcmRzUmVtb3ZhbChkb3VibGUgc2Vjb25kcykKIHsKLSAgICBXZWJSZXNv
dXJjZUxvYWRTdGF0aXN0aWNzTWFuYWdlcjo6c2hhcmVkKCkuc2V0TWluaW11bVRpbWVCZXR3ZWVl
bkRhdGFSZWNvcmRzUmVtb3ZhbChTZWNvbmRzIHsgc2Vjb25kcyB9KTsKKyAgICBXZWJSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzTWFuYWdlcjo6c2hhcmVkKCkuc2V0TWluaW11bVRpbWVCZXR3ZWVuRGF0
YVJlY29yZHNSZW1vdmFsKFNlY29uZHMgeyBzZWNvbmRzIH0pOwogfQogCiB2b2lkIFdLUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc01hbmFnZXJTZXRHcmFuZGZhdGhlcmluZ1RpbWUoZG91YmxlIHNlY29u
ZHMpCkBAIC0xNjMsNyArMTYzLDcgQEAgdm9pZCBXS1Jlc291cmNlTG9hZFN0YXRpc3RpY3NNYW5h
Z2VyUmVzZXRUb0NvbnNpc3RlbnRTdGF0ZSgpCiB7CiAgICAgV2ViUmVzb3VyY2VMb2FkU3RhdGlz
dGljc01hbmFnZXI6OnNoYXJlZCgpLnNldFRpbWVUb0xpdmVVc2VySW50ZXJhY3Rpb24oMjRfaCAq
IDMwLik7CiAgICAgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc01hbmFnZXI6OnNoYXJlZCgpLnNl
dFRpbWVUb0xpdmVDb29raWVQYXJ0aXRpb25GcmVlKDI0X2gpOwotICAgIFdlYlJlc291cmNlTG9h
ZFN0YXRpc3RpY3NNYW5hZ2VyOjpzaGFyZWQoKS5zZXRNaW5pbXVtVGltZUJldHdlZWVuRGF0YVJl
Y29yZHNSZW1vdmFsKDFfaCk7CisgICAgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc01hbmFnZXI6
OnNoYXJlZCgpLnNldE1pbmltdW1UaW1lQmV0d2VlbkRhdGFSZWNvcmRzUmVtb3ZhbCgxX2gpOwog
ICAgIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NNYW5hZ2VyOjpzaGFyZWQoKS5zZXRHcmFuZGZh
dGhlcmluZ1RpbWUoMV9oKTsKICAgICBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OnNl
dE5vdGlmeVBhZ2VzV2hlbkRhdGFSZWNvcmRzV2VyZVNjYW5uZWQoZmFsc2UpOwogICAgIFdlYlJl
c291cmNlTG9hZFN0YXRpc3RpY3NUZWxlbWV0cnk6OnNldE5vdGlmeVBhZ2VzV2hlblRlbGVtZXRy
eVdhc0NhcHR1cmVkKGZhbHNlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvQy9XS1Jlc291cmNlTG9hZFN0YXRpc3RpY3NNYW5hZ2VyLmggYi9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL0MvV0tSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWFuYWdlci5oCmluZGV4
IGMwZmExM2VlYmEzYWNmZTFiYThmZGQwNmM3OTk4ZjNjYjlmOTA5OTkuLjgxZmUyNDRmNWI1ZDJk
ZDQ1NTRlMDM4Yzg5YTA1YzIzOWFjMmM4NTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvQy9XS1Jlc291cmNlTG9hZFN0YXRpc3RpY3NNYW5hZ2VyLmgKKysrIGIvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLUmVzb3VyY2VMb2FkU3RhdGlzdGljc01hbmFn
ZXIuaApAQCAtNDIsNyArNDIsNyBAQCBleHRlcm4gIkMiIHsKICAgICBXS19FWFBPUlQgdm9pZCBX
S1Jlc291cmNlTG9hZFN0YXRpc3RpY3NNYW5hZ2VyU2V0U3VicmVzb3VyY2VVbmlxdWVSZWRpcmVj
dFRvKFdLU3RyaW5nUmVmIGhvc3ROYW1lLCBXS1N0cmluZ1JlZiBob3N0TmFtZVJlZGlyZWN0ZWRU
byk7CiAgICAgV0tfRVhQT1JUIHZvaWQgV0tSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWFuYWdlclNl
dFRpbWVUb0xpdmVVc2VySW50ZXJhY3Rpb24oZG91YmxlIHNlY29uZHMpOwogICAgIFdLX0VYUE9S
VCB2b2lkIFdLUmVzb3VyY2VMb2FkU3RhdGlzdGljc01hbmFnZXJTZXRUaW1lVG9MaXZlQ29va2ll
UGFydGl0aW9uRnJlZShkb3VibGUgc2Vjb25kcyk7Ci0gICAgV0tfRVhQT1JUIHZvaWQgV0tSZXNv
dXJjZUxvYWRTdGF0aXN0aWNzTWFuYWdlclNldE1pbmltdW1UaW1lQmV0d2VlZW5EYXRhUmVjb3Jk
c1JlbW92YWwoZG91YmxlIHNlY29uZHMpOworICAgIFdLX0VYUE9SVCB2b2lkIFdLUmVzb3VyY2VM
b2FkU3RhdGlzdGljc01hbmFnZXJTZXRNaW5pbXVtVGltZUJldHdlZW5EYXRhUmVjb3Jkc1JlbW92
YWwoZG91YmxlIHNlY29uZHMpOwogICAgIFdLX0VYUE9SVCB2b2lkIFdLUmVzb3VyY2VMb2FkU3Rh
dGlzdGljc01hbmFnZXJTZXRHcmFuZGZhdGhlcmluZ1RpbWUoZG91YmxlIHNlY29uZHMpOwogICAg
IFdLX0VYUE9SVCB2b2lkIFdLUmVzb3VyY2VMb2FkU3RhdGlzdGljc01hbmFnZXJGaXJlRGF0YU1v
ZGlmaWNhdGlvbkhhbmRsZXIoKTsKICAgICBXS19FWFBPUlQgdm9pZCBXS1Jlc291cmNlTG9hZFN0
YXRpc3RpY3NNYW5hZ2VyRmlyZVNob3VsZFBhcnRpdGlvbkNvb2tpZXNIYW5kbGVyKCk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29jb2EvV2ViUmVzb3VyY2VMb2FkU3Rh
dGlzdGljc01hbmFnZXJDb2NvYS5tbSBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db2NvYS9X
ZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWFuYWdlckNvY29hLm1tCmRlbGV0ZWQgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAzZTAwOWRmODNmNjg3MjViZjM3NmVkYzJkY2M0Yzk5YzI0MzNiNDYyLi4w
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9Db2NvYS9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWFuYWdlckNvY29h
Lm1tCisrKyAvZGV2L251bGwKQEAgLTEsNTcgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykg
MjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0g
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JT
IGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05U
UklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbXBvcnQg
ImNvbmZpZy5oIgotI2ltcG9ydCAiV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc01hbmFnZXIuaCIK
LQotI2ltcG9ydCAiV2ViUHJlZmVyZW5jZXNLZXlzLmgiCi0KLXVzaW5nIG5hbWVzcGFjZSBXZWJD
b3JlOwotCi1uYW1lc3BhY2UgV2ViS2l0IHsKLSAgICAKLXZvaWQgV2ViUmVzb3VyY2VMb2FkU3Rh
dGlzdGljc01hbmFnZXI6OnJlZ2lzdGVyVXNlckRlZmF1bHRzSWZOZWVkZWQoKQotewotICAgIHN0
YXRpYyBkaXNwYXRjaF9vbmNlX3QgaW5pdE9uY2U7Ci0gICAgCi0gICAgZGlzcGF0Y2hfb25jZSgm
aW5pdE9uY2UsIF4gewotICAgICAgICBjb25zdCBzaXplX3QgaG91ckluU2Vjb25kcyA9IDM2MDA7
Ci0gICAgICAgIGNvbnN0IHNpemVfdCBkYXlJblNlY29uZHMgPSAyNCAqIGhvdXJJblNlY29uZHM7
Ci0gICAgICAgIAotICAgICAgICBkb3VibGUgdGltZVRvTGl2ZVVzZXJJbnRlcmFjdGlvbiA9IFtb
TlNVc2VyRGVmYXVsdHMgc3RhbmRhcmRVc2VyRGVmYXVsdHNdIGRvdWJsZUZvcktleTogV2ViUHJl
ZmVyZW5jZXNLZXk6OnJlc291cmNlTG9hZFN0YXRpc3RpY3NUaW1lVG9MaXZlVXNlckludGVyYWN0
aW9uS2V5KCldOwotICAgICAgICBpZiAodGltZVRvTGl2ZVVzZXJJbnRlcmFjdGlvbiA+IDAgJiYg
dGltZVRvTGl2ZVVzZXJJbnRlcmFjdGlvbiA8PSAzMCAqIGRheUluU2Vjb25kcykKLSAgICAgICAg
ICAgIHNldFRpbWVUb0xpdmVVc2VySW50ZXJhY3Rpb24oU2Vjb25kcyB7IHRpbWVUb0xpdmVVc2Vy
SW50ZXJhY3Rpb24gfSk7Ci0gICAgICAgIAotICAgICAgICBkb3VibGUgdGltZVRvTGl2ZUNvb2tp
ZVBhcnRpdGlvbkZyZWUgPSBbW05TVXNlckRlZmF1bHRzIHN0YW5kYXJkVXNlckRlZmF1bHRzXSBk
b3VibGVGb3JLZXk6IFdlYlByZWZlcmVuY2VzS2V5OjpyZXNvdXJjZUxvYWRTdGF0aXN0aWNzVGlt
ZVRvTGl2ZUNvb2tpZVBhcnRpdGlvbkZyZWVLZXkoKV07Ci0gICAgICAgIGlmICh0aW1lVG9MaXZl
Q29va2llUGFydGl0aW9uRnJlZSA+IDAgJiYgdGltZVRvTGl2ZUNvb2tpZVBhcnRpdGlvbkZyZWUg
PD0gZGF5SW5TZWNvbmRzKQotICAgICAgICAgICAgc2V0VGltZVRvTGl2ZUNvb2tpZVBhcnRpdGlv
bkZyZWUoU2Vjb25kcyB7IHRpbWVUb0xpdmVDb29raWVQYXJ0aXRpb25GcmVlIH0pOwotCi0gICAg
ICAgIGRvdWJsZSBncmFuZGZhdGhlcmluZ1RpbWUgPSBbW05TVXNlckRlZmF1bHRzIHN0YW5kYXJk
VXNlckRlZmF1bHRzXSBkb3VibGVGb3JLZXk6IFdlYlByZWZlcmVuY2VzS2V5OjpyZXNvdXJjZUxv
YWRTdGF0aXN0aWNzR3JhbmRmYXRoZXJpbmdUaW1lS2V5KCldOwotICAgICAgICBpZiAoZ3JhbmRm
YXRoZXJpbmdUaW1lID4gMCAmJiBncmFuZGZhdGhlcmluZ1RpbWUgPD0gNyAqIGRheUluU2Vjb25k
cykKLSAgICAgICAgICAgIHNldEdyYW5kZmF0aGVyaW5nVGltZShTZWNvbmRzIHsgZ3JhbmRmYXRo
ZXJpbmdUaW1lIH0pOwotICAgIH0pOwotfQotCi19CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQ29jb2EvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlQ29jb2EubW0g
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29jb2EvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGlj
c1N0b3JlQ29jb2EubW0KaW5kZXggNTg3ZGNmMDBiYmUxODkxNDlhMDYxMzEyOThmZDM3MzY0ZjYx
YWRiOC4uMGMwZjhhMjJhMzIwZGJhYzhhMmU1YjFjMTk1ZTEwZjhlZTg5ZWZlMiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0NvY29hL1dlYlJlc291cmNlTG9hZFN0YXRpc3Rp
Y3NTdG9yZUNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db2NvYS9XZWJS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmVDb2NvYS5tbQpAQCAtMjYsNiArMjYsOCBAQAogI2lu
Y2x1ZGUgImNvbmZpZy5oIgogI2ltcG9ydCAiV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3Jl
LmgiCiAKKyNpbXBvcnQgIldlYlByZWZlcmVuY2VzS2V5cy5oIgorCiB1c2luZyBuYW1lc3BhY2Ug
V2ViQ29yZTsKIAogbmFtZXNwYWNlIFdlYktpdCB7CkBAIC0zNyw0ICszOSwyNiBAQCB2b2lkIFdl
YlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6cGxhdGZvcm1FeGNsdWRlRnJvbUJhY2t1cCgp
IGNvbnN0CiAjZW5kaWYKIH0KIAordm9pZCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6
OnJlZ2lzdGVyVXNlckRlZmF1bHRzSWZOZWVkZWQoKQoreworICAgIHN0YXRpYyBkaXNwYXRjaF9v
bmNlX3QgaW5pdE9uY2U7CisKKyAgICBkaXNwYXRjaF9vbmNlKCZpbml0T25jZSwgXiB7CisgICAg
ICAgIGNvbnN0IHNpemVfdCBob3VySW5TZWNvbmRzID0gMzYwMDsKKyAgICAgICAgY29uc3Qgc2l6
ZV90IGRheUluU2Vjb25kcyA9IDI0ICogaG91ckluU2Vjb25kczsKKworICAgICAgICBkb3VibGUg
dGltZVRvTGl2ZVVzZXJJbnRlcmFjdGlvbiA9IFtbTlNVc2VyRGVmYXVsdHMgc3RhbmRhcmRVc2Vy
RGVmYXVsdHNdIGRvdWJsZUZvcktleTogV2ViUHJlZmVyZW5jZXNLZXk6OnJlc291cmNlTG9hZFN0
YXRpc3RpY3NUaW1lVG9MaXZlVXNlckludGVyYWN0aW9uS2V5KCldOworICAgICAgICBpZiAodGlt
ZVRvTGl2ZVVzZXJJbnRlcmFjdGlvbiA+IDAgJiYgdGltZVRvTGl2ZVVzZXJJbnRlcmFjdGlvbiA8
PSAzMCAqIGRheUluU2Vjb25kcykKKyAgICAgICAgICAgIHNldFRpbWVUb0xpdmVVc2VySW50ZXJh
Y3Rpb24oU2Vjb25kcyB7IHRpbWVUb0xpdmVVc2VySW50ZXJhY3Rpb24gfSk7CisKKyAgICAgICAg
ZG91YmxlIHRpbWVUb0xpdmVDb29raWVQYXJ0aXRpb25GcmVlID0gW1tOU1VzZXJEZWZhdWx0cyBz
dGFuZGFyZFVzZXJEZWZhdWx0c10gZG91YmxlRm9yS2V5OiBXZWJQcmVmZXJlbmNlc0tleTo6cmVz
b3VyY2VMb2FkU3RhdGlzdGljc1RpbWVUb0xpdmVDb29raWVQYXJ0aXRpb25GcmVlS2V5KCldOwor
ICAgICAgICBpZiAodGltZVRvTGl2ZUNvb2tpZVBhcnRpdGlvbkZyZWUgPiAwICYmIHRpbWVUb0xp
dmVDb29raWVQYXJ0aXRpb25GcmVlIDw9IGRheUluU2Vjb25kcykKKyAgICAgICAgICAgIHNldFRp
bWVUb0xpdmVDb29raWVQYXJ0aXRpb25GcmVlKFNlY29uZHMgeyB0aW1lVG9MaXZlQ29va2llUGFy
dGl0aW9uRnJlZSB9KTsKKworICAgICAgICBkb3VibGUgZ3JhbmRmYXRoZXJpbmdUaW1lID0gW1tO
U1VzZXJEZWZhdWx0cyBzdGFuZGFyZFVzZXJEZWZhdWx0c10gZG91YmxlRm9yS2V5OiBXZWJQcmVm
ZXJlbmNlc0tleTo6cmVzb3VyY2VMb2FkU3RhdGlzdGljc0dyYW5kZmF0aGVyaW5nVGltZUtleSgp
XTsKKyAgICAgICAgaWYgKGdyYW5kZmF0aGVyaW5nVGltZSA+IDAgJiYgZ3JhbmRmYXRoZXJpbmdU
aW1lIDw9IDcgKiBkYXlJblNlY29uZHMpCisgICAgICAgICAgICBzZXRHcmFuZGZhdGhlcmluZ1Rp
bWUoU2Vjb25kcyB7IGdyYW5kZmF0aGVyaW5nVGltZSB9KTsKKyAgICB9KTsKK30KKwogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1N0b3JhZ2UvUmVzb3VyY2VMb2FkU3Rh
dGlzdGljc1N0b3JlLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9TdG9yYWdlL1Jlc291
cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5jcHAKaW5kZXggOWFkM2ZkZjNmNDQ0NTQyMjIwYmRiNWE1
NGE2YjdiZDc2N2EyNGUxOS4uODI3MDcyY2Y0MjBhYjM1YmYzYTcwY2ZlZmU1YjdjNDdhMjkyM2Qz
MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1N0b3JhZ2UvUmVzb3VyY2VM
b2FkU3RhdGlzdGljc1N0b3JlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvU3Rv
cmFnZS9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuY3BwCkBAIC00Myw3ICs0Myw3IEBAIHN0
YXRpYyBjb25zdCBhdXRvIHN0YXRpc3RpY3NNb2RlbFZlcnNpb24gPSA0Owogc3RhdGljIFNlY29u
ZHMgdGltZVRvTGl2ZVVzZXJJbnRlcmFjdGlvbiB7IDI0X2ggKiAzMC4gfTsKIHN0YXRpYyBTZWNv
bmRzIHRpbWVUb0xpdmVDb29raWVQYXJ0aXRpb25GcmVlIHsgMjRfaCB9Owogc3RhdGljIFNlY29u
ZHMgZ3JhbmRmYXRoZXJpbmdUaW1lIHsgMV9oIH07Ci1zdGF0aWMgU2Vjb25kcyBtaW5pbXVtVGlt
ZUJldHdlZWVuRGF0YVJlY29yZHNSZW1vdmFsIHsgMV9oIH07CitzdGF0aWMgU2Vjb25kcyBtaW5p
bXVtVGltZUJldHdlZW5EYXRhUmVjb3Jkc1JlbW92YWwgeyAxX2ggfTsKIAogUmVmPFJlc291cmNl
TG9hZFN0YXRpc3RpY3NTdG9yZT4gUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpjcmVhdGUo
KQogewpAQCAtMjgxLDEwICsyODEsMTAgQEAgdm9pZCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3Rv
cmU6OnNldFRpbWVUb0xpdmVDb29raWVQYXJ0aXRpb25GcmVlKFNlY29uZHMgc2Vjb24KICAgICAg
ICAgdGltZVRvTGl2ZUNvb2tpZVBhcnRpdGlvbkZyZWUgPSBzZWNvbmRzOwogfQogCi12b2lkIFJl
c291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6c2V0TWluaW11bVRpbWVCZXR3ZWVlbkRhdGFSZWNv
cmRzUmVtb3ZhbChTZWNvbmRzIHNlY29uZHMpCit2b2lkIFJlc291cmNlTG9hZFN0YXRpc3RpY3NT
dG9yZTo6c2V0TWluaW11bVRpbWVCZXR3ZWVuRGF0YVJlY29yZHNSZW1vdmFsKFNlY29uZHMgc2Vj
b25kcykKIHsKICAgICBpZiAoc2Vjb25kcyA+PSAwX3MpCi0gICAgICAgIG1pbmltdW1UaW1lQmV0
d2VlZW5EYXRhUmVjb3Jkc1JlbW92YWwgPSBzZWNvbmRzOworICAgICAgICBtaW5pbXVtVGltZUJl
dHdlZW5EYXRhUmVjb3Jkc1JlbW92YWwgPSBzZWNvbmRzOwogfQogCiB2b2lkIFJlc291cmNlTG9h
ZFN0YXRpc3RpY3NTdG9yZTo6c2V0R3JhbmRmYXRoZXJpbmdUaW1lKFNlY29uZHMgc2Vjb25kcykK
QEAgLTM5OCw3ICszOTgsNyBAQCBib29sIFJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6c2hv
dWxkUmVtb3ZlRGF0YVJlY29yZHMoKSBjb25zdAogICAgIGlmIChtX2RhdGFSZWNvcmRzUmVtb3Zh
bFBlbmRpbmcpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIGlmIChtX2xhc3RUaW1lRGF0
YVJlY29yZHNXZXJlUmVtb3ZlZCAmJiBNb25vdG9uaWNUaW1lOjpub3coKSA8IChtX2xhc3RUaW1l
RGF0YVJlY29yZHNXZXJlUmVtb3ZlZCArIG1pbmltdW1UaW1lQmV0d2VlZW5EYXRhUmVjb3Jkc1Jl
bW92YWwpKQorICAgIGlmIChtX2xhc3RUaW1lRGF0YVJlY29yZHNXZXJlUmVtb3ZlZCAmJiBNb25v
dG9uaWNUaW1lOjpub3coKSA8IChtX2xhc3RUaW1lRGF0YVJlY29yZHNXZXJlUmVtb3ZlZCArIG1p
bmltdW1UaW1lQmV0d2VlbkRhdGFSZWNvcmRzUmVtb3ZhbCkpCiAgICAgICAgIHJldHVybiBmYWxz
ZTsKIAogICAgIHJldHVybiB0cnVlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL1N0b3JhZ2UvUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmggYi9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvU3RvcmFnZS9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuaAppbmRleCA4
NTMzYmViZGRmMjA3ZmFjMDlkZDdlNmUxM2YwZWVhYTQ0M2ZiMWI4Li41MDUxYTBlNmY3ZjE1MzI0
ZDQ1ZjQ2ZDQxY2VhYzVlMmJjYTJkOTA0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvU3RvcmFnZS9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvU3RvcmFnZS9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuaApA
QCAtODMsNyArODMsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBmaXJlVGVsZW1ldHJ5SGFuZGxlcigp
OwogICAgIHZvaWQgc2V0VGltZVRvTGl2ZVVzZXJJbnRlcmFjdGlvbihTZWNvbmRzKTsKICAgICB2
b2lkIHNldFRpbWVUb0xpdmVDb29raWVQYXJ0aXRpb25GcmVlKFNlY29uZHMpOwotICAgIHZvaWQg
c2V0TWluaW11bVRpbWVCZXR3ZWVlbkRhdGFSZWNvcmRzUmVtb3ZhbChTZWNvbmRzKTsKKyAgICB2
b2lkIHNldE1pbmltdW1UaW1lQmV0d2VlbkRhdGFSZWNvcmRzUmVtb3ZhbChTZWNvbmRzKTsKICAg
ICB2b2lkIHNldEdyYW5kZmF0aGVyaW5nVGltZShTZWNvbmRzKTsKICAgICB2b2lkIGZpcmVTaG91
bGRQYXJ0aXRpb25Db29raWVzSGFuZGxlcigpOwogICAgIHZvaWQgZmlyZVNob3VsZFBhcnRpdGlv
bkNvb2tpZXNIYW5kbGVyKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBkb21haW5zVG9SZW1vdmUsIGNv
bnN0IFZlY3RvcjxTdHJpbmc+JiBkb21haW5zVG9BZGQsIGJvb2wgY2xlYXJGaXJzdCk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGlj
c01hbmFnZXIuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlJlc291cmNlTG9hZFN0
YXRpc3RpY3NNYW5hZ2VyLmNwcAppbmRleCBkNzU4ZjgzMGI3YzVhMDRiNTZiZGRhZTljZmE2ZDUz
ZjE2MzMxMzljLi5iYzVmZGU3N2M2NzdhOTQ0YmRiYWExNmNjMDNhNjgxYWNlZTUzZThjIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGlj
c01hbmFnZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzTWFuYWdlci5jcHAKQEAgLTI2LDQwICsyNiwzMSBAQAogI2luY2x1ZGUgImNv
bmZpZy5oIgogI2luY2x1ZGUgIldlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NNYW5hZ2VyLmgiCiAK
LSNpbmNsdWRlICJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuaCIKLSNpbmNsdWRlIDxXZWJD
b3JlL1Jlc291cmNlTG9hZFN0YXRpc3RpY3MuaD4KKyNpbmNsdWRlICJXZWJSZXNvdXJjZUxvYWRT
dGF0aXN0aWNzU3RvcmUuaCIKICNpbmNsdWRlIDxXZWJDb3JlL1VSTC5oPgotI2luY2x1ZGUgPHd0
Zi9Dcm9zc1RocmVhZENvcGllci5oPgogI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgot
I2luY2x1ZGUgPHd0Zi9SdW5Mb29wLmg+Ci0jaW5jbHVkZSA8d3RmL1dvcmtRdWV1ZS5oPgogCiBu
YW1lc3BhY2UgV2ViS2l0IHsKIAogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKLXRlbXBsYXRl
PHR5cGVuYW1lIFQ+IHN0YXRpYyBpbmxpbmUgU3RyaW5nIHByaW1hcnlEb21haW4oY29uc3QgVCYg
dmFsdWUpCi17Ci0gICAgcmV0dXJuIFJlc291cmNlTG9hZFN0YXRpc3RpY3M6OnByaW1hcnlEb21h
aW4odmFsdWUpOwotfQotCiBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWFuYWdlciYgV2ViUmVz
b3VyY2VMb2FkU3RhdGlzdGljc01hbmFnZXI6OnNoYXJlZCgpCiB7CiAgICAgc3RhdGljIE5ldmVy
RGVzdHJveWVkPFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NNYW5hZ2VyPiB3ZWJSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzTWFuYWdlcjsKICAgICByZXR1cm4gd2ViUmVzb3VyY2VMb2FkU3RhdGlzdGlj
c01hbmFnZXI7CiB9CiAKLXZvaWQgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc01hbmFnZXI6OnNl
dFN0YXRpc3RpY3NTdG9yZShSZWY8UmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlPiYmIHN0b3Jl
KQorV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc01hbmFnZXI6OldlYlJlc291cmNlTG9hZFN0YXRp
c3RpY3NNYW5hZ2VyKCkKK3sKK30KKworV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc01hbmFnZXI6
On5XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWFuYWdlcigpCiB7Ci0gICAgaWYgKG1fc3RvcmUg
JiYgbV9xdWV1ZSkKLSAgICAgICAgbV9xdWV1ZSA9IG51bGxwdHI7Ci0gICAgbV9zdG9yZSA9IFdU
Rk1vdmUoc3RvcmUpOwogfQogCi12b2lkIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NNYW5hZ2Vy
OjpzZXRTdGF0aXN0aWNzUXVldWUoUmVmPFdURjo6V29ya1F1ZXVlPiYmIHF1ZXVlKQordm9pZCBX
ZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWFuYWdlcjo6c2V0U3RhdGlzdGljc1N0b3JlKFJlZjxX
ZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU+JiYgc3RvcmUpCiB7Ci0gICAgQVNTRVJUKCFt
X3F1ZXVlKTsKLSAgICBtX3F1ZXVlID0gV1RGTW92ZShxdWV1ZSk7CisgICAgbV9zdG9yZSA9IFdU
Rk1vdmUoc3RvcmUpOwogfQogCiB2b2lkIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NNYW5hZ2Vy
OjpjbGVhckluTWVtb3J5U3RvcmUoKQpAQCAtNjcsMTAgKzU4LDcgQEAgdm9pZCBXZWJSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzTWFuYWdlcjo6Y2xlYXJJbk1lbW9yeVN0b3JlKCkKICAgICBpZiAoIW1f
c3RvcmUpCiAgICAgICAgIHJldHVybjsKIAotICAgIEFTU0VSVChtX3F1ZXVlKTsKLSAgICBtX3F1
ZXVlLT5kaXNwYXRjaChbdGhpc10gewotICAgICAgICBtX3N0b3JlLT5jbGVhckluTWVtb3J5KCk7
Ci0gICAgfSk7CisgICAgbV9zdG9yZS0+Y2xlYXJJbk1lbW9yeSgpOwogfQogCiB2b2lkIFdlYlJl
c291cmNlTG9hZFN0YXRpc3RpY3NNYW5hZ2VyOjpjbGVhckluTWVtb3J5QW5kUGVyc2lzdGVudFN0
b3JlKCkKQEAgLTc4LDIwNSArNjYsMTY2IEBAIHZvaWQgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGlj
c01hbmFnZXI6OmNsZWFySW5NZW1vcnlBbmRQZXJzaXN0ZW50U3RvcmUoKQogICAgIGlmICghbV9z
dG9yZSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgQVNTRVJUKG1fcXVldWUpOwotICAgIG1fcXVl
dWUtPmRpc3BhdGNoKFt0aGlzXSB7Ci0gICAgICAgIG1fc3RvcmUtPmNsZWFySW5NZW1vcnlBbmRQ
ZXJzaXN0ZW50KCk7Ci0gICAgfSk7CisgICAgbV9zdG9yZS0+Y2xlYXJJbk1lbW9yeUFuZFBlcnNp
c3RlbnQoKTsKIH0KIAogdm9pZCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWFuYWdlcjo6Y2xl
YXJJbk1lbW9yeUFuZFBlcnNpc3RlbnRTdG9yZShzdGQ6OmNocm9ubzo6c3lzdGVtX2Nsb2NrOjp0
aW1lX3BvaW50IG1vZGlmaWVkU2luY2UpCiB7Ci0gICAgLy8gRm9yIG5vdywgYmUgY29uc2VydmF0
aXZlIGFuZCBjbGVhciBldmVyeXRoaW5nIHJlZ2FyZGxlc3Mgb2YgbW9kaWZpZWRTaW5jZQotICAg
IFVOVVNFRF9QQVJBTShtb2RpZmllZFNpbmNlKTsKLSAgICBjbGVhckluTWVtb3J5QW5kUGVyc2lz
dGVudFN0b3JlKCk7CisgICAgaWYgKCFtX3N0b3JlKQorICAgICAgICByZXR1cm47CisKKyAgICBt
X3N0b3JlLT5jbGVhckluTWVtb3J5QW5kUGVyc2lzdGVudChtb2RpZmllZFNpbmNlKTsKIH0KIAog
dm9pZCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWFuYWdlcjo6bG9nVXNlckludGVyYWN0aW9u
KGNvbnN0IFVSTCYgdXJsKQogewotICAgIGlmICh1cmwuaXNCbGFua1VSTCgpIHx8IHVybC5pc0Vt
cHR5KCkpCisgICAgaWYgKCFtX3N0b3JlKQogICAgICAgICByZXR1cm47CiAKLSAgICBBU1NFUlQo
bV9xdWV1ZSk7Ci0gICAgbV9xdWV1ZS0+ZGlzcGF0Y2goW3RoaXMsIHByaW1hcnlEb21haW5TdHJp
bmcgPSBwcmltYXJ5RG9tYWluKHVybCkuaXNvbGF0ZWRDb3B5KCldIHsKLSAgICAgICAgewotICAg
ICAgICAgICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhtX3N0b3JlLT5zdGF0aXN0aWNzTG9jaygp
KTsKLSAgICAgICAgICAgIGF1dG8mIHN0YXRpc3RpY3MgPSBtX3N0b3JlLT5lbnN1cmVSZXNvdXJj
ZVN0YXRpc3RpY3NGb3JQcmltYXJ5RG9tYWluKHByaW1hcnlEb21haW5TdHJpbmcpOwotICAgICAg
ICAgICAgc3RhdGlzdGljcy5oYWRVc2VySW50ZXJhY3Rpb24gPSB0cnVlOwotICAgICAgICAgICAg
c3RhdGlzdGljcy5tb3N0UmVjZW50VXNlckludGVyYWN0aW9uVGltZSA9IFdhbGxUaW1lOjpub3co
KTsKLSAgICAgICAgfQotCi0gICAgICAgIG1fc3RvcmUtPmZpcmVTaG91bGRQYXJ0aXRpb25Db29r
aWVzSGFuZGxlcih7IHByaW1hcnlEb21haW5TdHJpbmcgfSwgeyB9LCBmYWxzZSk7Ci0gICAgfSk7
CisgICAgbV9zdG9yZS0+bG9nVXNlckludGVyYWN0aW9uKHVybCk7CiB9CiAKIHZvaWQgV2ViUmVz
b3VyY2VMb2FkU3RhdGlzdGljc01hbmFnZXI6OmNsZWFyVXNlckludGVyYWN0aW9uKGNvbnN0IFVS
TCYgdXJsKQogewotICAgIGlmICh1cmwuaXNCbGFua1VSTCgpIHx8IHVybC5pc0VtcHR5KCkpCisg
ICAgaWYgKCFtX3N0b3JlKQogICAgICAgICByZXR1cm47CiAKLSAgICBhdXRvIGxvY2tlciA9IGhv
bGRMb2NrKG1fc3RvcmUtPnN0YXRpc3RpY3NMb2NrKCkpOwotICAgIGF1dG8mIHN0YXRpc3RpY3Mg
PSBtX3N0b3JlLT5lbnN1cmVSZXNvdXJjZVN0YXRpc3RpY3NGb3JQcmltYXJ5RG9tYWluKHByaW1h
cnlEb21haW4odXJsKSk7Ci0KLSAgICBzdGF0aXN0aWNzLmhhZFVzZXJJbnRlcmFjdGlvbiA9IGZh
bHNlOwotICAgIHN0YXRpc3RpY3MubW9zdFJlY2VudFVzZXJJbnRlcmFjdGlvblRpbWUgPSB7IH07
CisgICAgbV9zdG9yZS0+Y2xlYXJVc2VySW50ZXJhY3Rpb24odXJsKTsKIH0KIAogYm9vbCBXZWJS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWFuYWdlcjo6aGFzSGFkVXNlckludGVyYWN0aW9uKGNvbnN0
IFVSTCYgdXJsKQogewotICAgIGlmICh1cmwuaXNCbGFua1VSTCgpIHx8IHVybC5pc0VtcHR5KCkp
CisgICAgaWYgKCFtX3N0b3JlKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBhdXRvIGxv
Y2tlciA9IGhvbGRMb2NrKG1fc3RvcmUtPnN0YXRpc3RpY3NMb2NrKCkpOwotICAgIGF1dG8mIHN0
YXRpc3RpY3MgPSBtX3N0b3JlLT5lbnN1cmVSZXNvdXJjZVN0YXRpc3RpY3NGb3JQcmltYXJ5RG9t
YWluKHByaW1hcnlEb21haW4odXJsKSk7Ci0KLSAgICByZXR1cm4gbV9zdG9yZS0+aGFzSGFkUmVj
ZW50VXNlckludGVyYWN0aW9uKHN0YXRpc3RpY3MpOworICAgIHJldHVybiBtX3N0b3JlLT5oYXNI
YWRVc2VySW50ZXJhY3Rpb24odXJsKTsKIH0KIAogdm9pZCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0
aWNzTWFuYWdlcjo6c2V0UHJldmFsZW50UmVzb3VyY2UoY29uc3QgVVJMJiB1cmwpCiB7Ci0gICAg
aWYgKHVybC5pc0JsYW5rVVJMKCkgfHwgdXJsLmlzRW1wdHkoKSkKKyAgICBpZiAoIW1fc3RvcmUp
CiAgICAgICAgIHJldHVybjsKIAotICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2sobV9zdG9yZS0+
c3RhdGlzdGljc0xvY2soKSk7Ci0gICAgYXV0byYgc3RhdGlzdGljcyA9IG1fc3RvcmUtPmVuc3Vy
ZVJlc291cmNlU3RhdGlzdGljc0ZvclByaW1hcnlEb21haW4ocHJpbWFyeURvbWFpbih1cmwpKTsK
LQotICAgIHN0YXRpc3RpY3MuaXNQcmV2YWxlbnRSZXNvdXJjZSA9IHRydWU7CisgICAgbV9zdG9y
ZS0+c2V0UHJldmFsZW50UmVzb3VyY2UodXJsKTsKIH0KIAogYm9vbCBXZWJSZXNvdXJjZUxvYWRT
dGF0aXN0aWNzTWFuYWdlcjo6aXNQcmV2YWxlbnRSZXNvdXJjZShjb25zdCBVUkwmIHVybCkKIHsK
LSAgICBpZiAodXJsLmlzQmxhbmtVUkwoKSB8fCB1cmwuaXNFbXB0eSgpKQorICAgIGlmICghbV9z
dG9yZSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgYXV0byBsb2NrZXIgPSBob2xkTG9j
ayhtX3N0b3JlLT5zdGF0aXN0aWNzTG9jaygpKTsKLSAgICBhdXRvJiBzdGF0aXN0aWNzID0gbV9z
dG9yZS0+ZW5zdXJlUmVzb3VyY2VTdGF0aXN0aWNzRm9yUHJpbWFyeURvbWFpbihwcmltYXJ5RG9t
YWluKHVybCkpOwotCi0gICAgcmV0dXJuIHN0YXRpc3RpY3MuaXNQcmV2YWxlbnRSZXNvdXJjZTsK
KyAgICByZXR1cm4gbV9zdG9yZS0+aXNQcmV2YWxlbnRSZXNvdXJjZSh1cmwpOwogfQogCiB2b2lk
IFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NNYW5hZ2VyOjpjbGVhclByZXZhbGVudFJlc291cmNl
KGNvbnN0IFVSTCYgdXJsKQogewotICAgIGlmICh1cmwuaXNCbGFua1VSTCgpIHx8IHVybC5pc0Vt
cHR5KCkpCisgICAgaWYgKCFtX3N0b3JlKQogICAgICAgICByZXR1cm47CiAKLSAgICBhdXRvIGxv
Y2tlciA9IGhvbGRMb2NrKG1fc3RvcmUtPnN0YXRpc3RpY3NMb2NrKCkpOwotICAgIGF1dG8mIHN0
YXRpc3RpY3MgPSBtX3N0b3JlLT5lbnN1cmVSZXNvdXJjZVN0YXRpc3RpY3NGb3JQcmltYXJ5RG9t
YWluKHByaW1hcnlEb21haW4odXJsKSk7Ci0KLSAgICBzdGF0aXN0aWNzLmlzUHJldmFsZW50UmVz
b3VyY2UgPSBmYWxzZTsKKyAgICBtX3N0b3JlLT5jbGVhclByZXZhbGVudFJlc291cmNlKHVybCk7
CiB9CiAKIHZvaWQgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc01hbmFnZXI6OnNldEdyYW5kZmF0
aGVyZWQoY29uc3QgVVJMJiB1cmwsIGJvb2wgdmFsdWUpCiB7Ci0gICAgaWYgKHVybC5pc0JsYW5r
VVJMKCkgfHwgdXJsLmlzRW1wdHkoKSkKKyAgICBpZiAoIW1fc3RvcmUpCiAgICAgICAgIHJldHVy
bjsKIAotICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2sobV9zdG9yZS0+c3RhdGlzdGljc0xvY2so
KSk7Ci0gICAgYXV0byYgc3RhdGlzdGljcyA9IG1fc3RvcmUtPmVuc3VyZVJlc291cmNlU3RhdGlz
dGljc0ZvclByaW1hcnlEb21haW4ocHJpbWFyeURvbWFpbih1cmwpKTsKLQotICAgIHN0YXRpc3Rp
Y3MuZ3JhbmRmYXRoZXJlZCA9IHZhbHVlOworICAgIG1fc3RvcmUtPnNldEdyYW5kZmF0aGVyZWQo
dXJsLCB2YWx1ZSk7CiB9CiAKIGJvb2wgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc01hbmFnZXI6
OmlzR3JhbmRmYXRoZXJlZChjb25zdCBVUkwmIHVybCkKIHsKLSAgICBpZiAodXJsLmlzQmxhbmtV
UkwoKSB8fCB1cmwuaXNFbXB0eSgpKQorICAgIGlmICghbV9zdG9yZSkKICAgICAgICAgcmV0dXJu
IGZhbHNlOwogCi0gICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhtX3N0b3JlLT5zdGF0aXN0aWNz
TG9jaygpKTsKLSAgICBhdXRvJiBzdGF0aXN0aWNzID0gbV9zdG9yZS0+ZW5zdXJlUmVzb3VyY2VT
dGF0aXN0aWNzRm9yUHJpbWFyeURvbWFpbihwcmltYXJ5RG9tYWluKHVybCkpOwotCi0gICAgcmV0
dXJuIHN0YXRpc3RpY3MuZ3JhbmRmYXRoZXJlZDsKKyAgICByZXR1cm4gbV9zdG9yZS0+aXNHcmFu
ZGZhdGhlcmVkKHVybCk7CiB9CiAKIHZvaWQgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc01hbmFn
ZXI6OnNldFN1YmZyYW1lVW5kZXJUb3BGcmFtZU9yaWdpbihjb25zdCBVUkwmIHN1YmZyYW1lLCBj
b25zdCBVUkwmIHRvcEZyYW1lKQogewotICAgIGlmIChzdWJmcmFtZS5pc0JsYW5rVVJMKCkgfHwg
c3ViZnJhbWUuaXNFbXB0eSgpIHx8IHRvcEZyYW1lLmlzQmxhbmtVUkwoKSB8fCB0b3BGcmFtZS5p
c0VtcHR5KCkpCisgICAgaWYgKCFtX3N0b3JlKQogICAgICAgICByZXR1cm47CiAKLSAgICBBU1NF
UlQobV9xdWV1ZSk7Ci0gICAgbV9xdWV1ZS0+ZGlzcGF0Y2goW3RoaXMsIHByaW1hcnlUb3BGcmFt
ZURvbWFpblN0cmluZyA9IHByaW1hcnlEb21haW4odG9wRnJhbWUpLmlzb2xhdGVkQ29weSgpLCBw
cmltYXJ5U3ViRnJhbWVEb21haW5TdHJpbmcgPSBwcmltYXJ5RG9tYWluKHN1YmZyYW1lKS5pc29s
YXRlZENvcHkoKV0gewotICAgICAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKG1fc3RvcmUtPnN0
YXRpc3RpY3NMb2NrKCkpOwotICAgICAgICBhdXRvJiBzdGF0aXN0aWNzID0gbV9zdG9yZS0+ZW5z
dXJlUmVzb3VyY2VTdGF0aXN0aWNzRm9yUHJpbWFyeURvbWFpbihwcmltYXJ5U3ViRnJhbWVEb21h
aW5TdHJpbmcpOwotICAgICAgICBzdGF0aXN0aWNzLnN1YmZyYW1lVW5kZXJUb3BGcmFtZU9yaWdp
bnMuYWRkKHByaW1hcnlUb3BGcmFtZURvbWFpblN0cmluZyk7Ci0gICAgfSk7CisgICAgbV9zdG9y
ZS0+c2V0U3ViZnJhbWVVbmRlclRvcEZyYW1lT3JpZ2luKHN1YmZyYW1lLCB0b3BGcmFtZSk7CiB9
CiAKIHZvaWQgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc01hbmFnZXI6OnNldFN1YnJlc291cmNl
VW5kZXJUb3BGcmFtZU9yaWdpbihjb25zdCBVUkwmIHN1YnJlc291cmNlLCBjb25zdCBVUkwmIHRv
cEZyYW1lKQogewotICAgIGlmIChzdWJyZXNvdXJjZS5pc0JsYW5rVVJMKCkgfHwgc3VicmVzb3Vy
Y2UuaXNFbXB0eSgpIHx8IHRvcEZyYW1lLmlzQmxhbmtVUkwoKSB8fCB0b3BGcmFtZS5pc0VtcHR5
KCkpCisgICAgaWYgKCFtX3N0b3JlKQogICAgICAgICByZXR1cm47CiAKLSAgICBBU1NFUlQobV9x
dWV1ZSk7Ci0gICAgbV9xdWV1ZS0+ZGlzcGF0Y2goW3RoaXMsIHByaW1hcnlUb3BGcmFtZURvbWFp
blN0cmluZyA9IHByaW1hcnlEb21haW4odG9wRnJhbWUpLmlzb2xhdGVkQ29weSgpLCBwcmltYXJ5
U3VicmVzb3VyY2VEb21haW5TdHJpbmcgPSBwcmltYXJ5RG9tYWluKHN1YnJlc291cmNlKS5pc29s
YXRlZENvcHkoKV0gewotICAgICAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKG1fc3RvcmUtPnN0
YXRpc3RpY3NMb2NrKCkpOwotICAgICAgICBhdXRvJiBzdGF0aXN0aWNzID0gbV9zdG9yZS0+ZW5z
dXJlUmVzb3VyY2VTdGF0aXN0aWNzRm9yUHJpbWFyeURvbWFpbihwcmltYXJ5U3VicmVzb3VyY2VE
b21haW5TdHJpbmcpOwotICAgICAgICBzdGF0aXN0aWNzLnN1YnJlc291cmNlVW5kZXJUb3BGcmFt
ZU9yaWdpbnMuYWRkKHByaW1hcnlUb3BGcmFtZURvbWFpblN0cmluZyk7Ci0gICAgfSk7CisgICAg
bV9zdG9yZS0+c2V0U3VicmVzb3VyY2VVbmRlclRvcEZyYW1lT3JpZ2luKHN1YnJlc291cmNlLCB0
b3BGcmFtZSk7CiB9CiAKIHZvaWQgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc01hbmFnZXI6OnNl
dFN1YnJlc291cmNlVW5pcXVlUmVkaXJlY3RUbyhjb25zdCBVUkwmIHN1YnJlc291cmNlLCBjb25z
dCBVUkwmIGhvc3ROYW1lUmVkaXJlY3RlZFRvKQogewotICAgIGlmIChzdWJyZXNvdXJjZS5pc0Js
YW5rVVJMKCkgfHwgc3VicmVzb3VyY2UuaXNFbXB0eSgpIHx8IGhvc3ROYW1lUmVkaXJlY3RlZFRv
LmlzQmxhbmtVUkwoKSB8fCBob3N0TmFtZVJlZGlyZWN0ZWRUby5pc0VtcHR5KCkpCisgICAgaWYg
KCFtX3N0b3JlKQogICAgICAgICByZXR1cm47CiAKLSAgICBBU1NFUlQobV9xdWV1ZSk7Ci0gICAg
bV9xdWV1ZS0+ZGlzcGF0Y2goW3RoaXMsIHByaW1hcnlSZWRpcmVjdERvbWFpblN0cmluZyA9IHBy
aW1hcnlEb21haW4oaG9zdE5hbWVSZWRpcmVjdGVkVG8pLmlzb2xhdGVkQ29weSgpLCBwcmltYXJ5
U3VicmVzb3VyY2VEb21haW5TdHJpbmcgPSBwcmltYXJ5RG9tYWluKHN1YnJlc291cmNlKS5pc29s
YXRlZENvcHkoKV0gewotICAgICAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKG1fc3RvcmUtPnN0
YXRpc3RpY3NMb2NrKCkpOwotICAgICAgICBhdXRvJiBzdGF0aXN0aWNzID0gbV9zdG9yZS0+ZW5z
dXJlUmVzb3VyY2VTdGF0aXN0aWNzRm9yUHJpbWFyeURvbWFpbihwcmltYXJ5U3VicmVzb3VyY2VE
b21haW5TdHJpbmcpOwotICAgICAgICBzdGF0aXN0aWNzLnN1YnJlc291cmNlVW5pcXVlUmVkaXJl
Y3RzVG8uYWRkKHByaW1hcnlSZWRpcmVjdERvbWFpblN0cmluZyk7Ci0gICAgfSk7CisgICAgbV9z
dG9yZS0+c2V0U3VicmVzb3VyY2VVbmlxdWVSZWRpcmVjdFRvKHN1YnJlc291cmNlLCBob3N0TmFt
ZVJlZGlyZWN0ZWRUbyk7CiB9CiAKIHZvaWQgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc01hbmFn
ZXI6OnNldFRpbWVUb0xpdmVVc2VySW50ZXJhY3Rpb24oU2Vjb25kcyBzZWNvbmRzKQogeworICAg
IGlmICghbV9zdG9yZSkKKyAgICAgICAgcmV0dXJuOworCiAgICAgbV9zdG9yZS0+c2V0VGltZVRv
TGl2ZVVzZXJJbnRlcmFjdGlvbihzZWNvbmRzKTsKIH0KIAogdm9pZCBXZWJSZXNvdXJjZUxvYWRT
dGF0aXN0aWNzTWFuYWdlcjo6c2V0VGltZVRvTGl2ZUNvb2tpZVBhcnRpdGlvbkZyZWUoU2Vjb25k
cyBzZWNvbmRzKQogeworICAgIGlmICghbV9zdG9yZSkKKyAgICAgICAgcmV0dXJuOworCiAgICAg
bV9zdG9yZS0+c2V0VGltZVRvTGl2ZUNvb2tpZVBhcnRpdGlvbkZyZWUoc2Vjb25kcyk7CiB9CiAK
LXZvaWQgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc01hbmFnZXI6OnNldE1pbmltdW1UaW1lQmV0
d2VlZW5EYXRhUmVjb3Jkc1JlbW92YWwoU2Vjb25kcyBzZWNvbmRzKQordm9pZCBXZWJSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzTWFuYWdlcjo6c2V0TWluaW11bVRpbWVCZXR3ZWVuRGF0YVJlY29yZHNS
ZW1vdmFsKFNlY29uZHMgc2Vjb25kcykKIHsKLSAgICBtX3N0b3JlLT5zZXRNaW5pbXVtVGltZUJl
dHdlZWVuRGF0YVJlY29yZHNSZW1vdmFsKHNlY29uZHMpOworICAgIGlmICghbV9zdG9yZSkKKyAg
ICAgICAgcmV0dXJuOworCisgICAgbV9zdG9yZS0+c2V0TWluaW11bVRpbWVCZXR3ZWVuRGF0YVJl
Y29yZHNSZW1vdmFsKHNlY29uZHMpOwogfQogCiB2b2lkIFdlYlJlc291cmNlTG9hZFN0YXRpc3Rp
Y3NNYW5hZ2VyOjpzZXRHcmFuZGZhdGhlcmluZ1RpbWUoU2Vjb25kcyBzZWNvbmRzKQogewotICAg
IG1fc3RvcmUtPnNldE1pbmltdW1UaW1lQmV0d2VlZW5EYXRhUmVjb3Jkc1JlbW92YWwoc2Vjb25k
cyk7CisgICAgaWYgKCFtX3N0b3JlKQorICAgICAgICByZXR1cm47CisKKyAgICBtX3N0b3JlLT5z
ZXRHcmFuZGZhdGhlcmluZ1RpbWUoc2Vjb25kcyk7CiB9CiAKIHZvaWQgV2ViUmVzb3VyY2VMb2Fk
U3RhdGlzdGljc01hbmFnZXI6OmZpcmVEYXRhTW9kaWZpY2F0aW9uSGFuZGxlcigpCiB7Ci0gICAg
Ly8gSGVscGVyIGZ1bmN0aW9uIHVzZWQgYnkgdGVzdGluZyBzeXN0ZW0uIFNob3VsZCBvbmx5IGJl
IGNhbGxlZCBmcm9tIHRoZSBtYWluIHRocmVhZC4KLSAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWlu
KCkpOwotICAgIG1fcXVldWUtPmRpc3BhdGNoKFt0aGlzXSB7Ci0gICAgICAgIG1fc3RvcmUtPmZp
cmVEYXRhTW9kaWZpY2F0aW9uSGFuZGxlcigpOwotICAgIH0pOworICAgIGlmICghbV9zdG9yZSkK
KyAgICAgICAgcmV0dXJuOworCisgICAgbV9zdG9yZS0+ZmlyZURhdGFNb2RpZmljYXRpb25IYW5k
bGVyKCk7CiB9CiAKIHZvaWQgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc01hbmFnZXI6OmZpcmVT
aG91bGRQYXJ0aXRpb25Db29raWVzSGFuZGxlcigpCiB7Ci0gICAgLy8gSGVscGVyIGZ1bmN0aW9u
IHVzZWQgYnkgdGVzdGluZyBzeXN0ZW0uIFNob3VsZCBvbmx5IGJlIGNhbGxlZCBmcm9tIHRoZSBt
YWluIHRocmVhZC4KLSAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOwotICAgIG1fcXVldWUt
PmRpc3BhdGNoKFt0aGlzXSB7Ci0gICAgICAgIG1fc3RvcmUtPmZpcmVTaG91bGRQYXJ0aXRpb25D
b29raWVzSGFuZGxlcigpOwotICAgIH0pOworICAgIGlmICghbV9zdG9yZSkKKyAgICAgICAgcmV0
dXJuOworCisgICAgbV9zdG9yZS0+ZmlyZVNob3VsZFBhcnRpdGlvbkNvb2tpZXNIYW5kbGVyKCk7
CiB9CiAKIHZvaWQgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc01hbmFnZXI6OmZpcmVTaG91bGRQ
YXJ0aXRpb25Db29raWVzSGFuZGxlcihjb25zdCBWZWN0b3I8U3RyaW5nPiYgZG9tYWluc1RvUmVt
b3ZlLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgZG9tYWluc1RvQWRkLCBib29sIGNsZWFyRmlyc3Qp
CiB7Ci0gICAgLy8gSGVscGVyIGZ1bmN0aW9uIHVzZWQgYnkgdGVzdGluZyBzeXN0ZW0uIFNob3Vs
ZCBvbmx5IGJlIGNhbGxlZCBmcm9tIHRoZSBtYWluIHRocmVhZC4KLSAgICBBU1NFUlQoUnVuTG9v
cDo6aXNNYWluKCkpOwotICAgIG1fcXVldWUtPmRpc3BhdGNoKFt0aGlzLCBkb21haW5zVG9SZW1v
dmUgPSBDcm9zc1RocmVhZENvcGllcjxWZWN0b3I8U3RyaW5nPj46OmNvcHkoZG9tYWluc1RvUmVt
b3ZlKSwgZG9tYWluc1RvQWRkID0gQ3Jvc3NUaHJlYWRDb3BpZXI8VmVjdG9yPFN0cmluZz4+Ojpj
b3B5KGRvbWFpbnNUb0FkZCksIGNsZWFyRmlyc3RdIHsKLSAgICAgICAgbV9zdG9yZS0+ZmlyZVNo
b3VsZFBhcnRpdGlvbkNvb2tpZXNIYW5kbGVyKGRvbWFpbnNUb1JlbW92ZSwgZG9tYWluc1RvQWRk
LCBjbGVhckZpcnN0KTsKLSAgICB9KTsKKyAgICBpZiAoIW1fc3RvcmUpCisgICAgICAgIHJldHVy
bjsKKworICAgIG1fc3RvcmUtPmZpcmVTaG91bGRQYXJ0aXRpb25Db29raWVzSGFuZGxlcihkb21h
aW5zVG9SZW1vdmUsIGRvbWFpbnNUb0FkZCwgY2xlYXJGaXJzdCk7CiB9CiAKIHZvaWQgV2ViUmVz
b3VyY2VMb2FkU3RhdGlzdGljc01hbmFnZXI6OmZpcmVUZWxlbWV0cnlIYW5kbGVyKCkKIHsKLSAg
ICAvLyBIZWxwZXIgZnVuY3Rpb24gdXNlZCBieSB0ZXN0aW5nIHN5c3RlbS4gU2hvdWxkIG9ubHkg
YmUgY2FsbGVkIGZyb20gdGhlIG1haW4gdGhyZWFkLgotICAgIEFTU0VSVChSdW5Mb29wOjppc01h
aW4oKSk7CisgICAgaWYgKCFtX3N0b3JlKQorICAgICAgICByZXR1cm47CisKICAgICBtX3N0b3Jl
LT5maXJlVGVsZW1ldHJ5SGFuZGxlcigpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc01hbmFnZXIuaCBiL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWFuYWdlci5oCmluZGV4
IGViODQ0ZjU1YTI2NzJjMGQwZmEzOGRkOTdkN2IwNjc5MmI0YzgyNmMuLjIyYmIyMDgxMDA1ZDU0
MDdjMTcwODY1NjQ1M2ZhMjk2NTU5YWY2Y2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWFuYWdlci5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWFuYWdlci5oCkBAIC0y
OSwyMiArMjksMjMgQEAKICNpbmNsdWRlIDx3dGYvU2Vjb25kcy5oPgogI2luY2x1ZGUgPHd0Zi90
ZXh0L1dURlN0cmluZy5oPgogCi1uYW1lc3BhY2UgV1RGIHsKLWNsYXNzIFdvcmtRdWV1ZTsKLX0K
LQogbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgVVJMOwogfQogCiBuYW1lc3BhY2UgV2ViS2l0
IHsKIAotY2xhc3MgUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOworY2xhc3MgV2ViUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc1N0b3JlOwogCisvLyBGSVhNRTogVGhpcyBzaG91bGQgcHJvYmFibHkg
YmVjb21lIGFuIEFQSU9iamVjdCBmb3IgdGhlIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9y
ZS4KIGNsYXNzIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NNYW5hZ2VyIHsKICAgICBmcmllbmQg
Y2xhc3MgTmV2ZXJEZXN0cm95ZWQ8V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc01hbmFnZXI+Owog
cHVibGljOgorICAgIC8vIEZJWE1FOiBUaGlzIHNob3VsZCBub3QgYmUgYSBzaW5nbGV0b24uCiAg
ICAgc3RhdGljIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NNYW5hZ2VyJiBzaGFyZWQoKTsKKyAg
ICB2b2lkIHNldFN0YXRpc3RpY3NTdG9yZShSZWY8V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0
b3JlPiYmKTsKKworICAgIH5XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWFuYWdlcigpOwogCiAg
ICAgdm9pZCBsb2dVc2VySW50ZXJhY3Rpb24oY29uc3QgV2ViQ29yZTo6VVJMJik7CiAgICAgYm9v
bCBoYXNIYWRVc2VySW50ZXJhY3Rpb24oY29uc3QgV2ViQ29yZTo6VVJMJik7CkBAIC02Miw3ICs2
Myw3IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgc2V0VGltZVRvTGl2ZVVzZXJJbnRlcmFjdGlvbihT
ZWNvbmRzKTsKICAgICB2b2lkIHNldFRpbWVUb0xpdmVDb29raWVQYXJ0aXRpb25GcmVlKFNlY29u
ZHMpOwotICAgIHZvaWQgc2V0TWluaW11bVRpbWVCZXR3ZWVlbkRhdGFSZWNvcmRzUmVtb3ZhbChT
ZWNvbmRzKTsKKyAgICB2b2lkIHNldE1pbmltdW1UaW1lQmV0d2VlbkRhdGFSZWNvcmRzUmVtb3Zh
bChTZWNvbmRzKTsKICAgICB2b2lkIHNldEdyYW5kZmF0aGVyaW5nVGltZShTZWNvbmRzKTsKIAog
ICAgIHZvaWQgZmlyZURhdGFNb2RpZmljYXRpb25IYW5kbGVyKCk7CkBAIC03MCwxOSArNzEsMTQg
QEAgcHVibGljOgogICAgIHZvaWQgZmlyZVNob3VsZFBhcnRpdGlvbkNvb2tpZXNIYW5kbGVyKGNv
bnN0IFZlY3RvcjxTdHJpbmc+JiBkb21haW5zVG9SZW1vdmUsIGNvbnN0IFZlY3RvcjxTdHJpbmc+
JiBkb21haW5zVG9BZGQsIGJvb2wgY2xlYXJGaXJzdCk7CiAgICAgdm9pZCBmaXJlVGVsZW1ldHJ5
SGFuZGxlcigpOwogCi0gICAgdm9pZCBzZXRTdGF0aXN0aWNzU3RvcmUoUmVmPFJlc291cmNlTG9h
ZFN0YXRpc3RpY3NTdG9yZT4mJik7Ci0gICAgdm9pZCBzZXRTdGF0aXN0aWNzUXVldWUoUmVmPFdU
Rjo6V29ya1F1ZXVlPiYmKTsKICAgICB2b2lkIGNsZWFySW5NZW1vcnlTdG9yZSgpOwogICAgIHZv
aWQgY2xlYXJJbk1lbW9yeUFuZFBlcnNpc3RlbnRTdG9yZSgpOwogICAgIHZvaWQgY2xlYXJJbk1l
bW9yeUFuZFBlcnNpc3RlbnRTdG9yZShzdGQ6OmNocm9ubzo6c3lzdGVtX2Nsb2NrOjp0aW1lX3Bv
aW50IG1vZGlmaWVkU2luY2UpOwogCi0jaWYgUExBVEZPUk0oQ09DT0EpCi0gICAgdm9pZCByZWdp
c3RlclVzZXJEZWZhdWx0c0lmTmVlZGVkKCk7Ci0jZW5kaWYKLQogcHJpdmF0ZToKLSAgICBSZWZQ
dHI8UmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlPiBtX3N0b3JlOwotICAgIFJlZlB0cjxXVEY6
OldvcmtRdWV1ZT4gbV9xdWV1ZTsKKyAgICBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWFuYWdl
cigpOworCisgICAgUmVmUHRyPFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZT4gbV9zdG9y
ZTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5jcHAgYi9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmNwcAppbmRl
eCAzOWVhNDJkNjE4ZWViMGI4MDk1ZGYxOTE5ODJhNDk5MWYwN2EwYmNjLi42YzNkMDBlZTE4OWE5
N2U5NjFhOTdkNTY0ZDhhOWRiZDFlYTUzNmFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmNwcApAQCAt
NTQsNiArNTQsMTEgQEAgdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKIG5hbWVzcGFjZSBXZWJL
aXQgewogCit0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBzdGF0aWMgaW5saW5lIFN0cmluZyBwcmltYXJ5
RG9tYWluKGNvbnN0IFQmIHZhbHVlKQoreworICAgIHJldHVybiBSZXNvdXJjZUxvYWRTdGF0aXN0
aWNzOjpwcmltYXJ5RG9tYWluKHZhbHVlKTsKK30KKwogc3RhdGljIGJvb2wgbm90aWZ5UGFnZXNX
aGVuRGF0YVJlY29yZHNXZXJlU2Nhbm5lZCA9IGZhbHNlOwogc3RhdGljIGJvb2wgc2hvdWxkQ2xh
c3NpZnlSZXNvdXJjZXNCZWZvcmVEYXRhUmVjb3Jkc1JlbW92YWwgPSB0cnVlOwogc3RhdGljIGF1
dG8gc2hvdWxkU3VibWl0VGVsZW1ldHJ5ID0gdHJ1ZTsKQEAgLTIwOSw4ICsyMTQsNyBAQCB2b2lk
IFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6cmVnaXN0ZXJTaGFyZWRSZXNvdXJjZUxv
YWRPYnNlcnZlcigpCiB7CiAgICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKICAgICAKLSAg
ICBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWFuYWdlcjo6c2hhcmVkKCkuc2V0U3RhdGlzdGlj
c1N0b3JlKG1fcmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmNvcHlSZWYoKSk7Ci0gICAgV2Vi
UmVzb3VyY2VMb2FkU3RhdGlzdGljc01hbmFnZXI6OnNoYXJlZCgpLnNldFN0YXRpc3RpY3NRdWV1
ZShtX3N0YXRpc3RpY3NRdWV1ZS5jb3B5UmVmKCkpOworICAgIFdlYlJlc291cmNlTG9hZFN0YXRp
c3RpY3NNYW5hZ2VyOjpzaGFyZWQoKS5zZXRTdGF0aXN0aWNzU3RvcmUoKnRoaXMpOwogICAgIG1f
cmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLT5zZXROb3RpZmljYXRpb25DYWxsYmFjayhbdGhp
cywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpXSB7CiAgICAgICAgIGlmIChtX3Jlc291
cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS0+aXNFbXB0eSgpKQogICAgICAgICAgICAgcmV0dXJuOwpA
QCAtMjMyLDExICsyMzYsMTIgQEAgdm9pZCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6
OnJlZ2lzdGVyU2hhcmVkUmVzb3VyY2VMb2FkT2JzZXJ2ZXIoKQogICAgIG1fcmVzb3VyY2VMb2Fk
U3RhdGlzdGljc1N0b3JlLT5zZXRGaXJlVGVsZW1ldHJ5Q2FsbGJhY2soW3RoaXMsIHByb3RlY3Rl
ZFRoaXMgPSBtYWtlUmVmKCp0aGlzKV0gewogICAgICAgICBzdWJtaXRUZWxlbWV0cnkoKTsKICAg
ICB9KTsKKwogI2lmIFBMQVRGT1JNKENPQ09BKQotICAgIFdlYlJlc291cmNlTG9hZFN0YXRpc3Rp
Y3NNYW5hZ2VyOjpzaGFyZWQoKS5yZWdpc3RlclVzZXJEZWZhdWx0c0lmTmVlZGVkKCk7CisgICAg
cmVnaXN0ZXJVc2VyRGVmYXVsdHNJZk5lZWRlZCgpOwogI2VuZGlmCiB9Ci0gICAgCisKIHZvaWQg
V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpyZWdpc3RlclNoYXJlZFJlc291cmNlTG9h
ZE9ic2VydmVyKFdURjo6RnVuY3Rpb248dm9pZChjb25zdCBWZWN0b3I8U3RyaW5nPiYgZG9tYWlu
c1RvUmVtb3ZlLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgZG9tYWluc1RvQWRkLCBib29sIGNsZWFy
Rmlyc3QpPiYmIHNob3VsZFBhcnRpdGlvbkNvb2tpZXNGb3JEb21haW5zSGFuZGxlcikKIHsKICAg
ICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOwpAQCAtNTA1LDUgKzUxMCwyMDcgQEAgdm9pZCBX
ZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OnN1Ym1pdFRlbGVtZXRyeSgpCiAgICAgICAg
IFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NUZWxlbWV0cnk6OmNhbGN1bGF0ZUFuZFN1Ym1pdChj
b3JlU3RvcmUoKSk7CiAgICAgfSk7CiB9CisKK3ZvaWQgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGlj
c1N0b3JlOjpsb2dVc2VySW50ZXJhY3Rpb24oY29uc3QgVVJMJiB1cmwpCit7CisgICAgaWYgKHVy
bC5pc0JsYW5rVVJMKCkgfHwgdXJsLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAg
bV9zdGF0aXN0aWNzUXVldWUtPmRpc3BhdGNoKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJl
ZigqdGhpcyksIHByaW1hcnlEb21haW5TdHJpbmcgPSBwcmltYXJ5RG9tYWluKHVybCkuaXNvbGF0
ZWRDb3B5KCldIHsKKyAgICAgICAgeworICAgICAgICAgICAgYXV0byBsb2NrZXIgPSBob2xkTG9j
ayhjb3JlU3RvcmUoKS5zdGF0aXN0aWNzTG9jaygpKTsKKyAgICAgICAgICAgIGF1dG8mIHN0YXRp
c3RpY3MgPSBjb3JlU3RvcmUoKS5lbnN1cmVSZXNvdXJjZVN0YXRpc3RpY3NGb3JQcmltYXJ5RG9t
YWluKHByaW1hcnlEb21haW5TdHJpbmcpOworICAgICAgICAgICAgc3RhdGlzdGljcy5oYWRVc2Vy
SW50ZXJhY3Rpb24gPSB0cnVlOworICAgICAgICAgICAgc3RhdGlzdGljcy5tb3N0UmVjZW50VXNl
ckludGVyYWN0aW9uVGltZSA9IFdhbGxUaW1lOjpub3coKTsKKyAgICAgICAgfQorCisgICAgICAg
IGNvcmVTdG9yZSgpLmZpcmVTaG91bGRQYXJ0aXRpb25Db29raWVzSGFuZGxlcih7IHByaW1hcnlE
b21haW5TdHJpbmcgfSwgeyB9LCBmYWxzZSk7CisgICAgfSk7Cit9CisKK3ZvaWQgV2ViUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc1N0b3JlOjpjbGVhclVzZXJJbnRlcmFjdGlvbihjb25zdCBVUkwmIHVy
bCkKK3sKKyAgICBpZiAodXJsLmlzQmxhbmtVUkwoKSB8fCB1cmwuaXNFbXB0eSgpKQorICAgICAg
ICByZXR1cm47CisKKyAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKGNvcmVTdG9yZSgpLnN0YXRp
c3RpY3NMb2NrKCkpOworICAgIGF1dG8mIHN0YXRpc3RpY3MgPSBjb3JlU3RvcmUoKS5lbnN1cmVS
ZXNvdXJjZVN0YXRpc3RpY3NGb3JQcmltYXJ5RG9tYWluKHByaW1hcnlEb21haW4odXJsKSk7Cisg
ICAgc3RhdGlzdGljcy5oYWRVc2VySW50ZXJhY3Rpb24gPSBmYWxzZTsKKyAgICBzdGF0aXN0aWNz
Lm1vc3RSZWNlbnRVc2VySW50ZXJhY3Rpb25UaW1lID0geyB9OworfQorCitib29sIFdlYlJlc291
cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6aGFzSGFkVXNlckludGVyYWN0aW9uKGNvbnN0IFVSTCYg
dXJsKQoreworICAgIGlmICh1cmwuaXNCbGFua1VSTCgpIHx8IHVybC5pc0VtcHR5KCkpCisgICAg
ICAgIHJldHVybiBmYWxzZTsKKworICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2soY29yZVN0b3Jl
KCkuc3RhdGlzdGljc0xvY2soKSk7CisgICAgLy8gRklYTUU6IFdoeSBpcyB0aGlzIHBvdGVudGlh
bGx5IGNyZWF0aW5nIGEgc3RvcmUgZW50cnkganVzdCBmb3IgcXVlcnlpbmc/CisgICAgYXV0byYg
c3RhdGlzdGljcyA9IGNvcmVTdG9yZSgpLmVuc3VyZVJlc291cmNlU3RhdGlzdGljc0ZvclByaW1h
cnlEb21haW4ocHJpbWFyeURvbWFpbih1cmwpKTsKKyAgICByZXR1cm4gY29yZVN0b3JlKCkuaGFz
SGFkUmVjZW50VXNlckludGVyYWN0aW9uKHN0YXRpc3RpY3MpOworfQorCit2b2lkIFdlYlJlc291
cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6c2V0UHJldmFsZW50UmVzb3VyY2UoY29uc3QgVVJMJiB1
cmwpCit7CisgICAgaWYgKHVybC5pc0JsYW5rVVJMKCkgfHwgdXJsLmlzRW1wdHkoKSkKKyAgICAg
ICAgcmV0dXJuOworCisgICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhjb3JlU3RvcmUoKS5zdGF0
aXN0aWNzTG9jaygpKTsKKyAgICBhdXRvJiBzdGF0aXN0aWNzID0gY29yZVN0b3JlKCkuZW5zdXJl
UmVzb3VyY2VTdGF0aXN0aWNzRm9yUHJpbWFyeURvbWFpbihwcmltYXJ5RG9tYWluKHVybCkpOwor
ICAgIHN0YXRpc3RpY3MuaXNQcmV2YWxlbnRSZXNvdXJjZSA9IHRydWU7Cit9CisKK2Jvb2wgV2Vi
UmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjppc1ByZXZhbGVudFJlc291cmNlKGNvbnN0IFVS
TCYgdXJsKQoreworICAgIGlmICh1cmwuaXNCbGFua1VSTCgpIHx8IHVybC5pc0VtcHR5KCkpCisg
ICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2soY29yZVN0
b3JlKCkuc3RhdGlzdGljc0xvY2soKSk7CisgICAgLy8gRklYTUU6IFdoeSBpcyB0aGlzIHBvdGVu
dGlhbGx5IGNyZWF0aW5nIGEgc3RvcmUgZW50cnkganVzdCBmb3IgcXVlcnlpbmc/CisgICAgYXV0
byYgc3RhdGlzdGljcyA9IGNvcmVTdG9yZSgpLmVuc3VyZVJlc291cmNlU3RhdGlzdGljc0ZvclBy
aW1hcnlEb21haW4ocHJpbWFyeURvbWFpbih1cmwpKTsKKyAgICByZXR1cm4gc3RhdGlzdGljcy5p
c1ByZXZhbGVudFJlc291cmNlOworfQorCit2b2lkIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NT
dG9yZTo6Y2xlYXJQcmV2YWxlbnRSZXNvdXJjZShjb25zdCBVUkwmIHVybCkKK3sKKyAgICBpZiAo
dXJsLmlzQmxhbmtVUkwoKSB8fCB1cmwuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm47CisKKyAg
ICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKGNvcmVTdG9yZSgpLnN0YXRpc3RpY3NMb2NrKCkpOwor
ICAgIGF1dG8mIHN0YXRpc3RpY3MgPSBjb3JlU3RvcmUoKS5lbnN1cmVSZXNvdXJjZVN0YXRpc3Rp
Y3NGb3JQcmltYXJ5RG9tYWluKHByaW1hcnlEb21haW4odXJsKSk7CisgICAgc3RhdGlzdGljcy5p
c1ByZXZhbGVudFJlc291cmNlID0gZmFsc2U7Cit9CisKK3ZvaWQgV2ViUmVzb3VyY2VMb2FkU3Rh
dGlzdGljc1N0b3JlOjpzZXRHcmFuZGZhdGhlcmVkKGNvbnN0IFVSTCYgdXJsLCBib29sIHZhbHVl
KQoreworICAgIGlmICh1cmwuaXNCbGFua1VSTCgpIHx8IHVybC5pc0VtcHR5KCkpCisgICAgICAg
IHJldHVybjsKKworICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2soY29yZVN0b3JlKCkuc3RhdGlz
dGljc0xvY2soKSk7CisgICAgYXV0byYgc3RhdGlzdGljcyA9IGNvcmVTdG9yZSgpLmVuc3VyZVJl
c291cmNlU3RhdGlzdGljc0ZvclByaW1hcnlEb21haW4ocHJpbWFyeURvbWFpbih1cmwpKTsKKyAg
ICBzdGF0aXN0aWNzLmdyYW5kZmF0aGVyZWQgPSB2YWx1ZTsKK30KKworYm9vbCBXZWJSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzU3RvcmU6OmlzR3JhbmRmYXRoZXJlZChjb25zdCBVUkwmIHVybCkKK3sK
KyAgICBpZiAodXJsLmlzQmxhbmtVUkwoKSB8fCB1cmwuaXNFbXB0eSgpKQorICAgICAgICByZXR1
cm4gZmFsc2U7CisKKyAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKGNvcmVTdG9yZSgpLnN0YXRp
c3RpY3NMb2NrKCkpOworICAgIC8vIEZJWE1FOiBXaHkgaXMgdGhpcyBwb3RlbnRpYWxseSBjcmVh
dGluZyBhIHN0b3JlIGVudHJ5IGp1c3QgZm9yIHF1ZXJ5aW5nPworICAgIGF1dG8mIHN0YXRpc3Rp
Y3MgPSBjb3JlU3RvcmUoKS5lbnN1cmVSZXNvdXJjZVN0YXRpc3RpY3NGb3JQcmltYXJ5RG9tYWlu
KHByaW1hcnlEb21haW4odXJsKSk7CisgICAgcmV0dXJuIHN0YXRpc3RpY3MuZ3JhbmRmYXRoZXJl
ZDsKK30KKwordm9pZCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OnNldFN1YmZyYW1l
VW5kZXJUb3BGcmFtZU9yaWdpbihjb25zdCBVUkwmIHN1YmZyYW1lLCBjb25zdCBVUkwmIHRvcEZy
YW1lKQoreworICAgIGlmIChzdWJmcmFtZS5pc0JsYW5rVVJMKCkgfHwgc3ViZnJhbWUuaXNFbXB0
eSgpIHx8IHRvcEZyYW1lLmlzQmxhbmtVUkwoKSB8fCB0b3BGcmFtZS5pc0VtcHR5KCkpCisgICAg
ICAgIHJldHVybjsKKworICAgIG1fc3RhdGlzdGljc1F1ZXVlLT5kaXNwYXRjaChbdGhpcywgcHJv
dGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBwcmltYXJ5VG9wRnJhbWVEb21haW5TdHJpbmcg
PSBwcmltYXJ5RG9tYWluKHRvcEZyYW1lKS5pc29sYXRlZENvcHkoKSwgcHJpbWFyeVN1YkZyYW1l
RG9tYWluU3RyaW5nID0gcHJpbWFyeURvbWFpbihzdWJmcmFtZSkuaXNvbGF0ZWRDb3B5KCldIHsK
KyAgICAgICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhjb3JlU3RvcmUoKS5zdGF0aXN0aWNzTG9j
aygpKTsKKyAgICAgICAgYXV0byYgc3RhdGlzdGljcyA9IGNvcmVTdG9yZSgpLmVuc3VyZVJlc291
cmNlU3RhdGlzdGljc0ZvclByaW1hcnlEb21haW4ocHJpbWFyeVN1YkZyYW1lRG9tYWluU3RyaW5n
KTsKKyAgICAgICAgc3RhdGlzdGljcy5zdWJmcmFtZVVuZGVyVG9wRnJhbWVPcmlnaW5zLmFkZChw
cmltYXJ5VG9wRnJhbWVEb21haW5TdHJpbmcpOworICAgIH0pOworfQorCit2b2lkIFdlYlJlc291
cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6c2V0U3VicmVzb3VyY2VVbmRlclRvcEZyYW1lT3JpZ2lu
KGNvbnN0IFVSTCYgc3VicmVzb3VyY2UsIGNvbnN0IFVSTCYgdG9wRnJhbWUpCit7CisgICAgaWYg
KHN1YnJlc291cmNlLmlzQmxhbmtVUkwoKSB8fCBzdWJyZXNvdXJjZS5pc0VtcHR5KCkgfHwgdG9w
RnJhbWUuaXNCbGFua1VSTCgpIHx8IHRvcEZyYW1lLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJu
OworCisgICAgbV9zdGF0aXN0aWNzUXVldWUtPmRpc3BhdGNoKFt0aGlzLCBwcm90ZWN0ZWRUaGlz
ID0gbWFrZVJlZigqdGhpcyksIHByaW1hcnlUb3BGcmFtZURvbWFpblN0cmluZyA9IHByaW1hcnlE
b21haW4odG9wRnJhbWUpLmlzb2xhdGVkQ29weSgpLCBwcmltYXJ5U3VicmVzb3VyY2VEb21haW5T
dHJpbmcgPSBwcmltYXJ5RG9tYWluKHN1YnJlc291cmNlKS5pc29sYXRlZENvcHkoKV0geworICAg
ICAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKGNvcmVTdG9yZSgpLnN0YXRpc3RpY3NMb2NrKCkp
OworICAgICAgICBhdXRvJiBzdGF0aXN0aWNzID0gY29yZVN0b3JlKCkuZW5zdXJlUmVzb3VyY2VT
dGF0aXN0aWNzRm9yUHJpbWFyeURvbWFpbihwcmltYXJ5U3VicmVzb3VyY2VEb21haW5TdHJpbmcp
OworICAgICAgICBzdGF0aXN0aWNzLnN1YnJlc291cmNlVW5kZXJUb3BGcmFtZU9yaWdpbnMuYWRk
KHByaW1hcnlUb3BGcmFtZURvbWFpblN0cmluZyk7CisgICAgfSk7Cit9CisKK3ZvaWQgV2ViUmVz
b3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpzZXRTdWJyZXNvdXJjZVVuaXF1ZVJlZGlyZWN0VG8o
Y29uc3QgVVJMJiBzdWJyZXNvdXJjZSwgY29uc3QgVVJMJiBob3N0TmFtZVJlZGlyZWN0ZWRUbykK
K3sKKyAgICBpZiAoc3VicmVzb3VyY2UuaXNCbGFua1VSTCgpIHx8IHN1YnJlc291cmNlLmlzRW1w
dHkoKSB8fCBob3N0TmFtZVJlZGlyZWN0ZWRUby5pc0JsYW5rVVJMKCkgfHwgaG9zdE5hbWVSZWRp
cmVjdGVkVG8uaXNFbXB0eSgpKQorICAgICAgICByZXR1cm47CisKKyAgICBtX3N0YXRpc3RpY3NR
dWV1ZS0+ZGlzcGF0Y2goW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgcHJp
bWFyeVJlZGlyZWN0RG9tYWluU3RyaW5nID0gcHJpbWFyeURvbWFpbihob3N0TmFtZVJlZGlyZWN0
ZWRUbykuaXNvbGF0ZWRDb3B5KCksIHByaW1hcnlTdWJyZXNvdXJjZURvbWFpblN0cmluZyA9IHBy
aW1hcnlEb21haW4oc3VicmVzb3VyY2UpLmlzb2xhdGVkQ29weSgpXSB7CisgICAgICAgIGF1dG8g
bG9ja2VyID0gaG9sZExvY2soY29yZVN0b3JlKCkuc3RhdGlzdGljc0xvY2soKSk7CisgICAgICAg
IGF1dG8mIHN0YXRpc3RpY3MgPSBjb3JlU3RvcmUoKS5lbnN1cmVSZXNvdXJjZVN0YXRpc3RpY3NG
b3JQcmltYXJ5RG9tYWluKHByaW1hcnlTdWJyZXNvdXJjZURvbWFpblN0cmluZyk7CisgICAgICAg
IHN0YXRpc3RpY3Muc3VicmVzb3VyY2VVbmlxdWVSZWRpcmVjdHNUby5hZGQocHJpbWFyeVJlZGly
ZWN0RG9tYWluU3RyaW5nKTsKKyAgICB9KTsKK30KKwordm9pZCBXZWJSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzU3RvcmU6OmZpcmVEYXRhTW9kaWZpY2F0aW9uSGFuZGxlcigpCit7CisgICAgLy8gSGVs
cGVyIGZ1bmN0aW9uIHVzZWQgYnkgdGVzdGluZyBzeXN0ZW0uIFNob3VsZCBvbmx5IGJlIGNhbGxl
ZCBmcm9tIHRoZSBtYWluIHRocmVhZC4KKyAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOwor
ICAgIG1fc3RhdGlzdGljc1F1ZXVlLT5kaXNwYXRjaChbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1h
a2VSZWYoKnRoaXMpXSB7CisgICAgICAgIGNvcmVTdG9yZSgpLmZpcmVEYXRhTW9kaWZpY2F0aW9u
SGFuZGxlcigpOworICAgIH0pOworfQorCit2b2lkIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NT
dG9yZTo6ZmlyZVNob3VsZFBhcnRpdGlvbkNvb2tpZXNIYW5kbGVyKCkKK3sKKyAgICAvLyBIZWxw
ZXIgZnVuY3Rpb24gdXNlZCBieSB0ZXN0aW5nIHN5c3RlbS4gU2hvdWxkIG9ubHkgYmUgY2FsbGVk
IGZyb20gdGhlIG1haW4gdGhyZWFkLgorICAgIEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7Cisg
ICAgbV9zdGF0aXN0aWNzUXVldWUtPmRpc3BhdGNoKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFr
ZVJlZigqdGhpcyldIHsKKyAgICAgICAgY29yZVN0b3JlKCkuZmlyZVNob3VsZFBhcnRpdGlvbkNv
b2tpZXNIYW5kbGVyKCk7CisgICAgfSk7Cit9CisKK3ZvaWQgV2ViUmVzb3VyY2VMb2FkU3RhdGlz
dGljc1N0b3JlOjpmaXJlU2hvdWxkUGFydGl0aW9uQ29va2llc0hhbmRsZXIoY29uc3QgVmVjdG9y
PFN0cmluZz4mIGRvbWFpbnNUb1JlbW92ZSwgY29uc3QgVmVjdG9yPFN0cmluZz4mIGRvbWFpbnNU
b0FkZCwgYm9vbCBjbGVhckZpcnN0KQoreworICAgIC8vIEhlbHBlciBmdW5jdGlvbiB1c2VkIGJ5
IHRlc3Rpbmcgc3lzdGVtLiBTaG91bGQgb25seSBiZSBjYWxsZWQgZnJvbSB0aGUgbWFpbiB0aHJl
YWQuCisgICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKKyAgICBtX3N0YXRpc3RpY3NRdWV1
ZS0+ZGlzcGF0Y2goW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgZG9tYWlu
c1RvUmVtb3ZlID0gQ3Jvc3NUaHJlYWRDb3BpZXI8VmVjdG9yPFN0cmluZz4+Ojpjb3B5KGRvbWFp
bnNUb1JlbW92ZSksIGRvbWFpbnNUb0FkZCA9IENyb3NzVGhyZWFkQ29waWVyPFZlY3RvcjxTdHJp
bmc+Pjo6Y29weShkb21haW5zVG9BZGQpLCBjbGVhckZpcnN0XSB7CisgICAgICAgIGNvcmVTdG9y
ZSgpLmZpcmVTaG91bGRQYXJ0aXRpb25Db29raWVzSGFuZGxlcihkb21haW5zVG9SZW1vdmUsIGRv
bWFpbnNUb0FkZCwgY2xlYXJGaXJzdCk7CisgICAgfSk7Cit9CisKK3ZvaWQgV2ViUmVzb3VyY2VM
b2FkU3RhdGlzdGljc1N0b3JlOjpmaXJlVGVsZW1ldHJ5SGFuZGxlcigpCit7CisgICAgLy8gSGVs
cGVyIGZ1bmN0aW9uIHVzZWQgYnkgdGVzdGluZyBzeXN0ZW0uIFNob3VsZCBvbmx5IGJlIGNhbGxl
ZCBmcm9tIHRoZSBtYWluIHRocmVhZC4KKyAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOwor
ICAgIGNvcmVTdG9yZSgpLmZpcmVUZWxlbWV0cnlIYW5kbGVyKCk7Cit9CisKK3ZvaWQgV2ViUmVz
b3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpjbGVhckluTWVtb3J5KCkKK3sKKyAgICBtX3N0YXRp
c3RpY3NRdWV1ZS0+ZGlzcGF0Y2goW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlz
KV0geworICAgICAgICBjb3JlU3RvcmUoKS5jbGVhckluTWVtb3J5KCk7CisgICAgfSk7Cit9CisK
K3ZvaWQgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpjbGVhckluTWVtb3J5QW5kUGVy
c2lzdGVudCgpCit7CisgICAgbV9zdGF0aXN0aWNzUXVldWUtPmRpc3BhdGNoKFt0aGlzLCBwcm90
ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyldIHsKKyAgICAgICAgY29yZVN0b3JlKCkuY2xlYXJJ
bk1lbW9yeUFuZFBlcnNpc3RlbnQoKTsKKyAgICB9KTsKK30KKwordm9pZCBXZWJSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzU3RvcmU6OmNsZWFySW5NZW1vcnlBbmRQZXJzaXN0ZW50KHN0ZDo6Y2hyb25v
OjpzeXN0ZW1fY2xvY2s6OnRpbWVfcG9pbnQgbW9kaWZpZWRTaW5jZSkKK3sKKyAgICAvLyBGb3Ig
bm93LCBiZSBjb25zZXJ2YXRpdmUgYW5kIGNsZWFyIGV2ZXJ5dGhpbmcgcmVnYXJkbGVzcyBvZiBt
b2RpZmllZFNpbmNlLgorICAgIFVOVVNFRF9QQVJBTShtb2RpZmllZFNpbmNlKTsKKyAgICBjbGVh
ckluTWVtb3J5QW5kUGVyc2lzdGVudCgpOworfQorCit2b2lkIFdlYlJlc291cmNlTG9hZFN0YXRp
c3RpY3NTdG9yZTo6c2V0VGltZVRvTGl2ZVVzZXJJbnRlcmFjdGlvbihTZWNvbmRzIHNlY29uZHMp
Cit7CisgICAgY29yZVN0b3JlKCkuc2V0VGltZVRvTGl2ZVVzZXJJbnRlcmFjdGlvbihzZWNvbmRz
KTsKK30KKwordm9pZCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OnNldFRpbWVUb0xp
dmVDb29raWVQYXJ0aXRpb25GcmVlKFNlY29uZHMgc2Vjb25kcykKK3sKKyAgICBjb3JlU3RvcmUo
KS5zZXRUaW1lVG9MaXZlQ29va2llUGFydGl0aW9uRnJlZShzZWNvbmRzKTsKK30KKwordm9pZCBX
ZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OnNldE1pbmltdW1UaW1lQmV0d2VlbkRhdGFS
ZWNvcmRzUmVtb3ZhbChTZWNvbmRzIHNlY29uZHMpCit7CisgICAgY29yZVN0b3JlKCkuc2V0TWlu
aW11bVRpbWVCZXR3ZWVuRGF0YVJlY29yZHNSZW1vdmFsKHNlY29uZHMpOworfQorCit2b2lkIFdl
YlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6c2V0R3JhbmRmYXRoZXJpbmdUaW1lKFNlY29u
ZHMgc2Vjb25kcykKK3sKKyAgICBjb3JlU3RvcmUoKS5zZXRHcmFuZGZhdGhlcmluZ1RpbWUoc2Vj
b25kcyk7Cit9CiAgICAgCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuaCBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuaApp
bmRleCAzM2ZlZDkyMGM3YTczYWJmNTMwNDc4YTBkMjBhYWRmZjY5MTQ3OTY1Li4yNDU1YmI3NGEz
Zjk0NmZmNWE3OTgxMDliMzBhMTYxYWY4MTNjM2U2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmgKKysrIGIvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5oCkBAIC01
OSw3ICs1OSw2IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgUmVmPFdlYlJlc291cmNlTG9hZFN0YXRp
c3RpY3NTdG9yZT4gY3JlYXRlKGNvbnN0IFN0cmluZyYpOwogICAgIHN0YXRpYyB2b2lkIHNldE5v
dGlmeVBhZ2VzV2hlbkRhdGFSZWNvcmRzV2VyZVNjYW5uZWQoYm9vbCk7CiAgICAgc3RhdGljIHZv
aWQgc2V0U2hvdWxkQ2xhc3NpZnlSZXNvdXJjZXNCZWZvcmVEYXRhUmVjb3Jkc1JlbW92YWwoYm9v
bCk7Ci0gICAgc3RhdGljIHZvaWQgc2V0TWluaW11bVRpbWVCZXR3ZWVlbkRhdGFSZWNvcmRzUmVt
b3ZhbChTZWNvbmRzKTsKICAgICBzdGF0aWMgdm9pZCBzZXRTaG91bGRTdWJtaXRUZWxlbWV0cnko
Ym9vbCk7CiAgICAgdmlydHVhbCB+V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlKCk7CiAg
ICAgCkBAIC03NiwxMiArNzUsMzcgQEAgcHVibGljOgogCiAgICAgdm9pZCByZWFkRGF0YUZyb21E
aXNrSWZOZWVkZWQoKTsKIAotICAgIFJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZSYgY29yZVN0
b3JlKCkgeyByZXR1cm4gbV9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuZ2V0KCk7IH0KLSAg
ICBjb25zdCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUmIGNvcmVTdG9yZSgpIGNvbnN0IHsg
cmV0dXJuIG1fcmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmdldCgpOyB9CisgICAgdm9pZCBs
b2dVc2VySW50ZXJhY3Rpb24oY29uc3QgV2ViQ29yZTo6VVJMJik7CisgICAgdm9pZCBjbGVhclVz
ZXJJbnRlcmFjdGlvbihjb25zdCBXZWJDb3JlOjpVUkwmKTsKKyAgICBib29sIGhhc0hhZFVzZXJJ
bnRlcmFjdGlvbihjb25zdCBXZWJDb3JlOjpVUkwmKTsKKyAgICB2b2lkIHNldFByZXZhbGVudFJl
c291cmNlKGNvbnN0IFdlYkNvcmU6OlVSTCYpOworICAgIGJvb2wgaXNQcmV2YWxlbnRSZXNvdXJj
ZShjb25zdCBXZWJDb3JlOjpVUkwmKTsKKyAgICB2b2lkIGNsZWFyUHJldmFsZW50UmVzb3VyY2Uo
Y29uc3QgV2ViQ29yZTo6VVJMJik7CisgICAgdm9pZCBzZXRHcmFuZGZhdGhlcmVkKGNvbnN0IFdl
YkNvcmU6OlVSTCYsIGJvb2wpOworICAgIGJvb2wgaXNHcmFuZGZhdGhlcmVkKGNvbnN0IFdlYkNv
cmU6OlVSTCYpOworICAgIHZvaWQgc2V0U3ViZnJhbWVVbmRlclRvcEZyYW1lT3JpZ2luKGNvbnN0
IFdlYkNvcmU6OlVSTCYgc3ViZnJhbWUsIGNvbnN0IFdlYkNvcmU6OlVSTCYgdG9wRnJhbWUpOwor
ICAgIHZvaWQgc2V0U3VicmVzb3VyY2VVbmRlclRvcEZyYW1lT3JpZ2luKGNvbnN0IFdlYkNvcmU6
OlVSTCYgc3VicmVzb3VyY2UsIGNvbnN0IFdlYkNvcmU6OlVSTCYgdG9wRnJhbWUpOworICAgIHZv
aWQgc2V0U3VicmVzb3VyY2VVbmlxdWVSZWRpcmVjdFRvKGNvbnN0IFdlYkNvcmU6OlVSTCYgc3Vi
cmVzb3VyY2UsIGNvbnN0IFdlYkNvcmU6OlVSTCYgaG9zdE5hbWVSZWRpcmVjdGVkVG8pOworICAg
IHZvaWQgZmlyZURhdGFNb2RpZmljYXRpb25IYW5kbGVyKCk7CisgICAgdm9pZCBmaXJlU2hvdWxk
UGFydGl0aW9uQ29va2llc0hhbmRsZXIoKTsKKyAgICB2b2lkIGZpcmVTaG91bGRQYXJ0aXRpb25D
b29raWVzSGFuZGxlcihjb25zdCBWZWN0b3I8U3RyaW5nPiYgZG9tYWluc1RvUmVtb3ZlLCBjb25z
dCBWZWN0b3I8U3RyaW5nPiYgZG9tYWluc1RvQWRkLCBib29sIGNsZWFyRmlyc3QpOworCisgICAg
dm9pZCBmaXJlVGVsZW1ldHJ5SGFuZGxlcigpOworICAgIHZvaWQgY2xlYXJJbk1lbW9yeSgpOwor
ICAgIHZvaWQgY2xlYXJJbk1lbW9yeUFuZFBlcnNpc3RlbnQoKTsKKyAgICB2b2lkIGNsZWFySW5N
ZW1vcnlBbmRQZXJzaXN0ZW50KHN0ZDo6Y2hyb25vOjpzeXN0ZW1fY2xvY2s6OnRpbWVfcG9pbnQg
bW9kaWZpZWRTaW5jZSk7CisKKyAgICB2b2lkIHNldFRpbWVUb0xpdmVVc2VySW50ZXJhY3Rpb24o
U2Vjb25kcyk7CisgICAgdm9pZCBzZXRUaW1lVG9MaXZlQ29va2llUGFydGl0aW9uRnJlZShTZWNv
bmRzKTsKKyAgICB2b2lkIHNldE1pbmltdW1UaW1lQmV0d2VlbkRhdGFSZWNvcmRzUmVtb3ZhbChT
ZWNvbmRzKTsKKyAgICB2b2lkIHNldEdyYW5kZmF0aGVyaW5nVGltZShTZWNvbmRzKTsKIAogcHJp
dmF0ZToKICAgICBleHBsaWNpdCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUoY29uc3Qg
U3RyaW5nJik7CiAKKyAgICBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUmIGNvcmVTdG9yZSgp
IHsgcmV0dXJuIG1fcmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmdldCgpOyB9CisgICAgY29u
c3QgUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlJiBjb3JlU3RvcmUoKSBjb25zdCB7IHJldHVy
biBtX3Jlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5nZXQoKTsgfQorCiAgICAgdm9pZCBwcm9j
ZXNzU3RhdGlzdGljc0FuZERhdGFSZWNvcmRzKCk7CiAKICAgICB2b2lkIGNsYXNzaWZ5UmVzb3Vy
Y2UoV2ViQ29yZTo6UmVzb3VyY2VMb2FkU3RhdGlzdGljcyYpOwpAQCAtMTA3LDYgKzEzMSwxMCBA
QCBwcml2YXRlOgogICAgIHZvaWQgdGVsZW1ldHJ5VGltZXJGaXJlZCgpOwogICAgIHZvaWQgc3Vi
bWl0VGVsZW1ldHJ5KCk7CiAKKyNpZiBQTEFURk9STShDT0NPQSkKKyAgICB2b2lkIHJlZ2lzdGVy
VXNlckRlZmF1bHRzSWZOZWVkZWQoKTsKKyNlbmRpZgorCiAgICAgUmVmPFJlc291cmNlTG9hZFN0
YXRpc3RpY3NTdG9yZT4gbV9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU7CiAjaWYgSEFWRShD
T1JFX1BSRURJQ1RJT04pCiAgICAgUmVzb3VyY2VMb2FkU3RhdGlzdGljc0NsYXNzaWZpZXJDb2Nv
YSBtX3Jlc291cmNlTG9hZFN0YXRpc3RpY3NDbGFzc2lmaWVyOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuY3BwIGIvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuY3BwCmlu
ZGV4IDJmYjljYzU5NjE1NDExNjQ3ZmU5Y2FkMTZhMTVhZWE5MzI4NTNkNGIuLmYyMDU0NmJlMDIy
YzUzODkxMzA2ODdiODJmOWI0NjU1YTRmY2ExYjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5jcHAKQEAgLTM0
LDcgKzM0LDYgQEAKICNpbmNsdWRlICJXZWJDb29raWVNYW5hZ2VyUHJveHkuaCIKICNpbmNsdWRl
ICJXZWJQcm9jZXNzTWVzc2FnZXMuaCIKICNpbmNsdWRlICJXZWJQcm9jZXNzUG9vbC5oIgotI2lu
Y2x1ZGUgIldlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NNYW5hZ2VyLmgiCiAjaW5jbHVkZSAiV2Vi
UmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmgiCiAjaW5jbHVkZSAiV2ViUmVzb3VyY2VMb2Fk
U3RhdGlzdGljc1N0b3JlTWVzc2FnZXMuaCIKICNpbmNsdWRlICJXZWJzaXRlRGF0YS5oIgpAQCAt
ODE1LDggKzgxNCw4IEBAIHZvaWQgV2Vic2l0ZURhdGFTdG9yZTo6cmVtb3ZlRGF0YShPcHRpb25T
ZXQ8V2Vic2l0ZURhdGFUeXBlPiBkYXRhVHlwZXMsIHN0ZDo6Y2hyCiAgICAgfQogI2VuZGlmCiAK
LSAgICBpZiAoZGF0YVR5cGVzLmNvbnRhaW5zKFdlYnNpdGVEYXRhVHlwZTo6UmVzb3VyY2VMb2Fk
U3RhdGlzdGljcykpCi0gICAgICAgIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NNYW5hZ2VyOjpz
aGFyZWQoKS5jbGVhckluTWVtb3J5QW5kUGVyc2lzdGVudFN0b3JlKG1vZGlmaWVkU2luY2UpOwor
ICAgIGlmIChkYXRhVHlwZXMuY29udGFpbnMoV2Vic2l0ZURhdGFUeXBlOjpSZXNvdXJjZUxvYWRT
dGF0aXN0aWNzKSAmJiBtX3Jlc291cmNlTG9hZFN0YXRpc3RpY3MpCisgICAgICAgIG1fcmVzb3Vy
Y2VMb2FkU3RhdGlzdGljcy0+Y2xlYXJJbk1lbW9yeUFuZFBlcnNpc3RlbnQobW9kaWZpZWRTaW5j
ZSk7CiAKICAgICAvLyBUaGVyZSdzIGEgY2hhbmNlIHRoYXQgd2UgZG9uJ3QgaGF2ZSBhbnkgcGVu
ZGluZyBjYWxsYmFja3MuIElmIHNvLCB3ZSB3YW50IHRvIGRpc3BhdGNoIHRoZSBjb21wbGV0aW9u
IGhhbmRsZXIgcmlnaHQgYXdheS4KICAgICBjYWxsYmFja0FnZ3JlZ2F0b3ItPmNhbGxJZk5lZWRl
ZCgpOwpAQCAtMTA4NCw4ICsxMDgzLDggQEAgdm9pZCBXZWJzaXRlRGF0YVN0b3JlOjpyZW1vdmVE
YXRhKE9wdGlvblNldDxXZWJzaXRlRGF0YVR5cGU+IGRhdGFUeXBlcywgY29uc3QgVmUKICAgICB9
CiAjZW5kaWYKIAotICAgIGlmIChkYXRhVHlwZXMuY29udGFpbnMoV2Vic2l0ZURhdGFUeXBlOjpS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzKSkKLSAgICAgICAgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGlj
c01hbmFnZXI6OnNoYXJlZCgpLmNsZWFySW5NZW1vcnlBbmRQZXJzaXN0ZW50U3RvcmUoKTsKKyAg
ICBpZiAoZGF0YVR5cGVzLmNvbnRhaW5zKFdlYnNpdGVEYXRhVHlwZTo6UmVzb3VyY2VMb2FkU3Rh
dGlzdGljcykgJiYgbV9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzKQorICAgICAgICBtX3Jlc291cmNl
TG9hZFN0YXRpc3RpY3MtPmNsZWFySW5NZW1vcnlBbmRQZXJzaXN0ZW50KCk7CiAKICAgICAvLyBU
aGVyZSdzIGEgY2hhbmNlIHRoYXQgd2UgZG9uJ3QgaGF2ZSBhbnkgcGVuZGluZyBjYWxsYmFja3Mu
IElmIHNvLCB3ZSB3YW50IHRvIGRpc3BhdGNoIHRoZSBjb21wbGV0aW9uIGhhbmRsZXIgcmlnaHQg
YXdheS4KICAgICBjYWxsYmFja0FnZ3JlZ2F0b3ItPmNhbGxJZk5lZWRlZCgpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvV2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291
cmNlL1dlYktpdDIvV2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDFlZTQ5
NjE0YzYyM2I0OWZjZmUxNDcwOGI2NDE3YTViOTNjODQwN2YuLjJhNTNlNjQyNWQ2NWE0MDY5NzJj
OTFkYjcxNGFmYzY0Zjg2Yjk4ZWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYktpdDIu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJLaXQyLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTExOTEsNyArMTE5MSw2IEBACiAJCTY1Qjg2RjFF
MTJGMTFERTMwMEI3REQ4QSAvKiBXS0J1bmRsZUluc3BlY3Rvci5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNjVCODZGMTgxMkYxMUQ3QjAwQjdERDhBIC8q
IFdLQnVuZGxlSW5zcGVjdG9yLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKIAkJNkI4MjFEREMxRUVGMDVERDAwRDdBRjRBIC8qIFdlYlJlc291cmNlTG9h
ZFN0YXRpc3RpY3NUZWxlbWV0cnkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDZCODIxRERBMUVFRjA1REQwMEQ3QUY0QSAvKiBXZWJSZXNvdXJjZUxvYWRT
dGF0aXN0aWNzVGVsZW1ldHJ5LmggKi87IH07CiAJCTZCODIxREREMUVFRjA1REQwMEQ3QUY0QSAv
KiBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzVGVsZW1ldHJ5LmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDZCODIxRERCMUVFRjA1REQwMEQ3QUY0QSAv
KiBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzVGVsZW1ldHJ5LmNwcCAqLzsgfTsKLQkJNkJCQkFE
MzgxRUMzRTU3ODAwQUQwQTJBIC8qIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NNYW5hZ2VyQ29j
b2EubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2QkJC
QUQzNzFFQzNFNTYzMDBBRDBBMkEgLyogV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc01hbmFnZXJD
b2NvYS5tbSAqLzsgfTsKIAkJNkJFOTY5OUMxRTQzQjNGRjAwOEI3NDgzIC8qIFdLUmVzb3VyY2VM
b2FkU3RhdGlzdGljc01hbmFnZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDZCRTk2OTlCMUU0M0IzRkYwMDhCNzQ4MyAvKiBXS1Jlc291cmNlTG9hZFN0
YXRpc3RpY3NNYW5hZ2VyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKIAkJNkJFOTY5OUUxRTQzQjQxRDAwOEI3NDgzIC8qIFdLUmVzb3VyY2VMb2FkU3Rh
dGlzdGljc01hbmFnZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNkJFOTY5OUQxRTQzQjQxRDAwOEI3NDgzIC8qIFdLUmVzb3VyY2VMb2FkU3RhdGlz
dGljc01hbmFnZXIuY3BwICovOyB9OwogCQk2QkU5NjlBMDFFNDNCODZFMDA4Qjc0ODMgLyogV2Vi
UmVzb3VyY2VMb2FkU3RhdGlzdGljc01hbmFnZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDZCRTk2OTlGMUU0M0I4NkUwMDhCNzQ4MyAvKiBXZWJSZXNv
dXJjZUxvYWRTdGF0aXN0aWNzTWFuYWdlci5oICovOyB9OwpAQCAtMzQ4Myw3ICszNDgyLDYgQEAK
IAkJNjVCODZGMTgxMkYxMUQ3QjAwQjdERDhBIC8qIFdLQnVuZGxlSW5zcGVjdG9yLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdLQnVuZGxlSW5zcGVjdG9yLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTZCODIxRERBMUVFRjA1REQwMEQ3QUY0QSAvKiBXZWJSZXNv
dXJjZUxvYWRTdGF0aXN0aWNzVGVsZW1ldHJ5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYlJlc291cmNl
TG9hZFN0YXRpc3RpY3NUZWxlbWV0cnkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
NkI4MjFEREIxRUVGMDVERDAwRDdBRjRBIC8qIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NUZWxl
bWV0cnkuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1Rl
bGVtZXRyeS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTZCQkJBRDM3MUVDM0U1
NjMwMEFEMEEyQSAvKiBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWFuYWdlckNvY29hLm1tICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gV2ViUmVzb3VyY2VMb2FkU3Rh
dGlzdGljc01hbmFnZXJDb2NvYS5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNkJF
OTY5OUIxRTQzQjNGRjAwOEI3NDgzIC8qIFdLUmVzb3VyY2VMb2FkU3RhdGlzdGljc01hbmFnZXIu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0tSZXNvdXJjZUxvYWRTdGF0aXN0
aWNzTWFuYWdlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk2QkU5Njk5RDFFNDNC
NDFEMDA4Qjc0ODMgLyogV0tSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWFuYWdlci5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXS1Jlc291cmNlTG9hZFN0YXRpc3RpY3NN
YW5hZ2VyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNkJFOTY5OUYxRTQzQjg2
RTAwOEI3NDgzIC8qIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NNYW5hZ2VyLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NNYW5hZ2Vy
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC01MjMwLDcgKzUyMjgsNiBAQAogCQkJ
CUNEQTI5QTFGMUNCRUI1RkIwMDkwMUNDRiAvKiBXZWJQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJv
eHkubW0gKi8sCiAJCQkJN0NFNEQyMTUxQTQ5MTQ4NDAwQzdGMTUyIC8qIFdlYlByb2Nlc3NQb29s
Q29jb2EubW0gKi8sCiAJCQkJMUEwNEY2MTcxQTRBM0E3QTAwQTIxQjZFIC8qIFdlYlByb2Nlc3NQ
cm94eUNvY29hLm1tICovLAotCQkJCTZCQkJBRDM3MUVDM0U1NjMwMEFEMEEyQSAvKiBXZWJSZXNv
dXJjZUxvYWRTdGF0aXN0aWNzTWFuYWdlckNvY29hLm1tICovLAogCQkJCTdBQUQxNzVFMUVBNkFG
MzcwMDNCMDg5NCAvKiBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmVDb2NvYS5tbSAqLywK
IAkJCQk1MUQxMjQzMTFFNkRFNTIxMDAyQjI4MjAgLyogV2ViVVJMU2NoZW1lSGFuZGxlckNvY29h
LmggKi8sCiAJCQkJNTFEMTI0MzIxRTZERTUyMTAwMkIyODIwIC8qIFdlYlVSTFNjaGVtZUhhbmRs
ZXJDb2NvYS5tbSAqLywKQEAgLTEwNDM2LDcgKzEwNDMzLDYgQEAKIAkJCQk1MTBBRkZCOTE2NTQy
MDQ4MDAxQkEwNUUgLyogV2ViUmVzb3VyY2VMb2FkZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
NTFGMDYwRTExNjU0MzE4NTAwRjMyODFCIC8qIFdlYlJlc291cmNlTG9hZGVyTWVzc2FnZVJlY2Vp
dmVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTZCRTk2OUEyMUU0M0I4QTQwMDhCNzQ4MyAvKiBX
ZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWFuYWdlci5jcHAgaW4gU291cmNlcyAqLywKLQkJCQk2
QkJCQUQzODFFQzNFNTc4MDBBRDBBMkEgLyogV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc01hbmFn
ZXJDb2NvYS5tbSBpbiBTb3VyY2VzICovLAogCQkJCTdBNzkxRUZDMUM3RDA4QzUwMEM0QzUyQiAv
KiBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
N0FBRDE3NUYxRUE2QUY5OTAwM0IwODk0IC8qIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9y
ZUNvY29hLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJN0E3OTFFRkExQzdDRkNGMTAwQzRDNTJCIC8q
IFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZU1lc3NhZ2VSZWNlaXZlci5jcHAgaW4gU291
cmNlcyAqLywKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwpp
bmRleCBmMTY2Zjg0N2FjZWE3YzViZmY5MzE2Nzc1Y2UxYWEwOGI2YTIwM2EzLi4wZDJiMTRjNjAz
MmJiNWM0NTI0YjY5ZDhkMWE1MTkxYWNhODkzNjc3IDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VM
b2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjIgQEAKKzIwMTctMDYtMzAgIENo
cmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKworICAgICAgICBNb3ZlIHN0b3JlIGxvZ2lj
IGZyb20gV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc01hbmFnZXIgdG8gV2ViUmVzb3VyY2VMb2Fk
U3RhdGlzdGljc1N0b3JlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xNzQwMzgKKworICAgICAgICBSZXZpZXdlZCBieSBCcmVudCBGdWxnaGFtLgorCisg
ICAgICAgIEZpeCB0eXBvIGluIEFQSSBuYW1lLgorCisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5l
ci9JbmplY3RlZEJ1bmRsZS9CaW5kaW5ncy9UZXN0UnVubmVyLmlkbDoKKyAgICAgICAgKiBXZWJL
aXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIuY3BwOgorICAgICAgICAoV1RS
OjpUZXN0UnVubmVyOjpzZXRTdGF0aXN0aWNzTWluaW11bVRpbWVCZXR3ZWVuRGF0YVJlY29yZHNS
ZW1vdmFsKToKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RS
dW5uZXIuaDoKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmNwcDoK
KyAgICAgICAgKFdUUjo6VGVzdENvbnRyb2xsZXI6OnNldFN0YXRpc3RpY3NNaW5pbXVtVGltZUJl
dHdlZW5EYXRhUmVjb3Jkc1JlbW92YWwpOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvVGVz
dENvbnRyb2xsZXIuaDoKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL1Rlc3RJbnZvY2F0aW9u
LmNwcDoKKyAgICAgICAgKFdUUjo6VGVzdEludm9jYXRpb246OmRpZFJlY2VpdmVTeW5jaHJvbm91
c01lc3NhZ2VGcm9tSW5qZWN0ZWRCdW5kbGUpOgorCiAyMDE3LTA2LTMwICBKb25hdGhhbiBCZWRh
cmQgIDxqYmVkYXJkQGFwcGxlLmNvbT4KIAogICAgICAgICBGb2xsb3ctdXAgZml4IGZvciByMjE4
OTk2CmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0Jp
bmRpbmdzL1Rlc3RSdW5uZXIuaWRsIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1
bmRsZS9CaW5kaW5ncy9UZXN0UnVubmVyLmlkbAppbmRleCA0ZjA4N2YyYTVjOTkyNTI1NjYyOGFk
ZjAwZjNjMGQ3ZTM2ODg5YTdmLi41Nzc2YjljODBkNGM1YzNmM2NkN2RiMTA1N2FlYzNlMjkzNDdh
MjQ3IDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0Jp
bmRpbmdzL1Rlc3RSdW5uZXIuaWRsCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0
ZWRCdW5kbGUvQmluZGluZ3MvVGVzdFJ1bm5lci5pZGwKQEAgLTI3Miw3ICsyNzIsNyBAQCBpbnRl
cmZhY2UgVGVzdFJ1bm5lciB7CiAgICAgdm9pZCBzZXRTdGF0aXN0aWNzTm90aWZ5UGFnZXNXaGVu
RGF0YVJlY29yZHNXZXJlU2Nhbm5lZChib29sZWFuIHZhbHVlKTsKICAgICB2b2lkIHNldFN0YXRp
c3RpY3NTaG91bGRDbGFzc2lmeVJlc291cmNlc0JlZm9yZURhdGFSZWNvcmRzUmVtb3ZhbChib29s
ZWFuIHZhbHVlKTsKICAgICB2b2lkIHNldFN0YXRpc3RpY3NOb3RpZnlQYWdlc1doZW5UZWxlbWV0
cnlXYXNDYXB0dXJlZChib29sZWFuIHZhbHVlKTsKLSAgICB2b2lkIHNldFN0YXRpc3RpY3NNaW5p
bXVtVGltZUJldHdlZWVuRGF0YVJlY29yZHNSZW1vdmFsKGRvdWJsZSBzZWNvbmRzKTsKKyAgICB2
b2lkIHNldFN0YXRpc3RpY3NNaW5pbXVtVGltZUJldHdlZW5EYXRhUmVjb3Jkc1JlbW92YWwoZG91
YmxlIHNlY29uZHMpOwogICAgIHZvaWQgc2V0U3RhdGlzdGljc0dyYW5kZmF0aGVyaW5nVGltZShk
b3VibGUgc2Vjb25kcyk7CiAgICAgdm9pZCBzdGF0aXN0aWNzQ2xlYXJJbk1lbW9yeUFuZFBlcnNp
c3RlbnRTdG9yZSgpOwogICAgIHZvaWQgc3RhdGlzdGljc0NsZWFySW5NZW1vcnlBbmRQZXJzaXN0
ZW50U3RvcmVNb2RpZmllZFNpbmNlSG91cnModW5zaWduZWQgbG9uZyBob3Vycyk7CmRpZmYgLS1n
aXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIuY3Bw
IGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVubmVyLmNwcApp
bmRleCA4ODMxZjhkOTcyZDEzOWFmMjEzZjJkYTdkZTZlY2Q4Zjg4YzgwMGNmLi4xYWEwZTVkNTlh
NzRmOTYxMTAyOTlhN2MyMTY3OTNkZTZhODlkNDlmIDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRU
ZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIuY3BwCisrKyBiL1Rvb2xzL1dlYktp
dFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5jcHAKQEAgLTE0ODAsOSArMTQ4
MCw5IEBAIHZvaWQgVGVzdFJ1bm5lcjo6c2V0U3RhdGlzdGljc05vdGlmeVBhZ2VzV2hlblRlbGVt
ZXRyeVdhc0NhcHR1cmVkKGJvb2wgdmFsdWUpCiAgICAgV0tSZXNvdXJjZUxvYWRTdGF0aXN0aWNz
TWFuYWdlclNldE5vdGlmeVBhZ2VzV2hlblRlbGVtZXRyeVdhc0NhcHR1cmVkKHZhbHVlKTsKIH0K
IAotdm9pZCBUZXN0UnVubmVyOjpzZXRTdGF0aXN0aWNzTWluaW11bVRpbWVCZXR3ZWVlbkRhdGFS
ZWNvcmRzUmVtb3ZhbChkb3VibGUgc2Vjb25kcykKK3ZvaWQgVGVzdFJ1bm5lcjo6c2V0U3RhdGlz
dGljc01pbmltdW1UaW1lQmV0d2VlbkRhdGFSZWNvcmRzUmVtb3ZhbChkb3VibGUgc2Vjb25kcykK
IHsKLSAgICBXS1JldGFpblB0cjxXS1N0cmluZ1JlZj4gbWVzc2FnZU5hbWUoQWRvcHRXSywgV0tT
dHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoIlNldFN0YXRpc3RpY3NNaW5pbXVtVGltZUJldHdl
ZWVuRGF0YVJlY29yZHNSZW1vdmFsIikpOworICAgIFdLUmV0YWluUHRyPFdLU3RyaW5nUmVmPiBt
ZXNzYWdlTmFtZShBZG9wdFdLLCBXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygiU2V0U3Rh
dGlzdGljc01pbmltdW1UaW1lQmV0d2VlbkRhdGFSZWNvcmRzUmVtb3ZhbCIpKTsKICAgICBXS1Jl
dGFpblB0cjxXS0RvdWJsZVJlZj4gbWVzc2FnZUJvZHkoQWRvcHRXSywgV0tEb3VibGVDcmVhdGUo
c2Vjb25kcykpOwogICAgIFdLQnVuZGxlUG9zdFN5bmNocm9ub3VzTWVzc2FnZShJbmplY3RlZEJ1
bmRsZTo6c2luZ2xldG9uKCkuYnVuZGxlKCksIG1lc3NhZ2VOYW1lLmdldCgpLCBtZXNzYWdlQm9k
eS5nZXQoKSwgbnVsbHB0cik7CiB9CmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVy
L0luamVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIuaCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5q
ZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5oCmluZGV4IGFjYjE5NmQ4NDNkZThkOTQ0NjBlN2U1MTQ0
Yjk3N2M5NjBlYjVlMjAuLjRhOTljOGMyNmVlOGYwZjk0YzBjYWI4ZDkyMjViODliM2ZlMDQ5ZDcg
MTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1
bm5lci5oCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1
bm5lci5oCkBAIC0zNzEsNyArMzcxLDcgQEAgcHVibGljOgogICAgIHZvaWQgc2V0U3RhdGlzdGlj
c05vdGlmeVBhZ2VzV2hlbkRhdGFSZWNvcmRzV2VyZVNjYW5uZWQoYm9vbCk7CiAgICAgdm9pZCBz
ZXRTdGF0aXN0aWNzU2hvdWxkQ2xhc3NpZnlSZXNvdXJjZXNCZWZvcmVEYXRhUmVjb3Jkc1JlbW92
YWwoYm9vbCk7CiAgICAgdm9pZCBzZXRTdGF0aXN0aWNzTm90aWZ5UGFnZXNXaGVuVGVsZW1ldHJ5
V2FzQ2FwdHVyZWQoYm9vbCB2YWx1ZSk7Ci0gICAgdm9pZCBzZXRTdGF0aXN0aWNzTWluaW11bVRp
bWVCZXR3ZWVlbkRhdGFSZWNvcmRzUmVtb3ZhbChkb3VibGUpOworICAgIHZvaWQgc2V0U3RhdGlz
dGljc01pbmltdW1UaW1lQmV0d2VlbkRhdGFSZWNvcmRzUmVtb3ZhbChkb3VibGUpOwogICAgIHZv
aWQgc2V0U3RhdGlzdGljc0dyYW5kZmF0aGVyaW5nVGltZShkb3VibGUgc2Vjb25kcyk7CiAgICAg
dm9pZCBzdGF0aXN0aWNzQ2xlYXJJbk1lbW9yeUFuZFBlcnNpc3RlbnRTdG9yZSgpOwogICAgIHZv
aWQgc3RhdGlzdGljc0NsZWFySW5NZW1vcnlBbmRQZXJzaXN0ZW50U3RvcmVNb2RpZmllZFNpbmNl
SG91cnModW5zaWduZWQgaG91cnMpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5l
ci9UZXN0Q29udHJvbGxlci5jcHAgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9s
bGVyLmNwcAppbmRleCA5NzgzOWRmNjM3MDk3NWY2YjFkNjdkYzNjZDNhMjNhZWY4MTkxZTM1Li44
YWE2YTY4MGUyNTFlZTViYTM5OGU1MmQxNjQzNmVjYjI4MzJlZjUyIDEwMDY0NAotLS0gYS9Ub29s
cy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmNwcAorKysgYi9Ub29scy9XZWJLaXRU
ZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmNwcApAQCAtMjI5OSw5ICsyMjk5LDkgQEAgdm9pZCBU
ZXN0Q29udHJvbGxlcjo6c2V0U3RhdGlzdGljc05vdGlmeVBhZ2VzV2hlblRlbGVtZXRyeVdhc0Nh
cHR1cmVkKGJvb2wgdmFsdWUKICAgICBXS1Jlc291cmNlTG9hZFN0YXRpc3RpY3NNYW5hZ2VyU2V0
Tm90aWZ5UGFnZXNXaGVuVGVsZW1ldHJ5V2FzQ2FwdHVyZWQodmFsdWUpOwogfQogICAgIAotdm9p
ZCBUZXN0Q29udHJvbGxlcjo6c2V0U3RhdGlzdGljc01pbmltdW1UaW1lQmV0d2VlZW5EYXRhUmVj
b3Jkc1JlbW92YWwoZG91YmxlIHNlY29uZHMpCit2b2lkIFRlc3RDb250cm9sbGVyOjpzZXRTdGF0
aXN0aWNzTWluaW11bVRpbWVCZXR3ZWVuRGF0YVJlY29yZHNSZW1vdmFsKGRvdWJsZSBzZWNvbmRz
KQogewotICAgIFdLUmVzb3VyY2VMb2FkU3RhdGlzdGljc01hbmFnZXJTZXRNaW5pbXVtVGltZUJl
dHdlZWVuRGF0YVJlY29yZHNSZW1vdmFsKHNlY29uZHMpOworICAgIFdLUmVzb3VyY2VMb2FkU3Rh
dGlzdGljc01hbmFnZXJTZXRNaW5pbXVtVGltZUJldHdlZW5EYXRhUmVjb3Jkc1JlbW92YWwoc2Vj
b25kcyk7CiB9CiAKIHZvaWQgVGVzdENvbnRyb2xsZXI6OnNldFN0YXRpc3RpY3NHcmFuZGZhdGhl
cmluZ1RpbWUoZG91YmxlIHNlY29uZHMpCmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVu
bmVyL1Rlc3RDb250cm9sbGVyLmggYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9s
bGVyLmgKaW5kZXggN2VkYzcyNDhhY2ZhNDRkN2ZkYWRjMDc3MGY3NDNmNjIyYTE1ZDc4OC4uNjFi
MTg2YjFjNzZkMDRiY2Q4Yzk0ZDZhNWQ5MWQ2OTJkMmU3YWQ4ZCAxMDA2NDQKLS0tIGEvVG9vbHMv
V2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5oCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RS
dW5uZXIvVGVzdENvbnRyb2xsZXIuaApAQCAtMTY4LDcgKzE2OCw3IEBAIHB1YmxpYzoKICAgICB2
b2lkIHNldFN0YXRpc3RpY3NOb3RpZnlQYWdlc1doZW5EYXRhUmVjb3Jkc1dlcmVTY2FubmVkKGJv
b2wpOwogICAgIHZvaWQgc2V0U3RhdGlzdGljc1Nob3VsZENsYXNzaWZ5UmVzb3VyY2VzQmVmb3Jl
RGF0YVJlY29yZHNSZW1vdmFsKGJvb2wpOwogICAgIHZvaWQgc2V0U3RhdGlzdGljc05vdGlmeVBh
Z2VzV2hlblRlbGVtZXRyeVdhc0NhcHR1cmVkKGJvb2wgdmFsdWUpOwotICAgIHZvaWQgc2V0U3Rh
dGlzdGljc01pbmltdW1UaW1lQmV0d2VlZW5EYXRhUmVjb3Jkc1JlbW92YWwoZG91YmxlKTsKKyAg
ICB2b2lkIHNldFN0YXRpc3RpY3NNaW5pbXVtVGltZUJldHdlZW5EYXRhUmVjb3Jkc1JlbW92YWwo
ZG91YmxlKTsKICAgICB2b2lkIHNldFN0YXRpc3RpY3NHcmFuZGZhdGhlcmluZ1RpbWUoZG91Ymxl
IHNlY29uZHMpOwogICAgIHZvaWQgc3RhdGlzdGljc0NsZWFySW5NZW1vcnlBbmRQZXJzaXN0ZW50
U3RvcmUoKTsKICAgICB2b2lkIHN0YXRpc3RpY3NDbGVhckluTWVtb3J5QW5kUGVyc2lzdGVudFN0
b3JlTW9kaWZpZWRTaW5jZUhvdXJzKHVuc2lnbmVkKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktp
dFRlc3RSdW5uZXIvVGVzdEludm9jYXRpb24uY3BwIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9U
ZXN0SW52b2NhdGlvbi5jcHAKaW5kZXggMzBlZmQ5NWRjMTg4YjA4MjFjYWNjMDY4ZDQyMjdmNjMz
MzA3ZjgxMy4uMTMzNTYyNWM0MDcyYTA3MjE2ZDBkOWI5ZDZlNjM5Y2U3MTcwY2RkZCAxMDA2NDQK
LS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0SW52b2NhdGlvbi5jcHAKKysrIGIvVG9v
bHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0SW52b2NhdGlvbi5jcHAKQEAgLTEwODcsMTAgKzEwODcs
MTAgQEAgV0tSZXRhaW5QdHI8V0tUeXBlUmVmPiBUZXN0SW52b2NhdGlvbjo6ZGlkUmVjZWl2ZVN5
bmNocm9ub3VzTWVzc2FnZUZyb21JbmplY3RlZEIKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAg
ICAgfQogCi0gICAgaWYgKFdLU3RyaW5nSXNFcXVhbFRvVVRGOENTdHJpbmcobWVzc2FnZU5hbWUs
ICJTZXRTdGF0aXN0aWNzTWluaW11bVRpbWVCZXR3ZWVlbkRhdGFSZWNvcmRzUmVtb3ZhbCIpKSB7
CisgICAgaWYgKFdLU3RyaW5nSXNFcXVhbFRvVVRGOENTdHJpbmcobWVzc2FnZU5hbWUsICJTZXRT
dGF0aXN0aWNzTWluaW11bVRpbWVCZXR3ZWVuRGF0YVJlY29yZHNSZW1vdmFsIikpIHsKICAgICAg
ICAgQVNTRVJUKFdLR2V0VHlwZUlEKG1lc3NhZ2VCb2R5KSA9PSBXS0RvdWJsZUdldFR5cGVJRCgp
KTsKICAgICAgICAgV0tEb3VibGVSZWYgc2Vjb25kcyA9IHN0YXRpY19jYXN0PFdLRG91YmxlUmVm
PihtZXNzYWdlQm9keSk7Ci0gICAgICAgIFRlc3RDb250cm9sbGVyOjpzaW5nbGV0b24oKS5zZXRT
dGF0aXN0aWNzTWluaW11bVRpbWVCZXR3ZWVlbkRhdGFSZWNvcmRzUmVtb3ZhbChXS0RvdWJsZUdl
dFZhbHVlKHNlY29uZHMpKTsKKyAgICAgICAgVGVzdENvbnRyb2xsZXI6OnNpbmdsZXRvbigpLnNl
dFN0YXRpc3RpY3NNaW5pbXVtVGltZUJldHdlZW5EYXRhUmVjb3Jkc1JlbW92YWwoV0tEb3VibGVH
ZXRWYWx1ZShzZWNvbmRzKSk7CiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KICAgICAK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCAwZWQ1MThhYTE0Y2ViZDhmY2ZjMGFlZTIwYWU3ZGFjY2VlZjMzNDQ4Li5iNTJkYjg2
OGUyNTFlZTBmMmMyZGQxNDEwNGRhNTY4MzAwMDg0ZGI5IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjAgQEAK
KzIwMTctMDYtMzAgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKworICAgICAgICBN
b3ZlIHN0b3JlIGxvZ2ljIGZyb20gV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc01hbmFnZXIgdG8g
V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzQwMzgKKworICAgICAgICBSZXZpZXdlZCBieSBCcmVu
dCBGdWxnaGFtLgorCisgICAgICAgIEZpeCB0eXBvIGluIHRlc3RSdW5uZXIgQVBJLgorCisgICAg
ICAgICogaHR0cC90ZXN0cy9sb2FkaW5nL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvZ3JhbmRmYXRo
ZXJpbmcuaHRtbDoKKyAgICAgICAgKiBodHRwL3Rlc3RzL2xvYWRpbmcvcmVzb3VyY2VMb2FkU3Rh
dGlzdGljcy9ub24tcHJldmFsZW50LXJlc291cmNlLXdpdGgtdXNlci1pbnRlcmFjdGlvbi5odG1s
OgorICAgICAgICAqIGh0dHAvdGVzdHMvbG9hZGluZy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL25v
bi1wcmV2YWxlbnQtcmVzb3VyY2Utd2l0aG91dC11c2VyLWludGVyYWN0aW9uLmh0bWw6CisgICAg
ICAgICogaHR0cC90ZXN0cy9sb2FkaW5nL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvcGFydGl0aW9u
ZWQtYW5kLXVucGFydGl0aW9uZWQtY29va2llLWRlbGV0aW9uLmh0bWw6CisgICAgICAgICogaHR0
cC90ZXN0cy9sb2FkaW5nL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvcHJldmFsZW50LXJlc291cmNl
LXdpdGgtdXNlci1pbnRlcmFjdGlvbi10aW1lb3V0Lmh0bWw6CisgICAgICAgICogaHR0cC90ZXN0
cy9sb2FkaW5nL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvcHJldmFsZW50LXJlc291cmNlLXdpdGgt
dXNlci1pbnRlcmFjdGlvbi5odG1sOgorICAgICAgICAqIGh0dHAvdGVzdHMvbG9hZGluZy9yZXNv
dXJjZUxvYWRTdGF0aXN0aWNzL3ByZXZhbGVudC1yZXNvdXJjZS13aXRob3V0LXVzZXItaW50ZXJh
Y3Rpb24uaHRtbDoKKwogMjAxNy0wNi0zMCAgUnlvc3VrZSBOaXdhICA8cm5pd2FAd2Via2l0Lm9y
Zz4KIAogICAgICAgICBSRUdSRVNTSU9OKHIyMTQxOTQpOiBTYWZhcmkgbGVhdmVzIGEgcG9wdXAg
d2luZG93IG9wZW4gb3BlbmVkIGR1cmluZyBiZWZvcmUgdW5sb2FkCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9odHRwL3Rlc3RzL2xvYWRpbmcvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy9ncmFuZGZh
dGhlcmluZy5odG1sIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9sb2FkaW5nL3Jlc291cmNlTG9h
ZFN0YXRpc3RpY3MvZ3JhbmRmYXRoZXJpbmcuaHRtbAppbmRleCA5YjY5YmMyMDRmMzhkYzE2MDkx
MjZkZTVjY2FjYmMyNzFiZjk4MDQ1Li4yZGM5MmM4NDllMjAxMzA1NTFlZmIyZTMxY2IzNzQwMWE0
MjU5ZDJkIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2xvYWRpbmcvcmVzb3Vy
Y2VMb2FkU3RhdGlzdGljcy9ncmFuZGZhdGhlcmluZy5odG1sCisrKyBiL0xheW91dFRlc3RzL2h0
dHAvdGVzdHMvbG9hZGluZy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL2dyYW5kZmF0aGVyaW5nLmh0
bWwKQEAgLTEwNiw3ICsxMDYsNyBAQAogICAgICAgICBzZXRFbmFibGVGZWF0dXJlKHRydWUpOwog
CiAgICAgICAgIHRlc3RSdW5uZXIuc2V0U3RhdGlzdGljc1Nob3VsZENsYXNzaWZ5UmVzb3VyY2Vz
QmVmb3JlRGF0YVJlY29yZHNSZW1vdmFsKGZhbHNlKTsKLSAgICAgICAgdGVzdFJ1bm5lci5zZXRT
dGF0aXN0aWNzTWluaW11bVRpbWVCZXR3ZWVlbkRhdGFSZWNvcmRzUmVtb3ZhbCgwKTsKKyAgICAg
ICAgdGVzdFJ1bm5lci5zZXRTdGF0aXN0aWNzTWluaW11bVRpbWVCZXR3ZWVuRGF0YVJlY29yZHNS
ZW1vdmFsKDApOwogCiAgICAgICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOwogICAgICAg
ICB0ZXN0UnVubmVyLmR1bXBDaGlsZEZyYW1lc0FzVGV4dCgpOwpAQCAtMTE2LDQgKzExNiw0IEBA
CiAgICAgcnVuVGVzdCgpOwogPC9zY3JpcHQ+CiA8L2JvZHk+Ci08L2h0bWw+ClwgTm8gbmV3bGlu
ZSBhdCBlbmQgb2YgZmlsZQorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90
ZXN0cy9sb2FkaW5nL3Jlc291cmNlTG9hZFN0YXRpc3RpY3Mvbm9uLXByZXZhbGVudC1yZXNvdXJj
ZS13aXRoLXVzZXItaW50ZXJhY3Rpb24uaHRtbCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvbG9h
ZGluZy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL25vbi1wcmV2YWxlbnQtcmVzb3VyY2Utd2l0aC11
c2VyLWludGVyYWN0aW9uLmh0bWwKaW5kZXggYzEzNGYwMDhhZjljMThmNjQyNjVlYTAwMGZkNDVi
ODFlYTQwMjQ3Ni4uOGFlYzA2NzY0NDI3N2Y3ODEyM2RmMDJlMjQyMjZlZDIyYWEwNWI1NSAxMDA2
NDQKLS0tIGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9sb2FkaW5nL3Jlc291cmNlTG9hZFN0YXRp
c3RpY3Mvbm9uLXByZXZhbGVudC1yZXNvdXJjZS13aXRoLXVzZXItaW50ZXJhY3Rpb24uaHRtbAor
KysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2xvYWRpbmcvcmVzb3VyY2VMb2FkU3RhdGlzdGlj
cy9ub24tcHJldmFsZW50LXJlc291cmNlLXdpdGgtdXNlci1pbnRlcmFjdGlvbi5odG1sCkBAIC00
Miw3ICs0Miw3IEBACiAgICAgICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKICAgICAg
ICAgfSk7CiAgICAgICAgIHRlc3RSdW5uZXIuc2V0U3RhdGlzdGljc1Nob3VsZENsYXNzaWZ5UmVz
b3VyY2VzQmVmb3JlRGF0YVJlY29yZHNSZW1vdmFsKGZhbHNlKTsKLSAgICAgICAgdGVzdFJ1bm5l
ci5zZXRTdGF0aXN0aWNzTWluaW11bVRpbWVCZXR3ZWVlbkRhdGFSZWNvcmRzUmVtb3ZhbCgwKTsK
KyAgICAgICAgdGVzdFJ1bm5lci5zZXRTdGF0aXN0aWNzTWluaW11bVRpbWVCZXR3ZWVuRGF0YVJl
Y29yZHNSZW1vdmFsKDApOwogICAgICAgICB0ZXN0UnVubmVyLnN0YXRpc3RpY3NGaXJlRGF0YU1v
ZGlmaWNhdGlvbkhhbmRsZXIoKTsKICAgICB9CiAKQEAgLTU0LDQgKzU0LDQgQEAKICAgICB9CiA8
L3NjcmlwdD4KIDwvYm9keT4KLTwvaHRtbD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCis8
L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2xvYWRpbmcvcmVzb3Vy
Y2VMb2FkU3RhdGlzdGljcy9ub24tcHJldmFsZW50LXJlc291cmNlLXdpdGhvdXQtdXNlci1pbnRl
cmFjdGlvbi5odG1sIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9sb2FkaW5nL3Jlc291cmNlTG9h
ZFN0YXRpc3RpY3Mvbm9uLXByZXZhbGVudC1yZXNvdXJjZS13aXRob3V0LXVzZXItaW50ZXJhY3Rp
b24uaHRtbAppbmRleCA3MjRkZmQ4MzJlODE1NzM2ZDliMDI0ZTI1MjQ3NWY2YjUyYzY2ZGY1Li5h
OWNmYTJlM2Y0N2Q5OTE2ZTNmNTk2N2Q0NDc5YTQ4ODE4NzU3ZmFhIDEwMDY0NAotLS0gYS9MYXlv
dXRUZXN0cy9odHRwL3Rlc3RzL2xvYWRpbmcvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy9ub24tcHJl
dmFsZW50LXJlc291cmNlLXdpdGhvdXQtdXNlci1pbnRlcmFjdGlvbi5odG1sCisrKyBiL0xheW91
dFRlc3RzL2h0dHAvdGVzdHMvbG9hZGluZy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL25vbi1wcmV2
YWxlbnQtcmVzb3VyY2Utd2l0aG91dC11c2VyLWludGVyYWN0aW9uLmh0bWwKQEAgLTQyLDcgKzQy
LDcgQEAKICAgICAgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOwogICAgICAgICB9KTsK
ICAgICAgICAgdGVzdFJ1bm5lci5zZXRTdGF0aXN0aWNzU2hvdWxkQ2xhc3NpZnlSZXNvdXJjZXNC
ZWZvcmVEYXRhUmVjb3Jkc1JlbW92YWwoZmFsc2UpOwotICAgICAgICB0ZXN0UnVubmVyLnNldFN0
YXRpc3RpY3NNaW5pbXVtVGltZUJldHdlZWVuRGF0YVJlY29yZHNSZW1vdmFsKDApOworICAgICAg
ICB0ZXN0UnVubmVyLnNldFN0YXRpc3RpY3NNaW5pbXVtVGltZUJldHdlZW5EYXRhUmVjb3Jkc1Jl
bW92YWwoMCk7CiAgICAgICAgIHRlc3RSdW5uZXIuc3RhdGlzdGljc0ZpcmVEYXRhTW9kaWZpY2F0
aW9uSGFuZGxlcigpOwogICAgIH0KIApAQCAtNTQsNCArNTQsNCBAQAogICAgIH0KIDwvc2NyaXB0
PgogPC9ib2R5PgotPC9odG1sPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKKzwvaHRtbD4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvbG9hZGluZy9yZXNvdXJjZUxvYWRT
dGF0aXN0aWNzL3BhcnRpdGlvbmVkLWFuZC11bnBhcnRpdGlvbmVkLWNvb2tpZS1kZWxldGlvbi5o
dG1sIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9sb2FkaW5nL3Jlc291cmNlTG9hZFN0YXRpc3Rp
Y3MvcGFydGl0aW9uZWQtYW5kLXVucGFydGl0aW9uZWQtY29va2llLWRlbGV0aW9uLmh0bWwKaW5k
ZXggNzk4Y2QwNTlmOWJlNmM1ZTliOTlkMTY4MmRmN2I1ODliMDEyYzVlYi4uNDc4YTRlNDIyOGU4
MWQzZDZiM2IyY2JjYzk3NGY0ZjQ2NGY0ZjYyOCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaHR0
cC90ZXN0cy9sb2FkaW5nL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvcGFydGl0aW9uZWQtYW5kLXVu
cGFydGl0aW9uZWQtY29va2llLWRlbGV0aW9uLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90
ZXN0cy9sb2FkaW5nL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvcGFydGl0aW9uZWQtYW5kLXVucGFy
dGl0aW9uZWQtY29va2llLWRlbGV0aW9uLmh0bWwKQEAgLTkxLDcgKzkxLDcgQEAKICAgICAgICAg
c2V0RW5hYmxlRmVhdHVyZSh0cnVlKTsKIAogICAgICAgICB0ZXN0UnVubmVyLnNldFN0YXRpc3Rp
Y3NTaG91bGRDbGFzc2lmeVJlc291cmNlc0JlZm9yZURhdGFSZWNvcmRzUmVtb3ZhbChmYWxzZSk7
Ci0gICAgICAgIHRlc3RSdW5uZXIuc2V0U3RhdGlzdGljc01pbmltdW1UaW1lQmV0d2VlZW5EYXRh
UmVjb3Jkc1JlbW92YWwoMCk7CisgICAgICAgIHRlc3RSdW5uZXIuc2V0U3RhdGlzdGljc01pbmlt
dW1UaW1lQmV0d2VlbkRhdGFSZWNvcmRzUmVtb3ZhbCgwKTsKIAogICAgICAgICB0ZXN0UnVubmVy
LnN0YXRpc3RpY3NGaXJlU2hvdWxkUGFydGl0aW9uQ29va2llc0hhbmRsZXJGb3JPbmVEb21haW4o
ImxvY2FsaG9zdCIsIHRydWUpOwogICAgICAgICB0ZXN0UnVubmVyLnNldFN0YXRpc3RpY3NQcmV2
YWxlbnRSZXNvdXJjZSgiaHR0cDovL2xvY2FsaG9zdCIsIHRydWUpOwpAQCAtMTA2LDQgKzEwNiw0
IEBACiAgICAgcnVuVGVzdCgpOwogPC9zY3JpcHQ+CiA8L2JvZHk+Ci08L2h0bWw+ClwgTm8gbmV3
bGluZSBhdCBlbmQgb2YgZmlsZQorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0
cC90ZXN0cy9sb2FkaW5nL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvcHJldmFsZW50LXJlc291cmNl
LXdpdGgtdXNlci1pbnRlcmFjdGlvbi10aW1lb3V0Lmh0bWwgYi9MYXlvdXRUZXN0cy9odHRwL3Rl
c3RzL2xvYWRpbmcvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy9wcmV2YWxlbnQtcmVzb3VyY2Utd2l0
aC11c2VyLWludGVyYWN0aW9uLXRpbWVvdXQuaHRtbAppbmRleCBlMTBlZjUyYTM4OGMwN2MwM2Rk
MmE0MGU4NzQ2YzhkMGU0ZmQ3MGYzLi5lZDcwMTVkYjUxNDQ2NmQwOWQxOTE5MWFmNjkzNjE0N2Vl
OGRlNTAyIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2xvYWRpbmcvcmVzb3Vy
Y2VMb2FkU3RhdGlzdGljcy9wcmV2YWxlbnQtcmVzb3VyY2Utd2l0aC11c2VyLWludGVyYWN0aW9u
LXRpbWVvdXQuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2xvYWRpbmcvcmVzb3Vy
Y2VMb2FkU3RhdGlzdGljcy9wcmV2YWxlbnQtcmVzb3VyY2Utd2l0aC11c2VyLWludGVyYWN0aW9u
LXRpbWVvdXQuaHRtbApAQCAtMzUsNyArMzUsNyBAQAogICAgICAgICAgICAgdGVzdFJ1bm5lci5u
b3RpZnlEb25lKCk7CiAgICAgICAgIH0pOwogICAgICAgICB0ZXN0UnVubmVyLnNldFN0YXRpc3Rp
Y3NTaG91bGRDbGFzc2lmeVJlc291cmNlc0JlZm9yZURhdGFSZWNvcmRzUmVtb3ZhbChmYWxzZSk7
Ci0gICAgICAgIHRlc3RSdW5uZXIuc2V0U3RhdGlzdGljc01pbmltdW1UaW1lQmV0d2VlZW5EYXRh
UmVjb3Jkc1JlbW92YWwoMCk7CisgICAgICAgIHRlc3RSdW5uZXIuc2V0U3RhdGlzdGljc01pbmlt
dW1UaW1lQmV0d2VlbkRhdGFSZWNvcmRzUmVtb3ZhbCgwKTsKICAgICAgICAgdGVzdFJ1bm5lci5z
ZXRTdGF0aXN0aWNzVGltZVRvTGl2ZVVzZXJJbnRlcmFjdGlvbigwKTsKICAgICAgICAgc2V0VGlt
ZW91dCgidGVzdFJ1bm5lci5zdGF0aXN0aWNzRmlyZURhdGFNb2RpZmljYXRpb25IYW5kbGVyKCki
LCAxMDAwKTsKICAgICB9CkBAIC00OCw0ICs0OCw0IEBACiAgICAgfQogPC9zY3JpcHQ+CiA8L2Jv
ZHk+Ci08L2h0bWw+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQorPC9odG1sPgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9sb2FkaW5nL3Jlc291cmNlTG9hZFN0YXRpc3Rp
Y3MvcHJldmFsZW50LXJlc291cmNlLXdpdGgtdXNlci1pbnRlcmFjdGlvbi5odG1sIGIvTGF5b3V0
VGVzdHMvaHR0cC90ZXN0cy9sb2FkaW5nL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvcHJldmFsZW50
LXJlc291cmNlLXdpdGgtdXNlci1pbnRlcmFjdGlvbi5odG1sCmluZGV4IGQxYTY0ZmNmZjRiZWQw
ODc2ZjJkZDA5NzkzNjkyODA2NjFmYjY0MDQuLjA0YzQ2MDFjOWQ5ZDAxMGFjZmZiODJiZTRlZDJh
OGY4OTM1YTU4YTcgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvbG9hZGluZy9y
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzL3ByZXZhbGVudC1yZXNvdXJjZS13aXRoLXVzZXItaW50ZXJh
Y3Rpb24uaHRtbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2xvYWRpbmcvcmVzb3VyY2VM
b2FkU3RhdGlzdGljcy9wcmV2YWxlbnQtcmVzb3VyY2Utd2l0aC11c2VyLWludGVyYWN0aW9uLmh0
bWwKQEAgLTQyLDcgKzQyLDcgQEAKICAgICAgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgp
OwogICAgICAgICB9KTsKICAgICAgICAgdGVzdFJ1bm5lci5zZXRTdGF0aXN0aWNzU2hvdWxkQ2xh
c3NpZnlSZXNvdXJjZXNCZWZvcmVEYXRhUmVjb3Jkc1JlbW92YWwoZmFsc2UpOwotICAgICAgICB0
ZXN0UnVubmVyLnNldFN0YXRpc3RpY3NNaW5pbXVtVGltZUJldHdlZWVuRGF0YVJlY29yZHNSZW1v
dmFsKDApOworICAgICAgICB0ZXN0UnVubmVyLnNldFN0YXRpc3RpY3NNaW5pbXVtVGltZUJldHdl
ZW5EYXRhUmVjb3Jkc1JlbW92YWwoMCk7CiAgICAgICAgIHRlc3RSdW5uZXIuc3RhdGlzdGljc0Zp
cmVEYXRhTW9kaWZpY2F0aW9uSGFuZGxlcigpOwogICAgIH0KIApAQCAtNTQsNCArNTQsNCBAQAog
ICAgIH0KIDwvc2NyaXB0PgogPC9ib2R5PgotPC9odG1sPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9m
IGZpbGUKKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvbG9hZGlu
Zy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL3ByZXZhbGVudC1yZXNvdXJjZS13aXRob3V0LXVzZXIt
aW50ZXJhY3Rpb24uaHRtbCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvbG9hZGluZy9yZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzL3ByZXZhbGVudC1yZXNvdXJjZS13aXRob3V0LXVzZXItaW50ZXJhY3Rp
b24uaHRtbAppbmRleCAwODQwM2VkNWNlMTZjMjYwZWJjYTUyOGUxMGIzMjg2ZjI3MjU5ZTE5Li4x
MWZhY2E0ZjIyN2I4NTM4ZWNiZjhkMDRhNDg4M2FiZjQxNmNlMDUzIDEwMDY0NAotLS0gYS9MYXlv
dXRUZXN0cy9odHRwL3Rlc3RzL2xvYWRpbmcvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy9wcmV2YWxl
bnQtcmVzb3VyY2Utd2l0aG91dC11c2VyLWludGVyYWN0aW9uLmh0bWwKKysrIGIvTGF5b3V0VGVz
dHMvaHR0cC90ZXN0cy9sb2FkaW5nL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvcHJldmFsZW50LXJl
c291cmNlLXdpdGhvdXQtdXNlci1pbnRlcmFjdGlvbi5odG1sCkBAIC0zNSw3ICszNSw3IEBACiAg
ICAgICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKICAgICAgICAgfSk7CiAgICAgICAg
IHRlc3RSdW5uZXIuc2V0U3RhdGlzdGljc1Nob3VsZENsYXNzaWZ5UmVzb3VyY2VzQmVmb3JlRGF0
YVJlY29yZHNSZW1vdmFsKGZhbHNlKTsKLSAgICAgICAgdGVzdFJ1bm5lci5zZXRTdGF0aXN0aWNz
TWluaW11bVRpbWVCZXR3ZWVlbkRhdGFSZWNvcmRzUmVtb3ZhbCgwKTsKKyAgICAgICAgdGVzdFJ1
bm5lci5zZXRTdGF0aXN0aWNzTWluaW11bVRpbWVCZXR3ZWVuRGF0YVJlY29yZHNSZW1vdmFsKDAp
OwogICAgICAgICB0ZXN0UnVubmVyLnN0YXRpc3RpY3NGaXJlRGF0YU1vZGlmaWNhdGlvbkhhbmRs
ZXIoKTsKICAgICB9CiAKQEAgLTQ3LDQgKzQ3LDQgQEAKICAgICB9CiA8L3NjcmlwdD4KIDwvYm9k
eT4KLTwvaHRtbD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCis8L2h0bWw+Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>